diff --git a/application/.htaccess b/application/.htaccess deleted file mode 100644 index 14249c50..00000000 --- a/application/.htaccess +++ /dev/null @@ -1 +0,0 @@ -Deny from all \ No newline at end of file diff --git a/application/cache/.htaccess b/application/cache/.htaccess deleted file mode 100644 index 14249c50..00000000 --- a/application/cache/.htaccess +++ /dev/null @@ -1 +0,0 @@ -Deny from all \ No newline at end of file diff --git a/application/cache/index.html b/application/cache/index.html deleted file mode 100644 index c942a79c..00000000 --- a/application/cache/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - 403 Forbidden - - - -

Directory access is forbidden.

- - - \ No newline at end of file diff --git a/application/config/autoload.php b/application/config/autoload.php deleted file mode 100644 index e6c5a553..00000000 --- a/application/config/autoload.php +++ /dev/null @@ -1,116 +0,0 @@ - '', - 'xhtml1-strict' => '', - 'xhtml1-trans' => '', - 'xhtml1-frame' => '', - 'html5' => '', - 'html4-strict' => '', - 'html4-trans' => '', - 'html4-frame' => '' - ); - -/* End of file doctypes.php */ -/* Location: ./application/config/doctypes.php */ \ No newline at end of file diff --git a/application/config/foreign_chars.php b/application/config/foreign_chars.php deleted file mode 100644 index 14b0d737..00000000 --- a/application/config/foreign_chars.php +++ /dev/null @@ -1,64 +0,0 @@ - 'ae', - '/ö|œ/' => 'oe', - '/ü/' => 'ue', - '/Ä/' => 'Ae', - '/Ü/' => 'Ue', - '/Ö/' => 'Oe', - '/À|Á|Â|Ã|Ä|Å|Ǻ|Ā|Ă|Ą|Ǎ/' => 'A', - '/à|á|â|ã|å|ǻ|ā|ă|ą|ǎ|ª/' => 'a', - '/Ç|Ć|Ĉ|Ċ|Č/' => 'C', - '/ç|ć|ĉ|ċ|č/' => 'c', - '/Ð|Ď|Đ/' => 'D', - '/ð|ď|đ/' => 'd', - '/È|É|Ê|Ë|Ē|Ĕ|Ė|Ę|Ě/' => 'E', - '/è|é|ê|ë|ē|ĕ|ė|ę|ě/' => 'e', - '/Ĝ|Ğ|Ġ|Ģ/' => 'G', - '/ĝ|ğ|ġ|ģ/' => 'g', - '/Ĥ|Ħ/' => 'H', - '/ĥ|ħ/' => 'h', - '/Ì|Í|Î|Ï|Ĩ|Ī|Ĭ|Ǐ|Į|İ/' => 'I', - '/ì|í|î|ï|ĩ|ī|ĭ|ǐ|į|ı/' => 'i', - '/Ĵ/' => 'J', - '/ĵ/' => 'j', - '/Ķ/' => 'K', - '/ķ/' => 'k', - '/Ĺ|Ļ|Ľ|Ŀ|Ł/' => 'L', - '/ĺ|ļ|ľ|ŀ|ł/' => 'l', - '/Ñ|Ń|Ņ|Ň/' => 'N', - '/ñ|ń|ņ|ň|ʼn/' => 'n', - '/Ò|Ó|Ô|Õ|Ō|Ŏ|Ǒ|Ő|Ơ|Ø|Ǿ/' => 'O', - '/ò|ó|ô|õ|ō|ŏ|ǒ|ő|ơ|ø|ǿ|º/' => 'o', - '/Ŕ|Ŗ|Ř/' => 'R', - '/ŕ|ŗ|ř/' => 'r', - '/Ś|Ŝ|Ş|Š/' => 'S', - '/ś|ŝ|ş|š|ſ/' => 's', - '/Ţ|Ť|Ŧ/' => 'T', - '/ţ|ť|ŧ/' => 't', - '/Ù|Ú|Û|Ũ|Ū|Ŭ|Ů|Ű|Ų|Ư|Ǔ|Ǖ|Ǘ|Ǚ|Ǜ/' => 'U', - '/ù|ú|û|ũ|ū|ŭ|ů|ű|ų|ư|ǔ|ǖ|ǘ|ǚ|ǜ/' => 'u', - '/Ý|Ÿ|Ŷ/' => 'Y', - '/ý|ÿ|ŷ/' => 'y', - '/Ŵ/' => 'W', - '/ŵ/' => 'w', - '/Ź|Ż|Ž/' => 'Z', - '/ź|ż|ž/' => 'z', - '/Æ|Ǽ/' => 'AE', - '/ß/'=> 'ss', - '/IJ/' => 'IJ', - '/ij/' => 'ij', - '/Œ/' => 'OE', - '/ƒ/' => 'f' -); - -/* End of file foreign_chars.php */ -/* Location: ./application/config/foreign_chars.php */ \ No newline at end of file diff --git a/application/config/grocery_crud.php b/application/config/grocery_crud.php deleted file mode 100644 index 9a09a4f7..00000000 --- a/application/config/grocery_crud.php +++ /dev/null @@ -1,39 +0,0 @@ - - - 403 Forbidden - - - -

Directory access is forbidden.

- - - \ No newline at end of file diff --git a/application/config/migration.php b/application/config/migration.php deleted file mode 100644 index df42a3ca..00000000 --- a/application/config/migration.php +++ /dev/null @@ -1,41 +0,0 @@ -migration->latest() this is the version that schema will -| be upgraded / downgraded to. -| -*/ -$config['migration_version'] = 0; - - -/* -|-------------------------------------------------------------------------- -| Migrations Path -|-------------------------------------------------------------------------- -| -| Path to your migrations folder. -| Typically, it will be within your application path. -| Also, writing permission is required within the migrations path. -| -*/ -$config['migration_path'] = APPPATH . 'migrations/'; - - -/* End of file migration.php */ -/* Location: ./application/config/migration.php */ \ No newline at end of file diff --git a/application/config/mimes.php b/application/config/mimes.php deleted file mode 100644 index 100f7d44..00000000 --- a/application/config/mimes.php +++ /dev/null @@ -1,106 +0,0 @@ - 'application/mac-binhex40', - 'cpt' => 'application/mac-compactpro', - 'csv' => array('text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'application/x-csv', 'text/x-csv', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel'), - 'bin' => 'application/macbinary', - 'dms' => 'application/octet-stream', - 'lha' => 'application/octet-stream', - 'lzh' => 'application/octet-stream', - 'exe' => array('application/octet-stream', 'application/x-msdownload'), - 'class' => 'application/octet-stream', - 'psd' => 'application/x-photoshop', - 'so' => 'application/octet-stream', - 'sea' => 'application/octet-stream', - 'dll' => 'application/octet-stream', - 'oda' => 'application/oda', - 'pdf' => array('application/pdf', 'application/x-download'), - 'ai' => 'application/postscript', - 'eps' => 'application/postscript', - 'ps' => 'application/postscript', - 'smi' => 'application/smil', - 'smil' => 'application/smil', - 'mif' => 'application/vnd.mif', - 'xls' => array('application/excel', 'application/vnd.ms-excel', 'application/msexcel'), - 'ppt' => array('application/powerpoint', 'application/vnd.ms-powerpoint'), - 'wbxml' => 'application/wbxml', - 'wmlc' => 'application/wmlc', - 'dcr' => 'application/x-director', - 'dir' => 'application/x-director', - 'dxr' => 'application/x-director', - 'dvi' => 'application/x-dvi', - 'gtar' => 'application/x-gtar', - 'gz' => 'application/x-gzip', - 'php' => 'application/x-httpd-php', - 'php4' => 'application/x-httpd-php', - 'php3' => 'application/x-httpd-php', - 'phtml' => 'application/x-httpd-php', - 'phps' => 'application/x-httpd-php-source', - 'js' => 'application/x-javascript', - 'swf' => 'application/x-shockwave-flash', - 'sit' => 'application/x-stuffit', - 'tar' => 'application/x-tar', - 'tgz' => array('application/x-tar', 'application/x-gzip-compressed'), - 'xhtml' => 'application/xhtml+xml', - 'xht' => 'application/xhtml+xml', - 'zip' => array('application/x-zip', 'application/zip', 'application/x-zip-compressed'), - 'mid' => 'audio/midi', - 'midi' => 'audio/midi', - 'mpga' => 'audio/mpeg', - 'mp2' => 'audio/mpeg', - 'mp3' => array('audio/mpeg', 'audio/mpg', 'audio/mpeg3', 'audio/mp3'), - 'aif' => 'audio/x-aiff', - 'aiff' => 'audio/x-aiff', - 'aifc' => 'audio/x-aiff', - 'ram' => 'audio/x-pn-realaudio', - 'rm' => 'audio/x-pn-realaudio', - 'rpm' => 'audio/x-pn-realaudio-plugin', - 'ra' => 'audio/x-realaudio', - 'rv' => 'video/vnd.rn-realvideo', - 'wav' => array('audio/x-wav', 'audio/wave', 'audio/wav'), - 'bmp' => array('image/bmp', 'image/x-windows-bmp'), - 'gif' => 'image/gif', - 'jpeg' => array('image/jpeg', 'image/pjpeg'), - 'jpg' => array('image/jpeg', 'image/pjpeg'), - 'jpe' => array('image/jpeg', 'image/pjpeg'), - 'png' => array('image/png', 'image/x-png'), - 'tiff' => 'image/tiff', - 'tif' => 'image/tiff', - 'css' => 'text/css', - 'html' => 'text/html', - 'htm' => 'text/html', - 'shtml' => 'text/html', - 'txt' => 'text/plain', - 'text' => 'text/plain', - 'log' => array('text/plain', 'text/x-log'), - 'rtx' => 'text/richtext', - 'rtf' => 'text/rtf', - 'xml' => 'text/xml', - 'xsl' => 'text/xml', - 'mpeg' => 'video/mpeg', - 'mpg' => 'video/mpeg', - 'mpe' => 'video/mpeg', - 'qt' => 'video/quicktime', - 'mov' => 'video/quicktime', - 'avi' => 'video/x-msvideo', - 'movie' => 'video/x-sgi-movie', - 'doc' => 'application/msword', - 'docx' => array('application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/zip'), - 'xlsx' => array('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/zip'), - 'word' => array('application/msword', 'application/octet-stream'), - 'xl' => 'application/excel', - 'eml' => 'message/rfc822', - 'json' => array('application/json', 'text/json') - ); - - -/* End of file mimes.php */ -/* Location: ./application/config/mimes.php */ diff --git a/application/config/profiler.php b/application/config/profiler.php deleted file mode 100644 index f8a5b1a1..00000000 --- a/application/config/profiler.php +++ /dev/null @@ -1,17 +0,0 @@ - - -$route['userListing'] = 'user/userListing'; -$route['userListing/(:num)'] = "user/userListing/$1"; -//$route['purchaseorderListing'] = 'purchaseorder/purchaseorderListing'; -//$route['purchaseorderListing/(:num)'] = "purchaseorder/purchaseorderListing/$1"; -$route['supplierListing'] = 'supplier/supplierListing'; -$route['supplierListing/(:num)'] = "supplier/supplierListing/$1"; - -$route['rawmaterialListing'] = 'rawmaterialdetails/rawmaterialListing'; -$route['rawmaterialListing/(:num)'] = "rawmaterialdetails/rawmaterialListing/$1"; - -$route['costListing'] = 'CostCenter/costListing'; -$route['costListing/(:num)'] = "CostCenter/costListing/$1"; - -$route['assetListing'] = 'assetdetails/assetListing'; -$route['assetListing/(:num)'] = "assetdetails/assetListing/$1"; - -$route['employeeListing'] = 'employeedetails/employeeListing'; -$route['employeeListing/(:num)'] = "employeedetails/employeeListing/$1"; - -$route['monthlyListings'] = 'monthlypay/monthlyListing'; -$route['monthlyListings/(:num)'] = "monthlypay/monthlyListing/$1"; - -$route['emppayListings'] = 'emppaydate/emppayListing'; -$route['emppayListings/(:num)'] = 'emppaydate/emppayListing/$1'; - - - - - -//<-----------Application Add Routes------------> -$route['addNew'] = "user/addNew"; -$route['addNewUser'] = "user/addNewUser"; - -$route['addPO'] = "purchaseorder/addPO"; -$route['addNewPO'] = "purchaseorder/addNewPO"; - -$route['addsupplier'] = "supplier/addsupplier"; -$route['addNewsupplier'] = "supplier/addNewsupplier"; - -$route['addcost'] = "CostCenter/addCost"; -$route['addNewcost'] = "CostCenter/addNewCost"; - -$route['addasset'] = "assetdetails/addasset"; -$route['addNewasset'] = "assetdetails/addNewasset"; - -$route['addemployee'] = "employeedetails/addemployee"; -$route['addNewemployee'] = "employeedetils/addNewemployee"; - -$route['addRawmaterial'] = "rawmaterialdetails/addRawMaterial"; -$route['addNewRawmaterial'] = "rawmaterialdetails/addNewRawMaterial"; - -//<-----------Application Edit Routes------------> - -$route['editOld'] = "user/editOld"; -$route['editOld/(:num)'] = "user/editOld/$1"; -$route['editUser'] = "user/editUser"; -$route['editOldPO'] = "purchaseorder/editOldPO"; -$route['editOldPO/(:num)'] = "purchaseorder/editOldPO/$1"; -//$route['editPO'] = "purchaseorder/editPO"; -$route['editOldsupplier'] = "supplier/editOldsupplier"; -$route['editOldsupplier/(:num)'] = "supplier/editOldsupplier/$1"; -$route['editsupplier'] = "supplier/editsupplier"; - -$route['editOldcost'] = "CostCenter/editOldcost"; -$route['editOldcost/(:num)'] = "CostCenter/editOldcost/$1"; -$route['editcost'] = "CostCenter/editcost"; - -$route['editOldasset'] = "assetdetails/editOldasset"; -$route['editOldasset/(:num)'] = "assetdetails/editOldasset/$1"; -$route['editasset'] = "assetdetails/editasset"; - -$route['editOldemployee'] = "employeedetails/editOldemployee"; -$route['editOldemployee/(:num)'] = "employeedetails/editOldemployee/$1"; -$route['editemployee'] = "employeedetils/editemployee"; - -$route['editOldRawmaterial/(:num)'] = "rawmaterialdetails/editOldRawmaterial/$1"; -$route['editOldRawmaterial'] = "rawmaterialdetails/editOldRawmaterial"; -$route['editrawmaterial'] = "rawmaterialdetails/editemployee"; - -//<-----------Application Delete Routes------------> - -$route['deleteUser'] = "user/deleteUser"; -$route['deletecost'] = "CostCenter/deletecost"; - - -//<-----------Application User Change Password Routes------------> -$route['loadChangePass'] = "user/loadChangePass"; -$route['changePassword'] = "user/changePassword"; - - -//<-----------Application Page Not Found Routes------------> -$route['pageNotFound'] = "user/pageNotFound"; - -//<-----------Application Email & ForgetPassword Routes------------> - -$route['checkEmailExists'] = "user/checkEmailExists"; - -$route['forgotPassword'] = "login/forgotPassword"; -$route['ExcelUpload'] = "payslip/viewUpload"; -$route['ExcelUpload2'] = "payslip/viewUpload2"; -$route['FileUpload'] = "payslip/uploadExcel"; -$route['FileUpload2'] = "payslip/uploadExcel2"; -$route['PrintPdf'] = "payslip/PrintPdf"; -$route['ViewPay'] = "payslip/viewGenerator"; - - -//<-----------Application Requistion Flow Routes------------> -$route['Requisition'] = "requisitionform/requisitionlisting"; -$route['RequisitionForm'] = "requisitionform/requisition"; -$route['ApproveRequisition'] = "requisitionform/requisitionlistApproval"; -$route['EditRequisition'] = "requisitionform/EditRequistionForm"; -//<-----------PO Flow------------> -$route['CreatePO'] = "purchaseorder/requisition"; -$route['PurchaseOrder'] = "purchaseorder/CreatePurchaseOrder"; -$route['purchaseorderListing'] = "purchaseorder/PurchaseOrderList"; -$route['EditPO'] = "purchaseorder/EditPurchaseOrder"; -$route['EmergencyPO'] = "emergencypurchaseorder/CreateEmergencyPO"; - - -//<-------------IGR page-----------------> -$route['Addigr'] = "inwardgateregister/addinwardgateregister"; -$route['Viewigr'] = "inwardgateregister/viewinwardgateregister"; - -/* End of file routes.php */ -/* Location: ./application/config/routes.php */ diff --git a/application/config/smileys.php b/application/config/smileys.php deleted file mode 100644 index 25d28b2c..00000000 --- a/application/config/smileys.php +++ /dev/null @@ -1,66 +0,0 @@ - array('grin.gif', '19', '19', 'grin'), - ':lol:' => array('lol.gif', '19', '19', 'LOL'), - ':cheese:' => array('cheese.gif', '19', '19', 'cheese'), - ':)' => array('smile.gif', '19', '19', 'smile'), - ';-)' => array('wink.gif', '19', '19', 'wink'), - ';)' => array('wink.gif', '19', '19', 'wink'), - ':smirk:' => array('smirk.gif', '19', '19', 'smirk'), - ':roll:' => array('rolleyes.gif', '19', '19', 'rolleyes'), - ':-S' => array('confused.gif', '19', '19', 'confused'), - ':wow:' => array('surprise.gif', '19', '19', 'surprised'), - ':bug:' => array('bigsurprise.gif', '19', '19', 'big surprise'), - ':-P' => array('tongue_laugh.gif', '19', '19', 'tongue laugh'), - '%-P' => array('tongue_rolleye.gif', '19', '19', 'tongue rolleye'), - ';-P' => array('tongue_wink.gif', '19', '19', 'tongue wink'), - ':P' => array('raspberry.gif', '19', '19', 'raspberry'), - ':blank:' => array('blank.gif', '19', '19', 'blank stare'), - ':long:' => array('longface.gif', '19', '19', 'long face'), - ':ohh:' => array('ohh.gif', '19', '19', 'ohh'), - ':grrr:' => array('grrr.gif', '19', '19', 'grrr'), - ':gulp:' => array('gulp.gif', '19', '19', 'gulp'), - '8-/' => array('ohoh.gif', '19', '19', 'oh oh'), - ':down:' => array('downer.gif', '19', '19', 'downer'), - ':red:' => array('embarrassed.gif', '19', '19', 'red face'), - ':sick:' => array('sick.gif', '19', '19', 'sick'), - ':shut:' => array('shuteye.gif', '19', '19', 'shut eye'), - ':-/' => array('hmm.gif', '19', '19', 'hmmm'), - '>:(' => array('mad.gif', '19', '19', 'mad'), - ':mad:' => array('mad.gif', '19', '19', 'mad'), - '>:-(' => array('angry.gif', '19', '19', 'angry'), - ':angry:' => array('angry.gif', '19', '19', 'angry'), - ':zip:' => array('zip.gif', '19', '19', 'zipper'), - ':kiss:' => array('kiss.gif', '19', '19', 'kiss'), - ':ahhh:' => array('shock.gif', '19', '19', 'shock'), - ':coolsmile:' => array('shade_smile.gif', '19', '19', 'cool smile'), - ':coolsmirk:' => array('shade_smirk.gif', '19', '19', 'cool smirk'), - ':coolgrin:' => array('shade_grin.gif', '19', '19', 'cool grin'), - ':coolhmm:' => array('shade_hmm.gif', '19', '19', 'cool hmm'), - ':coolmad:' => array('shade_mad.gif', '19', '19', 'cool mad'), - ':coolcheese:' => array('shade_cheese.gif', '19', '19', 'cool cheese'), - ':vampire:' => array('vampire.gif', '19', '19', 'vampire'), - ':snake:' => array('snake.gif', '19', '19', 'snake'), - ':exclaim:' => array('exclaim.gif', '19', '19', 'excaim'), - ':question:' => array('question.gif', '19', '19', 'question') // no comma after last item - - ); - -/* End of file smileys.php */ -/* Location: ./application/config/smileys.php */ \ No newline at end of file diff --git a/application/config/user_agents.php b/application/config/user_agents.php deleted file mode 100644 index e2d3c3af..00000000 --- a/application/config/user_agents.php +++ /dev/null @@ -1,178 +0,0 @@ - 'Windows Longhorn', - 'windows nt 5.2' => 'Windows 2003', - 'windows nt 5.0' => 'Windows 2000', - 'windows nt 5.1' => 'Windows XP', - 'windows nt 4.0' => 'Windows NT 4.0', - 'winnt4.0' => 'Windows NT 4.0', - 'winnt 4.0' => 'Windows NT', - 'winnt' => 'Windows NT', - 'windows 98' => 'Windows 98', - 'win98' => 'Windows 98', - 'windows 95' => 'Windows 95', - 'win95' => 'Windows 95', - 'windows' => 'Unknown Windows OS', - 'os x' => 'Mac OS X', - 'ppc mac' => 'Power PC Mac', - 'freebsd' => 'FreeBSD', - 'ppc' => 'Macintosh', - 'linux' => 'Linux', - 'debian' => 'Debian', - 'sunos' => 'Sun Solaris', - 'beos' => 'BeOS', - 'apachebench' => 'ApacheBench', - 'aix' => 'AIX', - 'irix' => 'Irix', - 'osf' => 'DEC OSF', - 'hp-ux' => 'HP-UX', - 'netbsd' => 'NetBSD', - 'bsdi' => 'BSDi', - 'openbsd' => 'OpenBSD', - 'gnu' => 'GNU/Linux', - 'unix' => 'Unknown Unix OS' - ); - - -// The order of this array should NOT be changed. Many browsers return -// multiple browser types so we want to identify the sub-type first. -$browsers = array( - 'Flock' => 'Flock', - 'Chrome' => 'Chrome', - 'Opera' => 'Opera', - 'MSIE' => 'Internet Explorer', - 'Internet Explorer' => 'Internet Explorer', - 'Shiira' => 'Shiira', - 'Firefox' => 'Firefox', - 'Chimera' => 'Chimera', - 'Phoenix' => 'Phoenix', - 'Firebird' => 'Firebird', - 'Camino' => 'Camino', - 'Netscape' => 'Netscape', - 'OmniWeb' => 'OmniWeb', - 'Safari' => 'Safari', - 'Mozilla' => 'Mozilla', - 'Konqueror' => 'Konqueror', - 'icab' => 'iCab', - 'Lynx' => 'Lynx', - 'Links' => 'Links', - 'hotjava' => 'HotJava', - 'amaya' => 'Amaya', - 'IBrowse' => 'IBrowse' - ); - -$mobiles = array( - // legacy array, old values commented out - 'mobileexplorer' => 'Mobile Explorer', -// 'openwave' => 'Open Wave', -// 'opera mini' => 'Opera Mini', -// 'operamini' => 'Opera Mini', -// 'elaine' => 'Palm', - 'palmsource' => 'Palm', -// 'digital paths' => 'Palm', -// 'avantgo' => 'Avantgo', -// 'xiino' => 'Xiino', - 'palmscape' => 'Palmscape', -// 'nokia' => 'Nokia', -// 'ericsson' => 'Ericsson', -// 'blackberry' => 'BlackBerry', -// 'motorola' => 'Motorola' - - // Phones and Manufacturers - 'motorola' => "Motorola", - 'nokia' => "Nokia", - 'palm' => "Palm", - 'iphone' => "Apple iPhone", - 'ipad' => "iPad", - 'ipod' => "Apple iPod Touch", - 'sony' => "Sony Ericsson", - 'ericsson' => "Sony Ericsson", - 'blackberry' => "BlackBerry", - 'cocoon' => "O2 Cocoon", - 'blazer' => "Treo", - 'lg' => "LG", - 'amoi' => "Amoi", - 'xda' => "XDA", - 'mda' => "MDA", - 'vario' => "Vario", - 'htc' => "HTC", - 'samsung' => "Samsung", - 'sharp' => "Sharp", - 'sie-' => "Siemens", - 'alcatel' => "Alcatel", - 'benq' => "BenQ", - 'ipaq' => "HP iPaq", - 'mot-' => "Motorola", - 'playstation portable' => "PlayStation Portable", - 'hiptop' => "Danger Hiptop", - 'nec-' => "NEC", - 'panasonic' => "Panasonic", - 'philips' => "Philips", - 'sagem' => "Sagem", - 'sanyo' => "Sanyo", - 'spv' => "SPV", - 'zte' => "ZTE", - 'sendo' => "Sendo", - - // Operating Systems - 'symbian' => "Symbian", - 'SymbianOS' => "SymbianOS", - 'elaine' => "Palm", - 'palm' => "Palm", - 'series60' => "Symbian S60", - 'windows ce' => "Windows CE", - - // Browsers - 'obigo' => "Obigo", - 'netfront' => "Netfront Browser", - 'openwave' => "Openwave Browser", - 'mobilexplorer' => "Mobile Explorer", - 'operamini' => "Opera Mini", - 'opera mini' => "Opera Mini", - - // Other - 'digital paths' => "Digital Paths", - 'avantgo' => "AvantGo", - 'xiino' => "Xiino", - 'novarra' => "Novarra Transcoder", - 'vodafone' => "Vodafone", - 'docomo' => "NTT DoCoMo", - 'o2' => "O2", - - // Fallback - 'mobile' => "Generic Mobile", - 'wireless' => "Generic Mobile", - 'j2me' => "Generic Mobile", - 'midp' => "Generic Mobile", - 'cldc' => "Generic Mobile", - 'up.link' => "Generic Mobile", - 'up.browser' => "Generic Mobile", - 'smartphone' => "Generic Mobile", - 'cellphone' => "Generic Mobile" - ); - -// There are hundreds of bots but these are the most common. -$robots = array( - 'googlebot' => 'Googlebot', - 'msnbot' => 'MSNBot', - 'slurp' => 'Inktomi Slurp', - 'yahoo' => 'Yahoo', - 'askjeeves' => 'AskJeeves', - 'fastcrawler' => 'FastCrawler', - 'infoseek' => 'InfoSeek Robot 1.0', - 'lycos' => 'Lycos' - ); - -/* End of file user_agents.php */ -/* Location: ./application/config/user_agents.php */ \ No newline at end of file diff --git a/application/controllers/Controller.php b/application/controllers/Controller.php deleted file mode 100644 index 0dc76a12..00000000 --- a/application/controllers/Controller.php +++ /dev/null @@ -1,266 +0,0 @@ -load->database(); - $this->load->helper('url'); - - $this->load->library('grocery_CRUD'); - - - - } - - /* This function used to show the main page of the screen */ - public function _controller_output($output = null) - { - $this->load->view('AssetDetails',(array)$output); - - } - - public function home($ouput =null) - { - - $this->config->load('grocery_crud'); - $crud = new grocery_CRUD(); - - - $crud->set_table('T_PurchaseOrderDetails'); - $crud->required_fields('PONO'); - $crud->columns('PONO','POType','PODate','SpecialOrder','UserID'); - - $crud->unset_add(); - $crud->unset_read(); - $crud->unset_edit(); - $crud->unset_delete(); - $crud->unset_export(); - $crud->unset_print(); - - $output = $crud->render(); - - - $this->_controller_output($output); - - } - - public function offices() - { - $output = $this->grocery_crud->render(); - - $this->_controller_output($output); - } - - public function index() - { - - $this->_controller_output((object)array('output' => '' , 'js_files' => array() , 'css_files' => array())); - } - - - public function purchase_order() - { - try{ - $crud = new grocery_CRUD(); - - - $crud->set_table('T_PurchaseOrderDetails'); - $crud->set_subject('Purchase Order'); - $crud->required_fields('PONO'); - $crud->columns('PONO','POType','PODate','SpecialOrder','UserID', 'RequesterEmail','RequesterPh','RequestedDate','BudgetManager','BudgetManagerDepartment','PurchasingCategory','PurchasingJustification','OrderValue','DiscountType','DiscountValue','PackagingType','PackagingValue','ExciseDuty','Vat','Freight','CreatedOn','Create_By'); - /* These functions to hide add , view(read) ,edit , delete in form */ - $crud->unset_add(); - $crud->unset_read(); - $crud->unset_edit(); - $crud->unset_delete(); - $crud->unset_export(); - $crud->unset_print(); - - $output = $crud->render(); - - if($crud->getState() != 'list') { - $this->_controller_output($output); - } else { - return $output; - } - - - }catch(Exception $e){ - show_error($e->getMessage().' --- '.$e->getTraceAsString()); - } - } - public function purchase_order2() - { - try{ - $crud = new grocery_CRUD(); - - - $crud->set_table('T_PurchaseOrderDetails'); - $crud->set_subject('Purchase Order'); - $crud->required_fields('PONO'); - $crud->columns('PONO','POType','PODate','SpecialOrder','UserID', 'RequesterEmail','RequesterPh','RequestedDate','BudgetManager','BudgetManagerDepartment','PurchasingCategory','PurchasingJustification','OrderValue','DiscountType','DiscountValue','PackagingType','PackagingValue','ExciseDuty','Vat','Freight','CreatedOn','Create_By'); - $output = $crud->render(); - - $this->_controller_output($output); - } - catch(Exception $e){ - show_error($e->getMessage().' --- '.$e->getTraceAsString()); - } - - } - - public function Purchase_Order_Line_Item() - { - try{ - $crud = new grocery_CRUD(); - - - $crud->set_table('T_PurchaseOrderLineItem'); - $crud->set_subject('Purchase Order Line Item'); - $crud->required_fields('POLine'); - $crud->columns('POLineNo','PONO','Material_ID','UOM','Quantity','UnitPrice','ModifiedOn'); - - $output = $crud->render(); - - if($crud->getState() != 'list') { - //$this->_controller_output($output); - $this->load->view('Mainpage.php',(array)$output); - } else { - return $output; - } - }catch(Exception $e){ - show_error($e->getMessage().' --- '.$e->getTraceAsString()); - } - } - - - -public function Supplier_Details() - { - try{ - $crud = new grocery_CRUD(); - - - $crud->set_table('T_SupplierDetails'); - $crud->set_subject('Supplier Details'); - $crud->required_fields('Supplierid'); - $crud->columns('SupplierID','SupplierName','Address','Contactnumber','AlternateContactNumber','EmailAddress','TIN','PAN'); - /* These functions to hide add , view(read) ,edit , delete in form */ - $crud->unset_add(); - $crud->unset_read(); - $crud->unset_edit(); - $crud->unset_delete(); - $crud->unset_export(); - $crud->unset_print(); - - $output = $crud->render(); - - /* if else should be use , if we are using the same function in many screen*/ - if($crud->getState() != 'list') { - $this->_controller_output($output); - } else { - return $output; - } - }catch(Exception $e){ - show_error($e->getMessage().' --- '.$e->getTraceAsString()); - } - } - - public function Supplier_Details2() - { - try{ - $crud = new grocery_CRUD(); - - - $crud->set_table('T_SupplierDetails'); - $crud->set_subject('Supplier Details'); - $crud->required_fields('Supplierid'); - $crud->columns('SupplierID','SupplierName','Address','Contactnumber','AlternateContactNumber','EmailAddress','TIN','PAN'); - - $output = $crud->render(); - - - $this->_controller_output($output); - - }catch(Exception $e){ - show_error($e->getMessage().' --- '.$e->getTraceAsString()); - } - } - public function RawMaterial() - { - try{ - $crud = new grocery_CRUD(); - - - $crud->set_table('T_RawMaterialDetails'); - $crud->set_subject('RawMaterialDetails'); - $crud->required_fields('Metarial_ID'); - $crud->columns('Metarial_ID','Material_Name','Material_Type','SuplierID','Create_date'); - - /* These functions to hide add , view(read) ,edit , delete in form */ - $crud->unset_add(); - $crud->unset_read(); - $crud->unset_edit(); - $crud->unset_delete(); - $crud->unset_export(); - $crud->unset_print(); - - $output = $crud->render(); - - if($crud->getState() != 'list') { - $this->_controller_output($output); - } else { - return $output; - } - }catch(Exception $e){ - show_error($e->getMessage().' --- '.$e->getTraceAsString()); - } - } - public function RawMaterial2() - { - try{ - $crud = new grocery_CRUD(); - - - $crud->set_table('T_RawMaterialDetails'); - $crud->set_subject('RawMaterialDetails'); - $crud->required_fields('Metarial_ID'); - $crud->columns('Metarial_ID','Material_Name','Material_Type','SuplierID','Create_date'); - - $output = $crud->render(); - - $this->_controller_output($output); - - }catch(Exception $e){ - show_error($e->getMessage().' --- '.$e->getTraceAsString()); - } - } - - /* To call AssetDetail details */ - public function AssetDetails() - { - try{ - $crud = new grocery_CRUD(); - - - $crud->set_table('T_AssetDetails'); - $crud->set_subject('AssetDetails'); - $crud->required_fields('Asset_Code'); - $crud->columns('Asset_Code','Asset_Name','Description','Department','Location','AssetOwner','SupplierName','DateOfPurchase','DateOfCommissioning','SupportVendor','SupportFrom','SupportTo','Created_date'); - - $output = $crud->render(); - - $this->_controller_output($output); - // $this->load->view('AssetDetails.php',(array)$output); - - }catch(Exception $e){ - show_error($e->getMessage().' --- '.$e->getTraceAsString()); - } - - } - - -} \ No newline at end of file diff --git a/application/controllers/CostCenter.php b/application/controllers/CostCenter.php deleted file mode 100644 index 10815fc4..00000000 --- a/application/controllers/CostCenter.php +++ /dev/null @@ -1,469 +0,0 @@ -load->model('costcenter_model'); - //$this->load->library('session'); - $this->load->library('form_validation'); - $this->load->library('pagination'); - - $this->isLoggedIn(); - } - /** - * This function used to load the first screen of the user - */ - public function index() - { - $this->global['pageTitle'] = 'Siddharth : Cost'; - - $this->loadViews("costListing", $this->global, NULL , NULL); - } - - /** - * This function is used to load the Cost list - */ - function CostListing() - { - - - $data['userRecords'] = $this->costcenter_model->CostListing(); - - - $this->global['pageTitle'] = 'Siddharth : Cost List'; - - $this->loadViews("costListing", $this->global, $data, NULL); - - } - - /** - * This function is used to load the add new cost Center */ - function addCostCenter() - { - - $data['Department'] = $this->costcenter_model->getDepartment(); - - $data['BudgetType'] = $this->costcenter_model->getConfigValue('C004'); - - $data['Approver'] = $this->costcenter_model->getApproverName(); - - $this->global['pageTitle'] = 'siddharth : Add Cost Center'; - - $this->loadViews("addCostCenter", $this->global,$data, NULL); - - } - - function Dep_SelectedDepartment($selectValue) -{ - //echo 'select_validate method called'; - // 'none' is the first option and the text says something like "-Choose one-" - if(strlen($SelectedDepartment) <= 0 ) - { - $this->form_validation->set_message('Dep_SelectedDepartment', 'Please Select Department.'); - return false; - } - else // user picked something - { - return true; - } -} - - /** - * This function is used to add new Cost to the system - */ - function addNewcost() - { - - - $this->form_validation->set_rules('CostCode','CostCode','trim|required'); - $this->form_validation->set_rules('CostName','CostName','trim|required'); - - if($this->form_validation->run() == FALSE) - { - $this->addCostCenter(); - } - else - { - $CostCode = strtoupper(trim($this->input->post('CostCode'))); - $CostName = strtoupper(trim($this->input->post('CostName'))); - $CreateBy = $this->session->userdata ( 'userId' ); - $SelectedDepartment = $this->input->post('txtSelectedDepartment'); - $ApproverName = $this->input->post('ApprovedBy'); - $comma_separated = explode(':', $SelectedDepartment); - $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); - - $createddt = $dt->format('Y-m-d H:i:s'); - - $CodeExists = $this->costcenter_model->checkCostDetailsExists( $CostCode); - - if(count($CodeExists) == 0) - { - $Cost = array('CostCenterCode'=>$CostCode, 'CostCenterName'=>$CostName,'ApprovedBy'=>$ApproverName,'CreatedBy'=>$CreateBy,'createdDate'=>$createddt); - $this->costcenter_model->addNewcost($Cost); - } - - for ($j = 0; $j < count($comma_separated); $j++) - { - $DeptCode = $comma_separated[$j]; - - $this->costcenter_model->DeleteDepartment( $DeptCode,$CostCode); - - $Dept = array('CostCenterCode'=>$CostCode, 'DEPCode'=>$DeptCode,'CreatedBy'=>$CreateBy,'createdDate'=>$createddt); - $this->costcenter_model->addCostCenterDepartment($Dept); - - } - $RowCount = $this->input->post('txtRowCount'); - - for ($i = 1; $i <= $RowCount; $i++) - { - $BudgetType = $this->input->post('BudgetType'.$i); - $BudgetYear = $this->input->post('BudgetYear'.$i); - $BudgetAmount = $this->input->post('BudgetAmount'.$i); - $Remarks = $this->input->post('Remarks'.$i); - $this->costcenter_model->DeleteBudget( $BudgetType,$BudgetYear,$CostCode); - - $Budget = array('CostCenterCode'=>$CostCode, 'BudgetType'=>$BudgetType,'BudgetYear'=>$BudgetYear,'BudgetAmount'=>$BudgetAmount,'Remarks'=>$Remarks,'CreatedBy'=>$CreateBy,'createdDate'=>$createddt); - $this->costcenter_model->addBudget($Budget); - - } - - Print_r('Successfully Created Cost details'); - - } - - } - /** - * This function is used load user edit information - * @param number $userId : Optional : This is user id - */ - function editOldcost($CostCode = NULL) - { - - if($CostCode == '') - { - $CostCenterID = $_GET['CostCode']; - } - else - { - - $CostCenterID = $CostCode; - } - - $data['CostMaster'] = $this->costcenter_model->GetCostCenterMaster($CostCenterID); - $data['CostDepts'] = $this->costcenter_model->GetCostCenterDepartment($CostCenterID); - $data['CostBudget'] = $this->costcenter_model->GetCostCenterBudget($CostCenterID); - $data['DeptList'] = $this->costcenter_model->GetDepartmentNotinCostCenter($CostCenterID); - $data['BudType'] = $this->costcenter_model->GetBudgetTypeNotinCostCenter($CostCenterID,'C004'); - $data['BudYear'] = $this->costcenter_model->GetBudgetYear($CostCenterID); - //print_r(count($data['BudType'])); - - $this->global['pageTitle'] = 'Siddharth : Edit Cost'; - - $this->loadViews("editOldcost", $this->global, $data,NULL); - - } - - function GetBudgetForYear() - { - //$id = $this->input->post('id'); - $BudYear = $_GET['BudYear']; - $CostCenterID = $_GET['CostCode']; - $result = $this->costcenter_model->GetCostCenterBudgetByYear($CostCenterID, $BudYear); - $BudList = $this->costcenter_model->GetCostBudgetTypeByYear($CostCenterID,'C004', $BudYear); - $HTML=""; - $HTML2=""; - $index = 1; - // $HTML2 = $BudList[0]['ConfigValue']; - //if($BudList->num_rows() > 0){ - for ($j = 0; $j < count($BudList); $j++) - { - $ConfigValue = $BudList[$j]['ConfigValue']; - $HTML2.=""; - } - - for ($i = 0; $i < count($result); $i++) - { - $BudgetType = $result[$i]['BudgetType']; - $BudgetYear = $result[$i]['BudgetYear']; - $BudgetAmount = $result[$i]['BudgetAmount']; - $Remarks = $result[$i]['Remarks']; - $HTML.=" - ". $BudgetType." - - - - - - ".$BudgetYear." - - ".$BudgetAmount." - - ".$Remarks." - -     - "; - - $index = $index + 1; - - } - $HTML.=""; - die(json_encode(array('Html' => $HTML,'BudYear' => $HTML2))); - // echo $HTML2; - } - - /** - * This function is used to edit the user information - */ - function editcost() - { - - $this->form_validation->set_rules('CostCode','CostCode','trim|required'); - $this->form_validation->set_rules('CostName','CostName','trim|required'); - - if($this->form_validation->run() == FALSE) - { - $this->addCostCenter(); - } - else - { - $CostCode = strtoupper(trim($this->input->post('CostCode'))); - $CostName = strtoupper(trim($this->input->post('CostName'))); - $updatedBy = $this->session->userdata ( 'userId' ); - $SelectedDepartment = $this->input->post('txtSelectedDepartment'); - $ApproverName = $this->input->post('ApprovedBy'); - $comma_separated = ""; - //print_r(strlen($SelectedDepartment)); - if(strlen($SelectedDepartment)>0) - { - $comma_separated = explode(':', $SelectedDepartment); - } - $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); - - $updateddt = $dt->format('Y-m-d H:i:s'); - - $CodeExists = $this->costcenter_model->checkCostDetailsExists($CostCode); - //print_r(count($CodeExists)); - if(count($CodeExists) > 0) - { - $Cost = array( 'CostCenterName'=>$CostName,'ApprovedBy'=>$ApproverName,'UpdatedBy'=>$updatedBy,'UpdatedDate'=>$updateddt); - $this->costcenter_model->EditCost($Cost,$CostCode); - } - //echo count($comma_separated); - - if(count($comma_separated)> 1) - { - for ($j = 0; $j < count($comma_separated); $j++) - { - $DeptCode = $comma_separated[$j]; - - $this->costcenter_model->DeleteDepartment( $DeptCode,$CostCode); - - $Dept = array('CostCenterCode'=>$CostCode, 'DEPCode'=>$DeptCode,'CreatedBy'=>$updatedBy,'createdDate'=>$updateddt,'UpdatedBy'=>$updatedBy,'UpdatedDate'=>$updateddt); - $this->costcenter_model->addCostCenterDepartment($Dept); - - } - } - - $RowCount = $this->input->post('txtRowCount'); - //$BudgetType = $this->input->post('BudgetType2'); - //echo $BudgetType; - for ($i = 1; $i <= $RowCount; $i++) - { - $BudgetType = $this->input->post('BudgetType'.$i); - $BudgetYear = $this->input->post('BudgetYear'.$i); - $BudgetAmount = $this->input->post('BudgetAmount'.$i); - $Remarks = $this->input->post('Remarks'.$i); - $this->costcenter_model->DeleteBudget( $BudgetType,$BudgetYear,$CostCode); - - $Budget = array('CostCenterCode'=>$CostCode, 'BudgetType'=>$BudgetType,'BudgetYear'=>$BudgetYear,'BudgetAmount'=>$BudgetAmount,'Remarks'=>$Remarks,'CreatedBy'=>$updatedBy,'createdDate'=>$updateddt,'UpdatedBy'=>$updatedBy,'UpdatedDate'=>$updateddt); - $this->costcenter_model->addBudget($Budget); - print_r( $BudgetType ); - } - - echo('Successfully Updated Cost details'); - - } - - } - function viewcost($CostCenterID = NULL) - { - - if($CostCenterID == null) - { - redirect('costListing'); - } - - $data['Cost'] = $this->costcenter_model->getuserinfo($CostCenterID); - //$data['users'] = $this->purchaseorder_model->getusers(); - - $this->global['pageTitle'] = 'Siddharth : View Cost'; - - $this->loadViews("viewcost", $this->global, $data,NULL); - - } - - /** - * This function is used to delete the user using userId - * @return boolean $result : TRUE / FALSE - */ - function deletecost() - { - if($this->isAdmin() == TRUE) - { - echo(json_encode(array('status'=>'access'))); - } - else - { - $CostCenterID = $this->input->Costst('CostCentreID'); - $cost = array('CreateDate'=>date('Y-m-d H:i:sa')); - - $result = $this->costcenter_model->deletecost($Cost, $CostCenterID); - - if ($result > 0) { echo(json_encode(array('status'=>TRUE))); } - else { echo(json_encode(array('status'=>FALSE))); } - } - } - - function export_cost(){ - - - $this->load->library('excel'); - $this->excel->setActiveSheetIndex(0)->mergeCells('G3:M3'); - $this->excel->setActiveSheetIndex(0)->getStyle('G3')->getAlignment()->applyFromArray( - array('horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,) -); - - $this->excel->getActiveSheet()->setTitle('Cost Master'); - - - - - - - $this->excel->getActiveSheet()->setCellValue('G3', 'SIDDHARTH INDUSTRIES Cost Master'); - $this->excel->getActiveSheet()->setCellValue('B5', 'S.No'); - $this->excel->getActiveSheet()->setCellValue('C5', 'CostCenterCode'); - $this->excel->getActiveSheet()->setCellValue('D5', 'CostCenterName'); - $this->excel->getActiveSheet()->setCellValue('E5', 'CAPITAL'); - $this->excel->getActiveSheet()->setCellValue('F5', 'REVENUE'); - $this->excel->getActiveSheet()->setCellValue('G5', 'IMPORT'); - $this->excel->getActiveSheet()->setCellValue('H5', 'SERVICE'); - $this->excel->getActiveSheet()->setCellValue('I5', 'BudgetYear'); - $this->excel->getActiveSheet()->setCellValue('J5', 'DEPName'); - - $this->excel->getActiveSheet()->setCellValue('K5', 'IsActive'); - $this->excel->getActiveSheet()->setCellValue('L5', 'Remarks'); - $this->excel->getActiveSheet()->setCellValue('M5', 'CreatedBy'); - $this->excel->getActiveSheet()->setCellValue('N5', 'UpdatedBy'); - $this->excel->getActiveSheet()->setCellValue('O5', 'IsApproved'); - $this->excel->getActiveSheet()->setCellValue('P5', 'ApprovedBy'); - - - - - $this->excel->getActiveSheet()->getStyle('G3')->getFont()->setSize(14); - $this->excel->getActiveSheet()->getStyle('G3')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('B5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('B5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('C5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('C5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('D5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('D5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('E5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('E5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('F5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('F5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('G5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('G5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('H5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('H5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('I5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('I5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('J5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('J5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('K5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('K5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('L5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('L5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('M5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('M5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('N5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('N5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('O5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('O5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('P5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('P5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('Q5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('Q5')->getFont()->setBold(true); - - - - - $exportData = $this->costcenter_model->export_excel(); - - if ($exportData) { - $i = 6; - $s = 1; - foreach ($exportData as $data) { - - $this->excel->getActiveSheet()->setCellValue('B'. $i,$s); - //$this->excel->getActiveSheet()->setCellValue('C'. $i,$data['AssetCode']); - $this->excel->getActiveSheet()->setCellValue('C'. $i,$data['CostCenterCode']); - $this->excel->getActiveSheet()->setCellValue('D'. $i,$data['CostCenterName']); - $this->excel->getActiveSheet()->setCellValue('E'. $i,$data['capital']); - $this->excel->getActiveSheet()->setCellValue('F'. $i,$data['revenue']); - $this->excel->getActiveSheet()->setCellValue('G'. $i,$data['import']); - $this->excel->getActiveSheet()->setCellValue('H'. $i,$data['service']); - $this->excel->getActiveSheet()->setCellValue('I'. $i,$data['BudgetYear']); - $this->excel->getActiveSheet()->setCellValue('J'. $i,$data['DepartmentName']); - - $this->excel->getActiveSheet()->setCellValue('K'. $i,$data['IsActive']); - $this->excel->getActiveSheet()->setCellValue('L'. $i,$data['Remarks']); - $this->excel->getActiveSheet()->setCellValue('M'. $i,$data['firstname']); - $this->excel->getActiveSheet()->setCellValue('N'. $i,$data['Updated_By']); - $this->excel->getActiveSheet()->setCellValue('O'. $i,$data['IsApproved']); - $this->excel->getActiveSheet()->setCellValue('P'. $i,$data['firstname']); - - - - - $i++; - $s++; - } - } - - $filename = 'Cost_Master' .' '. '.xls'; //save our workbook as this file name - header('Content-Type: application/vnd.ms-excel'); //mime type - header('Content-Disposition: attachment;filename="' . $filename . '"'); //tell browser what's the file name - header('Cache-Control: max-age=0'); //no cache - $objWriter = PHPExcel_IOFactory::createWriter($this->excel, 'Excel5'); - if (ob_get_contents()) ob_end_clean(); - ob_start(); - $objWriter->save('php://output'); - - - } - - function pageNotFound() - { - $this->global['pageTitle'] = 'CodeInsect : 404 - Page Not Found'; - - $this->loadViews("404", $this->global, NULL, NULL); - } -} - -?> \ No newline at end of file diff --git a/application/controllers/assetdetails.php b/application/controllers/assetdetails.php deleted file mode 100644 index 68b7504e..00000000 --- a/application/controllers/assetdetails.php +++ /dev/null @@ -1,441 +0,0 @@ -load->model('assetdetails_model'); - $this->load->library('form_validation'); - $this->isLoggedIn(); - } - /** - * This function used to load the first screen of the user - */ - public function index() - { - $this->global['pageTitle'] = 'Siddharth : Asset Details'; - - $this->loadViews("assetListing", $this->global, NULL , NULL); - } - - /** - * This function is used to load the Supplier list - */ - function assetListing() - { - - $this->load->model('assetdetails_model'); - - - - $data['userRecords'] = $this->assetdetails_model->assetListing(); - - $this->global['pageTitle'] = 'Siddharth : Asset List'; - - $this->loadViews("assetListing", $this->global, $data, NULL); - - } - /** - * This function is used to load the add new supplier */ - function addasset() - { - - $data['SupplierList'] = $this->assetdetails_model->getSupplierName(); - $data['DepartmentList'] = $this->assetdetails_model->getDepartment(); - $data['AssetStatus'] = $this->assetdetails_model->getConfigValue('C015'); - - $this->global['pageTitle'] = 'siddharth : Add Asset'; - - $this->loadViews("addasset", $this->global, $data, NULL); - - } - /* Validation for Department Dropdown - */ - function Department_validate($selectValue) -{ - //echo 'select_validate method called'; - // 'none' is the first option and the text says something like "-Choose one-" - if($selectValue == '-1') - { - $this->form_validation->set_message('Department_validate', 'Please Select Department.'); - return false; - } - else // user picked something - { - return true; - } -} -/* Validation for Supplier Dropdown - */ - function Supplier_validate($selectValue) -{ - //echo 'select_validate method called'; - // 'none' is the first option and the text says something like "-Choose one-" - if($selectValue == '-1') - { - $this->form_validation->set_message('Supplier_validate', 'Please Select Supplier.'); - return false; - } - else // user picked something - { - return true; - } -} - -/* Validation for Supplier Dropdown - */ - function Asset_validate($selectValue) -{ - //echo 'select_validate method called'; - // 'none' is the first option and the text says something like "-Choose one-" - if($selectValue == '-1') - { - $this->form_validation->set_message('Asset_validate', 'Please Select Asset Status.'); - return false; - } - else // user picked something - { - return true; - } -} - /** - * This function is used to add new user to the system - */ - function addNewasset() - { - - $this->form_validation->set_rules('AssetName','AssetName','trim|required'); - $this->form_validation->set_rules('Description','Description','trim|required'); - $this->form_validation->set_rules('Department','Department','trim|callback_Department_validate'); - $this->form_validation->set_rules('Location','Location','trim|required'); - $this->form_validation->set_rules('User','User','trim|required'); - $this->form_validation->set_rules('SupplierName','SupplierName','trim|callback_Supplier_validate'); - $this->form_validation->set_rules('DateOfPurchase','DateOfPurchase','trim|required'); - $this->form_validation->set_rules('DateOfCommission','DateOfCommission','trim|required'); - $this->form_validation->set_rules('Assetvalue','Assetvalue','trim|required'); - $this->form_validation->set_rules('AssetStatus','AssetStatus','trim|callback_Asset_validate'); - - - if($this->form_validation->run() == FALSE) - { - $this->addasset(); - } - else - { - $AssetName = strtoupper($this->input->post('AssetName')); - $Description = $this->input->post('Description'); - $Department = $this->input->post('Department'); - $Location = $this->input->post('Location'); - $User = $this->input->post('User'); - $SupplierName = $this->input->post('SupplierName'); - $DateOfPurchase = $this->input->post('DateOfPurchase'); - $DateOfCommission = $this->input->post('DateOfCommission'); - $CreatedBy = $this->session->userdata('userId'); - $AssetValue = $this->input->post('Assetvalue'); - $DOPurchase = $this->getDateformat($DateOfPurchase); - $DOCommission= $this->getDateformat($DateOfCommission); - $AssetStatus = $this->input->post('AssetStatus'); - $Remarks = $this->input->post('Remarks'); - - $chked = $this->input->post('isactive'); - - if( $chked != '') - { - $IsActive = '1'; - } - else - { - $IsActive = '0'; - } - - - $asset = array(); - - - $asset = array('AssetName'=>$AssetName, 'Description'=>$Description,'DEPCode'=>$Department,'Location'=>$Location,'UserName'=>$User,'SupplierCode'=>$SupplierName,'DateOfPurchase'=>$DOPurchase,'DateOfCommison'=>$DOCommission,'AssetValue'=>$AssetValue,'AssetStatus'=>$AssetStatus,'IsActive'=>$IsActive,'Remarks'=>$Remarks,'CreatedBy'=>$CreatedBy); - - $result = $this->assetdetails_model->addNewasset($asset); - - if($result > 0) - { - // $this->session->set_flashdata('success', 'New Asset created successfully'); - - redirect('assetListing','refresh'); - echo ""; - } - else - { - redirect('assetListing','refresh'); - echo ""; - } - - } - - } - /** - * This function is used load user edit information - * @param number $userId : Optional : This is user id - - - function ech(){ - - echo $this->input->post('Asset_Code'); - }*/ - function editOldasset($AssetCode = '') - { - - $SupplierName = $this->input->post('SupplierName'); - $AssetStatus = $this->input->post('AssetStatus'); - $Department = $this->input->post('Department'); - - if($AssetCode == '') - { - $AssetID = $_GET['AssetID']; - - } - else - { - $AssetID = $AssetCode; - } - //echo $AssetID; - - $data['assetList'] = $this->assetdetails_model->getAssetDetails($AssetID); - $data['SupplierList'] = $this->assetdetails_model->getSupplierName($SupplierName); - $data['DepartmentList'] = $this->assetdetails_model->getDepartment($Department); - $data['AssetStatusList'] = $this->assetdetails_model->getConfigValue('C015'); - $this->global['pageTitle'] = 'Siddharth : Edit Asset'; - - $this->loadViews("editOldasset", $this->global, $data,NULL); - - } - - /** - * This function is used to edit the user information - */ - function editasset() - { - - - $Asset_Code = $this->input->post('AssetCode'); - - $this->form_validation->set_rules('AssetName','AssetName','trim|required'); - $this->form_validation->set_rules('Description','Description','trim|required'); - $this->form_validation->set_rules('Department','Department','trim|callback_Department_validate'); - $this->form_validation->set_rules('Location','Location','trim|required'); - $this->form_validation->set_rules('User','User','trim|required'); - $this->form_validation->set_rules('SupplierName','SupplierName','trim|callback_Supplier_validate'); - $this->form_validation->set_rules('DateOfPurchase','DateOfPurchase','trim|required'); - $this->form_validation->set_rules('DateOfCommission','DateOfCommission','trim|required'); - $this->form_validation->set_rules('Assetvalue','Assetvalue','trim|required'); - $this->form_validation->set_rules('AssetStatus','AssetStatus','trim|callback_Asset_validate'); - - if($this->form_validation->run() == FALSE) - { - - $this->editOldasset($Asset_Code); - } - else - { - $Asset_Code = $this->input->post('AssetCode'); - $AssetName = strtoupper( $this->input->post('AssetName')); - $Description = $this->input->post('Description'); - $Department = $this->input->post('Department'); - $Location = $this->input->post('Location'); - $User = $this->input->post('User'); - $SupplierName = $this->input->post('SupplierName'); - $DateOfPurchase = $this->input->post('DateOfPurchase'); - $DateOfCommission = $this->input->post('DateOfCommission'); - $UpdatedBy = $this->session->userdata('userId'); - $AssetValue = $this->input->post('Assetvalue'); - $DOPurchase = $this->getDateformat($DateOfPurchase); - $DOCommission= $this->getDateformat($DateOfCommission); - $AssetStatus = $this->input->post('AssetStatus'); - $Remarks = $this->input->post('Remarks'); - - $chked = $this->input->post('isactive'); - - if( $chked != '') - { - $IsActive = '1'; - } - else - { - $IsActive = '0'; - } - - - $asset = array(); - - - $asset = array('AssetName'=>$AssetName, 'Description'=>$Description,'DEPCode'=>$Department,'Location'=>$Location,'UserName'=>$User,'SupplierCode'=>$SupplierName,'DateOfPurchase'=>$DOPurchase,'DateOfCommison'=>$DOCommission,'AssetValue'=>$AssetValue,'AssetStatus'=>$AssetStatus,'IsActive'=>$IsActive,'Remarks'=>$Remarks,'UpdatedBy'=>$UpdatedBy); - - - - $result = $this->assetdetails_model->editasset($asset, $Asset_Code); - - if($result == true) - { - redirect('assetListing','refresh'); - echo ""; - } - else - { - redirect('assetListing','refresh'); - echo ""; - - } - } - - } - - function getDateformat($Val) - { - $date = new DateTime($Val); - $retDate = $date->format('Y-m-d H:i:s'); - return $retDate; - } - - - function export_asset(){ - - - $this->load->library('excel'); - $this->excel->setActiveSheetIndex(0)->mergeCells('G3:M3'); - $this->excel->setActiveSheetIndex(0)->getStyle('G3')->getAlignment()->applyFromArray( - array('horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,) -); - - $this->excel->getActiveSheet()->setTitle('Asset Details'); - - - - - - - - - - - - $this->excel->getActiveSheet()->setCellValue('G3', 'SIDDHARTH INDUSTRIES Asset Details'); - $this->excel->getActiveSheet()->setCellValue('C5', 'AssetCode'); - $this->excel->getActiveSheet()->setCellValue('D5', 'AssetName'); - $this->excel->getActiveSheet()->setCellValue('E5', 'Description'); - $this->excel->getActiveSheet()->setCellValue('F5', 'DEPCode'); - $this->excel->getActiveSheet()->setCellValue('G5', 'Location'); - $this->excel->getActiveSheet()->setCellValue('H5', 'UserName'); - $this->excel->getActiveSheet()->setCellValue('I5', 'SupplierCode'); - $this->excel->getActiveSheet()->setCellValue('J5', 'DateOfPurchase'); - $this->excel->getActiveSheet()->setCellValue('K5', 'DateOfCommison'); - $this->excel->getActiveSheet()->setCellValue('L5', 'AssetValue'); - $this->excel->getActiveSheet()->setCellValue('M5', 'AssetStatus'); - $this->excel->getActiveSheet()->setCellValue('N5', 'IsActive'); - $this->excel->getActiveSheet()->setCellValue('O5', 'Remarks'); - $this->excel->getActiveSheet()->setCellValue('P5', 'CreatedBy'); - $this->excel->getActiveSheet()->setCellValue('Q5', 'UpdatedBy'); - - - - - $this->excel->getActiveSheet()->getStyle('G3')->getFont()->setSize(14); - $this->excel->getActiveSheet()->getStyle('G3')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('C5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('C5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('D5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('D5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('E5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('E5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('F5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('F5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('G5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('G5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('H5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('H5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('I5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('I5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('J5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('J5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('K5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('K5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('L5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('L5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('M5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('M5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('N5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('N5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('O5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('O5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('P5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('P5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('Q5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('Q5')->getFont()->setBold(true); - - - - - $exportData = $this->assetdetails_model->export_excel(); - - if ($exportData) { - $i = 6; - $s = 1; - foreach ($exportData as $data) { - - - $this->excel->getActiveSheet()->setCellValue('C'. $i,$data['AssetCode']); - $this->excel->getActiveSheet()->setCellValue('D'. $i,$data[ 'AssetName']); - $this->excel->getActiveSheet()->setCellValue('E'. $i,$data[ 'Description']); - $this->excel->getActiveSheet()->setCellValue('F'. $i,$data[ 'DEPCode']); - $this->excel->getActiveSheet()->setCellValue('G'. $i,$data[ 'Location']); - $this->excel->getActiveSheet()->setCellValue('H'. $i,$data[ 'UserName']); - $this->excel->getActiveSheet()->setCellValue('I'. $i,$data[ 'SupplierCode']); - $this->excel->getActiveSheet()->setCellValue('J'. $i,$data[ 'DateOfPurchase']); - $this->excel->getActiveSheet()->setCellValue('K'. $i,$data[ 'DateOfCommison']); - $this->excel->getActiveSheet()->setCellValue('L'. $i,$data[ 'AssetValue']); - $this->excel->getActiveSheet()->setCellValue('M'. $i,$data[ 'AssetStatus']); - $this->excel->getActiveSheet()->setCellValue('N'. $i,$data[ 'IsActive']); - $this->excel->getActiveSheet()->setCellValue('O'. $i,$data[ 'Remarks']); - $this->excel->getActiveSheet()->setCellValue('P'. $i,$data[ 'firstname']); - $this->excel->getActiveSheet()->setCellValue('Q'. $i,$data[ 'Updated_By']); - - - - - $i++; - $s++; - } - } - - $filename = 'Asset_details' .' '. '.xls'; //save our workbook as this file name - header('Content-Type: application/vnd.ms-excel'); //mime type - header('Content-Disposition: attachment;filename="' . $filename . '"'); //tell browser what's the file name - header('Cache-Control: max-age=0'); //no cache - $objWriter = PHPExcel_IOFactory::createWriter($this->excel, 'Excel5'); - if (ob_get_contents()) ob_end_clean(); - ob_start(); - $objWriter->save('php://output'); - - - } - - function pageNotFound() - { - $this->global['pageTitle'] = 'CodeInsect : 404 - Page Not Found'; - - $this->loadViews("404", $this->global, NULL, NULL); - } -} - -?> \ No newline at end of file diff --git a/application/controllers/c_test.php b/application/controllers/c_test.php deleted file mode 100644 index ba5f639a..00000000 --- a/application/controllers/c_test.php +++ /dev/null @@ -1,51 +0,0 @@ -load->model('purchaseorder_model'); - $this->load->library('session'); - $this->isLoggedIn(); - //$this->load->library('grocery_CRUD'); - } - - public function create_pdf() { - // Load all views as normal - - - $PONO = $_GET['PO']; - - $data['PODetail'] = $this->purchaseorder_model->getPurchaseOrder($PONO); - $data['POLineItem'] = $this->purchaseorder_model->getPOLineItem($PONO); - //$this->global['pageTitle'] = 'Purchase Order Report'; - - // Add header to pdf - $this->load->view('includes/pdfheader'); - - // Load the pdf page with multiviews - $this->load->View("create_pdf", $data, NULL); - - // Add header to pdf - $this->load->view('includes/pdffooter'); - - // Get output html - $php = $this->output->get_output(); - - // Load library - $this->load->library('dompdf_gen'); - - // Convert to PDF - $this->dompdf->load_html($php); - $this->dompdf->render(); - $data['Attachment'] = FALSE; - $this->dompdf->stream("PurchaseOrderreport.pdf",$data,$php); - -} - -} - \ No newline at end of file diff --git a/application/controllers/emergencypurchaseorder.php b/application/controllers/emergencypurchaseorder.php deleted file mode 100644 index 565be555..00000000 --- a/application/controllers/emergencypurchaseorder.php +++ /dev/null @@ -1,1086 +0,0 @@ -load->model('purchaseorder_model'); - - $this->load->library('session'); - $this->load->library('form_validation'); - $this->load->model('requistion_model'); - $this->isLoggedIn(); - } - - /** - * This function used to load the first screen of the user - */ - public function index() - { - $this->global['pageTitle'] = 'Siddharth : AddPO'; - - $this->loadViews("addPO", $this->global, NULL , NULL); - } - - function requisition() - { - $data['DeptList'] = $this->purchaseorder_model->getDepartmentListForAllReq(); - - $data['stList'] = $this->purchaseorder_model->getStatusListforAllReq(); - - $data['ReqList'] = $this->purchaseorder_model->getRequistionListbySearch(); - $this->global['pageTitle'] = 'Siddharth : Create PO from Requisition List'; - - $this->loadViews("createPOfromRequistion", $this->global, $data,Null); - } - - function CreateEmergencyPO() - { - $this->global['pageTitle'] = 'Siddharth : Create Emergency Purchase Order'; - $data['RequestType'] = $this->requistion_model->getConfigValue('C004'); - $data['Suplist'] = $this->purchaseorder_model->getSupplierName(); - $data['DeptList'] = $this->purchaseorder_model->getDepartmentAllList(); - $data['CompanyDetails'] = $this->purchaseorder_model->getCompanyInformation(); - $data['MaxPODate'] = $this->purchaseorder_model->getLastCreatedPODate(); - $data['TaxType'] = $this->purchaseorder_model->getConfigValue('C006'); - $data['FreightType'] = $this->purchaseorder_model->getConfigValue('C018'); - - $this->loadViews("alterpurchaseorder", $this->global, $data, Null); - - } - /** - * this function used for get all material code using request type - */ - function getMaterialCode(){ - $reqType = $this->input->post('input'); - $materialList = $this->requistion_model->GetMaterialCode($reqType); - echo json_encode($materialList); - - } - - /*This function is used for get cost center list using department code*/ - function getCostCenterName(){ - $CostList=''; - $DeptCode = $this->input->post('id'); - $CostList = $this->requistion_model->GetCostCenterByDept($DeptCode); - // print_r($CostList); - echo json_encode($CostList); - - } - - //This used to Create Service Purchase Order - function addNewServicePurchaseOrder() - { - - - $POdt =$this->input->post('PODate'); - $PODate = $this->getDateformat($POdt); - $SupplierID = $this->input->post('drpSupplier'); - $DeliveryAddr = $this->input->post('DeliveryAddr'); - $dt = $this->input->post('Deliverydt'); - $CostCenterName = $this->input->post('CostCenterName'); - $DeliveryOption = $this->input->post('DateRange'); - if($DeliveryOption==1){ - $Deliverydt = ''; - $DeliverySchedule = $this->input->post('Scheduleby'); - } - else{ - $Deliverydt = $this->getDateformat($dt); - $DeliverySchedule = ''; - } - - - $POType = $this->input->post('POType'); - - $SpcialInstruction = $this->input->post('TextSpcialInstruction'); - $TotalOrderValueSummary = $this->input->post('TextTotalOrderValueSummaryService'); - - $POStatus = $this->input->post('TextStatus'); - $CreateBy = $this->session->userdata ('userId'); - $RequestedBy = $this->session->userdata ('EmpID'); - - $ReqStatus = REQITEM_Emergency_PO_CREATED; - - $RowCount = $this->input->post('TextRowCount'); - - $DeletedRow = $this->input->post('TextDeletedRowCount'); - - $comma_separated = explode(':', $DeletedRow); - - $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); - - $createddt = $dt->format('Y-m-d H:i:s'); - //create T_Requestion_Master - $Request = array('ReqType'=>$POType, 'Requestedby'=>$RequestedBy,'CostCenterCode'=>$CostCenterName,'Status'=>$ReqStatus,'Comments'=>$SpcialInstruction,'ReqDate'=>$createddt,'CreatedDate'=>$createddt,'CreatedBy'=>$CreateBy); - - $Req = $this->requistion_model->addRequistion($Request); - - $RegNo=''; - if(count($Req)>0) - { - $RegNo = $Req[0]['ReqNo']; - } - - - // PO Master - $POList = array('SupplierID'=>$SupplierID, 'TotalOrderValue'=>$TotalOrderValueSummary,'PODate'=>$PODate,'Status'=>$POStatus,'DeliverySchedule'=>$DeliverySchedule,'DeliveryOption'=>$DeliveryOption,'ServiceDescription'=>$SpcialInstruction,'CreatedBy'=>$CreateBy,'DeliveryAddress'=>$DeliveryAddr,'DeliveryDate'=>$Deliverydt,'CreatedDate'=>$createddt ); - - $POMaster = $this->purchaseorder_model->addPOMaster($POList); - $PONO = ''; - if(count($POMaster)>0) - { - $PONO = $POMaster[0]['PONO']; - } - - $RegDetailsStatus=REQITEM_POCREATED; - - // PO Line Items - $LineItemStatus = REQITEM_NEW; - - for ($i = 1; $i <= $RowCount; $i++) - { - - $MaterialCode = $this->input->post('materialCode'.$i); - $Quantity = $this->input->post('quantity'.$i); - $Reqnumber = $this->input->post('Reqnumber'.$i); - $itemRate = $this->input->post('itemRate'.$i); - $ServiceTax = $this->input->post('ServiceTax'.$i); - $EduCess = $this->input->post('EduCess'.$i); - $SecHighTax = $this->input->post('SecHighTax'.$i); - $KrishiTax = $this->input->post('KrishiTax'.$i); - $SwachhTax = $this->input->post('SwachhTax'.$i); - $CostCenter = $this->input->post('costCode'.$i); - - $TotalOrderValue = $this->input->post('TotalOrderValue'.$i); - $SkipInsert = "False"; - if( count($comma_separated) > 0) - { - for($j = 1; $j < count($comma_separated); $j++) - { - $deletedRow = $comma_separated[$j]; - - if($deletedRow == $i ) - { - $SkipInsert = "True"; - break; - } - - } - } - if($SkipInsert == "False") - { - - //add requistion details - $ReqDetails = array('ReqNo'=>$RegNo, 'MaterialCode'=>$MaterialCode,'Quantity'=>$Quantity,'Status'=>$RegDetailsStatus,'UpdatedBy'=>$CreateBy,'UpdatedOn'=>$createddt); - - - $ReqDetQuery = $this->requistion_model->addRequistionDetails($ReqDetails); - - - - $POLineItemList = array('PONO'=>$PONO, 'ReqNo'=>$RegNo,'MaterialCode'=>$MaterialCode,'Quantity'=>$Quantity,'Rate'=>$itemRate,'Status'=>$LineItemStatus,'CreatedBy'=>$CreateBy,'CreatedDate'=>$createddt,'CostCenterCode'=>$CostCenter); - $POLineItem = $this->purchaseorder_model->addPOLineItem($POLineItemList); - $LineItemNo = ''; - if(count($POLineItem)>0) - { - $LineItemNo = $POLineItem[0]['LineItemNo']; - } - - - if(trim($POType) == SERVICE ) - { - // echo 'Success'; - - $ServiceTaxList = array('LineItemNo'=>$LineItemNo, 'ServiceTax'=>$ServiceTax,'EducessTax'=>$EduCess,'SecHigherEducessTax'=>$SecHighTax,'KrishiKalyantax'=>$KrishiTax,'SwachhBharattax'=>$SwachhTax,'TotalValue'=>$TotalOrderValue, 'CreatedBy'=>$CreateBy,'CreatedDate'=>$createddt); - - $ServiceTax = $this->purchaseorder_model->addServiceTax($ServiceTaxList); - - } - } - else { - - } - - } - - if($POStatus == REQ_DRAFT) - { - echo 'Emergency Service Purchase Order Saved Successfully!The PO NO Is: '.$PONO; - - } - else - { - echo 'Emergency Service Purchase Order Created Successfully!The PO NO Is: '.$PONO; - - } - - - } - - - - //This used to Create Revenue Emergency Purchase Order - function addNewRevenuePurchaseOrder() - { - - $POdt =$this->input->post('PODate'); - $PODate = $this->getDateformat($POdt); - $SupplierID = $this->input->post('drpSupplier'); - $DeliveryAddr = $this->input->post('DeliveryAddr'); - $dt = $this->input->post('Deliverydt'); - $DeliveryOption = $this->input->post('DateRange'); - if($DeliveryOption==1){ - $Deliverydt = ''; - $DeliverySchedule = $this->input->post('Scheduleby'); - } - else{ - $Deliverydt = $this->getDateformat($dt); - $DeliverySchedule = ''; - } - $CostCenterName = $this->input->post('CostCenterName'); - $POType = $this->input->post('POType'); - $PoRange = $this->input->post('txtPoRange'); - - $SpcialInstruction = $this->input->post('TextSpcialInstruction'); - $TotalOrderValueSummary = $this->input->post('txtTotalOrderValueSummary'); - $POStatus = $this->input->post('TextStatus'); - - $CreateBy = $this->session->userdata ( 'userId' ); - $RowCount = $this->input->post('TextRowCount'); - $DeletedRow = $this->input->post('TextDeletedRowCount'); - $RequestedBy = $this->session->userdata ('EmpID'); - $ReqStatus = REQITEM_Emergency_PO_CREATED; - - - $comma_separated = explode(':', $DeletedRow); - - $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); - $createddt = $dt->format('Y-m-d H:i:s'); - - //add requistion - $Request = array('ReqType'=>$POType, 'Requestedby'=>$RequestedBy,'CostCenterCode'=>$CostCenterName,'Status'=>$ReqStatus,'Comments'=>$SpcialInstruction,'ReqDate'=>$createddt,'CreatedDate'=>$createddt,'CreatedBy'=>$CreateBy); - - $Req = $this->requistion_model->addRequistion($Request); - - $RegNo=''; - if(count($Req)>0) - { - $RegNo = $Req[0]['ReqNo']; - } - // PO Master - $POList = array('SupplierID'=>$SupplierID, 'TotalOrderValue'=>$TotalOrderValueSummary,'PODate'=>$PODate,'Status'=>$POStatus,'DeliverySchedule'=>$DeliverySchedule,'DeliveryOption'=>$DeliveryOption,'PORange'=>$PoRange,'ServiceDescription'=>$SpcialInstruction,'CreatedBy'=>$CreateBy,'DeliveryAddress'=>$DeliveryAddr,'DeliveryDate'=>$Deliverydt,'CreatedDate'=>$createddt ); - - $POMaster = $this->purchaseorder_model->addPOMaster($POList); - - $PONO = ''; - if(count($POMaster)>0) - { - $PONO = $POMaster[0]['PONO']; - } - - // PO Line Items - $RegDetailsStatus=REQITEM_POCREATED; - $LineItemStatus = REQITEM_NEW; - - for ($i = 1; $i <= $RowCount; $i++) - { - - $MaterialCode = $this->input->post('materialCode'.$i); - $Quantity = $this->input->post('quantity'.$i); - $Reqnumber = $this->input->post('Reqnumber'.$i); - $itemRate = $this->input->post('itemRate'.$i); - - $DiscountType = $this->input->post('DisType'.$i); - $DiscountValue = $this->input->post('DisVal'.$i); - $AfterDiscount = $this->input->post('AfterDisVal'.$i); - $PackagingOption = $this->input->post('PackOption'.$i); - $PackagingType = $this->input->post('PackType'.$i); - $PackagingValue = $this->input->post('PackVal'.$i); - $AfterPackagingValue = $this->input->post('AfterPackVal'.$i); - $ExciseOption = $this->input->post('ExciseOption'.$i); - $ExciseValue = $this->input->post('ExciseVal'.$i); - $AfterExciseValue = $this->input->post('AfterExciseVal'.$i); - $VatOption = $this->input->post('VatOption'.$i); - $VatValue = $this->input->post('VatVal'.$i); - $AfterVatValue = $this->input->post('AfterVatVal'.$i); - $CSTOption = $this->input->post('CSTOption'.$i); - $CSTValue = $this->input->post('CSTVal'.$i); - $AfterCSTValue = $this->input->post('AfterCSTVal'.$i); - $GSTValue = $this->input->post('GSTVal'.$i); - $AfterGSTValue = $this->input->post('AfterGSTVal'.$i); - $OtherTaxValue = $this->input->post('OtherTaxVal'.$i); - $AfterOtherTaxValue = $this->input->post('AfterOtherTaxVal'.$i); - $FreightType = $this->input->post('FreightType'.$i); - $FreightValue = $this->input->post('FreightVal'.$i); - $AfterFreightValue = $this->input->post('AfterFreightVal'.$i); - $InsuranceValue = $this->input->post('Insval'.$i); - $TotalOrderValue = $this->input->post('TotalOrderValue'.$i); - $CostCenter = $this->input->post('costCode'.$i); - - $SkipInsert = "False"; - if( count($comma_separated) > 0) - { - for($j = 1; $j < count($comma_separated); $j++) - { - $deletedRow = $comma_separated[$j] ; - - if($deletedRow == $i ) - { - $SkipInsert = "True"; - break; - } - - } - } - if($SkipInsert == "False") - { - //add requistion details - $ReqDetails = array('ReqNo'=>$RegNo, 'MaterialCode'=>$MaterialCode,'Quantity'=>$Quantity,'Status'=>$RegDetailsStatus,'UpdatedBy'=>$CreateBy,'UpdatedOn'=>$createddt); - - - $ReqDetQuery = $this->requistion_model->addRequistionDetails($ReqDetails); - - $POLineItemList = array('PONO'=>$PONO, 'ReqNo'=>$RegNo,'MaterialCode'=>$MaterialCode,'Quantity'=>$Quantity,'Rate'=>$itemRate,'Status'=>$LineItemStatus,'CreatedBy'=>$CreateBy,'CreatedDate'=>$createddt,'CostCenterCode'=>$CostCenter); - - $POLineItem = $this->purchaseorder_model->addPOLineItem($POLineItemList); - - $LineItemNo = ''; - if(count($POLineItem)>0) - { - $LineItemNo = $POLineItem[0]['LineItemNo']; - } - //echo $LineItemNo; - - if(trim($POType) == REVENUE ) - { - // echo 'Success'; - $RevenueTaxList = array('LineItemNo'=>$LineItemNo, 'DiscountType'=>$DiscountType,'DiscountValue'=>$DiscountValue,'AfterDiscount'=>$AfterDiscount,'PackagingType'=>$PackagingType,'PackagingValue'=>$PackagingValue,'PackagingCalulatedOn'=>$PackagingOption,'AfterPackagingValue'=>$AfterPackagingValue,'FreightType'=>$FreightType, 'FreightValue'=>$FreightValue,'AfterFreightValue'=>$AfterFreightValue,'ExciseDuty'=>$ExciseValue,'ExciseDutyCalulatedOn'=>$ExciseOption,'AfterExciseDuty'=>$AfterExciseValue,'Vat'=>$VatValue,'AfterVAT'=>$AfterVatValue,'VatCalulatedOn'=>$VatOption, 'CST'=>$CSTValue,'AfterCST'=>$AfterCSTValue,'CSTCalulatedOn'=>$CSTOption,'GST'=>$GSTValue,'AfterGST'=>$AfterGSTValue,'OtherTaxes'=>$OtherTaxValue,'AfterOtherTaxes'=>$AfterOtherTaxValue,'Insurance'=>$InsuranceValue,'TotalValue'=>$TotalOrderValue, 'CreatedBy'=>$CreateBy,'CreatedDate'=>$createddt); - - $RevenueList = $this->purchaseorder_model->addRevenueTax($RevenueTaxList); - //echo 'Revenue tax Success'; - } - } - - } - echo 'Purchase Order Created Successfully! PO Number Is: '.$PONO ; - - } - - - /** - * This function is used to load the purchaseorder list - */ - function PurchaseOrderList() - { - - $this->load->library('pagination'); - - $count = $this->purchaseorder_model->purchaseorderListingCount(''); - - $returns = $this->paginationCompress ( "purchaseorderListing/", $count, 5 ); - - //$this->purchaseorder_model->UpdateRequistItemStatus(); - $this->purchaseorder_model->UpdateRequistionStatus(); - $data['POData'] = $this->purchaseorder_model->purchaseorderListing(); - - $this->global['pageTitle'] = 'Siddharth : Purchase Orders'; - - $this->loadViews("POlist", $this->global, $data, NULL); - - } - function Req_validate($selectValue) - { - //echo 'select_validate method called'; - // 'none' is the first option and the text says something like "-Choose one-" - if(strlen($selectValue) == 0) - { - $this->form_validation->set_message('Req_validate', 'Please Select Requisition Number to Create PO.'); - return false; - } - else // user picked something - { - return true; - } - } - - /** - * This function used to show the Purchase Order Screen - */ - - function CreatePurchaseOrder() - { - - - $this->load->library('form_validation'); - - $this->form_validation->set_rules('txtReqNo', 'txtReqNo', 'callback_Req_validate'); - - if($this->form_validation->run() == FALSE) - { - $this->requisition(); - //echo 'Validate method called'; - } - else - { - - $this->global['pageTitle'] = 'Siddharth : Purchase order form'; - $data['TaxType'] = $this->purchaseorder_model->getConfigValue('C006'); - $data['FreightType'] = $this->purchaseorder_model->getConfigValue('C018'); - $data['Suplist'] = $this->purchaseorder_model->getSupplierName(); - $SelectedReq = json_decode($this->input->post('txtReqNo')); - $Req = $SelectedReq->Req; - $data['ReqList'] = $Req ; - $ReqArray = array(); - $ReqType = ''; - $result = array(); - - foreach ($Req as $SID): - $ReqArray[] = $SID->ReqNo ; - $result[] = $this->purchaseorder_model->getRawPOMaterialList($SID->ReqNo); - $ReqType = $SID->ReqType; - //echo $SID->ReqNo; - - endforeach; - //print_r ($result); - $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); - $Year = $dt->format('Y'); - $data['CostList'] = $this->purchaseorder_model->getCostCenterbyRequist('',$Year,$ReqType); - $data['MaterialList'] = $result; //$this->purchaseorder_model->getRawMaterialList($ReqType,$ReqArray); - //print_r ($data['MaterialList']); - $data['RequistionDetails'] = $this->purchaseorder_model->getRequistDetails($ReqArray); - $data['CompanyDetails'] = $this->purchaseorder_model->getCompanyInformation(); - $data['MaxPODate'] = $this->purchaseorder_model->getLastCreatedPODate(); - - $ViewName = ''; - if($ReqType == REVENUE) - { - $ViewName = 'Purchaseorder'; - } - else if($ReqType == SERVICE) - { - $ViewName = 'servicePurchaseorder'; - } - $this->loadViews($ViewName, $this->global,$data, NULL); - } - } - - function CreatePOPrint() - { - $PONO = $_GET['PONO']; - $ReqType = $_GET['ReqType']; - - if($ReqType == SERVICE) - { - $this ->servicepoprint($PONO); - - } - else if($ReqType == REVENUE) - { - $this ->revenuepoprint($PONO); - - } - } - //To View/Update Purchase Order - function EditPurchaseOrder() - { - $PONO = $_GET['PONO']; - $ReqType = $_GET['ReqType']; - $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); - $Year = $dt->format('Y'); - $data['CostList'] = $this->purchaseorder_model->getCostCenterbyRequist('',$Year,$ReqType); - $Req = $this->purchaseorder_model->getRequistionNoFromPO($PONO); - $data['ReqList'] = $Req ; - $result = array(); - $ReqArray = array(); - foreach ($Req as $SID): - $ReqArray[] = $SID->ReqNo ; - $result[] = $this->purchaseorder_model->getRawPOMaterialList($SID->ReqNo); - endforeach; - $data['MaterialList'] = $result;//$this->purchaseorder_model->getRawMaterialList($ReqType,$ReqArray); - $data['Suplist'] = $this->purchaseorder_model->getSupplierName(); - $data['RequistionDetails'] = $this->purchaseorder_model->getRequistDetails($ReqArray); - $data['POMaster'] = $this->purchaseorder_model->GetServicePurchaseOrder($PONO); - $data['MaxPODate'] = $this->purchaseorder_model->getLastCreatedPODate(); - $data['TaxType'] = $this->purchaseorder_model->getConfigValue('C006'); - $data['FreightType'] = $this->purchaseorder_model->getConfigValue('C018'); - if($ReqType == SERVICE) - { - - $data['POItem'] = $this->purchaseorder_model->GetServicePurchaseOrderDetails($PONO); - $this->global['pageTitle'] = 'Siddharth : Edit Service Purchase order form'; - $this->loadViews("EditservicePurchaseorder", $this->global, $data, NULL); - } - else if($ReqType == REVENUE) - { - - $data['POItem'] = $this->purchaseorder_model->GetRevenuePurchaseOrderDetails($PONO); - $this->global['pageTitle'] = 'Siddharth : Edit Revenue Purchase order form'; - $this->loadViews("editRevenuepurchaseorder", $this->global, $data, NULL); - } - - } - - // To get the Material value based on the MaterialCode - function getDetailsforReq() - { - - - $SearchFilter= $this->input->post('id'); - // $reqDate= $this->input->post('ReqDate'); - $DeptCode = $SearchFilter[0]; - $MatType = $SearchFilter[1]; - $ReqNo = $SearchFilter[2]; - // $ReqDetai = $this->purchaseorder_model->getRequistDetails( $EmpID ); - - $CostList = $this->requistion_model->GetCostCenterByDept( $DeptCode); - - $HTML = ""; - $BudAmount = ""; - if(count($CostList) > 0) - { - for ($j = 0; $j < count($CostList); $j++) - { - $Code = $CostList[$j]['CostCenterCode']; - $Name = $CostList[$j]['CostCenterName']; - $HTML .=""; - } - } - $MaterialDetails = $this->purchaseorder_model->getRawMaterialListForPO($MatType,$ReqNo); - - $HTML1 = ""; - - if(count($MaterialDetails) > 0) - { - for ($j = 0; $j < count($MaterialDetails); $j++) - { - $Code = $MaterialDetails[$j]['MaterialCode']; - $Name = $MaterialDetails[$j]['MaterialName']; - $HTML1 .=""; - - } - - } - // print_r($HTML1); - - die(json_encode(array('MatDetail' =>$HTML1,'Cost'=> $HTML))); - } - /* This method to get the status based on the Department selection in th - */ - function getStatusByDepartment() - { - $DepId = $this->input->post('id'); - - $data = $this->purchaseorder_model->getStatusByDepartment($DepId); - - $HTML = ""; - if(count($data) > 0) - { - for ($j = 0; $j < count($data); $j++) - { - $Code = $data[$j]['StatusCode']; - $Name = $data[$j]['StatusName']; - $HTML .=""; - } - } - //echo $HTML; - die(json_encode(array('depStaus' => $HTML))); - } - - // To get the available Budget Amount - function AvilBudgetAmount() - { - $SearchFilter= $this->input->post('id'); - // $reqDate= $this->input->post('ReqDate'); - $CostCode = $SearchFilter[0]; - $ReqType = $SearchFilter[1]; - print_r($SearchFilter); - $CostCode= $this->input->post('id'); - $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); - - $Year = $dt->format('Y'); - $this->load->model('purchaseorder_model'); - $result = $this->purchaseorder_model->GetAvailableBudgetAmount($CostCode,$Year,$ReqType); - //print_r($result); - $AvilBudAmt = ''; - if(count($result)>0) - { - $AvilBudAmt = $result[0]['BudgetAmount'] - $result[0]['Totalvalue']; - } - - // echo 'Test'; - print_r($AvilBudAmt); - //die(json_encode(array('Cost' => $AvilBudAmt))); - } - - - function getDateformat($Val) - { - $date = new DateTime($Val,new DateTimeZone('Asia/Kolkata')); - // print_r($date); - $retDate = $date->format('Y-m-d H:i:s'); - return $retDate; - } - /* Method to get the Requistion list based on the search filter*/ - - function SearchListofRequistion() - { - $SearchFilter= $this->input->post('id'); - // $reqDate= $this->input->post('ReqDate'); - $DEPCode = $SearchFilter[0]; - $Status = $SearchFilter[1]; - $rng = $SearchFilter[2]; - // $ToDate = $SearchFilter[3]; - $FromDate =''; - $ToDate = ''; - // echo $rng; - $Dt = explode("-",$rng); - // print_r( $Dt); - if(count( $Dt)>1) - { - $FDate = $Dt[0]; - $TDate = $Dt[1]; - $FromDate = $this->getDateformat($FDate); - $ToDate = $this->getDateformat($TDate); - } - //echo $FromDate; - // print_r($Dt); - $result = $this->purchaseorder_model->getRequistionListbySearch($DEPCode,$Status,$FromDate,$ToDate); - - - $HTML=""; - for ($i = 0; $i < count($result); $i++) - { - $SNo = $i + 1; - $ReqNo = $result[$i]['ReqNo']; - $ReqType = $result[$i]['ReqType']; - $Reqedby = $result[$i]['FirstName']; - $ReqDate = $result[$i]['ReqDate']; - $Status = $result[$i]['StatusName']; - $Department = $result[$i]['DepartmentName']; - $Designation = $result[$i]['Designation']; - - $HTML.=" - - ". $ReqNo." - - ".$ReqType." - - ".$Reqedby." - ".$ReqDate." - ".$Status." - ".$Department." - ".$Designation." - "; - } - //print_r( $HTML); - die(json_encode(array('ReqList' =>$HTML))); - } - - - /* To View the request details*/ - function ListPORequistion() - { - $ReqNo= $this->input->post('id'); - $result = $this->requistion_model->getRequistItemList($ReqNo); - $ReqList = $this->requistion_model->getRequistDetails($ReqNo); - $DepNo = $ReqList[0]['DEPCode']; - $CostList = $this->requistion_model->GetCostCenterByDept($DepNo); - $HTML=""; - for ($i = 0; $i < count($result); $i++) - { - $SNo = $i + 1; - $MaterialCode = $result[$i]['MaterialCode']; - $MaterialName = $result[$i]['MaterialName']; - $UOM = $result[$i]['UOM']; - $Quantity = $result[$i]['Quantity']; - $HTML.=" - ".$SNo." - ". $MaterialCode." - - ".$MaterialName." - - ".$UOM." - ".$Quantity." - "; - - //$index = $index + 1; - - } - - $CostCenter = ""; - if(count($CostList) > 0) - { - for ($j = 0; $j < count($CostList); $j++) - { - $Code = $CostList[$j]['CostCenterCode']; - $Name = $CostList[$j]['CostCenterName']; - $CostCenter .=""; - } - } - //echo $HTML; - //echo $CostCenter; - die(json_encode(array('Items' =>$HTML,'Requist'=>$ReqList,'Cost'=>$CostCenter))); - } - - //This used to Create Revenue Purchase Order - function addNewPurchaseOrder() - { - $POdt =$this->input->post('PODate'); - $PODate = $this->getDateformat($POdt); - $SupplierID = $this->input->post('drpSupplier'); - $DeliveryAddr = $this->input->post('DeliveryAddr'); - $dt = $this->input->post('Deliverydt'); - $Deliverydt = $this->getDateformat($dt); - $POType = $this->input->post('POType'); - $PoRange = $this->input->post('txtPoRange'); - - $SpcialInstruction = $this->input->post('txtSpcialInstruction'); - $TotalOrderValueSummary = $this->input->post('txtTotalOrderValueSummary'); - $POStatus = $this->input->post('txtStatus'); - - $CreateBy = $this->session->userdata ( 'userId' ); - $RowCount = $this->input->post('txtRowCount'); - $DeletedRow = $this->input->post('txtDeletedRow'); - - $comma_separated = explode(':', $DeletedRow); - - $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); - $createddt = $dt->format('Y-m-d H:i:s'); - // PO Master - $POList = array('SupplierID'=>$SupplierID, 'TotalOrderValue'=>$TotalOrderValueSummary,'PODate'=>$PODate,'Status'=>$POStatus,'PORange'=>$PoRange,'ServiceDescription'=>$SpcialInstruction,'CreatedBy'=>$CreateBy,'DeliveryAddress'=>$DeliveryAddr,'DeliveryDate'=>$Deliverydt,'CreatedDate'=>$createddt ); - - $POMaster = $this->purchaseorder_model->addPOMaster($POList); - - $PONO = ''; - if(count($POMaster)>0) - { - $PONO = $POMaster[0]['PONO']; - } - //echo $PONO; - //echo $POType; - // PO Line Items - $LineItemStatus = REQITEM_NEW; - //echo ' test:'.REVENUE; - //echo $RowCount; - for ($i = 1; $i <= $RowCount; $i++) - { - - $MaterialCode = $this->input->post('materialCode'.$i); - $Quantity = $this->input->post('quantity'.$i); - $Reqnumber = $this->input->post('Reqnumber'.$i); - $itemRate = $this->input->post('itemRate'.$i); - - $DiscountType = $this->input->post('DisType'.$i); - $DiscountValue = $this->input->post('DisVal'.$i); - $AfterDiscount = $this->input->post('AfterDisVal'.$i); - $PackagingOption = $this->input->post('PackOption'.$i); - $PackagingType = $this->input->post('PackType'.$i); - $PackagingValue = $this->input->post('PackVal'.$i); - $AfterPackagingValue = $this->input->post('AfterPackVal'.$i); - $ExciseOption = $this->input->post('ExciseOption'.$i); - $ExciseValue = $this->input->post('ExciseVal'.$i); - $AfterExciseValue = $this->input->post('AfterExciseVal'.$i); - $VatOption = $this->input->post('VatOption'.$i); - $VatValue = $this->input->post('VatVal'.$i); - $AfterVatValue = $this->input->post('AfterVatVal'.$i); - $CSTOption = $this->input->post('CSTOption'.$i); - $CSTValue = $this->input->post('CSTVal'.$i); - $AfterCSTValue = $this->input->post('AfterCSTVal'.$i); - $GSTValue = $this->input->post('GSTVal'.$i); - $AfterGSTValue = $this->input->post('AfterGSTVal'.$i); - $OtherTaxValue = $this->input->post('OtherTaxVal'.$i); - $AfterOtherTaxValue = $this->input->post('AfterOtherTaxVal'.$i); - $FreightType = $this->input->post('FreightType'.$i); - $FreightValue = $this->input->post('FreightVal'.$i); - $AfterFreightValue = $this->input->post('AfterFreightVal'.$i); - $InsuranceValue = $this->input->post('Insval'.$i); - $TotalOrderValue = $this->input->post('TotalOrderValue'.$i); - $CostCenter = $this->input->post('costCode'.$i); - - $SkipInsert = "False"; - if( count($comma_separated) > 0) - { - for($j = 1; $j < count($comma_separated); $j++) - { - $deletedRow = $comma_separated[$j] ; - - if($deletedRow == $i ) - { - $SkipInsert = "True"; - break; - } - - } - } - if($SkipInsert == "False") - { - $POLineItemList = array('PONO'=>$PONO, 'ReqNo'=>$Reqnumber,'MaterialCode'=>$MaterialCode,'Quantity'=>$Quantity,'Rate'=>$itemRate,'Status'=>$LineItemStatus,'CreatedBy'=>$CreateBy,'CreatedDate'=>$createddt,'CostCenterCode'=>$CostCenter); - - $POLineItem = $this->purchaseorder_model->addPOLineItem($POLineItemList); - - $LineItemNo = ''; - if(count($POLineItem)>0) - { - $LineItemNo = $POLineItem[0]['LineItemNo']; - } - //echo $LineItemNo; - - if(trim($POType) == REVENUE ) - { - // echo 'Success'; - $RevenueTaxList = array('LineItemNo'=>$LineItemNo, 'DiscountType'=>$DiscountType,'DiscountValue'=>$DiscountValue,'AfterDiscount'=>$AfterDiscount,'PackagingType'=>$PackagingType,'PackagingValue'=>$PackagingValue,'PackagingCalulatedOn'=>$PackagingOption,'AfterPackagingValue'=>$AfterPackagingValue,'FreightType'=>$FreightType, 'FreightValue'=>$FreightValue,'AfterFreightValue'=>$AfterFreightValue,'ExciseDuty'=>$ExciseValue,'ExciseDutyCalulatedOn'=>$ExciseOption,'AfterExciseDuty'=>$AfterExciseValue,'Vat'=>$VatValue,'AfterVAT'=>$AfterVatValue,'VatCalulatedOn'=>$VatOption, 'CST'=>$CSTValue,'AfterCST'=>$AfterCSTValue,'CSTCalulatedOn'=>$CSTOption,'GST'=>$GSTValue,'AfterGST'=>$AfterGSTValue,'OtherTaxes'=>$OtherTaxValue,'AfterOtherTaxes'=>$AfterOtherTaxValue,'Insurance'=>$InsuranceValue,'TotalValue'=>$TotalOrderValue, 'CreatedBy'=>$CreateBy,'CreatedDate'=>$createddt); - - $RevenueList = $this->purchaseorder_model->addRevenueTax($RevenueTaxList); - //echo 'Revenue tax Success'; - } - } - - } - echo 'Purchase Order Created Successfully! PO Number Is: '.$PONO ; - - } - //This used to Edit the Revenue Purchase Order - function EditRevenuePurchaseOrder() - { - $PONO =$this->input->post('txtPONO'); - $POdt =$this->input->post('PODate'); - $PODate = $this->getDateformat($POdt); - $SupplierID = $this->input->post('drpSupplier'); - $DeliveryAddr = $this->input->post('txtDeliveryAddress'); - $dt = $this->input->post('Deliverydt'); - $Deliverydt = $this->getDateformat($dt); - $POType = $this->input->post('POType'); - $PoRange = $this->input->post('txtPoRange'); - - $SpcialInstruction = $this->input->post('SpcialInstruction'); - $TotalOrderValueSummary = $this->input->post('txtTotalOrderValueSummary'); - $POStatus = $this->input->post('txtStatus'); - - $updatedBy = $this->session->userdata ( 'userId' ); - $RowCount = $this->input->post('txtRowCount'); - $DeletedRow = $this->input->post('txtDeletedRow'); - - $comma_separated = explode(':', $DeletedRow); - $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); - $updateddt = $dt->format('Y-m-d H:i:s'); - // PO Master - // PO Master - $POList = array('SupplierID'=>$SupplierID, 'TotalOrderValue'=>$TotalOrderValueSummary,'PODate'=>$PODate,'Status'=>$POStatus,'ServiceDescription'=>$SpcialInstruction,'UpdateBY'=>$updatedBy,'DeliveryAddress'=>$DeliveryAddr,'DeliveryDate'=>$Deliverydt,'UpdatedOn'=>$updateddt ); - - $POMaster = $this->purchaseorder_model->updatePOMaster($PONO,$POList); - - $LineItemStatus = REQITEM_NEW; - - - - //echo $RowCount; - for ($i = 1; $i <= $RowCount; $i++) - { - - $MaterialCode = $this->input->post('materialCode'.$i); - $Quantity = $this->input->post('quantity'.$i); - $Reqnumber = $this->input->post('Reqnumber'.$i); - $itemRate = $this->input->post('itemRate'.$i); - - $DiscountType = $this->input->post('DisType'.$i); - $DiscountValue = $this->input->post('DisVal'.$i); - $AfterDiscount = $this->input->post('AfterDisVal'.$i); - $PackagingOption = $this->input->post('PackOption'.$i); - $PackagingType = $this->input->post('PackType'.$i); - $PackagingValue = $this->input->post('PackVal'.$i); - $AfterPackagingValue = $this->input->post('AfterPackVal'.$i); - $ExciseOption = $this->input->post('ExciseOption'.$i); - $ExciseValue = $this->input->post('ExciseVal'.$i); - $AfterExciseValue = $this->input->post('AfterExciseVal'.$i); - $VatOption = $this->input->post('VatOption'.$i); - $VatValue = $this->input->post('VatVal'.$i); - $AfterVatValue = $this->input->post('AfterVatVal'.$i); - $CSTOption = $this->input->post('CSTOption'.$i); - $CSTValue = $this->input->post('CSTVal'.$i); - $AfterCSTValue = $this->input->post('AfterCSTVal'.$i); - $GSTValue = $this->input->post('GSTVal'.$i); - $AfterGSTValue = $this->input->post('AfterGSTVal'.$i); - $OtherTaxValue = $this->input->post('OtherTaxVal'.$i); - $AfterOtherTaxValue = $this->input->post('AfterOtherTaxVal'.$i); - $FreightType = $this->input->post('FreightType'.$i); - $FreightValue = $this->input->post('FreightVal'.$i); - $AfterFreightValue = $this->input->post('AfterFreightVal'.$i); - $InsuranceValue = $this->input->post('Insval'.$i); - $TotalOrderValue = $this->input->post('TotalOrderValue'.$i); - $POLineItemNo = $this->input->post('LineItemNo'.$i); - $CostCenter = $this->input->post('costCode'.$i); - $LineItemNo = ''; - - - $SkipInsert = "False"; - if( count($comma_separated) > 0) - { - for($j = 1; $j < count($comma_separated); $j++) - { - $deletedRow = $comma_separated[$j] ; - - if($deletedRow == $i ) - { - $SkipInsert = "True"; - break; - } - - } - } - if($SkipInsert == "False") - { - if(strlen($POLineItemNo) == 0) - { - $POLineItemList = array('PONO'=>$PONO, 'ReqNo'=>$Reqnumber,'MaterialCode'=>$MaterialCode,'Quantity'=>$Quantity,'Rate'=>$itemRate,'Status'=>$LineItemStatus,'CreatedBy'=>$updatedBy,'CreatedDate'=>$updateddt,'CostCenterCode'=>$CostCenter); - $POLineItem = $this->purchaseorder_model->addPOLineItem($POLineItemList); - if(count($POLineItem)>0) - { - $LineItemNo = $POLineItem[0]['LineItemNo']; - } - - } - else - { - $LineItemNo = $POLineItemNo; - - $POLineItemList = array('PONO'=>$PONO, 'ReqNo'=>$Reqnumber,'MaterialCode'=>$MaterialCode,'Quantity'=>$Quantity,'Rate'=>$itemRate,'Status'=>$LineItemStatus,'UpdateBY'=>$updatedBy,'UpdatedOn'=>$updateddt,'CostCenterCode'=>$CostCenter); - $POLineItem = $this->purchaseorder_model->updatePOLineItem($PONO,$POLineItemNo,$POLineItemList); - - } - $isExists = $this->purchaseorder_model->LineItemExistsinRevenueTax($LineItemNo); - if(count($isExists) == 0) - { - $RevenueTaxList = array('LineItemNo'=>$LineItemNo, 'DiscountType'=>$DiscountType,'DiscountValue'=>$DiscountValue,'AfterDiscount'=>$AfterDiscount,'PackagingType'=>$PackagingType,'PackagingValue'=>$PackagingValue,'PackagingCalulatedOn'=>$PackagingOption,'AfterPackagingValue'=>$AfterPackagingValue,'FreightType'=>$FreightType, 'FreightValue'=>$FreightValue,'AfterFreightValue'=>$AfterFreightValue,'ExciseDuty'=>$ExciseValue,'ExciseDutyCalulatedOn'=>$ExciseOption,'AfterExciseDuty'=>$AfterExciseValue,'Vat'=>$VatValue,'AfterVAT'=>$AfterVatValue,'VatCalulatedOn'=>$VatOption, 'CST'=>$CSTValue,'AfterCST'=>$AfterCSTValue,'CSTCalulatedOn'=>$CSTOption,'GST'=>$GSTValue,'AfterGST'=>$AfterGSTValue,'OtherTaxes'=>$OtherTaxValue,'AfterOtherTaxes'=>$AfterOtherTaxValue,'Insurance'=>$InsuranceValue,'TotalValue'=>$TotalOrderValue, 'CreatedBy'=>$updatedBy,'CreatedDate'=>$updateddt); - - $RevenueList = $this->purchaseorder_model->addRevenueTax($RevenueTaxList); - - } - else - { - $RevenueTaxList = array('DiscountType'=>$DiscountType,'DiscountValue'=>$DiscountValue,'AfterDiscount'=>$AfterDiscount,'PackagingType'=>$PackagingType,'PackagingValue'=>$PackagingValue,'PackagingCalulatedOn'=>$PackagingOption,'AfterPackagingValue'=>$AfterPackagingValue,'FreightType'=>$FreightType, 'FreightValue'=>$FreightValue,'AfterFreightValue'=>$AfterFreightValue,'ExciseDuty'=>$ExciseValue,'ExciseDutyCalulatedOn'=>$ExciseOption,'AfterExciseDuty'=>$AfterExciseValue,'Vat'=>$VatValue,'AfterVAT'=>$AfterVatValue,'VatCalulatedOn'=>$VatOption, 'CST'=>$CSTValue,'AfterCST'=>$AfterCSTValue,'CSTCalulatedOn'=>$CSTOption,'GST'=>$GSTValue,'AfterGST'=>$AfterGSTValue,'OtherTaxes'=>$OtherTaxValue,'AfterOtherTaxes'=>$AfterOtherTaxValue,'Insurance'=>$InsuranceValue,'TotalValue'=>$TotalOrderValue, 'UpdateBY'=>$updatedBy,'UpdatedOn'=>$updateddt); - - $this->purchaseorder_model->updateRevenueTax($LineItemNo,$RevenueTaxList); - - } - } - - } - - echo 'Purchase Order Updated Successfully! PO Number Is: '.$PONO ; - } - function pageNotFound() - { - $this->global['pageTitle'] = 'CodeInsect : 404 - Page Not Found'; - - $this->loadViews("404", $this->global, NULL, NULL); - } - - public function revenuepoprint($PONO) - { - // Load all views as normal - - - //$PONO = $_GET['PO']; - - $data['CompanyDetails'] = $this->purchaseorder_model->getCompanyInformation(); - $data['POItem'] = $this->purchaseorder_model->GetRevenuePurchaseOrderDetailsForPDF($PONO); - - - // Add header to pdf - //$this->load->view('includes/pdfheader'); - - // Load the pdf page with multiviews - $this->load->View("revenuepopdf", $data); - - // Add header to pdf - //$this->load->view('includes/pdffooter'); - - // Get output html - $php = $this->output->get_output(); - - // Load library - $this->load->library('dompdf_gen'); - - // Convert to PDF - $this->dompdf->load_html($php); - $this->dompdf->render(); - $data['Attachment'] = FALSE; - $this->dompdf->stream("RevenuePOReport.pdf",$data,$php); - - } - public function servicepoprint($PONO) - { - - // $this->load->view('includes/pdfheader'); - - // Load the pdf page with multiviews - $data['CompanyDetails'] = $this->purchaseorder_model->getCompanyInformation(); - $data['POItem'] = $this->purchaseorder_model->GetServicePurchaseOrderDetailsForPrint($PONO); - - $this->load->View("servicepopdf", $data); - - // Add header to pdf - //$this->load->view('includes/pdffooter'); - - // Get output html - $php = $this->output->get_output(); - - // Load library - $this->load->library('dompdf_gen'); - - // Convert to PDF - $this->dompdf->load_html($php); - $this->dompdf->render(); - $data['Attachment'] = FALSE; - $this->dompdf->stream("ServicePOReport.pdf",$data,$php); - - } - /** - * This function used to load the Delete the Requistion Items - */ - function DeletePODetails() - { - - $ReqList= $this->input->post('id'); - $LineItemNo = ''; - $ReqNo =''; - $MaterialCode = ''; - $POType = ''; - if(count($ReqList) > 0) - { - $LineItemNo = $ReqList[0]; - $ReqNo = $ReqList[1]; - $MaterialCode = $ReqList[2]; - $POType = $ReqList[3]; - } - // print_r($ReqList); - - - If($POType == REVENUE) - { - $this->purchaseorder_model->DeletePORevenueTax($LineItemNo); - } - else If($POType == SERVICE) - { - $this->purchaseorder_model->DeletePOServiceTax($LineItemNo); - } - $this->purchaseorder_model->DeletePOLineItem($LineItemNo , $ReqNo,$MaterialCode); - echo "Successfully Deleted the Line item".$LineItemNo; - - } -} - -?> diff --git a/application/controllers/employeedetails.php b/application/controllers/employeedetails.php deleted file mode 100644 index 4f21e960..00000000 --- a/application/controllers/employeedetails.php +++ /dev/null @@ -1,755 +0,0 @@ -load->model('employeedetails_model'); - $this->isLoggedIn(); - } - /** - * This function used to load the first screen of the user - */ - public function index() - { - $this->global['pageTitle'] = 'Siddharth : Employee Details'; - - $this->loadViews("employeeListing", $this->global, NULL , NULL); - } - - /** - * This function is used to load the Employee details - */ - function employeeListing() - { - if($this->isAdmin() == TRUE) - { - $this->loadThis(); - } - else - { - - $this->load->model('employeedetails_model'); - - - $data['userRecords'] = $this->employeedetails_model->employeeListing(); - - $this->global['pageTitle'] = 'Siddharth : Employee Listing'; - - $this->loadViews("employeeListing", $this->global, $data, NULL); - } - } - /* - Validation for Gender status Dropdown - */ - function Gender_validate($selectValue) -{ - //echo 'select_validate method called'; - // 'none' is the first option and the text says something like "-Choose one-" - if($selectValue == '-1') - { - $this->form_validation->set_message('Gender_validate', 'Please Select Gender.'); - return false; - } - else // user picked something - { - return true; - } -} -/* - Validation for Martial status Dropdown - */ - function Martial_validate($selectValue) -{ - //echo 'select_validate method called'; - // 'none' is the first option and the text says something like "-Choose one-" - if($selectValue == '-1') - { - $this->form_validation->set_message('Martial_validate', 'Please Select Martial status.'); - return false; - } - else // user picked something - { - return true; - } -} -/* - Validation for BloodGroup Dropdown - */ - function Blood_validate($selectValue) -{ - //echo 'select_validate method called'; - // 'none' is the first option and the text says something like "-Choose one-" - if($selectValue == '-1') - { - $this->form_validation->set_message('Blood_validate', 'Please Select Blood Group.'); - return false; - } - else // user picked something - { - return true; - } -} - /* - Validation for Qualification Dropdown - */ - function select_validate($selectValue) -{ - //echo 'select_validate method called'; - // 'none' is the first option and the text says something like "-Choose one-" - if($selectValue == '-1') - { - $this->form_validation->set_message('select_validate', 'Please Select Educational Qualification.'); - return false; - } - else // user picked something - { - return true; - } -} -/* - Validation for Department Dropdown - */ - function Dep_validate($selectValue) -{ - //echo 'select_validate method called'; - // 'none' is the first option and the text says something like "-Choose one-" - if($selectValue == '-1') - { - $this->form_validation->set_message('Dep_validate', 'Please Select Department.'); - return false; - } - else // user picked something - { - return true; - } -} -/* - Validation for Desigination Dropdown - */ - function Des_validate($selectValue) -{ - //echo 'select_validate method called'; - // 'none' is the first option and the text says something like "-Choose one-" - if($selectValue == '-1') - { - $this->form_validation->set_message('Des_validate', 'Please Select Desigination.'); - return false; - } - else // user picked something - { - return true; - } -} - /** - * This function is used to save the new Employee form in the database - */ - - function AddNewEmployee() - { - if($this->isAdmin() == TRUE) - { - $this->loadThis(); - } - else - { - $this->load->library('form_validation'); - - $this->form_validation->set_rules('ContactNumber', 'ContactNumber', 'trim|required|min_length[10]|max_length[10]'); - $this->form_validation->set_rules('emailid', 'emailid', 'trim|required|valid_email'); - $this->form_validation->set_rules('gender', 'gender', 'callback_Gender_validate'); - $this->form_validation->set_rules('MartialStatus', 'MartialStatus', 'callback_Martial_validate'); - - $this->form_validation->set_rules('bloodgroup', 'bloodgroup', 'callback_Blood_validate'); - - $this->form_validation->set_rules('emergencycontactnumber', 'emergencycontactnumber', 'trim|required|min_length[10]|max_length[10]'); - - $this->form_validation->set_rules('desigination', 'Desigination', 'callback_Des_validate'); - $this->form_validation->set_rules('departmentname', 'departmentname', 'callback_Dep_validate'); - $this->form_validation->set_rules('eduqualifaction', 'eduqualifaction', 'callback_select_validate'); - $this->form_validation->set_rules('referrercontno', 'referrercontno', 'trim|min_length[10]|max_length[10]'); - $this->form_validation->set_rules('aadharno', 'aadharno', 'trim|min_length[12]|max_length[12]'); - $this->form_validation->set_rules('panno', 'panno', 'trim|min_length[10]|max_length[10]'); - $this->form_validation->set_rules('passportno', 'passportno', 'trim|min_length[8]|max_length[8]'); - $this->form_validation->set_rules('accountno', 'accountno', 'trim|min_length[10]|max_length[20]'); - - - if($this->form_validation->run() == FALSE) - { - $this->addemployee(); - //echo 'Validate method called'; - } - else - { - //echo 'Validate not method called'; - $Picture = $this->add(); - - $FirstName = $this->input->post('FirstName'); - $LastName = $this->input->post('LastName'); - $FatherName = $this->input->post('FatherName'); - $DateofBirth = $this->input->post('DateofBirth'); - $ContactNumber = $this->input->post('ContactNumber'); - $EmailId = $this->input->post('emailid'); - $Gender = $this->input->post('gender'); - $MartialStatus = $this->input->post('MartialStatus'); - - $BloodGroup = $this->input->post('bloodgroup'); - $CurrentAddress = $this->input->post('currentaddress'); - $permanentaddress = $this->input->post('permanentaddress'); - $emergencycontactname = $this->input->post('emergencycontactname'); - $emergencycontactnumber = $this->input->post('emergencycontactnumber'); - $desigination = $this->input->post('desigination'); - $departmentCode = $this->input->post('departmentname'); - $dateofjoining = $this->input->post('dateofjoining'); - $Previousexperience = $this->input->post('Previousexperience'); - $eduqualifaction = $this->input->post('eduqualifaction'); - $addqualification = $this->input->post('addqualification'); - $referredby = $this->input->post('referredby'); - $referrercontno = $this->input->post('referrercontno'); - $accountno = $this->input->post('accountno'); - $ifsccode = $this->input->post('ifsccode'); - $bankbranchname = $this->input->post('bankbranchname'); - $bankaddress = $this->input->post('bankaddress'); - $aadharno = $this->input->post('aadharno'); - $panno = $this->input->post('panno'); - $passportno = $this->input->post('passportno'); - $ValidTill = $this->input->post('ValidTill'); - $addinfo = $this->input->post('addinfo'); - $IsActive = '1'; - $createdby = $this->session->userdata ( 'userId' ); - - - $DOB = $this->getDateformat($DateofBirth); - $DOJ = $this->getDateformat($dateofjoining); - if($ValidTill != '') - { - $Valid = $this->getDateformat($ValidTill); - } - else - { - $Valid = null; - } - - //echo $DOB; - $Employee = array('FirstName'=>$FirstName, 'LastName'=>$LastName,'FatherName'=>$FatherName,'Gender'=>$Gender,'DateofBirth'=>$DOB,'ContactNumber'=>$ContactNumber,'EmailId'=>$EmailId,'BloodGroup'=>$BloodGroup,'MartialStatus'=>$MartialStatus,'DateofJoining'=>$DOJ,'PreviousYearsOfExp'=>$Previousexperience,'Designation'=>$desigination,'Departmentcode'=>$departmentCode,'PresentAddress'=>$CurrentAddress,'PermanentAddress'=>$permanentaddress,'EmergencyContactName'=>$emergencycontactname,'EmergencyContactNumber'=>$emergencycontactnumber,'Edu_Qualification'=>$eduqualifaction,'Additional_Qualification'=>$addqualification,'AadharNo'=>$aadharno,'PANNo'=>$panno,'BankAccountNo'=>$accountno,'IFSCCode'=>$ifsccode,'BankBranchName'=>$bankbranchname,'BankAddress'=>$bankaddress,'PassportNo'=>$passportno,'Passport_Valid_till'=>$Valid,'IsActive'=>$IsActive,'ProfilePic'=>$Picture,'Reference_Name'=>$referredby,'Reference_ContactNumber'=>$referrercontno,'Remarks'=>$addinfo,'CreatedBy'=>$createdby); - - $this->load->model('employeedetails_model'); - $result = $this->employeedetails_model->addNewemployee($Employee); - - if($result > 0) - { - - // $this->session->set_flashdata('Success', 'New Employee created successfully!'); - redirect('employeeListing','refresh'); -echo ""; - } - else - { - - $this->session->set_flashdata('Error', 'New Employee details not saved'); - redirect('employeeListing','refresh'); -echo ""; - } - - } - } - } - - function getDateformat($Val) - { - $date = new DateTime($Val); - $retDate = $date->format('Y-m-d H:i:s'); - return $retDate; - } - - /** - * This function is used to load the add new Employee form with dropdown values */ - function addemployee() - { - if($this->isAdmin() == TRUE) - { - $this->loadThis(); - } - else - { - $this->load->model('employeedetails_model'); - $GenderConfigID = 'C013'; - $MartialConfigID = 'C012'; - $QualificationConfigID = 'C014'; - $DesignationConfigID = 'C010'; - $BloodGroupConfigID = 'C011'; - - $data['Gender'] = $this->employeedetails_model->getConfigValue($GenderConfigID); - $data['Martial'] = $this->employeedetails_model->getConfigValue($MartialConfigID); - $data['Qualification'] = $this->employeedetails_model->getConfigValue($QualificationConfigID); - $data['Designation'] = $this->employeedetails_model->getConfigValue($DesignationConfigID); - $data['BloodGroup'] = $this->employeedetails_model->getConfigValue($BloodGroupConfigID); - - $data['Department'] = $this->employeedetails_model->getDepartment(); - $this->global['pageTitle'] = 'Siddharth : Add New Employee'; - $this->loadViews("addemployee", $this->global, $data, NULL); - } - } - /** - * This function is used to check whether the Employee is existing in the database or not */ - function CheckEmail() - { - $id = $this->input->post('id'); - $this->load->model('employeedetails_model'); - $query = $this->employeedetails_model->checkMailExists($id ); - - $query = $query[0]['EmailId']; - print_r($query); - - } - - function pageNotFound() - { - $this->global['pageTitle'] = 'CodeInsect : 404 - Page Not Found'; - - $this->loadViews("404", $this->global, NULL, NULL); - } - - function add(){ - - - $picture = ''; - //Check whether user upload picture - if(!empty($_FILES['photo']['name'])) - { - - $config['upload_path'] = 'uploads/images/'; - $config['allowed_types'] = 'jpg|jpeg|png|gif'; - $config['file_name'] = $_FILES['photo']['name']; - - //Load upload library and initialize configuration - $this->load->library('upload',$config); - $this->upload->initialize($config); - - if($this->upload->do_upload('photo')) - { - $uploadData = $this->upload->data(); - $picture = $uploadData['file_name']; - } - else - { - $error = array('error' => $this->upload->display_errors()); - $picture = ''; - } - } - else - { - $picture = ''; - } - - return $picture ; - } - - function ViewEmployee($EmpNO='') - { - if($this->isAdmin() == TRUE) - { - $this->loadThis(); - } - else - { - if($EmpNO == '') - { - $EmpID = $_GET['EmpID']; - } - else - { - - $EmpID = $EmpNO; } - - $GenderConfigID = 'C013'; - $MartialConfigID = 'C012'; - $QualificationConfigID = 'C014'; - $DesignationConfigID = 'C010'; - $BloodGroupConfigID = 'C011'; - $this->load->model('employeedetails_model'); - $data['GenderList'] = $this->employeedetails_model->getConfigValue($GenderConfigID); - $data['MartialList'] = $this->employeedetails_model->getConfigValue($MartialConfigID); - $data['QualificationList'] = $this->employeedetails_model->getConfigValue($QualificationConfigID); - $data['DesignationList'] = $this->employeedetails_model->getConfigValue($DesignationConfigID); - $data['BloodGroupList'] = $this->employeedetails_model->getConfigValue($BloodGroupConfigID); - - $data['DepartmentList'] = $this->employeedetails_model->getDepartment(); - $data['EmpDetails'] = $this->employeedetails_model->viewemployee($EmpID); - $this->global['pageTitle'] = 'Siddharth : View Employee'; - - $this->loadViews("editEmployee", $this->global, $data, NULL); - - } - } - /* To Check the email exists in the database or not for the employee*/ - function checkMailEmp() - { - $Empid = $this->input->post('employeeid'); - $EmailId = $this->input->post('emailid'); - - $this->load->model('employeedetails_model'); - $query = $this->employeedetails_model->checkMailExists($EmailId, $Empid); - if (count($query)> 0) - { - $this->form_validation->set_message('checkMailEmp', 'The Entered Email id is exists in the Database.'); - return false; - } - else - { - return true; - } - } - /* To Update the employee details*/ - function UpdateEmployee() - { - if($this->isAdmin() == TRUE) - { - $this->loadThis(); - } - else - { - $EmpId = $this->input->post('employeeid'); - $this->load->library('form_validation'); - - $this->form_validation->set_rules('ContactNumber', 'ContactNumber', 'trim|required|min_length[10]|max_length[10]'); - $this->form_validation->set_rules('emailid', 'emailid', 'trim|required|valid_email|callback_checkMailEmp'); - $this->form_validation->set_rules('gender', 'gender', 'callback_Gender_validate'); - $this->form_validation->set_rules('MartialStatus', 'MartialStatus', 'callback_Martial_validate'); - - $this->form_validation->set_rules('bloodgroup', 'bloodgroup', 'callback_Blood_validate'); - - $this->form_validation->set_rules('emergencycontactnumber', 'emergencycontactnumber', 'trim|required|min_length[10]|max_length[10]'); - - $this->form_validation->set_rules('desigination', 'Desigination', 'callback_Des_validate'); - $this->form_validation->set_rules('departmentname', 'departmentname', 'callback_Dep_validate'); - $this->form_validation->set_rules('eduqualifaction', 'eduqualifaction', 'callback_select_validate'); - $this->form_validation->set_rules('referrercontno', 'referrercontno', 'trim|min_length[10]|max_length[10]'); - $this->form_validation->set_rules('aadharno', 'aadharno', 'trim|min_length[12]|max_length[12]'); - $this->form_validation->set_rules('panno', 'panno', 'trim|min_length[10]|max_length[10]'); - $this->form_validation->set_rules('passportno', 'passportno', 'trim|min_length[8]|max_length[8]'); - $this->form_validation->set_rules('accountno', 'accountno', 'trim|min_length[10]|max_length[20]'); - - if($this->form_validation->run() == FALSE) - { - $this->ViewEmployee($EmpId); - - } - else - { - - $this->load->model('employeedetails_model'); - $EmpId = $this->input->post('employeeid'); - $PictureName = $this->input->post('Image'); - - if ($PictureName != '') - { - //echo 'Exists'; - $Picture = $PictureName; - } - else - { - //echo 'Not Exists'; - $Picture = $this->add(); - } - //echo $Picture; - - $FirstName = $this->input->post('FirstName'); - $LastName = $this->input->post('LastName'); - $FatherName = $this->input->post('FatherName'); - $DateofBirth = $this->input->post('DateofBirth'); - $ContactNumber = $this->input->post('ContactNumber'); - $EmailId = $this->input->post('emailid'); - $Gender = $this->input->post('gender'); - $MartialStatus = $this->input->post('MartialStatus'); - $BloodGroup = $this->input->post('bloodgroup'); - $CurrentAddress = $this->input->post('currentaddress'); - $permanentaddress = $this->input->post('permanentaddress'); - $emergencycontactname = $this->input->post('emergencycontactname'); - $emergencycontactnumber = $this->input->post('emergencycontactnumber'); - $desigination = $this->input->post('desigination'); - $departmentCode = $this->input->post('departmentname'); - $dateofjoining = $this->input->post('dateofjoining'); - $Previousexperience = $this->input->post('Previousexperience'); - $eduqualifaction = $this->input->post('eduqualifaction'); - $addqualification = $this->input->post('addqualification'); - $referredby = $this->input->post('referredby'); - $referrercontno = $this->input->post('referrercontno'); - $accountno = $this->input->post('accountno'); - $ifsccode = $this->input->post('ifsccode'); - $bankbranchname = $this->input->post('bankbranchname'); - $bankaddress = $this->input->post('bankaddress'); - $aadharno = $this->input->post('aadharno'); - $panno = $this->input->post('panno'); - $passportno = $this->input->post('passportno'); - $ValidTill = $this->input->post('ValidTill'); - $addinfo = $this->input->post('addinfo'); - - $chked = $this->input->post('isactive'); - // echo 'chkvalue'. $chked ; - if( $chked != '') - { - $IsActive = '1'; - } - else - { - $IsActive = '0'; - } - // echo 'chkvalue'. $IsActive ; - $UpdatedBY = $this->session->userdata ( 'userId' ); - - - $DOB = $this->getDateformat($DateofBirth); - $DOJ = $this->getDateformat($dateofjoining); - if($ValidTill != '') - { - $Valid = $this->getDateformat($ValidTill); - } - else - { - $Valid = null; - } - - //echo $DOB; - $Employee = array('FirstName'=>$FirstName, 'LastName'=>$LastName,'FatherName'=>$FatherName,'Gender'=>$Gender,'DateofBirth'=>$DOB,'ContactNumber'=>$ContactNumber,'EmailId'=>$EmailId,'BloodGroup'=>$BloodGroup,'MartialStatus'=>$MartialStatus,'DateofJoining'=>$DOJ,'PreviousYearsOfExp'=>$Previousexperience,'Designation'=>$desigination,'Departmentcode'=>$departmentCode,'PresentAddress'=>$CurrentAddress,'PermanentAddress'=>$permanentaddress,'EmergencyContactName'=>$emergencycontactname,'EmergencyContactNumber'=>$emergencycontactnumber,'Edu_Qualification'=>$eduqualifaction,'Additional_Qualification'=>$addqualification,'AadharNo'=>$aadharno,'PANNo'=>$panno,'BankAccountNo'=>$accountno,'IFSCCode'=>$ifsccode,'BankBranchName'=>$bankbranchname,'BankAddress'=>$bankaddress,'PassportNo'=>$passportno,'Passport_Valid_till'=>$Valid,'IsActive'=>$IsActive,'ProfilePic'=>$Picture,'Reference_Name'=>$referredby,'Reference_ContactNumber'=>$referrercontno,'Remarks'=>$addinfo,'UpdatedBY'=>$UpdatedBY); - - - $result = $this->employeedetails_model->UpdateEmployee($Employee,$EmpId); - - if($result > 0) - { - - // $this->session->set_flashdata('Success', $EmpId.'Employee Updated successfully!'); - redirect('employeeListing','refresh'); -echo ""; - } - else - { - - $this->session->set_flashdata('Error', $EmpId.'Employee details not saved'); - redirect('employeeListing','refresh'); -echo ""; - } - - // redirect('employeeListing'); - } - } - } - - /** this function can be use for excel report **/ - - function export_employee(){ - - - $this->load->library('excel'); - $this->excel->setActiveSheetIndex(0)->mergeCells('L3:S3'); - - $this->excel->getActiveSheet()->setTitle('Employee details'); - - $this->excel->getActiveSheet()->setCellValue('L3', 'SIDDHARTH INDUSTRIES Employee Details'); - $this->excel->getActiveSheet()->setCellValue('A5', 'EmpID'); - $this->excel->getActiveSheet()->setCellValue('B5', 'FirstName-LastName'); - $this->excel->getActiveSheet()->setCellValue('c5', 'FatherName'); - $this->excel->getActiveSheet()->setCellValue('d5', 'Gender'); - $this->excel->getActiveSheet()->setCellValue('E5', 'ContactNumber'); - $this->excel->getActiveSheet()->setCellValue('F5', 'EmailId'); - $this->excel->getActiveSheet()->setCellValue('G5', 'BloodGroup'); - $this->excel->getActiveSheet()->setCellValue('H5', 'MartialStatus'); - $this->excel->getActiveSheet()->setCellValue('I5', 'DateofJoining'); - $this->excel->getActiveSheet()->setCellValue('J5', 'PreviousYearsOfExp'); - $this->excel->getActiveSheet()->setCellValue('K5', 'Designation'); - $this->excel->getActiveSheet()->setCellValue('L5', 'Departmentcode'); - $this->excel->getActiveSheet()->setCellValue('M5', 'PresentAddress'); - $this->excel->getActiveSheet()->setCellValue('N5', 'PermanentAddress'); - $this->excel->getActiveSheet()->setCellValue('O5', 'EmergencyContactName'); - $this->excel->getActiveSheet()->setCellValue('P5', 'EmergencyContactNumber'); - $this->excel->getActiveSheet()->setCellValue('Q5', 'Edu_Qualification'); - $this->excel->getActiveSheet()->setCellValue('R5', 'Additional_Qualification'); - $this->excel->getActiveSheet()->setCellValue('S5', 'AadharNo'); - $this->excel->getActiveSheet()->setCellValue('T5', 'PANNo'); - $this->excel->getActiveSheet()->setCellValue('U5', 'BankStatemant'); - $this->excel->getActiveSheet()->setCellValue('V5', 'PassportNo'); - $this->excel->getActiveSheet()->setCellValue('W5', 'Passport_Valid_till'); - $this->excel->getActiveSheet()->setCellValue('X5', 'IsActive'); - $this->excel->getActiveSheet()->setCellValue('Y5', 'Reference_Name'); - $this->excel->getActiveSheet()->setCellValue('Z5', 'Reference_ContactNumber'); - $this->excel->getActiveSheet()->setCellValue('AA5', 'PFNO'); - $this->excel->getActiveSheet()->setCellValue('AB5', 'ESI'); - $this->excel->getActiveSheet()->setCellValue('AC5', 'UANO'); - $this->excel->getActiveSheet()->setCellValue('AD5', 'Remarks'); - $this->excel->getActiveSheet()->setCellValue('AE5', 'Reference_Name'); - $this->excel->getActiveSheet()->setCellValue('AF5', 'Reference_Name'); - $this->excel->getActiveSheet()->setCellValue('AG5', 'CreatedBy'); - $this->excel->getActiveSheet()->setCellValue('AH5', 'UpdatedBY'); - $this->excel->getActiveSheet()->setCellValue('AI5', 'PF_Balance'); - $this->excel->getActiveSheet()->setCellValue('AJ5', 'PF_Bal_On'); - - - - - - - - - - - - $this->excel->getActiveSheet()->getStyle('L3')->getFont()->setSize(14); - $this->excel->getActiveSheet()->getStyle('L3')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('A5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('A5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('B5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('B5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('C5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('C5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('D5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('D5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('E5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('E5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('F5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('F5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('G5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('G5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('H5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('H5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('I5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('I5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('J5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('J5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('K5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('K5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('L5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('L5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('M5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('M5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('N5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('N5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('O5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('O5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('P5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('P5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('P5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('Q5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('Q5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('R5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('R5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('S5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('S5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('T5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('T5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('U5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('U5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('V5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('V5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('W5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('W5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('X5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('Y5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('Y5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('Z5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('Z5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('AA5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('AA5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('AB5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('AB5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('AC5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('AC5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('AD5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('AD5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('AE5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('AE5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('AF5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('AF5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('AG5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('AG5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('AH5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('AH5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('AI5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('AI5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('AJ5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('AJ5')->getFont()->setBold(true); - - - - - $exportData = $this->employeedetails_model->export_excel(); - - if ($exportData) { - $i = 6; - $s = 1; - foreach ($exportData as $data) { - - - $this->excel->getActiveSheet()->setCellValue('A'. $i,$data['EmpID']); - $this->excel->getActiveSheet()->setCellValue('B'. $i,$data['FirstName'].'-'.$data['LastName']); - $this->excel->getActiveSheet()->setCellValue('C'. $i,$data['FatherName']); - $this->excel->getActiveSheet()->setCellValue('D'. $i,$data['Gender']); - $this->excel->getActiveSheet()->setCellValue('E'. $i,$data['ContactNumber']); - $this->excel->getActiveSheet()->setCellValue('F'. $i,$data['EmailId']); - $this->excel->getActiveSheet()->setCellValue('G'. $i,$data['BloodGroup']); - $this->excel->getActiveSheet()->setCellValue('H'. $i,$data['MartialStatus']); - $this->excel->getActiveSheet()->setCellValue('I'. $i,$data['DateofJoining']); - $this->excel->getActiveSheet()->setCellValue('J'. $i,$data['PreviousYearsOfExp']); - $this->excel->getActiveSheet()->setCellValue('K'. $i,$data['Designation']); - $this->excel->getActiveSheet()->setCellValue('L'. $i,$data['Departmentcode']); - $this->excel->getActiveSheet()->setCellValue('M'. $i,$data['PresentAddress']); - $this->excel->getActiveSheet()->setCellValue('N'. $i,$data['PermanentAddress']); - $this->excel->getActiveSheet()->setCellValue('O'. $i,$data['EmergencyContactName']); - $this->excel->getActiveSheet()->setCellValue('P'. $i,$data['EmergencyContactNumber']); - $this->excel->getActiveSheet()->setCellValue('Q'. $i,$data['Edu_Qualification']); - $this->excel->getActiveSheet()->setCellValue('R'. $i,$data['Additional_Qualification']); - $this->excel->getActiveSheet()->setCellValue('S'. $i,$data['AadharNo']); - $this->excel->getActiveSheet()->setCellValue('T'. $i,$data['PANNo']); - $this->excel->getActiveSheet()->setCellValue('U'. $i,$data['BankAccountNo'].'-'.$data['IFSCCode'].'-'.$data['BankBranchName'].$data['BankAddress']); - $this->excel->getActiveSheet()->setCellValue('V'. $i,$data['PassportNo']); - $this->excel->getActiveSheet()->setCellValue('W'. $i,$data['Passport_Valid_till']); - $this->excel->getActiveSheet()->setCellValue('X'. $i,$data['IsActive']); - $this->excel->getActiveSheet()->setCellValue('Y'. $i,$data['Reference_Name']); - $this->excel->getActiveSheet()->setCellValue('Z'. $i,$data['Reference_ContactNumber']); - $this->excel->getActiveSheet()->setCellValue('AA'. $i,$data['PFNO']); - $this->excel->getActiveSheet()->setCellValue('AB'. $i,$data['ESI']); - $this->excel->getActiveSheet()->setCellValue('AC'. $i,$data['UANO']); - $this->excel->getActiveSheet()->setCellValue('AD'. $i,$data['Remarks']); - $this->excel->getActiveSheet()->setCellValue('AE'. $i,$data['Reference_Name']); - $this->excel->getActiveSheet()->setCellValue('AF'. $i,$data['Reference_Name']); - $this->excel->getActiveSheet()->setCellValue('AG'. $i,$data['firstname']); - $this->excel->getActiveSheet()->setCellValue('AH'. $i,$data['UpdatedBY']); - $this->excel->getActiveSheet()->setCellValue('AI'. $i,$data['PF_Balance']); - $this->excel->getActiveSheet()->setCellValue('AJ'. $i,$data['PF_Bal_On']); - - - - - $i++; - $s++; - } - } - - $filename = 'Employee_Details' .' '. '.xls'; //save our workbook as this file name - header('Content-Type: application/vnd.ms-excel'); //mime type - header('Content-Disposition: attachment;filename="' . $filename . '"'); //tell browser what's the file name - header('Cache-Control: max-age=0'); //no cache - $objWriter = PHPExcel_IOFactory::createWriter($this->excel, 'Excel5'); - if (ob_get_contents()) ob_end_clean(); - ob_start(); - $objWriter->save('php://output'); - - - } - -} - -?> \ No newline at end of file diff --git a/application/controllers/emppaydate.php b/application/controllers/emppaydate.php deleted file mode 100644 index a3487a97..00000000 --- a/application/controllers/emppaydate.php +++ /dev/null @@ -1,401 +0,0 @@ -load->model('emppaydate_model'); - $this->load->library('session'); - $this->load->library('form_validation'); - //$this->load->library('pagination'); - - $this->isLoggedIn(); - } - - /** - * This function used to load the first screen of the user - */ - public function index() - { - $this->global['pageTitle'] = 'Siddharth : Employee Pay Details'; - - $this->loadViews("emppayListing", $this->global); - } - - /** - * This function is used to load the payment list for a employee. - */ - function emppayListing() - { - - - $this->load->model('emppaydate_model'); - - $searchText = $this->input->post('searchText'); - $data['searchText'] = $searchText; - - $this->load->library('pagination'); - - $count = $this->emppaydate_model->emppayListingCount($searchText); - - $returns = $this->paginationCompress ( "emppayListing", $count ,5); - - $data['userRecords'] = $this->emppaydate_model->emppayListing($searchText, $returns["page"], $returns["segment"]); - - $this->global['pageTitle'] = 'Siddharth : Employee Pay List'; - - $this->loadViews("emppayListing", $this->global, $data, NULL); - } - - /** - * This function is used to load the add new payment for an employee. - */ - function addemppaydate() - { - $q="addemppaydate"; - $this->load->model('payroll_model'); - - $result['empdetails'] = $this->payroll_model->getEmpID($q); - - //$data['emp_id'] = $this->monthlypay_model->getmonthlypay(); - - $this->global['pageTitle'] = 'Siddharth : Add Employee Pay'; - - $this->loadViews("addemppaydate", $this->global,$result); - - } - - - function addNewemppay() - { - - - $this->load->library('form_validation'); - - $this->form_validation->set_rules('EmpID','EmpID','required'); - $this->form_validation->set_rules('Basic_Pay','Basic_Pay','trim|required'); - $this->form_validation->set_rules('HRA_Rate','HRA_Rate','trim|required'); - $this->form_validation->set_rules('OT_Rate','OT_Rate','trim|required'); - $this->form_validation->set_rules('Allowances','Allowances','trim|required'); - $this->form_validation->set_rules('PF_Rate','PF_Rate','trim|required'); - $this->form_validation->set_rules('ESI_Rate','ESI_Rate','trim|required'); - $this->form_validation->set_rules('Food_Allowances','Food_Allowances','requried'); - - - if($this->form_validation->run() == FALSE) - { - $this->addemppaydate(); - } - else - { - $Pay_Data_ID=$this->input->post('Pay_Data_ID'); - $EmpID = $this->input->post('EmpID'); - $Basic_Pay=$this->input->post('Basic_Pay'); - $HRA_Rate=$this->input->post('HRA_Rate'); - $OT_Rate=$this->input->post('OT_Rate'); - $Allowances=$this->input->post('Allowances'); - $PF_Rate=$this->input->post('PF_Rate'); - $ESI_Rate=$this->input->post('ESI_Rate'); - $Food_Allowances=$this->input->post('Food_Allowances'); - //$All = $this->input->post('All'); - - $CreateBy = $this->session->userdata ( 'userId' ); - $chked = $this->input->post('is_Active'); - $IsActive = '1'; - - - // if(EmpID == -1) - // { - // // $this->session->set_flashdata('success', 'New Asset created successfully'); - - // redirect('emppaydate/addemppaydate','refresh'); - // echo ""; - // } - - //else{ - //$dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); - - //$createddt = $dt->format('Y-m-d H:i:s'); - - // $emppayExists = $this->emppaydate_model->( $emppay); - - $emppay = array(); - - - $emppay = array('EmpID'=>$EmpID, 'Basic_Pay'=>$Basic_Pay, 'HRA_Rate'=>$HRA_Rate, 'OT_Rate'=>$OT_Rate, 'Allowances'=>$Allowances, 'PF_Rate'=>$PF_Rate, 'ESI_Rate'=>$ESI_Rate ,'Food_Allowances'=>$Food_Allowances,'is_Active'=>$IsActive,'Created_By'=>$CreateBy); - - //print_r($monthdata); - $result = $this->emppaydate_model->addNewemppay($emppay); - - if($result > 0) - { - // $this->session->set_flashdata('success', 'New Asset created successfully'); - - redirect('emppaydate/emppayListing','refresh'); - echo ""; - } - else - { - redirect('emppaydate/emppayListing','refresh'); - echo ""; - } - - //} - } - } - - /** - * This function is used for editing purpose and it has oldest values only. - */ - function editOldemppay($paydataid= NULL) - { - - $data['emppay'] = $this->emppaydate_model->getUserInfo($paydataid); - // print_r($data); - //$data['monthly_pay_inputs'] = $this->monthlylisting_model->getUserInfo($employeeid); - - $this->global['pageTitle'] = 'Siddharth : Edit Employee Pay Monthly Details '; - - $this->loadViews("editOldemppay", $this->global, $data,NULL); - - } - - - - /** - * This function is used for stored new values after editing. - */ - function editemppay() - { - - - $this->load->library('form_validation'); - - $Pay_Data_ID= $this->input->post('Pay_Data_ID'); - - $this->form_validation->set_rules('Pay_Data_ID','Pay_Data_ID','trim|required'); - $this->form_validation->set_rules('EmpID','EmpID','trim|required'); - $this->form_validation->set_rules('Basic_Pay','Basic_Pay','trim|required'); - $this->form_validation->set_rules('HRA_Rate','HRA_Rate','trim|required'); - $this->form_validation->set_rules('OT_Rate','OT_Rate','trim|required'); - $this->form_validation->set_rules('Allowances','Allowances','trim|required'); - $this->form_validation->set_rules('PF_Rate','PF_Rate','trim|required'); - $this->form_validation->set_rules('ESI_Rate','ESI_Rate','trim|required'); - $this->form_validation->set_rules('Food_Allowances','Food_Allowances','trim|requried'); - - - - - if($this->form_validation->run() == FALSE) - { - - $this->editOldemppay(); - - } - - else - { - - $Pay_Data_ID=$this->input->post('Pay_Data_ID'); - $EmpID = $this->input->post('EmpID'); - $Basic_Pay=$this->input->post('Basic_Pay'); - $HRA_Rate=$this->input->post('HRA_Rate'); - $OT_Rate=$this->input->post('OT_Rate'); - $Allowances=$this->input->post('Allowances'); - $PF_Rate=$this->input->post('PF_Rate'); - $ESI_Rate=$this->input->post('ESI_Rate'); - $is_Active=$this->input->post('is_Active'); - $Last_Mod_By=$this->input->post('Last_Mod_By'); - $Last_Mod_Time=$this->input->post('Last_Mod_Time'); - $Food_Allowances=$this->input->post('Food_Allowances'); - $chked = $this->input->post('is_Active'); - - if( $chked != '') - { - $IsActive = '1'; - } - else - { - $IsActive = '0'; - } - - - - $emppaydatas = array(); - - - $emppaydatas = array('Pay_Data_ID'=>$Pay_Data_ID, 'EmpID'=>$EmpID, 'Basic_Pay'=>$Basic_Pay, 'HRA_Rate'=>$HRA_Rate, 'OT_Rate'=>$OT_Rate, 'Allowances'=>$Allowances, 'PF_Rate'=>$PF_Rate, 'ESI_Rate'=>$ESI_Rate,'Food_Allowances'=>$Food_Allowances, 'Last_Mod_By'=>$Last_Mod_By, 'Last_Mod_Time'=>$Last_Mod_Time, 'is_Active'=>$IsActive); - - - - $result = $this->emppaydate_model->editemppay($emppaydatas); - - - if($result == true) - { - $this->session->set_flashdata('success', 'updated successfully'); - } - else - { - $this->session->set_flashdata('error', 'updation failed'); - } - - - redirect('emppaydate/emppayListing'); - } - - } - - - - /** - * This function is used load user edit information - * @param number $userId : Optional : This is user id - */ - /*function editOldcost($CostCode = NULL) - { - - if($CostCode == '') - { - $CostCenterID = $_GET['CostCode']; - } - else - { - - $CostCenterID = $CostCode; } - - $data['CostMaster'] = $this->costcenter_model->GetCostCenterMaster($CostCenterID); - $data['CostDepts'] = $this->costcenter_model->GetCostCenterDepartment($CostCenterID); - $data['CostBudget'] = $this->costcenter_model->GetCostCenterBudget($CostCenterID); - // $data['DeptList'] = $this->costcenter_model->GetDepartmentNotinCostCenter($CostCenterID); - - - $this->global['pageTitle'] = 'Siddharth : Edit Cost'; - - $this->loadViews("editOldcost", $this->global, $data,NULL); - - } - - function ech() - { - - echo $this->input->post('CostCentreID'); - echo $this->input->post('CostName'); - echo $this->input->post('Description'); - - } - - /** - * This function is used to edit the user information - - function editcost() - { - - $this->load->library('form_validation'); - - $CostCenterID = $this->input->post('CostCentreID'); - - $this->form_validation->set_rules('CostName','Cost Name','trim|required|'); - $this->form_validation->set_rules('Description','Description','trim|required|'); - - - if($this->form_validation->run() == FALSE) - { - $this->editcost($CostCenterID); - } - else - { - $CostCenterID = $this->input->post('CostCentreID'); - $CostName = ucwords(strtolower($this->input->post('CostName'))); - $Description = $this->input->post('Description'); - - - - //$this->costcenter_model->editcost($Cost); - - $cost = array(); - - - - $Cost = array('CostCentreID'=>$CostCenterID,'CostName'=>$CostName, 'Description'=>$Description,'createdDate'=>date('Y-m-d H:i:sa')); - - - - - $result = $this->costcenter_model->editcost($Cost, $CostCenterID); - - if($result == true) - { - $this->session->set_flashdata('success', 'Cost updated successfully'); - } - else - { - $this->session->set_flashdata('error', 'Cost updation failed'); - } - - redirect('costListing'); - } - - } - function viewcost($CostCenterID = NULL) - { - - if($CostCenterID == null) - { - redirect('costListing'); - } - - $data['Cost'] = $this->costcenter_model->getuserinfo($CostCenterID); - //$data['users'] = $this->purchaseorder_model->getusers(); - - $this->global['pageTitle'] = 'Siddharth : View Cost'; - - $this->loadViews("viewcost", $this->global, $data,NULL); - - } - - /** - * This function is used to delete the user using userId - * @return boolean $result : TRUE / FALSE - - function deletecost() - { - if($this->isAdmin() == TRUE) - { - echo(json_encode(array('status'=>'access'))); - } - else - { - $CostCenterID = $this->input->Costst('CostCentreID'); - $cost = array('CreateDate'=>date('Y-m-d H:i:sa')); - - $result = $this->costcenter_model->deletecost($Cost, $CostCenterID); - - if ($result > 0) { echo(json_encode(array('status'=>TRUE))); } - else { echo(json_encode(array('status'=>FALSE))); } - } - } - */ - - function pageNotFound() - { - $this->global['pageTitle'] = 'CodeInsect : 404 - Page Not Found'; - - $this->loadViews("404", $this->global, NULL, NULL); - } -} - -?> \ No newline at end of file diff --git a/application/controllers/error.php b/application/controllers/error.php deleted file mode 100644 index feb605b3..00000000 --- a/application/controllers/error.php +++ /dev/null @@ -1,46 +0,0 @@ -isLoggedIn(); - } - - /** - * This function used to check the user is logged in or not - */ - function isLoggedIn() - { - $isLoggedIn = $this->session->userdata('isLoggedIn'); - - if(!isset($isLoggedIn) || $isLoggedIn != TRUE) - { - $this->load->view('login'); - } - else - { - redirect('pageNotFound'); - } - } -} - -?> \ No newline at end of file diff --git a/application/controllers/index.html b/application/controllers/index.html deleted file mode 100644 index c942a79c..00000000 --- a/application/controllers/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - 403 Forbidden - - - -

Directory access is forbidden.

- - - \ No newline at end of file diff --git a/application/controllers/inwardgateregister.php b/application/controllers/inwardgateregister.php deleted file mode 100644 index 839cce28..00000000 --- a/application/controllers/inwardgateregister.php +++ /dev/null @@ -1,198 +0,0 @@ -load->model('inwardgateregister_model'); - - $this->load->library('session'); - $this->load->library('form_validation'); - - $this->isLoggedIn(); - } - /** - * This function used to load the first screen of the user - */ - public function index() - { - $this->global['pageTitle'] = 'Siddharth : Inward Gate Register'; - - $this->loadViews("viewinwardgateregister", $this->global,NULL , NULL); - } - - function viewinwardgateregister($IGRNO='',$IGR='') - { - $this->load->model('inwardgateregister_model'); - $this->global['pageTitle'] = 'Siddharth : Inward Gate Register'; - $data['IGR']= $this->inwardgateregister_model->igrListing($IGRNO,$IGR); - - $this->loadViews("viewinwardgateregister",$this->global,$data,NULL); - } - - function addinwardgateregister($pono='',$IGRNO='',$IGR='') - { - - $this->load->model('inwardgateregister_model'); - $this->global['pageTitle'] = 'Siddharth : Add Inward Gate Register'; - //$data['IGR']=$this->inwardgateregister_model->igrListing($IGRNO,$IGR); - - $data['PO_NO'] = $this->inwardgateregister_model->getpurchaseorder($pono); - - - //print_r($data); - - - - $this->loadViews("inwardgateregister", $this->global, $data, NULL); - } - - function getDateformat($Val) - { - $date = new DateTime($Val,new DateTimeZone('Asia/Kolkata')); - // print_r($date); - $retDate = $date->format('Y-m-d H:i:s'); - return $retDate; - } - - function IGRITEM($PO='') - { - - - $PO = $this->input->post('id'); - $data = $this->inwardgateregister_model->viewpurchaseorder($PO); - //$result = $this->inwardgateregister_model->viewpurchaseorder($PO); - /*$HTML=""; - for ($i = 0; $i < count($data); $i++) - { - $SNo = $i + 1; - $MaterialCode = $result[$i]['MaterialCode']; - $MaterialName = $result[$i]['MaterialName']; - $UOM = $result[$i]['UOM']; - $Quantity = $result[$i]['Quantity']; - $HTML.=" - ".$SNo." - ". $MaterialCode." - - ".$MaterialName." - - ".$UOM." - ".$Quantity." - "; - - //$index = $index + 1; - - }*/ - echo json_encode($data); - //$this->load->view('sample',$data,NULL); - - } - function addNewigr() - { - - - - $PONO = $this->input->post('PONO'); - //$igr = $this->input->post('igr'); - - - - $DeliveryChellanOrInvoiceNo = $this->input->post('InvoiceNo'); - - $DeliveryChellan = $this->input->post('InvoiceDate'); - $DeliveryChellanDate = $this->getDateformat($DeliveryChellan); - - - $VehicleNo = $this->input->post('VehicleNo'); - $CourierNo = $this->input->post('CourierNo'); - - - $CreatedBy = $this->session->userdata('userId'); - //$Remarks = $this->input->post('Remarks'); - $RowCount = $this->input->post('txtRowCount'); - //echo $RowCount; - $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); - $createddt = $dt->format('Y-m-d H:i:s'); - $IGRStatus = IGR_CREATED; - - - //echo $RowCount; - - $igr = array(); - - $igr = array('PONO'=>$PONO,'VehicleNo'=>$VehicleNo,'DeliveryChellanOrInvoiceNo'=>$DeliveryChellanOrInvoiceNo,'DeliveryChellanDate'=>$DeliveryChellanDate,'CourierNo'=>$CourierNo,'IGRStatus'=>$IGRStatus,'CreatedBy'=>$CreatedBy,'CreatedDate' =>$createddt); - //print_r($igr); - - $igrM = $this->inwardgateregister_model->addigrM($igr); - - - $IGRNO = ''; - if(count($igrM)>0) - { - $IGRNO = $igrM[0]['IGRNO']; - } - //echo $IGRNO; - $IGRItemStatus = REQITEM_NEW; - //echo ("success"); - - //print_r($RowCount); - for ($i = 1; $i <= $RowCount; $i++) - { - //echo i; - - //echo $IGRNO ; - $MaterialCode = $this->input->post('MaterialCode'.$i); - - - $QuantityAsPerInvoice = $this->input->post('ReceivedQuantity'.$i); - $Remarks = $this->input->post('Remarks'.$i); - //$Remarks = $this->input->post('Remarks'); - - $CreatedBy = $this->session->userdata('userId'); - - - - $igrDetails = array('IGRNO'=>$IGRNO,'MaterialCode'=>$MaterialCode,'QuantityAsPerInvoice'=>$QuantityAsPerInvoice,'Remarks'=>$Remarks,'IGRItemStatus'=>$IGRItemStatus,'CreatedBy'=>$CreatedBy,'CreatedDate'=>$createddt); - //print_r($igrDetails); - $igrD = $this->inwardgateregister_model->addigrD($igrDetails); - - } - - - - - } - - function ViewIGR($IGRNO='') - { - - $IGRNO= $this->input->post('id'); - //print_r($IGRNO); - $data = $this->inwardgateregister_model->viewigr($IGRNO); - //print_r( $data); - - echo json_encode($data); - - } - function pageNotFound() - { - $this->global['pageTitle'] = 'Siddharth : 404 - Page Not Found'; - - $this->loadViews("404", $this->global, NULL, NULL); - } -} - -?> \ No newline at end of file diff --git a/application/controllers/login.php b/application/controllers/login.php deleted file mode 100644 index d9d6d69b..00000000 --- a/application/controllers/login.php +++ /dev/null @@ -1,255 +0,0 @@ -load->model('login_model'); - } - - /** - * Index Page for this controller. - */ - public function index() - { - $this->isLoggedIn(); - } - - /** - * This function used to check the user is logged in or not - */ - function isLoggedIn() - { - $isLoggedIn = $this->session->userdata('isLoggedIn'); - - if(!isset($isLoggedIn) || $isLoggedIn != TRUE) - { - $this->load->view('login'); - } - else - { - redirect('/dashboard'); - } - } - - - /** - * This function used to logged in user - */ - public function loginMe() - { - $this->load->library('form_validation'); - - $this->form_validation->set_rules('email', 'Email', 'required|valid_email|max_length[128]|xss_clean|trim'); - $this->form_validation->set_rules('password', 'Password', 'required|max_length[32]|'); - - if($this->form_validation->run() == FALSE) - { - $this->index(); - } - else - { - $email = $this->input->post('email'); - $password = $this->input->post('password'); - - $result = $this->login_model->loginMe($email, $password); - - if(count($result) > 0) - { - foreach ($result as $res) - { - $sessionArray = array('userId'=>$res->userId, - 'role'=>$res->roleId, - 'roleText'=>$res->role, - 'name'=>$res->FirstName, - 'Designation'=>$res->Designation, - 'DEPCode'=>$res->DEPCode, - 'HeadDept'=>$res->HeadDept, - 'DepartmentName'=>$res->DepartmentName, - 'EmpID' => $res->EmpID, - 'isLoggedIn' => TRUE - ); - - $this->session->set_userdata($sessionArray); - - - - - } - redirect('dashboard'); - } - else - { - - redirect('login'); - $this->session->set_flashdata('error', 'Email or password mismatch'); - } - } - } - - /** - * This function used to load forgot password view - */ - function forgotPassword() - { - $this->load->view('forgotPassword'); - } - - /** - * This function used to generate reset password request link - */ - function resetPasswordUser() - { - $status = ''; - - $this->load->library('form_validation'); - - $this->form_validation->set_rules('login_email','Email','trim|required|valid_email|xss_clean'); - - if($this->form_validation->run() == FALSE) - { - $this->forgetPasswordUser(); - } - else - { - $email = $this->input->post('login_email'); - - if($this->user_model->checkEmailExist($email)) - { - $encoded_email = urlencode($email); - - $this->load->helper('string'); - $data['email'] = $email; - $data['activation_id'] = random_string('alnum',15); - $data['created_dtm'] = date('Y-m-d H:i:s'); - $data['agent'] = $this->getBrowserAgent(); - $data['client_ip'] = $this->input->ip_address(); - - $save = $this->user_model->resetPasswordUser($data); - - if($save) - { - $config['protocol'] = 'sendmail'; - $config['mailpath'] = '/usr/sbin/sendmail'; - $config['charset'] = 'UTF-8'; - $config['wordwrap'] = TRUE; - $config['mailtype'] = 'html'; - - $this->load->library('email', $config); - - $data1['reset_link'] = base_url() . "resetPasswordConfirmUser/" . $data['activation_id'] . "/" . $encoded_email; - $data1['info'] = $this->user_model->getCustomerInfoByEmail($email); - - $this->email->from(ADMIN_EMAIL_ID, WEBSITE); - $this->email->to($email); - $this->email->subject(RESET_PASSWORD_EMAIL_SUBJECT); - $this->email->message($this->load->view('email', $data1, TRUE)); - - if ($this->email->send()) - { - $status = 'send'; - } - else - { - $status = 'notsend'; - } - } - else - { - $status = 'unable'; - } - } - else - { - $status = 'invalid'; - } - - echo json_encode(array('status'=>$status)); - } - } - - // This function used to reset the password - function resetPasswordConfirmUser() - { - - // Get email and activation code from URL values at index 3-4 - $email = urldecode($this->uri->segment(3)); - $activation_id = $this->uri->segment(2); - - // Check activation id in database - $is_correct = $this->user_model->checkActivationDetails($email, $activation_id); - - $data['email'] = $email; - $data['activation_code'] = $activation_id; - - if ($is_correct == 1) - { - $this->load->view('includes/header'); - $this->load->view('new_password', $data); - $this->load->view('includes/footer'); - } - else - { - redirect('user'); - } - } - - // This function used to create new password - function createPasswordUser() - { - $status = ''; - $message = ''; - - $this->load->library('form_validation'); - - $this->form_validation->set_rules('password','New Password','required|max_length[20]'); - $this->form_validation->set_rules('cpassword','New Re-Password','trim|required|matches[password]|max_length[20]'); - - if($this->form_validation->run() == FALSE) - { - echo json_encode(array('status' => 'validation', 'message' => 'Please validate the fields')); - } - else - { - $password = $this->input->post('password'); - $cpassword = $this->input->post('cpassword'); - $email = $this->input->post('email'); - $activation_id = $this->input->post('activation_id'); - - // Check activation id in database - $is_correct = $this->user_model->checkActivationDetails($email, $activation_id); - - if(($is_correct == 1) && ($password == $cpassword)) - { - $data = array('email_id'=>$email, 'password'=>$password); - - $this->user_model->createPasswordUser($data); - - $status = 'success'; - $message = 'Password changed successfully'; - } - else - { - $status = 'error'; - $message = 'Password changed failed'; - } - - echo json_encode(array('status'=>$status, 'message'=>$message)); - } - } - - -} - -?> diff --git a/application/controllers/monthlypay.php b/application/controllers/monthlypay.php deleted file mode 100644 index ce596775..00000000 --- a/application/controllers/monthlypay.php +++ /dev/null @@ -1,241 +0,0 @@ -load->model('monthlypay_model'); - $this->load->library('session'); - $this->load->library('form_validation'); - // $this->load->library('pagination'); - - $this->isLoggedIn(); - } - /** - * This function used to load the first screen of the user - */ - public function index() - { - $this->global['pageTitle'] = 'Siddharth : Monthly Pay Details'; - - $this->loadviews('monthlyListing',$this->global); - } - - /** - * This function is used to load the monthly list - */ - - function monthlyListing() - { - - - $this->load->model('monthlypay_model'); - - $searchText = $this->input->post('searchText'); - $data['searchText'] = $searchText; - - $this->load->library('pagination'); - - $count = $this->monthlypay_model->monthlyListingCount($searchText); - - $returns = $this->paginationCompress ( "monthlyListing", $count ,5); - - $data['userRecords'] = $this->monthlypay_model->monthlyListing($searchText, $returns["page"], $returns["segment"]); - - $this->global['pageTitle'] = 'Siddharth : Monthly Pay List'; - - $this->loadViews("monthlyListing", $this->global, $data, NULL); - } - - /** - * This function is used to load the filtering monthly list - */ - - - - /** - * This function is used to load the add new monthlypay - */ - function addmonthly() - { - - - - //$data['emp_id'] = $this->monthlypay_model->getmonthlypay(); - - $this->global['pageTitle'] = 'siddharth : Add Monthly Pay'; - - $this->loadviews('addMontly',$this->global, NULL); - - } - - function addNewmonthly() - { - - - $this->form_validation->set_rules('Month_Year','month_year','trim|required'); - $this->form_validation->set_rules('EmpID','emp_id','trim|required'); - $this->form_validation->set_rules('LOP_days','LOP_days','trim|required'); - $this->form_validation->set_rules('OT_Hrs_Worked','OT_Hrs_Worked','trim|required'); - $this->form_validation->set_rules('Loan_Recovered','Loan_Recovered','trim|required'); - $this->form_validation->set_rules('Loan_Balance','Loan_Balance','trim|required'); - $this->form_validation->set_rules('Incentives','Incentives','trim|required'); - $this->form_validation->set_rules('Other_Deductions','Other_Deductions','trim|required'); - - if($this->form_validation->run() == FALSE) - { - $this->addmonthly(); - } - else - { - $month_year = $this->input->post('month_year'); - $emp_id = $this->input->post('emp_id'); - $LOP_days = $this->input->post('LOP_days'); - $OT_Hrs_Worked = $this->input->post('OT_Hrs_Worked'); - $Loan_Recovered = $this->input->post('Loan_Recovered'); - $Loan_Balance = $this->input->post('Loan_Balance'); - $Incentives = $this->input->post('Incentives'); - $Other_Deductions = $this->input->post('Other_Deductions'); - - $CreateBy = $this->session->userdata ( 'userId' ); - - $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); - - $createddt = $dt->format('Y-m-d H:i:s'); - - $monthlypayExists = $this->monthlypay_model->checkmonthlypayExists( $monthlypay); - - if(count($CodeExists) == 0) - { - $montlypay = array('month_year'=>$month_year, 'emp_id'=>$emp_id,'LOP_days'=>$LOP_days,'OT_Hrs_Worked'=>$Loan_Recovered,'Loan_Balance'=>$Loan_Balance,'Incentives'=>$Incentives,'Other_Deductions'=>$Other_Deductions,'CreatedBy'=>$CreateBy,'createdDate'=>$createddt); - $this->monthlypay_model->addNewmonthly($monthlypay); - } - - - - Print_r('Successfully Created Monthly pay details'); - - } - - } - - /** - * This function is used for editing purpose and it has oldest values. - */ - - function editOldmonthly($EmpID='',$month_year='') - { - /*if($employeeid == null) - { - - redirect('monthlypay/monthlyListing'); - }*/ - - - - $data['monthly'] = $this->monthlypay_model->getUserInfo($EmpID,$month_year); - //$data['monthly_pay_inputs'] = $this->monthlylisting_model->getUserInfo($employeeid); - - $this->global['pageTitle'] = 'Siddharth : Edit Monthly Listing'; - - $this->loadViews("editOldmonthly", $this->global, $data,NULL); - - } - - - - /** - * This function is used for stored new values after editing. - */ - function editmonthly() - { - - $this->load->library('form_validation'); - - $EmpID= $this->input->post('EmpID'); - $month_year = $this->input->post('Month_Year'); - $this->form_validation->set_rules('Month_Year','month_year','trim|required'); - $this->form_validation->set_rules('EmpID','EmpID','trim|required'); - $this->form_validation->set_rules('LOP_Days','LOP_Days','trim|required'); - $this->form_validation->set_rules('OT_Hrs_Worked','OT_Hrs_Worked','trim|required'); - $this->form_validation->set_rules('Loan_Recovered','Loan_Recovered','trim|required'); - $this->form_validation->set_rules('Loan_Balance','Loan_Balance','trim|required'); - $this->form_validation->set_rules('Incentives','Incentives','trim|required'); - $this->form_validation->set_rules('Other_Deductions','Other_Deductions','trim|required'); - - - if($this->form_validation->run() == FALSE) - { - - $this->editOldmonthly($EmpID,$month_year); - } - - else - { - - - $month_year = $this->input->post('Month_Year'); - $EmpID = $this->input->post('EmpID'); - $LOP_Days =$this->input->post('LOP_Days'); - $OT_Hrs_Worked = $this->input->post('OT_Hrs_Worked'); - $Loan_Recovered = $this->input->post('Loan_Recovered'); - $Loan_Balance = $this->input->post('Loan_Balance'); - $Incentives = $this->input->post('Incentives'); - $Other_Deductions = $this->input->post('Other_Deductions'); - $LastModBy = $this->session->userdata ( 'userId' ); - - $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); - $LastModTime = $dt->format('Y-m-d H:i:s'); - - - - $monthdata = array(); - - - $monthdata = array('Month_Year'=>$month_year,'EmpID'=>$EmpID,'LOP_Days'=>$LOP_Days,'OT_Hrs_Worked'=>$OT_Hrs_Worked,'Loan_Recovered'=>$Loan_Recovered,'Loan_Balance'=>$Loan_Balance,'Incentives'=>$Incentives,'Other_Deductions'=>$Other_Deductions,'Last_Mod_By'=>$LastModBy,'Last_Mod_Time'=>$LastModTime); - - - - $result = $this->monthlypay_model->editmonth($monthdata,$EmpID); - - - if($result == true) - { - $this->session->set_flashdata('success', 'updated successfully'); - } - else - { - $this->session->set_flashdata('error', 'updation failed'); - } - //echo success; - - redirect('monthlyListings'); - } - - } - - - - - function pageNotFound() - { - $this->global['pageTitle'] = 'CodeInsect : 404 - Page Not Found'; - - $this->loadViews("404", $this->global, NULL, NULL); - } -} - -?> \ No newline at end of file diff --git a/application/controllers/pages.php b/application/controllers/pages.php deleted file mode 100644 index 6d5bf11b..00000000 --- a/application/controllers/pages.php +++ /dev/null @@ -1,161 +0,0 @@ -load->database(); - // $this->load->helper('url'); - $this->isLoggedIn(); - $this->load->library('grocery_CRUD'); - - } - - /* This function used to show the main page of the screen */ - public function _controller_output($output = null) - { $this->load->view('includes/header'); - $this->load->view('Mainpage',(array)$output); - $this->load->view('includes/footer'); - } - - - - - public function index() - { - $this->_controller_output((object)array('output' => '' , 'js_files' => array() , 'css_files' => array())); - } - - public function SupplierDetails() - { - - - - try{ - $crud = new grocery_CRUD(); - - - $crud->set_table('T_SupplierDetailsN'); - $crud->set_subject('Supplier Details'); - $crud->required_fields('SupplierName','Address','Contactnumber','AlternateContactNumber','EmailAddress','TIN','PAN'); - $crud->columns('SupplierID','SupplierName','Address','Contactnumber','AlternateContactNumber','EmailAddress','TIN','PAN','CreatedDate'); - $crud->field_type('CreatedDate','hidden', date("Y-m-d H:i:s")); - $crud->field_type('SupplierID','hidden'); - $output = $crud->render(); - - - $this->_controller_output($output); - - }catch(Exception $e){ - show_error($e->getMessage().' --- '.$e->getTraceAsString()); - } - } - - - function RawMaterial() - { - if($this->isAdmin() == TRUE) - { - $this->loadThis(); - } - else - { - $this->load->model('Grocery_crud_model'); - //$data['SupplierName'] = $this->Grocery_crud_model->getSupplierName(); - //$data['users'] = $this->purchaseorder_model->getusers(); - - $this->global['pageTitle'] = 'siddharth : Add New PO'; - - $this->loadViews("Mainpage", $this->global, $data, NULL); - } - - try{ - $crud = new grocery_CRUD(); - - - $crud->set_table('T_RawMaterialDetailsN'); - $crud->set_subject('RawMaterialDetails'); - $crud->required_fields('MaterialName','MaterialType','SupplierID'); - $crud->columns('MaterialCode','MaterialName','MaterialType','SupplierID','CreatedDate'); - $crud->field_type('CreatedDate','hidden', date("Y-m-d H:i:s")); - $crud->field_type('MaterialCode','hidden'); - $output = $crud->render(); - - $this->_controller_output($output); - - }catch(Exception $e){ - show_error($e->getMessage().' --- '.$e->getTraceAsString()); - } - } - - - public function AssetDetails() - { - if($this->isAdmin() == TRUE) - { - $this->loadThis(); - } - else - { - $this->load->model('Grocery_crud_model'); - //$data['SupplierName'] = $this->Grocery_crud_model->getSupplierName(); - //$data['users'] = $this->purchaseorder_model->getusers(); - - $this->global['pageTitle'] = 'siddharth : Add New PO'; - - $this->loadViews("Mainpage", $this->global, NULL); - } - try{ - $crud = new grocery_CRUD(); - - $now = new DateTime(); - echo $now->format('Y-m-d H:i:s'); - echo $now->getTimestamp(); - $crud->set_table('T_AssetDetails'); - $crud->set_subject('AssetDetails'); - $crud->required_fields('Asset_Name','Description','Department','Location','AssetOwner','SupplierName','DateOfPurchase','DateOfCommission','SupportVendor','SupportFrom','SupportTo','CreatedDate'); - $crud->columns('Asset_Code','Asset_Name','Description','Department','Location','AssetOwner','SupplierName','DateOfPurchase','DateOfCommission','SupportVendor','SupportFrom','SupportTo','CreatedDate'); - $crud->field_type('CreatedDate','hidden', date("Y-m-d H:i:s")); - $crud->field_type('Asset_Code','hidden'); - $output = $crud->render(); - - $this->_controller_output($output); - // $this->load->view('AssetDetails.php',(array)$output); - - }catch(Exception $e){ - show_error($e->getMessage().' --- '.$e->getTraceAsString()); - } - - } -public function CostDetails() - { - try{ - $crud = new grocery_CRUD(); - - - $crud->set_table('T_CostCentre'); - $crud->set_subject('CostDetails'); - $crud->required_fields('CostName','Description'); - $crud->columns('CostCentreID','CostName','Description','CreatedDate'); - $crud->field_type('CostCentreID','hidden'); - $crud->field_type('CreatedDate','hidden', date("Y-m-d H:i:s")); - $output = $crud->render(); - - - $this->_controller_output($output); - // $this->load->view('AssetDetails.php',(array)$output); - - }catch(Exception $e){ - show_error($e->getMessage().' --- '.$e->getTraceAsString()); - } - - } - - - - -} \ No newline at end of file diff --git a/application/controllers/payslip.php b/application/controllers/payslip.php deleted file mode 100644 index 7201d72d..00000000 --- a/application/controllers/payslip.php +++ /dev/null @@ -1,588 +0,0 @@ -load->model('payroll_model'); - $this->load->library('form_validation'); - $this->isLoggedIn(); - } - - - /** - * This function used to call stored procedure named with final_payroll_data() - */ - public function callsp(){ - - $payon = $this->input->post('payon'); - $employee = $this->input->post('employee'); - $result = $this->payroll_model->model_sp($payon,$employee); - // $result = $this->db->last_query(); - return $result; - //$this->db->call_function('model_sp'); - -} - - /** - * This function used to load the first screen of the user - */ - public function viewUpload() - { - - $this->global['pageTitle'] = 'Siddharth : Payroll Data Upload'; - - - $this->loadViews("payslipupload", $this->global, null , NULL); - } - - /** - * This function used to load the first screen of the user - */ - public function viewUpload2() - { - - $this->global['pageTitle'] = 'Siddharth : Payroll Data Upload2'; - - - $this->loadViews("payslipupload2", $this->global, null , NULL); - } - - /** - * This function used to load the first screen of the user - */ - public function viewGenerator() - { - //echo 'inside funtion'; - $Data['Payon'] = $this->payroll_model->getPayOn(); - //$Data['Emplist'] = $this->payroll_model->getEmployeelist(); - - - $this->global['pageTitle'] = 'Siddharth : Payroll Generater'; - - $this->loadViews("payslipgenerate", $this->global, $Data , NULL); - } - /* Validation for Employee Dropdown - */ - function Employee_validate($selectValue) -{ - //echo 'select_validate method called'; - // 'none' is the first option and the text says something like "-Choose one-" - if($selectValue == '-1') - { - $this->form_validation->set_message('Employee_validate', 'Please Select Employee.'); - return false; - } - else // user picked something - { - return true; - } -} - -function getEmployee() -{ - $id = $this->input->post('id1'); - - $result = $this->payroll_model->getEmployeelist2($id ); - - $HTML=""; - - if($result->num_rows() > 0){ - - foreach($result->result() as $list){ - - - $HTML.=""; - } - } - echo $HTML; -} - -/* Validation for PayOn Dropdown - */ - function PayOn_validate($selectValue) -{ - //echo 'select_validate method called'; - // 'none' is the first option and the text says something like "-Choose one-" - if($selectValue == '-1') - { - $this->form_validation->set_message('PayOn_validate', 'Please Select PayOn.'); - return false; - } - else // user picked something - { - return true; - } -} - /** - * This function used to load the first screen of the user - */ - public function PrintPdf() - { - - $All = $this->input->post('All'); - if($All == '') - { - $this->form_validation->set_rules('Employee','Employee','trim|callback_Employee_validate'); - } - - $this->form_validation->set_rules('PayOn','PayOn','trim|callback_PayOn_validate'); - - if($this->form_validation->run() == FALSE) - { - $this->viewGenerator(); - } - else - { - $Payon = $this->input->post('PayOn'); - - - if($All != '') - { - - $result = $this->payroll_model->getEmpAll($Payon); - - if($result > 0 ) - { - for($i=0;$i payroll_model->GetPayslipdata($Payon,$EmpID); - $Data['Count'] = $i; - - $this->load->View("payslipgenerateprint", $Data ); - - } - - } - } - else - { - $EmpID = $this->input->post('Employee'); - $Data['PayDetails'] = $this->payroll_model->GetPayslipdata($Payon,$EmpID); - - $this->load->View("payslipgenerateprint", $Data ); - - } - - - $php = $this->output->get_output(); - - // Load library - $this->load->library('dompdf_gen'); - - if($All != '') - { - $filename = 'Payslip-'.$Payon.'.pdf' ; - } - else - { - $filename = 'Payslip-'.$EmpID . '-' .$Payon.'.pdf' ; - } - - require_once(APPPATH .'third_party/dompdf/dompdf_config.inc.php'); - $dompdf = new DOMPDF(); - $dompdf->set_paper('A4', 'portrait'); - $dompdf->load_html($php); - - $dompdf->render(); - - // add the header - $canvas = $dompdf->get_canvas(); - $font = Font_Metrics::get_font("helvetica", "bold"); - - // the same call as in my previous example - $canvas->page_text(72, 18, "Page: {PAGE_NUM} of {PAGE_COUNT}", - $font, 6, array(0,0,0)); - - $dompdf->stream($filename); - } - - } - - - /** - * This function used to upload the Excel file Details - */ - function uploadExcel(){ - - - $PayrollFileName = ''; - - //Check whether user upload picture - if(!empty($_FILES['userfile']['name'])) - { - //echo 'inside if'; - $pathinfo = pathinfo($_FILES['userfile']['name']); - $config['upload_path'] = 'uploads/files/'; - $config['allowed_types'] = 'xls|xlsx|csv'; - $config['file_name'] = $_FILES['userfile']['name']; - $config['overwrite'] = true; - - //Load upload library and initialize configuration - $this->load->library('upload',$config); - $this->upload->initialize($config); - - if (($pathinfo['extension'] == 'xlsx' || $pathinfo['extension'] == 'xls') - && $_FILES['userfile']['size'] > 0 ) - { - if($this->upload->do_upload('userfile')) - { - $uploadData = $this->upload->data(); - $PayrollFileName = $uploadData['file_name']; - - - } - else - { - $error = array('error' => $this->upload->display_errors()); - $PayrollFileName = ''; - } - - $inputFileName = $_FILES['userfile']['tmp_name']; - - require_once APPPATH .'third_party/PHPExcel/IOFactory.php'; - $objTpl = PHPExcel_IOFactory::load($inputFileName); - - $sheet = $objTpl->getActiveSheet(0) ;//->toArray(null, NULL, True, True); - - $highestRow = $sheet->getHighestRow(); - $highestColumn = $sheet->getHighestColumn(); - - - $i = 8; - $dt = $sheet->getCell('PayOn')->getValue(); - $stringDate = PHPExcel_Style_NumberFormat::toFormattedString($dt, 'YYYY-MM-DD'); - $date = new DateTime($stringDate); - $PayOn = $date->format('m-Y'); - $createdby = $this->session->userdata ( 'userId' ); - $Totaldays = $sheet->getCell('I'.$i)->getValue(); - - $FileExists = $this->payroll_model->checkFileDetailsExists($PayOn); - - if (count($FileExists)== 0) - { - $FileDetails = array('PayOn'=>$PayOn,'TotalNoofDays'=>$Totaldays,'FileName'=>$PayrollFileName,'CreatedBy'=>$createdby); - $result = $this->payroll_model->UploadFileName($FileDetails); - } - else - { - $FileDetailsupdate = array('TotalNoofDays'=>$Totaldays,'FileName'=>$PayrollFileName,'CreatedBy'=>$createdby); - $result = $this->payroll_model->UpdateFileName($FileDetailsupdate,$PayOn); - $this->payroll_model->deleteFileData($PayOn); - } - - - for($x=8; $x <= $highestRow; $x++) - { - - $EmpId = $sheet->getCell('C'.$x)->getValue(); - $BankAccountnumber = $sheet->getCell('E'.$x)->getValue(); - $PFnumber = $sheet->getCell('F'.$x)->getValue(); - $ESInumber = $sheet->getCell('G'.$x)->getValue(); - $UAnumber = $sheet->getCell('H'.$x)->getValue(); - $NoOfWorkingdays = $sheet->getCell('J'.$x)->getValue(); - $LOP = $sheet->getCell('K'.$x)->getCalculatedValue(); - $ActualSalary = $sheet->getCell('L'.$x)->getValue(); - $PerDaySalary = $sheet->getCell('M'.$x)->getCalculatedValue(); - $WorkedSalary =$sheet->getCell('N'.$x)->getCalculatedValue(); - $BasicAndDA =$sheet->getCell('O'.$x)->getCalculatedValue(); - $HRA =$sheet->getCell('P'.$x)->getCalculatedValue(); - $OTWages = $sheet->getCell('Q'.$x)->getValue(); - $OTPerHours =$sheet->getCell('R'.$x)->getValue(); - $OTSalary =$sheet->getCell('S'.$x)->getCalculatedValue(); - $GrosssSalary =$sheet->getCell('T'.$x)->getCalculatedValue(); - $ESI = $sheet->getCell('U'.$x)->getCalculatedValue(); - $PF =$sheet->getCell('V'.$x)->getCalculatedValue(); - $ESIAndPF = $sheet->getCell('W'.$x)->getCalculatedValue(); - $SalaryAsPerPF =$sheet->getCell('X'.$x)->getCalculatedValue(); - $FoodAllowance = $sheet->getCell('Y'.$x)->getCalculatedValue(); - $Incentive =$sheet->getCell('Z'.$x)->getValue(); - $TotalSalary = $sheet->getCell('AA'.$x)->getCalculatedValue(); - $Advance =$sheet->getCell('AB'.$x)->getValue(); - $BalanceAdvance = $sheet->getCell('AC'.$x)->getValue(); - $LessAdvance = $sheet->getCell('AD'.$x)->getCalculatedValue(); - $Signature = $sheet->getCell('AE'.$x)->getValue(); - //echo $EmpId ; - if( $EmpId != '') - { - - $FileData = array('PayOn'=>$PayOn,'EmpID'=>$EmpId,'NoofDaysWorked'=>$NoOfWorkingdays,'ActualSalary'=>$ActualSalary,'PerDaySalary'=>$PerDaySalary,'WorkedSalary'=>$WorkedSalary,'BasicPlusDA'=>$BasicAndDA,'HRA'=>$HRA,'OTWages'=>$OTWages,'OTperHours'=>$OTPerHours,'OTSalary'=>$OTSalary,'ESIGrossSalary'=>$GrosssSalary,'EmployeeESI'=>$ESI,'PF'=>$PF,'TotalDeduction'=>$ESIAndPF,'SalaryAsPerPF'=>$SalaryAsPerPF,'FoodAllowance'=>$FoodAllowance,'Incentive'=>$Incentive,'TotalSalary'=>$TotalSalary,'Advance'=>$Advance,'BalanceAdvance'=>$BalanceAdvance,'LessAdvance'=>$LessAdvance,'Remarks'=>$Signature,'BankAccountNumber'=>$BankAccountnumber,'PFNumber'=>$PFnumber,'ESINumber'=>$ESInumber,'UANNO'=>$UAnumber,'LOP'=>$LOP); - $result = $this->payroll_model->UploadFileData($FileData); - - } - } - - $data['Success'] = ""; - - $this->global['pageTitle'] = 'Siddharth : Payroll Data Upload'; - - $this->loadViews("payslipupload", $this->global, $data , NULL); - } - else - { - $data['Fail'] = ""; - //echo ""; - - $this->global['pageTitle'] = 'Siddharth : Payroll Data Upload'; - - $this->loadViews("payslipupload", $this->global, $data , NULL); - } - } - else - { - $data['Fail'] = ""; - //echo ""; - $PayrollFileName = ''; - - $this->global['pageTitle'] = 'Siddharth : Payroll Data Upload'; - - $this->loadViews("payslipupload", $this->global, NULL , NULL); - } - - - } - - /** - * This function used to upload the Excel file Details2 - */ - function uploadExcel2(){ - - - $PayrollFileName = ''; - - //Check whether user upload picture - if(!empty($_FILES['userfile']['name'])) - { - //echo 'inside if'; - $pathinfo = pathinfo($_FILES['userfile']['name']); - $config['upload_path'] = 'uploads/files/'; - $config['allowed_types'] = 'xls|xlsx|csv'; - $config['file_name'] = $_FILES['userfile']['name']; - $config['overwrite'] = true; - - //Load upload library and initialize configuration - $this->load->library('upload',$config); - $this->upload->initialize($config); - - if (($pathinfo['extension'] == 'xlsx' || $pathinfo['extension'] == 'xls') - && $_FILES['userfile']['size'] > 0 ) - { - if($this->upload->do_upload('userfile')) - { - $uploadData = $this->upload->data(); - $PayrollFileName = $uploadData['file_name']; - - - } - else - { - $error = array('error' => $this->upload->display_errors()); - $PayrollFileName = ''; - } - - $inputFileName = $_FILES['userfile']['tmp_name']; - - require_once APPPATH .'third_party/PHPExcel/IOFactory.php'; - $objTpl = PHPExcel_IOFactory::load($inputFileName); - - $sheet = $objTpl->getActiveSheet(0) ;//->toArray(null, NULL, True, True); - - $highestRow = $sheet->getHighestRow(); - $highestColumn = $sheet->getHighestColumn(); - - - $x = 8; - $month=$this->input->post('mon'); - $year=$this->input->post('yr'); - $PayOn= $month . "-" . $year; - $createdby = $this->session->userdata ( 'userId' ); - - - if($month=='01' || $month=='03' || $month=='05' || $month=='07' || $month=='08' || $month=='10' || $month=='12') - { - $Totaldays = 31; - } - else if($month=='04' || $month=='06' || $month=='09' || $month=='11'){ - $Totaldays = 30; - } - else{ - $Totaldays = 28; - } - - - // $Totaldays = 0; - //echo $highestRow; - $FileDetails = array('PayOn'=>$PayOn,'TotalNoofDays'=>$Totaldays,'FileName'=> $config['file_name'],'CreatedBy'=>$createdby); - $result = $this->payroll_model->UploadFileName($FileDetails); - $emplid=$this->payroll_model->getEmpID($q=''); - - - $Unknowncount=0; - $Unknown=""; - $row=""; - $d=array("-1"=>""); - $fail=0; - $success=0; - for($x=8;$x<=$highestRow;$x++){ - - $EmpId = $sheet->getCell('A'.$x)->getValue(); - //echo $EmpId; - - $flag=0; - foreach($emplid as $e){ - - if(strtoupper($EmpId) == $e->EmpID){ - - $flag++; - // echo "
".$myvar.":- is valid empid"; - } - } - if($flag==0){ - //echo "
".$myvar.":- not a valid empid"; - $Unknowncount++; - $Unknown.='-'.$EmpId; - $row.='-'.$x; - //$d.=$EmpId; - } - - $FileDataExists = $this->payroll_model->checkFileDetailsExists2($PayOn,$EmpId); - //echo $FileExists; - - //die(); - - //echo $FileDataExists; - //die(); - if ($FileDataExists=='' || $FileDataExists==0) - { - //$FileDetails = array('PayOn'=>$PayOn,'TotalNoofDays'=>$Totaldays,'FileName'=>$PayrollFileName,'CreatedBy'=>$createdby); - - - - // $result = $this->payroll_model->UploadFileName($FileDetails); - - - - - - //for($x=8; $x <= $highestRow; $x++) - //{ - - - $EmpId = $sheet->getCell('A'.$x)->getValue(); - $EmpId=strtoupper($EmpId); - $LOPDays = $sheet->getCell('B'.$x)->getValue(); - $OTHoursWorked =$sheet->getCell('C'.$x)->getValue(); - $loanRecovered=$sheet->getCell('D'.$x)->getValue(); - $loanBalance=$sheet->getCell('E'.$x)->getValue(); - $Incentive =$sheet->getCell('F'.$x)->getValue(); - $Other_Deductions =$sheet->getCell('G'.$x)->getValue(); - - if( $EmpId != '') - { - - - foreach($emplid as $e){ - - if($EmpId == $e->EmpID){ - - - $FileData = array('Month_Year'=>$PayOn,'EmpID'=>$EmpId,'LOP_Days'=>$LOPDays,'OT_Hrs_Worked'=>$OTHoursWorked,'Loan_Recovered'=>$loanRecovered,'Loan_Balance'=>$loanBalance,'Incentives'=>$Incentive,'Other_Deductions'=>$Other_Deductions,'Created_By'=>$createdby,'Created_Time'=>date("Y-m-d h:i:sa")); - $result = $this->payroll_model->UploadFileData2($FileData); - $success++; - } - - } - - // $data['Success'] = ""; - - // $this->global['pageTitle'] = 'Siddharth : Payroll Data Upload'; - - // $this->loadViews("payslipupload2", $this->global, $data , NULL); - - - } - else{ - - $fail++; - - // $data['Fail'] = ""; - - // $this->global['pageTitle'] = 'Siddharth : Payroll Data Upload'; - - // $this->loadViews("payslipupload2", $this->global, $data , NULL); - - } - } - - - - } //End of For Loop - - // echo $success; - //echo $fail; - - //$data['success'] = ""; - echo ""; - echo ""; - $this->global['pageTitle'] = 'Siddharth : Payroll Data Upload'; - - $this->loadViews("payslipupload2", $this->global , NULL); - //redirect('monthlyListings'); - - - - } else - { - $data['Fail'] = ""; - //echo ""; - - $this->global['pageTitle'] = 'Siddharth : Payroll Data Upload2'; - - //$this->loadViews("payslipupload2", $this->global, $data , NULL); - } - } - else - { - $data['Fail'] = ""; - //echo ""; - $PayrollFileName = ''; - - $this->global['pageTitle'] = 'Siddharth : Payroll Data Upload2'; - - $this->loadViews("payslipupload2", $this->global, NULL , NULL); - } - - - } - function updatepayroll() - { - $this->global['pageTitle'] = 'Update Payroll'; - - $this->loadViews("payslipeditable", $this->global, NULL , NULL); - } - - function pageNotFound() - { - $this->global['pageTitle'] = 'CodeInsect : 404 - Page Not Found'; - - $this->loadViews("404", $this->global, NULL, NULL); - } -} - -?> \ No newline at end of file diff --git a/application/controllers/purchaseorder.php b/application/controllers/purchaseorder.php deleted file mode 100644 index 32180bb1..00000000 --- a/application/controllers/purchaseorder.php +++ /dev/null @@ -1,1340 +0,0 @@ -load->model('purchaseorder_model'); - - $this->load->library('session'); - $this->load->library('form_validation'); - $this->load->model('requistion_model'); - $this->isLoggedIn(); - } - - /** - * This function used to load the first screen of the user - */ - public function index() - { - $this->global['pageTitle'] = 'Siddharth : AddPO'; - - $this->loadViews("addPO", $this->global, NULL , NULL); - } - function viewfullpurchaseorder() - { - $this->global['pageTitle'] = 'Siddharth : View Purchase Order'; - - $this->loadViews("viewfullpurchaseorder", $this->global,Null); - - } - - function requisition() - { - $data['DeptList'] = $this->purchaseorder_model->getDepartmentListForAllReq(); - - $data['stList'] = $this->purchaseorder_model->getStatusListforAllReq(); - /* Cost code from Requisition - Client Review Fix - Start here */ - // $data['ReqList'] = $this->purchaseorder_model->getRequistionListbySearch(); - - $data['ReqList'] = $this->purchaseorder_model->getAllRequistionListToCreatePO(); - /* End Here */ - $this->global['pageTitle'] = 'Siddharth : Create PO from Requisition List'; - - $this->loadViews("createPOfromRequistion", $this->global, $data,Null); - } - - - /** - * This function is used to load the purchaseorder list - */ - function PurchaseOrderList() - { - - $this->load->library('pagination'); - - // $count = $this->purchaseorder_model->purchaseorderListingCount(''); - - //$returns = $this->paginationCompress ( "purchaseorderListing/", $count, 10 ); - - $this->purchaseorder_model->UpdateRequistionStatus(); - - $data['POData'] = $this->purchaseorder_model->purchaseorderListing(); - - $this->global['pageTitle'] = 'Siddharth : Purchase Orders'; - - $this->loadViews("POlist", $this->global, $data, NULL); - - } - function Req_validate($selectValue) -{ - //echo 'select_validate method called'; - // 'none' is the first option and the text says something like "-Choose one-" - if(strlen($selectValue) == 0) - { - $this->form_validation->set_message('Req_validate', 'Please Select Requisition Number to Create PO.'); - return false; - } - else // user picked something - { - return true; - } -} - - /** - * This function used to show the Purchase Order Screen - */ - - function CreatePurchaseOrder() - { - - - $this->form_validation->set_rules('txtReqNo', 'txtReqNo', 'callback_Req_validate'); - - if($this->form_validation->run() == FALSE) - { - $this->requisition(); - - } - else - { - - $this->global['pageTitle'] = 'Siddharth : Purchase order' ; - $data['TaxType'] = $this->purchaseorder_model->getConfigValue('C006'); - $data['FreightType'] = $this->purchaseorder_model->getConfigValue('C018'); - $data['Suplist'] = $this->purchaseorder_model->getSupplierName(); - $SelectedReq = json_decode($this->input->post('txtReqNo')); - - $Req = $SelectedReq->Req; - $data['ReqList'] = $Req ; - $ReqArray = array(); - $ReqType = ''; - $result = array(); - - foreach ($Req as $SID): - $ReqArray[] = $SID->ReqNo ; - $result[] = $this->purchaseorder_model->getRawPOMaterialList($SID->ReqNo); - $ReqType = $SID->ReqType; - - endforeach; - - - $data['MaterialList'] = $result; - /* Cost code from Requisition - Client Review Fix - Start here */ - $ReqDetails = $this->purchaseorder_model->getRequistDetails($ReqArray); - $data['RequistionDetails'] = $ReqDetails; - $CostCode = ''; - $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); - - $Year = $dt->format('Y'); - - foreach ($ReqDetails as $Rs): - $CostCode = $Rs->CostCenterCode; - endforeach; - - $AvlBudget = $this->purchaseorder_model->GetAvailableBudgetAmount($CostCode,$Year,$ReqType); - - - if(count($AvlBudget)>0) - { - $data['AvlBudAmt'] = $AvlBudget[0]['BudgetAmount'] - $AvlBudget[0]['Totalvalue']; - } - /* End Here */ - - $data['CompanyDetails'] = $this->purchaseorder_model->getCompanyInformation(); - $data['MaxPODate'] = $this->purchaseorder_model->getLastCreatedPODate(); - $data['Currency']=$this->purchaseorder_model->GetCurrencytype(); - - $ViewName = ''; - if($ReqType == REVENUE) - { - $ViewName = 'purchaseorder'; - } - else if($ReqType == SERVICE) - { - $ViewName = 'servicePurchaseorder'; - } - else if($ReqType == IMPORT) - { - $ViewName = 'importpo'; - } - else if($ReqType == CAPITAL) - { - $ViewName = 'capitalpurchaseorder'; - } - $this->loadViews($ViewName, $this->global,$data, NULL); - } - } - - function CreatePOPrint() - { - $PONO = $_GET['PONO']; - $ReqType = $_GET['ReqType']; - - if($ReqType == SERVICE) - { - $this ->servicepoprint($PONO); - - } - else if($ReqType == REVENUE) - { - $this ->revenuepoprint($PONO); - - } - - else if($ReqType == IMPORT) - { - $this ->importpoprint($PONO); - - } - } - - function CreaterevenuePOPrint() - { - $this->load->View("revenuepopdf", NULL); - } - function CreateservicePOPrint() - { - $this->load->View("servicepopdf", NULL); - } - function CreateimportPOPrint() - { - $this->load->View("importpopdf", NULL); - } - function CreatecapitalPOPrint() - { - $this->load->View("capitalpopdf", NULL); - } - //To View/Update Purchase Order - function EditPurchaseOrder() - { - $PONO = $_GET['PONO']; - $ReqType = $_GET['ReqType']; - - $Req = $this->purchaseorder_model->getRequistionNoFromPO($PONO); - $data['ReqList'] = $Req ; - $result = array(); - $ReqArray = array(); - foreach ($Req as $SID): - $ReqArray[] = $SID->ReqNo ; - $result[] = $this->purchaseorder_model->getRawPOMaterialList($SID->ReqNo); - endforeach; - $data['MaterialList'] = $result;//$this->purchaseorder_model->getRawMaterialList($ReqType,$ReqArray); - $data['Suplist'] = $this->purchaseorder_model->getSupplierName(); - /* Cost code from Requisition - Client Review Fix - Start here */ - $ReqDetails = $this->purchaseorder_model->getRequistDetails($ReqArray); - $data['RequistionDetails'] = $ReqDetails; - $CostCode = ''; - $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); - - $Year = $dt->format('Y'); - - foreach ($ReqDetails as $Rs): - $CostCode = $Rs->CostCenterCode; - endforeach; - - $AvlBudget = $this->purchaseorder_model->GetAvailableBudgetAmount($CostCode,$Year,$ReqType); - - - if(count($AvlBudget)>0) - { - $data['AvlBudAmt'] = $AvlBudget[0]['BudgetAmount'] - $AvlBudget[0]['Totalvalue']; - } - /* End Here */ - - $data['POMaster'] = $this->purchaseorder_model->GetServicePurchaseOrder($PONO); - $data['MaxPODate'] = $this->purchaseorder_model->getLastCreatedPODate(); - $data['TaxType'] = $this->purchaseorder_model->getConfigValue('C006'); - $data['FreightType'] = $this->purchaseorder_model->getConfigValue('C018'); - if($ReqType == SERVICE) - { - - $data['POItem'] = $this->purchaseorder_model->GetServicePurchaseOrderDetails($PONO); - $this->global['pageTitle'] = 'Siddharth : Edit Service Purchase order form'; - $this->loadViews("EditservicePurchaseorder", $this->global, $data, NULL); - } - else if($ReqType == REVENUE) - { - - $data['POItem'] = $this->purchaseorder_model->GetRevenuePurchaseOrderDetails($PONO); - $this->global['pageTitle'] = 'Siddharth : Edit Revenue Purchase order form'; - $this->loadViews("editRevenuepurchaseorder", $this->global, $data, NULL); - } - - else if($ReqType == IMPORT) - { - - - $AvlBudget = $this->purchaseorder_model->GetAvailableBudgetAmount($CostCode,$Year,$ReqType); - - - if(count($AvlBudget)>0) - { - $data['AvlBudAmt'] = $AvlBudget[0]['BudgetAmount'] - $AvlBudget[0]['Totalvalue']; - } - // print_r($data); - $data['POItem'] = $this->purchaseorder_model->GetImportPurchaseOrderDetails($PONO); - //print_r($data); - //$data['ExchangeRate']=$data['POItem']->ExchangeRate; - - //print_r($data['POItem']); - - foreach($data['POItem'] as $Rate) - { - - // print_r($Rate->ExchangeRate); - $exRate=$Rate->ExchangeRate; - - // $data[$Rate->ExchangeRate]=$Rate->ExchangeRate; - } - - foreach($data['POItem'] as $CUR) - { - - //print_r($CUR->CurrencyType); - $Currency=$CUR->CurrencyType; - - - // $data[$Rate->ExchangeRate]=$Rate->ExchangeRate; - } - //echo "$Currency"; - $data['CurrencyDetail']=$this->purchaseorder_model->GetCurrencyDetail($Currency); - //print_r($data); - $data['ExchangeRate']=$exRate; - - $data['Currency']=$this->purchaseorder_model->GetCurrencytype(); - //print_r($data); - $this->global['pageTitle'] = 'Siddharth : Edit Import Purchase order form'; - $this->loadViews("editimportpo", $this->global, $data, NULL); - } - - } - - // To get the Material value based on the MaterialCode - function getDetailsforReq() - { - - - $SearchFilter= $this->input->post('id'); - // $reqDate= $this->input->post('ReqDate'); - $DeptCode = $SearchFilter[0]; - $MatType = $SearchFilter[1]; - $ReqNo = $SearchFilter[2]; - // $ReqDetai = $this->purchaseorder_model->getRequistDetails( $EmpID ); - - $CostList = $this->requistion_model->GetCostCenterByDept( $DeptCode); - - $HTML = ""; - $BudAmount = ""; - if(count($CostList) > 0) - { - for ($j = 0; $j < count($CostList); $j++) - { - $Code = $CostList[$j]['CostCenterCode']; - $Name = $CostList[$j]['CostCenterName']; - $HTML .=""; - } - } - $MaterialDetails = $this->purchaseorder_model->getRawMaterialListForPO($MatType,$ReqNo); - - $HTML1 = ""; - - if(count($MaterialDetails) > 0) - { - for ($j = 0; $j < count($MaterialDetails); $j++) - { - $Code = $MaterialDetails[$j]['MaterialCode']; - $Name = $MaterialDetails[$j]['MaterialName']; - $HTML1 .=""; - - } - - } - // print_r($HTML1); - - die(json_encode(array('MatDetail' =>$HTML1,'Cost'=> $HTML))); - } - /* This method to get the status based on the Department selection in th - */ - function getStatusByDepartment() - { - $DepId = $this->input->post('id'); - - $data = $this->purchaseorder_model->getStatusByDepartment($DepId); - - $HTML = ""; - if(count($data) > 0) - { - for ($j = 0; $j < count($data); $j++) - { - $Code = $data[$j]['StatusCode']; - $Name = $data[$j]['StatusName']; - $HTML .=""; - } - } - //echo $HTML; - die(json_encode(array('depStaus' => $HTML))); - } - - // To get the available Budget Amount - function AvilBudgetAmount() - { - $SearchFilter= $this->input->post('id'); - // $reqDate= $this->input->post('ReqDate'); - $CostCode = $SearchFilter[0]; - $ReqType = $SearchFilter[1]; - print_r($SearchFilter); - $CostCode= $this->input->post('id'); - $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); - - $Year = $dt->format('Y'); - $this->load->model('purchaseorder_model'); - $result = $this->purchaseorder_model->GetAvailableBudgetAmount($CostCode,$Year,$ReqType); - //print_r($result); - $AvilBudAmt = ''; - if(count($result)>0) - { - $AvilBudAmt = $result[0]['BudgetAmount'] - $result[0]['Totalvalue']; - } - - print_r($AvilBudAmt); - - } - - - function getDateformat($Val) - { - $date = new DateTime($Val,new DateTimeZone('Asia/Kolkata')); - $retDate = $date->format('Y-m-d H:i:s'); - return $retDate; - } - /* Method to get the Requistion list based on the search filter*/ - - function SearchListofRequistion() - { - $SearchFilter= $this->input->post('id'); - - $DEPCode = $SearchFilter[0]; - $Status = $SearchFilter[1]; - $rng = $SearchFilter[2];; - - $FromDate =''; - $ToDate = ''; - - $Dt = explode("-",$rng); - - if(count( $Dt)>1) - { - $FDate = $Dt[0]; - $TDate = $Dt[1]; - $FromDate = $this->getDateformat($FDate); - $ToDate = $this->getDateformat($TDate); - } - - $result = $this->purchaseorder_model->getRequistionListbySearch($DEPCode,$Status,$FromDate,$ToDate); - - - $HTML=""; - for ($i = 0; $i < count($result); $i++) - { - $SNo = $i + 1; - $ReqNo = $result[$i]['ReqNo']; - $ReqType = $result[$i]['ReqType']; - $Reqedby = $result[$i]['FirstName']; - $ReqDate = $result[$i]['ReqDate']; - $Status = $result[$i]['StatusName']; - $Department = $result[$i]['DepartmentName']; - $Designation = $result[$i]['Designation']; - - $HTML.=" - - ". $ReqNo." - - ".$ReqType." - - ".$Reqedby." - ".$ReqDate." - ".$Status." - ".$Department." - ".$Designation." - "; - } - die(json_encode(array('ReqList' =>$HTML))); - } - - - /* To View the request details*/ - function ListPORequistion() - { - $ReqNo= $this->input->post('id'); - $result = $this->requistion_model->getRequistItemList($ReqNo); - $ReqList = $this->requistion_model->getRequistDetails($ReqNo); - $DepNo = $ReqList[0]['DEPCode']; - $CostList = $this->requistion_model->GetCostCenterByDept($DepNo); - $HTML=""; - for ($i = 0; $i < count($result); $i++) - { - $SNo = $i + 1; - $MaterialCode = $result[$i]['MaterialCode']; - $MaterialName = $result[$i]['MaterialName']; - $UOM = $result[$i]['UOM']; - $Quantity = $result[$i]['Quantity']; - $HTML.=" - ".$SNo." - ". $MaterialCode." - - ".$MaterialName." - - ".$UOM." - ".$Quantity." - "; - - //$index = $index + 1; - - } - - $CostCenter = ""; - if(count($CostList) > 0) - { - for ($j = 0; $j < count($CostList); $j++) - { - $Code = $CostList[$j]['CostCenterCode']; - $Name = $CostList[$j]['CostCenterName']; - $CostCenter .=""; - } - } - - die(json_encode(array('Items' =>$HTML,'Requist'=>$ReqList,'Cost'=>$CostCenter))); - } - - //This used to Create Revenue Purchase Order - function addNewPurchaseOrder() - { - $POdt =$this->input->post('PODate'); - $PODate = $this->getDateformat($POdt); - $SupplierID = $this->input->post('drpSupplier'); - $DeliveryAddr = $this->input->post('DeliveryAddr'); - $dt = $this->input->post('Deliverydt'); - //$Deliverydt = $this->getDateformat($dt); -$DeliveryOption = $this->input->post('DateRange'); - if($DeliveryOption==1){ - $Deliverydt = ''; - $DeliverySchedule = $this->input->post('Scheduleby'); - } - else{ - $Deliverydt = $this->getDateformat($dt); - $DeliverySchedule = ''; - } - $POType = $this->input->post('POType'); - $PoRange = $this->input->post('txtPoRange'); - - $SpcialInstruction = $this->input->post('txtSpcialInstruction'); - $TotalOrderValueSummary = $this->input->post('txtTotalOrderValueSummary'); - $POStatus = $this->input->post('txtStatus'); - - $CreateBy = $this->session->userdata ( 'userId' ); - $RowCount = $this->input->post('txtRowCount'); - $DeletedRow = $this->input->post('txtDeletedRow'); - - $comma_separated = explode(':', $DeletedRow); - - $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); - $createddt = $dt->format('Y-m-d H:i:s'); - // PO Master - $POList = array('SupplierID'=>$SupplierID, 'TotalOrderValue'=>$TotalOrderValueSummary,'PODate'=>$PODate,'DeliverySchedule'=>$DeliverySchedule,'DeliveryOption'=>$DeliveryOption,'Status'=>$POStatus,'PORange'=>$PoRange,'ServiceDescription'=>$SpcialInstruction,'CreatedBy'=>$CreateBy,'DeliveryAddress'=>$DeliveryAddr,'DeliveryDate'=>$Deliverydt,'CreatedDate'=>$createddt ); - - - $POMaster = $this->purchaseorder_model->addPOMaster($POList); - - $PONO = ''; - if(count($POMaster)>0) - { - $PONO = $POMaster[0]['PONO']; - } - - // PO Line Items - $LineItemStatus = REQITEM_NEW; - - for ($i = 1; $i <= $RowCount; $i++) - { - - $MaterialCode = $this->input->post('materialCode'.$i); - $Quantity = $this->input->post('quantity'.$i); - $Reqnumber = $this->input->post('Reqnumber'.$i); - $itemRate = $this->input->post('itemRate'.$i); - - $DiscountType = $this->input->post('DisType'.$i); - $DiscountValue = $this->input->post('DisVal'.$i); - $AfterDiscount = $this->input->post('AfterDisVal'.$i); - $PackagingOption = $this->input->post('PackOption'.$i); - $PackagingType = $this->input->post('PackType'.$i); - $PackagingValue = $this->input->post('PackVal'.$i); - $AfterPackagingValue = $this->input->post('AfterPackVal'.$i); - $ExciseOption = $this->input->post('ExciseOption'.$i); - $ExciseValue = $this->input->post('ExciseVal'.$i); - $AfterExciseValue = $this->input->post('AfterExciseVal'.$i); - $VatOption = $this->input->post('VatOption'.$i); - $VatValue = $this->input->post('VatVal'.$i); - $AfterVatValue = $this->input->post('AfterVatVal'.$i); - $CSTOption = $this->input->post('CSTOption'.$i); - $CSTValue = $this->input->post('CSTVal'.$i); - $AfterCSTValue = $this->input->post('AfterCSTVal'.$i); - $GSTValue = $this->input->post('GSTVal'.$i); - $AfterGSTValue = $this->input->post('AfterGSTVal'.$i); - $OtherTaxValue = $this->input->post('OtherTaxVal'.$i); - $AfterOtherTaxValue = $this->input->post('AfterOtherTaxVal'.$i); - $FreightType = $this->input->post('FreightType'.$i); - $FreightValue = $this->input->post('FreightVal'.$i); - $AfterFreightValue = $this->input->post('AfterFreightVal'.$i); - $InsuranceValue = $this->input->post('Insval'.$i); - $TotalOrderValue = $this->input->post('TotalOrderValue'.$i); - $CostCenter = $this->input->post('costCode'.$i); - - $SkipInsert = "False"; - if( count($comma_separated) > 0) - { - for($j = 1; $j < count($comma_separated); $j++) - { - $deletedRow = $comma_separated[$j] ; - - if($deletedRow == $i ) - { - $SkipInsert = "True"; - break; - } - - } - } - if($SkipInsert == "False") - { - $POLineItemList = array('PONO'=>$PONO, 'ReqNo'=>$Reqnumber,'MaterialCode'=>$MaterialCode,'Quantity'=>$Quantity,'Rate'=>$itemRate,'Status'=>$LineItemStatus,'CreatedBy'=>$CreateBy,'CreatedDate'=>$createddt,'CostCenterCode'=>$CostCenter); - - $POLineItem = $this->purchaseorder_model->addPOLineItem($POLineItemList); - - $LineItemNo = ''; - if(count($POLineItem)>0) - { - $LineItemNo = $POLineItem[0]['LineItemNo']; - } - //echo $LineItemNo; - - if(trim($POType) == REVENUE ) - { - // echo 'Success'; - $RevenueTaxList = array('LineItemNo'=>$LineItemNo, 'DiscountType'=>$DiscountType,'DiscountValue'=>$DiscountValue,'AfterDiscount'=>$AfterDiscount,'PackagingType'=>$PackagingType,'PackagingValue'=>$PackagingValue,'PackagingCalulatedOn'=>$PackagingOption,'AfterPackagingValue'=>$AfterPackagingValue,'FreightType'=>$FreightType, 'FreightValue'=>$FreightValue,'AfterFreightValue'=>$AfterFreightValue,'ExciseDuty'=>$ExciseValue,'ExciseDutyCalulatedOn'=>$ExciseOption,'AfterExciseDuty'=>$AfterExciseValue,'Vat'=>$VatValue,'AfterVAT'=>$AfterVatValue,'VatCalulatedOn'=>$VatOption, 'CST'=>$CSTValue,'AfterCST'=>$AfterCSTValue,'CSTCalulatedOn'=>$CSTOption,'GST'=>$GSTValue,'AfterGST'=>$AfterGSTValue,'OtherTaxes'=>$OtherTaxValue,'AfterOtherTaxes'=>$AfterOtherTaxValue,'Insurance'=>$InsuranceValue,'TotalValue'=>$TotalOrderValue, 'CreatedBy'=>$CreateBy,'CreatedDate'=>$createddt); - - $RevenueList = $this->purchaseorder_model->addRevenueTax($RevenueTaxList); - //echo 'Revenue tax Success'; - } - } - - } - echo 'Purchase Order Created Successfully! PO Number Is: '.$PONO ; - - } - //This used to Edit the Revenue Purchase Order - function EditRevenuePurchaseOrder() - { - $PONO =$this->input->post('txtPONO'); - $POdt =$this->input->post('PODate'); - $PODate = $this->getDateformat($POdt); - $SupplierID = $this->input->post('drpSupplier'); - $DeliveryAddr = $this->input->post('txtDeliveryAddress'); - $dt = $this->input->post('Deliverydt'); - //$Deliverydt = $this->getDateformat($dt); - $DeliveryOption = $this->input->post('DateRange'); - if($DeliveryOption==1){ - $Deliverydt = ''; - $DeliverySchedule = $this->input->post('Scheduleby'); - } - else{ - $Deliverydt = $this->getDateformat($dt); - $DeliverySchedule = ''; - } - $POType = $this->input->post('POType'); - $PoRange = $this->input->post('txtPoRange'); - - $SpcialInstruction = $this->input->post('SpcialInstruction'); - $TotalOrderValueSummary = $this->input->post('txtTotalOrderValueSummary'); - $POStatus = $this->input->post('txtStatus'); - - $updatedBy = $this->session->userdata ( 'userId' ); - $RowCount = $this->input->post('txtRowCount'); - $DeletedRow = $this->input->post('txtDeletedRow'); - - $comma_separated = explode(':', $DeletedRow); - $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); - $updateddt = $dt->format('Y-m-d H:i:s'); - // PO Master - // PO Master - $POList = array('SupplierID'=>$SupplierID, 'TotalOrderValue'=>$TotalOrderValueSummary,'PODate'=>$PODate,'Status'=>$POStatus,'DeliverySchedule'=>$DeliverySchedule,'DeliveryOption'=>$DeliveryOption,'ServiceDescription'=>$SpcialInstruction,'UpdateBY'=>$updatedBy,'DeliveryAddress'=>$DeliveryAddr,'DeliveryDate'=>$Deliverydt,'UpdatedOn'=>$updateddt ); - - $POMaster = $this->purchaseorder_model->updatePOMaster($PONO,$POList); - - $LineItemStatus = REQITEM_NEW; - - - - //echo $RowCount; - for ($i = 1; $i <= $RowCount; $i++) - { - - $MaterialCode = $this->input->post('materialCode'.$i); - $Quantity = $this->input->post('quantity'.$i); - $Reqnumber = $this->input->post('Reqnumber'.$i); - $itemRate = $this->input->post('itemRate'.$i); - - $DiscountType = $this->input->post('DisType'.$i); - $DiscountValue = $this->input->post('DisVal'.$i); - $AfterDiscount = $this->input->post('AfterDisVal'.$i); - $PackagingOption = $this->input->post('PackOption'.$i); - $PackagingType = $this->input->post('PackType'.$i); - $PackagingValue = $this->input->post('PackVal'.$i); - $AfterPackagingValue = $this->input->post('AfterPackVal'.$i); - $ExciseOption = $this->input->post('ExciseOption'.$i); - $ExciseValue = $this->input->post('ExciseVal'.$i); - $AfterExciseValue = $this->input->post('AfterExciseVal'.$i); - $VatOption = $this->input->post('VatOption'.$i); - $VatValue = $this->input->post('VatVal'.$i); - $AfterVatValue = $this->input->post('AfterVatVal'.$i); - $CSTOption = $this->input->post('CSTOption'.$i); - $CSTValue = $this->input->post('CSTVal'.$i); - $AfterCSTValue = $this->input->post('AfterCSTVal'.$i); - $GSTValue = $this->input->post('GSTVal'.$i); - $AfterGSTValue = $this->input->post('AfterGSTVal'.$i); - $OtherTaxValue = $this->input->post('OtherTaxVal'.$i); - $AfterOtherTaxValue = $this->input->post('AfterOtherTaxVal'.$i); - $FreightType = $this->input->post('FreightType'.$i); - $FreightValue = $this->input->post('FreightVal'.$i); - $AfterFreightValue = $this->input->post('AfterFreightVal'.$i); - $InsuranceValue = $this->input->post('Insval'.$i); - $TotalOrderValue = $this->input->post('TotalOrderValue'.$i); - $POLineItemNo = $this->input->post('LineItemNo'.$i); - $CostCenter = $this->input->post('costCode'.$i); - $LineItemNo = ''; - - - $SkipInsert = "False"; - if( count($comma_separated) > 0) - { - for($j = 1; $j < count($comma_separated); $j++) - { - $deletedRow = $comma_separated[$j] ; - - if($deletedRow == $i ) - { - $SkipInsert = "True"; - break; - } - - } - } - if($SkipInsert == "False") - { - if(strlen($POLineItemNo) == 0) - { - $POLineItemList = array('PONO'=>$PONO, 'ReqNo'=>$Reqnumber,'MaterialCode'=>$MaterialCode,'Quantity'=>$Quantity,'Rate'=>$itemRate,'Status'=>$LineItemStatus,'CreatedBy'=>$updatedBy,'CreatedDate'=>$updateddt,'CostCenterCode'=>$CostCenter); - $POLineItem = $this->purchaseorder_model->addPOLineItem($POLineItemList); - if(count($POLineItem)>0) - { - $LineItemNo = $POLineItem[0]['LineItemNo']; - } - - } - else - { - $LineItemNo = $POLineItemNo; - - $POLineItemList = array('PONO'=>$PONO, 'ReqNo'=>$Reqnumber,'MaterialCode'=>$MaterialCode,'Quantity'=>$Quantity,'Rate'=>$itemRate,'Status'=>$LineItemStatus,'UpdateBY'=>$updatedBy,'UpdatedOn'=>$updateddt,'CostCenterCode'=>$CostCenter); - $POLineItem = $this->purchaseorder_model->updatePOLineItem($PONO,$POLineItemNo,$POLineItemList); - - } - $isExists = $this->purchaseorder_model->LineItemExistsinRevenueTax($LineItemNo); - if(count($isExists) == 0) - { - $RevenueTaxList = array('LineItemNo'=>$LineItemNo, 'DiscountType'=>$DiscountType,'DiscountValue'=>$DiscountValue,'AfterDiscount'=>$AfterDiscount,'PackagingType'=>$PackagingType,'PackagingValue'=>$PackagingValue,'PackagingCalulatedOn'=>$PackagingOption,'AfterPackagingValue'=>$AfterPackagingValue,'FreightType'=>$FreightType, 'FreightValue'=>$FreightValue,'AfterFreightValue'=>$AfterFreightValue,'ExciseDuty'=>$ExciseValue,'ExciseDutyCalulatedOn'=>$ExciseOption,'AfterExciseDuty'=>$AfterExciseValue,'Vat'=>$VatValue,'AfterVAT'=>$AfterVatValue,'VatCalulatedOn'=>$VatOption, 'CST'=>$CSTValue,'AfterCST'=>$AfterCSTValue,'CSTCalulatedOn'=>$CSTOption,'GST'=>$GSTValue,'AfterGST'=>$AfterGSTValue,'OtherTaxes'=>$OtherTaxValue,'AfterOtherTaxes'=>$AfterOtherTaxValue,'Insurance'=>$InsuranceValue,'TotalValue'=>$TotalOrderValue, 'CreatedBy'=>$updatedBy,'CreatedDate'=>$updateddt); - - $RevenueList = $this->purchaseorder_model->addRevenueTax($RevenueTaxList); - - } - else - { - $RevenueTaxList = array('DiscountType'=>$DiscountType,'DiscountValue'=>$DiscountValue,'AfterDiscount'=>$AfterDiscount,'PackagingType'=>$PackagingType,'PackagingValue'=>$PackagingValue,'PackagingCalulatedOn'=>$PackagingOption,'AfterPackagingValue'=>$AfterPackagingValue,'FreightType'=>$FreightType, 'FreightValue'=>$FreightValue,'AfterFreightValue'=>$AfterFreightValue,'ExciseDuty'=>$ExciseValue,'ExciseDutyCalulatedOn'=>$ExciseOption,'AfterExciseDuty'=>$AfterExciseValue,'Vat'=>$VatValue,'AfterVAT'=>$AfterVatValue,'VatCalulatedOn'=>$VatOption, 'CST'=>$CSTValue,'AfterCST'=>$AfterCSTValue,'CSTCalulatedOn'=>$CSTOption,'GST'=>$GSTValue,'AfterGST'=>$AfterGSTValue,'OtherTaxes'=>$OtherTaxValue,'AfterOtherTaxes'=>$AfterOtherTaxValue,'Insurance'=>$InsuranceValue,'TotalValue'=>$TotalOrderValue, 'UpdateBY'=>$updatedBy,'UpdatedOn'=>$updateddt); - - $this->purchaseorder_model->updateRevenueTax($LineItemNo,$RevenueTaxList); - - } - } - - } - - echo 'Purchase Order Updated Successfully! PO Number Is: '.$PONO ; - } - function pageNotFound() - { - $this->global['pageTitle'] = 'CodeInsect : 404 - Page Not Found'; - - $this->loadViews("404", $this->global, NULL, NULL); - } - - public function revenuepoprint($PONO) - { - // Load all views as normal - - - //$PONO = $_GET['PO']; - - $data['CompanyDetails'] = $this->purchaseorder_model->getCompanyInformation(); - $data['POItem'] = $this->purchaseorder_model->GetRevenuePurchaseOrderDetailsForPDF($PONO); - - - // Add header to pdf - //$this->load->view('includes/pdfheader'); - - // Load the pdf page with multiviews - $this->load->View("revenuepopdf", $data); - - // Add header to pdf - //$this->load->view('includes/pdffooter'); - - // Get output html - $php = $this->output->get_output(); - - // Load library - $this->load->library('dompdf_gen'); - - // Convert to PDF - $this->dompdf->load_html($php); - $this->dompdf->render(); - $data['Attachment'] = FALSE; - $this->dompdf->stream("RevenuePOReport.pdf",$data,$php); - -} - public function servicepoprint($PONO) - { - - // $this->load->view('includes/pdfheader'); - - // Load the pdf page with multiviews - $data['CompanyDetails'] = $this->purchaseorder_model->getCompanyInformation(); - $data['POItem'] = $this->purchaseorder_model->GetServicePurchaseOrderDetailsForPrint($PONO); - $data['releasedetails'] = $this->purchaseorder_model->GetReleasedDetails($PONO); - $this->load->View("servicepopdf", $data); - - // Add header to pdf - //$this->load->view('includes/pdffooter'); - - // Get output html - $php = $this->output->get_output(); - - // Load library - $this->load->library('dompdf_gen'); - - // Convert to PDF - $this->dompdf->load_html($php); - $this->dompdf->render(); - $data['Attachment'] = FALSE; - $this->dompdf->stream("ServicePOReport.pdf",$data,$php); - -} - - - - -public function importpoprint($PONO) - { - - // $this->load->view('includes/pdfheader'); - - // Load the pdf page with multiviews - $data['CompanyDetails'] = $this->purchaseorder_model->getCompanyInformation(); - $data['POItem'] = $this->purchaseorder_model->GetImportPurchaseOrderDetailsForPDF($PONO); - - $this->load->View("importpopdf", $data); - - // Add header to pdf - //$this->load->view('includes/pdffooter'); - - // Get output html - $php = $this->output->get_output(); - - // Load library - $this->load->library('dompdf_gen'); - - // Convert to PDF - $this->dompdf->set_paper(array(0, 0, 841.89, 1190.55), 'landscape'); - $this->dompdf->load_html($php); - $this->dompdf->render(); - $data['Attachment'] = FALSE; - $this->dompdf->stream("ImportPOReport.pdf",$data,$php); - -} - - -/** - * This function used to load the Delete the Requistion Items - */ - function DeletePODetails() - { - - $ReqList= $this->input->post('id'); - $LineItemNo = ''; - $ReqNo =''; - $MaterialCode = ''; - $POType = ''; - if(count($ReqList) > 0) - { - $LineItemNo = $ReqList[0]; - $ReqNo = $ReqList[1]; - $MaterialCode = $ReqList[2]; - $POType = $ReqList[3]; - } - // print_r($ReqList); - - - If($POType == REVENUE) - { - $this->purchaseorder_model->DeletePORevenueTax($LineItemNo); - } - else If($POType == SERVICE) - { - $this->purchaseorder_model->DeletePOServiceTax($LineItemNo); - } - else If($POType == IMPORT) - { - $this->purchaseorder_model->DeletePOImportTax($LineItemNo); - } - $this->purchaseorder_model->DeletePOLineItem($LineItemNo , $ReqNo,$MaterialCode); - echo "Successfully Deleted the Line item".$LineItemNo; - - } - - - - - function addNewImportPurchaseOrder() - {//echo ("ggh"); - - $POdt =$this->input->post('PODate'); - $PODate = $this->getDateformat($POdt); - $SupplierID = $this->input->post('drpSupplier'); - $DeliveryAddr = $this->input->post('DeliveryAddr'); - $dt = $this->input->post('Deliverydt'); - $Deliverydt = $this->getDateformat($dt); - $POType = $this->input->post('POType'); - $PoRange = $this->input->post('txtPoRange'); - - $DeliveryOption = $this->input->post('DateRange'); - if($DeliveryOption==1){ - $Deliverydt = ''; - $DeliverySchedule = $this->input->post('Scheduleby'); - } - else{ - $Deliverydt = $this->getDateformat($dt); - $DeliverySchedule = ''; - } - - $SpcialInstruction = $this->input->post('txtSpcialInstruction'); - $TotalOrder = $this->input->post('txtToatlOrder'); - $POStatus = $this->input->post('textStatus'); - //echo "$POStatus"; - //die(); - - $CreateBy = $this->session->userdata ( 'userId' ); - $RowCount = $this->input->post('txtRowCount'); - - $DeletedRow = $this->input->post('txtDeletedRow'); - - $comma_separated = explode(':', $DeletedRow); - - $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); - $createddt = $dt->format('Y-m-d H:i:s'); - - - $POList = array('SupplierID'=>$SupplierID, 'TotalOrderValue'=>$TotalOrder,'PODate'=>$PODate,'Status'=>$POStatus,'PORange'=>$PoRange,'ServiceDescription'=>$SpcialInstruction,'CreatedBy'=>$CreateBy,'DeliveryAddress'=>$DeliveryAddr,'DeliveryDate'=>$Deliverydt,'CreatedDate'=>$createddt,'DeliverySchedule'=>$DeliverySchedule,'DeliveryOption'=>$DeliveryOption ); - - - $POMaster = $this->purchaseorder_model->addPOMaster($POList); - - $PONO = ''; - if(count($POMaster)>0) - { - $PONO = $POMaster[0]['PONO']; - } - //echo $PONO; - //echo $POType; - // PO Line Items - $LineItemStatus = REQITEM_NEW; - //echo ' test:'.REVENUE; - //echo $RowCount; - for ($i = 1; $i <= $RowCount; $i++) - { - //echo "AS"; - $MaterialCode = $this->input->post('materialCode'.$i); - $Quantity = $this->input->post('quantity'.$i); - $Reqnumber = $this->input->post('Reqnumber'.$i); - $itemRate = $this->input->post('itemRate'.$i); - - $Exchangerate = $this->input->post('Exchangerate'.$i); - $BasicPriceinmton = $this->input->post('BasicPriceinUS'.$i); - $Productprice = $this->input->post('BasicAmt'.$i); - $LandingCharge = $this->input->post('LandingChargee'.$i); - $AfterLandingCharge = $this->input->post('AfterLandingChargee'.$i); - $HighSeas = $this->input->post('Highseass'.$i); - $AfterHighSeas = $this->input->post('AfterHighseass'.$i); - - $CustomDuty = $this->input->post('Customduty'.$i); - $AfterCustomDuty = $this->input->post('AfterCustomduty'.$i); - - $ExciseDuty = $this->input->post('ExcisedutyTax'.$i); - $AfterExciseDuty = $this->input->post('AfterExcisedutyTax'.$i); - $ExciseDutyEd = $this->input->post('ExcisedutyED'.$i); - $AfterExciseDutyEd = $this->input->post('AfterExcisedutyED'.$i); - - $ExciseDutySH = $this->input->post('ExcisedutySH'.$i); - $AfterExciseDutySH = $this->input->post('AfterExcisedutySH'.$i); - - $CustomEd= $this->input->post('CustomEDcess'.$i); - $AfterCustomEd= $this->input->post('AfterCustomEDcess'.$i); - - $CustomSH = $this->input->post('CustomSHcess'.$i); - $AfterCustomSH = $this->input->post('AfterCustomSHcess'.$i); - - $AddAdtional = $this->input->post('AdditionalExciseduty'.$i); - $AfterAddAdtional = $this->input->post('AfterAdditionalExciseduty'.$i); - - $Grossdutypayable = $this->input->post('Grossdutypayable'.$i); - $AvailableModvat = $this->input->post('AvilableModvat'.$i); - $Grossexpensesduetocustomduty = $this->input->post('Grossexpenses'.$i); - $purchaseratePerKG = $this->input->post('purchaserate'.$i); - $CustomDutyExpensesPerKG = $this->input->post('CustomDutyExpenses'.$i); - $RMCIncludingCustomersPerKG = $this->input->post('RMCIncludingCustomers'.$i); - $QuantityKG = $this->input->post('PurQuantity'.$i); - - $currencytypeID = $this->input->post('currencytype'); - $Totalvalueitem=$this->input->post('TotalExp'.$i); - - //echo $BasicPriceinmton; - $CostCenter = $this->input->post('costCode'.$i); - - $SkipInsert = "False"; - if( count($comma_separated) > 0) - { - for($j = 1; $j < count($comma_separated); $j++) - { - $deletedRow = $comma_separated[$j] ; - - if($deletedRow == $i ) - { - $SkipInsert = "True"; - break; - } - - } - } - if($SkipInsert == "False") - { - $POLineItemList = array('PONO'=>$PONO, 'ReqNo'=>$Reqnumber,'MaterialCode'=>$MaterialCode,'Quantity'=>$Quantity,'Rate'=>$itemRate,'Status'=>$LineItemStatus,'CreatedBy'=>$CreateBy,'CreatedDate'=>$createddt,'CostCenterCode'=>$CostCenter); - - $POLineItem = $this->purchaseorder_model->addPOLineItem($POLineItemList); - - $LineItemNo = ''; - if(count($POLineItem)>0) - { - $LineItemNo = $POLineItem[0]['LineItemNo']; - } - //echo $LineItemNo; - - if(trim($POType) == IMPORT ) - { - // echo 'Success'; - $ImportTaxList = array('LineItemNo'=>$LineItemNo, 'ExchangeRate'=>$Exchangerate,'BasicPriceInMTon'=>$BasicPriceinmton,'ProductPrice'=>$Productprice,'LandingCharge'=>$LandingCharge,'AfterLandingCharge'=>$AfterLandingCharge,'AfterHighSeasSalesCharge'=>$AfterHighSeas,'HighSeasSalesCharge'=>$HighSeas,'CustomDuty'=>$CustomDuty,'AfterCustomDuty'=>$AfterCustomDuty,'ExciseDuty'=>$ExciseDuty,'AfterExciseDuty'=>$AfterExciseDuty,'ExciseDutyEdCess'=>$ExciseDutyEd,'AfterExciseDutyEdCess'=>$AfterExciseDutyEd,'ExciseDutySHCess'=>$ExciseDutySH,'CustomEdCess'=>$CustomEd,'CustomSHCess'=>$CustomSH,'AddlExciseDuty'=>$AddAdtional,'CreatedBy'=>$CreateBy,'CreatedDate'=>$createddt,'AfterExciseDutySHCess'=>$AfterExciseDutySH,'AfterAddlExciseDuty'=>$AfterAddAdtional,'Grossdutypayable'=>$Grossdutypayable,'AvailableModvat'=>$AvailableModvat,'Grossexpensesduetocustomduty'=>$Grossexpensesduetocustomduty,'purchaseratePerKG'=>$purchaseratePerKG,'CustomDutyExpensesPerKG'=>$CustomDutyExpensesPerKG,'RMCIncludingCustomersPerKG'=>$RMCIncludingCustomersPerKG,'QuantityKG'=>$QuantityKG,'AfterCustomSHCess'=>$AfterCustomSH,'AfterCustomEdCess'=>$AfterCustomEd,'CurrencyType'=>$currencytypeID,'TotalValue'=>$Totalvalueitem); - //print_r($ImportTaxList); - //die(); - - - $ImportList = $this->purchaseorder_model->addImportTax($ImportTaxList); - - } - } - - } - echo 'Purchase Order Created Successfully! PO Number Is: '.$PONO ; - } - - function EditImportPurchaseOrder() - { - - $PONO =$this->input->post('txtPONO'); -$POdt = ''; -$createddt=''; - - $PODate = $this->getDateformat($POdt); - $SupplierID = $this->input->post('drpSupplier'); - $DeliveryAddr = $this->input->post('DeliveryAddr'); - $dt = $this->input->post('Deliverydt'); - $Deliverydt = $this->getDateformat($dt); - $POType = $this->input->post('POType'); - $PoRange = $this->input->post('txtPoRange'); - $DeliveryOption = $this->input->post('DateRange'); - if($DeliveryOption==1){ - $Deliverydt = ''; - $DeliverySchedule = $this->input->post('Scheduleby'); - } - else{ - $Deliverydt = $this->getDateformat($dt); - $DeliverySchedule = ''; - } - - - $SpcialInstruction = $this->input->post('txtSpcialInstruction'); - $TotalOrder = $this->input->post('txtToatlOrder'); - $POStatus = $this->input->post('txtStatus'); - - $CreateBy = $this->session->userdata ( 'userId' ); - $RowCount = $this->input->post('txtRowCount'); - $DeletedRow = $this->input->post('txtDeletedRow'); - - $comma_separated = explode(':', $DeletedRow); - $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); - $updateddt = $dt->format('Y-m-d H:i:s'); - // PO Master - // PO Master - $POList = array('SupplierID'=>$SupplierID, 'TotalOrderValue'=>$TotalOrder,'PODate'=>$PODate,'Status'=>$POStatus,'PORange'=>$PoRange,'ServiceDescription'=>$SpcialInstruction,'CreatedBy'=>$CreateBy,'DeliveryAddress'=>$DeliveryAddr,'DeliveryDate'=>$Deliverydt,'CreatedDate'=>$createddt,'DeliverySchedule'=>$DeliverySchedule,'DeliveryOption'=>$DeliveryOption ); - //echo $PONO; - //echo $TotalOrder; - //print_r($POList); - //die(); - - $POMaster = $this->purchaseorder_model->updatePOMaster($PONO,$POList); - - $LineItemStatus = REQITEM_NEW; - - - - //echo $RowCount; - for ($i = 1; $i <= $RowCount; $i++) - { - - $MaterialCode = $this->input->post('materialCode'.$i); - $Quantity = $this->input->post('quantity'.$i); - $Reqnumber = $this->input->post('Reqnumber'.$i); - $itemRate = $this->input->post('itemRate'.$i); - - $Exchangerate = $this->input->post('Exchangerate'.$i); - $BasicPriceinmton = $this->input->post('BasicPriceinUS'.$i); - $Productprice = $this->input->post('BasicAmt'.$i); - $LandingCharge = $this->input->post('LandingChargee'.$i); - $AfterLandingCharge = $this->input->post('AfterLandingChargee'.$i); - $HighSeas = $this->input->post('Highseass'.$i); - $AfterHighSeas = $this->input->post('AfterHighseass'.$i); - - $CustomDuty = $this->input->post('Customduty'.$i); - $AfterCustomDuty = $this->input->post('AfterCustomduty'.$i); - - $ExciseDuty = $this->input->post('ExcisedutyTax'.$i); - $AfterExciseDuty = $this->input->post('AfterExcisedutyTax'.$i); - $ExciseDutyEd = $this->input->post('ExcisedutyED'.$i); - $AfterExciseDutyEd = $this->input->post('AfterExcisedutyED'.$i); - - $ExciseDutySH = $this->input->post('ExcisedutySH'.$i); - $AfterExciseDutySH = $this->input->post('AfterExcisedutySH'.$i); - - $CustomEd= $this->input->post('CustomEDcess'.$i); - $AfterCustomEd= $this->input->post('AfterCustomEDcess'.$i); - - $CustomSH = $this->input->post('CustomSHcess'.$i); - $AfterCustomSH = $this->input->post('AfterCustomSHcess'.$i); - - $AddAdtional = $this->input->post('AdditionalExciseduty'.$i); - $AfterAddAdtional = $this->input->post('AfterAdditionalExciseduty'.$i); - - $Grossdutypayable = $this->input->post('Grossdutypayable'.$i); - $AvailableModvat = $this->input->post('AvilableModvat'.$i); - $Grossexpensesduetocustomduty = $this->input->post('Grossexpenses'.$i); - $purchaseratePerKG = $this->input->post('purchaserate'.$i); - $CustomDutyExpensesPerKG = $this->input->post('CustomDutyExpenses'.$i); - $RMCIncludingCustomersPerKG = $this->input->post('RMCIncludingCustomers'.$i); - $QuantityKG = $this->input->post('PurQuantity'.$i); - - $POLineItemNo = $this->input->post('LineItemNo'.$i); - $CostCenter = $this->input->post('costCode'.$i); - $ExciseDutySH = $this->input->post('ExcisedutySH'.$i); - $Totalvalueitem=$this->input->post('TotalExp'.$i); - $LineItemNo = ''; - - $currencytypeID = $this->input->post('currencytype'); - $SkipInsert = "False"; - if( count($comma_separated) > 0) - { - for($j = 1; $j < count($comma_separated); $j++) - { - $deletedRow = $comma_separated[$j] ; - - if($deletedRow == $i ) - { - $SkipInsert = "True"; - break; - } - - } - } - if($SkipInsert == "False") - { - if(strlen($POLineItemNo) == 0) - { - $POLineItemList = array('PONO'=>$PONO, 'ReqNo'=>$Reqnumber,'MaterialCode'=>$MaterialCode,'Quantity'=>$Quantity,'Rate'=>$itemRate,'Status'=>$LineItemStatus,'CreatedBy'=>$CreateBy,'CreatedDate'=>$createddt,'CostCenterCode'=>$CostCenter); - if(count($POLineItem)>0) - { - $LineItemNo = $POLineItem[0]['LineItemNo']; - } - - } - else - { - $LineItemNo = $POLineItemNo; - - $POLineItemList = array('PONO'=>$PONO, 'ReqNo'=>$Reqnumber,'MaterialCode'=>$MaterialCode,'Quantity'=>$Quantity,'Rate'=>$itemRate,'Status'=>$LineItemStatus,'UpdateBY'=>$updatedBy,'UpdatedOn'=>$updateddt,'CostCenterCode'=>$CostCenter); - $POLineItem = $this->purchaseorder_model->updatePOLineItem($PONO,$POLineItemNo,$POLineItemList); - - } - $isExists = $this->purchaseorder_model->LineItemExistsinImportTax($LineItemNo); - if(count($isExists) == 0) - { - $ImportTaxList = array('LineItemNo'=>$LineItemNo, 'ExchangeRate'=>$Exchangerate,'BasicPriceInMTon'=>$BasicPriceinmton,'ProductPrice'=>$Productprice,'LandingCharge'=>$LandingCharge,'AfterLandingCharge'=>$AfterLandingCharge,'AfterHighSeasSalesCharge'=>$AfterHighSeas,'HighSeasSalesCharge'=>$HighSeas,'CustomDuty'=>$CustomDuty,'AfterCustomDuty'=>$AfterCustomDuty,'ExciseDuty'=>$ExciseDuty,'AfterExciseDuty'=>$AfterExciseDuty,'ExciseDutyEdCess'=>$ExciseDutyEd,'AfterExciseDutyEdCess'=>$AfterExciseDutyEd,'ExciseDutySHCess'=>$ExciseDutySH,'CustomEdCess'=>$CustomEd,'CustomSHCess'=>$CustomSH,'AddlExciseDuty'=>$AddAdtional,'CreatedBy'=>$CreateBy,'CreatedDate'=>$createddt,'AfterExciseDutySHCess'=>$AfterExciseDutySH,'AfterAddlExciseDuty'=>$AfterAddAdtional,'Grossdutypayable'=>$Grossdutypayable,'AvailableModvat'=>$AvailableModvat,'Grossexpensesduetocustomduty'=>$Grossexpensesduetocustomduty,'purchaseratePerKG'=>$purchaseratePerKG,'CustomDutyExpensesPerKG'=>$CustomDutyExpensesPerKG,'RMCIncludingCustomersPerKG'=>$RMCIncludingCustomersPerKG,'QuantityKG'=>$QuantityKG,'AfterCustomSHCess'=>$AfterCustomSH,'AfterCustomEdCess'=>$AfterCustomEd,'CurrencyType'=>$currencytypeID,'TotalValue'=>$Totalvalueitem); - //print_r($ImportTaxList); - //die(); - $ImportList = $this->purchaseorder_model->addImportTax($ImportTaxList); - - } - else - { - $ImportTaxList = array('LineItemNo'=>$LineItemNo, 'ExchangeRate'=>$Exchangerate,'BasicPriceInMTon'=>$BasicPriceinmton,'ProductPrice'=>$Productprice,'LandingCharge'=>$LandingCharge,'AfterLandingCharge'=>$AfterLandingCharge,'AfterHighSeasSalesCharge'=>$AfterHighSeas,'HighSeasSalesCharge'=>$HighSeas,'CustomDuty'=>$CustomDuty,'AfterCustomDuty'=>$AfterCustomDuty,'ExciseDuty'=>$ExciseDuty,'AfterExciseDuty'=>$AfterExciseDuty,'ExciseDutyEdCess'=>$ExciseDutyEd,'AfterExciseDutyEdCess'=>$AfterExciseDutyEd,'ExciseDutySHCess'=>$ExciseDutySH,'CustomEdCess'=>$CustomEd,'CustomSHCess'=>$CustomSH,'AddlExciseDuty'=>$AddAdtional,'CreatedBy'=>$CreateBy,'CreatedDate'=>$createddt,'AfterExciseDutySHCess'=>$AfterExciseDutySH,'AfterAddlExciseDuty'=>$AfterAddAdtional,'Grossdutypayable'=>$Grossdutypayable,'AvailableModvat'=>$AvailableModvat,'Grossexpensesduetocustomduty'=>$Grossexpensesduetocustomduty,'purchaseratePerKG'=>$purchaseratePerKG,'CustomDutyExpensesPerKG'=>$CustomDutyExpensesPerKG,'RMCIncludingCustomersPerKG'=>$RMCIncludingCustomersPerKG,'QuantityKG'=>$QuantityKG,'AfterCustomSHCess'=>$AfterCustomSH,'AfterCustomEdCess'=>$AfterCustomEd,'CurrencyType'=>$currencytypeID,'TotalValue'=>$Totalvalueitem); - - //print_r($ImportTaxList); - //die(); - $this->purchaseorder_model->updateImportTax($LineItemNo,$ImportTaxList); - - } - } - - } - - echo 'Purchase Order Updated Successfully! PO Number Is: '.$PONO ; - } - - - /* All Function following This command for FINANCE TEAM PO APPROVAL SCREEN*/ - function poapproval(){ - $q="A"; - $this->global['pageTitle'] = 'Siddharth : Purchase Order Approval'; - // $data['Status']= $this->purchaseorder_model->getStatus(); - $userID = $this->session->userdata ( 'userId' ); - //print_r($data['Status']);echo "CON"; - $data['AppList'] = $this->purchaseorder_model->getPOList($q); - $this->loadViews("poapproval_view", $this->global,$data, NULL); - - } - - function getDateformat2($Val) - { - $date = new DateTime($Val); - $retDate = $date->format('Y-m-d H:i:s'); - return $retDate; - } - - - function ApprovePO() - { - $StatusCode= Trim($_POST['SCode']); - - $PONO= Trim($_POST['PONO']); - $Remarks= Trim($_POST['NewRemarks']); - - $ApprovedBy = $this->session->userdata ( 'userId' ); - $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); - $ApprovedDate = $dt->format('Y-m-d H:i:s'); - - if($StatusCode == 'ST025') - { - - $store = array('Status'=>$StatusCode,'ApprovedOn'=>$ApprovedDate,'Approvedby'=>$ApprovedBy,'Remarks'=>$Remarks); - $this->purchaseorder_model->UpdatePO($store,$PONO); - echo "Successfully Updated the Purchase Order No: ".$PONO; - } - else{ - $store = array('Status'=>$StatusCode,'OnHoldOn'=>$ApprovedDate,'OnHoldBy'=>$ApprovedBy,'Remarks'=>$Remarks); - $this->purchaseorder_model->UpdatePO($store,$PONO); - echo "Successfully Updated the Purchase Order No: ".$PONO; - - } - - - - - } - - - - - /* FOLLOWING CODES FOR PO RELEASE SCREEN FUNCTIONALITIES*/ - - - function porelease(){ - - $q="R"; - $this->global['pageTitle'] = 'Siddharth : Purchase Order Release'; - // $data['Status']= $this->purchaseorder_model->getStatus(); - $userID = $this->session->userdata ( 'userId' ); - //print_r($data['Status']);echo "CON"; - $data['AppList'] = $this->purchaseorder_model->getPOList($q); - $this->loadViews("porelease_view", $this->global,$data, NULL); - - } - - - function ReleasePO() - { - $StatusCode= Trim($_POST['SCode']); - - $PONO= Trim($_POST['PONO']); - $Remarks= Trim($_POST['NewRemarks']); - - $ReleasedBy = $this->session->userdata ( 'userId' ); - $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); - $ReleasedDate = $dt->format('Y-m-d H:i:s'); - - if($StatusCode == 'ST026') - { - - $store = array('Status'=>$StatusCode,'ReleasedOn'=>$ReleasedDate,'ReleasedBy'=>$ReleasedBy,'Remarks'=>$Remarks); - $this->purchaseorder_model->UpdatePO($store,$PONO); - echo "Successfully Updated the Purchase Order No: ".$PONO; - } - else{ - $store = array('Status'=>$StatusCode,'OnHoldOn'=>$ReleasedOn,'OnHoldBy'=>$ReleasedBy,'Remarks'=>$Remarks); - $this->purchaseorder_model->UpdatePO($store,$PONO); - echo "Successfully Updated the Purchase Order No: ".$PONO; - - } -} - -} - -?> diff --git a/application/controllers/rawmaterialdetails.php b/application/controllers/rawmaterialdetails.php deleted file mode 100644 index 5fe3ac95..00000000 --- a/application/controllers/rawmaterialdetails.php +++ /dev/null @@ -1,325 +0,0 @@ -load->model('rawmaterialdetails_model'); - $this->load->library('pagination'); - $this->load->library('form_validation'); - $this->load->library('Excel'); - - $this->isLoggedIn(); - } - /** - * This function used to load the first screen of the user - */ - public function index() - { - $this->global['pageTitle'] = 'Siddharth : RawMaterialDetails'; - - $this->loadViews("rawmaterialListing", $this->global, NULL , NULL); - } - - /** - * This function is used to load the RawMaterialDetails list - */ - function rawmaterialListing() - { - - $this->load->model('rawmaterialdetails_model'); - - - - $data['userRecords'] = $this->rawmaterialdetails_model->rawmaterialListing(); - - $this->global['pageTitle'] = 'Siddharth : RawMaterial Listing'; - - $this->loadViews("rawmaterialListing", $this->global, $data, NULL); - - } - /** - * This function is used to load the add new cost */ - function addRawMaterial() - { - - $this->load->model('rawmaterialdetails_model'); - $data['material'] = $this->rawmaterialdetails_model->getmaterialType(); - $data['UOM'] = $this->rawmaterialdetails_model->getUOM(); - - $this->global['pageTitle'] = 'siddharth : AddNew RawMaterial'; - - $this->loadViews("addRawMaterial", $this->global, $data, NULL); - - } - /* - Validation for Material Type Dropdown - */ - function MaterialType_validate($selectValue) -{ - //echo 'select_validate method called'; - // 'none' is the first option and the text says something like "-Choose one-" - if($selectValue == '-1') - { - $this->form_validation->set_message('MaterialType_validate', 'Please Select Material Type.'); - return false; - } - else // user picked something - { - return true; - } -} -/* - Validation for Material Type Dropdown - */ - function UOM_validate($selectValue) -{ - //echo 'select_validate method called'; - // 'none' is the first option and the text says something like "-Choose one-" - if($selectValue == '-1') - { - $this->form_validation->set_message('UOM_validate', 'Please Select UOM.'); - return false; - } - else // user picked something - { - return true; - } -} - /* This function is used to add new Cost to the system - */ - function addNewRawMaterial() - { - - $this->form_validation->set_rules('MaterialName','Material Name','trim|required|'); - $this->form_validation->set_rules('MaterialType','MaterialType','trim|callback_MaterialType_validate'); - $this->form_validation->set_rules('UOM','UOM','trim|callback_UOM_validate'); - - if($this->form_validation->run() == FALSE) - { - $this->addRawMaterial(); - } - else - { - $MaterialName = $this->input->post('MaterialName'); - $MaterialType = $this->input->post('MaterialType'); - $UOM = $this->input->post('UOM'); - $CreatedBy = $this->session->userdata('userId'); - - $chked = $this->input->post('isactive'); - - if( $chked != '') - { - $IsActive = '1'; - } - else - { - $IsActive = '0'; - } - - $RawMaterial = array('MaterialName'=>$MaterialName, 'MaterialType'=>$MaterialType, 'UOM'=>$UOM,'CreatedBy'=>$CreatedBy,'IsActive' => $IsActive); - - $result = $this->rawmaterialdetails_model->addNewRawMaterial($RawMaterial); - - if($result > 0) - { - - redirect('rawmaterialListing','refresh'); - echo ""; - - } - else - { - redirect('rawmaterialListing','refresh'); - echo ""; - - } - - } - } - function viewRawmaterial($RID= '') - { - $MaterialType = ''; - $UOM = ''; - if($RID == '') - { - $RawMaterialID = $_GET['RID']; - $MaterialType = $_GET['MType']; - $UOM = $_GET['UOM']; - } - else - { - $RawMaterialID = $RID; - } - - $data['materialDetails'] = $this->rawmaterialdetails_model->getMaterialDetails($RawMaterialID); - - $data['materialType'] = $this->rawmaterialdetails_model->getmaterialType($MaterialType ); - $data['UOMList'] = $this->rawmaterialdetails_model->getUOM($UOM); - $this->global['pageTitle'] = 'Siddharth : Edit Material Master'; - $this->loadViews("editOldRawmaterial", $this->global,$data, NULL); - } - - - /** - * This function is used to edit the user information - */ - function editRawmaterial() - { - if($this->isAdmin() == TRUE) - { - $this->loadThis(); - } - else - { - $RawmaterialID = $this->input->post('MaterialCode'); - $this->form_validation->set_rules('MaterialName','Material Name','trim|required|'); - $this->form_validation->set_rules('MaterialType','MaterialType','trim'); - $this->form_validation->set_rules('UOM','UOM','trim'); - - if($this->form_validation->run() == FALSE) - { - $this->viewRawmaterial($RawmaterialID); - - } - else - { - $MaterialCode = $this->input->post('MaterialCode'); - $MaterialName = $this->input->post('MaterialName'); - $MaterialType = $this->input->post('MaterialType'); - $UOM = $this->input->post('UOM'); - $UpdatedBy = $this->session->userdata ('userId'); - $chked = $this->input->post('isactive'); - - if( $chked != '') - { - $IsActive = '1'; - } - else - { - $IsActive = '0'; - } - - $RawMaterial = array(); - $RawMaterial = array('MaterialName'=>$MaterialName,'MaterialType'=>$MaterialType,'UpdatedBy'=>$UpdatedBy, 'UOM'=>$UOM,'IsActive' => $IsActive); - - $result = $this->rawmaterialdetails_model->editRawmaterial($RawMaterial, $MaterialCode); - - if($result == true) - { - redirect('rawmaterialListing','refresh'); - - echo ""; - } - else - { - redirect('rawmaterialListing','refresh'); - echo ""; - - } - - - } - } - } - /** this function can be use for excel report **/ - - function export_material(){ - - - $this->load->library('excel'); - $this->excel->setActiveSheetIndex(0)->mergeCells('D3:J3'); - - $this->excel->getActiveSheet()->setTitle('Material Master'); - - $this->excel->getActiveSheet()->setCellValue('D3', 'SIDDHARTH INDUSTRIES Raw Material'); - $this->excel->getActiveSheet()->setCellValue('C5', 'MaterialCode'); - $this->excel->getActiveSheet()->setCellValue('D5', 'MaterialName'); - $this->excel->getActiveSheet()->setCellValue('E5', 'MaterialType'); - $this->excel->getActiveSheet()->setCellValue('F5', 'UOM'); - $this->excel->getActiveSheet()->setCellValue('G5', 'Created by'); - $this->excel->getActiveSheet()->setCellValue('H5', 'Updated By'); - $this->excel->getActiveSheet()->setCellValue('I5', 'IsActive'); - - - - - $this->excel->getActiveSheet()->getStyle('D3')->getFont()->setSize(14); - $this->excel->getActiveSheet()->getStyle('D3')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('C5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('C5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('D5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('D5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('E5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('E5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('F5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('F5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('G5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('G5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('H5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('H5')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('I5')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('I5')->getFont()->setBold(true); - - - - - $exportData = $this->rawmaterialdetails_model->export_excel(); - - if ($exportData) { - $i = 6; - $s = 1; - foreach ($exportData as $data) { - - $this->excel->getActiveSheet()->setCellValue('C' . $i,$data['MaterialCode']); - $this->excel->getActiveSheet()->setCellValue('D' . $i,$data['MaterialName']); - $this->excel->getActiveSheet()->setCellValue('E' . $i,$data['MaterialType']); - $this->excel->getActiveSheet()->setCellValue('F' . $i,$data['UOM']); - $this->excel->getActiveSheet()->setCellValue('G' . $i,$data['firstname']); - $this->excel->getActiveSheet()->setCellValue('H' . $i,$data['Updated_By']); - $this->excel->getActiveSheet()->setCellValue('I' . $i,$data['IsActive']); - - - - - - - $i++; - $s++; - } - } - - $filename = 'RawMaterial' .' '. '.xls'; //save our workbook as this file name - header('Content-Type: application/vnd.ms-excel'); //mime type - header('Content-Disposition: attachment;filename="' . $filename . '"'); //tell browser what's the file name - header('Cache-Control: max-age=0'); //no cache - $objWriter = PHPExcel_IOFactory::createWriter($this->excel, 'Excel5'); - if (ob_get_contents()) ob_end_clean(); - ob_start(); - $objWriter->save('php://output'); - - - } - - function pageNotFound() - { - $this->global['pageTitle'] = 'Siddharth : 404 - Page Not Found'; - - $this->loadViews("404", $this->global, NULL, NULL); - } -} - -?> \ No newline at end of file diff --git a/application/controllers/requisitionform.php b/application/controllers/requisitionform.php deleted file mode 100644 index 7cecda2f..00000000 --- a/application/controllers/requisitionform.php +++ /dev/null @@ -1,541 +0,0 @@ -load->model('requistion_model'); - - $this->load->library('session'); - $this->load->library('form_validation'); - - $this->isLoggedIn(); - } - /** - * This function used to load the first screen of the Requistion - */ - function requisitionlisting() - { - $this->global['pageTitle'] = 'Siddharth : Requisition Listing'; - - $userID = $this->session->userdata ( 'userId' ); - - // $data['ReqList'] = $this->requistion_model->getRequistListUserID($userID); - $data['Status'] = $this->requistion_model->CheckDraftStatus($userID); - - $data['TotNoOfLine'] =$this->requistion_model->getRequistionList($userID); - - - - - - $this->loadViews("requisitionlisting", $this->global, $data, NULL); - } - /** - * This function used to load the first screen of the requisition Form - */ - - function requisition() - { - $this->global['pageTitle'] = 'Siddharth : Raise Requisition'; - - $data['RequestType'] = $this->requistion_model->getConfigValue('C004'); - - $data['EmpList'] = $this->requistion_model->getAllEmployees(); - - $userID = $this->session->userdata ( 'userId' ); - - $data['Emp'] = $this->requistion_model->getEmpIdByUserID($userID); - - $data['CostCenter'] = $this->requistion_model->getCostCenterUserID($userID); - - $this->loadViews("requisitionform", $this->global, $data,null); - } - - /** - * This function used to load the first screen of the Requistion List Approval Screen - */ - function requisitionlistApproval() - { - $this->global['pageTitle'] = 'Siddharth : Requisition Approval'; - - $data['Status']= $this->requistion_model->getStatus(); - - $userID = $this->session->userdata ( 'userId' ); - - $data['AppList'] = $this->requistion_model->getApproverRequistList($userID); - - - - $this->loadViews("requisitionlistapproval", $this->global, $data, NULL); - } - - - /** - * This function used to load the Edit Requistion Form - */ - function EditRequistionForm() - { - $this->global['pageTitle'] = 'Siddharth : Edit Requisition'; - - $ReqNo= $_GET['ReqNo']; - $ReqType= $_GET['ReqType']; - - $userID = $this->session->userdata ( 'userId' ); - - $data['ReqDetails'] = $this->requistion_model->getRequistDetails($ReqNo,'Yes'); - - - $data['LineItem'] = $this->requistion_model->getEditRequistItemList($ReqNo); - $data['CostCenter'] = $this->requistion_model->getCostCenterUserID($userID); - $data['MaterialCode'] = $this->requistion_model->EditMaterialCode($ReqNo, $ReqType); - - $this->loadViews("editrequisitionform", $this->global, $data, NULL); - } - - /** - * This function used to load the Delete the Requistion Items - */ - function DeleteRequistionForm() - { - - $ReqList= $this->input->post('id'); - $ReqNo =''; - $MaterialCode = ''; - if(count($ReqList) > 0) - { - $ReqNo = $ReqList[0]; - $MaterialCode = $ReqList[1]; - } - - $this->requistion_model->DeleteRequistionLineItem( $ReqNo,$MaterialCode); - - echo "Successfully Deleted the Line item".$ReqNo; - - } - - /** - * This function used to load the Delete the Requistion Items - */ - function DeleteReqNo() - { - - $ReqNo= $this->input->post('id'); - $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); - $updateddt = $dt->format('Y-m-d H:i:s'); - $Request = array('Status'=>REQ_DELETED,'updatedOn'=>$updateddt); - - $this->requistion_model->UpdateRequistion( $Request,$ReqNo); - - echo "Successfully Deleted the ".$ReqNo; - - } - - function SearchRequistList() - { - $userID = $this->session->userdata ( 'userId' ); - $ReqValue = $this->input->post('SearchDate'); - - $Dt = explode("-",$ReqValue); - - $FromDate =''; - $ToDate = ''; - $Status= ''; - if(count( $Dt)>1) - { - $FDate = $Dt[0]."-".$Dt[1]."-".$Dt[2]; - $TDate = $Dt[3]."-".$Dt[4]."-".$Dt[5]; - $FromDate = $this->getDateformat($FDate); - $ToDate = $this->getDateformat($TDate); - } - - $St = $this->input->post('RequisitionStatus'); - - if($St == "-1") - { - $Status = ''; - } - else - { - $Status = $St; - } - - $data['AppList'] = $this->requistion_model->getApproverRequistList($userID,$Status,$FromDate, $ToDate); - - $this->global['pageTitle'] = 'Siddharth : Requisition Approval'; - - $data['Status']= $this->requistion_model->getStatus(); - - $this->loadViews("requisitionlistapproval", $this->global, $data, NULL); - - } - - - - function getDateformat($Val) - { - $date = new DateTime($Val); - $retDate = $date->format('Y-m-d H:i:s'); - return $retDate; - } - /** - * This function used to load the Employee details based on the EmpID selection - */ - function GetSelectedEmpDetails() - { - $ReqType = $_GET['ReqType']; - $EmpID = $this->input->post('id'); - $empDetails = $this->requistion_model->GetEmployeeDetails( $EmpID ); - $DeptCode = $empDetails[0]['DEPCode']; - $CostList = $this->requistion_model->GetCostCenterByDept( $DeptCode); - $HTML = ""; - $BudAmount = ""; - if(count($CostList) > 0) - { - for ($j = 0; $j < count($CostList); $j++) - { - $Code = $CostList[$j]['CostCenterCode']; - $Name = $CostList[$j]['CostCenterName']; - $HTML .=""; - } - } - if(count($CostList) == 1) - { - $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); - - $Year = $dt->format('Y'); - $CostCode = $CostList[0]['CostCenterCode']; - - $Cost = $this->requistion_model->GetAvailableBudgetAmount( $CostCode,$Year,$ReqType); - if(count($Cost) >0) - { - $BudAmount = $Cost[0]['BudgetAmount']; - } - } - die(json_encode(array('emp' => $empDetails,'Cost' => $HTML,'AvlAmount' => $BudAmount))); - } - - function getAvailableBudAmount() - { - $ReqType = $_GET['ReqType']; - $CostCode= $this->input->post('id'); - $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); - - $Year = $dt->format('Y'); - - $Cost = $this->requistion_model->GetAvailableBudgetAmount( $CostCode,$Year,$ReqType); - - die(json_encode(array('Cost' =>$Cost))); - } - // To get the Material code based on the Request type - function getMaterialCode() - { - - $ReqType= $this->input->post('id'); - - $MaterialCode = $this->requistion_model->GetMaterialCode( $ReqType); - $MaterialName = ""; - $UOM = ""; - $HTML = ""; - - if(count($MaterialCode) > 0) - { - for ($j = 0; $j < count($MaterialCode); $j++) - { - $Code = $MaterialCode[$j]['MaterialCode']; - $Name = $MaterialCode[$j]['MaterialName']; - $HTML .=""; - - } - $MaterialName = $MaterialCode[0]['MaterialName']; - $UOM = $MaterialCode[0]['UOM']; - } - - die(json_encode(array('Material' =>$HTML,'MaterialName'=>$MaterialName,'UOM'=>$UOM))); - } - - // To get the Material value based on the MaterialCode - function getMaterialDetails() - { - - $Material= $this->input->post('id'); - - $MaterialDetails = $this->requistion_model->getRawMaterialList($Material); - - - die(json_encode(array('MatDetail' =>$MaterialDetails))); - } - - /* - To Insert the Requistion Details to Database - */ - /** - * This function is used to add new Cost to the system - */ - function addNewRequistion() - { - - $this->form_validation->set_rules('RequestType','RequestType','trim|required'); - $this->form_validation->set_rules('EmpID','EmpID','trim|required'); - - if($this->form_validation->run() == FALSE) - { - $this->requisition(); - } - else - { - $Status= $_GET['ID']; - $RequestType = strtoupper(trim($this->input->post('RequestType'))); - $Requestedby = strtoupper(trim($this->input->post('EmpID'))); - $CostCenter = $this->input->post('CostCenter'); - $CreateBy = $this->session->userdata ( 'userId' ); - $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); - $createddt = $dt->format('Y-m-d H:i:s'); - - $DeletedRow = $this->input->post('txtDeletedRow'); - $RowCount = $this->input->post('txtRowCount'); - - $comma_separated = explode(':', $DeletedRow); - - - $IsExists = $this->requistion_model->RequistionIsExists($Requestedby); - // print_r($IsExists); - - if(count( $IsExists) == 0) - { - //echo 'Not Exists'; - $Request = array('ReqType'=>$RequestType, 'Requestedby'=>$Requestedby,'ReqDate'=>$createddt,'CostCenterCode'=>$CostCenter,'Status'=>$Status,'CreatedDate'=>$createddt,'CreatedBy'=>$CreateBy); - - //print_r($Request); - - $Req = $this->requistion_model->addRequistion($Request); - } - else - { - //echo 'Exists'; - $Request = array('ReqType'=>$RequestType, 'Requestedby'=>$Requestedby,'ReqDate'=>$createddt,'Status'=>$Status,'CreatedDate'=>$createddt,'CreatedBy'=>$CreateBy,'CostCenterCode'=>$CostCenter); - $UpdateReq = $this->requistion_model->UpdateRequistion($Request,$IsExists[0]['ReqNo']); - } - $ReqNumber = ''; - if(count($Req)>0) - { - $ReqNumber = $Req[0]['ReqNo']; - } - else - { - $ReqNumber = $IsExists[0]['ReqNo']; - } - - $SkipInsert = False; - for ($i = 1; $i <= $RowCount; $i++) - { - $SkipInsert = "False"; - if( count($comma_separated) > 0) - { - for($j = 1; $j < count($comma_separated); $j++) - { - $deletedRow = $comma_separated[$j] ; - - if($deletedRow == $i ) - { - $SkipInsert = "True"; - break; - } - - } - } - - if($SkipInsert == "False") - { - $MaterialCode = $this->input->post('MaterialCode'.$i); - $Quantity = $this->input->post('Quantity'.$i); - - $ReqDetails = array('ReqNo'=>$ReqNumber, 'MaterialCode'=>$MaterialCode,'Quantity'=>$Quantity); - $this->requistion_model->addRequistionDetails($ReqDetails); - } - - } - if($Status == REQ_DRAFT) - { - echo 'Successfully Saved the Requistion details'; - } - else - { - echo 'Successfully Created the Requistion details'; - } - - } - - } - function EditRequistion() - { - $Status = $this->input->post('txtStatus'); - $ReqNumber = $this->input->post('txtReqNo'); - $CostCenter = $this->input->post('CostCenter'); - $UpdatedBy = $this->session->userdata ( 'userId' ); - $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); - $updatedDate = $dt->format('Y-m-d H:i:s'); - - $DeletedRow = $this->input->post('txtDeletedRow'); - $RowCount = $this->input->post('txtRowCount'); - - if(strlen($Status) > 1) - { - $Request = array( 'Status'=>$Status,'CreatedDate'=>$updatedDate,'CreatedBy'=>$UpdatedBy,'CostCenterCode'=>$CostCenter); - $UpdateReq = $this->requistion_model->UpdateRequistion($Request, $ReqNumber); - } - else - { - $Request = array( 'Status'=>REQ_PENDING_APPROVAL,'updatedOn'=>$updatedDate,'CostCenterCode'=>$CostCenter); - $UpdateReq = $this->requistion_model->UpdateRequistion($Request, $ReqNumber); - } - - - $comma_separated = explode(':', $DeletedRow); - - /* Table value update and Insert in the table */ - //echo "RowCOunt:" .$RowCount; - $SkipInsert = False; - for ($i = 1; $i <= $RowCount; $i++) - { - $SkipInsert = "False"; - if( count($comma_separated) > 0) - { - for($j = 1; $j < count($comma_separated); $j++) - { - $deletedRow = $comma_separated[$j] ; - - if($deletedRow == $i ) - { - $SkipInsert = "True"; - break; - } - - } - } - - if($SkipInsert == "False") - { - $MaterialCode = $this->input->post('MaterialCode'.$i); - $Quantity = $this->input->post('Quantity'.$i); - $IsExists = $this->requistion_model->LineItemIsExists($ReqNumber,$MaterialCode); - if(count( $IsExists) == 0) - { - $ReqDetails = array('ReqNo'=>$ReqNumber, 'MaterialCode'=>$MaterialCode,'Quantity'=>$Quantity,'UpdatedBy'=>$UpdatedBy,'UpdatedOn'=>$updatedDate); - - $this->requistion_model->addRequistionDetails($ReqDetails); - } - else - { - $ReqDetails = array('ReqNo'=>$ReqNumber, 'MaterialCode'=>$MaterialCode,'Quantity'=>$Quantity,'UpdatedBy'=>$UpdatedBy,'UpdatedOn'=>$updatedDate); - - $this->requistion_model->UpdateRequistionLineItem($ReqDetails,$ReqNumber,$MaterialCode); - } - - - } - - } - echo 'Successfully updated the Requistion details'; - // $this->requisitionlisting(); - - - - - } -/* To Edit the request*/ - function ViewRequest() - { - - $ReqNo= $this->input->post('id'); - $result = $this->requistion_model->getRequistItemList($ReqNo); - $ReqList = $this->requistion_model->getRequistDetails($ReqNo); - $DepNo = $ReqList[0]['DEPCode']; - //$CostList = $this->requistion_model->GetCostCenterByDept($DepNo); - $HTML=""; - for ($i = 0; $i < count($result); $i++) - { - $SNo = $i + 1; - $MaterialCode = $result[$i]['MaterialCode']; - $MaterialName = $result[$i]['MaterialName']; - $UOM = $result[$i]['UOM']; - $Quantity = $result[$i]['Quantity']; - $Quantity = $result[$i]['Quantity']; - $POQTY = $result[$i]['POQTY']; - $StatusName= $result[$i]['StatusName']; - $HTML.=" - ".$SNo." - ". $MaterialCode." - - ".$MaterialName." - - ".$UOM." - ".$Quantity." - ".$POQTY." - ".$StatusName." - "; - - //$index = $index + 1; - - } - $CostCode = ''; - $ReqType = ''; - $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); - - $Year = $dt->format('Y'); - if(count($ReqList)>0) - { - - $ReqType = $ReqList[0]['ReqType']; - - $CostCode = $ReqList[0]['CostCenterCode']; - } - $this->load->model('purchaseorder_model'); - $AvlBudget = $this->purchaseorder_model->GetAvailableBudgetAmount($CostCode,$Year,$ReqType); - //print_r($result); - $AvilBudAmt = '0'; - if(count($AvlBudget)>0) - { - $AvilBudAmt = $AvlBudget[0]['BudgetAmount'] - $AvlBudget[0]['Totalvalue']; - } - //echo $AvilBudAmt; - die(json_encode(array('Items' =>$HTML,'Requist'=>$ReqList,'AvilBudAmount'=>number_format($AvilBudAmt,2)))); - } - - function ApproveRequest() - { - $Status= Trim($_GET['Status']); - - $ReqNo= $_GET['ReqNo']; - $Remarks = trim($this->input->post('id')); - $ApprovedBy = $this->session->userdata ( 'userId' ); - $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); - $ApprovedDate = $dt->format('Y-m-d H:i:s'); - $Request = array('Status'=>$Status,'Comments'=>$Remarks,'ApprovedOn'=>$ApprovedDate,'Approvedby'=>$ApprovedBy); - $this->requistion_model->UpdateRequistion($Request,$ReqNo); - echo "Successfully Updated the Requistion No: ".$ReqNo; - - } - - function pageNotFound() - { - $this->global['pageTitle'] = 'CodeInsect : 404 - Page Not Found'; - - $this->loadViews("404", $this->global, NULL, NULL); - } -} - -?> \ No newline at end of file diff --git a/application/controllers/servicepurchaseorder.php b/application/controllers/servicepurchaseorder.php deleted file mode 100644 index 347b1ba6..00000000 --- a/application/controllers/servicepurchaseorder.php +++ /dev/null @@ -1,301 +0,0 @@ - - -load->model('purchaseorder_model'); - - $this->load->library('session'); - $this->load->library('form_validation'); - $this->load->model('requistion_model'); - $this->isLoggedIn(); - } - - - // To get the available Budget Amount - function AvilBudgetAmount() - { - // echo 'Controller called'; - $CostCode = $this->input->post('id'); - $ReqType = $_GET['ReqType']; - - - $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); - - $Year = $dt->format('Y'); - $this->load->model('purchaseorder_model'); - $result = $this->purchaseorder_model->GetAvailableBudgetAmount($CostCode,$Year,$ReqType); - //print_r($result); - $AvilBudAmt = '0'; - if(count($result)>0) - { - $AvilBudAmt = $result[0]['BudgetAmount'] - $result[0]['Totalvalue']; - } - - // echo 'Test'; - print_r($AvilBudAmt); - //die(json_encode(array('Cost' => $AvilBudAmt))); - } - - - function getDateformat($Val) - { - $date = new DateTime($Val,new DateTimeZone('Asia/Kolkata')); - // print_r($date); - $retDate = $date->format('Y-m-d H:i:s'); - return $retDate; - } - - //This used to Create Service Purchase Order - function addNewServicePurchaseOrder() - { - $POdt =$this->input->post('PODate'); - $PODate = $this->getDateformat($POdt); - $SupplierID = $this->input->post('drpSupplier'); - $DeliveryAddr = $this->input->post('DeliveryAddr'); - $dt = $this->input->post('Deliverydt'); - //$Deliverydt = $this->getDateformat($dt); - $DeliveryOption = $this->input->post('DateRange'); - if($DeliveryOption==1){ - $Deliverydt = ''; - $DeliverySchedule = $this->input->post('Scheduleby'); - } - else{ - $Deliverydt = $this->getDateformat($dt); - $DeliverySchedule = ''; - } - $POType = $this->input->post('POType'); - - $SpcialInstruction = $this->input->post('txtSpcialInstruction'); - $TotalOrderValueSummary = $this->input->post('txtTotalOrderValueSummary'); - $POStatus = $this->input->post('txtStatus'); - - $CreateBy = $this->session->userdata ( 'userId' ); - $RowCount = $this->input->post('txtRowCount'); - $DeletedRow = $this->input->post('txtDeletedRow'); - - $comma_separated = explode(':', $DeletedRow); - - $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); - $createddt = $dt->format('Y-m-d H:i:s'); - // PO Master - $POList = array('SupplierID'=>$SupplierID, 'TotalOrderValue'=>$TotalOrderValueSummary,'PODate'=>$PODate,'Status'=>$POStatus, 'DeliverySchedule'=>$DeliverySchedule,'DeliveryOption'=>$DeliveryOption, 'ServiceDescription'=>$SpcialInstruction,'CreatedBy'=>$CreateBy,'DeliveryAddress'=>$DeliveryAddr,'DeliveryDate'=>$Deliverydt,'CreatedDate'=>$createddt ); - - $POMaster = $this->purchaseorder_model->addPOMaster($POList); - - $PONO = ''; - if(count($POMaster)>0) - { - $PONO = $POMaster[0]['PONO']; - } - - // PO Line Items - $LineItemStatus = REQITEM_NEW; - - for ($i = 1; $i <= $RowCount; $i++) - { - - $MaterialCode = $this->input->post('materialCode'.$i); - $Quantity = $this->input->post('quantity'.$i); - $Reqnumber = $this->input->post('Reqnumber'.$i); - $itemRate = $this->input->post('itemRate'.$i); - $ServiceTax = $this->input->post('ServiceTax'.$i); - $EduCess = $this->input->post('EduCess'.$i); - $SecHighTax = $this->input->post('SecHighTax'.$i); - $KrishiTax = $this->input->post('KrishiTax'.$i); - $SwachhTax = $this->input->post('SwachhTax'.$i); - $CostCenter = $this->input->post('costCode'.$i); - - $TotalOrderValue = $this->input->post('TotalOrderValue'.$i); - - $SkipInsert = "False"; - if( count($comma_separated) > 0) - { - for($j = 1; $j < count($comma_separated); $j++) - { - $deletedRow = $comma_separated[$j] ; - - if($deletedRow == $i ) - { - $SkipInsert = "True"; - break; - } - - } - } - if($SkipInsert == "False") - { - - $POLineItemList = array('PONO'=>$PONO, 'ReqNo'=>$Reqnumber,'MaterialCode'=>$MaterialCode,'Quantity'=>$Quantity,'Rate'=>$itemRate,'Status'=>$LineItemStatus,'CreatedBy'=>$CreateBy,'CreatedDate'=>$createddt,'CostCenterCode'=>$CostCenter); - - $POLineItem = $this->purchaseorder_model->addPOLineItem($POLineItemList); - - $LineItemNo = ''; - - if(count($POLineItem)>0) - { - $LineItemNo = $POLineItem[0]['LineItemNo']; - } - //echo $LineItemNo; - - if(trim($POType) == SERVICE ) - { - // echo 'Success'; - $ServiceTaxList = array('LineItemNo'=>$LineItemNo, 'ServiceTax'=>$ServiceTax,'EducessTax'=>$EduCess,'SecHigherEducessTax'=>$SecHighTax,'KrishiKalyantax'=>$KrishiTax,'SwachhBharattax'=>$SwachhTax,'TotalValue'=>$TotalOrderValue, 'CreatedBy'=>$CreateBy,'CreatedDate'=>$createddt); - - $ServiceTax = $this->purchaseorder_model->addServiceTax($ServiceTaxList); - - } - } - - } - echo 'Service Purchase Order Created Successfully!The PO NO Is: '.$PONO; - - } - function UpdateServicePurchaseOrder() - { - $PONO =$this->input->post('txtPONO'); - //echo $PONO; - $POdt =$this->input->post('PODate'); - $PODate = $this->getDateformat($POdt); - - $SupplierID = $this->input->post('drpSupplier'); - $DeliveryAddr = $this->input->post('txtDeliveryAddress'); - $dt = $this->input->post('Deliverydt'); - $DeliveryOption = $this->input->post('DateRange'); - if($DeliveryOption==1){ - $Deliverydt = ''; - $DeliverySchedule = $this->input->post('Scheduleby'); - } - else{ - $Deliverydt = $this->getDateformat($dt); - $DeliverySchedule = ''; - } - - $POType = $this->input->post('POType'); - - $SpcialInstruction = $this->input->post('SpcialInstruction'); - $TotalOrderValueSummary = $this->input->post('txtTotalOrderValueSummary'); - $POStatus = $this->input->post('txtStatus'); - - $updatedBy = $this->session->userdata ( 'userId' ); - $RowCount = $this->input->post('txtRowCount'); - $DeletedRow = $this->input->post('txtDeletedRow'); - - $comma_separated = explode(':', $DeletedRow); - $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); - $updateddt = $dt->format('Y-m-d H:i:s'); - - - // PO Master - $POList = array('SupplierID'=>$SupplierID, 'TotalOrderValue'=>$TotalOrderValueSummary,'PODate'=>$PODate,'Status'=>$POStatus,'DeliverySchedule'=>$DeliverySchedule,'DeliveryOption'=>$DeliveryOption,'ServiceDescription'=>$SpcialInstruction,'UpdateBY'=>$updatedBy,'DeliveryAddress'=>$DeliveryAddr,'DeliveryDate'=>$Deliverydt,'UpdatedOn'=>$updateddt ); - - $POMaster = $this->purchaseorder_model->updatePOMaster($PONO,$POList); - - $LineItemStatus = REQITEM_NEW; - - for ($i = 1; $i <= $RowCount; $i++) - { - $MaterialCode = $this->input->post('materialCode'.$i); - $Quantity = $this->input->post('quantity'.$i); - $Reqnumber = $this->input->post('Reqnumber'.$i); - $itemRate = $this->input->post('itemRate'.$i); - $ServiceTax = $this->input->post('ServiceTax'.$i); - $EduCess = $this->input->post('EduCess'.$i); - $SecHighTax = $this->input->post('SecHighTax'.$i); - $KrishiTax = $this->input->post('KrishiTax'.$i); - $SwachhTax = $this->input->post('SwachhTax'.$i); - $CostCenter = $this->input->post('costCode'.$i); - $POLineItemNo = $this->input->post('LineItemNo'.$i); - $TotalOrderValue = $this->input->post('TotalOrderValue'.$i); - - $POLineItem = array(); - $LineItemNo = ''; - $SkipInsert = "False"; - if( count($comma_separated) > 0) - { - for($j = 1; $j < count($comma_separated); $j++) - { - $deletedRow = $comma_separated[$j] ; - - if($deletedRow == $i ) - { - $SkipInsert = "True"; - break; - } - - } - } - if($SkipInsert == "False") - { - if(strlen($POLineItemNo) == 0) - { - $POLineItemList = array('PONO'=>$PONO, 'ReqNo'=>$Reqnumber,'MaterialCode'=>$MaterialCode,'Quantity'=>$Quantity,'Rate'=>$itemRate,'Status'=>$LineItemStatus,'CreatedBy'=>$updatedBy,'CreatedDate'=>$updateddt,'CostCenterCode'=>$CostCenter); - $POLineItem = $this->purchaseorder_model->addPOLineItem($POLineItemList); - if(count($POLineItem)>0) - { - $LineItemNo = $POLineItem[0]['LineItemNo']; - } - - } - else - { - $LineItemNo = $POLineItemNo; - - $POLineItemList = array('PONO'=>$PONO, 'ReqNo'=>$Reqnumber,'MaterialCode'=>$MaterialCode,'Quantity'=>$Quantity,'Rate'=>$itemRate,'Status'=>$LineItemStatus,'UpdateBY'=>$updatedBy,'UpdatedOn'=>$updateddt,'CostCenterCode'=>$CostCenter); - $POLineItem = $this->purchaseorder_model->updatePOLineItem($PONO,$POLineItemNo,$POLineItemList); - - } - - - - if(trim($POType) == SERVICE ) - { - $isExists = $this->purchaseorder_model->LineItemExists($LineItemNo); - - if(count($isExists) == 0) - { - $ServiceTaxList = array('LineItemNo'=>$LineItemNo, 'ServiceTax'=>$ServiceTax,'EducessTax'=>$EduCess,'SecHigherEducessTax'=>$SecHighTax,'KrishiKalyantax'=>$KrishiTax,'SwachhBharattax'=>$SwachhTax,'TotalValue'=>$TotalOrderValue, 'CreatedBy'=>$updatedBy,'CreatedDate'=>$updateddt); - - $this->purchaseorder_model->addServiceTax($ServiceTaxList); - - } - else - { - $ServiceTaxList1 = array('ServiceTax'=>$ServiceTax,'EducessTax'=>$EduCess,'SecHigherEducessTax'=>$SecHighTax,'KrishiKalyantax'=>$KrishiTax,'SwachhBharattax'=>$SwachhTax,'TotalValue'=>$TotalOrderValue, 'UpdateBY'=>$updatedBy,'UpdatedOn'=>$updateddt); - - $this->purchaseorder_model->updateServiceTax($LineItemNo,$ServiceTaxList1); - - } - - } - - } - } - echo 'Successfully updated the Service Purchase Order'; - } - function pageNotFound() - { - $this->global['pageTitle'] = 'CodeInsect : 404 - Page Not Found'; - - $this->loadViews("404", $this->global, NULL, NULL); - } -} - -?> diff --git a/application/controllers/supplier.php b/application/controllers/supplier.php deleted file mode 100644 index 7189fda4..00000000 --- a/application/controllers/supplier.php +++ /dev/null @@ -1,439 +0,0 @@ -load->model('supplier_model'); - $this->load->library('form_validation'); - $this->load->library('pagination'); - $this->load->library('Excel'); - $this->isLoggedIn(); - } - /** - * This function used to load the first screen of the user - */ - public function index() - { - $this->global['pageTitle'] = 'Siddharth : Supplier'; - - $this->loadViews("supplierListing", $this->global, NULL , NULL); - } - - /** - * This function is used to load the Supplier list - */ - function supplierListing() - { - - $this->load->model('supplier_model'); - - - $data['userRecords'] = $this->supplier_model->supplierListing(); - - $this->global['pageTitle'] = 'Siddharth Industries : Supplier Listing'; - - $this->loadViews("supplierListing", $this->global, $data, NULL); - - } - /** - * This function is used to load the add new supplier */ - function addsupplier() - { - - $data['payment'] = $this->supplier_model->getpayment(); - //$data['users'] = $this->purchaseorder_model->getusers(); - - $this->global['pageTitle'] = 'siddharth : AddNew Supplier'; - - $this->loadViews("addsupplier", $this->global,$data, NULL); - - } - /** - * This function is used to check whether PAN already exist or not - */ - - function CheckPAN() - { - $id = $this->input->post('id'); - - $query = $this->supplier_model->checkPAN($id ); - - $query = $query[0]['PAN']; - - print_r($query); - - } - /* To Check the Pan Number is exists in the database or not for the selected Supplier */ - function checkPanValidateSupplier() { - - $SupplierID = $this->input->post('SupplierID'); - $PanNo = $this->input->post('panno'); - // echo 'Sup'. $SupplierID ; - $query = $this->supplier_model->checkPAN($PanNo,$SupplierID); - if (count($query)> 0) - { - $this->form_validation->set_message('checkPanValidateSupplier', 'The Entered PAN Number is already exists in the Database.'); - return false; - } - else - { - return true; - } - } - - /* To Check the Pan Number is exists in the database or not */ - function checkPanValidate() - { - - $PanNo = $this->input->post('panno'); - - $query = $this->supplier_model->checkPAN($PanNo); - if (count($query)> 0) - { - $this->form_validation->set_message('checkPanValidate', 'The Entered PAN Number is already exists in the Database.'); - return false; - } - else - { - return true; - } - } - - /** - * This function is used to add new Supplier to the system - */ - function addNewsupplier() - { - - - $this->form_validation->set_rules('SupplierName','Supplier Name','trim|required'); - $this->form_validation->set_rules('Address','Address','trim|required|'); - - $this->form_validation->set_rules('ContactNumber','Contact Number','trim|required|numeric|max_length[10]'); - $this->form_validation->set_rules('AlternateContactNumber','Alternate Contact Number','trim|numeric|max_length[10]'); - $this->form_validation->set_rules('emailid','emailid', 'valid_email|max_length[128]|required'); - - $this->form_validation->set_rules('TIN','TIN','trim|required|max_length[11]'); - - $this->form_validation->set_rules('panno', 'panno', 'trim|required|max_length[10]|callback_checkPanValidate'); - - - if($this->form_validation->run() == FALSE) - { - $this->addsupplier(); - } - else - { - $SupplierName = $this->input->post('SupplierName'); - $Address = $this->input->post('Address'); - $ContactNumber = $this->input->post('ContactNumber'); - $AlternateContactNumber = $this->input->post('AlternateContactNumber'); - $EmailAddress = $this->input->post('emailid'); - $Exiseregistration = $this->input->post('Exciseregistration'); - $TIN = $this->input->post('TIN'); - $PAN = $this->input->post('panno'); - $GSTNo = $this->input->post('GSTNo'); - $GSTRange = $this->input->post('GSTRange'); - $CollectrateAddress = $this->input->post('CollectrateAddress'); - $UANumber = $this->input->post('UANumber'); - $PaymentTerms = $this->input->post('PaymentTerms'); - $Payment = $this->input->post('Payment'); - $PayableAT = $this->input->post('PayableAT'); - $CSTNo = $this->input->post('CSTNo'); - - $CSTDt = $this->input->post('dateofCST'); - - if($CSTDt != '') - { - $CSTDate = $this->getDateformat($CSTDt); - } - else - { - $CSTDate = null; - } - $Createdby = $this->session->userdata ( 'userId' ); - - $supplier = array('SupplierName'=>$SupplierName, 'Address'=>$Address, 'ContactNumber'=>$ContactNumber, 'AlternateContactNumber'=> $AlternateContactNumber,'EmailAddress'=>$EmailAddress,'Exiseregistration'=>$Exiseregistration,'TIN'=>$TIN,'PAN'=>$PAN,'GSTNo'=>$GSTNo,'GSTRange'=>$GSTRange,'CollectrateAddress'=>$CollectrateAddress,'UANumber'=>$UANumber,'PaymentTerms'=>$PaymentTerms,'PaymentDays'=>$Payment,'PayableAT'=>$PayableAT,'CSTNo'=>$CSTNo,'CSTDate'=>$CSTDate,'Createdby'=>$Createdby); - - $result = $this->supplier_model->addNewsupplier($supplier); - - if($result > 0) - { - redirect('supplierListing','refresh'); - echo ""; - } - - else - { - redirect('supplierListing','refresh'); - echo ""; - } - } - - } - - function getDateformat($Val) - { - $date = new DateTime($Val); - $retDate = $date->format('Y-m-d H:i:s'); - return $retDate; - } - /** - * This function is used to edit the Supplier information - */ - function editsupplier() - { - $this->form_validation->set_rules('SupplierName','Supplier Name','trim|required'); - $this->form_validation->set_rules('Address','Address','trim|required|'); - $supplierID = $this->input->post('SupplierID'); - //echo 'supID' . $supplierID ; - $this->form_validation->set_rules('ContactNumber','Contact Number','trim|required|numeric|max_length[10]'); - $this->form_validation->set_rules('AlternateContactNumber','Alternate Contact Number','trim|numeric|max_length[10]'); - $this->form_validation->set_rules('emailid','emailid','valid_email|max_length[128]|required'); - - $this->form_validation->set_rules('TIN','TIN','trim|required|max_length[11]'); - - $this->form_validation->set_rules('panno', 'panno', 'trim|required|max_length[10]|callback_checkPanValidateSupplier'); - - if($this->form_validation->run() == FALSE) - { - $this->viewsupplier($supplierID); - } - else - { - - $SupplierName = $this->input->post('SupplierName'); - $Address = $this->input->post('Address'); - $ContactNumber = $this->input->post('ContactNumber'); - $AlternateContactNumber = $this->input->post('AlternateContactNumber'); - $EmailAddress = $this->input->post('emailid'); - $Exiseregistration = $this->input->post('Exciseregistration'); - $TIN = $this->input->post('TIN'); - $PAN = $this->input->post('panno'); - $GSTNo = $this->input->post('GSTNo'); - $GSTRange = $this->input->post('GSTRange'); - $CollectrateAddress = $this->input->post('CollectrateAddress'); - $UANumber = $this->input->post('UANumber'); - $PaymentTerms = $this->input->post('PaymentTerms'); - $Payment = $this->input->post('Payment'); - $PayableAT = $this->input->post('PayableAT'); - $UpdatedBy = $this->session->userdata ( 'userId' ); - $chked = $this->input->post('isactive'); - - if( $chked != '') - { - $IsActive = '1'; - } - else - { - $IsActive = '0'; - } - - $CSTNo = $this->input->post('CSTNo'); - - $CSTDt = $this->input->post('dateofCST'); - - if($CSTDt != '') - { - $CSTDate = $this->getDateformat($CSTDt); - } - else - { - $CSTDate = null; - } - $supplier = array(); - - $supplier = array('SupplierName'=>$SupplierName, 'Address'=>$Address, 'ContactNumber'=>$ContactNumber, 'AlternateContactNumber'=> $AlternateContactNumber,'EmailAddress'=>$EmailAddress,'Exiseregistration'=>$Exiseregistration,'TIN'=>$TIN,'PAN'=>$PAN,'GSTNo'=>$GSTNo,'GSTRange'=>$GSTRange,'CollectrateAddress'=>$CollectrateAddress,'UANumber'=>$UANumber,'PaymentTerms'=>$PaymentTerms,'PaymentDays'=>$Payment,'PayableAT'=>$PayableAT,'UpdatedBy'=>$UpdatedBy,'IsActive'=>$IsActive,'CSTNo'=>$CSTNo,'CSTDate'=>$CSTDate); - - $result = $this->supplier_model->UpdateSupplier($supplier, $supplierID); - - if($result == True) - { - redirect('supplierListing','refresh'); - echo ""; - } - - else - { - redirect('supplierListing','refresh'); - echo ""; - } - } - - } - - function viewsupplier($SID = '') - { - $Payment = ''; - if($SID == '') - { - $supplierID = $_GET['SID']; - $Payment = $_GET['Payment']; - } - else - { - - $supplierID = $SID; - } - - - $data['supplier'] = $this->supplier_model->getSupplierInfo($supplierID); - $data['payment'] = $this->supplier_model->getpayment($Payment ); - $this->global['pageTitle'] = 'Siddharth : Edit Supplier'; - - $this->loadViews("editSupplier", $this->global,$data, NULL); - } - - /** this function can be use for excel report **/ - - function export_supplierdetails(){ - - - $this->load->library('excel'); - $this->excel->setActiveSheetIndex(0); - - $this->excel->getActiveSheet()->setTitle('supplier details'); - - $this->excel->getActiveSheet()->setCellValue('A1', 'SupplierID'); - $this->excel->getActiveSheet()->setCellValue('B1', 'SupplierName'); - $this->excel->getActiveSheet()->setCellValue('C1', 'Address'); - $this->excel->getActiveSheet()->setCellValue('D1', 'ContactNumber'); - $this->excel->getActiveSheet()->setCellValue('E1', 'AlternateContactNumber'); - $this->excel->getActiveSheet()->setCellValue('F1', 'EmailAddress'); - $this->excel->getActiveSheet()->setCellValue('G1', 'Exiseregistration'); - $this->excel->getActiveSheet()->setCellValue('H1', 'TIN'); - $this->excel->getActiveSheet()->setCellValue('I1', 'PAN'); - $this->excel->getActiveSheet()->setCellValue('J1', 'CSTNO'); - $this->excel->getActiveSheet()->setCellValue('K1', 'CST Date'); - $this->excel->getActiveSheet()->setCellValue('L1', 'GST NO'); - $this->excel->getActiveSheet()->setCellValue('M1', 'GST Range'); - $this->excel->getActiveSheet()->setCellValue('N1', 'Collectrate Address'); - $this->excel->getActiveSheet()->setCellValue('O1', 'UANumber'); - $this->excel->getActiveSheet()->setCellValue('P1', 'PaymentTerms'); - $this->excel->getActiveSheet()->setCellValue('Q1', 'PaymentDays'); - $this->excel->getActiveSheet()->setCellValue('R1', 'PayableAT'); - $this->excel->getActiveSheet()->setCellValue('S1', 'Createdby'); - $this->excel->getActiveSheet()->setCellValue('T1', 'UpdatedBy'); - $this->excel->getActiveSheet()->setCellValue('U1', 'IsActive'); - - - - - $this->excel->getActiveSheet()->getStyle('A1')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('B1')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('B1')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('C1')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('C1')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('D1')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('D1')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('E1')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('E1')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('F1')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('F1')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('G1')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('G1')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('H1')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('H1')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('I1')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('I1')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('J1')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('J1')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('K1')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('K1')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('L1')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('L1')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('M1')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('M1')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('N1')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('N1')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('O1')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('O1')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('P1')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('P1')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('Q1')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('Q1')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('R1')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('R1')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('S1')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('S1')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('T1')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('T1')->getFont()->setBold(true); - $this->excel->getActiveSheet()->getStyle('U1')->getFont()->setSize(12); - $this->excel->getActiveSheet()->getStyle('U1')->getFont()->setBold(true); - - - $exportData = $this->supplier_model->export_excel(); - - if ($exportData) { - $i = 2; - $s = 1; - foreach ($exportData as $data) { - - $this->excel->getActiveSheet()->setCellValue('A' . $i,$data['SupplierID']); - $this->excel->getActiveSheet()->setCellValue('B' . $i,$data['SupplierName']); - $this->excel->getActiveSheet()->setCellValue('C' . $i,$data['Address']); - $this->excel->getActiveSheet()->setCellValue('D' . $i,$data['ContactNumber']); - $this->excel->getActiveSheet()->setCellValue('E' . $i,$data['AlternateContactNumber']); - $this->excel->getActiveSheet()->setCellValue('F' . $i,$data['EmailAddress']); - $this->excel->getActiveSheet()->setCellValue('G' . $i,$data['Exiseregistration']); - $this->excel->getActiveSheet()->setCellValue('H' . $i,$data['TIN']); - $this->excel->getActiveSheet()->setCellValue('I' . $i,$data['PAN']); - $this->excel->getActiveSheet()->setCellValue('J' . $i,$data['CSTNO']); - $this->excel->getActiveSheet()->setCellValue('K' . $i,$data['CSTDate']); - $this->excel->getActiveSheet()->setCellValue('L' . $i,$data['GSTNO']); - $this->excel->getActiveSheet()->setCellValue('M' . $i,$data['GSTRange']); - $this->excel->getActiveSheet()->setCellValue('N' . $i,$data['CollectrateAddress']); - $this->excel->getActiveSheet()->setCellValue('O' . $i,$data['UANumber']); - $this->excel->getActiveSheet()->setCellValue('P' . $i,$data['PaymentTerms']); - $this->excel->getActiveSheet()->setCellValue('Q' . $i,$data['PaymentDays']); - $this->excel->getActiveSheet()->setCellValue('R' . $i,$data['PayableAT']); - $this->excel->getActiveSheet()->setCellValue('S' . $i,$data['firstname']); - $this->excel->getActiveSheet()->setCellValue('T' . $i,$data['Update_by']); - $this->excel->getActiveSheet()->setCellValue('U' . $i,$data['IsActive']); - - - - - - $i++; - $s++; - } - } - - $filename = 'supplierdetails' .' '. '.xls'; //save our workbook as this file name - header('Content-Type: application/vnd.ms-excel'); //mime type - header('Content-Disposition: attachment;filename="' . $filename . '"'); //tell browser what's the file name - header('Cache-Control: max-age=0'); //no cache - $objWriter = PHPExcel_IOFactory::createWriter($this->excel, 'Excel5'); - if (ob_get_contents()) ob_end_clean(); - ob_start(); - $objWriter->save('php://output'); - - - } - - - function pageNotFound() - { - $this->global['pageTitle'] = 'Siddharth : 404 - Page Not Found'; - - $this->loadViews("404", $this->global, NULL, NULL); - } -} - -?> \ No newline at end of file diff --git a/application/controllers/user.php b/application/controllers/user.php deleted file mode 100644 index 8f44c3ce..00000000 --- a/application/controllers/user.php +++ /dev/null @@ -1,362 +0,0 @@ -load->model('user_model'); - $this->load->library('form_validation'); - - $this->isLoggedIn(); - } - - /** - * This function used to load the first screen of the user - */ - public function index() - { - $this->global['pageTitle'] = 'Siddharth : Dashboard'; - - $this->load->model('employeedetails_model'); - - $data['EmpCount'] = $this->employeedetails_model->getEmployeeCount(); - - $this->loadViews("dashboard", $this->global, $data , NULL); - } - - /** - * This function is used to load the user list - */ - function userListing() - { - if($this->isAdmin() == TRUE) - { - $this->loadThis(); - } - else - { - - $data['userRecords'] = $this->user_model->userListing(); - - $this->global['pageTitle'] = 'Siddharth : User Listing'; - - $this->loadViews("users", $this->global, $data, NULL); - } - } - - - /** - * This function is used to load the add new form - */ - function addNew() - { - if($this->isAdmin() == TRUE) - { - $this->loadThis(); - } - else - { - $data['EmpList'] = $this->user_model->getAllEmployees(); - - $data['roles'] = $this->user_model->getUserRoles(); - - $this->global['pageTitle'] = 'Siddharth : Add New User'; - - $this->loadViews("addNew", $this->global, $data, NULL); - } - } - - /** - * This function is used to check whether email already exist or not - */ - function checkEmailExists() - { - $userId = $this->input->post("userId"); - $email = $this->input->post("email"); - - if(empty($userId)){ - $result = $this->user_model->checkEmailExists($email); - } else { - $result = $this->user_model->checkEmailExists($email, $userId); - } - - if(empty($result)){ echo("true"); } - else { echo("false"); } - } - /* Validation for Employee Dropdown - */ - function Employee_validate($selectValue) -{ - //echo 'select_validate method called'; - // 'none' is the first option and the text says something like "-Choose one-" - if($selectValue == '0') - { - $this->form_validation->set_message('Employee_validate', 'Please Select Employee.'); - return false; - } - else // user picked something - { - return true; - } -} - /* Validation for Employee Dropdown - */ - function Role_validate($selectValue) -{ - //echo 'select_validate method called'; - // 'none' is the first option and the text says something like "-Choose one-" - if($selectValue == '0') - { - $this->form_validation->set_message('Role_validate', 'Please Select Role.'); - return false; - } - else // user picked something - { - return true; - } -} - /** - * This function is used to add new user to the system - */ - function addNewUser() - { - if($this->isAdmin() == TRUE) - { - $this->loadThis(); - } - else - { - - $this->form_validation->set_rules('EmpList','EmpList','trim|callback_Employee_validateS'); - $this->form_validation->set_rules('role','role','trim|callback_Role_validate'); - $this->form_validation->set_rules('password','Password','required|max_length[20]'); - $this->form_validation->set_rules('cpassword','Confirm Password','trim|required|matches[password]|max_length[20]'); - - - if($this->form_validation->run() == FALSE) - { - $this->addNew(); - } - else - { - $EmpID = $this->input->post('EmpList'); - $roleId = $this->input->post('role'); - $password = $this->input->post('password'); - $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); - $Createddt = $dt->format('Y-m-d H:i:s'); - - $email = $this->input->post('MailID'); - - - $userInfo = array('email'=>$email,'EmpID'=>$EmpID,'password'=>getHashedPassword($password),'roleId'=>$roleId,'createdBy'=>$this->vendorId,'createdDtm'=>$Createddt); - - $result = $this->user_model->addNewUser($userInfo); - - if($result > 0) - { - - redirect('userListing','refresh'); - echo ""; - - } - else - { - - redirect('userListing','refresh'); - echo ""; - } - - } - } - } - - - /** - * This function is used load user edit information - * @param number $userId : Optional : This is user id - */ - function editOld($UserId = '') - { - if($this->isAdmin() == TRUE ) - { - $this->loadThis(); - } - else - { - if($UserId == '') - { - // redirect('userListing'); - } - - $Uid = $_GET['UID']; - - - - $data['roles'] = $this->user_model->getUserRoles(); - - //print_r($data); - - $data['EmpList'] = $this->user_model->GetEmployeeDetails($Uid); - //print_r($data); - $data['EmpRole'] = $this->user_model->GetRoleNameByUserID($Uid); - - // $data['userInfo'] = $this->user_model->getUserInfo($userId); - - $this->global['pageTitle'] = 'Siddharth : Edit User'; - - $this->loadViews("editOld", $this->global, $data, NULL); - } - } - - - /** - * This function is used to edit the user information - */ - function editUser() - { - if($this->isAdmin() == TRUE) - { - $this->loadThis(); - } - else - { - $userId = $this->input->post('EmpList'); - $this->form_validation->set_rules('EmpList','EmpList','trim|callback_Employee_validateS'); - $this->form_validation->set_rules('role','role','trim|callback_Role_validate'); - $this->form_validation->set_rules('password','Password','required|max_length[20]'); - $this->form_validation->set_rules('cpassword','Confirm Password','trim|required|matches[password]|max_length[20]'); - - if($this->form_validation->run() == FALSE) - { - $this->editOld($userId); - } - else - { - $EmpID = $this->input->post('EmpList'); - $role = $this->input->post('role'); - $password = $this->input->post('password'); - $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); - $updatedDate = $dt->format('Y-m-d H:i:s'); - - // echo $EmpID; - - $userInfo = array(); - - - $userInfo = array('password'=>getHashedPassword($password),'roleId'=>$role,'EmpId'=>$EmpID,'updatedDtm'=>$updatedDate); - - - - - $result = $this->user_model->editUser($userInfo, $EmpID); - - if($result == true) - { - $this->session->set_flashdata('success', 'User updated successfully'); - } - else - { - $this->session->set_flashdata('error', 'User updation failed'); - } - - redirect('userListing'); - } - } - } - - - /** - * This function is used to delete the user using userId - * @return boolean $result : TRUE / FALSE - */ - function deleteUser() - { - echo 'Delete'; - $Uid = $this->input->post('id'); - - $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); - $updatedDate = $dt->format('Y-m-d H:i:s'); - - $userInfo = array('isDeleted'=>1,'updatedBy'=>$this->vendorId, 'updatedDtm'=>$updatedDate); - - $result = $this->user_model->deleteUser($Uid, $userInfo); - - echo 'Succssfully change the user status to InAcive'; - - } - - /** - * This function is used to load the change password screen - */ - function loadChangePass() - { - $this->global['pageTitle'] = 'Siddharth : Change Password'; - - $this->loadViews("changePassword", $this->global, NULL, NULL); - } - - - /** - * This function is used to change the password of the user - */ - function changePassword() - { - $this->load->library('form_validation'); - - $this->form_validation->set_rules('oldPassword','Old password','required|max_length[20]'); - $this->form_validation->set_rules('newPassword','New password','required|max_length[20]'); - $this->form_validation->set_rules('cNewPassword','Confirm new password','required|matches[newPassword]|max_length[20]'); - - if($this->form_validation->run() == FALSE) - { - $this->loadChangePass(); - } - else - { - $oldPassword = $this->input->post('oldPassword'); - $newPassword = $this->input->post('newPassword'); - - $resultPas = $this->user_model->matchOldPassword($this->vendorId, $oldPassword); - - if(empty($resultPas)) - { - $this->session->set_flashdata('nomatch', 'Your old password not correct'); - redirect('loadChangePass'); - } - else - { - $usersData = array('password'=>getHashedPassword($newPassword), 'updatedBy'=>$this->vendorId, - 'updatedDtm'=>date('Y-m-d H:i:sa')); - - $result = $this->user_model->changePassword($this->vendorId, $usersData); - - if($result > 0) { $this->session->set_flashdata('success', 'Password updation successful'); } - else { $this->session->set_flashdata('error', 'Password updation failed'); } - - redirect('loadChangePass'); - } - } - } - - function pageNotFound() - { - $this->global['pageTitle'] = 'Siddharth : 404 - Page Not Found'; - - $this->loadViews("404", $this->global, NULL, NULL); - } -} - -?> diff --git a/application/core/index.html b/application/core/index.html deleted file mode 100644 index c942a79c..00000000 --- a/application/core/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - 403 Forbidden - - - -

Directory access is forbidden.

- - - \ No newline at end of file diff --git a/application/errors/error_404.php b/application/errors/error_404.php deleted file mode 100644 index 792726a6..00000000 --- a/application/errors/error_404.php +++ /dev/null @@ -1,62 +0,0 @@ - - - -404 Page Not Found - - - -
-

- -
- - \ No newline at end of file diff --git a/application/errors/error_db.php b/application/errors/error_db.php deleted file mode 100644 index b396cda9..00000000 --- a/application/errors/error_db.php +++ /dev/null @@ -1,62 +0,0 @@ - - - -Database Error - - - -
-

- -
- - \ No newline at end of file diff --git a/application/errors/error_general.php b/application/errors/error_general.php deleted file mode 100644 index fd63ce2c..00000000 --- a/application/errors/error_general.php +++ /dev/null @@ -1,62 +0,0 @@ - - - -Error - - - -
-

- -
- - \ No newline at end of file diff --git a/application/errors/error_php.php b/application/errors/error_php.php deleted file mode 100644 index f085c203..00000000 --- a/application/errors/error_php.php +++ /dev/null @@ -1,10 +0,0 @@ -
- -

A PHP Error was encountered

- -

Severity:

-

Message:

-

Filename:

-

Line Number:

- -
\ No newline at end of file diff --git a/application/errors/index.html b/application/errors/index.html deleted file mode 100644 index c942a79c..00000000 --- a/application/errors/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - 403 Forbidden - - - -

Directory access is forbidden.

- - - \ No newline at end of file diff --git a/application/helpers/cias_helper.php b/application/helpers/cias_helper.php deleted file mode 100644 index d1f0b702..00000000 --- a/application/helpers/cias_helper.php +++ /dev/null @@ -1,50 +0,0 @@ -"; - print_r($data); - echo ""; -} - -/** - * This function used to get the CI instance - */ -if(!function_exists('get_instance')) -{ - function get_instance() - { - $CI = &get_instance(); - } -} - -/** - * This function used to generate the hashed password - * @param {string} $plainPassword : This is plain text password - */ -if(!function_exists('getHashedPassword')) -{ - function getHashedPassword($plainPassword) - { - return password_hash($plainPassword, PASSWORD_DEFAULT); - } -} - -/** - * This function used to generate the hashed password - * @param {string} $plainPassword : This is plain text password - * @param {string} $hashedPassword : This is hashed password - */ -if(!function_exists('verifyHashedPassword')) -{ - function verifyHashedPassword($plainPassword, $hashedPassword) - { - return password_verify($plainPassword, $hashedPassword) ? true : false; - } -} - -?> \ No newline at end of file diff --git a/application/helpers/index.html b/application/helpers/index.html deleted file mode 100644 index c942a79c..00000000 --- a/application/helpers/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - 403 Forbidden - - - -

Directory access is forbidden.

- - - \ No newline at end of file diff --git a/application/hooks/index.html b/application/hooks/index.html deleted file mode 100644 index c942a79c..00000000 --- a/application/hooks/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - 403 Forbidden - - - -

Directory access is forbidden.

- - - \ No newline at end of file diff --git a/application/index.html b/application/index.html deleted file mode 100644 index c942a79c..00000000 --- a/application/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - 403 Forbidden - - - -

Directory access is forbidden.

- - - \ No newline at end of file diff --git a/application/language/english/index.html b/application/language/english/index.html deleted file mode 100644 index c942a79c..00000000 --- a/application/language/english/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - 403 Forbidden - - - -

Directory access is forbidden.

- - - \ No newline at end of file diff --git a/application/language/index.html b/application/language/index.html deleted file mode 100644 index c942a79c..00000000 --- a/application/language/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - 403 Forbidden - - - -

Directory access is forbidden.

- - - \ No newline at end of file diff --git a/application/libraries/BaseController.php b/application/libraries/BaseController.php deleted file mode 100644 index 99b8cce0..00000000 --- a/application/libraries/BaseController.php +++ /dev/null @@ -1,159 +0,0 @@ -output->set_status_header ( 200 )->set_content_type ( 'application/json', 'utf-8' )->set_output ( json_encode ( $data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES ) )->_display (); - exit (); - } - - /** - * This function used to check the user is logged in or not - */ - function isLoggedIn() { - $isLoggedIn = $this->session->userdata ( 'isLoggedIn' ); - - if (! isset ( $isLoggedIn ) || $isLoggedIn != TRUE) { - redirect ( 'login' ); - } else { - $this->role = $this->session->userdata ( 'role' ); - $this->vendorId = $this->session->userdata ( 'userId' ); - $this->name = $this->session->userdata ( 'name' ); - $this->roleText = $this->session->userdata ( 'roleText' ); - $this->Designation = $this->session->userdata ( 'Designation' ); - $this->DEPCode = $this->session->userdata ( 'DEPCode' ); - $this->HeadDept = $this->session->userdata ( 'HeadDept' ); - $this->DepartmentName = $this->session->userdata ( 'DepartmentName' ); - $this->EmpID = $this->session->userdata ( 'EmpID' ); - $this->global ['name'] = $this->name; - $this->global ['role'] = $this->role; - $this->global ['role_text'] = $this->roleText; - $this->global ['DEPCode'] = $this->DEPCode; - } - } - - /** - * This function is used to check the access - */ - function isAdmin() { - if ($this->role != ROLE_ADMIN) { - return true; - } else { - return false; - } - } - - /** - * This function is used to check the access - */ - function isTicketter() { - if ($this->role != ROLE_ADMIN || $this->role != ROLE_MANAGER) { - return true; - } else { - return false; - } - } - - /** - * This function is used to load the set of views - */ - function loadThis() { - $this->global ['pageTitle'] = 'CodeInsect : Access Denied'; - - $this->load->view ( 'includes/header', $this->global ); - $this->load->view ( 'access' ); - $this->load->view ( 'includes/footer' ); - } - - /** - * This function is used to logged out user from system - */ - function logout() { - $this->session->sess_destroy (); - - redirect ( 'login' ); - } - - /** - * This function used to load views - * @param {string} $viewName : This is view name - * @param {mixed} $headerInfo : This is array of header information - * @param {mixed} $pageInfo : This is array of page information - * @param {mixed} $footerInfo : This is array of footer information - * @return {null} $result : null - */ - function loadViews($viewName = "", $headerInfo = NULL, $pageInfo = NULL, $footerInfo = NULL){ - - $this->load->view('includes/header', $headerInfo); - $this->load->view($viewName, $pageInfo); - $this->load->view('includes/footer', $footerInfo); - } - - /** - * This function used provide the pagination resources - * @param {string} $link : This is page link - * @param {number} $count : This is page count - * @param {number} $perPage : This is records per page limit - * @return {mixed} $result : This is array of records and pagination data - */ - function paginationCompress($link, $count, $perPage = 10) { - $this->load->library ( 'pagination' ); - - $config ['base_url'] = base_url () . $link; - $config ['total_rows'] = $count; - $config ['uri_segment'] = SEGMENT; - $config ['per_page'] = $perPage; - $config ['num_links'] = 5; - $config ['full_tag_open'] = ''; - $config ['first_tag_open'] = '
  • '; - $config ['first_link'] = 'First'; - $config ['first_tag_close'] = '
  • '; - $config ['prev_link'] = 'Previous'; - $config ['prev_tag_open'] = '
  • '; - $config ['prev_tag_close'] = '
  • '; - $config ['next_link'] = 'Next'; - $config ['next_tag_open'] = '
  • '; - $config ['next_tag_close'] = '
  • '; - $config ['cur_tag_open'] = '
  • '; - $config ['cur_tag_close'] = '
  • '; - $config ['num_tag_open'] = '
  • '; - $config ['num_tag_close'] = '
  • '; - $config ['last_tag_open'] = '
  • '; - $config ['last_link'] = 'Last'; - $config ['last_tag_close'] = '
  • '; - - $this->pagination->initialize ( $config ); - $page = $config ['per_page']; - $segment = $this->uri->segment ( SEGMENT ); - - return array ( - "page" => $page, - "segment" => $segment - ); - } -} diff --git a/application/libraries/Excel.php b/application/libraries/Excel.php deleted file mode 100644 index 4775821a..00000000 --- a/application/libraries/Excel.php +++ /dev/null @@ -1,18 +0,0 @@ -dompdf = $pdf; - - } - -} \ No newline at end of file diff --git a/application/libraries/index.html b/application/libraries/index.html deleted file mode 100644 index c942a79c..00000000 --- a/application/libraries/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - 403 Forbidden - - - -

    Directory access is forbidden.

    - - - \ No newline at end of file diff --git a/application/libraries/pdf.php b/application/libraries/pdf.php deleted file mode 100644 index ae496f3d..00000000 --- a/application/libraries/pdf.php +++ /dev/null @@ -1,44 +0,0 @@ -ci()->load->view($view, $data, TRUE); - - $this->load_html($html); - } -} \ No newline at end of file diff --git a/application/logs/index.html b/application/logs/index.html deleted file mode 100644 index c942a79c..00000000 --- a/application/logs/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - 403 Forbidden - - - -

    Directory access is forbidden.

    - - - \ No newline at end of file diff --git a/application/logs/log-2017-04-20.php b/application/logs/log-2017-04-20.php deleted file mode 100644 index 8c7ccc07..00000000 --- a/application/logs/log-2017-04-20.php +++ /dev/null @@ -1,1811 +0,0 @@ - - -ERROR - 2017-04-20 08:22:27 --> Severity: Warning --> call_user_func_array() expects parameter 1 to be a valid callback, class 'payslip' does not have a method 'index' C:\xampp\htdocs\siddharth_application\system\core\CodeIgniter.php 360 -ERROR - 2017-04-20 08:22:59 --> Severity: Warning --> require_once(application/third_party/PHPExcel/IOFactory.php): failed to open stream: No such file or directory C:\xampp\htdocs\siddharth_application\application\controllers\payslip.php 107 -ERROR - 2017-04-20 08:32:47 --> Severity: Warning --> call_user_func_array() expects parameter 1 to be a valid callback, class 'payslip' does not have a method 'index' C:\xampp\htdocs\siddharth_application\system\core\CodeIgniter.php 360 -ERROR - 2017-04-20 08:34:20 --> Severity: Warning --> call_user_func_array() expects parameter 1 to be a valid callback, class 'payslip' does not have a method 'index' C:\xampp\htdocs\siddharth_application\system\core\CodeIgniter.php 360 -ERROR - 2017-04-20 08:46:56 --> Severity: 4096 --> Object of class DateTime could not be converted to string C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 48 -ERROR - 2017-04-20 08:51:55 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 49 -ERROR - 2017-04-20 08:51:55 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 50 -ERROR - 2017-04-20 08:51:55 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 51 -ERROR - 2017-04-20 08:51:55 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 52 -ERROR - 2017-04-20 08:51:55 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 53 -ERROR - 2017-04-20 08:51:55 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 54 -ERROR - 2017-04-20 08:51:55 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 55 -ERROR - 2017-04-20 08:51:55 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 56 -ERROR - 2017-04-20 08:51:55 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 57 -ERROR - 2017-04-20 08:51:55 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 58 -ERROR - 2017-04-20 08:51:55 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 59 -ERROR - 2017-04-20 08:51:55 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 60 -ERROR - 2017-04-20 08:51:55 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 61 -ERROR - 2017-04-20 08:51:55 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 62 -ERROR - 2017-04-20 08:51:55 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 63 -ERROR - 2017-04-20 08:51:55 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 64 -ERROR - 2017-04-20 08:51:55 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 65 -ERROR - 2017-04-20 08:51:55 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 66 -ERROR - 2017-04-20 08:51:55 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 67 -ERROR - 2017-04-20 08:51:55 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 68 -ERROR - 2017-04-20 08:51:55 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 69 -ERROR - 2017-04-20 08:51:55 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 70 -ERROR - 2017-04-20 08:51:55 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 71 -ERROR - 2017-04-20 08:51:55 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 72 -ERROR - 2017-04-20 08:51:55 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 73 -ERROR - 2017-04-20 08:51:55 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 74 -ERROR - 2017-04-20 08:51:55 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 75 -ERROR - 2017-04-20 08:51:55 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 76 -ERROR - 2017-04-20 08:51:55 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 77 -ERROR - 2017-04-20 08:51:55 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 78 -ERROR - 2017-04-20 08:51:55 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 79 -ERROR - 2017-04-20 08:51:55 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 80 -ERROR - 2017-04-20 08:51:55 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 81 -ERROR - 2017-04-20 08:51:55 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 82 -ERROR - 2017-04-20 08:52:51 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 49 -ERROR - 2017-04-20 08:52:51 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 50 -ERROR - 2017-04-20 08:52:51 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 51 -ERROR - 2017-04-20 08:52:51 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 52 -ERROR - 2017-04-20 08:52:51 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 53 -ERROR - 2017-04-20 08:52:51 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 54 -ERROR - 2017-04-20 08:52:51 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 55 -ERROR - 2017-04-20 08:52:51 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 56 -ERROR - 2017-04-20 08:52:51 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 57 -ERROR - 2017-04-20 08:52:51 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 58 -ERROR - 2017-04-20 08:52:51 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 59 -ERROR - 2017-04-20 08:52:51 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 60 -ERROR - 2017-04-20 08:52:51 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 61 -ERROR - 2017-04-20 08:52:51 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 62 -ERROR - 2017-04-20 08:52:51 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 63 -ERROR - 2017-04-20 08:52:51 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 64 -ERROR - 2017-04-20 08:52:51 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 65 -ERROR - 2017-04-20 08:52:51 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 66 -ERROR - 2017-04-20 08:52:51 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 67 -ERROR - 2017-04-20 08:52:51 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 68 -ERROR - 2017-04-20 08:52:51 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 69 -ERROR - 2017-04-20 08:52:51 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 70 -ERROR - 2017-04-20 08:52:51 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 71 -ERROR - 2017-04-20 08:52:51 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 72 -ERROR - 2017-04-20 08:52:51 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 73 -ERROR - 2017-04-20 08:52:51 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 74 -ERROR - 2017-04-20 08:52:51 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 75 -ERROR - 2017-04-20 08:52:51 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 76 -ERROR - 2017-04-20 08:52:51 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 77 -ERROR - 2017-04-20 08:52:51 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 78 -ERROR - 2017-04-20 08:52:51 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 79 -ERROR - 2017-04-20 08:52:51 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 80 -ERROR - 2017-04-20 08:52:51 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 81 -ERROR - 2017-04-20 08:52:51 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 82 -ERROR - 2017-04-20 08:53:49 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 49 -ERROR - 2017-04-20 08:53:49 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 50 -ERROR - 2017-04-20 08:53:49 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 51 -ERROR - 2017-04-20 08:53:49 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 52 -ERROR - 2017-04-20 08:53:49 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 53 -ERROR - 2017-04-20 08:53:49 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 54 -ERROR - 2017-04-20 08:53:49 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 55 -ERROR - 2017-04-20 08:53:49 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 56 -ERROR - 2017-04-20 08:53:49 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 57 -ERROR - 2017-04-20 08:53:49 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 58 -ERROR - 2017-04-20 08:53:49 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 59 -ERROR - 2017-04-20 08:53:49 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 60 -ERROR - 2017-04-20 08:53:49 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 61 -ERROR - 2017-04-20 08:53:49 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 62 -ERROR - 2017-04-20 08:53:49 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 63 -ERROR - 2017-04-20 08:53:49 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 64 -ERROR - 2017-04-20 08:53:49 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 65 -ERROR - 2017-04-20 08:53:49 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 66 -ERROR - 2017-04-20 08:53:49 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 67 -ERROR - 2017-04-20 08:53:49 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 68 -ERROR - 2017-04-20 08:53:49 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 69 -ERROR - 2017-04-20 08:53:49 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 70 -ERROR - 2017-04-20 08:53:49 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 71 -ERROR - 2017-04-20 08:53:49 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 72 -ERROR - 2017-04-20 08:53:50 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 73 -ERROR - 2017-04-20 08:53:50 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 74 -ERROR - 2017-04-20 08:53:50 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 75 -ERROR - 2017-04-20 08:53:50 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 76 -ERROR - 2017-04-20 08:53:50 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 77 -ERROR - 2017-04-20 08:53:50 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 78 -ERROR - 2017-04-20 08:53:50 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 79 -ERROR - 2017-04-20 08:53:50 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 80 -ERROR - 2017-04-20 08:53:50 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 81 -ERROR - 2017-04-20 08:53:50 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 82 -ERROR - 2017-04-20 09:11:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:11:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:11:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:11:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:11:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:11:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:11:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:11:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:11:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:11:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:11:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:11:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:11:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:11:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:11:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:11:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:11:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:11:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:11:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:11:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:11:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:11:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:11:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:11:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:11:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:11:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 80 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 157 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 157 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 80 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:11:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 80 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 157 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 157 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 80 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:14:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 80 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 157 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 157 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 80 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:21:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:22:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:22:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:22:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:22:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:22:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:22:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:22:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:22:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:22:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:22:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:22:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:22:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:22:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:22:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:22:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:22:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:22:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:22:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:22:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:22:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:22:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:22:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:22:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:22:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:22:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:22:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:22:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 09:22:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:22:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 80 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 157 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 157 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 80 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:22:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:25:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:25:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:25:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:25:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:25:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:25:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:25:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:25:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:25:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:25:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:25:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:25:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:25:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:25:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:25:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:25:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:25:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:25:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:25:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:25:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:25:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:25:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:25:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:25:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:25:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:25:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:25:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 09:25:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:25:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:25:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 80 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 157 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 157 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 80 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:25:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 80 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 157 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 157 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:29:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:29:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 09:29:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:29:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:29:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 09:29:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:29:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:29:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:29:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:29:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:29:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:29:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:29:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:29:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:29:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:29:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:29:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:29:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:29:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:29:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 80 -ERROR - 2017-04-20 09:29:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:29:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 80 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 157 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 157 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 80 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:36:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 80 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 157 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 157 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 80 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:38:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 80 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 157 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 157 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 80 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:44:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 80 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 157 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 157 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:46:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:46:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:46:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:46:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 80 -ERROR - 2017-04-20 09:46:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:46:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:46:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:46:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:46:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:46:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:46:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:46:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:46:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:46:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 09:46:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 80 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 157 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 157 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 80 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:46:47 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 09:58:44 --> Severity: Warning --> require_once(dompdf/dompdf_config.inc.php): failed to open stream: No such file or directory C:\xampp\htdocs\siddharth_application\application\controllers\payslip.php 82 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 80 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 157 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 157 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:00:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:00:23 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:00:23 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:00:23 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:00:23 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:00:23 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:00:23 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:00:23 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:00:23 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:00:23 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 80 -ERROR - 2017-04-20 10:00:23 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:00:23 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:01:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:01:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:01:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:01:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 10:01:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:01:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 80 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 157 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 157 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 80 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:01:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:05:19 --> Severity: Notice --> Undefined variable: html_data C:\xampp\htdocs\siddharth_application\application\controllers\payslip.php 85 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 80 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 157 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 157 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 80 -ERROR - 2017-04-20 10:05:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:05:50 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:07:34 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:07:34 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:07:34 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:07:34 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 10:07:34 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:07:34 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:07:34 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:07:34 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 10:07:34 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:07:34 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:07:34 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 10:07:34 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:07:34 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:07:34 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:07:34 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 10:07:34 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:07:34 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 80 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 157 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 157 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 80 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 10:07:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:12:42 --> Severity: Warning --> mysqli_connect(): php_network_getaddresses: getaddrinfo failed: No such host is known. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-04-20 11:12:42 --> Severity: Warning --> mysqli_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: No such host is known. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-04-20 11:12:42 --> Unable to connect to the database -ERROR - 2017-04-20 11:35:25 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:35:25 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:35:25 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:35:25 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:35:25 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:35:25 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:35:25 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:35:25 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:35:25 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:35:25 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:41:00 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:41:00 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:41:00 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:41:00 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:41:00 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:41:00 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:41:00 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:41:00 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:41:00 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:41:00 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:42:10 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:42:10 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:42:10 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:42:10 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:42:10 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:42:10 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:42:10 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:42:10 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:42:10 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:42:10 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:42:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:42:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 11:42:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:42:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 11:42:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:42:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 11:42:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:42:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 11:42:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 80 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 157 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 157 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 80 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:42:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:42:40 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:42:40 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:42:40 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:42:40 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:42:40 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:42:40 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:42:40 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:42:40 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:42:40 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:42:40 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:42:40 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 82 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 80 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 157 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 157 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 80 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:42:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:43:24 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:43:24 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:43:24 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:43:24 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:43:24 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:43:24 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:43:24 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:43:24 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:43:24 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:43:24 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:43:24 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 82 -ERROR - 2017-04-20 11:43:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:43:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:43:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:43:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 11:43:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:43:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:43:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:43:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 11:43:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:43:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:43:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 11:43:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:43:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:43:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:43:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_positioner.cls.php 81 -ERROR - 2017-04-20 11:43:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:43:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:43:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:43:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:43:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:43:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:43:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 80 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 157 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 157 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 80 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:43:49 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\inline_renderer.cls.php 135 -ERROR - 2017-04-20 11:47:16 --> Severity: Notice --> Undefined index: Department C:\xampp\htdocs\siddharth_application\application\views\addasset.php 106 -ERROR - 2017-04-20 11:47:16 --> Severity: Notice --> Undefined index: Department C:\xampp\htdocs\siddharth_application\application\views\addasset.php 106 -ERROR - 2017-04-20 11:47:16 --> Severity: Notice --> Undefined index: Department C:\xampp\htdocs\siddharth_application\application\views\addasset.php 106 -ERROR - 2017-04-20 11:47:16 --> Severity: Notice --> Undefined index: Department C:\xampp\htdocs\siddharth_application\application\views\addasset.php 106 -ERROR - 2017-04-20 11:47:16 --> Severity: Notice --> Undefined index: Department C:\xampp\htdocs\siddharth_application\application\views\addasset.php 106 -ERROR - 2017-04-20 11:47:16 --> Severity: Notice --> Undefined index: Department C:\xampp\htdocs\siddharth_application\application\views\addasset.php 106 -ERROR - 2017-04-20 11:47:16 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\views\addasset.php 157 -ERROR - 2017-04-20 11:47:16 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\views\addasset.php 157 -ERROR - 2017-04-20 11:47:16 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\views\addasset.php 157 -ERROR - 2017-04-20 11:47:16 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\views\addasset.php 157 -ERROR - 2017-04-20 11:47:16 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\views\addasset.php 157 -ERROR - 2017-04-20 11:47:16 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\views\addasset.php 157 -ERROR - 2017-04-20 11:47:16 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\views\addasset.php 157 -ERROR - 2017-04-20 11:47:16 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\views\addasset.php 157 -ERROR - 2017-04-20 11:47:16 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\views\addasset.php 157 -ERROR - 2017-04-20 11:47:16 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\views\addasset.php 157 -ERROR - 2017-04-20 11:47:17 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\views\addasset.php 157 -ERROR - 2017-04-20 11:47:17 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\views\addasset.php 157 -ERROR - 2017-04-20 11:47:17 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\views\addasset.php 157 -ERROR - 2017-04-20 11:47:17 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\views\addasset.php 157 -ERROR - 2017-04-20 11:47:17 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\views\addasset.php 157 -ERROR - 2017-04-20 11:47:17 --> Severity: Notice --> Undefined index: AssetStatus C:\xampp\htdocs\siddharth_application\application\views\addasset.php 210 -ERROR - 2017-04-20 11:47:17 --> Severity: Notice --> Undefined index: AssetStatus C:\xampp\htdocs\siddharth_application\application\views\addasset.php 210 -ERROR - 2017-04-20 11:47:17 --> Severity: Notice --> Undefined index: AssetStatus C:\xampp\htdocs\siddharth_application\application\views\addasset.php 210 -ERROR - 2017-04-20 11:47:17 --> Severity: Notice --> Undefined index: AssetStatus C:\xampp\htdocs\siddharth_application\application\views\addasset.php 210 -ERROR - 2017-04-20 11:47:17 --> Severity: Notice --> Undefined index: AssetStatus C:\xampp\htdocs\siddharth_application\application\views\addasset.php 210 -ERROR - 2017-04-20 11:47:17 --> Severity: Notice --> Undefined index: AssetStatus C:\xampp\htdocs\siddharth_application\application\views\addasset.php 210 -ERROR - 2017-04-20 11:47:17 --> Severity: Notice --> Undefined index: AssetStatus C:\xampp\htdocs\siddharth_application\application\views\addasset.php 210 -ERROR - 2017-04-20 11:49:13 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:49:13 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:49:13 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:49:13 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:49:13 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:49:13 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:49:13 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:49:13 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:49:13 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:49:13 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 11:49:13 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 82 -ERROR - 2017-04-20 12:36:44 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 12:36:44 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 12:36:44 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 12:36:44 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 12:36:44 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 12:36:44 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 12:36:44 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 12:36:44 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 12:36:44 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 12:36:44 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 12:36:44 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 82 -ERROR - 2017-04-20 12:47:10 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 12:47:10 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 12:47:10 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 12:47:10 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 12:47:10 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 12:47:10 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 12:47:10 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 12:47:10 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 12:47:10 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 12:47:10 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 12:47:10 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 82 -ERROR - 2017-04-20 12:48:51 --> Severity: Notice --> Undefined property: payslip::$dompdf C:\xampp\htdocs\siddharth_application\application\controllers\payslip.php 111 -ERROR - 2017-04-20 12:51:22 --> Severity: Notice --> Undefined variable: data C:\xampp\htdocs\siddharth_application\application\controllers\payslip.php 124 -ERROR - 2017-04-20 12:52:48 --> Severity: Notice --> Undefined variable: data C:\xampp\htdocs\siddharth_application\application\controllers\payslip.php 124 -ERROR - 2017-04-20 13:12:31 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:12:31 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:12:32 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:12:32 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:12:32 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:12:32 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:12:32 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:12:32 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:12:32 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:12:32 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:12:32 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 82 -ERROR - 2017-04-20 13:18:57 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:18:57 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:18:57 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:18:57 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:18:57 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:18:57 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:18:57 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:18:57 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:18:57 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:18:57 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:18:58 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 82 -ERROR - 2017-04-20 13:19:18 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:19:18 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:19:18 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:19:18 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:19:18 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:19:18 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:19:18 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:19:18 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:19:19 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:19:19 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:19:19 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 82 -ERROR - 2017-04-20 13:19:56 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:19:56 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:19:56 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:19:56 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:19:56 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:19:56 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:19:56 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:19:56 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:19:56 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:19:56 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:19:56 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 82 -ERROR - 2017-04-20 13:22:00 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:22:00 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:22:00 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:22:00 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:22:00 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:22:01 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:22:01 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:22:01 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:22:01 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:22:01 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:22:01 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 82 -ERROR - 2017-04-20 13:23:04 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:23:04 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:23:04 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:23:04 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:23:04 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:23:04 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:23:04 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:23:04 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:23:04 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:23:04 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:23:04 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 82 -ERROR - 2017-04-20 13:24:24 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:24:25 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:24:25 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:24:25 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:24:25 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:24:25 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:24:25 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:24:25 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:24:25 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:24:25 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:24:25 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 82 -ERROR - 2017-04-20 13:27:15 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:27:15 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:27:15 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:27:15 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:27:15 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:27:15 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:27:16 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:27:16 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:27:16 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:27:16 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:27:16 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 82 -ERROR - 2017-04-20 13:53:42 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:53:42 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:53:42 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:53:42 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:53:42 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:53:42 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:53:42 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:53:42 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:53:42 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:53:42 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 13:53:42 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 82 -ERROR - 2017-04-20 14:08:04 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:08:04 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:08:04 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:08:04 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:08:04 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:08:04 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:08:04 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:08:04 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:08:04 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:08:04 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:08:04 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 82 -ERROR - 2017-04-20 14:08:21 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:08:21 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:08:21 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:08:21 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:08:21 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:08:21 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:08:21 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:08:21 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:08:21 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:08:21 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:08:21 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 82 -ERROR - 2017-04-20 14:08:33 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:08:33 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:08:33 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:08:33 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:08:33 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:08:33 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:08:33 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:08:33 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:08:33 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:08:33 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:08:33 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 82 -ERROR - 2017-04-20 14:09:40 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:09:40 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:09:40 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:09:40 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:09:40 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:09:40 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:09:40 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:09:41 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:09:41 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:09:41 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:09:41 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 82 -ERROR - 2017-04-20 14:09:52 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:09:52 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:09:53 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:09:53 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:09:53 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:09:53 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:09:53 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:09:53 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:09:53 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:09:53 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:09:53 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 82 -ERROR - 2017-04-20 14:10:19 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:10:20 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:10:20 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:10:20 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:10:20 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:10:20 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:10:20 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:10:20 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:10:20 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:10:20 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:10:20 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 82 -ERROR - 2017-04-20 14:10:59 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:10:59 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:10:59 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:10:59 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:10:59 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:10:59 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:10:59 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:10:59 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:10:59 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:10:59 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 14:10:59 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 82 -ERROR - 2017-04-20 15:00:19 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:00:20 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:00:21 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:00:21 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:00:21 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:00:21 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:00:21 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:00:21 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:00:21 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:00:21 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:00:21 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 82 -ERROR - 2017-04-20 15:04:06 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:04:06 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:04:06 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:04:06 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:04:06 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:04:06 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:04:06 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:04:06 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:04:06 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:04:06 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:04:06 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 82 -ERROR - 2017-04-20 15:06:19 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:06:19 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:06:19 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:06:19 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:06:19 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:06:19 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:06:19 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:06:19 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:06:19 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:06:19 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:06:19 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 82 -ERROR - 2017-04-20 15:08:56 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:08:56 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:08:56 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:08:56 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:08:56 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:08:56 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:08:56 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:08:56 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:08:56 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:08:56 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 54 -ERROR - 2017-04-20 15:08:56 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 82 diff --git a/application/logs/log-2017-04-21.php b/application/logs/log-2017-04-21.php deleted file mode 100644 index 35a861a2..00000000 --- a/application/logs/log-2017-04-21.php +++ /dev/null @@ -1,361 +0,0 @@ - - -ERROR - 2017-04-21 12:51:08 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 53 -ERROR - 2017-04-21 12:51:08 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 12:51:08 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 12:51:08 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 12:51:08 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 12:51:08 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 12:51:08 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 12:51:08 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 12:51:08 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 12:51:08 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 12:51:08 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 12:59:41 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 53 -ERROR - 2017-04-21 12:59:41 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 12:59:42 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 12:59:42 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 12:59:42 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 12:59:42 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 12:59:42 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 12:59:42 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 12:59:42 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 12:59:42 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 12:59:42 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:07:12 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd1A1F.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4286 -ERROR - 2017-04-21 13:09:24 --> Severity: Notice --> Undefined variable: PANNumber C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 309 -ERROR - 2017-04-21 13:09:24 --> Severity: Notice --> Undefined variable: UANumber C:\xampp\htdocs\siddharth_application\application\views\payslipgenerateprint.php 315 -ERROR - 2017-04-21 13:15:48 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 53 -ERROR - 2017-04-21 13:15:48 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:15:48 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:15:48 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:15:48 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:15:48 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:15:48 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:15:48 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:15:48 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:15:48 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:15:48 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:16:13 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd5DE8.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:16:14 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd5F42.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4286 -ERROR - 2017-04-21 13:16:14 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd605D.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:16:14 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd6187.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:16:15 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd62F1.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:16:15 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd6526.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4286 -ERROR - 2017-04-21 13:16:16 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd668F.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:16:16 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd67BA.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:28:34 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 53 -ERROR - 2017-04-21 13:28:34 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:28:34 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:28:34 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:28:34 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:28:34 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:28:34 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:28:34 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:28:34 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:28:34 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:28:34 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:34:17 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_E7CD.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 13:34:17 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 13:34:18 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdE8A9.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:34:18 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdE8B9.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4286 -ERROR - 2017-04-21 13:36:10 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_A002.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 13:36:10 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 13:36:10 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdA0A0.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:39:57 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 53 -ERROR - 2017-04-21 13:39:57 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:39:57 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:39:57 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:39:57 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:39:57 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:39:57 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:39:57 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:39:57 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:39:57 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:39:57 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:40:27 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 53 -ERROR - 2017-04-21 13:40:27 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:40:27 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:40:28 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:40:28 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:40:28 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:40:28 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:40:28 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:40:28 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:40:28 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:40:28 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:42:38 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd8C04.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:43:35 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_6995.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 13:43:35 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 13:43:35 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd6A42.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:44:46 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_7F5D.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 13:44:46 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 13:44:46 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd800A.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:45:15 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdF156.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4286 -ERROR - 2017-04-21 13:46:19 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_EBC8.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 13:46:19 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 13:47:11 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_B748.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 13:47:11 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 13:47:11 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\ca_B748.tmp): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 171 -ERROR - 2017-04-21 13:47:12 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdB814.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:48:15 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 53 -ERROR - 2017-04-21 13:48:15 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 53 -ERROR - 2017-04-21 13:48:16 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:48:16 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:48:16 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:48:16 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:48:16 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:48:16 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:48:16 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:48:16 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:48:16 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:48:16 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:48:16 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:48:16 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:48:16 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:48:16 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:48:16 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:51:17 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd75A2.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:51:17 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd7670.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:51:17 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd7680.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4286 -ERROR - 2017-04-21 13:51:17 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd773D.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:51:17 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd78B8.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:51:18 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd7966.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:51:18 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd7A23.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:51:18 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd7A34.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4286 -ERROR - 2017-04-21 13:51:18 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd7B8E.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:51:18 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd7C5C.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:51:19 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd7D19.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:51:19 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd7E15.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:51:19 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd7E26.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4286 -ERROR - 2017-04-21 13:52:57 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_FF77.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 13:52:57 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 13:52:57 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_FF98.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 13:52:57 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 13:52:58 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_FFC7.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 13:52:58 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 13:52:58 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_FFF7.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 13:52:58 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 13:52:58 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_18.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 13:52:58 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 13:52:58 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_47.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 13:52:58 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 13:52:58 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_68.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 13:52:58 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 13:52:58 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_88.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 13:52:58 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 13:52:58 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_C7.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 13:52:58 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 13:52:58 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_E8.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 13:52:58 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 13:52:58 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd214.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4286 -ERROR - 2017-04-21 13:52:58 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd2EF.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:52:59 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd4B8.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:52:59 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd5A5.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:52:59 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd672.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:52:59 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd673.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4286 -ERROR - 2017-04-21 13:52:59 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd72F.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:53:00 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd81C.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:53:00 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd958.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:53:00 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdA16.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:53:00 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdAD3.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:53:00 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdB82.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4286 -ERROR - 2017-04-21 13:53:47 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_BF85.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 13:53:47 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 13:53:47 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_BFB5.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 13:53:47 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 13:53:47 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_BFF5.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 13:53:47 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 13:53:47 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_C025.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 13:53:47 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 13:53:47 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_C054.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 13:53:47 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 13:53:47 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_C084.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 13:53:47 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 13:53:47 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_C0B4.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 13:53:47 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 13:53:47 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_C0D4.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 13:53:47 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 13:53:47 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_C104.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 13:53:47 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 13:53:47 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_C134.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 13:53:47 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 13:53:47 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_C154.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 13:53:47 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 13:53:47 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_C184.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 13:53:47 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 13:53:47 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_C1B4.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 13:53:47 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 13:53:47 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_C1D4.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 13:53:47 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 13:53:47 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_C204.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 13:53:47 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 13:53:47 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdC2FF.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:53:48 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdC3ED.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4286 -ERROR - 2017-04-21 13:53:48 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdC4C8.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:53:48 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdC4D9.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4286 -ERROR - 2017-04-21 13:53:48 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdC5B5.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:53:48 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdC6B1.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:53:49 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdC7BC.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:53:49 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdC8A9.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:53:49 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdC986.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:53:49 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdC9A6.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4286 -ERROR - 2017-04-21 13:53:49 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdCA53.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:53:49 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdCB01.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:53:49 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdCB11.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4286 -ERROR - 2017-04-21 13:53:50 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdCBAE.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:53:50 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdCBAF.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4286 -ERROR - 2017-04-21 13:53:50 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdCC6C.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:53:50 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdCCFB.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:53:50 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdCD99.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:53:50 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdCE37.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:54:39 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_8BFB.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 13:54:39 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 13:54:39 --> Severity: Warning --> rename(C:\Users\Venba Saravana\AppData\Local\Temp\ca_8C2B.tmp,C:\Users\Venba Saravana\AppData\Local\Temp\ca_8C2B.tmp.png): The process cannot access the file because it is being used by another process. (code: 32) C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 161 -ERROR - 2017-04-21 13:54:40 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd8FCC.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:54:40 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd90A9.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:54:40 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd9272.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:54:41 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd94CA.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:54:42 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd96B4.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:54:42 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd9762.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:55:03 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 53 -ERROR - 2017-04-21 13:55:03 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 53 -ERROR - 2017-04-21 13:55:03 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:55:03 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:55:03 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:55:03 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:55:03 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:55:03 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:55:03 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:55:03 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:55:03 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:55:03 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:55:03 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:55:03 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:55:03 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:55:03 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:55:03 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:55:12 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_C86.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 13:55:12 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 13:55:12 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdD33.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:55:26 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_4491.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 13:55:26 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 13:55:26 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_44C1.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 13:55:26 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 13:55:26 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_44F1.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 13:55:26 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 13:55:26 --> Severity: Warning --> rename(C:\Users\Venba Saravana\AppData\Local\Temp\ca_4521.tmp,C:\Users\Venba Saravana\AppData\Local\Temp\ca_4521.tmp.png): The process cannot access the file because it is being used by another process. (code: 32) C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 161 -ERROR - 2017-04-21 13:55:27 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd465A.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:55:27 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd4746.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:55:27 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd4776.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4286 -ERROR - 2017-04-21 13:55:27 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd4842.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:55:27 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd492F.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:55:27 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd4A1B.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:55:27 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd4A2C.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4286 -ERROR - 2017-04-21 13:55:28 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd4D30.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:55:29 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd4E2C.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:55:29 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd4F19.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:55:29 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd4FE6.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:55:29 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd5142.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:57:43 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 53 -ERROR - 2017-04-21 13:57:43 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 53 -ERROR - 2017-04-21 13:57:43 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:57:43 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:57:43 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:57:43 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:57:43 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:57:43 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:57:43 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:57:43 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:57:43 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:57:43 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:57:43 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:57:43 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:57:43 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:57:43 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:57:43 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 13:59:23 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdE3C4.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:59:24 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdE4B0.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:59:24 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdE57E.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:59:24 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdE67B.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4286 -ERROR - 2017-04-21 13:59:24 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdE776.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:59:25 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdE910.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:59:25 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdE920.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4286 -ERROR - 2017-04-21 13:59:26 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdEE6F.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 13:59:50 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 50 -ERROR - 2017-04-21 13:59:50 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 50 -ERROR - 2017-04-21 13:59:50 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 78 -ERROR - 2017-04-21 13:59:50 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 78 -ERROR - 2017-04-21 13:59:50 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 78 -ERROR - 2017-04-21 13:59:50 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 78 -ERROR - 2017-04-21 13:59:50 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 78 -ERROR - 2017-04-21 13:59:50 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 78 -ERROR - 2017-04-21 13:59:50 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 78 -ERROR - 2017-04-21 13:59:50 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 78 -ERROR - 2017-04-21 13:59:50 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 78 -ERROR - 2017-04-21 13:59:50 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 78 -ERROR - 2017-04-21 13:59:50 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 78 -ERROR - 2017-04-21 13:59:50 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 78 -ERROR - 2017-04-21 13:59:50 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 78 -ERROR - 2017-04-21 13:59:50 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 78 -ERROR - 2017-04-21 13:59:50 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 78 -ERROR - 2017-04-21 14:00:11 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 53 -ERROR - 2017-04-21 14:00:11 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 53 -ERROR - 2017-04-21 14:00:11 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 14:00:11 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 14:00:11 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 14:00:11 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 14:00:11 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 14:00:11 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 14:00:11 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 14:00:11 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 14:00:11 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 14:00:11 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 14:00:11 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 14:00:11 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 14:00:11 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 14:00:11 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 14:00:11 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 81 -ERROR - 2017-04-21 14:00:27 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdDE05.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4286 -ERROR - 2017-04-21 14:00:28 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdE06C.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 14:00:28 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdE139.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 14:00:29 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdE331.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 14:00:29 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdE332.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4286 -ERROR - 2017-04-21 14:00:29 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdE41D.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 14:00:29 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdE4FA.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 14:00:30 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdE723.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 14:00:30 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdE87F.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 14:00:54 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 50 -ERROR - 2017-04-21 14:00:54 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 50 -ERROR - 2017-04-21 14:00:54 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 78 -ERROR - 2017-04-21 14:00:54 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 78 -ERROR - 2017-04-21 14:00:54 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 78 -ERROR - 2017-04-21 14:00:54 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 78 -ERROR - 2017-04-21 14:00:54 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 78 -ERROR - 2017-04-21 14:00:54 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 78 -ERROR - 2017-04-21 14:00:54 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 78 -ERROR - 2017-04-21 14:00:54 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 78 -ERROR - 2017-04-21 14:00:54 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 78 -ERROR - 2017-04-21 14:00:54 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 78 -ERROR - 2017-04-21 14:00:54 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 78 -ERROR - 2017-04-21 14:00:54 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 78 -ERROR - 2017-04-21 14:00:54 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 78 -ERROR - 2017-04-21 14:00:54 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 78 -ERROR - 2017-04-21 14:00:54 --> Severity: Notice --> Undefined index: Employee C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 78 -ERROR - 2017-04-21 14:09:51 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_7697.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 14:09:51 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 14:09:51 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd7744.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 14:09:51 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd7764.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4286 -ERROR - 2017-04-21 14:12:56 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_49AF.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 14:12:56 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 14:12:56 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd4A4C.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 14:12:56 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd4A5D.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4286 -ERROR - 2017-04-21 14:14:27 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_ADC9.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 14:14:27 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 14:14:27 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpdAE76.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 14:18:36 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_7AE2.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 14:18:36 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-21 14:18:36 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd7B7F.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4285 -ERROR - 2017-04-21 14:18:36 --> Severity: Warning --> unlink(C:\Users\Venba Saravana\AppData\Local\Temp\cpd7B90.tmp.png): Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\lib\class.pdf.php 4286 -ERROR - 2017-04-21 14:31:27 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_3E32.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-21 14:31:27 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 diff --git a/application/logs/log-2017-04-22.php b/application/logs/log-2017-04-22.php deleted file mode 100644 index 1b6c0906..00000000 --- a/application/logs/log-2017-04-22.php +++ /dev/null @@ -1,16 +0,0 @@ - - -ERROR - 2017-04-22 10:48:09 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 86 -ERROR - 2017-04-22 10:48:09 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 86 -ERROR - 2017-04-22 13:50:44 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 86 -ERROR - 2017-04-22 13:50:44 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 86 -ERROR - 2017-04-22 13:51:19 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 86 -ERROR - 2017-04-22 13:51:19 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 86 -ERROR - 2017-04-22 13:54:31 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 83 -ERROR - 2017-04-22 13:54:32 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 83 -ERROR - 2017-04-22 14:07:27 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 83 -ERROR - 2017-04-22 14:07:27 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 83 -ERROR - 2017-04-22 14:08:39 --> Severity: Warning --> file_put_contents(C:\Users\Venba Saravana\AppData\Local\Temp\ca_B9F7.tmp): failed to open stream: Permission denied C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\image_cache.cls.php 144 -ERROR - 2017-04-22 14:08:39 --> Severity: Notice --> getimagesize(): Read error! C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\functions.inc.php 699 -ERROR - 2017-04-22 14:28:14 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 79 -ERROR - 2017-04-22 14:28:14 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 79 diff --git a/application/logs/log-2017-04-24.php b/application/logs/log-2017-04-24.php deleted file mode 100644 index 313ae8a9..00000000 --- a/application/logs/log-2017-04-24.php +++ /dev/null @@ -1,16 +0,0 @@ - - -ERROR - 2017-04-24 07:05:25 --> Severity: Notice --> Undefined property: stdClass::$userId C:\xampp\htdocs\siddharth_application\application\views\POlist.php 71 -ERROR - 2017-04-24 07:14:24 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 79 -ERROR - 2017-04-24 07:14:24 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 79 -ERROR - 2017-04-24 07:14:25 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 79 -ERROR - 2017-04-24 07:31:29 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 79 -ERROR - 2017-04-24 07:31:29 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 79 -ERROR - 2017-04-24 07:31:29 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 79 -ERROR - 2017-04-24 07:57:35 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 79 -ERROR - 2017-04-24 07:57:35 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 79 -ERROR - 2017-04-24 07:57:35 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 79 -ERROR - 2017-04-24 08:42:59 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 79 -ERROR - 2017-04-24 08:42:59 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 79 -ERROR - 2017-04-24 08:42:59 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 79 -ERROR - 2017-04-24 08:42:59 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 79 diff --git a/application/logs/log-2017-04-26.php b/application/logs/log-2017-04-26.php deleted file mode 100644 index 2fc0f3f0..00000000 --- a/application/logs/log-2017-04-26.php +++ /dev/null @@ -1,3 +0,0 @@ - - -ERROR - 2017-04-26 06:23:53 --> Severity: Notice --> Undefined property: stdClass::$userId C:\xampp\htdocs\siddharth_application\application\views\POlist.php 71 diff --git a/application/logs/log-2017-04-27.php b/application/logs/log-2017-04-27.php deleted file mode 100644 index 7fc2cb91..00000000 --- a/application/logs/log-2017-04-27.php +++ /dev/null @@ -1,27 +0,0 @@ - - -ERROR - 2017-04-27 08:18:50 --> Severity: Warning --> mysqli_connect(): (HY000/2002): A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. - C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-04-27 08:18:50 --> Unable to connect to the database -ERROR - 2017-04-27 08:32:06 --> Severity: Warning --> mysqli_connect(): php_network_getaddresses: getaddrinfo failed: No such host is known. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-04-27 08:32:06 --> Severity: Warning --> mysqli_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: No such host is known. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-04-27 08:32:07 --> Unable to connect to the database -ERROR - 2017-04-27 08:32:21 --> Severity: Warning --> mysqli_connect(): php_network_getaddresses: getaddrinfo failed: No such host is known. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-04-27 08:32:21 --> Severity: Warning --> mysqli_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: No such host is known. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-04-27 08:32:21 --> Unable to connect to the database -ERROR - 2017-04-27 08:36:41 --> Severity: Warning --> mysqli_connect(): php_network_getaddresses: getaddrinfo failed: No such host is known. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-04-27 08:36:41 --> Severity: Warning --> mysqli_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: No such host is known. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-04-27 08:36:41 --> Unable to connect to the database -ERROR - 2017-04-27 08:55:16 --> Severity: Warning --> mysqli_connect(): (HY000/2002): A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. - C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-04-27 08:55:16 --> Unable to connect to the database -ERROR - 2017-04-27 08:55:23 --> Severity: Notice --> Undefined property: stdClass::$userId C:\xampp\htdocs\siddharth_application\application\views\POlist.php 71 -ERROR - 2017-04-27 09:02:49 --> Severity: Warning --> call_user_func_array() expects parameter 1 to be a valid callback, class 'requisitionlist' does not have a method 'index' C:\xampp\htdocs\siddharth_application\system\core\CodeIgniter.php 360 -ERROR - 2017-04-27 09:03:35 --> Severity: Warning --> call_user_func_array() expects parameter 1 to be a valid callback, class 'requisitionlist' does not have a method 'index' C:\xampp\htdocs\siddharth_application\system\core\CodeIgniter.php 360 -ERROR - 2017-04-27 09:04:51 --> Severity: Warning --> call_user_func_array() expects parameter 1 to be a valid callback, class 'requisitionlist' does not have a method 'index' C:\xampp\htdocs\siddharth_application\system\core\CodeIgniter.php 360 -ERROR - 2017-04-27 09:05:05 --> Severity: Warning --> call_user_func_array() expects parameter 1 to be a valid callback, class 'requisitionlist' does not have a method 'index' C:\xampp\htdocs\siddharth_application\system\core\CodeIgniter.php 360 -ERROR - 2017-04-27 09:05:45 --> Severity: Warning --> call_user_func_array() expects parameter 1 to be a valid callback, class 'requisitionlist' does not have a method 'index' C:\xampp\htdocs\siddharth_application\system\core\CodeIgniter.php 360 -ERROR - 2017-04-27 09:06:27 --> Severity: Warning --> call_user_func_array() expects parameter 1 to be a valid callback, class 'requisitionlistapproval' does not have a method 'index' C:\xampp\htdocs\siddharth_application\system\core\CodeIgniter.php 360 -ERROR - 2017-04-27 09:13:15 --> Severity: Warning --> mysqli_connect(): (HY000/2002): A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. - C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-04-27 09:13:15 --> Unable to connect to the database diff --git a/application/logs/log-2017-04-28.php b/application/logs/log-2017-04-28.php deleted file mode 100644 index 03154443..00000000 --- a/application/logs/log-2017-04-28.php +++ /dev/null @@ -1,4 +0,0 @@ - - -ERROR - 2017-04-28 11:01:14 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-04-28 11:01:17 --> Severity: Notice --> Undefined variable: filename C:\xampp\htdocs\siddharth_application\application\controllers\purchaseorderform.php 81 diff --git a/application/logs/log-2017-05-02.php b/application/logs/log-2017-05-02.php deleted file mode 100644 index 4c304e9e..00000000 --- a/application/logs/log-2017-05-02.php +++ /dev/null @@ -1,22 +0,0 @@ - - -ERROR - 2017-05-02 07:36:45 --> Severity: Notice --> Undefined variable: option C:\xampp\htdocs\siddharth_application\application\views\addCostCenter.php 86 -ERROR - 2017-05-02 07:36:45 --> Severity: Warning --> Invalid argument supplied for foreach() C:\xampp\htdocs\siddharth_application\system\helpers\form_helper.php 332 -ERROR - 2017-05-02 08:23:39 --> Severity: Notice --> Undefined variable: option C:\xampp\htdocs\siddharth_application\application\views\addCostCenter.php 83 -ERROR - 2017-05-02 08:23:39 --> Severity: Warning --> Invalid argument supplied for foreach() C:\xampp\htdocs\siddharth_application\system\helpers\form_helper.php 332 -ERROR - 2017-05-02 08:23:56 --> Severity: Warning --> Invalid argument supplied for foreach() C:\xampp\htdocs\siddharth_application\system\helpers\form_helper.php 332 -ERROR - 2017-05-02 09:14:57 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 86 -ERROR - 2017-05-02 09:14:57 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 86 -ERROR - 2017-05-02 09:14:57 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 86 -ERROR - 2017-05-02 09:20:20 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 86 -ERROR - 2017-05-02 09:20:20 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 86 -ERROR - 2017-05-02 09:20:20 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 86 -ERROR - 2017-05-02 09:20:46 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 86 -ERROR - 2017-05-02 09:20:46 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 86 -ERROR - 2017-05-02 09:20:46 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 86 -ERROR - 2017-05-02 11:46:41 --> Severity: Warning --> mysqli_connect(): php_network_getaddresses: getaddrinfo failed: This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritative server. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-02 11:46:41 --> Severity: Warning --> mysqli_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritative server. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-02 11:46:41 --> Unable to connect to the database -ERROR - 2017-05-02 11:55:01 --> Severity: Warning --> mysqli_connect(): php_network_getaddresses: getaddrinfo failed: This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritative server. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-02 11:55:01 --> Severity: Warning --> mysqli_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritative server. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-02 11:55:01 --> Unable to connect to the database diff --git a/application/logs/log-2017-05-03.php b/application/logs/log-2017-05-03.php deleted file mode 100644 index 1a31b00e..00000000 --- a/application/logs/log-2017-05-03.php +++ /dev/null @@ -1,38 +0,0 @@ - - -ERROR - 2017-05-03 07:46:35 --> Severity: Warning --> mysqli_connect(): php_network_getaddresses: getaddrinfo failed: This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritative server. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-03 07:46:35 --> Severity: Warning --> mysqli_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritative server. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-03 07:46:35 --> Unable to connect to the database -ERROR - 2017-05-03 07:57:57 --> Severity: Warning --> mysqli_connect(): php_network_getaddresses: getaddrinfo failed: This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritative server. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-03 07:57:57 --> Severity: Warning --> mysqli_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritative server. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-03 07:57:57 --> Unable to connect to the database -ERROR - 2017-05-03 09:25:01 --> Severity: Warning --> mysqli_connect(): php_network_getaddresses: getaddrinfo failed: This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritative server. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-03 09:25:01 --> Severity: Warning --> mysqli_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritative server. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-03 09:25:01 --> Unable to connect to the database -ERROR - 2017-05-03 11:04:12 --> Severity: Warning --> mysqli_connect(): php_network_getaddresses: getaddrinfo failed: This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritative server. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-03 11:04:12 --> Severity: Warning --> mysqli_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritative server. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-03 11:04:12 --> Unable to connect to the database -ERROR - 2017-05-03 11:27:08 --> Severity: Warning --> mysqli_connect(): php_network_getaddresses: getaddrinfo failed: This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritative server. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-03 11:27:08 --> Severity: Warning --> mysqli_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritative server. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-03 11:27:08 --> Unable to connect to the database -ERROR - 2017-05-03 12:24:58 --> Severity: Warning --> mysqli_connect(): php_network_getaddresses: getaddrinfo failed: This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritative server. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-03 12:24:58 --> Severity: Warning --> mysqli_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritative server. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-03 12:24:58 --> Unable to connect to the database -ERROR - 2017-05-03 12:25:01 --> Severity: Warning --> mysqli_connect(): php_network_getaddresses: getaddrinfo failed: This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritative server. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-03 12:25:01 --> Severity: Warning --> mysqli_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritative server. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-03 12:25:01 --> Unable to connect to the database -ERROR - 2017-05-03 12:25:05 --> Severity: Warning --> mysqli_connect(): php_network_getaddresses: getaddrinfo failed: This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritative server. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-03 12:25:05 --> Severity: Warning --> mysqli_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritative server. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-03 12:25:05 --> Unable to connect to the database -ERROR - 2017-05-03 13:39:27 --> Severity: Warning --> mysqli_connect(): php_network_getaddresses: getaddrinfo failed: No such host is known. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-03 13:39:27 --> Severity: Warning --> mysqli_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: No such host is known. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-03 13:39:27 --> Unable to connect to the database -ERROR - 2017-05-03 13:39:32 --> Severity: Warning --> mysqli_connect(): php_network_getaddresses: getaddrinfo failed: No such host is known. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-03 13:39:32 --> Severity: Warning --> mysqli_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: No such host is known. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-03 13:39:32 --> Unable to connect to the database -ERROR - 2017-05-03 13:39:45 --> Severity: Warning --> mysqli_connect(): php_network_getaddresses: getaddrinfo failed: This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritative server. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-03 13:39:45 --> Severity: Warning --> mysqli_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritative server. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-03 13:39:45 --> Unable to connect to the database -ERROR - 2017-05-03 13:40:03 --> Severity: Warning --> mysqli_connect(): php_network_getaddresses: getaddrinfo failed: No such host is known. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-03 13:40:03 --> Severity: Warning --> mysqli_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: No such host is known. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-03 13:40:03 --> Unable to connect to the database diff --git a/application/logs/log-2017-05-04.php b/application/logs/log-2017-05-04.php deleted file mode 100644 index d60995ba..00000000 --- a/application/logs/log-2017-05-04.php +++ /dev/null @@ -1,23 +0,0 @@ - - -ERROR - 2017-05-04 12:39:43 --> Severity: Warning --> mysqli_connect(): (HY000/2002): A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. - C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-04 12:39:43 --> Unable to connect to the database -ERROR - 2017-05-04 12:40:17 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 86 -ERROR - 2017-05-04 12:40:17 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 86 -ERROR - 2017-05-04 12:40:17 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 86 -ERROR - 2017-05-04 12:41:09 --> Severity: Warning --> mysqli_connect(): (HY000/2002): A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. - C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-04 12:41:09 --> Unable to connect to the database -ERROR - 2017-05-04 12:42:33 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 86 -ERROR - 2017-05-04 12:42:33 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 86 -ERROR - 2017-05-04 12:42:33 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 86 -ERROR - 2017-05-04 12:42:37 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 86 -ERROR - 2017-05-04 12:42:37 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 86 -ERROR - 2017-05-04 12:42:37 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 86 -ERROR - 2017-05-04 12:42:50 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 86 -ERROR - 2017-05-04 12:42:50 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 86 -ERROR - 2017-05-04 12:42:50 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 86 -ERROR - 2017-05-04 12:49:04 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 86 -ERROR - 2017-05-04 12:49:04 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 86 -ERROR - 2017-05-04 12:49:04 --> Severity: Notice --> Undefined index: PayOn C:\xampp\htdocs\siddharth_application\application\views\payslipgenerate.php 86 diff --git a/application/logs/log-2017-05-08.php b/application/logs/log-2017-05-08.php deleted file mode 100644 index 412aebbc..00000000 --- a/application/logs/log-2017-05-08.php +++ /dev/null @@ -1,7 +0,0 @@ - - -ERROR - 2017-05-08 13:15:24 --> Query error: Table 'kasiram9_SiddharthIndustries.T_CostCentre' doesn't exist -ERROR - 2017-05-08 13:15:31 --> Query error: Table 'kasiram9_SiddharthIndustries.T_CostCentre' doesn't exist -ERROR - 2017-05-08 13:15:38 --> Query error: Table 'kasiram9_SiddharthIndustries.T_CostCentre' doesn't exist -ERROR - 2017-05-08 13:30:54 --> Query error: Table 'kasiram9_SiddharthIndustries.T_CostCentre' doesn't exist -ERROR - 2017-05-08 13:35:54 --> Query error: Table 'kasiram9_SiddharthIndustries.T_CostCentre' doesn't exist diff --git a/application/logs/log-2017-05-10.php b/application/logs/log-2017-05-10.php deleted file mode 100644 index 3067d705..00000000 --- a/application/logs/log-2017-05-10.php +++ /dev/null @@ -1,6 +0,0 @@ - - -ERROR - 2017-05-10 13:16:23 --> Severity: Notice --> Undefined variable: searchText C:\xampp\htdocs\siddharth_application\application\views\requisitionlisting.php 36 -ERROR - 2017-05-10 13:17:54 --> Severity: Notice --> Undefined variable: searchText C:\xampp\htdocs\siddharth_application\application\views\requisitionlisting.php 36 -ERROR - 2017-05-10 13:18:59 --> Severity: Notice --> Undefined variable: searchText C:\xampp\htdocs\siddharth_application\application\views\requisitionlisting.php 36 -ERROR - 2017-05-10 13:19:59 --> Severity: Notice --> Undefined variable: searchText C:\xampp\htdocs\siddharth_application\application\views\requisitionlisting.php 36 diff --git a/application/logs/log-2017-05-12.php b/application/logs/log-2017-05-12.php deleted file mode 100644 index cf6b06e6..00000000 --- a/application/logs/log-2017-05-12.php +++ /dev/null @@ -1,32 +0,0 @@ - - -ERROR - 2017-05-12 13:11:17 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 36 -ERROR - 2017-05-12 13:11:17 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 36 -ERROR - 2017-05-12 13:11:17 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 36 -ERROR - 2017-05-12 13:11:17 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 36 -ERROR - 2017-05-12 13:11:17 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 36 -ERROR - 2017-05-12 13:11:17 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 36 -ERROR - 2017-05-12 13:11:27 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 36 -ERROR - 2017-05-12 13:11:28 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 36 -ERROR - 2017-05-12 13:11:28 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 36 -ERROR - 2017-05-12 13:11:28 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 36 -ERROR - 2017-05-12 13:11:28 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 36 -ERROR - 2017-05-12 13:11:28 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 36 -ERROR - 2017-05-12 13:13:19 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 36 -ERROR - 2017-05-12 13:13:19 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 36 -ERROR - 2017-05-12 13:13:19 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 36 -ERROR - 2017-05-12 13:13:19 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 36 -ERROR - 2017-05-12 13:13:19 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 36 -ERROR - 2017-05-12 13:13:19 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 36 -ERROR - 2017-05-12 13:22:46 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 36 -ERROR - 2017-05-12 13:22:46 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 36 -ERROR - 2017-05-12 13:22:46 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 36 -ERROR - 2017-05-12 13:22:46 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 36 -ERROR - 2017-05-12 13:22:46 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 36 -ERROR - 2017-05-12 13:22:46 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 36 -ERROR - 2017-05-12 13:31:34 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 36 -ERROR - 2017-05-12 13:31:34 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 36 -ERROR - 2017-05-12 13:31:34 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 36 -ERROR - 2017-05-12 13:31:34 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 36 -ERROR - 2017-05-12 13:31:34 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 36 -ERROR - 2017-05-12 13:31:34 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 36 diff --git a/application/logs/log-2017-05-19.php b/application/logs/log-2017-05-19.php deleted file mode 100644 index 5c56b780..00000000 --- a/application/logs/log-2017-05-19.php +++ /dev/null @@ -1,21 +0,0 @@ - - -ERROR - 2017-05-19 09:01:47 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 41 -ERROR - 2017-05-19 09:01:47 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 41 -ERROR - 2017-05-19 09:01:47 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 41 -ERROR - 2017-05-19 09:01:47 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 41 -ERROR - 2017-05-19 09:01:47 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 41 -ERROR - 2017-05-19 09:01:47 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 41 -ERROR - 2017-05-19 09:01:47 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 41 -ERROR - 2017-05-19 13:04:43 --> Severity: Warning --> mysqli_connect(): php_network_getaddresses: getaddrinfo failed: No such host is known. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-19 13:04:43 --> Severity: Warning --> mysqli_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: No such host is known. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-19 13:04:43 --> Unable to connect to the database -ERROR - 2017-05-19 13:04:59 --> Severity: Warning --> mysqli_connect(): php_network_getaddresses: getaddrinfo failed: No such host is known. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-19 13:04:59 --> Severity: Warning --> mysqli_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: No such host is known. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-19 13:04:59 --> Unable to connect to the database -ERROR - 2017-05-19 13:30:35 --> Severity: Warning --> strpos() expects parameter 1 to be string, array given C:\xampp\htdocs\siddharth_application\system\helpers\form_helper.php 286 -ERROR - 2017-05-19 13:30:35 --> Severity: Notice --> Array to string conversion C:\xampp\htdocs\siddharth_application\system\helpers\form_helper.php 288 -ERROR - 2017-05-19 13:34:12 --> Severity: Warning --> strpos() expects parameter 1 to be string, array given C:\xampp\htdocs\siddharth_application\system\helpers\form_helper.php 286 -ERROR - 2017-05-19 13:34:12 --> Severity: Notice --> Array to string conversion C:\xampp\htdocs\siddharth_application\system\helpers\form_helper.php 288 -ERROR - 2017-05-19 13:45:11 --> Severity: Warning --> strpos() expects parameter 1 to be string, array given C:\xampp\htdocs\siddharth_application\system\helpers\form_helper.php 286 -ERROR - 2017-05-19 13:45:11 --> Severity: Notice --> Array to string conversion C:\xampp\htdocs\siddharth_application\system\helpers\form_helper.php 288 diff --git a/application/logs/log-2017-05-22.php b/application/logs/log-2017-05-22.php deleted file mode 100644 index 242c6c68..00000000 --- a/application/logs/log-2017-05-22.php +++ /dev/null @@ -1,66 +0,0 @@ - - -ERROR - 2017-05-22 09:44:17 --> Query error: Column 'LineItemNo' cannot be null -ERROR - 2017-05-22 10:01:18 --> Severity: Notice --> Array to string conversion C:\xampp\htdocs\siddharth_application\system\database\DB_driver.php 605 -ERROR - 2017-05-22 10:01:18 --> Severity: Notice --> Array to string conversion C:\xampp\htdocs\siddharth_application\system\database\DB_driver.php 605 -ERROR - 2017-05-22 10:01:18 --> Query error: Unknown column 'Array' in 'where clause' -ERROR - 2017-05-22 10:28:20 --> Severity: Notice --> Array to string conversion C:\xampp\htdocs\siddharth_application\system\database\DB_driver.php 605 -ERROR - 2017-05-22 10:28:20 --> Severity: Notice --> Array to string conversion C:\xampp\htdocs\siddharth_application\system\database\DB_driver.php 605 -ERROR - 2017-05-22 10:28:20 --> Query error: Unknown column 'Array' in 'where clause' -ERROR - 2017-05-22 10:30:46 --> Severity: Notice --> Array to string conversion C:\xampp\htdocs\siddharth_application\system\database\DB_driver.php 605 -ERROR - 2017-05-22 10:30:46 --> Severity: Notice --> Array to string conversion C:\xampp\htdocs\siddharth_application\system\database\DB_driver.php 605 -ERROR - 2017-05-22 10:30:46 --> Query error: Unknown column 'Array' in 'where clause' -ERROR - 2017-05-22 10:32:21 --> Severity: Notice --> Array to string conversion C:\xampp\htdocs\siddharth_application\system\database\DB_driver.php 605 -ERROR - 2017-05-22 10:32:21 --> Severity: Notice --> Array to string conversion C:\xampp\htdocs\siddharth_application\system\database\DB_driver.php 605 -ERROR - 2017-05-22 10:32:21 --> Query error: Unknown column 'Array' in 'where clause' -ERROR - 2017-05-22 10:38:35 --> Severity: Notice --> Array to string conversion C:\xampp\htdocs\siddharth_application\system\database\DB_driver.php 605 -ERROR - 2017-05-22 10:38:35 --> Severity: Notice --> Array to string conversion C:\xampp\htdocs\siddharth_application\system\database\DB_driver.php 605 -ERROR - 2017-05-22 10:38:35 --> Query error: Unknown column 'Array' in 'where clause' -ERROR - 2017-05-22 10:49:27 --> Severity: Notice --> Undefined index: Totalvalue C:\xampp\htdocs\siddharth_application\application\controllers\servicepurchaseorder.php 46 -ERROR - 2017-05-22 10:50:22 --> Severity: Notice --> Undefined index: Totalvalue C:\xampp\htdocs\siddharth_application\application\controllers\servicepurchaseorder.php 46 -ERROR - 2017-05-22 10:57:22 --> Query error: Column 'LineItemNo' cannot be null -ERROR - 2017-05-22 11:10:47 --> Query error: Column 'LineItemNo' cannot be null -ERROR - 2017-05-22 11:21:52 --> Query error: Column 'LineItemNo' cannot be null -ERROR - 2017-05-22 11:27:09 --> Query error: Column 'LineItemNo' cannot be null -ERROR - 2017-05-22 11:28:34 --> Query error: Column 'LineItemNo' cannot be null -ERROR - 2017-05-22 11:29:38 --> Query error: Column 'LineItemNo' cannot be null -ERROR - 2017-05-22 12:30:27 --> Query error: Unknown column 'ServiceTax' in 'field list' -ERROR - 2017-05-22 12:40:09 --> Query error: Unknown column 'ServiceTax' in 'field list' -ERROR - 2017-05-22 12:42:17 --> Query error: Unknown column 'ServiceTax' in 'field list' -ERROR - 2017-05-22 12:46:14 --> Severity: Notice --> Use of undefined constant i - assumed 'i' C:\xampp\htdocs\siddharth_application\application\controllers\servicepurchaseorder.php 231 -ERROR - 2017-05-22 12:46:14 --> Severity: Notice --> Undefined index: i C:\xampp\htdocs\siddharth_application\application\controllers\servicepurchaseorder.php 231 -ERROR - 2017-05-22 12:46:14 --> Severity: Notice --> Use of undefined constant i - assumed 'i' C:\xampp\htdocs\siddharth_application\application\controllers\servicepurchaseorder.php 231 -ERROR - 2017-05-22 12:46:14 --> Severity: Notice --> Undefined index: i C:\xampp\htdocs\siddharth_application\application\controllers\servicepurchaseorder.php 231 -ERROR - 2017-05-22 12:46:14 --> Severity: Notice --> Use of undefined constant i - assumed 'i' C:\xampp\htdocs\siddharth_application\application\controllers\servicepurchaseorder.php 231 -ERROR - 2017-05-22 12:46:14 --> Severity: Notice --> Undefined index: i C:\xampp\htdocs\siddharth_application\application\controllers\servicepurchaseorder.php 231 -ERROR - 2017-05-22 12:46:35 --> Severity: Notice --> Undefined offset: 1 C:\xampp\htdocs\siddharth_application\application\controllers\servicepurchaseorder.php 231 -ERROR - 2017-05-22 12:46:35 --> Severity: Notice --> Undefined offset: 2 C:\xampp\htdocs\siddharth_application\application\controllers\servicepurchaseorder.php 231 -ERROR - 2017-05-22 12:46:35 --> Severity: Notice --> Undefined offset: 3 C:\xampp\htdocs\siddharth_application\application\controllers\servicepurchaseorder.php 231 -ERROR - 2017-05-22 12:49:00 --> Severity: Notice --> Undefined variable: TaxId C:\xampp\htdocs\siddharth_application\application\models\purchaseorder_model.php 437 -ERROR - 2017-05-22 12:49:00 --> Query error: Unknown column 'TaxID' in 'where clause' -ERROR - 2017-05-22 12:50:30 --> Severity: Notice --> Undefined variable: TaxId C:\xampp\htdocs\siddharth_application\application\models\purchaseorder_model.php 437 -ERROR - 2017-05-22 12:50:30 --> Severity: Notice --> Undefined variable: TaxId C:\xampp\htdocs\siddharth_application\application\models\purchaseorder_model.php 437 -ERROR - 2017-05-22 12:50:31 --> Severity: Notice --> Undefined variable: TaxId C:\xampp\htdocs\siddharth_application\application\models\purchaseorder_model.php 437 -ERROR - 2017-05-22 14:09:06 --> Query error: Unknown column 'ST015' in 'where clause' -ERROR - 2017-05-22 14:14:05 --> Query error: Unknown column 'ST015' in 'where clause' -ERROR - 2017-05-22 14:16:40 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 41 -ERROR - 2017-05-22 14:16:40 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 41 -ERROR - 2017-05-22 14:16:40 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 41 -ERROR - 2017-05-22 14:16:40 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 41 -ERROR - 2017-05-22 14:16:40 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 41 -ERROR - 2017-05-22 14:16:40 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 41 -ERROR - 2017-05-22 14:16:40 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 41 -ERROR - 2017-05-22 14:16:49 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 41 -ERROR - 2017-05-22 14:16:49 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 41 -ERROR - 2017-05-22 14:16:49 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 41 -ERROR - 2017-05-22 14:16:49 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 41 -ERROR - 2017-05-22 14:16:49 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 41 -ERROR - 2017-05-22 14:16:49 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 41 -ERROR - 2017-05-22 14:16:49 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 41 -ERROR - 2017-05-22 14:19:45 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-22 14:19:45 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-22 14:19:45 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-22 14:19:45 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-22 14:19:45 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-22 14:19:45 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-22 14:19:45 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 37 diff --git a/application/logs/log-2017-05-23.php b/application/logs/log-2017-05-23.php deleted file mode 100644 index c5f0a569..00000000 --- a/application/logs/log-2017-05-23.php +++ /dev/null @@ -1,127 +0,0 @@ - - -ERROR - 2017-05-23 07:29:37 --> Severity: Warning --> mysqli_connect(): (HY000/2002): A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. - C:\xampp\htdocs\siddharth_application_23mayServicePOcompl\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-23 07:29:37 --> Unable to connect to the database -ERROR - 2017-05-23 07:30:06 --> Severity: Warning --> mysqli_connect(): (HY000/2002): A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. - C:\xampp\htdocs\siddharth_application_23mayServicePOcompl\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-23 07:30:06 --> Unable to connect to the database -ERROR - 2017-05-23 07:30:40 --> Severity: Warning --> mysqli_connect(): (HY000/2002): A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. - C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-23 07:30:40 --> Unable to connect to the database -ERROR - 2017-05-23 07:31:23 --> Severity: Warning --> mysqli_connect(): (HY000/2002): A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. - C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-23 07:31:23 --> Unable to connect to the database -ERROR - 2017-05-23 07:36:34 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-23 07:36:34 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-23 07:36:34 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-23 07:36:34 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-23 07:36:34 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-23 07:36:34 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-23 07:36:34 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-23 07:37:42 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application_23mayPO\application\controllers\purchaseorder.php 91 -ERROR - 2017-05-23 07:37:42 --> Severity: Warning --> Invalid argument supplied for foreach() C:\xampp\htdocs\siddharth_application_23mayPO\application\controllers\purchaseorder.php 96 -ERROR - 2017-05-23 07:37:42 --> Query error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 5 -ERROR - 2017-05-23 07:43:15 --> Severity: Notice --> Undefined variable: Selected C:\xampp\htdocs\siddharth_application_23mayPO\application\controllers\purchaseorder.php 92 -ERROR - 2017-05-23 07:43:15 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application_23mayPO\application\controllers\purchaseorder.php 92 -ERROR - 2017-05-23 07:43:15 --> Severity: Warning --> Invalid argument supplied for foreach() C:\xampp\htdocs\siddharth_application_23mayPO\application\controllers\purchaseorder.php 97 -ERROR - 2017-05-23 07:43:15 --> Query error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 5 -ERROR - 2017-05-23 07:44:28 --> Query error: Cannot add or update a child row: a foreign key constraint fails (`kasiram9_SiddharthIndustries`.`T_PurchaseOrder_LineItem`, CONSTRAINT `T_Requestion_MasterReqNo` FOREIGN KEY (`ReqNo`) REFERENCES `T_Requestion_Master` (`ReqNo`) ON UPDATE CASCADE) -ERROR - 2017-05-23 16:11:49 --> Severity: Notice --> Undefined property: stdClass::$ReqBy C:\xampp\htdocs\siddharth_application_23mayPO\application\views\editRevenuepurchaseorder.php 1560 -ERROR - 2017-05-23 16:11:49 --> Severity: Notice --> Undefined property: stdClass::$ReqType C:\xampp\htdocs\siddharth_application_23mayPO\application\views\editRevenuepurchaseorder.php 1561 -ERROR - 2017-05-23 16:11:49 --> Severity: Notice --> Undefined property: stdClass::$ReqBy C:\xampp\htdocs\siddharth_application_23mayPO\application\views\editRevenuepurchaseorder.php 1560 -ERROR - 2017-05-23 16:11:49 --> Severity: Notice --> Undefined property: stdClass::$ReqType C:\xampp\htdocs\siddharth_application_23mayPO\application\views\editRevenuepurchaseorder.php 1561 -ERROR - 2017-05-23 16:14:19 --> Severity: Notice --> Undefined property: stdClass::$ReqType C:\xampp\htdocs\siddharth_application_23mayPO\application\views\editRevenuepurchaseorder.php 1561 -ERROR - 2017-05-23 16:14:19 --> Severity: Notice --> Undefined property: stdClass::$ReqType C:\xampp\htdocs\siddharth_application_23mayPO\application\views\editRevenuepurchaseorder.php 1561 -ERROR - 2017-05-23 16:36:46 --> Severity: Notice --> Undefined property: stdClass::$CostCenterCode C:\xampp\htdocs\siddharth_application_23mayPO\application\views\editRevenuepurchaseorder.php 2637 -ERROR - 2017-05-23 17:22:59 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-23 17:22:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:22:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-05-23 17:23:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-05-23 17:23:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-05-23 17:23:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-05-23 17:23:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-05-23 17:23:14 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-23 17:23:14 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:14 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:14 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:14 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:14 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:14 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:14 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:14 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:14 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:14 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:14 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:14 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:14 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:14 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:14 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:15 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-05-23 17:23:15 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-05-23 17:23:15 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-05-23 17:23:15 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:15 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:15 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:15 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:15 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:15 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:15 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:15 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:15 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:23:15 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\block_frame_reflower.cls.php 516 -ERROR - 2017-05-23 17:23:15 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-05-23 17:23:15 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-05-23 17:24:06 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-23 17:24:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:24:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:24:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:24:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:24:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:24:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:24:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:24:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:24:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:24:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:24:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:24:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:24:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:24:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:24:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:24:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-05-23 17:24:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-05-23 17:24:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-05-23 17:24:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:24:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:24:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:24:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:24:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:24:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:24:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:24:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:24:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-23 17:24:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-05-23 17:24:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 494 diff --git a/application/logs/log-2017-05-24.php b/application/logs/log-2017-05-24.php deleted file mode 100644 index 9d7d557b..00000000 --- a/application/logs/log-2017-05-24.php +++ /dev/null @@ -1,1376 +0,0 @@ - - -ERROR - 2017-05-24 08:14:40 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 08:14:40 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 08:14:40 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 08:14:40 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 08:14:40 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 08:14:40 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 08:14:40 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 08:17:02 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 08:17:02 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 08:17:02 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 08:17:02 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 08:17:02 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 08:17:02 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 08:17:02 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 08:22:43 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 08:22:43 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 08:22:43 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 08:22:43 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 08:22:44 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 08:22:44 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 08:22:44 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 08:23:51 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 08:23:51 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 08:23:51 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 08:23:51 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 08:23:51 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 08:23:51 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 08:23:51 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 09:26:01 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 09:26:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-05-24 09:26:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-05-24 09:26:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-05-24 09:26:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:26:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:26:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:26:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:26:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:26:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:26:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:26:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-05-24 09:26:02 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-05-24 09:26:25 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 09:26:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\block_frame_reflower.cls.php 642 -ERROR - 2017-05-24 09:26:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-05-24 09:26:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-05-24 09:26:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:26:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:26:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:26:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:26:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:26:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:26:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:26:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:26:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-05-24 09:26:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 494 -ERROR - 2017-05-24 09:27:56 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 09:27:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:27:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:27:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:27:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:27:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:27:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:27:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:27:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:27:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:27:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:27:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:27:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:27:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:27:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:27:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:27:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:27:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:27:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:27:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:27:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:27:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:27:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:27:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:27:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:27:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:27:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:27:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:27:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:36 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 09:28:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:28:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:28:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:28:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:28:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:28:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:28:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:28:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:51 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 09:28:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:28:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:28:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:28:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:28:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:28:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:28:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:28:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:28:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:30:38 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 09:30:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:30:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:30:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:30:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:30:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:30:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:30:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:30:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:30:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:30:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:30:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:30:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:30:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:30:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:30:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:30:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:30:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:30:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:50:58 --> Severity: Notice --> Undefined property: stdClass::$PONO C:\xampp\htdocs\siddharth_application_23mayPO\application\views\servicepopdf.php 33 -ERROR - 2017-05-24 09:50:58 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 09:50:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:50:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:50:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:50:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:50:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:50:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:50:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:50:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:50:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:50:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:50:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:50:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:50:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:50:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:50:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:50:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 09:50:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 09:50:59 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:03:50 --> Severity: Notice --> Undefined property: stdClass::$PONO C:\xampp\htdocs\siddharth_application_23mayPO\application\views\servicepopdf.php 34 -ERROR - 2017-05-24 11:03:50 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:03:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:03:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:03:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:03:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:03:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:03:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:03:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:03:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:03:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:03:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:03:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:03:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:03:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:03:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:03:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:03:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:03:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:03:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:03:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:05:43 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:05:44 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:05:44 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:05:44 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:05:44 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:05:44 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:05:44 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:05:44 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:05:44 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:05:44 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:05:44 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:05:44 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:05:44 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:05:44 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:05:44 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:05:44 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:05:44 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:05:44 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:05:44 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:05:44 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:06:13 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:06:13 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:06:13 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:06:13 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:06:13 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:06:13 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:06:13 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:06:13 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:06:13 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:06:13 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:06:13 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:06:13 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:06:13 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:06:13 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:06:13 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:06:13 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:06:13 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:06:13 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:06:13 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:06:13 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:06:46 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:06:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:06:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:06:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:06:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:06:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:06:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:06:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:06:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:06:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:06:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:06:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:06:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:06:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:06:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:06:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:06:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:06:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:06:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:06:46 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:08:30 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:08:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:08:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:08:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:08:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:08:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:08:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:08:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:08:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:08:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:08:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:08:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:08:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:08:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:08:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:08:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:08:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:08:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:08:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:08:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:09:40 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:09:40 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:09:40 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:09:40 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:09:40 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:09:40 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:09:40 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:09:40 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:09:40 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:09:40 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:09:40 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:09:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:09:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:09:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:09:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:09:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:09:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:09:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:09:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:09:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:11:32 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:11:32 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:11:32 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:11:32 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:11:32 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:11:32 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:11:32 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:11:32 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:11:32 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:11:32 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:11:32 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:11:32 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:11:32 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:11:32 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:11:32 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:11:32 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:11:32 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:11:32 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:11:32 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:11:32 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:12:25 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:12:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:12:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:12:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:12:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:12:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:12:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:12:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:12:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:12:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:12:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:12:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:12:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:12:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:12:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:12:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:12:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:12:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:12:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:12:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:13:50 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:13:50 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:13:50 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:13:50 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:13:50 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:13:50 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:13:50 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:13:50 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:13:50 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:13:50 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:13:50 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:13:50 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:13:50 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:13:50 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:13:50 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:13:50 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:13:50 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:13:50 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:13:50 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:13:50 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:14:23 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:14:23 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:14:23 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:14:23 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:14:23 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:14:23 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:14:23 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:14:23 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:14:23 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:14:23 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:14:23 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:14:23 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:14:23 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:14:23 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:14:23 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:14:23 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:14:23 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:14:23 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:14:23 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:14:23 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:14:35 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:14:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:14:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:14:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:14:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:14:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:14:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:14:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:14:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:14:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:14:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:14:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:14:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:14:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:14:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:14:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:14:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:14:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:14:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:14:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:15:24 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:15:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:15:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:15:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:15:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:15:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:15:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:15:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:15:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:15:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:15:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:15:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:15:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:15:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:15:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:15:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:15:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:15:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:15:24 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:15:39 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:15:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:15:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:15:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:15:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:15:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:15:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:15:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:15:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:15:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:15:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:15:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:15:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:15:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:15:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:15:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:15:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:15:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:15:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:16:08 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:16:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:16:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:16:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:16:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:16:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:16:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:16:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:16:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:16:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:16:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:16:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:16:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:16:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:16:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:16:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:16:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:16:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:16:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:16:35 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:16:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:16:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:16:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:16:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:16:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:16:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:16:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:16:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:16:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:16:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:16:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:16:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:16:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:16:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:16:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:16:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:16:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:16:35 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:16:52 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:16:53 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:16:53 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:16:53 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:16:53 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:16:53 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:16:53 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:16:53 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:16:53 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:16:53 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:16:53 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:16:53 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:16:53 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:16:53 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:16:53 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:16:53 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:16:53 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:16:53 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:16:53 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:17:10 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:17:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:17:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:17:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:17:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:17:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:17:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:17:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:17:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:17:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:17:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:17:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:17:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:17:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:17:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:17:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:17:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:17:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:17:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:17:34 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:17:34 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:17:34 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:17:34 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:17:34 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:17:34 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:17:34 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:17:34 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:17:34 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:17:34 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:17:34 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:17:34 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:17:34 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:17:34 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:17:34 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:17:34 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:17:34 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:17:34 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:17:34 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:18:08 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:18:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:18:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:18:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:18:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:18:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:18:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:18:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:18:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:18:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:18:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:18:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:18:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:18:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:18:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:18:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:18:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:18:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:18:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:18:30 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:20:50 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:20:50 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:20:50 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:20:50 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:20:50 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:20:50 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:20:50 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:20:50 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:20:50 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:20:50 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:20:50 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:20:50 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:20:50 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:20:50 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:20:50 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 11:20:50 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:20:50 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:24:29 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:24:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:24:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:24:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:24:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:24:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:24:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:24:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:24:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:24:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:24:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:25:00 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:25:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:25:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:25:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:25:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:25:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:25:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:25:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:25:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:25:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:25:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:25:18 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:25:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:25:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:25:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:25:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:25:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:25:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:25:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:25:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:25:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:25:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:25:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:01 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:26:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:01 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:22 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:26:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:39 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:26:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:26:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:27:20 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:27:21 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:27:21 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:27:21 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:27:21 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:27:21 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:27:21 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:27:21 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:27:21 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:27:21 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:27:21 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:27:21 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:27:21 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:27:21 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:27:21 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:27:21 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:27:21 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:27:21 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:29:37 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:29:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:29:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:29:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:29:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:29:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:29:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:29:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:29:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:29:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:29:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:29:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:29:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:29:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:29:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:29:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:29:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:29:37 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:30:16 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:30:16 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:30:16 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:30:16 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:30:16 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:30:16 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:30:16 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:30:16 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:30:16 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:30:16 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:30:16 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:30:16 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:30:16 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:30:16 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:30:16 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:30:16 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:30:16 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:30:16 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:31:13 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:31:13 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:31:13 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:31:13 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:31:13 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:31:13 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:31:13 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:31:13 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:31:13 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:31:13 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:31:13 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:31:13 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:31:13 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:31:13 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:31:13 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:31:13 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:31:13 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:31:13 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:31:38 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:31:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:31:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:31:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:31:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:31:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:31:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:31:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:31:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:31:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:31:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:31:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:31:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:31:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:31:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:31:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:31:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:31:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:06 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:32:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:06 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:17 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:32:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:48 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:32:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:32:48 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:40:51 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:40:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:40:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:40:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:40:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:40:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:40:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:40:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:40:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:40:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:40:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:40:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:40:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:40:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:40:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:40:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:40:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:40:52 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:41:25 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:41:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:41:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:41:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:41:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:41:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:41:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:41:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:41:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:41:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:41:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:41:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:41:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:41:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:41:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:41:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:41:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:41:25 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:43:15 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:43:15 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:43:15 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:43:15 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:43:15 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:43:15 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:43:15 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:43:15 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:43:15 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:43:15 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:43:15 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:43:15 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:43:15 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:43:15 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:43:15 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:43:15 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:43:15 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:43:15 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:43:57 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:43:57 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:43:57 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:43:57 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:43:57 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:43:57 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:43:57 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:43:57 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:43:57 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:43:57 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:43:57 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:43:57 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:43:57 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:43:57 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:43:57 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:43:57 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:43:57 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:43:57 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:43:57 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:44:38 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:44:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:44:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:44:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:44:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:44:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:44:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:44:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:44:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:44:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:44:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:44:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:44:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:44:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:44:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:44:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:44:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:44:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:44:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:19 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:47:19 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:19 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:19 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:19 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:19 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:19 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:19 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:19 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:19 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:19 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:19 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:19 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:19 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:19 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:19 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:19 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:19 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:19 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:19 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\block_frame_reflower.cls.php 442 -ERROR - 2017-05-24 11:47:19 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:38 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:47:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:47:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\block_frame_reflower.cls.php 442 -ERROR - 2017-05-24 11:47:38 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:08 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:48:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\block_frame_reflower.cls.php 442 -ERROR - 2017-05-24 11:48:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:28 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:48:28 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:28 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:28 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:28 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:28 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:28 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:28 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:28 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:28 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:28 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\block_frame_reflower.cls.php 442 -ERROR - 2017-05-24 11:48:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:48:29 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:49:03 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 11:49:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:49:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:49:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:49:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:49:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:49:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:49:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:49:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:49:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:49:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:49:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:49:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:49:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:49:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:49:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:49:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:49:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:49:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:49:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\block_frame_reflower.cls.php 442 -ERROR - 2017-05-24 11:49:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:49:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:49:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 11:49:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:17:53 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 12:17:53 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 12:17:53 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 12:17:53 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 12:17:53 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 12:17:53 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 12:17:53 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 12:18:30 --> Severity: Notice --> Undefined variable: SubTotalAmount C:\xampp\htdocs\siddharth_application_23mayPO\application\views\revenuepopdf.php 121 -ERROR - 2017-05-24 12:18:30 --> Severity: Notice --> Undefined variable: ServiceTax C:\xampp\htdocs\siddharth_application_23mayPO\application\views\revenuepopdf.php 127 -ERROR - 2017-05-24 12:18:30 --> Severity: Notice --> Undefined variable: EducessTax C:\xampp\htdocs\siddharth_application_23mayPO\application\views\revenuepopdf.php 132 -ERROR - 2017-05-24 12:18:30 --> Severity: Notice --> Undefined variable: SecHigherEducessTax C:\xampp\htdocs\siddharth_application_23mayPO\application\views\revenuepopdf.php 137 -ERROR - 2017-05-24 12:18:30 --> Severity: Notice --> Undefined variable: KrishiKalyantax C:\xampp\htdocs\siddharth_application_23mayPO\application\views\revenuepopdf.php 142 -ERROR - 2017-05-24 12:18:30 --> Severity: Notice --> Undefined variable: SwachhBharattax C:\xampp\htdocs\siddharth_application_23mayPO\application\views\revenuepopdf.php 147 -ERROR - 2017-05-24 12:18:30 --> Severity: Notice --> Undefined variable: OrderValue C:\xampp\htdocs\siddharth_application_23mayPO\application\views\revenuepopdf.php 152 -ERROR - 2017-05-24 12:18:30 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\block_frame_reflower.cls.php 442 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\block_frame_reflower.cls.php 442 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\block_frame_reflower.cls.php 442 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\block_frame_reflower.cls.php 442 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\block_frame_reflower.cls.php 442 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\block_frame_reflower.cls.php 442 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:18:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:41:19 --> Severity: Notice --> Undefined variable: SubTotalAmount C:\xampp\htdocs\siddharth_application_23mayPO\application\views\revenuepopdf.php 110 -ERROR - 2017-05-24 12:41:20 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 12:41:20 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:41:20 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:41:20 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:41:20 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:41:20 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:41:20 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:41:20 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:41:20 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:41:20 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 12:41:20 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\block_frame_reflower.cls.php 442 -ERROR - 2017-05-24 12:41:20 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 12:41:20 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\block_frame_reflower.cls.php 442 -ERROR - 2017-05-24 12:41:20 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:41:20 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:41:20 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:41:20 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:41:20 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:41:20 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:41:20 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:41:20 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:41:20 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:41:20 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:41:20 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:41:20 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:41:20 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:41:20 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:41:20 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:41:20 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:42:08 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 12:42:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:42:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:42:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:42:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:42:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:42:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:42:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:42:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:42:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 12:42:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:42:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:42:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:42:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:42:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:42:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:42:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:42:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:42:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:42:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:42:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:42:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:42:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:42:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:42:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:42:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:42:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:42:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:42:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:42:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:42:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:43:44 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 12:43:44 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:43:44 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:43:44 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:43:44 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:43:44 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:43:44 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:43:44 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:43:44 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:43:44 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 12:43:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:43:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:43:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:43:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:43:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:43:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:43:45 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:44:22 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 12:44:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:44:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:44:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:44:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:44:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:44:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:44:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:44:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:44:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 12:44:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:44:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:44:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:44:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:44:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:44:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:44:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:46:18 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 12:46:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:46:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:46:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:46:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:46:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:46:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:46:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:46:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:46:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 12:46:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:46:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:46:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:46:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:46:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:46:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:46:18 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:46:39 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 12:46:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:46:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:46:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:46:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:46:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:46:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:46:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:46:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:46:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 12:46:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:46:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:46:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:46:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:46:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:46:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:46:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:46:39 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:59:42 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-24 12:59:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:59:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:59:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:59:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:59:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:59:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:59:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:59:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:59:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-24 12:59:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:59:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:59:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:59:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:59:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:59:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:59:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 12:59:43 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-24 14:15:29 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-24 14:15:55 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:15:55 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:15:55 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:15:55 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:15:55 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:15:55 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:15:55 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:23:35 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:29:16 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\addNew.php 46 -ERROR - 2017-05-24 14:31:02 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:31:02 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:31:02 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:31:02 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:31:02 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:31:02 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:31:02 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:31:33 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:31:33 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:31:33 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:31:33 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:31:33 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:31:33 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:31:33 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:32:59 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:32:59 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:32:59 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:32:59 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:32:59 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:32:59 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:32:59 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:33:58 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:33:58 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:33:58 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:33:58 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:33:58 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:33:58 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:33:58 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:34:03 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:34:03 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:34:03 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:34:03 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:34:03 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:34:03 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:34:03 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:34:22 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:34:22 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:34:22 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:34:22 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:34:22 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:34:22 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-24 14:34:22 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 diff --git a/application/logs/log-2017-05-25.php b/application/logs/log-2017-05-25.php deleted file mode 100644 index 7c0b82fc..00000000 --- a/application/logs/log-2017-05-25.php +++ /dev/null @@ -1,227 +0,0 @@ - - -ERROR - 2017-05-25 07:47:31 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-25 07:50:59 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application_23mayPO\application\controllers\purchaseorder.php 88 -ERROR - 2017-05-25 07:50:59 --> Severity: Warning --> Invalid argument supplied for foreach() C:\xampp\htdocs\siddharth_application_23mayPO\application\controllers\purchaseorder.php 93 -ERROR - 2017-05-25 07:50:59 --> Query error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 5 -ERROR - 2017-05-25 07:58:30 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 07:58:30 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 07:58:30 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 07:58:30 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 07:58:30 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 07:58:30 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 07:58:30 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 08:00:48 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-25 08:01:00 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-25 08:01:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\block_frame_reflower.cls.php 442 -ERROR - 2017-05-25 08:01:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:00 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:55 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-25 08:01:55 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:55 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:55 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:55 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:55 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:55 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:55 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:55 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:55 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-25 08:01:55 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:55 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:55 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:55 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:55 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:55 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:55 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:01:55 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 08:04:02 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 08:04:02 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 08:04:02 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 08:04:02 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 08:04:02 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 08:04:02 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 08:04:02 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 08:05:09 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 08:05:09 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 08:05:09 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 08:05:09 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 08:05:09 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 08:05:09 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 08:05:09 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 08:09:12 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-25 08:09:42 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-25 08:10:09 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-25 08:46:24 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-25 08:50:13 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-25 08:51:50 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-25 09:18:37 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-25 09:20:44 --> Severity: Notice --> Undefined variable: query C:\xampp\htdocs\siddharth_application_23mayPO\application\models\purchaseorder_model.php 686 -ERROR - 2017-05-25 09:21:42 --> Severity: Notice --> Undefined variable: result C:\xampp\htdocs\siddharth_application_23mayPO\application\models\purchaseorder_model.php 686 -ERROR - 2017-05-25 09:24:51 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-25 11:34:30 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 11:34:30 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 11:34:30 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 11:34:30 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 11:34:30 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 11:34:30 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 11:34:30 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 11:35:36 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-25 11:36:22 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-25 11:37:49 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-25 11:46:52 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-25 11:51:24 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 11:51:24 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 11:51:24 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 11:51:24 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 11:51:24 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 11:51:24 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 11:51:24 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 11:53:21 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 11:53:21 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 11:53:22 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 11:53:22 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 11:53:22 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 11:53:22 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 11:53:22 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 12:46:54 --> Severity: Notice --> Use of undefined constant result - assumed 'result' C:\xampp\htdocs\siddharth_application_23mayPO\application\controllers\purchaseorder.php 125 -ERROR - 2017-05-25 13:40:45 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 13:40:45 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 13:40:45 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 13:40:45 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 13:40:45 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 13:40:45 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 13:40:45 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 13:41:19 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 13:41:19 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 13:41:19 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 13:41:19 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 13:41:19 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 13:41:19 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 13:41:19 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 15:15:26 --> Query error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 7 -ERROR - 2017-05-25 15:15:46 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 15:15:46 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 15:15:46 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 15:15:46 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 15:15:46 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 15:15:46 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 15:15:46 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 15:16:45 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 15:16:45 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 15:16:45 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 15:16:45 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 15:16:45 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 15:16:45 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 15:16:45 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:01:17 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:01:17 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:01:17 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:01:17 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:01:17 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:01:17 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:01:17 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:01:55 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-25 16:03:19 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-25 16:03:34 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:03:34 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:03:34 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:03:34 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:03:34 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:03:34 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:03:34 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:09:26 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:09:26 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:09:26 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:09:26 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:09:26 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:09:26 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:09:26 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:12:36 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:12:36 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:12:36 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:12:36 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:12:36 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:12:36 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:12:36 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:13:59 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:13:59 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:13:59 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:13:59 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:13:59 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:13:59 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:13:59 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:15:05 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:15:05 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:15:05 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:15:05 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:15:05 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:15:05 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:15:05 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:17:47 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:17:47 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:17:47 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:17:47 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:17:47 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:17:47 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:17:47 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:18:19 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:18:19 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:18:19 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:18:19 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:18:19 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:18:19 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:18:19 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:19:07 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:19:07 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:19:07 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:19:08 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:19:08 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:19:08 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:19:08 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:36:19 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-25 16:44:57 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:44:57 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:44:57 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:44:57 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:44:57 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:44:57 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:44:57 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-25 16:48:24 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-25 16:48:29 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-25 16:48:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 16:48:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 16:48:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 16:48:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 16:48:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 16:48:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 16:48:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 16:48:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 16:48:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-25 16:48:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 16:48:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 16:48:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 16:48:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 16:48:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 16:48:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 16:48:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-25 16:48:30 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 diff --git a/application/logs/log-2017-05-26.php b/application/logs/log-2017-05-26.php deleted file mode 100644 index c3cf2cbd..00000000 --- a/application/logs/log-2017-05-26.php +++ /dev/null @@ -1,108 +0,0 @@ - - -ERROR - 2017-05-26 08:42:01 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-26 08:42:01 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-26 08:42:01 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-26 08:42:01 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-26 08:42:01 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-26 08:42:01 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-26 08:42:01 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-26 08:42:21 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-26 08:42:21 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-26 08:42:21 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-26 08:42:21 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-26 08:42:21 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-26 08:42:21 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-26 08:42:21 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-26 09:59:55 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-26 11:26:22 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-26 11:28:43 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-26 11:34:19 --> Query error: Cannot delete or update a parent row: a foreign key constraint fails (`kasiram9_SiddharthIndustries`.`T_Revenue_Tax`, CONSTRAINT `T_PurchaseLineItemNo` FOREIGN KEY (`LineItemNo`) REFERENCES `T_PurchaseOrder_LineItem` (`LineItemNo`) ON UPDATE CASCADE) -ERROR - 2017-05-26 11:34:29 --> Query error: Cannot delete or update a parent row: a foreign key constraint fails (`kasiram9_SiddharthIndustries`.`T_Revenue_Tax`, CONSTRAINT `T_PurchaseLineItemNo` FOREIGN KEY (`LineItemNo`) REFERENCES `T_PurchaseOrder_LineItem` (`LineItemNo`) ON UPDATE CASCADE) -ERROR - 2017-05-26 11:37:08 --> Severity: Warning --> print_r() expects at least 1 parameter, 0 given C:\xampp\htdocs\siddharth_application_23mayPO\application\controllers\purchaseorder.php 741 -ERROR - 2017-05-26 11:38:36 --> Query error: Cannot delete or update a parent row: a foreign key constraint fails (`kasiram9_SiddharthIndustries`.`T_Revenue_Tax`, CONSTRAINT `T_PurchaseLineItemNo` FOREIGN KEY (`LineItemNo`) REFERENCES `T_PurchaseOrder_LineItem` (`LineItemNo`) ON UPDATE CASCADE) -ERROR - 2017-05-26 11:40:21 --> Query error: Cannot delete or update a parent row: a foreign key constraint fails (`kasiram9_SiddharthIndustries`.`T_Revenue_Tax`, CONSTRAINT `T_PurchaseLineItemNo` FOREIGN KEY (`LineItemNo`) REFERENCES `T_PurchaseOrder_LineItem` (`LineItemNo`) ON UPDATE CASCADE) -ERROR - 2017-05-26 12:43:04 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-26 12:46:56 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-26 12:48:00 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-26 12:49:00 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-26 12:52:45 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-26 12:53:10 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-26 13:12:25 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-26 13:15:35 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-26 13:40:46 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-26 14:39:36 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-26 14:39:36 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-26 14:39:36 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-26 14:39:36 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-26 14:39:36 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-26 14:39:36 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-26 14:39:36 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-26 14:40:32 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-26 14:40:32 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-26 14:40:32 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-26 14:40:32 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-26 14:40:32 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-26 14:40:32 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-26 14:40:32 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-26 14:54:23 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-26 14:55:03 --> Query error: Subquery returns more than 1 row -ERROR - 2017-05-26 14:55:15 --> Query error: Subquery returns more than 1 row -ERROR - 2017-05-26 14:55:40 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-26 14:55:56 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-26 14:55:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:55:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:55:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:55:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:55:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:55:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:55:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:55:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:55:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:55:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:55:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:55:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:55:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:55:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:55:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:55:57 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:55:57 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:55:57 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:55:57 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:55:57 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:55:57 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:55:57 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:55:57 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:55:57 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:55:57 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:55:57 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:55:57 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:55:57 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:55:57 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:56:36 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-26 14:56:36 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:56:36 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:56:36 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:56:36 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:56:36 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:56:36 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:56:36 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:56:36 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:56:36 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-26 14:56:36 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:56:36 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:56:36 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:56:36 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:56:36 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:56:36 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:56:36 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:56:36 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-26 14:57:40 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-26 15:38:05 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-26 15:38:05 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-26 15:38:05 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-26 15:38:05 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-26 15:38:05 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-26 15:38:05 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-26 15:38:05 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-26 15:38:54 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 diff --git a/application/logs/log-2017-05-27.php b/application/logs/log-2017-05-27.php deleted file mode 100644 index 23143b5d..00000000 --- a/application/logs/log-2017-05-27.php +++ /dev/null @@ -1,73 +0,0 @@ - - -ERROR - 2017-05-27 07:26:19 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-27 11:24:27 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-27 11:24:27 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-27 11:24:27 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-27 11:24:27 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-27 11:24:27 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-27 11:24:27 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-27 11:24:27 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-27 11:24:47 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-27 11:24:47 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-27 11:24:47 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-27 11:24:47 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-27 11:24:47 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-27 11:24:47 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-27 11:24:47 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-27 11:27:02 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-27 11:27:05 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-27 11:37:00 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-27 11:37:33 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-27 11:40:52 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-27 11:41:11 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-27 11:41:12 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-27 11:41:12 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-27 11:41:12 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-27 11:41:12 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-27 11:41:12 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-27 11:41:12 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-27 11:41:12 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-27 11:41:12 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-27 11:41:12 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-27 11:41:12 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-27 11:41:12 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-27 11:41:12 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-27 11:41:12 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-27 11:41:12 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-27 11:41:12 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-27 11:41:12 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-27 11:41:12 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-27 11:41:12 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-27 11:41:12 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-27 11:41:12 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-27 11:41:12 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-27 11:41:12 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-27 11:41:12 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-27 11:41:12 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-27 11:41:12 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-27 11:41:12 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-27 11:41:12 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-27 11:41:12 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-27 11:41:12 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-27 11:41:12 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-27 11:42:18 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-27 11:52:42 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-27 13:32:32 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-27 13:32:33 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-27 13:32:33 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-27 13:32:33 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-27 13:32:33 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-27 13:32:33 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-27 13:32:33 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-27 13:32:38 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-27 13:37:50 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-27 13:37:50 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-27 13:37:50 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-27 13:37:50 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-27 13:37:50 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-27 13:37:50 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-27 13:37:50 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-27 13:38:12 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-27 13:40:47 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-27 13:41:22 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 diff --git a/application/logs/log-2017-05-29.php b/application/logs/log-2017-05-29.php deleted file mode 100644 index bbb568c6..00000000 --- a/application/logs/log-2017-05-29.php +++ /dev/null @@ -1,217 +0,0 @@ - - -ERROR - 2017-05-29 07:04:41 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-29 07:04:41 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-29 07:04:41 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-29 07:04:41 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-29 07:04:41 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-29 07:04:41 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-29 07:04:41 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-29 08:35:20 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-29 08:35:20 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-29 08:35:20 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-29 08:35:20 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-29 08:35:20 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-29 08:35:20 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-29 08:35:20 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-29 08:35:40 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-29 08:35:40 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-29 08:35:40 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-29 08:35:40 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-29 08:35:40 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-29 08:35:40 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-29 08:35:40 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-29 12:00:01 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-29 12:00:10 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-29 12:00:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:00:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:00:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:00:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:00:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:00:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:00:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:00:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:00:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-29 12:00:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:00:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:00:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:00:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:00:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:00:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:00:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:00:10 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:10:11 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-29 12:10:11 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-29 12:10:11 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-29 12:10:11 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-29 12:10:11 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-29 12:10:11 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-29 12:10:11 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-29 12:10:29 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-29 12:10:29 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-29 12:10:29 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-29 12:10:29 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-29 12:10:29 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-29 12:10:29 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-29 12:10:29 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application_23mayPO\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-29 12:12:01 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-29 12:12:09 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-29 12:12:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:12:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:12:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:12:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:12:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:12:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:12:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:12:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:12:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-29 12:12:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:12:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:12:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:12:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:12:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:12:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:12:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:12:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:14:04 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-29 12:34:01 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-29 12:35:17 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-29 12:38:56 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-29 12:39:57 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-29 12:46:02 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-29 12:46:36 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-29 12:53:08 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-29 12:53:15 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-29 12:53:16 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:53:16 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:53:16 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:53:16 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:53:16 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:53:16 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:53:16 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:53:16 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:53:16 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-29 12:53:16 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:53:16 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:53:16 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:53:16 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:53:16 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:53:16 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:53:16 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:53:16 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:53:31 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-29 12:53:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:53:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:53:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:53:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:53:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:53:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:53:31 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:53:32 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:53:32 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-29 12:53:32 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:53:32 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:53:32 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:53:32 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:53:32 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:53:32 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:53:32 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:53:32 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:57:08 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-29 12:57:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:57:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:57:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:57:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:57:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:57:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:57:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:57:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:57:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-29 12:57:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:57:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:57:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:57:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:57:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:57:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:57:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:57:08 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:58:03 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-29 12:58:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:58:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:58:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:58:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:58:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:58:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:58:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:58:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:58:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-29 12:58:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:58:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:58:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:58:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:58:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:58:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:58:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:58:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:58:41 --> Query error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*,CostCenterCode , POMaster.*,sup.SupplierName,sup.Address - FROM T_PurchaseOr' at line 5 -ERROR - 2017-05-29 12:58:53 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-29 12:58:53 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:58:53 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:58:53 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:58:53 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:58:53 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:58:53 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:58:53 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:58:53 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:58:53 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-29 12:58:53 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:58:53 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:58:53 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:58:53 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:58:53 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:58:53 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:58:53 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 12:58:53 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 13:01:22 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-29 13:01:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 13:01:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 13:01:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 13:01:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 13:01:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 13:01:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 13:01:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 13:01:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 13:01:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-29 13:01:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 13:01:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 13:01:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 13:01:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 13:01:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 13:01:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 13:01:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 13:01:22 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 13:01:56 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-29 13:01:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 13:01:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 13:01:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 13:01:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 13:01:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 13:01:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 13:01:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 13:01:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 13:01:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-29 13:01:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 13:01:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 13:01:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 13:01:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 13:01:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 13:01:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 13:01:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 13:01:56 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-29 13:14:09 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application_23mayPO\application\views\alterpurchaseorder.php 65 -ERROR - 2017-05-29 13:14:09 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application_23mayPO\application\views\alterpurchaseorder.php 95 -ERROR - 2017-05-29 13:14:09 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\alterpurchaseorder.php 96 -ERROR - 2017-05-29 13:14:09 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\alterpurchaseorder.php 97 -ERROR - 2017-05-29 13:14:09 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\alterpurchaseorder.php 143 -ERROR - 2017-05-29 13:14:09 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application_23mayPO\application\views\alterpurchaseorder.php 171 diff --git a/application/logs/log-2017-05-30.php b/application/logs/log-2017-05-30.php deleted file mode 100644 index dec917ce..00000000 --- a/application/logs/log-2017-05-30.php +++ /dev/null @@ -1,418 +0,0 @@ - - -ERROR - 2017-05-30 08:16:22 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-30 08:20:46 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-30 09:25:00 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-30 09:34:58 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application_23mayPO\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-30 09:35:08 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-30 09:35:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:35:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:35:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:35:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:35:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:35:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:35:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:35:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:35:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-30 09:35:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:35:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:35:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:35:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:35:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:35:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:35:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:35:09 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:40:16 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-30 09:40:17 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:40:17 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:40:17 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:40:17 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:40:17 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:40:17 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:40:17 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:40:17 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:40:17 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-30 09:40:17 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:40:17 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:40:17 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:40:17 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:40:17 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:40:17 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:40:17 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:40:17 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:40:42 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-30 09:40:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:40:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:40:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:40:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:40:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:40:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:40:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:40:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:40:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-30 09:40:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:40:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:40:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:40:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:40:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:40:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:40:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:40:42 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:41:50 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-30 09:41:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:41:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:41:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:41:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:41:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:41:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:41:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:41:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:41:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-30 09:41:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:41:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:41:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:41:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:41:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:41:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:41:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:41:51 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:42:41 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-30 09:42:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:42:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:42:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:42:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:42:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:42:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:42:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:42:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:42:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-30 09:42:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:42:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:42:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:42:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:42:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:42:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:42:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:42:41 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:45:27 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-30 09:45:27 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:45:27 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:45:27 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:45:27 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:45:27 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:45:27 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:45:27 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:45:27 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:45:27 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\table_cell_frame_reflower.cls.php 131 -ERROR - 2017-05-30 09:45:27 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:45:27 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:45:27 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:45:27 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:45:27 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:45:27 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:45:27 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:45:27 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:46:03 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-05-30 09:46:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:46:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:46:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:46:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:46:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:46:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:46:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:46:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:46:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:46:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:46:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:46:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:46:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:46:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:46:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:46:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:46:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:46:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:46:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:46:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:46:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:46:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:46:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:46:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:46:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:46:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:46:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:46:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 09:46:03 --> Severity: Warning --> A non-numeric value encountered C:\xampp\htdocs\siddharth_application_23mayPO\application\third_party\dompdf\include\page_frame_decorator.cls.php 464 -ERROR - 2017-05-30 10:17:50 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 65 -ERROR - 2017-05-30 10:17:50 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 95 -ERROR - 2017-05-30 10:17:50 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 96 -ERROR - 2017-05-30 10:17:51 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 97 -ERROR - 2017-05-30 10:17:51 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 143 -ERROR - 2017-05-30 10:17:51 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 171 -ERROR - 2017-05-30 10:19:00 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-05-30 10:22:08 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 65 -ERROR - 2017-05-30 10:22:08 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 95 -ERROR - 2017-05-30 10:22:08 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 96 -ERROR - 2017-05-30 10:22:08 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 97 -ERROR - 2017-05-30 10:22:08 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 143 -ERROR - 2017-05-30 10:22:09 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 171 -ERROR - 2017-05-30 10:22:32 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 65 -ERROR - 2017-05-30 10:22:32 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 95 -ERROR - 2017-05-30 10:22:32 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 96 -ERROR - 2017-05-30 10:22:32 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 97 -ERROR - 2017-05-30 10:22:32 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 143 -ERROR - 2017-05-30 10:22:32 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 171 -ERROR - 2017-05-30 10:23:46 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 65 -ERROR - 2017-05-30 10:23:46 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 95 -ERROR - 2017-05-30 10:23:47 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 96 -ERROR - 2017-05-30 10:23:47 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 97 -ERROR - 2017-05-30 10:23:47 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 143 -ERROR - 2017-05-30 10:23:47 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 171 -ERROR - 2017-05-30 10:26:06 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 65 -ERROR - 2017-05-30 10:26:06 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 95 -ERROR - 2017-05-30 10:26:07 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 96 -ERROR - 2017-05-30 10:26:07 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 97 -ERROR - 2017-05-30 10:26:07 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 143 -ERROR - 2017-05-30 10:26:07 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 171 -ERROR - 2017-05-30 10:26:38 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 65 -ERROR - 2017-05-30 10:26:39 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 95 -ERROR - 2017-05-30 10:26:39 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 96 -ERROR - 2017-05-30 10:26:39 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 97 -ERROR - 2017-05-30 10:26:40 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 143 -ERROR - 2017-05-30 10:26:40 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 171 -ERROR - 2017-05-30 10:26:59 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 65 -ERROR - 2017-05-30 10:26:59 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 95 -ERROR - 2017-05-30 10:26:59 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 96 -ERROR - 2017-05-30 10:26:59 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 97 -ERROR - 2017-05-30 10:26:59 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 143 -ERROR - 2017-05-30 10:26:59 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 171 -ERROR - 2017-05-30 10:27:09 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 65 -ERROR - 2017-05-30 10:27:09 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 95 -ERROR - 2017-05-30 10:27:10 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 96 -ERROR - 2017-05-30 10:27:10 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 97 -ERROR - 2017-05-30 10:27:10 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 143 -ERROR - 2017-05-30 10:27:10 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 171 -ERROR - 2017-05-30 10:27:16 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 65 -ERROR - 2017-05-30 10:27:16 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 95 -ERROR - 2017-05-30 10:27:16 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 96 -ERROR - 2017-05-30 10:27:16 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 97 -ERROR - 2017-05-30 10:27:16 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 143 -ERROR - 2017-05-30 10:27:16 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 171 -ERROR - 2017-05-30 10:29:20 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 65 -ERROR - 2017-05-30 10:29:20 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 95 -ERROR - 2017-05-30 10:29:20 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 96 -ERROR - 2017-05-30 10:29:20 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 97 -ERROR - 2017-05-30 10:29:20 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 143 -ERROR - 2017-05-30 10:29:20 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 171 -ERROR - 2017-05-30 10:31:39 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 65 -ERROR - 2017-05-30 10:31:39 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 95 -ERROR - 2017-05-30 10:31:39 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 96 -ERROR - 2017-05-30 10:31:39 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 97 -ERROR - 2017-05-30 10:31:39 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 143 -ERROR - 2017-05-30 10:31:39 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 171 -ERROR - 2017-05-30 10:32:27 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 65 -ERROR - 2017-05-30 10:32:27 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 95 -ERROR - 2017-05-30 10:32:27 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 96 -ERROR - 2017-05-30 10:32:27 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 97 -ERROR - 2017-05-30 10:32:27 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 143 -ERROR - 2017-05-30 10:32:27 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 171 -ERROR - 2017-05-30 10:34:38 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 65 -ERROR - 2017-05-30 10:34:38 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 95 -ERROR - 2017-05-30 10:34:38 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 96 -ERROR - 2017-05-30 10:34:38 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 97 -ERROR - 2017-05-30 10:34:38 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 143 -ERROR - 2017-05-30 10:34:38 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 171 -ERROR - 2017-05-30 11:03:40 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 65 -ERROR - 2017-05-30 11:03:40 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 95 -ERROR - 2017-05-30 11:03:40 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 96 -ERROR - 2017-05-30 11:03:40 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 97 -ERROR - 2017-05-30 11:03:40 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 143 -ERROR - 2017-05-30 11:03:40 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 171 -ERROR - 2017-05-30 11:04:13 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 65 -ERROR - 2017-05-30 11:04:13 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 95 -ERROR - 2017-05-30 11:04:13 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 96 -ERROR - 2017-05-30 11:04:13 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 97 -ERROR - 2017-05-30 11:04:13 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 143 -ERROR - 2017-05-30 11:04:14 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 171 -ERROR - 2017-05-30 11:05:23 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 65 -ERROR - 2017-05-30 11:05:24 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 95 -ERROR - 2017-05-30 11:05:24 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 96 -ERROR - 2017-05-30 11:05:24 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 97 -ERROR - 2017-05-30 11:05:24 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 143 -ERROR - 2017-05-30 11:05:24 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 171 -ERROR - 2017-05-30 11:05:49 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 65 -ERROR - 2017-05-30 11:05:49 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 95 -ERROR - 2017-05-30 11:05:49 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 96 -ERROR - 2017-05-30 11:05:49 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 97 -ERROR - 2017-05-30 11:05:49 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 143 -ERROR - 2017-05-30 11:05:49 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 171 -ERROR - 2017-05-30 11:06:13 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 65 -ERROR - 2017-05-30 11:06:13 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 95 -ERROR - 2017-05-30 11:06:13 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 96 -ERROR - 2017-05-30 11:06:13 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 97 -ERROR - 2017-05-30 11:06:13 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 143 -ERROR - 2017-05-30 11:06:13 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 171 -ERROR - 2017-05-30 11:06:46 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 65 -ERROR - 2017-05-30 11:06:46 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 95 -ERROR - 2017-05-30 11:06:46 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 96 -ERROR - 2017-05-30 11:06:47 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 97 -ERROR - 2017-05-30 11:06:47 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 143 -ERROR - 2017-05-30 11:06:47 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 171 -ERROR - 2017-05-30 11:07:27 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 85 -ERROR - 2017-05-30 11:07:27 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 115 -ERROR - 2017-05-30 11:07:27 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 116 -ERROR - 2017-05-30 11:07:27 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 117 -ERROR - 2017-05-30 11:07:27 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 163 -ERROR - 2017-05-30 11:07:27 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 191 -ERROR - 2017-05-30 11:07:27 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 3342 -ERROR - 2017-05-30 11:08:28 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 85 -ERROR - 2017-05-30 11:08:28 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 115 -ERROR - 2017-05-30 11:08:29 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 116 -ERROR - 2017-05-30 11:08:29 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 117 -ERROR - 2017-05-30 11:08:29 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 163 -ERROR - 2017-05-30 11:08:29 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 191 -ERROR - 2017-05-30 11:08:29 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 3342 -ERROR - 2017-05-30 11:09:51 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 85 -ERROR - 2017-05-30 11:09:51 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 115 -ERROR - 2017-05-30 11:09:51 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 116 -ERROR - 2017-05-30 11:09:51 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 117 -ERROR - 2017-05-30 11:09:51 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 163 -ERROR - 2017-05-30 11:09:51 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 191 -ERROR - 2017-05-30 11:09:51 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 3342 -ERROR - 2017-05-30 11:09:58 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 85 -ERROR - 2017-05-30 11:09:58 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 115 -ERROR - 2017-05-30 11:09:58 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 116 -ERROR - 2017-05-30 11:09:58 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 117 -ERROR - 2017-05-30 11:09:58 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 163 -ERROR - 2017-05-30 11:09:58 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 191 -ERROR - 2017-05-30 11:09:58 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 3342 -ERROR - 2017-05-30 11:10:03 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 85 -ERROR - 2017-05-30 11:10:03 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 115 -ERROR - 2017-05-30 11:10:03 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 116 -ERROR - 2017-05-30 11:10:03 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 117 -ERROR - 2017-05-30 11:10:03 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 163 -ERROR - 2017-05-30 11:10:03 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 191 -ERROR - 2017-05-30 11:10:03 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 3342 -ERROR - 2017-05-30 11:11:02 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 85 -ERROR - 2017-05-30 11:11:02 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 115 -ERROR - 2017-05-30 11:11:02 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 116 -ERROR - 2017-05-30 11:11:02 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 117 -ERROR - 2017-05-30 11:11:02 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 163 -ERROR - 2017-05-30 11:11:02 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 191 -ERROR - 2017-05-30 11:11:02 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 3342 -ERROR - 2017-05-30 11:12:34 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 85 -ERROR - 2017-05-30 11:12:34 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 115 -ERROR - 2017-05-30 11:12:34 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 116 -ERROR - 2017-05-30 11:12:34 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 117 -ERROR - 2017-05-30 11:12:34 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 163 -ERROR - 2017-05-30 11:12:34 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 191 -ERROR - 2017-05-30 11:12:35 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 3342 -ERROR - 2017-05-30 11:12:44 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 85 -ERROR - 2017-05-30 11:12:44 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 115 -ERROR - 2017-05-30 11:12:44 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 116 -ERROR - 2017-05-30 11:12:44 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 117 -ERROR - 2017-05-30 11:12:44 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 163 -ERROR - 2017-05-30 11:12:44 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 191 -ERROR - 2017-05-30 11:12:44 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 3342 -ERROR - 2017-05-30 11:13:44 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 85 -ERROR - 2017-05-30 11:13:44 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 115 -ERROR - 2017-05-30 11:13:44 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 116 -ERROR - 2017-05-30 11:13:44 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 117 -ERROR - 2017-05-30 11:13:44 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 163 -ERROR - 2017-05-30 11:13:44 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 191 -ERROR - 2017-05-30 11:13:44 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 3342 -ERROR - 2017-05-30 11:15:14 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 85 -ERROR - 2017-05-30 11:15:14 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 115 -ERROR - 2017-05-30 11:15:14 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 116 -ERROR - 2017-05-30 11:15:14 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 117 -ERROR - 2017-05-30 11:15:14 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 163 -ERROR - 2017-05-30 11:15:14 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 191 -ERROR - 2017-05-30 11:15:14 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 3342 -ERROR - 2017-05-30 11:16:44 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 85 -ERROR - 2017-05-30 11:16:44 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 115 -ERROR - 2017-05-30 11:16:44 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 116 -ERROR - 2017-05-30 11:16:44 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 117 -ERROR - 2017-05-30 11:16:44 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 163 -ERROR - 2017-05-30 11:16:44 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 191 -ERROR - 2017-05-30 11:16:44 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 3342 -ERROR - 2017-05-30 11:16:54 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 85 -ERROR - 2017-05-30 11:16:54 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 115 -ERROR - 2017-05-30 11:16:54 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 116 -ERROR - 2017-05-30 11:16:54 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 117 -ERROR - 2017-05-30 11:16:54 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 163 -ERROR - 2017-05-30 11:16:54 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 191 -ERROR - 2017-05-30 11:16:54 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 3342 -ERROR - 2017-05-30 11:17:11 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 85 -ERROR - 2017-05-30 11:17:11 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 115 -ERROR - 2017-05-30 11:17:11 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 116 -ERROR - 2017-05-30 11:17:11 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 117 -ERROR - 2017-05-30 11:17:11 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 163 -ERROR - 2017-05-30 11:17:11 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 191 -ERROR - 2017-05-30 11:17:11 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 3342 -ERROR - 2017-05-30 11:17:49 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 85 -ERROR - 2017-05-30 11:17:49 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 115 -ERROR - 2017-05-30 11:17:49 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 116 -ERROR - 2017-05-30 11:17:49 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 117 -ERROR - 2017-05-30 11:17:49 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 163 -ERROR - 2017-05-30 11:17:49 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 191 -ERROR - 2017-05-30 11:17:49 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 3342 -ERROR - 2017-05-30 11:20:41 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 85 -ERROR - 2017-05-30 11:20:41 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 115 -ERROR - 2017-05-30 11:20:41 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 116 -ERROR - 2017-05-30 11:20:41 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 117 -ERROR - 2017-05-30 11:20:41 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 163 -ERROR - 2017-05-30 11:20:41 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 191 -ERROR - 2017-05-30 11:20:42 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 3342 -ERROR - 2017-05-30 11:21:03 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 85 -ERROR - 2017-05-30 11:21:03 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 115 -ERROR - 2017-05-30 11:21:03 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 116 -ERROR - 2017-05-30 11:21:03 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 117 -ERROR - 2017-05-30 11:21:03 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 163 -ERROR - 2017-05-30 11:21:03 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 191 -ERROR - 2017-05-30 11:21:03 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 3342 -ERROR - 2017-05-30 11:21:17 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 85 -ERROR - 2017-05-30 11:21:17 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 115 -ERROR - 2017-05-30 11:21:17 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 116 -ERROR - 2017-05-30 11:21:18 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 117 -ERROR - 2017-05-30 11:21:18 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 163 -ERROR - 2017-05-30 11:21:18 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 191 -ERROR - 2017-05-30 11:21:18 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 3342 -ERROR - 2017-05-30 11:22:09 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 85 -ERROR - 2017-05-30 11:22:09 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 115 -ERROR - 2017-05-30 11:22:09 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 116 -ERROR - 2017-05-30 11:22:09 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 117 -ERROR - 2017-05-30 11:22:09 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 163 -ERROR - 2017-05-30 11:22:09 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 191 -ERROR - 2017-05-30 11:22:09 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 3342 -ERROR - 2017-05-30 11:32:45 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 85 -ERROR - 2017-05-30 11:32:46 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 115 -ERROR - 2017-05-30 11:32:46 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 116 -ERROR - 2017-05-30 11:32:46 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 117 -ERROR - 2017-05-30 11:32:46 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 163 -ERROR - 2017-05-30 11:32:46 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 191 -ERROR - 2017-05-30 11:32:46 --> Severity: Notice --> Undefined variable: Suplist C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 3342 -ERROR - 2017-05-30 11:33:27 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 115 -ERROR - 2017-05-30 11:33:27 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 116 -ERROR - 2017-05-30 11:33:27 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 117 -ERROR - 2017-05-30 11:33:27 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 163 -ERROR - 2017-05-30 11:33:27 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 191 -ERROR - 2017-05-30 11:35:35 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 115 -ERROR - 2017-05-30 11:35:35 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 116 -ERROR - 2017-05-30 11:35:35 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 117 -ERROR - 2017-05-30 11:35:35 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 163 -ERROR - 2017-05-30 11:35:35 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 191 -ERROR - 2017-05-30 11:35:35 --> Severity: Notice --> Undefined variable: SupAddress C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 970 -ERROR - 2017-05-30 11:35:56 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 115 -ERROR - 2017-05-30 11:35:56 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 116 -ERROR - 2017-05-30 11:35:56 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 117 -ERROR - 2017-05-30 11:35:56 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 163 -ERROR - 2017-05-30 11:35:56 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 191 -ERROR - 2017-05-30 11:39:02 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application_Emergpo\application\views\alterpurchaseorder.php 115 -ERROR - 2017-05-30 11:39:02 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application_Emergpo\application\views\alterpurchaseorder.php 116 -ERROR - 2017-05-30 11:39:02 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application_Emergpo\application\views\alterpurchaseorder.php 117 -ERROR - 2017-05-30 11:39:02 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application_Emergpo\application\views\alterpurchaseorder.php 163 -ERROR - 2017-05-30 11:39:02 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application_Emergpo\application\views\alterpurchaseorder.php 191 -ERROR - 2017-05-30 11:46:01 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 115 -ERROR - 2017-05-30 11:46:01 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 116 -ERROR - 2017-05-30 11:46:01 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 117 -ERROR - 2017-05-30 11:46:01 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 163 -ERROR - 2017-05-30 11:46:01 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 191 diff --git a/application/logs/log-2017-05-31.php b/application/logs/log-2017-05-31.php deleted file mode 100644 index 0b6984d8..00000000 --- a/application/logs/log-2017-05-31.php +++ /dev/null @@ -1,75 +0,0 @@ - - -ERROR - 2017-05-31 08:49:00 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 115 -ERROR - 2017-05-31 08:49:00 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 116 -ERROR - 2017-05-31 08:49:00 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 117 -ERROR - 2017-05-31 08:49:00 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 163 -ERROR - 2017-05-31 08:49:00 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 191 -ERROR - 2017-05-31 09:01:13 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 115 -ERROR - 2017-05-31 09:01:13 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 116 -ERROR - 2017-05-31 09:01:13 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 117 -ERROR - 2017-05-31 09:01:13 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 163 -ERROR - 2017-05-31 09:01:13 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 191 -ERROR - 2017-05-31 09:25:06 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 115 -ERROR - 2017-05-31 09:25:06 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 116 -ERROR - 2017-05-31 09:25:06 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 117 -ERROR - 2017-05-31 09:25:06 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 163 -ERROR - 2017-05-31 09:25:06 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 191 -ERROR - 2017-05-31 09:45:10 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 115 -ERROR - 2017-05-31 09:45:10 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 116 -ERROR - 2017-05-31 09:45:10 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 117 -ERROR - 2017-05-31 09:45:10 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 163 -ERROR - 2017-05-31 09:45:10 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 191 -ERROR - 2017-05-31 09:47:02 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-31 09:47:02 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-31 09:47:02 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-31 09:47:02 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-31 09:47:02 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-31 09:47:02 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-31 09:47:02 --> Severity: Notice --> Undefined index: RequisitionStatus C:\xampp\htdocs\siddharth_application\application\views\requisitionlistapproval.php 37 -ERROR - 2017-05-31 09:51:25 --> Severity: Notice --> Undefined variable: CompanyAddress C:\xampp\htdocs\siddharth_application\application\views\importpo.php 98 -ERROR - 2017-05-31 09:51:25 --> Severity: Notice --> Undefined variable: CurrentDate C:\xampp\htdocs\siddharth_application\application\views\importpo.php 109 -ERROR - 2017-05-31 09:51:25 --> Severity: Notice --> Undefined variable: CurrentDate C:\xampp\htdocs\siddharth_application\application\views\importpo.php 118 -ERROR - 2017-05-31 09:51:25 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\importpo.php 201 -ERROR - 2017-05-31 09:51:25 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\importpo.php 201 -ERROR - 2017-05-31 09:51:25 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\importpo.php 201 -ERROR - 2017-05-31 09:52:34 --> Severity: Notice --> Undefined variable: CompanyAddress C:\xampp\htdocs\siddharth_application\application\views\importpo.php 98 -ERROR - 2017-05-31 09:52:34 --> Severity: Notice --> Undefined variable: CurrentDate C:\xampp\htdocs\siddharth_application\application\views\importpo.php 109 -ERROR - 2017-05-31 09:52:34 --> Severity: Notice --> Undefined variable: CurrentDate C:\xampp\htdocs\siddharth_application\application\views\importpo.php 118 -ERROR - 2017-05-31 09:52:34 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\importpo.php 201 -ERROR - 2017-05-31 09:52:34 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\importpo.php 201 -ERROR - 2017-05-31 09:52:34 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\importpo.php 201 -ERROR - 2017-05-31 09:54:22 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\importpo.php 201 -ERROR - 2017-05-31 09:54:22 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\importpo.php 201 -ERROR - 2017-05-31 09:54:22 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\importpo.php 201 -ERROR - 2017-05-31 09:59:01 --> Severity: Warning --> mysqli_connect(): php_network_getaddresses: getaddrinfo failed: No such host is known. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-31 09:59:01 --> Severity: Warning --> mysqli_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: No such host is known. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-31 09:59:01 --> Unable to connect to the database -ERROR - 2017-05-31 09:59:06 --> Severity: Warning --> mysqli_connect(): php_network_getaddresses: getaddrinfo failed: No such host is known. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-31 09:59:06 --> Severity: Warning --> mysqli_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: No such host is known. C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_driver.php 77 -ERROR - 2017-05-31 09:59:06 --> Unable to connect to the database -ERROR - 2017-05-31 10:00:01 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\importpo.php 202 -ERROR - 2017-05-31 10:00:01 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\importpo.php 202 -ERROR - 2017-05-31 10:00:01 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\importpo.php 202 -ERROR - 2017-05-31 10:02:09 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\importpo.php 212 -ERROR - 2017-05-31 10:02:09 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\importpo.php 212 -ERROR - 2017-05-31 10:02:09 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\importpo.php 212 -ERROR - 2017-05-31 10:04:04 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\importpo.php 221 -ERROR - 2017-05-31 10:04:04 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\importpo.php 221 -ERROR - 2017-05-31 10:04:04 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\importpo.php 221 -ERROR - 2017-05-31 10:05:22 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\importpo.php 221 -ERROR - 2017-05-31 10:05:22 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\importpo.php 221 -ERROR - 2017-05-31 10:05:22 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\importpo.php 221 -ERROR - 2017-05-31 10:07:39 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 115 -ERROR - 2017-05-31 10:07:39 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 116 -ERROR - 2017-05-31 10:07:39 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 117 -ERROR - 2017-05-31 10:07:39 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 163 -ERROR - 2017-05-31 10:07:39 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 191 -ERROR - 2017-05-31 10:08:36 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\importpo.php 222 -ERROR - 2017-05-31 10:08:36 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\importpo.php 222 -ERROR - 2017-05-31 10:08:36 --> Severity: Notice --> Trying to get property of non-object C:\xampp\htdocs\siddharth_application\application\views\importpo.php 222 -ERROR - 2017-05-31 14:27:45 --> Unable to load the requested class: phpreport -ERROR - 2017-05-31 14:28:00 --> Unable to load the requested class: phpreport -ERROR - 2017-05-31 14:33:42 --> Non-existent class: Excel -ERROR - 2017-05-31 14:34:08 --> Non-existent class: Excel2 -ERROR - 2017-05-31 15:24:27 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_result.php 38 diff --git a/application/logs/log-2017-06-01.php b/application/logs/log-2017-06-01.php deleted file mode 100644 index 3a3518eb..00000000 --- a/application/logs/log-2017-06-01.php +++ /dev/null @@ -1,1032 +0,0 @@ - - -ERROR - 2017-06-01 07:12:22 --> Severity: Notice --> Undefined property: supplier::$vehiclereport_model C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 342 -ERROR - 2017-06-01 07:13:07 --> Severity: Notice --> Undefined variable: exportData C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 344 -ERROR - 2017-06-01 07:13:07 --> Severity: Notice --> Undefined variable: fromDate C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 366 -ERROR - 2017-06-01 07:13:07 --> Severity: Notice --> Undefined variable: toDate C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 366 -ERROR - 2017-06-01 07:35:11 --> Severity: Notice --> Undefined variable: searchText C:\xampp\htdocs\siddharth_application\application\views\supplierListing.php 35 -ERROR - 2017-06-01 07:35:24 --> Severity: Notice --> Undefined variable: searchText C:\xampp\htdocs\siddharth_application\application\views\supplierListing.php 35 -ERROR - 2017-06-01 07:36:02 --> Severity: Notice --> Undefined variable: searchText C:\xampp\htdocs\siddharth_application\application\views\supplierListing.php 35 -ERROR - 2017-06-01 07:36:35 --> Severity: Notice --> Undefined variable: searchText C:\xampp\htdocs\siddharth_application\application\views\supplierListing.php 35 -ERROR - 2017-06-01 07:36:45 --> Severity: Notice --> Undefined variable: searchText C:\xampp\htdocs\siddharth_application\application\views\supplierListing.php 35 -ERROR - 2017-06-01 07:38:37 --> Severity: Notice --> Undefined variable: searchText C:\xampp\htdocs\siddharth_application\application\views\supplierListing.php 35 -ERROR - 2017-06-01 07:39:26 --> Severity: Notice --> Undefined variable: searchText C:\xampp\htdocs\siddharth_application\application\views\supplierListing.php 35 -ERROR - 2017-06-01 07:47:09 --> Severity: Notice --> Undefined variable: supplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 356 -ERROR - 2017-06-01 07:47:10 --> Query error: Table 'kasiram9_SiddharthIndustries.T_SupplierDetails' doesn't exist -ERROR - 2017-06-01 07:47:45 --> Severity: Notice --> Undefined variable: supplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 356 -ERROR - 2017-06-01 07:51:50 --> Severity: Notice --> Undefined variable: supplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 356 -ERROR - 2017-06-01 07:52:44 --> Severity: Notice --> Undefined variable: supplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 356 -ERROR - 2017-06-01 08:11:46 --> Severity: Notice --> Undefined variable: supplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 387 -ERROR - 2017-06-01 08:24:43 --> Severity: Notice --> Undefined variable: supplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 387 -ERROR - 2017-06-01 08:24:44 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:24:44 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:24:44 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:24:44 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:24:44 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:24:44 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:24:44 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:24:44 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:24:44 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:24:44 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:24:44 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:24:44 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:24:44 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:24:44 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:24:44 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:24:44 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:24:44 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:24:44 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:24:44 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:24:44 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:24:44 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:24:44 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:24:44 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:24:44 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:24:44 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:24:44 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:24:44 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:24:44 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:24:44 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:24:44 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:24:44 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 426 -ERROR - 2017-06-01 08:24:44 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 427 -ERROR - 2017-06-01 08:24:44 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 428 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:25:56 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-01 08:29:45 --> Severity: Notice --> Undefined variable: supplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 387 -ERROR - 2017-06-01 08:29:46 --> Query error: Unknown column 'supplier.FirstName' in 'on clause' -ERROR - 2017-06-01 08:30:24 --> Severity: Notice --> Undefined variable: supplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 387 -ERROR - 2017-06-01 08:30:25 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:25 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:25 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:25 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:25 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:25 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:25 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:25 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:25 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:25 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:25 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:25 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:25 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:25 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:25 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:25 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:25 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:25 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:25 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:25 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:25 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:25 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:25 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:25 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:25 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:25 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:25 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:25 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:25 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:25 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:25 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 426 -ERROR - 2017-06-01 08:30:25 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 427 -ERROR - 2017-06-01 08:30:25 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 428 -ERROR - 2017-06-01 08:30:53 --> Severity: Notice --> Undefined variable: supplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 387 -ERROR - 2017-06-01 08:30:53 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:53 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:53 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:54 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:54 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:54 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:54 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:54 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:54 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:54 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:54 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:54 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:54 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:54 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:54 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:54 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:54 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:54 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:54 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:54 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:54 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:54 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:54 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:54 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:54 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:54 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:54 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:54 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:54 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:54 --> Severity: Notice --> Undefined index: EmpName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 08:30:54 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 426 -ERROR - 2017-06-01 08:30:54 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 427 -ERROR - 2017-06-01 08:30:54 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 428 -ERROR - 2017-06-01 08:31:17 --> Severity: Notice --> Undefined variable: supplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 387 -ERROR - 2017-06-01 11:15:44 --> Severity: Notice --> Undefined variable: supplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 387 -ERROR - 2017-06-01 11:36:52 --> Severity: Notice --> Undefined variable: supplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 387 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: SupplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 394 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 395 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: Address C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 396 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: ContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 397 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: AlternateContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 398 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: EmailAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 399 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: Exiseregistration C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 400 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: TIN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 401 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: PAN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 402 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: CSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 403 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: CSTDate C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 404 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: GSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 405 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: GSTRange C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 406 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: CollectrateAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 407 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: UANumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 408 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: PaymentTerms C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 409 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: PaymentDays C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 410 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: PayableAT C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 411 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: UpdatedBy C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 413 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 414 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: SupplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 394 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 395 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: Address C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 396 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: ContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 397 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: AlternateContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 398 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: EmailAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 399 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: Exiseregistration C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 400 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: TIN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 401 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: PAN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 402 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: CSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 403 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: CSTDate C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 404 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: GSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 405 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: GSTRange C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 406 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: CollectrateAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 407 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: UANumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 408 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: PaymentTerms C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 409 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: PaymentDays C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 410 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: PayableAT C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 411 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: UpdatedBy C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 413 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 414 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: SupplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 394 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 395 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: Address C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 396 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: ContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 397 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: AlternateContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 398 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: EmailAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 399 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: Exiseregistration C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 400 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: TIN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 401 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: PAN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 402 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: CSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 403 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: CSTDate C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 404 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: GSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 405 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: GSTRange C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 406 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: CollectrateAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 407 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: UANumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 408 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: PaymentTerms C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 409 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: PaymentDays C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 410 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: PayableAT C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 411 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: UpdatedBy C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 413 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 414 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: SupplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 394 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 395 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: Address C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 396 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: ContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 397 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: AlternateContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 398 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: EmailAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 399 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: Exiseregistration C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 400 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: TIN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 401 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: PAN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 402 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: CSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 403 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: CSTDate C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 404 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: GSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 405 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: GSTRange C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 406 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: CollectrateAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 407 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: UANumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 408 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: PaymentTerms C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 409 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: PaymentDays C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 410 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: PayableAT C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 411 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: UpdatedBy C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 413 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 414 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: SupplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 394 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 395 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: Address C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 396 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: ContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 397 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: AlternateContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 398 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: EmailAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 399 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: Exiseregistration C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 400 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: TIN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 401 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: PAN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 402 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: CSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 403 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: CSTDate C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 404 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: GSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 405 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: GSTRange C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 406 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: CollectrateAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 407 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: UANumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 408 -ERROR - 2017-06-01 12:06:58 --> Severity: Notice --> Undefined index: PaymentTerms C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 409 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: PaymentDays C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 410 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: PayableAT C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 411 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: UpdatedBy C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 413 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 414 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: SupplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 394 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 395 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: Address C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 396 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: ContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 397 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: AlternateContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 398 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: EmailAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 399 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: Exiseregistration C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 400 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: TIN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 401 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: PAN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 402 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: CSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 403 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: CSTDate C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 404 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: GSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 405 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: GSTRange C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 406 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: CollectrateAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 407 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: UANumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 408 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: PaymentTerms C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 409 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: PaymentDays C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 410 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: PayableAT C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 411 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: UpdatedBy C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 413 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 414 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: SupplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 394 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 395 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: Address C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 396 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: ContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 397 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: AlternateContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 398 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: EmailAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 399 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: Exiseregistration C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 400 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: TIN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 401 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: PAN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 402 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: CSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 403 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: CSTDate C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 404 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: GSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 405 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: GSTRange C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 406 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: CollectrateAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 407 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: UANumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 408 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: PaymentTerms C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 409 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: PaymentDays C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 410 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: PayableAT C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 411 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: UpdatedBy C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 413 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 414 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: SupplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 394 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 395 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: Address C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 396 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: ContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 397 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: AlternateContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 398 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: EmailAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 399 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: Exiseregistration C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 400 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: TIN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 401 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: PAN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 402 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: CSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 403 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: CSTDate C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 404 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: GSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 405 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: GSTRange C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 406 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: CollectrateAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 407 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: UANumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 408 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: PaymentTerms C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 409 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: PaymentDays C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 410 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: PayableAT C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 411 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: UpdatedBy C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 413 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 414 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: SupplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 394 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 395 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: Address C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 396 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: ContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 397 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: AlternateContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 398 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: EmailAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 399 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: Exiseregistration C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 400 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: TIN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 401 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: PAN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 402 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: CSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 403 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: CSTDate C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 404 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: GSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 405 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: GSTRange C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 406 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: CollectrateAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 407 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: UANumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 408 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: PaymentTerms C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 409 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: PaymentDays C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 410 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: PayableAT C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 411 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: UpdatedBy C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 413 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 414 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: SupplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 394 -ERROR - 2017-06-01 12:06:59 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 395 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: Address C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 396 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: ContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 397 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: AlternateContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 398 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: EmailAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 399 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: Exiseregistration C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 400 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: TIN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 401 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: PAN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 402 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: CSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 403 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: CSTDate C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 404 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: GSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 405 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: GSTRange C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 406 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: CollectrateAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 407 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: UANumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 408 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: PaymentTerms C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 409 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: PaymentDays C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 410 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: PayableAT C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 411 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: UpdatedBy C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 413 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 414 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: SupplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 394 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 395 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: Address C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 396 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: ContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 397 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: AlternateContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 398 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: EmailAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 399 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: Exiseregistration C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 400 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: TIN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 401 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: PAN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 402 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: CSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 403 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: CSTDate C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 404 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: GSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 405 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: GSTRange C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 406 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: CollectrateAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 407 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: UANumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 408 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: PaymentTerms C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 409 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: PaymentDays C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 410 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: PayableAT C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 411 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: UpdatedBy C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 413 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 414 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: SupplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 394 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 395 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: Address C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 396 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: ContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 397 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: AlternateContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 398 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: EmailAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 399 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: Exiseregistration C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 400 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: TIN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 401 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: PAN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 402 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: CSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 403 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: CSTDate C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 404 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: GSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 405 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: GSTRange C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 406 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: CollectrateAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 407 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: UANumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 408 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: PaymentTerms C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 409 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: PaymentDays C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 410 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: PayableAT C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 411 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: UpdatedBy C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 413 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 414 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: SupplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 394 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 395 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: Address C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 396 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: ContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 397 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: AlternateContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 398 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: EmailAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 399 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: Exiseregistration C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 400 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: TIN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 401 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: PAN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 402 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: CSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 403 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: CSTDate C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 404 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: GSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 405 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: GSTRange C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 406 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: CollectrateAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 407 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: UANumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 408 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: PaymentTerms C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 409 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: PaymentDays C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 410 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: PayableAT C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 411 -ERROR - 2017-06-01 12:07:00 --> Severity: Notice --> Undefined index: UpdatedBy C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 413 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 414 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: SupplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 394 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 395 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: Address C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 396 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: ContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 397 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: AlternateContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 398 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: EmailAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 399 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: Exiseregistration C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 400 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: TIN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 401 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: PAN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 402 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: CSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 403 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: CSTDate C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 404 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: GSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 405 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: GSTRange C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 406 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: CollectrateAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 407 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: UANumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 408 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: PaymentTerms C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 409 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: PaymentDays C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 410 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: PayableAT C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 411 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: UpdatedBy C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 413 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 414 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: SupplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 394 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 395 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: Address C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 396 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: ContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 397 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: AlternateContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 398 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: EmailAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 399 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: Exiseregistration C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 400 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: TIN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 401 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: PAN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 402 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: CSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 403 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: CSTDate C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 404 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: GSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 405 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: GSTRange C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 406 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: CollectrateAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 407 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: UANumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 408 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: PaymentTerms C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 409 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: PaymentDays C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 410 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: PayableAT C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 411 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: UpdatedBy C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 413 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 414 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: SupplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 394 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 395 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: Address C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 396 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: ContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 397 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: AlternateContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 398 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: EmailAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 399 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: Exiseregistration C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 400 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: TIN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 401 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: PAN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 402 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: CSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 403 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: CSTDate C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 404 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: GSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 405 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: GSTRange C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 406 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: CollectrateAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 407 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: UANumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 408 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: PaymentTerms C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 409 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: PaymentDays C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 410 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: PayableAT C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 411 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: UpdatedBy C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 413 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 414 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: SupplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 394 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 395 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: Address C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 396 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: ContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 397 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: AlternateContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 398 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: EmailAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 399 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: Exiseregistration C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 400 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: TIN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 401 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: PAN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 402 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: CSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 403 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: CSTDate C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 404 -ERROR - 2017-06-01 12:07:01 --> Severity: Notice --> Undefined index: GSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 405 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: GSTRange C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 406 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: CollectrateAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 407 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: UANumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 408 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: PaymentTerms C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 409 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: PaymentDays C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 410 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: PayableAT C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 411 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: UpdatedBy C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 413 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 414 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: SupplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 394 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 395 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: Address C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 396 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: ContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 397 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: AlternateContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 398 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: EmailAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 399 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: Exiseregistration C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 400 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: TIN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 401 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: PAN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 402 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: CSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 403 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: CSTDate C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 404 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: GSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 405 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: GSTRange C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 406 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: CollectrateAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 407 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: UANumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 408 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: PaymentTerms C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 409 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: PaymentDays C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 410 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: PayableAT C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 411 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: UpdatedBy C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 413 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 414 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: SupplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 394 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 395 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: Address C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 396 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: ContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 397 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: AlternateContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 398 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: EmailAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 399 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: Exiseregistration C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 400 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: TIN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 401 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: PAN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 402 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: CSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 403 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: CSTDate C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 404 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: GSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 405 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: GSTRange C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 406 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: CollectrateAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 407 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: UANumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 408 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: PaymentTerms C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 409 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: PaymentDays C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 410 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: PayableAT C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 411 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: UpdatedBy C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 413 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 414 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: SupplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 394 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 395 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: Address C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 396 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: ContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 397 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: AlternateContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 398 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: EmailAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 399 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: Exiseregistration C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 400 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: TIN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 401 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: PAN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 402 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: CSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 403 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: CSTDate C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 404 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: GSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 405 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: GSTRange C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 406 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: CollectrateAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 407 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: UANumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 408 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: PaymentTerms C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 409 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: PaymentDays C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 410 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: PayableAT C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 411 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: UpdatedBy C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 413 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 414 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: SupplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 394 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 395 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: Address C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 396 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: ContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 397 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: AlternateContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 398 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: EmailAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 399 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: Exiseregistration C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 400 -ERROR - 2017-06-01 12:07:02 --> Severity: Notice --> Undefined index: TIN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 401 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: PAN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 402 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: CSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 403 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: CSTDate C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 404 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: GSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 405 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: GSTRange C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 406 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: CollectrateAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 407 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: UANumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 408 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: PaymentTerms C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 409 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: PaymentDays C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 410 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: PayableAT C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 411 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: UpdatedBy C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 413 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 414 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: SupplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 394 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 395 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: Address C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 396 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: ContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 397 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: AlternateContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 398 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: EmailAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 399 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: Exiseregistration C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 400 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: TIN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 401 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: PAN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 402 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: CSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 403 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: CSTDate C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 404 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: GSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 405 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: GSTRange C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 406 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: CollectrateAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 407 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: UANumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 408 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: PaymentTerms C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 409 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: PaymentDays C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 410 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: PayableAT C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 411 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: UpdatedBy C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 413 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 414 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: SupplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 394 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 395 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: Address C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 396 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: ContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 397 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: AlternateContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 398 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: EmailAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 399 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: Exiseregistration C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 400 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: TIN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 401 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: PAN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 402 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: CSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 403 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: CSTDate C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 404 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: GSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 405 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: GSTRange C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 406 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: CollectrateAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 407 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: UANumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 408 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: PaymentTerms C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 409 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: PaymentDays C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 410 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: PayableAT C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 411 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: UpdatedBy C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 413 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 414 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: SupplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 394 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 395 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: Address C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 396 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: ContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 397 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: AlternateContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 398 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: EmailAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 399 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: Exiseregistration C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 400 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: TIN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 401 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: PAN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 402 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: CSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 403 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: CSTDate C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 404 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: GSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 405 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: GSTRange C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 406 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: CollectrateAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 407 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: UANumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 408 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: PaymentTerms C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 409 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: PaymentDays C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 410 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: PayableAT C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 411 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: UpdatedBy C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 413 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 414 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: SupplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 394 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 395 -ERROR - 2017-06-01 12:07:03 --> Severity: Notice --> Undefined index: Address C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 396 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: ContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 397 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: AlternateContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 398 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: EmailAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 399 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: Exiseregistration C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 400 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: TIN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 401 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: PAN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 402 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: CSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 403 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: CSTDate C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 404 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: GSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 405 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: GSTRange C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 406 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: CollectrateAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 407 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: UANumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 408 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: PaymentTerms C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 409 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: PaymentDays C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 410 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: PayableAT C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 411 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: UpdatedBy C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 413 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 414 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: SupplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 394 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 395 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: Address C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 396 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: ContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 397 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: AlternateContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 398 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: EmailAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 399 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: Exiseregistration C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 400 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: TIN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 401 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: PAN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 402 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: CSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 403 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: CSTDate C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 404 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: GSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 405 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: GSTRange C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 406 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: CollectrateAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 407 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: UANumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 408 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: PaymentTerms C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 409 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: PaymentDays C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 410 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: PayableAT C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 411 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: UpdatedBy C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 413 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 414 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: SupplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 394 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 395 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: Address C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 396 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: ContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 397 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: AlternateContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 398 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: EmailAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 399 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: Exiseregistration C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 400 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: TIN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 401 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: PAN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 402 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: CSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 403 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: CSTDate C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 404 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: GSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 405 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: GSTRange C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 406 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: CollectrateAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 407 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: UANumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 408 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: PaymentTerms C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 409 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: PaymentDays C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 410 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: PayableAT C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 411 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: UpdatedBy C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 413 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 414 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: SupplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 394 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 395 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: Address C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 396 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: ContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 397 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: AlternateContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 398 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: EmailAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 399 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: Exiseregistration C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 400 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: TIN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 401 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: PAN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 402 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: CSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 403 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: CSTDate C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 404 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: GSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 405 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: GSTRange C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 406 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: CollectrateAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 407 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: UANumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 408 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: PaymentTerms C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 409 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: PaymentDays C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 410 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: PayableAT C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 411 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: UpdatedBy C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 413 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 414 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: SupplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 394 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 395 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: Address C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 396 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: ContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 397 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: AlternateContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 398 -ERROR - 2017-06-01 12:07:04 --> Severity: Notice --> Undefined index: EmailAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 399 -ERROR - 2017-06-01 12:07:05 --> Severity: Notice --> Undefined index: Exiseregistration C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 400 -ERROR - 2017-06-01 12:07:05 --> Severity: Notice --> Undefined index: TIN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 401 -ERROR - 2017-06-01 12:07:05 --> Severity: Notice --> Undefined index: PAN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 402 -ERROR - 2017-06-01 12:07:05 --> Severity: Notice --> Undefined index: CSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 403 -ERROR - 2017-06-01 12:07:05 --> Severity: Notice --> Undefined index: CSTDate C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 404 -ERROR - 2017-06-01 12:07:05 --> Severity: Notice --> Undefined index: GSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 405 -ERROR - 2017-06-01 12:07:05 --> Severity: Notice --> Undefined index: GSTRange C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 406 -ERROR - 2017-06-01 12:07:05 --> Severity: Notice --> Undefined index: CollectrateAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 407 -ERROR - 2017-06-01 12:07:05 --> Severity: Notice --> Undefined index: UANumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 408 -ERROR - 2017-06-01 12:07:05 --> Severity: Notice --> Undefined index: PaymentTerms C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 409 -ERROR - 2017-06-01 12:07:05 --> Severity: Notice --> Undefined index: PaymentDays C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 410 -ERROR - 2017-06-01 12:07:05 --> Severity: Notice --> Undefined index: PayableAT C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 411 -ERROR - 2017-06-01 12:07:05 --> Severity: Notice --> Undefined index: UpdatedBy C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 413 -ERROR - 2017-06-01 12:07:05 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 414 -ERROR - 2017-06-01 12:07:05 --> Severity: Notice --> Undefined index: SupplierID C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 394 -ERROR - 2017-06-01 12:07:05 --> Severity: Notice --> Undefined index: SupplierName C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 395 -ERROR - 2017-06-01 12:07:05 --> Severity: Notice --> Undefined index: Address C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 396 -ERROR - 2017-06-01 12:07:05 --> Severity: Notice --> Undefined index: ContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 397 -ERROR - 2017-06-01 12:07:05 --> Severity: Notice --> Undefined index: AlternateContactNumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 398 -ERROR - 2017-06-01 12:07:05 --> Severity: Notice --> Undefined index: EmailAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 399 -ERROR - 2017-06-01 12:07:05 --> Severity: Notice --> Undefined index: Exiseregistration C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 400 -ERROR - 2017-06-01 12:07:05 --> Severity: Notice --> Undefined index: TIN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 401 -ERROR - 2017-06-01 12:07:05 --> Severity: Notice --> Undefined index: PAN C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 402 -ERROR - 2017-06-01 12:07:05 --> Severity: Notice --> Undefined index: CSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 403 -ERROR - 2017-06-01 12:07:05 --> Severity: Notice --> Undefined index: CSTDate C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 404 -ERROR - 2017-06-01 12:07:05 --> Severity: Notice --> Undefined index: GSTNO C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 405 -ERROR - 2017-06-01 12:07:05 --> Severity: Notice --> Undefined index: GSTRange C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 406 -ERROR - 2017-06-01 12:07:05 --> Severity: Notice --> Undefined index: CollectrateAddress C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 407 -ERROR - 2017-06-01 12:07:05 --> Severity: Notice --> Undefined index: UANumber C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 408 -ERROR - 2017-06-01 12:07:05 --> Severity: Notice --> Undefined index: PaymentTerms C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 409 -ERROR - 2017-06-01 12:07:05 --> Severity: Notice --> Undefined index: PaymentDays C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 410 -ERROR - 2017-06-01 12:07:05 --> Severity: Notice --> Undefined index: PayableAT C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 411 -ERROR - 2017-06-01 12:07:05 --> Severity: Notice --> Undefined index: UpdatedBy C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 413 -ERROR - 2017-06-01 12:07:05 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 414 -ERROR - 2017-06-01 12:07:05 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 426 -ERROR - 2017-06-01 12:07:05 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 427 -ERROR - 2017-06-01 12:07:05 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 428 -ERROR - 2017-06-01 12:13:25 --> Query error: Unknown column 'emp.empid' in 'on clause' -ERROR - 2017-06-01 12:15:02 --> Query error: Unknown table 'supplier' -ERROR - 2017-06-01 12:15:15 --> Query error: Unknown table 'supplier' -ERROR - 2017-06-01 12:15:27 --> Query error: Unknown table 'supplier' -ERROR - 2017-06-01 12:27:56 --> Query error: Unknown column 'det. -det.Address' in 'field list' -ERROR - 2017-06-01 12:28:17 --> Query error: Unknown column 'det. -det.Address' in 'field list' -ERROR - 2017-06-01 12:28:33 --> Query error: Unknown column 'det.IsActiveemp' in 'field list' -ERROR - 2017-06-01 12:33:43 --> Severity: Notice --> Undefined index: Createdby C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:33:43 --> Severity: Notice --> Undefined index: Createdby C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:33:43 --> Severity: Notice --> Undefined index: Createdby C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:33:43 --> Severity: Notice --> Undefined index: Createdby C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:33:43 --> Severity: Notice --> Undefined index: Createdby C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:33:43 --> Severity: Notice --> Undefined index: Createdby C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:33:43 --> Severity: Notice --> Undefined index: Createdby C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:33:43 --> Severity: Notice --> Undefined index: Createdby C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:33:43 --> Severity: Notice --> Undefined index: Createdby C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:33:43 --> Severity: Notice --> Undefined index: Createdby C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:33:43 --> Severity: Notice --> Undefined index: Createdby C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:33:43 --> Severity: Notice --> Undefined index: Createdby C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:33:43 --> Severity: Notice --> Undefined index: Createdby C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:33:43 --> Severity: Notice --> Undefined index: Createdby C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:33:43 --> Severity: Notice --> Undefined index: Createdby C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:33:43 --> Severity: Notice --> Undefined index: Createdby C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:33:43 --> Severity: Notice --> Undefined index: Createdby C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:33:43 --> Severity: Notice --> Undefined index: Createdby C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:33:43 --> Severity: Notice --> Undefined index: Createdby C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:33:43 --> Severity: Notice --> Undefined index: Createdby C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:33:43 --> Severity: Notice --> Undefined index: Createdby C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:33:43 --> Severity: Notice --> Undefined index: Createdby C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:33:43 --> Severity: Notice --> Undefined index: Createdby C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:33:44 --> Severity: Notice --> Undefined index: Createdby C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:33:44 --> Severity: Notice --> Undefined index: Createdby C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:33:44 --> Severity: Notice --> Undefined index: Createdby C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:33:44 --> Severity: Notice --> Undefined index: Createdby C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:33:44 --> Severity: Notice --> Undefined index: Createdby C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:33:44 --> Severity: Notice --> Undefined index: Createdby C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:33:44 --> Severity: Notice --> Undefined index: Createdby C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:33:44 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 426 -ERROR - 2017-06-01 12:33:44 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 427 -ERROR - 2017-06-01 12:33:44 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 428 -ERROR - 2017-06-01 12:34:07 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:07 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:07 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:07 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:07 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:07 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:07 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:07 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:07 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:07 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:07 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:07 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:07 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:07 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:07 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:07 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:07 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:07 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:07 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:07 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:07 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:07 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:07 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:07 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:07 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:07 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:07 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:07 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:07 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:07 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:07 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 426 -ERROR - 2017-06-01 12:34:07 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 427 -ERROR - 2017-06-01 12:34:07 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 428 -ERROR - 2017-06-01 12:34:16 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:16 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:16 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:16 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:17 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:17 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:17 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:17 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:17 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:17 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:17 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:17 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:17 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:17 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:17 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:17 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:17 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:17 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:17 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:17 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:17 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:17 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:17 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:17 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:17 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:17 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:17 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:17 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:17 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:17 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:17 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 426 -ERROR - 2017-06-01 12:34:17 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 427 -ERROR - 2017-06-01 12:34:17 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 428 -ERROR - 2017-06-01 12:34:42 --> Severity: Notice --> Undefined index: firstname C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:43 --> Severity: Notice --> Undefined index: firstname C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:43 --> Severity: Notice --> Undefined index: firstname C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:43 --> Severity: Notice --> Undefined index: firstname C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:43 --> Severity: Notice --> Undefined index: firstname C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:43 --> Severity: Notice --> Undefined index: firstname C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:43 --> Severity: Notice --> Undefined index: firstname C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:43 --> Severity: Notice --> Undefined index: firstname C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:43 --> Severity: Notice --> Undefined index: firstname C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:43 --> Severity: Notice --> Undefined index: firstname C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:43 --> Severity: Notice --> Undefined index: firstname C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:43 --> Severity: Notice --> Undefined index: firstname C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:43 --> Severity: Notice --> Undefined index: firstname C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:43 --> Severity: Notice --> Undefined index: firstname C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:43 --> Severity: Notice --> Undefined index: firstname C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:43 --> Severity: Notice --> Undefined index: firstname C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:43 --> Severity: Notice --> Undefined index: firstname C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:43 --> Severity: Notice --> Undefined index: firstname C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:43 --> Severity: Notice --> Undefined index: firstname C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:43 --> Severity: Notice --> Undefined index: firstname C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:43 --> Severity: Notice --> Undefined index: firstname C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:43 --> Severity: Notice --> Undefined index: firstname C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:43 --> Severity: Notice --> Undefined index: firstname C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:43 --> Severity: Notice --> Undefined index: firstname C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:43 --> Severity: Notice --> Undefined index: firstname C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:43 --> Severity: Notice --> Undefined index: firstname C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:43 --> Severity: Notice --> Undefined index: firstname C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:43 --> Severity: Notice --> Undefined index: firstname C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:43 --> Severity: Notice --> Undefined index: firstname C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:43 --> Severity: Notice --> Undefined index: firstname C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:34:43 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 426 -ERROR - 2017-06-01 12:34:43 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 427 -ERROR - 2017-06-01 12:34:43 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 428 -ERROR - 2017-06-01 12:35:30 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:35:30 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:35:30 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:35:30 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:35:30 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:35:30 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:35:30 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:35:30 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:35:30 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:35:30 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:35:30 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:35:30 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:35:30 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:35:30 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:35:30 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:35:30 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:35:30 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:35:30 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:35:30 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:35:30 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:35:30 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:35:30 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:35:30 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:35:31 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:35:31 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:35:31 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:35:31 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:35:31 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:35:31 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:35:31 --> Severity: Notice --> Undefined index: Created_by C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 412 -ERROR - 2017-06-01 12:35:31 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 426 -ERROR - 2017-06-01 12:35:31 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 427 -ERROR - 2017-06-01 12:35:31 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\supplier.php 428 -ERROR - 2017-06-01 12:42:07 --> Query error: Not unique table/alias: 'tbl' -ERROR - 2017-06-01 12:43:02 --> Query error: Not unique table/alias: 'tbl' -ERROR - 2017-06-01 12:43:30 --> Query error: Not unique table/alias: 'tbl' -ERROR - 2017-06-01 14:51:36 --> Severity: Notice --> Undefined variable: searchText C:\xampp\htdocs\siddharth_application\application\views\rawmaterialListing.php 34 -ERROR - 2017-06-01 14:52:17 --> Severity: Notice --> Undefined variable: searchText C:\xampp\htdocs\siddharth_application\application\views\rawmaterialListing.php 34 -ERROR - 2017-06-01 14:53:09 --> Severity: Notice --> Undefined variable: searchText C:\xampp\htdocs\siddharth_application\application\views\rawmaterialListing.php 34 -ERROR - 2017-06-01 14:53:36 --> Severity: Notice --> Undefined variable: searchText C:\xampp\htdocs\siddharth_application\application\views\rawmaterialListing.php 34 -ERROR - 2017-06-01 14:54:35 --> Severity: Notice --> Undefined variable: searchText C:\xampp\htdocs\siddharth_application\application\views\rawmaterialListing.php 34 -ERROR - 2017-06-01 14:54:40 --> Severity: Notice --> Undefined variable: searchText C:\xampp\htdocs\siddharth_application\application\views\rawmaterialListing.php 34 -ERROR - 2017-06-01 14:55:21 --> Severity: Notice --> Undefined variable: searchText C:\xampp\htdocs\siddharth_application\application\views\rawmaterialListing.php 34 -ERROR - 2017-06-01 14:55:34 --> Severity: Notice --> Undefined variable: searchText C:\xampp\htdocs\siddharth_application\application\views\rawmaterialListing.php 34 -ERROR - 2017-06-01 14:55:44 --> Severity: Notice --> Undefined variable: searchText C:\xampp\htdocs\siddharth_application\application\views\rawmaterialListing.php 34 -ERROR - 2017-06-01 18:30:10 --> Severity: Notice --> Undefined variable: searchText C:\xampp\htdocs\siddharth_application\application\views\rawmaterialListing.php 34 -ERROR - 2017-06-01 18:30:19 --> Severity: Notice --> Undefined index: Created_By C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 296 -ERROR - 2017-06-01 18:30:19 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 298 -ERROR - 2017-06-01 18:30:19 --> Severity: Notice --> Undefined index: Created_By C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 296 -ERROR - 2017-06-01 18:30:19 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 298 -ERROR - 2017-06-01 18:30:19 --> Severity: Notice --> Undefined index: Created_By C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 296 -ERROR - 2017-06-01 18:30:19 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 298 -ERROR - 2017-06-01 18:30:19 --> Severity: Notice --> Undefined index: Created_By C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 296 -ERROR - 2017-06-01 18:30:19 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 298 -ERROR - 2017-06-01 18:30:19 --> Severity: Notice --> Undefined index: Created_By C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 296 -ERROR - 2017-06-01 18:30:19 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 298 -ERROR - 2017-06-01 18:30:19 --> Severity: Notice --> Undefined index: Created_By C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 296 -ERROR - 2017-06-01 18:30:19 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 298 -ERROR - 2017-06-01 18:30:19 --> Severity: Notice --> Undefined index: Created_By C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 296 -ERROR - 2017-06-01 18:30:19 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 298 -ERROR - 2017-06-01 18:30:19 --> Severity: Notice --> Undefined index: Created_By C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 296 -ERROR - 2017-06-01 18:30:19 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 298 -ERROR - 2017-06-01 18:30:19 --> Severity: Notice --> Undefined index: Created_By C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 296 -ERROR - 2017-06-01 18:30:19 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 298 -ERROR - 2017-06-01 18:30:19 --> Severity: Notice --> Undefined index: Created_By C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 296 -ERROR - 2017-06-01 18:30:19 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 298 -ERROR - 2017-06-01 18:30:19 --> Severity: Notice --> Undefined index: Created_By C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 296 -ERROR - 2017-06-01 18:30:19 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 298 -ERROR - 2017-06-01 18:30:19 --> Severity: Notice --> Undefined index: Created_By C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 296 -ERROR - 2017-06-01 18:30:19 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 298 -ERROR - 2017-06-01 18:30:19 --> Severity: Notice --> Undefined index: Created_By C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 296 -ERROR - 2017-06-01 18:30:19 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 298 -ERROR - 2017-06-01 18:30:19 --> Severity: Notice --> Undefined index: Created_By C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 296 -ERROR - 2017-06-01 18:30:19 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 298 -ERROR - 2017-06-01 18:30:19 --> Severity: Notice --> Undefined index: Created_By C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 296 -ERROR - 2017-06-01 18:30:19 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 298 -ERROR - 2017-06-01 18:30:19 --> Severity: Notice --> Undefined index: Created_By C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 296 -ERROR - 2017-06-01 18:30:19 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 298 -ERROR - 2017-06-01 18:30:19 --> Severity: Notice --> Undefined index: Created_By C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 296 -ERROR - 2017-06-01 18:30:19 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 298 -ERROR - 2017-06-01 18:30:19 --> Severity: Notice --> Undefined index: Created_By C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 296 -ERROR - 2017-06-01 18:30:19 --> Severity: Notice --> Undefined index: IsActive C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 298 -ERROR - 2017-06-01 18:30:19 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 311 -ERROR - 2017-06-01 18:30:19 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 312 -ERROR - 2017-06-01 18:30:19 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 313 -ERROR - 2017-06-01 18:30:58 --> Severity: Notice --> Undefined index: created_By C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 296 -ERROR - 2017-06-01 18:30:59 --> Severity: Notice --> Undefined index: created_By C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 296 -ERROR - 2017-06-01 18:30:59 --> Severity: Notice --> Undefined index: created_By C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 296 -ERROR - 2017-06-01 18:30:59 --> Severity: Notice --> Undefined index: created_By C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 296 -ERROR - 2017-06-01 18:30:59 --> Severity: Notice --> Undefined index: created_By C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 296 -ERROR - 2017-06-01 18:30:59 --> Severity: Notice --> Undefined index: created_By C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 296 -ERROR - 2017-06-01 18:30:59 --> Severity: Notice --> Undefined index: created_By C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 296 -ERROR - 2017-06-01 18:30:59 --> Severity: Notice --> Undefined index: created_By C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 296 -ERROR - 2017-06-01 18:30:59 --> Severity: Notice --> Undefined index: created_By C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 296 -ERROR - 2017-06-01 18:30:59 --> Severity: Notice --> Undefined index: created_By C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 296 -ERROR - 2017-06-01 18:30:59 --> Severity: Notice --> Undefined index: created_By C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 296 -ERROR - 2017-06-01 18:30:59 --> Severity: Notice --> Undefined index: created_By C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 296 -ERROR - 2017-06-01 18:30:59 --> Severity: Notice --> Undefined index: created_By C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 296 -ERROR - 2017-06-01 18:30:59 --> Severity: Notice --> Undefined index: created_By C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 296 -ERROR - 2017-06-01 18:30:59 --> Severity: Notice --> Undefined index: created_By C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 296 -ERROR - 2017-06-01 18:30:59 --> Severity: Notice --> Undefined index: created_By C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 296 -ERROR - 2017-06-01 18:30:59 --> Severity: Notice --> Undefined index: created_By C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 296 -ERROR - 2017-06-01 18:30:59 --> Severity: Notice --> Undefined index: created_By C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 296 -ERROR - 2017-06-01 18:30:59 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 311 -ERROR - 2017-06-01 18:30:59 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 312 -ERROR - 2017-06-01 18:30:59 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\rawmaterialdetails.php 313 -ERROR - 2017-06-01 18:35:06 --> Severity: Notice --> Undefined variable: searchText C:\xampp\htdocs\siddharth_application\application\views\rawmaterialListing.php 35 -ERROR - 2017-06-01 18:35:58 --> Severity: Notice --> Undefined variable: searchText C:\xampp\htdocs\siddharth_application\application\views\rawmaterialListing.php 35 -ERROR - 2017-06-01 18:36:08 --> Severity: Notice --> Undefined variable: searchText C:\xampp\htdocs\siddharth_application\application\views\rawmaterialListing.php 35 -ERROR - 2017-06-01 18:36:48 --> Severity: Notice --> Undefined variable: searchText C:\xampp\htdocs\siddharth_application\application\views\rawmaterialListing.php 35 -ERROR - 2017-06-01 18:36:52 --> Severity: Notice --> Undefined variable: searchText C:\xampp\htdocs\siddharth_application\application\views\rawmaterialListing.php 35 -ERROR - 2017-06-01 19:25:23 --> Severity: Notice --> Undefined property: employeedetails::$rawmaterialdetails_model C:\xampp\htdocs\siddharth_application\application\controllers\employeedetails.php 697 -ERROR - 2017-06-01 19:25:58 --> Query error: Unknown column 'det.createdby' in 'on clause' diff --git a/application/logs/log-2017-06-02.php b/application/logs/log-2017-06-02.php deleted file mode 100644 index 84f100f4..00000000 --- a/application/logs/log-2017-06-02.php +++ /dev/null @@ -1,108 +0,0 @@ - - -ERROR - 2017-06-02 07:21:22 --> Severity: Notice --> Undefined variable: searchText C:\xampp\htdocs\siddharth_application\application\views\assetListing.php 35 -ERROR - 2017-06-02 07:21:22 --> Severity: Notice --> Undefined property: CI_Loader::$pagination C:\xampp\htdocs\siddharth_application\application\views\assetListing.php 90 -ERROR - 2017-06-02 08:28:41 --> Query error: Unknown column 'det.*dep.DepartmentName' in 'field list' -ERROR - 2017-06-02 15:00:10 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:10 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:11 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:12 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:12 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:12 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:12 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:12 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:12 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:12 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:12 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:12 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:12 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:12 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:12 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:12 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:12 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:12 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:12 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:12 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:12 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:12 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:12 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:12 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:00:12 --> Severity: Notice --> Undefined index: EmpList C:\xampp\htdocs\siddharth_application\application\views\addNew.php 46 -ERROR - 2017-06-02 15:16:51 --> Query error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'as capital, sum(if(budgettype=REVENUE, `budgetamount`, `0))` as revenue, sum(if(' at line 1 diff --git a/application/logs/log-2017-06-05.php b/application/logs/log-2017-06-05.php deleted file mode 100644 index 2946f21f..00000000 --- a/application/logs/log-2017-06-05.php +++ /dev/null @@ -1,725 +0,0 @@ - - -ERROR - 2017-06-05 07:22:05 --> Query error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'as capital, sum(if(budgettype=REVENUE, `budgetamount`, `0))` as revenue, sum(if(' at line 1 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: AssetCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 427 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: CAPITAL C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 430 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: REVENUE C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 431 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: IMPORT C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 432 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: SERVICE C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 433 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: AssetCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 427 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: CAPITAL C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 430 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: REVENUE C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 431 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: IMPORT C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 432 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: SERVICE C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 433 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: AssetCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 427 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: CAPITAL C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 430 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: REVENUE C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 431 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: IMPORT C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 432 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: SERVICE C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 433 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: AssetCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 427 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: CAPITAL C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 430 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: REVENUE C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 431 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: IMPORT C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 432 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: SERVICE C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 433 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: AssetCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 427 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: CAPITAL C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 430 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: REVENUE C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 431 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: IMPORT C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 432 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: SERVICE C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 433 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: AssetCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 427 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: CAPITAL C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 430 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: REVENUE C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 431 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: IMPORT C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 432 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: SERVICE C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 433 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: AssetCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 427 -ERROR - 2017-06-05 07:36:00 --> Severity: Notice --> Undefined index: CAPITAL C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 430 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: REVENUE C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 431 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: IMPORT C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 432 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: SERVICE C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 433 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: AssetCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 427 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: CAPITAL C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 430 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: REVENUE C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 431 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: IMPORT C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 432 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: SERVICE C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 433 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: AssetCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 427 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: CAPITAL C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 430 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: REVENUE C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 431 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: IMPORT C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 432 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: SERVICE C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 433 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: AssetCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 427 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: CAPITAL C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 430 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: REVENUE C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 431 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: IMPORT C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 432 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: SERVICE C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 433 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: AssetCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 427 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: CAPITAL C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 430 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: REVENUE C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 431 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: IMPORT C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 432 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: SERVICE C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 433 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: AssetCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 427 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: CAPITAL C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 430 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: REVENUE C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 431 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: IMPORT C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 432 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: SERVICE C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 433 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: AssetCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 427 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: CAPITAL C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 430 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: REVENUE C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 431 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: IMPORT C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 432 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: SERVICE C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 433 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:36:01 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:36:02 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:36:02 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 453 -ERROR - 2017-06-05 07:36:02 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 454 -ERROR - 2017-06-05 07:36:02 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 455 -ERROR - 2017-06-05 07:37:35 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:37:35 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:37:35 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:37:35 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:37:35 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:37:36 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:37:37 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:37:37 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:37:37 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 453 -ERROR - 2017-06-05 07:37:37 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 454 -ERROR - 2017-06-05 07:37:37 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 455 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:37:48 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:37:48 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 453 -ERROR - 2017-06-05 07:37:48 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 454 -ERROR - 2017-06-05 07:37:48 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 455 -ERROR - 2017-06-05 07:39:29 --> Query error: Unknown column 'det.DEPCode' in 'on clause' -ERROR - 2017-06-05 07:43:48 --> Query error: Unknown column 'det.createdby' in 'on clause' -ERROR - 2017-06-05 07:44:50 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:50 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:50 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:50 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:50 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:50 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:50 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:50 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:50 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:50 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:50 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:50 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:50 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:50 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:50 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:50 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:50 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:50 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:50 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:50 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:50 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:50 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:50 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:50 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:50 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:50 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:50 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:51 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:52 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:53 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:54 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: DEPCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 435 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: SupplierCode C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 436 -ERROR - 2017-06-05 07:44:55 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:44:55 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 453 -ERROR - 2017-06-05 07:44:55 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 454 -ERROR - 2017-06-05 07:44:55 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 455 -ERROR - 2017-06-05 07:48:27 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:27 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:27 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:27 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:27 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:27 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:27 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:27 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:27 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:27 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:27 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:27 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:27 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:27 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:27 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:27 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:27 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:27 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:27 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:27 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:27 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:27 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:28 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:29 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:30 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:30 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:30 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:30 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:30 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:30 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:30 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:30 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:30 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:30 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:30 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:30 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:30 --> Severity: Notice --> Undefined index: BudgetYear C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 434 -ERROR - 2017-06-05 07:48:30 --> Severity: Notice --> Undefined index: Remarks C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 438 -ERROR - 2017-06-05 07:48:30 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 453 -ERROR - 2017-06-05 07:48:30 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 454 -ERROR - 2017-06-05 07:48:30 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\siddharth_application\system\core\Exceptions.php:186) C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 455 -ERROR - 2017-06-05 08:07:51 --> Query error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'as capital, sum(if(budgettype=REVENUE, `budgetamount`, `0))` as revenue, sum(if(' at line 1 -ERROR - 2017-06-05 08:09:58 --> Query error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'as capital, sum(if(budgettype=`REVENUE`, `budgetamount`, `0))` as revenue, sum(i' at line 1 -ERROR - 2017-06-05 08:12:25 --> Query error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'as capital, sum(if(budgettype="REVENUE", `budgetamount`, `0))` as revenue, sum(i' at line 1 -ERROR - 2017-06-05 08:13:54 --> Query error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.*, `part`.`DepartmentName`, sum(if(budgettype='CAPITAL', `budgetamount`, `0))` ' at line 1 -ERROR - 2017-06-05 08:14:55 --> Query error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'as capital, sum(if(budgettype='REVENUE', `budgetamount`, `0))` as revenue, sum(i' at line 1 -ERROR - 2017-06-05 08:16:39 --> Query error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'as capital, sum(if(budgettype='REVENUE', `budgetamount`, `0))` as revenue, sum(i' at line 1 -ERROR - 2017-06-05 08:20:38 --> Query error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'as capital -FROM (`T_CostCenter_Master` as bud) -LEFT JOIN `T_CostCenter_Budget` a' at line 1 -ERROR - 2017-06-05 08:31:36 --> Query error: Column 'CostCenterCode' in group statement is ambiguous -ERROR - 2017-06-05 08:33:01 --> Severity: Notice --> Undefined index: CAPITAL C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 433 -ERROR - 2017-06-05 08:33:53 --> Severity: Notice --> Undefined index: CAPITAL C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 433 -ERROR - 2017-06-05 08:33:53 --> Severity: Notice --> Undefined index: CAPITAL C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 433 -ERROR - 2017-06-05 08:33:53 --> Severity: Notice --> Undefined index: CAPITAL C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 433 -ERROR - 2017-06-05 08:33:53 --> Severity: Notice --> Undefined index: CAPITAL C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 433 -ERROR - 2017-06-05 08:33:53 --> Severity: Notice --> Undefined index: CAPITAL C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 433 -ERROR - 2017-06-05 08:33:53 --> Severity: Notice --> Undefined index: CAPITAL C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 433 -ERROR - 2017-06-05 08:33:53 --> Severity: Notice --> Undefined index: CAPITAL C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 433 -ERROR - 2017-06-05 08:33:53 --> Severity: Notice --> Undefined index: CAPITAL C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 433 -ERROR - 2017-06-05 08:33:53 --> Severity: Notice --> Undefined index: CAPITAL C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 433 -ERROR - 2017-06-05 08:33:53 --> Severity: Notice --> Undefined index: CAPITAL C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 433 -ERROR - 2017-06-05 08:33:53 --> Severity: Notice --> Undefined index: CAPITAL C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 433 -ERROR - 2017-06-05 08:33:53 --> Severity: Notice --> Undefined index: CAPITAL C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 433 -ERROR - 2017-06-05 08:33:53 --> Severity: Notice --> Undefined index: CAPITAL C:\xampp\htdocs\siddharth_application\application\controllers\CostCenter.php 433 -ERROR - 2017-06-05 08:35:12 --> Query error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'as capital -FROM (`T_CostCenter_Master` as bud) -LEFT JOIN `T_CostCenter_Budget` a' at line 1 -ERROR - 2017-06-05 08:35:30 --> Query error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'as capital -FROM (`T_CostCenter_Master` as bud) -LEFT JOIN `T_CostCenter_Budget` a' at line 1 -ERROR - 2017-06-05 08:36:20 --> Query error: Unknown column 'CAPITAL' in 'field list' -ERROR - 2017-06-05 08:36:34 --> Query error: Unknown column 'CAPITAL' in 'field list' -ERROR - 2017-06-05 08:36:54 --> Query error: Unknown column 'CAPITAL' in 'field list' -ERROR - 2017-06-05 08:37:03 --> Query error: Unknown column 'REVENUE' in 'field list' diff --git a/application/logs/log-2017-06-14.php b/application/logs/log-2017-06-14.php deleted file mode 100644 index e86ec190..00000000 --- a/application/logs/log-2017-06-14.php +++ /dev/null @@ -1,88 +0,0 @@ - - -ERROR - 2017-06-14 16:45:01 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-14 16:45:01 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-14 16:45:01 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 141 -ERROR - 2017-06-14 16:45:01 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 187 -ERROR - 2017-06-14 16:45:01 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 215 -ERROR - 2017-06-14 16:46:09 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-14 16:46:09 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-14 16:46:09 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 141 -ERROR - 2017-06-14 16:46:09 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 187 -ERROR - 2017-06-14 16:46:09 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 215 -ERROR - 2017-06-14 16:54:24 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-14 16:54:24 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-14 16:54:24 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-14 16:54:24 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-14 16:54:24 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-14 16:59:24 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-14 16:59:24 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-14 16:59:24 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-14 16:59:24 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-14 16:59:24 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-14 16:59:26 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-14 16:59:26 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-14 16:59:26 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-14 16:59:26 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-14 16:59:26 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-14 17:03:59 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-14 17:03:59 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-14 17:03:59 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-14 17:03:59 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-14 17:03:59 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-14 17:22:59 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-14 17:22:59 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-14 17:22:59 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-14 17:22:59 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-14 17:22:59 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-14 17:24:27 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-14 17:24:27 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-14 17:24:27 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-14 17:24:27 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-14 17:24:27 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-14 17:25:43 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-14 17:25:43 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-14 17:25:43 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-14 17:25:43 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-14 17:25:43 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-14 17:25:43 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-14 17:25:43 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-14 17:25:43 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-14 17:25:43 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-14 17:25:43 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-14 17:25:43 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-14 17:25:43 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-14 17:25:43 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-14 17:25:43 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-14 17:25:43 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-14 17:25:43 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-14 17:25:43 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-14 17:25:43 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-14 17:25:43 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-14 17:25:43 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-14 17:25:43 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-14 17:25:43 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-14 17:25:43 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-14 17:25:43 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-14 17:25:43 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-14 17:25:44 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-14 17:25:44 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-14 17:25:44 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-14 17:25:44 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-14 17:25:44 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-14 17:25:44 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-14 17:25:44 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-14 17:25:44 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-14 17:25:44 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-14 17:25:44 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-14 17:25:44 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-14 17:25:44 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-14 17:25:44 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-14 17:25:44 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-14 17:25:44 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-14 17:26:22 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-14 17:26:22 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-14 17:26:22 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-14 17:26:22 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-14 17:26:22 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-14 17:26:59 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /opt/lampp/htdocs/Git_Server/siddharth_application/system/database/drivers/mysqli/mysqli_result.php 38 diff --git a/application/logs/log-2017-06-15.php b/application/logs/log-2017-06-15.php deleted file mode 100644 index 60c0652c..00000000 --- a/application/logs/log-2017-06-15.php +++ /dev/null @@ -1,145 +0,0 @@ - - -ERROR - 2017-06-15 06:39:59 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-15 06:39:59 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-15 06:39:59 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-15 06:39:59 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-15 06:39:59 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-15 08:03:27 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-15 08:03:27 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-15 08:03:27 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-15 08:03:27 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-15 08:03:27 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-15 09:24:09 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-15 09:24:09 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-15 09:24:09 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-15 09:24:09 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-15 09:24:09 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-15 09:24:10 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-15 09:24:10 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-15 09:24:10 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-15 09:24:10 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-15 09:24:10 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-15 09:38:37 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-15 09:38:37 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-15 09:38:37 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-15 09:38:37 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-15 09:38:37 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-15 09:39:31 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /opt/lampp/htdocs/Git_Server/siddharth_application/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-15 09:40:17 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-15 09:40:17 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-15 09:40:17 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-15 09:40:17 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-15 09:40:17 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-15 10:31:56 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-15 10:31:56 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-15 10:31:56 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-15 10:31:56 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-15 10:31:56 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-15 10:32:57 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-15 10:32:57 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-15 10:32:57 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-15 10:32:57 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-15 10:32:57 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-15 10:34:21 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /opt/lampp/htdocs/Git_Server/siddharth_application/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-15 10:37:47 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-15 10:37:47 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-15 10:37:47 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-15 10:37:47 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-15 10:37:47 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-15 10:38:48 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-15 10:38:48 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-15 10:38:48 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-15 10:38:48 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-15 10:38:48 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-15 10:39:18 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-15 10:39:18 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-15 10:39:18 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-15 10:39:18 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-15 10:39:18 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-15 10:45:31 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-15 10:45:31 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-15 10:45:31 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-15 10:45:31 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-15 10:45:31 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-15 10:45:32 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-15 10:45:32 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-15 10:45:32 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-15 10:45:32 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-15 10:45:32 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-15 10:45:49 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-15 10:45:49 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-15 10:45:49 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-15 10:45:49 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-15 10:45:49 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-15 11:23:48 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-15 11:23:48 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-15 11:23:48 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-15 11:23:48 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-15 11:23:48 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-15 11:25:21 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-15 11:25:21 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-15 11:25:21 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-15 11:25:21 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-15 11:25:21 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-15 11:26:02 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-15 11:26:02 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-15 11:26:02 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-15 11:26:02 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-15 11:26:02 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-15 11:29:09 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-15 11:29:09 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-15 11:29:09 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-15 11:29:09 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-15 11:29:09 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-15 11:30:40 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-15 11:30:40 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-15 11:30:40 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-15 11:30:40 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-15 11:30:40 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-15 11:32:05 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-15 11:32:05 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-15 11:32:05 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-15 11:32:05 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-15 11:32:05 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-15 11:47:07 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-15 11:47:07 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-15 11:47:07 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-15 11:47:07 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-15 11:47:07 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-15 11:52:57 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-15 11:52:57 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-15 11:52:57 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-15 11:52:57 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-15 11:52:57 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-15 11:53:16 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-15 11:53:16 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-15 11:53:16 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-15 11:53:16 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-15 11:53:16 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-15 11:53:58 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-15 11:53:58 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-15 11:53:58 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-15 11:53:58 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-15 11:53:58 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-15 11:54:49 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-15 11:54:49 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-15 11:54:49 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-15 11:54:49 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-15 11:54:49 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-15 11:55:15 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-15 11:55:15 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-15 11:55:15 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-15 11:55:15 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-15 11:55:15 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-15 11:56:35 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /opt/lampp/htdocs/Git_Server/siddharth_application/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-15 11:57:28 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-15 11:57:28 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-15 11:57:28 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-15 11:57:28 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-15 11:57:28 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-15 12:08:51 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-15 12:08:51 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-15 12:08:51 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-15 12:08:51 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-15 12:08:51 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 diff --git a/application/logs/log-2017-06-19.php b/application/logs/log-2017-06-19.php deleted file mode 100644 index e42e63d8..00000000 --- a/application/logs/log-2017-06-19.php +++ /dev/null @@ -1,7 +0,0 @@ - - -ERROR - 2017-06-19 13:18:05 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-19 13:18:05 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-19 13:18:05 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-19 13:18:05 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-19 13:18:05 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 diff --git a/application/logs/log-2017-06-20.php b/application/logs/log-2017-06-20.php deleted file mode 100644 index 7d6a9b96..00000000 --- a/application/logs/log-2017-06-20.php +++ /dev/null @@ -1,14 +0,0 @@ - - -ERROR - 2017-06-20 07:09:20 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-20 07:09:20 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-20 07:09:20 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-20 07:09:20 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-20 07:09:20 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-20 07:18:29 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /opt/lampp/htdocs/Git_Server/siddharth_application/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-20 08:15:30 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /opt/lampp/htdocs/Git_Server/siddharth_application/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-20 08:16:37 --> Severity: Notice --> Undefined variable: RequistionDetails /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-20 08:16:37 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-20 08:16:37 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-20 08:16:37 --> Severity: Notice --> Undefined variable: MaterialList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-20 08:16:37 --> Severity: Notice --> Undefined variable: CostList /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/alterpurchaseorder.php 214 diff --git a/application/logs/log-2017-06-21.php b/application/logs/log-2017-06-21.php deleted file mode 100644 index e9212a99..00000000 --- a/application/logs/log-2017-06-21.php +++ /dev/null @@ -1,124 +0,0 @@ - - -ERROR - 2017-06-21 08:58:26 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 138 -ERROR - 2017-06-21 08:58:26 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 139 -ERROR - 2017-06-21 08:58:26 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 140 -ERROR - 2017-06-21 08:58:26 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 186 -ERROR - 2017-06-21 08:58:26 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 214 -ERROR - 2017-06-21 09:00:19 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 138 -ERROR - 2017-06-21 09:00:19 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 139 -ERROR - 2017-06-21 09:00:19 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 140 -ERROR - 2017-06-21 09:00:19 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 186 -ERROR - 2017-06-21 09:00:19 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 214 -ERROR - 2017-06-21 09:02:37 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 138 -ERROR - 2017-06-21 09:02:37 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 139 -ERROR - 2017-06-21 09:02:37 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 140 -ERROR - 2017-06-21 09:02:37 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 186 -ERROR - 2017-06-21 09:02:37 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 214 -ERROR - 2017-06-21 09:12:26 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 138 -ERROR - 2017-06-21 09:12:26 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 139 -ERROR - 2017-06-21 09:12:26 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 140 -ERROR - 2017-06-21 09:12:26 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 186 -ERROR - 2017-06-21 09:12:26 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 214 -ERROR - 2017-06-21 09:18:49 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 138 -ERROR - 2017-06-21 09:18:49 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 139 -ERROR - 2017-06-21 09:18:49 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 140 -ERROR - 2017-06-21 09:18:49 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 186 -ERROR - 2017-06-21 09:18:49 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 214 -ERROR - 2017-06-21 09:20:16 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 138 -ERROR - 2017-06-21 09:20:16 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 139 -ERROR - 2017-06-21 09:20:16 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 140 -ERROR - 2017-06-21 09:20:16 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 186 -ERROR - 2017-06-21 09:20:16 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 214 -ERROR - 2017-06-21 09:23:31 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 138 -ERROR - 2017-06-21 09:23:31 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 139 -ERROR - 2017-06-21 09:23:32 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 140 -ERROR - 2017-06-21 09:23:32 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 186 -ERROR - 2017-06-21 09:23:32 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 214 -ERROR - 2017-06-21 09:26:00 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 138 -ERROR - 2017-06-21 09:26:00 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 139 -ERROR - 2017-06-21 09:26:00 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 140 -ERROR - 2017-06-21 09:26:00 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 186 -ERROR - 2017-06-21 09:26:00 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 214 -ERROR - 2017-06-21 09:28:40 --> Severity: Notice --> Undefined variable: RequistionDetails C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 138 -ERROR - 2017-06-21 09:28:40 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 139 -ERROR - 2017-06-21 09:28:40 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 140 -ERROR - 2017-06-21 09:28:40 --> Severity: Notice --> Undefined variable: MaterialList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 186 -ERROR - 2017-06-21 09:28:40 --> Severity: Notice --> Undefined variable: CostList C:\xampp\htdocs\siddharth_application\application\views\alterpurchaseorder.php 214 -ERROR - 2017-06-21 09:37:17 --> Severity: Warning --> Missing argument 1 for purchaseorder::revenuepoprint(), called in C:\xampp\htdocs\siddharth_application\system\core\CodeIgniter.php on line 360 and defined C:\xampp\htdocs\siddharth_application\application\controllers\purchaseorder.php 769 -ERROR - 2017-06-21 09:37:17 --> Severity: Notice --> Undefined variable: PONO C:\xampp\htdocs\siddharth_application\application\controllers\purchaseorder.php 777 -ERROR - 2017-06-21 09:37:17 --> Severity: Notice --> Undefined variable: SubTotalAmount C:\xampp\htdocs\siddharth_application\application\views\revenuepopdf.php 136 -ERROR - 2017-06-21 09:37:17 --> Severity: Notice --> Undefined variable: AfterDiscount C:\xampp\htdocs\siddharth_application\application\views\revenuepopdf.php 141 -ERROR - 2017-06-21 09:37:17 --> Severity: Notice --> Undefined variable: AfterExciseDuty C:\xampp\htdocs\siddharth_application\application\views\revenuepopdf.php 146 -ERROR - 2017-06-21 09:37:17 --> Severity: Notice --> Undefined variable: AfterVAT C:\xampp\htdocs\siddharth_application\application\views\revenuepopdf.php 151 -ERROR - 2017-06-21 09:37:17 --> Severity: Notice --> Undefined variable: AfterCST C:\xampp\htdocs\siddharth_application\application\views\revenuepopdf.php 156 -ERROR - 2017-06-21 09:37:17 --> Severity: Notice --> Undefined variable: AfterGST C:\xampp\htdocs\siddharth_application\application\views\revenuepopdf.php 161 -ERROR - 2017-06-21 09:37:17 --> Severity: Notice --> Undefined variable: AfterOtherTaxes C:\xampp\htdocs\siddharth_application\application\views\revenuepopdf.php 166 -ERROR - 2017-06-21 09:37:17 --> Severity: Notice --> Undefined variable: Insurance C:\xampp\htdocs\siddharth_application\application\views\revenuepopdf.php 171 -ERROR - 2017-06-21 09:37:17 --> Severity: Notice --> Undefined variable: AfterFreightValue C:\xampp\htdocs\siddharth_application\application\views\revenuepopdf.php 176 -ERROR - 2017-06-21 09:37:17 --> Severity: Notice --> Undefined variable: OrderValue C:\xampp\htdocs\siddharth_application\application\views\revenuepopdf.php 181 -ERROR - 2017-06-21 09:37:18 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-06-21 09:39:37 --> Severity: Notice --> Undefined variable: index C:\xampp\htdocs\siddharth_application\application\views\importpopdf.php 109 -ERROR - 2017-06-21 09:39:38 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-06-21 09:43:59 --> Severity: Notice --> Undefined variable: index C:\xampp\htdocs\siddharth_application\application\views\importpopdf.php 109 -ERROR - 2017-06-21 09:43:59 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-06-21 09:44:34 --> Severity: Notice --> Undefined variable: index C:\xampp\htdocs\siddharth_application\application\views\importpopdf.php 109 -ERROR - 2017-06-21 09:44:34 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-06-21 09:45:15 --> Severity: Notice --> Undefined variable: index C:\xampp\htdocs\siddharth_application\application\views\importpopdf.php 109 -ERROR - 2017-06-21 09:45:15 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-06-21 09:45:48 --> Severity: Notice --> Undefined variable: index C:\xampp\htdocs\siddharth_application\application\views\importpopdf.php 109 -ERROR - 2017-06-21 09:45:48 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-06-21 09:48:59 --> Severity: Notice --> Undefined variable: index C:\xampp\htdocs\siddharth_application\application\views\importpopdf.php 109 -ERROR - 2017-06-21 09:49:00 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-06-21 09:50:32 --> Severity: Notice --> Undefined variable: index C:\xampp\htdocs\siddharth_application\application\views\importpopdf.php 149 -ERROR - 2017-06-21 09:50:32 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-06-21 09:51:10 --> Severity: Notice --> Undefined variable: index C:\xampp\htdocs\siddharth_application\application\views\importpopdf.php 109 -ERROR - 2017-06-21 09:51:10 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-06-21 09:54:23 --> Severity: Notice --> Undefined variable: index C:\xampp\htdocs\siddharth_application\application\views\importpopdf.php 109 -ERROR - 2017-06-21 09:54:23 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-06-21 09:54:48 --> Severity: Notice --> Undefined variable: index C:\xampp\htdocs\siddharth_application\application\views\importpopdf.php 109 -ERROR - 2017-06-21 09:54:48 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-06-21 09:57:29 --> Severity: Notice --> Undefined variable: index C:\xampp\htdocs\siddharth_application\application\views\importpopdf.php 109 -ERROR - 2017-06-21 09:57:29 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-06-21 09:58:08 --> Severity: Notice --> Undefined variable: index C:\xampp\htdocs\siddharth_application\application\views\importpopdf.php 109 -ERROR - 2017-06-21 09:58:08 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-06-21 10:00:19 --> Severity: Notice --> Undefined variable: index C:\xampp\htdocs\siddharth_application\application\views\importpopdf.php 109 -ERROR - 2017-06-21 10:00:19 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-06-21 10:01:41 --> Severity: Notice --> Undefined variable: index C:\xampp\htdocs\siddharth_application\application\views\importpopdf.php 109 -ERROR - 2017-06-21 10:01:41 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-06-21 10:05:04 --> Severity: Notice --> Undefined variable: index C:\xampp\htdocs\siddharth_application\application\views\importpopdf.php 109 -ERROR - 2017-06-21 10:05:04 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-06-21 10:05:35 --> Severity: Notice --> Undefined variable: index C:\xampp\htdocs\siddharth_application\application\views\importpopdf.php 109 -ERROR - 2017-06-21 10:05:35 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-06-21 10:06:14 --> Severity: Notice --> Undefined variable: index C:\xampp\htdocs\siddharth_application\application\views\importpopdf.php 109 -ERROR - 2017-06-21 10:06:14 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-06-21 10:06:47 --> Severity: Notice --> Undefined variable: index C:\xampp\htdocs\siddharth_application\application\views\importpopdf.php 109 -ERROR - 2017-06-21 10:06:47 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-06-21 10:07:13 --> Severity: Notice --> Undefined variable: index C:\xampp\htdocs\siddharth_application\application\views\importpopdf.php 109 -ERROR - 2017-06-21 10:07:13 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-06-21 10:07:42 --> Severity: Notice --> Undefined variable: index C:\xampp\htdocs\siddharth_application\application\views\importpopdf.php 109 -ERROR - 2017-06-21 10:07:42 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-06-21 10:08:02 --> Severity: Notice --> Undefined variable: index C:\xampp\htdocs\siddharth_application\application\views\importpopdf.php 109 -ERROR - 2017-06-21 10:08:02 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-06-21 10:13:11 --> Severity: Notice --> Undefined variable: index C:\xampp\htdocs\siddharth_application\application\views\importpopdf.php 109 -ERROR - 2017-06-21 10:13:11 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-06-21 10:18:19 --> Severity: Notice --> Undefined variable: index C:\xampp\htdocs\siddharth_application\application\views\importpopdf.php 109 -ERROR - 2017-06-21 10:18:20 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-06-21 10:22:33 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-06-21 10:23:07 --> Severity: Notice --> Undefined property: stdClass::$AvlBudAmt C:\xampp\htdocs\siddharth_application\application\views\editimportpo.php 1468 -ERROR - 2017-06-21 10:27:58 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-06-21 10:28:34 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-06-21 10:34:57 --> Severity: Notice --> Undefined property: stdClass::$AvlBudAmt C:\xampp\htdocs\siddharth_application\application\views\editimportpo.php 1468 -ERROR - 2017-06-21 10:40:16 --> Severity: Notice --> Undefined variable: index C:\xampp\htdocs\siddharth_application\application\views\importpopdf.php 113 -ERROR - 2017-06-21 10:40:16 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-06-21 10:40:44 --> Severity: Notice --> Undefined variable: index C:\xampp\htdocs\siddharth_application\application\views\importpopdf.php 113 -ERROR - 2017-06-21 10:40:44 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-06-21 11:00:59 --> Severity: Notice --> Undefined variable: index C:\xampp\htdocs\siddharth_application\application\views\importpopdf.php 113 -ERROR - 2017-06-21 11:01:00 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-06-21 11:01:05 --> Severity: Notice --> Undefined variable: index C:\xampp\htdocs\siddharth_application\application\views\importpopdf.php 113 -ERROR - 2017-06-21 11:01:05 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-06-21 11:03:11 --> Severity: Notice --> Undefined variable: index C:\xampp\htdocs\siddharth_application\application\views\importpopdf.php 114 -ERROR - 2017-06-21 11:03:11 --> Severity: Warning --> explode() expects parameter 2 to be string, array given C:\xampp\htdocs\siddharth_application\application\third_party\dompdf\include\style.cls.php 948 -ERROR - 2017-06-21 11:15:46 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_result.php 38 -ERROR - 2017-06-21 11:15:59 --> Severity: Notice --> Undefined property: stdClass::$AvlBudAmt C:\xampp\htdocs\siddharth_application\application\views\editimportpo.php 1468 -ERROR - 2017-06-21 11:17:40 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given C:\xampp\htdocs\siddharth_application\system\database\drivers\mysqli\mysqli_result.php 38 diff --git a/application/logs/log-2017-06-22.php b/application/logs/log-2017-06-22.php deleted file mode 100644 index 1d0741ef..00000000 --- a/application/logs/log-2017-06-22.php +++ /dev/null @@ -1,760 +0,0 @@ - - -ERROR - 2017-06-22 08:00:58 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /opt/lampp/htdocs/Git_Server/siddharth_application/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 08:01:33 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /opt/lampp/htdocs/Git_Server/siddharth_application/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 08:01:52 --> Severity: Notice --> Undefined property: stdClass::$AvlBudAmt /opt/lampp/htdocs/Git_Server/siddharth_application/application/views/editimportpo.php 1474 -ERROR - 2017-06-22 01:21:07 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at /home/kasiram9/public_html/SIA_SIT/application/controllers/login.php:2) /home/kasiram9/public_html/SIA_SIT/system/libraries/Session.php 689 -ERROR - 2017-06-22 01:21:07 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at /home/kasiram9/public_html/SIA_SIT/application/controllers/login.php:2) /home/kasiram9/public_html/SIA_SIT/system/helpers/url_helper.php 543 -ERROR - 2017-06-22 01:22:05 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at /home/kasiram9/public_html/SIA_SIT/application/models/login_model.php:21) /home/kasiram9/public_html/SIA_SIT/system/libraries/Session.php 689 -ERROR - 2017-06-22 01:22:05 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at /home/kasiram9/public_html/SIA_SIT/application/models/login_model.php:21) /home/kasiram9/public_html/SIA_SIT/system/helpers/url_helper.php 543 -ERROR - 2017-06-22 01:24:24 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at /home/kasiram9/public_html/SIA_SIT/application/controllers/user.php:2) /home/kasiram9/public_html/SIA_SIT/system/libraries/Session.php 433 -ERROR - 2017-06-22 01:24:24 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at /home/kasiram9/public_html/SIA_SIT/application/controllers/user.php:2) /home/kasiram9/public_html/SIA_SIT/system/helpers/url_helper.php 543 -ERROR - 2017-06-22 01:30:22 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 01:30:48 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 01:36:01 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 01:38:26 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 01:39:11 --> Severity: Notice --> Undefined variable: RequistionDetails /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-22 01:39:11 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-22 01:39:11 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-22 01:39:11 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-22 01:39:11 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-22 01:39:38 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 01:49:06 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at /home/kasiram9/public_html/SIA_SIT/application/controllers/rawmaterialdetails.php:325) /home/kasiram9/public_html/SIA_SIT/system/helpers/url_helper.php 541 -ERROR - 2017-06-22 01:50:29 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at /home/kasiram9/public_html/SIA_SIT/application/controllers/rawmaterialdetails.php:325) /home/kasiram9/public_html/SIA_SIT/system/libraries/Session.php 689 -ERROR - 2017-06-22 01:50:29 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at /home/kasiram9/public_html/SIA_SIT/application/controllers/rawmaterialdetails.php:325) /home/kasiram9/public_html/SIA_SIT/system/helpers/url_helper.php 541 -ERROR - 2017-06-22 01:56:50 --> Severity: Warning --> Cannot modify header information - headers already sent by (output started at /home/kasiram9/public_html/SIA_SIT/application/controllers/rawmaterialdetails.php:325) /home/kasiram9/public_html/SIA_SIT/system/helpers/url_helper.php 541 -ERROR - 2017-06-22 02:11:44 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:11:44 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:11:44 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:11:44 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:11:44 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:11:44 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:11:44 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:11:44 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:14:09 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:14:09 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:14:09 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:14:09 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:14:09 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:14:09 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:14:09 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:14:09 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:14:57 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:14:57 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:14:57 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:14:57 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:14:57 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:14:57 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:14:57 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:14:57 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:23:02 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 02:27:22 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:27:22 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:27:22 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:27:22 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:27:22 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:27:22 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:27:22 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:27:22 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:27:35 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:27:35 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:27:35 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:27:35 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:27:35 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:27:35 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:27:35 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:27:35 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 02:34:30 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 02:58:43 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 03:05:06 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 03:10:54 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 03:10:54 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 03:10:54 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 03:10:54 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 03:10:54 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 03:10:54 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 03:10:54 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 03:10:54 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 03:11:48 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 03:11:48 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 03:11:48 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 03:11:48 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 03:11:48 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 03:11:48 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 03:11:48 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 03:11:48 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 03:33:35 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 03:40:35 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 03:44:32 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 03:48:54 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 03:54:24 --> Query error: Commands out of sync; you can't run this command now -ERROR - 2017-06-22 03:55:17 --> Query error: Commands out of sync; you can't run this command now -ERROR - 2017-06-22 03:55:22 --> Query error: Commands out of sync; you can't run this command now -ERROR - 2017-06-22 03:57:34 --> Query error: Commands out of sync; you can't run this command now -ERROR - 2017-06-22 03:57:52 --> Query error: Commands out of sync; you can't run this command now -ERROR - 2017-06-22 03:58:45 --> Query error: Commands out of sync; you can't run this command now -ERROR - 2017-06-22 04:00:08 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 04:02:05 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 04:02:30 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:02:30 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:02:30 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:02:30 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:02:30 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:02:30 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:02:30 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:02:30 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:02:50 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:02:50 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:02:50 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:02:50 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:02:50 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:02:50 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:02:50 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:02:50 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:05:20 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:05:20 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:05:20 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:05:20 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:05:20 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:05:20 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:05:20 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:05:20 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:09:46 --> Severity: Notice --> Undefined variable: RequistionDetails /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-22 04:09:46 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-22 04:09:46 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-22 04:09:46 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-22 04:09:46 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-22 04:10:13 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 04:10:41 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:10:41 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:10:41 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:10:41 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:10:41 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:10:41 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:10:41 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:10:41 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:11:00 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:11:00 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:11:00 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:11:00 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:11:00 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:11:00 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:11:00 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:11:00 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:11:08 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:11:08 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:11:08 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:11:08 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:11:08 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:11:08 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:11:08 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:11:08 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:11:39 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:11:39 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:11:39 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:11:39 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:11:39 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:11:39 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:11:39 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:11:39 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:11:50 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:11:50 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:11:50 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:11:50 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:11:50 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:11:50 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:11:50 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:11:50 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:14:40 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:14:40 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:14:40 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:14:40 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:14:40 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:14:40 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:14:40 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:14:40 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:15:39 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 04:16:32 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 04:16:58 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:16:58 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:16:58 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:16:58 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:16:58 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:16:58 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:16:58 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:16:58 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:17:18 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:17:18 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:17:18 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:17:18 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:17:18 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:17:18 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:17:18 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:17:18 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:17:38 --> Severity: Warning --> explode() expects parameter 2 to be string, array given /home/kasiram9/public_html/SIA_SIT/application/third_party/dompdf/include/style.cls.php 948 -ERROR - 2017-06-22 04:21:53 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:21:53 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:21:53 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:21:53 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:21:53 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:21:53 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:21:53 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:21:53 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:23:59 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:23:59 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:23:59 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:23:59 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:23:59 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:23:59 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:23:59 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:23:59 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:24:25 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:24:25 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:24:25 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:24:25 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:24:25 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:24:25 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:24:25 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:24:25 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:25:21 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:25:21 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:25:21 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:25:21 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:25:21 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:25:21 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:25:21 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:25:21 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:25:27 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 04:26:59 --> Severity: Notice --> Undefined variable: RequistionDetails /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-22 04:26:59 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-22 04:26:59 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-22 04:26:59 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-22 04:26:59 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-22 04:28:01 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:28:01 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:28:01 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:28:01 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:28:01 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:28:01 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:28:01 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:28:01 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:32:43 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 04:34:31 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:34:31 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:34:31 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:34:31 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:34:31 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:34:31 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:34:31 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:34:31 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:34:41 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:34:41 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:34:41 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:34:41 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:34:41 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:34:41 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:34:41 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:34:41 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:34:53 --> Severity: Notice --> Undefined variable: RequistionDetails /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-22 04:34:53 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-22 04:34:53 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-22 04:34:53 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-22 04:34:53 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-22 04:35:22 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:35:22 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:35:22 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:35:22 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:35:22 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:35:22 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:35:22 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:35:22 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:36:06 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:36:06 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:36:06 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:36:06 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:36:06 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:36:06 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:36:06 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:36:06 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:36:45 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:36:45 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:36:45 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:36:45 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:36:45 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:36:45 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:36:45 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:36:45 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:38:03 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:38:03 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:38:03 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:38:03 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:38:03 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:38:03 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:38:03 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:38:03 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:45:23 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:45:23 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:45:23 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:45:23 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:45:23 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:45:23 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:45:23 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:45:23 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:45:34 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:45:34 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:45:34 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:45:34 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:45:34 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:45:34 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:45:34 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:45:34 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 04:53:23 --> Severity: Notice --> Undefined variable: RequistionDetails /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-22 04:53:23 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-22 04:53:23 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-22 04:53:23 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-22 04:53:23 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-22 05:05:52 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 05:11:48 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:11:48 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:11:48 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:11:48 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:11:48 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:11:48 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:11:48 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:11:48 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:12:38 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:12:38 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:12:38 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:12:38 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:12:38 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:12:38 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:12:38 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:12:38 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:18:34 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:18:34 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:18:34 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:18:34 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:18:34 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:18:34 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:18:34 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:18:34 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:25:20 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:25:20 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:25:20 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:25:20 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:25:20 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:25:20 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:25:20 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:25:20 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:25:50 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:25:50 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:25:50 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:25:50 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:25:50 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:25:50 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:25:50 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:25:50 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:26:03 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:26:03 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:26:03 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:26:03 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:26:03 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:26:03 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:26:03 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:26:03 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:26:17 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:26:17 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:26:17 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:26:17 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:26:17 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:26:17 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:26:17 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:26:17 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:31:20 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:31:20 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:31:20 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:31:20 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:31:20 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:31:20 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:31:20 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:31:20 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:34:18 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:34:18 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:34:18 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:34:18 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:34:18 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:34:18 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:34:18 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:34:18 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:44:15 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:44:15 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:44:15 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:44:15 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:44:15 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:44:15 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:44:15 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:44:15 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:44:27 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:44:27 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:44:27 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:44:27 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:44:27 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:44:27 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:44:27 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:44:27 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:45:08 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:45:08 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:45:08 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:45:08 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:45:08 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:45:08 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:45:08 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:45:08 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:45:34 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:45:34 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:45:34 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:45:34 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:45:34 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:45:34 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:45:34 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:45:34 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:47:19 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:47:19 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:47:19 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:47:19 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:47:19 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:47:19 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:47:19 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:47:19 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:04 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:04 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:04 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:04 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:04 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:04 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:04 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:04 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:17 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:17 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:17 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:17 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:17 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:17 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:17 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:17 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:33 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:33 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:33 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:33 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:33 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:33 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:33 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:33 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:42 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:42 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:42 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:42 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:42 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:42 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:42 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:42 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:46 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:46 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:46 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:46 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:46 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:46 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:46 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:46 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:54 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:54 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:54 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:54 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:54 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:54 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:54 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:51:54 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:52:22 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:52:22 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:52:22 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:52:22 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:52:22 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:52:22 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:52:22 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:52:22 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 05:54:05 --> Severity: Notice --> Undefined variable: RequistionDetails /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-22 05:54:05 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-22 05:54:05 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-22 05:54:05 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-22 05:54:05 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-22 05:54:14 --> Severity: Notice --> Undefined variable: RequistionDetails /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-22 05:54:14 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-22 05:54:14 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-22 05:54:14 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-22 05:54:14 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-22 05:57:02 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 05:57:15 --> Severity: Notice --> Undefined variable: RequistionDetails /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-22 05:57:15 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-22 05:57:15 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-22 05:57:15 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-22 05:57:15 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-22 06:07:28 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 06:07:35 --> Severity: Notice --> Undefined variable: RequistionDetails /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-22 06:07:35 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-22 06:07:35 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-22 06:07:35 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-22 06:07:35 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-22 06:10:22 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 06:10:32 --> Severity: Notice --> Undefined property: stdClass::$AvlBudAmt /home/kasiram9/public_html/SIA_SIT/application/views/editimportpo.php 1474 -ERROR - 2017-06-22 06:11:33 --> Severity: Warning --> explode() expects parameter 2 to be string, array given /home/kasiram9/public_html/SIA_SIT/application/third_party/dompdf/include/style.cls.php 948 -ERROR - 2017-06-22 06:12:24 --> Severity: Warning --> explode() expects parameter 2 to be string, array given /home/kasiram9/public_html/SIA_SIT/application/third_party/dompdf/include/style.cls.php 948 -ERROR - 2017-06-22 06:14:06 --> Severity: Notice --> Undefined variable: RequistionDetails /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-22 06:14:06 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-22 06:14:06 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-22 06:14:06 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-22 06:14:06 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-22 06:18:33 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 06:18:40 --> Severity: Notice --> Undefined variable: RequistionDetails /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-22 06:18:40 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-22 06:18:40 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-22 06:18:40 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-22 06:18:40 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-22 06:19:53 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 06:19:53 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 06:19:53 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 06:19:53 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 06:19:53 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 06:19:53 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 06:19:53 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 06:19:53 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 06:20:05 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 06:20:05 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 06:20:05 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 06:20:05 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 06:20:05 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 06:20:05 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 06:20:05 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 06:20:05 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 06:20:07 --> Severity: Notice --> Undefined variable: RequistionDetails /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-22 06:20:07 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-22 06:20:07 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-22 06:20:07 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-22 06:20:07 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-22 06:24:15 --> Severity: Notice --> Undefined variable: RequistionDetails /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-22 06:24:15 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-22 06:24:15 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-22 06:24:15 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-22 06:24:15 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-22 06:30:14 --> Severity: Notice --> Undefined variable: RequistionDetails /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-22 06:30:14 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-22 06:30:14 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-22 06:30:14 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-22 06:30:14 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-22 06:34:29 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 06:34:38 --> Severity: Notice --> Undefined variable: RequistionDetails /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-22 06:34:38 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-22 06:34:38 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-22 06:34:38 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-22 06:34:38 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-22 06:40:04 --> Severity: Notice --> Undefined variable: RequistionDetails /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-22 06:40:04 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-22 06:40:04 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-22 06:40:04 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-22 06:40:04 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-22 06:42:44 --> Severity: Notice --> Undefined variable: RequistionDetails /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-22 06:42:44 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-22 06:42:44 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-22 06:42:44 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-22 06:42:44 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-22 06:45:55 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 06:46:09 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 06:48:17 --> Severity: Notice --> Undefined variable: RequistionDetails /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-22 06:48:17 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-22 06:48:17 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-22 06:48:17 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-22 06:48:17 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-22 06:48:21 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 06:49:25 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 06:49:25 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 06:49:25 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 06:49:25 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 06:49:25 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 06:49:25 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 06:49:25 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 06:49:25 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 06:49:35 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 06:49:35 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 06:49:35 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 06:49:35 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 06:49:35 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 06:49:35 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 06:49:35 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 06:49:35 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 06:51:08 --> Severity: Warning --> explode() expects parameter 2 to be string, array given /home/kasiram9/public_html/SIA_SIT/application/third_party/dompdf/include/style.cls.php 948 -ERROR - 2017-06-22 07:10:41 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 07:10:41 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 07:10:41 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 07:10:41 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 07:10:41 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 07:10:41 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 07:10:41 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 07:10:41 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 07:11:27 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 07:11:27 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 07:11:27 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 07:11:27 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 07:11:27 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 07:11:27 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 07:11:27 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 07:11:27 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 07:19:11 --> Severity: Notice --> Undefined variable: RequistionDetails /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-22 07:19:11 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-22 07:19:11 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-22 07:19:11 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-22 07:19:11 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-22 07:22:49 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 07:22:49 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 07:22:49 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 07:22:49 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 07:22:49 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 07:22:49 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 07:22:49 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 07:22:49 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 07:23:33 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 07:23:33 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 07:23:33 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 07:23:33 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 07:23:33 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 07:23:33 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 07:23:33 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 07:23:33 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 07:26:29 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 07:26:49 --> Severity: Notice --> Undefined property: stdClass::$AvlBudAmt /home/kasiram9/public_html/SIA_SIT/application/views/editimportpo.php 1474 -ERROR - 2017-06-22 07:58:55 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 07:59:46 --> Severity: Notice --> Undefined variable: RequistionDetails /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-22 07:59:46 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-22 07:59:46 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-22 07:59:46 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-22 07:59:46 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-22 08:02:24 --> Severity: Notice --> Undefined variable: RequistionDetails /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-22 08:02:24 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-22 08:02:24 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-22 08:02:24 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-22 08:02:24 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-22 08:02:33 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 08:05:26 --> Severity: Notice --> Undefined variable: RequistionDetails /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-22 08:05:26 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-22 08:05:26 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-22 08:05:26 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-22 08:05:26 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-22 08:05:34 --> Severity: Notice --> Undefined variable: RequistionDetails /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-22 08:05:34 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-22 08:05:34 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-22 08:05:34 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-22 08:05:34 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-22 08:05:50 --> Severity: Notice --> Undefined variable: RequistionDetails /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-22 08:05:50 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-22 08:05:50 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-22 08:05:50 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-22 08:05:50 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-22 08:06:01 --> Severity: Notice --> Undefined variable: RequistionDetails /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-22 08:06:01 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-22 08:06:01 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-22 08:06:01 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-22 08:06:01 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-22 08:06:22 --> Severity: Notice --> Undefined variable: RequistionDetails /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-22 08:06:22 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-22 08:06:22 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-22 08:06:22 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-22 08:06:22 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-22 08:06:47 --> Severity: Notice --> Undefined variable: RequistionDetails /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-22 08:06:47 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-22 08:06:47 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-22 08:06:47 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-22 08:06:47 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-22 08:13:44 --> Severity: Notice --> Undefined variable: RequistionDetails /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-22 08:13:44 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-22 08:13:44 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-22 08:13:44 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-22 08:13:44 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-22 22:31:10 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 22:31:53 --> Severity: Notice --> Undefined property: stdClass::$AvlBudAmt /home/kasiram9/public_html/SIA_SIT/application/views/editimportpo.php 1474 -ERROR - 2017-06-22 22:32:08 --> Severity: Notice --> Undefined property: stdClass::$AvlBudAmt /home/kasiram9/public_html/SIA_SIT/application/views/editimportpo.php 1474 -ERROR - 2017-06-22 23:25:19 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:25:19 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:25:19 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:25:19 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:25:19 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:25:19 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:25:19 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:25:19 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:25:33 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:25:33 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:25:33 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:25:33 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:25:33 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:25:33 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:25:33 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:25:33 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:25:44 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:25:44 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:25:44 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:25:44 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:25:44 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:25:44 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:25:44 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:25:44 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:25:51 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:25:51 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:25:51 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:25:51 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:25:51 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:25:51 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:25:51 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:25:51 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:27:28 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:27:28 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:27:28 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:27:28 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:27:28 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:27:28 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:27:28 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:27:28 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:27:45 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:27:45 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:27:45 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:27:45 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:27:45 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:27:45 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:27:45 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:27:45 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-22 23:28:08 --> Severity: Notice --> Undefined variable: RequistionDetails /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-22 23:28:08 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-22 23:28:08 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-22 23:28:08 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-22 23:28:08 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-22 23:28:13 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 23:31:08 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 23:33:20 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 23:33:36 --> Severity: Notice --> Undefined property: stdClass::$AvlBudAmt /home/kasiram9/public_html/SIA_SIT/application/views/editimportpo.php 1474 -ERROR - 2017-06-22 23:33:36 --> Severity: Notice --> Undefined property: stdClass::$AvlBudAmt /home/kasiram9/public_html/SIA_SIT/application/views/editimportpo.php 1474 -ERROR - 2017-06-22 23:37:27 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 23:37:42 --> Severity: Warning --> explode() expects parameter 2 to be string, array given /home/kasiram9/public_html/SIA_SIT/application/third_party/dompdf/include/style.cls.php 948 -ERROR - 2017-06-22 23:40:21 --> Severity: Warning --> explode() expects parameter 2 to be string, array given /home/kasiram9/public_html/SIA_SIT/application/third_party/dompdf/include/style.cls.php 948 -ERROR - 2017-06-22 23:40:58 --> Severity: Warning --> explode() expects parameter 2 to be string, array given /home/kasiram9/public_html/SIA_SIT/application/third_party/dompdf/include/style.cls.php 948 -ERROR - 2017-06-22 23:41:36 --> Severity: Notice --> Undefined property: stdClass::$AvlBudAmt /home/kasiram9/public_html/SIA_SIT/application/views/editimportpo.php 1474 -ERROR - 2017-06-22 23:41:36 --> Severity: Notice --> Undefined property: stdClass::$AvlBudAmt /home/kasiram9/public_html/SIA_SIT/application/views/editimportpo.php 1474 -ERROR - 2017-06-22 23:43:52 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 23:44:06 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 23:44:53 --> Severity: Notice --> Undefined variable: RequistionDetails /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-22 23:44:53 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-22 23:44:53 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-22 23:44:53 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-22 23:44:53 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-22 23:45:19 --> Severity: Warning --> explode() expects parameter 2 to be string, array given /home/kasiram9/public_html/SIA_SIT/application/third_party/dompdf/include/style.cls.php 948 -ERROR - 2017-06-22 23:47:57 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 23:48:05 --> Severity: Warning --> explode() expects parameter 2 to be string, array given /home/kasiram9/public_html/SIA_SIT/application/third_party/dompdf/include/style.cls.php 948 -ERROR - 2017-06-22 23:48:28 --> Severity: Warning --> explode() expects parameter 2 to be string, array given /home/kasiram9/public_html/SIA_SIT/application/third_party/dompdf/include/style.cls.php 948 -ERROR - 2017-06-22 23:49:14 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 23:49:21 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-22 23:57:01 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 diff --git a/application/logs/log-2017-06-23.php b/application/logs/log-2017-06-23.php deleted file mode 100644 index 7ceb3fd8..00000000 --- a/application/logs/log-2017-06-23.php +++ /dev/null @@ -1,101 +0,0 @@ - - -ERROR - 2017-06-23 00:33:18 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 00:33:18 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 00:33:18 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 00:33:18 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 00:33:18 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 00:33:18 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 00:33:18 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 00:33:18 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 00:34:04 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 00:34:04 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 00:34:04 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 00:34:04 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 00:34:04 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 00:34:04 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 00:34:04 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 00:34:04 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 00:35:12 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-23 00:36:53 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-23 00:38:10 --> Severity: Warning --> explode() expects parameter 2 to be string, array given /home/kasiram9/public_html/SIA_SIT/application/third_party/dompdf/include/style.cls.php 948 -ERROR - 2017-06-23 01:08:28 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 01:08:28 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 01:08:28 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 01:08:28 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 01:08:28 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 01:08:28 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 01:08:28 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 01:08:28 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 01:12:35 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 01:12:35 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 01:12:35 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 01:12:35 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 01:12:35 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 01:12:35 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 01:12:35 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 01:12:35 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 01:25:30 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-23 01:26:29 --> Severity: Warning --> explode() expects parameter 2 to be string, array given /home/kasiram9/public_html/SIA_SIT/application/third_party/dompdf/include/style.cls.php 948 -ERROR - 2017-06-23 01:33:09 --> Severity: Warning --> explode() expects parameter 2 to be string, array given /home/kasiram9/public_html/SIA_SIT/application/third_party/dompdf/include/style.cls.php 948 -ERROR - 2017-06-23 01:35:09 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-23 01:35:17 --> Severity: Warning --> explode() expects parameter 2 to be string, array given /home/kasiram9/public_html/SIA_SIT/application/third_party/dompdf/include/style.cls.php 948 -ERROR - 2017-06-23 01:46:52 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 01:46:52 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 01:46:52 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 01:46:52 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 01:46:52 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 01:46:52 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 01:46:52 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 01:46:52 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 01:47:06 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 01:47:06 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 01:47:06 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 01:47:06 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 01:47:06 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 01:47:06 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 01:47:06 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 01:47:06 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 01:53:56 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-23 01:54:26 --> Severity: Warning --> explode() expects parameter 2 to be string, array given /home/kasiram9/public_html/SIA_SIT/application/third_party/dompdf/include/style.cls.php 948 -ERROR - 2017-06-23 01:58:09 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-23 01:58:19 --> Severity: Warning --> explode() expects parameter 2 to be string, array given /home/kasiram9/public_html/SIA_SIT/application/third_party/dompdf/include/style.cls.php 948 -ERROR - 2017-06-23 02:03:04 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 02:03:04 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 02:03:04 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 02:03:04 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 02:03:04 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 02:03:04 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 02:03:04 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 02:03:04 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 02:03:10 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 02:03:10 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 02:03:10 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 02:03:10 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 02:03:10 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 02:03:10 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 02:03:10 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 02:03:10 --> Severity: Notice --> Undefined index: RequisitionStatus /home/kasiram9/public_html/SIA_SIT/application/views/requisitionlistapproval.php 37 -ERROR - 2017-06-23 02:22:09 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-23 02:22:16 --> Severity: Warning --> explode() expects parameter 2 to be string, array given /home/kasiram9/public_html/SIA_SIT/application/third_party/dompdf/include/style.cls.php 948 -ERROR - 2017-06-23 02:42:35 --> Severity: Notice --> Undefined variable: RequistionDetails /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 138 -ERROR - 2017-06-23 02:42:35 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 139 -ERROR - 2017-06-23 02:42:35 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 140 -ERROR - 2017-06-23 02:42:35 --> Severity: Notice --> Undefined variable: MaterialList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 186 -ERROR - 2017-06-23 02:42:35 --> Severity: Notice --> Undefined variable: CostList /home/kasiram9/public_html/SIA_SIT/application/views/alterpurchaseorder.php 214 -ERROR - 2017-06-23 02:52:02 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-23 02:57:58 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-23 02:58:06 --> Severity: Warning --> explode() expects parameter 2 to be string, array given /home/kasiram9/public_html/SIA_SIT/application/third_party/dompdf/include/style.cls.php 948 -ERROR - 2017-06-23 02:59:49 --> Severity: Warning --> explode() expects parameter 2 to be string, array given /home/kasiram9/public_html/SIA_SIT/application/third_party/dompdf/include/style.cls.php 948 -ERROR - 2017-06-23 06:18:40 --> Query error: Column 'LOP_Days' cannot be null -ERROR - 2017-06-23 06:23:57 --> Severity: Notice --> Undefined index: PayOn /home/kasiram9/public_html/SIA_SIT/application/views/payslipgenerate.php 166 -ERROR - 2017-06-23 06:23:57 --> Severity: Notice --> Undefined index: PayOn /home/kasiram9/public_html/SIA_SIT/application/views/payslipgenerate.php 166 -ERROR - 2017-06-23 06:23:57 --> Severity: Notice --> Undefined index: PayOn /home/kasiram9/public_html/SIA_SIT/application/views/payslipgenerate.php 166 -ERROR - 2017-06-23 06:23:57 --> Severity: Notice --> Undefined index: PayOn /home/kasiram9/public_html/SIA_SIT/application/views/payslipgenerate.php 166 -ERROR - 2017-06-23 06:23:57 --> Severity: Notice --> Undefined index: PayOn /home/kasiram9/public_html/SIA_SIT/application/views/payslipgenerate.php 166 -ERROR - 2017-06-23 06:35:04 --> Severity: Notice --> Undefined index: PayOn /home/kasiram9/public_html/SIA_SIT/application/views/payslipgenerate.php 166 -ERROR - 2017-06-23 06:35:04 --> Severity: Notice --> Undefined index: PayOn /home/kasiram9/public_html/SIA_SIT/application/views/payslipgenerate.php 166 -ERROR - 2017-06-23 06:35:04 --> Severity: Notice --> Undefined index: PayOn /home/kasiram9/public_html/SIA_SIT/application/views/payslipgenerate.php 166 -ERROR - 2017-06-23 06:35:04 --> Severity: Notice --> Undefined index: PayOn /home/kasiram9/public_html/SIA_SIT/application/views/payslipgenerate.php 166 -ERROR - 2017-06-23 06:35:04 --> Severity: Notice --> Undefined index: PayOn /home/kasiram9/public_html/SIA_SIT/application/views/payslipgenerate.php 166 -ERROR - 2017-06-23 08:00:50 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 diff --git a/application/logs/log-2017-06-26.php b/application/logs/log-2017-06-26.php deleted file mode 100644 index 11356988..00000000 --- a/application/logs/log-2017-06-26.php +++ /dev/null @@ -1,10 +0,0 @@ - - -ERROR - 2017-06-26 04:07:26 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-26 04:07:35 --> Severity: Warning --> explode() expects parameter 2 to be string, array given /home/kasiram9/public_html/SIA_SIT/application/third_party/dompdf/include/style.cls.php 948 -ERROR - 2017-06-26 04:15:31 --> Severity: Notice --> Undefined property: stdClass::$AvlBudAmt /home/kasiram9/public_html/SIA_SIT/application/views/editimportpo.php 1474 -ERROR - 2017-06-26 04:19:04 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-26 04:40:55 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-26 04:42:29 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-26 06:25:28 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 -ERROR - 2017-06-26 06:31:23 --> Severity: Warning --> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given /home/kasiram9/public_html/SIA_SIT/system/database/drivers/mysqli/mysqli_result.php 38 diff --git a/application/models/assetdetails_model.php b/application/models/assetdetails_model.php deleted file mode 100644 index ba9bf629..00000000 --- a/application/models/assetdetails_model.php +++ /dev/null @@ -1,137 +0,0 @@ -db->select('*'); - $this->db->from('T_Asset_Details'); - - - $query = $this->db->get(); - - $result = $query->result(); - return $result; - } - - - function getDepartment($Department = '') - { - $this->db->select('DEPCode,DepartmentName'); - $this->db->from('T_DepartmentDetails'); - $this->db->where('IsActive',1 ); - if($Department != '') - { - $this->db->where('DEPCode !=',$Department ); - } - $query = $this->db->get(); - - return $query->result(); - } - - function getSupplierName($SupplierID = '') - { - $this->db->select('SupplierID, SupplierName'); - $this->db->from('T_SupplierDetailsN'); - $this->db->where('IsActive',1 ); - if($SupplierID != '') - { - $this->db->where('SupplierID !=',$SupplierID ); - } - $query = $this->db->get(); - - return $query->result(); - } - - /** - * This function is used to get the Config value from configuration table - * @return array $result : This is result of the query - */ - function getConfigValue($ConfigID ,$ConfigValue = '') - { - - $this->db->select('ConfigValue'); - $this->db->from('T_ConfigDetails'); - $this->db->where('Config_id ',$ConfigID ); - if($ConfigValue != '') - { - $this->db->where('ConfigValue != ',$ConfigValue ); - } - $query = $this->db->get(); - - return $query->result(); - } - - /** - * This function used to get user information by id - * @param number $userId : This is user id - * @return array $result : This is user information - */ - -function addNewasset($asset) - { - $this->db->trans_start(); - $this->db->insert('T_Asset_Details', $asset); - - $Asset_Code = $this->db->insert_id(); - - $this->db->trans_complete(); - - return $Asset_Code; - } - - /** - * This function used to get Asset details by Asset Code - * @param number $Asset_Code : This is AssetCode - * @return array $result : This is Asset information - */ - function getAssetDetails($Asset_Code) - { - //echo $Asset_Code; - $this->db->select('Asset.*,Dep.DepartmentName as DepartmentName,Supp.SupplierName as SupplierName'); - $this->db->from('T_Asset_Details Asset'); - $this->db->join('T_DepartmentDetails Dep', 'Asset.DEPCode = Dep.DEPCode','left'); - $this->db->join('T_SupplierDetailsN Supp', 'Asset.SupplierCode = Supp.SupplierID','left'); - $this->db->where('Asset.AssetCode', $Asset_Code); - - - $query = $this->db->get(); - // print_r($this->db->last_query()); - return $query->result(); - } - function editasset($asset, $Asset_Code) - { - $this->db->where('AssetCode', $Asset_Code); - $this->db->update('T_Asset_Details', $asset); - //print_r($this->db->last_query()); - return TRUE; - } - - - function viewasset($asset, $Asset_Code) - { - $this->db->where('AssetCode', $Asset_Code); - $this->db->update('T_Asset_Details', $asset); - - return TRUE; - } - function export_excel(){ - - $this->db->select('det.*,dep.DepartmentName as DEPCode,emp.firstname,emp1.firstname as Updated_By'); - $this->db->join('tbl_users as tbl',' det.createdby = tbl.userid','left'); - $this->db->join('T_DepartmentDetails as dep','dep.DEPCode=det.DEPCode'); - $this->db->join('T_Employee_Details as emp', 'emp.empid=tbl.empid','left'); - $this->db->join('tbl_users as tbl1',' det.UpdatedBy = tbl1.userid','left'); - $this->db->join('T_Employee_Details as emp1', 'emp1.empid=tbl1.empid','left'); - return $this->db->get('T_Asset_Details as det')->result_array(); - } -} -?> \ No newline at end of file diff --git a/application/models/costcenter_model.php b/application/models/costcenter_model.php deleted file mode 100644 index ebb5f2a8..00000000 --- a/application/models/costcenter_model.php +++ /dev/null @@ -1,347 +0,0 @@ -db->select('Cost.CostCenterCode as code,Cost.CostCenterName as CostCenterName , Cost.ApprovedBy as ApprovedBy,Emp.FirstName as FirstName,Emp.Designation as Designation '); - $this->db->from('T_CostCenter_Master as Cost'); - $this->db->join('T_Employee_Details as Emp', 'Emp.EmpID=Cost.ApprovedBy'); - - - $query = $this->db->get(); - $result = $query->result(); - - return $result; - } - /** - * This function used to get user information by id - * @param number $userId : This is user id - * @return array $result : This is user information - */ - -function addNewcost($Cost) - { - $this->db->trans_start(); - $this->db->insert('T_CostCenter_Master', $Cost); - - $insert_id = $this->db->affected_rows(); - - $this->db->trans_complete(); - - return $insert_id; - } - - - function addCostCenterDepartment($Dept) - { - $this->db->trans_start(); - $this->db->insert('T_CostCenter_Departments', $Dept); - - $insert_id = $this->db->affected_rows(); - - $this->db->trans_complete(); - // print_r( $this->db->last_query()); - return $insert_id; - } - - - function addBudget($Budget) - { - $this->db->trans_start(); - $this->db->insert('T_CostCenter_Budget', $Budget); - - $insert_id = $this->db->affected_rows(); - - $this->db->trans_complete(); - // print_r( $this->db->last_query()); - return $insert_id; - } - - function getApproverName() - { - $this->db->select('EmpID,FirstName,LastName,Designation'); - $this->db->from('T_Employee_Details'); - $this->db->where('Departmentcode ', 'DEP10'); - - $query = $this->db->get(); - - return $query->result(); - } - - /** - * This function used to get user information by id - * @param number $userId : This is user id - * @return array $result : This is user information - */ - function getuserInfo($CostCenterID) - { - $this->db->select('CostCentreID, CostName,Description,CreatedDate'); - $this->db->from('T_CostCentre'); - - $this->db->where('CostCentreID', $CostCenterID); - $query = $this->db->get(); - - return $query->result(); - } - /** - * This function used to get Cost center Master information by Cost center ID - * @param number $CostCenterCode : CostCenterCode as Parameter - * @return array $result : This is user information - */ - function GetCostCenterMaster($CostCenterCode) - { - $this->db->select('Cost.CostCenterCode,Cost.CostCenterName,Cost.ApprovedBy,emp.FirstName,emp.Designation,max(BudgetYear) as BudYear' ); - $this->db->from('T_CostCenter_Master Cost'); - $this->db->join('T_Employee_Details emp', 'emp.EmpID = Cost.ApprovedBy'); - $this->db->join('T_CostCenter_Budget Bud', ' Bud.CostCenterCode = Cost.CostCenterCode'); - $this->db->where('Cost.CostCenterCode', $CostCenterCode); - $query = $this->db->get(); - - return $query->result(); - } - - /** - * This function used to get Cost center Department information by Cost center ID - * @param number $CostCenterCode : CostCenterCode as Parameter - * @return array $result : This is user information - */ - function GetCostCenterDepartment($CostCenterCode) - { - $this->db->select('Dept.DEPCode,Det.DepartmentName'); - $this->db->from('T_CostCenter_Departments Dept'); - $this->db->join('T_DepartmentDetails Det', 'Det.DEPCode = Dept.DEPCode'); - - $this->db->where('Dept.CostCenterCode', $CostCenterCode); - $query = $this->db->get(); - - return $query->result(); - } - /** - * This function used to get Cost center Budget information by Cost center ID - * @param number $CostCenterCode : CostCenterCode as Parameter - * @return array $result : This is user information - */ - function GetBudgetYear($CostCenterCode) - { - - $subQuery = 'select BudgetYear from T_CostCenter_Budget where CostCenterCode=? '; - - - $query = $this->db->query($subQuery, array($CostCenterCode)); - - return $query->result(); - } - /** - * This function used to get Cost center Budget information by Cost center ID - * @param number $CostCenterCode : CostCenterCode as Parameter - * @return array $result : This is user information - */ - function GetCostCenterBudget($CostCenterCode) - { - - $subQuery = 'select BudgetType,BudgetYear,BudgetAmount,Remarks from T_CostCenter_Budget where CostCenterCode=? and - BudgetYear=(select max(BudgetYear) from T_CostCenter_Budget where CostCenterCode=?)'; - - - $query = $this->db->query($subQuery, array($CostCenterCode,$CostCenterCode)); - - return $query->result(); - } - /** - * This function used to get Cost center Budget information by Cost center ID - * @param number $CostCenterCode : CostCenterCode as Parameter - * @return array $result : This is user information - */ - function GetCostBudgetTypeByYear($CostCenterCode,$ConfigID,$Year) - { - - $subQuery = 'select ConfigValue from T_ConfigDetails Bud where ConfigValue not in - (select BudgetType from T_CostCenter_Budget where CostCenterCode=? and BudgetYear=?) and Config_ID=? '; - - $query = $this->db->query($subQuery, array($CostCenterCode,$Year,$ConfigID)); - - - return $query->result_array(); - - } - /** - * This function used to get Cost center Budget information by Cost center ID - * @param number $CostCenterCode : CostCenterCode as Parameter - * @return array $result : This is user information - */ - function GetCostCenterBudgetByYear($CostCenterCode,$Year) - { - - $subQuery = 'select BudgetType,BudgetYear,BudgetAmount,Remarks from T_CostCenter_Budget where CostCenterCode=? and - budgetyear=?'; - - - $query = $this->db->query($subQuery, array($CostCenterCode,$Year)); - - return $query->result_array(); - } - - /** - * This function used to Department list which is not available in the Costcenter master - * @param number $CostCenterCode : CostCenterCode as Parameter - * @return array $result : This is user information - */ - function GetDepartmentNotinCostCenter($CostCenterCode) - { - - $subQuery = 'select Dept.DEPCode,Dept.DepartmentName from T_DepartmentDetails Dept - where Dept.DEPCode not in - (select DEPCode from T_CostCenter_Departments where CostCenterCode=?) order by Dept.DEPCode asc'; - - $query = $this->db->query($subQuery, array($CostCenterCode)); - - - return $query->result(); - } - - - /** - * This function used to Department list which is not available in the Costcenter master - * @param number $CostCenterCode : CostCenterCode as Parameter - * @return array $result : This is user information - */ - function GetBudgetTypeNotinCostCenter($CostCenterCode,$ConfigID) - { - - $subQuery = 'select ConfigValue from T_ConfigDetails Bud where ConfigValue not in - (select BudgetType from T_CostCenter_Budget where CostCenterCode=? and BudgetYear=(select max(BudgetYear) from T_CostCenter_Budget)) and Config_ID=?'; - - $query = $this->db->query($subQuery, array($CostCenterCode,$ConfigID)); - - // print_r($this->db->last_query()); - - return $query->result(); - } - - function EditCost($Cost,$CostCenterCode) - { - $this->db->where('CostCenterCode', $CostCenterCode); - - $this->db->update('T_CostCenter_Master', $Cost); - - return TRUE; - } - - - function EditBudget($Budget) - { - $this->db->trans_start(); - $this->db->insert('T_CostCenter_Budget', $Budget); - - $insert_id = $this->db->affected_rows(); - - $this->db->trans_complete(); - // print_r( $this->db->last_query()); - return $insert_id; - } - - function DeleteBudget($BudgetType='',$BudgetYear='',$CostCenterCode ='') - { - $this->db->where("BudgetType", $BudgetType); - $this->db->where("BudgetYear", $BudgetYear); - $this->db->where("CostCenterCode", $CostCenterCode); - $this->db->delete('T_CostCenter_Budget'); - //print_r( $this->db->last_query()); - } - - function DeleteDepartment($DepCode='',$CostCode='') - { - $this->db->where("DEPCode", $DepCode); - $this->db->where("CostCenterCode", $CostCode); - $this->db->delete('T_CostCenter_Departments'); - //print_r( $this->db->last_query()); - } - - function checkDeptCostExists($DepCode='',$CostCode='') - { - $this->db->select('CostCenterCode,DEPCode'); - $this->db->from('T_CostCenter_Departments'); - $this->db->where('DEPCode',$DepCode); - $this->db->where('CostCenterCode',$CostCode); - - $query = $this->db->get(); - - if ($query->num_rows > 0) { - return $query->result_array(); - } - } - function checkCostDetailsExists($Code='',$CostName='') - { - $this->db->select('CostCenterCode'); - $this->db->from('T_CostCenter_Master'); - $this->db->where('CostCenterCode',$Code); - if ($CostName != '') - { - $this->db->where('CostCenterName !=',$CostName); - } - $query = $this->db->get(); - - if ($query->num_rows > 0) { - return $query->result_array(); - } - } - /* *//** - * This function is used to get the Department details from T_DepartmentDetails - * @return array $result : This is result of the query - */ - function getDepartment() - { - $this->db->select('DEPCode, DepartmentName'); - $this->db->from('T_DepartmentDetails'); - $this->db->where('IsActive =', 1); - $query = $this->db->get(); - - return $query->result(); - } - /** - * This function is used to get the Config value from configuration table - * @return array $result : This is result of the query - */ - function getConfigValue($ConfigID ) - { - - $this->db->select('ConfigValue'); - $this->db->from('T_ConfigDetails'); - $this->db->where('Config_id ',$ConfigID ); - $query = $this->db->get(); - - return $query->result(); - } - - function export_excel(){ - - - - $this->db->select('Mas.*,bud.*,part.DepartmentName,emp.firstname,emp1.firstname as Updated_By'); - $this->db->select('sum(if(budgettype="CAPITAL",budgetamount,0)) as capital',FALSE); - $this->db->select('sum(if(budgettype="REVENUE",budgetamount,0)) as revenue',FALSE); - $this->db->select('sum(if(budgettype="SERVICE",budgetamount,0)) as service',FALSE); - $this->db->select('sum(if(budgettype="IMPORT",budgetamount,0)) as import',FALSE); - - $this->db->join('T_CostCenter_Budget as Mas',' Mas.CostCenterCode=bud.CostCenterCode','left'); - $this->db->join('T_CostCenter_Departments as dep',' dep.CostCenterCode=Mas.CostCenterCode','left'); - $this->db->join('T_DepartmentDetails as part','part.DEPCode=dep.DEPCode','left'); - $this->db->group_by('bud.CostCenterCode'); - $this->db->join('tbl_users as tbl',' bud.createdby = tbl.userid','left'); - $this->db->join('T_Employee_Details as emp', 'emp.empid=tbl.empid','left'); - $this->db->join('tbl_users as tbl1',' bud.UpdatedBy = tbl1.userid','left'); - $this->db->join('T_Employee_Details as emp1', 'emp1.empid=tbl1.empid','left'); - return $this->db->get('T_CostCenter_Master as bud')->result_array(); - - } -} -?> \ No newline at end of file diff --git a/application/models/employeedetails_model.php b/application/models/employeedetails_model.php deleted file mode 100644 index 776b62bc..00000000 --- a/application/models/employeedetails_model.php +++ /dev/null @@ -1,171 +0,0 @@ -db->select(' Emp.*,Dep.DepartmentName as DepartmentName'); - $this->db->from('T_Employee_Details Emp'); - - $this->db->join('T_DepartmentDetails Dep', 'Emp.Departmentcode = Dep.DEPCode','left'); - - - - $this->db->order_by("Emp.EmpID", "asc"); - - $query = $this->db->get(); - - $result = $query->result(); - return $result; - } - - - function getUserRoles() - { - $this->db->select('roleId, role'); - $this->db->from('tbl_roles'); - $this->db->where('roleId !=', 1); - $query = $this->db->get(); - - return $query->result(); - } - - /** - * This function is used to get the Config value from configuration table - * @return array $result : This is result of the query - */ - function getConfigValue($ConfigID ) - { - - $this->db->select('ConfigValue'); - $this->db->from('T_ConfigDetails'); - $this->db->where('Config_id ',$ConfigID ); - $query = $this->db->get(); - - return $query->result(); - } - - /* *//** - * This function is used to get the Department details from T_DepartmentDetails - * @return array $result : This is result of the query - */ - function getDepartment() - { - $this->db->select('DEPCode, DepartmentName'); - $this->db->from('T_DepartmentDetails'); - $this->db->where('IsActive =', 1); - $query = $this->db->get(); - - return $query->result(); - } - /** - * This function used to get user information by id - * @param number $userId : This is user id - * @return array $result : This is user information - */ - -function addNewemployee($Employee) - { - - $this->db->insert('T_Employee_Details', $Employee); - - $EmpID = $this->db->affected_rows(); - - return $EmpID; - } - - - function UpdateEmployee($Emp, $EmpID) - { - //echo $EmpID; - $this->db->where('EmpID', $EmpID); - $this->db->update('T_Employee_Details', $Emp); - //print_r($this->db->last_query()); - return TRUE; - } - - - function viewemployee( $EmpID) - { - $this->db->select('Emp.*,Dep.DepartmentName as DepartmentName'); - $this->db->from('T_Employee_Details AS Emp'); - $this->db->join('T_DepartmentDetails Dep', 'Emp.Departmentcode = Dep.DEPCode','left'); - $this->db->where('Emp.EmpID', $EmpID); - $query = $this->db->get(); - - $result = $query->result(); - - // print_r($this->db->last_query()); - return $result; - } - - /* This function to get the Employee department on respective Employee */ - function GetEmployeeDepartment($EmployeeID) - { - $this->db->select('DepartmentName'); - $this->db->from('T_EmployeeDetails'); - $this->db->where($EmployeeID); - $query = $this->db->get(); - return $query->result_array(); - } - - function checkMailExists($email='',$Empid='') - { - $this->db->select('EmailId'); - $this->db->from('T_Employee_Details'); - $this->db->where('EmailId',$email); - if ($Empid != '') - { - $this->db->where('EmpID !=',$Empid); - } - $query = $this->db->get(); - //print_r($this->db->last_query()); - if ($query->num_rows > 0) { - return $query->result_array(); - } - } - - function checkPhotoExists($Pic) - { - $this->db->select('ProfilePic'); - $this->db->from('T_Employee_Details'); - $this->db->where($Pic); - - $query = $this->db->get(); - // print_r($this->db->last_query()); - if ($query->num_rows > 0) { - return $query->result_array(); - } - } -function getEmployeeCount( ) - { - - $this->db->select('count(*) as EmpCount'); - $this->db->from('T_Employee_Details'); - $this->db->where('IsActive ',1 ); - $query = $this->db->get(); - return $query->result(); - } - - function export_excel(){ - - $this->db->select(' det.*,Dep.DepartmentName as DepartmentName,det.firstname,emp1.firstname as UpdatedBy'); - $this->db->join('T_DepartmentDetails Dep', 'det.Departmentcode = Dep.DEPCode','left'); - $this->db->join('tbl_users as tbl',' det.createdby = tbl.userid','left'); - $this->db->join('T_Employee_Details as emp', 'emp.empid=tbl.empid','left'); - $this->db->join('tbl_users as tbl1',' det.UpdatedBy = tbl1.userid','left'); - $this->db->join('T_Employee_Details as emp1', 'emp1.empid=tbl1.empid','left'); - return $this->db->get('T_Employee_Details as det')->result_array(); - } -} -?> \ No newline at end of file diff --git a/application/models/emppaydate_model.php b/application/models/emppaydate_model.php deleted file mode 100644 index 94f8312a..00000000 --- a/application/models/emppaydate_model.php +++ /dev/null @@ -1,125 +0,0 @@ -db->select('*'); - $this->db->from('T_Emp_Pay_Data'); - - - if(!empty($searchText)) { - $likeCriteria = "(Pay_Data_ID LIKE '%".$searchText."%' - OR EmpID LIKE '%".$searchText."%' - OR Basic_Pay LIKE '%".$searchText."%' - OR HRA_Rate LIKE '%".$searchText."%' - OR OT_Rate LIKE '%".$searchText."%' - OR Allowances LIKE '%".$searchText."%' - OR PF_Rate LIKE '%".$searchText."%' - OR ESI_Rate LIKE '%".$searchText."%' - OR is_Active LIKE '%".$searchText."%' - OR Food_Allowances LIKE '%".$searchText."%' - - )"; - $this->db->where($likeCriteria); - } - //$this->db->where('BaseT.userId !=', 1); - $query = $this->db->get(); - - return count($query->result()); - } - /** - * This function is used to get the user listing count - * @param string $searchText : This is optional search text - * @param number $page : This is pagination offset - * @param number $segment : This is pagination limit - * @return array $result : This is result - */ - - - function emppayListing($searchText = '', $page, $segment) - { - $this->db->select('*'); - $this->db->from('T_Emp_Pay_Data'); - - - if(!empty($searchText)) { - $likeCriteria = "(Pay_Data_ID LIKE '%".$searchText."%' - OR EmpID LIKE '%".$searchText."%' - OR Basic_Pay LIKE '%".$searchText."%' - OR HRA_Rate LIKE '%".$searchText."%' - OR OT_Rate LIKE '%".$searchText."%' - OR Allowances LIKE '%".$searchText."%' - OR PF_Rate LIKE '%".$searchText."%' - OR ESI_Rate LIKE '%".$searchText."%' - OR is_Active LIKE '%".$searchText."%' - OR Food_Allowances LIKE '%".$searchText."%' - - )"; - $this->db->where($likeCriteria); - } - - $this->db->limit($page, $segment); - $query = $this->db->get(); - - $result = $query->result(); - return $result; - } - - - - - function addNewemppay($emppay) - { - $this->db->trans_start(); - $this->db->insert('T_Emp_Pay_Data', $emppay); - - $paydataid = $this->db->insert_id(); - - $this->db->trans_complete(); - - return $emppay; - } - function getUserInfo($paydataid) - { - $this->db->select(); - $this->db->from('T_Emp_Pay_Data'); - //$this->db->where('isDeleted', 0); - //$this->db->where('roleId !=', 1); - $this->db->where('Pay_Data_ID', $paydataid); - $query = $this->db->get(); - - return $query->result(); - } - - - function editemppay($emppaydatas) - { - - $paydateid=$emppaydatas['Pay_Data_ID']; - - $this->db->where('Pay_Data_ID' ,$paydateid); - $this->db->update('T_Emp_Pay_Data',$emppaydatas); - - return TRUE; - } - - - function viewemppay($emppaydata, $paydateid) - { - $this->db->where('Pay_Data_ID', $paydateid); - $this->db->update('T_Emp_Pay_Data', $emppaydata); - - return TRUE; - } - - -} -?> diff --git a/application/models/index.html b/application/models/index.html deleted file mode 100644 index c942a79c..00000000 --- a/application/models/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - 403 Forbidden - - - -

    Directory access is forbidden.

    - - - \ No newline at end of file diff --git a/application/models/inwardgateregister_model.php b/application/models/inwardgateregister_model.php deleted file mode 100644 index e8a79a57..00000000 --- a/application/models/inwardgateregister_model.php +++ /dev/null @@ -1,133 +0,0 @@ -db->select('igr.*,igrd.*,POM.DeliveryDate,sup.SupplierName,MM.MaterialName'); - $this->db->from('T_IGR_Master igr'); - $this->db->join('T_IGR_Details igrd','igrd.IGRNO = igr.IGRNO','left'); - $this->db->join('T_PurchaseOrder_Master POM ', 'igr.PONO = POM.PONO','left'); - $this->db->join('T_SupplierDetailsN sup', 'POM.SupplierID = sup.SupplierID','left'); - $this->db->join('T_PurchaseOrder_LineItem POL', 'POL.PONO = igr.PONO','left'); - $this->db->join('T_MaterialMaster MM', 'MM.MaterialCode = igrd.MaterialCode','left'); - $this->db->group_by('igr.IGRNO',$IGRNO); - - - - $query = $this->db->get(); - //print_r( $this->db->last_query()); - $result = $query->result(); - return $result; - } - - function getpurchaseorder($pono='') - { - $this->db->select('POM.PONO,POM.ServiceDescription,POM.DeliveryDate,sup.SupplierName,sup.Address'); - $this->db->from('T_PurchaseOrder_Master POM'); - $this->db->join('T_SupplierDetailsN sup', 'POM.SupplierID = sup.SupplierID','left'); - $this->db->where('status',"ST026",$pono); - - //$this->db->join('T_PurchaseOrder_LineItem POL', 'POL.PONO = POM.PONO','left'); - //$this->db->join('T_MaterialMaster MM', 'MM.MaterialCode = POL.MaterialCode','left'); - //$this->db->where('PONO',$pono="PO0002" ); - $query = $this->db->get(); - - $result = $query->result(); - //print_r($result); - //$this->db->last_query(); - return $result; - } - - - function viewpurchaseorder($PO) - { - - $this->db->select('POM.PONO,POL.MaterialCode,POL.Quantity,POL.PONO,MM.MaterialName,MM.UOM'); - $this->db->from('T_PurchaseOrder_Master POM'); - //$this->db->join('T_SupplierDetailsN sup', 'POM.SupplierID = sup.SupplierID','left'); - $this->db->join('T_PurchaseOrder_LineItem POL', 'POL.PONO = POM.PONO','left'); - $this->db->join('T_MaterialMaster MM', 'MM.MaterialCode = POL.MaterialCode','left'); - $this->db->where('POM.PONO',$PO ); - - //$this->db->where('PONO', $PO); - $query = $this->db->get(); - - $result = $query->result(); - - $this->db->last_query(); - return $result; - } - function addigrM($igrM) - { - - $this->db->trans_start(); - $this->db->insert('T_IGR_Master', $igrM); - $insert_id = $this->db->affected_rows(); - $this->db->trans_complete(); - // print_r($this->db->last_query()); - //print_r($insert_id); - if($insert_id>0) - { - $subQuery = 'select max(IGRNO) as IGRNO from T_IGR_Master'; - - $query = $this->db->query($subQuery); - - return $query->result_array(); - } - } - - function addigrD($igrD) - { - $this->db->trans_start(); - $this->db->insert('T_IGR_Details', $igrD); - $insert_id = $this->db->affected_rows(); - $this->db->trans_complete(); - // print_r($this->db->last_query()); - if($insert_id>0) - { - $subQuery = 'select max(IGRItemNo) as IGRItemNo from T_IGR_Details'; - - $query = $this->db->query($subQuery); - - return $query->result_array(); - } - } - function viewigr($IGRNO) - { - - $this->db->select('igr.*,igrd.*,MM.MaterialName,MM.UOM,sup.Address,sup.SupplierName,POM.ServiceDescription,POL.Quantity'); - $this->db->from('T_IGR_Master igr'); - $this->db->join('T_IGR_Details igrd','igrd.IGRNO = igr.IGRNO','left'); - $this->db->join('T_PurchaseOrder_Master POM','igr.PONO = POM.PONO','left'); - $this->db->join('T_PurchaseOrder_LineItem POL','POL.PONO = POM.PONO','left'); - - $this->db->join('T_SupplierDetailsN sup', 'sup.SupplierID = POM.SupplierID','left'); - - $this->db->join('T_MaterialMaster MM', 'MM.MaterialCode = igrd.MaterialCode','left'); - $this->db->order_by('igr.IGRNO'); - $this->db->where('igr.IGRNO',$IGRNO); - - - - $query = $this->db->get(); - //print_r( $this->db->last_query()); - $result = $query->result(); - return $result; - } -} \ No newline at end of file diff --git a/application/models/login_model.php b/application/models/login_model.php deleted file mode 100644 index 69ea4953..00000000 --- a/application/models/login_model.php +++ /dev/null @@ -1,37 +0,0 @@ -db->select('BaseTbl.userId, BaseTbl.password, Emp.EmpID,Emp.FirstName,Emp.Designation, BaseTbl.roleId, Roles.role,DEPT.DEPCode,DEPT.DepartmentName,DEPT.HeadDept'); - $this->db->from('tbl_users as BaseTbl'); - $this->db->join('tbl_roles as Roles','Roles.roleId = BaseTbl.roleId'); - $this->db->join('T_Employee_Details as Emp','BaseTbl.EmpID = Emp.EmpID'); - $this->db->join('T_DepartmentDetails as DEPT','Emp.Departmentcode = DEPT.DEPCode'); - $this->db->where('BaseTbl.email', $email); - $this->db->where('BaseTbl.isDeleted', 0); - $query = $this->db->get(); - - - $user = $query->result(); - - if(!empty($user)){ - if(verifyHashedPassword($password, $user[0]->password)){ - return $user; - } else { - return array(); - } - } else { - return array(); - } - } -} - -?> diff --git a/application/models/monthlypay_model.php b/application/models/monthlypay_model.php deleted file mode 100644 index f3c63dad..00000000 --- a/application/models/monthlypay_model.php +++ /dev/null @@ -1,123 +0,0 @@ -db->select('*'); - $this->db->from('T_Monthly_Pay_Inputs'); - - - if(!empty($searchText)) { - $likeCriteria = "(Month_Year LIKE '%".$searchText."%' - OR EmpID LIKE '%".$searchText."%' - OR LOP_Days LIKE '%".$searchText."%' - OR OT_Hrs_Worked LIKE '%".$searchText."%' - OR Loan_Recovered LIKE '%".$searchText."%' - OR Loan_Balance LIKE '%".$searchText."%' - OR Incentives LIKE '%".$searchText."%' - OR Other_Deductions LIKE '%".$searchText."%' - - - )"; - $this->db->where($likeCriteria); - } - //$this->db->where('BaseT.userId !=', 1); - $query = $this->db->get(); - - return count($query->result()); - } - /** - * This function is used to get the user listing count - * @param string $searchText : This is optional search text - * @param number $page : This is pagination offset - * @param number $segment : This is pagination limit - * @return array $result : This is result - */ - function monthlyListing($searchText = '', $page, $segment) - { - $this->db->select('*'); - $this->db->from('T_Monthly_Pay_Inputs'); - $this->db->order_by("Month_Year", "desc"); - - - if(!empty($searchText)) { - $likeCriteria = "(Month_Year LIKE '%".$searchText."%' - OR EmpID LIKE '%".$searchText."%' - OR LOP_Days LIKE '%".$searchText."%' - OR OT_Hrs_Worked LIKE '%".$searchText."%' - OR Loan_Recovered LIKE '%".$searchText."%' - OR Loan_Balance LIKE '%".$searchText."%' - OR Incentives LIKE '%".$searchText."%' - OR Other_Deductions LIKE '%".$searchText."%' - - )"; - $this->db->where($likeCriteria); - } - - $this->db->limit($page, $segment); - $query = $this->db->get(); - - $result = $query->result(); - return $result; - } - - - -function addNewmonthlisting($m_list) - { - $this->db->trans_start(); - $this->db->insert('T_Monthly_Pay_Inputs', $asset); - - $Asset_Code = $this->db->insert_id(); - - $this->db->trans_complete(); - - return $m_list; - } - function getUserInfo($EmpID,$month_year) - { - $this->db->select('Month_Year, EmpID, LOP_Days, OT_Hrs_Worked, Loan_Recovered, Loan_Balance, Incentives, Other_Deductions, Created_By, Created_Time, Last_Mod_By, Last_Mod_Time'); - $this->db->from('T_Monthly_Pay_Inputs'); - //$this->db->where('isDeleted', 0); - //$this->db->where('roleId !=', 1); - $this->db->where('EmpID', $EmpID); - $this->db->where('Month_Year', $month_year); - $query = $this->db->get(); - - return $query->result(); - } - - - function editmonth($monthdata, $EmpID) - { - $monthyear=$monthdata['Month_Year']; - - - //$this->db->where('EmpID',$employeeid); - $this->db->where('EmpID' ,$EmpID); - //$this->db->where('Month_Year' ,$EmpID); - $this->db->where('Month_Year',$monthyear); - $this->db->update('T_Monthly_Pay_Inputs',$monthdata); - - return TRUE; - } - - - function viewmonth($monthdata, $employeeid) - { - $this->db->order_by('Month_Year'); - $this->db->where('EmpID', $employeeid); - $this->db->update('T_Monthly_Pay_Inputs', $monthdata); - - return TRUE; - } - - -} -?> diff --git a/application/models/payroll_model.php b/application/models/payroll_model.php deleted file mode 100644 index 665a6a76..00000000 --- a/application/models/payroll_model.php +++ /dev/null @@ -1,240 +0,0 @@ -db->insert('T_Payroll_File', $FileDetails); - - $Payon = $this->db->affected_rows(); - - return $Payon; - } - - function model_sp($payon,$employee){ - - //echo ""; - //echo "highlight_file(filename)"; - //die(); - $result=$this->db->query("call P_FINAL_PAYROLL_DATA('".$payon."','".$employee."')") or die(mysql_error()); - //$result->next_result(); - - return $result; - - - - } - /** - * This function is used to update the File details in which is already exists in the database - * @FileDetails array : This will have the set of value which we need to insert into database - * @return number boolean: success of the updation - */ - function UpdateFileName($FileDetails, $PayOn) - { - //echo $EmpID; - $this->db->where('PayOn', $PayOn); - $this->db->update('T_Payroll_File', $FileDetails); - //print_r($this->db->last_query()); - return TRUE; - } - /** - * This function is used to check the File details is already exists in the database or not - * @FileDetails array : This will have the set of value which we need to insert into database - * @return number boolean: success of the updation - */ - function checkFileDetailsExists($PayOn) - { - $this->db->select('PayOn'); - $this->db->from('T_Payroll_File'); - $this->db->where('PayOn',$PayOn); - - $query = $this->db->get(); - // print_r($this->db->last_query()); - if ($query->num_rows > 0) { - return $query->result(); - } - } - - function checkFileDetailsExists2($PayOn,$EmpId) - { - //echo $EmpId; - //die(); - $this->db->select('Month_Year','EmpID'); - $this->db->from('T_Monthly_Pay_Inputs'); - $this->db->where('EmpID',$EmpId); - $this->db->where('Month_Year',$PayOn); - - - $query = $this->db->get(); - // print_r($this->db->last_query()); - if ($query->num_rows > 0) { - //echo "success"; - //return $query->result(); - return TRUE; - } - else{ - //echo "fail"; - return FALSE; - } - } - /** - * This function is used to insert the File data in database - * @FileDetails array : This will have the set of value which we need to insert into database - * @return number $Payon : Insert row count will be the return value - */ - function UploadFileData($FileData) - { - $this->db->insert('T_Payroll', $FileData); - - $Payon = $this->db->affected_rows(); - //print_r($this->db->last_query()); - return $Payon; - } - - function UploadFileData2($FileData) - { - $this->db->insert('T_Monthly_Pay_Inputs', $FileData); - - $Payon = $this->db->affected_rows(); - //print_r($this->db->last_query()); - return $Payon; - } - - /** - * This function is used to update the File details in which is already exists in the database - * @FileDetails array : This will have the set of value which we need to insert into database - * @return number boolean: success of the updation - */ - function UpdateFiledata($FileData, $PayOn,$EmpId) - { - //echo $EmpID; - $this->db->where('PayOn', $PayOn); - $this->db->where('EmpID', $EmpId); - $this->db->update('T_Payroll', $FileData); - //print_r($this->db->last_query()); - //print_r($this->db->last_query()); - return TRUE; - } - - /** - * This function is used to get the data details in which is already exists in the database - * @FileDetails array : This will have the set of value which we need to insert into database - * @return number boolean: success of the updation - */ - function GetPayslipdata($PayOn='',$EmpId='') - { - $this->db->select('Pay.*,payfile.TotalNoofDays as TotalNoofDays ,Emp.FirstName as FName ,Emp.LastName as Lname,Emp.DateofBirth as Dob,Emp.PANNo as Pan,Emp.BankBranchName as BankName,Emp.IFSCCode as IFSCCode,Emp.DateofJoining as DOJ,Emp.Designation as Designation,Dep.DepartmentName as DeptName'); - $this->db->from('T_Payroll Pay'); - $this->db->join('T_Payroll_File payfile', 'Pay.PayOn = payfile.PayOn'); - $this->db->join('T_Employee_Details Emp', 'Pay.EmpID = Emp.EmpID'); - $this->db->join('T_DepartmentDetails Dep', 'Emp.Departmentcode = Dep.DEPCode'); - $this->db->where('Pay.PayOn', $PayOn); - if($EmpId != '') - { - $this->db->where('Pay.EmpID', $EmpId); - } - - $this->db->order_by("Pay.EmpID", "asc"); - - $query = $this->db->get(); - - return $query->result(); - } - - /* *//** - * This function is used to get the PayOn details from T_Payroll_File - * @return array $result : This is result of the query - */ - function getPayOn() - { - $this->db->select('DISTINCT(PayOn)'); - $this->db->from('T_Payroll_File'); - $query = $this->db->get(); - return $query->result(); - } - - /* *//** - * This function is used to get the PayOn details from T_Payroll_File - * @return array $result : This is result of the query - */ - function getEmployeelist($Payon ='') - { - $this->db->select('Pay.EmpID as EmpId,Emp.FirstName as Fname,Emp.LastName as Lname'); - $this->db->from('T_Payroll Pay'); - $this->db->join('T_Employee_Details Emp', 'Pay.EmpID = Emp.EmpID'); - if($Payon != '') - { - $this->db->where('Pay.PayOn', $Payon); - } - $this->db->order_by("Pay.EmpID", "asc"); - - $query = $this->db->get(); - return $query; - } - - - function getEmployeelist2($Payon ='') - { - $this->db->select('Pay.EmpID as EmpId,Emp.FirstName as Fname,Emp.LastName as Lname'); - $this->db->from('T_Monthly_Pay_Inputs Pay'); - $this->db->join('T_Employee_Details Emp', 'Pay.EmpID = Emp.EmpID'); - if($Payon != '') - { - $this->db->where('Pay.Month_Year', $Payon); - } - $this->db->order_by("Pay.EmpID", "asc"); - - $query = $this->db->get(); - return $query; - } - - /* *//** - * This function is used to get the PayOn details from T_Payroll_File - * @return array $result : This is result of the query - */ - function getEmpAll($Payon ='') - { - $this->db->select('Pay.EmpID as EmpId,Emp.FirstName as Fname,Emp.LastName as Lname'); - $this->db->from('T_Payroll Pay'); - $this->db->join('T_Employee_Details Emp', 'Pay.EmpID = Emp.EmpID'); - if($Payon != '') - { - $this->db->where('Pay.PayOn', $Payon); - } - $this->db->order_by("Pay.EmpID", "asc"); - - $query = $this->db->get(); - return $query->result_array(); - } - - /* *//** - * This function is used to delete the PayOn details from T_Payroll - * @return array $result : This is result of the query - */ - function deleteFileData($PayOn='') - { - - $this->db->where("PayOn", $PayOn); - - $this->db->delete('T_Payroll'); - - } - - function getEmpID($q='') - { - $this->db->select('EmpID,FirstName,LastName'); - $this->db->from('T_Employee_Details'); - if($q == "addemppaydate"){ - $this->db->where('EmpID NOT IN (SELECT EmpID from T_Emp_Pay_Data)',NULL,FALSE); - } - $query = $this->db->get(); - return $query->result(); - } -} -?> \ No newline at end of file diff --git a/application/models/purchaseorder_model.php b/application/models/purchaseorder_model.php deleted file mode 100644 index 1303cb7c..00000000 --- a/application/models/purchaseorder_model.php +++ /dev/null @@ -1,962 +0,0 @@ -db->distinct(); - $this->db->select('POMast.PONO,supp.SupplierName,TotalOrderValue,PODate,Stat.StatusName,Req.ReqType,DeliveryDate'); - $this->db->from('T_PurchaseOrder_Master POMast'); - $this->db->join('T_SupplierDetailsN supp', 'supp.SupplierID = POMast.SupplierID'); - $this->db->join('T_Status Stat', 'Stat.StatusCode = POMast.Status'); - $this->db->join('T_PurchaseOrder_LineItem LineItem', 'POMast.PONO = LineItem.PONO'); - $this->db->join('T_Requestion_Master Req', 'Req.ReqNo = LineItem.ReqNo'); - // print_r( $this->db->last_query()); - $query = $this->db->get(); - - return count($query->result()); - } - - /** - * This function is used to get the user listing count - * @param string $searchText : This is optional search text - * @param number $page : This is pagination offset - * @param number $segment : This is pagination limit - * @return array $result : This is result - */ - -function purchaseorderListing() - { - $this->db->distinct(); - $this->db->select('POMast.PONO,supp.SupplierName,TotalOrderValue,PODate,Stat.StatusName,Stat.StatusCode,Req.ReqType,DeliveryDate,DeliverySchedule,DeliveryOption'); - $this->db->from('T_PurchaseOrder_Master POMast'); - $this->db->join('T_SupplierDetailsN supp', 'supp.SupplierID = POMast.SupplierID'); - $this->db->join('T_Status Stat', 'Stat.StatusCode = POMast.Status'); - $this->db->join('T_PurchaseOrder_LineItem LineItem', 'POMast.PONO = LineItem.PONO'); - $this->db->join('T_Requestion_Master Req', 'Req.ReqNo = LineItem.ReqNo'); - - $query = $this->db->get(); - //print_r( $this->db->last_query()); - $result = $query->result(); - return $result; - } - - /** - * This function is used to get the SupplierID and SupplierName information - * @return array $result : This is result of the query - */ - function getSupplierName($supID='') - { - $this->db->select('SupplierID, SupplierName,Address'); - $this->db->from('T_SupplierDetailsN'); - if($supID != '') - { - $this->db->where('SupplierID',$supID); - } - //$this->db->where('roleId !=', 1); - $query = $this->db->get(); - - return $query->result(); - } - /** - * This function is used to get the userId information - * @return array $result : This is result of the query - */ - function getusers() - { - $this->db->select('userId, name'); - $this->db->from('tbl_users'); - //$this->db->where('roleId !=', 1); - $query = $this->db->get(); - - return $query->result(); - } -/** - * This function is used to get the Raw Material information - * @return array $result : This is result of the query - */ - function getRawPOMaterialList($ReqNo,$IsArray='') - { - - $result = $this->db-> query("CALL P_GET_REQUISTIONLIST('".$ReqNo."')") or die(mysql_error()); - - $result ->next_result(); - - //print_r($this->db->last_query()); - - if ($result->num_rows > 0) - { - //echo 'PO Line item Inserted successfully'; - if($IsArray != '') - { - return $result->result_array(); - } - else - { - return $result->result(); - } - } - - } - - /** - This Function to get the List of Requistion which require to create PO - */ - function getAllRequistionListToCreatePO() - { - $result = $this->db-> query("CALL P_PURCHASEORDER_DETAILS()") or die(mysql_error()); - - $result ->next_result(); - - - if ($result->num_rows > 0) - { - - return $result->result(); - } - } - - /** - * This function is used to get the Raw Material information - * @return array $result : This is result of the query - */ - function getRawMaterialList($MatType='',$ReqNoList='') - { - - $this->db->select('ReqNo,Req.MaterialCode,MaterialName,UOM,Req.Quantity'); - $this->db->from('T_Requestion_Details Req'); - $this->db->join('T_MaterialMaster mat', 'Req.MaterialCode = mat.MaterialCode'); - $this->db->where('mat.MaterialType', $MatType); - $this->db->where_in('Req.ReqNo', $ReqNoList); - - $query = $this->db->get(); - //print_r($this->db->last_query()); - return $query->result(); - } - /** - * This function is used to get the Raw Material information - * @return array $result : This is result of the query - */ - function getRawMaterialListForPO($MatType='',$ReqNo='') - { - $subQuery ='SELECT ReqNo,Req.MaterialCode,MaterialName,UOM,Req.Quantity - FROM T_Requestion_Details Req - JOIN T_MaterialMaster mat ON Req.MaterialCode = mat.MaterialCode - where mat.MaterialType = ? - AND Req.ReqNo = ? - AND mat.MaterialCode != (SELECT MaterialCode FROM T_PurchaseOrder_LineItem WHERE ReqNo =? - )'; - - $query = $this->db->query($subQuery,array($MatType,$ReqNo,$ReqNo)); - - return $query->result_array(); - - - } - function GetAvailableBudgetAmount($CostCode,$Year,$BudgetType) - { - /* $this->db->select('BudgetAmount'); - $this->db->from('T_CostCenter_Budget'); - $this->db->where('CostCenterCode',$CostCode ); - $this->db->where('BudgetYear',$Year ); - $this->db->where('BudgetType',$BudgetType ); - $query = $this->db->get(); - - return $query->result_array(); */ - - $subQuery ='select BudgetAmount, (select ifnull(sum(TotalOrderValue),0) as Totalvalue from - T_PurchaseOrder_Master PO join T_PurchaseOrder_LineItem Item on - Item.PONO = PO.PONO join T_Requestion_Master mast on mast.ReqNo = Item.ReqNo where Item.CostCenterCode=? and mast.ReqType=?)as Totalvalue - from T_CostCenter_Budget Bud where Bud.CostCenterCode=? and - BudgetYear = ? and BudgetType =?'; - - $query = $this->db->query($subQuery,array($CostCode,$BudgetType,$CostCode,$Year,$BudgetType)); - //print_r($this->db->last_query()); - return $query->result_array(); - - } - - /** - * This function is used to get the Requsition List for the login user - * @return array $result : This is result of the query - */ - function getRequistDetails($ReqNoList='') - { - $this->db->distinct(); - $this->db->select('ReqNo,ReqType,Status,Requestedby,mast.CreatedDate,emp.FirstName,emp.EmpID,emp.Designation, Dept.DEPCode,Dept.DepartmentName,mast.ReqDate,mast.CostCenterCode'); - $this->db->from('T_Requestion_Master mast'); - $this->db->join('T_Employee_Details emp', 'mast.Requestedby = emp.EmpID'); - $this->db->join('T_DepartmentDetails Dept', 'emp.Departmentcode = Dept.DEPCode'); - $this->db->where_in('mast.ReqNo', $ReqNoList); - - $query = $this->db->get(); - //print_r($this->db->last_query()); - return $query->result(); - } - /** - * This function is used to get the Requsition List for the login user - * @return array $result : This is result of the query - */ - function getRequistDetailsForPO($ReqNoList='') - { - $this->db->distinct(); - $this->db->select('ReqNo,ReqType,Status,Requestedby,mast.CreatedDate,emp.FirstName,emp.EmpID,emp.Designation, Dept.DEPCode,Dept.DepartmentName,mast.ReqDate'); - $this->db->from('T_Requestion_Master mast'); - $this->db->join('T_Employee_Details emp', 'mast.Requestedby = emp.EmpID'); - $this->db->join('T_DepartmentDetails Dept', 'emp.Departmentcode = Dept.DEPCode'); - $this->db->where_in('mast.ReqNo', $ReqNoList); - - $query = $this->db->get(); - - return $query->result(); - } - /** - * This function is used to get the Cost center information - * @return array $result : This is result of the query - */ - function getCostCenter() - { - - $this->db->select('CostName, Description'); - $this->db->from('T_CostCentre'); - - $query = $this->db->get(); - - return $query->result(); - } - - - /** - * This function is used to get the CostCenter for the Selected Requistion Number - * @return array $result : This is result of the query - */ - function getCostCenterbyRequist($ReqNo='',$BudYear='',$ReqType='') - { - - $this->db->distinct(); - $this->db->select('Mast.CostCenterCode,Mast.CostCenterName,Bud.BudgetAmount,ReqNo'); - $this->db->from('T_CostCenter_Master Mast'); - $this->db->join('T_CostCenter_Departments CostDept', 'CostDept.CostCenterCode = Mast.CostCenterCode'); - $this->db->join('T_CostCenter_Budget Bud', 'Bud.CostCenterCode = Mast.CostCenterCode'); - $this->db->join('T_Employee_Details emp', 'CostDept.DEPCode = emp.Departmentcode'); - $this->db->join('T_Requestion_Master req', 'req.Requestedby = emp.EmpID'); - - $this->db->where('BudgetType ',$ReqType ); - $this->db->where('BudgetYear ',$BudYear ); - if($ReqNo != '') - { - $this->db->where('ReqNo ',$ReqNo); - } - - $query = $this->db->get(); - return $query->result(); - } - -/** - * This function is used to get the Config value from configuration table - * @return array $result : This is result of the query - */ - function getRequistionNoFromPO($PONO='') - { - - $this->db->select('ReqNo,'); - $this->db->from('T_PurchaseOrder_LineItem'); - if($PONO != '') - { - $this->db->where('PONO ',$PONO ); - } - - $query = $this->db->get(); - - return $query->result(); - } - - - /** - * This function is used to get the Config value from configuration table - * @return array $result : This is result of the query - */ - function getConfigValue($ConfigID ,$ConfigValue = '') - { - - $this->db->select('ConfigValue'); - $this->db->from('T_ConfigDetails'); - $this->db->where('Config_id ',$ConfigID ); - if($ConfigValue != '') - { - $this->db->where('ConfigValue != ',$ConfigValue ); - } - $query = $this->db->get(); - - return $query->result(); - } - - /** - * This function is used to get the Company information from T_Company_Details table - * @return array $result : This is result of the query - */ - function getCompanyInformation() - { - - $this->db->select('CompanyName,Address'); - $this->db->from('T_Company_Details'); - - $query = $this->db->get(); - - return $query->result(); - } - /** - * This function is used to get the Employee List - * @return array $result : This is result of the query - */ - function getAllEmployees() - { - $this->db->select('EmpID,FirstName,LastName'); - $this->db->from('T_Employee_Details'); - $query = $this->db->get(); - - return $query->result(); - } - - /** - * This function is used to get the Employee List - * @return array $result : This is result of the query - */ - function getLastCreatedPODate() - { - $this->db->select('max(PODate) as PODate'); - $this->db->from('T_PurchaseOrder_Master'); - $query = $this->db->get(); - - return $query->result(); - } - - - /** - * This function is used to add New Purchase order to the system - - */ - function addPOMaster($POMaster) - { - $this->db->trans_start(); - $this->db->insert('T_PurchaseOrder_Master', $POMaster); - $insert_id = $this->db->affected_rows(); - $this->db->trans_complete(); - // print_r($this->db->last_query()); - if($insert_id>0) - { - $subQuery = 'select max(PONO) as PONO from T_PurchaseOrder_Master'; - - $query = $this->db->query($subQuery); - - return $query->result_array(); - } - } - - - /** - * This function is used to add New Purchase order Line Item to the system - */ - function addPOLineItem($POLineItem) - { - $this->db->trans_start(); - $this->db->insert('T_PurchaseOrder_LineItem', $POLineItem); - $insert_id = $this->db->affected_rows(); - $this->db->trans_complete(); - // print_r($this->db->last_query()); - if($insert_id>0) - { - $subQuery = 'select max(LineItemNo) as LineItemNo from T_PurchaseOrder_LineItem'; - - $query = $this->db->query($subQuery); - - return $query->result_array(); - } - } - - /** - * This function is used to add Revenue Tax to the system - */ - function addRevenueTax($RevenueTaxList) - { - $this->db->trans_start(); - $this->db->insert('T_Revenue_Tax', $RevenueTaxList); - $insert_id = $this->db->affected_rows(); - $this->db->trans_complete(); - return $insert_id; - } - /** - * This function is used to add Service Tax to the system - */ - function addServiceTax($ServiceTaxList) - { - $this->db->trans_start(); - $this->db->insert('T_Service_Tax', $ServiceTaxList); - $insert_id = $this->db->affected_rows(); - $this->db->trans_complete(); - return $insert_id; - } - - - /** - * This function is used to add Service Tax to the system - */ - function addImportTax($ImportTaxList) - { - $this->db->trans_start(); - $this->db->insert('T_Import_Tax', $ImportTaxList); - $insert_id = $this->db->affected_rows(); - $this->db->trans_complete(); - return $insert_id; - } - - - /** - * This function used to get user information by id - * @param number $userId : This is user id - * @return array $result : This is user information - */ - function getuserInfo($PO) - { - $this->db->select('POType, PODate, SupplierID,SpecialOrder,UserID,RequestedDate,RequesterEmail,RequesterPh, PurchasingCategory,BudgetManager,BudgetManagerDepartment,'); - $this->db->from('T_PurchaseOrderDetails'); - $this->db->where('PONO', $PO); - $query = $this->db->get(); - - return $query->result(); - } - - // This Method to get the Service PO Details for Edit the Item - function GetServicePurchaseOrder($PONO = '') - { - $this->db->distinct(); - $this->db->select('ReqNo,POMast.PONO,ServiceDescription,supp.SupplierID,supp.SupplierName,supp.Address,PODate,Stat.StatusName,DeliveryOption,DeliverySchedule,DeliveryDate,DeliveryAddress,Stat.StatusCode'); - $this->db->from('T_PurchaseOrder_Master POMast'); - $this->db->join('T_SupplierDetailsN supp', 'supp.SupplierID = POMast.SupplierID'); - $this->db->join('T_Status Stat', 'Stat.StatusCode = POMast.Status'); - $this->db->join('T_PurchaseOrder_LineItem LineItem', 'POMast.PONO = LineItem.PONO'); - - $this->db->where('POMast.PONO', $PONO); - $query = $this->db->get(); - - $result = $query->result(); - - return $result; - } - - // This Method to get the Service PO Child Details for Edit the Item - function GetServicePurchaseOrderDetails($PONO = '') - { - - $subQuery ='SELECT distinct LineItem.LineItemNo,ReqNo,Mat.MaterialCode,Mat.MaterialName,Mat.UOM,Quantity,Rate,Status,ROUND((Quantity *Rate),2 ) as BasicValue ,ROUND((ServiceTax + EducessTax + SecHigherEducessTax + KrishiKalyantax + SwachhBharattax),2)as Taxamount - ,TotalValue,ServiceTax,EducessTax,SecHigherEducessTax,KrishiKalyantax,SwachhBharattax,CostCenterCode - FROM T_PurchaseOrder_LineItem LineItem - join T_MaterialMaster Mat on Mat.MaterialCode = LineItem.MaterialCode - join T_Service_Tax Tax on Tax.LineItemNo = LineItem.LineItemNo - where LineItem.PONO =?'; - - $query = $this->db->query($subQuery,array($PONO)); - - return $query->result(); - - - } - - // This Method to get the Service PO Child Details for Edit the Item - function GetServicePurchaseOrderDetailsForPrint($PONO = '') - { - - $subQuery ='SELECT distinct LineItem.LineItemNo,ReqNo,Mat.MaterialCode,Mat.MaterialName,Mat.UOM, - Quantity,Rate,ROUND((Quantity *Rate),2 ) as BasicValue ,ROUND((ServiceTax + EducessTax + SecHigherEducessTax + KrishiKalyantax + SwachhBharattax),2)as Taxamount - ,TotalValue,ServiceTax,EducessTax,SecHigherEducessTax,KrishiKalyantax,SwachhBharattax,CostCenterCode ,sup.SupplierName,sup.Address,POMaster.DeliveryAddress,POMaster.DeliveryDate,POMaster.PODate,POMaster.PONO,POMaster.ServiceDescription FROM T_PurchaseOrder_LineItem LineItem - join T_MaterialMaster Mat on Mat.MaterialCode = LineItem.MaterialCode - join T_Service_Tax Tax on Tax.LineItemNo = LineItem.LineItemNo - join T_PurchaseOrder_Master POMaster on POMaster.PONO = LineItem.PONO - join T_SupplierDetailsN sup on sup.SupplierID = POMaster.SupplierID - where LineItem.PONO =?'; - - $query = $this->db->query($subQuery,array($PONO)); - - return $query->result(); - - - } - - // This Method to get the Revenue PO Child Details for Edit the Item - function GetRevenuePurchaseOrderDetails($PONO = '') - { - - $subQuery ='SELECT distinct LineItem.LineItemNo,Req.ReqNo,Mat.MaterialCode,Mat.MaterialName,Mat.UOM,Quantity,Rate,Req.Status,ROUND((Quantity *Rate),2 ) as BasicValue , ROUND(((AfterPackagingValue + AfterFreightValue + AfterExciseDuty + AfterVAT + AfterCST + AfterGST + AfterOtherTaxes + Insurance) - AfterDiscount ),2)as Taxamount ,TotalValue,Tax.*,Req.CostCenterCode,Dept.DepartmentName - FROM T_PurchaseOrder_LineItem LineItem - join T_MaterialMaster Mat on Mat.MaterialCode = LineItem.MaterialCode - join T_Revenue_Tax Tax on Tax.LineItemNo = LineItem.LineItemNo - join T_Requestion_Master Req on Req.ReqNo = LineItem.ReqNo - join T_Employee_Details emp on Req.Requestedby = emp.EmpID - join T_DepartmentDetails Dept on emp.Departmentcode = Dept.DEPCode - where LineItem.PONO =?'; - - $query = $this->db->query($subQuery,array($PONO)); - - return $query->result(); - - - } - - // This Method to get the Revenue PO Child Details for Edit the Item - function GetRevenuePurchaseOrderDetailsForPDF($PONO = '') - { - - $subQuery ='SELECT distinct LineItem.LineItemNo,ReqNo,Mat.MaterialCode,Mat.MaterialName, - Mat.UOM,Quantity,Rate,ROUND((Quantity *Rate),2 ) as BasicValue , - ROUND(((AfterPackagingValue + AfterFreightValue + AfterExciseDuty + AfterVAT + AfterCST + - AfterGST + AfterOtherTaxes + Insurance)) ,2)as Taxamount , - TotalValue,Tax.*,CostCenterCode , POMaster.*,sup.SupplierName,sup.Address - FROM T_PurchaseOrder_LineItem LineItem - join T_MaterialMaster Mat on Mat.MaterialCode = LineItem.MaterialCode - join T_Revenue_Tax Tax on Tax.LineItemNo = LineItem.LineItemNo - join T_PurchaseOrder_Master POMaster on POMaster.PONO = LineItem.PONO - join T_SupplierDetailsN sup on sup.SupplierID = POMaster.SupplierID - where LineItem.PONO =?'; - - $query = $this->db->query($subQuery,array($PONO)); - - return $query->result(); - - - } - - -function GetImportPurchaseOrderDetailsForPDF($PONO = '') - { - - $subQuery ='SELECT distinct LineItem.LineItemNo,ReqNo,Mat.MaterialCode,Mat.MaterialName, - Mat.UOM,Quantity,Rate,ROUND((RMCIncludingCustomersPerKG*Quantity),2)as Taxamount , - ProductPrice,Tax.*,CostCenterCode , POMaster.*,sup.SupplierName,sup.Address - FROM T_PurchaseOrder_LineItem LineItem - join T_MaterialMaster Mat on Mat.MaterialCode = LineItem.MaterialCode - join T_Import_Tax Tax on Tax.LineItemNo = LineItem.LineItemNo - join T_PurchaseOrder_Master POMaster on POMaster.PONO = LineItem.PONO - join T_SupplierDetailsN sup on sup.SupplierID = POMaster.SupplierID - where LineItem.PONO =?'; - - $query = $this->db->query($subQuery,array($PONO)); - - return $query->result(); - - - } - - - function GetCurrencyDetail($Currency='') - { - - $subQuery='SELECT CurrencyCode,CurrencyName from T_Currency_Details where CurrencyCode=?'; - $query=$this->db->query($subQuery,array($Currency)); - return $query->result(); - - } - - - - - -function GetImportPurchaseOrderDetails($PONO = '') - { - - $subQuery ='SELECT distinct LineItem.LineItemNo,Req.ReqNo,Mat.MaterialCode,Mat.MaterialName, -Mat.UOM,Quantity,Rate,Req.Status,ROUND((Quantity *Rate),2 ) as BasicValue , - ROUND((RMCIncludingCustomersPerKG*Quantity),2)as Taxamount,LandingCharge,HighSeasSalesCharge,CustomDuty,ExciseDuty,ExciseDutyEdCess,CustomEdCess,ExchangeRate,AfterLandingCharge,AfterHighSeasSalesCharge,AfterCustomDuty,AfterExciseDuty,AfterExciseDutyEdCess,AddlExciseDuty,AfterAddlExciseDuty,Grossdutypayable,AvailableModvat,Grossexpensesduetocustomduty,purchaseratePerKG,CustomDutyExpensesPerKG,RMCIncludingCustomersPerKG,QuantityKG,BasicPriceInMTon,ProductPrice,CustomSHCess,AfterCustomSHCess,AfterExciseDutySHCess,ExciseDutySHCess,AfterCustomEdCess,ROUND((Quantity *Rate)+(RMCIncludingCustomersPerKG*Quantity),2)as TotalOrderValue,ROUND((ExchangeRate*BasicPriceInMTon),2) as BasicINRValue,TotalValue,CurrencyType, - - Req.CostCenterCode,Dept.DepartmentName FROM T_PurchaseOrder_LineItem LineItem - join T_MaterialMaster Mat on Mat.MaterialCode = LineItem.MaterialCode - join T_Import_Tax Tax on Tax.LineItemNo = LineItem.LineItemNo - join T_Requestion_Master Req on Req.ReqNo = LineItem.ReqNo - join T_Employee_Details emp on Req.Requestedby = emp.EmpID - join T_DepartmentDetails Dept on emp.Departmentcode = Dept.DEPCode where LineItem.PONO =?'; - //print_r($subQuery); - - $query = $this->db->query($subQuery,array($PONO)); - - return $query->result(); - - - } - - - -function GetCurrencytype() - { - - $subQuery = 'select CurrencyCode,CurrencyName from T_Currency_Details'; - - $query = $this->db->query($subQuery); - - - return $query->result(); - } - - - - - - // To Update the PO - function updatePOMaster($PONO,$PODetails) - { - $this->db->where('PONO', $PONO); - $this->db->update('T_PurchaseOrder_Master', $PODetails); - - return TRUE; - } - /** - * This function is used to check the Line Item is already available in the database - * @return array $result : This is result of the query - */ - function LineItemExists($LineItemNo) - { - $this->db->select('LineItemNo,TaxID'); - $this->db->from('T_Service_Tax'); - $this->db->where('LineItemNo ',$LineItemNo ); - //$this->db->where('Requestedby ',$ReqBy ); - $query = $this->db->get(); - - if ($query->num_rows > 0) { - //echo $result->num_rows; - return $query->result_array(); - } - } - /** - * This function is used to check the Revenue Line Item is already available in the database - * @return array $result : This is result of the query - */ - function LineItemExistsinRevenueTax($LineItemNo) - { - $this->db->select('LineItemNo'); - $this->db->from('T_Revenue_Tax'); - $this->db->where('LineItemNo ',$LineItemNo ); - $query = $this->db->get(); - - if ($query->num_rows > 0) { - return $query->result_array(); - } - } - - - function LineItemExistsinImportTax($LineItemNo) - { - $this->db->select('LineItemNo'); - $this->db->from('T_Import_Tax'); - $this->db->where('LineItemNo ',$LineItemNo ); - $query = $this->db->get(); - - if ($query->num_rows > 0) { - return $query->result_array(); - } - } - // To Update the PO Line Item - function updatePOLineItem($PONO,$LineItemNo,$PODetails) - { - $this->db->where('PONO', $PONO); - $this->db->where('LineItemNo', $LineItemNo); - $this->db->update('T_PurchaseOrder_LineItem', $PODetails); - - return TRUE; - } - /*// To Update the Service Tax Item */ - function updateServiceTax($LineItemNo,$PODetails) - { - - $this->db->where('LineItemNo', $LineItemNo); - $this->db->update('T_Service_Tax', $PODetails); - - // print_r($this->db->last_query()); - - return TRUE; - } - - /*// To Update the Revenue Tax Item */ - function updateRevenueTax($LineItemNo,$PODetails) - { - $this->db->where('LineItemNo', $LineItemNo); - $this->db->update('T_Revenue_Tax', $PODetails); - - // print_r($this->db->last_query()); - - return TRUE; - } - - function updateImportTax($LineItemNo,$PODetails) - { - $this->db->where('LineItemNo', $LineItemNo); - $this->db->update('T_Import_Tax', $PODetails); - - // print_r($this->db->last_query()); - - return TRUE; - } - - function getLastInsertedPO() - { - $this->db->select('max(PONO) as PO'); - $this->db->from('T_PurchaseOrderDetails'); - $query = $this->db->get(); - - return $query->result_array(); - } - - - /* This Method to get all the Department name for the requistion */ - function getDepartmentListForAllReq() - { - $subQuery ='SELECT DISTINCT DEPT.DEPCode,DEPT.DepartmentName FROM T_Requestion_Master REQ - JOIN T_Employee_Details EMP ON REQ.Requestedby = EMP.EmpID - JOIN T_DepartmentDetails DEPT ON EMP.Departmentcode = DEPT.DEPCode WHERE REQ.Status not in(?,?,?,?)'; - - $query = $this->db->query($subQuery,array(REQ_DRAFT,REQ_PENDING_APPROVAL,REQ_DELETED,REQ_REJECTED)); - //print_r($query); - return $query->result(); - } - /* - This Method to get all department list - */ - function getDepartmentAllList() - { - $subQuery ='SELECT DISTINCT DEPCode,DepartmentName FROM T_DepartmentDetails'; - - $query = $this->db->query($subQuery); - //print_r($query); - return $query->result(); - } - - - function getStatusListforAllReq() - { - $subQuery ='SELECT DISTINCT STAT.StatusCode, STAT.StatusName FROM T_Requestion_Master REQ - JOIN T_Status STAT on REQ.Status = STAT.StatusCode where STAT.StatusCode not in (?,?,?,?)'; - $query = $this->db->query($subQuery,array(REQ_DRAFT,REQ_PENDING_APPROVAL,REQ_DELETED,REQ_REJECTED)); - - // print_r( $this->db->last_query()); - - return $query->result(); - } - - function getStatusByDepartment($DepNo='') - { - - $subQuery ='SELECT DISTINCT STAT.StatusCode ,STAT.StatusName FROM T_Requestion_Master REQ - JOIN T_Employee_Details EMP ON REQ.Requestedby = EMP.EmpID - JOIN T_DepartmentDetails DEPT ON EMP.Departmentcode = DEPT.DEPCode - JOIN T_Status STAT ON REQ.Status = STAT.StatusCode - WHERE DEPT.DEPCode=? AND REQ.Status NOT IN (?,?,?,?)'; - $query = $this->db->query($subQuery,array($DepNo,REQ_DRAFT,REQ_PENDING_APPROVAL,REQ_DELETED,REQ_REJECTED)); - - return $query->result_array(); - } - - function getRequistionListbySearch($Depid='',$Status='',$FromDate='',$ToDate='') - { - $subQuery =' SELECT ReqNo,ReqType,Requestedby,EMP.FirstName,EMP.Designation,STAT.StatusCode ,STAT.StatusName,ReqDate,DEPT.DEPCode,DEPT.DepartmentName FROM T_Requestion_Master REQ - JOIN T_Employee_Details EMP ON REQ.Requestedby = EMP.EmpID - JOIN T_DepartmentDetails DEPT ON EMP.Departmentcode = DEPT.DEPCode - JOIN T_Status STAT on REQ.Status = STAT.StatusCode - where REQ.Status NOT IN (?,?,?,?,?)'; - - $appendQuery = $subQuery ; - - if($Depid != '' && $Status != '' && $FromDate != '' && $ToDate != '') - { - $appendQuery .= ' AND DEPT.DEPCode=? AND STAT.StatusCode=? AND ReqDate >= ? AND ReqDate <= ?'; - //echo "$appendQuery";die(); - $query = $this->db->query($appendQuery,array(REQ_DRAFT,REQ_PENDING_APPROVAL,REQ_DELETED,REQ_REJECTED,REQ_PO_CREATED,$Depid ,$Status,$FromDate,$ToDate)); - //print_r($this->db->last_query()); - return $query->result_array(); - } - else if($Depid != '' && $Status == '' && $FromDate == '' && $ToDate == '') - { - $appendQuery .= ' AND DEPT.DEPCode=?'; - - $query = $this->db->query($appendQuery,array(REQ_DRAFT,REQ_PENDING_APPROVAL,REQ_DELETED,REQ_REJECTED,REQ_PO_CREATED,$Depid)); - //print_r($this->db->last_query()); - return $query->result_array(); - } - else if($Depid == '' && $Status != '' && $FromDate == '' && $ToDate == '') - { - $appendQuery .= ' AND STAT.StatusCode=?'; - - $query = $this->db->query($appendQuery,array(REQ_DRAFT,REQ_PENDING_APPROVAL,REQ_DELETED,REQ_REJECTED,REQ_PO_CREATED,$Status)); - //print_r($this->db->last_query()); - return $query->result_array(); - } - else if($Depid == '' && $Status == '' && $FromDate != '' && $ToDate != '') - { - $appendQuery .= ' AND ReqDate >= ? AND ReqDate <= ?'; - - $query = $this->db->query($appendQuery,array(REQ_DRAFT,REQ_PENDING_APPROVAL,REQ_DELETED,REQ_REJECTED,REQ_PO_CREATED,$FromDate,$ToDate)); - //print_r($this->db->last_query()); - return $query->result_array(); - } - else if($Depid != '' && $Status != '' && $FromDate == '' && $ToDate == '') - { - $appendQuery .= ' AND DEPT.DEPCode=? AND STAT.StatusCode=?'; - - $query = $this->db->query($appendQuery,array(REQ_DRAFT,REQ_PENDING_APPROVAL,REQ_DELETED,REQ_REJECTED,REQ_PO_CREATED,$Depid ,$Status)); - // print_r($this->db->last_query()); - return $query->result_array(); - } - else if($Depid != '' && $Status == '' && $FromDate != '' && $ToDate != '') - { - $appendQuery .= ' AND DEPT.DEPCode=? AND ReqDate >= ? AND ReqDate <= ?'; - - $query = $this->db->query($appendQuery,array(REQ_DRAFT,REQ_PENDING_APPROVAL,REQ_DELETED,REQ_REJECTED,REQ_PO_CREATED,$Depid ,$FromDate,$ToDate)); - //print_r($this->db->last_query()); - return $query->result_array(); - } - else if($Depid == '' && $Status != '' && $FromDate != '' && $ToDate != '') - { - $appendQuery .= ' AND STAT.StatusCode=? AND ReqDate >= ? AND ReqDate <= ?'; - - $query = $this->db->query($appendQuery,array(REQ_DRAFT,REQ_PENDING_APPROVAL,REQ_DELETED,REQ_REJECTED,REQ_PO_CREATED,$Status ,$FromDate,$ToDate)); - // print_r($this->db->last_query()); - return $query->result_array(); - } - else - { - $query = $this->db->query($subQuery,array(REQ_DRAFT,REQ_PENDING_APPROVAL,REQ_DELETED,REQ_REJECTED,REQ_PO_CREATED)); - //print_r($this->db->last_query()); - return $query->result(); - } - - } - - function UpdateRequistItemStatus() - { - $query = $this->db->query("update T_Requestion_Details REQ - JOIN T_PurchaseOrder_LineItem line ON REQ.ReqNo = line.ReqNo - JOIN T_PurchaseOrder_Master PO ON PO.PONO = line.PONO - set REQ.Status = CASE WHEN REQ.Quantity = line.Quantity THEN 'ST022' WHEN REQ.Quantity > line.Quantity THEN 'ST023' ELSE 'ST003' END , - REQ.updatedOn= CURRENT_TIMESTAMP - where PO.Status ='".PO_CREATED."'"); - - //$query ->next_result(); - - } - function UpdateRequistionStatus() - { - $result = $this->db-> query("CALL P_UPDATE_REQUISTIONSTATUS()") or die(mysql_error()); - - $result ->next_result(); - - } - /** - * This function is used to delete the Line item from details into Database - * @return array $result : This is result of the query - */ - function DeletePOLineItem( $LineItem='',$ReqNo='',$MaterialCode='') - { - $this->db->where('LineItemNo', $LineItem); - $this->db->where('ReqNo', $ReqNo); - $this->db->where('MaterialCode', $MaterialCode); - $this->db->delete('T_PurchaseOrder_LineItem'); - - return TRUE; - } - - /** - * This function is used to delete the Revenue item from details into Database - * @return array $result : This is result of the query - */ - function DeletePORevenueTax( $LineItem='') - { - $this->db->where('LineItemNo', $LineItem); - $this->db->delete('T_Revenue_Tax'); - - return TRUE; - } - - /** - * This function is used to delete Service Tax from details into Database - * @return array $result : This is result of the query - */ - function DeletePOServiceTax( $LineItem='') - { - $this->db->where('LineItemNo', $LineItem); - $this->db->delete('T_Service_Tax'); - - return TRUE; - } - - - function DeletePOImportTax( $LineItem='') - { - $this->db->where('LineItemNo', $LineItem); - $this->db->delete('T_Import_Tax'); - - return TRUE; - } - - /** - * This function is used to get the List of PO details to the approver - * @return array $result : This is result of the query - join T_DepartmentDetails Dept on emp.Departmentcode = Dept.DEPCode - */ - function getPOList($q) - { - - $this->db->distinct(); - $this->db->select('mast.PONO,mast.TotalOrderValue,st.StatusName,emp.FirstName,mast.CreatedDate,ccm.CostCenterName,rmast.ReqType,bud.BudgetAmount,mast.Remarks'); - $this->db->from('T_PurchaseOrder_Master mast'); - $this->db->join('T_Status st', 'st.StatusCode=mast.Status'); - $this->db->join('tbl_users tbl', 'mast.createdby=tbl.userid'); - $this->db->join('T_Employee_Details as emp', 'emp.empid=tbl.empid'); - $this->db->join('T_PurchaseOrder_LineItem req', 'req.PONO= mast.PONO'); - $this->db->join('T_Requestion_Master rmast','rmast.ReqNo=req.ReqNo'); - $this->db->join('T_CostCenter_Budget bud','bud.CostCenterCode = req.CostCenterCode and bud.BudgetType = rmast.ReqType'); - $this->db->join('T_CostCenter_Master ccm','ccm.CostCenterCode = req.CostCenterCode and ccm.CostCenterCode = bud.CostCenterCode'); - if($q=='A'){ - $this->db->where('mast.Status','ST015');//PO CREATED - $this->db->or_where('mast.Status','ST020');//ON HOLD - $this->db->or_where('mast.Status','ST025');// PO APPROVED - $this->db->or_where('mast.Status','ST026');//PO RELEASED - $this->db->or_where('mast.Status','ST024'); // EMERGENGY PO - } - else if($q=='R'){ - $this->db->or_where('mast.Status','ST025');// PO APPROVED - } - $result=$this->db->get(); - // print_r($result->result()); - return $result->result(); - - - - - - } - - - function UpdatePO($store, $PONO) - { - - $this->db->where('PONO', $PONO); - $this->db->update('T_PurchaseOrder_Master', $store); - - return TRUE; - } - - function GetReleasedDetails($PONO){ - $this->db->select('mast.ReleasedOn,re.FirstName'); - $this->db->from('T_PurchaseOrder_Master mast'); - $this->db->join('tbl_users tbl','mast.ReleasedBy=tbl.userid'); - $this->db->join('T_Employee_Details re','re.EmpID=tbl.EmpID'); - $this->db->where('mast.PONO',$PONO); - $result=$this->db->get(); - - return $result->result(); - - } -} - - diff --git a/application/models/rawmaterialdetails_model.php b/application/models/rawmaterialdetails_model.php deleted file mode 100644 index 4ed5ff59..00000000 --- a/application/models/rawmaterialdetails_model.php +++ /dev/null @@ -1,130 +0,0 @@ -db->select('*'); - $this->db->from('T_MaterialMaster'); - - - $query = $this->db->get(); - - $result = $query->result(); - return $result; - } - - - - function getUOM($UOM = '') - { - $ConfigID = 'C001'; - $this->db->select('ConfigValue'); - $this->db->from('T_ConfigDetails'); - $this->db->where('Config_id ',$ConfigID ); - if($UOM != '') - { - $this->db->where('ConfigValue !=',$UOM ); - } - $query = $this->db->get(); - - return $query->result(); - } - - function getmaterialType($MaterialType = '') - { - $Config_ID = 'C003'; - - $this->db->select('Config_ID,ConfigValue'); - $this->db->from('T_ConfigDetails'); - $this->db->where('Config_id',$Config_ID ); - if($MaterialType != '') - { - $this->db->where('ConfigValue !=',$MaterialType ); - } - $query = $this->db->get(); - - return $query->result(); - } - /** - * This function used to get user information by id - * @param number $userId : This is user id - * @return array $result : This is user information - */ - -function addNewRawMaterial($RawMaterial='') - { - - $this->db->insert('T_MaterialMaster', $RawMaterial); - - return TRUE; - } - - /** - * This function used to get user information by id - * @param number $userId : This is user id - * @return array $result : This is user information - */ - function getMaterialDetails($MaterialCode) - { - $this->db->select('*'); - $this->db->from('T_MaterialMaster'); - - $this->db->where('MaterialCode', $MaterialCode); - $query = $this->db->get(); - //sprint_r($this->db->last_query()); - return $query->result(); - } - function editRawmaterial($RawMaterial, $MaterialCode) - { - - - - $this->db->where('MaterialCode', $MaterialCode); - $this->db->update('T_MaterialMaster', $RawMaterial); - - return TRUE; - } - - function viewrawmaterial($RawMaterial, $MaterialCode) - { - echo $MaterialCode; //."and".$RawMaterial ; - - - $this->db->where('MaterialCode', $MaterialCode); - $this->db->update('T_MaterialMaster', $RawMaterial); - - return TRUE; - } - - function export_excel(){ - - $this->db->select('det.MaterialCode,det.MaterialName,det.MaterialType,det.UOM,emp.firstname,emp1.firstname as Updated_By,det.IsActive'); - $this->db->join('tbl_users as tbl',' det.createdby = tbl.userid','left'); - $this->db->join('T_Employee_Details as emp', 'emp.empid=tbl.empid','left'); - $this->db->join('tbl_users as tbl1',' det.UpdatedBy = tbl1.userid','left'); - $this->db->join('T_Employee_Details as emp1', 'emp1.empid=tbl1.empid','left'); - return $this->db->get('T_MaterialMaster as det')->result_array(); - } - /** - * This function is used to delete the user information - * @param number $userId : This is user id - * @return boolean $result : TRUE / FALSE - - function deletePO($PO, $POinfo) - { - $this->db->where('PO', $PO); - $this->db->update('T_PurchaseOrderDetails', $POInfo); - - return $this->db->affected_rows(); - }*/ -} -?> \ No newline at end of file diff --git a/application/models/requistion_model.php b/application/models/requistion_model.php deleted file mode 100644 index 5c994255..00000000 --- a/application/models/requistion_model.php +++ /dev/null @@ -1,500 +0,0 @@ -db->select('SupplierID, SupplierName,ADeleteRequistionLineItemddress'); - $this->db->from('T_SupplierDetailsN'); - //$this->db->where('roleId !=', 1); - $query = $this->db->get(); - - return $query->result(); - } - /** - * This function is used to get the userId information - * @return array $result : This is result of the query - */ - function getusers() - { - $this->db->select('userId, name'); - $this->db->from('tbl_users'); - //$this->db->where('roleId !=', 1); - $query = $this->db->get(); - - return $query->result(); - } - /* This function is used to getEditRequistItemList view the information - * @return array $result : This is result of the query - */ - function getEditRequistItemList($ReqNo) - { - - /* $result = $this->db-> query("CALL P_GET_REQUISTITEMLIST('".$ReqNo."')") or die(mysql_error()); - - - //echo 'REQUISTITEMLIST Line item view successfully'; - - - - $result ->next_result(); - - if($result->num_rows > 0) - { - - return $result->result(); - } - - */ - $subQuery ='select distinct Req.ReqNo, Mat.MaterialCode,Mat.MaterialName,Mat.UOM, Req.Quantity,if (Po.Quantity is null,0,Po.Quantity) as POQTY,sta.StatusName from T_MaterialMaster Mat join T_Requestion_Details Req on Req.MaterialCode = Mat.MaterialCode - left join T_PurchaseOrder_LineItem Po on Po.ReqNo = Req.ReqNo - left join T_Status sta on sta.StatusCode = Req.Status - where Req.ReqNo = ?'; - - $query = $this->db->query($subQuery, array($ReqNo)); - - // print_r($this->db->last_query()); - return $query->result(); - - } - - /** - * This function is used to get the userId information - * @return array $result : This is result of the query - */ - function getStatus() - { - $this->db->select('StatusCode,StatusName '); - $this->db->from('T_Status'); - $this->db->where('StatusType', REQUISTSTATUS); - $this->db->where('StatusCode !=', REQ_DRAFT); - $query = $this->db->get(); - - return $query->result(); - } - /* This function is used to get the Raw Material information - * @return array $result : This is result of the query - */ - function getRequistionList($ReqNo,$IsArray='') - { - - $result = $this->db-> query("CALL P_GET_AllREQUISTION('".$ReqNo."')") or die(mysql_error()); - - { - //echo 'PO Line item Inserted successfully'; - if($IsArray != '') - { - - return $result->result_array(); - } - else - { - return $result->result(); - } - } - - - } - - /** - * This function is used to get Employee details based on Employee ID Selection - * @return array $result : This is result of the query - */ - function GetEmployeeDetails($EmpID) - { - - $this->db->select(' EMP.EmpID,EMP.Designation,DEPT.DEPCode,DEPT.DepartmentName'); - $this->db->from('T_Employee_Details EMP'); - $this->db->join('T_DepartmentDetails DEPT', 'EMP.Departmentcode = DEPT.DEPCode'); - $this->db->where('EMP.EmpID ',$EmpID ); - $query = $this->db->get(); - - return $query->result_array(); - } - - /** - * This function is used to get the Cost Center details for the Login user department - * @return array $result : This is result of the query - */ - function GetCostCenterByDept($DeptId) - { - - $this->db->select('Mast.CostCenterCode,Mast.CostCenterName'); - $this->db->from('T_CostCenter_Master Mast '); - $this->db->join('T_CostCenter_Departments COST', 'COST.CostCenterCode = Mast.CostCenterCode'); - $this->db->where('COST.DEPCode ',$DeptId ); - $query = $this->db->get(); - // print_r( $this->db->last_query()); - return $query->result_array(); - } - /** - * This function is used to get the Available BudgetAmount for the Cost center - * @return array $result : This is result of the query - */ - function GetAvailableBudgetAmount($CostCode,$Year,$BudgetType) - { - $this->db->select('BudgetAmount'); - $this->db->from('T_CostCenter_Budget'); - $this->db->where('CostCenterCode',$CostCode ); - $this->db->where('BudgetYear',$Year ); - $this->db->where('BudgetType',$BudgetType ); - $query = $this->db->get(); - - return $query->result_array(); - } - - function EditMaterialCode($ReqNo,$ReqType) - { - $subQuery ='SELECT Mat.MaterialCode,Mat.MaterialName,Mat.UOM - from T_MaterialMaster Mat where Mat.MaterialCode not in (select Req.MaterialCode from T_Requestion_Details Req - join T_Requestion_Master mast on Req.ReqNo = mast.ReqNo where mast.ReqNo=? and mast.ReqType=? - ) and Mat.MaterialType=?'; - - $query = $this->db->query($subQuery, array($ReqNo,$ReqType,$ReqType)); - - - return $query->result(); - - } - - - /** - * This function is used to get the Material details for the Request type - * @return array $result : This is result of the query - */ - function GetMaterialCode($ReqType,$NotArray='') - { - $this->db->select('MaterialCode, MaterialName,UOM'); - $this->db->from('T_MaterialMaster'); - $this->db->where('MaterialType',$ReqType ); - - $query = $this->db->get(); - if($NotArray == '') - { - return $query->result_array(); - } - else - { - return $query->result(); - } - } - /** - * This function is used to get the Raw Material information - * @return array $result : This is result of the query - */ - function getRawMaterialList($MaterialCode) - { - $this->db->select('MaterialName,UOM'); - $this->db->from('T_MaterialMaster'); - $this->db->where('MaterialCode',$MaterialCode ); - $query = $this->db->get(); - - return $query->result_array(); - } - - /** - * This function is used to get the Config value from configuration table - * @return array $result : This is result of the query - */ - function getConfigValue($ConfigID ,$ConfigValue = '') - { - - $this->db->select('ConfigValue'); - $this->db->from('T_ConfigDetails'); - $this->db->where('Config_id ',$ConfigID ); - if($ConfigValue != '') - { - $this->db->where('ConfigValue != ',$ConfigValue ); - } - $query = $this->db->get(); - - return $query->result(); - } - - - /** - * This function is used to get the All employees - * @return array $result : This is result of the query - */ - function getAllEmployees() - { - $this->db->select('EmpID,FirstName,LastName'); - $this->db->from('T_Employee_Details'); - $query = $this->db->get(); - - return $query->result(); - } - - /** - * This function is used to get the Employee Details - * @return array $result : This is result of the query - */ - function getEmpIdByUserID($UserID) - { - $subQuery ='SELECT EMP.EmpID,EMP.FirstName,EMP.Designation,DEPT.DEPCode,DEPT.DepartmentName - FROM T_Employee_Details EMP JOIN T_DepartmentDetails DEPT ON - EMP.Departmentcode = DEPT.DEPCode - WHERE EMP.EmpID=(select EmpID from tbl_users where userId=?)'; - - $query = $this->db->query($subQuery, array($UserID)); - - - return $query->result(); - } - - /** - * This function is used to get the CostCenter for the Selected Employee - * @return array $result : This is result of the query - */ - function getCostCenterUserID($UserID) - { - $subQuery ='SELECT Mast.CostCenterCode,Mast.CostCenterName from T_CostCenter_Master Mast - LEFT JOIN T_CostCenter_Departments COST ON COST.CostCenterCode = Mast.CostCenterCode - WHERE COST.DEPCode=(select Departmentcode from T_Employee_Details where EmpID = (select EmpID from tbl_users where userId=?))'; - - $query = $this->db->query($subQuery, array($UserID)); - //print_r($this->db->last_query()); - return $query->result(); - } - - /** - * This function is used to get the Purchase order Type - * @return array $result : This is result of the query - */ - function CheckDraftStatus($UserID) - { - - $subQuery = 'select count(ReqNo) as cnt,ReqNo from T_Requestion_Master where - Requestedby= ( select EmpID from tbl_users where userId=?) and status=?'; - - $query = $this->db->query($subQuery, array($UserID,REQ_DRAFT)); - - return $query->result(); - } - /** - * This function is used to get the Requsition List for the login user - * @return array $result : This is result of the query - */ - function getRequistDetails($ReqID,$NoArray='') - { - - $subQuery = 'select distinct ReqNo,ReqType,Status,Requestedby,DATE_FORMAT(mast.CreatedDate, "%d-%m-%Y") as CreatedDate ,emp.FirstName,emp.EmpID,emp.Designation, Dept.DEPCode,Dept.DepartmentName,DATE_FORMAT(mast.ReqDate, "%d-%m-%Y") as ReqDate,CostCenterCode - from T_Requestion_Master mast - join T_Employee_Details emp on mast.Requestedby = emp.EmpID - join T_DepartmentDetails Dept on emp.Departmentcode = Dept.DEPCode - where ReqNo=?'; - - $query = $this->db->query($subQuery, array($ReqID)); - if($NoArray == '') - { - return $query->result_array(); - } - else - { - return $query->result(); - } - } - /** - * This function is used to get the Requsition List for the login user - * @return array $result : This is result of the query - */ - function getRequistListUserID($UserID) - { - - $subQuery = 'select ReqNo, ReqType ,Status,CreatedDate ,StatusName from T_Requestion_Master mast - join T_Status st on st.StatusCode= mast.Status where - Requestedby = ( select EmpID from tbl_users where userId=?) and Status != ? '; - - $query = $this->db->query($subQuery, array($UserID,REQ_DELETED)); - - return $query->result(); - } - /** - * This function is used to get the Requsition List for the login user - * @return array $result : This is result of the query - */ - function getRequistItemList($ReqID,$NoArray='') - { - - $subQuery = 'select distinct Req.ReqNo, Mat.MaterialCode,Mat.MaterialName,Mat.UOM, Req.Quantity,Po.Quantity as POQTY,sta.StatusName from T_MaterialMaster Mat - left join T_Requestion_Details Req on Req.MaterialCode = Mat.MaterialCode - left join T_PurchaseOrder_LineItem Po on Po.ReqNo = Req.ReqNo and Po.MaterialCode = Req.MaterialCode - left join T_Status sta on sta.StatusCode = Req.Status where Req.ReqNo=?'; - - - $query = $this->db->query($subQuery, array($ReqID)); - if($NoArray == '') - { - return $query->result_array(); - } - else - { - return $query->result(); - } - } - - /** - * This function is used to add the Requistion into the Database - * @return array $result : This is result of the query - */ - function addRequistion($Requistion) - { - $this->db->trans_start(); - $this->db->insert('T_Requestion_Master', $Requistion); - $insert_id = $this->db->affected_rows(); - $this->db->trans_complete(); - if($insert_id>0) - { - $subQuery = 'select max(ReqNo) as ReqNo from T_Requestion_Master'; - - $query = $this->db->query($subQuery); - - return $query->result_array(); - } - - } - /** - * This function is used to check the Request is in Draft status - * @return array $result : This is result of the query - */ - function RequistionIsExists($ReqBy) - { - $this->db->select('ReqNo'); - $this->db->from('T_Requestion_Master'); - $this->db->where('Status ',REQ_DRAFT ); - $this->db->where('Requestedby ',$ReqBy ); - $query = $this->db->get(); - - if ($query->num_rows > 0) { - //echo $result->num_rows; - return $query->result_array(); - } - } - /** - * This function is used to check the Request Line Item is in Draft status - * @return array $result : This is result of the query - */ - function LineItemIsExists($ReqNo,$MaterialCode) - { - $this->db->select('ReqNo'); - $this->db->from('T_Requestion_Details'); - $this->db->where('ReqNo ',$ReqNo ); - $this->db->where('MaterialCode ',$MaterialCode ); - $query = $this->db->get(); - - if ($query->num_rows > 0) { - //echo $result->num_rows; - return $query->result_array(); - } - } - /** - * This function is used to add the Line item details to the Database - * @return array $result : This is result of the query - */ - function addRequistionDetails($Requistion) - { - $this->db->trans_start(); - $this->db->insert('T_Requestion_Details', $Requistion); - $insert_id = $this->db->affected_rows(); - $this->db->trans_complete(); - // print_r($this->db->last_query()); - return $insert_id; - - } - /** - * This function is used to delete the Line item from details into Database - * @return array $result : This is result of the query - */ - function DeleteRequistionLineItem( $ReqNo,$MaterialCode) - { - $this->db->where('ReqNo', $ReqNo); - $this->db->where('MaterialCode', $MaterialCode); - $this->db->delete('T_Requestion_Details'); - - return TRUE; - } - - /** - * This function is used to update the details into Database - * @return array $result : This is result of the query - */ - function UpdateRequistionLineItem($Requist, $ReqNo,$MaterialCode) - { - $this->db->where('ReqNo', $ReqNo); - $this->db->where('MaterialCode', $MaterialCode); - $this->db->update('T_Requestion_Details',$Requist); - - return TRUE; - } - - /** - * This function is used to update the details into Database - * @return array $result : This is result of the query - */ - function UpdateRequistion($Requistion, $ReqNo) - { - $this->db->where('ReqNo', $ReqNo); - $this->db->update('T_Requestion_Master', $Requistion); - - return TRUE; - } - - - - /** - * This function is used to get the List of Requist details to the approver - * @return array $result : This is result of the query - */ - function getApproverRequistList($UserID,$Status = '',$FromDate='' ,$ToDate='') - { - // echo 'UserId: '.$UserID . 'From: '.$FromDate .'TO: '. $ToDate. 'Status: '. $Status; - - $subQuery = 'select distinct ReqNo,Status,mast.CreatedDate,Requestedby,emp.FirstName,mast.Comments,st.StatusName - from T_Requestion_Master mast join T_Employee_Details emp on mast.Requestedby = emp.EmpID - join T_DepartmentDetails Dept on emp.Departmentcode = Dept.DEPCode - join T_Status st on st.StatusCode = mast.Status - where status not in(?,?,?) and emp.Departmentcode in (select DEPCode from T_DepartmentDetails where HeadDept= - (select HeadDept from T_DepartmentDetails where DEPCode = (select Departmentcode from T_Employee_Details where - EmpID=(select EmpID from tbl_users where userId=?))))'; - $subQuery1 = $subQuery; - $query =''; - - if($FromDate != '' && $ToDate != '' && $Status !='' ) - { - - $Where = 'and mast.CreatedDate >= ? and mast.CreatedDate <= ? and Status=?'; - $subQuery1 .= $Where; - $query = $this->db->query($subQuery1, array(REQ_DRAFT,REQ_DELETED,REQ_REJECTED,$UserID,$FromDate,$ToDate,$Status)); - } - else if($FromDate != '' && $ToDate != '' && $Status =='') - { - $Where = 'and mast.CreatedDate >= ? and mast.CreatedDate <= ? '; - $subQuery1 .= $Where; - $query = $this->db->query($subQuery1, array(REQ_DRAFT,REQ_DELETED,REQ_REJECTED,$UserID,$FromDate,$ToDate)); - } - else if($Status != '' && $FromDate == '' && $ToDate == '') - { - $Where = 'and Status = ?'; - $subQuery1 .= $Where; - $query = $this->db->query($subQuery1, array(REQ_DRAFT,REQ_DELETED,REQ_REJECTED,$UserID,$Status)); - } - - else - { - $query = $this->db->query($subQuery, array(REQ_DRAFT,REQ_DELETED,REQ_REJECTED,$UserID)); - } - - //print_r($this->db->last_query()); - return $query->result(); - } - - - -} - - \ No newline at end of file diff --git a/application/models/supplier_model.php b/application/models/supplier_model.php deleted file mode 100644 index dc2f9554..00000000 --- a/application/models/supplier_model.php +++ /dev/null @@ -1,133 +0,0 @@ -db->select('BaseT.SupplierID, BaseT.SupplierName, BaseT.Address, BaseT.ContactNumber, BaseT.AlternateContactNumber,BaseT.EmailAddress,BaseT.Exiseregistration, BaseT.TIN, BaseT.PAN,,BaseT.GSTNO,BaseT.GSTRange,BaseT.CollectrateAddress,BaseT.UANumber,BaseT.PaymentTerms,BaseT.PaymentDays,BaseT.PayableAT,BaseT.CreatedOn'); - $this->db->from('T_SupplierDetailsN as BaseT'); - - - $query = $this->db->get(); - - $result = $query->result(); - return $result; - } - /** - * This function used to get user information by id - * @param number $userId : This is user id - * @return array $result : This is user information - */ - - - function getpayment($Configvalue = '') - { - $ConfigID = 'C009'; - $this->db->select('ConfigValue'); - $this->db->from('T_ConfigDetails'); - $this->db->where('Config_id ',$ConfigID ); - if ($Configvalue!= '') - { - $this->db->where('ConfigValue !=',$Configvalue ); - } - $query = $this->db->get(); - - return $query->result(); - } - - - function checkPAN($PAN,$SID = '') - { - $this->db->select('PAN'); - $this->db->from('T_SupplierDetailsN'); - $this->db->where('PAN',$PAN); - if ($SID != '') - { - $this->db->where('SupplierID !=',$SID); - } - $query = $this->db->get(); - //print_r($this->db->last_query()); - if ($query->num_rows > 0) { - //echo $result->num_rows; - return $query->result_array(); - } - - } - - - - -function addNewsupplier($supplier) - { - - $this->db->insert('T_SupplierDetailsN', $supplier); - - $SID = $this->db->affected_rows(); - - return $SID; - - } - - /** - * This function used to get user information by id - * @param number $userId : This is user id - * @return array $result : This is user information - */ - function getSupplierInfo($supplierID='') - { - $this->db->select('*'); - $this->db->from('T_SupplierDetailsN'); - $this->db->where('SupplierID', $supplierID); - $query = $this->db->get(); - // print_r($this->db->last_query()); - return $query->result(); - } - /* This function to get the Supplier Address on respective Supplier ID */ - function GetSupplierAddress($supplierID) - { - $this->db->select('Address'); - $this->db->from('T_SupplierDetailsN'); - $this->db->where('SupplierID', $supplierID); - $query = $this->db->get(); - return $query->result_array(); - } - function UpdateSupplier($supplier, $supplierID) - { - $this->db->where('SupplierID', $supplierID); - $this->db->update('T_SupplierDetailsN', $supplier); - - return TRUE; - } - - function viewsupplier($supplier, $supplierID) - { - $this->db->where('SupplierID', $supplierID); - $this->db->update('T_SupplierDetailsN', $supplier); - - return TRUE; - } - - function export_excel(){ - - $this->db->select('det.SupplierID,SupplierName,det.Address,det.ContactNumber,det.AlternateContactNumber,det.EmailAddress,det.Exiseregistration,det.TIN, -det.PAN,det.CSTNO,det.CSTDate,det.GSTNO,det.GSTRange,det.CollectrateAddress,det.UANumber,det.PaymentTerms,det.PaymentDays,det.PayableAT,emp.firstname ,emp1.firstname as Update_by,,det.IsActive'); - $this->db->join('tbl_users as tbl',' det.createdby = tbl.userid','left'); - $this->db->join('T_Employee_Details as emp', 'emp.empid=tbl.empid','left'); - $this->db->join('tbl_users as tbl1',' det.UpdatedBy = tbl1.userid','left'); - $this->db->join('T_Employee_Details as emp1', 'emp1.empid=tbl1.empid','left'); - return $this->db->get('T_SupplierDetailsN as det')->result_array(); - } - - - - - } -?> \ No newline at end of file diff --git a/application/models/user_model.php b/application/models/user_model.php deleted file mode 100644 index 6cd0bc60..00000000 --- a/application/models/user_model.php +++ /dev/null @@ -1,215 +0,0 @@ -db->select('EMP.EmpID,EMP.FirstName,EMP.LastName,EMP.Designation,EMP.EmailId,EMP.ContactNumber, - DEPT.DEPCode,DEPT.DepartmentName,role.role,user.userId'); - $this->db->from('T_Employee_Details EMP'); - $this->db->join('T_DepartmentDetails DEPT', 'EMP.Departmentcode = DEPT.DEPCode'); - $this->db->join('tbl_users user', 'user.EmpID = EMP.EmpID'); - $this->db->join('tbl_roles role', 'user.roleId = role.roleId'); - - - $this->db->where('user.isDeleted !=', 1); - - $query = $this->db->get(); - - $result = $query->result(); - return $result; - } - - function GetRoleNameByUserID($UserId) - { - $subQuery = 'select roleId, role from tbl_roles - where roleId = (select roleId from tbl_users where userId=?)'; - - $query = $this->db->query($subQuery, array($UserId)); - - - return $query->result(); - - } - /** - * This function is used to get the user roles information - * @return array $result : This is result of the query - */ - function getUserRoles() - { - $this->db->select('roleId, role'); - $this->db->from('tbl_roles'); - $this->db->where("roleid <", 4); - $query = $this->db->get(); - - return $query->result(); - } - - /** - * This function is used to check whether email id is already exist or not - * @param {string} $email : This is email id - * @param {number} $userId : This is user id - * @return {mixed} $result : This is searched result - */ - function checkEmailExists($email, $userId = 0) - { - $this->db->select("email"); - $this->db->from("tbl_users"); - $this->db->where("email", $email); - $this->db->where("isDeleted", 0); - if($userId != 0){ - $this->db->where("userId !=", $userId); - } - $query = $this->db->get(); - - return $query->result(); - } - - - /** - * This function is used to add new user to system - * @return number $insert_id : This is last inserted id - */ - function addNewUser($userInfo) - { - $this->db->trans_start(); - $this->db->insert('tbl_users', $userInfo); - - $insert_id = $this->db->affected_rows(); - - $this->db->trans_complete(); - - return $insert_id; - } - - /** - * This function used to get user information by id - * @param number $userId : This is user id - * @return array $result : This is user information - */ - function getUserInfo($userId) - { - $this->db->select('userId, name, email, mobile, roleId,isDeleted'); - $this->db->from('tbl_users'); - $this->db->where('isDeleted', 0); - $this->db->where('roleId !=', 1); - $this->db->where('userId', $userId); - $query = $this->db->get(); - - return $query->result(); - } - - - /** - * This function is used to update the user information - * @param array $userInfo : This is users updated information - * @param number $userId : This is user id - */ - function editUser($userInfo, $userId) - { - $this->db->where('EmpID', $userId); - $this->db->update('tbl_users', $userInfo); - //print_r($this->db->last_query()); - return TRUE; - } - - - - /** - * This function is used to delete the user information - * @param number $userId : This is user id - * @return boolean $result : TRUE / FALSE - */ - function deleteUser($userId, $userInfo) - { - $this->db->where('userId', $userId); - $this->db->update('tbl_users', $userInfo); - - return $this->db->affected_rows(); - } - - - /** - * This function is used to match users password for change password - * @param number $userId : This is user id - */ - function matchOldPassword($userId, $oldPassword) - { - $this->db->select('userId, password'); - $this->db->where('userId', $userId); - $this->db->where('isDeleted', 0); - $query = $this->db->get('tbl_users'); - - $user = $query->result(); - - if(!empty($user)){ - if(verifyHashedPassword($oldPassword, $user[0]->password)){ - return $user; - } else { - return array(); - } - } else { - return array(); - } - } - - /** - * This function is used to change users password - * @param number $userId : This is user id - * @param array $userInfo : This is user updation info - */ - function changePassword($userId, $userInfo) - { - $this->db->where('userId', $userId); - $this->db->where('isDeleted', 0); - $this->db->update('tbl_users', $userInfo); - - return $this->db->affected_rows(); - } - /** - * This function is used to get Employee details based on Employee ID Selection - * @return array $result : This is result of the query - */ - function GetEmployeeDetails($UserId) - { - //echo $UserId; - $subQuery = 'select EMP.EmpID,EMP.FirstName,EMP.LastName,EMP.Designation,EMP.EmailId,EMP.ContactNumber,DEPT.DEPCode,DEPT.DepartmentName from - T_Employee_Details EMP join T_DepartmentDetails DEPT on - EMP.Departmentcode = DEPT.DEPCode where EMP.EmpID= (select EmpID from tbl_users where userId=?)'; - - $query = $this->db->query($subQuery, array($UserId)); - - - - return $query->result(); - } - /** - * This function is used to get the All employees - * @return array $result : This is result of the query - */ - function getAllEmployees() - { - /*$this->db->select('EmpID,FirstName,LastName'); - $this->db->from('T_Employee_Details'); - $query = $this->db->get(); - - return $query->result(); */ - $this->db->select('EMP.EmpID,EMP.FirstName,EMP.LastName,EMP.Designation,EMP.EmailId,EMP.ContactNumber,DEPT.DEPCode,DEPT.DepartmentName'); - $this->db->from('T_Employee_Details EMP'); - $this->db->join('T_DepartmentDetails DEPT', 'EMP.Departmentcode = DEPT.DEPCode'); - $this->db->where('EMP.IsActive ',1 ); - $query = $this->db->get(); - return $query->result(); - } -} - - \ No newline at end of file diff --git a/application/third_party/PHPExcel.php b/application/third_party/PHPExcel.php deleted file mode 100644 index b8dbe0ef..00000000 --- a/application/third_party/PHPExcel.php +++ /dev/null @@ -1,1153 +0,0 @@ -hasMacros; - } - - /** - * Define if a workbook has macros - * - * @param boolean $hasMacros true|false - */ - public function setHasMacros($hasMacros = false) - { - $this->hasMacros = (bool) $hasMacros; - } - - /** - * Set the macros code - * - * @param string $MacrosCode string|null - */ - public function setMacrosCode($MacrosCode = null) - { - $this->macrosCode=$MacrosCode; - $this->setHasMacros(!is_null($MacrosCode)); - } - - /** - * Return the macros code - * - * @return string|null - */ - public function getMacrosCode() - { - return $this->macrosCode; - } - - /** - * Set the macros certificate - * - * @param string|null $Certificate - */ - public function setMacrosCertificate($Certificate = null) - { - $this->macrosCertificate=$Certificate; - } - - /** - * Is the project signed ? - * - * @return boolean true|false - */ - public function hasMacrosCertificate() - { - return !is_null($this->macrosCertificate); - } - - /** - * Return the macros certificate - * - * @return string|null - */ - public function getMacrosCertificate() - { - return $this->macrosCertificate; - } - - /** - * Remove all macros, certificate from spreadsheet - * - */ - public function discardMacros() - { - $this->hasMacros=false; - $this->macrosCode=null; - $this->macrosCertificate=null; - } - - /** - * set ribbon XML data - * - */ - public function setRibbonXMLData($Target = null, $XMLData = null) - { - if (!is_null($Target) && !is_null($XMLData)) { - $this->ribbonXMLData = array('target' => $Target, 'data' => $XMLData); - } else { - $this->ribbonXMLData = null; - } - } - - /** - * retrieve ribbon XML Data - * - * return string|null|array - */ - public function getRibbonXMLData($What = 'all') //we need some constants here... - { - $ReturnData = null; - $What = strtolower($What); - switch ($What){ - case 'all': - $ReturnData = $this->ribbonXMLData; - break; - case 'target': - case 'data': - if (is_array($this->ribbonXMLData) && array_key_exists($What, $this->ribbonXMLData)) { - $ReturnData = $this->ribbonXMLData[$What]; - } - break; - } - - return $ReturnData; - } - - /** - * store binaries ribbon objects (pictures) - * - */ - public function setRibbonBinObjects($BinObjectsNames = null, $BinObjectsData = null) - { - if (!is_null($BinObjectsNames) && !is_null($BinObjectsData)) { - $this->ribbonBinObjects = array('names' => $BinObjectsNames, 'data' => $BinObjectsData); - } else { - $this->ribbonBinObjects = null; - } - } - /** - * return the extension of a filename. Internal use for a array_map callback (php<5.3 don't like lambda function) - * - */ - private function getExtensionOnly($ThePath) - { - return pathinfo($ThePath, PATHINFO_EXTENSION); - } - - /** - * retrieve Binaries Ribbon Objects - * - */ - public function getRibbonBinObjects($What = 'all') - { - $ReturnData = null; - $What = strtolower($What); - switch($What) { - case 'all': - return $this->ribbonBinObjects; - break; - case 'names': - case 'data': - if (is_array($this->ribbonBinObjects) && array_key_exists($What, $this->ribbonBinObjects)) { - $ReturnData=$this->ribbonBinObjects[$What]; - } - break; - case 'types': - if (is_array($this->ribbonBinObjects) && - array_key_exists('data', $this->ribbonBinObjects) && is_array($this->ribbonBinObjects['data'])) { - $tmpTypes=array_keys($this->ribbonBinObjects['data']); - $ReturnData = array_unique(array_map(array($this, 'getExtensionOnly'), $tmpTypes)); - } else { - $ReturnData=array(); // the caller want an array... not null if empty - } - break; - } - return $ReturnData; - } - - /** - * This workbook have a custom UI ? - * - * @return boolean true|false - */ - public function hasRibbon() - { - return !is_null($this->ribbonXMLData); - } - - /** - * This workbook have additionnal object for the ribbon ? - * - * @return boolean true|false - */ - public function hasRibbonBinObjects() - { - return !is_null($this->ribbonBinObjects); - } - - /** - * Check if a sheet with a specified code name already exists - * - * @param string $pSheetCodeName Name of the worksheet to check - * @return boolean - */ - public function sheetCodeNameExists($pSheetCodeName) - { - return ($this->getSheetByCodeName($pSheetCodeName) !== null); - } - - /** - * Get sheet by code name. Warning : sheet don't have always a code name ! - * - * @param string $pName Sheet name - * @return PHPExcel_Worksheet - */ - public function getSheetByCodeName($pName = '') - { - $worksheetCount = count($this->workSheetCollection); - for ($i = 0; $i < $worksheetCount; ++$i) { - if ($this->workSheetCollection[$i]->getCodeName() == $pName) { - return $this->workSheetCollection[$i]; - } - } - - return null; - } - - /** - * Create a new PHPExcel with one Worksheet - */ - public function __construct() - { - $this->uniqueID = uniqid(); - $this->calculationEngine = new PHPExcel_Calculation($this); - - // Initialise worksheet collection and add one worksheet - $this->workSheetCollection = array(); - $this->workSheetCollection[] = new PHPExcel_Worksheet($this); - $this->activeSheetIndex = 0; - - // Create document properties - $this->properties = new PHPExcel_DocumentProperties(); - - // Create document security - $this->security = new PHPExcel_DocumentSecurity(); - - // Set named ranges - $this->namedRanges = array(); - - // Create the cellXf supervisor - $this->cellXfSupervisor = new PHPExcel_Style(true); - $this->cellXfSupervisor->bindParent($this); - - // Create the default style - $this->addCellXf(new PHPExcel_Style); - $this->addCellStyleXf(new PHPExcel_Style); - } - - /** - * Code to execute when this worksheet is unset() - * - */ - public function __destruct() - { - $this->calculationEngine = null; - $this->disconnectWorksheets(); - } - - /** - * Disconnect all worksheets from this PHPExcel workbook object, - * typically so that the PHPExcel object can be unset - * - */ - public function disconnectWorksheets() - { - $worksheet = null; - foreach ($this->workSheetCollection as $k => &$worksheet) { - $worksheet->disconnectCells(); - $this->workSheetCollection[$k] = null; - } - unset($worksheet); - $this->workSheetCollection = array(); - } - - /** - * Return the calculation engine for this worksheet - * - * @return PHPExcel_Calculation - */ - public function getCalculationEngine() - { - return $this->calculationEngine; - } // function getCellCacheController() - - /** - * Get properties - * - * @return PHPExcel_DocumentProperties - */ - public function getProperties() - { - return $this->properties; - } - - /** - * Set properties - * - * @param PHPExcel_DocumentProperties $pValue - */ - public function setProperties(PHPExcel_DocumentProperties $pValue) - { - $this->properties = $pValue; - } - - /** - * Get security - * - * @return PHPExcel_DocumentSecurity - */ - public function getSecurity() - { - return $this->security; - } - - /** - * Set security - * - * @param PHPExcel_DocumentSecurity $pValue - */ - public function setSecurity(PHPExcel_DocumentSecurity $pValue) - { - $this->security = $pValue; - } - - /** - * Get active sheet - * - * @return PHPExcel_Worksheet - * - * @throws PHPExcel_Exception - */ - public function getActiveSheet() - { - return $this->getSheet($this->activeSheetIndex); - } - - /** - * Create sheet and add it to this workbook - * - * @param int|null $iSheetIndex Index where sheet should go (0,1,..., or null for last) - * @return PHPExcel_Worksheet - * @throws PHPExcel_Exception - */ - public function createSheet($iSheetIndex = null) - { - $newSheet = new PHPExcel_Worksheet($this); - $this->addSheet($newSheet, $iSheetIndex); - return $newSheet; - } - - /** - * Check if a sheet with a specified name already exists - * - * @param string $pSheetName Name of the worksheet to check - * @return boolean - */ - public function sheetNameExists($pSheetName) - { - return ($this->getSheetByName($pSheetName) !== null); - } - - /** - * Add sheet - * - * @param PHPExcel_Worksheet $pSheet - * @param int|null $iSheetIndex Index where sheet should go (0,1,..., or null for last) - * @return PHPExcel_Worksheet - * @throws PHPExcel_Exception - */ - public function addSheet(PHPExcel_Worksheet $pSheet, $iSheetIndex = null) - { - if ($this->sheetNameExists($pSheet->getTitle())) { - throw new PHPExcel_Exception( - "Workbook already contains a worksheet named '{$pSheet->getTitle()}'. Rename this worksheet first." - ); - } - - if ($iSheetIndex === null) { - if ($this->activeSheetIndex < 0) { - $this->activeSheetIndex = 0; - } - $this->workSheetCollection[] = $pSheet; - } else { - // Insert the sheet at the requested index - array_splice( - $this->workSheetCollection, - $iSheetIndex, - 0, - array($pSheet) - ); - - // Adjust active sheet index if necessary - if ($this->activeSheetIndex >= $iSheetIndex) { - ++$this->activeSheetIndex; - } - } - - if ($pSheet->getParent() === null) { - $pSheet->rebindParent($this); - } - - return $pSheet; - } - - /** - * Remove sheet by index - * - * @param int $pIndex Active sheet index - * @throws PHPExcel_Exception - */ - public function removeSheetByIndex($pIndex = 0) - { - - $numSheets = count($this->workSheetCollection); - if ($pIndex > $numSheets - 1) { - throw new PHPExcel_Exception( - "You tried to remove a sheet by the out of bounds index: {$pIndex}. The actual number of sheets is {$numSheets}." - ); - } else { - array_splice($this->workSheetCollection, $pIndex, 1); - } - // Adjust active sheet index if necessary - if (($this->activeSheetIndex >= $pIndex) && - ($pIndex > count($this->workSheetCollection) - 1)) { - --$this->activeSheetIndex; - } - - } - - /** - * Get sheet by index - * - * @param int $pIndex Sheet index - * @return PHPExcel_Worksheet - * @throws PHPExcel_Exception - */ - public function getSheet($pIndex = 0) - { - if (!isset($this->workSheetCollection[$pIndex])) { - $numSheets = $this->getSheetCount(); - throw new PHPExcel_Exception( - "Your requested sheet index: {$pIndex} is out of bounds. The actual number of sheets is {$numSheets}." - ); - } - - return $this->workSheetCollection[$pIndex]; - } - - /** - * Get all sheets - * - * @return PHPExcel_Worksheet[] - */ - public function getAllSheets() - { - return $this->workSheetCollection; - } - - /** - * Get sheet by name - * - * @param string $pName Sheet name - * @return PHPExcel_Worksheet - */ - public function getSheetByName($pName = '') - { - $worksheetCount = count($this->workSheetCollection); - for ($i = 0; $i < $worksheetCount; ++$i) { - if ($this->workSheetCollection[$i]->getTitle() === $pName) { - return $this->workSheetCollection[$i]; - } - } - - return null; - } - - /** - * Get index for sheet - * - * @param PHPExcel_Worksheet $pSheet - * @return int Sheet index - * @throws PHPExcel_Exception - */ - public function getIndex(PHPExcel_Worksheet $pSheet) - { - foreach ($this->workSheetCollection as $key => $value) { - if ($value->getHashCode() == $pSheet->getHashCode()) { - return $key; - } - } - - throw new PHPExcel_Exception("Sheet does not exist."); - } - - /** - * Set index for sheet by sheet name. - * - * @param string $sheetName Sheet name to modify index for - * @param int $newIndex New index for the sheet - * @return int New sheet index - * @throws PHPExcel_Exception - */ - public function setIndexByName($sheetName, $newIndex) - { - $oldIndex = $this->getIndex($this->getSheetByName($sheetName)); - $pSheet = array_splice( - $this->workSheetCollection, - $oldIndex, - 1 - ); - array_splice( - $this->workSheetCollection, - $newIndex, - 0, - $pSheet - ); - return $newIndex; - } - - /** - * Get sheet count - * - * @return int - */ - public function getSheetCount() - { - return count($this->workSheetCollection); - } - - /** - * Get active sheet index - * - * @return int Active sheet index - */ - public function getActiveSheetIndex() - { - return $this->activeSheetIndex; - } - - /** - * Set active sheet index - * - * @param int $pIndex Active sheet index - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet - */ - public function setActiveSheetIndex($pIndex = 0) - { - $numSheets = count($this->workSheetCollection); - - if ($pIndex > $numSheets - 1) { - throw new PHPExcel_Exception( - "You tried to set a sheet active by the out of bounds index: {$pIndex}. The actual number of sheets is {$numSheets}." - ); - } else { - $this->activeSheetIndex = $pIndex; - } - return $this->getActiveSheet(); - } - - /** - * Set active sheet index by name - * - * @param string $pValue Sheet title - * @return PHPExcel_Worksheet - * @throws PHPExcel_Exception - */ - public function setActiveSheetIndexByName($pValue = '') - { - if (($worksheet = $this->getSheetByName($pValue)) instanceof PHPExcel_Worksheet) { - $this->setActiveSheetIndex($this->getIndex($worksheet)); - return $worksheet; - } - - throw new PHPExcel_Exception('Workbook does not contain sheet:' . $pValue); - } - - /** - * Get sheet names - * - * @return string[] - */ - public function getSheetNames() - { - $returnValue = array(); - $worksheetCount = $this->getSheetCount(); - for ($i = 0; $i < $worksheetCount; ++$i) { - $returnValue[] = $this->getSheet($i)->getTitle(); - } - - return $returnValue; - } - - /** - * Add external sheet - * - * @param PHPExcel_Worksheet $pSheet External sheet to add - * @param int|null $iSheetIndex Index where sheet should go (0,1,..., or null for last) - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet - */ - public function addExternalSheet(PHPExcel_Worksheet $pSheet, $iSheetIndex = null) - { - if ($this->sheetNameExists($pSheet->getTitle())) { - throw new PHPExcel_Exception("Workbook already contains a worksheet named '{$pSheet->getTitle()}'. Rename the external sheet first."); - } - - // count how many cellXfs there are in this workbook currently, we will need this below - $countCellXfs = count($this->cellXfCollection); - - // copy all the shared cellXfs from the external workbook and append them to the current - foreach ($pSheet->getParent()->getCellXfCollection() as $cellXf) { - $this->addCellXf(clone $cellXf); - } - - // move sheet to this workbook - $pSheet->rebindParent($this); - - // update the cellXfs - foreach ($pSheet->getCellCollection(false) as $cellID) { - $cell = $pSheet->getCell($cellID); - $cell->setXfIndex($cell->getXfIndex() + $countCellXfs); - } - - return $this->addSheet($pSheet, $iSheetIndex); - } - - /** - * Get named ranges - * - * @return PHPExcel_NamedRange[] - */ - public function getNamedRanges() - { - return $this->namedRanges; - } - - /** - * Add named range - * - * @param PHPExcel_NamedRange $namedRange - * @return boolean - */ - public function addNamedRange(PHPExcel_NamedRange $namedRange) - { - if ($namedRange->getScope() == null) { - // global scope - $this->namedRanges[$namedRange->getName()] = $namedRange; - } else { - // local scope - $this->namedRanges[$namedRange->getScope()->getTitle().'!'.$namedRange->getName()] = $namedRange; - } - return true; - } - - /** - * Get named range - * - * @param string $namedRange - * @param PHPExcel_Worksheet|null $pSheet Scope. Use null for global scope - * @return PHPExcel_NamedRange|null - */ - public function getNamedRange($namedRange, PHPExcel_Worksheet $pSheet = null) - { - $returnValue = null; - - if ($namedRange != '' && ($namedRange !== null)) { - // first look for global defined name - if (isset($this->namedRanges[$namedRange])) { - $returnValue = $this->namedRanges[$namedRange]; - } - - // then look for local defined name (has priority over global defined name if both names exist) - if (($pSheet !== null) && isset($this->namedRanges[$pSheet->getTitle() . '!' . $namedRange])) { - $returnValue = $this->namedRanges[$pSheet->getTitle() . '!' . $namedRange]; - } - } - - return $returnValue; - } - - /** - * Remove named range - * - * @param string $namedRange - * @param PHPExcel_Worksheet|null $pSheet Scope: use null for global scope. - * @return PHPExcel - */ - public function removeNamedRange($namedRange, PHPExcel_Worksheet $pSheet = null) - { - if ($pSheet === null) { - if (isset($this->namedRanges[$namedRange])) { - unset($this->namedRanges[$namedRange]); - } - } else { - if (isset($this->namedRanges[$pSheet->getTitle() . '!' . $namedRange])) { - unset($this->namedRanges[$pSheet->getTitle() . '!' . $namedRange]); - } - } - return $this; - } - - /** - * Get worksheet iterator - * - * @return PHPExcel_WorksheetIterator - */ - public function getWorksheetIterator() - { - return new PHPExcel_WorksheetIterator($this); - } - - /** - * Copy workbook (!= clone!) - * - * @return PHPExcel - */ - public function copy() - { - $copied = clone $this; - - $worksheetCount = count($this->workSheetCollection); - for ($i = 0; $i < $worksheetCount; ++$i) { - $this->workSheetCollection[$i] = $this->workSheetCollection[$i]->copy(); - $this->workSheetCollection[$i]->rebindParent($this); - } - - return $copied; - } - - /** - * Implement PHP __clone to create a deep clone, not just a shallow copy. - */ - public function __clone() - { - foreach ($this as $key => $val) { - if (is_object($val) || (is_array($val))) { - $this->{$key} = unserialize(serialize($val)); - } - } - } - - /** - * Get the workbook collection of cellXfs - * - * @return PHPExcel_Style[] - */ - public function getCellXfCollection() - { - return $this->cellXfCollection; - } - - /** - * Get cellXf by index - * - * @param int $pIndex - * @return PHPExcel_Style - */ - public function getCellXfByIndex($pIndex = 0) - { - return $this->cellXfCollection[$pIndex]; - } - - /** - * Get cellXf by hash code - * - * @param string $pValue - * @return PHPExcel_Style|boolean False if no match found - */ - public function getCellXfByHashCode($pValue = '') - { - foreach ($this->cellXfCollection as $cellXf) { - if ($cellXf->getHashCode() == $pValue) { - return $cellXf; - } - } - return false; - } - - /** - * Check if style exists in style collection - * - * @param PHPExcel_Style $pCellStyle - * @return boolean - */ - public function cellXfExists($pCellStyle = null) - { - return in_array($pCellStyle, $this->cellXfCollection, true); - } - - /** - * Get default style - * - * @return PHPExcel_Style - * @throws PHPExcel_Exception - */ - public function getDefaultStyle() - { - if (isset($this->cellXfCollection[0])) { - return $this->cellXfCollection[0]; - } - throw new PHPExcel_Exception('No default style found for this workbook'); - } - - /** - * Add a cellXf to the workbook - * - * @param PHPExcel_Style $style - */ - public function addCellXf(PHPExcel_Style $style) - { - $this->cellXfCollection[] = $style; - $style->setIndex(count($this->cellXfCollection) - 1); - } - - /** - * Remove cellXf by index. It is ensured that all cells get their xf index updated. - * - * @param integer $pIndex Index to cellXf - * @throws PHPExcel_Exception - */ - public function removeCellXfByIndex($pIndex = 0) - { - if ($pIndex > count($this->cellXfCollection) - 1) { - throw new PHPExcel_Exception("CellXf index is out of bounds."); - } else { - // first remove the cellXf - array_splice($this->cellXfCollection, $pIndex, 1); - - // then update cellXf indexes for cells - foreach ($this->workSheetCollection as $worksheet) { - foreach ($worksheet->getCellCollection(false) as $cellID) { - $cell = $worksheet->getCell($cellID); - $xfIndex = $cell->getXfIndex(); - if ($xfIndex > $pIndex) { - // decrease xf index by 1 - $cell->setXfIndex($xfIndex - 1); - } elseif ($xfIndex == $pIndex) { - // set to default xf index 0 - $cell->setXfIndex(0); - } - } - } - } - } - - /** - * Get the cellXf supervisor - * - * @return PHPExcel_Style - */ - public function getCellXfSupervisor() - { - return $this->cellXfSupervisor; - } - - /** - * Get the workbook collection of cellStyleXfs - * - * @return PHPExcel_Style[] - */ - public function getCellStyleXfCollection() - { - return $this->cellStyleXfCollection; - } - - /** - * Get cellStyleXf by index - * - * @param integer $pIndex Index to cellXf - * @return PHPExcel_Style - */ - public function getCellStyleXfByIndex($pIndex = 0) - { - return $this->cellStyleXfCollection[$pIndex]; - } - - /** - * Get cellStyleXf by hash code - * - * @param string $pValue - * @return PHPExcel_Style|boolean False if no match found - */ - public function getCellStyleXfByHashCode($pValue = '') - { - foreach ($this->cellStyleXfCollection as $cellStyleXf) { - if ($cellStyleXf->getHashCode() == $pValue) { - return $cellStyleXf; - } - } - return false; - } - - /** - * Add a cellStyleXf to the workbook - * - * @param PHPExcel_Style $pStyle - */ - public function addCellStyleXf(PHPExcel_Style $pStyle) - { - $this->cellStyleXfCollection[] = $pStyle; - $pStyle->setIndex(count($this->cellStyleXfCollection) - 1); - } - - /** - * Remove cellStyleXf by index - * - * @param integer $pIndex Index to cellXf - * @throws PHPExcel_Exception - */ - public function removeCellStyleXfByIndex($pIndex = 0) - { - if ($pIndex > count($this->cellStyleXfCollection) - 1) { - throw new PHPExcel_Exception("CellStyleXf index is out of bounds."); - } else { - array_splice($this->cellStyleXfCollection, $pIndex, 1); - } - } - - /** - * Eliminate all unneeded cellXf and afterwards update the xfIndex for all cells - * and columns in the workbook - */ - public function garbageCollect() - { - // how many references are there to each cellXf ? - $countReferencesCellXf = array(); - foreach ($this->cellXfCollection as $index => $cellXf) { - $countReferencesCellXf[$index] = 0; - } - - foreach ($this->getWorksheetIterator() as $sheet) { - // from cells - foreach ($sheet->getCellCollection(false) as $cellID) { - $cell = $sheet->getCell($cellID); - ++$countReferencesCellXf[$cell->getXfIndex()]; - } - - // from row dimensions - foreach ($sheet->getRowDimensions() as $rowDimension) { - if ($rowDimension->getXfIndex() !== null) { - ++$countReferencesCellXf[$rowDimension->getXfIndex()]; - } - } - - // from column dimensions - foreach ($sheet->getColumnDimensions() as $columnDimension) { - ++$countReferencesCellXf[$columnDimension->getXfIndex()]; - } - } - - // remove cellXfs without references and create mapping so we can update xfIndex - // for all cells and columns - $countNeededCellXfs = 0; - $map = array(); - foreach ($this->cellXfCollection as $index => $cellXf) { - if ($countReferencesCellXf[$index] > 0 || $index == 0) { // we must never remove the first cellXf - ++$countNeededCellXfs; - } else { - unset($this->cellXfCollection[$index]); - } - $map[$index] = $countNeededCellXfs - 1; - } - $this->cellXfCollection = array_values($this->cellXfCollection); - - // update the index for all cellXfs - foreach ($this->cellXfCollection as $i => $cellXf) { - $cellXf->setIndex($i); - } - - // make sure there is always at least one cellXf (there should be) - if (empty($this->cellXfCollection)) { - $this->cellXfCollection[] = new PHPExcel_Style(); - } - - // update the xfIndex for all cells, row dimensions, column dimensions - foreach ($this->getWorksheetIterator() as $sheet) { - // for all cells - foreach ($sheet->getCellCollection(false) as $cellID) { - $cell = $sheet->getCell($cellID); - $cell->setXfIndex($map[$cell->getXfIndex()]); - } - - // for all row dimensions - foreach ($sheet->getRowDimensions() as $rowDimension) { - if ($rowDimension->getXfIndex() !== null) { - $rowDimension->setXfIndex($map[$rowDimension->getXfIndex()]); - } - } - - // for all column dimensions - foreach ($sheet->getColumnDimensions() as $columnDimension) { - $columnDimension->setXfIndex($map[$columnDimension->getXfIndex()]); - } - - // also do garbage collection for all the sheets - $sheet->garbageCollect(); - } - } - - /** - * Return the unique ID value assigned to this spreadsheet workbook - * - * @return string - */ - public function getID() - { - return $this->uniqueID; - } -} diff --git a/application/third_party/PHPExcel/Autoloader.php b/application/third_party/PHPExcel/Autoloader.php deleted file mode 100644 index c3b95a20..00000000 --- a/application/third_party/PHPExcel/Autoloader.php +++ /dev/null @@ -1,81 +0,0 @@ -= 0) { - return spl_autoload_register(array('PHPExcel_Autoloader', 'load'), true, true); - } else { - return spl_autoload_register(array('PHPExcel_Autoloader', 'load')); - } - } - - /** - * Autoload a class identified by name - * - * @param string $pClassName Name of the object to load - */ - public static function load($pClassName) - { - if ((class_exists($pClassName, false)) || (strpos($pClassName, 'PHPExcel') !== 0)) { - // Either already loaded, or not a PHPExcel class request - return false; - } - - $pClassFilePath = PHPEXCEL_ROOT . - str_replace('_', DIRECTORY_SEPARATOR, $pClassName) . - '.php'; - - if ((file_exists($pClassFilePath) === false) || (is_readable($pClassFilePath) === false)) { - // Can't load - return false; - } - - require($pClassFilePath); - } -} diff --git a/application/third_party/PHPExcel/CachedObjectStorage/APC.php b/application/third_party/PHPExcel/CachedObjectStorage/APC.php deleted file mode 100644 index c74b07fe..00000000 --- a/application/third_party/PHPExcel/CachedObjectStorage/APC.php +++ /dev/null @@ -1,290 +0,0 @@ -currentCellIsDirty && !empty($this->currentObjectID)) { - $this->currentObject->detach(); - - if (!apc_store( - $this->cachePrefix . $this->currentObjectID . '.cache', - serialize($this->currentObject), - $this->cacheTime - )) { - $this->__destruct(); - throw new PHPExcel_Exception('Failed to store cell ' . $this->currentObjectID . ' in APC'); - } - $this->currentCellIsDirty = false; - } - $this->currentObjectID = $this->currentObject = null; - } - - /** - * Add or Update a cell in cache identified by coordinate address - * - * @access public - * @param string $pCoord Coordinate address of the cell to update - * @param PHPExcel_Cell $cell Cell to update - * @return PHPExcel_Cell - * @throws PHPExcel_Exception - */ - public function addCacheData($pCoord, PHPExcel_Cell $cell) - { - if (($pCoord !== $this->currentObjectID) && ($this->currentObjectID !== null)) { - $this->storeData(); - } - $this->cellCache[$pCoord] = true; - - $this->currentObjectID = $pCoord; - $this->currentObject = $cell; - $this->currentCellIsDirty = true; - - return $cell; - } - - /** - * Is a value set in the current PHPExcel_CachedObjectStorage_ICache for an indexed cell? - * - * @access public - * @param string $pCoord Coordinate address of the cell to check - * @throws PHPExcel_Exception - * @return boolean - */ - public function isDataSet($pCoord) - { - // Check if the requested entry is the current object, or exists in the cache - if (parent::isDataSet($pCoord)) { - if ($this->currentObjectID == $pCoord) { - return true; - } - // Check if the requested entry still exists in apc - $success = apc_fetch($this->cachePrefix.$pCoord.'.cache'); - if ($success === false) { - // Entry no longer exists in APC, so clear it from the cache array - parent::deleteCacheData($pCoord); - throw new PHPExcel_Exception('Cell entry '.$pCoord.' no longer exists in APC cache'); - } - return true; - } - return false; - } - - /** - * Get cell at a specific coordinate - * - * @access public - * @param string $pCoord Coordinate of the cell - * @throws PHPExcel_Exception - * @return PHPExcel_Cell Cell that was found, or null if not found - */ - public function getCacheData($pCoord) - { - if ($pCoord === $this->currentObjectID) { - return $this->currentObject; - } - $this->storeData(); - - // Check if the entry that has been requested actually exists - if (parent::isDataSet($pCoord)) { - $obj = apc_fetch($this->cachePrefix . $pCoord . '.cache'); - if ($obj === false) { - // Entry no longer exists in APC, so clear it from the cache array - parent::deleteCacheData($pCoord); - throw new PHPExcel_Exception('Cell entry '.$pCoord.' no longer exists in APC cache'); - } - } else { - // Return null if requested entry doesn't exist in cache - return null; - } - - // Set current entry to the requested entry - $this->currentObjectID = $pCoord; - $this->currentObject = unserialize($obj); - // Re-attach this as the cell's parent - $this->currentObject->attach($this); - - // Return requested entry - return $this->currentObject; - } - - /** - * Get a list of all cell addresses currently held in cache - * - * @return string[] - */ - public function getCellList() - { - if ($this->currentObjectID !== null) { - $this->storeData(); - } - - return parent::getCellList(); - } - - /** - * Delete a cell in cache identified by coordinate address - * - * @access public - * @param string $pCoord Coordinate address of the cell to delete - * @throws PHPExcel_Exception - */ - public function deleteCacheData($pCoord) - { - // Delete the entry from APC - apc_delete($this->cachePrefix.$pCoord.'.cache'); - - // Delete the entry from our cell address array - parent::deleteCacheData($pCoord); - } - - /** - * Clone the cell collection - * - * @access public - * @param PHPExcel_Worksheet $parent The new worksheet - * @throws PHPExcel_Exception - * @return void - */ - public function copyCellCollection(PHPExcel_Worksheet $parent) - { - parent::copyCellCollection($parent); - // Get a new id for the new file name - $baseUnique = $this->getUniqueID(); - $newCachePrefix = substr(md5($baseUnique), 0, 8) . '.'; - $cacheList = $this->getCellList(); - foreach ($cacheList as $cellID) { - if ($cellID != $this->currentObjectID) { - $obj = apc_fetch($this->cachePrefix . $cellID . '.cache'); - if ($obj === false) { - // Entry no longer exists in APC, so clear it from the cache array - parent::deleteCacheData($cellID); - throw new PHPExcel_Exception('Cell entry ' . $cellID . ' no longer exists in APC'); - } - if (!apc_store($newCachePrefix . $cellID . '.cache', $obj, $this->cacheTime)) { - $this->__destruct(); - throw new PHPExcel_Exception('Failed to store cell ' . $cellID . ' in APC'); - } - } - } - $this->cachePrefix = $newCachePrefix; - } - - /** - * Clear the cell collection and disconnect from our parent - * - * @return void - */ - public function unsetWorksheetCells() - { - if ($this->currentObject !== null) { - $this->currentObject->detach(); - $this->currentObject = $this->currentObjectID = null; - } - - // Flush the APC cache - $this->__destruct(); - - $this->cellCache = array(); - - // detach ourself from the worksheet, so that it can then delete this object successfully - $this->parent = null; - } - - /** - * Initialise this new cell collection - * - * @param PHPExcel_Worksheet $parent The worksheet for this cell collection - * @param array of mixed $arguments Additional initialisation arguments - */ - public function __construct(PHPExcel_Worksheet $parent, $arguments) - { - $cacheTime = (isset($arguments['cacheTime'])) ? $arguments['cacheTime'] : 600; - - if ($this->cachePrefix === null) { - $baseUnique = $this->getUniqueID(); - $this->cachePrefix = substr(md5($baseUnique), 0, 8) . '.'; - $this->cacheTime = $cacheTime; - - parent::__construct($parent); - } - } - - /** - * Destroy this cell collection - */ - public function __destruct() - { - $cacheList = $this->getCellList(); - foreach ($cacheList as $cellID) { - apc_delete($this->cachePrefix . $cellID . '.cache'); - } - } - - /** - * Identify whether the caching method is currently available - * Some methods are dependent on the availability of certain extensions being enabled in the PHP build - * - * @return boolean - */ - public static function cacheMethodIsAvailable() - { - if (!function_exists('apc_store')) { - return false; - } - if (apc_sma_info() === false) { - return false; - } - - return true; - } -} diff --git a/application/third_party/PHPExcel/CachedObjectStorage/CacheBase.php b/application/third_party/PHPExcel/CachedObjectStorage/CacheBase.php deleted file mode 100644 index 9a12ec86..00000000 --- a/application/third_party/PHPExcel/CachedObjectStorage/CacheBase.php +++ /dev/null @@ -1,368 +0,0 @@ -parent = $parent; - } - - /** - * Return the parent worksheet for this cell collection - * - * @return PHPExcel_Worksheet - */ - public function getParent() - { - return $this->parent; - } - - /** - * Is a value set in the current PHPExcel_CachedObjectStorage_ICache for an indexed cell? - * - * @param string $pCoord Coordinate address of the cell to check - * @return boolean - */ - public function isDataSet($pCoord) - { - if ($pCoord === $this->currentObjectID) { - return true; - } - // Check if the requested entry exists in the cache - return isset($this->cellCache[$pCoord]); - } - - /** - * Move a cell object from one address to another - * - * @param string $fromAddress Current address of the cell to move - * @param string $toAddress Destination address of the cell to move - * @return boolean - */ - public function moveCell($fromAddress, $toAddress) - { - if ($fromAddress === $this->currentObjectID) { - $this->currentObjectID = $toAddress; - } - $this->currentCellIsDirty = true; - if (isset($this->cellCache[$fromAddress])) { - $this->cellCache[$toAddress] = &$this->cellCache[$fromAddress]; - unset($this->cellCache[$fromAddress]); - } - - return true; - } - - /** - * Add or Update a cell in cache - * - * @param PHPExcel_Cell $cell Cell to update - * @return PHPExcel_Cell - * @throws PHPExcel_Exception - */ - public function updateCacheData(PHPExcel_Cell $cell) - { - return $this->addCacheData($cell->getCoordinate(), $cell); - } - - /** - * Delete a cell in cache identified by coordinate address - * - * @param string $pCoord Coordinate address of the cell to delete - * @throws PHPExcel_Exception - */ - public function deleteCacheData($pCoord) - { - if ($pCoord === $this->currentObjectID && !is_null($this->currentObject)) { - $this->currentObject->detach(); - $this->currentObjectID = $this->currentObject = null; - } - - if (is_object($this->cellCache[$pCoord])) { - $this->cellCache[$pCoord]->detach(); - unset($this->cellCache[$pCoord]); - } - $this->currentCellIsDirty = false; - } - - /** - * Get a list of all cell addresses currently held in cache - * - * @return string[] - */ - public function getCellList() - { - return array_keys($this->cellCache); - } - - /** - * Sort the list of all cell addresses currently held in cache by row and column - * - * @return string[] - */ - public function getSortedCellList() - { - $sortKeys = array(); - foreach ($this->getCellList() as $coord) { - sscanf($coord, '%[A-Z]%d', $column, $row); - $sortKeys[sprintf('%09d%3s', $row, $column)] = $coord; - } - ksort($sortKeys); - - return array_values($sortKeys); - } - - /** - * Get highest worksheet column and highest row that have cell records - * - * @return array Highest column name and highest row number - */ - public function getHighestRowAndColumn() - { - // Lookup highest column and highest row - $col = array('A' => '1A'); - $row = array(1); - foreach ($this->getCellList() as $coord) { - sscanf($coord, '%[A-Z]%d', $c, $r); - $row[$r] = $r; - $col[$c] = strlen($c).$c; - } - if (!empty($row)) { - // Determine highest column and row - $highestRow = max($row); - $highestColumn = substr(max($col), 1); - } - - return array( - 'row' => $highestRow, - 'column' => $highestColumn - ); - } - - /** - * Return the cell address of the currently active cell object - * - * @return string - */ - public function getCurrentAddress() - { - return $this->currentObjectID; - } - - /** - * Return the column address of the currently active cell object - * - * @return string - */ - public function getCurrentColumn() - { - sscanf($this->currentObjectID, '%[A-Z]%d', $column, $row); - return $column; - } - - /** - * Return the row address of the currently active cell object - * - * @return integer - */ - public function getCurrentRow() - { - sscanf($this->currentObjectID, '%[A-Z]%d', $column, $row); - return (integer) $row; - } - - /** - * Get highest worksheet column - * - * @param string $row Return the highest column for the specified row, - * or the highest column of any row if no row number is passed - * @return string Highest column name - */ - public function getHighestColumn($row = null) - { - if ($row == null) { - $colRow = $this->getHighestRowAndColumn(); - return $colRow['column']; - } - - $columnList = array(1); - foreach ($this->getCellList() as $coord) { - sscanf($coord, '%[A-Z]%d', $c, $r); - if ($r != $row) { - continue; - } - $columnList[] = PHPExcel_Cell::columnIndexFromString($c); - } - return PHPExcel_Cell::stringFromColumnIndex(max($columnList) - 1); - } - - /** - * Get highest worksheet row - * - * @param string $column Return the highest row for the specified column, - * or the highest row of any column if no column letter is passed - * @return int Highest row number - */ - public function getHighestRow($column = null) - { - if ($column == null) { - $colRow = $this->getHighestRowAndColumn(); - return $colRow['row']; - } - - $rowList = array(0); - foreach ($this->getCellList() as $coord) { - sscanf($coord, '%[A-Z]%d', $c, $r); - if ($c != $column) { - continue; - } - $rowList[] = $r; - } - - return max($rowList); - } - - /** - * Generate a unique ID for cache referencing - * - * @return string Unique Reference - */ - protected function getUniqueID() - { - if (function_exists('posix_getpid')) { - $baseUnique = posix_getpid(); - } else { - $baseUnique = mt_rand(); - } - return uniqid($baseUnique, true); - } - - /** - * Clone the cell collection - * - * @param PHPExcel_Worksheet $parent The new worksheet - * @return void - */ - public function copyCellCollection(PHPExcel_Worksheet $parent) - { - $this->currentCellIsDirty; - $this->storeData(); - - $this->parent = $parent; - if (($this->currentObject !== null) && (is_object($this->currentObject))) { - $this->currentObject->attach($this); - } - } // function copyCellCollection() - - /** - * Remove a row, deleting all cells in that row - * - * @param string $row Row number to remove - * @return void - */ - public function removeRow($row) - { - foreach ($this->getCellList() as $coord) { - sscanf($coord, '%[A-Z]%d', $c, $r); - if ($r == $row) { - $this->deleteCacheData($coord); - } - } - } - - /** - * Remove a column, deleting all cells in that column - * - * @param string $column Column ID to remove - * @return void - */ - public function removeColumn($column) - { - foreach ($this->getCellList() as $coord) { - sscanf($coord, '%[A-Z]%d', $c, $r); - if ($c == $column) { - $this->deleteCacheData($coord); - } - } - } - - /** - * Identify whether the caching method is currently available - * Some methods are dependent on the availability of certain extensions being enabled in the PHP build - * - * @return boolean - */ - public static function cacheMethodIsAvailable() - { - return true; - } -} diff --git a/application/third_party/PHPExcel/CachedObjectStorage/DiscISAM.php b/application/third_party/PHPExcel/CachedObjectStorage/DiscISAM.php deleted file mode 100644 index 13bc0337..00000000 --- a/application/third_party/PHPExcel/CachedObjectStorage/DiscISAM.php +++ /dev/null @@ -1,208 +0,0 @@ -currentCellIsDirty && !empty($this->currentObjectID)) { - $this->currentObject->detach(); - - fseek($this->fileHandle, 0, SEEK_END); - - $this->cellCache[$this->currentObjectID] = array( - 'ptr' => ftell($this->fileHandle), - 'sz' => fwrite($this->fileHandle, serialize($this->currentObject)) - ); - $this->currentCellIsDirty = false; - } - $this->currentObjectID = $this->currentObject = null; - } - - /** - * Add or Update a cell in cache identified by coordinate address - * - * @param string $pCoord Coordinate address of the cell to update - * @param PHPExcel_Cell $cell Cell to update - * @return PHPExcel_Cell - * @throws PHPExcel_Exception - */ - public function addCacheData($pCoord, PHPExcel_Cell $cell) - { - if (($pCoord !== $this->currentObjectID) && ($this->currentObjectID !== null)) { - $this->storeData(); - } - - $this->currentObjectID = $pCoord; - $this->currentObject = $cell; - $this->currentCellIsDirty = true; - - return $cell; - } - - /** - * Get cell at a specific coordinate - * - * @param string $pCoord Coordinate of the cell - * @throws PHPExcel_Exception - * @return PHPExcel_Cell Cell that was found, or null if not found - */ - public function getCacheData($pCoord) - { - if ($pCoord === $this->currentObjectID) { - return $this->currentObject; - } - $this->storeData(); - - // Check if the entry that has been requested actually exists - if (!isset($this->cellCache[$pCoord])) { - // Return null if requested entry doesn't exist in cache - return null; - } - - // Set current entry to the requested entry - $this->currentObjectID = $pCoord; - fseek($this->fileHandle, $this->cellCache[$pCoord]['ptr']); - $this->currentObject = unserialize(fread($this->fileHandle, $this->cellCache[$pCoord]['sz'])); - // Re-attach this as the cell's parent - $this->currentObject->attach($this); - - // Return requested entry - return $this->currentObject; - } - - /** - * Get a list of all cell addresses currently held in cache - * - * @return string[] - */ - public function getCellList() - { - if ($this->currentObjectID !== null) { - $this->storeData(); - } - - return parent::getCellList(); - } - - /** - * Clone the cell collection - * - * @param PHPExcel_Worksheet $parent The new worksheet - */ - public function copyCellCollection(PHPExcel_Worksheet $parent) - { - parent::copyCellCollection($parent); - // Get a new id for the new file name - $baseUnique = $this->getUniqueID(); - $newFileName = $this->cacheDirectory.'/PHPExcel.'.$baseUnique.'.cache'; - // Copy the existing cell cache file - copy($this->fileName, $newFileName); - $this->fileName = $newFileName; - // Open the copied cell cache file - $this->fileHandle = fopen($this->fileName, 'a+'); - } - - /** - * Clear the cell collection and disconnect from our parent - * - */ - public function unsetWorksheetCells() - { - if (!is_null($this->currentObject)) { - $this->currentObject->detach(); - $this->currentObject = $this->currentObjectID = null; - } - $this->cellCache = array(); - - // detach ourself from the worksheet, so that it can then delete this object successfully - $this->parent = null; - - // Close down the temporary cache file - $this->__destruct(); - } - - /** - * Initialise this new cell collection - * - * @param PHPExcel_Worksheet $parent The worksheet for this cell collection - * @param array of mixed $arguments Additional initialisation arguments - */ - public function __construct(PHPExcel_Worksheet $parent, $arguments) - { - $this->cacheDirectory = ((isset($arguments['dir'])) && ($arguments['dir'] !== null)) - ? $arguments['dir'] - : PHPExcel_Shared_File::sys_get_temp_dir(); - - parent::__construct($parent); - if (is_null($this->fileHandle)) { - $baseUnique = $this->getUniqueID(); - $this->fileName = $this->cacheDirectory.'/PHPExcel.'.$baseUnique.'.cache'; - $this->fileHandle = fopen($this->fileName, 'a+'); - } - } - - /** - * Destroy this cell collection - */ - public function __destruct() - { - if (!is_null($this->fileHandle)) { - fclose($this->fileHandle); - unlink($this->fileName); - } - $this->fileHandle = null; - } -} diff --git a/application/third_party/PHPExcel/CachedObjectStorage/ICache.php b/application/third_party/PHPExcel/CachedObjectStorage/ICache.php deleted file mode 100644 index aafef6e9..00000000 --- a/application/third_party/PHPExcel/CachedObjectStorage/ICache.php +++ /dev/null @@ -1,103 +0,0 @@ -currentCellIsDirty && !empty($this->currentObjectID)) { - $this->currentObject->detach(); - - $this->cellCache[$this->currentObjectID] = igbinary_serialize($this->currentObject); - $this->currentCellIsDirty = false; - } - $this->currentObjectID = $this->currentObject = null; - } // function _storeData() - - - /** - * Add or Update a cell in cache identified by coordinate address - * - * @param string $pCoord Coordinate address of the cell to update - * @param PHPExcel_Cell $cell Cell to update - * @return PHPExcel_Cell - * @throws PHPExcel_Exception - */ - public function addCacheData($pCoord, PHPExcel_Cell $cell) - { - if (($pCoord !== $this->currentObjectID) && ($this->currentObjectID !== null)) { - $this->storeData(); - } - - $this->currentObjectID = $pCoord; - $this->currentObject = $cell; - $this->currentCellIsDirty = true; - - return $cell; - } // function addCacheData() - - - /** - * Get cell at a specific coordinate - * - * @param string $pCoord Coordinate of the cell - * @throws PHPExcel_Exception - * @return PHPExcel_Cell Cell that was found, or null if not found - */ - public function getCacheData($pCoord) - { - if ($pCoord === $this->currentObjectID) { - return $this->currentObject; - } - $this->storeData(); - - // Check if the entry that has been requested actually exists - if (!isset($this->cellCache[$pCoord])) { - // Return null if requested entry doesn't exist in cache - return null; - } - - // Set current entry to the requested entry - $this->currentObjectID = $pCoord; - $this->currentObject = igbinary_unserialize($this->cellCache[$pCoord]); - // Re-attach this as the cell's parent - $this->currentObject->attach($this); - - // Return requested entry - return $this->currentObject; - } // function getCacheData() - - - /** - * Get a list of all cell addresses currently held in cache - * - * @return string[] - */ - public function getCellList() - { - if ($this->currentObjectID !== null) { - $this->storeData(); - } - - return parent::getCellList(); - } - - - /** - * Clear the cell collection and disconnect from our parent - * - * @return void - */ - public function unsetWorksheetCells() - { - if (!is_null($this->currentObject)) { - $this->currentObject->detach(); - $this->currentObject = $this->currentObjectID = null; - } - $this->cellCache = array(); - - // detach ourself from the worksheet, so that it can then delete this object successfully - $this->parent = null; - } // function unsetWorksheetCells() - - - /** - * Identify whether the caching method is currently available - * Some methods are dependent on the availability of certain extensions being enabled in the PHP build - * - * @return boolean - */ - public static function cacheMethodIsAvailable() - { - if (!function_exists('igbinary_serialize')) { - return false; - } - - return true; - } -} diff --git a/application/third_party/PHPExcel/CachedObjectStorage/Memcache.php b/application/third_party/PHPExcel/CachedObjectStorage/Memcache.php deleted file mode 100644 index 07942cc3..00000000 --- a/application/third_party/PHPExcel/CachedObjectStorage/Memcache.php +++ /dev/null @@ -1,308 +0,0 @@ -currentCellIsDirty && !empty($this->currentObjectID)) { - $this->currentObject->detach(); - - $obj = serialize($this->currentObject); - if (!$this->memcache->replace($this->cachePrefix . $this->currentObjectID . '.cache', $obj, null, $this->cacheTime)) { - if (!$this->memcache->add($this->cachePrefix . $this->currentObjectID . '.cache', $obj, null, $this->cacheTime)) { - $this->__destruct(); - throw new PHPExcel_Exception("Failed to store cell {$this->currentObjectID} in MemCache"); - } - } - $this->currentCellIsDirty = false; - } - $this->currentObjectID = $this->currentObject = null; - } // function _storeData() - - - /** - * Add or Update a cell in cache identified by coordinate address - * - * @param string $pCoord Coordinate address of the cell to update - * @param PHPExcel_Cell $cell Cell to update - * @return PHPExcel_Cell - * @throws PHPExcel_Exception - */ - public function addCacheData($pCoord, PHPExcel_Cell $cell) - { - if (($pCoord !== $this->currentObjectID) && ($this->currentObjectID !== null)) { - $this->storeData(); - } - $this->cellCache[$pCoord] = true; - - $this->currentObjectID = $pCoord; - $this->currentObject = $cell; - $this->currentCellIsDirty = true; - - return $cell; - } // function addCacheData() - - - /** - * Is a value set in the current PHPExcel_CachedObjectStorage_ICache for an indexed cell? - * - * @param string $pCoord Coordinate address of the cell to check - * @return boolean - * @return boolean - */ - public function isDataSet($pCoord) - { - // Check if the requested entry is the current object, or exists in the cache - if (parent::isDataSet($pCoord)) { - if ($this->currentObjectID == $pCoord) { - return true; - } - // Check if the requested entry still exists in Memcache - $success = $this->memcache->get($this->cachePrefix.$pCoord.'.cache'); - if ($success === false) { - // Entry no longer exists in Memcache, so clear it from the cache array - parent::deleteCacheData($pCoord); - throw new PHPExcel_Exception('Cell entry '.$pCoord.' no longer exists in MemCache'); - } - return true; - } - return false; - } - - - /** - * Get cell at a specific coordinate - * - * @param string $pCoord Coordinate of the cell - * @throws PHPExcel_Exception - * @return PHPExcel_Cell Cell that was found, or null if not found - */ - public function getCacheData($pCoord) - { - if ($pCoord === $this->currentObjectID) { - return $this->currentObject; - } - $this->storeData(); - - // Check if the entry that has been requested actually exists - if (parent::isDataSet($pCoord)) { - $obj = $this->memcache->get($this->cachePrefix . $pCoord . '.cache'); - if ($obj === false) { - // Entry no longer exists in Memcache, so clear it from the cache array - parent::deleteCacheData($pCoord); - throw new PHPExcel_Exception("Cell entry {$pCoord} no longer exists in MemCache"); - } - } else { - // Return null if requested entry doesn't exist in cache - return null; - } - - // Set current entry to the requested entry - $this->currentObjectID = $pCoord; - $this->currentObject = unserialize($obj); - // Re-attach this as the cell's parent - $this->currentObject->attach($this); - - // Return requested entry - return $this->currentObject; - } - - /** - * Get a list of all cell addresses currently held in cache - * - * @return string[] - */ - public function getCellList() - { - if ($this->currentObjectID !== null) { - $this->storeData(); - } - - return parent::getCellList(); - } - - /** - * Delete a cell in cache identified by coordinate address - * - * @param string $pCoord Coordinate address of the cell to delete - * @throws PHPExcel_Exception - */ - public function deleteCacheData($pCoord) - { - // Delete the entry from Memcache - $this->memcache->delete($this->cachePrefix . $pCoord . '.cache'); - - // Delete the entry from our cell address array - parent::deleteCacheData($pCoord); - } - - /** - * Clone the cell collection - * - * @param PHPExcel_Worksheet $parent The new worksheet - * @return void - */ - public function copyCellCollection(PHPExcel_Worksheet $parent) - { - parent::copyCellCollection($parent); - // Get a new id for the new file name - $baseUnique = $this->getUniqueID(); - $newCachePrefix = substr(md5($baseUnique), 0, 8) . '.'; - $cacheList = $this->getCellList(); - foreach ($cacheList as $cellID) { - if ($cellID != $this->currentObjectID) { - $obj = $this->memcache->get($this->cachePrefix.$cellID.'.cache'); - if ($obj === false) { - // Entry no longer exists in Memcache, so clear it from the cache array - parent::deleteCacheData($cellID); - throw new PHPExcel_Exception("Cell entry {$cellID} no longer exists in MemCache"); - } - if (!$this->memcache->add($newCachePrefix . $cellID . '.cache', $obj, null, $this->cacheTime)) { - $this->__destruct(); - throw new PHPExcel_Exception("Failed to store cell {$cellID} in MemCache"); - } - } - } - $this->cachePrefix = $newCachePrefix; - } - - /** - * Clear the cell collection and disconnect from our parent - * - * @return void - */ - public function unsetWorksheetCells() - { - if (!is_null($this->currentObject)) { - $this->currentObject->detach(); - $this->currentObject = $this->currentObjectID = null; - } - - // Flush the Memcache cache - $this->__destruct(); - - $this->cellCache = array(); - - // detach ourself from the worksheet, so that it can then delete this object successfully - $this->parent = null; - } - - /** - * Initialise this new cell collection - * - * @param PHPExcel_Worksheet $parent The worksheet for this cell collection - * @param array of mixed $arguments Additional initialisation arguments - */ - public function __construct(PHPExcel_Worksheet $parent, $arguments) - { - $memcacheServer = (isset($arguments['memcacheServer'])) ? $arguments['memcacheServer'] : 'localhost'; - $memcachePort = (isset($arguments['memcachePort'])) ? $arguments['memcachePort'] : 11211; - $cacheTime = (isset($arguments['cacheTime'])) ? $arguments['cacheTime'] : 600; - - if (is_null($this->cachePrefix)) { - $baseUnique = $this->getUniqueID(); - $this->cachePrefix = substr(md5($baseUnique), 0, 8) . '.'; - - // Set a new Memcache object and connect to the Memcache server - $this->memcache = new Memcache(); - if (!$this->memcache->addServer($memcacheServer, $memcachePort, false, 50, 5, 5, true, array($this, 'failureCallback'))) { - throw new PHPExcel_Exception("Could not connect to MemCache server at {$memcacheServer}:{$memcachePort}"); - } - $this->cacheTime = $cacheTime; - - parent::__construct($parent); - } - } - - /** - * Memcache error handler - * - * @param string $host Memcache server - * @param integer $port Memcache port - * @throws PHPExcel_Exception - */ - public function failureCallback($host, $port) - { - throw new PHPExcel_Exception("memcache {$host}:{$port} failed"); - } - - /** - * Destroy this cell collection - */ - public function __destruct() - { - $cacheList = $this->getCellList(); - foreach ($cacheList as $cellID) { - $this->memcache->delete($this->cachePrefix.$cellID . '.cache'); - } - } - - /** - * Identify whether the caching method is currently available - * Some methods are dependent on the availability of certain extensions being enabled in the PHP build - * - * @return boolean - */ - public static function cacheMethodIsAvailable() - { - if (!function_exists('memcache_add')) { - return false; - } - - return true; - } -} diff --git a/application/third_party/PHPExcel/CachedObjectStorage/Memory.php b/application/third_party/PHPExcel/CachedObjectStorage/Memory.php deleted file mode 100644 index 0e2ea0b0..00000000 --- a/application/third_party/PHPExcel/CachedObjectStorage/Memory.php +++ /dev/null @@ -1,118 +0,0 @@ -cellCache[$pCoord] = $cell; - - // Set current entry to the new/updated entry - $this->currentObjectID = $pCoord; - - return $cell; - } - - - /** - * Get cell at a specific coordinate - * - * @param string $pCoord Coordinate of the cell - * @throws PHPExcel_Exception - * @return PHPExcel_Cell Cell that was found, or null if not found - */ - public function getCacheData($pCoord) - { - // Check if the entry that has been requested actually exists - if (!isset($this->cellCache[$pCoord])) { - $this->currentObjectID = null; - // Return null if requested entry doesn't exist in cache - return null; - } - - // Set current entry to the requested entry - $this->currentObjectID = $pCoord; - - // Return requested entry - return $this->cellCache[$pCoord]; - } - - - /** - * Clone the cell collection - * - * @param PHPExcel_Worksheet $parent The new worksheet - */ - public function copyCellCollection(PHPExcel_Worksheet $parent) - { - parent::copyCellCollection($parent); - - $newCollection = array(); - foreach ($this->cellCache as $k => &$cell) { - $newCollection[$k] = clone $cell; - $newCollection[$k]->attach($this); - } - - $this->cellCache = $newCollection; - } - - /** - * Clear the cell collection and disconnect from our parent - * - */ - public function unsetWorksheetCells() - { - // Because cells are all stored as intact objects in memory, we need to detach each one from the parent - foreach ($this->cellCache as $k => &$cell) { - $cell->detach(); - $this->cellCache[$k] = null; - } - unset($cell); - - $this->cellCache = array(); - - // detach ourself from the worksheet, so that it can then delete this object successfully - $this->parent = null; - } -} diff --git a/application/third_party/PHPExcel/CachedObjectStorage/MemoryGZip.php b/application/third_party/PHPExcel/CachedObjectStorage/MemoryGZip.php deleted file mode 100644 index c06ec714..00000000 --- a/application/third_party/PHPExcel/CachedObjectStorage/MemoryGZip.php +++ /dev/null @@ -1,133 +0,0 @@ -currentCellIsDirty && !empty($this->currentObjectID)) { - $this->currentObject->detach(); - - $this->cellCache[$this->currentObjectID] = gzdeflate(serialize($this->currentObject)); - $this->currentCellIsDirty = false; - } - $this->currentObjectID = $this->currentObject = null; - } - - - /** - * Add or Update a cell in cache identified by coordinate address - * - * @param string $pCoord Coordinate address of the cell to update - * @param PHPExcel_Cell $cell Cell to update - * @return PHPExcel_Cell - * @throws PHPExcel_Exception - */ - public function addCacheData($pCoord, PHPExcel_Cell $cell) - { - if (($pCoord !== $this->currentObjectID) && ($this->currentObjectID !== null)) { - $this->storeData(); - } - - $this->currentObjectID = $pCoord; - $this->currentObject = $cell; - $this->currentCellIsDirty = true; - - return $cell; - } - - - /** - * Get cell at a specific coordinate - * - * @param string $pCoord Coordinate of the cell - * @throws PHPExcel_Exception - * @return PHPExcel_Cell Cell that was found, or null if not found - */ - public function getCacheData($pCoord) - { - if ($pCoord === $this->currentObjectID) { - return $this->currentObject; - } - $this->storeData(); - - // Check if the entry that has been requested actually exists - if (!isset($this->cellCache[$pCoord])) { - // Return null if requested entry doesn't exist in cache - return null; - } - - // Set current entry to the requested entry - $this->currentObjectID = $pCoord; - $this->currentObject = unserialize(gzinflate($this->cellCache[$pCoord])); - // Re-attach this as the cell's parent - $this->currentObject->attach($this); - - // Return requested entry - return $this->currentObject; - } - - - /** - * Get a list of all cell addresses currently held in cache - * - * @return string[] - */ - public function getCellList() - { - if ($this->currentObjectID !== null) { - $this->storeData(); - } - - return parent::getCellList(); - } - - - /** - * Clear the cell collection and disconnect from our parent - * - * @return void - */ - public function unsetWorksheetCells() - { - if (!is_null($this->currentObject)) { - $this->currentObject->detach(); - $this->currentObject = $this->currentObjectID = null; - } - $this->cellCache = array(); - - // detach ourself from the worksheet, so that it can then delete this object successfully - $this->parent = null; - } -} diff --git a/application/third_party/PHPExcel/CachedObjectStorage/MemorySerialized.php b/application/third_party/PHPExcel/CachedObjectStorage/MemorySerialized.php deleted file mode 100644 index 13325149..00000000 --- a/application/third_party/PHPExcel/CachedObjectStorage/MemorySerialized.php +++ /dev/null @@ -1,129 +0,0 @@ -currentCellIsDirty && !empty($this->currentObjectID)) { - $this->currentObject->detach(); - - $this->cellCache[$this->currentObjectID] = serialize($this->currentObject); - $this->currentCellIsDirty = false; - } - $this->currentObjectID = $this->currentObject = null; - } - - /** - * Add or Update a cell in cache identified by coordinate address - * - * @param string $pCoord Coordinate address of the cell to update - * @param PHPExcel_Cell $cell Cell to update - * @return PHPExcel_Cell - * @throws PHPExcel_Exception - */ - public function addCacheData($pCoord, PHPExcel_Cell $cell) - { - if (($pCoord !== $this->currentObjectID) && ($this->currentObjectID !== null)) { - $this->storeData(); - } - - $this->currentObjectID = $pCoord; - $this->currentObject = $cell; - $this->currentCellIsDirty = true; - - return $cell; - } - - /** - * Get cell at a specific coordinate - * - * @param string $pCoord Coordinate of the cell - * @throws PHPExcel_Exception - * @return PHPExcel_Cell Cell that was found, or null if not found - */ - public function getCacheData($pCoord) - { - if ($pCoord === $this->currentObjectID) { - return $this->currentObject; - } - $this->storeData(); - - // Check if the entry that has been requested actually exists - if (!isset($this->cellCache[$pCoord])) { - // Return null if requested entry doesn't exist in cache - return null; - } - - // Set current entry to the requested entry - $this->currentObjectID = $pCoord; - $this->currentObject = unserialize($this->cellCache[$pCoord]); - // Re-attach this as the cell's parent - $this->currentObject->attach($this); - - // Return requested entry - return $this->currentObject; - } - - /** - * Get a list of all cell addresses currently held in cache - * - * @return string[] - */ - public function getCellList() - { - if ($this->currentObjectID !== null) { - $this->storeData(); - } - - return parent::getCellList(); - } - - /** - * Clear the cell collection and disconnect from our parent - * - * @return void - */ - public function unsetWorksheetCells() - { - if (!is_null($this->currentObject)) { - $this->currentObject->detach(); - $this->currentObject = $this->currentObjectID = null; - } - $this->cellCache = array(); - - // detach ourself from the worksheet, so that it can then delete this object successfully - $this->parent = null; - } -} diff --git a/application/third_party/PHPExcel/CachedObjectStorage/PHPTemp.php b/application/third_party/PHPExcel/CachedObjectStorage/PHPTemp.php deleted file mode 100644 index 43c78197..00000000 --- a/application/third_party/PHPExcel/CachedObjectStorage/PHPTemp.php +++ /dev/null @@ -1,200 +0,0 @@ -currentCellIsDirty && !empty($this->currentObjectID)) { - $this->currentObject->detach(); - - fseek($this->fileHandle, 0, SEEK_END); - - $this->cellCache[$this->currentObjectID] = array( - 'ptr' => ftell($this->fileHandle), - 'sz' => fwrite($this->fileHandle, serialize($this->currentObject)) - ); - $this->currentCellIsDirty = false; - } - $this->currentObjectID = $this->currentObject = null; - } - - - /** - * Add or Update a cell in cache identified by coordinate address - * - * @param string $pCoord Coordinate address of the cell to update - * @param PHPExcel_Cell $cell Cell to update - * @return PHPExcel_Cell - * @throws PHPExcel_Exception - */ - public function addCacheData($pCoord, PHPExcel_Cell $cell) - { - if (($pCoord !== $this->currentObjectID) && ($this->currentObjectID !== null)) { - $this->storeData(); - } - - $this->currentObjectID = $pCoord; - $this->currentObject = $cell; - $this->currentCellIsDirty = true; - - return $cell; - } - - - /** - * Get cell at a specific coordinate - * - * @param string $pCoord Coordinate of the cell - * @throws PHPExcel_Exception - * @return PHPExcel_Cell Cell that was found, or null if not found - */ - public function getCacheData($pCoord) - { - if ($pCoord === $this->currentObjectID) { - return $this->currentObject; - } - $this->storeData(); - - // Check if the entry that has been requested actually exists - if (!isset($this->cellCache[$pCoord])) { - // Return null if requested entry doesn't exist in cache - return null; - } - - // Set current entry to the requested entry - $this->currentObjectID = $pCoord; - fseek($this->fileHandle, $this->cellCache[$pCoord]['ptr']); - $this->currentObject = unserialize(fread($this->fileHandle, $this->cellCache[$pCoord]['sz'])); - // Re-attach this as the cell's parent - $this->currentObject->attach($this); - - // Return requested entry - return $this->currentObject; - } - - /** - * Get a list of all cell addresses currently held in cache - * - * @return string[] - */ - public function getCellList() - { - if ($this->currentObjectID !== null) { - $this->storeData(); - } - - return parent::getCellList(); - } - - /** - * Clone the cell collection - * - * @param PHPExcel_Worksheet $parent The new worksheet - * @return void - */ - public function copyCellCollection(PHPExcel_Worksheet $parent) - { - parent::copyCellCollection($parent); - // Open a new stream for the cell cache data - $newFileHandle = fopen('php://temp/maxmemory:' . $this->memoryCacheSize, 'a+'); - // Copy the existing cell cache data to the new stream - fseek($this->fileHandle, 0); - while (!feof($this->fileHandle)) { - fwrite($newFileHandle, fread($this->fileHandle, 1024)); - } - $this->fileHandle = $newFileHandle; - } - - /** - * Clear the cell collection and disconnect from our parent - * - * @return void - */ - public function unsetWorksheetCells() - { - if (!is_null($this->currentObject)) { - $this->currentObject->detach(); - $this->currentObject = $this->currentObjectID = null; - } - $this->cellCache = array(); - - // detach ourself from the worksheet, so that it can then delete this object successfully - $this->parent = null; - - // Close down the php://temp file - $this->__destruct(); - } - - /** - * Initialise this new cell collection - * - * @param PHPExcel_Worksheet $parent The worksheet for this cell collection - * @param array of mixed $arguments Additional initialisation arguments - */ - public function __construct(PHPExcel_Worksheet $parent, $arguments) - { - $this->memoryCacheSize = (isset($arguments['memoryCacheSize'])) ? $arguments['memoryCacheSize'] : '1MB'; - - parent::__construct($parent); - if (is_null($this->fileHandle)) { - $this->fileHandle = fopen('php://temp/maxmemory:' . $this->memoryCacheSize, 'a+'); - } - } - - /** - * Destroy this cell collection - */ - public function __destruct() - { - if (!is_null($this->fileHandle)) { - fclose($this->fileHandle); - } - $this->fileHandle = null; - } -} diff --git a/application/third_party/PHPExcel/CachedObjectStorage/SQLite.php b/application/third_party/PHPExcel/CachedObjectStorage/SQLite.php deleted file mode 100644 index e7b50c5b..00000000 --- a/application/third_party/PHPExcel/CachedObjectStorage/SQLite.php +++ /dev/null @@ -1,307 +0,0 @@ -currentCellIsDirty && !empty($this->currentObjectID)) { - $this->currentObject->detach(); - - if (!$this->DBHandle->queryExec("INSERT OR REPLACE INTO kvp_".$this->TableName." VALUES('".$this->currentObjectID."','".sqlite_escape_string(serialize($this->currentObject))."')")) { - throw new PHPExcel_Exception(sqlite_error_string($this->DBHandle->lastError())); - } - $this->currentCellIsDirty = false; - } - $this->currentObjectID = $this->currentObject = null; - } - - /** - * Add or Update a cell in cache identified by coordinate address - * - * @param string $pCoord Coordinate address of the cell to update - * @param PHPExcel_Cell $cell Cell to update - * @return PHPExcel_Cell - * @throws PHPExcel_Exception - */ - public function addCacheData($pCoord, PHPExcel_Cell $cell) - { - if (($pCoord !== $this->currentObjectID) && ($this->currentObjectID !== null)) { - $this->storeData(); - } - - $this->currentObjectID = $pCoord; - $this->currentObject = $cell; - $this->currentCellIsDirty = true; - - return $cell; - } - - /** - * Get cell at a specific coordinate - * - * @param string $pCoord Coordinate of the cell - * @throws PHPExcel_Exception - * @return PHPExcel_Cell Cell that was found, or null if not found - */ - public function getCacheData($pCoord) - { - if ($pCoord === $this->currentObjectID) { - return $this->currentObject; - } - $this->storeData(); - - $query = "SELECT value FROM kvp_".$this->TableName." WHERE id='".$pCoord."'"; - $cellResultSet = $this->DBHandle->query($query, SQLITE_ASSOC); - if ($cellResultSet === false) { - throw new PHPExcel_Exception(sqlite_error_string($this->DBHandle->lastError())); - } elseif ($cellResultSet->numRows() == 0) { - // Return null if requested entry doesn't exist in cache - return null; - } - - // Set current entry to the requested entry - $this->currentObjectID = $pCoord; - - $cellResult = $cellResultSet->fetchSingle(); - $this->currentObject = unserialize($cellResult); - // Re-attach this as the cell's parent - $this->currentObject->attach($this); - - // Return requested entry - return $this->currentObject; - } - - /** - * Is a value set for an indexed cell? - * - * @param string $pCoord Coordinate address of the cell to check - * @return boolean - */ - public function isDataSet($pCoord) - { - if ($pCoord === $this->currentObjectID) { - return true; - } - - // Check if the requested entry exists in the cache - $query = "SELECT id FROM kvp_".$this->TableName." WHERE id='".$pCoord."'"; - $cellResultSet = $this->DBHandle->query($query, SQLITE_ASSOC); - if ($cellResultSet === false) { - throw new PHPExcel_Exception(sqlite_error_string($this->DBHandle->lastError())); - } elseif ($cellResultSet->numRows() == 0) { - // Return null if requested entry doesn't exist in cache - return false; - } - return true; - } - - /** - * Delete a cell in cache identified by coordinate address - * - * @param string $pCoord Coordinate address of the cell to delete - * @throws PHPExcel_Exception - */ - public function deleteCacheData($pCoord) - { - if ($pCoord === $this->currentObjectID) { - $this->currentObject->detach(); - $this->currentObjectID = $this->currentObject = null; - } - - // Check if the requested entry exists in the cache - $query = "DELETE FROM kvp_".$this->TableName." WHERE id='".$pCoord."'"; - if (!$this->DBHandle->queryExec($query)) { - throw new PHPExcel_Exception(sqlite_error_string($this->DBHandle->lastError())); - } - - $this->currentCellIsDirty = false; - } - - /** - * Move a cell object from one address to another - * - * @param string $fromAddress Current address of the cell to move - * @param string $toAddress Destination address of the cell to move - * @return boolean - */ - public function moveCell($fromAddress, $toAddress) - { - if ($fromAddress === $this->currentObjectID) { - $this->currentObjectID = $toAddress; - } - - $query = "DELETE FROM kvp_".$this->TableName." WHERE id='".$toAddress."'"; - $result = $this->DBHandle->exec($query); - if ($result === false) { - throw new PHPExcel_Exception($this->DBHandle->lastErrorMsg()); - } - - $query = "UPDATE kvp_".$this->TableName." SET id='".$toAddress."' WHERE id='".$fromAddress."'"; - $result = $this->DBHandle->exec($query); - if ($result === false) { - throw new PHPExcel_Exception($this->DBHandle->lastErrorMsg()); - } - - return true; - } - - /** - * Get a list of all cell addresses currently held in cache - * - * @return string[] - */ - public function getCellList() - { - if ($this->currentObjectID !== null) { - $this->storeData(); - } - - $query = "SELECT id FROM kvp_".$this->TableName; - $cellIdsResult = $this->DBHandle->unbufferedQuery($query, SQLITE_ASSOC); - if ($cellIdsResult === false) { - throw new PHPExcel_Exception(sqlite_error_string($this->DBHandle->lastError())); - } - - $cellKeys = array(); - foreach ($cellIdsResult as $row) { - $cellKeys[] = $row['id']; - } - - return $cellKeys; - } - - /** - * Clone the cell collection - * - * @param PHPExcel_Worksheet $parent The new worksheet - * @return void - */ - public function copyCellCollection(PHPExcel_Worksheet $parent) - { - $this->currentCellIsDirty; - $this->storeData(); - - // Get a new id for the new table name - $tableName = str_replace('.', '_', $this->getUniqueID()); - if (!$this->DBHandle->queryExec('CREATE TABLE kvp_'.$tableName.' (id VARCHAR(12) PRIMARY KEY, value BLOB) - AS SELECT * FROM kvp_'.$this->TableName) - ) { - throw new PHPExcel_Exception(sqlite_error_string($this->DBHandle->lastError())); - } - - // Copy the existing cell cache file - $this->TableName = $tableName; - } - - /** - * Clear the cell collection and disconnect from our parent - * - * @return void - */ - public function unsetWorksheetCells() - { - if (!is_null($this->currentObject)) { - $this->currentObject->detach(); - $this->currentObject = $this->currentObjectID = null; - } - // detach ourself from the worksheet, so that it can then delete this object successfully - $this->parent = null; - - // Close down the temporary cache file - $this->__destruct(); - } - - /** - * Initialise this new cell collection - * - * @param PHPExcel_Worksheet $parent The worksheet for this cell collection - */ - public function __construct(PHPExcel_Worksheet $parent) - { - parent::__construct($parent); - if (is_null($this->DBHandle)) { - $this->TableName = str_replace('.', '_', $this->getUniqueID()); - $_DBName = ':memory:'; - - $this->DBHandle = new SQLiteDatabase($_DBName); - if ($this->DBHandle === false) { - throw new PHPExcel_Exception(sqlite_error_string($this->DBHandle->lastError())); - } - if (!$this->DBHandle->queryExec('CREATE TABLE kvp_'.$this->TableName.' (id VARCHAR(12) PRIMARY KEY, value BLOB)')) { - throw new PHPExcel_Exception(sqlite_error_string($this->DBHandle->lastError())); - } - } - } - - /** - * Destroy this cell collection - */ - public function __destruct() - { - if (!is_null($this->DBHandle)) { - $this->DBHandle->queryExec('DROP TABLE kvp_'.$this->TableName); - } - $this->DBHandle = null; - } - - /** - * Identify whether the caching method is currently available - * Some methods are dependent on the availability of certain extensions being enabled in the PHP build - * - * @return boolean - */ - public static function cacheMethodIsAvailable() - { - if (!function_exists('sqlite_open')) { - return false; - } - - return true; - } -} diff --git a/application/third_party/PHPExcel/CachedObjectStorage/SQLite3.php b/application/third_party/PHPExcel/CachedObjectStorage/SQLite3.php deleted file mode 100644 index 27473d6c..00000000 --- a/application/third_party/PHPExcel/CachedObjectStorage/SQLite3.php +++ /dev/null @@ -1,346 +0,0 @@ -currentCellIsDirty && !empty($this->currentObjectID)) { - $this->currentObject->detach(); - - $this->insertQuery->bindValue('id', $this->currentObjectID, SQLITE3_TEXT); - $this->insertQuery->bindValue('data', serialize($this->currentObject), SQLITE3_BLOB); - $result = $this->insertQuery->execute(); - if ($result === false) { - throw new PHPExcel_Exception($this->DBHandle->lastErrorMsg()); - } - $this->currentCellIsDirty = false; - } - $this->currentObjectID = $this->currentObject = null; - } - - /** - * Add or Update a cell in cache identified by coordinate address - * - * @param string $pCoord Coordinate address of the cell to update - * @param PHPExcel_Cell $cell Cell to update - * @return PHPExcel_Cell - * @throws PHPExcel_Exception - */ - public function addCacheData($pCoord, PHPExcel_Cell $cell) - { - if (($pCoord !== $this->currentObjectID) && ($this->currentObjectID !== null)) { - $this->storeData(); - } - - $this->currentObjectID = $pCoord; - $this->currentObject = $cell; - $this->currentCellIsDirty = true; - - return $cell; - } - - /** - * Get cell at a specific coordinate - * - * @param string $pCoord Coordinate of the cell - * @throws PHPExcel_Exception - * @return PHPExcel_Cell Cell that was found, or null if not found - */ - public function getCacheData($pCoord) - { - if ($pCoord === $this->currentObjectID) { - return $this->currentObject; - } - $this->storeData(); - - $this->selectQuery->bindValue('id', $pCoord, SQLITE3_TEXT); - $cellResult = $this->selectQuery->execute(); - if ($cellResult === false) { - throw new PHPExcel_Exception($this->DBHandle->lastErrorMsg()); - } - $cellData = $cellResult->fetchArray(SQLITE3_ASSOC); - if ($cellData === false) { - // Return null if requested entry doesn't exist in cache - return null; - } - - // Set current entry to the requested entry - $this->currentObjectID = $pCoord; - - $this->currentObject = unserialize($cellData['value']); - // Re-attach this as the cell's parent - $this->currentObject->attach($this); - - // Return requested entry - return $this->currentObject; - } - - /** - * Is a value set for an indexed cell? - * - * @param string $pCoord Coordinate address of the cell to check - * @return boolean - */ - public function isDataSet($pCoord) - { - if ($pCoord === $this->currentObjectID) { - return true; - } - - // Check if the requested entry exists in the cache - $this->selectQuery->bindValue('id', $pCoord, SQLITE3_TEXT); - $cellResult = $this->selectQuery->execute(); - if ($cellResult === false) { - throw new PHPExcel_Exception($this->DBHandle->lastErrorMsg()); - } - $cellData = $cellResult->fetchArray(SQLITE3_ASSOC); - - return ($cellData === false) ? false : true; - } - - /** - * Delete a cell in cache identified by coordinate address - * - * @param string $pCoord Coordinate address of the cell to delete - * @throws PHPExcel_Exception - */ - public function deleteCacheData($pCoord) - { - if ($pCoord === $this->currentObjectID) { - $this->currentObject->detach(); - $this->currentObjectID = $this->currentObject = null; - } - - // Check if the requested entry exists in the cache - $this->deleteQuery->bindValue('id', $pCoord, SQLITE3_TEXT); - $result = $this->deleteQuery->execute(); - if ($result === false) { - throw new PHPExcel_Exception($this->DBHandle->lastErrorMsg()); - } - - $this->currentCellIsDirty = false; - } - - /** - * Move a cell object from one address to another - * - * @param string $fromAddress Current address of the cell to move - * @param string $toAddress Destination address of the cell to move - * @return boolean - */ - public function moveCell($fromAddress, $toAddress) - { - if ($fromAddress === $this->currentObjectID) { - $this->currentObjectID = $toAddress; - } - - $this->deleteQuery->bindValue('id', $toAddress, SQLITE3_TEXT); - $result = $this->deleteQuery->execute(); - if ($result === false) { - throw new PHPExcel_Exception($this->DBHandle->lastErrorMsg()); - } - - $this->updateQuery->bindValue('toid', $toAddress, SQLITE3_TEXT); - $this->updateQuery->bindValue('fromid', $fromAddress, SQLITE3_TEXT); - $result = $this->updateQuery->execute(); - if ($result === false) { - throw new PHPExcel_Exception($this->DBHandle->lastErrorMsg()); - } - - return true; - } - - /** - * Get a list of all cell addresses currently held in cache - * - * @return string[] - */ - public function getCellList() - { - if ($this->currentObjectID !== null) { - $this->storeData(); - } - - $query = "SELECT id FROM kvp_".$this->TableName; - $cellIdsResult = $this->DBHandle->query($query); - if ($cellIdsResult === false) { - throw new PHPExcel_Exception($this->DBHandle->lastErrorMsg()); - } - - $cellKeys = array(); - while ($row = $cellIdsResult->fetchArray(SQLITE3_ASSOC)) { - $cellKeys[] = $row['id']; - } - - return $cellKeys; - } - - /** - * Clone the cell collection - * - * @param PHPExcel_Worksheet $parent The new worksheet - * @return void - */ - public function copyCellCollection(PHPExcel_Worksheet $parent) - { - $this->currentCellIsDirty; - $this->storeData(); - - // Get a new id for the new table name - $tableName = str_replace('.', '_', $this->getUniqueID()); - if (!$this->DBHandle->exec('CREATE TABLE kvp_'.$tableName.' (id VARCHAR(12) PRIMARY KEY, value BLOB) - AS SELECT * FROM kvp_'.$this->TableName) - ) { - throw new PHPExcel_Exception($this->DBHandle->lastErrorMsg()); - } - - // Copy the existing cell cache file - $this->TableName = $tableName; - } - - /** - * Clear the cell collection and disconnect from our parent - * - * @return void - */ - public function unsetWorksheetCells() - { - if (!is_null($this->currentObject)) { - $this->currentObject->detach(); - $this->currentObject = $this->currentObjectID = null; - } - // detach ourself from the worksheet, so that it can then delete this object successfully - $this->parent = null; - - // Close down the temporary cache file - $this->__destruct(); - } - - /** - * Initialise this new cell collection - * - * @param PHPExcel_Worksheet $parent The worksheet for this cell collection - */ - public function __construct(PHPExcel_Worksheet $parent) - { - parent::__construct($parent); - if (is_null($this->DBHandle)) { - $this->TableName = str_replace('.', '_', $this->getUniqueID()); - $_DBName = ':memory:'; - - $this->DBHandle = new SQLite3($_DBName); - if ($this->DBHandle === false) { - throw new PHPExcel_Exception($this->DBHandle->lastErrorMsg()); - } - if (!$this->DBHandle->exec('CREATE TABLE kvp_'.$this->TableName.' (id VARCHAR(12) PRIMARY KEY, value BLOB)')) { - throw new PHPExcel_Exception($this->DBHandle->lastErrorMsg()); - } - } - - $this->selectQuery = $this->DBHandle->prepare("SELECT value FROM kvp_".$this->TableName." WHERE id = :id"); - $this->insertQuery = $this->DBHandle->prepare("INSERT OR REPLACE INTO kvp_".$this->TableName." VALUES(:id,:data)"); - $this->updateQuery = $this->DBHandle->prepare("UPDATE kvp_".$this->TableName." SET id=:toId WHERE id=:fromId"); - $this->deleteQuery = $this->DBHandle->prepare("DELETE FROM kvp_".$this->TableName." WHERE id = :id"); - } - - /** - * Destroy this cell collection - */ - public function __destruct() - { - if (!is_null($this->DBHandle)) { - $this->DBHandle->exec('DROP TABLE kvp_'.$this->TableName); - $this->DBHandle->close(); - } - $this->DBHandle = null; - } - - /** - * Identify whether the caching method is currently available - * Some methods are dependent on the availability of certain extensions being enabled in the PHP build - * - * @return boolean - */ - public static function cacheMethodIsAvailable() - { - if (!class_exists('SQLite3', false)) { - return false; - } - - return true; - } -} diff --git a/application/third_party/PHPExcel/CachedObjectStorage/Wincache.php b/application/third_party/PHPExcel/CachedObjectStorage/Wincache.php deleted file mode 100644 index 1567874f..00000000 --- a/application/third_party/PHPExcel/CachedObjectStorage/Wincache.php +++ /dev/null @@ -1,289 +0,0 @@ -currentCellIsDirty && !empty($this->currentObjectID)) { - $this->currentObject->detach(); - - $obj = serialize($this->currentObject); - if (wincache_ucache_exists($this->cachePrefix.$this->currentObjectID.'.cache')) { - if (!wincache_ucache_set($this->cachePrefix.$this->currentObjectID.'.cache', $obj, $this->cacheTime)) { - $this->__destruct(); - throw new PHPExcel_Exception('Failed to store cell '.$this->currentObjectID.' in WinCache'); - } - } else { - if (!wincache_ucache_add($this->cachePrefix.$this->currentObjectID.'.cache', $obj, $this->cacheTime)) { - $this->__destruct(); - throw new PHPExcel_Exception('Failed to store cell '.$this->currentObjectID.' in WinCache'); - } - } - $this->currentCellIsDirty = false; - } - - $this->currentObjectID = $this->currentObject = null; - } - - /** - * Add or Update a cell in cache identified by coordinate address - * - * @param string $pCoord Coordinate address of the cell to update - * @param PHPExcel_Cell $cell Cell to update - * @return PHPExcel_Cell - * @throws PHPExcel_Exception - */ - public function addCacheData($pCoord, PHPExcel_Cell $cell) - { - if (($pCoord !== $this->currentObjectID) && ($this->currentObjectID !== null)) { - $this->storeData(); - } - $this->cellCache[$pCoord] = true; - - $this->currentObjectID = $pCoord; - $this->currentObject = $cell; - $this->currentCellIsDirty = true; - - return $cell; - } - - /** - * Is a value set in the current PHPExcel_CachedObjectStorage_ICache for an indexed cell? - * - * @param string $pCoord Coordinate address of the cell to check - * @return boolean - */ - public function isDataSet($pCoord) - { - // Check if the requested entry is the current object, or exists in the cache - if (parent::isDataSet($pCoord)) { - if ($this->currentObjectID == $pCoord) { - return true; - } - // Check if the requested entry still exists in cache - $success = wincache_ucache_exists($this->cachePrefix.$pCoord.'.cache'); - if ($success === false) { - // Entry no longer exists in Wincache, so clear it from the cache array - parent::deleteCacheData($pCoord); - throw new PHPExcel_Exception('Cell entry '.$pCoord.' no longer exists in WinCache'); - } - return true; - } - return false; - } - - - /** - * Get cell at a specific coordinate - * - * @param string $pCoord Coordinate of the cell - * @throws PHPExcel_Exception - * @return PHPExcel_Cell Cell that was found, or null if not found - */ - public function getCacheData($pCoord) - { - if ($pCoord === $this->currentObjectID) { - return $this->currentObject; - } - $this->storeData(); - - // Check if the entry that has been requested actually exists - $obj = null; - if (parent::isDataSet($pCoord)) { - $success = false; - $obj = wincache_ucache_get($this->cachePrefix.$pCoord.'.cache', $success); - if ($success === false) { - // Entry no longer exists in WinCache, so clear it from the cache array - parent::deleteCacheData($pCoord); - throw new PHPExcel_Exception('Cell entry '.$pCoord.' no longer exists in WinCache'); - } - } else { - // Return null if requested entry doesn't exist in cache - return null; - } - - // Set current entry to the requested entry - $this->currentObjectID = $pCoord; - $this->currentObject = unserialize($obj); - // Re-attach this as the cell's parent - $this->currentObject->attach($this); - - // Return requested entry - return $this->currentObject; - } - - - /** - * Get a list of all cell addresses currently held in cache - * - * @return string[] - */ - public function getCellList() - { - if ($this->currentObjectID !== null) { - $this->storeData(); - } - - return parent::getCellList(); - } - - /** - * Delete a cell in cache identified by coordinate address - * - * @param string $pCoord Coordinate address of the cell to delete - * @throws PHPExcel_Exception - */ - public function deleteCacheData($pCoord) - { - // Delete the entry from Wincache - wincache_ucache_delete($this->cachePrefix.$pCoord.'.cache'); - - // Delete the entry from our cell address array - parent::deleteCacheData($pCoord); - } - - /** - * Clone the cell collection - * - * @param PHPExcel_Worksheet $parent The new worksheet - * @return void - */ - public function copyCellCollection(PHPExcel_Worksheet $parent) - { - parent::copyCellCollection($parent); - // Get a new id for the new file name - $baseUnique = $this->getUniqueID(); - $newCachePrefix = substr(md5($baseUnique), 0, 8) . '.'; - $cacheList = $this->getCellList(); - foreach ($cacheList as $cellID) { - if ($cellID != $this->currentObjectID) { - $success = false; - $obj = wincache_ucache_get($this->cachePrefix.$cellID.'.cache', $success); - if ($success === false) { - // Entry no longer exists in WinCache, so clear it from the cache array - parent::deleteCacheData($cellID); - throw new PHPExcel_Exception('Cell entry '.$cellID.' no longer exists in Wincache'); - } - if (!wincache_ucache_add($newCachePrefix.$cellID.'.cache', $obj, $this->cacheTime)) { - $this->__destruct(); - throw new PHPExcel_Exception('Failed to store cell '.$cellID.' in Wincache'); - } - } - } - $this->cachePrefix = $newCachePrefix; - } - - - /** - * Clear the cell collection and disconnect from our parent - * - * @return void - */ - public function unsetWorksheetCells() - { - if (!is_null($this->currentObject)) { - $this->currentObject->detach(); - $this->currentObject = $this->currentObjectID = null; - } - - // Flush the WinCache cache - $this->__destruct(); - - $this->cellCache = array(); - - // detach ourself from the worksheet, so that it can then delete this object successfully - $this->parent = null; - } - - /** - * Initialise this new cell collection - * - * @param PHPExcel_Worksheet $parent The worksheet for this cell collection - * @param array of mixed $arguments Additional initialisation arguments - */ - public function __construct(PHPExcel_Worksheet $parent, $arguments) - { - $cacheTime = (isset($arguments['cacheTime'])) ? $arguments['cacheTime'] : 600; - - if (is_null($this->cachePrefix)) { - $baseUnique = $this->getUniqueID(); - $this->cachePrefix = substr(md5($baseUnique), 0, 8).'.'; - $this->cacheTime = $cacheTime; - - parent::__construct($parent); - } - } - - /** - * Destroy this cell collection - */ - public function __destruct() - { - $cacheList = $this->getCellList(); - foreach ($cacheList as $cellID) { - wincache_ucache_delete($this->cachePrefix.$cellID.'.cache'); - } - } - - /** - * Identify whether the caching method is currently available - * Some methods are dependent on the availability of certain extensions being enabled in the PHP build - * - * @return boolean - */ - public static function cacheMethodIsAvailable() - { - if (!function_exists('wincache_ucache_add')) { - return false; - } - - return true; - } -} diff --git a/application/third_party/PHPExcel/CachedObjectStorageFactory.php b/application/third_party/PHPExcel/CachedObjectStorageFactory.php deleted file mode 100644 index 0a969786..00000000 --- a/application/third_party/PHPExcel/CachedObjectStorageFactory.php +++ /dev/null @@ -1,231 +0,0 @@ - array( - ), - self::cache_in_memory_gzip => array( - ), - self::cache_in_memory_serialized => array( - ), - self::cache_igbinary => array( - ), - self::cache_to_phpTemp => array( 'memoryCacheSize' => '1MB' - ), - self::cache_to_discISAM => array( 'dir' => null - ), - self::cache_to_apc => array( 'cacheTime' => 600 - ), - self::cache_to_memcache => array( 'memcacheServer' => 'localhost', - 'memcachePort' => 11211, - 'cacheTime' => 600 - ), - self::cache_to_wincache => array( 'cacheTime' => 600 - ), - self::cache_to_sqlite => array( - ), - self::cache_to_sqlite3 => array( - ), - ); - - /** - * Arguments for the active cache storage method - * - * @var array of mixed array - */ - private static $storageMethodParameters = array(); - - /** - * Return the current cache storage method - * - * @return string|null - **/ - public static function getCacheStorageMethod() - { - return self::$cacheStorageMethod; - } - - /** - * Return the current cache storage class - * - * @return PHPExcel_CachedObjectStorage_ICache|null - **/ - public static function getCacheStorageClass() - { - return self::$cacheStorageClass; - } - - /** - * Return the list of all possible cache storage methods - * - * @return string[] - **/ - public static function getAllCacheStorageMethods() - { - return self::$storageMethods; - } - - /** - * Return the list of all available cache storage methods - * - * @return string[] - **/ - public static function getCacheStorageMethods() - { - $activeMethods = array(); - foreach (self::$storageMethods as $storageMethod) { - $cacheStorageClass = 'PHPExcel_CachedObjectStorage_' . $storageMethod; - if (call_user_func(array($cacheStorageClass, 'cacheMethodIsAvailable'))) { - $activeMethods[] = $storageMethod; - } - } - return $activeMethods; - } - - /** - * Identify the cache storage method to use - * - * @param string $method Name of the method to use for cell cacheing - * @param array of mixed $arguments Additional arguments to pass to the cell caching class - * when instantiating - * @return boolean - **/ - public static function initialize($method = self::cache_in_memory, $arguments = array()) - { - if (!in_array($method, self::$storageMethods)) { - return false; - } - - $cacheStorageClass = 'PHPExcel_CachedObjectStorage_'.$method; - if (!call_user_func(array( $cacheStorageClass, - 'cacheMethodIsAvailable'))) { - return false; - } - - self::$storageMethodParameters[$method] = self::$storageMethodDefaultParameters[$method]; - foreach ($arguments as $k => $v) { - if (array_key_exists($k, self::$storageMethodParameters[$method])) { - self::$storageMethodParameters[$method][$k] = $v; - } - } - - if (self::$cacheStorageMethod === null) { - self::$cacheStorageClass = 'PHPExcel_CachedObjectStorage_' . $method; - self::$cacheStorageMethod = $method; - } - return true; - } - - /** - * Initialise the cache storage - * - * @param PHPExcel_Worksheet $parent Enable cell caching for this worksheet - * @return PHPExcel_CachedObjectStorage_ICache - **/ - public static function getInstance(PHPExcel_Worksheet $parent) - { - $cacheMethodIsAvailable = true; - if (self::$cacheStorageMethod === null) { - $cacheMethodIsAvailable = self::initialize(); - } - - if ($cacheMethodIsAvailable) { - $instance = new self::$cacheStorageClass( - $parent, - self::$storageMethodParameters[self::$cacheStorageMethod] - ); - if ($instance !== null) { - return $instance; - } - } - - return false; - } - - /** - * Clear the cache storage - * - **/ - public static function finalize() - { - self::$cacheStorageMethod = null; - self::$cacheStorageClass = null; - self::$storageMethodParameters = array(); - } -} diff --git a/application/third_party/PHPExcel/CalcEngine/CyclicReferenceStack.php b/application/third_party/PHPExcel/CalcEngine/CyclicReferenceStack.php deleted file mode 100644 index 1072fc75..00000000 --- a/application/third_party/PHPExcel/CalcEngine/CyclicReferenceStack.php +++ /dev/null @@ -1,94 +0,0 @@ -stack); - } - - /** - * Push a new entry onto the stack - * - * @param mixed $value - */ - public function push($value) - { - $this->stack[$value] = $value; - } - - /** - * Pop the last entry from the stack - * - * @return mixed - */ - public function pop() - { - return array_pop($this->stack); - } - - /** - * Test to see if a specified entry exists on the stack - * - * @param mixed $value The value to test - */ - public function onStack($value) - { - return isset($this->stack[$value]); - } - - /** - * Clear the stack - */ - public function clear() - { - $this->stack = array(); - } - - /** - * Return an array of all entries on the stack - * - * @return mixed[] - */ - public function showStack() - { - return $this->stack; - } -} diff --git a/application/third_party/PHPExcel/CalcEngine/Logger.php b/application/third_party/PHPExcel/CalcEngine/Logger.php deleted file mode 100644 index c5ffe73e..00000000 --- a/application/third_party/PHPExcel/CalcEngine/Logger.php +++ /dev/null @@ -1,151 +0,0 @@ -cellStack = $stack; - } - - /** - * Enable/Disable Calculation engine logging - * - * @param boolean $pValue - */ - public function setWriteDebugLog($pValue = false) - { - $this->writeDebugLog = $pValue; - } - - /** - * Return whether calculation engine logging is enabled or disabled - * - * @return boolean - */ - public function getWriteDebugLog() - { - return $this->writeDebugLog; - } - - /** - * Enable/Disable echoing of debug log information - * - * @param boolean $pValue - */ - public function setEchoDebugLog($pValue = false) - { - $this->echoDebugLog = $pValue; - } - - /** - * Return whether echoing of debug log information is enabled or disabled - * - * @return boolean - */ - public function getEchoDebugLog() - { - return $this->echoDebugLog; - } - - /** - * Write an entry to the calculation engine debug log - */ - public function writeDebugLog() - { - // Only write the debug log if logging is enabled - if ($this->writeDebugLog) { - $message = implode(func_get_args()); - $cellReference = implode(' -> ', $this->cellStack->showStack()); - if ($this->echoDebugLog) { - echo $cellReference, - ($this->cellStack->count() > 0 ? ' => ' : ''), - $message, - PHP_EOL; - } - $this->debugLog[] = $cellReference . - ($this->cellStack->count() > 0 ? ' => ' : '') . - $message; - } - } - - /** - * Clear the calculation engine debug log - */ - public function clearLog() - { - $this->debugLog = array(); - } - - /** - * Return the calculation engine debug log - * - * @return string[] - */ - public function getLog() - { - return $this->debugLog; - } -} diff --git a/application/third_party/PHPExcel/Calculation.php b/application/third_party/PHPExcel/Calculation.php deleted file mode 100644 index 20b1ec3f..00000000 --- a/application/third_party/PHPExcel/Calculation.php +++ /dev/null @@ -1,4391 +0,0 @@ -=-]*)|(\'[^\']*\')|(\"[^\"]*\"))!)?\$?([a-z]{1,3})\$?(\d{1,7})'); - // Named Range of cells - define('CALCULATION_REGEXP_NAMEDRANGE', '((([^\s,!&%^\/\*\+<>=-]*)|(\'[^\']*\')|(\"[^\"]*\"))!)?([_A-Z][_A-Z0-9\.]*)'); - } else { - // Cell reference (cell or range of cells, with or without a sheet reference) - define('CALCULATION_REGEXP_CELLREF', '(((\w*)|(\'[^\']*\')|(\"[^\"]*\"))!)?\$?([a-z]{1,3})\$?(\d+)'); - // Named Range of cells - define('CALCULATION_REGEXP_NAMEDRANGE', '(((\w*)|(\'.*\')|(\".*\"))!)?([_A-Z][_A-Z0-9\.]*)'); - } -} - -/** - * PHPExcel_Calculation (Multiton) - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Calculation - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Calculation -{ - /** Constants */ - /** Regular Expressions */ - // Numeric operand - const CALCULATION_REGEXP_NUMBER = '[-+]?\d*\.?\d+(e[-+]?\d+)?'; - // String operand - const CALCULATION_REGEXP_STRING = '"(?:[^"]|"")*"'; - // Opening bracket - const CALCULATION_REGEXP_OPENBRACE = '\('; - // Function (allow for the old @ symbol that could be used to prefix a function, but we'll ignore it) - const CALCULATION_REGEXP_FUNCTION = '@?([A-Z][A-Z0-9\.]*)[\s]*\('; - // Cell reference (cell or range of cells, with or without a sheet reference) - const CALCULATION_REGEXP_CELLREF = CALCULATION_REGEXP_CELLREF; - // Named Range of cells - const CALCULATION_REGEXP_NAMEDRANGE = CALCULATION_REGEXP_NAMEDRANGE; - // Error - const CALCULATION_REGEXP_ERROR = '\#[A-Z][A-Z0_\/]*[!\?]?'; - - - /** constants */ - const RETURN_ARRAY_AS_ERROR = 'error'; - const RETURN_ARRAY_AS_VALUE = 'value'; - const RETURN_ARRAY_AS_ARRAY = 'array'; - - private static $returnArrayAsType = self::RETURN_ARRAY_AS_VALUE; - - - /** - * Instance of this class - * - * @access private - * @var PHPExcel_Calculation - */ - private static $instance; - - - /** - * Instance of the workbook this Calculation Engine is using - * - * @access private - * @var PHPExcel - */ - private $workbook; - - /** - * List of instances of the calculation engine that we've instantiated for individual workbooks - * - * @access private - * @var PHPExcel_Calculation[] - */ - private static $workbookSets; - - /** - * Calculation cache - * - * @access private - * @var array - */ - private $calculationCache = array (); - - - /** - * Calculation cache enabled - * - * @access private - * @var boolean - */ - private $calculationCacheEnabled = true; - - - /** - * List of operators that can be used within formulae - * The true/false value indicates whether it is a binary operator or a unary operator - * - * @access private - * @var array - */ - private static $operators = array( - '+' => true, '-' => true, '*' => true, '/' => true, - '^' => true, '&' => true, '%' => false, '~' => false, - '>' => true, '<' => true, '=' => true, '>=' => true, - '<=' => true, '<>' => true, '|' => true, ':' => true - ); - - /** - * List of binary operators (those that expect two operands) - * - * @access private - * @var array - */ - private static $binaryOperators = array( - '+' => true, '-' => true, '*' => true, '/' => true, - '^' => true, '&' => true, '>' => true, '<' => true, - '=' => true, '>=' => true, '<=' => true, '<>' => true, - '|' => true, ':' => true - ); - - /** - * The debug log generated by the calculation engine - * - * @access private - * @var PHPExcel_CalcEngine_Logger - * - */ - private $debugLog; - - /** - * Flag to determine how formula errors should be handled - * If true, then a user error will be triggered - * If false, then an exception will be thrown - * - * @access public - * @var boolean - * - */ - public $suppressFormulaErrors = false; - - /** - * Error message for any error that was raised/thrown by the calculation engine - * - * @access public - * @var string - * - */ - public $formulaError = null; - - /** - * An array of the nested cell references accessed by the calculation engine, used for the debug log - * - * @access private - * @var array of string - * - */ - private $cyclicReferenceStack; - - private $cellStack = array(); - - /** - * Current iteration counter for cyclic formulae - * If the value is 0 (or less) then cyclic formulae will throw an exception, - * otherwise they will iterate to the limit defined here before returning a result - * - * @var integer - * - */ - private $cyclicFormulaCounter = 1; - - private $cyclicFormulaCell = ''; - - /** - * Number of iterations for cyclic formulae - * - * @var integer - * - */ - public $cyclicFormulaCount = 1; - - /** - * Epsilon Precision used for comparisons in calculations - * - * @var float - * - */ - private $delta = 0.1e-12; - - - /** - * The current locale setting - * - * @var string - * - */ - private static $localeLanguage = 'en_us'; // US English (default locale) - - /** - * List of available locale settings - * Note that this is read for the locale subdirectory only when requested - * - * @var string[] - * - */ - private static $validLocaleLanguages = array( - 'en' // English (default language) - ); - - /** - * Locale-specific argument separator for function arguments - * - * @var string - * - */ - private static $localeArgumentSeparator = ','; - private static $localeFunctions = array(); - - /** - * Locale-specific translations for Excel constants (True, False and Null) - * - * @var string[] - * - */ - public static $localeBoolean = array( - 'TRUE' => 'TRUE', - 'FALSE' => 'FALSE', - 'NULL' => 'NULL' - ); - - /** - * Excel constant string translations to their PHP equivalents - * Constant conversion from text name/value to actual (datatyped) value - * - * @var string[] - * - */ - private static $excelConstants = array( - 'TRUE' => true, - 'FALSE' => false, - 'NULL' => null - ); - - // PHPExcel functions - private static $PHPExcelFunctions = array( - 'ABS' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'abs', - 'argumentCount' => '1' - ), - 'ACCRINT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::ACCRINT', - 'argumentCount' => '4-7' - ), - 'ACCRINTM' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::ACCRINTM', - 'argumentCount' => '3-5' - ), - 'ACOS' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'acos', - 'argumentCount' => '1' - ), - 'ACOSH' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'acosh', - 'argumentCount' => '1' - ), - 'ADDRESS' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE, - 'functionCall' => 'PHPExcel_Calculation_LookupRef::CELL_ADDRESS', - 'argumentCount' => '2-5' - ), - 'AMORDEGRC' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::AMORDEGRC', - 'argumentCount' => '6,7' - ), - 'AMORLINC' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::AMORLINC', - 'argumentCount' => '6,7' - ), - 'AND' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_LOGICAL, - 'functionCall' => 'PHPExcel_Calculation_Logical::LOGICAL_AND', - 'argumentCount' => '1+' - ), - 'AREAS' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '1' - ), - 'ASC' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '1' - ), - 'ASIN' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'asin', - 'argumentCount' => '1' - ), - 'ASINH' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'asinh', - 'argumentCount' => '1' - ), - 'ATAN' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'atan', - 'argumentCount' => '1' - ), - 'ATAN2' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::ATAN2', - 'argumentCount' => '2' - ), - 'ATANH' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'atanh', - 'argumentCount' => '1' - ), - 'AVEDEV' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::AVEDEV', - 'argumentCount' => '1+' - ), - 'AVERAGE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::AVERAGE', - 'argumentCount' => '1+' - ), - 'AVERAGEA' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::AVERAGEA', - 'argumentCount' => '1+' - ), - 'AVERAGEIF' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::AVERAGEIF', - 'argumentCount' => '2,3' - ), - 'AVERAGEIFS' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '3+' - ), - 'BAHTTEXT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '1' - ), - 'BESSELI' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::BESSELI', - 'argumentCount' => '2' - ), - 'BESSELJ' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::BESSELJ', - 'argumentCount' => '2' - ), - 'BESSELK' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::BESSELK', - 'argumentCount' => '2' - ), - 'BESSELY' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::BESSELY', - 'argumentCount' => '2' - ), - 'BETADIST' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::BETADIST', - 'argumentCount' => '3-5' - ), - 'BETAINV' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::BETAINV', - 'argumentCount' => '3-5' - ), - 'BIN2DEC' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::BINTODEC', - 'argumentCount' => '1' - ), - 'BIN2HEX' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::BINTOHEX', - 'argumentCount' => '1,2' - ), - 'BIN2OCT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::BINTOOCT', - 'argumentCount' => '1,2' - ), - 'BINOMDIST' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::BINOMDIST', - 'argumentCount' => '4' - ), - 'CEILING' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::CEILING', - 'argumentCount' => '2' - ), - 'CELL' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '1,2' - ), - 'CHAR' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, - 'functionCall' => 'PHPExcel_Calculation_TextData::CHARACTER', - 'argumentCount' => '1' - ), - 'CHIDIST' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::CHIDIST', - 'argumentCount' => '2' - ), - 'CHIINV' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::CHIINV', - 'argumentCount' => '2' - ), - 'CHITEST' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '2' - ), - 'CHOOSE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE, - 'functionCall' => 'PHPExcel_Calculation_LookupRef::CHOOSE', - 'argumentCount' => '2+' - ), - 'CLEAN' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, - 'functionCall' => 'PHPExcel_Calculation_TextData::TRIMNONPRINTABLE', - 'argumentCount' => '1' - ), - 'CODE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, - 'functionCall' => 'PHPExcel_Calculation_TextData::ASCIICODE', - 'argumentCount' => '1' - ), - 'COLUMN' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE, - 'functionCall' => 'PHPExcel_Calculation_LookupRef::COLUMN', - 'argumentCount' => '-1', - 'passByReference' => array(true) - ), - 'COLUMNS' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE, - 'functionCall' => 'PHPExcel_Calculation_LookupRef::COLUMNS', - 'argumentCount' => '1' - ), - 'COMBIN' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::COMBIN', - 'argumentCount' => '2' - ), - 'COMPLEX' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::COMPLEX', - 'argumentCount' => '2,3' - ), - 'CONCATENATE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, - 'functionCall' => 'PHPExcel_Calculation_TextData::CONCATENATE', - 'argumentCount' => '1+' - ), - 'CONFIDENCE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::CONFIDENCE', - 'argumentCount' => '3' - ), - 'CONVERT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::CONVERTUOM', - 'argumentCount' => '3' - ), - 'CORREL' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::CORREL', - 'argumentCount' => '2' - ), - 'COS' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'cos', - 'argumentCount' => '1' - ), - 'COSH' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'cosh', - 'argumentCount' => '1' - ), - 'COUNT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::COUNT', - 'argumentCount' => '1+' - ), - 'COUNTA' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::COUNTA', - 'argumentCount' => '1+' - ), - 'COUNTBLANK' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::COUNTBLANK', - 'argumentCount' => '1' - ), - 'COUNTIF' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::COUNTIF', - 'argumentCount' => '2' - ), - 'COUNTIFS' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '2' - ), - 'COUPDAYBS' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::COUPDAYBS', - 'argumentCount' => '3,4' - ), - 'COUPDAYS' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::COUPDAYS', - 'argumentCount' => '3,4' - ), - 'COUPDAYSNC' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::COUPDAYSNC', - 'argumentCount' => '3,4' - ), - 'COUPNCD' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::COUPNCD', - 'argumentCount' => '3,4' - ), - 'COUPNUM' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::COUPNUM', - 'argumentCount' => '3,4' - ), - 'COUPPCD' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::COUPPCD', - 'argumentCount' => '3,4' - ), - 'COVAR' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::COVAR', - 'argumentCount' => '2' - ), - 'CRITBINOM' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::CRITBINOM', - 'argumentCount' => '3' - ), - 'CUBEKPIMEMBER' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_CUBE, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '?' - ), - 'CUBEMEMBER' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_CUBE, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '?' - ), - 'CUBEMEMBERPROPERTY' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_CUBE, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '?' - ), - 'CUBERANKEDMEMBER' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_CUBE, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '?' - ), - 'CUBESET' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_CUBE, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '?' - ), - 'CUBESETCOUNT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_CUBE, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '?' - ), - 'CUBEVALUE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_CUBE, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '?' - ), - 'CUMIPMT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::CUMIPMT', - 'argumentCount' => '6' - ), - 'CUMPRINC' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::CUMPRINC', - 'argumentCount' => '6' - ), - 'DATE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, - 'functionCall' => 'PHPExcel_Calculation_DateTime::DATE', - 'argumentCount' => '3' - ), - 'DATEDIF' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, - 'functionCall' => 'PHPExcel_Calculation_DateTime::DATEDIF', - 'argumentCount' => '2,3' - ), - 'DATEVALUE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, - 'functionCall' => 'PHPExcel_Calculation_DateTime::DATEVALUE', - 'argumentCount' => '1' - ), - 'DAVERAGE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_DATABASE, - 'functionCall' => 'PHPExcel_Calculation_Database::DAVERAGE', - 'argumentCount' => '3' - ), - 'DAY' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, - 'functionCall' => 'PHPExcel_Calculation_DateTime::DAYOFMONTH', - 'argumentCount' => '1' - ), - 'DAYS360' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, - 'functionCall' => 'PHPExcel_Calculation_DateTime::DAYS360', - 'argumentCount' => '2,3' - ), - 'DB' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::DB', - 'argumentCount' => '4,5' - ), - 'DCOUNT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_DATABASE, - 'functionCall' => 'PHPExcel_Calculation_Database::DCOUNT', - 'argumentCount' => '3' - ), - 'DCOUNTA' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_DATABASE, - 'functionCall' => 'PHPExcel_Calculation_Database::DCOUNTA', - 'argumentCount' => '3' - ), - 'DDB' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::DDB', - 'argumentCount' => '4,5' - ), - 'DEC2BIN' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::DECTOBIN', - 'argumentCount' => '1,2' - ), - 'DEC2HEX' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::DECTOHEX', - 'argumentCount' => '1,2' - ), - 'DEC2OCT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::DECTOOCT', - 'argumentCount' => '1,2' - ), - 'DEGREES' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'rad2deg', - 'argumentCount' => '1' - ), - 'DELTA' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::DELTA', - 'argumentCount' => '1,2' - ), - 'DEVSQ' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::DEVSQ', - 'argumentCount' => '1+' - ), - 'DGET' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_DATABASE, - 'functionCall' => 'PHPExcel_Calculation_Database::DGET', - 'argumentCount' => '3' - ), - 'DISC' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::DISC', - 'argumentCount' => '4,5' - ), - 'DMAX' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_DATABASE, - 'functionCall' => 'PHPExcel_Calculation_Database::DMAX', - 'argumentCount' => '3' - ), - 'DMIN' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_DATABASE, - 'functionCall' => 'PHPExcel_Calculation_Database::DMIN', - 'argumentCount' => '3' - ), - 'DOLLAR' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, - 'functionCall' => 'PHPExcel_Calculation_TextData::DOLLAR', - 'argumentCount' => '1,2' - ), - 'DOLLARDE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::DOLLARDE', - 'argumentCount' => '2' - ), - 'DOLLARFR' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::DOLLARFR', - 'argumentCount' => '2' - ), - 'DPRODUCT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_DATABASE, - 'functionCall' => 'PHPExcel_Calculation_Database::DPRODUCT', - 'argumentCount' => '3' - ), - 'DSTDEV' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_DATABASE, - 'functionCall' => 'PHPExcel_Calculation_Database::DSTDEV', - 'argumentCount' => '3' - ), - 'DSTDEVP' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_DATABASE, - 'functionCall' => 'PHPExcel_Calculation_Database::DSTDEVP', - 'argumentCount' => '3' - ), - 'DSUM' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_DATABASE, - 'functionCall' => 'PHPExcel_Calculation_Database::DSUM', - 'argumentCount' => '3' - ), - 'DURATION' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '5,6' - ), - 'DVAR' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_DATABASE, - 'functionCall' => 'PHPExcel_Calculation_Database::DVAR', - 'argumentCount' => '3' - ), - 'DVARP' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_DATABASE, - 'functionCall' => 'PHPExcel_Calculation_Database::DVARP', - 'argumentCount' => '3' - ), - 'EDATE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, - 'functionCall' => 'PHPExcel_Calculation_DateTime::EDATE', - 'argumentCount' => '2' - ), - 'EFFECT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::EFFECT', - 'argumentCount' => '2' - ), - 'EOMONTH' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, - 'functionCall' => 'PHPExcel_Calculation_DateTime::EOMONTH', - 'argumentCount' => '2' - ), - 'ERF' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::ERF', - 'argumentCount' => '1,2' - ), - 'ERFC' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::ERFC', - 'argumentCount' => '1' - ), - 'ERROR.TYPE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION, - 'functionCall' => 'PHPExcel_Calculation_Functions::ERROR_TYPE', - 'argumentCount' => '1' - ), - 'EVEN' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::EVEN', - 'argumentCount' => '1' - ), - 'EXACT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '2' - ), - 'EXP' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'exp', - 'argumentCount' => '1' - ), - 'EXPONDIST' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::EXPONDIST', - 'argumentCount' => '3' - ), - 'FACT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::FACT', - 'argumentCount' => '1' - ), - 'FACTDOUBLE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::FACTDOUBLE', - 'argumentCount' => '1' - ), - 'FALSE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_LOGICAL, - 'functionCall' => 'PHPExcel_Calculation_Logical::FALSE', - 'argumentCount' => '0' - ), - 'FDIST' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '3' - ), - 'FIND' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, - 'functionCall' => 'PHPExcel_Calculation_TextData::SEARCHSENSITIVE', - 'argumentCount' => '2,3' - ), - 'FINDB' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, - 'functionCall' => 'PHPExcel_Calculation_TextData::SEARCHSENSITIVE', - 'argumentCount' => '2,3' - ), - 'FINV' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '3' - ), - 'FISHER' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::FISHER', - 'argumentCount' => '1' - ), - 'FISHERINV' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::FISHERINV', - 'argumentCount' => '1' - ), - 'FIXED' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, - 'functionCall' => 'PHPExcel_Calculation_TextData::FIXEDFORMAT', - 'argumentCount' => '1-3' - ), - 'FLOOR' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::FLOOR', - 'argumentCount' => '2' - ), - 'FORECAST' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::FORECAST', - 'argumentCount' => '3' - ), - 'FREQUENCY' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '2' - ), - 'FTEST' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '2' - ), - 'FV' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::FV', - 'argumentCount' => '3-5' - ), - 'FVSCHEDULE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::FVSCHEDULE', - 'argumentCount' => '2' - ), - 'GAMMADIST' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::GAMMADIST', - 'argumentCount' => '4' - ), - 'GAMMAINV' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::GAMMAINV', - 'argumentCount' => '3' - ), - 'GAMMALN' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::GAMMALN', - 'argumentCount' => '1' - ), - 'GCD' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::GCD', - 'argumentCount' => '1+' - ), - 'GEOMEAN' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::GEOMEAN', - 'argumentCount' => '1+' - ), - 'GESTEP' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::GESTEP', - 'argumentCount' => '1,2' - ), - 'GETPIVOTDATA' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '2+' - ), - 'GROWTH' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::GROWTH', - 'argumentCount' => '1-4' - ), - 'HARMEAN' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::HARMEAN', - 'argumentCount' => '1+' - ), - 'HEX2BIN' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::HEXTOBIN', - 'argumentCount' => '1,2' - ), - 'HEX2DEC' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::HEXTODEC', - 'argumentCount' => '1' - ), - 'HEX2OCT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::HEXTOOCT', - 'argumentCount' => '1,2' - ), - 'HLOOKUP' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE, - 'functionCall' => 'PHPExcel_Calculation_LookupRef::HLOOKUP', - 'argumentCount' => '3,4' - ), - 'HOUR' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, - 'functionCall' => 'PHPExcel_Calculation_DateTime::HOUROFDAY', - 'argumentCount' => '1' - ), - 'HYPERLINK' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE, - 'functionCall' => 'PHPExcel_Calculation_LookupRef::HYPERLINK', - 'argumentCount' => '1,2', - 'passCellReference' => true - ), - 'HYPGEOMDIST' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::HYPGEOMDIST', - 'argumentCount' => '4' - ), - 'IF' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_LOGICAL, - 'functionCall' => 'PHPExcel_Calculation_Logical::STATEMENT_IF', - 'argumentCount' => '1-3' - ), - 'IFERROR' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_LOGICAL, - 'functionCall' => 'PHPExcel_Calculation_Logical::IFERROR', - 'argumentCount' => '2' - ), - 'IMABS' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::IMABS', - 'argumentCount' => '1' - ), - 'IMAGINARY' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::IMAGINARY', - 'argumentCount' => '1' - ), - 'IMARGUMENT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::IMARGUMENT', - 'argumentCount' => '1' - ), - 'IMCONJUGATE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::IMCONJUGATE', - 'argumentCount' => '1' - ), - 'IMCOS' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::IMCOS', - 'argumentCount' => '1' - ), - 'IMDIV' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::IMDIV', - 'argumentCount' => '2' - ), - 'IMEXP' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::IMEXP', - 'argumentCount' => '1' - ), - 'IMLN' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::IMLN', - 'argumentCount' => '1' - ), - 'IMLOG10' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::IMLOG10', - 'argumentCount' => '1' - ), - 'IMLOG2' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::IMLOG2', - 'argumentCount' => '1' - ), - 'IMPOWER' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::IMPOWER', - 'argumentCount' => '2' - ), - 'IMPRODUCT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::IMPRODUCT', - 'argumentCount' => '1+' - ), - 'IMREAL' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::IMREAL', - 'argumentCount' => '1' - ), - 'IMSIN' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::IMSIN', - 'argumentCount' => '1' - ), - 'IMSQRT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::IMSQRT', - 'argumentCount' => '1' - ), - 'IMSUB' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::IMSUB', - 'argumentCount' => '2' - ), - 'IMSUM' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::IMSUM', - 'argumentCount' => '1+' - ), - 'INDEX' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE, - 'functionCall' => 'PHPExcel_Calculation_LookupRef::INDEX', - 'argumentCount' => '1-4' - ), - 'INDIRECT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE, - 'functionCall' => 'PHPExcel_Calculation_LookupRef::INDIRECT', - 'argumentCount' => '1,2', - 'passCellReference' => true - ), - 'INFO' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '1' - ), - 'INT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::INT', - 'argumentCount' => '1' - ), - 'INTERCEPT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::INTERCEPT', - 'argumentCount' => '2' - ), - 'INTRATE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::INTRATE', - 'argumentCount' => '4,5' - ), - 'IPMT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::IPMT', - 'argumentCount' => '4-6' - ), - 'IRR' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::IRR', - 'argumentCount' => '1,2' - ), - 'ISBLANK' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION, - 'functionCall' => 'PHPExcel_Calculation_Functions::IS_BLANK', - 'argumentCount' => '1' - ), - 'ISERR' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION, - 'functionCall' => 'PHPExcel_Calculation_Functions::IS_ERR', - 'argumentCount' => '1' - ), - 'ISERROR' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION, - 'functionCall' => 'PHPExcel_Calculation_Functions::IS_ERROR', - 'argumentCount' => '1' - ), - 'ISEVEN' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION, - 'functionCall' => 'PHPExcel_Calculation_Functions::IS_EVEN', - 'argumentCount' => '1' - ), - 'ISLOGICAL' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION, - 'functionCall' => 'PHPExcel_Calculation_Functions::IS_LOGICAL', - 'argumentCount' => '1' - ), - 'ISNA' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION, - 'functionCall' => 'PHPExcel_Calculation_Functions::IS_NA', - 'argumentCount' => '1' - ), - 'ISNONTEXT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION, - 'functionCall' => 'PHPExcel_Calculation_Functions::IS_NONTEXT', - 'argumentCount' => '1' - ), - 'ISNUMBER' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION, - 'functionCall' => 'PHPExcel_Calculation_Functions::IS_NUMBER', - 'argumentCount' => '1' - ), - 'ISODD' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION, - 'functionCall' => 'PHPExcel_Calculation_Functions::IS_ODD', - 'argumentCount' => '1' - ), - 'ISPMT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::ISPMT', - 'argumentCount' => '4' - ), - 'ISREF' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '1' - ), - 'ISTEXT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION, - 'functionCall' => 'PHPExcel_Calculation_Functions::IS_TEXT', - 'argumentCount' => '1' - ), - 'JIS' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '1' - ), - 'KURT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::KURT', - 'argumentCount' => '1+' - ), - 'LARGE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::LARGE', - 'argumentCount' => '2' - ), - 'LCM' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::LCM', - 'argumentCount' => '1+' - ), - 'LEFT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, - 'functionCall' => 'PHPExcel_Calculation_TextData::LEFT', - 'argumentCount' => '1,2' - ), - 'LEFTB' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, - 'functionCall' => 'PHPExcel_Calculation_TextData::LEFT', - 'argumentCount' => '1,2' - ), - 'LEN' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, - 'functionCall' => 'PHPExcel_Calculation_TextData::STRINGLENGTH', - 'argumentCount' => '1' - ), - 'LENB' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, - 'functionCall' => 'PHPExcel_Calculation_TextData::STRINGLENGTH', - 'argumentCount' => '1' - ), - 'LINEST' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::LINEST', - 'argumentCount' => '1-4' - ), - 'LN' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'log', - 'argumentCount' => '1' - ), - 'LOG' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::LOG_BASE', - 'argumentCount' => '1,2' - ), - 'LOG10' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'log10', - 'argumentCount' => '1' - ), - 'LOGEST' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::LOGEST', - 'argumentCount' => '1-4' - ), - 'LOGINV' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::LOGINV', - 'argumentCount' => '3' - ), - 'LOGNORMDIST' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::LOGNORMDIST', - 'argumentCount' => '3' - ), - 'LOOKUP' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE, - 'functionCall' => 'PHPExcel_Calculation_LookupRef::LOOKUP', - 'argumentCount' => '2,3' - ), - 'LOWER' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, - 'functionCall' => 'PHPExcel_Calculation_TextData::LOWERCASE', - 'argumentCount' => '1' - ), - 'MATCH' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE, - 'functionCall' => 'PHPExcel_Calculation_LookupRef::MATCH', - 'argumentCount' => '2,3' - ), - 'MAX' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::MAX', - 'argumentCount' => '1+' - ), - 'MAXA' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::MAXA', - 'argumentCount' => '1+' - ), - 'MAXIF' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::MAXIF', - 'argumentCount' => '2+' - ), - 'MDETERM' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::MDETERM', - 'argumentCount' => '1' - ), - 'MDURATION' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '5,6' - ), - 'MEDIAN' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::MEDIAN', - 'argumentCount' => '1+' - ), - 'MEDIANIF' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '2+' - ), - 'MID' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, - 'functionCall' => 'PHPExcel_Calculation_TextData::MID', - 'argumentCount' => '3' - ), - 'MIDB' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, - 'functionCall' => 'PHPExcel_Calculation_TextData::MID', - 'argumentCount' => '3' - ), - 'MIN' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::MIN', - 'argumentCount' => '1+' - ), - 'MINA' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::MINA', - 'argumentCount' => '1+' - ), - 'MINIF' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::MINIF', - 'argumentCount' => '2+' - ), - 'MINUTE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, - 'functionCall' => 'PHPExcel_Calculation_DateTime::MINUTEOFHOUR', - 'argumentCount' => '1' - ), - 'MINVERSE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::MINVERSE', - 'argumentCount' => '1' - ), - 'MIRR' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::MIRR', - 'argumentCount' => '3' - ), - 'MMULT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::MMULT', - 'argumentCount' => '2' - ), - 'MOD' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::MOD', - 'argumentCount' => '2' - ), - 'MODE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::MODE', - 'argumentCount' => '1+' - ), - 'MONTH' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, - 'functionCall' => 'PHPExcel_Calculation_DateTime::MONTHOFYEAR', - 'argumentCount' => '1' - ), - 'MROUND' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::MROUND', - 'argumentCount' => '2' - ), - 'MULTINOMIAL' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::MULTINOMIAL', - 'argumentCount' => '1+' - ), - 'N' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION, - 'functionCall' => 'PHPExcel_Calculation_Functions::N', - 'argumentCount' => '1' - ), - 'NA' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION, - 'functionCall' => 'PHPExcel_Calculation_Functions::NA', - 'argumentCount' => '0' - ), - 'NEGBINOMDIST' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::NEGBINOMDIST', - 'argumentCount' => '3' - ), - 'NETWORKDAYS' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, - 'functionCall' => 'PHPExcel_Calculation_DateTime::NETWORKDAYS', - 'argumentCount' => '2+' - ), - 'NOMINAL' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::NOMINAL', - 'argumentCount' => '2' - ), - 'NORMDIST' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::NORMDIST', - 'argumentCount' => '4' - ), - 'NORMINV' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::NORMINV', - 'argumentCount' => '3' - ), - 'NORMSDIST' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::NORMSDIST', - 'argumentCount' => '1' - ), - 'NORMSINV' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::NORMSINV', - 'argumentCount' => '1' - ), - 'NOT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_LOGICAL, - 'functionCall' => 'PHPExcel_Calculation_Logical::NOT', - 'argumentCount' => '1' - ), - 'NOW' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, - 'functionCall' => 'PHPExcel_Calculation_DateTime::DATETIMENOW', - 'argumentCount' => '0' - ), - 'NPER' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::NPER', - 'argumentCount' => '3-5' - ), - 'NPV' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::NPV', - 'argumentCount' => '2+' - ), - 'OCT2BIN' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::OCTTOBIN', - 'argumentCount' => '1,2' - ), - 'OCT2DEC' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::OCTTODEC', - 'argumentCount' => '1' - ), - 'OCT2HEX' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, - 'functionCall' => 'PHPExcel_Calculation_Engineering::OCTTOHEX', - 'argumentCount' => '1,2' - ), - 'ODD' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::ODD', - 'argumentCount' => '1' - ), - 'ODDFPRICE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '8,9' - ), - 'ODDFYIELD' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '8,9' - ), - 'ODDLPRICE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '7,8' - ), - 'ODDLYIELD' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '7,8' - ), - 'OFFSET' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE, - 'functionCall' => 'PHPExcel_Calculation_LookupRef::OFFSET', - 'argumentCount' => '3-5', - 'passCellReference' => true, - 'passByReference' => array(true) - ), - 'OR' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_LOGICAL, - 'functionCall' => 'PHPExcel_Calculation_Logical::LOGICAL_OR', - 'argumentCount' => '1+' - ), - 'PEARSON' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::CORREL', - 'argumentCount' => '2' - ), - 'PERCENTILE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::PERCENTILE', - 'argumentCount' => '2' - ), - 'PERCENTRANK' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::PERCENTRANK', - 'argumentCount' => '2,3' - ), - 'PERMUT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::PERMUT', - 'argumentCount' => '2' - ), - 'PHONETIC' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '1' - ), - 'PI' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'pi', - 'argumentCount' => '0' - ), - 'PMT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::PMT', - 'argumentCount' => '3-5' - ), - 'POISSON' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::POISSON', - 'argumentCount' => '3' - ), - 'POWER' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::POWER', - 'argumentCount' => '2' - ), - 'PPMT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::PPMT', - 'argumentCount' => '4-6' - ), - 'PRICE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::PRICE', - 'argumentCount' => '6,7' - ), - 'PRICEDISC' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::PRICEDISC', - 'argumentCount' => '4,5' - ), - 'PRICEMAT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::PRICEMAT', - 'argumentCount' => '5,6' - ), - 'PROB' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '3,4' - ), - 'PRODUCT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::PRODUCT', - 'argumentCount' => '1+' - ), - 'PROPER' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, - 'functionCall' => 'PHPExcel_Calculation_TextData::PROPERCASE', - 'argumentCount' => '1' - ), - 'PV' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::PV', - 'argumentCount' => '3-5' - ), - 'QUARTILE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::QUARTILE', - 'argumentCount' => '2' - ), - 'QUOTIENT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::QUOTIENT', - 'argumentCount' => '2' - ), - 'RADIANS' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'deg2rad', - 'argumentCount' => '1' - ), - 'RAND' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::RAND', - 'argumentCount' => '0' - ), - 'RANDBETWEEN' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::RAND', - 'argumentCount' => '2' - ), - 'RANK' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::RANK', - 'argumentCount' => '2,3' - ), - 'RATE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::RATE', - 'argumentCount' => '3-6' - ), - 'RECEIVED' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::RECEIVED', - 'argumentCount' => '4-5' - ), - 'REPLACE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, - 'functionCall' => 'PHPExcel_Calculation_TextData::REPLACE', - 'argumentCount' => '4' - ), - 'REPLACEB' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, - 'functionCall' => 'PHPExcel_Calculation_TextData::REPLACE', - 'argumentCount' => '4' - ), - 'REPT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, - 'functionCall' => 'str_repeat', - 'argumentCount' => '2' - ), - 'RIGHT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, - 'functionCall' => 'PHPExcel_Calculation_TextData::RIGHT', - 'argumentCount' => '1,2' - ), - 'RIGHTB' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, - 'functionCall' => 'PHPExcel_Calculation_TextData::RIGHT', - 'argumentCount' => '1,2' - ), - 'ROMAN' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::ROMAN', - 'argumentCount' => '1,2' - ), - 'ROUND' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'round', - 'argumentCount' => '2' - ), - 'ROUNDDOWN' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::ROUNDDOWN', - 'argumentCount' => '2' - ), - 'ROUNDUP' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::ROUNDUP', - 'argumentCount' => '2' - ), - 'ROW' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE, - 'functionCall' => 'PHPExcel_Calculation_LookupRef::ROW', - 'argumentCount' => '-1', - 'passByReference' => array(true) - ), - 'ROWS' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE, - 'functionCall' => 'PHPExcel_Calculation_LookupRef::ROWS', - 'argumentCount' => '1' - ), - 'RSQ' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::RSQ', - 'argumentCount' => '2' - ), - 'RTD' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '1+' - ), - 'SEARCH' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, - 'functionCall' => 'PHPExcel_Calculation_TextData::SEARCHINSENSITIVE', - 'argumentCount' => '2,3' - ), - 'SEARCHB' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, - 'functionCall' => 'PHPExcel_Calculation_TextData::SEARCHINSENSITIVE', - 'argumentCount' => '2,3' - ), - 'SECOND' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, - 'functionCall' => 'PHPExcel_Calculation_DateTime::SECONDOFMINUTE', - 'argumentCount' => '1' - ), - 'SERIESSUM' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::SERIESSUM', - 'argumentCount' => '4' - ), - 'SIGN' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::SIGN', - 'argumentCount' => '1' - ), - 'SIN' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'sin', - 'argumentCount' => '1' - ), - 'SINH' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'sinh', - 'argumentCount' => '1' - ), - 'SKEW' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::SKEW', - 'argumentCount' => '1+' - ), - 'SLN' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::SLN', - 'argumentCount' => '3' - ), - 'SLOPE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::SLOPE', - 'argumentCount' => '2' - ), - 'SMALL' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::SMALL', - 'argumentCount' => '2' - ), - 'SQRT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'sqrt', - 'argumentCount' => '1' - ), - 'SQRTPI' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::SQRTPI', - 'argumentCount' => '1' - ), - 'STANDARDIZE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::STANDARDIZE', - 'argumentCount' => '3' - ), - 'STDEV' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::STDEV', - 'argumentCount' => '1+' - ), - 'STDEVA' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::STDEVA', - 'argumentCount' => '1+' - ), - 'STDEVP' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::STDEVP', - 'argumentCount' => '1+' - ), - 'STDEVPA' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::STDEVPA', - 'argumentCount' => '1+' - ), - 'STEYX' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::STEYX', - 'argumentCount' => '2' - ), - 'SUBSTITUTE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, - 'functionCall' => 'PHPExcel_Calculation_TextData::SUBSTITUTE', - 'argumentCount' => '3,4' - ), - 'SUBTOTAL' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::SUBTOTAL', - 'argumentCount' => '2+' - ), - 'SUM' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::SUM', - 'argumentCount' => '1+' - ), - 'SUMIF' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::SUMIF', - 'argumentCount' => '2,3' - ), - 'SUMIFS' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::SUMIFS', - 'argumentCount' => '3+' - ), - 'SUMPRODUCT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::SUMPRODUCT', - 'argumentCount' => '1+' - ), - 'SUMSQ' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::SUMSQ', - 'argumentCount' => '1+' - ), - 'SUMX2MY2' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::SUMX2MY2', - 'argumentCount' => '2' - ), - 'SUMX2PY2' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::SUMX2PY2', - 'argumentCount' => '2' - ), - 'SUMXMY2' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::SUMXMY2', - 'argumentCount' => '2' - ), - 'SYD' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::SYD', - 'argumentCount' => '4' - ), - 'T' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, - 'functionCall' => 'PHPExcel_Calculation_TextData::RETURNSTRING', - 'argumentCount' => '1' - ), - 'TAN' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'tan', - 'argumentCount' => '1' - ), - 'TANH' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'tanh', - 'argumentCount' => '1' - ), - 'TBILLEQ' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::TBILLEQ', - 'argumentCount' => '3' - ), - 'TBILLPRICE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::TBILLPRICE', - 'argumentCount' => '3' - ), - 'TBILLYIELD' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::TBILLYIELD', - 'argumentCount' => '3' - ), - 'TDIST' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::TDIST', - 'argumentCount' => '3' - ), - 'TEXT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, - 'functionCall' => 'PHPExcel_Calculation_TextData::TEXTFORMAT', - 'argumentCount' => '2' - ), - 'TIME' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, - 'functionCall' => 'PHPExcel_Calculation_DateTime::TIME', - 'argumentCount' => '3' - ), - 'TIMEVALUE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, - 'functionCall' => 'PHPExcel_Calculation_DateTime::TIMEVALUE', - 'argumentCount' => '1' - ), - 'TINV' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::TINV', - 'argumentCount' => '2' - ), - 'TODAY' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, - 'functionCall' => 'PHPExcel_Calculation_DateTime::DATENOW', - 'argumentCount' => '0' - ), - 'TRANSPOSE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE, - 'functionCall' => 'PHPExcel_Calculation_LookupRef::TRANSPOSE', - 'argumentCount' => '1' - ), - 'TREND' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::TREND', - 'argumentCount' => '1-4' - ), - 'TRIM' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, - 'functionCall' => 'PHPExcel_Calculation_TextData::TRIMSPACES', - 'argumentCount' => '1' - ), - 'TRIMMEAN' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::TRIMMEAN', - 'argumentCount' => '2' - ), - 'TRUE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_LOGICAL, - 'functionCall' => 'PHPExcel_Calculation_Logical::TRUE', - 'argumentCount' => '0' - ), - 'TRUNC' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, - 'functionCall' => 'PHPExcel_Calculation_MathTrig::TRUNC', - 'argumentCount' => '1,2' - ), - 'TTEST' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '4' - ), - 'TYPE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION, - 'functionCall' => 'PHPExcel_Calculation_Functions::TYPE', - 'argumentCount' => '1' - ), - 'UPPER' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, - 'functionCall' => 'PHPExcel_Calculation_TextData::UPPERCASE', - 'argumentCount' => '1' - ), - 'USDOLLAR' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '2' - ), - 'VALUE' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, - 'functionCall' => 'PHPExcel_Calculation_TextData::VALUE', - 'argumentCount' => '1' - ), - 'VAR' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::VARFunc', - 'argumentCount' => '1+' - ), - 'VARA' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::VARA', - 'argumentCount' => '1+' - ), - 'VARP' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::VARP', - 'argumentCount' => '1+' - ), - 'VARPA' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::VARPA', - 'argumentCount' => '1+' - ), - 'VDB' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '5-7' - ), - 'VERSION' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION, - 'functionCall' => 'PHPExcel_Calculation_Functions::VERSION', - 'argumentCount' => '0' - ), - 'VLOOKUP' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE, - 'functionCall' => 'PHPExcel_Calculation_LookupRef::VLOOKUP', - 'argumentCount' => '3,4' - ), - 'WEEKDAY' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, - 'functionCall' => 'PHPExcel_Calculation_DateTime::DAYOFWEEK', - 'argumentCount' => '1,2' - ), - 'WEEKNUM' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, - 'functionCall' => 'PHPExcel_Calculation_DateTime::WEEKOFYEAR', - 'argumentCount' => '1,2' - ), - 'WEIBULL' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::WEIBULL', - 'argumentCount' => '4' - ), - 'WORKDAY' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, - 'functionCall' => 'PHPExcel_Calculation_DateTime::WORKDAY', - 'argumentCount' => '2+' - ), - 'XIRR' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::XIRR', - 'argumentCount' => '2,3' - ), - 'XNPV' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::XNPV', - 'argumentCount' => '3' - ), - 'YEAR' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, - 'functionCall' => 'PHPExcel_Calculation_DateTime::YEAR', - 'argumentCount' => '1' - ), - 'YEARFRAC' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, - 'functionCall' => 'PHPExcel_Calculation_DateTime::YEARFRAC', - 'argumentCount' => '2,3' - ), - 'YIELD' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', - 'argumentCount' => '6,7' - ), - 'YIELDDISC' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::YIELDDISC', - 'argumentCount' => '4,5' - ), - 'YIELDMAT' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, - 'functionCall' => 'PHPExcel_Calculation_Financial::YIELDMAT', - 'argumentCount' => '5,6' - ), - 'ZTEST' => array( - 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, - 'functionCall' => 'PHPExcel_Calculation_Statistical::ZTEST', - 'argumentCount' => '2-3' - ) - ); - - // Internal functions used for special control purposes - private static $controlFunctions = array( - 'MKMATRIX' => array( - 'argumentCount' => '*', - 'functionCall' => 'self::mkMatrix' - ) - ); - - - public function __construct(PHPExcel $workbook = null) - { - $this->delta = 1 * pow(10, 0 - ini_get('precision')); - - $this->workbook = $workbook; - $this->cyclicReferenceStack = new PHPExcel_CalcEngine_CyclicReferenceStack(); - $this->_debugLog = new PHPExcel_CalcEngine_Logger($this->cyclicReferenceStack); - } - - - private static function loadLocales() - { - $localeFileDirectory = PHPEXCEL_ROOT.'PHPExcel/locale/'; - foreach (glob($localeFileDirectory.'/*', GLOB_ONLYDIR) as $filename) { - $filename = substr($filename, strlen($localeFileDirectory)+1); - if ($filename != 'en') { - self::$validLocaleLanguages[] = $filename; - } - } - } - - /** - * Get an instance of this class - * - * @access public - * @param PHPExcel $workbook Injected workbook for working with a PHPExcel object, - * or NULL to create a standalone claculation engine - * @return PHPExcel_Calculation - */ - public static function getInstance(PHPExcel $workbook = null) - { - if ($workbook !== null) { - $instance = $workbook->getCalculationEngine(); - if (isset($instance)) { - return $instance; - } - } - - if (!isset(self::$instance) || (self::$instance === null)) { - self::$instance = new PHPExcel_Calculation(); - } - return self::$instance; - } - - /** - * Unset an instance of this class - * - * @access public - */ - public function __destruct() - { - $this->workbook = null; - } - - /** - * Flush the calculation cache for any existing instance of this class - * but only if a PHPExcel_Calculation instance exists - * - * @access public - * @return null - */ - public function flushInstance() - { - $this->clearCalculationCache(); - } - - - /** - * Get the debuglog for this claculation engine instance - * - * @access public - * @return PHPExcel_CalcEngine_Logger - */ - public function getDebugLog() - { - return $this->_debugLog; - } - - /** - * __clone implementation. Cloning should not be allowed in a Singleton! - * - * @access public - * @throws PHPExcel_Calculation_Exception - */ - final public function __clone() - { - throw new PHPExcel_Calculation_Exception('Cloning the calculation engine is not allowed!'); - } - - - /** - * Return the locale-specific translation of TRUE - * - * @access public - * @return string locale-specific translation of TRUE - */ - public static function getTRUE() - { - return self::$localeBoolean['TRUE']; - } - - /** - * Return the locale-specific translation of FALSE - * - * @access public - * @return string locale-specific translation of FALSE - */ - public static function getFALSE() - { - return self::$localeBoolean['FALSE']; - } - - /** - * Set the Array Return Type (Array or Value of first element in the array) - * - * @access public - * @param string $returnType Array return type - * @return boolean Success or failure - */ - public static function setArrayReturnType($returnType) - { - if (($returnType == self::RETURN_ARRAY_AS_VALUE) || - ($returnType == self::RETURN_ARRAY_AS_ERROR) || - ($returnType == self::RETURN_ARRAY_AS_ARRAY)) { - self::$returnArrayAsType = $returnType; - return true; - } - return false; - } - - - /** - * Return the Array Return Type (Array or Value of first element in the array) - * - * @access public - * @return string $returnType Array return type - */ - public static function getArrayReturnType() - { - return self::$returnArrayAsType; - } - - - /** - * Is calculation caching enabled? - * - * @access public - * @return boolean - */ - public function getCalculationCacheEnabled() - { - return $this->calculationCacheEnabled; - } - - /** - * Enable/disable calculation cache - * - * @access public - * @param boolean $pValue - */ - public function setCalculationCacheEnabled($pValue = true) - { - $this->calculationCacheEnabled = $pValue; - $this->clearCalculationCache(); - } - - - /** - * Enable calculation cache - */ - public function enableCalculationCache() - { - $this->setCalculationCacheEnabled(true); - } - - - /** - * Disable calculation cache - */ - public function disableCalculationCache() - { - $this->setCalculationCacheEnabled(false); - } - - - /** - * Clear calculation cache - */ - public function clearCalculationCache() - { - $this->calculationCache = array(); - } - - /** - * Clear calculation cache for a specified worksheet - * - * @param string $worksheetName - */ - public function clearCalculationCacheForWorksheet($worksheetName) - { - if (isset($this->calculationCache[$worksheetName])) { - unset($this->calculationCache[$worksheetName]); - } - } - - /** - * Rename calculation cache for a specified worksheet - * - * @param string $fromWorksheetName - * @param string $toWorksheetName - */ - public function renameCalculationCacheForWorksheet($fromWorksheetName, $toWorksheetName) - { - if (isset($this->calculationCache[$fromWorksheetName])) { - $this->calculationCache[$toWorksheetName] = &$this->calculationCache[$fromWorksheetName]; - unset($this->calculationCache[$fromWorksheetName]); - } - } - - - /** - * Get the currently defined locale code - * - * @return string - */ - public function getLocale() - { - return self::$localeLanguage; - } - - - /** - * Set the locale code - * - * @param string $locale The locale to use for formula translation - * @return boolean - */ - public function setLocale($locale = 'en_us') - { - // Identify our locale and language - $language = $locale = strtolower($locale); - if (strpos($locale, '_') !== false) { - list($language) = explode('_', $locale); - } - - if (count(self::$validLocaleLanguages) == 1) { - self::loadLocales(); - } - // Test whether we have any language data for this language (any locale) - if (in_array($language, self::$validLocaleLanguages)) { - // initialise language/locale settings - self::$localeFunctions = array(); - self::$localeArgumentSeparator = ','; - self::$localeBoolean = array('TRUE' => 'TRUE', 'FALSE' => 'FALSE', 'NULL' => 'NULL'); - // Default is English, if user isn't requesting english, then read the necessary data from the locale files - if ($locale != 'en_us') { - // Search for a file with a list of function names for locale - $functionNamesFile = PHPEXCEL_ROOT . 'PHPExcel'.DIRECTORY_SEPARATOR.'locale'.DIRECTORY_SEPARATOR.str_replace('_', DIRECTORY_SEPARATOR, $locale).DIRECTORY_SEPARATOR.'functions'; - if (!file_exists($functionNamesFile)) { - // If there isn't a locale specific function file, look for a language specific function file - $functionNamesFile = PHPEXCEL_ROOT . 'PHPExcel'.DIRECTORY_SEPARATOR.'locale'.DIRECTORY_SEPARATOR.$language.DIRECTORY_SEPARATOR.'functions'; - if (!file_exists($functionNamesFile)) { - return false; - } - } - // Retrieve the list of locale or language specific function names - $localeFunctions = file($functionNamesFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); - foreach ($localeFunctions as $localeFunction) { - list($localeFunction) = explode('##', $localeFunction); // Strip out comments - if (strpos($localeFunction, '=') !== false) { - list($fName, $lfName) = explode('=', $localeFunction); - $fName = trim($fName); - $lfName = trim($lfName); - if ((isset(self::$PHPExcelFunctions[$fName])) && ($lfName != '') && ($fName != $lfName)) { - self::$localeFunctions[$fName] = $lfName; - } - } - } - // Default the TRUE and FALSE constants to the locale names of the TRUE() and FALSE() functions - if (isset(self::$localeFunctions['TRUE'])) { - self::$localeBoolean['TRUE'] = self::$localeFunctions['TRUE']; - } - if (isset(self::$localeFunctions['FALSE'])) { - self::$localeBoolean['FALSE'] = self::$localeFunctions['FALSE']; - } - - $configFile = PHPEXCEL_ROOT . 'PHPExcel'.DIRECTORY_SEPARATOR.'locale'.DIRECTORY_SEPARATOR.str_replace('_', DIRECTORY_SEPARATOR, $locale).DIRECTORY_SEPARATOR.'config'; - if (!file_exists($configFile)) { - $configFile = PHPEXCEL_ROOT . 'PHPExcel'.DIRECTORY_SEPARATOR.'locale'.DIRECTORY_SEPARATOR.$language.DIRECTORY_SEPARATOR.'config'; - } - if (file_exists($configFile)) { - $localeSettings = file($configFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); - foreach ($localeSettings as $localeSetting) { - list($localeSetting) = explode('##', $localeSetting); // Strip out comments - if (strpos($localeSetting, '=') !== false) { - list($settingName, $settingValue) = explode('=', $localeSetting); - $settingName = strtoupper(trim($settingName)); - switch ($settingName) { - case 'ARGUMENTSEPARATOR': - self::$localeArgumentSeparator = trim($settingValue); - break; - } - } - } - } - } - - self::$functionReplaceFromExcel = self::$functionReplaceToExcel = - self::$functionReplaceFromLocale = self::$functionReplaceToLocale = null; - self::$localeLanguage = $locale; - return true; - } - return false; - } - - - - public static function translateSeparator($fromSeparator, $toSeparator, $formula, &$inBraces) - { - $strlen = mb_strlen($formula); - for ($i = 0; $i < $strlen; ++$i) { - $chr = mb_substr($formula, $i, 1); - switch ($chr) { - case '{': - $inBraces = true; - break; - case '}': - $inBraces = false; - break; - case $fromSeparator: - if (!$inBraces) { - $formula = mb_substr($formula, 0, $i).$toSeparator.mb_substr($formula, $i+1); - } - } - } - return $formula; - } - - private static function translateFormula($from, $to, $formula, $fromSeparator, $toSeparator) - { - // Convert any Excel function names to the required language - if (self::$localeLanguage !== 'en_us') { - $inBraces = false; - // If there is the possibility of braces within a quoted string, then we don't treat those as matrix indicators - if (strpos($formula, '"') !== false) { - // So instead we skip replacing in any quoted strings by only replacing in every other array element after we've exploded - // the formula - $temp = explode('"', $formula); - $i = false; - foreach ($temp as &$value) { - // Only count/replace in alternating array entries - if ($i = !$i) { - $value = preg_replace($from, $to, $value); - $value = self::translateSeparator($fromSeparator, $toSeparator, $value, $inBraces); - } - } - unset($value); - // Then rebuild the formula string - $formula = implode('"', $temp); - } else { - // If there's no quoted strings, then we do a simple count/replace - $formula = preg_replace($from, $to, $formula); - $formula = self::translateSeparator($fromSeparator, $toSeparator, $formula, $inBraces); - } - } - - return $formula; - } - - private static $functionReplaceFromExcel = null; - private static $functionReplaceToLocale = null; - - public function _translateFormulaToLocale($formula) - { - if (self::$functionReplaceFromExcel === null) { - self::$functionReplaceFromExcel = array(); - foreach (array_keys(self::$localeFunctions) as $excelFunctionName) { - self::$functionReplaceFromExcel[] = '/(@?[^\w\.])'.preg_quote($excelFunctionName).'([\s]*\()/Ui'; - } - foreach (array_keys(self::$localeBoolean) as $excelBoolean) { - self::$functionReplaceFromExcel[] = '/(@?[^\w\.])'.preg_quote($excelBoolean).'([^\w\.])/Ui'; - } - - } - - if (self::$functionReplaceToLocale === null) { - self::$functionReplaceToLocale = array(); - foreach (array_values(self::$localeFunctions) as $localeFunctionName) { - self::$functionReplaceToLocale[] = '$1'.trim($localeFunctionName).'$2'; - } - foreach (array_values(self::$localeBoolean) as $localeBoolean) { - self::$functionReplaceToLocale[] = '$1'.trim($localeBoolean).'$2'; - } - } - - return self::translateFormula(self::$functionReplaceFromExcel, self::$functionReplaceToLocale, $formula, ',', self::$localeArgumentSeparator); - } - - - private static $functionReplaceFromLocale = null; - private static $functionReplaceToExcel = null; - - public function _translateFormulaToEnglish($formula) - { - if (self::$functionReplaceFromLocale === null) { - self::$functionReplaceFromLocale = array(); - foreach (array_values(self::$localeFunctions) as $localeFunctionName) { - self::$functionReplaceFromLocale[] = '/(@?[^\w\.])'.preg_quote($localeFunctionName).'([\s]*\()/Ui'; - } - foreach (array_values(self::$localeBoolean) as $excelBoolean) { - self::$functionReplaceFromLocale[] = '/(@?[^\w\.])'.preg_quote($excelBoolean).'([^\w\.])/Ui'; - } - } - - if (self::$functionReplaceToExcel === null) { - self::$functionReplaceToExcel = array(); - foreach (array_keys(self::$localeFunctions) as $excelFunctionName) { - self::$functionReplaceToExcel[] = '$1'.trim($excelFunctionName).'$2'; - } - foreach (array_keys(self::$localeBoolean) as $excelBoolean) { - self::$functionReplaceToExcel[] = '$1'.trim($excelBoolean).'$2'; - } - } - - return self::translateFormula(self::$functionReplaceFromLocale, self::$functionReplaceToExcel, $formula, self::$localeArgumentSeparator, ','); - } - - - public static function localeFunc($function) - { - if (self::$localeLanguage !== 'en_us') { - $functionName = trim($function, '('); - if (isset(self::$localeFunctions[$functionName])) { - $brace = ($functionName != $function); - $function = self::$localeFunctions[$functionName]; - if ($brace) { - $function .= '('; - } - } - } - return $function; - } - - - - - /** - * Wrap string values in quotes - * - * @param mixed $value - * @return mixed - */ - public static function wrapResult($value) - { - if (is_string($value)) { - // Error values cannot be "wrapped" - if (preg_match('/^'.self::CALCULATION_REGEXP_ERROR.'$/i', $value, $match)) { - // Return Excel errors "as is" - return $value; - } - // Return strings wrapped in quotes - return '"'.$value.'"'; - // Convert numeric errors to NaN error - } elseif ((is_float($value)) && ((is_nan($value)) || (is_infinite($value)))) { - return PHPExcel_Calculation_Functions::NaN(); - } - - return $value; - } - - - /** - * Remove quotes used as a wrapper to identify string values - * - * @param mixed $value - * @return mixed - */ - public static function unwrapResult($value) - { - if (is_string($value)) { - if ((isset($value{0})) && ($value{0} == '"') && (substr($value, -1) == '"')) { - return substr($value, 1, -1); - } - // Convert numeric errors to NaN error - } elseif ((is_float($value)) && ((is_nan($value)) || (is_infinite($value)))) { - return PHPExcel_Calculation_Functions::NaN(); - } - return $value; - } - - - - - /** - * Calculate cell value (using formula from a cell ID) - * Retained for backward compatibility - * - * @access public - * @param PHPExcel_Cell $pCell Cell to calculate - * @return mixed - * @throws PHPExcel_Calculation_Exception - */ - public function calculate(PHPExcel_Cell $pCell = null) - { - try { - return $this->calculateCellValue($pCell); - } catch (PHPExcel_Exception $e) { - throw new PHPExcel_Calculation_Exception($e->getMessage()); - } - } - - - /** - * Calculate the value of a cell formula - * - * @access public - * @param PHPExcel_Cell $pCell Cell to calculate - * @param Boolean $resetLog Flag indicating whether the debug log should be reset or not - * @return mixed - * @throws PHPExcel_Calculation_Exception - */ - public function calculateCellValue(PHPExcel_Cell $pCell = null, $resetLog = true) - { - if ($pCell === null) { - return null; - } - - $returnArrayAsType = self::$returnArrayAsType; - if ($resetLog) { - // Initialise the logging settings if requested - $this->formulaError = null; - $this->_debugLog->clearLog(); - $this->cyclicReferenceStack->clear(); - $this->cyclicFormulaCounter = 1; - - self::$returnArrayAsType = self::RETURN_ARRAY_AS_ARRAY; - } - - // Execute the calculation for the cell formula - $this->cellStack[] = array( - 'sheet' => $pCell->getWorksheet()->getTitle(), - 'cell' => $pCell->getCoordinate(), - ); - try { - $result = self::unwrapResult($this->_calculateFormulaValue($pCell->getValue(), $pCell->getCoordinate(), $pCell)); - $cellAddress = array_pop($this->cellStack); - $this->workbook->getSheetByName($cellAddress['sheet'])->getCell($cellAddress['cell']); - } catch (PHPExcel_Exception $e) { - $cellAddress = array_pop($this->cellStack); - $this->workbook->getSheetByName($cellAddress['sheet'])->getCell($cellAddress['cell']); - throw new PHPExcel_Calculation_Exception($e->getMessage()); - } - - if ((is_array($result)) && (self::$returnArrayAsType != self::RETURN_ARRAY_AS_ARRAY)) { - self::$returnArrayAsType = $returnArrayAsType; - $testResult = PHPExcel_Calculation_Functions::flattenArray($result); - if (self::$returnArrayAsType == self::RETURN_ARRAY_AS_ERROR) { - return PHPExcel_Calculation_Functions::VALUE(); - } - // If there's only a single cell in the array, then we allow it - if (count($testResult) != 1) { - // If keys are numeric, then it's a matrix result rather than a cell range result, so we permit it - $r = array_keys($result); - $r = array_shift($r); - if (!is_numeric($r)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - if (is_array($result[$r])) { - $c = array_keys($result[$r]); - $c = array_shift($c); - if (!is_numeric($c)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - } - } - $result = array_shift($testResult); - } - self::$returnArrayAsType = $returnArrayAsType; - - - if ($result === null) { - return 0; - } elseif ((is_float($result)) && ((is_nan($result)) || (is_infinite($result)))) { - return PHPExcel_Calculation_Functions::NaN(); - } - return $result; - } - - - /** - * Validate and parse a formula string - * - * @param string $formula Formula to parse - * @return array - * @throws PHPExcel_Calculation_Exception - */ - public function parseFormula($formula) - { - // Basic validation that this is indeed a formula - // We return an empty array if not - $formula = trim($formula); - if ((!isset($formula{0})) || ($formula{0} != '=')) { - return array(); - } - $formula = ltrim(substr($formula, 1)); - if (!isset($formula{0})) { - return array(); - } - - // Parse the formula and return the token stack - return $this->_parseFormula($formula); - } - - - /** - * Calculate the value of a formula - * - * @param string $formula Formula to parse - * @param string $cellID Address of the cell to calculate - * @param PHPExcel_Cell $pCell Cell to calculate - * @return mixed - * @throws PHPExcel_Calculation_Exception - */ - public function calculateFormula($formula, $cellID = null, PHPExcel_Cell $pCell = null) - { - // Initialise the logging settings - $this->formulaError = null; - $this->_debugLog->clearLog(); - $this->cyclicReferenceStack->clear(); - - if ($this->workbook !== null && $cellID === null && $pCell === null) { - $cellID = 'A1'; - $pCell = $this->workbook->getActiveSheet()->getCell($cellID); - } else { - // Disable calculation cacheing because it only applies to cell calculations, not straight formulae - // But don't actually flush any cache - $resetCache = $this->getCalculationCacheEnabled(); - $this->calculationCacheEnabled = false; - } - - // Execute the calculation - try { - $result = self::unwrapResult($this->_calculateFormulaValue($formula, $cellID, $pCell)); - } catch (PHPExcel_Exception $e) { - throw new PHPExcel_Calculation_Exception($e->getMessage()); - } - - if ($this->workbook === null) { - // Reset calculation cacheing to its previous state - $this->calculationCacheEnabled = $resetCache; - } - - return $result; - } - - - public function getValueFromCache($cellReference, &$cellValue) - { - // Is calculation cacheing enabled? - // Is the value present in calculation cache? - $this->_debugLog->writeDebugLog('Testing cache value for cell ', $cellReference); - if (($this->calculationCacheEnabled) && (isset($this->calculationCache[$cellReference]))) { - $this->_debugLog->writeDebugLog('Retrieving value for cell ', $cellReference, ' from cache'); - // Return the cached result - $cellValue = $this->calculationCache[$cellReference]; - return true; - } - return false; - } - - public function saveValueToCache($cellReference, $cellValue) - { - if ($this->calculationCacheEnabled) { - $this->calculationCache[$cellReference] = $cellValue; - } - } - - /** - * Parse a cell formula and calculate its value - * - * @param string $formula The formula to parse and calculate - * @param string $cellID The ID (e.g. A3) of the cell that we are calculating - * @param PHPExcel_Cell $pCell Cell to calculate - * @return mixed - * @throws PHPExcel_Calculation_Exception - */ - public function _calculateFormulaValue($formula, $cellID = null, PHPExcel_Cell $pCell = null) - { - $cellValue = null; - - // Basic validation that this is indeed a formula - // We simply return the cell value if not - $formula = trim($formula); - if ($formula{0} != '=') { - return self::wrapResult($formula); - } - $formula = ltrim(substr($formula, 1)); - if (!isset($formula{0})) { - return self::wrapResult($formula); - } - - $pCellParent = ($pCell !== null) ? $pCell->getWorksheet() : null; - $wsTitle = ($pCellParent !== null) ? $pCellParent->getTitle() : "\x00Wrk"; - $wsCellReference = $wsTitle . '!' . $cellID; - - if (($cellID !== null) && ($this->getValueFromCache($wsCellReference, $cellValue))) { - return $cellValue; - } - - if (($wsTitle{0} !== "\x00") && ($this->cyclicReferenceStack->onStack($wsCellReference))) { - if ($this->cyclicFormulaCount <= 0) { - $this->cyclicFormulaCell = ''; - return $this->raiseFormulaError('Cyclic Reference in Formula'); - } elseif ($this->cyclicFormulaCell === $wsCellReference) { - ++$this->cyclicFormulaCounter; - if ($this->cyclicFormulaCounter >= $this->cyclicFormulaCount) { - $this->cyclicFormulaCell = ''; - return $cellValue; - } - } elseif ($this->cyclicFormulaCell == '') { - if ($this->cyclicFormulaCounter >= $this->cyclicFormulaCount) { - return $cellValue; - } - $this->cyclicFormulaCell = $wsCellReference; - } - } - - // Parse the formula onto the token stack and calculate the value - $this->cyclicReferenceStack->push($wsCellReference); - $cellValue = $this->processTokenStack($this->_parseFormula($formula, $pCell), $cellID, $pCell); - $this->cyclicReferenceStack->pop(); - - // Save to calculation cache - if ($cellID !== null) { - $this->saveValueToCache($wsCellReference, $cellValue); - } - - // Return the calculated value - return $cellValue; - } - - - /** - * Ensure that paired matrix operands are both matrices and of the same size - * - * @param mixed &$operand1 First matrix operand - * @param mixed &$operand2 Second matrix operand - * @param integer $resize Flag indicating whether the matrices should be resized to match - * and (if so), whether the smaller dimension should grow or the - * larger should shrink. - * 0 = no resize - * 1 = shrink to fit - * 2 = extend to fit - */ - private static function checkMatrixOperands(&$operand1, &$operand2, $resize = 1) - { - // Examine each of the two operands, and turn them into an array if they aren't one already - // Note that this function should only be called if one or both of the operand is already an array - if (!is_array($operand1)) { - list($matrixRows, $matrixColumns) = self::getMatrixDimensions($operand2); - $operand1 = array_fill(0, $matrixRows, array_fill(0, $matrixColumns, $operand1)); - $resize = 0; - } elseif (!is_array($operand2)) { - list($matrixRows, $matrixColumns) = self::getMatrixDimensions($operand1); - $operand2 = array_fill(0, $matrixRows, array_fill(0, $matrixColumns, $operand2)); - $resize = 0; - } - - list($matrix1Rows, $matrix1Columns) = self::getMatrixDimensions($operand1); - list($matrix2Rows, $matrix2Columns) = self::getMatrixDimensions($operand2); - if (($matrix1Rows == $matrix2Columns) && ($matrix2Rows == $matrix1Columns)) { - $resize = 1; - } - - if ($resize == 2) { - // Given two matrices of (potentially) unequal size, convert the smaller in each dimension to match the larger - self::resizeMatricesExtend($operand1, $operand2, $matrix1Rows, $matrix1Columns, $matrix2Rows, $matrix2Columns); - } elseif ($resize == 1) { - // Given two matrices of (potentially) unequal size, convert the larger in each dimension to match the smaller - self::resizeMatricesShrink($operand1, $operand2, $matrix1Rows, $matrix1Columns, $matrix2Rows, $matrix2Columns); - } - return array( $matrix1Rows, $matrix1Columns, $matrix2Rows, $matrix2Columns); - } - - - /** - * Read the dimensions of a matrix, and re-index it with straight numeric keys starting from row 0, column 0 - * - * @param mixed &$matrix matrix operand - * @return array An array comprising the number of rows, and number of columns - */ - private static function getMatrixDimensions(&$matrix) - { - $matrixRows = count($matrix); - $matrixColumns = 0; - foreach ($matrix as $rowKey => $rowValue) { - $matrixColumns = max(count($rowValue), $matrixColumns); - if (!is_array($rowValue)) { - $matrix[$rowKey] = array($rowValue); - } else { - $matrix[$rowKey] = array_values($rowValue); - } - } - $matrix = array_values($matrix); - return array($matrixRows, $matrixColumns); - } - - - /** - * Ensure that paired matrix operands are both matrices of the same size - * - * @param mixed &$matrix1 First matrix operand - * @param mixed &$matrix2 Second matrix operand - * @param integer $matrix1Rows Row size of first matrix operand - * @param integer $matrix1Columns Column size of first matrix operand - * @param integer $matrix2Rows Row size of second matrix operand - * @param integer $matrix2Columns Column size of second matrix operand - */ - private static function resizeMatricesShrink(&$matrix1, &$matrix2, $matrix1Rows, $matrix1Columns, $matrix2Rows, $matrix2Columns) - { - if (($matrix2Columns < $matrix1Columns) || ($matrix2Rows < $matrix1Rows)) { - if ($matrix2Rows < $matrix1Rows) { - for ($i = $matrix2Rows; $i < $matrix1Rows; ++$i) { - unset($matrix1[$i]); - } - } - if ($matrix2Columns < $matrix1Columns) { - for ($i = 0; $i < $matrix1Rows; ++$i) { - for ($j = $matrix2Columns; $j < $matrix1Columns; ++$j) { - unset($matrix1[$i][$j]); - } - } - } - } - - if (($matrix1Columns < $matrix2Columns) || ($matrix1Rows < $matrix2Rows)) { - if ($matrix1Rows < $matrix2Rows) { - for ($i = $matrix1Rows; $i < $matrix2Rows; ++$i) { - unset($matrix2[$i]); - } - } - if ($matrix1Columns < $matrix2Columns) { - for ($i = 0; $i < $matrix2Rows; ++$i) { - for ($j = $matrix1Columns; $j < $matrix2Columns; ++$j) { - unset($matrix2[$i][$j]); - } - } - } - } - } - - - /** - * Ensure that paired matrix operands are both matrices of the same size - * - * @param mixed &$matrix1 First matrix operand - * @param mixed &$matrix2 Second matrix operand - * @param integer $matrix1Rows Row size of first matrix operand - * @param integer $matrix1Columns Column size of first matrix operand - * @param integer $matrix2Rows Row size of second matrix operand - * @param integer $matrix2Columns Column size of second matrix operand - */ - private static function resizeMatricesExtend(&$matrix1, &$matrix2, $matrix1Rows, $matrix1Columns, $matrix2Rows, $matrix2Columns) - { - if (($matrix2Columns < $matrix1Columns) || ($matrix2Rows < $matrix1Rows)) { - if ($matrix2Columns < $matrix1Columns) { - for ($i = 0; $i < $matrix2Rows; ++$i) { - $x = $matrix2[$i][$matrix2Columns-1]; - for ($j = $matrix2Columns; $j < $matrix1Columns; ++$j) { - $matrix2[$i][$j] = $x; - } - } - } - if ($matrix2Rows < $matrix1Rows) { - $x = $matrix2[$matrix2Rows-1]; - for ($i = 0; $i < $matrix1Rows; ++$i) { - $matrix2[$i] = $x; - } - } - } - - if (($matrix1Columns < $matrix2Columns) || ($matrix1Rows < $matrix2Rows)) { - if ($matrix1Columns < $matrix2Columns) { - for ($i = 0; $i < $matrix1Rows; ++$i) { - $x = $matrix1[$i][$matrix1Columns-1]; - for ($j = $matrix1Columns; $j < $matrix2Columns; ++$j) { - $matrix1[$i][$j] = $x; - } - } - } - if ($matrix1Rows < $matrix2Rows) { - $x = $matrix1[$matrix1Rows-1]; - for ($i = 0; $i < $matrix2Rows; ++$i) { - $matrix1[$i] = $x; - } - } - } - } - - - /** - * Format details of an operand for display in the log (based on operand type) - * - * @param mixed $value First matrix operand - * @return mixed - */ - private function showValue($value) - { - if ($this->_debugLog->getWriteDebugLog()) { - $testArray = PHPExcel_Calculation_Functions::flattenArray($value); - if (count($testArray) == 1) { - $value = array_pop($testArray); - } - - if (is_array($value)) { - $returnMatrix = array(); - $pad = $rpad = ', '; - foreach ($value as $row) { - if (is_array($row)) { - $returnMatrix[] = implode($pad, array_map(array($this, 'showValue'), $row)); - $rpad = '; '; - } else { - $returnMatrix[] = $this->showValue($row); - } - } - return '{ '.implode($rpad, $returnMatrix).' }'; - } elseif (is_string($value) && (trim($value, '"') == $value)) { - return '"'.$value.'"'; - } elseif (is_bool($value)) { - return ($value) ? self::$localeBoolean['TRUE'] : self::$localeBoolean['FALSE']; - } - } - return PHPExcel_Calculation_Functions::flattenSingleValue($value); - } - - - /** - * Format type and details of an operand for display in the log (based on operand type) - * - * @param mixed $value First matrix operand - * @return mixed - */ - private function showTypeDetails($value) - { - if ($this->_debugLog->getWriteDebugLog()) { - $testArray = PHPExcel_Calculation_Functions::flattenArray($value); - if (count($testArray) == 1) { - $value = array_pop($testArray); - } - - if ($value === null) { - return 'a NULL value'; - } elseif (is_float($value)) { - $typeString = 'a floating point number'; - } elseif (is_int($value)) { - $typeString = 'an integer number'; - } elseif (is_bool($value)) { - $typeString = 'a boolean'; - } elseif (is_array($value)) { - $typeString = 'a matrix'; - } else { - if ($value == '') { - return 'an empty string'; - } elseif ($value{0} == '#') { - return 'a '.$value.' error'; - } else { - $typeString = 'a string'; - } - } - return $typeString.' with a value of '.$this->showValue($value); - } - } - - - private function convertMatrixReferences($formula) - { - static $matrixReplaceFrom = array('{', ';', '}'); - static $matrixReplaceTo = array('MKMATRIX(MKMATRIX(', '),MKMATRIX(', '))'); - - // Convert any Excel matrix references to the MKMATRIX() function - if (strpos($formula, '{') !== false) { - // If there is the possibility of braces within a quoted string, then we don't treat those as matrix indicators - if (strpos($formula, '"') !== false) { - // So instead we skip replacing in any quoted strings by only replacing in every other array element after we've exploded - // the formula - $temp = explode('"', $formula); - // Open and Closed counts used for trapping mismatched braces in the formula - $openCount = $closeCount = 0; - $i = false; - foreach ($temp as &$value) { - // Only count/replace in alternating array entries - if ($i = !$i) { - $openCount += substr_count($value, '{'); - $closeCount += substr_count($value, '}'); - $value = str_replace($matrixReplaceFrom, $matrixReplaceTo, $value); - } - } - unset($value); - // Then rebuild the formula string - $formula = implode('"', $temp); - } else { - // If there's no quoted strings, then we do a simple count/replace - $openCount = substr_count($formula, '{'); - $closeCount = substr_count($formula, '}'); - $formula = str_replace($matrixReplaceFrom, $matrixReplaceTo, $formula); - } - // Trap for mismatched braces and trigger an appropriate error - if ($openCount < $closeCount) { - if ($openCount > 0) { - return $this->raiseFormulaError("Formula Error: Mismatched matrix braces '}'"); - } else { - return $this->raiseFormulaError("Formula Error: Unexpected '}' encountered"); - } - } elseif ($openCount > $closeCount) { - if ($closeCount > 0) { - return $this->raiseFormulaError("Formula Error: Mismatched matrix braces '{'"); - } else { - return $this->raiseFormulaError("Formula Error: Unexpected '{' encountered"); - } - } - } - - return $formula; - } - - - private static function mkMatrix() - { - return func_get_args(); - } - - - // Binary Operators - // These operators always work on two values - // Array key is the operator, the value indicates whether this is a left or right associative operator - private static $operatorAssociativity = array( - '^' => 0, // Exponentiation - '*' => 0, '/' => 0, // Multiplication and Division - '+' => 0, '-' => 0, // Addition and Subtraction - '&' => 0, // Concatenation - '|' => 0, ':' => 0, // Intersect and Range - '>' => 0, '<' => 0, '=' => 0, '>=' => 0, '<=' => 0, '<>' => 0 // Comparison - ); - - // Comparison (Boolean) Operators - // These operators work on two values, but always return a boolean result - private static $comparisonOperators = array('>' => true, '<' => true, '=' => true, '>=' => true, '<=' => true, '<>' => true); - - // Operator Precedence - // This list includes all valid operators, whether binary (including boolean) or unary (such as %) - // Array key is the operator, the value is its precedence - private static $operatorPrecedence = array( - ':' => 8, // Range - '|' => 7, // Intersect - '~' => 6, // Negation - '%' => 5, // Percentage - '^' => 4, // Exponentiation - '*' => 3, '/' => 3, // Multiplication and Division - '+' => 2, '-' => 2, // Addition and Subtraction - '&' => 1, // Concatenation - '>' => 0, '<' => 0, '=' => 0, '>=' => 0, '<=' => 0, '<>' => 0 // Comparison - ); - - // Convert infix to postfix notation - private function _parseFormula($formula, PHPExcel_Cell $pCell = null) - { - if (($formula = $this->convertMatrixReferences(trim($formula))) === false) { - return false; - } - - // If we're using cell caching, then $pCell may well be flushed back to the cache (which detaches the parent worksheet), - // so we store the parent worksheet so that we can re-attach it when necessary - $pCellParent = ($pCell !== null) ? $pCell->getWorksheet() : null; - - $regexpMatchString = '/^('.self::CALCULATION_REGEXP_FUNCTION. - '|'.self::CALCULATION_REGEXP_CELLREF. - '|'.self::CALCULATION_REGEXP_NUMBER. - '|'.self::CALCULATION_REGEXP_STRING. - '|'.self::CALCULATION_REGEXP_OPENBRACE. - '|'.self::CALCULATION_REGEXP_NAMEDRANGE. - '|'.self::CALCULATION_REGEXP_ERROR. - ')/si'; - - // Start with initialisation - $index = 0; - $stack = new PHPExcel_Calculation_Token_Stack; - $output = array(); - $expectingOperator = false; // We use this test in syntax-checking the expression to determine when a - // - is a negation or + is a positive operator rather than an operation - $expectingOperand = false; // We use this test in syntax-checking the expression to determine whether an operand - // should be null in a function call - // The guts of the lexical parser - // Loop through the formula extracting each operator and operand in turn - while (true) { -//echo 'Assessing Expression '.substr($formula, $index), PHP_EOL; - $opCharacter = $formula{$index}; // Get the first character of the value at the current index position -//echo 'Initial character of expression block is '.$opCharacter, PHP_EOL; - if ((isset(self::$comparisonOperators[$opCharacter])) && (strlen($formula) > $index) && (isset(self::$comparisonOperators[$formula{$index+1}]))) { - $opCharacter .= $formula{++$index}; -//echo 'Initial character of expression block is comparison operator '.$opCharacter.PHP_EOL; - } - - // Find out if we're currently at the beginning of a number, variable, cell reference, function, parenthesis or operand - $isOperandOrFunction = preg_match($regexpMatchString, substr($formula, $index), $match); -//echo '$isOperandOrFunction is '.(($isOperandOrFunction) ? 'True' : 'False').PHP_EOL; -//var_dump($match); - - if ($opCharacter == '-' && !$expectingOperator) { // Is it a negation instead of a minus? -//echo 'Element is a Negation operator', PHP_EOL; - $stack->push('Unary Operator', '~'); // Put a negation on the stack - ++$index; // and drop the negation symbol - } elseif ($opCharacter == '%' && $expectingOperator) { -//echo 'Element is a Percentage operator', PHP_EOL; - $stack->push('Unary Operator', '%'); // Put a percentage on the stack - ++$index; - } elseif ($opCharacter == '+' && !$expectingOperator) { // Positive (unary plus rather than binary operator plus) can be discarded? -//echo 'Element is a Positive number, not Plus operator', PHP_EOL; - ++$index; // Drop the redundant plus symbol - } elseif ((($opCharacter == '~') || ($opCharacter == '|')) && (!$isOperandOrFunction)) { // We have to explicitly deny a tilde or pipe, because they are legal - return $this->raiseFormulaError("Formula Error: Illegal character '~'"); // on the stack but not in the input expression - - } elseif ((isset(self::$operators[$opCharacter]) or $isOperandOrFunction) && $expectingOperator) { // Are we putting an operator on the stack? -//echo 'Element with value '.$opCharacter.' is an Operator', PHP_EOL; - while ($stack->count() > 0 && - ($o2 = $stack->last()) && - isset(self::$operators[$o2['value']]) && - @(self::$operatorAssociativity[$opCharacter] ? self::$operatorPrecedence[$opCharacter] < self::$operatorPrecedence[$o2['value']] : self::$operatorPrecedence[$opCharacter] <= self::$operatorPrecedence[$o2['value']])) { - $output[] = $stack->pop(); // Swap operands and higher precedence operators from the stack to the output - } - $stack->push('Binary Operator', $opCharacter); // Finally put our current operator onto the stack - ++$index; - $expectingOperator = false; - - } elseif ($opCharacter == ')' && $expectingOperator) { // Are we expecting to close a parenthesis? -//echo 'Element is a Closing bracket', PHP_EOL; - $expectingOperand = false; - while (($o2 = $stack->pop()) && $o2['value'] != '(') { // Pop off the stack back to the last ( - if ($o2 === null) { - return $this->raiseFormulaError('Formula Error: Unexpected closing brace ")"'); - } else { - $output[] = $o2; - } - } - $d = $stack->last(2); - if (preg_match('/^'.self::CALCULATION_REGEXP_FUNCTION.'$/i', $d['value'], $matches)) { // Did this parenthesis just close a function? - $functionName = $matches[1]; // Get the function name -//echo 'Closed Function is '.$functionName, PHP_EOL; - $d = $stack->pop(); - $argumentCount = $d['value']; // See how many arguments there were (argument count is the next value stored on the stack) -//if ($argumentCount == 0) { -// echo 'With no arguments', PHP_EOL; -//} elseif ($argumentCount == 1) { -// echo 'With 1 argument', PHP_EOL; -//} else { -// echo 'With '.$argumentCount.' arguments', PHP_EOL; -//} - $output[] = $d; // Dump the argument count on the output - $output[] = $stack->pop(); // Pop the function and push onto the output - if (isset(self::$controlFunctions[$functionName])) { -//echo 'Built-in function '.$functionName, PHP_EOL; - $expectedArgumentCount = self::$controlFunctions[$functionName]['argumentCount']; - $functionCall = self::$controlFunctions[$functionName]['functionCall']; - } elseif (isset(self::$PHPExcelFunctions[$functionName])) { -//echo 'PHPExcel function '.$functionName, PHP_EOL; - $expectedArgumentCount = self::$PHPExcelFunctions[$functionName]['argumentCount']; - $functionCall = self::$PHPExcelFunctions[$functionName]['functionCall']; - } else { // did we somehow push a non-function on the stack? this should never happen - return $this->raiseFormulaError("Formula Error: Internal error, non-function on stack"); - } - // Check the argument count - $argumentCountError = false; - if (is_numeric($expectedArgumentCount)) { - if ($expectedArgumentCount < 0) { -//echo '$expectedArgumentCount is between 0 and '.abs($expectedArgumentCount), PHP_EOL; - if ($argumentCount > abs($expectedArgumentCount)) { - $argumentCountError = true; - $expectedArgumentCountString = 'no more than '.abs($expectedArgumentCount); - } - } else { -//echo '$expectedArgumentCount is numeric '.$expectedArgumentCount, PHP_EOL; - if ($argumentCount != $expectedArgumentCount) { - $argumentCountError = true; - $expectedArgumentCountString = $expectedArgumentCount; - } - } - } elseif ($expectedArgumentCount != '*') { - $isOperandOrFunction = preg_match('/(\d*)([-+,])(\d*)/', $expectedArgumentCount, $argMatch); -//print_r($argMatch); -//echo PHP_EOL; - switch ($argMatch[2]) { - case '+': - if ($argumentCount < $argMatch[1]) { - $argumentCountError = true; - $expectedArgumentCountString = $argMatch[1].' or more '; - } - break; - case '-': - if (($argumentCount < $argMatch[1]) || ($argumentCount > $argMatch[3])) { - $argumentCountError = true; - $expectedArgumentCountString = 'between '.$argMatch[1].' and '.$argMatch[3]; - } - break; - case ',': - if (($argumentCount != $argMatch[1]) && ($argumentCount != $argMatch[3])) { - $argumentCountError = true; - $expectedArgumentCountString = 'either '.$argMatch[1].' or '.$argMatch[3]; - } - break; - } - } - if ($argumentCountError) { - return $this->raiseFormulaError("Formula Error: Wrong number of arguments for $functionName() function: $argumentCount given, ".$expectedArgumentCountString." expected"); - } - } - ++$index; - - } elseif ($opCharacter == ',') { // Is this the separator for function arguments? -//echo 'Element is a Function argument separator', PHP_EOL; - while (($o2 = $stack->pop()) && $o2['value'] != '(') { // Pop off the stack back to the last ( - if ($o2 === null) { - return $this->raiseFormulaError("Formula Error: Unexpected ,"); - } else { - $output[] = $o2; // pop the argument expression stuff and push onto the output - } - } - // If we've a comma when we're expecting an operand, then what we actually have is a null operand; - // so push a null onto the stack - if (($expectingOperand) || (!$expectingOperator)) { - $output[] = array('type' => 'NULL Value', 'value' => self::$excelConstants['NULL'], 'reference' => null); - } - // make sure there was a function - $d = $stack->last(2); - if (!preg_match('/^'.self::CALCULATION_REGEXP_FUNCTION.'$/i', $d['value'], $matches)) { - return $this->raiseFormulaError("Formula Error: Unexpected ,"); - } - $d = $stack->pop(); - $stack->push($d['type'], ++$d['value'], $d['reference']); // increment the argument count - $stack->push('Brace', '('); // put the ( back on, we'll need to pop back to it again - $expectingOperator = false; - $expectingOperand = true; - ++$index; - - } elseif ($opCharacter == '(' && !$expectingOperator) { -// echo 'Element is an Opening Bracket
    '; - $stack->push('Brace', '('); - ++$index; - - } elseif ($isOperandOrFunction && !$expectingOperator) { // do we now have a function/variable/number? - $expectingOperator = true; - $expectingOperand = false; - $val = $match[1]; - $length = strlen($val); -// echo 'Element with value '.$val.' is an Operand, Variable, Constant, String, Number, Cell Reference or Function
    '; - - if (preg_match('/^'.self::CALCULATION_REGEXP_FUNCTION.'$/i', $val, $matches)) { - $val = preg_replace('/\s/u', '', $val); -// echo 'Element '.$val.' is a Function
    '; - if (isset(self::$PHPExcelFunctions[strtoupper($matches[1])]) || isset(self::$controlFunctions[strtoupper($matches[1])])) { // it's a function - $stack->push('Function', strtoupper($val)); - $ax = preg_match('/^\s*(\s*\))/ui', substr($formula, $index+$length), $amatch); - if ($ax) { - $stack->push('Operand Count for Function '.strtoupper($val).')', 0); - $expectingOperator = true; - } else { - $stack->push('Operand Count for Function '.strtoupper($val).')', 1); - $expectingOperator = false; - } - $stack->push('Brace', '('); - } else { // it's a var w/ implicit multiplication - $output[] = array('type' => 'Value', 'value' => $matches[1], 'reference' => null); - } - } elseif (preg_match('/^'.self::CALCULATION_REGEXP_CELLREF.'$/i', $val, $matches)) { -// echo 'Element '.$val.' is a Cell reference
    '; - // Watch for this case-change when modifying to allow cell references in different worksheets... - // Should only be applied to the actual cell column, not the worksheet name - - // If the last entry on the stack was a : operator, then we have a cell range reference - $testPrevOp = $stack->last(1); - if ($testPrevOp['value'] == ':') { - // If we have a worksheet reference, then we're playing with a 3D reference - if ($matches[2] == '') { - // Otherwise, we 'inherit' the worksheet reference from the start cell reference - // The start of the cell range reference should be the last entry in $output - $startCellRef = $output[count($output)-1]['value']; - preg_match('/^'.self::CALCULATION_REGEXP_CELLREF.'$/i', $startCellRef, $startMatches); - if ($startMatches[2] > '') { - $val = $startMatches[2].'!'.$val; - } - } else { - return $this->raiseFormulaError("3D Range references are not yet supported"); - } - } - - $output[] = array('type' => 'Cell Reference', 'value' => $val, 'reference' => $val); -// $expectingOperator = FALSE; - } else { // it's a variable, constant, string, number or boolean -// echo 'Element is a Variable, Constant, String, Number or Boolean
    '; - // If the last entry on the stack was a : operator, then we may have a row or column range reference - $testPrevOp = $stack->last(1); - if ($testPrevOp['value'] == ':') { - $startRowColRef = $output[count($output)-1]['value']; - $rangeWS1 = ''; - if (strpos('!', $startRowColRef) !== false) { - list($rangeWS1, $startRowColRef) = explode('!', $startRowColRef); - } - if ($rangeWS1 != '') { - $rangeWS1 .= '!'; - } - $rangeWS2 = $rangeWS1; - if (strpos('!', $val) !== false) { - list($rangeWS2, $val) = explode('!', $val); - } - if ($rangeWS2 != '') { - $rangeWS2 .= '!'; - } - if ((is_integer($startRowColRef)) && (ctype_digit($val)) && - ($startRowColRef <= 1048576) && ($val <= 1048576)) { - // Row range - $endRowColRef = ($pCellParent !== null) ? $pCellParent->getHighestColumn() : 'XFD'; // Max 16,384 columns for Excel2007 - $output[count($output)-1]['value'] = $rangeWS1.'A'.$startRowColRef; - $val = $rangeWS2.$endRowColRef.$val; - } elseif ((ctype_alpha($startRowColRef)) && (ctype_alpha($val)) && - (strlen($startRowColRef) <= 3) && (strlen($val) <= 3)) { - // Column range - $endRowColRef = ($pCellParent !== null) ? $pCellParent->getHighestRow() : 1048576; // Max 1,048,576 rows for Excel2007 - $output[count($output)-1]['value'] = $rangeWS1.strtoupper($startRowColRef).'1'; - $val = $rangeWS2.$val.$endRowColRef; - } - } - - $localeConstant = false; - if ($opCharacter == '"') { -// echo 'Element is a String
    '; - // UnEscape any quotes within the string - $val = self::wrapResult(str_replace('""', '"', self::unwrapResult($val))); - } elseif (is_numeric($val)) { -// echo 'Element is a Number
    '; - if ((strpos($val, '.') !== false) || (stripos($val, 'e') !== false) || ($val > PHP_INT_MAX) || ($val < -PHP_INT_MAX)) { -// echo 'Casting '.$val.' to float
    '; - $val = (float) $val; - } else { -// echo 'Casting '.$val.' to integer
    '; - $val = (integer) $val; - } - } elseif (isset(self::$excelConstants[trim(strtoupper($val))])) { - $excelConstant = trim(strtoupper($val)); -// echo 'Element '.$excelConstant.' is an Excel Constant
    '; - $val = self::$excelConstants[$excelConstant]; - } elseif (($localeConstant = array_search(trim(strtoupper($val)), self::$localeBoolean)) !== false) { -// echo 'Element '.$localeConstant.' is an Excel Constant
    '; - $val = self::$excelConstants[$localeConstant]; - } - $details = array('type' => 'Value', 'value' => $val, 'reference' => null); - if ($localeConstant) { - $details['localeValue'] = $localeConstant; - } - $output[] = $details; - } - $index += $length; - - } elseif ($opCharacter == '$') { // absolute row or column range - ++$index; - } elseif ($opCharacter == ')') { // miscellaneous error checking - if ($expectingOperand) { - $output[] = array('type' => 'NULL Value', 'value' => self::$excelConstants['NULL'], 'reference' => null); - $expectingOperand = false; - $expectingOperator = true; - } else { - return $this->raiseFormulaError("Formula Error: Unexpected ')'"); - } - } elseif (isset(self::$operators[$opCharacter]) && !$expectingOperator) { - return $this->raiseFormulaError("Formula Error: Unexpected operator '$opCharacter'"); - } else { // I don't even want to know what you did to get here - return $this->raiseFormulaError("Formula Error: An unexpected error occured"); - } - // Test for end of formula string - if ($index == strlen($formula)) { - // Did we end with an operator?. - // Only valid for the % unary operator - if ((isset(self::$operators[$opCharacter])) && ($opCharacter != '%')) { - return $this->raiseFormulaError("Formula Error: Operator '$opCharacter' has no operands"); - } else { - break; - } - } - // Ignore white space - while (($formula{$index} == "\n") || ($formula{$index} == "\r")) { - ++$index; - } - if ($formula{$index} == ' ') { - while ($formula{$index} == ' ') { - ++$index; - } - // If we're expecting an operator, but only have a space between the previous and next operands (and both are - // Cell References) then we have an INTERSECTION operator -// echo 'Possible Intersect Operator
    '; - if (($expectingOperator) && (preg_match('/^'.self::CALCULATION_REGEXP_CELLREF.'.*/Ui', substr($formula, $index), $match)) && - ($output[count($output)-1]['type'] == 'Cell Reference')) { -// echo 'Element is an Intersect Operator
    '; - while ($stack->count() > 0 && - ($o2 = $stack->last()) && - isset(self::$operators[$o2['value']]) && - @(self::$operatorAssociativity[$opCharacter] ? self::$operatorPrecedence[$opCharacter] < self::$operatorPrecedence[$o2['value']] : self::$operatorPrecedence[$opCharacter] <= self::$operatorPrecedence[$o2['value']])) { - $output[] = $stack->pop(); // Swap operands and higher precedence operators from the stack to the output - } - $stack->push('Binary Operator', '|'); // Put an Intersect Operator on the stack - $expectingOperator = false; - } - } - } - - while (($op = $stack->pop()) !== null) { // pop everything off the stack and push onto output - if ((is_array($op) && $op['value'] == '(') || ($op === '(')) { - return $this->raiseFormulaError("Formula Error: Expecting ')'"); // if there are any opening braces on the stack, then braces were unbalanced - } - $output[] = $op; - } - return $output; - } - - - private static function dataTestReference(&$operandData) - { - $operand = $operandData['value']; - if (($operandData['reference'] === null) && (is_array($operand))) { - $rKeys = array_keys($operand); - $rowKey = array_shift($rKeys); - $cKeys = array_keys(array_keys($operand[$rowKey])); - $colKey = array_shift($cKeys); - if (ctype_upper($colKey)) { - $operandData['reference'] = $colKey.$rowKey; - } - } - return $operand; - } - - // evaluate postfix notation - private function processTokenStack($tokens, $cellID = null, PHPExcel_Cell $pCell = null) - { - if ($tokens == false) { - return false; - } - - // If we're using cell caching, then $pCell may well be flushed back to the cache (which detaches the parent cell collection), - // so we store the parent cell collection so that we can re-attach it when necessary - $pCellWorksheet = ($pCell !== null) ? $pCell->getWorksheet() : null; - $pCellParent = ($pCell !== null) ? $pCell->getParent() : null; - $stack = new PHPExcel_Calculation_Token_Stack; - - // Loop through each token in turn - foreach ($tokens as $tokenData) { -// print_r($tokenData); -// echo '
    '; - $token = $tokenData['value']; -// echo 'Token is '.$token.'
    '; - // if the token is a binary operator, pop the top two values off the stack, do the operation, and push the result back on the stack - if (isset(self::$binaryOperators[$token])) { -// echo 'Token is a binary operator
    '; - // We must have two operands, error if we don't - if (($operand2Data = $stack->pop()) === null) { - return $this->raiseFormulaError('Internal error - Operand value missing from stack'); - } - if (($operand1Data = $stack->pop()) === null) { - return $this->raiseFormulaError('Internal error - Operand value missing from stack'); - } - - $operand1 = self::dataTestReference($operand1Data); - $operand2 = self::dataTestReference($operand2Data); - - // Log what we're doing - if ($token == ':') { - $this->_debugLog->writeDebugLog('Evaluating Range ', $this->showValue($operand1Data['reference']), ' ', $token, ' ', $this->showValue($operand2Data['reference'])); - } else { - $this->_debugLog->writeDebugLog('Evaluating ', $this->showValue($operand1), ' ', $token, ' ', $this->showValue($operand2)); - } - - // Process the operation in the appropriate manner - switch ($token) { - // Comparison (Boolean) Operators - case '>': // Greater than - case '<': // Less than - case '>=': // Greater than or Equal to - case '<=': // Less than or Equal to - case '=': // Equality - case '<>': // Inequality - $this->executeBinaryComparisonOperation($cellID, $operand1, $operand2, $token, $stack); - break; - // Binary Operators - case ':': // Range - $sheet1 = $sheet2 = ''; - if (strpos($operand1Data['reference'], '!') !== false) { - list($sheet1, $operand1Data['reference']) = explode('!', $operand1Data['reference']); - } else { - $sheet1 = ($pCellParent !== null) ? $pCellWorksheet->getTitle() : ''; - } - if (strpos($operand2Data['reference'], '!') !== false) { - list($sheet2, $operand2Data['reference']) = explode('!', $operand2Data['reference']); - } else { - $sheet2 = $sheet1; - } - if ($sheet1 == $sheet2) { - if ($operand1Data['reference'] === null) { - if ((trim($operand1Data['value']) != '') && (is_numeric($operand1Data['value']))) { - $operand1Data['reference'] = $pCell->getColumn().$operand1Data['value']; - } elseif (trim($operand1Data['reference']) == '') { - $operand1Data['reference'] = $pCell->getCoordinate(); - } else { - $operand1Data['reference'] = $operand1Data['value'].$pCell->getRow(); - } - } - if ($operand2Data['reference'] === null) { - if ((trim($operand2Data['value']) != '') && (is_numeric($operand2Data['value']))) { - $operand2Data['reference'] = $pCell->getColumn().$operand2Data['value']; - } elseif (trim($operand2Data['reference']) == '') { - $operand2Data['reference'] = $pCell->getCoordinate(); - } else { - $operand2Data['reference'] = $operand2Data['value'].$pCell->getRow(); - } - } - - $oData = array_merge(explode(':', $operand1Data['reference']), explode(':', $operand2Data['reference'])); - $oCol = $oRow = array(); - foreach ($oData as $oDatum) { - $oCR = PHPExcel_Cell::coordinateFromString($oDatum); - $oCol[] = PHPExcel_Cell::columnIndexFromString($oCR[0]) - 1; - $oRow[] = $oCR[1]; - } - $cellRef = PHPExcel_Cell::stringFromColumnIndex(min($oCol)).min($oRow).':'.PHPExcel_Cell::stringFromColumnIndex(max($oCol)).max($oRow); - if ($pCellParent !== null) { - $cellValue = $this->extractCellRange($cellRef, $this->workbook->getSheetByName($sheet1), false); - } else { - return $this->raiseFormulaError('Unable to access Cell Reference'); - } - $stack->push('Cell Reference', $cellValue, $cellRef); - } else { - $stack->push('Error', PHPExcel_Calculation_Functions::REF(), null); - } - break; - case '+': // Addition - $this->executeNumericBinaryOperation($cellID, $operand1, $operand2, $token, 'plusEquals', $stack); - break; - case '-': // Subtraction - $this->executeNumericBinaryOperation($cellID, $operand1, $operand2, $token, 'minusEquals', $stack); - break; - case '*': // Multiplication - $this->executeNumericBinaryOperation($cellID, $operand1, $operand2, $token, 'arrayTimesEquals', $stack); - break; - case '/': // Division - $this->executeNumericBinaryOperation($cellID, $operand1, $operand2, $token, 'arrayRightDivide', $stack); - break; - case '^': // Exponential - $this->executeNumericBinaryOperation($cellID, $operand1, $operand2, $token, 'power', $stack); - break; - case '&': // Concatenation - // If either of the operands is a matrix, we need to treat them both as matrices - // (converting the other operand to a matrix if need be); then perform the required - // matrix operation - if (is_bool($operand1)) { - $operand1 = ($operand1) ? self::$localeBoolean['TRUE'] : self::$localeBoolean['FALSE']; - } - if (is_bool($operand2)) { - $operand2 = ($operand2) ? self::$localeBoolean['TRUE'] : self::$localeBoolean['FALSE']; - } - if ((is_array($operand1)) || (is_array($operand2))) { - // Ensure that both operands are arrays/matrices - self::checkMatrixOperands($operand1, $operand2, 2); - try { - // Convert operand 1 from a PHP array to a matrix - $matrix = new PHPExcel_Shared_JAMA_Matrix($operand1); - // Perform the required operation against the operand 1 matrix, passing in operand 2 - $matrixResult = $matrix->concat($operand2); - $result = $matrixResult->getArray(); - } catch (PHPExcel_Exception $ex) { - $this->_debugLog->writeDebugLog('JAMA Matrix Exception: ', $ex->getMessage()); - $result = '#VALUE!'; - } - } else { - $result = '"'.str_replace('""', '"', self::unwrapResult($operand1, '"').self::unwrapResult($operand2, '"')).'"'; - } - $this->_debugLog->writeDebugLog('Evaluation Result is ', $this->showTypeDetails($result)); - $stack->push('Value', $result); - break; - case '|': // Intersect - $rowIntersect = array_intersect_key($operand1, $operand2); - $cellIntersect = $oCol = $oRow = array(); - foreach (array_keys($rowIntersect) as $row) { - $oRow[] = $row; - foreach ($rowIntersect[$row] as $col => $data) { - $oCol[] = PHPExcel_Cell::columnIndexFromString($col) - 1; - $cellIntersect[$row] = array_intersect_key($operand1[$row], $operand2[$row]); - } - } - $cellRef = PHPExcel_Cell::stringFromColumnIndex(min($oCol)).min($oRow).':'.PHPExcel_Cell::stringFromColumnIndex(max($oCol)).max($oRow); - $this->_debugLog->writeDebugLog('Evaluation Result is ', $this->showTypeDetails($cellIntersect)); - $stack->push('Value', $cellIntersect, $cellRef); - break; - } - - // if the token is a unary operator, pop one value off the stack, do the operation, and push it back on - } elseif (($token === '~') || ($token === '%')) { -// echo 'Token is a unary operator
    '; - if (($arg = $stack->pop()) === null) { - return $this->raiseFormulaError('Internal error - Operand value missing from stack'); - } - $arg = $arg['value']; - if ($token === '~') { -// echo 'Token is a negation operator
    '; - $this->_debugLog->writeDebugLog('Evaluating Negation of ', $this->showValue($arg)); - $multiplier = -1; - } else { -// echo 'Token is a percentile operator
    '; - $this->_debugLog->writeDebugLog('Evaluating Percentile of ', $this->showValue($arg)); - $multiplier = 0.01; - } - if (is_array($arg)) { - self::checkMatrixOperands($arg, $multiplier, 2); - try { - $matrix1 = new PHPExcel_Shared_JAMA_Matrix($arg); - $matrixResult = $matrix1->arrayTimesEquals($multiplier); - $result = $matrixResult->getArray(); - } catch (PHPExcel_Exception $ex) { - $this->_debugLog->writeDebugLog('JAMA Matrix Exception: ', $ex->getMessage()); - $result = '#VALUE!'; - } - $this->_debugLog->writeDebugLog('Evaluation Result is ', $this->showTypeDetails($result)); - $stack->push('Value', $result); - } else { - $this->executeNumericBinaryOperation($cellID, $multiplier, $arg, '*', 'arrayTimesEquals', $stack); - } - - } elseif (preg_match('/^'.self::CALCULATION_REGEXP_CELLREF.'$/i', $token, $matches)) { - $cellRef = null; -// echo 'Element '.$token.' is a Cell reference
    '; - if (isset($matches[8])) { -// echo 'Reference is a Range of cells
    '; - if ($pCell === null) { -// We can't access the range, so return a REF error - $cellValue = PHPExcel_Calculation_Functions::REF(); - } else { - $cellRef = $matches[6].$matches[7].':'.$matches[9].$matches[10]; - if ($matches[2] > '') { - $matches[2] = trim($matches[2], "\"'"); - if ((strpos($matches[2], '[') !== false) || (strpos($matches[2], ']') !== false)) { - // It's a Reference to an external workbook (not currently supported) - return $this->raiseFormulaError('Unable to access External Workbook'); - } - $matches[2] = trim($matches[2], "\"'"); -// echo '$cellRef='.$cellRef.' in worksheet '.$matches[2].'
    '; - $this->_debugLog->writeDebugLog('Evaluating Cell Range ', $cellRef, ' in worksheet ', $matches[2]); - if ($pCellParent !== null) { - $cellValue = $this->extractCellRange($cellRef, $this->workbook->getSheetByName($matches[2]), false); - } else { - return $this->raiseFormulaError('Unable to access Cell Reference'); - } - $this->_debugLog->writeDebugLog('Evaluation Result for cells ', $cellRef, ' in worksheet ', $matches[2], ' is ', $this->showTypeDetails($cellValue)); -// $cellRef = $matches[2].'!'.$cellRef; - } else { -// echo '$cellRef='.$cellRef.' in current worksheet
    '; - $this->_debugLog->writeDebugLog('Evaluating Cell Range ', $cellRef, ' in current worksheet'); - if ($pCellParent !== null) { - $cellValue = $this->extractCellRange($cellRef, $pCellWorksheet, false); - } else { - return $this->raiseFormulaError('Unable to access Cell Reference'); - } - $this->_debugLog->writeDebugLog('Evaluation Result for cells ', $cellRef, ' is ', $this->showTypeDetails($cellValue)); - } - } - } else { -// echo 'Reference is a single Cell
    '; - if ($pCell === null) { -// We can't access the cell, so return a REF error - $cellValue = PHPExcel_Calculation_Functions::REF(); - } else { - $cellRef = $matches[6].$matches[7]; - if ($matches[2] > '') { - $matches[2] = trim($matches[2], "\"'"); - if ((strpos($matches[2], '[') !== false) || (strpos($matches[2], ']') !== false)) { - // It's a Reference to an external workbook (not currently supported) - return $this->raiseFormulaError('Unable to access External Workbook'); - } -// echo '$cellRef='.$cellRef.' in worksheet '.$matches[2].'
    '; - $this->_debugLog->writeDebugLog('Evaluating Cell ', $cellRef, ' in worksheet ', $matches[2]); - if ($pCellParent !== null) { - $cellSheet = $this->workbook->getSheetByName($matches[2]); - if ($cellSheet && $cellSheet->cellExists($cellRef)) { - $cellValue = $this->extractCellRange($cellRef, $this->workbook->getSheetByName($matches[2]), false); - $pCell->attach($pCellParent); - } else { - $cellValue = null; - } - } else { - return $this->raiseFormulaError('Unable to access Cell Reference'); - } - $this->_debugLog->writeDebugLog('Evaluation Result for cell ', $cellRef, ' in worksheet ', $matches[2], ' is ', $this->showTypeDetails($cellValue)); -// $cellRef = $matches[2].'!'.$cellRef; - } else { -// echo '$cellRef='.$cellRef.' in current worksheet
    '; - $this->_debugLog->writeDebugLog('Evaluating Cell ', $cellRef, ' in current worksheet'); - if ($pCellParent->isDataSet($cellRef)) { - $cellValue = $this->extractCellRange($cellRef, $pCellWorksheet, false); - $pCell->attach($pCellParent); - } else { - $cellValue = null; - } - $this->_debugLog->writeDebugLog('Evaluation Result for cell ', $cellRef, ' is ', $this->showTypeDetails($cellValue)); - } - } - } - $stack->push('Value', $cellValue, $cellRef); - - // if the token is a function, pop arguments off the stack, hand them to the function, and push the result back on - } elseif (preg_match('/^'.self::CALCULATION_REGEXP_FUNCTION.'$/i', $token, $matches)) { -// echo 'Token is a function
    '; - $functionName = $matches[1]; - $argCount = $stack->pop(); - $argCount = $argCount['value']; - if ($functionName != 'MKMATRIX') { - $this->_debugLog->writeDebugLog('Evaluating Function ', self::localeFunc($functionName), '() with ', (($argCount == 0) ? 'no' : $argCount), ' argument', (($argCount == 1) ? '' : 's')); - } - if ((isset(self::$PHPExcelFunctions[$functionName])) || (isset(self::$controlFunctions[$functionName]))) { // function - if (isset(self::$PHPExcelFunctions[$functionName])) { - $functionCall = self::$PHPExcelFunctions[$functionName]['functionCall']; - $passByReference = isset(self::$PHPExcelFunctions[$functionName]['passByReference']); - $passCellReference = isset(self::$PHPExcelFunctions[$functionName]['passCellReference']); - } elseif (isset(self::$controlFunctions[$functionName])) { - $functionCall = self::$controlFunctions[$functionName]['functionCall']; - $passByReference = isset(self::$controlFunctions[$functionName]['passByReference']); - $passCellReference = isset(self::$controlFunctions[$functionName]['passCellReference']); - } - // get the arguments for this function -// echo 'Function '.$functionName.' expects '.$argCount.' arguments
    '; - $args = $argArrayVals = array(); - for ($i = 0; $i < $argCount; ++$i) { - $arg = $stack->pop(); - $a = $argCount - $i - 1; - if (($passByReference) && - (isset(self::$PHPExcelFunctions[$functionName]['passByReference'][$a])) && - (self::$PHPExcelFunctions[$functionName]['passByReference'][$a])) { - if ($arg['reference'] === null) { - $args[] = $cellID; - if ($functionName != 'MKMATRIX') { - $argArrayVals[] = $this->showValue($cellID); - } - } else { - $args[] = $arg['reference']; - if ($functionName != 'MKMATRIX') { - $argArrayVals[] = $this->showValue($arg['reference']); - } - } - } else { - $args[] = self::unwrapResult($arg['value']); - if ($functionName != 'MKMATRIX') { - $argArrayVals[] = $this->showValue($arg['value']); - } - } - } - // Reverse the order of the arguments - krsort($args); - if (($passByReference) && ($argCount == 0)) { - $args[] = $cellID; - $argArrayVals[] = $this->showValue($cellID); - } -// echo 'Arguments are: '; -// print_r($args); -// echo '
    '; - if ($functionName != 'MKMATRIX') { - if ($this->_debugLog->getWriteDebugLog()) { - krsort($argArrayVals); - $this->_debugLog->writeDebugLog('Evaluating ', self::localeFunc($functionName), '( ', implode(self::$localeArgumentSeparator.' ', PHPExcel_Calculation_Functions::flattenArray($argArrayVals)), ' )'); - } - } - // Process each argument in turn, building the return value as an array -// if (($argCount == 1) && (is_array($args[1])) && ($functionName != 'MKMATRIX')) { -// $operand1 = $args[1]; -// $this->_debugLog->writeDebugLog('Argument is a matrix: ', $this->showValue($operand1)); -// $result = array(); -// $row = 0; -// foreach($operand1 as $args) { -// if (is_array($args)) { -// foreach($args as $arg) { -// $this->_debugLog->writeDebugLog('Evaluating ', self::localeFunc($functionName), '( ', $this->showValue($arg), ' )'); -// $r = call_user_func_array($functionCall, $arg); -// $this->_debugLog->writeDebugLog('Evaluation Result for ', self::localeFunc($functionName), '() function call is ', $this->showTypeDetails($r)); -// $result[$row][] = $r; -// } -// ++$row; -// } else { -// $this->_debugLog->writeDebugLog('Evaluating ', self::localeFunc($functionName), '( ', $this->showValue($args), ' )'); -// $r = call_user_func_array($functionCall, $args); -// $this->_debugLog->writeDebugLog('Evaluation Result for ', self::localeFunc($functionName), '() function call is ', $this->showTypeDetails($r)); -// $result[] = $r; -// } -// } -// } else { - // Process the argument with the appropriate function call - if ($passCellReference) { - $args[] = $pCell; - } - if (strpos($functionCall, '::') !== false) { - $result = call_user_func_array(explode('::', $functionCall), $args); - } else { - foreach ($args as &$arg) { - $arg = PHPExcel_Calculation_Functions::flattenSingleValue($arg); - } - unset($arg); - $result = call_user_func_array($functionCall, $args); - } - if ($functionName != 'MKMATRIX') { - $this->_debugLog->writeDebugLog('Evaluation Result for ', self::localeFunc($functionName), '() function call is ', $this->showTypeDetails($result)); - } - $stack->push('Value', self::wrapResult($result)); - } - - } else { - // if the token is a number, boolean, string or an Excel error, push it onto the stack - if (isset(self::$excelConstants[strtoupper($token)])) { - $excelConstant = strtoupper($token); -// echo 'Token is a PHPExcel constant: '.$excelConstant.'
    '; - $stack->push('Constant Value', self::$excelConstants[$excelConstant]); - $this->_debugLog->writeDebugLog('Evaluating Constant ', $excelConstant, ' as ', $this->showTypeDetails(self::$excelConstants[$excelConstant])); - } elseif ((is_numeric($token)) || ($token === null) || (is_bool($token)) || ($token == '') || ($token{0} == '"') || ($token{0} == '#')) { -// echo 'Token is a number, boolean, string, null or an Excel error
    '; - $stack->push('Value', $token); - // if the token is a named range, push the named range name onto the stack - } elseif (preg_match('/^'.self::CALCULATION_REGEXP_NAMEDRANGE.'$/i', $token, $matches)) { -// echo 'Token is a named range
    '; - $namedRange = $matches[6]; -// echo 'Named Range is '.$namedRange.'
    '; - $this->_debugLog->writeDebugLog('Evaluating Named Range ', $namedRange); - $cellValue = $this->extractNamedRange($namedRange, ((null !== $pCell) ? $pCellWorksheet : null), false); - $pCell->attach($pCellParent); - $this->_debugLog->writeDebugLog('Evaluation Result for named range ', $namedRange, ' is ', $this->showTypeDetails($cellValue)); - $stack->push('Named Range', $cellValue, $namedRange); - } else { - return $this->raiseFormulaError("undefined variable '$token'"); - } - } - } - // when we're out of tokens, the stack should have a single element, the final result - if ($stack->count() != 1) { - return $this->raiseFormulaError("internal error"); - } - $output = $stack->pop(); - $output = $output['value']; - -// if ((is_array($output)) && (self::$returnArrayAsType != self::RETURN_ARRAY_AS_ARRAY)) { -// return array_shift(PHPExcel_Calculation_Functions::flattenArray($output)); -// } - return $output; - } - - - private function validateBinaryOperand($cellID, &$operand, &$stack) - { - if (is_array($operand)) { - if ((count($operand, COUNT_RECURSIVE) - count($operand)) == 1) { - do { - $operand = array_pop($operand); - } while (is_array($operand)); - } - } - // Numbers, matrices and booleans can pass straight through, as they're already valid - if (is_string($operand)) { - // We only need special validations for the operand if it is a string - // Start by stripping off the quotation marks we use to identify true excel string values internally - if ($operand > '' && $operand{0} == '"') { - $operand = self::unwrapResult($operand); - } - // If the string is a numeric value, we treat it as a numeric, so no further testing - if (!is_numeric($operand)) { - // If not a numeric, test to see if the value is an Excel error, and so can't be used in normal binary operations - if ($operand > '' && $operand{0} == '#') { - $stack->push('Value', $operand); - $this->_debugLog->writeDebugLog('Evaluation Result is ', $this->showTypeDetails($operand)); - return false; - } elseif (!PHPExcel_Shared_String::convertToNumberIfFraction($operand)) { - // If not a numeric or a fraction, then it's a text string, and so can't be used in mathematical binary operations - $stack->push('Value', '#VALUE!'); - $this->_debugLog->writeDebugLog('Evaluation Result is a ', $this->showTypeDetails('#VALUE!')); - return false; - } - } - } - - // return a true if the value of the operand is one that we can use in normal binary operations - return true; - } - - - private function executeBinaryComparisonOperation($cellID, $operand1, $operand2, $operation, &$stack, $recursingArrays = false) - { - // If we're dealing with matrix operations, we want a matrix result - if ((is_array($operand1)) || (is_array($operand2))) { - $result = array(); - if ((is_array($operand1)) && (!is_array($operand2))) { - foreach ($operand1 as $x => $operandData) { - $this->_debugLog->writeDebugLog('Evaluating Comparison ', $this->showValue($operandData), ' ', $operation, ' ', $this->showValue($operand2)); - $this->executeBinaryComparisonOperation($cellID, $operandData, $operand2, $operation, $stack); - $r = $stack->pop(); - $result[$x] = $r['value']; - } - } elseif ((!is_array($operand1)) && (is_array($operand2))) { - foreach ($operand2 as $x => $operandData) { - $this->_debugLog->writeDebugLog('Evaluating Comparison ', $this->showValue($operand1), ' ', $operation, ' ', $this->showValue($operandData)); - $this->executeBinaryComparisonOperation($cellID, $operand1, $operandData, $operation, $stack); - $r = $stack->pop(); - $result[$x] = $r['value']; - } - } else { - if (!$recursingArrays) { - self::checkMatrixOperands($operand1, $operand2, 2); - } - foreach ($operand1 as $x => $operandData) { - $this->_debugLog->writeDebugLog('Evaluating Comparison ', $this->showValue($operandData), ' ', $operation, ' ', $this->showValue($operand2[$x])); - $this->executeBinaryComparisonOperation($cellID, $operandData, $operand2[$x], $operation, $stack, true); - $r = $stack->pop(); - $result[$x] = $r['value']; - } - } - // Log the result details - $this->_debugLog->writeDebugLog('Comparison Evaluation Result is ', $this->showTypeDetails($result)); - // And push the result onto the stack - $stack->push('Array', $result); - return true; - } - - // Simple validate the two operands if they are string values - if (is_string($operand1) && $operand1 > '' && $operand1{0} == '"') { - $operand1 = self::unwrapResult($operand1); - } - if (is_string($operand2) && $operand2 > '' && $operand2{0} == '"') { - $operand2 = self::unwrapResult($operand2); - } - - // Use case insensitive comparaison if not OpenOffice mode - if (PHPExcel_Calculation_Functions::getCompatibilityMode() != PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) { - if (is_string($operand1)) { - $operand1 = strtoupper($operand1); - } - if (is_string($operand2)) { - $operand2 = strtoupper($operand2); - } - } - - $useLowercaseFirstComparison = is_string($operand1) && is_string($operand2) && PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE; - - // execute the necessary operation - switch ($operation) { - // Greater than - case '>': - if ($useLowercaseFirstComparison) { - $result = $this->strcmpLowercaseFirst($operand1, $operand2) > 0; - } else { - $result = ($operand1 > $operand2); - } - break; - // Less than - case '<': - if ($useLowercaseFirstComparison) { - $result = $this->strcmpLowercaseFirst($operand1, $operand2) < 0; - } else { - $result = ($operand1 < $operand2); - } - break; - // Equality - case '=': - if (is_numeric($operand1) && is_numeric($operand2)) { - $result = (abs($operand1 - $operand2) < $this->delta); - } else { - $result = strcmp($operand1, $operand2) == 0; - } - break; - // Greater than or equal - case '>=': - if (is_numeric($operand1) && is_numeric($operand2)) { - $result = ((abs($operand1 - $operand2) < $this->delta) || ($operand1 > $operand2)); - } elseif ($useLowercaseFirstComparison) { - $result = $this->strcmpLowercaseFirst($operand1, $operand2) >= 0; - } else { - $result = strcmp($operand1, $operand2) >= 0; - } - break; - // Less than or equal - case '<=': - if (is_numeric($operand1) && is_numeric($operand2)) { - $result = ((abs($operand1 - $operand2) < $this->delta) || ($operand1 < $operand2)); - } elseif ($useLowercaseFirstComparison) { - $result = $this->strcmpLowercaseFirst($operand1, $operand2) <= 0; - } else { - $result = strcmp($operand1, $operand2) <= 0; - } - break; - // Inequality - case '<>': - if (is_numeric($operand1) && is_numeric($operand2)) { - $result = (abs($operand1 - $operand2) > 1E-14); - } else { - $result = strcmp($operand1, $operand2) != 0; - } - break; - } - - // Log the result details - $this->_debugLog->writeDebugLog('Evaluation Result is ', $this->showTypeDetails($result)); - // And push the result onto the stack - $stack->push('Value', $result); - return true; - } - - /** - * Compare two strings in the same way as strcmp() except that lowercase come before uppercase letters - * @param string $str1 First string value for the comparison - * @param string $str2 Second string value for the comparison - * @return integer - */ - private function strcmpLowercaseFirst($str1, $str2) - { - $inversedStr1 = PHPExcel_Shared_String::StrCaseReverse($str1); - $inversedStr2 = PHPExcel_Shared_String::StrCaseReverse($str2); - - return strcmp($inversedStr1, $inversedStr2); - } - - private function executeNumericBinaryOperation($cellID, $operand1, $operand2, $operation, $matrixFunction, &$stack) - { - // Validate the two operands - if (!$this->validateBinaryOperand($cellID, $operand1, $stack)) { - return false; - } - if (!$this->validateBinaryOperand($cellID, $operand2, $stack)) { - return false; - } - - // If either of the operands is a matrix, we need to treat them both as matrices - // (converting the other operand to a matrix if need be); then perform the required - // matrix operation - if ((is_array($operand1)) || (is_array($operand2))) { - // Ensure that both operands are arrays/matrices of the same size - self::checkMatrixOperands($operand1, $operand2, 2); - - try { - // Convert operand 1 from a PHP array to a matrix - $matrix = new PHPExcel_Shared_JAMA_Matrix($operand1); - // Perform the required operation against the operand 1 matrix, passing in operand 2 - $matrixResult = $matrix->$matrixFunction($operand2); - $result = $matrixResult->getArray(); - } catch (PHPExcel_Exception $ex) { - $this->_debugLog->writeDebugLog('JAMA Matrix Exception: ', $ex->getMessage()); - $result = '#VALUE!'; - } - } else { - if ((PHPExcel_Calculation_Functions::getCompatibilityMode() != PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) && - ((is_string($operand1) && !is_numeric($operand1) && strlen($operand1)>0) || - (is_string($operand2) && !is_numeric($operand2) && strlen($operand2)>0))) { - $result = PHPExcel_Calculation_Functions::VALUE(); - } else { - // If we're dealing with non-matrix operations, execute the necessary operation - switch ($operation) { - // Addition - case '+': - $result = $operand1 + $operand2; - break; - // Subtraction - case '-': - $result = $operand1 - $operand2; - break; - // Multiplication - case '*': - $result = $operand1 * $operand2; - break; - // Division - case '/': - if ($operand2 == 0) { - // Trap for Divide by Zero error - $stack->push('Value', '#DIV/0!'); - $this->_debugLog->writeDebugLog('Evaluation Result is ', $this->showTypeDetails('#DIV/0!')); - return false; - } else { - $result = $operand1 / $operand2; - } - break; - // Power - case '^': - $result = pow($operand1, $operand2); - break; - } - } - } - - // Log the result details - $this->_debugLog->writeDebugLog('Evaluation Result is ', $this->showTypeDetails($result)); - // And push the result onto the stack - $stack->push('Value', $result); - return true; - } - - - // trigger an error, but nicely, if need be - protected function raiseFormulaError($errorMessage) - { - $this->formulaError = $errorMessage; - $this->cyclicReferenceStack->clear(); - if (!$this->suppressFormulaErrors) { - throw new PHPExcel_Calculation_Exception($errorMessage); - } - trigger_error($errorMessage, E_USER_ERROR); - } - - - /** - * Extract range values - * - * @param string &$pRange String based range representation - * @param PHPExcel_Worksheet $pSheet Worksheet - * @param boolean $resetLog Flag indicating whether calculation log should be reset or not - * @return mixed Array of values in range if range contains more than one element. Otherwise, a single value is returned. - * @throws PHPExcel_Calculation_Exception - */ - public function extractCellRange(&$pRange = 'A1', PHPExcel_Worksheet $pSheet = null, $resetLog = true) - { - // Return value - $returnValue = array (); - -// echo 'extractCellRange('.$pRange.')', PHP_EOL; - if ($pSheet !== null) { - $pSheetName = $pSheet->getTitle(); -// echo 'Passed sheet name is '.$pSheetName.PHP_EOL; -// echo 'Range reference is '.$pRange.PHP_EOL; - if (strpos($pRange, '!') !== false) { -// echo '$pRange reference includes sheet reference', PHP_EOL; - list($pSheetName, $pRange) = PHPExcel_Worksheet::extractSheetTitle($pRange, true); -// echo 'New sheet name is '.$pSheetName, PHP_EOL; -// echo 'Adjusted Range reference is '.$pRange, PHP_EOL; - $pSheet = $this->workbook->getSheetByName($pSheetName); - } - - // Extract range - $aReferences = PHPExcel_Cell::extractAllCellReferencesInRange($pRange); - $pRange = $pSheetName.'!'.$pRange; - if (!isset($aReferences[1])) { - // Single cell in range - sscanf($aReferences[0], '%[A-Z]%d', $currentCol, $currentRow); - $cellValue = null; - if ($pSheet->cellExists($aReferences[0])) { - $returnValue[$currentRow][$currentCol] = $pSheet->getCell($aReferences[0])->getCalculatedValue($resetLog); - } else { - $returnValue[$currentRow][$currentCol] = null; - } - } else { - // Extract cell data for all cells in the range - foreach ($aReferences as $reference) { - // Extract range - sscanf($reference, '%[A-Z]%d', $currentCol, $currentRow); - $cellValue = null; - if ($pSheet->cellExists($reference)) { - $returnValue[$currentRow][$currentCol] = $pSheet->getCell($reference)->getCalculatedValue($resetLog); - } else { - $returnValue[$currentRow][$currentCol] = null; - } - } - } - } - - return $returnValue; - } - - - /** - * Extract range values - * - * @param string &$pRange String based range representation - * @param PHPExcel_Worksheet $pSheet Worksheet - * @return mixed Array of values in range if range contains more than one element. Otherwise, a single value is returned. - * @param boolean $resetLog Flag indicating whether calculation log should be reset or not - * @throws PHPExcel_Calculation_Exception - */ - public function extractNamedRange(&$pRange = 'A1', PHPExcel_Worksheet $pSheet = null, $resetLog = true) - { - // Return value - $returnValue = array (); - -// echo 'extractNamedRange('.$pRange.')
    '; - if ($pSheet !== null) { - $pSheetName = $pSheet->getTitle(); -// echo 'Current sheet name is '.$pSheetName.'
    '; -// echo 'Range reference is '.$pRange.'
    '; - if (strpos($pRange, '!') !== false) { -// echo '$pRange reference includes sheet reference', PHP_EOL; - list($pSheetName, $pRange) = PHPExcel_Worksheet::extractSheetTitle($pRange, true); -// echo 'New sheet name is '.$pSheetName, PHP_EOL; -// echo 'Adjusted Range reference is '.$pRange, PHP_EOL; - $pSheet = $this->workbook->getSheetByName($pSheetName); - } - - // Named range? - $namedRange = PHPExcel_NamedRange::resolveRange($pRange, $pSheet); - if ($namedRange !== null) { - $pSheet = $namedRange->getWorksheet(); -// echo 'Named Range '.$pRange.' ('; - $pRange = $namedRange->getRange(); - $splitRange = PHPExcel_Cell::splitRange($pRange); - // Convert row and column references - if (ctype_alpha($splitRange[0][0])) { - $pRange = $splitRange[0][0] . '1:' . $splitRange[0][1] . $namedRange->getWorksheet()->getHighestRow(); - } elseif (ctype_digit($splitRange[0][0])) { - $pRange = 'A' . $splitRange[0][0] . ':' . $namedRange->getWorksheet()->getHighestColumn() . $splitRange[0][1]; - } -// echo $pRange.') is in sheet '.$namedRange->getWorksheet()->getTitle().'
    '; - -// if ($pSheet->getTitle() != $namedRange->getWorksheet()->getTitle()) { -// if (!$namedRange->getLocalOnly()) { -// $pSheet = $namedRange->getWorksheet(); -// } else { -// return $returnValue; -// } -// } - } else { - return PHPExcel_Calculation_Functions::REF(); - } - - // Extract range - $aReferences = PHPExcel_Cell::extractAllCellReferencesInRange($pRange); -// var_dump($aReferences); - if (!isset($aReferences[1])) { - // Single cell (or single column or row) in range - list($currentCol, $currentRow) = PHPExcel_Cell::coordinateFromString($aReferences[0]); - $cellValue = null; - if ($pSheet->cellExists($aReferences[0])) { - $returnValue[$currentRow][$currentCol] = $pSheet->getCell($aReferences[0])->getCalculatedValue($resetLog); - } else { - $returnValue[$currentRow][$currentCol] = null; - } - } else { - // Extract cell data for all cells in the range - foreach ($aReferences as $reference) { - // Extract range - list($currentCol, $currentRow) = PHPExcel_Cell::coordinateFromString($reference); -// echo 'NAMED RANGE: $currentCol='.$currentCol.' $currentRow='.$currentRow.'
    '; - $cellValue = null; - if ($pSheet->cellExists($reference)) { - $returnValue[$currentRow][$currentCol] = $pSheet->getCell($reference)->getCalculatedValue($resetLog); - } else { - $returnValue[$currentRow][$currentCol] = null; - } - } - } -// print_r($returnValue); -// echo '
    '; - } - - return $returnValue; - } - - - /** - * Is a specific function implemented? - * - * @param string $pFunction Function Name - * @return boolean - */ - public function isImplemented($pFunction = '') - { - $pFunction = strtoupper($pFunction); - if (isset(self::$PHPExcelFunctions[$pFunction])) { - return (self::$PHPExcelFunctions[$pFunction]['functionCall'] != 'PHPExcel_Calculation_Functions::DUMMY'); - } else { - return false; - } - } - - - /** - * Get a list of all implemented functions as an array of function objects - * - * @return array of PHPExcel_Calculation_Function - */ - public function listFunctions() - { - $returnValue = array(); - - foreach (self::$PHPExcelFunctions as $functionName => $function) { - if ($function['functionCall'] != 'PHPExcel_Calculation_Functions::DUMMY') { - $returnValue[$functionName] = new PHPExcel_Calculation_Function( - $function['category'], - $functionName, - $function['functionCall'] - ); - } - } - - return $returnValue; - } - - - /** - * Get a list of all Excel function names - * - * @return array - */ - public function listAllFunctionNames() - { - return array_keys(self::$PHPExcelFunctions); - } - - /** - * Get a list of implemented Excel function names - * - * @return array - */ - public function listFunctionNames() - { - $returnValue = array(); - foreach (self::$PHPExcelFunctions as $functionName => $function) { - if ($function['functionCall'] != 'PHPExcel_Calculation_Functions::DUMMY') { - $returnValue[] = $functionName; - } - } - - return $returnValue; - } -} diff --git a/application/third_party/PHPExcel/Calculation/Database.php b/application/third_party/PHPExcel/Calculation/Database.php deleted file mode 100644 index b8d91cb6..00000000 --- a/application/third_party/PHPExcel/Calculation/Database.php +++ /dev/null @@ -1,676 +0,0 @@ - $criteriaName) { - $testCondition = array(); - $testConditionCount = 0; - foreach ($criteria as $row => $criterion) { - if ($criterion[$key] > '') { - $testCondition[] = '[:'.$criteriaName.']'.PHPExcel_Calculation_Functions::ifCondition($criterion[$key]); - $testConditionCount++; - } - } - if ($testConditionCount > 1) { - $testConditions[] = 'OR(' . implode(',', $testCondition) . ')'; - $testConditionsCount++; - } elseif ($testConditionCount == 1) { - $testConditions[] = $testCondition[0]; - $testConditionsCount++; - } - } - - if ($testConditionsCount > 1) { - $testConditionSet = 'AND(' . implode(',', $testConditions) . ')'; - } elseif ($testConditionsCount == 1) { - $testConditionSet = $testConditions[0]; - } - - // Loop through each row of the database - foreach ($database as $dataRow => $dataValues) { - // Substitute actual values from the database row for our [:placeholders] - $testConditionList = $testConditionSet; - foreach ($criteriaNames as $key => $criteriaName) { - $k = array_search($criteriaName, $fieldNames); - if (isset($dataValues[$k])) { - $dataValue = $dataValues[$k]; - $dataValue = (is_string($dataValue)) ? PHPExcel_Calculation::wrapResult(strtoupper($dataValue)) : $dataValue; - $testConditionList = str_replace('[:' . $criteriaName . ']', $dataValue, $testConditionList); - } - } - // evaluate the criteria against the row data - $result = PHPExcel_Calculation::getInstance()->_calculateFormulaValue('='.$testConditionList); - // If the row failed to meet the criteria, remove it from the database - if (!$result) { - unset($database[$dataRow]); - } - } - - return $database; - } - - - private static function getFilteredColumn($database, $field, $criteria) - { - // reduce the database to a set of rows that match all the criteria - $database = self::filter($database, $criteria); - // extract an array of values for the requested column - $colData = array(); - foreach ($database as $row) { - $colData[] = $row[$field]; - } - - return $colData; - } - - /** - * DAVERAGE - * - * Averages the values in a column of a list or database that match conditions you specify. - * - * Excel Function: - * DAVERAGE(database,field,criteria) - * - * @access public - * @category Database Functions - * @param mixed[] $database The range of cells that makes up the list or database. - * A database is a list of related data in which rows of related - * information are records, and columns of data are fields. The - * first row of the list contains labels for each column. - * @param string|integer $field Indicates which column is used in the function. Enter the - * column label enclosed between double quotation marks, such as - * "Age" or "Yield," or a number (without quotation marks) that - * represents the position of the column within the list: 1 for - * the first column, 2 for the second column, and so on. - * @param mixed[] $criteria The range of cells that contains the conditions you specify. - * You can use any range for the criteria argument, as long as it - * includes at least one column label and at least one cell below - * the column label in which you specify a condition for the - * column. - * @return float - * - */ - public static function DAVERAGE($database, $field, $criteria) - { - $field = self::fieldExtract($database, $field); - if (is_null($field)) { - return null; - } - - // Return - return PHPExcel_Calculation_Statistical::AVERAGE( - self::getFilteredColumn($database, $field, $criteria) - ); - } - - - /** - * DCOUNT - * - * Counts the cells that contain numbers in a column of a list or database that match conditions - * that you specify. - * - * Excel Function: - * DCOUNT(database,[field],criteria) - * - * Excel Function: - * DAVERAGE(database,field,criteria) - * - * @access public - * @category Database Functions - * @param mixed[] $database The range of cells that makes up the list or database. - * A database is a list of related data in which rows of related - * information are records, and columns of data are fields. The - * first row of the list contains labels for each column. - * @param string|integer $field Indicates which column is used in the function. Enter the - * column label enclosed between double quotation marks, such as - * "Age" or "Yield," or a number (without quotation marks) that - * represents the position of the column within the list: 1 for - * the first column, 2 for the second column, and so on. - * @param mixed[] $criteria The range of cells that contains the conditions you specify. - * You can use any range for the criteria argument, as long as it - * includes at least one column label and at least one cell below - * the column label in which you specify a condition for the - * column. - * @return integer - * - * @TODO The field argument is optional. If field is omitted, DCOUNT counts all records in the - * database that match the criteria. - * - */ - public static function DCOUNT($database, $field, $criteria) - { - $field = self::fieldExtract($database, $field); - if (is_null($field)) { - return null; - } - - // Return - return PHPExcel_Calculation_Statistical::COUNT( - self::getFilteredColumn($database, $field, $criteria) - ); - } - - - /** - * DCOUNTA - * - * Counts the nonblank cells in a column of a list or database that match conditions that you specify. - * - * Excel Function: - * DCOUNTA(database,[field],criteria) - * - * @access public - * @category Database Functions - * @param mixed[] $database The range of cells that makes up the list or database. - * A database is a list of related data in which rows of related - * information are records, and columns of data are fields. The - * first row of the list contains labels for each column. - * @param string|integer $field Indicates which column is used in the function. Enter the - * column label enclosed between double quotation marks, such as - * "Age" or "Yield," or a number (without quotation marks) that - * represents the position of the column within the list: 1 for - * the first column, 2 for the second column, and so on. - * @param mixed[] $criteria The range of cells that contains the conditions you specify. - * You can use any range for the criteria argument, as long as it - * includes at least one column label and at least one cell below - * the column label in which you specify a condition for the - * column. - * @return integer - * - * @TODO The field argument is optional. If field is omitted, DCOUNTA counts all records in the - * database that match the criteria. - * - */ - public static function DCOUNTA($database, $field, $criteria) - { - $field = self::fieldExtract($database, $field); - if (is_null($field)) { - return null; - } - - // reduce the database to a set of rows that match all the criteria - $database = self::filter($database, $criteria); - // extract an array of values for the requested column - $colData = array(); - foreach ($database as $row) { - $colData[] = $row[$field]; - } - - // Return - return PHPExcel_Calculation_Statistical::COUNTA( - self::getFilteredColumn($database, $field, $criteria) - ); - } - - - /** - * DGET - * - * Extracts a single value from a column of a list or database that matches conditions that you - * specify. - * - * Excel Function: - * DGET(database,field,criteria) - * - * @access public - * @category Database Functions - * @param mixed[] $database The range of cells that makes up the list or database. - * A database is a list of related data in which rows of related - * information are records, and columns of data are fields. The - * first row of the list contains labels for each column. - * @param string|integer $field Indicates which column is used in the function. Enter the - * column label enclosed between double quotation marks, such as - * "Age" or "Yield," or a number (without quotation marks) that - * represents the position of the column within the list: 1 for - * the first column, 2 for the second column, and so on. - * @param mixed[] $criteria The range of cells that contains the conditions you specify. - * You can use any range for the criteria argument, as long as it - * includes at least one column label and at least one cell below - * the column label in which you specify a condition for the - * column. - * @return mixed - * - */ - public static function DGET($database, $field, $criteria) - { - $field = self::fieldExtract($database, $field); - if (is_null($field)) { - return null; - } - - // Return - $colData = self::getFilteredColumn($database, $field, $criteria); - if (count($colData) > 1) { - return PHPExcel_Calculation_Functions::NaN(); - } - - return $colData[0]; - } - - - /** - * DMAX - * - * Returns the largest number in a column of a list or database that matches conditions you that - * specify. - * - * Excel Function: - * DMAX(database,field,criteria) - * - * @access public - * @category Database Functions - * @param mixed[] $database The range of cells that makes up the list or database. - * A database is a list of related data in which rows of related - * information are records, and columns of data are fields. The - * first row of the list contains labels for each column. - * @param string|integer $field Indicates which column is used in the function. Enter the - * column label enclosed between double quotation marks, such as - * "Age" or "Yield," or a number (without quotation marks) that - * represents the position of the column within the list: 1 for - * the first column, 2 for the second column, and so on. - * @param mixed[] $criteria The range of cells that contains the conditions you specify. - * You can use any range for the criteria argument, as long as it - * includes at least one column label and at least one cell below - * the column label in which you specify a condition for the - * column. - * @return float - * - */ - public static function DMAX($database, $field, $criteria) - { - $field = self::fieldExtract($database, $field); - if (is_null($field)) { - return null; - } - - // Return - return PHPExcel_Calculation_Statistical::MAX( - self::getFilteredColumn($database, $field, $criteria) - ); - } - - - /** - * DMIN - * - * Returns the smallest number in a column of a list or database that matches conditions you that - * specify. - * - * Excel Function: - * DMIN(database,field,criteria) - * - * @access public - * @category Database Functions - * @param mixed[] $database The range of cells that makes up the list or database. - * A database is a list of related data in which rows of related - * information are records, and columns of data are fields. The - * first row of the list contains labels for each column. - * @param string|integer $field Indicates which column is used in the function. Enter the - * column label enclosed between double quotation marks, such as - * "Age" or "Yield," or a number (without quotation marks) that - * represents the position of the column within the list: 1 for - * the first column, 2 for the second column, and so on. - * @param mixed[] $criteria The range of cells that contains the conditions you specify. - * You can use any range for the criteria argument, as long as it - * includes at least one column label and at least one cell below - * the column label in which you specify a condition for the - * column. - * @return float - * - */ - public static function DMIN($database, $field, $criteria) - { - $field = self::fieldExtract($database, $field); - if (is_null($field)) { - return null; - } - - // Return - return PHPExcel_Calculation_Statistical::MIN( - self::getFilteredColumn($database, $field, $criteria) - ); - } - - - /** - * DPRODUCT - * - * Multiplies the values in a column of a list or database that match conditions that you specify. - * - * Excel Function: - * DPRODUCT(database,field,criteria) - * - * @access public - * @category Database Functions - * @param mixed[] $database The range of cells that makes up the list or database. - * A database is a list of related data in which rows of related - * information are records, and columns of data are fields. The - * first row of the list contains labels for each column. - * @param string|integer $field Indicates which column is used in the function. Enter the - * column label enclosed between double quotation marks, such as - * "Age" or "Yield," or a number (without quotation marks) that - * represents the position of the column within the list: 1 for - * the first column, 2 for the second column, and so on. - * @param mixed[] $criteria The range of cells that contains the conditions you specify. - * You can use any range for the criteria argument, as long as it - * includes at least one column label and at least one cell below - * the column label in which you specify a condition for the - * column. - * @return float - * - */ - public static function DPRODUCT($database, $field, $criteria) - { - $field = self::fieldExtract($database, $field); - if (is_null($field)) { - return null; - } - - // Return - return PHPExcel_Calculation_MathTrig::PRODUCT( - self::getFilteredColumn($database, $field, $criteria) - ); - } - - - /** - * DSTDEV - * - * Estimates the standard deviation of a population based on a sample by using the numbers in a - * column of a list or database that match conditions that you specify. - * - * Excel Function: - * DSTDEV(database,field,criteria) - * - * @access public - * @category Database Functions - * @param mixed[] $database The range of cells that makes up the list or database. - * A database is a list of related data in which rows of related - * information are records, and columns of data are fields. The - * first row of the list contains labels for each column. - * @param string|integer $field Indicates which column is used in the function. Enter the - * column label enclosed between double quotation marks, such as - * "Age" or "Yield," or a number (without quotation marks) that - * represents the position of the column within the list: 1 for - * the first column, 2 for the second column, and so on. - * @param mixed[] $criteria The range of cells that contains the conditions you specify. - * You can use any range for the criteria argument, as long as it - * includes at least one column label and at least one cell below - * the column label in which you specify a condition for the - * column. - * @return float - * - */ - public static function DSTDEV($database, $field, $criteria) - { - $field = self::fieldExtract($database, $field); - if (is_null($field)) { - return null; - } - - // Return - return PHPExcel_Calculation_Statistical::STDEV( - self::getFilteredColumn($database, $field, $criteria) - ); - } - - - /** - * DSTDEVP - * - * Calculates the standard deviation of a population based on the entire population by using the - * numbers in a column of a list or database that match conditions that you specify. - * - * Excel Function: - * DSTDEVP(database,field,criteria) - * - * @access public - * @category Database Functions - * @param mixed[] $database The range of cells that makes up the list or database. - * A database is a list of related data in which rows of related - * information are records, and columns of data are fields. The - * first row of the list contains labels for each column. - * @param string|integer $field Indicates which column is used in the function. Enter the - * column label enclosed between double quotation marks, such as - * "Age" or "Yield," or a number (without quotation marks) that - * represents the position of the column within the list: 1 for - * the first column, 2 for the second column, and so on. - * @param mixed[] $criteria The range of cells that contains the conditions you specify. - * You can use any range for the criteria argument, as long as it - * includes at least one column label and at least one cell below - * the column label in which you specify a condition for the - * column. - * @return float - * - */ - public static function DSTDEVP($database, $field, $criteria) - { - $field = self::fieldExtract($database, $field); - if (is_null($field)) { - return null; - } - - // Return - return PHPExcel_Calculation_Statistical::STDEVP( - self::getFilteredColumn($database, $field, $criteria) - ); - } - - - /** - * DSUM - * - * Adds the numbers in a column of a list or database that match conditions that you specify. - * - * Excel Function: - * DSUM(database,field,criteria) - * - * @access public - * @category Database Functions - * @param mixed[] $database The range of cells that makes up the list or database. - * A database is a list of related data in which rows of related - * information are records, and columns of data are fields. The - * first row of the list contains labels for each column. - * @param string|integer $field Indicates which column is used in the function. Enter the - * column label enclosed between double quotation marks, such as - * "Age" or "Yield," or a number (without quotation marks) that - * represents the position of the column within the list: 1 for - * the first column, 2 for the second column, and so on. - * @param mixed[] $criteria The range of cells that contains the conditions you specify. - * You can use any range for the criteria argument, as long as it - * includes at least one column label and at least one cell below - * the column label in which you specify a condition for the - * column. - * @return float - * - */ - public static function DSUM($database, $field, $criteria) - { - $field = self::fieldExtract($database, $field); - if (is_null($field)) { - return null; - } - - // Return - return PHPExcel_Calculation_MathTrig::SUM( - self::getFilteredColumn($database, $field, $criteria) - ); - } - - - /** - * DVAR - * - * Estimates the variance of a population based on a sample by using the numbers in a column - * of a list or database that match conditions that you specify. - * - * Excel Function: - * DVAR(database,field,criteria) - * - * @access public - * @category Database Functions - * @param mixed[] $database The range of cells that makes up the list or database. - * A database is a list of related data in which rows of related - * information are records, and columns of data are fields. The - * first row of the list contains labels for each column. - * @param string|integer $field Indicates which column is used in the function. Enter the - * column label enclosed between double quotation marks, such as - * "Age" or "Yield," or a number (without quotation marks) that - * represents the position of the column within the list: 1 for - * the first column, 2 for the second column, and so on. - * @param mixed[] $criteria The range of cells that contains the conditions you specify. - * You can use any range for the criteria argument, as long as it - * includes at least one column label and at least one cell below - * the column label in which you specify a condition for the - * column. - * @return float - * - */ - public static function DVAR($database, $field, $criteria) - { - $field = self::fieldExtract($database, $field); - if (is_null($field)) { - return null; - } - - // Return - return PHPExcel_Calculation_Statistical::VARFunc( - self::getFilteredColumn($database, $field, $criteria) - ); - } - - - /** - * DVARP - * - * Calculates the variance of a population based on the entire population by using the numbers - * in a column of a list or database that match conditions that you specify. - * - * Excel Function: - * DVARP(database,field,criteria) - * - * @access public - * @category Database Functions - * @param mixed[] $database The range of cells that makes up the list or database. - * A database is a list of related data in which rows of related - * information are records, and columns of data are fields. The - * first row of the list contains labels for each column. - * @param string|integer $field Indicates which column is used in the function. Enter the - * column label enclosed between double quotation marks, such as - * "Age" or "Yield," or a number (without quotation marks) that - * represents the position of the column within the list: 1 for - * the first column, 2 for the second column, and so on. - * @param mixed[] $criteria The range of cells that contains the conditions you specify. - * You can use any range for the criteria argument, as long as it - * includes at least one column label and at least one cell below - * the column label in which you specify a condition for the - * column. - * @return float - * - */ - public static function DVARP($database, $field, $criteria) - { - $field = self::fieldExtract($database, $field); - if (is_null($field)) { - return null; - } - - // Return - return PHPExcel_Calculation_Statistical::VARP( - self::getFilteredColumn($database, $field, $criteria) - ); - } -} diff --git a/application/third_party/PHPExcel/Calculation/DateTime.php b/application/third_party/PHPExcel/Calculation/DateTime.php deleted file mode 100644 index 72f4c7a2..00000000 --- a/application/third_party/PHPExcel/Calculation/DateTime.php +++ /dev/null @@ -1,1553 +0,0 @@ -format('m'); - $oYear = (int) $PHPDateObject->format('Y'); - - $adjustmentMonthsString = (string) $adjustmentMonths; - if ($adjustmentMonths > 0) { - $adjustmentMonthsString = '+'.$adjustmentMonths; - } - if ($adjustmentMonths != 0) { - $PHPDateObject->modify($adjustmentMonthsString.' months'); - } - $nMonth = (int) $PHPDateObject->format('m'); - $nYear = (int) $PHPDateObject->format('Y'); - - $monthDiff = ($nMonth - $oMonth) + (($nYear - $oYear) * 12); - if ($monthDiff != $adjustmentMonths) { - $adjustDays = (int) $PHPDateObject->format('d'); - $adjustDaysString = '-'.$adjustDays.' days'; - $PHPDateObject->modify($adjustDaysString); - } - return $PHPDateObject; - } - - - /** - * DATETIMENOW - * - * Returns the current date and time. - * The NOW function is useful when you need to display the current date and time on a worksheet or - * calculate a value based on the current date and time, and have that value updated each time you - * open the worksheet. - * - * NOTE: When used in a Cell Formula, MS Excel changes the cell format so that it matches the date - * and time format of your regional settings. PHPExcel does not change cell formatting in this way. - * - * Excel Function: - * NOW() - * - * @access public - * @category Date/Time Functions - * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object, - * depending on the value of the ReturnDateType flag - */ - public static function DATETIMENOW() - { - $saveTimeZone = date_default_timezone_get(); - date_default_timezone_set('UTC'); - $retValue = false; - switch (PHPExcel_Calculation_Functions::getReturnDateType()) { - case PHPExcel_Calculation_Functions::RETURNDATE_EXCEL: - $retValue = (float) PHPExcel_Shared_Date::PHPToExcel(time()); - break; - case PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC: - $retValue = (integer) time(); - break; - case PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT: - $retValue = new DateTime(); - break; - } - date_default_timezone_set($saveTimeZone); - - return $retValue; - } - - - /** - * DATENOW - * - * Returns the current date. - * The NOW function is useful when you need to display the current date and time on a worksheet or - * calculate a value based on the current date and time, and have that value updated each time you - * open the worksheet. - * - * NOTE: When used in a Cell Formula, MS Excel changes the cell format so that it matches the date - * and time format of your regional settings. PHPExcel does not change cell formatting in this way. - * - * Excel Function: - * TODAY() - * - * @access public - * @category Date/Time Functions - * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object, - * depending on the value of the ReturnDateType flag - */ - public static function DATENOW() - { - $saveTimeZone = date_default_timezone_get(); - date_default_timezone_set('UTC'); - $retValue = false; - $excelDateTime = floor(PHPExcel_Shared_Date::PHPToExcel(time())); - switch (PHPExcel_Calculation_Functions::getReturnDateType()) { - case PHPExcel_Calculation_Functions::RETURNDATE_EXCEL: - $retValue = (float) $excelDateTime; - break; - case PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC: - $retValue = (integer) PHPExcel_Shared_Date::ExcelToPHP($excelDateTime); - break; - case PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT: - $retValue = PHPExcel_Shared_Date::ExcelToPHPObject($excelDateTime); - break; - } - date_default_timezone_set($saveTimeZone); - - return $retValue; - } - - - /** - * DATE - * - * The DATE function returns a value that represents a particular date. - * - * NOTE: When used in a Cell Formula, MS Excel changes the cell format so that it matches the date - * format of your regional settings. PHPExcel does not change cell formatting in this way. - * - * Excel Function: - * DATE(year,month,day) - * - * PHPExcel is a lot more forgiving than MS Excel when passing non numeric values to this function. - * A Month name or abbreviation (English only at this point) such as 'January' or 'Jan' will still be accepted, - * as will a day value with a suffix (e.g. '21st' rather than simply 21); again only English language. - * - * @access public - * @category Date/Time Functions - * @param integer $year The value of the year argument can include one to four digits. - * Excel interprets the year argument according to the configured - * date system: 1900 or 1904. - * If year is between 0 (zero) and 1899 (inclusive), Excel adds that - * value to 1900 to calculate the year. For example, DATE(108,1,2) - * returns January 2, 2008 (1900+108). - * If year is between 1900 and 9999 (inclusive), Excel uses that - * value as the year. For example, DATE(2008,1,2) returns January 2, - * 2008. - * If year is less than 0 or is 10000 or greater, Excel returns the - * #NUM! error value. - * @param integer $month A positive or negative integer representing the month of the year - * from 1 to 12 (January to December). - * If month is greater than 12, month adds that number of months to - * the first month in the year specified. For example, DATE(2008,14,2) - * returns the serial number representing February 2, 2009. - * If month is less than 1, month subtracts the magnitude of that - * number of months, plus 1, from the first month in the year - * specified. For example, DATE(2008,-3,2) returns the serial number - * representing September 2, 2007. - * @param integer $day A positive or negative integer representing the day of the month - * from 1 to 31. - * If day is greater than the number of days in the month specified, - * day adds that number of days to the first day in the month. For - * example, DATE(2008,1,35) returns the serial number representing - * February 4, 2008. - * If day is less than 1, day subtracts the magnitude that number of - * days, plus one, from the first day of the month specified. For - * example, DATE(2008,1,-15) returns the serial number representing - * December 16, 2007. - * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object, - * depending on the value of the ReturnDateType flag - */ - public static function DATE($year = 0, $month = 1, $day = 1) - { - $year = PHPExcel_Calculation_Functions::flattenSingleValue($year); - $month = PHPExcel_Calculation_Functions::flattenSingleValue($month); - $day = PHPExcel_Calculation_Functions::flattenSingleValue($day); - - if (($month !== null) && (!is_numeric($month))) { - $month = PHPExcel_Shared_Date::monthStringToNumber($month); - } - - if (($day !== null) && (!is_numeric($day))) { - $day = PHPExcel_Shared_Date::dayStringToNumber($day); - } - - $year = ($year !== null) ? PHPExcel_Shared_String::testStringAsNumeric($year) : 0; - $month = ($month !== null) ? PHPExcel_Shared_String::testStringAsNumeric($month) : 0; - $day = ($day !== null) ? PHPExcel_Shared_String::testStringAsNumeric($day) : 0; - if ((!is_numeric($year)) || - (!is_numeric($month)) || - (!is_numeric($day))) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $year = (integer) $year; - $month = (integer) $month; - $day = (integer) $day; - - $baseYear = PHPExcel_Shared_Date::getExcelCalendar(); - // Validate parameters - if ($year < ($baseYear-1900)) { - return PHPExcel_Calculation_Functions::NaN(); - } - if ((($baseYear-1900) != 0) && ($year < $baseYear) && ($year >= 1900)) { - return PHPExcel_Calculation_Functions::NaN(); - } - - if (($year < $baseYear) && ($year >= ($baseYear-1900))) { - $year += 1900; - } - - if ($month < 1) { - // Handle year/month adjustment if month < 1 - --$month; - $year += ceil($month / 12) - 1; - $month = 13 - abs($month % 12); - } elseif ($month > 12) { - // Handle year/month adjustment if month > 12 - $year += floor($month / 12); - $month = ($month % 12); - } - - // Re-validate the year parameter after adjustments - if (($year < $baseYear) || ($year >= 10000)) { - return PHPExcel_Calculation_Functions::NaN(); - } - - // Execute function - $excelDateValue = PHPExcel_Shared_Date::FormattedPHPToExcel($year, $month, $day); - switch (PHPExcel_Calculation_Functions::getReturnDateType()) { - case PHPExcel_Calculation_Functions::RETURNDATE_EXCEL: - return (float) $excelDateValue; - case PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC: - return (integer) PHPExcel_Shared_Date::ExcelToPHP($excelDateValue); - case PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT: - return PHPExcel_Shared_Date::ExcelToPHPObject($excelDateValue); - } - } - - - /** - * TIME - * - * The TIME function returns a value that represents a particular time. - * - * NOTE: When used in a Cell Formula, MS Excel changes the cell format so that it matches the time - * format of your regional settings. PHPExcel does not change cell formatting in this way. - * - * Excel Function: - * TIME(hour,minute,second) - * - * @access public - * @category Date/Time Functions - * @param integer $hour A number from 0 (zero) to 32767 representing the hour. - * Any value greater than 23 will be divided by 24 and the remainder - * will be treated as the hour value. For example, TIME(27,0,0) = - * TIME(3,0,0) = .125 or 3:00 AM. - * @param integer $minute A number from 0 to 32767 representing the minute. - * Any value greater than 59 will be converted to hours and minutes. - * For example, TIME(0,750,0) = TIME(12,30,0) = .520833 or 12:30 PM. - * @param integer $second A number from 0 to 32767 representing the second. - * Any value greater than 59 will be converted to hours, minutes, - * and seconds. For example, TIME(0,0,2000) = TIME(0,33,22) = .023148 - * or 12:33:20 AM - * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object, - * depending on the value of the ReturnDateType flag - */ - public static function TIME($hour = 0, $minute = 0, $second = 0) - { - $hour = PHPExcel_Calculation_Functions::flattenSingleValue($hour); - $minute = PHPExcel_Calculation_Functions::flattenSingleValue($minute); - $second = PHPExcel_Calculation_Functions::flattenSingleValue($second); - - if ($hour == '') { - $hour = 0; - } - if ($minute == '') { - $minute = 0; - } - if ($second == '') { - $second = 0; - } - - if ((!is_numeric($hour)) || (!is_numeric($minute)) || (!is_numeric($second))) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $hour = (integer) $hour; - $minute = (integer) $minute; - $second = (integer) $second; - - if ($second < 0) { - $minute += floor($second / 60); - $second = 60 - abs($second % 60); - if ($second == 60) { - $second = 0; - } - } elseif ($second >= 60) { - $minute += floor($second / 60); - $second = $second % 60; - } - if ($minute < 0) { - $hour += floor($minute / 60); - $minute = 60 - abs($minute % 60); - if ($minute == 60) { - $minute = 0; - } - } elseif ($minute >= 60) { - $hour += floor($minute / 60); - $minute = $minute % 60; - } - - if ($hour > 23) { - $hour = $hour % 24; - } elseif ($hour < 0) { - return PHPExcel_Calculation_Functions::NaN(); - } - - // Execute function - switch (PHPExcel_Calculation_Functions::getReturnDateType()) { - case PHPExcel_Calculation_Functions::RETURNDATE_EXCEL: - $date = 0; - $calendar = PHPExcel_Shared_Date::getExcelCalendar(); - if ($calendar != PHPExcel_Shared_Date::CALENDAR_WINDOWS_1900) { - $date = 1; - } - return (float) PHPExcel_Shared_Date::FormattedPHPToExcel($calendar, 1, $date, $hour, $minute, $second); - case PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC: - return (integer) PHPExcel_Shared_Date::ExcelToPHP(PHPExcel_Shared_Date::FormattedPHPToExcel(1970, 1, 1, $hour, $minute, $second)); // -2147468400; // -2147472000 + 3600 - case PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT: - $dayAdjust = 0; - if ($hour < 0) { - $dayAdjust = floor($hour / 24); - $hour = 24 - abs($hour % 24); - if ($hour == 24) { - $hour = 0; - } - } elseif ($hour >= 24) { - $dayAdjust = floor($hour / 24); - $hour = $hour % 24; - } - $phpDateObject = new DateTime('1900-01-01 '.$hour.':'.$minute.':'.$second); - if ($dayAdjust != 0) { - $phpDateObject->modify($dayAdjust.' days'); - } - return $phpDateObject; - } - } - - - /** - * DATEVALUE - * - * Returns a value that represents a particular date. - * Use DATEVALUE to convert a date represented by a text string to an Excel or PHP date/time stamp - * value. - * - * NOTE: When used in a Cell Formula, MS Excel changes the cell format so that it matches the date - * format of your regional settings. PHPExcel does not change cell formatting in this way. - * - * Excel Function: - * DATEVALUE(dateValue) - * - * @access public - * @category Date/Time Functions - * @param string $dateValue Text that represents a date in a Microsoft Excel date format. - * For example, "1/30/2008" or "30-Jan-2008" are text strings within - * quotation marks that represent dates. Using the default date - * system in Excel for Windows, date_text must represent a date from - * January 1, 1900, to December 31, 9999. Using the default date - * system in Excel for the Macintosh, date_text must represent a date - * from January 1, 1904, to December 31, 9999. DATEVALUE returns the - * #VALUE! error value if date_text is out of this range. - * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object, - * depending on the value of the ReturnDateType flag - */ - public static function DATEVALUE($dateValue = 1) - { - $dateValue = trim(PHPExcel_Calculation_Functions::flattenSingleValue($dateValue), '"'); - // Strip any ordinals because they're allowed in Excel (English only) - $dateValue = preg_replace('/(\d)(st|nd|rd|th)([ -\/])/Ui', '$1$3', $dateValue); - // Convert separators (/ . or space) to hyphens (should also handle dot used for ordinals in some countries, e.g. Denmark, Germany) - $dateValue = str_replace(array('/', '.', '-', ' '), array(' ', ' ', ' ', ' '), $dateValue); - - $yearFound = false; - $t1 = explode(' ', $dateValue); - foreach ($t1 as &$t) { - if ((is_numeric($t)) && ($t > 31)) { - if ($yearFound) { - return PHPExcel_Calculation_Functions::VALUE(); - } else { - if ($t < 100) { - $t += 1900; - } - $yearFound = true; - } - } - } - if ((count($t1) == 1) && (strpos($t, ':') != false)) { - // We've been fed a time value without any date - return 0.0; - } elseif (count($t1) == 2) { - // We only have two parts of the date: either day/month or month/year - if ($yearFound) { - array_unshift($t1, 1); - } else { - array_push($t1, date('Y')); - } - } - unset($t); - $dateValue = implode(' ', $t1); - - $PHPDateArray = date_parse($dateValue); - if (($PHPDateArray === false) || ($PHPDateArray['error_count'] > 0)) { - $testVal1 = strtok($dateValue, '- '); - if ($testVal1 !== false) { - $testVal2 = strtok('- '); - if ($testVal2 !== false) { - $testVal3 = strtok('- '); - if ($testVal3 === false) { - $testVal3 = strftime('%Y'); - } - } else { - return PHPExcel_Calculation_Functions::VALUE(); - } - } else { - return PHPExcel_Calculation_Functions::VALUE(); - } - $PHPDateArray = date_parse($testVal1.'-'.$testVal2.'-'.$testVal3); - if (($PHPDateArray === false) || ($PHPDateArray['error_count'] > 0)) { - $PHPDateArray = date_parse($testVal2.'-'.$testVal1.'-'.$testVal3); - if (($PHPDateArray === false) || ($PHPDateArray['error_count'] > 0)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - } - } - - if (($PHPDateArray !== false) && ($PHPDateArray['error_count'] == 0)) { - // Execute function - if ($PHPDateArray['year'] == '') { - $PHPDateArray['year'] = strftime('%Y'); - } - if ($PHPDateArray['year'] < 1900) { - return PHPExcel_Calculation_Functions::VALUE(); - } - if ($PHPDateArray['month'] == '') { - $PHPDateArray['month'] = strftime('%m'); - } - if ($PHPDateArray['day'] == '') { - $PHPDateArray['day'] = strftime('%d'); - } - $excelDateValue = floor( - PHPExcel_Shared_Date::FormattedPHPToExcel( - $PHPDateArray['year'], - $PHPDateArray['month'], - $PHPDateArray['day'], - $PHPDateArray['hour'], - $PHPDateArray['minute'], - $PHPDateArray['second'] - ) - ); - - switch (PHPExcel_Calculation_Functions::getReturnDateType()) { - case PHPExcel_Calculation_Functions::RETURNDATE_EXCEL: - return (float) $excelDateValue; - case PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC: - return (integer) PHPExcel_Shared_Date::ExcelToPHP($excelDateValue); - case PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT: - return new DateTime($PHPDateArray['year'].'-'.$PHPDateArray['month'].'-'.$PHPDateArray['day'].' 00:00:00'); - } - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * TIMEVALUE - * - * Returns a value that represents a particular time. - * Use TIMEVALUE to convert a time represented by a text string to an Excel or PHP date/time stamp - * value. - * - * NOTE: When used in a Cell Formula, MS Excel changes the cell format so that it matches the time - * format of your regional settings. PHPExcel does not change cell formatting in this way. - * - * Excel Function: - * TIMEVALUE(timeValue) - * - * @access public - * @category Date/Time Functions - * @param string $timeValue A text string that represents a time in any one of the Microsoft - * Excel time formats; for example, "6:45 PM" and "18:45" text strings - * within quotation marks that represent time. - * Date information in time_text is ignored. - * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object, - * depending on the value of the ReturnDateType flag - */ - public static function TIMEVALUE($timeValue) - { - $timeValue = trim(PHPExcel_Calculation_Functions::flattenSingleValue($timeValue), '"'); - $timeValue = str_replace(array('/', '.'), array('-', '-'), $timeValue); - - $PHPDateArray = date_parse($timeValue); - if (($PHPDateArray !== false) && ($PHPDateArray['error_count'] == 0)) { - if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) { - $excelDateValue = PHPExcel_Shared_Date::FormattedPHPToExcel( - $PHPDateArray['year'], - $PHPDateArray['month'], - $PHPDateArray['day'], - $PHPDateArray['hour'], - $PHPDateArray['minute'], - $PHPDateArray['second'] - ); - } else { - $excelDateValue = PHPExcel_Shared_Date::FormattedPHPToExcel(1900, 1, 1, $PHPDateArray['hour'], $PHPDateArray['minute'], $PHPDateArray['second']) - 1; - } - - switch (PHPExcel_Calculation_Functions::getReturnDateType()) { - case PHPExcel_Calculation_Functions::RETURNDATE_EXCEL: - return (float) $excelDateValue; - case PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC: - return (integer) $phpDateValue = PHPExcel_Shared_Date::ExcelToPHP($excelDateValue+25569) - 3600; - case PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT: - return new DateTime('1900-01-01 '.$PHPDateArray['hour'].':'.$PHPDateArray['minute'].':'.$PHPDateArray['second']); - } - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * DATEDIF - * - * @param mixed $startDate Excel date serial value, PHP date/time stamp, PHP DateTime object - * or a standard date string - * @param mixed $endDate Excel date serial value, PHP date/time stamp, PHP DateTime object - * or a standard date string - * @param string $unit - * @return integer Interval between the dates - */ - public static function DATEDIF($startDate = 0, $endDate = 0, $unit = 'D') - { - $startDate = PHPExcel_Calculation_Functions::flattenSingleValue($startDate); - $endDate = PHPExcel_Calculation_Functions::flattenSingleValue($endDate); - $unit = strtoupper(PHPExcel_Calculation_Functions::flattenSingleValue($unit)); - - if (is_string($startDate = self::getDateValue($startDate))) { - return PHPExcel_Calculation_Functions::VALUE(); - } - if (is_string($endDate = self::getDateValue($endDate))) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - // Validate parameters - if ($startDate >= $endDate) { - return PHPExcel_Calculation_Functions::NaN(); - } - - // Execute function - $difference = $endDate - $startDate; - - $PHPStartDateObject = PHPExcel_Shared_Date::ExcelToPHPObject($startDate); - $startDays = $PHPStartDateObject->format('j'); - $startMonths = $PHPStartDateObject->format('n'); - $startYears = $PHPStartDateObject->format('Y'); - - $PHPEndDateObject = PHPExcel_Shared_Date::ExcelToPHPObject($endDate); - $endDays = $PHPEndDateObject->format('j'); - $endMonths = $PHPEndDateObject->format('n'); - $endYears = $PHPEndDateObject->format('Y'); - - $retVal = PHPExcel_Calculation_Functions::NaN(); - switch ($unit) { - case 'D': - $retVal = intval($difference); - break; - case 'M': - $retVal = intval($endMonths - $startMonths) + (intval($endYears - $startYears) * 12); - // We're only interested in full months - if ($endDays < $startDays) { - --$retVal; - } - break; - case 'Y': - $retVal = intval($endYears - $startYears); - // We're only interested in full months - if ($endMonths < $startMonths) { - --$retVal; - } elseif (($endMonths == $startMonths) && ($endDays < $startDays)) { - --$retVal; - } - break; - case 'MD': - if ($endDays < $startDays) { - $retVal = $endDays; - $PHPEndDateObject->modify('-'.$endDays.' days'); - $adjustDays = $PHPEndDateObject->format('j'); - if ($adjustDays > $startDays) { - $retVal += ($adjustDays - $startDays); - } - } else { - $retVal = $endDays - $startDays; - } - break; - case 'YM': - $retVal = intval($endMonths - $startMonths); - if ($retVal < 0) { - $retVal += 12; - } - // We're only interested in full months - if ($endDays < $startDays) { - --$retVal; - } - break; - case 'YD': - $retVal = intval($difference); - if ($endYears > $startYears) { - while ($endYears > $startYears) { - $PHPEndDateObject->modify('-1 year'); - $endYears = $PHPEndDateObject->format('Y'); - } - $retVal = $PHPEndDateObject->format('z') - $PHPStartDateObject->format('z'); - if ($retVal < 0) { - $retVal += 365; - } - } - break; - default: - $retVal = PHPExcel_Calculation_Functions::NaN(); - } - return $retVal; - } - - - /** - * DAYS360 - * - * Returns the number of days between two dates based on a 360-day year (twelve 30-day months), - * which is used in some accounting calculations. Use this function to help compute payments if - * your accounting system is based on twelve 30-day months. - * - * Excel Function: - * DAYS360(startDate,endDate[,method]) - * - * @access public - * @category Date/Time Functions - * @param mixed $startDate Excel date serial value (float), PHP date timestamp (integer), - * PHP DateTime object, or a standard date string - * @param mixed $endDate Excel date serial value (float), PHP date timestamp (integer), - * PHP DateTime object, or a standard date string - * @param boolean $method US or European Method - * FALSE or omitted: U.S. (NASD) method. If the starting date is - * the last day of a month, it becomes equal to the 30th of the - * same month. If the ending date is the last day of a month and - * the starting date is earlier than the 30th of a month, the - * ending date becomes equal to the 1st of the next month; - * otherwise the ending date becomes equal to the 30th of the - * same month. - * TRUE: European method. Starting dates and ending dates that - * occur on the 31st of a month become equal to the 30th of the - * same month. - * @return integer Number of days between start date and end date - */ - public static function DAYS360($startDate = 0, $endDate = 0, $method = false) - { - $startDate = PHPExcel_Calculation_Functions::flattenSingleValue($startDate); - $endDate = PHPExcel_Calculation_Functions::flattenSingleValue($endDate); - - if (is_string($startDate = self::getDateValue($startDate))) { - return PHPExcel_Calculation_Functions::VALUE(); - } - if (is_string($endDate = self::getDateValue($endDate))) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - if (!is_bool($method)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - // Execute function - $PHPStartDateObject = PHPExcel_Shared_Date::ExcelToPHPObject($startDate); - $startDay = $PHPStartDateObject->format('j'); - $startMonth = $PHPStartDateObject->format('n'); - $startYear = $PHPStartDateObject->format('Y'); - - $PHPEndDateObject = PHPExcel_Shared_Date::ExcelToPHPObject($endDate); - $endDay = $PHPEndDateObject->format('j'); - $endMonth = $PHPEndDateObject->format('n'); - $endYear = $PHPEndDateObject->format('Y'); - - return self::dateDiff360($startDay, $startMonth, $startYear, $endDay, $endMonth, $endYear, !$method); - } - - - /** - * YEARFRAC - * - * Calculates the fraction of the year represented by the number of whole days between two dates - * (the start_date and the end_date). - * Use the YEARFRAC worksheet function to identify the proportion of a whole year's benefits or - * obligations to assign to a specific term. - * - * Excel Function: - * YEARFRAC(startDate,endDate[,method]) - * - * @access public - * @category Date/Time Functions - * @param mixed $startDate Excel date serial value (float), PHP date timestamp (integer), - * PHP DateTime object, or a standard date string - * @param mixed $endDate Excel date serial value (float), PHP date timestamp (integer), - * PHP DateTime object, or a standard date string - * @param integer $method Method used for the calculation - * 0 or omitted US (NASD) 30/360 - * 1 Actual/actual - * 2 Actual/360 - * 3 Actual/365 - * 4 European 30/360 - * @return float fraction of the year - */ - public static function YEARFRAC($startDate = 0, $endDate = 0, $method = 0) - { - $startDate = PHPExcel_Calculation_Functions::flattenSingleValue($startDate); - $endDate = PHPExcel_Calculation_Functions::flattenSingleValue($endDate); - $method = PHPExcel_Calculation_Functions::flattenSingleValue($method); - - if (is_string($startDate = self::getDateValue($startDate))) { - return PHPExcel_Calculation_Functions::VALUE(); - } - if (is_string($endDate = self::getDateValue($endDate))) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - if (((is_numeric($method)) && (!is_string($method))) || ($method == '')) { - switch ($method) { - case 0: - return self::DAYS360($startDate, $endDate) / 360; - case 1: - $days = self::DATEDIF($startDate, $endDate); - $startYear = self::YEAR($startDate); - $endYear = self::YEAR($endDate); - $years = $endYear - $startYear + 1; - $leapDays = 0; - if ($years == 1) { - if (self::isLeapYear($endYear)) { - $startMonth = self::MONTHOFYEAR($startDate); - $endMonth = self::MONTHOFYEAR($endDate); - $endDay = self::DAYOFMONTH($endDate); - if (($startMonth < 3) || - (($endMonth * 100 + $endDay) >= (2 * 100 + 29))) { - $leapDays += 1; - } - } - } else { - for ($year = $startYear; $year <= $endYear; ++$year) { - if ($year == $startYear) { - $startMonth = self::MONTHOFYEAR($startDate); - $startDay = self::DAYOFMONTH($startDate); - if ($startMonth < 3) { - $leapDays += (self::isLeapYear($year)) ? 1 : 0; - } - } elseif ($year == $endYear) { - $endMonth = self::MONTHOFYEAR($endDate); - $endDay = self::DAYOFMONTH($endDate); - if (($endMonth * 100 + $endDay) >= (2 * 100 + 29)) { - $leapDays += (self::isLeapYear($year)) ? 1 : 0; - } - } else { - $leapDays += (self::isLeapYear($year)) ? 1 : 0; - } - } - if ($years == 2) { - if (($leapDays == 0) && (self::isLeapYear($startYear)) && ($days > 365)) { - $leapDays = 1; - } elseif ($days < 366) { - $years = 1; - } - } - $leapDays /= $years; - } - return $days / (365 + $leapDays); - case 2: - return self::DATEDIF($startDate, $endDate) / 360; - case 3: - return self::DATEDIF($startDate, $endDate) / 365; - case 4: - return self::DAYS360($startDate, $endDate, true) / 360; - } - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * NETWORKDAYS - * - * Returns the number of whole working days between start_date and end_date. Working days - * exclude weekends and any dates identified in holidays. - * Use NETWORKDAYS to calculate employee benefits that accrue based on the number of days - * worked during a specific term. - * - * Excel Function: - * NETWORKDAYS(startDate,endDate[,holidays[,holiday[,...]]]) - * - * @access public - * @category Date/Time Functions - * @param mixed $startDate Excel date serial value (float), PHP date timestamp (integer), - * PHP DateTime object, or a standard date string - * @param mixed $endDate Excel date serial value (float), PHP date timestamp (integer), - * PHP DateTime object, or a standard date string - * @param mixed $holidays,... Optional series of Excel date serial value (float), PHP date - * timestamp (integer), PHP DateTime object, or a standard date - * strings that will be excluded from the working calendar, such - * as state and federal holidays and floating holidays. - * @return integer Interval between the dates - */ - public static function NETWORKDAYS($startDate, $endDate) - { - // Retrieve the mandatory start and end date that are referenced in the function definition - $startDate = PHPExcel_Calculation_Functions::flattenSingleValue($startDate); - $endDate = PHPExcel_Calculation_Functions::flattenSingleValue($endDate); - // Flush the mandatory start and end date that are referenced in the function definition, and get the optional days - $dateArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); - array_shift($dateArgs); - array_shift($dateArgs); - - // Validate the start and end dates - if (is_string($startDate = $sDate = self::getDateValue($startDate))) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $startDate = (float) floor($startDate); - if (is_string($endDate = $eDate = self::getDateValue($endDate))) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $endDate = (float) floor($endDate); - - if ($sDate > $eDate) { - $startDate = $eDate; - $endDate = $sDate; - } - - // Execute function - $startDoW = 6 - self::DAYOFWEEK($startDate, 2); - if ($startDoW < 0) { - $startDoW = 0; - } - $endDoW = self::DAYOFWEEK($endDate, 2); - if ($endDoW >= 6) { - $endDoW = 0; - } - - $wholeWeekDays = floor(($endDate - $startDate) / 7) * 5; - $partWeekDays = $endDoW + $startDoW; - if ($partWeekDays > 5) { - $partWeekDays -= 5; - } - - // Test any extra holiday parameters - $holidayCountedArray = array(); - foreach ($dateArgs as $holidayDate) { - if (is_string($holidayDate = self::getDateValue($holidayDate))) { - return PHPExcel_Calculation_Functions::VALUE(); - } - if (($holidayDate >= $startDate) && ($holidayDate <= $endDate)) { - if ((self::DAYOFWEEK($holidayDate, 2) < 6) && (!in_array($holidayDate, $holidayCountedArray))) { - --$partWeekDays; - $holidayCountedArray[] = $holidayDate; - } - } - } - - if ($sDate > $eDate) { - return 0 - ($wholeWeekDays + $partWeekDays); - } - return $wholeWeekDays + $partWeekDays; - } - - - /** - * WORKDAY - * - * Returns the date that is the indicated number of working days before or after a date (the - * starting date). Working days exclude weekends and any dates identified as holidays. - * Use WORKDAY to exclude weekends or holidays when you calculate invoice due dates, expected - * delivery times, or the number of days of work performed. - * - * Excel Function: - * WORKDAY(startDate,endDays[,holidays[,holiday[,...]]]) - * - * @access public - * @category Date/Time Functions - * @param mixed $startDate Excel date serial value (float), PHP date timestamp (integer), - * PHP DateTime object, or a standard date string - * @param integer $endDays The number of nonweekend and nonholiday days before or after - * startDate. A positive value for days yields a future date; a - * negative value yields a past date. - * @param mixed $holidays,... Optional series of Excel date serial value (float), PHP date - * timestamp (integer), PHP DateTime object, or a standard date - * strings that will be excluded from the working calendar, such - * as state and federal holidays and floating holidays. - * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object, - * depending on the value of the ReturnDateType flag - */ - public static function WORKDAY($startDate, $endDays) - { - // Retrieve the mandatory start date and days that are referenced in the function definition - $startDate = PHPExcel_Calculation_Functions::flattenSingleValue($startDate); - $endDays = PHPExcel_Calculation_Functions::flattenSingleValue($endDays); - // Flush the mandatory start date and days that are referenced in the function definition, and get the optional days - $dateArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); - array_shift($dateArgs); - array_shift($dateArgs); - - if ((is_string($startDate = self::getDateValue($startDate))) || (!is_numeric($endDays))) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $startDate = (float) floor($startDate); - $endDays = (int) floor($endDays); - // If endDays is 0, we always return startDate - if ($endDays == 0) { - return $startDate; - } - - $decrementing = ($endDays < 0) ? true : false; - - // Adjust the start date if it falls over a weekend - - $startDoW = self::DAYOFWEEK($startDate, 3); - if (self::DAYOFWEEK($startDate, 3) >= 5) { - $startDate += ($decrementing) ? -$startDoW + 4: 7 - $startDoW; - ($decrementing) ? $endDays++ : $endDays--; - } - - // Add endDays - $endDate = (float) $startDate + (intval($endDays / 5) * 7) + ($endDays % 5); - - // Adjust the calculated end date if it falls over a weekend - $endDoW = self::DAYOFWEEK($endDate, 3); - if ($endDoW >= 5) { - $endDate += ($decrementing) ? -$endDoW + 4: 7 - $endDoW; - } - - // Test any extra holiday parameters - if (!empty($dateArgs)) { - $holidayCountedArray = $holidayDates = array(); - foreach ($dateArgs as $holidayDate) { - if (($holidayDate !== null) && (trim($holidayDate) > '')) { - if (is_string($holidayDate = self::getDateValue($holidayDate))) { - return PHPExcel_Calculation_Functions::VALUE(); - } - if (self::DAYOFWEEK($holidayDate, 3) < 5) { - $holidayDates[] = $holidayDate; - } - } - } - if ($decrementing) { - rsort($holidayDates, SORT_NUMERIC); - } else { - sort($holidayDates, SORT_NUMERIC); - } - foreach ($holidayDates as $holidayDate) { - if ($decrementing) { - if (($holidayDate <= $startDate) && ($holidayDate >= $endDate)) { - if (!in_array($holidayDate, $holidayCountedArray)) { - --$endDate; - $holidayCountedArray[] = $holidayDate; - } - } - } else { - if (($holidayDate >= $startDate) && ($holidayDate <= $endDate)) { - if (!in_array($holidayDate, $holidayCountedArray)) { - ++$endDate; - $holidayCountedArray[] = $holidayDate; - } - } - } - // Adjust the calculated end date if it falls over a weekend - $endDoW = self::DAYOFWEEK($endDate, 3); - if ($endDoW >= 5) { - $endDate += ($decrementing) ? -$endDoW + 4 : 7 - $endDoW; - } - } - } - - switch (PHPExcel_Calculation_Functions::getReturnDateType()) { - case PHPExcel_Calculation_Functions::RETURNDATE_EXCEL: - return (float) $endDate; - case PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC: - return (integer) PHPExcel_Shared_Date::ExcelToPHP($endDate); - case PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT: - return PHPExcel_Shared_Date::ExcelToPHPObject($endDate); - } - } - - - /** - * DAYOFMONTH - * - * Returns the day of the month, for a specified date. The day is given as an integer - * ranging from 1 to 31. - * - * Excel Function: - * DAY(dateValue) - * - * @param mixed $dateValue Excel date serial value (float), PHP date timestamp (integer), - * PHP DateTime object, or a standard date string - * @return int Day of the month - */ - public static function DAYOFMONTH($dateValue = 1) - { - $dateValue = PHPExcel_Calculation_Functions::flattenSingleValue($dateValue); - - if ($dateValue === null) { - $dateValue = 1; - } elseif (is_string($dateValue = self::getDateValue($dateValue))) { - return PHPExcel_Calculation_Functions::VALUE(); - } elseif ($dateValue == 0.0) { - return 0; - } elseif ($dateValue < 0.0) { - return PHPExcel_Calculation_Functions::NaN(); - } - - // Execute function - $PHPDateObject = PHPExcel_Shared_Date::ExcelToPHPObject($dateValue); - - return (int) $PHPDateObject->format('j'); - } - - - /** - * DAYOFWEEK - * - * Returns the day of the week for a specified date. The day is given as an integer - * ranging from 0 to 7 (dependent on the requested style). - * - * Excel Function: - * WEEKDAY(dateValue[,style]) - * - * @param mixed $dateValue Excel date serial value (float), PHP date timestamp (integer), - * PHP DateTime object, or a standard date string - * @param int $style A number that determines the type of return value - * 1 or omitted Numbers 1 (Sunday) through 7 (Saturday). - * 2 Numbers 1 (Monday) through 7 (Sunday). - * 3 Numbers 0 (Monday) through 6 (Sunday). - * @return int Day of the week value - */ - public static function DAYOFWEEK($dateValue = 1, $style = 1) - { - $dateValue = PHPExcel_Calculation_Functions::flattenSingleValue($dateValue); - $style = PHPExcel_Calculation_Functions::flattenSingleValue($style); - - if (!is_numeric($style)) { - return PHPExcel_Calculation_Functions::VALUE(); - } elseif (($style < 1) || ($style > 3)) { - return PHPExcel_Calculation_Functions::NaN(); - } - $style = floor($style); - - if ($dateValue === null) { - $dateValue = 1; - } elseif (is_string($dateValue = self::getDateValue($dateValue))) { - return PHPExcel_Calculation_Functions::VALUE(); - } elseif ($dateValue < 0.0) { - return PHPExcel_Calculation_Functions::NaN(); - } - - // Execute function - $PHPDateObject = PHPExcel_Shared_Date::ExcelToPHPObject($dateValue); - $DoW = $PHPDateObject->format('w'); - - $firstDay = 1; - switch ($style) { - case 1: - ++$DoW; - break; - case 2: - if ($DoW == 0) { - $DoW = 7; - } - break; - case 3: - if ($DoW == 0) { - $DoW = 7; - } - $firstDay = 0; - --$DoW; - break; - } - if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_EXCEL) { - // Test for Excel's 1900 leap year, and introduce the error as required - if (($PHPDateObject->format('Y') == 1900) && ($PHPDateObject->format('n') <= 2)) { - --$DoW; - if ($DoW < $firstDay) { - $DoW += 7; - } - } - } - - return (int) $DoW; - } - - - /** - * WEEKOFYEAR - * - * Returns the week of the year for a specified date. - * The WEEKNUM function considers the week containing January 1 to be the first week of the year. - * However, there is a European standard that defines the first week as the one with the majority - * of days (four or more) falling in the new year. This means that for years in which there are - * three days or less in the first week of January, the WEEKNUM function returns week numbers - * that are incorrect according to the European standard. - * - * Excel Function: - * WEEKNUM(dateValue[,style]) - * - * @param mixed $dateValue Excel date serial value (float), PHP date timestamp (integer), - * PHP DateTime object, or a standard date string - * @param boolean $method Week begins on Sunday or Monday - * 1 or omitted Week begins on Sunday. - * 2 Week begins on Monday. - * @return int Week Number - */ - public static function WEEKOFYEAR($dateValue = 1, $method = 1) - { - $dateValue = PHPExcel_Calculation_Functions::flattenSingleValue($dateValue); - $method = PHPExcel_Calculation_Functions::flattenSingleValue($method); - - if (!is_numeric($method)) { - return PHPExcel_Calculation_Functions::VALUE(); - } elseif (($method < 1) || ($method > 2)) { - return PHPExcel_Calculation_Functions::NaN(); - } - $method = floor($method); - - if ($dateValue === null) { - $dateValue = 1; - } elseif (is_string($dateValue = self::getDateValue($dateValue))) { - return PHPExcel_Calculation_Functions::VALUE(); - } elseif ($dateValue < 0.0) { - return PHPExcel_Calculation_Functions::NaN(); - } - - // Execute function - $PHPDateObject = PHPExcel_Shared_Date::ExcelToPHPObject($dateValue); - $dayOfYear = $PHPDateObject->format('z'); - $dow = $PHPDateObject->format('w'); - $PHPDateObject->modify('-' . $dayOfYear . ' days'); - $dow = $PHPDateObject->format('w'); - $daysInFirstWeek = 7 - (($dow + (2 - $method)) % 7); - $dayOfYear -= $daysInFirstWeek; - $weekOfYear = ceil($dayOfYear / 7) + 1; - - return (int) $weekOfYear; - } - - - /** - * MONTHOFYEAR - * - * Returns the month of a date represented by a serial number. - * The month is given as an integer, ranging from 1 (January) to 12 (December). - * - * Excel Function: - * MONTH(dateValue) - * - * @param mixed $dateValue Excel date serial value (float), PHP date timestamp (integer), - * PHP DateTime object, or a standard date string - * @return int Month of the year - */ - public static function MONTHOFYEAR($dateValue = 1) - { - $dateValue = PHPExcel_Calculation_Functions::flattenSingleValue($dateValue); - - if ($dateValue === null) { - $dateValue = 1; - } elseif (is_string($dateValue = self::getDateValue($dateValue))) { - return PHPExcel_Calculation_Functions::VALUE(); - } elseif ($dateValue < 0.0) { - return PHPExcel_Calculation_Functions::NaN(); - } - - // Execute function - $PHPDateObject = PHPExcel_Shared_Date::ExcelToPHPObject($dateValue); - - return (int) $PHPDateObject->format('n'); - } - - - /** - * YEAR - * - * Returns the year corresponding to a date. - * The year is returned as an integer in the range 1900-9999. - * - * Excel Function: - * YEAR(dateValue) - * - * @param mixed $dateValue Excel date serial value (float), PHP date timestamp (integer), - * PHP DateTime object, or a standard date string - * @return int Year - */ - public static function YEAR($dateValue = 1) - { - $dateValue = PHPExcel_Calculation_Functions::flattenSingleValue($dateValue); - - if ($dateValue === null) { - $dateValue = 1; - } elseif (is_string($dateValue = self::getDateValue($dateValue))) { - return PHPExcel_Calculation_Functions::VALUE(); - } elseif ($dateValue < 0.0) { - return PHPExcel_Calculation_Functions::NaN(); - } - - // Execute function - $PHPDateObject = PHPExcel_Shared_Date::ExcelToPHPObject($dateValue); - - return (int) $PHPDateObject->format('Y'); - } - - - /** - * HOUROFDAY - * - * Returns the hour of a time value. - * The hour is given as an integer, ranging from 0 (12:00 A.M.) to 23 (11:00 P.M.). - * - * Excel Function: - * HOUR(timeValue) - * - * @param mixed $timeValue Excel date serial value (float), PHP date timestamp (integer), - * PHP DateTime object, or a standard time string - * @return int Hour - */ - public static function HOUROFDAY($timeValue = 0) - { - $timeValue = PHPExcel_Calculation_Functions::flattenSingleValue($timeValue); - - if (!is_numeric($timeValue)) { - if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC) { - $testVal = strtok($timeValue, '/-: '); - if (strlen($testVal) < strlen($timeValue)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - } - $timeValue = self::getTimeValue($timeValue); - if (is_string($timeValue)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - } - // Execute function - if ($timeValue >= 1) { - $timeValue = fmod($timeValue, 1); - } elseif ($timeValue < 0.0) { - return PHPExcel_Calculation_Functions::NaN(); - } - $timeValue = PHPExcel_Shared_Date::ExcelToPHP($timeValue); - - return (int) gmdate('G', $timeValue); - } - - - /** - * MINUTEOFHOUR - * - * Returns the minutes of a time value. - * The minute is given as an integer, ranging from 0 to 59. - * - * Excel Function: - * MINUTE(timeValue) - * - * @param mixed $timeValue Excel date serial value (float), PHP date timestamp (integer), - * PHP DateTime object, or a standard time string - * @return int Minute - */ - public static function MINUTEOFHOUR($timeValue = 0) - { - $timeValue = $timeTester = PHPExcel_Calculation_Functions::flattenSingleValue($timeValue); - - if (!is_numeric($timeValue)) { - if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC) { - $testVal = strtok($timeValue, '/-: '); - if (strlen($testVal) < strlen($timeValue)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - } - $timeValue = self::getTimeValue($timeValue); - if (is_string($timeValue)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - } - // Execute function - if ($timeValue >= 1) { - $timeValue = fmod($timeValue, 1); - } elseif ($timeValue < 0.0) { - return PHPExcel_Calculation_Functions::NaN(); - } - $timeValue = PHPExcel_Shared_Date::ExcelToPHP($timeValue); - - return (int) gmdate('i', $timeValue); - } - - - /** - * SECONDOFMINUTE - * - * Returns the seconds of a time value. - * The second is given as an integer in the range 0 (zero) to 59. - * - * Excel Function: - * SECOND(timeValue) - * - * @param mixed $timeValue Excel date serial value (float), PHP date timestamp (integer), - * PHP DateTime object, or a standard time string - * @return int Second - */ - public static function SECONDOFMINUTE($timeValue = 0) - { - $timeValue = PHPExcel_Calculation_Functions::flattenSingleValue($timeValue); - - if (!is_numeric($timeValue)) { - if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC) { - $testVal = strtok($timeValue, '/-: '); - if (strlen($testVal) < strlen($timeValue)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - } - $timeValue = self::getTimeValue($timeValue); - if (is_string($timeValue)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - } - // Execute function - if ($timeValue >= 1) { - $timeValue = fmod($timeValue, 1); - } elseif ($timeValue < 0.0) { - return PHPExcel_Calculation_Functions::NaN(); - } - $timeValue = PHPExcel_Shared_Date::ExcelToPHP($timeValue); - - return (int) gmdate('s', $timeValue); - } - - - /** - * EDATE - * - * Returns the serial number that represents the date that is the indicated number of months - * before or after a specified date (the start_date). - * Use EDATE to calculate maturity dates or due dates that fall on the same day of the month - * as the date of issue. - * - * Excel Function: - * EDATE(dateValue,adjustmentMonths) - * - * @param mixed $dateValue Excel date serial value (float), PHP date timestamp (integer), - * PHP DateTime object, or a standard date string - * @param int $adjustmentMonths The number of months before or after start_date. - * A positive value for months yields a future date; - * a negative value yields a past date. - * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object, - * depending on the value of the ReturnDateType flag - */ - public static function EDATE($dateValue = 1, $adjustmentMonths = 0) - { - $dateValue = PHPExcel_Calculation_Functions::flattenSingleValue($dateValue); - $adjustmentMonths = PHPExcel_Calculation_Functions::flattenSingleValue($adjustmentMonths); - - if (!is_numeric($adjustmentMonths)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $adjustmentMonths = floor($adjustmentMonths); - - if (is_string($dateValue = self::getDateValue($dateValue))) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - // Execute function - $PHPDateObject = self::adjustDateByMonths($dateValue, $adjustmentMonths); - - switch (PHPExcel_Calculation_Functions::getReturnDateType()) { - case PHPExcel_Calculation_Functions::RETURNDATE_EXCEL: - return (float) PHPExcel_Shared_Date::PHPToExcel($PHPDateObject); - case PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC: - return (integer) PHPExcel_Shared_Date::ExcelToPHP(PHPExcel_Shared_Date::PHPToExcel($PHPDateObject)); - case PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT: - return $PHPDateObject; - } - } - - - /** - * EOMONTH - * - * Returns the date value for the last day of the month that is the indicated number of months - * before or after start_date. - * Use EOMONTH to calculate maturity dates or due dates that fall on the last day of the month. - * - * Excel Function: - * EOMONTH(dateValue,adjustmentMonths) - * - * @param mixed $dateValue Excel date serial value (float), PHP date timestamp (integer), - * PHP DateTime object, or a standard date string - * @param int $adjustmentMonths The number of months before or after start_date. - * A positive value for months yields a future date; - * a negative value yields a past date. - * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object, - * depending on the value of the ReturnDateType flag - */ - public static function EOMONTH($dateValue = 1, $adjustmentMonths = 0) - { - $dateValue = PHPExcel_Calculation_Functions::flattenSingleValue($dateValue); - $adjustmentMonths = PHPExcel_Calculation_Functions::flattenSingleValue($adjustmentMonths); - - if (!is_numeric($adjustmentMonths)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $adjustmentMonths = floor($adjustmentMonths); - - if (is_string($dateValue = self::getDateValue($dateValue))) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - // Execute function - $PHPDateObject = self::adjustDateByMonths($dateValue, $adjustmentMonths+1); - $adjustDays = (int) $PHPDateObject->format('d'); - $adjustDaysString = '-' . $adjustDays . ' days'; - $PHPDateObject->modify($adjustDaysString); - - switch (PHPExcel_Calculation_Functions::getReturnDateType()) { - case PHPExcel_Calculation_Functions::RETURNDATE_EXCEL: - return (float) PHPExcel_Shared_Date::PHPToExcel($PHPDateObject); - case PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC: - return (integer) PHPExcel_Shared_Date::ExcelToPHP(PHPExcel_Shared_Date::PHPToExcel($PHPDateObject)); - case PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT: - return $PHPDateObject; - } - } -} diff --git a/application/third_party/PHPExcel/Calculation/Engineering.php b/application/third_party/PHPExcel/Calculation/Engineering.php deleted file mode 100644 index 75e27847..00000000 --- a/application/third_party/PHPExcel/Calculation/Engineering.php +++ /dev/null @@ -1,2650 +0,0 @@ - array('Group' => 'Mass', 'Unit Name' => 'Gram', 'AllowPrefix' => true), - 'sg' => array('Group' => 'Mass', 'Unit Name' => 'Slug', 'AllowPrefix' => false), - 'lbm' => array('Group' => 'Mass', 'Unit Name' => 'Pound mass (avoirdupois)', 'AllowPrefix' => false), - 'u' => array('Group' => 'Mass', 'Unit Name' => 'U (atomic mass unit)', 'AllowPrefix' => true), - 'ozm' => array('Group' => 'Mass', 'Unit Name' => 'Ounce mass (avoirdupois)', 'AllowPrefix' => false), - 'm' => array('Group' => 'Distance', 'Unit Name' => 'Meter', 'AllowPrefix' => true), - 'mi' => array('Group' => 'Distance', 'Unit Name' => 'Statute mile', 'AllowPrefix' => false), - 'Nmi' => array('Group' => 'Distance', 'Unit Name' => 'Nautical mile', 'AllowPrefix' => false), - 'in' => array('Group' => 'Distance', 'Unit Name' => 'Inch', 'AllowPrefix' => false), - 'ft' => array('Group' => 'Distance', 'Unit Name' => 'Foot', 'AllowPrefix' => false), - 'yd' => array('Group' => 'Distance', 'Unit Name' => 'Yard', 'AllowPrefix' => false), - 'ang' => array('Group' => 'Distance', 'Unit Name' => 'Angstrom', 'AllowPrefix' => true), - 'Pica' => array('Group' => 'Distance', 'Unit Name' => 'Pica (1/72 in)', 'AllowPrefix' => false), - 'yr' => array('Group' => 'Time', 'Unit Name' => 'Year', 'AllowPrefix' => false), - 'day' => array('Group' => 'Time', 'Unit Name' => 'Day', 'AllowPrefix' => false), - 'hr' => array('Group' => 'Time', 'Unit Name' => 'Hour', 'AllowPrefix' => false), - 'mn' => array('Group' => 'Time', 'Unit Name' => 'Minute', 'AllowPrefix' => false), - 'sec' => array('Group' => 'Time', 'Unit Name' => 'Second', 'AllowPrefix' => true), - 'Pa' => array('Group' => 'Pressure', 'Unit Name' => 'Pascal', 'AllowPrefix' => true), - 'p' => array('Group' => 'Pressure', 'Unit Name' => 'Pascal', 'AllowPrefix' => true), - 'atm' => array('Group' => 'Pressure', 'Unit Name' => 'Atmosphere', 'AllowPrefix' => true), - 'at' => array('Group' => 'Pressure', 'Unit Name' => 'Atmosphere', 'AllowPrefix' => true), - 'mmHg' => array('Group' => 'Pressure', 'Unit Name' => 'mm of Mercury', 'AllowPrefix' => true), - 'N' => array('Group' => 'Force', 'Unit Name' => 'Newton', 'AllowPrefix' => true), - 'dyn' => array('Group' => 'Force', 'Unit Name' => 'Dyne', 'AllowPrefix' => true), - 'dy' => array('Group' => 'Force', 'Unit Name' => 'Dyne', 'AllowPrefix' => true), - 'lbf' => array('Group' => 'Force', 'Unit Name' => 'Pound force', 'AllowPrefix' => false), - 'J' => array('Group' => 'Energy', 'Unit Name' => 'Joule', 'AllowPrefix' => true), - 'e' => array('Group' => 'Energy', 'Unit Name' => 'Erg', 'AllowPrefix' => true), - 'c' => array('Group' => 'Energy', 'Unit Name' => 'Thermodynamic calorie', 'AllowPrefix' => true), - 'cal' => array('Group' => 'Energy', 'Unit Name' => 'IT calorie', 'AllowPrefix' => true), - 'eV' => array('Group' => 'Energy', 'Unit Name' => 'Electron volt', 'AllowPrefix' => true), - 'ev' => array('Group' => 'Energy', 'Unit Name' => 'Electron volt', 'AllowPrefix' => true), - 'HPh' => array('Group' => 'Energy', 'Unit Name' => 'Horsepower-hour', 'AllowPrefix' => false), - 'hh' => array('Group' => 'Energy', 'Unit Name' => 'Horsepower-hour', 'AllowPrefix' => false), - 'Wh' => array('Group' => 'Energy', 'Unit Name' => 'Watt-hour', 'AllowPrefix' => true), - 'wh' => array('Group' => 'Energy', 'Unit Name' => 'Watt-hour', 'AllowPrefix' => true), - 'flb' => array('Group' => 'Energy', 'Unit Name' => 'Foot-pound', 'AllowPrefix' => false), - 'BTU' => array('Group' => 'Energy', 'Unit Name' => 'BTU', 'AllowPrefix' => false), - 'btu' => array('Group' => 'Energy', 'Unit Name' => 'BTU', 'AllowPrefix' => false), - 'HP' => array('Group' => 'Power', 'Unit Name' => 'Horsepower', 'AllowPrefix' => false), - 'h' => array('Group' => 'Power', 'Unit Name' => 'Horsepower', 'AllowPrefix' => false), - 'W' => array('Group' => 'Power', 'Unit Name' => 'Watt', 'AllowPrefix' => true), - 'w' => array('Group' => 'Power', 'Unit Name' => 'Watt', 'AllowPrefix' => true), - 'T' => array('Group' => 'Magnetism', 'Unit Name' => 'Tesla', 'AllowPrefix' => true), - 'ga' => array('Group' => 'Magnetism', 'Unit Name' => 'Gauss', 'AllowPrefix' => true), - 'C' => array('Group' => 'Temperature', 'Unit Name' => 'Celsius', 'AllowPrefix' => false), - 'cel' => array('Group' => 'Temperature', 'Unit Name' => 'Celsius', 'AllowPrefix' => false), - 'F' => array('Group' => 'Temperature', 'Unit Name' => 'Fahrenheit', 'AllowPrefix' => false), - 'fah' => array('Group' => 'Temperature', 'Unit Name' => 'Fahrenheit', 'AllowPrefix' => false), - 'K' => array('Group' => 'Temperature', 'Unit Name' => 'Kelvin', 'AllowPrefix' => false), - 'kel' => array('Group' => 'Temperature', 'Unit Name' => 'Kelvin', 'AllowPrefix' => false), - 'tsp' => array('Group' => 'Liquid', 'Unit Name' => 'Teaspoon', 'AllowPrefix' => false), - 'tbs' => array('Group' => 'Liquid', 'Unit Name' => 'Tablespoon', 'AllowPrefix' => false), - 'oz' => array('Group' => 'Liquid', 'Unit Name' => 'Fluid Ounce', 'AllowPrefix' => false), - 'cup' => array('Group' => 'Liquid', 'Unit Name' => 'Cup', 'AllowPrefix' => false), - 'pt' => array('Group' => 'Liquid', 'Unit Name' => 'U.S. Pint', 'AllowPrefix' => false), - 'us_pt' => array('Group' => 'Liquid', 'Unit Name' => 'U.S. Pint', 'AllowPrefix' => false), - 'uk_pt' => array('Group' => 'Liquid', 'Unit Name' => 'U.K. Pint', 'AllowPrefix' => false), - 'qt' => array('Group' => 'Liquid', 'Unit Name' => 'Quart', 'AllowPrefix' => false), - 'gal' => array('Group' => 'Liquid', 'Unit Name' => 'Gallon', 'AllowPrefix' => false), - 'l' => array('Group' => 'Liquid', 'Unit Name' => 'Litre', 'AllowPrefix' => true), - 'lt' => array('Group' => 'Liquid', 'Unit Name' => 'Litre', 'AllowPrefix' => true), - ); - - /** - * Details of the Multiplier prefixes that can be used with Units of Measure in CONVERTUOM() - * - * @var mixed[] - */ - private static $conversionMultipliers = array( - 'Y' => array('multiplier' => 1E24, 'name' => 'yotta'), - 'Z' => array('multiplier' => 1E21, 'name' => 'zetta'), - 'E' => array('multiplier' => 1E18, 'name' => 'exa'), - 'P' => array('multiplier' => 1E15, 'name' => 'peta'), - 'T' => array('multiplier' => 1E12, 'name' => 'tera'), - 'G' => array('multiplier' => 1E9, 'name' => 'giga'), - 'M' => array('multiplier' => 1E6, 'name' => 'mega'), - 'k' => array('multiplier' => 1E3, 'name' => 'kilo'), - 'h' => array('multiplier' => 1E2, 'name' => 'hecto'), - 'e' => array('multiplier' => 1E1, 'name' => 'deka'), - 'd' => array('multiplier' => 1E-1, 'name' => 'deci'), - 'c' => array('multiplier' => 1E-2, 'name' => 'centi'), - 'm' => array('multiplier' => 1E-3, 'name' => 'milli'), - 'u' => array('multiplier' => 1E-6, 'name' => 'micro'), - 'n' => array('multiplier' => 1E-9, 'name' => 'nano'), - 'p' => array('multiplier' => 1E-12, 'name' => 'pico'), - 'f' => array('multiplier' => 1E-15, 'name' => 'femto'), - 'a' => array('multiplier' => 1E-18, 'name' => 'atto'), - 'z' => array('multiplier' => 1E-21, 'name' => 'zepto'), - 'y' => array('multiplier' => 1E-24, 'name' => 'yocto'), - ); - - /** - * Details of the Units of measure conversion factors, organised by group - * - * @var mixed[] - */ - private static $unitConversions = array( - 'Mass' => array( - 'g' => array( - 'g' => 1.0, - 'sg' => 6.85220500053478E-05, - 'lbm' => 2.20462291469134E-03, - 'u' => 6.02217000000000E+23, - 'ozm' => 3.52739718003627E-02, - ), - 'sg' => array( - 'g' => 1.45938424189287E+04, - 'sg' => 1.0, - 'lbm' => 3.21739194101647E+01, - 'u' => 8.78866000000000E+27, - 'ozm' => 5.14782785944229E+02, - ), - 'lbm' => array( - 'g' => 4.5359230974881148E+02, - 'sg' => 3.10810749306493E-02, - 'lbm' => 1.0, - 'u' => 2.73161000000000E+26, - 'ozm' => 1.60000023429410E+01, - ), - 'u' => array( - 'g' => 1.66053100460465E-24, - 'sg' => 1.13782988532950E-28, - 'lbm' => 3.66084470330684E-27, - 'u' => 1.0, - 'ozm' => 5.85735238300524E-26, - ), - 'ozm' => array( - 'g' => 2.83495152079732E+01, - 'sg' => 1.94256689870811E-03, - 'lbm' => 6.24999908478882E-02, - 'u' => 1.70725600000000E+25, - 'ozm' => 1.0, - ), - ), - 'Distance' => array( - 'm' => array( - 'm' => 1.0, - 'mi' => 6.21371192237334E-04, - 'Nmi' => 5.39956803455724E-04, - 'in' => 3.93700787401575E+01, - 'ft' => 3.28083989501312E+00, - 'yd' => 1.09361329797891E+00, - 'ang' => 1.00000000000000E+10, - 'Pica' => 2.83464566929116E+03, - ), - 'mi' => array( - 'm' => 1.60934400000000E+03, - 'mi' => 1.0, - 'Nmi' => 8.68976241900648E-01, - 'in' => 6.33600000000000E+04, - 'ft' => 5.28000000000000E+03, - 'yd' => 1.76000000000000E+03, - 'ang' => 1.60934400000000E+13, - 'Pica' => 4.56191999999971E+06, - ), - 'Nmi' => array( - 'm' => 1.85200000000000E+03, - 'mi' => 1.15077944802354E+00, - 'Nmi' => 1.0, - 'in' => 7.29133858267717E+04, - 'ft' => 6.07611548556430E+03, - 'yd' => 2.02537182785694E+03, - 'ang' => 1.85200000000000E+13, - 'Pica' => 5.24976377952723E+06, - ), - 'in' => array( - 'm' => 2.54000000000000E-02, - 'mi' => 1.57828282828283E-05, - 'Nmi' => 1.37149028077754E-05, - 'in' => 1.0, - 'ft' => 8.33333333333333E-02, - 'yd' => 2.77777777686643E-02, - 'ang' => 2.54000000000000E+08, - 'Pica' => 7.19999999999955E+01, - ), - 'ft' => array( - 'm' => 3.04800000000000E-01, - 'mi' => 1.89393939393939E-04, - 'Nmi' => 1.64578833693305E-04, - 'in' => 1.20000000000000E+01, - 'ft' => 1.0, - 'yd' => 3.33333333223972E-01, - 'ang' => 3.04800000000000E+09, - 'Pica' => 8.63999999999946E+02, - ), - 'yd' => array( - 'm' => 9.14400000300000E-01, - 'mi' => 5.68181818368230E-04, - 'Nmi' => 4.93736501241901E-04, - 'in' => 3.60000000118110E+01, - 'ft' => 3.00000000000000E+00, - 'yd' => 1.0, - 'ang' => 9.14400000300000E+09, - 'Pica' => 2.59200000085023E+03, - ), - 'ang' => array( - 'm' => 1.00000000000000E-10, - 'mi' => 6.21371192237334E-14, - 'Nmi' => 5.39956803455724E-14, - 'in' => 3.93700787401575E-09, - 'ft' => 3.28083989501312E-10, - 'yd' => 1.09361329797891E-10, - 'ang' => 1.0, - 'Pica' => 2.83464566929116E-07, - ), - 'Pica' => array( - 'm' => 3.52777777777800E-04, - 'mi' => 2.19205948372629E-07, - 'Nmi' => 1.90484761219114E-07, - 'in' => 1.38888888888898E-02, - 'ft' => 1.15740740740748E-03, - 'yd' => 3.85802469009251E-04, - 'ang' => 3.52777777777800E+06, - 'Pica' => 1.0, - ), - ), - 'Time' => array( - 'yr' => array( - 'yr' => 1.0, - 'day' => 365.25, - 'hr' => 8766.0, - 'mn' => 525960.0, - 'sec' => 31557600.0, - ), - 'day' => array( - 'yr' => 2.73785078713210E-03, - 'day' => 1.0, - 'hr' => 24.0, - 'mn' => 1440.0, - 'sec' => 86400.0, - ), - 'hr' => array( - 'yr' => 1.14077116130504E-04, - 'day' => 4.16666666666667E-02, - 'hr' => 1.0, - 'mn' => 60.0, - 'sec' => 3600.0, - ), - 'mn' => array( - 'yr' => 1.90128526884174E-06, - 'day' => 6.94444444444444E-04, - 'hr' => 1.66666666666667E-02, - 'mn' => 1.0, - 'sec' => 60.0, - ), - 'sec' => array( - 'yr' => 3.16880878140289E-08, - 'day' => 1.15740740740741E-05, - 'hr' => 2.77777777777778E-04, - 'mn' => 1.66666666666667E-02, - 'sec' => 1.0, - ), - ), - 'Pressure' => array( - 'Pa' => array( - 'Pa' => 1.0, - 'p' => 1.0, - 'atm' => 9.86923299998193E-06, - 'at' => 9.86923299998193E-06, - 'mmHg' => 7.50061707998627E-03, - ), - 'p' => array( - 'Pa' => 1.0, - 'p' => 1.0, - 'atm' => 9.86923299998193E-06, - 'at' => 9.86923299998193E-06, - 'mmHg' => 7.50061707998627E-03, - ), - 'atm' => array( - 'Pa' => 1.01324996583000E+05, - 'p' => 1.01324996583000E+05, - 'atm' => 1.0, - 'at' => 1.0, - 'mmHg' => 760.0, - ), - 'at' => array( - 'Pa' => 1.01324996583000E+05, - 'p' => 1.01324996583000E+05, - 'atm' => 1.0, - 'at' => 1.0, - 'mmHg' => 760.0, - ), - 'mmHg' => array( - 'Pa' => 1.33322363925000E+02, - 'p' => 1.33322363925000E+02, - 'atm' => 1.31578947368421E-03, - 'at' => 1.31578947368421E-03, - 'mmHg' => 1.0, - ), - ), - 'Force' => array( - 'N' => array( - 'N' => 1.0, - 'dyn' => 1.0E+5, - 'dy' => 1.0E+5, - 'lbf' => 2.24808923655339E-01, - ), - 'dyn' => array( - 'N' => 1.0E-5, - 'dyn' => 1.0, - 'dy' => 1.0, - 'lbf' => 2.24808923655339E-06, - ), - 'dy' => array( - 'N' => 1.0E-5, - 'dyn' => 1.0, - 'dy' => 1.0, - 'lbf' => 2.24808923655339E-06, - ), - 'lbf' => array( - 'N' => 4.448222, - 'dyn' => 4.448222E+5, - 'dy' => 4.448222E+5, - 'lbf' => 1.0, - ), - ), - 'Energy' => array( - 'J' => array( - 'J' => 1.0, - 'e' => 9.99999519343231E+06, - 'c' => 2.39006249473467E-01, - 'cal' => 2.38846190642017E-01, - 'eV' => 6.24145700000000E+18, - 'ev' => 6.24145700000000E+18, - 'HPh' => 3.72506430801000E-07, - 'hh' => 3.72506430801000E-07, - 'Wh' => 2.77777916238711E-04, - 'wh' => 2.77777916238711E-04, - 'flb' => 2.37304222192651E+01, - 'BTU' => 9.47815067349015E-04, - 'btu' => 9.47815067349015E-04, - ), - 'e' => array( - 'J' => 1.00000048065700E-07, - 'e' => 1.0, - 'c' => 2.39006364353494E-08, - 'cal' => 2.38846305445111E-08, - 'eV' => 6.24146000000000E+11, - 'ev' => 6.24146000000000E+11, - 'HPh' => 3.72506609848824E-14, - 'hh' => 3.72506609848824E-14, - 'Wh' => 2.77778049754611E-11, - 'wh' => 2.77778049754611E-11, - 'flb' => 2.37304336254586E-06, - 'BTU' => 9.47815522922962E-11, - 'btu' => 9.47815522922962E-11, - ), - 'c' => array( - 'J' => 4.18399101363672E+00, - 'e' => 4.18398900257312E+07, - 'c' => 1.0, - 'cal' => 9.99330315287563E-01, - 'eV' => 2.61142000000000E+19, - 'ev' => 2.61142000000000E+19, - 'HPh' => 1.55856355899327E-06, - 'hh' => 1.55856355899327E-06, - 'Wh' => 1.16222030532950E-03, - 'wh' => 1.16222030532950E-03, - 'flb' => 9.92878733152102E+01, - 'BTU' => 3.96564972437776E-03, - 'btu' => 3.96564972437776E-03, - ), - 'cal' => array( - 'J' => 4.18679484613929E+00, - 'e' => 4.18679283372801E+07, - 'c' => 1.00067013349059E+00, - 'cal' => 1.0, - 'eV' => 2.61317000000000E+19, - 'ev' => 2.61317000000000E+19, - 'HPh' => 1.55960800463137E-06, - 'hh' => 1.55960800463137E-06, - 'Wh' => 1.16299914807955E-03, - 'wh' => 1.16299914807955E-03, - 'flb' => 9.93544094443283E+01, - 'BTU' => 3.96830723907002E-03, - 'btu' => 3.96830723907002E-03, - ), - 'eV' => array( - 'J' => 1.60219000146921E-19, - 'e' => 1.60218923136574E-12, - 'c' => 3.82933423195043E-20, - 'cal' => 3.82676978535648E-20, - 'eV' => 1.0, - 'ev' => 1.0, - 'HPh' => 5.96826078912344E-26, - 'hh' => 5.96826078912344E-26, - 'Wh' => 4.45053000026614E-23, - 'wh' => 4.45053000026614E-23, - 'flb' => 3.80206452103492E-18, - 'BTU' => 1.51857982414846E-22, - 'btu' => 1.51857982414846E-22, - ), - 'ev' => array( - 'J' => 1.60219000146921E-19, - 'e' => 1.60218923136574E-12, - 'c' => 3.82933423195043E-20, - 'cal' => 3.82676978535648E-20, - 'eV' => 1.0, - 'ev' => 1.0, - 'HPh' => 5.96826078912344E-26, - 'hh' => 5.96826078912344E-26, - 'Wh' => 4.45053000026614E-23, - 'wh' => 4.45053000026614E-23, - 'flb' => 3.80206452103492E-18, - 'BTU' => 1.51857982414846E-22, - 'btu' => 1.51857982414846E-22, - ), - 'HPh' => array( - 'J' => 2.68451741316170E+06, - 'e' => 2.68451612283024E+13, - 'c' => 6.41616438565991E+05, - 'cal' => 6.41186757845835E+05, - 'eV' => 1.67553000000000E+25, - 'ev' => 1.67553000000000E+25, - 'HPh' => 1.0, - 'hh' => 1.0, - 'Wh' => 7.45699653134593E+02, - 'wh' => 7.45699653134593E+02, - 'flb' => 6.37047316692964E+07, - 'BTU' => 2.54442605275546E+03, - 'btu' => 2.54442605275546E+03, - ), - 'hh' => array( - 'J' => 2.68451741316170E+06, - 'e' => 2.68451612283024E+13, - 'c' => 6.41616438565991E+05, - 'cal' => 6.41186757845835E+05, - 'eV' => 1.67553000000000E+25, - 'ev' => 1.67553000000000E+25, - 'HPh' => 1.0, - 'hh' => 1.0, - 'Wh' => 7.45699653134593E+02, - 'wh' => 7.45699653134593E+02, - 'flb' => 6.37047316692964E+07, - 'BTU' => 2.54442605275546E+03, - 'btu' => 2.54442605275546E+03, - ), - 'Wh' => array( - 'J' => 3.59999820554720E+03, - 'e' => 3.59999647518369E+10, - 'c' => 8.60422069219046E+02, - 'cal' => 8.59845857713046E+02, - 'eV' => 2.24692340000000E+22, - 'ev' => 2.24692340000000E+22, - 'HPh' => 1.34102248243839E-03, - 'hh' => 1.34102248243839E-03, - 'Wh' => 1.0, - 'wh' => 1.0, - 'flb' => 8.54294774062316E+04, - 'BTU' => 3.41213254164705E+00, - 'btu' => 3.41213254164705E+00, - ), - 'wh' => array( - 'J' => 3.59999820554720E+03, - 'e' => 3.59999647518369E+10, - 'c' => 8.60422069219046E+02, - 'cal' => 8.59845857713046E+02, - 'eV' => 2.24692340000000E+22, - 'ev' => 2.24692340000000E+22, - 'HPh' => 1.34102248243839E-03, - 'hh' => 1.34102248243839E-03, - 'Wh' => 1.0, - 'wh' => 1.0, - 'flb' => 8.54294774062316E+04, - 'BTU' => 3.41213254164705E+00, - 'btu' => 3.41213254164705E+00, - ), - 'flb' => array( - 'J' => 4.21400003236424E-02, - 'e' => 4.21399800687660E+05, - 'c' => 1.00717234301644E-02, - 'cal' => 1.00649785509554E-02, - 'eV' => 2.63015000000000E+17, - 'ev' => 2.63015000000000E+17, - 'HPh' => 1.56974211145130E-08, - 'hh' => 1.56974211145130E-08, - 'Wh' => 1.17055614802000E-05, - 'wh' => 1.17055614802000E-05, - 'flb' => 1.0, - 'BTU' => 3.99409272448406E-05, - 'btu' => 3.99409272448406E-05, - ), - 'BTU' => array( - 'J' => 1.05505813786749E+03, - 'e' => 1.05505763074665E+10, - 'c' => 2.52165488508168E+02, - 'cal' => 2.51996617135510E+02, - 'eV' => 6.58510000000000E+21, - 'ev' => 6.58510000000000E+21, - 'HPh' => 3.93015941224568E-04, - 'hh' => 3.93015941224568E-04, - 'Wh' => 2.93071851047526E-01, - 'wh' => 2.93071851047526E-01, - 'flb' => 2.50369750774671E+04, - 'BTU' => 1.0, - 'btu' => 1.0, - ), - 'btu' => array( - 'J' => 1.05505813786749E+03, - 'e' => 1.05505763074665E+10, - 'c' => 2.52165488508168E+02, - 'cal' => 2.51996617135510E+02, - 'eV' => 6.58510000000000E+21, - 'ev' => 6.58510000000000E+21, - 'HPh' => 3.93015941224568E-04, - 'hh' => 3.93015941224568E-04, - 'Wh' => 2.93071851047526E-01, - 'wh' => 2.93071851047526E-01, - 'flb' => 2.50369750774671E+04, - 'BTU' => 1.0, - 'btu' => 1.0, - ), - ), - 'Power' => array( - 'HP' => array( - 'HP' => 1.0, - 'h' => 1.0, - 'W' => 7.45701000000000E+02, - 'w' => 7.45701000000000E+02, - ), - 'h' => array( - 'HP' => 1.0, - 'h' => 1.0, - 'W' => 7.45701000000000E+02, - 'w' => 7.45701000000000E+02, - ), - 'W' => array( - 'HP' => 1.34102006031908E-03, - 'h' => 1.34102006031908E-03, - 'W' => 1.0, - 'w' => 1.0, - ), - 'w' => array( - 'HP' => 1.34102006031908E-03, - 'h' => 1.34102006031908E-03, - 'W' => 1.0, - 'w' => 1.0, - ), - ), - 'Magnetism' => array( - 'T' => array( - 'T' => 1.0, - 'ga' => 10000.0, - ), - 'ga' => array( - 'T' => 0.0001, - 'ga' => 1.0, - ), - ), - 'Liquid' => array( - 'tsp' => array( - 'tsp' => 1.0, - 'tbs' => 3.33333333333333E-01, - 'oz' => 1.66666666666667E-01, - 'cup' => 2.08333333333333E-02, - 'pt' => 1.04166666666667E-02, - 'us_pt' => 1.04166666666667E-02, - 'uk_pt' => 8.67558516821960E-03, - 'qt' => 5.20833333333333E-03, - 'gal' => 1.30208333333333E-03, - 'l' => 4.92999408400710E-03, - 'lt' => 4.92999408400710E-03, - ), - 'tbs' => array( - 'tsp' => 3.00000000000000E+00, - 'tbs' => 1.0, - 'oz' => 5.00000000000000E-01, - 'cup' => 6.25000000000000E-02, - 'pt' => 3.12500000000000E-02, - 'us_pt' => 3.12500000000000E-02, - 'uk_pt' => 2.60267555046588E-02, - 'qt' => 1.56250000000000E-02, - 'gal' => 3.90625000000000E-03, - 'l' => 1.47899822520213E-02, - 'lt' => 1.47899822520213E-02, - ), - 'oz' => array( - 'tsp' => 6.00000000000000E+00, - 'tbs' => 2.00000000000000E+00, - 'oz' => 1.0, - 'cup' => 1.25000000000000E-01, - 'pt' => 6.25000000000000E-02, - 'us_pt' => 6.25000000000000E-02, - 'uk_pt' => 5.20535110093176E-02, - 'qt' => 3.12500000000000E-02, - 'gal' => 7.81250000000000E-03, - 'l' => 2.95799645040426E-02, - 'lt' => 2.95799645040426E-02, - ), - 'cup' => array( - 'tsp' => 4.80000000000000E+01, - 'tbs' => 1.60000000000000E+01, - 'oz' => 8.00000000000000E+00, - 'cup' => 1.0, - 'pt' => 5.00000000000000E-01, - 'us_pt' => 5.00000000000000E-01, - 'uk_pt' => 4.16428088074541E-01, - 'qt' => 2.50000000000000E-01, - 'gal' => 6.25000000000000E-02, - 'l' => 2.36639716032341E-01, - 'lt' => 2.36639716032341E-01, - ), - 'pt' => array( - 'tsp' => 9.60000000000000E+01, - 'tbs' => 3.20000000000000E+01, - 'oz' => 1.60000000000000E+01, - 'cup' => 2.00000000000000E+00, - 'pt' => 1.0, - 'us_pt' => 1.0, - 'uk_pt' => 8.32856176149081E-01, - 'qt' => 5.00000000000000E-01, - 'gal' => 1.25000000000000E-01, - 'l' => 4.73279432064682E-01, - 'lt' => 4.73279432064682E-01, - ), - 'us_pt' => array( - 'tsp' => 9.60000000000000E+01, - 'tbs' => 3.20000000000000E+01, - 'oz' => 1.60000000000000E+01, - 'cup' => 2.00000000000000E+00, - 'pt' => 1.0, - 'us_pt' => 1.0, - 'uk_pt' => 8.32856176149081E-01, - 'qt' => 5.00000000000000E-01, - 'gal' => 1.25000000000000E-01, - 'l' => 4.73279432064682E-01, - 'lt' => 4.73279432064682E-01, - ), - 'uk_pt' => array( - 'tsp' => 1.15266000000000E+02, - 'tbs' => 3.84220000000000E+01, - 'oz' => 1.92110000000000E+01, - 'cup' => 2.40137500000000E+00, - 'pt' => 1.20068750000000E+00, - 'us_pt' => 1.20068750000000E+00, - 'uk_pt' => 1.0, - 'qt' => 6.00343750000000E-01, - 'gal' => 1.50085937500000E-01, - 'l' => 5.68260698087162E-01, - 'lt' => 5.68260698087162E-01, - ), - 'qt' => array( - 'tsp' => 1.92000000000000E+02, - 'tbs' => 6.40000000000000E+01, - 'oz' => 3.20000000000000E+01, - 'cup' => 4.00000000000000E+00, - 'pt' => 2.00000000000000E+00, - 'us_pt' => 2.00000000000000E+00, - 'uk_pt' => 1.66571235229816E+00, - 'qt' => 1.0, - 'gal' => 2.50000000000000E-01, - 'l' => 9.46558864129363E-01, - 'lt' => 9.46558864129363E-01, - ), - 'gal' => array( - 'tsp' => 7.68000000000000E+02, - 'tbs' => 2.56000000000000E+02, - 'oz' => 1.28000000000000E+02, - 'cup' => 1.60000000000000E+01, - 'pt' => 8.00000000000000E+00, - 'us_pt' => 8.00000000000000E+00, - 'uk_pt' => 6.66284940919265E+00, - 'qt' => 4.00000000000000E+00, - 'gal' => 1.0, - 'l' => 3.78623545651745E+00, - 'lt' => 3.78623545651745E+00, - ), - 'l' => array( - 'tsp' => 2.02840000000000E+02, - 'tbs' => 6.76133333333333E+01, - 'oz' => 3.38066666666667E+01, - 'cup' => 4.22583333333333E+00, - 'pt' => 2.11291666666667E+00, - 'us_pt' => 2.11291666666667E+00, - 'uk_pt' => 1.75975569552166E+00, - 'qt' => 1.05645833333333E+00, - 'gal' => 2.64114583333333E-01, - 'l' => 1.0, - 'lt' => 1.0, - ), - 'lt' => array( - 'tsp' => 2.02840000000000E+02, - 'tbs' => 6.76133333333333E+01, - 'oz' => 3.38066666666667E+01, - 'cup' => 4.22583333333333E+00, - 'pt' => 2.11291666666667E+00, - 'us_pt' => 2.11291666666667E+00, - 'uk_pt' => 1.75975569552166E+00, - 'qt' => 1.05645833333333E+00, - 'gal' => 2.64114583333333E-01, - 'l' => 1.0, - 'lt' => 1.0, - ), - ), - ); - - - /** - * parseComplex - * - * Parses a complex number into its real and imaginary parts, and an I or J suffix - * - * @param string $complexNumber The complex number - * @return string[] Indexed on "real", "imaginary" and "suffix" - */ - public static function parseComplex($complexNumber) - { - $workString = (string) $complexNumber; - - $realNumber = $imaginary = 0; - // Extract the suffix, if there is one - $suffix = substr($workString, -1); - if (!is_numeric($suffix)) { - $workString = substr($workString, 0, -1); - } else { - $suffix = ''; - } - - // Split the input into its Real and Imaginary components - $leadingSign = 0; - if (strlen($workString) > 0) { - $leadingSign = (($workString{0} == '+') || ($workString{0} == '-')) ? 1 : 0; - } - $power = ''; - $realNumber = strtok($workString, '+-'); - if (strtoupper(substr($realNumber, -1)) == 'E') { - $power = strtok('+-'); - ++$leadingSign; - } - - $realNumber = substr($workString, 0, strlen($realNumber)+strlen($power)+$leadingSign); - - if ($suffix != '') { - $imaginary = substr($workString, strlen($realNumber)); - - if (($imaginary == '') && (($realNumber == '') || ($realNumber == '+') || ($realNumber == '-'))) { - $imaginary = $realNumber.'1'; - $realNumber = '0'; - } elseif ($imaginary == '') { - $imaginary = $realNumber; - $realNumber = '0'; - } elseif (($imaginary == '+') || ($imaginary == '-')) { - $imaginary .= '1'; - } - } - - return array( - 'real' => $realNumber, - 'imaginary' => $imaginary, - 'suffix' => $suffix - ); - } - - - /** - * Cleans the leading characters in a complex number string - * - * @param string $complexNumber The complex number to clean - * @return string The "cleaned" complex number - */ - private static function cleanComplex($complexNumber) - { - if ($complexNumber{0} == '+') { - $complexNumber = substr($complexNumber, 1); - } - if ($complexNumber{0} == '0') { - $complexNumber = substr($complexNumber, 1); - } - if ($complexNumber{0} == '.') { - $complexNumber = '0'.$complexNumber; - } - if ($complexNumber{0} == '+') { - $complexNumber = substr($complexNumber, 1); - } - return $complexNumber; - } - - /** - * Formats a number base string value with leading zeroes - * - * @param string $xVal The "number" to pad - * @param integer $places The length that we want to pad this value - * @return string The padded "number" - */ - private static function nbrConversionFormat($xVal, $places) - { - if (!is_null($places)) { - if (strlen($xVal) <= $places) { - return substr(str_pad($xVal, $places, '0', STR_PAD_LEFT), -10); - } else { - return PHPExcel_Calculation_Functions::NaN(); - } - } - - return substr($xVal, -10); - } - - /** - * BESSELI - * - * Returns the modified Bessel function In(x), which is equivalent to the Bessel function evaluated - * for purely imaginary arguments - * - * Excel Function: - * BESSELI(x,ord) - * - * @access public - * @category Engineering Functions - * @param float $x The value at which to evaluate the function. - * If x is nonnumeric, BESSELI returns the #VALUE! error value. - * @param integer $ord The order of the Bessel function. - * If ord is not an integer, it is truncated. - * If $ord is nonnumeric, BESSELI returns the #VALUE! error value. - * If $ord < 0, BESSELI returns the #NUM! error value. - * @return float - * - */ - public static function BESSELI($x, $ord) - { - $x = (is_null($x)) ? 0.0 : PHPExcel_Calculation_Functions::flattenSingleValue($x); - $ord = (is_null($ord)) ? 0.0 : PHPExcel_Calculation_Functions::flattenSingleValue($ord); - - if ((is_numeric($x)) && (is_numeric($ord))) { - $ord = floor($ord); - if ($ord < 0) { - return PHPExcel_Calculation_Functions::NaN(); - } - - if (abs($x) <= 30) { - $fResult = $fTerm = pow($x / 2, $ord) / PHPExcel_Calculation_MathTrig::FACT($ord); - $ordK = 1; - $fSqrX = ($x * $x) / 4; - do { - $fTerm *= $fSqrX; - $fTerm /= ($ordK * ($ordK + $ord)); - $fResult += $fTerm; - } while ((abs($fTerm) > 1e-12) && (++$ordK < 100)); - } else { - $f_2_PI = 2 * M_PI; - - $fXAbs = abs($x); - $fResult = exp($fXAbs) / sqrt($f_2_PI * $fXAbs); - if (($ord & 1) && ($x < 0)) { - $fResult = -$fResult; - } - } - return (is_nan($fResult)) ? PHPExcel_Calculation_Functions::NaN() : $fResult; - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * BESSELJ - * - * Returns the Bessel function - * - * Excel Function: - * BESSELJ(x,ord) - * - * @access public - * @category Engineering Functions - * @param float $x The value at which to evaluate the function. - * If x is nonnumeric, BESSELJ returns the #VALUE! error value. - * @param integer $ord The order of the Bessel function. If n is not an integer, it is truncated. - * If $ord is nonnumeric, BESSELJ returns the #VALUE! error value. - * If $ord < 0, BESSELJ returns the #NUM! error value. - * @return float - * - */ - public static function BESSELJ($x, $ord) - { - $x = (is_null($x)) ? 0.0 : PHPExcel_Calculation_Functions::flattenSingleValue($x); - $ord = (is_null($ord)) ? 0.0 : PHPExcel_Calculation_Functions::flattenSingleValue($ord); - - if ((is_numeric($x)) && (is_numeric($ord))) { - $ord = floor($ord); - if ($ord < 0) { - return PHPExcel_Calculation_Functions::NaN(); - } - - $fResult = 0; - if (abs($x) <= 30) { - $fResult = $fTerm = pow($x / 2, $ord) / PHPExcel_Calculation_MathTrig::FACT($ord); - $ordK = 1; - $fSqrX = ($x * $x) / -4; - do { - $fTerm *= $fSqrX; - $fTerm /= ($ordK * ($ordK + $ord)); - $fResult += $fTerm; - } while ((abs($fTerm) > 1e-12) && (++$ordK < 100)); - } else { - $f_PI_DIV_2 = M_PI / 2; - $f_PI_DIV_4 = M_PI / 4; - - $fXAbs = abs($x); - $fResult = sqrt(M_2DIVPI / $fXAbs) * cos($fXAbs - $ord * $f_PI_DIV_2 - $f_PI_DIV_4); - if (($ord & 1) && ($x < 0)) { - $fResult = -$fResult; - } - } - return (is_nan($fResult)) ? PHPExcel_Calculation_Functions::NaN() : $fResult; - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - private static function besselK0($fNum) - { - if ($fNum <= 2) { - $fNum2 = $fNum * 0.5; - $y = ($fNum2 * $fNum2); - $fRet = -log($fNum2) * self::BESSELI($fNum, 0) + - (-0.57721566 + $y * (0.42278420 + $y * (0.23069756 + $y * (0.3488590e-1 + $y * (0.262698e-2 + $y * - (0.10750e-3 + $y * 0.74e-5)))))); - } else { - $y = 2 / $fNum; - $fRet = exp(-$fNum) / sqrt($fNum) * - (1.25331414 + $y * (-0.7832358e-1 + $y * (0.2189568e-1 + $y * (-0.1062446e-1 + $y * - (0.587872e-2 + $y * (-0.251540e-2 + $y * 0.53208e-3)))))); - } - return $fRet; - } - - - private static function besselK1($fNum) - { - if ($fNum <= 2) { - $fNum2 = $fNum * 0.5; - $y = ($fNum2 * $fNum2); - $fRet = log($fNum2) * self::BESSELI($fNum, 1) + - (1 + $y * (0.15443144 + $y * (-0.67278579 + $y * (-0.18156897 + $y * (-0.1919402e-1 + $y * - (-0.110404e-2 + $y * (-0.4686e-4))))))) / $fNum; - } else { - $y = 2 / $fNum; - $fRet = exp(-$fNum) / sqrt($fNum) * - (1.25331414 + $y * (0.23498619 + $y * (-0.3655620e-1 + $y * (0.1504268e-1 + $y * (-0.780353e-2 + $y * - (0.325614e-2 + $y * (-0.68245e-3))))))); - } - return $fRet; - } - - - /** - * BESSELK - * - * Returns the modified Bessel function Kn(x), which is equivalent to the Bessel functions evaluated - * for purely imaginary arguments. - * - * Excel Function: - * BESSELK(x,ord) - * - * @access public - * @category Engineering Functions - * @param float $x The value at which to evaluate the function. - * If x is nonnumeric, BESSELK returns the #VALUE! error value. - * @param integer $ord The order of the Bessel function. If n is not an integer, it is truncated. - * If $ord is nonnumeric, BESSELK returns the #VALUE! error value. - * If $ord < 0, BESSELK returns the #NUM! error value. - * @return float - * - */ - public static function BESSELK($x, $ord) - { - $x = (is_null($x)) ? 0.0 : PHPExcel_Calculation_Functions::flattenSingleValue($x); - $ord = (is_null($ord)) ? 0.0 : PHPExcel_Calculation_Functions::flattenSingleValue($ord); - - if ((is_numeric($x)) && (is_numeric($ord))) { - if (($ord < 0) || ($x == 0.0)) { - return PHPExcel_Calculation_Functions::NaN(); - } - - switch (floor($ord)) { - case 0: - return self::besselK0($x); - case 1: - return self::besselK1($x); - default: - $fTox = 2 / $x; - $fBkm = self::besselK0($x); - $fBk = self::besselK1($x); - for ($n = 1; $n < $ord; ++$n) { - $fBkp = $fBkm + $n * $fTox * $fBk; - $fBkm = $fBk; - $fBk = $fBkp; - } - } - return (is_nan($fBk)) ? PHPExcel_Calculation_Functions::NaN() : $fBk; - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - private static function besselY0($fNum) - { - if ($fNum < 8.0) { - $y = ($fNum * $fNum); - $f1 = -2957821389.0 + $y * (7062834065.0 + $y * (-512359803.6 + $y * (10879881.29 + $y * (-86327.92757 + $y * 228.4622733)))); - $f2 = 40076544269.0 + $y * (745249964.8 + $y * (7189466.438 + $y * (47447.26470 + $y * (226.1030244 + $y)))); - $fRet = $f1 / $f2 + 0.636619772 * self::BESSELJ($fNum, 0) * log($fNum); - } else { - $z = 8.0 / $fNum; - $y = ($z * $z); - $xx = $fNum - 0.785398164; - $f1 = 1 + $y * (-0.1098628627e-2 + $y * (0.2734510407e-4 + $y * (-0.2073370639e-5 + $y * 0.2093887211e-6))); - $f2 = -0.1562499995e-1 + $y * (0.1430488765e-3 + $y * (-0.6911147651e-5 + $y * (0.7621095161e-6 + $y * (-0.934945152e-7)))); - $fRet = sqrt(0.636619772 / $fNum) * (sin($xx) * $f1 + $z * cos($xx) * $f2); - } - return $fRet; - } - - - private static function besselY1($fNum) - { - if ($fNum < 8.0) { - $y = ($fNum * $fNum); - $f1 = $fNum * (-0.4900604943e13 + $y * (0.1275274390e13 + $y * (-0.5153438139e11 + $y * (0.7349264551e9 + $y * - (-0.4237922726e7 + $y * 0.8511937935e4))))); - $f2 = 0.2499580570e14 + $y * (0.4244419664e12 + $y * (0.3733650367e10 + $y * (0.2245904002e8 + $y * - (0.1020426050e6 + $y * (0.3549632885e3 + $y))))); - $fRet = $f1 / $f2 + 0.636619772 * ( self::BESSELJ($fNum, 1) * log($fNum) - 1 / $fNum); - } else { - $fRet = sqrt(0.636619772 / $fNum) * sin($fNum - 2.356194491); - } - return $fRet; - } - - - /** - * BESSELY - * - * Returns the Bessel function, which is also called the Weber function or the Neumann function. - * - * Excel Function: - * BESSELY(x,ord) - * - * @access public - * @category Engineering Functions - * @param float $x The value at which to evaluate the function. - * If x is nonnumeric, BESSELK returns the #VALUE! error value. - * @param integer $ord The order of the Bessel function. If n is not an integer, it is truncated. - * If $ord is nonnumeric, BESSELK returns the #VALUE! error value. - * If $ord < 0, BESSELK returns the #NUM! error value. - * - * @return float - */ - public static function BESSELY($x, $ord) - { - $x = (is_null($x)) ? 0.0 : PHPExcel_Calculation_Functions::flattenSingleValue($x); - $ord = (is_null($ord)) ? 0.0 : PHPExcel_Calculation_Functions::flattenSingleValue($ord); - - if ((is_numeric($x)) && (is_numeric($ord))) { - if (($ord < 0) || ($x == 0.0)) { - return PHPExcel_Calculation_Functions::NaN(); - } - - switch (floor($ord)) { - case 0: - return self::besselY0($x); - case 1: - return self::besselY1($x); - default: - $fTox = 2 / $x; - $fBym = self::besselY0($x); - $fBy = self::besselY1($x); - for ($n = 1; $n < $ord; ++$n) { - $fByp = $n * $fTox * $fBy - $fBym; - $fBym = $fBy; - $fBy = $fByp; - } - } - return (is_nan($fBy)) ? PHPExcel_Calculation_Functions::NaN() : $fBy; - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * BINTODEC - * - * Return a binary value as decimal. - * - * Excel Function: - * BIN2DEC(x) - * - * @access public - * @category Engineering Functions - * @param string $x The binary number (as a string) that you want to convert. The number - * cannot contain more than 10 characters (10 bits). The most significant - * bit of number is the sign bit. The remaining 9 bits are magnitude bits. - * Negative numbers are represented using two's-complement notation. - * If number is not a valid binary number, or if number contains more than - * 10 characters (10 bits), BIN2DEC returns the #NUM! error value. - * @return string - */ - public static function BINTODEC($x) - { - $x = PHPExcel_Calculation_Functions::flattenSingleValue($x); - - if (is_bool($x)) { - if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) { - $x = (int) $x; - } else { - return PHPExcel_Calculation_Functions::VALUE(); - } - } - if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC) { - $x = floor($x); - } - $x = (string) $x; - if (strlen($x) > preg_match_all('/[01]/', $x, $out)) { - return PHPExcel_Calculation_Functions::NaN(); - } - if (strlen($x) > 10) { - return PHPExcel_Calculation_Functions::NaN(); - } elseif (strlen($x) == 10) { - // Two's Complement - $x = substr($x, -9); - return '-'.(512-bindec($x)); - } - return bindec($x); - } - - - /** - * BINTOHEX - * - * Return a binary value as hex. - * - * Excel Function: - * BIN2HEX(x[,places]) - * - * @access public - * @category Engineering Functions - * @param string $x The binary number (as a string) that you want to convert. The number - * cannot contain more than 10 characters (10 bits). The most significant - * bit of number is the sign bit. The remaining 9 bits are magnitude bits. - * Negative numbers are represented using two's-complement notation. - * If number is not a valid binary number, or if number contains more than - * 10 characters (10 bits), BIN2HEX returns the #NUM! error value. - * @param integer $places The number of characters to use. If places is omitted, BIN2HEX uses the - * minimum number of characters necessary. Places is useful for padding the - * return value with leading 0s (zeros). - * If places is not an integer, it is truncated. - * If places is nonnumeric, BIN2HEX returns the #VALUE! error value. - * If places is negative, BIN2HEX returns the #NUM! error value. - * @return string - */ - public static function BINTOHEX($x, $places = null) - { - $x = PHPExcel_Calculation_Functions::flattenSingleValue($x); - $places = PHPExcel_Calculation_Functions::flattenSingleValue($places); - - if (is_bool($x)) { - if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) { - $x = (int) $x; - } else { - return PHPExcel_Calculation_Functions::VALUE(); - } - } - if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC) { - $x = floor($x); - } - $x = (string) $x; - if (strlen($x) > preg_match_all('/[01]/', $x, $out)) { - return PHPExcel_Calculation_Functions::NaN(); - } - if (strlen($x) > 10) { - return PHPExcel_Calculation_Functions::NaN(); - } elseif (strlen($x) == 10) { - // Two's Complement - return str_repeat('F', 8).substr(strtoupper(dechex(bindec(substr($x, -9)))), -2); - } - $hexVal = (string) strtoupper(dechex(bindec($x))); - - return self::nbrConversionFormat($hexVal, $places); - } - - - /** - * BINTOOCT - * - * Return a binary value as octal. - * - * Excel Function: - * BIN2OCT(x[,places]) - * - * @access public - * @category Engineering Functions - * @param string $x The binary number (as a string) that you want to convert. The number - * cannot contain more than 10 characters (10 bits). The most significant - * bit of number is the sign bit. The remaining 9 bits are magnitude bits. - * Negative numbers are represented using two's-complement notation. - * If number is not a valid binary number, or if number contains more than - * 10 characters (10 bits), BIN2OCT returns the #NUM! error value. - * @param integer $places The number of characters to use. If places is omitted, BIN2OCT uses the - * minimum number of characters necessary. Places is useful for padding the - * return value with leading 0s (zeros). - * If places is not an integer, it is truncated. - * If places is nonnumeric, BIN2OCT returns the #VALUE! error value. - * If places is negative, BIN2OCT returns the #NUM! error value. - * @return string - */ - public static function BINTOOCT($x, $places = null) - { - $x = PHPExcel_Calculation_Functions::flattenSingleValue($x); - $places = PHPExcel_Calculation_Functions::flattenSingleValue($places); - - if (is_bool($x)) { - if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) { - $x = (int) $x; - } else { - return PHPExcel_Calculation_Functions::VALUE(); - } - } - if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC) { - $x = floor($x); - } - $x = (string) $x; - if (strlen($x) > preg_match_all('/[01]/', $x, $out)) { - return PHPExcel_Calculation_Functions::NaN(); - } - if (strlen($x) > 10) { - return PHPExcel_Calculation_Functions::NaN(); - } elseif (strlen($x) == 10) { - // Two's Complement - return str_repeat('7', 7).substr(strtoupper(decoct(bindec(substr($x, -9)))), -3); - } - $octVal = (string) decoct(bindec($x)); - - return self::nbrConversionFormat($octVal, $places); - } - - - /** - * DECTOBIN - * - * Return a decimal value as binary. - * - * Excel Function: - * DEC2BIN(x[,places]) - * - * @access public - * @category Engineering Functions - * @param string $x The decimal integer you want to convert. If number is negative, - * valid place values are ignored and DEC2BIN returns a 10-character - * (10-bit) binary number in which the most significant bit is the sign - * bit. The remaining 9 bits are magnitude bits. Negative numbers are - * represented using two's-complement notation. - * If number < -512 or if number > 511, DEC2BIN returns the #NUM! error - * value. - * If number is nonnumeric, DEC2BIN returns the #VALUE! error value. - * If DEC2BIN requires more than places characters, it returns the #NUM! - * error value. - * @param integer $places The number of characters to use. If places is omitted, DEC2BIN uses - * the minimum number of characters necessary. Places is useful for - * padding the return value with leading 0s (zeros). - * If places is not an integer, it is truncated. - * If places is nonnumeric, DEC2BIN returns the #VALUE! error value. - * If places is zero or negative, DEC2BIN returns the #NUM! error value. - * @return string - */ - public static function DECTOBIN($x, $places = null) - { - $x = PHPExcel_Calculation_Functions::flattenSingleValue($x); - $places = PHPExcel_Calculation_Functions::flattenSingleValue($places); - - if (is_bool($x)) { - if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) { - $x = (int) $x; - } else { - return PHPExcel_Calculation_Functions::VALUE(); - } - } - $x = (string) $x; - if (strlen($x) > preg_match_all('/[-0123456789.]/', $x, $out)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $x = (string) floor($x); - $r = decbin($x); - if (strlen($r) == 32) { - // Two's Complement - $r = substr($r, -10); - } elseif (strlen($r) > 11) { - return PHPExcel_Calculation_Functions::NaN(); - } - - return self::nbrConversionFormat($r, $places); - } - - - /** - * DECTOHEX - * - * Return a decimal value as hex. - * - * Excel Function: - * DEC2HEX(x[,places]) - * - * @access public - * @category Engineering Functions - * @param string $x The decimal integer you want to convert. If number is negative, - * places is ignored and DEC2HEX returns a 10-character (40-bit) - * hexadecimal number in which the most significant bit is the sign - * bit. The remaining 39 bits are magnitude bits. Negative numbers - * are represented using two's-complement notation. - * If number < -549,755,813,888 or if number > 549,755,813,887, - * DEC2HEX returns the #NUM! error value. - * If number is nonnumeric, DEC2HEX returns the #VALUE! error value. - * If DEC2HEX requires more than places characters, it returns the - * #NUM! error value. - * @param integer $places The number of characters to use. If places is omitted, DEC2HEX uses - * the minimum number of characters necessary. Places is useful for - * padding the return value with leading 0s (zeros). - * If places is not an integer, it is truncated. - * If places is nonnumeric, DEC2HEX returns the #VALUE! error value. - * If places is zero or negative, DEC2HEX returns the #NUM! error value. - * @return string - */ - public static function DECTOHEX($x, $places = null) - { - $x = PHPExcel_Calculation_Functions::flattenSingleValue($x); - $places = PHPExcel_Calculation_Functions::flattenSingleValue($places); - - if (is_bool($x)) { - if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) { - $x = (int) $x; - } else { - return PHPExcel_Calculation_Functions::VALUE(); - } - } - $x = (string) $x; - if (strlen($x) > preg_match_all('/[-0123456789.]/', $x, $out)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $x = (string) floor($x); - $r = strtoupper(dechex($x)); - if (strlen($r) == 8) { - // Two's Complement - $r = 'FF'.$r; - } - - return self::nbrConversionFormat($r, $places); - } - - - /** - * DECTOOCT - * - * Return an decimal value as octal. - * - * Excel Function: - * DEC2OCT(x[,places]) - * - * @access public - * @category Engineering Functions - * @param string $x The decimal integer you want to convert. If number is negative, - * places is ignored and DEC2OCT returns a 10-character (30-bit) - * octal number in which the most significant bit is the sign bit. - * The remaining 29 bits are magnitude bits. Negative numbers are - * represented using two's-complement notation. - * If number < -536,870,912 or if number > 536,870,911, DEC2OCT - * returns the #NUM! error value. - * If number is nonnumeric, DEC2OCT returns the #VALUE! error value. - * If DEC2OCT requires more than places characters, it returns the - * #NUM! error value. - * @param integer $places The number of characters to use. If places is omitted, DEC2OCT uses - * the minimum number of characters necessary. Places is useful for - * padding the return value with leading 0s (zeros). - * If places is not an integer, it is truncated. - * If places is nonnumeric, DEC2OCT returns the #VALUE! error value. - * If places is zero or negative, DEC2OCT returns the #NUM! error value. - * @return string - */ - public static function DECTOOCT($x, $places = null) - { - $x = PHPExcel_Calculation_Functions::flattenSingleValue($x); - $places = PHPExcel_Calculation_Functions::flattenSingleValue($places); - - if (is_bool($x)) { - if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) { - $x = (int) $x; - } else { - return PHPExcel_Calculation_Functions::VALUE(); - } - } - $x = (string) $x; - if (strlen($x) > preg_match_all('/[-0123456789.]/', $x, $out)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $x = (string) floor($x); - $r = decoct($x); - if (strlen($r) == 11) { - // Two's Complement - $r = substr($r, -10); - } - - return self::nbrConversionFormat($r, $places); - } - - - /** - * HEXTOBIN - * - * Return a hex value as binary. - * - * Excel Function: - * HEX2BIN(x[,places]) - * - * @access public - * @category Engineering Functions - * @param string $x the hexadecimal number you want to convert. Number cannot - * contain more than 10 characters. The most significant bit of - * number is the sign bit (40th bit from the right). The remaining - * 9 bits are magnitude bits. Negative numbers are represented - * using two's-complement notation. - * If number is negative, HEX2BIN ignores places and returns a - * 10-character binary number. - * If number is negative, it cannot be less than FFFFFFFE00, and - * if number is positive, it cannot be greater than 1FF. - * If number is not a valid hexadecimal number, HEX2BIN returns - * the #NUM! error value. - * If HEX2BIN requires more than places characters, it returns - * the #NUM! error value. - * @param integer $places The number of characters to use. If places is omitted, - * HEX2BIN uses the minimum number of characters necessary. Places - * is useful for padding the return value with leading 0s (zeros). - * If places is not an integer, it is truncated. - * If places is nonnumeric, HEX2BIN returns the #VALUE! error value. - * If places is negative, HEX2BIN returns the #NUM! error value. - * @return string - */ - public static function HEXTOBIN($x, $places = null) - { - $x = PHPExcel_Calculation_Functions::flattenSingleValue($x); - $places = PHPExcel_Calculation_Functions::flattenSingleValue($places); - - if (is_bool($x)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $x = (string) $x; - if (strlen($x) > preg_match_all('/[0123456789ABCDEF]/', strtoupper($x), $out)) { - return PHPExcel_Calculation_Functions::NaN(); - } - $binVal = decbin(hexdec($x)); - - return substr(self::nbrConversionFormat($binVal, $places), -10); - } - - - /** - * HEXTODEC - * - * Return a hex value as decimal. - * - * Excel Function: - * HEX2DEC(x) - * - * @access public - * @category Engineering Functions - * @param string $x The hexadecimal number you want to convert. This number cannot - * contain more than 10 characters (40 bits). The most significant - * bit of number is the sign bit. The remaining 39 bits are magnitude - * bits. Negative numbers are represented using two's-complement - * notation. - * If number is not a valid hexadecimal number, HEX2DEC returns the - * #NUM! error value. - * @return string - */ - public static function HEXTODEC($x) - { - $x = PHPExcel_Calculation_Functions::flattenSingleValue($x); - - if (is_bool($x)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $x = (string) $x; - if (strlen($x) > preg_match_all('/[0123456789ABCDEF]/', strtoupper($x), $out)) { - return PHPExcel_Calculation_Functions::NaN(); - } - return hexdec($x); - } - - - /** - * HEXTOOCT - * - * Return a hex value as octal. - * - * Excel Function: - * HEX2OCT(x[,places]) - * - * @access public - * @category Engineering Functions - * @param string $x The hexadecimal number you want to convert. Number cannot - * contain more than 10 characters. The most significant bit of - * number is the sign bit. The remaining 39 bits are magnitude - * bits. Negative numbers are represented using two's-complement - * notation. - * If number is negative, HEX2OCT ignores places and returns a - * 10-character octal number. - * If number is negative, it cannot be less than FFE0000000, and - * if number is positive, it cannot be greater than 1FFFFFFF. - * If number is not a valid hexadecimal number, HEX2OCT returns - * the #NUM! error value. - * If HEX2OCT requires more than places characters, it returns - * the #NUM! error value. - * @param integer $places The number of characters to use. If places is omitted, HEX2OCT - * uses the minimum number of characters necessary. Places is - * useful for padding the return value with leading 0s (zeros). - * If places is not an integer, it is truncated. - * If places is nonnumeric, HEX2OCT returns the #VALUE! error - * value. - * If places is negative, HEX2OCT returns the #NUM! error value. - * @return string - */ - public static function HEXTOOCT($x, $places = null) - { - $x = PHPExcel_Calculation_Functions::flattenSingleValue($x); - $places = PHPExcel_Calculation_Functions::flattenSingleValue($places); - - if (is_bool($x)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $x = (string) $x; - if (strlen($x) > preg_match_all('/[0123456789ABCDEF]/', strtoupper($x), $out)) { - return PHPExcel_Calculation_Functions::NaN(); - } - $octVal = decoct(hexdec($x)); - - return self::nbrConversionFormat($octVal, $places); - } // function HEXTOOCT() - - - /** - * OCTTOBIN - * - * Return an octal value as binary. - * - * Excel Function: - * OCT2BIN(x[,places]) - * - * @access public - * @category Engineering Functions - * @param string $x The octal number you want to convert. Number may not - * contain more than 10 characters. The most significant - * bit of number is the sign bit. The remaining 29 bits - * are magnitude bits. Negative numbers are represented - * using two's-complement notation. - * If number is negative, OCT2BIN ignores places and returns - * a 10-character binary number. - * If number is negative, it cannot be less than 7777777000, - * and if number is positive, it cannot be greater than 777. - * If number is not a valid octal number, OCT2BIN returns - * the #NUM! error value. - * If OCT2BIN requires more than places characters, it - * returns the #NUM! error value. - * @param integer $places The number of characters to use. If places is omitted, - * OCT2BIN uses the minimum number of characters necessary. - * Places is useful for padding the return value with - * leading 0s (zeros). - * If places is not an integer, it is truncated. - * If places is nonnumeric, OCT2BIN returns the #VALUE! - * error value. - * If places is negative, OCT2BIN returns the #NUM! error - * value. - * @return string - */ - public static function OCTTOBIN($x, $places = null) - { - $x = PHPExcel_Calculation_Functions::flattenSingleValue($x); - $places = PHPExcel_Calculation_Functions::flattenSingleValue($places); - - if (is_bool($x)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $x = (string) $x; - if (preg_match_all('/[01234567]/', $x, $out) != strlen($x)) { - return PHPExcel_Calculation_Functions::NaN(); - } - $r = decbin(octdec($x)); - - return self::nbrConversionFormat($r, $places); - } - - - /** - * OCTTODEC - * - * Return an octal value as decimal. - * - * Excel Function: - * OCT2DEC(x) - * - * @access public - * @category Engineering Functions - * @param string $x The octal number you want to convert. Number may not contain - * more than 10 octal characters (30 bits). The most significant - * bit of number is the sign bit. The remaining 29 bits are - * magnitude bits. Negative numbers are represented using - * two's-complement notation. - * If number is not a valid octal number, OCT2DEC returns the - * #NUM! error value. - * @return string - */ - public static function OCTTODEC($x) - { - $x = PHPExcel_Calculation_Functions::flattenSingleValue($x); - - if (is_bool($x)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $x = (string) $x; - if (preg_match_all('/[01234567]/', $x, $out) != strlen($x)) { - return PHPExcel_Calculation_Functions::NaN(); - } - return octdec($x); - } - - - /** - * OCTTOHEX - * - * Return an octal value as hex. - * - * Excel Function: - * OCT2HEX(x[,places]) - * - * @access public - * @category Engineering Functions - * @param string $x The octal number you want to convert. Number may not contain - * more than 10 octal characters (30 bits). The most significant - * bit of number is the sign bit. The remaining 29 bits are - * magnitude bits. Negative numbers are represented using - * two's-complement notation. - * If number is negative, OCT2HEX ignores places and returns a - * 10-character hexadecimal number. - * If number is not a valid octal number, OCT2HEX returns the - * #NUM! error value. - * If OCT2HEX requires more than places characters, it returns - * the #NUM! error value. - * @param integer $places The number of characters to use. If places is omitted, OCT2HEX - * uses the minimum number of characters necessary. Places is useful - * for padding the return value with leading 0s (zeros). - * If places is not an integer, it is truncated. - * If places is nonnumeric, OCT2HEX returns the #VALUE! error value. - * If places is negative, OCT2HEX returns the #NUM! error value. - * @return string - */ - public static function OCTTOHEX($x, $places = null) - { - $x = PHPExcel_Calculation_Functions::flattenSingleValue($x); - $places = PHPExcel_Calculation_Functions::flattenSingleValue($places); - - if (is_bool($x)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $x = (string) $x; - if (preg_match_all('/[01234567]/', $x, $out) != strlen($x)) { - return PHPExcel_Calculation_Functions::NaN(); - } - $hexVal = strtoupper(dechex(octdec($x))); - - return self::nbrConversionFormat($hexVal, $places); - } - - - /** - * COMPLEX - * - * Converts real and imaginary coefficients into a complex number of the form x + yi or x + yj. - * - * Excel Function: - * COMPLEX(realNumber,imaginary[,places]) - * - * @access public - * @category Engineering Functions - * @param float $realNumber The real coefficient of the complex number. - * @param float $imaginary The imaginary coefficient of the complex number. - * @param string $suffix The suffix for the imaginary component of the complex number. - * If omitted, the suffix is assumed to be "i". - * @return string - */ - public static function COMPLEX($realNumber = 0.0, $imaginary = 0.0, $suffix = 'i') - { - $realNumber = (is_null($realNumber)) ? 0.0 : PHPExcel_Calculation_Functions::flattenSingleValue($realNumber); - $imaginary = (is_null($imaginary)) ? 0.0 : PHPExcel_Calculation_Functions::flattenSingleValue($imaginary); - $suffix = (is_null($suffix)) ? 'i' : PHPExcel_Calculation_Functions::flattenSingleValue($suffix); - - if (((is_numeric($realNumber)) && (is_numeric($imaginary))) && - (($suffix == 'i') || ($suffix == 'j') || ($suffix == ''))) { - $realNumber = (float) $realNumber; - $imaginary = (float) $imaginary; - - if ($suffix == '') { - $suffix = 'i'; - } - if ($realNumber == 0.0) { - if ($imaginary == 0.0) { - return (string) '0'; - } elseif ($imaginary == 1.0) { - return (string) $suffix; - } elseif ($imaginary == -1.0) { - return (string) '-'.$suffix; - } - return (string) $imaginary.$suffix; - } elseif ($imaginary == 0.0) { - return (string) $realNumber; - } elseif ($imaginary == 1.0) { - return (string) $realNumber.'+'.$suffix; - } elseif ($imaginary == -1.0) { - return (string) $realNumber.'-'.$suffix; - } - if ($imaginary > 0) { - $imaginary = (string) '+'.$imaginary; - } - return (string) $realNumber.$imaginary.$suffix; - } - - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * IMAGINARY - * - * Returns the imaginary coefficient of a complex number in x + yi or x + yj text format. - * - * Excel Function: - * IMAGINARY(complexNumber) - * - * @access public - * @category Engineering Functions - * @param string $complexNumber The complex number for which you want the imaginary - * coefficient. - * @return float - */ - public static function IMAGINARY($complexNumber) - { - $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber); - - $parsedComplex = self::parseComplex($complexNumber); - return $parsedComplex['imaginary']; - } - - - /** - * IMREAL - * - * Returns the real coefficient of a complex number in x + yi or x + yj text format. - * - * Excel Function: - * IMREAL(complexNumber) - * - * @access public - * @category Engineering Functions - * @param string $complexNumber The complex number for which you want the real coefficient. - * @return float - */ - public static function IMREAL($complexNumber) - { - $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber); - - $parsedComplex = self::parseComplex($complexNumber); - return $parsedComplex['real']; - } - - - /** - * IMABS - * - * Returns the absolute value (modulus) of a complex number in x + yi or x + yj text format. - * - * Excel Function: - * IMABS(complexNumber) - * - * @param string $complexNumber The complex number for which you want the absolute value. - * @return float - */ - public static function IMABS($complexNumber) - { - $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber); - - $parsedComplex = self::parseComplex($complexNumber); - - return sqrt( - ($parsedComplex['real'] * $parsedComplex['real']) + - ($parsedComplex['imaginary'] * $parsedComplex['imaginary']) - ); - } - - - /** - * IMARGUMENT - * - * Returns the argument theta of a complex number, i.e. the angle in radians from the real - * axis to the representation of the number in polar coordinates. - * - * Excel Function: - * IMARGUMENT(complexNumber) - * - * @param string $complexNumber The complex number for which you want the argument theta. - * @return float - */ - public static function IMARGUMENT($complexNumber) - { - $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber); - - $parsedComplex = self::parseComplex($complexNumber); - - if ($parsedComplex['real'] == 0.0) { - if ($parsedComplex['imaginary'] == 0.0) { - return 0.0; - } elseif ($parsedComplex['imaginary'] < 0.0) { - return M_PI / -2; - } else { - return M_PI / 2; - } - } elseif ($parsedComplex['real'] > 0.0) { - return atan($parsedComplex['imaginary'] / $parsedComplex['real']); - } elseif ($parsedComplex['imaginary'] < 0.0) { - return 0 - (M_PI - atan(abs($parsedComplex['imaginary']) / abs($parsedComplex['real']))); - } else { - return M_PI - atan($parsedComplex['imaginary'] / abs($parsedComplex['real'])); - } - } - - - /** - * IMCONJUGATE - * - * Returns the complex conjugate of a complex number in x + yi or x + yj text format. - * - * Excel Function: - * IMCONJUGATE(complexNumber) - * - * @param string $complexNumber The complex number for which you want the conjugate. - * @return string - */ - public static function IMCONJUGATE($complexNumber) - { - $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber); - - $parsedComplex = self::parseComplex($complexNumber); - - if ($parsedComplex['imaginary'] == 0.0) { - return $parsedComplex['real']; - } else { - return self::cleanComplex( - self::COMPLEX( - $parsedComplex['real'], - 0 - $parsedComplex['imaginary'], - $parsedComplex['suffix'] - ) - ); - } - } - - - /** - * IMCOS - * - * Returns the cosine of a complex number in x + yi or x + yj text format. - * - * Excel Function: - * IMCOS(complexNumber) - * - * @param string $complexNumber The complex number for which you want the cosine. - * @return string|float - */ - public static function IMCOS($complexNumber) - { - $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber); - - $parsedComplex = self::parseComplex($complexNumber); - - if ($parsedComplex['imaginary'] == 0.0) { - return cos($parsedComplex['real']); - } else { - return self::IMCONJUGATE( - self::COMPLEX( - cos($parsedComplex['real']) * cosh($parsedComplex['imaginary']), - sin($parsedComplex['real']) * sinh($parsedComplex['imaginary']), - $parsedComplex['suffix'] - ) - ); - } - } - - - /** - * IMSIN - * - * Returns the sine of a complex number in x + yi or x + yj text format. - * - * Excel Function: - * IMSIN(complexNumber) - * - * @param string $complexNumber The complex number for which you want the sine. - * @return string|float - */ - public static function IMSIN($complexNumber) - { - $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber); - - $parsedComplex = self::parseComplex($complexNumber); - - if ($parsedComplex['imaginary'] == 0.0) { - return sin($parsedComplex['real']); - } else { - return self::COMPLEX( - sin($parsedComplex['real']) * cosh($parsedComplex['imaginary']), - cos($parsedComplex['real']) * sinh($parsedComplex['imaginary']), - $parsedComplex['suffix'] - ); - } - } - - - /** - * IMSQRT - * - * Returns the square root of a complex number in x + yi or x + yj text format. - * - * Excel Function: - * IMSQRT(complexNumber) - * - * @param string $complexNumber The complex number for which you want the square root. - * @return string - */ - public static function IMSQRT($complexNumber) - { - $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber); - - $parsedComplex = self::parseComplex($complexNumber); - - $theta = self::IMARGUMENT($complexNumber); - $d1 = cos($theta / 2); - $d2 = sin($theta / 2); - $r = sqrt(sqrt(($parsedComplex['real'] * $parsedComplex['real']) + ($parsedComplex['imaginary'] * $parsedComplex['imaginary']))); - - if ($parsedComplex['suffix'] == '') { - return self::COMPLEX($d1 * $r, $d2 * $r); - } else { - return self::COMPLEX($d1 * $r, $d2 * $r, $parsedComplex['suffix']); - } - } - - - /** - * IMLN - * - * Returns the natural logarithm of a complex number in x + yi or x + yj text format. - * - * Excel Function: - * IMLN(complexNumber) - * - * @param string $complexNumber The complex number for which you want the natural logarithm. - * @return string - */ - public static function IMLN($complexNumber) - { - $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber); - - $parsedComplex = self::parseComplex($complexNumber); - - if (($parsedComplex['real'] == 0.0) && ($parsedComplex['imaginary'] == 0.0)) { - return PHPExcel_Calculation_Functions::NaN(); - } - - $logR = log(sqrt(($parsedComplex['real'] * $parsedComplex['real']) + ($parsedComplex['imaginary'] * $parsedComplex['imaginary']))); - $t = self::IMARGUMENT($complexNumber); - - if ($parsedComplex['suffix'] == '') { - return self::COMPLEX($logR, $t); - } else { - return self::COMPLEX($logR, $t, $parsedComplex['suffix']); - } - } - - - /** - * IMLOG10 - * - * Returns the common logarithm (base 10) of a complex number in x + yi or x + yj text format. - * - * Excel Function: - * IMLOG10(complexNumber) - * - * @param string $complexNumber The complex number for which you want the common logarithm. - * @return string - */ - public static function IMLOG10($complexNumber) - { - $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber); - - $parsedComplex = self::parseComplex($complexNumber); - - if (($parsedComplex['real'] == 0.0) && ($parsedComplex['imaginary'] == 0.0)) { - return PHPExcel_Calculation_Functions::NaN(); - } elseif (($parsedComplex['real'] > 0.0) && ($parsedComplex['imaginary'] == 0.0)) { - return log10($parsedComplex['real']); - } - - return self::IMPRODUCT(log10(EULER), self::IMLN($complexNumber)); - } - - - /** - * IMLOG2 - * - * Returns the base-2 logarithm of a complex number in x + yi or x + yj text format. - * - * Excel Function: - * IMLOG2(complexNumber) - * - * @param string $complexNumber The complex number for which you want the base-2 logarithm. - * @return string - */ - public static function IMLOG2($complexNumber) - { - $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber); - - $parsedComplex = self::parseComplex($complexNumber); - - if (($parsedComplex['real'] == 0.0) && ($parsedComplex['imaginary'] == 0.0)) { - return PHPExcel_Calculation_Functions::NaN(); - } elseif (($parsedComplex['real'] > 0.0) && ($parsedComplex['imaginary'] == 0.0)) { - return log($parsedComplex['real'], 2); - } - - return self::IMPRODUCT(log(EULER, 2), self::IMLN($complexNumber)); - } - - - /** - * IMEXP - * - * Returns the exponential of a complex number in x + yi or x + yj text format. - * - * Excel Function: - * IMEXP(complexNumber) - * - * @param string $complexNumber The complex number for which you want the exponential. - * @return string - */ - public static function IMEXP($complexNumber) - { - $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber); - - $parsedComplex = self::parseComplex($complexNumber); - - if (($parsedComplex['real'] == 0.0) && ($parsedComplex['imaginary'] == 0.0)) { - return '1'; - } - - $e = exp($parsedComplex['real']); - $eX = $e * cos($parsedComplex['imaginary']); - $eY = $e * sin($parsedComplex['imaginary']); - - if ($parsedComplex['suffix'] == '') { - return self::COMPLEX($eX, $eY); - } else { - return self::COMPLEX($eX, $eY, $parsedComplex['suffix']); - } - } - - - /** - * IMPOWER - * - * Returns a complex number in x + yi or x + yj text format raised to a power. - * - * Excel Function: - * IMPOWER(complexNumber,realNumber) - * - * @param string $complexNumber The complex number you want to raise to a power. - * @param float $realNumber The power to which you want to raise the complex number. - * @return string - */ - public static function IMPOWER($complexNumber, $realNumber) - { - $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber); - $realNumber = PHPExcel_Calculation_Functions::flattenSingleValue($realNumber); - - if (!is_numeric($realNumber)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - $parsedComplex = self::parseComplex($complexNumber); - - $r = sqrt(($parsedComplex['real'] * $parsedComplex['real']) + ($parsedComplex['imaginary'] * $parsedComplex['imaginary'])); - $rPower = pow($r, $realNumber); - $theta = self::IMARGUMENT($complexNumber) * $realNumber; - if ($theta == 0) { - return 1; - } elseif ($parsedComplex['imaginary'] == 0.0) { - return self::COMPLEX($rPower * cos($theta), $rPower * sin($theta), $parsedComplex['suffix']); - } else { - return self::COMPLEX($rPower * cos($theta), $rPower * sin($theta), $parsedComplex['suffix']); - } - } - - - /** - * IMDIV - * - * Returns the quotient of two complex numbers in x + yi or x + yj text format. - * - * Excel Function: - * IMDIV(complexDividend,complexDivisor) - * - * @param string $complexDividend The complex numerator or dividend. - * @param string $complexDivisor The complex denominator or divisor. - * @return string - */ - public static function IMDIV($complexDividend, $complexDivisor) - { - $complexDividend = PHPExcel_Calculation_Functions::flattenSingleValue($complexDividend); - $complexDivisor = PHPExcel_Calculation_Functions::flattenSingleValue($complexDivisor); - - $parsedComplexDividend = self::parseComplex($complexDividend); - $parsedComplexDivisor = self::parseComplex($complexDivisor); - - if (($parsedComplexDividend['suffix'] != '') && ($parsedComplexDivisor['suffix'] != '') && - ($parsedComplexDividend['suffix'] != $parsedComplexDivisor['suffix'])) { - return PHPExcel_Calculation_Functions::NaN(); - } - if (($parsedComplexDividend['suffix'] != '') && ($parsedComplexDivisor['suffix'] == '')) { - $parsedComplexDivisor['suffix'] = $parsedComplexDividend['suffix']; - } - - $d1 = ($parsedComplexDividend['real'] * $parsedComplexDivisor['real']) + ($parsedComplexDividend['imaginary'] * $parsedComplexDivisor['imaginary']); - $d2 = ($parsedComplexDividend['imaginary'] * $parsedComplexDivisor['real']) - ($parsedComplexDividend['real'] * $parsedComplexDivisor['imaginary']); - $d3 = ($parsedComplexDivisor['real'] * $parsedComplexDivisor['real']) + ($parsedComplexDivisor['imaginary'] * $parsedComplexDivisor['imaginary']); - - $r = $d1 / $d3; - $i = $d2 / $d3; - - if ($i > 0.0) { - return self::cleanComplex($r.'+'.$i.$parsedComplexDivisor['suffix']); - } elseif ($i < 0.0) { - return self::cleanComplex($r.$i.$parsedComplexDivisor['suffix']); - } else { - return $r; - } - } - - - /** - * IMSUB - * - * Returns the difference of two complex numbers in x + yi or x + yj text format. - * - * Excel Function: - * IMSUB(complexNumber1,complexNumber2) - * - * @param string $complexNumber1 The complex number from which to subtract complexNumber2. - * @param string $complexNumber2 The complex number to subtract from complexNumber1. - * @return string - */ - public static function IMSUB($complexNumber1, $complexNumber2) - { - $complexNumber1 = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber1); - $complexNumber2 = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber2); - - $parsedComplex1 = self::parseComplex($complexNumber1); - $parsedComplex2 = self::parseComplex($complexNumber2); - - if ((($parsedComplex1['suffix'] != '') && ($parsedComplex2['suffix'] != '')) && - ($parsedComplex1['suffix'] != $parsedComplex2['suffix'])) { - return PHPExcel_Calculation_Functions::NaN(); - } elseif (($parsedComplex1['suffix'] == '') && ($parsedComplex2['suffix'] != '')) { - $parsedComplex1['suffix'] = $parsedComplex2['suffix']; - } - - $d1 = $parsedComplex1['real'] - $parsedComplex2['real']; - $d2 = $parsedComplex1['imaginary'] - $parsedComplex2['imaginary']; - - return self::COMPLEX($d1, $d2, $parsedComplex1['suffix']); - } - - - /** - * IMSUM - * - * Returns the sum of two or more complex numbers in x + yi or x + yj text format. - * - * Excel Function: - * IMSUM(complexNumber[,complexNumber[,...]]) - * - * @param string $complexNumber,... Series of complex numbers to add - * @return string - */ - public static function IMSUM() - { - // Return value - $returnValue = self::parseComplex('0'); - $activeSuffix = ''; - - // Loop through the arguments - $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); - foreach ($aArgs as $arg) { - $parsedComplex = self::parseComplex($arg); - - if ($activeSuffix == '') { - $activeSuffix = $parsedComplex['suffix']; - } elseif (($parsedComplex['suffix'] != '') && ($activeSuffix != $parsedComplex['suffix'])) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - $returnValue['real'] += $parsedComplex['real']; - $returnValue['imaginary'] += $parsedComplex['imaginary']; - } - - if ($returnValue['imaginary'] == 0.0) { - $activeSuffix = ''; - } - return self::COMPLEX($returnValue['real'], $returnValue['imaginary'], $activeSuffix); - } - - - /** - * IMPRODUCT - * - * Returns the product of two or more complex numbers in x + yi or x + yj text format. - * - * Excel Function: - * IMPRODUCT(complexNumber[,complexNumber[,...]]) - * - * @param string $complexNumber,... Series of complex numbers to multiply - * @return string - */ - public static function IMPRODUCT() - { - // Return value - $returnValue = self::parseComplex('1'); - $activeSuffix = ''; - - // Loop through the arguments - $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); - foreach ($aArgs as $arg) { - $parsedComplex = self::parseComplex($arg); - - $workValue = $returnValue; - if (($parsedComplex['suffix'] != '') && ($activeSuffix == '')) { - $activeSuffix = $parsedComplex['suffix']; - } elseif (($parsedComplex['suffix'] != '') && ($activeSuffix != $parsedComplex['suffix'])) { - return PHPExcel_Calculation_Functions::NaN(); - } - $returnValue['real'] = ($workValue['real'] * $parsedComplex['real']) - ($workValue['imaginary'] * $parsedComplex['imaginary']); - $returnValue['imaginary'] = ($workValue['real'] * $parsedComplex['imaginary']) + ($workValue['imaginary'] * $parsedComplex['real']); - } - - if ($returnValue['imaginary'] == 0.0) { - $activeSuffix = ''; - } - return self::COMPLEX($returnValue['real'], $returnValue['imaginary'], $activeSuffix); - } - - - /** - * DELTA - * - * Tests whether two values are equal. Returns 1 if number1 = number2; returns 0 otherwise. - * Use this function to filter a set of values. For example, by summing several DELTA - * functions you calculate the count of equal pairs. This function is also known as the - * Kronecker Delta function. - * - * Excel Function: - * DELTA(a[,b]) - * - * @param float $a The first number. - * @param float $b The second number. If omitted, b is assumed to be zero. - * @return int - */ - public static function DELTA($a, $b = 0) - { - $a = PHPExcel_Calculation_Functions::flattenSingleValue($a); - $b = PHPExcel_Calculation_Functions::flattenSingleValue($b); - - return (int) ($a == $b); - } - - - /** - * GESTEP - * - * Excel Function: - * GESTEP(number[,step]) - * - * Returns 1 if number >= step; returns 0 (zero) otherwise - * Use this function to filter a set of values. For example, by summing several GESTEP - * functions you calculate the count of values that exceed a threshold. - * - * @param float $number The value to test against step. - * @param float $step The threshold value. - * If you omit a value for step, GESTEP uses zero. - * @return int - */ - public static function GESTEP($number, $step = 0) - { - $number = PHPExcel_Calculation_Functions::flattenSingleValue($number); - $step = PHPExcel_Calculation_Functions::flattenSingleValue($step); - - return (int) ($number >= $step); - } - - - // - // Private method to calculate the erf value - // - private static $twoSqrtPi = 1.128379167095512574; - - public static function erfVal($x) - { - if (abs($x) > 2.2) { - return 1 - self::erfcVal($x); - } - $sum = $term = $x; - $xsqr = ($x * $x); - $j = 1; - do { - $term *= $xsqr / $j; - $sum -= $term / (2 * $j + 1); - ++$j; - $term *= $xsqr / $j; - $sum += $term / (2 * $j + 1); - ++$j; - if ($sum == 0.0) { - break; - } - } while (abs($term / $sum) > PRECISION); - return self::$twoSqrtPi * $sum; - } - - - /** - * ERF - * - * Returns the error function integrated between the lower and upper bound arguments. - * - * Note: In Excel 2007 or earlier, if you input a negative value for the upper or lower bound arguments, - * the function would return a #NUM! error. However, in Excel 2010, the function algorithm was - * improved, so that it can now calculate the function for both positive and negative ranges. - * PHPExcel follows Excel 2010 behaviour, and accepts nagative arguments. - * - * Excel Function: - * ERF(lower[,upper]) - * - * @param float $lower lower bound for integrating ERF - * @param float $upper upper bound for integrating ERF. - * If omitted, ERF integrates between zero and lower_limit - * @return float - */ - public static function ERF($lower, $upper = null) - { - $lower = PHPExcel_Calculation_Functions::flattenSingleValue($lower); - $upper = PHPExcel_Calculation_Functions::flattenSingleValue($upper); - - if (is_numeric($lower)) { - if (is_null($upper)) { - return self::erfVal($lower); - } - if (is_numeric($upper)) { - return self::erfVal($upper) - self::erfVal($lower); - } - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - // - // Private method to calculate the erfc value - // - private static $oneSqrtPi = 0.564189583547756287; - - private static function erfcVal($x) - { - if (abs($x) < 2.2) { - return 1 - self::erfVal($x); - } - if ($x < 0) { - return 2 - self::ERFC(-$x); - } - $a = $n = 1; - $b = $c = $x; - $d = ($x * $x) + 0.5; - $q1 = $q2 = $b / $d; - $t = 0; - do { - $t = $a * $n + $b * $x; - $a = $b; - $b = $t; - $t = $c * $n + $d * $x; - $c = $d; - $d = $t; - $n += 0.5; - $q1 = $q2; - $q2 = $b / $d; - } while ((abs($q1 - $q2) / $q2) > PRECISION); - return self::$oneSqrtPi * exp(-$x * $x) * $q2; - } - - - /** - * ERFC - * - * Returns the complementary ERF function integrated between x and infinity - * - * Note: In Excel 2007 or earlier, if you input a negative value for the lower bound argument, - * the function would return a #NUM! error. However, in Excel 2010, the function algorithm was - * improved, so that it can now calculate the function for both positive and negative x values. - * PHPExcel follows Excel 2010 behaviour, and accepts nagative arguments. - * - * Excel Function: - * ERFC(x) - * - * @param float $x The lower bound for integrating ERFC - * @return float - */ - public static function ERFC($x) - { - $x = PHPExcel_Calculation_Functions::flattenSingleValue($x); - - if (is_numeric($x)) { - return self::erfcVal($x); - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * getConversionGroups - * Returns a list of the different conversion groups for UOM conversions - * - * @return array - */ - public static function getConversionGroups() - { - $conversionGroups = array(); - foreach (self::$conversionUnits as $conversionUnit) { - $conversionGroups[] = $conversionUnit['Group']; - } - return array_merge(array_unique($conversionGroups)); - } - - - /** - * getConversionGroupUnits - * Returns an array of units of measure, for a specified conversion group, or for all groups - * - * @param string $group The group whose units of measure you want to retrieve - * @return array - */ - public static function getConversionGroupUnits($group = null) - { - $conversionGroups = array(); - foreach (self::$conversionUnits as $conversionUnit => $conversionGroup) { - if ((is_null($group)) || ($conversionGroup['Group'] == $group)) { - $conversionGroups[$conversionGroup['Group']][] = $conversionUnit; - } - } - return $conversionGroups; - } - - - /** - * getConversionGroupUnitDetails - * - * @param string $group The group whose units of measure you want to retrieve - * @return array - */ - public static function getConversionGroupUnitDetails($group = null) - { - $conversionGroups = array(); - foreach (self::$conversionUnits as $conversionUnit => $conversionGroup) { - if ((is_null($group)) || ($conversionGroup['Group'] == $group)) { - $conversionGroups[$conversionGroup['Group']][] = array( - 'unit' => $conversionUnit, - 'description' => $conversionGroup['Unit Name'] - ); - } - } - return $conversionGroups; - } - - - /** - * getConversionMultipliers - * Returns an array of the Multiplier prefixes that can be used with Units of Measure in CONVERTUOM() - * - * @return array of mixed - */ - public static function getConversionMultipliers() - { - return self::$conversionMultipliers; - } - - - /** - * CONVERTUOM - * - * Converts a number from one measurement system to another. - * For example, CONVERT can translate a table of distances in miles to a table of distances - * in kilometers. - * - * Excel Function: - * CONVERT(value,fromUOM,toUOM) - * - * @param float $value The value in fromUOM to convert. - * @param string $fromUOM The units for value. - * @param string $toUOM The units for the result. - * - * @return float - */ - public static function CONVERTUOM($value, $fromUOM, $toUOM) - { - $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); - $fromUOM = PHPExcel_Calculation_Functions::flattenSingleValue($fromUOM); - $toUOM = PHPExcel_Calculation_Functions::flattenSingleValue($toUOM); - - if (!is_numeric($value)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $fromMultiplier = 1.0; - if (isset(self::$conversionUnits[$fromUOM])) { - $unitGroup1 = self::$conversionUnits[$fromUOM]['Group']; - } else { - $fromMultiplier = substr($fromUOM, 0, 1); - $fromUOM = substr($fromUOM, 1); - if (isset(self::$conversionMultipliers[$fromMultiplier])) { - $fromMultiplier = self::$conversionMultipliers[$fromMultiplier]['multiplier']; - } else { - return PHPExcel_Calculation_Functions::NA(); - } - if ((isset(self::$conversionUnits[$fromUOM])) && (self::$conversionUnits[$fromUOM]['AllowPrefix'])) { - $unitGroup1 = self::$conversionUnits[$fromUOM]['Group']; - } else { - return PHPExcel_Calculation_Functions::NA(); - } - } - $value *= $fromMultiplier; - - $toMultiplier = 1.0; - if (isset(self::$conversionUnits[$toUOM])) { - $unitGroup2 = self::$conversionUnits[$toUOM]['Group']; - } else { - $toMultiplier = substr($toUOM, 0, 1); - $toUOM = substr($toUOM, 1); - if (isset(self::$conversionMultipliers[$toMultiplier])) { - $toMultiplier = self::$conversionMultipliers[$toMultiplier]['multiplier']; - } else { - return PHPExcel_Calculation_Functions::NA(); - } - if ((isset(self::$conversionUnits[$toUOM])) && (self::$conversionUnits[$toUOM]['AllowPrefix'])) { - $unitGroup2 = self::$conversionUnits[$toUOM]['Group']; - } else { - return PHPExcel_Calculation_Functions::NA(); - } - } - if ($unitGroup1 != $unitGroup2) { - return PHPExcel_Calculation_Functions::NA(); - } - - if (($fromUOM == $toUOM) && ($fromMultiplier == $toMultiplier)) { - // We've already factored $fromMultiplier into the value, so we need - // to reverse it again - return $value / $fromMultiplier; - } elseif ($unitGroup1 == 'Temperature') { - if (($fromUOM == 'F') || ($fromUOM == 'fah')) { - if (($toUOM == 'F') || ($toUOM == 'fah')) { - return $value; - } else { - $value = (($value - 32) / 1.8); - if (($toUOM == 'K') || ($toUOM == 'kel')) { - $value += 273.15; - } - return $value; - } - } elseif ((($fromUOM == 'K') || ($fromUOM == 'kel')) && - (($toUOM == 'K') || ($toUOM == 'kel'))) { - return $value; - } elseif ((($fromUOM == 'C') || ($fromUOM == 'cel')) && - (($toUOM == 'C') || ($toUOM == 'cel'))) { - return $value; - } - if (($toUOM == 'F') || ($toUOM == 'fah')) { - if (($fromUOM == 'K') || ($fromUOM == 'kel')) { - $value -= 273.15; - } - return ($value * 1.8) + 32; - } - if (($toUOM == 'C') || ($toUOM == 'cel')) { - return $value - 273.15; - } - return $value + 273.15; - } - return ($value * self::$unitConversions[$unitGroup1][$fromUOM][$toUOM]) / $toMultiplier; - } -} diff --git a/application/third_party/PHPExcel/Calculation/Exception.php b/application/third_party/PHPExcel/Calculation/Exception.php deleted file mode 100644 index 52d73fc4..00000000 --- a/application/third_party/PHPExcel/Calculation/Exception.php +++ /dev/null @@ -1,46 +0,0 @@ -line = $line; - $e->file = $file; - throw $e; - } -} diff --git a/application/third_party/PHPExcel/Calculation/ExceptionHandler.php b/application/third_party/PHPExcel/Calculation/ExceptionHandler.php deleted file mode 100644 index 4cb0a688..00000000 --- a/application/third_party/PHPExcel/Calculation/ExceptionHandler.php +++ /dev/null @@ -1,45 +0,0 @@ -format('d') == $testDate->format('t')); - } - - - /** - * isFirstDayOfMonth - * - * Returns a boolean TRUE/FALSE indicating if this date is the first date of the month - * - * @param DateTime $testDate The date for testing - * @return boolean - */ - private static function isFirstDayOfMonth($testDate) - { - return ($testDate->format('d') == 1); - } - - - private static function couponFirstPeriodDate($settlement, $maturity, $frequency, $next) - { - $months = 12 / $frequency; - - $result = PHPExcel_Shared_Date::ExcelToPHPObject($maturity); - $eom = self::isLastDayOfMonth($result); - - while ($settlement < PHPExcel_Shared_Date::PHPToExcel($result)) { - $result->modify('-'.$months.' months'); - } - if ($next) { - $result->modify('+'.$months.' months'); - } - - if ($eom) { - $result->modify('-1 day'); - } - - return PHPExcel_Shared_Date::PHPToExcel($result); - } - - - private static function isValidFrequency($frequency) - { - if (($frequency == 1) || ($frequency == 2) || ($frequency == 4)) { - return true; - } - if ((PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC) && - (($frequency == 6) || ($frequency == 12))) { - return true; - } - return false; - } - - - /** - * daysPerYear - * - * Returns the number of days in a specified year, as defined by the "basis" value - * - * @param integer $year The year against which we're testing - * @param integer $basis The type of day count: - * 0 or omitted US (NASD) 360 - * 1 Actual (365 or 366 in a leap year) - * 2 360 - * 3 365 - * 4 European 360 - * @return integer - */ - private static function daysPerYear($year, $basis = 0) - { - switch ($basis) { - case 0: - case 2: - case 4: - $daysPerYear = 360; - break; - case 3: - $daysPerYear = 365; - break; - case 1: - $daysPerYear = (PHPExcel_Calculation_DateTime::isLeapYear($year)) ? 366 : 365; - break; - default: - return PHPExcel_Calculation_Functions::NaN(); - } - return $daysPerYear; - } - - - private static function interestAndPrincipal($rate = 0, $per = 0, $nper = 0, $pv = 0, $fv = 0, $type = 0) - { - $pmt = self::PMT($rate, $nper, $pv, $fv, $type); - $capital = $pv; - for ($i = 1; $i<= $per; ++$i) { - $interest = ($type && $i == 1) ? 0 : -$capital * $rate; - $principal = $pmt - $interest; - $capital += $principal; - } - return array($interest, $principal); - } - - - /** - * ACCRINT - * - * Returns the accrued interest for a security that pays periodic interest. - * - * Excel Function: - * ACCRINT(issue,firstinterest,settlement,rate,par,frequency[,basis]) - * - * @access public - * @category Financial Functions - * @param mixed $issue The security's issue date. - * @param mixed $firstinterest The security's first interest date. - * @param mixed $settlement The security's settlement date. - * The security settlement date is the date after the issue date - * when the security is traded to the buyer. - * @param float $rate The security's annual coupon rate. - * @param float $par The security's par value. - * If you omit par, ACCRINT uses $1,000. - * @param integer $frequency the number of coupon payments per year. - * Valid frequency values are: - * 1 Annual - * 2 Semi-Annual - * 4 Quarterly - * If working in Gnumeric Mode, the following frequency options are - * also available - * 6 Bimonthly - * 12 Monthly - * @param integer $basis The type of day count to use. - * 0 or omitted US (NASD) 30/360 - * 1 Actual/actual - * 2 Actual/360 - * 3 Actual/365 - * 4 European 30/360 - * @return float - */ - public static function ACCRINT($issue, $firstinterest, $settlement, $rate, $par = 1000, $frequency = 1, $basis = 0) - { - $issue = PHPExcel_Calculation_Functions::flattenSingleValue($issue); - $firstinterest = PHPExcel_Calculation_Functions::flattenSingleValue($firstinterest); - $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); - $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate); - $par = (is_null($par)) ? 1000 : PHPExcel_Calculation_Functions::flattenSingleValue($par); - $frequency = (is_null($frequency)) ? 1 : PHPExcel_Calculation_Functions::flattenSingleValue($frequency); - $basis = (is_null($basis)) ? 0 : PHPExcel_Calculation_Functions::flattenSingleValue($basis); - - // Validate - if ((is_numeric($rate)) && (is_numeric($par))) { - $rate = (float) $rate; - $par = (float) $par; - if (($rate <= 0) || ($par <= 0)) { - return PHPExcel_Calculation_Functions::NaN(); - } - $daysBetweenIssueAndSettlement = PHPExcel_Calculation_DateTime::YEARFRAC($issue, $settlement, $basis); - if (!is_numeric($daysBetweenIssueAndSettlement)) { - // return date error - return $daysBetweenIssueAndSettlement; - } - - return $par * $rate * $daysBetweenIssueAndSettlement; - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * ACCRINTM - * - * Returns the accrued interest for a security that pays interest at maturity. - * - * Excel Function: - * ACCRINTM(issue,settlement,rate[,par[,basis]]) - * - * @access public - * @category Financial Functions - * @param mixed issue The security's issue date. - * @param mixed settlement The security's settlement (or maturity) date. - * @param float rate The security's annual coupon rate. - * @param float par The security's par value. - * If you omit par, ACCRINT uses $1,000. - * @param integer basis The type of day count to use. - * 0 or omitted US (NASD) 30/360 - * 1 Actual/actual - * 2 Actual/360 - * 3 Actual/365 - * 4 European 30/360 - * @return float - */ - public static function ACCRINTM($issue, $settlement, $rate, $par = 1000, $basis = 0) - { - $issue = PHPExcel_Calculation_Functions::flattenSingleValue($issue); - $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); - $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate); - $par = (is_null($par)) ? 1000 : PHPExcel_Calculation_Functions::flattenSingleValue($par); - $basis = (is_null($basis)) ? 0 : PHPExcel_Calculation_Functions::flattenSingleValue($basis); - - // Validate - if ((is_numeric($rate)) && (is_numeric($par))) { - $rate = (float) $rate; - $par = (float) $par; - if (($rate <= 0) || ($par <= 0)) { - return PHPExcel_Calculation_Functions::NaN(); - } - $daysBetweenIssueAndSettlement = PHPExcel_Calculation_DateTime::YEARFRAC($issue, $settlement, $basis); - if (!is_numeric($daysBetweenIssueAndSettlement)) { - // return date error - return $daysBetweenIssueAndSettlement; - } - return $par * $rate * $daysBetweenIssueAndSettlement; - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * AMORDEGRC - * - * Returns the depreciation for each accounting period. - * This function is provided for the French accounting system. If an asset is purchased in - * the middle of the accounting period, the prorated depreciation is taken into account. - * The function is similar to AMORLINC, except that a depreciation coefficient is applied in - * the calculation depending on the life of the assets. - * This function will return the depreciation until the last period of the life of the assets - * or until the cumulated value of depreciation is greater than the cost of the assets minus - * the salvage value. - * - * Excel Function: - * AMORDEGRC(cost,purchased,firstPeriod,salvage,period,rate[,basis]) - * - * @access public - * @category Financial Functions - * @param float cost The cost of the asset. - * @param mixed purchased Date of the purchase of the asset. - * @param mixed firstPeriod Date of the end of the first period. - * @param mixed salvage The salvage value at the end of the life of the asset. - * @param float period The period. - * @param float rate Rate of depreciation. - * @param integer basis The type of day count to use. - * 0 or omitted US (NASD) 30/360 - * 1 Actual/actual - * 2 Actual/360 - * 3 Actual/365 - * 4 European 30/360 - * @return float - */ - public static function AMORDEGRC($cost, $purchased, $firstPeriod, $salvage, $period, $rate, $basis = 0) - { - $cost = PHPExcel_Calculation_Functions::flattenSingleValue($cost); - $purchased = PHPExcel_Calculation_Functions::flattenSingleValue($purchased); - $firstPeriod = PHPExcel_Calculation_Functions::flattenSingleValue($firstPeriod); - $salvage = PHPExcel_Calculation_Functions::flattenSingleValue($salvage); - $period = floor(PHPExcel_Calculation_Functions::flattenSingleValue($period)); - $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate); - $basis = (is_null($basis)) ? 0 : (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis); - - // The depreciation coefficients are: - // Life of assets (1/rate) Depreciation coefficient - // Less than 3 years 1 - // Between 3 and 4 years 1.5 - // Between 5 and 6 years 2 - // More than 6 years 2.5 - $fUsePer = 1.0 / $rate; - if ($fUsePer < 3.0) { - $amortiseCoeff = 1.0; - } elseif ($fUsePer < 5.0) { - $amortiseCoeff = 1.5; - } elseif ($fUsePer <= 6.0) { - $amortiseCoeff = 2.0; - } else { - $amortiseCoeff = 2.5; - } - - $rate *= $amortiseCoeff; - $fNRate = round(PHPExcel_Calculation_DateTime::YEARFRAC($purchased, $firstPeriod, $basis) * $rate * $cost, 0); - $cost -= $fNRate; - $fRest = $cost - $salvage; - - for ($n = 0; $n < $period; ++$n) { - $fNRate = round($rate * $cost, 0); - $fRest -= $fNRate; - - if ($fRest < 0.0) { - switch ($period - $n) { - case 0: - case 1: - return round($cost * 0.5, 0); - default: - return 0.0; - } - } - $cost -= $fNRate; - } - return $fNRate; - } - - - /** - * AMORLINC - * - * Returns the depreciation for each accounting period. - * This function is provided for the French accounting system. If an asset is purchased in - * the middle of the accounting period, the prorated depreciation is taken into account. - * - * Excel Function: - * AMORLINC(cost,purchased,firstPeriod,salvage,period,rate[,basis]) - * - * @access public - * @category Financial Functions - * @param float cost The cost of the asset. - * @param mixed purchased Date of the purchase of the asset. - * @param mixed firstPeriod Date of the end of the first period. - * @param mixed salvage The salvage value at the end of the life of the asset. - * @param float period The period. - * @param float rate Rate of depreciation. - * @param integer basis The type of day count to use. - * 0 or omitted US (NASD) 30/360 - * 1 Actual/actual - * 2 Actual/360 - * 3 Actual/365 - * 4 European 30/360 - * @return float - */ - public static function AMORLINC($cost, $purchased, $firstPeriod, $salvage, $period, $rate, $basis = 0) - { - $cost = PHPExcel_Calculation_Functions::flattenSingleValue($cost); - $purchased = PHPExcel_Calculation_Functions::flattenSingleValue($purchased); - $firstPeriod = PHPExcel_Calculation_Functions::flattenSingleValue($firstPeriod); - $salvage = PHPExcel_Calculation_Functions::flattenSingleValue($salvage); - $period = PHPExcel_Calculation_Functions::flattenSingleValue($period); - $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate); - $basis = (is_null($basis)) ? 0 : (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis); - - $fOneRate = $cost * $rate; - $fCostDelta = $cost - $salvage; - // Note, quirky variation for leap years on the YEARFRAC for this function - $purchasedYear = PHPExcel_Calculation_DateTime::YEAR($purchased); - $yearFrac = PHPExcel_Calculation_DateTime::YEARFRAC($purchased, $firstPeriod, $basis); - - if (($basis == 1) && ($yearFrac < 1) && (PHPExcel_Calculation_DateTime::isLeapYear($purchasedYear))) { - $yearFrac *= 365 / 366; - } - - $f0Rate = $yearFrac * $rate * $cost; - $nNumOfFullPeriods = intval(($cost - $salvage - $f0Rate) / $fOneRate); - - if ($period == 0) { - return $f0Rate; - } elseif ($period <= $nNumOfFullPeriods) { - return $fOneRate; - } elseif ($period == ($nNumOfFullPeriods + 1)) { - return ($fCostDelta - $fOneRate * $nNumOfFullPeriods - $f0Rate); - } else { - return 0.0; - } - } - - - /** - * COUPDAYBS - * - * Returns the number of days from the beginning of the coupon period to the settlement date. - * - * Excel Function: - * COUPDAYBS(settlement,maturity,frequency[,basis]) - * - * @access public - * @category Financial Functions - * @param mixed settlement The security's settlement date. - * The security settlement date is the date after the issue - * date when the security is traded to the buyer. - * @param mixed maturity The security's maturity date. - * The maturity date is the date when the security expires. - * @param mixed frequency the number of coupon payments per year. - * Valid frequency values are: - * 1 Annual - * 2 Semi-Annual - * 4 Quarterly - * If working in Gnumeric Mode, the following frequency options are - * also available - * 6 Bimonthly - * 12 Monthly - * @param integer basis The type of day count to use. - * 0 or omitted US (NASD) 30/360 - * 1 Actual/actual - * 2 Actual/360 - * 3 Actual/365 - * 4 European 30/360 - * @return float - */ - public static function COUPDAYBS($settlement, $maturity, $frequency, $basis = 0) - { - $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); - $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity); - $frequency = (int) PHPExcel_Calculation_Functions::flattenSingleValue($frequency); - $basis = (is_null($basis)) ? 0 : (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis); - - if (is_string($settlement = PHPExcel_Calculation_DateTime::getDateValue($settlement))) { - return PHPExcel_Calculation_Functions::VALUE(); - } - if (is_string($maturity = PHPExcel_Calculation_DateTime::getDateValue($maturity))) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - if (($settlement > $maturity) || - (!self::isValidFrequency($frequency)) || - (($basis < 0) || ($basis > 4))) { - return PHPExcel_Calculation_Functions::NaN(); - } - - $daysPerYear = self::daysPerYear(PHPExcel_Calculation_DateTime::YEAR($settlement), $basis); - $prev = self::couponFirstPeriodDate($settlement, $maturity, $frequency, false); - - return PHPExcel_Calculation_DateTime::YEARFRAC($prev, $settlement, $basis) * $daysPerYear; - } - - - /** - * COUPDAYS - * - * Returns the number of days in the coupon period that contains the settlement date. - * - * Excel Function: - * COUPDAYS(settlement,maturity,frequency[,basis]) - * - * @access public - * @category Financial Functions - * @param mixed settlement The security's settlement date. - * The security settlement date is the date after the issue - * date when the security is traded to the buyer. - * @param mixed maturity The security's maturity date. - * The maturity date is the date when the security expires. - * @param mixed frequency the number of coupon payments per year. - * Valid frequency values are: - * 1 Annual - * 2 Semi-Annual - * 4 Quarterly - * If working in Gnumeric Mode, the following frequency options are - * also available - * 6 Bimonthly - * 12 Monthly - * @param integer basis The type of day count to use. - * 0 or omitted US (NASD) 30/360 - * 1 Actual/actual - * 2 Actual/360 - * 3 Actual/365 - * 4 European 30/360 - * @return float - */ - public static function COUPDAYS($settlement, $maturity, $frequency, $basis = 0) - { - $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); - $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity); - $frequency = (int) PHPExcel_Calculation_Functions::flattenSingleValue($frequency); - $basis = (is_null($basis)) ? 0 : (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis); - - if (is_string($settlement = PHPExcel_Calculation_DateTime::getDateValue($settlement))) { - return PHPExcel_Calculation_Functions::VALUE(); - } - if (is_string($maturity = PHPExcel_Calculation_DateTime::getDateValue($maturity))) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - if (($settlement > $maturity) || - (!self::isValidFrequency($frequency)) || - (($basis < 0) || ($basis > 4))) { - return PHPExcel_Calculation_Functions::NaN(); - } - - switch ($basis) { - case 3: - // Actual/365 - return 365 / $frequency; - case 1: - // Actual/actual - if ($frequency == 1) { - $daysPerYear = self::daysPerYear(PHPExcel_Calculation_DateTime::YEAR($maturity), $basis); - return ($daysPerYear / $frequency); - } - $prev = self::couponFirstPeriodDate($settlement, $maturity, $frequency, false); - $next = self::couponFirstPeriodDate($settlement, $maturity, $frequency, true); - return ($next - $prev); - default: - // US (NASD) 30/360, Actual/360 or European 30/360 - return 360 / $frequency; - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * COUPDAYSNC - * - * Returns the number of days from the settlement date to the next coupon date. - * - * Excel Function: - * COUPDAYSNC(settlement,maturity,frequency[,basis]) - * - * @access public - * @category Financial Functions - * @param mixed settlement The security's settlement date. - * The security settlement date is the date after the issue - * date when the security is traded to the buyer. - * @param mixed maturity The security's maturity date. - * The maturity date is the date when the security expires. - * @param mixed frequency the number of coupon payments per year. - * Valid frequency values are: - * 1 Annual - * 2 Semi-Annual - * 4 Quarterly - * If working in Gnumeric Mode, the following frequency options are - * also available - * 6 Bimonthly - * 12 Monthly - * @param integer basis The type of day count to use. - * 0 or omitted US (NASD) 30/360 - * 1 Actual/actual - * 2 Actual/360 - * 3 Actual/365 - * 4 European 30/360 - * @return float - */ - public static function COUPDAYSNC($settlement, $maturity, $frequency, $basis = 0) - { - $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); - $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity); - $frequency = (int) PHPExcel_Calculation_Functions::flattenSingleValue($frequency); - $basis = (is_null($basis)) ? 0 : (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis); - - if (is_string($settlement = PHPExcel_Calculation_DateTime::getDateValue($settlement))) { - return PHPExcel_Calculation_Functions::VALUE(); - } - if (is_string($maturity = PHPExcel_Calculation_DateTime::getDateValue($maturity))) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - if (($settlement > $maturity) || - (!self::isValidFrequency($frequency)) || - (($basis < 0) || ($basis > 4))) { - return PHPExcel_Calculation_Functions::NaN(); - } - - $daysPerYear = self::daysPerYear(PHPExcel_Calculation_DateTime::YEAR($settlement), $basis); - $next = self::couponFirstPeriodDate($settlement, $maturity, $frequency, true); - - return PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $next, $basis) * $daysPerYear; - } - - - /** - * COUPNCD - * - * Returns the next coupon date after the settlement date. - * - * Excel Function: - * COUPNCD(settlement,maturity,frequency[,basis]) - * - * @access public - * @category Financial Functions - * @param mixed settlement The security's settlement date. - * The security settlement date is the date after the issue - * date when the security is traded to the buyer. - * @param mixed maturity The security's maturity date. - * The maturity date is the date when the security expires. - * @param mixed frequency the number of coupon payments per year. - * Valid frequency values are: - * 1 Annual - * 2 Semi-Annual - * 4 Quarterly - * If working in Gnumeric Mode, the following frequency options are - * also available - * 6 Bimonthly - * 12 Monthly - * @param integer basis The type of day count to use. - * 0 or omitted US (NASD) 30/360 - * 1 Actual/actual - * 2 Actual/360 - * 3 Actual/365 - * 4 European 30/360 - * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object, - * depending on the value of the ReturnDateType flag - */ - public static function COUPNCD($settlement, $maturity, $frequency, $basis = 0) - { - $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); - $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity); - $frequency = (int) PHPExcel_Calculation_Functions::flattenSingleValue($frequency); - $basis = (is_null($basis)) ? 0 : (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis); - - if (is_string($settlement = PHPExcel_Calculation_DateTime::getDateValue($settlement))) { - return PHPExcel_Calculation_Functions::VALUE(); - } - if (is_string($maturity = PHPExcel_Calculation_DateTime::getDateValue($maturity))) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - if (($settlement > $maturity) || - (!self::isValidFrequency($frequency)) || - (($basis < 0) || ($basis > 4))) { - return PHPExcel_Calculation_Functions::NaN(); - } - - return self::couponFirstPeriodDate($settlement, $maturity, $frequency, true); - } - - - /** - * COUPNUM - * - * Returns the number of coupons payable between the settlement date and maturity date, - * rounded up to the nearest whole coupon. - * - * Excel Function: - * COUPNUM(settlement,maturity,frequency[,basis]) - * - * @access public - * @category Financial Functions - * @param mixed settlement The security's settlement date. - * The security settlement date is the date after the issue - * date when the security is traded to the buyer. - * @param mixed maturity The security's maturity date. - * The maturity date is the date when the security expires. - * @param mixed frequency the number of coupon payments per year. - * Valid frequency values are: - * 1 Annual - * 2 Semi-Annual - * 4 Quarterly - * If working in Gnumeric Mode, the following frequency options are - * also available - * 6 Bimonthly - * 12 Monthly - * @param integer basis The type of day count to use. - * 0 or omitted US (NASD) 30/360 - * 1 Actual/actual - * 2 Actual/360 - * 3 Actual/365 - * 4 European 30/360 - * @return integer - */ - public static function COUPNUM($settlement, $maturity, $frequency, $basis = 0) - { - $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); - $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity); - $frequency = (int) PHPExcel_Calculation_Functions::flattenSingleValue($frequency); - $basis = (is_null($basis)) ? 0 : (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis); - - if (is_string($settlement = PHPExcel_Calculation_DateTime::getDateValue($settlement))) { - return PHPExcel_Calculation_Functions::VALUE(); - } - if (is_string($maturity = PHPExcel_Calculation_DateTime::getDateValue($maturity))) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - if (($settlement > $maturity) || - (!self::isValidFrequency($frequency)) || - (($basis < 0) || ($basis > 4))) { - return PHPExcel_Calculation_Functions::NaN(); - } - - $settlement = self::couponFirstPeriodDate($settlement, $maturity, $frequency, true); - $daysBetweenSettlementAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $maturity, $basis) * 365; - - switch ($frequency) { - case 1: // annual payments - return ceil($daysBetweenSettlementAndMaturity / 360); - case 2: // half-yearly - return ceil($daysBetweenSettlementAndMaturity / 180); - case 4: // quarterly - return ceil($daysBetweenSettlementAndMaturity / 90); - case 6: // bimonthly - return ceil($daysBetweenSettlementAndMaturity / 60); - case 12: // monthly - return ceil($daysBetweenSettlementAndMaturity / 30); - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * COUPPCD - * - * Returns the previous coupon date before the settlement date. - * - * Excel Function: - * COUPPCD(settlement,maturity,frequency[,basis]) - * - * @access public - * @category Financial Functions - * @param mixed settlement The security's settlement date. - * The security settlement date is the date after the issue - * date when the security is traded to the buyer. - * @param mixed maturity The security's maturity date. - * The maturity date is the date when the security expires. - * @param mixed frequency the number of coupon payments per year. - * Valid frequency values are: - * 1 Annual - * 2 Semi-Annual - * 4 Quarterly - * If working in Gnumeric Mode, the following frequency options are - * also available - * 6 Bimonthly - * 12 Monthly - * @param integer basis The type of day count to use. - * 0 or omitted US (NASD) 30/360 - * 1 Actual/actual - * 2 Actual/360 - * 3 Actual/365 - * 4 European 30/360 - * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object, - * depending on the value of the ReturnDateType flag - */ - public static function COUPPCD($settlement, $maturity, $frequency, $basis = 0) - { - $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); - $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity); - $frequency = (int) PHPExcel_Calculation_Functions::flattenSingleValue($frequency); - $basis = (is_null($basis)) ? 0 : (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis); - - if (is_string($settlement = PHPExcel_Calculation_DateTime::getDateValue($settlement))) { - return PHPExcel_Calculation_Functions::VALUE(); - } - if (is_string($maturity = PHPExcel_Calculation_DateTime::getDateValue($maturity))) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - if (($settlement > $maturity) || - (!self::isValidFrequency($frequency)) || - (($basis < 0) || ($basis > 4))) { - return PHPExcel_Calculation_Functions::NaN(); - } - - return self::couponFirstPeriodDate($settlement, $maturity, $frequency, false); - } - - - /** - * CUMIPMT - * - * Returns the cumulative interest paid on a loan between the start and end periods. - * - * Excel Function: - * CUMIPMT(rate,nper,pv,start,end[,type]) - * - * @access public - * @category Financial Functions - * @param float $rate The Interest rate - * @param integer $nper The total number of payment periods - * @param float $pv Present Value - * @param integer $start The first period in the calculation. - * Payment periods are numbered beginning with 1. - * @param integer $end The last period in the calculation. - * @param integer $type A number 0 or 1 and indicates when payments are due: - * 0 or omitted At the end of the period. - * 1 At the beginning of the period. - * @return float - */ - public static function CUMIPMT($rate, $nper, $pv, $start, $end, $type = 0) - { - $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate); - $nper = (int) PHPExcel_Calculation_Functions::flattenSingleValue($nper); - $pv = PHPExcel_Calculation_Functions::flattenSingleValue($pv); - $start = (int) PHPExcel_Calculation_Functions::flattenSingleValue($start); - $end = (int) PHPExcel_Calculation_Functions::flattenSingleValue($end); - $type = (int) PHPExcel_Calculation_Functions::flattenSingleValue($type); - - // Validate parameters - if ($type != 0 && $type != 1) { - return PHPExcel_Calculation_Functions::NaN(); - } - if ($start < 1 || $start > $end) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - // Calculate - $interest = 0; - for ($per = $start; $per <= $end; ++$per) { - $interest += self::IPMT($rate, $per, $nper, $pv, 0, $type); - } - - return $interest; - } - - - /** - * CUMPRINC - * - * Returns the cumulative principal paid on a loan between the start and end periods. - * - * Excel Function: - * CUMPRINC(rate,nper,pv,start,end[,type]) - * - * @access public - * @category Financial Functions - * @param float $rate The Interest rate - * @param integer $nper The total number of payment periods - * @param float $pv Present Value - * @param integer $start The first period in the calculation. - * Payment periods are numbered beginning with 1. - * @param integer $end The last period in the calculation. - * @param integer $type A number 0 or 1 and indicates when payments are due: - * 0 or omitted At the end of the period. - * 1 At the beginning of the period. - * @return float - */ - public static function CUMPRINC($rate, $nper, $pv, $start, $end, $type = 0) - { - $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate); - $nper = (int) PHPExcel_Calculation_Functions::flattenSingleValue($nper); - $pv = PHPExcel_Calculation_Functions::flattenSingleValue($pv); - $start = (int) PHPExcel_Calculation_Functions::flattenSingleValue($start); - $end = (int) PHPExcel_Calculation_Functions::flattenSingleValue($end); - $type = (int) PHPExcel_Calculation_Functions::flattenSingleValue($type); - - // Validate parameters - if ($type != 0 && $type != 1) { - return PHPExcel_Calculation_Functions::NaN(); - } - if ($start < 1 || $start > $end) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - // Calculate - $principal = 0; - for ($per = $start; $per <= $end; ++$per) { - $principal += self::PPMT($rate, $per, $nper, $pv, 0, $type); - } - - return $principal; - } - - - /** - * DB - * - * Returns the depreciation of an asset for a specified period using the - * fixed-declining balance method. - * This form of depreciation is used if you want to get a higher depreciation value - * at the beginning of the depreciation (as opposed to linear depreciation). The - * depreciation value is reduced with every depreciation period by the depreciation - * already deducted from the initial cost. - * - * Excel Function: - * DB(cost,salvage,life,period[,month]) - * - * @access public - * @category Financial Functions - * @param float cost Initial cost of the asset. - * @param float salvage Value at the end of the depreciation. - * (Sometimes called the salvage value of the asset) - * @param integer life Number of periods over which the asset is depreciated. - * (Sometimes called the useful life of the asset) - * @param integer period The period for which you want to calculate the - * depreciation. Period must use the same units as life. - * @param integer month Number of months in the first year. If month is omitted, - * it defaults to 12. - * @return float - */ - public static function DB($cost, $salvage, $life, $period, $month = 12) - { - $cost = PHPExcel_Calculation_Functions::flattenSingleValue($cost); - $salvage = PHPExcel_Calculation_Functions::flattenSingleValue($salvage); - $life = PHPExcel_Calculation_Functions::flattenSingleValue($life); - $period = PHPExcel_Calculation_Functions::flattenSingleValue($period); - $month = PHPExcel_Calculation_Functions::flattenSingleValue($month); - - // Validate - if ((is_numeric($cost)) && (is_numeric($salvage)) && (is_numeric($life)) && (is_numeric($period)) && (is_numeric($month))) { - $cost = (float) $cost; - $salvage = (float) $salvage; - $life = (int) $life; - $period = (int) $period; - $month = (int) $month; - if ($cost == 0) { - return 0.0; - } elseif (($cost < 0) || (($salvage / $cost) < 0) || ($life <= 0) || ($period < 1) || ($month < 1)) { - return PHPExcel_Calculation_Functions::NaN(); - } - // Set Fixed Depreciation Rate - $fixedDepreciationRate = 1 - pow(($salvage / $cost), (1 / $life)); - $fixedDepreciationRate = round($fixedDepreciationRate, 3); - - // Loop through each period calculating the depreciation - $previousDepreciation = 0; - for ($per = 1; $per <= $period; ++$per) { - if ($per == 1) { - $depreciation = $cost * $fixedDepreciationRate * $month / 12; - } elseif ($per == ($life + 1)) { - $depreciation = ($cost - $previousDepreciation) * $fixedDepreciationRate * (12 - $month) / 12; - } else { - $depreciation = ($cost - $previousDepreciation) * $fixedDepreciationRate; - } - $previousDepreciation += $depreciation; - } - if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC) { - $depreciation = round($depreciation, 2); - } - return $depreciation; - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * DDB - * - * Returns the depreciation of an asset for a specified period using the - * double-declining balance method or some other method you specify. - * - * Excel Function: - * DDB(cost,salvage,life,period[,factor]) - * - * @access public - * @category Financial Functions - * @param float cost Initial cost of the asset. - * @param float salvage Value at the end of the depreciation. - * (Sometimes called the salvage value of the asset) - * @param integer life Number of periods over which the asset is depreciated. - * (Sometimes called the useful life of the asset) - * @param integer period The period for which you want to calculate the - * depreciation. Period must use the same units as life. - * @param float factor The rate at which the balance declines. - * If factor is omitted, it is assumed to be 2 (the - * double-declining balance method). - * @return float - */ - public static function DDB($cost, $salvage, $life, $period, $factor = 2.0) - { - $cost = PHPExcel_Calculation_Functions::flattenSingleValue($cost); - $salvage = PHPExcel_Calculation_Functions::flattenSingleValue($salvage); - $life = PHPExcel_Calculation_Functions::flattenSingleValue($life); - $period = PHPExcel_Calculation_Functions::flattenSingleValue($period); - $factor = PHPExcel_Calculation_Functions::flattenSingleValue($factor); - - // Validate - if ((is_numeric($cost)) && (is_numeric($salvage)) && (is_numeric($life)) && (is_numeric($period)) && (is_numeric($factor))) { - $cost = (float) $cost; - $salvage = (float) $salvage; - $life = (int) $life; - $period = (int) $period; - $factor = (float) $factor; - if (($cost <= 0) || (($salvage / $cost) < 0) || ($life <= 0) || ($period < 1) || ($factor <= 0.0) || ($period > $life)) { - return PHPExcel_Calculation_Functions::NaN(); - } - // Set Fixed Depreciation Rate - $fixedDepreciationRate = 1 - pow(($salvage / $cost), (1 / $life)); - $fixedDepreciationRate = round($fixedDepreciationRate, 3); - - // Loop through each period calculating the depreciation - $previousDepreciation = 0; - for ($per = 1; $per <= $period; ++$per) { - $depreciation = min(($cost - $previousDepreciation) * ($factor / $life), ($cost - $salvage - $previousDepreciation)); - $previousDepreciation += $depreciation; - } - if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC) { - $depreciation = round($depreciation, 2); - } - return $depreciation; - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * DISC - * - * Returns the discount rate for a security. - * - * Excel Function: - * DISC(settlement,maturity,price,redemption[,basis]) - * - * @access public - * @category Financial Functions - * @param mixed settlement The security's settlement date. - * The security settlement date is the date after the issue - * date when the security is traded to the buyer. - * @param mixed maturity The security's maturity date. - * The maturity date is the date when the security expires. - * @param integer price The security's price per $100 face value. - * @param integer redemption The security's redemption value per $100 face value. - * @param integer basis The type of day count to use. - * 0 or omitted US (NASD) 30/360 - * 1 Actual/actual - * 2 Actual/360 - * 3 Actual/365 - * 4 European 30/360 - * @return float - */ - public static function DISC($settlement, $maturity, $price, $redemption, $basis = 0) - { - $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); - $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity); - $price = PHPExcel_Calculation_Functions::flattenSingleValue($price); - $redemption = PHPExcel_Calculation_Functions::flattenSingleValue($redemption); - $basis = PHPExcel_Calculation_Functions::flattenSingleValue($basis); - - // Validate - if ((is_numeric($price)) && (is_numeric($redemption)) && (is_numeric($basis))) { - $price = (float) $price; - $redemption = (float) $redemption; - $basis = (int) $basis; - if (($price <= 0) || ($redemption <= 0)) { - return PHPExcel_Calculation_Functions::NaN(); - } - $daysBetweenSettlementAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $maturity, $basis); - if (!is_numeric($daysBetweenSettlementAndMaturity)) { - // return date error - return $daysBetweenSettlementAndMaturity; - } - - return ((1 - $price / $redemption) / $daysBetweenSettlementAndMaturity); - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * DOLLARDE - * - * Converts a dollar price expressed as an integer part and a fraction - * part into a dollar price expressed as a decimal number. - * Fractional dollar numbers are sometimes used for security prices. - * - * Excel Function: - * DOLLARDE(fractional_dollar,fraction) - * - * @access public - * @category Financial Functions - * @param float $fractional_dollar Fractional Dollar - * @param integer $fraction Fraction - * @return float - */ - public static function DOLLARDE($fractional_dollar = null, $fraction = 0) - { - $fractional_dollar = PHPExcel_Calculation_Functions::flattenSingleValue($fractional_dollar); - $fraction = (int)PHPExcel_Calculation_Functions::flattenSingleValue($fraction); - - // Validate parameters - if (is_null($fractional_dollar) || $fraction < 0) { - return PHPExcel_Calculation_Functions::NaN(); - } - if ($fraction == 0) { - return PHPExcel_Calculation_Functions::DIV0(); - } - - $dollars = floor($fractional_dollar); - $cents = fmod($fractional_dollar, 1); - $cents /= $fraction; - $cents *= pow(10, ceil(log10($fraction))); - return $dollars + $cents; - } - - - /** - * DOLLARFR - * - * Converts a dollar price expressed as a decimal number into a dollar price - * expressed as a fraction. - * Fractional dollar numbers are sometimes used for security prices. - * - * Excel Function: - * DOLLARFR(decimal_dollar,fraction) - * - * @access public - * @category Financial Functions - * @param float $decimal_dollar Decimal Dollar - * @param integer $fraction Fraction - * @return float - */ - public static function DOLLARFR($decimal_dollar = null, $fraction = 0) - { - $decimal_dollar = PHPExcel_Calculation_Functions::flattenSingleValue($decimal_dollar); - $fraction = (int)PHPExcel_Calculation_Functions::flattenSingleValue($fraction); - - // Validate parameters - if (is_null($decimal_dollar) || $fraction < 0) { - return PHPExcel_Calculation_Functions::NaN(); - } - if ($fraction == 0) { - return PHPExcel_Calculation_Functions::DIV0(); - } - - $dollars = floor($decimal_dollar); - $cents = fmod($decimal_dollar, 1); - $cents *= $fraction; - $cents *= pow(10, -ceil(log10($fraction))); - return $dollars + $cents; - } - - - /** - * EFFECT - * - * Returns the effective interest rate given the nominal rate and the number of - * compounding payments per year. - * - * Excel Function: - * EFFECT(nominal_rate,npery) - * - * @access public - * @category Financial Functions - * @param float $nominal_rate Nominal interest rate - * @param integer $npery Number of compounding payments per year - * @return float - */ - public static function EFFECT($nominal_rate = 0, $npery = 0) - { - $nominal_rate = PHPExcel_Calculation_Functions::flattenSingleValue($nominal_rate); - $npery = (int)PHPExcel_Calculation_Functions::flattenSingleValue($npery); - - // Validate parameters - if ($nominal_rate <= 0 || $npery < 1) { - return PHPExcel_Calculation_Functions::NaN(); - } - - return pow((1 + $nominal_rate / $npery), $npery) - 1; - } - - - /** - * FV - * - * Returns the Future Value of a cash flow with constant payments and interest rate (annuities). - * - * Excel Function: - * FV(rate,nper,pmt[,pv[,type]]) - * - * @access public - * @category Financial Functions - * @param float $rate The interest rate per period - * @param int $nper Total number of payment periods in an annuity - * @param float $pmt The payment made each period: it cannot change over the - * life of the annuity. Typically, pmt contains principal - * and interest but no other fees or taxes. - * @param float $pv Present Value, or the lump-sum amount that a series of - * future payments is worth right now. - * @param integer $type A number 0 or 1 and indicates when payments are due: - * 0 or omitted At the end of the period. - * 1 At the beginning of the period. - * @return float - */ - public static function FV($rate = 0, $nper = 0, $pmt = 0, $pv = 0, $type = 0) - { - $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate); - $nper = PHPExcel_Calculation_Functions::flattenSingleValue($nper); - $pmt = PHPExcel_Calculation_Functions::flattenSingleValue($pmt); - $pv = PHPExcel_Calculation_Functions::flattenSingleValue($pv); - $type = PHPExcel_Calculation_Functions::flattenSingleValue($type); - - // Validate parameters - if ($type != 0 && $type != 1) { - return PHPExcel_Calculation_Functions::NaN(); - } - - // Calculate - if (!is_null($rate) && $rate != 0) { - return -$pv * pow(1 + $rate, $nper) - $pmt * (1 + $rate * $type) * (pow(1 + $rate, $nper) - 1) / $rate; - } - return -$pv - $pmt * $nper; - } - - - /** - * FVSCHEDULE - * - * Returns the future value of an initial principal after applying a series of compound interest rates. - * Use FVSCHEDULE to calculate the future value of an investment with a variable or adjustable rate. - * - * Excel Function: - * FVSCHEDULE(principal,schedule) - * - * @param float $principal The present value. - * @param float[] $schedule An array of interest rates to apply. - * @return float - */ - public static function FVSCHEDULE($principal, $schedule) - { - $principal = PHPExcel_Calculation_Functions::flattenSingleValue($principal); - $schedule = PHPExcel_Calculation_Functions::flattenArray($schedule); - - foreach ($schedule as $rate) { - $principal *= 1 + $rate; - } - - return $principal; - } - - - /** - * INTRATE - * - * Returns the interest rate for a fully invested security. - * - * Excel Function: - * INTRATE(settlement,maturity,investment,redemption[,basis]) - * - * @param mixed $settlement The security's settlement date. - * The security settlement date is the date after the issue date when the security is traded to the buyer. - * @param mixed $maturity The security's maturity date. - * The maturity date is the date when the security expires. - * @param integer $investment The amount invested in the security. - * @param integer $redemption The amount to be received at maturity. - * @param integer $basis The type of day count to use. - * 0 or omitted US (NASD) 30/360 - * 1 Actual/actual - * 2 Actual/360 - * 3 Actual/365 - * 4 European 30/360 - * @return float - */ - public static function INTRATE($settlement, $maturity, $investment, $redemption, $basis = 0) - { - $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); - $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity); - $investment = PHPExcel_Calculation_Functions::flattenSingleValue($investment); - $redemption = PHPExcel_Calculation_Functions::flattenSingleValue($redemption); - $basis = PHPExcel_Calculation_Functions::flattenSingleValue($basis); - - // Validate - if ((is_numeric($investment)) && (is_numeric($redemption)) && (is_numeric($basis))) { - $investment = (float) $investment; - $redemption = (float) $redemption; - $basis = (int) $basis; - if (($investment <= 0) || ($redemption <= 0)) { - return PHPExcel_Calculation_Functions::NaN(); - } - $daysBetweenSettlementAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $maturity, $basis); - if (!is_numeric($daysBetweenSettlementAndMaturity)) { - // return date error - return $daysBetweenSettlementAndMaturity; - } - - return (($redemption / $investment) - 1) / ($daysBetweenSettlementAndMaturity); - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * IPMT - * - * Returns the interest payment for a given period for an investment based on periodic, constant payments and a constant interest rate. - * - * Excel Function: - * IPMT(rate,per,nper,pv[,fv][,type]) - * - * @param float $rate Interest rate per period - * @param int $per Period for which we want to find the interest - * @param int $nper Number of periods - * @param float $pv Present Value - * @param float $fv Future Value - * @param int $type Payment type: 0 = at the end of each period, 1 = at the beginning of each period - * @return float - */ - public static function IPMT($rate, $per, $nper, $pv, $fv = 0, $type = 0) - { - $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate); - $per = (int) PHPExcel_Calculation_Functions::flattenSingleValue($per); - $nper = (int) PHPExcel_Calculation_Functions::flattenSingleValue($nper); - $pv = PHPExcel_Calculation_Functions::flattenSingleValue($pv); - $fv = PHPExcel_Calculation_Functions::flattenSingleValue($fv); - $type = (int) PHPExcel_Calculation_Functions::flattenSingleValue($type); - - // Validate parameters - if ($type != 0 && $type != 1) { - return PHPExcel_Calculation_Functions::NaN(); - } - if ($per <= 0 || $per > $nper) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - // Calculate - $interestAndPrincipal = self::interestAndPrincipal($rate, $per, $nper, $pv, $fv, $type); - return $interestAndPrincipal[0]; - } - - /** - * IRR - * - * Returns the internal rate of return for a series of cash flows represented by the numbers in values. - * These cash flows do not have to be even, as they would be for an annuity. However, the cash flows must occur - * at regular intervals, such as monthly or annually. The internal rate of return is the interest rate received - * for an investment consisting of payments (negative values) and income (positive values) that occur at regular - * periods. - * - * Excel Function: - * IRR(values[,guess]) - * - * @param float[] $values An array or a reference to cells that contain numbers for which you want - * to calculate the internal rate of return. - * Values must contain at least one positive value and one negative value to - * calculate the internal rate of return. - * @param float $guess A number that you guess is close to the result of IRR - * @return float - */ - public static function IRR($values, $guess = 0.1) - { - if (!is_array($values)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $values = PHPExcel_Calculation_Functions::flattenArray($values); - $guess = PHPExcel_Calculation_Functions::flattenSingleValue($guess); - - // create an initial range, with a root somewhere between 0 and guess - $x1 = 0.0; - $x2 = $guess; - $f1 = self::NPV($x1, $values); - $f2 = self::NPV($x2, $values); - for ($i = 0; $i < FINANCIAL_MAX_ITERATIONS; ++$i) { - if (($f1 * $f2) < 0.0) { - break; - } - if (abs($f1) < abs($f2)) { - $f1 = self::NPV($x1 += 1.6 * ($x1 - $x2), $values); - } else { - $f2 = self::NPV($x2 += 1.6 * ($x2 - $x1), $values); - } - } - if (($f1 * $f2) > 0.0) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - $f = self::NPV($x1, $values); - if ($f < 0.0) { - $rtb = $x1; - $dx = $x2 - $x1; - } else { - $rtb = $x2; - $dx = $x1 - $x2; - } - - for ($i = 0; $i < FINANCIAL_MAX_ITERATIONS; ++$i) { - $dx *= 0.5; - $x_mid = $rtb + $dx; - $f_mid = self::NPV($x_mid, $values); - if ($f_mid <= 0.0) { - $rtb = $x_mid; - } - if ((abs($f_mid) < FINANCIAL_PRECISION) || (abs($dx) < FINANCIAL_PRECISION)) { - return $x_mid; - } - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * ISPMT - * - * Returns the interest payment for an investment based on an interest rate and a constant payment schedule. - * - * Excel Function: - * =ISPMT(interest_rate, period, number_payments, PV) - * - * interest_rate is the interest rate for the investment - * - * period is the period to calculate the interest rate. It must be betweeen 1 and number_payments. - * - * number_payments is the number of payments for the annuity - * - * PV is the loan amount or present value of the payments - */ - public static function ISPMT() - { - // Return value - $returnValue = 0; - - // Get the parameters - $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); - $interestRate = array_shift($aArgs); - $period = array_shift($aArgs); - $numberPeriods = array_shift($aArgs); - $principleRemaining = array_shift($aArgs); - - // Calculate - $principlePayment = ($principleRemaining * 1.0) / ($numberPeriods * 1.0); - for ($i=0; $i <= $period; ++$i) { - $returnValue = $interestRate * $principleRemaining * -1; - $principleRemaining -= $principlePayment; - // principle needs to be 0 after the last payment, don't let floating point screw it up - if ($i == $numberPeriods) { - $returnValue = 0; - } - } - return($returnValue); - } - - - /** - * MIRR - * - * Returns the modified internal rate of return for a series of periodic cash flows. MIRR considers both - * the cost of the investment and the interest received on reinvestment of cash. - * - * Excel Function: - * MIRR(values,finance_rate, reinvestment_rate) - * - * @param float[] $values An array or a reference to cells that contain a series of payments and - * income occurring at regular intervals. - * Payments are negative value, income is positive values. - * @param float $finance_rate The interest rate you pay on the money used in the cash flows - * @param float $reinvestment_rate The interest rate you receive on the cash flows as you reinvest them - * @return float - */ - public static function MIRR($values, $finance_rate, $reinvestment_rate) - { - if (!is_array($values)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $values = PHPExcel_Calculation_Functions::flattenArray($values); - $finance_rate = PHPExcel_Calculation_Functions::flattenSingleValue($finance_rate); - $reinvestment_rate = PHPExcel_Calculation_Functions::flattenSingleValue($reinvestment_rate); - $n = count($values); - - $rr = 1.0 + $reinvestment_rate; - $fr = 1.0 + $finance_rate; - - $npv_pos = $npv_neg = 0.0; - foreach ($values as $i => $v) { - if ($v >= 0) { - $npv_pos += $v / pow($rr, $i); - } else { - $npv_neg += $v / pow($fr, $i); - } - } - - if (($npv_neg == 0) || ($npv_pos == 0) || ($reinvestment_rate <= -1)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - $mirr = pow((-$npv_pos * pow($rr, $n)) - / ($npv_neg * ($rr)), (1.0 / ($n - 1))) - 1.0; - - return (is_finite($mirr) ? $mirr : PHPExcel_Calculation_Functions::VALUE()); - } - - - /** - * NOMINAL - * - * Returns the nominal interest rate given the effective rate and the number of compounding payments per year. - * - * @param float $effect_rate Effective interest rate - * @param int $npery Number of compounding payments per year - * @return float - */ - public static function NOMINAL($effect_rate = 0, $npery = 0) - { - $effect_rate = PHPExcel_Calculation_Functions::flattenSingleValue($effect_rate); - $npery = (int)PHPExcel_Calculation_Functions::flattenSingleValue($npery); - - // Validate parameters - if ($effect_rate <= 0 || $npery < 1) { - return PHPExcel_Calculation_Functions::NaN(); - } - - // Calculate - return $npery * (pow($effect_rate + 1, 1 / $npery) - 1); - } - - - /** - * NPER - * - * Returns the number of periods for a cash flow with constant periodic payments (annuities), and interest rate. - * - * @param float $rate Interest rate per period - * @param int $pmt Periodic payment (annuity) - * @param float $pv Present Value - * @param float $fv Future Value - * @param int $type Payment type: 0 = at the end of each period, 1 = at the beginning of each period - * @return float - */ - public static function NPER($rate = 0, $pmt = 0, $pv = 0, $fv = 0, $type = 0) - { - $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate); - $pmt = PHPExcel_Calculation_Functions::flattenSingleValue($pmt); - $pv = PHPExcel_Calculation_Functions::flattenSingleValue($pv); - $fv = PHPExcel_Calculation_Functions::flattenSingleValue($fv); - $type = PHPExcel_Calculation_Functions::flattenSingleValue($type); - - // Validate parameters - if ($type != 0 && $type != 1) { - return PHPExcel_Calculation_Functions::NaN(); - } - - // Calculate - if (!is_null($rate) && $rate != 0) { - if ($pmt == 0 && $pv == 0) { - return PHPExcel_Calculation_Functions::NaN(); - } - return log(($pmt * (1 + $rate * $type) / $rate - $fv) / ($pv + $pmt * (1 + $rate * $type) / $rate)) / log(1 + $rate); - } - if ($pmt == 0) { - return PHPExcel_Calculation_Functions::NaN(); - } - return (-$pv -$fv) / $pmt; - } - - /** - * NPV - * - * Returns the Net Present Value of a cash flow series given a discount rate. - * - * @return float - */ - public static function NPV() - { - // Return value - $returnValue = 0; - - // Loop through arguments - $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); - - // Calculate - $rate = array_shift($aArgs); - for ($i = 1; $i <= count($aArgs); ++$i) { - // Is it a numeric value? - if (is_numeric($aArgs[$i - 1])) { - $returnValue += $aArgs[$i - 1] / pow(1 + $rate, $i); - } - } - - // Return - return $returnValue; - } - - /** - * PMT - * - * Returns the constant payment (annuity) for a cash flow with a constant interest rate. - * - * @param float $rate Interest rate per period - * @param int $nper Number of periods - * @param float $pv Present Value - * @param float $fv Future Value - * @param int $type Payment type: 0 = at the end of each period, 1 = at the beginning of each period - * @return float - */ - public static function PMT($rate = 0, $nper = 0, $pv = 0, $fv = 0, $type = 0) - { - $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate); - $nper = PHPExcel_Calculation_Functions::flattenSingleValue($nper); - $pv = PHPExcel_Calculation_Functions::flattenSingleValue($pv); - $fv = PHPExcel_Calculation_Functions::flattenSingleValue($fv); - $type = PHPExcel_Calculation_Functions::flattenSingleValue($type); - - // Validate parameters - if ($type != 0 && $type != 1) { - return PHPExcel_Calculation_Functions::NaN(); - } - - // Calculate - if (!is_null($rate) && $rate != 0) { - return (-$fv - $pv * pow(1 + $rate, $nper)) / (1 + $rate * $type) / ((pow(1 + $rate, $nper) - 1) / $rate); - } - return (-$pv - $fv) / $nper; - } - - - /** - * PPMT - * - * Returns the interest payment for a given period for an investment based on periodic, constant payments and a constant interest rate. - * - * @param float $rate Interest rate per period - * @param int $per Period for which we want to find the interest - * @param int $nper Number of periods - * @param float $pv Present Value - * @param float $fv Future Value - * @param int $type Payment type: 0 = at the end of each period, 1 = at the beginning of each period - * @return float - */ - public static function PPMT($rate, $per, $nper, $pv, $fv = 0, $type = 0) - { - $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate); - $per = (int) PHPExcel_Calculation_Functions::flattenSingleValue($per); - $nper = (int) PHPExcel_Calculation_Functions::flattenSingleValue($nper); - $pv = PHPExcel_Calculation_Functions::flattenSingleValue($pv); - $fv = PHPExcel_Calculation_Functions::flattenSingleValue($fv); - $type = (int) PHPExcel_Calculation_Functions::flattenSingleValue($type); - - // Validate parameters - if ($type != 0 && $type != 1) { - return PHPExcel_Calculation_Functions::NaN(); - } - if ($per <= 0 || $per > $nper) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - // Calculate - $interestAndPrincipal = self::interestAndPrincipal($rate, $per, $nper, $pv, $fv, $type); - return $interestAndPrincipal[1]; - } - - - public static function PRICE($settlement, $maturity, $rate, $yield, $redemption, $frequency, $basis = 0) - { - $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); - $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity); - $rate = (float) PHPExcel_Calculation_Functions::flattenSingleValue($rate); - $yield = (float) PHPExcel_Calculation_Functions::flattenSingleValue($yield); - $redemption = (float) PHPExcel_Calculation_Functions::flattenSingleValue($redemption); - $frequency = (int) PHPExcel_Calculation_Functions::flattenSingleValue($frequency); - $basis = (is_null($basis)) ? 0 : (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis); - - if (is_string($settlement = PHPExcel_Calculation_DateTime::getDateValue($settlement))) { - return PHPExcel_Calculation_Functions::VALUE(); - } - if (is_string($maturity = PHPExcel_Calculation_DateTime::getDateValue($maturity))) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - if (($settlement > $maturity) || - (!self::isValidFrequency($frequency)) || - (($basis < 0) || ($basis > 4))) { - return PHPExcel_Calculation_Functions::NaN(); - } - - $dsc = self::COUPDAYSNC($settlement, $maturity, $frequency, $basis); - $e = self::COUPDAYS($settlement, $maturity, $frequency, $basis); - $n = self::COUPNUM($settlement, $maturity, $frequency, $basis); - $a = self::COUPDAYBS($settlement, $maturity, $frequency, $basis); - - $baseYF = 1.0 + ($yield / $frequency); - $rfp = 100 * ($rate / $frequency); - $de = $dsc / $e; - - $result = $redemption / pow($baseYF, (--$n + $de)); - for ($k = 0; $k <= $n; ++$k) { - $result += $rfp / (pow($baseYF, ($k + $de))); - } - $result -= $rfp * ($a / $e); - - return $result; - } - - - /** - * PRICEDISC - * - * Returns the price per $100 face value of a discounted security. - * - * @param mixed settlement The security's settlement date. - * The security settlement date is the date after the issue date when the security is traded to the buyer. - * @param mixed maturity The security's maturity date. - * The maturity date is the date when the security expires. - * @param int discount The security's discount rate. - * @param int redemption The security's redemption value per $100 face value. - * @param int basis The type of day count to use. - * 0 or omitted US (NASD) 30/360 - * 1 Actual/actual - * 2 Actual/360 - * 3 Actual/365 - * 4 European 30/360 - * @return float - */ - public static function PRICEDISC($settlement, $maturity, $discount, $redemption, $basis = 0) - { - $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); - $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity); - $discount = (float) PHPExcel_Calculation_Functions::flattenSingleValue($discount); - $redemption = (float) PHPExcel_Calculation_Functions::flattenSingleValue($redemption); - $basis = (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis); - - // Validate - if ((is_numeric($discount)) && (is_numeric($redemption)) && (is_numeric($basis))) { - if (($discount <= 0) || ($redemption <= 0)) { - return PHPExcel_Calculation_Functions::NaN(); - } - $daysBetweenSettlementAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $maturity, $basis); - if (!is_numeric($daysBetweenSettlementAndMaturity)) { - // return date error - return $daysBetweenSettlementAndMaturity; - } - - return $redemption * (1 - $discount * $daysBetweenSettlementAndMaturity); - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * PRICEMAT - * - * Returns the price per $100 face value of a security that pays interest at maturity. - * - * @param mixed settlement The security's settlement date. - * The security's settlement date is the date after the issue date when the security is traded to the buyer. - * @param mixed maturity The security's maturity date. - * The maturity date is the date when the security expires. - * @param mixed issue The security's issue date. - * @param int rate The security's interest rate at date of issue. - * @param int yield The security's annual yield. - * @param int basis The type of day count to use. - * 0 or omitted US (NASD) 30/360 - * 1 Actual/actual - * 2 Actual/360 - * 3 Actual/365 - * 4 European 30/360 - * @return float - */ - public static function PRICEMAT($settlement, $maturity, $issue, $rate, $yield, $basis = 0) - { - $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); - $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity); - $issue = PHPExcel_Calculation_Functions::flattenSingleValue($issue); - $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate); - $yield = PHPExcel_Calculation_Functions::flattenSingleValue($yield); - $basis = (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis); - - // Validate - if (is_numeric($rate) && is_numeric($yield)) { - if (($rate <= 0) || ($yield <= 0)) { - return PHPExcel_Calculation_Functions::NaN(); - } - $daysPerYear = self::daysPerYear(PHPExcel_Calculation_DateTime::YEAR($settlement), $basis); - if (!is_numeric($daysPerYear)) { - return $daysPerYear; - } - $daysBetweenIssueAndSettlement = PHPExcel_Calculation_DateTime::YEARFRAC($issue, $settlement, $basis); - if (!is_numeric($daysBetweenIssueAndSettlement)) { - // return date error - return $daysBetweenIssueAndSettlement; - } - $daysBetweenIssueAndSettlement *= $daysPerYear; - $daysBetweenIssueAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($issue, $maturity, $basis); - if (!is_numeric($daysBetweenIssueAndMaturity)) { - // return date error - return $daysBetweenIssueAndMaturity; - } - $daysBetweenIssueAndMaturity *= $daysPerYear; - $daysBetweenSettlementAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $maturity, $basis); - if (!is_numeric($daysBetweenSettlementAndMaturity)) { - // return date error - return $daysBetweenSettlementAndMaturity; - } - $daysBetweenSettlementAndMaturity *= $daysPerYear; - - return ((100 + (($daysBetweenIssueAndMaturity / $daysPerYear) * $rate * 100)) / - (1 + (($daysBetweenSettlementAndMaturity / $daysPerYear) * $yield)) - - (($daysBetweenIssueAndSettlement / $daysPerYear) * $rate * 100)); - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * PV - * - * Returns the Present Value of a cash flow with constant payments and interest rate (annuities). - * - * @param float $rate Interest rate per period - * @param int $nper Number of periods - * @param float $pmt Periodic payment (annuity) - * @param float $fv Future Value - * @param int $type Payment type: 0 = at the end of each period, 1 = at the beginning of each period - * @return float - */ - public static function PV($rate = 0, $nper = 0, $pmt = 0, $fv = 0, $type = 0) - { - $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate); - $nper = PHPExcel_Calculation_Functions::flattenSingleValue($nper); - $pmt = PHPExcel_Calculation_Functions::flattenSingleValue($pmt); - $fv = PHPExcel_Calculation_Functions::flattenSingleValue($fv); - $type = PHPExcel_Calculation_Functions::flattenSingleValue($type); - - // Validate parameters - if ($type != 0 && $type != 1) { - return PHPExcel_Calculation_Functions::NaN(); - } - - // Calculate - if (!is_null($rate) && $rate != 0) { - return (-$pmt * (1 + $rate * $type) * ((pow(1 + $rate, $nper) - 1) / $rate) - $fv) / pow(1 + $rate, $nper); - } - return -$fv - $pmt * $nper; - } - - - /** - * RATE - * - * Returns the interest rate per period of an annuity. - * RATE is calculated by iteration and can have zero or more solutions. - * If the successive results of RATE do not converge to within 0.0000001 after 20 iterations, - * RATE returns the #NUM! error value. - * - * Excel Function: - * RATE(nper,pmt,pv[,fv[,type[,guess]]]) - * - * @access public - * @category Financial Functions - * @param float nper The total number of payment periods in an annuity. - * @param float pmt The payment made each period and cannot change over the life - * of the annuity. - * Typically, pmt includes principal and interest but no other - * fees or taxes. - * @param float pv The present value - the total amount that a series of future - * payments is worth now. - * @param float fv The future value, or a cash balance you want to attain after - * the last payment is made. If fv is omitted, it is assumed - * to be 0 (the future value of a loan, for example, is 0). - * @param integer type A number 0 or 1 and indicates when payments are due: - * 0 or omitted At the end of the period. - * 1 At the beginning of the period. - * @param float guess Your guess for what the rate will be. - * If you omit guess, it is assumed to be 10 percent. - * @return float - **/ - public static function RATE($nper, $pmt, $pv, $fv = 0.0, $type = 0, $guess = 0.1) - { - $nper = (int) PHPExcel_Calculation_Functions::flattenSingleValue($nper); - $pmt = PHPExcel_Calculation_Functions::flattenSingleValue($pmt); - $pv = PHPExcel_Calculation_Functions::flattenSingleValue($pv); - $fv = (is_null($fv)) ? 0.0 : PHPExcel_Calculation_Functions::flattenSingleValue($fv); - $type = (is_null($type)) ? 0 : (int) PHPExcel_Calculation_Functions::flattenSingleValue($type); - $guess = (is_null($guess)) ? 0.1 : PHPExcel_Calculation_Functions::flattenSingleValue($guess); - - $rate = $guess; - if (abs($rate) < FINANCIAL_PRECISION) { - $y = $pv * (1 + $nper * $rate) + $pmt * (1 + $rate * $type) * $nper + $fv; - } else { - $f = exp($nper * log(1 + $rate)); - $y = $pv * $f + $pmt * (1 / $rate + $type) * ($f - 1) + $fv; - } - $y0 = $pv + $pmt * $nper + $fv; - $y1 = $pv * $f + $pmt * (1 / $rate + $type) * ($f - 1) + $fv; - - // find root by secant method - $i = $x0 = 0.0; - $x1 = $rate; - while ((abs($y0 - $y1) > FINANCIAL_PRECISION) && ($i < FINANCIAL_MAX_ITERATIONS)) { - $rate = ($y1 * $x0 - $y0 * $x1) / ($y1 - $y0); - $x0 = $x1; - $x1 = $rate; - if (($nper * abs($pmt)) > ($pv - $fv)) { - $x1 = abs($x1); - } - if (abs($rate) < FINANCIAL_PRECISION) { - $y = $pv * (1 + $nper * $rate) + $pmt * (1 + $rate * $type) * $nper + $fv; - } else { - $f = exp($nper * log(1 + $rate)); - $y = $pv * $f + $pmt * (1 / $rate + $type) * ($f - 1) + $fv; - } - - $y0 = $y1; - $y1 = $y; - ++$i; - } - return $rate; - } - - - /** - * RECEIVED - * - * Returns the price per $100 face value of a discounted security. - * - * @param mixed settlement The security's settlement date. - * The security settlement date is the date after the issue date when the security is traded to the buyer. - * @param mixed maturity The security's maturity date. - * The maturity date is the date when the security expires. - * @param int investment The amount invested in the security. - * @param int discount The security's discount rate. - * @param int basis The type of day count to use. - * 0 or omitted US (NASD) 30/360 - * 1 Actual/actual - * 2 Actual/360 - * 3 Actual/365 - * 4 European 30/360 - * @return float - */ - public static function RECEIVED($settlement, $maturity, $investment, $discount, $basis = 0) - { - $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); - $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity); - $investment = (float) PHPExcel_Calculation_Functions::flattenSingleValue($investment); - $discount = (float) PHPExcel_Calculation_Functions::flattenSingleValue($discount); - $basis = (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis); - - // Validate - if ((is_numeric($investment)) && (is_numeric($discount)) && (is_numeric($basis))) { - if (($investment <= 0) || ($discount <= 0)) { - return PHPExcel_Calculation_Functions::NaN(); - } - $daysBetweenSettlementAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $maturity, $basis); - if (!is_numeric($daysBetweenSettlementAndMaturity)) { - // return date error - return $daysBetweenSettlementAndMaturity; - } - - return $investment / ( 1 - ($discount * $daysBetweenSettlementAndMaturity)); - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * SLN - * - * Returns the straight-line depreciation of an asset for one period - * - * @param cost Initial cost of the asset - * @param salvage Value at the end of the depreciation - * @param life Number of periods over which the asset is depreciated - * @return float - */ - public static function SLN($cost, $salvage, $life) - { - $cost = PHPExcel_Calculation_Functions::flattenSingleValue($cost); - $salvage = PHPExcel_Calculation_Functions::flattenSingleValue($salvage); - $life = PHPExcel_Calculation_Functions::flattenSingleValue($life); - - // Calculate - if ((is_numeric($cost)) && (is_numeric($salvage)) && (is_numeric($life))) { - if ($life < 0) { - return PHPExcel_Calculation_Functions::NaN(); - } - return ($cost - $salvage) / $life; - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * SYD - * - * Returns the sum-of-years' digits depreciation of an asset for a specified period. - * - * @param cost Initial cost of the asset - * @param salvage Value at the end of the depreciation - * @param life Number of periods over which the asset is depreciated - * @param period Period - * @return float - */ - public static function SYD($cost, $salvage, $life, $period) - { - $cost = PHPExcel_Calculation_Functions::flattenSingleValue($cost); - $salvage = PHPExcel_Calculation_Functions::flattenSingleValue($salvage); - $life = PHPExcel_Calculation_Functions::flattenSingleValue($life); - $period = PHPExcel_Calculation_Functions::flattenSingleValue($period); - - // Calculate - if ((is_numeric($cost)) && (is_numeric($salvage)) && (is_numeric($life)) && (is_numeric($period))) { - if (($life < 1) || ($period > $life)) { - return PHPExcel_Calculation_Functions::NaN(); - } - return (($cost - $salvage) * ($life - $period + 1) * 2) / ($life * ($life + 1)); - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * TBILLEQ - * - * Returns the bond-equivalent yield for a Treasury bill. - * - * @param mixed settlement The Treasury bill's settlement date. - * The Treasury bill's settlement date is the date after the issue date when the Treasury bill is traded to the buyer. - * @param mixed maturity The Treasury bill's maturity date. - * The maturity date is the date when the Treasury bill expires. - * @param int discount The Treasury bill's discount rate. - * @return float - */ - public static function TBILLEQ($settlement, $maturity, $discount) - { - $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); - $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity); - $discount = PHPExcel_Calculation_Functions::flattenSingleValue($discount); - - // Use TBILLPRICE for validation - $testValue = self::TBILLPRICE($settlement, $maturity, $discount); - if (is_string($testValue)) { - return $testValue; - } - - if (is_string($maturity = PHPExcel_Calculation_DateTime::getDateValue($maturity))) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) { - ++$maturity; - $daysBetweenSettlementAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $maturity) * 360; - } else { - $daysBetweenSettlementAndMaturity = (PHPExcel_Calculation_DateTime::getDateValue($maturity) - PHPExcel_Calculation_DateTime::getDateValue($settlement)); - } - - return (365 * $discount) / (360 - $discount * $daysBetweenSettlementAndMaturity); - } - - - /** - * TBILLPRICE - * - * Returns the yield for a Treasury bill. - * - * @param mixed settlement The Treasury bill's settlement date. - * The Treasury bill's settlement date is the date after the issue date when the Treasury bill is traded to the buyer. - * @param mixed maturity The Treasury bill's maturity date. - * The maturity date is the date when the Treasury bill expires. - * @param int discount The Treasury bill's discount rate. - * @return float - */ - public static function TBILLPRICE($settlement, $maturity, $discount) - { - $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); - $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity); - $discount = PHPExcel_Calculation_Functions::flattenSingleValue($discount); - - if (is_string($maturity = PHPExcel_Calculation_DateTime::getDateValue($maturity))) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - // Validate - if (is_numeric($discount)) { - if ($discount <= 0) { - return PHPExcel_Calculation_Functions::NaN(); - } - - if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) { - ++$maturity; - $daysBetweenSettlementAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $maturity) * 360; - if (!is_numeric($daysBetweenSettlementAndMaturity)) { - // return date error - return $daysBetweenSettlementAndMaturity; - } - } else { - $daysBetweenSettlementAndMaturity = (PHPExcel_Calculation_DateTime::getDateValue($maturity) - PHPExcel_Calculation_DateTime::getDateValue($settlement)); - } - - if ($daysBetweenSettlementAndMaturity > 360) { - return PHPExcel_Calculation_Functions::NaN(); - } - - $price = 100 * (1 - (($discount * $daysBetweenSettlementAndMaturity) / 360)); - if ($price <= 0) { - return PHPExcel_Calculation_Functions::NaN(); - } - return $price; - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * TBILLYIELD - * - * Returns the yield for a Treasury bill. - * - * @param mixed settlement The Treasury bill's settlement date. - * The Treasury bill's settlement date is the date after the issue date when the Treasury bill is traded to the buyer. - * @param mixed maturity The Treasury bill's maturity date. - * The maturity date is the date when the Treasury bill expires. - * @param int price The Treasury bill's price per $100 face value. - * @return float - */ - public static function TBILLYIELD($settlement, $maturity, $price) - { - $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); - $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity); - $price = PHPExcel_Calculation_Functions::flattenSingleValue($price); - - // Validate - if (is_numeric($price)) { - if ($price <= 0) { - return PHPExcel_Calculation_Functions::NaN(); - } - - if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) { - ++$maturity; - $daysBetweenSettlementAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $maturity) * 360; - if (!is_numeric($daysBetweenSettlementAndMaturity)) { - // return date error - return $daysBetweenSettlementAndMaturity; - } - } else { - $daysBetweenSettlementAndMaturity = (PHPExcel_Calculation_DateTime::getDateValue($maturity) - PHPExcel_Calculation_DateTime::getDateValue($settlement)); - } - - if ($daysBetweenSettlementAndMaturity > 360) { - return PHPExcel_Calculation_Functions::NaN(); - } - - return ((100 - $price) / $price) * (360 / $daysBetweenSettlementAndMaturity); - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - public static function XIRR($values, $dates, $guess = 0.1) - { - if ((!is_array($values)) && (!is_array($dates))) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $values = PHPExcel_Calculation_Functions::flattenArray($values); - $dates = PHPExcel_Calculation_Functions::flattenArray($dates); - $guess = PHPExcel_Calculation_Functions::flattenSingleValue($guess); - if (count($values) != count($dates)) { - return PHPExcel_Calculation_Functions::NaN(); - } - - // create an initial range, with a root somewhere between 0 and guess - $x1 = 0.0; - $x2 = $guess; - $f1 = self::XNPV($x1, $values, $dates); - $f2 = self::XNPV($x2, $values, $dates); - for ($i = 0; $i < FINANCIAL_MAX_ITERATIONS; ++$i) { - if (($f1 * $f2) < 0.0) { - break; - } elseif (abs($f1) < abs($f2)) { - $f1 = self::XNPV($x1 += 1.6 * ($x1 - $x2), $values, $dates); - } else { - $f2 = self::XNPV($x2 += 1.6 * ($x2 - $x1), $values, $dates); - } - } - if (($f1 * $f2) > 0.0) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - $f = self::XNPV($x1, $values, $dates); - if ($f < 0.0) { - $rtb = $x1; - $dx = $x2 - $x1; - } else { - $rtb = $x2; - $dx = $x1 - $x2; - } - - for ($i = 0; $i < FINANCIAL_MAX_ITERATIONS; ++$i) { - $dx *= 0.5; - $x_mid = $rtb + $dx; - $f_mid = self::XNPV($x_mid, $values, $dates); - if ($f_mid <= 0.0) { - $rtb = $x_mid; - } - if ((abs($f_mid) < FINANCIAL_PRECISION) || (abs($dx) < FINANCIAL_PRECISION)) { - return $x_mid; - } - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * XNPV - * - * Returns the net present value for a schedule of cash flows that is not necessarily periodic. - * To calculate the net present value for a series of cash flows that is periodic, use the NPV function. - * - * Excel Function: - * =XNPV(rate,values,dates) - * - * @param float $rate The discount rate to apply to the cash flows. - * @param array of float $values A series of cash flows that corresponds to a schedule of payments in dates. - * The first payment is optional and corresponds to a cost or payment that occurs at the beginning of the investment. - * If the first value is a cost or payment, it must be a negative value. All succeeding payments are discounted based on a 365-day year. - * The series of values must contain at least one positive value and one negative value. - * @param array of mixed $dates A schedule of payment dates that corresponds to the cash flow payments. - * The first payment date indicates the beginning of the schedule of payments. - * All other dates must be later than this date, but they may occur in any order. - * @return float - */ - public static function XNPV($rate, $values, $dates) - { - $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate); - if (!is_numeric($rate)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - if ((!is_array($values)) || (!is_array($dates))) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $values = PHPExcel_Calculation_Functions::flattenArray($values); - $dates = PHPExcel_Calculation_Functions::flattenArray($dates); - $valCount = count($values); - if ($valCount != count($dates)) { - return PHPExcel_Calculation_Functions::NaN(); - } - if ((min($values) > 0) || (max($values) < 0)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - $xnpv = 0.0; - for ($i = 0; $i < $valCount; ++$i) { - if (!is_numeric($values[$i])) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $xnpv += $values[$i] / pow(1 + $rate, PHPExcel_Calculation_DateTime::DATEDIF($dates[0], $dates[$i], 'd') / 365); - } - return (is_finite($xnpv)) ? $xnpv : PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * YIELDDISC - * - * Returns the annual yield of a security that pays interest at maturity. - * - * @param mixed settlement The security's settlement date. - * The security's settlement date is the date after the issue date when the security is traded to the buyer. - * @param mixed maturity The security's maturity date. - * The maturity date is the date when the security expires. - * @param int price The security's price per $100 face value. - * @param int redemption The security's redemption value per $100 face value. - * @param int basis The type of day count to use. - * 0 or omitted US (NASD) 30/360 - * 1 Actual/actual - * 2 Actual/360 - * 3 Actual/365 - * 4 European 30/360 - * @return float - */ - public static function YIELDDISC($settlement, $maturity, $price, $redemption, $basis = 0) - { - $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); - $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity); - $price = PHPExcel_Calculation_Functions::flattenSingleValue($price); - $redemption = PHPExcel_Calculation_Functions::flattenSingleValue($redemption); - $basis = (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis); - - // Validate - if (is_numeric($price) && is_numeric($redemption)) { - if (($price <= 0) || ($redemption <= 0)) { - return PHPExcel_Calculation_Functions::NaN(); - } - $daysPerYear = self::daysPerYear(PHPExcel_Calculation_DateTime::YEAR($settlement), $basis); - if (!is_numeric($daysPerYear)) { - return $daysPerYear; - } - $daysBetweenSettlementAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $maturity, $basis); - if (!is_numeric($daysBetweenSettlementAndMaturity)) { - // return date error - return $daysBetweenSettlementAndMaturity; - } - $daysBetweenSettlementAndMaturity *= $daysPerYear; - - return (($redemption - $price) / $price) * ($daysPerYear / $daysBetweenSettlementAndMaturity); - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * YIELDMAT - * - * Returns the annual yield of a security that pays interest at maturity. - * - * @param mixed settlement The security's settlement date. - * The security's settlement date is the date after the issue date when the security is traded to the buyer. - * @param mixed maturity The security's maturity date. - * The maturity date is the date when the security expires. - * @param mixed issue The security's issue date. - * @param int rate The security's interest rate at date of issue. - * @param int price The security's price per $100 face value. - * @param int basis The type of day count to use. - * 0 or omitted US (NASD) 30/360 - * 1 Actual/actual - * 2 Actual/360 - * 3 Actual/365 - * 4 European 30/360 - * @return float - */ - public static function YIELDMAT($settlement, $maturity, $issue, $rate, $price, $basis = 0) - { - $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); - $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity); - $issue = PHPExcel_Calculation_Functions::flattenSingleValue($issue); - $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate); - $price = PHPExcel_Calculation_Functions::flattenSingleValue($price); - $basis = (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis); - - // Validate - if (is_numeric($rate) && is_numeric($price)) { - if (($rate <= 0) || ($price <= 0)) { - return PHPExcel_Calculation_Functions::NaN(); - } - $daysPerYear = self::daysPerYear(PHPExcel_Calculation_DateTime::YEAR($settlement), $basis); - if (!is_numeric($daysPerYear)) { - return $daysPerYear; - } - $daysBetweenIssueAndSettlement = PHPExcel_Calculation_DateTime::YEARFRAC($issue, $settlement, $basis); - if (!is_numeric($daysBetweenIssueAndSettlement)) { - // return date error - return $daysBetweenIssueAndSettlement; - } - $daysBetweenIssueAndSettlement *= $daysPerYear; - $daysBetweenIssueAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($issue, $maturity, $basis); - if (!is_numeric($daysBetweenIssueAndMaturity)) { - // return date error - return $daysBetweenIssueAndMaturity; - } - $daysBetweenIssueAndMaturity *= $daysPerYear; - $daysBetweenSettlementAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $maturity, $basis); - if (!is_numeric($daysBetweenSettlementAndMaturity)) { - // return date error - return $daysBetweenSettlementAndMaturity; - } - $daysBetweenSettlementAndMaturity *= $daysPerYear; - - return ((1 + (($daysBetweenIssueAndMaturity / $daysPerYear) * $rate) - (($price / 100) + (($daysBetweenIssueAndSettlement / $daysPerYear) * $rate))) / - (($price / 100) + (($daysBetweenIssueAndSettlement / $daysPerYear) * $rate))) * - ($daysPerYear / $daysBetweenSettlementAndMaturity); - } - return PHPExcel_Calculation_Functions::VALUE(); - } -} diff --git a/application/third_party/PHPExcel/Calculation/FormulaParser.php b/application/third_party/PHPExcel/Calculation/FormulaParser.php deleted file mode 100644 index 893f19e9..00000000 --- a/application/third_party/PHPExcel/Calculation/FormulaParser.php +++ /dev/null @@ -1,622 +0,0 @@ -<"; - const OPERATORS_POSTFIX = "%"; - - /** - * Formula - * - * @var string - */ - private $formula; - - /** - * Tokens - * - * @var PHPExcel_Calculation_FormulaToken[] - */ - private $tokens = array(); - - /** - * Create a new PHPExcel_Calculation_FormulaParser - * - * @param string $pFormula Formula to parse - * @throws PHPExcel_Calculation_Exception - */ - public function __construct($pFormula = '') - { - // Check parameters - if (is_null($pFormula)) { - throw new PHPExcel_Calculation_Exception("Invalid parameter passed: formula"); - } - - // Initialise values - $this->formula = trim($pFormula); - // Parse! - $this->parseToTokens(); - } - - /** - * Get Formula - * - * @return string - */ - public function getFormula() - { - return $this->formula; - } - - /** - * Get Token - * - * @param int $pId Token id - * @return string - * @throws PHPExcel_Calculation_Exception - */ - public function getToken($pId = 0) - { - if (isset($this->tokens[$pId])) { - return $this->tokens[$pId]; - } else { - throw new PHPExcel_Calculation_Exception("Token with id $pId does not exist."); - } - } - - /** - * Get Token count - * - * @return string - */ - public function getTokenCount() - { - return count($this->tokens); - } - - /** - * Get Tokens - * - * @return PHPExcel_Calculation_FormulaToken[] - */ - public function getTokens() - { - return $this->tokens; - } - - /** - * Parse to tokens - */ - private function parseToTokens() - { - // No attempt is made to verify formulas; assumes formulas are derived from Excel, where - // they can only exist if valid; stack overflows/underflows sunk as nulls without exceptions. - - // Check if the formula has a valid starting = - $formulaLength = strlen($this->formula); - if ($formulaLength < 2 || $this->formula{0} != '=') { - return; - } - - // Helper variables - $tokens1 = $tokens2 = $stack = array(); - $inString = $inPath = $inRange = $inError = false; - $token = $previousToken = $nextToken = null; - - $index = 1; - $value = ''; - - $ERRORS = array("#NULL!", "#DIV/0!", "#VALUE!", "#REF!", "#NAME?", "#NUM!", "#N/A"); - $COMPARATORS_MULTI = array(">=", "<=", "<>"); - - while ($index < $formulaLength) { - // state-dependent character evaluation (order is important) - - // double-quoted strings - // embeds are doubled - // end marks token - if ($inString) { - if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::QUOTE_DOUBLE) { - if ((($index + 2) <= $formulaLength) && ($this->formula{$index + 1} == PHPExcel_Calculation_FormulaParser::QUOTE_DOUBLE)) { - $value .= PHPExcel_Calculation_FormulaParser::QUOTE_DOUBLE; - ++$index; - } else { - $inString = false; - $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND, PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_TEXT); - $value = ""; - } - } else { - $value .= $this->formula{$index}; - } - ++$index; - continue; - } - - // single-quoted strings (links) - // embeds are double - // end does not mark a token - if ($inPath) { - if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::QUOTE_SINGLE) { - if ((($index + 2) <= $formulaLength) && ($this->formula{$index + 1} == PHPExcel_Calculation_FormulaParser::QUOTE_SINGLE)) { - $value .= PHPExcel_Calculation_FormulaParser::QUOTE_SINGLE; - ++$index; - } else { - $inPath = false; - } - } else { - $value .= $this->formula{$index}; - } - ++$index; - continue; - } - - // bracked strings (R1C1 range index or linked workbook name) - // no embeds (changed to "()" by Excel) - // end does not mark a token - if ($inRange) { - if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::BRACKET_CLOSE) { - $inRange = false; - } - $value .= $this->formula{$index}; - ++$index; - continue; - } - - // error values - // end marks a token, determined from absolute list of values - if ($inError) { - $value .= $this->formula{$index}; - ++$index; - if (in_array($value, $ERRORS)) { - $inError = false; - $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND, PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_ERROR); - $value = ""; - } - continue; - } - - // scientific notation check - if (strpos(PHPExcel_Calculation_FormulaParser::OPERATORS_SN, $this->formula{$index}) !== false) { - if (strlen($value) > 1) { - if (preg_match("/^[1-9]{1}(\.[0-9]+)?E{1}$/", $this->formula{$index}) != 0) { - $value .= $this->formula{$index}; - ++$index; - continue; - } - } - } - - // independent character evaluation (order not important) - - // establish state-dependent character evaluations - if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::QUOTE_DOUBLE) { - if (strlen($value > 0)) { - // unexpected - $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_UNKNOWN); - $value = ""; - } - $inString = true; - ++$index; - continue; - } - - if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::QUOTE_SINGLE) { - if (strlen($value) > 0) { - // unexpected - $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_UNKNOWN); - $value = ""; - } - $inPath = true; - ++$index; - continue; - } - - if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::BRACKET_OPEN) { - $inRange = true; - $value .= PHPExcel_Calculation_FormulaParser::BRACKET_OPEN; - ++$index; - continue; - } - - if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::ERROR_START) { - if (strlen($value) > 0) { - // unexpected - $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_UNKNOWN); - $value = ""; - } - $inError = true; - $value .= PHPExcel_Calculation_FormulaParser::ERROR_START; - ++$index; - continue; - } - - // mark start and end of arrays and array rows - if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::BRACE_OPEN) { - if (strlen($value) > 0) { - // unexpected - $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_UNKNOWN); - $value = ""; - } - - $tmp = new PHPExcel_Calculation_FormulaToken("ARRAY", PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_FUNCTION, PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_START); - $tokens1[] = $tmp; - $stack[] = clone $tmp; - - $tmp = new PHPExcel_Calculation_FormulaToken("ARRAYROW", PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_FUNCTION, PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_START); - $tokens1[] = $tmp; - $stack[] = clone $tmp; - - ++$index; - continue; - } - - if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::SEMICOLON) { - if (strlen($value) > 0) { - $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND); - $value = ""; - } - - $tmp = array_pop($stack); - $tmp->setValue(""); - $tmp->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_STOP); - $tokens1[] = $tmp; - - $tmp = new PHPExcel_Calculation_FormulaToken(",", PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_ARGUMENT); - $tokens1[] = $tmp; - - $tmp = new PHPExcel_Calculation_FormulaToken("ARRAYROW", PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_FUNCTION, PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_START); - $tokens1[] = $tmp; - $stack[] = clone $tmp; - - ++$index; - continue; - } - - if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::BRACE_CLOSE) { - if (strlen($value) > 0) { - $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND); - $value = ""; - } - - $tmp = array_pop($stack); - $tmp->setValue(""); - $tmp->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_STOP); - $tokens1[] = $tmp; - - $tmp = array_pop($stack); - $tmp->setValue(""); - $tmp->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_STOP); - $tokens1[] = $tmp; - - ++$index; - continue; - } - - // trim white-space - if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::WHITESPACE) { - if (strlen($value) > 0) { - $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND); - $value = ""; - } - $tokens1[] = new PHPExcel_Calculation_FormulaToken("", PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_WHITESPACE); - ++$index; - while (($this->formula{$index} == PHPExcel_Calculation_FormulaParser::WHITESPACE) && ($index < $formulaLength)) { - ++$index; - } - continue; - } - - // multi-character comparators - if (($index + 2) <= $formulaLength) { - if (in_array(substr($this->formula, $index, 2), $COMPARATORS_MULTI)) { - if (strlen($value) > 0) { - $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND); - $value = ""; - } - $tokens1[] = new PHPExcel_Calculation_FormulaToken(substr($this->formula, $index, 2), PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORINFIX, PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_LOGICAL); - $index += 2; - continue; - } - } - - // standard infix operators - if (strpos(PHPExcel_Calculation_FormulaParser::OPERATORS_INFIX, $this->formula{$index}) !== false) { - if (strlen($value) > 0) { - $tokens1[] =new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND); - $value = ""; - } - $tokens1[] = new PHPExcel_Calculation_FormulaToken($this->formula{$index}, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORINFIX); - ++$index; - continue; - } - - // standard postfix operators (only one) - if (strpos(PHPExcel_Calculation_FormulaParser::OPERATORS_POSTFIX, $this->formula{$index}) !== false) { - if (strlen($value) > 0) { - $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND); - $value = ""; - } - $tokens1[] = new PHPExcel_Calculation_FormulaToken($this->formula{$index}, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORPOSTFIX); - ++$index; - continue; - } - - // start subexpression or function - if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::PAREN_OPEN) { - if (strlen($value) > 0) { - $tmp = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_FUNCTION, PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_START); - $tokens1[] = $tmp; - $stack[] = clone $tmp; - $value = ""; - } else { - $tmp = new PHPExcel_Calculation_FormulaToken("", PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_SUBEXPRESSION, PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_START); - $tokens1[] = $tmp; - $stack[] = clone $tmp; - } - ++$index; - continue; - } - - // function, subexpression, or array parameters, or operand unions - if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::COMMA) { - if (strlen($value) > 0) { - $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND); - $value = ""; - } - - $tmp = array_pop($stack); - $tmp->setValue(""); - $tmp->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_STOP); - $stack[] = $tmp; - - if ($tmp->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_FUNCTION) { - $tokens1[] = new PHPExcel_Calculation_FormulaToken(",", PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORINFIX, PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_UNION); - } else { - $tokens1[] = new PHPExcel_Calculation_FormulaToken(",", PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_ARGUMENT); - } - ++$index; - continue; - } - - // stop subexpression - if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::PAREN_CLOSE) { - if (strlen($value) > 0) { - $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND); - $value = ""; - } - - $tmp = array_pop($stack); - $tmp->setValue(""); - $tmp->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_STOP); - $tokens1[] = $tmp; - - ++$index; - continue; - } - - // token accumulation - $value .= $this->formula{$index}; - ++$index; - } - - // dump remaining accumulation - if (strlen($value) > 0) { - $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND); - } - - // move tokenList to new set, excluding unnecessary white-space tokens and converting necessary ones to intersections - $tokenCount = count($tokens1); - for ($i = 0; $i < $tokenCount; ++$i) { - $token = $tokens1[$i]; - if (isset($tokens1[$i - 1])) { - $previousToken = $tokens1[$i - 1]; - } else { - $previousToken = null; - } - if (isset($tokens1[$i + 1])) { - $nextToken = $tokens1[$i + 1]; - } else { - $nextToken = null; - } - - if (is_null($token)) { - continue; - } - - if ($token->getTokenType() != PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_WHITESPACE) { - $tokens2[] = $token; - continue; - } - - if (is_null($previousToken)) { - continue; - } - - if (! ( - (($previousToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_FUNCTION) && ($previousToken->getTokenSubType() == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_STOP)) || - (($previousToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_SUBEXPRESSION) && ($previousToken->getTokenSubType() == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_STOP)) || - ($previousToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND) - ) ) { - continue; - } - - if (is_null($nextToken)) { - continue; - } - - if (! ( - (($nextToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_FUNCTION) && ($nextToken->getTokenSubType() == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_START)) || - (($nextToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_SUBEXPRESSION) && ($nextToken->getTokenSubType() == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_START)) || - ($nextToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND) - ) ) { - continue; - } - - $tokens2[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORINFIX, PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_INTERSECTION); - } - - // move tokens to final list, switching infix "-" operators to prefix when appropriate, switching infix "+" operators - // to noop when appropriate, identifying operand and infix-operator subtypes, and pulling "@" from function names - $this->tokens = array(); - - $tokenCount = count($tokens2); - for ($i = 0; $i < $tokenCount; ++$i) { - $token = $tokens2[$i]; - if (isset($tokens2[$i - 1])) { - $previousToken = $tokens2[$i - 1]; - } else { - $previousToken = null; - } - if (isset($tokens2[$i + 1])) { - $nextToken = $tokens2[$i + 1]; - } else { - $nextToken = null; - } - - if (is_null($token)) { - continue; - } - - if ($token->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORINFIX && $token->getValue() == "-") { - if ($i == 0) { - $token->setTokenType(PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORPREFIX); - } elseif ((($previousToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_FUNCTION) && - ($previousToken->getTokenSubType() == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_STOP)) || - (($previousToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_SUBEXPRESSION) && - ($previousToken->getTokenSubType() == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_STOP)) || - ($previousToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORPOSTFIX) || - ($previousToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND)) { - $token->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_MATH); - } else { - $token->setTokenType(PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORPREFIX); - } - - $this->tokens[] = $token; - continue; - } - - if ($token->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORINFIX && $token->getValue() == "+") { - if ($i == 0) { - continue; - } elseif ((($previousToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_FUNCTION) && - ($previousToken->getTokenSubType() == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_STOP)) || - (($previousToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_SUBEXPRESSION) && - ($previousToken->getTokenSubType() == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_STOP)) || - ($previousToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORPOSTFIX) || - ($previousToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND)) { - $token->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_MATH); - } else { - continue; - } - - $this->tokens[] = $token; - continue; - } - - if ($token->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORINFIX && - $token->getTokenSubType() == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_NOTHING) { - if (strpos("<>=", substr($token->getValue(), 0, 1)) !== false) { - $token->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_LOGICAL); - } elseif ($token->getValue() == "&") { - $token->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_CONCATENATION); - } else { - $token->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_MATH); - } - - $this->tokens[] = $token; - continue; - } - - if ($token->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND && - $token->getTokenSubType() == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_NOTHING) { - if (!is_numeric($token->getValue())) { - if (strtoupper($token->getValue()) == "TRUE" || strtoupper($token->getValue() == "FALSE")) { - $token->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_LOGICAL); - } else { - $token->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_RANGE); - } - } else { - $token->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_NUMBER); - } - - $this->tokens[] = $token; - continue; - } - - if ($token->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_FUNCTION) { - if (strlen($token->getValue() > 0)) { - if (substr($token->getValue(), 0, 1) == "@") { - $token->setValue(substr($token->getValue(), 1)); - } - } - } - - $this->tokens[] = $token; - } - } -} diff --git a/application/third_party/PHPExcel/Calculation/FormulaToken.php b/application/third_party/PHPExcel/Calculation/FormulaToken.php deleted file mode 100644 index 41c6e3d5..00000000 --- a/application/third_party/PHPExcel/Calculation/FormulaToken.php +++ /dev/null @@ -1,176 +0,0 @@ -value = $pValue; - $this->tokenType = $pTokenType; - $this->tokenSubType = $pTokenSubType; - } - - /** - * Get Value - * - * @return string - */ - public function getValue() - { - return $this->value; - } - - /** - * Set Value - * - * @param string $value - */ - public function setValue($value) - { - $this->value = $value; - } - - /** - * Get Token Type (represented by TOKEN_TYPE_*) - * - * @return string - */ - public function getTokenType() - { - return $this->tokenType; - } - - /** - * Set Token Type - * - * @param string $value - */ - public function setTokenType($value = PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_UNKNOWN) - { - $this->tokenType = $value; - } - - /** - * Get Token SubType (represented by TOKEN_SUBTYPE_*) - * - * @return string - */ - public function getTokenSubType() - { - return $this->tokenSubType; - } - - /** - * Set Token SubType - * - * @param string $value - */ - public function setTokenSubType($value = PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_NOTHING) - { - $this->tokenSubType = $value; - } -} diff --git a/application/third_party/PHPExcel/Calculation/Function.php b/application/third_party/PHPExcel/Calculation/Function.php deleted file mode 100644 index d58cef25..00000000 --- a/application/third_party/PHPExcel/Calculation/Function.php +++ /dev/null @@ -1,148 +0,0 @@ -category = $pCategory; - $this->excelName = $pExcelName; - $this->phpExcelName = $pPHPExcelName; - } else { - throw new PHPExcel_Calculation_Exception("Invalid parameters passed."); - } - } - - /** - * Get Category (represented by CATEGORY_*) - * - * @return string - */ - public function getCategory() - { - return $this->category; - } - - /** - * Set Category (represented by CATEGORY_*) - * - * @param string $value - * @throws PHPExcel_Calculation_Exception - */ - public function setCategory($value = null) - { - if (!is_null($value)) { - $this->category = $value; - } else { - throw new PHPExcel_Calculation_Exception("Invalid parameter passed."); - } - } - - /** - * Get Excel name - * - * @return string - */ - public function getExcelName() - { - return $this->excelName; - } - - /** - * Set Excel name - * - * @param string $value - */ - public function setExcelName($value) - { - $this->excelName = $value; - } - - /** - * Get PHPExcel name - * - * @return string - */ - public function getPHPExcelName() - { - return $this->phpExcelName; - } - - /** - * Set PHPExcel name - * - * @param string $value - */ - public function setPHPExcelName($value) - { - $this->phpExcelName = $value; - } -} diff --git a/application/third_party/PHPExcel/Calculation/Functions.php b/application/third_party/PHPExcel/Calculation/Functions.php deleted file mode 100644 index 5a1e5ee5..00000000 --- a/application/third_party/PHPExcel/Calculation/Functions.php +++ /dev/null @@ -1,760 +0,0 @@ - '#NULL!', - 'divisionbyzero' => '#DIV/0!', - 'value' => '#VALUE!', - 'reference' => '#REF!', - 'name' => '#NAME?', - 'num' => '#NUM!', - 'na' => '#N/A', - 'gettingdata' => '#GETTING_DATA' - ); - - - /** - * Set the Compatibility Mode - * - * @access public - * @category Function Configuration - * @param string $compatibilityMode Compatibility Mode - * Permitted values are: - * PHPExcel_Calculation_Functions::COMPATIBILITY_EXCEL 'Excel' - * PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC 'Gnumeric' - * PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE 'OpenOfficeCalc' - * @return boolean (Success or Failure) - */ - public static function setCompatibilityMode($compatibilityMode) - { - if (($compatibilityMode == self::COMPATIBILITY_EXCEL) || - ($compatibilityMode == self::COMPATIBILITY_GNUMERIC) || - ($compatibilityMode == self::COMPATIBILITY_OPENOFFICE)) { - self::$compatibilityMode = $compatibilityMode; - return true; - } - return false; - } - - - /** - * Return the current Compatibility Mode - * - * @access public - * @category Function Configuration - * @return string Compatibility Mode - * Possible Return values are: - * PHPExcel_Calculation_Functions::COMPATIBILITY_EXCEL 'Excel' - * PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC 'Gnumeric' - * PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE 'OpenOfficeCalc' - */ - public static function getCompatibilityMode() - { - return self::$compatibilityMode; - } - - - /** - * Set the Return Date Format used by functions that return a date/time (Excel, PHP Serialized Numeric or PHP Object) - * - * @access public - * @category Function Configuration - * @param string $returnDateType Return Date Format - * Permitted values are: - * PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC 'P' - * PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT 'O' - * PHPExcel_Calculation_Functions::RETURNDATE_EXCEL 'E' - * @return boolean Success or failure - */ - public static function setReturnDateType($returnDateType) - { - if (($returnDateType == self::RETURNDATE_PHP_NUMERIC) || - ($returnDateType == self::RETURNDATE_PHP_OBJECT) || - ($returnDateType == self::RETURNDATE_EXCEL)) { - self::$returnDateType = $returnDateType; - return true; - } - return false; - } - - - /** - * Return the current Return Date Format for functions that return a date/time (Excel, PHP Serialized Numeric or PHP Object) - * - * @access public - * @category Function Configuration - * @return string Return Date Format - * Possible Return values are: - * PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC 'P' - * PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT 'O' - * PHPExcel_Calculation_Functions::RETURNDATE_EXCEL 'E' - */ - public static function getReturnDateType() - { - return self::$returnDateType; - } - - - /** - * DUMMY - * - * @access public - * @category Error Returns - * @return string #Not Yet Implemented - */ - public static function DUMMY() - { - return '#Not Yet Implemented'; - } - - - /** - * DIV0 - * - * @access public - * @category Error Returns - * @return string #Not Yet Implemented - */ - public static function DIV0() - { - return self::$errorCodes['divisionbyzero']; - } - - - /** - * NA - * - * Excel Function: - * =NA() - * - * Returns the error value #N/A - * #N/A is the error value that means "no value is available." - * - * @access public - * @category Logical Functions - * @return string #N/A! - */ - public static function NA() - { - return self::$errorCodes['na']; - } - - - /** - * NaN - * - * Returns the error value #NUM! - * - * @access public - * @category Error Returns - * @return string #NUM! - */ - public static function NaN() - { - return self::$errorCodes['num']; - } - - - /** - * NAME - * - * Returns the error value #NAME? - * - * @access public - * @category Error Returns - * @return string #NAME? - */ - public static function NAME() - { - return self::$errorCodes['name']; - } - - - /** - * REF - * - * Returns the error value #REF! - * - * @access public - * @category Error Returns - * @return string #REF! - */ - public static function REF() - { - return self::$errorCodes['reference']; - } - - - /** - * NULL - * - * Returns the error value #NULL! - * - * @access public - * @category Error Returns - * @return string #NULL! - */ - public static function NULL() - { - return self::$errorCodes['null']; - } - - - /** - * VALUE - * - * Returns the error value #VALUE! - * - * @access public - * @category Error Returns - * @return string #VALUE! - */ - public static function VALUE() - { - return self::$errorCodes['value']; - } - - - public static function isMatrixValue($idx) - { - return ((substr_count($idx, '.') <= 1) || (preg_match('/\.[A-Z]/', $idx) > 0)); - } - - - public static function isValue($idx) - { - return (substr_count($idx, '.') == 0); - } - - - public static function isCellValue($idx) - { - return (substr_count($idx, '.') > 1); - } - - - public static function ifCondition($condition) - { - $condition = PHPExcel_Calculation_Functions::flattenSingleValue($condition); - if (!isset($condition{0})) { - $condition = '=""'; - } - if (!in_array($condition{0}, array('>', '<', '='))) { - if (!is_numeric($condition)) { - $condition = PHPExcel_Calculation::wrapResult(strtoupper($condition)); - } - return '=' . $condition; - } else { - preg_match('/([<>=]+)(.*)/', $condition, $matches); - list(, $operator, $operand) = $matches; - - if (!is_numeric($operand)) { - $operand = str_replace('"', '""', $operand); - $operand = PHPExcel_Calculation::wrapResult(strtoupper($operand)); - } - - return $operator.$operand; - } - } - - /** - * ERROR_TYPE - * - * @param mixed $value Value to check - * @return boolean - */ - public static function ERROR_TYPE($value = '') - { - $value = self::flattenSingleValue($value); - - $i = 1; - foreach (self::$errorCodes as $errorCode) { - if ($value === $errorCode) { - return $i; - } - ++$i; - } - return self::NA(); - } - - - /** - * IS_BLANK - * - * @param mixed $value Value to check - * @return boolean - */ - public static function IS_BLANK($value = null) - { - if (!is_null($value)) { - $value = self::flattenSingleValue($value); - } - - return is_null($value); - } - - - /** - * IS_ERR - * - * @param mixed $value Value to check - * @return boolean - */ - public static function IS_ERR($value = '') - { - $value = self::flattenSingleValue($value); - - return self::IS_ERROR($value) && (!self::IS_NA($value)); - } - - - /** - * IS_ERROR - * - * @param mixed $value Value to check - * @return boolean - */ - public static function IS_ERROR($value = '') - { - $value = self::flattenSingleValue($value); - - if (!is_string($value)) { - return false; - } - return in_array($value, array_values(self::$errorCodes)); - } - - - /** - * IS_NA - * - * @param mixed $value Value to check - * @return boolean - */ - public static function IS_NA($value = '') - { - $value = self::flattenSingleValue($value); - - return ($value === self::NA()); - } - - - /** - * IS_EVEN - * - * @param mixed $value Value to check - * @return boolean - */ - public static function IS_EVEN($value = null) - { - $value = self::flattenSingleValue($value); - - if ($value === null) { - return self::NAME(); - } elseif ((is_bool($value)) || ((is_string($value)) && (!is_numeric($value)))) { - return self::VALUE(); - } - - return ($value % 2 == 0); - } - - - /** - * IS_ODD - * - * @param mixed $value Value to check - * @return boolean - */ - public static function IS_ODD($value = null) - { - $value = self::flattenSingleValue($value); - - if ($value === null) { - return self::NAME(); - } elseif ((is_bool($value)) || ((is_string($value)) && (!is_numeric($value)))) { - return self::VALUE(); - } - - return (abs($value) % 2 == 1); - } - - - /** - * IS_NUMBER - * - * @param mixed $value Value to check - * @return boolean - */ - public static function IS_NUMBER($value = null) - { - $value = self::flattenSingleValue($value); - - if (is_string($value)) { - return false; - } - return is_numeric($value); - } - - - /** - * IS_LOGICAL - * - * @param mixed $value Value to check - * @return boolean - */ - public static function IS_LOGICAL($value = null) - { - $value = self::flattenSingleValue($value); - - return is_bool($value); - } - - - /** - * IS_TEXT - * - * @param mixed $value Value to check - * @return boolean - */ - public static function IS_TEXT($value = null) - { - $value = self::flattenSingleValue($value); - - return (is_string($value) && !self::IS_ERROR($value)); - } - - - /** - * IS_NONTEXT - * - * @param mixed $value Value to check - * @return boolean - */ - public static function IS_NONTEXT($value = null) - { - return !self::IS_TEXT($value); - } - - - /** - * VERSION - * - * @return string Version information - */ - public static function VERSION() - { - return 'PHPExcel ##VERSION##, ##DATE##'; - } - - - /** - * N - * - * Returns a value converted to a number - * - * @param value The value you want converted - * @return number N converts values listed in the following table - * If value is or refers to N returns - * A number That number - * A date The serial number of that date - * TRUE 1 - * FALSE 0 - * An error value The error value - * Anything else 0 - */ - public static function N($value = null) - { - while (is_array($value)) { - $value = array_shift($value); - } - - switch (gettype($value)) { - case 'double': - case 'float': - case 'integer': - return $value; - case 'boolean': - return (integer) $value; - case 'string': - // Errors - if ((strlen($value) > 0) && ($value{0} == '#')) { - return $value; - } - break; - } - return 0; - } - - - /** - * TYPE - * - * Returns a number that identifies the type of a value - * - * @param value The value you want tested - * @return number N converts values listed in the following table - * If value is or refers to N returns - * A number 1 - * Text 2 - * Logical Value 4 - * An error value 16 - * Array or Matrix 64 - */ - public static function TYPE($value = null) - { - $value = self::flattenArrayIndexed($value); - if (is_array($value) && (count($value) > 1)) { - end($value); - $a = key($value); - // Range of cells is an error - if (self::isCellValue($a)) { - return 16; - // Test for Matrix - } elseif (self::isMatrixValue($a)) { - return 64; - } - } elseif (empty($value)) { - // Empty Cell - return 1; - } - $value = self::flattenSingleValue($value); - - if (($value === null) || (is_float($value)) || (is_int($value))) { - return 1; - } elseif (is_bool($value)) { - return 4; - } elseif (is_array($value)) { - return 64; - } elseif (is_string($value)) { - // Errors - if ((strlen($value) > 0) && ($value{0} == '#')) { - return 16; - } - return 2; - } - return 0; - } - - - /** - * Convert a multi-dimensional array to a simple 1-dimensional array - * - * @param array $array Array to be flattened - * @return array Flattened array - */ - public static function flattenArray($array) - { - if (!is_array($array)) { - return (array) $array; - } - - $arrayValues = array(); - foreach ($array as $value) { - if (is_array($value)) { - foreach ($value as $val) { - if (is_array($val)) { - foreach ($val as $v) { - $arrayValues[] = $v; - } - } else { - $arrayValues[] = $val; - } - } - } else { - $arrayValues[] = $value; - } - } - - return $arrayValues; - } - - - /** - * Convert a multi-dimensional array to a simple 1-dimensional array, but retain an element of indexing - * - * @param array $array Array to be flattened - * @return array Flattened array - */ - public static function flattenArrayIndexed($array) - { - if (!is_array($array)) { - return (array) $array; - } - - $arrayValues = array(); - foreach ($array as $k1 => $value) { - if (is_array($value)) { - foreach ($value as $k2 => $val) { - if (is_array($val)) { - foreach ($val as $k3 => $v) { - $arrayValues[$k1.'.'.$k2.'.'.$k3] = $v; - } - } else { - $arrayValues[$k1.'.'.$k2] = $val; - } - } - } else { - $arrayValues[$k1] = $value; - } - } - - return $arrayValues; - } - - - /** - * Convert an array to a single scalar value by extracting the first element - * - * @param mixed $value Array or scalar value - * @return mixed - */ - public static function flattenSingleValue($value = '') - { - while (is_array($value)) { - $value = array_pop($value); - } - - return $value; - } -} - - -// -// There are a few mathematical functions that aren't available on all versions of PHP for all platforms -// These functions aren't available in Windows implementations of PHP prior to version 5.3.0 -// So we test if they do exist for this version of PHP/operating platform; and if not we create them -// -if (!function_exists('acosh')) { - function acosh($x) - { - return 2 * log(sqrt(($x + 1) / 2) + sqrt(($x - 1) / 2)); - } // function acosh() -} - -if (!function_exists('asinh')) { - function asinh($x) - { - return log($x + sqrt(1 + $x * $x)); - } // function asinh() -} - -if (!function_exists('atanh')) { - function atanh($x) - { - return (log(1 + $x) - log(1 - $x)) / 2; - } // function atanh() -} - - -// -// Strangely, PHP doesn't have a mb_str_replace multibyte function -// As we'll only ever use this function with UTF-8 characters, we can simply "hard-code" the character set -// -if ((!function_exists('mb_str_replace')) && - (function_exists('mb_substr')) && (function_exists('mb_strlen')) && (function_exists('mb_strpos'))) { - function mb_str_replace($search, $replace, $subject) - { - if (is_array($subject)) { - $ret = array(); - foreach ($subject as $key => $val) { - $ret[$key] = mb_str_replace($search, $replace, $val); - } - return $ret; - } - - foreach ((array) $search as $key => $s) { - if ($s == '' && $s !== 0) { - continue; - } - $r = !is_array($replace) ? $replace : (array_key_exists($key, $replace) ? $replace[$key] : ''); - $pos = mb_strpos($subject, $s, 0, 'UTF-8'); - while ($pos !== false) { - $subject = mb_substr($subject, 0, $pos, 'UTF-8') . $r . mb_substr($subject, $pos + mb_strlen($s, 'UTF-8'), 65535, 'UTF-8'); - $pos = mb_strpos($subject, $s, $pos + mb_strlen($r, 'UTF-8'), 'UTF-8'); - } - } - return $subject; - } -} diff --git a/application/third_party/PHPExcel/Calculation/Logical.php b/application/third_party/PHPExcel/Calculation/Logical.php deleted file mode 100644 index dd65f010..00000000 --- a/application/third_party/PHPExcel/Calculation/Logical.php +++ /dev/null @@ -1,285 +0,0 @@ - $arg) { - // Is it a boolean value? - if (is_bool($arg)) { - $returnValue = $returnValue && $arg; - } elseif ((is_numeric($arg)) && (!is_string($arg))) { - $returnValue = $returnValue && ($arg != 0); - } elseif (is_string($arg)) { - $arg = strtoupper($arg); - if (($arg == 'TRUE') || ($arg == PHPExcel_Calculation::getTRUE())) { - $arg = true; - } elseif (($arg == 'FALSE') || ($arg == PHPExcel_Calculation::getFALSE())) { - $arg = false; - } else { - return PHPExcel_Calculation_Functions::VALUE(); - } - $returnValue = $returnValue && ($arg != 0); - } - } - - // Return - if ($argCount < 0) { - return PHPExcel_Calculation_Functions::VALUE(); - } - return $returnValue; - } - - - /** - * LOGICAL_OR - * - * Returns boolean TRUE if any argument is TRUE; returns FALSE if all arguments are FALSE. - * - * Excel Function: - * =OR(logical1[,logical2[, ...]]) - * - * The arguments must evaluate to logical values such as TRUE or FALSE, or the arguments must be arrays - * or references that contain logical values. - * - * Boolean arguments are treated as True or False as appropriate - * Integer or floating point arguments are treated as True, except for 0 or 0.0 which are False - * If any argument value is a string, or a Null, the function returns a #VALUE! error, unless the string holds - * the value TRUE or FALSE, in which case it is evaluated as the corresponding boolean value - * - * @access public - * @category Logical Functions - * @param mixed $arg,... Data values - * @return boolean The logical OR of the arguments. - */ - public static function LOGICAL_OR() - { - // Return value - $returnValue = false; - - // Loop through the arguments - $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); - $argCount = -1; - foreach ($aArgs as $argCount => $arg) { - // Is it a boolean value? - if (is_bool($arg)) { - $returnValue = $returnValue || $arg; - } elseif ((is_numeric($arg)) && (!is_string($arg))) { - $returnValue = $returnValue || ($arg != 0); - } elseif (is_string($arg)) { - $arg = strtoupper($arg); - if (($arg == 'TRUE') || ($arg == PHPExcel_Calculation::getTRUE())) { - $arg = true; - } elseif (($arg == 'FALSE') || ($arg == PHPExcel_Calculation::getFALSE())) { - $arg = false; - } else { - return PHPExcel_Calculation_Functions::VALUE(); - } - $returnValue = $returnValue || ($arg != 0); - } - } - - // Return - if ($argCount < 0) { - return PHPExcel_Calculation_Functions::VALUE(); - } - return $returnValue; - } - - - /** - * NOT - * - * Returns the boolean inverse of the argument. - * - * Excel Function: - * =NOT(logical) - * - * The argument must evaluate to a logical value such as TRUE or FALSE - * - * Boolean arguments are treated as True or False as appropriate - * Integer or floating point arguments are treated as True, except for 0 or 0.0 which are False - * If any argument value is a string, or a Null, the function returns a #VALUE! error, unless the string holds - * the value TRUE or FALSE, in which case it is evaluated as the corresponding boolean value - * - * @access public - * @category Logical Functions - * @param mixed $logical A value or expression that can be evaluated to TRUE or FALSE - * @return boolean The boolean inverse of the argument. - */ - public static function NOT($logical = false) - { - $logical = PHPExcel_Calculation_Functions::flattenSingleValue($logical); - if (is_string($logical)) { - $logical = strtoupper($logical); - if (($logical == 'TRUE') || ($logical == PHPExcel_Calculation::getTRUE())) { - return false; - } elseif (($logical == 'FALSE') || ($logical == PHPExcel_Calculation::getFALSE())) { - return true; - } else { - return PHPExcel_Calculation_Functions::VALUE(); - } - } - - return !$logical; - } - - /** - * STATEMENT_IF - * - * Returns one value if a condition you specify evaluates to TRUE and another value if it evaluates to FALSE. - * - * Excel Function: - * =IF(condition[,returnIfTrue[,returnIfFalse]]) - * - * Condition is any value or expression that can be evaluated to TRUE or FALSE. - * For example, A10=100 is a logical expression; if the value in cell A10 is equal to 100, - * the expression evaluates to TRUE. Otherwise, the expression evaluates to FALSE. - * This argument can use any comparison calculation operator. - * ReturnIfTrue is the value that is returned if condition evaluates to TRUE. - * For example, if this argument is the text string "Within budget" and the condition argument evaluates to TRUE, - * then the IF function returns the text "Within budget" - * If condition is TRUE and ReturnIfTrue is blank, this argument returns 0 (zero). To display the word TRUE, use - * the logical value TRUE for this argument. - * ReturnIfTrue can be another formula. - * ReturnIfFalse is the value that is returned if condition evaluates to FALSE. - * For example, if this argument is the text string "Over budget" and the condition argument evaluates to FALSE, - * then the IF function returns the text "Over budget". - * If condition is FALSE and ReturnIfFalse is omitted, then the logical value FALSE is returned. - * If condition is FALSE and ReturnIfFalse is blank, then the value 0 (zero) is returned. - * ReturnIfFalse can be another formula. - * - * @access public - * @category Logical Functions - * @param mixed $condition Condition to evaluate - * @param mixed $returnIfTrue Value to return when condition is true - * @param mixed $returnIfFalse Optional value to return when condition is false - * @return mixed The value of returnIfTrue or returnIfFalse determined by condition - */ - public static function STATEMENT_IF($condition = true, $returnIfTrue = 0, $returnIfFalse = false) - { - $condition = (is_null($condition)) ? true : (boolean) PHPExcel_Calculation_Functions::flattenSingleValue($condition); - $returnIfTrue = (is_null($returnIfTrue)) ? 0 : PHPExcel_Calculation_Functions::flattenSingleValue($returnIfTrue); - $returnIfFalse = (is_null($returnIfFalse)) ? false : PHPExcel_Calculation_Functions::flattenSingleValue($returnIfFalse); - - return ($condition) ? $returnIfTrue : $returnIfFalse; - } - - - /** - * IFERROR - * - * Excel Function: - * =IFERROR(testValue,errorpart) - * - * @access public - * @category Logical Functions - * @param mixed $testValue Value to check, is also the value returned when no error - * @param mixed $errorpart Value to return when testValue is an error condition - * @return mixed The value of errorpart or testValue determined by error condition - */ - public static function IFERROR($testValue = '', $errorpart = '') - { - $testValue = (is_null($testValue)) ? '' : PHPExcel_Calculation_Functions::flattenSingleValue($testValue); - $errorpart = (is_null($errorpart)) ? '' : PHPExcel_Calculation_Functions::flattenSingleValue($errorpart); - - return self::STATEMENT_IF(PHPExcel_Calculation_Functions::IS_ERROR($testValue), $errorpart, $testValue); - } -} diff --git a/application/third_party/PHPExcel/Calculation/LookupRef.php b/application/third_party/PHPExcel/Calculation/LookupRef.php deleted file mode 100644 index 1fe77902..00000000 --- a/application/third_party/PHPExcel/Calculation/LookupRef.php +++ /dev/null @@ -1,879 +0,0 @@ - '') { - if (strpos($sheetText, ' ') !== false) { - $sheetText = "'".$sheetText."'"; - } - $sheetText .='!'; - } - if ((!is_bool($referenceStyle)) || $referenceStyle) { - $rowRelative = $columnRelative = '$'; - $column = PHPExcel_Cell::stringFromColumnIndex($column-1); - if (($relativity == 2) || ($relativity == 4)) { - $columnRelative = ''; - } - if (($relativity == 3) || ($relativity == 4)) { - $rowRelative = ''; - } - return $sheetText.$columnRelative.$column.$rowRelative.$row; - } else { - if (($relativity == 2) || ($relativity == 4)) { - $column = '['.$column.']'; - } - if (($relativity == 3) || ($relativity == 4)) { - $row = '['.$row.']'; - } - return $sheetText.'R'.$row.'C'.$column; - } - } - - - /** - * COLUMN - * - * Returns the column number of the given cell reference - * If the cell reference is a range of cells, COLUMN returns the column numbers of each column in the reference as a horizontal array. - * If cell reference is omitted, and the function is being called through the calculation engine, then it is assumed to be the - * reference of the cell in which the COLUMN function appears; otherwise this function returns 0. - * - * Excel Function: - * =COLUMN([cellAddress]) - * - * @param cellAddress A reference to a range of cells for which you want the column numbers - * @return integer or array of integer - */ - public static function COLUMN($cellAddress = null) - { - if (is_null($cellAddress) || trim($cellAddress) === '') { - return 0; - } - - if (is_array($cellAddress)) { - foreach ($cellAddress as $columnKey => $value) { - $columnKey = preg_replace('/[^a-z]/i', '', $columnKey); - return (integer) PHPExcel_Cell::columnIndexFromString($columnKey); - } - } else { - if (strpos($cellAddress, '!') !== false) { - list($sheet, $cellAddress) = explode('!', $cellAddress); - } - if (strpos($cellAddress, ':') !== false) { - list($startAddress, $endAddress) = explode(':', $cellAddress); - $startAddress = preg_replace('/[^a-z]/i', '', $startAddress); - $endAddress = preg_replace('/[^a-z]/i', '', $endAddress); - $returnValue = array(); - do { - $returnValue[] = (integer) PHPExcel_Cell::columnIndexFromString($startAddress); - } while ($startAddress++ != $endAddress); - return $returnValue; - } else { - $cellAddress = preg_replace('/[^a-z]/i', '', $cellAddress); - return (integer) PHPExcel_Cell::columnIndexFromString($cellAddress); - } - } - } - - - /** - * COLUMNS - * - * Returns the number of columns in an array or reference. - * - * Excel Function: - * =COLUMNS(cellAddress) - * - * @param cellAddress An array or array formula, or a reference to a range of cells for which you want the number of columns - * @return integer The number of columns in cellAddress - */ - public static function COLUMNS($cellAddress = null) - { - if (is_null($cellAddress) || $cellAddress === '') { - return 1; - } elseif (!is_array($cellAddress)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - reset($cellAddress); - $isMatrix = (is_numeric(key($cellAddress))); - list($columns, $rows) = PHPExcel_Calculation::_getMatrixDimensions($cellAddress); - - if ($isMatrix) { - return $rows; - } else { - return $columns; - } - } - - - /** - * ROW - * - * Returns the row number of the given cell reference - * If the cell reference is a range of cells, ROW returns the row numbers of each row in the reference as a vertical array. - * If cell reference is omitted, and the function is being called through the calculation engine, then it is assumed to be the - * reference of the cell in which the ROW function appears; otherwise this function returns 0. - * - * Excel Function: - * =ROW([cellAddress]) - * - * @param cellAddress A reference to a range of cells for which you want the row numbers - * @return integer or array of integer - */ - public static function ROW($cellAddress = null) - { - if (is_null($cellAddress) || trim($cellAddress) === '') { - return 0; - } - - if (is_array($cellAddress)) { - foreach ($cellAddress as $columnKey => $rowValue) { - foreach ($rowValue as $rowKey => $cellValue) { - return (integer) preg_replace('/[^0-9]/i', '', $rowKey); - } - } - } else { - if (strpos($cellAddress, '!') !== false) { - list($sheet, $cellAddress) = explode('!', $cellAddress); - } - if (strpos($cellAddress, ':') !== false) { - list($startAddress, $endAddress) = explode(':', $cellAddress); - $startAddress = preg_replace('/[^0-9]/', '', $startAddress); - $endAddress = preg_replace('/[^0-9]/', '', $endAddress); - $returnValue = array(); - do { - $returnValue[][] = (integer) $startAddress; - } while ($startAddress++ != $endAddress); - return $returnValue; - } else { - list($cellAddress) = explode(':', $cellAddress); - return (integer) preg_replace('/[^0-9]/', '', $cellAddress); - } - } - } - - - /** - * ROWS - * - * Returns the number of rows in an array or reference. - * - * Excel Function: - * =ROWS(cellAddress) - * - * @param cellAddress An array or array formula, or a reference to a range of cells for which you want the number of rows - * @return integer The number of rows in cellAddress - */ - public static function ROWS($cellAddress = null) - { - if (is_null($cellAddress) || $cellAddress === '') { - return 1; - } elseif (!is_array($cellAddress)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - reset($cellAddress); - $isMatrix = (is_numeric(key($cellAddress))); - list($columns, $rows) = PHPExcel_Calculation::_getMatrixDimensions($cellAddress); - - if ($isMatrix) { - return $columns; - } else { - return $rows; - } - } - - - /** - * HYPERLINK - * - * Excel Function: - * =HYPERLINK(linkURL,displayName) - * - * @access public - * @category Logical Functions - * @param string $linkURL Value to check, is also the value returned when no error - * @param string $displayName Value to return when testValue is an error condition - * @param PHPExcel_Cell $pCell The cell to set the hyperlink in - * @return mixed The value of $displayName (or $linkURL if $displayName was blank) - */ - public static function HYPERLINK($linkURL = '', $displayName = null, PHPExcel_Cell $pCell = null) - { - $args = func_get_args(); - $pCell = array_pop($args); - - $linkURL = (is_null($linkURL)) ? '' : PHPExcel_Calculation_Functions::flattenSingleValue($linkURL); - $displayName = (is_null($displayName)) ? '' : PHPExcel_Calculation_Functions::flattenSingleValue($displayName); - - if ((!is_object($pCell)) || (trim($linkURL) == '')) { - return PHPExcel_Calculation_Functions::REF(); - } - - if ((is_object($displayName)) || trim($displayName) == '') { - $displayName = $linkURL; - } - - $pCell->getHyperlink()->setUrl($linkURL); - $pCell->getHyperlink()->setTooltip($displayName); - - return $displayName; - } - - - /** - * INDIRECT - * - * Returns the reference specified by a text string. - * References are immediately evaluated to display their contents. - * - * Excel Function: - * =INDIRECT(cellAddress) - * - * NOTE - INDIRECT() does not yet support the optional a1 parameter introduced in Excel 2010 - * - * @param cellAddress $cellAddress The cell address of the current cell (containing this formula) - * @param PHPExcel_Cell $pCell The current cell (containing this formula) - * @return mixed The cells referenced by cellAddress - * - * @todo Support for the optional a1 parameter introduced in Excel 2010 - * - */ - public static function INDIRECT($cellAddress = null, PHPExcel_Cell $pCell = null) - { - $cellAddress = PHPExcel_Calculation_Functions::flattenSingleValue($cellAddress); - if (is_null($cellAddress) || $cellAddress === '') { - return PHPExcel_Calculation_Functions::REF(); - } - - $cellAddress1 = $cellAddress; - $cellAddress2 = null; - if (strpos($cellAddress, ':') !== false) { - list($cellAddress1, $cellAddress2) = explode(':', $cellAddress); - } - - if ((!preg_match('/^'.PHPExcel_Calculation::CALCULATION_REGEXP_CELLREF.'$/i', $cellAddress1, $matches)) || - ((!is_null($cellAddress2)) && (!preg_match('/^'.PHPExcel_Calculation::CALCULATION_REGEXP_CELLREF.'$/i', $cellAddress2, $matches)))) { - if (!preg_match('/^'.PHPExcel_Calculation::CALCULATION_REGEXP_NAMEDRANGE.'$/i', $cellAddress1, $matches)) { - return PHPExcel_Calculation_Functions::REF(); - } - - if (strpos($cellAddress, '!') !== false) { - list($sheetName, $cellAddress) = explode('!', $cellAddress); - $sheetName = trim($sheetName, "'"); - $pSheet = $pCell->getWorksheet()->getParent()->getSheetByName($sheetName); - } else { - $pSheet = $pCell->getWorksheet(); - } - - return PHPExcel_Calculation::getInstance()->extractNamedRange($cellAddress, $pSheet, false); - } - - if (strpos($cellAddress, '!') !== false) { - list($sheetName, $cellAddress) = explode('!', $cellAddress); - $sheetName = trim($sheetName, "'"); - $pSheet = $pCell->getWorksheet()->getParent()->getSheetByName($sheetName); - } else { - $pSheet = $pCell->getWorksheet(); - } - - return PHPExcel_Calculation::getInstance()->extractCellRange($cellAddress, $pSheet, false); - } - - - /** - * OFFSET - * - * Returns a reference to a range that is a specified number of rows and columns from a cell or range of cells. - * The reference that is returned can be a single cell or a range of cells. You can specify the number of rows and - * the number of columns to be returned. - * - * Excel Function: - * =OFFSET(cellAddress, rows, cols, [height], [width]) - * - * @param cellAddress The reference from which you want to base the offset. Reference must refer to a cell or - * range of adjacent cells; otherwise, OFFSET returns the #VALUE! error value. - * @param rows The number of rows, up or down, that you want the upper-left cell to refer to. - * Using 5 as the rows argument specifies that the upper-left cell in the reference is - * five rows below reference. Rows can be positive (which means below the starting reference) - * or negative (which means above the starting reference). - * @param cols The number of columns, to the left or right, that you want the upper-left cell of the result - * to refer to. Using 5 as the cols argument specifies that the upper-left cell in the - * reference is five columns to the right of reference. Cols can be positive (which means - * to the right of the starting reference) or negative (which means to the left of the - * starting reference). - * @param height The height, in number of rows, that you want the returned reference to be. Height must be a positive number. - * @param width The width, in number of columns, that you want the returned reference to be. Width must be a positive number. - * @return string A reference to a cell or range of cells - */ - public static function OFFSET($cellAddress = null, $rows = 0, $columns = 0, $height = null, $width = null) - { - $rows = PHPExcel_Calculation_Functions::flattenSingleValue($rows); - $columns = PHPExcel_Calculation_Functions::flattenSingleValue($columns); - $height = PHPExcel_Calculation_Functions::flattenSingleValue($height); - $width = PHPExcel_Calculation_Functions::flattenSingleValue($width); - if ($cellAddress == null) { - return 0; - } - - $args = func_get_args(); - $pCell = array_pop($args); - if (!is_object($pCell)) { - return PHPExcel_Calculation_Functions::REF(); - } - - $sheetName = null; - if (strpos($cellAddress, "!")) { - list($sheetName, $cellAddress) = explode("!", $cellAddress); - $sheetName = trim($sheetName, "'"); - } - if (strpos($cellAddress, ":")) { - list($startCell, $endCell) = explode(":", $cellAddress); - } else { - $startCell = $endCell = $cellAddress; - } - list($startCellColumn, $startCellRow) = PHPExcel_Cell::coordinateFromString($startCell); - list($endCellColumn, $endCellRow) = PHPExcel_Cell::coordinateFromString($endCell); - - $startCellRow += $rows; - $startCellColumn = PHPExcel_Cell::columnIndexFromString($startCellColumn) - 1; - $startCellColumn += $columns; - - if (($startCellRow <= 0) || ($startCellColumn < 0)) { - return PHPExcel_Calculation_Functions::REF(); - } - $endCellColumn = PHPExcel_Cell::columnIndexFromString($endCellColumn) - 1; - if (($width != null) && (!is_object($width))) { - $endCellColumn = $startCellColumn + $width - 1; - } else { - $endCellColumn += $columns; - } - $startCellColumn = PHPExcel_Cell::stringFromColumnIndex($startCellColumn); - - if (($height != null) && (!is_object($height))) { - $endCellRow = $startCellRow + $height - 1; - } else { - $endCellRow += $rows; - } - - if (($endCellRow <= 0) || ($endCellColumn < 0)) { - return PHPExcel_Calculation_Functions::REF(); - } - $endCellColumn = PHPExcel_Cell::stringFromColumnIndex($endCellColumn); - - $cellAddress = $startCellColumn.$startCellRow; - if (($startCellColumn != $endCellColumn) || ($startCellRow != $endCellRow)) { - $cellAddress .= ':'.$endCellColumn.$endCellRow; - } - - if ($sheetName !== null) { - $pSheet = $pCell->getWorksheet()->getParent()->getSheetByName($sheetName); - } else { - $pSheet = $pCell->getWorksheet(); - } - - return PHPExcel_Calculation::getInstance()->extractCellRange($cellAddress, $pSheet, false); - } - - - /** - * CHOOSE - * - * Uses lookup_value to return a value from the list of value arguments. - * Use CHOOSE to select one of up to 254 values based on the lookup_value. - * - * Excel Function: - * =CHOOSE(index_num, value1, [value2], ...) - * - * @param index_num Specifies which value argument is selected. - * Index_num must be a number between 1 and 254, or a formula or reference to a cell containing a number - * between 1 and 254. - * @param value1... Value1 is required, subsequent values are optional. - * Between 1 to 254 value arguments from which CHOOSE selects a value or an action to perform based on - * index_num. The arguments can be numbers, cell references, defined names, formulas, functions, or - * text. - * @return mixed The selected value - */ - public static function CHOOSE() - { - $chooseArgs = func_get_args(); - $chosenEntry = PHPExcel_Calculation_Functions::flattenArray(array_shift($chooseArgs)); - $entryCount = count($chooseArgs) - 1; - - if (is_array($chosenEntry)) { - $chosenEntry = array_shift($chosenEntry); - } - if ((is_numeric($chosenEntry)) && (!is_bool($chosenEntry))) { - --$chosenEntry; - } else { - return PHPExcel_Calculation_Functions::VALUE(); - } - $chosenEntry = floor($chosenEntry); - if (($chosenEntry < 0) || ($chosenEntry > $entryCount)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - if (is_array($chooseArgs[$chosenEntry])) { - return PHPExcel_Calculation_Functions::flattenArray($chooseArgs[$chosenEntry]); - } else { - return $chooseArgs[$chosenEntry]; - } - } - - - /** - * MATCH - * - * The MATCH function searches for a specified item in a range of cells - * - * Excel Function: - * =MATCH(lookup_value, lookup_array, [match_type]) - * - * @param lookup_value The value that you want to match in lookup_array - * @param lookup_array The range of cells being searched - * @param match_type The number -1, 0, or 1. -1 means above, 0 means exact match, 1 means below. If match_type is 1 or -1, the list has to be ordered. - * @return integer The relative position of the found item - */ - public static function MATCH($lookup_value, $lookup_array, $match_type = 1) - { - $lookup_array = PHPExcel_Calculation_Functions::flattenArray($lookup_array); - $lookup_value = PHPExcel_Calculation_Functions::flattenSingleValue($lookup_value); - $match_type = (is_null($match_type)) ? 1 : (int) PHPExcel_Calculation_Functions::flattenSingleValue($match_type); - // MATCH is not case sensitive - $lookup_value = strtolower($lookup_value); - - // lookup_value type has to be number, text, or logical values - if ((!is_numeric($lookup_value)) && (!is_string($lookup_value)) && (!is_bool($lookup_value))) { - return PHPExcel_Calculation_Functions::NA(); - } - - // match_type is 0, 1 or -1 - if (($match_type !== 0) && ($match_type !== -1) && ($match_type !== 1)) { - return PHPExcel_Calculation_Functions::NA(); - } - - // lookup_array should not be empty - $lookupArraySize = count($lookup_array); - if ($lookupArraySize <= 0) { - return PHPExcel_Calculation_Functions::NA(); - } - - // lookup_array should contain only number, text, or logical values, or empty (null) cells - foreach ($lookup_array as $i => $lookupArrayValue) { - // check the type of the value - if ((!is_numeric($lookupArrayValue)) && (!is_string($lookupArrayValue)) && - (!is_bool($lookupArrayValue)) && (!is_null($lookupArrayValue))) { - return PHPExcel_Calculation_Functions::NA(); - } - // convert strings to lowercase for case-insensitive testing - if (is_string($lookupArrayValue)) { - $lookup_array[$i] = strtolower($lookupArrayValue); - } - if ((is_null($lookupArrayValue)) && (($match_type == 1) || ($match_type == -1))) { - $lookup_array = array_slice($lookup_array, 0, $i-1); - } - } - - // if match_type is 1 or -1, the list has to be ordered - if ($match_type == 1) { - asort($lookup_array); - $keySet = array_keys($lookup_array); - } elseif ($match_type == -1) { - arsort($lookup_array); - $keySet = array_keys($lookup_array); - } - - // ** - // find the match - // ** - foreach ($lookup_array as $i => $lookupArrayValue) { - if (($match_type == 0) && ($lookupArrayValue == $lookup_value)) { - // exact match - return ++$i; - } elseif (($match_type == -1) && ($lookupArrayValue <= $lookup_value)) { - $i = array_search($i, $keySet); - // if match_type is -1 <=> find the smallest value that is greater than or equal to lookup_value - if ($i < 1) { - // 1st cell was already smaller than the lookup_value - break; - } else { - // the previous cell was the match - return $keySet[$i-1]+1; - } - } elseif (($match_type == 1) && ($lookupArrayValue >= $lookup_value)) { - $i = array_search($i, $keySet); - // if match_type is 1 <=> find the largest value that is less than or equal to lookup_value - if ($i < 1) { - // 1st cell was already bigger than the lookup_value - break; - } else { - // the previous cell was the match - return $keySet[$i-1]+1; - } - } - } - - // unsuccessful in finding a match, return #N/A error value - return PHPExcel_Calculation_Functions::NA(); - } - - - /** - * INDEX - * - * Uses an index to choose a value from a reference or array - * - * Excel Function: - * =INDEX(range_array, row_num, [column_num]) - * - * @param range_array A range of cells or an array constant - * @param row_num The row in array from which to return a value. If row_num is omitted, column_num is required. - * @param column_num The column in array from which to return a value. If column_num is omitted, row_num is required. - * @return mixed the value of a specified cell or array of cells - */ - public static function INDEX($arrayValues, $rowNum = 0, $columnNum = 0) - { - if (($rowNum < 0) || ($columnNum < 0)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - if (!is_array($arrayValues)) { - return PHPExcel_Calculation_Functions::REF(); - } - - $rowKeys = array_keys($arrayValues); - $columnKeys = @array_keys($arrayValues[$rowKeys[0]]); - - if ($columnNum > count($columnKeys)) { - return PHPExcel_Calculation_Functions::VALUE(); - } elseif ($columnNum == 0) { - if ($rowNum == 0) { - return $arrayValues; - } - $rowNum = $rowKeys[--$rowNum]; - $returnArray = array(); - foreach ($arrayValues as $arrayColumn) { - if (is_array($arrayColumn)) { - if (isset($arrayColumn[$rowNum])) { - $returnArray[] = $arrayColumn[$rowNum]; - } else { - return $arrayValues[$rowNum]; - } - } else { - return $arrayValues[$rowNum]; - } - } - return $returnArray; - } - $columnNum = $columnKeys[--$columnNum]; - if ($rowNum > count($rowKeys)) { - return PHPExcel_Calculation_Functions::VALUE(); - } elseif ($rowNum == 0) { - return $arrayValues[$columnNum]; - } - $rowNum = $rowKeys[--$rowNum]; - - return $arrayValues[$rowNum][$columnNum]; - } - - - /** - * TRANSPOSE - * - * @param array $matrixData A matrix of values - * @return array - * - * Unlike the Excel TRANSPOSE function, which will only work on a single row or column, this function will transpose a full matrix. - */ - public static function TRANSPOSE($matrixData) - { - $returnMatrix = array(); - if (!is_array($matrixData)) { - $matrixData = array(array($matrixData)); - } - - $column = 0; - foreach ($matrixData as $matrixRow) { - $row = 0; - foreach ($matrixRow as $matrixCell) { - $returnMatrix[$row][$column] = $matrixCell; - ++$row; - } - ++$column; - } - return $returnMatrix; - } - - - private static function vlookupSort($a, $b) - { - reset($a); - $firstColumn = key($a); - if (($aLower = strtolower($a[$firstColumn])) == ($bLower = strtolower($b[$firstColumn]))) { - return 0; - } - return ($aLower < $bLower) ? -1 : 1; - } - - - /** - * VLOOKUP - * The VLOOKUP function searches for value in the left-most column of lookup_array and returns the value in the same row based on the index_number. - * @param lookup_value The value that you want to match in lookup_array - * @param lookup_array The range of cells being searched - * @param index_number The column number in table_array from which the matching value must be returned. The first column is 1. - * @param not_exact_match Determines if you are looking for an exact match based on lookup_value. - * @return mixed The value of the found cell - */ - public static function VLOOKUP($lookup_value, $lookup_array, $index_number, $not_exact_match = true) - { - $lookup_value = PHPExcel_Calculation_Functions::flattenSingleValue($lookup_value); - $index_number = PHPExcel_Calculation_Functions::flattenSingleValue($index_number); - $not_exact_match = PHPExcel_Calculation_Functions::flattenSingleValue($not_exact_match); - - // index_number must be greater than or equal to 1 - if ($index_number < 1) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - // index_number must be less than or equal to the number of columns in lookup_array - if ((!is_array($lookup_array)) || (empty($lookup_array))) { - return PHPExcel_Calculation_Functions::REF(); - } else { - $f = array_keys($lookup_array); - $firstRow = array_pop($f); - if ((!is_array($lookup_array[$firstRow])) || ($index_number > count($lookup_array[$firstRow]))) { - return PHPExcel_Calculation_Functions::REF(); - } else { - $columnKeys = array_keys($lookup_array[$firstRow]); - $returnColumn = $columnKeys[--$index_number]; - $firstColumn = array_shift($columnKeys); - } - } - - if (!$not_exact_match) { - uasort($lookup_array, array('self', 'vlookupSort')); - } - - $rowNumber = $rowValue = false; - foreach ($lookup_array as $rowKey => $rowData) { - if ((is_numeric($lookup_value) && is_numeric($rowData[$firstColumn]) && ($rowData[$firstColumn] > $lookup_value)) || - (!is_numeric($lookup_value) && !is_numeric($rowData[$firstColumn]) && (strtolower($rowData[$firstColumn]) > strtolower($lookup_value)))) { - break; - } - $rowNumber = $rowKey; - $rowValue = $rowData[$firstColumn]; - } - - if ($rowNumber !== false) { - if ((!$not_exact_match) && ($rowValue != $lookup_value)) { - // if an exact match is required, we have what we need to return an appropriate response - return PHPExcel_Calculation_Functions::NA(); - } else { - // otherwise return the appropriate value - return $lookup_array[$rowNumber][$returnColumn]; - } - } - - return PHPExcel_Calculation_Functions::NA(); - } - - - /** - * HLOOKUP - * The HLOOKUP function searches for value in the top-most row of lookup_array and returns the value in the same column based on the index_number. - * @param lookup_value The value that you want to match in lookup_array - * @param lookup_array The range of cells being searched - * @param index_number The row number in table_array from which the matching value must be returned. The first row is 1. - * @param not_exact_match Determines if you are looking for an exact match based on lookup_value. - * @return mixed The value of the found cell - */ - public static function HLOOKUP($lookup_value, $lookup_array, $index_number, $not_exact_match = true) - { - $lookup_value = PHPExcel_Calculation_Functions::flattenSingleValue($lookup_value); - $index_number = PHPExcel_Calculation_Functions::flattenSingleValue($index_number); - $not_exact_match = PHPExcel_Calculation_Functions::flattenSingleValue($not_exact_match); - - // index_number must be greater than or equal to 1 - if ($index_number < 1) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - // index_number must be less than or equal to the number of columns in lookup_array - if ((!is_array($lookup_array)) || (empty($lookup_array))) { - return PHPExcel_Calculation_Functions::REF(); - } else { - $f = array_keys($lookup_array); - $firstRow = array_pop($f); - if ((!is_array($lookup_array[$firstRow])) || ($index_number > count($lookup_array[$firstRow]))) { - return PHPExcel_Calculation_Functions::REF(); - } else { - $columnKeys = array_keys($lookup_array[$firstRow]); - $firstkey = $f[0] - 1; - $returnColumn = $firstkey + $index_number; - $firstColumn = array_shift($f); - } - } - - if (!$not_exact_match) { - $firstRowH = asort($lookup_array[$firstColumn]); - } - - $rowNumber = $rowValue = false; - foreach ($lookup_array[$firstColumn] as $rowKey => $rowData) { - if ((is_numeric($lookup_value) && is_numeric($rowData) && ($rowData > $lookup_value)) || - (!is_numeric($lookup_value) && !is_numeric($rowData) && (strtolower($rowData) > strtolower($lookup_value)))) { - break; - } - $rowNumber = $rowKey; - $rowValue = $rowData; - } - - if ($rowNumber !== false) { - if ((!$not_exact_match) && ($rowValue != $lookup_value)) { - // if an exact match is required, we have what we need to return an appropriate response - return PHPExcel_Calculation_Functions::NA(); - } else { - // otherwise return the appropriate value - return $lookup_array[$returnColumn][$rowNumber]; - } - } - - return PHPExcel_Calculation_Functions::NA(); - } - - - /** - * LOOKUP - * The LOOKUP function searches for value either from a one-row or one-column range or from an array. - * @param lookup_value The value that you want to match in lookup_array - * @param lookup_vector The range of cells being searched - * @param result_vector The column from which the matching value must be returned - * @return mixed The value of the found cell - */ - public static function LOOKUP($lookup_value, $lookup_vector, $result_vector = null) - { - $lookup_value = PHPExcel_Calculation_Functions::flattenSingleValue($lookup_value); - - if (!is_array($lookup_vector)) { - return PHPExcel_Calculation_Functions::NA(); - } - $lookupRows = count($lookup_vector); - $l = array_keys($lookup_vector); - $l = array_shift($l); - $lookupColumns = count($lookup_vector[$l]); - if ((($lookupRows == 1) && ($lookupColumns > 1)) || (($lookupRows == 2) && ($lookupColumns != 2))) { - $lookup_vector = self::TRANSPOSE($lookup_vector); - $lookupRows = count($lookup_vector); - $l = array_keys($lookup_vector); - $lookupColumns = count($lookup_vector[array_shift($l)]); - } - - if (is_null($result_vector)) { - $result_vector = $lookup_vector; - } - $resultRows = count($result_vector); - $l = array_keys($result_vector); - $l = array_shift($l); - $resultColumns = count($result_vector[$l]); - if ((($resultRows == 1) && ($resultColumns > 1)) || (($resultRows == 2) && ($resultColumns != 2))) { - $result_vector = self::TRANSPOSE($result_vector); - $resultRows = count($result_vector); - $r = array_keys($result_vector); - $resultColumns = count($result_vector[array_shift($r)]); - } - - if ($lookupRows == 2) { - $result_vector = array_pop($lookup_vector); - $lookup_vector = array_shift($lookup_vector); - } - if ($lookupColumns != 2) { - foreach ($lookup_vector as &$value) { - if (is_array($value)) { - $k = array_keys($value); - $key1 = $key2 = array_shift($k); - $key2++; - $dataValue1 = $value[$key1]; - } else { - $key1 = 0; - $key2 = 1; - $dataValue1 = $value; - } - $dataValue2 = array_shift($result_vector); - if (is_array($dataValue2)) { - $dataValue2 = array_shift($dataValue2); - } - $value = array($key1 => $dataValue1, $key2 => $dataValue2); - } - unset($value); - } - - return self::VLOOKUP($lookup_value, $lookup_vector, 2); - } -} diff --git a/application/third_party/PHPExcel/Calculation/MathTrig.php b/application/third_party/PHPExcel/Calculation/MathTrig.php deleted file mode 100644 index 894ba9cf..00000000 --- a/application/third_party/PHPExcel/Calculation/MathTrig.php +++ /dev/null @@ -1,1459 +0,0 @@ - 1; --$i) { - if (($value % $i) == 0) { - $factorArray = array_merge($factorArray, self::factors($value / $i)); - $factorArray = array_merge($factorArray, self::factors($i)); - if ($i <= sqrt($value)) { - break; - } - } - } - if (!empty($factorArray)) { - rsort($factorArray); - return $factorArray; - } else { - return array((integer) $value); - } - } - - - private static function romanCut($num, $n) - { - return ($num - ($num % $n ) ) / $n; - } - - - /** - * ATAN2 - * - * This function calculates the arc tangent of the two variables x and y. It is similar to - * calculating the arc tangent of y ÷ x, except that the signs of both arguments are used - * to determine the quadrant of the result. - * The arctangent is the angle from the x-axis to a line containing the origin (0, 0) and a - * point with coordinates (xCoordinate, yCoordinate). The angle is given in radians between - * -pi and pi, excluding -pi. - * - * Note that the Excel ATAN2() function accepts its arguments in the reverse order to the standard - * PHP atan2() function, so we need to reverse them here before calling the PHP atan() function. - * - * Excel Function: - * ATAN2(xCoordinate,yCoordinate) - * - * @access public - * @category Mathematical and Trigonometric Functions - * @param float $xCoordinate The x-coordinate of the point. - * @param float $yCoordinate The y-coordinate of the point. - * @return float The inverse tangent of the specified x- and y-coordinates. - */ - public static function ATAN2($xCoordinate = null, $yCoordinate = null) - { - $xCoordinate = PHPExcel_Calculation_Functions::flattenSingleValue($xCoordinate); - $yCoordinate = PHPExcel_Calculation_Functions::flattenSingleValue($yCoordinate); - - $xCoordinate = ($xCoordinate !== null) ? $xCoordinate : 0.0; - $yCoordinate = ($yCoordinate !== null) ? $yCoordinate : 0.0; - - if (((is_numeric($xCoordinate)) || (is_bool($xCoordinate))) && - ((is_numeric($yCoordinate))) || (is_bool($yCoordinate))) { - $xCoordinate = (float) $xCoordinate; - $yCoordinate = (float) $yCoordinate; - - if (($xCoordinate == 0) && ($yCoordinate == 0)) { - return PHPExcel_Calculation_Functions::DIV0(); - } - - return atan2($yCoordinate, $xCoordinate); - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * CEILING - * - * Returns number rounded up, away from zero, to the nearest multiple of significance. - * For example, if you want to avoid using pennies in your prices and your product is - * priced at $4.42, use the formula =CEILING(4.42,0.05) to round prices up to the - * nearest nickel. - * - * Excel Function: - * CEILING(number[,significance]) - * - * @access public - * @category Mathematical and Trigonometric Functions - * @param float $number The number you want to round. - * @param float $significance The multiple to which you want to round. - * @return float Rounded Number - */ - public static function CEILING($number, $significance = null) - { - $number = PHPExcel_Calculation_Functions::flattenSingleValue($number); - $significance = PHPExcel_Calculation_Functions::flattenSingleValue($significance); - - if ((is_null($significance)) && - (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC)) { - $significance = $number / abs($number); - } - - if ((is_numeric($number)) && (is_numeric($significance))) { - if (($number == 0.0 ) || ($significance == 0.0)) { - return 0.0; - } elseif (self::SIGN($number) == self::SIGN($significance)) { - return ceil($number / $significance) * $significance; - } else { - return PHPExcel_Calculation_Functions::NaN(); - } - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * COMBIN - * - * Returns the number of combinations for a given number of items. Use COMBIN to - * determine the total possible number of groups for a given number of items. - * - * Excel Function: - * COMBIN(numObjs,numInSet) - * - * @access public - * @category Mathematical and Trigonometric Functions - * @param int $numObjs Number of different objects - * @param int $numInSet Number of objects in each combination - * @return int Number of combinations - */ - public static function COMBIN($numObjs, $numInSet) - { - $numObjs = PHPExcel_Calculation_Functions::flattenSingleValue($numObjs); - $numInSet = PHPExcel_Calculation_Functions::flattenSingleValue($numInSet); - - if ((is_numeric($numObjs)) && (is_numeric($numInSet))) { - if ($numObjs < $numInSet) { - return PHPExcel_Calculation_Functions::NaN(); - } elseif ($numInSet < 0) { - return PHPExcel_Calculation_Functions::NaN(); - } - return round(self::FACT($numObjs) / self::FACT($numObjs - $numInSet)) / self::FACT($numInSet); - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * EVEN - * - * Returns number rounded up to the nearest even integer. - * You can use this function for processing items that come in twos. For example, - * a packing crate accepts rows of one or two items. The crate is full when - * the number of items, rounded up to the nearest two, matches the crate's - * capacity. - * - * Excel Function: - * EVEN(number) - * - * @access public - * @category Mathematical and Trigonometric Functions - * @param float $number Number to round - * @return int Rounded Number - */ - public static function EVEN($number) - { - $number = PHPExcel_Calculation_Functions::flattenSingleValue($number); - - if (is_null($number)) { - return 0; - } elseif (is_bool($number)) { - $number = (int) $number; - } - - if (is_numeric($number)) { - $significance = 2 * self::SIGN($number); - return (int) self::CEILING($number, $significance); - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * FACT - * - * Returns the factorial of a number. - * The factorial of a number is equal to 1*2*3*...* number. - * - * Excel Function: - * FACT(factVal) - * - * @access public - * @category Mathematical and Trigonometric Functions - * @param float $factVal Factorial Value - * @return int Factorial - */ - public static function FACT($factVal) - { - $factVal = PHPExcel_Calculation_Functions::flattenSingleValue($factVal); - - if (is_numeric($factVal)) { - if ($factVal < 0) { - return PHPExcel_Calculation_Functions::NaN(); - } - $factLoop = floor($factVal); - if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC) { - if ($factVal > $factLoop) { - return PHPExcel_Calculation_Functions::NaN(); - } - } - - $factorial = 1; - while ($factLoop > 1) { - $factorial *= $factLoop--; - } - return $factorial ; - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * FACTDOUBLE - * - * Returns the double factorial of a number. - * - * Excel Function: - * FACTDOUBLE(factVal) - * - * @access public - * @category Mathematical and Trigonometric Functions - * @param float $factVal Factorial Value - * @return int Double Factorial - */ - public static function FACTDOUBLE($factVal) - { - $factLoop = PHPExcel_Calculation_Functions::flattenSingleValue($factVal); - - if (is_numeric($factLoop)) { - $factLoop = floor($factLoop); - if ($factVal < 0) { - return PHPExcel_Calculation_Functions::NaN(); - } - $factorial = 1; - while ($factLoop > 1) { - $factorial *= $factLoop--; - --$factLoop; - } - return $factorial ; - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * FLOOR - * - * Rounds number down, toward zero, to the nearest multiple of significance. - * - * Excel Function: - * FLOOR(number[,significance]) - * - * @access public - * @category Mathematical and Trigonometric Functions - * @param float $number Number to round - * @param float $significance Significance - * @return float Rounded Number - */ - public static function FLOOR($number, $significance = null) - { - $number = PHPExcel_Calculation_Functions::flattenSingleValue($number); - $significance = PHPExcel_Calculation_Functions::flattenSingleValue($significance); - - if ((is_null($significance)) && - (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC)) { - $significance = $number/abs($number); - } - - if ((is_numeric($number)) && (is_numeric($significance))) { - if ($significance == 0.0) { - return PHPExcel_Calculation_Functions::DIV0(); - } elseif ($number == 0.0) { - return 0.0; - } elseif (self::SIGN($number) == self::SIGN($significance)) { - return floor($number / $significance) * $significance; - } else { - return PHPExcel_Calculation_Functions::NaN(); - } - } - - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * GCD - * - * Returns the greatest common divisor of a series of numbers. - * The greatest common divisor is the largest integer that divides both - * number1 and number2 without a remainder. - * - * Excel Function: - * GCD(number1[,number2[, ...]]) - * - * @access public - * @category Mathematical and Trigonometric Functions - * @param mixed $arg,... Data values - * @return integer Greatest Common Divisor - */ - public static function GCD() - { - $returnValue = 1; - $allValuesFactors = array(); - // Loop through arguments - foreach (PHPExcel_Calculation_Functions::flattenArray(func_get_args()) as $value) { - if (!is_numeric($value)) { - return PHPExcel_Calculation_Functions::VALUE(); - } elseif ($value == 0) { - continue; - } elseif ($value < 0) { - return PHPExcel_Calculation_Functions::NaN(); - } - $myFactors = self::factors($value); - $myCountedFactors = array_count_values($myFactors); - $allValuesFactors[] = $myCountedFactors; - } - $allValuesCount = count($allValuesFactors); - if ($allValuesCount == 0) { - return 0; - } - - $mergedArray = $allValuesFactors[0]; - for ($i=1; $i < $allValuesCount; ++$i) { - $mergedArray = array_intersect_key($mergedArray, $allValuesFactors[$i]); - } - $mergedArrayValues = count($mergedArray); - if ($mergedArrayValues == 0) { - return $returnValue; - } elseif ($mergedArrayValues > 1) { - foreach ($mergedArray as $mergedKey => $mergedValue) { - foreach ($allValuesFactors as $highestPowerTest) { - foreach ($highestPowerTest as $testKey => $testValue) { - if (($testKey == $mergedKey) && ($testValue < $mergedValue)) { - $mergedArray[$mergedKey] = $testValue; - $mergedValue = $testValue; - } - } - } - } - - $returnValue = 1; - foreach ($mergedArray as $key => $value) { - $returnValue *= pow($key, $value); - } - return $returnValue; - } else { - $keys = array_keys($mergedArray); - $key = $keys[0]; - $value = $mergedArray[$key]; - foreach ($allValuesFactors as $testValue) { - foreach ($testValue as $mergedKey => $mergedValue) { - if (($mergedKey == $key) && ($mergedValue < $value)) { - $value = $mergedValue; - } - } - } - return pow($key, $value); - } - } - - - /** - * INT - * - * Casts a floating point value to an integer - * - * Excel Function: - * INT(number) - * - * @access public - * @category Mathematical and Trigonometric Functions - * @param float $number Number to cast to an integer - * @return integer Integer value - */ - public static function INT($number) - { - $number = PHPExcel_Calculation_Functions::flattenSingleValue($number); - - if (is_null($number)) { - return 0; - } elseif (is_bool($number)) { - return (int) $number; - } - if (is_numeric($number)) { - return (int) floor($number); - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * LCM - * - * Returns the lowest common multiplier of a series of numbers - * The least common multiple is the smallest positive integer that is a multiple - * of all integer arguments number1, number2, and so on. Use LCM to add fractions - * with different denominators. - * - * Excel Function: - * LCM(number1[,number2[, ...]]) - * - * @access public - * @category Mathematical and Trigonometric Functions - * @param mixed $arg,... Data values - * @return int Lowest Common Multiplier - */ - public static function LCM() - { - $returnValue = 1; - $allPoweredFactors = array(); - // Loop through arguments - foreach (PHPExcel_Calculation_Functions::flattenArray(func_get_args()) as $value) { - if (!is_numeric($value)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - if ($value == 0) { - return 0; - } elseif ($value < 0) { - return PHPExcel_Calculation_Functions::NaN(); - } - $myFactors = self::factors(floor($value)); - $myCountedFactors = array_count_values($myFactors); - $myPoweredFactors = array(); - foreach ($myCountedFactors as $myCountedFactor => $myCountedPower) { - $myPoweredFactors[$myCountedFactor] = pow($myCountedFactor, $myCountedPower); - } - foreach ($myPoweredFactors as $myPoweredValue => $myPoweredFactor) { - if (array_key_exists($myPoweredValue, $allPoweredFactors)) { - if ($allPoweredFactors[$myPoweredValue] < $myPoweredFactor) { - $allPoweredFactors[$myPoweredValue] = $myPoweredFactor; - } - } else { - $allPoweredFactors[$myPoweredValue] = $myPoweredFactor; - } - } - } - foreach ($allPoweredFactors as $allPoweredFactor) { - $returnValue *= (integer) $allPoweredFactor; - } - return $returnValue; - } - - - /** - * LOG_BASE - * - * Returns the logarithm of a number to a specified base. The default base is 10. - * - * Excel Function: - * LOG(number[,base]) - * - * @access public - * @category Mathematical and Trigonometric Functions - * @param float $number The positive real number for which you want the logarithm - * @param float $base The base of the logarithm. If base is omitted, it is assumed to be 10. - * @return float - */ - public static function LOG_BASE($number = null, $base = 10) - { - $number = PHPExcel_Calculation_Functions::flattenSingleValue($number); - $base = (is_null($base)) ? 10 : (float) PHPExcel_Calculation_Functions::flattenSingleValue($base); - - if ((!is_numeric($base)) || (!is_numeric($number))) { - return PHPExcel_Calculation_Functions::VALUE(); - } - if (($base <= 0) || ($number <= 0)) { - return PHPExcel_Calculation_Functions::NaN(); - } - return log($number, $base); - } - - - /** - * MDETERM - * - * Returns the matrix determinant of an array. - * - * Excel Function: - * MDETERM(array) - * - * @access public - * @category Mathematical and Trigonometric Functions - * @param array $matrixValues A matrix of values - * @return float - */ - public static function MDETERM($matrixValues) - { - $matrixData = array(); - if (!is_array($matrixValues)) { - $matrixValues = array(array($matrixValues)); - } - - $row = $maxColumn = 0; - foreach ($matrixValues as $matrixRow) { - if (!is_array($matrixRow)) { - $matrixRow = array($matrixRow); - } - $column = 0; - foreach ($matrixRow as $matrixCell) { - if ((is_string($matrixCell)) || ($matrixCell === null)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $matrixData[$column][$row] = $matrixCell; - ++$column; - } - if ($column > $maxColumn) { - $maxColumn = $column; - } - ++$row; - } - if ($row != $maxColumn) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - try { - $matrix = new PHPExcel_Shared_JAMA_Matrix($matrixData); - return $matrix->det(); - } catch (PHPExcel_Exception $ex) { - return PHPExcel_Calculation_Functions::VALUE(); - } - } - - - /** - * MINVERSE - * - * Returns the inverse matrix for the matrix stored in an array. - * - * Excel Function: - * MINVERSE(array) - * - * @access public - * @category Mathematical and Trigonometric Functions - * @param array $matrixValues A matrix of values - * @return array - */ - public static function MINVERSE($matrixValues) - { - $matrixData = array(); - if (!is_array($matrixValues)) { - $matrixValues = array(array($matrixValues)); - } - - $row = $maxColumn = 0; - foreach ($matrixValues as $matrixRow) { - if (!is_array($matrixRow)) { - $matrixRow = array($matrixRow); - } - $column = 0; - foreach ($matrixRow as $matrixCell) { - if ((is_string($matrixCell)) || ($matrixCell === null)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $matrixData[$column][$row] = $matrixCell; - ++$column; - } - if ($column > $maxColumn) { - $maxColumn = $column; - } - ++$row; - } - if ($row != $maxColumn) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - try { - $matrix = new PHPExcel_Shared_JAMA_Matrix($matrixData); - return $matrix->inverse()->getArray(); - } catch (PHPExcel_Exception $ex) { - return PHPExcel_Calculation_Functions::VALUE(); - } - } - - - /** - * MMULT - * - * @param array $matrixData1 A matrix of values - * @param array $matrixData2 A matrix of values - * @return array - */ - public static function MMULT($matrixData1, $matrixData2) - { - $matrixAData = $matrixBData = array(); - if (!is_array($matrixData1)) { - $matrixData1 = array(array($matrixData1)); - } - if (!is_array($matrixData2)) { - $matrixData2 = array(array($matrixData2)); - } - - try { - $rowA = 0; - foreach ($matrixData1 as $matrixRow) { - if (!is_array($matrixRow)) { - $matrixRow = array($matrixRow); - } - $columnA = 0; - foreach ($matrixRow as $matrixCell) { - if ((!is_numeric($matrixCell)) || ($matrixCell === null)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $matrixAData[$rowA][$columnA] = $matrixCell; - ++$columnA; - } - ++$rowA; - } - $matrixA = new PHPExcel_Shared_JAMA_Matrix($matrixAData); - $rowB = 0; - foreach ($matrixData2 as $matrixRow) { - if (!is_array($matrixRow)) { - $matrixRow = array($matrixRow); - } - $columnB = 0; - foreach ($matrixRow as $matrixCell) { - if ((!is_numeric($matrixCell)) || ($matrixCell === null)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $matrixBData[$rowB][$columnB] = $matrixCell; - ++$columnB; - } - ++$rowB; - } - $matrixB = new PHPExcel_Shared_JAMA_Matrix($matrixBData); - - if ($columnA != $rowB) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - return $matrixA->times($matrixB)->getArray(); - } catch (PHPExcel_Exception $ex) { - var_dump($ex->getMessage()); - return PHPExcel_Calculation_Functions::VALUE(); - } - } - - - /** - * MOD - * - * @param int $a Dividend - * @param int $b Divisor - * @return int Remainder - */ - public static function MOD($a = 1, $b = 1) - { - $a = PHPExcel_Calculation_Functions::flattenSingleValue($a); - $b = PHPExcel_Calculation_Functions::flattenSingleValue($b); - - if ($b == 0.0) { - return PHPExcel_Calculation_Functions::DIV0(); - } elseif (($a < 0.0) && ($b > 0.0)) { - return $b - fmod(abs($a), $b); - } elseif (($a > 0.0) && ($b < 0.0)) { - return $b + fmod($a, abs($b)); - } - - return fmod($a, $b); - } - - - /** - * MROUND - * - * Rounds a number to the nearest multiple of a specified value - * - * @param float $number Number to round - * @param int $multiple Multiple to which you want to round $number - * @return float Rounded Number - */ - public static function MROUND($number, $multiple) - { - $number = PHPExcel_Calculation_Functions::flattenSingleValue($number); - $multiple = PHPExcel_Calculation_Functions::flattenSingleValue($multiple); - - if ((is_numeric($number)) && (is_numeric($multiple))) { - if ($multiple == 0) { - return 0; - } - if ((self::SIGN($number)) == (self::SIGN($multiple))) { - $multiplier = 1 / $multiple; - return round($number * $multiplier) / $multiplier; - } - return PHPExcel_Calculation_Functions::NaN(); - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * MULTINOMIAL - * - * Returns the ratio of the factorial of a sum of values to the product of factorials. - * - * @param array of mixed Data Series - * @return float - */ - public static function MULTINOMIAL() - { - $summer = 0; - $divisor = 1; - // Loop through arguments - foreach (PHPExcel_Calculation_Functions::flattenArray(func_get_args()) as $arg) { - // Is it a numeric value? - if (is_numeric($arg)) { - if ($arg < 1) { - return PHPExcel_Calculation_Functions::NaN(); - } - $summer += floor($arg); - $divisor *= self::FACT($arg); - } else { - return PHPExcel_Calculation_Functions::VALUE(); - } - } - - // Return - if ($summer > 0) { - $summer = self::FACT($summer); - return $summer / $divisor; - } - return 0; - } - - - /** - * ODD - * - * Returns number rounded up to the nearest odd integer. - * - * @param float $number Number to round - * @return int Rounded Number - */ - public static function ODD($number) - { - $number = PHPExcel_Calculation_Functions::flattenSingleValue($number); - - if (is_null($number)) { - return 1; - } elseif (is_bool($number)) { - return 1; - } elseif (is_numeric($number)) { - $significance = self::SIGN($number); - if ($significance == 0) { - return 1; - } - - $result = self::CEILING($number, $significance); - if ($result == self::EVEN($result)) { - $result += $significance; - } - - return (int) $result; - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * POWER - * - * Computes x raised to the power y. - * - * @param float $x - * @param float $y - * @return float - */ - public static function POWER($x = 0, $y = 2) - { - $x = PHPExcel_Calculation_Functions::flattenSingleValue($x); - $y = PHPExcel_Calculation_Functions::flattenSingleValue($y); - - // Validate parameters - if ($x == 0.0 && $y == 0.0) { - return PHPExcel_Calculation_Functions::NaN(); - } elseif ($x == 0.0 && $y < 0.0) { - return PHPExcel_Calculation_Functions::DIV0(); - } - - // Return - $result = pow($x, $y); - return (!is_nan($result) && !is_infinite($result)) ? $result : PHPExcel_Calculation_Functions::NaN(); - } - - - /** - * PRODUCT - * - * PRODUCT returns the product of all the values and cells referenced in the argument list. - * - * Excel Function: - * PRODUCT(value1[,value2[, ...]]) - * - * @access public - * @category Mathematical and Trigonometric Functions - * @param mixed $arg,... Data values - * @return float - */ - public static function PRODUCT() - { - // Return value - $returnValue = null; - - // Loop through arguments - foreach (PHPExcel_Calculation_Functions::flattenArray(func_get_args()) as $arg) { - // Is it a numeric value? - if ((is_numeric($arg)) && (!is_string($arg))) { - if (is_null($returnValue)) { - $returnValue = $arg; - } else { - $returnValue *= $arg; - } - } - } - - // Return - if (is_null($returnValue)) { - return 0; - } - return $returnValue; - } - - - /** - * QUOTIENT - * - * QUOTIENT function returns the integer portion of a division. Numerator is the divided number - * and denominator is the divisor. - * - * Excel Function: - * QUOTIENT(value1[,value2[, ...]]) - * - * @access public - * @category Mathematical and Trigonometric Functions - * @param mixed $arg,... Data values - * @return float - */ - public static function QUOTIENT() - { - // Return value - $returnValue = null; - - // Loop through arguments - foreach (PHPExcel_Calculation_Functions::flattenArray(func_get_args()) as $arg) { - // Is it a numeric value? - if ((is_numeric($arg)) && (!is_string($arg))) { - if (is_null($returnValue)) { - $returnValue = ($arg == 0) ? 0 : $arg; - } else { - if (($returnValue == 0) || ($arg == 0)) { - $returnValue = 0; - } else { - $returnValue /= $arg; - } - } - } - } - - // Return - return intval($returnValue); - } - - - /** - * RAND - * - * @param int $min Minimal value - * @param int $max Maximal value - * @return int Random number - */ - public static function RAND($min = 0, $max = 0) - { - $min = PHPExcel_Calculation_Functions::flattenSingleValue($min); - $max = PHPExcel_Calculation_Functions::flattenSingleValue($max); - - if ($min == 0 && $max == 0) { - return (mt_rand(0, 10000000)) / 10000000; - } else { - return mt_rand($min, $max); - } - } - - - public static function ROMAN($aValue, $style = 0) - { - $aValue = PHPExcel_Calculation_Functions::flattenSingleValue($aValue); - $style = (is_null($style)) ? 0 : (integer) PHPExcel_Calculation_Functions::flattenSingleValue($style); - if ((!is_numeric($aValue)) || ($aValue < 0) || ($aValue >= 4000)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $aValue = (integer) $aValue; - if ($aValue == 0) { - return ''; - } - - $mill = array('', 'M', 'MM', 'MMM', 'MMMM', 'MMMMM'); - $cent = array('', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM'); - $tens = array('', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC'); - $ones = array('', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'); - - $roman = ''; - while ($aValue > 5999) { - $roman .= 'M'; - $aValue -= 1000; - } - $m = self::romanCut($aValue, 1000); - $aValue %= 1000; - $c = self::romanCut($aValue, 100); - $aValue %= 100; - $t = self::romanCut($aValue, 10); - $aValue %= 10; - - return $roman.$mill[$m].$cent[$c].$tens[$t].$ones[$aValue]; - } - - - /** - * ROUNDUP - * - * Rounds a number up to a specified number of decimal places - * - * @param float $number Number to round - * @param int $digits Number of digits to which you want to round $number - * @return float Rounded Number - */ - public static function ROUNDUP($number, $digits) - { - $number = PHPExcel_Calculation_Functions::flattenSingleValue($number); - $digits = PHPExcel_Calculation_Functions::flattenSingleValue($digits); - - if ((is_numeric($number)) && (is_numeric($digits))) { - $significance = pow(10, (int) $digits); - if ($number < 0.0) { - return floor($number * $significance) / $significance; - } else { - return ceil($number * $significance) / $significance; - } - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * ROUNDDOWN - * - * Rounds a number down to a specified number of decimal places - * - * @param float $number Number to round - * @param int $digits Number of digits to which you want to round $number - * @return float Rounded Number - */ - public static function ROUNDDOWN($number, $digits) - { - $number = PHPExcel_Calculation_Functions::flattenSingleValue($number); - $digits = PHPExcel_Calculation_Functions::flattenSingleValue($digits); - - if ((is_numeric($number)) && (is_numeric($digits))) { - $significance = pow(10, (int) $digits); - if ($number < 0.0) { - return ceil($number * $significance) / $significance; - } else { - return floor($number * $significance) / $significance; - } - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * SERIESSUM - * - * Returns the sum of a power series - * - * @param float $x Input value to the power series - * @param float $n Initial power to which you want to raise $x - * @param float $m Step by which to increase $n for each term in the series - * @param array of mixed Data Series - * @return float - */ - public static function SERIESSUM() - { - $returnValue = 0; - - // Loop through arguments - $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); - - $x = array_shift($aArgs); - $n = array_shift($aArgs); - $m = array_shift($aArgs); - - if ((is_numeric($x)) && (is_numeric($n)) && (is_numeric($m))) { - // Calculate - $i = 0; - foreach ($aArgs as $arg) { - // Is it a numeric value? - if ((is_numeric($arg)) && (!is_string($arg))) { - $returnValue += $arg * pow($x, $n + ($m * $i++)); - } else { - return PHPExcel_Calculation_Functions::VALUE(); - } - } - return $returnValue; - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * SIGN - * - * Determines the sign of a number. Returns 1 if the number is positive, zero (0) - * if the number is 0, and -1 if the number is negative. - * - * @param float $number Number to round - * @return int sign value - */ - public static function SIGN($number) - { - $number = PHPExcel_Calculation_Functions::flattenSingleValue($number); - - if (is_bool($number)) { - return (int) $number; - } - if (is_numeric($number)) { - if ($number == 0.0) { - return 0; - } - return $number / abs($number); - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * SQRTPI - * - * Returns the square root of (number * pi). - * - * @param float $number Number - * @return float Square Root of Number * Pi - */ - public static function SQRTPI($number) - { - $number = PHPExcel_Calculation_Functions::flattenSingleValue($number); - - if (is_numeric($number)) { - if ($number < 0) { - return PHPExcel_Calculation_Functions::NaN(); - } - return sqrt($number * M_PI) ; - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * SUBTOTAL - * - * Returns a subtotal in a list or database. - * - * @param int the number 1 to 11 that specifies which function to - * use in calculating subtotals within a list. - * @param array of mixed Data Series - * @return float - */ - public static function SUBTOTAL() - { - $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); - - // Calculate - $subtotal = array_shift($aArgs); - - if ((is_numeric($subtotal)) && (!is_string($subtotal))) { - switch ($subtotal) { - case 1: - return PHPExcel_Calculation_Statistical::AVERAGE($aArgs); - case 2: - return PHPExcel_Calculation_Statistical::COUNT($aArgs); - case 3: - return PHPExcel_Calculation_Statistical::COUNTA($aArgs); - case 4: - return PHPExcel_Calculation_Statistical::MAX($aArgs); - case 5: - return PHPExcel_Calculation_Statistical::MIN($aArgs); - case 6: - return self::PRODUCT($aArgs); - case 7: - return PHPExcel_Calculation_Statistical::STDEV($aArgs); - case 8: - return PHPExcel_Calculation_Statistical::STDEVP($aArgs); - case 9: - return self::SUM($aArgs); - case 10: - return PHPExcel_Calculation_Statistical::VARFunc($aArgs); - case 11: - return PHPExcel_Calculation_Statistical::VARP($aArgs); - } - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * SUM - * - * SUM computes the sum of all the values and cells referenced in the argument list. - * - * Excel Function: - * SUM(value1[,value2[, ...]]) - * - * @access public - * @category Mathematical and Trigonometric Functions - * @param mixed $arg,... Data values - * @return float - */ - public static function SUM() - { - $returnValue = 0; - - // Loop through the arguments - foreach (PHPExcel_Calculation_Functions::flattenArray(func_get_args()) as $arg) { - // Is it a numeric value? - if ((is_numeric($arg)) && (!is_string($arg))) { - $returnValue += $arg; - } - } - - return $returnValue; - } - - - /** - * SUMIF - * - * Counts the number of cells that contain numbers within the list of arguments - * - * Excel Function: - * SUMIF(value1[,value2[, ...]],condition) - * - * @access public - * @category Mathematical and Trigonometric Functions - * @param mixed $arg,... Data values - * @param string $condition The criteria that defines which cells will be summed. - * @return float - */ - public static function SUMIF($aArgs, $condition, $sumArgs = array()) - { - $returnValue = 0; - - $aArgs = PHPExcel_Calculation_Functions::flattenArray($aArgs); - $sumArgs = PHPExcel_Calculation_Functions::flattenArray($sumArgs); - if (empty($sumArgs)) { - $sumArgs = $aArgs; - } - $condition = PHPExcel_Calculation_Functions::ifCondition($condition); - // Loop through arguments - foreach ($aArgs as $key => $arg) { - if (!is_numeric($arg)) { - $arg = str_replace('"', '""', $arg); - $arg = PHPExcel_Calculation::wrapResult(strtoupper($arg)); - } - - $testCondition = '='.$arg.$condition; - if (PHPExcel_Calculation::getInstance()->_calculateFormulaValue($testCondition)) { - // Is it a value within our criteria - $returnValue += $sumArgs[$key]; - } - } - - return $returnValue; - } - - - /** - * SUMIFS - * - * Counts the number of cells that contain numbers within the list of arguments - * - * Excel Function: - * SUMIFS(value1[,value2[, ...]],condition) - * - * @access public - * @category Mathematical and Trigonometric Functions - * @param mixed $arg,... Data values - * @param string $condition The criteria that defines which cells will be summed. - * @return float - */ - public static function SUMIFS() { - $arrayList = func_get_args(); - - $sumArgs = PHPExcel_Calculation_Functions::flattenArray(array_shift($arrayList)); - - while (count($arrayList) > 0) { - $aArgsArray[] = PHPExcel_Calculation_Functions::flattenArray(array_shift($arrayList)); - $conditions[] = PHPExcel_Calculation_Functions::ifCondition(array_shift($arrayList)); - } - - // Loop through each set of arguments and conditions - foreach ($conditions as $index => $condition) { - $aArgs = $aArgsArray[$index]; - $wildcard = false; - if ((strpos($condition, '*') !== false) || (strpos($condition, '?') !== false)) { - // * and ? are wildcard characters. - // Use ~* and ~? for literal star and question mark - // Code logic doesn't yet handle escaping - $condition = trim(ltrim($condition, '=<>'), '"'); - $wildcard = true; - } - // Loop through arguments - foreach ($aArgs as $key => $arg) { - if ($wildcard) { - if (!fnmatch($condition, $arg, FNM_CASEFOLD)) { - // Is it a value within our criteria - $sumArgs[$key] = 0.0; - } - } else { - if (!is_numeric($arg)) { - $arg = PHPExcel_Calculation::wrapResult(strtoupper($arg)); - } - $testCondition = '='.$arg.$condition; - if (!PHPExcel_Calculation::getInstance()->_calculateFormulaValue($testCondition)) { - // Is it a value within our criteria - $sumArgs[$key] = 0.0; - } - } - } - } - - // Return - return array_sum($sumArgs); - } - - - /** - * SUMPRODUCT - * - * Excel Function: - * SUMPRODUCT(value1[,value2[, ...]]) - * - * @access public - * @category Mathematical and Trigonometric Functions - * @param mixed $arg,... Data values - * @return float - */ - public static function SUMPRODUCT() - { - $arrayList = func_get_args(); - - $wrkArray = PHPExcel_Calculation_Functions::flattenArray(array_shift($arrayList)); - $wrkCellCount = count($wrkArray); - - for ($i=0; $i< $wrkCellCount; ++$i) { - if ((!is_numeric($wrkArray[$i])) || (is_string($wrkArray[$i]))) { - $wrkArray[$i] = 0; - } - } - - foreach ($arrayList as $matrixData) { - $array2 = PHPExcel_Calculation_Functions::flattenArray($matrixData); - $count = count($array2); - if ($wrkCellCount != $count) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - foreach ($array2 as $i => $val) { - if ((!is_numeric($val)) || (is_string($val))) { - $val = 0; - } - $wrkArray[$i] *= $val; - } - } - - return array_sum($wrkArray); - } - - - /** - * SUMSQ - * - * SUMSQ returns the sum of the squares of the arguments - * - * Excel Function: - * SUMSQ(value1[,value2[, ...]]) - * - * @access public - * @category Mathematical and Trigonometric Functions - * @param mixed $arg,... Data values - * @return float - */ - public static function SUMSQ() - { - $returnValue = 0; - - // Loop through arguments - foreach (PHPExcel_Calculation_Functions::flattenArray(func_get_args()) as $arg) { - // Is it a numeric value? - if ((is_numeric($arg)) && (!is_string($arg))) { - $returnValue += ($arg * $arg); - } - } - - return $returnValue; - } - - - /** - * SUMX2MY2 - * - * @param mixed[] $matrixData1 Matrix #1 - * @param mixed[] $matrixData2 Matrix #2 - * @return float - */ - public static function SUMX2MY2($matrixData1, $matrixData2) - { - $array1 = PHPExcel_Calculation_Functions::flattenArray($matrixData1); - $array2 = PHPExcel_Calculation_Functions::flattenArray($matrixData2); - $count = min(count($array1), count($array2)); - - $result = 0; - for ($i = 0; $i < $count; ++$i) { - if (((is_numeric($array1[$i])) && (!is_string($array1[$i]))) && - ((is_numeric($array2[$i])) && (!is_string($array2[$i])))) { - $result += ($array1[$i] * $array1[$i]) - ($array2[$i] * $array2[$i]); - } - } - - return $result; - } - - - /** - * SUMX2PY2 - * - * @param mixed[] $matrixData1 Matrix #1 - * @param mixed[] $matrixData2 Matrix #2 - * @return float - */ - public static function SUMX2PY2($matrixData1, $matrixData2) - { - $array1 = PHPExcel_Calculation_Functions::flattenArray($matrixData1); - $array2 = PHPExcel_Calculation_Functions::flattenArray($matrixData2); - $count = min(count($array1), count($array2)); - - $result = 0; - for ($i = 0; $i < $count; ++$i) { - if (((is_numeric($array1[$i])) && (!is_string($array1[$i]))) && - ((is_numeric($array2[$i])) && (!is_string($array2[$i])))) { - $result += ($array1[$i] * $array1[$i]) + ($array2[$i] * $array2[$i]); - } - } - - return $result; - } - - - /** - * SUMXMY2 - * - * @param mixed[] $matrixData1 Matrix #1 - * @param mixed[] $matrixData2 Matrix #2 - * @return float - */ - public static function SUMXMY2($matrixData1, $matrixData2) - { - $array1 = PHPExcel_Calculation_Functions::flattenArray($matrixData1); - $array2 = PHPExcel_Calculation_Functions::flattenArray($matrixData2); - $count = min(count($array1), count($array2)); - - $result = 0; - for ($i = 0; $i < $count; ++$i) { - if (((is_numeric($array1[$i])) && (!is_string($array1[$i]))) && - ((is_numeric($array2[$i])) && (!is_string($array2[$i])))) { - $result += ($array1[$i] - $array2[$i]) * ($array1[$i] - $array2[$i]); - } - } - - return $result; - } - - - /** - * TRUNC - * - * Truncates value to the number of fractional digits by number_digits. - * - * @param float $value - * @param int $digits - * @return float Truncated value - */ - public static function TRUNC($value = 0, $digits = 0) - { - $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); - $digits = PHPExcel_Calculation_Functions::flattenSingleValue($digits); - - // Validate parameters - if ((!is_numeric($value)) || (!is_numeric($digits))) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $digits = floor($digits); - - // Truncate - $adjust = pow(10, $digits); - - if (($digits > 0) && (rtrim(intval((abs($value) - abs(intval($value))) * $adjust), '0') < $adjust/10)) { - return $value; - } - - return (intval($value * $adjust)) / $adjust; - } -} diff --git a/application/third_party/PHPExcel/Calculation/Statistical.php b/application/third_party/PHPExcel/Calculation/Statistical.php deleted file mode 100644 index 1a33610f..00000000 --- a/application/third_party/PHPExcel/Calculation/Statistical.php +++ /dev/null @@ -1,3745 +0,0 @@ - $value) { - if ((is_bool($value)) || (is_string($value)) || (is_null($value))) { - unset($array1[$key]); - unset($array2[$key]); - } - } - foreach ($array2 as $key => $value) { - if ((is_bool($value)) || (is_string($value)) || (is_null($value))) { - unset($array1[$key]); - unset($array2[$key]); - } - } - $array1 = array_merge($array1); - $array2 = array_merge($array2); - - return true; - } - - - /** - * Beta function. - * - * @author Jaco van Kooten - * - * @param p require p>0 - * @param q require q>0 - * @return 0 if p<=0, q<=0 or p+q>2.55E305 to avoid errors and over/underflow - */ - private static function beta($p, $q) - { - if ($p <= 0.0 || $q <= 0.0 || ($p + $q) > LOG_GAMMA_X_MAX_VALUE) { - return 0.0; - } else { - return exp(self::logBeta($p, $q)); - } - } - - - /** - * Incomplete beta function - * - * @author Jaco van Kooten - * @author Paul Meagher - * - * The computation is based on formulas from Numerical Recipes, Chapter 6.4 (W.H. Press et al, 1992). - * @param x require 0<=x<=1 - * @param p require p>0 - * @param q require q>0 - * @return 0 if x<0, p<=0, q<=0 or p+q>2.55E305 and 1 if x>1 to avoid errors and over/underflow - */ - private static function incompleteBeta($x, $p, $q) - { - if ($x <= 0.0) { - return 0.0; - } elseif ($x >= 1.0) { - return 1.0; - } elseif (($p <= 0.0) || ($q <= 0.0) || (($p + $q) > LOG_GAMMA_X_MAX_VALUE)) { - return 0.0; - } - $beta_gam = exp((0 - self::logBeta($p, $q)) + $p * log($x) + $q * log(1.0 - $x)); - if ($x < ($p + 1.0) / ($p + $q + 2.0)) { - return $beta_gam * self::betaFraction($x, $p, $q) / $p; - } else { - return 1.0 - ($beta_gam * self::betaFraction(1 - $x, $q, $p) / $q); - } - } - - - // Function cache for logBeta function - private static $logBetaCacheP = 0.0; - private static $logBetaCacheQ = 0.0; - private static $logBetaCacheResult = 0.0; - - /** - * The natural logarithm of the beta function. - * - * @param p require p>0 - * @param q require q>0 - * @return 0 if p<=0, q<=0 or p+q>2.55E305 to avoid errors and over/underflow - * @author Jaco van Kooten - */ - private static function logBeta($p, $q) - { - if ($p != self::$logBetaCacheP || $q != self::$logBetaCacheQ) { - self::$logBetaCacheP = $p; - self::$logBetaCacheQ = $q; - if (($p <= 0.0) || ($q <= 0.0) || (($p + $q) > LOG_GAMMA_X_MAX_VALUE)) { - self::$logBetaCacheResult = 0.0; - } else { - self::$logBetaCacheResult = self::logGamma($p) + self::logGamma($q) - self::logGamma($p + $q); - } - } - return self::$logBetaCacheResult; - } - - - /** - * Evaluates of continued fraction part of incomplete beta function. - * Based on an idea from Numerical Recipes (W.H. Press et al, 1992). - * @author Jaco van Kooten - */ - private static function betaFraction($x, $p, $q) - { - $c = 1.0; - $sum_pq = $p + $q; - $p_plus = $p + 1.0; - $p_minus = $p - 1.0; - $h = 1.0 - $sum_pq * $x / $p_plus; - if (abs($h) < XMININ) { - $h = XMININ; - } - $h = 1.0 / $h; - $frac = $h; - $m = 1; - $delta = 0.0; - while ($m <= MAX_ITERATIONS && abs($delta-1.0) > PRECISION) { - $m2 = 2 * $m; - // even index for d - $d = $m * ($q - $m) * $x / ( ($p_minus + $m2) * ($p + $m2)); - $h = 1.0 + $d * $h; - if (abs($h) < XMININ) { - $h = XMININ; - } - $h = 1.0 / $h; - $c = 1.0 + $d / $c; - if (abs($c) < XMININ) { - $c = XMININ; - } - $frac *= $h * $c; - // odd index for d - $d = -($p + $m) * ($sum_pq + $m) * $x / (($p + $m2) * ($p_plus + $m2)); - $h = 1.0 + $d * $h; - if (abs($h) < XMININ) { - $h = XMININ; - } - $h = 1.0 / $h; - $c = 1.0 + $d / $c; - if (abs($c) < XMININ) { - $c = XMININ; - } - $delta = $h * $c; - $frac *= $delta; - ++$m; - } - return $frac; - } - - - /** - * logGamma function - * - * @version 1.1 - * @author Jaco van Kooten - * - * Original author was Jaco van Kooten. Ported to PHP by Paul Meagher. - * - * The natural logarithm of the gamma function.
    - * Based on public domain NETLIB (Fortran) code by W. J. Cody and L. Stoltz
    - * Applied Mathematics Division
    - * Argonne National Laboratory
    - * Argonne, IL 60439
    - *

    - * References: - *

      - *
    1. W. J. Cody and K. E. Hillstrom, 'Chebyshev Approximations for the Natural - * Logarithm of the Gamma Function,' Math. Comp. 21, 1967, pp. 198-203.
    2. - *
    3. K. E. Hillstrom, ANL/AMD Program ANLC366S, DGAMMA/DLGAMA, May, 1969.
    4. - *
    5. Hart, Et. Al., Computer Approximations, Wiley and sons, New York, 1968.
    6. - *
    - *

    - *

    - * From the original documentation: - *

    - *

    - * This routine calculates the LOG(GAMMA) function for a positive real argument X. - * Computation is based on an algorithm outlined in references 1 and 2. - * The program uses rational functions that theoretically approximate LOG(GAMMA) - * to at least 18 significant decimal digits. The approximation for X > 12 is from - * reference 3, while approximations for X < 12.0 are similar to those in reference - * 1, but are unpublished. The accuracy achieved depends on the arithmetic system, - * the compiler, the intrinsic functions, and proper selection of the - * machine-dependent constants. - *

    - *

    - * Error returns:
    - * The program returns the value XINF for X .LE. 0.0 or when overflow would occur. - * The computation is believed to be free of underflow and overflow. - *

    - * @return MAX_VALUE for x < 0.0 or when overflow would occur, i.e. x > 2.55E305 - */ - - // Function cache for logGamma - private static $logGammaCacheResult = 0.0; - private static $logGammaCacheX = 0.0; - - private static function logGamma($x) - { - // Log Gamma related constants - static $lg_d1 = -0.5772156649015328605195174; - static $lg_d2 = 0.4227843350984671393993777; - static $lg_d4 = 1.791759469228055000094023; - - static $lg_p1 = array( - 4.945235359296727046734888, - 201.8112620856775083915565, - 2290.838373831346393026739, - 11319.67205903380828685045, - 28557.24635671635335736389, - 38484.96228443793359990269, - 26377.48787624195437963534, - 7225.813979700288197698961 - ); - static $lg_p2 = array( - 4.974607845568932035012064, - 542.4138599891070494101986, - 15506.93864978364947665077, - 184793.2904445632425417223, - 1088204.76946882876749847, - 3338152.967987029735917223, - 5106661.678927352456275255, - 3074109.054850539556250927 - ); - static $lg_p4 = array( - 14745.02166059939948905062, - 2426813.369486704502836312, - 121475557.4045093227939592, - 2663432449.630976949898078, - 29403789566.34553899906876, - 170266573776.5398868392998, - 492612579337.743088758812, - 560625185622.3951465078242 - ); - static $lg_q1 = array( - 67.48212550303777196073036, - 1113.332393857199323513008, - 7738.757056935398733233834, - 27639.87074403340708898585, - 54993.10206226157329794414, - 61611.22180066002127833352, - 36351.27591501940507276287, - 8785.536302431013170870835 - ); - static $lg_q2 = array( - 183.0328399370592604055942, - 7765.049321445005871323047, - 133190.3827966074194402448, - 1136705.821321969608938755, - 5267964.117437946917577538, - 13467014.54311101692290052, - 17827365.30353274213975932, - 9533095.591844353613395747 - ); - static $lg_q4 = array( - 2690.530175870899333379843, - 639388.5654300092398984238, - 41355999.30241388052042842, - 1120872109.61614794137657, - 14886137286.78813811542398, - 101680358627.2438228077304, - 341747634550.7377132798597, - 446315818741.9713286462081 - ); - static $lg_c = array( - -0.001910444077728, - 8.4171387781295e-4, - -5.952379913043012e-4, - 7.93650793500350248e-4, - -0.002777777777777681622553, - 0.08333333333333333331554247, - 0.0057083835261 - ); - - // Rough estimate of the fourth root of logGamma_xBig - static $lg_frtbig = 2.25e76; - static $pnt68 = 0.6796875; - - - if ($x == self::$logGammaCacheX) { - return self::$logGammaCacheResult; - } - $y = $x; - if ($y > 0.0 && $y <= LOG_GAMMA_X_MAX_VALUE) { - if ($y <= EPS) { - $res = -log(y); - } elseif ($y <= 1.5) { - // --------------------- - // EPS .LT. X .LE. 1.5 - // --------------------- - if ($y < $pnt68) { - $corr = -log($y); - $xm1 = $y; - } else { - $corr = 0.0; - $xm1 = $y - 1.0; - } - if ($y <= 0.5 || $y >= $pnt68) { - $xden = 1.0; - $xnum = 0.0; - for ($i = 0; $i < 8; ++$i) { - $xnum = $xnum * $xm1 + $lg_p1[$i]; - $xden = $xden * $xm1 + $lg_q1[$i]; - } - $res = $corr + $xm1 * ($lg_d1 + $xm1 * ($xnum / $xden)); - } else { - $xm2 = $y - 1.0; - $xden = 1.0; - $xnum = 0.0; - for ($i = 0; $i < 8; ++$i) { - $xnum = $xnum * $xm2 + $lg_p2[$i]; - $xden = $xden * $xm2 + $lg_q2[$i]; - } - $res = $corr + $xm2 * ($lg_d2 + $xm2 * ($xnum / $xden)); - } - } elseif ($y <= 4.0) { - // --------------------- - // 1.5 .LT. X .LE. 4.0 - // --------------------- - $xm2 = $y - 2.0; - $xden = 1.0; - $xnum = 0.0; - for ($i = 0; $i < 8; ++$i) { - $xnum = $xnum * $xm2 + $lg_p2[$i]; - $xden = $xden * $xm2 + $lg_q2[$i]; - } - $res = $xm2 * ($lg_d2 + $xm2 * ($xnum / $xden)); - } elseif ($y <= 12.0) { - // ---------------------- - // 4.0 .LT. X .LE. 12.0 - // ---------------------- - $xm4 = $y - 4.0; - $xden = -1.0; - $xnum = 0.0; - for ($i = 0; $i < 8; ++$i) { - $xnum = $xnum * $xm4 + $lg_p4[$i]; - $xden = $xden * $xm4 + $lg_q4[$i]; - } - $res = $lg_d4 + $xm4 * ($xnum / $xden); - } else { - // --------------------------------- - // Evaluate for argument .GE. 12.0 - // --------------------------------- - $res = 0.0; - if ($y <= $lg_frtbig) { - $res = $lg_c[6]; - $ysq = $y * $y; - for ($i = 0; $i < 6; ++$i) { - $res = $res / $ysq + $lg_c[$i]; - } - $res /= $y; - $corr = log($y); - $res = $res + log(SQRT2PI) - 0.5 * $corr; - $res += $y * ($corr - 1.0); - } - } - } else { - // -------------------------- - // Return for bad arguments - // -------------------------- - $res = MAX_VALUE; - } - // ------------------------------ - // Final adjustments and return - // ------------------------------ - self::$logGammaCacheX = $x; - self::$logGammaCacheResult = $res; - return $res; - } - - - // - // Private implementation of the incomplete Gamma function - // - private static function incompleteGamma($a, $x) - { - static $max = 32; - $summer = 0; - for ($n=0; $n<=$max; ++$n) { - $divisor = $a; - for ($i=1; $i<=$n; ++$i) { - $divisor *= ($a + $i); - } - $summer += (pow($x, $n) / $divisor); - } - return pow($x, $a) * exp(0-$x) * $summer; - } - - - // - // Private implementation of the Gamma function - // - private static function gamma($data) - { - if ($data == 0.0) { - return 0; - } - - static $p0 = 1.000000000190015; - static $p = array( - 1 => 76.18009172947146, - 2 => -86.50532032941677, - 3 => 24.01409824083091, - 4 => -1.231739572450155, - 5 => 1.208650973866179e-3, - 6 => -5.395239384953e-6 - ); - - $y = $x = $data; - $tmp = $x + 5.5; - $tmp -= ($x + 0.5) * log($tmp); - - $summer = $p0; - for ($j=1; $j<=6; ++$j) { - $summer += ($p[$j] / ++$y); - } - return exp(0 - $tmp + log(SQRT2PI * $summer / $x)); - } - - - /*************************************************************************** - * inverse_ncdf.php - * ------------------- - * begin : Friday, January 16, 2004 - * copyright : (C) 2004 Michael Nickerson - * email : nickersonm@yahoo.com - * - ***************************************************************************/ - private static function inverseNcdf($p) - { - // Inverse ncdf approximation by Peter J. Acklam, implementation adapted to - // PHP by Michael Nickerson, using Dr. Thomas Ziegler's C implementation as - // a guide. http://home.online.no/~pjacklam/notes/invnorm/index.html - // I have not checked the accuracy of this implementation. Be aware that PHP - // will truncate the coeficcients to 14 digits. - - // You have permission to use and distribute this function freely for - // whatever purpose you want, but please show common courtesy and give credit - // where credit is due. - - // Input paramater is $p - probability - where 0 < p < 1. - - // Coefficients in rational approximations - static $a = array( - 1 => -3.969683028665376e+01, - 2 => 2.209460984245205e+02, - 3 => -2.759285104469687e+02, - 4 => 1.383577518672690e+02, - 5 => -3.066479806614716e+01, - 6 => 2.506628277459239e+00 - ); - - static $b = array( - 1 => -5.447609879822406e+01, - 2 => 1.615858368580409e+02, - 3 => -1.556989798598866e+02, - 4 => 6.680131188771972e+01, - 5 => -1.328068155288572e+01 - ); - - static $c = array( - 1 => -7.784894002430293e-03, - 2 => -3.223964580411365e-01, - 3 => -2.400758277161838e+00, - 4 => -2.549732539343734e+00, - 5 => 4.374664141464968e+00, - 6 => 2.938163982698783e+00 - ); - - static $d = array( - 1 => 7.784695709041462e-03, - 2 => 3.224671290700398e-01, - 3 => 2.445134137142996e+00, - 4 => 3.754408661907416e+00 - ); - - // Define lower and upper region break-points. - $p_low = 0.02425; //Use lower region approx. below this - $p_high = 1 - $p_low; //Use upper region approx. above this - - if (0 < $p && $p < $p_low) { - // Rational approximation for lower region. - $q = sqrt(-2 * log($p)); - return ((((($c[1] * $q + $c[2]) * $q + $c[3]) * $q + $c[4]) * $q + $c[5]) * $q + $c[6]) / - (((($d[1] * $q + $d[2]) * $q + $d[3]) * $q + $d[4]) * $q + 1); - } elseif ($p_low <= $p && $p <= $p_high) { - // Rational approximation for central region. - $q = $p - 0.5; - $r = $q * $q; - return ((((($a[1] * $r + $a[2]) * $r + $a[3]) * $r + $a[4]) * $r + $a[5]) * $r + $a[6]) * $q / - ((((($b[1] * $r + $b[2]) * $r + $b[3]) * $r + $b[4]) * $r + $b[5]) * $r + 1); - } elseif ($p_high < $p && $p < 1) { - // Rational approximation for upper region. - $q = sqrt(-2 * log(1 - $p)); - return -((((($c[1] * $q + $c[2]) * $q + $c[3]) * $q + $c[4]) * $q + $c[5]) * $q + $c[6]) / - (((($d[1] * $q + $d[2]) * $q + $d[3]) * $q + $d[4]) * $q + 1); - } - // If 0 < p < 1, return a null value - return PHPExcel_Calculation_Functions::NULL(); - } - - - private static function inverseNcdf2($prob) - { - // Approximation of inverse standard normal CDF developed by - // B. Moro, "The Full Monte," Risk 8(2), Feb 1995, 57-58. - - $a1 = 2.50662823884; - $a2 = -18.61500062529; - $a3 = 41.39119773534; - $a4 = -25.44106049637; - - $b1 = -8.4735109309; - $b2 = 23.08336743743; - $b3 = -21.06224101826; - $b4 = 3.13082909833; - - $c1 = 0.337475482272615; - $c2 = 0.976169019091719; - $c3 = 0.160797971491821; - $c4 = 2.76438810333863E-02; - $c5 = 3.8405729373609E-03; - $c6 = 3.951896511919E-04; - $c7 = 3.21767881768E-05; - $c8 = 2.888167364E-07; - $c9 = 3.960315187E-07; - - $y = $prob - 0.5; - if (abs($y) < 0.42) { - $z = ($y * $y); - $z = $y * ((($a4 * $z + $a3) * $z + $a2) * $z + $a1) / (((($b4 * $z + $b3) * $z + $b2) * $z + $b1) * $z + 1); - } else { - if ($y > 0) { - $z = log(-log(1 - $prob)); - } else { - $z = log(-log($prob)); - } - $z = $c1 + $z * ($c2 + $z * ($c3 + $z * ($c4 + $z * ($c5 + $z * ($c6 + $z * ($c7 + $z * ($c8 + $z * $c9))))))); - if ($y < 0) { - $z = -$z; - } - } - return $z; - } // function inverseNcdf2() - - - private static function inverseNcdf3($p) - { - // ALGORITHM AS241 APPL. STATIST. (1988) VOL. 37, NO. 3. - // Produces the normal deviate Z corresponding to a given lower - // tail area of P; Z is accurate to about 1 part in 10**16. - // - // This is a PHP version of the original FORTRAN code that can - // be found at http://lib.stat.cmu.edu/apstat/ - $split1 = 0.425; - $split2 = 5; - $const1 = 0.180625; - $const2 = 1.6; - - // coefficients for p close to 0.5 - $a0 = 3.3871328727963666080; - $a1 = 1.3314166789178437745E+2; - $a2 = 1.9715909503065514427E+3; - $a3 = 1.3731693765509461125E+4; - $a4 = 4.5921953931549871457E+4; - $a5 = 6.7265770927008700853E+4; - $a6 = 3.3430575583588128105E+4; - $a7 = 2.5090809287301226727E+3; - - $b1 = 4.2313330701600911252E+1; - $b2 = 6.8718700749205790830E+2; - $b3 = 5.3941960214247511077E+3; - $b4 = 2.1213794301586595867E+4; - $b5 = 3.9307895800092710610E+4; - $b6 = 2.8729085735721942674E+4; - $b7 = 5.2264952788528545610E+3; - - // coefficients for p not close to 0, 0.5 or 1. - $c0 = 1.42343711074968357734; - $c1 = 4.63033784615654529590; - $c2 = 5.76949722146069140550; - $c3 = 3.64784832476320460504; - $c4 = 1.27045825245236838258; - $c5 = 2.41780725177450611770E-1; - $c6 = 2.27238449892691845833E-2; - $c7 = 7.74545014278341407640E-4; - - $d1 = 2.05319162663775882187; - $d2 = 1.67638483018380384940; - $d3 = 6.89767334985100004550E-1; - $d4 = 1.48103976427480074590E-1; - $d5 = 1.51986665636164571966E-2; - $d6 = 5.47593808499534494600E-4; - $d7 = 1.05075007164441684324E-9; - - // coefficients for p near 0 or 1. - $e0 = 6.65790464350110377720; - $e1 = 5.46378491116411436990; - $e2 = 1.78482653991729133580; - $e3 = 2.96560571828504891230E-1; - $e4 = 2.65321895265761230930E-2; - $e5 = 1.24266094738807843860E-3; - $e6 = 2.71155556874348757815E-5; - $e7 = 2.01033439929228813265E-7; - - $f1 = 5.99832206555887937690E-1; - $f2 = 1.36929880922735805310E-1; - $f3 = 1.48753612908506148525E-2; - $f4 = 7.86869131145613259100E-4; - $f5 = 1.84631831751005468180E-5; - $f6 = 1.42151175831644588870E-7; - $f7 = 2.04426310338993978564E-15; - - $q = $p - 0.5; - - // computation for p close to 0.5 - if (abs($q) <= split1) { - $R = $const1 - $q * $q; - $z = $q * ((((((($a7 * $R + $a6) * $R + $a5) * $R + $a4) * $R + $a3) * $R + $a2) * $R + $a1) * $R + $a0) / - ((((((($b7 * $R + $b6) * $R + $b5) * $R + $b4) * $R + $b3) * $R + $b2) * $R + $b1) * $R + 1); - } else { - if ($q < 0) { - $R = $p; - } else { - $R = 1 - $p; - } - $R = pow(-log($R), 2); - - // computation for p not close to 0, 0.5 or 1. - if ($R <= $split2) { - $R = $R - $const2; - $z = ((((((($c7 * $R + $c6) * $R + $c5) * $R + $c4) * $R + $c3) * $R + $c2) * $R + $c1) * $R + $c0) / - ((((((($d7 * $R + $d6) * $R + $d5) * $R + $d4) * $R + $d3) * $R + $d2) * $R + $d1) * $R + 1); - } else { - // computation for p near 0 or 1. - $R = $R - $split2; - $z = ((((((($e7 * $R + $e6) * $R + $e5) * $R + $e4) * $R + $e3) * $R + $e2) * $R + $e1) * $R + $e0) / - ((((((($f7 * $R + $f6) * $R + $f5) * $R + $f4) * $R + $f3) * $R + $f2) * $R + $f1) * $R + 1); - } - if ($q < 0) { - $z = -$z; - } - } - return $z; - } - - - /** - * AVEDEV - * - * Returns the average of the absolute deviations of data points from their mean. - * AVEDEV is a measure of the variability in a data set. - * - * Excel Function: - * AVEDEV(value1[,value2[, ...]]) - * - * @access public - * @category Statistical Functions - * @param mixed $arg,... Data values - * @return float - */ - public static function AVEDEV() - { - $aArgs = PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args()); - - // Return value - $returnValue = null; - - $aMean = self::AVERAGE($aArgs); - if ($aMean != PHPExcel_Calculation_Functions::DIV0()) { - $aCount = 0; - foreach ($aArgs as $k => $arg) { - if ((is_bool($arg)) && - ((!PHPExcel_Calculation_Functions::isCellValue($k)) || (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE))) { - $arg = (integer) $arg; - } - // Is it a numeric value? - if ((is_numeric($arg)) && (!is_string($arg))) { - if (is_null($returnValue)) { - $returnValue = abs($arg - $aMean); - } else { - $returnValue += abs($arg - $aMean); - } - ++$aCount; - } - } - - // Return - if ($aCount == 0) { - return PHPExcel_Calculation_Functions::DIV0(); - } - return $returnValue / $aCount; - } - return PHPExcel_Calculation_Functions::NaN(); - } - - - /** - * AVERAGE - * - * Returns the average (arithmetic mean) of the arguments - * - * Excel Function: - * AVERAGE(value1[,value2[, ...]]) - * - * @access public - * @category Statistical Functions - * @param mixed $arg,... Data values - * @return float - */ - public static function AVERAGE() - { - $returnValue = $aCount = 0; - - // Loop through arguments - foreach (PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args()) as $k => $arg) { - if ((is_bool($arg)) && - ((!PHPExcel_Calculation_Functions::isCellValue($k)) || (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE))) { - $arg = (integer) $arg; - } - // Is it a numeric value? - if ((is_numeric($arg)) && (!is_string($arg))) { - if (is_null($returnValue)) { - $returnValue = $arg; - } else { - $returnValue += $arg; - } - ++$aCount; - } - } - - // Return - if ($aCount > 0) { - return $returnValue / $aCount; - } else { - return PHPExcel_Calculation_Functions::DIV0(); - } - } - - - /** - * AVERAGEA - * - * Returns the average of its arguments, including numbers, text, and logical values - * - * Excel Function: - * AVERAGEA(value1[,value2[, ...]]) - * - * @access public - * @category Statistical Functions - * @param mixed $arg,... Data values - * @return float - */ - public static function AVERAGEA() - { - $returnValue = null; - - $aCount = 0; - // Loop through arguments - foreach (PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args()) as $k => $arg) { - if ((is_bool($arg)) && - (!PHPExcel_Calculation_Functions::isMatrixValue($k))) { - } else { - if ((is_numeric($arg)) || (is_bool($arg)) || ((is_string($arg) && ($arg != '')))) { - if (is_bool($arg)) { - $arg = (integer) $arg; - } elseif (is_string($arg)) { - $arg = 0; - } - if (is_null($returnValue)) { - $returnValue = $arg; - } else { - $returnValue += $arg; - } - ++$aCount; - } - } - } - - if ($aCount > 0) { - return $returnValue / $aCount; - } else { - return PHPExcel_Calculation_Functions::DIV0(); - } - } - - - /** - * AVERAGEIF - * - * Returns the average value from a range of cells that contain numbers within the list of arguments - * - * Excel Function: - * AVERAGEIF(value1[,value2[, ...]],condition) - * - * @access public - * @category Mathematical and Trigonometric Functions - * @param mixed $arg,... Data values - * @param string $condition The criteria that defines which cells will be checked. - * @param mixed[] $averageArgs Data values - * @return float - */ - public static function AVERAGEIF($aArgs, $condition, $averageArgs = array()) - { - $returnValue = 0; - - $aArgs = PHPExcel_Calculation_Functions::flattenArray($aArgs); - $averageArgs = PHPExcel_Calculation_Functions::flattenArray($averageArgs); - if (empty($averageArgs)) { - $averageArgs = $aArgs; - } - $condition = PHPExcel_Calculation_Functions::ifCondition($condition); - // Loop through arguments - $aCount = 0; - foreach ($aArgs as $key => $arg) { - if (!is_numeric($arg)) { - $arg = PHPExcel_Calculation::wrapResult(strtoupper($arg)); - } - $testCondition = '='.$arg.$condition; - if (PHPExcel_Calculation::getInstance()->_calculateFormulaValue($testCondition)) { - if ((is_null($returnValue)) || ($arg > $returnValue)) { - $returnValue += $arg; - ++$aCount; - } - } - } - - if ($aCount > 0) { - return $returnValue / $aCount; - } - return PHPExcel_Calculation_Functions::DIV0(); - } - - - /** - * BETADIST - * - * Returns the beta distribution. - * - * @param float $value Value at which you want to evaluate the distribution - * @param float $alpha Parameter to the distribution - * @param float $beta Parameter to the distribution - * @param boolean $cumulative - * @return float - * - */ - public static function BETADIST($value, $alpha, $beta, $rMin = 0, $rMax = 1) - { - $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); - $alpha = PHPExcel_Calculation_Functions::flattenSingleValue($alpha); - $beta = PHPExcel_Calculation_Functions::flattenSingleValue($beta); - $rMin = PHPExcel_Calculation_Functions::flattenSingleValue($rMin); - $rMax = PHPExcel_Calculation_Functions::flattenSingleValue($rMax); - - if ((is_numeric($value)) && (is_numeric($alpha)) && (is_numeric($beta)) && (is_numeric($rMin)) && (is_numeric($rMax))) { - if (($value < $rMin) || ($value > $rMax) || ($alpha <= 0) || ($beta <= 0) || ($rMin == $rMax)) { - return PHPExcel_Calculation_Functions::NaN(); - } - if ($rMin > $rMax) { - $tmp = $rMin; - $rMin = $rMax; - $rMax = $tmp; - } - $value -= $rMin; - $value /= ($rMax - $rMin); - return self::incompleteBeta($value, $alpha, $beta); - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * BETAINV - * - * Returns the inverse of the beta distribution. - * - * @param float $probability Probability at which you want to evaluate the distribution - * @param float $alpha Parameter to the distribution - * @param float $beta Parameter to the distribution - * @param float $rMin Minimum value - * @param float $rMax Maximum value - * @param boolean $cumulative - * @return float - * - */ - public static function BETAINV($probability, $alpha, $beta, $rMin = 0, $rMax = 1) - { - $probability = PHPExcel_Calculation_Functions::flattenSingleValue($probability); - $alpha = PHPExcel_Calculation_Functions::flattenSingleValue($alpha); - $beta = PHPExcel_Calculation_Functions::flattenSingleValue($beta); - $rMin = PHPExcel_Calculation_Functions::flattenSingleValue($rMin); - $rMax = PHPExcel_Calculation_Functions::flattenSingleValue($rMax); - - if ((is_numeric($probability)) && (is_numeric($alpha)) && (is_numeric($beta)) && (is_numeric($rMin)) && (is_numeric($rMax))) { - if (($alpha <= 0) || ($beta <= 0) || ($rMin == $rMax) || ($probability <= 0) || ($probability > 1)) { - return PHPExcel_Calculation_Functions::NaN(); - } - if ($rMin > $rMax) { - $tmp = $rMin; - $rMin = $rMax; - $rMax = $tmp; - } - $a = 0; - $b = 2; - - $i = 0; - while ((($b - $a) > PRECISION) && ($i++ < MAX_ITERATIONS)) { - $guess = ($a + $b) / 2; - $result = self::BETADIST($guess, $alpha, $beta); - if (($result == $probability) || ($result == 0)) { - $b = $a; - } elseif ($result > $probability) { - $b = $guess; - } else { - $a = $guess; - } - } - if ($i == MAX_ITERATIONS) { - return PHPExcel_Calculation_Functions::NA(); - } - return round($rMin + $guess * ($rMax - $rMin), 12); - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * BINOMDIST - * - * Returns the individual term binomial distribution probability. Use BINOMDIST in problems with - * a fixed number of tests or trials, when the outcomes of any trial are only success or failure, - * when trials are independent, and when the probability of success is constant throughout the - * experiment. For example, BINOMDIST can calculate the probability that two of the next three - * babies born are male. - * - * @param float $value Number of successes in trials - * @param float $trials Number of trials - * @param float $probability Probability of success on each trial - * @param boolean $cumulative - * @return float - * - * @todo Cumulative distribution function - * - */ - public static function BINOMDIST($value, $trials, $probability, $cumulative) - { - $value = floor(PHPExcel_Calculation_Functions::flattenSingleValue($value)); - $trials = floor(PHPExcel_Calculation_Functions::flattenSingleValue($trials)); - $probability = PHPExcel_Calculation_Functions::flattenSingleValue($probability); - - if ((is_numeric($value)) && (is_numeric($trials)) && (is_numeric($probability))) { - if (($value < 0) || ($value > $trials)) { - return PHPExcel_Calculation_Functions::NaN(); - } - if (($probability < 0) || ($probability > 1)) { - return PHPExcel_Calculation_Functions::NaN(); - } - if ((is_numeric($cumulative)) || (is_bool($cumulative))) { - if ($cumulative) { - $summer = 0; - for ($i = 0; $i <= $value; ++$i) { - $summer += PHPExcel_Calculation_MathTrig::COMBIN($trials, $i) * pow($probability, $i) * pow(1 - $probability, $trials - $i); - } - return $summer; - } else { - return PHPExcel_Calculation_MathTrig::COMBIN($trials, $value) * pow($probability, $value) * pow(1 - $probability, $trials - $value) ; - } - } - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * CHIDIST - * - * Returns the one-tailed probability of the chi-squared distribution. - * - * @param float $value Value for the function - * @param float $degrees degrees of freedom - * @return float - */ - public static function CHIDIST($value, $degrees) - { - $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); - $degrees = floor(PHPExcel_Calculation_Functions::flattenSingleValue($degrees)); - - if ((is_numeric($value)) && (is_numeric($degrees))) { - if ($degrees < 1) { - return PHPExcel_Calculation_Functions::NaN(); - } - if ($value < 0) { - if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC) { - return 1; - } - return PHPExcel_Calculation_Functions::NaN(); - } - return 1 - (self::incompleteGamma($degrees/2, $value/2) / self::gamma($degrees/2)); - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * CHIINV - * - * Returns the one-tailed probability of the chi-squared distribution. - * - * @param float $probability Probability for the function - * @param float $degrees degrees of freedom - * @return float - */ - public static function CHIINV($probability, $degrees) - { - $probability = PHPExcel_Calculation_Functions::flattenSingleValue($probability); - $degrees = floor(PHPExcel_Calculation_Functions::flattenSingleValue($degrees)); - - if ((is_numeric($probability)) && (is_numeric($degrees))) { - $xLo = 100; - $xHi = 0; - - $x = $xNew = 1; - $dx = 1; - $i = 0; - - while ((abs($dx) > PRECISION) && ($i++ < MAX_ITERATIONS)) { - // Apply Newton-Raphson step - $result = self::CHIDIST($x, $degrees); - $error = $result - $probability; - if ($error == 0.0) { - $dx = 0; - } elseif ($error < 0.0) { - $xLo = $x; - } else { - $xHi = $x; - } - // Avoid division by zero - if ($result != 0.0) { - $dx = $error / $result; - $xNew = $x - $dx; - } - // If the NR fails to converge (which for example may be the - // case if the initial guess is too rough) we apply a bisection - // step to determine a more narrow interval around the root. - if (($xNew < $xLo) || ($xNew > $xHi) || ($result == 0.0)) { - $xNew = ($xLo + $xHi) / 2; - $dx = $xNew - $x; - } - $x = $xNew; - } - if ($i == MAX_ITERATIONS) { - return PHPExcel_Calculation_Functions::NA(); - } - return round($x, 12); - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * CONFIDENCE - * - * Returns the confidence interval for a population mean - * - * @param float $alpha - * @param float $stdDev Standard Deviation - * @param float $size - * @return float - * - */ - public static function CONFIDENCE($alpha, $stdDev, $size) - { - $alpha = PHPExcel_Calculation_Functions::flattenSingleValue($alpha); - $stdDev = PHPExcel_Calculation_Functions::flattenSingleValue($stdDev); - $size = floor(PHPExcel_Calculation_Functions::flattenSingleValue($size)); - - if ((is_numeric($alpha)) && (is_numeric($stdDev)) && (is_numeric($size))) { - if (($alpha <= 0) || ($alpha >= 1)) { - return PHPExcel_Calculation_Functions::NaN(); - } - if (($stdDev <= 0) || ($size < 1)) { - return PHPExcel_Calculation_Functions::NaN(); - } - return self::NORMSINV(1 - $alpha / 2) * $stdDev / sqrt($size); - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * CORREL - * - * Returns covariance, the average of the products of deviations for each data point pair. - * - * @param array of mixed Data Series Y - * @param array of mixed Data Series X - * @return float - */ - public static function CORREL($yValues, $xValues = null) - { - if ((is_null($xValues)) || (!is_array($yValues)) || (!is_array($xValues))) { - return PHPExcel_Calculation_Functions::VALUE(); - } - if (!self::checkTrendArrays($yValues, $xValues)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $yValueCount = count($yValues); - $xValueCount = count($xValues); - - if (($yValueCount == 0) || ($yValueCount != $xValueCount)) { - return PHPExcel_Calculation_Functions::NA(); - } elseif ($yValueCount == 1) { - return PHPExcel_Calculation_Functions::DIV0(); - } - - $bestFitLinear = trendClass::calculate(trendClass::TREND_LINEAR, $yValues, $xValues); - return $bestFitLinear->getCorrelation(); - } - - - /** - * COUNT - * - * Counts the number of cells that contain numbers within the list of arguments - * - * Excel Function: - * COUNT(value1[,value2[, ...]]) - * - * @access public - * @category Statistical Functions - * @param mixed $arg,... Data values - * @return int - */ - public static function COUNT() - { - $returnValue = 0; - - // Loop through arguments - $aArgs = PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args()); - foreach ($aArgs as $k => $arg) { - if ((is_bool($arg)) && - ((!PHPExcel_Calculation_Functions::isCellValue($k)) || (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE))) { - $arg = (integer) $arg; - } - // Is it a numeric value? - if ((is_numeric($arg)) && (!is_string($arg))) { - ++$returnValue; - } - } - - return $returnValue; - } - - - /** - * COUNTA - * - * Counts the number of cells that are not empty within the list of arguments - * - * Excel Function: - * COUNTA(value1[,value2[, ...]]) - * - * @access public - * @category Statistical Functions - * @param mixed $arg,... Data values - * @return int - */ - public static function COUNTA() - { - $returnValue = 0; - - // Loop through arguments - $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); - foreach ($aArgs as $arg) { - // Is it a numeric, boolean or string value? - if ((is_numeric($arg)) || (is_bool($arg)) || ((is_string($arg) && ($arg != '')))) { - ++$returnValue; - } - } - - return $returnValue; - } - - - /** - * COUNTBLANK - * - * Counts the number of empty cells within the list of arguments - * - * Excel Function: - * COUNTBLANK(value1[,value2[, ...]]) - * - * @access public - * @category Statistical Functions - * @param mixed $arg,... Data values - * @return int - */ - public static function COUNTBLANK() - { - $returnValue = 0; - - // Loop through arguments - $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); - foreach ($aArgs as $arg) { - // Is it a blank cell? - if ((is_null($arg)) || ((is_string($arg)) && ($arg == ''))) { - ++$returnValue; - } - } - - return $returnValue; - } - - - /** - * COUNTIF - * - * Counts the number of cells that contain numbers within the list of arguments - * - * Excel Function: - * COUNTIF(value1[,value2[, ...]],condition) - * - * @access public - * @category Statistical Functions - * @param mixed $arg,... Data values - * @param string $condition The criteria that defines which cells will be counted. - * @return int - */ - public static function COUNTIF($aArgs, $condition) - { - $returnValue = 0; - - $aArgs = PHPExcel_Calculation_Functions::flattenArray($aArgs); - $condition = PHPExcel_Calculation_Functions::ifCondition($condition); - // Loop through arguments - foreach ($aArgs as $arg) { - if (!is_numeric($arg)) { - $arg = PHPExcel_Calculation::wrapResult(strtoupper($arg)); - } - $testCondition = '='.$arg.$condition; - if (PHPExcel_Calculation::getInstance()->_calculateFormulaValue($testCondition)) { - // Is it a value within our criteria - ++$returnValue; - } - } - - return $returnValue; - } - - - /** - * COVAR - * - * Returns covariance, the average of the products of deviations for each data point pair. - * - * @param array of mixed Data Series Y - * @param array of mixed Data Series X - * @return float - */ - public static function COVAR($yValues, $xValues) - { - if (!self::checkTrendArrays($yValues, $xValues)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $yValueCount = count($yValues); - $xValueCount = count($xValues); - - if (($yValueCount == 0) || ($yValueCount != $xValueCount)) { - return PHPExcel_Calculation_Functions::NA(); - } elseif ($yValueCount == 1) { - return PHPExcel_Calculation_Functions::DIV0(); - } - - $bestFitLinear = trendClass::calculate(trendClass::TREND_LINEAR, $yValues, $xValues); - return $bestFitLinear->getCovariance(); - } - - - /** - * CRITBINOM - * - * Returns the smallest value for which the cumulative binomial distribution is greater - * than or equal to a criterion value - * - * See http://support.microsoft.com/kb/828117/ for details of the algorithm used - * - * @param float $trials number of Bernoulli trials - * @param float $probability probability of a success on each trial - * @param float $alpha criterion value - * @return int - * - * @todo Warning. This implementation differs from the algorithm detailed on the MS - * web site in that $CumPGuessMinus1 = $CumPGuess - 1 rather than $CumPGuess - $PGuess - * This eliminates a potential endless loop error, but may have an adverse affect on the - * accuracy of the function (although all my tests have so far returned correct results). - * - */ - public static function CRITBINOM($trials, $probability, $alpha) - { - $trials = floor(PHPExcel_Calculation_Functions::flattenSingleValue($trials)); - $probability = PHPExcel_Calculation_Functions::flattenSingleValue($probability); - $alpha = PHPExcel_Calculation_Functions::flattenSingleValue($alpha); - - if ((is_numeric($trials)) && (is_numeric($probability)) && (is_numeric($alpha))) { - if ($trials < 0) { - return PHPExcel_Calculation_Functions::NaN(); - } elseif (($probability < 0) || ($probability > 1)) { - return PHPExcel_Calculation_Functions::NaN(); - } elseif (($alpha < 0) || ($alpha > 1)) { - return PHPExcel_Calculation_Functions::NaN(); - } elseif ($alpha <= 0.5) { - $t = sqrt(log(1 / ($alpha * $alpha))); - $trialsApprox = 0 - ($t + (2.515517 + 0.802853 * $t + 0.010328 * $t * $t) / (1 + 1.432788 * $t + 0.189269 * $t * $t + 0.001308 * $t * $t * $t)); - } else { - $t = sqrt(log(1 / pow(1 - $alpha, 2))); - $trialsApprox = $t - (2.515517 + 0.802853 * $t + 0.010328 * $t * $t) / (1 + 1.432788 * $t + 0.189269 * $t * $t + 0.001308 * $t * $t * $t); - } - $Guess = floor($trials * $probability + $trialsApprox * sqrt($trials * $probability * (1 - $probability))); - if ($Guess < 0) { - $Guess = 0; - } elseif ($Guess > $trials) { - $Guess = $trials; - } - - $TotalUnscaledProbability = $UnscaledPGuess = $UnscaledCumPGuess = 0.0; - $EssentiallyZero = 10e-12; - - $m = floor($trials * $probability); - ++$TotalUnscaledProbability; - if ($m == $Guess) { - ++$UnscaledPGuess; - } - if ($m <= $Guess) { - ++$UnscaledCumPGuess; - } - - $PreviousValue = 1; - $Done = false; - $k = $m + 1; - while ((!$Done) && ($k <= $trials)) { - $CurrentValue = $PreviousValue * ($trials - $k + 1) * $probability / ($k * (1 - $probability)); - $TotalUnscaledProbability += $CurrentValue; - if ($k == $Guess) { - $UnscaledPGuess += $CurrentValue; - } - if ($k <= $Guess) { - $UnscaledCumPGuess += $CurrentValue; - } - if ($CurrentValue <= $EssentiallyZero) { - $Done = true; - } - $PreviousValue = $CurrentValue; - ++$k; - } - - $PreviousValue = 1; - $Done = false; - $k = $m - 1; - while ((!$Done) && ($k >= 0)) { - $CurrentValue = $PreviousValue * $k + 1 * (1 - $probability) / (($trials - $k) * $probability); - $TotalUnscaledProbability += $CurrentValue; - if ($k == $Guess) { - $UnscaledPGuess += $CurrentValue; - } - if ($k <= $Guess) { - $UnscaledCumPGuess += $CurrentValue; - } - if ($CurrentValue <= $EssentiallyZero) { - $Done = true; - } - $PreviousValue = $CurrentValue; - --$k; - } - - $PGuess = $UnscaledPGuess / $TotalUnscaledProbability; - $CumPGuess = $UnscaledCumPGuess / $TotalUnscaledProbability; - -// $CumPGuessMinus1 = $CumPGuess - $PGuess; - $CumPGuessMinus1 = $CumPGuess - 1; - - while (true) { - if (($CumPGuessMinus1 < $alpha) && ($CumPGuess >= $alpha)) { - return $Guess; - } elseif (($CumPGuessMinus1 < $alpha) && ($CumPGuess < $alpha)) { - $PGuessPlus1 = $PGuess * ($trials - $Guess) * $probability / $Guess / (1 - $probability); - $CumPGuessMinus1 = $CumPGuess; - $CumPGuess = $CumPGuess + $PGuessPlus1; - $PGuess = $PGuessPlus1; - ++$Guess; - } elseif (($CumPGuessMinus1 >= $alpha) && ($CumPGuess >= $alpha)) { - $PGuessMinus1 = $PGuess * $Guess * (1 - $probability) / ($trials - $Guess + 1) / $probability; - $CumPGuess = $CumPGuessMinus1; - $CumPGuessMinus1 = $CumPGuessMinus1 - $PGuess; - $PGuess = $PGuessMinus1; - --$Guess; - } - } - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * DEVSQ - * - * Returns the sum of squares of deviations of data points from their sample mean. - * - * Excel Function: - * DEVSQ(value1[,value2[, ...]]) - * - * @access public - * @category Statistical Functions - * @param mixed $arg,... Data values - * @return float - */ - public static function DEVSQ() - { - $aArgs = PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args()); - - // Return value - $returnValue = null; - - $aMean = self::AVERAGE($aArgs); - if ($aMean != PHPExcel_Calculation_Functions::DIV0()) { - $aCount = -1; - foreach ($aArgs as $k => $arg) { - // Is it a numeric value? - if ((is_bool($arg)) && - ((!PHPExcel_Calculation_Functions::isCellValue($k)) || - (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE))) { - $arg = (integer) $arg; - } - if ((is_numeric($arg)) && (!is_string($arg))) { - if (is_null($returnValue)) { - $returnValue = pow(($arg - $aMean), 2); - } else { - $returnValue += pow(($arg - $aMean), 2); - } - ++$aCount; - } - } - - // Return - if (is_null($returnValue)) { - return PHPExcel_Calculation_Functions::NaN(); - } else { - return $returnValue; - } - } - return self::NA(); - } - - - /** - * EXPONDIST - * - * Returns the exponential distribution. Use EXPONDIST to model the time between events, - * such as how long an automated bank teller takes to deliver cash. For example, you can - * use EXPONDIST to determine the probability that the process takes at most 1 minute. - * - * @param float $value Value of the function - * @param float $lambda The parameter value - * @param boolean $cumulative - * @return float - */ - public static function EXPONDIST($value, $lambda, $cumulative) - { - $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); - $lambda = PHPExcel_Calculation_Functions::flattenSingleValue($lambda); - $cumulative = PHPExcel_Calculation_Functions::flattenSingleValue($cumulative); - - if ((is_numeric($value)) && (is_numeric($lambda))) { - if (($value < 0) || ($lambda < 0)) { - return PHPExcel_Calculation_Functions::NaN(); - } - if ((is_numeric($cumulative)) || (is_bool($cumulative))) { - if ($cumulative) { - return 1 - exp(0-$value*$lambda); - } else { - return $lambda * exp(0-$value*$lambda); - } - } - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * FISHER - * - * Returns the Fisher transformation at x. This transformation produces a function that - * is normally distributed rather than skewed. Use this function to perform hypothesis - * testing on the correlation coefficient. - * - * @param float $value - * @return float - */ - public static function FISHER($value) - { - $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); - - if (is_numeric($value)) { - if (($value <= -1) || ($value >= 1)) { - return PHPExcel_Calculation_Functions::NaN(); - } - return 0.5 * log((1+$value)/(1-$value)); - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * FISHERINV - * - * Returns the inverse of the Fisher transformation. Use this transformation when - * analyzing correlations between ranges or arrays of data. If y = FISHER(x), then - * FISHERINV(y) = x. - * - * @param float $value - * @return float - */ - public static function FISHERINV($value) - { - $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); - - if (is_numeric($value)) { - return (exp(2 * $value) - 1) / (exp(2 * $value) + 1); - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * FORECAST - * - * Calculates, or predicts, a future value by using existing values. The predicted value is a y-value for a given x-value. - * - * @param float Value of X for which we want to find Y - * @param array of mixed Data Series Y - * @param array of mixed Data Series X - * @return float - */ - public static function FORECAST($xValue, $yValues, $xValues) - { - $xValue = PHPExcel_Calculation_Functions::flattenSingleValue($xValue); - if (!is_numeric($xValue)) { - return PHPExcel_Calculation_Functions::VALUE(); - } elseif (!self::checkTrendArrays($yValues, $xValues)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $yValueCount = count($yValues); - $xValueCount = count($xValues); - - if (($yValueCount == 0) || ($yValueCount != $xValueCount)) { - return PHPExcel_Calculation_Functions::NA(); - } elseif ($yValueCount == 1) { - return PHPExcel_Calculation_Functions::DIV0(); - } - - $bestFitLinear = trendClass::calculate(trendClass::TREND_LINEAR, $yValues, $xValues); - return $bestFitLinear->getValueOfYForX($xValue); - } - - - /** - * GAMMADIST - * - * Returns the gamma distribution. - * - * @param float $value Value at which you want to evaluate the distribution - * @param float $a Parameter to the distribution - * @param float $b Parameter to the distribution - * @param boolean $cumulative - * @return float - * - */ - public static function GAMMADIST($value, $a, $b, $cumulative) - { - $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); - $a = PHPExcel_Calculation_Functions::flattenSingleValue($a); - $b = PHPExcel_Calculation_Functions::flattenSingleValue($b); - - if ((is_numeric($value)) && (is_numeric($a)) && (is_numeric($b))) { - if (($value < 0) || ($a <= 0) || ($b <= 0)) { - return PHPExcel_Calculation_Functions::NaN(); - } - if ((is_numeric($cumulative)) || (is_bool($cumulative))) { - if ($cumulative) { - return self::incompleteGamma($a, $value / $b) / self::gamma($a); - } else { - return (1 / (pow($b, $a) * self::gamma($a))) * pow($value, $a-1) * exp(0-($value / $b)); - } - } - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * GAMMAINV - * - * Returns the inverse of the beta distribution. - * - * @param float $probability Probability at which you want to evaluate the distribution - * @param float $alpha Parameter to the distribution - * @param float $beta Parameter to the distribution - * @return float - * - */ - public static function GAMMAINV($probability, $alpha, $beta) - { - $probability = PHPExcel_Calculation_Functions::flattenSingleValue($probability); - $alpha = PHPExcel_Calculation_Functions::flattenSingleValue($alpha); - $beta = PHPExcel_Calculation_Functions::flattenSingleValue($beta); - - if ((is_numeric($probability)) && (is_numeric($alpha)) && (is_numeric($beta))) { - if (($alpha <= 0) || ($beta <= 0) || ($probability < 0) || ($probability > 1)) { - return PHPExcel_Calculation_Functions::NaN(); - } - - $xLo = 0; - $xHi = $alpha * $beta * 5; - - $x = $xNew = 1; - $error = $pdf = 0; - $dx = 1024; - $i = 0; - - while ((abs($dx) > PRECISION) && ($i++ < MAX_ITERATIONS)) { - // Apply Newton-Raphson step - $error = self::GAMMADIST($x, $alpha, $beta, true) - $probability; - if ($error < 0.0) { - $xLo = $x; - } else { - $xHi = $x; - } - $pdf = self::GAMMADIST($x, $alpha, $beta, false); - // Avoid division by zero - if ($pdf != 0.0) { - $dx = $error / $pdf; - $xNew = $x - $dx; - } - // If the NR fails to converge (which for example may be the - // case if the initial guess is too rough) we apply a bisection - // step to determine a more narrow interval around the root. - if (($xNew < $xLo) || ($xNew > $xHi) || ($pdf == 0.0)) { - $xNew = ($xLo + $xHi) / 2; - $dx = $xNew - $x; - } - $x = $xNew; - } - if ($i == MAX_ITERATIONS) { - return PHPExcel_Calculation_Functions::NA(); - } - return $x; - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * GAMMALN - * - * Returns the natural logarithm of the gamma function. - * - * @param float $value - * @return float - */ - public static function GAMMALN($value) - { - $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); - - if (is_numeric($value)) { - if ($value <= 0) { - return PHPExcel_Calculation_Functions::NaN(); - } - return log(self::gamma($value)); - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * GEOMEAN - * - * Returns the geometric mean of an array or range of positive data. For example, you - * can use GEOMEAN to calculate average growth rate given compound interest with - * variable rates. - * - * Excel Function: - * GEOMEAN(value1[,value2[, ...]]) - * - * @access public - * @category Statistical Functions - * @param mixed $arg,... Data values - * @return float - */ - public static function GEOMEAN() - { - $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); - - $aMean = PHPExcel_Calculation_MathTrig::PRODUCT($aArgs); - if (is_numeric($aMean) && ($aMean > 0)) { - $aCount = self::COUNT($aArgs) ; - if (self::MIN($aArgs) > 0) { - return pow($aMean, (1 / $aCount)); - } - } - return PHPExcel_Calculation_Functions::NaN(); - } - - - /** - * GROWTH - * - * Returns values along a predicted emponential trend - * - * @param array of mixed Data Series Y - * @param array of mixed Data Series X - * @param array of mixed Values of X for which we want to find Y - * @param boolean A logical value specifying whether to force the intersect to equal 0. - * @return array of float - */ - public static function GROWTH($yValues, $xValues = array(), $newValues = array(), $const = true) - { - $yValues = PHPExcel_Calculation_Functions::flattenArray($yValues); - $xValues = PHPExcel_Calculation_Functions::flattenArray($xValues); - $newValues = PHPExcel_Calculation_Functions::flattenArray($newValues); - $const = (is_null($const)) ? true : (boolean) PHPExcel_Calculation_Functions::flattenSingleValue($const); - - $bestFitExponential = trendClass::calculate(trendClass::TREND_EXPONENTIAL, $yValues, $xValues, $const); - if (empty($newValues)) { - $newValues = $bestFitExponential->getXValues(); - } - - $returnArray = array(); - foreach ($newValues as $xValue) { - $returnArray[0][] = $bestFitExponential->getValueOfYForX($xValue); - } - - return $returnArray; - } - - - /** - * HARMEAN - * - * Returns the harmonic mean of a data set. The harmonic mean is the reciprocal of the - * arithmetic mean of reciprocals. - * - * Excel Function: - * HARMEAN(value1[,value2[, ...]]) - * - * @access public - * @category Statistical Functions - * @param mixed $arg,... Data values - * @return float - */ - public static function HARMEAN() - { - // Return value - $returnValue = PHPExcel_Calculation_Functions::NA(); - - // Loop through arguments - $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); - if (self::MIN($aArgs) < 0) { - return PHPExcel_Calculation_Functions::NaN(); - } - $aCount = 0; - foreach ($aArgs as $arg) { - // Is it a numeric value? - if ((is_numeric($arg)) && (!is_string($arg))) { - if ($arg <= 0) { - return PHPExcel_Calculation_Functions::NaN(); - } - if (is_null($returnValue)) { - $returnValue = (1 / $arg); - } else { - $returnValue += (1 / $arg); - } - ++$aCount; - } - } - - // Return - if ($aCount > 0) { - return 1 / ($returnValue / $aCount); - } else { - return $returnValue; - } - } - - - /** - * HYPGEOMDIST - * - * Returns the hypergeometric distribution. HYPGEOMDIST returns the probability of a given number of - * sample successes, given the sample size, population successes, and population size. - * - * @param float $sampleSuccesses Number of successes in the sample - * @param float $sampleNumber Size of the sample - * @param float $populationSuccesses Number of successes in the population - * @param float $populationNumber Population size - * @return float - * - */ - public static function HYPGEOMDIST($sampleSuccesses, $sampleNumber, $populationSuccesses, $populationNumber) - { - $sampleSuccesses = floor(PHPExcel_Calculation_Functions::flattenSingleValue($sampleSuccesses)); - $sampleNumber = floor(PHPExcel_Calculation_Functions::flattenSingleValue($sampleNumber)); - $populationSuccesses = floor(PHPExcel_Calculation_Functions::flattenSingleValue($populationSuccesses)); - $populationNumber = floor(PHPExcel_Calculation_Functions::flattenSingleValue($populationNumber)); - - if ((is_numeric($sampleSuccesses)) && (is_numeric($sampleNumber)) && (is_numeric($populationSuccesses)) && (is_numeric($populationNumber))) { - if (($sampleSuccesses < 0) || ($sampleSuccesses > $sampleNumber) || ($sampleSuccesses > $populationSuccesses)) { - return PHPExcel_Calculation_Functions::NaN(); - } - if (($sampleNumber <= 0) || ($sampleNumber > $populationNumber)) { - return PHPExcel_Calculation_Functions::NaN(); - } - if (($populationSuccesses <= 0) || ($populationSuccesses > $populationNumber)) { - return PHPExcel_Calculation_Functions::NaN(); - } - return PHPExcel_Calculation_MathTrig::COMBIN($populationSuccesses, $sampleSuccesses) * - PHPExcel_Calculation_MathTrig::COMBIN($populationNumber - $populationSuccesses, $sampleNumber - $sampleSuccesses) / - PHPExcel_Calculation_MathTrig::COMBIN($populationNumber, $sampleNumber); - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * INTERCEPT - * - * Calculates the point at which a line will intersect the y-axis by using existing x-values and y-values. - * - * @param array of mixed Data Series Y - * @param array of mixed Data Series X - * @return float - */ - public static function INTERCEPT($yValues, $xValues) - { - if (!self::checkTrendArrays($yValues, $xValues)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $yValueCount = count($yValues); - $xValueCount = count($xValues); - - if (($yValueCount == 0) || ($yValueCount != $xValueCount)) { - return PHPExcel_Calculation_Functions::NA(); - } elseif ($yValueCount == 1) { - return PHPExcel_Calculation_Functions::DIV0(); - } - - $bestFitLinear = trendClass::calculate(trendClass::TREND_LINEAR, $yValues, $xValues); - return $bestFitLinear->getIntersect(); - } - - - /** - * KURT - * - * Returns the kurtosis of a data set. Kurtosis characterizes the relative peakedness - * or flatness of a distribution compared with the normal distribution. Positive - * kurtosis indicates a relatively peaked distribution. Negative kurtosis indicates a - * relatively flat distribution. - * - * @param array Data Series - * @return float - */ - public static function KURT() - { - $aArgs = PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args()); - $mean = self::AVERAGE($aArgs); - $stdDev = self::STDEV($aArgs); - - if ($stdDev > 0) { - $count = $summer = 0; - // Loop through arguments - foreach ($aArgs as $k => $arg) { - if ((is_bool($arg)) && - (!PHPExcel_Calculation_Functions::isMatrixValue($k))) { - } else { - // Is it a numeric value? - if ((is_numeric($arg)) && (!is_string($arg))) { - $summer += pow((($arg - $mean) / $stdDev), 4); - ++$count; - } - } - } - - // Return - if ($count > 3) { - return $summer * ($count * ($count+1) / (($count-1) * ($count-2) * ($count-3))) - (3 * pow($count-1, 2) / (($count-2) * ($count-3))); - } - } - return PHPExcel_Calculation_Functions::DIV0(); - } - - - /** - * LARGE - * - * Returns the nth largest value in a data set. You can use this function to - * select a value based on its relative standing. - * - * Excel Function: - * LARGE(value1[,value2[, ...]],entry) - * - * @access public - * @category Statistical Functions - * @param mixed $arg,... Data values - * @param int $entry Position (ordered from the largest) in the array or range of data to return - * @return float - * - */ - public static function LARGE() - { - $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); - - // Calculate - $entry = floor(array_pop($aArgs)); - - if ((is_numeric($entry)) && (!is_string($entry))) { - $mArgs = array(); - foreach ($aArgs as $arg) { - // Is it a numeric value? - if ((is_numeric($arg)) && (!is_string($arg))) { - $mArgs[] = $arg; - } - } - $count = self::COUNT($mArgs); - $entry = floor(--$entry); - if (($entry < 0) || ($entry >= $count) || ($count == 0)) { - return PHPExcel_Calculation_Functions::NaN(); - } - rsort($mArgs); - return $mArgs[$entry]; - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * LINEST - * - * Calculates the statistics for a line by using the "least squares" method to calculate a straight line that best fits your data, - * and then returns an array that describes the line. - * - * @param array of mixed Data Series Y - * @param array of mixed Data Series X - * @param boolean A logical value specifying whether to force the intersect to equal 0. - * @param boolean A logical value specifying whether to return additional regression statistics. - * @return array - */ - public static function LINEST($yValues, $xValues = null, $const = true, $stats = false) - { - $const = (is_null($const)) ? true : (boolean) PHPExcel_Calculation_Functions::flattenSingleValue($const); - $stats = (is_null($stats)) ? false : (boolean) PHPExcel_Calculation_Functions::flattenSingleValue($stats); - if (is_null($xValues)) { - $xValues = range(1, count(PHPExcel_Calculation_Functions::flattenArray($yValues))); - } - - if (!self::checkTrendArrays($yValues, $xValues)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $yValueCount = count($yValues); - $xValueCount = count($xValues); - - - if (($yValueCount == 0) || ($yValueCount != $xValueCount)) { - return PHPExcel_Calculation_Functions::NA(); - } elseif ($yValueCount == 1) { - return 0; - } - - $bestFitLinear = trendClass::calculate(trendClass::TREND_LINEAR, $yValues, $xValues, $const); - if ($stats) { - return array( - array( - $bestFitLinear->getSlope(), - $bestFitLinear->getSlopeSE(), - $bestFitLinear->getGoodnessOfFit(), - $bestFitLinear->getF(), - $bestFitLinear->getSSRegression(), - ), - array( - $bestFitLinear->getIntersect(), - $bestFitLinear->getIntersectSE(), - $bestFitLinear->getStdevOfResiduals(), - $bestFitLinear->getDFResiduals(), - $bestFitLinear->getSSResiduals() - ) - ); - } else { - return array( - $bestFitLinear->getSlope(), - $bestFitLinear->getIntersect() - ); - } - } - - - /** - * LOGEST - * - * Calculates an exponential curve that best fits the X and Y data series, - * and then returns an array that describes the line. - * - * @param array of mixed Data Series Y - * @param array of mixed Data Series X - * @param boolean A logical value specifying whether to force the intersect to equal 0. - * @param boolean A logical value specifying whether to return additional regression statistics. - * @return array - */ - public static function LOGEST($yValues, $xValues = null, $const = true, $stats = false) - { - $const = (is_null($const)) ? true : (boolean) PHPExcel_Calculation_Functions::flattenSingleValue($const); - $stats = (is_null($stats)) ? false : (boolean) PHPExcel_Calculation_Functions::flattenSingleValue($stats); - if (is_null($xValues)) { - $xValues = range(1, count(PHPExcel_Calculation_Functions::flattenArray($yValues))); - } - - if (!self::checkTrendArrays($yValues, $xValues)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $yValueCount = count($yValues); - $xValueCount = count($xValues); - - foreach ($yValues as $value) { - if ($value <= 0.0) { - return PHPExcel_Calculation_Functions::NaN(); - } - } - - - if (($yValueCount == 0) || ($yValueCount != $xValueCount)) { - return PHPExcel_Calculation_Functions::NA(); - } elseif ($yValueCount == 1) { - return 1; - } - - $bestFitExponential = trendClass::calculate(trendClass::TREND_EXPONENTIAL, $yValues, $xValues, $const); - if ($stats) { - return array( - array( - $bestFitExponential->getSlope(), - $bestFitExponential->getSlopeSE(), - $bestFitExponential->getGoodnessOfFit(), - $bestFitExponential->getF(), - $bestFitExponential->getSSRegression(), - ), - array( - $bestFitExponential->getIntersect(), - $bestFitExponential->getIntersectSE(), - $bestFitExponential->getStdevOfResiduals(), - $bestFitExponential->getDFResiduals(), - $bestFitExponential->getSSResiduals() - ) - ); - } else { - return array( - $bestFitExponential->getSlope(), - $bestFitExponential->getIntersect() - ); - } - } - - - /** - * LOGINV - * - * Returns the inverse of the normal cumulative distribution - * - * @param float $probability - * @param float $mean - * @param float $stdDev - * @return float - * - * @todo Try implementing P J Acklam's refinement algorithm for greater - * accuracy if I can get my head round the mathematics - * (as described at) http://home.online.no/~pjacklam/notes/invnorm/ - */ - public static function LOGINV($probability, $mean, $stdDev) - { - $probability = PHPExcel_Calculation_Functions::flattenSingleValue($probability); - $mean = PHPExcel_Calculation_Functions::flattenSingleValue($mean); - $stdDev = PHPExcel_Calculation_Functions::flattenSingleValue($stdDev); - - if ((is_numeric($probability)) && (is_numeric($mean)) && (is_numeric($stdDev))) { - if (($probability < 0) || ($probability > 1) || ($stdDev <= 0)) { - return PHPExcel_Calculation_Functions::NaN(); - } - return exp($mean + $stdDev * self::NORMSINV($probability)); - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * LOGNORMDIST - * - * Returns the cumulative lognormal distribution of x, where ln(x) is normally distributed - * with parameters mean and standard_dev. - * - * @param float $value - * @param float $mean - * @param float $stdDev - * @return float - */ - public static function LOGNORMDIST($value, $mean, $stdDev) - { - $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); - $mean = PHPExcel_Calculation_Functions::flattenSingleValue($mean); - $stdDev = PHPExcel_Calculation_Functions::flattenSingleValue($stdDev); - - if ((is_numeric($value)) && (is_numeric($mean)) && (is_numeric($stdDev))) { - if (($value <= 0) || ($stdDev <= 0)) { - return PHPExcel_Calculation_Functions::NaN(); - } - return self::NORMSDIST((log($value) - $mean) / $stdDev); - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * MAX - * - * MAX returns the value of the element of the values passed that has the highest value, - * with negative numbers considered smaller than positive numbers. - * - * Excel Function: - * MAX(value1[,value2[, ...]]) - * - * @access public - * @category Statistical Functions - * @param mixed $arg,... Data values - * @return float - */ - public static function MAX() - { - $returnValue = null; - - // Loop through arguments - $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); - foreach ($aArgs as $arg) { - // Is it a numeric value? - if ((is_numeric($arg)) && (!is_string($arg))) { - if ((is_null($returnValue)) || ($arg > $returnValue)) { - $returnValue = $arg; - } - } - } - - if (is_null($returnValue)) { - return 0; - } - return $returnValue; - } - - - /** - * MAXA - * - * Returns the greatest value in a list of arguments, including numbers, text, and logical values - * - * Excel Function: - * MAXA(value1[,value2[, ...]]) - * - * @access public - * @category Statistical Functions - * @param mixed $arg,... Data values - * @return float - */ - public static function MAXA() - { - $returnValue = null; - - // Loop through arguments - $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); - foreach ($aArgs as $arg) { - // Is it a numeric value? - if ((is_numeric($arg)) || (is_bool($arg)) || ((is_string($arg) && ($arg != '')))) { - if (is_bool($arg)) { - $arg = (integer) $arg; - } elseif (is_string($arg)) { - $arg = 0; - } - if ((is_null($returnValue)) || ($arg > $returnValue)) { - $returnValue = $arg; - } - } - } - - if (is_null($returnValue)) { - return 0; - } - return $returnValue; - } - - - /** - * MAXIF - * - * Counts the maximum value within a range of cells that contain numbers within the list of arguments - * - * Excel Function: - * MAXIF(value1[,value2[, ...]],condition) - * - * @access public - * @category Mathematical and Trigonometric Functions - * @param mixed $arg,... Data values - * @param string $condition The criteria that defines which cells will be checked. - * @return float - */ - public static function MAXIF($aArgs, $condition, $sumArgs = array()) - { - $returnValue = null; - - $aArgs = PHPExcel_Calculation_Functions::flattenArray($aArgs); - $sumArgs = PHPExcel_Calculation_Functions::flattenArray($sumArgs); - if (empty($sumArgs)) { - $sumArgs = $aArgs; - } - $condition = PHPExcel_Calculation_Functions::ifCondition($condition); - // Loop through arguments - foreach ($aArgs as $key => $arg) { - if (!is_numeric($arg)) { - $arg = PHPExcel_Calculation::wrapResult(strtoupper($arg)); - } - $testCondition = '='.$arg.$condition; - if (PHPExcel_Calculation::getInstance()->_calculateFormulaValue($testCondition)) { - if ((is_null($returnValue)) || ($arg > $returnValue)) { - $returnValue = $arg; - } - } - } - - return $returnValue; - } - - /** - * MEDIAN - * - * Returns the median of the given numbers. The median is the number in the middle of a set of numbers. - * - * Excel Function: - * MEDIAN(value1[,value2[, ...]]) - * - * @access public - * @category Statistical Functions - * @param mixed $arg,... Data values - * @return float - */ - public static function MEDIAN() - { - $returnValue = PHPExcel_Calculation_Functions::NaN(); - - $mArgs = array(); - // Loop through arguments - $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); - foreach ($aArgs as $arg) { - // Is it a numeric value? - if ((is_numeric($arg)) && (!is_string($arg))) { - $mArgs[] = $arg; - } - } - - $mValueCount = count($mArgs); - if ($mValueCount > 0) { - sort($mArgs, SORT_NUMERIC); - $mValueCount = $mValueCount / 2; - if ($mValueCount == floor($mValueCount)) { - $returnValue = ($mArgs[$mValueCount--] + $mArgs[$mValueCount]) / 2; - } else { - $mValueCount = floor($mValueCount); - $returnValue = $mArgs[$mValueCount]; - } - } - - return $returnValue; - } - - - /** - * MIN - * - * MIN returns the value of the element of the values passed that has the smallest value, - * with negative numbers considered smaller than positive numbers. - * - * Excel Function: - * MIN(value1[,value2[, ...]]) - * - * @access public - * @category Statistical Functions - * @param mixed $arg,... Data values - * @return float - */ - public static function MIN() - { - $returnValue = null; - - // Loop through arguments - $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); - foreach ($aArgs as $arg) { - // Is it a numeric value? - if ((is_numeric($arg)) && (!is_string($arg))) { - if ((is_null($returnValue)) || ($arg < $returnValue)) { - $returnValue = $arg; - } - } - } - - if (is_null($returnValue)) { - return 0; - } - return $returnValue; - } - - - /** - * MINA - * - * Returns the smallest value in a list of arguments, including numbers, text, and logical values - * - * Excel Function: - * MINA(value1[,value2[, ...]]) - * - * @access public - * @category Statistical Functions - * @param mixed $arg,... Data values - * @return float - */ - public static function MINA() - { - $returnValue = null; - - // Loop through arguments - $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); - foreach ($aArgs as $arg) { - // Is it a numeric value? - if ((is_numeric($arg)) || (is_bool($arg)) || ((is_string($arg) && ($arg != '')))) { - if (is_bool($arg)) { - $arg = (integer) $arg; - } elseif (is_string($arg)) { - $arg = 0; - } - if ((is_null($returnValue)) || ($arg < $returnValue)) { - $returnValue = $arg; - } - } - } - - if (is_null($returnValue)) { - return 0; - } - return $returnValue; - } - - - /** - * MINIF - * - * Returns the minimum value within a range of cells that contain numbers within the list of arguments - * - * Excel Function: - * MINIF(value1[,value2[, ...]],condition) - * - * @access public - * @category Mathematical and Trigonometric Functions - * @param mixed $arg,... Data values - * @param string $condition The criteria that defines which cells will be checked. - * @return float - */ - public static function MINIF($aArgs, $condition, $sumArgs = array()) - { - $returnValue = null; - - $aArgs = PHPExcel_Calculation_Functions::flattenArray($aArgs); - $sumArgs = PHPExcel_Calculation_Functions::flattenArray($sumArgs); - if (empty($sumArgs)) { - $sumArgs = $aArgs; - } - $condition = PHPExcel_Calculation_Functions::ifCondition($condition); - // Loop through arguments - foreach ($aArgs as $key => $arg) { - if (!is_numeric($arg)) { - $arg = PHPExcel_Calculation::wrapResult(strtoupper($arg)); - } - $testCondition = '='.$arg.$condition; - if (PHPExcel_Calculation::getInstance()->_calculateFormulaValue($testCondition)) { - if ((is_null($returnValue)) || ($arg < $returnValue)) { - $returnValue = $arg; - } - } - } - - return $returnValue; - } - - - // - // Special variant of array_count_values that isn't limited to strings and integers, - // but can work with floating point numbers as values - // - private static function modeCalc($data) - { - $frequencyArray = array(); - foreach ($data as $datum) { - $found = false; - foreach ($frequencyArray as $key => $value) { - if ((string) $value['value'] == (string) $datum) { - ++$frequencyArray[$key]['frequency']; - $found = true; - break; - } - } - if (!$found) { - $frequencyArray[] = array( - 'value' => $datum, - 'frequency' => 1 - ); - } - } - - foreach ($frequencyArray as $key => $value) { - $frequencyList[$key] = $value['frequency']; - $valueList[$key] = $value['value']; - } - array_multisort($frequencyList, SORT_DESC, $valueList, SORT_ASC, SORT_NUMERIC, $frequencyArray); - - if ($frequencyArray[0]['frequency'] == 1) { - return PHPExcel_Calculation_Functions::NA(); - } - return $frequencyArray[0]['value']; - } - - - /** - * MODE - * - * Returns the most frequently occurring, or repetitive, value in an array or range of data - * - * Excel Function: - * MODE(value1[,value2[, ...]]) - * - * @access public - * @category Statistical Functions - * @param mixed $arg,... Data values - * @return float - */ - public static function MODE() - { - $returnValue = PHPExcel_Calculation_Functions::NA(); - - // Loop through arguments - $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); - - $mArgs = array(); - foreach ($aArgs as $arg) { - // Is it a numeric value? - if ((is_numeric($arg)) && (!is_string($arg))) { - $mArgs[] = $arg; - } - } - - if (!empty($mArgs)) { - return self::modeCalc($mArgs); - } - - return $returnValue; - } - - - /** - * NEGBINOMDIST - * - * Returns the negative binomial distribution. NEGBINOMDIST returns the probability that - * there will be number_f failures before the number_s-th success, when the constant - * probability of a success is probability_s. This function is similar to the binomial - * distribution, except that the number of successes is fixed, and the number of trials is - * variable. Like the binomial, trials are assumed to be independent. - * - * @param float $failures Number of Failures - * @param float $successes Threshold number of Successes - * @param float $probability Probability of success on each trial - * @return float - * - */ - public static function NEGBINOMDIST($failures, $successes, $probability) - { - $failures = floor(PHPExcel_Calculation_Functions::flattenSingleValue($failures)); - $successes = floor(PHPExcel_Calculation_Functions::flattenSingleValue($successes)); - $probability = PHPExcel_Calculation_Functions::flattenSingleValue($probability); - - if ((is_numeric($failures)) && (is_numeric($successes)) && (is_numeric($probability))) { - if (($failures < 0) || ($successes < 1)) { - return PHPExcel_Calculation_Functions::NaN(); - } elseif (($probability < 0) || ($probability > 1)) { - return PHPExcel_Calculation_Functions::NaN(); - } - if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC) { - if (($failures + $successes - 1) <= 0) { - return PHPExcel_Calculation_Functions::NaN(); - } - } - return (PHPExcel_Calculation_MathTrig::COMBIN($failures + $successes - 1, $successes - 1)) * (pow($probability, $successes)) * (pow(1 - $probability, $failures)); - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * NORMDIST - * - * Returns the normal distribution for the specified mean and standard deviation. This - * function has a very wide range of applications in statistics, including hypothesis - * testing. - * - * @param float $value - * @param float $mean Mean Value - * @param float $stdDev Standard Deviation - * @param boolean $cumulative - * @return float - * - */ - public static function NORMDIST($value, $mean, $stdDev, $cumulative) - { - $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); - $mean = PHPExcel_Calculation_Functions::flattenSingleValue($mean); - $stdDev = PHPExcel_Calculation_Functions::flattenSingleValue($stdDev); - - if ((is_numeric($value)) && (is_numeric($mean)) && (is_numeric($stdDev))) { - if ($stdDev < 0) { - return PHPExcel_Calculation_Functions::NaN(); - } - if ((is_numeric($cumulative)) || (is_bool($cumulative))) { - if ($cumulative) { - return 0.5 * (1 + PHPExcel_Calculation_Engineering::erfVal(($value - $mean) / ($stdDev * sqrt(2)))); - } else { - return (1 / (SQRT2PI * $stdDev)) * exp(0 - (pow($value - $mean, 2) / (2 * ($stdDev * $stdDev)))); - } - } - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * NORMINV - * - * Returns the inverse of the normal cumulative distribution for the specified mean and standard deviation. - * - * @param float $value - * @param float $mean Mean Value - * @param float $stdDev Standard Deviation - * @return float - * - */ - public static function NORMINV($probability, $mean, $stdDev) - { - $probability = PHPExcel_Calculation_Functions::flattenSingleValue($probability); - $mean = PHPExcel_Calculation_Functions::flattenSingleValue($mean); - $stdDev = PHPExcel_Calculation_Functions::flattenSingleValue($stdDev); - - if ((is_numeric($probability)) && (is_numeric($mean)) && (is_numeric($stdDev))) { - if (($probability < 0) || ($probability > 1)) { - return PHPExcel_Calculation_Functions::NaN(); - } - if ($stdDev < 0) { - return PHPExcel_Calculation_Functions::NaN(); - } - return (self::inverseNcdf($probability) * $stdDev) + $mean; - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * NORMSDIST - * - * Returns the standard normal cumulative distribution function. The distribution has - * a mean of 0 (zero) and a standard deviation of one. Use this function in place of a - * table of standard normal curve areas. - * - * @param float $value - * @return float - */ - public static function NORMSDIST($value) - { - $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); - - return self::NORMDIST($value, 0, 1, true); - } - - - /** - * NORMSINV - * - * Returns the inverse of the standard normal cumulative distribution - * - * @param float $value - * @return float - */ - public static function NORMSINV($value) - { - return self::NORMINV($value, 0, 1); - } - - - /** - * PERCENTILE - * - * Returns the nth percentile of values in a range.. - * - * Excel Function: - * PERCENTILE(value1[,value2[, ...]],entry) - * - * @access public - * @category Statistical Functions - * @param mixed $arg,... Data values - * @param float $entry Percentile value in the range 0..1, inclusive. - * @return float - */ - public static function PERCENTILE() - { - $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); - - // Calculate - $entry = array_pop($aArgs); - - if ((is_numeric($entry)) && (!is_string($entry))) { - if (($entry < 0) || ($entry > 1)) { - return PHPExcel_Calculation_Functions::NaN(); - } - $mArgs = array(); - foreach ($aArgs as $arg) { - // Is it a numeric value? - if ((is_numeric($arg)) && (!is_string($arg))) { - $mArgs[] = $arg; - } - } - $mValueCount = count($mArgs); - if ($mValueCount > 0) { - sort($mArgs); - $count = self::COUNT($mArgs); - $index = $entry * ($count-1); - $iBase = floor($index); - if ($index == $iBase) { - return $mArgs[$index]; - } else { - $iNext = $iBase + 1; - $iProportion = $index - $iBase; - return $mArgs[$iBase] + (($mArgs[$iNext] - $mArgs[$iBase]) * $iProportion) ; - } - } - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * PERCENTRANK - * - * Returns the rank of a value in a data set as a percentage of the data set. - * - * @param array of number An array of, or a reference to, a list of numbers. - * @param number The number whose rank you want to find. - * @param number The number of significant digits for the returned percentage value. - * @return float - */ - public static function PERCENTRANK($valueSet, $value, $significance = 3) - { - $valueSet = PHPExcel_Calculation_Functions::flattenArray($valueSet); - $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); - $significance = (is_null($significance)) ? 3 : (integer) PHPExcel_Calculation_Functions::flattenSingleValue($significance); - - foreach ($valueSet as $key => $valueEntry) { - if (!is_numeric($valueEntry)) { - unset($valueSet[$key]); - } - } - sort($valueSet, SORT_NUMERIC); - $valueCount = count($valueSet); - if ($valueCount == 0) { - return PHPExcel_Calculation_Functions::NaN(); - } - - $valueAdjustor = $valueCount - 1; - if (($value < $valueSet[0]) || ($value > $valueSet[$valueAdjustor])) { - return PHPExcel_Calculation_Functions::NA(); - } - - $pos = array_search($value, $valueSet); - if ($pos === false) { - $pos = 0; - $testValue = $valueSet[0]; - while ($testValue < $value) { - $testValue = $valueSet[++$pos]; - } - --$pos; - $pos += (($value - $valueSet[$pos]) / ($testValue - $valueSet[$pos])); - } - - return round($pos / $valueAdjustor, $significance); - } - - - /** - * PERMUT - * - * Returns the number of permutations for a given number of objects that can be - * selected from number objects. A permutation is any set or subset of objects or - * events where internal order is significant. Permutations are different from - * combinations, for which the internal order is not significant. Use this function - * for lottery-style probability calculations. - * - * @param int $numObjs Number of different objects - * @param int $numInSet Number of objects in each permutation - * @return int Number of permutations - */ - public static function PERMUT($numObjs, $numInSet) - { - $numObjs = PHPExcel_Calculation_Functions::flattenSingleValue($numObjs); - $numInSet = PHPExcel_Calculation_Functions::flattenSingleValue($numInSet); - - if ((is_numeric($numObjs)) && (is_numeric($numInSet))) { - $numInSet = floor($numInSet); - if ($numObjs < $numInSet) { - return PHPExcel_Calculation_Functions::NaN(); - } - return round(PHPExcel_Calculation_MathTrig::FACT($numObjs) / PHPExcel_Calculation_MathTrig::FACT($numObjs - $numInSet)); - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * POISSON - * - * Returns the Poisson distribution. A common application of the Poisson distribution - * is predicting the number of events over a specific time, such as the number of - * cars arriving at a toll plaza in 1 minute. - * - * @param float $value - * @param float $mean Mean Value - * @param boolean $cumulative - * @return float - * - */ - public static function POISSON($value, $mean, $cumulative) - { - $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); - $mean = PHPExcel_Calculation_Functions::flattenSingleValue($mean); - - if ((is_numeric($value)) && (is_numeric($mean))) { - if (($value < 0) || ($mean <= 0)) { - return PHPExcel_Calculation_Functions::NaN(); - } - if ((is_numeric($cumulative)) || (is_bool($cumulative))) { - if ($cumulative) { - $summer = 0; - for ($i = 0; $i <= floor($value); ++$i) { - $summer += pow($mean, $i) / PHPExcel_Calculation_MathTrig::FACT($i); - } - return exp(0-$mean) * $summer; - } else { - return (exp(0-$mean) * pow($mean, $value)) / PHPExcel_Calculation_MathTrig::FACT($value); - } - } - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * QUARTILE - * - * Returns the quartile of a data set. - * - * Excel Function: - * QUARTILE(value1[,value2[, ...]],entry) - * - * @access public - * @category Statistical Functions - * @param mixed $arg,... Data values - * @param int $entry Quartile value in the range 1..3, inclusive. - * @return float - */ - public static function QUARTILE() - { - $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); - - // Calculate - $entry = floor(array_pop($aArgs)); - - if ((is_numeric($entry)) && (!is_string($entry))) { - $entry /= 4; - if (($entry < 0) || ($entry > 1)) { - return PHPExcel_Calculation_Functions::NaN(); - } - return self::PERCENTILE($aArgs, $entry); - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * RANK - * - * Returns the rank of a number in a list of numbers. - * - * @param number The number whose rank you want to find. - * @param array of number An array of, or a reference to, a list of numbers. - * @param mixed Order to sort the values in the value set - * @return float - */ - public static function RANK($value, $valueSet, $order = 0) - { - $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); - $valueSet = PHPExcel_Calculation_Functions::flattenArray($valueSet); - $order = (is_null($order)) ? 0 : (integer) PHPExcel_Calculation_Functions::flattenSingleValue($order); - - foreach ($valueSet as $key => $valueEntry) { - if (!is_numeric($valueEntry)) { - unset($valueSet[$key]); - } - } - - if ($order == 0) { - rsort($valueSet, SORT_NUMERIC); - } else { - sort($valueSet, SORT_NUMERIC); - } - $pos = array_search($value, $valueSet); - if ($pos === false) { - return PHPExcel_Calculation_Functions::NA(); - } - - return ++$pos; - } - - - /** - * RSQ - * - * Returns the square of the Pearson product moment correlation coefficient through data points in known_y's and known_x's. - * - * @param array of mixed Data Series Y - * @param array of mixed Data Series X - * @return float - */ - public static function RSQ($yValues, $xValues) - { - if (!self::checkTrendArrays($yValues, $xValues)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $yValueCount = count($yValues); - $xValueCount = count($xValues); - - if (($yValueCount == 0) || ($yValueCount != $xValueCount)) { - return PHPExcel_Calculation_Functions::NA(); - } elseif ($yValueCount == 1) { - return PHPExcel_Calculation_Functions::DIV0(); - } - - $bestFitLinear = trendClass::calculate(trendClass::TREND_LINEAR, $yValues, $xValues); - return $bestFitLinear->getGoodnessOfFit(); - } - - - /** - * SKEW - * - * Returns the skewness of a distribution. Skewness characterizes the degree of asymmetry - * of a distribution around its mean. Positive skewness indicates a distribution with an - * asymmetric tail extending toward more positive values. Negative skewness indicates a - * distribution with an asymmetric tail extending toward more negative values. - * - * @param array Data Series - * @return float - */ - public static function SKEW() - { - $aArgs = PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args()); - $mean = self::AVERAGE($aArgs); - $stdDev = self::STDEV($aArgs); - - $count = $summer = 0; - // Loop through arguments - foreach ($aArgs as $k => $arg) { - if ((is_bool($arg)) && - (!PHPExcel_Calculation_Functions::isMatrixValue($k))) { - } else { - // Is it a numeric value? - if ((is_numeric($arg)) && (!is_string($arg))) { - $summer += pow((($arg - $mean) / $stdDev), 3); - ++$count; - } - } - } - - if ($count > 2) { - return $summer * ($count / (($count-1) * ($count-2))); - } - return PHPExcel_Calculation_Functions::DIV0(); - } - - - /** - * SLOPE - * - * Returns the slope of the linear regression line through data points in known_y's and known_x's. - * - * @param array of mixed Data Series Y - * @param array of mixed Data Series X - * @return float - */ - public static function SLOPE($yValues, $xValues) - { - if (!self::checkTrendArrays($yValues, $xValues)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $yValueCount = count($yValues); - $xValueCount = count($xValues); - - if (($yValueCount == 0) || ($yValueCount != $xValueCount)) { - return PHPExcel_Calculation_Functions::NA(); - } elseif ($yValueCount == 1) { - return PHPExcel_Calculation_Functions::DIV0(); - } - - $bestFitLinear = trendClass::calculate(trendClass::TREND_LINEAR, $yValues, $xValues); - return $bestFitLinear->getSlope(); - } - - - /** - * SMALL - * - * Returns the nth smallest value in a data set. You can use this function to - * select a value based on its relative standing. - * - * Excel Function: - * SMALL(value1[,value2[, ...]],entry) - * - * @access public - * @category Statistical Functions - * @param mixed $arg,... Data values - * @param int $entry Position (ordered from the smallest) in the array or range of data to return - * @return float - */ - public static function SMALL() - { - $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); - - // Calculate - $entry = array_pop($aArgs); - - if ((is_numeric($entry)) && (!is_string($entry))) { - $mArgs = array(); - foreach ($aArgs as $arg) { - // Is it a numeric value? - if ((is_numeric($arg)) && (!is_string($arg))) { - $mArgs[] = $arg; - } - } - $count = self::COUNT($mArgs); - $entry = floor(--$entry); - if (($entry < 0) || ($entry >= $count) || ($count == 0)) { - return PHPExcel_Calculation_Functions::NaN(); - } - sort($mArgs); - return $mArgs[$entry]; - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * STANDARDIZE - * - * Returns a normalized value from a distribution characterized by mean and standard_dev. - * - * @param float $value Value to normalize - * @param float $mean Mean Value - * @param float $stdDev Standard Deviation - * @return float Standardized value - */ - public static function STANDARDIZE($value, $mean, $stdDev) - { - $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); - $mean = PHPExcel_Calculation_Functions::flattenSingleValue($mean); - $stdDev = PHPExcel_Calculation_Functions::flattenSingleValue($stdDev); - - if ((is_numeric($value)) && (is_numeric($mean)) && (is_numeric($stdDev))) { - if ($stdDev <= 0) { - return PHPExcel_Calculation_Functions::NaN(); - } - return ($value - $mean) / $stdDev ; - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * STDEV - * - * Estimates standard deviation based on a sample. The standard deviation is a measure of how - * widely values are dispersed from the average value (the mean). - * - * Excel Function: - * STDEV(value1[,value2[, ...]]) - * - * @access public - * @category Statistical Functions - * @param mixed $arg,... Data values - * @return float - */ - public static function STDEV() - { - $aArgs = PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args()); - - // Return value - $returnValue = null; - - $aMean = self::AVERAGE($aArgs); - if (!is_null($aMean)) { - $aCount = -1; - foreach ($aArgs as $k => $arg) { - if ((is_bool($arg)) && - ((!PHPExcel_Calculation_Functions::isCellValue($k)) || (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE))) { - $arg = (integer) $arg; - } - // Is it a numeric value? - if ((is_numeric($arg)) && (!is_string($arg))) { - if (is_null($returnValue)) { - $returnValue = pow(($arg - $aMean), 2); - } else { - $returnValue += pow(($arg - $aMean), 2); - } - ++$aCount; - } - } - - // Return - if (($aCount > 0) && ($returnValue >= 0)) { - return sqrt($returnValue / $aCount); - } - } - return PHPExcel_Calculation_Functions::DIV0(); - } - - - /** - * STDEVA - * - * Estimates standard deviation based on a sample, including numbers, text, and logical values - * - * Excel Function: - * STDEVA(value1[,value2[, ...]]) - * - * @access public - * @category Statistical Functions - * @param mixed $arg,... Data values - * @return float - */ - public static function STDEVA() - { - $aArgs = PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args()); - - $returnValue = null; - - $aMean = self::AVERAGEA($aArgs); - if (!is_null($aMean)) { - $aCount = -1; - foreach ($aArgs as $k => $arg) { - if ((is_bool($arg)) && - (!PHPExcel_Calculation_Functions::isMatrixValue($k))) { - } else { - // Is it a numeric value? - if ((is_numeric($arg)) || (is_bool($arg)) || ((is_string($arg) & ($arg != '')))) { - if (is_bool($arg)) { - $arg = (integer) $arg; - } elseif (is_string($arg)) { - $arg = 0; - } - if (is_null($returnValue)) { - $returnValue = pow(($arg - $aMean), 2); - } else { - $returnValue += pow(($arg - $aMean), 2); - } - ++$aCount; - } - } - } - - if (($aCount > 0) && ($returnValue >= 0)) { - return sqrt($returnValue / $aCount); - } - } - return PHPExcel_Calculation_Functions::DIV0(); - } - - - /** - * STDEVP - * - * Calculates standard deviation based on the entire population - * - * Excel Function: - * STDEVP(value1[,value2[, ...]]) - * - * @access public - * @category Statistical Functions - * @param mixed $arg,... Data values - * @return float - */ - public static function STDEVP() - { - $aArgs = PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args()); - - $returnValue = null; - - $aMean = self::AVERAGE($aArgs); - if (!is_null($aMean)) { - $aCount = 0; - foreach ($aArgs as $k => $arg) { - if ((is_bool($arg)) && - ((!PHPExcel_Calculation_Functions::isCellValue($k)) || (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE))) { - $arg = (integer) $arg; - } - // Is it a numeric value? - if ((is_numeric($arg)) && (!is_string($arg))) { - if (is_null($returnValue)) { - $returnValue = pow(($arg - $aMean), 2); - } else { - $returnValue += pow(($arg - $aMean), 2); - } - ++$aCount; - } - } - - if (($aCount > 0) && ($returnValue >= 0)) { - return sqrt($returnValue / $aCount); - } - } - return PHPExcel_Calculation_Functions::DIV0(); - } - - - /** - * STDEVPA - * - * Calculates standard deviation based on the entire population, including numbers, text, and logical values - * - * Excel Function: - * STDEVPA(value1[,value2[, ...]]) - * - * @access public - * @category Statistical Functions - * @param mixed $arg,... Data values - * @return float - */ - public static function STDEVPA() - { - $aArgs = PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args()); - - $returnValue = null; - - $aMean = self::AVERAGEA($aArgs); - if (!is_null($aMean)) { - $aCount = 0; - foreach ($aArgs as $k => $arg) { - if ((is_bool($arg)) && - (!PHPExcel_Calculation_Functions::isMatrixValue($k))) { - } else { - // Is it a numeric value? - if ((is_numeric($arg)) || (is_bool($arg)) || ((is_string($arg) & ($arg != '')))) { - if (is_bool($arg)) { - $arg = (integer) $arg; - } elseif (is_string($arg)) { - $arg = 0; - } - if (is_null($returnValue)) { - $returnValue = pow(($arg - $aMean), 2); - } else { - $returnValue += pow(($arg - $aMean), 2); - } - ++$aCount; - } - } - } - - if (($aCount > 0) && ($returnValue >= 0)) { - return sqrt($returnValue / $aCount); - } - } - return PHPExcel_Calculation_Functions::DIV0(); - } - - - /** - * STEYX - * - * Returns the standard error of the predicted y-value for each x in the regression. - * - * @param array of mixed Data Series Y - * @param array of mixed Data Series X - * @return float - */ - public static function STEYX($yValues, $xValues) - { - if (!self::checkTrendArrays($yValues, $xValues)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $yValueCount = count($yValues); - $xValueCount = count($xValues); - - if (($yValueCount == 0) || ($yValueCount != $xValueCount)) { - return PHPExcel_Calculation_Functions::NA(); - } elseif ($yValueCount == 1) { - return PHPExcel_Calculation_Functions::DIV0(); - } - - $bestFitLinear = trendClass::calculate(trendClass::TREND_LINEAR, $yValues, $xValues); - return $bestFitLinear->getStdevOfResiduals(); - } - - - /** - * TDIST - * - * Returns the probability of Student's T distribution. - * - * @param float $value Value for the function - * @param float $degrees degrees of freedom - * @param float $tails number of tails (1 or 2) - * @return float - */ - public static function TDIST($value, $degrees, $tails) - { - $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); - $degrees = floor(PHPExcel_Calculation_Functions::flattenSingleValue($degrees)); - $tails = floor(PHPExcel_Calculation_Functions::flattenSingleValue($tails)); - - if ((is_numeric($value)) && (is_numeric($degrees)) && (is_numeric($tails))) { - if (($value < 0) || ($degrees < 1) || ($tails < 1) || ($tails > 2)) { - return PHPExcel_Calculation_Functions::NaN(); - } - // tdist, which finds the probability that corresponds to a given value - // of t with k degrees of freedom. This algorithm is translated from a - // pascal function on p81 of "Statistical Computing in Pascal" by D - // Cooke, A H Craven & G M Clark (1985: Edward Arnold (Pubs.) Ltd: - // London). The above Pascal algorithm is itself a translation of the - // fortran algoritm "AS 3" by B E Cooper of the Atlas Computer - // Laboratory as reported in (among other places) "Applied Statistics - // Algorithms", editied by P Griffiths and I D Hill (1985; Ellis - // Horwood Ltd.; W. Sussex, England). - $tterm = $degrees; - $ttheta = atan2($value, sqrt($tterm)); - $tc = cos($ttheta); - $ts = sin($ttheta); - $tsum = 0; - - if (($degrees % 2) == 1) { - $ti = 3; - $tterm = $tc; - } else { - $ti = 2; - $tterm = 1; - } - - $tsum = $tterm; - while ($ti < $degrees) { - $tterm *= $tc * $tc * ($ti - 1) / $ti; - $tsum += $tterm; - $ti += 2; - } - $tsum *= $ts; - if (($degrees % 2) == 1) { - $tsum = M_2DIVPI * ($tsum + $ttheta); - } - $tValue = 0.5 * (1 + $tsum); - if ($tails == 1) { - return 1 - abs($tValue); - } else { - return 1 - abs((1 - $tValue) - $tValue); - } - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * TINV - * - * Returns the one-tailed probability of the chi-squared distribution. - * - * @param float $probability Probability for the function - * @param float $degrees degrees of freedom - * @return float - */ - public static function TINV($probability, $degrees) - { - $probability = PHPExcel_Calculation_Functions::flattenSingleValue($probability); - $degrees = floor(PHPExcel_Calculation_Functions::flattenSingleValue($degrees)); - - if ((is_numeric($probability)) && (is_numeric($degrees))) { - $xLo = 100; - $xHi = 0; - - $x = $xNew = 1; - $dx = 1; - $i = 0; - - while ((abs($dx) > PRECISION) && ($i++ < MAX_ITERATIONS)) { - // Apply Newton-Raphson step - $result = self::TDIST($x, $degrees, 2); - $error = $result - $probability; - if ($error == 0.0) { - $dx = 0; - } elseif ($error < 0.0) { - $xLo = $x; - } else { - $xHi = $x; - } - // Avoid division by zero - if ($result != 0.0) { - $dx = $error / $result; - $xNew = $x - $dx; - } - // If the NR fails to converge (which for example may be the - // case if the initial guess is too rough) we apply a bisection - // step to determine a more narrow interval around the root. - if (($xNew < $xLo) || ($xNew > $xHi) || ($result == 0.0)) { - $xNew = ($xLo + $xHi) / 2; - $dx = $xNew - $x; - } - $x = $xNew; - } - if ($i == MAX_ITERATIONS) { - return PHPExcel_Calculation_Functions::NA(); - } - return round($x, 12); - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * TREND - * - * Returns values along a linear trend - * - * @param array of mixed Data Series Y - * @param array of mixed Data Series X - * @param array of mixed Values of X for which we want to find Y - * @param boolean A logical value specifying whether to force the intersect to equal 0. - * @return array of float - */ - public static function TREND($yValues, $xValues = array(), $newValues = array(), $const = true) - { - $yValues = PHPExcel_Calculation_Functions::flattenArray($yValues); - $xValues = PHPExcel_Calculation_Functions::flattenArray($xValues); - $newValues = PHPExcel_Calculation_Functions::flattenArray($newValues); - $const = (is_null($const)) ? true : (boolean) PHPExcel_Calculation_Functions::flattenSingleValue($const); - - $bestFitLinear = trendClass::calculate(trendClass::TREND_LINEAR, $yValues, $xValues, $const); - if (empty($newValues)) { - $newValues = $bestFitLinear->getXValues(); - } - - $returnArray = array(); - foreach ($newValues as $xValue) { - $returnArray[0][] = $bestFitLinear->getValueOfYForX($xValue); - } - - return $returnArray; - } - - - /** - * TRIMMEAN - * - * Returns the mean of the interior of a data set. TRIMMEAN calculates the mean - * taken by excluding a percentage of data points from the top and bottom tails - * of a data set. - * - * Excel Function: - * TRIMEAN(value1[,value2[, ...]], $discard) - * - * @access public - * @category Statistical Functions - * @param mixed $arg,... Data values - * @param float $discard Percentage to discard - * @return float - */ - public static function TRIMMEAN() - { - $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); - - // Calculate - $percent = array_pop($aArgs); - - if ((is_numeric($percent)) && (!is_string($percent))) { - if (($percent < 0) || ($percent > 1)) { - return PHPExcel_Calculation_Functions::NaN(); - } - $mArgs = array(); - foreach ($aArgs as $arg) { - // Is it a numeric value? - if ((is_numeric($arg)) && (!is_string($arg))) { - $mArgs[] = $arg; - } - } - $discard = floor(self::COUNT($mArgs) * $percent / 2); - sort($mArgs); - for ($i=0; $i < $discard; ++$i) { - array_pop($mArgs); - array_shift($mArgs); - } - return self::AVERAGE($mArgs); - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * VARFunc - * - * Estimates variance based on a sample. - * - * Excel Function: - * VAR(value1[,value2[, ...]]) - * - * @access public - * @category Statistical Functions - * @param mixed $arg,... Data values - * @return float - */ - public static function VARFunc() - { - $returnValue = PHPExcel_Calculation_Functions::DIV0(); - - $summerA = $summerB = 0; - - // Loop through arguments - $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); - $aCount = 0; - foreach ($aArgs as $arg) { - if (is_bool($arg)) { - $arg = (integer) $arg; - } - // Is it a numeric value? - if ((is_numeric($arg)) && (!is_string($arg))) { - $summerA += ($arg * $arg); - $summerB += $arg; - ++$aCount; - } - } - - if ($aCount > 1) { - $summerA *= $aCount; - $summerB *= $summerB; - $returnValue = ($summerA - $summerB) / ($aCount * ($aCount - 1)); - } - return $returnValue; - } - - - /** - * VARA - * - * Estimates variance based on a sample, including numbers, text, and logical values - * - * Excel Function: - * VARA(value1[,value2[, ...]]) - * - * @access public - * @category Statistical Functions - * @param mixed $arg,... Data values - * @return float - */ - public static function VARA() - { - $returnValue = PHPExcel_Calculation_Functions::DIV0(); - - $summerA = $summerB = 0; - - // Loop through arguments - $aArgs = PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args()); - $aCount = 0; - foreach ($aArgs as $k => $arg) { - if ((is_string($arg)) && - (PHPExcel_Calculation_Functions::isValue($k))) { - return PHPExcel_Calculation_Functions::VALUE(); - } elseif ((is_string($arg)) && - (!PHPExcel_Calculation_Functions::isMatrixValue($k))) { - } else { - // Is it a numeric value? - if ((is_numeric($arg)) || (is_bool($arg)) || ((is_string($arg) & ($arg != '')))) { - if (is_bool($arg)) { - $arg = (integer) $arg; - } elseif (is_string($arg)) { - $arg = 0; - } - $summerA += ($arg * $arg); - $summerB += $arg; - ++$aCount; - } - } - } - - if ($aCount > 1) { - $summerA *= $aCount; - $summerB *= $summerB; - $returnValue = ($summerA - $summerB) / ($aCount * ($aCount - 1)); - } - return $returnValue; - } - - - /** - * VARP - * - * Calculates variance based on the entire population - * - * Excel Function: - * VARP(value1[,value2[, ...]]) - * - * @access public - * @category Statistical Functions - * @param mixed $arg,... Data values - * @return float - */ - public static function VARP() - { - // Return value - $returnValue = PHPExcel_Calculation_Functions::DIV0(); - - $summerA = $summerB = 0; - - // Loop through arguments - $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); - $aCount = 0; - foreach ($aArgs as $arg) { - if (is_bool($arg)) { - $arg = (integer) $arg; - } - // Is it a numeric value? - if ((is_numeric($arg)) && (!is_string($arg))) { - $summerA += ($arg * $arg); - $summerB += $arg; - ++$aCount; - } - } - - if ($aCount > 0) { - $summerA *= $aCount; - $summerB *= $summerB; - $returnValue = ($summerA - $summerB) / ($aCount * $aCount); - } - return $returnValue; - } - - - /** - * VARPA - * - * Calculates variance based on the entire population, including numbers, text, and logical values - * - * Excel Function: - * VARPA(value1[,value2[, ...]]) - * - * @access public - * @category Statistical Functions - * @param mixed $arg,... Data values - * @return float - */ - public static function VARPA() - { - $returnValue = PHPExcel_Calculation_Functions::DIV0(); - - $summerA = $summerB = 0; - - // Loop through arguments - $aArgs = PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args()); - $aCount = 0; - foreach ($aArgs as $k => $arg) { - if ((is_string($arg)) && - (PHPExcel_Calculation_Functions::isValue($k))) { - return PHPExcel_Calculation_Functions::VALUE(); - } elseif ((is_string($arg)) && - (!PHPExcel_Calculation_Functions::isMatrixValue($k))) { - } else { - // Is it a numeric value? - if ((is_numeric($arg)) || (is_bool($arg)) || ((is_string($arg) & ($arg != '')))) { - if (is_bool($arg)) { - $arg = (integer) $arg; - } elseif (is_string($arg)) { - $arg = 0; - } - $summerA += ($arg * $arg); - $summerB += $arg; - ++$aCount; - } - } - } - - if ($aCount > 0) { - $summerA *= $aCount; - $summerB *= $summerB; - $returnValue = ($summerA - $summerB) / ($aCount * $aCount); - } - return $returnValue; - } - - - /** - * WEIBULL - * - * Returns the Weibull distribution. Use this distribution in reliability - * analysis, such as calculating a device's mean time to failure. - * - * @param float $value - * @param float $alpha Alpha Parameter - * @param float $beta Beta Parameter - * @param boolean $cumulative - * @return float - * - */ - public static function WEIBULL($value, $alpha, $beta, $cumulative) - { - $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); - $alpha = PHPExcel_Calculation_Functions::flattenSingleValue($alpha); - $beta = PHPExcel_Calculation_Functions::flattenSingleValue($beta); - - if ((is_numeric($value)) && (is_numeric($alpha)) && (is_numeric($beta))) { - if (($value < 0) || ($alpha <= 0) || ($beta <= 0)) { - return PHPExcel_Calculation_Functions::NaN(); - } - if ((is_numeric($cumulative)) || (is_bool($cumulative))) { - if ($cumulative) { - return 1 - exp(0 - pow($value / $beta, $alpha)); - } else { - return ($alpha / pow($beta, $alpha)) * pow($value, $alpha - 1) * exp(0 - pow($value / $beta, $alpha)); - } - } - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * ZTEST - * - * Returns the Weibull distribution. Use this distribution in reliability - * analysis, such as calculating a device's mean time to failure. - * - * @param float $dataSet - * @param float $m0 Alpha Parameter - * @param float $sigma Beta Parameter - * @param boolean $cumulative - * @return float - * - */ - public static function ZTEST($dataSet, $m0, $sigma = null) - { - $dataSet = PHPExcel_Calculation_Functions::flattenArrayIndexed($dataSet); - $m0 = PHPExcel_Calculation_Functions::flattenSingleValue($m0); - $sigma = PHPExcel_Calculation_Functions::flattenSingleValue($sigma); - - if (is_null($sigma)) { - $sigma = self::STDEV($dataSet); - } - $n = count($dataSet); - - return 1 - self::NORMSDIST((self::AVERAGE($dataSet) - $m0) / ($sigma / SQRT($n))); - } -} diff --git a/application/third_party/PHPExcel/Calculation/TextData.php b/application/third_party/PHPExcel/Calculation/TextData.php deleted file mode 100644 index 6461d060..00000000 --- a/application/third_party/PHPExcel/Calculation/TextData.php +++ /dev/null @@ -1,651 +0,0 @@ -=0 && ord($c{0}) <= 127) { - return ord($c{0}); - } elseif (ord($c{0}) >= 192 && ord($c{0}) <= 223) { - return (ord($c{0})-192)*64 + (ord($c{1})-128); - } elseif (ord($c{0}) >= 224 && ord($c{0}) <= 239) { - return (ord($c{0})-224)*4096 + (ord($c{1})-128)*64 + (ord($c{2})-128); - } elseif (ord($c{0}) >= 240 && ord($c{0}) <= 247) { - return (ord($c{0})-240)*262144 + (ord($c{1})-128)*4096 + (ord($c{2})-128)*64 + (ord($c{3})-128); - } elseif (ord($c{0}) >= 248 && ord($c{0}) <= 251) { - return (ord($c{0})-248)*16777216 + (ord($c{1})-128)*262144 + (ord($c{2})-128)*4096 + (ord($c{3})-128)*64 + (ord($c{4})-128); - } elseif (ord($c{0}) >= 252 && ord($c{0}) <= 253) { - return (ord($c{0})-252)*1073741824 + (ord($c{1})-128)*16777216 + (ord($c{2})-128)*262144 + (ord($c{3})-128)*4096 + (ord($c{4})-128)*64 + (ord($c{5})-128); - } elseif (ord($c{0}) >= 254 && ord($c{0}) <= 255) { - // error - return PHPExcel_Calculation_Functions::VALUE(); - } - return 0; - } - - /** - * CHARACTER - * - * @param string $character Value - * @return int - */ - public static function CHARACTER($character) - { - $character = PHPExcel_Calculation_Functions::flattenSingleValue($character); - - if ((!is_numeric($character)) || ($character < 0)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - if (function_exists('mb_convert_encoding')) { - return mb_convert_encoding('&#'.intval($character).';', 'UTF-8', 'HTML-ENTITIES'); - } else { - return chr(intval($character)); - } - } - - - /** - * TRIMNONPRINTABLE - * - * @param mixed $stringValue Value to check - * @return string - */ - public static function TRIMNONPRINTABLE($stringValue = '') - { - $stringValue = PHPExcel_Calculation_Functions::flattenSingleValue($stringValue); - - if (is_bool($stringValue)) { - return ($stringValue) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE(); - } - - if (self::$invalidChars == null) { - self::$invalidChars = range(chr(0), chr(31)); - } - - if (is_string($stringValue) || is_numeric($stringValue)) { - return str_replace(self::$invalidChars, '', trim($stringValue, "\x00..\x1F")); - } - return null; - } - - - /** - * TRIMSPACES - * - * @param mixed $stringValue Value to check - * @return string - */ - public static function TRIMSPACES($stringValue = '') - { - $stringValue = PHPExcel_Calculation_Functions::flattenSingleValue($stringValue); - if (is_bool($stringValue)) { - return ($stringValue) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE(); - } - - if (is_string($stringValue) || is_numeric($stringValue)) { - return trim(preg_replace('/ +/', ' ', trim($stringValue, ' ')), ' '); - } - return null; - } - - - /** - * ASCIICODE - * - * @param string $characters Value - * @return int - */ - public static function ASCIICODE($characters) - { - if (($characters === null) || ($characters === '')) { - return PHPExcel_Calculation_Functions::VALUE(); - } - $characters = PHPExcel_Calculation_Functions::flattenSingleValue($characters); - if (is_bool($characters)) { - if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) { - $characters = (int) $characters; - } else { - $characters = ($characters) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE(); - } - } - - $character = $characters; - if ((function_exists('mb_strlen')) && (function_exists('mb_substr'))) { - if (mb_strlen($characters, 'UTF-8') > 1) { - $character = mb_substr($characters, 0, 1, 'UTF-8'); - } - return self::unicodeToOrd($character); - } else { - if (strlen($characters) > 0) { - $character = substr($characters, 0, 1); - } - return ord($character); - } - } - - - /** - * CONCATENATE - * - * @return string - */ - public static function CONCATENATE() - { - $returnValue = ''; - - // Loop through arguments - $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); - foreach ($aArgs as $arg) { - if (is_bool($arg)) { - if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) { - $arg = (int) $arg; - } else { - $arg = ($arg) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE(); - } - } - $returnValue .= $arg; - } - - return $returnValue; - } - - - /** - * DOLLAR - * - * This function converts a number to text using currency format, with the decimals rounded to the specified place. - * The format used is $#,##0.00_);($#,##0.00).. - * - * @param float $value The value to format - * @param int $decimals The number of digits to display to the right of the decimal point. - * If decimals is negative, number is rounded to the left of the decimal point. - * If you omit decimals, it is assumed to be 2 - * @return string - */ - public static function DOLLAR($value = 0, $decimals = 2) - { - $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); - $decimals = is_null($decimals) ? 0 : PHPExcel_Calculation_Functions::flattenSingleValue($decimals); - - // Validate parameters - if (!is_numeric($value) || !is_numeric($decimals)) { - return PHPExcel_Calculation_Functions::NaN(); - } - $decimals = floor($decimals); - - $mask = '$#,##0'; - if ($decimals > 0) { - $mask .= '.' . str_repeat('0', $decimals); - } else { - $round = pow(10, abs($decimals)); - if ($value < 0) { - $round = 0-$round; - } - $value = PHPExcel_Calculation_MathTrig::MROUND($value, $round); - } - - return PHPExcel_Style_NumberFormat::toFormattedString($value, $mask); - - } - - - /** - * SEARCHSENSITIVE - * - * @param string $needle The string to look for - * @param string $haystack The string in which to look - * @param int $offset Offset within $haystack - * @return string - */ - public static function SEARCHSENSITIVE($needle, $haystack, $offset = 1) - { - $needle = PHPExcel_Calculation_Functions::flattenSingleValue($needle); - $haystack = PHPExcel_Calculation_Functions::flattenSingleValue($haystack); - $offset = PHPExcel_Calculation_Functions::flattenSingleValue($offset); - - if (!is_bool($needle)) { - if (is_bool($haystack)) { - $haystack = ($haystack) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE(); - } - - if (($offset > 0) && (PHPExcel_Shared_String::CountCharacters($haystack) > $offset)) { - if (PHPExcel_Shared_String::CountCharacters($needle) == 0) { - return $offset; - } - if (function_exists('mb_strpos')) { - $pos = mb_strpos($haystack, $needle, --$offset, 'UTF-8'); - } else { - $pos = strpos($haystack, $needle, --$offset); - } - if ($pos !== false) { - return ++$pos; - } - } - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * SEARCHINSENSITIVE - * - * @param string $needle The string to look for - * @param string $haystack The string in which to look - * @param int $offset Offset within $haystack - * @return string - */ - public static function SEARCHINSENSITIVE($needle, $haystack, $offset = 1) - { - $needle = PHPExcel_Calculation_Functions::flattenSingleValue($needle); - $haystack = PHPExcel_Calculation_Functions::flattenSingleValue($haystack); - $offset = PHPExcel_Calculation_Functions::flattenSingleValue($offset); - - if (!is_bool($needle)) { - if (is_bool($haystack)) { - $haystack = ($haystack) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE(); - } - - if (($offset > 0) && (PHPExcel_Shared_String::CountCharacters($haystack) > $offset)) { - if (PHPExcel_Shared_String::CountCharacters($needle) == 0) { - return $offset; - } - if (function_exists('mb_stripos')) { - $pos = mb_stripos($haystack, $needle, --$offset, 'UTF-8'); - } else { - $pos = stripos($haystack, $needle, --$offset); - } - if ($pos !== false) { - return ++$pos; - } - } - } - return PHPExcel_Calculation_Functions::VALUE(); - } - - - /** - * FIXEDFORMAT - * - * @param mixed $value Value to check - * @param integer $decimals - * @param boolean $no_commas - * @return boolean - */ - public static function FIXEDFORMAT($value, $decimals = 2, $no_commas = false) - { - $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); - $decimals = PHPExcel_Calculation_Functions::flattenSingleValue($decimals); - $no_commas = PHPExcel_Calculation_Functions::flattenSingleValue($no_commas); - - // Validate parameters - if (!is_numeric($value) || !is_numeric($decimals)) { - return PHPExcel_Calculation_Functions::NaN(); - } - $decimals = floor($decimals); - - $valueResult = round($value, $decimals); - if ($decimals < 0) { - $decimals = 0; - } - if (!$no_commas) { - $valueResult = number_format($valueResult, $decimals); - } - - return (string) $valueResult; - } - - - /** - * LEFT - * - * @param string $value Value - * @param int $chars Number of characters - * @return string - */ - public static function LEFT($value = '', $chars = 1) - { - $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); - $chars = PHPExcel_Calculation_Functions::flattenSingleValue($chars); - - if ($chars < 0) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - if (is_bool($value)) { - $value = ($value) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE(); - } - - if (function_exists('mb_substr')) { - return mb_substr($value, 0, $chars, 'UTF-8'); - } else { - return substr($value, 0, $chars); - } - } - - - /** - * MID - * - * @param string $value Value - * @param int $start Start character - * @param int $chars Number of characters - * @return string - */ - public static function MID($value = '', $start = 1, $chars = null) - { - $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); - $start = PHPExcel_Calculation_Functions::flattenSingleValue($start); - $chars = PHPExcel_Calculation_Functions::flattenSingleValue($chars); - - if (($start < 1) || ($chars < 0)) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - if (is_bool($value)) { - $value = ($value) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE(); - } - - if (function_exists('mb_substr')) { - return mb_substr($value, --$start, $chars, 'UTF-8'); - } else { - return substr($value, --$start, $chars); - } - } - - - /** - * RIGHT - * - * @param string $value Value - * @param int $chars Number of characters - * @return string - */ - public static function RIGHT($value = '', $chars = 1) - { - $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); - $chars = PHPExcel_Calculation_Functions::flattenSingleValue($chars); - - if ($chars < 0) { - return PHPExcel_Calculation_Functions::VALUE(); - } - - if (is_bool($value)) { - $value = ($value) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE(); - } - - if ((function_exists('mb_substr')) && (function_exists('mb_strlen'))) { - return mb_substr($value, mb_strlen($value, 'UTF-8') - $chars, $chars, 'UTF-8'); - } else { - return substr($value, strlen($value) - $chars); - } - } - - - /** - * STRINGLENGTH - * - * @param string $value Value - * @return string - */ - public static function STRINGLENGTH($value = '') - { - $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); - - if (is_bool($value)) { - $value = ($value) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE(); - } - - if (function_exists('mb_strlen')) { - return mb_strlen($value, 'UTF-8'); - } else { - return strlen($value); - } - } - - - /** - * LOWERCASE - * - * Converts a string value to upper case. - * - * @param string $mixedCaseString - * @return string - */ - public static function LOWERCASE($mixedCaseString) - { - $mixedCaseString = PHPExcel_Calculation_Functions::flattenSingleValue($mixedCaseString); - - if (is_bool($mixedCaseString)) { - $mixedCaseString = ($mixedCaseString) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE(); - } - - return PHPExcel_Shared_String::StrToLower($mixedCaseString); - } - - - /** - * UPPERCASE - * - * Converts a string value to upper case. - * - * @param string $mixedCaseString - * @return string - */ - public static function UPPERCASE($mixedCaseString) - { - $mixedCaseString = PHPExcel_Calculation_Functions::flattenSingleValue($mixedCaseString); - - if (is_bool($mixedCaseString)) { - $mixedCaseString = ($mixedCaseString) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE(); - } - - return PHPExcel_Shared_String::StrToUpper($mixedCaseString); - } - - - /** - * PROPERCASE - * - * Converts a string value to upper case. - * - * @param string $mixedCaseString - * @return string - */ - public static function PROPERCASE($mixedCaseString) - { - $mixedCaseString = PHPExcel_Calculation_Functions::flattenSingleValue($mixedCaseString); - - if (is_bool($mixedCaseString)) { - $mixedCaseString = ($mixedCaseString) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE(); - } - - return PHPExcel_Shared_String::StrToTitle($mixedCaseString); - } - - - /** - * REPLACE - * - * @param string $oldText String to modify - * @param int $start Start character - * @param int $chars Number of characters - * @param string $newText String to replace in defined position - * @return string - */ - public static function REPLACE($oldText = '', $start = 1, $chars = null, $newText) - { - $oldText = PHPExcel_Calculation_Functions::flattenSingleValue($oldText); - $start = PHPExcel_Calculation_Functions::flattenSingleValue($start); - $chars = PHPExcel_Calculation_Functions::flattenSingleValue($chars); - $newText = PHPExcel_Calculation_Functions::flattenSingleValue($newText); - - $left = self::LEFT($oldText, $start-1); - $right = self::RIGHT($oldText, self::STRINGLENGTH($oldText)-($start+$chars)+1); - - return $left.$newText.$right; - } - - - /** - * SUBSTITUTE - * - * @param string $text Value - * @param string $fromText From Value - * @param string $toText To Value - * @param integer $instance Instance Number - * @return string - */ - public static function SUBSTITUTE($text = '', $fromText = '', $toText = '', $instance = 0) - { - $text = PHPExcel_Calculation_Functions::flattenSingleValue($text); - $fromText = PHPExcel_Calculation_Functions::flattenSingleValue($fromText); - $toText = PHPExcel_Calculation_Functions::flattenSingleValue($toText); - $instance = floor(PHPExcel_Calculation_Functions::flattenSingleValue($instance)); - - if ($instance == 0) { - if (function_exists('mb_str_replace')) { - return mb_str_replace($fromText, $toText, $text); - } else { - return str_replace($fromText, $toText, $text); - } - } else { - $pos = -1; - while ($instance > 0) { - if (function_exists('mb_strpos')) { - $pos = mb_strpos($text, $fromText, $pos+1, 'UTF-8'); - } else { - $pos = strpos($text, $fromText, $pos+1); - } - if ($pos === false) { - break; - } - --$instance; - } - if ($pos !== false) { - if (function_exists('mb_strlen')) { - return self::REPLACE($text, ++$pos, mb_strlen($fromText, 'UTF-8'), $toText); - } else { - return self::REPLACE($text, ++$pos, strlen($fromText), $toText); - } - } - } - - return $text; - } - - - /** - * RETURNSTRING - * - * @param mixed $testValue Value to check - * @return boolean - */ - public static function RETURNSTRING($testValue = '') - { - $testValue = PHPExcel_Calculation_Functions::flattenSingleValue($testValue); - - if (is_string($testValue)) { - return $testValue; - } - return null; - } - - - /** - * TEXTFORMAT - * - * @param mixed $value Value to check - * @param string $format Format mask to use - * @return boolean - */ - public static function TEXTFORMAT($value, $format) - { - $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); - $format = PHPExcel_Calculation_Functions::flattenSingleValue($format); - - if ((is_string($value)) && (!is_numeric($value)) && PHPExcel_Shared_Date::isDateTimeFormatCode($format)) { - $value = PHPExcel_Calculation_DateTime::DATEVALUE($value); - } - - return (string) PHPExcel_Style_NumberFormat::toFormattedString($value, $format); - } - - /** - * VALUE - * - * @param mixed $value Value to check - * @return boolean - */ - public static function VALUE($value = '') - { - $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); - - if (!is_numeric($value)) { - $numberValue = str_replace( - PHPExcel_Shared_String::getThousandsSeparator(), - '', - trim($value, " \t\n\r\0\x0B" . PHPExcel_Shared_String::getCurrencyCode()) - ); - if (is_numeric($numberValue)) { - return (float) $numberValue; - } - - $dateSetting = PHPExcel_Calculation_Functions::getReturnDateType(); - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL); - - if (strpos($value, ':') !== false) { - $timeValue = PHPExcel_Calculation_DateTime::TIMEVALUE($value); - if ($timeValue !== PHPExcel_Calculation_Functions::VALUE()) { - PHPExcel_Calculation_Functions::setReturnDateType($dateSetting); - return $timeValue; - } - } - $dateValue = PHPExcel_Calculation_DateTime::DATEVALUE($value); - if ($dateValue !== PHPExcel_Calculation_Functions::VALUE()) { - PHPExcel_Calculation_Functions::setReturnDateType($dateSetting); - return $dateValue; - } - PHPExcel_Calculation_Functions::setReturnDateType($dateSetting); - - return PHPExcel_Calculation_Functions::VALUE(); - } - return (float) $value; - } -} diff --git a/application/third_party/PHPExcel/Calculation/Token/Stack.php b/application/third_party/PHPExcel/Calculation/Token/Stack.php deleted file mode 100644 index 02ed5aaf..00000000 --- a/application/third_party/PHPExcel/Calculation/Token/Stack.php +++ /dev/null @@ -1,111 +0,0 @@ -count; - } - - /** - * Push a new entry onto the stack - * - * @param mixed $type - * @param mixed $value - * @param mixed $reference - */ - public function push($type, $value, $reference = null) - { - $this->stack[$this->count++] = array( - 'type' => $type, - 'value' => $value, - 'reference' => $reference - ); - if ($type == 'Function') { - $localeFunction = PHPExcel_Calculation::localeFunc($value); - if ($localeFunction != $value) { - $this->stack[($this->count - 1)]['localeValue'] = $localeFunction; - } - } - } - - /** - * Pop the last entry from the stack - * - * @return mixed - */ - public function pop() - { - if ($this->count > 0) { - return $this->stack[--$this->count]; - } - return null; - } - - /** - * Return an entry from the stack without removing it - * - * @param integer $n number indicating how far back in the stack we want to look - * @return mixed - */ - public function last($n = 1) - { - if ($this->count - $n < 0) { - return null; - } - return $this->stack[$this->count - $n]; - } - - /** - * Clear the stack - */ - public function clear() - { - $this->stack = array(); - $this->count = 0; - } -} diff --git a/application/third_party/PHPExcel/Calculation/functionlist.txt b/application/third_party/PHPExcel/Calculation/functionlist.txt deleted file mode 100644 index 67dbd49c..00000000 --- a/application/third_party/PHPExcel/Calculation/functionlist.txt +++ /dev/null @@ -1,351 +0,0 @@ -ABS -ACCRINT -ACCRINTM -ACOS -ACOSH -ADDRESS -AMORDEGRC -AMORLINC -AND -AREAS -ASC -ASIN -ASINH -ATAN -ATAN2 -ATANH -AVEDEV -AVERAGE -AVERAGEA -AVERAGEIF -AVERAGEIFS -BAHTTEXT -BESSELI -BESSELJ -BESSELK -BESSELY -BETADIST -BETAINV -BIN2DEC -BIN2HEX -BIN2OCT -BINOMDIST -CEILING -CELL -CHAR -CHIDIST -CHIINV -CHITEST -CHOOSE -CLEAN -CODE -COLUMN -COLUMNS -COMBIN -COMPLEX -CONCATENATE -CONFIDENCE -CONVERT -CORREL -COS -COSH -COUNT -COUNTA -COUNTBLANK -COUNTIF -COUNTIFS -COUPDAYBS -COUPDAYBS -COUPDAYSNC -COUPNCD -COUPNUM -COUPPCD -COVAR -CRITBINOM -CUBEKPIMEMBER -CUBEMEMBER -CUBEMEMBERPROPERTY -CUBERANKEDMEMBER -CUBESET -CUBESETCOUNT -CUBEVALUE -CUMIPMT -CUMPRINC -DATE -DATEDIF -DATEVALUE -DAVERAGE -DAY -DAYS360 -DB -DCOUNT -DCOUNTA -DDB -DEC2BIN -DEC2HEX -DEC2OCT -DEGREES -DELTA -DEVSQ -DGET -DISC -DMAX -DMIN -DOLLAR -DOLLARDE -DOLLARFR -DPRODUCT -DSTDEV -DSTDEVP -DSUM -DURATION -DVAR -DVARP -EDATE -EFFECT -EOMONTH -ERF -ERFC -ERROR.TYPE -EVEN -EXACT -EXP -EXPONDIST -FACT -FACTDOUBLE -FALSE -FDIST -FIND -FINDB -FINV -FISHER -FISHERINV -FIXED -FLOOR -FORECAST -FREQUENCY -FTEST -FV -FVSCHEDULE -GAMAMDIST -GAMMAINV -GAMMALN -GCD -GEOMEAN -GESTEP -GETPIVOTDATA -GROWTH -HARMEAN -HEX2BIN -HEX2OCT -HLOOKUP -HOUR -HYPERLINK -HYPGEOMDIST -IF -IFERROR -IMABS -IMAGINARY -IMARGUMENT -IMCONJUGATE -IMCOS -IMEXP -IMLN -IMLOG10 -IMLOG2 -IMPOWER -IMPRODUCT -IMREAL -IMSIN -IMSQRT -IMSUB -IMSUM -INDEX -INDIRECT -INFO -INT -INTERCEPT -INTRATE -IPMT -IRR -ISBLANK -ISERR -ISERROR -ISEVEN -ISLOGICAL -ISNA -ISNONTEXT -ISNUMBER -ISODD -ISPMT -ISREF -ISTEXT -JIS -KURT -LARGE -LCM -LEFT -LEFTB -LEN -LENB -LINEST -LN -LOG -LOG10 -LOGEST -LOGINV -LOGNORMDIST -LOOKUP -LOWER -MATCH -MAX -MAXA -MDETERM -MDURATION -MEDIAN -MID -MIDB -MIN -MINA -MINUTE -MINVERSE -MIRR -MMULT -MOD -MODE -MONTH -MROUND -MULTINOMIAL -N -NA -NEGBINOMDIST -NETWORKDAYS -NOMINAL -NORMDIST -NORMINV -NORMSDIST -NORMSINV -NOT -NOW -NPER -NPV -OCT2BIN -OCT2DEC -OCT2HEX -ODD -ODDFPRICE -ODDFYIELD -ODDLPRICE -ODDLYIELD -OFFSET -OR -PEARSON -PERCENTILE -PERCENTRANK -PERMUT -PHONETIC -PI -PMT -POISSON -POWER -PPMT -PRICE -PRICEDISC -PRICEMAT -PROB -PRODUCT -PROPER -PV -QUARTILE -QUOTIENT -RADIANS -RAND -RANDBETWEEN -RANK -RATE -RECEIVED -REPLACE -REPLACEB -REPT -RIGHT -RIGHTB -ROMAN -ROUND -ROUNDDOWN -ROUNDUP -ROW -ROWS -RSQ -RTD -SEARCH -SEARCHB -SECOND -SERIESSUM -SIGN -SIN -SINH -SKEW -SLN -SLOPE -SMALL -SQRT -SQRTPI -STANDARDIZE -STDEV -STDEVA -STDEVP -STDEVPA -STEYX -SUBSTITUTE -SUBTOTAL -SUM -SUMIF -SUMIFS -SUMPRODUCT -SUMSQ -SUMX2MY2 -SUMX2PY2 -SUMXMY2 -SYD -T -TAN -TANH -TBILLEQ -TBILLPRICE -TBILLYIELD -TDIST -TEXT -TIME -TIMEVALUE -TINV -TODAY -TRANSPOSE -TREND -TRIM -TRIMMEAN -TRUE -TRUNC -TTEST -TYPE -UPPER -USDOLLAR -VALUE -VAR -VARA -VARP -VARPA -VDB -VERSION -VLOOKUP -WEEKDAY -WEEKNUM -WEIBULL -WORKDAY -XIRR -XNPV -YEAR -YEARFRAC -YIELD -YIELDDISC -YIELDMAT -ZTEST diff --git a/application/third_party/PHPExcel/Cell.php b/application/third_party/PHPExcel/Cell.php deleted file mode 100644 index c99a3c8b..00000000 --- a/application/third_party/PHPExcel/Cell.php +++ /dev/null @@ -1,1032 +0,0 @@ -parent->updateCacheData($this); - - return $this; - } - - public function detach() - { - $this->parent = null; - } - - public function attach(PHPExcel_CachedObjectStorage_CacheBase $parent) - { - $this->parent = $parent; - } - - - /** - * Create a new Cell - * - * @param mixed $pValue - * @param string $pDataType - * @param PHPExcel_Worksheet $pSheet - * @throws PHPExcel_Exception - */ - public function __construct($pValue = null, $pDataType = null, PHPExcel_Worksheet $pSheet = null) - { - // Initialise cell value - $this->value = $pValue; - - // Set worksheet cache - $this->parent = $pSheet->getCellCacheController(); - - // Set datatype? - if ($pDataType !== null) { - if ($pDataType == PHPExcel_Cell_DataType::TYPE_STRING2) { - $pDataType = PHPExcel_Cell_DataType::TYPE_STRING; - } - $this->dataType = $pDataType; - } elseif (!self::getValueBinder()->bindValue($this, $pValue)) { - throw new PHPExcel_Exception("Value could not be bound to cell."); - } - } - - /** - * Get cell coordinate column - * - * @return string - */ - public function getColumn() - { - return $this->parent->getCurrentColumn(); - } - - /** - * Get cell coordinate row - * - * @return int - */ - public function getRow() - { - return $this->parent->getCurrentRow(); - } - - /** - * Get cell coordinate - * - * @return string - */ - public function getCoordinate() - { - return $this->parent->getCurrentAddress(); - } - - /** - * Get cell value - * - * @return mixed - */ - public function getValue() - { - return $this->value; - } - - /** - * Get cell value with formatting - * - * @return string - */ - public function getFormattedValue() - { - return (string) PHPExcel_Style_NumberFormat::toFormattedString( - $this->getCalculatedValue(), - $this->getStyle() - ->getNumberFormat()->getFormatCode() - ); - } - - /** - * Set cell value - * - * Sets the value for a cell, automatically determining the datatype using the value binder - * - * @param mixed $pValue Value - * @return PHPExcel_Cell - * @throws PHPExcel_Exception - */ - public function setValue($pValue = null) - { - if (!self::getValueBinder()->bindValue($this, $pValue)) { - throw new PHPExcel_Exception("Value could not be bound to cell."); - } - return $this; - } - - /** - * Set the value for a cell, with the explicit data type passed to the method (bypassing any use of the value binder) - * - * @param mixed $pValue Value - * @param string $pDataType Explicit data type - * @return PHPExcel_Cell - * @throws PHPExcel_Exception - */ - public function setValueExplicit($pValue = null, $pDataType = PHPExcel_Cell_DataType::TYPE_STRING) - { - // set the value according to data type - switch ($pDataType) { - case PHPExcel_Cell_DataType::TYPE_NULL: - $this->value = $pValue; - break; - case PHPExcel_Cell_DataType::TYPE_STRING2: - $pDataType = PHPExcel_Cell_DataType::TYPE_STRING; - // no break - case PHPExcel_Cell_DataType::TYPE_STRING: - // Synonym for string - case PHPExcel_Cell_DataType::TYPE_INLINE: - // Rich text - $this->value = PHPExcel_Cell_DataType::checkString($pValue); - break; - case PHPExcel_Cell_DataType::TYPE_NUMERIC: - $this->value = (float) $pValue; - break; - case PHPExcel_Cell_DataType::TYPE_FORMULA: - $this->value = (string) $pValue; - break; - case PHPExcel_Cell_DataType::TYPE_BOOL: - $this->value = (bool) $pValue; - break; - case PHPExcel_Cell_DataType::TYPE_ERROR: - $this->value = PHPExcel_Cell_DataType::checkErrorCode($pValue); - break; - default: - throw new PHPExcel_Exception('Invalid datatype: ' . $pDataType); - break; - } - - // set the datatype - $this->dataType = $pDataType; - - return $this->notifyCacheController(); - } - - /** - * Get calculated cell value - * - * @deprecated Since version 1.7.8 for planned changes to cell for array formula handling - * - * @param boolean $resetLog Whether the calculation engine logger should be reset or not - * @return mixed - * @throws PHPExcel_Exception - */ - public function getCalculatedValue($resetLog = true) - { -//echo 'Cell '.$this->getCoordinate().' value is a '.$this->dataType.' with a value of '.$this->getValue().PHP_EOL; - if ($this->dataType == PHPExcel_Cell_DataType::TYPE_FORMULA) { - try { -//echo 'Cell value for '.$this->getCoordinate().' is a formula: Calculating value'.PHP_EOL; - $result = PHPExcel_Calculation::getInstance( - $this->getWorksheet()->getParent() - )->calculateCellValue($this, $resetLog); -//echo $this->getCoordinate().' calculation result is '.$result.PHP_EOL; - // We don't yet handle array returns - if (is_array($result)) { - while (is_array($result)) { - $result = array_pop($result); - } - } - } catch (PHPExcel_Exception $ex) { - if (($ex->getMessage() === 'Unable to access External Workbook') && ($this->calculatedValue !== null)) { -//echo 'Returning fallback value of '.$this->calculatedValue.' for cell '.$this->getCoordinate().PHP_EOL; - return $this->calculatedValue; // Fallback for calculations referencing external files. - } -//echo 'Calculation Exception: '.$ex->getMessage().PHP_EOL; - $result = '#N/A'; - throw new PHPExcel_Calculation_Exception( - $this->getWorksheet()->getTitle().'!'.$this->getCoordinate().' -> '.$ex->getMessage() - ); - } - - if ($result === '#Not Yet Implemented') { -//echo 'Returning fallback value of '.$this->calculatedValue.' for cell '.$this->getCoordinate().PHP_EOL; - return $this->calculatedValue; // Fallback if calculation engine does not support the formula. - } -//echo 'Returning calculated value of '.$result.' for cell '.$this->getCoordinate().PHP_EOL; - return $result; - } elseif ($this->value instanceof PHPExcel_RichText) { -// echo 'Cell value for '.$this->getCoordinate().' is rich text: Returning data value of '.$this->value.'
    '; - return $this->value->getPlainText(); - } -// echo 'Cell value for '.$this->getCoordinate().' is not a formula: Returning data value of '.$this->value.'
    '; - return $this->value; - } - - /** - * Set old calculated value (cached) - * - * @param mixed $pValue Value - * @return PHPExcel_Cell - */ - public function setCalculatedValue($pValue = null) - { - if ($pValue !== null) { - $this->calculatedValue = (is_numeric($pValue)) ? (float) $pValue : $pValue; - } - - return $this->notifyCacheController(); - } - - /** - * Get old calculated value (cached) - * This returns the value last calculated by MS Excel or whichever spreadsheet program was used to - * create the original spreadsheet file. - * Note that this value is not guaranteed to refelect the actual calculated value because it is - * possible that auto-calculation was disabled in the original spreadsheet, and underlying data - * values used by the formula have changed since it was last calculated. - * - * @return mixed - */ - public function getOldCalculatedValue() - { - return $this->calculatedValue; - } - - /** - * Get cell data type - * - * @return string - */ - public function getDataType() - { - return $this->dataType; - } - - /** - * Set cell data type - * - * @param string $pDataType - * @return PHPExcel_Cell - */ - public function setDataType($pDataType = PHPExcel_Cell_DataType::TYPE_STRING) - { - if ($pDataType == PHPExcel_Cell_DataType::TYPE_STRING2) { - $pDataType = PHPExcel_Cell_DataType::TYPE_STRING; - } - $this->dataType = $pDataType; - - return $this->notifyCacheController(); - } - - /** - * Identify if the cell contains a formula - * - * @return boolean - */ - public function isFormula() - { - return $this->dataType == PHPExcel_Cell_DataType::TYPE_FORMULA; - } - - /** - * Does this cell contain Data validation rules? - * - * @return boolean - * @throws PHPExcel_Exception - */ - public function hasDataValidation() - { - if (!isset($this->parent)) { - throw new PHPExcel_Exception('Cannot check for data validation when cell is not bound to a worksheet'); - } - - return $this->getWorksheet()->dataValidationExists($this->getCoordinate()); - } - - /** - * Get Data validation rules - * - * @return PHPExcel_Cell_DataValidation - * @throws PHPExcel_Exception - */ - public function getDataValidation() - { - if (!isset($this->parent)) { - throw new PHPExcel_Exception('Cannot get data validation for cell that is not bound to a worksheet'); - } - - return $this->getWorksheet()->getDataValidation($this->getCoordinate()); - } - - /** - * Set Data validation rules - * - * @param PHPExcel_Cell_DataValidation $pDataValidation - * @return PHPExcel_Cell - * @throws PHPExcel_Exception - */ - public function setDataValidation(PHPExcel_Cell_DataValidation $pDataValidation = null) - { - if (!isset($this->parent)) { - throw new PHPExcel_Exception('Cannot set data validation for cell that is not bound to a worksheet'); - } - - $this->getWorksheet()->setDataValidation($this->getCoordinate(), $pDataValidation); - - return $this->notifyCacheController(); - } - - /** - * Does this cell contain a Hyperlink? - * - * @return boolean - * @throws PHPExcel_Exception - */ - public function hasHyperlink() - { - if (!isset($this->parent)) { - throw new PHPExcel_Exception('Cannot check for hyperlink when cell is not bound to a worksheet'); - } - - return $this->getWorksheet()->hyperlinkExists($this->getCoordinate()); - } - - /** - * Get Hyperlink - * - * @return PHPExcel_Cell_Hyperlink - * @throws PHPExcel_Exception - */ - public function getHyperlink() - { - if (!isset($this->parent)) { - throw new PHPExcel_Exception('Cannot get hyperlink for cell that is not bound to a worksheet'); - } - - return $this->getWorksheet()->getHyperlink($this->getCoordinate()); - } - - /** - * Set Hyperlink - * - * @param PHPExcel_Cell_Hyperlink $pHyperlink - * @return PHPExcel_Cell - * @throws PHPExcel_Exception - */ - public function setHyperlink(PHPExcel_Cell_Hyperlink $pHyperlink = null) - { - if (!isset($this->parent)) { - throw new PHPExcel_Exception('Cannot set hyperlink for cell that is not bound to a worksheet'); - } - - $this->getWorksheet()->setHyperlink($this->getCoordinate(), $pHyperlink); - - return $this->notifyCacheController(); - } - - /** - * Get parent worksheet - * - * @return PHPExcel_CachedObjectStorage_CacheBase - */ - public function getParent() - { - return $this->parent; - } - - /** - * Get parent worksheet - * - * @return PHPExcel_Worksheet - */ - public function getWorksheet() - { - return $this->parent->getParent(); - } - - /** - * Is this cell in a merge range - * - * @return boolean - */ - public function isInMergeRange() - { - return (boolean) $this->getMergeRange(); - } - - /** - * Is this cell the master (top left cell) in a merge range (that holds the actual data value) - * - * @return boolean - */ - public function isMergeRangeValueCell() - { - if ($mergeRange = $this->getMergeRange()) { - $mergeRange = PHPExcel_Cell::splitRange($mergeRange); - list($startCell) = $mergeRange[0]; - if ($this->getCoordinate() === $startCell) { - return true; - } - } - return false; - } - - /** - * If this cell is in a merge range, then return the range - * - * @return string - */ - public function getMergeRange() - { - foreach ($this->getWorksheet()->getMergeCells() as $mergeRange) { - if ($this->isInRange($mergeRange)) { - return $mergeRange; - } - } - return false; - } - - /** - * Get cell style - * - * @return PHPExcel_Style - */ - public function getStyle() - { - return $this->getWorksheet()->getStyle($this->getCoordinate()); - } - - /** - * Re-bind parent - * - * @param PHPExcel_Worksheet $parent - * @return PHPExcel_Cell - */ - public function rebindParent(PHPExcel_Worksheet $parent) - { - $this->parent = $parent->getCellCacheController(); - - return $this->notifyCacheController(); - } - - /** - * Is cell in a specific range? - * - * @param string $pRange Cell range (e.g. A1:A1) - * @return boolean - */ - public function isInRange($pRange = 'A1:A1') - { - list($rangeStart, $rangeEnd) = self::rangeBoundaries($pRange); - - // Translate properties - $myColumn = self::columnIndexFromString($this->getColumn()); - $myRow = $this->getRow(); - - // Verify if cell is in range - return (($rangeStart[0] <= $myColumn) && ($rangeEnd[0] >= $myColumn) && - ($rangeStart[1] <= $myRow) && ($rangeEnd[1] >= $myRow) - ); - } - - /** - * Coordinate from string - * - * @param string $pCoordinateString - * @return array Array containing column and row (indexes 0 and 1) - * @throws PHPExcel_Exception - */ - public static function coordinateFromString($pCoordinateString = 'A1') - { - if (preg_match("/^([$]?[A-Z]{1,3})([$]?\d{1,7})$/", $pCoordinateString, $matches)) { - return array($matches[1],$matches[2]); - } elseif ((strpos($pCoordinateString, ':') !== false) || (strpos($pCoordinateString, ',') !== false)) { - throw new PHPExcel_Exception('Cell coordinate string can not be a range of cells'); - } elseif ($pCoordinateString == '') { - throw new PHPExcel_Exception('Cell coordinate can not be zero-length string'); - } - - throw new PHPExcel_Exception('Invalid cell coordinate '.$pCoordinateString); - } - - /** - * Make string row, column or cell coordinate absolute - * - * @param string $pCoordinateString e.g. 'A' or '1' or 'A1' - * Note that this value can be a row or column reference as well as a cell reference - * @return string Absolute coordinate e.g. '$A' or '$1' or '$A$1' - * @throws PHPExcel_Exception - */ - public static function absoluteReference($pCoordinateString = 'A1') - { - if (strpos($pCoordinateString, ':') === false && strpos($pCoordinateString, ',') === false) { - // Split out any worksheet name from the reference - $worksheet = ''; - $cellAddress = explode('!', $pCoordinateString); - if (count($cellAddress) > 1) { - list($worksheet, $pCoordinateString) = $cellAddress; - } - if ($worksheet > '') { - $worksheet .= '!'; - } - - // Create absolute coordinate - if (ctype_digit($pCoordinateString)) { - return $worksheet . '$' . $pCoordinateString; - } elseif (ctype_alpha($pCoordinateString)) { - return $worksheet . '$' . strtoupper($pCoordinateString); - } - return $worksheet . self::absoluteCoordinate($pCoordinateString); - } - - throw new PHPExcel_Exception('Cell coordinate string can not be a range of cells'); - } - - /** - * Make string coordinate absolute - * - * @param string $pCoordinateString e.g. 'A1' - * @return string Absolute coordinate e.g. '$A$1' - * @throws PHPExcel_Exception - */ - public static function absoluteCoordinate($pCoordinateString = 'A1') - { - if (strpos($pCoordinateString, ':') === false && strpos($pCoordinateString, ',') === false) { - // Split out any worksheet name from the coordinate - $worksheet = ''; - $cellAddress = explode('!', $pCoordinateString); - if (count($cellAddress) > 1) { - list($worksheet, $pCoordinateString) = $cellAddress; - } - if ($worksheet > '') { - $worksheet .= '!'; - } - - // Create absolute coordinate - list($column, $row) = self::coordinateFromString($pCoordinateString); - $column = ltrim($column, '$'); - $row = ltrim($row, '$'); - return $worksheet . '$' . $column . '$' . $row; - } - - throw new PHPExcel_Exception('Cell coordinate string can not be a range of cells'); - } - - /** - * Split range into coordinate strings - * - * @param string $pRange e.g. 'B4:D9' or 'B4:D9,H2:O11' or 'B4' - * @return array Array containg one or more arrays containing one or two coordinate strings - * e.g. array('B4','D9') or array(array('B4','D9'),array('H2','O11')) - * or array('B4') - */ - public static function splitRange($pRange = 'A1:A1') - { - // Ensure $pRange is a valid range - if (empty($pRange)) { - $pRange = self::DEFAULT_RANGE; - } - - $exploded = explode(',', $pRange); - $counter = count($exploded); - for ($i = 0; $i < $counter; ++$i) { - $exploded[$i] = explode(':', $exploded[$i]); - } - return $exploded; - } - - /** - * Build range from coordinate strings - * - * @param array $pRange Array containg one or more arrays containing one or two coordinate strings - * @return string String representation of $pRange - * @throws PHPExcel_Exception - */ - public static function buildRange($pRange) - { - // Verify range - if (!is_array($pRange) || empty($pRange) || !is_array($pRange[0])) { - throw new PHPExcel_Exception('Range does not contain any information'); - } - - // Build range - $imploded = array(); - $counter = count($pRange); - for ($i = 0; $i < $counter; ++$i) { - $pRange[$i] = implode(':', $pRange[$i]); - } - $imploded = implode(',', $pRange); - - return $imploded; - } - - /** - * Calculate range boundaries - * - * @param string $pRange Cell range (e.g. A1:A1) - * @return array Range coordinates array(Start Cell, End Cell) - * where Start Cell and End Cell are arrays (Column Number, Row Number) - */ - public static function rangeBoundaries($pRange = 'A1:A1') - { - // Ensure $pRange is a valid range - if (empty($pRange)) { - $pRange = self::DEFAULT_RANGE; - } - - // Uppercase coordinate - $pRange = strtoupper($pRange); - - // Extract range - if (strpos($pRange, ':') === false) { - $rangeA = $rangeB = $pRange; - } else { - list($rangeA, $rangeB) = explode(':', $pRange); - } - - // Calculate range outer borders - $rangeStart = self::coordinateFromString($rangeA); - $rangeEnd = self::coordinateFromString($rangeB); - - // Translate column into index - $rangeStart[0] = self::columnIndexFromString($rangeStart[0]); - $rangeEnd[0] = self::columnIndexFromString($rangeEnd[0]); - - return array($rangeStart, $rangeEnd); - } - - /** - * Calculate range dimension - * - * @param string $pRange Cell range (e.g. A1:A1) - * @return array Range dimension (width, height) - */ - public static function rangeDimension($pRange = 'A1:A1') - { - // Calculate range outer borders - list($rangeStart, $rangeEnd) = self::rangeBoundaries($pRange); - - return array( ($rangeEnd[0] - $rangeStart[0] + 1), ($rangeEnd[1] - $rangeStart[1] + 1) ); - } - - /** - * Calculate range boundaries - * - * @param string $pRange Cell range (e.g. A1:A1) - * @return array Range coordinates array(Start Cell, End Cell) - * where Start Cell and End Cell are arrays (Column ID, Row Number) - */ - public static function getRangeBoundaries($pRange = 'A1:A1') - { - // Ensure $pRange is a valid range - if (empty($pRange)) { - $pRange = self::DEFAULT_RANGE; - } - - // Uppercase coordinate - $pRange = strtoupper($pRange); - - // Extract range - if (strpos($pRange, ':') === false) { - $rangeA = $rangeB = $pRange; - } else { - list($rangeA, $rangeB) = explode(':', $pRange); - } - - return array( self::coordinateFromString($rangeA), self::coordinateFromString($rangeB)); - } - - /** - * Column index from string - * - * @param string $pString - * @return int Column index (base 1 !!!) - */ - public static function columnIndexFromString($pString = 'A') - { - // Using a lookup cache adds a slight memory overhead, but boosts speed - // caching using a static within the method is faster than a class static, - // though it's additional memory overhead - static $_indexCache = array(); - - if (isset($_indexCache[$pString])) { - return $_indexCache[$pString]; - } - // It's surprising how costly the strtoupper() and ord() calls actually are, so we use a lookup array rather than use ord() - // and make it case insensitive to get rid of the strtoupper() as well. Because it's a static, there's no significant - // memory overhead either - static $_columnLookup = array( - 'A' => 1, 'B' => 2, 'C' => 3, 'D' => 4, 'E' => 5, 'F' => 6, 'G' => 7, 'H' => 8, 'I' => 9, 'J' => 10, 'K' => 11, 'L' => 12, 'M' => 13, - 'N' => 14, 'O' => 15, 'P' => 16, 'Q' => 17, 'R' => 18, 'S' => 19, 'T' => 20, 'U' => 21, 'V' => 22, 'W' => 23, 'X' => 24, 'Y' => 25, 'Z' => 26, - 'a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5, 'f' => 6, 'g' => 7, 'h' => 8, 'i' => 9, 'j' => 10, 'k' => 11, 'l' => 12, 'm' => 13, - 'n' => 14, 'o' => 15, 'p' => 16, 'q' => 17, 'r' => 18, 's' => 19, 't' => 20, 'u' => 21, 'v' => 22, 'w' => 23, 'x' => 24, 'y' => 25, 'z' => 26 - ); - - // We also use the language construct isset() rather than the more costly strlen() function to match the length of $pString - // for improved performance - if (isset($pString{0})) { - if (!isset($pString{1})) { - $_indexCache[$pString] = $_columnLookup[$pString]; - return $_indexCache[$pString]; - } elseif (!isset($pString{2})) { - $_indexCache[$pString] = $_columnLookup[$pString{0}] * 26 + $_columnLookup[$pString{1}]; - return $_indexCache[$pString]; - } elseif (!isset($pString{3})) { - $_indexCache[$pString] = $_columnLookup[$pString{0}] * 676 + $_columnLookup[$pString{1}] * 26 + $_columnLookup[$pString{2}]; - return $_indexCache[$pString]; - } - } - throw new PHPExcel_Exception("Column string index can not be " . ((isset($pString{0})) ? "longer than 3 characters" : "empty")); - } - - /** - * String from columnindex - * - * @param int $pColumnIndex Column index (base 0 !!!) - * @return string - */ - public static function stringFromColumnIndex($pColumnIndex = 0) - { - // Using a lookup cache adds a slight memory overhead, but boosts speed - // caching using a static within the method is faster than a class static, - // though it's additional memory overhead - static $_indexCache = array(); - - if (!isset($_indexCache[$pColumnIndex])) { - // Determine column string - if ($pColumnIndex < 26) { - $_indexCache[$pColumnIndex] = chr(65 + $pColumnIndex); - } elseif ($pColumnIndex < 702) { - $_indexCache[$pColumnIndex] = chr(64 + ($pColumnIndex / 26)) . - chr(65 + $pColumnIndex % 26); - } else { - $_indexCache[$pColumnIndex] = chr(64 + (($pColumnIndex - 26) / 676)) . - chr(65 + ((($pColumnIndex - 26) % 676) / 26)) . - chr(65 + $pColumnIndex % 26); - } - } - return $_indexCache[$pColumnIndex]; - } - - /** - * Extract all cell references in range - * - * @param string $pRange Range (e.g. A1 or A1:C10 or A1:E10 A20:E25) - * @return array Array containing single cell references - */ - public static function extractAllCellReferencesInRange($pRange = 'A1') - { - // Returnvalue - $returnValue = array(); - - // Explode spaces - $cellBlocks = explode(' ', str_replace('$', '', strtoupper($pRange))); - foreach ($cellBlocks as $cellBlock) { - // Single cell? - if (strpos($cellBlock, ':') === false && strpos($cellBlock, ',') === false) { - $returnValue[] = $cellBlock; - continue; - } - - // Range... - $ranges = self::splitRange($cellBlock); - foreach ($ranges as $range) { - // Single cell? - if (!isset($range[1])) { - $returnValue[] = $range[0]; - continue; - } - - // Range... - list($rangeStart, $rangeEnd) = $range; - sscanf($rangeStart, '%[A-Z]%d', $startCol, $startRow); - sscanf($rangeEnd, '%[A-Z]%d', $endCol, $endRow); - ++$endCol; - - // Current data - $currentCol = $startCol; - $currentRow = $startRow; - - // Loop cells - while ($currentCol != $endCol) { - while ($currentRow <= $endRow) { - $returnValue[] = $currentCol.$currentRow; - ++$currentRow; - } - ++$currentCol; - $currentRow = $startRow; - } - } - } - - // Sort the result by column and row - $sortKeys = array(); - foreach (array_unique($returnValue) as $coord) { - sscanf($coord, '%[A-Z]%d', $column, $row); - $sortKeys[sprintf('%3s%09d', $column, $row)] = $coord; - } - ksort($sortKeys); - - // Return value - return array_values($sortKeys); - } - - /** - * Compare 2 cells - * - * @param PHPExcel_Cell $a Cell a - * @param PHPExcel_Cell $b Cell b - * @return int Result of comparison (always -1 or 1, never zero!) - */ - public static function compareCells(PHPExcel_Cell $a, PHPExcel_Cell $b) - { - if ($a->getRow() < $b->getRow()) { - return -1; - } elseif ($a->getRow() > $b->getRow()) { - return 1; - } elseif (self::columnIndexFromString($a->getColumn()) < self::columnIndexFromString($b->getColumn())) { - return -1; - } else { - return 1; - } - } - - /** - * Get value binder to use - * - * @return PHPExcel_Cell_IValueBinder - */ - public static function getValueBinder() - { - if (self::$valueBinder === null) { - self::$valueBinder = new PHPExcel_Cell_DefaultValueBinder(); - } - - return self::$valueBinder; - } - - /** - * Set value binder to use - * - * @param PHPExcel_Cell_IValueBinder $binder - * @throws PHPExcel_Exception - */ - public static function setValueBinder(PHPExcel_Cell_IValueBinder $binder = null) - { - if ($binder === null) { - throw new PHPExcel_Exception("A PHPExcel_Cell_IValueBinder is required for PHPExcel to function correctly."); - } - - self::$valueBinder = $binder; - } - - /** - * Implement PHP __clone to create a deep clone, not just a shallow copy. - */ - public function __clone() - { - $vars = get_object_vars($this); - foreach ($vars as $key => $value) { - if ((is_object($value)) && ($key != 'parent')) { - $this->$key = clone $value; - } else { - $this->$key = $value; - } - } - } - - /** - * Get index to cellXf - * - * @return int - */ - public function getXfIndex() - { - return $this->xfIndex; - } - - /** - * Set index to cellXf - * - * @param int $pValue - * @return PHPExcel_Cell - */ - public function setXfIndex($pValue = 0) - { - $this->xfIndex = $pValue; - - return $this->notifyCacheController(); - } - - /** - * @deprecated Since version 1.7.8 for planned changes to cell for array formula handling - */ - public function setFormulaAttributes($pAttributes) - { - $this->formulaAttributes = $pAttributes; - return $this; - } - - /** - * @deprecated Since version 1.7.8 for planned changes to cell for array formula handling - */ - public function getFormulaAttributes() - { - return $this->formulaAttributes; - } - - /** - * Convert to string - * - * @return string - */ - public function __toString() - { - return (string) $this->getValue(); - } -} diff --git a/application/third_party/PHPExcel/Cell/AdvancedValueBinder.php b/application/third_party/PHPExcel/Cell/AdvancedValueBinder.php deleted file mode 100644 index 061d04eb..00000000 --- a/application/third_party/PHPExcel/Cell/AdvancedValueBinder.php +++ /dev/null @@ -1,187 +0,0 @@ -setValueExplicit(true, PHPExcel_Cell_DataType::TYPE_BOOL); - return true; - } elseif ($value == PHPExcel_Calculation::getFALSE()) { - $cell->setValueExplicit(false, PHPExcel_Cell_DataType::TYPE_BOOL); - return true; - } - - // Check for number in scientific format - if (preg_match('/^'.PHPExcel_Calculation::CALCULATION_REGEXP_NUMBER.'$/', $value)) { - $cell->setValueExplicit((float) $value, PHPExcel_Cell_DataType::TYPE_NUMERIC); - return true; - } - - // Check for fraction - if (preg_match('/^([+-]?)\s*([0-9]+)\s?\/\s*([0-9]+)$/', $value, $matches)) { - // Convert value to number - $value = $matches[2] / $matches[3]; - if ($matches[1] == '-') { - $value = 0 - $value; - } - $cell->setValueExplicit((float) $value, PHPExcel_Cell_DataType::TYPE_NUMERIC); - // Set style - $cell->getWorksheet()->getStyle($cell->getCoordinate()) - ->getNumberFormat()->setFormatCode('??/??'); - return true; - } elseif (preg_match('/^([+-]?)([0-9]*) +([0-9]*)\s?\/\s*([0-9]*)$/', $value, $matches)) { - // Convert value to number - $value = $matches[2] + ($matches[3] / $matches[4]); - if ($matches[1] == '-') { - $value = 0 - $value; - } - $cell->setValueExplicit((float) $value, PHPExcel_Cell_DataType::TYPE_NUMERIC); - // Set style - $cell->getWorksheet()->getStyle($cell->getCoordinate()) - ->getNumberFormat()->setFormatCode('# ??/??'); - return true; - } - - // Check for percentage - if (preg_match('/^\-?[0-9]*\.?[0-9]*\s?\%$/', $value)) { - // Convert value to number - $value = (float) str_replace('%', '', $value) / 100; - $cell->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_NUMERIC); - // Set style - $cell->getWorksheet()->getStyle($cell->getCoordinate()) - ->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE_00); - return true; - } - - // Check for currency - $currencyCode = PHPExcel_Shared_String::getCurrencyCode(); - $decimalSeparator = PHPExcel_Shared_String::getDecimalSeparator(); - $thousandsSeparator = PHPExcel_Shared_String::getThousandsSeparator(); - if (preg_match('/^'.preg_quote($currencyCode).' *(\d{1,3}('.preg_quote($thousandsSeparator).'\d{3})*|(\d+))('.preg_quote($decimalSeparator).'\d{2})?$/', $value)) { - // Convert value to number - $value = (float) trim(str_replace(array($currencyCode, $thousandsSeparator, $decimalSeparator), array('', '', '.'), $value)); - $cell->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_NUMERIC); - // Set style - $cell->getWorksheet()->getStyle($cell->getCoordinate()) - ->getNumberFormat()->setFormatCode( - str_replace('$', $currencyCode, PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_USD_SIMPLE) - ); - return true; - } elseif (preg_match('/^\$ *(\d{1,3}(\,\d{3})*|(\d+))(\.\d{2})?$/', $value)) { - // Convert value to number - $value = (float) trim(str_replace(array('$',','), '', $value)); - $cell->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_NUMERIC); - // Set style - $cell->getWorksheet()->getStyle($cell->getCoordinate()) - ->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_USD_SIMPLE); - return true; - } - - // Check for time without seconds e.g. '9:45', '09:45' - if (preg_match('/^(\d|[0-1]\d|2[0-3]):[0-5]\d$/', $value)) { - // Convert value to number - list($h, $m) = explode(':', $value); - $days = $h / 24 + $m / 1440; - $cell->setValueExplicit($days, PHPExcel_Cell_DataType::TYPE_NUMERIC); - // Set style - $cell->getWorksheet()->getStyle($cell->getCoordinate()) - ->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME3); - return true; - } - - // Check for time with seconds '9:45:59', '09:45:59' - if (preg_match('/^(\d|[0-1]\d|2[0-3]):[0-5]\d:[0-5]\d$/', $value)) { - // Convert value to number - list($h, $m, $s) = explode(':', $value); - $days = $h / 24 + $m / 1440 + $s / 86400; - // Convert value to number - $cell->setValueExplicit($days, PHPExcel_Cell_DataType::TYPE_NUMERIC); - // Set style - $cell->getWorksheet()->getStyle($cell->getCoordinate()) - ->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME4); - return true; - } - - // Check for datetime, e.g. '2008-12-31', '2008-12-31 15:59', '2008-12-31 15:59:10' - if (($d = PHPExcel_Shared_Date::stringToExcel($value)) !== false) { - // Convert value to number - $cell->setValueExplicit($d, PHPExcel_Cell_DataType::TYPE_NUMERIC); - // Determine style. Either there is a time part or not. Look for ':' - if (strpos($value, ':') !== false) { - $formatCode = 'yyyy-mm-dd h:mm'; - } else { - $formatCode = 'yyyy-mm-dd'; - } - $cell->getWorksheet()->getStyle($cell->getCoordinate()) - ->getNumberFormat()->setFormatCode($formatCode); - return true; - } - - // Check for newline character "\n" - if (strpos($value, "\n") !== false) { - $value = PHPExcel_Shared_String::SanitizeUTF8($value); - $cell->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_STRING); - // Set style - $cell->getWorksheet()->getStyle($cell->getCoordinate()) - ->getAlignment()->setWrapText(true); - return true; - } - } - - // Not bound yet? Use parent... - return parent::bindValue($cell, $value); - } -} diff --git a/application/third_party/PHPExcel/Cell/DataType.php b/application/third_party/PHPExcel/Cell/DataType.php deleted file mode 100644 index fc010e65..00000000 --- a/application/third_party/PHPExcel/Cell/DataType.php +++ /dev/null @@ -1,115 +0,0 @@ - 0, - '#DIV/0!' => 1, - '#VALUE!' => 2, - '#REF!' => 3, - '#NAME?' => 4, - '#NUM!' => 5, - '#N/A' => 6 - ); - - /** - * Get list of error codes - * - * @return array - */ - public static function getErrorCodes() - { - return self::$errorCodes; - } - - /** - * DataType for value - * - * @deprecated Replaced by PHPExcel_Cell_IValueBinder infrastructure, will be removed in version 1.8.0 - * @param mixed $pValue - * @return string - */ - public static function dataTypeForValue($pValue = null) - { - return PHPExcel_Cell_DefaultValueBinder::dataTypeForValue($pValue); - } - - /** - * Check a string that it satisfies Excel requirements - * - * @param mixed Value to sanitize to an Excel string - * @return mixed Sanitized value - */ - public static function checkString($pValue = null) - { - if ($pValue instanceof PHPExcel_RichText) { - // TODO: Sanitize Rich-Text string (max. character count is 32,767) - return $pValue; - } - - // string must never be longer than 32,767 characters, truncate if necessary - $pValue = PHPExcel_Shared_String::Substring($pValue, 0, 32767); - - // we require that newline is represented as "\n" in core, not as "\r\n" or "\r" - $pValue = str_replace(array("\r\n", "\r"), "\n", $pValue); - - return $pValue; - } - - /** - * Check a value that it is a valid error code - * - * @param mixed Value to sanitize to an Excel error code - * @return string Sanitized value - */ - public static function checkErrorCode($pValue = null) - { - $pValue = (string) $pValue; - - if (!array_key_exists($pValue, self::$errorCodes)) { - $pValue = '#NULL!'; - } - - return $pValue; - } -} diff --git a/application/third_party/PHPExcel/Cell/DataValidation.php b/application/third_party/PHPExcel/Cell/DataValidation.php deleted file mode 100644 index 9883633e..00000000 --- a/application/third_party/PHPExcel/Cell/DataValidation.php +++ /dev/null @@ -1,492 +0,0 @@ -formula1 = ''; - $this->formula2 = ''; - $this->type = PHPExcel_Cell_DataValidation::TYPE_NONE; - $this->errorStyle = PHPExcel_Cell_DataValidation::STYLE_STOP; - $this->operator = ''; - $this->allowBlank = false; - $this->showDropDown = false; - $this->showInputMessage = false; - $this->showErrorMessage = false; - $this->errorTitle = ''; - $this->error = ''; - $this->promptTitle = ''; - $this->prompt = ''; - } - - /** - * Get Formula 1 - * - * @return string - */ - public function getFormula1() - { - return $this->formula1; - } - - /** - * Set Formula 1 - * - * @param string $value - * @return PHPExcel_Cell_DataValidation - */ - public function setFormula1($value = '') - { - $this->formula1 = $value; - return $this; - } - - /** - * Get Formula 2 - * - * @return string - */ - public function getFormula2() - { - return $this->formula2; - } - - /** - * Set Formula 2 - * - * @param string $value - * @return PHPExcel_Cell_DataValidation - */ - public function setFormula2($value = '') - { - $this->formula2 = $value; - return $this; - } - - /** - * Get Type - * - * @return string - */ - public function getType() - { - return $this->type; - } - - /** - * Set Type - * - * @param string $value - * @return PHPExcel_Cell_DataValidation - */ - public function setType($value = PHPExcel_Cell_DataValidation::TYPE_NONE) - { - $this->type = $value; - return $this; - } - - /** - * Get Error style - * - * @return string - */ - public function getErrorStyle() - { - return $this->errorStyle; - } - - /** - * Set Error style - * - * @param string $value - * @return PHPExcel_Cell_DataValidation - */ - public function setErrorStyle($value = PHPExcel_Cell_DataValidation::STYLE_STOP) - { - $this->errorStyle = $value; - return $this; - } - - /** - * Get Operator - * - * @return string - */ - public function getOperator() - { - return $this->operator; - } - - /** - * Set Operator - * - * @param string $value - * @return PHPExcel_Cell_DataValidation - */ - public function setOperator($value = '') - { - $this->operator = $value; - return $this; - } - - /** - * Get Allow Blank - * - * @return boolean - */ - public function getAllowBlank() - { - return $this->allowBlank; - } - - /** - * Set Allow Blank - * - * @param boolean $value - * @return PHPExcel_Cell_DataValidation - */ - public function setAllowBlank($value = false) - { - $this->allowBlank = $value; - return $this; - } - - /** - * Get Show DropDown - * - * @return boolean - */ - public function getShowDropDown() - { - return $this->showDropDown; - } - - /** - * Set Show DropDown - * - * @param boolean $value - * @return PHPExcel_Cell_DataValidation - */ - public function setShowDropDown($value = false) - { - $this->showDropDown = $value; - return $this; - } - - /** - * Get Show InputMessage - * - * @return boolean - */ - public function getShowInputMessage() - { - return $this->showInputMessage; - } - - /** - * Set Show InputMessage - * - * @param boolean $value - * @return PHPExcel_Cell_DataValidation - */ - public function setShowInputMessage($value = false) - { - $this->showInputMessage = $value; - return $this; - } - - /** - * Get Show ErrorMessage - * - * @return boolean - */ - public function getShowErrorMessage() - { - return $this->showErrorMessage; - } - - /** - * Set Show ErrorMessage - * - * @param boolean $value - * @return PHPExcel_Cell_DataValidation - */ - public function setShowErrorMessage($value = false) - { - $this->showErrorMessage = $value; - return $this; - } - - /** - * Get Error title - * - * @return string - */ - public function getErrorTitle() - { - return $this->errorTitle; - } - - /** - * Set Error title - * - * @param string $value - * @return PHPExcel_Cell_DataValidation - */ - public function setErrorTitle($value = '') - { - $this->errorTitle = $value; - return $this; - } - - /** - * Get Error - * - * @return string - */ - public function getError() - { - return $this->error; - } - - /** - * Set Error - * - * @param string $value - * @return PHPExcel_Cell_DataValidation - */ - public function setError($value = '') - { - $this->error = $value; - return $this; - } - - /** - * Get Prompt title - * - * @return string - */ - public function getPromptTitle() - { - return $this->promptTitle; - } - - /** - * Set Prompt title - * - * @param string $value - * @return PHPExcel_Cell_DataValidation - */ - public function setPromptTitle($value = '') - { - $this->promptTitle = $value; - return $this; - } - - /** - * Get Prompt - * - * @return string - */ - public function getPrompt() - { - return $this->prompt; - } - - /** - * Set Prompt - * - * @param string $value - * @return PHPExcel_Cell_DataValidation - */ - public function setPrompt($value = '') - { - $this->prompt = $value; - return $this; - } - - /** - * Get hash code - * - * @return string Hash code - */ - public function getHashCode() - { - return md5( - $this->formula1 . - $this->formula2 . - $this->type = PHPExcel_Cell_DataValidation::TYPE_NONE . - $this->errorStyle = PHPExcel_Cell_DataValidation::STYLE_STOP . - $this->operator . - ($this->allowBlank ? 't' : 'f') . - ($this->showDropDown ? 't' : 'f') . - ($this->showInputMessage ? 't' : 'f') . - ($this->showErrorMessage ? 't' : 'f') . - $this->errorTitle . - $this->error . - $this->promptTitle . - $this->prompt . - __CLASS__ - ); - } - - /** - * Implement PHP __clone to create a deep clone, not just a shallow copy. - */ - public function __clone() - { - $vars = get_object_vars($this); - foreach ($vars as $key => $value) { - if (is_object($value)) { - $this->$key = clone $value; - } else { - $this->$key = $value; - } - } - } -} diff --git a/application/third_party/PHPExcel/Cell/DefaultValueBinder.php b/application/third_party/PHPExcel/Cell/DefaultValueBinder.php deleted file mode 100644 index dc19e6c4..00000000 --- a/application/third_party/PHPExcel/Cell/DefaultValueBinder.php +++ /dev/null @@ -1,102 +0,0 @@ -format('Y-m-d H:i:s'); - } elseif (!($value instanceof PHPExcel_RichText)) { - $value = (string) $value; - } - } - - // Set value explicit - $cell->setValueExplicit($value, self::dataTypeForValue($value)); - - // Done! - return true; - } - - /** - * DataType for value - * - * @param mixed $pValue - * @return string - */ - public static function dataTypeForValue($pValue = null) - { - // Match the value against a few data types - if ($pValue === null) { - return PHPExcel_Cell_DataType::TYPE_NULL; - } elseif ($pValue === '') { - return PHPExcel_Cell_DataType::TYPE_STRING; - } elseif ($pValue instanceof PHPExcel_RichText) { - return PHPExcel_Cell_DataType::TYPE_INLINE; - } elseif ($pValue{0} === '=' && strlen($pValue) > 1) { - return PHPExcel_Cell_DataType::TYPE_FORMULA; - } elseif (is_bool($pValue)) { - return PHPExcel_Cell_DataType::TYPE_BOOL; - } elseif (is_float($pValue) || is_int($pValue)) { - return PHPExcel_Cell_DataType::TYPE_NUMERIC; - } elseif (preg_match('/^[\+\-]?([0-9]+\\.?[0-9]*|[0-9]*\\.?[0-9]+)([Ee][\-\+]?[0-2]?\d{1,3})?$/', $pValue)) { - $tValue = ltrim($pValue, '+-'); - if (is_string($pValue) && $tValue{0} === '0' && strlen($tValue) > 1 && $tValue{1} !== '.') { - return PHPExcel_Cell_DataType::TYPE_STRING; - } elseif ((strpos($pValue, '.') === false) && ($pValue > PHP_INT_MAX)) { - return PHPExcel_Cell_DataType::TYPE_STRING; - } - return PHPExcel_Cell_DataType::TYPE_NUMERIC; - } elseif (is_string($pValue) && array_key_exists($pValue, PHPExcel_Cell_DataType::getErrorCodes())) { - return PHPExcel_Cell_DataType::TYPE_ERROR; - } - - return PHPExcel_Cell_DataType::TYPE_STRING; - } -} diff --git a/application/third_party/PHPExcel/Cell/Hyperlink.php b/application/third_party/PHPExcel/Cell/Hyperlink.php deleted file mode 100644 index daab54c8..00000000 --- a/application/third_party/PHPExcel/Cell/Hyperlink.php +++ /dev/null @@ -1,124 +0,0 @@ -url = $pUrl; - $this->tooltip = $pTooltip; - } - - /** - * Get URL - * - * @return string - */ - public function getUrl() - { - return $this->url; - } - - /** - * Set URL - * - * @param string $value - * @return PHPExcel_Cell_Hyperlink - */ - public function setUrl($value = '') - { - $this->url = $value; - return $this; - } - - /** - * Get tooltip - * - * @return string - */ - public function getTooltip() - { - return $this->tooltip; - } - - /** - * Set tooltip - * - * @param string $value - * @return PHPExcel_Cell_Hyperlink - */ - public function setTooltip($value = '') - { - $this->tooltip = $value; - return $this; - } - - /** - * Is this hyperlink internal? (to another worksheet) - * - * @return boolean - */ - public function isInternal() - { - return strpos($this->url, 'sheet://') !== false; - } - - /** - * Get hash code - * - * @return string Hash code - */ - public function getHashCode() - { - return md5( - $this->url . - $this->tooltip . - __CLASS__ - ); - } -} diff --git a/application/third_party/PHPExcel/Cell/IValueBinder.php b/application/third_party/PHPExcel/Cell/IValueBinder.php deleted file mode 100644 index de2d0ac0..00000000 --- a/application/third_party/PHPExcel/Cell/IValueBinder.php +++ /dev/null @@ -1,47 +0,0 @@ -name = $name; - $this->title = $title; - $this->legend = $legend; - $this->xAxisLabel = $xAxisLabel; - $this->yAxisLabel = $yAxisLabel; - $this->plotArea = $plotArea; - $this->plotVisibleOnly = $plotVisibleOnly; - $this->displayBlanksAs = $displayBlanksAs; - $this->xAxis = $xAxis; - $this->yAxis = $yAxis; - $this->majorGridlines = $majorGridlines; - $this->minorGridlines = $minorGridlines; - } - - /** - * Get Name - * - * @return string - */ - public function getName() - { - return $this->name; - } - - /** - * Get Worksheet - * - * @return PHPExcel_Worksheet - */ - public function getWorksheet() - { - return $this->worksheet; - } - - /** - * Set Worksheet - * - * @param PHPExcel_Worksheet $pValue - * @throws PHPExcel_Chart_Exception - * @return PHPExcel_Chart - */ - public function setWorksheet(PHPExcel_Worksheet $pValue = null) - { - $this->worksheet = $pValue; - - return $this; - } - - /** - * Get Title - * - * @return PHPExcel_Chart_Title - */ - public function getTitle() - { - return $this->title; - } - - /** - * Set Title - * - * @param PHPExcel_Chart_Title $title - * @return PHPExcel_Chart - */ - public function setTitle(PHPExcel_Chart_Title $title) - { - $this->title = $title; - - return $this; - } - - /** - * Get Legend - * - * @return PHPExcel_Chart_Legend - */ - public function getLegend() - { - return $this->legend; - } - - /** - * Set Legend - * - * @param PHPExcel_Chart_Legend $legend - * @return PHPExcel_Chart - */ - public function setLegend(PHPExcel_Chart_Legend $legend) - { - $this->legend = $legend; - - return $this; - } - - /** - * Get X-Axis Label - * - * @return PHPExcel_Chart_Title - */ - public function getXAxisLabel() - { - return $this->xAxisLabel; - } - - /** - * Set X-Axis Label - * - * @param PHPExcel_Chart_Title $label - * @return PHPExcel_Chart - */ - public function setXAxisLabel(PHPExcel_Chart_Title $label) - { - $this->xAxisLabel = $label; - - return $this; - } - - /** - * Get Y-Axis Label - * - * @return PHPExcel_Chart_Title - */ - public function getYAxisLabel() - { - return $this->yAxisLabel; - } - - /** - * Set Y-Axis Label - * - * @param PHPExcel_Chart_Title $label - * @return PHPExcel_Chart - */ - public function setYAxisLabel(PHPExcel_Chart_Title $label) - { - $this->yAxisLabel = $label; - - return $this; - } - - /** - * Get Plot Area - * - * @return PHPExcel_Chart_PlotArea - */ - public function getPlotArea() - { - return $this->plotArea; - } - - /** - * Get Plot Visible Only - * - * @return boolean - */ - public function getPlotVisibleOnly() - { - return $this->plotVisibleOnly; - } - - /** - * Set Plot Visible Only - * - * @param boolean $plotVisibleOnly - * @return PHPExcel_Chart - */ - public function setPlotVisibleOnly($plotVisibleOnly = true) - { - $this->plotVisibleOnly = $plotVisibleOnly; - - return $this; - } - - /** - * Get Display Blanks as - * - * @return string - */ - public function getDisplayBlanksAs() - { - return $this->displayBlanksAs; - } - - /** - * Set Display Blanks as - * - * @param string $displayBlanksAs - * @return PHPExcel_Chart - */ - public function setDisplayBlanksAs($displayBlanksAs = '0') - { - $this->displayBlanksAs = $displayBlanksAs; - } - - - /** - * Get yAxis - * - * @return PHPExcel_Chart_Axis - */ - public function getChartAxisY() - { - if ($this->yAxis !== null) { - return $this->yAxis; - } - - return new PHPExcel_Chart_Axis(); - } - - /** - * Get xAxis - * - * @return PHPExcel_Chart_Axis - */ - public function getChartAxisX() - { - if ($this->xAxis !== null) { - return $this->xAxis; - } - - return new PHPExcel_Chart_Axis(); - } - - /** - * Get Major Gridlines - * - * @return PHPExcel_Chart_GridLines - */ - public function getMajorGridlines() - { - if ($this->majorGridlines !== null) { - return $this->majorGridlines; - } - - return new PHPExcel_Chart_GridLines(); - } - - /** - * Get Minor Gridlines - * - * @return PHPExcel_Chart_GridLines - */ - public function getMinorGridlines() - { - if ($this->minorGridlines !== null) { - return $this->minorGridlines; - } - - return new PHPExcel_Chart_GridLines(); - } - - - /** - * Set the Top Left position for the chart - * - * @param string $cell - * @param integer $xOffset - * @param integer $yOffset - * @return PHPExcel_Chart - */ - public function setTopLeftPosition($cell, $xOffset = null, $yOffset = null) - { - $this->topLeftCellRef = $cell; - if (!is_null($xOffset)) { - $this->setTopLeftXOffset($xOffset); - } - if (!is_null($yOffset)) { - $this->setTopLeftYOffset($yOffset); - } - - return $this; - } - - /** - * Get the top left position of the chart - * - * @return array an associative array containing the cell address, X-Offset and Y-Offset from the top left of that cell - */ - public function getTopLeftPosition() - { - return array( - 'cell' => $this->topLeftCellRef, - 'xOffset' => $this->topLeftXOffset, - 'yOffset' => $this->topLeftYOffset - ); - } - - /** - * Get the cell address where the top left of the chart is fixed - * - * @return string - */ - public function getTopLeftCell() - { - return $this->topLeftCellRef; - } - - /** - * Set the Top Left cell position for the chart - * - * @param string $cell - * @return PHPExcel_Chart - */ - public function setTopLeftCell($cell) - { - $this->topLeftCellRef = $cell; - - return $this; - } - - /** - * Set the offset position within the Top Left cell for the chart - * - * @param integer $xOffset - * @param integer $yOffset - * @return PHPExcel_Chart - */ - public function setTopLeftOffset($xOffset = null, $yOffset = null) - { - if (!is_null($xOffset)) { - $this->setTopLeftXOffset($xOffset); - } - if (!is_null($yOffset)) { - $this->setTopLeftYOffset($yOffset); - } - - return $this; - } - - /** - * Get the offset position within the Top Left cell for the chart - * - * @return integer[] - */ - public function getTopLeftOffset() - { - return array( - 'X' => $this->topLeftXOffset, - 'Y' => $this->topLeftYOffset - ); - } - - public function setTopLeftXOffset($xOffset) - { - $this->topLeftXOffset = $xOffset; - - return $this; - } - - public function getTopLeftXOffset() - { - return $this->topLeftXOffset; - } - - public function setTopLeftYOffset($yOffset) - { - $this->topLeftYOffset = $yOffset; - - return $this; - } - - public function getTopLeftYOffset() - { - return $this->topLeftYOffset; - } - - /** - * Set the Bottom Right position of the chart - * - * @param string $cell - * @param integer $xOffset - * @param integer $yOffset - * @return PHPExcel_Chart - */ - public function setBottomRightPosition($cell, $xOffset = null, $yOffset = null) - { - $this->bottomRightCellRef = $cell; - if (!is_null($xOffset)) { - $this->setBottomRightXOffset($xOffset); - } - if (!is_null($yOffset)) { - $this->setBottomRightYOffset($yOffset); - } - - return $this; - } - - /** - * Get the bottom right position of the chart - * - * @return array an associative array containing the cell address, X-Offset and Y-Offset from the top left of that cell - */ - public function getBottomRightPosition() - { - return array( - 'cell' => $this->bottomRightCellRef, - 'xOffset' => $this->bottomRightXOffset, - 'yOffset' => $this->bottomRightYOffset - ); - } - - public function setBottomRightCell($cell) - { - $this->bottomRightCellRef = $cell; - - return $this; - } - - /** - * Get the cell address where the bottom right of the chart is fixed - * - * @return string - */ - public function getBottomRightCell() - { - return $this->bottomRightCellRef; - } - - /** - * Set the offset position within the Bottom Right cell for the chart - * - * @param integer $xOffset - * @param integer $yOffset - * @return PHPExcel_Chart - */ - public function setBottomRightOffset($xOffset = null, $yOffset = null) - { - if (!is_null($xOffset)) { - $this->setBottomRightXOffset($xOffset); - } - if (!is_null($yOffset)) { - $this->setBottomRightYOffset($yOffset); - } - - return $this; - } - - /** - * Get the offset position within the Bottom Right cell for the chart - * - * @return integer[] - */ - public function getBottomRightOffset() - { - return array( - 'X' => $this->bottomRightXOffset, - 'Y' => $this->bottomRightYOffset - ); - } - - public function setBottomRightXOffset($xOffset) - { - $this->bottomRightXOffset = $xOffset; - - return $this; - } - - public function getBottomRightXOffset() - { - return $this->bottomRightXOffset; - } - - public function setBottomRightYOffset($yOffset) - { - $this->bottomRightYOffset = $yOffset; - - return $this; - } - - public function getBottomRightYOffset() - { - return $this->bottomRightYOffset; - } - - - public function refresh() - { - if ($this->worksheet !== null) { - $this->plotArea->refresh($this->worksheet); - } - } - - public function render($outputDestination = null) - { - $libraryName = PHPExcel_Settings::getChartRendererName(); - if (is_null($libraryName)) { - return false; - } - // Ensure that data series values are up-to-date before we render - $this->refresh(); - - $libraryPath = PHPExcel_Settings::getChartRendererPath(); - $includePath = str_replace('\\', '/', get_include_path()); - $rendererPath = str_replace('\\', '/', $libraryPath); - if (strpos($rendererPath, $includePath) === false) { - set_include_path(get_include_path() . PATH_SEPARATOR . $libraryPath); - } - - $rendererName = 'PHPExcel_Chart_Renderer_'.$libraryName; - $renderer = new $rendererName($this); - - if ($outputDestination == 'php://output') { - $outputDestination = null; - } - return $renderer->render($outputDestination); - } -} diff --git a/application/third_party/PHPExcel/Chart/Axis.php b/application/third_party/PHPExcel/Chart/Axis.php deleted file mode 100644 index 9aeafc6a..00000000 --- a/application/third_party/PHPExcel/Chart/Axis.php +++ /dev/null @@ -1,561 +0,0 @@ - self::FORMAT_CODE_GENERAL, - 'source_linked' => 1 - ); - - /** - * Axis Options - * - * @var array of mixed - */ - private $axisOptions = array( - 'minimum' => null, - 'maximum' => null, - 'major_unit' => null, - 'minor_unit' => null, - 'orientation' => self::ORIENTATION_NORMAL, - 'minor_tick_mark' => self::TICK_MARK_NONE, - 'major_tick_mark' => self::TICK_MARK_NONE, - 'axis_labels' => self::AXIS_LABELS_NEXT_TO, - 'horizontal_crosses' => self::HORIZONTAL_CROSSES_AUTOZERO, - 'horizontal_crosses_value' => null - ); - - /** - * Fill Properties - * - * @var array of mixed - */ - private $fillProperties = array( - 'type' => self::EXCEL_COLOR_TYPE_ARGB, - 'value' => null, - 'alpha' => 0 - ); - - /** - * Line Properties - * - * @var array of mixed - */ - private $lineProperties = array( - 'type' => self::EXCEL_COLOR_TYPE_ARGB, - 'value' => null, - 'alpha' => 0 - ); - - /** - * Line Style Properties - * - * @var array of mixed - */ - private $lineStyleProperties = array( - 'width' => '9525', - 'compound' => self::LINE_STYLE_COMPOUND_SIMPLE, - 'dash' => self::LINE_STYLE_DASH_SOLID, - 'cap' => self::LINE_STYLE_CAP_FLAT, - 'join' => self::LINE_STYLE_JOIN_BEVEL, - 'arrow' => array( - 'head' => array( - 'type' => self::LINE_STYLE_ARROW_TYPE_NOARROW, - 'size' => self::LINE_STYLE_ARROW_SIZE_5 - ), - 'end' => array( - 'type' => self::LINE_STYLE_ARROW_TYPE_NOARROW, - 'size' => self::LINE_STYLE_ARROW_SIZE_8 - ), - ) - ); - - /** - * Shadow Properties - * - * @var array of mixed - */ - private $shadowProperties = array( - 'presets' => self::SHADOW_PRESETS_NOSHADOW, - 'effect' => null, - 'color' => array( - 'type' => self::EXCEL_COLOR_TYPE_STANDARD, - 'value' => 'black', - 'alpha' => 40, - ), - 'size' => array( - 'sx' => null, - 'sy' => null, - 'kx' => null - ), - 'blur' => null, - 'direction' => null, - 'distance' => null, - 'algn' => null, - 'rotWithShape' => null - ); - - /** - * Glow Properties - * - * @var array of mixed - */ - private $glowProperties = array( - 'size' => null, - 'color' => array( - 'type' => self::EXCEL_COLOR_TYPE_STANDARD, - 'value' => 'black', - 'alpha' => 40 - ) - ); - - /** - * Soft Edge Properties - * - * @var array of mixed - */ - private $softEdges = array( - 'size' => null - ); - - /** - * Get Series Data Type - * - * @return string - */ - public function setAxisNumberProperties($format_code) - { - $this->axisNumber['format'] = (string) $format_code; - $this->axisNumber['source_linked'] = 0; - } - - /** - * Get Axis Number Format Data Type - * - * @return string - */ - public function getAxisNumberFormat() - { - return $this->axisNumber['format']; - } - - /** - * Get Axis Number Source Linked - * - * @return string - */ - public function getAxisNumberSourceLinked() - { - return (string) $this->axisNumber['source_linked']; - } - - /** - * Set Axis Options Properties - * - * @param string $axis_labels - * @param string $horizontal_crosses_value - * @param string $horizontal_crosses - * @param string $axis_orientation - * @param string $major_tmt - * @param string $minor_tmt - * @param string $minimum - * @param string $maximum - * @param string $major_unit - * @param string $minor_unit - * - */ - public function setAxisOptionsProperties($axis_labels, $horizontal_crosses_value = null, $horizontal_crosses = null, $axis_orientation = null, $major_tmt = null, $minor_tmt = null, $minimum = null, $maximum = null, $major_unit = null, $minor_unit = null) - { - $this->axisOptions['axis_labels'] = (string) $axis_labels; - ($horizontal_crosses_value !== null) ? $this->axisOptions['horizontal_crosses_value'] = (string) $horizontal_crosses_value : null; - ($horizontal_crosses !== null) ? $this->axisOptions['horizontal_crosses'] = (string) $horizontal_crosses : null; - ($axis_orientation !== null) ? $this->axisOptions['orientation'] = (string) $axis_orientation : null; - ($major_tmt !== null) ? $this->axisOptions['major_tick_mark'] = (string) $major_tmt : null; - ($minor_tmt !== null) ? $this->axisOptions['minor_tick_mark'] = (string) $minor_tmt : null; - ($minor_tmt !== null) ? $this->axisOptions['minor_tick_mark'] = (string) $minor_tmt : null; - ($minimum !== null) ? $this->axisOptions['minimum'] = (string) $minimum : null; - ($maximum !== null) ? $this->axisOptions['maximum'] = (string) $maximum : null; - ($major_unit !== null) ? $this->axisOptions['major_unit'] = (string) $major_unit : null; - ($minor_unit !== null) ? $this->axisOptions['minor_unit'] = (string) $minor_unit : null; - } - - /** - * Get Axis Options Property - * - * @param string $property - * - * @return string - */ - public function getAxisOptionsProperty($property) - { - return $this->axisOptions[$property]; - } - - /** - * Set Axis Orientation Property - * - * @param string $orientation - * - */ - public function setAxisOrientation($orientation) - { - $this->orientation = (string) $orientation; - } - - /** - * Set Fill Property - * - * @param string $color - * @param int $alpha - * @param string $type - * - */ - public function setFillParameters($color, $alpha = 0, $type = self::EXCEL_COLOR_TYPE_ARGB) - { - $this->fillProperties = $this->setColorProperties($color, $alpha, $type); - } - - /** - * Set Line Property - * - * @param string $color - * @param int $alpha - * @param string $type - * - */ - public function setLineParameters($color, $alpha = 0, $type = self::EXCEL_COLOR_TYPE_ARGB) - { - $this->lineProperties = $this->setColorProperties($color, $alpha, $type); - } - - /** - * Get Fill Property - * - * @param string $property - * - * @return string - */ - public function getFillProperty($property) - { - return $this->fillProperties[$property]; - } - - /** - * Get Line Property - * - * @param string $property - * - * @return string - */ - public function getLineProperty($property) - { - return $this->lineProperties[$property]; - } - - /** - * Set Line Style Properties - * - * @param float $line_width - * @param string $compound_type - * @param string $dash_type - * @param string $cap_type - * @param string $join_type - * @param string $head_arrow_type - * @param string $head_arrow_size - * @param string $end_arrow_type - * @param string $end_arrow_size - * - */ - public function setLineStyleProperties($line_width = null, $compound_type = null, $dash_type = null, $cap_type = null, $join_type = null, $head_arrow_type = null, $head_arrow_size = null, $end_arrow_type = null, $end_arrow_size = null) - { - (!is_null($line_width)) ? $this->lineStyleProperties['width'] = $this->getExcelPointsWidth((float) $line_width) : null; - (!is_null($compound_type)) ? $this->lineStyleProperties['compound'] = (string) $compound_type : null; - (!is_null($dash_type)) ? $this->lineStyleProperties['dash'] = (string) $dash_type : null; - (!is_null($cap_type)) ? $this->lineStyleProperties['cap'] = (string) $cap_type : null; - (!is_null($join_type)) ? $this->lineStyleProperties['join'] = (string) $join_type : null; - (!is_null($head_arrow_type)) ? $this->lineStyleProperties['arrow']['head']['type'] = (string) $head_arrow_type : null; - (!is_null($head_arrow_size)) ? $this->lineStyleProperties['arrow']['head']['size'] = (string) $head_arrow_size : null; - (!is_null($end_arrow_type)) ? $this->lineStyleProperties['arrow']['end']['type'] = (string) $end_arrow_type : null; - (!is_null($end_arrow_size)) ? $this->lineStyleProperties['arrow']['end']['size'] = (string) $end_arrow_size : null; - } - - /** - * Get Line Style Property - * - * @param array|string $elements - * - * @return string - */ - public function getLineStyleProperty($elements) - { - return $this->getArrayElementsValue($this->lineStyleProperties, $elements); - } - - /** - * Get Line Style Arrow Excel Width - * - * @param string $arrow - * - * @return string - */ - public function getLineStyleArrowWidth($arrow) - { - return $this->getLineStyleArrowSize($this->lineStyleProperties['arrow'][$arrow]['size'], 'w'); - } - - /** - * Get Line Style Arrow Excel Length - * - * @param string $arrow - * - * @return string - */ - public function getLineStyleArrowLength($arrow) - { - return $this->getLineStyleArrowSize($this->lineStyleProperties['arrow'][$arrow]['size'], 'len'); - } - - /** - * Set Shadow Properties - * - * @param int $shadow_presets - * @param string $sh_color_value - * @param string $sh_color_type - * @param string $sh_color_alpha - * @param float $sh_blur - * @param int $sh_angle - * @param float $sh_distance - * - */ - public function setShadowProperties($sh_presets, $sh_color_value = null, $sh_color_type = null, $sh_color_alpha = null, $sh_blur = null, $sh_angle = null, $sh_distance = null) - { - $this->setShadowPresetsProperties((int) $sh_presets) - ->setShadowColor( - is_null($sh_color_value) ? $this->shadowProperties['color']['value'] : $sh_color_value, - is_null($sh_color_alpha) ? (int) $this->shadowProperties['color']['alpha'] : $sh_color_alpha, - is_null($sh_color_type) ? $this->shadowProperties['color']['type'] : $sh_color_type - ) - ->setShadowBlur($sh_blur) - ->setShadowAngle($sh_angle) - ->setShadowDistance($sh_distance); - } - - /** - * Set Shadow Color - * - * @param int $shadow_presets - * - * @return PHPExcel_Chart_Axis - */ - private function setShadowPresetsProperties($shadow_presets) - { - $this->shadowProperties['presets'] = $shadow_presets; - $this->setShadowProperiesMapValues($this->getShadowPresetsMap($shadow_presets)); - - return $this; - } - - /** - * Set Shadow Properties from Maped Values - * - * @param array $properties_map - * @param * $reference - * - * @return PHPExcel_Chart_Axis - */ - private function setShadowProperiesMapValues(array $properties_map, &$reference = null) - { - $base_reference = $reference; - foreach ($properties_map as $property_key => $property_val) { - if (is_array($property_val)) { - if ($reference === null) { - $reference = & $this->shadowProperties[$property_key]; - } else { - $reference = & $reference[$property_key]; - } - $this->setShadowProperiesMapValues($property_val, $reference); - } else { - if ($base_reference === null) { - $this->shadowProperties[$property_key] = $property_val; - } else { - $reference[$property_key] = $property_val; - } - } - } - - return $this; - } - - /** - * Set Shadow Color - * - * @param string $color - * @param int $alpha - * @param string $type - * - * @return PHPExcel_Chart_Axis - */ - private function setShadowColor($color, $alpha, $type) - { - $this->shadowProperties['color'] = $this->setColorProperties($color, $alpha, $type); - - return $this; - } - - /** - * Set Shadow Blur - * - * @param float $blur - * - * @return PHPExcel_Chart_Axis - */ - private function setShadowBlur($blur) - { - if ($blur !== null) { - $this->shadowProperties['blur'] = (string) $this->getExcelPointsWidth($blur); - } - - return $this; - } - - /** - * Set Shadow Angle - * - * @param int $angle - * - * @return PHPExcel_Chart_Axis - */ - private function setShadowAngle($angle) - { - if ($angle !== null) { - $this->shadowProperties['direction'] = (string) $this->getExcelPointsAngle($angle); - } - - return $this; - } - - /** - * Set Shadow Distance - * - * @param float $distance - * - * @return PHPExcel_Chart_Axis - */ - private function setShadowDistance($distance) - { - if ($distance !== null) { - $this->shadowProperties['distance'] = (string) $this->getExcelPointsWidth($distance); - } - - return $this; - } - - /** - * Get Glow Property - * - * @param float $size - * @param string $color_value - * @param int $color_alpha - * @param string $color_type - */ - public function getShadowProperty($elements) - { - return $this->getArrayElementsValue($this->shadowProperties, $elements); - } - - /** - * Set Glow Properties - * - * @param float $size - * @param string $color_value - * @param int $color_alpha - * @param string $color_type - */ - public function setGlowProperties($size, $color_value = null, $color_alpha = null, $color_type = null) - { - $this->setGlowSize($size) - ->setGlowColor( - is_null($color_value) ? $this->glowProperties['color']['value'] : $color_value, - is_null($color_alpha) ? (int) $this->glowProperties['color']['alpha'] : $color_alpha, - is_null($color_type) ? $this->glowProperties['color']['type'] : $color_type - ); - } - - /** - * Get Glow Property - * - * @param array|string $property - * - * @return string - */ - public function getGlowProperty($property) - { - return $this->getArrayElementsValue($this->glowProperties, $property); - } - - /** - * Set Glow Color - * - * @param float $size - * - * @return PHPExcel_Chart_Axis - */ - private function setGlowSize($size) - { - if (!is_null($size)) { - $this->glowProperties['size'] = $this->getExcelPointsWidth($size); - } - - return $this; - } - - /** - * Set Glow Color - * - * @param string $color - * @param int $alpha - * @param string $type - * - * @return PHPExcel_Chart_Axis - */ - private function setGlowColor($color, $alpha, $type) - { - $this->glowProperties['color'] = $this->setColorProperties($color, $alpha, $type); - - return $this; - } - - /** - * Set Soft Edges Size - * - * @param float $size - */ - public function setSoftEdges($size) - { - if (!is_null($size)) { - $softEdges['size'] = (string) $this->getExcelPointsWidth($size); - } - } - - /** - * Get Soft Edges Size - * - * @return string - */ - public function getSoftEdgesSize() - { - return $this->softEdges['size']; - } -} diff --git a/application/third_party/PHPExcel/Chart/DataSeries.php b/application/third_party/PHPExcel/Chart/DataSeries.php deleted file mode 100644 index 9ecd543a..00000000 --- a/application/third_party/PHPExcel/Chart/DataSeries.php +++ /dev/null @@ -1,390 +0,0 @@ -plotType = $plotType; - $this->plotGrouping = $plotGrouping; - $this->plotOrder = $plotOrder; - $keys = array_keys($plotValues); - $this->plotValues = $plotValues; - if ((count($plotLabel) == 0) || (is_null($plotLabel[$keys[0]]))) { - $plotLabel[$keys[0]] = new PHPExcel_Chart_DataSeriesValues(); - } - - $this->plotLabel = $plotLabel; - if ((count($plotCategory) == 0) || (is_null($plotCategory[$keys[0]]))) { - $plotCategory[$keys[0]] = new PHPExcel_Chart_DataSeriesValues(); - } - $this->plotCategory = $plotCategory; - $this->smoothLine = $smoothLine; - $this->plotStyle = $plotStyle; - - if (is_null($plotDirection)) { - $plotDirection = self::DIRECTION_COL; - } - $this->plotDirection = $plotDirection; - } - - /** - * Get Plot Type - * - * @return string - */ - public function getPlotType() - { - return $this->plotType; - } - - /** - * Set Plot Type - * - * @param string $plotType - * @return PHPExcel_Chart_DataSeries - */ - public function setPlotType($plotType = '') - { - $this->plotType = $plotType; - return $this; - } - - /** - * Get Plot Grouping Type - * - * @return string - */ - public function getPlotGrouping() - { - return $this->plotGrouping; - } - - /** - * Set Plot Grouping Type - * - * @param string $groupingType - * @return PHPExcel_Chart_DataSeries - */ - public function setPlotGrouping($groupingType = null) - { - $this->plotGrouping = $groupingType; - return $this; - } - - /** - * Get Plot Direction - * - * @return string - */ - public function getPlotDirection() - { - return $this->plotDirection; - } - - /** - * Set Plot Direction - * - * @param string $plotDirection - * @return PHPExcel_Chart_DataSeries - */ - public function setPlotDirection($plotDirection = null) - { - $this->plotDirection = $plotDirection; - return $this; - } - - /** - * Get Plot Order - * - * @return string - */ - public function getPlotOrder() - { - return $this->plotOrder; - } - - /** - * Get Plot Labels - * - * @return array of PHPExcel_Chart_DataSeriesValues - */ - public function getPlotLabels() - { - return $this->plotLabel; - } - - /** - * Get Plot Label by Index - * - * @return PHPExcel_Chart_DataSeriesValues - */ - public function getPlotLabelByIndex($index) - { - $keys = array_keys($this->plotLabel); - if (in_array($index, $keys)) { - return $this->plotLabel[$index]; - } elseif (isset($keys[$index])) { - return $this->plotLabel[$keys[$index]]; - } - return false; - } - - /** - * Get Plot Categories - * - * @return array of PHPExcel_Chart_DataSeriesValues - */ - public function getPlotCategories() - { - return $this->plotCategory; - } - - /** - * Get Plot Category by Index - * - * @return PHPExcel_Chart_DataSeriesValues - */ - public function getPlotCategoryByIndex($index) - { - $keys = array_keys($this->plotCategory); - if (in_array($index, $keys)) { - return $this->plotCategory[$index]; - } elseif (isset($keys[$index])) { - return $this->plotCategory[$keys[$index]]; - } - return false; - } - - /** - * Get Plot Style - * - * @return string - */ - public function getPlotStyle() - { - return $this->plotStyle; - } - - /** - * Set Plot Style - * - * @param string $plotStyle - * @return PHPExcel_Chart_DataSeries - */ - public function setPlotStyle($plotStyle = null) - { - $this->plotStyle = $plotStyle; - return $this; - } - - /** - * Get Plot Values - * - * @return array of PHPExcel_Chart_DataSeriesValues - */ - public function getPlotValues() - { - return $this->plotValues; - } - - /** - * Get Plot Values by Index - * - * @return PHPExcel_Chart_DataSeriesValues - */ - public function getPlotValuesByIndex($index) - { - $keys = array_keys($this->plotValues); - if (in_array($index, $keys)) { - return $this->plotValues[$index]; - } elseif (isset($keys[$index])) { - return $this->plotValues[$keys[$index]]; - } - return false; - } - - /** - * Get Number of Plot Series - * - * @return integer - */ - public function getPlotSeriesCount() - { - return count($this->plotValues); - } - - /** - * Get Smooth Line - * - * @return boolean - */ - public function getSmoothLine() - { - return $this->smoothLine; - } - - /** - * Set Smooth Line - * - * @param boolean $smoothLine - * @return PHPExcel_Chart_DataSeries - */ - public function setSmoothLine($smoothLine = true) - { - $this->smoothLine = $smoothLine; - return $this; - } - - public function refresh(PHPExcel_Worksheet $worksheet) - { - foreach ($this->plotValues as $plotValues) { - if ($plotValues !== null) { - $plotValues->refresh($worksheet, true); - } - } - foreach ($this->plotLabel as $plotValues) { - if ($plotValues !== null) { - $plotValues->refresh($worksheet, true); - } - } - foreach ($this->plotCategory as $plotValues) { - if ($plotValues !== null) { - $plotValues->refresh($worksheet, false); - } - } - } -} diff --git a/application/third_party/PHPExcel/Chart/DataSeriesValues.php b/application/third_party/PHPExcel/Chart/DataSeriesValues.php deleted file mode 100644 index ea57e52a..00000000 --- a/application/third_party/PHPExcel/Chart/DataSeriesValues.php +++ /dev/null @@ -1,333 +0,0 @@ -setDataType($dataType); - $this->dataSource = $dataSource; - $this->formatCode = $formatCode; - $this->pointCount = $pointCount; - $this->dataValues = $dataValues; - $this->pointMarker = $marker; - } - - /** - * Get Series Data Type - * - * @return string - */ - public function getDataType() - { - return $this->dataType; - } - - /** - * Set Series Data Type - * - * @param string $dataType Datatype of this data series - * Typical values are: - * PHPExcel_Chart_DataSeriesValues::DATASERIES_TYPE_STRING - * Normally used for axis point values - * PHPExcel_Chart_DataSeriesValues::DATASERIES_TYPE_NUMBER - * Normally used for chart data values - * @return PHPExcel_Chart_DataSeriesValues - */ - public function setDataType($dataType = self::DATASERIES_TYPE_NUMBER) - { - if (!in_array($dataType, self::$dataTypeValues)) { - throw new PHPExcel_Chart_Exception('Invalid datatype for chart data series values'); - } - $this->dataType = $dataType; - - return $this; - } - - /** - * Get Series Data Source (formula) - * - * @return string - */ - public function getDataSource() - { - return $this->dataSource; - } - - /** - * Set Series Data Source (formula) - * - * @param string $dataSource - * @return PHPExcel_Chart_DataSeriesValues - */ - public function setDataSource($dataSource = null, $refreshDataValues = true) - { - $this->dataSource = $dataSource; - - if ($refreshDataValues) { - // TO DO - } - - return $this; - } - - /** - * Get Point Marker - * - * @return string - */ - public function getPointMarker() - { - return $this->pointMarker; - } - - /** - * Set Point Marker - * - * @param string $marker - * @return PHPExcel_Chart_DataSeriesValues - */ - public function setPointMarker($marker = null) - { - $this->pointMarker = $marker; - - return $this; - } - - /** - * Get Series Format Code - * - * @return string - */ - public function getFormatCode() - { - return $this->formatCode; - } - - /** - * Set Series Format Code - * - * @param string $formatCode - * @return PHPExcel_Chart_DataSeriesValues - */ - public function setFormatCode($formatCode = null) - { - $this->formatCode = $formatCode; - - return $this; - } - - /** - * Get Series Point Count - * - * @return integer - */ - public function getPointCount() - { - return $this->pointCount; - } - - /** - * Identify if the Data Series is a multi-level or a simple series - * - * @return boolean - */ - public function isMultiLevelSeries() - { - if (count($this->dataValues) > 0) { - return is_array($this->dataValues[0]); - } - return null; - } - - /** - * Return the level count of a multi-level Data Series - * - * @return boolean - */ - public function multiLevelCount() - { - $levelCount = 0; - foreach ($this->dataValues as $dataValueSet) { - $levelCount = max($levelCount, count($dataValueSet)); - } - return $levelCount; - } - - /** - * Get Series Data Values - * - * @return array of mixed - */ - public function getDataValues() - { - return $this->dataValues; - } - - /** - * Get the first Series Data value - * - * @return mixed - */ - public function getDataValue() - { - $count = count($this->dataValues); - if ($count == 0) { - return null; - } elseif ($count == 1) { - return $this->dataValues[0]; - } - return $this->dataValues; - } - - /** - * Set Series Data Values - * - * @param array $dataValues - * @param boolean $refreshDataSource - * TRUE - refresh the value of dataSource based on the values of $dataValues - * FALSE - don't change the value of dataSource - * @return PHPExcel_Chart_DataSeriesValues - */ - public function setDataValues($dataValues = array(), $refreshDataSource = true) - { - $this->dataValues = PHPExcel_Calculation_Functions::flattenArray($dataValues); - $this->pointCount = count($dataValues); - - if ($refreshDataSource) { - // TO DO - } - - return $this; - } - - private function stripNulls($var) - { - return $var !== null; - } - - public function refresh(PHPExcel_Worksheet $worksheet, $flatten = true) - { - if ($this->dataSource !== null) { - $calcEngine = PHPExcel_Calculation::getInstance($worksheet->getParent()); - $newDataValues = PHPExcel_Calculation::unwrapResult( - $calcEngine->_calculateFormulaValue( - '='.$this->dataSource, - null, - $worksheet->getCell('A1') - ) - ); - if ($flatten) { - $this->dataValues = PHPExcel_Calculation_Functions::flattenArray($newDataValues); - foreach ($this->dataValues as &$dataValue) { - if ((!empty($dataValue)) && ($dataValue[0] == '#')) { - $dataValue = 0.0; - } - } - unset($dataValue); - } else { - $cellRange = explode('!', $this->dataSource); - if (count($cellRange) > 1) { - list(, $cellRange) = $cellRange; - } - - $dimensions = PHPExcel_Cell::rangeDimension(str_replace('$', '', $cellRange)); - if (($dimensions[0] == 1) || ($dimensions[1] == 1)) { - $this->dataValues = PHPExcel_Calculation_Functions::flattenArray($newDataValues); - } else { - $newArray = array_values(array_shift($newDataValues)); - foreach ($newArray as $i => $newDataSet) { - $newArray[$i] = array($newDataSet); - } - - foreach ($newDataValues as $newDataSet) { - $i = 0; - foreach ($newDataSet as $newDataVal) { - array_unshift($newArray[$i++], $newDataVal); - } - } - $this->dataValues = $newArray; - } - } - $this->pointCount = count($this->dataValues); - } - } -} diff --git a/application/third_party/PHPExcel/Chart/Exception.php b/application/third_party/PHPExcel/Chart/Exception.php deleted file mode 100644 index e20dfa59..00000000 --- a/application/third_party/PHPExcel/Chart/Exception.php +++ /dev/null @@ -1,46 +0,0 @@ -line = $line; - $e->file = $file; - throw $e; - } -} diff --git a/application/third_party/PHPExcel/Chart/GridLines.php b/application/third_party/PHPExcel/Chart/GridLines.php deleted file mode 100644 index 898012eb..00000000 --- a/application/third_party/PHPExcel/Chart/GridLines.php +++ /dev/null @@ -1,472 +0,0 @@ - array( - 'type' => self::EXCEL_COLOR_TYPE_STANDARD, - 'value' => null, - 'alpha' => 0 - ), - 'style' => array( - 'width' => '9525', - 'compound' => self::LINE_STYLE_COMPOUND_SIMPLE, - 'dash' => self::LINE_STYLE_DASH_SOLID, - 'cap' => self::LINE_STYLE_CAP_FLAT, - 'join' => self::LINE_STYLE_JOIN_BEVEL, - 'arrow' => array( - 'head' => array( - 'type' => self::LINE_STYLE_ARROW_TYPE_NOARROW, - 'size' => self::LINE_STYLE_ARROW_SIZE_5 - ), - 'end' => array( - 'type' => self::LINE_STYLE_ARROW_TYPE_NOARROW, - 'size' => self::LINE_STYLE_ARROW_SIZE_8 - ), - ) - ) - ); - - private $shadowProperties = array( - 'presets' => self::SHADOW_PRESETS_NOSHADOW, - 'effect' => null, - 'color' => array( - 'type' => self::EXCEL_COLOR_TYPE_STANDARD, - 'value' => 'black', - 'alpha' => 85, - ), - 'size' => array( - 'sx' => null, - 'sy' => null, - 'kx' => null - ), - 'blur' => null, - 'direction' => null, - 'distance' => null, - 'algn' => null, - 'rotWithShape' => null - ); - - private $glowProperties = array( - 'size' => null, - 'color' => array( - 'type' => self::EXCEL_COLOR_TYPE_STANDARD, - 'value' => 'black', - 'alpha' => 40 - ) - ); - - private $softEdges = array( - 'size' => null - ); - - /** - * Get Object State - * - * @return bool - */ - - public function getObjectState() - { - return $this->objectState; - } - - /** - * Change Object State to True - * - * @return PHPExcel_Chart_GridLines - */ - - private function activateObject() - { - $this->objectState = true; - - return $this; - } - - /** - * Set Line Color Properties - * - * @param string $value - * @param int $alpha - * @param string $type - */ - - public function setLineColorProperties($value, $alpha = 0, $type = self::EXCEL_COLOR_TYPE_STANDARD) - { - $this->activateObject() - ->lineProperties['color'] = $this->setColorProperties( - $value, - $alpha, - $type - ); - } - - /** - * Set Line Color Properties - * - * @param float $line_width - * @param string $compound_type - * @param string $dash_type - * @param string $cap_type - * @param string $join_type - * @param string $head_arrow_type - * @param string $head_arrow_size - * @param string $end_arrow_type - * @param string $end_arrow_size - */ - - public function setLineStyleProperties($line_width = null, $compound_type = null, $dash_type = null, $cap_type = null, $join_type = null, $head_arrow_type = null, $head_arrow_size = null, $end_arrow_type = null, $end_arrow_size = null) - { - $this->activateObject(); - (!is_null($line_width)) - ? $this->lineProperties['style']['width'] = $this->getExcelPointsWidth((float) $line_width) - : null; - (!is_null($compound_type)) - ? $this->lineProperties['style']['compound'] = (string) $compound_type - : null; - (!is_null($dash_type)) - ? $this->lineProperties['style']['dash'] = (string) $dash_type - : null; - (!is_null($cap_type)) - ? $this->lineProperties['style']['cap'] = (string) $cap_type - : null; - (!is_null($join_type)) - ? $this->lineProperties['style']['join'] = (string) $join_type - : null; - (!is_null($head_arrow_type)) - ? $this->lineProperties['style']['arrow']['head']['type'] = (string) $head_arrow_type - : null; - (!is_null($head_arrow_size)) - ? $this->lineProperties['style']['arrow']['head']['size'] = (string) $head_arrow_size - : null; - (!is_null($end_arrow_type)) - ? $this->lineProperties['style']['arrow']['end']['type'] = (string) $end_arrow_type - : null; - (!is_null($end_arrow_size)) - ? $this->lineProperties['style']['arrow']['end']['size'] = (string) $end_arrow_size - : null; - } - - /** - * Get Line Color Property - * - * @param string $parameter - * - * @return string - */ - - public function getLineColorProperty($parameter) - { - return $this->lineProperties['color'][$parameter]; - } - - /** - * Get Line Style Property - * - * @param array|string $elements - * - * @return string - */ - - public function getLineStyleProperty($elements) - { - return $this->getArrayElementsValue($this->lineProperties['style'], $elements); - } - - /** - * Set Glow Properties - * - * @param float $size - * @param string $color_value - * @param int $color_alpha - * @param string $color_type - * - */ - - public function setGlowProperties($size, $color_value = null, $color_alpha = null, $color_type = null) - { - $this - ->activateObject() - ->setGlowSize($size) - ->setGlowColor($color_value, $color_alpha, $color_type); - } - - /** - * Get Glow Color Property - * - * @param string $property - * - * @return string - */ - - public function getGlowColor($property) - { - return $this->glowProperties['color'][$property]; - } - - /** - * Get Glow Size - * - * @return string - */ - - public function getGlowSize() - { - return $this->glowProperties['size']; - } - - /** - * Set Glow Size - * - * @param float $size - * - * @return PHPExcel_Chart_GridLines - */ - - private function setGlowSize($size) - { - $this->glowProperties['size'] = $this->getExcelPointsWidth((float) $size); - - return $this; - } - - /** - * Set Glow Color - * - * @param string $color - * @param int $alpha - * @param string $type - * - * @return PHPExcel_Chart_GridLines - */ - - private function setGlowColor($color, $alpha, $type) - { - if (!is_null($color)) { - $this->glowProperties['color']['value'] = (string) $color; - } - if (!is_null($alpha)) { - $this->glowProperties['color']['alpha'] = $this->getTrueAlpha((int) $alpha); - } - if (!is_null($type)) { - $this->glowProperties['color']['type'] = (string) $type; - } - - return $this; - } - - /** - * Get Line Style Arrow Parameters - * - * @param string $arrow_selector - * @param string $property_selector - * - * @return string - */ - - public function getLineStyleArrowParameters($arrow_selector, $property_selector) - { - return $this->getLineStyleArrowSize($this->lineProperties['style']['arrow'][$arrow_selector]['size'], $property_selector); - } - - /** - * Set Shadow Properties - * - * @param int $sh_presets - * @param string $sh_color_value - * @param string $sh_color_type - * @param int $sh_color_alpha - * @param string $sh_blur - * @param int $sh_angle - * @param float $sh_distance - * - */ - - public function setShadowProperties($sh_presets, $sh_color_value = null, $sh_color_type = null, $sh_color_alpha = null, $sh_blur = null, $sh_angle = null, $sh_distance = null) - { - $this->activateObject() - ->setShadowPresetsProperties((int) $sh_presets) - ->setShadowColor( - is_null($sh_color_value) ? $this->shadowProperties['color']['value'] : $sh_color_value, - is_null($sh_color_alpha) ? (int) $this->shadowProperties['color']['alpha'] : $this->getTrueAlpha($sh_color_alpha), - is_null($sh_color_type) ? $this->shadowProperties['color']['type'] : $sh_color_type - ) - ->setShadowBlur($sh_blur) - ->setShadowAngle($sh_angle) - ->setShadowDistance($sh_distance); - } - - /** - * Set Shadow Presets Properties - * - * @param int $shadow_presets - * - * @return PHPExcel_Chart_GridLines - */ - - private function setShadowPresetsProperties($shadow_presets) - { - $this->shadowProperties['presets'] = $shadow_presets; - $this->setShadowProperiesMapValues($this->getShadowPresetsMap($shadow_presets)); - - return $this; - } - - /** - * Set Shadow Properties Values - * - * @param array $properties_map - * @param * $reference - * - * @return PHPExcel_Chart_GridLines - */ - - private function setShadowProperiesMapValues(array $properties_map, &$reference = null) - { - $base_reference = $reference; - foreach ($properties_map as $property_key => $property_val) { - if (is_array($property_val)) { - if ($reference === null) { - $reference = & $this->shadowProperties[$property_key]; - } else { - $reference = & $reference[$property_key]; - } - $this->setShadowProperiesMapValues($property_val, $reference); - } else { - if ($base_reference === null) { - $this->shadowProperties[$property_key] = $property_val; - } else { - $reference[$property_key] = $property_val; - } - } - } - - return $this; - } - - /** - * Set Shadow Color - * - * @param string $color - * @param int $alpha - * @param string $type - * @return PHPExcel_Chart_GridLines - */ - private function setShadowColor($color, $alpha, $type) - { - if (!is_null($color)) { - $this->shadowProperties['color']['value'] = (string) $color; - } - if (!is_null($alpha)) { - $this->shadowProperties['color']['alpha'] = $this->getTrueAlpha((int) $alpha); - } - if (!is_null($type)) { - $this->shadowProperties['color']['type'] = (string) $type; - } - - return $this; - } - - /** - * Set Shadow Blur - * - * @param float $blur - * - * @return PHPExcel_Chart_GridLines - */ - private function setShadowBlur($blur) - { - if ($blur !== null) { - $this->shadowProperties['blur'] = (string) $this->getExcelPointsWidth($blur); - } - - return $this; - } - - /** - * Set Shadow Angle - * - * @param int $angle - * @return PHPExcel_Chart_GridLines - */ - - private function setShadowAngle($angle) - { - if ($angle !== null) { - $this->shadowProperties['direction'] = (string) $this->getExcelPointsAngle($angle); - } - - return $this; - } - - /** - * Set Shadow Distance - * - * @param float $distance - * @return PHPExcel_Chart_GridLines - */ - private function setShadowDistance($distance) - { - if ($distance !== null) { - $this->shadowProperties['distance'] = (string) $this->getExcelPointsWidth($distance); - } - - return $this; - } - - /** - * Get Shadow Property - * - * @param string $elements - * @param array $elements - * @return string - */ - public function getShadowProperty($elements) - { - return $this->getArrayElementsValue($this->shadowProperties, $elements); - } - - /** - * Set Soft Edges Size - * - * @param float $size - */ - public function setSoftEdgesSize($size) - { - if (!is_null($size)) { - $this->activateObject(); - $softEdges['size'] = (string) $this->getExcelPointsWidth($size); - } - } - - /** - * Get Soft Edges Size - * - * @return string - */ - public function getSoftEdgesSize() - { - return $this->softEdges['size']; - } -} diff --git a/application/third_party/PHPExcel/Chart/Layout.php b/application/third_party/PHPExcel/Chart/Layout.php deleted file mode 100644 index 7fef0741..00000000 --- a/application/third_party/PHPExcel/Chart/Layout.php +++ /dev/null @@ -1,486 +0,0 @@ -layoutTarget = $layout['layoutTarget']; - } - if (isset($layout['xMode'])) { - $this->xMode = $layout['xMode']; - } - if (isset($layout['yMode'])) { - $this->yMode = $layout['yMode']; - } - if (isset($layout['x'])) { - $this->xPos = (float) $layout['x']; - } - if (isset($layout['y'])) { - $this->yPos = (float) $layout['y']; - } - if (isset($layout['w'])) { - $this->width = (float) $layout['w']; - } - if (isset($layout['h'])) { - $this->height = (float) $layout['h']; - } - } - - /** - * Get Layout Target - * - * @return string - */ - public function getLayoutTarget() - { - return $this->layoutTarget; - } - - /** - * Set Layout Target - * - * @param Layout Target $value - * @return PHPExcel_Chart_Layout - */ - public function setLayoutTarget($value) - { - $this->layoutTarget = $value; - return $this; - } - - /** - * Get X-Mode - * - * @return string - */ - public function getXMode() - { - return $this->xMode; - } - - /** - * Set X-Mode - * - * @param X-Mode $value - * @return PHPExcel_Chart_Layout - */ - public function setXMode($value) - { - $this->xMode = $value; - return $this; - } - - /** - * Get Y-Mode - * - * @return string - */ - public function getYMode() - { - return $this->yMode; - } - - /** - * Set Y-Mode - * - * @param Y-Mode $value - * @return PHPExcel_Chart_Layout - */ - public function setYMode($value) - { - $this->yMode = $value; - return $this; - } - - /** - * Get X-Position - * - * @return number - */ - public function getXPosition() - { - return $this->xPos; - } - - /** - * Set X-Position - * - * @param X-Position $value - * @return PHPExcel_Chart_Layout - */ - public function setXPosition($value) - { - $this->xPos = $value; - return $this; - } - - /** - * Get Y-Position - * - * @return number - */ - public function getYPosition() - { - return $this->yPos; - } - - /** - * Set Y-Position - * - * @param Y-Position $value - * @return PHPExcel_Chart_Layout - */ - public function setYPosition($value) - { - $this->yPos = $value; - return $this; - } - - /** - * Get Width - * - * @return number - */ - public function getWidth() - { - return $this->width; - } - - /** - * Set Width - * - * @param Width $value - * @return PHPExcel_Chart_Layout - */ - public function setWidth($value) - { - $this->width = $value; - return $this; - } - - /** - * Get Height - * - * @return number - */ - public function getHeight() - { - return $this->height; - } - - /** - * Set Height - * - * @param Height $value - * @return PHPExcel_Chart_Layout - */ - public function setHeight($value) - { - $this->height = $value; - return $this; - } - - - /** - * Get show legend key - * - * @return boolean - */ - public function getShowLegendKey() - { - return $this->showLegendKey; - } - - /** - * Set show legend key - * Specifies that legend keys should be shown in data labels. - * - * @param boolean $value Show legend key - * @return PHPExcel_Chart_Layout - */ - public function setShowLegendKey($value) - { - $this->showLegendKey = $value; - return $this; - } - - /** - * Get show value - * - * @return boolean - */ - public function getShowVal() - { - return $this->showVal; - } - - /** - * Set show val - * Specifies that the value should be shown in data labels. - * - * @param boolean $value Show val - * @return PHPExcel_Chart_Layout - */ - public function setShowVal($value) - { - $this->showVal = $value; - return $this; - } - - /** - * Get show category name - * - * @return boolean - */ - public function getShowCatName() - { - return $this->showCatName; - } - - /** - * Set show cat name - * Specifies that the category name should be shown in data labels. - * - * @param boolean $value Show cat name - * @return PHPExcel_Chart_Layout - */ - public function setShowCatName($value) - { - $this->showCatName = $value; - return $this; - } - - /** - * Get show data series name - * - * @return boolean - */ - public function getShowSerName() - { - return $this->showSerName; - } - - /** - * Set show ser name - * Specifies that the series name should be shown in data labels. - * - * @param boolean $value Show series name - * @return PHPExcel_Chart_Layout - */ - public function setShowSerName($value) - { - $this->showSerName = $value; - return $this; - } - - /** - * Get show percentage - * - * @return boolean - */ - public function getShowPercent() - { - return $this->showPercent; - } - - /** - * Set show percentage - * Specifies that the percentage should be shown in data labels. - * - * @param boolean $value Show percentage - * @return PHPExcel_Chart_Layout - */ - public function setShowPercent($value) - { - $this->showPercent = $value; - return $this; - } - - /** - * Get show bubble size - * - * @return boolean - */ - public function getShowBubbleSize() - { - return $this->showBubbleSize; - } - - /** - * Set show bubble size - * Specifies that the bubble size should be shown in data labels. - * - * @param boolean $value Show bubble size - * @return PHPExcel_Chart_Layout - */ - public function setShowBubbleSize($value) - { - $this->showBubbleSize = $value; - return $this; - } - - /** - * Get show leader lines - * - * @return boolean - */ - public function getShowLeaderLines() - { - return $this->showLeaderLines; - } - - /** - * Set show leader lines - * Specifies that leader lines should be shown in data labels. - * - * @param boolean $value Show leader lines - * @return PHPExcel_Chart_Layout - */ - public function setShowLeaderLines($value) - { - $this->showLeaderLines = $value; - return $this; - } -} diff --git a/application/third_party/PHPExcel/Chart/Legend.php b/application/third_party/PHPExcel/Chart/Legend.php deleted file mode 100644 index e850eb59..00000000 --- a/application/third_party/PHPExcel/Chart/Legend.php +++ /dev/null @@ -1,170 +0,0 @@ - self::POSITION_BOTTOM, - self::xlLegendPositionCorner => self::POSITION_TOPRIGHT, - self::xlLegendPositionCustom => '??', - self::xlLegendPositionLeft => self::POSITION_LEFT, - self::xlLegendPositionRight => self::POSITION_RIGHT, - self::xlLegendPositionTop => self::POSITION_TOP - ); - - /** - * Legend position - * - * @var string - */ - private $position = self::POSITION_RIGHT; - - /** - * Allow overlay of other elements? - * - * @var boolean - */ - private $overlay = true; - - /** - * Legend Layout - * - * @var PHPExcel_Chart_Layout - */ - private $layout = null; - - - /** - * Create a new PHPExcel_Chart_Legend - */ - public function __construct($position = self::POSITION_RIGHT, PHPExcel_Chart_Layout $layout = null, $overlay = false) - { - $this->setPosition($position); - $this->layout = $layout; - $this->setOverlay($overlay); - } - - /** - * Get legend position as an excel string value - * - * @return string - */ - public function getPosition() - { - return $this->position; - } - - /** - * Get legend position using an excel string value - * - * @param string $position - */ - public function setPosition($position = self::POSITION_RIGHT) - { - if (!in_array($position, self::$positionXLref)) { - return false; - } - - $this->position = $position; - return true; - } - - /** - * Get legend position as an Excel internal numeric value - * - * @return number - */ - public function getPositionXL() - { - return array_search($this->position, self::$positionXLref); - } - - /** - * Set legend position using an Excel internal numeric value - * - * @param number $positionXL - */ - public function setPositionXL($positionXL = self::xlLegendPositionRight) - { - if (!array_key_exists($positionXL, self::$positionXLref)) { - return false; - } - - $this->position = self::$positionXLref[$positionXL]; - return true; - } - - /** - * Get allow overlay of other elements? - * - * @return boolean - */ - public function getOverlay() - { - return $this->overlay; - } - - /** - * Set allow overlay of other elements? - * - * @param boolean $overlay - * @return boolean - */ - public function setOverlay($overlay = false) - { - if (!is_bool($overlay)) { - return false; - } - - $this->overlay = $overlay; - return true; - } - - /** - * Get Layout - * - * @return PHPExcel_Chart_Layout - */ - public function getLayout() - { - return $this->layout; - } -} diff --git a/application/third_party/PHPExcel/Chart/PlotArea.php b/application/third_party/PHPExcel/Chart/PlotArea.php deleted file mode 100644 index 551cc517..00000000 --- a/application/third_party/PHPExcel/Chart/PlotArea.php +++ /dev/null @@ -1,126 +0,0 @@ -layout = $layout; - $this->plotSeries = $plotSeries; - } - - /** - * Get Layout - * - * @return PHPExcel_Chart_Layout - */ - public function getLayout() - { - return $this->layout; - } - - /** - * Get Number of Plot Groups - * - * @return array of PHPExcel_Chart_DataSeries - */ - public function getPlotGroupCount() - { - return count($this->plotSeries); - } - - /** - * Get Number of Plot Series - * - * @return integer - */ - public function getPlotSeriesCount() - { - $seriesCount = 0; - foreach ($this->plotSeries as $plot) { - $seriesCount += $plot->getPlotSeriesCount(); - } - return $seriesCount; - } - - /** - * Get Plot Series - * - * @return array of PHPExcel_Chart_DataSeries - */ - public function getPlotGroup() - { - return $this->plotSeries; - } - - /** - * Get Plot Series by Index - * - * @return PHPExcel_Chart_DataSeries - */ - public function getPlotGroupByIndex($index) - { - return $this->plotSeries[$index]; - } - - /** - * Set Plot Series - * - * @param [PHPExcel_Chart_DataSeries] - * @return PHPExcel_Chart_PlotArea - */ - public function setPlotSeries($plotSeries = array()) - { - $this->plotSeries = $plotSeries; - - return $this; - } - - public function refresh(PHPExcel_Worksheet $worksheet) - { - foreach ($this->plotSeries as $plotSeries) { - $plotSeries->refresh($worksheet); - } - } -} diff --git a/application/third_party/PHPExcel/Chart/Properties.php b/application/third_party/PHPExcel/Chart/Properties.php deleted file mode 100644 index 9bb6e933..00000000 --- a/application/third_party/PHPExcel/Chart/Properties.php +++ /dev/null @@ -1,363 +0,0 @@ - (string) $type, - 'value' => (string) $color, - 'alpha' => (string) $this->getTrueAlpha($alpha) - ); - } - - protected function getLineStyleArrowSize($array_selector, $array_kay_selector) - { - $sizes = array( - 1 => array('w' => 'sm', 'len' => 'sm'), - 2 => array('w' => 'sm', 'len' => 'med'), - 3 => array('w' => 'sm', 'len' => 'lg'), - 4 => array('w' => 'med', 'len' => 'sm'), - 5 => array('w' => 'med', 'len' => 'med'), - 6 => array('w' => 'med', 'len' => 'lg'), - 7 => array('w' => 'lg', 'len' => 'sm'), - 8 => array('w' => 'lg', 'len' => 'med'), - 9 => array('w' => 'lg', 'len' => 'lg') - ); - - return $sizes[$array_selector][$array_kay_selector]; - } - - protected function getShadowPresetsMap($shadow_presets_option) - { - $presets_options = array( - //OUTER - 1 => array( - 'effect' => 'outerShdw', - 'blur' => '50800', - 'distance' => '38100', - 'direction' => '2700000', - 'algn' => 'tl', - 'rotWithShape' => '0' - ), - 2 => array( - 'effect' => 'outerShdw', - 'blur' => '50800', - 'distance' => '38100', - 'direction' => '5400000', - 'algn' => 't', - 'rotWithShape' => '0' - ), - 3 => array( - 'effect' => 'outerShdw', - 'blur' => '50800', - 'distance' => '38100', - 'direction' => '8100000', - 'algn' => 'tr', - 'rotWithShape' => '0' - ), - 4 => array( - 'effect' => 'outerShdw', - 'blur' => '50800', - 'distance' => '38100', - 'algn' => 'l', - 'rotWithShape' => '0' - ), - 5 => array( - 'effect' => 'outerShdw', - 'size' => array( - 'sx' => '102000', - 'sy' => '102000' - ) - , - 'blur' => '63500', - 'distance' => '38100', - 'algn' => 'ctr', - 'rotWithShape' => '0' - ), - 6 => array( - 'effect' => 'outerShdw', - 'blur' => '50800', - 'distance' => '38100', - 'direction' => '10800000', - 'algn' => 'r', - 'rotWithShape' => '0' - ), - 7 => array( - 'effect' => 'outerShdw', - 'blur' => '50800', - 'distance' => '38100', - 'direction' => '18900000', - 'algn' => 'bl', - 'rotWithShape' => '0' - ), - 8 => array( - 'effect' => 'outerShdw', - 'blur' => '50800', - 'distance' => '38100', - 'direction' => '16200000', - 'rotWithShape' => '0' - ), - 9 => array( - 'effect' => 'outerShdw', - 'blur' => '50800', - 'distance' => '38100', - 'direction' => '13500000', - 'algn' => 'br', - 'rotWithShape' => '0' - ), - //INNER - 10 => array( - 'effect' => 'innerShdw', - 'blur' => '63500', - 'distance' => '50800', - 'direction' => '2700000', - ), - 11 => array( - 'effect' => 'innerShdw', - 'blur' => '63500', - 'distance' => '50800', - 'direction' => '5400000', - ), - 12 => array( - 'effect' => 'innerShdw', - 'blur' => '63500', - 'distance' => '50800', - 'direction' => '8100000', - ), - 13 => array( - 'effect' => 'innerShdw', - 'blur' => '63500', - 'distance' => '50800', - ), - 14 => array( - 'effect' => 'innerShdw', - 'blur' => '114300', - ), - 15 => array( - 'effect' => 'innerShdw', - 'blur' => '63500', - 'distance' => '50800', - 'direction' => '10800000', - ), - 16 => array( - 'effect' => 'innerShdw', - 'blur' => '63500', - 'distance' => '50800', - 'direction' => '18900000', - ), - 17 => array( - 'effect' => 'innerShdw', - 'blur' => '63500', - 'distance' => '50800', - 'direction' => '16200000', - ), - 18 => array( - 'effect' => 'innerShdw', - 'blur' => '63500', - 'distance' => '50800', - 'direction' => '13500000', - ), - //perspective - 19 => array( - 'effect' => 'outerShdw', - 'blur' => '152400', - 'distance' => '317500', - 'size' => array( - 'sx' => '90000', - 'sy' => '-19000', - ), - 'direction' => '5400000', - 'rotWithShape' => '0', - ), - 20 => array( - 'effect' => 'outerShdw', - 'blur' => '76200', - 'direction' => '18900000', - 'size' => array( - 'sy' => '23000', - 'kx' => '-1200000', - ), - 'algn' => 'bl', - 'rotWithShape' => '0', - ), - 21 => array( - 'effect' => 'outerShdw', - 'blur' => '76200', - 'direction' => '13500000', - 'size' => array( - 'sy' => '23000', - 'kx' => '1200000', - ), - 'algn' => 'br', - 'rotWithShape' => '0', - ), - 22 => array( - 'effect' => 'outerShdw', - 'blur' => '76200', - 'distance' => '12700', - 'direction' => '2700000', - 'size' => array( - 'sy' => '-23000', - 'kx' => '-800400', - ), - 'algn' => 'bl', - 'rotWithShape' => '0', - ), - 23 => array( - 'effect' => 'outerShdw', - 'blur' => '76200', - 'distance' => '12700', - 'direction' => '8100000', - 'size' => array( - 'sy' => '-23000', - 'kx' => '800400', - ), - 'algn' => 'br', - 'rotWithShape' => '0', - ), - ); - - return $presets_options[$shadow_presets_option]; - } - - protected function getArrayElementsValue($properties, $elements) - { - $reference = & $properties; - if (!is_array($elements)) { - return $reference[$elements]; - } else { - foreach ($elements as $keys) { - $reference = & $reference[$keys]; - } - return $reference; - } - return $this; - } -} diff --git a/application/third_party/PHPExcel/Chart/Renderer/PHP Charting Libraries.txt b/application/third_party/PHPExcel/Chart/Renderer/PHP Charting Libraries.txt deleted file mode 100644 index 9334f684..00000000 --- a/application/third_party/PHPExcel/Chart/Renderer/PHP Charting Libraries.txt +++ /dev/null @@ -1,20 +0,0 @@ -ChartDirector - http://www.advsofteng.com/cdphp.html - -GraPHPite - http://graphpite.sourceforge.net/ - -JpGraph - http://www.aditus.nu/jpgraph/ - -LibChart - http://naku.dohcrew.com/libchart/pages/introduction/ - -pChart - http://pchart.sourceforge.net/ - -TeeChart - http://www.steema.com/products/teechart/overview.html - -PHPGraphLib - http://www.ebrueggeman.com/phpgraphlib \ No newline at end of file diff --git a/application/third_party/PHPExcel/Chart/Renderer/jpgraph.php b/application/third_party/PHPExcel/Chart/Renderer/jpgraph.php deleted file mode 100644 index b3d7396f..00000000 --- a/application/third_party/PHPExcel/Chart/Renderer/jpgraph.php +++ /dev/null @@ -1,883 +0,0 @@ - MARK_DIAMOND, - 'square' => MARK_SQUARE, - 'triangle' => MARK_UTRIANGLE, - 'x' => MARK_X, - 'star' => MARK_STAR, - 'dot' => MARK_FILLEDCIRCLE, - 'dash' => MARK_DTRIANGLE, - 'circle' => MARK_CIRCLE, - 'plus' => MARK_CROSS - ); - - - private $chart; - - private $graph; - - private static $plotColour = 0; - - private static $plotMark = 0; - - - private function formatPointMarker($seriesPlot, $markerID) - { - $plotMarkKeys = array_keys(self::$markSet); - if (is_null($markerID)) { - // Use default plot marker (next marker in the series) - self::$plotMark %= count(self::$markSet); - $seriesPlot->mark->SetType(self::$markSet[$plotMarkKeys[self::$plotMark++]]); - } elseif ($markerID !== 'none') { - // Use specified plot marker (if it exists) - if (isset(self::$markSet[$markerID])) { - $seriesPlot->mark->SetType(self::$markSet[$markerID]); - } else { - // If the specified plot marker doesn't exist, use default plot marker (next marker in the series) - self::$plotMark %= count(self::$markSet); - $seriesPlot->mark->SetType(self::$markSet[$plotMarkKeys[self::$plotMark++]]); - } - } else { - // Hide plot marker - $seriesPlot->mark->Hide(); - } - $seriesPlot->mark->SetColor(self::$colourSet[self::$plotColour]); - $seriesPlot->mark->SetFillColor(self::$colourSet[self::$plotColour]); - $seriesPlot->SetColor(self::$colourSet[self::$plotColour++]); - - return $seriesPlot; - } - - - private function formatDataSetLabels($groupID, $datasetLabels, $labelCount, $rotation = '') - { - $datasetLabelFormatCode = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotCategoryByIndex(0)->getFormatCode(); - if (!is_null($datasetLabelFormatCode)) { - // Retrieve any label formatting code - $datasetLabelFormatCode = stripslashes($datasetLabelFormatCode); - } - - $testCurrentIndex = 0; - foreach ($datasetLabels as $i => $datasetLabel) { - if (is_array($datasetLabel)) { - if ($rotation == 'bar') { - $datasetLabels[$i] = implode(" ", $datasetLabel); - } else { - $datasetLabel = array_reverse($datasetLabel); - $datasetLabels[$i] = implode("\n", $datasetLabel); - } - } else { - // Format labels according to any formatting code - if (!is_null($datasetLabelFormatCode)) { - $datasetLabels[$i] = PHPExcel_Style_NumberFormat::toFormattedString($datasetLabel, $datasetLabelFormatCode); - } - } - ++$testCurrentIndex; - } - - return $datasetLabels; - } - - - private function percentageSumCalculation($groupID, $seriesCount) - { - // Adjust our values to a percentage value across all series in the group - for ($i = 0; $i < $seriesCount; ++$i) { - if ($i == 0) { - $sumValues = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getDataValues(); - } else { - $nextValues = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getDataValues(); - foreach ($nextValues as $k => $value) { - if (isset($sumValues[$k])) { - $sumValues[$k] += $value; - } else { - $sumValues[$k] = $value; - } - } - } - } - - return $sumValues; - } - - - private function percentageAdjustValues($dataValues, $sumValues) - { - foreach ($dataValues as $k => $dataValue) { - $dataValues[$k] = $dataValue / $sumValues[$k] * 100; - } - - return $dataValues; - } - - - private function getCaption($captionElement) - { - // Read any caption - $caption = (!is_null($captionElement)) ? $captionElement->getCaption() : null; - // Test if we have a title caption to display - if (!is_null($caption)) { - // If we do, it could be a plain string or an array - if (is_array($caption)) { - // Implode an array to a plain string - $caption = implode('', $caption); - } - } - return $caption; - } - - - private function renderTitle() - { - $title = $this->getCaption($this->chart->getTitle()); - if (!is_null($title)) { - $this->graph->title->Set($title); - } - } - - - private function renderLegend() - { - $legend = $this->chart->getLegend(); - if (!is_null($legend)) { - $legendPosition = $legend->getPosition(); - $legendOverlay = $legend->getOverlay(); - switch ($legendPosition) { - case 'r': - $this->graph->legend->SetPos(0.01, 0.5, 'right', 'center'); // right - $this->graph->legend->SetColumns(1); - break; - case 'l': - $this->graph->legend->SetPos(0.01, 0.5, 'left', 'center'); // left - $this->graph->legend->SetColumns(1); - break; - case 't': - $this->graph->legend->SetPos(0.5, 0.01, 'center', 'top'); // top - break; - case 'b': - $this->graph->legend->SetPos(0.5, 0.99, 'center', 'bottom'); // bottom - break; - default: - $this->graph->legend->SetPos(0.01, 0.01, 'right', 'top'); // top-right - $this->graph->legend->SetColumns(1); - break; - } - } else { - $this->graph->legend->Hide(); - } - } - - - private function renderCartesianPlotArea($type = 'textlin') - { - $this->graph = new Graph(self::$width, self::$height); - $this->graph->SetScale($type); - - $this->renderTitle(); - - // Rotate for bar rather than column chart - $rotation = $this->chart->getPlotArea()->getPlotGroupByIndex(0)->getPlotDirection(); - $reverse = ($rotation == 'bar') ? true : false; - - $xAxisLabel = $this->chart->getXAxisLabel(); - if (!is_null($xAxisLabel)) { - $title = $this->getCaption($xAxisLabel); - if (!is_null($title)) { - $this->graph->xaxis->SetTitle($title, 'center'); - $this->graph->xaxis->title->SetMargin(35); - if ($reverse) { - $this->graph->xaxis->title->SetAngle(90); - $this->graph->xaxis->title->SetMargin(90); - } - } - } - - $yAxisLabel = $this->chart->getYAxisLabel(); - if (!is_null($yAxisLabel)) { - $title = $this->getCaption($yAxisLabel); - if (!is_null($title)) { - $this->graph->yaxis->SetTitle($title, 'center'); - if ($reverse) { - $this->graph->yaxis->title->SetAngle(0); - $this->graph->yaxis->title->SetMargin(-55); - } - } - } - } - - - private function renderPiePlotArea($doughnut = false) - { - $this->graph = new PieGraph(self::$width, self::$height); - - $this->renderTitle(); - } - - - private function renderRadarPlotArea() - { - $this->graph = new RadarGraph(self::$width, self::$height); - $this->graph->SetScale('lin'); - - $this->renderTitle(); - } - - - private function renderPlotLine($groupID, $filled = false, $combination = false, $dimensions = '2d') - { - $grouping = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotGrouping(); - - $labelCount = count($this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex(0)->getPointCount()); - if ($labelCount > 0) { - $datasetLabels = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotCategoryByIndex(0)->getDataValues(); - $datasetLabels = $this->formatDataSetLabels($groupID, $datasetLabels, $labelCount); - $this->graph->xaxis->SetTickLabels($datasetLabels); - } - - $seriesCount = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotSeriesCount(); - $seriesPlots = array(); - if ($grouping == 'percentStacked') { - $sumValues = $this->percentageSumCalculation($groupID, $seriesCount); - } - - // Loop through each data series in turn - for ($i = 0; $i < $seriesCount; ++$i) { - $dataValues = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getDataValues(); - $marker = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getPointMarker(); - - if ($grouping == 'percentStacked') { - $dataValues = $this->percentageAdjustValues($dataValues, $sumValues); - } - - // Fill in any missing values in the $dataValues array - $testCurrentIndex = 0; - foreach ($dataValues as $k => $dataValue) { - while ($k != $testCurrentIndex) { - $dataValues[$testCurrentIndex] = null; - ++$testCurrentIndex; - } - ++$testCurrentIndex; - } - - $seriesPlot = new LinePlot($dataValues); - if ($combination) { - $seriesPlot->SetBarCenter(); - } - - if ($filled) { - $seriesPlot->SetFilled(true); - $seriesPlot->SetColor('black'); - $seriesPlot->SetFillColor(self::$colourSet[self::$plotColour++]); - } else { - // Set the appropriate plot marker - $this->formatPointMarker($seriesPlot, $marker); - } - $dataLabel = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotLabelByIndex($i)->getDataValue(); - $seriesPlot->SetLegend($dataLabel); - - $seriesPlots[] = $seriesPlot; - } - - if ($grouping == 'standard') { - $groupPlot = $seriesPlots; - } else { - $groupPlot = new AccLinePlot($seriesPlots); - } - $this->graph->Add($groupPlot); - } - - - private function renderPlotBar($groupID, $dimensions = '2d') - { - $rotation = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotDirection(); - // Rotate for bar rather than column chart - if (($groupID == 0) && ($rotation == 'bar')) { - $this->graph->Set90AndMargin(); - } - $grouping = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotGrouping(); - - $labelCount = count($this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex(0)->getPointCount()); - if ($labelCount > 0) { - $datasetLabels = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotCategoryByIndex(0)->getDataValues(); - $datasetLabels = $this->formatDataSetLabels($groupID, $datasetLabels, $labelCount, $rotation); - // Rotate for bar rather than column chart - if ($rotation == 'bar') { - $datasetLabels = array_reverse($datasetLabels); - $this->graph->yaxis->SetPos('max'); - $this->graph->yaxis->SetLabelAlign('center', 'top'); - $this->graph->yaxis->SetLabelSide(SIDE_RIGHT); - } - $this->graph->xaxis->SetTickLabels($datasetLabels); - } - - - $seriesCount = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotSeriesCount(); - $seriesPlots = array(); - if ($grouping == 'percentStacked') { - $sumValues = $this->percentageSumCalculation($groupID, $seriesCount); - } - - // Loop through each data series in turn - for ($j = 0; $j < $seriesCount; ++$j) { - $dataValues = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($j)->getDataValues(); - if ($grouping == 'percentStacked') { - $dataValues = $this->percentageAdjustValues($dataValues, $sumValues); - } - - // Fill in any missing values in the $dataValues array - $testCurrentIndex = 0; - foreach ($dataValues as $k => $dataValue) { - while ($k != $testCurrentIndex) { - $dataValues[$testCurrentIndex] = null; - ++$testCurrentIndex; - } - ++$testCurrentIndex; - } - - // Reverse the $dataValues order for bar rather than column chart - if ($rotation == 'bar') { - $dataValues = array_reverse($dataValues); - } - $seriesPlot = new BarPlot($dataValues); - $seriesPlot->SetColor('black'); - $seriesPlot->SetFillColor(self::$colourSet[self::$plotColour++]); - if ($dimensions == '3d') { - $seriesPlot->SetShadow(); - } - if (!$this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotLabelByIndex($j)) { - $dataLabel = ''; - } else { - $dataLabel = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotLabelByIndex($j)->getDataValue(); - } - $seriesPlot->SetLegend($dataLabel); - - $seriesPlots[] = $seriesPlot; - } - // Reverse the plot order for bar rather than column chart - if (($rotation == 'bar') && (!($grouping == 'percentStacked'))) { - $seriesPlots = array_reverse($seriesPlots); - } - - if ($grouping == 'clustered') { - $groupPlot = new GroupBarPlot($seriesPlots); - } elseif ($grouping == 'standard') { - $groupPlot = new GroupBarPlot($seriesPlots); - } else { - $groupPlot = new AccBarPlot($seriesPlots); - if ($dimensions == '3d') { - $groupPlot->SetShadow(); - } - } - - $this->graph->Add($groupPlot); - } - - - private function renderPlotScatter($groupID, $bubble) - { - $grouping = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotGrouping(); - $scatterStyle = $bubbleSize = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotStyle(); - - $seriesCount = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotSeriesCount(); - $seriesPlots = array(); - - // Loop through each data series in turn - for ($i = 0; $i < $seriesCount; ++$i) { - $dataValuesY = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotCategoryByIndex($i)->getDataValues(); - $dataValuesX = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getDataValues(); - - foreach ($dataValuesY as $k => $dataValueY) { - $dataValuesY[$k] = $k; - } - - $seriesPlot = new ScatterPlot($dataValuesX, $dataValuesY); - if ($scatterStyle == 'lineMarker') { - $seriesPlot->SetLinkPoints(); - $seriesPlot->link->SetColor(self::$colourSet[self::$plotColour]); - } elseif ($scatterStyle == 'smoothMarker') { - $spline = new Spline($dataValuesY, $dataValuesX); - list($splineDataY, $splineDataX) = $spline->Get(count($dataValuesX) * self::$width / 20); - $lplot = new LinePlot($splineDataX, $splineDataY); - $lplot->SetColor(self::$colourSet[self::$plotColour]); - - $this->graph->Add($lplot); - } - - if ($bubble) { - $this->formatPointMarker($seriesPlot, 'dot'); - $seriesPlot->mark->SetColor('black'); - $seriesPlot->mark->SetSize($bubbleSize); - } else { - $marker = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getPointMarker(); - $this->formatPointMarker($seriesPlot, $marker); - } - $dataLabel = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotLabelByIndex($i)->getDataValue(); - $seriesPlot->SetLegend($dataLabel); - - $this->graph->Add($seriesPlot); - } - } - - - private function renderPlotRadar($groupID) - { - $radarStyle = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotStyle(); - - $seriesCount = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotSeriesCount(); - $seriesPlots = array(); - - // Loop through each data series in turn - for ($i = 0; $i < $seriesCount; ++$i) { - $dataValuesY = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotCategoryByIndex($i)->getDataValues(); - $dataValuesX = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getDataValues(); - $marker = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getPointMarker(); - - $dataValues = array(); - foreach ($dataValuesY as $k => $dataValueY) { - $dataValues[$k] = implode(' ', array_reverse($dataValueY)); - } - $tmp = array_shift($dataValues); - $dataValues[] = $tmp; - $tmp = array_shift($dataValuesX); - $dataValuesX[] = $tmp; - - $this->graph->SetTitles(array_reverse($dataValues)); - - $seriesPlot = new RadarPlot(array_reverse($dataValuesX)); - - $dataLabel = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotLabelByIndex($i)->getDataValue(); - $seriesPlot->SetColor(self::$colourSet[self::$plotColour++]); - if ($radarStyle == 'filled') { - $seriesPlot->SetFillColor(self::$colourSet[self::$plotColour]); - } - $this->formatPointMarker($seriesPlot, $marker); - $seriesPlot->SetLegend($dataLabel); - - $this->graph->Add($seriesPlot); - } - } - - - private function renderPlotContour($groupID) - { - $contourStyle = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotStyle(); - - $seriesCount = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotSeriesCount(); - $seriesPlots = array(); - - $dataValues = array(); - // Loop through each data series in turn - for ($i = 0; $i < $seriesCount; ++$i) { - $dataValuesY = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotCategoryByIndex($i)->getDataValues(); - $dataValuesX = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getDataValues(); - - $dataValues[$i] = $dataValuesX; - } - $seriesPlot = new ContourPlot($dataValues); - - $this->graph->Add($seriesPlot); - } - - - private function renderPlotStock($groupID) - { - $seriesCount = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotSeriesCount(); - $plotOrder = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotOrder(); - - $dataValues = array(); - // Loop through each data series in turn and build the plot arrays - foreach ($plotOrder as $i => $v) { - $dataValuesX = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($v)->getDataValues(); - foreach ($dataValuesX as $j => $dataValueX) { - $dataValues[$plotOrder[$i]][$j] = $dataValueX; - } - } - if (empty($dataValues)) { - return; - } - - $dataValuesPlot = array(); - // Flatten the plot arrays to a single dimensional array to work with jpgraph - for ($j = 0; $j < count($dataValues[0]); ++$j) { - for ($i = 0; $i < $seriesCount; ++$i) { - $dataValuesPlot[] = $dataValues[$i][$j]; - } - } - - // Set the x-axis labels - $labelCount = count($this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex(0)->getPointCount()); - if ($labelCount > 0) { - $datasetLabels = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotCategoryByIndex(0)->getDataValues(); - $datasetLabels = $this->formatDataSetLabels($groupID, $datasetLabels, $labelCount); - $this->graph->xaxis->SetTickLabels($datasetLabels); - } - - $seriesPlot = new StockPlot($dataValuesPlot); - $seriesPlot->SetWidth(20); - - $this->graph->Add($seriesPlot); - } - - - private function renderAreaChart($groupCount, $dimensions = '2d') - { - require_once(PHPExcel_Settings::getChartRendererPath().'jpgraph_line.php'); - - $this->renderCartesianPlotArea(); - - for ($i = 0; $i < $groupCount; ++$i) { - $this->renderPlotLine($i, true, false, $dimensions); - } - } - - - private function renderLineChart($groupCount, $dimensions = '2d') - { - require_once(PHPExcel_Settings::getChartRendererPath().'jpgraph_line.php'); - - $this->renderCartesianPlotArea(); - - for ($i = 0; $i < $groupCount; ++$i) { - $this->renderPlotLine($i, false, false, $dimensions); - } - } - - - private function renderBarChart($groupCount, $dimensions = '2d') - { - require_once(PHPExcel_Settings::getChartRendererPath().'jpgraph_bar.php'); - - $this->renderCartesianPlotArea(); - - for ($i = 0; $i < $groupCount; ++$i) { - $this->renderPlotBar($i, $dimensions); - } - } - - - private function renderScatterChart($groupCount) - { - require_once(PHPExcel_Settings::getChartRendererPath().'jpgraph_scatter.php'); - require_once(PHPExcel_Settings::getChartRendererPath().'jpgraph_regstat.php'); - require_once(PHPExcel_Settings::getChartRendererPath().'jpgraph_line.php'); - - $this->renderCartesianPlotArea('linlin'); - - for ($i = 0; $i < $groupCount; ++$i) { - $this->renderPlotScatter($i, false); - } - } - - - private function renderBubbleChart($groupCount) - { - require_once(PHPExcel_Settings::getChartRendererPath().'jpgraph_scatter.php'); - - $this->renderCartesianPlotArea('linlin'); - - for ($i = 0; $i < $groupCount; ++$i) { - $this->renderPlotScatter($i, true); - } - } - - - private function renderPieChart($groupCount, $dimensions = '2d', $doughnut = false, $multiplePlots = false) - { - require_once(PHPExcel_Settings::getChartRendererPath().'jpgraph_pie.php'); - if ($dimensions == '3d') { - require_once(PHPExcel_Settings::getChartRendererPath().'jpgraph_pie3d.php'); - } - - $this->renderPiePlotArea($doughnut); - - $iLimit = ($multiplePlots) ? $groupCount : 1; - for ($groupID = 0; $groupID < $iLimit; ++$groupID) { - $grouping = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotGrouping(); - $exploded = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotStyle(); - if ($groupID == 0) { - $labelCount = count($this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex(0)->getPointCount()); - if ($labelCount > 0) { - $datasetLabels = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotCategoryByIndex(0)->getDataValues(); - $datasetLabels = $this->formatDataSetLabels($groupID, $datasetLabels, $labelCount); - } - } - - $seriesCount = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotSeriesCount(); - $seriesPlots = array(); - // For pie charts, we only display the first series: doughnut charts generally display all series - $jLimit = ($multiplePlots) ? $seriesCount : 1; - // Loop through each data series in turn - for ($j = 0; $j < $jLimit; ++$j) { - $dataValues = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($j)->getDataValues(); - - // Fill in any missing values in the $dataValues array - $testCurrentIndex = 0; - foreach ($dataValues as $k => $dataValue) { - while ($k != $testCurrentIndex) { - $dataValues[$testCurrentIndex] = null; - ++$testCurrentIndex; - } - ++$testCurrentIndex; - } - - if ($dimensions == '3d') { - $seriesPlot = new PiePlot3D($dataValues); - } else { - if ($doughnut) { - $seriesPlot = new PiePlotC($dataValues); - } else { - $seriesPlot = new PiePlot($dataValues); - } - } - - if ($multiplePlots) { - $seriesPlot->SetSize(($jLimit-$j) / ($jLimit * 4)); - } - - if ($doughnut) { - $seriesPlot->SetMidColor('white'); - } - - $seriesPlot->SetColor(self::$colourSet[self::$plotColour++]); - if (count($datasetLabels) > 0) { - $seriesPlot->SetLabels(array_fill(0, count($datasetLabels), '')); - } - if ($dimensions != '3d') { - $seriesPlot->SetGuideLines(false); - } - if ($j == 0) { - if ($exploded) { - $seriesPlot->ExplodeAll(); - } - $seriesPlot->SetLegends($datasetLabels); - } - - $this->graph->Add($seriesPlot); - } - } - } - - - private function renderRadarChart($groupCount) - { - require_once(PHPExcel_Settings::getChartRendererPath().'jpgraph_radar.php'); - - $this->renderRadarPlotArea(); - - for ($groupID = 0; $groupID < $groupCount; ++$groupID) { - $this->renderPlotRadar($groupID); - } - } - - - private function renderStockChart($groupCount) - { - require_once(PHPExcel_Settings::getChartRendererPath().'jpgraph_stock.php'); - - $this->renderCartesianPlotArea('intint'); - - for ($groupID = 0; $groupID < $groupCount; ++$groupID) { - $this->renderPlotStock($groupID); - } - } - - - private function renderContourChart($groupCount, $dimensions) - { - require_once(PHPExcel_Settings::getChartRendererPath().'jpgraph_contour.php'); - - $this->renderCartesianPlotArea('intint'); - - for ($i = 0; $i < $groupCount; ++$i) { - $this->renderPlotContour($i); - } - } - - - private function renderCombinationChart($groupCount, $dimensions, $outputDestination) - { - require_once(PHPExcel_Settings::getChartRendererPath().'jpgraph_line.php'); - require_once(PHPExcel_Settings::getChartRendererPath().'jpgraph_bar.php'); - require_once(PHPExcel_Settings::getChartRendererPath().'jpgraph_scatter.php'); - require_once(PHPExcel_Settings::getChartRendererPath().'jpgraph_regstat.php'); - require_once(PHPExcel_Settings::getChartRendererPath().'jpgraph_line.php'); - - $this->renderCartesianPlotArea(); - - for ($i = 0; $i < $groupCount; ++$i) { - $dimensions = null; - $chartType = $this->chart->getPlotArea()->getPlotGroupByIndex($i)->getPlotType(); - switch ($chartType) { - case 'area3DChart': - $dimensions = '3d'; - // no break - case 'areaChart': - $this->renderPlotLine($i, true, true, $dimensions); - break; - case 'bar3DChart': - $dimensions = '3d'; - // no break - case 'barChart': - $this->renderPlotBar($i, $dimensions); - break; - case 'line3DChart': - $dimensions = '3d'; - // no break - case 'lineChart': - $this->renderPlotLine($i, false, true, $dimensions); - break; - case 'scatterChart': - $this->renderPlotScatter($i, false); - break; - case 'bubbleChart': - $this->renderPlotScatter($i, true); - break; - default: - $this->graph = null; - return false; - } - } - - $this->renderLegend(); - - $this->graph->Stroke($outputDestination); - return true; - } - - - public function render($outputDestination) - { - self::$plotColour = 0; - - $groupCount = $this->chart->getPlotArea()->getPlotGroupCount(); - - $dimensions = null; - if ($groupCount == 1) { - $chartType = $this->chart->getPlotArea()->getPlotGroupByIndex(0)->getPlotType(); - } else { - $chartTypes = array(); - for ($i = 0; $i < $groupCount; ++$i) { - $chartTypes[] = $this->chart->getPlotArea()->getPlotGroupByIndex($i)->getPlotType(); - } - $chartTypes = array_unique($chartTypes); - if (count($chartTypes) == 1) { - $chartType = array_pop($chartTypes); - } elseif (count($chartTypes) == 0) { - echo 'Chart is not yet implemented
    '; - return false; - } else { - return $this->renderCombinationChart($groupCount, $dimensions, $outputDestination); - } - } - - switch ($chartType) { - case 'area3DChart': - $dimensions = '3d'; - // no break - case 'areaChart': - $this->renderAreaChart($groupCount, $dimensions); - break; - case 'bar3DChart': - $dimensions = '3d'; - // no break - case 'barChart': - $this->renderBarChart($groupCount, $dimensions); - break; - case 'line3DChart': - $dimensions = '3d'; - // no break - case 'lineChart': - $this->renderLineChart($groupCount, $dimensions); - break; - case 'pie3DChart': - $dimensions = '3d'; - // no break - case 'pieChart': - $this->renderPieChart($groupCount, $dimensions, false, false); - break; - case 'doughnut3DChart': - $dimensions = '3d'; - // no break - case 'doughnutChart': - $this->renderPieChart($groupCount, $dimensions, true, true); - break; - case 'scatterChart': - $this->renderScatterChart($groupCount); - break; - case 'bubbleChart': - $this->renderBubbleChart($groupCount); - break; - case 'radarChart': - $this->renderRadarChart($groupCount); - break; - case 'surface3DChart': - $dimensions = '3d'; - // no break - case 'surfaceChart': - $this->renderContourChart($groupCount, $dimensions); - break; - case 'stockChart': - $this->renderStockChart($groupCount, $dimensions); - break; - default: - echo $chartType.' is not yet implemented
    '; - return false; - } - $this->renderLegend(); - - $this->graph->Stroke($outputDestination); - return true; - } - - - /** - * Create a new PHPExcel_Chart_Renderer_jpgraph - */ - public function __construct(PHPExcel_Chart $chart) - { - $this->graph = null; - $this->chart = $chart; - } -} diff --git a/application/third_party/PHPExcel/Chart/Title.php b/application/third_party/PHPExcel/Chart/Title.php deleted file mode 100644 index d8dc14f2..00000000 --- a/application/third_party/PHPExcel/Chart/Title.php +++ /dev/null @@ -1,86 +0,0 @@ -caption = $caption; - $this->layout = $layout; - } - - /** - * Get caption - * - * @return string - */ - public function getCaption() - { - return $this->caption; - } - - /** - * Set caption - * - * @param string $caption - * @return PHPExcel_Chart_Title - */ - public function setCaption($caption = null) - { - $this->caption = $caption; - - return $this; - } - - /** - * Get Layout - * - * @return PHPExcel_Chart_Layout - */ - public function getLayout() - { - return $this->layout; - } -} diff --git a/application/third_party/PHPExcel/Comment.php b/application/third_party/PHPExcel/Comment.php deleted file mode 100644 index d55363fd..00000000 --- a/application/third_party/PHPExcel/Comment.php +++ /dev/null @@ -1,338 +0,0 @@ -author = 'Author'; - $this->text = new PHPExcel_RichText(); - $this->fillColor = new PHPExcel_Style_Color('FFFFFFE1'); - $this->alignment = PHPExcel_Style_Alignment::HORIZONTAL_GENERAL; - } - - /** - * Get Author - * - * @return string - */ - public function getAuthor() - { - return $this->author; - } - - /** - * Set Author - * - * @param string $pValue - * @return PHPExcel_Comment - */ - public function setAuthor($pValue = '') - { - $this->author = $pValue; - return $this; - } - - /** - * Get Rich text comment - * - * @return PHPExcel_RichText - */ - public function getText() - { - return $this->text; - } - - /** - * Set Rich text comment - * - * @param PHPExcel_RichText $pValue - * @return PHPExcel_Comment - */ - public function setText(PHPExcel_RichText $pValue) - { - $this->text = $pValue; - return $this; - } - - /** - * Get comment width (CSS style, i.e. XXpx or YYpt) - * - * @return string - */ - public function getWidth() - { - return $this->width; - } - - /** - * Set comment width (CSS style, i.e. XXpx or YYpt) - * - * @param string $value - * @return PHPExcel_Comment - */ - public function setWidth($value = '96pt') - { - $this->width = $value; - return $this; - } - - /** - * Get comment height (CSS style, i.e. XXpx or YYpt) - * - * @return string - */ - public function getHeight() - { - return $this->height; - } - - /** - * Set comment height (CSS style, i.e. XXpx or YYpt) - * - * @param string $value - * @return PHPExcel_Comment - */ - public function setHeight($value = '55.5pt') - { - $this->height = $value; - return $this; - } - - /** - * Get left margin (CSS style, i.e. XXpx or YYpt) - * - * @return string - */ - public function getMarginLeft() - { - return $this->marginLeft; - } - - /** - * Set left margin (CSS style, i.e. XXpx or YYpt) - * - * @param string $value - * @return PHPExcel_Comment - */ - public function setMarginLeft($value = '59.25pt') - { - $this->marginLeft = $value; - return $this; - } - - /** - * Get top margin (CSS style, i.e. XXpx or YYpt) - * - * @return string - */ - public function getMarginTop() - { - return $this->marginTop; - } - - /** - * Set top margin (CSS style, i.e. XXpx or YYpt) - * - * @param string $value - * @return PHPExcel_Comment - */ - public function setMarginTop($value = '1.5pt') - { - $this->marginTop = $value; - return $this; - } - - /** - * Is the comment visible by default? - * - * @return boolean - */ - public function getVisible() - { - return $this->visible; - } - - /** - * Set comment default visibility - * - * @param boolean $value - * @return PHPExcel_Comment - */ - public function setVisible($value = false) - { - $this->visible = $value; - return $this; - } - - /** - * Get fill color - * - * @return PHPExcel_Style_Color - */ - public function getFillColor() - { - return $this->fillColor; - } - - /** - * Set Alignment - * - * @param string $pValue - * @return PHPExcel_Comment - */ - public function setAlignment($pValue = PHPExcel_Style_Alignment::HORIZONTAL_GENERAL) - { - $this->alignment = $pValue; - return $this; - } - - /** - * Get Alignment - * - * @return string - */ - public function getAlignment() - { - return $this->alignment; - } - - /** - * Get hash code - * - * @return string Hash code - */ - public function getHashCode() - { - return md5( - $this->author . - $this->text->getHashCode() . - $this->width . - $this->height . - $this->marginLeft . - $this->marginTop . - ($this->visible ? 1 : 0) . - $this->fillColor->getHashCode() . - $this->alignment . - __CLASS__ - ); - } - - /** - * Implement PHP __clone to create a deep clone, not just a shallow copy. - */ - public function __clone() - { - $vars = get_object_vars($this); - foreach ($vars as $key => $value) { - if (is_object($value)) { - $this->$key = clone $value; - } else { - $this->$key = $value; - } - } - } - - /** - * Convert to string - * - * @return string - */ - public function __toString() - { - return $this->text->getPlainText(); - } -} diff --git a/application/third_party/PHPExcel/DocumentProperties.php b/application/third_party/PHPExcel/DocumentProperties.php deleted file mode 100644 index 2395ba98..00000000 --- a/application/third_party/PHPExcel/DocumentProperties.php +++ /dev/null @@ -1,611 +0,0 @@ -lastModifiedBy = $this->creator; - $this->created = time(); - $this->modified = time(); - } - - /** - * Get Creator - * - * @return string - */ - public function getCreator() - { - return $this->creator; - } - - /** - * Set Creator - * - * @param string $pValue - * @return PHPExcel_DocumentProperties - */ - public function setCreator($pValue = '') - { - $this->creator = $pValue; - return $this; - } - - /** - * Get Last Modified By - * - * @return string - */ - public function getLastModifiedBy() - { - return $this->lastModifiedBy; - } - - /** - * Set Last Modified By - * - * @param string $pValue - * @return PHPExcel_DocumentProperties - */ - public function setLastModifiedBy($pValue = '') - { - $this->lastModifiedBy = $pValue; - return $this; - } - - /** - * Get Created - * - * @return datetime - */ - public function getCreated() - { - return $this->created; - } - - /** - * Set Created - * - * @param datetime $pValue - * @return PHPExcel_DocumentProperties - */ - public function setCreated($pValue = null) - { - if ($pValue === null) { - $pValue = time(); - } elseif (is_string($pValue)) { - if (is_numeric($pValue)) { - $pValue = intval($pValue); - } else { - $pValue = strtotime($pValue); - } - } - - $this->created = $pValue; - return $this; - } - - /** - * Get Modified - * - * @return datetime - */ - public function getModified() - { - return $this->modified; - } - - /** - * Set Modified - * - * @param datetime $pValue - * @return PHPExcel_DocumentProperties - */ - public function setModified($pValue = null) - { - if ($pValue === null) { - $pValue = time(); - } elseif (is_string($pValue)) { - if (is_numeric($pValue)) { - $pValue = intval($pValue); - } else { - $pValue = strtotime($pValue); - } - } - - $this->modified = $pValue; - return $this; - } - - /** - * Get Title - * - * @return string - */ - public function getTitle() - { - return $this->title; - } - - /** - * Set Title - * - * @param string $pValue - * @return PHPExcel_DocumentProperties - */ - public function setTitle($pValue = '') - { - $this->title = $pValue; - return $this; - } - - /** - * Get Description - * - * @return string - */ - public function getDescription() - { - return $this->description; - } - - /** - * Set Description - * - * @param string $pValue - * @return PHPExcel_DocumentProperties - */ - public function setDescription($pValue = '') - { - $this->description = $pValue; - return $this; - } - - /** - * Get Subject - * - * @return string - */ - public function getSubject() - { - return $this->subject; - } - - /** - * Set Subject - * - * @param string $pValue - * @return PHPExcel_DocumentProperties - */ - public function setSubject($pValue = '') - { - $this->subject = $pValue; - return $this; - } - - /** - * Get Keywords - * - * @return string - */ - public function getKeywords() - { - return $this->keywords; - } - - /** - * Set Keywords - * - * @param string $pValue - * @return PHPExcel_DocumentProperties - */ - public function setKeywords($pValue = '') - { - $this->keywords = $pValue; - return $this; - } - - /** - * Get Category - * - * @return string - */ - public function getCategory() - { - return $this->category; - } - - /** - * Set Category - * - * @param string $pValue - * @return PHPExcel_DocumentProperties - */ - public function setCategory($pValue = '') - { - $this->category = $pValue; - return $this; - } - - /** - * Get Company - * - * @return string - */ - public function getCompany() - { - return $this->company; - } - - /** - * Set Company - * - * @param string $pValue - * @return PHPExcel_DocumentProperties - */ - public function setCompany($pValue = '') - { - $this->company = $pValue; - return $this; - } - - /** - * Get Manager - * - * @return string - */ - public function getManager() - { - return $this->manager; - } - - /** - * Set Manager - * - * @param string $pValue - * @return PHPExcel_DocumentProperties - */ - public function setManager($pValue = '') - { - $this->manager = $pValue; - return $this; - } - - /** - * Get a List of Custom Property Names - * - * @return array of string - */ - public function getCustomProperties() - { - return array_keys($this->customProperties); - } - - /** - * Check if a Custom Property is defined - * - * @param string $propertyName - * @return boolean - */ - public function isCustomPropertySet($propertyName) - { - return isset($this->customProperties[$propertyName]); - } - - /** - * Get a Custom Property Value - * - * @param string $propertyName - * @return string - */ - public function getCustomPropertyValue($propertyName) - { - if (isset($this->customProperties[$propertyName])) { - return $this->customProperties[$propertyName]['value']; - } - - } - - /** - * Get a Custom Property Type - * - * @param string $propertyName - * @return string - */ - public function getCustomPropertyType($propertyName) - { - if (isset($this->customProperties[$propertyName])) { - return $this->customProperties[$propertyName]['type']; - } - - } - - /** - * Set a Custom Property - * - * @param string $propertyName - * @param mixed $propertyValue - * @param string $propertyType - * 'i' : Integer - * 'f' : Floating Point - * 's' : String - * 'd' : Date/Time - * 'b' : Boolean - * @return PHPExcel_DocumentProperties - */ - public function setCustomProperty($propertyName, $propertyValue = '', $propertyType = null) - { - if (($propertyType === null) || (!in_array($propertyType, array(self::PROPERTY_TYPE_INTEGER, - self::PROPERTY_TYPE_FLOAT, - self::PROPERTY_TYPE_STRING, - self::PROPERTY_TYPE_DATE, - self::PROPERTY_TYPE_BOOLEAN)))) { - if ($propertyValue === null) { - $propertyType = self::PROPERTY_TYPE_STRING; - } elseif (is_float($propertyValue)) { - $propertyType = self::PROPERTY_TYPE_FLOAT; - } elseif (is_int($propertyValue)) { - $propertyType = self::PROPERTY_TYPE_INTEGER; - } elseif (is_bool($propertyValue)) { - $propertyType = self::PROPERTY_TYPE_BOOLEAN; - } else { - $propertyType = self::PROPERTY_TYPE_STRING; - } - } - - $this->customProperties[$propertyName] = array( - 'value' => $propertyValue, - 'type' => $propertyType - ); - return $this; - } - - /** - * Implement PHP __clone to create a deep clone, not just a shallow copy. - */ - public function __clone() - { - $vars = get_object_vars($this); - foreach ($vars as $key => $value) { - if (is_object($value)) { - $this->$key = clone $value; - } else { - $this->$key = $value; - } - } - } - - public static function convertProperty($propertyValue, $propertyType) - { - switch ($propertyType) { - case 'empty': // Empty - return ''; - break; - case 'null': // Null - return null; - break; - case 'i1': // 1-Byte Signed Integer - case 'i2': // 2-Byte Signed Integer - case 'i4': // 4-Byte Signed Integer - case 'i8': // 8-Byte Signed Integer - case 'int': // Integer - return (int) $propertyValue; - break; - case 'ui1': // 1-Byte Unsigned Integer - case 'ui2': // 2-Byte Unsigned Integer - case 'ui4': // 4-Byte Unsigned Integer - case 'ui8': // 8-Byte Unsigned Integer - case 'uint': // Unsigned Integer - return abs((int) $propertyValue); - break; - case 'r4': // 4-Byte Real Number - case 'r8': // 8-Byte Real Number - case 'decimal': // Decimal - return (float) $propertyValue; - break; - case 'lpstr': // LPSTR - case 'lpwstr': // LPWSTR - case 'bstr': // Basic String - return $propertyValue; - break; - case 'date': // Date and Time - case 'filetime': // File Time - return strtotime($propertyValue); - break; - case 'bool': // Boolean - return ($propertyValue == 'true') ? true : false; - break; - case 'cy': // Currency - case 'error': // Error Status Code - case 'vector': // Vector - case 'array': // Array - case 'blob': // Binary Blob - case 'oblob': // Binary Blob Object - case 'stream': // Binary Stream - case 'ostream': // Binary Stream Object - case 'storage': // Binary Storage - case 'ostorage': // Binary Storage Object - case 'vstream': // Binary Versioned Stream - case 'clsid': // Class ID - case 'cf': // Clipboard Data - return $propertyValue; - break; - } - return $propertyValue; - } - - public static function convertPropertyType($propertyType) - { - switch ($propertyType) { - case 'i1': // 1-Byte Signed Integer - case 'i2': // 2-Byte Signed Integer - case 'i4': // 4-Byte Signed Integer - case 'i8': // 8-Byte Signed Integer - case 'int': // Integer - case 'ui1': // 1-Byte Unsigned Integer - case 'ui2': // 2-Byte Unsigned Integer - case 'ui4': // 4-Byte Unsigned Integer - case 'ui8': // 8-Byte Unsigned Integer - case 'uint': // Unsigned Integer - return self::PROPERTY_TYPE_INTEGER; - break; - case 'r4': // 4-Byte Real Number - case 'r8': // 8-Byte Real Number - case 'decimal': // Decimal - return self::PROPERTY_TYPE_FLOAT; - break; - case 'empty': // Empty - case 'null': // Null - case 'lpstr': // LPSTR - case 'lpwstr': // LPWSTR - case 'bstr': // Basic String - return self::PROPERTY_TYPE_STRING; - break; - case 'date': // Date and Time - case 'filetime': // File Time - return self::PROPERTY_TYPE_DATE; - break; - case 'bool': // Boolean - return self::PROPERTY_TYPE_BOOLEAN; - break; - case 'cy': // Currency - case 'error': // Error Status Code - case 'vector': // Vector - case 'array': // Array - case 'blob': // Binary Blob - case 'oblob': // Binary Blob Object - case 'stream': // Binary Stream - case 'ostream': // Binary Stream Object - case 'storage': // Binary Storage - case 'ostorage': // Binary Storage Object - case 'vstream': // Binary Versioned Stream - case 'clsid': // Class ID - case 'cf': // Clipboard Data - return self::PROPERTY_TYPE_UNKNOWN; - break; - } - return self::PROPERTY_TYPE_UNKNOWN; - } -} diff --git a/application/third_party/PHPExcel/DocumentSecurity.php b/application/third_party/PHPExcel/DocumentSecurity.php deleted file mode 100644 index ecea0da1..00000000 --- a/application/third_party/PHPExcel/DocumentSecurity.php +++ /dev/null @@ -1,222 +0,0 @@ -lockRevision = false; - $this->lockStructure = false; - $this->lockWindows = false; - $this->revisionsPassword = ''; - $this->workbookPassword = ''; - } - - /** - * Is some sort of document security enabled? - * - * @return boolean - */ - public function isSecurityEnabled() - { - return $this->lockRevision || - $this->lockStructure || - $this->lockWindows; - } - - /** - * Get LockRevision - * - * @return boolean - */ - public function getLockRevision() - { - return $this->lockRevision; - } - - /** - * Set LockRevision - * - * @param boolean $pValue - * @return PHPExcel_DocumentSecurity - */ - public function setLockRevision($pValue = false) - { - $this->lockRevision = $pValue; - return $this; - } - - /** - * Get LockStructure - * - * @return boolean - */ - public function getLockStructure() - { - return $this->lockStructure; - } - - /** - * Set LockStructure - * - * @param boolean $pValue - * @return PHPExcel_DocumentSecurity - */ - public function setLockStructure($pValue = false) - { - $this->lockStructure = $pValue; - return $this; - } - - /** - * Get LockWindows - * - * @return boolean - */ - public function getLockWindows() - { - return $this->lockWindows; - } - - /** - * Set LockWindows - * - * @param boolean $pValue - * @return PHPExcel_DocumentSecurity - */ - public function setLockWindows($pValue = false) - { - $this->lockWindows = $pValue; - return $this; - } - - /** - * Get RevisionsPassword (hashed) - * - * @return string - */ - public function getRevisionsPassword() - { - return $this->revisionsPassword; - } - - /** - * Set RevisionsPassword - * - * @param string $pValue - * @param boolean $pAlreadyHashed If the password has already been hashed, set this to true - * @return PHPExcel_DocumentSecurity - */ - public function setRevisionsPassword($pValue = '', $pAlreadyHashed = false) - { - if (!$pAlreadyHashed) { - $pValue = PHPExcel_Shared_PasswordHasher::hashPassword($pValue); - } - $this->revisionsPassword = $pValue; - return $this; - } - - /** - * Get WorkbookPassword (hashed) - * - * @return string - */ - public function getWorkbookPassword() - { - return $this->workbookPassword; - } - - /** - * Set WorkbookPassword - * - * @param string $pValue - * @param boolean $pAlreadyHashed If the password has already been hashed, set this to true - * @return PHPExcel_DocumentSecurity - */ - public function setWorkbookPassword($pValue = '', $pAlreadyHashed = false) - { - if (!$pAlreadyHashed) { - $pValue = PHPExcel_Shared_PasswordHasher::hashPassword($pValue); - } - $this->workbookPassword = $pValue; - return $this; - } - - /** - * Implement PHP __clone to create a deep clone, not just a shallow copy. - */ - public function __clone() - { - $vars = get_object_vars($this); - foreach ($vars as $key => $value) { - if (is_object($value)) { - $this->$key = clone $value; - } else { - $this->$key = $value; - } - } - } -} diff --git a/application/third_party/PHPExcel/Exception.php b/application/third_party/PHPExcel/Exception.php deleted file mode 100644 index b27750ea..00000000 --- a/application/third_party/PHPExcel/Exception.php +++ /dev/null @@ -1,54 +0,0 @@ -line = $line; - $e->file = $file; - throw $e; - } -} diff --git a/application/third_party/PHPExcel/HashTable.php b/application/third_party/PHPExcel/HashTable.php deleted file mode 100644 index c21d18c3..00000000 --- a/application/third_party/PHPExcel/HashTable.php +++ /dev/null @@ -1,204 +0,0 @@ -addFromSource($pSource); - } - } - - /** - * Add HashTable items from source - * - * @param PHPExcel_IComparable[] $pSource Source array to create HashTable from - * @throws PHPExcel_Exception - */ - public function addFromSource($pSource = null) - { - // Check if an array was passed - if ($pSource == null) { - return; - } elseif (!is_array($pSource)) { - throw new PHPExcel_Exception('Invalid array parameter passed.'); - } - - foreach ($pSource as $item) { - $this->add($item); - } - } - - /** - * Add HashTable item - * - * @param PHPExcel_IComparable $pSource Item to add - * @throws PHPExcel_Exception - */ - public function add(PHPExcel_IComparable $pSource = null) - { - $hash = $pSource->getHashCode(); - if (!isset($this->items[$hash])) { - $this->items[$hash] = $pSource; - $this->keyMap[count($this->items) - 1] = $hash; - } - } - - /** - * Remove HashTable item - * - * @param PHPExcel_IComparable $pSource Item to remove - * @throws PHPExcel_Exception - */ - public function remove(PHPExcel_IComparable $pSource = null) - { - $hash = $pSource->getHashCode(); - if (isset($this->items[$hash])) { - unset($this->items[$hash]); - - $deleteKey = -1; - foreach ($this->keyMap as $key => $value) { - if ($deleteKey >= 0) { - $this->keyMap[$key - 1] = $value; - } - - if ($value == $hash) { - $deleteKey = $key; - } - } - unset($this->keyMap[count($this->keyMap) - 1]); - } - } - - /** - * Clear HashTable - * - */ - public function clear() - { - $this->items = array(); - $this->keyMap = array(); - } - - /** - * Count - * - * @return int - */ - public function count() - { - return count($this->items); - } - - /** - * Get index for hash code - * - * @param string $pHashCode - * @return int Index - */ - public function getIndexForHashCode($pHashCode = '') - { - return array_search($pHashCode, $this->keyMap); - } - - /** - * Get by index - * - * @param int $pIndex - * @return PHPExcel_IComparable - * - */ - public function getByIndex($pIndex = 0) - { - if (isset($this->keyMap[$pIndex])) { - return $this->getByHashCode($this->keyMap[$pIndex]); - } - - return null; - } - - /** - * Get by hashcode - * - * @param string $pHashCode - * @return PHPExcel_IComparable - * - */ - public function getByHashCode($pHashCode = '') - { - if (isset($this->items[$pHashCode])) { - return $this->items[$pHashCode]; - } - - return null; - } - - /** - * HashTable to array - * - * @return PHPExcel_IComparable[] - */ - public function toArray() - { - return $this->items; - } - - /** - * Implement PHP __clone to create a deep clone, not just a shallow copy. - */ - public function __clone() - { - $vars = get_object_vars($this); - foreach ($vars as $key => $value) { - if (is_object($value)) { - $this->$key = clone $value; - } - } - } -} diff --git a/application/third_party/PHPExcel/Helper/HTML.php b/application/third_party/PHPExcel/Helper/HTML.php deleted file mode 100644 index a78f11c1..00000000 --- a/application/third_party/PHPExcel/Helper/HTML.php +++ /dev/null @@ -1,808 +0,0 @@ - 'f0f8ff', - 'antiquewhite' => 'faebd7', - 'antiquewhite1' => 'ffefdb', - 'antiquewhite2' => 'eedfcc', - 'antiquewhite3' => 'cdc0b0', - 'antiquewhite4' => '8b8378', - 'aqua' => '00ffff', - 'aquamarine1' => '7fffd4', - 'aquamarine2' => '76eec6', - 'aquamarine4' => '458b74', - 'azure1' => 'f0ffff', - 'azure2' => 'e0eeee', - 'azure3' => 'c1cdcd', - 'azure4' => '838b8b', - 'beige' => 'f5f5dc', - 'bisque1' => 'ffe4c4', - 'bisque2' => 'eed5b7', - 'bisque3' => 'cdb79e', - 'bisque4' => '8b7d6b', - 'black' => '000000', - 'blanchedalmond' => 'ffebcd', - 'blue' => '0000ff', - 'blue1' => '0000ff', - 'blue2' => '0000ee', - 'blue4' => '00008b', - 'blueviolet' => '8a2be2', - 'brown' => 'a52a2a', - 'brown1' => 'ff4040', - 'brown2' => 'ee3b3b', - 'brown3' => 'cd3333', - 'brown4' => '8b2323', - 'burlywood' => 'deb887', - 'burlywood1' => 'ffd39b', - 'burlywood2' => 'eec591', - 'burlywood3' => 'cdaa7d', - 'burlywood4' => '8b7355', - 'cadetblue' => '5f9ea0', - 'cadetblue1' => '98f5ff', - 'cadetblue2' => '8ee5ee', - 'cadetblue3' => '7ac5cd', - 'cadetblue4' => '53868b', - 'chartreuse1' => '7fff00', - 'chartreuse2' => '76ee00', - 'chartreuse3' => '66cd00', - 'chartreuse4' => '458b00', - 'chocolate' => 'd2691e', - 'chocolate1' => 'ff7f24', - 'chocolate2' => 'ee7621', - 'chocolate3' => 'cd661d', - 'coral' => 'ff7f50', - 'coral1' => 'ff7256', - 'coral2' => 'ee6a50', - 'coral3' => 'cd5b45', - 'coral4' => '8b3e2f', - 'cornflowerblue' => '6495ed', - 'cornsilk1' => 'fff8dc', - 'cornsilk2' => 'eee8cd', - 'cornsilk3' => 'cdc8b1', - 'cornsilk4' => '8b8878', - 'cyan1' => '00ffff', - 'cyan2' => '00eeee', - 'cyan3' => '00cdcd', - 'cyan4' => '008b8b', - 'darkgoldenrod' => 'b8860b', - 'darkgoldenrod1' => 'ffb90f', - 'darkgoldenrod2' => 'eead0e', - 'darkgoldenrod3' => 'cd950c', - 'darkgoldenrod4' => '8b6508', - 'darkgreen' => '006400', - 'darkkhaki' => 'bdb76b', - 'darkolivegreen' => '556b2f', - 'darkolivegreen1' => 'caff70', - 'darkolivegreen2' => 'bcee68', - 'darkolivegreen3' => 'a2cd5a', - 'darkolivegreen4' => '6e8b3d', - 'darkorange' => 'ff8c00', - 'darkorange1' => 'ff7f00', - 'darkorange2' => 'ee7600', - 'darkorange3' => 'cd6600', - 'darkorange4' => '8b4500', - 'darkorchid' => '9932cc', - 'darkorchid1' => 'bf3eff', - 'darkorchid2' => 'b23aee', - 'darkorchid3' => '9a32cd', - 'darkorchid4' => '68228b', - 'darksalmon' => 'e9967a', - 'darkseagreen' => '8fbc8f', - 'darkseagreen1' => 'c1ffc1', - 'darkseagreen2' => 'b4eeb4', - 'darkseagreen3' => '9bcd9b', - 'darkseagreen4' => '698b69', - 'darkslateblue' => '483d8b', - 'darkslategray' => '2f4f4f', - 'darkslategray1' => '97ffff', - 'darkslategray2' => '8deeee', - 'darkslategray3' => '79cdcd', - 'darkslategray4' => '528b8b', - 'darkturquoise' => '00ced1', - 'darkviolet' => '9400d3', - 'deeppink1' => 'ff1493', - 'deeppink2' => 'ee1289', - 'deeppink3' => 'cd1076', - 'deeppink4' => '8b0a50', - 'deepskyblue1' => '00bfff', - 'deepskyblue2' => '00b2ee', - 'deepskyblue3' => '009acd', - 'deepskyblue4' => '00688b', - 'dimgray' => '696969', - 'dodgerblue1' => '1e90ff', - 'dodgerblue2' => '1c86ee', - 'dodgerblue3' => '1874cd', - 'dodgerblue4' => '104e8b', - 'firebrick' => 'b22222', - 'firebrick1' => 'ff3030', - 'firebrick2' => 'ee2c2c', - 'firebrick3' => 'cd2626', - 'firebrick4' => '8b1a1a', - 'floralwhite' => 'fffaf0', - 'forestgreen' => '228b22', - 'fuchsia' => 'ff00ff', - 'gainsboro' => 'dcdcdc', - 'ghostwhite' => 'f8f8ff', - 'gold1' => 'ffd700', - 'gold2' => 'eec900', - 'gold3' => 'cdad00', - 'gold4' => '8b7500', - 'goldenrod' => 'daa520', - 'goldenrod1' => 'ffc125', - 'goldenrod2' => 'eeb422', - 'goldenrod3' => 'cd9b1d', - 'goldenrod4' => '8b6914', - 'gray' => 'bebebe', - 'gray1' => '030303', - 'gray10' => '1a1a1a', - 'gray11' => '1c1c1c', - 'gray12' => '1f1f1f', - 'gray13' => '212121', - 'gray14' => '242424', - 'gray15' => '262626', - 'gray16' => '292929', - 'gray17' => '2b2b2b', - 'gray18' => '2e2e2e', - 'gray19' => '303030', - 'gray2' => '050505', - 'gray20' => '333333', - 'gray21' => '363636', - 'gray22' => '383838', - 'gray23' => '3b3b3b', - 'gray24' => '3d3d3d', - 'gray25' => '404040', - 'gray26' => '424242', - 'gray27' => '454545', - 'gray28' => '474747', - 'gray29' => '4a4a4a', - 'gray3' => '080808', - 'gray30' => '4d4d4d', - 'gray31' => '4f4f4f', - 'gray32' => '525252', - 'gray33' => '545454', - 'gray34' => '575757', - 'gray35' => '595959', - 'gray36' => '5c5c5c', - 'gray37' => '5e5e5e', - 'gray38' => '616161', - 'gray39' => '636363', - 'gray4' => '0a0a0a', - 'gray40' => '666666', - 'gray41' => '696969', - 'gray42' => '6b6b6b', - 'gray43' => '6e6e6e', - 'gray44' => '707070', - 'gray45' => '737373', - 'gray46' => '757575', - 'gray47' => '787878', - 'gray48' => '7a7a7a', - 'gray49' => '7d7d7d', - 'gray5' => '0d0d0d', - 'gray50' => '7f7f7f', - 'gray51' => '828282', - 'gray52' => '858585', - 'gray53' => '878787', - 'gray54' => '8a8a8a', - 'gray55' => '8c8c8c', - 'gray56' => '8f8f8f', - 'gray57' => '919191', - 'gray58' => '949494', - 'gray59' => '969696', - 'gray6' => '0f0f0f', - 'gray60' => '999999', - 'gray61' => '9c9c9c', - 'gray62' => '9e9e9e', - 'gray63' => 'a1a1a1', - 'gray64' => 'a3a3a3', - 'gray65' => 'a6a6a6', - 'gray66' => 'a8a8a8', - 'gray67' => 'ababab', - 'gray68' => 'adadad', - 'gray69' => 'b0b0b0', - 'gray7' => '121212', - 'gray70' => 'b3b3b3', - 'gray71' => 'b5b5b5', - 'gray72' => 'b8b8b8', - 'gray73' => 'bababa', - 'gray74' => 'bdbdbd', - 'gray75' => 'bfbfbf', - 'gray76' => 'c2c2c2', - 'gray77' => 'c4c4c4', - 'gray78' => 'c7c7c7', - 'gray79' => 'c9c9c9', - 'gray8' => '141414', - 'gray80' => 'cccccc', - 'gray81' => 'cfcfcf', - 'gray82' => 'd1d1d1', - 'gray83' => 'd4d4d4', - 'gray84' => 'd6d6d6', - 'gray85' => 'd9d9d9', - 'gray86' => 'dbdbdb', - 'gray87' => 'dedede', - 'gray88' => 'e0e0e0', - 'gray89' => 'e3e3e3', - 'gray9' => '171717', - 'gray90' => 'e5e5e5', - 'gray91' => 'e8e8e8', - 'gray92' => 'ebebeb', - 'gray93' => 'ededed', - 'gray94' => 'f0f0f0', - 'gray95' => 'f2f2f2', - 'gray97' => 'f7f7f7', - 'gray98' => 'fafafa', - 'gray99' => 'fcfcfc', - 'green' => '00ff00', - 'green1' => '00ff00', - 'green2' => '00ee00', - 'green3' => '00cd00', - 'green4' => '008b00', - 'greenyellow' => 'adff2f', - 'honeydew1' => 'f0fff0', - 'honeydew2' => 'e0eee0', - 'honeydew3' => 'c1cdc1', - 'honeydew4' => '838b83', - 'hotpink' => 'ff69b4', - 'hotpink1' => 'ff6eb4', - 'hotpink2' => 'ee6aa7', - 'hotpink3' => 'cd6090', - 'hotpink4' => '8b3a62', - 'indianred' => 'cd5c5c', - 'indianred1' => 'ff6a6a', - 'indianred2' => 'ee6363', - 'indianred3' => 'cd5555', - 'indianred4' => '8b3a3a', - 'ivory1' => 'fffff0', - 'ivory2' => 'eeeee0', - 'ivory3' => 'cdcdc1', - 'ivory4' => '8b8b83', - 'khaki' => 'f0e68c', - 'khaki1' => 'fff68f', - 'khaki2' => 'eee685', - 'khaki3' => 'cdc673', - 'khaki4' => '8b864e', - 'lavender' => 'e6e6fa', - 'lavenderblush1' => 'fff0f5', - 'lavenderblush2' => 'eee0e5', - 'lavenderblush3' => 'cdc1c5', - 'lavenderblush4' => '8b8386', - 'lawngreen' => '7cfc00', - 'lemonchiffon1' => 'fffacd', - 'lemonchiffon2' => 'eee9bf', - 'lemonchiffon3' => 'cdc9a5', - 'lemonchiffon4' => '8b8970', - 'light' => 'eedd82', - 'lightblue' => 'add8e6', - 'lightblue1' => 'bfefff', - 'lightblue2' => 'b2dfee', - 'lightblue3' => '9ac0cd', - 'lightblue4' => '68838b', - 'lightcoral' => 'f08080', - 'lightcyan1' => 'e0ffff', - 'lightcyan2' => 'd1eeee', - 'lightcyan3' => 'b4cdcd', - 'lightcyan4' => '7a8b8b', - 'lightgoldenrod1' => 'ffec8b', - 'lightgoldenrod2' => 'eedc82', - 'lightgoldenrod3' => 'cdbe70', - 'lightgoldenrod4' => '8b814c', - 'lightgoldenrodyellow' => 'fafad2', - 'lightgray' => 'd3d3d3', - 'lightpink' => 'ffb6c1', - 'lightpink1' => 'ffaeb9', - 'lightpink2' => 'eea2ad', - 'lightpink3' => 'cd8c95', - 'lightpink4' => '8b5f65', - 'lightsalmon1' => 'ffa07a', - 'lightsalmon2' => 'ee9572', - 'lightsalmon3' => 'cd8162', - 'lightsalmon4' => '8b5742', - 'lightseagreen' => '20b2aa', - 'lightskyblue' => '87cefa', - 'lightskyblue1' => 'b0e2ff', - 'lightskyblue2' => 'a4d3ee', - 'lightskyblue3' => '8db6cd', - 'lightskyblue4' => '607b8b', - 'lightslateblue' => '8470ff', - 'lightslategray' => '778899', - 'lightsteelblue' => 'b0c4de', - 'lightsteelblue1' => 'cae1ff', - 'lightsteelblue2' => 'bcd2ee', - 'lightsteelblue3' => 'a2b5cd', - 'lightsteelblue4' => '6e7b8b', - 'lightyellow1' => 'ffffe0', - 'lightyellow2' => 'eeeed1', - 'lightyellow3' => 'cdcdb4', - 'lightyellow4' => '8b8b7a', - 'lime' => '00ff00', - 'limegreen' => '32cd32', - 'linen' => 'faf0e6', - 'magenta' => 'ff00ff', - 'magenta2' => 'ee00ee', - 'magenta3' => 'cd00cd', - 'magenta4' => '8b008b', - 'maroon' => 'b03060', - 'maroon1' => 'ff34b3', - 'maroon2' => 'ee30a7', - 'maroon3' => 'cd2990', - 'maroon4' => '8b1c62', - 'medium' => '66cdaa', - 'mediumaquamarine' => '66cdaa', - 'mediumblue' => '0000cd', - 'mediumorchid' => 'ba55d3', - 'mediumorchid1' => 'e066ff', - 'mediumorchid2' => 'd15fee', - 'mediumorchid3' => 'b452cd', - 'mediumorchid4' => '7a378b', - 'mediumpurple' => '9370db', - 'mediumpurple1' => 'ab82ff', - 'mediumpurple2' => '9f79ee', - 'mediumpurple3' => '8968cd', - 'mediumpurple4' => '5d478b', - 'mediumseagreen' => '3cb371', - 'mediumslateblue' => '7b68ee', - 'mediumspringgreen' => '00fa9a', - 'mediumturquoise' => '48d1cc', - 'mediumvioletred' => 'c71585', - 'midnightblue' => '191970', - 'mintcream' => 'f5fffa', - 'mistyrose1' => 'ffe4e1', - 'mistyrose2' => 'eed5d2', - 'mistyrose3' => 'cdb7b5', - 'mistyrose4' => '8b7d7b', - 'moccasin' => 'ffe4b5', - 'navajowhite1' => 'ffdead', - 'navajowhite2' => 'eecfa1', - 'navajowhite3' => 'cdb38b', - 'navajowhite4' => '8b795e', - 'navy' => '000080', - 'navyblue' => '000080', - 'oldlace' => 'fdf5e6', - 'olive' => '808000', - 'olivedrab' => '6b8e23', - 'olivedrab1' => 'c0ff3e', - 'olivedrab2' => 'b3ee3a', - 'olivedrab4' => '698b22', - 'orange' => 'ffa500', - 'orange1' => 'ffa500', - 'orange2' => 'ee9a00', - 'orange3' => 'cd8500', - 'orange4' => '8b5a00', - 'orangered1' => 'ff4500', - 'orangered2' => 'ee4000', - 'orangered3' => 'cd3700', - 'orangered4' => '8b2500', - 'orchid' => 'da70d6', - 'orchid1' => 'ff83fa', - 'orchid2' => 'ee7ae9', - 'orchid3' => 'cd69c9', - 'orchid4' => '8b4789', - 'pale' => 'db7093', - 'palegoldenrod' => 'eee8aa', - 'palegreen' => '98fb98', - 'palegreen1' => '9aff9a', - 'palegreen2' => '90ee90', - 'palegreen3' => '7ccd7c', - 'palegreen4' => '548b54', - 'paleturquoise' => 'afeeee', - 'paleturquoise1' => 'bbffff', - 'paleturquoise2' => 'aeeeee', - 'paleturquoise3' => '96cdcd', - 'paleturquoise4' => '668b8b', - 'palevioletred' => 'db7093', - 'palevioletred1' => 'ff82ab', - 'palevioletred2' => 'ee799f', - 'palevioletred3' => 'cd6889', - 'palevioletred4' => '8b475d', - 'papayawhip' => 'ffefd5', - 'peachpuff1' => 'ffdab9', - 'peachpuff2' => 'eecbad', - 'peachpuff3' => 'cdaf95', - 'peachpuff4' => '8b7765', - 'pink' => 'ffc0cb', - 'pink1' => 'ffb5c5', - 'pink2' => 'eea9b8', - 'pink3' => 'cd919e', - 'pink4' => '8b636c', - 'plum' => 'dda0dd', - 'plum1' => 'ffbbff', - 'plum2' => 'eeaeee', - 'plum3' => 'cd96cd', - 'plum4' => '8b668b', - 'powderblue' => 'b0e0e6', - 'purple' => 'a020f0', - 'rebeccapurple' => '663399', - 'purple1' => '9b30ff', - 'purple2' => '912cee', - 'purple3' => '7d26cd', - 'purple4' => '551a8b', - 'red' => 'ff0000', - 'red1' => 'ff0000', - 'red2' => 'ee0000', - 'red3' => 'cd0000', - 'red4' => '8b0000', - 'rosybrown' => 'bc8f8f', - 'rosybrown1' => 'ffc1c1', - 'rosybrown2' => 'eeb4b4', - 'rosybrown3' => 'cd9b9b', - 'rosybrown4' => '8b6969', - 'royalblue' => '4169e1', - 'royalblue1' => '4876ff', - 'royalblue2' => '436eee', - 'royalblue3' => '3a5fcd', - 'royalblue4' => '27408b', - 'saddlebrown' => '8b4513', - 'salmon' => 'fa8072', - 'salmon1' => 'ff8c69', - 'salmon2' => 'ee8262', - 'salmon3' => 'cd7054', - 'salmon4' => '8b4c39', - 'sandybrown' => 'f4a460', - 'seagreen1' => '54ff9f', - 'seagreen2' => '4eee94', - 'seagreen3' => '43cd80', - 'seagreen4' => '2e8b57', - 'seashell1' => 'fff5ee', - 'seashell2' => 'eee5de', - 'seashell3' => 'cdc5bf', - 'seashell4' => '8b8682', - 'sienna' => 'a0522d', - 'sienna1' => 'ff8247', - 'sienna2' => 'ee7942', - 'sienna3' => 'cd6839', - 'sienna4' => '8b4726', - 'silver' => 'c0c0c0', - 'skyblue' => '87ceeb', - 'skyblue1' => '87ceff', - 'skyblue2' => '7ec0ee', - 'skyblue3' => '6ca6cd', - 'skyblue4' => '4a708b', - 'slateblue' => '6a5acd', - 'slateblue1' => '836fff', - 'slateblue2' => '7a67ee', - 'slateblue3' => '6959cd', - 'slateblue4' => '473c8b', - 'slategray' => '708090', - 'slategray1' => 'c6e2ff', - 'slategray2' => 'b9d3ee', - 'slategray3' => '9fb6cd', - 'slategray4' => '6c7b8b', - 'snow1' => 'fffafa', - 'snow2' => 'eee9e9', - 'snow3' => 'cdc9c9', - 'snow4' => '8b8989', - 'springgreen1' => '00ff7f', - 'springgreen2' => '00ee76', - 'springgreen3' => '00cd66', - 'springgreen4' => '008b45', - 'steelblue' => '4682b4', - 'steelblue1' => '63b8ff', - 'steelblue2' => '5cacee', - 'steelblue3' => '4f94cd', - 'steelblue4' => '36648b', - 'tan' => 'd2b48c', - 'tan1' => 'ffa54f', - 'tan2' => 'ee9a49', - 'tan3' => 'cd853f', - 'tan4' => '8b5a2b', - 'teal' => '008080', - 'thistle' => 'd8bfd8', - 'thistle1' => 'ffe1ff', - 'thistle2' => 'eed2ee', - 'thistle3' => 'cdb5cd', - 'thistle4' => '8b7b8b', - 'tomato1' => 'ff6347', - 'tomato2' => 'ee5c42', - 'tomato3' => 'cd4f39', - 'tomato4' => '8b3626', - 'turquoise' => '40e0d0', - 'turquoise1' => '00f5ff', - 'turquoise2' => '00e5ee', - 'turquoise3' => '00c5cd', - 'turquoise4' => '00868b', - 'violet' => 'ee82ee', - 'violetred' => 'd02090', - 'violetred1' => 'ff3e96', - 'violetred2' => 'ee3a8c', - 'violetred3' => 'cd3278', - 'violetred4' => '8b2252', - 'wheat' => 'f5deb3', - 'wheat1' => 'ffe7ba', - 'wheat2' => 'eed8ae', - 'wheat3' => 'cdba96', - 'wheat4' => '8b7e66', - 'white' => 'ffffff', - 'whitesmoke' => 'f5f5f5', - 'yellow' => 'ffff00', - 'yellow1' => 'ffff00', - 'yellow2' => 'eeee00', - 'yellow3' => 'cdcd00', - 'yellow4' => '8b8b00', - 'yellowgreen' => '9acd32', - ); - - protected $face; - protected $size; - protected $color; - - protected $bold = false; - protected $italic = false; - protected $underline = false; - protected $superscript = false; - protected $subscript = false; - protected $strikethrough = false; - - protected $startTagCallbacks = array( - 'font' => 'startFontTag', - 'b' => 'startBoldTag', - 'strong' => 'startBoldTag', - 'i' => 'startItalicTag', - 'em' => 'startItalicTag', - 'u' => 'startUnderlineTag', - 'ins' => 'startUnderlineTag', - 'del' => 'startStrikethruTag', - 'sup' => 'startSuperscriptTag', - 'sub' => 'startSubscriptTag', - ); - - protected $endTagCallbacks = array( - 'font' => 'endFontTag', - 'b' => 'endBoldTag', - 'strong' => 'endBoldTag', - 'i' => 'endItalicTag', - 'em' => 'endItalicTag', - 'u' => 'endUnderlineTag', - 'ins' => 'endUnderlineTag', - 'del' => 'endStrikethruTag', - 'sup' => 'endSuperscriptTag', - 'sub' => 'endSubscriptTag', - 'br' => 'breakTag', - 'p' => 'breakTag', - 'h1' => 'breakTag', - 'h2' => 'breakTag', - 'h3' => 'breakTag', - 'h4' => 'breakTag', - 'h5' => 'breakTag', - 'h6' => 'breakTag', - ); - - protected $stack = array(); - - protected $stringData = ''; - - protected $richTextObject; - - protected function initialise() - { - $this->face = $this->size = $this->color = null; - $this->bold = $this->italic = $this->underline = $this->superscript = $this->subscript = $this->strikethrough = false; - - $this->stack = array(); - - $this->stringData = ''; - } - - public function toRichTextObject($html) - { - $this->initialise(); - - // Create a new DOM object - $dom = new \DOMDocument; - // Load the HTML file into the DOM object - // Note the use of error suppression, because typically this will be an html fragment, so not fully valid markup - $loaded = @$dom->loadHTML($html); - - // Discard excess white space - $dom->preserveWhiteSpace = false; - - $this->richTextObject = new PHPExcel_RichText();; - $this->parseElements($dom); - - // Clean any further spurious whitespace - $this->cleanWhitespace(); - - return $this->richTextObject; - } - - protected function cleanWhitespace() - { - foreach ($this->richTextObject->getRichTextElements() as $key => $element) { - $text = $element->getText(); - // Trim any leading spaces on the first run - if ($key == 0) { - $text = ltrim($text); - } - // Trim any spaces immediately after a line break - $text = preg_replace('/\n */mu', "\n", $text); - $element->setText($text); - } - } - - protected function buildTextRun() - { - $text = $this->stringData; - if (trim($text) === '') { - return; - } - - $richtextRun = $this->richTextObject->createTextRun($this->stringData); - if ($this->face) { - $richtextRun->getFont()->setName($this->face); - } - if ($this->size) { - $richtextRun->getFont()->setSize($this->size); - } - if ($this->color) { - $richtextRun->getFont()->setColor(new PHPExcel_Style_Color('ff' . $this->color)); - } - if ($this->bold) { - $richtextRun->getFont()->setBold(true); - } - if ($this->italic) { - $richtextRun->getFont()->setItalic(true); - } - if ($this->underline) { - $richtextRun->getFont()->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE); - } - if ($this->superscript) { - $richtextRun->getFont()->setSuperScript(true); - } - if ($this->subscript) { - $richtextRun->getFont()->setSubScript(true); - } - if ($this->strikethrough) { - $richtextRun->getFont()->setStrikethrough(true); - } - $this->stringData = ''; - } - - protected function rgbToColour($rgb) - { - preg_match_all('/\d+/', $rgb, $values); - foreach ($values[0] as &$value) { - $value = str_pad(dechex($value), 2, '0', STR_PAD_LEFT); - } - return implode($values[0]); - } - - protected function colourNameLookup($rgb) - { - return self::$colourMap[$rgb]; - } - - protected function startFontTag($tag) - { - foreach ($tag->attributes as $attribute) { - $attributeName = strtolower($attribute->name); - $attributeValue = $attribute->value; - - if ($attributeName == 'color') { - if (preg_match('/rgb\s*\(/', $attributeValue)) { - $this->$attributeName = $this->rgbToColour($attributeValue); - } elseif (strpos(trim($attributeValue), '#') === 0) { - $this->$attributeName = ltrim($attributeValue, '#'); - } else { - $this->$attributeName = $this->colourNameLookup($attributeValue); - } - } else { - $this->$attributeName = $attributeValue; - } - } - } - - protected function endFontTag() - { - $this->face = $this->size = $this->color = null; - } - - protected function startBoldTag() - { - $this->bold = true; - } - - protected function endBoldTag() - { - $this->bold = false; - } - - protected function startItalicTag() - { - $this->italic = true; - } - - protected function endItalicTag() - { - $this->italic = false; - } - - protected function startUnderlineTag() - { - $this->underline = true; - } - - protected function endUnderlineTag() - { - $this->underline = false; - } - - protected function startSubscriptTag() - { - $this->subscript = true; - } - - protected function endSubscriptTag() - { - $this->subscript = false; - } - - protected function startSuperscriptTag() - { - $this->superscript = true; - } - - protected function endSuperscriptTag() - { - $this->superscript = false; - } - - protected function startStrikethruTag() - { - $this->strikethrough = true; - } - - protected function endStrikethruTag() - { - $this->strikethrough = false; - } - - protected function breakTag() - { - $this->stringData .= "\n"; - } - - protected function parseTextNode(DOMText $textNode) - { - $domText = preg_replace( - '/\s+/u', - ' ', - str_replace(array("\r", "\n"), ' ', $textNode->nodeValue) - ); - $this->stringData .= $domText; - $this->buildTextRun(); - } - - protected function handleCallback($element, $callbackTag, $callbacks) - { - if (isset($callbacks[$callbackTag])) { - $elementHandler = $callbacks[$callbackTag]; - if (method_exists($this, $elementHandler)) { - call_user_func(array($this, $elementHandler), $element); - } - } - } - - protected function parseElementNode(DOMElement $element) - { - $callbackTag = strtolower($element->nodeName); - $this->stack[] = $callbackTag; - - $this->handleCallback($element, $callbackTag, $this->startTagCallbacks); - - $this->parseElements($element); - array_pop($this->stack); - - $this->handleCallback($element, $callbackTag, $this->endTagCallbacks); - } - - protected function parseElements(DOMNode $element) - { - foreach ($element->childNodes as $child) { - if ($child instanceof DOMText) { - $this->parseTextNode($child); - } elseif ($child instanceof DOMElement) { - $this->parseElementNode($child); - } - } - } -} diff --git a/application/third_party/PHPExcel/IComparable.php b/application/third_party/PHPExcel/IComparable.php deleted file mode 100644 index 6dc36a94..00000000 --- a/application/third_party/PHPExcel/IComparable.php +++ /dev/null @@ -1,34 +0,0 @@ - 'IWriter', 'path' => 'PHPExcel/Writer/{0}.php', 'class' => 'PHPExcel_Writer_{0}' ), - array( 'type' => 'IReader', 'path' => 'PHPExcel/Reader/{0}.php', 'class' => 'PHPExcel_Reader_{0}' ) - ); - - /** - * Autoresolve classes - * - * @var array - * @access private - * @static - */ - private static $autoResolveClasses = array( - 'Excel2007', - 'Excel5', - 'Excel2003XML', - 'OOCalc', - 'SYLK', - 'Gnumeric', - 'HTML', - 'CSV', - ); - - /** - * Private constructor for PHPExcel_IOFactory - */ - private function __construct() - { - } - - /** - * Get search locations - * - * @static - * @access public - * @return array - */ - public static function getSearchLocations() - { - return self::$searchLocations; - } - - /** - * Set search locations - * - * @static - * @access public - * @param array $value - * @throws PHPExcel_Reader_Exception - */ - public static function setSearchLocations($value) - { - if (is_array($value)) { - self::$searchLocations = $value; - } else { - throw new PHPExcel_Reader_Exception('Invalid parameter passed.'); - } - } - - /** - * Add search location - * - * @static - * @access public - * @param string $type Example: IWriter - * @param string $location Example: PHPExcel/Writer/{0}.php - * @param string $classname Example: PHPExcel_Writer_{0} - */ - public static function addSearchLocation($type = '', $location = '', $classname = '') - { - self::$searchLocations[] = array( 'type' => $type, 'path' => $location, 'class' => $classname ); - } - - /** - * Create PHPExcel_Writer_IWriter - * - * @static - * @access public - * @param PHPExcel $phpExcel - * @param string $writerType Example: Excel2007 - * @return PHPExcel_Writer_IWriter - * @throws PHPExcel_Reader_Exception - */ - public static function createWriter(PHPExcel $phpExcel, $writerType = '') - { - // Search type - $searchType = 'IWriter'; - - // Include class - foreach (self::$searchLocations as $searchLocation) { - if ($searchLocation['type'] == $searchType) { - $className = str_replace('{0}', $writerType, $searchLocation['class']); - - $instance = new $className($phpExcel); - if ($instance !== null) { - return $instance; - } - } - } - - // Nothing found... - throw new PHPExcel_Reader_Exception("No $searchType found for type $writerType"); - } - - /** - * Create PHPExcel_Reader_IReader - * - * @static - * @access public - * @param string $readerType Example: Excel2007 - * @return PHPExcel_Reader_IReader - * @throws PHPExcel_Reader_Exception - */ - public static function createReader($readerType = '') - { - // Search type - $searchType = 'IReader'; - - // Include class - foreach (self::$searchLocations as $searchLocation) { - if ($searchLocation['type'] == $searchType) { - $className = str_replace('{0}', $readerType, $searchLocation['class']); - - $instance = new $className(); - if ($instance !== null) { - return $instance; - } - } - } - - // Nothing found... - throw new PHPExcel_Reader_Exception("No $searchType found for type $readerType"); - } - - /** - * Loads PHPExcel from file using automatic PHPExcel_Reader_IReader resolution - * - * @static - * @access public - * @param string $pFilename The name of the spreadsheet file - * @return PHPExcel - * @throws PHPExcel_Reader_Exception - */ - public static function load($pFilename) - { - $reader = self::createReaderForFile($pFilename); - return $reader->load($pFilename); - } - - /** - * Identify file type using automatic PHPExcel_Reader_IReader resolution - * - * @static - * @access public - * @param string $pFilename The name of the spreadsheet file to identify - * @return string - * @throws PHPExcel_Reader_Exception - */ - public static function identify($pFilename) - { - $reader = self::createReaderForFile($pFilename); - $className = get_class($reader); - $classType = explode('_', $className); - unset($reader); - return array_pop($classType); - } - - /** - * Create PHPExcel_Reader_IReader for file using automatic PHPExcel_Reader_IReader resolution - * - * @static - * @access public - * @param string $pFilename The name of the spreadsheet file - * @return PHPExcel_Reader_IReader - * @throws PHPExcel_Reader_Exception - */ - public static function createReaderForFile($pFilename) - { - // First, lucky guess by inspecting file extension - $pathinfo = pathinfo($pFilename); - - $extensionType = null; - if (isset($pathinfo['extension'])) { - switch (strtolower($pathinfo['extension'])) { - case 'xlsx': // Excel (OfficeOpenXML) Spreadsheet - case 'xlsm': // Excel (OfficeOpenXML) Macro Spreadsheet (macros will be discarded) - case 'xltx': // Excel (OfficeOpenXML) Template - case 'xltm': // Excel (OfficeOpenXML) Macro Template (macros will be discarded) - $extensionType = 'Excel2007'; - break; - case 'xls': // Excel (BIFF) Spreadsheet - case 'xlt': // Excel (BIFF) Template - $extensionType = 'Excel5'; - break; - case 'ods': // Open/Libre Offic Calc - case 'ots': // Open/Libre Offic Calc Template - $extensionType = 'OOCalc'; - break; - case 'slk': - $extensionType = 'SYLK'; - break; - case 'xml': // Excel 2003 SpreadSheetML - $extensionType = 'Excel2003XML'; - break; - case 'gnumeric': - $extensionType = 'Gnumeric'; - break; - case 'htm': - case 'html': - $extensionType = 'HTML'; - break; - case 'csv': - // Do nothing - // We must not try to use CSV reader since it loads - // all files including Excel files etc. - break; - default: - break; - } - - if ($extensionType !== null) { - $reader = self::createReader($extensionType); - // Let's see if we are lucky - if (isset($reader) && $reader->canRead($pFilename)) { - return $reader; - } - } - } - - // If we reach here then "lucky guess" didn't give any result - // Try walking through all the options in self::$autoResolveClasses - foreach (self::$autoResolveClasses as $autoResolveClass) { - // Ignore our original guess, we know that won't work - if ($autoResolveClass !== $extensionType) { - $reader = self::createReader($autoResolveClass); - if ($reader->canRead($pFilename)) { - return $reader; - } - } - } - - throw new PHPExcel_Reader_Exception('Unable to identify a reader for this file'); - } -} diff --git a/application/third_party/PHPExcel/NamedRange.php b/application/third_party/PHPExcel/NamedRange.php deleted file mode 100644 index 2848db83..00000000 --- a/application/third_party/PHPExcel/NamedRange.php +++ /dev/null @@ -1,249 +0,0 @@ -worksheet) - * - * @var bool - */ - private $localOnly; - - /** - * Scope - * - * @var PHPExcel_Worksheet - */ - private $scope; - - /** - * Create a new NamedRange - * - * @param string $pName - * @param PHPExcel_Worksheet $pWorksheet - * @param string $pRange - * @param bool $pLocalOnly - * @param PHPExcel_Worksheet|null $pScope Scope. Only applies when $pLocalOnly = true. Null for global scope. - * @throws PHPExcel_Exception - */ - public function __construct($pName = null, PHPExcel_Worksheet $pWorksheet, $pRange = 'A1', $pLocalOnly = false, $pScope = null) - { - // Validate data - if (($pName === null) || ($pWorksheet === null) || ($pRange === null)) { - throw new PHPExcel_Exception('Parameters can not be null.'); - } - - // Set local members - $this->name = $pName; - $this->worksheet = $pWorksheet; - $this->range = $pRange; - $this->localOnly = $pLocalOnly; - $this->scope = ($pLocalOnly == true) ? (($pScope == null) ? $pWorksheet : $pScope) : null; - } - - /** - * Get name - * - * @return string - */ - public function getName() - { - return $this->name; - } - - /** - * Set name - * - * @param string $value - * @return PHPExcel_NamedRange - */ - public function setName($value = null) - { - if ($value !== null) { - // Old title - $oldTitle = $this->name; - - // Re-attach - if ($this->worksheet !== null) { - $this->worksheet->getParent()->removeNamedRange($this->name, $this->worksheet); - } - $this->name = $value; - - if ($this->worksheet !== null) { - $this->worksheet->getParent()->addNamedRange($this); - } - - // New title - $newTitle = $this->name; - PHPExcel_ReferenceHelper::getInstance()->updateNamedFormulas($this->worksheet->getParent(), $oldTitle, $newTitle); - } - return $this; - } - - /** - * Get worksheet - * - * @return PHPExcel_Worksheet - */ - public function getWorksheet() - { - return $this->worksheet; - } - - /** - * Set worksheet - * - * @param PHPExcel_Worksheet $value - * @return PHPExcel_NamedRange - */ - public function setWorksheet(PHPExcel_Worksheet $value = null) - { - if ($value !== null) { - $this->worksheet = $value; - } - return $this; - } - - /** - * Get range - * - * @return string - */ - public function getRange() - { - return $this->range; - } - - /** - * Set range - * - * @param string $value - * @return PHPExcel_NamedRange - */ - public function setRange($value = null) - { - if ($value !== null) { - $this->range = $value; - } - return $this; - } - - /** - * Get localOnly - * - * @return bool - */ - public function getLocalOnly() - { - return $this->localOnly; - } - - /** - * Set localOnly - * - * @param bool $value - * @return PHPExcel_NamedRange - */ - public function setLocalOnly($value = false) - { - $this->localOnly = $value; - $this->scope = $value ? $this->worksheet : null; - return $this; - } - - /** - * Get scope - * - * @return PHPExcel_Worksheet|null - */ - public function getScope() - { - return $this->scope; - } - - /** - * Set scope - * - * @param PHPExcel_Worksheet|null $value - * @return PHPExcel_NamedRange - */ - public function setScope(PHPExcel_Worksheet $value = null) - { - $this->scope = $value; - $this->localOnly = ($value == null) ? false : true; - return $this; - } - - /** - * Resolve a named range to a regular cell range - * - * @param string $pNamedRange Named range - * @param PHPExcel_Worksheet|null $pSheet Scope. Use null for global scope - * @return PHPExcel_NamedRange - */ - public static function resolveRange($pNamedRange = '', PHPExcel_Worksheet $pSheet) - { - return $pSheet->getParent()->getNamedRange($pNamedRange, $pSheet); - } - - /** - * Implement PHP __clone to create a deep clone, not just a shallow copy. - */ - public function __clone() - { - $vars = get_object_vars($this); - foreach ($vars as $key => $value) { - if (is_object($value)) { - $this->$key = clone $value; - } else { - $this->$key = $value; - } - } - } -} diff --git a/application/third_party/PHPExcel/Reader/Abstract.php b/application/third_party/PHPExcel/Reader/Abstract.php deleted file mode 100644 index 189c70a1..00000000 --- a/application/third_party/PHPExcel/Reader/Abstract.php +++ /dev/null @@ -1,289 +0,0 @@ -readDataOnly; - } - - /** - * Set read data only - * Set to true, to advise the Reader only to read data values for cells, and to ignore any formatting information. - * Set to false (the default) to advise the Reader to read both data and formatting for cells. - * - * @param boolean $pValue - * - * @return PHPExcel_Reader_IReader - */ - public function setReadDataOnly($pValue = false) - { - $this->readDataOnly = $pValue; - return $this; - } - - /** - * Read empty cells? - * If this is true (the default), then the Reader will read data values for all cells, irrespective of value. - * If false it will not read data for cells containing a null value or an empty string. - * - * @return boolean - */ - public function getReadEmptyCells() - { - return $this->readEmptyCells; - } - - /** - * Set read empty cells - * Set to true (the default) to advise the Reader read data values for all cells, irrespective of value. - * Set to false to advise the Reader to ignore cells containing a null value or an empty string. - * - * @param boolean $pValue - * - * @return PHPExcel_Reader_IReader - */ - public function setReadEmptyCells($pValue = true) - { - $this->readEmptyCells = $pValue; - return $this; - } - - /** - * Read charts in workbook? - * If this is true, then the Reader will include any charts that exist in the workbook. - * Note that a ReadDataOnly value of false overrides, and charts won't be read regardless of the IncludeCharts value. - * If false (the default) it will ignore any charts defined in the workbook file. - * - * @return boolean - */ - public function getIncludeCharts() - { - return $this->includeCharts; - } - - /** - * Set read charts in workbook - * Set to true, to advise the Reader to include any charts that exist in the workbook. - * Note that a ReadDataOnly value of false overrides, and charts won't be read regardless of the IncludeCharts value. - * Set to false (the default) to discard charts. - * - * @param boolean $pValue - * - * @return PHPExcel_Reader_IReader - */ - public function setIncludeCharts($pValue = false) - { - $this->includeCharts = (boolean) $pValue; - return $this; - } - - /** - * Get which sheets to load - * Returns either an array of worksheet names (the list of worksheets that should be loaded), or a null - * indicating that all worksheets in the workbook should be loaded. - * - * @return mixed - */ - public function getLoadSheetsOnly() - { - return $this->loadSheetsOnly; - } - - /** - * Set which sheets to load - * - * @param mixed $value - * This should be either an array of worksheet names to be loaded, or a string containing a single worksheet name. - * If NULL, then it tells the Reader to read all worksheets in the workbook - * - * @return PHPExcel_Reader_IReader - */ - public function setLoadSheetsOnly($value = null) - { - if ($value === null) { - return $this->setLoadAllSheets(); - } - - $this->loadSheetsOnly = is_array($value) ? $value : array($value); - return $this; - } - - /** - * Set all sheets to load - * Tells the Reader to load all worksheets from the workbook. - * - * @return PHPExcel_Reader_IReader - */ - public function setLoadAllSheets() - { - $this->loadSheetsOnly = null; - return $this; - } - - /** - * Read filter - * - * @return PHPExcel_Reader_IReadFilter - */ - public function getReadFilter() - { - return $this->readFilter; - } - - /** - * Set read filter - * - * @param PHPExcel_Reader_IReadFilter $pValue - * @return PHPExcel_Reader_IReader - */ - public function setReadFilter(PHPExcel_Reader_IReadFilter $pValue) - { - $this->readFilter = $pValue; - return $this; - } - - /** - * Open file for reading - * - * @param string $pFilename - * @throws PHPExcel_Reader_Exception - * @return resource - */ - protected function openFile($pFilename) - { - // Check if file exists - if (!file_exists($pFilename) || !is_readable($pFilename)) { - throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); - } - - // Open file - $this->fileHandle = fopen($pFilename, 'r'); - if ($this->fileHandle === false) { - throw new PHPExcel_Reader_Exception("Could not open file " . $pFilename . " for reading."); - } - } - - /** - * Can the current PHPExcel_Reader_IReader read the file? - * - * @param string $pFilename - * @return boolean - * @throws PHPExcel_Reader_Exception - */ - public function canRead($pFilename) - { - // Check if file exists - try { - $this->openFile($pFilename); - } catch (Exception $e) { - return false; - } - - $readable = $this->isValidFormat(); - fclose($this->fileHandle); - return $readable; - } - - /** - * Scan theXML for use of securityScan(file_get_contents($filestream)); - } -} diff --git a/application/third_party/PHPExcel/Reader/CSV.php b/application/third_party/PHPExcel/Reader/CSV.php deleted file mode 100644 index 21329dad..00000000 --- a/application/third_party/PHPExcel/Reader/CSV.php +++ /dev/null @@ -1,406 +0,0 @@ -readFilter = new PHPExcel_Reader_DefaultReadFilter(); - } - - /** - * Validate that the current file is a CSV file - * - * @return boolean - */ - protected function isValidFormat() - { - return true; - } - - /** - * Set input encoding - * - * @param string $pValue Input encoding - */ - public function setInputEncoding($pValue = 'UTF-8') - { - $this->inputEncoding = $pValue; - return $this; - } - - /** - * Get input encoding - * - * @return string - */ - public function getInputEncoding() - { - return $this->inputEncoding; - } - - /** - * Move filepointer past any BOM marker - * - */ - protected function skipBOM() - { - rewind($this->fileHandle); - - switch ($this->inputEncoding) { - case 'UTF-8': - fgets($this->fileHandle, 4) == "\xEF\xBB\xBF" ? - fseek($this->fileHandle, 3) : fseek($this->fileHandle, 0); - break; - case 'UTF-16LE': - fgets($this->fileHandle, 3) == "\xFF\xFE" ? - fseek($this->fileHandle, 2) : fseek($this->fileHandle, 0); - break; - case 'UTF-16BE': - fgets($this->fileHandle, 3) == "\xFE\xFF" ? - fseek($this->fileHandle, 2) : fseek($this->fileHandle, 0); - break; - case 'UTF-32LE': - fgets($this->fileHandle, 5) == "\xFF\xFE\x00\x00" ? - fseek($this->fileHandle, 4) : fseek($this->fileHandle, 0); - break; - case 'UTF-32BE': - fgets($this->fileHandle, 5) == "\x00\x00\xFE\xFF" ? - fseek($this->fileHandle, 4) : fseek($this->fileHandle, 0); - break; - default: - break; - } - } - - /** - * Identify any separator that is explicitly set in the file - * - */ - protected function checkSeparator() - { - $line = fgets($this->fileHandle); - if ($line === false) { - return; - } - - if ((strlen(trim($line, "\r\n")) == 5) && (stripos($line, 'sep=') === 0)) { - $this->delimiter = substr($line, 4, 1); - return; - } - return $this->skipBOM(); - } - - /** - * Return worksheet info (Name, Last Column Letter, Last Column Index, Total Rows, Total Columns) - * - * @param string $pFilename - * @throws PHPExcel_Reader_Exception - */ - public function listWorksheetInfo($pFilename) - { - // Open file - $this->openFile($pFilename); - if (!$this->isValidFormat()) { - fclose($this->fileHandle); - throw new PHPExcel_Reader_Exception($pFilename . " is an Invalid Spreadsheet file."); - } - $fileHandle = $this->fileHandle; - - // Skip BOM, if any - $this->skipBOM(); - $this->checkSeparator(); - - $escapeEnclosures = array( "\\" . $this->enclosure, $this->enclosure . $this->enclosure ); - - $worksheetInfo = array(); - $worksheetInfo[0]['worksheetName'] = 'Worksheet'; - $worksheetInfo[0]['lastColumnLetter'] = 'A'; - $worksheetInfo[0]['lastColumnIndex'] = 0; - $worksheetInfo[0]['totalRows'] = 0; - $worksheetInfo[0]['totalColumns'] = 0; - - // Loop through each line of the file in turn - while (($rowData = fgetcsv($fileHandle, 0, $this->delimiter, $this->enclosure)) !== false) { - $worksheetInfo[0]['totalRows']++; - $worksheetInfo[0]['lastColumnIndex'] = max($worksheetInfo[0]['lastColumnIndex'], count($rowData) - 1); - } - - $worksheetInfo[0]['lastColumnLetter'] = PHPExcel_Cell::stringFromColumnIndex($worksheetInfo[0]['lastColumnIndex']); - $worksheetInfo[0]['totalColumns'] = $worksheetInfo[0]['lastColumnIndex'] + 1; - - // Close file - fclose($fileHandle); - - return $worksheetInfo; - } - - /** - * Loads PHPExcel from file - * - * @param string $pFilename - * @return PHPExcel - * @throws PHPExcel_Reader_Exception - */ - public function load($pFilename) - { - // Create new PHPExcel - $objPHPExcel = new PHPExcel(); - - // Load into this instance - return $this->loadIntoExisting($pFilename, $objPHPExcel); - } - - /** - * Loads PHPExcel from file into PHPExcel instance - * - * @param string $pFilename - * @param PHPExcel $objPHPExcel - * @return PHPExcel - * @throws PHPExcel_Reader_Exception - */ - public function loadIntoExisting($pFilename, PHPExcel $objPHPExcel) - { - $lineEnding = ini_get('auto_detect_line_endings'); - ini_set('auto_detect_line_endings', true); - - // Open file - $this->openFile($pFilename); - if (!$this->isValidFormat()) { - fclose($this->fileHandle); - throw new PHPExcel_Reader_Exception($pFilename . " is an Invalid Spreadsheet file."); - } - $fileHandle = $this->fileHandle; - - // Skip BOM, if any - $this->skipBOM(); - $this->checkSeparator(); - - // Create new PHPExcel object - while ($objPHPExcel->getSheetCount() <= $this->sheetIndex) { - $objPHPExcel->createSheet(); - } - $sheet = $objPHPExcel->setActiveSheetIndex($this->sheetIndex); - - $escapeEnclosures = array( "\\" . $this->enclosure, - $this->enclosure . $this->enclosure - ); - - // Set our starting row based on whether we're in contiguous mode or not - $currentRow = 1; - if ($this->contiguous) { - $currentRow = ($this->contiguousRow == -1) ? $sheet->getHighestRow(): $this->contiguousRow; - } - - // Loop through each line of the file in turn - while (($rowData = fgetcsv($fileHandle, 0, $this->delimiter, $this->enclosure)) !== false) { - $columnLetter = 'A'; - foreach ($rowData as $rowDatum) { - if ($rowDatum != '' && $this->readFilter->readCell($columnLetter, $currentRow)) { - // Unescape enclosures - $rowDatum = str_replace($escapeEnclosures, $this->enclosure, $rowDatum); - - // Convert encoding if necessary - if ($this->inputEncoding !== 'UTF-8') { - $rowDatum = PHPExcel_Shared_String::ConvertEncoding($rowDatum, 'UTF-8', $this->inputEncoding); - } - - // Set cell value - $sheet->getCell($columnLetter . $currentRow)->setValue($rowDatum); - } - ++$columnLetter; - } - ++$currentRow; - } - - // Close file - fclose($fileHandle); - - if ($this->contiguous) { - $this->contiguousRow = $currentRow; - } - - ini_set('auto_detect_line_endings', $lineEnding); - - // Return - return $objPHPExcel; - } - - /** - * Get delimiter - * - * @return string - */ - public function getDelimiter() - { - return $this->delimiter; - } - - /** - * Set delimiter - * - * @param string $pValue Delimiter, defaults to , - * @return PHPExcel_Reader_CSV - */ - public function setDelimiter($pValue = ',') - { - $this->delimiter = $pValue; - return $this; - } - - /** - * Get enclosure - * - * @return string - */ - public function getEnclosure() - { - return $this->enclosure; - } - - /** - * Set enclosure - * - * @param string $pValue Enclosure, defaults to " - * @return PHPExcel_Reader_CSV - */ - public function setEnclosure($pValue = '"') - { - if ($pValue == '') { - $pValue = '"'; - } - $this->enclosure = $pValue; - return $this; - } - - /** - * Get sheet index - * - * @return integer - */ - public function getSheetIndex() - { - return $this->sheetIndex; - } - - /** - * Set sheet index - * - * @param integer $pValue Sheet index - * @return PHPExcel_Reader_CSV - */ - public function setSheetIndex($pValue = 0) - { - $this->sheetIndex = $pValue; - return $this; - } - - /** - * Set Contiguous - * - * @param boolean $contiguous - */ - public function setContiguous($contiguous = false) - { - $this->contiguous = (bool) $contiguous; - if (!$contiguous) { - $this->contiguousRow = -1; - } - - return $this; - } - - /** - * Get Contiguous - * - * @return boolean - */ - public function getContiguous() - { - return $this->contiguous; - } -} diff --git a/application/third_party/PHPExcel/Reader/DefaultReadFilter.php b/application/third_party/PHPExcel/Reader/DefaultReadFilter.php deleted file mode 100644 index ea25f63c..00000000 --- a/application/third_party/PHPExcel/Reader/DefaultReadFilter.php +++ /dev/null @@ -1,51 +0,0 @@ -readFilter = new PHPExcel_Reader_DefaultReadFilter(); - } - - - /** - * Can the current PHPExcel_Reader_IReader read the file? - * - * @param string $pFilename - * @return boolean - * @throws PHPExcel_Reader_Exception - */ - public function canRead($pFilename) - { - - // Office xmlns:o="urn:schemas-microsoft-com:office:office" - // Excel xmlns:x="urn:schemas-microsoft-com:office:excel" - // XML Spreadsheet xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" - // Spreadsheet component xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet" - // XML schema xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" - // XML data type xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" - // MS-persist recordset xmlns:rs="urn:schemas-microsoft-com:rowset" - // Rowset xmlns:z="#RowsetSchema" - // - - $signature = array( - '' - ); - - // Open file - $this->openFile($pFilename); - $fileHandle = $this->fileHandle; - - // Read sample data (first 2 KB will do) - $data = fread($fileHandle, 2048); - fclose($fileHandle); - - $valid = true; - foreach ($signature as $match) { - // every part of the signature must be present - if (strpos($data, $match) === false) { - $valid = false; - break; - } - } - - // Retrieve charset encoding - if (preg_match('//um', $data, $matches)) { - $this->charSet = strtoupper($matches[1]); - } -// echo 'Character Set is ', $this->charSet,'
    '; - - return $valid; - } - - - /** - * Reads names of the worksheets from a file, without parsing the whole file to a PHPExcel object - * - * @param string $pFilename - * @throws PHPExcel_Reader_Exception - */ - public function listWorksheetNames($pFilename) - { - // Check if file exists - if (!file_exists($pFilename)) { - throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); - } - if (!$this->canRead($pFilename)) { - throw new PHPExcel_Reader_Exception($pFilename . " is an Invalid Spreadsheet file."); - } - - $worksheetNames = array(); - - $xml = simplexml_load_string($this->securityScan(file_get_contents($pFilename)), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); - $namespaces = $xml->getNamespaces(true); - - $xml_ss = $xml->children($namespaces['ss']); - foreach ($xml_ss->Worksheet as $worksheet) { - $worksheet_ss = $worksheet->attributes($namespaces['ss']); - $worksheetNames[] = self::convertStringEncoding((string) $worksheet_ss['Name'], $this->charSet); - } - - return $worksheetNames; - } - - - /** - * Return worksheet info (Name, Last Column Letter, Last Column Index, Total Rows, Total Columns) - * - * @param string $pFilename - * @throws PHPExcel_Reader_Exception - */ - public function listWorksheetInfo($pFilename) - { - // Check if file exists - if (!file_exists($pFilename)) { - throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); - } - - $worksheetInfo = array(); - - $xml = simplexml_load_string($this->securityScan(file_get_contents($pFilename)), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); - $namespaces = $xml->getNamespaces(true); - - $worksheetID = 1; - $xml_ss = $xml->children($namespaces['ss']); - foreach ($xml_ss->Worksheet as $worksheet) { - $worksheet_ss = $worksheet->attributes($namespaces['ss']); - - $tmpInfo = array(); - $tmpInfo['worksheetName'] = ''; - $tmpInfo['lastColumnLetter'] = 'A'; - $tmpInfo['lastColumnIndex'] = 0; - $tmpInfo['totalRows'] = 0; - $tmpInfo['totalColumns'] = 0; - - if (isset($worksheet_ss['Name'])) { - $tmpInfo['worksheetName'] = (string) $worksheet_ss['Name']; - } else { - $tmpInfo['worksheetName'] = "Worksheet_{$worksheetID}"; - } - - if (isset($worksheet->Table->Row)) { - $rowIndex = 0; - - foreach ($worksheet->Table->Row as $rowData) { - $columnIndex = 0; - $rowHasData = false; - - foreach ($rowData->Cell as $cell) { - if (isset($cell->Data)) { - $tmpInfo['lastColumnIndex'] = max($tmpInfo['lastColumnIndex'], $columnIndex); - $rowHasData = true; - } - - ++$columnIndex; - } - - ++$rowIndex; - - if ($rowHasData) { - $tmpInfo['totalRows'] = max($tmpInfo['totalRows'], $rowIndex); - } - } - } - - $tmpInfo['lastColumnLetter'] = PHPExcel_Cell::stringFromColumnIndex($tmpInfo['lastColumnIndex']); - $tmpInfo['totalColumns'] = $tmpInfo['lastColumnIndex'] + 1; - - $worksheetInfo[] = $tmpInfo; - ++$worksheetID; - } - - return $worksheetInfo; - } - - - /** - * Loads PHPExcel from file - * - * @param string $pFilename - * @return PHPExcel - * @throws PHPExcel_Reader_Exception - */ - public function load($pFilename) - { - // Create new PHPExcel - $objPHPExcel = new PHPExcel(); - $objPHPExcel->removeSheetByIndex(0); - - // Load into this instance - return $this->loadIntoExisting($pFilename, $objPHPExcel); - } - - protected static function identifyFixedStyleValue($styleList, &$styleAttributeValue) - { - $styleAttributeValue = strtolower($styleAttributeValue); - foreach ($styleList as $style) { - if ($styleAttributeValue == strtolower($style)) { - $styleAttributeValue = $style; - return true; - } - } - return false; - } - - /** - * pixel units to excel width units(units of 1/256th of a character width) - * @param pxs - * @return - */ - protected static function pixel2WidthUnits($pxs) - { - $UNIT_OFFSET_MAP = array(0, 36, 73, 109, 146, 182, 219); - - $widthUnits = 256 * ($pxs / 7); - $widthUnits += $UNIT_OFFSET_MAP[($pxs % 7)]; - return $widthUnits; - } - - /** - * excel width units(units of 1/256th of a character width) to pixel units - * @param widthUnits - * @return - */ - protected static function widthUnits2Pixel($widthUnits) - { - $pixels = ($widthUnits / 256) * 7; - $offsetWidthUnits = $widthUnits % 256; - $pixels += round($offsetWidthUnits / (256 / 7)); - return $pixels; - } - - protected static function hex2str($hex) - { - return chr(hexdec($hex[1])); - } - - /** - * Loads PHPExcel from file into PHPExcel instance - * - * @param string $pFilename - * @param PHPExcel $objPHPExcel - * @return PHPExcel - * @throws PHPExcel_Reader_Exception - */ - public function loadIntoExisting($pFilename, PHPExcel $objPHPExcel) - { - $fromFormats = array('\-', '\ '); - $toFormats = array('-', ' '); - - $underlineStyles = array ( - PHPExcel_Style_Font::UNDERLINE_NONE, - PHPExcel_Style_Font::UNDERLINE_DOUBLE, - PHPExcel_Style_Font::UNDERLINE_DOUBLEACCOUNTING, - PHPExcel_Style_Font::UNDERLINE_SINGLE, - PHPExcel_Style_Font::UNDERLINE_SINGLEACCOUNTING - ); - $verticalAlignmentStyles = array ( - PHPExcel_Style_Alignment::VERTICAL_BOTTOM, - PHPExcel_Style_Alignment::VERTICAL_TOP, - PHPExcel_Style_Alignment::VERTICAL_CENTER, - PHPExcel_Style_Alignment::VERTICAL_JUSTIFY - ); - $horizontalAlignmentStyles = array ( - PHPExcel_Style_Alignment::HORIZONTAL_GENERAL, - PHPExcel_Style_Alignment::HORIZONTAL_LEFT, - PHPExcel_Style_Alignment::HORIZONTAL_RIGHT, - PHPExcel_Style_Alignment::HORIZONTAL_CENTER, - PHPExcel_Style_Alignment::HORIZONTAL_CENTER_CONTINUOUS, - PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY - ); - - $timezoneObj = new DateTimeZone('Europe/London'); - $GMT = new DateTimeZone('UTC'); - - // Check if file exists - if (!file_exists($pFilename)) { - throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); - } - - if (!$this->canRead($pFilename)) { - throw new PHPExcel_Reader_Exception($pFilename . " is an Invalid Spreadsheet file."); - } - - $xml = simplexml_load_string($this->securityScan(file_get_contents($pFilename)), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); - $namespaces = $xml->getNamespaces(true); - - $docProps = $objPHPExcel->getProperties(); - if (isset($xml->DocumentProperties[0])) { - foreach ($xml->DocumentProperties[0] as $propertyName => $propertyValue) { - switch ($propertyName) { - case 'Title': - $docProps->setTitle(self::convertStringEncoding($propertyValue, $this->charSet)); - break; - case 'Subject': - $docProps->setSubject(self::convertStringEncoding($propertyValue, $this->charSet)); - break; - case 'Author': - $docProps->setCreator(self::convertStringEncoding($propertyValue, $this->charSet)); - break; - case 'Created': - $creationDate = strtotime($propertyValue); - $docProps->setCreated($creationDate); - break; - case 'LastAuthor': - $docProps->setLastModifiedBy(self::convertStringEncoding($propertyValue, $this->charSet)); - break; - case 'LastSaved': - $lastSaveDate = strtotime($propertyValue); - $docProps->setModified($lastSaveDate); - break; - case 'Company': - $docProps->setCompany(self::convertStringEncoding($propertyValue, $this->charSet)); - break; - case 'Category': - $docProps->setCategory(self::convertStringEncoding($propertyValue, $this->charSet)); - break; - case 'Manager': - $docProps->setManager(self::convertStringEncoding($propertyValue, $this->charSet)); - break; - case 'Keywords': - $docProps->setKeywords(self::convertStringEncoding($propertyValue, $this->charSet)); - break; - case 'Description': - $docProps->setDescription(self::convertStringEncoding($propertyValue, $this->charSet)); - break; - } - } - } - if (isset($xml->CustomDocumentProperties)) { - foreach ($xml->CustomDocumentProperties[0] as $propertyName => $propertyValue) { - $propertyAttributes = $propertyValue->attributes($namespaces['dt']); - $propertyName = preg_replace_callback('/_x([0-9a-z]{4})_/', 'PHPExcel_Reader_Excel2003XML::hex2str', $propertyName); - $propertyType = PHPExcel_DocumentProperties::PROPERTY_TYPE_UNKNOWN; - switch ((string) $propertyAttributes) { - case 'string': - $propertyType = PHPExcel_DocumentProperties::PROPERTY_TYPE_STRING; - $propertyValue = trim($propertyValue); - break; - case 'boolean': - $propertyType = PHPExcel_DocumentProperties::PROPERTY_TYPE_BOOLEAN; - $propertyValue = (bool) $propertyValue; - break; - case 'integer': - $propertyType = PHPExcel_DocumentProperties::PROPERTY_TYPE_INTEGER; - $propertyValue = intval($propertyValue); - break; - case 'float': - $propertyType = PHPExcel_DocumentProperties::PROPERTY_TYPE_FLOAT; - $propertyValue = floatval($propertyValue); - break; - case 'dateTime.tz': - $propertyType = PHPExcel_DocumentProperties::PROPERTY_TYPE_DATE; - $propertyValue = strtotime(trim($propertyValue)); - break; - } - $docProps->setCustomProperty($propertyName, $propertyValue, $propertyType); - } - } - - foreach ($xml->Styles[0] as $style) { - $style_ss = $style->attributes($namespaces['ss']); - $styleID = (string) $style_ss['ID']; -// echo 'Style ID = '.$styleID.'
    '; - $this->styles[$styleID] = (isset($this->styles['Default'])) ? $this->styles['Default'] : array(); - foreach ($style as $styleType => $styleData) { - $styleAttributes = $styleData->attributes($namespaces['ss']); -// echo $styleType.'
    '; - switch ($styleType) { - case 'Alignment': - foreach ($styleAttributes as $styleAttributeKey => $styleAttributeValue) { -// echo $styleAttributeKey.' = '.$styleAttributeValue.'
    '; - $styleAttributeValue = (string) $styleAttributeValue; - switch ($styleAttributeKey) { - case 'Vertical': - if (self::identifyFixedStyleValue($verticalAlignmentStyles, $styleAttributeValue)) { - $this->styles[$styleID]['alignment']['vertical'] = $styleAttributeValue; - } - break; - case 'Horizontal': - if (self::identifyFixedStyleValue($horizontalAlignmentStyles, $styleAttributeValue)) { - $this->styles[$styleID]['alignment']['horizontal'] = $styleAttributeValue; - } - break; - case 'WrapText': - $this->styles[$styleID]['alignment']['wrap'] = true; - break; - } - } - break; - case 'Borders': - foreach ($styleData->Border as $borderStyle) { - $borderAttributes = $borderStyle->attributes($namespaces['ss']); - $thisBorder = array(); - foreach ($borderAttributes as $borderStyleKey => $borderStyleValue) { -// echo $borderStyleKey.' = '.$borderStyleValue.'
    '; - switch ($borderStyleKey) { - case 'LineStyle': - $thisBorder['style'] = PHPExcel_Style_Border::BORDER_MEDIUM; -// $thisBorder['style'] = $borderStyleValue; - break; - case 'Weight': -// $thisBorder['style'] = $borderStyleValue; - break; - case 'Position': - $borderPosition = strtolower($borderStyleValue); - break; - case 'Color': - $borderColour = substr($borderStyleValue, 1); - $thisBorder['color']['rgb'] = $borderColour; - break; - } - } - if (!empty($thisBorder)) { - if (($borderPosition == 'left') || ($borderPosition == 'right') || ($borderPosition == 'top') || ($borderPosition == 'bottom')) { - $this->styles[$styleID]['borders'][$borderPosition] = $thisBorder; - } - } - } - break; - case 'Font': - foreach ($styleAttributes as $styleAttributeKey => $styleAttributeValue) { -// echo $styleAttributeKey.' = '.$styleAttributeValue.'
    '; - $styleAttributeValue = (string) $styleAttributeValue; - switch ($styleAttributeKey) { - case 'FontName': - $this->styles[$styleID]['font']['name'] = $styleAttributeValue; - break; - case 'Size': - $this->styles[$styleID]['font']['size'] = $styleAttributeValue; - break; - case 'Color': - $this->styles[$styleID]['font']['color']['rgb'] = substr($styleAttributeValue, 1); - break; - case 'Bold': - $this->styles[$styleID]['font']['bold'] = true; - break; - case 'Italic': - $this->styles[$styleID]['font']['italic'] = true; - break; - case 'Underline': - if (self::identifyFixedStyleValue($underlineStyles, $styleAttributeValue)) { - $this->styles[$styleID]['font']['underline'] = $styleAttributeValue; - } - break; - } - } - break; - case 'Interior': - foreach ($styleAttributes as $styleAttributeKey => $styleAttributeValue) { -// echo $styleAttributeKey.' = '.$styleAttributeValue.'
    '; - switch ($styleAttributeKey) { - case 'Color': - $this->styles[$styleID]['fill']['color']['rgb'] = substr($styleAttributeValue, 1); - break; - } - } - break; - case 'NumberFormat': - foreach ($styleAttributes as $styleAttributeKey => $styleAttributeValue) { -// echo $styleAttributeKey.' = '.$styleAttributeValue.'
    '; - $styleAttributeValue = str_replace($fromFormats, $toFormats, $styleAttributeValue); - switch ($styleAttributeValue) { - case 'Short Date': - $styleAttributeValue = 'dd/mm/yyyy'; - break; - } - if ($styleAttributeValue > '') { - $this->styles[$styleID]['numberformat']['code'] = $styleAttributeValue; - } - } - break; - case 'Protection': - foreach ($styleAttributes as $styleAttributeKey => $styleAttributeValue) { -// echo $styleAttributeKey.' = '.$styleAttributeValue.'
    '; - } - break; - } - } -// print_r($this->styles[$styleID]); -// echo '
    '; - } -// echo '
    '; - - $worksheetID = 0; - $xml_ss = $xml->children($namespaces['ss']); - - foreach ($xml_ss->Worksheet as $worksheet) { - $worksheet_ss = $worksheet->attributes($namespaces['ss']); - - if ((isset($this->loadSheetsOnly)) && (isset($worksheet_ss['Name'])) && - (!in_array($worksheet_ss['Name'], $this->loadSheetsOnly))) { - continue; - } - -// echo '

    Worksheet: ', $worksheet_ss['Name'],'

    '; -// - // Create new Worksheet - $objPHPExcel->createSheet(); - $objPHPExcel->setActiveSheetIndex($worksheetID); - if (isset($worksheet_ss['Name'])) { - $worksheetName = self::convertStringEncoding((string) $worksheet_ss['Name'], $this->charSet); - // Use false for $updateFormulaCellReferences to prevent adjustment of worksheet references in - // formula cells... during the load, all formulae should be correct, and we're simply bringing - // the worksheet name in line with the formula, not the reverse - $objPHPExcel->getActiveSheet()->setTitle($worksheetName, false); - } - - $columnID = 'A'; - if (isset($worksheet->Table->Column)) { - foreach ($worksheet->Table->Column as $columnData) { - $columnData_ss = $columnData->attributes($namespaces['ss']); - if (isset($columnData_ss['Index'])) { - $columnID = PHPExcel_Cell::stringFromColumnIndex($columnData_ss['Index']-1); - } - if (isset($columnData_ss['Width'])) { - $columnWidth = $columnData_ss['Width']; -// echo 'Setting column width for '.$columnID.' to '.$columnWidth.'
    '; - $objPHPExcel->getActiveSheet()->getColumnDimension($columnID)->setWidth($columnWidth / 5.4); - } - ++$columnID; - } - } - - $rowID = 1; - if (isset($worksheet->Table->Row)) { - $additionalMergedCells = 0; - foreach ($worksheet->Table->Row as $rowData) { - $rowHasData = false; - $row_ss = $rowData->attributes($namespaces['ss']); - if (isset($row_ss['Index'])) { - $rowID = (integer) $row_ss['Index']; - } -// echo 'Row '.$rowID.'
    '; - - $columnID = 'A'; - foreach ($rowData->Cell as $cell) { - $cell_ss = $cell->attributes($namespaces['ss']); - if (isset($cell_ss['Index'])) { - $columnID = PHPExcel_Cell::stringFromColumnIndex($cell_ss['Index']-1); - } - $cellRange = $columnID.$rowID; - - if ($this->getReadFilter() !== null) { - if (!$this->getReadFilter()->readCell($columnID, $rowID, $worksheetName)) { - continue; - } - } - - if ((isset($cell_ss['MergeAcross'])) || (isset($cell_ss['MergeDown']))) { - $columnTo = $columnID; - if (isset($cell_ss['MergeAcross'])) { - $additionalMergedCells += (int)$cell_ss['MergeAcross']; - $columnTo = PHPExcel_Cell::stringFromColumnIndex(PHPExcel_Cell::columnIndexFromString($columnID) + $cell_ss['MergeAcross'] -1); - } - $rowTo = $rowID; - if (isset($cell_ss['MergeDown'])) { - $rowTo = $rowTo + $cell_ss['MergeDown']; - } - $cellRange .= ':'.$columnTo.$rowTo; - $objPHPExcel->getActiveSheet()->mergeCells($cellRange); - } - - $cellIsSet = $hasCalculatedValue = false; - $cellDataFormula = ''; - if (isset($cell_ss['Formula'])) { - $cellDataFormula = $cell_ss['Formula']; - // added this as a check for array formulas - if (isset($cell_ss['ArrayRange'])) { - $cellDataCSEFormula = $cell_ss['ArrayRange']; -// echo "found an array formula at ".$columnID.$rowID."
    "; - } - $hasCalculatedValue = true; - } - if (isset($cell->Data)) { - $cellValue = $cellData = $cell->Data; - $type = PHPExcel_Cell_DataType::TYPE_NULL; - $cellData_ss = $cellData->attributes($namespaces['ss']); - if (isset($cellData_ss['Type'])) { - $cellDataType = $cellData_ss['Type']; - switch ($cellDataType) { - /* - const TYPE_STRING = 's'; - const TYPE_FORMULA = 'f'; - const TYPE_NUMERIC = 'n'; - const TYPE_BOOL = 'b'; - const TYPE_NULL = 'null'; - const TYPE_INLINE = 'inlineStr'; - const TYPE_ERROR = 'e'; - */ - case 'String': - $cellValue = self::convertStringEncoding($cellValue, $this->charSet); - $type = PHPExcel_Cell_DataType::TYPE_STRING; - break; - case 'Number': - $type = PHPExcel_Cell_DataType::TYPE_NUMERIC; - $cellValue = (float) $cellValue; - if (floor($cellValue) == $cellValue) { - $cellValue = (integer) $cellValue; - } - break; - case 'Boolean': - $type = PHPExcel_Cell_DataType::TYPE_BOOL; - $cellValue = ($cellValue != 0); - break; - case 'DateTime': - $type = PHPExcel_Cell_DataType::TYPE_NUMERIC; - $cellValue = PHPExcel_Shared_Date::PHPToExcel(strtotime($cellValue)); - break; - case 'Error': - $type = PHPExcel_Cell_DataType::TYPE_ERROR; - break; - } - } - - if ($hasCalculatedValue) { -// echo 'FORMULA
    '; - $type = PHPExcel_Cell_DataType::TYPE_FORMULA; - $columnNumber = PHPExcel_Cell::columnIndexFromString($columnID); - if (substr($cellDataFormula, 0, 3) == 'of:') { - $cellDataFormula = substr($cellDataFormula, 3); -// echo 'Before: ', $cellDataFormula,'
    '; - $temp = explode('"', $cellDataFormula); - $key = false; - foreach ($temp as &$value) { - // Only replace in alternate array entries (i.e. non-quoted blocks) - if ($key = !$key) { - $value = str_replace(array('[.', '.', ']'), '', $value); - } - } - } else { - // Convert R1C1 style references to A1 style references (but only when not quoted) -// echo 'Before: ', $cellDataFormula,'
    '; - $temp = explode('"', $cellDataFormula); - $key = false; - foreach ($temp as &$value) { - // Only replace in alternate array entries (i.e. non-quoted blocks) - if ($key = !$key) { - preg_match_all('/(R(\[?-?\d*\]?))(C(\[?-?\d*\]?))/', $value, $cellReferences, PREG_SET_ORDER + PREG_OFFSET_CAPTURE); - // Reverse the matches array, otherwise all our offsets will become incorrect if we modify our way - // through the formula from left to right. Reversing means that we work right to left.through - // the formula - $cellReferences = array_reverse($cellReferences); - // Loop through each R1C1 style reference in turn, converting it to its A1 style equivalent, - // then modify the formula to use that new reference - foreach ($cellReferences as $cellReference) { - $rowReference = $cellReference[2][0]; - // Empty R reference is the current row - if ($rowReference == '') { - $rowReference = $rowID; - } - // Bracketed R references are relative to the current row - if ($rowReference{0} == '[') { - $rowReference = $rowID + trim($rowReference, '[]'); - } - $columnReference = $cellReference[4][0]; - // Empty C reference is the current column - if ($columnReference == '') { - $columnReference = $columnNumber; - } - // Bracketed C references are relative to the current column - if ($columnReference{0} == '[') { - $columnReference = $columnNumber + trim($columnReference, '[]'); - } - $A1CellReference = PHPExcel_Cell::stringFromColumnIndex($columnReference-1).$rowReference; - $value = substr_replace($value, $A1CellReference, $cellReference[0][1], strlen($cellReference[0][0])); - } - } - } - } - unset($value); - // Then rebuild the formula string - $cellDataFormula = implode('"', $temp); -// echo 'After: ', $cellDataFormula,'
    '; - } - -// echo 'Cell '.$columnID.$rowID.' is a '.$type.' with a value of '.(($hasCalculatedValue) ? $cellDataFormula : $cellValue).'
    '; -// - $objPHPExcel->getActiveSheet()->getCell($columnID.$rowID)->setValueExplicit((($hasCalculatedValue) ? $cellDataFormula : $cellValue), $type); - if ($hasCalculatedValue) { -// echo 'Formula result is '.$cellValue.'
    '; - $objPHPExcel->getActiveSheet()->getCell($columnID.$rowID)->setCalculatedValue($cellValue); - } - $cellIsSet = $rowHasData = true; - } - - if (isset($cell->Comment)) { -// echo 'comment found
    '; - $commentAttributes = $cell->Comment->attributes($namespaces['ss']); - $author = 'unknown'; - if (isset($commentAttributes->Author)) { - $author = (string)$commentAttributes->Author; -// echo 'Author: ', $author,'
    '; - } - $node = $cell->Comment->Data->asXML(); -// $annotation = str_replace('html:','',substr($node,49,-10)); -// echo $annotation,'
    '; - $annotation = strip_tags($node); -// echo 'Annotation: ', $annotation,'
    '; - $objPHPExcel->getActiveSheet()->getComment($columnID.$rowID)->setAuthor(self::convertStringEncoding($author, $this->charSet))->setText($this->parseRichText($annotation)); - } - - if (($cellIsSet) && (isset($cell_ss['StyleID']))) { - $style = (string) $cell_ss['StyleID']; -// echo 'Cell style for '.$columnID.$rowID.' is '.$style.'
    '; - if ((isset($this->styles[$style])) && (!empty($this->styles[$style]))) { -// echo 'Cell '.$columnID.$rowID.'
    '; -// print_r($this->styles[$style]); -// echo '
    '; - if (!$objPHPExcel->getActiveSheet()->cellExists($columnID.$rowID)) { - $objPHPExcel->getActiveSheet()->getCell($columnID.$rowID)->setValue(null); - } - $objPHPExcel->getActiveSheet()->getStyle($cellRange)->applyFromArray($this->styles[$style]); - } - } - ++$columnID; - while ($additionalMergedCells > 0) { - ++$columnID; - $additionalMergedCells--; - } - } - - if ($rowHasData) { - if (isset($row_ss['StyleID'])) { - $rowStyle = $row_ss['StyleID']; - } - if (isset($row_ss['Height'])) { - $rowHeight = $row_ss['Height']; -// echo 'Setting row height to '.$rowHeight.'
    '; - $objPHPExcel->getActiveSheet()->getRowDimension($rowID)->setRowHeight($rowHeight); - } - } - - ++$rowID; - } - } - ++$worksheetID; - } - - // Return - return $objPHPExcel; - } - - - protected static function convertStringEncoding($string, $charset) - { - if ($charset != 'UTF-8') { - return PHPExcel_Shared_String::ConvertEncoding($string, 'UTF-8', $charset); - } - return $string; - } - - - protected function parseRichText($is = '') - { - $value = new PHPExcel_RichText(); - - $value->createText(self::convertStringEncoding($is, $this->charSet)); - - return $value; - } -} diff --git a/application/third_party/PHPExcel/Reader/Excel2007.php b/application/third_party/PHPExcel/Reader/Excel2007.php deleted file mode 100644 index 1932df4b..00000000 --- a/application/third_party/PHPExcel/Reader/Excel2007.php +++ /dev/null @@ -1,2051 +0,0 @@ -readFilter = new PHPExcel_Reader_DefaultReadFilter(); - $this->referenceHelper = PHPExcel_ReferenceHelper::getInstance(); - } - - /** - * Can the current PHPExcel_Reader_IReader read the file? - * - * @param string $pFilename - * @return boolean - * @throws PHPExcel_Reader_Exception - */ - public function canRead($pFilename) - { - // Check if file exists - if (!file_exists($pFilename)) { - throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); - } - - $zipClass = PHPExcel_Settings::getZipClass(); - - // Check if zip class exists -// if (!class_exists($zipClass, false)) { -// throw new PHPExcel_Reader_Exception($zipClass . " library is not enabled"); -// } - - $xl = false; - // Load file - $zip = new $zipClass; - if ($zip->open($pFilename) === true) { - // check if it is an OOXML archive - $rels = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, "_rels/.rels")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); - if ($rels !== false) { - foreach ($rels->Relationship as $rel) { - switch ($rel["Type"]) { - case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument": - if (basename($rel["Target"]) == 'workbook.xml') { - $xl = true; - } - break; - - } - } - } - $zip->close(); - } - - return $xl; - } - - - /** - * Reads names of the worksheets from a file, without parsing the whole file to a PHPExcel object - * - * @param string $pFilename - * @throws PHPExcel_Reader_Exception - */ - public function listWorksheetNames($pFilename) - { - // Check if file exists - if (!file_exists($pFilename)) { - throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); - } - - $worksheetNames = array(); - - $zipClass = PHPExcel_Settings::getZipClass(); - - $zip = new $zipClass; - $zip->open($pFilename); - - // The files we're looking at here are small enough that simpleXML is more efficient than XMLReader - $rels = simplexml_load_string( - $this->securityScan($this->getFromZipArchive($zip, "_rels/.rels"), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()) - ); //~ http://schemas.openxmlformats.org/package/2006/relationships"); - foreach ($rels->Relationship as $rel) { - switch ($rel["Type"]) { - case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument": - $xmlWorkbook = simplexml_load_string( - $this->securityScan($this->getFromZipArchive($zip, "{$rel['Target']}"), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()) - ); //~ http://schemas.openxmlformats.org/spreadsheetml/2006/main"); - - if ($xmlWorkbook->sheets) { - foreach ($xmlWorkbook->sheets->sheet as $eleSheet) { - // Check if sheet should be skipped - $worksheetNames[] = (string) $eleSheet["name"]; - } - } - } - } - - $zip->close(); - - return $worksheetNames; - } - - - /** - * Return worksheet info (Name, Last Column Letter, Last Column Index, Total Rows, Total Columns) - * - * @param string $pFilename - * @throws PHPExcel_Reader_Exception - */ - public function listWorksheetInfo($pFilename) - { - // Check if file exists - if (!file_exists($pFilename)) { - throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); - } - - $worksheetInfo = array(); - - $zipClass = PHPExcel_Settings::getZipClass(); - - $zip = new $zipClass; - $zip->open($pFilename); - - $rels = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, "_rels/.rels")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); //~ http://schemas.openxmlformats.org/package/2006/relationships"); - foreach ($rels->Relationship as $rel) { - if ($rel["Type"] == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument") { - $dir = dirname($rel["Target"]); - $relsWorkbook = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, "$dir/_rels/" . basename($rel["Target"]) . ".rels")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); //~ http://schemas.openxmlformats.org/package/2006/relationships"); - $relsWorkbook->registerXPathNamespace("rel", "http://schemas.openxmlformats.org/package/2006/relationships"); - - $worksheets = array(); - foreach ($relsWorkbook->Relationship as $ele) { - if ($ele["Type"] == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet") { - $worksheets[(string) $ele["Id"]] = $ele["Target"]; - } - } - - $xmlWorkbook = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, "{$rel['Target']}")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); //~ http://schemas.openxmlformats.org/spreadsheetml/2006/main"); - if ($xmlWorkbook->sheets) { - $dir = dirname($rel["Target"]); - foreach ($xmlWorkbook->sheets->sheet as $eleSheet) { - $tmpInfo = array( - 'worksheetName' => (string) $eleSheet["name"], - 'lastColumnLetter' => 'A', - 'lastColumnIndex' => 0, - 'totalRows' => 0, - 'totalColumns' => 0, - ); - - $fileWorksheet = $worksheets[(string) self::getArrayItem($eleSheet->attributes("http://schemas.openxmlformats.org/officeDocument/2006/relationships"), "id")]; - - $xml = new XMLReader(); - $res = $xml->xml($this->securityScanFile('zip://'.PHPExcel_Shared_File::realpath($pFilename).'#'."$dir/$fileWorksheet"), null, PHPExcel_Settings::getLibXmlLoaderOptions()); - $xml->setParserProperty(2, true); - - $currCells = 0; - while ($xml->read()) { - if ($xml->name == 'row' && $xml->nodeType == XMLReader::ELEMENT) { - $row = $xml->getAttribute('r'); - $tmpInfo['totalRows'] = $row; - $tmpInfo['totalColumns'] = max($tmpInfo['totalColumns'], $currCells); - $currCells = 0; - } elseif ($xml->name == 'c' && $xml->nodeType == XMLReader::ELEMENT) { - $currCells++; - } - } - $tmpInfo['totalColumns'] = max($tmpInfo['totalColumns'], $currCells); - $xml->close(); - - $tmpInfo['lastColumnIndex'] = $tmpInfo['totalColumns'] - 1; - $tmpInfo['lastColumnLetter'] = PHPExcel_Cell::stringFromColumnIndex($tmpInfo['lastColumnIndex']); - - $worksheetInfo[] = $tmpInfo; - } - } - } - } - - $zip->close(); - - return $worksheetInfo; - } - - private static function castToBoolean($c) - { -// echo 'Initial Cast to Boolean', PHP_EOL; - $value = isset($c->v) ? (string) $c->v : null; - if ($value == '0') { - return false; - } elseif ($value == '1') { - return true; - } else { - return (bool)$c->v; - } - return $value; - } - - private static function castToError($c) - { -// echo 'Initial Cast to Error', PHP_EOL; - return isset($c->v) ? (string) $c->v : null; - } - - private static function castToString($c) - { -// echo 'Initial Cast to String, PHP_EOL; - return isset($c->v) ? (string) $c->v : null; - } - - private function castToFormula($c, $r, &$cellDataType, &$value, &$calculatedValue, &$sharedFormulas, $castBaseType) - { -// echo 'Formula', PHP_EOL; -// echo '$c->f is ', $c->f, PHP_EOL; - $cellDataType = 'f'; - $value = "={$c->f}"; - $calculatedValue = self::$castBaseType($c); - - // Shared formula? - if (isset($c->f['t']) && strtolower((string)$c->f['t']) == 'shared') { -// echo 'SHARED FORMULA', PHP_EOL; - $instance = (string)$c->f['si']; - -// echo 'Instance ID = ', $instance, PHP_EOL; -// -// echo 'Shared Formula Array:', PHP_EOL; -// print_r($sharedFormulas); - if (!isset($sharedFormulas[(string)$c->f['si']])) { -// echo 'SETTING NEW SHARED FORMULA', PHP_EOL; -// echo 'Master is ', $r, PHP_EOL; -// echo 'Formula is ', $value, PHP_EOL; - $sharedFormulas[$instance] = array('master' => $r, 'formula' => $value); -// echo 'New Shared Formula Array:', PHP_EOL; -// print_r($sharedFormulas); - } else { -// echo 'GETTING SHARED FORMULA', PHP_EOL; -// echo 'Master is ', $sharedFormulas[$instance]['master'], PHP_EOL; -// echo 'Formula is ', $sharedFormulas[$instance]['formula'], PHP_EOL; - $master = PHPExcel_Cell::coordinateFromString($sharedFormulas[$instance]['master']); - $current = PHPExcel_Cell::coordinateFromString($r); - - $difference = array(0, 0); - $difference[0] = PHPExcel_Cell::columnIndexFromString($current[0]) - PHPExcel_Cell::columnIndexFromString($master[0]); - $difference[1] = $current[1] - $master[1]; - - $value = $this->referenceHelper->updateFormulaReferences($sharedFormulas[$instance]['formula'], 'A1', $difference[0], $difference[1]); -// echo 'Adjusted Formula is ', $value, PHP_EOL; - } - } - } - - - private function getFromZipArchive($archive, $fileName = '') - { - // Root-relative paths - if (strpos($fileName, '//') !== false) { - $fileName = substr($fileName, strpos($fileName, '//') + 1); - } - $fileName = PHPExcel_Shared_File::realpath($fileName); - - // Sadly, some 3rd party xlsx generators don't use consistent case for filenaming - // so we need to load case-insensitively from the zip file - - // Apache POI fixes - $contents = $archive->getFromIndex( - $archive->locateName($fileName, ZIPARCHIVE::FL_NOCASE) - ); - if ($contents === false) { - $contents = $archive->getFromIndex( - $archive->locateName(substr($fileName, 1), ZIPARCHIVE::FL_NOCASE) - ); - } - - return $contents; - } - - - /** - * Loads PHPExcel from file - * - * @param string $pFilename - * @return PHPExcel - * @throws PHPExcel_Reader_Exception - */ - public function load($pFilename) - { - // Check if file exists - if (!file_exists($pFilename)) { - throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); - } - - // Initialisations - $excel = new PHPExcel; - $excel->removeSheetByIndex(0); - if (!$this->readDataOnly) { - $excel->removeCellStyleXfByIndex(0); // remove the default style - $excel->removeCellXfByIndex(0); // remove the default style - } - - $zipClass = PHPExcel_Settings::getZipClass(); - - $zip = new $zipClass; - $zip->open($pFilename); - - // Read the theme first, because we need the colour scheme when reading the styles - $wbRels = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, "xl/_rels/workbook.xml.rels")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); //~ http://schemas.openxmlformats.org/package/2006/relationships"); - foreach ($wbRels->Relationship as $rel) { - switch ($rel["Type"]) { - case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme": - $themeOrderArray = array('lt1', 'dk1', 'lt2', 'dk2'); - $themeOrderAdditional = count($themeOrderArray); - - $xmlTheme = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, "xl/{$rel['Target']}")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); - if (is_object($xmlTheme)) { - $xmlThemeName = $xmlTheme->attributes(); - $xmlTheme = $xmlTheme->children("http://schemas.openxmlformats.org/drawingml/2006/main"); - $themeName = (string)$xmlThemeName['name']; - - $colourScheme = $xmlTheme->themeElements->clrScheme->attributes(); - $colourSchemeName = (string)$colourScheme['name']; - $colourScheme = $xmlTheme->themeElements->clrScheme->children("http://schemas.openxmlformats.org/drawingml/2006/main"); - - $themeColours = array(); - foreach ($colourScheme as $k => $xmlColour) { - $themePos = array_search($k, $themeOrderArray); - if ($themePos === false) { - $themePos = $themeOrderAdditional++; - } - if (isset($xmlColour->sysClr)) { - $xmlColourData = $xmlColour->sysClr->attributes(); - $themeColours[$themePos] = $xmlColourData['lastClr']; - } elseif (isset($xmlColour->srgbClr)) { - $xmlColourData = $xmlColour->srgbClr->attributes(); - $themeColours[$themePos] = $xmlColourData['val']; - } - } - self::$theme = new PHPExcel_Reader_Excel2007_Theme($themeName, $colourSchemeName, $themeColours); - } - break; - } - } - - $rels = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, "_rels/.rels")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); //~ http://schemas.openxmlformats.org/package/2006/relationships"); - foreach ($rels->Relationship as $rel) { - switch ($rel["Type"]) { - case "http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties": - $xmlCore = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, "{$rel['Target']}")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); - if (is_object($xmlCore)) { - $xmlCore->registerXPathNamespace("dc", "http://purl.org/dc/elements/1.1/"); - $xmlCore->registerXPathNamespace("dcterms", "http://purl.org/dc/terms/"); - $xmlCore->registerXPathNamespace("cp", "http://schemas.openxmlformats.org/package/2006/metadata/core-properties"); - $docProps = $excel->getProperties(); - $docProps->setCreator((string) self::getArrayItem($xmlCore->xpath("dc:creator"))); - $docProps->setLastModifiedBy((string) self::getArrayItem($xmlCore->xpath("cp:lastModifiedBy"))); - $docProps->setCreated(strtotime(self::getArrayItem($xmlCore->xpath("dcterms:created")))); //! respect xsi:type - $docProps->setModified(strtotime(self::getArrayItem($xmlCore->xpath("dcterms:modified")))); //! respect xsi:type - $docProps->setTitle((string) self::getArrayItem($xmlCore->xpath("dc:title"))); - $docProps->setDescription((string) self::getArrayItem($xmlCore->xpath("dc:description"))); - $docProps->setSubject((string) self::getArrayItem($xmlCore->xpath("dc:subject"))); - $docProps->setKeywords((string) self::getArrayItem($xmlCore->xpath("cp:keywords"))); - $docProps->setCategory((string) self::getArrayItem($xmlCore->xpath("cp:category"))); - } - break; - case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties": - $xmlCore = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, "{$rel['Target']}")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); - if (is_object($xmlCore)) { - $docProps = $excel->getProperties(); - if (isset($xmlCore->Company)) { - $docProps->setCompany((string) $xmlCore->Company); - } - if (isset($xmlCore->Manager)) { - $docProps->setManager((string) $xmlCore->Manager); - } - } - break; - case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties": - $xmlCore = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, "{$rel['Target']}")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); - if (is_object($xmlCore)) { - $docProps = $excel->getProperties(); - foreach ($xmlCore as $xmlProperty) { - $cellDataOfficeAttributes = $xmlProperty->attributes(); - if (isset($cellDataOfficeAttributes['name'])) { - $propertyName = (string) $cellDataOfficeAttributes['name']; - $cellDataOfficeChildren = $xmlProperty->children('http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes'); - $attributeType = $cellDataOfficeChildren->getName(); - $attributeValue = (string) $cellDataOfficeChildren->{$attributeType}; - $attributeValue = PHPExcel_DocumentProperties::convertProperty($attributeValue, $attributeType); - $attributeType = PHPExcel_DocumentProperties::convertPropertyType($attributeType); - $docProps->setCustomProperty($propertyName, $attributeValue, $attributeType); - } - } - } - break; - //Ribbon - case "http://schemas.microsoft.com/office/2006/relationships/ui/extensibility": - $customUI = $rel['Target']; - if (!is_null($customUI)) { - $this->readRibbon($excel, $customUI, $zip); - } - break; - case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument": - $dir = dirname($rel["Target"]); - $relsWorkbook = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, "$dir/_rels/" . basename($rel["Target"]) . ".rels")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); //~ http://schemas.openxmlformats.org/package/2006/relationships"); - $relsWorkbook->registerXPathNamespace("rel", "http://schemas.openxmlformats.org/package/2006/relationships"); - - $sharedStrings = array(); - $xpath = self::getArrayItem($relsWorkbook->xpath("rel:Relationship[@Type='http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings']")); - $xmlStrings = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, "$dir/$xpath[Target]")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); //~ http://schemas.openxmlformats.org/spreadsheetml/2006/main"); - if (isset($xmlStrings) && isset($xmlStrings->si)) { - foreach ($xmlStrings->si as $val) { - if (isset($val->t)) { - $sharedStrings[] = PHPExcel_Shared_String::ControlCharacterOOXML2PHP((string) $val->t); - } elseif (isset($val->r)) { - $sharedStrings[] = $this->parseRichText($val); - } - } - } - - $worksheets = array(); - $macros = $customUI = null; - foreach ($relsWorkbook->Relationship as $ele) { - switch ($ele['Type']) { - case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet": - $worksheets[(string) $ele["Id"]] = $ele["Target"]; - break; - // a vbaProject ? (: some macros) - case "http://schemas.microsoft.com/office/2006/relationships/vbaProject": - $macros = $ele["Target"]; - break; - } - } - - if (!is_null($macros)) { - $macrosCode = $this->getFromZipArchive($zip, 'xl/vbaProject.bin');//vbaProject.bin always in 'xl' dir and always named vbaProject.bin - if ($macrosCode !== false) { - $excel->setMacrosCode($macrosCode); - $excel->setHasMacros(true); - //short-circuit : not reading vbaProject.bin.rel to get Signature =>allways vbaProjectSignature.bin in 'xl' dir - $Certificate = $this->getFromZipArchive($zip, 'xl/vbaProjectSignature.bin'); - if ($Certificate !== false) { - $excel->setMacrosCertificate($Certificate); - } - } - } - $styles = array(); - $cellStyles = array(); - $xpath = self::getArrayItem($relsWorkbook->xpath("rel:Relationship[@Type='http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles']")); - $xmlStyles = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, "$dir/$xpath[Target]")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); - //~ http://schemas.openxmlformats.org/spreadsheetml/2006/main"); - - $numFmts = null; - if ($xmlStyles && $xmlStyles->numFmts[0]) { - $numFmts = $xmlStyles->numFmts[0]; - } - if (isset($numFmts) && ($numFmts !== null)) { - $numFmts->registerXPathNamespace("sml", "http://schemas.openxmlformats.org/spreadsheetml/2006/main"); - } - if (!$this->readDataOnly && $xmlStyles) { - foreach ($xmlStyles->cellXfs->xf as $xf) { - $numFmt = PHPExcel_Style_NumberFormat::FORMAT_GENERAL; - if ($xf["numFmtId"]) { - if (isset($numFmts)) { - $tmpNumFmt = self::getArrayItem($numFmts->xpath("sml:numFmt[@numFmtId=$xf[numFmtId]]")); - - if (isset($tmpNumFmt["formatCode"])) { - $numFmt = (string) $tmpNumFmt["formatCode"]; - } - } - - // We shouldn't override any of the built-in MS Excel values (values below id 164) - // But there's a lot of naughty homebrew xlsx writers that do use "reserved" id values that aren't actually used - // So we make allowance for them rather than lose formatting masks - if ((int)$xf["numFmtId"] < 164 && PHPExcel_Style_NumberFormat::builtInFormatCode((int)$xf["numFmtId"]) !== '') { - $numFmt = PHPExcel_Style_NumberFormat::builtInFormatCode((int)$xf["numFmtId"]); - } - } - $quotePrefix = false; - if (isset($xf["quotePrefix"])) { - $quotePrefix = (boolean) $xf["quotePrefix"]; - } - - $style = (object) array( - "numFmt" => $numFmt, - "font" => $xmlStyles->fonts->font[intval($xf["fontId"])], - "fill" => $xmlStyles->fills->fill[intval($xf["fillId"])], - "border" => $xmlStyles->borders->border[intval($xf["borderId"])], - "alignment" => $xf->alignment, - "protection" => $xf->protection, - "quotePrefix" => $quotePrefix, - ); - $styles[] = $style; - - // add style to cellXf collection - $objStyle = new PHPExcel_Style; - self::readStyle($objStyle, $style); - $excel->addCellXf($objStyle); - } - - foreach ($xmlStyles->cellStyleXfs->xf as $xf) { - $numFmt = PHPExcel_Style_NumberFormat::FORMAT_GENERAL; - if ($numFmts && $xf["numFmtId"]) { - $tmpNumFmt = self::getArrayItem($numFmts->xpath("sml:numFmt[@numFmtId=$xf[numFmtId]]")); - if (isset($tmpNumFmt["formatCode"])) { - $numFmt = (string) $tmpNumFmt["formatCode"]; - } elseif ((int)$xf["numFmtId"] < 165) { - $numFmt = PHPExcel_Style_NumberFormat::builtInFormatCode((int)$xf["numFmtId"]); - } - } - - $cellStyle = (object) array( - "numFmt" => $numFmt, - "font" => $xmlStyles->fonts->font[intval($xf["fontId"])], - "fill" => $xmlStyles->fills->fill[intval($xf["fillId"])], - "border" => $xmlStyles->borders->border[intval($xf["borderId"])], - "alignment" => $xf->alignment, - "protection" => $xf->protection, - "quotePrefix" => $quotePrefix, - ); - $cellStyles[] = $cellStyle; - - // add style to cellStyleXf collection - $objStyle = new PHPExcel_Style; - self::readStyle($objStyle, $cellStyle); - $excel->addCellStyleXf($objStyle); - } - } - - $dxfs = array(); - if (!$this->readDataOnly && $xmlStyles) { - // Conditional Styles - if ($xmlStyles->dxfs) { - foreach ($xmlStyles->dxfs->dxf as $dxf) { - $style = new PHPExcel_Style(false, true); - self::readStyle($style, $dxf); - $dxfs[] = $style; - } - } - // Cell Styles - if ($xmlStyles->cellStyles) { - foreach ($xmlStyles->cellStyles->cellStyle as $cellStyle) { - if (intval($cellStyle['builtinId']) == 0) { - if (isset($cellStyles[intval($cellStyle['xfId'])])) { - // Set default style - $style = new PHPExcel_Style; - self::readStyle($style, $cellStyles[intval($cellStyle['xfId'])]); - - // normal style, currently not using it for anything - } - } - } - } - } - - $xmlWorkbook = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, "{$rel['Target']}")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); //~ http://schemas.openxmlformats.org/spreadsheetml/2006/main"); - - // Set base date - if ($xmlWorkbook->workbookPr) { - PHPExcel_Shared_Date::setExcelCalendar(PHPExcel_Shared_Date::CALENDAR_WINDOWS_1900); - if (isset($xmlWorkbook->workbookPr['date1904'])) { - if (self::boolean((string) $xmlWorkbook->workbookPr['date1904'])) { - PHPExcel_Shared_Date::setExcelCalendar(PHPExcel_Shared_Date::CALENDAR_MAC_1904); - } - } - } - - $sheetId = 0; // keep track of new sheet id in final workbook - $oldSheetId = -1; // keep track of old sheet id in final workbook - $countSkippedSheets = 0; // keep track of number of skipped sheets - $mapSheetId = array(); // mapping of sheet ids from old to new - - $charts = $chartDetails = array(); - - if ($xmlWorkbook->sheets) { - foreach ($xmlWorkbook->sheets->sheet as $eleSheet) { - ++$oldSheetId; - - // Check if sheet should be skipped - if (isset($this->loadSheetsOnly) && !in_array((string) $eleSheet["name"], $this->loadSheetsOnly)) { - ++$countSkippedSheets; - $mapSheetId[$oldSheetId] = null; - continue; - } - - // Map old sheet id in original workbook to new sheet id. - // They will differ if loadSheetsOnly() is being used - $mapSheetId[$oldSheetId] = $oldSheetId - $countSkippedSheets; - - // Load sheet - $docSheet = $excel->createSheet(); - // Use false for $updateFormulaCellReferences to prevent adjustment of worksheet - // references in formula cells... during the load, all formulae should be correct, - // and we're simply bringing the worksheet name in line with the formula, not the - // reverse - $docSheet->setTitle((string) $eleSheet["name"], false); - $fileWorksheet = $worksheets[(string) self::getArrayItem($eleSheet->attributes("http://schemas.openxmlformats.org/officeDocument/2006/relationships"), "id")]; - $xmlSheet = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, "$dir/$fileWorksheet")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); //~ http://schemas.openxmlformats.org/spreadsheetml/2006/main"); - - $sharedFormulas = array(); - - if (isset($eleSheet["state"]) && (string) $eleSheet["state"] != '') { - $docSheet->setSheetState((string) $eleSheet["state"]); - } - - if (isset($xmlSheet->sheetViews) && isset($xmlSheet->sheetViews->sheetView)) { - if (isset($xmlSheet->sheetViews->sheetView['zoomScale'])) { - $docSheet->getSheetView()->setZoomScale(intval($xmlSheet->sheetViews->sheetView['zoomScale'])); - } - if (isset($xmlSheet->sheetViews->sheetView['zoomScaleNormal'])) { - $docSheet->getSheetView()->setZoomScaleNormal(intval($xmlSheet->sheetViews->sheetView['zoomScaleNormal'])); - } - if (isset($xmlSheet->sheetViews->sheetView['view'])) { - $docSheet->getSheetView()->setView((string) $xmlSheet->sheetViews->sheetView['view']); - } - if (isset($xmlSheet->sheetViews->sheetView['showGridLines'])) { - $docSheet->setShowGridLines(self::boolean((string)$xmlSheet->sheetViews->sheetView['showGridLines'])); - } - if (isset($xmlSheet->sheetViews->sheetView['showRowColHeaders'])) { - $docSheet->setShowRowColHeaders(self::boolean((string)$xmlSheet->sheetViews->sheetView['showRowColHeaders'])); - } - if (isset($xmlSheet->sheetViews->sheetView['rightToLeft'])) { - $docSheet->setRightToLeft(self::boolean((string)$xmlSheet->sheetViews->sheetView['rightToLeft'])); - } - if (isset($xmlSheet->sheetViews->sheetView->pane)) { - if (isset($xmlSheet->sheetViews->sheetView->pane['topLeftCell'])) { - $docSheet->freezePane((string)$xmlSheet->sheetViews->sheetView->pane['topLeftCell']); - } else { - $xSplit = 0; - $ySplit = 0; - - if (isset($xmlSheet->sheetViews->sheetView->pane['xSplit'])) { - $xSplit = 1 + intval($xmlSheet->sheetViews->sheetView->pane['xSplit']); - } - - if (isset($xmlSheet->sheetViews->sheetView->pane['ySplit'])) { - $ySplit = 1 + intval($xmlSheet->sheetViews->sheetView->pane['ySplit']); - } - - $docSheet->freezePaneByColumnAndRow($xSplit, $ySplit); - } - } - - if (isset($xmlSheet->sheetViews->sheetView->selection)) { - if (isset($xmlSheet->sheetViews->sheetView->selection['sqref'])) { - $sqref = (string)$xmlSheet->sheetViews->sheetView->selection['sqref']; - $sqref = explode(' ', $sqref); - $sqref = $sqref[0]; - $docSheet->setSelectedCells($sqref); - } - } - } - - if (isset($xmlSheet->sheetPr) && isset($xmlSheet->sheetPr->tabColor)) { - if (isset($xmlSheet->sheetPr->tabColor['rgb'])) { - $docSheet->getTabColor()->setARGB((string)$xmlSheet->sheetPr->tabColor['rgb']); - } - } - if (isset($xmlSheet->sheetPr) && isset($xmlSheet->sheetPr['codeName'])) { - $docSheet->setCodeName((string) $xmlSheet->sheetPr['codeName']); - } - if (isset($xmlSheet->sheetPr) && isset($xmlSheet->sheetPr->outlinePr)) { - if (isset($xmlSheet->sheetPr->outlinePr['summaryRight']) && - !self::boolean((string) $xmlSheet->sheetPr->outlinePr['summaryRight'])) { - $docSheet->setShowSummaryRight(false); - } else { - $docSheet->setShowSummaryRight(true); - } - - if (isset($xmlSheet->sheetPr->outlinePr['summaryBelow']) && - !self::boolean((string) $xmlSheet->sheetPr->outlinePr['summaryBelow'])) { - $docSheet->setShowSummaryBelow(false); - } else { - $docSheet->setShowSummaryBelow(true); - } - } - - if (isset($xmlSheet->sheetPr) && isset($xmlSheet->sheetPr->pageSetUpPr)) { - if (isset($xmlSheet->sheetPr->pageSetUpPr['fitToPage']) && - !self::boolean((string) $xmlSheet->sheetPr->pageSetUpPr['fitToPage'])) { - $docSheet->getPageSetup()->setFitToPage(false); - } else { - $docSheet->getPageSetup()->setFitToPage(true); - } - } - - if (isset($xmlSheet->sheetFormatPr)) { - if (isset($xmlSheet->sheetFormatPr['customHeight']) && - self::boolean((string) $xmlSheet->sheetFormatPr['customHeight']) && - isset($xmlSheet->sheetFormatPr['defaultRowHeight'])) { - $docSheet->getDefaultRowDimension()->setRowHeight((float)$xmlSheet->sheetFormatPr['defaultRowHeight']); - } - if (isset($xmlSheet->sheetFormatPr['defaultColWidth'])) { - $docSheet->getDefaultColumnDimension()->setWidth((float)$xmlSheet->sheetFormatPr['defaultColWidth']); - } - if (isset($xmlSheet->sheetFormatPr['zeroHeight']) && - ((string)$xmlSheet->sheetFormatPr['zeroHeight'] == '1')) { - $docSheet->getDefaultRowDimension()->setZeroHeight(true); - } - } - - if (isset($xmlSheet->cols) && !$this->readDataOnly) { - foreach ($xmlSheet->cols->col as $col) { - for ($i = intval($col["min"]) - 1; $i < intval($col["max"]); ++$i) { - if ($col["style"] && !$this->readDataOnly) { - $docSheet->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($i))->setXfIndex(intval($col["style"])); - } - if (self::boolean($col["bestFit"])) { - //$docSheet->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($i))->setAutoSize(true); - } - if (self::boolean($col["hidden"])) { - // echo PHPExcel_Cell::stringFromColumnIndex($i), ': HIDDEN COLUMN',PHP_EOL; - $docSheet->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($i))->setVisible(false); - } - if (self::boolean($col["collapsed"])) { - $docSheet->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($i))->setCollapsed(true); - } - if ($col["outlineLevel"] > 0) { - $docSheet->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($i))->setOutlineLevel(intval($col["outlineLevel"])); - } - $docSheet->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($i))->setWidth(floatval($col["width"])); - - if (intval($col["max"]) == 16384) { - break; - } - } - } - } - - if (isset($xmlSheet->printOptions) && !$this->readDataOnly) { - if (self::boolean((string) $xmlSheet->printOptions['gridLinesSet'])) { - $docSheet->setShowGridlines(true); - } - if (self::boolean((string) $xmlSheet->printOptions['gridLines'])) { - $docSheet->setPrintGridlines(true); - } - if (self::boolean((string) $xmlSheet->printOptions['horizontalCentered'])) { - $docSheet->getPageSetup()->setHorizontalCentered(true); - } - if (self::boolean((string) $xmlSheet->printOptions['verticalCentered'])) { - $docSheet->getPageSetup()->setVerticalCentered(true); - } - } - - if ($xmlSheet && $xmlSheet->sheetData && $xmlSheet->sheetData->row) { - foreach ($xmlSheet->sheetData->row as $row) { - if ($row["ht"] && !$this->readDataOnly) { - $docSheet->getRowDimension(intval($row["r"]))->setRowHeight(floatval($row["ht"])); - } - if (self::boolean($row["hidden"]) && !$this->readDataOnly) { - $docSheet->getRowDimension(intval($row["r"]))->setVisible(false); - } - if (self::boolean($row["collapsed"])) { - $docSheet->getRowDimension(intval($row["r"]))->setCollapsed(true); - } - if ($row["outlineLevel"] > 0) { - $docSheet->getRowDimension(intval($row["r"]))->setOutlineLevel(intval($row["outlineLevel"])); - } - if ($row["s"] && !$this->readDataOnly) { - $docSheet->getRowDimension(intval($row["r"]))->setXfIndex(intval($row["s"])); - } - - foreach ($row->c as $c) { - $r = (string) $c["r"]; - $cellDataType = (string) $c["t"]; - $value = null; - $calculatedValue = null; - - // Read cell? - if ($this->getReadFilter() !== null) { - $coordinates = PHPExcel_Cell::coordinateFromString($r); - - if (!$this->getReadFilter()->readCell($coordinates[0], $coordinates[1], $docSheet->getTitle())) { - continue; - } - } - - // echo 'Reading cell ', $coordinates[0], $coordinates[1], PHP_EOL; - // print_r($c); - // echo PHP_EOL; - // echo 'Cell Data Type is ', $cellDataType, ': '; - // - // Read cell! - switch ($cellDataType) { - case "s": - // echo 'String', PHP_EOL; - if ((string)$c->v != '') { - $value = $sharedStrings[intval($c->v)]; - - if ($value instanceof PHPExcel_RichText) { - $value = clone $value; - } - } else { - $value = ''; - } - break; - case "b": - // echo 'Boolean', PHP_EOL; - if (!isset($c->f)) { - $value = self::castToBoolean($c); - } else { - // Formula - $this->castToFormula($c, $r, $cellDataType, $value, $calculatedValue, $sharedFormulas, 'castToBoolean'); - if (isset($c->f['t'])) { - $att = array(); - $att = $c->f; - $docSheet->getCell($r)->setFormulaAttributes($att); - } - // echo '$calculatedValue = ', $calculatedValue, PHP_EOL; - } - break; - case "inlineStr": -// echo 'Inline String', PHP_EOL; - if (isset($c->f)) { - $this->castToFormula($c, $r, $cellDataType, $value, $calculatedValue, $sharedFormulas, 'castToError'); - } else { - $value = $this->parseRichText($c->is); - } - break; - case "e": - // echo 'Error', PHP_EOL; - if (!isset($c->f)) { - $value = self::castToError($c); - } else { - // Formula - $this->castToFormula($c, $r, $cellDataType, $value, $calculatedValue, $sharedFormulas, 'castToError'); - // echo '$calculatedValue = ', $calculatedValue, PHP_EOL; - } - break; - default: -// echo 'Default', PHP_EOL; - if (!isset($c->f)) { - // echo 'Not a Formula', PHP_EOL; - $value = self::castToString($c); - } else { - // echo 'Treat as Formula', PHP_EOL; - // Formula - $this->castToFormula($c, $r, $cellDataType, $value, $calculatedValue, $sharedFormulas, 'castToString'); - // echo '$calculatedValue = ', $calculatedValue, PHP_EOL; - } - break; - } - // echo 'Value is ', $value, PHP_EOL; - - // Check for numeric values - if (is_numeric($value) && $cellDataType != 's') { - if ($value == (int)$value) { - $value = (int)$value; - } elseif ($value == (float)$value) { - $value = (float)$value; - } elseif ($value == (double)$value) { - $value = (double)$value; - } - } - - // Rich text? - if ($value instanceof PHPExcel_RichText && $this->readDataOnly) { - $value = $value->getPlainText(); - } - - $cell = $docSheet->getCell($r); - // Assign value - if ($cellDataType != '') { - $cell->setValueExplicit($value, $cellDataType); - } else { - $cell->setValue($value); - } - if ($calculatedValue !== null) { - $cell->setCalculatedValue($calculatedValue); - } - - // Style information? - if ($c["s"] && !$this->readDataOnly) { - // no style index means 0, it seems - $cell->setXfIndex(isset($styles[intval($c["s"])]) ? - intval($c["s"]) : 0); - } - } - } - } - - $conditionals = array(); - if (!$this->readDataOnly && $xmlSheet && $xmlSheet->conditionalFormatting) { - foreach ($xmlSheet->conditionalFormatting as $conditional) { - foreach ($conditional->cfRule as $cfRule) { - if (((string)$cfRule["type"] == PHPExcel_Style_Conditional::CONDITION_NONE || (string)$cfRule["type"] == PHPExcel_Style_Conditional::CONDITION_CELLIS || (string)$cfRule["type"] == PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT || (string)$cfRule["type"] == PHPExcel_Style_Conditional::CONDITION_EXPRESSION) && isset($dxfs[intval($cfRule["dxfId"])])) { - $conditionals[(string) $conditional["sqref"]][intval($cfRule["priority"])] = $cfRule; - } - } - } - - foreach ($conditionals as $ref => $cfRules) { - ksort($cfRules); - $conditionalStyles = array(); - foreach ($cfRules as $cfRule) { - $objConditional = new PHPExcel_Style_Conditional(); - $objConditional->setConditionType((string)$cfRule["type"]); - $objConditional->setOperatorType((string)$cfRule["operator"]); - - if ((string)$cfRule["text"] != '') { - $objConditional->setText((string)$cfRule["text"]); - } - - if (count($cfRule->formula) > 1) { - foreach ($cfRule->formula as $formula) { - $objConditional->addCondition((string)$formula); - } - } else { - $objConditional->addCondition((string)$cfRule->formula); - } - $objConditional->setStyle(clone $dxfs[intval($cfRule["dxfId"])]); - $conditionalStyles[] = $objConditional; - } - - // Extract all cell references in $ref - $cellBlocks = explode(' ', str_replace('$', '', strtoupper($ref))); - foreach ($cellBlocks as $cellBlock) { - $docSheet->getStyle($cellBlock)->setConditionalStyles($conditionalStyles); - } - } - } - - $aKeys = array("sheet", "objects", "scenarios", "formatCells", "formatColumns", "formatRows", "insertColumns", "insertRows", "insertHyperlinks", "deleteColumns", "deleteRows", "selectLockedCells", "sort", "autoFilter", "pivotTables", "selectUnlockedCells"); - if (!$this->readDataOnly && $xmlSheet && $xmlSheet->sheetProtection) { - foreach ($aKeys as $key) { - $method = "set" . ucfirst($key); - $docSheet->getProtection()->$method(self::boolean((string) $xmlSheet->sheetProtection[$key])); - } - } - - if (!$this->readDataOnly && $xmlSheet && $xmlSheet->sheetProtection) { - $docSheet->getProtection()->setPassword((string) $xmlSheet->sheetProtection["password"], true); - if ($xmlSheet->protectedRanges->protectedRange) { - foreach ($xmlSheet->protectedRanges->protectedRange as $protectedRange) { - $docSheet->protectCells((string) $protectedRange["sqref"], (string) $protectedRange["password"], true); - } - } - } - - if ($xmlSheet && $xmlSheet->autoFilter && !$this->readDataOnly) { - $autoFilterRange = (string) $xmlSheet->autoFilter["ref"]; - if (strpos($autoFilterRange, ':') !== false) { - $autoFilter = $docSheet->getAutoFilter(); - $autoFilter->setRange($autoFilterRange); - - foreach ($xmlSheet->autoFilter->filterColumn as $filterColumn) { - $column = $autoFilter->getColumnByOffset((integer) $filterColumn["colId"]); - // Check for standard filters - if ($filterColumn->filters) { - $column->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_FILTER); - $filters = $filterColumn->filters; - if ((isset($filters["blank"])) && ($filters["blank"] == 1)) { - // Operator is undefined, but always treated as EQUAL - $column->createRule()->setRule(null, '')->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_FILTER); - } - // Standard filters are always an OR join, so no join rule needs to be set - // Entries can be either filter elements - foreach ($filters->filter as $filterRule) { - // Operator is undefined, but always treated as EQUAL - $column->createRule()->setRule(null, (string) $filterRule["val"])->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_FILTER); - } - // Or Date Group elements - foreach ($filters->dateGroupItem as $dateGroupItem) { - $column->createRule()->setRule( - // Operator is undefined, but always treated as EQUAL - null, - array( - 'year' => (string) $dateGroupItem["year"], - 'month' => (string) $dateGroupItem["month"], - 'day' => (string) $dateGroupItem["day"], - 'hour' => (string) $dateGroupItem["hour"], - 'minute' => (string) $dateGroupItem["minute"], - 'second' => (string) $dateGroupItem["second"], - ), - (string) $dateGroupItem["dateTimeGrouping"] - ) - ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP); - } - } - // Check for custom filters - if ($filterColumn->customFilters) { - $column->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_CUSTOMFILTER); - $customFilters = $filterColumn->customFilters; - // Custom filters can an AND or an OR join; - // and there should only ever be one or two entries - if ((isset($customFilters["and"])) && ($customFilters["and"] == 1)) { - $column->setJoin(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_AND); - } - foreach ($customFilters->customFilter as $filterRule) { - $column->createRule()->setRule( - (string) $filterRule["operator"], - (string) $filterRule["val"] - ) - ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_CUSTOMFILTER); - } - } - // Check for dynamic filters - if ($filterColumn->dynamicFilter) { - $column->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_DYNAMICFILTER); - // We should only ever have one dynamic filter - foreach ($filterColumn->dynamicFilter as $filterRule) { - $column->createRule()->setRule( - // Operator is undefined, but always treated as EQUAL - null, - (string) $filterRule["val"], - (string) $filterRule["type"] - ) - ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMICFILTER); - if (isset($filterRule["val"])) { - $column->setAttribute('val', (string) $filterRule["val"]); - } - if (isset($filterRule["maxVal"])) { - $column->setAttribute('maxVal', (string) $filterRule["maxVal"]); - } - } - } - // Check for dynamic filters - if ($filterColumn->top10) { - $column->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_TOPTENFILTER); - // We should only ever have one top10 filter - foreach ($filterColumn->top10 as $filterRule) { - $column->createRule()->setRule( - (((isset($filterRule["percent"])) && ($filterRule["percent"] == 1)) - ? PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_PERCENT - : PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_BY_VALUE - ), - (string) $filterRule["val"], - (((isset($filterRule["top"])) && ($filterRule["top"] == 1)) - ? PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_TOP - : PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_BOTTOM - ) - ) - ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_TOPTENFILTER); - } - } - } - } - } - - if ($xmlSheet && $xmlSheet->mergeCells && $xmlSheet->mergeCells->mergeCell && !$this->readDataOnly) { - foreach ($xmlSheet->mergeCells->mergeCell as $mergeCell) { - $mergeRef = (string) $mergeCell["ref"]; - if (strpos($mergeRef, ':') !== false) { - $docSheet->mergeCells((string) $mergeCell["ref"]); - } - } - } - - if ($xmlSheet && $xmlSheet->pageMargins && !$this->readDataOnly) { - $docPageMargins = $docSheet->getPageMargins(); - $docPageMargins->setLeft(floatval($xmlSheet->pageMargins["left"])); - $docPageMargins->setRight(floatval($xmlSheet->pageMargins["right"])); - $docPageMargins->setTop(floatval($xmlSheet->pageMargins["top"])); - $docPageMargins->setBottom(floatval($xmlSheet->pageMargins["bottom"])); - $docPageMargins->setHeader(floatval($xmlSheet->pageMargins["header"])); - $docPageMargins->setFooter(floatval($xmlSheet->pageMargins["footer"])); - } - - if ($xmlSheet && $xmlSheet->pageSetup && !$this->readDataOnly) { - $docPageSetup = $docSheet->getPageSetup(); - - if (isset($xmlSheet->pageSetup["orientation"])) { - $docPageSetup->setOrientation((string) $xmlSheet->pageSetup["orientation"]); - } - if (isset($xmlSheet->pageSetup["paperSize"])) { - $docPageSetup->setPaperSize(intval($xmlSheet->pageSetup["paperSize"])); - } - if (isset($xmlSheet->pageSetup["scale"])) { - $docPageSetup->setScale(intval($xmlSheet->pageSetup["scale"]), false); - } - if (isset($xmlSheet->pageSetup["fitToHeight"]) && intval($xmlSheet->pageSetup["fitToHeight"]) >= 0) { - $docPageSetup->setFitToHeight(intval($xmlSheet->pageSetup["fitToHeight"]), false); - } - if (isset($xmlSheet->pageSetup["fitToWidth"]) && intval($xmlSheet->pageSetup["fitToWidth"]) >= 0) { - $docPageSetup->setFitToWidth(intval($xmlSheet->pageSetup["fitToWidth"]), false); - } - if (isset($xmlSheet->pageSetup["firstPageNumber"]) && isset($xmlSheet->pageSetup["useFirstPageNumber"]) && - self::boolean((string) $xmlSheet->pageSetup["useFirstPageNumber"])) { - $docPageSetup->setFirstPageNumber(intval($xmlSheet->pageSetup["firstPageNumber"])); - } - } - - if ($xmlSheet && $xmlSheet->headerFooter && !$this->readDataOnly) { - $docHeaderFooter = $docSheet->getHeaderFooter(); - - if (isset($xmlSheet->headerFooter["differentOddEven"]) && - self::boolean((string)$xmlSheet->headerFooter["differentOddEven"])) { - $docHeaderFooter->setDifferentOddEven(true); - } else { - $docHeaderFooter->setDifferentOddEven(false); - } - if (isset($xmlSheet->headerFooter["differentFirst"]) && - self::boolean((string)$xmlSheet->headerFooter["differentFirst"])) { - $docHeaderFooter->setDifferentFirst(true); - } else { - $docHeaderFooter->setDifferentFirst(false); - } - if (isset($xmlSheet->headerFooter["scaleWithDoc"]) && - !self::boolean((string)$xmlSheet->headerFooter["scaleWithDoc"])) { - $docHeaderFooter->setScaleWithDocument(false); - } else { - $docHeaderFooter->setScaleWithDocument(true); - } - if (isset($xmlSheet->headerFooter["alignWithMargins"]) && - !self::boolean((string)$xmlSheet->headerFooter["alignWithMargins"])) { - $docHeaderFooter->setAlignWithMargins(false); - } else { - $docHeaderFooter->setAlignWithMargins(true); - } - - $docHeaderFooter->setOddHeader((string) $xmlSheet->headerFooter->oddHeader); - $docHeaderFooter->setOddFooter((string) $xmlSheet->headerFooter->oddFooter); - $docHeaderFooter->setEvenHeader((string) $xmlSheet->headerFooter->evenHeader); - $docHeaderFooter->setEvenFooter((string) $xmlSheet->headerFooter->evenFooter); - $docHeaderFooter->setFirstHeader((string) $xmlSheet->headerFooter->firstHeader); - $docHeaderFooter->setFirstFooter((string) $xmlSheet->headerFooter->firstFooter); - } - - if ($xmlSheet && $xmlSheet->rowBreaks && $xmlSheet->rowBreaks->brk && !$this->readDataOnly) { - foreach ($xmlSheet->rowBreaks->brk as $brk) { - if ($brk["man"]) { - $docSheet->setBreak("A$brk[id]", PHPExcel_Worksheet::BREAK_ROW); - } - } - } - if ($xmlSheet && $xmlSheet->colBreaks && $xmlSheet->colBreaks->brk && !$this->readDataOnly) { - foreach ($xmlSheet->colBreaks->brk as $brk) { - if ($brk["man"]) { - $docSheet->setBreak(PHPExcel_Cell::stringFromColumnIndex((string) $brk["id"]) . "1", PHPExcel_Worksheet::BREAK_COLUMN); - } - } - } - - if ($xmlSheet && $xmlSheet->dataValidations && !$this->readDataOnly) { - foreach ($xmlSheet->dataValidations->dataValidation as $dataValidation) { - // Uppercase coordinate - $range = strtoupper($dataValidation["sqref"]); - $rangeSet = explode(' ', $range); - foreach ($rangeSet as $range) { - $stRange = $docSheet->shrinkRangeToFit($range); - - // Extract all cell references in $range - foreach (PHPExcel_Cell::extractAllCellReferencesInRange($stRange) as $reference) { - // Create validation - $docValidation = $docSheet->getCell($reference)->getDataValidation(); - $docValidation->setType((string) $dataValidation["type"]); - $docValidation->setErrorStyle((string) $dataValidation["errorStyle"]); - $docValidation->setOperator((string) $dataValidation["operator"]); - $docValidation->setAllowBlank($dataValidation["allowBlank"] != 0); - $docValidation->setShowDropDown($dataValidation["showDropDown"] == 0); - $docValidation->setShowInputMessage($dataValidation["showInputMessage"] != 0); - $docValidation->setShowErrorMessage($dataValidation["showErrorMessage"] != 0); - $docValidation->setErrorTitle((string) $dataValidation["errorTitle"]); - $docValidation->setError((string) $dataValidation["error"]); - $docValidation->setPromptTitle((string) $dataValidation["promptTitle"]); - $docValidation->setPrompt((string) $dataValidation["prompt"]); - $docValidation->setFormula1((string) $dataValidation->formula1); - $docValidation->setFormula2((string) $dataValidation->formula2); - } - } - } - } - - // Add hyperlinks - $hyperlinks = array(); - if (!$this->readDataOnly) { - // Locate hyperlink relations - if ($zip->locateName(dirname("$dir/$fileWorksheet") . "/_rels/" . basename($fileWorksheet) . ".rels")) { - $relsWorksheet = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, dirname("$dir/$fileWorksheet") . "/_rels/" . basename($fileWorksheet) . ".rels")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); //~ http://schemas.openxmlformats.org/package/2006/relationships"); - foreach ($relsWorksheet->Relationship as $ele) { - if ($ele["Type"] == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink") { - $hyperlinks[(string)$ele["Id"]] = (string)$ele["Target"]; - } - } - } - - // Loop through hyperlinks - if ($xmlSheet && $xmlSheet->hyperlinks) { - foreach ($xmlSheet->hyperlinks->hyperlink as $hyperlink) { - // Link url - $linkRel = $hyperlink->attributes('http://schemas.openxmlformats.org/officeDocument/2006/relationships'); - - foreach (PHPExcel_Cell::extractAllCellReferencesInRange($hyperlink['ref']) as $cellReference) { - $cell = $docSheet->getCell($cellReference); - if (isset($linkRel['id'])) { - $hyperlinkUrl = $hyperlinks[ (string)$linkRel['id'] ]; - if (isset($hyperlink['location'])) { - $hyperlinkUrl .= '#' . (string) $hyperlink['location']; - } - $cell->getHyperlink()->setUrl($hyperlinkUrl); - } elseif (isset($hyperlink['location'])) { - $cell->getHyperlink()->setUrl('sheet://' . (string)$hyperlink['location']); - } - - // Tooltip - if (isset($hyperlink['tooltip'])) { - $cell->getHyperlink()->setTooltip((string)$hyperlink['tooltip']); - } - } - } - } - } - - // Add comments - $comments = array(); - $vmlComments = array(); - if (!$this->readDataOnly) { - // Locate comment relations - if ($zip->locateName(dirname("$dir/$fileWorksheet") . "/_rels/" . basename($fileWorksheet) . ".rels")) { - $relsWorksheet = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, dirname("$dir/$fileWorksheet") . "/_rels/" . basename($fileWorksheet) . ".rels")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); //~ http://schemas.openxmlformats.org/package/2006/relationships"); - foreach ($relsWorksheet->Relationship as $ele) { - if ($ele["Type"] == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments") { - $comments[(string)$ele["Id"]] = (string)$ele["Target"]; - } - if ($ele["Type"] == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing") { - $vmlComments[(string)$ele["Id"]] = (string)$ele["Target"]; - } - } - } - - // Loop through comments - foreach ($comments as $relName => $relPath) { - // Load comments file - $relPath = PHPExcel_Shared_File::realpath(dirname("$dir/$fileWorksheet") . "/" . $relPath); - $commentsFile = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, $relPath)), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); - - // Utility variables - $authors = array(); - - // Loop through authors - foreach ($commentsFile->authors->author as $author) { - $authors[] = (string)$author; - } - - // Loop through contents - foreach ($commentsFile->commentList->comment as $comment) { - if (!empty($comment['authorId'])) { - $docSheet->getComment((string)$comment['ref'])->setAuthor($authors[(string)$comment['authorId']]); - } - $docSheet->getComment((string)$comment['ref'])->setText($this->parseRichText($comment->text)); - } - } - - // Loop through VML comments - foreach ($vmlComments as $relName => $relPath) { - // Load VML comments file - $relPath = PHPExcel_Shared_File::realpath(dirname("$dir/$fileWorksheet") . "/" . $relPath); - $vmlCommentsFile = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, $relPath)), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); - $vmlCommentsFile->registerXPathNamespace('v', 'urn:schemas-microsoft-com:vml'); - - $shapes = $vmlCommentsFile->xpath('//v:shape'); - foreach ($shapes as $shape) { - $shape->registerXPathNamespace('v', 'urn:schemas-microsoft-com:vml'); - - if (isset($shape['style'])) { - $style = (string)$shape['style']; - $fillColor = strtoupper(substr((string)$shape['fillcolor'], 1)); - $column = null; - $row = null; - - $clientData = $shape->xpath('.//x:ClientData'); - if (is_array($clientData) && !empty($clientData)) { - $clientData = $clientData[0]; - - if (isset($clientData['ObjectType']) && (string)$clientData['ObjectType'] == 'Note') { - $temp = $clientData->xpath('.//x:Row'); - if (is_array($temp)) { - $row = $temp[0]; - } - - $temp = $clientData->xpath('.//x:Column'); - if (is_array($temp)) { - $column = $temp[0]; - } - } - } - - if (($column !== null) && ($row !== null)) { - // Set comment properties - $comment = $docSheet->getCommentByColumnAndRow((string) $column, $row + 1); - $comment->getFillColor()->setRGB($fillColor); - - // Parse style - $styleArray = explode(';', str_replace(' ', '', $style)); - foreach ($styleArray as $stylePair) { - $stylePair = explode(':', $stylePair); - - if ($stylePair[0] == 'margin-left') { - $comment->setMarginLeft($stylePair[1]); - } - if ($stylePair[0] == 'margin-top') { - $comment->setMarginTop($stylePair[1]); - } - if ($stylePair[0] == 'width') { - $comment->setWidth($stylePair[1]); - } - if ($stylePair[0] == 'height') { - $comment->setHeight($stylePair[1]); - } - if ($stylePair[0] == 'visibility') { - $comment->setVisible($stylePair[1] == 'visible'); - } - } - } - } - } - } - - // Header/footer images - if ($xmlSheet && $xmlSheet->legacyDrawingHF && !$this->readDataOnly) { - if ($zip->locateName(dirname("$dir/$fileWorksheet") . "/_rels/" . basename($fileWorksheet) . ".rels")) { - $relsWorksheet = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, dirname("$dir/$fileWorksheet") . "/_rels/" . basename($fileWorksheet) . ".rels")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); //~ http://schemas.openxmlformats.org/package/2006/relationships"); - $vmlRelationship = ''; - - foreach ($relsWorksheet->Relationship as $ele) { - if ($ele["Type"] == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing") { - $vmlRelationship = self::dirAdd("$dir/$fileWorksheet", $ele["Target"]); - } - } - - if ($vmlRelationship != '') { - // Fetch linked images - $relsVML = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, dirname($vmlRelationship) . '/_rels/' . basename($vmlRelationship) . '.rels')), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); //~ http://schemas.openxmlformats.org/package/2006/relationships"); - $drawings = array(); - foreach ($relsVML->Relationship as $ele) { - if ($ele["Type"] == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image") { - $drawings[(string) $ele["Id"]] = self::dirAdd($vmlRelationship, $ele["Target"]); - } - } - - // Fetch VML document - $vmlDrawing = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, $vmlRelationship)), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); - $vmlDrawing->registerXPathNamespace('v', 'urn:schemas-microsoft-com:vml'); - - $hfImages = array(); - - $shapes = $vmlDrawing->xpath('//v:shape'); - foreach ($shapes as $idx => $shape) { - $shape->registerXPathNamespace('v', 'urn:schemas-microsoft-com:vml'); - $imageData = $shape->xpath('//v:imagedata'); - $imageData = $imageData[$idx]; - - $imageData = $imageData->attributes('urn:schemas-microsoft-com:office:office'); - $style = self::toCSSArray((string)$shape['style']); - - $hfImages[ (string)$shape['id'] ] = new PHPExcel_Worksheet_HeaderFooterDrawing(); - if (isset($imageData['title'])) { - $hfImages[ (string)$shape['id'] ]->setName((string)$imageData['title']); - } - - $hfImages[ (string)$shape['id'] ]->setPath("zip://".PHPExcel_Shared_File::realpath($pFilename)."#" . $drawings[(string)$imageData['relid']], false); - $hfImages[ (string)$shape['id'] ]->setResizeProportional(false); - $hfImages[ (string)$shape['id'] ]->setWidth($style['width']); - $hfImages[ (string)$shape['id'] ]->setHeight($style['height']); - if (isset($style['margin-left'])) { - $hfImages[ (string)$shape['id'] ]->setOffsetX($style['margin-left']); - } - $hfImages[ (string)$shape['id'] ]->setOffsetY($style['margin-top']); - $hfImages[ (string)$shape['id'] ]->setResizeProportional(true); - } - - $docSheet->getHeaderFooter()->setImages($hfImages); - } - } - } - - } - - // TODO: Autoshapes from twoCellAnchors! - if ($zip->locateName(dirname("$dir/$fileWorksheet") . "/_rels/" . basename($fileWorksheet) . ".rels")) { - $relsWorksheet = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, dirname("$dir/$fileWorksheet") . "/_rels/" . basename($fileWorksheet) . ".rels")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); //~ http://schemas.openxmlformats.org/package/2006/relationships"); - $drawings = array(); - foreach ($relsWorksheet->Relationship as $ele) { - if ($ele["Type"] == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing") { - $drawings[(string) $ele["Id"]] = self::dirAdd("$dir/$fileWorksheet", $ele["Target"]); - } - } - if ($xmlSheet->drawing && !$this->readDataOnly) { - foreach ($xmlSheet->drawing as $drawing) { - $fileDrawing = $drawings[(string) self::getArrayItem($drawing->attributes("http://schemas.openxmlformats.org/officeDocument/2006/relationships"), "id")]; - $relsDrawing = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, dirname($fileDrawing) . "/_rels/" . basename($fileDrawing) . ".rels")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); //~ http://schemas.openxmlformats.org/package/2006/relationships"); - $images = array(); - - if ($relsDrawing && $relsDrawing->Relationship) { - foreach ($relsDrawing->Relationship as $ele) { - if ($ele["Type"] == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image") { - $images[(string) $ele["Id"]] = self::dirAdd($fileDrawing, $ele["Target"]); - } elseif ($ele["Type"] == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart") { - if ($this->includeCharts) { - $charts[self::dirAdd($fileDrawing, $ele["Target"])] = array( - 'id' => (string) $ele["Id"], - 'sheet' => $docSheet->getTitle() - ); - } - } - } - } - $xmlDrawing = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, $fileDrawing)), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions())->children("http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing"); - - if ($xmlDrawing->oneCellAnchor) { - foreach ($xmlDrawing->oneCellAnchor as $oneCellAnchor) { - if ($oneCellAnchor->pic->blipFill) { - $blip = $oneCellAnchor->pic->blipFill->children("http://schemas.openxmlformats.org/drawingml/2006/main")->blip; - $xfrm = $oneCellAnchor->pic->spPr->children("http://schemas.openxmlformats.org/drawingml/2006/main")->xfrm; - $outerShdw = $oneCellAnchor->pic->spPr->children("http://schemas.openxmlformats.org/drawingml/2006/main")->effectLst->outerShdw; - $objDrawing = new PHPExcel_Worksheet_Drawing; - $objDrawing->setName((string) self::getArrayItem($oneCellAnchor->pic->nvPicPr->cNvPr->attributes(), "name")); - $objDrawing->setDescription((string) self::getArrayItem($oneCellAnchor->pic->nvPicPr->cNvPr->attributes(), "descr")); - $objDrawing->setPath("zip://".PHPExcel_Shared_File::realpath($pFilename)."#" . $images[(string) self::getArrayItem($blip->attributes("http://schemas.openxmlformats.org/officeDocument/2006/relationships"), "embed")], false); - $objDrawing->setCoordinates(PHPExcel_Cell::stringFromColumnIndex((string) $oneCellAnchor->from->col) . ($oneCellAnchor->from->row + 1)); - $objDrawing->setOffsetX(PHPExcel_Shared_Drawing::EMUToPixels($oneCellAnchor->from->colOff)); - $objDrawing->setOffsetY(PHPExcel_Shared_Drawing::EMUToPixels($oneCellAnchor->from->rowOff)); - $objDrawing->setResizeProportional(false); - $objDrawing->setWidth(PHPExcel_Shared_Drawing::EMUToPixels(self::getArrayItem($oneCellAnchor->ext->attributes(), "cx"))); - $objDrawing->setHeight(PHPExcel_Shared_Drawing::EMUToPixels(self::getArrayItem($oneCellAnchor->ext->attributes(), "cy"))); - if ($xfrm) { - $objDrawing->setRotation(PHPExcel_Shared_Drawing::angleToDegrees(self::getArrayItem($xfrm->attributes(), "rot"))); - } - if ($outerShdw) { - $shadow = $objDrawing->getShadow(); - $shadow->setVisible(true); - $shadow->setBlurRadius(PHPExcel_Shared_Drawing::EMUTopixels(self::getArrayItem($outerShdw->attributes(), "blurRad"))); - $shadow->setDistance(PHPExcel_Shared_Drawing::EMUTopixels(self::getArrayItem($outerShdw->attributes(), "dist"))); - $shadow->setDirection(PHPExcel_Shared_Drawing::angleToDegrees(self::getArrayItem($outerShdw->attributes(), "dir"))); - $shadow->setAlignment((string) self::getArrayItem($outerShdw->attributes(), "algn")); - $shadow->getColor()->setRGB(self::getArrayItem($outerShdw->srgbClr->attributes(), "val")); - $shadow->setAlpha(self::getArrayItem($outerShdw->srgbClr->alpha->attributes(), "val") / 1000); - } - $objDrawing->setWorksheet($docSheet); - } else { - // ? Can charts be positioned with a oneCellAnchor ? - $coordinates = PHPExcel_Cell::stringFromColumnIndex((string) $oneCellAnchor->from->col) . ($oneCellAnchor->from->row + 1); - $offsetX = PHPExcel_Shared_Drawing::EMUToPixels($oneCellAnchor->from->colOff); - $offsetY = PHPExcel_Shared_Drawing::EMUToPixels($oneCellAnchor->from->rowOff); - $width = PHPExcel_Shared_Drawing::EMUToPixels(self::getArrayItem($oneCellAnchor->ext->attributes(), "cx")); - $height = PHPExcel_Shared_Drawing::EMUToPixels(self::getArrayItem($oneCellAnchor->ext->attributes(), "cy")); - } - } - } - if ($xmlDrawing->twoCellAnchor) { - foreach ($xmlDrawing->twoCellAnchor as $twoCellAnchor) { - if ($twoCellAnchor->pic->blipFill) { - $blip = $twoCellAnchor->pic->blipFill->children("http://schemas.openxmlformats.org/drawingml/2006/main")->blip; - $xfrm = $twoCellAnchor->pic->spPr->children("http://schemas.openxmlformats.org/drawingml/2006/main")->xfrm; - $outerShdw = $twoCellAnchor->pic->spPr->children("http://schemas.openxmlformats.org/drawingml/2006/main")->effectLst->outerShdw; - $objDrawing = new PHPExcel_Worksheet_Drawing; - $objDrawing->setName((string) self::getArrayItem($twoCellAnchor->pic->nvPicPr->cNvPr->attributes(), "name")); - $objDrawing->setDescription((string) self::getArrayItem($twoCellAnchor->pic->nvPicPr->cNvPr->attributes(), "descr")); - $objDrawing->setPath("zip://".PHPExcel_Shared_File::realpath($pFilename)."#" . $images[(string) self::getArrayItem($blip->attributes("http://schemas.openxmlformats.org/officeDocument/2006/relationships"), "embed")], false); - $objDrawing->setCoordinates(PHPExcel_Cell::stringFromColumnIndex((string) $twoCellAnchor->from->col) . ($twoCellAnchor->from->row + 1)); - $objDrawing->setOffsetX(PHPExcel_Shared_Drawing::EMUToPixels($twoCellAnchor->from->colOff)); - $objDrawing->setOffsetY(PHPExcel_Shared_Drawing::EMUToPixels($twoCellAnchor->from->rowOff)); - $objDrawing->setResizeProportional(false); - - if ($xfrm) { - $objDrawing->setWidth(PHPExcel_Shared_Drawing::EMUToPixels(self::getArrayItem($xfrm->ext->attributes(), "cx"))); - $objDrawing->setHeight(PHPExcel_Shared_Drawing::EMUToPixels(self::getArrayItem($xfrm->ext->attributes(), "cy"))); - $objDrawing->setRotation(PHPExcel_Shared_Drawing::angleToDegrees(self::getArrayItem($xfrm->attributes(), "rot"))); - } - if ($outerShdw) { - $shadow = $objDrawing->getShadow(); - $shadow->setVisible(true); - $shadow->setBlurRadius(PHPExcel_Shared_Drawing::EMUTopixels(self::getArrayItem($outerShdw->attributes(), "blurRad"))); - $shadow->setDistance(PHPExcel_Shared_Drawing::EMUTopixels(self::getArrayItem($outerShdw->attributes(), "dist"))); - $shadow->setDirection(PHPExcel_Shared_Drawing::angleToDegrees(self::getArrayItem($outerShdw->attributes(), "dir"))); - $shadow->setAlignment((string) self::getArrayItem($outerShdw->attributes(), "algn")); - $shadow->getColor()->setRGB(self::getArrayItem($outerShdw->srgbClr->attributes(), "val")); - $shadow->setAlpha(self::getArrayItem($outerShdw->srgbClr->alpha->attributes(), "val") / 1000); - } - $objDrawing->setWorksheet($docSheet); - } elseif (($this->includeCharts) && ($twoCellAnchor->graphicFrame)) { - $fromCoordinate = PHPExcel_Cell::stringFromColumnIndex((string) $twoCellAnchor->from->col) . ($twoCellAnchor->from->row + 1); - $fromOffsetX = PHPExcel_Shared_Drawing::EMUToPixels($twoCellAnchor->from->colOff); - $fromOffsetY = PHPExcel_Shared_Drawing::EMUToPixels($twoCellAnchor->from->rowOff); - $toCoordinate = PHPExcel_Cell::stringFromColumnIndex((string) $twoCellAnchor->to->col) . ($twoCellAnchor->to->row + 1); - $toOffsetX = PHPExcel_Shared_Drawing::EMUToPixels($twoCellAnchor->to->colOff); - $toOffsetY = PHPExcel_Shared_Drawing::EMUToPixels($twoCellAnchor->to->rowOff); - $graphic = $twoCellAnchor->graphicFrame->children("http://schemas.openxmlformats.org/drawingml/2006/main")->graphic; - $chartRef = $graphic->graphicData->children("http://schemas.openxmlformats.org/drawingml/2006/chart")->chart; - $thisChart = (string) $chartRef->attributes("http://schemas.openxmlformats.org/officeDocument/2006/relationships"); - - $chartDetails[$docSheet->getTitle().'!'.$thisChart] = array( - 'fromCoordinate' => $fromCoordinate, - 'fromOffsetX' => $fromOffsetX, - 'fromOffsetY' => $fromOffsetY, - 'toCoordinate' => $toCoordinate, - 'toOffsetX' => $toOffsetX, - 'toOffsetY' => $toOffsetY, - 'worksheetTitle' => $docSheet->getTitle() - ); - } - } - } - } - } - } - - // Loop through definedNames - if ($xmlWorkbook->definedNames) { - foreach ($xmlWorkbook->definedNames->definedName as $definedName) { - // Extract range - $extractedRange = (string)$definedName; - $extractedRange = preg_replace('/\'(\w+)\'\!/', '', $extractedRange); - if (($spos = strpos($extractedRange, '!')) !== false) { - $extractedRange = substr($extractedRange, 0, $spos).str_replace('$', '', substr($extractedRange, $spos)); - } else { - $extractedRange = str_replace('$', '', $extractedRange); - } - - // Valid range? - if (stripos((string)$definedName, '#REF!') !== false || $extractedRange == '') { - continue; - } - - // Some definedNames are only applicable if we are on the same sheet... - if ((string)$definedName['localSheetId'] != '' && (string)$definedName['localSheetId'] == $sheetId) { - // Switch on type - switch ((string)$definedName['name']) { - case '_xlnm._FilterDatabase': - if ((string)$definedName['hidden'] !== '1') { - $extractedRange = explode(',', $extractedRange); - foreach ($extractedRange as $range) { - $autoFilterRange = $range; - if (strpos($autoFilterRange, ':') !== false) { - $docSheet->getAutoFilter()->setRange($autoFilterRange); - } - } - } - break; - case '_xlnm.Print_Titles': - // Split $extractedRange - $extractedRange = explode(',', $extractedRange); - - // Set print titles - foreach ($extractedRange as $range) { - $matches = array(); - $range = str_replace('$', '', $range); - - // check for repeating columns, e g. 'A:A' or 'A:D' - if (preg_match('/!?([A-Z]+)\:([A-Z]+)$/', $range, $matches)) { - $docSheet->getPageSetup()->setColumnsToRepeatAtLeft(array($matches[1], $matches[2])); - } elseif (preg_match('/!?(\d+)\:(\d+)$/', $range, $matches)) { - // check for repeating rows, e.g. '1:1' or '1:5' - $docSheet->getPageSetup()->setRowsToRepeatAtTop(array($matches[1], $matches[2])); - } - } - break; - case '_xlnm.Print_Area': - $rangeSets = explode(',', $extractedRange); // FIXME: what if sheetname contains comma? - $newRangeSets = array(); - foreach ($rangeSets as $rangeSet) { - $range = explode('!', $rangeSet); // FIXME: what if sheetname contains exclamation mark? - $rangeSet = isset($range[1]) ? $range[1] : $range[0]; - if (strpos($rangeSet, ':') === false) { - $rangeSet = $rangeSet . ':' . $rangeSet; - } - $newRangeSets[] = str_replace('$', '', $rangeSet); - } - $docSheet->getPageSetup()->setPrintArea(implode(',', $newRangeSets)); - break; - - default: - break; - } - } - } - } - - // Next sheet id - ++$sheetId; - } - - // Loop through definedNames - if ($xmlWorkbook->definedNames) { - foreach ($xmlWorkbook->definedNames->definedName as $definedName) { - // Extract range - $extractedRange = (string)$definedName; - $extractedRange = preg_replace('/\'(\w+)\'\!/', '', $extractedRange); - if (($spos = strpos($extractedRange, '!')) !== false) { - $extractedRange = substr($extractedRange, 0, $spos).str_replace('$', '', substr($extractedRange, $spos)); - } else { - $extractedRange = str_replace('$', '', $extractedRange); - } - - // Valid range? - if (stripos((string)$definedName, '#REF!') !== false || $extractedRange == '') { - continue; - } - - // Some definedNames are only applicable if we are on the same sheet... - if ((string)$definedName['localSheetId'] != '') { - // Local defined name - // Switch on type - switch ((string)$definedName['name']) { - case '_xlnm._FilterDatabase': - case '_xlnm.Print_Titles': - case '_xlnm.Print_Area': - break; - default: - if ($mapSheetId[(integer) $definedName['localSheetId']] !== null) { - $range = explode('!', (string)$definedName); - if (count($range) == 2) { - $range[0] = str_replace("''", "'", $range[0]); - $range[0] = str_replace("'", "", $range[0]); - if ($worksheet = $docSheet->getParent()->getSheetByName($range[0])) { - $extractedRange = str_replace('$', '', $range[1]); - $scope = $docSheet->getParent()->getSheet($mapSheetId[(integer) $definedName['localSheetId']]); - $excel->addNamedRange(new PHPExcel_NamedRange((string)$definedName['name'], $worksheet, $extractedRange, true, $scope)); - } - } - } - break; - } - } elseif (!isset($definedName['localSheetId'])) { - // "Global" definedNames - $locatedSheet = null; - $extractedSheetName = ''; - if (strpos((string)$definedName, '!') !== false) { - // Extract sheet name - $extractedSheetName = PHPExcel_Worksheet::extractSheetTitle((string)$definedName, true); - $extractedSheetName = $extractedSheetName[0]; - - // Locate sheet - $locatedSheet = $excel->getSheetByName($extractedSheetName); - - // Modify range - $range = explode('!', $extractedRange); - $extractedRange = isset($range[1]) ? $range[1] : $range[0]; - } - - if ($locatedSheet !== null) { - $excel->addNamedRange(new PHPExcel_NamedRange((string)$definedName['name'], $locatedSheet, $extractedRange, false)); - } - } - } - } - } - - if ((!$this->readDataOnly) || (!empty($this->loadSheetsOnly))) { - // active sheet index - $activeTab = intval($xmlWorkbook->bookViews->workbookView["activeTab"]); // refers to old sheet index - - // keep active sheet index if sheet is still loaded, else first sheet is set as the active - if (isset($mapSheetId[$activeTab]) && $mapSheetId[$activeTab] !== null) { - $excel->setActiveSheetIndex($mapSheetId[$activeTab]); - } else { - if ($excel->getSheetCount() == 0) { - $excel->createSheet(); - } - $excel->setActiveSheetIndex(0); - } - } - break; - } - } - - if (!$this->readDataOnly) { - $contentTypes = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, "[Content_Types].xml")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); - foreach ($contentTypes->Override as $contentType) { - switch ($contentType["ContentType"]) { - case "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": - if ($this->includeCharts) { - $chartEntryRef = ltrim($contentType['PartName'], '/'); - $chartElements = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, $chartEntryRef)), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); - $objChart = PHPExcel_Reader_Excel2007_Chart::readChart($chartElements, basename($chartEntryRef, '.xml')); - -// echo 'Chart ', $chartEntryRef, '
    '; -// var_dump($charts[$chartEntryRef]); -// - if (isset($charts[$chartEntryRef])) { - $chartPositionRef = $charts[$chartEntryRef]['sheet'].'!'.$charts[$chartEntryRef]['id']; -// echo 'Position Ref ', $chartPositionRef, '
    '; - if (isset($chartDetails[$chartPositionRef])) { -// var_dump($chartDetails[$chartPositionRef]); - - $excel->getSheetByName($charts[$chartEntryRef]['sheet'])->addChart($objChart); - $objChart->setWorksheet($excel->getSheetByName($charts[$chartEntryRef]['sheet'])); - $objChart->setTopLeftPosition($chartDetails[$chartPositionRef]['fromCoordinate'], $chartDetails[$chartPositionRef]['fromOffsetX'], $chartDetails[$chartPositionRef]['fromOffsetY']); - $objChart->setBottomRightPosition($chartDetails[$chartPositionRef]['toCoordinate'], $chartDetails[$chartPositionRef]['toOffsetX'], $chartDetails[$chartPositionRef]['toOffsetY']); - } - } - } - } - } - } - - $zip->close(); - - return $excel; - } - - private static function readColor($color, $background = false) - { - if (isset($color["rgb"])) { - return (string)$color["rgb"]; - } elseif (isset($color["indexed"])) { - return PHPExcel_Style_Color::indexedColor($color["indexed"]-7, $background)->getARGB(); - } elseif (isset($color["theme"])) { - if (self::$theme !== null) { - $returnColour = self::$theme->getColourByIndex((int)$color["theme"]); - if (isset($color["tint"])) { - $tintAdjust = (float) $color["tint"]; - $returnColour = PHPExcel_Style_Color::changeBrightness($returnColour, $tintAdjust); - } - return 'FF'.$returnColour; - } - } - - if ($background) { - return 'FFFFFFFF'; - } - return 'FF000000'; - } - - private static function readStyle($docStyle, $style) - { - // format code -// if (isset($style->numFmt)) { -// if (isset($style->numFmt['formatCode'])) { -// $docStyle->getNumberFormat()->setFormatCode((string) $style->numFmt['formatCode']); -// } else { - $docStyle->getNumberFormat()->setFormatCode($style->numFmt); -// } -// } - - // font - if (isset($style->font)) { - $docStyle->getFont()->setName((string) $style->font->name["val"]); - $docStyle->getFont()->setSize((string) $style->font->sz["val"]); - if (isset($style->font->b)) { - $docStyle->getFont()->setBold(!isset($style->font->b["val"]) || self::boolean((string) $style->font->b["val"])); - } - if (isset($style->font->i)) { - $docStyle->getFont()->setItalic(!isset($style->font->i["val"]) || self::boolean((string) $style->font->i["val"])); - } - if (isset($style->font->strike)) { - $docStyle->getFont()->setStrikethrough(!isset($style->font->strike["val"]) || self::boolean((string) $style->font->strike["val"])); - } - $docStyle->getFont()->getColor()->setARGB(self::readColor($style->font->color)); - - if (isset($style->font->u) && !isset($style->font->u["val"])) { - $docStyle->getFont()->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE); - } elseif (isset($style->font->u) && isset($style->font->u["val"])) { - $docStyle->getFont()->setUnderline((string)$style->font->u["val"]); - } - - if (isset($style->font->vertAlign) && isset($style->font->vertAlign["val"])) { - $vertAlign = strtolower((string)$style->font->vertAlign["val"]); - if ($vertAlign == 'superscript') { - $docStyle->getFont()->setSuperScript(true); - } - if ($vertAlign == 'subscript') { - $docStyle->getFont()->setSubScript(true); - } - } - } - - // fill - if (isset($style->fill)) { - if ($style->fill->gradientFill) { - $gradientFill = $style->fill->gradientFill[0]; - if (!empty($gradientFill["type"])) { - $docStyle->getFill()->setFillType((string) $gradientFill["type"]); - } - $docStyle->getFill()->setRotation(floatval($gradientFill["degree"])); - $gradientFill->registerXPathNamespace("sml", "http://schemas.openxmlformats.org/spreadsheetml/2006/main"); - $docStyle->getFill()->getStartColor()->setARGB(self::readColor(self::getArrayItem($gradientFill->xpath("sml:stop[@position=0]"))->color)); - $docStyle->getFill()->getEndColor()->setARGB(self::readColor(self::getArrayItem($gradientFill->xpath("sml:stop[@position=1]"))->color)); - } elseif ($style->fill->patternFill) { - $patternType = (string)$style->fill->patternFill["patternType"] != '' ? (string)$style->fill->patternFill["patternType"] : 'solid'; - $docStyle->getFill()->setFillType($patternType); - if ($style->fill->patternFill->fgColor) { - $docStyle->getFill()->getStartColor()->setARGB(self::readColor($style->fill->patternFill->fgColor, true)); - } else { - $docStyle->getFill()->getStartColor()->setARGB('FF000000'); - } - if ($style->fill->patternFill->bgColor) { - $docStyle->getFill()->getEndColor()->setARGB(self::readColor($style->fill->patternFill->bgColor, true)); - } - } - } - - // border - if (isset($style->border)) { - $diagonalUp = self::boolean((string) $style->border["diagonalUp"]); - $diagonalDown = self::boolean((string) $style->border["diagonalDown"]); - if (!$diagonalUp && !$diagonalDown) { - $docStyle->getBorders()->setDiagonalDirection(PHPExcel_Style_Borders::DIAGONAL_NONE); - } elseif ($diagonalUp && !$diagonalDown) { - $docStyle->getBorders()->setDiagonalDirection(PHPExcel_Style_Borders::DIAGONAL_UP); - } elseif (!$diagonalUp && $diagonalDown) { - $docStyle->getBorders()->setDiagonalDirection(PHPExcel_Style_Borders::DIAGONAL_DOWN); - } else { - $docStyle->getBorders()->setDiagonalDirection(PHPExcel_Style_Borders::DIAGONAL_BOTH); - } - self::readBorder($docStyle->getBorders()->getLeft(), $style->border->left); - self::readBorder($docStyle->getBorders()->getRight(), $style->border->right); - self::readBorder($docStyle->getBorders()->getTop(), $style->border->top); - self::readBorder($docStyle->getBorders()->getBottom(), $style->border->bottom); - self::readBorder($docStyle->getBorders()->getDiagonal(), $style->border->diagonal); - } - - // alignment - if (isset($style->alignment)) { - $docStyle->getAlignment()->setHorizontal((string) $style->alignment["horizontal"]); - $docStyle->getAlignment()->setVertical((string) $style->alignment["vertical"]); - - $textRotation = 0; - if ((int)$style->alignment["textRotation"] <= 90) { - $textRotation = (int)$style->alignment["textRotation"]; - } elseif ((int)$style->alignment["textRotation"] > 90) { - $textRotation = 90 - (int)$style->alignment["textRotation"]; - } - - $docStyle->getAlignment()->setTextRotation(intval($textRotation)); - $docStyle->getAlignment()->setWrapText(self::boolean((string) $style->alignment["wrapText"])); - $docStyle->getAlignment()->setShrinkToFit(self::boolean((string) $style->alignment["shrinkToFit"])); - $docStyle->getAlignment()->setIndent(intval((string)$style->alignment["indent"]) > 0 ? intval((string)$style->alignment["indent"]) : 0); - $docStyle->getAlignment()->setReadorder(intval((string)$style->alignment["readingOrder"]) > 0 ? intval((string)$style->alignment["readingOrder"]) : 0); - } - - // protection - if (isset($style->protection)) { - if (isset($style->protection['locked'])) { - if (self::boolean((string) $style->protection['locked'])) { - $docStyle->getProtection()->setLocked(PHPExcel_Style_Protection::PROTECTION_PROTECTED); - } else { - $docStyle->getProtection()->setLocked(PHPExcel_Style_Protection::PROTECTION_UNPROTECTED); - } - } - - if (isset($style->protection['hidden'])) { - if (self::boolean((string) $style->protection['hidden'])) { - $docStyle->getProtection()->setHidden(PHPExcel_Style_Protection::PROTECTION_PROTECTED); - } else { - $docStyle->getProtection()->setHidden(PHPExcel_Style_Protection::PROTECTION_UNPROTECTED); - } - } - } - - // top-level style settings - if (isset($style->quotePrefix)) { - $docStyle->setQuotePrefix($style->quotePrefix); - } - } - - private static function readBorder($docBorder, $eleBorder) - { - if (isset($eleBorder["style"])) { - $docBorder->setBorderStyle((string) $eleBorder["style"]); - } - if (isset($eleBorder->color)) { - $docBorder->getColor()->setARGB(self::readColor($eleBorder->color)); - } - } - - private function parseRichText($is = null) - { - $value = new PHPExcel_RichText(); - - if (isset($is->t)) { - $value->createText(PHPExcel_Shared_String::ControlCharacterOOXML2PHP((string) $is->t)); - } else { - if (is_object($is->r)) { - foreach ($is->r as $run) { - if (!isset($run->rPr)) { - $objText = $value->createText(PHPExcel_Shared_String::ControlCharacterOOXML2PHP((string) $run->t)); - - } else { - $objText = $value->createTextRun(PHPExcel_Shared_String::ControlCharacterOOXML2PHP((string) $run->t)); - - if (isset($run->rPr->rFont["val"])) { - $objText->getFont()->setName((string) $run->rPr->rFont["val"]); - } - if (isset($run->rPr->sz["val"])) { - $objText->getFont()->setSize((string) $run->rPr->sz["val"]); - } - if (isset($run->rPr->color)) { - $objText->getFont()->setColor(new PHPExcel_Style_Color(self::readColor($run->rPr->color))); - } - if ((isset($run->rPr->b["val"]) && self::boolean((string) $run->rPr->b["val"])) || - (isset($run->rPr->b) && !isset($run->rPr->b["val"]))) { - $objText->getFont()->setBold(true); - } - if ((isset($run->rPr->i["val"]) && self::boolean((string) $run->rPr->i["val"])) || - (isset($run->rPr->i) && !isset($run->rPr->i["val"]))) { - $objText->getFont()->setItalic(true); - } - if (isset($run->rPr->vertAlign) && isset($run->rPr->vertAlign["val"])) { - $vertAlign = strtolower((string)$run->rPr->vertAlign["val"]); - if ($vertAlign == 'superscript') { - $objText->getFont()->setSuperScript(true); - } - if ($vertAlign == 'subscript') { - $objText->getFont()->setSubScript(true); - } - } - if (isset($run->rPr->u) && !isset($run->rPr->u["val"])) { - $objText->getFont()->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE); - } elseif (isset($run->rPr->u) && isset($run->rPr->u["val"])) { - $objText->getFont()->setUnderline((string)$run->rPr->u["val"]); - } - if ((isset($run->rPr->strike["val"]) && self::boolean((string) $run->rPr->strike["val"])) || - (isset($run->rPr->strike) && !isset($run->rPr->strike["val"]))) { - $objText->getFont()->setStrikethrough(true); - } - } - } - } - } - - return $value; - } - - private function readRibbon($excel, $customUITarget, $zip) - { - $baseDir = dirname($customUITarget); - $nameCustomUI = basename($customUITarget); - // get the xml file (ribbon) - $localRibbon = $this->getFromZipArchive($zip, $customUITarget); - $customUIImagesNames = array(); - $customUIImagesBinaries = array(); - // something like customUI/_rels/customUI.xml.rels - $pathRels = $baseDir . '/_rels/' . $nameCustomUI . '.rels'; - $dataRels = $this->getFromZipArchive($zip, $pathRels); - if ($dataRels) { - // exists and not empty if the ribbon have some pictures (other than internal MSO) - $UIRels = simplexml_load_string($this->securityScan($dataRels), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); - if ($UIRels) { - // we need to save id and target to avoid parsing customUI.xml and "guess" if it's a pseudo callback who load the image - foreach ($UIRels->Relationship as $ele) { - if ($ele["Type"] == 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image') { - // an image ? - $customUIImagesNames[(string) $ele['Id']] = (string)$ele['Target']; - $customUIImagesBinaries[(string)$ele['Target']] = $this->getFromZipArchive($zip, $baseDir . '/' . (string) $ele['Target']); - } - } - } - } - if ($localRibbon) { - $excel->setRibbonXMLData($customUITarget, $localRibbon); - if (count($customUIImagesNames) > 0 && count($customUIImagesBinaries) > 0) { - $excel->setRibbonBinObjects($customUIImagesNames, $customUIImagesBinaries); - } else { - $excel->setRibbonBinObjects(null); - } - } else { - $excel->setRibbonXMLData(null); - $excel->setRibbonBinObjects(null); - } - } - - private static function getArrayItem($array, $key = 0) - { - return (isset($array[$key]) ? $array[$key] : null); - } - - private static function dirAdd($base, $add) - { - return preg_replace('~[^/]+/\.\./~', '', dirname($base) . "/$add"); - } - - private static function toCSSArray($style) - { - $style = str_replace(array("\r","\n"), "", $style); - - $temp = explode(';', $style); - $style = array(); - foreach ($temp as $item) { - $item = explode(':', $item); - - if (strpos($item[1], 'px') !== false) { - $item[1] = str_replace('px', '', $item[1]); - } - if (strpos($item[1], 'pt') !== false) { - $item[1] = str_replace('pt', '', $item[1]); - $item[1] = PHPExcel_Shared_Font::fontSizeToPixels($item[1]); - } - if (strpos($item[1], 'in') !== false) { - $item[1] = str_replace('in', '', $item[1]); - $item[1] = PHPExcel_Shared_Font::inchSizeToPixels($item[1]); - } - if (strpos($item[1], 'cm') !== false) { - $item[1] = str_replace('cm', '', $item[1]); - $item[1] = PHPExcel_Shared_Font::centimeterSizeToPixels($item[1]); - } - - $style[$item[0]] = $item[1]; - } - - return $style; - } - - private static function boolean($value = null) - { - if (is_object($value)) { - $value = (string) $value; - } - if (is_numeric($value)) { - return (bool) $value; - } - return ($value === 'true' || $value === 'TRUE'); - } -} diff --git a/application/third_party/PHPExcel/Reader/Excel2007/Chart.php b/application/third_party/PHPExcel/Reader/Excel2007/Chart.php deleted file mode 100644 index 590bf2d8..00000000 --- a/application/third_party/PHPExcel/Reader/Excel2007/Chart.php +++ /dev/null @@ -1,520 +0,0 @@ -attributes(); - if (isset($attributes[$name])) { - if ($format == 'string') { - return (string) $attributes[$name]; - } elseif ($format == 'integer') { - return (integer) $attributes[$name]; - } elseif ($format == 'boolean') { - return (boolean) ($attributes[$name] === '0' || $attributes[$name] !== 'true') ? false : true; - } else { - return (float) $attributes[$name]; - } - } - return null; - } - - - private static function readColor($color, $background = false) - { - if (isset($color["rgb"])) { - return (string)$color["rgb"]; - } elseif (isset($color["indexed"])) { - return PHPExcel_Style_Color::indexedColor($color["indexed"]-7, $background)->getARGB(); - } - } - - public static function readChart($chartElements, $chartName) - { - $namespacesChartMeta = $chartElements->getNamespaces(true); - $chartElementsC = $chartElements->children($namespacesChartMeta['c']); - - $XaxisLabel = $YaxisLabel = $legend = $title = null; - $dispBlanksAs = $plotVisOnly = null; - - foreach ($chartElementsC as $chartElementKey => $chartElement) { - switch ($chartElementKey) { - case "chart": - foreach ($chartElement as $chartDetailsKey => $chartDetails) { - $chartDetailsC = $chartDetails->children($namespacesChartMeta['c']); - switch ($chartDetailsKey) { - case "plotArea": - $plotAreaLayout = $XaxisLable = $YaxisLable = null; - $plotSeries = $plotAttributes = array(); - foreach ($chartDetails as $chartDetailKey => $chartDetail) { - switch ($chartDetailKey) { - case "layout": - $plotAreaLayout = self::chartLayoutDetails($chartDetail, $namespacesChartMeta, 'plotArea'); - break; - case "catAx": - if (isset($chartDetail->title)) { - $XaxisLabel = self::chartTitle($chartDetail->title->children($namespacesChartMeta['c']), $namespacesChartMeta, 'cat'); - } - break; - case "dateAx": - if (isset($chartDetail->title)) { - $XaxisLabel = self::chartTitle($chartDetail->title->children($namespacesChartMeta['c']), $namespacesChartMeta, 'cat'); - } - break; - case "valAx": - if (isset($chartDetail->title)) { - $YaxisLabel = self::chartTitle($chartDetail->title->children($namespacesChartMeta['c']), $namespacesChartMeta, 'cat'); - } - break; - case "barChart": - case "bar3DChart": - $barDirection = self::getAttribute($chartDetail->barDir, 'val', 'string'); - $plotSer = self::chartDataSeries($chartDetail, $namespacesChartMeta, $chartDetailKey); - $plotSer->setPlotDirection($barDirection); - $plotSeries[] = $plotSer; - $plotAttributes = self::readChartAttributes($chartDetail); - break; - case "lineChart": - case "line3DChart": - $plotSeries[] = self::chartDataSeries($chartDetail, $namespacesChartMeta, $chartDetailKey); - $plotAttributes = self::readChartAttributes($chartDetail); - break; - case "areaChart": - case "area3DChart": - $plotSeries[] = self::chartDataSeries($chartDetail, $namespacesChartMeta, $chartDetailKey); - $plotAttributes = self::readChartAttributes($chartDetail); - break; - case "doughnutChart": - case "pieChart": - case "pie3DChart": - $explosion = isset($chartDetail->ser->explosion); - $plotSer = self::chartDataSeries($chartDetail, $namespacesChartMeta, $chartDetailKey); - $plotSer->setPlotStyle($explosion); - $plotSeries[] = $plotSer; - $plotAttributes = self::readChartAttributes($chartDetail); - break; - case "scatterChart": - $scatterStyle = self::getAttribute($chartDetail->scatterStyle, 'val', 'string'); - $plotSer = self::chartDataSeries($chartDetail, $namespacesChartMeta, $chartDetailKey); - $plotSer->setPlotStyle($scatterStyle); - $plotSeries[] = $plotSer; - $plotAttributes = self::readChartAttributes($chartDetail); - break; - case "bubbleChart": - $bubbleScale = self::getAttribute($chartDetail->bubbleScale, 'val', 'integer'); - $plotSer = self::chartDataSeries($chartDetail, $namespacesChartMeta, $chartDetailKey); - $plotSer->setPlotStyle($bubbleScale); - $plotSeries[] = $plotSer; - $plotAttributes = self::readChartAttributes($chartDetail); - break; - case "radarChart": - $radarStyle = self::getAttribute($chartDetail->radarStyle, 'val', 'string'); - $plotSer = self::chartDataSeries($chartDetail, $namespacesChartMeta, $chartDetailKey); - $plotSer->setPlotStyle($radarStyle); - $plotSeries[] = $plotSer; - $plotAttributes = self::readChartAttributes($chartDetail); - break; - case "surfaceChart": - case "surface3DChart": - $wireFrame = self::getAttribute($chartDetail->wireframe, 'val', 'boolean'); - $plotSer = self::chartDataSeries($chartDetail, $namespacesChartMeta, $chartDetailKey); - $plotSer->setPlotStyle($wireFrame); - $plotSeries[] = $plotSer; - $plotAttributes = self::readChartAttributes($chartDetail); - break; - case "stockChart": - $plotSeries[] = self::chartDataSeries($chartDetail, $namespacesChartMeta, $chartDetailKey); - $plotAttributes = self::readChartAttributes($plotAreaLayout); - break; - } - } - if ($plotAreaLayout == null) { - $plotAreaLayout = new PHPExcel_Chart_Layout(); - } - $plotArea = new PHPExcel_Chart_PlotArea($plotAreaLayout, $plotSeries); - self::setChartAttributes($plotAreaLayout, $plotAttributes); - break; - case "plotVisOnly": - $plotVisOnly = self::getAttribute($chartDetails, 'val', 'string'); - break; - case "dispBlanksAs": - $dispBlanksAs = self::getAttribute($chartDetails, 'val', 'string'); - break; - case "title": - $title = self::chartTitle($chartDetails, $namespacesChartMeta, 'title'); - break; - case "legend": - $legendPos = 'r'; - $legendLayout = null; - $legendOverlay = false; - foreach ($chartDetails as $chartDetailKey => $chartDetail) { - switch ($chartDetailKey) { - case "legendPos": - $legendPos = self::getAttribute($chartDetail, 'val', 'string'); - break; - case "overlay": - $legendOverlay = self::getAttribute($chartDetail, 'val', 'boolean'); - break; - case "layout": - $legendLayout = self::chartLayoutDetails($chartDetail, $namespacesChartMeta, 'legend'); - break; - } - } - $legend = new PHPExcel_Chart_Legend($legendPos, $legendLayout, $legendOverlay); - break; - } - } - } - } - $chart = new PHPExcel_Chart($chartName, $title, $legend, $plotArea, $plotVisOnly, $dispBlanksAs, $XaxisLabel, $YaxisLabel); - - return $chart; - } - - private static function chartTitle($titleDetails, $namespacesChartMeta, $type) - { - $caption = array(); - $titleLayout = null; - foreach ($titleDetails as $titleDetailKey => $chartDetail) { - switch ($titleDetailKey) { - case "tx": - $titleDetails = $chartDetail->rich->children($namespacesChartMeta['a']); - foreach ($titleDetails as $titleKey => $titleDetail) { - switch ($titleKey) { - case "p": - $titleDetailPart = $titleDetail->children($namespacesChartMeta['a']); - $caption[] = self::parseRichText($titleDetailPart); - } - } - break; - case "layout": - $titleLayout = self::chartLayoutDetails($chartDetail, $namespacesChartMeta); - break; - } - } - - return new PHPExcel_Chart_Title($caption, $titleLayout); - } - - private static function chartLayoutDetails($chartDetail, $namespacesChartMeta) - { - if (!isset($chartDetail->manualLayout)) { - return null; - } - $details = $chartDetail->manualLayout->children($namespacesChartMeta['c']); - if (is_null($details)) { - return null; - } - $layout = array(); - foreach ($details as $detailKey => $detail) { -// echo $detailKey, ' => ',self::getAttribute($detail, 'val', 'string'),PHP_EOL; - $layout[$detailKey] = self::getAttribute($detail, 'val', 'string'); - } - return new PHPExcel_Chart_Layout($layout); - } - - private static function chartDataSeries($chartDetail, $namespacesChartMeta, $plotType) - { - $multiSeriesType = null; - $smoothLine = false; - $seriesLabel = $seriesCategory = $seriesValues = $plotOrder = array(); - - $seriesDetailSet = $chartDetail->children($namespacesChartMeta['c']); - foreach ($seriesDetailSet as $seriesDetailKey => $seriesDetails) { - switch ($seriesDetailKey) { - case "grouping": - $multiSeriesType = self::getAttribute($chartDetail->grouping, 'val', 'string'); - break; - case "ser": - $marker = null; - foreach ($seriesDetails as $seriesKey => $seriesDetail) { - switch ($seriesKey) { - case "idx": - $seriesIndex = self::getAttribute($seriesDetail, 'val', 'integer'); - break; - case "order": - $seriesOrder = self::getAttribute($seriesDetail, 'val', 'integer'); - $plotOrder[$seriesIndex] = $seriesOrder; - break; - case "tx": - $seriesLabel[$seriesIndex] = self::chartDataSeriesValueSet($seriesDetail, $namespacesChartMeta); - break; - case "marker": - $marker = self::getAttribute($seriesDetail->symbol, 'val', 'string'); - break; - case "smooth": - $smoothLine = self::getAttribute($seriesDetail, 'val', 'boolean'); - break; - case "cat": - $seriesCategory[$seriesIndex] = self::chartDataSeriesValueSet($seriesDetail, $namespacesChartMeta); - break; - case "val": - $seriesValues[$seriesIndex] = self::chartDataSeriesValueSet($seriesDetail, $namespacesChartMeta, $marker); - break; - case "xVal": - $seriesCategory[$seriesIndex] = self::chartDataSeriesValueSet($seriesDetail, $namespacesChartMeta, $marker); - break; - case "yVal": - $seriesValues[$seriesIndex] = self::chartDataSeriesValueSet($seriesDetail, $namespacesChartMeta, $marker); - break; - } - } - } - } - return new PHPExcel_Chart_DataSeries($plotType, $multiSeriesType, $plotOrder, $seriesLabel, $seriesCategory, $seriesValues, $smoothLine); - } - - - private static function chartDataSeriesValueSet($seriesDetail, $namespacesChartMeta, $marker = null, $smoothLine = false) - { - if (isset($seriesDetail->strRef)) { - $seriesSource = (string) $seriesDetail->strRef->f; - $seriesData = self::chartDataSeriesValues($seriesDetail->strRef->strCache->children($namespacesChartMeta['c']), 's'); - - return new PHPExcel_Chart_DataSeriesValues('String', $seriesSource, $seriesData['formatCode'], $seriesData['pointCount'], $seriesData['dataValues'], $marker, $smoothLine); - } elseif (isset($seriesDetail->numRef)) { - $seriesSource = (string) $seriesDetail->numRef->f; - $seriesData = self::chartDataSeriesValues($seriesDetail->numRef->numCache->children($namespacesChartMeta['c'])); - - return new PHPExcel_Chart_DataSeriesValues('Number', $seriesSource, $seriesData['formatCode'], $seriesData['pointCount'], $seriesData['dataValues'], $marker, $smoothLine); - } elseif (isset($seriesDetail->multiLvlStrRef)) { - $seriesSource = (string) $seriesDetail->multiLvlStrRef->f; - $seriesData = self::chartDataSeriesValuesMultiLevel($seriesDetail->multiLvlStrRef->multiLvlStrCache->children($namespacesChartMeta['c']), 's'); - $seriesData['pointCount'] = count($seriesData['dataValues']); - - return new PHPExcel_Chart_DataSeriesValues('String', $seriesSource, $seriesData['formatCode'], $seriesData['pointCount'], $seriesData['dataValues'], $marker, $smoothLine); - } elseif (isset($seriesDetail->multiLvlNumRef)) { - $seriesSource = (string) $seriesDetail->multiLvlNumRef->f; - $seriesData = self::chartDataSeriesValuesMultiLevel($seriesDetail->multiLvlNumRef->multiLvlNumCache->children($namespacesChartMeta['c']), 's'); - $seriesData['pointCount'] = count($seriesData['dataValues']); - - return new PHPExcel_Chart_DataSeriesValues('String', $seriesSource, $seriesData['formatCode'], $seriesData['pointCount'], $seriesData['dataValues'], $marker, $smoothLine); - } - return null; - } - - - private static function chartDataSeriesValues($seriesValueSet, $dataType = 'n') - { - $seriesVal = array(); - $formatCode = ''; - $pointCount = 0; - - foreach ($seriesValueSet as $seriesValueIdx => $seriesValue) { - switch ($seriesValueIdx) { - case 'ptCount': - $pointCount = self::getAttribute($seriesValue, 'val', 'integer'); - break; - case 'formatCode': - $formatCode = (string) $seriesValue; - break; - case 'pt': - $pointVal = self::getAttribute($seriesValue, 'idx', 'integer'); - if ($dataType == 's') { - $seriesVal[$pointVal] = (string) $seriesValue->v; - } else { - $seriesVal[$pointVal] = (float) $seriesValue->v; - } - break; - } - } - - return array( - 'formatCode' => $formatCode, - 'pointCount' => $pointCount, - 'dataValues' => $seriesVal - ); - } - - private static function chartDataSeriesValuesMultiLevel($seriesValueSet, $dataType = 'n') - { - $seriesVal = array(); - $formatCode = ''; - $pointCount = 0; - - foreach ($seriesValueSet->lvl as $seriesLevelIdx => $seriesLevel) { - foreach ($seriesLevel as $seriesValueIdx => $seriesValue) { - switch ($seriesValueIdx) { - case 'ptCount': - $pointCount = self::getAttribute($seriesValue, 'val', 'integer'); - break; - case 'formatCode': - $formatCode = (string) $seriesValue; - break; - case 'pt': - $pointVal = self::getAttribute($seriesValue, 'idx', 'integer'); - if ($dataType == 's') { - $seriesVal[$pointVal][] = (string) $seriesValue->v; - } else { - $seriesVal[$pointVal][] = (float) $seriesValue->v; - } - break; - } - } - } - - return array( - 'formatCode' => $formatCode, - 'pointCount' => $pointCount, - 'dataValues' => $seriesVal - ); - } - - private static function parseRichText($titleDetailPart = null) - { - $value = new PHPExcel_RichText(); - - foreach ($titleDetailPart as $titleDetailElementKey => $titleDetailElement) { - if (isset($titleDetailElement->t)) { - $objText = $value->createTextRun((string) $titleDetailElement->t); - } - if (isset($titleDetailElement->rPr)) { - if (isset($titleDetailElement->rPr->rFont["val"])) { - $objText->getFont()->setName((string) $titleDetailElement->rPr->rFont["val"]); - } - - $fontSize = (self::getAttribute($titleDetailElement->rPr, 'sz', 'integer')); - if (!is_null($fontSize)) { - $objText->getFont()->setSize(floor($fontSize / 100)); - } - - $fontColor = (self::getAttribute($titleDetailElement->rPr, 'color', 'string')); - if (!is_null($fontColor)) { - $objText->getFont()->setColor(new PHPExcel_Style_Color(self::readColor($fontColor))); - } - - $bold = self::getAttribute($titleDetailElement->rPr, 'b', 'boolean'); - if (!is_null($bold)) { - $objText->getFont()->setBold($bold); - } - - $italic = self::getAttribute($titleDetailElement->rPr, 'i', 'boolean'); - if (!is_null($italic)) { - $objText->getFont()->setItalic($italic); - } - - $baseline = self::getAttribute($titleDetailElement->rPr, 'baseline', 'integer'); - if (!is_null($baseline)) { - if ($baseline > 0) { - $objText->getFont()->setSuperScript(true); - } elseif ($baseline < 0) { - $objText->getFont()->setSubScript(true); - } - } - - $underscore = (self::getAttribute($titleDetailElement->rPr, 'u', 'string')); - if (!is_null($underscore)) { - if ($underscore == 'sng') { - $objText->getFont()->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE); - } elseif ($underscore == 'dbl') { - $objText->getFont()->setUnderline(PHPExcel_Style_Font::UNDERLINE_DOUBLE); - } else { - $objText->getFont()->setUnderline(PHPExcel_Style_Font::UNDERLINE_NONE); - } - } - - $strikethrough = (self::getAttribute($titleDetailElement->rPr, 's', 'string')); - if (!is_null($strikethrough)) { - if ($strikethrough == 'noStrike') { - $objText->getFont()->setStrikethrough(false); - } else { - $objText->getFont()->setStrikethrough(true); - } - } - } - } - - return $value; - } - - private static function readChartAttributes($chartDetail) - { - $plotAttributes = array(); - if (isset($chartDetail->dLbls)) { - if (isset($chartDetail->dLbls->howLegendKey)) { - $plotAttributes['showLegendKey'] = self::getAttribute($chartDetail->dLbls->showLegendKey, 'val', 'string'); - } - if (isset($chartDetail->dLbls->showVal)) { - $plotAttributes['showVal'] = self::getAttribute($chartDetail->dLbls->showVal, 'val', 'string'); - } - if (isset($chartDetail->dLbls->showCatName)) { - $plotAttributes['showCatName'] = self::getAttribute($chartDetail->dLbls->showCatName, 'val', 'string'); - } - if (isset($chartDetail->dLbls->showSerName)) { - $plotAttributes['showSerName'] = self::getAttribute($chartDetail->dLbls->showSerName, 'val', 'string'); - } - if (isset($chartDetail->dLbls->showPercent)) { - $plotAttributes['showPercent'] = self::getAttribute($chartDetail->dLbls->showPercent, 'val', 'string'); - } - if (isset($chartDetail->dLbls->showBubbleSize)) { - $plotAttributes['showBubbleSize'] = self::getAttribute($chartDetail->dLbls->showBubbleSize, 'val', 'string'); - } - if (isset($chartDetail->dLbls->showLeaderLines)) { - $plotAttributes['showLeaderLines'] = self::getAttribute($chartDetail->dLbls->showLeaderLines, 'val', 'string'); - } - } - - return $plotAttributes; - } - - private static function setChartAttributes($plotArea, $plotAttributes) - { - foreach ($plotAttributes as $plotAttributeKey => $plotAttributeValue) { - switch ($plotAttributeKey) { - case 'showLegendKey': - $plotArea->setShowLegendKey($plotAttributeValue); - break; - case 'showVal': - $plotArea->setShowVal($plotAttributeValue); - break; - case 'showCatName': - $plotArea->setShowCatName($plotAttributeValue); - break; - case 'showSerName': - $plotArea->setShowSerName($plotAttributeValue); - break; - case 'showPercent': - $plotArea->setShowPercent($plotAttributeValue); - break; - case 'showBubbleSize': - $plotArea->setShowBubbleSize($plotAttributeValue); - break; - case 'showLeaderLines': - $plotArea->setShowLeaderLines($plotAttributeValue); - break; - } - } - } -} diff --git a/application/third_party/PHPExcel/Reader/Excel2007/Theme.php b/application/third_party/PHPExcel/Reader/Excel2007/Theme.php deleted file mode 100644 index 134f4b60..00000000 --- a/application/third_party/PHPExcel/Reader/Excel2007/Theme.php +++ /dev/null @@ -1,127 +0,0 @@ -themeName = $themeName; - $this->colourSchemeName = $colourSchemeName; - $this->colourMap = $colourMap; - } - - /** - * Get Theme Name - * - * @return string - */ - public function getThemeName() - { - return $this->themeName; - } - - /** - * Get colour Scheme Name - * - * @return string - */ - public function getColourSchemeName() - { - return $this->colourSchemeName; - } - - /** - * Get colour Map Value by Position - * - * @return string - */ - public function getColourByIndex($index = 0) - { - if (isset($this->colourMap[$index])) { - return $this->colourMap[$index]; - } - return null; - } - - /** - * Implement PHP __clone to create a deep clone, not just a shallow copy. - */ - public function __clone() - { - $vars = get_object_vars($this); - foreach ($vars as $key => $value) { - if ((is_object($value)) && ($key != '_parent')) { - $this->$key = clone $value; - } else { - $this->$key = $value; - } - } - } -} diff --git a/application/third_party/PHPExcel/Reader/Excel5.php b/application/third_party/PHPExcel/Reader/Excel5.php deleted file mode 100644 index 62e971d2..00000000 --- a/application/third_party/PHPExcel/Reader/Excel5.php +++ /dev/null @@ -1,7594 +0,0 @@ -data - * - * @var int - */ - private $dataSize; - - /** - * Current position in stream - * - * @var integer - */ - private $pos; - - /** - * Workbook to be returned by the reader. - * - * @var PHPExcel - */ - private $phpExcel; - - /** - * Worksheet that is currently being built by the reader. - * - * @var PHPExcel_Worksheet - */ - private $phpSheet; - - /** - * BIFF version - * - * @var int - */ - private $version; - - /** - * Codepage set in the Excel file being read. Only important for BIFF5 (Excel 5.0 - Excel 95) - * For BIFF8 (Excel 97 - Excel 2003) this will always have the value 'UTF-16LE' - * - * @var string - */ - private $codepage; - - /** - * Shared formats - * - * @var array - */ - private $formats; - - /** - * Shared fonts - * - * @var array - */ - private $objFonts; - - /** - * Color palette - * - * @var array - */ - private $palette; - - /** - * Worksheets - * - * @var array - */ - private $sheets; - - /** - * External books - * - * @var array - */ - private $externalBooks; - - /** - * REF structures. Only applies to BIFF8. - * - * @var array - */ - private $ref; - - /** - * External names - * - * @var array - */ - private $externalNames; - - /** - * Defined names - * - * @var array - */ - private $definedname; - - /** - * Shared strings. Only applies to BIFF8. - * - * @var array - */ - private $sst; - - /** - * Panes are frozen? (in sheet currently being read). See WINDOW2 record. - * - * @var boolean - */ - private $frozen; - - /** - * Fit printout to number of pages? (in sheet currently being read). See SHEETPR record. - * - * @var boolean - */ - private $isFitToPages; - - /** - * Objects. One OBJ record contributes with one entry. - * - * @var array - */ - private $objs; - - /** - * Text Objects. One TXO record corresponds with one entry. - * - * @var array - */ - private $textObjects; - - /** - * Cell Annotations (BIFF8) - * - * @var array - */ - private $cellNotes; - - /** - * The combined MSODRAWINGGROUP data - * - * @var string - */ - private $drawingGroupData; - - /** - * The combined MSODRAWING data (per sheet) - * - * @var string - */ - private $drawingData; - - /** - * Keep track of XF index - * - * @var int - */ - private $xfIndex; - - /** - * Mapping of XF index (that is a cell XF) to final index in cellXf collection - * - * @var array - */ - private $mapCellXfIndex; - - /** - * Mapping of XF index (that is a style XF) to final index in cellStyleXf collection - * - * @var array - */ - private $mapCellStyleXfIndex; - - /** - * The shared formulas in a sheet. One SHAREDFMLA record contributes with one value. - * - * @var array - */ - private $sharedFormulas; - - /** - * The shared formula parts in a sheet. One FORMULA record contributes with one value if it - * refers to a shared formula. - * - * @var array - */ - private $sharedFormulaParts; - - /** - * The type of encryption in use - * - * @var int - */ - private $encryption = 0; - - /** - * The position in the stream after which contents are encrypted - * - * @var int - */ - private $encryptionStartPos = false; - - /** - * The current RC4 decryption object - * - * @var PHPExcel_Reader_Excel5_RC4 - */ - private $rc4Key = null; - - /** - * The position in the stream that the RC4 decryption object was left at - * - * @var int - */ - private $rc4Pos = 0; - - /** - * The current MD5 context state - * - * @var string - */ - private $md5Ctxt = null; - - /** - * Create a new PHPExcel_Reader_Excel5 instance - */ - public function __construct() - { - $this->readFilter = new PHPExcel_Reader_DefaultReadFilter(); - } - - /** - * Can the current PHPExcel_Reader_IReader read the file? - * - * @param string $pFilename - * @return boolean - * @throws PHPExcel_Reader_Exception - */ - public function canRead($pFilename) - { - // Check if file exists - if (!file_exists($pFilename)) { - throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); - } - - try { - // Use ParseXL for the hard work. - $ole = new PHPExcel_Shared_OLERead(); - - // get excel data - $res = $ole->read($pFilename); - return true; - } catch (PHPExcel_Exception $e) { - return false; - } - } - - /** - * Reads names of the worksheets from a file, without parsing the whole file to a PHPExcel object - * - * @param string $pFilename - * @throws PHPExcel_Reader_Exception - */ - public function listWorksheetNames($pFilename) - { - // Check if file exists - if (!file_exists($pFilename)) { - throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); - } - - $worksheetNames = array(); - - // Read the OLE file - $this->loadOLE($pFilename); - - // total byte size of Excel data (workbook global substream + sheet substreams) - $this->dataSize = strlen($this->data); - - $this->pos = 0; - $this->sheets = array(); - - // Parse Workbook Global Substream - while ($this->pos < $this->dataSize) { - $code = self::getInt2d($this->data, $this->pos); - - switch ($code) { - case self::XLS_TYPE_BOF: - $this->readBof(); - break; - case self::XLS_TYPE_SHEET: - $this->readSheet(); - break; - case self::XLS_TYPE_EOF: - $this->readDefault(); - break 2; - default: - $this->readDefault(); - break; - } - } - - foreach ($this->sheets as $sheet) { - if ($sheet['sheetType'] != 0x00) { - // 0x00: Worksheet, 0x02: Chart, 0x06: Visual Basic module - continue; - } - - $worksheetNames[] = $sheet['name']; - } - - return $worksheetNames; - } - - - /** - * Return worksheet info (Name, Last Column Letter, Last Column Index, Total Rows, Total Columns) - * - * @param string $pFilename - * @throws PHPExcel_Reader_Exception - */ - public function listWorksheetInfo($pFilename) - { - // Check if file exists - if (!file_exists($pFilename)) { - throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); - } - - $worksheetInfo = array(); - - // Read the OLE file - $this->loadOLE($pFilename); - - // total byte size of Excel data (workbook global substream + sheet substreams) - $this->dataSize = strlen($this->data); - - // initialize - $this->pos = 0; - $this->sheets = array(); - - // Parse Workbook Global Substream - while ($this->pos < $this->dataSize) { - $code = self::getInt2d($this->data, $this->pos); - - switch ($code) { - case self::XLS_TYPE_BOF: - $this->readBof(); - break; - case self::XLS_TYPE_SHEET: - $this->readSheet(); - break; - case self::XLS_TYPE_EOF: - $this->readDefault(); - break 2; - default: - $this->readDefault(); - break; - } - } - - // Parse the individual sheets - foreach ($this->sheets as $sheet) { - if ($sheet['sheetType'] != 0x00) { - // 0x00: Worksheet - // 0x02: Chart - // 0x06: Visual Basic module - continue; - } - - $tmpInfo = array(); - $tmpInfo['worksheetName'] = $sheet['name']; - $tmpInfo['lastColumnLetter'] = 'A'; - $tmpInfo['lastColumnIndex'] = 0; - $tmpInfo['totalRows'] = 0; - $tmpInfo['totalColumns'] = 0; - - $this->pos = $sheet['offset']; - - while ($this->pos <= $this->dataSize - 4) { - $code = self::getInt2d($this->data, $this->pos); - - switch ($code) { - case self::XLS_TYPE_RK: - case self::XLS_TYPE_LABELSST: - case self::XLS_TYPE_NUMBER: - case self::XLS_TYPE_FORMULA: - case self::XLS_TYPE_BOOLERR: - case self::XLS_TYPE_LABEL: - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - $rowIndex = self::getInt2d($recordData, 0) + 1; - $columnIndex = self::getInt2d($recordData, 2); - - $tmpInfo['totalRows'] = max($tmpInfo['totalRows'], $rowIndex); - $tmpInfo['lastColumnIndex'] = max($tmpInfo['lastColumnIndex'], $columnIndex); - break; - case self::XLS_TYPE_BOF: - $this->readBof(); - break; - case self::XLS_TYPE_EOF: - $this->readDefault(); - break 2; - default: - $this->readDefault(); - break; - } - } - - $tmpInfo['lastColumnLetter'] = PHPExcel_Cell::stringFromColumnIndex($tmpInfo['lastColumnIndex']); - $tmpInfo['totalColumns'] = $tmpInfo['lastColumnIndex'] + 1; - - $worksheetInfo[] = $tmpInfo; - } - - return $worksheetInfo; - } - - - /** - * Loads PHPExcel from file - * - * @param string $pFilename - * @return PHPExcel - * @throws PHPExcel_Reader_Exception - */ - public function load($pFilename) - { - // Read the OLE file - $this->loadOLE($pFilename); - - // Initialisations - $this->phpExcel = new PHPExcel; - $this->phpExcel->removeSheetByIndex(0); // remove 1st sheet - if (!$this->readDataOnly) { - $this->phpExcel->removeCellStyleXfByIndex(0); // remove the default style - $this->phpExcel->removeCellXfByIndex(0); // remove the default style - } - - // Read the summary information stream (containing meta data) - $this->readSummaryInformation(); - - // Read the Additional document summary information stream (containing application-specific meta data) - $this->readDocumentSummaryInformation(); - - // total byte size of Excel data (workbook global substream + sheet substreams) - $this->dataSize = strlen($this->data); - - // initialize - $this->pos = 0; - $this->codepage = 'CP1252'; - $this->formats = array(); - $this->objFonts = array(); - $this->palette = array(); - $this->sheets = array(); - $this->externalBooks = array(); - $this->ref = array(); - $this->definedname = array(); - $this->sst = array(); - $this->drawingGroupData = ''; - $this->xfIndex = ''; - $this->mapCellXfIndex = array(); - $this->mapCellStyleXfIndex = array(); - - // Parse Workbook Global Substream - while ($this->pos < $this->dataSize) { - $code = self::getInt2d($this->data, $this->pos); - - switch ($code) { - case self::XLS_TYPE_BOF: - $this->readBof(); - break; - case self::XLS_TYPE_FILEPASS: - $this->readFilepass(); - break; - case self::XLS_TYPE_CODEPAGE: - $this->readCodepage(); - break; - case self::XLS_TYPE_DATEMODE: - $this->readDateMode(); - break; - case self::XLS_TYPE_FONT: - $this->readFont(); - break; - case self::XLS_TYPE_FORMAT: - $this->readFormat(); - break; - case self::XLS_TYPE_XF: - $this->readXf(); - break; - case self::XLS_TYPE_XFEXT: - $this->readXfExt(); - break; - case self::XLS_TYPE_STYLE: - $this->readStyle(); - break; - case self::XLS_TYPE_PALETTE: - $this->readPalette(); - break; - case self::XLS_TYPE_SHEET: - $this->readSheet(); - break; - case self::XLS_TYPE_EXTERNALBOOK: - $this->readExternalBook(); - break; - case self::XLS_TYPE_EXTERNNAME: - $this->readExternName(); - break; - case self::XLS_TYPE_EXTERNSHEET: - $this->readExternSheet(); - break; - case self::XLS_TYPE_DEFINEDNAME: - $this->readDefinedName(); - break; - case self::XLS_TYPE_MSODRAWINGGROUP: - $this->readMsoDrawingGroup(); - break; - case self::XLS_TYPE_SST: - $this->readSst(); - break; - case self::XLS_TYPE_EOF: - $this->readDefault(); - break 2; - default: - $this->readDefault(); - break; - } - } - - // Resolve indexed colors for font, fill, and border colors - // Cannot be resolved already in XF record, because PALETTE record comes afterwards - if (!$this->readDataOnly) { - foreach ($this->objFonts as $objFont) { - if (isset($objFont->colorIndex)) { - $color = PHPExcel_Reader_Excel5_Color::map($objFont->colorIndex, $this->palette, $this->version); - $objFont->getColor()->setRGB($color['rgb']); - } - } - - foreach ($this->phpExcel->getCellXfCollection() as $objStyle) { - // fill start and end color - $fill = $objStyle->getFill(); - - if (isset($fill->startcolorIndex)) { - $startColor = PHPExcel_Reader_Excel5_Color::map($fill->startcolorIndex, $this->palette, $this->version); - $fill->getStartColor()->setRGB($startColor['rgb']); - } - if (isset($fill->endcolorIndex)) { - $endColor = PHPExcel_Reader_Excel5_Color::map($fill->endcolorIndex, $this->palette, $this->version); - $fill->getEndColor()->setRGB($endColor['rgb']); - } - - // border colors - $top = $objStyle->getBorders()->getTop(); - $right = $objStyle->getBorders()->getRight(); - $bottom = $objStyle->getBorders()->getBottom(); - $left = $objStyle->getBorders()->getLeft(); - $diagonal = $objStyle->getBorders()->getDiagonal(); - - if (isset($top->colorIndex)) { - $borderTopColor = PHPExcel_Reader_Excel5_Color::map($top->colorIndex, $this->palette, $this->version); - $top->getColor()->setRGB($borderTopColor['rgb']); - } - if (isset($right->colorIndex)) { - $borderRightColor = PHPExcel_Reader_Excel5_Color::map($right->colorIndex, $this->palette, $this->version); - $right->getColor()->setRGB($borderRightColor['rgb']); - } - if (isset($bottom->colorIndex)) { - $borderBottomColor = PHPExcel_Reader_Excel5_Color::map($bottom->colorIndex, $this->palette, $this->version); - $bottom->getColor()->setRGB($borderBottomColor['rgb']); - } - if (isset($left->colorIndex)) { - $borderLeftColor = PHPExcel_Reader_Excel5_Color::map($left->colorIndex, $this->palette, $this->version); - $left->getColor()->setRGB($borderLeftColor['rgb']); - } - if (isset($diagonal->colorIndex)) { - $borderDiagonalColor = PHPExcel_Reader_Excel5_Color::map($diagonal->colorIndex, $this->palette, $this->version); - $diagonal->getColor()->setRGB($borderDiagonalColor['rgb']); - } - } - } - - // treat MSODRAWINGGROUP records, workbook-level Escher - if (!$this->readDataOnly && $this->drawingGroupData) { - $escherWorkbook = new PHPExcel_Shared_Escher(); - $reader = new PHPExcel_Reader_Excel5_Escher($escherWorkbook); - $escherWorkbook = $reader->load($this->drawingGroupData); - - // debug Escher stream - //$debug = new Debug_Escher(new PHPExcel_Shared_Escher()); - //$debug->load($this->drawingGroupData); - } - - // Parse the individual sheets - foreach ($this->sheets as $sheet) { - if ($sheet['sheetType'] != 0x00) { - // 0x00: Worksheet, 0x02: Chart, 0x06: Visual Basic module - continue; - } - - // check if sheet should be skipped - if (isset($this->loadSheetsOnly) && !in_array($sheet['name'], $this->loadSheetsOnly)) { - continue; - } - - // add sheet to PHPExcel object - $this->phpSheet = $this->phpExcel->createSheet(); - // Use false for $updateFormulaCellReferences to prevent adjustment of worksheet references in formula - // cells... during the load, all formulae should be correct, and we're simply bringing the worksheet - // name in line with the formula, not the reverse - $this->phpSheet->setTitle($sheet['name'], false); - $this->phpSheet->setSheetState($sheet['sheetState']); - - $this->pos = $sheet['offset']; - - // Initialize isFitToPages. May change after reading SHEETPR record. - $this->isFitToPages = false; - - // Initialize drawingData - $this->drawingData = ''; - - // Initialize objs - $this->objs = array(); - - // Initialize shared formula parts - $this->sharedFormulaParts = array(); - - // Initialize shared formulas - $this->sharedFormulas = array(); - - // Initialize text objs - $this->textObjects = array(); - - // Initialize cell annotations - $this->cellNotes = array(); - $this->textObjRef = -1; - - while ($this->pos <= $this->dataSize - 4) { - $code = self::getInt2d($this->data, $this->pos); - - switch ($code) { - case self::XLS_TYPE_BOF: - $this->readBof(); - break; - case self::XLS_TYPE_PRINTGRIDLINES: - $this->readPrintGridlines(); - break; - case self::XLS_TYPE_DEFAULTROWHEIGHT: - $this->readDefaultRowHeight(); - break; - case self::XLS_TYPE_SHEETPR: - $this->readSheetPr(); - break; - case self::XLS_TYPE_HORIZONTALPAGEBREAKS: - $this->readHorizontalPageBreaks(); - break; - case self::XLS_TYPE_VERTICALPAGEBREAKS: - $this->readVerticalPageBreaks(); - break; - case self::XLS_TYPE_HEADER: - $this->readHeader(); - break; - case self::XLS_TYPE_FOOTER: - $this->readFooter(); - break; - case self::XLS_TYPE_HCENTER: - $this->readHcenter(); - break; - case self::XLS_TYPE_VCENTER: - $this->readVcenter(); - break; - case self::XLS_TYPE_LEFTMARGIN: - $this->readLeftMargin(); - break; - case self::XLS_TYPE_RIGHTMARGIN: - $this->readRightMargin(); - break; - case self::XLS_TYPE_TOPMARGIN: - $this->readTopMargin(); - break; - case self::XLS_TYPE_BOTTOMMARGIN: - $this->readBottomMargin(); - break; - case self::XLS_TYPE_PAGESETUP: - $this->readPageSetup(); - break; - case self::XLS_TYPE_PROTECT: - $this->readProtect(); - break; - case self::XLS_TYPE_SCENPROTECT: - $this->readScenProtect(); - break; - case self::XLS_TYPE_OBJECTPROTECT: - $this->readObjectProtect(); - break; - case self::XLS_TYPE_PASSWORD: - $this->readPassword(); - break; - case self::XLS_TYPE_DEFCOLWIDTH: - $this->readDefColWidth(); - break; - case self::XLS_TYPE_COLINFO: - $this->readColInfo(); - break; - case self::XLS_TYPE_DIMENSION: - $this->readDefault(); - break; - case self::XLS_TYPE_ROW: - $this->readRow(); - break; - case self::XLS_TYPE_DBCELL: - $this->readDefault(); - break; - case self::XLS_TYPE_RK: - $this->readRk(); - break; - case self::XLS_TYPE_LABELSST: - $this->readLabelSst(); - break; - case self::XLS_TYPE_MULRK: - $this->readMulRk(); - break; - case self::XLS_TYPE_NUMBER: - $this->readNumber(); - break; - case self::XLS_TYPE_FORMULA: - $this->readFormula(); - break; - case self::XLS_TYPE_SHAREDFMLA: - $this->readSharedFmla(); - break; - case self::XLS_TYPE_BOOLERR: - $this->readBoolErr(); - break; - case self::XLS_TYPE_MULBLANK: - $this->readMulBlank(); - break; - case self::XLS_TYPE_LABEL: - $this->readLabel(); - break; - case self::XLS_TYPE_BLANK: - $this->readBlank(); - break; - case self::XLS_TYPE_MSODRAWING: - $this->readMsoDrawing(); - break; - case self::XLS_TYPE_OBJ: - $this->readObj(); - break; - case self::XLS_TYPE_WINDOW2: - $this->readWindow2(); - break; - case self::XLS_TYPE_PAGELAYOUTVIEW: - $this->readPageLayoutView(); - break; - case self::XLS_TYPE_SCL: - $this->readScl(); - break; - case self::XLS_TYPE_PANE: - $this->readPane(); - break; - case self::XLS_TYPE_SELECTION: - $this->readSelection(); - break; - case self::XLS_TYPE_MERGEDCELLS: - $this->readMergedCells(); - break; - case self::XLS_TYPE_HYPERLINK: - $this->readHyperLink(); - break; - case self::XLS_TYPE_DATAVALIDATIONS: - $this->readDataValidations(); - break; - case self::XLS_TYPE_DATAVALIDATION: - $this->readDataValidation(); - break; - case self::XLS_TYPE_SHEETLAYOUT: - $this->readSheetLayout(); - break; - case self::XLS_TYPE_SHEETPROTECTION: - $this->readSheetProtection(); - break; - case self::XLS_TYPE_RANGEPROTECTION: - $this->readRangeProtection(); - break; - case self::XLS_TYPE_NOTE: - $this->readNote(); - break; - //case self::XLS_TYPE_IMDATA: $this->readImData(); break; - case self::XLS_TYPE_TXO: - $this->readTextObject(); - break; - case self::XLS_TYPE_CONTINUE: - $this->readContinue(); - break; - case self::XLS_TYPE_EOF: - $this->readDefault(); - break 2; - default: - $this->readDefault(); - break; - } - - } - - // treat MSODRAWING records, sheet-level Escher - if (!$this->readDataOnly && $this->drawingData) { - $escherWorksheet = new PHPExcel_Shared_Escher(); - $reader = new PHPExcel_Reader_Excel5_Escher($escherWorksheet); - $escherWorksheet = $reader->load($this->drawingData); - - // debug Escher stream - //$debug = new Debug_Escher(new PHPExcel_Shared_Escher()); - //$debug->load($this->drawingData); - - // get all spContainers in one long array, so they can be mapped to OBJ records - $allSpContainers = $escherWorksheet->getDgContainer()->getSpgrContainer()->getAllSpContainers(); - } - - // treat OBJ records - foreach ($this->objs as $n => $obj) { -// echo '
    Object reference is ', $n,'
    '; -// var_dump($obj); -// echo '
    '; - - // the first shape container never has a corresponding OBJ record, hence $n + 1 - if (isset($allSpContainers[$n + 1]) && is_object($allSpContainers[$n + 1])) { - $spContainer = $allSpContainers[$n + 1]; - - // we skip all spContainers that are a part of a group shape since we cannot yet handle those - if ($spContainer->getNestingLevel() > 1) { - continue; - } - - // calculate the width and height of the shape - list($startColumn, $startRow) = PHPExcel_Cell::coordinateFromString($spContainer->getStartCoordinates()); - list($endColumn, $endRow) = PHPExcel_Cell::coordinateFromString($spContainer->getEndCoordinates()); - - $startOffsetX = $spContainer->getStartOffsetX(); - $startOffsetY = $spContainer->getStartOffsetY(); - $endOffsetX = $spContainer->getEndOffsetX(); - $endOffsetY = $spContainer->getEndOffsetY(); - - $width = PHPExcel_Shared_Excel5::getDistanceX($this->phpSheet, $startColumn, $startOffsetX, $endColumn, $endOffsetX); - $height = PHPExcel_Shared_Excel5::getDistanceY($this->phpSheet, $startRow, $startOffsetY, $endRow, $endOffsetY); - - // calculate offsetX and offsetY of the shape - $offsetX = $startOffsetX * PHPExcel_Shared_Excel5::sizeCol($this->phpSheet, $startColumn) / 1024; - $offsetY = $startOffsetY * PHPExcel_Shared_Excel5::sizeRow($this->phpSheet, $startRow) / 256; - - switch ($obj['otObjType']) { - case 0x19: - // Note -// echo 'Cell Annotation Object
    '; -// echo 'Object ID is ', $obj['idObjID'],'
    '; - if (isset($this->cellNotes[$obj['idObjID']])) { - $cellNote = $this->cellNotes[$obj['idObjID']]; - - if (isset($this->textObjects[$obj['idObjID']])) { - $textObject = $this->textObjects[$obj['idObjID']]; - $this->cellNotes[$obj['idObjID']]['objTextData'] = $textObject; - } - } - break; - case 0x08: -// echo 'Picture Object
    '; - // picture - // get index to BSE entry (1-based) - $BSEindex = $spContainer->getOPT(0x0104); - $BSECollection = $escherWorkbook->getDggContainer()->getBstoreContainer()->getBSECollection(); - $BSE = $BSECollection[$BSEindex - 1]; - $blipType = $BSE->getBlipType(); - - // need check because some blip types are not supported by Escher reader such as EMF - if ($blip = $BSE->getBlip()) { - $ih = imagecreatefromstring($blip->getData()); - $drawing = new PHPExcel_Worksheet_MemoryDrawing(); - $drawing->setImageResource($ih); - - // width, height, offsetX, offsetY - $drawing->setResizeProportional(false); - $drawing->setWidth($width); - $drawing->setHeight($height); - $drawing->setOffsetX($offsetX); - $drawing->setOffsetY($offsetY); - - switch ($blipType) { - case PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_JPEG: - $drawing->setRenderingFunction(PHPExcel_Worksheet_MemoryDrawing::RENDERING_JPEG); - $drawing->setMimeType(PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_JPEG); - break; - case PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG: - $drawing->setRenderingFunction(PHPExcel_Worksheet_MemoryDrawing::RENDERING_PNG); - $drawing->setMimeType(PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_PNG); - break; - } - - $drawing->setWorksheet($this->phpSheet); - $drawing->setCoordinates($spContainer->getStartCoordinates()); - } - break; - default: - // other object type - break; - } - } - } - - // treat SHAREDFMLA records - if ($this->version == self::XLS_BIFF8) { - foreach ($this->sharedFormulaParts as $cell => $baseCell) { - list($column, $row) = PHPExcel_Cell::coordinateFromString($cell); - if (($this->getReadFilter() !== null) && $this->getReadFilter()->readCell($column, $row, $this->phpSheet->getTitle())) { - $formula = $this->getFormulaFromStructure($this->sharedFormulas[$baseCell], $cell); - $this->phpSheet->getCell($cell)->setValueExplicit('=' . $formula, PHPExcel_Cell_DataType::TYPE_FORMULA); - } - } - } - - if (!empty($this->cellNotes)) { - foreach ($this->cellNotes as $note => $noteDetails) { - if (!isset($noteDetails['objTextData'])) { - if (isset($this->textObjects[$note])) { - $textObject = $this->textObjects[$note]; - $noteDetails['objTextData'] = $textObject; - } else { - $noteDetails['objTextData']['text'] = ''; - } - } -// echo 'Cell annotation ', $note,'
    '; -// var_dump($noteDetails); -// echo '
    '; - $cellAddress = str_replace('$', '', $noteDetails['cellRef']); - $this->phpSheet->getComment($cellAddress)->setAuthor($noteDetails['author'])->setText($this->parseRichText($noteDetails['objTextData']['text'])); - } - } - } - - // add the named ranges (defined names) - foreach ($this->definedname as $definedName) { - if ($definedName['isBuiltInName']) { - switch ($definedName['name']) { - case pack('C', 0x06): - // print area - // in general, formula looks like this: Foo!$C$7:$J$66,Bar!$A$1:$IV$2 - $ranges = explode(',', $definedName['formula']); // FIXME: what if sheetname contains comma? - - $extractedRanges = array(); - foreach ($ranges as $range) { - // $range should look like one of these - // Foo!$C$7:$J$66 - // Bar!$A$1:$IV$2 - $explodes = explode('!', $range); // FIXME: what if sheetname contains exclamation mark? - $sheetName = trim($explodes[0], "'"); - if (count($explodes) == 2) { - if (strpos($explodes[1], ':') === false) { - $explodes[1] = $explodes[1] . ':' . $explodes[1]; - } - $extractedRanges[] = str_replace('$', '', $explodes[1]); // C7:J66 - } - } - if ($docSheet = $this->phpExcel->getSheetByName($sheetName)) { - $docSheet->getPageSetup()->setPrintArea(implode(',', $extractedRanges)); // C7:J66,A1:IV2 - } - break; - case pack('C', 0x07): - // print titles (repeating rows) - // Assuming BIFF8, there are 3 cases - // 1. repeating rows - // formula looks like this: Sheet!$A$1:$IV$2 - // rows 1-2 repeat - // 2. repeating columns - // formula looks like this: Sheet!$A$1:$B$65536 - // columns A-B repeat - // 3. both repeating rows and repeating columns - // formula looks like this: Sheet!$A$1:$B$65536,Sheet!$A$1:$IV$2 - $ranges = explode(',', $definedName['formula']); // FIXME: what if sheetname contains comma? - foreach ($ranges as $range) { - // $range should look like this one of these - // Sheet!$A$1:$B$65536 - // Sheet!$A$1:$IV$2 - $explodes = explode('!', $range); - if (count($explodes) == 2) { - if ($docSheet = $this->phpExcel->getSheetByName($explodes[0])) { - $extractedRange = $explodes[1]; - $extractedRange = str_replace('$', '', $extractedRange); - - $coordinateStrings = explode(':', $extractedRange); - if (count($coordinateStrings) == 2) { - list($firstColumn, $firstRow) = PHPExcel_Cell::coordinateFromString($coordinateStrings[0]); - list($lastColumn, $lastRow) = PHPExcel_Cell::coordinateFromString($coordinateStrings[1]); - - if ($firstColumn == 'A' and $lastColumn == 'IV') { - // then we have repeating rows - $docSheet->getPageSetup()->setRowsToRepeatAtTop(array($firstRow, $lastRow)); - } elseif ($firstRow == 1 and $lastRow == 65536) { - // then we have repeating columns - $docSheet->getPageSetup()->setColumnsToRepeatAtLeft(array($firstColumn, $lastColumn)); - } - } - } - } - } - break; - } - } else { - // Extract range - $explodes = explode('!', $definedName['formula']); - - if (count($explodes) == 2) { - if (($docSheet = $this->phpExcel->getSheetByName($explodes[0])) || - ($docSheet = $this->phpExcel->getSheetByName(trim($explodes[0], "'")))) { - $extractedRange = $explodes[1]; - $extractedRange = str_replace('$', '', $extractedRange); - - $localOnly = ($definedName['scope'] == 0) ? false : true; - - $scope = ($definedName['scope'] == 0) ? null : $this->phpExcel->getSheetByName($this->sheets[$definedName['scope'] - 1]['name']); - - $this->phpExcel->addNamedRange(new PHPExcel_NamedRange((string)$definedName['name'], $docSheet, $extractedRange, $localOnly, $scope)); - } - } else { - // Named Value - // TODO Provide support for named values - } - } - } - $this->data = null; - - return $this->phpExcel; - } - - /** - * Read record data from stream, decrypting as required - * - * @param string $data Data stream to read from - * @param int $pos Position to start reading from - * @param int $length Record data length - * - * @return string Record data - */ - private function readRecordData($data, $pos, $len) - { - $data = substr($data, $pos, $len); - - // File not encrypted, or record before encryption start point - if ($this->encryption == self::MS_BIFF_CRYPTO_NONE || $pos < $this->encryptionStartPos) { - return $data; - } - - $recordData = ''; - if ($this->encryption == self::MS_BIFF_CRYPTO_RC4) { - $oldBlock = floor($this->rc4Pos / self::REKEY_BLOCK); - $block = floor($pos / self::REKEY_BLOCK); - $endBlock = floor(($pos + $len) / self::REKEY_BLOCK); - - // Spin an RC4 decryptor to the right spot. If we have a decryptor sitting - // at a point earlier in the current block, re-use it as we can save some time. - if ($block != $oldBlock || $pos < $this->rc4Pos || !$this->rc4Key) { - $this->rc4Key = $this->makeKey($block, $this->md5Ctxt); - $step = $pos % self::REKEY_BLOCK; - } else { - $step = $pos - $this->rc4Pos; - } - $this->rc4Key->RC4(str_repeat("\0", $step)); - - // Decrypt record data (re-keying at the end of every block) - while ($block != $endBlock) { - $step = self::REKEY_BLOCK - ($pos % self::REKEY_BLOCK); - $recordData .= $this->rc4Key->RC4(substr($data, 0, $step)); - $data = substr($data, $step); - $pos += $step; - $len -= $step; - $block++; - $this->rc4Key = $this->makeKey($block, $this->md5Ctxt); - } - $recordData .= $this->rc4Key->RC4(substr($data, 0, $len)); - - // Keep track of the position of this decryptor. - // We'll try and re-use it later if we can to speed things up - $this->rc4Pos = $pos + $len; - } elseif ($this->encryption == self::MS_BIFF_CRYPTO_XOR) { - throw new PHPExcel_Reader_Exception('XOr encryption not supported'); - } - return $recordData; - } - - /** - * Use OLE reader to extract the relevant data streams from the OLE file - * - * @param string $pFilename - */ - private function loadOLE($pFilename) - { - // OLE reader - $ole = new PHPExcel_Shared_OLERead(); - // get excel data, - $res = $ole->read($pFilename); - // Get workbook data: workbook stream + sheet streams - $this->data = $ole->getStream($ole->wrkbook); - // Get summary information data - $this->summaryInformation = $ole->getStream($ole->summaryInformation); - // Get additional document summary information data - $this->documentSummaryInformation = $ole->getStream($ole->documentSummaryInformation); - // Get user-defined property data -// $this->userDefinedProperties = $ole->getUserDefinedProperties(); - } - - - /** - * Read summary information - */ - private function readSummaryInformation() - { - if (!isset($this->summaryInformation)) { - return; - } - - // offset: 0; size: 2; must be 0xFE 0xFF (UTF-16 LE byte order mark) - // offset: 2; size: 2; - // offset: 4; size: 2; OS version - // offset: 6; size: 2; OS indicator - // offset: 8; size: 16 - // offset: 24; size: 4; section count - $secCount = self::getInt4d($this->summaryInformation, 24); - - // offset: 28; size: 16; first section's class id: e0 85 9f f2 f9 4f 68 10 ab 91 08 00 2b 27 b3 d9 - // offset: 44; size: 4 - $secOffset = self::getInt4d($this->summaryInformation, 44); - - // section header - // offset: $secOffset; size: 4; section length - $secLength = self::getInt4d($this->summaryInformation, $secOffset); - - // offset: $secOffset+4; size: 4; property count - $countProperties = self::getInt4d($this->summaryInformation, $secOffset+4); - - // initialize code page (used to resolve string values) - $codePage = 'CP1252'; - - // offset: ($secOffset+8); size: var - // loop through property decarations and properties - for ($i = 0; $i < $countProperties; ++$i) { - // offset: ($secOffset+8) + (8 * $i); size: 4; property ID - $id = self::getInt4d($this->summaryInformation, ($secOffset+8) + (8 * $i)); - - // Use value of property id as appropriate - // offset: ($secOffset+12) + (8 * $i); size: 4; offset from beginning of section (48) - $offset = self::getInt4d($this->summaryInformation, ($secOffset+12) + (8 * $i)); - - $type = self::getInt4d($this->summaryInformation, $secOffset + $offset); - - // initialize property value - $value = null; - - // extract property value based on property type - switch ($type) { - case 0x02: // 2 byte signed integer - $value = self::getInt2d($this->summaryInformation, $secOffset + 4 + $offset); - break; - case 0x03: // 4 byte signed integer - $value = self::getInt4d($this->summaryInformation, $secOffset + 4 + $offset); - break; - case 0x13: // 4 byte unsigned integer - // not needed yet, fix later if necessary - break; - case 0x1E: // null-terminated string prepended by dword string length - $byteLength = self::getInt4d($this->summaryInformation, $secOffset + 4 + $offset); - $value = substr($this->summaryInformation, $secOffset + 8 + $offset, $byteLength); - $value = PHPExcel_Shared_String::ConvertEncoding($value, 'UTF-8', $codePage); - $value = rtrim($value); - break; - case 0x40: // Filetime (64-bit value representing the number of 100-nanosecond intervals since January 1, 1601) - // PHP-time - $value = PHPExcel_Shared_OLE::OLE2LocalDate(substr($this->summaryInformation, $secOffset + 4 + $offset, 8)); - break; - case 0x47: // Clipboard format - // not needed yet, fix later if necessary - break; - } - - switch ($id) { - case 0x01: // Code Page - $codePage = PHPExcel_Shared_CodePage::NumberToName($value); - break; - case 0x02: // Title - $this->phpExcel->getProperties()->setTitle($value); - break; - case 0x03: // Subject - $this->phpExcel->getProperties()->setSubject($value); - break; - case 0x04: // Author (Creator) - $this->phpExcel->getProperties()->setCreator($value); - break; - case 0x05: // Keywords - $this->phpExcel->getProperties()->setKeywords($value); - break; - case 0x06: // Comments (Description) - $this->phpExcel->getProperties()->setDescription($value); - break; - case 0x07: // Template - // Not supported by PHPExcel - break; - case 0x08: // Last Saved By (LastModifiedBy) - $this->phpExcel->getProperties()->setLastModifiedBy($value); - break; - case 0x09: // Revision - // Not supported by PHPExcel - break; - case 0x0A: // Total Editing Time - // Not supported by PHPExcel - break; - case 0x0B: // Last Printed - // Not supported by PHPExcel - break; - case 0x0C: // Created Date/Time - $this->phpExcel->getProperties()->setCreated($value); - break; - case 0x0D: // Modified Date/Time - $this->phpExcel->getProperties()->setModified($value); - break; - case 0x0E: // Number of Pages - // Not supported by PHPExcel - break; - case 0x0F: // Number of Words - // Not supported by PHPExcel - break; - case 0x10: // Number of Characters - // Not supported by PHPExcel - break; - case 0x11: // Thumbnail - // Not supported by PHPExcel - break; - case 0x12: // Name of creating application - // Not supported by PHPExcel - break; - case 0x13: // Security - // Not supported by PHPExcel - break; - } - } - } - - - /** - * Read additional document summary information - */ - private function readDocumentSummaryInformation() - { - if (!isset($this->documentSummaryInformation)) { - return; - } - - // offset: 0; size: 2; must be 0xFE 0xFF (UTF-16 LE byte order mark) - // offset: 2; size: 2; - // offset: 4; size: 2; OS version - // offset: 6; size: 2; OS indicator - // offset: 8; size: 16 - // offset: 24; size: 4; section count - $secCount = self::getInt4d($this->documentSummaryInformation, 24); -// echo '$secCount = ', $secCount,'
    '; - - // offset: 28; size: 16; first section's class id: 02 d5 cd d5 9c 2e 1b 10 93 97 08 00 2b 2c f9 ae - // offset: 44; size: 4; first section offset - $secOffset = self::getInt4d($this->documentSummaryInformation, 44); -// echo '$secOffset = ', $secOffset,'
    '; - - // section header - // offset: $secOffset; size: 4; section length - $secLength = self::getInt4d($this->documentSummaryInformation, $secOffset); -// echo '$secLength = ', $secLength,'
    '; - - // offset: $secOffset+4; size: 4; property count - $countProperties = self::getInt4d($this->documentSummaryInformation, $secOffset+4); -// echo '$countProperties = ', $countProperties,'
    '; - - // initialize code page (used to resolve string values) - $codePage = 'CP1252'; - - // offset: ($secOffset+8); size: var - // loop through property decarations and properties - for ($i = 0; $i < $countProperties; ++$i) { -// echo 'Property ', $i,'
    '; - // offset: ($secOffset+8) + (8 * $i); size: 4; property ID - $id = self::getInt4d($this->documentSummaryInformation, ($secOffset+8) + (8 * $i)); -// echo 'ID is ', $id,'
    '; - - // Use value of property id as appropriate - // offset: 60 + 8 * $i; size: 4; offset from beginning of section (48) - $offset = self::getInt4d($this->documentSummaryInformation, ($secOffset+12) + (8 * $i)); - - $type = self::getInt4d($this->documentSummaryInformation, $secOffset + $offset); -// echo 'Type is ', $type,', '; - - // initialize property value - $value = null; - - // extract property value based on property type - switch ($type) { - case 0x02: // 2 byte signed integer - $value = self::getInt2d($this->documentSummaryInformation, $secOffset + 4 + $offset); - break; - case 0x03: // 4 byte signed integer - $value = self::getInt4d($this->documentSummaryInformation, $secOffset + 4 + $offset); - break; - case 0x0B: // Boolean - $value = self::getInt2d($this->documentSummaryInformation, $secOffset + 4 + $offset); - $value = ($value == 0 ? false : true); - break; - case 0x13: // 4 byte unsigned integer - // not needed yet, fix later if necessary - break; - case 0x1E: // null-terminated string prepended by dword string length - $byteLength = self::getInt4d($this->documentSummaryInformation, $secOffset + 4 + $offset); - $value = substr($this->documentSummaryInformation, $secOffset + 8 + $offset, $byteLength); - $value = PHPExcel_Shared_String::ConvertEncoding($value, 'UTF-8', $codePage); - $value = rtrim($value); - break; - case 0x40: // Filetime (64-bit value representing the number of 100-nanosecond intervals since January 1, 1601) - // PHP-Time - $value = PHPExcel_Shared_OLE::OLE2LocalDate(substr($this->documentSummaryInformation, $secOffset + 4 + $offset, 8)); - break; - case 0x47: // Clipboard format - // not needed yet, fix later if necessary - break; - } - - switch ($id) { - case 0x01: // Code Page - $codePage = PHPExcel_Shared_CodePage::NumberToName($value); - break; - case 0x02: // Category - $this->phpExcel->getProperties()->setCategory($value); - break; - case 0x03: // Presentation Target - // Not supported by PHPExcel - break; - case 0x04: // Bytes - // Not supported by PHPExcel - break; - case 0x05: // Lines - // Not supported by PHPExcel - break; - case 0x06: // Paragraphs - // Not supported by PHPExcel - break; - case 0x07: // Slides - // Not supported by PHPExcel - break; - case 0x08: // Notes - // Not supported by PHPExcel - break; - case 0x09: // Hidden Slides - // Not supported by PHPExcel - break; - case 0x0A: // MM Clips - // Not supported by PHPExcel - break; - case 0x0B: // Scale Crop - // Not supported by PHPExcel - break; - case 0x0C: // Heading Pairs - // Not supported by PHPExcel - break; - case 0x0D: // Titles of Parts - // Not supported by PHPExcel - break; - case 0x0E: // Manager - $this->phpExcel->getProperties()->setManager($value); - break; - case 0x0F: // Company - $this->phpExcel->getProperties()->setCompany($value); - break; - case 0x10: // Links up-to-date - // Not supported by PHPExcel - break; - } - } - } - - - /** - * Reads a general type of BIFF record. Does nothing except for moving stream pointer forward to next record. - */ - private function readDefault() - { - $length = self::getInt2d($this->data, $this->pos + 2); -// $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - } - - - /** - * The NOTE record specifies a comment associated with a particular cell. In Excel 95 (BIFF7) and earlier versions, - * this record stores a note (cell note). This feature was significantly enhanced in Excel 97. - */ - private function readNote() - { -// echo 'Read Cell Annotation
    '; - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - if ($this->readDataOnly) { - return; - } - - $cellAddress = $this->readBIFF8CellAddress(substr($recordData, 0, 4)); - if ($this->version == self::XLS_BIFF8) { - $noteObjID = self::getInt2d($recordData, 6); - $noteAuthor = self::readUnicodeStringLong(substr($recordData, 8)); - $noteAuthor = $noteAuthor['value']; -// echo 'Note Address=', $cellAddress,'
    '; -// echo 'Note Object ID=', $noteObjID,'
    '; -// echo 'Note Author=', $noteAuthor,'
    '; -// - $this->cellNotes[$noteObjID] = array( - 'cellRef' => $cellAddress, - 'objectID' => $noteObjID, - 'author' => $noteAuthor - ); - } else { - $extension = false; - if ($cellAddress == '$B$65536') { - // If the address row is -1 and the column is 0, (which translates as $B$65536) then this is a continuation - // note from the previous cell annotation. We're not yet handling this, so annotations longer than the - // max 2048 bytes will probably throw a wobbly. - $row = self::getInt2d($recordData, 0); - $extension = true; - $cellAddress = array_pop(array_keys($this->phpSheet->getComments())); - } -// echo 'Note Address=', $cellAddress,'
    '; - - $cellAddress = str_replace('$', '', $cellAddress); - $noteLength = self::getInt2d($recordData, 4); - $noteText = trim(substr($recordData, 6)); -// echo 'Note Length=', $noteLength,'
    '; -// echo 'Note Text=', $noteText,'
    '; - - if ($extension) { - // Concatenate this extension with the currently set comment for the cell - $comment = $this->phpSheet->getComment($cellAddress); - $commentText = $comment->getText()->getPlainText(); - $comment->setText($this->parseRichText($commentText.$noteText)); - } else { - // Set comment for the cell - $this->phpSheet->getComment($cellAddress)->setText($this->parseRichText($noteText)); -// ->setAuthor($author) - } - } - - } - - - /** - * The TEXT Object record contains the text associated with a cell annotation. - */ - private function readTextObject() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - if ($this->readDataOnly) { - return; - } - - // recordData consists of an array of subrecords looking like this: - // grbit: 2 bytes; Option Flags - // rot: 2 bytes; rotation - // cchText: 2 bytes; length of the text (in the first continue record) - // cbRuns: 2 bytes; length of the formatting (in the second continue record) - // followed by the continuation records containing the actual text and formatting - $grbitOpts = self::getInt2d($recordData, 0); - $rot = self::getInt2d($recordData, 2); - $cchText = self::getInt2d($recordData, 10); - $cbRuns = self::getInt2d($recordData, 12); - $text = $this->getSplicedRecordData(); - - $this->textObjects[$this->textObjRef] = array( - 'text' => substr($text["recordData"], $text["spliceOffsets"][0]+1, $cchText), - 'format' => substr($text["recordData"], $text["spliceOffsets"][1], $cbRuns), - 'alignment' => $grbitOpts, - 'rotation' => $rot - ); - -// echo '_readTextObject()
    '; -// var_dump($this->textObjects[$this->textObjRef]); -// echo '
    '; - } - - - /** - * Read BOF - */ - private function readBof() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = substr($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - // offset: 2; size: 2; type of the following data - $substreamType = self::getInt2d($recordData, 2); - - switch ($substreamType) { - case self::XLS_WorkbookGlobals: - $version = self::getInt2d($recordData, 0); - if (($version != self::XLS_BIFF8) && ($version != self::XLS_BIFF7)) { - throw new PHPExcel_Reader_Exception('Cannot read this Excel file. Version is too old.'); - } - $this->version = $version; - break; - case self::XLS_Worksheet: - // do not use this version information for anything - // it is unreliable (OpenOffice doc, 5.8), use only version information from the global stream - break; - default: - // substream, e.g. chart - // just skip the entire substream - do { - $code = self::getInt2d($this->data, $this->pos); - $this->readDefault(); - } while ($code != self::XLS_TYPE_EOF && $this->pos < $this->dataSize); - break; - } - } - - - /** - * FILEPASS - * - * This record is part of the File Protection Block. It - * contains information about the read/write password of the - * file. All record contents following this record will be - * encrypted. - * - * -- "OpenOffice.org's Documentation of the Microsoft - * Excel File Format" - * - * The decryption functions and objects used from here on in - * are based on the source of Spreadsheet-ParseExcel: - * http://search.cpan.org/~jmcnamara/Spreadsheet-ParseExcel/ - */ - private function readFilepass() - { - $length = self::getInt2d($this->data, $this->pos + 2); - - if ($length != 54) { - throw new PHPExcel_Reader_Exception('Unexpected file pass record length'); - } - - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - if (!$this->verifyPassword('VelvetSweatshop', substr($recordData, 6, 16), substr($recordData, 22, 16), substr($recordData, 38, 16), $this->md5Ctxt)) { - throw new PHPExcel_Reader_Exception('Decryption password incorrect'); - } - - $this->encryption = self::MS_BIFF_CRYPTO_RC4; - - // Decryption required from the record after next onwards - $this->encryptionStartPos = $this->pos + self::getInt2d($this->data, $this->pos + 2); - } - - /** - * Make an RC4 decryptor for the given block - * - * @var int $block Block for which to create decrypto - * @var string $valContext MD5 context state - * - * @return PHPExcel_Reader_Excel5_RC4 - */ - private function makeKey($block, $valContext) - { - $pwarray = str_repeat("\0", 64); - - for ($i = 0; $i < 5; $i++) { - $pwarray[$i] = $valContext[$i]; - } - - $pwarray[5] = chr($block & 0xff); - $pwarray[6] = chr(($block >> 8) & 0xff); - $pwarray[7] = chr(($block >> 16) & 0xff); - $pwarray[8] = chr(($block >> 24) & 0xff); - - $pwarray[9] = "\x80"; - $pwarray[56] = "\x48"; - - $md5 = new PHPExcel_Reader_Excel5_MD5(); - $md5->add($pwarray); - - $s = $md5->getContext(); - return new PHPExcel_Reader_Excel5_RC4($s); - } - - /** - * Verify RC4 file password - * - * @var string $password Password to check - * @var string $docid Document id - * @var string $salt_data Salt data - * @var string $hashedsalt_data Hashed salt data - * @var string &$valContext Set to the MD5 context of the value - * - * @return bool Success - */ - private function verifyPassword($password, $docid, $salt_data, $hashedsalt_data, &$valContext) - { - $pwarray = str_repeat("\0", 64); - - for ($i = 0; $i < strlen($password); $i++) { - $o = ord(substr($password, $i, 1)); - $pwarray[2 * $i] = chr($o & 0xff); - $pwarray[2 * $i + 1] = chr(($o >> 8) & 0xff); - } - $pwarray[2 * $i] = chr(0x80); - $pwarray[56] = chr(($i << 4) & 0xff); - - $md5 = new PHPExcel_Reader_Excel5_MD5(); - $md5->add($pwarray); - - $mdContext1 = $md5->getContext(); - - $offset = 0; - $keyoffset = 0; - $tocopy = 5; - - $md5->reset(); - - while ($offset != 16) { - if ((64 - $offset) < 5) { - $tocopy = 64 - $offset; - } - for ($i = 0; $i <= $tocopy; $i++) { - $pwarray[$offset + $i] = $mdContext1[$keyoffset + $i]; - } - $offset += $tocopy; - - if ($offset == 64) { - $md5->add($pwarray); - $keyoffset = $tocopy; - $tocopy = 5 - $tocopy; - $offset = 0; - continue; - } - - $keyoffset = 0; - $tocopy = 5; - for ($i = 0; $i < 16; $i++) { - $pwarray[$offset + $i] = $docid[$i]; - } - $offset += 16; - } - - $pwarray[16] = "\x80"; - for ($i = 0; $i < 47; $i++) { - $pwarray[17 + $i] = "\0"; - } - $pwarray[56] = "\x80"; - $pwarray[57] = "\x0a"; - - $md5->add($pwarray); - $valContext = $md5->getContext(); - - $key = $this->makeKey(0, $valContext); - - $salt = $key->RC4($salt_data); - $hashedsalt = $key->RC4($hashedsalt_data); - - $salt .= "\x80" . str_repeat("\0", 47); - $salt[56] = "\x80"; - - $md5->reset(); - $md5->add($salt); - $mdContext2 = $md5->getContext(); - - return $mdContext2 == $hashedsalt; - } - - /** - * CODEPAGE - * - * This record stores the text encoding used to write byte - * strings, stored as MS Windows code page identifier. - * - * -- "OpenOffice.org's Documentation of the Microsoft - * Excel File Format" - */ - private function readCodepage() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - // offset: 0; size: 2; code page identifier - $codepage = self::getInt2d($recordData, 0); - - $this->codepage = PHPExcel_Shared_CodePage::NumberToName($codepage); - } - - - /** - * DATEMODE - * - * This record specifies the base date for displaying date - * values. All dates are stored as count of days past this - * base date. In BIFF2-BIFF4 this record is part of the - * Calculation Settings Block. In BIFF5-BIFF8 it is - * stored in the Workbook Globals Substream. - * - * -- "OpenOffice.org's Documentation of the Microsoft - * Excel File Format" - */ - private function readDateMode() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - // offset: 0; size: 2; 0 = base 1900, 1 = base 1904 - PHPExcel_Shared_Date::setExcelCalendar(PHPExcel_Shared_Date::CALENDAR_WINDOWS_1900); - if (ord($recordData{0}) == 1) { - PHPExcel_Shared_Date::setExcelCalendar(PHPExcel_Shared_Date::CALENDAR_MAC_1904); - } - } - - - /** - * Read a FONT record - */ - private function readFont() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - if (!$this->readDataOnly) { - $objFont = new PHPExcel_Style_Font(); - - // offset: 0; size: 2; height of the font (in twips = 1/20 of a point) - $size = self::getInt2d($recordData, 0); - $objFont->setSize($size / 20); - - // offset: 2; size: 2; option flags - // bit: 0; mask 0x0001; bold (redundant in BIFF5-BIFF8) - // bit: 1; mask 0x0002; italic - $isItalic = (0x0002 & self::getInt2d($recordData, 2)) >> 1; - if ($isItalic) { - $objFont->setItalic(true); - } - - // bit: 2; mask 0x0004; underlined (redundant in BIFF5-BIFF8) - // bit: 3; mask 0x0008; strike - $isStrike = (0x0008 & self::getInt2d($recordData, 2)) >> 3; - if ($isStrike) { - $objFont->setStrikethrough(true); - } - - // offset: 4; size: 2; colour index - $colorIndex = self::getInt2d($recordData, 4); - $objFont->colorIndex = $colorIndex; - - // offset: 6; size: 2; font weight - $weight = self::getInt2d($recordData, 6); - switch ($weight) { - case 0x02BC: - $objFont->setBold(true); - break; - } - - // offset: 8; size: 2; escapement type - $escapement = self::getInt2d($recordData, 8); - switch ($escapement) { - case 0x0001: - $objFont->setSuperScript(true); - break; - case 0x0002: - $objFont->setSubScript(true); - break; - } - - // offset: 10; size: 1; underline type - $underlineType = ord($recordData{10}); - switch ($underlineType) { - case 0x00: - break; // no underline - case 0x01: - $objFont->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE); - break; - case 0x02: - $objFont->setUnderline(PHPExcel_Style_Font::UNDERLINE_DOUBLE); - break; - case 0x21: - $objFont->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLEACCOUNTING); - break; - case 0x22: - $objFont->setUnderline(PHPExcel_Style_Font::UNDERLINE_DOUBLEACCOUNTING); - break; - } - - // offset: 11; size: 1; font family - // offset: 12; size: 1; character set - // offset: 13; size: 1; not used - // offset: 14; size: var; font name - if ($this->version == self::XLS_BIFF8) { - $string = self::readUnicodeStringShort(substr($recordData, 14)); - } else { - $string = $this->readByteStringShort(substr($recordData, 14)); - } - $objFont->setName($string['value']); - - $this->objFonts[] = $objFont; - } - } - - - /** - * FORMAT - * - * This record contains information about a number format. - * All FORMAT records occur together in a sequential list. - * - * In BIFF2-BIFF4 other records referencing a FORMAT record - * contain a zero-based index into this list. From BIFF5 on - * the FORMAT record contains the index itself that will be - * used by other records. - * - * -- "OpenOffice.org's Documentation of the Microsoft - * Excel File Format" - */ - private function readFormat() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - if (!$this->readDataOnly) { - $indexCode = self::getInt2d($recordData, 0); - - if ($this->version == self::XLS_BIFF8) { - $string = self::readUnicodeStringLong(substr($recordData, 2)); - } else { - // BIFF7 - $string = $this->readByteStringShort(substr($recordData, 2)); - } - - $formatString = $string['value']; - $this->formats[$indexCode] = $formatString; - } - } - - - /** - * XF - Extended Format - * - * This record contains formatting information for cells, rows, columns or styles. - * According to http://support.microsoft.com/kb/147732 there are always at least 15 cell style XF - * and 1 cell XF. - * Inspection of Excel files generated by MS Office Excel shows that XF records 0-14 are cell style XF - * and XF record 15 is a cell XF - * We only read the first cell style XF and skip the remaining cell style XF records - * We read all cell XF records. - * - * -- "OpenOffice.org's Documentation of the Microsoft - * Excel File Format" - */ - private function readXf() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - $objStyle = new PHPExcel_Style(); - - if (!$this->readDataOnly) { - // offset: 0; size: 2; Index to FONT record - if (self::getInt2d($recordData, 0) < 4) { - $fontIndex = self::getInt2d($recordData, 0); - } else { - // this has to do with that index 4 is omitted in all BIFF versions for some strange reason - // check the OpenOffice documentation of the FONT record - $fontIndex = self::getInt2d($recordData, 0) - 1; - } - $objStyle->setFont($this->objFonts[$fontIndex]); - - // offset: 2; size: 2; Index to FORMAT record - $numberFormatIndex = self::getInt2d($recordData, 2); - if (isset($this->formats[$numberFormatIndex])) { - // then we have user-defined format code - $numberformat = array('code' => $this->formats[$numberFormatIndex]); - } elseif (($code = PHPExcel_Style_NumberFormat::builtInFormatCode($numberFormatIndex)) !== '') { - // then we have built-in format code - $numberformat = array('code' => $code); - } else { - // we set the general format code - $numberformat = array('code' => 'General'); - } - $objStyle->getNumberFormat()->setFormatCode($numberformat['code']); - - // offset: 4; size: 2; XF type, cell protection, and parent style XF - // bit 2-0; mask 0x0007; XF_TYPE_PROT - $xfTypeProt = self::getInt2d($recordData, 4); - // bit 0; mask 0x01; 1 = cell is locked - $isLocked = (0x01 & $xfTypeProt) >> 0; - $objStyle->getProtection()->setLocked($isLocked ? PHPExcel_Style_Protection::PROTECTION_INHERIT : PHPExcel_Style_Protection::PROTECTION_UNPROTECTED); - - // bit 1; mask 0x02; 1 = Formula is hidden - $isHidden = (0x02 & $xfTypeProt) >> 1; - $objStyle->getProtection()->setHidden($isHidden ? PHPExcel_Style_Protection::PROTECTION_PROTECTED : PHPExcel_Style_Protection::PROTECTION_UNPROTECTED); - - // bit 2; mask 0x04; 0 = Cell XF, 1 = Cell Style XF - $isCellStyleXf = (0x04 & $xfTypeProt) >> 2; - - // offset: 6; size: 1; Alignment and text break - // bit 2-0, mask 0x07; horizontal alignment - $horAlign = (0x07 & ord($recordData{6})) >> 0; - switch ($horAlign) { - case 0: - $objStyle->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_GENERAL); - break; - case 1: - $objStyle->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT); - break; - case 2: - $objStyle->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); - break; - case 3: - $objStyle->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); - break; - case 4: - $objStyle->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_FILL); - break; - case 5: - $objStyle->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY); - break; - case 6: - $objStyle->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER_CONTINUOUS); - break; - } - // bit 3, mask 0x08; wrap text - $wrapText = (0x08 & ord($recordData{6})) >> 3; - switch ($wrapText) { - case 0: - $objStyle->getAlignment()->setWrapText(false); - break; - case 1: - $objStyle->getAlignment()->setWrapText(true); - break; - } - // bit 6-4, mask 0x70; vertical alignment - $vertAlign = (0x70 & ord($recordData{6})) >> 4; - switch ($vertAlign) { - case 0: - $objStyle->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_TOP); - break; - case 1: - $objStyle->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); - break; - case 2: - $objStyle->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_BOTTOM); - break; - case 3: - $objStyle->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_JUSTIFY); - break; - } - - if ($this->version == self::XLS_BIFF8) { - // offset: 7; size: 1; XF_ROTATION: Text rotation angle - $angle = ord($recordData{7}); - $rotation = 0; - if ($angle <= 90) { - $rotation = $angle; - } elseif ($angle <= 180) { - $rotation = 90 - $angle; - } elseif ($angle == 255) { - $rotation = -165; - } - $objStyle->getAlignment()->setTextRotation($rotation); - - // offset: 8; size: 1; Indentation, shrink to cell size, and text direction - // bit: 3-0; mask: 0x0F; indent level - $indent = (0x0F & ord($recordData{8})) >> 0; - $objStyle->getAlignment()->setIndent($indent); - - // bit: 4; mask: 0x10; 1 = shrink content to fit into cell - $shrinkToFit = (0x10 & ord($recordData{8})) >> 4; - switch ($shrinkToFit) { - case 0: - $objStyle->getAlignment()->setShrinkToFit(false); - break; - case 1: - $objStyle->getAlignment()->setShrinkToFit(true); - break; - } - - // offset: 9; size: 1; Flags used for attribute groups - - // offset: 10; size: 4; Cell border lines and background area - // bit: 3-0; mask: 0x0000000F; left style - if ($bordersLeftStyle = PHPExcel_Reader_Excel5_Style_Border::lookup((0x0000000F & self::getInt4d($recordData, 10)) >> 0)) { - $objStyle->getBorders()->getLeft()->setBorderStyle($bordersLeftStyle); - } - // bit: 7-4; mask: 0x000000F0; right style - if ($bordersRightStyle = PHPExcel_Reader_Excel5_Style_Border::lookup((0x000000F0 & self::getInt4d($recordData, 10)) >> 4)) { - $objStyle->getBorders()->getRight()->setBorderStyle($bordersRightStyle); - } - // bit: 11-8; mask: 0x00000F00; top style - if ($bordersTopStyle = PHPExcel_Reader_Excel5_Style_Border::lookup((0x00000F00 & self::getInt4d($recordData, 10)) >> 8)) { - $objStyle->getBorders()->getTop()->setBorderStyle($bordersTopStyle); - } - // bit: 15-12; mask: 0x0000F000; bottom style - if ($bordersBottomStyle = PHPExcel_Reader_Excel5_Style_Border::lookup((0x0000F000 & self::getInt4d($recordData, 10)) >> 12)) { - $objStyle->getBorders()->getBottom()->setBorderStyle($bordersBottomStyle); - } - // bit: 22-16; mask: 0x007F0000; left color - $objStyle->getBorders()->getLeft()->colorIndex = (0x007F0000 & self::getInt4d($recordData, 10)) >> 16; - - // bit: 29-23; mask: 0x3F800000; right color - $objStyle->getBorders()->getRight()->colorIndex = (0x3F800000 & self::getInt4d($recordData, 10)) >> 23; - - // bit: 30; mask: 0x40000000; 1 = diagonal line from top left to right bottom - $diagonalDown = (0x40000000 & self::getInt4d($recordData, 10)) >> 30 ? true : false; - - // bit: 31; mask: 0x80000000; 1 = diagonal line from bottom left to top right - $diagonalUp = (0x80000000 & self::getInt4d($recordData, 10)) >> 31 ? true : false; - - if ($diagonalUp == false && $diagonalDown == false) { - $objStyle->getBorders()->setDiagonalDirection(PHPExcel_Style_Borders::DIAGONAL_NONE); - } elseif ($diagonalUp == true && $diagonalDown == false) { - $objStyle->getBorders()->setDiagonalDirection(PHPExcel_Style_Borders::DIAGONAL_UP); - } elseif ($diagonalUp == false && $diagonalDown == true) { - $objStyle->getBorders()->setDiagonalDirection(PHPExcel_Style_Borders::DIAGONAL_DOWN); - } elseif ($diagonalUp == true && $diagonalDown == true) { - $objStyle->getBorders()->setDiagonalDirection(PHPExcel_Style_Borders::DIAGONAL_BOTH); - } - - // offset: 14; size: 4; - // bit: 6-0; mask: 0x0000007F; top color - $objStyle->getBorders()->getTop()->colorIndex = (0x0000007F & self::getInt4d($recordData, 14)) >> 0; - - // bit: 13-7; mask: 0x00003F80; bottom color - $objStyle->getBorders()->getBottom()->colorIndex = (0x00003F80 & self::getInt4d($recordData, 14)) >> 7; - - // bit: 20-14; mask: 0x001FC000; diagonal color - $objStyle->getBorders()->getDiagonal()->colorIndex = (0x001FC000 & self::getInt4d($recordData, 14)) >> 14; - - // bit: 24-21; mask: 0x01E00000; diagonal style - if ($bordersDiagonalStyle = PHPExcel_Reader_Excel5_Style_Border::lookup((0x01E00000 & self::getInt4d($recordData, 14)) >> 21)) { - $objStyle->getBorders()->getDiagonal()->setBorderStyle($bordersDiagonalStyle); - } - - // bit: 31-26; mask: 0xFC000000 fill pattern - if ($fillType = PHPExcel_Reader_Excel5_Style_FillPattern::lookup((0xFC000000 & self::getInt4d($recordData, 14)) >> 26)) { - $objStyle->getFill()->setFillType($fillType); - } - // offset: 18; size: 2; pattern and background colour - // bit: 6-0; mask: 0x007F; color index for pattern color - $objStyle->getFill()->startcolorIndex = (0x007F & self::getInt2d($recordData, 18)) >> 0; - - // bit: 13-7; mask: 0x3F80; color index for pattern background - $objStyle->getFill()->endcolorIndex = (0x3F80 & self::getInt2d($recordData, 18)) >> 7; - } else { - // BIFF5 - - // offset: 7; size: 1; Text orientation and flags - $orientationAndFlags = ord($recordData{7}); - - // bit: 1-0; mask: 0x03; XF_ORIENTATION: Text orientation - $xfOrientation = (0x03 & $orientationAndFlags) >> 0; - switch ($xfOrientation) { - case 0: - $objStyle->getAlignment()->setTextRotation(0); - break; - case 1: - $objStyle->getAlignment()->setTextRotation(-165); - break; - case 2: - $objStyle->getAlignment()->setTextRotation(90); - break; - case 3: - $objStyle->getAlignment()->setTextRotation(-90); - break; - } - - // offset: 8; size: 4; cell border lines and background area - $borderAndBackground = self::getInt4d($recordData, 8); - - // bit: 6-0; mask: 0x0000007F; color index for pattern color - $objStyle->getFill()->startcolorIndex = (0x0000007F & $borderAndBackground) >> 0; - - // bit: 13-7; mask: 0x00003F80; color index for pattern background - $objStyle->getFill()->endcolorIndex = (0x00003F80 & $borderAndBackground) >> 7; - - // bit: 21-16; mask: 0x003F0000; fill pattern - $objStyle->getFill()->setFillType(PHPExcel_Reader_Excel5_Style_FillPattern::lookup((0x003F0000 & $borderAndBackground) >> 16)); - - // bit: 24-22; mask: 0x01C00000; bottom line style - $objStyle->getBorders()->getBottom()->setBorderStyle(PHPExcel_Reader_Excel5_Style_Border::lookup((0x01C00000 & $borderAndBackground) >> 22)); - - // bit: 31-25; mask: 0xFE000000; bottom line color - $objStyle->getBorders()->getBottom()->colorIndex = (0xFE000000 & $borderAndBackground) >> 25; - - // offset: 12; size: 4; cell border lines - $borderLines = self::getInt4d($recordData, 12); - - // bit: 2-0; mask: 0x00000007; top line style - $objStyle->getBorders()->getTop()->setBorderStyle(PHPExcel_Reader_Excel5_Style_Border::lookup((0x00000007 & $borderLines) >> 0)); - - // bit: 5-3; mask: 0x00000038; left line style - $objStyle->getBorders()->getLeft()->setBorderStyle(PHPExcel_Reader_Excel5_Style_Border::lookup((0x00000038 & $borderLines) >> 3)); - - // bit: 8-6; mask: 0x000001C0; right line style - $objStyle->getBorders()->getRight()->setBorderStyle(PHPExcel_Reader_Excel5_Style_Border::lookup((0x000001C0 & $borderLines) >> 6)); - - // bit: 15-9; mask: 0x0000FE00; top line color index - $objStyle->getBorders()->getTop()->colorIndex = (0x0000FE00 & $borderLines) >> 9; - - // bit: 22-16; mask: 0x007F0000; left line color index - $objStyle->getBorders()->getLeft()->colorIndex = (0x007F0000 & $borderLines) >> 16; - - // bit: 29-23; mask: 0x3F800000; right line color index - $objStyle->getBorders()->getRight()->colorIndex = (0x3F800000 & $borderLines) >> 23; - } - - // add cellStyleXf or cellXf and update mapping - if ($isCellStyleXf) { - // we only read one style XF record which is always the first - if ($this->xfIndex == 0) { - $this->phpExcel->addCellStyleXf($objStyle); - $this->mapCellStyleXfIndex[$this->xfIndex] = 0; - } - } else { - // we read all cell XF records - $this->phpExcel->addCellXf($objStyle); - $this->mapCellXfIndex[$this->xfIndex] = count($this->phpExcel->getCellXfCollection()) - 1; - } - - // update XF index for when we read next record - ++$this->xfIndex; - } - } - - - /** - * - */ - private function readXfExt() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - if (!$this->readDataOnly) { - // offset: 0; size: 2; 0x087D = repeated header - - // offset: 2; size: 2 - - // offset: 4; size: 8; not used - - // offset: 12; size: 2; record version - - // offset: 14; size: 2; index to XF record which this record modifies - $ixfe = self::getInt2d($recordData, 14); - - // offset: 16; size: 2; not used - - // offset: 18; size: 2; number of extension properties that follow - $cexts = self::getInt2d($recordData, 18); - - // start reading the actual extension data - $offset = 20; - while ($offset < $length) { - // extension type - $extType = self::getInt2d($recordData, $offset); - - // extension length - $cb = self::getInt2d($recordData, $offset + 2); - - // extension data - $extData = substr($recordData, $offset + 4, $cb); - - switch ($extType) { - case 4: // fill start color - $xclfType = self::getInt2d($extData, 0); // color type - $xclrValue = substr($extData, 4, 4); // color value (value based on color type) - - if ($xclfType == 2) { - $rgb = sprintf('%02X%02X%02X', ord($xclrValue{0}), ord($xclrValue{1}), ord($xclrValue{2})); - - // modify the relevant style property - if (isset($this->mapCellXfIndex[$ixfe])) { - $fill = $this->phpExcel->getCellXfByIndex($this->mapCellXfIndex[$ixfe])->getFill(); - $fill->getStartColor()->setRGB($rgb); - unset($fill->startcolorIndex); // normal color index does not apply, discard - } - } - break; - case 5: // fill end color - $xclfType = self::getInt2d($extData, 0); // color type - $xclrValue = substr($extData, 4, 4); // color value (value based on color type) - - if ($xclfType == 2) { - $rgb = sprintf('%02X%02X%02X', ord($xclrValue{0}), ord($xclrValue{1}), ord($xclrValue{2})); - - // modify the relevant style property - if (isset($this->mapCellXfIndex[$ixfe])) { - $fill = $this->phpExcel->getCellXfByIndex($this->mapCellXfIndex[$ixfe])->getFill(); - $fill->getEndColor()->setRGB($rgb); - unset($fill->endcolorIndex); // normal color index does not apply, discard - } - } - break; - case 7: // border color top - $xclfType = self::getInt2d($extData, 0); // color type - $xclrValue = substr($extData, 4, 4); // color value (value based on color type) - - if ($xclfType == 2) { - $rgb = sprintf('%02X%02X%02X', ord($xclrValue{0}), ord($xclrValue{1}), ord($xclrValue{2})); - - // modify the relevant style property - if (isset($this->mapCellXfIndex[$ixfe])) { - $top = $this->phpExcel->getCellXfByIndex($this->mapCellXfIndex[$ixfe])->getBorders()->getTop(); - $top->getColor()->setRGB($rgb); - unset($top->colorIndex); // normal color index does not apply, discard - } - } - break; - case 8: // border color bottom - $xclfType = self::getInt2d($extData, 0); // color type - $xclrValue = substr($extData, 4, 4); // color value (value based on color type) - - if ($xclfType == 2) { - $rgb = sprintf('%02X%02X%02X', ord($xclrValue{0}), ord($xclrValue{1}), ord($xclrValue{2})); - - // modify the relevant style property - if (isset($this->mapCellXfIndex[$ixfe])) { - $bottom = $this->phpExcel->getCellXfByIndex($this->mapCellXfIndex[$ixfe])->getBorders()->getBottom(); - $bottom->getColor()->setRGB($rgb); - unset($bottom->colorIndex); // normal color index does not apply, discard - } - } - break; - case 9: // border color left - $xclfType = self::getInt2d($extData, 0); // color type - $xclrValue = substr($extData, 4, 4); // color value (value based on color type) - - if ($xclfType == 2) { - $rgb = sprintf('%02X%02X%02X', ord($xclrValue{0}), ord($xclrValue{1}), ord($xclrValue{2})); - - // modify the relevant style property - if (isset($this->mapCellXfIndex[$ixfe])) { - $left = $this->phpExcel->getCellXfByIndex($this->mapCellXfIndex[$ixfe])->getBorders()->getLeft(); - $left->getColor()->setRGB($rgb); - unset($left->colorIndex); // normal color index does not apply, discard - } - } - break; - case 10: // border color right - $xclfType = self::getInt2d($extData, 0); // color type - $xclrValue = substr($extData, 4, 4); // color value (value based on color type) - - if ($xclfType == 2) { - $rgb = sprintf('%02X%02X%02X', ord($xclrValue{0}), ord($xclrValue{1}), ord($xclrValue{2})); - - // modify the relevant style property - if (isset($this->mapCellXfIndex[$ixfe])) { - $right = $this->phpExcel->getCellXfByIndex($this->mapCellXfIndex[$ixfe])->getBorders()->getRight(); - $right->getColor()->setRGB($rgb); - unset($right->colorIndex); // normal color index does not apply, discard - } - } - break; - case 11: // border color diagonal - $xclfType = self::getInt2d($extData, 0); // color type - $xclrValue = substr($extData, 4, 4); // color value (value based on color type) - - if ($xclfType == 2) { - $rgb = sprintf('%02X%02X%02X', ord($xclrValue{0}), ord($xclrValue{1}), ord($xclrValue{2})); - - // modify the relevant style property - if (isset($this->mapCellXfIndex[$ixfe])) { - $diagonal = $this->phpExcel->getCellXfByIndex($this->mapCellXfIndex[$ixfe])->getBorders()->getDiagonal(); - $diagonal->getColor()->setRGB($rgb); - unset($diagonal->colorIndex); // normal color index does not apply, discard - } - } - break; - case 13: // font color - $xclfType = self::getInt2d($extData, 0); // color type - $xclrValue = substr($extData, 4, 4); // color value (value based on color type) - - if ($xclfType == 2) { - $rgb = sprintf('%02X%02X%02X', ord($xclrValue{0}), ord($xclrValue{1}), ord($xclrValue{2})); - - // modify the relevant style property - if (isset($this->mapCellXfIndex[$ixfe])) { - $font = $this->phpExcel->getCellXfByIndex($this->mapCellXfIndex[$ixfe])->getFont(); - $font->getColor()->setRGB($rgb); - unset($font->colorIndex); // normal color index does not apply, discard - } - } - break; - } - - $offset += $cb; - } - } - - } - - - /** - * Read STYLE record - */ - private function readStyle() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - if (!$this->readDataOnly) { - // offset: 0; size: 2; index to XF record and flag for built-in style - $ixfe = self::getInt2d($recordData, 0); - - // bit: 11-0; mask 0x0FFF; index to XF record - $xfIndex = (0x0FFF & $ixfe) >> 0; - - // bit: 15; mask 0x8000; 0 = user-defined style, 1 = built-in style - $isBuiltIn = (bool) ((0x8000 & $ixfe) >> 15); - - if ($isBuiltIn) { - // offset: 2; size: 1; identifier for built-in style - $builtInId = ord($recordData{2}); - - switch ($builtInId) { - case 0x00: - // currently, we are not using this for anything - break; - default: - break; - } - } else { - // user-defined; not supported by PHPExcel - } - } - } - - - /** - * Read PALETTE record - */ - private function readPalette() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - if (!$this->readDataOnly) { - // offset: 0; size: 2; number of following colors - $nm = self::getInt2d($recordData, 0); - - // list of RGB colors - for ($i = 0; $i < $nm; ++$i) { - $rgb = substr($recordData, 2 + 4 * $i, 4); - $this->palette[] = self::readRGB($rgb); - } - } - } - - - /** - * SHEET - * - * This record is located in the Workbook Globals - * Substream and represents a sheet inside the workbook. - * One SHEET record is written for each sheet. It stores the - * sheet name and a stream offset to the BOF record of the - * respective Sheet Substream within the Workbook Stream. - * - * -- "OpenOffice.org's Documentation of the Microsoft - * Excel File Format" - */ - private function readSheet() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // offset: 0; size: 4; absolute stream position of the BOF record of the sheet - // NOTE: not encrypted - $rec_offset = self::getInt4d($this->data, $this->pos + 4); - - // move stream pointer to next record - $this->pos += 4 + $length; - - // offset: 4; size: 1; sheet state - switch (ord($recordData{4})) { - case 0x00: - $sheetState = PHPExcel_Worksheet::SHEETSTATE_VISIBLE; - break; - case 0x01: - $sheetState = PHPExcel_Worksheet::SHEETSTATE_HIDDEN; - break; - case 0x02: - $sheetState = PHPExcel_Worksheet::SHEETSTATE_VERYHIDDEN; - break; - default: - $sheetState = PHPExcel_Worksheet::SHEETSTATE_VISIBLE; - break; - } - - // offset: 5; size: 1; sheet type - $sheetType = ord($recordData{5}); - - // offset: 6; size: var; sheet name - if ($this->version == self::XLS_BIFF8) { - $string = self::readUnicodeStringShort(substr($recordData, 6)); - $rec_name = $string['value']; - } elseif ($this->version == self::XLS_BIFF7) { - $string = $this->readByteStringShort(substr($recordData, 6)); - $rec_name = $string['value']; - } - - $this->sheets[] = array( - 'name' => $rec_name, - 'offset' => $rec_offset, - 'sheetState' => $sheetState, - 'sheetType' => $sheetType, - ); - } - - - /** - * Read EXTERNALBOOK record - */ - private function readExternalBook() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - // offset within record data - $offset = 0; - - // there are 4 types of records - if (strlen($recordData) > 4) { - // external reference - // offset: 0; size: 2; number of sheet names ($nm) - $nm = self::getInt2d($recordData, 0); - $offset += 2; - - // offset: 2; size: var; encoded URL without sheet name (Unicode string, 16-bit length) - $encodedUrlString = self::readUnicodeStringLong(substr($recordData, 2)); - $offset += $encodedUrlString['size']; - - // offset: var; size: var; list of $nm sheet names (Unicode strings, 16-bit length) - $externalSheetNames = array(); - for ($i = 0; $i < $nm; ++$i) { - $externalSheetNameString = self::readUnicodeStringLong(substr($recordData, $offset)); - $externalSheetNames[] = $externalSheetNameString['value']; - $offset += $externalSheetNameString['size']; - } - - // store the record data - $this->externalBooks[] = array( - 'type' => 'external', - 'encodedUrl' => $encodedUrlString['value'], - 'externalSheetNames' => $externalSheetNames, - ); - } elseif (substr($recordData, 2, 2) == pack('CC', 0x01, 0x04)) { - // internal reference - // offset: 0; size: 2; number of sheet in this document - // offset: 2; size: 2; 0x01 0x04 - $this->externalBooks[] = array( - 'type' => 'internal', - ); - } elseif (substr($recordData, 0, 4) == pack('vCC', 0x0001, 0x01, 0x3A)) { - // add-in function - // offset: 0; size: 2; 0x0001 - $this->externalBooks[] = array( - 'type' => 'addInFunction', - ); - } elseif (substr($recordData, 0, 2) == pack('v', 0x0000)) { - // DDE links, OLE links - // offset: 0; size: 2; 0x0000 - // offset: 2; size: var; encoded source document name - $this->externalBooks[] = array( - 'type' => 'DDEorOLE', - ); - } - } - - - /** - * Read EXTERNNAME record. - */ - private function readExternName() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - // external sheet references provided for named cells - if ($this->version == self::XLS_BIFF8) { - // offset: 0; size: 2; options - $options = self::getInt2d($recordData, 0); - - // offset: 2; size: 2; - - // offset: 4; size: 2; not used - - // offset: 6; size: var - $nameString = self::readUnicodeStringShort(substr($recordData, 6)); - - // offset: var; size: var; formula data - $offset = 6 + $nameString['size']; - $formula = $this->getFormulaFromStructure(substr($recordData, $offset)); - - $this->externalNames[] = array( - 'name' => $nameString['value'], - 'formula' => $formula, - ); - } - } - - - /** - * Read EXTERNSHEET record - */ - private function readExternSheet() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - // external sheet references provided for named cells - if ($this->version == self::XLS_BIFF8) { - // offset: 0; size: 2; number of following ref structures - $nm = self::getInt2d($recordData, 0); - for ($i = 0; $i < $nm; ++$i) { - $this->ref[] = array( - // offset: 2 + 6 * $i; index to EXTERNALBOOK record - 'externalBookIndex' => self::getInt2d($recordData, 2 + 6 * $i), - // offset: 4 + 6 * $i; index to first sheet in EXTERNALBOOK record - 'firstSheetIndex' => self::getInt2d($recordData, 4 + 6 * $i), - // offset: 6 + 6 * $i; index to last sheet in EXTERNALBOOK record - 'lastSheetIndex' => self::getInt2d($recordData, 6 + 6 * $i), - ); - } - } - } - - - /** - * DEFINEDNAME - * - * This record is part of a Link Table. It contains the name - * and the token array of an internal defined name. Token - * arrays of defined names contain tokens with aberrant - * token classes. - * - * -- "OpenOffice.org's Documentation of the Microsoft - * Excel File Format" - */ - private function readDefinedName() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - if ($this->version == self::XLS_BIFF8) { - // retrieves named cells - - // offset: 0; size: 2; option flags - $opts = self::getInt2d($recordData, 0); - - // bit: 5; mask: 0x0020; 0 = user-defined name, 1 = built-in-name - $isBuiltInName = (0x0020 & $opts) >> 5; - - // offset: 2; size: 1; keyboard shortcut - - // offset: 3; size: 1; length of the name (character count) - $nlen = ord($recordData{3}); - - // offset: 4; size: 2; size of the formula data (it can happen that this is zero) - // note: there can also be additional data, this is not included in $flen - $flen = self::getInt2d($recordData, 4); - - // offset: 8; size: 2; 0=Global name, otherwise index to sheet (1-based) - $scope = self::getInt2d($recordData, 8); - - // offset: 14; size: var; Name (Unicode string without length field) - $string = self::readUnicodeString(substr($recordData, 14), $nlen); - - // offset: var; size: $flen; formula data - $offset = 14 + $string['size']; - $formulaStructure = pack('v', $flen) . substr($recordData, $offset); - - try { - $formula = $this->getFormulaFromStructure($formulaStructure); - } catch (PHPExcel_Exception $e) { - $formula = ''; - } - - $this->definedname[] = array( - 'isBuiltInName' => $isBuiltInName, - 'name' => $string['value'], - 'formula' => $formula, - 'scope' => $scope, - ); - } - } - - - /** - * Read MSODRAWINGGROUP record - */ - private function readMsoDrawingGroup() - { - $length = self::getInt2d($this->data, $this->pos + 2); - - // get spliced record data - $splicedRecordData = $this->getSplicedRecordData(); - $recordData = $splicedRecordData['recordData']; - - $this->drawingGroupData .= $recordData; - } - - - /** - * SST - Shared String Table - * - * This record contains a list of all strings used anywhere - * in the workbook. Each string occurs only once. The - * workbook uses indexes into the list to reference the - * strings. - * - * -- "OpenOffice.org's Documentation of the Microsoft - * Excel File Format" - **/ - private function readSst() - { - // offset within (spliced) record data - $pos = 0; - - // get spliced record data - $splicedRecordData = $this->getSplicedRecordData(); - - $recordData = $splicedRecordData['recordData']; - $spliceOffsets = $splicedRecordData['spliceOffsets']; - - // offset: 0; size: 4; total number of strings in the workbook - $pos += 4; - - // offset: 4; size: 4; number of following strings ($nm) - $nm = self::getInt4d($recordData, 4); - $pos += 4; - - // loop through the Unicode strings (16-bit length) - for ($i = 0; $i < $nm; ++$i) { - // number of characters in the Unicode string - $numChars = self::getInt2d($recordData, $pos); - $pos += 2; - - // option flags - $optionFlags = ord($recordData{$pos}); - ++$pos; - - // bit: 0; mask: 0x01; 0 = compressed; 1 = uncompressed - $isCompressed = (($optionFlags & 0x01) == 0) ; - - // bit: 2; mask: 0x02; 0 = ordinary; 1 = Asian phonetic - $hasAsian = (($optionFlags & 0x04) != 0); - - // bit: 3; mask: 0x03; 0 = ordinary; 1 = Rich-Text - $hasRichText = (($optionFlags & 0x08) != 0); - - if ($hasRichText) { - // number of Rich-Text formatting runs - $formattingRuns = self::getInt2d($recordData, $pos); - $pos += 2; - } - - if ($hasAsian) { - // size of Asian phonetic setting - $extendedRunLength = self::getInt4d($recordData, $pos); - $pos += 4; - } - - // expected byte length of character array if not split - $len = ($isCompressed) ? $numChars : $numChars * 2; - - // look up limit position - foreach ($spliceOffsets as $spliceOffset) { - // it can happen that the string is empty, therefore we need - // <= and not just < - if ($pos <= $spliceOffset) { - $limitpos = $spliceOffset; - break; - } - } - - if ($pos + $len <= $limitpos) { - // character array is not split between records - - $retstr = substr($recordData, $pos, $len); - $pos += $len; - } else { - // character array is split between records - - // first part of character array - $retstr = substr($recordData, $pos, $limitpos - $pos); - - $bytesRead = $limitpos - $pos; - - // remaining characters in Unicode string - $charsLeft = $numChars - (($isCompressed) ? $bytesRead : ($bytesRead / 2)); - - $pos = $limitpos; - - // keep reading the characters - while ($charsLeft > 0) { - // look up next limit position, in case the string span more than one continue record - foreach ($spliceOffsets as $spliceOffset) { - if ($pos < $spliceOffset) { - $limitpos = $spliceOffset; - break; - } - } - - // repeated option flags - // OpenOffice.org documentation 5.21 - $option = ord($recordData{$pos}); - ++$pos; - - if ($isCompressed && ($option == 0)) { - // 1st fragment compressed - // this fragment compressed - $len = min($charsLeft, $limitpos - $pos); - $retstr .= substr($recordData, $pos, $len); - $charsLeft -= $len; - $isCompressed = true; - } elseif (!$isCompressed && ($option != 0)) { - // 1st fragment uncompressed - // this fragment uncompressed - $len = min($charsLeft * 2, $limitpos - $pos); - $retstr .= substr($recordData, $pos, $len); - $charsLeft -= $len / 2; - $isCompressed = false; - } elseif (!$isCompressed && ($option == 0)) { - // 1st fragment uncompressed - // this fragment compressed - $len = min($charsLeft, $limitpos - $pos); - for ($j = 0; $j < $len; ++$j) { - $retstr .= $recordData{$pos + $j} . chr(0); - } - $charsLeft -= $len; - $isCompressed = false; - } else { - // 1st fragment compressed - // this fragment uncompressed - $newstr = ''; - for ($j = 0; $j < strlen($retstr); ++$j) { - $newstr .= $retstr[$j] . chr(0); - } - $retstr = $newstr; - $len = min($charsLeft * 2, $limitpos - $pos); - $retstr .= substr($recordData, $pos, $len); - $charsLeft -= $len / 2; - $isCompressed = false; - } - - $pos += $len; - } - } - - // convert to UTF-8 - $retstr = self::encodeUTF16($retstr, $isCompressed); - - // read additional Rich-Text information, if any - $fmtRuns = array(); - if ($hasRichText) { - // list of formatting runs - for ($j = 0; $j < $formattingRuns; ++$j) { - // first formatted character; zero-based - $charPos = self::getInt2d($recordData, $pos + $j * 4); - - // index to font record - $fontIndex = self::getInt2d($recordData, $pos + 2 + $j * 4); - - $fmtRuns[] = array( - 'charPos' => $charPos, - 'fontIndex' => $fontIndex, - ); - } - $pos += 4 * $formattingRuns; - } - - // read additional Asian phonetics information, if any - if ($hasAsian) { - // For Asian phonetic settings, we skip the extended string data - $pos += $extendedRunLength; - } - - // store the shared sting - $this->sst[] = array( - 'value' => $retstr, - 'fmtRuns' => $fmtRuns, - ); - } - - // getSplicedRecordData() takes care of moving current position in data stream - } - - - /** - * Read PRINTGRIDLINES record - */ - private function readPrintGridlines() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - if ($this->version == self::XLS_BIFF8 && !$this->readDataOnly) { - // offset: 0; size: 2; 0 = do not print sheet grid lines; 1 = print sheet gridlines - $printGridlines = (bool) self::getInt2d($recordData, 0); - $this->phpSheet->setPrintGridlines($printGridlines); - } - } - - - /** - * Read DEFAULTROWHEIGHT record - */ - private function readDefaultRowHeight() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - // offset: 0; size: 2; option flags - // offset: 2; size: 2; default height for unused rows, (twips 1/20 point) - $height = self::getInt2d($recordData, 2); - $this->phpSheet->getDefaultRowDimension()->setRowHeight($height / 20); - } - - - /** - * Read SHEETPR record - */ - private function readSheetPr() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - // offset: 0; size: 2 - - // bit: 6; mask: 0x0040; 0 = outline buttons above outline group - $isSummaryBelow = (0x0040 & self::getInt2d($recordData, 0)) >> 6; - $this->phpSheet->setShowSummaryBelow($isSummaryBelow); - - // bit: 7; mask: 0x0080; 0 = outline buttons left of outline group - $isSummaryRight = (0x0080 & self::getInt2d($recordData, 0)) >> 7; - $this->phpSheet->setShowSummaryRight($isSummaryRight); - - // bit: 8; mask: 0x100; 0 = scale printout in percent, 1 = fit printout to number of pages - // this corresponds to radio button setting in page setup dialog in Excel - $this->isFitToPages = (bool) ((0x0100 & self::getInt2d($recordData, 0)) >> 8); - } - - - /** - * Read HORIZONTALPAGEBREAKS record - */ - private function readHorizontalPageBreaks() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - if ($this->version == self::XLS_BIFF8 && !$this->readDataOnly) { - // offset: 0; size: 2; number of the following row index structures - $nm = self::getInt2d($recordData, 0); - - // offset: 2; size: 6 * $nm; list of $nm row index structures - for ($i = 0; $i < $nm; ++$i) { - $r = self::getInt2d($recordData, 2 + 6 * $i); - $cf = self::getInt2d($recordData, 2 + 6 * $i + 2); - $cl = self::getInt2d($recordData, 2 + 6 * $i + 4); - - // not sure why two column indexes are necessary? - $this->phpSheet->setBreakByColumnAndRow($cf, $r, PHPExcel_Worksheet::BREAK_ROW); - } - } - } - - - /** - * Read VERTICALPAGEBREAKS record - */ - private function readVerticalPageBreaks() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - if ($this->version == self::XLS_BIFF8 && !$this->readDataOnly) { - // offset: 0; size: 2; number of the following column index structures - $nm = self::getInt2d($recordData, 0); - - // offset: 2; size: 6 * $nm; list of $nm row index structures - for ($i = 0; $i < $nm; ++$i) { - $c = self::getInt2d($recordData, 2 + 6 * $i); - $rf = self::getInt2d($recordData, 2 + 6 * $i + 2); - $rl = self::getInt2d($recordData, 2 + 6 * $i + 4); - - // not sure why two row indexes are necessary? - $this->phpSheet->setBreakByColumnAndRow($c, $rf, PHPExcel_Worksheet::BREAK_COLUMN); - } - } - } - - - /** - * Read HEADER record - */ - private function readHeader() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - if (!$this->readDataOnly) { - // offset: 0; size: var - // realized that $recordData can be empty even when record exists - if ($recordData) { - if ($this->version == self::XLS_BIFF8) { - $string = self::readUnicodeStringLong($recordData); - } else { - $string = $this->readByteStringShort($recordData); - } - - $this->phpSheet->getHeaderFooter()->setOddHeader($string['value']); - $this->phpSheet->getHeaderFooter()->setEvenHeader($string['value']); - } - } - } - - - /** - * Read FOOTER record - */ - private function readFooter() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - if (!$this->readDataOnly) { - // offset: 0; size: var - // realized that $recordData can be empty even when record exists - if ($recordData) { - if ($this->version == self::XLS_BIFF8) { - $string = self::readUnicodeStringLong($recordData); - } else { - $string = $this->readByteStringShort($recordData); - } - $this->phpSheet->getHeaderFooter()->setOddFooter($string['value']); - $this->phpSheet->getHeaderFooter()->setEvenFooter($string['value']); - } - } - } - - - /** - * Read HCENTER record - */ - private function readHcenter() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - if (!$this->readDataOnly) { - // offset: 0; size: 2; 0 = print sheet left aligned, 1 = print sheet centered horizontally - $isHorizontalCentered = (bool) self::getInt2d($recordData, 0); - - $this->phpSheet->getPageSetup()->setHorizontalCentered($isHorizontalCentered); - } - } - - - /** - * Read VCENTER record - */ - private function readVcenter() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - if (!$this->readDataOnly) { - // offset: 0; size: 2; 0 = print sheet aligned at top page border, 1 = print sheet vertically centered - $isVerticalCentered = (bool) self::getInt2d($recordData, 0); - - $this->phpSheet->getPageSetup()->setVerticalCentered($isVerticalCentered); - } - } - - - /** - * Read LEFTMARGIN record - */ - private function readLeftMargin() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - if (!$this->readDataOnly) { - // offset: 0; size: 8 - $this->phpSheet->getPageMargins()->setLeft(self::extractNumber($recordData)); - } - } - - - /** - * Read RIGHTMARGIN record - */ - private function readRightMargin() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - if (!$this->readDataOnly) { - // offset: 0; size: 8 - $this->phpSheet->getPageMargins()->setRight(self::extractNumber($recordData)); - } - } - - - /** - * Read TOPMARGIN record - */ - private function readTopMargin() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - if (!$this->readDataOnly) { - // offset: 0; size: 8 - $this->phpSheet->getPageMargins()->setTop(self::extractNumber($recordData)); - } - } - - - /** - * Read BOTTOMMARGIN record - */ - private function readBottomMargin() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - if (!$this->readDataOnly) { - // offset: 0; size: 8 - $this->phpSheet->getPageMargins()->setBottom(self::extractNumber($recordData)); - } - } - - - /** - * Read PAGESETUP record - */ - private function readPageSetup() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - if (!$this->readDataOnly) { - // offset: 0; size: 2; paper size - $paperSize = self::getInt2d($recordData, 0); - - // offset: 2; size: 2; scaling factor - $scale = self::getInt2d($recordData, 2); - - // offset: 6; size: 2; fit worksheet width to this number of pages, 0 = use as many as needed - $fitToWidth = self::getInt2d($recordData, 6); - - // offset: 8; size: 2; fit worksheet height to this number of pages, 0 = use as many as needed - $fitToHeight = self::getInt2d($recordData, 8); - - // offset: 10; size: 2; option flags - - // bit: 1; mask: 0x0002; 0=landscape, 1=portrait - $isPortrait = (0x0002 & self::getInt2d($recordData, 10)) >> 1; - - // bit: 2; mask: 0x0004; 1= paper size, scaling factor, paper orient. not init - // when this bit is set, do not use flags for those properties - $isNotInit = (0x0004 & self::getInt2d($recordData, 10)) >> 2; - - if (!$isNotInit) { - $this->phpSheet->getPageSetup()->setPaperSize($paperSize); - switch ($isPortrait) { - case 0: - $this->phpSheet->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE); - break; - case 1: - $this->phpSheet->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT); - break; - } - - $this->phpSheet->getPageSetup()->setScale($scale, false); - $this->phpSheet->getPageSetup()->setFitToPage((bool) $this->isFitToPages); - $this->phpSheet->getPageSetup()->setFitToWidth($fitToWidth, false); - $this->phpSheet->getPageSetup()->setFitToHeight($fitToHeight, false); - } - - // offset: 16; size: 8; header margin (IEEE 754 floating-point value) - $marginHeader = self::extractNumber(substr($recordData, 16, 8)); - $this->phpSheet->getPageMargins()->setHeader($marginHeader); - - // offset: 24; size: 8; footer margin (IEEE 754 floating-point value) - $marginFooter = self::extractNumber(substr($recordData, 24, 8)); - $this->phpSheet->getPageMargins()->setFooter($marginFooter); - } - } - - - /** - * PROTECT - Sheet protection (BIFF2 through BIFF8) - * if this record is omitted, then it also means no sheet protection - */ - private function readProtect() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - if ($this->readDataOnly) { - return; - } - - // offset: 0; size: 2; - - // bit 0, mask 0x01; 1 = sheet is protected - $bool = (0x01 & self::getInt2d($recordData, 0)) >> 0; - $this->phpSheet->getProtection()->setSheet((bool)$bool); - } - - - /** - * SCENPROTECT - */ - private function readScenProtect() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - if ($this->readDataOnly) { - return; - } - - // offset: 0; size: 2; - - // bit: 0, mask 0x01; 1 = scenarios are protected - $bool = (0x01 & self::getInt2d($recordData, 0)) >> 0; - - $this->phpSheet->getProtection()->setScenarios((bool)$bool); - } - - - /** - * OBJECTPROTECT - */ - private function readObjectProtect() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - if ($this->readDataOnly) { - return; - } - - // offset: 0; size: 2; - - // bit: 0, mask 0x01; 1 = objects are protected - $bool = (0x01 & self::getInt2d($recordData, 0)) >> 0; - - $this->phpSheet->getProtection()->setObjects((bool)$bool); - } - - - /** - * PASSWORD - Sheet protection (hashed) password (BIFF2 through BIFF8) - */ - private function readPassword() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - if (!$this->readDataOnly) { - // offset: 0; size: 2; 16-bit hash value of password - $password = strtoupper(dechex(self::getInt2d($recordData, 0))); // the hashed password - $this->phpSheet->getProtection()->setPassword($password, true); - } - } - - - /** - * Read DEFCOLWIDTH record - */ - private function readDefColWidth() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - // offset: 0; size: 2; default column width - $width = self::getInt2d($recordData, 0); - if ($width != 8) { - $this->phpSheet->getDefaultColumnDimension()->setWidth($width); - } - } - - - /** - * Read COLINFO record - */ - private function readColInfo() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - if (!$this->readDataOnly) { - // offset: 0; size: 2; index to first column in range - $fc = self::getInt2d($recordData, 0); // first column index - - // offset: 2; size: 2; index to last column in range - $lc = self::getInt2d($recordData, 2); // first column index - - // offset: 4; size: 2; width of the column in 1/256 of the width of the zero character - $width = self::getInt2d($recordData, 4); - - // offset: 6; size: 2; index to XF record for default column formatting - $xfIndex = self::getInt2d($recordData, 6); - - // offset: 8; size: 2; option flags - // bit: 0; mask: 0x0001; 1= columns are hidden - $isHidden = (0x0001 & self::getInt2d($recordData, 8)) >> 0; - - // bit: 10-8; mask: 0x0700; outline level of the columns (0 = no outline) - $level = (0x0700 & self::getInt2d($recordData, 8)) >> 8; - - // bit: 12; mask: 0x1000; 1 = collapsed - $isCollapsed = (0x1000 & self::getInt2d($recordData, 8)) >> 12; - - // offset: 10; size: 2; not used - - for ($i = $fc; $i <= $lc; ++$i) { - if ($lc == 255 || $lc == 256) { - $this->phpSheet->getDefaultColumnDimension()->setWidth($width / 256); - break; - } - $this->phpSheet->getColumnDimensionByColumn($i)->setWidth($width / 256); - $this->phpSheet->getColumnDimensionByColumn($i)->setVisible(!$isHidden); - $this->phpSheet->getColumnDimensionByColumn($i)->setOutlineLevel($level); - $this->phpSheet->getColumnDimensionByColumn($i)->setCollapsed($isCollapsed); - $this->phpSheet->getColumnDimensionByColumn($i)->setXfIndex($this->mapCellXfIndex[$xfIndex]); - } - } - } - - - /** - * ROW - * - * This record contains the properties of a single row in a - * sheet. Rows and cells in a sheet are divided into blocks - * of 32 rows. - * - * -- "OpenOffice.org's Documentation of the Microsoft - * Excel File Format" - */ - private function readRow() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - if (!$this->readDataOnly) { - // offset: 0; size: 2; index of this row - $r = self::getInt2d($recordData, 0); - - // offset: 2; size: 2; index to column of the first cell which is described by a cell record - - // offset: 4; size: 2; index to column of the last cell which is described by a cell record, increased by 1 - - // offset: 6; size: 2; - - // bit: 14-0; mask: 0x7FFF; height of the row, in twips = 1/20 of a point - $height = (0x7FFF & self::getInt2d($recordData, 6)) >> 0; - - // bit: 15: mask: 0x8000; 0 = row has custom height; 1= row has default height - $useDefaultHeight = (0x8000 & self::getInt2d($recordData, 6)) >> 15; - - if (!$useDefaultHeight) { - $this->phpSheet->getRowDimension($r + 1)->setRowHeight($height / 20); - } - - // offset: 8; size: 2; not used - - // offset: 10; size: 2; not used in BIFF5-BIFF8 - - // offset: 12; size: 4; option flags and default row formatting - - // bit: 2-0: mask: 0x00000007; outline level of the row - $level = (0x00000007 & self::getInt4d($recordData, 12)) >> 0; - $this->phpSheet->getRowDimension($r + 1)->setOutlineLevel($level); - - // bit: 4; mask: 0x00000010; 1 = outline group start or ends here... and is collapsed - $isCollapsed = (0x00000010 & self::getInt4d($recordData, 12)) >> 4; - $this->phpSheet->getRowDimension($r + 1)->setCollapsed($isCollapsed); - - // bit: 5; mask: 0x00000020; 1 = row is hidden - $isHidden = (0x00000020 & self::getInt4d($recordData, 12)) >> 5; - $this->phpSheet->getRowDimension($r + 1)->setVisible(!$isHidden); - - // bit: 7; mask: 0x00000080; 1 = row has explicit format - $hasExplicitFormat = (0x00000080 & self::getInt4d($recordData, 12)) >> 7; - - // bit: 27-16; mask: 0x0FFF0000; only applies when hasExplicitFormat = 1; index to XF record - $xfIndex = (0x0FFF0000 & self::getInt4d($recordData, 12)) >> 16; - - if ($hasExplicitFormat) { - $this->phpSheet->getRowDimension($r + 1)->setXfIndex($this->mapCellXfIndex[$xfIndex]); - } - } - } - - - /** - * Read RK record - * This record represents a cell that contains an RK value - * (encoded integer or floating-point value). If a - * floating-point value cannot be encoded to an RK value, - * a NUMBER record will be written. This record replaces the - * record INTEGER written in BIFF2. - * - * -- "OpenOffice.org's Documentation of the Microsoft - * Excel File Format" - */ - private function readRk() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - // offset: 0; size: 2; index to row - $row = self::getInt2d($recordData, 0); - - // offset: 2; size: 2; index to column - $column = self::getInt2d($recordData, 2); - $columnString = PHPExcel_Cell::stringFromColumnIndex($column); - - // Read cell? - if (($this->getReadFilter() !== null) && $this->getReadFilter()->readCell($columnString, $row + 1, $this->phpSheet->getTitle())) { - // offset: 4; size: 2; index to XF record - $xfIndex = self::getInt2d($recordData, 4); - - // offset: 6; size: 4; RK value - $rknum = self::getInt4d($recordData, 6); - $numValue = self::getIEEE754($rknum); - - $cell = $this->phpSheet->getCell($columnString . ($row + 1)); - if (!$this->readDataOnly) { - // add style information - $cell->setXfIndex($this->mapCellXfIndex[$xfIndex]); - } - - // add cell - $cell->setValueExplicit($numValue, PHPExcel_Cell_DataType::TYPE_NUMERIC); - } - } - - - /** - * Read LABELSST record - * This record represents a cell that contains a string. It - * replaces the LABEL record and RSTRING record used in - * BIFF2-BIFF5. - * - * -- "OpenOffice.org's Documentation of the Microsoft - * Excel File Format" - */ - private function readLabelSst() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - // offset: 0; size: 2; index to row - $row = self::getInt2d($recordData, 0); - - // offset: 2; size: 2; index to column - $column = self::getInt2d($recordData, 2); - $columnString = PHPExcel_Cell::stringFromColumnIndex($column); - - $emptyCell = true; - // Read cell? - if (($this->getReadFilter() !== null) && $this->getReadFilter()->readCell($columnString, $row + 1, $this->phpSheet->getTitle())) { - // offset: 4; size: 2; index to XF record - $xfIndex = self::getInt2d($recordData, 4); - - // offset: 6; size: 4; index to SST record - $index = self::getInt4d($recordData, 6); - - // add cell - if (($fmtRuns = $this->sst[$index]['fmtRuns']) && !$this->readDataOnly) { - // then we should treat as rich text - $richText = new PHPExcel_RichText(); - $charPos = 0; - $sstCount = count($this->sst[$index]['fmtRuns']); - for ($i = 0; $i <= $sstCount; ++$i) { - if (isset($fmtRuns[$i])) { - $text = PHPExcel_Shared_String::Substring($this->sst[$index]['value'], $charPos, $fmtRuns[$i]['charPos'] - $charPos); - $charPos = $fmtRuns[$i]['charPos']; - } else { - $text = PHPExcel_Shared_String::Substring($this->sst[$index]['value'], $charPos, PHPExcel_Shared_String::CountCharacters($this->sst[$index]['value'])); - } - - if (PHPExcel_Shared_String::CountCharacters($text) > 0) { - if ($i == 0) { // first text run, no style - $richText->createText($text); - } else { - $textRun = $richText->createTextRun($text); - if (isset($fmtRuns[$i - 1])) { - if ($fmtRuns[$i - 1]['fontIndex'] < 4) { - $fontIndex = $fmtRuns[$i - 1]['fontIndex']; - } else { - // this has to do with that index 4 is omitted in all BIFF versions for some strange reason - // check the OpenOffice documentation of the FONT record - $fontIndex = $fmtRuns[$i - 1]['fontIndex'] - 1; - } - $textRun->setFont(clone $this->objFonts[$fontIndex]); - } - } - } - } - if ($this->readEmptyCells || trim($richText->getPlainText()) !== '') { - $cell = $this->phpSheet->getCell($columnString . ($row + 1)); - $cell->setValueExplicit($richText, PHPExcel_Cell_DataType::TYPE_STRING); - $emptyCell = false; - } - } else { - if ($this->readEmptyCells || trim($this->sst[$index]['value']) !== '') { - $cell = $this->phpSheet->getCell($columnString . ($row + 1)); - $cell->setValueExplicit($this->sst[$index]['value'], PHPExcel_Cell_DataType::TYPE_STRING); - $emptyCell = false; - } - } - - if (!$this->readDataOnly && !$emptyCell) { - // add style information - $cell->setXfIndex($this->mapCellXfIndex[$xfIndex]); - } - } - } - - - /** - * Read MULRK record - * This record represents a cell range containing RK value - * cells. All cells are located in the same row. - * - * -- "OpenOffice.org's Documentation of the Microsoft - * Excel File Format" - */ - private function readMulRk() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - // offset: 0; size: 2; index to row - $row = self::getInt2d($recordData, 0); - - // offset: 2; size: 2; index to first column - $colFirst = self::getInt2d($recordData, 2); - - // offset: var; size: 2; index to last column - $colLast = self::getInt2d($recordData, $length - 2); - $columns = $colLast - $colFirst + 1; - - // offset within record data - $offset = 4; - - for ($i = 0; $i < $columns; ++$i) { - $columnString = PHPExcel_Cell::stringFromColumnIndex($colFirst + $i); - - // Read cell? - if (($this->getReadFilter() !== null) && $this->getReadFilter()->readCell($columnString, $row + 1, $this->phpSheet->getTitle())) { - // offset: var; size: 2; index to XF record - $xfIndex = self::getInt2d($recordData, $offset); - - // offset: var; size: 4; RK value - $numValue = self::getIEEE754(self::getInt4d($recordData, $offset + 2)); - $cell = $this->phpSheet->getCell($columnString . ($row + 1)); - if (!$this->readDataOnly) { - // add style - $cell->setXfIndex($this->mapCellXfIndex[$xfIndex]); - } - - // add cell value - $cell->setValueExplicit($numValue, PHPExcel_Cell_DataType::TYPE_NUMERIC); - } - - $offset += 6; - } - } - - - /** - * Read NUMBER record - * This record represents a cell that contains a - * floating-point value. - * - * -- "OpenOffice.org's Documentation of the Microsoft - * Excel File Format" - */ - private function readNumber() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - // offset: 0; size: 2; index to row - $row = self::getInt2d($recordData, 0); - - // offset: 2; size 2; index to column - $column = self::getInt2d($recordData, 2); - $columnString = PHPExcel_Cell::stringFromColumnIndex($column); - - // Read cell? - if (($this->getReadFilter() !== null) && $this->getReadFilter()->readCell($columnString, $row + 1, $this->phpSheet->getTitle())) { - // offset 4; size: 2; index to XF record - $xfIndex = self::getInt2d($recordData, 4); - - $numValue = self::extractNumber(substr($recordData, 6, 8)); - - $cell = $this->phpSheet->getCell($columnString . ($row + 1)); - if (!$this->readDataOnly) { - // add cell style - $cell->setXfIndex($this->mapCellXfIndex[$xfIndex]); - } - - // add cell value - $cell->setValueExplicit($numValue, PHPExcel_Cell_DataType::TYPE_NUMERIC); - } - } - - - /** - * Read FORMULA record + perhaps a following STRING record if formula result is a string - * This record contains the token array and the result of a - * formula cell. - * - * -- "OpenOffice.org's Documentation of the Microsoft - * Excel File Format" - */ - private function readFormula() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - // offset: 0; size: 2; row index - $row = self::getInt2d($recordData, 0); - - // offset: 2; size: 2; col index - $column = self::getInt2d($recordData, 2); - $columnString = PHPExcel_Cell::stringFromColumnIndex($column); - - // offset: 20: size: variable; formula structure - $formulaStructure = substr($recordData, 20); - - // offset: 14: size: 2; option flags, recalculate always, recalculate on open etc. - $options = self::getInt2d($recordData, 14); - - // bit: 0; mask: 0x0001; 1 = recalculate always - // bit: 1; mask: 0x0002; 1 = calculate on open - // bit: 2; mask: 0x0008; 1 = part of a shared formula - $isPartOfSharedFormula = (bool) (0x0008 & $options); - - // WARNING: - // We can apparently not rely on $isPartOfSharedFormula. Even when $isPartOfSharedFormula = true - // the formula data may be ordinary formula data, therefore we need to check - // explicitly for the tExp token (0x01) - $isPartOfSharedFormula = $isPartOfSharedFormula && ord($formulaStructure{2}) == 0x01; - - if ($isPartOfSharedFormula) { - // part of shared formula which means there will be a formula with a tExp token and nothing else - // get the base cell, grab tExp token - $baseRow = self::getInt2d($formulaStructure, 3); - $baseCol = self::getInt2d($formulaStructure, 5); - $this->_baseCell = PHPExcel_Cell::stringFromColumnIndex($baseCol). ($baseRow + 1); - } - - // Read cell? - if (($this->getReadFilter() !== null) && $this->getReadFilter()->readCell($columnString, $row + 1, $this->phpSheet->getTitle())) { - if ($isPartOfSharedFormula) { - // formula is added to this cell after the sheet has been read - $this->sharedFormulaParts[$columnString . ($row + 1)] = $this->_baseCell; - } - - // offset: 16: size: 4; not used - - // offset: 4; size: 2; XF index - $xfIndex = self::getInt2d($recordData, 4); - - // offset: 6; size: 8; result of the formula - if ((ord($recordData{6}) == 0) && (ord($recordData{12}) == 255) && (ord($recordData{13}) == 255)) { - // String formula. Result follows in appended STRING record - $dataType = PHPExcel_Cell_DataType::TYPE_STRING; - - // read possible SHAREDFMLA record - $code = self::getInt2d($this->data, $this->pos); - if ($code == self::XLS_TYPE_SHAREDFMLA) { - $this->readSharedFmla(); - } - - // read STRING record - $value = $this->readString(); - } elseif ((ord($recordData{6}) == 1) - && (ord($recordData{12}) == 255) - && (ord($recordData{13}) == 255)) { - // Boolean formula. Result is in +2; 0=false, 1=true - $dataType = PHPExcel_Cell_DataType::TYPE_BOOL; - $value = (bool) ord($recordData{8}); - } elseif ((ord($recordData{6}) == 2) - && (ord($recordData{12}) == 255) - && (ord($recordData{13}) == 255)) { - // Error formula. Error code is in +2 - $dataType = PHPExcel_Cell_DataType::TYPE_ERROR; - $value = PHPExcel_Reader_Excel5_ErrorCode::lookup(ord($recordData{8})); - } elseif ((ord($recordData{6}) == 3) - && (ord($recordData{12}) == 255) - && (ord($recordData{13}) == 255)) { - // Formula result is a null string - $dataType = PHPExcel_Cell_DataType::TYPE_NULL; - $value = ''; - } else { - // forumla result is a number, first 14 bytes like _NUMBER record - $dataType = PHPExcel_Cell_DataType::TYPE_NUMERIC; - $value = self::extractNumber(substr($recordData, 6, 8)); - } - - $cell = $this->phpSheet->getCell($columnString . ($row + 1)); - if (!$this->readDataOnly) { - // add cell style - $cell->setXfIndex($this->mapCellXfIndex[$xfIndex]); - } - - // store the formula - if (!$isPartOfSharedFormula) { - // not part of shared formula - // add cell value. If we can read formula, populate with formula, otherwise just used cached value - try { - if ($this->version != self::XLS_BIFF8) { - throw new PHPExcel_Reader_Exception('Not BIFF8. Can only read BIFF8 formulas'); - } - $formula = $this->getFormulaFromStructure($formulaStructure); // get formula in human language - $cell->setValueExplicit('=' . $formula, PHPExcel_Cell_DataType::TYPE_FORMULA); - - } catch (PHPExcel_Exception $e) { - $cell->setValueExplicit($value, $dataType); - } - } else { - if ($this->version == self::XLS_BIFF8) { - // do nothing at this point, formula id added later in the code - } else { - $cell->setValueExplicit($value, $dataType); - } - } - - // store the cached calculated value - $cell->setCalculatedValue($value); - } - } - - - /** - * Read a SHAREDFMLA record. This function just stores the binary shared formula in the reader, - * which usually contains relative references. - * These will be used to construct the formula in each shared formula part after the sheet is read. - */ - private function readSharedFmla() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - // offset: 0, size: 6; cell range address of the area used by the shared formula, not used for anything - $cellRange = substr($recordData, 0, 6); - $cellRange = $this->readBIFF5CellRangeAddressFixed($cellRange); // note: even BIFF8 uses BIFF5 syntax - - // offset: 6, size: 1; not used - - // offset: 7, size: 1; number of existing FORMULA records for this shared formula - $no = ord($recordData{7}); - - // offset: 8, size: var; Binary token array of the shared formula - $formula = substr($recordData, 8); - - // at this point we only store the shared formula for later use - $this->sharedFormulas[$this->_baseCell] = $formula; - } - - - /** - * Read a STRING record from current stream position and advance the stream pointer to next record - * This record is used for storing result from FORMULA record when it is a string, and - * it occurs directly after the FORMULA record - * - * @return string The string contents as UTF-8 - */ - private function readString() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - if ($this->version == self::XLS_BIFF8) { - $string = self::readUnicodeStringLong($recordData); - $value = $string['value']; - } else { - $string = $this->readByteStringLong($recordData); - $value = $string['value']; - } - - return $value; - } - - - /** - * Read BOOLERR record - * This record represents a Boolean value or error value - * cell. - * - * -- "OpenOffice.org's Documentation of the Microsoft - * Excel File Format" - */ - private function readBoolErr() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - // offset: 0; size: 2; row index - $row = self::getInt2d($recordData, 0); - - // offset: 2; size: 2; column index - $column = self::getInt2d($recordData, 2); - $columnString = PHPExcel_Cell::stringFromColumnIndex($column); - - // Read cell? - if (($this->getReadFilter() !== null) && $this->getReadFilter()->readCell($columnString, $row + 1, $this->phpSheet->getTitle())) { - // offset: 4; size: 2; index to XF record - $xfIndex = self::getInt2d($recordData, 4); - - // offset: 6; size: 1; the boolean value or error value - $boolErr = ord($recordData{6}); - - // offset: 7; size: 1; 0=boolean; 1=error - $isError = ord($recordData{7}); - - $cell = $this->phpSheet->getCell($columnString . ($row + 1)); - switch ($isError) { - case 0: // boolean - $value = (bool) $boolErr; - - // add cell value - $cell->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_BOOL); - break; - case 1: // error type - $value = PHPExcel_Reader_Excel5_ErrorCode::lookup($boolErr); - - // add cell value - $cell->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_ERROR); - break; - } - - if (!$this->readDataOnly) { - // add cell style - $cell->setXfIndex($this->mapCellXfIndex[$xfIndex]); - } - } - } - - - /** - * Read MULBLANK record - * This record represents a cell range of empty cells. All - * cells are located in the same row - * - * -- "OpenOffice.org's Documentation of the Microsoft - * Excel File Format" - */ - private function readMulBlank() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - // offset: 0; size: 2; index to row - $row = self::getInt2d($recordData, 0); - - // offset: 2; size: 2; index to first column - $fc = self::getInt2d($recordData, 2); - - // offset: 4; size: 2 x nc; list of indexes to XF records - // add style information - if (!$this->readDataOnly && $this->readEmptyCells) { - for ($i = 0; $i < $length / 2 - 3; ++$i) { - $columnString = PHPExcel_Cell::stringFromColumnIndex($fc + $i); - - // Read cell? - if (($this->getReadFilter() !== null) && $this->getReadFilter()->readCell($columnString, $row + 1, $this->phpSheet->getTitle())) { - $xfIndex = self::getInt2d($recordData, 4 + 2 * $i); - $this->phpSheet->getCell($columnString . ($row + 1))->setXfIndex($this->mapCellXfIndex[$xfIndex]); - } - } - } - - // offset: 6; size 2; index to last column (not needed) - } - - - /** - * Read LABEL record - * This record represents a cell that contains a string. In - * BIFF8 it is usually replaced by the LABELSST record. - * Excel still uses this record, if it copies unformatted - * text cells to the clipboard. - * - * -- "OpenOffice.org's Documentation of the Microsoft - * Excel File Format" - */ - private function readLabel() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - // offset: 0; size: 2; index to row - $row = self::getInt2d($recordData, 0); - - // offset: 2; size: 2; index to column - $column = self::getInt2d($recordData, 2); - $columnString = PHPExcel_Cell::stringFromColumnIndex($column); - - // Read cell? - if (($this->getReadFilter() !== null) && $this->getReadFilter()->readCell($columnString, $row + 1, $this->phpSheet->getTitle())) { - // offset: 4; size: 2; XF index - $xfIndex = self::getInt2d($recordData, 4); - - // add cell value - // todo: what if string is very long? continue record - if ($this->version == self::XLS_BIFF8) { - $string = self::readUnicodeStringLong(substr($recordData, 6)); - $value = $string['value']; - } else { - $string = $this->readByteStringLong(substr($recordData, 6)); - $value = $string['value']; - } - if ($this->readEmptyCells || trim($value) !== '') { - $cell = $this->phpSheet->getCell($columnString . ($row + 1)); - $cell->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_STRING); - - if (!$this->readDataOnly) { - // add cell style - $cell->setXfIndex($this->mapCellXfIndex[$xfIndex]); - } - } - } - } - - - /** - * Read BLANK record - */ - private function readBlank() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - // offset: 0; size: 2; row index - $row = self::getInt2d($recordData, 0); - - // offset: 2; size: 2; col index - $col = self::getInt2d($recordData, 2); - $columnString = PHPExcel_Cell::stringFromColumnIndex($col); - - // Read cell? - if (($this->getReadFilter() !== null) && $this->getReadFilter()->readCell($columnString, $row + 1, $this->phpSheet->getTitle())) { - // offset: 4; size: 2; XF index - $xfIndex = self::getInt2d($recordData, 4); - - // add style information - if (!$this->readDataOnly && $this->readEmptyCells) { - $this->phpSheet->getCell($columnString . ($row + 1))->setXfIndex($this->mapCellXfIndex[$xfIndex]); - } - } - } - - - /** - * Read MSODRAWING record - */ - private function readMsoDrawing() - { - $length = self::getInt2d($this->data, $this->pos + 2); - - // get spliced record data - $splicedRecordData = $this->getSplicedRecordData(); - $recordData = $splicedRecordData['recordData']; - - $this->drawingData .= $recordData; - } - - - /** - * Read OBJ record - */ - private function readObj() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - if ($this->readDataOnly || $this->version != self::XLS_BIFF8) { - return; - } - - // recordData consists of an array of subrecords looking like this: - // ft: 2 bytes; ftCmo type (0x15) - // cb: 2 bytes; size in bytes of ftCmo data - // ot: 2 bytes; Object Type - // id: 2 bytes; Object id number - // grbit: 2 bytes; Option Flags - // data: var; subrecord data - - // for now, we are just interested in the second subrecord containing the object type - $ftCmoType = self::getInt2d($recordData, 0); - $cbCmoSize = self::getInt2d($recordData, 2); - $otObjType = self::getInt2d($recordData, 4); - $idObjID = self::getInt2d($recordData, 6); - $grbitOpts = self::getInt2d($recordData, 6); - - $this->objs[] = array( - 'ftCmoType' => $ftCmoType, - 'cbCmoSize' => $cbCmoSize, - 'otObjType' => $otObjType, - 'idObjID' => $idObjID, - 'grbitOpts' => $grbitOpts - ); - $this->textObjRef = $idObjID; - -// echo '_readObj()
    '; -// var_dump(end($this->objs)); -// echo '
    '; - } - - - /** - * Read WINDOW2 record - */ - private function readWindow2() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - // offset: 0; size: 2; option flags - $options = self::getInt2d($recordData, 0); - - // offset: 2; size: 2; index to first visible row - $firstVisibleRow = self::getInt2d($recordData, 2); - - // offset: 4; size: 2; index to first visible colum - $firstVisibleColumn = self::getInt2d($recordData, 4); - if ($this->version === self::XLS_BIFF8) { - // offset: 8; size: 2; not used - // offset: 10; size: 2; cached magnification factor in page break preview (in percent); 0 = Default (60%) - // offset: 12; size: 2; cached magnification factor in normal view (in percent); 0 = Default (100%) - // offset: 14; size: 4; not used - $zoomscaleInPageBreakPreview = self::getInt2d($recordData, 10); - if ($zoomscaleInPageBreakPreview === 0) { - $zoomscaleInPageBreakPreview = 60; - } - $zoomscaleInNormalView = self::getInt2d($recordData, 12); - if ($zoomscaleInNormalView === 0) { - $zoomscaleInNormalView = 100; - } - } - - // bit: 1; mask: 0x0002; 0 = do not show gridlines, 1 = show gridlines - $showGridlines = (bool) ((0x0002 & $options) >> 1); - $this->phpSheet->setShowGridlines($showGridlines); - - // bit: 2; mask: 0x0004; 0 = do not show headers, 1 = show headers - $showRowColHeaders = (bool) ((0x0004 & $options) >> 2); - $this->phpSheet->setShowRowColHeaders($showRowColHeaders); - - // bit: 3; mask: 0x0008; 0 = panes are not frozen, 1 = panes are frozen - $this->frozen = (bool) ((0x0008 & $options) >> 3); - - // bit: 6; mask: 0x0040; 0 = columns from left to right, 1 = columns from right to left - $this->phpSheet->setRightToLeft((bool)((0x0040 & $options) >> 6)); - - // bit: 10; mask: 0x0400; 0 = sheet not active, 1 = sheet active - $isActive = (bool) ((0x0400 & $options) >> 10); - if ($isActive) { - $this->phpExcel->setActiveSheetIndex($this->phpExcel->getIndex($this->phpSheet)); - } - - // bit: 11; mask: 0x0800; 0 = normal view, 1 = page break view - $isPageBreakPreview = (bool) ((0x0800 & $options) >> 11); - - //FIXME: set $firstVisibleRow and $firstVisibleColumn - - if ($this->phpSheet->getSheetView()->getView() !== PHPExcel_Worksheet_SheetView::SHEETVIEW_PAGE_LAYOUT) { - //NOTE: this setting is inferior to page layout view(Excel2007-) - $view = $isPageBreakPreview ? PHPExcel_Worksheet_SheetView::SHEETVIEW_PAGE_BREAK_PREVIEW : PHPExcel_Worksheet_SheetView::SHEETVIEW_NORMAL; - $this->phpSheet->getSheetView()->setView($view); - if ($this->version === self::XLS_BIFF8) { - $zoomScale = $isPageBreakPreview ? $zoomscaleInPageBreakPreview : $zoomscaleInNormalView; - $this->phpSheet->getSheetView()->setZoomScale($zoomScale); - $this->phpSheet->getSheetView()->setZoomScaleNormal($zoomscaleInNormalView); - } - } - } - - /** - * Read PLV Record(Created by Excel2007 or upper) - */ - private function readPageLayoutView() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - //var_dump(unpack("vrt/vgrbitFrt/V2reserved/vwScalePLV/vgrbit", $recordData)); - - // offset: 0; size: 2; rt - //->ignore - $rt = self::getInt2d($recordData, 0); - // offset: 2; size: 2; grbitfr - //->ignore - $grbitFrt = self::getInt2d($recordData, 2); - // offset: 4; size: 8; reserved - //->ignore - - // offset: 12; size 2; zoom scale - $wScalePLV = self::getInt2d($recordData, 12); - // offset: 14; size 2; grbit - $grbit = self::getInt2d($recordData, 14); - - // decomprise grbit - $fPageLayoutView = $grbit & 0x01; - $fRulerVisible = ($grbit >> 1) & 0x01; //no support - $fWhitespaceHidden = ($grbit >> 3) & 0x01; //no support - - if ($fPageLayoutView === 1) { - $this->phpSheet->getSheetView()->setView(PHPExcel_Worksheet_SheetView::SHEETVIEW_PAGE_LAYOUT); - $this->phpSheet->getSheetView()->setZoomScale($wScalePLV); //set by Excel2007 only if SHEETVIEW_PAGE_LAYOUT - } - //otherwise, we cannot know whether SHEETVIEW_PAGE_LAYOUT or SHEETVIEW_PAGE_BREAK_PREVIEW. - } - - /** - * Read SCL record - */ - private function readScl() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - // offset: 0; size: 2; numerator of the view magnification - $numerator = self::getInt2d($recordData, 0); - - // offset: 2; size: 2; numerator of the view magnification - $denumerator = self::getInt2d($recordData, 2); - - // set the zoom scale (in percent) - $this->phpSheet->getSheetView()->setZoomScale($numerator * 100 / $denumerator); - } - - - /** - * Read PANE record - */ - private function readPane() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - if (!$this->readDataOnly) { - // offset: 0; size: 2; position of vertical split - $px = self::getInt2d($recordData, 0); - - // offset: 2; size: 2; position of horizontal split - $py = self::getInt2d($recordData, 2); - - if ($this->frozen) { - // frozen panes - $this->phpSheet->freezePane(PHPExcel_Cell::stringFromColumnIndex($px) . ($py + 1)); - } else { - // unfrozen panes; split windows; not supported by PHPExcel core - } - } - } - - - /** - * Read SELECTION record. There is one such record for each pane in the sheet. - */ - private function readSelection() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - if (!$this->readDataOnly) { - // offset: 0; size: 1; pane identifier - $paneId = ord($recordData{0}); - - // offset: 1; size: 2; index to row of the active cell - $r = self::getInt2d($recordData, 1); - - // offset: 3; size: 2; index to column of the active cell - $c = self::getInt2d($recordData, 3); - - // offset: 5; size: 2; index into the following cell range list to the - // entry that contains the active cell - $index = self::getInt2d($recordData, 5); - - // offset: 7; size: var; cell range address list containing all selected cell ranges - $data = substr($recordData, 7); - $cellRangeAddressList = $this->readBIFF5CellRangeAddressList($data); // note: also BIFF8 uses BIFF5 syntax - - $selectedCells = $cellRangeAddressList['cellRangeAddresses'][0]; - - // first row '1' + last row '16384' indicates that full column is selected (apparently also in BIFF8!) - if (preg_match('/^([A-Z]+1\:[A-Z]+)16384$/', $selectedCells)) { - $selectedCells = preg_replace('/^([A-Z]+1\:[A-Z]+)16384$/', '${1}1048576', $selectedCells); - } - - // first row '1' + last row '65536' indicates that full column is selected - if (preg_match('/^([A-Z]+1\:[A-Z]+)65536$/', $selectedCells)) { - $selectedCells = preg_replace('/^([A-Z]+1\:[A-Z]+)65536$/', '${1}1048576', $selectedCells); - } - - // first column 'A' + last column 'IV' indicates that full row is selected - if (preg_match('/^(A[0-9]+\:)IV([0-9]+)$/', $selectedCells)) { - $selectedCells = preg_replace('/^(A[0-9]+\:)IV([0-9]+)$/', '${1}XFD${2}', $selectedCells); - } - - $this->phpSheet->setSelectedCells($selectedCells); - } - } - - - private function includeCellRangeFiltered($cellRangeAddress) - { - $includeCellRange = true; - if ($this->getReadFilter() !== null) { - $includeCellRange = false; - $rangeBoundaries = PHPExcel_Cell::getRangeBoundaries($cellRangeAddress); - $rangeBoundaries[1][0]++; - for ($row = $rangeBoundaries[0][1]; $row <= $rangeBoundaries[1][1]; $row++) { - for ($column = $rangeBoundaries[0][0]; $column != $rangeBoundaries[1][0]; $column++) { - if ($this->getReadFilter()->readCell($column, $row, $this->phpSheet->getTitle())) { - $includeCellRange = true; - break 2; - } - } - } - } - return $includeCellRange; - } - - - /** - * MERGEDCELLS - * - * This record contains the addresses of merged cell ranges - * in the current sheet. - * - * -- "OpenOffice.org's Documentation of the Microsoft - * Excel File Format" - */ - private function readMergedCells() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - if ($this->version == self::XLS_BIFF8 && !$this->readDataOnly) { - $cellRangeAddressList = $this->readBIFF8CellRangeAddressList($recordData); - foreach ($cellRangeAddressList['cellRangeAddresses'] as $cellRangeAddress) { - if ((strpos($cellRangeAddress, ':') !== false) && - ($this->includeCellRangeFiltered($cellRangeAddress))) { - $this->phpSheet->mergeCells($cellRangeAddress); - } - } - } - } - - - /** - * Read HYPERLINK record - */ - private function readHyperLink() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer forward to next record - $this->pos += 4 + $length; - - if (!$this->readDataOnly) { - // offset: 0; size: 8; cell range address of all cells containing this hyperlink - try { - $cellRange = $this->readBIFF8CellRangeAddressFixed($recordData, 0, 8); - } catch (PHPExcel_Exception $e) { - return; - } - - // offset: 8, size: 16; GUID of StdLink - - // offset: 24, size: 4; unknown value - - // offset: 28, size: 4; option flags - // bit: 0; mask: 0x00000001; 0 = no link or extant, 1 = file link or URL - $isFileLinkOrUrl = (0x00000001 & self::getInt2d($recordData, 28)) >> 0; - - // bit: 1; mask: 0x00000002; 0 = relative path, 1 = absolute path or URL - $isAbsPathOrUrl = (0x00000001 & self::getInt2d($recordData, 28)) >> 1; - - // bit: 2 (and 4); mask: 0x00000014; 0 = no description - $hasDesc = (0x00000014 & self::getInt2d($recordData, 28)) >> 2; - - // bit: 3; mask: 0x00000008; 0 = no text, 1 = has text - $hasText = (0x00000008 & self::getInt2d($recordData, 28)) >> 3; - - // bit: 7; mask: 0x00000080; 0 = no target frame, 1 = has target frame - $hasFrame = (0x00000080 & self::getInt2d($recordData, 28)) >> 7; - - // bit: 8; mask: 0x00000100; 0 = file link or URL, 1 = UNC path (inc. server name) - $isUNC = (0x00000100 & self::getInt2d($recordData, 28)) >> 8; - - // offset within record data - $offset = 32; - - if ($hasDesc) { - // offset: 32; size: var; character count of description text - $dl = self::getInt4d($recordData, 32); - // offset: 36; size: var; character array of description text, no Unicode string header, always 16-bit characters, zero terminated - $desc = self::encodeUTF16(substr($recordData, 36, 2 * ($dl - 1)), false); - $offset += 4 + 2 * $dl; - } - if ($hasFrame) { - $fl = self::getInt4d($recordData, $offset); - $offset += 4 + 2 * $fl; - } - - // detect type of hyperlink (there are 4 types) - $hyperlinkType = null; - - if ($isUNC) { - $hyperlinkType = 'UNC'; - } elseif (!$isFileLinkOrUrl) { - $hyperlinkType = 'workbook'; - } elseif (ord($recordData{$offset}) == 0x03) { - $hyperlinkType = 'local'; - } elseif (ord($recordData{$offset}) == 0xE0) { - $hyperlinkType = 'URL'; - } - - switch ($hyperlinkType) { - case 'URL': - // section 5.58.2: Hyperlink containing a URL - // e.g. http://example.org/index.php - - // offset: var; size: 16; GUID of URL Moniker - $offset += 16; - // offset: var; size: 4; size (in bytes) of character array of the URL including trailing zero word - $us = self::getInt4d($recordData, $offset); - $offset += 4; - // offset: var; size: $us; character array of the URL, no Unicode string header, always 16-bit characters, zero-terminated - $url = self::encodeUTF16(substr($recordData, $offset, $us - 2), false); - $nullOffset = strpos($url, 0x00); - if ($nullOffset) { - $url = substr($url, 0, $nullOffset); - } - $url .= $hasText ? '#' : ''; - $offset += $us; - break; - case 'local': - // section 5.58.3: Hyperlink to local file - // examples: - // mydoc.txt - // ../../somedoc.xls#Sheet!A1 - - // offset: var; size: 16; GUI of File Moniker - $offset += 16; - - // offset: var; size: 2; directory up-level count. - $upLevelCount = self::getInt2d($recordData, $offset); - $offset += 2; - - // offset: var; size: 4; character count of the shortened file path and name, including trailing zero word - $sl = self::getInt4d($recordData, $offset); - $offset += 4; - - // offset: var; size: sl; character array of the shortened file path and name in 8.3-DOS-format (compressed Unicode string) - $shortenedFilePath = substr($recordData, $offset, $sl); - $shortenedFilePath = self::encodeUTF16($shortenedFilePath, true); - $shortenedFilePath = substr($shortenedFilePath, 0, -1); // remove trailing zero - - $offset += $sl; - - // offset: var; size: 24; unknown sequence - $offset += 24; - - // extended file path - // offset: var; size: 4; size of the following file link field including string lenth mark - $sz = self::getInt4d($recordData, $offset); - $offset += 4; - - // only present if $sz > 0 - if ($sz > 0) { - // offset: var; size: 4; size of the character array of the extended file path and name - $xl = self::getInt4d($recordData, $offset); - $offset += 4; - - // offset: var; size 2; unknown - $offset += 2; - - // offset: var; size $xl; character array of the extended file path and name. - $extendedFilePath = substr($recordData, $offset, $xl); - $extendedFilePath = self::encodeUTF16($extendedFilePath, false); - $offset += $xl; - } - - // construct the path - $url = str_repeat('..\\', $upLevelCount); - $url .= ($sz > 0) ? $extendedFilePath : $shortenedFilePath; // use extended path if available - $url .= $hasText ? '#' : ''; - - break; - case 'UNC': - // section 5.58.4: Hyperlink to a File with UNC (Universal Naming Convention) Path - // todo: implement - return; - case 'workbook': - // section 5.58.5: Hyperlink to the Current Workbook - // e.g. Sheet2!B1:C2, stored in text mark field - $url = 'sheet://'; - break; - default: - return; - } - - if ($hasText) { - // offset: var; size: 4; character count of text mark including trailing zero word - $tl = self::getInt4d($recordData, $offset); - $offset += 4; - // offset: var; size: var; character array of the text mark without the # sign, no Unicode header, always 16-bit characters, zero-terminated - $text = self::encodeUTF16(substr($recordData, $offset, 2 * ($tl - 1)), false); - $url .= $text; - } - - // apply the hyperlink to all the relevant cells - foreach (PHPExcel_Cell::extractAllCellReferencesInRange($cellRange) as $coordinate) { - $this->phpSheet->getCell($coordinate)->getHyperLink()->setUrl($url); - } - } - } - - - /** - * Read DATAVALIDATIONS record - */ - private function readDataValidations() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer forward to next record - $this->pos += 4 + $length; - } - - - /** - * Read DATAVALIDATION record - */ - private function readDataValidation() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer forward to next record - $this->pos += 4 + $length; - - if ($this->readDataOnly) { - return; - } - - // offset: 0; size: 4; Options - $options = self::getInt4d($recordData, 0); - - // bit: 0-3; mask: 0x0000000F; type - $type = (0x0000000F & $options) >> 0; - switch ($type) { - case 0x00: - $type = PHPExcel_Cell_DataValidation::TYPE_NONE; - break; - case 0x01: - $type = PHPExcel_Cell_DataValidation::TYPE_WHOLE; - break; - case 0x02: - $type = PHPExcel_Cell_DataValidation::TYPE_DECIMAL; - break; - case 0x03: - $type = PHPExcel_Cell_DataValidation::TYPE_LIST; - break; - case 0x04: - $type = PHPExcel_Cell_DataValidation::TYPE_DATE; - break; - case 0x05: - $type = PHPExcel_Cell_DataValidation::TYPE_TIME; - break; - case 0x06: - $type = PHPExcel_Cell_DataValidation::TYPE_TEXTLENGTH; - break; - case 0x07: - $type = PHPExcel_Cell_DataValidation::TYPE_CUSTOM; - break; - } - - // bit: 4-6; mask: 0x00000070; error type - $errorStyle = (0x00000070 & $options) >> 4; - switch ($errorStyle) { - case 0x00: - $errorStyle = PHPExcel_Cell_DataValidation::STYLE_STOP; - break; - case 0x01: - $errorStyle = PHPExcel_Cell_DataValidation::STYLE_WARNING; - break; - case 0x02: - $errorStyle = PHPExcel_Cell_DataValidation::STYLE_INFORMATION; - break; - } - - // bit: 7; mask: 0x00000080; 1= formula is explicit (only applies to list) - // I have only seen cases where this is 1 - $explicitFormula = (0x00000080 & $options) >> 7; - - // bit: 8; mask: 0x00000100; 1= empty cells allowed - $allowBlank = (0x00000100 & $options) >> 8; - - // bit: 9; mask: 0x00000200; 1= suppress drop down arrow in list type validity - $suppressDropDown = (0x00000200 & $options) >> 9; - - // bit: 18; mask: 0x00040000; 1= show prompt box if cell selected - $showInputMessage = (0x00040000 & $options) >> 18; - - // bit: 19; mask: 0x00080000; 1= show error box if invalid values entered - $showErrorMessage = (0x00080000 & $options) >> 19; - - // bit: 20-23; mask: 0x00F00000; condition operator - $operator = (0x00F00000 & $options) >> 20; - switch ($operator) { - case 0x00: - $operator = PHPExcel_Cell_DataValidation::OPERATOR_BETWEEN; - break; - case 0x01: - $operator = PHPExcel_Cell_DataValidation::OPERATOR_NOTBETWEEN; - break; - case 0x02: - $operator = PHPExcel_Cell_DataValidation::OPERATOR_EQUAL; - break; - case 0x03: - $operator = PHPExcel_Cell_DataValidation::OPERATOR_NOTEQUAL; - break; - case 0x04: - $operator = PHPExcel_Cell_DataValidation::OPERATOR_GREATERTHAN; - break; - case 0x05: - $operator = PHPExcel_Cell_DataValidation::OPERATOR_LESSTHAN; - break; - case 0x06: - $operator = PHPExcel_Cell_DataValidation::OPERATOR_GREATERTHANOREQUAL; - break; - case 0x07: - $operator = PHPExcel_Cell_DataValidation::OPERATOR_LESSTHANOREQUAL; - break; - } - - // offset: 4; size: var; title of the prompt box - $offset = 4; - $string = self::readUnicodeStringLong(substr($recordData, $offset)); - $promptTitle = $string['value'] !== chr(0) ? $string['value'] : ''; - $offset += $string['size']; - - // offset: var; size: var; title of the error box - $string = self::readUnicodeStringLong(substr($recordData, $offset)); - $errorTitle = $string['value'] !== chr(0) ? $string['value'] : ''; - $offset += $string['size']; - - // offset: var; size: var; text of the prompt box - $string = self::readUnicodeStringLong(substr($recordData, $offset)); - $prompt = $string['value'] !== chr(0) ? $string['value'] : ''; - $offset += $string['size']; - - // offset: var; size: var; text of the error box - $string = self::readUnicodeStringLong(substr($recordData, $offset)); - $error = $string['value'] !== chr(0) ? $string['value'] : ''; - $offset += $string['size']; - - // offset: var; size: 2; size of the formula data for the first condition - $sz1 = self::getInt2d($recordData, $offset); - $offset += 2; - - // offset: var; size: 2; not used - $offset += 2; - - // offset: var; size: $sz1; formula data for first condition (without size field) - $formula1 = substr($recordData, $offset, $sz1); - $formula1 = pack('v', $sz1) . $formula1; // prepend the length - try { - $formula1 = $this->getFormulaFromStructure($formula1); - - // in list type validity, null characters are used as item separators - if ($type == PHPExcel_Cell_DataValidation::TYPE_LIST) { - $formula1 = str_replace(chr(0), ',', $formula1); - } - } catch (PHPExcel_Exception $e) { - return; - } - $offset += $sz1; - - // offset: var; size: 2; size of the formula data for the first condition - $sz2 = self::getInt2d($recordData, $offset); - $offset += 2; - - // offset: var; size: 2; not used - $offset += 2; - - // offset: var; size: $sz2; formula data for second condition (without size field) - $formula2 = substr($recordData, $offset, $sz2); - $formula2 = pack('v', $sz2) . $formula2; // prepend the length - try { - $formula2 = $this->getFormulaFromStructure($formula2); - } catch (PHPExcel_Exception $e) { - return; - } - $offset += $sz2; - - // offset: var; size: var; cell range address list with - $cellRangeAddressList = $this->readBIFF8CellRangeAddressList(substr($recordData, $offset)); - $cellRangeAddresses = $cellRangeAddressList['cellRangeAddresses']; - - foreach ($cellRangeAddresses as $cellRange) { - $stRange = $this->phpSheet->shrinkRangeToFit($cellRange); - foreach (PHPExcel_Cell::extractAllCellReferencesInRange($stRange) as $coordinate) { - $objValidation = $this->phpSheet->getCell($coordinate)->getDataValidation(); - $objValidation->setType($type); - $objValidation->setErrorStyle($errorStyle); - $objValidation->setAllowBlank((bool)$allowBlank); - $objValidation->setShowInputMessage((bool)$showInputMessage); - $objValidation->setShowErrorMessage((bool)$showErrorMessage); - $objValidation->setShowDropDown(!$suppressDropDown); - $objValidation->setOperator($operator); - $objValidation->setErrorTitle($errorTitle); - $objValidation->setError($error); - $objValidation->setPromptTitle($promptTitle); - $objValidation->setPrompt($prompt); - $objValidation->setFormula1($formula1); - $objValidation->setFormula2($formula2); - } - } - } - - /** - * Read SHEETLAYOUT record. Stores sheet tab color information. - */ - private function readSheetLayout() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - // local pointer in record data - $offset = 0; - - if (!$this->readDataOnly) { - // offset: 0; size: 2; repeated record identifier 0x0862 - - // offset: 2; size: 10; not used - - // offset: 12; size: 4; size of record data - // Excel 2003 uses size of 0x14 (documented), Excel 2007 uses size of 0x28 (not documented?) - $sz = self::getInt4d($recordData, 12); - - switch ($sz) { - case 0x14: - // offset: 16; size: 2; color index for sheet tab - $colorIndex = self::getInt2d($recordData, 16); - $color = PHPExcel_Reader_Excel5_Color::map($colorIndex, $this->palette, $this->version); - $this->phpSheet->getTabColor()->setRGB($color['rgb']); - break; - case 0x28: - // TODO: Investigate structure for .xls SHEETLAYOUT record as saved by MS Office Excel 2007 - return; - break; - } - } - } - - - /** - * Read SHEETPROTECTION record (FEATHEADR) - */ - private function readSheetProtection() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - if ($this->readDataOnly) { - return; - } - - // offset: 0; size: 2; repeated record header - - // offset: 2; size: 2; FRT cell reference flag (=0 currently) - - // offset: 4; size: 8; Currently not used and set to 0 - - // offset: 12; size: 2; Shared feature type index (2=Enhanced Protetion, 4=SmartTag) - $isf = self::getInt2d($recordData, 12); - if ($isf != 2) { - return; - } - - // offset: 14; size: 1; =1 since this is a feat header - - // offset: 15; size: 4; size of rgbHdrSData - - // rgbHdrSData, assume "Enhanced Protection" - // offset: 19; size: 2; option flags - $options = self::getInt2d($recordData, 19); - - // bit: 0; mask 0x0001; 1 = user may edit objects, 0 = users must not edit objects - $bool = (0x0001 & $options) >> 0; - $this->phpSheet->getProtection()->setObjects(!$bool); - - // bit: 1; mask 0x0002; edit scenarios - $bool = (0x0002 & $options) >> 1; - $this->phpSheet->getProtection()->setScenarios(!$bool); - - // bit: 2; mask 0x0004; format cells - $bool = (0x0004 & $options) >> 2; - $this->phpSheet->getProtection()->setFormatCells(!$bool); - - // bit: 3; mask 0x0008; format columns - $bool = (0x0008 & $options) >> 3; - $this->phpSheet->getProtection()->setFormatColumns(!$bool); - - // bit: 4; mask 0x0010; format rows - $bool = (0x0010 & $options) >> 4; - $this->phpSheet->getProtection()->setFormatRows(!$bool); - - // bit: 5; mask 0x0020; insert columns - $bool = (0x0020 & $options) >> 5; - $this->phpSheet->getProtection()->setInsertColumns(!$bool); - - // bit: 6; mask 0x0040; insert rows - $bool = (0x0040 & $options) >> 6; - $this->phpSheet->getProtection()->setInsertRows(!$bool); - - // bit: 7; mask 0x0080; insert hyperlinks - $bool = (0x0080 & $options) >> 7; - $this->phpSheet->getProtection()->setInsertHyperlinks(!$bool); - - // bit: 8; mask 0x0100; delete columns - $bool = (0x0100 & $options) >> 8; - $this->phpSheet->getProtection()->setDeleteColumns(!$bool); - - // bit: 9; mask 0x0200; delete rows - $bool = (0x0200 & $options) >> 9; - $this->phpSheet->getProtection()->setDeleteRows(!$bool); - - // bit: 10; mask 0x0400; select locked cells - $bool = (0x0400 & $options) >> 10; - $this->phpSheet->getProtection()->setSelectLockedCells(!$bool); - - // bit: 11; mask 0x0800; sort cell range - $bool = (0x0800 & $options) >> 11; - $this->phpSheet->getProtection()->setSort(!$bool); - - // bit: 12; mask 0x1000; auto filter - $bool = (0x1000 & $options) >> 12; - $this->phpSheet->getProtection()->setAutoFilter(!$bool); - - // bit: 13; mask 0x2000; pivot tables - $bool = (0x2000 & $options) >> 13; - $this->phpSheet->getProtection()->setPivotTables(!$bool); - - // bit: 14; mask 0x4000; select unlocked cells - $bool = (0x4000 & $options) >> 14; - $this->phpSheet->getProtection()->setSelectUnlockedCells(!$bool); - - // offset: 21; size: 2; not used - } - - - /** - * Read RANGEPROTECTION record - * Reading of this record is based on Microsoft Office Excel 97-2000 Binary File Format Specification, - * where it is referred to as FEAT record - */ - private function readRangeProtection() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // move stream pointer to next record - $this->pos += 4 + $length; - - // local pointer in record data - $offset = 0; - - if (!$this->readDataOnly) { - $offset += 12; - - // offset: 12; size: 2; shared feature type, 2 = enhanced protection, 4 = smart tag - $isf = self::getInt2d($recordData, 12); - if ($isf != 2) { - // we only read FEAT records of type 2 - return; - } - $offset += 2; - - $offset += 5; - - // offset: 19; size: 2; count of ref ranges this feature is on - $cref = self::getInt2d($recordData, 19); - $offset += 2; - - $offset += 6; - - // offset: 27; size: 8 * $cref; list of cell ranges (like in hyperlink record) - $cellRanges = array(); - for ($i = 0; $i < $cref; ++$i) { - try { - $cellRange = $this->readBIFF8CellRangeAddressFixed(substr($recordData, 27 + 8 * $i, 8)); - } catch (PHPExcel_Exception $e) { - return; - } - $cellRanges[] = $cellRange; - $offset += 8; - } - - // offset: var; size: var; variable length of feature specific data - $rgbFeat = substr($recordData, $offset); - $offset += 4; - - // offset: var; size: 4; the encrypted password (only 16-bit although field is 32-bit) - $wPassword = self::getInt4d($recordData, $offset); - $offset += 4; - - // Apply range protection to sheet - if ($cellRanges) { - $this->phpSheet->protectCells(implode(' ', $cellRanges), strtoupper(dechex($wPassword)), true); - } - } - } - - - /** - * Read IMDATA record - */ - private function readImData() - { - $length = self::getInt2d($this->data, $this->pos + 2); - - // get spliced record data - $splicedRecordData = $this->getSplicedRecordData(); - $recordData = $splicedRecordData['recordData']; - - // UNDER CONSTRUCTION - - // offset: 0; size: 2; image format - $cf = self::getInt2d($recordData, 0); - - // offset: 2; size: 2; environment from which the file was written - $env = self::getInt2d($recordData, 2); - - // offset: 4; size: 4; length of the image data - $lcb = self::getInt4d($recordData, 4); - - // offset: 8; size: var; image data - $iData = substr($recordData, 8); - - switch ($cf) { - case 0x09: // Windows bitmap format - // BITMAPCOREINFO - // 1. BITMAPCOREHEADER - // offset: 0; size: 4; bcSize, Specifies the number of bytes required by the structure - $bcSize = self::getInt4d($iData, 0); - // var_dump($bcSize); - - // offset: 4; size: 2; bcWidth, specifies the width of the bitmap, in pixels - $bcWidth = self::getInt2d($iData, 4); - // var_dump($bcWidth); - - // offset: 6; size: 2; bcHeight, specifies the height of the bitmap, in pixels. - $bcHeight = self::getInt2d($iData, 6); - // var_dump($bcHeight); - $ih = imagecreatetruecolor($bcWidth, $bcHeight); - - // offset: 8; size: 2; bcPlanes, specifies the number of planes for the target device. This value must be 1 - - // offset: 10; size: 2; bcBitCount specifies the number of bits-per-pixel. This value must be 1, 4, 8, or 24 - $bcBitCount = self::getInt2d($iData, 10); - // var_dump($bcBitCount); - - $rgbString = substr($iData, 12); - $rgbTriples = array(); - while (strlen($rgbString) > 0) { - $rgbTriples[] = unpack('Cb/Cg/Cr', $rgbString); - $rgbString = substr($rgbString, 3); - } - $x = 0; - $y = 0; - foreach ($rgbTriples as $i => $rgbTriple) { - $color = imagecolorallocate($ih, $rgbTriple['r'], $rgbTriple['g'], $rgbTriple['b']); - imagesetpixel($ih, $x, $bcHeight - 1 - $y, $color); - $x = ($x + 1) % $bcWidth; - $y = $y + floor(($x + 1) / $bcWidth); - } - //imagepng($ih, 'image.png'); - - $drawing = new PHPExcel_Worksheet_Drawing(); - $drawing->setPath($filename); - $drawing->setWorksheet($this->phpSheet); - break; - case 0x02: // Windows metafile or Macintosh PICT format - case 0x0e: // native format - default: - break; - } - - // getSplicedRecordData() takes care of moving current position in data stream - } - - - /** - * Read a free CONTINUE record. Free CONTINUE record may be a camouflaged MSODRAWING record - * When MSODRAWING data on a sheet exceeds 8224 bytes, CONTINUE records are used instead. Undocumented. - * In this case, we must treat the CONTINUE record as a MSODRAWING record - */ - private function readContinue() - { - $length = self::getInt2d($this->data, $this->pos + 2); - $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); - - // check if we are reading drawing data - // this is in case a free CONTINUE record occurs in other circumstances we are unaware of - if ($this->drawingData == '') { - // move stream pointer to next record - $this->pos += 4 + $length; - - return; - } - - // check if record data is at least 4 bytes long, otherwise there is no chance this is MSODRAWING data - if ($length < 4) { - // move stream pointer to next record - $this->pos += 4 + $length; - - return; - } - - // dirty check to see if CONTINUE record could be a camouflaged MSODRAWING record - // look inside CONTINUE record to see if it looks like a part of an Escher stream - // we know that Escher stream may be split at least at - // 0xF003 MsofbtSpgrContainer - // 0xF004 MsofbtSpContainer - // 0xF00D MsofbtClientTextbox - $validSplitPoints = array(0xF003, 0xF004, 0xF00D); // add identifiers if we find more - - $splitPoint = self::getInt2d($recordData, 2); - if (in_array($splitPoint, $validSplitPoints)) { - // get spliced record data (and move pointer to next record) - $splicedRecordData = $this->getSplicedRecordData(); - $this->drawingData .= $splicedRecordData['recordData']; - - return; - } - - // move stream pointer to next record - $this->pos += 4 + $length; - } - - - /** - * Reads a record from current position in data stream and continues reading data as long as CONTINUE - * records are found. Splices the record data pieces and returns the combined string as if record data - * is in one piece. - * Moves to next current position in data stream to start of next record different from a CONtINUE record - * - * @return array - */ - private function getSplicedRecordData() - { - $data = ''; - $spliceOffsets = array(); - - $i = 0; - $spliceOffsets[0] = 0; - - do { - ++$i; - - // offset: 0; size: 2; identifier - $identifier = self::getInt2d($this->data, $this->pos); - // offset: 2; size: 2; length - $length = self::getInt2d($this->data, $this->pos + 2); - $data .= $this->readRecordData($this->data, $this->pos + 4, $length); - - $spliceOffsets[$i] = $spliceOffsets[$i - 1] + $length; - - $this->pos += 4 + $length; - $nextIdentifier = self::getInt2d($this->data, $this->pos); - } while ($nextIdentifier == self::XLS_TYPE_CONTINUE); - - $splicedData = array( - 'recordData' => $data, - 'spliceOffsets' => $spliceOffsets, - ); - - return $splicedData; - - } - - - /** - * Convert formula structure into human readable Excel formula like 'A3+A5*5' - * - * @param string $formulaStructure The complete binary data for the formula - * @param string $baseCell Base cell, only needed when formula contains tRefN tokens, e.g. with shared formulas - * @return string Human readable formula - */ - private function getFormulaFromStructure($formulaStructure, $baseCell = 'A1') - { - // offset: 0; size: 2; size of the following formula data - $sz = self::getInt2d($formulaStructure, 0); - - // offset: 2; size: sz - $formulaData = substr($formulaStructure, 2, $sz); - - // for debug: dump the formula data - //echo ''; - //echo 'size: ' . $sz . "\n"; - //echo 'the entire formula data: '; - //Debug::dump($formulaData); - //echo "\n----\n"; - - // offset: 2 + sz; size: variable (optional) - if (strlen($formulaStructure) > 2 + $sz) { - $additionalData = substr($formulaStructure, 2 + $sz); - - // for debug: dump the additional data - //echo 'the entire additional data: '; - //Debug::dump($additionalData); - //echo "\n----\n"; - } else { - $additionalData = ''; - } - - return $this->getFormulaFromData($formulaData, $additionalData, $baseCell); - } - - - /** - * Take formula data and additional data for formula and return human readable formula - * - * @param string $formulaData The binary data for the formula itself - * @param string $additionalData Additional binary data going with the formula - * @param string $baseCell Base cell, only needed when formula contains tRefN tokens, e.g. with shared formulas - * @return string Human readable formula - */ - private function getFormulaFromData($formulaData, $additionalData = '', $baseCell = 'A1') - { - // start parsing the formula data - $tokens = array(); - - while (strlen($formulaData) > 0 and $token = $this->getNextToken($formulaData, $baseCell)) { - $tokens[] = $token; - $formulaData = substr($formulaData, $token['size']); - - // for debug: dump the token - //var_dump($token); - } - - $formulaString = $this->createFormulaFromTokens($tokens, $additionalData); - - return $formulaString; - } - - - /** - * Take array of tokens together with additional data for formula and return human readable formula - * - * @param array $tokens - * @param array $additionalData Additional binary data going with the formula - * @param string $baseCell Base cell, only needed when formula contains tRefN tokens, e.g. with shared formulas - * @return string Human readable formula - */ - private function createFormulaFromTokens($tokens, $additionalData) - { - // empty formula? - if (empty($tokens)) { - return ''; - } - - $formulaStrings = array(); - foreach ($tokens as $token) { - // initialize spaces - $space0 = isset($space0) ? $space0 : ''; // spaces before next token, not tParen - $space1 = isset($space1) ? $space1 : ''; // carriage returns before next token, not tParen - $space2 = isset($space2) ? $space2 : ''; // spaces before opening parenthesis - $space3 = isset($space3) ? $space3 : ''; // carriage returns before opening parenthesis - $space4 = isset($space4) ? $space4 : ''; // spaces before closing parenthesis - $space5 = isset($space5) ? $space5 : ''; // carriage returns before closing parenthesis - - switch ($token['name']) { - case 'tAdd': // addition - case 'tConcat': // addition - case 'tDiv': // division - case 'tEQ': // equality - case 'tGE': // greater than or equal - case 'tGT': // greater than - case 'tIsect': // intersection - case 'tLE': // less than or equal - case 'tList': // less than or equal - case 'tLT': // less than - case 'tMul': // multiplication - case 'tNE': // multiplication - case 'tPower': // power - case 'tRange': // range - case 'tSub': // subtraction - $op2 = array_pop($formulaStrings); - $op1 = array_pop($formulaStrings); - $formulaStrings[] = "$op1$space1$space0{$token['data']}$op2"; - unset($space0, $space1); - break; - case 'tUplus': // unary plus - case 'tUminus': // unary minus - $op = array_pop($formulaStrings); - $formulaStrings[] = "$space1$space0{$token['data']}$op"; - unset($space0, $space1); - break; - case 'tPercent': // percent sign - $op = array_pop($formulaStrings); - $formulaStrings[] = "$op$space1$space0{$token['data']}"; - unset($space0, $space1); - break; - case 'tAttrVolatile': // indicates volatile function - case 'tAttrIf': - case 'tAttrSkip': - case 'tAttrChoose': - // token is only important for Excel formula evaluator - // do nothing - break; - case 'tAttrSpace': // space / carriage return - // space will be used when next token arrives, do not alter formulaString stack - switch ($token['data']['spacetype']) { - case 'type0': - $space0 = str_repeat(' ', $token['data']['spacecount']); - break; - case 'type1': - $space1 = str_repeat("\n", $token['data']['spacecount']); - break; - case 'type2': - $space2 = str_repeat(' ', $token['data']['spacecount']); - break; - case 'type3': - $space3 = str_repeat("\n", $token['data']['spacecount']); - break; - case 'type4': - $space4 = str_repeat(' ', $token['data']['spacecount']); - break; - case 'type5': - $space5 = str_repeat("\n", $token['data']['spacecount']); - break; - } - break; - case 'tAttrSum': // SUM function with one parameter - $op = array_pop($formulaStrings); - $formulaStrings[] = "{$space1}{$space0}SUM($op)"; - unset($space0, $space1); - break; - case 'tFunc': // function with fixed number of arguments - case 'tFuncV': // function with variable number of arguments - if ($token['data']['function'] != '') { - // normal function - $ops = array(); // array of operators - for ($i = 0; $i < $token['data']['args']; ++$i) { - $ops[] = array_pop($formulaStrings); - } - $ops = array_reverse($ops); - $formulaStrings[] = "$space1$space0{$token['data']['function']}(" . implode(',', $ops) . ")"; - unset($space0, $space1); - } else { - // add-in function - $ops = array(); // array of operators - for ($i = 0; $i < $token['data']['args'] - 1; ++$i) { - $ops[] = array_pop($formulaStrings); - } - $ops = array_reverse($ops); - $function = array_pop($formulaStrings); - $formulaStrings[] = "$space1$space0$function(" . implode(',', $ops) . ")"; - unset($space0, $space1); - } - break; - case 'tParen': // parenthesis - $expression = array_pop($formulaStrings); - $formulaStrings[] = "$space3$space2($expression$space5$space4)"; - unset($space2, $space3, $space4, $space5); - break; - case 'tArray': // array constant - $constantArray = self::readBIFF8ConstantArray($additionalData); - $formulaStrings[] = $space1 . $space0 . $constantArray['value']; - $additionalData = substr($additionalData, $constantArray['size']); // bite of chunk of additional data - unset($space0, $space1); - break; - case 'tMemArea': - // bite off chunk of additional data - $cellRangeAddressList = $this->readBIFF8CellRangeAddressList($additionalData); - $additionalData = substr($additionalData, $cellRangeAddressList['size']); - $formulaStrings[] = "$space1$space0{$token['data']}"; - unset($space0, $space1); - break; - case 'tArea': // cell range address - case 'tBool': // boolean - case 'tErr': // error code - case 'tInt': // integer - case 'tMemErr': - case 'tMemFunc': - case 'tMissArg': - case 'tName': - case 'tNameX': - case 'tNum': // number - case 'tRef': // single cell reference - case 'tRef3d': // 3d cell reference - case 'tArea3d': // 3d cell range reference - case 'tRefN': - case 'tAreaN': - case 'tStr': // string - $formulaStrings[] = "$space1$space0{$token['data']}"; - unset($space0, $space1); - break; - } - } - $formulaString = $formulaStrings[0]; - - // for debug: dump the human readable formula - //echo '----' . "\n"; - //echo 'Formula: ' . $formulaString; - - return $formulaString; - } - - - /** - * Fetch next token from binary formula data - * - * @param string Formula data - * @param string $baseCell Base cell, only needed when formula contains tRefN tokens, e.g. with shared formulas - * @return array - * @throws PHPExcel_Reader_Exception - */ - private function getNextToken($formulaData, $baseCell = 'A1') - { - // offset: 0; size: 1; token id - $id = ord($formulaData[0]); // token id - $name = false; // initialize token name - - switch ($id) { - case 0x03: - $name = 'tAdd'; - $size = 1; - $data = '+'; - break; - case 0x04: - $name = 'tSub'; - $size = 1; - $data = '-'; - break; - case 0x05: - $name = 'tMul'; - $size = 1; - $data = '*'; - break; - case 0x06: - $name = 'tDiv'; - $size = 1; - $data = '/'; - break; - case 0x07: - $name = 'tPower'; - $size = 1; - $data = '^'; - break; - case 0x08: - $name = 'tConcat'; - $size = 1; - $data = '&'; - break; - case 0x09: - $name = 'tLT'; - $size = 1; - $data = '<'; - break; - case 0x0A: - $name = 'tLE'; - $size = 1; - $data = '<='; - break; - case 0x0B: - $name = 'tEQ'; - $size = 1; - $data = '='; - break; - case 0x0C: - $name = 'tGE'; - $size = 1; - $data = '>='; - break; - case 0x0D: - $name = 'tGT'; - $size = 1; - $data = '>'; - break; - case 0x0E: - $name = 'tNE'; - $size = 1; - $data = '<>'; - break; - case 0x0F: - $name = 'tIsect'; - $size = 1; - $data = ' '; - break; - case 0x10: - $name = 'tList'; - $size = 1; - $data = ','; - break; - case 0x11: - $name = 'tRange'; - $size = 1; - $data = ':'; - break; - case 0x12: - $name = 'tUplus'; - $size = 1; - $data = '+'; - break; - case 0x13: - $name = 'tUminus'; - $size = 1; - $data = '-'; - break; - case 0x14: - $name = 'tPercent'; - $size = 1; - $data = '%'; - break; - case 0x15: // parenthesis - $name = 'tParen'; - $size = 1; - $data = null; - break; - case 0x16: // missing argument - $name = 'tMissArg'; - $size = 1; - $data = ''; - break; - case 0x17: // string - $name = 'tStr'; - // offset: 1; size: var; Unicode string, 8-bit string length - $string = self::readUnicodeStringShort(substr($formulaData, 1)); - $size = 1 + $string['size']; - $data = self::UTF8toExcelDoubleQuoted($string['value']); - break; - case 0x19: // Special attribute - // offset: 1; size: 1; attribute type flags: - switch (ord($formulaData[1])) { - case 0x01: - $name = 'tAttrVolatile'; - $size = 4; - $data = null; - break; - case 0x02: - $name = 'tAttrIf'; - $size = 4; - $data = null; - break; - case 0x04: - $name = 'tAttrChoose'; - // offset: 2; size: 2; number of choices in the CHOOSE function ($nc, number of parameters decreased by 1) - $nc = self::getInt2d($formulaData, 2); - // offset: 4; size: 2 * $nc - // offset: 4 + 2 * $nc; size: 2 - $size = 2 * $nc + 6; - $data = null; - break; - case 0x08: - $name = 'tAttrSkip'; - $size = 4; - $data = null; - break; - case 0x10: - $name = 'tAttrSum'; - $size = 4; - $data = null; - break; - case 0x40: - case 0x41: - $name = 'tAttrSpace'; - $size = 4; - // offset: 2; size: 2; space type and position - switch (ord($formulaData[2])) { - case 0x00: - $spacetype = 'type0'; - break; - case 0x01: - $spacetype = 'type1'; - break; - case 0x02: - $spacetype = 'type2'; - break; - case 0x03: - $spacetype = 'type3'; - break; - case 0x04: - $spacetype = 'type4'; - break; - case 0x05: - $spacetype = 'type5'; - break; - default: - throw new PHPExcel_Reader_Exception('Unrecognized space type in tAttrSpace token'); - break; - } - // offset: 3; size: 1; number of inserted spaces/carriage returns - $spacecount = ord($formulaData[3]); - - $data = array('spacetype' => $spacetype, 'spacecount' => $spacecount); - break; - default: - throw new PHPExcel_Reader_Exception('Unrecognized attribute flag in tAttr token'); - break; - } - break; - case 0x1C: // error code - // offset: 1; size: 1; error code - $name = 'tErr'; - $size = 2; - $data = PHPExcel_Reader_Excel5_ErrorCode::lookup(ord($formulaData[1])); - break; - case 0x1D: // boolean - // offset: 1; size: 1; 0 = false, 1 = true; - $name = 'tBool'; - $size = 2; - $data = ord($formulaData[1]) ? 'TRUE' : 'FALSE'; - break; - case 0x1E: // integer - // offset: 1; size: 2; unsigned 16-bit integer - $name = 'tInt'; - $size = 3; - $data = self::getInt2d($formulaData, 1); - break; - case 0x1F: // number - // offset: 1; size: 8; - $name = 'tNum'; - $size = 9; - $data = self::extractNumber(substr($formulaData, 1)); - $data = str_replace(',', '.', (string)$data); // in case non-English locale - break; - case 0x20: // array constant - case 0x40: - case 0x60: - // offset: 1; size: 7; not used - $name = 'tArray'; - $size = 8; - $data = null; - break; - case 0x21: // function with fixed number of arguments - case 0x41: - case 0x61: - $name = 'tFunc'; - $size = 3; - // offset: 1; size: 2; index to built-in sheet function - switch (self::getInt2d($formulaData, 1)) { - case 2: - $function = 'ISNA'; - $args = 1; - break; - case 3: - $function = 'ISERROR'; - $args = 1; - break; - case 10: - $function = 'NA'; - $args = 0; - break; - case 15: - $function = 'SIN'; - $args = 1; - break; - case 16: - $function = 'COS'; - $args = 1; - break; - case 17: - $function = 'TAN'; - $args = 1; - break; - case 18: - $function = 'ATAN'; - $args = 1; - break; - case 19: - $function = 'PI'; - $args = 0; - break; - case 20: - $function = 'SQRT'; - $args = 1; - break; - case 21: - $function = 'EXP'; - $args = 1; - break; - case 22: - $function = 'LN'; - $args = 1; - break; - case 23: - $function = 'LOG10'; - $args = 1; - break; - case 24: - $function = 'ABS'; - $args = 1; - break; - case 25: - $function = 'INT'; - $args = 1; - break; - case 26: - $function = 'SIGN'; - $args = 1; - break; - case 27: - $function = 'ROUND'; - $args = 2; - break; - case 30: - $function = 'REPT'; - $args = 2; - break; - case 31: - $function = 'MID'; - $args = 3; - break; - case 32: - $function = 'LEN'; - $args = 1; - break; - case 33: - $function = 'VALUE'; - $args = 1; - break; - case 34: - $function = 'TRUE'; - $args = 0; - break; - case 35: - $function = 'FALSE'; - $args = 0; - break; - case 38: - $function = 'NOT'; - $args = 1; - break; - case 39: - $function = 'MOD'; - $args = 2; - break; - case 40: - $function = 'DCOUNT'; - $args = 3; - break; - case 41: - $function = 'DSUM'; - $args = 3; - break; - case 42: - $function = 'DAVERAGE'; - $args = 3; - break; - case 43: - $function = 'DMIN'; - $args = 3; - break; - case 44: - $function = 'DMAX'; - $args = 3; - break; - case 45: - $function = 'DSTDEV'; - $args = 3; - break; - case 48: - $function = 'TEXT'; - $args = 2; - break; - case 61: - $function = 'MIRR'; - $args = 3; - break; - case 63: - $function = 'RAND'; - $args = 0; - break; - case 65: - $function = 'DATE'; - $args = 3; - break; - case 66: - $function = 'TIME'; - $args = 3; - break; - case 67: - $function = 'DAY'; - $args = 1; - break; - case 68: - $function = 'MONTH'; - $args = 1; - break; - case 69: - $function = 'YEAR'; - $args = 1; - break; - case 71: - $function = 'HOUR'; - $args = 1; - break; - case 72: - $function = 'MINUTE'; - $args = 1; - break; - case 73: - $function = 'SECOND'; - $args = 1; - break; - case 74: - $function = 'NOW'; - $args = 0; - break; - case 75: - $function = 'AREAS'; - $args = 1; - break; - case 76: - $function = 'ROWS'; - $args = 1; - break; - case 77: - $function = 'COLUMNS'; - $args = 1; - break; - case 83: - $function = 'TRANSPOSE'; - $args = 1; - break; - case 86: - $function = 'TYPE'; - $args = 1; - break; - case 97: - $function = 'ATAN2'; - $args = 2; - break; - case 98: - $function = 'ASIN'; - $args = 1; - break; - case 99: - $function = 'ACOS'; - $args = 1; - break; - case 105: - $function = 'ISREF'; - $args = 1; - break; - case 111: - $function = 'CHAR'; - $args = 1; - break; - case 112: - $function = 'LOWER'; - $args = 1; - break; - case 113: - $function = 'UPPER'; - $args = 1; - break; - case 114: - $function = 'PROPER'; - $args = 1; - break; - case 117: - $function = 'EXACT'; - $args = 2; - break; - case 118: - $function = 'TRIM'; - $args = 1; - break; - case 119: - $function = 'REPLACE'; - $args = 4; - break; - case 121: - $function = 'CODE'; - $args = 1; - break; - case 126: - $function = 'ISERR'; - $args = 1; - break; - case 127: - $function = 'ISTEXT'; - $args = 1; - break; - case 128: - $function = 'ISNUMBER'; - $args = 1; - break; - case 129: - $function = 'ISBLANK'; - $args = 1; - break; - case 130: - $function = 'T'; - $args = 1; - break; - case 131: - $function = 'N'; - $args = 1; - break; - case 140: - $function = 'DATEVALUE'; - $args = 1; - break; - case 141: - $function = 'TIMEVALUE'; - $args = 1; - break; - case 142: - $function = 'SLN'; - $args = 3; - break; - case 143: - $function = 'SYD'; - $args = 4; - break; - case 162: - $function = 'CLEAN'; - $args = 1; - break; - case 163: - $function = 'MDETERM'; - $args = 1; - break; - case 164: - $function = 'MINVERSE'; - $args = 1; - break; - case 165: - $function = 'MMULT'; - $args = 2; - break; - case 184: - $function = 'FACT'; - $args = 1; - break; - case 189: - $function = 'DPRODUCT'; - $args = 3; - break; - case 190: - $function = 'ISNONTEXT'; - $args = 1; - break; - case 195: - $function = 'DSTDEVP'; - $args = 3; - break; - case 196: - $function = 'DVARP'; - $args = 3; - break; - case 198: - $function = 'ISLOGICAL'; - $args = 1; - break; - case 199: - $function = 'DCOUNTA'; - $args = 3; - break; - case 207: - $function = 'REPLACEB'; - $args = 4; - break; - case 210: - $function = 'MIDB'; - $args = 3; - break; - case 211: - $function = 'LENB'; - $args = 1; - break; - case 212: - $function = 'ROUNDUP'; - $args = 2; - break; - case 213: - $function = 'ROUNDDOWN'; - $args = 2; - break; - case 214: - $function = 'ASC'; - $args = 1; - break; - case 215: - $function = 'DBCS'; - $args = 1; - break; - case 221: - $function = 'TODAY'; - $args = 0; - break; - case 229: - $function = 'SINH'; - $args = 1; - break; - case 230: - $function = 'COSH'; - $args = 1; - break; - case 231: - $function = 'TANH'; - $args = 1; - break; - case 232: - $function = 'ASINH'; - $args = 1; - break; - case 233: - $function = 'ACOSH'; - $args = 1; - break; - case 234: - $function = 'ATANH'; - $args = 1; - break; - case 235: - $function = 'DGET'; - $args = 3; - break; - case 244: - $function = 'INFO'; - $args = 1; - break; - case 252: - $function = 'FREQUENCY'; - $args = 2; - break; - case 261: - $function = 'ERROR.TYPE'; - $args = 1; - break; - case 271: - $function = 'GAMMALN'; - $args = 1; - break; - case 273: - $function = 'BINOMDIST'; - $args = 4; - break; - case 274: - $function = 'CHIDIST'; - $args = 2; - break; - case 275: - $function = 'CHIINV'; - $args = 2; - break; - case 276: - $function = 'COMBIN'; - $args = 2; - break; - case 277: - $function = 'CONFIDENCE'; - $args = 3; - break; - case 278: - $function = 'CRITBINOM'; - $args = 3; - break; - case 279: - $function = 'EVEN'; - $args = 1; - break; - case 280: - $function = 'EXPONDIST'; - $args = 3; - break; - case 281: - $function = 'FDIST'; - $args = 3; - break; - case 282: - $function = 'FINV'; - $args = 3; - break; - case 283: - $function = 'FISHER'; - $args = 1; - break; - case 284: - $function = 'FISHERINV'; - $args = 1; - break; - case 285: - $function = 'FLOOR'; - $args = 2; - break; - case 286: - $function = 'GAMMADIST'; - $args = 4; - break; - case 287: - $function = 'GAMMAINV'; - $args = 3; - break; - case 288: - $function = 'CEILING'; - $args = 2; - break; - case 289: - $function = 'HYPGEOMDIST'; - $args = 4; - break; - case 290: - $function = 'LOGNORMDIST'; - $args = 3; - break; - case 291: - $function = 'LOGINV'; - $args = 3; - break; - case 292: - $function = 'NEGBINOMDIST'; - $args = 3; - break; - case 293: - $function = 'NORMDIST'; - $args = 4; - break; - case 294: - $function = 'NORMSDIST'; - $args = 1; - break; - case 295: - $function = 'NORMINV'; - $args = 3; - break; - case 296: - $function = 'NORMSINV'; - $args = 1; - break; - case 297: - $function = 'STANDARDIZE'; - $args = 3; - break; - case 298: - $function = 'ODD'; - $args = 1; - break; - case 299: - $function = 'PERMUT'; - $args = 2; - break; - case 300: - $function = 'POISSON'; - $args = 3; - break; - case 301: - $function = 'TDIST'; - $args = 3; - break; - case 302: - $function = 'WEIBULL'; - $args = 4; - break; - case 303: - $function = 'SUMXMY2'; - $args = 2; - break; - case 304: - $function = 'SUMX2MY2'; - $args = 2; - break; - case 305: - $function = 'SUMX2PY2'; - $args = 2; - break; - case 306: - $function = 'CHITEST'; - $args = 2; - break; - case 307: - $function = 'CORREL'; - $args = 2; - break; - case 308: - $function = 'COVAR'; - $args = 2; - break; - case 309: - $function = 'FORECAST'; - $args = 3; - break; - case 310: - $function = 'FTEST'; - $args = 2; - break; - case 311: - $function = 'INTERCEPT'; - $args = 2; - break; - case 312: - $function = 'PEARSON'; - $args = 2; - break; - case 313: - $function = 'RSQ'; - $args = 2; - break; - case 314: - $function = 'STEYX'; - $args = 2; - break; - case 315: - $function = 'SLOPE'; - $args = 2; - break; - case 316: - $function = 'TTEST'; - $args = 4; - break; - case 325: - $function = 'LARGE'; - $args = 2; - break; - case 326: - $function = 'SMALL'; - $args = 2; - break; - case 327: - $function = 'QUARTILE'; - $args = 2; - break; - case 328: - $function = 'PERCENTILE'; - $args = 2; - break; - case 331: - $function = 'TRIMMEAN'; - $args = 2; - break; - case 332: - $function = 'TINV'; - $args = 2; - break; - case 337: - $function = 'POWER'; - $args = 2; - break; - case 342: - $function = 'RADIANS'; - $args = 1; - break; - case 343: - $function = 'DEGREES'; - $args = 1; - break; - case 346: - $function = 'COUNTIF'; - $args = 2; - break; - case 347: - $function = 'COUNTBLANK'; - $args = 1; - break; - case 350: - $function = 'ISPMT'; - $args = 4; - break; - case 351: - $function = 'DATEDIF'; - $args = 3; - break; - case 352: - $function = 'DATESTRING'; - $args = 1; - break; - case 353: - $function = 'NUMBERSTRING'; - $args = 2; - break; - case 360: - $function = 'PHONETIC'; - $args = 1; - break; - case 368: - $function = 'BAHTTEXT'; - $args = 1; - break; - default: - throw new PHPExcel_Reader_Exception('Unrecognized function in formula'); - break; - } - $data = array('function' => $function, 'args' => $args); - break; - case 0x22: // function with variable number of arguments - case 0x42: - case 0x62: - $name = 'tFuncV'; - $size = 4; - // offset: 1; size: 1; number of arguments - $args = ord($formulaData[1]); - // offset: 2: size: 2; index to built-in sheet function - $index = self::getInt2d($formulaData, 2); - switch ($index) { - case 0: - $function = 'COUNT'; - break; - case 1: - $function = 'IF'; - break; - case 4: - $function = 'SUM'; - break; - case 5: - $function = 'AVERAGE'; - break; - case 6: - $function = 'MIN'; - break; - case 7: - $function = 'MAX'; - break; - case 8: - $function = 'ROW'; - break; - case 9: - $function = 'COLUMN'; - break; - case 11: - $function = 'NPV'; - break; - case 12: - $function = 'STDEV'; - break; - case 13: - $function = 'DOLLAR'; - break; - case 14: - $function = 'FIXED'; - break; - case 28: - $function = 'LOOKUP'; - break; - case 29: - $function = 'INDEX'; - break; - case 36: - $function = 'AND'; - break; - case 37: - $function = 'OR'; - break; - case 46: - $function = 'VAR'; - break; - case 49: - $function = 'LINEST'; - break; - case 50: - $function = 'TREND'; - break; - case 51: - $function = 'LOGEST'; - break; - case 52: - $function = 'GROWTH'; - break; - case 56: - $function = 'PV'; - break; - case 57: - $function = 'FV'; - break; - case 58: - $function = 'NPER'; - break; - case 59: - $function = 'PMT'; - break; - case 60: - $function = 'RATE'; - break; - case 62: - $function = 'IRR'; - break; - case 64: - $function = 'MATCH'; - break; - case 70: - $function = 'WEEKDAY'; - break; - case 78: - $function = 'OFFSET'; - break; - case 82: - $function = 'SEARCH'; - break; - case 100: - $function = 'CHOOSE'; - break; - case 101: - $function = 'HLOOKUP'; - break; - case 102: - $function = 'VLOOKUP'; - break; - case 109: - $function = 'LOG'; - break; - case 115: - $function = 'LEFT'; - break; - case 116: - $function = 'RIGHT'; - break; - case 120: - $function = 'SUBSTITUTE'; - break; - case 124: - $function = 'FIND'; - break; - case 125: - $function = 'CELL'; - break; - case 144: - $function = 'DDB'; - break; - case 148: - $function = 'INDIRECT'; - break; - case 167: - $function = 'IPMT'; - break; - case 168: - $function = 'PPMT'; - break; - case 169: - $function = 'COUNTA'; - break; - case 183: - $function = 'PRODUCT'; - break; - case 193: - $function = 'STDEVP'; - break; - case 194: - $function = 'VARP'; - break; - case 197: - $function = 'TRUNC'; - break; - case 204: - $function = 'USDOLLAR'; - break; - case 205: - $function = 'FINDB'; - break; - case 206: - $function = 'SEARCHB'; - break; - case 208: - $function = 'LEFTB'; - break; - case 209: - $function = 'RIGHTB'; - break; - case 216: - $function = 'RANK'; - break; - case 219: - $function = 'ADDRESS'; - break; - case 220: - $function = 'DAYS360'; - break; - case 222: - $function = 'VDB'; - break; - case 227: - $function = 'MEDIAN'; - break; - case 228: - $function = 'SUMPRODUCT'; - break; - case 247: - $function = 'DB'; - break; - case 255: - $function = ''; - break; - case 269: - $function = 'AVEDEV'; - break; - case 270: - $function = 'BETADIST'; - break; - case 272: - $function = 'BETAINV'; - break; - case 317: - $function = 'PROB'; - break; - case 318: - $function = 'DEVSQ'; - break; - case 319: - $function = 'GEOMEAN'; - break; - case 320: - $function = 'HARMEAN'; - break; - case 321: - $function = 'SUMSQ'; - break; - case 322: - $function = 'KURT'; - break; - case 323: - $function = 'SKEW'; - break; - case 324: - $function = 'ZTEST'; - break; - case 329: - $function = 'PERCENTRANK'; - break; - case 330: - $function = 'MODE'; - break; - case 336: - $function = 'CONCATENATE'; - break; - case 344: - $function = 'SUBTOTAL'; - break; - case 345: - $function = 'SUMIF'; - break; - case 354: - $function = 'ROMAN'; - break; - case 358: - $function = 'GETPIVOTDATA'; - break; - case 359: - $function = 'HYPERLINK'; - break; - case 361: - $function = 'AVERAGEA'; - break; - case 362: - $function = 'MAXA'; - break; - case 363: - $function = 'MINA'; - break; - case 364: - $function = 'STDEVPA'; - break; - case 365: - $function = 'VARPA'; - break; - case 366: - $function = 'STDEVA'; - break; - case 367: - $function = 'VARA'; - break; - default: - throw new PHPExcel_Reader_Exception('Unrecognized function in formula'); - break; - } - $data = array('function' => $function, 'args' => $args); - break; - case 0x23: // index to defined name - case 0x43: - case 0x63: - $name = 'tName'; - $size = 5; - // offset: 1; size: 2; one-based index to definedname record - $definedNameIndex = self::getInt2d($formulaData, 1) - 1; - // offset: 2; size: 2; not used - $data = $this->definedname[$definedNameIndex]['name']; - break; - case 0x24: // single cell reference e.g. A5 - case 0x44: - case 0x64: - $name = 'tRef'; - $size = 5; - $data = $this->readBIFF8CellAddress(substr($formulaData, 1, 4)); - break; - case 0x25: // cell range reference to cells in the same sheet (2d) - case 0x45: - case 0x65: - $name = 'tArea'; - $size = 9; - $data = $this->readBIFF8CellRangeAddress(substr($formulaData, 1, 8)); - break; - case 0x26: // Constant reference sub-expression - case 0x46: - case 0x66: - $name = 'tMemArea'; - // offset: 1; size: 4; not used - // offset: 5; size: 2; size of the following subexpression - $subSize = self::getInt2d($formulaData, 5); - $size = 7 + $subSize; - $data = $this->getFormulaFromData(substr($formulaData, 7, $subSize)); - break; - case 0x27: // Deleted constant reference sub-expression - case 0x47: - case 0x67: - $name = 'tMemErr'; - // offset: 1; size: 4; not used - // offset: 5; size: 2; size of the following subexpression - $subSize = self::getInt2d($formulaData, 5); - $size = 7 + $subSize; - $data = $this->getFormulaFromData(substr($formulaData, 7, $subSize)); - break; - case 0x29: // Variable reference sub-expression - case 0x49: - case 0x69: - $name = 'tMemFunc'; - // offset: 1; size: 2; size of the following sub-expression - $subSize = self::getInt2d($formulaData, 1); - $size = 3 + $subSize; - $data = $this->getFormulaFromData(substr($formulaData, 3, $subSize)); - break; - case 0x2C: // Relative 2d cell reference reference, used in shared formulas and some other places - case 0x4C: - case 0x6C: - $name = 'tRefN'; - $size = 5; - $data = $this->readBIFF8CellAddressB(substr($formulaData, 1, 4), $baseCell); - break; - case 0x2D: // Relative 2d range reference - case 0x4D: - case 0x6D: - $name = 'tAreaN'; - $size = 9; - $data = $this->readBIFF8CellRangeAddressB(substr($formulaData, 1, 8), $baseCell); - break; - case 0x39: // External name - case 0x59: - case 0x79: - $name = 'tNameX'; - $size = 7; - // offset: 1; size: 2; index to REF entry in EXTERNSHEET record - // offset: 3; size: 2; one-based index to DEFINEDNAME or EXTERNNAME record - $index = self::getInt2d($formulaData, 3); - // assume index is to EXTERNNAME record - $data = $this->externalNames[$index - 1]['name']; - // offset: 5; size: 2; not used - break; - case 0x3A: // 3d reference to cell - case 0x5A: - case 0x7A: - $name = 'tRef3d'; - $size = 7; - - try { - // offset: 1; size: 2; index to REF entry - $sheetRange = $this->readSheetRangeByRefIndex(self::getInt2d($formulaData, 1)); - // offset: 3; size: 4; cell address - $cellAddress = $this->readBIFF8CellAddress(substr($formulaData, 3, 4)); - - $data = "$sheetRange!$cellAddress"; - } catch (PHPExcel_Exception $e) { - // deleted sheet reference - $data = '#REF!'; - } - break; - case 0x3B: // 3d reference to cell range - case 0x5B: - case 0x7B: - $name = 'tArea3d'; - $size = 11; - - try { - // offset: 1; size: 2; index to REF entry - $sheetRange = $this->readSheetRangeByRefIndex(self::getInt2d($formulaData, 1)); - // offset: 3; size: 8; cell address - $cellRangeAddress = $this->readBIFF8CellRangeAddress(substr($formulaData, 3, 8)); - - $data = "$sheetRange!$cellRangeAddress"; - } catch (PHPExcel_Exception $e) { - // deleted sheet reference - $data = '#REF!'; - } - break; - // Unknown cases // don't know how to deal with - default: - throw new PHPExcel_Reader_Exception('Unrecognized token ' . sprintf('%02X', $id) . ' in formula'); - break; - } - - return array( - 'id' => $id, - 'name' => $name, - 'size' => $size, - 'data' => $data, - ); - } - - - /** - * Reads a cell address in BIFF8 e.g. 'A2' or '$A$2' - * section 3.3.4 - * - * @param string $cellAddressStructure - * @return string - */ - private function readBIFF8CellAddress($cellAddressStructure) - { - // offset: 0; size: 2; index to row (0... 65535) (or offset (-32768... 32767)) - $row = self::getInt2d($cellAddressStructure, 0) + 1; - - // offset: 2; size: 2; index to column or column offset + relative flags - // bit: 7-0; mask 0x00FF; column index - $column = PHPExcel_Cell::stringFromColumnIndex(0x00FF & self::getInt2d($cellAddressStructure, 2)); - - // bit: 14; mask 0x4000; (1 = relative column index, 0 = absolute column index) - if (!(0x4000 & self::getInt2d($cellAddressStructure, 2))) { - $column = '$' . $column; - } - // bit: 15; mask 0x8000; (1 = relative row index, 0 = absolute row index) - if (!(0x8000 & self::getInt2d($cellAddressStructure, 2))) { - $row = '$' . $row; - } - - return $column . $row; - } - - - /** - * Reads a cell address in BIFF8 for shared formulas. Uses positive and negative values for row and column - * to indicate offsets from a base cell - * section 3.3.4 - * - * @param string $cellAddressStructure - * @param string $baseCell Base cell, only needed when formula contains tRefN tokens, e.g. with shared formulas - * @return string - */ - private function readBIFF8CellAddressB($cellAddressStructure, $baseCell = 'A1') - { - list($baseCol, $baseRow) = PHPExcel_Cell::coordinateFromString($baseCell); - $baseCol = PHPExcel_Cell::columnIndexFromString($baseCol) - 1; - - // offset: 0; size: 2; index to row (0... 65535) (or offset (-32768... 32767)) - $rowIndex = self::getInt2d($cellAddressStructure, 0); - $row = self::getInt2d($cellAddressStructure, 0) + 1; - - // offset: 2; size: 2; index to column or column offset + relative flags - // bit: 7-0; mask 0x00FF; column index - $colIndex = 0x00FF & self::getInt2d($cellAddressStructure, 2); - - // bit: 14; mask 0x4000; (1 = relative column index, 0 = absolute column index) - if (!(0x4000 & self::getInt2d($cellAddressStructure, 2))) { - $column = PHPExcel_Cell::stringFromColumnIndex($colIndex); - $column = '$' . $column; - } else { - $colIndex = ($colIndex <= 127) ? $colIndex : $colIndex - 256; - $column = PHPExcel_Cell::stringFromColumnIndex($baseCol + $colIndex); - } - - // bit: 15; mask 0x8000; (1 = relative row index, 0 = absolute row index) - if (!(0x8000 & self::getInt2d($cellAddressStructure, 2))) { - $row = '$' . $row; - } else { - $rowIndex = ($rowIndex <= 32767) ? $rowIndex : $rowIndex - 65536; - $row = $baseRow + $rowIndex; - } - - return $column . $row; - } - - - /** - * Reads a cell range address in BIFF5 e.g. 'A2:B6' or 'A1' - * always fixed range - * section 2.5.14 - * - * @param string $subData - * @return string - * @throws PHPExcel_Reader_Exception - */ - private function readBIFF5CellRangeAddressFixed($subData) - { - // offset: 0; size: 2; index to first row - $fr = self::getInt2d($subData, 0) + 1; - - // offset: 2; size: 2; index to last row - $lr = self::getInt2d($subData, 2) + 1; - - // offset: 4; size: 1; index to first column - $fc = ord($subData{4}); - - // offset: 5; size: 1; index to last column - $lc = ord($subData{5}); - - // check values - if ($fr > $lr || $fc > $lc) { - throw new PHPExcel_Reader_Exception('Not a cell range address'); - } - - // column index to letter - $fc = PHPExcel_Cell::stringFromColumnIndex($fc); - $lc = PHPExcel_Cell::stringFromColumnIndex($lc); - - if ($fr == $lr and $fc == $lc) { - return "$fc$fr"; - } - return "$fc$fr:$lc$lr"; - } - - - /** - * Reads a cell range address in BIFF8 e.g. 'A2:B6' or 'A1' - * always fixed range - * section 2.5.14 - * - * @param string $subData - * @return string - * @throws PHPExcel_Reader_Exception - */ - private function readBIFF8CellRangeAddressFixed($subData) - { - // offset: 0; size: 2; index to first row - $fr = self::getInt2d($subData, 0) + 1; - - // offset: 2; size: 2; index to last row - $lr = self::getInt2d($subData, 2) + 1; - - // offset: 4; size: 2; index to first column - $fc = self::getInt2d($subData, 4); - - // offset: 6; size: 2; index to last column - $lc = self::getInt2d($subData, 6); - - // check values - if ($fr > $lr || $fc > $lc) { - throw new PHPExcel_Reader_Exception('Not a cell range address'); - } - - // column index to letter - $fc = PHPExcel_Cell::stringFromColumnIndex($fc); - $lc = PHPExcel_Cell::stringFromColumnIndex($lc); - - if ($fr == $lr and $fc == $lc) { - return "$fc$fr"; - } - return "$fc$fr:$lc$lr"; - } - - - /** - * Reads a cell range address in BIFF8 e.g. 'A2:B6' or '$A$2:$B$6' - * there are flags indicating whether column/row index is relative - * section 3.3.4 - * - * @param string $subData - * @return string - */ - private function readBIFF8CellRangeAddress($subData) - { - // todo: if cell range is just a single cell, should this funciton - // not just return e.g. 'A1' and not 'A1:A1' ? - - // offset: 0; size: 2; index to first row (0... 65535) (or offset (-32768... 32767)) - $fr = self::getInt2d($subData, 0) + 1; - - // offset: 2; size: 2; index to last row (0... 65535) (or offset (-32768... 32767)) - $lr = self::getInt2d($subData, 2) + 1; - - // offset: 4; size: 2; index to first column or column offset + relative flags - - // bit: 7-0; mask 0x00FF; column index - $fc = PHPExcel_Cell::stringFromColumnIndex(0x00FF & self::getInt2d($subData, 4)); - - // bit: 14; mask 0x4000; (1 = relative column index, 0 = absolute column index) - if (!(0x4000 & self::getInt2d($subData, 4))) { - $fc = '$' . $fc; - } - - // bit: 15; mask 0x8000; (1 = relative row index, 0 = absolute row index) - if (!(0x8000 & self::getInt2d($subData, 4))) { - $fr = '$' . $fr; - } - - // offset: 6; size: 2; index to last column or column offset + relative flags - - // bit: 7-0; mask 0x00FF; column index - $lc = PHPExcel_Cell::stringFromColumnIndex(0x00FF & self::getInt2d($subData, 6)); - - // bit: 14; mask 0x4000; (1 = relative column index, 0 = absolute column index) - if (!(0x4000 & self::getInt2d($subData, 6))) { - $lc = '$' . $lc; - } - - // bit: 15; mask 0x8000; (1 = relative row index, 0 = absolute row index) - if (!(0x8000 & self::getInt2d($subData, 6))) { - $lr = '$' . $lr; - } - - return "$fc$fr:$lc$lr"; - } - - - /** - * Reads a cell range address in BIFF8 for shared formulas. Uses positive and negative values for row and column - * to indicate offsets from a base cell - * section 3.3.4 - * - * @param string $subData - * @param string $baseCell Base cell - * @return string Cell range address - */ - private function readBIFF8CellRangeAddressB($subData, $baseCell = 'A1') - { - list($baseCol, $baseRow) = PHPExcel_Cell::coordinateFromString($baseCell); - $baseCol = PHPExcel_Cell::columnIndexFromString($baseCol) - 1; - - // TODO: if cell range is just a single cell, should this funciton - // not just return e.g. 'A1' and not 'A1:A1' ? - - // offset: 0; size: 2; first row - $frIndex = self::getInt2d($subData, 0); // adjust below - - // offset: 2; size: 2; relative index to first row (0... 65535) should be treated as offset (-32768... 32767) - $lrIndex = self::getInt2d($subData, 2); // adjust below - - // offset: 4; size: 2; first column with relative/absolute flags - - // bit: 7-0; mask 0x00FF; column index - $fcIndex = 0x00FF & self::getInt2d($subData, 4); - - // bit: 14; mask 0x4000; (1 = relative column index, 0 = absolute column index) - if (!(0x4000 & self::getInt2d($subData, 4))) { - // absolute column index - $fc = PHPExcel_Cell::stringFromColumnIndex($fcIndex); - $fc = '$' . $fc; - } else { - // column offset - $fcIndex = ($fcIndex <= 127) ? $fcIndex : $fcIndex - 256; - $fc = PHPExcel_Cell::stringFromColumnIndex($baseCol + $fcIndex); - } - - // bit: 15; mask 0x8000; (1 = relative row index, 0 = absolute row index) - if (!(0x8000 & self::getInt2d($subData, 4))) { - // absolute row index - $fr = $frIndex + 1; - $fr = '$' . $fr; - } else { - // row offset - $frIndex = ($frIndex <= 32767) ? $frIndex : $frIndex - 65536; - $fr = $baseRow + $frIndex; - } - - // offset: 6; size: 2; last column with relative/absolute flags - - // bit: 7-0; mask 0x00FF; column index - $lcIndex = 0x00FF & self::getInt2d($subData, 6); - $lcIndex = ($lcIndex <= 127) ? $lcIndex : $lcIndex - 256; - $lc = PHPExcel_Cell::stringFromColumnIndex($baseCol + $lcIndex); - - // bit: 14; mask 0x4000; (1 = relative column index, 0 = absolute column index) - if (!(0x4000 & self::getInt2d($subData, 6))) { - // absolute column index - $lc = PHPExcel_Cell::stringFromColumnIndex($lcIndex); - $lc = '$' . $lc; - } else { - // column offset - $lcIndex = ($lcIndex <= 127) ? $lcIndex : $lcIndex - 256; - $lc = PHPExcel_Cell::stringFromColumnIndex($baseCol + $lcIndex); - } - - // bit: 15; mask 0x8000; (1 = relative row index, 0 = absolute row index) - if (!(0x8000 & self::getInt2d($subData, 6))) { - // absolute row index - $lr = $lrIndex + 1; - $lr = '$' . $lr; - } else { - // row offset - $lrIndex = ($lrIndex <= 32767) ? $lrIndex : $lrIndex - 65536; - $lr = $baseRow + $lrIndex; - } - - return "$fc$fr:$lc$lr"; - } - - - /** - * Read BIFF8 cell range address list - * section 2.5.15 - * - * @param string $subData - * @return array - */ - private function readBIFF8CellRangeAddressList($subData) - { - $cellRangeAddresses = array(); - - // offset: 0; size: 2; number of the following cell range addresses - $nm = self::getInt2d($subData, 0); - - $offset = 2; - // offset: 2; size: 8 * $nm; list of $nm (fixed) cell range addresses - for ($i = 0; $i < $nm; ++$i) { - $cellRangeAddresses[] = $this->readBIFF8CellRangeAddressFixed(substr($subData, $offset, 8)); - $offset += 8; - } - - return array( - 'size' => 2 + 8 * $nm, - 'cellRangeAddresses' => $cellRangeAddresses, - ); - } - - - /** - * Read BIFF5 cell range address list - * section 2.5.15 - * - * @param string $subData - * @return array - */ - private function readBIFF5CellRangeAddressList($subData) - { - $cellRangeAddresses = array(); - - // offset: 0; size: 2; number of the following cell range addresses - $nm = self::getInt2d($subData, 0); - - $offset = 2; - // offset: 2; size: 6 * $nm; list of $nm (fixed) cell range addresses - for ($i = 0; $i < $nm; ++$i) { - $cellRangeAddresses[] = $this->readBIFF5CellRangeAddressFixed(substr($subData, $offset, 6)); - $offset += 6; - } - - return array( - 'size' => 2 + 6 * $nm, - 'cellRangeAddresses' => $cellRangeAddresses, - ); - } - - - /** - * Get a sheet range like Sheet1:Sheet3 from REF index - * Note: If there is only one sheet in the range, one gets e.g Sheet1 - * It can also happen that the REF structure uses the -1 (FFFF) code to indicate deleted sheets, - * in which case an PHPExcel_Reader_Exception is thrown - * - * @param int $index - * @return string|false - * @throws PHPExcel_Reader_Exception - */ - private function readSheetRangeByRefIndex($index) - { - if (isset($this->ref[$index])) { - $type = $this->externalBooks[$this->ref[$index]['externalBookIndex']]['type']; - - switch ($type) { - case 'internal': - // check if we have a deleted 3d reference - if ($this->ref[$index]['firstSheetIndex'] == 0xFFFF or $this->ref[$index]['lastSheetIndex'] == 0xFFFF) { - throw new PHPExcel_Reader_Exception('Deleted sheet reference'); - } - - // we have normal sheet range (collapsed or uncollapsed) - $firstSheetName = $this->sheets[$this->ref[$index]['firstSheetIndex']]['name']; - $lastSheetName = $this->sheets[$this->ref[$index]['lastSheetIndex']]['name']; - - if ($firstSheetName == $lastSheetName) { - // collapsed sheet range - $sheetRange = $firstSheetName; - } else { - $sheetRange = "$firstSheetName:$lastSheetName"; - } - - // escape the single-quotes - $sheetRange = str_replace("'", "''", $sheetRange); - - // if there are special characters, we need to enclose the range in single-quotes - // todo: check if we have identified the whole set of special characters - // it seems that the following characters are not accepted for sheet names - // and we may assume that they are not present: []*/:\? - if (preg_match("/[ !\"@#£$%&{()}<>=+'|^,;-]/", $sheetRange)) { - $sheetRange = "'$sheetRange'"; - } - - return $sheetRange; - break; - default: - // TODO: external sheet support - throw new PHPExcel_Reader_Exception('Excel5 reader only supports internal sheets in fomulas'); - break; - } - } - return false; - } - - - /** - * read BIFF8 constant value array from array data - * returns e.g. array('value' => '{1,2;3,4}', 'size' => 40} - * section 2.5.8 - * - * @param string $arrayData - * @return array - */ - private static function readBIFF8ConstantArray($arrayData) - { - // offset: 0; size: 1; number of columns decreased by 1 - $nc = ord($arrayData[0]); - - // offset: 1; size: 2; number of rows decreased by 1 - $nr = self::getInt2d($arrayData, 1); - $size = 3; // initialize - $arrayData = substr($arrayData, 3); - - // offset: 3; size: var; list of ($nc + 1) * ($nr + 1) constant values - $matrixChunks = array(); - for ($r = 1; $r <= $nr + 1; ++$r) { - $items = array(); - for ($c = 1; $c <= $nc + 1; ++$c) { - $constant = self::readBIFF8Constant($arrayData); - $items[] = $constant['value']; - $arrayData = substr($arrayData, $constant['size']); - $size += $constant['size']; - } - $matrixChunks[] = implode(',', $items); // looks like e.g. '1,"hello"' - } - $matrix = '{' . implode(';', $matrixChunks) . '}'; - - return array( - 'value' => $matrix, - 'size' => $size, - ); - } - - - /** - * read BIFF8 constant value which may be 'Empty Value', 'Number', 'String Value', 'Boolean Value', 'Error Value' - * section 2.5.7 - * returns e.g. array('value' => '5', 'size' => 9) - * - * @param string $valueData - * @return array - */ - private static function readBIFF8Constant($valueData) - { - // offset: 0; size: 1; identifier for type of constant - $identifier = ord($valueData[0]); - - switch ($identifier) { - case 0x00: // empty constant (what is this?) - $value = ''; - $size = 9; - break; - case 0x01: // number - // offset: 1; size: 8; IEEE 754 floating-point value - $value = self::extractNumber(substr($valueData, 1, 8)); - $size = 9; - break; - case 0x02: // string value - // offset: 1; size: var; Unicode string, 16-bit string length - $string = self::readUnicodeStringLong(substr($valueData, 1)); - $value = '"' . $string['value'] . '"'; - $size = 1 + $string['size']; - break; - case 0x04: // boolean - // offset: 1; size: 1; 0 = FALSE, 1 = TRUE - if (ord($valueData[1])) { - $value = 'TRUE'; - } else { - $value = 'FALSE'; - } - $size = 9; - break; - case 0x10: // error code - // offset: 1; size: 1; error code - $value = PHPExcel_Reader_Excel5_ErrorCode::lookup(ord($valueData[1])); - $size = 9; - break; - } - return array( - 'value' => $value, - 'size' => $size, - ); - } - - - /** - * Extract RGB color - * OpenOffice.org's Documentation of the Microsoft Excel File Format, section 2.5.4 - * - * @param string $rgb Encoded RGB value (4 bytes) - * @return array - */ - private static function readRGB($rgb) - { - // offset: 0; size 1; Red component - $r = ord($rgb{0}); - - // offset: 1; size: 1; Green component - $g = ord($rgb{1}); - - // offset: 2; size: 1; Blue component - $b = ord($rgb{2}); - - // HEX notation, e.g. 'FF00FC' - $rgb = sprintf('%02X%02X%02X', $r, $g, $b); - - return array('rgb' => $rgb); - } - - - /** - * Read byte string (8-bit string length) - * OpenOffice documentation: 2.5.2 - * - * @param string $subData - * @return array - */ - private function readByteStringShort($subData) - { - // offset: 0; size: 1; length of the string (character count) - $ln = ord($subData[0]); - - // offset: 1: size: var; character array (8-bit characters) - $value = $this->decodeCodepage(substr($subData, 1, $ln)); - - return array( - 'value' => $value, - 'size' => 1 + $ln, // size in bytes of data structure - ); - } - - - /** - * Read byte string (16-bit string length) - * OpenOffice documentation: 2.5.2 - * - * @param string $subData - * @return array - */ - private function readByteStringLong($subData) - { - // offset: 0; size: 2; length of the string (character count) - $ln = self::getInt2d($subData, 0); - - // offset: 2: size: var; character array (8-bit characters) - $value = $this->decodeCodepage(substr($subData, 2)); - - //return $string; - return array( - 'value' => $value, - 'size' => 2 + $ln, // size in bytes of data structure - ); - } - - - /** - * Extracts an Excel Unicode short string (8-bit string length) - * OpenOffice documentation: 2.5.3 - * function will automatically find out where the Unicode string ends. - * - * @param string $subData - * @return array - */ - private static function readUnicodeStringShort($subData) - { - $value = ''; - - // offset: 0: size: 1; length of the string (character count) - $characterCount = ord($subData[0]); - - $string = self::readUnicodeString(substr($subData, 1), $characterCount); - - // add 1 for the string length - $string['size'] += 1; - - return $string; - } - - - /** - * Extracts an Excel Unicode long string (16-bit string length) - * OpenOffice documentation: 2.5.3 - * this function is under construction, needs to support rich text, and Asian phonetic settings - * - * @param string $subData - * @return array - */ - private static function readUnicodeStringLong($subData) - { - $value = ''; - - // offset: 0: size: 2; length of the string (character count) - $characterCount = self::getInt2d($subData, 0); - - $string = self::readUnicodeString(substr($subData, 2), $characterCount); - - // add 2 for the string length - $string['size'] += 2; - - return $string; - } - - - /** - * Read Unicode string with no string length field, but with known character count - * this function is under construction, needs to support rich text, and Asian phonetic settings - * OpenOffice.org's Documentation of the Microsoft Excel File Format, section 2.5.3 - * - * @param string $subData - * @param int $characterCount - * @return array - */ - private static function readUnicodeString($subData, $characterCount) - { - $value = ''; - - // offset: 0: size: 1; option flags - // bit: 0; mask: 0x01; character compression (0 = compressed 8-bit, 1 = uncompressed 16-bit) - $isCompressed = !((0x01 & ord($subData[0])) >> 0); - - // bit: 2; mask: 0x04; Asian phonetic settings - $hasAsian = (0x04) & ord($subData[0]) >> 2; - - // bit: 3; mask: 0x08; Rich-Text settings - $hasRichText = (0x08) & ord($subData[0]) >> 3; - - // offset: 1: size: var; character array - // this offset assumes richtext and Asian phonetic settings are off which is generally wrong - // needs to be fixed - $value = self::encodeUTF16(substr($subData, 1, $isCompressed ? $characterCount : 2 * $characterCount), $isCompressed); - - return array( - 'value' => $value, - 'size' => $isCompressed ? 1 + $characterCount : 1 + 2 * $characterCount, // the size in bytes including the option flags - ); - } - - - /** - * Convert UTF-8 string to string surounded by double quotes. Used for explicit string tokens in formulas. - * Example: hello"world --> "hello""world" - * - * @param string $value UTF-8 encoded string - * @return string - */ - private static function UTF8toExcelDoubleQuoted($value) - { - return '"' . str_replace('"', '""', $value) . '"'; - } - - - /** - * Reads first 8 bytes of a string and return IEEE 754 float - * - * @param string $data Binary string that is at least 8 bytes long - * @return float - */ - private static function extractNumber($data) - { - $rknumhigh = self::getInt4d($data, 4); - $rknumlow = self::getInt4d($data, 0); - $sign = ($rknumhigh & 0x80000000) >> 31; - $exp = (($rknumhigh & 0x7ff00000) >> 20) - 1023; - $mantissa = (0x100000 | ($rknumhigh & 0x000fffff)); - $mantissalow1 = ($rknumlow & 0x80000000) >> 31; - $mantissalow2 = ($rknumlow & 0x7fffffff); - $value = $mantissa / pow(2, (20 - $exp)); - - if ($mantissalow1 != 0) { - $value += 1 / pow(2, (21 - $exp)); - } - - $value += $mantissalow2 / pow(2, (52 - $exp)); - if ($sign) { - $value *= -1; - } - - return $value; - } - - - private static function getIEEE754($rknum) - { - if (($rknum & 0x02) != 0) { - $value = $rknum >> 2; - } else { - // changes by mmp, info on IEEE754 encoding from - // research.microsoft.com/~hollasch/cgindex/coding/ieeefloat.html - // The RK format calls for using only the most significant 30 bits - // of the 64 bit floating point value. The other 34 bits are assumed - // to be 0 so we use the upper 30 bits of $rknum as follows... - $sign = ($rknum & 0x80000000) >> 31; - $exp = ($rknum & 0x7ff00000) >> 20; - $mantissa = (0x100000 | ($rknum & 0x000ffffc)); - $value = $mantissa / pow(2, (20- ($exp - 1023))); - if ($sign) { - $value = -1 * $value; - } - //end of changes by mmp - } - if (($rknum & 0x01) != 0) { - $value /= 100; - } - return $value; - } - - - /** - * Get UTF-8 string from (compressed or uncompressed) UTF-16 string - * - * @param string $string - * @param bool $compressed - * @return string - */ - private static function encodeUTF16($string, $compressed = '') - { - if ($compressed) { - $string = self::uncompressByteString($string); - } - - return PHPExcel_Shared_String::ConvertEncoding($string, 'UTF-8', 'UTF-16LE'); - } - - /** - * Convert UTF-16 string in compressed notation to uncompressed form. Only used for BIFF8. - * - * @param string $string - * @return string - */ - private static function uncompressByteString($string) - { - $uncompressedString = ''; - $strLen = strlen($string); - for ($i = 0; $i < $strLen; ++$i) { - $uncompressedString .= $string[$i] . "\0"; - } - - return $uncompressedString; - } - - /** - * Convert string to UTF-8. Only used for BIFF5. - * - * @param string $string - * @return string - */ - private function decodeCodepage($string) - { - return PHPExcel_Shared_String::ConvertEncoding($string, 'UTF-8', $this->codepage); - } - - /** - * Read 16-bit unsigned integer - * - * @param string $data - * @param int $pos - * @return int - */ - public static function getInt2d($data, $pos) - { - return ord($data[$pos]) | (ord($data[$pos+1]) << 8); - } - - /** - * Read 32-bit signed integer - * - * @param string $data - * @param int $pos - * @return int - */ - public static function getInt4d($data, $pos) - { - // FIX: represent numbers correctly on 64-bit system - // http://sourceforge.net/tracker/index.php?func=detail&aid=1487372&group_id=99160&atid=623334 - // Hacked by Andreas Rehm 2006 to ensure correct result of the <<24 block on 32 and 64bit systems - $_or_24 = ord($data[$pos + 3]); - if ($_or_24 >= 128) { - // negative number - $_ord_24 = -abs((256 - $_or_24) << 24); - } else { - $_ord_24 = ($_or_24 & 127) << 24; - } - return ord($data[$pos]) | (ord($data[$pos+1]) << 8) | (ord($data[$pos+2]) << 16) | $_ord_24; - } - - private function parseRichText($is = '') - { - $value = new PHPExcel_RichText(); - $value->createText($is); - - return $value; - } -} diff --git a/application/third_party/PHPExcel/Reader/Excel5/Color.php b/application/third_party/PHPExcel/Reader/Excel5/Color.php deleted file mode 100644 index 1801df5e..00000000 --- a/application/third_party/PHPExcel/Reader/Excel5/Color.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php - -class PHPExcel_Reader_Excel5_Color -{ - /** - * Read color - * - * @param int $color Indexed color - * @param array $palette Color palette - * @return array RGB color value, example: array('rgb' => 'FF0000') - */ - public static function map($color, $palette, $version) - { - if ($color <= 0x07 || $color >= 0x40) { - // special built-in color - return PHPExcel_Reader_Excel5_Color_BuiltIn::lookup($color); - } elseif (isset($palette) && isset($palette[$color - 8])) { - // palette color, color index 0x08 maps to pallete index 0 - return $palette[$color - 8]; - } else { - // default color table - if ($version == PHPExcel_Reader_Excel5::XLS_BIFF8) { - return PHPExcel_Reader_Excel5_Color_BIFF8::lookup($color); - } else { - // BIFF5 - return PHPExcel_Reader_Excel5_Color_BIFF5::lookup($color); - } - } - - return $color; - } -} \ No newline at end of file diff --git a/application/third_party/PHPExcel/Reader/Excel5/Color/BIFF5.php b/application/third_party/PHPExcel/Reader/Excel5/Color/BIFF5.php deleted file mode 100644 index 159c27fc..00000000 --- a/application/third_party/PHPExcel/Reader/Excel5/Color/BIFF5.php +++ /dev/null @@ -1,77 +0,0 @@ -<?php - -class PHPExcel_Reader_Excel5_Color_BIFF5 -{ - protected static $map = array( - 0x08 => '000000', - 0x09 => 'FFFFFF', - 0x0A => 'FF0000', - 0x0B => '00FF00', - 0x0C => '0000FF', - 0x0D => 'FFFF00', - 0x0E => 'FF00FF', - 0x0F => '00FFFF', - 0x10 => '800000', - 0x11 => '008000', - 0x12 => '000080', - 0x13 => '808000', - 0x14 => '800080', - 0x15 => '008080', - 0x16 => 'C0C0C0', - 0x17 => '808080', - 0x18 => '8080FF', - 0x19 => '802060', - 0x1A => 'FFFFC0', - 0x1B => 'A0E0F0', - 0x1C => '600080', - 0x1D => 'FF8080', - 0x1E => '0080C0', - 0x1F => 'C0C0FF', - 0x20 => '000080', - 0x21 => 'FF00FF', - 0x22 => 'FFFF00', - 0x23 => '00FFFF', - 0x24 => '800080', - 0x25 => '800000', - 0x26 => '008080', - 0x27 => '0000FF', - 0x28 => '00CFFF', - 0x29 => '69FFFF', - 0x2A => 'E0FFE0', - 0x2B => 'FFFF80', - 0x2C => 'A6CAF0', - 0x2D => 'DD9CB3', - 0x2E => 'B38FEE', - 0x2F => 'E3E3E3', - 0x30 => '2A6FF9', - 0x31 => '3FB8CD', - 0x32 => '488436', - 0x33 => '958C41', - 0x34 => '8E5E42', - 0x35 => 'A0627A', - 0x36 => '624FAC', - 0x37 => '969696', - 0x38 => '1D2FBE', - 0x39 => '286676', - 0x3A => '004500', - 0x3B => '453E01', - 0x3C => '6A2813', - 0x3D => '85396A', - 0x3E => '4A3285', - 0x3F => '424242', - ); - - /** - * Map color array from BIFF5 built-in color index - * - * @param int $color - * @return array - */ - public static function lookup($color) - { - if (isset(self::$map[$color])) { - return array('rgb' => self::$map[$color]); - } - return array('rgb' => '000000'); - } -} \ No newline at end of file diff --git a/application/third_party/PHPExcel/Reader/Excel5/Color/BIFF8.php b/application/third_party/PHPExcel/Reader/Excel5/Color/BIFF8.php deleted file mode 100644 index 4d3f2d0a..00000000 --- a/application/third_party/PHPExcel/Reader/Excel5/Color/BIFF8.php +++ /dev/null @@ -1,77 +0,0 @@ -<?php - -class PHPExcel_Reader_Excel5_Color_BIFF8 -{ - protected static $map = array( - 0x08 => '000000', - 0x09 => 'FFFFFF', - 0x0A => 'FF0000', - 0x0B => '00FF00', - 0x0C => '0000FF', - 0x0D => 'FFFF00', - 0x0E => 'FF00FF', - 0x0F => '00FFFF', - 0x10 => '800000', - 0x11 => '008000', - 0x12 => '000080', - 0x13 => '808000', - 0x14 => '800080', - 0x15 => '008080', - 0x16 => 'C0C0C0', - 0x17 => '808080', - 0x18 => '9999FF', - 0x19 => '993366', - 0x1A => 'FFFFCC', - 0x1B => 'CCFFFF', - 0x1C => '660066', - 0x1D => 'FF8080', - 0x1E => '0066CC', - 0x1F => 'CCCCFF', - 0x20 => '000080', - 0x21 => 'FF00FF', - 0x22 => 'FFFF00', - 0x23 => '00FFFF', - 0x24 => '800080', - 0x25 => '800000', - 0x26 => '008080', - 0x27 => '0000FF', - 0x28 => '00CCFF', - 0x29 => 'CCFFFF', - 0x2A => 'CCFFCC', - 0x2B => 'FFFF99', - 0x2C => '99CCFF', - 0x2D => 'FF99CC', - 0x2E => 'CC99FF', - 0x2F => 'FFCC99', - 0x30 => '3366FF', - 0x31 => '33CCCC', - 0x32 => '99CC00', - 0x33 => 'FFCC00', - 0x34 => 'FF9900', - 0x35 => 'FF6600', - 0x36 => '666699', - 0x37 => '969696', - 0x38 => '003366', - 0x39 => '339966', - 0x3A => '003300', - 0x3B => '333300', - 0x3C => '993300', - 0x3D => '993366', - 0x3E => '333399', - 0x3F => '333333', - ); - - /** - * Map color array from BIFF8 built-in color index - * - * @param int $color - * @return array - */ - public static function lookup($color) - { - if (isset(self::$map[$color])) { - return array('rgb' => self::$map[$color]); - } - return array('rgb' => '000000'); - } -} \ No newline at end of file diff --git a/application/third_party/PHPExcel/Reader/Excel5/Color/BuiltIn.php b/application/third_party/PHPExcel/Reader/Excel5/Color/BuiltIn.php deleted file mode 100644 index a5b7e59b..00000000 --- a/application/third_party/PHPExcel/Reader/Excel5/Color/BuiltIn.php +++ /dev/null @@ -1,31 +0,0 @@ -<?php - -class PHPExcel_Reader_Excel5_Color_BuiltIn -{ - protected static $map = array( - 0x00 => '000000', - 0x01 => 'FFFFFF', - 0x02 => 'FF0000', - 0x03 => '00FF00', - 0x04 => '0000FF', - 0x05 => 'FFFF00', - 0x06 => 'FF00FF', - 0x07 => '00FFFF', - 0x40 => '000000', // system window text color - 0x41 => 'FFFFFF', // system window background color - ); - - /** - * Map built-in color to RGB value - * - * @param int $color Indexed color - * @return array - */ - public static function lookup($color) - { - if (isset(self::$map[$color])) { - return array('rgb' => self::$map[$color]); - } - return array('rgb' => '000000'); - } -} \ No newline at end of file diff --git a/application/third_party/PHPExcel/Reader/Excel5/ErrorCode.php b/application/third_party/PHPExcel/Reader/Excel5/ErrorCode.php deleted file mode 100644 index f1d1cb6d..00000000 --- a/application/third_party/PHPExcel/Reader/Excel5/ErrorCode.php +++ /dev/null @@ -1,28 +0,0 @@ -<?php - -class PHPExcel_Reader_Excel5_ErrorCode -{ - protected static $map = array( - 0x00 => '#NULL!', - 0x07 => '#DIV/0!', - 0x0F => '#VALUE!', - 0x17 => '#REF!', - 0x1D => '#NAME?', - 0x24 => '#NUM!', - 0x2A => '#N/A', - ); - - /** - * Map error code, e.g. '#N/A' - * - * @param int $code - * @return string - */ - public static function lookup($code) - { - if (isset(self::$map[$code])) { - return self::$map[$code]; - } - return false; - } -} \ No newline at end of file diff --git a/application/third_party/PHPExcel/Reader/Excel5/Escher.php b/application/third_party/PHPExcel/Reader/Excel5/Escher.php deleted file mode 100644 index 2b99e222..00000000 --- a/application/third_party/PHPExcel/Reader/Excel5/Escher.php +++ /dev/null @@ -1,669 +0,0 @@ -<?php - -/** - * PHPExcel_Reader_Excel5_Escher - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Reader_Excel5 - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Reader_Excel5_Escher -{ - const DGGCONTAINER = 0xF000; - const BSTORECONTAINER = 0xF001; - const DGCONTAINER = 0xF002; - const SPGRCONTAINER = 0xF003; - const SPCONTAINER = 0xF004; - const DGG = 0xF006; - const BSE = 0xF007; - const DG = 0xF008; - const SPGR = 0xF009; - const SP = 0xF00A; - const OPT = 0xF00B; - const CLIENTTEXTBOX = 0xF00D; - const CLIENTANCHOR = 0xF010; - const CLIENTDATA = 0xF011; - const BLIPJPEG = 0xF01D; - const BLIPPNG = 0xF01E; - const SPLITMENUCOLORS = 0xF11E; - const TERTIARYOPT = 0xF122; - - /** - * Escher stream data (binary) - * - * @var string - */ - private $data; - - /** - * Size in bytes of the Escher stream data - * - * @var int - */ - private $dataSize; - - /** - * Current position of stream pointer in Escher stream data - * - * @var int - */ - private $pos; - - /** - * The object to be returned by the reader. Modified during load. - * - * @var mixed - */ - private $object; - - /** - * Create a new PHPExcel_Reader_Excel5_Escher instance - * - * @param mixed $object - */ - public function __construct($object) - { - $this->object = $object; - } - - /** - * Load Escher stream data. May be a partial Escher stream. - * - * @param string $data - */ - public function load($data) - { - $this->data = $data; - - // total byte size of Excel data (workbook global substream + sheet substreams) - $this->dataSize = strlen($this->data); - - $this->pos = 0; - - // Parse Escher stream - while ($this->pos < $this->dataSize) { - // offset: 2; size: 2: Record Type - $fbt = PHPExcel_Reader_Excel5::getInt2d($this->data, $this->pos + 2); - - switch ($fbt) { - case self::DGGCONTAINER: - $this->readDggContainer(); - break; - case self::DGG: - $this->readDgg(); - break; - case self::BSTORECONTAINER: - $this->readBstoreContainer(); - break; - case self::BSE: - $this->readBSE(); - break; - case self::BLIPJPEG: - $this->readBlipJPEG(); - break; - case self::BLIPPNG: - $this->readBlipPNG(); - break; - case self::OPT: - $this->readOPT(); - break; - case self::TERTIARYOPT: - $this->readTertiaryOPT(); - break; - case self::SPLITMENUCOLORS: - $this->readSplitMenuColors(); - break; - case self::DGCONTAINER: - $this->readDgContainer(); - break; - case self::DG: - $this->readDg(); - break; - case self::SPGRCONTAINER: - $this->readSpgrContainer(); - break; - case self::SPCONTAINER: - $this->readSpContainer(); - break; - case self::SPGR: - $this->readSpgr(); - break; - case self::SP: - $this->readSp(); - break; - case self::CLIENTTEXTBOX: - $this->readClientTextbox(); - break; - case self::CLIENTANCHOR: - $this->readClientAnchor(); - break; - case self::CLIENTDATA: - $this->readClientData(); - break; - default: - $this->readDefault(); - break; - } - } - - return $this->object; - } - - /** - * Read a generic record - */ - private function readDefault() - { - // offset 0; size: 2; recVer and recInstance - $verInstance = PHPExcel_Reader_Excel5::getInt2d($this->data, $this->pos); - - // offset: 2; size: 2: Record Type - $fbt = PHPExcel_Reader_Excel5::getInt2d($this->data, $this->pos + 2); - - // bit: 0-3; mask: 0x000F; recVer - $recVer = (0x000F & $verInstance) >> 0; - - $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); - $recordData = substr($this->data, $this->pos + 8, $length); - - // move stream pointer to next record - $this->pos += 8 + $length; - } - - /** - * Read DggContainer record (Drawing Group Container) - */ - private function readDggContainer() - { - $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); - $recordData = substr($this->data, $this->pos + 8, $length); - - // move stream pointer to next record - $this->pos += 8 + $length; - - // record is a container, read contents - $dggContainer = new PHPExcel_Shared_Escher_DggContainer(); - $this->object->setDggContainer($dggContainer); - $reader = new PHPExcel_Reader_Excel5_Escher($dggContainer); - $reader->load($recordData); - } - - /** - * Read Dgg record (Drawing Group) - */ - private function readDgg() - { - $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); - $recordData = substr($this->data, $this->pos + 8, $length); - - // move stream pointer to next record - $this->pos += 8 + $length; - } - - /** - * Read BstoreContainer record (Blip Store Container) - */ - private function readBstoreContainer() - { - $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); - $recordData = substr($this->data, $this->pos + 8, $length); - - // move stream pointer to next record - $this->pos += 8 + $length; - - // record is a container, read contents - $bstoreContainer = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer(); - $this->object->setBstoreContainer($bstoreContainer); - $reader = new PHPExcel_Reader_Excel5_Escher($bstoreContainer); - $reader->load($recordData); - } - - /** - * Read BSE record - */ - private function readBSE() - { - // offset: 0; size: 2; recVer and recInstance - - // bit: 4-15; mask: 0xFFF0; recInstance - $recInstance = (0xFFF0 & PHPExcel_Reader_Excel5::getInt2d($this->data, $this->pos)) >> 4; - - $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); - $recordData = substr($this->data, $this->pos + 8, $length); - - // move stream pointer to next record - $this->pos += 8 + $length; - - // add BSE to BstoreContainer - $BSE = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE(); - $this->object->addBSE($BSE); - - $BSE->setBLIPType($recInstance); - - // offset: 0; size: 1; btWin32 (MSOBLIPTYPE) - $btWin32 = ord($recordData[0]); - - // offset: 1; size: 1; btWin32 (MSOBLIPTYPE) - $btMacOS = ord($recordData[1]); - - // offset: 2; size: 16; MD4 digest - $rgbUid = substr($recordData, 2, 16); - - // offset: 18; size: 2; tag - $tag = PHPExcel_Reader_Excel5::getInt2d($recordData, 18); - - // offset: 20; size: 4; size of BLIP in bytes - $size = PHPExcel_Reader_Excel5::getInt4d($recordData, 20); - - // offset: 24; size: 4; number of references to this BLIP - $cRef = PHPExcel_Reader_Excel5::getInt4d($recordData, 24); - - // offset: 28; size: 4; MSOFO file offset - $foDelay = PHPExcel_Reader_Excel5::getInt4d($recordData, 28); - - // offset: 32; size: 1; unused1 - $unused1 = ord($recordData{32}); - - // offset: 33; size: 1; size of nameData in bytes (including null terminator) - $cbName = ord($recordData{33}); - - // offset: 34; size: 1; unused2 - $unused2 = ord($recordData{34}); - - // offset: 35; size: 1; unused3 - $unused3 = ord($recordData{35}); - - // offset: 36; size: $cbName; nameData - $nameData = substr($recordData, 36, $cbName); - - // offset: 36 + $cbName, size: var; the BLIP data - $blipData = substr($recordData, 36 + $cbName); - - // record is a container, read contents - $reader = new PHPExcel_Reader_Excel5_Escher($BSE); - $reader->load($blipData); - } - - /** - * Read BlipJPEG record. Holds raw JPEG image data - */ - private function readBlipJPEG() - { - // offset: 0; size: 2; recVer and recInstance - - // bit: 4-15; mask: 0xFFF0; recInstance - $recInstance = (0xFFF0 & PHPExcel_Reader_Excel5::getInt2d($this->data, $this->pos)) >> 4; - - $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); - $recordData = substr($this->data, $this->pos + 8, $length); - - // move stream pointer to next record - $this->pos += 8 + $length; - - $pos = 0; - - // offset: 0; size: 16; rgbUid1 (MD4 digest of) - $rgbUid1 = substr($recordData, 0, 16); - $pos += 16; - - // offset: 16; size: 16; rgbUid2 (MD4 digest), only if $recInstance = 0x46B or 0x6E3 - if (in_array($recInstance, array(0x046B, 0x06E3))) { - $rgbUid2 = substr($recordData, 16, 16); - $pos += 16; - } - - // offset: var; size: 1; tag - $tag = ord($recordData{$pos}); - $pos += 1; - - // offset: var; size: var; the raw image data - $data = substr($recordData, $pos); - - $blip = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip(); - $blip->setData($data); - - $this->object->setBlip($blip); - } - - /** - * Read BlipPNG record. Holds raw PNG image data - */ - private function readBlipPNG() - { - // offset: 0; size: 2; recVer and recInstance - - // bit: 4-15; mask: 0xFFF0; recInstance - $recInstance = (0xFFF0 & PHPExcel_Reader_Excel5::getInt2d($this->data, $this->pos)) >> 4; - - $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); - $recordData = substr($this->data, $this->pos + 8, $length); - - // move stream pointer to next record - $this->pos += 8 + $length; - - $pos = 0; - - // offset: 0; size: 16; rgbUid1 (MD4 digest of) - $rgbUid1 = substr($recordData, 0, 16); - $pos += 16; - - // offset: 16; size: 16; rgbUid2 (MD4 digest), only if $recInstance = 0x46B or 0x6E3 - if ($recInstance == 0x06E1) { - $rgbUid2 = substr($recordData, 16, 16); - $pos += 16; - } - - // offset: var; size: 1; tag - $tag = ord($recordData{$pos}); - $pos += 1; - - // offset: var; size: var; the raw image data - $data = substr($recordData, $pos); - - $blip = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip(); - $blip->setData($data); - - $this->object->setBlip($blip); - } - - /** - * Read OPT record. This record may occur within DggContainer record or SpContainer - */ - private function readOPT() - { - // offset: 0; size: 2; recVer and recInstance - - // bit: 4-15; mask: 0xFFF0; recInstance - $recInstance = (0xFFF0 & PHPExcel_Reader_Excel5::getInt2d($this->data, $this->pos)) >> 4; - - $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); - $recordData = substr($this->data, $this->pos + 8, $length); - - // move stream pointer to next record - $this->pos += 8 + $length; - - $this->readOfficeArtRGFOPTE($recordData, $recInstance); - } - - /** - * Read TertiaryOPT record - */ - private function readTertiaryOPT() - { - // offset: 0; size: 2; recVer and recInstance - - // bit: 4-15; mask: 0xFFF0; recInstance - $recInstance = (0xFFF0 & PHPExcel_Reader_Excel5::getInt2d($this->data, $this->pos)) >> 4; - - $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); - $recordData = substr($this->data, $this->pos + 8, $length); - - // move stream pointer to next record - $this->pos += 8 + $length; - } - - /** - * Read SplitMenuColors record - */ - private function readSplitMenuColors() - { - $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); - $recordData = substr($this->data, $this->pos + 8, $length); - - // move stream pointer to next record - $this->pos += 8 + $length; - } - - /** - * Read DgContainer record (Drawing Container) - */ - private function readDgContainer() - { - $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); - $recordData = substr($this->data, $this->pos + 8, $length); - - // move stream pointer to next record - $this->pos += 8 + $length; - - // record is a container, read contents - $dgContainer = new PHPExcel_Shared_Escher_DgContainer(); - $this->object->setDgContainer($dgContainer); - $reader = new PHPExcel_Reader_Excel5_Escher($dgContainer); - $escher = $reader->load($recordData); - } - - /** - * Read Dg record (Drawing) - */ - private function readDg() - { - $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); - $recordData = substr($this->data, $this->pos + 8, $length); - - // move stream pointer to next record - $this->pos += 8 + $length; - } - - /** - * Read SpgrContainer record (Shape Group Container) - */ - private function readSpgrContainer() - { - // context is either context DgContainer or SpgrContainer - - $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); - $recordData = substr($this->data, $this->pos + 8, $length); - - // move stream pointer to next record - $this->pos += 8 + $length; - - // record is a container, read contents - $spgrContainer = new PHPExcel_Shared_Escher_DgContainer_SpgrContainer(); - - if ($this->object instanceof PHPExcel_Shared_Escher_DgContainer) { - // DgContainer - $this->object->setSpgrContainer($spgrContainer); - } else { - // SpgrContainer - $this->object->addChild($spgrContainer); - } - - $reader = new PHPExcel_Reader_Excel5_Escher($spgrContainer); - $escher = $reader->load($recordData); - } - - /** - * Read SpContainer record (Shape Container) - */ - private function readSpContainer() - { - $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); - $recordData = substr($this->data, $this->pos + 8, $length); - - // add spContainer to spgrContainer - $spContainer = new PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer(); - $this->object->addChild($spContainer); - - // move stream pointer to next record - $this->pos += 8 + $length; - - // record is a container, read contents - $reader = new PHPExcel_Reader_Excel5_Escher($spContainer); - $escher = $reader->load($recordData); - } - - /** - * Read Spgr record (Shape Group) - */ - private function readSpgr() - { - $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); - $recordData = substr($this->data, $this->pos + 8, $length); - - // move stream pointer to next record - $this->pos += 8 + $length; - } - - /** - * Read Sp record (Shape) - */ - private function readSp() - { - // offset: 0; size: 2; recVer and recInstance - - // bit: 4-15; mask: 0xFFF0; recInstance - $recInstance = (0xFFF0 & PHPExcel_Reader_Excel5::getInt2d($this->data, $this->pos)) >> 4; - - $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); - $recordData = substr($this->data, $this->pos + 8, $length); - - // move stream pointer to next record - $this->pos += 8 + $length; - } - - /** - * Read ClientTextbox record - */ - private function readClientTextbox() - { - // offset: 0; size: 2; recVer and recInstance - - // bit: 4-15; mask: 0xFFF0; recInstance - $recInstance = (0xFFF0 & PHPExcel_Reader_Excel5::getInt2d($this->data, $this->pos)) >> 4; - - $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); - $recordData = substr($this->data, $this->pos + 8, $length); - - // move stream pointer to next record - $this->pos += 8 + $length; - } - - /** - * Read ClientAnchor record. This record holds information about where the shape is anchored in worksheet - */ - private function readClientAnchor() - { - $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); - $recordData = substr($this->data, $this->pos + 8, $length); - - // move stream pointer to next record - $this->pos += 8 + $length; - - // offset: 2; size: 2; upper-left corner column index (0-based) - $c1 = PHPExcel_Reader_Excel5::getInt2d($recordData, 2); - - // offset: 4; size: 2; upper-left corner horizontal offset in 1/1024 of column width - $startOffsetX = PHPExcel_Reader_Excel5::getInt2d($recordData, 4); - - // offset: 6; size: 2; upper-left corner row index (0-based) - $r1 = PHPExcel_Reader_Excel5::getInt2d($recordData, 6); - - // offset: 8; size: 2; upper-left corner vertical offset in 1/256 of row height - $startOffsetY = PHPExcel_Reader_Excel5::getInt2d($recordData, 8); - - // offset: 10; size: 2; bottom-right corner column index (0-based) - $c2 = PHPExcel_Reader_Excel5::getInt2d($recordData, 10); - - // offset: 12; size: 2; bottom-right corner horizontal offset in 1/1024 of column width - $endOffsetX = PHPExcel_Reader_Excel5::getInt2d($recordData, 12); - - // offset: 14; size: 2; bottom-right corner row index (0-based) - $r2 = PHPExcel_Reader_Excel5::getInt2d($recordData, 14); - - // offset: 16; size: 2; bottom-right corner vertical offset in 1/256 of row height - $endOffsetY = PHPExcel_Reader_Excel5::getInt2d($recordData, 16); - - // set the start coordinates - $this->object->setStartCoordinates(PHPExcel_Cell::stringFromColumnIndex($c1) . ($r1 + 1)); - - // set the start offsetX - $this->object->setStartOffsetX($startOffsetX); - - // set the start offsetY - $this->object->setStartOffsetY($startOffsetY); - - // set the end coordinates - $this->object->setEndCoordinates(PHPExcel_Cell::stringFromColumnIndex($c2) . ($r2 + 1)); - - // set the end offsetX - $this->object->setEndOffsetX($endOffsetX); - - // set the end offsetY - $this->object->setEndOffsetY($endOffsetY); - } - - /** - * Read ClientData record - */ - private function readClientData() - { - $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); - $recordData = substr($this->data, $this->pos + 8, $length); - - // move stream pointer to next record - $this->pos += 8 + $length; - } - - /** - * Read OfficeArtRGFOPTE table of property-value pairs - * - * @param string $data Binary data - * @param int $n Number of properties - */ - private function readOfficeArtRGFOPTE($data, $n) - { - $splicedComplexData = substr($data, 6 * $n); - - // loop through property-value pairs - for ($i = 0; $i < $n; ++$i) { - // read 6 bytes at a time - $fopte = substr($data, 6 * $i, 6); - - // offset: 0; size: 2; opid - $opid = PHPExcel_Reader_Excel5::getInt2d($fopte, 0); - - // bit: 0-13; mask: 0x3FFF; opid.opid - $opidOpid = (0x3FFF & $opid) >> 0; - - // bit: 14; mask 0x4000; 1 = value in op field is BLIP identifier - $opidFBid = (0x4000 & $opid) >> 14; - - // bit: 15; mask 0x8000; 1 = this is a complex property, op field specifies size of complex data - $opidFComplex = (0x8000 & $opid) >> 15; - - // offset: 2; size: 4; the value for this property - $op = PHPExcel_Reader_Excel5::getInt4d($fopte, 2); - - if ($opidFComplex) { - $complexData = substr($splicedComplexData, 0, $op); - $splicedComplexData = substr($splicedComplexData, $op); - - // we store string value with complex data - $value = $complexData; - } else { - // we store integer value - $value = $op; - } - - $this->object->setOPT($opidOpid, $value); - } - } -} diff --git a/application/third_party/PHPExcel/Reader/Excel5/MD5.php b/application/third_party/PHPExcel/Reader/Excel5/MD5.php deleted file mode 100644 index f14ea946..00000000 --- a/application/third_party/PHPExcel/Reader/Excel5/MD5.php +++ /dev/null @@ -1,203 +0,0 @@ -<?php - -/** - * PHPExcel_Reader_Excel5_MD5 - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Reader_Excel5 - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Reader_Excel5_MD5 -{ - // Context - private $a; - private $b; - private $c; - private $d; - - /** - * MD5 stream constructor - */ - public function __construct() - { - $this->reset(); - } - - /** - * Reset the MD5 stream context - */ - public function reset() - { - $this->a = 0x67452301; - $this->b = 0xEFCDAB89; - $this->c = 0x98BADCFE; - $this->d = 0x10325476; - } - - /** - * Get MD5 stream context - * - * @return string - */ - public function getContext() - { - $s = ''; - foreach (array('a', 'b', 'c', 'd') as $i) { - $v = $this->{$i}; - $s .= chr($v & 0xff); - $s .= chr(($v >> 8) & 0xff); - $s .= chr(($v >> 16) & 0xff); - $s .= chr(($v >> 24) & 0xff); - } - - return $s; - } - - /** - * Add data to context - * - * @param string $data Data to add - */ - public function add($data) - { - $words = array_values(unpack('V16', $data)); - - $A = $this->a; - $B = $this->b; - $C = $this->c; - $D = $this->d; - - $F = array('PHPExcel_Reader_Excel5_MD5','f'); - $G = array('PHPExcel_Reader_Excel5_MD5','g'); - $H = array('PHPExcel_Reader_Excel5_MD5','h'); - $I = array('PHPExcel_Reader_Excel5_MD5','i'); - - /* ROUND 1 */ - self::step($F, $A, $B, $C, $D, $words[0], 7, 0xd76aa478); - self::step($F, $D, $A, $B, $C, $words[1], 12, 0xe8c7b756); - self::step($F, $C, $D, $A, $B, $words[2], 17, 0x242070db); - self::step($F, $B, $C, $D, $A, $words[3], 22, 0xc1bdceee); - self::step($F, $A, $B, $C, $D, $words[4], 7, 0xf57c0faf); - self::step($F, $D, $A, $B, $C, $words[5], 12, 0x4787c62a); - self::step($F, $C, $D, $A, $B, $words[6], 17, 0xa8304613); - self::step($F, $B, $C, $D, $A, $words[7], 22, 0xfd469501); - self::step($F, $A, $B, $C, $D, $words[8], 7, 0x698098d8); - self::step($F, $D, $A, $B, $C, $words[9], 12, 0x8b44f7af); - self::step($F, $C, $D, $A, $B, $words[10], 17, 0xffff5bb1); - self::step($F, $B, $C, $D, $A, $words[11], 22, 0x895cd7be); - self::step($F, $A, $B, $C, $D, $words[12], 7, 0x6b901122); - self::step($F, $D, $A, $B, $C, $words[13], 12, 0xfd987193); - self::step($F, $C, $D, $A, $B, $words[14], 17, 0xa679438e); - self::step($F, $B, $C, $D, $A, $words[15], 22, 0x49b40821); - - /* ROUND 2 */ - self::step($G, $A, $B, $C, $D, $words[1], 5, 0xf61e2562); - self::step($G, $D, $A, $B, $C, $words[6], 9, 0xc040b340); - self::step($G, $C, $D, $A, $B, $words[11], 14, 0x265e5a51); - self::step($G, $B, $C, $D, $A, $words[0], 20, 0xe9b6c7aa); - self::step($G, $A, $B, $C, $D, $words[5], 5, 0xd62f105d); - self::step($G, $D, $A, $B, $C, $words[10], 9, 0x02441453); - self::step($G, $C, $D, $A, $B, $words[15], 14, 0xd8a1e681); - self::step($G, $B, $C, $D, $A, $words[4], 20, 0xe7d3fbc8); - self::step($G, $A, $B, $C, $D, $words[9], 5, 0x21e1cde6); - self::step($G, $D, $A, $B, $C, $words[14], 9, 0xc33707d6); - self::step($G, $C, $D, $A, $B, $words[3], 14, 0xf4d50d87); - self::step($G, $B, $C, $D, $A, $words[8], 20, 0x455a14ed); - self::step($G, $A, $B, $C, $D, $words[13], 5, 0xa9e3e905); - self::step($G, $D, $A, $B, $C, $words[2], 9, 0xfcefa3f8); - self::step($G, $C, $D, $A, $B, $words[7], 14, 0x676f02d9); - self::step($G, $B, $C, $D, $A, $words[12], 20, 0x8d2a4c8a); - - /* ROUND 3 */ - self::step($H, $A, $B, $C, $D, $words[5], 4, 0xfffa3942); - self::step($H, $D, $A, $B, $C, $words[8], 11, 0x8771f681); - self::step($H, $C, $D, $A, $B, $words[11], 16, 0x6d9d6122); - self::step($H, $B, $C, $D, $A, $words[14], 23, 0xfde5380c); - self::step($H, $A, $B, $C, $D, $words[1], 4, 0xa4beea44); - self::step($H, $D, $A, $B, $C, $words[4], 11, 0x4bdecfa9); - self::step($H, $C, $D, $A, $B, $words[7], 16, 0xf6bb4b60); - self::step($H, $B, $C, $D, $A, $words[10], 23, 0xbebfbc70); - self::step($H, $A, $B, $C, $D, $words[13], 4, 0x289b7ec6); - self::step($H, $D, $A, $B, $C, $words[0], 11, 0xeaa127fa); - self::step($H, $C, $D, $A, $B, $words[3], 16, 0xd4ef3085); - self::step($H, $B, $C, $D, $A, $words[6], 23, 0x04881d05); - self::step($H, $A, $B, $C, $D, $words[9], 4, 0xd9d4d039); - self::step($H, $D, $A, $B, $C, $words[12], 11, 0xe6db99e5); - self::step($H, $C, $D, $A, $B, $words[15], 16, 0x1fa27cf8); - self::step($H, $B, $C, $D, $A, $words[2], 23, 0xc4ac5665); - - /* ROUND 4 */ - self::step($I, $A, $B, $C, $D, $words[0], 6, 0xf4292244); - self::step($I, $D, $A, $B, $C, $words[7], 10, 0x432aff97); - self::step($I, $C, $D, $A, $B, $words[14], 15, 0xab9423a7); - self::step($I, $B, $C, $D, $A, $words[5], 21, 0xfc93a039); - self::step($I, $A, $B, $C, $D, $words[12], 6, 0x655b59c3); - self::step($I, $D, $A, $B, $C, $words[3], 10, 0x8f0ccc92); - self::step($I, $C, $D, $A, $B, $words[10], 15, 0xffeff47d); - self::step($I, $B, $C, $D, $A, $words[1], 21, 0x85845dd1); - self::step($I, $A, $B, $C, $D, $words[8], 6, 0x6fa87e4f); - self::step($I, $D, $A, $B, $C, $words[15], 10, 0xfe2ce6e0); - self::step($I, $C, $D, $A, $B, $words[6], 15, 0xa3014314); - self::step($I, $B, $C, $D, $A, $words[13], 21, 0x4e0811a1); - self::step($I, $A, $B, $C, $D, $words[4], 6, 0xf7537e82); - self::step($I, $D, $A, $B, $C, $words[11], 10, 0xbd3af235); - self::step($I, $C, $D, $A, $B, $words[2], 15, 0x2ad7d2bb); - self::step($I, $B, $C, $D, $A, $words[9], 21, 0xeb86d391); - - $this->a = ($this->a + $A) & 0xffffffff; - $this->b = ($this->b + $B) & 0xffffffff; - $this->c = ($this->c + $C) & 0xffffffff; - $this->d = ($this->d + $D) & 0xffffffff; - } - - private static function f($X, $Y, $Z) - { - return (($X & $Y) | ((~ $X) & $Z)); // X AND Y OR NOT X AND Z - } - - private static function g($X, $Y, $Z) - { - return (($X & $Z) | ($Y & (~ $Z))); // X AND Z OR Y AND NOT Z - } - - private static function h($X, $Y, $Z) - { - return ($X ^ $Y ^ $Z); // X XOR Y XOR Z - } - - private static function i($X, $Y, $Z) - { - return ($Y ^ ($X | (~ $Z))) ; // Y XOR (X OR NOT Z) - } - - private static function step($func, &$A, $B, $C, $D, $M, $s, $t) - { - $A = ($A + call_user_func($func, $B, $C, $D) + $M + $t) & 0xffffffff; - $A = self::rotate($A, $s); - $A = ($B + $A) & 0xffffffff; - } - - private static function rotate($decimal, $bits) - { - $binary = str_pad(decbin($decimal), 32, "0", STR_PAD_LEFT); - return bindec(substr($binary, $bits).substr($binary, 0, $bits)); - } -} diff --git a/application/third_party/PHPExcel/Reader/Excel5/RC4.php b/application/third_party/PHPExcel/Reader/Excel5/RC4.php deleted file mode 100644 index 5640539c..00000000 --- a/application/third_party/PHPExcel/Reader/Excel5/RC4.php +++ /dev/null @@ -1,81 +0,0 @@ -<?php - -/** - * PHPExcel_Reader_Excel5_RC4 - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Reader_Excel5 - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Reader_Excel5_RC4 -{ - // Context - protected $s = array(); - protected $i = 0; - protected $j = 0; - - /** - * RC4 stream decryption/encryption constrcutor - * - * @param string $key Encryption key/passphrase - */ - public function __construct($key) - { - $len = strlen($key); - - for ($this->i = 0; $this->i < 256; $this->i++) { - $this->s[$this->i] = $this->i; - } - - $this->j = 0; - for ($this->i = 0; $this->i < 256; $this->i++) { - $this->j = ($this->j + $this->s[$this->i] + ord($key[$this->i % $len])) % 256; - $t = $this->s[$this->i]; - $this->s[$this->i] = $this->s[$this->j]; - $this->s[$this->j] = $t; - } - $this->i = $this->j = 0; - } - - /** - * Symmetric decryption/encryption function - * - * @param string $data Data to encrypt/decrypt - * - * @return string - */ - public function RC4($data) - { - $len = strlen($data); - for ($c = 0; $c < $len; $c++) { - $this->i = ($this->i + 1) % 256; - $this->j = ($this->j + $this->s[$this->i]) % 256; - $t = $this->s[$this->i]; - $this->s[$this->i] = $this->s[$this->j]; - $this->s[$this->j] = $t; - - $t = ($this->s[$this->i] + $this->s[$this->j]) % 256; - - $data[$c] = chr(ord($data[$c]) ^ $this->s[$t]); - } - return $data; - } -} diff --git a/application/third_party/PHPExcel/Reader/Excel5/Style/Border.php b/application/third_party/PHPExcel/Reader/Excel5/Style/Border.php deleted file mode 100644 index fb45b9d5..00000000 --- a/application/third_party/PHPExcel/Reader/Excel5/Style/Border.php +++ /dev/null @@ -1,36 +0,0 @@ -<?php - -class PHPExcel_Reader_Excel5_Style_Border -{ - protected static $map = array( - 0x00 => PHPExcel_Style_Border::BORDER_NONE, - 0x01 => PHPExcel_Style_Border::BORDER_THIN, - 0x02 => PHPExcel_Style_Border::BORDER_MEDIUM, - 0x03 => PHPExcel_Style_Border::BORDER_DASHED, - 0x04 => PHPExcel_Style_Border::BORDER_DOTTED, - 0x05 => PHPExcel_Style_Border::BORDER_THICK, - 0x06 => PHPExcel_Style_Border::BORDER_DOUBLE, - 0x07 => PHPExcel_Style_Border::BORDER_HAIR, - 0x08 => PHPExcel_Style_Border::BORDER_MEDIUMDASHED, - 0x09 => PHPExcel_Style_Border::BORDER_DASHDOT, - 0x0A => PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT, - 0x0B => PHPExcel_Style_Border::BORDER_DASHDOTDOT, - 0x0C => PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT, - 0x0D => PHPExcel_Style_Border::BORDER_SLANTDASHDOT, - ); - - /** - * Map border style - * OpenOffice documentation: 2.5.11 - * - * @param int $index - * @return string - */ - public static function lookup($index) - { - if (isset(self::$map[$index])) { - return self::$map[$index]; - } - return PHPExcel_Style_Border::BORDER_NONE; - } -} \ No newline at end of file diff --git a/application/third_party/PHPExcel/Reader/Excel5/Style/FillPattern.php b/application/third_party/PHPExcel/Reader/Excel5/Style/FillPattern.php deleted file mode 100644 index c92d19a6..00000000 --- a/application/third_party/PHPExcel/Reader/Excel5/Style/FillPattern.php +++ /dev/null @@ -1,41 +0,0 @@ -<?php - -class PHPExcel_Reader_Excel5_Style_FillPattern -{ - protected static $map = array( - 0x00 => PHPExcel_Style_Fill::FILL_NONE, - 0x01 => PHPExcel_Style_Fill::FILL_SOLID, - 0x02 => PHPExcel_Style_Fill::FILL_PATTERN_MEDIUMGRAY, - 0x03 => PHPExcel_Style_Fill::FILL_PATTERN_DARKGRAY, - 0x04 => PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRAY, - 0x05 => PHPExcel_Style_Fill::FILL_PATTERN_DARKHORIZONTAL, - 0x06 => PHPExcel_Style_Fill::FILL_PATTERN_DARKVERTICAL, - 0x07 => PHPExcel_Style_Fill::FILL_PATTERN_DARKDOWN, - 0x08 => PHPExcel_Style_Fill::FILL_PATTERN_DARKUP, - 0x09 => PHPExcel_Style_Fill::FILL_PATTERN_DARKGRID, - 0x0A => PHPExcel_Style_Fill::FILL_PATTERN_DARKTRELLIS, - 0x0B => PHPExcel_Style_Fill::FILL_PATTERN_LIGHTHORIZONTAL, - 0x0C => PHPExcel_Style_Fill::FILL_PATTERN_LIGHTVERTICAL, - 0x0D => PHPExcel_Style_Fill::FILL_PATTERN_LIGHTDOWN, - 0x0E => PHPExcel_Style_Fill::FILL_PATTERN_LIGHTUP, - 0x0F => PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRID, - 0x10 => PHPExcel_Style_Fill::FILL_PATTERN_LIGHTTRELLIS, - 0x11 => PHPExcel_Style_Fill::FILL_PATTERN_GRAY125, - 0x12 => PHPExcel_Style_Fill::FILL_PATTERN_GRAY0625, - ); - - /** - * Get fill pattern from index - * OpenOffice documentation: 2.5.12 - * - * @param int $index - * @return string - */ - public static function lookup($index) - { - if (isset(self::$map[$index])) { - return self::$map[$index]; - } - return PHPExcel_Style_Fill::FILL_NONE; - } -} \ No newline at end of file diff --git a/application/third_party/PHPExcel/Reader/Exception.php b/application/third_party/PHPExcel/Reader/Exception.php deleted file mode 100644 index 48b3f825..00000000 --- a/application/third_party/PHPExcel/Reader/Exception.php +++ /dev/null @@ -1,46 +0,0 @@ -<?php - -/** - * PHPExcel_Reader_Exception - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Reader - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Reader_Exception extends PHPExcel_Exception -{ - /** - * Error handler callback - * - * @param mixed $code - * @param mixed $string - * @param mixed $file - * @param mixed $line - * @param mixed $context - */ - public static function errorHandlerCallback($code, $string, $file, $line, $context) - { - $e = new self($string, $code); - $e->line = $line; - $e->file = $file; - throw $e; - } -} diff --git a/application/third_party/PHPExcel/Reader/Gnumeric.php b/application/third_party/PHPExcel/Reader/Gnumeric.php deleted file mode 100644 index 913e52bc..00000000 --- a/application/third_party/PHPExcel/Reader/Gnumeric.php +++ /dev/null @@ -1,850 +0,0 @@ -<?php - -/** PHPExcel root directory */ -if (!defined('PHPEXCEL_ROOT')) { - /** - * @ignore - */ - define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../'); - require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); -} - -/** - * PHPExcel_Reader_Gnumeric - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Reader - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Reader_Gnumeric extends PHPExcel_Reader_Abstract implements PHPExcel_Reader_IReader -{ - /** - * Formats - * - * @var array - */ - private $styles = array(); - - /** - * Shared Expressions - * - * @var array - */ - private $expressions = array(); - - private $referenceHelper = null; - - /** - * Create a new PHPExcel_Reader_Gnumeric - */ - public function __construct() - { - $this->readFilter = new PHPExcel_Reader_DefaultReadFilter(); - $this->referenceHelper = PHPExcel_ReferenceHelper::getInstance(); - } - - /** - * Can the current PHPExcel_Reader_IReader read the file? - * - * @param string $pFilename - * @return boolean - * @throws PHPExcel_Reader_Exception - */ - public function canRead($pFilename) - { - // Check if file exists - if (!file_exists($pFilename)) { - throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); - } - - // Check if gzlib functions are available - if (!function_exists('gzread')) { - throw new PHPExcel_Reader_Exception("gzlib library is not enabled"); - } - - // Read signature data (first 3 bytes) - $fh = fopen($pFilename, 'r'); - $data = fread($fh, 2); - fclose($fh); - - if ($data != chr(0x1F).chr(0x8B)) { - return false; - } - - return true; - } - - /** - * Reads names of the worksheets from a file, without parsing the whole file to a PHPExcel object - * - * @param string $pFilename - * @throws PHPExcel_Reader_Exception - */ - public function listWorksheetNames($pFilename) - { - // Check if file exists - if (!file_exists($pFilename)) { - throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); - } - - $xml = new XMLReader(); - $xml->xml($this->securityScanFile('compress.zlib://'.realpath($pFilename)), null, PHPExcel_Settings::getLibXmlLoaderOptions()); - $xml->setParserProperty(2, true); - - $worksheetNames = array(); - while ($xml->read()) { - if ($xml->name == 'gnm:SheetName' && $xml->nodeType == XMLReader::ELEMENT) { - $xml->read(); // Move onto the value node - $worksheetNames[] = (string) $xml->value; - } elseif ($xml->name == 'gnm:Sheets') { - // break out of the loop once we've got our sheet names rather than parse the entire file - break; - } - } - - return $worksheetNames; - } - - /** - * Return worksheet info (Name, Last Column Letter, Last Column Index, Total Rows, Total Columns) - * - * @param string $pFilename - * @throws PHPExcel_Reader_Exception - */ - public function listWorksheetInfo($pFilename) - { - // Check if file exists - if (!file_exists($pFilename)) { - throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); - } - - $xml = new XMLReader(); - $xml->xml($this->securityScanFile('compress.zlib://'.realpath($pFilename)), null, PHPExcel_Settings::getLibXmlLoaderOptions()); - $xml->setParserProperty(2, true); - - $worksheetInfo = array(); - while ($xml->read()) { - if ($xml->name == 'gnm:Sheet' && $xml->nodeType == XMLReader::ELEMENT) { - $tmpInfo = array( - 'worksheetName' => '', - 'lastColumnLetter' => 'A', - 'lastColumnIndex' => 0, - 'totalRows' => 0, - 'totalColumns' => 0, - ); - - while ($xml->read()) { - if ($xml->name == 'gnm:Name' && $xml->nodeType == XMLReader::ELEMENT) { - $xml->read(); // Move onto the value node - $tmpInfo['worksheetName'] = (string) $xml->value; - } elseif ($xml->name == 'gnm:MaxCol' && $xml->nodeType == XMLReader::ELEMENT) { - $xml->read(); // Move onto the value node - $tmpInfo['lastColumnIndex'] = (int) $xml->value; - $tmpInfo['totalColumns'] = (int) $xml->value + 1; - } elseif ($xml->name == 'gnm:MaxRow' && $xml->nodeType == XMLReader::ELEMENT) { - $xml->read(); // Move onto the value node - $tmpInfo['totalRows'] = (int) $xml->value + 1; - break; - } - } - $tmpInfo['lastColumnLetter'] = PHPExcel_Cell::stringFromColumnIndex($tmpInfo['lastColumnIndex']); - $worksheetInfo[] = $tmpInfo; - } - } - - return $worksheetInfo; - } - - private function gzfileGetContents($filename) - { - $file = @gzopen($filename, 'rb'); - if ($file !== false) { - $data = ''; - while (!gzeof($file)) { - $data .= gzread($file, 1024); - } - gzclose($file); - } - return $data; - } - - /** - * Loads PHPExcel from file - * - * @param string $pFilename - * @return PHPExcel - * @throws PHPExcel_Reader_Exception - */ - public function load($pFilename) - { - // Create new PHPExcel - $objPHPExcel = new PHPExcel(); - - // Load into this instance - return $this->loadIntoExisting($pFilename, $objPHPExcel); - } - - /** - * Loads PHPExcel from file into PHPExcel instance - * - * @param string $pFilename - * @param PHPExcel $objPHPExcel - * @return PHPExcel - * @throws PHPExcel_Reader_Exception - */ - public function loadIntoExisting($pFilename, PHPExcel $objPHPExcel) - { - // Check if file exists - if (!file_exists($pFilename)) { - throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); - } - - $timezoneObj = new DateTimeZone('Europe/London'); - $GMT = new DateTimeZone('UTC'); - - $gFileData = $this->gzfileGetContents($pFilename); - -// echo '<pre>'; -// echo htmlentities($gFileData,ENT_QUOTES,'UTF-8'); -// echo '</pre><hr />'; -// - $xml = simplexml_load_string($this->securityScan($gFileData), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); - $namespacesMeta = $xml->getNamespaces(true); - -// var_dump($namespacesMeta); -// - $gnmXML = $xml->children($namespacesMeta['gnm']); - - $docProps = $objPHPExcel->getProperties(); - // Document Properties are held differently, depending on the version of Gnumeric - if (isset($namespacesMeta['office'])) { - $officeXML = $xml->children($namespacesMeta['office']); - $officeDocXML = $officeXML->{'document-meta'}; - $officeDocMetaXML = $officeDocXML->meta; - - foreach ($officeDocMetaXML as $officePropertyData) { - $officePropertyDC = array(); - if (isset($namespacesMeta['dc'])) { - $officePropertyDC = $officePropertyData->children($namespacesMeta['dc']); - } - foreach ($officePropertyDC as $propertyName => $propertyValue) { - $propertyValue = (string) $propertyValue; - switch ($propertyName) { - case 'title': - $docProps->setTitle(trim($propertyValue)); - break; - case 'subject': - $docProps->setSubject(trim($propertyValue)); - break; - case 'creator': - $docProps->setCreator(trim($propertyValue)); - $docProps->setLastModifiedBy(trim($propertyValue)); - break; - case 'date': - $creationDate = strtotime(trim($propertyValue)); - $docProps->setCreated($creationDate); - $docProps->setModified($creationDate); - break; - case 'description': - $docProps->setDescription(trim($propertyValue)); - break; - } - } - $officePropertyMeta = array(); - if (isset($namespacesMeta['meta'])) { - $officePropertyMeta = $officePropertyData->children($namespacesMeta['meta']); - } - foreach ($officePropertyMeta as $propertyName => $propertyValue) { - $attributes = $propertyValue->attributes($namespacesMeta['meta']); - $propertyValue = (string) $propertyValue; - switch ($propertyName) { - case 'keyword': - $docProps->setKeywords(trim($propertyValue)); - break; - case 'initial-creator': - $docProps->setCreator(trim($propertyValue)); - $docProps->setLastModifiedBy(trim($propertyValue)); - break; - case 'creation-date': - $creationDate = strtotime(trim($propertyValue)); - $docProps->setCreated($creationDate); - $docProps->setModified($creationDate); - break; - case 'user-defined': - list(, $attrName) = explode(':', $attributes['name']); - switch ($attrName) { - case 'publisher': - $docProps->setCompany(trim($propertyValue)); - break; - case 'category': - $docProps->setCategory(trim($propertyValue)); - break; - case 'manager': - $docProps->setManager(trim($propertyValue)); - break; - } - break; - } - } - } - } elseif (isset($gnmXML->Summary)) { - foreach ($gnmXML->Summary->Item as $summaryItem) { - $propertyName = $summaryItem->name; - $propertyValue = $summaryItem->{'val-string'}; - switch ($propertyName) { - case 'title': - $docProps->setTitle(trim($propertyValue)); - break; - case 'comments': - $docProps->setDescription(trim($propertyValue)); - break; - case 'keywords': - $docProps->setKeywords(trim($propertyValue)); - break; - case 'category': - $docProps->setCategory(trim($propertyValue)); - break; - case 'manager': - $docProps->setManager(trim($propertyValue)); - break; - case 'author': - $docProps->setCreator(trim($propertyValue)); - $docProps->setLastModifiedBy(trim($propertyValue)); - break; - case 'company': - $docProps->setCompany(trim($propertyValue)); - break; - } - } - } - - $worksheetID = 0; - foreach ($gnmXML->Sheets->Sheet as $sheet) { - $worksheetName = (string) $sheet->Name; -// echo '<b>Worksheet: ', $worksheetName,'</b><br />'; - if ((isset($this->loadSheetsOnly)) && (!in_array($worksheetName, $this->loadSheetsOnly))) { - continue; - } - - $maxRow = $maxCol = 0; - - // Create new Worksheet - $objPHPExcel->createSheet(); - $objPHPExcel->setActiveSheetIndex($worksheetID); - // Use false for $updateFormulaCellReferences to prevent adjustment of worksheet references in formula - // cells... during the load, all formulae should be correct, and we're simply bringing the worksheet - // name in line with the formula, not the reverse - $objPHPExcel->getActiveSheet()->setTitle($worksheetName, false); - - if ((!$this->readDataOnly) && (isset($sheet->PrintInformation))) { - if (isset($sheet->PrintInformation->Margins)) { - foreach ($sheet->PrintInformation->Margins->children('gnm', true) as $key => $margin) { - $marginAttributes = $margin->attributes(); - $marginSize = 72 / 100; // Default - switch ($marginAttributes['PrefUnit']) { - case 'mm': - $marginSize = intval($marginAttributes['Points']) / 100; - break; - } - switch ($key) { - case 'top': - $objPHPExcel->getActiveSheet()->getPageMargins()->setTop($marginSize); - break; - case 'bottom': - $objPHPExcel->getActiveSheet()->getPageMargins()->setBottom($marginSize); - break; - case 'left': - $objPHPExcel->getActiveSheet()->getPageMargins()->setLeft($marginSize); - break; - case 'right': - $objPHPExcel->getActiveSheet()->getPageMargins()->setRight($marginSize); - break; - case 'header': - $objPHPExcel->getActiveSheet()->getPageMargins()->setHeader($marginSize); - break; - case 'footer': - $objPHPExcel->getActiveSheet()->getPageMargins()->setFooter($marginSize); - break; - } - } - } - } - - foreach ($sheet->Cells->Cell as $cell) { - $cellAttributes = $cell->attributes(); - $row = (int) $cellAttributes->Row + 1; - $column = (int) $cellAttributes->Col; - - if ($row > $maxRow) { - $maxRow = $row; - } - if ($column > $maxCol) { - $maxCol = $column; - } - - $column = PHPExcel_Cell::stringFromColumnIndex($column); - - // Read cell? - if ($this->getReadFilter() !== null) { - if (!$this->getReadFilter()->readCell($column, $row, $worksheetName)) { - continue; - } - } - - $ValueType = $cellAttributes->ValueType; - $ExprID = (string) $cellAttributes->ExprID; -// echo 'Cell ', $column, $row,'<br />'; -// echo 'Type is ', $ValueType,'<br />'; -// echo 'Value is ', $cell,'<br />'; - $type = PHPExcel_Cell_DataType::TYPE_FORMULA; - if ($ExprID > '') { - if (((string) $cell) > '') { - $this->expressions[$ExprID] = array( - 'column' => $cellAttributes->Col, - 'row' => $cellAttributes->Row, - 'formula' => (string) $cell - ); -// echo 'NEW EXPRESSION ', $ExprID,'<br />'; - } else { - $expression = $this->expressions[$ExprID]; - - $cell = $this->referenceHelper->updateFormulaReferences( - $expression['formula'], - 'A1', - $cellAttributes->Col - $expression['column'], - $cellAttributes->Row - $expression['row'], - $worksheetName - ); -// echo 'SHARED EXPRESSION ', $ExprID,'<br />'; -// echo 'New Value is ', $cell,'<br />'; - } - $type = PHPExcel_Cell_DataType::TYPE_FORMULA; - } else { - switch ($ValueType) { - case '10': // NULL - $type = PHPExcel_Cell_DataType::TYPE_NULL; - break; - case '20': // Boolean - $type = PHPExcel_Cell_DataType::TYPE_BOOL; - $cell = ($cell == 'TRUE') ? true: false; - break; - case '30': // Integer - $cell = intval($cell); - // Excel 2007+ doesn't differentiate between integer and float, so set the value and dropthru to the next (numeric) case - case '40': // Float - $type = PHPExcel_Cell_DataType::TYPE_NUMERIC; - break; - case '50': // Error - $type = PHPExcel_Cell_DataType::TYPE_ERROR; - break; - case '60': // String - $type = PHPExcel_Cell_DataType::TYPE_STRING; - break; - case '70': // Cell Range - case '80': // Array - } - } - $objPHPExcel->getActiveSheet()->getCell($column.$row)->setValueExplicit($cell, $type); - } - - if ((!$this->readDataOnly) && (isset($sheet->Objects))) { - foreach ($sheet->Objects->children('gnm', true) as $key => $comment) { - $commentAttributes = $comment->attributes(); - // Only comment objects are handled at the moment - if ($commentAttributes->Text) { - $objPHPExcel->getActiveSheet()->getComment((string)$commentAttributes->ObjectBound)->setAuthor((string)$commentAttributes->Author)->setText($this->parseRichText((string)$commentAttributes->Text)); - } - } - } -// echo '$maxCol=', $maxCol,'; $maxRow=', $maxRow,'<br />'; -// - foreach ($sheet->Styles->StyleRegion as $styleRegion) { - $styleAttributes = $styleRegion->attributes(); - if (($styleAttributes['startRow'] <= $maxRow) && - ($styleAttributes['startCol'] <= $maxCol)) { - $startColumn = PHPExcel_Cell::stringFromColumnIndex((int) $styleAttributes['startCol']); - $startRow = $styleAttributes['startRow'] + 1; - - $endColumn = ($styleAttributes['endCol'] > $maxCol) ? $maxCol : (int) $styleAttributes['endCol']; - $endColumn = PHPExcel_Cell::stringFromColumnIndex($endColumn); - $endRow = ($styleAttributes['endRow'] > $maxRow) ? $maxRow : $styleAttributes['endRow']; - $endRow += 1; - $cellRange = $startColumn.$startRow.':'.$endColumn.$endRow; -// echo $cellRange,'<br />'; - - $styleAttributes = $styleRegion->Style->attributes(); -// var_dump($styleAttributes); -// echo '<br />'; - - // We still set the number format mask for date/time values, even if readDataOnly is true - if ((!$this->readDataOnly) || - (PHPExcel_Shared_Date::isDateTimeFormatCode((string) $styleAttributes['Format']))) { - $styleArray = array(); - $styleArray['numberformat']['code'] = (string) $styleAttributes['Format']; - // If readDataOnly is false, we set all formatting information - if (!$this->readDataOnly) { - switch ($styleAttributes['HAlign']) { - case '1': - $styleArray['alignment']['horizontal'] = PHPExcel_Style_Alignment::HORIZONTAL_GENERAL; - break; - case '2': - $styleArray['alignment']['horizontal'] = PHPExcel_Style_Alignment::HORIZONTAL_LEFT; - break; - case '4': - $styleArray['alignment']['horizontal'] = PHPExcel_Style_Alignment::HORIZONTAL_RIGHT; - break; - case '8': - $styleArray['alignment']['horizontal'] = PHPExcel_Style_Alignment::HORIZONTAL_CENTER; - break; - case '16': - case '64': - $styleArray['alignment']['horizontal'] = PHPExcel_Style_Alignment::HORIZONTAL_CENTER_CONTINUOUS; - break; - case '32': - $styleArray['alignment']['horizontal'] = PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY; - break; - } - - switch ($styleAttributes['VAlign']) { - case '1': - $styleArray['alignment']['vertical'] = PHPExcel_Style_Alignment::VERTICAL_TOP; - break; - case '2': - $styleArray['alignment']['vertical'] = PHPExcel_Style_Alignment::VERTICAL_BOTTOM; - break; - case '4': - $styleArray['alignment']['vertical'] = PHPExcel_Style_Alignment::VERTICAL_CENTER; - break; - case '8': - $styleArray['alignment']['vertical'] = PHPExcel_Style_Alignment::VERTICAL_JUSTIFY; - break; - } - - $styleArray['alignment']['wrap'] = ($styleAttributes['WrapText'] == '1') ? true : false; - $styleArray['alignment']['shrinkToFit'] = ($styleAttributes['ShrinkToFit'] == '1') ? true : false; - $styleArray['alignment']['indent'] = (intval($styleAttributes["Indent"]) > 0) ? $styleAttributes["indent"] : 0; - - $RGB = self::parseGnumericColour($styleAttributes["Fore"]); - $styleArray['font']['color']['rgb'] = $RGB; - $RGB = self::parseGnumericColour($styleAttributes["Back"]); - $shade = $styleAttributes["Shade"]; - if (($RGB != '000000') || ($shade != '0')) { - $styleArray['fill']['color']['rgb'] = $styleArray['fill']['startcolor']['rgb'] = $RGB; - $RGB2 = self::parseGnumericColour($styleAttributes["PatternColor"]); - $styleArray['fill']['endcolor']['rgb'] = $RGB2; - switch ($shade) { - case '1': - $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_SOLID; - break; - case '2': - $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR; - break; - case '3': - $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_GRADIENT_PATH; - break; - case '4': - $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_DARKDOWN; - break; - case '5': - $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_DARKGRAY; - break; - case '6': - $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_DARKGRID; - break; - case '7': - $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_DARKHORIZONTAL; - break; - case '8': - $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_DARKTRELLIS; - break; - case '9': - $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_DARKUP; - break; - case '10': - $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_DARKVERTICAL; - break; - case '11': - $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_GRAY0625; - break; - case '12': - $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_GRAY125; - break; - case '13': - $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_LIGHTDOWN; - break; - case '14': - $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRAY; - break; - case '15': - $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRID; - break; - case '16': - $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_LIGHTHORIZONTAL; - break; - case '17': - $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_LIGHTTRELLIS; - break; - case '18': - $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_LIGHTUP; - break; - case '19': - $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_LIGHTVERTICAL; - break; - case '20': - $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_MEDIUMGRAY; - break; - } - } - - $fontAttributes = $styleRegion->Style->Font->attributes(); -// var_dump($fontAttributes); -// echo '<br />'; - $styleArray['font']['name'] = (string) $styleRegion->Style->Font; - $styleArray['font']['size'] = intval($fontAttributes['Unit']); - $styleArray['font']['bold'] = ($fontAttributes['Bold'] == '1') ? true : false; - $styleArray['font']['italic'] = ($fontAttributes['Italic'] == '1') ? true : false; - $styleArray['font']['strike'] = ($fontAttributes['StrikeThrough'] == '1') ? true : false; - switch ($fontAttributes['Underline']) { - case '1': - $styleArray['font']['underline'] = PHPExcel_Style_Font::UNDERLINE_SINGLE; - break; - case '2': - $styleArray['font']['underline'] = PHPExcel_Style_Font::UNDERLINE_DOUBLE; - break; - case '3': - $styleArray['font']['underline'] = PHPExcel_Style_Font::UNDERLINE_SINGLEACCOUNTING; - break; - case '4': - $styleArray['font']['underline'] = PHPExcel_Style_Font::UNDERLINE_DOUBLEACCOUNTING; - break; - default: - $styleArray['font']['underline'] = PHPExcel_Style_Font::UNDERLINE_NONE; - break; - } - switch ($fontAttributes['Script']) { - case '1': - $styleArray['font']['superScript'] = true; - break; - case '-1': - $styleArray['font']['subScript'] = true; - break; - } - - if (isset($styleRegion->Style->StyleBorder)) { - if (isset($styleRegion->Style->StyleBorder->Top)) { - $styleArray['borders']['top'] = self::parseBorderAttributes($styleRegion->Style->StyleBorder->Top->attributes()); - } - if (isset($styleRegion->Style->StyleBorder->Bottom)) { - $styleArray['borders']['bottom'] = self::parseBorderAttributes($styleRegion->Style->StyleBorder->Bottom->attributes()); - } - if (isset($styleRegion->Style->StyleBorder->Left)) { - $styleArray['borders']['left'] = self::parseBorderAttributes($styleRegion->Style->StyleBorder->Left->attributes()); - } - if (isset($styleRegion->Style->StyleBorder->Right)) { - $styleArray['borders']['right'] = self::parseBorderAttributes($styleRegion->Style->StyleBorder->Right->attributes()); - } - if ((isset($styleRegion->Style->StyleBorder->Diagonal)) && (isset($styleRegion->Style->StyleBorder->{'Rev-Diagonal'}))) { - $styleArray['borders']['diagonal'] = self::parseBorderAttributes($styleRegion->Style->StyleBorder->Diagonal->attributes()); - $styleArray['borders']['diagonaldirection'] = PHPExcel_Style_Borders::DIAGONAL_BOTH; - } elseif (isset($styleRegion->Style->StyleBorder->Diagonal)) { - $styleArray['borders']['diagonal'] = self::parseBorderAttributes($styleRegion->Style->StyleBorder->Diagonal->attributes()); - $styleArray['borders']['diagonaldirection'] = PHPExcel_Style_Borders::DIAGONAL_UP; - } elseif (isset($styleRegion->Style->StyleBorder->{'Rev-Diagonal'})) { - $styleArray['borders']['diagonal'] = self::parseBorderAttributes($styleRegion->Style->StyleBorder->{'Rev-Diagonal'}->attributes()); - $styleArray['borders']['diagonaldirection'] = PHPExcel_Style_Borders::DIAGONAL_DOWN; - } - } - if (isset($styleRegion->Style->HyperLink)) { - // TO DO - $hyperlink = $styleRegion->Style->HyperLink->attributes(); - } - } -// var_dump($styleArray); -// echo '<br />'; - $objPHPExcel->getActiveSheet()->getStyle($cellRange)->applyFromArray($styleArray); - } - } - } - - if ((!$this->readDataOnly) && (isset($sheet->Cols))) { - // Column Widths - $columnAttributes = $sheet->Cols->attributes(); - $defaultWidth = $columnAttributes['DefaultSizePts'] / 5.4; - $c = 0; - foreach ($sheet->Cols->ColInfo as $columnOverride) { - $columnAttributes = $columnOverride->attributes(); - $column = $columnAttributes['No']; - $columnWidth = $columnAttributes['Unit'] / 5.4; - $hidden = ((isset($columnAttributes['Hidden'])) && ($columnAttributes['Hidden'] == '1')) ? true : false; - $columnCount = (isset($columnAttributes['Count'])) ? $columnAttributes['Count'] : 1; - while ($c < $column) { - $objPHPExcel->getActiveSheet()->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($c))->setWidth($defaultWidth); - ++$c; - } - while (($c < ($column+$columnCount)) && ($c <= $maxCol)) { - $objPHPExcel->getActiveSheet()->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($c))->setWidth($columnWidth); - if ($hidden) { - $objPHPExcel->getActiveSheet()->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($c))->setVisible(false); - } - ++$c; - } - } - while ($c <= $maxCol) { - $objPHPExcel->getActiveSheet()->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($c))->setWidth($defaultWidth); - ++$c; - } - } - - if ((!$this->readDataOnly) && (isset($sheet->Rows))) { - // Row Heights - $rowAttributes = $sheet->Rows->attributes(); - $defaultHeight = $rowAttributes['DefaultSizePts']; - $r = 0; - - foreach ($sheet->Rows->RowInfo as $rowOverride) { - $rowAttributes = $rowOverride->attributes(); - $row = $rowAttributes['No']; - $rowHeight = $rowAttributes['Unit']; - $hidden = ((isset($rowAttributes['Hidden'])) && ($rowAttributes['Hidden'] == '1')) ? true : false; - $rowCount = (isset($rowAttributes['Count'])) ? $rowAttributes['Count'] : 1; - while ($r < $row) { - ++$r; - $objPHPExcel->getActiveSheet()->getRowDimension($r)->setRowHeight($defaultHeight); - } - while (($r < ($row+$rowCount)) && ($r < $maxRow)) { - ++$r; - $objPHPExcel->getActiveSheet()->getRowDimension($r)->setRowHeight($rowHeight); - if ($hidden) { - $objPHPExcel->getActiveSheet()->getRowDimension($r)->setVisible(false); - } - } - } - while ($r < $maxRow) { - ++$r; - $objPHPExcel->getActiveSheet()->getRowDimension($r)->setRowHeight($defaultHeight); - } - } - - // Handle Merged Cells in this worksheet - if (isset($sheet->MergedRegions)) { - foreach ($sheet->MergedRegions->Merge as $mergeCells) { - if (strpos($mergeCells, ':') !== false) { - $objPHPExcel->getActiveSheet()->mergeCells($mergeCells); - } - } - } - - $worksheetID++; - } - - // Loop through definedNames (global named ranges) - if (isset($gnmXML->Names)) { - foreach ($gnmXML->Names->Name as $namedRange) { - $name = (string) $namedRange->name; - $range = (string) $namedRange->value; - if (stripos($range, '#REF!') !== false) { - continue; - } - - $range = explode('!', $range); - $range[0] = trim($range[0], "'"); - if ($worksheet = $objPHPExcel->getSheetByName($range[0])) { - $extractedRange = str_replace('$', '', $range[1]); - $objPHPExcel->addNamedRange(new PHPExcel_NamedRange($name, $worksheet, $extractedRange)); - } - } - } - - // Return - return $objPHPExcel; - } - - private static function parseBorderAttributes($borderAttributes) - { - $styleArray = array(); - if (isset($borderAttributes["Color"])) { - $styleArray['color']['rgb'] = self::parseGnumericColour($borderAttributes["Color"]); - } - - switch ($borderAttributes["Style"]) { - case '0': - $styleArray['style'] = PHPExcel_Style_Border::BORDER_NONE; - break; - case '1': - $styleArray['style'] = PHPExcel_Style_Border::BORDER_THIN; - break; - case '2': - $styleArray['style'] = PHPExcel_Style_Border::BORDER_MEDIUM; - break; - case '3': - $styleArray['style'] = PHPExcel_Style_Border::BORDER_SLANTDASHDOT; - break; - case '4': - $styleArray['style'] = PHPExcel_Style_Border::BORDER_DASHED; - break; - case '5': - $styleArray['style'] = PHPExcel_Style_Border::BORDER_THICK; - break; - case '6': - $styleArray['style'] = PHPExcel_Style_Border::BORDER_DOUBLE; - break; - case '7': - $styleArray['style'] = PHPExcel_Style_Border::BORDER_DOTTED; - break; - case '8': - $styleArray['style'] = PHPExcel_Style_Border::BORDER_MEDIUMDASHED; - break; - case '9': - $styleArray['style'] = PHPExcel_Style_Border::BORDER_DASHDOT; - break; - case '10': - $styleArray['style'] = PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT; - break; - case '11': - $styleArray['style'] = PHPExcel_Style_Border::BORDER_DASHDOTDOT; - break; - case '12': - $styleArray['style'] = PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT; - break; - case '13': - $styleArray['style'] = PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT; - break; - } - return $styleArray; - } - - private function parseRichText($is = '') - { - $value = new PHPExcel_RichText(); - $value->createText($is); - - return $value; - } - - private static function parseGnumericColour($gnmColour) - { - list($gnmR, $gnmG, $gnmB) = explode(':', $gnmColour); - $gnmR = substr(str_pad($gnmR, 4, '0', STR_PAD_RIGHT), 0, 2); - $gnmG = substr(str_pad($gnmG, 4, '0', STR_PAD_RIGHT), 0, 2); - $gnmB = substr(str_pad($gnmB, 4, '0', STR_PAD_RIGHT), 0, 2); - return $gnmR . $gnmG . $gnmB; - } -} diff --git a/application/third_party/PHPExcel/Reader/HTML.php b/application/third_party/PHPExcel/Reader/HTML.php deleted file mode 100644 index ac762a4f..00000000 --- a/application/third_party/PHPExcel/Reader/HTML.php +++ /dev/null @@ -1,549 +0,0 @@ -<?php - -if (!defined('PHPEXCEL_ROOT')) { - /** - * @ignore - */ - define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../'); - require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); -} - -/** - * PHPExcel_Reader_HTML - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Reader - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -/** PHPExcel root directory */ -class PHPExcel_Reader_HTML extends PHPExcel_Reader_Abstract implements PHPExcel_Reader_IReader -{ - - /** - * Input encoding - * - * @var string - */ - protected $inputEncoding = 'ANSI'; - - /** - * Sheet index to read - * - * @var int - */ - protected $sheetIndex = 0; - - /** - * Formats - * - * @var array - */ - protected $formats = array( - 'h1' => array( - 'font' => array( - 'bold' => true, - 'size' => 24, - ), - ), // Bold, 24pt - 'h2' => array( - 'font' => array( - 'bold' => true, - 'size' => 18, - ), - ), // Bold, 18pt - 'h3' => array( - 'font' => array( - 'bold' => true, - 'size' => 13.5, - ), - ), // Bold, 13.5pt - 'h4' => array( - 'font' => array( - 'bold' => true, - 'size' => 12, - ), - ), // Bold, 12pt - 'h5' => array( - 'font' => array( - 'bold' => true, - 'size' => 10, - ), - ), // Bold, 10pt - 'h6' => array( - 'font' => array( - 'bold' => true, - 'size' => 7.5, - ), - ), // Bold, 7.5pt - 'a' => array( - 'font' => array( - 'underline' => true, - 'color' => array( - 'argb' => PHPExcel_Style_Color::COLOR_BLUE, - ), - ), - ), // Blue underlined - 'hr' => array( - 'borders' => array( - 'bottom' => array( - 'style' => PHPExcel_Style_Border::BORDER_THIN, - 'color' => array( - PHPExcel_Style_Color::COLOR_BLACK, - ), - ), - ), - ), // Bottom border - ); - - protected $rowspan = array(); - - /** - * Create a new PHPExcel_Reader_HTML - */ - public function __construct() - { - $this->readFilter = new PHPExcel_Reader_DefaultReadFilter(); - } - - /** - * Validate that the current file is an HTML file - * - * @return boolean - */ - protected function isValidFormat() - { - // Reading 2048 bytes should be enough to validate that the format is HTML - $data = fread($this->fileHandle, 2048); - if ((strpos($data, '<') !== false) && - (strlen($data) !== strlen(strip_tags($data)))) { - return true; - } - - return false; - } - - /** - * Loads PHPExcel from file - * - * @param string $pFilename - * @return PHPExcel - * @throws PHPExcel_Reader_Exception - */ - public function load($pFilename) - { - // Create new PHPExcel - $objPHPExcel = new PHPExcel(); - - // Load into this instance - return $this->loadIntoExisting($pFilename, $objPHPExcel); - } - - /** - * Set input encoding - * - * @param string $pValue Input encoding - */ - public function setInputEncoding($pValue = 'ANSI') - { - $this->inputEncoding = $pValue; - - return $this; - } - - /** - * Get input encoding - * - * @return string - */ - public function getInputEncoding() - { - return $this->inputEncoding; - } - - // Data Array used for testing only, should write to PHPExcel object on completion of tests - protected $dataArray = array(); - protected $tableLevel = 0; - protected $nestedColumn = array('A'); - - protected function setTableStartColumn($column) - { - if ($this->tableLevel == 0) { - $column = 'A'; - } - ++$this->tableLevel; - $this->nestedColumn[$this->tableLevel] = $column; - - return $this->nestedColumn[$this->tableLevel]; - } - - protected function getTableStartColumn() - { - return $this->nestedColumn[$this->tableLevel]; - } - - protected function releaseTableStartColumn() - { - --$this->tableLevel; - - return array_pop($this->nestedColumn); - } - - protected function flushCell($sheet, $column, $row, &$cellContent) - { - if (is_string($cellContent)) { - // Simple String content - if (trim($cellContent) > '') { - // Only actually write it if there's content in the string -// echo 'FLUSH CELL: ' , $column , $row , ' => ' , $cellContent , '<br />'; - // Write to worksheet to be done here... - // ... we return the cell so we can mess about with styles more easily - $sheet->setCellValue($column . $row, $cellContent, true); - $this->dataArray[$row][$column] = $cellContent; - } - } else { - // We have a Rich Text run - // TODO - $this->dataArray[$row][$column] = 'RICH TEXT: ' . $cellContent; - } - $cellContent = (string) ''; - } - - protected function processDomElement(DOMNode $element, $sheet, &$row, &$column, &$cellContent, $format = null) - { - foreach ($element->childNodes as $child) { - if ($child instanceof DOMText) { - $domText = preg_replace('/\s+/u', ' ', trim($child->nodeValue)); - if (is_string($cellContent)) { - // simply append the text if the cell content is a plain text string - $cellContent .= $domText; - } else { - // but if we have a rich text run instead, we need to append it correctly - // TODO - } - } elseif ($child instanceof DOMElement) { -// echo '<b>DOM ELEMENT: </b>' , strtoupper($child->nodeName) , '<br />'; - - $attributeArray = array(); - foreach ($child->attributes as $attribute) { -// echo '<b>ATTRIBUTE: </b>' , $attribute->name , ' => ' , $attribute->value , '<br />'; - $attributeArray[$attribute->name] = $attribute->value; - } - - switch ($child->nodeName) { - case 'meta': - foreach ($attributeArray as $attributeName => $attributeValue) { - switch ($attributeName) { - case 'content': - // TODO - // Extract character set, so we can convert to UTF-8 if required - break; - } - } - $this->processDomElement($child, $sheet, $row, $column, $cellContent); - break; - case 'title': - $this->processDomElement($child, $sheet, $row, $column, $cellContent); - $sheet->setTitle($cellContent); - $cellContent = ''; - break; - case 'span': - case 'div': - case 'font': - case 'i': - case 'em': - case 'strong': - case 'b': -// echo 'STYLING, SPAN OR DIV<br />'; - if ($cellContent > '') { - $cellContent .= ' '; - } - $this->processDomElement($child, $sheet, $row, $column, $cellContent); - if ($cellContent > '') { - $cellContent .= ' '; - } -// echo 'END OF STYLING, SPAN OR DIV<br />'; - break; - case 'hr': - $this->flushCell($sheet, $column, $row, $cellContent); - ++$row; - if (isset($this->formats[$child->nodeName])) { - $sheet->getStyle($column . $row)->applyFromArray($this->formats[$child->nodeName]); - } else { - $cellContent = '----------'; - $this->flushCell($sheet, $column, $row, $cellContent); - } - ++$row; - // Add a break after a horizontal rule, simply by allowing the code to dropthru - case 'br': - if ($this->tableLevel > 0) { - // If we're inside a table, replace with a \n - $cellContent .= "\n"; - } else { - // Otherwise flush our existing content and move the row cursor on - $this->flushCell($sheet, $column, $row, $cellContent); - ++$row; - } -// echo 'HARD LINE BREAK: ' , '<br />'; - break; - case 'a': -// echo 'START OF HYPERLINK: ' , '<br />'; - foreach ($attributeArray as $attributeName => $attributeValue) { - switch ($attributeName) { - case 'href': -// echo 'Link to ' , $attributeValue , '<br />'; - $sheet->getCell($column . $row)->getHyperlink()->setUrl($attributeValue); - if (isset($this->formats[$child->nodeName])) { - $sheet->getStyle($column . $row)->applyFromArray($this->formats[$child->nodeName]); - } - break; - } - } - $cellContent .= ' '; - $this->processDomElement($child, $sheet, $row, $column, $cellContent); -// echo 'END OF HYPERLINK:' , '<br />'; - break; - case 'h1': - case 'h2': - case 'h3': - case 'h4': - case 'h5': - case 'h6': - case 'ol': - case 'ul': - case 'p': - if ($this->tableLevel > 0) { - // If we're inside a table, replace with a \n - $cellContent .= "\n"; -// echo 'LIST ENTRY: ' , '<br />'; - $this->processDomElement($child, $sheet, $row, $column, $cellContent); -// echo 'END OF LIST ENTRY:' , '<br />'; - } else { - if ($cellContent > '') { - $this->flushCell($sheet, $column, $row, $cellContent); - $row++; - } -// echo 'START OF PARAGRAPH: ' , '<br />'; - $this->processDomElement($child, $sheet, $row, $column, $cellContent); -// echo 'END OF PARAGRAPH:' , '<br />'; - $this->flushCell($sheet, $column, $row, $cellContent); - - if (isset($this->formats[$child->nodeName])) { - $sheet->getStyle($column . $row)->applyFromArray($this->formats[$child->nodeName]); - } - - $row++; - $column = 'A'; - } - break; - case 'li': - if ($this->tableLevel > 0) { - // If we're inside a table, replace with a \n - $cellContent .= "\n"; -// echo 'LIST ENTRY: ' , '<br />'; - $this->processDomElement($child, $sheet, $row, $column, $cellContent); -// echo 'END OF LIST ENTRY:' , '<br />'; - } else { - if ($cellContent > '') { - $this->flushCell($sheet, $column, $row, $cellContent); - } - ++$row; -// echo 'LIST ENTRY: ' , '<br />'; - $this->processDomElement($child, $sheet, $row, $column, $cellContent); -// echo 'END OF LIST ENTRY:' , '<br />'; - $this->flushCell($sheet, $column, $row, $cellContent); - $column = 'A'; - } - break; - case 'table': - $this->flushCell($sheet, $column, $row, $cellContent); - $column = $this->setTableStartColumn($column); -// echo 'START OF TABLE LEVEL ' , $this->tableLevel , '<br />'; - if ($this->tableLevel > 1) { - --$row; - } - $this->processDomElement($child, $sheet, $row, $column, $cellContent); -// echo 'END OF TABLE LEVEL ' , $this->tableLevel , '<br />'; - $column = $this->releaseTableStartColumn(); - if ($this->tableLevel > 1) { - ++$column; - } else { - ++$row; - } - break; - case 'thead': - case 'tbody': - $this->processDomElement($child, $sheet, $row, $column, $cellContent); - break; - case 'tr': - $column = $this->getTableStartColumn(); - $cellContent = ''; -// echo 'START OF TABLE ' , $this->tableLevel , ' ROW<br />'; - $this->processDomElement($child, $sheet, $row, $column, $cellContent); - ++$row; -// echo 'END OF TABLE ' , $this->tableLevel , ' ROW<br />'; - break; - case 'th': - case 'td': -// echo 'START OF TABLE ' , $this->tableLevel , ' CELL<br />'; - $this->processDomElement($child, $sheet, $row, $column, $cellContent); -// echo 'END OF TABLE ' , $this->tableLevel , ' CELL<br />'; - - while (isset($this->rowspan[$column . $row])) { - ++$column; - } - - $this->flushCell($sheet, $column, $row, $cellContent); - -// if (isset($attributeArray['style']) && !empty($attributeArray['style'])) { -// $styleAry = $this->getPhpExcelStyleArray($attributeArray['style']); -// -// if (!empty($styleAry)) { -// $sheet->getStyle($column . $row)->applyFromArray($styleAry); -// } -// } - - if (isset($attributeArray['rowspan']) && isset($attributeArray['colspan'])) { - //create merging rowspan and colspan - $columnTo = $column; - for ($i = 0; $i < $attributeArray['colspan'] - 1; $i++) { - ++$columnTo; - } - $range = $column . $row . ':' . $columnTo . ($row + $attributeArray['rowspan'] - 1); - foreach (\PHPExcel_Cell::extractAllCellReferencesInRange($range) as $value) { - $this->rowspan[$value] = true; - } - $sheet->mergeCells($range); - $column = $columnTo; - } elseif (isset($attributeArray['rowspan'])) { - //create merging rowspan - $range = $column . $row . ':' . $column . ($row + $attributeArray['rowspan'] - 1); - foreach (\PHPExcel_Cell::extractAllCellReferencesInRange($range) as $value) { - $this->rowspan[$value] = true; - } - $sheet->mergeCells($range); - } elseif (isset($attributeArray['colspan'])) { - //create merging colspan - $columnTo = $column; - for ($i = 0; $i < $attributeArray['colspan'] - 1; $i++) { - ++$columnTo; - } - $sheet->mergeCells($column . $row . ':' . $columnTo . $row); - $column = $columnTo; - } - ++$column; - break; - case 'body': - $row = 1; - $column = 'A'; - $content = ''; - $this->tableLevel = 0; - $this->processDomElement($child, $sheet, $row, $column, $cellContent); - break; - default: - $this->processDomElement($child, $sheet, $row, $column, $cellContent); - } - } - } - } - - /** - * Loads PHPExcel from file into PHPExcel instance - * - * @param string $pFilename - * @param PHPExcel $objPHPExcel - * @return PHPExcel - * @throws PHPExcel_Reader_Exception - */ - public function loadIntoExisting($pFilename, PHPExcel $objPHPExcel) - { - // Open file to validate - $this->openFile($pFilename); - if (!$this->isValidFormat()) { - fclose($this->fileHandle); - throw new PHPExcel_Reader_Exception($pFilename . " is an Invalid HTML file."); - } - // Close after validating - fclose($this->fileHandle); - - // Create new PHPExcel - while ($objPHPExcel->getSheetCount() <= $this->sheetIndex) { - $objPHPExcel->createSheet(); - } - $objPHPExcel->setActiveSheetIndex($this->sheetIndex); - - // Create a new DOM object - $dom = new domDocument; - // Reload the HTML file into the DOM object - $loaded = $dom->loadHTML(mb_convert_encoding($this->securityScanFile($pFilename), 'HTML-ENTITIES', 'UTF-8')); - if ($loaded === false) { - throw new PHPExcel_Reader_Exception('Failed to load ' . $pFilename . ' as a DOM Document'); - } - - // Discard white space - $dom->preserveWhiteSpace = false; - - $row = 0; - $column = 'A'; - $content = ''; - $this->processDomElement($dom, $objPHPExcel->getActiveSheet(), $row, $column, $content); - - // Return - return $objPHPExcel; - } - - /** - * Get sheet index - * - * @return int - */ - public function getSheetIndex() - { - return $this->sheetIndex; - } - - /** - * Set sheet index - * - * @param int $pValue Sheet index - * @return PHPExcel_Reader_HTML - */ - public function setSheetIndex($pValue = 0) - { - $this->sheetIndex = $pValue; - - return $this; - } - - /** - * Scan theXML for use of <!ENTITY to prevent XXE/XEE attacks - * - * @param string $xml - * @throws PHPExcel_Reader_Exception - */ - public function securityScan($xml) - { - $pattern = '/\\0?' . implode('\\0?', str_split('<!ENTITY')) . '\\0?/'; - if (preg_match($pattern, $xml)) { - throw new PHPExcel_Reader_Exception('Detected use of ENTITY in XML, spreadsheet file load() aborted to prevent XXE/XEE attacks'); - } - return $xml; - } -} diff --git a/application/third_party/PHPExcel/Reader/IReadFilter.php b/application/third_party/PHPExcel/Reader/IReadFilter.php deleted file mode 100644 index f7c852d9..00000000 --- a/application/third_party/PHPExcel/Reader/IReadFilter.php +++ /dev/null @@ -1,39 +0,0 @@ -<?php - -/** - * PHPExcel_Reader_IReadFilter - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Reader - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -interface PHPExcel_Reader_IReadFilter -{ - /** - * Should this cell be read? - * - * @param $column Column address (as a string value like "A", or "IV") - * @param $row Row number - * @param $worksheetName Optional worksheet name - * @return boolean - */ - public function readCell($column, $row, $worksheetName = ''); -} diff --git a/application/third_party/PHPExcel/Reader/IReader.php b/application/third_party/PHPExcel/Reader/IReader.php deleted file mode 100644 index 90345464..00000000 --- a/application/third_party/PHPExcel/Reader/IReader.php +++ /dev/null @@ -1,46 +0,0 @@ -<?php - -/** - * PHPExcel_Reader_IReader - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Reader - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -interface PHPExcel_Reader_IReader -{ - /** - * Can the current PHPExcel_Reader_IReader read the file? - * - * @param string $pFilename - * @return boolean - */ - public function canRead($pFilename); - - /** - * Loads PHPExcel from file - * - * @param string $pFilename - * @return PHPExcel - * @throws PHPExcel_Reader_Exception - */ - public function load($pFilename); -} diff --git a/application/third_party/PHPExcel/Reader/OOCalc.php b/application/third_party/PHPExcel/Reader/OOCalc.php deleted file mode 100644 index a889d957..00000000 --- a/application/third_party/PHPExcel/Reader/OOCalc.php +++ /dev/null @@ -1,696 +0,0 @@ -<?php - -/** PHPExcel root directory */ -if (!defined('PHPEXCEL_ROOT')) { - /** - * @ignore - */ - define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../'); - require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); -} - -/** - * PHPExcel_Reader_OOCalc - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Reader - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Reader_OOCalc extends PHPExcel_Reader_Abstract implements PHPExcel_Reader_IReader -{ - /** - * Formats - * - * @var array - */ - private $styles = array(); - - /** - * Create a new PHPExcel_Reader_OOCalc - */ - public function __construct() - { - $this->readFilter = new PHPExcel_Reader_DefaultReadFilter(); - } - - /** - * Can the current PHPExcel_Reader_IReader read the file? - * - * @param string $pFilename - * @return boolean - * @throws PHPExcel_Reader_Exception - */ - public function canRead($pFilename) - { - // Check if file exists - if (!file_exists($pFilename)) { - throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); - } - - $zipClass = PHPExcel_Settings::getZipClass(); - - // Check if zip class exists -// if (!class_exists($zipClass, false)) { -// throw new PHPExcel_Reader_Exception($zipClass . " library is not enabled"); -// } - - $mimeType = 'UNKNOWN'; - // Load file - $zip = new $zipClass; - if ($zip->open($pFilename) === true) { - // check if it is an OOXML archive - $stat = $zip->statName('mimetype'); - if ($stat && ($stat['size'] <= 255)) { - $mimeType = $zip->getFromName($stat['name']); - } elseif ($stat = $zip->statName('META-INF/manifest.xml')) { - $xml = simplexml_load_string($this->securityScan($zip->getFromName('META-INF/manifest.xml')), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); - $namespacesContent = $xml->getNamespaces(true); - if (isset($namespacesContent['manifest'])) { - $manifest = $xml->children($namespacesContent['manifest']); - foreach ($manifest as $manifestDataSet) { - $manifestAttributes = $manifestDataSet->attributes($namespacesContent['manifest']); - if ($manifestAttributes->{'full-path'} == '/') { - $mimeType = (string) $manifestAttributes->{'media-type'}; - break; - } - } - } - } - - $zip->close(); - - return ($mimeType === 'application/vnd.oasis.opendocument.spreadsheet'); - } - - return false; - } - - - /** - * Reads names of the worksheets from a file, without parsing the whole file to a PHPExcel object - * - * @param string $pFilename - * @throws PHPExcel_Reader_Exception - */ - public function listWorksheetNames($pFilename) - { - // Check if file exists - if (!file_exists($pFilename)) { - throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); - } - - $zipClass = PHPExcel_Settings::getZipClass(); - - $zip = new $zipClass; - if (!$zip->open($pFilename)) { - throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! Error opening file."); - } - - $worksheetNames = array(); - - $xml = new XMLReader(); - $res = $xml->xml($this->securityScanFile('zip://'.realpath($pFilename).'#content.xml'), null, PHPExcel_Settings::getLibXmlLoaderOptions()); - $xml->setParserProperty(2, true); - - // Step into the first level of content of the XML - $xml->read(); - while ($xml->read()) { - // Quickly jump through to the office:body node - while ($xml->name !== 'office:body') { - if ($xml->isEmptyElement) { - $xml->read(); - } else { - $xml->next(); - } - } - // Now read each node until we find our first table:table node - while ($xml->read()) { - if ($xml->name == 'table:table' && $xml->nodeType == XMLReader::ELEMENT) { - // Loop through each table:table node reading the table:name attribute for each worksheet name - do { - $worksheetNames[] = $xml->getAttribute('table:name'); - $xml->next(); - } while ($xml->name == 'table:table' && $xml->nodeType == XMLReader::ELEMENT); - } - } - } - - return $worksheetNames; - } - - /** - * Return worksheet info (Name, Last Column Letter, Last Column Index, Total Rows, Total Columns) - * - * @param string $pFilename - * @throws PHPExcel_Reader_Exception - */ - public function listWorksheetInfo($pFilename) - { - // Check if file exists - if (!file_exists($pFilename)) { - throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); - } - - $worksheetInfo = array(); - - $zipClass = PHPExcel_Settings::getZipClass(); - - $zip = new $zipClass; - if (!$zip->open($pFilename)) { - throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! Error opening file."); - } - - $xml = new XMLReader(); - $res = $xml->xml($this->securityScanFile('zip://'.realpath($pFilename).'#content.xml'), null, PHPExcel_Settings::getLibXmlLoaderOptions()); - $xml->setParserProperty(2, true); - - // Step into the first level of content of the XML - $xml->read(); - while ($xml->read()) { - // Quickly jump through to the office:body node - while ($xml->name !== 'office:body') { - if ($xml->isEmptyElement) { - $xml->read(); - } else { - $xml->next(); - } - } - // Now read each node until we find our first table:table node - while ($xml->read()) { - if ($xml->name == 'table:table' && $xml->nodeType == XMLReader::ELEMENT) { - $worksheetNames[] = $xml->getAttribute('table:name'); - - $tmpInfo = array( - 'worksheetName' => $xml->getAttribute('table:name'), - 'lastColumnLetter' => 'A', - 'lastColumnIndex' => 0, - 'totalRows' => 0, - 'totalColumns' => 0, - ); - - // Loop through each child node of the table:table element reading - $currCells = 0; - do { - $xml->read(); - if ($xml->name == 'table:table-row' && $xml->nodeType == XMLReader::ELEMENT) { - $rowspan = $xml->getAttribute('table:number-rows-repeated'); - $rowspan = empty($rowspan) ? 1 : $rowspan; - $tmpInfo['totalRows'] += $rowspan; - $tmpInfo['totalColumns'] = max($tmpInfo['totalColumns'], $currCells); - $currCells = 0; - // Step into the row - $xml->read(); - do { - if ($xml->name == 'table:table-cell' && $xml->nodeType == XMLReader::ELEMENT) { - if (!$xml->isEmptyElement) { - $currCells++; - $xml->next(); - } else { - $xml->read(); - } - } elseif ($xml->name == 'table:covered-table-cell' && $xml->nodeType == XMLReader::ELEMENT) { - $mergeSize = $xml->getAttribute('table:number-columns-repeated'); - $currCells += $mergeSize; - $xml->read(); - } - } while ($xml->name != 'table:table-row'); - } - } while ($xml->name != 'table:table'); - - $tmpInfo['totalColumns'] = max($tmpInfo['totalColumns'], $currCells); - $tmpInfo['lastColumnIndex'] = $tmpInfo['totalColumns'] - 1; - $tmpInfo['lastColumnLetter'] = PHPExcel_Cell::stringFromColumnIndex($tmpInfo['lastColumnIndex']); - $worksheetInfo[] = $tmpInfo; - } - } - -// foreach ($workbookData->table as $worksheetDataSet) { -// $worksheetData = $worksheetDataSet->children($namespacesContent['table']); -// $worksheetDataAttributes = $worksheetDataSet->attributes($namespacesContent['table']); -// -// $rowIndex = 0; -// foreach ($worksheetData as $key => $rowData) { -// switch ($key) { -// case 'table-row' : -// $rowDataTableAttributes = $rowData->attributes($namespacesContent['table']); -// $rowRepeats = (isset($rowDataTableAttributes['number-rows-repeated'])) ? -// $rowDataTableAttributes['number-rows-repeated'] : 1; -// $columnIndex = 0; -// -// foreach ($rowData as $key => $cellData) { -// $cellDataTableAttributes = $cellData->attributes($namespacesContent['table']); -// $colRepeats = (isset($cellDataTableAttributes['number-columns-repeated'])) ? -// $cellDataTableAttributes['number-columns-repeated'] : 1; -// $cellDataOfficeAttributes = $cellData->attributes($namespacesContent['office']); -// if (isset($cellDataOfficeAttributes['value-type'])) { -// $tmpInfo['lastColumnIndex'] = max($tmpInfo['lastColumnIndex'], $columnIndex + $colRepeats - 1); -// $tmpInfo['totalRows'] = max($tmpInfo['totalRows'], $rowIndex + $rowRepeats); -// } -// $columnIndex += $colRepeats; -// } -// $rowIndex += $rowRepeats; -// break; -// } -// } -// -// $tmpInfo['lastColumnLetter'] = PHPExcel_Cell::stringFromColumnIndex($tmpInfo['lastColumnIndex']); -// $tmpInfo['totalColumns'] = $tmpInfo['lastColumnIndex'] + 1; -// -// } -// } - } - - return $worksheetInfo; - } - - /** - * Loads PHPExcel from file - * - * @param string $pFilename - * @return PHPExcel - * @throws PHPExcel_Reader_Exception - */ - public function load($pFilename) - { - // Create new PHPExcel - $objPHPExcel = new PHPExcel(); - - // Load into this instance - return $this->loadIntoExisting($pFilename, $objPHPExcel); - } - - private static function identifyFixedStyleValue($styleList, &$styleAttributeValue) - { - $styleAttributeValue = strtolower($styleAttributeValue); - foreach ($styleList as $style) { - if ($styleAttributeValue == strtolower($style)) { - $styleAttributeValue = $style; - return true; - } - } - return false; - } - - /** - * Loads PHPExcel from file into PHPExcel instance - * - * @param string $pFilename - * @param PHPExcel $objPHPExcel - * @return PHPExcel - * @throws PHPExcel_Reader_Exception - */ - public function loadIntoExisting($pFilename, PHPExcel $objPHPExcel) - { - // Check if file exists - if (!file_exists($pFilename)) { - throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); - } - - $timezoneObj = new DateTimeZone('Europe/London'); - $GMT = new DateTimeZone('UTC'); - - $zipClass = PHPExcel_Settings::getZipClass(); - - $zip = new $zipClass; - if (!$zip->open($pFilename)) { - throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! Error opening file."); - } - -// echo '<h1>Meta Information</h1>'; - $xml = simplexml_load_string($this->securityScan($zip->getFromName("meta.xml")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); - $namespacesMeta = $xml->getNamespaces(true); -// echo '<pre>'; -// print_r($namespacesMeta); -// echo '</pre><hr />'; - - $docProps = $objPHPExcel->getProperties(); - $officeProperty = $xml->children($namespacesMeta['office']); - foreach ($officeProperty as $officePropertyData) { - $officePropertyDC = array(); - if (isset($namespacesMeta['dc'])) { - $officePropertyDC = $officePropertyData->children($namespacesMeta['dc']); - } - foreach ($officePropertyDC as $propertyName => $propertyValue) { - $propertyValue = (string) $propertyValue; - switch ($propertyName) { - case 'title': - $docProps->setTitle($propertyValue); - break; - case 'subject': - $docProps->setSubject($propertyValue); - break; - case 'creator': - $docProps->setCreator($propertyValue); - $docProps->setLastModifiedBy($propertyValue); - break; - case 'date': - $creationDate = strtotime($propertyValue); - $docProps->setCreated($creationDate); - $docProps->setModified($creationDate); - break; - case 'description': - $docProps->setDescription($propertyValue); - break; - } - } - $officePropertyMeta = array(); - if (isset($namespacesMeta['dc'])) { - $officePropertyMeta = $officePropertyData->children($namespacesMeta['meta']); - } - foreach ($officePropertyMeta as $propertyName => $propertyValue) { - $propertyValueAttributes = $propertyValue->attributes($namespacesMeta['meta']); - $propertyValue = (string) $propertyValue; - switch ($propertyName) { - case 'initial-creator': - $docProps->setCreator($propertyValue); - break; - case 'keyword': - $docProps->setKeywords($propertyValue); - break; - case 'creation-date': - $creationDate = strtotime($propertyValue); - $docProps->setCreated($creationDate); - break; - case 'user-defined': - $propertyValueType = PHPExcel_DocumentProperties::PROPERTY_TYPE_STRING; - foreach ($propertyValueAttributes as $key => $value) { - if ($key == 'name') { - $propertyValueName = (string) $value; - } elseif ($key == 'value-type') { - switch ($value) { - case 'date': - $propertyValue = PHPExcel_DocumentProperties::convertProperty($propertyValue, 'date'); - $propertyValueType = PHPExcel_DocumentProperties::PROPERTY_TYPE_DATE; - break; - case 'boolean': - $propertyValue = PHPExcel_DocumentProperties::convertProperty($propertyValue, 'bool'); - $propertyValueType = PHPExcel_DocumentProperties::PROPERTY_TYPE_BOOLEAN; - break; - case 'float': - $propertyValue = PHPExcel_DocumentProperties::convertProperty($propertyValue, 'r4'); - $propertyValueType = PHPExcel_DocumentProperties::PROPERTY_TYPE_FLOAT; - break; - default: - $propertyValueType = PHPExcel_DocumentProperties::PROPERTY_TYPE_STRING; - } - } - } - $docProps->setCustomProperty($propertyValueName, $propertyValue, $propertyValueType); - break; - } - } - } - - -// echo '<h1>Workbook Content</h1>'; - $xml = simplexml_load_string($this->securityScan($zip->getFromName("content.xml")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); - $namespacesContent = $xml->getNamespaces(true); -// echo '<pre>'; -// print_r($namespacesContent); -// echo '</pre><hr />'; - - $workbook = $xml->children($namespacesContent['office']); - foreach ($workbook->body->spreadsheet as $workbookData) { - $workbookData = $workbookData->children($namespacesContent['table']); - $worksheetID = 0; - foreach ($workbookData->table as $worksheetDataSet) { - $worksheetData = $worksheetDataSet->children($namespacesContent['table']); -// print_r($worksheetData); -// echo '<br />'; - $worksheetDataAttributes = $worksheetDataSet->attributes($namespacesContent['table']); -// print_r($worksheetDataAttributes); -// echo '<br />'; - if ((isset($this->loadSheetsOnly)) && (isset($worksheetDataAttributes['name'])) && - (!in_array($worksheetDataAttributes['name'], $this->loadSheetsOnly))) { - continue; - } - -// echo '<h2>Worksheet '.$worksheetDataAttributes['name'].'</h2>'; - // Create new Worksheet - $objPHPExcel->createSheet(); - $objPHPExcel->setActiveSheetIndex($worksheetID); - if (isset($worksheetDataAttributes['name'])) { - $worksheetName = (string) $worksheetDataAttributes['name']; - // Use false for $updateFormulaCellReferences to prevent adjustment of worksheet references in - // formula cells... during the load, all formulae should be correct, and we're simply - // bringing the worksheet name in line with the formula, not the reverse - $objPHPExcel->getActiveSheet()->setTitle($worksheetName, false); - } - - $rowID = 1; - foreach ($worksheetData as $key => $rowData) { -// echo '<b>'.$key.'</b><br />'; - switch ($key) { - case 'table-header-rows': - foreach ($rowData as $key => $cellData) { - $rowData = $cellData; - break; - } - case 'table-row': - $rowDataTableAttributes = $rowData->attributes($namespacesContent['table']); - $rowRepeats = (isset($rowDataTableAttributes['number-rows-repeated'])) ? $rowDataTableAttributes['number-rows-repeated'] : 1; - $columnID = 'A'; - foreach ($rowData as $key => $cellData) { - if ($this->getReadFilter() !== null) { - if (!$this->getReadFilter()->readCell($columnID, $rowID, $worksheetName)) { - continue; - } - } - -// echo '<b>'.$columnID.$rowID.'</b><br />'; - $cellDataText = (isset($namespacesContent['text'])) ? $cellData->children($namespacesContent['text']) : ''; - $cellDataOffice = $cellData->children($namespacesContent['office']); - $cellDataOfficeAttributes = $cellData->attributes($namespacesContent['office']); - $cellDataTableAttributes = $cellData->attributes($namespacesContent['table']); - -// echo 'Office Attributes: '; -// print_r($cellDataOfficeAttributes); -// echo '<br />Table Attributes: '; -// print_r($cellDataTableAttributes); -// echo '<br />Cell Data Text'; -// print_r($cellDataText); -// echo '<br />'; -// - $type = $formatting = $hyperlink = null; - $hasCalculatedValue = false; - $cellDataFormula = ''; - if (isset($cellDataTableAttributes['formula'])) { - $cellDataFormula = $cellDataTableAttributes['formula']; - $hasCalculatedValue = true; - } - - if (isset($cellDataOffice->annotation)) { -// echo 'Cell has comment<br />'; - $annotationText = $cellDataOffice->annotation->children($namespacesContent['text']); - $textArray = array(); - foreach ($annotationText as $t) { - if (isset($t->span)) { - foreach ($t->span as $text) { - $textArray[] = (string)$text; - } - } else { - $textArray[] = (string) $t; - } - } - $text = implode("\n", $textArray); -// echo $text, '<br />'; - $objPHPExcel->getActiveSheet()->getComment($columnID.$rowID)->setText($this->parseRichText($text)); -// ->setAuthor( $author ) - } - - if (isset($cellDataText->p)) { - // Consolidate if there are multiple p records (maybe with spans as well) - $dataArray = array(); - // Text can have multiple text:p and within those, multiple text:span. - // text:p newlines, but text:span does not. - // Also, here we assume there is no text data is span fields are specified, since - // we have no way of knowing proper positioning anyway. - foreach ($cellDataText->p as $pData) { - if (isset($pData->span)) { - // span sections do not newline, so we just create one large string here - $spanSection = ""; - foreach ($pData->span as $spanData) { - $spanSection .= $spanData; - } - array_push($dataArray, $spanSection); - } else { - array_push($dataArray, $pData); - } - } - $allCellDataText = implode($dataArray, "\n"); - -// echo 'Value Type is '.$cellDataOfficeAttributes['value-type'].'<br />'; - switch ($cellDataOfficeAttributes['value-type']) { - case 'string': - $type = PHPExcel_Cell_DataType::TYPE_STRING; - $dataValue = $allCellDataText; - if (isset($dataValue->a)) { - $dataValue = $dataValue->a; - $cellXLinkAttributes = $dataValue->attributes($namespacesContent['xlink']); - $hyperlink = $cellXLinkAttributes['href']; - } - break; - case 'boolean': - $type = PHPExcel_Cell_DataType::TYPE_BOOL; - $dataValue = ($allCellDataText == 'TRUE') ? true : false; - break; - case 'percentage': - $type = PHPExcel_Cell_DataType::TYPE_NUMERIC; - $dataValue = (float) $cellDataOfficeAttributes['value']; - if (floor($dataValue) == $dataValue) { - $dataValue = (integer) $dataValue; - } - $formatting = PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE_00; - break; - case 'currency': - $type = PHPExcel_Cell_DataType::TYPE_NUMERIC; - $dataValue = (float) $cellDataOfficeAttributes['value']; - if (floor($dataValue) == $dataValue) { - $dataValue = (integer) $dataValue; - } - $formatting = PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_USD_SIMPLE; - break; - case 'float': - $type = PHPExcel_Cell_DataType::TYPE_NUMERIC; - $dataValue = (float) $cellDataOfficeAttributes['value']; - if (floor($dataValue) == $dataValue) { - if ($dataValue == (integer) $dataValue) { - $dataValue = (integer) $dataValue; - } else { - $dataValue = (float) $dataValue; - } - } - break; - case 'date': - $type = PHPExcel_Cell_DataType::TYPE_NUMERIC; - $dateObj = new DateTime($cellDataOfficeAttributes['date-value'], $GMT); - $dateObj->setTimeZone($timezoneObj); - list($year, $month, $day, $hour, $minute, $second) = explode(' ', $dateObj->format('Y m d H i s')); - $dataValue = PHPExcel_Shared_Date::FormattedPHPToExcel($year, $month, $day, $hour, $minute, $second); - if ($dataValue != floor($dataValue)) { - $formatting = PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX15.' '.PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME4; - } else { - $formatting = PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX15; - } - break; - case 'time': - $type = PHPExcel_Cell_DataType::TYPE_NUMERIC; - $dataValue = PHPExcel_Shared_Date::PHPToExcel(strtotime('01-01-1970 '.implode(':', sscanf($cellDataOfficeAttributes['time-value'], 'PT%dH%dM%dS')))); - $formatting = PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME4; - break; - } -// echo 'Data value is '.$dataValue.'<br />'; -// if ($hyperlink !== null) { -// echo 'Hyperlink is '.$hyperlink.'<br />'; -// } - } else { - $type = PHPExcel_Cell_DataType::TYPE_NULL; - $dataValue = null; - } - - if ($hasCalculatedValue) { - $type = PHPExcel_Cell_DataType::TYPE_FORMULA; -// echo 'Formula: ', $cellDataFormula, PHP_EOL; - $cellDataFormula = substr($cellDataFormula, strpos($cellDataFormula, ':=')+1); - $temp = explode('"', $cellDataFormula); - $tKey = false; - foreach ($temp as &$value) { - // Only replace in alternate array entries (i.e. non-quoted blocks) - if ($tKey = !$tKey) { - $value = preg_replace('/\[([^\.]+)\.([^\.]+):\.([^\.]+)\]/Ui', '$1!$2:$3', $value); // Cell range reference in another sheet - $value = preg_replace('/\[([^\.]+)\.([^\.]+)\]/Ui', '$1!$2', $value); // Cell reference in another sheet - $value = preg_replace('/\[\.([^\.]+):\.([^\.]+)\]/Ui', '$1:$2', $value); // Cell range reference - $value = preg_replace('/\[\.([^\.]+)\]/Ui', '$1', $value); // Simple cell reference - $value = PHPExcel_Calculation::translateSeparator(';', ',', $value, $inBraces); - } - } - unset($value); - // Then rebuild the formula string - $cellDataFormula = implode('"', $temp); -// echo 'Adjusted Formula: ', $cellDataFormula, PHP_EOL; - } - - $colRepeats = (isset($cellDataTableAttributes['number-columns-repeated'])) ? $cellDataTableAttributes['number-columns-repeated'] : 1; - if ($type !== null) { - for ($i = 0; $i < $colRepeats; ++$i) { - if ($i > 0) { - ++$columnID; - } - if ($type !== PHPExcel_Cell_DataType::TYPE_NULL) { - for ($rowAdjust = 0; $rowAdjust < $rowRepeats; ++$rowAdjust) { - $rID = $rowID + $rowAdjust; - $objPHPExcel->getActiveSheet()->getCell($columnID.$rID)->setValueExplicit((($hasCalculatedValue) ? $cellDataFormula : $dataValue), $type); - if ($hasCalculatedValue) { -// echo 'Forumla result is '.$dataValue.'<br />'; - $objPHPExcel->getActiveSheet()->getCell($columnID.$rID)->setCalculatedValue($dataValue); - } - if ($formatting !== null) { - $objPHPExcel->getActiveSheet()->getStyle($columnID.$rID)->getNumberFormat()->setFormatCode($formatting); - } else { - $objPHPExcel->getActiveSheet()->getStyle($columnID.$rID)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_GENERAL); - } - if ($hyperlink !== null) { - $objPHPExcel->getActiveSheet()->getCell($columnID.$rID)->getHyperlink()->setUrl($hyperlink); - } - } - } - } - } - - // Merged cells - if ((isset($cellDataTableAttributes['number-columns-spanned'])) || (isset($cellDataTableAttributes['number-rows-spanned']))) { - if (($type !== PHPExcel_Cell_DataType::TYPE_NULL) || (!$this->readDataOnly)) { - $columnTo = $columnID; - if (isset($cellDataTableAttributes['number-columns-spanned'])) { - $columnTo = PHPExcel_Cell::stringFromColumnIndex(PHPExcel_Cell::columnIndexFromString($columnID) + $cellDataTableAttributes['number-columns-spanned'] -2); - } - $rowTo = $rowID; - if (isset($cellDataTableAttributes['number-rows-spanned'])) { - $rowTo = $rowTo + $cellDataTableAttributes['number-rows-spanned'] - 1; - } - $cellRange = $columnID.$rowID.':'.$columnTo.$rowTo; - $objPHPExcel->getActiveSheet()->mergeCells($cellRange); - } - } - - ++$columnID; - } - $rowID += $rowRepeats; - break; - } - } - ++$worksheetID; - } - } - - // Return - return $objPHPExcel; - } - - private function parseRichText($is = '') - { - $value = new PHPExcel_RichText(); - - $value->createText($is); - - return $value; - } -} diff --git a/application/third_party/PHPExcel/Reader/SYLK.php b/application/third_party/PHPExcel/Reader/SYLK.php deleted file mode 100644 index eb7ef1af..00000000 --- a/application/third_party/PHPExcel/Reader/SYLK.php +++ /dev/null @@ -1,478 +0,0 @@ -<?php - -/** PHPExcel root directory */ -if (!defined('PHPEXCEL_ROOT')) { - /** - * @ignore - */ - define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../'); - require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); -} - -/** - * PHPExcel_Reader_SYLK - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Reader - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Reader_SYLK extends PHPExcel_Reader_Abstract implements PHPExcel_Reader_IReader -{ - /** - * Input encoding - * - * @var string - */ - private $inputEncoding = 'ANSI'; - - /** - * Sheet index to read - * - * @var int - */ - private $sheetIndex = 0; - - /** - * Formats - * - * @var array - */ - private $formats = array(); - - /** - * Format Count - * - * @var int - */ - private $format = 0; - - /** - * Create a new PHPExcel_Reader_SYLK - */ - public function __construct() - { - $this->readFilter = new PHPExcel_Reader_DefaultReadFilter(); - } - - /** - * Validate that the current file is a SYLK file - * - * @return boolean - */ - protected function isValidFormat() - { - // Read sample data (first 2 KB will do) - $data = fread($this->fileHandle, 2048); - - // Count delimiters in file - $delimiterCount = substr_count($data, ';'); - if ($delimiterCount < 1) { - return false; - } - - // Analyze first line looking for ID; signature - $lines = explode("\n", $data); - if (substr($lines[0], 0, 4) != 'ID;P') { - return false; - } - - return true; - } - - /** - * Set input encoding - * - * @param string $pValue Input encoding - */ - public function setInputEncoding($pValue = 'ANSI') - { - $this->inputEncoding = $pValue; - return $this; - } - - /** - * Get input encoding - * - * @return string - */ - public function getInputEncoding() - { - return $this->inputEncoding; - } - - /** - * Return worksheet info (Name, Last Column Letter, Last Column Index, Total Rows, Total Columns) - * - * @param string $pFilename - * @throws PHPExcel_Reader_Exception - */ - public function listWorksheetInfo($pFilename) - { - // Open file - $this->openFile($pFilename); - if (!$this->isValidFormat()) { - fclose($this->fileHandle); - throw new PHPExcel_Reader_Exception($pFilename . " is an Invalid Spreadsheet file."); - } - $fileHandle = $this->fileHandle; - rewind($fileHandle); - - $worksheetInfo = array(); - $worksheetInfo[0]['worksheetName'] = 'Worksheet'; - $worksheetInfo[0]['lastColumnLetter'] = 'A'; - $worksheetInfo[0]['lastColumnIndex'] = 0; - $worksheetInfo[0]['totalRows'] = 0; - $worksheetInfo[0]['totalColumns'] = 0; - - // Loop through file - $rowData = array(); - - // loop through one row (line) at a time in the file - $rowIndex = 0; - while (($rowData = fgets($fileHandle)) !== false) { - $columnIndex = 0; - - // convert SYLK encoded $rowData to UTF-8 - $rowData = PHPExcel_Shared_String::SYLKtoUTF8($rowData); - - // explode each row at semicolons while taking into account that literal semicolon (;) - // is escaped like this (;;) - $rowData = explode("\t", str_replace('¤', ';', str_replace(';', "\t", str_replace(';;', '¤', rtrim($rowData))))); - - $dataType = array_shift($rowData); - if ($dataType == 'C') { - // Read cell value data - foreach ($rowData as $rowDatum) { - switch ($rowDatum{0}) { - case 'C': - case 'X': - $columnIndex = substr($rowDatum, 1) - 1; - break; - case 'R': - case 'Y': - $rowIndex = substr($rowDatum, 1); - break; - } - - $worksheetInfo[0]['totalRows'] = max($worksheetInfo[0]['totalRows'], $rowIndex); - $worksheetInfo[0]['lastColumnIndex'] = max($worksheetInfo[0]['lastColumnIndex'], $columnIndex); - } - } - } - - $worksheetInfo[0]['lastColumnLetter'] = PHPExcel_Cell::stringFromColumnIndex($worksheetInfo[0]['lastColumnIndex']); - $worksheetInfo[0]['totalColumns'] = $worksheetInfo[0]['lastColumnIndex'] + 1; - - // Close file - fclose($fileHandle); - - return $worksheetInfo; - } - - /** - * Loads PHPExcel from file - * - * @param string $pFilename - * @return PHPExcel - * @throws PHPExcel_Reader_Exception - */ - public function load($pFilename) - { - // Create new PHPExcel - $objPHPExcel = new PHPExcel(); - - // Load into this instance - return $this->loadIntoExisting($pFilename, $objPHPExcel); - } - - /** - * Loads PHPExcel from file into PHPExcel instance - * - * @param string $pFilename - * @param PHPExcel $objPHPExcel - * @return PHPExcel - * @throws PHPExcel_Reader_Exception - */ - public function loadIntoExisting($pFilename, PHPExcel $objPHPExcel) - { - // Open file - $this->openFile($pFilename); - if (!$this->isValidFormat()) { - fclose($this->fileHandle); - throw new PHPExcel_Reader_Exception($pFilename . " is an Invalid Spreadsheet file."); - } - $fileHandle = $this->fileHandle; - rewind($fileHandle); - - // Create new PHPExcel - while ($objPHPExcel->getSheetCount() <= $this->sheetIndex) { - $objPHPExcel->createSheet(); - } - $objPHPExcel->setActiveSheetIndex($this->sheetIndex); - - $fromFormats = array('\-', '\ '); - $toFormats = array('-', ' '); - - // Loop through file - $rowData = array(); - $column = $row = ''; - - // loop through one row (line) at a time in the file - while (($rowData = fgets($fileHandle)) !== false) { - // convert SYLK encoded $rowData to UTF-8 - $rowData = PHPExcel_Shared_String::SYLKtoUTF8($rowData); - - // explode each row at semicolons while taking into account that literal semicolon (;) - // is escaped like this (;;) - $rowData = explode("\t", str_replace('¤', ';', str_replace(';', "\t", str_replace(';;', '¤', rtrim($rowData))))); - - $dataType = array_shift($rowData); - // Read shared styles - if ($dataType == 'P') { - $formatArray = array(); - foreach ($rowData as $rowDatum) { - switch ($rowDatum{0}) { - case 'P': - $formatArray['numberformat']['code'] = str_replace($fromFormats, $toFormats, substr($rowDatum, 1)); - break; - case 'E': - case 'F': - $formatArray['font']['name'] = substr($rowDatum, 1); - break; - case 'L': - $formatArray['font']['size'] = substr($rowDatum, 1); - break; - case 'S': - $styleSettings = substr($rowDatum, 1); - for ($i=0; $i<strlen($styleSettings); ++$i) { - switch ($styleSettings{$i}) { - case 'I': - $formatArray['font']['italic'] = true; - break; - case 'D': - $formatArray['font']['bold'] = true; - break; - case 'T': - $formatArray['borders']['top']['style'] = PHPExcel_Style_Border::BORDER_THIN; - break; - case 'B': - $formatArray['borders']['bottom']['style'] = PHPExcel_Style_Border::BORDER_THIN; - break; - case 'L': - $formatArray['borders']['left']['style'] = PHPExcel_Style_Border::BORDER_THIN; - break; - case 'R': - $formatArray['borders']['right']['style'] = PHPExcel_Style_Border::BORDER_THIN; - break; - } - } - break; - } - } - $this->formats['P'.$this->format++] = $formatArray; - // Read cell value data - } elseif ($dataType == 'C') { - $hasCalculatedValue = false; - $cellData = $cellDataFormula = ''; - foreach ($rowData as $rowDatum) { - switch ($rowDatum{0}) { - case 'C': - case 'X': - $column = substr($rowDatum, 1); - break; - case 'R': - case 'Y': - $row = substr($rowDatum, 1); - break; - case 'K': - $cellData = substr($rowDatum, 1); - break; - case 'E': - $cellDataFormula = '='.substr($rowDatum, 1); - // Convert R1C1 style references to A1 style references (but only when not quoted) - $temp = explode('"', $cellDataFormula); - $key = false; - foreach ($temp as &$value) { - // Only count/replace in alternate array entries - if ($key = !$key) { - preg_match_all('/(R(\[?-?\d*\]?))(C(\[?-?\d*\]?))/', $value, $cellReferences, PREG_SET_ORDER+PREG_OFFSET_CAPTURE); - // Reverse the matches array, otherwise all our offsets will become incorrect if we modify our way - // through the formula from left to right. Reversing means that we work right to left.through - // the formula - $cellReferences = array_reverse($cellReferences); - // Loop through each R1C1 style reference in turn, converting it to its A1 style equivalent, - // then modify the formula to use that new reference - foreach ($cellReferences as $cellReference) { - $rowReference = $cellReference[2][0]; - // Empty R reference is the current row - if ($rowReference == '') { - $rowReference = $row; - } - // Bracketed R references are relative to the current row - if ($rowReference{0} == '[') { - $rowReference = $row + trim($rowReference, '[]'); - } - $columnReference = $cellReference[4][0]; - // Empty C reference is the current column - if ($columnReference == '') { - $columnReference = $column; - } - // Bracketed C references are relative to the current column - if ($columnReference{0} == '[') { - $columnReference = $column + trim($columnReference, '[]'); - } - $A1CellReference = PHPExcel_Cell::stringFromColumnIndex($columnReference-1).$rowReference; - - $value = substr_replace($value, $A1CellReference, $cellReference[0][1], strlen($cellReference[0][0])); - } - } - } - unset($value); - // Then rebuild the formula string - $cellDataFormula = implode('"', $temp); - $hasCalculatedValue = true; - break; - } - } - $columnLetter = PHPExcel_Cell::stringFromColumnIndex($column-1); - $cellData = PHPExcel_Calculation::unwrapResult($cellData); - - // Set cell value - $objPHPExcel->getActiveSheet()->getCell($columnLetter.$row)->setValue(($hasCalculatedValue) ? $cellDataFormula : $cellData); - if ($hasCalculatedValue) { - $cellData = PHPExcel_Calculation::unwrapResult($cellData); - $objPHPExcel->getActiveSheet()->getCell($columnLetter.$row)->setCalculatedValue($cellData); - } - // Read cell formatting - } elseif ($dataType == 'F') { - $formatStyle = $columnWidth = $styleSettings = ''; - $styleData = array(); - foreach ($rowData as $rowDatum) { - switch ($rowDatum{0}) { - case 'C': - case 'X': - $column = substr($rowDatum, 1); - break; - case 'R': - case 'Y': - $row = substr($rowDatum, 1); - break; - case 'P': - $formatStyle = $rowDatum; - break; - case 'W': - list($startCol, $endCol, $columnWidth) = explode(' ', substr($rowDatum, 1)); - break; - case 'S': - $styleSettings = substr($rowDatum, 1); - for ($i=0; $i<strlen($styleSettings); ++$i) { - switch ($styleSettings{$i}) { - case 'I': - $styleData['font']['italic'] = true; - break; - case 'D': - $styleData['font']['bold'] = true; - break; - case 'T': - $styleData['borders']['top']['style'] = PHPExcel_Style_Border::BORDER_THIN; - break; - case 'B': - $styleData['borders']['bottom']['style'] = PHPExcel_Style_Border::BORDER_THIN; - break; - case 'L': - $styleData['borders']['left']['style'] = PHPExcel_Style_Border::BORDER_THIN; - break; - case 'R': - $styleData['borders']['right']['style'] = PHPExcel_Style_Border::BORDER_THIN; - break; - } - } - break; - } - } - if (($formatStyle > '') && ($column > '') && ($row > '')) { - $columnLetter = PHPExcel_Cell::stringFromColumnIndex($column-1); - if (isset($this->formats[$formatStyle])) { - $objPHPExcel->getActiveSheet()->getStyle($columnLetter.$row)->applyFromArray($this->formats[$formatStyle]); - } - } - if ((!empty($styleData)) && ($column > '') && ($row > '')) { - $columnLetter = PHPExcel_Cell::stringFromColumnIndex($column-1); - $objPHPExcel->getActiveSheet()->getStyle($columnLetter.$row)->applyFromArray($styleData); - } - if ($columnWidth > '') { - if ($startCol == $endCol) { - $startCol = PHPExcel_Cell::stringFromColumnIndex($startCol-1); - $objPHPExcel->getActiveSheet()->getColumnDimension($startCol)->setWidth($columnWidth); - } else { - $startCol = PHPExcel_Cell::stringFromColumnIndex($startCol-1); - $endCol = PHPExcel_Cell::stringFromColumnIndex($endCol-1); - $objPHPExcel->getActiveSheet()->getColumnDimension($startCol)->setWidth($columnWidth); - do { - $objPHPExcel->getActiveSheet()->getColumnDimension(++$startCol)->setWidth($columnWidth); - } while ($startCol != $endCol); - } - } - } else { - foreach ($rowData as $rowDatum) { - switch ($rowDatum{0}) { - case 'C': - case 'X': - $column = substr($rowDatum, 1); - break; - case 'R': - case 'Y': - $row = substr($rowDatum, 1); - break; - } - } - } - } - - // Close file - fclose($fileHandle); - - // Return - return $objPHPExcel; - } - - /** - * Get sheet index - * - * @return int - */ - public function getSheetIndex() - { - return $this->sheetIndex; - } - - /** - * Set sheet index - * - * @param int $pValue Sheet index - * @return PHPExcel_Reader_SYLK - */ - public function setSheetIndex($pValue = 0) - { - $this->sheetIndex = $pValue; - return $this; - } -} diff --git a/application/third_party/PHPExcel/ReferenceHelper.php b/application/third_party/PHPExcel/ReferenceHelper.php deleted file mode 100644 index 7d7de93b..00000000 --- a/application/third_party/PHPExcel/ReferenceHelper.php +++ /dev/null @@ -1,913 +0,0 @@ -<?php - -/** - * PHPExcel_ReferenceHelper (Singleton) - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_ReferenceHelper -{ - /** Constants */ - /** Regular Expressions */ - const REFHELPER_REGEXP_CELLREF = '((\w*|\'[^!]*\')!)?(?<![:a-z\$])(\$?[a-z]{1,3}\$?\d+)(?=[^:!\d\'])'; - const REFHELPER_REGEXP_CELLRANGE = '((\w*|\'[^!]*\')!)?(\$?[a-z]{1,3}\$?\d+):(\$?[a-z]{1,3}\$?\d+)'; - const REFHELPER_REGEXP_ROWRANGE = '((\w*|\'[^!]*\')!)?(\$?\d+):(\$?\d+)'; - const REFHELPER_REGEXP_COLRANGE = '((\w*|\'[^!]*\')!)?(\$?[a-z]{1,3}):(\$?[a-z]{1,3})'; - - /** - * Instance of this class - * - * @var PHPExcel_ReferenceHelper - */ - private static $instance; - - /** - * Get an instance of this class - * - * @return PHPExcel_ReferenceHelper - */ - public static function getInstance() - { - if (!isset(self::$instance) || (self::$instance === null)) { - self::$instance = new PHPExcel_ReferenceHelper(); - } - - return self::$instance; - } - - /** - * Create a new PHPExcel_ReferenceHelper - */ - protected function __construct() - { - } - - /** - * Compare two column addresses - * Intended for use as a Callback function for sorting column addresses by column - * - * @param string $a First column to test (e.g. 'AA') - * @param string $b Second column to test (e.g. 'Z') - * @return integer - */ - public static function columnSort($a, $b) - { - return strcasecmp(strlen($a) . $a, strlen($b) . $b); - } - - /** - * Compare two column addresses - * Intended for use as a Callback function for reverse sorting column addresses by column - * - * @param string $a First column to test (e.g. 'AA') - * @param string $b Second column to test (e.g. 'Z') - * @return integer - */ - public static function columnReverseSort($a, $b) - { - return 1 - strcasecmp(strlen($a) . $a, strlen($b) . $b); - } - - /** - * Compare two cell addresses - * Intended for use as a Callback function for sorting cell addresses by column and row - * - * @param string $a First cell to test (e.g. 'AA1') - * @param string $b Second cell to test (e.g. 'Z1') - * @return integer - */ - public static function cellSort($a, $b) - { - sscanf($a, '%[A-Z]%d', $ac, $ar); - sscanf($b, '%[A-Z]%d', $bc, $br); - - if ($ar == $br) { - return strcasecmp(strlen($ac) . $ac, strlen($bc) . $bc); - } - return ($ar < $br) ? -1 : 1; - } - - /** - * Compare two cell addresses - * Intended for use as a Callback function for sorting cell addresses by column and row - * - * @param string $a First cell to test (e.g. 'AA1') - * @param string $b Second cell to test (e.g. 'Z1') - * @return integer - */ - public static function cellReverseSort($a, $b) - { - sscanf($a, '%[A-Z]%d', $ac, $ar); - sscanf($b, '%[A-Z]%d', $bc, $br); - - if ($ar == $br) { - return 1 - strcasecmp(strlen($ac) . $ac, strlen($bc) . $bc); - } - return ($ar < $br) ? 1 : -1; - } - - /** - * Test whether a cell address falls within a defined range of cells - * - * @param string $cellAddress Address of the cell we're testing - * @param integer $beforeRow Number of the row we're inserting/deleting before - * @param integer $pNumRows Number of rows to insert/delete (negative values indicate deletion) - * @param integer $beforeColumnIndex Index number of the column we're inserting/deleting before - * @param integer $pNumCols Number of columns to insert/delete (negative values indicate deletion) - * @return boolean - */ - private static function cellAddressInDeleteRange($cellAddress, $beforeRow, $pNumRows, $beforeColumnIndex, $pNumCols) - { - list($cellColumn, $cellRow) = PHPExcel_Cell::coordinateFromString($cellAddress); - $cellColumnIndex = PHPExcel_Cell::columnIndexFromString($cellColumn); - // Is cell within the range of rows/columns if we're deleting - if ($pNumRows < 0 && - ($cellRow >= ($beforeRow + $pNumRows)) && - ($cellRow < $beforeRow)) { - return true; - } elseif ($pNumCols < 0 && - ($cellColumnIndex >= ($beforeColumnIndex + $pNumCols)) && - ($cellColumnIndex < $beforeColumnIndex)) { - return true; - } - return false; - } - - /** - * Update page breaks when inserting/deleting rows/columns - * - * @param PHPExcel_Worksheet $pSheet The worksheet that we're editing - * @param string $pBefore Insert/Delete before this cell address (e.g. 'A1') - * @param integer $beforeColumnIndex Index number of the column we're inserting/deleting before - * @param integer $pNumCols Number of columns to insert/delete (negative values indicate deletion) - * @param integer $beforeRow Number of the row we're inserting/deleting before - * @param integer $pNumRows Number of rows to insert/delete (negative values indicate deletion) - */ - protected function adjustPageBreaks(PHPExcel_Worksheet $pSheet, $pBefore, $beforeColumnIndex, $pNumCols, $beforeRow, $pNumRows) - { - $aBreaks = $pSheet->getBreaks(); - ($pNumCols > 0 || $pNumRows > 0) ? - uksort($aBreaks, array('PHPExcel_ReferenceHelper','cellReverseSort')) : - uksort($aBreaks, array('PHPExcel_ReferenceHelper','cellSort')); - - foreach ($aBreaks as $key => $value) { - if (self::cellAddressInDeleteRange($key, $beforeRow, $pNumRows, $beforeColumnIndex, $pNumCols)) { - // If we're deleting, then clear any defined breaks that are within the range - // of rows/columns that we're deleting - $pSheet->setBreak($key, PHPExcel_Worksheet::BREAK_NONE); - } else { - // Otherwise update any affected breaks by inserting a new break at the appropriate point - // and removing the old affected break - $newReference = $this->updateCellReference($key, $pBefore, $pNumCols, $pNumRows); - if ($key != $newReference) { - $pSheet->setBreak($newReference, $value) - ->setBreak($key, PHPExcel_Worksheet::BREAK_NONE); - } - } - } - } - - /** - * Update cell comments when inserting/deleting rows/columns - * - * @param PHPExcel_Worksheet $pSheet The worksheet that we're editing - * @param string $pBefore Insert/Delete before this cell address (e.g. 'A1') - * @param integer $beforeColumnIndex Index number of the column we're inserting/deleting before - * @param integer $pNumCols Number of columns to insert/delete (negative values indicate deletion) - * @param integer $beforeRow Number of the row we're inserting/deleting before - * @param integer $pNumRows Number of rows to insert/delete (negative values indicate deletion) - */ - protected function adjustComments($pSheet, $pBefore, $beforeColumnIndex, $pNumCols, $beforeRow, $pNumRows) - { - $aComments = $pSheet->getComments(); - $aNewComments = array(); // the new array of all comments - - foreach ($aComments as $key => &$value) { - // Any comments inside a deleted range will be ignored - if (!self::cellAddressInDeleteRange($key, $beforeRow, $pNumRows, $beforeColumnIndex, $pNumCols)) { - // Otherwise build a new array of comments indexed by the adjusted cell reference - $newReference = $this->updateCellReference($key, $pBefore, $pNumCols, $pNumRows); - $aNewComments[$newReference] = $value; - } - } - // Replace the comments array with the new set of comments - $pSheet->setComments($aNewComments); - } - - /** - * Update hyperlinks when inserting/deleting rows/columns - * - * @param PHPExcel_Worksheet $pSheet The worksheet that we're editing - * @param string $pBefore Insert/Delete before this cell address (e.g. 'A1') - * @param integer $beforeColumnIndex Index number of the column we're inserting/deleting before - * @param integer $pNumCols Number of columns to insert/delete (negative values indicate deletion) - * @param integer $beforeRow Number of the row we're inserting/deleting before - * @param integer $pNumRows Number of rows to insert/delete (negative values indicate deletion) - */ - protected function adjustHyperlinks($pSheet, $pBefore, $beforeColumnIndex, $pNumCols, $beforeRow, $pNumRows) - { - $aHyperlinkCollection = $pSheet->getHyperlinkCollection(); - ($pNumCols > 0 || $pNumRows > 0) ? uksort($aHyperlinkCollection, array('PHPExcel_ReferenceHelper','cellReverseSort')) : uksort($aHyperlinkCollection, array('PHPExcel_ReferenceHelper','cellSort')); - - foreach ($aHyperlinkCollection as $key => $value) { - $newReference = $this->updateCellReference($key, $pBefore, $pNumCols, $pNumRows); - if ($key != $newReference) { - $pSheet->setHyperlink($newReference, $value); - $pSheet->setHyperlink($key, null); - } - } - } - - /** - * Update data validations when inserting/deleting rows/columns - * - * @param PHPExcel_Worksheet $pSheet The worksheet that we're editing - * @param string $pBefore Insert/Delete before this cell address (e.g. 'A1') - * @param integer $beforeColumnIndex Index number of the column we're inserting/deleting before - * @param integer $pNumCols Number of columns to insert/delete (negative values indicate deletion) - * @param integer $beforeRow Number of the row we're inserting/deleting before - * @param integer $pNumRows Number of rows to insert/delete (negative values indicate deletion) - */ - protected function adjustDataValidations($pSheet, $pBefore, $beforeColumnIndex, $pNumCols, $beforeRow, $pNumRows) - { - $aDataValidationCollection = $pSheet->getDataValidationCollection(); - ($pNumCols > 0 || $pNumRows > 0) ? uksort($aDataValidationCollection, array('PHPExcel_ReferenceHelper','cellReverseSort')) : uksort($aDataValidationCollection, array('PHPExcel_ReferenceHelper','cellSort')); - - foreach ($aDataValidationCollection as $key => $value) { - $newReference = $this->updateCellReference($key, $pBefore, $pNumCols, $pNumRows); - if ($key != $newReference) { - $pSheet->setDataValidation($newReference, $value); - $pSheet->setDataValidation($key, null); - } - } - } - - /** - * Update merged cells when inserting/deleting rows/columns - * - * @param PHPExcel_Worksheet $pSheet The worksheet that we're editing - * @param string $pBefore Insert/Delete before this cell address (e.g. 'A1') - * @param integer $beforeColumnIndex Index number of the column we're inserting/deleting before - * @param integer $pNumCols Number of columns to insert/delete (negative values indicate deletion) - * @param integer $beforeRow Number of the row we're inserting/deleting before - * @param integer $pNumRows Number of rows to insert/delete (negative values indicate deletion) - */ - protected function adjustMergeCells($pSheet, $pBefore, $beforeColumnIndex, $pNumCols, $beforeRow, $pNumRows) - { - $aMergeCells = $pSheet->getMergeCells(); - $aNewMergeCells = array(); // the new array of all merge cells - foreach ($aMergeCells as $key => &$value) { - $newReference = $this->updateCellReference($key, $pBefore, $pNumCols, $pNumRows); - $aNewMergeCells[$newReference] = $newReference; - } - $pSheet->setMergeCells($aNewMergeCells); // replace the merge cells array - } - - /** - * Update protected cells when inserting/deleting rows/columns - * - * @param PHPExcel_Worksheet $pSheet The worksheet that we're editing - * @param string $pBefore Insert/Delete before this cell address (e.g. 'A1') - * @param integer $beforeColumnIndex Index number of the column we're inserting/deleting before - * @param integer $pNumCols Number of columns to insert/delete (negative values indicate deletion) - * @param integer $beforeRow Number of the row we're inserting/deleting before - * @param integer $pNumRows Number of rows to insert/delete (negative values indicate deletion) - */ - protected function adjustProtectedCells($pSheet, $pBefore, $beforeColumnIndex, $pNumCols, $beforeRow, $pNumRows) - { - $aProtectedCells = $pSheet->getProtectedCells(); - ($pNumCols > 0 || $pNumRows > 0) ? - uksort($aProtectedCells, array('PHPExcel_ReferenceHelper','cellReverseSort')) : - uksort($aProtectedCells, array('PHPExcel_ReferenceHelper','cellSort')); - foreach ($aProtectedCells as $key => $value) { - $newReference = $this->updateCellReference($key, $pBefore, $pNumCols, $pNumRows); - if ($key != $newReference) { - $pSheet->protectCells($newReference, $value, true); - $pSheet->unprotectCells($key); - } - } - } - - /** - * Update column dimensions when inserting/deleting rows/columns - * - * @param PHPExcel_Worksheet $pSheet The worksheet that we're editing - * @param string $pBefore Insert/Delete before this cell address (e.g. 'A1') - * @param integer $beforeColumnIndex Index number of the column we're inserting/deleting before - * @param integer $pNumCols Number of columns to insert/delete (negative values indicate deletion) - * @param integer $beforeRow Number of the row we're inserting/deleting before - * @param integer $pNumRows Number of rows to insert/delete (negative values indicate deletion) - */ - protected function adjustColumnDimensions($pSheet, $pBefore, $beforeColumnIndex, $pNumCols, $beforeRow, $pNumRows) - { - $aColumnDimensions = array_reverse($pSheet->getColumnDimensions(), true); - if (!empty($aColumnDimensions)) { - foreach ($aColumnDimensions as $objColumnDimension) { - $newReference = $this->updateCellReference($objColumnDimension->getColumnIndex() . '1', $pBefore, $pNumCols, $pNumRows); - list($newReference) = PHPExcel_Cell::coordinateFromString($newReference); - if ($objColumnDimension->getColumnIndex() != $newReference) { - $objColumnDimension->setColumnIndex($newReference); - } - } - $pSheet->refreshColumnDimensions(); - } - } - - /** - * Update row dimensions when inserting/deleting rows/columns - * - * @param PHPExcel_Worksheet $pSheet The worksheet that we're editing - * @param string $pBefore Insert/Delete before this cell address (e.g. 'A1') - * @param integer $beforeColumnIndex Index number of the column we're inserting/deleting before - * @param integer $pNumCols Number of columns to insert/delete (negative values indicate deletion) - * @param integer $beforeRow Number of the row we're inserting/deleting before - * @param integer $pNumRows Number of rows to insert/delete (negative values indicate deletion) - */ - protected function adjustRowDimensions($pSheet, $pBefore, $beforeColumnIndex, $pNumCols, $beforeRow, $pNumRows) - { - $aRowDimensions = array_reverse($pSheet->getRowDimensions(), true); - if (!empty($aRowDimensions)) { - foreach ($aRowDimensions as $objRowDimension) { - $newReference = $this->updateCellReference('A' . $objRowDimension->getRowIndex(), $pBefore, $pNumCols, $pNumRows); - list(, $newReference) = PHPExcel_Cell::coordinateFromString($newReference); - if ($objRowDimension->getRowIndex() != $newReference) { - $objRowDimension->setRowIndex($newReference); - } - } - $pSheet->refreshRowDimensions(); - - $copyDimension = $pSheet->getRowDimension($beforeRow - 1); - for ($i = $beforeRow; $i <= $beforeRow - 1 + $pNumRows; ++$i) { - $newDimension = $pSheet->getRowDimension($i); - $newDimension->setRowHeight($copyDimension->getRowHeight()); - $newDimension->setVisible($copyDimension->getVisible()); - $newDimension->setOutlineLevel($copyDimension->getOutlineLevel()); - $newDimension->setCollapsed($copyDimension->getCollapsed()); - } - } - } - - /** - * Insert a new column or row, updating all possible related data - * - * @param string $pBefore Insert before this cell address (e.g. 'A1') - * @param integer $pNumCols Number of columns to insert/delete (negative values indicate deletion) - * @param integer $pNumRows Number of rows to insert/delete (negative values indicate deletion) - * @param PHPExcel_Worksheet $pSheet The worksheet that we're editing - * @throws PHPExcel_Exception - */ - public function insertNewBefore($pBefore = 'A1', $pNumCols = 0, $pNumRows = 0, PHPExcel_Worksheet $pSheet = null) - { - $remove = ($pNumCols < 0 || $pNumRows < 0); - $aCellCollection = $pSheet->getCellCollection(); - - // Get coordinates of $pBefore - $beforeColumn = 'A'; - $beforeRow = 1; - list($beforeColumn, $beforeRow) = PHPExcel_Cell::coordinateFromString($pBefore); - $beforeColumnIndex = PHPExcel_Cell::columnIndexFromString($beforeColumn); - - // Clear cells if we are removing columns or rows - $highestColumn = $pSheet->getHighestColumn(); - $highestRow = $pSheet->getHighestRow(); - - // 1. Clear column strips if we are removing columns - if ($pNumCols < 0 && $beforeColumnIndex - 2 + $pNumCols > 0) { - for ($i = 1; $i <= $highestRow - 1; ++$i) { - for ($j = $beforeColumnIndex - 1 + $pNumCols; $j <= $beforeColumnIndex - 2; ++$j) { - $coordinate = PHPExcel_Cell::stringFromColumnIndex($j) . $i; - $pSheet->removeConditionalStyles($coordinate); - if ($pSheet->cellExists($coordinate)) { - $pSheet->getCell($coordinate)->setValueExplicit('', PHPExcel_Cell_DataType::TYPE_NULL); - $pSheet->getCell($coordinate)->setXfIndex(0); - } - } - } - } - - // 2. Clear row strips if we are removing rows - if ($pNumRows < 0 && $beforeRow - 1 + $pNumRows > 0) { - for ($i = $beforeColumnIndex - 1; $i <= PHPExcel_Cell::columnIndexFromString($highestColumn) - 1; ++$i) { - for ($j = $beforeRow + $pNumRows; $j <= $beforeRow - 1; ++$j) { - $coordinate = PHPExcel_Cell::stringFromColumnIndex($i) . $j; - $pSheet->removeConditionalStyles($coordinate); - if ($pSheet->cellExists($coordinate)) { - $pSheet->getCell($coordinate)->setValueExplicit('', PHPExcel_Cell_DataType::TYPE_NULL); - $pSheet->getCell($coordinate)->setXfIndex(0); - } - } - } - } - - // Loop through cells, bottom-up, and change cell coordinates - if ($remove) { - // It's faster to reverse and pop than to use unshift, especially with large cell collections - $aCellCollection = array_reverse($aCellCollection); - } - while ($cellID = array_pop($aCellCollection)) { - $cell = $pSheet->getCell($cellID); - $cellIndex = PHPExcel_Cell::columnIndexFromString($cell->getColumn()); - - if ($cellIndex-1 + $pNumCols < 0) { - continue; - } - - // New coordinates - $newCoordinates = PHPExcel_Cell::stringFromColumnIndex($cellIndex-1 + $pNumCols) . ($cell->getRow() + $pNumRows); - - // Should the cell be updated? Move value and cellXf index from one cell to another. - if (($cellIndex >= $beforeColumnIndex) && ($cell->getRow() >= $beforeRow)) { - // Update cell styles - $pSheet->getCell($newCoordinates)->setXfIndex($cell->getXfIndex()); - - // Insert this cell at its new location - if ($cell->getDataType() == PHPExcel_Cell_DataType::TYPE_FORMULA) { - // Formula should be adjusted - $pSheet->getCell($newCoordinates) - ->setValue($this->updateFormulaReferences($cell->getValue(), $pBefore, $pNumCols, $pNumRows, $pSheet->getTitle())); - } else { - // Formula should not be adjusted - $pSheet->getCell($newCoordinates)->setValue($cell->getValue()); - } - - // Clear the original cell - $pSheet->getCellCacheController()->deleteCacheData($cellID); - } else { - /* We don't need to update styles for rows/columns before our insertion position, - but we do still need to adjust any formulae in those cells */ - if ($cell->getDataType() == PHPExcel_Cell_DataType::TYPE_FORMULA) { - // Formula should be adjusted - $cell->setValue($this->updateFormulaReferences($cell->getValue(), $pBefore, $pNumCols, $pNumRows, $pSheet->getTitle())); - } - - } - } - - // Duplicate styles for the newly inserted cells - $highestColumn = $pSheet->getHighestColumn(); - $highestRow = $pSheet->getHighestRow(); - - if ($pNumCols > 0 && $beforeColumnIndex - 2 > 0) { - for ($i = $beforeRow; $i <= $highestRow - 1; ++$i) { - // Style - $coordinate = PHPExcel_Cell::stringFromColumnIndex($beforeColumnIndex - 2) . $i; - if ($pSheet->cellExists($coordinate)) { - $xfIndex = $pSheet->getCell($coordinate)->getXfIndex(); - $conditionalStyles = $pSheet->conditionalStylesExists($coordinate) ? - $pSheet->getConditionalStyles($coordinate) : false; - for ($j = $beforeColumnIndex - 1; $j <= $beforeColumnIndex - 2 + $pNumCols; ++$j) { - $pSheet->getCellByColumnAndRow($j, $i)->setXfIndex($xfIndex); - if ($conditionalStyles) { - $cloned = array(); - foreach ($conditionalStyles as $conditionalStyle) { - $cloned[] = clone $conditionalStyle; - } - $pSheet->setConditionalStyles(PHPExcel_Cell::stringFromColumnIndex($j) . $i, $cloned); - } - } - } - - } - } - - if ($pNumRows > 0 && $beforeRow - 1 > 0) { - for ($i = $beforeColumnIndex - 1; $i <= PHPExcel_Cell::columnIndexFromString($highestColumn) - 1; ++$i) { - // Style - $coordinate = PHPExcel_Cell::stringFromColumnIndex($i) . ($beforeRow - 1); - if ($pSheet->cellExists($coordinate)) { - $xfIndex = $pSheet->getCell($coordinate)->getXfIndex(); - $conditionalStyles = $pSheet->conditionalStylesExists($coordinate) ? - $pSheet->getConditionalStyles($coordinate) : false; - for ($j = $beforeRow; $j <= $beforeRow - 1 + $pNumRows; ++$j) { - $pSheet->getCell(PHPExcel_Cell::stringFromColumnIndex($i) . $j)->setXfIndex($xfIndex); - if ($conditionalStyles) { - $cloned = array(); - foreach ($conditionalStyles as $conditionalStyle) { - $cloned[] = clone $conditionalStyle; - } - $pSheet->setConditionalStyles(PHPExcel_Cell::stringFromColumnIndex($i) . $j, $cloned); - } - } - } - } - } - - // Update worksheet: column dimensions - $this->adjustColumnDimensions($pSheet, $pBefore, $beforeColumnIndex, $pNumCols, $beforeRow, $pNumRows); - - // Update worksheet: row dimensions - $this->adjustRowDimensions($pSheet, $pBefore, $beforeColumnIndex, $pNumCols, $beforeRow, $pNumRows); - - // Update worksheet: page breaks - $this->adjustPageBreaks($pSheet, $pBefore, $beforeColumnIndex, $pNumCols, $beforeRow, $pNumRows); - - // Update worksheet: comments - $this->adjustComments($pSheet, $pBefore, $beforeColumnIndex, $pNumCols, $beforeRow, $pNumRows); - - // Update worksheet: hyperlinks - $this->adjustHyperlinks($pSheet, $pBefore, $beforeColumnIndex, $pNumCols, $beforeRow, $pNumRows); - - // Update worksheet: data validations - $this->adjustDataValidations($pSheet, $pBefore, $beforeColumnIndex, $pNumCols, $beforeRow, $pNumRows); - - // Update worksheet: merge cells - $this->adjustMergeCells($pSheet, $pBefore, $beforeColumnIndex, $pNumCols, $beforeRow, $pNumRows); - - // Update worksheet: protected cells - $this->adjustProtectedCells($pSheet, $pBefore, $beforeColumnIndex, $pNumCols, $beforeRow, $pNumRows); - - // Update worksheet: autofilter - $autoFilter = $pSheet->getAutoFilter(); - $autoFilterRange = $autoFilter->getRange(); - if (!empty($autoFilterRange)) { - if ($pNumCols != 0) { - $autoFilterColumns = array_keys($autoFilter->getColumns()); - if (count($autoFilterColumns) > 0) { - sscanf($pBefore, '%[A-Z]%d', $column, $row); - $columnIndex = PHPExcel_Cell::columnIndexFromString($column); - list($rangeStart, $rangeEnd) = PHPExcel_Cell::rangeBoundaries($autoFilterRange); - if ($columnIndex <= $rangeEnd[0]) { - if ($pNumCols < 0) { - // If we're actually deleting any columns that fall within the autofilter range, - // then we delete any rules for those columns - $deleteColumn = $columnIndex + $pNumCols - 1; - $deleteCount = abs($pNumCols); - for ($i = 1; $i <= $deleteCount; ++$i) { - if (in_array(PHPExcel_Cell::stringFromColumnIndex($deleteColumn), $autoFilterColumns)) { - $autoFilter->clearColumn(PHPExcel_Cell::stringFromColumnIndex($deleteColumn)); - } - ++$deleteColumn; - } - } - $startCol = ($columnIndex > $rangeStart[0]) ? $columnIndex : $rangeStart[0]; - - // Shuffle columns in autofilter range - if ($pNumCols > 0) { - // For insert, we shuffle from end to beginning to avoid overwriting - $startColID = PHPExcel_Cell::stringFromColumnIndex($startCol-1); - $toColID = PHPExcel_Cell::stringFromColumnIndex($startCol+$pNumCols-1); - $endColID = PHPExcel_Cell::stringFromColumnIndex($rangeEnd[0]); - - $startColRef = $startCol; - $endColRef = $rangeEnd[0]; - $toColRef = $rangeEnd[0]+$pNumCols; - - do { - $autoFilter->shiftColumn(PHPExcel_Cell::stringFromColumnIndex($endColRef-1), PHPExcel_Cell::stringFromColumnIndex($toColRef-1)); - --$endColRef; - --$toColRef; - } while ($startColRef <= $endColRef); - } else { - // For delete, we shuffle from beginning to end to avoid overwriting - $startColID = PHPExcel_Cell::stringFromColumnIndex($startCol-1); - $toColID = PHPExcel_Cell::stringFromColumnIndex($startCol+$pNumCols-1); - $endColID = PHPExcel_Cell::stringFromColumnIndex($rangeEnd[0]); - do { - $autoFilter->shiftColumn($startColID, $toColID); - ++$startColID; - ++$toColID; - } while ($startColID != $endColID); - } - } - } - } - $pSheet->setAutoFilter($this->updateCellReference($autoFilterRange, $pBefore, $pNumCols, $pNumRows)); - } - - // Update worksheet: freeze pane - if ($pSheet->getFreezePane() != '') { - $pSheet->freezePane($this->updateCellReference($pSheet->getFreezePane(), $pBefore, $pNumCols, $pNumRows)); - } - - // Page setup - if ($pSheet->getPageSetup()->isPrintAreaSet()) { - $pSheet->getPageSetup()->setPrintArea($this->updateCellReference($pSheet->getPageSetup()->getPrintArea(), $pBefore, $pNumCols, $pNumRows)); - } - - // Update worksheet: drawings - $aDrawings = $pSheet->getDrawingCollection(); - foreach ($aDrawings as $objDrawing) { - $newReference = $this->updateCellReference($objDrawing->getCoordinates(), $pBefore, $pNumCols, $pNumRows); - if ($objDrawing->getCoordinates() != $newReference) { - $objDrawing->setCoordinates($newReference); - } - } - - // Update workbook: named ranges - if (count($pSheet->getParent()->getNamedRanges()) > 0) { - foreach ($pSheet->getParent()->getNamedRanges() as $namedRange) { - if ($namedRange->getWorksheet()->getHashCode() == $pSheet->getHashCode()) { - $namedRange->setRange($this->updateCellReference($namedRange->getRange(), $pBefore, $pNumCols, $pNumRows)); - } - } - } - - // Garbage collect - $pSheet->garbageCollect(); - } - - /** - * Update references within formulas - * - * @param string $pFormula Formula to update - * @param int $pBefore Insert before this one - * @param int $pNumCols Number of columns to insert - * @param int $pNumRows Number of rows to insert - * @param string $sheetName Worksheet name/title - * @return string Updated formula - * @throws PHPExcel_Exception - */ - public function updateFormulaReferences($pFormula = '', $pBefore = 'A1', $pNumCols = 0, $pNumRows = 0, $sheetName = '') - { - // Update cell references in the formula - $formulaBlocks = explode('"', $pFormula); - $i = false; - foreach ($formulaBlocks as &$formulaBlock) { - // Ignore blocks that were enclosed in quotes (alternating entries in the $formulaBlocks array after the explode) - if ($i = !$i) { - $adjustCount = 0; - $newCellTokens = $cellTokens = array(); - // Search for row ranges (e.g. 'Sheet1'!3:5 or 3:5) with or without $ absolutes (e.g. $3:5) - $matchCount = preg_match_all('/'.self::REFHELPER_REGEXP_ROWRANGE.'/i', ' '.$formulaBlock.' ', $matches, PREG_SET_ORDER); - if ($matchCount > 0) { - foreach ($matches as $match) { - $fromString = ($match[2] > '') ? $match[2].'!' : ''; - $fromString .= $match[3].':'.$match[4]; - $modified3 = substr($this->updateCellReference('$A'.$match[3], $pBefore, $pNumCols, $pNumRows), 2); - $modified4 = substr($this->updateCellReference('$A'.$match[4], $pBefore, $pNumCols, $pNumRows), 2); - - if ($match[3].':'.$match[4] !== $modified3.':'.$modified4) { - if (($match[2] == '') || (trim($match[2], "'") == $sheetName)) { - $toString = ($match[2] > '') ? $match[2].'!' : ''; - $toString .= $modified3.':'.$modified4; - // Max worksheet size is 1,048,576 rows by 16,384 columns in Excel 2007, so our adjustments need to be at least one digit more - $column = 100000; - $row = 10000000 + trim($match[3], '$'); - $cellIndex = $column.$row; - - $newCellTokens[$cellIndex] = preg_quote($toString); - $cellTokens[$cellIndex] = '/(?<!\d\$\!)'.preg_quote($fromString).'(?!\d)/i'; - ++$adjustCount; - } - } - } - } - // Search for column ranges (e.g. 'Sheet1'!C:E or C:E) with or without $ absolutes (e.g. $C:E) - $matchCount = preg_match_all('/'.self::REFHELPER_REGEXP_COLRANGE.'/i', ' '.$formulaBlock.' ', $matches, PREG_SET_ORDER); - if ($matchCount > 0) { - foreach ($matches as $match) { - $fromString = ($match[2] > '') ? $match[2].'!' : ''; - $fromString .= $match[3].':'.$match[4]; - $modified3 = substr($this->updateCellReference($match[3].'$1', $pBefore, $pNumCols, $pNumRows), 0, -2); - $modified4 = substr($this->updateCellReference($match[4].'$1', $pBefore, $pNumCols, $pNumRows), 0, -2); - - if ($match[3].':'.$match[4] !== $modified3.':'.$modified4) { - if (($match[2] == '') || (trim($match[2], "'") == $sheetName)) { - $toString = ($match[2] > '') ? $match[2].'!' : ''; - $toString .= $modified3.':'.$modified4; - // Max worksheet size is 1,048,576 rows by 16,384 columns in Excel 2007, so our adjustments need to be at least one digit more - $column = PHPExcel_Cell::columnIndexFromString(trim($match[3], '$')) + 100000; - $row = 10000000; - $cellIndex = $column.$row; - - $newCellTokens[$cellIndex] = preg_quote($toString); - $cellTokens[$cellIndex] = '/(?<![A-Z\$\!])'.preg_quote($fromString).'(?![A-Z])/i'; - ++$adjustCount; - } - } - } - } - // Search for cell ranges (e.g. 'Sheet1'!A3:C5 or A3:C5) with or without $ absolutes (e.g. $A1:C$5) - $matchCount = preg_match_all('/'.self::REFHELPER_REGEXP_CELLRANGE.'/i', ' '.$formulaBlock.' ', $matches, PREG_SET_ORDER); - if ($matchCount > 0) { - foreach ($matches as $match) { - $fromString = ($match[2] > '') ? $match[2].'!' : ''; - $fromString .= $match[3].':'.$match[4]; - $modified3 = $this->updateCellReference($match[3], $pBefore, $pNumCols, $pNumRows); - $modified4 = $this->updateCellReference($match[4], $pBefore, $pNumCols, $pNumRows); - - if ($match[3].$match[4] !== $modified3.$modified4) { - if (($match[2] == '') || (trim($match[2], "'") == $sheetName)) { - $toString = ($match[2] > '') ? $match[2].'!' : ''; - $toString .= $modified3.':'.$modified4; - list($column, $row) = PHPExcel_Cell::coordinateFromString($match[3]); - // Max worksheet size is 1,048,576 rows by 16,384 columns in Excel 2007, so our adjustments need to be at least one digit more - $column = PHPExcel_Cell::columnIndexFromString(trim($column, '$')) + 100000; - $row = trim($row, '$') + 10000000; - $cellIndex = $column.$row; - - $newCellTokens[$cellIndex] = preg_quote($toString); - $cellTokens[$cellIndex] = '/(?<![A-Z]\$\!)'.preg_quote($fromString).'(?!\d)/i'; - ++$adjustCount; - } - } - } - } - // Search for cell references (e.g. 'Sheet1'!A3 or C5) with or without $ absolutes (e.g. $A1 or C$5) - $matchCount = preg_match_all('/'.self::REFHELPER_REGEXP_CELLREF.'/i', ' '.$formulaBlock.' ', $matches, PREG_SET_ORDER); - - if ($matchCount > 0) { - foreach ($matches as $match) { - $fromString = ($match[2] > '') ? $match[2].'!' : ''; - $fromString .= $match[3]; - - $modified3 = $this->updateCellReference($match[3], $pBefore, $pNumCols, $pNumRows); - if ($match[3] !== $modified3) { - if (($match[2] == '') || (trim($match[2], "'") == $sheetName)) { - $toString = ($match[2] > '') ? $match[2].'!' : ''; - $toString .= $modified3; - list($column, $row) = PHPExcel_Cell::coordinateFromString($match[3]); - // Max worksheet size is 1,048,576 rows by 16,384 columns in Excel 2007, so our adjustments need to be at least one digit more - $column = PHPExcel_Cell::columnIndexFromString(trim($column, '$')) + 100000; - $row = trim($row, '$') + 10000000; - $cellIndex = $row . $column; - - $newCellTokens[$cellIndex] = preg_quote($toString); - $cellTokens[$cellIndex] = '/(?<![A-Z\$\!])'.preg_quote($fromString).'(?!\d)/i'; - ++$adjustCount; - } - } - } - } - if ($adjustCount > 0) { - if ($pNumCols > 0 || $pNumRows > 0) { - krsort($cellTokens); - krsort($newCellTokens); - } else { - ksort($cellTokens); - ksort($newCellTokens); - } // Update cell references in the formula - $formulaBlock = str_replace('\\', '', preg_replace($cellTokens, $newCellTokens, $formulaBlock)); - } - } - } - unset($formulaBlock); - - // Then rebuild the formula string - return implode('"', $formulaBlocks); - } - - /** - * Update cell reference - * - * @param string $pCellRange Cell range - * @param int $pBefore Insert before this one - * @param int $pNumCols Number of columns to increment - * @param int $pNumRows Number of rows to increment - * @return string Updated cell range - * @throws PHPExcel_Exception - */ - public function updateCellReference($pCellRange = 'A1', $pBefore = 'A1', $pNumCols = 0, $pNumRows = 0) - { - // Is it in another worksheet? Will not have to update anything. - if (strpos($pCellRange, "!") !== false) { - return $pCellRange; - // Is it a range or a single cell? - } elseif (strpos($pCellRange, ':') === false && strpos($pCellRange, ',') === false) { - // Single cell - return $this->updateSingleCellReference($pCellRange, $pBefore, $pNumCols, $pNumRows); - } elseif (strpos($pCellRange, ':') !== false || strpos($pCellRange, ',') !== false) { - // Range - return $this->updateCellRange($pCellRange, $pBefore, $pNumCols, $pNumRows); - } else { - // Return original - return $pCellRange; - } - } - - /** - * Update named formulas (i.e. containing worksheet references / named ranges) - * - * @param PHPExcel $pPhpExcel Object to update - * @param string $oldName Old name (name to replace) - * @param string $newName New name - */ - public function updateNamedFormulas(PHPExcel $pPhpExcel, $oldName = '', $newName = '') - { - if ($oldName == '') { - return; - } - - foreach ($pPhpExcel->getWorksheetIterator() as $sheet) { - foreach ($sheet->getCellCollection(false) as $cellID) { - $cell = $sheet->getCell($cellID); - if (($cell !== null) && ($cell->getDataType() == PHPExcel_Cell_DataType::TYPE_FORMULA)) { - $formula = $cell->getValue(); - if (strpos($formula, $oldName) !== false) { - $formula = str_replace("'" . $oldName . "'!", "'" . $newName . "'!", $formula); - $formula = str_replace($oldName . "!", $newName . "!", $formula); - $cell->setValueExplicit($formula, PHPExcel_Cell_DataType::TYPE_FORMULA); - } - } - } - } - } - - /** - * Update cell range - * - * @param string $pCellRange Cell range (e.g. 'B2:D4', 'B:C' or '2:3') - * @param int $pBefore Insert before this one - * @param int $pNumCols Number of columns to increment - * @param int $pNumRows Number of rows to increment - * @return string Updated cell range - * @throws PHPExcel_Exception - */ - private function updateCellRange($pCellRange = 'A1:A1', $pBefore = 'A1', $pNumCols = 0, $pNumRows = 0) - { - if (strpos($pCellRange, ':') !== false || strpos($pCellRange, ',') !== false) { - // Update range - $range = PHPExcel_Cell::splitRange($pCellRange); - $ic = count($range); - for ($i = 0; $i < $ic; ++$i) { - $jc = count($range[$i]); - for ($j = 0; $j < $jc; ++$j) { - if (ctype_alpha($range[$i][$j])) { - $r = PHPExcel_Cell::coordinateFromString($this->updateSingleCellReference($range[$i][$j].'1', $pBefore, $pNumCols, $pNumRows)); - $range[$i][$j] = $r[0]; - } elseif (ctype_digit($range[$i][$j])) { - $r = PHPExcel_Cell::coordinateFromString($this->updateSingleCellReference('A'.$range[$i][$j], $pBefore, $pNumCols, $pNumRows)); - $range[$i][$j] = $r[1]; - } else { - $range[$i][$j] = $this->updateSingleCellReference($range[$i][$j], $pBefore, $pNumCols, $pNumRows); - } - } - } - - // Recreate range string - return PHPExcel_Cell::buildRange($range); - } else { - throw new PHPExcel_Exception("Only cell ranges may be passed to this method."); - } - } - - /** - * Update single cell reference - * - * @param string $pCellReference Single cell reference - * @param int $pBefore Insert before this one - * @param int $pNumCols Number of columns to increment - * @param int $pNumRows Number of rows to increment - * @return string Updated cell reference - * @throws PHPExcel_Exception - */ - private function updateSingleCellReference($pCellReference = 'A1', $pBefore = 'A1', $pNumCols = 0, $pNumRows = 0) - { - if (strpos($pCellReference, ':') === false && strpos($pCellReference, ',') === false) { - // Get coordinates of $pBefore - list($beforeColumn, $beforeRow) = PHPExcel_Cell::coordinateFromString($pBefore); - - // Get coordinates of $pCellReference - list($newColumn, $newRow) = PHPExcel_Cell::coordinateFromString($pCellReference); - - // Verify which parts should be updated - $updateColumn = (($newColumn{0} != '$') && ($beforeColumn{0} != '$') && (PHPExcel_Cell::columnIndexFromString($newColumn) >= PHPExcel_Cell::columnIndexFromString($beforeColumn))); - $updateRow = (($newRow{0} != '$') && ($beforeRow{0} != '$') && $newRow >= $beforeRow); - - // Create new column reference - if ($updateColumn) { - $newColumn = PHPExcel_Cell::stringFromColumnIndex(PHPExcel_Cell::columnIndexFromString($newColumn) - 1 + $pNumCols); - } - - // Create new row reference - if ($updateRow) { - $newRow = $newRow + $pNumRows; - } - - // Return new reference - return $newColumn . $newRow; - } else { - throw new PHPExcel_Exception("Only single cell references may be passed to this method."); - } - } - - /** - * __clone implementation. Cloning should not be allowed in a Singleton! - * - * @throws PHPExcel_Exception - */ - final public function __clone() - { - throw new PHPExcel_Exception("Cloning a Singleton is not allowed!"); - } -} diff --git a/application/third_party/PHPExcel/RichText.php b/application/third_party/PHPExcel/RichText.php deleted file mode 100644 index 74a3534a..00000000 --- a/application/third_party/PHPExcel/RichText.php +++ /dev/null @@ -1,191 +0,0 @@ -<?php - -/** - * PHPExcel_RichText - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_RichText - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_RichText implements PHPExcel_IComparable -{ - /** - * Rich text elements - * - * @var PHPExcel_RichText_ITextElement[] - */ - private $richTextElements; - - /** - * Create a new PHPExcel_RichText instance - * - * @param PHPExcel_Cell $pCell - * @throws PHPExcel_Exception - */ - public function __construct(PHPExcel_Cell $pCell = null) - { - // Initialise variables - $this->richTextElements = array(); - - // Rich-Text string attached to cell? - if ($pCell !== null) { - // Add cell text and style - if ($pCell->getValue() != "") { - $objRun = new PHPExcel_RichText_Run($pCell->getValue()); - $objRun->setFont(clone $pCell->getParent()->getStyle($pCell->getCoordinate())->getFont()); - $this->addText($objRun); - } - - // Set parent value - $pCell->setValueExplicit($this, PHPExcel_Cell_DataType::TYPE_STRING); - } - } - - /** - * Add text - * - * @param PHPExcel_RichText_ITextElement $pText Rich text element - * @throws PHPExcel_Exception - * @return PHPExcel_RichText - */ - public function addText(PHPExcel_RichText_ITextElement $pText = null) - { - $this->richTextElements[] = $pText; - return $this; - } - - /** - * Create text - * - * @param string $pText Text - * @return PHPExcel_RichText_TextElement - * @throws PHPExcel_Exception - */ - public function createText($pText = '') - { - $objText = new PHPExcel_RichText_TextElement($pText); - $this->addText($objText); - return $objText; - } - - /** - * Create text run - * - * @param string $pText Text - * @return PHPExcel_RichText_Run - * @throws PHPExcel_Exception - */ - public function createTextRun($pText = '') - { - $objText = new PHPExcel_RichText_Run($pText); - $this->addText($objText); - return $objText; - } - - /** - * Get plain text - * - * @return string - */ - public function getPlainText() - { - // Return value - $returnValue = ''; - - // Loop through all PHPExcel_RichText_ITextElement - foreach ($this->richTextElements as $text) { - $returnValue .= $text->getText(); - } - - // Return - return $returnValue; - } - - /** - * Convert to string - * - * @return string - */ - public function __toString() - { - return $this->getPlainText(); - } - - /** - * Get Rich Text elements - * - * @return PHPExcel_RichText_ITextElement[] - */ - public function getRichTextElements() - { - return $this->richTextElements; - } - - /** - * Set Rich Text elements - * - * @param PHPExcel_RichText_ITextElement[] $pElements Array of elements - * @throws PHPExcel_Exception - * @return PHPExcel_RichText - */ - public function setRichTextElements($pElements = null) - { - if (is_array($pElements)) { - $this->richTextElements = $pElements; - } else { - throw new PHPExcel_Exception("Invalid PHPExcel_RichText_ITextElement[] array passed."); - } - return $this; - } - - /** - * Get hash code - * - * @return string Hash code - */ - public function getHashCode() - { - $hashElements = ''; - foreach ($this->richTextElements as $element) { - $hashElements .= $element->getHashCode(); - } - - return md5( - $hashElements . - __CLASS__ - ); - } - - /** - * Implement PHP __clone to create a deep clone, not just a shallow copy. - */ - public function __clone() - { - $vars = get_object_vars($this); - foreach ($vars as $key => $value) { - if (is_object($value)) { - $this->$key = clone $value; - } else { - $this->$key = $value; - } - } - } -} diff --git a/application/third_party/PHPExcel/RichText/ITextElement.php b/application/third_party/PHPExcel/RichText/ITextElement.php deleted file mode 100644 index 5db34320..00000000 --- a/application/third_party/PHPExcel/RichText/ITextElement.php +++ /dev/null @@ -1,56 +0,0 @@ -<?php - -/** - * PHPExcel_RichText_ITextElement - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_RichText - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -interface PHPExcel_RichText_ITextElement -{ - /** - * Get text - * - * @return string Text - */ - public function getText(); - - /** - * Set text - * - * @param $pText string Text - * @return PHPExcel_RichText_ITextElement - */ - public function setText($pText = ''); - - /** - * Get font - * - * @return PHPExcel_Style_Font - */ - public function getFont(); - - /** - * Get hash code - * - * @return string Hash code - */ - public function getHashCode(); -} diff --git a/application/third_party/PHPExcel/RichText/Run.php b/application/third_party/PHPExcel/RichText/Run.php deleted file mode 100644 index 5737bb0d..00000000 --- a/application/third_party/PHPExcel/RichText/Run.php +++ /dev/null @@ -1,98 +0,0 @@ -<?php - -/** - * PHPExcel_RichText_Run - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_RichText - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_RichText_Run extends PHPExcel_RichText_TextElement implements PHPExcel_RichText_ITextElement -{ - /** - * Font - * - * @var PHPExcel_Style_Font - */ - private $font; - - /** - * Create a new PHPExcel_RichText_Run instance - * - * @param string $pText Text - */ - public function __construct($pText = '') - { - // Initialise variables - $this->setText($pText); - $this->font = new PHPExcel_Style_Font(); - } - - /** - * Get font - * - * @return PHPExcel_Style_Font - */ - public function getFont() - { - return $this->font; - } - - /** - * Set font - * - * @param PHPExcel_Style_Font $pFont Font - * @throws PHPExcel_Exception - * @return PHPExcel_RichText_ITextElement - */ - public function setFont(PHPExcel_Style_Font $pFont = null) - { - $this->font = $pFont; - return $this; - } - - /** - * Get hash code - * - * @return string Hash code - */ - public function getHashCode() - { - return md5( - $this->getText() . - $this->font->getHashCode() . - __CLASS__ - ); - } - - /** - * Implement PHP __clone to create a deep clone, not just a shallow copy. - */ - public function __clone() - { - $vars = get_object_vars($this); - foreach ($vars as $key => $value) { - if (is_object($value)) { - $this->$key = clone $value; - } else { - $this->$key = $value; - } - } - } -} diff --git a/application/third_party/PHPExcel/RichText/TextElement.php b/application/third_party/PHPExcel/RichText/TextElement.php deleted file mode 100644 index f86e7031..00000000 --- a/application/third_party/PHPExcel/RichText/TextElement.php +++ /dev/null @@ -1,105 +0,0 @@ -<?php - -/** - * PHPExcel_RichText_TextElement - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_RichText - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_RichText_TextElement implements PHPExcel_RichText_ITextElement -{ - /** - * Text - * - * @var string - */ - private $text; - - /** - * Create a new PHPExcel_RichText_TextElement instance - * - * @param string $pText Text - */ - public function __construct($pText = '') - { - // Initialise variables - $this->text = $pText; - } - - /** - * Get text - * - * @return string Text - */ - public function getText() - { - return $this->text; - } - - /** - * Set text - * - * @param $pText string Text - * @return PHPExcel_RichText_ITextElement - */ - public function setText($pText = '') - { - $this->text = $pText; - return $this; - } - - /** - * Get font - * - * @return PHPExcel_Style_Font - */ - public function getFont() - { - return null; - } - - /** - * Get hash code - * - * @return string Hash code - */ - public function getHashCode() - { - return md5( - $this->text . - __CLASS__ - ); - } - - /** - * Implement PHP __clone to create a deep clone, not just a shallow copy. - */ - public function __clone() - { - $vars = get_object_vars($this); - foreach ($vars as $key => $value) { - if (is_object($value)) { - $this->$key = clone $value; - } else { - $this->$key = $value; - } - } - } -} diff --git a/application/third_party/PHPExcel/Settings.php b/application/third_party/PHPExcel/Settings.php deleted file mode 100644 index dcbc89fc..00000000 --- a/application/third_party/PHPExcel/Settings.php +++ /dev/null @@ -1,389 +0,0 @@ -<?php - -/** PHPExcel root directory */ -if (!defined('PHPEXCEL_ROOT')) { - /** - * @ignore - */ - define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../'); - require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); -} - -/** - * PHPExcel_Settings - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Settings - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Settings -{ - /** constants */ - /** Available Zip library classes */ - const PCLZIP = 'PHPExcel_Shared_ZipArchive'; - const ZIPARCHIVE = 'ZipArchive'; - - /** Optional Chart Rendering libraries */ - const CHART_RENDERER_JPGRAPH = 'jpgraph'; - - /** Optional PDF Rendering libraries */ - const PDF_RENDERER_TCPDF = 'tcPDF'; - const PDF_RENDERER_DOMPDF = 'DomPDF'; - const PDF_RENDERER_MPDF = 'mPDF'; - - - private static $chartRenderers = array( - self::CHART_RENDERER_JPGRAPH, - ); - - private static $pdfRenderers = array( - self::PDF_RENDERER_TCPDF, - self::PDF_RENDERER_DOMPDF, - self::PDF_RENDERER_MPDF, - ); - - - /** - * Name of the class used for Zip file management - * e.g. - * ZipArchive - * - * @var string - */ - private static $zipClass = self::ZIPARCHIVE; - - - /** - * Name of the external Library used for rendering charts - * e.g. - * jpgraph - * - * @var string - */ - private static $chartRendererName; - - /** - * Directory Path to the external Library used for rendering charts - * - * @var string - */ - private static $chartRendererPath; - - - /** - * Name of the external Library used for rendering PDF files - * e.g. - * mPDF - * - * @var string - */ - private static $pdfRendererName; - - /** - * Directory Path to the external Library used for rendering PDF files - * - * @var string - */ - private static $pdfRendererPath; - - /** - * Default options for libxml loader - * - * @var int - */ - private static $libXmlLoaderOptions = null; - - /** - * Set the Zip handler Class that PHPExcel should use for Zip file management (PCLZip or ZipArchive) - * - * @param string $zipClass The Zip handler class that PHPExcel should use for Zip file management - * e.g. PHPExcel_Settings::PCLZip or PHPExcel_Settings::ZipArchive - * @return boolean Success or failure - */ - public static function setZipClass($zipClass) - { - if (($zipClass === self::PCLZIP) || - ($zipClass === self::ZIPARCHIVE)) { - self::$zipClass = $zipClass; - return true; - } - return false; - } - - - /** - * Return the name of the Zip handler Class that PHPExcel is configured to use (PCLZip or ZipArchive) - * or Zip file management - * - * @return string Name of the Zip handler Class that PHPExcel is configured to use - * for Zip file management - * e.g. PHPExcel_Settings::PCLZip or PHPExcel_Settings::ZipArchive - */ - public static function getZipClass() - { - return self::$zipClass; - } - - - /** - * Return the name of the method that is currently configured for cell cacheing - * - * @return string Name of the cacheing method - */ - public static function getCacheStorageMethod() - { - return PHPExcel_CachedObjectStorageFactory::getCacheStorageMethod(); - } - - - /** - * Return the name of the class that is currently being used for cell cacheing - * - * @return string Name of the class currently being used for cacheing - */ - public static function getCacheStorageClass() - { - return PHPExcel_CachedObjectStorageFactory::getCacheStorageClass(); - } - - - /** - * Set the method that should be used for cell cacheing - * - * @param string $method Name of the cacheing method - * @param array $arguments Optional configuration arguments for the cacheing method - * @return boolean Success or failure - */ - public static function setCacheStorageMethod($method = PHPExcel_CachedObjectStorageFactory::cache_in_memory, $arguments = array()) - { - return PHPExcel_CachedObjectStorageFactory::initialize($method, $arguments); - } - - - /** - * Set the locale code to use for formula translations and any special formatting - * - * @param string $locale The locale code to use (e.g. "fr" or "pt_br" or "en_uk") - * @return boolean Success or failure - */ - public static function setLocale($locale = 'en_us') - { - return PHPExcel_Calculation::getInstance()->setLocale($locale); - } - - - /** - * Set details of the external library that PHPExcel should use for rendering charts - * - * @param string $libraryName Internal reference name of the library - * e.g. PHPExcel_Settings::CHART_RENDERER_JPGRAPH - * @param string $libraryBaseDir Directory path to the library's base folder - * - * @return boolean Success or failure - */ - public static function setChartRenderer($libraryName, $libraryBaseDir) - { - if (!self::setChartRendererName($libraryName)) { - return false; - } - return self::setChartRendererPath($libraryBaseDir); - } - - - /** - * Identify to PHPExcel the external library to use for rendering charts - * - * @param string $libraryName Internal reference name of the library - * e.g. PHPExcel_Settings::CHART_RENDERER_JPGRAPH - * - * @return boolean Success or failure - */ - public static function setChartRendererName($libraryName) - { - if (!in_array($libraryName, self::$chartRenderers)) { - return false; - } - self::$chartRendererName = $libraryName; - - return true; - } - - - /** - * Tell PHPExcel where to find the external library to use for rendering charts - * - * @param string $libraryBaseDir Directory path to the library's base folder - * @return boolean Success or failure - */ - public static function setChartRendererPath($libraryBaseDir) - { - if ((file_exists($libraryBaseDir) === false) || (is_readable($libraryBaseDir) === false)) { - return false; - } - self::$chartRendererPath = $libraryBaseDir; - - return true; - } - - - /** - * Return the Chart Rendering Library that PHPExcel is currently configured to use (e.g. jpgraph) - * - * @return string|NULL Internal reference name of the Chart Rendering Library that PHPExcel is - * currently configured to use - * e.g. PHPExcel_Settings::CHART_RENDERER_JPGRAPH - */ - public static function getChartRendererName() - { - return self::$chartRendererName; - } - - - /** - * Return the directory path to the Chart Rendering Library that PHPExcel is currently configured to use - * - * @return string|NULL Directory Path to the Chart Rendering Library that PHPExcel is - * currently configured to use - */ - public static function getChartRendererPath() - { - return self::$chartRendererPath; - } - - - /** - * Set details of the external library that PHPExcel should use for rendering PDF files - * - * @param string $libraryName Internal reference name of the library - * e.g. PHPExcel_Settings::PDF_RENDERER_TCPDF, - * PHPExcel_Settings::PDF_RENDERER_DOMPDF - * or PHPExcel_Settings::PDF_RENDERER_MPDF - * @param string $libraryBaseDir Directory path to the library's base folder - * - * @return boolean Success or failure - */ - public static function setPdfRenderer($libraryName, $libraryBaseDir) - { - if (!self::setPdfRendererName($libraryName)) { - return false; - } - return self::setPdfRendererPath($libraryBaseDir); - } - - - /** - * Identify to PHPExcel the external library to use for rendering PDF files - * - * @param string $libraryName Internal reference name of the library - * e.g. PHPExcel_Settings::PDF_RENDERER_TCPDF, - * PHPExcel_Settings::PDF_RENDERER_DOMPDF - * or PHPExcel_Settings::PDF_RENDERER_MPDF - * - * @return boolean Success or failure - */ - public static function setPdfRendererName($libraryName) - { - if (!in_array($libraryName, self::$pdfRenderers)) { - return false; - } - self::$pdfRendererName = $libraryName; - - return true; - } - - - /** - * Tell PHPExcel where to find the external library to use for rendering PDF files - * - * @param string $libraryBaseDir Directory path to the library's base folder - * @return boolean Success or failure - */ - public static function setPdfRendererPath($libraryBaseDir) - { - if ((file_exists($libraryBaseDir) === false) || (is_readable($libraryBaseDir) === false)) { - return false; - } - self::$pdfRendererPath = $libraryBaseDir; - - return true; - } - - - /** - * Return the PDF Rendering Library that PHPExcel is currently configured to use (e.g. dompdf) - * - * @return string|NULL Internal reference name of the PDF Rendering Library that PHPExcel is - * currently configured to use - * e.g. PHPExcel_Settings::PDF_RENDERER_TCPDF, - * PHPExcel_Settings::PDF_RENDERER_DOMPDF - * or PHPExcel_Settings::PDF_RENDERER_MPDF - */ - public static function getPdfRendererName() - { - return self::$pdfRendererName; - } - - /** - * Return the directory path to the PDF Rendering Library that PHPExcel is currently configured to use - * - * @return string|NULL Directory Path to the PDF Rendering Library that PHPExcel is - * currently configured to use - */ - public static function getPdfRendererPath() - { - return self::$pdfRendererPath; - } - - /** - * Set options for libxml loader - * - * @param int $options Options for libxml loader - */ - public static function setLibXmlLoaderOptions($options = null) - { - if (is_null($options) && defined('LIBXML_DTDLOAD')) { - $options = LIBXML_DTDLOAD | LIBXML_DTDATTR; - } - if (version_compare(PHP_VERSION, '5.2.11') >= 0) { - @libxml_disable_entity_loader((bool) $options); - } - self::$libXmlLoaderOptions = $options; - } - - /** - * Get defined options for libxml loader. - * Defaults to LIBXML_DTDLOAD | LIBXML_DTDATTR when not set explicitly. - * - * @return int Default options for libxml loader - */ - public static function getLibXmlLoaderOptions() - { - if (is_null(self::$libXmlLoaderOptions) && defined('LIBXML_DTDLOAD')) { - self::setLibXmlLoaderOptions(LIBXML_DTDLOAD | LIBXML_DTDATTR); - } elseif (is_null(self::$libXmlLoaderOptions)) { - self::$libXmlLoaderOptions = true; - } - if (version_compare(PHP_VERSION, '5.2.11') >= 0) { - @libxml_disable_entity_loader((bool) self::$libXmlLoaderOptions); - } - return self::$libXmlLoaderOptions; - } -} diff --git a/application/third_party/PHPExcel/Shared/CodePage.php b/application/third_party/PHPExcel/Shared/CodePage.php deleted file mode 100644 index b3e440e2..00000000 --- a/application/third_party/PHPExcel/Shared/CodePage.php +++ /dev/null @@ -1,156 +0,0 @@ -<?php - -/** - * PHPExcel_Shared_CodePage - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Shared - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Shared_CodePage -{ - /** - * Convert Microsoft Code Page Identifier to Code Page Name which iconv - * and mbstring understands - * - * @param integer $codePage Microsoft Code Page Indentifier - * @return string Code Page Name - * @throws PHPExcel_Exception - */ - public static function NumberToName($codePage = 1252) - { - switch ($codePage) { - case 367: - return 'ASCII'; // ASCII - case 437: - return 'CP437'; // OEM US - case 720: - throw new PHPExcel_Exception('Code page 720 not supported.'); // OEM Arabic - case 737: - return 'CP737'; // OEM Greek - case 775: - return 'CP775'; // OEM Baltic - case 850: - return 'CP850'; // OEM Latin I - case 852: - return 'CP852'; // OEM Latin II (Central European) - case 855: - return 'CP855'; // OEM Cyrillic - case 857: - return 'CP857'; // OEM Turkish - case 858: - return 'CP858'; // OEM Multilingual Latin I with Euro - case 860: - return 'CP860'; // OEM Portugese - case 861: - return 'CP861'; // OEM Icelandic - case 862: - return 'CP862'; // OEM Hebrew - case 863: - return 'CP863'; // OEM Canadian (French) - case 864: - return 'CP864'; // OEM Arabic - case 865: - return 'CP865'; // OEM Nordic - case 866: - return 'CP866'; // OEM Cyrillic (Russian) - case 869: - return 'CP869'; // OEM Greek (Modern) - case 874: - return 'CP874'; // ANSI Thai - case 932: - return 'CP932'; // ANSI Japanese Shift-JIS - case 936: - return 'CP936'; // ANSI Chinese Simplified GBK - case 949: - return 'CP949'; // ANSI Korean (Wansung) - case 950: - return 'CP950'; // ANSI Chinese Traditional BIG5 - case 1200: - return 'UTF-16LE'; // UTF-16 (BIFF8) - case 1250: - return 'CP1250'; // ANSI Latin II (Central European) - case 1251: - return 'CP1251'; // ANSI Cyrillic - case 0: - // CodePage is not always correctly set when the xls file was saved by Apple's Numbers program - case 1252: - return 'CP1252'; // ANSI Latin I (BIFF4-BIFF7) - case 1253: - return 'CP1253'; // ANSI Greek - case 1254: - return 'CP1254'; // ANSI Turkish - case 1255: - return 'CP1255'; // ANSI Hebrew - case 1256: - return 'CP1256'; // ANSI Arabic - case 1257: - return 'CP1257'; // ANSI Baltic - case 1258: - return 'CP1258'; // ANSI Vietnamese - case 1361: - return 'CP1361'; // ANSI Korean (Johab) - case 10000: - return 'MAC'; // Apple Roman - case 10001: - return 'CP932'; // Macintosh Japanese - case 10002: - return 'CP950'; // Macintosh Chinese Traditional - case 10003: - return 'CP1361'; // Macintosh Korean - case 10004: - return 'MACARABIC'; // Apple Arabic - case 10005: - return 'MACHEBREW'; // Apple Hebrew - case 10006: - return 'MACGREEK'; // Macintosh Greek - case 10007: - return 'MACCYRILLIC'; // Macintosh Cyrillic - case 10008: - return 'CP936'; // Macintosh - Simplified Chinese (GB 2312) - case 10010: - return 'MACROMANIA'; // Macintosh Romania - case 10017: - return 'MACUKRAINE'; // Macintosh Ukraine - case 10021: - return 'MACTHAI'; // Macintosh Thai - case 10029: - return 'MACCENTRALEUROPE'; // Macintosh Central Europe - case 10079: - return 'MACICELAND'; // Macintosh Icelandic - case 10081: - return 'MACTURKISH'; // Macintosh Turkish - case 10082: - return 'MACCROATIAN'; // Macintosh Croatian - case 21010: - return 'UTF-16LE'; // UTF-16 (BIFF8) This isn't correct, but some Excel writer libraries erroneously use Codepage 21010 for UTF-16LE - case 32768: - return 'MAC'; // Apple Roman - case 32769: - throw new PHPExcel_Exception('Code page 32769 not supported.'); // ANSI Latin I (BIFF2-BIFF3) - case 65000: - return 'UTF-7'; // Unicode (UTF-7) - case 65001: - return 'UTF-8'; // Unicode (UTF-8) - } - throw new PHPExcel_Exception('Unknown codepage: ' . $codePage); - } -} diff --git a/application/third_party/PHPExcel/Shared/Date.php b/application/third_party/PHPExcel/Shared/Date.php deleted file mode 100644 index b00a39a3..00000000 --- a/application/third_party/PHPExcel/Shared/Date.php +++ /dev/null @@ -1,418 +0,0 @@ -<?php - -/** - * PHPExcel_Shared_Date - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Shared - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Shared_Date -{ - /** constants */ - const CALENDAR_WINDOWS_1900 = 1900; // Base date of 1st Jan 1900 = 1.0 - const CALENDAR_MAC_1904 = 1904; // Base date of 2nd Jan 1904 = 1.0 - - /* - * Names of the months of the year, indexed by shortname - * Planned usage for locale settings - * - * @public - * @var string[] - */ - public static $monthNames = array( - 'Jan' => 'January', - 'Feb' => 'February', - 'Mar' => 'March', - 'Apr' => 'April', - 'May' => 'May', - 'Jun' => 'June', - 'Jul' => 'July', - 'Aug' => 'August', - 'Sep' => 'September', - 'Oct' => 'October', - 'Nov' => 'November', - 'Dec' => 'December', - ); - - /* - * Names of the months of the year, indexed by shortname - * Planned usage for locale settings - * - * @public - * @var string[] - */ - public static $numberSuffixes = array( - 'st', - 'nd', - 'rd', - 'th', - ); - - /* - * Base calendar year to use for calculations - * - * @private - * @var int - */ - protected static $excelBaseDate = self::CALENDAR_WINDOWS_1900; - - /** - * Set the Excel calendar (Windows 1900 or Mac 1904) - * - * @param integer $baseDate Excel base date (1900 or 1904) - * @return boolean Success or failure - */ - public static function setExcelCalendar($baseDate) - { - if (($baseDate == self::CALENDAR_WINDOWS_1900) || - ($baseDate == self::CALENDAR_MAC_1904)) { - self::$excelBaseDate = $baseDate; - return true; - } - return false; - } - - - /** - * Return the Excel calendar (Windows 1900 or Mac 1904) - * - * @return integer Excel base date (1900 or 1904) - */ - public static function getExcelCalendar() - { - return self::$excelBaseDate; - } - - - /** - * Convert a date from Excel to PHP - * - * @param integer $dateValue Excel date/time value - * @param boolean $adjustToTimezone Flag indicating whether $dateValue should be treated as - * a UST timestamp, or adjusted to UST - * @param string $timezone The timezone for finding the adjustment from UST - * @return integer PHP serialized date/time - */ - public static function ExcelToPHP($dateValue = 0, $adjustToTimezone = false, $timezone = null) - { - if (self::$excelBaseDate == self::CALENDAR_WINDOWS_1900) { - $myexcelBaseDate = 25569; - // Adjust for the spurious 29-Feb-1900 (Day 60) - if ($dateValue < 60) { - --$myexcelBaseDate; - } - } else { - $myexcelBaseDate = 24107; - } - - // Perform conversion - if ($dateValue >= 1) { - $utcDays = $dateValue - $myexcelBaseDate; - $returnValue = round($utcDays * 86400); - if (($returnValue <= PHP_INT_MAX) && ($returnValue >= -PHP_INT_MAX)) { - $returnValue = (integer) $returnValue; - } - } else { - $hours = round($dateValue * 24); - $mins = round($dateValue * 1440) - round($hours * 60); - $secs = round($dateValue * 86400) - round($hours * 3600) - round($mins * 60); - $returnValue = (integer) gmmktime($hours, $mins, $secs); - } - - $timezoneAdjustment = ($adjustToTimezone) ? - PHPExcel_Shared_TimeZone::getTimezoneAdjustment($timezone, $returnValue) : - 0; - - return $returnValue + $timezoneAdjustment; - } - - - /** - * Convert a date from Excel to a PHP Date/Time object - * - * @param integer $dateValue Excel date/time value - * @return DateTime PHP date/time object - */ - public static function ExcelToPHPObject($dateValue = 0) - { - $dateTime = self::ExcelToPHP($dateValue); - $days = floor($dateTime / 86400); - $time = round((($dateTime / 86400) - $days) * 86400); - $hours = round($time / 3600); - $minutes = round($time / 60) - ($hours * 60); - $seconds = round($time) - ($hours * 3600) - ($minutes * 60); - - $dateObj = date_create('1-Jan-1970+'.$days.' days'); - $dateObj->setTime($hours, $minutes, $seconds); - - return $dateObj; - } - - - /** - * Convert a date from PHP to Excel - * - * @param mixed $dateValue PHP serialized date/time or date object - * @param boolean $adjustToTimezone Flag indicating whether $dateValue should be treated as - * a UST timestamp, or adjusted to UST - * @param string $timezone The timezone for finding the adjustment from UST - * @return mixed Excel date/time value - * or boolean FALSE on failure - */ - public static function PHPToExcel($dateValue = 0, $adjustToTimezone = false, $timezone = null) - { - $saveTimeZone = date_default_timezone_get(); - date_default_timezone_set('UTC'); - - $timezoneAdjustment = ($adjustToTimezone) ? - PHPExcel_Shared_TimeZone::getTimezoneAdjustment($timezone ? $timezone : $saveTimeZone, $dateValue) : - 0; - - $retValue = false; - if ((is_object($dateValue)) && ($dateValue instanceof DateTime)) { - $dateValue->add(new DateInterval('PT' . $timezoneAdjustment . 'S')); - $retValue = self::FormattedPHPToExcel($dateValue->format('Y'), $dateValue->format('m'), $dateValue->format('d'), $dateValue->format('H'), $dateValue->format('i'), $dateValue->format('s')); - } elseif (is_numeric($dateValue)) { - $dateValue += $timezoneAdjustment; - $retValue = self::FormattedPHPToExcel(date('Y', $dateValue), date('m', $dateValue), date('d', $dateValue), date('H', $dateValue), date('i', $dateValue), date('s', $dateValue)); - } elseif (is_string($dateValue)) { - $retValue = self::stringToExcel($dateValue); - } - date_default_timezone_set($saveTimeZone); - - return $retValue; - } - - - /** - * FormattedPHPToExcel - * - * @param integer $year - * @param integer $month - * @param integer $day - * @param integer $hours - * @param integer $minutes - * @param integer $seconds - * @return integer Excel date/time value - */ - public static function FormattedPHPToExcel($year, $month, $day, $hours = 0, $minutes = 0, $seconds = 0) - { - if (self::$excelBaseDate == self::CALENDAR_WINDOWS_1900) { - // - // Fudge factor for the erroneous fact that the year 1900 is treated as a Leap Year in MS Excel - // This affects every date following 28th February 1900 - // - $excel1900isLeapYear = true; - if (($year == 1900) && ($month <= 2)) { - $excel1900isLeapYear = false; - } - $myexcelBaseDate = 2415020; - } else { - $myexcelBaseDate = 2416481; - $excel1900isLeapYear = false; - } - - // Julian base date Adjustment - if ($month > 2) { - $month -= 3; - } else { - $month += 9; - --$year; - } - - // Calculate the Julian Date, then subtract the Excel base date (JD 2415020 = 31-Dec-1899 Giving Excel Date of 0) - $century = substr($year, 0, 2); - $decade = substr($year, 2, 2); - $excelDate = floor((146097 * $century) / 4) + floor((1461 * $decade) / 4) + floor((153 * $month + 2) / 5) + $day + 1721119 - $myexcelBaseDate + $excel1900isLeapYear; - - $excelTime = (($hours * 3600) + ($minutes * 60) + $seconds) / 86400; - - return (float) $excelDate + $excelTime; - } - - - /** - * Is a given cell a date/time? - * - * @param PHPExcel_Cell $pCell - * @return boolean - */ - public static function isDateTime(PHPExcel_Cell $pCell) - { - return self::isDateTimeFormat( - $pCell->getWorksheet()->getStyle( - $pCell->getCoordinate() - )->getNumberFormat() - ); - } - - - /** - * Is a given number format a date/time? - * - * @param PHPExcel_Style_NumberFormat $pFormat - * @return boolean - */ - public static function isDateTimeFormat(PHPExcel_Style_NumberFormat $pFormat) - { - return self::isDateTimeFormatCode($pFormat->getFormatCode()); - } - - - private static $possibleDateFormatCharacters = 'eymdHs'; - - /** - * Is a given number format code a date/time? - * - * @param string $pFormatCode - * @return boolean - */ - public static function isDateTimeFormatCode($pFormatCode = '') - { - if (strtolower($pFormatCode) === strtolower(PHPExcel_Style_NumberFormat::FORMAT_GENERAL)) { - // "General" contains an epoch letter 'e', so we trap for it explicitly here (case-insensitive check) - return false; - } - if (preg_match('/[0#]E[+-]0/i', $pFormatCode)) { - // Scientific format - return false; - } - - // Switch on formatcode - switch ($pFormatCode) { - // Explicitly defined date formats - case PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD: - case PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2: - case PHPExcel_Style_NumberFormat::FORMAT_DATE_DDMMYYYY: - case PHPExcel_Style_NumberFormat::FORMAT_DATE_DMYSLASH: - case PHPExcel_Style_NumberFormat::FORMAT_DATE_DMYMINUS: - case PHPExcel_Style_NumberFormat::FORMAT_DATE_DMMINUS: - case PHPExcel_Style_NumberFormat::FORMAT_DATE_MYMINUS: - case PHPExcel_Style_NumberFormat::FORMAT_DATE_DATETIME: - case PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME1: - case PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME2: - case PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME3: - case PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME4: - case PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME5: - case PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME6: - case PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME7: - case PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME8: - case PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDDSLASH: - case PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX14: - case PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX15: - case PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX16: - case PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX17: - case PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX22: - return true; - } - - // Typically number, currency or accounting (or occasionally fraction) formats - if ((substr($pFormatCode, 0, 1) == '_') || (substr($pFormatCode, 0, 2) == '0 ')) { - return false; - } - // Try checking for any of the date formatting characters that don't appear within square braces - if (preg_match('/(^|\])[^\[]*['.self::$possibleDateFormatCharacters.']/i', $pFormatCode)) { - // We might also have a format mask containing quoted strings... - // we don't want to test for any of our characters within the quoted blocks - if (strpos($pFormatCode, '"') !== false) { - $segMatcher = false; - foreach (explode('"', $pFormatCode) as $subVal) { - // Only test in alternate array entries (the non-quoted blocks) - if (($segMatcher = !$segMatcher) && - (preg_match('/(^|\])[^\[]*['.self::$possibleDateFormatCharacters.']/i', $subVal))) { - return true; - } - } - return false; - } - return true; - } - - // No date... - return false; - } - - - /** - * Convert a date/time string to Excel time - * - * @param string $dateValue Examples: '2009-12-31', '2009-12-31 15:59', '2009-12-31 15:59:10' - * @return float|FALSE Excel date/time serial value - */ - public static function stringToExcel($dateValue = '') - { - if (strlen($dateValue) < 2) { - return false; - } - if (!preg_match('/^(\d{1,4}[ \.\/\-][A-Z]{3,9}([ \.\/\-]\d{1,4})?|[A-Z]{3,9}[ \.\/\-]\d{1,4}([ \.\/\-]\d{1,4})?|\d{1,4}[ \.\/\-]\d{1,4}([ \.\/\-]\d{1,4})?)( \d{1,2}:\d{1,2}(:\d{1,2})?)?$/iu', $dateValue)) { - return false; - } - - $dateValueNew = PHPExcel_Calculation_DateTime::DATEVALUE($dateValue); - - if ($dateValueNew === PHPExcel_Calculation_Functions::VALUE()) { - return false; - } - - if (strpos($dateValue, ':') !== false) { - $timeValue = PHPExcel_Calculation_DateTime::TIMEVALUE($dateValue); - if ($timeValue === PHPExcel_Calculation_Functions::VALUE()) { - return false; - } - $dateValueNew += $timeValue; - } - return $dateValueNew; - } - - /** - * Converts a month name (either a long or a short name) to a month number - * - * @param string $month Month name or abbreviation - * @return integer|string Month number (1 - 12), or the original string argument if it isn't a valid month name - */ - public static function monthStringToNumber($month) - { - $monthIndex = 1; - foreach (self::$monthNames as $shortMonthName => $longMonthName) { - if (($month === $longMonthName) || ($month === $shortMonthName)) { - return $monthIndex; - } - ++$monthIndex; - } - return $month; - } - - /** - * Strips an ordinal froma numeric value - * - * @param string $day Day number with an ordinal - * @return integer|string The integer value with any ordinal stripped, or the original string argument if it isn't a valid numeric - */ - public static function dayStringToNumber($day) - { - $strippedDayValue = (str_replace(self::$numberSuffixes, '', $day)); - if (is_numeric($strippedDayValue)) { - return (integer) $strippedDayValue; - } - return $day; - } -} diff --git a/application/third_party/PHPExcel/Shared/Drawing.php b/application/third_party/PHPExcel/Shared/Drawing.php deleted file mode 100644 index 3e027b4a..00000000 --- a/application/third_party/PHPExcel/Shared/Drawing.php +++ /dev/null @@ -1,270 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Shared - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - - -/** - * PHPExcel_Shared_Drawing - * - * @category PHPExcel - * @package PHPExcel_Shared - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - */ -class PHPExcel_Shared_Drawing -{ - /** - * Convert pixels to EMU - * - * @param int $pValue Value in pixels - * @return int Value in EMU - */ - public static function pixelsToEMU($pValue = 0) - { - return round($pValue * 9525); - } - - /** - * Convert EMU to pixels - * - * @param int $pValue Value in EMU - * @return int Value in pixels - */ - public static function EMUToPixels($pValue = 0) - { - if ($pValue != 0) { - return round($pValue / 9525); - } else { - return 0; - } - } - - /** - * Convert pixels to column width. Exact algorithm not known. - * By inspection of a real Excel file using Calibri 11, one finds 1000px ~ 142.85546875 - * This gives a conversion factor of 7. Also, we assume that pixels and font size are proportional. - * - * @param int $pValue Value in pixels - * @param PHPExcel_Style_Font $pDefaultFont Default font of the workbook - * @return int Value in cell dimension - */ - public static function pixelsToCellDimension($pValue = 0, PHPExcel_Style_Font $pDefaultFont) - { - // Font name and size - $name = $pDefaultFont->getName(); - $size = $pDefaultFont->getSize(); - - if (isset(PHPExcel_Shared_Font::$defaultColumnWidths[$name][$size])) { - // Exact width can be determined - $colWidth = $pValue * PHPExcel_Shared_Font::$defaultColumnWidths[$name][$size]['width'] / PHPExcel_Shared_Font::$defaultColumnWidths[$name][$size]['px']; - } else { - // We don't have data for this particular font and size, use approximation by - // extrapolating from Calibri 11 - $colWidth = $pValue * 11 * PHPExcel_Shared_Font::$defaultColumnWidths['Calibri'][11]['width'] / PHPExcel_Shared_Font::$defaultColumnWidths['Calibri'][11]['px'] / $size; - } - - return $colWidth; - } - - /** - * Convert column width from (intrinsic) Excel units to pixels - * - * @param float $pValue Value in cell dimension - * @param PHPExcel_Style_Font $pDefaultFont Default font of the workbook - * @return int Value in pixels - */ - public static function cellDimensionToPixels($pValue = 0, PHPExcel_Style_Font $pDefaultFont) - { - // Font name and size - $name = $pDefaultFont->getName(); - $size = $pDefaultFont->getSize(); - - if (isset(PHPExcel_Shared_Font::$defaultColumnWidths[$name][$size])) { - // Exact width can be determined - $colWidth = $pValue * PHPExcel_Shared_Font::$defaultColumnWidths[$name][$size]['px'] / PHPExcel_Shared_Font::$defaultColumnWidths[$name][$size]['width']; - } else { - // We don't have data for this particular font and size, use approximation by - // extrapolating from Calibri 11 - $colWidth = $pValue * $size * PHPExcel_Shared_Font::$defaultColumnWidths['Calibri'][11]['px'] / PHPExcel_Shared_Font::$defaultColumnWidths['Calibri'][11]['width'] / 11; - } - - // Round pixels to closest integer - $colWidth = (int) round($colWidth); - - return $colWidth; - } - - /** - * Convert pixels to points - * - * @param int $pValue Value in pixels - * @return int Value in points - */ - public static function pixelsToPoints($pValue = 0) - { - return $pValue * 0.67777777; - } - - /** - * Convert points to pixels - * - * @param int $pValue Value in points - * @return int Value in pixels - */ - public static function pointsToPixels($pValue = 0) - { - if ($pValue != 0) { - return (int) ceil($pValue * 1.333333333); - } else { - return 0; - } - } - - /** - * Convert degrees to angle - * - * @param int $pValue Degrees - * @return int Angle - */ - public static function degreesToAngle($pValue = 0) - { - return (int)round($pValue * 60000); - } - - /** - * Convert angle to degrees - * - * @param int $pValue Angle - * @return int Degrees - */ - public static function angleToDegrees($pValue = 0) - { - if ($pValue != 0) { - return round($pValue / 60000); - } else { - return 0; - } - } - - /** - * Create a new image from file. By alexander at alexauto dot nl - * - * @link http://www.php.net/manual/en/function.imagecreatefromwbmp.php#86214 - * @param string $filename Path to Windows DIB (BMP) image - * @return resource - */ - public static function imagecreatefrombmp($p_sFile) - { - // Load the image into a string - $file = fopen($p_sFile, "rb"); - $read = fread($file, 10); - while (!feof($file) && ($read<>"")) { - $read .= fread($file, 1024); - } - - $temp = unpack("H*", $read); - $hex = $temp[1]; - $header = substr($hex, 0, 108); - - // Process the header - // Structure: http://www.fastgraph.com/help/bmp_header_format.html - if (substr($header, 0, 4)=="424d") { - // Cut it in parts of 2 bytes - $header_parts = str_split($header, 2); - - // Get the width 4 bytes - $width = hexdec($header_parts[19].$header_parts[18]); - - // Get the height 4 bytes - $height = hexdec($header_parts[23].$header_parts[22]); - - // Unset the header params - unset($header_parts); - } - - // Define starting X and Y - $x = 0; - $y = 1; - - // Create newimage - $image = imagecreatetruecolor($width, $height); - - // Grab the body from the image - $body = substr($hex, 108); - - // Calculate if padding at the end-line is needed - // Divided by two to keep overview. - // 1 byte = 2 HEX-chars - $body_size = (strlen($body)/2); - $header_size = ($width*$height); - - // Use end-line padding? Only when needed - $usePadding = ($body_size>($header_size*3)+4); - - // Using a for-loop with index-calculation instaid of str_split to avoid large memory consumption - // Calculate the next DWORD-position in the body - for ($i = 0; $i < $body_size; $i += 3) { - // Calculate line-ending and padding - if ($x >= $width) { - // If padding needed, ignore image-padding - // Shift i to the ending of the current 32-bit-block - if ($usePadding) { - $i += $width%4; - } - - // Reset horizontal position - $x = 0; - - // Raise the height-position (bottom-up) - $y++; - - // Reached the image-height? Break the for-loop - if ($y > $height) { - break; - } - } - - // Calculation of the RGB-pixel (defined as BGR in image-data) - // Define $i_pos as absolute position in the body - $i_pos = $i * 2; - $r = hexdec($body[$i_pos+4].$body[$i_pos+5]); - $g = hexdec($body[$i_pos+2].$body[$i_pos+3]); - $b = hexdec($body[$i_pos].$body[$i_pos+1]); - - // Calculate and draw the pixel - $color = imagecolorallocate($image, $r, $g, $b); - imagesetpixel($image, $x, $height-$y, $color); - - // Raise the horizontal position - $x++; - } - - // Unset the body / free the memory - unset($body); - - // Return image-object - return $image; - } -} diff --git a/application/third_party/PHPExcel/Shared/Escher.php b/application/third_party/PHPExcel/Shared/Escher.php deleted file mode 100644 index 1aedb9d2..00000000 --- a/application/third_party/PHPExcel/Shared/Escher.php +++ /dev/null @@ -1,83 +0,0 @@ -<?php - -/** - * PHPExcel_Shared_Escher - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Shared_Escher - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Shared_Escher -{ - /** - * Drawing Group Container - * - * @var PHPExcel_Shared_Escher_DggContainer - */ - private $dggContainer; - - /** - * Drawing Container - * - * @var PHPExcel_Shared_Escher_DgContainer - */ - private $dgContainer; - - /** - * Get Drawing Group Container - * - * @return PHPExcel_Shared_Escher_DgContainer - */ - public function getDggContainer() - { - return $this->dggContainer; - } - - /** - * Set Drawing Group Container - * - * @param PHPExcel_Shared_Escher_DggContainer $dggContainer - */ - public function setDggContainer($dggContainer) - { - return $this->dggContainer = $dggContainer; - } - - /** - * Get Drawing Container - * - * @return PHPExcel_Shared_Escher_DgContainer - */ - public function getDgContainer() - { - return $this->dgContainer; - } - - /** - * Set Drawing Container - * - * @param PHPExcel_Shared_Escher_DgContainer $dgContainer - */ - public function setDgContainer($dgContainer) - { - return $this->dgContainer = $dgContainer; - } -} diff --git a/application/third_party/PHPExcel/Shared/Escher/DgContainer.php b/application/third_party/PHPExcel/Shared/Escher/DgContainer.php deleted file mode 100644 index 739cd902..00000000 --- a/application/third_party/PHPExcel/Shared/Escher/DgContainer.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * PHPExcel_Shared_Escher_DgContainer - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Shared_Escher - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Shared_Escher_DgContainer -{ - /** - * Drawing index, 1-based. - * - * @var int - */ - private $dgId; - - /** - * Last shape index in this drawing - * - * @var int - */ - private $lastSpId; - - private $spgrContainer = null; - - public function getDgId() - { - return $this->dgId; - } - - public function setDgId($value) - { - $this->dgId = $value; - } - - public function getLastSpId() - { - return $this->lastSpId; - } - - public function setLastSpId($value) - { - $this->lastSpId = $value; - } - - public function getSpgrContainer() - { - return $this->spgrContainer; - } - - public function setSpgrContainer($spgrContainer) - { - return $this->spgrContainer = $spgrContainer; - } -} diff --git a/application/third_party/PHPExcel/Shared/Escher/DgContainer/SpgrContainer.php b/application/third_party/PHPExcel/Shared/Escher/DgContainer/SpgrContainer.php deleted file mode 100644 index 49e7d685..00000000 --- a/application/third_party/PHPExcel/Shared/Escher/DgContainer/SpgrContainer.php +++ /dev/null @@ -1,102 +0,0 @@ -<?php - -/** - * PHPExcel_Shared_Escher_DgContainer_SpgrContainer - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Shared_Escher - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Shared_Escher_DgContainer_SpgrContainer -{ - /** - * Parent Shape Group Container - * - * @var PHPExcel_Shared_Escher_DgContainer_SpgrContainer - */ - private $parent; - - /** - * Shape Container collection - * - * @var array - */ - private $children = array(); - - /** - * Set parent Shape Group Container - * - * @param PHPExcel_Shared_Escher_DgContainer_SpgrContainer $parent - */ - public function setParent($parent) - { - $this->parent = $parent; - } - - /** - * Get the parent Shape Group Container if any - * - * @return PHPExcel_Shared_Escher_DgContainer_SpgrContainer|null - */ - public function getParent() - { - return $this->parent; - } - - /** - * Add a child. This will be either spgrContainer or spContainer - * - * @param mixed $child - */ - public function addChild($child) - { - $this->children[] = $child; - $child->setParent($this); - } - - /** - * Get collection of Shape Containers - */ - public function getChildren() - { - return $this->children; - } - - /** - * Recursively get all spContainers within this spgrContainer - * - * @return PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer[] - */ - public function getAllSpContainers() - { - $allSpContainers = array(); - - foreach ($this->children as $child) { - if ($child instanceof PHPExcel_Shared_Escher_DgContainer_SpgrContainer) { - $allSpContainers = array_merge($allSpContainers, $child->getAllSpContainers()); - } else { - $allSpContainers[] = $child; - } - } - - return $allSpContainers; - } -} diff --git a/application/third_party/PHPExcel/Shared/Escher/DgContainer/SpgrContainer/SpContainer.php b/application/third_party/PHPExcel/Shared/Escher/DgContainer/SpgrContainer/SpContainer.php deleted file mode 100644 index a1f1a460..00000000 --- a/application/third_party/PHPExcel/Shared/Escher/DgContainer/SpgrContainer/SpContainer.php +++ /dev/null @@ -1,388 +0,0 @@ -<?php - -/** - * PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Shared_Escher - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer -{ - /** - * Parent Shape Group Container - * - * @var PHPExcel_Shared_Escher_DgContainer_SpgrContainer - */ - private $parent; - - /** - * Is this a group shape? - * - * @var boolean - */ - private $spgr = false; - - /** - * Shape type - * - * @var int - */ - private $spType; - - /** - * Shape flag - * - * @var int - */ - private $spFlag; - - /** - * Shape index (usually group shape has index 0, and the rest: 1,2,3...) - * - * @var boolean - */ - private $spId; - - /** - * Array of options - * - * @var array - */ - private $OPT; - - /** - * Cell coordinates of upper-left corner of shape, e.g. 'A1' - * - * @var string - */ - private $startCoordinates; - - /** - * Horizontal offset of upper-left corner of shape measured in 1/1024 of column width - * - * @var int - */ - private $startOffsetX; - - /** - * Vertical offset of upper-left corner of shape measured in 1/256 of row height - * - * @var int - */ - private $startOffsetY; - - /** - * Cell coordinates of bottom-right corner of shape, e.g. 'B2' - * - * @var string - */ - private $endCoordinates; - - /** - * Horizontal offset of bottom-right corner of shape measured in 1/1024 of column width - * - * @var int - */ - private $endOffsetX; - - /** - * Vertical offset of bottom-right corner of shape measured in 1/256 of row height - * - * @var int - */ - private $endOffsetY; - - /** - * Set parent Shape Group Container - * - * @param PHPExcel_Shared_Escher_DgContainer_SpgrContainer $parent - */ - public function setParent($parent) - { - $this->parent = $parent; - } - - /** - * Get the parent Shape Group Container - * - * @return PHPExcel_Shared_Escher_DgContainer_SpgrContainer - */ - public function getParent() - { - return $this->parent; - } - - /** - * Set whether this is a group shape - * - * @param boolean $value - */ - public function setSpgr($value = false) - { - $this->spgr = $value; - } - - /** - * Get whether this is a group shape - * - * @return boolean - */ - public function getSpgr() - { - return $this->spgr; - } - - /** - * Set the shape type - * - * @param int $value - */ - public function setSpType($value) - { - $this->spType = $value; - } - - /** - * Get the shape type - * - * @return int - */ - public function getSpType() - { - return $this->spType; - } - - /** - * Set the shape flag - * - * @param int $value - */ - public function setSpFlag($value) - { - $this->spFlag = $value; - } - - /** - * Get the shape flag - * - * @return int - */ - public function getSpFlag() - { - return $this->spFlag; - } - - /** - * Set the shape index - * - * @param int $value - */ - public function setSpId($value) - { - $this->spId = $value; - } - - /** - * Get the shape index - * - * @return int - */ - public function getSpId() - { - return $this->spId; - } - - /** - * Set an option for the Shape Group Container - * - * @param int $property The number specifies the option - * @param mixed $value - */ - public function setOPT($property, $value) - { - $this->OPT[$property] = $value; - } - - /** - * Get an option for the Shape Group Container - * - * @param int $property The number specifies the option - * @return mixed - */ - public function getOPT($property) - { - if (isset($this->OPT[$property])) { - return $this->OPT[$property]; - } - return null; - } - - /** - * Get the collection of options - * - * @return array - */ - public function getOPTCollection() - { - return $this->OPT; - } - - /** - * Set cell coordinates of upper-left corner of shape - * - * @param string $value - */ - public function setStartCoordinates($value = 'A1') - { - $this->startCoordinates = $value; - } - - /** - * Get cell coordinates of upper-left corner of shape - * - * @return string - */ - public function getStartCoordinates() - { - return $this->startCoordinates; - } - - /** - * Set offset in x-direction of upper-left corner of shape measured in 1/1024 of column width - * - * @param int $startOffsetX - */ - public function setStartOffsetX($startOffsetX = 0) - { - $this->startOffsetX = $startOffsetX; - } - - /** - * Get offset in x-direction of upper-left corner of shape measured in 1/1024 of column width - * - * @return int - */ - public function getStartOffsetX() - { - return $this->startOffsetX; - } - - /** - * Set offset in y-direction of upper-left corner of shape measured in 1/256 of row height - * - * @param int $startOffsetY - */ - public function setStartOffsetY($startOffsetY = 0) - { - $this->startOffsetY = $startOffsetY; - } - - /** - * Get offset in y-direction of upper-left corner of shape measured in 1/256 of row height - * - * @return int - */ - public function getStartOffsetY() - { - return $this->startOffsetY; - } - - /** - * Set cell coordinates of bottom-right corner of shape - * - * @param string $value - */ - public function setEndCoordinates($value = 'A1') - { - $this->endCoordinates = $value; - } - - /** - * Get cell coordinates of bottom-right corner of shape - * - * @return string - */ - public function getEndCoordinates() - { - return $this->endCoordinates; - } - - /** - * Set offset in x-direction of bottom-right corner of shape measured in 1/1024 of column width - * - * @param int $startOffsetX - */ - public function setEndOffsetX($endOffsetX = 0) - { - $this->endOffsetX = $endOffsetX; - } - - /** - * Get offset in x-direction of bottom-right corner of shape measured in 1/1024 of column width - * - * @return int - */ - public function getEndOffsetX() - { - return $this->endOffsetX; - } - - /** - * Set offset in y-direction of bottom-right corner of shape measured in 1/256 of row height - * - * @param int $endOffsetY - */ - public function setEndOffsetY($endOffsetY = 0) - { - $this->endOffsetY = $endOffsetY; - } - - /** - * Get offset in y-direction of bottom-right corner of shape measured in 1/256 of row height - * - * @return int - */ - public function getEndOffsetY() - { - return $this->endOffsetY; - } - - /** - * Get the nesting level of this spContainer. This is the number of spgrContainers between this spContainer and - * the dgContainer. A value of 1 = immediately within first spgrContainer - * Higher nesting level occurs if and only if spContainer is part of a shape group - * - * @return int Nesting level - */ - public function getNestingLevel() - { - $nestingLevel = 0; - - $parent = $this->getParent(); - while ($parent instanceof PHPExcel_Shared_Escher_DgContainer_SpgrContainer) { - ++$nestingLevel; - $parent = $parent->getParent(); - } - - return $nestingLevel; - } -} diff --git a/application/third_party/PHPExcel/Shared/Escher/DggContainer.php b/application/third_party/PHPExcel/Shared/Escher/DggContainer.php deleted file mode 100644 index b116b1bd..00000000 --- a/application/third_party/PHPExcel/Shared/Escher/DggContainer.php +++ /dev/null @@ -1,196 +0,0 @@ -<?php - -/** - * PHPExcel_Shared_Escher_DggContainer - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Shared_Escher - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Shared_Escher_DggContainer -{ - /** - * Maximum shape index of all shapes in all drawings increased by one - * - * @var int - */ - private $spIdMax; - - /** - * Total number of drawings saved - * - * @var int - */ - private $cDgSaved; - - /** - * Total number of shapes saved (including group shapes) - * - * @var int - */ - private $cSpSaved; - - /** - * BLIP Store Container - * - * @var PHPExcel_Shared_Escher_DggContainer_BstoreContainer - */ - private $bstoreContainer; - - /** - * Array of options for the drawing group - * - * @var array - */ - private $OPT = array(); - - /** - * Array of identifier clusters containg information about the maximum shape identifiers - * - * @var array - */ - private $IDCLs = array(); - - /** - * Get maximum shape index of all shapes in all drawings (plus one) - * - * @return int - */ - public function getSpIdMax() - { - return $this->spIdMax; - } - - /** - * Set maximum shape index of all shapes in all drawings (plus one) - * - * @param int - */ - public function setSpIdMax($value) - { - $this->spIdMax = $value; - } - - /** - * Get total number of drawings saved - * - * @return int - */ - public function getCDgSaved() - { - return $this->cDgSaved; - } - - /** - * Set total number of drawings saved - * - * @param int - */ - public function setCDgSaved($value) - { - $this->cDgSaved = $value; - } - - /** - * Get total number of shapes saved (including group shapes) - * - * @return int - */ - public function getCSpSaved() - { - return $this->cSpSaved; - } - - /** - * Set total number of shapes saved (including group shapes) - * - * @param int - */ - public function setCSpSaved($value) - { - $this->cSpSaved = $value; - } - - /** - * Get BLIP Store Container - * - * @return PHPExcel_Shared_Escher_DggContainer_BstoreContainer - */ - public function getBstoreContainer() - { - return $this->bstoreContainer; - } - - /** - * Set BLIP Store Container - * - * @param PHPExcel_Shared_Escher_DggContainer_BstoreContainer $bstoreContainer - */ - public function setBstoreContainer($bstoreContainer) - { - $this->bstoreContainer = $bstoreContainer; - } - - /** - * Set an option for the drawing group - * - * @param int $property The number specifies the option - * @param mixed $value - */ - public function setOPT($property, $value) - { - $this->OPT[$property] = $value; - } - - /** - * Get an option for the drawing group - * - * @param int $property The number specifies the option - * @return mixed - */ - public function getOPT($property) - { - if (isset($this->OPT[$property])) { - return $this->OPT[$property]; - } - return null; - } - - /** - * Get identifier clusters - * - * @return array - */ - public function getIDCLs() - { - return $this->IDCLs; - } - - /** - * Set identifier clusters. array(<drawingId> => <max shape id>, ...) - * - * @param array $pValue - */ - public function setIDCLs($pValue) - { - $this->IDCLs = $pValue; - } -} diff --git a/application/third_party/PHPExcel/Shared/Escher/DggContainer/BstoreContainer.php b/application/third_party/PHPExcel/Shared/Escher/DggContainer/BstoreContainer.php deleted file mode 100644 index 1af2432b..00000000 --- a/application/third_party/PHPExcel/Shared/Escher/DggContainer/BstoreContainer.php +++ /dev/null @@ -1,57 +0,0 @@ -<?php - -/** - * PHPExcel_Shared_Escher_DggContainer_BstoreContainer - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Shared_Escher - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Shared_Escher_DggContainer_BstoreContainer -{ - /** - * BLIP Store Entries. Each of them holds one BLIP (Big Large Image or Picture) - * - * @var array - */ - private $BSECollection = array(); - - /** - * Add a BLIP Store Entry - * - * @param PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE $BSE - */ - public function addBSE($BSE) - { - $this->BSECollection[] = $BSE; - $BSE->setParent($this); - } - - /** - * Get the collection of BLIP Store Entries - * - * @return PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE[] - */ - public function getBSECollection() - { - return $this->BSECollection; - } -} diff --git a/application/third_party/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE.php b/application/third_party/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE.php deleted file mode 100644 index d17e91e1..00000000 --- a/application/third_party/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE.php +++ /dev/null @@ -1,112 +0,0 @@ -<?php - -/** - * PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Shared_Escher - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE -{ - const BLIPTYPE_ERROR = 0x00; - const BLIPTYPE_UNKNOWN = 0x01; - const BLIPTYPE_EMF = 0x02; - const BLIPTYPE_WMF = 0x03; - const BLIPTYPE_PICT = 0x04; - const BLIPTYPE_JPEG = 0x05; - const BLIPTYPE_PNG = 0x06; - const BLIPTYPE_DIB = 0x07; - const BLIPTYPE_TIFF = 0x11; - const BLIPTYPE_CMYKJPEG = 0x12; - - /** - * The parent BLIP Store Entry Container - * - * @var PHPExcel_Shared_Escher_DggContainer_BstoreContainer - */ - private $parent; - - /** - * The BLIP (Big Large Image or Picture) - * - * @var PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip - */ - private $blip; - - /** - * The BLIP type - * - * @var int - */ - private $blipType; - - /** - * Set parent BLIP Store Entry Container - * - * @param PHPExcel_Shared_Escher_DggContainer_BstoreContainer $parent - */ - public function setParent($parent) - { - $this->parent = $parent; - } - - /** - * Get the BLIP - * - * @return PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip - */ - public function getBlip() - { - return $this->blip; - } - - /** - * Set the BLIP - * - * @param PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip $blip - */ - public function setBlip($blip) - { - $this->blip = $blip; - $blip->setParent($this); - } - - /** - * Get the BLIP type - * - * @return int - */ - public function getBlipType() - { - return $this->blipType; - } - - /** - * Set the BLIP type - * - * @param int - */ - public function setBlipType($blipType) - { - $this->blipType = $blipType; - } -} diff --git a/application/third_party/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE/Blip.php b/application/third_party/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE/Blip.php deleted file mode 100644 index 3bcbbbe2..00000000 --- a/application/third_party/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE/Blip.php +++ /dev/null @@ -1,83 +0,0 @@ -<?php - -/** - * PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Shared_Escher - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip -{ - /** - * The parent BSE - * - * @var PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE - */ - private $parent; - - /** - * Raw image data - * - * @var string - */ - private $data; - - /** - * Get the raw image data - * - * @return string - */ - public function getData() - { - return $this->data; - } - - /** - * Set the raw image data - * - * @param string - */ - public function setData($data) - { - $this->data = $data; - } - - /** - * Set parent BSE - * - * @param PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE $parent - */ - public function setParent($parent) - { - $this->parent = $parent; - } - - /** - * Get parent BSE - * - * @return PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE $parent - */ - public function getParent() - { - return $this->parent; - } -} diff --git a/application/third_party/PHPExcel/Shared/Excel5.php b/application/third_party/PHPExcel/Shared/Excel5.php deleted file mode 100644 index c3ff209f..00000000 --- a/application/third_party/PHPExcel/Shared/Excel5.php +++ /dev/null @@ -1,298 +0,0 @@ -<?php - -/** - * PHPExcel_Shared_Excel5 - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Shared - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Shared_Excel5 -{ - /** - * Get the width of a column in pixels. We use the relationship y = ceil(7x) where - * x is the width in intrinsic Excel units (measuring width in number of normal characters) - * This holds for Arial 10 - * - * @param PHPExcel_Worksheet $sheet The sheet - * @param string $col The column - * @return integer The width in pixels - */ - public static function sizeCol($sheet, $col = 'A') - { - // default font of the workbook - $font = $sheet->getParent()->getDefaultStyle()->getFont(); - - $columnDimensions = $sheet->getColumnDimensions(); - - // first find the true column width in pixels (uncollapsed and unhidden) - if (isset($columnDimensions[$col]) and $columnDimensions[$col]->getWidth() != -1) { - // then we have column dimension with explicit width - $columnDimension = $columnDimensions[$col]; - $width = $columnDimension->getWidth(); - $pixelWidth = PHPExcel_Shared_Drawing::cellDimensionToPixels($width, $font); - } elseif ($sheet->getDefaultColumnDimension()->getWidth() != -1) { - // then we have default column dimension with explicit width - $defaultColumnDimension = $sheet->getDefaultColumnDimension(); - $width = $defaultColumnDimension->getWidth(); - $pixelWidth = PHPExcel_Shared_Drawing::cellDimensionToPixels($width, $font); - } else { - // we don't even have any default column dimension. Width depends on default font - $pixelWidth = PHPExcel_Shared_Font::getDefaultColumnWidthByFont($font, true); - } - - // now find the effective column width in pixels - if (isset($columnDimensions[$col]) and !$columnDimensions[$col]->getVisible()) { - $effectivePixelWidth = 0; - } else { - $effectivePixelWidth = $pixelWidth; - } - - return $effectivePixelWidth; - } - - /** - * Convert the height of a cell from user's units to pixels. By interpolation - * the relationship is: y = 4/3x. If the height hasn't been set by the user we - * use the default value. If the row is hidden we use a value of zero. - * - * @param PHPExcel_Worksheet $sheet The sheet - * @param integer $row The row index (1-based) - * @return integer The width in pixels - */ - public static function sizeRow($sheet, $row = 1) - { - // default font of the workbook - $font = $sheet->getParent()->getDefaultStyle()->getFont(); - - $rowDimensions = $sheet->getRowDimensions(); - - // first find the true row height in pixels (uncollapsed and unhidden) - if (isset($rowDimensions[$row]) and $rowDimensions[$row]->getRowHeight() != -1) { - // then we have a row dimension - $rowDimension = $rowDimensions[$row]; - $rowHeight = $rowDimension->getRowHeight(); - $pixelRowHeight = (int) ceil(4 * $rowHeight / 3); // here we assume Arial 10 - } elseif ($sheet->getDefaultRowDimension()->getRowHeight() != -1) { - // then we have a default row dimension with explicit height - $defaultRowDimension = $sheet->getDefaultRowDimension(); - $rowHeight = $defaultRowDimension->getRowHeight(); - $pixelRowHeight = PHPExcel_Shared_Drawing::pointsToPixels($rowHeight); - } else { - // we don't even have any default row dimension. Height depends on default font - $pointRowHeight = PHPExcel_Shared_Font::getDefaultRowHeightByFont($font); - $pixelRowHeight = PHPExcel_Shared_Font::fontSizeToPixels($pointRowHeight); - } - - // now find the effective row height in pixels - if (isset($rowDimensions[$row]) and !$rowDimensions[$row]->getVisible()) { - $effectivePixelRowHeight = 0; - } else { - $effectivePixelRowHeight = $pixelRowHeight; - } - - return $effectivePixelRowHeight; - } - - /** - * Get the horizontal distance in pixels between two anchors - * The distanceX is found as sum of all the spanning columns widths minus correction for the two offsets - * - * @param PHPExcel_Worksheet $sheet - * @param string $startColumn - * @param integer $startOffsetX Offset within start cell measured in 1/1024 of the cell width - * @param string $endColumn - * @param integer $endOffsetX Offset within end cell measured in 1/1024 of the cell width - * @return integer Horizontal measured in pixels - */ - public static function getDistanceX(PHPExcel_Worksheet $sheet, $startColumn = 'A', $startOffsetX = 0, $endColumn = 'A', $endOffsetX = 0) - { - $distanceX = 0; - - // add the widths of the spanning columns - $startColumnIndex = PHPExcel_Cell::columnIndexFromString($startColumn) - 1; // 1-based - $endColumnIndex = PHPExcel_Cell::columnIndexFromString($endColumn) - 1; // 1-based - for ($i = $startColumnIndex; $i <= $endColumnIndex; ++$i) { - $distanceX += self::sizeCol($sheet, PHPExcel_Cell::stringFromColumnIndex($i)); - } - - // correct for offsetX in startcell - $distanceX -= (int) floor(self::sizeCol($sheet, $startColumn) * $startOffsetX / 1024); - - // correct for offsetX in endcell - $distanceX -= (int) floor(self::sizeCol($sheet, $endColumn) * (1 - $endOffsetX / 1024)); - - return $distanceX; - } - - /** - * Get the vertical distance in pixels between two anchors - * The distanceY is found as sum of all the spanning rows minus two offsets - * - * @param PHPExcel_Worksheet $sheet - * @param integer $startRow (1-based) - * @param integer $startOffsetY Offset within start cell measured in 1/256 of the cell height - * @param integer $endRow (1-based) - * @param integer $endOffsetY Offset within end cell measured in 1/256 of the cell height - * @return integer Vertical distance measured in pixels - */ - public static function getDistanceY(PHPExcel_Worksheet $sheet, $startRow = 1, $startOffsetY = 0, $endRow = 1, $endOffsetY = 0) - { - $distanceY = 0; - - // add the widths of the spanning rows - for ($row = $startRow; $row <= $endRow; ++$row) { - $distanceY += self::sizeRow($sheet, $row); - } - - // correct for offsetX in startcell - $distanceY -= (int) floor(self::sizeRow($sheet, $startRow) * $startOffsetY / 256); - - // correct for offsetX in endcell - $distanceY -= (int) floor(self::sizeRow($sheet, $endRow) * (1 - $endOffsetY / 256)); - - return $distanceY; - } - - /** - * Convert 1-cell anchor coordinates to 2-cell anchor coordinates - * This function is ported from PEAR Spreadsheet_Writer_Excel with small modifications - * - * Calculate the vertices that define the position of the image as required by - * the OBJ record. - * - * +------------+------------+ - * | A | B | - * +-----+------------+------------+ - * | |(x1,y1) | | - * | 1 |(A1)._______|______ | - * | | | | | - * | | | | | - * +-----+----| BITMAP |-----+ - * | | | | | - * | 2 | |______________. | - * | | | (B2)| - * | | | (x2,y2)| - * +---- +------------+------------+ - * - * Example of a bitmap that covers some of the area from cell A1 to cell B2. - * - * Based on the width and height of the bitmap we need to calculate 8 vars: - * $col_start, $row_start, $col_end, $row_end, $x1, $y1, $x2, $y2. - * The width and height of the cells are also variable and have to be taken into - * account. - * The values of $col_start and $row_start are passed in from the calling - * function. The values of $col_end and $row_end are calculated by subtracting - * the width and height of the bitmap from the width and height of the - * underlying cells. - * The vertices are expressed as a percentage of the underlying cell width as - * follows (rhs values are in pixels): - * - * x1 = X / W *1024 - * y1 = Y / H *256 - * x2 = (X-1) / W *1024 - * y2 = (Y-1) / H *256 - * - * Where: X is distance from the left side of the underlying cell - * Y is distance from the top of the underlying cell - * W is the width of the cell - * H is the height of the cell - * - * @param PHPExcel_Worksheet $sheet - * @param string $coordinates E.g. 'A1' - * @param integer $offsetX Horizontal offset in pixels - * @param integer $offsetY Vertical offset in pixels - * @param integer $width Width in pixels - * @param integer $height Height in pixels - * @return array - */ - public static function oneAnchor2twoAnchor($sheet, $coordinates, $offsetX, $offsetY, $width, $height) - { - list($column, $row) = PHPExcel_Cell::coordinateFromString($coordinates); - $col_start = PHPExcel_Cell::columnIndexFromString($column) - 1; - $row_start = $row - 1; - - $x1 = $offsetX; - $y1 = $offsetY; - - // Initialise end cell to the same as the start cell - $col_end = $col_start; // Col containing lower right corner of object - $row_end = $row_start; // Row containing bottom right corner of object - - // Zero the specified offset if greater than the cell dimensions - if ($x1 >= self::sizeCol($sheet, PHPExcel_Cell::stringFromColumnIndex($col_start))) { - $x1 = 0; - } - if ($y1 >= self::sizeRow($sheet, $row_start + 1)) { - $y1 = 0; - } - - $width = $width + $x1 -1; - $height = $height + $y1 -1; - - // Subtract the underlying cell widths to find the end cell of the image - while ($width >= self::sizeCol($sheet, PHPExcel_Cell::stringFromColumnIndex($col_end))) { - $width -= self::sizeCol($sheet, PHPExcel_Cell::stringFromColumnIndex($col_end)); - ++$col_end; - } - - // Subtract the underlying cell heights to find the end cell of the image - while ($height >= self::sizeRow($sheet, $row_end + 1)) { - $height -= self::sizeRow($sheet, $row_end + 1); - ++$row_end; - } - - // Bitmap isn't allowed to start or finish in a hidden cell, i.e. a cell - // with zero height or width. - if (self::sizeCol($sheet, PHPExcel_Cell::stringFromColumnIndex($col_start)) == 0) { - return; - } - if (self::sizeCol($sheet, PHPExcel_Cell::stringFromColumnIndex($col_end)) == 0) { - return; - } - if (self::sizeRow($sheet, $row_start + 1) == 0) { - return; - } - if (self::sizeRow($sheet, $row_end + 1) == 0) { - return; - } - - // Convert the pixel values to the percentage value expected by Excel - $x1 = $x1 / self::sizeCol($sheet, PHPExcel_Cell::stringFromColumnIndex($col_start)) * 1024; - $y1 = $y1 / self::sizeRow($sheet, $row_start + 1) * 256; - $x2 = ($width + 1) / self::sizeCol($sheet, PHPExcel_Cell::stringFromColumnIndex($col_end)) * 1024; // Distance to right side of object - $y2 = ($height + 1) / self::sizeRow($sheet, $row_end + 1) * 256; // Distance to bottom of object - - $startCoordinates = PHPExcel_Cell::stringFromColumnIndex($col_start) . ($row_start + 1); - $endCoordinates = PHPExcel_Cell::stringFromColumnIndex($col_end) . ($row_end + 1); - - $twoAnchor = array( - 'startCoordinates' => $startCoordinates, - 'startOffsetX' => $x1, - 'startOffsetY' => $y1, - 'endCoordinates' => $endCoordinates, - 'endOffsetX' => $x2, - 'endOffsetY' => $y2, - ); - - return $twoAnchor; - } -} diff --git a/application/third_party/PHPExcel/Shared/File.php b/application/third_party/PHPExcel/Shared/File.php deleted file mode 100644 index a62df759..00000000 --- a/application/third_party/PHPExcel/Shared/File.php +++ /dev/null @@ -1,180 +0,0 @@ -<?php - -/** - * PHPExcel_Shared_File - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Shared - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Shared_File -{ - /* - * Use Temp or File Upload Temp for temporary files - * - * @protected - * @var boolean - */ - protected static $useUploadTempDirectory = false; - - - /** - * Set the flag indicating whether the File Upload Temp directory should be used for temporary files - * - * @param boolean $useUploadTempDir Use File Upload Temporary directory (true or false) - */ - public static function setUseUploadTempDirectory($useUploadTempDir = false) - { - self::$useUploadTempDirectory = (boolean) $useUploadTempDir; - } - - - /** - * Get the flag indicating whether the File Upload Temp directory should be used for temporary files - * - * @return boolean Use File Upload Temporary directory (true or false) - */ - public static function getUseUploadTempDirectory() - { - return self::$useUploadTempDirectory; - } - - - /** - * Verify if a file exists - * - * @param string $pFilename Filename - * @return bool - */ - public static function file_exists($pFilename) - { - // Sick construction, but it seems that - // file_exists returns strange values when - // doing the original file_exists on ZIP archives... - if (strtolower(substr($pFilename, 0, 3)) == 'zip') { - // Open ZIP file and verify if the file exists - $zipFile = substr($pFilename, 6, strpos($pFilename, '#') - 6); - $archiveFile = substr($pFilename, strpos($pFilename, '#') + 1); - - $zip = new ZipArchive(); - if ($zip->open($zipFile) === true) { - $returnValue = ($zip->getFromName($archiveFile) !== false); - $zip->close(); - return $returnValue; - } else { - return false; - } - } else { - // Regular file_exists - return file_exists($pFilename); - } - } - - /** - * Returns canonicalized absolute pathname, also for ZIP archives - * - * @param string $pFilename - * @return string - */ - public static function realpath($pFilename) - { - // Returnvalue - $returnValue = ''; - - // Try using realpath() - if (file_exists($pFilename)) { - $returnValue = realpath($pFilename); - } - - // Found something? - if ($returnValue == '' || ($returnValue === null)) { - $pathArray = explode('/', $pFilename); - while (in_array('..', $pathArray) && $pathArray[0] != '..') { - for ($i = 0; $i < count($pathArray); ++$i) { - if ($pathArray[$i] == '..' && $i > 0) { - unset($pathArray[$i]); - unset($pathArray[$i - 1]); - break; - } - } - } - $returnValue = implode('/', $pathArray); - } - - // Return - return $returnValue; - } - - /** - * Get the systems temporary directory. - * - * @return string - */ - public static function sys_get_temp_dir() - { - if (self::$useUploadTempDirectory) { - // use upload-directory when defined to allow running on environments having very restricted - // open_basedir configs - if (ini_get('upload_tmp_dir') !== false) { - if ($temp = ini_get('upload_tmp_dir')) { - if (file_exists($temp)) { - return realpath($temp); - } - } - } - } - - // sys_get_temp_dir is only available since PHP 5.2.1 - // http://php.net/manual/en/function.sys-get-temp-dir.php#94119 - if (!function_exists('sys_get_temp_dir')) { - if ($temp = getenv('TMP')) { - if ((!empty($temp)) && (file_exists($temp))) { - return realpath($temp); - } - } - if ($temp = getenv('TEMP')) { - if ((!empty($temp)) && (file_exists($temp))) { - return realpath($temp); - } - } - if ($temp = getenv('TMPDIR')) { - if ((!empty($temp)) && (file_exists($temp))) { - return realpath($temp); - } - } - - // trick for creating a file in system's temporary dir - // without knowing the path of the system's temporary dir - $temp = tempnam(__FILE__, ''); - if (file_exists($temp)) { - unlink($temp); - return realpath(dirname($temp)); - } - - return null; - } - - // use ordinary built-in PHP function - // There should be no problem with the 5.2.4 Suhosin realpath() bug, because this line should only - // be called if we're running 5.2.1 or earlier - return realpath(sys_get_temp_dir()); - } -} diff --git a/application/third_party/PHPExcel/Shared/Font.php b/application/third_party/PHPExcel/Shared/Font.php deleted file mode 100644 index 7efb3c96..00000000 --- a/application/third_party/PHPExcel/Shared/Font.php +++ /dev/null @@ -1,741 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Shared - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - - -/** - * PHPExcel_Shared_Font - * - * @category PHPExcel - * @package PHPExcel_Shared - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - */ -class PHPExcel_Shared_Font -{ - /* Methods for resolving autosize value */ - const AUTOSIZE_METHOD_APPROX = 'approx'; - const AUTOSIZE_METHOD_EXACT = 'exact'; - - private static $autoSizeMethods = array( - self::AUTOSIZE_METHOD_APPROX, - self::AUTOSIZE_METHOD_EXACT, - ); - - /** Character set codes used by BIFF5-8 in Font records */ - const CHARSET_ANSI_LATIN = 0x00; - const CHARSET_SYSTEM_DEFAULT = 0x01; - const CHARSET_SYMBOL = 0x02; - const CHARSET_APPLE_ROMAN = 0x4D; - const CHARSET_ANSI_JAPANESE_SHIFTJIS = 0x80; - const CHARSET_ANSI_KOREAN_HANGUL = 0x81; - const CHARSET_ANSI_KOREAN_JOHAB = 0x82; - const CHARSET_ANSI_CHINESE_SIMIPLIFIED = 0x86; // gb2312 - const CHARSET_ANSI_CHINESE_TRADITIONAL = 0x88; // big5 - const CHARSET_ANSI_GREEK = 0xA1; - const CHARSET_ANSI_TURKISH = 0xA2; - const CHARSET_ANSI_VIETNAMESE = 0xA3; - const CHARSET_ANSI_HEBREW = 0xB1; - const CHARSET_ANSI_ARABIC = 0xB2; - const CHARSET_ANSI_BALTIC = 0xBA; - const CHARSET_ANSI_CYRILLIC = 0xCC; - const CHARSET_ANSI_THAI = 0xDD; - const CHARSET_ANSI_LATIN_II = 0xEE; - const CHARSET_OEM_LATIN_I = 0xFF; - - // XXX: Constants created! - /** Font filenames */ - const ARIAL = 'arial.ttf'; - const ARIAL_BOLD = 'arialbd.ttf'; - const ARIAL_ITALIC = 'ariali.ttf'; - const ARIAL_BOLD_ITALIC = 'arialbi.ttf'; - - const CALIBRI = 'CALIBRI.TTF'; - const CALIBRI_BOLD = 'CALIBRIB.TTF'; - const CALIBRI_ITALIC = 'CALIBRII.TTF'; - const CALIBRI_BOLD_ITALIC = 'CALIBRIZ.TTF'; - - const COMIC_SANS_MS = 'comic.ttf'; - const COMIC_SANS_MS_BOLD = 'comicbd.ttf'; - - const COURIER_NEW = 'cour.ttf'; - const COURIER_NEW_BOLD = 'courbd.ttf'; - const COURIER_NEW_ITALIC = 'couri.ttf'; - const COURIER_NEW_BOLD_ITALIC = 'courbi.ttf'; - - const GEORGIA = 'georgia.ttf'; - const GEORGIA_BOLD = 'georgiab.ttf'; - const GEORGIA_ITALIC = 'georgiai.ttf'; - const GEORGIA_BOLD_ITALIC = 'georgiaz.ttf'; - - const IMPACT = 'impact.ttf'; - - const LIBERATION_SANS = 'LiberationSans-Regular.ttf'; - const LIBERATION_SANS_BOLD = 'LiberationSans-Bold.ttf'; - const LIBERATION_SANS_ITALIC = 'LiberationSans-Italic.ttf'; - const LIBERATION_SANS_BOLD_ITALIC = 'LiberationSans-BoldItalic.ttf'; - - const LUCIDA_CONSOLE = 'lucon.ttf'; - const LUCIDA_SANS_UNICODE = 'l_10646.ttf'; - - const MICROSOFT_SANS_SERIF = 'micross.ttf'; - - const PALATINO_LINOTYPE = 'pala.ttf'; - const PALATINO_LINOTYPE_BOLD = 'palab.ttf'; - const PALATINO_LINOTYPE_ITALIC = 'palai.ttf'; - const PALATINO_LINOTYPE_BOLD_ITALIC = 'palabi.ttf'; - - const SYMBOL = 'symbol.ttf'; - - const TAHOMA = 'tahoma.ttf'; - const TAHOMA_BOLD = 'tahomabd.ttf'; - - const TIMES_NEW_ROMAN = 'times.ttf'; - const TIMES_NEW_ROMAN_BOLD = 'timesbd.ttf'; - const TIMES_NEW_ROMAN_ITALIC = 'timesi.ttf'; - const TIMES_NEW_ROMAN_BOLD_ITALIC = 'timesbi.ttf'; - - const TREBUCHET_MS = 'trebuc.ttf'; - const TREBUCHET_MS_BOLD = 'trebucbd.ttf'; - const TREBUCHET_MS_ITALIC = 'trebucit.ttf'; - const TREBUCHET_MS_BOLD_ITALIC = 'trebucbi.ttf'; - - const VERDANA = 'verdana.ttf'; - const VERDANA_BOLD = 'verdanab.ttf'; - const VERDANA_ITALIC = 'verdanai.ttf'; - const VERDANA_BOLD_ITALIC = 'verdanaz.ttf'; - - /** - * AutoSize method - * - * @var string - */ - private static $autoSizeMethod = self::AUTOSIZE_METHOD_APPROX; - - /** - * Path to folder containing TrueType font .ttf files - * - * @var string - */ - private static $trueTypeFontPath = null; - - /** - * How wide is a default column for a given default font and size? - * Empirical data found by inspecting real Excel files and reading off the pixel width - * in Microsoft Office Excel 2007. - * - * @var array - */ - public static $defaultColumnWidths = array( - 'Arial' => array( - 1 => array('px' => 24, 'width' => 12.00000000), - 2 => array('px' => 24, 'width' => 12.00000000), - 3 => array('px' => 32, 'width' => 10.66406250), - 4 => array('px' => 32, 'width' => 10.66406250), - 5 => array('px' => 40, 'width' => 10.00000000), - 6 => array('px' => 48, 'width' => 9.59765625), - 7 => array('px' => 48, 'width' => 9.59765625), - 8 => array('px' => 56, 'width' => 9.33203125), - 9 => array('px' => 64, 'width' => 9.14062500), - 10 => array('px' => 64, 'width' => 9.14062500), - ), - 'Calibri' => array( - 1 => array('px' => 24, 'width' => 12.00000000), - 2 => array('px' => 24, 'width' => 12.00000000), - 3 => array('px' => 32, 'width' => 10.66406250), - 4 => array('px' => 32, 'width' => 10.66406250), - 5 => array('px' => 40, 'width' => 10.00000000), - 6 => array('px' => 48, 'width' => 9.59765625), - 7 => array('px' => 48, 'width' => 9.59765625), - 8 => array('px' => 56, 'width' => 9.33203125), - 9 => array('px' => 56, 'width' => 9.33203125), - 10 => array('px' => 64, 'width' => 9.14062500), - 11 => array('px' => 64, 'width' => 9.14062500), - ), - 'Verdana' => array( - 1 => array('px' => 24, 'width' => 12.00000000), - 2 => array('px' => 24, 'width' => 12.00000000), - 3 => array('px' => 32, 'width' => 10.66406250), - 4 => array('px' => 32, 'width' => 10.66406250), - 5 => array('px' => 40, 'width' => 10.00000000), - 6 => array('px' => 48, 'width' => 9.59765625), - 7 => array('px' => 48, 'width' => 9.59765625), - 8 => array('px' => 64, 'width' => 9.14062500), - 9 => array('px' => 72, 'width' => 9.00000000), - 10 => array('px' => 72, 'width' => 9.00000000), - ), - ); - - /** - * Set autoSize method - * - * @param string $pValue - * @return boolean Success or failure - */ - public static function setAutoSizeMethod($pValue = self::AUTOSIZE_METHOD_APPROX) - { - if (!in_array($pValue, self::$autoSizeMethods)) { - return false; - } - self::$autoSizeMethod = $pValue; - - return true; - } - - /** - * Get autoSize method - * - * @return string - */ - public static function getAutoSizeMethod() - { - return self::$autoSizeMethod; - } - - /** - * Set the path to the folder containing .ttf files. There should be a trailing slash. - * Typical locations on variout some platforms: - * <ul> - * <li>C:/Windows/Fonts/</li> - * <li>/usr/share/fonts/truetype/</li> - * <li>~/.fonts/</li> - * </ul> - * - * @param string $pValue - */ - public static function setTrueTypeFontPath($pValue = '') - { - self::$trueTypeFontPath = $pValue; - } - - /** - * Get the path to the folder containing .ttf files. - * - * @return string - */ - public static function getTrueTypeFontPath() - { - return self::$trueTypeFontPath; - } - - /** - * Calculate an (approximate) OpenXML column width, based on font size and text contained - * - * @param PHPExcel_Style_Font $font Font object - * @param PHPExcel_RichText|string $cellText Text to calculate width - * @param integer $rotation Rotation angle - * @param PHPExcel_Style_Font|NULL $defaultFont Font object - * @return integer Column width - */ - public static function calculateColumnWidth(PHPExcel_Style_Font $font, $cellText = '', $rotation = 0, PHPExcel_Style_Font $defaultFont = null) - { - // If it is rich text, use plain text - if ($cellText instanceof PHPExcel_RichText) { - $cellText = $cellText->getPlainText(); - } - - // Special case if there are one or more newline characters ("\n") - if (strpos($cellText, "\n") !== false) { - $lineTexts = explode("\n", $cellText); - $lineWidths = array(); - foreach ($lineTexts as $lineText) { - $lineWidths[] = self::calculateColumnWidth($font, $lineText, $rotation = 0, $defaultFont); - } - return max($lineWidths); // width of longest line in cell - } - - // Try to get the exact text width in pixels - $approximate = self::$autoSizeMethod == self::AUTOSIZE_METHOD_APPROX; - if (!$approximate) { - $columnWidthAdjust = ceil(self::getTextWidthPixelsExact('n', $font, 0) * 1.07); - try { - // Width of text in pixels excl. padding - // and addition because Excel adds some padding, just use approx width of 'n' glyph - $columnWidth = self::getTextWidthPixelsExact($cellText, $font, $rotation) + $columnWidthAdjust; - } catch (PHPExcel_Exception $e) { - $approximate = true; - } - } - - if ($approximate) { - $columnWidthAdjust = self::getTextWidthPixelsApprox('n', $font, 0); - // Width of text in pixels excl. padding, approximation - // and addition because Excel adds some padding, just use approx width of 'n' glyph - $columnWidth = self::getTextWidthPixelsApprox($cellText, $font, $rotation) + $columnWidthAdjust; - } - - // Convert from pixel width to column width - $columnWidth = PHPExcel_Shared_Drawing::pixelsToCellDimension($columnWidth, $defaultFont); - - // Return - return round($columnWidth, 6); - } - - /** - * Get GD text width in pixels for a string of text in a certain font at a certain rotation angle - * - * @param string $text - * @param PHPExcel_Style_Font - * @param int $rotation - * @return int - * @throws PHPExcel_Exception - */ - public static function getTextWidthPixelsExact($text, PHPExcel_Style_Font $font, $rotation = 0) - { - if (!function_exists('imagettfbbox')) { - throw new PHPExcel_Exception('GD library needs to be enabled'); - } - - // font size should really be supplied in pixels in GD2, - // but since GD2 seems to assume 72dpi, pixels and points are the same - $fontFile = self::getTrueTypeFontFileFromFont($font); - $textBox = imagettfbbox($font->getSize(), $rotation, $fontFile, $text); - - // Get corners positions - $lowerLeftCornerX = $textBox[0]; -// $lowerLeftCornerY = $textBox[1]; - $lowerRightCornerX = $textBox[2]; -// $lowerRightCornerY = $textBox[3]; - $upperRightCornerX = $textBox[4]; -// $upperRightCornerY = $textBox[5]; - $upperLeftCornerX = $textBox[6]; -// $upperLeftCornerY = $textBox[7]; - - // Consider the rotation when calculating the width - $textWidth = max($lowerRightCornerX - $upperLeftCornerX, $upperRightCornerX - $lowerLeftCornerX); - - return $textWidth; - } - - /** - * Get approximate width in pixels for a string of text in a certain font at a certain rotation angle - * - * @param string $columnText - * @param PHPExcel_Style_Font $font - * @param int $rotation - * @return int Text width in pixels (no padding added) - */ - public static function getTextWidthPixelsApprox($columnText, PHPExcel_Style_Font $font = null, $rotation = 0) - { - $fontName = $font->getName(); - $fontSize = $font->getSize(); - - // Calculate column width in pixels. We assume fixed glyph width. Result varies with font name and size. - switch ($fontName) { - case 'Calibri': - // value 8.26 was found via interpolation by inspecting real Excel files with Calibri 11 font. - $columnWidth = (int) (8.26 * PHPExcel_Shared_String::CountCharacters($columnText)); - $columnWidth = $columnWidth * $fontSize / 11; // extrapolate from font size - break; - - case 'Arial': - // value 7 was found via interpolation by inspecting real Excel files with Arial 10 font. -// $columnWidth = (int) (7 * PHPExcel_Shared_String::CountCharacters($columnText)); - // value 8 was set because of experience in different exports at Arial 10 font. - $columnWidth = (int) (8 * PHPExcel_Shared_String::CountCharacters($columnText)); - $columnWidth = $columnWidth * $fontSize / 10; // extrapolate from font size - break; - - case 'Verdana': - // value 8 was found via interpolation by inspecting real Excel files with Verdana 10 font. - $columnWidth = (int) (8 * PHPExcel_Shared_String::CountCharacters($columnText)); - $columnWidth = $columnWidth * $fontSize / 10; // extrapolate from font size - break; - - default: - // just assume Calibri - $columnWidth = (int) (8.26 * PHPExcel_Shared_String::CountCharacters($columnText)); - $columnWidth = $columnWidth * $fontSize / 11; // extrapolate from font size - break; - } - - // Calculate approximate rotated column width - if ($rotation !== 0) { - if ($rotation == -165) { - // stacked text - $columnWidth = 4; // approximation - } else { - // rotated text - $columnWidth = $columnWidth * cos(deg2rad($rotation)) - + $fontSize * abs(sin(deg2rad($rotation))) / 5; // approximation - } - } - - // pixel width is an integer - return (int) $columnWidth; - } - - /** - * Calculate an (approximate) pixel size, based on a font points size - * - * @param int $fontSizeInPoints Font size (in points) - * @return int Font size (in pixels) - */ - public static function fontSizeToPixels($fontSizeInPoints = 11) - { - return (int) ((4 / 3) * $fontSizeInPoints); - } - - /** - * Calculate an (approximate) pixel size, based on inch size - * - * @param int $sizeInInch Font size (in inch) - * @return int Size (in pixels) - */ - public static function inchSizeToPixels($sizeInInch = 1) - { - return ($sizeInInch * 96); - } - - /** - * Calculate an (approximate) pixel size, based on centimeter size - * - * @param int $sizeInCm Font size (in centimeters) - * @return int Size (in pixels) - */ - public static function centimeterSizeToPixels($sizeInCm = 1) - { - return ($sizeInCm * 37.795275591); - } - - /** - * Returns the font path given the font - * - * @param PHPExcel_Style_Font - * @return string Path to TrueType font file - */ - public static function getTrueTypeFontFileFromFont($font) - { - if (!file_exists(self::$trueTypeFontPath) || !is_dir(self::$trueTypeFontPath)) { - throw new PHPExcel_Exception('Valid directory to TrueType Font files not specified'); - } - - $name = $font->getName(); - $bold = $font->getBold(); - $italic = $font->getItalic(); - - // Check if we can map font to true type font file - switch ($name) { - case 'Arial': - $fontFile = ( - $bold ? ($italic ? self::ARIAL_BOLD_ITALIC : self::ARIAL_BOLD) - : ($italic ? self::ARIAL_ITALIC : self::ARIAL) - ); - break; - case 'Calibri': - $fontFile = ( - $bold ? ($italic ? self::CALIBRI_BOLD_ITALIC : self::CALIBRI_BOLD) - : ($italic ? self::CALIBRI_ITALIC : self::CALIBRI) - ); - break; - case 'Courier New': - $fontFile = ( - $bold ? ($italic ? self::COURIER_NEW_BOLD_ITALIC : self::COURIER_NEW_BOLD) - : ($italic ? self::COURIER_NEW_ITALIC : self::COURIER_NEW) - ); - break; - case 'Comic Sans MS': - $fontFile = ( - $bold ? self::COMIC_SANS_MS_BOLD : self::COMIC_SANS_MS - ); - break; - case 'Georgia': - $fontFile = ( - $bold ? ($italic ? self::GEORGIA_BOLD_ITALIC : self::GEORGIA_BOLD) - : ($italic ? self::GEORGIA_ITALIC : self::GEORGIA) - ); - break; - case 'Impact': - $fontFile = self::IMPACT; - break; - case 'Liberation Sans': - $fontFile = ( - $bold ? ($italic ? self::LIBERATION_SANS_BOLD_ITALIC : self::LIBERATION_SANS_BOLD) - : ($italic ? self::LIBERATION_SANS_ITALIC : self::LIBERATION_SANS) - ); - break; - case 'Lucida Console': - $fontFile = self::LUCIDA_CONSOLE; - break; - case 'Lucida Sans Unicode': - $fontFile = self::LUCIDA_SANS_UNICODE; - break; - case 'Microsoft Sans Serif': - $fontFile = self::MICROSOFT_SANS_SERIF; - break; - case 'Palatino Linotype': - $fontFile = ( - $bold ? ($italic ? self::PALATINO_LINOTYPE_BOLD_ITALIC : self::PALATINO_LINOTYPE_BOLD) - : ($italic ? self::PALATINO_LINOTYPE_ITALIC : self::PALATINO_LINOTYPE) - ); - break; - case 'Symbol': - $fontFile = self::SYMBOL; - break; - case 'Tahoma': - $fontFile = ( - $bold ? self::TAHOMA_BOLD : self::TAHOMA - ); - break; - case 'Times New Roman': - $fontFile = ( - $bold ? ($italic ? self::TIMES_NEW_ROMAN_BOLD_ITALIC : self::TIMES_NEW_ROMAN_BOLD) - : ($italic ? self::TIMES_NEW_ROMAN_ITALIC : self::TIMES_NEW_ROMAN) - ); - break; - case 'Trebuchet MS': - $fontFile = ( - $bold ? ($italic ? self::TREBUCHET_MS_BOLD_ITALIC : self::TREBUCHET_MS_BOLD) - : ($italic ? self::TREBUCHET_MS_ITALIC : self::TREBUCHET_MS) - ); - break; - case 'Verdana': - $fontFile = ( - $bold ? ($italic ? self::VERDANA_BOLD_ITALIC : self::VERDANA_BOLD) - : ($italic ? self::VERDANA_ITALIC : self::VERDANA) - ); - break; - default: - throw new PHPExcel_Exception('Unknown font name "'. $name .'". Cannot map to TrueType font file'); - break; - } - - $fontFile = self::$trueTypeFontPath . $fontFile; - - // Check if file actually exists - if (!file_exists($fontFile)) { - throw new PHPExcel_Exception('TrueType Font file not found'); - } - - return $fontFile; - } - - /** - * Returns the associated charset for the font name. - * - * @param string $name Font name - * @return int Character set code - */ - public static function getCharsetFromFontName($name) - { - switch ($name) { - // Add more cases. Check FONT records in real Excel files. - case 'EucrosiaUPC': - return self::CHARSET_ANSI_THAI; - case 'Wingdings': - return self::CHARSET_SYMBOL; - case 'Wingdings 2': - return self::CHARSET_SYMBOL; - case 'Wingdings 3': - return self::CHARSET_SYMBOL; - default: - return self::CHARSET_ANSI_LATIN; - } - } - - /** - * Get the effective column width for columns without a column dimension or column with width -1 - * For example, for Calibri 11 this is 9.140625 (64 px) - * - * @param PHPExcel_Style_Font $font The workbooks default font - * @param boolean $pPixels true = return column width in pixels, false = return in OOXML units - * @return mixed Column width - */ - public static function getDefaultColumnWidthByFont(PHPExcel_Style_Font $font, $pPixels = false) - { - if (isset(self::$defaultColumnWidths[$font->getName()][$font->getSize()])) { - // Exact width can be determined - $columnWidth = $pPixels ? - self::$defaultColumnWidths[$font->getName()][$font->getSize()]['px'] - : self::$defaultColumnWidths[$font->getName()][$font->getSize()]['width']; - - } else { - // We don't have data for this particular font and size, use approximation by - // extrapolating from Calibri 11 - $columnWidth = $pPixels ? - self::$defaultColumnWidths['Calibri'][11]['px'] - : self::$defaultColumnWidths['Calibri'][11]['width']; - $columnWidth = $columnWidth * $font->getSize() / 11; - - // Round pixels to closest integer - if ($pPixels) { - $columnWidth = (int) round($columnWidth); - } - } - - return $columnWidth; - } - - /** - * Get the effective row height for rows without a row dimension or rows with height -1 - * For example, for Calibri 11 this is 15 points - * - * @param PHPExcel_Style_Font $font The workbooks default font - * @return float Row height in points - */ - public static function getDefaultRowHeightByFont(PHPExcel_Style_Font $font) - { - switch ($font->getName()) { - case 'Arial': - switch ($font->getSize()) { - case 10: - // inspection of Arial 10 workbook says 12.75pt ~17px - $rowHeight = 12.75; - break; - case 9: - // inspection of Arial 9 workbook says 12.00pt ~16px - $rowHeight = 12; - break; - case 8: - // inspection of Arial 8 workbook says 11.25pt ~15px - $rowHeight = 11.25; - break; - case 7: - // inspection of Arial 7 workbook says 9.00pt ~12px - $rowHeight = 9; - break; - case 6: - case 5: - // inspection of Arial 5,6 workbook says 8.25pt ~11px - $rowHeight = 8.25; - break; - case 4: - // inspection of Arial 4 workbook says 6.75pt ~9px - $rowHeight = 6.75; - break; - case 3: - // inspection of Arial 3 workbook says 6.00pt ~8px - $rowHeight = 6; - break; - case 2: - case 1: - // inspection of Arial 1,2 workbook says 5.25pt ~7px - $rowHeight = 5.25; - break; - default: - // use Arial 10 workbook as an approximation, extrapolation - $rowHeight = 12.75 * $font->getSize() / 10; - break; - } - break; - - case 'Calibri': - switch ($font->getSize()) { - case 11: - // inspection of Calibri 11 workbook says 15.00pt ~20px - $rowHeight = 15; - break; - case 10: - // inspection of Calibri 10 workbook says 12.75pt ~17px - $rowHeight = 12.75; - break; - case 9: - // inspection of Calibri 9 workbook says 12.00pt ~16px - $rowHeight = 12; - break; - case 8: - // inspection of Calibri 8 workbook says 11.25pt ~15px - $rowHeight = 11.25; - break; - case 7: - // inspection of Calibri 7 workbook says 9.00pt ~12px - $rowHeight = 9; - break; - case 6: - case 5: - // inspection of Calibri 5,6 workbook says 8.25pt ~11px - $rowHeight = 8.25; - break; - case 4: - // inspection of Calibri 4 workbook says 6.75pt ~9px - $rowHeight = 6.75; - break; - case 3: - // inspection of Calibri 3 workbook says 6.00pt ~8px - $rowHeight = 6.00; - break; - case 2: - case 1: - // inspection of Calibri 1,2 workbook says 5.25pt ~7px - $rowHeight = 5.25; - break; - default: - // use Calibri 11 workbook as an approximation, extrapolation - $rowHeight = 15 * $font->getSize() / 11; - break; - } - break; - - case 'Verdana': - switch ($font->getSize()) { - case 10: - // inspection of Verdana 10 workbook says 12.75pt ~17px - $rowHeight = 12.75; - break; - case 9: - // inspection of Verdana 9 workbook says 11.25pt ~15px - $rowHeight = 11.25; - break; - case 8: - // inspection of Verdana 8 workbook says 10.50pt ~14px - $rowHeight = 10.50; - break; - case 7: - // inspection of Verdana 7 workbook says 9.00pt ~12px - $rowHeight = 9.00; - break; - case 6: - case 5: - // inspection of Verdana 5,6 workbook says 8.25pt ~11px - $rowHeight = 8.25; - break; - case 4: - // inspection of Verdana 4 workbook says 6.75pt ~9px - $rowHeight = 6.75; - break; - case 3: - // inspection of Verdana 3 workbook says 6.00pt ~8px - $rowHeight = 6; - break; - case 2: - case 1: - // inspection of Verdana 1,2 workbook says 5.25pt ~7px - $rowHeight = 5.25; - break; - default: - // use Verdana 10 workbook as an approximation, extrapolation - $rowHeight = 12.75 * $font->getSize() / 10; - break; - } - break; - default: - // just use Calibri as an approximation - $rowHeight = 15 * $font->getSize() / 11; - break; - } - - return $rowHeight; - } -} diff --git a/application/third_party/PHPExcel/Shared/JAMA/CHANGELOG.TXT b/application/third_party/PHPExcel/Shared/JAMA/CHANGELOG.TXT deleted file mode 100644 index 1c18a5da..00000000 --- a/application/third_party/PHPExcel/Shared/JAMA/CHANGELOG.TXT +++ /dev/null @@ -1,16 +0,0 @@ -Mar 1, 2005 11:15 AST by PM - -+ For consistency, renamed Math.php to Maths.java, utils to util, - tests to test, docs to doc - - -+ Removed conditional logic from top of Matrix class. - -+ Switched to using hypo function in Maths.php for all php-hypot calls. - NOTE TO SELF: Need to make sure that all decompositions have been - switched over to using the bundled hypo. - -Feb 25, 2005 at 10:00 AST by PM - -+ Recommend using simpler Error.php instead of JAMA_Error.php but - can be persuaded otherwise. - diff --git a/application/third_party/PHPExcel/Shared/JAMA/CholeskyDecomposition.php b/application/third_party/PHPExcel/Shared/JAMA/CholeskyDecomposition.php deleted file mode 100644 index d68109b3..00000000 --- a/application/third_party/PHPExcel/Shared/JAMA/CholeskyDecomposition.php +++ /dev/null @@ -1,148 +0,0 @@ -<?php -/** - * @package JAMA - * - * Cholesky decomposition class - * - * For a symmetric, positive definite matrix A, the Cholesky decomposition - * is an lower triangular matrix L so that A = L*L'. - * - * If the matrix is not symmetric or positive definite, the constructor - * returns a partial decomposition and sets an internal flag that may - * be queried by the isSPD() method. - * - * @author Paul Meagher - * @author Michael Bommarito - * @version 1.2 - */ -class CholeskyDecomposition -{ - /** - * Decomposition storage - * @var array - * @access private - */ - private $L = array(); - - /** - * Matrix row and column dimension - * @var int - * @access private - */ - private $m; - - /** - * Symmetric positive definite flag - * @var boolean - * @access private - */ - private $isspd = true; - - /** - * CholeskyDecomposition - * - * Class constructor - decomposes symmetric positive definite matrix - * @param mixed Matrix square symmetric positive definite matrix - */ - public function __construct($A = null) - { - if ($A instanceof Matrix) { - $this->L = $A->getArray(); - $this->m = $A->getRowDimension(); - - for ($i = 0; $i < $this->m; ++$i) { - for ($j = $i; $j < $this->m; ++$j) { - for ($sum = $this->L[$i][$j], $k = $i - 1; $k >= 0; --$k) { - $sum -= $this->L[$i][$k] * $this->L[$j][$k]; - } - if ($i == $j) { - if ($sum >= 0) { - $this->L[$i][$i] = sqrt($sum); - } else { - $this->isspd = false; - } - } else { - if ($this->L[$i][$i] != 0) { - $this->L[$j][$i] = $sum / $this->L[$i][$i]; - } - } - } - - for ($k = $i+1; $k < $this->m; ++$k) { - $this->L[$i][$k] = 0.0; - } - } - } else { - throw new PHPExcel_Calculation_Exception(JAMAError(ARGUMENT_TYPE_EXCEPTION)); - } - } // function __construct() - - /** - * Is the matrix symmetric and positive definite? - * - * @return boolean - */ - public function isSPD() - { - return $this->isspd; - } // function isSPD() - - /** - * getL - * - * Return triangular factor. - * @return Matrix Lower triangular matrix - */ - public function getL() - { - return new Matrix($this->L); - } // function getL() - - /** - * Solve A*X = B - * - * @param $B Row-equal matrix - * @return Matrix L * L' * X = B - */ - public function solve($B = null) - { - if ($B instanceof Matrix) { - if ($B->getRowDimension() == $this->m) { - if ($this->isspd) { - $X = $B->getArrayCopy(); - $nx = $B->getColumnDimension(); - - for ($k = 0; $k < $this->m; ++$k) { - for ($i = $k + 1; $i < $this->m; ++$i) { - for ($j = 0; $j < $nx; ++$j) { - $X[$i][$j] -= $X[$k][$j] * $this->L[$i][$k]; - } - } - for ($j = 0; $j < $nx; ++$j) { - $X[$k][$j] /= $this->L[$k][$k]; - } - } - - for ($k = $this->m - 1; $k >= 0; --$k) { - for ($j = 0; $j < $nx; ++$j) { - $X[$k][$j] /= $this->L[$k][$k]; - } - for ($i = 0; $i < $k; ++$i) { - for ($j = 0; $j < $nx; ++$j) { - $X[$i][$j] -= $X[$k][$j] * $this->L[$k][$i]; - } - } - } - - return new Matrix($X, $this->m, $nx); - } else { - throw new PHPExcel_Calculation_Exception(JAMAError(MatrixSPDException)); - } - } else { - throw new PHPExcel_Calculation_Exception(JAMAError(MATRIX_DIMENSION_EXCEPTION)); - } - } else { - throw new PHPExcel_Calculation_Exception(JAMAError(ARGUMENT_TYPE_EXCEPTION)); - } - } // function solve() -} diff --git a/application/third_party/PHPExcel/Shared/JAMA/EigenvalueDecomposition.php b/application/third_party/PHPExcel/Shared/JAMA/EigenvalueDecomposition.php deleted file mode 100644 index d4ae3979..00000000 --- a/application/third_party/PHPExcel/Shared/JAMA/EigenvalueDecomposition.php +++ /dev/null @@ -1,864 +0,0 @@ -<?php -/** - * @package JAMA - * - * Class to obtain eigenvalues and eigenvectors of a real matrix. - * - * If A is symmetric, then A = V*D*V' where the eigenvalue matrix D - * is diagonal and the eigenvector matrix V is orthogonal (i.e. - * A = V.times(D.times(V.transpose())) and V.times(V.transpose()) - * equals the identity matrix). - * - * If A is not symmetric, then the eigenvalue matrix D is block diagonal - * with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, - * lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The - * columns of V represent the eigenvectors in the sense that A*V = V*D, - * i.e. A.times(V) equals V.times(D). The matrix V may be badly - * conditioned, or even singular, so the validity of the equation - * A = V*D*inverse(V) depends upon V.cond(). - * - * @author Paul Meagher - * @license PHP v3.0 - * @version 1.1 - */ -class EigenvalueDecomposition -{ - /** - * Row and column dimension (square matrix). - * @var int - */ - private $n; - - /** - * Internal symmetry flag. - * @var int - */ - private $issymmetric; - - /** - * Arrays for internal storage of eigenvalues. - * @var array - */ - private $d = array(); - private $e = array(); - - /** - * Array for internal storage of eigenvectors. - * @var array - */ - private $V = array(); - - /** - * Array for internal storage of nonsymmetric Hessenberg form. - * @var array - */ - private $H = array(); - - /** - * Working storage for nonsymmetric algorithm. - * @var array - */ - private $ort; - - /** - * Used for complex scalar division. - * @var float - */ - private $cdivr; - private $cdivi; - - /** - * Symmetric Householder reduction to tridiagonal form. - * - * @access private - */ - private function tred2() - { - // This is derived from the Algol procedures tred2 by - // Bowdler, Martin, Reinsch, and Wilkinson, Handbook for - // Auto. Comp., Vol.ii-Linear Algebra, and the corresponding - // Fortran subroutine in EISPACK. - $this->d = $this->V[$this->n-1]; - // Householder reduction to tridiagonal form. - for ($i = $this->n-1; $i > 0; --$i) { - $i_ = $i -1; - // Scale to avoid under/overflow. - $h = $scale = 0.0; - $scale += array_sum(array_map(abs, $this->d)); - if ($scale == 0.0) { - $this->e[$i] = $this->d[$i_]; - $this->d = array_slice($this->V[$i_], 0, $i_); - for ($j = 0; $j < $i; ++$j) { - $this->V[$j][$i] = $this->V[$i][$j] = 0.0; - } - } else { - // Generate Householder vector. - for ($k = 0; $k < $i; ++$k) { - $this->d[$k] /= $scale; - $h += pow($this->d[$k], 2); - } - $f = $this->d[$i_]; - $g = sqrt($h); - if ($f > 0) { - $g = -$g; - } - $this->e[$i] = $scale * $g; - $h = $h - $f * $g; - $this->d[$i_] = $f - $g; - for ($j = 0; $j < $i; ++$j) { - $this->e[$j] = 0.0; - } - // Apply similarity transformation to remaining columns. - for ($j = 0; $j < $i; ++$j) { - $f = $this->d[$j]; - $this->V[$j][$i] = $f; - $g = $this->e[$j] + $this->V[$j][$j] * $f; - for ($k = $j+1; $k <= $i_; ++$k) { - $g += $this->V[$k][$j] * $this->d[$k]; - $this->e[$k] += $this->V[$k][$j] * $f; - } - $this->e[$j] = $g; - } - $f = 0.0; - for ($j = 0; $j < $i; ++$j) { - $this->e[$j] /= $h; - $f += $this->e[$j] * $this->d[$j]; - } - $hh = $f / (2 * $h); - for ($j=0; $j < $i; ++$j) { - $this->e[$j] -= $hh * $this->d[$j]; - } - for ($j = 0; $j < $i; ++$j) { - $f = $this->d[$j]; - $g = $this->e[$j]; - for ($k = $j; $k <= $i_; ++$k) { - $this->V[$k][$j] -= ($f * $this->e[$k] + $g * $this->d[$k]); - } - $this->d[$j] = $this->V[$i-1][$j]; - $this->V[$i][$j] = 0.0; - } - } - $this->d[$i] = $h; - } - - // Accumulate transformations. - for ($i = 0; $i < $this->n-1; ++$i) { - $this->V[$this->n-1][$i] = $this->V[$i][$i]; - $this->V[$i][$i] = 1.0; - $h = $this->d[$i+1]; - if ($h != 0.0) { - for ($k = 0; $k <= $i; ++$k) { - $this->d[$k] = $this->V[$k][$i+1] / $h; - } - for ($j = 0; $j <= $i; ++$j) { - $g = 0.0; - for ($k = 0; $k <= $i; ++$k) { - $g += $this->V[$k][$i+1] * $this->V[$k][$j]; - } - for ($k = 0; $k <= $i; ++$k) { - $this->V[$k][$j] -= $g * $this->d[$k]; - } - } - } - for ($k = 0; $k <= $i; ++$k) { - $this->V[$k][$i+1] = 0.0; - } - } - - $this->d = $this->V[$this->n-1]; - $this->V[$this->n-1] = array_fill(0, $j, 0.0); - $this->V[$this->n-1][$this->n-1] = 1.0; - $this->e[0] = 0.0; - } - - /** - * Symmetric tridiagonal QL algorithm. - * - * This is derived from the Algol procedures tql2, by - * Bowdler, Martin, Reinsch, and Wilkinson, Handbook for - * Auto. Comp., Vol.ii-Linear Algebra, and the corresponding - * Fortran subroutine in EISPACK. - * - * @access private - */ - private function tql2() - { - for ($i = 1; $i < $this->n; ++$i) { - $this->e[$i-1] = $this->e[$i]; - } - $this->e[$this->n-1] = 0.0; - $f = 0.0; - $tst1 = 0.0; - $eps = pow(2.0, -52.0); - - for ($l = 0; $l < $this->n; ++$l) { - // Find small subdiagonal element - $tst1 = max($tst1, abs($this->d[$l]) + abs($this->e[$l])); - $m = $l; - while ($m < $this->n) { - if (abs($this->e[$m]) <= $eps * $tst1) { - break; - } - ++$m; - } - // If m == l, $this->d[l] is an eigenvalue, - // otherwise, iterate. - if ($m > $l) { - $iter = 0; - do { - // Could check iteration count here. - $iter += 1; - // Compute implicit shift - $g = $this->d[$l]; - $p = ($this->d[$l+1] - $g) / (2.0 * $this->e[$l]); - $r = hypo($p, 1.0); - if ($p < 0) { - $r *= -1; - } - $this->d[$l] = $this->e[$l] / ($p + $r); - $this->d[$l+1] = $this->e[$l] * ($p + $r); - $dl1 = $this->d[$l+1]; - $h = $g - $this->d[$l]; - for ($i = $l + 2; $i < $this->n; ++$i) { - $this->d[$i] -= $h; - } - $f += $h; - // Implicit QL transformation. - $p = $this->d[$m]; - $c = 1.0; - $c2 = $c3 = $c; - $el1 = $this->e[$l + 1]; - $s = $s2 = 0.0; - for ($i = $m-1; $i >= $l; --$i) { - $c3 = $c2; - $c2 = $c; - $s2 = $s; - $g = $c * $this->e[$i]; - $h = $c * $p; - $r = hypo($p, $this->e[$i]); - $this->e[$i+1] = $s * $r; - $s = $this->e[$i] / $r; - $c = $p / $r; - $p = $c * $this->d[$i] - $s * $g; - $this->d[$i+1] = $h + $s * ($c * $g + $s * $this->d[$i]); - // Accumulate transformation. - for ($k = 0; $k < $this->n; ++$k) { - $h = $this->V[$k][$i+1]; - $this->V[$k][$i+1] = $s * $this->V[$k][$i] + $c * $h; - $this->V[$k][$i] = $c * $this->V[$k][$i] - $s * $h; - } - } - $p = -$s * $s2 * $c3 * $el1 * $this->e[$l] / $dl1; - $this->e[$l] = $s * $p; - $this->d[$l] = $c * $p; - // Check for convergence. - } while (abs($this->e[$l]) > $eps * $tst1); - } - $this->d[$l] = $this->d[$l] + $f; - $this->e[$l] = 0.0; - } - - // Sort eigenvalues and corresponding vectors. - for ($i = 0; $i < $this->n - 1; ++$i) { - $k = $i; - $p = $this->d[$i]; - for ($j = $i+1; $j < $this->n; ++$j) { - if ($this->d[$j] < $p) { - $k = $j; - $p = $this->d[$j]; - } - } - if ($k != $i) { - $this->d[$k] = $this->d[$i]; - $this->d[$i] = $p; - for ($j = 0; $j < $this->n; ++$j) { - $p = $this->V[$j][$i]; - $this->V[$j][$i] = $this->V[$j][$k]; - $this->V[$j][$k] = $p; - } - } - } - } - - /** - * Nonsymmetric reduction to Hessenberg form. - * - * This is derived from the Algol procedures orthes and ortran, - * by Martin and Wilkinson, Handbook for Auto. Comp., - * Vol.ii-Linear Algebra, and the corresponding - * Fortran subroutines in EISPACK. - * - * @access private - */ - private function orthes() - { - $low = 0; - $high = $this->n-1; - - for ($m = $low+1; $m <= $high-1; ++$m) { - // Scale column. - $scale = 0.0; - for ($i = $m; $i <= $high; ++$i) { - $scale = $scale + abs($this->H[$i][$m-1]); - } - if ($scale != 0.0) { - // Compute Householder transformation. - $h = 0.0; - for ($i = $high; $i >= $m; --$i) { - $this->ort[$i] = $this->H[$i][$m-1] / $scale; - $h += $this->ort[$i] * $this->ort[$i]; - } - $g = sqrt($h); - if ($this->ort[$m] > 0) { - $g *= -1; - } - $h -= $this->ort[$m] * $g; - $this->ort[$m] -= $g; - // Apply Householder similarity transformation - // H = (I -u * u' / h) * H * (I -u * u') / h) - for ($j = $m; $j < $this->n; ++$j) { - $f = 0.0; - for ($i = $high; $i >= $m; --$i) { - $f += $this->ort[$i] * $this->H[$i][$j]; - } - $f /= $h; - for ($i = $m; $i <= $high; ++$i) { - $this->H[$i][$j] -= $f * $this->ort[$i]; - } - } - for ($i = 0; $i <= $high; ++$i) { - $f = 0.0; - for ($j = $high; $j >= $m; --$j) { - $f += $this->ort[$j] * $this->H[$i][$j]; - } - $f = $f / $h; - for ($j = $m; $j <= $high; ++$j) { - $this->H[$i][$j] -= $f * $this->ort[$j]; - } - } - $this->ort[$m] = $scale * $this->ort[$m]; - $this->H[$m][$m-1] = $scale * $g; - } - } - - // Accumulate transformations (Algol's ortran). - for ($i = 0; $i < $this->n; ++$i) { - for ($j = 0; $j < $this->n; ++$j) { - $this->V[$i][$j] = ($i == $j ? 1.0 : 0.0); - } - } - for ($m = $high-1; $m >= $low+1; --$m) { - if ($this->H[$m][$m-1] != 0.0) { - for ($i = $m+1; $i <= $high; ++$i) { - $this->ort[$i] = $this->H[$i][$m-1]; - } - for ($j = $m; $j <= $high; ++$j) { - $g = 0.0; - for ($i = $m; $i <= $high; ++$i) { - $g += $this->ort[$i] * $this->V[$i][$j]; - } - // Double division avoids possible underflow - $g = ($g / $this->ort[$m]) / $this->H[$m][$m-1]; - for ($i = $m; $i <= $high; ++$i) { - $this->V[$i][$j] += $g * $this->ort[$i]; - } - } - } - } - } - - /** - * Performs complex division. - * - * @access private - */ - private function cdiv($xr, $xi, $yr, $yi) - { - if (abs($yr) > abs($yi)) { - $r = $yi / $yr; - $d = $yr + $r * $yi; - $this->cdivr = ($xr + $r * $xi) / $d; - $this->cdivi = ($xi - $r * $xr) / $d; - } else { - $r = $yr / $yi; - $d = $yi + $r * $yr; - $this->cdivr = ($r * $xr + $xi) / $d; - $this->cdivi = ($r * $xi - $xr) / $d; - } - } - - /** - * Nonsymmetric reduction from Hessenberg to real Schur form. - * - * Code is derived from the Algol procedure hqr2, - * by Martin and Wilkinson, Handbook for Auto. Comp., - * Vol.ii-Linear Algebra, and the corresponding - * Fortran subroutine in EISPACK. - * - * @access private - */ - private function hqr2() - { - // Initialize - $nn = $this->n; - $n = $nn - 1; - $low = 0; - $high = $nn - 1; - $eps = pow(2.0, -52.0); - $exshift = 0.0; - $p = $q = $r = $s = $z = 0; - // Store roots isolated by balanc and compute matrix norm - $norm = 0.0; - - for ($i = 0; $i < $nn; ++$i) { - if (($i < $low) or ($i > $high)) { - $this->d[$i] = $this->H[$i][$i]; - $this->e[$i] = 0.0; - } - for ($j = max($i-1, 0); $j < $nn; ++$j) { - $norm = $norm + abs($this->H[$i][$j]); - } - } - - // Outer loop over eigenvalue index - $iter = 0; - while ($n >= $low) { - // Look for single small sub-diagonal element - $l = $n; - while ($l > $low) { - $s = abs($this->H[$l-1][$l-1]) + abs($this->H[$l][$l]); - if ($s == 0.0) { - $s = $norm; - } - if (abs($this->H[$l][$l-1]) < $eps * $s) { - break; - } - --$l; - } - // Check for convergence - // One root found - if ($l == $n) { - $this->H[$n][$n] = $this->H[$n][$n] + $exshift; - $this->d[$n] = $this->H[$n][$n]; - $this->e[$n] = 0.0; - --$n; - $iter = 0; - // Two roots found - } elseif ($l == $n-1) { - $w = $this->H[$n][$n-1] * $this->H[$n-1][$n]; - $p = ($this->H[$n-1][$n-1] - $this->H[$n][$n]) / 2.0; - $q = $p * $p + $w; - $z = sqrt(abs($q)); - $this->H[$n][$n] = $this->H[$n][$n] + $exshift; - $this->H[$n-1][$n-1] = $this->H[$n-1][$n-1] + $exshift; - $x = $this->H[$n][$n]; - // Real pair - if ($q >= 0) { - if ($p >= 0) { - $z = $p + $z; - } else { - $z = $p - $z; - } - $this->d[$n-1] = $x + $z; - $this->d[$n] = $this->d[$n-1]; - if ($z != 0.0) { - $this->d[$n] = $x - $w / $z; - } - $this->e[$n-1] = 0.0; - $this->e[$n] = 0.0; - $x = $this->H[$n][$n-1]; - $s = abs($x) + abs($z); - $p = $x / $s; - $q = $z / $s; - $r = sqrt($p * $p + $q * $q); - $p = $p / $r; - $q = $q / $r; - // Row modification - for ($j = $n-1; $j < $nn; ++$j) { - $z = $this->H[$n-1][$j]; - $this->H[$n-1][$j] = $q * $z + $p * $this->H[$n][$j]; - $this->H[$n][$j] = $q * $this->H[$n][$j] - $p * $z; - } - // Column modification - for ($i = 0; $i <= $n; ++$i) { - $z = $this->H[$i][$n-1]; - $this->H[$i][$n-1] = $q * $z + $p * $this->H[$i][$n]; - $this->H[$i][$n] = $q * $this->H[$i][$n] - $p * $z; - } - // Accumulate transformations - for ($i = $low; $i <= $high; ++$i) { - $z = $this->V[$i][$n-1]; - $this->V[$i][$n-1] = $q * $z + $p * $this->V[$i][$n]; - $this->V[$i][$n] = $q * $this->V[$i][$n] - $p * $z; - } - // Complex pair - } else { - $this->d[$n-1] = $x + $p; - $this->d[$n] = $x + $p; - $this->e[$n-1] = $z; - $this->e[$n] = -$z; - } - $n = $n - 2; - $iter = 0; - // No convergence yet - } else { - // Form shift - $x = $this->H[$n][$n]; - $y = 0.0; - $w = 0.0; - if ($l < $n) { - $y = $this->H[$n-1][$n-1]; - $w = $this->H[$n][$n-1] * $this->H[$n-1][$n]; - } - // Wilkinson's original ad hoc shift - if ($iter == 10) { - $exshift += $x; - for ($i = $low; $i <= $n; ++$i) { - $this->H[$i][$i] -= $x; - } - $s = abs($this->H[$n][$n-1]) + abs($this->H[$n-1][$n-2]); - $x = $y = 0.75 * $s; - $w = -0.4375 * $s * $s; - } - // MATLAB's new ad hoc shift - if ($iter == 30) { - $s = ($y - $x) / 2.0; - $s = $s * $s + $w; - if ($s > 0) { - $s = sqrt($s); - if ($y < $x) { - $s = -$s; - } - $s = $x - $w / (($y - $x) / 2.0 + $s); - for ($i = $low; $i <= $n; ++$i) { - $this->H[$i][$i] -= $s; - } - $exshift += $s; - $x = $y = $w = 0.964; - } - } - // Could check iteration count here. - $iter = $iter + 1; - // Look for two consecutive small sub-diagonal elements - $m = $n - 2; - while ($m >= $l) { - $z = $this->H[$m][$m]; - $r = $x - $z; - $s = $y - $z; - $p = ($r * $s - $w) / $this->H[$m+1][$m] + $this->H[$m][$m+1]; - $q = $this->H[$m+1][$m+1] - $z - $r - $s; - $r = $this->H[$m+2][$m+1]; - $s = abs($p) + abs($q) + abs($r); - $p = $p / $s; - $q = $q / $s; - $r = $r / $s; - if ($m == $l) { - break; - } - if (abs($this->H[$m][$m-1]) * (abs($q) + abs($r)) < - $eps * (abs($p) * (abs($this->H[$m-1][$m-1]) + abs($z) + abs($this->H[$m+1][$m+1])))) { - break; - } - --$m; - } - for ($i = $m + 2; $i <= $n; ++$i) { - $this->H[$i][$i-2] = 0.0; - if ($i > $m+2) { - $this->H[$i][$i-3] = 0.0; - } - } - // Double QR step involving rows l:n and columns m:n - for ($k = $m; $k <= $n-1; ++$k) { - $notlast = ($k != $n-1); - if ($k != $m) { - $p = $this->H[$k][$k-1]; - $q = $this->H[$k+1][$k-1]; - $r = ($notlast ? $this->H[$k+2][$k-1] : 0.0); - $x = abs($p) + abs($q) + abs($r); - if ($x != 0.0) { - $p = $p / $x; - $q = $q / $x; - $r = $r / $x; - } - } - if ($x == 0.0) { - break; - } - $s = sqrt($p * $p + $q * $q + $r * $r); - if ($p < 0) { - $s = -$s; - } - if ($s != 0) { - if ($k != $m) { - $this->H[$k][$k-1] = -$s * $x; - } elseif ($l != $m) { - $this->H[$k][$k-1] = -$this->H[$k][$k-1]; - } - $p = $p + $s; - $x = $p / $s; - $y = $q / $s; - $z = $r / $s; - $q = $q / $p; - $r = $r / $p; - // Row modification - for ($j = $k; $j < $nn; ++$j) { - $p = $this->H[$k][$j] + $q * $this->H[$k+1][$j]; - if ($notlast) { - $p = $p + $r * $this->H[$k+2][$j]; - $this->H[$k+2][$j] = $this->H[$k+2][$j] - $p * $z; - } - $this->H[$k][$j] = $this->H[$k][$j] - $p * $x; - $this->H[$k+1][$j] = $this->H[$k+1][$j] - $p * $y; - } - // Column modification - for ($i = 0; $i <= min($n, $k+3); ++$i) { - $p = $x * $this->H[$i][$k] + $y * $this->H[$i][$k+1]; - if ($notlast) { - $p = $p + $z * $this->H[$i][$k+2]; - $this->H[$i][$k+2] = $this->H[$i][$k+2] - $p * $r; - } - $this->H[$i][$k] = $this->H[$i][$k] - $p; - $this->H[$i][$k+1] = $this->H[$i][$k+1] - $p * $q; - } - // Accumulate transformations - for ($i = $low; $i <= $high; ++$i) { - $p = $x * $this->V[$i][$k] + $y * $this->V[$i][$k+1]; - if ($notlast) { - $p = $p + $z * $this->V[$i][$k+2]; - $this->V[$i][$k+2] = $this->V[$i][$k+2] - $p * $r; - } - $this->V[$i][$k] = $this->V[$i][$k] - $p; - $this->V[$i][$k+1] = $this->V[$i][$k+1] - $p * $q; - } - } // ($s != 0) - } // k loop - } // check convergence - } // while ($n >= $low) - - // Backsubstitute to find vectors of upper triangular form - if ($norm == 0.0) { - return; - } - - for ($n = $nn-1; $n >= 0; --$n) { - $p = $this->d[$n]; - $q = $this->e[$n]; - // Real vector - if ($q == 0) { - $l = $n; - $this->H[$n][$n] = 1.0; - for ($i = $n-1; $i >= 0; --$i) { - $w = $this->H[$i][$i] - $p; - $r = 0.0; - for ($j = $l; $j <= $n; ++$j) { - $r = $r + $this->H[$i][$j] * $this->H[$j][$n]; - } - if ($this->e[$i] < 0.0) { - $z = $w; - $s = $r; - } else { - $l = $i; - if ($this->e[$i] == 0.0) { - if ($w != 0.0) { - $this->H[$i][$n] = -$r / $w; - } else { - $this->H[$i][$n] = -$r / ($eps * $norm); - } - // Solve real equations - } else { - $x = $this->H[$i][$i+1]; - $y = $this->H[$i+1][$i]; - $q = ($this->d[$i] - $p) * ($this->d[$i] - $p) + $this->e[$i] * $this->e[$i]; - $t = ($x * $s - $z * $r) / $q; - $this->H[$i][$n] = $t; - if (abs($x) > abs($z)) { - $this->H[$i+1][$n] = (-$r - $w * $t) / $x; - } else { - $this->H[$i+1][$n] = (-$s - $y * $t) / $z; - } - } - // Overflow control - $t = abs($this->H[$i][$n]); - if (($eps * $t) * $t > 1) { - for ($j = $i; $j <= $n; ++$j) { - $this->H[$j][$n] = $this->H[$j][$n] / $t; - } - } - } - } - // Complex vector - } elseif ($q < 0) { - $l = $n-1; - // Last vector component imaginary so matrix is triangular - if (abs($this->H[$n][$n-1]) > abs($this->H[$n-1][$n])) { - $this->H[$n-1][$n-1] = $q / $this->H[$n][$n-1]; - $this->H[$n-1][$n] = -($this->H[$n][$n] - $p) / $this->H[$n][$n-1]; - } else { - $this->cdiv(0.0, -$this->H[$n-1][$n], $this->H[$n-1][$n-1] - $p, $q); - $this->H[$n-1][$n-1] = $this->cdivr; - $this->H[$n-1][$n] = $this->cdivi; - } - $this->H[$n][$n-1] = 0.0; - $this->H[$n][$n] = 1.0; - for ($i = $n-2; $i >= 0; --$i) { - // double ra,sa,vr,vi; - $ra = 0.0; - $sa = 0.0; - for ($j = $l; $j <= $n; ++$j) { - $ra = $ra + $this->H[$i][$j] * $this->H[$j][$n-1]; - $sa = $sa + $this->H[$i][$j] * $this->H[$j][$n]; - } - $w = $this->H[$i][$i] - $p; - if ($this->e[$i] < 0.0) { - $z = $w; - $r = $ra; - $s = $sa; - } else { - $l = $i; - if ($this->e[$i] == 0) { - $this->cdiv(-$ra, -$sa, $w, $q); - $this->H[$i][$n-1] = $this->cdivr; - $this->H[$i][$n] = $this->cdivi; - } else { - // Solve complex equations - $x = $this->H[$i][$i+1]; - $y = $this->H[$i+1][$i]; - $vr = ($this->d[$i] - $p) * ($this->d[$i] - $p) + $this->e[$i] * $this->e[$i] - $q * $q; - $vi = ($this->d[$i] - $p) * 2.0 * $q; - if ($vr == 0.0 & $vi == 0.0) { - $vr = $eps * $norm * (abs($w) + abs($q) + abs($x) + abs($y) + abs($z)); - } - $this->cdiv($x * $r - $z * $ra + $q * $sa, $x * $s - $z * $sa - $q * $ra, $vr, $vi); - $this->H[$i][$n-1] = $this->cdivr; - $this->H[$i][$n] = $this->cdivi; - if (abs($x) > (abs($z) + abs($q))) { - $this->H[$i+1][$n-1] = (-$ra - $w * $this->H[$i][$n-1] + $q * $this->H[$i][$n]) / $x; - $this->H[$i+1][$n] = (-$sa - $w * $this->H[$i][$n] - $q * $this->H[$i][$n-1]) / $x; - } else { - $this->cdiv(-$r - $y * $this->H[$i][$n-1], -$s - $y * $this->H[$i][$n], $z, $q); - $this->H[$i+1][$n-1] = $this->cdivr; - $this->H[$i+1][$n] = $this->cdivi; - } - } - // Overflow control - $t = max(abs($this->H[$i][$n-1]), abs($this->H[$i][$n])); - if (($eps * $t) * $t > 1) { - for ($j = $i; $j <= $n; ++$j) { - $this->H[$j][$n-1] = $this->H[$j][$n-1] / $t; - $this->H[$j][$n] = $this->H[$j][$n] / $t; - } - } - } // end else - } // end for - } // end else for complex case - } // end for - - // Vectors of isolated roots - for ($i = 0; $i < $nn; ++$i) { - if ($i < $low | $i > $high) { - for ($j = $i; $j < $nn; ++$j) { - $this->V[$i][$j] = $this->H[$i][$j]; - } - } - } - - // Back transformation to get eigenvectors of original matrix - for ($j = $nn-1; $j >= $low; --$j) { - for ($i = $low; $i <= $high; ++$i) { - $z = 0.0; - for ($k = $low; $k <= min($j, $high); ++$k) { - $z = $z + $this->V[$i][$k] * $this->H[$k][$j]; - } - $this->V[$i][$j] = $z; - } - } - } // end hqr2 - - /** - * Constructor: Check for symmetry, then construct the eigenvalue decomposition - * - * @access public - * @param A Square matrix - * @return Structure to access D and V. - */ - public function __construct($Arg) - { - $this->A = $Arg->getArray(); - $this->n = $Arg->getColumnDimension(); - - $issymmetric = true; - for ($j = 0; ($j < $this->n) & $issymmetric; ++$j) { - for ($i = 0; ($i < $this->n) & $issymmetric; ++$i) { - $issymmetric = ($this->A[$i][$j] == $this->A[$j][$i]); - } - } - - if ($issymmetric) { - $this->V = $this->A; - // Tridiagonalize. - $this->tred2(); - // Diagonalize. - $this->tql2(); - } else { - $this->H = $this->A; - $this->ort = array(); - // Reduce to Hessenberg form. - $this->orthes(); - // Reduce Hessenberg to real Schur form. - $this->hqr2(); - } - } - - /** - * Return the eigenvector matrix - * - * @access public - * @return V - */ - public function getV() - { - return new Matrix($this->V, $this->n, $this->n); - } - - /** - * Return the real parts of the eigenvalues - * - * @access public - * @return real(diag(D)) - */ - public function getRealEigenvalues() - { - return $this->d; - } - - /** - * Return the imaginary parts of the eigenvalues - * - * @access public - * @return imag(diag(D)) - */ - public function getImagEigenvalues() - { - return $this->e; - } - - /** - * Return the block diagonal eigenvalue matrix - * - * @access public - * @return D - */ - public function getD() - { - for ($i = 0; $i < $this->n; ++$i) { - $D[$i] = array_fill(0, $this->n, 0.0); - $D[$i][$i] = $this->d[$i]; - if ($this->e[$i] == 0) { - continue; - } - $o = ($this->e[$i] > 0) ? $i + 1 : $i - 1; - $D[$i][$o] = $this->e[$i]; - } - return new Matrix($D); - } -} diff --git a/application/third_party/PHPExcel/Shared/JAMA/LUDecomposition.php b/application/third_party/PHPExcel/Shared/JAMA/LUDecomposition.php deleted file mode 100644 index 2505d922..00000000 --- a/application/third_party/PHPExcel/Shared/JAMA/LUDecomposition.php +++ /dev/null @@ -1,257 +0,0 @@ -<?php -/** - * @package JAMA - * - * For an m-by-n matrix A with m >= n, the LU decomposition is an m-by-n - * unit lower triangular matrix L, an n-by-n upper triangular matrix U, - * and a permutation vector piv of length m so that A(piv,:) = L*U. - * If m < n, then L is m-by-m and U is m-by-n. - * - * The LU decompostion with pivoting always exists, even if the matrix is - * singular, so the constructor will never fail. The primary use of the - * LU decomposition is in the solution of square systems of simultaneous - * linear equations. This will fail if isNonsingular() returns false. - * - * @author Paul Meagher - * @author Bartosz Matosiuk - * @author Michael Bommarito - * @version 1.1 - * @license PHP v3.0 - */ -class PHPExcel_Shared_JAMA_LUDecomposition -{ - const MATRIX_SINGULAR_EXCEPTION = "Can only perform operation on singular matrix."; - const MATRIX_SQUARE_EXCEPTION = "Mismatched Row dimension"; - - /** - * Decomposition storage - * @var array - */ - private $LU = array(); - - /** - * Row dimension. - * @var int - */ - private $m; - - /** - * Column dimension. - * @var int - */ - private $n; - - /** - * Pivot sign. - * @var int - */ - private $pivsign; - - /** - * Internal storage of pivot vector. - * @var array - */ - private $piv = array(); - - /** - * LU Decomposition constructor. - * - * @param $A Rectangular matrix - * @return Structure to access L, U and piv. - */ - public function __construct($A) - { - if ($A instanceof PHPExcel_Shared_JAMA_Matrix) { - // Use a "left-looking", dot-product, Crout/Doolittle algorithm. - $this->LU = $A->getArray(); - $this->m = $A->getRowDimension(); - $this->n = $A->getColumnDimension(); - for ($i = 0; $i < $this->m; ++$i) { - $this->piv[$i] = $i; - } - $this->pivsign = 1; - $LUrowi = $LUcolj = array(); - - // Outer loop. - for ($j = 0; $j < $this->n; ++$j) { - // Make a copy of the j-th column to localize references. - for ($i = 0; $i < $this->m; ++$i) { - $LUcolj[$i] = &$this->LU[$i][$j]; - } - // Apply previous transformations. - for ($i = 0; $i < $this->m; ++$i) { - $LUrowi = $this->LU[$i]; - // Most of the time is spent in the following dot product. - $kmax = min($i, $j); - $s = 0.0; - for ($k = 0; $k < $kmax; ++$k) { - $s += $LUrowi[$k] * $LUcolj[$k]; - } - $LUrowi[$j] = $LUcolj[$i] -= $s; - } - // Find pivot and exchange if necessary. - $p = $j; - for ($i = $j+1; $i < $this->m; ++$i) { - if (abs($LUcolj[$i]) > abs($LUcolj[$p])) { - $p = $i; - } - } - if ($p != $j) { - for ($k = 0; $k < $this->n; ++$k) { - $t = $this->LU[$p][$k]; - $this->LU[$p][$k] = $this->LU[$j][$k]; - $this->LU[$j][$k] = $t; - } - $k = $this->piv[$p]; - $this->piv[$p] = $this->piv[$j]; - $this->piv[$j] = $k; - $this->pivsign = $this->pivsign * -1; - } - // Compute multipliers. - if (($j < $this->m) && ($this->LU[$j][$j] != 0.0)) { - for ($i = $j+1; $i < $this->m; ++$i) { - $this->LU[$i][$j] /= $this->LU[$j][$j]; - } - } - } - } else { - throw new PHPExcel_Calculation_Exception(PHPExcel_Shared_JAMA_Matrix::ARGUMENT_TYPE_EXCEPTION); - } - } // function __construct() - - /** - * Get lower triangular factor. - * - * @return array Lower triangular factor - */ - public function getL() - { - for ($i = 0; $i < $this->m; ++$i) { - for ($j = 0; $j < $this->n; ++$j) { - if ($i > $j) { - $L[$i][$j] = $this->LU[$i][$j]; - } elseif ($i == $j) { - $L[$i][$j] = 1.0; - } else { - $L[$i][$j] = 0.0; - } - } - } - return new PHPExcel_Shared_JAMA_Matrix($L); - } // function getL() - - /** - * Get upper triangular factor. - * - * @return array Upper triangular factor - */ - public function getU() - { - for ($i = 0; $i < $this->n; ++$i) { - for ($j = 0; $j < $this->n; ++$j) { - if ($i <= $j) { - $U[$i][$j] = $this->LU[$i][$j]; - } else { - $U[$i][$j] = 0.0; - } - } - } - return new PHPExcel_Shared_JAMA_Matrix($U); - } // function getU() - - /** - * Return pivot permutation vector. - * - * @return array Pivot vector - */ - public function getPivot() - { - return $this->piv; - } // function getPivot() - - /** - * Alias for getPivot - * - * @see getPivot - */ - public function getDoublePivot() - { - return $this->getPivot(); - } // function getDoublePivot() - - /** - * Is the matrix nonsingular? - * - * @return true if U, and hence A, is nonsingular. - */ - public function isNonsingular() - { - for ($j = 0; $j < $this->n; ++$j) { - if ($this->LU[$j][$j] == 0) { - return false; - } - } - return true; - } // function isNonsingular() - - /** - * Count determinants - * - * @return array d matrix deterninat - */ - public function det() - { - if ($this->m == $this->n) { - $d = $this->pivsign; - for ($j = 0; $j < $this->n; ++$j) { - $d *= $this->LU[$j][$j]; - } - return $d; - } else { - throw new PHPExcel_Calculation_Exception(PHPExcel_Shared_JAMA_Matrix::MATRIX_DIMENSION_EXCEPTION); - } - } // function det() - - /** - * Solve A*X = B - * - * @param $B A Matrix with as many rows as A and any number of columns. - * @return X so that L*U*X = B(piv,:) - * @PHPExcel_Calculation_Exception IllegalArgumentException Matrix row dimensions must agree. - * @PHPExcel_Calculation_Exception RuntimeException Matrix is singular. - */ - public function solve($B) - { - if ($B->getRowDimension() == $this->m) { - if ($this->isNonsingular()) { - // Copy right hand side with pivoting - $nx = $B->getColumnDimension(); - $X = $B->getMatrix($this->piv, 0, $nx-1); - // Solve L*Y = B(piv,:) - for ($k = 0; $k < $this->n; ++$k) { - for ($i = $k+1; $i < $this->n; ++$i) { - for ($j = 0; $j < $nx; ++$j) { - $X->A[$i][$j] -= $X->A[$k][$j] * $this->LU[$i][$k]; - } - } - } - // Solve U*X = Y; - for ($k = $this->n-1; $k >= 0; --$k) { - for ($j = 0; $j < $nx; ++$j) { - $X->A[$k][$j] /= $this->LU[$k][$k]; - } - for ($i = 0; $i < $k; ++$i) { - for ($j = 0; $j < $nx; ++$j) { - $X->A[$i][$j] -= $X->A[$k][$j] * $this->LU[$i][$k]; - } - } - } - return $X; - } else { - throw new PHPExcel_Calculation_Exception(self::MATRIX_SINGULAR_EXCEPTION); - } - } else { - throw new PHPExcel_Calculation_Exception(self::MATRIX_SQUARE_EXCEPTION); - } - } -} diff --git a/application/third_party/PHPExcel/Shared/JAMA/Matrix.php b/application/third_party/PHPExcel/Shared/JAMA/Matrix.php deleted file mode 100644 index 82fb0fb2..00000000 --- a/application/third_party/PHPExcel/Shared/JAMA/Matrix.php +++ /dev/null @@ -1,1159 +0,0 @@ -<?php -/** - * @package JAMA - */ - -/** PHPExcel root directory */ -if (!defined('PHPEXCEL_ROOT')) { - /** - * @ignore - */ - define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../../'); - require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); -} - - -/* - * Matrix class - * - * @author Paul Meagher - * @author Michael Bommarito - * @author Lukasz Karapuda - * @author Bartek Matosiuk - * @version 1.8 - * @license PHP v3.0 - * @see http://math.nist.gov/javanumerics/jama/ - */ -class PHPExcel_Shared_JAMA_Matrix -{ - const POLYMORPHIC_ARGUMENT_EXCEPTION = "Invalid argument pattern for polymorphic function."; - const ARGUMENT_TYPE_EXCEPTION = "Invalid argument type."; - const ARGUMENT_BOUNDS_EXCEPTION = "Invalid argument range."; - const MATRIX_DIMENSION_EXCEPTION = "Matrix dimensions are not equal."; - const ARRAY_LENGTH_EXCEPTION = "Array length must be a multiple of m."; - - /** - * Matrix storage - * - * @var array - * @access public - */ - public $A = array(); - - /** - * Matrix row dimension - * - * @var int - * @access private - */ - private $m; - - /** - * Matrix column dimension - * - * @var int - * @access private - */ - private $n; - - /** - * Polymorphic constructor - * - * As PHP has no support for polymorphic constructors, we hack our own sort of polymorphism using func_num_args, func_get_arg, and gettype. In essence, we're just implementing a simple RTTI filter and calling the appropriate constructor. - */ - public function __construct() - { - if (func_num_args() > 0) { - $args = func_get_args(); - $match = implode(",", array_map('gettype', $args)); - - switch ($match) { - //Rectangular matrix - m x n initialized from 2D array - case 'array': - $this->m = count($args[0]); - $this->n = count($args[0][0]); - $this->A = $args[0]; - break; - //Square matrix - n x n - case 'integer': - $this->m = $args[0]; - $this->n = $args[0]; - $this->A = array_fill(0, $this->m, array_fill(0, $this->n, 0)); - break; - //Rectangular matrix - m x n - case 'integer,integer': - $this->m = $args[0]; - $this->n = $args[1]; - $this->A = array_fill(0, $this->m, array_fill(0, $this->n, 0)); - break; - //Rectangular matrix - m x n initialized from packed array - case 'array,integer': - $this->m = $args[1]; - if ($this->m != 0) { - $this->n = count($args[0]) / $this->m; - } else { - $this->n = 0; - } - if (($this->m * $this->n) == count($args[0])) { - for ($i = 0; $i < $this->m; ++$i) { - for ($j = 0; $j < $this->n; ++$j) { - $this->A[$i][$j] = $args[0][$i + $j * $this->m]; - } - } - } else { - throw new PHPExcel_Calculation_Exception(self::ARRAY_LENGTH_EXCEPTION); - } - break; - default: - throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); - break; - } - } else { - throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); - } - } - - /** - * getArray - * - * @return array Matrix array - */ - public function getArray() - { - return $this->A; - } - - /** - * getRowDimension - * - * @return int Row dimension - */ - public function getRowDimension() - { - return $this->m; - } - - /** - * getColumnDimension - * - * @return int Column dimension - */ - public function getColumnDimension() - { - return $this->n; - } - - /** - * get - * - * Get the i,j-th element of the matrix. - * @param int $i Row position - * @param int $j Column position - * @return mixed Element (int/float/double) - */ - public function get($i = null, $j = null) - { - return $this->A[$i][$j]; - } - - /** - * getMatrix - * - * Get a submatrix - * @param int $i0 Initial row index - * @param int $iF Final row index - * @param int $j0 Initial column index - * @param int $jF Final column index - * @return Matrix Submatrix - */ - public function getMatrix() - { - if (func_num_args() > 0) { - $args = func_get_args(); - $match = implode(",", array_map('gettype', $args)); - - switch ($match) { - //A($i0...; $j0...) - case 'integer,integer': - list($i0, $j0) = $args; - if ($i0 >= 0) { - $m = $this->m - $i0; - } else { - throw new PHPExcel_Calculation_Exception(self::ARGUMENT_BOUNDS_EXCEPTION); - } - if ($j0 >= 0) { - $n = $this->n - $j0; - } else { - throw new PHPExcel_Calculation_Exception(self::ARGUMENT_BOUNDS_EXCEPTION); - } - $R = new PHPExcel_Shared_JAMA_Matrix($m, $n); - for ($i = $i0; $i < $this->m; ++$i) { - for ($j = $j0; $j < $this->n; ++$j) { - $R->set($i, $j, $this->A[$i][$j]); - } - } - return $R; - break; - //A($i0...$iF; $j0...$jF) - case 'integer,integer,integer,integer': - list($i0, $iF, $j0, $jF) = $args; - if (($iF > $i0) && ($this->m >= $iF) && ($i0 >= 0)) { - $m = $iF - $i0; - } else { - throw new PHPExcel_Calculation_Exception(self::ARGUMENT_BOUNDS_EXCEPTION); - } - if (($jF > $j0) && ($this->n >= $jF) && ($j0 >= 0)) { - $n = $jF - $j0; - } else { - throw new PHPExcel_Calculation_Exception(self::ARGUMENT_BOUNDS_EXCEPTION); - } - $R = new PHPExcel_Shared_JAMA_Matrix($m+1, $n+1); - for ($i = $i0; $i <= $iF; ++$i) { - for ($j = $j0; $j <= $jF; ++$j) { - $R->set($i - $i0, $j - $j0, $this->A[$i][$j]); - } - } - return $R; - break; - //$R = array of row indices; $C = array of column indices - case 'array,array': - list($RL, $CL) = $args; - if (count($RL) > 0) { - $m = count($RL); - } else { - throw new PHPExcel_Calculation_Exception(self::ARGUMENT_BOUNDS_EXCEPTION); - } - if (count($CL) > 0) { - $n = count($CL); - } else { - throw new PHPExcel_Calculation_Exception(self::ARGUMENT_BOUNDS_EXCEPTION); - } - $R = new PHPExcel_Shared_JAMA_Matrix($m, $n); - for ($i = 0; $i < $m; ++$i) { - for ($j = 0; $j < $n; ++$j) { - $R->set($i - $i0, $j - $j0, $this->A[$RL[$i]][$CL[$j]]); - } - } - return $R; - break; - //$RL = array of row indices; $CL = array of column indices - case 'array,array': - list($RL, $CL) = $args; - if (count($RL) > 0) { - $m = count($RL); - } else { - throw new PHPExcel_Calculation_Exception(self::ARGUMENT_BOUNDS_EXCEPTION); - } - if (count($CL) > 0) { - $n = count($CL); - } else { - throw new PHPExcel_Calculation_Exception(self::ARGUMENT_BOUNDS_EXCEPTION); - } - $R = new PHPExcel_Shared_JAMA_Matrix($m, $n); - for ($i = 0; $i < $m; ++$i) { - for ($j = 0; $j < $n; ++$j) { - $R->set($i, $j, $this->A[$RL[$i]][$CL[$j]]); - } - } - return $R; - break; - //A($i0...$iF); $CL = array of column indices - case 'integer,integer,array': - list($i0, $iF, $CL) = $args; - if (($iF > $i0) && ($this->m >= $iF) && ($i0 >= 0)) { - $m = $iF - $i0; - } else { - throw new PHPExcel_Calculation_Exception(self::ARGUMENT_BOUNDS_EXCEPTION); - } - if (count($CL) > 0) { - $n = count($CL); - } else { - throw new PHPExcel_Calculation_Exception(self::ARGUMENT_BOUNDS_EXCEPTION); - } - $R = new PHPExcel_Shared_JAMA_Matrix($m, $n); - for ($i = $i0; $i < $iF; ++$i) { - for ($j = 0; $j < $n; ++$j) { - $R->set($i - $i0, $j, $this->A[$RL[$i]][$j]); - } - } - return $R; - break; - //$RL = array of row indices - case 'array,integer,integer': - list($RL, $j0, $jF) = $args; - if (count($RL) > 0) { - $m = count($RL); - } else { - throw new PHPExcel_Calculation_Exception(self::ARGUMENT_BOUNDS_EXCEPTION); - } - if (($jF >= $j0) && ($this->n >= $jF) && ($j0 >= 0)) { - $n = $jF - $j0; - } else { - throw new PHPExcel_Calculation_Exception(self::ARGUMENT_BOUNDS_EXCEPTION); - } - $R = new PHPExcel_Shared_JAMA_Matrix($m, $n+1); - for ($i = 0; $i < $m; ++$i) { - for ($j = $j0; $j <= $jF; ++$j) { - $R->set($i, $j - $j0, $this->A[$RL[$i]][$j]); - } - } - return $R; - break; - default: - throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); - break; - } - } else { - throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); - } - } - - /** - * checkMatrixDimensions - * - * Is matrix B the same size? - * @param Matrix $B Matrix B - * @return boolean - */ - public function checkMatrixDimensions($B = null) - { - if ($B instanceof PHPExcel_Shared_JAMA_Matrix) { - if (($this->m == $B->getRowDimension()) && ($this->n == $B->getColumnDimension())) { - return true; - } else { - throw new PHPExcel_Calculation_Exception(self::MATRIX_DIMENSION_EXCEPTION); - } - } else { - throw new PHPExcel_Calculation_Exception(self::ARGUMENT_TYPE_EXCEPTION); - } - } // function checkMatrixDimensions() - - /** - * set - * - * Set the i,j-th element of the matrix. - * @param int $i Row position - * @param int $j Column position - * @param mixed $c Int/float/double value - * @return mixed Element (int/float/double) - */ - public function set($i = null, $j = null, $c = null) - { - // Optimized set version just has this - $this->A[$i][$j] = $c; - } // function set() - - /** - * identity - * - * Generate an identity matrix. - * @param int $m Row dimension - * @param int $n Column dimension - * @return Matrix Identity matrix - */ - public function identity($m = null, $n = null) - { - return $this->diagonal($m, $n, 1); - } - - /** - * diagonal - * - * Generate a diagonal matrix - * @param int $m Row dimension - * @param int $n Column dimension - * @param mixed $c Diagonal value - * @return Matrix Diagonal matrix - */ - public function diagonal($m = null, $n = null, $c = 1) - { - $R = new PHPExcel_Shared_JAMA_Matrix($m, $n); - for ($i = 0; $i < $m; ++$i) { - $R->set($i, $i, $c); - } - return $R; - } - - /** - * getMatrixByRow - * - * Get a submatrix by row index/range - * @param int $i0 Initial row index - * @param int $iF Final row index - * @return Matrix Submatrix - */ - public function getMatrixByRow($i0 = null, $iF = null) - { - if (is_int($i0)) { - if (is_int($iF)) { - return $this->getMatrix($i0, 0, $iF + 1, $this->n); - } else { - return $this->getMatrix($i0, 0, $i0 + 1, $this->n); - } - } else { - throw new PHPExcel_Calculation_Exception(self::ARGUMENT_TYPE_EXCEPTION); - } - } - - /** - * getMatrixByCol - * - * Get a submatrix by column index/range - * @param int $i0 Initial column index - * @param int $iF Final column index - * @return Matrix Submatrix - */ - public function getMatrixByCol($j0 = null, $jF = null) - { - if (is_int($j0)) { - if (is_int($jF)) { - return $this->getMatrix(0, $j0, $this->m, $jF + 1); - } else { - return $this->getMatrix(0, $j0, $this->m, $j0 + 1); - } - } else { - throw new PHPExcel_Calculation_Exception(self::ARGUMENT_TYPE_EXCEPTION); - } - } - - /** - * transpose - * - * Tranpose matrix - * @return Matrix Transposed matrix - */ - public function transpose() - { - $R = new PHPExcel_Shared_JAMA_Matrix($this->n, $this->m); - for ($i = 0; $i < $this->m; ++$i) { - for ($j = 0; $j < $this->n; ++$j) { - $R->set($j, $i, $this->A[$i][$j]); - } - } - return $R; - } // function transpose() - - /** - * trace - * - * Sum of diagonal elements - * @return float Sum of diagonal elements - */ - public function trace() - { - $s = 0; - $n = min($this->m, $this->n); - for ($i = 0; $i < $n; ++$i) { - $s += $this->A[$i][$i]; - } - return $s; - } - - /** - * uminus - * - * Unary minus matrix -A - * @return Matrix Unary minus matrix - */ - public function uminus() - { - } - - /** - * plus - * - * A + B - * @param mixed $B Matrix/Array - * @return Matrix Sum - */ - public function plus() - { - if (func_num_args() > 0) { - $args = func_get_args(); - $match = implode(",", array_map('gettype', $args)); - - switch ($match) { - case 'object': - if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { - $M = $args[0]; - } else { - throw new PHPExcel_Calculation_Exception(self::ARGUMENT_TYPE_EXCEPTION); - } - break; - case 'array': - $M = new PHPExcel_Shared_JAMA_Matrix($args[0]); - break; - default: - throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); - break; - } - $this->checkMatrixDimensions($M); - for ($i = 0; $i < $this->m; ++$i) { - for ($j = 0; $j < $this->n; ++$j) { - $M->set($i, $j, $M->get($i, $j) + $this->A[$i][$j]); - } - } - return $M; - } else { - throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); - } - } - - /** - * plusEquals - * - * A = A + B - * @param mixed $B Matrix/Array - * @return Matrix Sum - */ - public function plusEquals() - { - if (func_num_args() > 0) { - $args = func_get_args(); - $match = implode(",", array_map('gettype', $args)); - - switch ($match) { - case 'object': - if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { - $M = $args[0]; - } else { - throw new PHPExcel_Calculation_Exception(self::ARGUMENT_TYPE_EXCEPTION); - } - break; - case 'array': - $M = new PHPExcel_Shared_JAMA_Matrix($args[0]); - break; - default: - throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); - break; - } - $this->checkMatrixDimensions($M); - for ($i = 0; $i < $this->m; ++$i) { - for ($j = 0; $j < $this->n; ++$j) { - $validValues = true; - $value = $M->get($i, $j); - if ((is_string($this->A[$i][$j])) && (strlen($this->A[$i][$j]) > 0) && (!is_numeric($this->A[$i][$j]))) { - $this->A[$i][$j] = trim($this->A[$i][$j], '"'); - $validValues &= PHPExcel_Shared_String::convertToNumberIfFraction($this->A[$i][$j]); - } - if ((is_string($value)) && (strlen($value) > 0) && (!is_numeric($value))) { - $value = trim($value, '"'); - $validValues &= PHPExcel_Shared_String::convertToNumberIfFraction($value); - } - if ($validValues) { - $this->A[$i][$j] += $value; - } else { - $this->A[$i][$j] = PHPExcel_Calculation_Functions::NaN(); - } - } - } - return $this; - } else { - throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); - } - } - - /** - * minus - * - * A - B - * @param mixed $B Matrix/Array - * @return Matrix Sum - */ - public function minus() - { - if (func_num_args() > 0) { - $args = func_get_args(); - $match = implode(",", array_map('gettype', $args)); - - switch ($match) { - case 'object': - if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { - $M = $args[0]; - } else { - throw new PHPExcel_Calculation_Exception(self::ARGUMENT_TYPE_EXCEPTION); - } - break; - case 'array': - $M = new PHPExcel_Shared_JAMA_Matrix($args[0]); - break; - default: - throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); - break; - } - $this->checkMatrixDimensions($M); - for ($i = 0; $i < $this->m; ++$i) { - for ($j = 0; $j < $this->n; ++$j) { - $M->set($i, $j, $M->get($i, $j) - $this->A[$i][$j]); - } - } - return $M; - } else { - throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); - } - } - - /** - * minusEquals - * - * A = A - B - * @param mixed $B Matrix/Array - * @return Matrix Sum - */ - public function minusEquals() - { - if (func_num_args() > 0) { - $args = func_get_args(); - $match = implode(",", array_map('gettype', $args)); - - switch ($match) { - case 'object': - if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { - $M = $args[0]; - } else { - throw new PHPExcel_Calculation_Exception(self::ARGUMENT_TYPE_EXCEPTION); - } - break; - case 'array': - $M = new PHPExcel_Shared_JAMA_Matrix($args[0]); - break; - default: - throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); - break; - } - $this->checkMatrixDimensions($M); - for ($i = 0; $i < $this->m; ++$i) { - for ($j = 0; $j < $this->n; ++$j) { - $validValues = true; - $value = $M->get($i, $j); - if ((is_string($this->A[$i][$j])) && (strlen($this->A[$i][$j]) > 0) && (!is_numeric($this->A[$i][$j]))) { - $this->A[$i][$j] = trim($this->A[$i][$j], '"'); - $validValues &= PHPExcel_Shared_String::convertToNumberIfFraction($this->A[$i][$j]); - } - if ((is_string($value)) && (strlen($value) > 0) && (!is_numeric($value))) { - $value = trim($value, '"'); - $validValues &= PHPExcel_Shared_String::convertToNumberIfFraction($value); - } - if ($validValues) { - $this->A[$i][$j] -= $value; - } else { - $this->A[$i][$j] = PHPExcel_Calculation_Functions::NaN(); - } - } - } - return $this; - } else { - throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); - } - } - - /** - * arrayTimes - * - * Element-by-element multiplication - * Cij = Aij * Bij - * @param mixed $B Matrix/Array - * @return Matrix Matrix Cij - */ - public function arrayTimes() - { - if (func_num_args() > 0) { - $args = func_get_args(); - $match = implode(",", array_map('gettype', $args)); - - switch ($match) { - case 'object': - if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { - $M = $args[0]; - } else { - throw new PHPExcel_Calculation_Exception(self::ARGUMENT_TYPE_EXCEPTION); - } - break; - case 'array': - $M = new PHPExcel_Shared_JAMA_Matrix($args[0]); - break; - default: - throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); - break; - } - $this->checkMatrixDimensions($M); - for ($i = 0; $i < $this->m; ++$i) { - for ($j = 0; $j < $this->n; ++$j) { - $M->set($i, $j, $M->get($i, $j) * $this->A[$i][$j]); - } - } - return $M; - } else { - throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); - } - } - - /** - * arrayTimesEquals - * - * Element-by-element multiplication - * Aij = Aij * Bij - * @param mixed $B Matrix/Array - * @return Matrix Matrix Aij - */ - public function arrayTimesEquals() - { - if (func_num_args() > 0) { - $args = func_get_args(); - $match = implode(",", array_map('gettype', $args)); - - switch ($match) { - case 'object': - if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { - $M = $args[0]; - } else { - throw new PHPExcel_Calculation_Exception(self::ARGUMENT_TYPE_EXCEPTION); - } - break; - case 'array': - $M = new PHPExcel_Shared_JAMA_Matrix($args[0]); - break; - default: - throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); - break; - } - $this->checkMatrixDimensions($M); - for ($i = 0; $i < $this->m; ++$i) { - for ($j = 0; $j < $this->n; ++$j) { - $validValues = true; - $value = $M->get($i, $j); - if ((is_string($this->A[$i][$j])) && (strlen($this->A[$i][$j]) > 0) && (!is_numeric($this->A[$i][$j]))) { - $this->A[$i][$j] = trim($this->A[$i][$j], '"'); - $validValues &= PHPExcel_Shared_String::convertToNumberIfFraction($this->A[$i][$j]); - } - if ((is_string($value)) && (strlen($value) > 0) && (!is_numeric($value))) { - $value = trim($value, '"'); - $validValues &= PHPExcel_Shared_String::convertToNumberIfFraction($value); - } - if ($validValues) { - $this->A[$i][$j] *= $value; - } else { - $this->A[$i][$j] = PHPExcel_Calculation_Functions::NaN(); - } - } - } - return $this; - } else { - throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); - } - } - - /** - * arrayRightDivide - * - * Element-by-element right division - * A / B - * @param Matrix $B Matrix B - * @return Matrix Division result - */ - public function arrayRightDivide() - { - if (func_num_args() > 0) { - $args = func_get_args(); - $match = implode(",", array_map('gettype', $args)); - - switch ($match) { - case 'object': - if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { - $M = $args[0]; - } else { - throw new PHPExcel_Calculation_Exception(self::ARGUMENT_TYPE_EXCEPTION); - } - break; - case 'array': - $M = new PHPExcel_Shared_JAMA_Matrix($args[0]); - break; - default: - throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); - break; - } - $this->checkMatrixDimensions($M); - for ($i = 0; $i < $this->m; ++$i) { - for ($j = 0; $j < $this->n; ++$j) { - $validValues = true; - $value = $M->get($i, $j); - if ((is_string($this->A[$i][$j])) && (strlen($this->A[$i][$j]) > 0) && (!is_numeric($this->A[$i][$j]))) { - $this->A[$i][$j] = trim($this->A[$i][$j], '"'); - $validValues &= PHPExcel_Shared_String::convertToNumberIfFraction($this->A[$i][$j]); - } - if ((is_string($value)) && (strlen($value) > 0) && (!is_numeric($value))) { - $value = trim($value, '"'); - $validValues &= PHPExcel_Shared_String::convertToNumberIfFraction($value); - } - if ($validValues) { - if ($value == 0) { - // Trap for Divide by Zero error - $M->set($i, $j, '#DIV/0!'); - } else { - $M->set($i, $j, $this->A[$i][$j] / $value); - } - } else { - $M->set($i, $j, PHPExcel_Calculation_Functions::NaN()); - } - } - } - return $M; - } else { - throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); - } - } - - - /** - * arrayRightDivideEquals - * - * Element-by-element right division - * Aij = Aij / Bij - * @param mixed $B Matrix/Array - * @return Matrix Matrix Aij - */ - public function arrayRightDivideEquals() - { - if (func_num_args() > 0) { - $args = func_get_args(); - $match = implode(",", array_map('gettype', $args)); - - switch ($match) { - case 'object': - if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { - $M = $args[0]; - } else { - throw new PHPExcel_Calculation_Exception(self::ARGUMENT_TYPE_EXCEPTION); - } - break; - case 'array': - $M = new PHPExcel_Shared_JAMA_Matrix($args[0]); - break; - default: - throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); - break; - } - $this->checkMatrixDimensions($M); - for ($i = 0; $i < $this->m; ++$i) { - for ($j = 0; $j < $this->n; ++$j) { - $this->A[$i][$j] = $this->A[$i][$j] / $M->get($i, $j); - } - } - return $M; - } else { - throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); - } - } - - - /** - * arrayLeftDivide - * - * Element-by-element Left division - * A / B - * @param Matrix $B Matrix B - * @return Matrix Division result - */ - public function arrayLeftDivide() - { - if (func_num_args() > 0) { - $args = func_get_args(); - $match = implode(",", array_map('gettype', $args)); - - switch ($match) { - case 'object': - if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { - $M = $args[0]; - } else { - throw new PHPExcel_Calculation_Exception(self::ARGUMENT_TYPE_EXCEPTION); - } - break; - case 'array': - $M = new PHPExcel_Shared_JAMA_Matrix($args[0]); - break; - default: - throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); - break; - } - $this->checkMatrixDimensions($M); - for ($i = 0; $i < $this->m; ++$i) { - for ($j = 0; $j < $this->n; ++$j) { - $M->set($i, $j, $M->get($i, $j) / $this->A[$i][$j]); - } - } - return $M; - } else { - throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); - } - } - - - /** - * arrayLeftDivideEquals - * - * Element-by-element Left division - * Aij = Aij / Bij - * @param mixed $B Matrix/Array - * @return Matrix Matrix Aij - */ - public function arrayLeftDivideEquals() - { - if (func_num_args() > 0) { - $args = func_get_args(); - $match = implode(",", array_map('gettype', $args)); - - switch ($match) { - case 'object': - if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { - $M = $args[0]; - } else { - throw new PHPExcel_Calculation_Exception(self::ARGUMENT_TYPE_EXCEPTION); - } - break; - case 'array': - $M = new PHPExcel_Shared_JAMA_Matrix($args[0]); - break; - default: - throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); - break; - } - $this->checkMatrixDimensions($M); - for ($i = 0; $i < $this->m; ++$i) { - for ($j = 0; $j < $this->n; ++$j) { - $this->A[$i][$j] = $M->get($i, $j) / $this->A[$i][$j]; - } - } - return $M; - } else { - throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); - } - } - - - /** - * times - * - * Matrix multiplication - * @param mixed $n Matrix/Array/Scalar - * @return Matrix Product - */ - public function times() - { - if (func_num_args() > 0) { - $args = func_get_args(); - $match = implode(",", array_map('gettype', $args)); - - switch ($match) { - case 'object': - if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { - $B = $args[0]; - } else { - throw new PHPExcel_Calculation_Exception(self::ARGUMENT_TYPE_EXCEPTION); - } - if ($this->n == $B->m) { - $C = new PHPExcel_Shared_JAMA_Matrix($this->m, $B->n); - for ($j = 0; $j < $B->n; ++$j) { - for ($k = 0; $k < $this->n; ++$k) { - $Bcolj[$k] = $B->A[$k][$j]; - } - for ($i = 0; $i < $this->m; ++$i) { - $Arowi = $this->A[$i]; - $s = 0; - for ($k = 0; $k < $this->n; ++$k) { - $s += $Arowi[$k] * $Bcolj[$k]; - } - $C->A[$i][$j] = $s; - } - } - return $C; - } else { - throw new PHPExcel_Calculation_Exception(JAMAError(MatrixDimensionMismatch)); - } - break; - case 'array': - $B = new PHPExcel_Shared_JAMA_Matrix($args[0]); - if ($this->n == $B->m) { - $C = new PHPExcel_Shared_JAMA_Matrix($this->m, $B->n); - for ($i = 0; $i < $C->m; ++$i) { - for ($j = 0; $j < $C->n; ++$j) { - $s = "0"; - for ($k = 0; $k < $C->n; ++$k) { - $s += $this->A[$i][$k] * $B->A[$k][$j]; - } - $C->A[$i][$j] = $s; - } - } - return $C; - } else { - throw new PHPExcel_Calculation_Exception(JAMAError(MatrixDimensionMismatch)); - } - return $M; - break; - case 'integer': - $C = new PHPExcel_Shared_JAMA_Matrix($this->A); - for ($i = 0; $i < $C->m; ++$i) { - for ($j = 0; $j < $C->n; ++$j) { - $C->A[$i][$j] *= $args[0]; - } - } - return $C; - break; - case 'double': - $C = new PHPExcel_Shared_JAMA_Matrix($this->m, $this->n); - for ($i = 0; $i < $C->m; ++$i) { - for ($j = 0; $j < $C->n; ++$j) { - $C->A[$i][$j] = $args[0] * $this->A[$i][$j]; - } - } - return $C; - break; - case 'float': - $C = new PHPExcel_Shared_JAMA_Matrix($this->A); - for ($i = 0; $i < $C->m; ++$i) { - for ($j = 0; $j < $C->n; ++$j) { - $C->A[$i][$j] *= $args[0]; - } - } - return $C; - break; - default: - throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); - break; - } - } else { - throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); - } - } - - /** - * power - * - * A = A ^ B - * @param mixed $B Matrix/Array - * @return Matrix Sum - */ - public function power() - { - if (func_num_args() > 0) { - $args = func_get_args(); - $match = implode(",", array_map('gettype', $args)); - - switch ($match) { - case 'object': - if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { - $M = $args[0]; - } else { - throw new PHPExcel_Calculation_Exception(self::ARGUMENT_TYPE_EXCEPTION); - } - break; - case 'array': - $M = new PHPExcel_Shared_JAMA_Matrix($args[0]); - break; - default: - throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); - break; - } - $this->checkMatrixDimensions($M); - for ($i = 0; $i < $this->m; ++$i) { - for ($j = 0; $j < $this->n; ++$j) { - $validValues = true; - $value = $M->get($i, $j); - if ((is_string($this->A[$i][$j])) && (strlen($this->A[$i][$j]) > 0) && (!is_numeric($this->A[$i][$j]))) { - $this->A[$i][$j] = trim($this->A[$i][$j], '"'); - $validValues &= PHPExcel_Shared_String::convertToNumberIfFraction($this->A[$i][$j]); - } - if ((is_string($value)) && (strlen($value) > 0) && (!is_numeric($value))) { - $value = trim($value, '"'); - $validValues &= PHPExcel_Shared_String::convertToNumberIfFraction($value); - } - if ($validValues) { - $this->A[$i][$j] = pow($this->A[$i][$j], $value); - } else { - $this->A[$i][$j] = PHPExcel_Calculation_Functions::NaN(); - } - } - } - return $this; - } else { - throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); - } - } - - /** - * concat - * - * A = A & B - * @param mixed $B Matrix/Array - * @return Matrix Sum - */ - public function concat() - { - if (func_num_args() > 0) { - $args = func_get_args(); - $match = implode(",", array_map('gettype', $args)); - - switch ($match) { - case 'object': - if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { - $M = $args[0]; - } else { - throw new PHPExcel_Calculation_Exception(self::ARGUMENT_TYPE_EXCEPTION); - } - case 'array': - $M = new PHPExcel_Shared_JAMA_Matrix($args[0]); - break; - default: - throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); - break; - } - $this->checkMatrixDimensions($M); - for ($i = 0; $i < $this->m; ++$i) { - for ($j = 0; $j < $this->n; ++$j) { - $this->A[$i][$j] = trim($this->A[$i][$j], '"').trim($M->get($i, $j), '"'); - } - } - return $this; - } else { - throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); - } - } - - /** - * Solve A*X = B. - * - * @param Matrix $B Right hand side - * @return Matrix ... Solution if A is square, least squares solution otherwise - */ - public function solve($B) - { - if ($this->m == $this->n) { - $LU = new PHPExcel_Shared_JAMA_LUDecomposition($this); - return $LU->solve($B); - } else { - $QR = new PHPExcel_Shared_JAMA_QRDecomposition($this); - return $QR->solve($B); - } - } - - /** - * Matrix inverse or pseudoinverse. - * - * @return Matrix ... Inverse(A) if A is square, pseudoinverse otherwise. - */ - public function inverse() - { - return $this->solve($this->identity($this->m, $this->m)); - } - - /** - * det - * - * Calculate determinant - * @return float Determinant - */ - public function det() - { - $L = new PHPExcel_Shared_JAMA_LUDecomposition($this); - return $L->det(); - } -} diff --git a/application/third_party/PHPExcel/Shared/JAMA/QRDecomposition.php b/application/third_party/PHPExcel/Shared/JAMA/QRDecomposition.php deleted file mode 100644 index 1e43c7c4..00000000 --- a/application/third_party/PHPExcel/Shared/JAMA/QRDecomposition.php +++ /dev/null @@ -1,235 +0,0 @@ -<?php -/** - * @package JAMA - * - * For an m-by-n matrix A with m >= n, the QR decomposition is an m-by-n - * orthogonal matrix Q and an n-by-n upper triangular matrix R so that - * A = Q*R. - * - * The QR decompostion always exists, even if the matrix does not have - * full rank, so the constructor will never fail. The primary use of the - * QR decomposition is in the least squares solution of nonsquare systems - * of simultaneous linear equations. This will fail if isFullRank() - * returns false. - * - * @author Paul Meagher - * @license PHP v3.0 - * @version 1.1 - */ -class PHPExcel_Shared_JAMA_QRDecomposition -{ - const MATRIX_RANK_EXCEPTION = "Can only perform operation on full-rank matrix."; - - /** - * Array for internal storage of decomposition. - * @var array - */ - private $QR = array(); - - /** - * Row dimension. - * @var integer - */ - private $m; - - /** - * Column dimension. - * @var integer - */ - private $n; - - /** - * Array for internal storage of diagonal of R. - * @var array - */ - private $Rdiag = array(); - - - /** - * QR Decomposition computed by Householder reflections. - * - * @param matrix $A Rectangular matrix - * @return Structure to access R and the Householder vectors and compute Q. - */ - public function __construct($A) - { - if ($A instanceof PHPExcel_Shared_JAMA_Matrix) { - // Initialize. - $this->QR = $A->getArrayCopy(); - $this->m = $A->getRowDimension(); - $this->n = $A->getColumnDimension(); - // Main loop. - for ($k = 0; $k < $this->n; ++$k) { - // Compute 2-norm of k-th column without under/overflow. - $nrm = 0.0; - for ($i = $k; $i < $this->m; ++$i) { - $nrm = hypo($nrm, $this->QR[$i][$k]); - } - if ($nrm != 0.0) { - // Form k-th Householder vector. - if ($this->QR[$k][$k] < 0) { - $nrm = -$nrm; - } - for ($i = $k; $i < $this->m; ++$i) { - $this->QR[$i][$k] /= $nrm; - } - $this->QR[$k][$k] += 1.0; - // Apply transformation to remaining columns. - for ($j = $k+1; $j < $this->n; ++$j) { - $s = 0.0; - for ($i = $k; $i < $this->m; ++$i) { - $s += $this->QR[$i][$k] * $this->QR[$i][$j]; - } - $s = -$s/$this->QR[$k][$k]; - for ($i = $k; $i < $this->m; ++$i) { - $this->QR[$i][$j] += $s * $this->QR[$i][$k]; - } - } - } - $this->Rdiag[$k] = -$nrm; - } - } else { - throw new PHPExcel_Calculation_Exception(PHPExcel_Shared_JAMA_Matrix::ARGUMENT_TYPE_EXCEPTION); - } - } // function __construct() - - - /** - * Is the matrix full rank? - * - * @return boolean true if R, and hence A, has full rank, else false. - */ - public function isFullRank() - { - for ($j = 0; $j < $this->n; ++$j) { - if ($this->Rdiag[$j] == 0) { - return false; - } - } - return true; - } // function isFullRank() - - /** - * Return the Householder vectors - * - * @return Matrix Lower trapezoidal matrix whose columns define the reflections - */ - public function getH() - { - for ($i = 0; $i < $this->m; ++$i) { - for ($j = 0; $j < $this->n; ++$j) { - if ($i >= $j) { - $H[$i][$j] = $this->QR[$i][$j]; - } else { - $H[$i][$j] = 0.0; - } - } - } - return new PHPExcel_Shared_JAMA_Matrix($H); - } // function getH() - - /** - * Return the upper triangular factor - * - * @return Matrix upper triangular factor - */ - public function getR() - { - for ($i = 0; $i < $this->n; ++$i) { - for ($j = 0; $j < $this->n; ++$j) { - if ($i < $j) { - $R[$i][$j] = $this->QR[$i][$j]; - } elseif ($i == $j) { - $R[$i][$j] = $this->Rdiag[$i]; - } else { - $R[$i][$j] = 0.0; - } - } - } - return new PHPExcel_Shared_JAMA_Matrix($R); - } // function getR() - - /** - * Generate and return the (economy-sized) orthogonal factor - * - * @return Matrix orthogonal factor - */ - public function getQ() - { - for ($k = $this->n-1; $k >= 0; --$k) { - for ($i = 0; $i < $this->m; ++$i) { - $Q[$i][$k] = 0.0; - } - $Q[$k][$k] = 1.0; - for ($j = $k; $j < $this->n; ++$j) { - if ($this->QR[$k][$k] != 0) { - $s = 0.0; - for ($i = $k; $i < $this->m; ++$i) { - $s += $this->QR[$i][$k] * $Q[$i][$j]; - } - $s = -$s/$this->QR[$k][$k]; - for ($i = $k; $i < $this->m; ++$i) { - $Q[$i][$j] += $s * $this->QR[$i][$k]; - } - } - } - } - /* - for($i = 0; $i < count($Q); ++$i) { - for($j = 0; $j < count($Q); ++$j) { - if (! isset($Q[$i][$j]) ) { - $Q[$i][$j] = 0; - } - } - } - */ - return new PHPExcel_Shared_JAMA_Matrix($Q); - } // function getQ() - - /** - * Least squares solution of A*X = B - * - * @param Matrix $B A Matrix with as many rows as A and any number of columns. - * @return Matrix Matrix that minimizes the two norm of Q*R*X-B. - */ - public function solve($B) - { - if ($B->getRowDimension() == $this->m) { - if ($this->isFullRank()) { - // Copy right hand side - $nx = $B->getColumnDimension(); - $X = $B->getArrayCopy(); - // Compute Y = transpose(Q)*B - for ($k = 0; $k < $this->n; ++$k) { - for ($j = 0; $j < $nx; ++$j) { - $s = 0.0; - for ($i = $k; $i < $this->m; ++$i) { - $s += $this->QR[$i][$k] * $X[$i][$j]; - } - $s = -$s/$this->QR[$k][$k]; - for ($i = $k; $i < $this->m; ++$i) { - $X[$i][$j] += $s * $this->QR[$i][$k]; - } - } - } - // Solve R*X = Y; - for ($k = $this->n-1; $k >= 0; --$k) { - for ($j = 0; $j < $nx; ++$j) { - $X[$k][$j] /= $this->Rdiag[$k]; - } - for ($i = 0; $i < $k; ++$i) { - for ($j = 0; $j < $nx; ++$j) { - $X[$i][$j] -= $X[$k][$j]* $this->QR[$i][$k]; - } - } - } - $X = new PHPExcel_Shared_JAMA_Matrix($X); - return ($X->getMatrix(0, $this->n-1, 0, $nx)); - } else { - throw new PHPExcel_Calculation_Exception(self::MATRIX_RANK_EXCEPTION); - } - } else { - throw new PHPExcel_Calculation_Exception(PHPExcel_Shared_JAMA_Matrix::MATRIX_DIMENSION_EXCEPTION); - } - } -} diff --git a/application/third_party/PHPExcel/Shared/JAMA/SingularValueDecomposition.php b/application/third_party/PHPExcel/Shared/JAMA/SingularValueDecomposition.php deleted file mode 100644 index f57d122c..00000000 --- a/application/third_party/PHPExcel/Shared/JAMA/SingularValueDecomposition.php +++ /dev/null @@ -1,528 +0,0 @@ -<?php -/** - * @package JAMA - * - * For an m-by-n matrix A with m >= n, the singular value decomposition is - * an m-by-n orthogonal matrix U, an n-by-n diagonal matrix S, and - * an n-by-n orthogonal matrix V so that A = U*S*V'. - * - * The singular values, sigma[$k] = S[$k][$k], are ordered so that - * sigma[0] >= sigma[1] >= ... >= sigma[n-1]. - * - * The singular value decompostion always exists, so the constructor will - * never fail. The matrix condition number and the effective numerical - * rank can be computed from this decomposition. - * - * @author Paul Meagher - * @license PHP v3.0 - * @version 1.1 - */ -class SingularValueDecomposition -{ - /** - * Internal storage of U. - * @var array - */ - private $U = array(); - - /** - * Internal storage of V. - * @var array - */ - private $V = array(); - - /** - * Internal storage of singular values. - * @var array - */ - private $s = array(); - - /** - * Row dimension. - * @var int - */ - private $m; - - /** - * Column dimension. - * @var int - */ - private $n; - - /** - * Construct the singular value decomposition - * - * Derived from LINPACK code. - * - * @param $A Rectangular matrix - * @return Structure to access U, S and V. - */ - public function __construct($Arg) - { - // Initialize. - $A = $Arg->getArrayCopy(); - $this->m = $Arg->getRowDimension(); - $this->n = $Arg->getColumnDimension(); - $nu = min($this->m, $this->n); - $e = array(); - $work = array(); - $wantu = true; - $wantv = true; - $nct = min($this->m - 1, $this->n); - $nrt = max(0, min($this->n - 2, $this->m)); - - // Reduce A to bidiagonal form, storing the diagonal elements - // in s and the super-diagonal elements in e. - for ($k = 0; $k < max($nct, $nrt); ++$k) { - if ($k < $nct) { - // Compute the transformation for the k-th column and - // place the k-th diagonal in s[$k]. - // Compute 2-norm of k-th column without under/overflow. - $this->s[$k] = 0; - for ($i = $k; $i < $this->m; ++$i) { - $this->s[$k] = hypo($this->s[$k], $A[$i][$k]); - } - if ($this->s[$k] != 0.0) { - if ($A[$k][$k] < 0.0) { - $this->s[$k] = -$this->s[$k]; - } - for ($i = $k; $i < $this->m; ++$i) { - $A[$i][$k] /= $this->s[$k]; - } - $A[$k][$k] += 1.0; - } - $this->s[$k] = -$this->s[$k]; - } - - for ($j = $k + 1; $j < $this->n; ++$j) { - if (($k < $nct) & ($this->s[$k] != 0.0)) { - // Apply the transformation. - $t = 0; - for ($i = $k; $i < $this->m; ++$i) { - $t += $A[$i][$k] * $A[$i][$j]; - } - $t = -$t / $A[$k][$k]; - for ($i = $k; $i < $this->m; ++$i) { - $A[$i][$j] += $t * $A[$i][$k]; - } - // Place the k-th row of A into e for the - // subsequent calculation of the row transformation. - $e[$j] = $A[$k][$j]; - } - } - - if ($wantu and ($k < $nct)) { - // Place the transformation in U for subsequent back - // multiplication. - for ($i = $k; $i < $this->m; ++$i) { - $this->U[$i][$k] = $A[$i][$k]; - } - } - - if ($k < $nrt) { - // Compute the k-th row transformation and place the - // k-th super-diagonal in e[$k]. - // Compute 2-norm without under/overflow. - $e[$k] = 0; - for ($i = $k + 1; $i < $this->n; ++$i) { - $e[$k] = hypo($e[$k], $e[$i]); - } - if ($e[$k] != 0.0) { - if ($e[$k+1] < 0.0) { - $e[$k] = -$e[$k]; - } - for ($i = $k + 1; $i < $this->n; ++$i) { - $e[$i] /= $e[$k]; - } - $e[$k+1] += 1.0; - } - $e[$k] = -$e[$k]; - if (($k+1 < $this->m) and ($e[$k] != 0.0)) { - // Apply the transformation. - for ($i = $k+1; $i < $this->m; ++$i) { - $work[$i] = 0.0; - } - for ($j = $k+1; $j < $this->n; ++$j) { - for ($i = $k+1; $i < $this->m; ++$i) { - $work[$i] += $e[$j] * $A[$i][$j]; - } - } - for ($j = $k + 1; $j < $this->n; ++$j) { - $t = -$e[$j] / $e[$k+1]; - for ($i = $k + 1; $i < $this->m; ++$i) { - $A[$i][$j] += $t * $work[$i]; - } - } - } - if ($wantv) { - // Place the transformation in V for subsequent - // back multiplication. - for ($i = $k + 1; $i < $this->n; ++$i) { - $this->V[$i][$k] = $e[$i]; - } - } - } - } - - // Set up the final bidiagonal matrix or order p. - $p = min($this->n, $this->m + 1); - if ($nct < $this->n) { - $this->s[$nct] = $A[$nct][$nct]; - } - if ($this->m < $p) { - $this->s[$p-1] = 0.0; - } - if ($nrt + 1 < $p) { - $e[$nrt] = $A[$nrt][$p-1]; - } - $e[$p-1] = 0.0; - // If required, generate U. - if ($wantu) { - for ($j = $nct; $j < $nu; ++$j) { - for ($i = 0; $i < $this->m; ++$i) { - $this->U[$i][$j] = 0.0; - } - $this->U[$j][$j] = 1.0; - } - for ($k = $nct - 1; $k >= 0; --$k) { - if ($this->s[$k] != 0.0) { - for ($j = $k + 1; $j < $nu; ++$j) { - $t = 0; - for ($i = $k; $i < $this->m; ++$i) { - $t += $this->U[$i][$k] * $this->U[$i][$j]; - } - $t = -$t / $this->U[$k][$k]; - for ($i = $k; $i < $this->m; ++$i) { - $this->U[$i][$j] += $t * $this->U[$i][$k]; - } - } - for ($i = $k; $i < $this->m; ++$i) { - $this->U[$i][$k] = -$this->U[$i][$k]; - } - $this->U[$k][$k] = 1.0 + $this->U[$k][$k]; - for ($i = 0; $i < $k - 1; ++$i) { - $this->U[$i][$k] = 0.0; - } - } else { - for ($i = 0; $i < $this->m; ++$i) { - $this->U[$i][$k] = 0.0; - } - $this->U[$k][$k] = 1.0; - } - } - } - - // If required, generate V. - if ($wantv) { - for ($k = $this->n - 1; $k >= 0; --$k) { - if (($k < $nrt) and ($e[$k] != 0.0)) { - for ($j = $k + 1; $j < $nu; ++$j) { - $t = 0; - for ($i = $k + 1; $i < $this->n; ++$i) { - $t += $this->V[$i][$k]* $this->V[$i][$j]; - } - $t = -$t / $this->V[$k+1][$k]; - for ($i = $k + 1; $i < $this->n; ++$i) { - $this->V[$i][$j] += $t * $this->V[$i][$k]; - } - } - } - for ($i = 0; $i < $this->n; ++$i) { - $this->V[$i][$k] = 0.0; - } - $this->V[$k][$k] = 1.0; - } - } - - // Main iteration loop for the singular values. - $pp = $p - 1; - $iter = 0; - $eps = pow(2.0, -52.0); - - while ($p > 0) { - // Here is where a test for too many iterations would go. - // This section of the program inspects for negligible - // elements in the s and e arrays. On completion the - // variables kase and k are set as follows: - // kase = 1 if s(p) and e[k-1] are negligible and k<p - // kase = 2 if s(k) is negligible and k<p - // kase = 3 if e[k-1] is negligible, k<p, and - // s(k), ..., s(p) are not negligible (qr step). - // kase = 4 if e(p-1) is negligible (convergence). - for ($k = $p - 2; $k >= -1; --$k) { - if ($k == -1) { - break; - } - if (abs($e[$k]) <= $eps * (abs($this->s[$k]) + abs($this->s[$k+1]))) { - $e[$k] = 0.0; - break; - } - } - if ($k == $p - 2) { - $kase = 4; - } else { - for ($ks = $p - 1; $ks >= $k; --$ks) { - if ($ks == $k) { - break; - } - $t = ($ks != $p ? abs($e[$ks]) : 0.) + ($ks != $k + 1 ? abs($e[$ks-1]) : 0.); - if (abs($this->s[$ks]) <= $eps * $t) { - $this->s[$ks] = 0.0; - break; - } - } - if ($ks == $k) { - $kase = 3; - } elseif ($ks == $p-1) { - $kase = 1; - } else { - $kase = 2; - $k = $ks; - } - } - ++$k; - - // Perform the task indicated by kase. - switch ($kase) { - // Deflate negligible s(p). - case 1: - $f = $e[$p-2]; - $e[$p-2] = 0.0; - for ($j = $p - 2; $j >= $k; --$j) { - $t = hypo($this->s[$j], $f); - $cs = $this->s[$j] / $t; - $sn = $f / $t; - $this->s[$j] = $t; - if ($j != $k) { - $f = -$sn * $e[$j-1]; - $e[$j-1] = $cs * $e[$j-1]; - } - if ($wantv) { - for ($i = 0; $i < $this->n; ++$i) { - $t = $cs * $this->V[$i][$j] + $sn * $this->V[$i][$p-1]; - $this->V[$i][$p-1] = -$sn * $this->V[$i][$j] + $cs * $this->V[$i][$p-1]; - $this->V[$i][$j] = $t; - } - } - } - break; - // Split at negligible s(k). - case 2: - $f = $e[$k-1]; - $e[$k-1] = 0.0; - for ($j = $k; $j < $p; ++$j) { - $t = hypo($this->s[$j], $f); - $cs = $this->s[$j] / $t; - $sn = $f / $t; - $this->s[$j] = $t; - $f = -$sn * $e[$j]; - $e[$j] = $cs * $e[$j]; - if ($wantu) { - for ($i = 0; $i < $this->m; ++$i) { - $t = $cs * $this->U[$i][$j] + $sn * $this->U[$i][$k-1]; - $this->U[$i][$k-1] = -$sn * $this->U[$i][$j] + $cs * $this->U[$i][$k-1]; - $this->U[$i][$j] = $t; - } - } - } - break; - // Perform one qr step. - case 3: - // Calculate the shift. - $scale = max(max(max(max(abs($this->s[$p-1]), abs($this->s[$p-2])), abs($e[$p-2])), abs($this->s[$k])), abs($e[$k])); - $sp = $this->s[$p-1] / $scale; - $spm1 = $this->s[$p-2] / $scale; - $epm1 = $e[$p-2] / $scale; - $sk = $this->s[$k] / $scale; - $ek = $e[$k] / $scale; - $b = (($spm1 + $sp) * ($spm1 - $sp) + $epm1 * $epm1) / 2.0; - $c = ($sp * $epm1) * ($sp * $epm1); - $shift = 0.0; - if (($b != 0.0) || ($c != 0.0)) { - $shift = sqrt($b * $b + $c); - if ($b < 0.0) { - $shift = -$shift; - } - $shift = $c / ($b + $shift); - } - $f = ($sk + $sp) * ($sk - $sp) + $shift; - $g = $sk * $ek; - // Chase zeros. - for ($j = $k; $j < $p-1; ++$j) { - $t = hypo($f, $g); - $cs = $f/$t; - $sn = $g/$t; - if ($j != $k) { - $e[$j-1] = $t; - } - $f = $cs * $this->s[$j] + $sn * $e[$j]; - $e[$j] = $cs * $e[$j] - $sn * $this->s[$j]; - $g = $sn * $this->s[$j+1]; - $this->s[$j+1] = $cs * $this->s[$j+1]; - if ($wantv) { - for ($i = 0; $i < $this->n; ++$i) { - $t = $cs * $this->V[$i][$j] + $sn * $this->V[$i][$j+1]; - $this->V[$i][$j+1] = -$sn * $this->V[$i][$j] + $cs * $this->V[$i][$j+1]; - $this->V[$i][$j] = $t; - } - } - $t = hypo($f, $g); - $cs = $f/$t; - $sn = $g/$t; - $this->s[$j] = $t; - $f = $cs * $e[$j] + $sn * $this->s[$j+1]; - $this->s[$j+1] = -$sn * $e[$j] + $cs * $this->s[$j+1]; - $g = $sn * $e[$j+1]; - $e[$j+1] = $cs * $e[$j+1]; - if ($wantu && ($j < $this->m - 1)) { - for ($i = 0; $i < $this->m; ++$i) { - $t = $cs * $this->U[$i][$j] + $sn * $this->U[$i][$j+1]; - $this->U[$i][$j+1] = -$sn * $this->U[$i][$j] + $cs * $this->U[$i][$j+1]; - $this->U[$i][$j] = $t; - } - } - } - $e[$p-2] = $f; - $iter = $iter + 1; - break; - // Convergence. - case 4: - // Make the singular values positive. - if ($this->s[$k] <= 0.0) { - $this->s[$k] = ($this->s[$k] < 0.0 ? -$this->s[$k] : 0.0); - if ($wantv) { - for ($i = 0; $i <= $pp; ++$i) { - $this->V[$i][$k] = -$this->V[$i][$k]; - } - } - } - // Order the singular values. - while ($k < $pp) { - if ($this->s[$k] >= $this->s[$k+1]) { - break; - } - $t = $this->s[$k]; - $this->s[$k] = $this->s[$k+1]; - $this->s[$k+1] = $t; - if ($wantv and ($k < $this->n - 1)) { - for ($i = 0; $i < $this->n; ++$i) { - $t = $this->V[$i][$k+1]; - $this->V[$i][$k+1] = $this->V[$i][$k]; - $this->V[$i][$k] = $t; - } - } - if ($wantu and ($k < $this->m-1)) { - for ($i = 0; $i < $this->m; ++$i) { - $t = $this->U[$i][$k+1]; - $this->U[$i][$k+1] = $this->U[$i][$k]; - $this->U[$i][$k] = $t; - } - } - ++$k; - } - $iter = 0; - --$p; - break; - } // end switch - } // end while - - } // end constructor - - - /** - * Return the left singular vectors - * - * @access public - * @return U - */ - public function getU() - { - return new Matrix($this->U, $this->m, min($this->m + 1, $this->n)); - } - - - /** - * Return the right singular vectors - * - * @access public - * @return V - */ - public function getV() - { - return new Matrix($this->V); - } - - - /** - * Return the one-dimensional array of singular values - * - * @access public - * @return diagonal of S. - */ - public function getSingularValues() - { - return $this->s; - } - - - /** - * Return the diagonal matrix of singular values - * - * @access public - * @return S - */ - public function getS() - { - for ($i = 0; $i < $this->n; ++$i) { - for ($j = 0; $j < $this->n; ++$j) { - $S[$i][$j] = 0.0; - } - $S[$i][$i] = $this->s[$i]; - } - return new Matrix($S); - } - - - /** - * Two norm - * - * @access public - * @return max(S) - */ - public function norm2() - { - return $this->s[0]; - } - - - /** - * Two norm condition number - * - * @access public - * @return max(S)/min(S) - */ - public function cond() - { - return $this->s[0] / $this->s[min($this->m, $this->n) - 1]; - } - - - /** - * Effective numerical matrix rank - * - * @access public - * @return Number of nonnegligible singular values. - */ - public function rank() - { - $eps = pow(2.0, -52.0); - $tol = max($this->m, $this->n) * $this->s[0] * $eps; - $r = 0; - for ($i = 0; $i < count($this->s); ++$i) { - if ($this->s[$i] > $tol) { - ++$r; - } - } - return $r; - } -} diff --git a/application/third_party/PHPExcel/Shared/JAMA/utils/Error.php b/application/third_party/PHPExcel/Shared/JAMA/utils/Error.php deleted file mode 100644 index 71b8c994..00000000 --- a/application/third_party/PHPExcel/Shared/JAMA/utils/Error.php +++ /dev/null @@ -1,83 +0,0 @@ -<?php -/** - * @package JAMA - * - * Error handling - * @author Michael Bommarito - * @version 01292005 - */ - -//Language constant -define('JAMALANG', 'EN'); - - -//All errors may be defined by the following format: -//define('ExceptionName', N); -//$error['lang'][ExceptionName] = 'Error message'; -$error = array(); - -/* -I've used Babelfish and a little poor knowledge of Romance/Germanic languages for the translations here. -Feel free to correct anything that looks amiss to you. -*/ - -define('POLYMORPHIC_ARGUMENT_EXCEPTION', -1); -$error['EN'][POLYMORPHIC_ARGUMENT_EXCEPTION] = "Invalid argument pattern for polymorphic function."; -$error['FR'][POLYMORPHIC_ARGUMENT_EXCEPTION] = "Modèle inadmissible d'argument pour la fonction polymorphe.". -$error['DE'][POLYMORPHIC_ARGUMENT_EXCEPTION] = "Unzulässiges Argumentmuster für polymorphe Funktion."; - -define('ARGUMENT_TYPE_EXCEPTION', -2); -$error['EN'][ARGUMENT_TYPE_EXCEPTION] = "Invalid argument type."; -$error['FR'][ARGUMENT_TYPE_EXCEPTION] = "Type inadmissible d'argument."; -$error['DE'][ARGUMENT_TYPE_EXCEPTION] = "Unzulässige Argumentart."; - -define('ARGUMENT_BOUNDS_EXCEPTION', -3); -$error['EN'][ARGUMENT_BOUNDS_EXCEPTION] = "Invalid argument range."; -$error['FR'][ARGUMENT_BOUNDS_EXCEPTION] = "Gamme inadmissible d'argument."; -$error['DE'][ARGUMENT_BOUNDS_EXCEPTION] = "Unzulässige Argumentstrecke."; - -define('MATRIX_DIMENSION_EXCEPTION', -4); -$error['EN'][MATRIX_DIMENSION_EXCEPTION] = "Matrix dimensions are not equal."; -$error['FR'][MATRIX_DIMENSION_EXCEPTION] = "Les dimensions de Matrix ne sont pas égales."; -$error['DE'][MATRIX_DIMENSION_EXCEPTION] = "Matrixmaße sind nicht gleich."; - -define('PRECISION_LOSS_EXCEPTION', -5); -$error['EN'][PRECISION_LOSS_EXCEPTION] = "Significant precision loss detected."; -$error['FR'][PRECISION_LOSS_EXCEPTION] = "Perte significative de précision détectée."; -$error['DE'][PRECISION_LOSS_EXCEPTION] = "Bedeutender Präzision Verlust ermittelte."; - -define('MATRIX_SPD_EXCEPTION', -6); -$error['EN'][MATRIX_SPD_EXCEPTION] = "Can only perform operation on symmetric positive definite matrix."; -$error['FR'][MATRIX_SPD_EXCEPTION] = "Perte significative de précision détectée."; -$error['DE'][MATRIX_SPD_EXCEPTION] = "Bedeutender Präzision Verlust ermittelte."; - -define('MATRIX_SINGULAR_EXCEPTION', -7); -$error['EN'][MATRIX_SINGULAR_EXCEPTION] = "Can only perform operation on singular matrix."; - -define('MATRIX_RANK_EXCEPTION', -8); -$error['EN'][MATRIX_RANK_EXCEPTION] = "Can only perform operation on full-rank matrix."; - -define('ARRAY_LENGTH_EXCEPTION', -9); -$error['EN'][ARRAY_LENGTH_EXCEPTION] = "Array length must be a multiple of m."; - -define('ROW_LENGTH_EXCEPTION', -10); -$error['EN'][ROW_LENGTH_EXCEPTION] = "All rows must have the same length."; - -/** - * Custom error handler - * @param int $num Error number - */ -function JAMAError($errorNumber = null) -{ - global $error; - - if (isset($errorNumber)) { - if (isset($error[JAMALANG][$errorNumber])) { - return $error[JAMALANG][$errorNumber]; - } else { - return $error['EN'][$errorNumber]; - } - } else { - return ("Invalid argument to JAMAError()"); - } -} diff --git a/application/third_party/PHPExcel/Shared/JAMA/utils/Maths.php b/application/third_party/PHPExcel/Shared/JAMA/utils/Maths.php deleted file mode 100644 index 386c1e67..00000000 --- a/application/third_party/PHPExcel/Shared/JAMA/utils/Maths.php +++ /dev/null @@ -1,44 +0,0 @@ -<?php -/** - * @package JAMA - * - * Pythagorean Theorem: - * - * a = 3 - * b = 4 - * r = sqrt(square(a) + square(b)) - * r = 5 - * - * r = sqrt(a^2 + b^2) without under/overflow. - */ -function hypo($a, $b) -{ - if (abs($a) > abs($b)) { - $r = $b / $a; - $r = abs($a) * sqrt(1 + $r * $r); - } elseif ($b != 0) { - $r = $a / $b; - $r = abs($b) * sqrt(1 + $r * $r); - } else { - $r = 0.0; - } - return $r; -} // function hypo() - - -/** - * Mike Bommarito's version. - * Compute n-dimensional hyotheneuse. - * -function hypot() { - $s = 0; - foreach (func_get_args() as $d) { - if (is_numeric($d)) { - $s += pow($d, 2); - } else { - throw new PHPExcel_Calculation_Exception(JAMAError(ARGUMENT_TYPE_EXCEPTION)); - } - } - return sqrt($s); -} -*/ diff --git a/application/third_party/PHPExcel/Shared/OLE.php b/application/third_party/PHPExcel/Shared/OLE.php deleted file mode 100644 index 42a3c529..00000000 --- a/application/third_party/PHPExcel/Shared/OLE.php +++ /dev/null @@ -1,526 +0,0 @@ -<?php -/* vim: set expandtab tabstop=4 shiftwidth=4: */ -// +----------------------------------------------------------------------+ -// | PHP Version 4 | -// +----------------------------------------------------------------------+ -// | Copyright (c) 1997-2002 The PHP Group | -// +----------------------------------------------------------------------+ -// | This source file is subject to version 2.02 of the PHP license, | -// | that is bundled with this package in the file LICENSE, and is | -// | available at through the world-wide-web at | -// | http://www.php.net/license/2_02.txt. | -// | If you did not receive a copy of the PHP license and are unable to | -// | obtain it through the world-wide-web, please send a note to | -// | license@php.net so we can mail you a copy immediately. | -// +----------------------------------------------------------------------+ -// | Author: Xavier Noguer <xnoguer@php.net> | -// | Based on OLE::Storage_Lite by Kawai, Takanori | -// +----------------------------------------------------------------------+ -// -// $Id: OLE.php,v 1.13 2007/03/07 14:38:25 schmidt Exp $ - - -/** -* Array for storing OLE instances that are accessed from -* OLE_ChainedBlockStream::stream_open(). -* @var array -*/ -$GLOBALS['_OLE_INSTANCES'] = array(); - -/** -* OLE package base class. -* -* @author Xavier Noguer <xnoguer@php.net> -* @author Christian Schmidt <schmidt@php.net> -* @category PHPExcel -* @package PHPExcel_Shared_OLE -*/ -class PHPExcel_Shared_OLE -{ - const OLE_PPS_TYPE_ROOT = 5; - const OLE_PPS_TYPE_DIR = 1; - const OLE_PPS_TYPE_FILE = 2; - const OLE_DATA_SIZE_SMALL = 0x1000; - const OLE_LONG_INT_SIZE = 4; - const OLE_PPS_SIZE = 0x80; - - /** - * The file handle for reading an OLE container - * @var resource - */ - public $_file_handle; - - /** - * Array of PPS's found on the OLE container - * @var array - */ - public $_list = array(); - - /** - * Root directory of OLE container - * @var OLE_PPS_Root - */ - public $root; - - /** - * Big Block Allocation Table - * @var array (blockId => nextBlockId) - */ - public $bbat; - - /** - * Short Block Allocation Table - * @var array (blockId => nextBlockId) - */ - public $sbat; - - /** - * Size of big blocks. This is usually 512. - * @var int number of octets per block. - */ - public $bigBlockSize; - - /** - * Size of small blocks. This is usually 64. - * @var int number of octets per block - */ - public $smallBlockSize; - - /** - * Reads an OLE container from the contents of the file given. - * - * @acces public - * @param string $file - * @return mixed true on success, PEAR_Error on failure - */ - public function read($file) - { - $fh = fopen($file, "r"); - if (!$fh) { - throw new PHPExcel_Reader_Exception("Can't open file $file"); - } - $this->_file_handle = $fh; - - $signature = fread($fh, 8); - if ("\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1" != $signature) { - throw new PHPExcel_Reader_Exception("File doesn't seem to be an OLE container."); - } - fseek($fh, 28); - if (fread($fh, 2) != "\xFE\xFF") { - // This shouldn't be a problem in practice - throw new PHPExcel_Reader_Exception("Only Little-Endian encoding is supported."); - } - // Size of blocks and short blocks in bytes - $this->bigBlockSize = pow(2, self::_readInt2($fh)); - $this->smallBlockSize = pow(2, self::_readInt2($fh)); - - // Skip UID, revision number and version number - fseek($fh, 44); - // Number of blocks in Big Block Allocation Table - $bbatBlockCount = self::_readInt4($fh); - - // Root chain 1st block - $directoryFirstBlockId = self::_readInt4($fh); - - // Skip unused bytes - fseek($fh, 56); - // Streams shorter than this are stored using small blocks - $this->bigBlockThreshold = self::_readInt4($fh); - // Block id of first sector in Short Block Allocation Table - $sbatFirstBlockId = self::_readInt4($fh); - // Number of blocks in Short Block Allocation Table - $sbbatBlockCount = self::_readInt4($fh); - // Block id of first sector in Master Block Allocation Table - $mbatFirstBlockId = self::_readInt4($fh); - // Number of blocks in Master Block Allocation Table - $mbbatBlockCount = self::_readInt4($fh); - $this->bbat = array(); - - // Remaining 4 * 109 bytes of current block is beginning of Master - // Block Allocation Table - $mbatBlocks = array(); - for ($i = 0; $i < 109; ++$i) { - $mbatBlocks[] = self::_readInt4($fh); - } - - // Read rest of Master Block Allocation Table (if any is left) - $pos = $this->_getBlockOffset($mbatFirstBlockId); - for ($i = 0; $i < $mbbatBlockCount; ++$i) { - fseek($fh, $pos); - for ($j = 0; $j < $this->bigBlockSize / 4 - 1; ++$j) { - $mbatBlocks[] = self::_readInt4($fh); - } - // Last block id in each block points to next block - $pos = $this->_getBlockOffset(self::_readInt4($fh)); - } - - // Read Big Block Allocation Table according to chain specified by - // $mbatBlocks - for ($i = 0; $i < $bbatBlockCount; ++$i) { - $pos = $this->_getBlockOffset($mbatBlocks[$i]); - fseek($fh, $pos); - for ($j = 0; $j < $this->bigBlockSize / 4; ++$j) { - $this->bbat[] = self::_readInt4($fh); - } - } - - // Read short block allocation table (SBAT) - $this->sbat = array(); - $shortBlockCount = $sbbatBlockCount * $this->bigBlockSize / 4; - $sbatFh = $this->getStream($sbatFirstBlockId); - for ($blockId = 0; $blockId < $shortBlockCount; ++$blockId) { - $this->sbat[$blockId] = self::_readInt4($sbatFh); - } - fclose($sbatFh); - - $this->_readPpsWks($directoryFirstBlockId); - - return true; - } - - /** - * @param int block id - * @param int byte offset from beginning of file - * @access public - */ - public function _getBlockOffset($blockId) - { - return 512 + $blockId * $this->bigBlockSize; - } - - /** - * Returns a stream for use with fread() etc. External callers should - * use PHPExcel_Shared_OLE_PPS_File::getStream(). - * @param int|PPS block id or PPS - * @return resource read-only stream - */ - public function getStream($blockIdOrPps) - { - static $isRegistered = false; - if (!$isRegistered) { - stream_wrapper_register('ole-chainedblockstream', 'PHPExcel_Shared_OLE_ChainedBlockStream'); - $isRegistered = true; - } - - // Store current instance in global array, so that it can be accessed - // in OLE_ChainedBlockStream::stream_open(). - // Object is removed from self::$instances in OLE_Stream::close(). - $GLOBALS['_OLE_INSTANCES'][] = $this; - $instanceId = end(array_keys($GLOBALS['_OLE_INSTANCES'])); - - $path = 'ole-chainedblockstream://oleInstanceId=' . $instanceId; - if ($blockIdOrPps instanceof PHPExcel_Shared_OLE_PPS) { - $path .= '&blockId=' . $blockIdOrPps->_StartBlock; - $path .= '&size=' . $blockIdOrPps->Size; - } else { - $path .= '&blockId=' . $blockIdOrPps; - } - return fopen($path, 'r'); - } - - /** - * Reads a signed char. - * @param resource file handle - * @return int - * @access public - */ - private static function _readInt1($fh) - { - list(, $tmp) = unpack("c", fread($fh, 1)); - return $tmp; - } - - /** - * Reads an unsigned short (2 octets). - * @param resource file handle - * @return int - * @access public - */ - private static function _readInt2($fh) - { - list(, $tmp) = unpack("v", fread($fh, 2)); - return $tmp; - } - - /** - * Reads an unsigned long (4 octets). - * @param resource file handle - * @return int - * @access public - */ - private static function _readInt4($fh) - { - list(, $tmp) = unpack("V", fread($fh, 4)); - return $tmp; - } - - /** - * Gets information about all PPS's on the OLE container from the PPS WK's - * creates an OLE_PPS object for each one. - * - * @access public - * @param integer the block id of the first block - * @return mixed true on success, PEAR_Error on failure - */ - public function _readPpsWks($blockId) - { - $fh = $this->getStream($blockId); - for ($pos = 0;; $pos += 128) { - fseek($fh, $pos, SEEK_SET); - $nameUtf16 = fread($fh, 64); - $nameLength = self::_readInt2($fh); - $nameUtf16 = substr($nameUtf16, 0, $nameLength - 2); - // Simple conversion from UTF-16LE to ISO-8859-1 - $name = str_replace("\x00", "", $nameUtf16); - $type = self::_readInt1($fh); - switch ($type) { - case self::OLE_PPS_TYPE_ROOT: - $pps = new PHPExcel_Shared_OLE_PPS_Root(null, null, array()); - $this->root = $pps; - break; - case self::OLE_PPS_TYPE_DIR: - $pps = new PHPExcel_Shared_OLE_PPS(null, null, null, null, null, null, null, null, null, array()); - break; - case self::OLE_PPS_TYPE_FILE: - $pps = new PHPExcel_Shared_OLE_PPS_File($name); - break; - default: - continue; - } - fseek($fh, 1, SEEK_CUR); - $pps->Type = $type; - $pps->Name = $name; - $pps->PrevPps = self::_readInt4($fh); - $pps->NextPps = self::_readInt4($fh); - $pps->DirPps = self::_readInt4($fh); - fseek($fh, 20, SEEK_CUR); - $pps->Time1st = self::OLE2LocalDate(fread($fh, 8)); - $pps->Time2nd = self::OLE2LocalDate(fread($fh, 8)); - $pps->_StartBlock = self::_readInt4($fh); - $pps->Size = self::_readInt4($fh); - $pps->No = count($this->_list); - $this->_list[] = $pps; - - // check if the PPS tree (starting from root) is complete - if (isset($this->root) && $this->_ppsTreeComplete($this->root->No)) { - break; - } - } - fclose($fh); - - // Initialize $pps->children on directories - foreach ($this->_list as $pps) { - if ($pps->Type == self::OLE_PPS_TYPE_DIR || $pps->Type == self::OLE_PPS_TYPE_ROOT) { - $nos = array($pps->DirPps); - $pps->children = array(); - while ($nos) { - $no = array_pop($nos); - if ($no != -1) { - $childPps = $this->_list[$no]; - $nos[] = $childPps->PrevPps; - $nos[] = $childPps->NextPps; - $pps->children[] = $childPps; - } - } - } - } - - return true; - } - - /** - * It checks whether the PPS tree is complete (all PPS's read) - * starting with the given PPS (not necessarily root) - * - * @access public - * @param integer $index The index of the PPS from which we are checking - * @return boolean Whether the PPS tree for the given PPS is complete - */ - public function _ppsTreeComplete($index) - { - return isset($this->_list[$index]) && - ($pps = $this->_list[$index]) && - ($pps->PrevPps == -1 || - $this->_ppsTreeComplete($pps->PrevPps)) && - ($pps->NextPps == -1 || - $this->_ppsTreeComplete($pps->NextPps)) && - ($pps->DirPps == -1 || - $this->_ppsTreeComplete($pps->DirPps)); - } - - /** - * Checks whether a PPS is a File PPS or not. - * If there is no PPS for the index given, it will return false. - * - * @access public - * @param integer $index The index for the PPS - * @return bool true if it's a File PPS, false otherwise - */ - public function isFile($index) - { - if (isset($this->_list[$index])) { - return ($this->_list[$index]->Type == self::OLE_PPS_TYPE_FILE); - } - return false; - } - - /** - * Checks whether a PPS is a Root PPS or not. - * If there is no PPS for the index given, it will return false. - * - * @access public - * @param integer $index The index for the PPS. - * @return bool true if it's a Root PPS, false otherwise - */ - public function isRoot($index) - { - if (isset($this->_list[$index])) { - return ($this->_list[$index]->Type == self::OLE_PPS_TYPE_ROOT); - } - return false; - } - - /** - * Gives the total number of PPS's found in the OLE container. - * - * @access public - * @return integer The total number of PPS's found in the OLE container - */ - public function ppsTotal() - { - return count($this->_list); - } - - /** - * Gets data from a PPS - * If there is no PPS for the index given, it will return an empty string. - * - * @access public - * @param integer $index The index for the PPS - * @param integer $position The position from which to start reading - * (relative to the PPS) - * @param integer $length The amount of bytes to read (at most) - * @return string The binary string containing the data requested - * @see OLE_PPS_File::getStream() - */ - public function getData($index, $position, $length) - { - // if position is not valid return empty string - if (!isset($this->_list[$index]) || ($position >= $this->_list[$index]->Size) || ($position < 0)) { - return ''; - } - $fh = $this->getStream($this->_list[$index]); - $data = stream_get_contents($fh, $length, $position); - fclose($fh); - return $data; - } - - /** - * Gets the data length from a PPS - * If there is no PPS for the index given, it will return 0. - * - * @access public - * @param integer $index The index for the PPS - * @return integer The amount of bytes in data the PPS has - */ - public function getDataLength($index) - { - if (isset($this->_list[$index])) { - return $this->_list[$index]->Size; - } - return 0; - } - - /** - * Utility function to transform ASCII text to Unicode - * - * @access public - * @static - * @param string $ascii The ASCII string to transform - * @return string The string in Unicode - */ - public static function Asc2Ucs($ascii) - { - $rawname = ''; - for ($i = 0; $i < strlen($ascii); ++$i) { - $rawname .= $ascii{$i} . "\x00"; - } - return $rawname; - } - - /** - * Utility function - * Returns a string for the OLE container with the date given - * - * @access public - * @static - * @param integer $date A timestamp - * @return string The string for the OLE container - */ - public static function LocalDate2OLE($date = null) - { - if (!isset($date)) { - return "\x00\x00\x00\x00\x00\x00\x00\x00"; - } - - // factor used for separating numbers into 4 bytes parts - $factor = pow(2, 32); - - // days from 1-1-1601 until the beggining of UNIX era - $days = 134774; - // calculate seconds - $big_date = $days*24*3600 + gmmktime(date("H", $date), date("i", $date), date("s", $date), date("m", $date), date("d", $date), date("Y", $date)); - // multiply just to make MS happy - $big_date *= 10000000; - - $high_part = floor($big_date / $factor); - // lower 4 bytes - $low_part = floor((($big_date / $factor) - $high_part) * $factor); - - // Make HEX string - $res = ''; - - for ($i = 0; $i < 4; ++$i) { - $hex = $low_part % 0x100; - $res .= pack('c', $hex); - $low_part /= 0x100; - } - for ($i = 0; $i < 4; ++$i) { - $hex = $high_part % 0x100; - $res .= pack('c', $hex); - $high_part /= 0x100; - } - return $res; - } - - /** - * Returns a timestamp from an OLE container's date - * - * @access public - * @static - * @param integer $string A binary string with the encoded date - * @return string The timestamp corresponding to the string - */ - public static function OLE2LocalDate($string) - { - if (strlen($string) != 8) { - return new PEAR_Error("Expecting 8 byte string"); - } - - // factor used for separating numbers into 4 bytes parts - $factor = pow(2, 32); - list(, $high_part) = unpack('V', substr($string, 4, 4)); - list(, $low_part) = unpack('V', substr($string, 0, 4)); - - $big_date = ($high_part * $factor) + $low_part; - // translate to seconds - $big_date /= 10000000; - - // days from 1-1-1601 until the beggining of UNIX era - $days = 134774; - - // translate to seconds from beggining of UNIX era - $big_date -= $days * 24 * 3600; - return floor($big_date); - } -} diff --git a/application/third_party/PHPExcel/Shared/OLE/ChainedBlockStream.php b/application/third_party/PHPExcel/Shared/OLE/ChainedBlockStream.php deleted file mode 100644 index 84d2cc50..00000000 --- a/application/third_party/PHPExcel/Shared/OLE/ChainedBlockStream.php +++ /dev/null @@ -1,206 +0,0 @@ -<?php - -/** - * PHPExcel_Shared_OLE_ChainedBlockStream - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Shared_OLE - * @copyright Copyright (c) 2006 - 2007 Christian Schmidt - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Shared_OLE_ChainedBlockStream -{ - /** - * The OLE container of the file that is being read. - * @var OLE - */ - public $ole; - - /** - * Parameters specified by fopen(). - * @var array - */ - public $params; - - /** - * The binary data of the file. - * @var string - */ - public $data; - - /** - * The file pointer. - * @var int byte offset - */ - public $pos; - - /** - * Implements support for fopen(). - * For creating streams using this wrapper, use OLE_PPS_File::getStream(). - * - * @param string $path resource name including scheme, e.g. - * ole-chainedblockstream://oleInstanceId=1 - * @param string $mode only "r" is supported - * @param int $options mask of STREAM_REPORT_ERRORS and STREAM_USE_PATH - * @param string &$openedPath absolute path of the opened stream (out parameter) - * @return bool true on success - */ - public function stream_open($path, $mode, $options, &$openedPath) - { - if ($mode != 'r') { - if ($options & STREAM_REPORT_ERRORS) { - trigger_error('Only reading is supported', E_USER_WARNING); - } - return false; - } - - // 25 is length of "ole-chainedblockstream://" - parse_str(substr($path, 25), $this->params); - if (!isset($this->params['oleInstanceId'], $this->params['blockId'], $GLOBALS['_OLE_INSTANCES'][$this->params['oleInstanceId']])) { - if ($options & STREAM_REPORT_ERRORS) { - trigger_error('OLE stream not found', E_USER_WARNING); - } - return false; - } - $this->ole = $GLOBALS['_OLE_INSTANCES'][$this->params['oleInstanceId']]; - - $blockId = $this->params['blockId']; - $this->data = ''; - if (isset($this->params['size']) && $this->params['size'] < $this->ole->bigBlockThreshold && $blockId != $this->ole->root->_StartBlock) { - // Block id refers to small blocks - $rootPos = $this->ole->_getBlockOffset($this->ole->root->_StartBlock); - while ($blockId != -2) { - $pos = $rootPos + $blockId * $this->ole->bigBlockSize; - $blockId = $this->ole->sbat[$blockId]; - fseek($this->ole->_file_handle, $pos); - $this->data .= fread($this->ole->_file_handle, $this->ole->bigBlockSize); - } - } else { - // Block id refers to big blocks - while ($blockId != -2) { - $pos = $this->ole->_getBlockOffset($blockId); - fseek($this->ole->_file_handle, $pos); - $this->data .= fread($this->ole->_file_handle, $this->ole->bigBlockSize); - $blockId = $this->ole->bbat[$blockId]; - } - } - if (isset($this->params['size'])) { - $this->data = substr($this->data, 0, $this->params['size']); - } - - if ($options & STREAM_USE_PATH) { - $openedPath = $path; - } - - return true; - } - - /** - * Implements support for fclose(). - * - */ - public function stream_close() - { - $this->ole = null; - unset($GLOBALS['_OLE_INSTANCES']); - } - - /** - * Implements support for fread(), fgets() etc. - * - * @param int $count maximum number of bytes to read - * @return string - */ - public function stream_read($count) - { - if ($this->stream_eof()) { - return false; - } - $s = substr($this->data, $this->pos, $count); - $this->pos += $count; - return $s; - } - - /** - * Implements support for feof(). - * - * @return bool TRUE if the file pointer is at EOF; otherwise FALSE - */ - public function stream_eof() - { - return $this->pos >= strlen($this->data); - } - - /** - * Returns the position of the file pointer, i.e. its offset into the file - * stream. Implements support for ftell(). - * - * @return int - */ - public function stream_tell() - { - return $this->pos; - } - - /** - * Implements support for fseek(). - * - * @param int $offset byte offset - * @param int $whence SEEK_SET, SEEK_CUR or SEEK_END - * @return bool - */ - public function stream_seek($offset, $whence) - { - if ($whence == SEEK_SET && $offset >= 0) { - $this->pos = $offset; - } elseif ($whence == SEEK_CUR && -$offset <= $this->pos) { - $this->pos += $offset; - } elseif ($whence == SEEK_END && -$offset <= sizeof($this->data)) { - $this->pos = strlen($this->data) + $offset; - } else { - return false; - } - return true; - } - - /** - * Implements support for fstat(). Currently the only supported field is - * "size". - * @return array - */ - public function stream_stat() - { - return array( - 'size' => strlen($this->data), - ); - } - - // Methods used by stream_wrapper_register() that are not implemented: - // bool stream_flush ( void ) - // int stream_write ( string data ) - // bool rename ( string path_from, string path_to ) - // bool mkdir ( string path, int mode, int options ) - // bool rmdir ( string path, int options ) - // bool dir_opendir ( string path, int options ) - // array url_stat ( string path, int flags ) - // string dir_readdir ( void ) - // bool dir_rewinddir ( void ) - // bool dir_closedir ( void ) -} diff --git a/application/third_party/PHPExcel/Shared/OLE/PPS.php b/application/third_party/PHPExcel/Shared/OLE/PPS.php deleted file mode 100644 index 608a892a..00000000 --- a/application/third_party/PHPExcel/Shared/OLE/PPS.php +++ /dev/null @@ -1,230 +0,0 @@ -<?php -/* vim: set expandtab tabstop=4 shiftwidth=4: */ -// +----------------------------------------------------------------------+ -// | PHP Version 4 | -// +----------------------------------------------------------------------+ -// | Copyright (c) 1997-2002 The PHP Group | -// +----------------------------------------------------------------------+ -// | This source file is subject to version 2.02 of the PHP license, | -// | that is bundled with this package in the file LICENSE, and is | -// | available at through the world-wide-web at | -// | http://www.php.net/license/2_02.txt. | -// | If you did not receive a copy of the PHP license and are unable to | -// | obtain it through the world-wide-web, please send a note to | -// | license@php.net so we can mail you a copy immediately. | -// +----------------------------------------------------------------------+ -// | Author: Xavier Noguer <xnoguer@php.net> | -// | Based on OLE::Storage_Lite by Kawai, Takanori | -// +----------------------------------------------------------------------+ -// -// $Id: PPS.php,v 1.7 2007/02/13 21:00:42 schmidt Exp $ - - -/** -* Class for creating PPS's for OLE containers -* -* @author Xavier Noguer <xnoguer@php.net> -* @category PHPExcel -* @package PHPExcel_Shared_OLE -*/ -class PHPExcel_Shared_OLE_PPS -{ - /** - * The PPS index - * @var integer - */ - public $No; - - /** - * The PPS name (in Unicode) - * @var string - */ - public $Name; - - /** - * The PPS type. Dir, Root or File - * @var integer - */ - public $Type; - - /** - * The index of the previous PPS - * @var integer - */ - public $PrevPps; - - /** - * The index of the next PPS - * @var integer - */ - public $NextPps; - - /** - * The index of it's first child if this is a Dir or Root PPS - * @var integer - */ - public $DirPps; - - /** - * A timestamp - * @var integer - */ - public $Time1st; - - /** - * A timestamp - * @var integer - */ - public $Time2nd; - - /** - * Starting block (small or big) for this PPS's data inside the container - * @var integer - */ - public $_StartBlock; - - /** - * The size of the PPS's data (in bytes) - * @var integer - */ - public $Size; - - /** - * The PPS's data (only used if it's not using a temporary file) - * @var string - */ - public $_data; - - /** - * Array of child PPS's (only used by Root and Dir PPS's) - * @var array - */ - public $children = array(); - - /** - * Pointer to OLE container - * @var OLE - */ - public $ole; - - /** - * The constructor - * - * @access public - * @param integer $No The PPS index - * @param string $name The PPS name - * @param integer $type The PPS type. Dir, Root or File - * @param integer $prev The index of the previous PPS - * @param integer $next The index of the next PPS - * @param integer $dir The index of it's first child if this is a Dir or Root PPS - * @param integer $time_1st A timestamp - * @param integer $time_2nd A timestamp - * @param string $data The (usually binary) source data of the PPS - * @param array $children Array containing children PPS for this PPS - */ - public function __construct($No, $name, $type, $prev, $next, $dir, $time_1st, $time_2nd, $data, $children) - { - $this->No = $No; - $this->Name = $name; - $this->Type = $type; - $this->PrevPps = $prev; - $this->NextPps = $next; - $this->DirPps = $dir; - $this->Time1st = $time_1st; - $this->Time2nd = $time_2nd; - $this->_data = $data; - $this->children = $children; - if ($data != '') { - $this->Size = strlen($data); - } else { - $this->Size = 0; - } - } - - /** - * Returns the amount of data saved for this PPS - * - * @access public - * @return integer The amount of data (in bytes) - */ - public function _DataLen() - { - if (!isset($this->_data)) { - return 0; - } - //if (isset($this->_PPS_FILE)) { - // fseek($this->_PPS_FILE, 0); - // $stats = fstat($this->_PPS_FILE); - // return $stats[7]; - //} else { - return strlen($this->_data); - //} - } - - /** - * Returns a string with the PPS's WK (What is a WK?) - * - * @access public - * @return string The binary string - */ - public function _getPpsWk() - { - $ret = str_pad($this->Name, 64, "\x00"); - - $ret .= pack("v", strlen($this->Name) + 2) // 66 - . pack("c", $this->Type) // 67 - . pack("c", 0x00) //UK // 68 - . pack("V", $this->PrevPps) //Prev // 72 - . pack("V", $this->NextPps) //Next // 76 - . pack("V", $this->DirPps) //Dir // 80 - . "\x00\x09\x02\x00" // 84 - . "\x00\x00\x00\x00" // 88 - . "\xc0\x00\x00\x00" // 92 - . "\x00\x00\x00\x46" // 96 // Seems to be ok only for Root - . "\x00\x00\x00\x00" // 100 - . PHPExcel_Shared_OLE::LocalDate2OLE($this->Time1st) // 108 - . PHPExcel_Shared_OLE::LocalDate2OLE($this->Time2nd) // 116 - . pack("V", isset($this->_StartBlock)? - $this->_StartBlock:0) // 120 - . pack("V", $this->Size) // 124 - . pack("V", 0); // 128 - return $ret; - } - - /** - * Updates index and pointers to previous, next and children PPS's for this - * PPS. I don't think it'll work with Dir PPS's. - * - * @access public - * @param array &$raList Reference to the array of PPS's for the whole OLE - * container - * @return integer The index for this PPS - */ - public static function _savePpsSetPnt(&$raList, $to_save, $depth = 0) - { - if (!is_array($to_save) || (empty($to_save))) { - return 0xFFFFFFFF; - } elseif (count($to_save) == 1) { - $cnt = count($raList); - // If the first entry, it's the root... Don't clone it! - $raList[$cnt] = ( $depth == 0 ) ? $to_save[0] : clone $to_save[0]; - $raList[$cnt]->No = $cnt; - $raList[$cnt]->PrevPps = 0xFFFFFFFF; - $raList[$cnt]->NextPps = 0xFFFFFFFF; - $raList[$cnt]->DirPps = self::_savePpsSetPnt($raList, @$raList[$cnt]->children, $depth++); - } else { - $iPos = floor(count($to_save) / 2); - $aPrev = array_slice($to_save, 0, $iPos); - $aNext = array_slice($to_save, $iPos + 1); - $cnt = count($raList); - // If the first entry, it's the root... Don't clone it! - $raList[$cnt] = ( $depth == 0 ) ? $to_save[$iPos] : clone $to_save[$iPos]; - $raList[$cnt]->No = $cnt; - $raList[$cnt]->PrevPps = self::_savePpsSetPnt($raList, $aPrev, $depth++); - $raList[$cnt]->NextPps = self::_savePpsSetPnt($raList, $aNext, $depth++); - $raList[$cnt]->DirPps = self::_savePpsSetPnt($raList, @$raList[$cnt]->children, $depth++); - - } - return $cnt; - } -} diff --git a/application/third_party/PHPExcel/Shared/OLE/PPS/File.php b/application/third_party/PHPExcel/Shared/OLE/PPS/File.php deleted file mode 100644 index 1ca337cb..00000000 --- a/application/third_party/PHPExcel/Shared/OLE/PPS/File.php +++ /dev/null @@ -1,74 +0,0 @@ -<?php -/* vim: set expandtab tabstop=4 shiftwidth=4: */ -// +----------------------------------------------------------------------+ -// | PHP Version 4 | -// +----------------------------------------------------------------------+ -// | Copyright (c) 1997-2002 The PHP Group | -// +----------------------------------------------------------------------+ -// | This source file is subject to version 2.02 of the PHP license, | -// | that is bundled with this package in the file LICENSE, and is | -// | available at through the world-wide-web at | -// | http://www.php.net/license/2_02.txt. | -// | If you did not receive a copy of the PHP license and are unable to | -// | obtain it through the world-wide-web, please send a note to | -// | license@php.net so we can mail you a copy immediately. | -// +----------------------------------------------------------------------+ -// | Author: Xavier Noguer <xnoguer@php.net> | -// | Based on OLE::Storage_Lite by Kawai, Takanori | -// +----------------------------------------------------------------------+ -// -// $Id: File.php,v 1.11 2007/02/13 21:00:42 schmidt Exp $ - - -/** -* Class for creating File PPS's for OLE containers -* -* @author Xavier Noguer <xnoguer@php.net> -* @category PHPExcel -* @package PHPExcel_Shared_OLE -*/ -class PHPExcel_Shared_OLE_PPS_File extends PHPExcel_Shared_OLE_PPS -{ - /** - * The constructor - * - * @access public - * @param string $name The name of the file (in Unicode) - * @see OLE::Asc2Ucs() - */ - public function __construct($name) - { - parent::__construct(null, $name, PHPExcel_Shared_OLE::OLE_PPS_TYPE_FILE, null, null, null, null, null, '', array()); - } - - /** - * Initialization method. Has to be called right after OLE_PPS_File(). - * - * @access public - * @return mixed true on success - */ - public function init() - { - return true; - } - - /** - * Append data to PPS - * - * @access public - * @param string $data The data to append - */ - public function append($data) - { - $this->_data .= $data; - } - - /** - * Returns a stream for reading this file using fread() etc. - * @return resource a read-only stream - */ - public function getStream() - { - $this->ole->getStream($this); - } -} diff --git a/application/third_party/PHPExcel/Shared/OLE/PPS/Root.php b/application/third_party/PHPExcel/Shared/OLE/PPS/Root.php deleted file mode 100644 index 5d4052f0..00000000 --- a/application/third_party/PHPExcel/Shared/OLE/PPS/Root.php +++ /dev/null @@ -1,462 +0,0 @@ -<?php -/* vim: set expandtab tabstop=4 shiftwidth=4: */ -// +----------------------------------------------------------------------+ -// | PHP Version 4 | -// +----------------------------------------------------------------------+ -// | Copyright (c) 1997-2002 The PHP Group | -// +----------------------------------------------------------------------+ -// | This source file is subject to version 2.02 of the PHP license, | -// | that is bundled with this package in the file LICENSE, and is | -// | available at through the world-wide-web at | -// | http://www.php.net/license/2_02.txt. | -// | If you did not receive a copy of the PHP license and are unable to | -// | obtain it through the world-wide-web, please send a note to | -// | license@php.net so we can mail you a copy immediately. | -// +----------------------------------------------------------------------+ -// | Author: Xavier Noguer <xnoguer@php.net> | -// | Based on OLE::Storage_Lite by Kawai, Takanori | -// +----------------------------------------------------------------------+ -// -// $Id: Root.php,v 1.9 2005/04/23 21:53:49 dufuz Exp $ - - -/** -* Class for creating Root PPS's for OLE containers -* -* @author Xavier Noguer <xnoguer@php.net> -* @category PHPExcel -* @package PHPExcel_Shared_OLE -*/ -class PHPExcel_Shared_OLE_PPS_Root extends PHPExcel_Shared_OLE_PPS -{ - - /** - * Directory for temporary files - * @var string - */ - protected $tempDirectory = null; - - /** - * @param integer $time_1st A timestamp - * @param integer $time_2nd A timestamp - */ - public function __construct($time_1st, $time_2nd, $raChild) - { - $this->_tempDir = PHPExcel_Shared_File::sys_get_temp_dir(); - - parent::__construct(null, PHPExcel_Shared_OLE::Asc2Ucs('Root Entry'), PHPExcel_Shared_OLE::OLE_PPS_TYPE_ROOT, null, null, null, $time_1st, $time_2nd, null, $raChild); - } - - /** - * Method for saving the whole OLE container (including files). - * In fact, if called with an empty argument (or '-'), it saves to a - * temporary file and then outputs it's contents to stdout. - * If a resource pointer to a stream created by fopen() is passed - * it will be used, but you have to close such stream by yourself. - * - * @param string|resource $filename The name of the file or stream where to save the OLE container. - * @access public - * @return mixed true on success - */ - public function save($filename) - { - // Initial Setting for saving - $this->_BIG_BLOCK_SIZE = pow( - 2, - (isset($this->_BIG_BLOCK_SIZE))? self::adjust2($this->_BIG_BLOCK_SIZE) : 9 - ); - $this->_SMALL_BLOCK_SIZE= pow( - 2, - (isset($this->_SMALL_BLOCK_SIZE))? self::adjust2($this->_SMALL_BLOCK_SIZE) : 6 - ); - - if (is_resource($filename)) { - $this->_FILEH_ = $filename; - } elseif ($filename == '-' || $filename == '') { - if ($this->tempDirectory === null) { - $this->tempDirectory = PHPExcel_Shared_File::sys_get_temp_dir(); - } - $this->_tmp_filename = tempnam($this->tempDirectory, "OLE_PPS_Root"); - $this->_FILEH_ = fopen($this->_tmp_filename, "w+b"); - if ($this->_FILEH_ == false) { - throw new PHPExcel_Writer_Exception("Can't create temporary file."); - } - } else { - $this->_FILEH_ = fopen($filename, "wb"); - } - if ($this->_FILEH_ == false) { - throw new PHPExcel_Writer_Exception("Can't open $filename. It may be in use or protected."); - } - // Make an array of PPS's (for Save) - $aList = array(); - PHPExcel_Shared_OLE_PPS::_savePpsSetPnt($aList, array($this)); - // calculate values for header - list($iSBDcnt, $iBBcnt, $iPPScnt) = $this->_calcSize($aList); //, $rhInfo); - // Save Header - $this->_saveHeader($iSBDcnt, $iBBcnt, $iPPScnt); - - // Make Small Data string (write SBD) - $this->_data = $this->_makeSmallData($aList); - - // Write BB - $this->_saveBigData($iSBDcnt, $aList); - // Write PPS - $this->_savePps($aList); - // Write Big Block Depot and BDList and Adding Header informations - $this->_saveBbd($iSBDcnt, $iBBcnt, $iPPScnt); - - if (!is_resource($filename)) { - fclose($this->_FILEH_); - } - - return true; - } - - /** - * Calculate some numbers - * - * @access public - * @param array $raList Reference to an array of PPS's - * @return array The array of numbers - */ - public function _calcSize(&$raList) - { - // Calculate Basic Setting - list($iSBDcnt, $iBBcnt, $iPPScnt) = array(0,0,0); - $iSmallLen = 0; - $iSBcnt = 0; - $iCount = count($raList); - for ($i = 0; $i < $iCount; ++$i) { - if ($raList[$i]->Type == PHPExcel_Shared_OLE::OLE_PPS_TYPE_FILE) { - $raList[$i]->Size = $raList[$i]->_DataLen(); - if ($raList[$i]->Size < PHPExcel_Shared_OLE::OLE_DATA_SIZE_SMALL) { - $iSBcnt += floor($raList[$i]->Size / $this->_SMALL_BLOCK_SIZE) - + (($raList[$i]->Size % $this->_SMALL_BLOCK_SIZE)? 1: 0); - } else { - $iBBcnt += (floor($raList[$i]->Size / $this->_BIG_BLOCK_SIZE) + - (($raList[$i]->Size % $this->_BIG_BLOCK_SIZE)? 1: 0)); - } - } - } - $iSmallLen = $iSBcnt * $this->_SMALL_BLOCK_SIZE; - $iSlCnt = floor($this->_BIG_BLOCK_SIZE / PHPExcel_Shared_OLE::OLE_LONG_INT_SIZE); - $iSBDcnt = floor($iSBcnt / $iSlCnt) + (($iSBcnt % $iSlCnt)? 1:0); - $iBBcnt += (floor($iSmallLen / $this->_BIG_BLOCK_SIZE) + - (( $iSmallLen % $this->_BIG_BLOCK_SIZE)? 1: 0)); - $iCnt = count($raList); - $iBdCnt = $this->_BIG_BLOCK_SIZE / PHPExcel_Shared_OLE::OLE_PPS_SIZE; - $iPPScnt = (floor($iCnt/$iBdCnt) + (($iCnt % $iBdCnt)? 1: 0)); - - return array($iSBDcnt, $iBBcnt, $iPPScnt); - } - - /** - * Helper function for caculating a magic value for block sizes - * - * @access public - * @param integer $i2 The argument - * @see save() - * @return integer - */ - private static function adjust2($i2) - { - $iWk = log($i2)/log(2); - return ($iWk > floor($iWk))? floor($iWk)+1:$iWk; - } - - /** - * Save OLE header - * - * @access public - * @param integer $iSBDcnt - * @param integer $iBBcnt - * @param integer $iPPScnt - */ - public function _saveHeader($iSBDcnt, $iBBcnt, $iPPScnt) - { - $FILE = $this->_FILEH_; - - // Calculate Basic Setting - $iBlCnt = $this->_BIG_BLOCK_SIZE / PHPExcel_Shared_OLE::OLE_LONG_INT_SIZE; - $i1stBdL = ($this->_BIG_BLOCK_SIZE - 0x4C) / PHPExcel_Shared_OLE::OLE_LONG_INT_SIZE; - - $iBdExL = 0; - $iAll = $iBBcnt + $iPPScnt + $iSBDcnt; - $iAllW = $iAll; - $iBdCntW = floor($iAllW / $iBlCnt) + (($iAllW % $iBlCnt)? 1: 0); - $iBdCnt = floor(($iAll + $iBdCntW) / $iBlCnt) + ((($iAllW+$iBdCntW) % $iBlCnt)? 1: 0); - - // Calculate BD count - if ($iBdCnt > $i1stBdL) { - while (1) { - ++$iBdExL; - ++$iAllW; - $iBdCntW = floor($iAllW / $iBlCnt) + (($iAllW % $iBlCnt)? 1: 0); - $iBdCnt = floor(($iAllW + $iBdCntW) / $iBlCnt) + ((($iAllW+$iBdCntW) % $iBlCnt)? 1: 0); - if ($iBdCnt <= ($iBdExL*$iBlCnt+ $i1stBdL)) { - break; - } - } - } - - // Save Header - fwrite( - $FILE, - "\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1" - . "\x00\x00\x00\x00" - . "\x00\x00\x00\x00" - . "\x00\x00\x00\x00" - . "\x00\x00\x00\x00" - . pack("v", 0x3b) - . pack("v", 0x03) - . pack("v", -2) - . pack("v", 9) - . pack("v", 6) - . pack("v", 0) - . "\x00\x00\x00\x00" - . "\x00\x00\x00\x00" - . pack("V", $iBdCnt) - . pack("V", $iBBcnt+$iSBDcnt) //ROOT START - . pack("V", 0) - . pack("V", 0x1000) - . pack("V", $iSBDcnt ? 0 : -2) //Small Block Depot - . pack("V", $iSBDcnt) - ); - // Extra BDList Start, Count - if ($iBdCnt < $i1stBdL) { - fwrite( - $FILE, - pack("V", -2) // Extra BDList Start - . pack("V", 0)// Extra BDList Count - ); - } else { - fwrite($FILE, pack("V", $iAll+$iBdCnt) . pack("V", $iBdExL)); - } - - // BDList - for ($i = 0; $i < $i1stBdL && $i < $iBdCnt; ++$i) { - fwrite($FILE, pack("V", $iAll+$i)); - } - if ($i < $i1stBdL) { - $jB = $i1stBdL - $i; - for ($j = 0; $j < $jB; ++$j) { - fwrite($FILE, (pack("V", -1))); - } - } - } - - /** - * Saving big data (PPS's with data bigger than PHPExcel_Shared_OLE::OLE_DATA_SIZE_SMALL) - * - * @access public - * @param integer $iStBlk - * @param array &$raList Reference to array of PPS's - */ - public function _saveBigData($iStBlk, &$raList) - { - $FILE = $this->_FILEH_; - - // cycle through PPS's - $iCount = count($raList); - for ($i = 0; $i < $iCount; ++$i) { - if ($raList[$i]->Type != PHPExcel_Shared_OLE::OLE_PPS_TYPE_DIR) { - $raList[$i]->Size = $raList[$i]->_DataLen(); - if (($raList[$i]->Size >= PHPExcel_Shared_OLE::OLE_DATA_SIZE_SMALL) || (($raList[$i]->Type == PHPExcel_Shared_OLE::OLE_PPS_TYPE_ROOT) && isset($raList[$i]->_data))) { - // Write Data - //if (isset($raList[$i]->_PPS_FILE)) { - // $iLen = 0; - // fseek($raList[$i]->_PPS_FILE, 0); // To The Top - // while ($sBuff = fread($raList[$i]->_PPS_FILE, 4096)) { - // $iLen += strlen($sBuff); - // fwrite($FILE, $sBuff); - // } - //} else { - fwrite($FILE, $raList[$i]->_data); - //} - - if ($raList[$i]->Size % $this->_BIG_BLOCK_SIZE) { - fwrite($FILE, str_repeat("\x00", $this->_BIG_BLOCK_SIZE - ($raList[$i]->Size % $this->_BIG_BLOCK_SIZE))); - } - // Set For PPS - $raList[$i]->_StartBlock = $iStBlk; - $iStBlk += - (floor($raList[$i]->Size / $this->_BIG_BLOCK_SIZE) + - (($raList[$i]->Size % $this->_BIG_BLOCK_SIZE)? 1: 0)); - } - // Close file for each PPS, and unlink it - //if (isset($raList[$i]->_PPS_FILE)) { - // fclose($raList[$i]->_PPS_FILE); - // $raList[$i]->_PPS_FILE = null; - // unlink($raList[$i]->_tmp_filename); - //} - } - } - } - - /** - * get small data (PPS's with data smaller than PHPExcel_Shared_OLE::OLE_DATA_SIZE_SMALL) - * - * @access public - * @param array &$raList Reference to array of PPS's - */ - public function _makeSmallData(&$raList) - { - $sRes = ''; - $FILE = $this->_FILEH_; - $iSmBlk = 0; - - $iCount = count($raList); - for ($i = 0; $i < $iCount; ++$i) { - // Make SBD, small data string - if ($raList[$i]->Type == PHPExcel_Shared_OLE::OLE_PPS_TYPE_FILE) { - if ($raList[$i]->Size <= 0) { - continue; - } - if ($raList[$i]->Size < PHPExcel_Shared_OLE::OLE_DATA_SIZE_SMALL) { - $iSmbCnt = floor($raList[$i]->Size / $this->_SMALL_BLOCK_SIZE) - + (($raList[$i]->Size % $this->_SMALL_BLOCK_SIZE)? 1: 0); - // Add to SBD - $jB = $iSmbCnt - 1; - for ($j = 0; $j < $jB; ++$j) { - fwrite($FILE, pack("V", $j+$iSmBlk+1)); - } - fwrite($FILE, pack("V", -2)); - - //// Add to Data String(this will be written for RootEntry) - //if ($raList[$i]->_PPS_FILE) { - // fseek($raList[$i]->_PPS_FILE, 0); // To The Top - // while ($sBuff = fread($raList[$i]->_PPS_FILE, 4096)) { - // $sRes .= $sBuff; - // } - //} else { - $sRes .= $raList[$i]->_data; - //} - if ($raList[$i]->Size % $this->_SMALL_BLOCK_SIZE) { - $sRes .= str_repeat("\x00", $this->_SMALL_BLOCK_SIZE - ($raList[$i]->Size % $this->_SMALL_BLOCK_SIZE)); - } - // Set for PPS - $raList[$i]->_StartBlock = $iSmBlk; - $iSmBlk += $iSmbCnt; - } - } - } - $iSbCnt = floor($this->_BIG_BLOCK_SIZE / PHPExcel_Shared_OLE::OLE_LONG_INT_SIZE); - if ($iSmBlk % $iSbCnt) { - $iB = $iSbCnt - ($iSmBlk % $iSbCnt); - for ($i = 0; $i < $iB; ++$i) { - fwrite($FILE, pack("V", -1)); - } - } - return $sRes; - } - - /** - * Saves all the PPS's WKs - * - * @access public - * @param array $raList Reference to an array with all PPS's - */ - public function _savePps(&$raList) - { - // Save each PPS WK - $iC = count($raList); - for ($i = 0; $i < $iC; ++$i) { - fwrite($this->_FILEH_, $raList[$i]->_getPpsWk()); - } - // Adjust for Block - $iCnt = count($raList); - $iBCnt = $this->_BIG_BLOCK_SIZE / PHPExcel_Shared_OLE::OLE_PPS_SIZE; - if ($iCnt % $iBCnt) { - fwrite($this->_FILEH_, str_repeat("\x00", ($iBCnt - ($iCnt % $iBCnt)) * PHPExcel_Shared_OLE::OLE_PPS_SIZE)); - } - } - - /** - * Saving Big Block Depot - * - * @access public - * @param integer $iSbdSize - * @param integer $iBsize - * @param integer $iPpsCnt - */ - public function _saveBbd($iSbdSize, $iBsize, $iPpsCnt) - { - $FILE = $this->_FILEH_; - // Calculate Basic Setting - $iBbCnt = $this->_BIG_BLOCK_SIZE / PHPExcel_Shared_OLE::OLE_LONG_INT_SIZE; - $i1stBdL = ($this->_BIG_BLOCK_SIZE - 0x4C) / PHPExcel_Shared_OLE::OLE_LONG_INT_SIZE; - - $iBdExL = 0; - $iAll = $iBsize + $iPpsCnt + $iSbdSize; - $iAllW = $iAll; - $iBdCntW = floor($iAllW / $iBbCnt) + (($iAllW % $iBbCnt)? 1: 0); - $iBdCnt = floor(($iAll + $iBdCntW) / $iBbCnt) + ((($iAllW+$iBdCntW) % $iBbCnt)? 1: 0); - // Calculate BD count - if ($iBdCnt >$i1stBdL) { - while (1) { - ++$iBdExL; - ++$iAllW; - $iBdCntW = floor($iAllW / $iBbCnt) + (($iAllW % $iBbCnt)? 1: 0); - $iBdCnt = floor(($iAllW + $iBdCntW) / $iBbCnt) + ((($iAllW+$iBdCntW) % $iBbCnt)? 1: 0); - if ($iBdCnt <= ($iBdExL*$iBbCnt+ $i1stBdL)) { - break; - } - } - } - - // Making BD - // Set for SBD - if ($iSbdSize > 0) { - for ($i = 0; $i < ($iSbdSize - 1); ++$i) { - fwrite($FILE, pack("V", $i+1)); - } - fwrite($FILE, pack("V", -2)); - } - // Set for B - for ($i = 0; $i < ($iBsize - 1); ++$i) { - fwrite($FILE, pack("V", $i+$iSbdSize+1)); - } - fwrite($FILE, pack("V", -2)); - - // Set for PPS - for ($i = 0; $i < ($iPpsCnt - 1); ++$i) { - fwrite($FILE, pack("V", $i+$iSbdSize+$iBsize+1)); - } - fwrite($FILE, pack("V", -2)); - // Set for BBD itself ( 0xFFFFFFFD : BBD) - for ($i = 0; $i < $iBdCnt; ++$i) { - fwrite($FILE, pack("V", 0xFFFFFFFD)); - } - // Set for ExtraBDList - for ($i = 0; $i < $iBdExL; ++$i) { - fwrite($FILE, pack("V", 0xFFFFFFFC)); - } - // Adjust for Block - if (($iAllW + $iBdCnt) % $iBbCnt) { - $iBlock = ($iBbCnt - (($iAllW + $iBdCnt) % $iBbCnt)); - for ($i = 0; $i < $iBlock; ++$i) { - fwrite($FILE, pack("V", -1)); - } - } - // Extra BDList - if ($iBdCnt > $i1stBdL) { - $iN=0; - $iNb=0; - for ($i = $i1stBdL; $i < $iBdCnt; $i++, ++$iN) { - if ($iN >= ($iBbCnt - 1)) { - $iN = 0; - ++$iNb; - fwrite($FILE, pack("V", $iAll+$iBdCnt+$iNb)); - } - fwrite($FILE, pack("V", $iBsize+$iSbdSize+$iPpsCnt+$i)); - } - if (($iBdCnt-$i1stBdL) % ($iBbCnt-1)) { - $iB = ($iBbCnt - 1) - (($iBdCnt - $i1stBdL) % ($iBbCnt - 1)); - for ($i = 0; $i < $iB; ++$i) { - fwrite($FILE, pack("V", -1)); - } - } - fwrite($FILE, pack("V", -2)); - } - } -} diff --git a/application/third_party/PHPExcel/Shared/OLERead.php b/application/third_party/PHPExcel/Shared/OLERead.php deleted file mode 100644 index 6b15d970..00000000 --- a/application/third_party/PHPExcel/Shared/OLERead.php +++ /dev/null @@ -1,318 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Shared - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -defined('IDENTIFIER_OLE') || - define('IDENTIFIER_OLE', pack('CCCCCCCC', 0xd0, 0xcf, 0x11, 0xe0, 0xa1, 0xb1, 0x1a, 0xe1)); - -class PHPExcel_Shared_OLERead -{ - private $data = ''; - - // OLE identifier - const IDENTIFIER_OLE = IDENTIFIER_OLE; - - // Size of a sector = 512 bytes - const BIG_BLOCK_SIZE = 0x200; - - // Size of a short sector = 64 bytes - const SMALL_BLOCK_SIZE = 0x40; - - // Size of a directory entry always = 128 bytes - const PROPERTY_STORAGE_BLOCK_SIZE = 0x80; - - // Minimum size of a standard stream = 4096 bytes, streams smaller than this are stored as short streams - const SMALL_BLOCK_THRESHOLD = 0x1000; - - // header offsets - const NUM_BIG_BLOCK_DEPOT_BLOCKS_POS = 0x2c; - const ROOT_START_BLOCK_POS = 0x30; - const SMALL_BLOCK_DEPOT_BLOCK_POS = 0x3c; - const EXTENSION_BLOCK_POS = 0x44; - const NUM_EXTENSION_BLOCK_POS = 0x48; - const BIG_BLOCK_DEPOT_BLOCKS_POS = 0x4c; - - // property storage offsets (directory offsets) - const SIZE_OF_NAME_POS = 0x40; - const TYPE_POS = 0x42; - const START_BLOCK_POS = 0x74; - const SIZE_POS = 0x78; - - - - public $wrkbook = null; - public $summaryInformation = null; - public $documentSummaryInformation = null; - - - /** - * Read the file - * - * @param $sFileName string Filename - * @throws PHPExcel_Reader_Exception - */ - public function read($sFileName) - { - // Check if file exists and is readable - if (!is_readable($sFileName)) { - throw new PHPExcel_Reader_Exception("Could not open " . $sFileName . " for reading! File does not exist, or it is not readable."); - } - - // Get the file identifier - // Don't bother reading the whole file until we know it's a valid OLE file - $this->data = file_get_contents($sFileName, false, null, 0, 8); - - // Check OLE identifier - if ($this->data != self::IDENTIFIER_OLE) { - throw new PHPExcel_Reader_Exception('The filename ' . $sFileName . ' is not recognised as an OLE file'); - } - - // Get the file data - $this->data = file_get_contents($sFileName); - - // Total number of sectors used for the SAT - $this->numBigBlockDepotBlocks = self::getInt4d($this->data, self::NUM_BIG_BLOCK_DEPOT_BLOCKS_POS); - - // SecID of the first sector of the directory stream - $this->rootStartBlock = self::getInt4d($this->data, self::ROOT_START_BLOCK_POS); - - // SecID of the first sector of the SSAT (or -2 if not extant) - $this->sbdStartBlock = self::getInt4d($this->data, self::SMALL_BLOCK_DEPOT_BLOCK_POS); - - // SecID of the first sector of the MSAT (or -2 if no additional sectors are used) - $this->extensionBlock = self::getInt4d($this->data, self::EXTENSION_BLOCK_POS); - - // Total number of sectors used by MSAT - $this->numExtensionBlocks = self::getInt4d($this->data, self::NUM_EXTENSION_BLOCK_POS); - - $bigBlockDepotBlocks = array(); - $pos = self::BIG_BLOCK_DEPOT_BLOCKS_POS; - - $bbdBlocks = $this->numBigBlockDepotBlocks; - - if ($this->numExtensionBlocks != 0) { - $bbdBlocks = (self::BIG_BLOCK_SIZE - self::BIG_BLOCK_DEPOT_BLOCKS_POS)/4; - } - - for ($i = 0; $i < $bbdBlocks; ++$i) { - $bigBlockDepotBlocks[$i] = self::getInt4d($this->data, $pos); - $pos += 4; - } - - for ($j = 0; $j < $this->numExtensionBlocks; ++$j) { - $pos = ($this->extensionBlock + 1) * self::BIG_BLOCK_SIZE; - $blocksToRead = min($this->numBigBlockDepotBlocks - $bbdBlocks, self::BIG_BLOCK_SIZE / 4 - 1); - - for ($i = $bbdBlocks; $i < $bbdBlocks + $blocksToRead; ++$i) { - $bigBlockDepotBlocks[$i] = self::getInt4d($this->data, $pos); - $pos += 4; - } - - $bbdBlocks += $blocksToRead; - if ($bbdBlocks < $this->numBigBlockDepotBlocks) { - $this->extensionBlock = self::getInt4d($this->data, $pos); - } - } - - $pos = 0; - $this->bigBlockChain = ''; - $bbs = self::BIG_BLOCK_SIZE / 4; - for ($i = 0; $i < $this->numBigBlockDepotBlocks; ++$i) { - $pos = ($bigBlockDepotBlocks[$i] + 1) * self::BIG_BLOCK_SIZE; - - $this->bigBlockChain .= substr($this->data, $pos, 4*$bbs); - $pos += 4*$bbs; - } - - $pos = 0; - $sbdBlock = $this->sbdStartBlock; - $this->smallBlockChain = ''; - while ($sbdBlock != -2) { - $pos = ($sbdBlock + 1) * self::BIG_BLOCK_SIZE; - - $this->smallBlockChain .= substr($this->data, $pos, 4*$bbs); - $pos += 4*$bbs; - - $sbdBlock = self::getInt4d($this->bigBlockChain, $sbdBlock*4); - } - - // read the directory stream - $block = $this->rootStartBlock; - $this->entry = $this->_readData($block); - - $this->readPropertySets(); - } - - /** - * Extract binary stream data - * - * @return string - */ - public function getStream($stream) - { - if ($stream === null) { - return null; - } - - $streamData = ''; - - if ($this->props[$stream]['size'] < self::SMALL_BLOCK_THRESHOLD) { - $rootdata = $this->_readData($this->props[$this->rootentry]['startBlock']); - - $block = $this->props[$stream]['startBlock']; - - while ($block != -2) { - $pos = $block * self::SMALL_BLOCK_SIZE; - $streamData .= substr($rootdata, $pos, self::SMALL_BLOCK_SIZE); - - $block = self::getInt4d($this->smallBlockChain, $block*4); - } - - return $streamData; - } else { - $numBlocks = $this->props[$stream]['size'] / self::BIG_BLOCK_SIZE; - if ($this->props[$stream]['size'] % self::BIG_BLOCK_SIZE != 0) { - ++$numBlocks; - } - - if ($numBlocks == 0) { - return ''; - } - - $block = $this->props[$stream]['startBlock']; - - while ($block != -2) { - $pos = ($block + 1) * self::BIG_BLOCK_SIZE; - $streamData .= substr($this->data, $pos, self::BIG_BLOCK_SIZE); - $block = self::getInt4d($this->bigBlockChain, $block*4); - } - - return $streamData; - } - } - - /** - * Read a standard stream (by joining sectors using information from SAT) - * - * @param int $bl Sector ID where the stream starts - * @return string Data for standard stream - */ - private function _readData($bl) - { - $block = $bl; - $data = ''; - - while ($block != -2) { - $pos = ($block + 1) * self::BIG_BLOCK_SIZE; - $data .= substr($this->data, $pos, self::BIG_BLOCK_SIZE); - $block = self::getInt4d($this->bigBlockChain, $block*4); - } - return $data; - } - - /** - * Read entries in the directory stream. - */ - private function readPropertySets() - { - $offset = 0; - - // loop through entires, each entry is 128 bytes - $entryLen = strlen($this->entry); - while ($offset < $entryLen) { - // entry data (128 bytes) - $d = substr($this->entry, $offset, self::PROPERTY_STORAGE_BLOCK_SIZE); - - // size in bytes of name - $nameSize = ord($d[self::SIZE_OF_NAME_POS]) | (ord($d[self::SIZE_OF_NAME_POS+1]) << 8); - - // type of entry - $type = ord($d[self::TYPE_POS]); - - // sectorID of first sector or short sector, if this entry refers to a stream (the case with workbook) - // sectorID of first sector of the short-stream container stream, if this entry is root entry - $startBlock = self::getInt4d($d, self::START_BLOCK_POS); - - $size = self::getInt4d($d, self::SIZE_POS); - - $name = str_replace("\x00", "", substr($d, 0, $nameSize)); - - $this->props[] = array( - 'name' => $name, - 'type' => $type, - 'startBlock' => $startBlock, - 'size' => $size - ); - - // tmp helper to simplify checks - $upName = strtoupper($name); - - // Workbook directory entry (BIFF5 uses Book, BIFF8 uses Workbook) - if (($upName === 'WORKBOOK') || ($upName === 'BOOK')) { - $this->wrkbook = count($this->props) - 1; - } elseif ($upName === 'ROOT ENTRY' || $upName === 'R') { - // Root entry - $this->rootentry = count($this->props) - 1; - } - - // Summary information - if ($name == chr(5) . 'SummaryInformation') { -// echo 'Summary Information<br />'; - $this->summaryInformation = count($this->props) - 1; - } - - // Additional Document Summary information - if ($name == chr(5) . 'DocumentSummaryInformation') { -// echo 'Document Summary Information<br />'; - $this->documentSummaryInformation = count($this->props) - 1; - } - - $offset += self::PROPERTY_STORAGE_BLOCK_SIZE; - } - } - - /** - * Read 4 bytes of data at specified position - * - * @param string $data - * @param int $pos - * @return int - */ - private static function getInt4d($data, $pos) - { - // FIX: represent numbers correctly on 64-bit system - // http://sourceforge.net/tracker/index.php?func=detail&aid=1487372&group_id=99160&atid=623334 - // Hacked by Andreas Rehm 2006 to ensure correct result of the <<24 block on 32 and 64bit systems - $_or_24 = ord($data[$pos + 3]); - if ($_or_24 >= 128) { - // negative number - $_ord_24 = -abs((256 - $_or_24) << 24); - } else { - $_ord_24 = ($_or_24 & 127) << 24; - } - return ord($data[$pos]) | (ord($data[$pos + 1]) << 8) | (ord($data[$pos + 2]) << 16) | $_ord_24; - } -} diff --git a/application/third_party/PHPExcel/Shared/PCLZip/gnu-lgpl.txt b/application/third_party/PHPExcel/Shared/PCLZip/gnu-lgpl.txt deleted file mode 100644 index b1e3f5a2..00000000 --- a/application/third_party/PHPExcel/Shared/PCLZip/gnu-lgpl.txt +++ /dev/null @@ -1,504 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - <one line to give the library's name and a brief idea of what it does.> - Copyright (C) <year> <name of author> - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - <signature of Ty Coon>, 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - - diff --git a/application/third_party/PHPExcel/Shared/PCLZip/pclzip.lib.php b/application/third_party/PHPExcel/Shared/PCLZip/pclzip.lib.php deleted file mode 100644 index a5a9b0a8..00000000 --- a/application/third_party/PHPExcel/Shared/PCLZip/pclzip.lib.php +++ /dev/null @@ -1,5173 +0,0 @@ -<?php -// -------------------------------------------------------------------------------- -// PhpConcept Library - Zip Module 2.8.2 -// -------------------------------------------------------------------------------- -// License GNU/LGPL - Vincent Blavet - August 2009 -// http://www.phpconcept.net -// -------------------------------------------------------------------------------- -// -// Presentation : -// PclZip is a PHP library that manage ZIP archives. -// So far tests show that archives generated by PclZip are readable by -// WinZip application and other tools. -// -// Description : -// See readme.txt and http://www.phpconcept.net -// -// Warning : -// This library and the associated files are non commercial, non professional -// work. -// It should not have unexpected results. However if any damage is caused by -// this software the author can not be responsible. -// The use of this software is at the risk of the user. -// -// -------------------------------------------------------------------------------- -// $Id: pclzip.lib.php,v 1.60 2009/09/30 21:01:04 vblavet Exp $ -// -------------------------------------------------------------------------------- - -// ----- Constants -if (!defined('PCLZIP_READ_BLOCK_SIZE')) { - define('PCLZIP_READ_BLOCK_SIZE', 2048); -} - -// ----- File list separator -// In version 1.x of PclZip, the separator for file list is a space -// (which is not a very smart choice, specifically for windows paths !). -// A better separator should be a comma (,). This constant gives you the -// abilty to change that. -// However notice that changing this value, may have impact on existing -// scripts, using space separated filenames. -// Recommanded values for compatibility with older versions : -//define('PCLZIP_SEPARATOR', ' '); -// Recommanded values for smart separation of filenames. -if (!defined('PCLZIP_SEPARATOR')) { - define('PCLZIP_SEPARATOR', ','); -} - -// ----- Error configuration -// 0 : PclZip Class integrated error handling -// 1 : PclError external library error handling. By enabling this -// you must ensure that you have included PclError library. -// [2,...] : reserved for futur use -if (!defined('PCLZIP_ERROR_EXTERNAL')) { - define('PCLZIP_ERROR_EXTERNAL', 0); -} - -// ----- Optional static temporary directory -// By default temporary files are generated in the script current -// path. -// If defined : -// - MUST BE terminated by a '/'. -// - MUST be a valid, already created directory -// Samples : -// define('PCLZIP_TEMPORARY_DIR', '/temp/'); -// define('PCLZIP_TEMPORARY_DIR', 'C:/Temp/'); -if (!defined('PCLZIP_TEMPORARY_DIR')) { - define('PCLZIP_TEMPORARY_DIR', ''); -} - -// ----- Optional threshold ratio for use of temporary files -// Pclzip sense the size of the file to add/extract and decide to -// use or not temporary file. The algorythm is looking for -// memory_limit of PHP and apply a ratio. -// threshold = memory_limit * ratio. -// Recommended values are under 0.5. Default 0.47. -// Samples : -// define('PCLZIP_TEMPORARY_FILE_RATIO', 0.5); -if (!defined('PCLZIP_TEMPORARY_FILE_RATIO')) { - define('PCLZIP_TEMPORARY_FILE_RATIO', 0.47); -} - -// -------------------------------------------------------------------------------- -// ***** UNDER THIS LINE NOTHING NEEDS TO BE MODIFIED ***** -// -------------------------------------------------------------------------------- - -// ----- Global variables -$g_pclzip_version = "2.8.2"; - -// ----- Error codes -// -1 : Unable to open file in binary write mode -// -2 : Unable to open file in binary read mode -// -3 : Invalid parameters -// -4 : File does not exist -// -5 : Filename is too long (max. 255) -// -6 : Not a valid zip file -// -7 : Invalid extracted file size -// -8 : Unable to create directory -// -9 : Invalid archive extension -// -10 : Invalid archive format -// -11 : Unable to delete file (unlink) -// -12 : Unable to rename file (rename) -// -13 : Invalid header checksum -// -14 : Invalid archive size -define('PCLZIP_ERR_USER_ABORTED', 2); -define('PCLZIP_ERR_NO_ERROR', 0); -define('PCLZIP_ERR_WRITE_OPEN_FAIL', -1); -define('PCLZIP_ERR_READ_OPEN_FAIL', -2); -define('PCLZIP_ERR_INVALID_PARAMETER', -3); -define('PCLZIP_ERR_MISSING_FILE', -4); -define('PCLZIP_ERR_FILENAME_TOO_LONG', -5); -define('PCLZIP_ERR_INVALID_ZIP', -6); -define('PCLZIP_ERR_BAD_EXTRACTED_FILE', -7); -define('PCLZIP_ERR_DIR_CREATE_FAIL', -8); -define('PCLZIP_ERR_BAD_EXTENSION', -9); -define('PCLZIP_ERR_BAD_FORMAT', -10); -define('PCLZIP_ERR_DELETE_FILE_FAIL', -11); -define('PCLZIP_ERR_RENAME_FILE_FAIL', -12); -define('PCLZIP_ERR_BAD_CHECKSUM', -13); -define('PCLZIP_ERR_INVALID_ARCHIVE_ZIP', -14); -define('PCLZIP_ERR_MISSING_OPTION_VALUE', -15); -define('PCLZIP_ERR_INVALID_OPTION_VALUE', -16); -define('PCLZIP_ERR_ALREADY_A_DIRECTORY', -17); -define('PCLZIP_ERR_UNSUPPORTED_COMPRESSION', -18); -define('PCLZIP_ERR_UNSUPPORTED_ENCRYPTION', -19); -define('PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE', -20); -define('PCLZIP_ERR_DIRECTORY_RESTRICTION', -21); - -// ----- Options values -define('PCLZIP_OPT_PATH', 77001); -define('PCLZIP_OPT_ADD_PATH', 77002); -define('PCLZIP_OPT_REMOVE_PATH', 77003); -define('PCLZIP_OPT_REMOVE_ALL_PATH', 77004); -define('PCLZIP_OPT_SET_CHMOD', 77005); -define('PCLZIP_OPT_EXTRACT_AS_STRING', 77006); -define('PCLZIP_OPT_NO_COMPRESSION', 77007); -define('PCLZIP_OPT_BY_NAME', 77008); -define('PCLZIP_OPT_BY_INDEX', 77009); -define('PCLZIP_OPT_BY_EREG', 77010); -define('PCLZIP_OPT_BY_PREG', 77011); -define('PCLZIP_OPT_COMMENT', 77012); -define('PCLZIP_OPT_ADD_COMMENT', 77013); -define('PCLZIP_OPT_PREPEND_COMMENT', 77014); -define('PCLZIP_OPT_EXTRACT_IN_OUTPUT', 77015); -define('PCLZIP_OPT_REPLACE_NEWER', 77016); -define('PCLZIP_OPT_STOP_ON_ERROR', 77017); -// Having big trouble with crypt. Need to multiply 2 long int -// which is not correctly supported by PHP ... -//define('PCLZIP_OPT_CRYPT', 77018); -define('PCLZIP_OPT_EXTRACT_DIR_RESTRICTION', 77019); -define('PCLZIP_OPT_TEMP_FILE_THRESHOLD', 77020); -define('PCLZIP_OPT_ADD_TEMP_FILE_THRESHOLD', 77020); // alias -define('PCLZIP_OPT_TEMP_FILE_ON', 77021); -define('PCLZIP_OPT_ADD_TEMP_FILE_ON', 77021); // alias -define('PCLZIP_OPT_TEMP_FILE_OFF', 77022); -define('PCLZIP_OPT_ADD_TEMP_FILE_OFF', 77022); // alias - -// ----- File description attributes -define('PCLZIP_ATT_FILE_NAME', 79001); -define('PCLZIP_ATT_FILE_NEW_SHORT_NAME', 79002); -define('PCLZIP_ATT_FILE_NEW_FULL_NAME', 79003); -define('PCLZIP_ATT_FILE_MTIME', 79004); -define('PCLZIP_ATT_FILE_CONTENT', 79005); -define('PCLZIP_ATT_FILE_COMMENT', 79006); - -// ----- Call backs values -define('PCLZIP_CB_PRE_EXTRACT', 78001); -define('PCLZIP_CB_POST_EXTRACT', 78002); -define('PCLZIP_CB_PRE_ADD', 78003); -define('PCLZIP_CB_POST_ADD', 78004); -/* For futur use -define('PCLZIP_CB_PRE_LIST', 78005); -define('PCLZIP_CB_POST_LIST', 78006); -define('PCLZIP_CB_PRE_DELETE', 78007); -define('PCLZIP_CB_POST_DELETE', 78008); -*/ - -// -------------------------------------------------------------------------------- -// Class : PclZip -// Description : -// PclZip is the class that represent a Zip archive. -// The public methods allow the manipulation of the archive. -// Attributes : -// Attributes must not be accessed directly. -// Methods : -// PclZip() : Object creator -// create() : Creates the Zip archive -// listContent() : List the content of the Zip archive -// extract() : Extract the content of the archive -// properties() : List the properties of the archive -// -------------------------------------------------------------------------------- -class PclZip -{ - // ----- Filename of the zip file - public $zipname = ''; - - // ----- File descriptor of the zip file - public $zip_fd = 0; - - // ----- Internal error handling - public $error_code = 1; - public $error_string = ''; - - // ----- Current status of the magic_quotes_runtime - // This value store the php configuration for magic_quotes - // The class can then disable the magic_quotes and reset it after - public $magic_quotes_status; - - // -------------------------------------------------------------------------------- - // Function : PclZip() - // Description : - // Creates a PclZip object and set the name of the associated Zip archive - // filename. - // Note that no real action is taken, if the archive does not exist it is not - // created. Use create() for that. - // -------------------------------------------------------------------------------- - public function __construct($p_zipname) - { - - // ----- Tests the zlib - if (!function_exists('gzopen')) { - die('Abort '.basename(__FILE__).' : Missing zlib extensions'); - } - - // ----- Set the attributes - $this->zipname = $p_zipname; - $this->zip_fd = 0; - $this->magic_quotes_status = -1; - - // ----- Return - return; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : - // create($p_filelist, $p_add_dir="", $p_remove_dir="") - // create($p_filelist, $p_option, $p_option_value, ...) - // Description : - // This method supports two different synopsis. The first one is historical. - // This method creates a Zip Archive. The Zip file is created in the - // filesystem. The files and directories indicated in $p_filelist - // are added in the archive. See the parameters description for the - // supported format of $p_filelist. - // When a directory is in the list, the directory and its content is added - // in the archive. - // In this synopsis, the function takes an optional variable list of - // options. See bellow the supported options. - // Parameters : - // $p_filelist : An array containing file or directory names, or - // a string containing one filename or one directory name, or - // a string containing a list of filenames and/or directory - // names separated by spaces. - // $p_add_dir : A path to add before the real path of the archived file, - // in order to have it memorized in the archive. - // $p_remove_dir : A path to remove from the real path of the file to archive, - // in order to have a shorter path memorized in the archive. - // When $p_add_dir and $p_remove_dir are set, $p_remove_dir - // is removed first, before $p_add_dir is added. - // Options : - // PCLZIP_OPT_ADD_PATH : - // PCLZIP_OPT_REMOVE_PATH : - // PCLZIP_OPT_REMOVE_ALL_PATH : - // PCLZIP_OPT_COMMENT : - // PCLZIP_CB_PRE_ADD : - // PCLZIP_CB_POST_ADD : - // Return Values : - // 0 on failure, - // The list of the added files, with a status of the add action. - // (see PclZip::listContent() for list entry format) - // -------------------------------------------------------------------------------- - public function create($p_filelist) - { - $v_result=1; - - // ----- Reset the error handler - $this->privErrorReset(); - - // ----- Set default values - $v_options = array(); - $v_options[PCLZIP_OPT_NO_COMPRESSION] = false; - - // ----- Look for variable options arguments - $v_size = func_num_args(); - - // ----- Look for arguments - if ($v_size > 1) { - // ----- Get the arguments - $v_arg_list = func_get_args(); - - // ----- Remove from the options list the first argument - array_shift($v_arg_list); - $v_size--; - - // ----- Look for first arg - if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { - // ----- Parse the options - $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, array ( - PCLZIP_OPT_REMOVE_PATH => 'optional', - PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', - PCLZIP_OPT_ADD_PATH => 'optional', - PCLZIP_CB_PRE_ADD => 'optional', - PCLZIP_CB_POST_ADD => 'optional', - PCLZIP_OPT_NO_COMPRESSION => 'optional', - PCLZIP_OPT_COMMENT => 'optional', - PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', - PCLZIP_OPT_TEMP_FILE_ON => 'optional', - PCLZIP_OPT_TEMP_FILE_OFF => 'optional' - //, PCLZIP_OPT_CRYPT => 'optional' - )); - if ($v_result != 1) { - return 0; - } - } else { - // ----- Look for 2 args - // Here we need to support the first historic synopsis of the - // method. - // ----- Get the first argument - $v_options[PCLZIP_OPT_ADD_PATH] = $v_arg_list[0]; - - // ----- Look for the optional second argument - if ($v_size == 2) { - $v_options[PCLZIP_OPT_REMOVE_PATH] = $v_arg_list[1]; - } elseif ($v_size > 2) { - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); - return 0; - } - } - } - - // ----- Look for default option values - $this->privOptionDefaultThreshold($v_options); - - // ----- Init - $v_string_list = array(); - $v_att_list = array(); - $v_filedescr_list = array(); - $p_result_list = array(); - - // ----- Look if the $p_filelist is really an array - if (is_array($p_filelist)) { - // ----- Look if the first element is also an array - // This will mean that this is a file description entry - if (isset($p_filelist[0]) && is_array($p_filelist[0])) { - $v_att_list = $p_filelist; - } else { - // ----- The list is a list of string names - $v_string_list = $p_filelist; - } - } elseif (is_string($p_filelist)) { - // ----- Look if the $p_filelist is a string - // ----- Create a list from the string - $v_string_list = explode(PCLZIP_SEPARATOR, $p_filelist); - } else { - // ----- Invalid variable type for $p_filelist - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_filelist"); - return 0; - } - - // ----- Reformat the string list - if (sizeof($v_string_list) != 0) { - foreach ($v_string_list as $v_string) { - if ($v_string != '') { - $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string; - } else { - } - } - } - - // ----- For each file in the list check the attributes - $v_supported_attributes = array( - PCLZIP_ATT_FILE_NAME => 'mandatory', - PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional', - PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional', - PCLZIP_ATT_FILE_MTIME => 'optional', - PCLZIP_ATT_FILE_CONTENT => 'optional', - PCLZIP_ATT_FILE_COMMENT => 'optional' - ); - foreach ($v_att_list as $v_entry) { - $v_result = $this->privFileDescrParseAtt($v_entry, $v_filedescr_list[], $v_options, $v_supported_attributes); - if ($v_result != 1) { - return 0; - } - } - - // ----- Expand the filelist (expand directories) - $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options); - if ($v_result != 1) { - return 0; - } - - // ----- Call the create fct - $v_result = $this->privCreate($v_filedescr_list, $p_result_list, $v_options); - if ($v_result != 1) { - return 0; - } - - // ----- Return - return $p_result_list; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : - // add($p_filelist, $p_add_dir="", $p_remove_dir="") - // add($p_filelist, $p_option, $p_option_value, ...) - // Description : - // This method supports two synopsis. The first one is historical. - // This methods add the list of files in an existing archive. - // If a file with the same name already exists, it is added at the end of the - // archive, the first one is still present. - // If the archive does not exist, it is created. - // Parameters : - // $p_filelist : An array containing file or directory names, or - // a string containing one filename or one directory name, or - // a string containing a list of filenames and/or directory - // names separated by spaces. - // $p_add_dir : A path to add before the real path of the archived file, - // in order to have it memorized in the archive. - // $p_remove_dir : A path to remove from the real path of the file to archive, - // in order to have a shorter path memorized in the archive. - // When $p_add_dir and $p_remove_dir are set, $p_remove_dir - // is removed first, before $p_add_dir is added. - // Options : - // PCLZIP_OPT_ADD_PATH : - // PCLZIP_OPT_REMOVE_PATH : - // PCLZIP_OPT_REMOVE_ALL_PATH : - // PCLZIP_OPT_COMMENT : - // PCLZIP_OPT_ADD_COMMENT : - // PCLZIP_OPT_PREPEND_COMMENT : - // PCLZIP_CB_PRE_ADD : - // PCLZIP_CB_POST_ADD : - // Return Values : - // 0 on failure, - // The list of the added files, with a status of the add action. - // (see PclZip::listContent() for list entry format) - // -------------------------------------------------------------------------------- - public function add($p_filelist) - { - $v_result=1; - - // ----- Reset the error handler - $this->privErrorReset(); - - // ----- Set default values - $v_options = array(); - $v_options[PCLZIP_OPT_NO_COMPRESSION] = false; - - // ----- Look for variable options arguments - $v_size = func_num_args(); - - // ----- Look for arguments - if ($v_size > 1) { - // ----- Get the arguments - $v_arg_list = func_get_args(); - - // ----- Remove form the options list the first argument - array_shift($v_arg_list); - $v_size--; - - // ----- Look for first arg - if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { - // ----- Parse the options - $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, array ( - PCLZIP_OPT_REMOVE_PATH => 'optional', - PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', - PCLZIP_OPT_ADD_PATH => 'optional', - PCLZIP_CB_PRE_ADD => 'optional', - PCLZIP_CB_POST_ADD => 'optional', - PCLZIP_OPT_NO_COMPRESSION => 'optional', - PCLZIP_OPT_COMMENT => 'optional', - PCLZIP_OPT_ADD_COMMENT => 'optional', - PCLZIP_OPT_PREPEND_COMMENT => 'optional', - PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', - PCLZIP_OPT_TEMP_FILE_ON => 'optional', - PCLZIP_OPT_TEMP_FILE_OFF => 'optional' - //, PCLZIP_OPT_CRYPT => 'optional' - )); - if ($v_result != 1) { - return 0; - } - } else { - // ----- Look for 2 args - // Here we need to support the first historic synopsis of the - // method. - // ----- Get the first argument - $v_options[PCLZIP_OPT_ADD_PATH] = $v_add_path = $v_arg_list[0]; - - // ----- Look for the optional second argument - if ($v_size == 2) { - $v_options[PCLZIP_OPT_REMOVE_PATH] = $v_arg_list[1]; - } elseif ($v_size > 2) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); - - // ----- Return - return 0; - } - } - } - - // ----- Look for default option values - $this->privOptionDefaultThreshold($v_options); - - // ----- Init - $v_string_list = array(); - $v_att_list = array(); - $v_filedescr_list = array(); - $p_result_list = array(); - - // ----- Look if the $p_filelist is really an array - if (is_array($p_filelist)) { - // ----- Look if the first element is also an array - // This will mean that this is a file description entry - if (isset($p_filelist[0]) && is_array($p_filelist[0])) { - $v_att_list = $p_filelist; - } else { - // ----- The list is a list of string names - $v_string_list = $p_filelist; - } - } elseif (is_string($p_filelist)) { - // ----- Look if the $p_filelist is a string - // ----- Create a list from the string - $v_string_list = explode(PCLZIP_SEPARATOR, $p_filelist); - } else { - // ----- Invalid variable type for $p_filelist - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type '".gettype($p_filelist)."' for p_filelist"); - return 0; - } - - // ----- Reformat the string list - if (sizeof($v_string_list) != 0) { - foreach ($v_string_list as $v_string) { - $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string; - } - } - - // ----- For each file in the list check the attributes - $v_supported_attributes = array( - PCLZIP_ATT_FILE_NAME => 'mandatory', - PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional', - PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional', - PCLZIP_ATT_FILE_MTIME => 'optional', - PCLZIP_ATT_FILE_CONTENT => 'optional', - PCLZIP_ATT_FILE_COMMENT => 'optional', - ); - foreach ($v_att_list as $v_entry) { - $v_result = $this->privFileDescrParseAtt($v_entry, $v_filedescr_list[], $v_options, $v_supported_attributes); - if ($v_result != 1) { - return 0; - } - } - - // ----- Expand the filelist (expand directories) - $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options); - if ($v_result != 1) { - return 0; - } - - // ----- Call the create fct - $v_result = $this->privAdd($v_filedescr_list, $p_result_list, $v_options); - if ($v_result != 1) { - return 0; - } - - // ----- Return - return $p_result_list; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : listContent() - // Description : - // This public method, gives the list of the files and directories, with their - // properties. - // The properties of each entries in the list are (used also in other functions) : - // filename : Name of the file. For a create or add action it is the filename - // given by the user. For an extract function it is the filename - // of the extracted file. - // stored_filename : Name of the file / directory stored in the archive. - // size : Size of the stored file. - // compressed_size : Size of the file's data compressed in the archive - // (without the headers overhead) - // mtime : Last known modification date of the file (UNIX timestamp) - // comment : Comment associated with the file - // folder : true | false - // index : index of the file in the archive - // status : status of the action (depending of the action) : - // Values are : - // ok : OK ! - // filtered : the file / dir is not extracted (filtered by user) - // already_a_directory : the file can not be extracted because a - // directory with the same name already exists - // write_protected : the file can not be extracted because a file - // with the same name already exists and is - // write protected - // newer_exist : the file was not extracted because a newer file exists - // path_creation_fail : the file is not extracted because the folder - // does not exist and can not be created - // write_error : the file was not extracted because there was a - // error while writing the file - // read_error : the file was not extracted because there was a error - // while reading the file - // invalid_header : the file was not extracted because of an archive - // format error (bad file header) - // Note that each time a method can continue operating when there - // is an action error on a file, the error is only logged in the file status. - // Return Values : - // 0 on an unrecoverable failure, - // The list of the files in the archive. - // -------------------------------------------------------------------------------- - public function listContent() - { - $v_result=1; - - // ----- Reset the error handler - $this->privErrorReset(); - - // ----- Check archive - if (!$this->privCheckFormat()) { - return(0); - } - - // ----- Call the extracting fct - $p_list = array(); - if (($v_result = $this->privList($p_list)) != 1) { - unset($p_list); - return(0); - } - - // ----- Return - return $p_list; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : - // extract($p_path="./", $p_remove_path="") - // extract([$p_option, $p_option_value, ...]) - // Description : - // This method supports two synopsis. The first one is historical. - // This method extract all the files / directories from the archive to the - // folder indicated in $p_path. - // If you want to ignore the 'root' part of path of the memorized files - // you can indicate this in the optional $p_remove_path parameter. - // By default, if a newer file with the same name already exists, the - // file is not extracted. - // - // If both PCLZIP_OPT_PATH and PCLZIP_OPT_ADD_PATH aoptions - // are used, the path indicated in PCLZIP_OPT_ADD_PATH is append - // at the end of the path value of PCLZIP_OPT_PATH. - // Parameters : - // $p_path : Path where the files and directories are to be extracted - // $p_remove_path : First part ('root' part) of the memorized path - // (if any similar) to remove while extracting. - // Options : - // PCLZIP_OPT_PATH : - // PCLZIP_OPT_ADD_PATH : - // PCLZIP_OPT_REMOVE_PATH : - // PCLZIP_OPT_REMOVE_ALL_PATH : - // PCLZIP_CB_PRE_EXTRACT : - // PCLZIP_CB_POST_EXTRACT : - // Return Values : - // 0 or a negative value on failure, - // The list of the extracted files, with a status of the action. - // (see PclZip::listContent() for list entry format) - // -------------------------------------------------------------------------------- - public function extract() - { - $v_result=1; - - // ----- Reset the error handler - $this->privErrorReset(); - - // ----- Check archive - if (!$this->privCheckFormat()) { - return(0); - } - - // ----- Set default values - $v_options = array(); - // $v_path = "./"; - $v_path = ''; - $v_remove_path = ""; - $v_remove_all_path = false; - - // ----- Look for variable options arguments - $v_size = func_num_args(); - - // ----- Default values for option - $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = false; - - // ----- Look for arguments - if ($v_size > 0) { - // ----- Get the arguments - $v_arg_list = func_get_args(); - - // ----- Look for first arg - if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { - // ----- Parse the options - $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, array ( - PCLZIP_OPT_PATH => 'optional', - PCLZIP_OPT_REMOVE_PATH => 'optional', - PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', - PCLZIP_OPT_ADD_PATH => 'optional', - PCLZIP_CB_PRE_EXTRACT => 'optional', - PCLZIP_CB_POST_EXTRACT => 'optional', - PCLZIP_OPT_SET_CHMOD => 'optional', - PCLZIP_OPT_BY_NAME => 'optional', - PCLZIP_OPT_BY_EREG => 'optional', - PCLZIP_OPT_BY_PREG => 'optional', - PCLZIP_OPT_BY_INDEX => 'optional', - PCLZIP_OPT_EXTRACT_AS_STRING => 'optional', - PCLZIP_OPT_EXTRACT_IN_OUTPUT => 'optional', - PCLZIP_OPT_REPLACE_NEWER => 'optional', - PCLZIP_OPT_STOP_ON_ERROR => 'optional', - PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional', - PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', - PCLZIP_OPT_TEMP_FILE_ON => 'optional', - PCLZIP_OPT_TEMP_FILE_OFF => 'optional' - )); - if ($v_result != 1) { - return 0; - } - - // ----- Set the arguments - if (isset($v_options[PCLZIP_OPT_PATH])) { - $v_path = $v_options[PCLZIP_OPT_PATH]; - } - if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) { - $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH]; - } - if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { - $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH]; - } - if (isset($v_options[PCLZIP_OPT_ADD_PATH])) { - // ----- Check for '/' in last path char - if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) { - $v_path .= '/'; - } - $v_path .= $v_options[PCLZIP_OPT_ADD_PATH]; - } - } else { - // ----- Look for 2 args - // Here we need to support the first historic synopsis of the - // method. - // ----- Get the first argument - $v_path = $v_arg_list[0]; - - // ----- Look for the optional second argument - if ($v_size == 2) { - $v_remove_path = $v_arg_list[1]; - } elseif ($v_size > 2) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); - - // ----- Return - return 0; - } - } - } - - // ----- Look for default option values - $this->privOptionDefaultThreshold($v_options); - - // ----- Trace - - // ----- Call the extracting fct - $p_list = array(); - $v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path, $v_remove_all_path, $v_options); - if ($v_result < 1) { - unset($p_list); - return(0); - } - - // ----- Return - return $p_list; - } - // -------------------------------------------------------------------------------- - - - // -------------------------------------------------------------------------------- - // Function : - // extractByIndex($p_index, $p_path="./", $p_remove_path="") - // extractByIndex($p_index, [$p_option, $p_option_value, ...]) - // Description : - // This method supports two synopsis. The first one is historical. - // This method is doing a partial extract of the archive. - // The extracted files or folders are identified by their index in the - // archive (from 0 to n). - // Note that if the index identify a folder, only the folder entry is - // extracted, not all the files included in the archive. - // Parameters : - // $p_index : A single index (integer) or a string of indexes of files to - // extract. The form of the string is "0,4-6,8-12" with only numbers - // and '-' for range or ',' to separate ranges. No spaces or ';' - // are allowed. - // $p_path : Path where the files and directories are to be extracted - // $p_remove_path : First part ('root' part) of the memorized path - // (if any similar) to remove while extracting. - // Options : - // PCLZIP_OPT_PATH : - // PCLZIP_OPT_ADD_PATH : - // PCLZIP_OPT_REMOVE_PATH : - // PCLZIP_OPT_REMOVE_ALL_PATH : - // PCLZIP_OPT_EXTRACT_AS_STRING : The files are extracted as strings and - // not as files. - // The resulting content is in a new field 'content' in the file - // structure. - // This option must be used alone (any other options are ignored). - // PCLZIP_CB_PRE_EXTRACT : - // PCLZIP_CB_POST_EXTRACT : - // Return Values : - // 0 on failure, - // The list of the extracted files, with a status of the action. - // (see PclZip::listContent() for list entry format) - // -------------------------------------------------------------------------------- - //function extractByIndex($p_index, options...) - public function extractByIndex($p_index) - { - $v_result=1; - - // ----- Reset the error handler - $this->privErrorReset(); - - // ----- Check archive - if (!$this->privCheckFormat()) { - return(0); - } - - // ----- Set default values - $v_options = array(); - // $v_path = "./"; - $v_path = ''; - $v_remove_path = ""; - $v_remove_all_path = false; - - // ----- Look for variable options arguments - $v_size = func_num_args(); - - // ----- Default values for option - $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = false; - - // ----- Look for arguments - if ($v_size > 1) { - // ----- Get the arguments - $v_arg_list = func_get_args(); - - // ----- Remove form the options list the first argument - array_shift($v_arg_list); - $v_size--; - - // ----- Look for first arg - if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { - // ----- Parse the options - $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, array( - PCLZIP_OPT_PATH => 'optional', - PCLZIP_OPT_REMOVE_PATH => 'optional', - PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', - PCLZIP_OPT_EXTRACT_AS_STRING => 'optional', - PCLZIP_OPT_ADD_PATH => 'optional', - PCLZIP_CB_PRE_EXTRACT => 'optional', - PCLZIP_CB_POST_EXTRACT => 'optional', - PCLZIP_OPT_SET_CHMOD => 'optional', - PCLZIP_OPT_REPLACE_NEWER => 'optional', - PCLZIP_OPT_STOP_ON_ERROR => 'optional', - PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional', - PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', - PCLZIP_OPT_TEMP_FILE_ON => 'optional', - PCLZIP_OPT_TEMP_FILE_OFF => 'optional' - )); - if ($v_result != 1) { - return 0; - } - - // ----- Set the arguments - if (isset($v_options[PCLZIP_OPT_PATH])) { - $v_path = $v_options[PCLZIP_OPT_PATH]; - } - if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) { - $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH]; - } - if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { - $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH]; - } - if (isset($v_options[PCLZIP_OPT_ADD_PATH])) { - // ----- Check for '/' in last path char - if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) { - $v_path .= '/'; - } - $v_path .= $v_options[PCLZIP_OPT_ADD_PATH]; - } - if (!isset($v_options[PCLZIP_OPT_EXTRACT_AS_STRING])) { - $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = false; - } else { - } - } else { - // ----- Look for 2 args - // Here we need to support the first historic synopsis of the - // method. - - // ----- Get the first argument - $v_path = $v_arg_list[0]; - - // ----- Look for the optional second argument - if ($v_size == 2) { - $v_remove_path = $v_arg_list[1]; - } elseif ($v_size > 2) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); - - // ----- Return - return 0; - } - } - } - - // ----- Trace - - // ----- Trick - // Here I want to reuse extractByRule(), so I need to parse the $p_index - // with privParseOptions() - $v_arg_trick = array (PCLZIP_OPT_BY_INDEX, $p_index); - $v_options_trick = array(); - $v_result = $this->privParseOptions($v_arg_trick, sizeof($v_arg_trick), $v_options_trick, array (PCLZIP_OPT_BY_INDEX => 'optional')); - if ($v_result != 1) { - return 0; - } - $v_options[PCLZIP_OPT_BY_INDEX] = $v_options_trick[PCLZIP_OPT_BY_INDEX]; - - // ----- Look for default option values - $this->privOptionDefaultThreshold($v_options); - - // ----- Call the extracting fct - if (($v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path, $v_remove_all_path, $v_options)) < 1) { - return(0); - } - - // ----- Return - return $p_list; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : - // delete([$p_option, $p_option_value, ...]) - // Description : - // This method removes files from the archive. - // If no parameters are given, then all the archive is emptied. - // Parameters : - // None or optional arguments. - // Options : - // PCLZIP_OPT_BY_INDEX : - // PCLZIP_OPT_BY_NAME : - // PCLZIP_OPT_BY_EREG : - // PCLZIP_OPT_BY_PREG : - // Return Values : - // 0 on failure, - // The list of the files which are still present in the archive. - // (see PclZip::listContent() for list entry format) - // -------------------------------------------------------------------------------- - public function delete() - { - $v_result=1; - - // ----- Reset the error handler - $this->privErrorReset(); - - // ----- Check archive - if (!$this->privCheckFormat()) { - return(0); - } - - // ----- Set default values - $v_options = array(); - - // ----- Look for variable options arguments - $v_size = func_num_args(); - - // ----- Look for arguments - if ($v_size > 0) { - // ----- Get the arguments - $v_arg_list = func_get_args(); - - // ----- Parse the options - $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, array ( - PCLZIP_OPT_BY_NAME => 'optional', - PCLZIP_OPT_BY_EREG => 'optional', - PCLZIP_OPT_BY_PREG => 'optional', - PCLZIP_OPT_BY_INDEX => 'optional' - )); - if ($v_result != 1) { - return 0; - } - } - - // ----- Magic quotes trick - $this->privDisableMagicQuotes(); - - // ----- Call the delete fct - $v_list = array(); - if (($v_result = $this->privDeleteByRule($v_list, $v_options)) != 1) { - $this->privSwapBackMagicQuotes(); - unset($v_list); - return(0); - } - - // ----- Magic quotes trick - $this->privSwapBackMagicQuotes(); - - // ----- Return - return $v_list; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : deleteByIndex() - // Description : - // ***** Deprecated ***** - // delete(PCLZIP_OPT_BY_INDEX, $p_index) should be prefered. - // -------------------------------------------------------------------------------- - public function deleteByIndex($p_index) - { - - $p_list = $this->delete(PCLZIP_OPT_BY_INDEX, $p_index); - - // ----- Return - return $p_list; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : properties() - // Description : - // This method gives the properties of the archive. - // The properties are : - // nb : Number of files in the archive - // comment : Comment associated with the archive file - // status : not_exist, ok - // Parameters : - // None - // Return Values : - // 0 on failure, - // An array with the archive properties. - // -------------------------------------------------------------------------------- - public function properties() - { - - // ----- Reset the error handler - $this->privErrorReset(); - - // ----- Magic quotes trick - $this->privDisableMagicQuotes(); - - // ----- Check archive - if (!$this->privCheckFormat()) { - $this->privSwapBackMagicQuotes(); - return(0); - } - - // ----- Default properties - $v_prop = array(); - $v_prop['comment'] = ''; - $v_prop['nb'] = 0; - $v_prop['status'] = 'not_exist'; - - // ----- Look if file exists - if (@is_file($this->zipname)) { - // ----- Open the zip file - if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0) { - $this->privSwapBackMagicQuotes(); - - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode'); - - // ----- Return - return 0; - } - - // ----- Read the central directory informations - $v_central_dir = array(); - if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) { - $this->privSwapBackMagicQuotes(); - return 0; - } - - // ----- Close the zip file - $this->privCloseFd(); - - // ----- Set the user attributes - $v_prop['comment'] = $v_central_dir['comment']; - $v_prop['nb'] = $v_central_dir['entries']; - $v_prop['status'] = 'ok'; - } - - // ----- Magic quotes trick - $this->privSwapBackMagicQuotes(); - - // ----- Return - return $v_prop; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : duplicate() - // Description : - // This method creates an archive by copying the content of an other one. If - // the archive already exist, it is replaced by the new one without any warning. - // Parameters : - // $p_archive : The filename of a valid archive, or - // a valid PclZip object. - // Return Values : - // 1 on success. - // 0 or a negative value on error (error code). - // -------------------------------------------------------------------------------- - public function duplicate($p_archive) - { - $v_result = 1; - - // ----- Reset the error handler - $this->privErrorReset(); - - // ----- Look if the $p_archive is a PclZip object - if ((is_object($p_archive)) && (get_class($p_archive) == 'pclzip')) { - // ----- Duplicate the archive - $v_result = $this->privDuplicate($p_archive->zipname); - } elseif (is_string($p_archive)) { - // ----- Look if the $p_archive is a string (so a filename) - // ----- Check that $p_archive is a valid zip file - // TBC : Should also check the archive format - if (!is_file($p_archive)) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "No file with filename '".$p_archive."'"); - $v_result = PCLZIP_ERR_MISSING_FILE; - } else { - // ----- Duplicate the archive - $v_result = $this->privDuplicate($p_archive); - } - } else { - // ----- Invalid variable - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add"); - $v_result = PCLZIP_ERR_INVALID_PARAMETER; - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : merge() - // Description : - // This method merge the $p_archive_to_add archive at the end of the current - // one ($this). - // If the archive ($this) does not exist, the merge becomes a duplicate. - // If the $p_archive_to_add archive does not exist, the merge is a success. - // Parameters : - // $p_archive_to_add : It can be directly the filename of a valid zip archive, - // or a PclZip object archive. - // Return Values : - // 1 on success, - // 0 or negative values on error (see below). - // -------------------------------------------------------------------------------- - public function merge($p_archive_to_add) - { - $v_result = 1; - - // ----- Reset the error handler - $this->privErrorReset(); - - // ----- Check archive - if (!$this->privCheckFormat()) { - return(0); - } - - // ----- Look if the $p_archive_to_add is a PclZip object - if ((is_object($p_archive_to_add)) && (get_class($p_archive_to_add) == 'pclzip')) { - // ----- Merge the archive - $v_result = $this->privMerge($p_archive_to_add); - } elseif (is_string($p_archive_to_add)) { - // ----- Look if the $p_archive_to_add is a string (so a filename) - // ----- Create a temporary archive - $v_object_archive = new PclZip($p_archive_to_add); - - // ----- Merge the archive - $v_result = $this->privMerge($v_object_archive); - } else { - // ----- Invalid variable - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add"); - $v_result = PCLZIP_ERR_INVALID_PARAMETER; - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - - - // -------------------------------------------------------------------------------- - // Function : errorCode() - // Description : - // Parameters : - // -------------------------------------------------------------------------------- - public function errorCode() - { - if (PCLZIP_ERROR_EXTERNAL == 1) { - return(PclErrorCode()); - } else { - return($this->error_code); - } - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : errorName() - // Description : - // Parameters : - // -------------------------------------------------------------------------------- - public function errorName($p_with_code = false) - { - $v_name = array( - PCLZIP_ERR_NO_ERROR => 'PCLZIP_ERR_NO_ERROR', - PCLZIP_ERR_WRITE_OPEN_FAIL => 'PCLZIP_ERR_WRITE_OPEN_FAIL', - PCLZIP_ERR_READ_OPEN_FAIL => 'PCLZIP_ERR_READ_OPEN_FAIL', - PCLZIP_ERR_INVALID_PARAMETER => 'PCLZIP_ERR_INVALID_PARAMETER', - PCLZIP_ERR_MISSING_FILE => 'PCLZIP_ERR_MISSING_FILE', - PCLZIP_ERR_FILENAME_TOO_LONG => 'PCLZIP_ERR_FILENAME_TOO_LONG', - PCLZIP_ERR_INVALID_ZIP => 'PCLZIP_ERR_INVALID_ZIP', - PCLZIP_ERR_BAD_EXTRACTED_FILE => 'PCLZIP_ERR_BAD_EXTRACTED_FILE', - PCLZIP_ERR_DIR_CREATE_FAIL => 'PCLZIP_ERR_DIR_CREATE_FAIL', - PCLZIP_ERR_BAD_EXTENSION => 'PCLZIP_ERR_BAD_EXTENSION', - PCLZIP_ERR_BAD_FORMAT => 'PCLZIP_ERR_BAD_FORMAT', - PCLZIP_ERR_DELETE_FILE_FAIL => 'PCLZIP_ERR_DELETE_FILE_FAIL', - PCLZIP_ERR_RENAME_FILE_FAIL => 'PCLZIP_ERR_RENAME_FILE_FAIL', - PCLZIP_ERR_BAD_CHECKSUM => 'PCLZIP_ERR_BAD_CHECKSUM', - PCLZIP_ERR_INVALID_ARCHIVE_ZIP => 'PCLZIP_ERR_INVALID_ARCHIVE_ZIP', - PCLZIP_ERR_MISSING_OPTION_VALUE => 'PCLZIP_ERR_MISSING_OPTION_VALUE', - PCLZIP_ERR_INVALID_OPTION_VALUE => 'PCLZIP_ERR_INVALID_OPTION_VALUE', - PCLZIP_ERR_UNSUPPORTED_COMPRESSION => 'PCLZIP_ERR_UNSUPPORTED_COMPRESSION', - PCLZIP_ERR_UNSUPPORTED_ENCRYPTION => 'PCLZIP_ERR_UNSUPPORTED_ENCRYPTION', - PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE => 'PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE', - PCLZIP_ERR_DIRECTORY_RESTRICTION => 'PCLZIP_ERR_DIRECTORY_RESTRICTION', - ); - - if (isset($v_name[$this->error_code])) { - $v_value = $v_name[$this->error_code]; - } else { - $v_value = 'NoName'; - } - - if ($p_with_code) { - return($v_value.' ('.$this->error_code.')'); - } else { - return($v_value); - } - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : errorInfo() - // Description : - // Parameters : - // -------------------------------------------------------------------------------- - public function errorInfo($p_full = false) - { - if (PCLZIP_ERROR_EXTERNAL == 1) { - return(PclErrorString()); - } else { - if ($p_full) { - return($this->errorName(true)." : ".$this->error_string); - } else { - return($this->error_string." [code ".$this->error_code."]"); - } - } - } - // -------------------------------------------------------------------------------- - - - // -------------------------------------------------------------------------------- - // ***** UNDER THIS LINE ARE DEFINED PRIVATE INTERNAL FUNCTIONS ***** - // ***** ***** - // ***** THESES FUNCTIONS MUST NOT BE USED DIRECTLY ***** - // -------------------------------------------------------------------------------- - - - - // -------------------------------------------------------------------------------- - // Function : privCheckFormat() - // Description : - // This method check that the archive exists and is a valid zip archive. - // Several level of check exists. (futur) - // Parameters : - // $p_level : Level of check. Default 0. - // 0 : Check the first bytes (magic codes) (default value)) - // 1 : 0 + Check the central directory (futur) - // 2 : 1 + Check each file header (futur) - // Return Values : - // true on success, - // false on error, the error code is set. - // -------------------------------------------------------------------------------- - public function privCheckFormat($p_level = 0) - { - $v_result = true; - - // ----- Reset the file system cache - clearstatcache(); - - // ----- Reset the error handler - $this->privErrorReset(); - - // ----- Look if the file exits - if (!is_file($this->zipname)) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "Missing archive file '".$this->zipname."'"); - return(false); - } - - // ----- Check that the file is readeable - if (!is_readable($this->zipname)) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to read archive '".$this->zipname."'"); - return(false); - } - - // ----- Check the magic code - // TBC - - // ----- Check the central header - // TBC - - // ----- Check each file header - // TBC - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privParseOptions() - // Description : - // This internal methods reads the variable list of arguments ($p_options_list, - // $p_size) and generate an array with the options and values ($v_result_list). - // $v_requested_options contains the options that can be present and those that - // must be present. - // $v_requested_options is an array, with the option value as key, and 'optional', - // or 'mandatory' as value. - // Parameters : - // See above. - // Return Values : - // 1 on success. - // 0 on failure. - // -------------------------------------------------------------------------------- - public function privParseOptions(&$p_options_list, $p_size, &$v_result_list, $v_requested_options = false) - { - $v_result=1; - - // ----- Read the options - $i=0; - while ($i<$p_size) { - // ----- Check if the option is supported - if (!isset($v_requested_options[$p_options_list[$i]])) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid optional parameter '".$p_options_list[$i]."' for this method"); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Look for next option - switch ($p_options_list[$i]) { - // ----- Look for options that request a path value - case PCLZIP_OPT_PATH: - case PCLZIP_OPT_REMOVE_PATH: - case PCLZIP_OPT_ADD_PATH: - // ----- Check the number of parameters - if (($i+1) >= $p_size) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Get the value - $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], false); - $i++; - break; - - case PCLZIP_OPT_TEMP_FILE_THRESHOLD: - // ----- Check the number of parameters - if (($i+1) >= $p_size) { - PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - return PclZip::errorCode(); - } - - // ----- Check for incompatible options - if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) { - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'"); - return PclZip::errorCode(); - } - - // ----- Check the value - $v_value = $p_options_list[$i+1]; - if ((!is_integer($v_value)) || ($v_value<0)) { - PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Integer expected for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - return PclZip::errorCode(); - } - - // ----- Get the value (and convert it in bytes) - $v_result_list[$p_options_list[$i]] = $v_value*1048576; - $i++; - break; - - case PCLZIP_OPT_TEMP_FILE_ON: - // ----- Check for incompatible options - if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) { - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'"); - return PclZip::errorCode(); - } - - $v_result_list[$p_options_list[$i]] = true; - break; - - case PCLZIP_OPT_TEMP_FILE_OFF: - // ----- Check for incompatible options - if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_ON])) { - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_ON'"); - return PclZip::errorCode(); - } - // ----- Check for incompatible options - if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) { - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_THRESHOLD'"); - return PclZip::errorCode(); - } - $v_result_list[$p_options_list[$i]] = true; - break; - - case PCLZIP_OPT_EXTRACT_DIR_RESTRICTION: - // ----- Check the number of parameters - if (($i+1) >= $p_size) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - // ----- Return - return PclZip::errorCode(); - } - - // ----- Get the value - if (is_string($p_options_list[$i+1]) && ($p_options_list[$i+1] != '')) { - $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], false); - $i++; - } else { - } - break; - // ----- Look for options that request an array of string for value - case PCLZIP_OPT_BY_NAME: - // ----- Check the number of parameters - if (($i+1) >= $p_size) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - // ----- Return - return PclZip::errorCode(); - } - - // ----- Get the value - if (is_string($p_options_list[$i+1])) { - $v_result_list[$p_options_list[$i]][0] = $p_options_list[$i+1]; - } elseif (is_array($p_options_list[$i+1])) { - $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; - } else { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - // ----- Return - return PclZip::errorCode(); - } - $i++; - break; - // ----- Look for options that request an EREG or PREG expression - case PCLZIP_OPT_BY_EREG: - // ereg() is deprecated starting with PHP 5.3. Move PCLZIP_OPT_BY_EREG - // to PCLZIP_OPT_BY_PREG - $p_options_list[$i] = PCLZIP_OPT_BY_PREG; - case PCLZIP_OPT_BY_PREG: - //case PCLZIP_OPT_CRYPT : - // ----- Check the number of parameters - if (($i+1) >= $p_size) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - // ----- Return - return PclZip::errorCode(); - } - - // ----- Get the value - if (is_string($p_options_list[$i+1])) { - $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; - } else { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - // ----- Return - return PclZip::errorCode(); - } - $i++; - break; - - // ----- Look for options that takes a string - case PCLZIP_OPT_COMMENT: - case PCLZIP_OPT_ADD_COMMENT: - case PCLZIP_OPT_PREPEND_COMMENT: - // ----- Check the number of parameters - if (($i+1) >= $p_size) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Get the value - if (is_string($p_options_list[$i+1])) { - $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; - } else { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '" .PclZipUtilOptionText($p_options_list[$i]) ."'"); - - // ----- Return - return PclZip::errorCode(); - } - $i++; - break; - - // ----- Look for options that request an array of index - case PCLZIP_OPT_BY_INDEX: - // ----- Check the number of parameters - if (($i+1) >= $p_size) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Get the value - $v_work_list = array(); - if (is_string($p_options_list[$i+1])) { - // ----- Remove spaces - $p_options_list[$i+1] = strtr($p_options_list[$i+1], ' ', ''); - - // ----- Parse items - $v_work_list = explode(",", $p_options_list[$i+1]); - } elseif (is_integer($p_options_list[$i+1])) { - $v_work_list[0] = $p_options_list[$i+1].'-'.$p_options_list[$i+1]; - } elseif (is_array($p_options_list[$i+1])) { - $v_work_list = $p_options_list[$i+1]; - } else { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Value must be integer, string or array for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Reduce the index list - // each index item in the list must be a couple with a start and - // an end value : [0,3], [5-5], [8-10], ... - // ----- Check the format of each item - $v_sort_flag=false; - $v_sort_value=0; - for ($j=0; $j<sizeof($v_work_list); $j++) { - // ----- Explode the item - $v_item_list = explode("-", $v_work_list[$j]); - $v_size_item_list = sizeof($v_item_list); - - // ----- TBC : Here we might check that each item is a - // real integer ... - - // ----- Look for single value - if ($v_size_item_list == 1) { - // ----- Set the option value - $v_result_list[$p_options_list[$i]][$j]['start'] = $v_item_list[0]; - $v_result_list[$p_options_list[$i]][$j]['end'] = $v_item_list[0]; - } elseif ($v_size_item_list == 2) { - // ----- Set the option value - $v_result_list[$p_options_list[$i]][$j]['start'] = $v_item_list[0]; - $v_result_list[$p_options_list[$i]][$j]['end'] = $v_item_list[1]; - } else { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Too many values in index range for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - - // ----- Return - return PclZip::errorCode(); - } - - - // ----- Look for list sort - if ($v_result_list[$p_options_list[$i]][$j]['start'] < $v_sort_value) { - $v_sort_flag=true; - - // ----- TBC : An automatic sort should be writen ... - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Invalid order of index range for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - - // ----- Return - return PclZip::errorCode(); - } - $v_sort_value = $v_result_list[$p_options_list[$i]][$j]['start']; - } - - // ----- Sort the items - if ($v_sort_flag) { - // TBC : To Be Completed - } - // ----- Next option - $i++; - break; - // ----- Look for options that request no value - case PCLZIP_OPT_REMOVE_ALL_PATH: - case PCLZIP_OPT_EXTRACT_AS_STRING: - case PCLZIP_OPT_NO_COMPRESSION: - case PCLZIP_OPT_EXTRACT_IN_OUTPUT: - case PCLZIP_OPT_REPLACE_NEWER: - case PCLZIP_OPT_STOP_ON_ERROR: - $v_result_list[$p_options_list[$i]] = true; - break; - // ----- Look for options that request an octal value - case PCLZIP_OPT_SET_CHMOD: - // ----- Check the number of parameters - if (($i+1) >= $p_size) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - // ----- Return - return PclZip::errorCode(); - } - // ----- Get the value - $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; - $i++; - break; - - // ----- Look for options that request a call-back - case PCLZIP_CB_PRE_EXTRACT: - case PCLZIP_CB_POST_EXTRACT: - case PCLZIP_CB_PRE_ADD: - case PCLZIP_CB_POST_ADD: - /* for futur use - case PCLZIP_CB_PRE_DELETE : - case PCLZIP_CB_POST_DELETE : - case PCLZIP_CB_PRE_LIST : - case PCLZIP_CB_POST_LIST : - */ - // ----- Check the number of parameters - if (($i+1) >= $p_size) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - // ----- Return - return PclZip::errorCode(); - } - - // ----- Get the value - $v_function_name = $p_options_list[$i+1]; - - // ----- Check that the value is a valid existing function - if (!function_exists($v_function_name)) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Function '".$v_function_name."()' is not an existing function for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - // ----- Return - return PclZip::errorCode(); - } - - // ----- Set the attribute - $v_result_list[$p_options_list[$i]] = $v_function_name; - $i++; - break; - default: - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Unknown parameter '" .$p_options_list[$i]."'"); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Next options - $i++; - } - - // ----- Look for mandatory options - if ($v_requested_options !== false) { - for ($key=reset($v_requested_options); $key=key($v_requested_options); $key=next($v_requested_options)) { - // ----- Look for mandatory option - if ($v_requested_options[$key] == 'mandatory') { - // ----- Look if present - if (!isset($v_result_list[$key])) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter ".PclZipUtilOptionText($key)."(".$key.")"); - - // ----- Return - return PclZip::errorCode(); - } - } - } - } - - // ----- Look for default values - if (!isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) { - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privOptionDefaultThreshold() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - public function privOptionDefaultThreshold(&$p_options) - { - $v_result=1; - - if (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) || isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) { - return $v_result; - } - - // ----- Get 'memory_limit' configuration value - $v_memory_limit = ini_get('memory_limit'); - $v_memory_limit = trim($v_memory_limit); - $last = strtolower(substr($v_memory_limit, -1)); - - if ($last == 'g') { - //$v_memory_limit = $v_memory_limit*1024*1024*1024; - $v_memory_limit = $v_memory_limit*1073741824; - } - if ($last == 'm') { - //$v_memory_limit = $v_memory_limit*1024*1024; - $v_memory_limit = $v_memory_limit*1048576; - } - if ($last == 'k') { - $v_memory_limit = $v_memory_limit*1024; - } - - $p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] = floor($v_memory_limit*PCLZIP_TEMPORARY_FILE_RATIO); - - // ----- Sanity check : No threshold if value lower than 1M - if ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] < 1048576) { - unset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]); - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privFileDescrParseAtt() - // Description : - // Parameters : - // Return Values : - // 1 on success. - // 0 on failure. - // -------------------------------------------------------------------------------- - public function privFileDescrParseAtt(&$p_file_list, &$p_filedescr, $v_options, $v_requested_options = false) - { - $v_result=1; - - // ----- For each file in the list check the attributes - foreach ($p_file_list as $v_key => $v_value) { - // ----- Check if the option is supported - if (!isset($v_requested_options[$v_key])) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file attribute '".$v_key."' for this file"); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Look for attribute - switch ($v_key) { - case PCLZIP_ATT_FILE_NAME: - if (!is_string($v_value)) { - PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'"); - return PclZip::errorCode(); - } - - $p_filedescr['filename'] = PclZipUtilPathReduction($v_value); - - if ($p_filedescr['filename'] == '') { - PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty filename for attribute '".PclZipUtilOptionText($v_key)."'"); - return PclZip::errorCode(); - } - break; - case PCLZIP_ATT_FILE_NEW_SHORT_NAME: - if (!is_string($v_value)) { - PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'"); - return PclZip::errorCode(); - } - - $p_filedescr['new_short_name'] = PclZipUtilPathReduction($v_value); - - if ($p_filedescr['new_short_name'] == '') { - PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty short filename for attribute '".PclZipUtilOptionText($v_key)."'"); - return PclZip::errorCode(); - } - break; - case PCLZIP_ATT_FILE_NEW_FULL_NAME: - if (!is_string($v_value)) { - PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'"); - return PclZip::errorCode(); - } - - $p_filedescr['new_full_name'] = PclZipUtilPathReduction($v_value); - - if ($p_filedescr['new_full_name'] == '') { - PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty full filename for attribute '".PclZipUtilOptionText($v_key)."'"); - return PclZip::errorCode(); - } - break; - // ----- Look for options that takes a string - case PCLZIP_ATT_FILE_COMMENT: - if (!is_string($v_value)) { - PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'"); - return PclZip::errorCode(); - } - $p_filedescr['comment'] = $v_value; - break; - case PCLZIP_ATT_FILE_MTIME: - if (!is_integer($v_value)) { - PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". Integer expected for attribute '".PclZipUtilOptionText($v_key)."'"); - return PclZip::errorCode(); - } - $p_filedescr['mtime'] = $v_value; - break; - case PCLZIP_ATT_FILE_CONTENT: - $p_filedescr['content'] = $v_value; - break; - default: - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Unknown parameter '".$v_key."'"); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Look for mandatory options - if ($v_requested_options !== false) { - for ($key = reset($v_requested_options); $key = key($v_requested_options); $key = next($v_requested_options)) { - // ----- Look for mandatory option - if ($v_requested_options[$key] == 'mandatory') { - // ----- Look if present - if (!isset($p_file_list[$key])) { - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter ".PclZipUtilOptionText($key)."(".$key.")"); - return PclZip::errorCode(); - } - } - } - } - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privFileDescrExpand() - // Description : - // This method look for each item of the list to see if its a file, a folder - // or a string to be added as file. For any other type of files (link, other) - // just ignore the item. - // Then prepare the information that will be stored for that file. - // When its a folder, expand the folder with all the files that are in that - // folder (recursively). - // Parameters : - // Return Values : - // 1 on success. - // 0 on failure. - // -------------------------------------------------------------------------------- - public function privFileDescrExpand(&$p_filedescr_list, &$p_options) - { - $v_result=1; - - // ----- Create a result list - $v_result_list = array(); - - // ----- Look each entry - for ($i=0; $i<sizeof($p_filedescr_list); $i++) { - // ----- Get filedescr - $v_descr = $p_filedescr_list[$i]; - - // ----- Reduce the filename - $v_descr['filename'] = PclZipUtilTranslateWinPath($v_descr['filename'], false); - $v_descr['filename'] = PclZipUtilPathReduction($v_descr['filename']); - - // ----- Look for real file or folder - if (file_exists($v_descr['filename'])) { - if (@is_file($v_descr['filename'])) { - $v_descr['type'] = 'file'; - } elseif (@is_dir($v_descr['filename'])) { - $v_descr['type'] = 'folder'; - } elseif (@is_link($v_descr['filename'])) { - // skip - continue; - } else { - // skip - continue; - } - } elseif (isset($v_descr['content'])) { - // ----- Look for string added as file - $v_descr['type'] = 'virtual_file'; - } else { - // ----- Missing file - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "File '".$v_descr['filename']."' does not exist"); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Calculate the stored filename - $this->privCalculateStoredFilename($v_descr, $p_options); - - // ----- Add the descriptor in result list - $v_result_list[sizeof($v_result_list)] = $v_descr; - - // ----- Look for folder - if ($v_descr['type'] == 'folder') { - // ----- List of items in folder - $v_dirlist_descr = array(); - $v_dirlist_nb = 0; - if ($v_folder_handler = @opendir($v_descr['filename'])) { - while (($v_item_handler = @readdir($v_folder_handler)) !== false) { - // ----- Skip '.' and '..' - if (($v_item_handler == '.') || ($v_item_handler == '..')) { - continue; - } - - // ----- Compose the full filename - $v_dirlist_descr[$v_dirlist_nb]['filename'] = $v_descr['filename'].'/'.$v_item_handler; - - // ----- Look for different stored filename - // Because the name of the folder was changed, the name of the - // files/sub-folders also change - if (($v_descr['stored_filename'] != $v_descr['filename']) - && (!isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH]))) { - if ($v_descr['stored_filename'] != '') { - $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_descr['stored_filename'].'/'.$v_item_handler; - } else { - $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_item_handler; - } - } - $v_dirlist_nb++; - } - - @closedir($v_folder_handler); - } else { - // TBC : unable to open folder in read mode - } - - // ----- Expand each element of the list - if ($v_dirlist_nb != 0) { - // ----- Expand - if (($v_result = $this->privFileDescrExpand($v_dirlist_descr, $p_options)) != 1) { - return $v_result; - } - - // ----- Concat the resulting list - $v_result_list = array_merge($v_result_list, $v_dirlist_descr); - } - - // ----- Free local array - unset($v_dirlist_descr); - } - } - - // ----- Get the result list - $p_filedescr_list = $v_result_list; - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privCreate() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - public function privCreate($p_filedescr_list, &$p_result_list, &$p_options) - { - $v_result=1; - $v_list_detail = array(); - - // ----- Magic quotes trick - $this->privDisableMagicQuotes(); - - // ----- Open the file in write mode - if (($v_result = $this->privOpenFd('wb')) != 1) { - // ----- Return - return $v_result; - } - - // ----- Add the list of files - $v_result = $this->privAddList($p_filedescr_list, $p_result_list, $p_options); - - // ----- Close - $this->privCloseFd(); - - // ----- Magic quotes trick - $this->privSwapBackMagicQuotes(); - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privAdd() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - public function privAdd($p_filedescr_list, &$p_result_list, &$p_options) - { - $v_result=1; - $v_list_detail = array(); - - // ----- Look if the archive exists or is empty - if ((!is_file($this->zipname)) || (filesize($this->zipname) == 0)) { - // ----- Do a create - $v_result = $this->privCreate($p_filedescr_list, $p_result_list, $p_options); - - // ----- Return - return $v_result; - } - // ----- Magic quotes trick - $this->privDisableMagicQuotes(); - - // ----- Open the zip file - if (($v_result=$this->privOpenFd('rb')) != 1) { - // ----- Magic quotes trick - $this->privSwapBackMagicQuotes(); - - // ----- Return - return $v_result; - } - - // ----- Read the central directory informations - $v_central_dir = array(); - if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) { - $this->privCloseFd(); - $this->privSwapBackMagicQuotes(); - return $v_result; - } - - // ----- Go to beginning of File - @rewind($this->zip_fd); - - // ----- Creates a temporay file - $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp'; - - // ----- Open the temporary file in write mode - if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0) { - $this->privCloseFd(); - $this->privSwapBackMagicQuotes(); - - PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_zip_temp_name.'\' in binary write mode'); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Copy the files from the archive to the temporary file - // TBC : Here I should better append the file and go back to erase the central dir - $v_size = $v_central_dir['offset']; - while ($v_size != 0) { - $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); - $v_buffer = fread($this->zip_fd, $v_read_size); - @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); - $v_size -= $v_read_size; - } - - // ----- Swap the file descriptor - // Here is a trick : I swap the temporary fd with the zip fd, in order to use - // the following methods on the temporary fil and not the real archive - $v_swap = $this->zip_fd; - $this->zip_fd = $v_zip_temp_fd; - $v_zip_temp_fd = $v_swap; - - // ----- Add the files - $v_header_list = array(); - if (($v_result = $this->privAddFileList($p_filedescr_list, $v_header_list, $p_options)) != 1) { - fclose($v_zip_temp_fd); - $this->privCloseFd(); - @unlink($v_zip_temp_name); - $this->privSwapBackMagicQuotes(); - - // ----- Return - return $v_result; - } - - // ----- Store the offset of the central dir - $v_offset = @ftell($this->zip_fd); - - // ----- Copy the block of file headers from the old archive - $v_size = $v_central_dir['size']; - while ($v_size != 0) { - $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); - $v_buffer = @fread($v_zip_temp_fd, $v_read_size); - @fwrite($this->zip_fd, $v_buffer, $v_read_size); - $v_size -= $v_read_size; - } - - // ----- Create the Central Dir files header - for ($i=0, $v_count=0; $i<sizeof($v_header_list); $i++) { - // ----- Create the file header - if ($v_header_list[$i]['status'] == 'ok') { - if (($v_result = $this->privWriteCentralFileHeader($v_header_list[$i])) != 1) { - fclose($v_zip_temp_fd); - $this->privCloseFd(); - @unlink($v_zip_temp_name); - $this->privSwapBackMagicQuotes(); - - // ----- Return - return $v_result; - } - $v_count++; - } - - // ----- Transform the header to a 'usable' info - $this->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); - } - - // ----- Zip file comment - $v_comment = $v_central_dir['comment']; - if (isset($p_options[PCLZIP_OPT_COMMENT])) { - $v_comment = $p_options[PCLZIP_OPT_COMMENT]; - } - if (isset($p_options[PCLZIP_OPT_ADD_COMMENT])) { - $v_comment = $v_comment.$p_options[PCLZIP_OPT_ADD_COMMENT]; - } - if (isset($p_options[PCLZIP_OPT_PREPEND_COMMENT])) { - $v_comment = $p_options[PCLZIP_OPT_PREPEND_COMMENT].$v_comment; - } - - // ----- Calculate the size of the central header - $v_size = @ftell($this->zip_fd)-$v_offset; - - // ----- Create the central dir footer - if (($v_result = $this->privWriteCentralHeader($v_count+$v_central_dir['entries'], $v_size, $v_offset, $v_comment)) != 1) { - // ----- Reset the file list - unset($v_header_list); - $this->privSwapBackMagicQuotes(); - - // ----- Return - return $v_result; - } - - // ----- Swap back the file descriptor - $v_swap = $this->zip_fd; - $this->zip_fd = $v_zip_temp_fd; - $v_zip_temp_fd = $v_swap; - - // ----- Close - $this->privCloseFd(); - - // ----- Close the temporary file - @fclose($v_zip_temp_fd); - - // ----- Magic quotes trick - $this->privSwapBackMagicQuotes(); - - // ----- Delete the zip file - // TBC : I should test the result ... - @unlink($this->zipname); - - // ----- Rename the temporary file - // TBC : I should test the result ... - //@rename($v_zip_temp_name, $this->zipname); - PclZipUtilRename($v_zip_temp_name, $this->zipname); - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privOpenFd() - // Description : - // Parameters : - // -------------------------------------------------------------------------------- - public function privOpenFd($p_mode) - { - $v_result=1; - - // ----- Look if already open - if ($this->zip_fd != 0) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Zip file \''.$this->zipname.'\' already open'); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Open the zip file - if (($this->zip_fd = @fopen($this->zipname, $p_mode)) == 0) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in '.$p_mode.' mode'); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privCloseFd() - // Description : - // Parameters : - // -------------------------------------------------------------------------------- - public function privCloseFd() - { - $v_result=1; - - if ($this->zip_fd != 0) { - @fclose($this->zip_fd); - } - $this->zip_fd = 0; - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privAddList() - // Description : - // $p_add_dir and $p_remove_dir will give the ability to memorize a path which is - // different from the real path of the file. This is usefull if you want to have PclTar - // running in any directory, and memorize relative path from an other directory. - // Parameters : - // $p_list : An array containing the file or directory names to add in the tar - // $p_result_list : list of added files with their properties (specially the status field) - // $p_add_dir : Path to add in the filename path archived - // $p_remove_dir : Path to remove in the filename path archived - // Return Values : - // -------------------------------------------------------------------------------- - // public function privAddList($p_list, &$p_result_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, &$p_options) - public function privAddList($p_filedescr_list, &$p_result_list, &$p_options) - { - $v_result=1; - - // ----- Add the files - $v_header_list = array(); - if (($v_result = $this->privAddFileList($p_filedescr_list, $v_header_list, $p_options)) != 1) { - // ----- Return - return $v_result; - } - - // ----- Store the offset of the central dir - $v_offset = @ftell($this->zip_fd); - - // ----- Create the Central Dir files header - for ($i=0, $v_count=0; $i<sizeof($v_header_list); $i++) { - // ----- Create the file header - if ($v_header_list[$i]['status'] == 'ok') { - if (($v_result = $this->privWriteCentralFileHeader($v_header_list[$i])) != 1) { - // ----- Return - return $v_result; - } - $v_count++; - } - - // ----- Transform the header to a 'usable' info - $this->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); - } - - // ----- Zip file comment - $v_comment = ''; - if (isset($p_options[PCLZIP_OPT_COMMENT])) { - $v_comment = $p_options[PCLZIP_OPT_COMMENT]; - } - - // ----- Calculate the size of the central header - $v_size = @ftell($this->zip_fd)-$v_offset; - - // ----- Create the central dir footer - if (($v_result = $this->privWriteCentralHeader($v_count, $v_size, $v_offset, $v_comment)) != 1) { - // ----- Reset the file list - unset($v_header_list); - - // ----- Return - return $v_result; - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privAddFileList() - // Description : - // Parameters : - // $p_filedescr_list : An array containing the file description - // or directory names to add in the zip - // $p_result_list : list of added files with their properties (specially the status field) - // Return Values : - // -------------------------------------------------------------------------------- - public function privAddFileList($p_filedescr_list, &$p_result_list, &$p_options) - { - $v_result=1; - $v_header = array(); - - // ----- Recuperate the current number of elt in list - $v_nb = sizeof($p_result_list); - - // ----- Loop on the files - for ($j=0; ($j<sizeof($p_filedescr_list)) && ($v_result==1); $j++) { - // ----- Format the filename - $p_filedescr_list[$j]['filename'] = PclZipUtilTranslateWinPath($p_filedescr_list[$j]['filename'], false); - - // ----- Skip empty file names - // TBC : Can this be possible ? not checked in DescrParseAtt ? - if ($p_filedescr_list[$j]['filename'] == "") { - continue; - } - - // ----- Check the filename - if (($p_filedescr_list[$j]['type'] != 'virtual_file') && (!file_exists($p_filedescr_list[$j]['filename']))) { - PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "File '".$p_filedescr_list[$j]['filename']."' does not exist"); - return PclZip::errorCode(); - } - - // ----- Look if it is a file or a dir with no all path remove option - // or a dir with all its path removed - // if ( (is_file($p_filedescr_list[$j]['filename'])) - // || ( is_dir($p_filedescr_list[$j]['filename']) - if (($p_filedescr_list[$j]['type'] == 'file') || ($p_filedescr_list[$j]['type'] == 'virtual_file') || (($p_filedescr_list[$j]['type'] == 'folder') && (!isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH]) || !$p_options[PCLZIP_OPT_REMOVE_ALL_PATH]))) { - // ----- Add the file - $v_result = $this->privAddFile($p_filedescr_list[$j], $v_header, $p_options); - if ($v_result != 1) { - return $v_result; - } - - // ----- Store the file infos - $p_result_list[$v_nb++] = $v_header; - } - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privAddFile() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - public function privAddFile($p_filedescr, &$p_header, &$p_options) - { - $v_result=1; - - // ----- Working variable - $p_filename = $p_filedescr['filename']; - - // TBC : Already done in the fileAtt check ... ? - if ($p_filename == "") { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file list parameter (invalid or empty list)"); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Look for a stored different filename - /* TBC : Removed - if (isset($p_filedescr['stored_filename'])) { - $v_stored_filename = $p_filedescr['stored_filename']; - } - else { - $v_stored_filename = $p_filedescr['stored_filename']; - } - */ - - // ----- Set the file properties - clearstatcache(); - $p_header['version'] = 20; - $p_header['version_extracted'] = 10; - $p_header['flag'] = 0; - $p_header['compression'] = 0; - $p_header['crc'] = 0; - $p_header['compressed_size'] = 0; - $p_header['filename_len'] = strlen($p_filename); - $p_header['extra_len'] = 0; - $p_header['disk'] = 0; - $p_header['internal'] = 0; - $p_header['offset'] = 0; - $p_header['filename'] = $p_filename; - // TBC : Removed $p_header['stored_filename'] = $v_stored_filename; - $p_header['stored_filename'] = $p_filedescr['stored_filename']; - $p_header['extra'] = ''; - $p_header['status'] = 'ok'; - $p_header['index'] = -1; - - // ----- Look for regular file - if ($p_filedescr['type']=='file') { - $p_header['external'] = 0x00000000; - $p_header['size'] = filesize($p_filename); - } elseif ($p_filedescr['type']=='folder') { - // ----- Look for regular folder - $p_header['external'] = 0x00000010; - $p_header['mtime'] = filemtime($p_filename); - $p_header['size'] = filesize($p_filename); - } elseif ($p_filedescr['type'] == 'virtual_file') { - // ----- Look for virtual file - $p_header['external'] = 0x00000000; - $p_header['size'] = strlen($p_filedescr['content']); - } - - // ----- Look for filetime - if (isset($p_filedescr['mtime'])) { - $p_header['mtime'] = $p_filedescr['mtime']; - } elseif ($p_filedescr['type'] == 'virtual_file') { - $p_header['mtime'] = time(); - } else { - $p_header['mtime'] = filemtime($p_filename); - } - - // ------ Look for file comment - if (isset($p_filedescr['comment'])) { - $p_header['comment_len'] = strlen($p_filedescr['comment']); - $p_header['comment'] = $p_filedescr['comment']; - } else { - $p_header['comment_len'] = 0; - $p_header['comment'] = ''; - } - - // ----- Look for pre-add callback - if (isset($p_options[PCLZIP_CB_PRE_ADD])) { - // ----- Generate a local information - $v_local_header = array(); - $this->privConvertHeader2FileInfo($p_header, $v_local_header); - - // ----- Call the callback - // Here I do not use call_user_func() because I need to send a reference to the - // header. - // eval('$v_result = '.$p_options[PCLZIP_CB_PRE_ADD].'(PCLZIP_CB_PRE_ADD, $v_local_header);'); - $v_result = $p_options[PCLZIP_CB_PRE_ADD](PCLZIP_CB_PRE_ADD, $v_local_header); - if ($v_result == 0) { - // ----- Change the file status - $p_header['status'] = "skipped"; - $v_result = 1; - } - - // ----- Update the informations - // Only some fields can be modified - if ($p_header['stored_filename'] != $v_local_header['stored_filename']) { - $p_header['stored_filename'] = PclZipUtilPathReduction($v_local_header['stored_filename']); - } - } - - // ----- Look for empty stored filename - if ($p_header['stored_filename'] == "") { - $p_header['status'] = "filtered"; - } - - // ----- Check the path length - if (strlen($p_header['stored_filename']) > 0xFF) { - $p_header['status'] = 'filename_too_long'; - } - - // ----- Look if no error, or file not skipped - if ($p_header['status'] == 'ok') { - // ----- Look for a file - if ($p_filedescr['type'] == 'file') { - // ----- Look for using temporary file to zip - if ((!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) && (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON]) || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) && ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] <= $p_header['size'])))) { - $v_result = $this->privAddFileUsingTempFile($p_filedescr, $p_header, $p_options); - if ($v_result < PCLZIP_ERR_NO_ERROR) { - return $v_result; - } - } else { - // ----- Use "in memory" zip algo - // ----- Open the source file - if (($v_file = @fopen($p_filename, "rb")) == 0) { - PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode"); - return PclZip::errorCode(); - } - - // ----- Read the file content - $v_content = @fread($v_file, $p_header['size']); - - // ----- Close the file - @fclose($v_file); - - // ----- Calculate the CRC - $p_header['crc'] = @crc32($v_content); - - // ----- Look for no compression - if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) { - // ----- Set header parameters - $p_header['compressed_size'] = $p_header['size']; - $p_header['compression'] = 0; - } else { - // ----- Look for normal compression - // ----- Compress the content - $v_content = @gzdeflate($v_content); - - // ----- Set header parameters - $p_header['compressed_size'] = strlen($v_content); - $p_header['compression'] = 8; - } - - // ----- Call the header generation - if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { - @fclose($v_file); - return $v_result; - } - - // ----- Write the compressed (or not) content - @fwrite($this->zip_fd, $v_content, $p_header['compressed_size']); - } - } elseif ($p_filedescr['type'] == 'virtual_file') { - // ----- Look for a virtual file (a file from string) - $v_content = $p_filedescr['content']; - - // ----- Calculate the CRC - $p_header['crc'] = @crc32($v_content); - - // ----- Look for no compression - if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) { - // ----- Set header parameters - $p_header['compressed_size'] = $p_header['size']; - $p_header['compression'] = 0; - } else { - // ----- Look for normal compression - // ----- Compress the content - $v_content = @gzdeflate($v_content); - - // ----- Set header parameters - $p_header['compressed_size'] = strlen($v_content); - $p_header['compression'] = 8; - } - - // ----- Call the header generation - if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { - @fclose($v_file); - return $v_result; - } - - // ----- Write the compressed (or not) content - @fwrite($this->zip_fd, $v_content, $p_header['compressed_size']); - } elseif ($p_filedescr['type'] == 'folder') { - // ----- Look for a directory - // ----- Look for directory last '/' - if (@substr($p_header['stored_filename'], -1) != '/') { - $p_header['stored_filename'] .= '/'; - } - - // ----- Set the file properties - $p_header['size'] = 0; - //$p_header['external'] = 0x41FF0010; // Value for a folder : to be checked - $p_header['external'] = 0x00000010; // Value for a folder : to be checked - - // ----- Call the header generation - if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { - return $v_result; - } - } - } - - // ----- Look for post-add callback - if (isset($p_options[PCLZIP_CB_POST_ADD])) { - // ----- Generate a local information - $v_local_header = array(); - $this->privConvertHeader2FileInfo($p_header, $v_local_header); - - // ----- Call the callback - // Here I do not use call_user_func() because I need to send a reference to the - // header. - // eval('$v_result = '.$p_options[PCLZIP_CB_POST_ADD].'(PCLZIP_CB_POST_ADD, $v_local_header);'); - $v_result = $p_options[PCLZIP_CB_POST_ADD](PCLZIP_CB_POST_ADD, $v_local_header); - if ($v_result == 0) { - // ----- Ignored - $v_result = 1; - } - - // ----- Update the informations - // Nothing can be modified - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privAddFileUsingTempFile() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - public function privAddFileUsingTempFile($p_filedescr, &$p_header, &$p_options) - { - $v_result=PCLZIP_ERR_NO_ERROR; - - // ----- Working variable - $p_filename = $p_filedescr['filename']; - - - // ----- Open the source file - if (($v_file = @fopen($p_filename, "rb")) == 0) { - PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode"); - return PclZip::errorCode(); - } - - // ----- Creates a compressed temporary file - $v_gzip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.gz'; - if (($v_file_compressed = @gzopen($v_gzip_temp_name, "wb")) == 0) { - fclose($v_file); - PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary write mode'); - return PclZip::errorCode(); - } - - // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks - $v_size = filesize($p_filename); - while ($v_size != 0) { - $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); - $v_buffer = @fread($v_file, $v_read_size); - //$v_binary_data = pack('a'.$v_read_size, $v_buffer); - @gzputs($v_file_compressed, $v_buffer, $v_read_size); - $v_size -= $v_read_size; - } - - // ----- Close the file - @fclose($v_file); - @gzclose($v_file_compressed); - - // ----- Check the minimum file size - if (filesize($v_gzip_temp_name) < 18) { - PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'gzip temporary file \''.$v_gzip_temp_name.'\' has invalid filesize - should be minimum 18 bytes'); - return PclZip::errorCode(); - } - - // ----- Extract the compressed attributes - if (($v_file_compressed = @fopen($v_gzip_temp_name, "rb")) == 0) { - PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode'); - return PclZip::errorCode(); - } - - // ----- Read the gzip file header - $v_binary_data = @fread($v_file_compressed, 10); - $v_data_header = unpack('a1id1/a1id2/a1cm/a1flag/Vmtime/a1xfl/a1os', $v_binary_data); - - // ----- Check some parameters - $v_data_header['os'] = bin2hex($v_data_header['os']); - - // ----- Read the gzip file footer - @fseek($v_file_compressed, filesize($v_gzip_temp_name)-8); - $v_binary_data = @fread($v_file_compressed, 8); - $v_data_footer = unpack('Vcrc/Vcompressed_size', $v_binary_data); - - // ----- Set the attributes - $p_header['compression'] = ord($v_data_header['cm']); - //$p_header['mtime'] = $v_data_header['mtime']; - $p_header['crc'] = $v_data_footer['crc']; - $p_header['compressed_size'] = filesize($v_gzip_temp_name)-18; - - // ----- Close the file - @fclose($v_file_compressed); - - // ----- Call the header generation - if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { - return $v_result; - } - - // ----- Add the compressed data - if (($v_file_compressed = @fopen($v_gzip_temp_name, "rb")) == 0) { - PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode'); - return PclZip::errorCode(); - } - - // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks - fseek($v_file_compressed, 10); - $v_size = $p_header['compressed_size']; - while ($v_size != 0) { - $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); - $v_buffer = @fread($v_file_compressed, $v_read_size); - //$v_binary_data = pack('a'.$v_read_size, $v_buffer); - @fwrite($this->zip_fd, $v_buffer, $v_read_size); - $v_size -= $v_read_size; - } - - // ----- Close the file - @fclose($v_file_compressed); - - // ----- Unlink the temporary file - @unlink($v_gzip_temp_name); - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privCalculateStoredFilename() - // Description : - // Based on file descriptor properties and global options, this method - // calculate the filename that will be stored in the archive. - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - public function privCalculateStoredFilename(&$p_filedescr, &$p_options) - { - $v_result=1; - - // ----- Working variables - $p_filename = $p_filedescr['filename']; - if (isset($p_options[PCLZIP_OPT_ADD_PATH])) { - $p_add_dir = $p_options[PCLZIP_OPT_ADD_PATH]; - } else { - $p_add_dir = ''; - } - if (isset($p_options[PCLZIP_OPT_REMOVE_PATH])) { - $p_remove_dir = $p_options[PCLZIP_OPT_REMOVE_PATH]; - } else { - $p_remove_dir = ''; - } - if (isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { - $p_remove_all_dir = $p_options[PCLZIP_OPT_REMOVE_ALL_PATH]; - } else { - $p_remove_all_dir = 0; - } - - // ----- Look for full name change - if (isset($p_filedescr['new_full_name'])) { - // ----- Remove drive letter if any - $v_stored_filename = PclZipUtilTranslateWinPath($p_filedescr['new_full_name']); - } else { - // ----- Look for path and/or short name change - // ----- Look for short name change - // Its when we cahnge just the filename but not the path - if (isset($p_filedescr['new_short_name'])) { - $v_path_info = pathinfo($p_filename); - $v_dir = ''; - if ($v_path_info['dirname'] != '') { - $v_dir = $v_path_info['dirname'].'/'; - } - $v_stored_filename = $v_dir.$p_filedescr['new_short_name']; - } else { - // ----- Calculate the stored filename - $v_stored_filename = $p_filename; - } - - // ----- Look for all path to remove - if ($p_remove_all_dir) { - $v_stored_filename = basename($p_filename); - } elseif ($p_remove_dir != "") { - // ----- Look for partial path remove - if (substr($p_remove_dir, -1) != '/') { - $p_remove_dir .= "/"; - } - - if ((substr($p_filename, 0, 2) == "./") || (substr($p_remove_dir, 0, 2) == "./")) { - if ((substr($p_filename, 0, 2) == "./") && (substr($p_remove_dir, 0, 2) != "./")) { - $p_remove_dir = "./".$p_remove_dir; - } - if ((substr($p_filename, 0, 2) != "./") && (substr($p_remove_dir, 0, 2) == "./")) { - $p_remove_dir = substr($p_remove_dir, 2); - } - } - - $v_compare = PclZipUtilPathInclusion($p_remove_dir, $v_stored_filename); - if ($v_compare > 0) { - if ($v_compare == 2) { - $v_stored_filename = ""; - } else { - $v_stored_filename = substr($v_stored_filename, strlen($p_remove_dir)); - } - } - } - - // ----- Remove drive letter if any - $v_stored_filename = PclZipUtilTranslateWinPath($v_stored_filename); - - // ----- Look for path to add - if ($p_add_dir != "") { - if (substr($p_add_dir, -1) == "/") { - $v_stored_filename = $p_add_dir.$v_stored_filename; - } else { - $v_stored_filename = $p_add_dir."/".$v_stored_filename; - } - } - } - - // ----- Filename (reduce the path of stored name) - $v_stored_filename = PclZipUtilPathReduction($v_stored_filename); - $p_filedescr['stored_filename'] = $v_stored_filename; - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privWriteFileHeader() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - public function privWriteFileHeader(&$p_header) - { - $v_result=1; - - // ----- Store the offset position of the file - $p_header['offset'] = ftell($this->zip_fd); - - // ----- Transform UNIX mtime to DOS format mdate/mtime - $v_date = getdate($p_header['mtime']); - $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2; - $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday']; - - // ----- Packed data - $v_binary_data = pack("VvvvvvVVVvv", 0x04034b50, $p_header['version_extracted'], $p_header['flag'], $p_header['compression'], $v_mtime, $v_mdate, $p_header['crc'], $p_header['compressed_size'], $p_header['size'], strlen($p_header['stored_filename']), $p_header['extra_len']); - - // ----- Write the first 148 bytes of the header in the archive - fputs($this->zip_fd, $v_binary_data, 30); - - // ----- Write the variable fields - if (strlen($p_header['stored_filename']) != 0) { - fputs($this->zip_fd, $p_header['stored_filename'], strlen($p_header['stored_filename'])); - } - if ($p_header['extra_len'] != 0) { - fputs($this->zip_fd, $p_header['extra'], $p_header['extra_len']); - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privWriteCentralFileHeader() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - public function privWriteCentralFileHeader(&$p_header) - { - $v_result=1; - - // TBC - //for(reset($p_header); $key = key($p_header); next($p_header)) { - //} - - // ----- Transform UNIX mtime to DOS format mdate/mtime - $v_date = getdate($p_header['mtime']); - $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2; - $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday']; - - - // ----- Packed data - $v_binary_data = pack("VvvvvvvVVVvvvvvVV", 0x02014b50, $p_header['version'], $p_header['version_extracted'], $p_header['flag'], $p_header['compression'], $v_mtime, $v_mdate, $p_header['crc'], $p_header['compressed_size'], $p_header['size'], strlen($p_header['stored_filename']), $p_header['extra_len'], $p_header['comment_len'], $p_header['disk'], $p_header['internal'], $p_header['external'], $p_header['offset']); - - // ----- Write the 42 bytes of the header in the zip file - fputs($this->zip_fd, $v_binary_data, 46); - - // ----- Write the variable fields - if (strlen($p_header['stored_filename']) != 0) { - fputs($this->zip_fd, $p_header['stored_filename'], strlen($p_header['stored_filename'])); - } - if ($p_header['extra_len'] != 0) { - fputs($this->zip_fd, $p_header['extra'], $p_header['extra_len']); - } - if ($p_header['comment_len'] != 0) { - fputs($this->zip_fd, $p_header['comment'], $p_header['comment_len']); - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privWriteCentralHeader() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - public function privWriteCentralHeader($p_nb_entries, $p_size, $p_offset, $p_comment) - { - $v_result = 1; - - // ----- Packed data - $v_binary_data = pack("VvvvvVVv", 0x06054b50, 0, 0, $p_nb_entries, $p_nb_entries, $p_size, $p_offset, strlen($p_comment)); - - // ----- Write the 22 bytes of the header in the zip file - fputs($this->zip_fd, $v_binary_data, 22); - - // ----- Write the variable fields - if (strlen($p_comment) != 0) { - fputs($this->zip_fd, $p_comment, strlen($p_comment)); - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privList() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - public function privList(&$p_list) - { - $v_result = 1; - - // ----- Magic quotes trick - $this->privDisableMagicQuotes(); - - // ----- Open the zip file - if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0) { - // ----- Magic quotes trick - $this->privSwapBackMagicQuotes(); - - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode'); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Read the central directory informations - $v_central_dir = array(); - if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) { - $this->privSwapBackMagicQuotes(); - return $v_result; - } - - // ----- Go to beginning of Central Dir - @rewind($this->zip_fd); - if (@fseek($this->zip_fd, $v_central_dir['offset'])) { - $this->privSwapBackMagicQuotes(); - - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Read each entry - for ($i=0; $i<$v_central_dir['entries']; $i++) { - // ----- Read the file header - if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1) { - $this->privSwapBackMagicQuotes(); - return $v_result; - } - $v_header['index'] = $i; - - // ----- Get the only interesting attributes - $this->privConvertHeader2FileInfo($v_header, $p_list[$i]); - unset($v_header); - } - - // ----- Close the zip file - $this->privCloseFd(); - - // ----- Magic quotes trick - $this->privSwapBackMagicQuotes(); - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privConvertHeader2FileInfo() - // Description : - // This function takes the file informations from the central directory - // entries and extract the interesting parameters that will be given back. - // The resulting file infos are set in the array $p_info - // $p_info['filename'] : Filename with full path. Given by user (add), - // extracted in the filesystem (extract). - // $p_info['stored_filename'] : Stored filename in the archive. - // $p_info['size'] = Size of the file. - // $p_info['compressed_size'] = Compressed size of the file. - // $p_info['mtime'] = Last modification date of the file. - // $p_info['comment'] = Comment associated with the file. - // $p_info['folder'] = true/false : indicates if the entry is a folder or not. - // $p_info['status'] = status of the action on the file. - // $p_info['crc'] = CRC of the file content. - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - public function privConvertHeader2FileInfo($p_header, &$p_info) - { - $v_result=1; - - // ----- Get the interesting attributes - $v_temp_path = PclZipUtilPathReduction($p_header['filename']); - $p_info['filename'] = $v_temp_path; - $v_temp_path = PclZipUtilPathReduction($p_header['stored_filename']); - $p_info['stored_filename'] = $v_temp_path; - $p_info['size'] = $p_header['size']; - $p_info['compressed_size'] = $p_header['compressed_size']; - $p_info['mtime'] = $p_header['mtime']; - $p_info['comment'] = $p_header['comment']; - $p_info['folder'] = (($p_header['external']&0x00000010)==0x00000010); - $p_info['index'] = $p_header['index']; - $p_info['status'] = $p_header['status']; - $p_info['crc'] = $p_header['crc']; - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privExtractByRule() - // Description : - // Extract a file or directory depending of rules (by index, by name, ...) - // Parameters : - // $p_file_list : An array where will be placed the properties of each - // extracted file - // $p_path : Path to add while writing the extracted files - // $p_remove_path : Path to remove (from the file memorized path) while writing the - // extracted files. If the path does not match the file path, - // the file is extracted with its memorized path. - // $p_remove_path does not apply to 'list' mode. - // $p_path and $p_remove_path are commulative. - // Return Values : - // 1 on success,0 or less on error (see error code list) - // -------------------------------------------------------------------------------- - public function privExtractByRule(&$p_file_list, $p_path, $p_remove_path, $p_remove_all_path, &$p_options) - { - $v_result=1; - - // ----- Magic quotes trick - $this->privDisableMagicQuotes(); - - // ----- Check the path - if (($p_path == "") || ((substr($p_path, 0, 1) != "/") && (substr($p_path, 0, 3) != "../") && (substr($p_path, 1, 2)!=":/"))) { - $p_path = "./".$p_path; - } - - // ----- Reduce the path last (and duplicated) '/' - if (($p_path != "./") && ($p_path != "/")) { - // ----- Look for the path end '/' - while (substr($p_path, -1) == "/") { - $p_path = substr($p_path, 0, strlen($p_path)-1); - } - } - - // ----- Look for path to remove format (should end by /) - if (($p_remove_path != "") && (substr($p_remove_path, -1) != '/')) { - $p_remove_path .= '/'; - } - $p_remove_path_size = strlen($p_remove_path); - - // ----- Open the zip file - if (($v_result = $this->privOpenFd('rb')) != 1) { - $this->privSwapBackMagicQuotes(); - return $v_result; - } - - // ----- Read the central directory informations - $v_central_dir = array(); - if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) { - // ----- Close the zip file - $this->privCloseFd(); - $this->privSwapBackMagicQuotes(); - - return $v_result; - } - - // ----- Start at beginning of Central Dir - $v_pos_entry = $v_central_dir['offset']; - - // ----- Read each entry - $j_start = 0; - for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++) { - // ----- Read next Central dir entry - @rewind($this->zip_fd); - if (@fseek($this->zip_fd, $v_pos_entry)) { - // ----- Close the zip file - $this->privCloseFd(); - $this->privSwapBackMagicQuotes(); - - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Read the file header - $v_header = array(); - if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1) { - // ----- Close the zip file - $this->privCloseFd(); - $this->privSwapBackMagicQuotes(); - - return $v_result; - } - - // ----- Store the index - $v_header['index'] = $i; - - // ----- Store the file position - $v_pos_entry = ftell($this->zip_fd); - - // ----- Look for the specific extract rules - $v_extract = false; - - // ----- Look for extract by name rule - if ((isset($p_options[PCLZIP_OPT_BY_NAME])) && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) { - // ----- Look if the filename is in the list - for ($j=0; ($j<sizeof($p_options[PCLZIP_OPT_BY_NAME])) && (!$v_extract); $j++) { - // ----- Look for a directory - if (substr($p_options[PCLZIP_OPT_BY_NAME][$j], -1) == "/") { - // ----- Look if the directory is in the filename path - if ((strlen($v_header['stored_filename']) > strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) && (substr($v_header['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) { - $v_extract = true; - } - } elseif ($v_header['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) { - // ----- Look for a filename - $v_extract = true; - } - } - } elseif ((isset($p_options[PCLZIP_OPT_BY_PREG])) && ($p_options[PCLZIP_OPT_BY_PREG] != "")) { - // ----- Look for extract by preg rule - if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header['stored_filename'])) { - $v_extract = true; - } - } elseif ((isset($p_options[PCLZIP_OPT_BY_INDEX])) && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) { - // ----- Look for extract by index rule - // ----- Look if the index is in the list - for ($j=$j_start; ($j<sizeof($p_options[PCLZIP_OPT_BY_INDEX])) && (!$v_extract); $j++) { - if (($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) && ($i<=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) { - $v_extract = true; - } - if ($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) { - $j_start = $j+1; - } - - if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start']>$i) { - break; - } - } - } else { - // ----- Look for no rule, which means extract all the archive - $v_extract = true; - } - - // ----- Check compression method - if (($v_extract) && (($v_header['compression'] != 8) && ($v_header['compression'] != 0))) { - $v_header['status'] = 'unsupported_compression'; - - // ----- Look for PCLZIP_OPT_STOP_ON_ERROR - if ((isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) && ($p_options[PCLZIP_OPT_STOP_ON_ERROR] === true)) { - $this->privSwapBackMagicQuotes(); - - PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_COMPRESSION, "Filename '".$v_header['stored_filename']."' is compressed by an unsupported compression method (".$v_header['compression'].") "); - - return PclZip::errorCode(); - } - } - - // ----- Check encrypted files - if (($v_extract) && (($v_header['flag'] & 1) == 1)) { - $v_header['status'] = 'unsupported_encryption'; - // ----- Look for PCLZIP_OPT_STOP_ON_ERROR - if ((isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) && ($p_options[PCLZIP_OPT_STOP_ON_ERROR] === true)) { - $this->privSwapBackMagicQuotes(); - - PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_ENCRYPTION, "Unsupported encryption for filename '".$v_header['stored_filename']."'"); - - return PclZip::errorCode(); - } - } - - // ----- Look for real extraction - if (($v_extract) && ($v_header['status'] != 'ok')) { - $v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++]); - if ($v_result != 1) { - $this->privCloseFd(); - $this->privSwapBackMagicQuotes(); - return $v_result; - } - - $v_extract = false; - } - - // ----- Look for real extraction - if ($v_extract) { - // ----- Go to the file position - @rewind($this->zip_fd); - if (@fseek($this->zip_fd, $v_header['offset'])) { - // ----- Close the zip file - $this->privCloseFd(); - - $this->privSwapBackMagicQuotes(); - - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Look for extraction as string - if ($p_options[PCLZIP_OPT_EXTRACT_AS_STRING]) { - $v_string = ''; - - // ----- Extracting the file - $v_result1 = $this->privExtractFileAsString($v_header, $v_string, $p_options); - if ($v_result1 < 1) { - $this->privCloseFd(); - $this->privSwapBackMagicQuotes(); - return $v_result1; - } - - // ----- Get the only interesting attributes - if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted])) != 1) { - // ----- Close the zip file - $this->privCloseFd(); - $this->privSwapBackMagicQuotes(); - - return $v_result; - } - - // ----- Set the file content - $p_file_list[$v_nb_extracted]['content'] = $v_string; - - // ----- Next extracted file - $v_nb_extracted++; - - // ----- Look for user callback abort - if ($v_result1 == 2) { - break; - } - } elseif ((isset($p_options[PCLZIP_OPT_EXTRACT_IN_OUTPUT])) && ($p_options[PCLZIP_OPT_EXTRACT_IN_OUTPUT])) { - // ----- Look for extraction in standard output - // ----- Extracting the file in standard output - $v_result1 = $this->privExtractFileInOutput($v_header, $p_options); - if ($v_result1 < 1) { - $this->privCloseFd(); - $this->privSwapBackMagicQuotes(); - return $v_result1; - } - - // ----- Get the only interesting attributes - if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1) { - $this->privCloseFd(); - $this->privSwapBackMagicQuotes(); - return $v_result; - } - - // ----- Look for user callback abort - if ($v_result1 == 2) { - break; - } - } else { - // ----- Look for normal extraction - // ----- Extracting the file - $v_result1 = $this->privExtractFile($v_header, $p_path, $p_remove_path, $p_remove_all_path, $p_options); - if ($v_result1 < 1) { - $this->privCloseFd(); - $this->privSwapBackMagicQuotes(); - return $v_result1; - } - - // ----- Get the only interesting attributes - if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1) { - // ----- Close the zip file - $this->privCloseFd(); - $this->privSwapBackMagicQuotes(); - - return $v_result; - } - - // ----- Look for user callback abort - if ($v_result1 == 2) { - break; - } - } - } - } - - // ----- Close the zip file - $this->privCloseFd(); - $this->privSwapBackMagicQuotes(); - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privExtractFile() - // Description : - // Parameters : - // Return Values : - // - // 1 : ... ? - // PCLZIP_ERR_USER_ABORTED(2) : User ask for extraction stop in callback - // -------------------------------------------------------------------------------- - public function privExtractFile(&$p_entry, $p_path, $p_remove_path, $p_remove_all_path, &$p_options) - { - $v_result=1; - - // ----- Read the file header - if (($v_result = $this->privReadFileHeader($v_header)) != 1) { - // ----- Return - return $v_result; - } - - - // ----- Check that the file header is coherent with $p_entry info - if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) { - // TBC - } - - // ----- Look for all path to remove - if ($p_remove_all_path == true) { - // ----- Look for folder entry that not need to be extracted - if (($p_entry['external']&0x00000010)==0x00000010) { - $p_entry['status'] = "filtered"; - - return $v_result; - } - - // ----- Get the basename of the path - $p_entry['filename'] = basename($p_entry['filename']); - } elseif ($p_remove_path != "") { - // ----- Look for path to remove - if (PclZipUtilPathInclusion($p_remove_path, $p_entry['filename']) == 2) { - // ----- Change the file status - $p_entry['status'] = "filtered"; - - // ----- Return - return $v_result; - } - - $p_remove_path_size = strlen($p_remove_path); - if (substr($p_entry['filename'], 0, $p_remove_path_size) == $p_remove_path) { - // ----- Remove the path - $p_entry['filename'] = substr($p_entry['filename'], $p_remove_path_size); - } - } - - // ----- Add the path - if ($p_path != '') { - $p_entry['filename'] = $p_path."/".$p_entry['filename']; - } - - // ----- Check a base_dir_restriction - if (isset($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION])) { - $v_inclusion = PclZipUtilPathInclusion($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION], $p_entry['filename']); - if ($v_inclusion == 0) { - PclZip::privErrorLog(PCLZIP_ERR_DIRECTORY_RESTRICTION, "Filename '".$p_entry['filename']."' is outside PCLZIP_OPT_EXTRACT_DIR_RESTRICTION"); - - return PclZip::errorCode(); - } - } - - // ----- Look for pre-extract callback - if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) { - // ----- Generate a local information - $v_local_header = array(); - $this->privConvertHeader2FileInfo($p_entry, $v_local_header); - - // ----- Call the callback - // Here I do not use call_user_func() because I need to send a reference to the - // header. - // eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);'); - $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header); - if ($v_result == 0) { - // ----- Change the file status - $p_entry['status'] = "skipped"; - $v_result = 1; - } - - // ----- Look for abort result - if ($v_result == 2) { - // ----- This status is internal and will be changed in 'skipped' - $p_entry['status'] = "aborted"; - $v_result = PCLZIP_ERR_USER_ABORTED; - } - - // ----- Update the informations - // Only some fields can be modified - $p_entry['filename'] = $v_local_header['filename']; - } - - // ----- Look if extraction should be done - if ($p_entry['status'] == 'ok') { - // ----- Look for specific actions while the file exist - if (file_exists($p_entry['filename'])) { - // ----- Look if file is a directory - if (is_dir($p_entry['filename'])) { - // ----- Change the file status - $p_entry['status'] = "already_a_directory"; - - // ----- Look for PCLZIP_OPT_STOP_ON_ERROR - // For historical reason first PclZip implementation does not stop - // when this kind of error occurs. - if ((isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { - PclZip::privErrorLog(PCLZIP_ERR_ALREADY_A_DIRECTORY, "Filename '".$p_entry['filename']."' is already used by an existing directory"); - return PclZip::errorCode(); - } - } elseif (!is_writeable($p_entry['filename'])) { - // ----- Look if file is write protected - // ----- Change the file status - $p_entry['status'] = "write_protected"; - - // ----- Look for PCLZIP_OPT_STOP_ON_ERROR - // For historical reason first PclZip implementation does not stop - // when this kind of error occurs. - if ((isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) && ($p_options[PCLZIP_OPT_STOP_ON_ERROR] === true)) { - PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, "Filename '".$p_entry['filename']."' exists and is write protected"); - return PclZip::errorCode(); - } - } elseif (filemtime($p_entry['filename']) > $p_entry['mtime']) { - // ----- Look if the extracted file is older - // ----- Change the file status - if ((isset($p_options[PCLZIP_OPT_REPLACE_NEWER])) && ($p_options[PCLZIP_OPT_REPLACE_NEWER] === true)) { - } else { - $p_entry['status'] = "newer_exist"; - - // ----- Look for PCLZIP_OPT_STOP_ON_ERROR - // For historical reason first PclZip implementation does not stop - // when this kind of error occurs. - if ((isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) && ($p_options[PCLZIP_OPT_STOP_ON_ERROR] === true)) { - PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, "Newer version of '".$p_entry['filename']."' exists and option PCLZIP_OPT_REPLACE_NEWER is not selected"); - return PclZip::errorCode(); - } - } - } else { - } - } else { - // ----- Check the directory availability and create it if necessary - if ((($p_entry['external']&0x00000010)==0x00000010) || (substr($p_entry['filename'], -1) == '/')) { - $v_dir_to_check = $p_entry['filename']; - } elseif (!strstr($p_entry['filename'], "/")) { - $v_dir_to_check = ""; - } else { - $v_dir_to_check = dirname($p_entry['filename']); - } - - if (($v_result = $this->privDirCheck($v_dir_to_check, (($p_entry['external']&0x00000010)==0x00000010))) != 1) { - // ----- Change the file status - $p_entry['status'] = "path_creation_fail"; - - // ----- Return - //return $v_result; - $v_result = 1; - } - } - } - - // ----- Look if extraction should be done - if ($p_entry['status'] == 'ok') { - // ----- Do the extraction (if not a folder) - if (!(($p_entry['external']&0x00000010) == 0x00000010)) { - // ----- Look for not compressed file - if ($p_entry['compression'] == 0) { - // ----- Opening destination file - if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) { - // ----- Change the file status - $p_entry['status'] = "write_error"; - - // ----- Return - return $v_result; - } - - // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks - $v_size = $p_entry['compressed_size']; - while ($v_size != 0) { - $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); - $v_buffer = @fread($this->zip_fd, $v_read_size); - /* Try to speed up the code - $v_binary_data = pack('a'.$v_read_size, $v_buffer); - @fwrite($v_dest_file, $v_binary_data, $v_read_size); - */ - @fwrite($v_dest_file, $v_buffer, $v_read_size); - $v_size -= $v_read_size; - } - - // ----- Closing the destination file - fclose($v_dest_file); - - // ----- Change the file mtime - touch($p_entry['filename'], $p_entry['mtime']); - } else { - // ----- TBC - // Need to be finished - if (($p_entry['flag'] & 1) == 1) { - PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_ENCRYPTION, 'File \''.$p_entry['filename'].'\' is encrypted. Encrypted files are not supported.'); - return PclZip::errorCode(); - } - - // ----- Look for using temporary file to unzip - if ((!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) && (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON]) || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) && ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] <= $p_entry['size'])))) { - $v_result = $this->privExtractFileUsingTempFile($p_entry, $p_options); - if ($v_result < PCLZIP_ERR_NO_ERROR) { - return $v_result; - } - } else { - // ----- Look for extract in memory - // ----- Read the compressed file in a buffer (one shot) - $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); - - // ----- Decompress the file - $v_file_content = @gzinflate($v_buffer); - unset($v_buffer); - if ($v_file_content === false) { - // ----- Change the file status - // TBC - $p_entry['status'] = "error"; - - return $v_result; - } - - // ----- Opening destination file - if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) { - // ----- Change the file status - $p_entry['status'] = "write_error"; - - return $v_result; - } - - // ----- Write the uncompressed data - @fwrite($v_dest_file, $v_file_content, $p_entry['size']); - unset($v_file_content); - - // ----- Closing the destination file - @fclose($v_dest_file); - } - - // ----- Change the file mtime - @touch($p_entry['filename'], $p_entry['mtime']); - } - - // ----- Look for chmod option - if (isset($p_options[PCLZIP_OPT_SET_CHMOD])) { - // ----- Change the mode of the file - @chmod($p_entry['filename'], $p_options[PCLZIP_OPT_SET_CHMOD]); - } - } - } - - // ----- Change abort status - if ($p_entry['status'] == "aborted") { - $p_entry['status'] = "skipped"; - } elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { - // ----- Look for post-extract callback - // ----- Generate a local information - $v_local_header = array(); - $this->privConvertHeader2FileInfo($p_entry, $v_local_header); - - // ----- Call the callback - // Here I do not use call_user_func() because I need to send a reference to the - // header. - // eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);'); - $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header); - - // ----- Look for abort result - if ($v_result == 2) { - $v_result = PCLZIP_ERR_USER_ABORTED; - } - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privExtractFileUsingTempFile() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - public function privExtractFileUsingTempFile(&$p_entry, &$p_options) - { - $v_result=1; - - // ----- Creates a temporary file - $v_gzip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.gz'; - if (($v_dest_file = @fopen($v_gzip_temp_name, "wb")) == 0) { - fclose($v_file); - PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary write mode'); - return PclZip::errorCode(); - } - - // ----- Write gz file format header - $v_binary_data = pack('va1a1Va1a1', 0x8b1f, Chr($p_entry['compression']), Chr(0x00), time(), Chr(0x00), Chr(3)); - @fwrite($v_dest_file, $v_binary_data, 10); - - // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks - $v_size = $p_entry['compressed_size']; - while ($v_size != 0) { - $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); - $v_buffer = @fread($this->zip_fd, $v_read_size); - //$v_binary_data = pack('a'.$v_read_size, $v_buffer); - @fwrite($v_dest_file, $v_buffer, $v_read_size); - $v_size -= $v_read_size; - } - - // ----- Write gz file format footer - $v_binary_data = pack('VV', $p_entry['crc'], $p_entry['size']); - @fwrite($v_dest_file, $v_binary_data, 8); - - // ----- Close the temporary file - @fclose($v_dest_file); - - // ----- Opening destination file - if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) { - $p_entry['status'] = "write_error"; - return $v_result; - } - - // ----- Open the temporary gz file - if (($v_src_file = @gzopen($v_gzip_temp_name, 'rb')) == 0) { - @fclose($v_dest_file); - $p_entry['status'] = "read_error"; - PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode'); - return PclZip::errorCode(); - } - - // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks - $v_size = $p_entry['size']; - while ($v_size != 0) { - $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); - $v_buffer = @gzread($v_src_file, $v_read_size); - //$v_binary_data = pack('a'.$v_read_size, $v_buffer); - @fwrite($v_dest_file, $v_buffer, $v_read_size); - $v_size -= $v_read_size; - } - @fclose($v_dest_file); - @gzclose($v_src_file); - - // ----- Delete the temporary file - @unlink($v_gzip_temp_name); - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privExtractFileInOutput() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - public function privExtractFileInOutput(&$p_entry, &$p_options) - { - $v_result=1; - - // ----- Read the file header - if (($v_result = $this->privReadFileHeader($v_header)) != 1) { - return $v_result; - } - - // ----- Check that the file header is coherent with $p_entry info - if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) { - // TBC - } - - // ----- Look for pre-extract callback - if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) { - // ----- Generate a local information - $v_local_header = array(); - $this->privConvertHeader2FileInfo($p_entry, $v_local_header); - - // ----- Call the callback - // Here I do not use call_user_func() because I need to send a reference to the - // header. - // eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);'); - $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header); - if ($v_result == 0) { - // ----- Change the file status - $p_entry['status'] = "skipped"; - $v_result = 1; - } - - // ----- Look for abort result - if ($v_result == 2) { - // ----- This status is internal and will be changed in 'skipped' - $p_entry['status'] = "aborted"; - $v_result = PCLZIP_ERR_USER_ABORTED; - } - - // ----- Update the informations - // Only some fields can be modified - $p_entry['filename'] = $v_local_header['filename']; - } - - // ----- Trace - - // ----- Look if extraction should be done - if ($p_entry['status'] == 'ok') { - // ----- Do the extraction (if not a folder) - if (!(($p_entry['external']&0x00000010)==0x00000010)) { - // ----- Look for not compressed file - if ($p_entry['compressed_size'] == $p_entry['size']) { - // ----- Read the file in a buffer (one shot) - $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); - - // ----- Send the file to the output - echo $v_buffer; - unset($v_buffer); - } else { - // ----- Read the compressed file in a buffer (one shot) - $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); - - // ----- Decompress the file - $v_file_content = gzinflate($v_buffer); - unset($v_buffer); - - // ----- Send the file to the output - echo $v_file_content; - unset($v_file_content); - } - } - } - - // ----- Change abort status - if ($p_entry['status'] == "aborted") { - $p_entry['status'] = "skipped"; - } elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { - // ----- Look for post-extract callback - - // ----- Generate a local information - $v_local_header = array(); - $this->privConvertHeader2FileInfo($p_entry, $v_local_header); - - // ----- Call the callback - // Here I do not use call_user_func() because I need to send a reference to the - // header. - // eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);'); - $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header); - - // ----- Look for abort result - if ($v_result == 2) { - $v_result = PCLZIP_ERR_USER_ABORTED; - } - } - - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privExtractFileAsString() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - public function privExtractFileAsString(&$p_entry, &$p_string, &$p_options) - { - $v_result=1; - - // ----- Read the file header - $v_header = array(); - if (($v_result = $this->privReadFileHeader($v_header)) != 1) { - // ----- Return - return $v_result; - } - - // ----- Check that the file header is coherent with $p_entry info - if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) { - // TBC - } - - // ----- Look for pre-extract callback - if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) { - // ----- Generate a local information - $v_local_header = array(); - $this->privConvertHeader2FileInfo($p_entry, $v_local_header); - - // ----- Call the callback - // Here I do not use call_user_func() because I need to send a reference to the - // header. - // eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);'); - $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header); - if ($v_result == 0) { - // ----- Change the file status - $p_entry['status'] = "skipped"; - $v_result = 1; - } - - // ----- Look for abort result - if ($v_result == 2) { - // ----- This status is internal and will be changed in 'skipped' - $p_entry['status'] = "aborted"; - $v_result = PCLZIP_ERR_USER_ABORTED; - } - - // ----- Update the informations - // Only some fields can be modified - $p_entry['filename'] = $v_local_header['filename']; - } - - // ----- Look if extraction should be done - if ($p_entry['status'] == 'ok') { - // ----- Do the extraction (if not a folder) - if (!(($p_entry['external']&0x00000010)==0x00000010)) { - // ----- Look for not compressed file - // if ($p_entry['compressed_size'] == $p_entry['size']) - if ($p_entry['compression'] == 0) { - // ----- Reading the file - $p_string = @fread($this->zip_fd, $p_entry['compressed_size']); - } else { - // ----- Reading the file - $v_data = @fread($this->zip_fd, $p_entry['compressed_size']); - - // ----- Decompress the file - if (($p_string = @gzinflate($v_data)) === false) { - // TBC - } - } - // ----- Trace - } else { - // TBC : error : can not extract a folder in a string - } - } - - // ----- Change abort status - if ($p_entry['status'] == "aborted") { - $p_entry['status'] = "skipped"; - } elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { - // ----- Look for post-extract callback - // ----- Generate a local information - $v_local_header = array(); - $this->privConvertHeader2FileInfo($p_entry, $v_local_header); - - // ----- Swap the content to header - $v_local_header['content'] = $p_string; - $p_string = ''; - - // ----- Call the callback - // Here I do not use call_user_func() because I need to send a reference to the - // header. - // eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);'); - $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header); - - // ----- Swap back the content to header - $p_string = $v_local_header['content']; - unset($v_local_header['content']); - - // ----- Look for abort result - if ($v_result == 2) { - $v_result = PCLZIP_ERR_USER_ABORTED; - } - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privReadFileHeader() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - public function privReadFileHeader(&$p_header) - { - $v_result=1; - - // ----- Read the 4 bytes signature - $v_binary_data = @fread($this->zip_fd, 4); - $v_data = unpack('Vid', $v_binary_data); - - // ----- Check signature - if ($v_data['id'] != 0x04034b50) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure'); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Read the first 42 bytes of the header - $v_binary_data = fread($this->zip_fd, 26); - - // ----- Look for invalid block size - if (strlen($v_binary_data) != 26) { - $p_header['filename'] = ""; - $p_header['status'] = "invalid_header"; - - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid block size : ".strlen($v_binary_data)); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Extract the values - $v_data = unpack('vversion/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len', $v_binary_data); - - // ----- Get filename - $p_header['filename'] = fread($this->zip_fd, $v_data['filename_len']); - - // ----- Get extra_fields - if ($v_data['extra_len'] != 0) { - $p_header['extra'] = fread($this->zip_fd, $v_data['extra_len']); - } else { - $p_header['extra'] = ''; - } - - // ----- Extract properties - $p_header['version_extracted'] = $v_data['version']; - $p_header['compression'] = $v_data['compression']; - $p_header['size'] = $v_data['size']; - $p_header['compressed_size'] = $v_data['compressed_size']; - $p_header['crc'] = $v_data['crc']; - $p_header['flag'] = $v_data['flag']; - $p_header['filename_len'] = $v_data['filename_len']; - - // ----- Recuperate date in UNIX format - $p_header['mdate'] = $v_data['mdate']; - $p_header['mtime'] = $v_data['mtime']; - if ($p_header['mdate'] && $p_header['mtime']) { - // ----- Extract time - $v_hour = ($p_header['mtime'] & 0xF800) >> 11; - $v_minute = ($p_header['mtime'] & 0x07E0) >> 5; - $v_seconde = ($p_header['mtime'] & 0x001F)*2; - - // ----- Extract date - $v_year = (($p_header['mdate'] & 0xFE00) >> 9) + 1980; - $v_month = ($p_header['mdate'] & 0x01E0) >> 5; - $v_day = $p_header['mdate'] & 0x001F; - - // ----- Get UNIX date format - $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year); - - } else { - $p_header['mtime'] = time(); - } - - // TBC - //for(reset($v_data); $key = key($v_data); next($v_data)) { - //} - - // ----- Set the stored filename - $p_header['stored_filename'] = $p_header['filename']; - - // ----- Set the status field - $p_header['status'] = "ok"; - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privReadCentralFileHeader() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - public function privReadCentralFileHeader(&$p_header) - { - $v_result = 1; - - // ----- Read the 4 bytes signature - $v_binary_data = @fread($this->zip_fd, 4); - $v_data = unpack('Vid', $v_binary_data); - - // ----- Check signature - if ($v_data['id'] != 0x02014b50) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure'); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Read the first 42 bytes of the header - $v_binary_data = fread($this->zip_fd, 42); - - // ----- Look for invalid block size - if (strlen($v_binary_data) != 42) { - $p_header['filename'] = ""; - $p_header['status'] = "invalid_header"; - - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid block size : ".strlen($v_binary_data)); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Extract the values - $p_header = unpack('vversion/vversion_extracted/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len/vcomment_len/vdisk/vinternal/Vexternal/Voffset', $v_binary_data); - - // ----- Get filename - if ($p_header['filename_len'] != 0) { - $p_header['filename'] = fread($this->zip_fd, $p_header['filename_len']); - } else { - $p_header['filename'] = ''; - } - - // ----- Get extra - if ($p_header['extra_len'] != 0) { - $p_header['extra'] = fread($this->zip_fd, $p_header['extra_len']); - } else { - $p_header['extra'] = ''; - } - - // ----- Get comment - if ($p_header['comment_len'] != 0) { - $p_header['comment'] = fread($this->zip_fd, $p_header['comment_len']); - } else { - $p_header['comment'] = ''; - } - - // ----- Extract properties - - // ----- Recuperate date in UNIX format - //if ($p_header['mdate'] && $p_header['mtime']) - // TBC : bug : this was ignoring time with 0/0/0 - if (1) { - // ----- Extract time - $v_hour = ($p_header['mtime'] & 0xF800) >> 11; - $v_minute = ($p_header['mtime'] & 0x07E0) >> 5; - $v_seconde = ($p_header['mtime'] & 0x001F)*2; - - // ----- Extract date - $v_year = (($p_header['mdate'] & 0xFE00) >> 9) + 1980; - $v_month = ($p_header['mdate'] & 0x01E0) >> 5; - $v_day = $p_header['mdate'] & 0x001F; - - // ----- Get UNIX date format - $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year); - - } else { - $p_header['mtime'] = time(); - } - - // ----- Set the stored filename - $p_header['stored_filename'] = $p_header['filename']; - - // ----- Set default status to ok - $p_header['status'] = 'ok'; - - // ----- Look if it is a directory - if (substr($p_header['filename'], -1) == '/') { - //$p_header['external'] = 0x41FF0010; - $p_header['external'] = 0x00000010; - } - - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privCheckFileHeaders() - // Description : - // Parameters : - // Return Values : - // 1 on success, - // 0 on error; - // -------------------------------------------------------------------------------- - public function privCheckFileHeaders(&$p_local_header, &$p_central_header) - { - $v_result=1; - - // ----- Check the static values - // TBC - if ($p_local_header['filename'] != $p_central_header['filename']) { - } - if ($p_local_header['version_extracted'] != $p_central_header['version_extracted']) { - } - if ($p_local_header['flag'] != $p_central_header['flag']) { - } - if ($p_local_header['compression'] != $p_central_header['compression']) { - } - if ($p_local_header['mtime'] != $p_central_header['mtime']) { - } - if ($p_local_header['filename_len'] != $p_central_header['filename_len']) { - } - - // ----- Look for flag bit 3 - if (($p_local_header['flag'] & 8) == 8) { - $p_local_header['size'] = $p_central_header['size']; - $p_local_header['compressed_size'] = $p_central_header['compressed_size']; - $p_local_header['crc'] = $p_central_header['crc']; - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privReadEndCentralDir() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - public function privReadEndCentralDir(&$p_central_dir) - { - $v_result=1; - - // ----- Go to the end of the zip file - $v_size = filesize($this->zipname); - @fseek($this->zip_fd, $v_size); - if (@ftell($this->zip_fd) != $v_size) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to go to the end of the archive \''.$this->zipname.'\''); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- First try : look if this is an archive with no commentaries (most of the time) - // in this case the end of central dir is at 22 bytes of the file end - $v_found = 0; - if ($v_size > 26) { - @fseek($this->zip_fd, $v_size-22); - if (($v_pos = @ftell($this->zip_fd)) != ($v_size-22)) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \''.$this->zipname.'\''); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Read for bytes - $v_binary_data = @fread($this->zip_fd, 4); - $v_data = @unpack('Vid', $v_binary_data); - - // ----- Check signature - if ($v_data['id'] == 0x06054b50) { - $v_found = 1; - } - - $v_pos = ftell($this->zip_fd); - } - - // ----- Go back to the maximum possible size of the Central Dir End Record - if (!$v_found) { - $v_maximum_size = 65557; // 0xFFFF + 22; - if ($v_maximum_size > $v_size) { - $v_maximum_size = $v_size; - } - @fseek($this->zip_fd, $v_size-$v_maximum_size); - if (@ftell($this->zip_fd) != ($v_size-$v_maximum_size)) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \''.$this->zipname.'\''); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Read byte per byte in order to find the signature - $v_pos = ftell($this->zip_fd); - $v_bytes = 0x00000000; - while ($v_pos < $v_size) { - // ----- Read a byte - $v_byte = @fread($this->zip_fd, 1); - - // ----- Add the byte - //$v_bytes = ($v_bytes << 8) | Ord($v_byte); - // Note we mask the old value down such that once shifted we can never end up with more than a 32bit number - // Otherwise on systems where we have 64bit integers the check below for the magic number will fail. - $v_bytes = (($v_bytes & 0xFFFFFF) << 8) | Ord($v_byte); - - // ----- Compare the bytes - if ($v_bytes == 0x504b0506) { - $v_pos++; - break; - } - - $v_pos++; - } - - // ----- Look if not found end of central dir - if ($v_pos == $v_size) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Unable to find End of Central Dir Record signature"); - - // ----- Return - return PclZip::errorCode(); - } - } - - // ----- Read the first 18 bytes of the header - $v_binary_data = fread($this->zip_fd, 18); - - // ----- Look for invalid block size - if (strlen($v_binary_data) != 18) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid End of Central Dir Record size : ".strlen($v_binary_data)); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Extract the values - $v_data = unpack('vdisk/vdisk_start/vdisk_entries/ventries/Vsize/Voffset/vcomment_size', $v_binary_data); - - // ----- Check the global size - if (($v_pos + $v_data['comment_size'] + 18) != $v_size) { - // ----- Removed in release 2.2 see readme file - // The check of the file size is a little too strict. - // Some bugs where found when a zip is encrypted/decrypted with 'crypt'. - // While decrypted, zip has training 0 bytes - if (0) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'The central dir is not at the end of the archive. Some trailing bytes exists after the archive.'); - - // ----- Return - return PclZip::errorCode(); - } - } - - // ----- Get comment - if ($v_data['comment_size'] != 0) { - $p_central_dir['comment'] = fread($this->zip_fd, $v_data['comment_size']); - } else { - $p_central_dir['comment'] = ''; - } - - $p_central_dir['entries'] = $v_data['entries']; - $p_central_dir['disk_entries'] = $v_data['disk_entries']; - $p_central_dir['offset'] = $v_data['offset']; - $p_central_dir['size'] = $v_data['size']; - $p_central_dir['disk'] = $v_data['disk']; - $p_central_dir['disk_start'] = $v_data['disk_start']; - - // TBC - //for(reset($p_central_dir); $key = key($p_central_dir); next($p_central_dir)) { - //} - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privDeleteByRule() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - public function privDeleteByRule(&$p_result_list, &$p_options) - { - $v_result=1; - $v_list_detail = array(); - - // ----- Open the zip file - if (($v_result=$this->privOpenFd('rb')) != 1) { - // ----- Return - return $v_result; - } - - // ----- Read the central directory informations - $v_central_dir = array(); - if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) { - $this->privCloseFd(); - return $v_result; - } - - // ----- Go to beginning of File - @rewind($this->zip_fd); - - // ----- Scan all the files - // ----- Start at beginning of Central Dir - $v_pos_entry = $v_central_dir['offset']; - @rewind($this->zip_fd); - if (@fseek($this->zip_fd, $v_pos_entry)) { - // ----- Close the zip file - $this->privCloseFd(); - - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Read each entry - $v_header_list = array(); - $j_start = 0; - for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++) { - // ----- Read the file header - $v_header_list[$v_nb_extracted] = array(); - if (($v_result = $this->privReadCentralFileHeader($v_header_list[$v_nb_extracted])) != 1) { - // ----- Close the zip file - $this->privCloseFd(); - - return $v_result; - } - - - // ----- Store the index - $v_header_list[$v_nb_extracted]['index'] = $i; - - // ----- Look for the specific extract rules - $v_found = false; - - // ----- Look for extract by name rule - if ((isset($p_options[PCLZIP_OPT_BY_NAME])) && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) { - // ----- Look if the filename is in the list - for ($j=0; ($j<sizeof($p_options[PCLZIP_OPT_BY_NAME])) && (!$v_found); $j++) { - // ----- Look for a directory - if (substr($p_options[PCLZIP_OPT_BY_NAME][$j], -1) == "/") { - // ----- Look if the directory is in the filename path - if ((strlen($v_header_list[$v_nb_extracted]['stored_filename']) > strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) && (substr($v_header_list[$v_nb_extracted]['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) { - $v_found = true; - } elseif ((($v_header_list[$v_nb_extracted]['external']&0x00000010)==0x00000010) /* Indicates a folder */ && ($v_header_list[$v_nb_extracted]['stored_filename'].'/' == $p_options[PCLZIP_OPT_BY_NAME][$j])) { - $v_found = true; - } - } elseif ($v_header_list[$v_nb_extracted]['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) { - // ----- Look for a filename - $v_found = true; - } - } - } elseif ((isset($p_options[PCLZIP_OPT_BY_PREG])) && ($p_options[PCLZIP_OPT_BY_PREG] != "")) { - // ----- Look for extract by preg rule - if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header_list[$v_nb_extracted]['stored_filename'])) { - $v_found = true; - } - } elseif ((isset($p_options[PCLZIP_OPT_BY_INDEX])) && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) { - // ----- Look for extract by index rule - // ----- Look if the index is in the list - for ($j=$j_start; ($j<sizeof($p_options[PCLZIP_OPT_BY_INDEX])) && (!$v_found); $j++) { - if (($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) && ($i<=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) { - $v_found = true; - } - if ($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) { - $j_start = $j+1; - } - if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start']>$i) { - break; - } - } - } else { - $v_found = true; - } - - // ----- Look for deletion - if ($v_found) { - unset($v_header_list[$v_nb_extracted]); - } else { - $v_nb_extracted++; - } - } - - // ----- Look if something need to be deleted - if ($v_nb_extracted > 0) { - // ----- Creates a temporay file - $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp'; - - // ----- Creates a temporary zip archive - $v_temp_zip = new PclZip($v_zip_temp_name); - - // ----- Open the temporary zip file in write mode - if (($v_result = $v_temp_zip->privOpenFd('wb')) != 1) { - $this->privCloseFd(); - - // ----- Return - return $v_result; - } - - // ----- Look which file need to be kept - for ($i=0; $i<sizeof($v_header_list); $i++) { - // ----- Calculate the position of the header - @rewind($this->zip_fd); - if (@fseek($this->zip_fd, $v_header_list[$i]['offset'])) { - // ----- Close the zip file - $this->privCloseFd(); - $v_temp_zip->privCloseFd(); - @unlink($v_zip_temp_name); - - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Read the file header - $v_local_header = array(); - if (($v_result = $this->privReadFileHeader($v_local_header)) != 1) { - // ----- Close the zip file - $this->privCloseFd(); - $v_temp_zip->privCloseFd(); - @unlink($v_zip_temp_name); - - // ----- Return - return $v_result; - } - - // ----- Check that local file header is same as central file header - if ($this->privCheckFileHeaders($v_local_header, $v_header_list[$i]) != 1) { - // TBC - } - unset($v_local_header); - - // ----- Write the file header - if (($v_result = $v_temp_zip->privWriteFileHeader($v_header_list[$i])) != 1) { - // ----- Close the zip file - $this->privCloseFd(); - $v_temp_zip->privCloseFd(); - @unlink($v_zip_temp_name); - - // ----- Return - return $v_result; - } - - // ----- Read/write the data block - if (($v_result = PclZipUtilCopyBlock($this->zip_fd, $v_temp_zip->zip_fd, $v_header_list[$i]['compressed_size'])) != 1) { - // ----- Close the zip file - $this->privCloseFd(); - $v_temp_zip->privCloseFd(); - @unlink($v_zip_temp_name); - - // ----- Return - return $v_result; - } - } - - // ----- Store the offset of the central dir - $v_offset = @ftell($v_temp_zip->zip_fd); - - // ----- Re-Create the Central Dir files header - for ($i=0; $i<sizeof($v_header_list); $i++) { - // ----- Create the file header - if (($v_result = $v_temp_zip->privWriteCentralFileHeader($v_header_list[$i])) != 1) { - $v_temp_zip->privCloseFd(); - $this->privCloseFd(); - @unlink($v_zip_temp_name); - - // ----- Return - return $v_result; - } - - // ----- Transform the header to a 'usable' info - $v_temp_zip->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); - } - - - // ----- Zip file comment - $v_comment = ''; - if (isset($p_options[PCLZIP_OPT_COMMENT])) { - $v_comment = $p_options[PCLZIP_OPT_COMMENT]; - } - - // ----- Calculate the size of the central header - $v_size = @ftell($v_temp_zip->zip_fd)-$v_offset; - - // ----- Create the central dir footer - if (($v_result = $v_temp_zip->privWriteCentralHeader(sizeof($v_header_list), $v_size, $v_offset, $v_comment)) != 1) { - // ----- Reset the file list - unset($v_header_list); - $v_temp_zip->privCloseFd(); - $this->privCloseFd(); - @unlink($v_zip_temp_name); - - // ----- Return - return $v_result; - } - - // ----- Close - $v_temp_zip->privCloseFd(); - $this->privCloseFd(); - - // ----- Delete the zip file - // TBC : I should test the result ... - @unlink($this->zipname); - - // ----- Rename the temporary file - // TBC : I should test the result ... - //@rename($v_zip_temp_name, $this->zipname); - PclZipUtilRename($v_zip_temp_name, $this->zipname); - - // ----- Destroy the temporary archive - unset($v_temp_zip); - } elseif ($v_central_dir['entries'] != 0) { - // ----- Remove every files : reset the file - $this->privCloseFd(); - - if (($v_result = $this->privOpenFd('wb')) != 1) { - return $v_result; - } - - if (($v_result = $this->privWriteCentralHeader(0, 0, 0, '')) != 1) { - return $v_result; - } - - $this->privCloseFd(); - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privDirCheck() - // Description : - // Check if a directory exists, if not it creates it and all the parents directory - // which may be useful. - // Parameters : - // $p_dir : Directory path to check. - // Return Values : - // 1 : OK - // -1 : Unable to create directory - // -------------------------------------------------------------------------------- - public function privDirCheck($p_dir, $p_is_dir = false) - { - $v_result = 1; - - // ----- Remove the final '/' - if (($p_is_dir) && (substr($p_dir, -1)=='/')) { - $p_dir = substr($p_dir, 0, strlen($p_dir)-1); - } - - // ----- Check the directory availability - if ((is_dir($p_dir)) || ($p_dir == "")) { - return 1; - } - - // ----- Extract parent directory - $p_parent_dir = dirname($p_dir); - - // ----- Just a check - if ($p_parent_dir != $p_dir) { - // ----- Look for parent directory - if ($p_parent_dir != "") { - if (($v_result = $this->privDirCheck($p_parent_dir)) != 1) { - return $v_result; - } - } - } - - // ----- Create the directory - if (!@mkdir($p_dir, 0777)) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_DIR_CREATE_FAIL, "Unable to create directory '$p_dir'"); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privMerge() - // Description : - // If $p_archive_to_add does not exist, the function exit with a success result. - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - public function privMerge(&$p_archive_to_add) - { - $v_result=1; - - // ----- Look if the archive_to_add exists - if (!is_file($p_archive_to_add->zipname)) { - // ----- Nothing to merge, so merge is a success - $v_result = 1; - - // ----- Return - return $v_result; - } - - // ----- Look if the archive exists - if (!is_file($this->zipname)) { - // ----- Do a duplicate - $v_result = $this->privDuplicate($p_archive_to_add->zipname); - - // ----- Return - return $v_result; - } - - // ----- Open the zip file - if (($v_result=$this->privOpenFd('rb')) != 1) { - // ----- Return - return $v_result; - } - - // ----- Read the central directory informations - $v_central_dir = array(); - if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) { - $this->privCloseFd(); - return $v_result; - } - - // ----- Go to beginning of File - @rewind($this->zip_fd); - - // ----- Open the archive_to_add file - if (($v_result=$p_archive_to_add->privOpenFd('rb')) != 1) { - $this->privCloseFd(); - - // ----- Return - return $v_result; - } - - // ----- Read the central directory informations - $v_central_dir_to_add = array(); - if (($v_result = $p_archive_to_add->privReadEndCentralDir($v_central_dir_to_add)) != 1) { - $this->privCloseFd(); - $p_archive_to_add->privCloseFd(); - - return $v_result; - } - - // ----- Go to beginning of File - @rewind($p_archive_to_add->zip_fd); - - // ----- Creates a temporay file - $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp'; - - // ----- Open the temporary file in write mode - if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0) { - $this->privCloseFd(); - $p_archive_to_add->privCloseFd(); - - PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_zip_temp_name.'\' in binary write mode'); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Copy the files from the archive to the temporary file - // TBC : Here I should better append the file and go back to erase the central dir - $v_size = $v_central_dir['offset']; - while ($v_size != 0) { - $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); - $v_buffer = fread($this->zip_fd, $v_read_size); - @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); - $v_size -= $v_read_size; - } - - // ----- Copy the files from the archive_to_add into the temporary file - $v_size = $v_central_dir_to_add['offset']; - while ($v_size != 0) { - $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); - $v_buffer = fread($p_archive_to_add->zip_fd, $v_read_size); - @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); - $v_size -= $v_read_size; - } - - // ----- Store the offset of the central dir - $v_offset = @ftell($v_zip_temp_fd); - - // ----- Copy the block of file headers from the old archive - $v_size = $v_central_dir['size']; - while ($v_size != 0) { - $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); - $v_buffer = @fread($this->zip_fd, $v_read_size); - @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); - $v_size -= $v_read_size; - } - - // ----- Copy the block of file headers from the archive_to_add - $v_size = $v_central_dir_to_add['size']; - while ($v_size != 0) { - $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); - $v_buffer = @fread($p_archive_to_add->zip_fd, $v_read_size); - @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); - $v_size -= $v_read_size; - } - - // ----- Merge the file comments - $v_comment = $v_central_dir['comment'].' '.$v_central_dir_to_add['comment']; - - // ----- Calculate the size of the (new) central header - $v_size = @ftell($v_zip_temp_fd)-$v_offset; - - // ----- Swap the file descriptor - // Here is a trick : I swap the temporary fd with the zip fd, in order to use - // the following methods on the temporary fil and not the real archive fd - $v_swap = $this->zip_fd; - $this->zip_fd = $v_zip_temp_fd; - $v_zip_temp_fd = $v_swap; - - // ----- Create the central dir footer - if (($v_result = $this->privWriteCentralHeader($v_central_dir['entries']+$v_central_dir_to_add['entries'], $v_size, $v_offset, $v_comment)) != 1) { - $this->privCloseFd(); - $p_archive_to_add->privCloseFd(); - @fclose($v_zip_temp_fd); - $this->zip_fd = null; - - // ----- Reset the file list - unset($v_header_list); - - // ----- Return - return $v_result; - } - - // ----- Swap back the file descriptor - $v_swap = $this->zip_fd; - $this->zip_fd = $v_zip_temp_fd; - $v_zip_temp_fd = $v_swap; - - // ----- Close - $this->privCloseFd(); - $p_archive_to_add->privCloseFd(); - - // ----- Close the temporary file - @fclose($v_zip_temp_fd); - - // ----- Delete the zip file - // TBC : I should test the result ... - @unlink($this->zipname); - - // ----- Rename the temporary file - // TBC : I should test the result ... - //@rename($v_zip_temp_name, $this->zipname); - PclZipUtilRename($v_zip_temp_name, $this->zipname); - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privDuplicate() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - public function privDuplicate($p_archive_filename) - { - $v_result=1; - - // ----- Look if the $p_archive_filename exists - if (!is_file($p_archive_filename)) { - // ----- Nothing to duplicate, so duplicate is a success. - $v_result = 1; - - // ----- Return - return $v_result; - } - - // ----- Open the zip file - if (($v_result=$this->privOpenFd('wb')) != 1) { - // ----- Return - return $v_result; - } - - // ----- Open the temporary file in write mode - if (($v_zip_temp_fd = @fopen($p_archive_filename, 'rb')) == 0) { - $this->privCloseFd(); - - PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive file \''.$p_archive_filename.'\' in binary write mode'); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Copy the files from the archive to the temporary file - // TBC : Here I should better append the file and go back to erase the central dir - $v_size = filesize($p_archive_filename); - while ($v_size != 0) { - $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); - $v_buffer = fread($v_zip_temp_fd, $v_read_size); - @fwrite($this->zip_fd, $v_buffer, $v_read_size); - $v_size -= $v_read_size; - } - - // ----- Close - $this->privCloseFd(); - - // ----- Close the temporary file - @fclose($v_zip_temp_fd); - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privErrorLog() - // Description : - // Parameters : - // -------------------------------------------------------------------------------- - public function privErrorLog($p_error_code = 0, $p_error_string = '') - { - if (PCLZIP_ERROR_EXTERNAL == 1) { - PclError($p_error_code, $p_error_string); - } else { - $this->error_code = $p_error_code; - $this->error_string = $p_error_string; - } - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privErrorReset() - // Description : - // Parameters : - // -------------------------------------------------------------------------------- - public function privErrorReset() - { - if (PCLZIP_ERROR_EXTERNAL == 1) { - PclErrorReset(); - } else { - $this->error_code = 0; - $this->error_string = ''; - } - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privDisableMagicQuotes() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - public function privDisableMagicQuotes() - { - $v_result=1; - - // ----- Look if function exists - if ((!function_exists("get_magic_quotes_runtime")) || (!function_exists("set_magic_quotes_runtime"))) { - return $v_result; - } - - // ----- Look if already done - if ($this->magic_quotes_status != -1) { - return $v_result; - } - - // ----- Get and memorize the magic_quote value - $this->magic_quotes_status = @get_magic_quotes_runtime(); - - // ----- Disable magic_quotes - if ($this->magic_quotes_status == 1) { - @set_magic_quotes_runtime(0); - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privSwapBackMagicQuotes() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - public function privSwapBackMagicQuotes() - { - $v_result=1; - - // ----- Look if function exists - if ((!function_exists("get_magic_quotes_runtime")) || (!function_exists("set_magic_quotes_runtime"))) { - return $v_result; - } - - // ----- Look if something to do - if ($this->magic_quotes_status != -1) { - return $v_result; - } - - // ----- Swap back magic_quotes - if ($this->magic_quotes_status == 1) { - @set_magic_quotes_runtime($this->magic_quotes_status); - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- -} -// End of class -// -------------------------------------------------------------------------------- - -// -------------------------------------------------------------------------------- -// Function : PclZipUtilPathReduction() -// Description : -// Parameters : -// Return Values : -// -------------------------------------------------------------------------------- -function PclZipUtilPathReduction($p_dir) -{ - $v_result = ""; - - // ----- Look for not empty path - if ($p_dir != "") { - // ----- Explode path by directory names - $v_list = explode("/", $p_dir); - - // ----- Study directories from last to first - $v_skip = 0; - for ($i=sizeof($v_list)-1; $i>=0; $i--) { - // ----- Look for current path - if ($v_list[$i] == ".") { - // ----- Ignore this directory - // Should be the first $i=0, but no check is done - } elseif ($v_list[$i] == "..") { - $v_skip++; - } elseif ($v_list[$i] == "") { - // ----- First '/' i.e. root slash - if ($i == 0) { - $v_result = "/".$v_result; - if ($v_skip > 0) { - // ----- It is an invalid path, so the path is not modified - // TBC - $v_result = $p_dir; - $v_skip = 0; - } - } elseif ($i == (sizeof($v_list)-1)) { - // ----- Last '/' i.e. indicates a directory - $v_result = $v_list[$i]; - } else { - // ----- Double '/' inside the path - // ----- Ignore only the double '//' in path, - // but not the first and last '/' - } - } else { - // ----- Look for item to skip - if ($v_skip > 0) { - $v_skip--; - } else { - $v_result = $v_list[$i].($i!=(sizeof($v_list)-1)?"/".$v_result:""); - } - } - } - - // ----- Look for skip - if ($v_skip > 0) { - while ($v_skip > 0) { - $v_result = '../'.$v_result; - $v_skip--; - } - } - } - - // ----- Return - return $v_result; -} -// -------------------------------------------------------------------------------- - -// -------------------------------------------------------------------------------- -// Function : PclZipUtilPathInclusion() -// Description : -// This function indicates if the path $p_path is under the $p_dir tree. Or, -// said in an other way, if the file or sub-dir $p_path is inside the dir -// $p_dir. -// The function indicates also if the path is exactly the same as the dir. -// This function supports path with duplicated '/' like '//', but does not -// support '.' or '..' statements. -// Parameters : -// Return Values : -// 0 if $p_path is not inside directory $p_dir -// 1 if $p_path is inside directory $p_dir -// 2 if $p_path is exactly the same as $p_dir -// -------------------------------------------------------------------------------- -function PclZipUtilPathInclusion($p_dir, $p_path) -{ - $v_result = 1; - - // ----- Look for path beginning by ./ - if (($p_dir == '.') || ((strlen($p_dir) >=2) && (substr($p_dir, 0, 2) == './'))) { - $p_dir = PclZipUtilTranslateWinPath(getcwd(), false).'/'.substr($p_dir, 1); - } - if (($p_path == '.') || ((strlen($p_path) >=2) && (substr($p_path, 0, 2) == './'))) { - $p_path = PclZipUtilTranslateWinPath(getcwd(), false).'/'.substr($p_path, 1); - } - - // ----- Explode dir and path by directory separator - $v_list_dir = explode("/", $p_dir); - $v_list_dir_size = sizeof($v_list_dir); - $v_list_path = explode("/", $p_path); - $v_list_path_size = sizeof($v_list_path); - - // ----- Study directories paths - $i = 0; - $j = 0; - while (($i < $v_list_dir_size) && ($j < $v_list_path_size) && ($v_result)) { - // ----- Look for empty dir (path reduction) - if ($v_list_dir[$i] == '') { - $i++; - continue; - } - if ($v_list_path[$j] == '') { - $j++; - continue; - } - - // ----- Compare the items - if (($v_list_dir[$i] != $v_list_path[$j]) && ($v_list_dir[$i] != '') && ($v_list_path[$j] != '')) { - $v_result = 0; - } - - // ----- Next items - $i++; - $j++; - } - - // ----- Look if everything seems to be the same - if ($v_result) { - // ----- Skip all the empty items - while (($j < $v_list_path_size) && ($v_list_path[$j] == '')) { - $j++; - } - while (($i < $v_list_dir_size) && ($v_list_dir[$i] == '')) { - $i++; - } - - if (($i >= $v_list_dir_size) && ($j >= $v_list_path_size)) { - // ----- There are exactly the same - $v_result = 2; - } elseif ($i < $v_list_dir_size) { - // ----- The path is shorter than the dir - $v_result = 0; - } - } - - // ----- Return - return $v_result; -} -// -------------------------------------------------------------------------------- - -// -------------------------------------------------------------------------------- -// Function : PclZipUtilCopyBlock() -// Description : -// Parameters : -// $p_mode : read/write compression mode -// 0 : src & dest normal -// 1 : src gzip, dest normal -// 2 : src normal, dest gzip -// 3 : src & dest gzip -// Return Values : -// -------------------------------------------------------------------------------- -function PclZipUtilCopyBlock($p_src, $p_dest, $p_size, $p_mode = 0) -{ - $v_result = 1; - - if ($p_mode==0) { - while ($p_size != 0) { - $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); - $v_buffer = @fread($p_src, $v_read_size); - @fwrite($p_dest, $v_buffer, $v_read_size); - $p_size -= $v_read_size; - } - } elseif ($p_mode==1) { - while ($p_size != 0) { - $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); - $v_buffer = @gzread($p_src, $v_read_size); - @fwrite($p_dest, $v_buffer, $v_read_size); - $p_size -= $v_read_size; - } - } elseif ($p_mode==2) { - while ($p_size != 0) { - $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); - $v_buffer = @fread($p_src, $v_read_size); - @gzwrite($p_dest, $v_buffer, $v_read_size); - $p_size -= $v_read_size; - } - } elseif ($p_mode==3) { - while ($p_size != 0) { - $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); - $v_buffer = @gzread($p_src, $v_read_size); - @gzwrite($p_dest, $v_buffer, $v_read_size); - $p_size -= $v_read_size; - } - } - - // ----- Return - return $v_result; -} -// -------------------------------------------------------------------------------- - -// -------------------------------------------------------------------------------- -// Function : PclZipUtilRename() -// Description : -// This function tries to do a simple rename() function. If it fails, it -// tries to copy the $p_src file in a new $p_dest file and then unlink the -// first one. -// Parameters : -// $p_src : Old filename -// $p_dest : New filename -// Return Values : -// 1 on success, 0 on failure. -// -------------------------------------------------------------------------------- -function PclZipUtilRename($p_src, $p_dest) -{ - $v_result = 1; - - // ----- Try to rename the files - if (!@rename($p_src, $p_dest)) { - // ----- Try to copy & unlink the src - if (!@copy($p_src, $p_dest)) { - $v_result = 0; - } elseif (!@unlink($p_src)) { - $v_result = 0; - } - } - - // ----- Return - return $v_result; -} -// -------------------------------------------------------------------------------- - -// -------------------------------------------------------------------------------- -// Function : PclZipUtilOptionText() -// Description : -// Translate option value in text. Mainly for debug purpose. -// Parameters : -// $p_option : the option value. -// Return Values : -// The option text value. -// -------------------------------------------------------------------------------- -function PclZipUtilOptionText($p_option) -{ - $v_list = get_defined_constants(); - for (reset($v_list); $v_key = key($v_list); next($v_list)) { - $v_prefix = substr($v_key, 0, 10); - if ((($v_prefix == 'PCLZIP_OPT') || ($v_prefix == 'PCLZIP_CB_') || ($v_prefix == 'PCLZIP_ATT')) && ($v_list[$v_key] == $p_option)) { - return $v_key; - } - } - - $v_result = 'Unknown'; - - return $v_result; -} -// -------------------------------------------------------------------------------- - -// -------------------------------------------------------------------------------- -// Function : PclZipUtilTranslateWinPath() -// Description : -// Translate windows path by replacing '\' by '/' and optionally removing -// drive letter. -// Parameters : -// $p_path : path to translate. -// $p_remove_disk_letter : true | false -// Return Values : -// The path translated. -// -------------------------------------------------------------------------------- -function PclZipUtilTranslateWinPath($p_path, $p_remove_disk_letter = true) -{ - if (stristr(php_uname(), 'windows')) { - // ----- Look for potential disk letter - if (($p_remove_disk_letter) && (($v_position = strpos($p_path, ':')) != false)) { - $p_path = substr($p_path, $v_position+1); - } - // ----- Change potential windows directory separator - if ((strpos($p_path, '\\') > 0) || (substr($p_path, 0, 1) == '\\')) { - $p_path = strtr($p_path, '\\', '/'); - } - } - return $p_path; -} diff --git a/application/third_party/PHPExcel/Shared/PCLZip/readme.txt b/application/third_party/PHPExcel/Shared/PCLZip/readme.txt deleted file mode 100644 index d1b11e25..00000000 --- a/application/third_party/PHPExcel/Shared/PCLZip/readme.txt +++ /dev/null @@ -1,421 +0,0 @@ -// -------------------------------------------------------------------------------- -// PclZip 2.8.2 - readme.txt -// -------------------------------------------------------------------------------- -// License GNU/LGPL - August 2009 -// Vincent Blavet - vincent@phpconcept.net -// http://www.phpconcept.net -// -------------------------------------------------------------------------------- -// $Id: readme.txt,v 1.60 2009/09/30 20:35:21 vblavet Exp $ -// -------------------------------------------------------------------------------- - - - -0 - Sommaire -============ - 1 - Introduction - 2 - What's new - 3 - Corrected bugs - 4 - Known bugs or limitations - 5 - License - 6 - Warning - 7 - Documentation - 8 - Author - 9 - Contribute - -1 - Introduction -================ - - PclZip is a library that allow you to manage a Zip archive. - - Full documentation about PclZip can be found here : http://www.phpconcept.net/pclzip - -2 - What's new -============== - - Version 2.8.2 : - - PCLZIP_CB_PRE_EXTRACT and PCLZIP_CB_POST_EXTRACT are now supported with - extraction as a string (PCLZIP_OPT_EXTRACT_AS_STRING). The string - can also be modified in the post-extract call back. - **Bugs correction : - - PCLZIP_OPT_REMOVE_ALL_PATH was not working correctly - - Remove use of eval() and do direct call to callback functions - - Correct support of 64bits systems (Thanks to WordPress team) - - Version 2.8.1 : - - Move option PCLZIP_OPT_BY_EREG to PCLZIP_OPT_BY_PREG because ereg() is - deprecated in PHP 5.3. When using option PCLZIP_OPT_BY_EREG, PclZip will - automatically replace it by PCLZIP_OPT_BY_PREG. - - Version 2.8 : - - Improve extraction of zip archive for large files by using temporary files - This feature is working like the one defined in r2.7. - Options are renamed : PCLZIP_OPT_TEMP_FILE_ON, PCLZIP_OPT_TEMP_FILE_OFF, - PCLZIP_OPT_TEMP_FILE_THRESHOLD - - Add a ratio constant PCLZIP_TEMPORARY_FILE_RATIO to configure the auto - sense of temporary file use. - - Bug correction : Reduce filepath in returned file list to remove ennoying - './/' preambule in file path. - - Version 2.7 : - - Improve creation of zip archive for large files : - PclZip will now autosense the configured memory and use temporary files - when large file is suspected. - This feature can also ne triggered by manual options in create() and add() - methods. 'PCLZIP_OPT_ADD_TEMP_FILE_ON' force the use of temporary files, - 'PCLZIP_OPT_ADD_TEMP_FILE_OFF' disable the autosense technic, - 'PCLZIP_OPT_ADD_TEMP_FILE_THRESHOLD' allow for configuration of a size - threshold to use temporary files. - Using "temporary files" rather than "memory" might take more time, but - might give the ability to zip very large files : - Tested on my win laptop with a 88Mo file : - Zip "in-memory" : 18sec (max_execution_time=30, memory_limit=180Mo) - Zip "tmporary-files" : 23sec (max_execution_time=30, memory_limit=30Mo) - - Replace use of mktime() by time() to limit the E_STRICT error messages. - - Bug correction : When adding files with full windows path (drive letter) - PclZip is now working. Before, if the drive letter is not the default - path, PclZip was not able to add the file. - - Version 2.6 : - - Code optimisation - - New attributes PCLZIP_ATT_FILE_COMMENT gives the ability to - add a comment for a specific file. (Don't really know if this is usefull) - - New attribute PCLZIP_ATT_FILE_CONTENT gives the ability to add a string - as a file. - - New attribute PCLZIP_ATT_FILE_MTIME modify the timestamp associated with - a file. - - Correct a bug. Files archived with a timestamp with 0h0m0s were extracted - with current time - - Add CRC value in the informations returned back for each file after an - action. - - Add missing closedir() statement. - - When adding a folder, and removing the path of this folder, files were - incorrectly added with a '/' at the beginning. Which means files are - related to root in unix systems. Corrected. - - Add conditional if before constant definition. This will allow users - to redefine constants without changing the file, and then improve - upgrade of pclzip code for new versions. - - Version 2.5 : - - Introduce the ability to add file/folder with individual properties (file descriptor). - This gives for example the ability to change the filename of a zipped file. - . Able to add files individually - . Able to change full name - . Able to change short name - . Compatible with global options - - New attributes : PCLZIP_ATT_FILE_NAME, PCLZIP_ATT_FILE_NEW_SHORT_NAME, PCLZIP_ATT_FILE_NEW_FULL_NAME - - New error code : PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE - - Add a security control feature. PclZip can extract any file in any folder - of a system. People may use this to upload a zip file and try to override - a system file. The PCLZIP_OPT_EXTRACT_DIR_RESTRICTION will give the - ability to forgive any directory transversal behavior. - - New PCLZIP_OPT_EXTRACT_DIR_RESTRICTION : check extraction path - - New error code : PCLZIP_ERR_DIRECTORY_RESTRICTION - - Modification in PclZipUtilPathInclusion() : dir and path beginning with ./ will be prepend - by current path (getcwd()) - - Version 2.4 : - - Code improvment : try to speed up the code by removing unusefull call to pack() - - Correct bug in delete() : delete() should be called with no argument. This was not - the case in 2.3. This is corrected in 2.4. - - Correct a bug in path_inclusion function. When the path has several '../../', the - result was bad. - - Add a check for magic_quotes_runtime configuration. If enabled, PclZip will - disable it while working and det it back to its original value. - This resolve a lots of bad formated archive errors. - - Bug correction : PclZip now correctly unzip file in some specific situation, - when compressed content has same size as uncompressed content. - - Bug correction : When selecting option 'PCLZIP_OPT_REMOVE_ALL_PATH', - directories are not any more created. - - Code improvment : correct unclosed opendir(), better handling of . and .. in - loops. - - - Version 2.3 : - - Correct a bug with PHP5 : affecting the value 0xFE49FFE0 to a variable does not - give the same result in PHP4 and PHP5 .... - - Version 2.2 : - - Try development of PCLZIP_OPT_CRYPT ..... - However this becomes to a stop. To crypt/decrypt I need to multiply 2 long integers, - the result (greater than a long) is not supported by PHP. Even the use of bcmath - functions does not help. I did not find yet a solution ...; - - Add missing '/' at end of directory entries - - Check is a file is encrypted or not. Returns status 'unsupported_encryption' and/or - error code PCLZIP_ERR_UNSUPPORTED_ENCRYPTION. - - Corrected : Bad "version need to extract" field in local file header - - Add private method privCheckFileHeaders() in order to check local and central - file headers. PclZip is now supporting purpose bit flag bit 3. Purpose bit flag bit 3 gives - the ability to have a local file header without size, compressed size and crc filled. - - Add a generic status 'error' for file status - - Add control of compression type. PclZip only support deflate compression method. - Before v2.2, PclZip does not check the compression method used in an archive while - extracting. With v2.2 PclZip returns a new error status for a file using an unsupported - compression method. New status is "unsupported_compression". New error code is - PCLZIP_ERR_UNSUPPORTED_COMPRESSION. - - Add optional attribute PCLZIP_OPT_STOP_ON_ERROR. This will stop the extract of files - when errors like 'a folder with same name exists' or 'a newer file exists' or - 'a write protected file' exists, rather than set a status for the concerning file - and resume the extract of the zip. - - Add optional attribute PCLZIP_OPT_REPLACE_NEWER. This will force, during an extract' the - replacement of the file, even if a newer version of the file exists. - Note that today if a file with the same name already exists but is older it will be - replaced by the extracted one. - - Improve PclZipUtilOption() - - Support of zip archive with trailing bytes. Before 2.2, PclZip checks that the central - directory structure is the last data in the archive. Crypt encryption/decryption of - zip archive put trailing 0 bytes after decryption. PclZip is now supporting this. - - Version 2.1 : - - Add the ability to abort the extraction by using a user callback function. - The user can now return the value '2' in its callback which indicates to stop the - extraction. For a pre call-back extract is stopped before the extration of the current - file. For a post call back, the extraction is stopped after. - - Add the ability to extract a file (or several files) directly in the standard output. - This is done by the new parameter PCLZIP_OPT_EXTRACT_IN_OUTPUT with method extract(). - - Add support for parameters PCLZIP_OPT_COMMENT, PCLZIP_OPT_ADD_COMMENT, - PCLZIP_OPT_PREPEND_COMMENT. This will create, replace, add, or prepend comments - in the zip archive. - - When merging two archives, the comments are not any more lost, but merged, with a - blank space separator. - - Corrected bug : Files are not deleted when all files are asked to be deleted. - - Corrected bug : Folders with name '0' made PclZip to abort the create or add feature. - - - Version 2.0 : - ***** Warning : Some new features may break the backward compatibility for your scripts. - Please carefully read the readme file. - - Add the ability to delete by Index, name and regular expression. This feature is - performed by the method delete(), which uses the optional parameters - PCLZIP_OPT_BY_INDEX, PCLZIP_OPT_BY_NAME, PCLZIP_OPT_BY_EREG or PCLZIP_OPT_BY_PREG. - - Add the ability to extract by regular expression. To extract by regexp you must use the method - extract(), with the option PCLZIP_OPT_BY_EREG or PCLZIP_OPT_BY_PREG - (depending if you want to use ereg() or preg_match() syntax) followed by the - regular expression pattern. - - Add the ability to extract by index, directly with the extract() method. This is a - code improvment of the extractByIndex() method. - - Add the ability to extract by name. To extract by name you must use the method - extract(), with the option PCLZIP_OPT_BY_NAME followed by the filename to - extract or an array of filenames to extract. To extract all a folder, use the folder - name rather than the filename with a '/' at the end. - - Add the ability to add files without compression. This is done with a new attribute - which is PCLZIP_OPT_NO_COMPRESSION. - - Add the attribute PCLZIP_OPT_EXTRACT_AS_STRING, which allow to extract a file directly - in a string without using any file (or temporary file). - - Add constant PCLZIP_SEPARATOR for static configuration of filename separators in a single string. - The default separator is now a comma (,) and not any more a blank space. - THIS BREAK THE BACKWARD COMPATIBILITY : Please check if this may have an impact with - your script. - - Improve algorythm performance by removing the use of temporary files when adding or - extracting files in an archive. - - Add (correct) detection of empty filename zipping. This can occurs when the removed - path is the same - as a zipped dir. The dir is not zipped (['status'] = filtered), only its content. - - Add better support for windows paths (thanks for help from manus@manusfreedom.com). - - Corrected bug : When the archive file already exists with size=0, the add() method - fails. Corrected in 2.0. - - Remove the use of OS_WINDOWS constant. Use php_uname() function rather. - - Control the order of index ranges in extract by index feature. - - Change the internal management of folders (better handling of internal flag). - - - Version 1.3 : - - Removing the double include check. This is now done by include_once() and require_once() - PHP directives. - - Changing the error handling mecanism : Remove the use of an external error library. - The former PclError...() functions are replaced by internal equivalent methods. - By changing the environment variable PCLZIP_ERROR_EXTERNAL you can still use the former library. - Introducing the use of constants for error codes rather than integer values. This will help - in futur improvment. - Introduction of error handling functions like errorCode(), errorName() and errorInfo(). - - Remove the deprecated use of calling function with arguments passed by reference. - - Add the calling of extract(), extractByIndex(), create() and add() functions - with variable options rather than fixed arguments. - - Add the ability to remove all the file path while extracting or adding, - without any need to specify the path to remove. - This is available for extract(), extractByIndex(), create() and add() functionS by using - the new variable options parameters : - - PCLZIP_OPT_REMOVE_ALL_PATH : by indicating this option while calling the fct. - - Ability to change the mode of a file after the extraction (chmod()). - This is available for extract() and extractByIndex() functionS by using - the new variable options parameters. - - PCLZIP_OPT_SET_CHMOD : by setting the value of this option. - - Ability to definition call-back options. These call-back will be called during the adding, - or the extracting of file (extract(), extractByIndex(), create() and add() functions) : - - PCLZIP_CB_PRE_EXTRACT : will be called before each extraction of a file. The user - can trigerred the change the filename of the extracted file. The user can triggered the - skip of the extraction. This is adding a 'skipped' status in the file list result value. - - PCLZIP_CB_POST_EXTRACT : will be called after each extraction of a file. - Nothing can be triggered from that point. - - PCLZIP_CB_PRE_ADD : will be called before each add of a file. The user - can trigerred the change the stored filename of the added file. The user can triggered the - skip of the add. This is adding a 'skipped' status in the file list result value. - - PCLZIP_CB_POST_ADD : will be called after each add of a file. - Nothing can be triggered from that point. - - Two status are added in the file list returned as function result : skipped & filename_too_long - 'skipped' is used when a call-back function ask for skipping the file. - 'filename_too_long' is used while adding a file with a too long filename to archive (the file is - not added) - - Adding the function PclZipUtilPathInclusion(), that check the inclusion of a path into - a directory. - - Add a check of the presence of the archive file before some actions (like list, ...) - - Add the initialisation of field "index" in header array. This means that by - default index will be -1 when not explicitly set by the methods. - - Version 1.2 : - - Adding a duplicate function. - - Adding a merge function. The merge function is a "quick merge" function, - it just append the content of an archive at the end of the first one. There - is no check for duplicate files or more recent files. - - Improve the search of the central directory end. - - Version 1.1.2 : - - - Changing the license of PclZip. PclZip is now released under the GNU / LGPL license - (see License section). - - Adding the optional support of a static temporary directory. You will need to configure - the constant PCLZIP_TEMPORARY_DIR if you want to use this feature. - - Improving the rename() function. In some cases rename() does not work (different - Filesystems), so it will be replaced by a copy() + unlink() functions. - - Version 1.1.1 : - - - Maintenance release, no new feature. - - Version 1.1 : - - - New method Add() : adding files in the archive - - New method ExtractByIndex() : partial extract of the archive, files are identified by - their index in the archive - - New method DeleteByIndex() : delete some files/folder entries from the archive, - files are identified by their index in the archive. - - Adding a test of the zlib extension presence. If not present abort the script. - - Version 1.0.1 : - - - No new feature - - -3 - Corrected bugs -================== - - Corrected in Version 2.0 : - - Corrected : During an extraction, if a call-back fucntion is used and try to skip - a file, all the extraction process is stopped. - - Corrected in Version 1.3 : - - Corrected : Support of static synopsis for method extract() is broken. - - Corrected : invalid size of archive content field (0xFF) should be (0xFFFF). - - Corrected : When an extract is done with a remove_path parameter, the entry for - the directory with exactly the same path is not skipped/filtered. - - Corrected : extractByIndex() and deleteByIndex() were not managing index in the - right way. For example indexes '1,3-5,11' will only extract files 1 and 11. This - is due to a sort of the index resulting table that puts 11 before 3-5 (sort on - string and not interger). The sort is temporarilly removed, this means that - you must provide a sorted list of index ranges. - - Corrected in Version 1.2 : - - - Nothing. - - Corrected in Version 1.1.2 : - - - Corrected : Winzip is unable to delete or add new files in a PclZip created archives. - - Corrected in Version 1.1.1 : - - - Corrected : When archived file is not compressed (0% compression), the - extract method fails. - - Corrected in Version 1.1 : - - - Corrected : Adding a complete tree of folder may result in a bad archive - creation. - - Corrected in Version 1.0.1 : - - - Corrected : Error while compressing files greater than PCLZIP_READ_BLOCK_SIZE (default=1024). - - -4 - Known bugs or limitations -============================= - - Please publish bugs reports in SourceForge : - http://sourceforge.net/tracker/?group_id=40254&atid=427564 - - In Version 2.x : - - PclZip does only support file uncompressed or compressed with deflate (compression method 8) - - PclZip does not support password protected zip archive - - Some concern were seen when changing mtime of a file while archiving. - Seems to be linked to Daylight Saving Time (PclTest_changing_mtime). - - In Version 1.2 : - - - merge() methods does not check for duplicate files or last date of modifications. - - In Version 1.1 : - - - Limitation : Using 'extract' fields in the file header in the zip archive is not supported. - - WinZip is unable to delete a single file in a PclZip created archive. It is also unable to - add a file in a PclZip created archive. (Corrected in v.1.2) - - In Version 1.0.1 : - - - Adding a complete tree of folder may result in a bad archive - creation. (Corrected in V.1.1). - - Path given to methods must be in the unix format (/) and not the Windows format (\). - Workaround : Use only / directory separators. - - PclZip is using temporary files that are sometime the name of the file with a .tmp or .gz - added suffix. Files with these names may already exist and may be overwritten. - Workaround : none. - - PclZip does not check if the zlib extension is present. If it is absent, the zip - file is not created and the lib abort without warning. - Workaround : enable the zlib extension on the php install - - In Version 1.0 : - - - Error while compressing files greater than PCLZIP_READ_BLOCK_SIZE (default=1024). - (Corrected in v.1.0.1) - - Limitation : Multi-disk zip archive are not supported. - - -5 - License -=========== - - Since version 1.1.2, PclZip Library is released under GNU/LGPL license. - This library is free, so you can use it at no cost. - - HOWEVER, if you release a script, an application, a library or any kind of - code using PclZip library (or a part of it), YOU MUST : - - Indicate in the documentation (or a readme file), that your work - uses PclZip Library, and make a reference to the author and the web site - http://www.phpconcept.net - - Gives the ability to the final user to update the PclZip libary. - - I will also appreciate that you send me a mail (vincent@phpconcept.net), just to - be aware that someone is using PclZip. - - For more information about GNU/LGPL license : http://www.gnu.org - -6 - Warning -================= - - This library and the associated files are non commercial, non professional work. - It should not have unexpected results. However if any damage is caused by this software - the author can not be responsible. - The use of this software is at the risk of the user. - -7 - Documentation -================= - PclZip User Manuel is available in English on PhpConcept : http://www.phpconcept.net/pclzip/man/en/index.php - A Russian translation was done by Feskov Kuzma : http://php.russofile.ru/ru/authors/unsort/zip/ - -8 - Author -========== - - This software was written by Vincent Blavet (vincent@phpconcept.net) on its leasure time. - -9 - Contribute -============== - If you want to contribute to the development of PclZip, please contact vincent@phpconcept.net. - If you can help in financing PhpConcept hosting service, please go to - http://www.phpconcept.net/soutien.php diff --git a/application/third_party/PHPExcel/Shared/PasswordHasher.php b/application/third_party/PHPExcel/Shared/PasswordHasher.php deleted file mode 100644 index 946742bf..00000000 --- a/application/third_party/PHPExcel/Shared/PasswordHasher.php +++ /dev/null @@ -1,67 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Shared - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - - -/** - * PHPExcel_Shared_PasswordHasher - * - * @category PHPExcel - * @package PHPExcel_Shared - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - */ -class PHPExcel_Shared_PasswordHasher -{ - /** - * Create a password hash from a given string. - * - * This method is based on the algorithm provided by - * Daniel Rentz of OpenOffice and the PEAR package - * Spreadsheet_Excel_Writer by Xavier Noguer <xnoguer@rezebra.com>. - * - * @param string $pPassword Password to hash - * @return string Hashed password - */ - public static function hashPassword($pPassword = '') - { - $password = 0x0000; - $charPos = 1; // char position - - // split the plain text password in its component characters - $chars = preg_split('//', $pPassword, -1, PREG_SPLIT_NO_EMPTY); - foreach ($chars as $char) { - $value = ord($char) << $charPos++; // shifted ASCII value - $rotated_bits = $value >> 15; // rotated bits beyond bit 15 - $value &= 0x7fff; // first 15 bits - $password ^= ($value | $rotated_bits); - } - - $password ^= strlen($pPassword); - $password ^= 0xCE4B; - - return(strtoupper(dechex($password))); - } -} diff --git a/application/third_party/PHPExcel/Shared/String.php b/application/third_party/PHPExcel/Shared/String.php deleted file mode 100644 index fa1a64e0..00000000 --- a/application/third_party/PHPExcel/Shared/String.php +++ /dev/null @@ -1,819 +0,0 @@ -<?php - -/** - * PHPExcel_Shared_String - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Shared - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Shared_String -{ - /** Constants */ - /** Regular Expressions */ - // Fraction - const STRING_REGEXP_FRACTION = '(-?)(\d+)\s+(\d+\/\d+)'; - - - /** - * Control characters array - * - * @var string[] - */ - private static $controlCharacters = array(); - - /** - * SYLK Characters array - * - * $var array - */ - private static $SYLKCharacters = array(); - - /** - * Decimal separator - * - * @var string - */ - private static $decimalSeparator; - - /** - * Thousands separator - * - * @var string - */ - private static $thousandsSeparator; - - /** - * Currency code - * - * @var string - */ - private static $currencyCode; - - /** - * Is mbstring extension avalable? - * - * @var boolean - */ - private static $isMbstringEnabled; - - /** - * Is iconv extension avalable? - * - * @var boolean - */ - private static $isIconvEnabled; - - /** - * Build control characters array - */ - private static function buildControlCharacters() - { - for ($i = 0; $i <= 31; ++$i) { - if ($i != 9 && $i != 10 && $i != 13) { - $find = '_x' . sprintf('%04s', strtoupper(dechex($i))) . '_'; - $replace = chr($i); - self::$controlCharacters[$find] = $replace; - } - } - } - - /** - * Build SYLK characters array - */ - private static function buildSYLKCharacters() - { - self::$SYLKCharacters = array( - "\x1B 0" => chr(0), - "\x1B 1" => chr(1), - "\x1B 2" => chr(2), - "\x1B 3" => chr(3), - "\x1B 4" => chr(4), - "\x1B 5" => chr(5), - "\x1B 6" => chr(6), - "\x1B 7" => chr(7), - "\x1B 8" => chr(8), - "\x1B 9" => chr(9), - "\x1B :" => chr(10), - "\x1B ;" => chr(11), - "\x1B <" => chr(12), - "\x1B :" => chr(13), - "\x1B >" => chr(14), - "\x1B ?" => chr(15), - "\x1B!0" => chr(16), - "\x1B!1" => chr(17), - "\x1B!2" => chr(18), - "\x1B!3" => chr(19), - "\x1B!4" => chr(20), - "\x1B!5" => chr(21), - "\x1B!6" => chr(22), - "\x1B!7" => chr(23), - "\x1B!8" => chr(24), - "\x1B!9" => chr(25), - "\x1B!:" => chr(26), - "\x1B!;" => chr(27), - "\x1B!<" => chr(28), - "\x1B!=" => chr(29), - "\x1B!>" => chr(30), - "\x1B!?" => chr(31), - "\x1B'?" => chr(127), - "\x1B(0" => '€', // 128 in CP1252 - "\x1B(2" => '‚', // 130 in CP1252 - "\x1B(3" => 'ƒ', // 131 in CP1252 - "\x1B(4" => '„', // 132 in CP1252 - "\x1B(5" => '…', // 133 in CP1252 - "\x1B(6" => '†', // 134 in CP1252 - "\x1B(7" => '‡', // 135 in CP1252 - "\x1B(8" => 'ˆ', // 136 in CP1252 - "\x1B(9" => '‰', // 137 in CP1252 - "\x1B(:" => 'Š', // 138 in CP1252 - "\x1B(;" => '‹', // 139 in CP1252 - "\x1BNj" => 'Œ', // 140 in CP1252 - "\x1B(>" => 'Ž', // 142 in CP1252 - "\x1B)1" => '‘', // 145 in CP1252 - "\x1B)2" => '’', // 146 in CP1252 - "\x1B)3" => '“', // 147 in CP1252 - "\x1B)4" => '”', // 148 in CP1252 - "\x1B)5" => '•', // 149 in CP1252 - "\x1B)6" => '–', // 150 in CP1252 - "\x1B)7" => '—', // 151 in CP1252 - "\x1B)8" => '˜', // 152 in CP1252 - "\x1B)9" => '™', // 153 in CP1252 - "\x1B):" => 'š', // 154 in CP1252 - "\x1B);" => '›', // 155 in CP1252 - "\x1BNz" => 'œ', // 156 in CP1252 - "\x1B)>" => 'ž', // 158 in CP1252 - "\x1B)?" => 'Ÿ', // 159 in CP1252 - "\x1B*0" => ' ', // 160 in CP1252 - "\x1BN!" => '¡', // 161 in CP1252 - "\x1BN\"" => '¢', // 162 in CP1252 - "\x1BN#" => '£', // 163 in CP1252 - "\x1BN(" => '¤', // 164 in CP1252 - "\x1BN%" => '¥', // 165 in CP1252 - "\x1B*6" => '¦', // 166 in CP1252 - "\x1BN'" => '§', // 167 in CP1252 - "\x1BNH " => '¨', // 168 in CP1252 - "\x1BNS" => '©', // 169 in CP1252 - "\x1BNc" => 'ª', // 170 in CP1252 - "\x1BN+" => '«', // 171 in CP1252 - "\x1B*<" => '¬', // 172 in CP1252 - "\x1B*=" => '­', // 173 in CP1252 - "\x1BNR" => '®', // 174 in CP1252 - "\x1B*?" => '¯', // 175 in CP1252 - "\x1BN0" => '°', // 176 in CP1252 - "\x1BN1" => '±', // 177 in CP1252 - "\x1BN2" => '²', // 178 in CP1252 - "\x1BN3" => '³', // 179 in CP1252 - "\x1BNB " => '´', // 180 in CP1252 - "\x1BN5" => 'µ', // 181 in CP1252 - "\x1BN6" => '¶', // 182 in CP1252 - "\x1BN7" => '·', // 183 in CP1252 - "\x1B+8" => '¸', // 184 in CP1252 - "\x1BNQ" => '¹', // 185 in CP1252 - "\x1BNk" => 'º', // 186 in CP1252 - "\x1BN;" => '»', // 187 in CP1252 - "\x1BN<" => '¼', // 188 in CP1252 - "\x1BN=" => '½', // 189 in CP1252 - "\x1BN>" => '¾', // 190 in CP1252 - "\x1BN?" => '¿', // 191 in CP1252 - "\x1BNAA" => 'À', // 192 in CP1252 - "\x1BNBA" => 'Á', // 193 in CP1252 - "\x1BNCA" => 'Â', // 194 in CP1252 - "\x1BNDA" => 'Ã', // 195 in CP1252 - "\x1BNHA" => 'Ä', // 196 in CP1252 - "\x1BNJA" => 'Å', // 197 in CP1252 - "\x1BNa" => 'Æ', // 198 in CP1252 - "\x1BNKC" => 'Ç', // 199 in CP1252 - "\x1BNAE" => 'È', // 200 in CP1252 - "\x1BNBE" => 'É', // 201 in CP1252 - "\x1BNCE" => 'Ê', // 202 in CP1252 - "\x1BNHE" => 'Ë', // 203 in CP1252 - "\x1BNAI" => 'Ì', // 204 in CP1252 - "\x1BNBI" => 'Í', // 205 in CP1252 - "\x1BNCI" => 'Î', // 206 in CP1252 - "\x1BNHI" => 'Ï', // 207 in CP1252 - "\x1BNb" => 'Ð', // 208 in CP1252 - "\x1BNDN" => 'Ñ', // 209 in CP1252 - "\x1BNAO" => 'Ò', // 210 in CP1252 - "\x1BNBO" => 'Ó', // 211 in CP1252 - "\x1BNCO" => 'Ô', // 212 in CP1252 - "\x1BNDO" => 'Õ', // 213 in CP1252 - "\x1BNHO" => 'Ö', // 214 in CP1252 - "\x1B-7" => '×', // 215 in CP1252 - "\x1BNi" => 'Ø', // 216 in CP1252 - "\x1BNAU" => 'Ù', // 217 in CP1252 - "\x1BNBU" => 'Ú', // 218 in CP1252 - "\x1BNCU" => 'Û', // 219 in CP1252 - "\x1BNHU" => 'Ü', // 220 in CP1252 - "\x1B-=" => 'Ý', // 221 in CP1252 - "\x1BNl" => 'Þ', // 222 in CP1252 - "\x1BN{" => 'ß', // 223 in CP1252 - "\x1BNAa" => 'à', // 224 in CP1252 - "\x1BNBa" => 'á', // 225 in CP1252 - "\x1BNCa" => 'â', // 226 in CP1252 - "\x1BNDa" => 'ã', // 227 in CP1252 - "\x1BNHa" => 'ä', // 228 in CP1252 - "\x1BNJa" => 'å', // 229 in CP1252 - "\x1BNq" => 'æ', // 230 in CP1252 - "\x1BNKc" => 'ç', // 231 in CP1252 - "\x1BNAe" => 'è', // 232 in CP1252 - "\x1BNBe" => 'é', // 233 in CP1252 - "\x1BNCe" => 'ê', // 234 in CP1252 - "\x1BNHe" => 'ë', // 235 in CP1252 - "\x1BNAi" => 'ì', // 236 in CP1252 - "\x1BNBi" => 'í', // 237 in CP1252 - "\x1BNCi" => 'î', // 238 in CP1252 - "\x1BNHi" => 'ï', // 239 in CP1252 - "\x1BNs" => 'ð', // 240 in CP1252 - "\x1BNDn" => 'ñ', // 241 in CP1252 - "\x1BNAo" => 'ò', // 242 in CP1252 - "\x1BNBo" => 'ó', // 243 in CP1252 - "\x1BNCo" => 'ô', // 244 in CP1252 - "\x1BNDo" => 'õ', // 245 in CP1252 - "\x1BNHo" => 'ö', // 246 in CP1252 - "\x1B/7" => '÷', // 247 in CP1252 - "\x1BNy" => 'ø', // 248 in CP1252 - "\x1BNAu" => 'ù', // 249 in CP1252 - "\x1BNBu" => 'ú', // 250 in CP1252 - "\x1BNCu" => 'û', // 251 in CP1252 - "\x1BNHu" => 'ü', // 252 in CP1252 - "\x1B/=" => 'ý', // 253 in CP1252 - "\x1BN|" => 'þ', // 254 in CP1252 - "\x1BNHy" => 'ÿ', // 255 in CP1252 - ); - } - - /** - * Get whether mbstring extension is available - * - * @return boolean - */ - public static function getIsMbstringEnabled() - { - if (isset(self::$isMbstringEnabled)) { - return self::$isMbstringEnabled; - } - - self::$isMbstringEnabled = function_exists('mb_convert_encoding') ? - true : false; - - return self::$isMbstringEnabled; - } - - /** - * Get whether iconv extension is available - * - * @return boolean - */ - public static function getIsIconvEnabled() - { - if (isset(self::$isIconvEnabled)) { - return self::$isIconvEnabled; - } - - // Fail if iconv doesn't exist - if (!function_exists('iconv')) { - self::$isIconvEnabled = false; - return false; - } - - // Sometimes iconv is not working, and e.g. iconv('UTF-8', 'UTF-16LE', 'x') just returns false, - if (!@iconv('UTF-8', 'UTF-16LE', 'x')) { - self::$isIconvEnabled = false; - return false; - } - - // Sometimes iconv_substr('A', 0, 1, 'UTF-8') just returns false in PHP 5.2.0 - // we cannot use iconv in that case either (http://bugs.php.net/bug.php?id=37773) - if (!@iconv_substr('A', 0, 1, 'UTF-8')) { - self::$isIconvEnabled = false; - return false; - } - - // CUSTOM: IBM AIX iconv() does not work - if (defined('PHP_OS') && @stristr(PHP_OS, 'AIX') && defined('ICONV_IMPL') && (@strcasecmp(ICONV_IMPL, 'unknown') == 0) && defined('ICONV_VERSION') && (@strcasecmp(ICONV_VERSION, 'unknown') == 0)) { - self::$isIconvEnabled = false; - return false; - } - - // If we reach here no problems were detected with iconv - self::$isIconvEnabled = true; - return true; - } - - public static function buildCharacterSets() - { - if (empty(self::$controlCharacters)) { - self::buildControlCharacters(); - } - if (empty(self::$SYLKCharacters)) { - self::buildSYLKCharacters(); - } - } - - /** - * Convert from OpenXML escaped control character to PHP control character - * - * Excel 2007 team: - * ---------------- - * That's correct, control characters are stored directly in the shared-strings table. - * We do encode characters that cannot be represented in XML using the following escape sequence: - * _xHHHH_ where H represents a hexadecimal character in the character's value... - * So you could end up with something like _x0008_ in a string (either in a cell value (<v>) - * element or in the shared string <t> element. - * - * @param string $value Value to unescape - * @return string - */ - public static function ControlCharacterOOXML2PHP($value = '') - { - return str_replace(array_keys(self::$controlCharacters), array_values(self::$controlCharacters), $value); - } - - /** - * Convert from PHP control character to OpenXML escaped control character - * - * Excel 2007 team: - * ---------------- - * That's correct, control characters are stored directly in the shared-strings table. - * We do encode characters that cannot be represented in XML using the following escape sequence: - * _xHHHH_ where H represents a hexadecimal character in the character's value... - * So you could end up with something like _x0008_ in a string (either in a cell value (<v>) - * element or in the shared string <t> element. - * - * @param string $value Value to escape - * @return string - */ - public static function ControlCharacterPHP2OOXML($value = '') - { - return str_replace(array_values(self::$controlCharacters), array_keys(self::$controlCharacters), $value); - } - - /** - * Try to sanitize UTF8, stripping invalid byte sequences. Not perfect. Does not surrogate characters. - * - * @param string $value - * @return string - */ - public static function SanitizeUTF8($value) - { - if (self::getIsIconvEnabled()) { - $value = @iconv('UTF-8', 'UTF-8', $value); - return $value; - } - - if (self::getIsMbstringEnabled()) { - $value = mb_convert_encoding($value, 'UTF-8', 'UTF-8'); - return $value; - } - - // else, no conversion - return $value; - } - - /** - * Check if a string contains UTF8 data - * - * @param string $value - * @return boolean - */ - public static function IsUTF8($value = '') - { - return $value === '' || preg_match('/^./su', $value) === 1; - } - - /** - * Formats a numeric value as a string for output in various output writers forcing - * point as decimal separator in case locale is other than English. - * - * @param mixed $value - * @return string - */ - public static function FormatNumber($value) - { - if (is_float($value)) { - return str_replace(',', '.', $value); - } - return (string) $value; - } - - /** - * Converts a UTF-8 string into BIFF8 Unicode string data (8-bit string length) - * Writes the string using uncompressed notation, no rich text, no Asian phonetics - * If mbstring extension is not available, ASCII is assumed, and compressed notation is used - * although this will give wrong results for non-ASCII strings - * see OpenOffice.org's Documentation of the Microsoft Excel File Format, sect. 2.5.3 - * - * @param string $value UTF-8 encoded string - * @param mixed[] $arrcRuns Details of rich text runs in $value - * @return string - */ - public static function UTF8toBIFF8UnicodeShort($value, $arrcRuns = array()) - { - // character count - $ln = self::CountCharacters($value, 'UTF-8'); - // option flags - if (empty($arrcRuns)) { - $opt = (self::getIsIconvEnabled() || self::getIsMbstringEnabled()) ? - 0x0001 : 0x0000; - $data = pack('CC', $ln, $opt); - // characters - $data .= self::ConvertEncoding($value, 'UTF-16LE', 'UTF-8'); - } else { - $data = pack('vC', $ln, 0x09); - $data .= pack('v', count($arrcRuns)); - // characters - $data .= self::ConvertEncoding($value, 'UTF-16LE', 'UTF-8'); - foreach ($arrcRuns as $cRun) { - $data .= pack('v', $cRun['strlen']); - $data .= pack('v', $cRun['fontidx']); - } - } - return $data; - } - - /** - * Converts a UTF-8 string into BIFF8 Unicode string data (16-bit string length) - * Writes the string using uncompressed notation, no rich text, no Asian phonetics - * If mbstring extension is not available, ASCII is assumed, and compressed notation is used - * although this will give wrong results for non-ASCII strings - * see OpenOffice.org's Documentation of the Microsoft Excel File Format, sect. 2.5.3 - * - * @param string $value UTF-8 encoded string - * @return string - */ - public static function UTF8toBIFF8UnicodeLong($value) - { - // character count - $ln = self::CountCharacters($value, 'UTF-8'); - - // option flags - $opt = (self::getIsIconvEnabled() || self::getIsMbstringEnabled()) ? - 0x0001 : 0x0000; - - // characters - $chars = self::ConvertEncoding($value, 'UTF-16LE', 'UTF-8'); - - $data = pack('vC', $ln, $opt) . $chars; - return $data; - } - - /** - * Convert string from one encoding to another. First try mbstring, then iconv, finally strlen - * - * @param string $value - * @param string $to Encoding to convert to, e.g. 'UTF-8' - * @param string $from Encoding to convert from, e.g. 'UTF-16LE' - * @return string - */ - public static function ConvertEncoding($value, $to, $from) - { - if (self::getIsIconvEnabled()) { - return iconv($from, $to, $value); - } - - if (self::getIsMbstringEnabled()) { - return mb_convert_encoding($value, $to, $from); - } - - if ($from == 'UTF-16LE') { - return self::utf16_decode($value, false); - } elseif ($from == 'UTF-16BE') { - return self::utf16_decode($value); - } - // else, no conversion - return $value; - } - - /** - * Decode UTF-16 encoded strings. - * - * Can handle both BOM'ed data and un-BOM'ed data. - * Assumes Big-Endian byte order if no BOM is available. - * This function was taken from http://php.net/manual/en/function.utf8-decode.php - * and $bom_be parameter added. - * - * @param string $str UTF-16 encoded data to decode. - * @return string UTF-8 / ISO encoded data. - * @access public - * @version 0.2 / 2010-05-13 - * @author Rasmus Andersson {@link http://rasmusandersson.se/} - * @author vadik56 - */ - public static function utf16_decode($str, $bom_be = true) - { - if (strlen($str) < 2) { - return $str; - } - $c0 = ord($str{0}); - $c1 = ord($str{1}); - if ($c0 == 0xfe && $c1 == 0xff) { - $str = substr($str, 2); - } elseif ($c0 == 0xff && $c1 == 0xfe) { - $str = substr($str, 2); - $bom_be = false; - } - $len = strlen($str); - $newstr = ''; - for ($i=0; $i<$len; $i+=2) { - if ($bom_be) { - $val = ord($str{$i}) << 4; - $val += ord($str{$i+1}); - } else { - $val = ord($str{$i+1}) << 4; - $val += ord($str{$i}); - } - $newstr .= ($val == 0x228) ? "\n" : chr($val); - } - return $newstr; - } - - /** - * Get character count. First try mbstring, then iconv, finally strlen - * - * @param string $value - * @param string $enc Encoding - * @return int Character count - */ - public static function CountCharacters($value, $enc = 'UTF-8') - { - if (self::getIsMbstringEnabled()) { - return mb_strlen($value, $enc); - } - - if (self::getIsIconvEnabled()) { - return iconv_strlen($value, $enc); - } - - // else strlen - return strlen($value); - } - - /** - * Get a substring of a UTF-8 encoded string. First try mbstring, then iconv, finally strlen - * - * @param string $pValue UTF-8 encoded string - * @param int $pStart Start offset - * @param int $pLength Maximum number of characters in substring - * @return string - */ - public static function Substring($pValue = '', $pStart = 0, $pLength = 0) - { - if (self::getIsMbstringEnabled()) { - return mb_substr($pValue, $pStart, $pLength, 'UTF-8'); - } - - if (self::getIsIconvEnabled()) { - return iconv_substr($pValue, $pStart, $pLength, 'UTF-8'); - } - - // else substr - return substr($pValue, $pStart, $pLength); - } - - /** - * Convert a UTF-8 encoded string to upper case - * - * @param string $pValue UTF-8 encoded string - * @return string - */ - public static function StrToUpper($pValue = '') - { - if (function_exists('mb_convert_case')) { - return mb_convert_case($pValue, MB_CASE_UPPER, "UTF-8"); - } - return strtoupper($pValue); - } - - /** - * Convert a UTF-8 encoded string to lower case - * - * @param string $pValue UTF-8 encoded string - * @return string - */ - public static function StrToLower($pValue = '') - { - if (function_exists('mb_convert_case')) { - return mb_convert_case($pValue, MB_CASE_LOWER, "UTF-8"); - } - return strtolower($pValue); - } - - /** - * Convert a UTF-8 encoded string to title/proper case - * (uppercase every first character in each word, lower case all other characters) - * - * @param string $pValue UTF-8 encoded string - * @return string - */ - public static function StrToTitle($pValue = '') - { - if (function_exists('mb_convert_case')) { - return mb_convert_case($pValue, MB_CASE_TITLE, "UTF-8"); - } - return ucwords($pValue); - } - - public static function mb_is_upper($char) - { - return mb_strtolower($char, "UTF-8") != $char; - } - - public static function mb_str_split($string) - { - # Split at all position not after the start: ^ - # and not before the end: $ - return preg_split('/(?<!^)(?!$)/u', $string); - } - - /** - * Reverse the case of a string, so that all uppercase characters become lowercase - * and all lowercase characters become uppercase - * - * @param string $pValue UTF-8 encoded string - * @return string - */ - public static function StrCaseReverse($pValue = '') - { - if (self::getIsMbstringEnabled()) { - $characters = self::mb_str_split($pValue); - foreach ($characters as &$character) { - if (self::mb_is_upper($character)) { - $character = mb_strtolower($character, 'UTF-8'); - } else { - $character = mb_strtoupper($character, 'UTF-8'); - } - } - return implode('', $characters); - } - return strtolower($pValue) ^ strtoupper($pValue) ^ $pValue; - } - - /** - * Identify whether a string contains a fractional numeric value, - * and convert it to a numeric if it is - * - * @param string &$operand string value to test - * @return boolean - */ - public static function convertToNumberIfFraction(&$operand) - { - if (preg_match('/^'.self::STRING_REGEXP_FRACTION.'$/i', $operand, $match)) { - $sign = ($match[1] == '-') ? '-' : '+'; - $fractionFormula = '='.$sign.$match[2].$sign.$match[3]; - $operand = PHPExcel_Calculation::getInstance()->_calculateFormulaValue($fractionFormula); - return true; - } - return false; - } // function convertToNumberIfFraction() - - /** - * Get the decimal separator. If it has not yet been set explicitly, try to obtain number - * formatting information from locale. - * - * @return string - */ - public static function getDecimalSeparator() - { - if (!isset(self::$decimalSeparator)) { - $localeconv = localeconv(); - self::$decimalSeparator = ($localeconv['decimal_point'] != '') - ? $localeconv['decimal_point'] : $localeconv['mon_decimal_point']; - - if (self::$decimalSeparator == '') { - // Default to . - self::$decimalSeparator = '.'; - } - } - return self::$decimalSeparator; - } - - /** - * Set the decimal separator. Only used by PHPExcel_Style_NumberFormat::toFormattedString() - * to format output by PHPExcel_Writer_HTML and PHPExcel_Writer_PDF - * - * @param string $pValue Character for decimal separator - */ - public static function setDecimalSeparator($pValue = '.') - { - self::$decimalSeparator = $pValue; - } - - /** - * Get the thousands separator. If it has not yet been set explicitly, try to obtain number - * formatting information from locale. - * - * @return string - */ - public static function getThousandsSeparator() - { - if (!isset(self::$thousandsSeparator)) { - $localeconv = localeconv(); - self::$thousandsSeparator = ($localeconv['thousands_sep'] != '') - ? $localeconv['thousands_sep'] : $localeconv['mon_thousands_sep']; - - if (self::$thousandsSeparator == '') { - // Default to . - self::$thousandsSeparator = ','; - } - } - return self::$thousandsSeparator; - } - - /** - * Set the thousands separator. Only used by PHPExcel_Style_NumberFormat::toFormattedString() - * to format output by PHPExcel_Writer_HTML and PHPExcel_Writer_PDF - * - * @param string $pValue Character for thousands separator - */ - public static function setThousandsSeparator($pValue = ',') - { - self::$thousandsSeparator = $pValue; - } - - /** - * Get the currency code. If it has not yet been set explicitly, try to obtain the - * symbol information from locale. - * - * @return string - */ - public static function getCurrencyCode() - { - if (!isset(self::$currencyCode)) { - $localeconv = localeconv(); - self::$currencyCode = ($localeconv['currency_symbol'] != '') - ? $localeconv['currency_symbol'] : $localeconv['int_curr_symbol']; - - if (self::$currencyCode == '') { - // Default to $ - self::$currencyCode = '$'; - } - } - return self::$currencyCode; - } - - /** - * Set the currency code. Only used by PHPExcel_Style_NumberFormat::toFormattedString() - * to format output by PHPExcel_Writer_HTML and PHPExcel_Writer_PDF - * - * @param string $pValue Character for currency code - */ - public static function setCurrencyCode($pValue = '$') - { - self::$currencyCode = $pValue; - } - - /** - * Convert SYLK encoded string to UTF-8 - * - * @param string $pValue - * @return string UTF-8 encoded string - */ - public static function SYLKtoUTF8($pValue = '') - { - // If there is no escape character in the string there is nothing to do - if (strpos($pValue, '') === false) { - return $pValue; - } - - foreach (self::$SYLKCharacters as $k => $v) { - $pValue = str_replace($k, $v, $pValue); - } - - return $pValue; - } - - /** - * Retrieve any leading numeric part of a string, or return the full string if no leading numeric - * (handles basic integer or float, but not exponent or non decimal) - * - * @param string $value - * @return mixed string or only the leading numeric part of the string - */ - public static function testStringAsNumeric($value) - { - if (is_numeric($value)) { - return $value; - } - $v = floatval($value); - return (is_numeric(substr($value, 0, strlen($v)))) ? $v : $value; - } -} diff --git a/application/third_party/PHPExcel/Shared/TimeZone.php b/application/third_party/PHPExcel/Shared/TimeZone.php deleted file mode 100644 index 73373e04..00000000 --- a/application/third_party/PHPExcel/Shared/TimeZone.php +++ /dev/null @@ -1,144 +0,0 @@ -<?php - -/** - * PHPExcel - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Shared - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - - -/** - * PHPExcel_Shared_TimeZone - * - * @category PHPExcel - * @package PHPExcel_Shared - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - */ -class PHPExcel_Shared_TimeZone -{ - /* - * Default Timezone used for date/time conversions - * - * @private - * @var string - */ - protected static $timezone = 'UTC'; - - /** - * Validate a Timezone name - * - * @param string $timezone Time zone (e.g. 'Europe/London') - * @return boolean Success or failure - */ - public static function _validateTimeZone($timezone) - { - if (in_array($timezone, DateTimeZone::listIdentifiers())) { - return true; - } - return false; - } - - /** - * Set the Default Timezone used for date/time conversions - * - * @param string $timezone Time zone (e.g. 'Europe/London') - * @return boolean Success or failure - */ - public static function setTimeZone($timezone) - { - if (self::_validateTimezone($timezone)) { - self::$timezone = $timezone; - return true; - } - return false; - } - - - /** - * Return the Default Timezone used for date/time conversions - * - * @return string Timezone (e.g. 'Europe/London') - */ - public static function getTimeZone() - { - return self::$timezone; - } - - - /** - * Return the Timezone transition for the specified timezone and timestamp - * - * @param DateTimeZone $objTimezone The timezone for finding the transitions - * @param integer $timestamp PHP date/time value for finding the current transition - * @return array The current transition details - */ - private static function getTimezoneTransitions($objTimezone, $timestamp) - { - $allTransitions = $objTimezone->getTransitions(); - $transitions = array(); - foreach ($allTransitions as $key => $transition) { - if ($transition['ts'] > $timestamp) { - $transitions[] = ($key > 0) ? $allTransitions[$key - 1] : $transition; - break; - } - if (empty($transitions)) { - $transitions[] = end($allTransitions); - } - } - - return $transitions; - } - - /** - * Return the Timezone offset used for date/time conversions to/from UST - * This requires both the timezone and the calculated date/time to allow for local DST - * - * @param string $timezone The timezone for finding the adjustment to UST - * @param integer $timestamp PHP date/time value - * @return integer Number of seconds for timezone adjustment - * @throws PHPExcel_Exception - */ - public static function getTimeZoneAdjustment($timezone, $timestamp) - { - if ($timezone !== null) { - if (!self::_validateTimezone($timezone)) { - throw new PHPExcel_Exception("Invalid timezone " . $timezone); - } - } else { - $timezone = self::$timezone; - } - - if ($timezone == 'UST') { - return 0; - } - - $objTimezone = new DateTimeZone($timezone); - if (version_compare(PHP_VERSION, '5.3.0') >= 0) { - $transitions = $objTimezone->getTransitions($timestamp, $timestamp); - } else { - $transitions = self::getTimezoneTransitions($objTimezone, $timestamp); - } - - return (count($transitions) > 0) ? $transitions[0]['offset'] : 0; - } -} diff --git a/application/third_party/PHPExcel/Shared/XMLWriter.php b/application/third_party/PHPExcel/Shared/XMLWriter.php deleted file mode 100644 index 1dc119b5..00000000 --- a/application/third_party/PHPExcel/Shared/XMLWriter.php +++ /dev/null @@ -1,124 +0,0 @@ -<?php - -if (!defined('DATE_W3C')) { - define('DATE_W3C', 'Y-m-d\TH:i:sP'); -} - -if (!defined('DEBUGMODE_ENABLED')) { - define('DEBUGMODE_ENABLED', false); -} - -/** - * PHPExcel_Shared_XMLWriter - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Shared - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Shared_XMLWriter extends XMLWriter -{ - /** Temporary storage method */ - const STORAGE_MEMORY = 1; - const STORAGE_DISK = 2; - - /** - * Temporary filename - * - * @var string - */ - private $tempFileName = ''; - - /** - * Create a new PHPExcel_Shared_XMLWriter instance - * - * @param int $pTemporaryStorage Temporary storage location - * @param string $pTemporaryStorageFolder Temporary storage folder - */ - public function __construct($pTemporaryStorage = self::STORAGE_MEMORY, $pTemporaryStorageFolder = null) - { - // Open temporary storage - if ($pTemporaryStorage == self::STORAGE_MEMORY) { - $this->openMemory(); - } else { - // Create temporary filename - if ($pTemporaryStorageFolder === null) { - $pTemporaryStorageFolder = PHPExcel_Shared_File::sys_get_temp_dir(); - } - $this->tempFileName = @tempnam($pTemporaryStorageFolder, 'xml'); - - // Open storage - if ($this->openUri($this->tempFileName) === false) { - // Fallback to memory... - $this->openMemory(); - } - } - - // Set default values - if (DEBUGMODE_ENABLED) { - $this->setIndent(true); - } - } - - /** - * Destructor - */ - public function __destruct() - { - // Unlink temporary files - if ($this->tempFileName != '') { - @unlink($this->tempFileName); - } - } - - /** - * Get written data - * - * @return $data - */ - public function getData() - { - if ($this->tempFileName == '') { - return $this->outputMemory(true); - } else { - $this->flush(); - return file_get_contents($this->tempFileName); - } - } - - /** - * Fallback method for writeRaw, introduced in PHP 5.2 - * - * @param string $text - * @return string - */ - public function writeRawData($text) - { - if (is_array($text)) { - $text = implode("\n", $text); - } - - if (method_exists($this, 'writeRaw')) { - return $this->writeRaw(htmlspecialchars($text)); - } - - return $this->text($text); - } -} diff --git a/application/third_party/PHPExcel/Shared/ZipArchive.php b/application/third_party/PHPExcel/Shared/ZipArchive.php deleted file mode 100644 index 9eac8cae..00000000 --- a/application/third_party/PHPExcel/Shared/ZipArchive.php +++ /dev/null @@ -1,163 +0,0 @@ -<?php - -if (!defined('PCLZIP_TEMPORARY_DIR')) { - define('PCLZIP_TEMPORARY_DIR', PHPExcel_Shared_File::sys_get_temp_dir() . DIRECTORY_SEPARATOR); -} -require_once PHPEXCEL_ROOT . 'PHPExcel/Shared/PCLZip/pclzip.lib.php'; - -/** - * PHPExcel_Shared_ZipArchive - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Shared_ZipArchive - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Shared_ZipArchive -{ - - /** constants */ - const OVERWRITE = 'OVERWRITE'; - const CREATE = 'CREATE'; - - - /** - * Temporary storage directory - * - * @var string - */ - private $tempDir; - - /** - * Zip Archive Stream Handle - * - * @var string - */ - private $zip; - - - /** - * Open a new zip archive - * - * @param string $fileName Filename for the zip archive - * @return boolean - */ - public function open($fileName) - { - $this->tempDir = PHPExcel_Shared_File::sys_get_temp_dir(); - $this->zip = new PclZip($fileName); - - return true; - } - - - /** - * Close this zip archive - * - */ - public function close() - { - } - - - /** - * Add a new file to the zip archive from a string of raw data. - * - * @param string $localname Directory/Name of the file to add to the zip archive - * @param string $contents String of data to add to the zip archive - */ - public function addFromString($localname, $contents) - { - $filenameParts = pathinfo($localname); - - $handle = fopen($this->tempDir.'/'.$filenameParts["basename"], "wb"); - fwrite($handle, $contents); - fclose($handle); - - $res = $this->zip->add($this->tempDir.'/'.$filenameParts["basename"], PCLZIP_OPT_REMOVE_PATH, $this->tempDir, PCLZIP_OPT_ADD_PATH, $filenameParts["dirname"]); - if ($res == 0) { - throw new PHPExcel_Writer_Exception("Error zipping files : " . $this->zip->errorInfo(true)); - } - - unlink($this->tempDir.'/'.$filenameParts["basename"]); - } - - /** - * Find if given fileName exist in archive (Emulate ZipArchive locateName()) - * - * @param string $fileName Filename for the file in zip archive - * @return boolean - */ - public function locateName($fileName) - { - $fileName = strtolower($fileName); - - $list = $this->zip->listContent(); - $listCount = count($list); - $index = -1; - for ($i = 0; $i < $listCount; ++$i) { - if (strtolower($list[$i]["filename"]) == $fileName || - strtolower($list[$i]["stored_filename"]) == $fileName) { - $index = $i; - break; - } - } - return ($index > -1) ? $index : false; - } - - /** - * Extract file from archive by given fileName (Emulate ZipArchive getFromName()) - * - * @param string $fileName Filename for the file in zip archive - * @return string $contents File string contents - */ - public function getFromName($fileName) - { - $index = $this->locateName($fileName); - - if ($index !== false) { - $extracted = $this->getFromIndex($index); - } else { - $fileName = substr($fileName, 1); - $index = $this->locateName($fileName); - if ($index === false) { - return false; - } - $extracted = $this->zip->getFromIndex($index); - } - - $contents = $extracted; - if ((is_array($extracted)) && ($extracted != 0)) { - $contents = $extracted[0]["content"]; - } - - return $contents; - } - - public function getFromIndex($index) { - $extracted = $this->zip->extractByIndex($index, PCLZIP_OPT_EXTRACT_AS_STRING); - $contents = ''; - if ((is_array($extracted)) && ($extracted != 0)) { - $contents = $extracted[0]["content"]; - } - - return $contents; - } -} diff --git a/application/third_party/PHPExcel/Shared/ZipStreamWrapper.php b/application/third_party/PHPExcel/Shared/ZipStreamWrapper.php deleted file mode 100644 index 2e0324ce..00000000 --- a/application/third_party/PHPExcel/Shared/ZipStreamWrapper.php +++ /dev/null @@ -1,200 +0,0 @@ -<?php - -/** - * PHPExcel_Shared_ZipStreamWrapper - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Shared - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Shared_ZipStreamWrapper -{ - /** - * Internal ZipAcrhive - * - * @var ZipArchive - */ - private $archive; - - /** - * Filename in ZipAcrhive - * - * @var string - */ - private $fileNameInArchive = ''; - - /** - * Position in file - * - * @var int - */ - private $position = 0; - - /** - * Data - * - * @var mixed - */ - private $data = ''; - - /** - * Register wrapper - */ - public static function register() - { - @stream_wrapper_unregister('zip'); - @stream_wrapper_register('zip', __CLASS__); - } - - /** - * Implements support for fopen(). - * - * @param string $path resource name including scheme, e.g. - * @param string $mode only "r" is supported - * @param int $options mask of STREAM_REPORT_ERRORS and STREAM_USE_PATH - * @param string &$openedPath absolute path of the opened stream (out parameter) - * @return bool true on success - */ - public function stream_open($path, $mode, $options, &$opened_path) - { - // Check for mode - if ($mode{0} != 'r') { - throw new PHPExcel_Reader_Exception('Mode ' . $mode . ' is not supported. Only read mode is supported.'); - } - - $pos = strrpos($path, '#'); - $url['host'] = substr($path, 6, $pos - 6); // 6: strlen('zip://') - $url['fragment'] = substr($path, $pos + 1); - - // Open archive - $this->archive = new ZipArchive(); - $this->archive->open($url['host']); - - $this->fileNameInArchive = $url['fragment']; - $this->position = 0; - $this->data = $this->archive->getFromName($this->fileNameInArchive); - - return true; - } - - /** - * Implements support for fstat(). - * - * @return boolean - */ - public function statName() - { - return $this->fileNameInArchive; - } - - /** - * Implements support for fstat(). - * - * @return boolean - */ - public function url_stat() - { - return $this->statName($this->fileNameInArchive); - } - - /** - * Implements support for fstat(). - * - * @return boolean - */ - public function stream_stat() - { - return $this->archive->statName($this->fileNameInArchive); - } - - /** - * Implements support for fread(), fgets() etc. - * - * @param int $count maximum number of bytes to read - * @return string - */ - public function stream_read($count) - { - $ret = substr($this->data, $this->position, $count); - $this->position += strlen($ret); - return $ret; - } - - /** - * Returns the position of the file pointer, i.e. its offset into the file - * stream. Implements support for ftell(). - * - * @return int - */ - public function stream_tell() - { - return $this->position; - } - - /** - * EOF stream - * - * @return bool - */ - public function stream_eof() - { - return $this->position >= strlen($this->data); - } - - /** - * Seek stream - * - * @param int $offset byte offset - * @param int $whence SEEK_SET, SEEK_CUR or SEEK_END - * @return bool - */ - public function stream_seek($offset, $whence) - { - switch ($whence) { - case SEEK_SET: - if ($offset < strlen($this->data) && $offset >= 0) { - $this->position = $offset; - return true; - } else { - return false; - } - break; - case SEEK_CUR: - if ($offset >= 0) { - $this->position += $offset; - return true; - } else { - return false; - } - break; - case SEEK_END: - if (strlen($this->data) + $offset >= 0) { - $this->position = strlen($this->data) + $offset; - return true; - } else { - return false; - } - break; - default: - return false; - } - } -} diff --git a/application/third_party/PHPExcel/Shared/trend/bestFitClass.php b/application/third_party/PHPExcel/Shared/trend/bestFitClass.php deleted file mode 100644 index 2de029f9..00000000 --- a/application/third_party/PHPExcel/Shared/trend/bestFitClass.php +++ /dev/null @@ -1,425 +0,0 @@ -<?php - -/** - * PHPExcel_Best_Fit - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Shared_Trend - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Best_Fit -{ - /** - * Indicator flag for a calculation error - * - * @var boolean - **/ - protected $error = false; - - /** - * Algorithm type to use for best-fit - * - * @var string - **/ - protected $bestFitType = 'undetermined'; - - /** - * Number of entries in the sets of x- and y-value arrays - * - * @var int - **/ - protected $valueCount = 0; - - /** - * X-value dataseries of values - * - * @var float[] - **/ - protected $xValues = array(); - - /** - * Y-value dataseries of values - * - * @var float[] - **/ - protected $yValues = array(); - - /** - * Flag indicating whether values should be adjusted to Y=0 - * - * @var boolean - **/ - protected $adjustToZero = false; - - /** - * Y-value series of best-fit values - * - * @var float[] - **/ - protected $yBestFitValues = array(); - - protected $goodnessOfFit = 1; - - protected $stdevOfResiduals = 0; - - protected $covariance = 0; - - protected $correlation = 0; - - protected $SSRegression = 0; - - protected $SSResiduals = 0; - - protected $DFResiduals = 0; - - protected $f = 0; - - protected $slope = 0; - - protected $slopeSE = 0; - - protected $intersect = 0; - - protected $intersectSE = 0; - - protected $xOffset = 0; - - protected $yOffset = 0; - - - public function getError() - { - return $this->error; - } - - - public function getBestFitType() - { - return $this->bestFitType; - } - - /** - * Return the Y-Value for a specified value of X - * - * @param float $xValue X-Value - * @return float Y-Value - */ - public function getValueOfYForX($xValue) - { - return false; - } - - /** - * Return the X-Value for a specified value of Y - * - * @param float $yValue Y-Value - * @return float X-Value - */ - public function getValueOfXForY($yValue) - { - return false; - } - - /** - * Return the original set of X-Values - * - * @return float[] X-Values - */ - public function getXValues() - { - return $this->xValues; - } - - /** - * Return the Equation of the best-fit line - * - * @param int $dp Number of places of decimal precision to display - * @return string - */ - public function getEquation($dp = 0) - { - return false; - } - - /** - * Return the Slope of the line - * - * @param int $dp Number of places of decimal precision to display - * @return string - */ - public function getSlope($dp = 0) - { - if ($dp != 0) { - return round($this->slope, $dp); - } - return $this->slope; - } - - /** - * Return the standard error of the Slope - * - * @param int $dp Number of places of decimal precision to display - * @return string - */ - public function getSlopeSE($dp = 0) - { - if ($dp != 0) { - return round($this->slopeSE, $dp); - } - return $this->slopeSE; - } - - /** - * Return the Value of X where it intersects Y = 0 - * - * @param int $dp Number of places of decimal precision to display - * @return string - */ - public function getIntersect($dp = 0) - { - if ($dp != 0) { - return round($this->intersect, $dp); - } - return $this->intersect; - } - - /** - * Return the standard error of the Intersect - * - * @param int $dp Number of places of decimal precision to display - * @return string - */ - public function getIntersectSE($dp = 0) - { - if ($dp != 0) { - return round($this->intersectSE, $dp); - } - return $this->intersectSE; - } - - /** - * Return the goodness of fit for this regression - * - * @param int $dp Number of places of decimal precision to return - * @return float - */ - public function getGoodnessOfFit($dp = 0) - { - if ($dp != 0) { - return round($this->goodnessOfFit, $dp); - } - return $this->goodnessOfFit; - } - - public function getGoodnessOfFitPercent($dp = 0) - { - if ($dp != 0) { - return round($this->goodnessOfFit * 100, $dp); - } - return $this->goodnessOfFit * 100; - } - - /** - * Return the standard deviation of the residuals for this regression - * - * @param int $dp Number of places of decimal precision to return - * @return float - */ - public function getStdevOfResiduals($dp = 0) - { - if ($dp != 0) { - return round($this->stdevOfResiduals, $dp); - } - return $this->stdevOfResiduals; - } - - public function getSSRegression($dp = 0) - { - if ($dp != 0) { - return round($this->SSRegression, $dp); - } - return $this->SSRegression; - } - - public function getSSResiduals($dp = 0) - { - if ($dp != 0) { - return round($this->SSResiduals, $dp); - } - return $this->SSResiduals; - } - - public function getDFResiduals($dp = 0) - { - if ($dp != 0) { - return round($this->DFResiduals, $dp); - } - return $this->DFResiduals; - } - - public function getF($dp = 0) - { - if ($dp != 0) { - return round($this->f, $dp); - } - return $this->f; - } - - public function getCovariance($dp = 0) - { - if ($dp != 0) { - return round($this->covariance, $dp); - } - return $this->covariance; - } - - public function getCorrelation($dp = 0) - { - if ($dp != 0) { - return round($this->correlation, $dp); - } - return $this->correlation; - } - - public function getYBestFitValues() - { - return $this->yBestFitValues; - } - - protected function calculateGoodnessOfFit($sumX, $sumY, $sumX2, $sumY2, $sumXY, $meanX, $meanY, $const) - { - $SSres = $SScov = $SScor = $SStot = $SSsex = 0.0; - foreach ($this->xValues as $xKey => $xValue) { - $bestFitY = $this->yBestFitValues[$xKey] = $this->getValueOfYForX($xValue); - - $SSres += ($this->yValues[$xKey] - $bestFitY) * ($this->yValues[$xKey] - $bestFitY); - if ($const) { - $SStot += ($this->yValues[$xKey] - $meanY) * ($this->yValues[$xKey] - $meanY); - } else { - $SStot += $this->yValues[$xKey] * $this->yValues[$xKey]; - } - $SScov += ($this->xValues[$xKey] - $meanX) * ($this->yValues[$xKey] - $meanY); - if ($const) { - $SSsex += ($this->xValues[$xKey] - $meanX) * ($this->xValues[$xKey] - $meanX); - } else { - $SSsex += $this->xValues[$xKey] * $this->xValues[$xKey]; - } - } - - $this->SSResiduals = $SSres; - $this->DFResiduals = $this->valueCount - 1 - $const; - - if ($this->DFResiduals == 0.0) { - $this->stdevOfResiduals = 0.0; - } else { - $this->stdevOfResiduals = sqrt($SSres / $this->DFResiduals); - } - if (($SStot == 0.0) || ($SSres == $SStot)) { - $this->goodnessOfFit = 1; - } else { - $this->goodnessOfFit = 1 - ($SSres / $SStot); - } - - $this->SSRegression = $this->goodnessOfFit * $SStot; - $this->covariance = $SScov / $this->valueCount; - $this->correlation = ($this->valueCount * $sumXY - $sumX * $sumY) / sqrt(($this->valueCount * $sumX2 - pow($sumX, 2)) * ($this->valueCount * $sumY2 - pow($sumY, 2))); - $this->slopeSE = $this->stdevOfResiduals / sqrt($SSsex); - $this->intersectSE = $this->stdevOfResiduals * sqrt(1 / ($this->valueCount - ($sumX * $sumX) / $sumX2)); - if ($this->SSResiduals != 0.0) { - if ($this->DFResiduals == 0.0) { - $this->f = 0.0; - } else { - $this->f = $this->SSRegression / ($this->SSResiduals / $this->DFResiduals); - } - } else { - if ($this->DFResiduals == 0.0) { - $this->f = 0.0; - } else { - $this->f = $this->SSRegression / $this->DFResiduals; - } - } - } - - protected function leastSquareFit($yValues, $xValues, $const) - { - // calculate sums - $x_sum = array_sum($xValues); - $y_sum = array_sum($yValues); - $meanX = $x_sum / $this->valueCount; - $meanY = $y_sum / $this->valueCount; - $mBase = $mDivisor = $xx_sum = $xy_sum = $yy_sum = 0.0; - for ($i = 0; $i < $this->valueCount; ++$i) { - $xy_sum += $xValues[$i] * $yValues[$i]; - $xx_sum += $xValues[$i] * $xValues[$i]; - $yy_sum += $yValues[$i] * $yValues[$i]; - - if ($const) { - $mBase += ($xValues[$i] - $meanX) * ($yValues[$i] - $meanY); - $mDivisor += ($xValues[$i] - $meanX) * ($xValues[$i] - $meanX); - } else { - $mBase += $xValues[$i] * $yValues[$i]; - $mDivisor += $xValues[$i] * $xValues[$i]; - } - } - - // calculate slope -// $this->slope = (($this->valueCount * $xy_sum) - ($x_sum * $y_sum)) / (($this->valueCount * $xx_sum) - ($x_sum * $x_sum)); - $this->slope = $mBase / $mDivisor; - - // calculate intersect -// $this->intersect = ($y_sum - ($this->slope * $x_sum)) / $this->valueCount; - if ($const) { - $this->intersect = $meanY - ($this->slope * $meanX); - } else { - $this->intersect = 0; - } - - $this->calculateGoodnessOfFit($x_sum, $y_sum, $xx_sum, $yy_sum, $xy_sum, $meanX, $meanY, $const); - } - - /** - * Define the regression - * - * @param float[] $yValues The set of Y-values for this regression - * @param float[] $xValues The set of X-values for this regression - * @param boolean $const - */ - public function __construct($yValues, $xValues = array(), $const = true) - { - // Calculate number of points - $nY = count($yValues); - $nX = count($xValues); - - // Define X Values if necessary - if ($nX == 0) { - $xValues = range(1, $nY); - $nX = $nY; - } elseif ($nY != $nX) { - // Ensure both arrays of points are the same size - $this->error = true; - return false; - } - - $this->valueCount = $nY; - $this->xValues = $xValues; - $this->yValues = $yValues; - } -} diff --git a/application/third_party/PHPExcel/Shared/trend/exponentialBestFitClass.php b/application/third_party/PHPExcel/Shared/trend/exponentialBestFitClass.php deleted file mode 100644 index 44487352..00000000 --- a/application/third_party/PHPExcel/Shared/trend/exponentialBestFitClass.php +++ /dev/null @@ -1,138 +0,0 @@ -<?php - -require_once(PHPEXCEL_ROOT . 'PHPExcel/Shared/trend/bestFitClass.php'); - -/** - * PHPExcel_Exponential_Best_Fit - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Shared_Trend - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Exponential_Best_Fit extends PHPExcel_Best_Fit -{ - /** - * Algorithm type to use for best-fit - * (Name of this trend class) - * - * @var string - **/ - protected $bestFitType = 'exponential'; - - /** - * Return the Y-Value for a specified value of X - * - * @param float $xValue X-Value - * @return float Y-Value - **/ - public function getValueOfYForX($xValue) - { - return $this->getIntersect() * pow($this->getSlope(), ($xValue - $this->xOffset)); - } - - /** - * Return the X-Value for a specified value of Y - * - * @param float $yValue Y-Value - * @return float X-Value - **/ - public function getValueOfXForY($yValue) - { - return log(($yValue + $this->yOffset) / $this->getIntersect()) / log($this->getSlope()); - } - - /** - * Return the Equation of the best-fit line - * - * @param int $dp Number of places of decimal precision to display - * @return string - **/ - public function getEquation($dp = 0) - { - $slope = $this->getSlope($dp); - $intersect = $this->getIntersect($dp); - - return 'Y = ' . $intersect . ' * ' . $slope . '^X'; - } - - /** - * Return the Slope of the line - * - * @param int $dp Number of places of decimal precision to display - * @return string - **/ - public function getSlope($dp = 0) - { - if ($dp != 0) { - return round(exp($this->_slope), $dp); - } - return exp($this->_slope); - } - - /** - * Return the Value of X where it intersects Y = 0 - * - * @param int $dp Number of places of decimal precision to display - * @return string - **/ - public function getIntersect($dp = 0) - { - if ($dp != 0) { - return round(exp($this->intersect), $dp); - } - return exp($this->intersect); - } - - /** - * Execute the regression and calculate the goodness of fit for a set of X and Y data values - * - * @param float[] $yValues The set of Y-values for this regression - * @param float[] $xValues The set of X-values for this regression - * @param boolean $const - */ - private function exponentialRegression($yValues, $xValues, $const) - { - foreach ($yValues as &$value) { - if ($value < 0.0) { - $value = 0 - log(abs($value)); - } elseif ($value > 0.0) { - $value = log($value); - } - } - unset($value); - - $this->leastSquareFit($yValues, $xValues, $const); - } - - /** - * Define the regression and calculate the goodness of fit for a set of X and Y data values - * - * @param float[] $yValues The set of Y-values for this regression - * @param float[] $xValues The set of X-values for this regression - * @param boolean $const - */ - public function __construct($yValues, $xValues = array(), $const = true) - { - if (parent::__construct($yValues, $xValues) !== false) { - $this->exponentialRegression($yValues, $xValues, $const); - } - } -} diff --git a/application/third_party/PHPExcel/Shared/trend/linearBestFitClass.php b/application/third_party/PHPExcel/Shared/trend/linearBestFitClass.php deleted file mode 100644 index 76b55b3e..00000000 --- a/application/third_party/PHPExcel/Shared/trend/linearBestFitClass.php +++ /dev/null @@ -1,102 +0,0 @@ -<?php - -require_once(PHPEXCEL_ROOT . 'PHPExcel/Shared/trend/bestFitClass.php'); - -/** - * PHPExcel_Linear_Best_Fit - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Shared_Trend - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Linear_Best_Fit extends PHPExcel_Best_Fit -{ - /** - * Algorithm type to use for best-fit - * (Name of this trend class) - * - * @var string - **/ - protected $bestFitType = 'linear'; - - /** - * Return the Y-Value for a specified value of X - * - * @param float $xValue X-Value - * @return float Y-Value - **/ - public function getValueOfYForX($xValue) - { - return $this->getIntersect() + $this->getSlope() * $xValue; - } - - /** - * Return the X-Value for a specified value of Y - * - * @param float $yValue Y-Value - * @return float X-Value - **/ - public function getValueOfXForY($yValue) - { - return ($yValue - $this->getIntersect()) / $this->getSlope(); - } - - - /** - * Return the Equation of the best-fit line - * - * @param int $dp Number of places of decimal precision to display - * @return string - **/ - public function getEquation($dp = 0) - { - $slope = $this->getSlope($dp); - $intersect = $this->getIntersect($dp); - - return 'Y = ' . $intersect . ' + ' . $slope . ' * X'; - } - - /** - * Execute the regression and calculate the goodness of fit for a set of X and Y data values - * - * @param float[] $yValues The set of Y-values for this regression - * @param float[] $xValues The set of X-values for this regression - * @param boolean $const - */ - private function linearRegression($yValues, $xValues, $const) - { - $this->leastSquareFit($yValues, $xValues, $const); - } - - /** - * Define the regression and calculate the goodness of fit for a set of X and Y data values - * - * @param float[] $yValues The set of Y-values for this regression - * @param float[] $xValues The set of X-values for this regression - * @param boolean $const - */ - public function __construct($yValues, $xValues = array(), $const = true) - { - if (parent::__construct($yValues, $xValues) !== false) { - $this->linearRegression($yValues, $xValues, $const); - } - } -} diff --git a/application/third_party/PHPExcel/Shared/trend/logarithmicBestFitClass.php b/application/third_party/PHPExcel/Shared/trend/logarithmicBestFitClass.php deleted file mode 100644 index 221c5386..00000000 --- a/application/third_party/PHPExcel/Shared/trend/logarithmicBestFitClass.php +++ /dev/null @@ -1,110 +0,0 @@ -<?php - -require_once(PHPEXCEL_ROOT . 'PHPExcel/Shared/trend/bestFitClass.php'); - -/** - * PHPExcel_Logarithmic_Best_Fit - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Shared_Trend - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Logarithmic_Best_Fit extends PHPExcel_Best_Fit -{ - /** - * Algorithm type to use for best-fit - * (Name of this trend class) - * - * @var string - **/ - protected $bestFitType = 'logarithmic'; - - /** - * Return the Y-Value for a specified value of X - * - * @param float $xValue X-Value - * @return float Y-Value - **/ - public function getValueOfYForX($xValue) - { - return $this->getIntersect() + $this->getSlope() * log($xValue - $this->xOffset); - } - - /** - * Return the X-Value for a specified value of Y - * - * @param float $yValue Y-Value - * @return float X-Value - **/ - public function getValueOfXForY($yValue) - { - return exp(($yValue - $this->getIntersect()) / $this->getSlope()); - } - - /** - * Return the Equation of the best-fit line - * - * @param int $dp Number of places of decimal precision to display - * @return string - **/ - public function getEquation($dp = 0) - { - $slope = $this->getSlope($dp); - $intersect = $this->getIntersect($dp); - - return 'Y = '.$intersect.' + '.$slope.' * log(X)'; - } - - /** - * Execute the regression and calculate the goodness of fit for a set of X and Y data values - * - * @param float[] $yValues The set of Y-values for this regression - * @param float[] $xValues The set of X-values for this regression - * @param boolean $const - */ - private function logarithmicRegression($yValues, $xValues, $const) - { - foreach ($xValues as &$value) { - if ($value < 0.0) { - $value = 0 - log(abs($value)); - } elseif ($value > 0.0) { - $value = log($value); - } - } - unset($value); - - $this->leastSquareFit($yValues, $xValues, $const); - } - - /** - * Define the regression and calculate the goodness of fit for a set of X and Y data values - * - * @param float[] $yValues The set of Y-values for this regression - * @param float[] $xValues The set of X-values for this regression - * @param boolean $const - */ - public function __construct($yValues, $xValues = array(), $const = true) - { - if (parent::__construct($yValues, $xValues) !== false) { - $this->logarithmicRegression($yValues, $xValues, $const); - } - } -} diff --git a/application/third_party/PHPExcel/Shared/trend/polynomialBestFitClass.php b/application/third_party/PHPExcel/Shared/trend/polynomialBestFitClass.php deleted file mode 100644 index 8a882b74..00000000 --- a/application/third_party/PHPExcel/Shared/trend/polynomialBestFitClass.php +++ /dev/null @@ -1,222 +0,0 @@ -<?php - -require_once PHPEXCEL_ROOT . 'PHPExcel/Shared/trend/bestFitClass.php'; -require_once PHPEXCEL_ROOT . 'PHPExcel/Shared/JAMA/Matrix.php'; - -/** - * PHPExcel_Polynomial_Best_Fit - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Shared_Trend - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Polynomial_Best_Fit extends PHPExcel_Best_Fit -{ - /** - * Algorithm type to use for best-fit - * (Name of this trend class) - * - * @var string - **/ - protected $bestFitType = 'polynomial'; - - /** - * Polynomial order - * - * @protected - * @var int - **/ - protected $order = 0; - - - /** - * Return the order of this polynomial - * - * @return int - **/ - public function getOrder() - { - return $this->order; - } - - - /** - * Return the Y-Value for a specified value of X - * - * @param float $xValue X-Value - * @return float Y-Value - **/ - public function getValueOfYForX($xValue) - { - $retVal = $this->getIntersect(); - $slope = $this->getSlope(); - foreach ($slope as $key => $value) { - if ($value != 0.0) { - $retVal += $value * pow($xValue, $key + 1); - } - } - return $retVal; - } - - - /** - * Return the X-Value for a specified value of Y - * - * @param float $yValue Y-Value - * @return float X-Value - **/ - public function getValueOfXForY($yValue) - { - return ($yValue - $this->getIntersect()) / $this->getSlope(); - } - - - /** - * Return the Equation of the best-fit line - * - * @param int $dp Number of places of decimal precision to display - * @return string - **/ - public function getEquation($dp = 0) - { - $slope = $this->getSlope($dp); - $intersect = $this->getIntersect($dp); - - $equation = 'Y = ' . $intersect; - foreach ($slope as $key => $value) { - if ($value != 0.0) { - $equation .= ' + ' . $value . ' * X'; - if ($key > 0) { - $equation .= '^' . ($key + 1); - } - } - } - return $equation; - } - - - /** - * Return the Slope of the line - * - * @param int $dp Number of places of decimal precision to display - * @return string - **/ - public function getSlope($dp = 0) - { - if ($dp != 0) { - $coefficients = array(); - foreach ($this->_slope as $coefficient) { - $coefficients[] = round($coefficient, $dp); - } - return $coefficients; - } - return $this->_slope; - } - - - public function getCoefficients($dp = 0) - { - return array_merge(array($this->getIntersect($dp)), $this->getSlope($dp)); - } - - - /** - * Execute the regression and calculate the goodness of fit for a set of X and Y data values - * - * @param int $order Order of Polynomial for this regression - * @param float[] $yValues The set of Y-values for this regression - * @param float[] $xValues The set of X-values for this regression - * @param boolean $const - */ - private function polynomialRegression($order, $yValues, $xValues, $const) - { - // calculate sums - $x_sum = array_sum($xValues); - $y_sum = array_sum($yValues); - $xx_sum = $xy_sum = 0; - for ($i = 0; $i < $this->valueCount; ++$i) { - $xy_sum += $xValues[$i] * $yValues[$i]; - $xx_sum += $xValues[$i] * $xValues[$i]; - $yy_sum += $yValues[$i] * $yValues[$i]; - } - /* - * This routine uses logic from the PHP port of polyfit version 0.1 - * written by Michael Bommarito and Paul Meagher - * - * The function fits a polynomial function of order $order through - * a series of x-y data points using least squares. - * - */ - for ($i = 0; $i < $this->valueCount; ++$i) { - for ($j = 0; $j <= $order; ++$j) { - $A[$i][$j] = pow($xValues[$i], $j); - } - } - for ($i=0; $i < $this->valueCount; ++$i) { - $B[$i] = array($yValues[$i]); - } - $matrixA = new Matrix($A); - $matrixB = new Matrix($B); - $C = $matrixA->solve($matrixB); - - $coefficients = array(); - for ($i = 0; $i < $C->m; ++$i) { - $r = $C->get($i, 0); - if (abs($r) <= pow(10, -9)) { - $r = 0; - } - $coefficients[] = $r; - } - - $this->intersect = array_shift($coefficients); - $this->_slope = $coefficients; - - $this->calculateGoodnessOfFit($x_sum, $y_sum, $xx_sum, $yy_sum, $xy_sum); - foreach ($this->xValues as $xKey => $xValue) { - $this->yBestFitValues[$xKey] = $this->getValueOfYForX($xValue); - } - } - - - /** - * Define the regression and calculate the goodness of fit for a set of X and Y data values - * - * @param int $order Order of Polynomial for this regression - * @param float[] $yValues The set of Y-values for this regression - * @param float[] $xValues The set of X-values for this regression - * @param boolean $const - */ - public function __construct($order, $yValues, $xValues = array(), $const = true) - { - if (parent::__construct($yValues, $xValues) !== false) { - if ($order < $this->valueCount) { - $this->bestFitType .= '_'.$order; - $this->order = $order; - $this->polynomialRegression($order, $yValues, $xValues, $const); - if (($this->getGoodnessOfFit() < 0.0) || ($this->getGoodnessOfFit() > 1.0)) { - $this->_error = true; - } - } else { - $this->_error = true; - } - } - } -} diff --git a/application/third_party/PHPExcel/Shared/trend/powerBestFitClass.php b/application/third_party/PHPExcel/Shared/trend/powerBestFitClass.php deleted file mode 100644 index 77c47342..00000000 --- a/application/third_party/PHPExcel/Shared/trend/powerBestFitClass.php +++ /dev/null @@ -1,138 +0,0 @@ -<?php - -require_once PHPEXCEL_ROOT . 'PHPExcel/Shared/trend/bestFitClass.php'; - -/** - * PHPExcel_Power_Best_Fit - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Shared_Trend - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Power_Best_Fit extends PHPExcel_Best_Fit -{ - /** - * Algorithm type to use for best-fit - * (Name of this trend class) - * - * @var string - **/ - protected $bestFitType = 'power'; - - - /** - * Return the Y-Value for a specified value of X - * - * @param float $xValue X-Value - * @return float Y-Value - **/ - public function getValueOfYForX($xValue) - { - return $this->getIntersect() * pow(($xValue - $this->xOffset), $this->getSlope()); - } - - - /** - * Return the X-Value for a specified value of Y - * - * @param float $yValue Y-Value - * @return float X-Value - **/ - public function getValueOfXForY($yValue) - { - return pow((($yValue + $this->yOffset) / $this->getIntersect()), (1 / $this->getSlope())); - } - - - /** - * Return the Equation of the best-fit line - * - * @param int $dp Number of places of decimal precision to display - * @return string - **/ - public function getEquation($dp = 0) - { - $slope = $this->getSlope($dp); - $intersect = $this->getIntersect($dp); - - return 'Y = ' . $intersect . ' * X^' . $slope; - } - - - /** - * Return the Value of X where it intersects Y = 0 - * - * @param int $dp Number of places of decimal precision to display - * @return string - **/ - public function getIntersect($dp = 0) - { - if ($dp != 0) { - return round(exp($this->intersect), $dp); - } - return exp($this->intersect); - } - - - /** - * Execute the regression and calculate the goodness of fit for a set of X and Y data values - * - * @param float[] $yValues The set of Y-values for this regression - * @param float[] $xValues The set of X-values for this regression - * @param boolean $const - */ - private function powerRegression($yValues, $xValues, $const) - { - foreach ($xValues as &$value) { - if ($value < 0.0) { - $value = 0 - log(abs($value)); - } elseif ($value > 0.0) { - $value = log($value); - } - } - unset($value); - foreach ($yValues as &$value) { - if ($value < 0.0) { - $value = 0 - log(abs($value)); - } elseif ($value > 0.0) { - $value = log($value); - } - } - unset($value); - - $this->leastSquareFit($yValues, $xValues, $const); - } - - - /** - * Define the regression and calculate the goodness of fit for a set of X and Y data values - * - * @param float[] $yValues The set of Y-values for this regression - * @param float[] $xValues The set of X-values for this regression - * @param boolean $const - */ - public function __construct($yValues, $xValues = array(), $const = true) - { - if (parent::__construct($yValues, $xValues) !== false) { - $this->powerRegression($yValues, $xValues, $const); - } - } -} diff --git a/application/third_party/PHPExcel/Shared/trend/trendClass.php b/application/third_party/PHPExcel/Shared/trend/trendClass.php deleted file mode 100644 index 715cd412..00000000 --- a/application/third_party/PHPExcel/Shared/trend/trendClass.php +++ /dev/null @@ -1,147 +0,0 @@ -<?php - -require_once PHPEXCEL_ROOT . 'PHPExcel/Shared/trend/linearBestFitClass.php'; -require_once PHPEXCEL_ROOT . 'PHPExcel/Shared/trend/logarithmicBestFitClass.php'; -require_once PHPEXCEL_ROOT . 'PHPExcel/Shared/trend/exponentialBestFitClass.php'; -require_once PHPEXCEL_ROOT . 'PHPExcel/Shared/trend/powerBestFitClass.php'; -require_once PHPEXCEL_ROOT . 'PHPExcel/Shared/trend/polynomialBestFitClass.php'; - -/** - * PHPExcel_trendClass - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Shared_Trend - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class trendClass -{ - const TREND_LINEAR = 'Linear'; - const TREND_LOGARITHMIC = 'Logarithmic'; - const TREND_EXPONENTIAL = 'Exponential'; - const TREND_POWER = 'Power'; - const TREND_POLYNOMIAL_2 = 'Polynomial_2'; - const TREND_POLYNOMIAL_3 = 'Polynomial_3'; - const TREND_POLYNOMIAL_4 = 'Polynomial_4'; - const TREND_POLYNOMIAL_5 = 'Polynomial_5'; - const TREND_POLYNOMIAL_6 = 'Polynomial_6'; - const TREND_BEST_FIT = 'Bestfit'; - const TREND_BEST_FIT_NO_POLY = 'Bestfit_no_Polynomials'; - - /** - * Names of the best-fit trend analysis methods - * - * @var string[] - **/ - private static $trendTypes = array( - self::TREND_LINEAR, - self::TREND_LOGARITHMIC, - self::TREND_EXPONENTIAL, - self::TREND_POWER - ); - - /** - * Names of the best-fit trend polynomial orders - * - * @var string[] - **/ - private static $trendTypePolynomialOrders = array( - self::TREND_POLYNOMIAL_2, - self::TREND_POLYNOMIAL_3, - self::TREND_POLYNOMIAL_4, - self::TREND_POLYNOMIAL_5, - self::TREND_POLYNOMIAL_6 - ); - - /** - * Cached results for each method when trying to identify which provides the best fit - * - * @var PHPExcel_Best_Fit[] - **/ - private static $trendCache = array(); - - - public static function calculate($trendType = self::TREND_BEST_FIT, $yValues, $xValues = array(), $const = true) - { - // Calculate number of points in each dataset - $nY = count($yValues); - $nX = count($xValues); - - // Define X Values if necessary - if ($nX == 0) { - $xValues = range(1, $nY); - $nX = $nY; - } elseif ($nY != $nX) { - // Ensure both arrays of points are the same size - trigger_error("trend(): Number of elements in coordinate arrays do not match.", E_USER_ERROR); - } - - $key = md5($trendType.$const.serialize($yValues).serialize($xValues)); - // Determine which trend method has been requested - switch ($trendType) { - // Instantiate and return the class for the requested trend method - case self::TREND_LINEAR: - case self::TREND_LOGARITHMIC: - case self::TREND_EXPONENTIAL: - case self::TREND_POWER: - if (!isset(self::$trendCache[$key])) { - $className = 'PHPExcel_'.$trendType.'_Best_Fit'; - self::$trendCache[$key] = new $className($yValues, $xValues, $const); - } - return self::$trendCache[$key]; - case self::TREND_POLYNOMIAL_2: - case self::TREND_POLYNOMIAL_3: - case self::TREND_POLYNOMIAL_4: - case self::TREND_POLYNOMIAL_5: - case self::TREND_POLYNOMIAL_6: - if (!isset(self::$trendCache[$key])) { - $order = substr($trendType, -1); - self::$trendCache[$key] = new PHPExcel_Polynomial_Best_Fit($order, $yValues, $xValues, $const); - } - return self::$trendCache[$key]; - case self::TREND_BEST_FIT: - case self::TREND_BEST_FIT_NO_POLY: - // If the request is to determine the best fit regression, then we test each trend line in turn - // Start by generating an instance of each available trend method - foreach (self::$trendTypes as $trendMethod) { - $className = 'PHPExcel_'.$trendMethod.'BestFit'; - $bestFit[$trendMethod] = new $className($yValues, $xValues, $const); - $bestFitValue[$trendMethod] = $bestFit[$trendMethod]->getGoodnessOfFit(); - } - if ($trendType != self::TREND_BEST_FIT_NO_POLY) { - foreach (self::$trendTypePolynomialOrders as $trendMethod) { - $order = substr($trendMethod, -1); - $bestFit[$trendMethod] = new PHPExcel_Polynomial_Best_Fit($order, $yValues, $xValues, $const); - if ($bestFit[$trendMethod]->getError()) { - unset($bestFit[$trendMethod]); - } else { - $bestFitValue[$trendMethod] = $bestFit[$trendMethod]->getGoodnessOfFit(); - } - } - } - // Determine which of our trend lines is the best fit, and then we return the instance of that trend class - arsort($bestFitValue); - $bestFitType = key($bestFitValue); - return $bestFit[$bestFitType]; - default: - return false; - } - } -} diff --git a/application/third_party/PHPExcel/Style.php b/application/third_party/PHPExcel/Style.php deleted file mode 100644 index 6b952ef9..00000000 --- a/application/third_party/PHPExcel/Style.php +++ /dev/null @@ -1,644 +0,0 @@ -<?php - -/** - * PHPExcel_Style - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Style - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Style extends PHPExcel_Style_Supervisor implements PHPExcel_IComparable -{ - /** - * Font - * - * @var PHPExcel_Style_Font - */ - protected $font; - - /** - * Fill - * - * @var PHPExcel_Style_Fill - */ - protected $fill; - - /** - * Borders - * - * @var PHPExcel_Style_Borders - */ - protected $borders; - - /** - * Alignment - * - * @var PHPExcel_Style_Alignment - */ - protected $alignment; - - /** - * Number Format - * - * @var PHPExcel_Style_NumberFormat - */ - protected $numberFormat; - - /** - * Conditional styles - * - * @var PHPExcel_Style_Conditional[] - */ - protected $conditionalStyles; - - /** - * Protection - * - * @var PHPExcel_Style_Protection - */ - protected $protection; - - /** - * Index of style in collection. Only used for real style. - * - * @var int - */ - protected $index; - - /** - * Use Quote Prefix when displaying in cell editor. Only used for real style. - * - * @var boolean - */ - protected $quotePrefix = false; - - /** - * Create a new PHPExcel_Style - * - * @param boolean $isSupervisor Flag indicating if this is a supervisor or not - * Leave this value at default unless you understand exactly what - * its ramifications are - * @param boolean $isConditional Flag indicating if this is a conditional style or not - * Leave this value at default unless you understand exactly what - * its ramifications are - */ - public function __construct($isSupervisor = false, $isConditional = false) - { - // Supervisor? - $this->isSupervisor = $isSupervisor; - - // Initialise values - $this->conditionalStyles = array(); - $this->font = new PHPExcel_Style_Font($isSupervisor, $isConditional); - $this->fill = new PHPExcel_Style_Fill($isSupervisor, $isConditional); - $this->borders = new PHPExcel_Style_Borders($isSupervisor, $isConditional); - $this->alignment = new PHPExcel_Style_Alignment($isSupervisor, $isConditional); - $this->numberFormat = new PHPExcel_Style_NumberFormat($isSupervisor, $isConditional); - $this->protection = new PHPExcel_Style_Protection($isSupervisor, $isConditional); - - // bind parent if we are a supervisor - if ($isSupervisor) { - $this->font->bindParent($this); - $this->fill->bindParent($this); - $this->borders->bindParent($this); - $this->alignment->bindParent($this); - $this->numberFormat->bindParent($this); - $this->protection->bindParent($this); - } - } - - /** - * Get the shared style component for the currently active cell in currently active sheet. - * Only used for style supervisor - * - * @return PHPExcel_Style - */ - public function getSharedComponent() - { - $activeSheet = $this->getActiveSheet(); - $selectedCell = $this->getActiveCell(); // e.g. 'A1' - - if ($activeSheet->cellExists($selectedCell)) { - $xfIndex = $activeSheet->getCell($selectedCell)->getXfIndex(); - } else { - $xfIndex = 0; - } - - return $this->parent->getCellXfByIndex($xfIndex); - } - - /** - * Get parent. Only used for style supervisor - * - * @return PHPExcel - */ - public function getParent() - { - return $this->parent; - } - - /** - * Build style array from subcomponents - * - * @param array $array - * @return array - */ - public function getStyleArray($array) - { - return array('quotePrefix' => $array); - } - - /** - * Apply styles from array - * - * <code> - * $objPHPExcel->getActiveSheet()->getStyle('B2')->applyFromArray( - * array( - * 'font' => array( - * 'name' => 'Arial', - * 'bold' => true, - * 'italic' => false, - * 'underline' => PHPExcel_Style_Font::UNDERLINE_DOUBLE, - * 'strike' => false, - * 'color' => array( - * 'rgb' => '808080' - * ) - * ), - * 'borders' => array( - * 'bottom' => array( - * 'style' => PHPExcel_Style_Border::BORDER_DASHDOT, - * 'color' => array( - * 'rgb' => '808080' - * ) - * ), - * 'top' => array( - * 'style' => PHPExcel_Style_Border::BORDER_DASHDOT, - * 'color' => array( - * 'rgb' => '808080' - * ) - * ) - * ), - * 'quotePrefix' => true - * ) - * ); - * </code> - * - * @param array $pStyles Array containing style information - * @param boolean $pAdvanced Advanced mode for setting borders. - * @throws PHPExcel_Exception - * @return PHPExcel_Style - */ - public function applyFromArray($pStyles = null, $pAdvanced = true) - { - if (is_array($pStyles)) { - if ($this->isSupervisor) { - $pRange = $this->getSelectedCells(); - - // Uppercase coordinate - $pRange = strtoupper($pRange); - - // Is it a cell range or a single cell? - if (strpos($pRange, ':') === false) { - $rangeA = $pRange; - $rangeB = $pRange; - } else { - list($rangeA, $rangeB) = explode(':', $pRange); - } - - // Calculate range outer borders - $rangeStart = PHPExcel_Cell::coordinateFromString($rangeA); - $rangeEnd = PHPExcel_Cell::coordinateFromString($rangeB); - - // Translate column into index - $rangeStart[0] = PHPExcel_Cell::columnIndexFromString($rangeStart[0]) - 1; - $rangeEnd[0] = PHPExcel_Cell::columnIndexFromString($rangeEnd[0]) - 1; - - // Make sure we can loop upwards on rows and columns - if ($rangeStart[0] > $rangeEnd[0] && $rangeStart[1] > $rangeEnd[1]) { - $tmp = $rangeStart; - $rangeStart = $rangeEnd; - $rangeEnd = $tmp; - } - - // ADVANCED MODE: - if ($pAdvanced && isset($pStyles['borders'])) { - // 'allborders' is a shorthand property for 'outline' and 'inside' and - // it applies to components that have not been set explicitly - if (isset($pStyles['borders']['allborders'])) { - foreach (array('outline', 'inside') as $component) { - if (!isset($pStyles['borders'][$component])) { - $pStyles['borders'][$component] = $pStyles['borders']['allborders']; - } - } - unset($pStyles['borders']['allborders']); // not needed any more - } - // 'outline' is a shorthand property for 'top', 'right', 'bottom', 'left' - // it applies to components that have not been set explicitly - if (isset($pStyles['borders']['outline'])) { - foreach (array('top', 'right', 'bottom', 'left') as $component) { - if (!isset($pStyles['borders'][$component])) { - $pStyles['borders'][$component] = $pStyles['borders']['outline']; - } - } - unset($pStyles['borders']['outline']); // not needed any more - } - // 'inside' is a shorthand property for 'vertical' and 'horizontal' - // it applies to components that have not been set explicitly - if (isset($pStyles['borders']['inside'])) { - foreach (array('vertical', 'horizontal') as $component) { - if (!isset($pStyles['borders'][$component])) { - $pStyles['borders'][$component] = $pStyles['borders']['inside']; - } - } - unset($pStyles['borders']['inside']); // not needed any more - } - // width and height characteristics of selection, 1, 2, or 3 (for 3 or more) - $xMax = min($rangeEnd[0] - $rangeStart[0] + 1, 3); - $yMax = min($rangeEnd[1] - $rangeStart[1] + 1, 3); - - // loop through up to 3 x 3 = 9 regions - for ($x = 1; $x <= $xMax; ++$x) { - // start column index for region - $colStart = ($x == 3) ? - PHPExcel_Cell::stringFromColumnIndex($rangeEnd[0]) - : PHPExcel_Cell::stringFromColumnIndex($rangeStart[0] + $x - 1); - // end column index for region - $colEnd = ($x == 1) ? - PHPExcel_Cell::stringFromColumnIndex($rangeStart[0]) - : PHPExcel_Cell::stringFromColumnIndex($rangeEnd[0] - $xMax + $x); - - for ($y = 1; $y <= $yMax; ++$y) { - // which edges are touching the region - $edges = array(); - if ($x == 1) { - // are we at left edge - $edges[] = 'left'; - } - if ($x == $xMax) { - // are we at right edge - $edges[] = 'right'; - } - if ($y == 1) { - // are we at top edge? - $edges[] = 'top'; - } - if ($y == $yMax) { - // are we at bottom edge? - $edges[] = 'bottom'; - } - - // start row index for region - $rowStart = ($y == 3) ? - $rangeEnd[1] : $rangeStart[1] + $y - 1; - - // end row index for region - $rowEnd = ($y == 1) ? - $rangeStart[1] : $rangeEnd[1] - $yMax + $y; - - // build range for region - $range = $colStart . $rowStart . ':' . $colEnd . $rowEnd; - - // retrieve relevant style array for region - $regionStyles = $pStyles; - unset($regionStyles['borders']['inside']); - - // what are the inner edges of the region when looking at the selection - $innerEdges = array_diff(array('top', 'right', 'bottom', 'left'), $edges); - - // inner edges that are not touching the region should take the 'inside' border properties if they have been set - foreach ($innerEdges as $innerEdge) { - switch ($innerEdge) { - case 'top': - case 'bottom': - // should pick up 'horizontal' border property if set - if (isset($pStyles['borders']['horizontal'])) { - $regionStyles['borders'][$innerEdge] = $pStyles['borders']['horizontal']; - } else { - unset($regionStyles['borders'][$innerEdge]); - } - break; - case 'left': - case 'right': - // should pick up 'vertical' border property if set - if (isset($pStyles['borders']['vertical'])) { - $regionStyles['borders'][$innerEdge] = $pStyles['borders']['vertical']; - } else { - unset($regionStyles['borders'][$innerEdge]); - } - break; - } - } - - // apply region style to region by calling applyFromArray() in simple mode - $this->getActiveSheet()->getStyle($range)->applyFromArray($regionStyles, false); - } - } - return $this; - } - - // SIMPLE MODE: - // Selection type, inspect - if (preg_match('/^[A-Z]+1:[A-Z]+1048576$/', $pRange)) { - $selectionType = 'COLUMN'; - } elseif (preg_match('/^A[0-9]+:XFD[0-9]+$/', $pRange)) { - $selectionType = 'ROW'; - } else { - $selectionType = 'CELL'; - } - - // First loop through columns, rows, or cells to find out which styles are affected by this operation - switch ($selectionType) { - case 'COLUMN': - $oldXfIndexes = array(); - for ($col = $rangeStart[0]; $col <= $rangeEnd[0]; ++$col) { - $oldXfIndexes[$this->getActiveSheet()->getColumnDimensionByColumn($col)->getXfIndex()] = true; - } - break; - case 'ROW': - $oldXfIndexes = array(); - for ($row = $rangeStart[1]; $row <= $rangeEnd[1]; ++$row) { - if ($this->getActiveSheet()->getRowDimension($row)->getXfIndex() == null) { - $oldXfIndexes[0] = true; // row without explicit style should be formatted based on default style - } else { - $oldXfIndexes[$this->getActiveSheet()->getRowDimension($row)->getXfIndex()] = true; - } - } - break; - case 'CELL': - $oldXfIndexes = array(); - for ($col = $rangeStart[0]; $col <= $rangeEnd[0]; ++$col) { - for ($row = $rangeStart[1]; $row <= $rangeEnd[1]; ++$row) { - $oldXfIndexes[$this->getActiveSheet()->getCellByColumnAndRow($col, $row)->getXfIndex()] = true; - } - } - break; - } - - // clone each of the affected styles, apply the style array, and add the new styles to the workbook - $workbook = $this->getActiveSheet()->getParent(); - foreach ($oldXfIndexes as $oldXfIndex => $dummy) { - $style = $workbook->getCellXfByIndex($oldXfIndex); - $newStyle = clone $style; - $newStyle->applyFromArray($pStyles); - - if ($existingStyle = $workbook->getCellXfByHashCode($newStyle->getHashCode())) { - // there is already such cell Xf in our collection - $newXfIndexes[$oldXfIndex] = $existingStyle->getIndex(); - } else { - // we don't have such a cell Xf, need to add - $workbook->addCellXf($newStyle); - $newXfIndexes[$oldXfIndex] = $newStyle->getIndex(); - } - } - - // Loop through columns, rows, or cells again and update the XF index - switch ($selectionType) { - case 'COLUMN': - for ($col = $rangeStart[0]; $col <= $rangeEnd[0]; ++$col) { - $columnDimension = $this->getActiveSheet()->getColumnDimensionByColumn($col); - $oldXfIndex = $columnDimension->getXfIndex(); - $columnDimension->setXfIndex($newXfIndexes[$oldXfIndex]); - } - break; - - case 'ROW': - for ($row = $rangeStart[1]; $row <= $rangeEnd[1]; ++$row) { - $rowDimension = $this->getActiveSheet()->getRowDimension($row); - $oldXfIndex = $rowDimension->getXfIndex() === null ? - 0 : $rowDimension->getXfIndex(); // row without explicit style should be formatted based on default style - $rowDimension->setXfIndex($newXfIndexes[$oldXfIndex]); - } - break; - - case 'CELL': - for ($col = $rangeStart[0]; $col <= $rangeEnd[0]; ++$col) { - for ($row = $rangeStart[1]; $row <= $rangeEnd[1]; ++$row) { - $cell = $this->getActiveSheet()->getCellByColumnAndRow($col, $row); - $oldXfIndex = $cell->getXfIndex(); - $cell->setXfIndex($newXfIndexes[$oldXfIndex]); - } - } - break; - } - - } else { - // not a supervisor, just apply the style array directly on style object - if (array_key_exists('fill', $pStyles)) { - $this->getFill()->applyFromArray($pStyles['fill']); - } - if (array_key_exists('font', $pStyles)) { - $this->getFont()->applyFromArray($pStyles['font']); - } - if (array_key_exists('borders', $pStyles)) { - $this->getBorders()->applyFromArray($pStyles['borders']); - } - if (array_key_exists('alignment', $pStyles)) { - $this->getAlignment()->applyFromArray($pStyles['alignment']); - } - if (array_key_exists('numberformat', $pStyles)) { - $this->getNumberFormat()->applyFromArray($pStyles['numberformat']); - } - if (array_key_exists('protection', $pStyles)) { - $this->getProtection()->applyFromArray($pStyles['protection']); - } - if (array_key_exists('quotePrefix', $pStyles)) { - $this->quotePrefix = $pStyles['quotePrefix']; - } - } - } else { - throw new PHPExcel_Exception("Invalid style array passed."); - } - return $this; - } - - /** - * Get Fill - * - * @return PHPExcel_Style_Fill - */ - public function getFill() - { - return $this->fill; - } - - /** - * Get Font - * - * @return PHPExcel_Style_Font - */ - public function getFont() - { - return $this->font; - } - - /** - * Set font - * - * @param PHPExcel_Style_Font $font - * @return PHPExcel_Style - */ - public function setFont(PHPExcel_Style_Font $font) - { - $this->font = $font; - return $this; - } - - /** - * Get Borders - * - * @return PHPExcel_Style_Borders - */ - public function getBorders() - { - return $this->borders; - } - - /** - * Get Alignment - * - * @return PHPExcel_Style_Alignment - */ - public function getAlignment() - { - return $this->alignment; - } - - /** - * Get Number Format - * - * @return PHPExcel_Style_NumberFormat - */ - public function getNumberFormat() - { - return $this->numberFormat; - } - - /** - * Get Conditional Styles. Only used on supervisor. - * - * @return PHPExcel_Style_Conditional[] - */ - public function getConditionalStyles() - { - return $this->getActiveSheet()->getConditionalStyles($this->getActiveCell()); - } - - /** - * Set Conditional Styles. Only used on supervisor. - * - * @param PHPExcel_Style_Conditional[] $pValue Array of condtional styles - * @return PHPExcel_Style - */ - public function setConditionalStyles($pValue = null) - { - if (is_array($pValue)) { - $this->getActiveSheet()->setConditionalStyles($this->getSelectedCells(), $pValue); - } - return $this; - } - - /** - * Get Protection - * - * @return PHPExcel_Style_Protection - */ - public function getProtection() - { - return $this->protection; - } - - /** - * Get quote prefix - * - * @return boolean - */ - public function getQuotePrefix() - { - if ($this->isSupervisor) { - return $this->getSharedComponent()->getQuotePrefix(); - } - return $this->quotePrefix; - } - - /** - * Set quote prefix - * - * @param boolean $pValue - */ - public function setQuotePrefix($pValue) - { - if ($pValue == '') { - $pValue = false; - } - if ($this->isSupervisor) { - $styleArray = array('quotePrefix' => $pValue); - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); - } else { - $this->quotePrefix = (boolean) $pValue; - } - return $this; - } - - /** - * Get hash code - * - * @return string Hash code - */ - public function getHashCode() - { - $hashConditionals = ''; - foreach ($this->conditionalStyles as $conditional) { - $hashConditionals .= $conditional->getHashCode(); - } - - return md5( - $this->fill->getHashCode() . - $this->font->getHashCode() . - $this->borders->getHashCode() . - $this->alignment->getHashCode() . - $this->numberFormat->getHashCode() . - $hashConditionals . - $this->protection->getHashCode() . - ($this->quotePrefix ? 't' : 'f') . - __CLASS__ - ); - } - - /** - * Get own index in style collection - * - * @return int - */ - public function getIndex() - { - return $this->index; - } - - /** - * Set own index in style collection - * - * @param int $pValue - */ - public function setIndex($pValue) - { - $this->index = $pValue; - } -} diff --git a/application/third_party/PHPExcel/Style/Alignment.php b/application/third_party/PHPExcel/Style/Alignment.php deleted file mode 100644 index bfc49477..00000000 --- a/application/third_party/PHPExcel/Style/Alignment.php +++ /dev/null @@ -1,464 +0,0 @@ -<?php -/** - * PHPExcel_Style_Alignment - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Style - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Style_Alignment extends PHPExcel_Style_Supervisor implements PHPExcel_IComparable -{ - /* Horizontal alignment styles */ - const HORIZONTAL_GENERAL = 'general'; - const HORIZONTAL_LEFT = 'left'; - const HORIZONTAL_RIGHT = 'right'; - const HORIZONTAL_CENTER = 'center'; - const HORIZONTAL_CENTER_CONTINUOUS = 'centerContinuous'; - const HORIZONTAL_JUSTIFY = 'justify'; - const HORIZONTAL_FILL = 'fill'; - const HORIZONTAL_DISTRIBUTED = 'distributed'; // Excel2007 only - - /* Vertical alignment styles */ - const VERTICAL_BOTTOM = 'bottom'; - const VERTICAL_TOP = 'top'; - const VERTICAL_CENTER = 'center'; - const VERTICAL_JUSTIFY = 'justify'; - const VERTICAL_DISTRIBUTED = 'distributed'; // Excel2007 only - - /* Read order */ - const READORDER_CONTEXT = 0; - const READORDER_LTR = 1; - const READORDER_RTL = 2; - - /** - * Horizontal alignment - * - * @var string - */ - protected $horizontal = PHPExcel_Style_Alignment::HORIZONTAL_GENERAL; - - /** - * Vertical alignment - * - * @var string - */ - protected $vertical = PHPExcel_Style_Alignment::VERTICAL_BOTTOM; - - /** - * Text rotation - * - * @var integer - */ - protected $textRotation = 0; - - /** - * Wrap text - * - * @var boolean - */ - protected $wrapText = false; - - /** - * Shrink to fit - * - * @var boolean - */ - protected $shrinkToFit = false; - - /** - * Indent - only possible with horizontal alignment left and right - * - * @var integer - */ - protected $indent = 0; - - /** - * Read order - * - * @var integer - */ - protected $readorder = 0; - - /** - * Create a new PHPExcel_Style_Alignment - * - * @param boolean $isSupervisor Flag indicating if this is a supervisor or not - * Leave this value at default unless you understand exactly what - * its ramifications are - * @param boolean $isConditional Flag indicating if this is a conditional style or not - * Leave this value at default unless you understand exactly what - * its ramifications are - */ - public function __construct($isSupervisor = false, $isConditional = false) - { - // Supervisor? - parent::__construct($isSupervisor); - - if ($isConditional) { - $this->horizontal = null; - $this->vertical = null; - $this->textRotation = null; - } - } - - /** - * Get the shared style component for the currently active cell in currently active sheet. - * Only used for style supervisor - * - * @return PHPExcel_Style_Alignment - */ - public function getSharedComponent() - { - return $this->parent->getSharedComponent()->getAlignment(); - } - - /** - * Build style array from subcomponents - * - * @param array $array - * @return array - */ - public function getStyleArray($array) - { - return array('alignment' => $array); - } - - /** - * Apply styles from array - * - * <code> - * $objPHPExcel->getActiveSheet()->getStyle('B2')->getAlignment()->applyFromArray( - * array( - * 'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER, - * 'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER, - * 'rotation' => 0, - * 'wrap' => TRUE - * ) - * ); - * </code> - * - * @param array $pStyles Array containing style information - * @throws PHPExcel_Exception - * @return PHPExcel_Style_Alignment - */ - public function applyFromArray($pStyles = null) - { - if (is_array($pStyles)) { - if ($this->isSupervisor) { - $this->getActiveSheet()->getStyle($this->getSelectedCells()) - ->applyFromArray($this->getStyleArray($pStyles)); - } else { - if (isset($pStyles['horizontal'])) { - $this->setHorizontal($pStyles['horizontal']); - } - if (isset($pStyles['vertical'])) { - $this->setVertical($pStyles['vertical']); - } - if (isset($pStyles['rotation'])) { - $this->setTextRotation($pStyles['rotation']); - } - if (isset($pStyles['wrap'])) { - $this->setWrapText($pStyles['wrap']); - } - if (isset($pStyles['shrinkToFit'])) { - $this->setShrinkToFit($pStyles['shrinkToFit']); - } - if (isset($pStyles['indent'])) { - $this->setIndent($pStyles['indent']); - } - if (isset($pStyles['readorder'])) { - $this->setReadorder($pStyles['readorder']); - } - } - } else { - throw new PHPExcel_Exception("Invalid style array passed."); - } - return $this; - } - - /** - * Get Horizontal - * - * @return string - */ - public function getHorizontal() - { - if ($this->isSupervisor) { - return $this->getSharedComponent()->getHorizontal(); - } - return $this->horizontal; - } - - /** - * Set Horizontal - * - * @param string $pValue - * @return PHPExcel_Style_Alignment - */ - public function setHorizontal($pValue = PHPExcel_Style_Alignment::HORIZONTAL_GENERAL) - { - if ($pValue == '') { - $pValue = PHPExcel_Style_Alignment::HORIZONTAL_GENERAL; - } - - if ($this->isSupervisor) { - $styleArray = $this->getStyleArray(array('horizontal' => $pValue)); - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); - } else { - $this->horizontal = $pValue; - } - return $this; - } - - /** - * Get Vertical - * - * @return string - */ - public function getVertical() - { - if ($this->isSupervisor) { - return $this->getSharedComponent()->getVertical(); - } - return $this->vertical; - } - - /** - * Set Vertical - * - * @param string $pValue - * @return PHPExcel_Style_Alignment - */ - public function setVertical($pValue = PHPExcel_Style_Alignment::VERTICAL_BOTTOM) - { - if ($pValue == '') { - $pValue = PHPExcel_Style_Alignment::VERTICAL_BOTTOM; - } - - if ($this->isSupervisor) { - $styleArray = $this->getStyleArray(array('vertical' => $pValue)); - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); - } else { - $this->vertical = $pValue; - } - return $this; - } - - /** - * Get TextRotation - * - * @return int - */ - public function getTextRotation() - { - if ($this->isSupervisor) { - return $this->getSharedComponent()->getTextRotation(); - } - return $this->textRotation; - } - - /** - * Set TextRotation - * - * @param int $pValue - * @throws PHPExcel_Exception - * @return PHPExcel_Style_Alignment - */ - public function setTextRotation($pValue = 0) - { - // Excel2007 value 255 => PHPExcel value -165 - if ($pValue == 255) { - $pValue = -165; - } - - // Set rotation - if (($pValue >= -90 && $pValue <= 90) || $pValue == -165) { - if ($this->isSupervisor) { - $styleArray = $this->getStyleArray(array('rotation' => $pValue)); - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); - } else { - $this->textRotation = $pValue; - } - } else { - throw new PHPExcel_Exception("Text rotation should be a value between -90 and 90."); - } - - return $this; - } - - /** - * Get Wrap Text - * - * @return boolean - */ - public function getWrapText() - { - if ($this->isSupervisor) { - return $this->getSharedComponent()->getWrapText(); - } - return $this->wrapText; - } - - /** - * Set Wrap Text - * - * @param boolean $pValue - * @return PHPExcel_Style_Alignment - */ - public function setWrapText($pValue = false) - { - if ($pValue == '') { - $pValue = false; - } - if ($this->isSupervisor) { - $styleArray = $this->getStyleArray(array('wrap' => $pValue)); - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); - } else { - $this->wrapText = $pValue; - } - return $this; - } - - /** - * Get Shrink to fit - * - * @return boolean - */ - public function getShrinkToFit() - { - if ($this->isSupervisor) { - return $this->getSharedComponent()->getShrinkToFit(); - } - return $this->shrinkToFit; - } - - /** - * Set Shrink to fit - * - * @param boolean $pValue - * @return PHPExcel_Style_Alignment - */ - public function setShrinkToFit($pValue = false) - { - if ($pValue == '') { - $pValue = false; - } - if ($this->isSupervisor) { - $styleArray = $this->getStyleArray(array('shrinkToFit' => $pValue)); - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); - } else { - $this->shrinkToFit = $pValue; - } - return $this; - } - - /** - * Get indent - * - * @return int - */ - public function getIndent() - { - if ($this->isSupervisor) { - return $this->getSharedComponent()->getIndent(); - } - return $this->indent; - } - - /** - * Set indent - * - * @param int $pValue - * @return PHPExcel_Style_Alignment - */ - public function setIndent($pValue = 0) - { - if ($pValue > 0) { - if ($this->getHorizontal() != self::HORIZONTAL_GENERAL && - $this->getHorizontal() != self::HORIZONTAL_LEFT && - $this->getHorizontal() != self::HORIZONTAL_RIGHT) { - $pValue = 0; // indent not supported - } - } - if ($this->isSupervisor) { - $styleArray = $this->getStyleArray(array('indent' => $pValue)); - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); - } else { - $this->indent = $pValue; - } - return $this; - } - - /** - * Get read order - * - * @return integer - */ - public function getReadorder() - { - if ($this->isSupervisor) { - return $this->getSharedComponent()->getReadorder(); - } - return $this->readorder; - } - - /** - * Set read order - * - * @param int $pValue - * @return PHPExcel_Style_Alignment - */ - public function setReadorder($pValue = 0) - { - if ($pValue < 0 || $pValue > 2) { - $pValue = 0; - } - if ($this->isSupervisor) { - $styleArray = $this->getStyleArray(array('readorder' => $pValue)); - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); - } else { - $this->readorder = $pValue; - } - return $this; - } - - /** - * Get hash code - * - * @return string Hash code - */ - public function getHashCode() - { - if ($this->isSupervisor) { - return $this->getSharedComponent()->getHashCode(); - } - return md5( - $this->horizontal . - $this->vertical . - $this->textRotation . - ($this->wrapText ? 't' : 'f') . - ($this->shrinkToFit ? 't' : 'f') . - $this->indent . - $this->readorder . - __CLASS__ - ); - } -} diff --git a/application/third_party/PHPExcel/Style/Border.php b/application/third_party/PHPExcel/Style/Border.php deleted file mode 100644 index 55efc501..00000000 --- a/application/third_party/PHPExcel/Style/Border.php +++ /dev/null @@ -1,282 +0,0 @@ -<?php - -/** - * PHPExcel_Style_Border - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Style - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Style_Border extends PHPExcel_Style_Supervisor implements PHPExcel_IComparable -{ - /* Border style */ - const BORDER_NONE = 'none'; - const BORDER_DASHDOT = 'dashDot'; - const BORDER_DASHDOTDOT = 'dashDotDot'; - const BORDER_DASHED = 'dashed'; - const BORDER_DOTTED = 'dotted'; - const BORDER_DOUBLE = 'double'; - const BORDER_HAIR = 'hair'; - const BORDER_MEDIUM = 'medium'; - const BORDER_MEDIUMDASHDOT = 'mediumDashDot'; - const BORDER_MEDIUMDASHDOTDOT = 'mediumDashDotDot'; - const BORDER_MEDIUMDASHED = 'mediumDashed'; - const BORDER_SLANTDASHDOT = 'slantDashDot'; - const BORDER_THICK = 'thick'; - const BORDER_THIN = 'thin'; - - /** - * Border style - * - * @var string - */ - protected $borderStyle = PHPExcel_Style_Border::BORDER_NONE; - - /** - * Border color - * - * @var PHPExcel_Style_Color - */ - protected $color; - - /** - * Parent property name - * - * @var string - */ - protected $parentPropertyName; - - /** - * Create a new PHPExcel_Style_Border - * - * @param boolean $isSupervisor Flag indicating if this is a supervisor or not - * Leave this value at default unless you understand exactly what - * its ramifications are - * @param boolean $isConditional Flag indicating if this is a conditional style or not - * Leave this value at default unless you understand exactly what - * its ramifications are - */ - public function __construct($isSupervisor = false, $isConditional = false) - { - // Supervisor? - parent::__construct($isSupervisor); - - // Initialise values - $this->color = new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_BLACK, $isSupervisor); - - // bind parent if we are a supervisor - if ($isSupervisor) { - $this->color->bindParent($this, 'color'); - } - } - - /** - * Bind parent. Only used for supervisor - * - * @param PHPExcel_Style_Borders $parent - * @param string $parentPropertyName - * @return PHPExcel_Style_Border - */ - public function bindParent($parent, $parentPropertyName = null) - { - $this->parent = $parent; - $this->parentPropertyName = $parentPropertyName; - return $this; - } - - /** - * Get the shared style component for the currently active cell in currently active sheet. - * Only used for style supervisor - * - * @return PHPExcel_Style_Border - * @throws PHPExcel_Exception - */ - public function getSharedComponent() - { - switch ($this->parentPropertyName) { - case 'allBorders': - case 'horizontal': - case 'inside': - case 'outline': - case 'vertical': - throw new PHPExcel_Exception('Cannot get shared component for a pseudo-border.'); - break; - case 'bottom': - return $this->parent->getSharedComponent()->getBottom(); - case 'diagonal': - return $this->parent->getSharedComponent()->getDiagonal(); - case 'left': - return $this->parent->getSharedComponent()->getLeft(); - case 'right': - return $this->parent->getSharedComponent()->getRight(); - case 'top': - return $this->parent->getSharedComponent()->getTop(); - } - } - - /** - * Build style array from subcomponents - * - * @param array $array - * @return array - */ - public function getStyleArray($array) - { - switch ($this->parentPropertyName) { - case 'allBorders': - case 'bottom': - case 'diagonal': - case 'horizontal': - case 'inside': - case 'left': - case 'outline': - case 'right': - case 'top': - case 'vertical': - $key = strtolower('vertical'); - break; - } - return $this->parent->getStyleArray(array($key => $array)); - } - - /** - * Apply styles from array - * - * <code> - * $objPHPExcel->getActiveSheet()->getStyle('B2')->getBorders()->getTop()->applyFromArray( - * array( - * 'style' => PHPExcel_Style_Border::BORDER_DASHDOT, - * 'color' => array( - * 'rgb' => '808080' - * ) - * ) - * ); - * </code> - * - * @param array $pStyles Array containing style information - * @throws PHPExcel_Exception - * @return PHPExcel_Style_Border - */ - public function applyFromArray($pStyles = null) - { - if (is_array($pStyles)) { - if ($this->isSupervisor) { - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($this->getStyleArray($pStyles)); - } else { - if (isset($pStyles['style'])) { - $this->setBorderStyle($pStyles['style']); - } - if (isset($pStyles['color'])) { - $this->getColor()->applyFromArray($pStyles['color']); - } - } - } else { - throw new PHPExcel_Exception("Invalid style array passed."); - } - return $this; - } - - /** - * Get Border style - * - * @return string - */ - public function getBorderStyle() - { - if ($this->isSupervisor) { - return $this->getSharedComponent()->getBorderStyle(); - } - return $this->borderStyle; - } - - /** - * Set Border style - * - * @param string|boolean $pValue - * When passing a boolean, FALSE equates PHPExcel_Style_Border::BORDER_NONE - * and TRUE to PHPExcel_Style_Border::BORDER_MEDIUM - * @return PHPExcel_Style_Border - */ - public function setBorderStyle($pValue = PHPExcel_Style_Border::BORDER_NONE) - { - - if (empty($pValue)) { - $pValue = PHPExcel_Style_Border::BORDER_NONE; - } elseif (is_bool($pValue) && $pValue) { - $pValue = PHPExcel_Style_Border::BORDER_MEDIUM; - } - if ($this->isSupervisor) { - $styleArray = $this->getStyleArray(array('style' => $pValue)); - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); - } else { - $this->borderStyle = $pValue; - } - return $this; - } - - /** - * Get Border Color - * - * @return PHPExcel_Style_Color - */ - public function getColor() - { - return $this->color; - } - - /** - * Set Border Color - * - * @param PHPExcel_Style_Color $pValue - * @throws PHPExcel_Exception - * @return PHPExcel_Style_Border - */ - public function setColor(PHPExcel_Style_Color $pValue = null) - { - // make sure parameter is a real color and not a supervisor - $color = $pValue->getIsSupervisor() ? $pValue->getSharedComponent() : $pValue; - - if ($this->isSupervisor) { - $styleArray = $this->getColor()->getStyleArray(array('argb' => $color->getARGB())); - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); - } else { - $this->color = $color; - } - return $this; - } - - /** - * Get hash code - * - * @return string Hash code - */ - public function getHashCode() - { - if ($this->isSupervisor) { - return $this->getSharedComponent()->getHashCode(); - } - return md5( - $this->borderStyle . - $this->color->getHashCode() . - __CLASS__ - ); - } -} diff --git a/application/third_party/PHPExcel/Style/Borders.php b/application/third_party/PHPExcel/Style/Borders.php deleted file mode 100644 index 27c40a48..00000000 --- a/application/third_party/PHPExcel/Style/Borders.php +++ /dev/null @@ -1,429 +0,0 @@ -<?php - -/** - * PHPExcel_Style_Borders - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Style - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Style_Borders extends PHPExcel_Style_Supervisor implements PHPExcel_IComparable -{ - /* Diagonal directions */ - const DIAGONAL_NONE = 0; - const DIAGONAL_UP = 1; - const DIAGONAL_DOWN = 2; - const DIAGONAL_BOTH = 3; - - /** - * Left - * - * @var PHPExcel_Style_Border - */ - protected $left; - - /** - * Right - * - * @var PHPExcel_Style_Border - */ - protected $right; - - /** - * Top - * - * @var PHPExcel_Style_Border - */ - protected $top; - - /** - * Bottom - * - * @var PHPExcel_Style_Border - */ - protected $bottom; - - /** - * Diagonal - * - * @var PHPExcel_Style_Border - */ - protected $diagonal; - - /** - * DiagonalDirection - * - * @var int - */ - protected $diagonalDirection; - - /** - * All borders psedo-border. Only applies to supervisor. - * - * @var PHPExcel_Style_Border - */ - protected $allBorders; - - /** - * Outline psedo-border. Only applies to supervisor. - * - * @var PHPExcel_Style_Border - */ - protected $outline; - - /** - * Inside psedo-border. Only applies to supervisor. - * - * @var PHPExcel_Style_Border - */ - protected $inside; - - /** - * Vertical pseudo-border. Only applies to supervisor. - * - * @var PHPExcel_Style_Border - */ - protected $vertical; - - /** - * Horizontal pseudo-border. Only applies to supervisor. - * - * @var PHPExcel_Style_Border - */ - protected $horizontal; - - /** - * Create a new PHPExcel_Style_Borders - * - * @param boolean $isSupervisor Flag indicating if this is a supervisor or not - * Leave this value at default unless you understand exactly what - * its ramifications are - * @param boolean $isConditional Flag indicating if this is a conditional style or not - * Leave this value at default unless you understand exactly what - * its ramifications are - */ - public function __construct($isSupervisor = false, $isConditional = false) - { - // Supervisor? - parent::__construct($isSupervisor); - - // Initialise values - $this->left = new PHPExcel_Style_Border($isSupervisor, $isConditional); - $this->right = new PHPExcel_Style_Border($isSupervisor, $isConditional); - $this->top = new PHPExcel_Style_Border($isSupervisor, $isConditional); - $this->bottom = new PHPExcel_Style_Border($isSupervisor, $isConditional); - $this->diagonal = new PHPExcel_Style_Border($isSupervisor, $isConditional); - $this->diagonalDirection = PHPExcel_Style_Borders::DIAGONAL_NONE; - - // Specially for supervisor - if ($isSupervisor) { - // Initialize pseudo-borders - $this->allBorders = new PHPExcel_Style_Border(true); - $this->outline = new PHPExcel_Style_Border(true); - $this->inside = new PHPExcel_Style_Border(true); - $this->vertical = new PHPExcel_Style_Border(true); - $this->horizontal = new PHPExcel_Style_Border(true); - - // bind parent if we are a supervisor - $this->left->bindParent($this, 'left'); - $this->right->bindParent($this, 'right'); - $this->top->bindParent($this, 'top'); - $this->bottom->bindParent($this, 'bottom'); - $this->diagonal->bindParent($this, 'diagonal'); - $this->allBorders->bindParent($this, 'allBorders'); - $this->outline->bindParent($this, 'outline'); - $this->inside->bindParent($this, 'inside'); - $this->vertical->bindParent($this, 'vertical'); - $this->horizontal->bindParent($this, 'horizontal'); - } - } - - /** - * Get the shared style component for the currently active cell in currently active sheet. - * Only used for style supervisor - * - * @return PHPExcel_Style_Borders - */ - public function getSharedComponent() - { - return $this->parent->getSharedComponent()->getBorders(); - } - - /** - * Build style array from subcomponents - * - * @param array $array - * @return array - */ - public function getStyleArray($array) - { - return array('borders' => $array); - } - - /** - * Apply styles from array - * - * <code> - * $objPHPExcel->getActiveSheet()->getStyle('B2')->getBorders()->applyFromArray( - * array( - * 'bottom' => array( - * 'style' => PHPExcel_Style_Border::BORDER_DASHDOT, - * 'color' => array( - * 'rgb' => '808080' - * ) - * ), - * 'top' => array( - * 'style' => PHPExcel_Style_Border::BORDER_DASHDOT, - * 'color' => array( - * 'rgb' => '808080' - * ) - * ) - * ) - * ); - * </code> - * <code> - * $objPHPExcel->getActiveSheet()->getStyle('B2')->getBorders()->applyFromArray( - * array( - * 'allborders' => array( - * 'style' => PHPExcel_Style_Border::BORDER_DASHDOT, - * 'color' => array( - * 'rgb' => '808080' - * ) - * ) - * ) - * ); - * </code> - * - * @param array $pStyles Array containing style information - * @throws PHPExcel_Exception - * @return PHPExcel_Style_Borders - */ - public function applyFromArray($pStyles = null) - { - if (is_array($pStyles)) { - if ($this->isSupervisor) { - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($this->getStyleArray($pStyles)); - } else { - if (array_key_exists('left', $pStyles)) { - $this->getLeft()->applyFromArray($pStyles['left']); - } - if (array_key_exists('right', $pStyles)) { - $this->getRight()->applyFromArray($pStyles['right']); - } - if (array_key_exists('top', $pStyles)) { - $this->getTop()->applyFromArray($pStyles['top']); - } - if (array_key_exists('bottom', $pStyles)) { - $this->getBottom()->applyFromArray($pStyles['bottom']); - } - if (array_key_exists('diagonal', $pStyles)) { - $this->getDiagonal()->applyFromArray($pStyles['diagonal']); - } - if (array_key_exists('diagonaldirection', $pStyles)) { - $this->setDiagonalDirection($pStyles['diagonaldirection']); - } - if (array_key_exists('allborders', $pStyles)) { - $this->getLeft()->applyFromArray($pStyles['allborders']); - $this->getRight()->applyFromArray($pStyles['allborders']); - $this->getTop()->applyFromArray($pStyles['allborders']); - $this->getBottom()->applyFromArray($pStyles['allborders']); - } - } - } else { - throw new PHPExcel_Exception("Invalid style array passed."); - } - return $this; - } - - /** - * Get Left - * - * @return PHPExcel_Style_Border - */ - public function getLeft() - { - return $this->left; - } - - /** - * Get Right - * - * @return PHPExcel_Style_Border - */ - public function getRight() - { - return $this->right; - } - - /** - * Get Top - * - * @return PHPExcel_Style_Border - */ - public function getTop() - { - return $this->top; - } - - /** - * Get Bottom - * - * @return PHPExcel_Style_Border - */ - public function getBottom() - { - return $this->bottom; - } - - /** - * Get Diagonal - * - * @return PHPExcel_Style_Border - */ - public function getDiagonal() - { - return $this->diagonal; - } - - /** - * Get AllBorders (pseudo-border). Only applies to supervisor. - * - * @return PHPExcel_Style_Border - * @throws PHPExcel_Exception - */ - public function getAllBorders() - { - if (!$this->isSupervisor) { - throw new PHPExcel_Exception('Can only get pseudo-border for supervisor.'); - } - return $this->allBorders; - } - - /** - * Get Outline (pseudo-border). Only applies to supervisor. - * - * @return boolean - * @throws PHPExcel_Exception - */ - public function getOutline() - { - if (!$this->isSupervisor) { - throw new PHPExcel_Exception('Can only get pseudo-border for supervisor.'); - } - return $this->outline; - } - - /** - * Get Inside (pseudo-border). Only applies to supervisor. - * - * @return boolean - * @throws PHPExcel_Exception - */ - public function getInside() - { - if (!$this->isSupervisor) { - throw new PHPExcel_Exception('Can only get pseudo-border for supervisor.'); - } - return $this->inside; - } - - /** - * Get Vertical (pseudo-border). Only applies to supervisor. - * - * @return PHPExcel_Style_Border - * @throws PHPExcel_Exception - */ - public function getVertical() - { - if (!$this->isSupervisor) { - throw new PHPExcel_Exception('Can only get pseudo-border for supervisor.'); - } - return $this->vertical; - } - - /** - * Get Horizontal (pseudo-border). Only applies to supervisor. - * - * @return PHPExcel_Style_Border - * @throws PHPExcel_Exception - */ - public function getHorizontal() - { - if (!$this->isSupervisor) { - throw new PHPExcel_Exception('Can only get pseudo-border for supervisor.'); - } - return $this->horizontal; - } - - /** - * Get DiagonalDirection - * - * @return int - */ - public function getDiagonalDirection() - { - if ($this->isSupervisor) { - return $this->getSharedComponent()->getDiagonalDirection(); - } - return $this->diagonalDirection; - } - - /** - * Set DiagonalDirection - * - * @param int $pValue - * @return PHPExcel_Style_Borders - */ - public function setDiagonalDirection($pValue = PHPExcel_Style_Borders::DIAGONAL_NONE) - { - if ($pValue == '') { - $pValue = PHPExcel_Style_Borders::DIAGONAL_NONE; - } - if ($this->isSupervisor) { - $styleArray = $this->getStyleArray(array('diagonaldirection' => $pValue)); - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); - } else { - $this->diagonalDirection = $pValue; - } - return $this; - } - - /** - * Get hash code - * - * @return string Hash code - */ - public function getHashCode() - { - if ($this->isSupervisor) { - return $this->getSharedComponent()->getHashcode(); - } - return md5( - $this->getLeft()->getHashCode() . - $this->getRight()->getHashCode() . - $this->getTop()->getHashCode() . - $this->getBottom()->getHashCode() . - $this->getDiagonal()->getHashCode() . - $this->getDiagonalDirection() . - __CLASS__ - ); - } -} diff --git a/application/third_party/PHPExcel/Style/Color.php b/application/third_party/PHPExcel/Style/Color.php deleted file mode 100644 index 9c7790f0..00000000 --- a/application/third_party/PHPExcel/Style/Color.php +++ /dev/null @@ -1,443 +0,0 @@ -<?php - -/** - * PHPExcel_Style_Color - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Style - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Style_Color extends PHPExcel_Style_Supervisor implements PHPExcel_IComparable -{ - /* Colors */ - const COLOR_BLACK = 'FF000000'; - const COLOR_WHITE = 'FFFFFFFF'; - const COLOR_RED = 'FFFF0000'; - const COLOR_DARKRED = 'FF800000'; - const COLOR_BLUE = 'FF0000FF'; - const COLOR_DARKBLUE = 'FF000080'; - const COLOR_GREEN = 'FF00FF00'; - const COLOR_DARKGREEN = 'FF008000'; - const COLOR_YELLOW = 'FFFFFF00'; - const COLOR_DARKYELLOW = 'FF808000'; - - /** - * Indexed colors array - * - * @var array - */ - protected static $indexedColors; - - /** - * ARGB - Alpha RGB - * - * @var string - */ - protected $argb = null; - - /** - * Parent property name - * - * @var string - */ - protected $parentPropertyName; - - - /** - * Create a new PHPExcel_Style_Color - * - * @param string $pARGB ARGB value for the colour - * @param boolean $isSupervisor Flag indicating if this is a supervisor or not - * Leave this value at default unless you understand exactly what - * its ramifications are - * @param boolean $isConditional Flag indicating if this is a conditional style or not - * Leave this value at default unless you understand exactly what - * its ramifications are - */ - public function __construct($pARGB = PHPExcel_Style_Color::COLOR_BLACK, $isSupervisor = false, $isConditional = false) - { - // Supervisor? - parent::__construct($isSupervisor); - - // Initialise values - if (!$isConditional) { - $this->argb = $pARGB; - } - } - - /** - * Bind parent. Only used for supervisor - * - * @param mixed $parent - * @param string $parentPropertyName - * @return PHPExcel_Style_Color - */ - public function bindParent($parent, $parentPropertyName = null) - { - $this->parent = $parent; - $this->parentPropertyName = $parentPropertyName; - return $this; - } - - /** - * Get the shared style component for the currently active cell in currently active sheet. - * Only used for style supervisor - * - * @return PHPExcel_Style_Color - */ - public function getSharedComponent() - { - switch ($this->parentPropertyName) { - case 'endColor': - return $this->parent->getSharedComponent()->getEndColor(); - case 'color': - return $this->parent->getSharedComponent()->getColor(); - case 'startColor': - return $this->parent->getSharedComponent()->getStartColor(); - } - } - - /** - * Build style array from subcomponents - * - * @param array $array - * @return array - */ - public function getStyleArray($array) - { - switch ($this->parentPropertyName) { - case 'endColor': - $key = 'endcolor'; - break; - case 'color': - $key = 'color'; - break; - case 'startColor': - $key = 'startcolor'; - break; - - } - return $this->parent->getStyleArray(array($key => $array)); - } - - /** - * Apply styles from array - * - * <code> - * $objPHPExcel->getActiveSheet()->getStyle('B2')->getFont()->getColor()->applyFromArray( array('rgb' => '808080') ); - * </code> - * - * @param array $pStyles Array containing style information - * @throws PHPExcel_Exception - * @return PHPExcel_Style_Color - */ - public function applyFromArray($pStyles = null) - { - if (is_array($pStyles)) { - if ($this->isSupervisor) { - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($this->getStyleArray($pStyles)); - } else { - if (array_key_exists('rgb', $pStyles)) { - $this->setRGB($pStyles['rgb']); - } - if (array_key_exists('argb', $pStyles)) { - $this->setARGB($pStyles['argb']); - } - } - } else { - throw new PHPExcel_Exception("Invalid style array passed."); - } - return $this; - } - - /** - * Get ARGB - * - * @return string - */ - public function getARGB() - { - if ($this->isSupervisor) { - return $this->getSharedComponent()->getARGB(); - } - return $this->argb; - } - - /** - * Set ARGB - * - * @param string $pValue - * @return PHPExcel_Style_Color - */ - public function setARGB($pValue = PHPExcel_Style_Color::COLOR_BLACK) - { - if ($pValue == '') { - $pValue = PHPExcel_Style_Color::COLOR_BLACK; - } - if ($this->isSupervisor) { - $styleArray = $this->getStyleArray(array('argb' => $pValue)); - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); - } else { - $this->argb = $pValue; - } - return $this; - } - - /** - * Get RGB - * - * @return string - */ - public function getRGB() - { - if ($this->isSupervisor) { - return $this->getSharedComponent()->getRGB(); - } - return substr($this->argb, 2); - } - - /** - * Set RGB - * - * @param string $pValue RGB value - * @return PHPExcel_Style_Color - */ - public function setRGB($pValue = '000000') - { - if ($pValue == '') { - $pValue = '000000'; - } - if ($this->isSupervisor) { - $styleArray = $this->getStyleArray(array('argb' => 'FF' . $pValue)); - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); - } else { - $this->argb = 'FF' . $pValue; - } - return $this; - } - - /** - * Get a specified colour component of an RGB value - * - * @private - * @param string $RGB The colour as an RGB value (e.g. FF00CCCC or CCDDEE - * @param int $offset Position within the RGB value to extract - * @param boolean $hex Flag indicating whether the component should be returned as a hex or a - * decimal value - * @return string The extracted colour component - */ - private static function getColourComponent($RGB, $offset, $hex = true) - { - $colour = substr($RGB, $offset, 2); - if (!$hex) { - $colour = hexdec($colour); - } - return $colour; - } - - /** - * Get the red colour component of an RGB value - * - * @param string $RGB The colour as an RGB value (e.g. FF00CCCC or CCDDEE - * @param boolean $hex Flag indicating whether the component should be returned as a hex or a - * decimal value - * @return string The red colour component - */ - public static function getRed($RGB, $hex = true) - { - return self::getColourComponent($RGB, strlen($RGB) - 6, $hex); - } - - /** - * Get the green colour component of an RGB value - * - * @param string $RGB The colour as an RGB value (e.g. FF00CCCC or CCDDEE - * @param boolean $hex Flag indicating whether the component should be returned as a hex or a - * decimal value - * @return string The green colour component - */ - public static function getGreen($RGB, $hex = true) - { - return self::getColourComponent($RGB, strlen($RGB) - 4, $hex); - } - - /** - * Get the blue colour component of an RGB value - * - * @param string $RGB The colour as an RGB value (e.g. FF00CCCC or CCDDEE - * @param boolean $hex Flag indicating whether the component should be returned as a hex or a - * decimal value - * @return string The blue colour component - */ - public static function getBlue($RGB, $hex = true) - { - return self::getColourComponent($RGB, strlen($RGB) - 2, $hex); - } - - /** - * Adjust the brightness of a color - * - * @param string $hex The colour as an RGBA or RGB value (e.g. FF00CCCC or CCDDEE) - * @param float $adjustPercentage The percentage by which to adjust the colour as a float from -1 to 1 - * @return string The adjusted colour as an RGBA or RGB value (e.g. FF00CCCC or CCDDEE) - */ - public static function changeBrightness($hex, $adjustPercentage) - { - $rgba = (strlen($hex) == 8); - - $red = self::getRed($hex, false); - $green = self::getGreen($hex, false); - $blue = self::getBlue($hex, false); - if ($adjustPercentage > 0) { - $red += (255 - $red) * $adjustPercentage; - $green += (255 - $green) * $adjustPercentage; - $blue += (255 - $blue) * $adjustPercentage; - } else { - $red += $red * $adjustPercentage; - $green += $green * $adjustPercentage; - $blue += $blue * $adjustPercentage; - } - - if ($red < 0) { - $red = 0; - } elseif ($red > 255) { - $red = 255; - } - if ($green < 0) { - $green = 0; - } elseif ($green > 255) { - $green = 255; - } - if ($blue < 0) { - $blue = 0; - } elseif ($blue > 255) { - $blue = 255; - } - - $rgb = strtoupper( - str_pad(dechex($red), 2, '0', 0) . - str_pad(dechex($green), 2, '0', 0) . - str_pad(dechex($blue), 2, '0', 0) - ); - return (($rgba) ? 'FF' : '') . $rgb; - } - - /** - * Get indexed color - * - * @param int $pIndex Index entry point into the colour array - * @param boolean $background Flag to indicate whether default background or foreground colour - * should be returned if the indexed colour doesn't exist - * @return PHPExcel_Style_Color - */ - public static function indexedColor($pIndex, $background = false) - { - // Clean parameter - $pIndex = intval($pIndex); - - // Indexed colors - if (is_null(self::$indexedColors)) { - self::$indexedColors = array( - 1 => 'FF000000', // System Colour #1 - Black - 2 => 'FFFFFFFF', // System Colour #2 - White - 3 => 'FFFF0000', // System Colour #3 - Red - 4 => 'FF00FF00', // System Colour #4 - Green - 5 => 'FF0000FF', // System Colour #5 - Blue - 6 => 'FFFFFF00', // System Colour #6 - Yellow - 7 => 'FFFF00FF', // System Colour #7- Magenta - 8 => 'FF00FFFF', // System Colour #8- Cyan - 9 => 'FF800000', // Standard Colour #9 - 10 => 'FF008000', // Standard Colour #10 - 11 => 'FF000080', // Standard Colour #11 - 12 => 'FF808000', // Standard Colour #12 - 13 => 'FF800080', // Standard Colour #13 - 14 => 'FF008080', // Standard Colour #14 - 15 => 'FFC0C0C0', // Standard Colour #15 - 16 => 'FF808080', // Standard Colour #16 - 17 => 'FF9999FF', // Chart Fill Colour #17 - 18 => 'FF993366', // Chart Fill Colour #18 - 19 => 'FFFFFFCC', // Chart Fill Colour #19 - 20 => 'FFCCFFFF', // Chart Fill Colour #20 - 21 => 'FF660066', // Chart Fill Colour #21 - 22 => 'FFFF8080', // Chart Fill Colour #22 - 23 => 'FF0066CC', // Chart Fill Colour #23 - 24 => 'FFCCCCFF', // Chart Fill Colour #24 - 25 => 'FF000080', // Chart Line Colour #25 - 26 => 'FFFF00FF', // Chart Line Colour #26 - 27 => 'FFFFFF00', // Chart Line Colour #27 - 28 => 'FF00FFFF', // Chart Line Colour #28 - 29 => 'FF800080', // Chart Line Colour #29 - 30 => 'FF800000', // Chart Line Colour #30 - 31 => 'FF008080', // Chart Line Colour #31 - 32 => 'FF0000FF', // Chart Line Colour #32 - 33 => 'FF00CCFF', // Standard Colour #33 - 34 => 'FFCCFFFF', // Standard Colour #34 - 35 => 'FFCCFFCC', // Standard Colour #35 - 36 => 'FFFFFF99', // Standard Colour #36 - 37 => 'FF99CCFF', // Standard Colour #37 - 38 => 'FFFF99CC', // Standard Colour #38 - 39 => 'FFCC99FF', // Standard Colour #39 - 40 => 'FFFFCC99', // Standard Colour #40 - 41 => 'FF3366FF', // Standard Colour #41 - 42 => 'FF33CCCC', // Standard Colour #42 - 43 => 'FF99CC00', // Standard Colour #43 - 44 => 'FFFFCC00', // Standard Colour #44 - 45 => 'FFFF9900', // Standard Colour #45 - 46 => 'FFFF6600', // Standard Colour #46 - 47 => 'FF666699', // Standard Colour #47 - 48 => 'FF969696', // Standard Colour #48 - 49 => 'FF003366', // Standard Colour #49 - 50 => 'FF339966', // Standard Colour #50 - 51 => 'FF003300', // Standard Colour #51 - 52 => 'FF333300', // Standard Colour #52 - 53 => 'FF993300', // Standard Colour #53 - 54 => 'FF993366', // Standard Colour #54 - 55 => 'FF333399', // Standard Colour #55 - 56 => 'FF333333' // Standard Colour #56 - ); - } - - if (array_key_exists($pIndex, self::$indexedColors)) { - return new PHPExcel_Style_Color(self::$indexedColors[$pIndex]); - } - - if ($background) { - return new PHPExcel_Style_Color(self::COLOR_WHITE); - } - return new PHPExcel_Style_Color(self::COLOR_BLACK); - } - - /** - * Get hash code - * - * @return string Hash code - */ - public function getHashCode() - { - if ($this->isSupervisor) { - return $this->getSharedComponent()->getHashCode(); - } - return md5( - $this->argb . - __CLASS__ - ); - } -} diff --git a/application/third_party/PHPExcel/Style/Conditional.php b/application/third_party/PHPExcel/Style/Conditional.php deleted file mode 100644 index 331362b4..00000000 --- a/application/third_party/PHPExcel/Style/Conditional.php +++ /dev/null @@ -1,293 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Style - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - - -/** - * PHPExcel_Style_Conditional - * - * @category PHPExcel - * @package PHPExcel_Style - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - */ -class PHPExcel_Style_Conditional implements PHPExcel_IComparable -{ - /* Condition types */ - const CONDITION_NONE = 'none'; - const CONDITION_CELLIS = 'cellIs'; - const CONDITION_CONTAINSTEXT = 'containsText'; - const CONDITION_EXPRESSION = 'expression'; - - /* Operator types */ - const OPERATOR_NONE = ''; - const OPERATOR_BEGINSWITH = 'beginsWith'; - const OPERATOR_ENDSWITH = 'endsWith'; - const OPERATOR_EQUAL = 'equal'; - const OPERATOR_GREATERTHAN = 'greaterThan'; - const OPERATOR_GREATERTHANOREQUAL = 'greaterThanOrEqual'; - const OPERATOR_LESSTHAN = 'lessThan'; - const OPERATOR_LESSTHANOREQUAL = 'lessThanOrEqual'; - const OPERATOR_NOTEQUAL = 'notEqual'; - const OPERATOR_CONTAINSTEXT = 'containsText'; - const OPERATOR_NOTCONTAINS = 'notContains'; - const OPERATOR_BETWEEN = 'between'; - - /** - * Condition type - * - * @var int - */ - private $conditionType; - - /** - * Operator type - * - * @var int - */ - private $operatorType; - - /** - * Text - * - * @var string - */ - private $text; - - /** - * Condition - * - * @var string[] - */ - private $condition = array(); - - /** - * Style - * - * @var PHPExcel_Style - */ - private $style; - - /** - * Create a new PHPExcel_Style_Conditional - */ - public function __construct() - { - // Initialise values - $this->conditionType = PHPExcel_Style_Conditional::CONDITION_NONE; - $this->operatorType = PHPExcel_Style_Conditional::OPERATOR_NONE; - $this->text = null; - $this->condition = array(); - $this->style = new PHPExcel_Style(false, true); - } - - /** - * Get Condition type - * - * @return string - */ - public function getConditionType() - { - return $this->conditionType; - } - - /** - * Set Condition type - * - * @param string $pValue PHPExcel_Style_Conditional condition type - * @return PHPExcel_Style_Conditional - */ - public function setConditionType($pValue = PHPExcel_Style_Conditional::CONDITION_NONE) - { - $this->conditionType = $pValue; - return $this; - } - - /** - * Get Operator type - * - * @return string - */ - public function getOperatorType() - { - return $this->operatorType; - } - - /** - * Set Operator type - * - * @param string $pValue PHPExcel_Style_Conditional operator type - * @return PHPExcel_Style_Conditional - */ - public function setOperatorType($pValue = PHPExcel_Style_Conditional::OPERATOR_NONE) - { - $this->operatorType = $pValue; - return $this; - } - - /** - * Get text - * - * @return string - */ - public function getText() - { - return $this->text; - } - - /** - * Set text - * - * @param string $value - * @return PHPExcel_Style_Conditional - */ - public function setText($value = null) - { - $this->text = $value; - return $this; - } - - /** - * Get Condition - * - * @deprecated Deprecated, use getConditions instead - * @return string - */ - public function getCondition() - { - if (isset($this->condition[0])) { - return $this->condition[0]; - } - - return ''; - } - - /** - * Set Condition - * - * @deprecated Deprecated, use setConditions instead - * @param string $pValue Condition - * @return PHPExcel_Style_Conditional - */ - public function setCondition($pValue = '') - { - if (!is_array($pValue)) { - $pValue = array($pValue); - } - - return $this->setConditions($pValue); - } - - /** - * Get Conditions - * - * @return string[] - */ - public function getConditions() - { - return $this->condition; - } - - /** - * Set Conditions - * - * @param string[] $pValue Condition - * @return PHPExcel_Style_Conditional - */ - public function setConditions($pValue) - { - if (!is_array($pValue)) { - $pValue = array($pValue); - } - $this->condition = $pValue; - return $this; - } - - /** - * Add Condition - * - * @param string $pValue Condition - * @return PHPExcel_Style_Conditional - */ - public function addCondition($pValue = '') - { - $this->condition[] = $pValue; - return $this; - } - - /** - * Get Style - * - * @return PHPExcel_Style - */ - public function getStyle() - { - return $this->style; - } - - /** - * Set Style - * - * @param PHPExcel_Style $pValue - * @throws PHPExcel_Exception - * @return PHPExcel_Style_Conditional - */ - public function setStyle(PHPExcel_Style $pValue = null) - { - $this->style = $pValue; - return $this; - } - - /** - * Get hash code - * - * @return string Hash code - */ - public function getHashCode() - { - return md5( - $this->conditionType . - $this->operatorType . - implode(';', $this->condition) . - $this->style->getHashCode() . - __CLASS__ - ); - } - - /** - * Implement PHP __clone to create a deep clone, not just a shallow copy. - */ - public function __clone() - { - $vars = get_object_vars($this); - foreach ($vars as $key => $value) { - if (is_object($value)) { - $this->$key = clone $value; - } else { - $this->$key = $value; - } - } - } -} diff --git a/application/third_party/PHPExcel/Style/Fill.php b/application/third_party/PHPExcel/Style/Fill.php deleted file mode 100644 index 26343ff5..00000000 --- a/application/third_party/PHPExcel/Style/Fill.php +++ /dev/null @@ -1,322 +0,0 @@ -<?php - -/** - * PHPExcel_Style_Fill - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Style - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Style_Fill extends PHPExcel_Style_Supervisor implements PHPExcel_IComparable -{ - /* Fill types */ - const FILL_NONE = 'none'; - const FILL_SOLID = 'solid'; - const FILL_GRADIENT_LINEAR = 'linear'; - const FILL_GRADIENT_PATH = 'path'; - const FILL_PATTERN_DARKDOWN = 'darkDown'; - const FILL_PATTERN_DARKGRAY = 'darkGray'; - const FILL_PATTERN_DARKGRID = 'darkGrid'; - const FILL_PATTERN_DARKHORIZONTAL = 'darkHorizontal'; - const FILL_PATTERN_DARKTRELLIS = 'darkTrellis'; - const FILL_PATTERN_DARKUP = 'darkUp'; - const FILL_PATTERN_DARKVERTICAL = 'darkVertical'; - const FILL_PATTERN_GRAY0625 = 'gray0625'; - const FILL_PATTERN_GRAY125 = 'gray125'; - const FILL_PATTERN_LIGHTDOWN = 'lightDown'; - const FILL_PATTERN_LIGHTGRAY = 'lightGray'; - const FILL_PATTERN_LIGHTGRID = 'lightGrid'; - const FILL_PATTERN_LIGHTHORIZONTAL = 'lightHorizontal'; - const FILL_PATTERN_LIGHTTRELLIS = 'lightTrellis'; - const FILL_PATTERN_LIGHTUP = 'lightUp'; - const FILL_PATTERN_LIGHTVERTICAL = 'lightVertical'; - const FILL_PATTERN_MEDIUMGRAY = 'mediumGray'; - - /** - * Fill type - * - * @var string - */ - protected $fillType = PHPExcel_Style_Fill::FILL_NONE; - - /** - * Rotation - * - * @var double - */ - protected $rotation = 0; - - /** - * Start color - * - * @var PHPExcel_Style_Color - */ - protected $startColor; - - /** - * End color - * - * @var PHPExcel_Style_Color - */ - protected $endColor; - - /** - * Create a new PHPExcel_Style_Fill - * - * @param boolean $isSupervisor Flag indicating if this is a supervisor or not - * Leave this value at default unless you understand exactly what - * its ramifications are - * @param boolean $isConditional Flag indicating if this is a conditional style or not - * Leave this value at default unless you understand exactly what - * its ramifications are - */ - public function __construct($isSupervisor = false, $isConditional = false) - { - // Supervisor? - parent::__construct($isSupervisor); - - // Initialise values - if ($isConditional) { - $this->fillType = null; - } - $this->startColor = new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_WHITE, $isSupervisor, $isConditional); - $this->endColor = new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_BLACK, $isSupervisor, $isConditional); - - // bind parent if we are a supervisor - if ($isSupervisor) { - $this->startColor->bindParent($this, 'startColor'); - $this->endColor->bindParent($this, 'endColor'); - } - } - - /** - * Get the shared style component for the currently active cell in currently active sheet. - * Only used for style supervisor - * - * @return PHPExcel_Style_Fill - */ - public function getSharedComponent() - { - return $this->parent->getSharedComponent()->getFill(); - } - - /** - * Build style array from subcomponents - * - * @param array $array - * @return array - */ - public function getStyleArray($array) - { - return array('fill' => $array); - } - - /** - * Apply styles from array - * - * <code> - * $objPHPExcel->getActiveSheet()->getStyle('B2')->getFill()->applyFromArray( - * array( - * 'type' => PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR, - * 'rotation' => 0, - * 'startcolor' => array( - * 'rgb' => '000000' - * ), - * 'endcolor' => array( - * 'argb' => 'FFFFFFFF' - * ) - * ) - * ); - * </code> - * - * @param array $pStyles Array containing style information - * @throws PHPExcel_Exception - * @return PHPExcel_Style_Fill - */ - public function applyFromArray($pStyles = null) - { - if (is_array($pStyles)) { - if ($this->isSupervisor) { - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($this->getStyleArray($pStyles)); - } else { - if (array_key_exists('type', $pStyles)) { - $this->setFillType($pStyles['type']); - } - if (array_key_exists('rotation', $pStyles)) { - $this->setRotation($pStyles['rotation']); - } - if (array_key_exists('startcolor', $pStyles)) { - $this->getStartColor()->applyFromArray($pStyles['startcolor']); - } - if (array_key_exists('endcolor', $pStyles)) { - $this->getEndColor()->applyFromArray($pStyles['endcolor']); - } - if (array_key_exists('color', $pStyles)) { - $this->getStartColor()->applyFromArray($pStyles['color']); - } - } - } else { - throw new PHPExcel_Exception("Invalid style array passed."); - } - return $this; - } - - /** - * Get Fill Type - * - * @return string - */ - public function getFillType() - { - if ($this->isSupervisor) { - return $this->getSharedComponent()->getFillType(); - } - return $this->fillType; - } - - /** - * Set Fill Type - * - * @param string $pValue PHPExcel_Style_Fill fill type - * @return PHPExcel_Style_Fill - */ - public function setFillType($pValue = PHPExcel_Style_Fill::FILL_NONE) - { - if ($this->isSupervisor) { - $styleArray = $this->getStyleArray(array('type' => $pValue)); - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); - } else { - $this->fillType = $pValue; - } - return $this; - } - - /** - * Get Rotation - * - * @return double - */ - public function getRotation() - { - if ($this->isSupervisor) { - return $this->getSharedComponent()->getRotation(); - } - return $this->rotation; - } - - /** - * Set Rotation - * - * @param double $pValue - * @return PHPExcel_Style_Fill - */ - public function setRotation($pValue = 0) - { - if ($this->isSupervisor) { - $styleArray = $this->getStyleArray(array('rotation' => $pValue)); - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); - } else { - $this->rotation = $pValue; - } - return $this; - } - - /** - * Get Start Color - * - * @return PHPExcel_Style_Color - */ - public function getStartColor() - { - return $this->startColor; - } - - /** - * Set Start Color - * - * @param PHPExcel_Style_Color $pValue - * @throws PHPExcel_Exception - * @return PHPExcel_Style_Fill - */ - public function setStartColor(PHPExcel_Style_Color $pValue = null) - { - // make sure parameter is a real color and not a supervisor - $color = $pValue->getIsSupervisor() ? $pValue->getSharedComponent() : $pValue; - - if ($this->isSupervisor) { - $styleArray = $this->getStartColor()->getStyleArray(array('argb' => $color->getARGB())); - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); - } else { - $this->startColor = $color; - } - return $this; - } - - /** - * Get End Color - * - * @return PHPExcel_Style_Color - */ - public function getEndColor() - { - return $this->endColor; - } - - /** - * Set End Color - * - * @param PHPExcel_Style_Color $pValue - * @throws PHPExcel_Exception - * @return PHPExcel_Style_Fill - */ - public function setEndColor(PHPExcel_Style_Color $pValue = null) - { - // make sure parameter is a real color and not a supervisor - $color = $pValue->getIsSupervisor() ? $pValue->getSharedComponent() : $pValue; - - if ($this->isSupervisor) { - $styleArray = $this->getEndColor()->getStyleArray(array('argb' => $color->getARGB())); - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); - } else { - $this->endColor = $color; - } - return $this; - } - - /** - * Get hash code - * - * @return string Hash code - */ - public function getHashCode() - { - if ($this->isSupervisor) { - return $this->getSharedComponent()->getHashCode(); - } - return md5( - $this->getFillType() . - $this->getRotation() . - $this->getStartColor()->getHashCode() . - $this->getEndColor()->getHashCode() . - __CLASS__ - ); - } -} diff --git a/application/third_party/PHPExcel/Style/Font.php b/application/third_party/PHPExcel/Style/Font.php deleted file mode 100644 index 9566e1df..00000000 --- a/application/third_party/PHPExcel/Style/Font.php +++ /dev/null @@ -1,543 +0,0 @@ -<?php - -/** - * PHPExcel_Style_Font - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Style - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Style_Font extends PHPExcel_Style_Supervisor implements PHPExcel_IComparable -{ - /* Underline types */ - const UNDERLINE_NONE = 'none'; - const UNDERLINE_DOUBLE = 'double'; - const UNDERLINE_DOUBLEACCOUNTING = 'doubleAccounting'; - const UNDERLINE_SINGLE = 'single'; - const UNDERLINE_SINGLEACCOUNTING = 'singleAccounting'; - - /** - * Font Name - * - * @var string - */ - protected $name = 'Calibri'; - - /** - * Font Size - * - * @var float - */ - protected $size = 11; - - /** - * Bold - * - * @var boolean - */ - protected $bold = false; - - /** - * Italic - * - * @var boolean - */ - protected $italic = false; - - /** - * Superscript - * - * @var boolean - */ - protected $superScript = false; - - /** - * Subscript - * - * @var boolean - */ - protected $subScript = false; - - /** - * Underline - * - * @var string - */ - protected $underline = self::UNDERLINE_NONE; - - /** - * Strikethrough - * - * @var boolean - */ - protected $strikethrough = false; - - /** - * Foreground color - * - * @var PHPExcel_Style_Color - */ - protected $color; - - /** - * Create a new PHPExcel_Style_Font - * - * @param boolean $isSupervisor Flag indicating if this is a supervisor or not - * Leave this value at default unless you understand exactly what - * its ramifications are - * @param boolean $isConditional Flag indicating if this is a conditional style or not - * Leave this value at default unless you understand exactly what - * its ramifications are - */ - public function __construct($isSupervisor = false, $isConditional = false) - { - // Supervisor? - parent::__construct($isSupervisor); - - // Initialise values - if ($isConditional) { - $this->name = null; - $this->size = null; - $this->bold = null; - $this->italic = null; - $this->superScript = null; - $this->subScript = null; - $this->underline = null; - $this->strikethrough = null; - $this->color = new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_BLACK, $isSupervisor, $isConditional); - } else { - $this->color = new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_BLACK, $isSupervisor); - } - // bind parent if we are a supervisor - if ($isSupervisor) { - $this->color->bindParent($this, 'color'); - } - } - - /** - * Get the shared style component for the currently active cell in currently active sheet. - * Only used for style supervisor - * - * @return PHPExcel_Style_Font - */ - public function getSharedComponent() - { - return $this->parent->getSharedComponent()->getFont(); - } - - /** - * Build style array from subcomponents - * - * @param array $array - * @return array - */ - public function getStyleArray($array) - { - return array('font' => $array); - } - - /** - * Apply styles from array - * - * <code> - * $objPHPExcel->getActiveSheet()->getStyle('B2')->getFont()->applyFromArray( - * array( - * 'name' => 'Arial', - * 'bold' => TRUE, - * 'italic' => FALSE, - * 'underline' => PHPExcel_Style_Font::UNDERLINE_DOUBLE, - * 'strike' => FALSE, - * 'color' => array( - * 'rgb' => '808080' - * ) - * ) - * ); - * </code> - * - * @param array $pStyles Array containing style information - * @throws PHPExcel_Exception - * @return PHPExcel_Style_Font - */ - public function applyFromArray($pStyles = null) - { - if (is_array($pStyles)) { - if ($this->isSupervisor) { - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($this->getStyleArray($pStyles)); - } else { - if (array_key_exists('name', $pStyles)) { - $this->setName($pStyles['name']); - } - if (array_key_exists('bold', $pStyles)) { - $this->setBold($pStyles['bold']); - } - if (array_key_exists('italic', $pStyles)) { - $this->setItalic($pStyles['italic']); - } - if (array_key_exists('superScript', $pStyles)) { - $this->setSuperScript($pStyles['superScript']); - } - if (array_key_exists('subScript', $pStyles)) { - $this->setSubScript($pStyles['subScript']); - } - if (array_key_exists('underline', $pStyles)) { - $this->setUnderline($pStyles['underline']); - } - if (array_key_exists('strike', $pStyles)) { - $this->setStrikethrough($pStyles['strike']); - } - if (array_key_exists('color', $pStyles)) { - $this->getColor()->applyFromArray($pStyles['color']); - } - if (array_key_exists('size', $pStyles)) { - $this->setSize($pStyles['size']); - } - } - } else { - throw new PHPExcel_Exception("Invalid style array passed."); - } - return $this; - } - - /** - * Get Name - * - * @return string - */ - public function getName() - { - if ($this->isSupervisor) { - return $this->getSharedComponent()->getName(); - } - return $this->name; - } - - /** - * Set Name - * - * @param string $pValue - * @return PHPExcel_Style_Font - */ - public function setName($pValue = 'Calibri') - { - if ($pValue == '') { - $pValue = 'Calibri'; - } - if ($this->isSupervisor) { - $styleArray = $this->getStyleArray(array('name' => $pValue)); - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); - } else { - $this->name = $pValue; - } - return $this; - } - - /** - * Get Size - * - * @return double - */ - public function getSize() - { - if ($this->isSupervisor) { - return $this->getSharedComponent()->getSize(); - } - return $this->size; - } - - /** - * Set Size - * - * @param double $pValue - * @return PHPExcel_Style_Font - */ - public function setSize($pValue = 10) - { - if ($pValue == '') { - $pValue = 10; - } - if ($this->isSupervisor) { - $styleArray = $this->getStyleArray(array('size' => $pValue)); - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); - } else { - $this->size = $pValue; - } - return $this; - } - - /** - * Get Bold - * - * @return boolean - */ - public function getBold() - { - if ($this->isSupervisor) { - return $this->getSharedComponent()->getBold(); - } - return $this->bold; - } - - /** - * Set Bold - * - * @param boolean $pValue - * @return PHPExcel_Style_Font - */ - public function setBold($pValue = false) - { - if ($pValue == '') { - $pValue = false; - } - if ($this->isSupervisor) { - $styleArray = $this->getStyleArray(array('bold' => $pValue)); - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); - } else { - $this->bold = $pValue; - } - return $this; - } - - /** - * Get Italic - * - * @return boolean - */ - public function getItalic() - { - if ($this->isSupervisor) { - return $this->getSharedComponent()->getItalic(); - } - return $this->italic; - } - - /** - * Set Italic - * - * @param boolean $pValue - * @return PHPExcel_Style_Font - */ - public function setItalic($pValue = false) - { - if ($pValue == '') { - $pValue = false; - } - if ($this->isSupervisor) { - $styleArray = $this->getStyleArray(array('italic' => $pValue)); - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); - } else { - $this->italic = $pValue; - } - return $this; - } - - /** - * Get SuperScript - * - * @return boolean - */ - public function getSuperScript() - { - if ($this->isSupervisor) { - return $this->getSharedComponent()->getSuperScript(); - } - return $this->superScript; - } - - /** - * Set SuperScript - * - * @param boolean $pValue - * @return PHPExcel_Style_Font - */ - public function setSuperScript($pValue = false) - { - if ($pValue == '') { - $pValue = false; - } - if ($this->isSupervisor) { - $styleArray = $this->getStyleArray(array('superScript' => $pValue)); - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); - } else { - $this->superScript = $pValue; - $this->subScript = !$pValue; - } - return $this; - } - - /** - * Get SubScript - * - * @return boolean - */ - public function getSubScript() - { - if ($this->isSupervisor) { - return $this->getSharedComponent()->getSubScript(); - } - return $this->subScript; - } - - /** - * Set SubScript - * - * @param boolean $pValue - * @return PHPExcel_Style_Font - */ - public function setSubScript($pValue = false) - { - if ($pValue == '') { - $pValue = false; - } - if ($this->isSupervisor) { - $styleArray = $this->getStyleArray(array('subScript' => $pValue)); - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); - } else { - $this->subScript = $pValue; - $this->superScript = !$pValue; - } - return $this; - } - - /** - * Get Underline - * - * @return string - */ - public function getUnderline() - { - if ($this->isSupervisor) { - return $this->getSharedComponent()->getUnderline(); - } - return $this->underline; - } - - /** - * Set Underline - * - * @param string|boolean $pValue PHPExcel_Style_Font underline type - * If a boolean is passed, then TRUE equates to UNDERLINE_SINGLE, - * false equates to UNDERLINE_NONE - * @return PHPExcel_Style_Font - */ - public function setUnderline($pValue = self::UNDERLINE_NONE) - { - if (is_bool($pValue)) { - $pValue = ($pValue) ? self::UNDERLINE_SINGLE : self::UNDERLINE_NONE; - } elseif ($pValue == '') { - $pValue = self::UNDERLINE_NONE; - } - if ($this->isSupervisor) { - $styleArray = $this->getStyleArray(array('underline' => $pValue)); - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); - } else { - $this->underline = $pValue; - } - return $this; - } - - /** - * Get Strikethrough - * - * @return boolean - */ - public function getStrikethrough() - { - if ($this->isSupervisor) { - return $this->getSharedComponent()->getStrikethrough(); - } - return $this->strikethrough; - } - - /** - * Set Strikethrough - * - * @param boolean $pValue - * @return PHPExcel_Style_Font - */ - public function setStrikethrough($pValue = false) - { - if ($pValue == '') { - $pValue = false; - } - if ($this->isSupervisor) { - $styleArray = $this->getStyleArray(array('strike' => $pValue)); - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); - } else { - $this->strikethrough = $pValue; - } - return $this; - } - - /** - * Get Color - * - * @return PHPExcel_Style_Color - */ - public function getColor() - { - return $this->color; - } - - /** - * Set Color - * - * @param PHPExcel_Style_Color $pValue - * @throws PHPExcel_Exception - * @return PHPExcel_Style_Font - */ - public function setColor(PHPExcel_Style_Color $pValue = null) - { - // make sure parameter is a real color and not a supervisor - $color = $pValue->getIsSupervisor() ? $pValue->getSharedComponent() : $pValue; - - if ($this->isSupervisor) { - $styleArray = $this->getColor()->getStyleArray(array('argb' => $color->getARGB())); - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); - } else { - $this->color = $color; - } - return $this; - } - - /** - * Get hash code - * - * @return string Hash code - */ - public function getHashCode() - { - if ($this->isSupervisor) { - return $this->getSharedComponent()->getHashCode(); - } - return md5( - $this->name . - $this->size . - ($this->bold ? 't' : 'f') . - ($this->italic ? 't' : 'f') . - ($this->superScript ? 't' : 'f') . - ($this->subScript ? 't' : 'f') . - $this->underline . - ($this->strikethrough ? 't' : 'f') . - $this->color->getHashCode() . - __CLASS__ - ); - } -} diff --git a/application/third_party/PHPExcel/Style/NumberFormat.php b/application/third_party/PHPExcel/Style/NumberFormat.php deleted file mode 100644 index 1b72cda9..00000000 --- a/application/third_party/PHPExcel/Style/NumberFormat.php +++ /dev/null @@ -1,751 +0,0 @@ -<?php - -/** - * PHPExcel_Style_NumberFormat - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Style - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Style_NumberFormat extends PHPExcel_Style_Supervisor implements PHPExcel_IComparable -{ - /* Pre-defined formats */ - const FORMAT_GENERAL = 'General'; - - const FORMAT_TEXT = '@'; - - const FORMAT_NUMBER = '0'; - const FORMAT_NUMBER_00 = '0.00'; - const FORMAT_NUMBER_COMMA_SEPARATED1 = '#,##0.00'; - const FORMAT_NUMBER_COMMA_SEPARATED2 = '#,##0.00_-'; - - const FORMAT_PERCENTAGE = '0%'; - const FORMAT_PERCENTAGE_00 = '0.00%'; - - const FORMAT_DATE_YYYYMMDD2 = 'yyyy-mm-dd'; - const FORMAT_DATE_YYYYMMDD = 'yy-mm-dd'; - const FORMAT_DATE_DDMMYYYY = 'dd/mm/yy'; - const FORMAT_DATE_DMYSLASH = 'd/m/y'; - const FORMAT_DATE_DMYMINUS = 'd-m-y'; - const FORMAT_DATE_DMMINUS = 'd-m'; - const FORMAT_DATE_MYMINUS = 'm-y'; - const FORMAT_DATE_XLSX14 = 'mm-dd-yy'; - const FORMAT_DATE_XLSX15 = 'd-mmm-yy'; - const FORMAT_DATE_XLSX16 = 'd-mmm'; - const FORMAT_DATE_XLSX17 = 'mmm-yy'; - const FORMAT_DATE_XLSX22 = 'm/d/yy h:mm'; - const FORMAT_DATE_DATETIME = 'd/m/y h:mm'; - const FORMAT_DATE_TIME1 = 'h:mm AM/PM'; - const FORMAT_DATE_TIME2 = 'h:mm:ss AM/PM'; - const FORMAT_DATE_TIME3 = 'h:mm'; - const FORMAT_DATE_TIME4 = 'h:mm:ss'; - const FORMAT_DATE_TIME5 = 'mm:ss'; - const FORMAT_DATE_TIME6 = 'h:mm:ss'; - const FORMAT_DATE_TIME7 = 'i:s.S'; - const FORMAT_DATE_TIME8 = 'h:mm:ss;@'; - const FORMAT_DATE_YYYYMMDDSLASH = 'yy/mm/dd;@'; - - const FORMAT_CURRENCY_USD_SIMPLE = '"$"#,##0.00_-'; - const FORMAT_CURRENCY_USD = '$#,##0_-'; - const FORMAT_CURRENCY_EUR_SIMPLE = '[$EUR ]#,##0.00_-'; - - /** - * Excel built-in number formats - * - * @var array - */ - protected static $builtInFormats; - - /** - * Excel built-in number formats (flipped, for faster lookups) - * - * @var array - */ - protected static $flippedBuiltInFormats; - - /** - * Format Code - * - * @var string - */ - protected $formatCode = PHPExcel_Style_NumberFormat::FORMAT_GENERAL; - - /** - * Built-in format Code - * - * @var string - */ - protected $builtInFormatCode = 0; - - /** - * Create a new PHPExcel_Style_NumberFormat - * - * @param boolean $isSupervisor Flag indicating if this is a supervisor or not - * Leave this value at default unless you understand exactly what - * its ramifications are - * @param boolean $isConditional Flag indicating if this is a conditional style or not - * Leave this value at default unless you understand exactly what - * its ramifications are - */ - public function __construct($isSupervisor = false, $isConditional = false) - { - // Supervisor? - parent::__construct($isSupervisor); - - if ($isConditional) { - $this->formatCode = null; - $this->builtInFormatCode = false; - } - } - - /** - * Get the shared style component for the currently active cell in currently active sheet. - * Only used for style supervisor - * - * @return PHPExcel_Style_NumberFormat - */ - public function getSharedComponent() - { - return $this->parent->getSharedComponent()->getNumberFormat(); - } - - /** - * Build style array from subcomponents - * - * @param array $array - * @return array - */ - public function getStyleArray($array) - { - return array('numberformat' => $array); - } - - /** - * Apply styles from array - * - * <code> - * $objPHPExcel->getActiveSheet()->getStyle('B2')->getNumberFormat()->applyFromArray( - * array( - * 'code' => PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE - * ) - * ); - * </code> - * - * @param array $pStyles Array containing style information - * @throws PHPExcel_Exception - * @return PHPExcel_Style_NumberFormat - */ - public function applyFromArray($pStyles = null) - { - if (is_array($pStyles)) { - if ($this->isSupervisor) { - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($this->getStyleArray($pStyles)); - } else { - if (array_key_exists('code', $pStyles)) { - $this->setFormatCode($pStyles['code']); - } - } - } else { - throw new PHPExcel_Exception("Invalid style array passed."); - } - return $this; - } - - /** - * Get Format Code - * - * @return string - */ - public function getFormatCode() - { - if ($this->isSupervisor) { - return $this->getSharedComponent()->getFormatCode(); - } - if ($this->builtInFormatCode !== false) { - return self::builtInFormatCode($this->builtInFormatCode); - } - return $this->formatCode; - } - - /** - * Set Format Code - * - * @param string $pValue - * @return PHPExcel_Style_NumberFormat - */ - public function setFormatCode($pValue = PHPExcel_Style_NumberFormat::FORMAT_GENERAL) - { - if ($pValue == '') { - $pValue = PHPExcel_Style_NumberFormat::FORMAT_GENERAL; - } - if ($this->isSupervisor) { - $styleArray = $this->getStyleArray(array('code' => $pValue)); - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); - } else { - $this->formatCode = $pValue; - $this->builtInFormatCode = self::builtInFormatCodeIndex($pValue); - } - return $this; - } - - /** - * Get Built-In Format Code - * - * @return int - */ - public function getBuiltInFormatCode() - { - if ($this->isSupervisor) { - return $this->getSharedComponent()->getBuiltInFormatCode(); - } - return $this->builtInFormatCode; - } - - /** - * Set Built-In Format Code - * - * @param int $pValue - * @return PHPExcel_Style_NumberFormat - */ - public function setBuiltInFormatCode($pValue = 0) - { - - if ($this->isSupervisor) { - $styleArray = $this->getStyleArray(array('code' => self::builtInFormatCode($pValue))); - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); - } else { - $this->builtInFormatCode = $pValue; - $this->formatCode = self::builtInFormatCode($pValue); - } - return $this; - } - - /** - * Fill built-in format codes - */ - private static function fillBuiltInFormatCodes() - { - // [MS-OI29500: Microsoft Office Implementation Information for ISO/IEC-29500 Standard Compliance] - // 18.8.30. numFmt (Number Format) - // - // The ECMA standard defines built-in format IDs - // 14: "mm-dd-yy" - // 22: "m/d/yy h:mm" - // 37: "#,##0 ;(#,##0)" - // 38: "#,##0 ;[Red](#,##0)" - // 39: "#,##0.00;(#,##0.00)" - // 40: "#,##0.00;[Red](#,##0.00)" - // 47: "mmss.0" - // KOR fmt 55: "yyyy-mm-dd" - // Excel defines built-in format IDs - // 14: "m/d/yyyy" - // 22: "m/d/yyyy h:mm" - // 37: "#,##0_);(#,##0)" - // 38: "#,##0_);[Red](#,##0)" - // 39: "#,##0.00_);(#,##0.00)" - // 40: "#,##0.00_);[Red](#,##0.00)" - // 47: "mm:ss.0" - // KOR fmt 55: "yyyy/mm/dd" - - // Built-in format codes - if (is_null(self::$builtInFormats)) { - self::$builtInFormats = array(); - - // General - self::$builtInFormats[0] = PHPExcel_Style_NumberFormat::FORMAT_GENERAL; - self::$builtInFormats[1] = '0'; - self::$builtInFormats[2] = '0.00'; - self::$builtInFormats[3] = '#,##0'; - self::$builtInFormats[4] = '#,##0.00'; - - self::$builtInFormats[9] = '0%'; - self::$builtInFormats[10] = '0.00%'; - self::$builtInFormats[11] = '0.00E+00'; - self::$builtInFormats[12] = '# ?/?'; - self::$builtInFormats[13] = '# ??/??'; - self::$builtInFormats[14] = 'm/d/yyyy'; // Despite ECMA 'mm-dd-yy'; - self::$builtInFormats[15] = 'd-mmm-yy'; - self::$builtInFormats[16] = 'd-mmm'; - self::$builtInFormats[17] = 'mmm-yy'; - self::$builtInFormats[18] = 'h:mm AM/PM'; - self::$builtInFormats[19] = 'h:mm:ss AM/PM'; - self::$builtInFormats[20] = 'h:mm'; - self::$builtInFormats[21] = 'h:mm:ss'; - self::$builtInFormats[22] = 'm/d/yyyy h:mm'; // Despite ECMA 'm/d/yy h:mm'; - - self::$builtInFormats[37] = '#,##0_);(#,##0)'; // Despite ECMA '#,##0 ;(#,##0)'; - self::$builtInFormats[38] = '#,##0_);[Red](#,##0)'; // Despite ECMA '#,##0 ;[Red](#,##0)'; - self::$builtInFormats[39] = '#,##0.00_);(#,##0.00)'; // Despite ECMA '#,##0.00;(#,##0.00)'; - self::$builtInFormats[40] = '#,##0.00_);[Red](#,##0.00)'; // Despite ECMA '#,##0.00;[Red](#,##0.00)'; - - self::$builtInFormats[44] = '_("$"* #,##0.00_);_("$"* \(#,##0.00\);_("$"* "-"??_);_(@_)'; - self::$builtInFormats[45] = 'mm:ss'; - self::$builtInFormats[46] = '[h]:mm:ss'; - self::$builtInFormats[47] = 'mm:ss.0'; // Despite ECMA 'mmss.0'; - self::$builtInFormats[48] = '##0.0E+0'; - self::$builtInFormats[49] = '@'; - - // CHT - self::$builtInFormats[27] = '[$-404]e/m/d'; - self::$builtInFormats[30] = 'm/d/yy'; - self::$builtInFormats[36] = '[$-404]e/m/d'; - self::$builtInFormats[50] = '[$-404]e/m/d'; - self::$builtInFormats[57] = '[$-404]e/m/d'; - - // THA - self::$builtInFormats[59] = 't0'; - self::$builtInFormats[60] = 't0.00'; - self::$builtInFormats[61] = 't#,##0'; - self::$builtInFormats[62] = 't#,##0.00'; - self::$builtInFormats[67] = 't0%'; - self::$builtInFormats[68] = 't0.00%'; - self::$builtInFormats[69] = 't# ?/?'; - self::$builtInFormats[70] = 't# ??/??'; - - // Flip array (for faster lookups) - self::$flippedBuiltInFormats = array_flip(self::$builtInFormats); - } - } - - /** - * Get built-in format code - * - * @param int $pIndex - * @return string - */ - public static function builtInFormatCode($pIndex) - { - // Clean parameter - $pIndex = intval($pIndex); - - // Ensure built-in format codes are available - self::fillBuiltInFormatCodes(); - // Lookup format code - if (isset(self::$builtInFormats[$pIndex])) { - return self::$builtInFormats[$pIndex]; - } - - return ''; - } - - /** - * Get built-in format code index - * - * @param string $formatCode - * @return int|boolean - */ - public static function builtInFormatCodeIndex($formatCode) - { - // Ensure built-in format codes are available - self::fillBuiltInFormatCodes(); - - // Lookup format code - if (isset(self::$flippedBuiltInFormats[$formatCode])) { - return self::$flippedBuiltInFormats[$formatCode]; - } - - return false; - } - - /** - * Get hash code - * - * @return string Hash code - */ - public function getHashCode() - { - if ($this->isSupervisor) { - return $this->getSharedComponent()->getHashCode(); - } - return md5( - $this->formatCode . - $this->builtInFormatCode . - __CLASS__ - ); - } - - /** - * Search/replace values to convert Excel date/time format masks to PHP format masks - * - * @var array - */ - private static $dateFormatReplacements = array( - // first remove escapes related to non-format characters - '\\' => '', - // 12-hour suffix - 'am/pm' => 'A', - // 4-digit year - 'e' => 'Y', - 'yyyy' => 'Y', - // 2-digit year - 'yy' => 'y', - // first letter of month - no php equivalent - 'mmmmm' => 'M', - // full month name - 'mmmm' => 'F', - // short month name - 'mmm' => 'M', - // mm is minutes if time, but can also be month w/leading zero - // so we try to identify times be the inclusion of a : separator in the mask - // It isn't perfect, but the best way I know how - ':mm' => ':i', - 'mm:' => 'i:', - // month leading zero - 'mm' => 'm', - // month no leading zero - 'm' => 'n', - // full day of week name - 'dddd' => 'l', - // short day of week name - 'ddd' => 'D', - // days leading zero - 'dd' => 'd', - // days no leading zero - 'd' => 'j', - // seconds - 'ss' => 's', - // fractional seconds - no php equivalent - '.s' => '' - ); - /** - * Search/replace values to convert Excel date/time format masks hours to PHP format masks (24 hr clock) - * - * @var array - */ - private static $dateFormatReplacements24 = array( - 'hh' => 'H', - 'h' => 'G' - ); - /** - * Search/replace values to convert Excel date/time format masks hours to PHP format masks (12 hr clock) - * - * @var array - */ - private static $dateFormatReplacements12 = array( - 'hh' => 'h', - 'h' => 'g' - ); - - private static function setLowercaseCallback($matches) { - return mb_strtolower($matches[0]); - } - - private static function escapeQuotesCallback($matches) { - return '\\' . implode('\\', str_split($matches[1])); - } - - private static function formatAsDate(&$value, &$format) - { - // strip off first part containing e.g. [$-F800] or [$USD-409] - // general syntax: [$<Currency string>-<language info>] - // language info is in hexadecimal - $format = preg_replace('/^(\[\$[A-Z]*-[0-9A-F]*\])/i', '', $format); - - // OpenOffice.org uses upper-case number formats, e.g. 'YYYY', convert to lower-case; - // but we don't want to change any quoted strings - $format = preg_replace_callback('/(?:^|")([^"]*)(?:$|")/', array('self', 'setLowercaseCallback'), $format); - - // Only process the non-quoted blocks for date format characters - $blocks = explode('"', $format); - foreach($blocks as $key => &$block) { - if ($key % 2 == 0) { - $block = strtr($block, self::$dateFormatReplacements); - if (!strpos($block, 'A')) { - // 24-hour time format - $block = strtr($block, self::$dateFormatReplacements24); - } else { - // 12-hour time format - $block = strtr($block, self::$dateFormatReplacements12); - } - } - } - $format = implode('"', $blocks); - - // escape any quoted characters so that DateTime format() will render them correctly - $format = preg_replace_callback('/"(.*)"/U', array('self', 'escapeQuotesCallback'), $format); - - $dateObj = PHPExcel_Shared_Date::ExcelToPHPObject($value); - $value = $dateObj->format($format); - } - - private static function formatAsPercentage(&$value, &$format) - { - if ($format === self::FORMAT_PERCENTAGE) { - $value = round((100 * $value), 0) . '%'; - } else { - if (preg_match('/\.[#0]+/i', $format, $m)) { - $s = substr($m[0], 0, 1) . (strlen($m[0]) - 1); - $format = str_replace($m[0], $s, $format); - } - if (preg_match('/^[#0]+/', $format, $m)) { - $format = str_replace($m[0], strlen($m[0]), $format); - } - $format = '%' . str_replace('%', 'f%%', $format); - - $value = sprintf($format, 100 * $value); - } - } - - private static function formatAsFraction(&$value, &$format) - { - $sign = ($value < 0) ? '-' : ''; - - $integerPart = floor(abs($value)); - $decimalPart = trim(fmod(abs($value), 1), '0.'); - $decimalLength = strlen($decimalPart); - $decimalDivisor = pow(10, $decimalLength); - - $GCD = PHPExcel_Calculation_MathTrig::GCD($decimalPart, $decimalDivisor); - - $adjustedDecimalPart = $decimalPart/$GCD; - $adjustedDecimalDivisor = $decimalDivisor/$GCD; - - if ((strpos($format, '0') !== false) || (strpos($format, '#') !== false) || (substr($format, 0, 3) == '? ?')) { - if ($integerPart == 0) { - $integerPart = ''; - } - $value = "$sign$integerPart $adjustedDecimalPart/$adjustedDecimalDivisor"; - } else { - $adjustedDecimalPart += $integerPart * $adjustedDecimalDivisor; - $value = "$sign$adjustedDecimalPart/$adjustedDecimalDivisor"; - } - } - - private static function complexNumberFormatMask($number, $mask, $level = 0) - { - $sign = ($number < 0.0); - $number = abs($number); - if (strpos($mask, '.') !== false) { - $numbers = explode('.', $number . '.0'); - $masks = explode('.', $mask . '.0'); - $result1 = self::complexNumberFormatMask($numbers[0], $masks[0], 1); - $result2 = strrev(self::complexNumberFormatMask(strrev($numbers[1]), strrev($masks[1]), 1)); - return (($sign) ? '-' : '') . $result1 . '.' . $result2; - } - - $r = preg_match_all('/0+/', $mask, $result, PREG_OFFSET_CAPTURE); - if ($r > 1) { - $result = array_reverse($result[0]); - - foreach ($result as $block) { - $divisor = 1 . $block[0]; - $size = strlen($block[0]); - $offset = $block[1]; - - $blockValue = sprintf( - '%0' . $size . 'd', - fmod($number, $divisor) - ); - $number = floor($number / $divisor); - $mask = substr_replace($mask, $blockValue, $offset, $size); - } - if ($number > 0) { - $mask = substr_replace($mask, $number, $offset, 0); - } - $result = $mask; - } else { - $result = $number; - } - - return (($sign) ? '-' : '') . $result; - } - - /** - * Convert a value in a pre-defined format to a PHP string - * - * @param mixed $value Value to format - * @param string $format Format code - * @param array $callBack Callback function for additional formatting of string - * @return string Formatted string - */ - public static function toFormattedString($value = '0', $format = PHPExcel_Style_NumberFormat::FORMAT_GENERAL, $callBack = null) - { - // For now we do not treat strings although section 4 of a format code affects strings - if (!is_numeric($value)) { - return $value; - } - - // For 'General' format code, we just pass the value although this is not entirely the way Excel does it, - // it seems to round numbers to a total of 10 digits. - if (($format === PHPExcel_Style_NumberFormat::FORMAT_GENERAL) || ($format === PHPExcel_Style_NumberFormat::FORMAT_TEXT)) { - return $value; - } - - // Convert any other escaped characters to quoted strings, e.g. (\T to "T") - $format = preg_replace('/(\\\(.))(?=(?:[^"]|"[^"]*")*$)/u', '"${2}"', $format); - - // Get the sections, there can be up to four sections, separated with a semi-colon (but only if not a quoted literal) - $sections = preg_split('/(;)(?=(?:[^"]|"[^"]*")*$)/u', $format); - - // Extract the relevant section depending on whether number is positive, negative, or zero? - // Text not supported yet. - // Here is how the sections apply to various values in Excel: - // 1 section: [POSITIVE/NEGATIVE/ZERO/TEXT] - // 2 sections: [POSITIVE/ZERO/TEXT] [NEGATIVE] - // 3 sections: [POSITIVE/TEXT] [NEGATIVE] [ZERO] - // 4 sections: [POSITIVE] [NEGATIVE] [ZERO] [TEXT] - switch (count($sections)) { - case 1: - $format = $sections[0]; - break; - case 2: - $format = ($value >= 0) ? $sections[0] : $sections[1]; - $value = abs($value); // Use the absolute value - break; - case 3: - $format = ($value > 0) ? - $sections[0] : ( ($value < 0) ? - $sections[1] : $sections[2]); - $value = abs($value); // Use the absolute value - break; - case 4: - $format = ($value > 0) ? - $sections[0] : ( ($value < 0) ? - $sections[1] : $sections[2]); - $value = abs($value); // Use the absolute value - break; - default: - // something is wrong, just use first section - $format = $sections[0]; - break; - } - - // In Excel formats, "_" is used to add spacing, - // The following character indicates the size of the spacing, which we can't do in HTML, so we just use a standard space - $format = preg_replace('/_./', ' ', $format); - - // Save format with color information for later use below - $formatColor = $format; - - // Strip color information - $color_regex = '/^\\[[a-zA-Z]+\\]/'; - $format = preg_replace($color_regex, '', $format); - - // Let's begin inspecting the format and converting the value to a formatted string - - // Check for date/time characters (not inside quotes) - if (preg_match('/(\[\$[A-Z]*-[0-9A-F]*\])*[hmsdy](?=(?:[^"]|"[^"]*")*$)/miu', $format, $matches)) { - // datetime format - self::formatAsDate($value, $format); - } elseif (preg_match('/%$/', $format)) { - // % number format - self::formatAsPercentage($value, $format); - } else { - if ($format === self::FORMAT_CURRENCY_EUR_SIMPLE) { - $value = 'EUR ' . sprintf('%1.2f', $value); - } else { - // Some non-number strings are quoted, so we'll get rid of the quotes, likewise any positional * symbols - $format = str_replace(array('"', '*'), '', $format); - - // Find out if we need thousands separator - // This is indicated by a comma enclosed by a digit placeholder: - // #,# or 0,0 - $useThousands = preg_match('/(#,#|0,0)/', $format); - if ($useThousands) { - $format = preg_replace('/0,0/', '00', $format); - $format = preg_replace('/#,#/', '##', $format); - } - - // Scale thousands, millions,... - // This is indicated by a number of commas after a digit placeholder: - // #, or 0.0,, - $scale = 1; // same as no scale - $matches = array(); - if (preg_match('/(#|0)(,+)/', $format, $matches)) { - $scale = pow(1000, strlen($matches[2])); - - // strip the commas - $format = preg_replace('/0,+/', '0', $format); - $format = preg_replace('/#,+/', '#', $format); - } - - if (preg_match('/#?.*\?\/\?/', $format, $m)) { - //echo 'Format mask is fractional '.$format.' <br />'; - if ($value != (int)$value) { - self::formatAsFraction($value, $format); - } - - } else { - // Handle the number itself - - // scale number - $value = $value / $scale; - - // Strip # - $format = preg_replace('/\\#/', '0', $format); - - $n = "/\[[^\]]+\]/"; - $m = preg_replace($n, '', $format); - $number_regex = "/(0+)(\.?)(0*)/"; - if (preg_match($number_regex, $m, $matches)) { - $left = $matches[1]; - $dec = $matches[2]; - $right = $matches[3]; - - // minimun width of formatted number (including dot) - $minWidth = strlen($left) + strlen($dec) + strlen($right); - if ($useThousands) { - $value = number_format( - $value, - strlen($right), - PHPExcel_Shared_String::getDecimalSeparator(), - PHPExcel_Shared_String::getThousandsSeparator() - ); - $value = preg_replace($number_regex, $value, $format); - } else { - if (preg_match('/[0#]E[+-]0/i', $format)) { - // Scientific format - $value = sprintf('%5.2E', $value); - } elseif (preg_match('/0([^\d\.]+)0/', $format)) { - $value = self::complexNumberFormatMask($value, $format); - } else { - $sprintf_pattern = "%0$minWidth." . strlen($right) . "f"; - $value = sprintf($sprintf_pattern, $value); - $value = preg_replace($number_regex, $value, $format); - } - } - } - } - if (preg_match('/\[\$(.*)\]/u', $format, $m)) { - // Currency or Accounting - $currencyFormat = $m[0]; - $currencyCode = $m[1]; - list($currencyCode) = explode('-', $currencyCode); - if ($currencyCode == '') { - $currencyCode = PHPExcel_Shared_String::getCurrencyCode(); - } - $value = preg_replace('/\[\$([^\]]*)\]/u', $currencyCode, $value); - } - } - } - - // Escape any escaped slashes to a single slash - $format = preg_replace("/\\\\/u", '\\', $format); - - // Additional formatting provided by callback function - if ($callBack !== null) { - list($writerInstance, $function) = $callBack; - $value = $writerInstance->$function($value, $formatColor); - } - - return $value; - } -} diff --git a/application/third_party/PHPExcel/Style/Protection.php b/application/third_party/PHPExcel/Style/Protection.php deleted file mode 100644 index d5568f65..00000000 --- a/application/third_party/PHPExcel/Style/Protection.php +++ /dev/null @@ -1,204 +0,0 @@ -<?php - -/** - * PHPExcel_Style_Protection - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Style - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Style_Protection extends PHPExcel_Style_Supervisor implements PHPExcel_IComparable -{ - /** Protection styles */ - const PROTECTION_INHERIT = 'inherit'; - const PROTECTION_PROTECTED = 'protected'; - const PROTECTION_UNPROTECTED = 'unprotected'; - - /** - * Locked - * - * @var string - */ - protected $locked; - - /** - * Hidden - * - * @var string - */ - protected $hidden; - - /** - * Create a new PHPExcel_Style_Protection - * - * @param boolean $isSupervisor Flag indicating if this is a supervisor or not - * Leave this value at default unless you understand exactly what - * its ramifications are - * @param boolean $isConditional Flag indicating if this is a conditional style or not - * Leave this value at default unless you understand exactly what - * its ramifications are - */ - public function __construct($isSupervisor = false, $isConditional = false) - { - // Supervisor? - parent::__construct($isSupervisor); - - // Initialise values - if (!$isConditional) { - $this->locked = self::PROTECTION_INHERIT; - $this->hidden = self::PROTECTION_INHERIT; - } - } - - /** - * Get the shared style component for the currently active cell in currently active sheet. - * Only used for style supervisor - * - * @return PHPExcel_Style_Protection - */ - public function getSharedComponent() - { - return $this->parent->getSharedComponent()->getProtection(); - } - - /** - * Build style array from subcomponents - * - * @param array $array - * @return array - */ - public function getStyleArray($array) - { - return array('protection' => $array); - } - - /** - * Apply styles from array - * - * <code> - * $objPHPExcel->getActiveSheet()->getStyle('B2')->getLocked()->applyFromArray( - * array( - * 'locked' => TRUE, - * 'hidden' => FALSE - * ) - * ); - * </code> - * - * @param array $pStyles Array containing style information - * @throws PHPExcel_Exception - * @return PHPExcel_Style_Protection - */ - public function applyFromArray($pStyles = null) - { - if (is_array($pStyles)) { - if ($this->isSupervisor) { - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($this->getStyleArray($pStyles)); - } else { - if (isset($pStyles['locked'])) { - $this->setLocked($pStyles['locked']); - } - if (isset($pStyles['hidden'])) { - $this->setHidden($pStyles['hidden']); - } - } - } else { - throw new PHPExcel_Exception("Invalid style array passed."); - } - return $this; - } - - /** - * Get locked - * - * @return string - */ - public function getLocked() - { - if ($this->isSupervisor) { - return $this->getSharedComponent()->getLocked(); - } - return $this->locked; - } - - /** - * Set locked - * - * @param string $pValue - * @return PHPExcel_Style_Protection - */ - public function setLocked($pValue = self::PROTECTION_INHERIT) - { - if ($this->isSupervisor) { - $styleArray = $this->getStyleArray(array('locked' => $pValue)); - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); - } else { - $this->locked = $pValue; - } - return $this; - } - - /** - * Get hidden - * - * @return string - */ - public function getHidden() - { - if ($this->isSupervisor) { - return $this->getSharedComponent()->getHidden(); - } - return $this->hidden; - } - - /** - * Set hidden - * - * @param string $pValue - * @return PHPExcel_Style_Protection - */ - public function setHidden($pValue = self::PROTECTION_INHERIT) - { - if ($this->isSupervisor) { - $styleArray = $this->getStyleArray(array('hidden' => $pValue)); - $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); - } else { - $this->hidden = $pValue; - } - return $this; - } - - /** - * Get hash code - * - * @return string Hash code - */ - public function getHashCode() - { - if ($this->isSupervisor) { - return $this->getSharedComponent()->getHashCode(); - } - return md5( - $this->locked . - $this->hidden . - __CLASS__ - ); - } -} diff --git a/application/third_party/PHPExcel/Style/Supervisor.php b/application/third_party/PHPExcel/Style/Supervisor.php deleted file mode 100644 index a90e1c6a..00000000 --- a/application/third_party/PHPExcel/Style/Supervisor.php +++ /dev/null @@ -1,125 +0,0 @@ -<?php - -/** - * PHPExcel_Style_Supervisor - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Style - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -abstract class PHPExcel_Style_Supervisor -{ - /** - * Supervisor? - * - * @var boolean - */ - protected $isSupervisor; - - /** - * Parent. Only used for supervisor - * - * @var PHPExcel_Style - */ - protected $parent; - - /** - * Create a new PHPExcel_Style_Alignment - * - * @param boolean $isSupervisor Flag indicating if this is a supervisor or not - * Leave this value at default unless you understand exactly what - * its ramifications are - */ - public function __construct($isSupervisor = false) - { - // Supervisor? - $this->isSupervisor = $isSupervisor; - } - - /** - * Bind parent. Only used for supervisor - * - * @param PHPExcel $parent - * @return PHPExcel_Style_Supervisor - */ - public function bindParent($parent, $parentPropertyName = null) - { - $this->parent = $parent; - return $this; - } - - /** - * Is this a supervisor or a cell style component? - * - * @return boolean - */ - public function getIsSupervisor() - { - return $this->isSupervisor; - } - - /** - * Get the currently active sheet. Only used for supervisor - * - * @return PHPExcel_Worksheet - */ - public function getActiveSheet() - { - return $this->parent->getActiveSheet(); - } - - /** - * Get the currently active cell coordinate in currently active sheet. - * Only used for supervisor - * - * @return string E.g. 'A1' - */ - public function getSelectedCells() - { - return $this->getActiveSheet()->getSelectedCells(); - } - - /** - * Get the currently active cell coordinate in currently active sheet. - * Only used for supervisor - * - * @return string E.g. 'A1' - */ - public function getActiveCell() - { - return $this->getActiveSheet()->getActiveCell(); - } - - /** - * Implement PHP __clone to create a deep clone, not just a shallow copy. - */ - public function __clone() - { - $vars = get_object_vars($this); - foreach ($vars as $key => $value) { - if ((is_object($value)) && ($key != 'parent')) { - $this->$key = clone $value; - } else { - $this->$key = $value; - } - } - } -} diff --git a/application/third_party/PHPExcel/Worksheet.php b/application/third_party/PHPExcel/Worksheet.php deleted file mode 100644 index 483aa002..00000000 --- a/application/third_party/PHPExcel/Worksheet.php +++ /dev/null @@ -1,2968 +0,0 @@ -<?php - -/** - * PHPExcel_Worksheet - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Worksheet - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Worksheet implements PHPExcel_IComparable -{ - /* Break types */ - const BREAK_NONE = 0; - const BREAK_ROW = 1; - const BREAK_COLUMN = 2; - - /* Sheet state */ - const SHEETSTATE_VISIBLE = 'visible'; - const SHEETSTATE_HIDDEN = 'hidden'; - const SHEETSTATE_VERYHIDDEN = 'veryHidden'; - - /** - * Invalid characters in sheet title - * - * @var array - */ - private static $invalidCharacters = array('*', ':', '/', '\\', '?', '[', ']'); - - /** - * Parent spreadsheet - * - * @var PHPExcel - */ - private $parent; - - /** - * Cacheable collection of cells - * - * @var PHPExcel_CachedObjectStorage_xxx - */ - private $cellCollection; - - /** - * Collection of row dimensions - * - * @var PHPExcel_Worksheet_RowDimension[] - */ - private $rowDimensions = array(); - - /** - * Default row dimension - * - * @var PHPExcel_Worksheet_RowDimension - */ - private $defaultRowDimension; - - /** - * Collection of column dimensions - * - * @var PHPExcel_Worksheet_ColumnDimension[] - */ - private $columnDimensions = array(); - - /** - * Default column dimension - * - * @var PHPExcel_Worksheet_ColumnDimension - */ - private $defaultColumnDimension = null; - - /** - * Collection of drawings - * - * @var PHPExcel_Worksheet_BaseDrawing[] - */ - private $drawingCollection = null; - - /** - * Collection of Chart objects - * - * @var PHPExcel_Chart[] - */ - private $chartCollection = array(); - - /** - * Worksheet title - * - * @var string - */ - private $title; - - /** - * Sheet state - * - * @var string - */ - private $sheetState; - - /** - * Page setup - * - * @var PHPExcel_Worksheet_PageSetup - */ - private $pageSetup; - - /** - * Page margins - * - * @var PHPExcel_Worksheet_PageMargins - */ - private $pageMargins; - - /** - * Page header/footer - * - * @var PHPExcel_Worksheet_HeaderFooter - */ - private $headerFooter; - - /** - * Sheet view - * - * @var PHPExcel_Worksheet_SheetView - */ - private $sheetView; - - /** - * Protection - * - * @var PHPExcel_Worksheet_Protection - */ - private $protection; - - /** - * Collection of styles - * - * @var PHPExcel_Style[] - */ - private $styles = array(); - - /** - * Conditional styles. Indexed by cell coordinate, e.g. 'A1' - * - * @var array - */ - private $conditionalStylesCollection = array(); - - /** - * Is the current cell collection sorted already? - * - * @var boolean - */ - private $cellCollectionIsSorted = false; - - /** - * Collection of breaks - * - * @var array - */ - private $breaks = array(); - - /** - * Collection of merged cell ranges - * - * @var array - */ - private $mergeCells = array(); - - /** - * Collection of protected cell ranges - * - * @var array - */ - private $protectedCells = array(); - - /** - * Autofilter Range and selection - * - * @var PHPExcel_Worksheet_AutoFilter - */ - private $autoFilter; - - /** - * Freeze pane - * - * @var string - */ - private $freezePane = ''; - - /** - * Show gridlines? - * - * @var boolean - */ - private $showGridlines = true; - - /** - * Print gridlines? - * - * @var boolean - */ - private $printGridlines = false; - - /** - * Show row and column headers? - * - * @var boolean - */ - private $showRowColHeaders = true; - - /** - * Show summary below? (Row/Column outline) - * - * @var boolean - */ - private $showSummaryBelow = true; - - /** - * Show summary right? (Row/Column outline) - * - * @var boolean - */ - private $showSummaryRight = true; - - /** - * Collection of comments - * - * @var PHPExcel_Comment[] - */ - private $comments = array(); - - /** - * Active cell. (Only one!) - * - * @var string - */ - private $activeCell = 'A1'; - - /** - * Selected cells - * - * @var string - */ - private $selectedCells = 'A1'; - - /** - * Cached highest column - * - * @var string - */ - private $cachedHighestColumn = 'A'; - - /** - * Cached highest row - * - * @var int - */ - private $cachedHighestRow = 1; - - /** - * Right-to-left? - * - * @var boolean - */ - private $rightToLeft = false; - - /** - * Hyperlinks. Indexed by cell coordinate, e.g. 'A1' - * - * @var array - */ - private $hyperlinkCollection = array(); - - /** - * Data validation objects. Indexed by cell coordinate, e.g. 'A1' - * - * @var array - */ - private $dataValidationCollection = array(); - - /** - * Tab color - * - * @var PHPExcel_Style_Color - */ - private $tabColor; - - /** - * Dirty flag - * - * @var boolean - */ - private $dirty = true; - - /** - * Hash - * - * @var string - */ - private $hash; - - /** - * CodeName - * - * @var string - */ - private $codeName = null; - - /** - * Create a new worksheet - * - * @param PHPExcel $pParent - * @param string $pTitle - */ - public function __construct(PHPExcel $pParent = null, $pTitle = 'Worksheet') - { - // Set parent and title - $this->parent = $pParent; - $this->setTitle($pTitle, false); - // setTitle can change $pTitle - $this->setCodeName($this->getTitle()); - $this->setSheetState(PHPExcel_Worksheet::SHEETSTATE_VISIBLE); - - $this->cellCollection = PHPExcel_CachedObjectStorageFactory::getInstance($this); - // Set page setup - $this->pageSetup = new PHPExcel_Worksheet_PageSetup(); - // Set page margins - $this->pageMargins = new PHPExcel_Worksheet_PageMargins(); - // Set page header/footer - $this->headerFooter = new PHPExcel_Worksheet_HeaderFooter(); - // Set sheet view - $this->sheetView = new PHPExcel_Worksheet_SheetView(); - // Drawing collection - $this->drawingCollection = new ArrayObject(); - // Chart collection - $this->chartCollection = new ArrayObject(); - // Protection - $this->protection = new PHPExcel_Worksheet_Protection(); - // Default row dimension - $this->defaultRowDimension = new PHPExcel_Worksheet_RowDimension(null); - // Default column dimension - $this->defaultColumnDimension = new PHPExcel_Worksheet_ColumnDimension(null); - $this->autoFilter = new PHPExcel_Worksheet_AutoFilter(null, $this); - } - - - /** - * Disconnect all cells from this PHPExcel_Worksheet object, - * typically so that the worksheet object can be unset - * - */ - public function disconnectCells() - { - if ($this->cellCollection !== null) { - $this->cellCollection->unsetWorksheetCells(); - $this->cellCollection = null; - } - // detach ourself from the workbook, so that it can then delete this worksheet successfully - $this->parent = null; - } - - /** - * Code to execute when this worksheet is unset() - * - */ - public function __destruct() - { - PHPExcel_Calculation::getInstance($this->parent)->clearCalculationCacheForWorksheet($this->title); - - $this->disconnectCells(); - } - - /** - * Return the cache controller for the cell collection - * - * @return PHPExcel_CachedObjectStorage_xxx - */ - public function getCellCacheController() - { - return $this->cellCollection; - } - - - /** - * Get array of invalid characters for sheet title - * - * @return array - */ - public static function getInvalidCharacters() - { - return self::$invalidCharacters; - } - - /** - * Check sheet code name for valid Excel syntax - * - * @param string $pValue The string to check - * @return string The valid string - * @throws Exception - */ - private static function checkSheetCodeName($pValue) - { - $CharCount = PHPExcel_Shared_String::CountCharacters($pValue); - if ($CharCount == 0) { - throw new PHPExcel_Exception('Sheet code name cannot be empty.'); - } - // Some of the printable ASCII characters are invalid: * : / \ ? [ ] and first and last characters cannot be a "'" - if ((str_replace(self::$invalidCharacters, '', $pValue) !== $pValue) || - (PHPExcel_Shared_String::Substring($pValue, -1, 1)=='\'') || - (PHPExcel_Shared_String::Substring($pValue, 0, 1)=='\'')) { - throw new PHPExcel_Exception('Invalid character found in sheet code name'); - } - - // Maximum 31 characters allowed for sheet title - if ($CharCount > 31) { - throw new PHPExcel_Exception('Maximum 31 characters allowed in sheet code name.'); - } - - return $pValue; - } - - /** - * Check sheet title for valid Excel syntax - * - * @param string $pValue The string to check - * @return string The valid string - * @throws PHPExcel_Exception - */ - private static function checkSheetTitle($pValue) - { - // Some of the printable ASCII characters are invalid: * : / \ ? [ ] - if (str_replace(self::$invalidCharacters, '', $pValue) !== $pValue) { - throw new PHPExcel_Exception('Invalid character found in sheet title'); - } - - // Maximum 31 characters allowed for sheet title - if (PHPExcel_Shared_String::CountCharacters($pValue) > 31) { - throw new PHPExcel_Exception('Maximum 31 characters allowed in sheet title.'); - } - - return $pValue; - } - - /** - * Get collection of cells - * - * @param boolean $pSorted Also sort the cell collection? - * @return PHPExcel_Cell[] - */ - public function getCellCollection($pSorted = true) - { - if ($pSorted) { - // Re-order cell collection - return $this->sortCellCollection(); - } - if ($this->cellCollection !== null) { - return $this->cellCollection->getCellList(); - } - return array(); - } - - /** - * Sort collection of cells - * - * @return PHPExcel_Worksheet - */ - public function sortCellCollection() - { - if ($this->cellCollection !== null) { - return $this->cellCollection->getSortedCellList(); - } - return array(); - } - - /** - * Get collection of row dimensions - * - * @return PHPExcel_Worksheet_RowDimension[] - */ - public function getRowDimensions() - { - return $this->rowDimensions; - } - - /** - * Get default row dimension - * - * @return PHPExcel_Worksheet_RowDimension - */ - public function getDefaultRowDimension() - { - return $this->defaultRowDimension; - } - - /** - * Get collection of column dimensions - * - * @return PHPExcel_Worksheet_ColumnDimension[] - */ - public function getColumnDimensions() - { - return $this->columnDimensions; - } - - /** - * Get default column dimension - * - * @return PHPExcel_Worksheet_ColumnDimension - */ - public function getDefaultColumnDimension() - { - return $this->defaultColumnDimension; - } - - /** - * Get collection of drawings - * - * @return PHPExcel_Worksheet_BaseDrawing[] - */ - public function getDrawingCollection() - { - return $this->drawingCollection; - } - - /** - * Get collection of charts - * - * @return PHPExcel_Chart[] - */ - public function getChartCollection() - { - return $this->chartCollection; - } - - /** - * Add chart - * - * @param PHPExcel_Chart $pChart - * @param int|null $iChartIndex Index where chart should go (0,1,..., or null for last) - * @return PHPExcel_Chart - */ - public function addChart(PHPExcel_Chart $pChart = null, $iChartIndex = null) - { - $pChart->setWorksheet($this); - if (is_null($iChartIndex)) { - $this->chartCollection[] = $pChart; - } else { - // Insert the chart at the requested index - array_splice($this->chartCollection, $iChartIndex, 0, array($pChart)); - } - - return $pChart; - } - - /** - * Return the count of charts on this worksheet - * - * @return int The number of charts - */ - public function getChartCount() - { - return count($this->chartCollection); - } - - /** - * Get a chart by its index position - * - * @param string $index Chart index position - * @return false|PHPExcel_Chart - * @throws PHPExcel_Exception - */ - public function getChartByIndex($index = null) - { - $chartCount = count($this->chartCollection); - if ($chartCount == 0) { - return false; - } - if (is_null($index)) { - $index = --$chartCount; - } - if (!isset($this->chartCollection[$index])) { - return false; - } - - return $this->chartCollection[$index]; - } - - /** - * Return an array of the names of charts on this worksheet - * - * @return string[] The names of charts - * @throws PHPExcel_Exception - */ - public function getChartNames() - { - $chartNames = array(); - foreach ($this->chartCollection as $chart) { - $chartNames[] = $chart->getName(); - } - return $chartNames; - } - - /** - * Get a chart by name - * - * @param string $chartName Chart name - * @return false|PHPExcel_Chart - * @throws PHPExcel_Exception - */ - public function getChartByName($chartName = '') - { - $chartCount = count($this->chartCollection); - if ($chartCount == 0) { - return false; - } - foreach ($this->chartCollection as $index => $chart) { - if ($chart->getName() == $chartName) { - return $this->chartCollection[$index]; - } - } - return false; - } - - /** - * Refresh column dimensions - * - * @return PHPExcel_Worksheet - */ - public function refreshColumnDimensions() - { - $currentColumnDimensions = $this->getColumnDimensions(); - $newColumnDimensions = array(); - - foreach ($currentColumnDimensions as $objColumnDimension) { - $newColumnDimensions[$objColumnDimension->getColumnIndex()] = $objColumnDimension; - } - - $this->columnDimensions = $newColumnDimensions; - - return $this; - } - - /** - * Refresh row dimensions - * - * @return PHPExcel_Worksheet - */ - public function refreshRowDimensions() - { - $currentRowDimensions = $this->getRowDimensions(); - $newRowDimensions = array(); - - foreach ($currentRowDimensions as $objRowDimension) { - $newRowDimensions[$objRowDimension->getRowIndex()] = $objRowDimension; - } - - $this->rowDimensions = $newRowDimensions; - - return $this; - } - - /** - * Calculate worksheet dimension - * - * @return string String containing the dimension of this worksheet - */ - public function calculateWorksheetDimension() - { - // Return - return 'A1' . ':' . $this->getHighestColumn() . $this->getHighestRow(); - } - - /** - * Calculate worksheet data dimension - * - * @return string String containing the dimension of this worksheet that actually contain data - */ - public function calculateWorksheetDataDimension() - { - // Return - return 'A1' . ':' . $this->getHighestDataColumn() . $this->getHighestDataRow(); - } - - /** - * Calculate widths for auto-size columns - * - * @param boolean $calculateMergeCells Calculate merge cell width - * @return PHPExcel_Worksheet; - */ - public function calculateColumnWidths($calculateMergeCells = false) - { - // initialize $autoSizes array - $autoSizes = array(); - foreach ($this->getColumnDimensions() as $colDimension) { - if ($colDimension->getAutoSize()) { - $autoSizes[$colDimension->getColumnIndex()] = -1; - } - } - - // There is only something to do if there are some auto-size columns - if (!empty($autoSizes)) { - // build list of cells references that participate in a merge - $isMergeCell = array(); - foreach ($this->getMergeCells() as $cells) { - foreach (PHPExcel_Cell::extractAllCellReferencesInRange($cells) as $cellReference) { - $isMergeCell[$cellReference] = true; - } - } - - // loop through all cells in the worksheet - foreach ($this->getCellCollection(false) as $cellID) { - $cell = $this->getCell($cellID, false); - if ($cell !== null && isset($autoSizes[$this->cellCollection->getCurrentColumn()])) { - // Determine width if cell does not participate in a merge - if (!isset($isMergeCell[$this->cellCollection->getCurrentAddress()])) { - // Calculated value - // To formatted string - $cellValue = PHPExcel_Style_NumberFormat::toFormattedString( - $cell->getCalculatedValue(), - $this->getParent()->getCellXfByIndex($cell->getXfIndex())->getNumberFormat()->getFormatCode() - ); - - $autoSizes[$this->cellCollection->getCurrentColumn()] = max( - (float) $autoSizes[$this->cellCollection->getCurrentColumn()], - (float)PHPExcel_Shared_Font::calculateColumnWidth( - $this->getParent()->getCellXfByIndex($cell->getXfIndex())->getFont(), - $cellValue, - $this->getParent()->getCellXfByIndex($cell->getXfIndex())->getAlignment()->getTextRotation(), - $this->getDefaultStyle()->getFont() - ) - ); - } - } - } - - // adjust column widths - foreach ($autoSizes as $columnIndex => $width) { - if ($width == -1) { - $width = $this->getDefaultColumnDimension()->getWidth(); - } - $this->getColumnDimension($columnIndex)->setWidth($width); - } - } - - return $this; - } - - /** - * Get parent - * - * @return PHPExcel - */ - public function getParent() - { - return $this->parent; - } - - /** - * Re-bind parent - * - * @param PHPExcel $parent - * @return PHPExcel_Worksheet - */ - public function rebindParent(PHPExcel $parent) - { - if ($this->parent !== null) { - $namedRanges = $this->parent->getNamedRanges(); - foreach ($namedRanges as $namedRange) { - $parent->addNamedRange($namedRange); - } - - $this->parent->removeSheetByIndex( - $this->parent->getIndex($this) - ); - } - $this->parent = $parent; - - return $this; - } - - /** - * Get title - * - * @return string - */ - public function getTitle() - { - return $this->title; - } - - /** - * Set title - * - * @param string $pValue String containing the dimension of this worksheet - * @param string $updateFormulaCellReferences boolean Flag indicating whether cell references in formulae should - * be updated to reflect the new sheet name. - * This should be left as the default true, unless you are - * certain that no formula cells on any worksheet contain - * references to this worksheet - * @return PHPExcel_Worksheet - */ - public function setTitle($pValue = 'Worksheet', $updateFormulaCellReferences = true) - { - // Is this a 'rename' or not? - if ($this->getTitle() == $pValue) { - return $this; - } - - // Syntax check - self::checkSheetTitle($pValue); - - // Old title - $oldTitle = $this->getTitle(); - - if ($this->parent) { - // Is there already such sheet name? - if ($this->parent->sheetNameExists($pValue)) { - // Use name, but append with lowest possible integer - - if (PHPExcel_Shared_String::CountCharacters($pValue) > 29) { - $pValue = PHPExcel_Shared_String::Substring($pValue, 0, 29); - } - $i = 1; - while ($this->parent->sheetNameExists($pValue . ' ' . $i)) { - ++$i; - if ($i == 10) { - if (PHPExcel_Shared_String::CountCharacters($pValue) > 28) { - $pValue = PHPExcel_Shared_String::Substring($pValue, 0, 28); - } - } elseif ($i == 100) { - if (PHPExcel_Shared_String::CountCharacters($pValue) > 27) { - $pValue = PHPExcel_Shared_String::Substring($pValue, 0, 27); - } - } - } - - $altTitle = $pValue . ' ' . $i; - return $this->setTitle($altTitle, $updateFormulaCellReferences); - } - } - - // Set title - $this->title = $pValue; - $this->dirty = true; - - if ($this->parent && $this->parent->getCalculationEngine()) { - // New title - $newTitle = $this->getTitle(); - $this->parent->getCalculationEngine() - ->renameCalculationCacheForWorksheet($oldTitle, $newTitle); - if ($updateFormulaCellReferences) { - PHPExcel_ReferenceHelper::getInstance()->updateNamedFormulas($this->parent, $oldTitle, $newTitle); - } - } - - return $this; - } - - /** - * Get sheet state - * - * @return string Sheet state (visible, hidden, veryHidden) - */ - public function getSheetState() - { - return $this->sheetState; - } - - /** - * Set sheet state - * - * @param string $value Sheet state (visible, hidden, veryHidden) - * @return PHPExcel_Worksheet - */ - public function setSheetState($value = PHPExcel_Worksheet::SHEETSTATE_VISIBLE) - { - $this->sheetState = $value; - return $this; - } - - /** - * Get page setup - * - * @return PHPExcel_Worksheet_PageSetup - */ - public function getPageSetup() - { - return $this->pageSetup; - } - - /** - * Set page setup - * - * @param PHPExcel_Worksheet_PageSetup $pValue - * @return PHPExcel_Worksheet - */ - public function setPageSetup(PHPExcel_Worksheet_PageSetup $pValue) - { - $this->pageSetup = $pValue; - return $this; - } - - /** - * Get page margins - * - * @return PHPExcel_Worksheet_PageMargins - */ - public function getPageMargins() - { - return $this->pageMargins; - } - - /** - * Set page margins - * - * @param PHPExcel_Worksheet_PageMargins $pValue - * @return PHPExcel_Worksheet - */ - public function setPageMargins(PHPExcel_Worksheet_PageMargins $pValue) - { - $this->pageMargins = $pValue; - return $this; - } - - /** - * Get page header/footer - * - * @return PHPExcel_Worksheet_HeaderFooter - */ - public function getHeaderFooter() - { - return $this->headerFooter; - } - - /** - * Set page header/footer - * - * @param PHPExcel_Worksheet_HeaderFooter $pValue - * @return PHPExcel_Worksheet - */ - public function setHeaderFooter(PHPExcel_Worksheet_HeaderFooter $pValue) - { - $this->headerFooter = $pValue; - return $this; - } - - /** - * Get sheet view - * - * @return PHPExcel_Worksheet_SheetView - */ - public function getSheetView() - { - return $this->sheetView; - } - - /** - * Set sheet view - * - * @param PHPExcel_Worksheet_SheetView $pValue - * @return PHPExcel_Worksheet - */ - public function setSheetView(PHPExcel_Worksheet_SheetView $pValue) - { - $this->sheetView = $pValue; - return $this; - } - - /** - * Get Protection - * - * @return PHPExcel_Worksheet_Protection - */ - public function getProtection() - { - return $this->protection; - } - - /** - * Set Protection - * - * @param PHPExcel_Worksheet_Protection $pValue - * @return PHPExcel_Worksheet - */ - public function setProtection(PHPExcel_Worksheet_Protection $pValue) - { - $this->protection = $pValue; - $this->dirty = true; - - return $this; - } - - /** - * Get highest worksheet column - * - * @param string $row Return the data highest column for the specified row, - * or the highest column of any row if no row number is passed - * @return string Highest column name - */ - public function getHighestColumn($row = null) - { - if ($row == null) { - return $this->cachedHighestColumn; - } - return $this->getHighestDataColumn($row); - } - - /** - * Get highest worksheet column that contains data - * - * @param string $row Return the highest data column for the specified row, - * or the highest data column of any row if no row number is passed - * @return string Highest column name that contains data - */ - public function getHighestDataColumn($row = null) - { - return $this->cellCollection->getHighestColumn($row); - } - - /** - * Get highest worksheet row - * - * @param string $column Return the highest data row for the specified column, - * or the highest row of any column if no column letter is passed - * @return int Highest row number - */ - public function getHighestRow($column = null) - { - if ($column == null) { - return $this->cachedHighestRow; - } - return $this->getHighestDataRow($column); - } - - /** - * Get highest worksheet row that contains data - * - * @param string $column Return the highest data row for the specified column, - * or the highest data row of any column if no column letter is passed - * @return string Highest row number that contains data - */ - public function getHighestDataRow($column = null) - { - return $this->cellCollection->getHighestRow($column); - } - - /** - * Get highest worksheet column and highest row that have cell records - * - * @return array Highest column name and highest row number - */ - public function getHighestRowAndColumn() - { - return $this->cellCollection->getHighestRowAndColumn(); - } - - /** - * Set a cell value - * - * @param string $pCoordinate Coordinate of the cell - * @param mixed $pValue Value of the cell - * @param bool $returnCell Return the worksheet (false, default) or the cell (true) - * @return PHPExcel_Worksheet|PHPExcel_Cell Depending on the last parameter being specified - */ - public function setCellValue($pCoordinate = 'A1', $pValue = null, $returnCell = false) - { - $cell = $this->getCell(strtoupper($pCoordinate))->setValue($pValue); - return ($returnCell) ? $cell : $this; - } - - /** - * Set a cell value by using numeric cell coordinates - * - * @param string $pColumn Numeric column coordinate of the cell (A = 0) - * @param string $pRow Numeric row coordinate of the cell - * @param mixed $pValue Value of the cell - * @param bool $returnCell Return the worksheet (false, default) or the cell (true) - * @return PHPExcel_Worksheet|PHPExcel_Cell Depending on the last parameter being specified - */ - public function setCellValueByColumnAndRow($pColumn = 0, $pRow = 1, $pValue = null, $returnCell = false) - { - $cell = $this->getCellByColumnAndRow($pColumn, $pRow)->setValue($pValue); - return ($returnCell) ? $cell : $this; - } - - /** - * Set a cell value - * - * @param string $pCoordinate Coordinate of the cell - * @param mixed $pValue Value of the cell - * @param string $pDataType Explicit data type - * @param bool $returnCell Return the worksheet (false, default) or the cell (true) - * @return PHPExcel_Worksheet|PHPExcel_Cell Depending on the last parameter being specified - */ - public function setCellValueExplicit($pCoordinate = 'A1', $pValue = null, $pDataType = PHPExcel_Cell_DataType::TYPE_STRING, $returnCell = false) - { - // Set value - $cell = $this->getCell(strtoupper($pCoordinate))->setValueExplicit($pValue, $pDataType); - return ($returnCell) ? $cell : $this; - } - - /** - * Set a cell value by using numeric cell coordinates - * - * @param string $pColumn Numeric column coordinate of the cell - * @param string $pRow Numeric row coordinate of the cell - * @param mixed $pValue Value of the cell - * @param string $pDataType Explicit data type - * @param bool $returnCell Return the worksheet (false, default) or the cell (true) - * @return PHPExcel_Worksheet|PHPExcel_Cell Depending on the last parameter being specified - */ - public function setCellValueExplicitByColumnAndRow($pColumn = 0, $pRow = 1, $pValue = null, $pDataType = PHPExcel_Cell_DataType::TYPE_STRING, $returnCell = false) - { - $cell = $this->getCellByColumnAndRow($pColumn, $pRow)->setValueExplicit($pValue, $pDataType); - return ($returnCell) ? $cell : $this; - } - - /** - * Get cell at a specific coordinate - * - * @param string $pCoordinate Coordinate of the cell - * @param boolean $createIfNotExists Flag indicating whether a new cell should be created if it doesn't - * already exist, or a null should be returned instead - * @throws PHPExcel_Exception - * @return null|PHPExcel_Cell Cell that was found/created or null - */ - public function getCell($pCoordinate = 'A1', $createIfNotExists = true) - { - // Check cell collection - if ($this->cellCollection->isDataSet(strtoupper($pCoordinate))) { - return $this->cellCollection->getCacheData($pCoordinate); - } - - // Worksheet reference? - if (strpos($pCoordinate, '!') !== false) { - $worksheetReference = PHPExcel_Worksheet::extractSheetTitle($pCoordinate, true); - return $this->parent->getSheetByName($worksheetReference[0])->getCell(strtoupper($worksheetReference[1]), $createIfNotExists); - } - - // Named range? - if ((!preg_match('/^'.PHPExcel_Calculation::CALCULATION_REGEXP_CELLREF.'$/i', $pCoordinate, $matches)) && - (preg_match('/^'.PHPExcel_Calculation::CALCULATION_REGEXP_NAMEDRANGE.'$/i', $pCoordinate, $matches))) { - $namedRange = PHPExcel_NamedRange::resolveRange($pCoordinate, $this); - if ($namedRange !== null) { - $pCoordinate = $namedRange->getRange(); - return $namedRange->getWorksheet()->getCell($pCoordinate, $createIfNotExists); - } - } - - // Uppercase coordinate - $pCoordinate = strtoupper($pCoordinate); - - if (strpos($pCoordinate, ':') !== false || strpos($pCoordinate, ',') !== false) { - throw new PHPExcel_Exception('Cell coordinate can not be a range of cells.'); - } elseif (strpos($pCoordinate, '$') !== false) { - throw new PHPExcel_Exception('Cell coordinate must not be absolute.'); - } - - // Create new cell object, if required - return $createIfNotExists ? $this->createNewCell($pCoordinate) : null; - } - - /** - * Get cell at a specific coordinate by using numeric cell coordinates - * - * @param string $pColumn Numeric column coordinate of the cell (starting from 0) - * @param string $pRow Numeric row coordinate of the cell - * @param boolean $createIfNotExists Flag indicating whether a new cell should be created if it doesn't - * already exist, or a null should be returned instead - * @return null|PHPExcel_Cell Cell that was found/created or null - */ - public function getCellByColumnAndRow($pColumn = 0, $pRow = 1, $createIfNotExists = true) - { - $columnLetter = PHPExcel_Cell::stringFromColumnIndex($pColumn); - $coordinate = $columnLetter . $pRow; - - if ($this->cellCollection->isDataSet($coordinate)) { - return $this->cellCollection->getCacheData($coordinate); - } - - // Create new cell object, if required - return $createIfNotExists ? $this->createNewCell($coordinate) : null; - } - - /** - * Create a new cell at the specified coordinate - * - * @param string $pCoordinate Coordinate of the cell - * @return PHPExcel_Cell Cell that was created - */ - private function createNewCell($pCoordinate) - { - $cell = $this->cellCollection->addCacheData( - $pCoordinate, - new PHPExcel_Cell(null, PHPExcel_Cell_DataType::TYPE_NULL, $this) - ); - $this->cellCollectionIsSorted = false; - - // Coordinates - $aCoordinates = PHPExcel_Cell::coordinateFromString($pCoordinate); - if (PHPExcel_Cell::columnIndexFromString($this->cachedHighestColumn) < PHPExcel_Cell::columnIndexFromString($aCoordinates[0])) { - $this->cachedHighestColumn = $aCoordinates[0]; - } - $this->cachedHighestRow = max($this->cachedHighestRow, $aCoordinates[1]); - - // Cell needs appropriate xfIndex from dimensions records - // but don't create dimension records if they don't already exist - $rowDimension = $this->getRowDimension($aCoordinates[1], false); - $columnDimension = $this->getColumnDimension($aCoordinates[0], false); - - if ($rowDimension !== null && $rowDimension->getXfIndex() > 0) { - // then there is a row dimension with explicit style, assign it to the cell - $cell->setXfIndex($rowDimension->getXfIndex()); - } elseif ($columnDimension !== null && $columnDimension->getXfIndex() > 0) { - // then there is a column dimension, assign it to the cell - $cell->setXfIndex($columnDimension->getXfIndex()); - } - - return $cell; - } - - /** - * Does the cell at a specific coordinate exist? - * - * @param string $pCoordinate Coordinate of the cell - * @throws PHPExcel_Exception - * @return boolean - */ - public function cellExists($pCoordinate = 'A1') - { - // Worksheet reference? - if (strpos($pCoordinate, '!') !== false) { - $worksheetReference = PHPExcel_Worksheet::extractSheetTitle($pCoordinate, true); - return $this->parent->getSheetByName($worksheetReference[0])->cellExists(strtoupper($worksheetReference[1])); - } - - // Named range? - if ((!preg_match('/^'.PHPExcel_Calculation::CALCULATION_REGEXP_CELLREF.'$/i', $pCoordinate, $matches)) && - (preg_match('/^'.PHPExcel_Calculation::CALCULATION_REGEXP_NAMEDRANGE.'$/i', $pCoordinate, $matches))) { - $namedRange = PHPExcel_NamedRange::resolveRange($pCoordinate, $this); - if ($namedRange !== null) { - $pCoordinate = $namedRange->getRange(); - if ($this->getHashCode() != $namedRange->getWorksheet()->getHashCode()) { - if (!$namedRange->getLocalOnly()) { - return $namedRange->getWorksheet()->cellExists($pCoordinate); - } else { - throw new PHPExcel_Exception('Named range ' . $namedRange->getName() . ' is not accessible from within sheet ' . $this->getTitle()); - } - } - } else { - return false; - } - } - - // Uppercase coordinate - $pCoordinate = strtoupper($pCoordinate); - - if (strpos($pCoordinate, ':') !== false || strpos($pCoordinate, ',') !== false) { - throw new PHPExcel_Exception('Cell coordinate can not be a range of cells.'); - } elseif (strpos($pCoordinate, '$') !== false) { - throw new PHPExcel_Exception('Cell coordinate must not be absolute.'); - } else { - // Coordinates - $aCoordinates = PHPExcel_Cell::coordinateFromString($pCoordinate); - - // Cell exists? - return $this->cellCollection->isDataSet($pCoordinate); - } - } - - /** - * Cell at a specific coordinate by using numeric cell coordinates exists? - * - * @param string $pColumn Numeric column coordinate of the cell - * @param string $pRow Numeric row coordinate of the cell - * @return boolean - */ - public function cellExistsByColumnAndRow($pColumn = 0, $pRow = 1) - { - return $this->cellExists(PHPExcel_Cell::stringFromColumnIndex($pColumn) . $pRow); - } - - /** - * Get row dimension at a specific row - * - * @param int $pRow Numeric index of the row - * @return PHPExcel_Worksheet_RowDimension - */ - public function getRowDimension($pRow = 1, $create = true) - { - // Found - $found = null; - - // Get row dimension - if (!isset($this->rowDimensions[$pRow])) { - if (!$create) { - return null; - } - $this->rowDimensions[$pRow] = new PHPExcel_Worksheet_RowDimension($pRow); - - $this->cachedHighestRow = max($this->cachedHighestRow, $pRow); - } - return $this->rowDimensions[$pRow]; - } - - /** - * Get column dimension at a specific column - * - * @param string $pColumn String index of the column - * @return PHPExcel_Worksheet_ColumnDimension - */ - public function getColumnDimension($pColumn = 'A', $create = true) - { - // Uppercase coordinate - $pColumn = strtoupper($pColumn); - - // Fetch dimensions - if (!isset($this->columnDimensions[$pColumn])) { - if (!$create) { - return null; - } - $this->columnDimensions[$pColumn] = new PHPExcel_Worksheet_ColumnDimension($pColumn); - - if (PHPExcel_Cell::columnIndexFromString($this->cachedHighestColumn) < PHPExcel_Cell::columnIndexFromString($pColumn)) { - $this->cachedHighestColumn = $pColumn; - } - } - return $this->columnDimensions[$pColumn]; - } - - /** - * Get column dimension at a specific column by using numeric cell coordinates - * - * @param string $pColumn Numeric column coordinate of the cell - * @return PHPExcel_Worksheet_ColumnDimension - */ - public function getColumnDimensionByColumn($pColumn = 0) - { - return $this->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($pColumn)); - } - - /** - * Get styles - * - * @return PHPExcel_Style[] - */ - public function getStyles() - { - return $this->styles; - } - - /** - * Get default style of workbook. - * - * @deprecated - * @return PHPExcel_Style - * @throws PHPExcel_Exception - */ - public function getDefaultStyle() - { - return $this->parent->getDefaultStyle(); - } - - /** - * Set default style - should only be used by PHPExcel_IReader implementations! - * - * @deprecated - * @param PHPExcel_Style $pValue - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet - */ - public function setDefaultStyle(PHPExcel_Style $pValue) - { - $this->parent->getDefaultStyle()->applyFromArray(array( - 'font' => array( - 'name' => $pValue->getFont()->getName(), - 'size' => $pValue->getFont()->getSize(), - ), - )); - return $this; - } - - /** - * Get style for cell - * - * @param string $pCellCoordinate Cell coordinate (or range) to get style for - * @return PHPExcel_Style - * @throws PHPExcel_Exception - */ - public function getStyle($pCellCoordinate = 'A1') - { - // set this sheet as active - $this->parent->setActiveSheetIndex($this->parent->getIndex($this)); - - // set cell coordinate as active - $this->setSelectedCells(strtoupper($pCellCoordinate)); - - return $this->parent->getCellXfSupervisor(); - } - - /** - * Get conditional styles for a cell - * - * @param string $pCoordinate - * @return PHPExcel_Style_Conditional[] - */ - public function getConditionalStyles($pCoordinate = 'A1') - { - $pCoordinate = strtoupper($pCoordinate); - if (!isset($this->conditionalStylesCollection[$pCoordinate])) { - $this->conditionalStylesCollection[$pCoordinate] = array(); - } - return $this->conditionalStylesCollection[$pCoordinate]; - } - - /** - * Do conditional styles exist for this cell? - * - * @param string $pCoordinate - * @return boolean - */ - public function conditionalStylesExists($pCoordinate = 'A1') - { - if (isset($this->conditionalStylesCollection[strtoupper($pCoordinate)])) { - return true; - } - return false; - } - - /** - * Removes conditional styles for a cell - * - * @param string $pCoordinate - * @return PHPExcel_Worksheet - */ - public function removeConditionalStyles($pCoordinate = 'A1') - { - unset($this->conditionalStylesCollection[strtoupper($pCoordinate)]); - return $this; - } - - /** - * Get collection of conditional styles - * - * @return array - */ - public function getConditionalStylesCollection() - { - return $this->conditionalStylesCollection; - } - - /** - * Set conditional styles - * - * @param $pCoordinate string E.g. 'A1' - * @param $pValue PHPExcel_Style_Conditional[] - * @return PHPExcel_Worksheet - */ - public function setConditionalStyles($pCoordinate = 'A1', $pValue) - { - $this->conditionalStylesCollection[strtoupper($pCoordinate)] = $pValue; - return $this; - } - - /** - * Get style for cell by using numeric cell coordinates - * - * @param int $pColumn Numeric column coordinate of the cell - * @param int $pRow Numeric row coordinate of the cell - * @param int pColumn2 Numeric column coordinate of the range cell - * @param int pRow2 Numeric row coordinate of the range cell - * @return PHPExcel_Style - */ - public function getStyleByColumnAndRow($pColumn = 0, $pRow = 1, $pColumn2 = null, $pRow2 = null) - { - if (!is_null($pColumn2) && !is_null($pRow2)) { - $cellRange = PHPExcel_Cell::stringFromColumnIndex($pColumn) . $pRow . ':' . PHPExcel_Cell::stringFromColumnIndex($pColumn2) . $pRow2; - return $this->getStyle($cellRange); - } - - return $this->getStyle(PHPExcel_Cell::stringFromColumnIndex($pColumn) . $pRow); - } - - /** - * Set shared cell style to a range of cells - * - * Please note that this will overwrite existing cell styles for cells in range! - * - * @deprecated - * @param PHPExcel_Style $pSharedCellStyle Cell style to share - * @param string $pRange Range of cells (i.e. "A1:B10"), or just one cell (i.e. "A1") - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet - */ - public function setSharedStyle(PHPExcel_Style $pSharedCellStyle = null, $pRange = '') - { - $this->duplicateStyle($pSharedCellStyle, $pRange); - return $this; - } - - /** - * Duplicate cell style to a range of cells - * - * Please note that this will overwrite existing cell styles for cells in range! - * - * @param PHPExcel_Style $pCellStyle Cell style to duplicate - * @param string $pRange Range of cells (i.e. "A1:B10"), or just one cell (i.e. "A1") - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet - */ - public function duplicateStyle(PHPExcel_Style $pCellStyle = null, $pRange = '') - { - // make sure we have a real style and not supervisor - $style = $pCellStyle->getIsSupervisor() ? $pCellStyle->getSharedComponent() : $pCellStyle; - - // Add the style to the workbook if necessary - $workbook = $this->parent; - if ($existingStyle = $this->parent->getCellXfByHashCode($pCellStyle->getHashCode())) { - // there is already such cell Xf in our collection - $xfIndex = $existingStyle->getIndex(); - } else { - // we don't have such a cell Xf, need to add - $workbook->addCellXf($pCellStyle); - $xfIndex = $pCellStyle->getIndex(); - } - - // Calculate range outer borders - list($rangeStart, $rangeEnd) = PHPExcel_Cell::rangeBoundaries($pRange . ':' . $pRange); - - // Make sure we can loop upwards on rows and columns - if ($rangeStart[0] > $rangeEnd[0] && $rangeStart[1] > $rangeEnd[1]) { - $tmp = $rangeStart; - $rangeStart = $rangeEnd; - $rangeEnd = $tmp; - } - - // Loop through cells and apply styles - for ($col = $rangeStart[0]; $col <= $rangeEnd[0]; ++$col) { - for ($row = $rangeStart[1]; $row <= $rangeEnd[1]; ++$row) { - $this->getCell(PHPExcel_Cell::stringFromColumnIndex($col - 1) . $row)->setXfIndex($xfIndex); - } - } - - return $this; - } - - /** - * Duplicate conditional style to a range of cells - * - * Please note that this will overwrite existing cell styles for cells in range! - * - * @param array of PHPExcel_Style_Conditional $pCellStyle Cell style to duplicate - * @param string $pRange Range of cells (i.e. "A1:B10"), or just one cell (i.e. "A1") - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet - */ - public function duplicateConditionalStyle(array $pCellStyle = null, $pRange = '') - { - foreach ($pCellStyle as $cellStyle) { - if (!($cellStyle instanceof PHPExcel_Style_Conditional)) { - throw new PHPExcel_Exception('Style is not a conditional style'); - } - } - - // Calculate range outer borders - list($rangeStart, $rangeEnd) = PHPExcel_Cell::rangeBoundaries($pRange . ':' . $pRange); - - // Make sure we can loop upwards on rows and columns - if ($rangeStart[0] > $rangeEnd[0] && $rangeStart[1] > $rangeEnd[1]) { - $tmp = $rangeStart; - $rangeStart = $rangeEnd; - $rangeEnd = $tmp; - } - - // Loop through cells and apply styles - for ($col = $rangeStart[0]; $col <= $rangeEnd[0]; ++$col) { - for ($row = $rangeStart[1]; $row <= $rangeEnd[1]; ++$row) { - $this->setConditionalStyles(PHPExcel_Cell::stringFromColumnIndex($col - 1) . $row, $pCellStyle); - } - } - - return $this; - } - - /** - * Duplicate cell style array to a range of cells - * - * Please note that this will overwrite existing cell styles for cells in range, - * if they are in the styles array. For example, if you decide to set a range of - * cells to font bold, only include font bold in the styles array. - * - * @deprecated - * @param array $pStyles Array containing style information - * @param string $pRange Range of cells (i.e. "A1:B10"), or just one cell (i.e. "A1") - * @param boolean $pAdvanced Advanced mode for setting borders. - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet - */ - public function duplicateStyleArray($pStyles = null, $pRange = '', $pAdvanced = true) - { - $this->getStyle($pRange)->applyFromArray($pStyles, $pAdvanced); - return $this; - } - - /** - * Set break on a cell - * - * @param string $pCell Cell coordinate (e.g. A1) - * @param int $pBreak Break type (type of PHPExcel_Worksheet::BREAK_*) - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet - */ - public function setBreak($pCell = 'A1', $pBreak = PHPExcel_Worksheet::BREAK_NONE) - { - // Uppercase coordinate - $pCell = strtoupper($pCell); - - if ($pCell != '') { - if ($pBreak == PHPExcel_Worksheet::BREAK_NONE) { - if (isset($this->breaks[$pCell])) { - unset($this->breaks[$pCell]); - } - } else { - $this->breaks[$pCell] = $pBreak; - } - } else { - throw new PHPExcel_Exception('No cell coordinate specified.'); - } - - return $this; - } - - /** - * Set break on a cell by using numeric cell coordinates - * - * @param integer $pColumn Numeric column coordinate of the cell - * @param integer $pRow Numeric row coordinate of the cell - * @param integer $pBreak Break type (type of PHPExcel_Worksheet::BREAK_*) - * @return PHPExcel_Worksheet - */ - public function setBreakByColumnAndRow($pColumn = 0, $pRow = 1, $pBreak = PHPExcel_Worksheet::BREAK_NONE) - { - return $this->setBreak(PHPExcel_Cell::stringFromColumnIndex($pColumn) . $pRow, $pBreak); - } - - /** - * Get breaks - * - * @return array[] - */ - public function getBreaks() - { - return $this->breaks; - } - - /** - * Set merge on a cell range - * - * @param string $pRange Cell range (e.g. A1:E1) - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet - */ - public function mergeCells($pRange = 'A1:A1') - { - // Uppercase coordinate - $pRange = strtoupper($pRange); - - if (strpos($pRange, ':') !== false) { - $this->mergeCells[$pRange] = $pRange; - - // make sure cells are created - - // get the cells in the range - $aReferences = PHPExcel_Cell::extractAllCellReferencesInRange($pRange); - - // create upper left cell if it does not already exist - $upperLeft = $aReferences[0]; - if (!$this->cellExists($upperLeft)) { - $this->getCell($upperLeft)->setValueExplicit(null, PHPExcel_Cell_DataType::TYPE_NULL); - } - - // Blank out the rest of the cells in the range (if they exist) - $count = count($aReferences); - for ($i = 1; $i < $count; $i++) { - if ($this->cellExists($aReferences[$i])) { - $this->getCell($aReferences[$i])->setValueExplicit(null, PHPExcel_Cell_DataType::TYPE_NULL); - } - } - } else { - throw new PHPExcel_Exception('Merge must be set on a range of cells.'); - } - - return $this; - } - - /** - * Set merge on a cell range by using numeric cell coordinates - * - * @param int $pColumn1 Numeric column coordinate of the first cell - * @param int $pRow1 Numeric row coordinate of the first cell - * @param int $pColumn2 Numeric column coordinate of the last cell - * @param int $pRow2 Numeric row coordinate of the last cell - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet - */ - public function mergeCellsByColumnAndRow($pColumn1 = 0, $pRow1 = 1, $pColumn2 = 0, $pRow2 = 1) - { - $cellRange = PHPExcel_Cell::stringFromColumnIndex($pColumn1) . $pRow1 . ':' . PHPExcel_Cell::stringFromColumnIndex($pColumn2) . $pRow2; - return $this->mergeCells($cellRange); - } - - /** - * Remove merge on a cell range - * - * @param string $pRange Cell range (e.g. A1:E1) - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet - */ - public function unmergeCells($pRange = 'A1:A1') - { - // Uppercase coordinate - $pRange = strtoupper($pRange); - - if (strpos($pRange, ':') !== false) { - if (isset($this->mergeCells[$pRange])) { - unset($this->mergeCells[$pRange]); - } else { - throw new PHPExcel_Exception('Cell range ' . $pRange . ' not known as merged.'); - } - } else { - throw new PHPExcel_Exception('Merge can only be removed from a range of cells.'); - } - - return $this; - } - - /** - * Remove merge on a cell range by using numeric cell coordinates - * - * @param int $pColumn1 Numeric column coordinate of the first cell - * @param int $pRow1 Numeric row coordinate of the first cell - * @param int $pColumn2 Numeric column coordinate of the last cell - * @param int $pRow2 Numeric row coordinate of the last cell - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet - */ - public function unmergeCellsByColumnAndRow($pColumn1 = 0, $pRow1 = 1, $pColumn2 = 0, $pRow2 = 1) - { - $cellRange = PHPExcel_Cell::stringFromColumnIndex($pColumn1) . $pRow1 . ':' . PHPExcel_Cell::stringFromColumnIndex($pColumn2) . $pRow2; - return $this->unmergeCells($cellRange); - } - - /** - * Get merge cells array. - * - * @return array[] - */ - public function getMergeCells() - { - return $this->mergeCells; - } - - /** - * Set merge cells array for the entire sheet. Use instead mergeCells() to merge - * a single cell range. - * - * @param array - */ - public function setMergeCells($pValue = array()) - { - $this->mergeCells = $pValue; - return $this; - } - - /** - * Set protection on a cell range - * - * @param string $pRange Cell (e.g. A1) or cell range (e.g. A1:E1) - * @param string $pPassword Password to unlock the protection - * @param boolean $pAlreadyHashed If the password has already been hashed, set this to true - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet - */ - public function protectCells($pRange = 'A1', $pPassword = '', $pAlreadyHashed = false) - { - // Uppercase coordinate - $pRange = strtoupper($pRange); - - if (!$pAlreadyHashed) { - $pPassword = PHPExcel_Shared_PasswordHasher::hashPassword($pPassword); - } - $this->protectedCells[$pRange] = $pPassword; - - return $this; - } - - /** - * Set protection on a cell range by using numeric cell coordinates - * - * @param int $pColumn1 Numeric column coordinate of the first cell - * @param int $pRow1 Numeric row coordinate of the first cell - * @param int $pColumn2 Numeric column coordinate of the last cell - * @param int $pRow2 Numeric row coordinate of the last cell - * @param string $pPassword Password to unlock the protection - * @param boolean $pAlreadyHashed If the password has already been hashed, set this to true - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet - */ - public function protectCellsByColumnAndRow($pColumn1 = 0, $pRow1 = 1, $pColumn2 = 0, $pRow2 = 1, $pPassword = '', $pAlreadyHashed = false) - { - $cellRange = PHPExcel_Cell::stringFromColumnIndex($pColumn1) . $pRow1 . ':' . PHPExcel_Cell::stringFromColumnIndex($pColumn2) . $pRow2; - return $this->protectCells($cellRange, $pPassword, $pAlreadyHashed); - } - - /** - * Remove protection on a cell range - * - * @param string $pRange Cell (e.g. A1) or cell range (e.g. A1:E1) - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet - */ - public function unprotectCells($pRange = 'A1') - { - // Uppercase coordinate - $pRange = strtoupper($pRange); - - if (isset($this->protectedCells[$pRange])) { - unset($this->protectedCells[$pRange]); - } else { - throw new PHPExcel_Exception('Cell range ' . $pRange . ' not known as protected.'); - } - return $this; - } - - /** - * Remove protection on a cell range by using numeric cell coordinates - * - * @param int $pColumn1 Numeric column coordinate of the first cell - * @param int $pRow1 Numeric row coordinate of the first cell - * @param int $pColumn2 Numeric column coordinate of the last cell - * @param int $pRow2 Numeric row coordinate of the last cell - * @param string $pPassword Password to unlock the protection - * @param boolean $pAlreadyHashed If the password has already been hashed, set this to true - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet - */ - public function unprotectCellsByColumnAndRow($pColumn1 = 0, $pRow1 = 1, $pColumn2 = 0, $pRow2 = 1, $pPassword = '', $pAlreadyHashed = false) - { - $cellRange = PHPExcel_Cell::stringFromColumnIndex($pColumn1) . $pRow1 . ':' . PHPExcel_Cell::stringFromColumnIndex($pColumn2) . $pRow2; - return $this->unprotectCells($cellRange, $pPassword, $pAlreadyHashed); - } - - /** - * Get protected cells - * - * @return array[] - */ - public function getProtectedCells() - { - return $this->protectedCells; - } - - /** - * Get Autofilter - * - * @return PHPExcel_Worksheet_AutoFilter - */ - public function getAutoFilter() - { - return $this->autoFilter; - } - - /** - * Set AutoFilter - * - * @param PHPExcel_Worksheet_AutoFilter|string $pValue - * A simple string containing a Cell range like 'A1:E10' is permitted for backward compatibility - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet - */ - public function setAutoFilter($pValue) - { - $pRange = strtoupper($pValue); - if (is_string($pValue)) { - $this->autoFilter->setRange($pValue); - } elseif (is_object($pValue) && ($pValue instanceof PHPExcel_Worksheet_AutoFilter)) { - $this->autoFilter = $pValue; - } - return $this; - } - - /** - * Set Autofilter Range by using numeric cell coordinates - * - * @param integer $pColumn1 Numeric column coordinate of the first cell - * @param integer $pRow1 Numeric row coordinate of the first cell - * @param integer $pColumn2 Numeric column coordinate of the second cell - * @param integer $pRow2 Numeric row coordinate of the second cell - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet - */ - public function setAutoFilterByColumnAndRow($pColumn1 = 0, $pRow1 = 1, $pColumn2 = 0, $pRow2 = 1) - { - return $this->setAutoFilter( - PHPExcel_Cell::stringFromColumnIndex($pColumn1) . $pRow1 - . ':' . - PHPExcel_Cell::stringFromColumnIndex($pColumn2) . $pRow2 - ); - } - - /** - * Remove autofilter - * - * @return PHPExcel_Worksheet - */ - public function removeAutoFilter() - { - $this->autoFilter->setRange(null); - return $this; - } - - /** - * Get Freeze Pane - * - * @return string - */ - public function getFreezePane() - { - return $this->freezePane; - } - - /** - * Freeze Pane - * - * @param string $pCell Cell (i.e. A2) - * Examples: - * A2 will freeze the rows above cell A2 (i.e row 1) - * B1 will freeze the columns to the left of cell B1 (i.e column A) - * B2 will freeze the rows above and to the left of cell A2 - * (i.e row 1 and column A) - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet - */ - public function freezePane($pCell = '') - { - // Uppercase coordinate - $pCell = strtoupper($pCell); - if (strpos($pCell, ':') === false && strpos($pCell, ',') === false) { - $this->freezePane = $pCell; - } else { - throw new PHPExcel_Exception('Freeze pane can not be set on a range of cells.'); - } - return $this; - } - - /** - * Freeze Pane by using numeric cell coordinates - * - * @param int $pColumn Numeric column coordinate of the cell - * @param int $pRow Numeric row coordinate of the cell - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet - */ - public function freezePaneByColumnAndRow($pColumn = 0, $pRow = 1) - { - return $this->freezePane(PHPExcel_Cell::stringFromColumnIndex($pColumn) . $pRow); - } - - /** - * Unfreeze Pane - * - * @return PHPExcel_Worksheet - */ - public function unfreezePane() - { - return $this->freezePane(''); - } - - /** - * Insert a new row, updating all possible related data - * - * @param int $pBefore Insert before this one - * @param int $pNumRows Number of rows to insert - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet - */ - public function insertNewRowBefore($pBefore = 1, $pNumRows = 1) - { - if ($pBefore >= 1) { - $objReferenceHelper = PHPExcel_ReferenceHelper::getInstance(); - $objReferenceHelper->insertNewBefore('A' . $pBefore, 0, $pNumRows, $this); - } else { - throw new PHPExcel_Exception("Rows can only be inserted before at least row 1."); - } - return $this; - } - - /** - * Insert a new column, updating all possible related data - * - * @param int $pBefore Insert before this one - * @param int $pNumCols Number of columns to insert - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet - */ - public function insertNewColumnBefore($pBefore = 'A', $pNumCols = 1) - { - if (!is_numeric($pBefore)) { - $objReferenceHelper = PHPExcel_ReferenceHelper::getInstance(); - $objReferenceHelper->insertNewBefore($pBefore . '1', $pNumCols, 0, $this); - } else { - throw new PHPExcel_Exception("Column references should not be numeric."); - } - return $this; - } - - /** - * Insert a new column, updating all possible related data - * - * @param int $pBefore Insert before this one (numeric column coordinate of the cell) - * @param int $pNumCols Number of columns to insert - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet - */ - public function insertNewColumnBeforeByIndex($pBefore = 0, $pNumCols = 1) - { - if ($pBefore >= 0) { - return $this->insertNewColumnBefore(PHPExcel_Cell::stringFromColumnIndex($pBefore), $pNumCols); - } else { - throw new PHPExcel_Exception("Columns can only be inserted before at least column A (0)."); - } - } - - /** - * Delete a row, updating all possible related data - * - * @param int $pRow Remove starting with this one - * @param int $pNumRows Number of rows to remove - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet - */ - public function removeRow($pRow = 1, $pNumRows = 1) - { - if ($pRow >= 1) { - $highestRow = $this->getHighestDataRow(); - $objReferenceHelper = PHPExcel_ReferenceHelper::getInstance(); - $objReferenceHelper->insertNewBefore('A' . ($pRow + $pNumRows), 0, -$pNumRows, $this); - for ($r = 0; $r < $pNumRows; ++$r) { - $this->getCellCacheController()->removeRow($highestRow); - --$highestRow; - } - } else { - throw new PHPExcel_Exception("Rows to be deleted should at least start from row 1."); - } - return $this; - } - - /** - * Remove a column, updating all possible related data - * - * @param string $pColumn Remove starting with this one - * @param int $pNumCols Number of columns to remove - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet - */ - public function removeColumn($pColumn = 'A', $pNumCols = 1) - { - if (!is_numeric($pColumn)) { - $highestColumn = $this->getHighestDataColumn(); - $pColumn = PHPExcel_Cell::stringFromColumnIndex(PHPExcel_Cell::columnIndexFromString($pColumn) - 1 + $pNumCols); - $objReferenceHelper = PHPExcel_ReferenceHelper::getInstance(); - $objReferenceHelper->insertNewBefore($pColumn . '1', -$pNumCols, 0, $this); - for ($c = 0; $c < $pNumCols; ++$c) { - $this->getCellCacheController()->removeColumn($highestColumn); - $highestColumn = PHPExcel_Cell::stringFromColumnIndex(PHPExcel_Cell::columnIndexFromString($highestColumn) - 2); - } - } else { - throw new PHPExcel_Exception("Column references should not be numeric."); - } - return $this; - } - - /** - * Remove a column, updating all possible related data - * - * @param int $pColumn Remove starting with this one (numeric column coordinate of the cell) - * @param int $pNumCols Number of columns to remove - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet - */ - public function removeColumnByIndex($pColumn = 0, $pNumCols = 1) - { - if ($pColumn >= 0) { - return $this->removeColumn(PHPExcel_Cell::stringFromColumnIndex($pColumn), $pNumCols); - } else { - throw new PHPExcel_Exception("Columns to be deleted should at least start from column 0"); - } - } - - /** - * Show gridlines? - * - * @return boolean - */ - public function getShowGridlines() - { - return $this->showGridlines; - } - - /** - * Set show gridlines - * - * @param boolean $pValue Show gridlines (true/false) - * @return PHPExcel_Worksheet - */ - public function setShowGridlines($pValue = false) - { - $this->showGridlines = $pValue; - return $this; - } - - /** - * Print gridlines? - * - * @return boolean - */ - public function getPrintGridlines() - { - return $this->printGridlines; - } - - /** - * Set print gridlines - * - * @param boolean $pValue Print gridlines (true/false) - * @return PHPExcel_Worksheet - */ - public function setPrintGridlines($pValue = false) - { - $this->printGridlines = $pValue; - return $this; - } - - /** - * Show row and column headers? - * - * @return boolean - */ - public function getShowRowColHeaders() - { - return $this->showRowColHeaders; - } - - /** - * Set show row and column headers - * - * @param boolean $pValue Show row and column headers (true/false) - * @return PHPExcel_Worksheet - */ - public function setShowRowColHeaders($pValue = false) - { - $this->showRowColHeaders = $pValue; - return $this; - } - - /** - * Show summary below? (Row/Column outlining) - * - * @return boolean - */ - public function getShowSummaryBelow() - { - return $this->showSummaryBelow; - } - - /** - * Set show summary below - * - * @param boolean $pValue Show summary below (true/false) - * @return PHPExcel_Worksheet - */ - public function setShowSummaryBelow($pValue = true) - { - $this->showSummaryBelow = $pValue; - return $this; - } - - /** - * Show summary right? (Row/Column outlining) - * - * @return boolean - */ - public function getShowSummaryRight() - { - return $this->showSummaryRight; - } - - /** - * Set show summary right - * - * @param boolean $pValue Show summary right (true/false) - * @return PHPExcel_Worksheet - */ - public function setShowSummaryRight($pValue = true) - { - $this->showSummaryRight = $pValue; - return $this; - } - - /** - * Get comments - * - * @return PHPExcel_Comment[] - */ - public function getComments() - { - return $this->comments; - } - - /** - * Set comments array for the entire sheet. - * - * @param array of PHPExcel_Comment - * @return PHPExcel_Worksheet - */ - public function setComments($pValue = array()) - { - $this->comments = $pValue; - - return $this; - } - - /** - * Get comment for cell - * - * @param string $pCellCoordinate Cell coordinate to get comment for - * @return PHPExcel_Comment - * @throws PHPExcel_Exception - */ - public function getComment($pCellCoordinate = 'A1') - { - // Uppercase coordinate - $pCellCoordinate = strtoupper($pCellCoordinate); - - if (strpos($pCellCoordinate, ':') !== false || strpos($pCellCoordinate, ',') !== false) { - throw new PHPExcel_Exception('Cell coordinate string can not be a range of cells.'); - } elseif (strpos($pCellCoordinate, '$') !== false) { - throw new PHPExcel_Exception('Cell coordinate string must not be absolute.'); - } elseif ($pCellCoordinate == '') { - throw new PHPExcel_Exception('Cell coordinate can not be zero-length string.'); - } else { - // Check if we already have a comment for this cell. - // If not, create a new comment. - if (isset($this->comments[$pCellCoordinate])) { - return $this->comments[$pCellCoordinate]; - } else { - $newComment = new PHPExcel_Comment(); - $this->comments[$pCellCoordinate] = $newComment; - return $newComment; - } - } - } - - /** - * Get comment for cell by using numeric cell coordinates - * - * @param int $pColumn Numeric column coordinate of the cell - * @param int $pRow Numeric row coordinate of the cell - * @return PHPExcel_Comment - */ - public function getCommentByColumnAndRow($pColumn = 0, $pRow = 1) - { - return $this->getComment(PHPExcel_Cell::stringFromColumnIndex($pColumn) . $pRow); - } - - /** - * Get selected cell - * - * @deprecated - * @return string - */ - public function getSelectedCell() - { - return $this->getSelectedCells(); - } - - /** - * Get active cell - * - * @return string Example: 'A1' - */ - public function getActiveCell() - { - return $this->activeCell; - } - - /** - * Get selected cells - * - * @return string - */ - public function getSelectedCells() - { - return $this->selectedCells; - } - - /** - * Selected cell - * - * @param string $pCoordinate Cell (i.e. A1) - * @return PHPExcel_Worksheet - */ - public function setSelectedCell($pCoordinate = 'A1') - { - return $this->setSelectedCells($pCoordinate); - } - - /** - * Select a range of cells. - * - * @param string $pCoordinate Cell range, examples: 'A1', 'B2:G5', 'A:C', '3:6' - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet - */ - public function setSelectedCells($pCoordinate = 'A1') - { - // Uppercase coordinate - $pCoordinate = strtoupper($pCoordinate); - - // Convert 'A' to 'A:A' - $pCoordinate = preg_replace('/^([A-Z]+)$/', '${1}:${1}', $pCoordinate); - - // Convert '1' to '1:1' - $pCoordinate = preg_replace('/^([0-9]+)$/', '${1}:${1}', $pCoordinate); - - // Convert 'A:C' to 'A1:C1048576' - $pCoordinate = preg_replace('/^([A-Z]+):([A-Z]+)$/', '${1}1:${2}1048576', $pCoordinate); - - // Convert '1:3' to 'A1:XFD3' - $pCoordinate = preg_replace('/^([0-9]+):([0-9]+)$/', 'A${1}:XFD${2}', $pCoordinate); - - if (strpos($pCoordinate, ':') !== false || strpos($pCoordinate, ',') !== false) { - list($first, ) = PHPExcel_Cell::splitRange($pCoordinate); - $this->activeCell = $first[0]; - } else { - $this->activeCell = $pCoordinate; - } - $this->selectedCells = $pCoordinate; - return $this; - } - - /** - * Selected cell by using numeric cell coordinates - * - * @param int $pColumn Numeric column coordinate of the cell - * @param int $pRow Numeric row coordinate of the cell - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet - */ - public function setSelectedCellByColumnAndRow($pColumn = 0, $pRow = 1) - { - return $this->setSelectedCells(PHPExcel_Cell::stringFromColumnIndex($pColumn) . $pRow); - } - - /** - * Get right-to-left - * - * @return boolean - */ - public function getRightToLeft() - { - return $this->rightToLeft; - } - - /** - * Set right-to-left - * - * @param boolean $value Right-to-left true/false - * @return PHPExcel_Worksheet - */ - public function setRightToLeft($value = false) - { - $this->rightToLeft = $value; - return $this; - } - - /** - * Fill worksheet from values in array - * - * @param array $source Source array - * @param mixed $nullValue Value in source array that stands for blank cell - * @param string $startCell Insert array starting from this cell address as the top left coordinate - * @param boolean $strictNullComparison Apply strict comparison when testing for null values in the array - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet - */ - public function fromArray($source = null, $nullValue = null, $startCell = 'A1', $strictNullComparison = false) - { - if (is_array($source)) { - // Convert a 1-D array to 2-D (for ease of looping) - if (!is_array(end($source))) { - $source = array($source); - } - - // start coordinate - list ($startColumn, $startRow) = PHPExcel_Cell::coordinateFromString($startCell); - - // Loop through $source - foreach ($source as $rowData) { - $currentColumn = $startColumn; - foreach ($rowData as $cellValue) { - if ($strictNullComparison) { - if ($cellValue !== $nullValue) { - // Set cell value - $this->getCell($currentColumn . $startRow)->setValue($cellValue); - } - } else { - if ($cellValue != $nullValue) { - // Set cell value - $this->getCell($currentColumn . $startRow)->setValue($cellValue); - } - } - ++$currentColumn; - } - ++$startRow; - } - } else { - throw new PHPExcel_Exception("Parameter \$source should be an array."); - } - return $this; - } - - /** - * Create array from a range of cells - * - * @param string $pRange Range of cells (i.e. "A1:B10"), or just one cell (i.e. "A1") - * @param mixed $nullValue Value returned in the array entry if a cell doesn't exist - * @param boolean $calculateFormulas Should formulas be calculated? - * @param boolean $formatData Should formatting be applied to cell values? - * @param boolean $returnCellRef False - Return a simple array of rows and columns indexed by number counting from zero - * True - Return rows and columns indexed by their actual row and column IDs - * @return array - */ - public function rangeToArray($pRange = 'A1', $nullValue = null, $calculateFormulas = true, $formatData = true, $returnCellRef = false) - { - // Returnvalue - $returnValue = array(); - // Identify the range that we need to extract from the worksheet - list($rangeStart, $rangeEnd) = PHPExcel_Cell::rangeBoundaries($pRange); - $minCol = PHPExcel_Cell::stringFromColumnIndex($rangeStart[0] -1); - $minRow = $rangeStart[1]; - $maxCol = PHPExcel_Cell::stringFromColumnIndex($rangeEnd[0] -1); - $maxRow = $rangeEnd[1]; - - $maxCol++; - // Loop through rows - $r = -1; - for ($row = $minRow; $row <= $maxRow; ++$row) { - $rRef = ($returnCellRef) ? $row : ++$r; - $c = -1; - // Loop through columns in the current row - for ($col = $minCol; $col != $maxCol; ++$col) { - $cRef = ($returnCellRef) ? $col : ++$c; - // Using getCell() will create a new cell if it doesn't already exist. We don't want that to happen - // so we test and retrieve directly against cellCollection - if ($this->cellCollection->isDataSet($col.$row)) { - // Cell exists - $cell = $this->cellCollection->getCacheData($col.$row); - if ($cell->getValue() !== null) { - if ($cell->getValue() instanceof PHPExcel_RichText) { - $returnValue[$rRef][$cRef] = $cell->getValue()->getPlainText(); - } else { - if ($calculateFormulas) { - $returnValue[$rRef][$cRef] = $cell->getCalculatedValue(); - } else { - $returnValue[$rRef][$cRef] = $cell->getValue(); - } - } - - if ($formatData) { - $style = $this->parent->getCellXfByIndex($cell->getXfIndex()); - $returnValue[$rRef][$cRef] = PHPExcel_Style_NumberFormat::toFormattedString( - $returnValue[$rRef][$cRef], - ($style && $style->getNumberFormat()) ? $style->getNumberFormat()->getFormatCode() : PHPExcel_Style_NumberFormat::FORMAT_GENERAL - ); - } - } else { - // Cell holds a NULL - $returnValue[$rRef][$cRef] = $nullValue; - } - } else { - // Cell doesn't exist - $returnValue[$rRef][$cRef] = $nullValue; - } - } - } - - // Return - return $returnValue; - } - - - /** - * Create array from a range of cells - * - * @param string $pNamedRange Name of the Named Range - * @param mixed $nullValue Value returned in the array entry if a cell doesn't exist - * @param boolean $calculateFormulas Should formulas be calculated? - * @param boolean $formatData Should formatting be applied to cell values? - * @param boolean $returnCellRef False - Return a simple array of rows and columns indexed by number counting from zero - * True - Return rows and columns indexed by their actual row and column IDs - * @return array - * @throws PHPExcel_Exception - */ - public function namedRangeToArray($pNamedRange = '', $nullValue = null, $calculateFormulas = true, $formatData = true, $returnCellRef = false) - { - $namedRange = PHPExcel_NamedRange::resolveRange($pNamedRange, $this); - if ($namedRange !== null) { - $pWorkSheet = $namedRange->getWorksheet(); - $pCellRange = $namedRange->getRange(); - - return $pWorkSheet->rangeToArray($pCellRange, $nullValue, $calculateFormulas, $formatData, $returnCellRef); - } - - throw new PHPExcel_Exception('Named Range '.$pNamedRange.' does not exist.'); - } - - - /** - * Create array from worksheet - * - * @param mixed $nullValue Value returned in the array entry if a cell doesn't exist - * @param boolean $calculateFormulas Should formulas be calculated? - * @param boolean $formatData Should formatting be applied to cell values? - * @param boolean $returnCellRef False - Return a simple array of rows and columns indexed by number counting from zero - * True - Return rows and columns indexed by their actual row and column IDs - * @return array - */ - public function toArray($nullValue = null, $calculateFormulas = true, $formatData = true, $returnCellRef = false) - { - // Garbage collect... - $this->garbageCollect(); - - // Identify the range that we need to extract from the worksheet - $maxCol = $this->getHighestColumn(); - $maxRow = $this->getHighestRow(); - // Return - return $this->rangeToArray('A1:'.$maxCol.$maxRow, $nullValue, $calculateFormulas, $formatData, $returnCellRef); - } - - /** - * Get row iterator - * - * @param integer $startRow The row number at which to start iterating - * @param integer $endRow The row number at which to stop iterating - * - * @return PHPExcel_Worksheet_RowIterator - */ - public function getRowIterator($startRow = 1, $endRow = null) - { - return new PHPExcel_Worksheet_RowIterator($this, $startRow, $endRow); - } - - /** - * Get column iterator - * - * @param string $startColumn The column address at which to start iterating - * @param string $endColumn The column address at which to stop iterating - * - * @return PHPExcel_Worksheet_ColumnIterator - */ - public function getColumnIterator($startColumn = 'A', $endColumn = null) - { - return new PHPExcel_Worksheet_ColumnIterator($this, $startColumn, $endColumn); - } - - /** - * Run PHPExcel garabage collector. - * - * @return PHPExcel_Worksheet - */ - public function garbageCollect() - { - // Flush cache - $this->cellCollection->getCacheData('A1'); - // Build a reference table from images -// $imageCoordinates = array(); -// $iterator = $this->getDrawingCollection()->getIterator(); -// while ($iterator->valid()) { -// $imageCoordinates[$iterator->current()->getCoordinates()] = true; -// -// $iterator->next(); -// } -// - // Lookup highest column and highest row if cells are cleaned - $colRow = $this->cellCollection->getHighestRowAndColumn(); - $highestRow = $colRow['row']; - $highestColumn = PHPExcel_Cell::columnIndexFromString($colRow['column']); - - // Loop through column dimensions - foreach ($this->columnDimensions as $dimension) { - $highestColumn = max($highestColumn, PHPExcel_Cell::columnIndexFromString($dimension->getColumnIndex())); - } - - // Loop through row dimensions - foreach ($this->rowDimensions as $dimension) { - $highestRow = max($highestRow, $dimension->getRowIndex()); - } - - // Cache values - if ($highestColumn < 0) { - $this->cachedHighestColumn = 'A'; - } else { - $this->cachedHighestColumn = PHPExcel_Cell::stringFromColumnIndex(--$highestColumn); - } - $this->cachedHighestRow = $highestRow; - - // Return - return $this; - } - - /** - * Get hash code - * - * @return string Hash code - */ - public function getHashCode() - { - if ($this->dirty) { - $this->hash = md5($this->title . $this->autoFilter . ($this->protection->isProtectionEnabled() ? 't' : 'f') . __CLASS__); - $this->dirty = false; - } - return $this->hash; - } - - /** - * Extract worksheet title from range. - * - * Example: extractSheetTitle("testSheet!A1") ==> 'A1' - * Example: extractSheetTitle("'testSheet 1'!A1", true) ==> array('testSheet 1', 'A1'); - * - * @param string $pRange Range to extract title from - * @param bool $returnRange Return range? (see example) - * @return mixed - */ - public static function extractSheetTitle($pRange, $returnRange = false) - { - // Sheet title included? - if (($sep = strpos($pRange, '!')) === false) { - return ''; - } - - if ($returnRange) { - return array(trim(substr($pRange, 0, $sep), "'"), substr($pRange, $sep + 1)); - } - - return substr($pRange, $sep + 1); - } - - /** - * Get hyperlink - * - * @param string $pCellCoordinate Cell coordinate to get hyperlink for - */ - public function getHyperlink($pCellCoordinate = 'A1') - { - // return hyperlink if we already have one - if (isset($this->hyperlinkCollection[$pCellCoordinate])) { - return $this->hyperlinkCollection[$pCellCoordinate]; - } - - // else create hyperlink - $this->hyperlinkCollection[$pCellCoordinate] = new PHPExcel_Cell_Hyperlink(); - return $this->hyperlinkCollection[$pCellCoordinate]; - } - - /** - * Set hyperlnk - * - * @param string $pCellCoordinate Cell coordinate to insert hyperlink - * @param PHPExcel_Cell_Hyperlink $pHyperlink - * @return PHPExcel_Worksheet - */ - public function setHyperlink($pCellCoordinate = 'A1', PHPExcel_Cell_Hyperlink $pHyperlink = null) - { - if ($pHyperlink === null) { - unset($this->hyperlinkCollection[$pCellCoordinate]); - } else { - $this->hyperlinkCollection[$pCellCoordinate] = $pHyperlink; - } - return $this; - } - - /** - * Hyperlink at a specific coordinate exists? - * - * @param string $pCoordinate - * @return boolean - */ - public function hyperlinkExists($pCoordinate = 'A1') - { - return isset($this->hyperlinkCollection[$pCoordinate]); - } - - /** - * Get collection of hyperlinks - * - * @return PHPExcel_Cell_Hyperlink[] - */ - public function getHyperlinkCollection() - { - return $this->hyperlinkCollection; - } - - /** - * Get data validation - * - * @param string $pCellCoordinate Cell coordinate to get data validation for - */ - public function getDataValidation($pCellCoordinate = 'A1') - { - // return data validation if we already have one - if (isset($this->dataValidationCollection[$pCellCoordinate])) { - return $this->dataValidationCollection[$pCellCoordinate]; - } - - // else create data validation - $this->dataValidationCollection[$pCellCoordinate] = new PHPExcel_Cell_DataValidation(); - return $this->dataValidationCollection[$pCellCoordinate]; - } - - /** - * Set data validation - * - * @param string $pCellCoordinate Cell coordinate to insert data validation - * @param PHPExcel_Cell_DataValidation $pDataValidation - * @return PHPExcel_Worksheet - */ - public function setDataValidation($pCellCoordinate = 'A1', PHPExcel_Cell_DataValidation $pDataValidation = null) - { - if ($pDataValidation === null) { - unset($this->dataValidationCollection[$pCellCoordinate]); - } else { - $this->dataValidationCollection[$pCellCoordinate] = $pDataValidation; - } - return $this; - } - - /** - * Data validation at a specific coordinate exists? - * - * @param string $pCoordinate - * @return boolean - */ - public function dataValidationExists($pCoordinate = 'A1') - { - return isset($this->dataValidationCollection[$pCoordinate]); - } - - /** - * Get collection of data validations - * - * @return PHPExcel_Cell_DataValidation[] - */ - public function getDataValidationCollection() - { - return $this->dataValidationCollection; - } - - /** - * Accepts a range, returning it as a range that falls within the current highest row and column of the worksheet - * - * @param string $range - * @return string Adjusted range value - */ - public function shrinkRangeToFit($range) - { - $maxCol = $this->getHighestColumn(); - $maxRow = $this->getHighestRow(); - $maxCol = PHPExcel_Cell::columnIndexFromString($maxCol); - - $rangeBlocks = explode(' ', $range); - foreach ($rangeBlocks as &$rangeSet) { - $rangeBoundaries = PHPExcel_Cell::getRangeBoundaries($rangeSet); - - if (PHPExcel_Cell::columnIndexFromString($rangeBoundaries[0][0]) > $maxCol) { - $rangeBoundaries[0][0] = PHPExcel_Cell::stringFromColumnIndex($maxCol); - } - if ($rangeBoundaries[0][1] > $maxRow) { - $rangeBoundaries[0][1] = $maxRow; - } - if (PHPExcel_Cell::columnIndexFromString($rangeBoundaries[1][0]) > $maxCol) { - $rangeBoundaries[1][0] = PHPExcel_Cell::stringFromColumnIndex($maxCol); - } - if ($rangeBoundaries[1][1] > $maxRow) { - $rangeBoundaries[1][1] = $maxRow; - } - $rangeSet = $rangeBoundaries[0][0].$rangeBoundaries[0][1].':'.$rangeBoundaries[1][0].$rangeBoundaries[1][1]; - } - unset($rangeSet); - $stRange = implode(' ', $rangeBlocks); - - return $stRange; - } - - /** - * Get tab color - * - * @return PHPExcel_Style_Color - */ - public function getTabColor() - { - if ($this->tabColor === null) { - $this->tabColor = new PHPExcel_Style_Color(); - } - return $this->tabColor; - } - - /** - * Reset tab color - * - * @return PHPExcel_Worksheet - */ - public function resetTabColor() - { - $this->tabColor = null; - unset($this->tabColor); - - return $this; - } - - /** - * Tab color set? - * - * @return boolean - */ - public function isTabColorSet() - { - return ($this->tabColor !== null); - } - - /** - * Copy worksheet (!= clone!) - * - * @return PHPExcel_Worksheet - */ - public function copy() - { - $copied = clone $this; - - return $copied; - } - - /** - * Implement PHP __clone to create a deep clone, not just a shallow copy. - */ - public function __clone() - { - foreach ($this as $key => $val) { - if ($key == 'parent') { - continue; - } - - if (is_object($val) || (is_array($val))) { - if ($key == 'cellCollection') { - $newCollection = clone $this->cellCollection; - $newCollection->copyCellCollection($this); - $this->cellCollection = $newCollection; - } elseif ($key == 'drawingCollection') { - $newCollection = clone $this->drawingCollection; - $this->drawingCollection = $newCollection; - } elseif (($key == 'autoFilter') && ($this->autoFilter instanceof PHPExcel_Worksheet_AutoFilter)) { - $newAutoFilter = clone $this->autoFilter; - $this->autoFilter = $newAutoFilter; - $this->autoFilter->setParent($this); - } else { - $this->{$key} = unserialize(serialize($val)); - } - } - } - } -/** - * Define the code name of the sheet - * - * @param null|string Same rule as Title minus space not allowed (but, like Excel, change silently space to underscore) - * @return objWorksheet - * @throws PHPExcel_Exception - */ - public function setCodeName($pValue = null) - { - // Is this a 'rename' or not? - if ($this->getCodeName() == $pValue) { - return $this; - } - $pValue = str_replace(' ', '_', $pValue);//Excel does this automatically without flinching, we are doing the same - // Syntax check - // throw an exception if not valid - self::checkSheetCodeName($pValue); - - // We use the same code that setTitle to find a valid codeName else not using a space (Excel don't like) but a '_' - - if ($this->getParent()) { - // Is there already such sheet name? - if ($this->getParent()->sheetCodeNameExists($pValue)) { - // Use name, but append with lowest possible integer - - if (PHPExcel_Shared_String::CountCharacters($pValue) > 29) { - $pValue = PHPExcel_Shared_String::Substring($pValue, 0, 29); - } - $i = 1; - while ($this->getParent()->sheetCodeNameExists($pValue . '_' . $i)) { - ++$i; - if ($i == 10) { - if (PHPExcel_Shared_String::CountCharacters($pValue) > 28) { - $pValue = PHPExcel_Shared_String::Substring($pValue, 0, 28); - } - } elseif ($i == 100) { - if (PHPExcel_Shared_String::CountCharacters($pValue) > 27) { - $pValue = PHPExcel_Shared_String::Substring($pValue, 0, 27); - } - } - } - - $pValue = $pValue . '_' . $i;// ok, we have a valid name - //codeName is'nt used in formula : no need to call for an update - //return $this->setTitle($altTitle, $updateFormulaCellReferences); - } - } - - $this->codeName=$pValue; - return $this; - } - /** - * Return the code name of the sheet - * - * @return null|string - */ - public function getCodeName() - { - return $this->codeName; - } - /** - * Sheet has a code name ? - * @return boolean - */ - public function hasCodeName() - { - return !(is_null($this->codeName)); - } -} diff --git a/application/third_party/PHPExcel/Worksheet/AutoFilter.php b/application/third_party/PHPExcel/Worksheet/AutoFilter.php deleted file mode 100644 index 6ec8a446..00000000 --- a/application/third_party/PHPExcel/Worksheet/AutoFilter.php +++ /dev/null @@ -1,846 +0,0 @@ -<?php - -/** - * PHPExcel_Worksheet_AutoFilter - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Worksheet - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Worksheet_AutoFilter -{ - /** - * Autofilter Worksheet - * - * @var PHPExcel_Worksheet - */ - private $workSheet; - - - /** - * Autofilter Range - * - * @var string - */ - private $range = ''; - - - /** - * Autofilter Column Ruleset - * - * @var array of PHPExcel_Worksheet_AutoFilter_Column - */ - private $columns = array(); - - - /** - * Create a new PHPExcel_Worksheet_AutoFilter - * - * @param string $pRange Cell range (i.e. A1:E10) - * @param PHPExcel_Worksheet $pSheet - */ - public function __construct($pRange = '', PHPExcel_Worksheet $pSheet = null) - { - $this->range = $pRange; - $this->workSheet = $pSheet; - } - - /** - * Get AutoFilter Parent Worksheet - * - * @return PHPExcel_Worksheet - */ - public function getParent() - { - return $this->workSheet; - } - - /** - * Set AutoFilter Parent Worksheet - * - * @param PHPExcel_Worksheet $pSheet - * @return PHPExcel_Worksheet_AutoFilter - */ - public function setParent(PHPExcel_Worksheet $pSheet = null) - { - $this->workSheet = $pSheet; - - return $this; - } - - /** - * Get AutoFilter Range - * - * @return string - */ - public function getRange() - { - return $this->range; - } - - /** - * Set AutoFilter Range - * - * @param string $pRange Cell range (i.e. A1:E10) - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet_AutoFilter - */ - public function setRange($pRange = '') - { - // Uppercase coordinate - $cellAddress = explode('!', strtoupper($pRange)); - if (count($cellAddress) > 1) { - list($worksheet, $pRange) = $cellAddress; - } - - if (strpos($pRange, ':') !== false) { - $this->range = $pRange; - } elseif (empty($pRange)) { - $this->range = ''; - } else { - throw new PHPExcel_Exception('Autofilter must be set on a range of cells.'); - } - - if (empty($pRange)) { - // Discard all column rules - $this->columns = array(); - } else { - // Discard any column rules that are no longer valid within this range - list($rangeStart, $rangeEnd) = PHPExcel_Cell::rangeBoundaries($this->range); - foreach ($this->columns as $key => $value) { - $colIndex = PHPExcel_Cell::columnIndexFromString($key); - if (($rangeStart[0] > $colIndex) || ($rangeEnd[0] < $colIndex)) { - unset($this->columns[$key]); - } - } - } - - return $this; - } - - /** - * Get all AutoFilter Columns - * - * @throws PHPExcel_Exception - * @return array of PHPExcel_Worksheet_AutoFilter_Column - */ - public function getColumns() - { - return $this->columns; - } - - /** - * Validate that the specified column is in the AutoFilter range - * - * @param string $column Column name (e.g. A) - * @throws PHPExcel_Exception - * @return integer The column offset within the autofilter range - */ - public function testColumnInRange($column) - { - if (empty($this->range)) { - throw new PHPExcel_Exception("No autofilter range is defined."); - } - - $columnIndex = PHPExcel_Cell::columnIndexFromString($column); - list($rangeStart, $rangeEnd) = PHPExcel_Cell::rangeBoundaries($this->range); - if (($rangeStart[0] > $columnIndex) || ($rangeEnd[0] < $columnIndex)) { - throw new PHPExcel_Exception("Column is outside of current autofilter range."); - } - - return $columnIndex - $rangeStart[0]; - } - - /** - * Get a specified AutoFilter Column Offset within the defined AutoFilter range - * - * @param string $pColumn Column name (e.g. A) - * @throws PHPExcel_Exception - * @return integer The offset of the specified column within the autofilter range - */ - public function getColumnOffset($pColumn) - { - return $this->testColumnInRange($pColumn); - } - - /** - * Get a specified AutoFilter Column - * - * @param string $pColumn Column name (e.g. A) - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet_AutoFilter_Column - */ - public function getColumn($pColumn) - { - $this->testColumnInRange($pColumn); - - if (!isset($this->columns[$pColumn])) { - $this->columns[$pColumn] = new PHPExcel_Worksheet_AutoFilter_Column($pColumn, $this); - } - - return $this->columns[$pColumn]; - } - - /** - * Get a specified AutoFilter Column by it's offset - * - * @param integer $pColumnOffset Column offset within range (starting from 0) - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet_AutoFilter_Column - */ - public function getColumnByOffset($pColumnOffset = 0) - { - list($rangeStart, $rangeEnd) = PHPExcel_Cell::rangeBoundaries($this->range); - $pColumn = PHPExcel_Cell::stringFromColumnIndex($rangeStart[0] + $pColumnOffset - 1); - - return $this->getColumn($pColumn); - } - - /** - * Set AutoFilter - * - * @param PHPExcel_Worksheet_AutoFilter_Column|string $pColumn - * A simple string containing a Column ID like 'A' is permitted - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet_AutoFilter - */ - public function setColumn($pColumn) - { - if ((is_string($pColumn)) && (!empty($pColumn))) { - $column = $pColumn; - } elseif (is_object($pColumn) && ($pColumn instanceof PHPExcel_Worksheet_AutoFilter_Column)) { - $column = $pColumn->getColumnIndex(); - } else { - throw new PHPExcel_Exception("Column is not within the autofilter range."); - } - $this->testColumnInRange($column); - - if (is_string($pColumn)) { - $this->columns[$pColumn] = new PHPExcel_Worksheet_AutoFilter_Column($pColumn, $this); - } elseif (is_object($pColumn) && ($pColumn instanceof PHPExcel_Worksheet_AutoFilter_Column)) { - $pColumn->setParent($this); - $this->columns[$column] = $pColumn; - } - ksort($this->columns); - - return $this; - } - - /** - * Clear a specified AutoFilter Column - * - * @param string $pColumn Column name (e.g. A) - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet_AutoFilter - */ - public function clearColumn($pColumn) - { - $this->testColumnInRange($pColumn); - - if (isset($this->columns[$pColumn])) { - unset($this->columns[$pColumn]); - } - - return $this; - } - - /** - * Shift an AutoFilter Column Rule to a different column - * - * Note: This method bypasses validation of the destination column to ensure it is within this AutoFilter range. - * Nor does it verify whether any column rule already exists at $toColumn, but will simply overrideany existing value. - * Use with caution. - * - * @param string $fromColumn Column name (e.g. A) - * @param string $toColumn Column name (e.g. B) - * @return PHPExcel_Worksheet_AutoFilter - */ - public function shiftColumn($fromColumn = null, $toColumn = null) - { - $fromColumn = strtoupper($fromColumn); - $toColumn = strtoupper($toColumn); - - if (($fromColumn !== null) && (isset($this->columns[$fromColumn])) && ($toColumn !== null)) { - $this->columns[$fromColumn]->setParent(); - $this->columns[$fromColumn]->setColumnIndex($toColumn); - $this->columns[$toColumn] = $this->columns[$fromColumn]; - $this->columns[$toColumn]->setParent($this); - unset($this->columns[$fromColumn]); - - ksort($this->columns); - } - - return $this; - } - - - /** - * Test if cell value is in the defined set of values - * - * @param mixed $cellValue - * @param mixed[] $dataSet - * @return boolean - */ - private static function filterTestInSimpleDataSet($cellValue, $dataSet) - { - $dataSetValues = $dataSet['filterValues']; - $blanks = $dataSet['blanks']; - if (($cellValue == '') || ($cellValue === null)) { - return $blanks; - } - return in_array($cellValue, $dataSetValues); - } - - /** - * Test if cell value is in the defined set of Excel date values - * - * @param mixed $cellValue - * @param mixed[] $dataSet - * @return boolean - */ - private static function filterTestInDateGroupSet($cellValue, $dataSet) - { - $dateSet = $dataSet['filterValues']; - $blanks = $dataSet['blanks']; - if (($cellValue == '') || ($cellValue === null)) { - return $blanks; - } - - if (is_numeric($cellValue)) { - $dateValue = PHPExcel_Shared_Date::ExcelToPHP($cellValue); - if ($cellValue < 1) { - // Just the time part - $dtVal = date('His', $dateValue); - $dateSet = $dateSet['time']; - } elseif ($cellValue == floor($cellValue)) { - // Just the date part - $dtVal = date('Ymd', $dateValue); - $dateSet = $dateSet['date']; - } else { - // date and time parts - $dtVal = date('YmdHis', $dateValue); - $dateSet = $dateSet['dateTime']; - } - foreach ($dateSet as $dateValue) { - // Use of substr to extract value at the appropriate group level - if (substr($dtVal, 0, strlen($dateValue)) == $dateValue) { - return true; - } - } - } - return false; - } - - /** - * Test if cell value is within a set of values defined by a ruleset - * - * @param mixed $cellValue - * @param mixed[] $ruleSet - * @return boolean - */ - private static function filterTestInCustomDataSet($cellValue, $ruleSet) - { - $dataSet = $ruleSet['filterRules']; - $join = $ruleSet['join']; - $customRuleForBlanks = isset($ruleSet['customRuleForBlanks']) ? $ruleSet['customRuleForBlanks'] : false; - - if (!$customRuleForBlanks) { - // Blank cells are always ignored, so return a FALSE - if (($cellValue == '') || ($cellValue === null)) { - return false; - } - } - $returnVal = ($join == PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_AND); - foreach ($dataSet as $rule) { - if (is_numeric($rule['value'])) { - // Numeric values are tested using the appropriate operator - switch ($rule['operator']) { - case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL: - $retVal = ($cellValue == $rule['value']); - break; - case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_NOTEQUAL: - $retVal = ($cellValue != $rule['value']); - break; - case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_GREATERTHAN: - $retVal = ($cellValue > $rule['value']); - break; - case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_GREATERTHANOREQUAL: - $retVal = ($cellValue >= $rule['value']); - break; - case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_LESSTHAN: - $retVal = ($cellValue < $rule['value']); - break; - case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_LESSTHANOREQUAL: - $retVal = ($cellValue <= $rule['value']); - break; - } - } elseif ($rule['value'] == '') { - switch ($rule['operator']) { - case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL: - $retVal = (($cellValue == '') || ($cellValue === null)); - break; - case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_NOTEQUAL: - $retVal = (($cellValue != '') && ($cellValue !== null)); - break; - default: - $retVal = true; - break; - } - } else { - // String values are always tested for equality, factoring in for wildcards (hence a regexp test) - $retVal = preg_match('/^'.$rule['value'].'$/i', $cellValue); - } - // If there are multiple conditions, then we need to test both using the appropriate join operator - switch ($join) { - case PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_OR: - $returnVal = $returnVal || $retVal; - // Break as soon as we have a TRUE match for OR joins, - // to avoid unnecessary additional code execution - if ($returnVal) { - return $returnVal; - } - break; - case PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_AND: - $returnVal = $returnVal && $retVal; - break; - } - } - - return $returnVal; - } - - /** - * Test if cell date value is matches a set of values defined by a set of months - * - * @param mixed $cellValue - * @param mixed[] $monthSet - * @return boolean - */ - private static function filterTestInPeriodDateSet($cellValue, $monthSet) - { - // Blank cells are always ignored, so return a FALSE - if (($cellValue == '') || ($cellValue === null)) { - return false; - } - - if (is_numeric($cellValue)) { - $dateValue = date('m', PHPExcel_Shared_Date::ExcelToPHP($cellValue)); - if (in_array($dateValue, $monthSet)) { - return true; - } - } - - return false; - } - - /** - * Search/Replace arrays to convert Excel wildcard syntax to a regexp syntax for preg_matching - * - * @var array - */ - private static $fromReplace = array('\*', '\?', '~~', '~.*', '~.?'); - private static $toReplace = array('.*', '.', '~', '\*', '\?'); - - - /** - * Convert a dynamic rule daterange to a custom filter range expression for ease of calculation - * - * @param string $dynamicRuleType - * @param PHPExcel_Worksheet_AutoFilter_Column &$filterColumn - * @return mixed[] - */ - private function dynamicFilterDateRange($dynamicRuleType, &$filterColumn) - { - $rDateType = PHPExcel_Calculation_Functions::getReturnDateType(); - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC); - $val = $maxVal = null; - - $ruleValues = array(); - $baseDate = PHPExcel_Calculation_DateTime::DATENOW(); - // Calculate start/end dates for the required date range based on current date - switch ($dynamicRuleType) { - case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_LASTWEEK: - $baseDate = strtotime('-7 days', $baseDate); - break; - case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_NEXTWEEK: - $baseDate = strtotime('-7 days', $baseDate); - break; - case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_LASTMONTH: - $baseDate = strtotime('-1 month', gmmktime(0, 0, 0, 1, date('m', $baseDate), date('Y', $baseDate))); - break; - case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_NEXTMONTH: - $baseDate = strtotime('+1 month', gmmktime(0, 0, 0, 1, date('m', $baseDate), date('Y', $baseDate))); - break; - case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_LASTQUARTER: - $baseDate = strtotime('-3 month', gmmktime(0, 0, 0, 1, date('m', $baseDate), date('Y', $baseDate))); - break; - case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_NEXTQUARTER: - $baseDate = strtotime('+3 month', gmmktime(0, 0, 0, 1, date('m', $baseDate), date('Y', $baseDate))); - break; - case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_LASTYEAR: - $baseDate = strtotime('-1 year', gmmktime(0, 0, 0, 1, date('m', $baseDate), date('Y', $baseDate))); - break; - case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_NEXTYEAR: - $baseDate = strtotime('+1 year', gmmktime(0, 0, 0, 1, date('m', $baseDate), date('Y', $baseDate))); - break; - } - - switch ($dynamicRuleType) { - case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_TODAY: - case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_YESTERDAY: - case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_TOMORROW: - $maxVal = (int) PHPExcel_Shared_Date::PHPtoExcel(strtotime('+1 day', $baseDate)); - $val = (int) PHPExcel_Shared_Date::PHPToExcel($baseDate); - break; - case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_YEARTODATE: - $maxVal = (int) PHPExcel_Shared_Date::PHPtoExcel(strtotime('+1 day', $baseDate)); - $val = (int) PHPExcel_Shared_Date::PHPToExcel(gmmktime(0, 0, 0, 1, 1, date('Y', $baseDate))); - break; - case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_THISYEAR: - case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_LASTYEAR: - case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_NEXTYEAR: - $maxVal = (int) PHPExcel_Shared_Date::PHPToExcel(gmmktime(0, 0, 0, 31, 12, date('Y', $baseDate))); - ++$maxVal; - $val = (int) PHPExcel_Shared_Date::PHPToExcel(gmmktime(0, 0, 0, 1, 1, date('Y', $baseDate))); - break; - case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_THISQUARTER: - case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_LASTQUARTER: - case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_NEXTQUARTER: - $thisMonth = date('m', $baseDate); - $thisQuarter = floor(--$thisMonth / 3); - $maxVal = (int) PHPExcel_Shared_Date::PHPtoExcel(gmmktime(0, 0, 0, date('t', $baseDate), (1+$thisQuarter)*3, date('Y', $baseDate))); - ++$maxVal; - $val = (int) PHPExcel_Shared_Date::PHPToExcel(gmmktime(0, 0, 0, 1, 1+$thisQuarter*3, date('Y', $baseDate))); - break; - case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_THISMONTH: - case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_LASTMONTH: - case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_NEXTMONTH: - $maxVal = (int) PHPExcel_Shared_Date::PHPtoExcel(gmmktime(0, 0, 0, date('t', $baseDate), date('m', $baseDate), date('Y', $baseDate))); - ++$maxVal; - $val = (int) PHPExcel_Shared_Date::PHPToExcel(gmmktime(0, 0, 0, 1, date('m', $baseDate), date('Y', $baseDate))); - break; - case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_THISWEEK: - case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_LASTWEEK: - case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_NEXTWEEK: - $dayOfWeek = date('w', $baseDate); - $val = (int) PHPExcel_Shared_Date::PHPToExcel($baseDate) - $dayOfWeek; - $maxVal = $val + 7; - break; - } - - switch ($dynamicRuleType) { - // Adjust Today dates for Yesterday and Tomorrow - case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_YESTERDAY: - --$maxVal; - --$val; - break; - case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_TOMORROW: - ++$maxVal; - ++$val; - break; - } - - // Set the filter column rule attributes ready for writing - $filterColumn->setAttributes(array('val' => $val, 'maxVal' => $maxVal)); - - // Set the rules for identifying rows for hide/show - $ruleValues[] = array('operator' => PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_GREATERTHANOREQUAL, 'value' => $val); - $ruleValues[] = array('operator' => PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_LESSTHAN, 'value' => $maxVal); - PHPExcel_Calculation_Functions::setReturnDateType($rDateType); - - return array('method' => 'filterTestInCustomDataSet', 'arguments' => array('filterRules' => $ruleValues, 'join' => PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_AND)); - } - - private function calculateTopTenValue($columnID, $startRow, $endRow, $ruleType, $ruleValue) - { - $range = $columnID.$startRow.':'.$columnID.$endRow; - $dataValues = PHPExcel_Calculation_Functions::flattenArray($this->workSheet->rangeToArray($range, null, true, false)); - - $dataValues = array_filter($dataValues); - if ($ruleType == PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_TOP) { - rsort($dataValues); - } else { - sort($dataValues); - } - - return array_pop(array_slice($dataValues, 0, $ruleValue)); - } - - /** - * Apply the AutoFilter rules to the AutoFilter Range - * - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet_AutoFilter - */ - public function showHideRows() - { - list($rangeStart, $rangeEnd) = PHPExcel_Cell::rangeBoundaries($this->range); - - // The heading row should always be visible -// echo 'AutoFilter Heading Row ', $rangeStart[1],' is always SHOWN',PHP_EOL; - $this->workSheet->getRowDimension($rangeStart[1])->setVisible(true); - - $columnFilterTests = array(); - foreach ($this->columns as $columnID => $filterColumn) { - $rules = $filterColumn->getRules(); - switch ($filterColumn->getFilterType()) { - case PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_FILTER: - $ruleValues = array(); - // Build a list of the filter value selections - foreach ($rules as $rule) { - $ruleType = $rule->getRuleType(); - $ruleValues[] = $rule->getValue(); - } - // Test if we want to include blanks in our filter criteria - $blanks = false; - $ruleDataSet = array_filter($ruleValues); - if (count($ruleValues) != count($ruleDataSet)) { - $blanks = true; - } - if ($ruleType == PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_FILTER) { - // Filter on absolute values - $columnFilterTests[$columnID] = array( - 'method' => 'filterTestInSimpleDataSet', - 'arguments' => array('filterValues' => $ruleDataSet, 'blanks' => $blanks) - ); - } else { - // Filter on date group values - $arguments = array( - 'date' => array(), - 'time' => array(), - 'dateTime' => array(), - ); - foreach ($ruleDataSet as $ruleValue) { - $date = $time = ''; - if ((isset($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_YEAR])) && - ($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_YEAR] !== '')) { - $date .= sprintf('%04d', $ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_YEAR]); - } - if ((isset($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_MONTH])) && - ($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_MONTH] != '')) { - $date .= sprintf('%02d', $ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_MONTH]); - } - if ((isset($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_DAY])) && - ($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_DAY] !== '')) { - $date .= sprintf('%02d', $ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_DAY]); - } - if ((isset($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_HOUR])) && - ($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_HOUR] !== '')) { - $time .= sprintf('%02d', $ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_HOUR]); - } - if ((isset($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_MINUTE])) && - ($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_MINUTE] !== '')) { - $time .= sprintf('%02d', $ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_MINUTE]); - } - if ((isset($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_SECOND])) && - ($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_SECOND] !== '')) { - $time .= sprintf('%02d', $ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_SECOND]); - } - $dateTime = $date . $time; - $arguments['date'][] = $date; - $arguments['time'][] = $time; - $arguments['dateTime'][] = $dateTime; - } - // Remove empty elements - $arguments['date'] = array_filter($arguments['date']); - $arguments['time'] = array_filter($arguments['time']); - $arguments['dateTime'] = array_filter($arguments['dateTime']); - $columnFilterTests[$columnID] = array( - 'method' => 'filterTestInDateGroupSet', - 'arguments' => array('filterValues' => $arguments, 'blanks' => $blanks) - ); - } - break; - case PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_CUSTOMFILTER: - $customRuleForBlanks = false; - $ruleValues = array(); - // Build a list of the filter value selections - foreach ($rules as $rule) { - $ruleType = $rule->getRuleType(); - $ruleValue = $rule->getValue(); - if (!is_numeric($ruleValue)) { - // Convert to a regexp allowing for regexp reserved characters, wildcards and escaped wildcards - $ruleValue = preg_quote($ruleValue); - $ruleValue = str_replace(self::$fromReplace, self::$toReplace, $ruleValue); - if (trim($ruleValue) == '') { - $customRuleForBlanks = true; - $ruleValue = trim($ruleValue); - } - } - $ruleValues[] = array('operator' => $rule->getOperator(), 'value' => $ruleValue); - } - $join = $filterColumn->getJoin(); - $columnFilterTests[$columnID] = array( - 'method' => 'filterTestInCustomDataSet', - 'arguments' => array('filterRules' => $ruleValues, 'join' => $join, 'customRuleForBlanks' => $customRuleForBlanks) - ); - break; - case PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_DYNAMICFILTER: - $ruleValues = array(); - foreach ($rules as $rule) { - // We should only ever have one Dynamic Filter Rule anyway - $dynamicRuleType = $rule->getGrouping(); - if (($dynamicRuleType == PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_ABOVEAVERAGE) || - ($dynamicRuleType == PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_BELOWAVERAGE)) { - // Number (Average) based - // Calculate the average - $averageFormula = '=AVERAGE('.$columnID.($rangeStart[1]+1).':'.$columnID.$rangeEnd[1].')'; - $average = PHPExcel_Calculation::getInstance()->calculateFormula($averageFormula, null, $this->workSheet->getCell('A1')); - // Set above/below rule based on greaterThan or LessTan - $operator = ($dynamicRuleType === PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_ABOVEAVERAGE) - ? PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_GREATERTHAN - : PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_LESSTHAN; - $ruleValues[] = array('operator' => $operator, - 'value' => $average - ); - $columnFilterTests[$columnID] = array( - 'method' => 'filterTestInCustomDataSet', - 'arguments' => array('filterRules' => $ruleValues, 'join' => PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_OR) - ); - } else { - // Date based - if ($dynamicRuleType{0} == 'M' || $dynamicRuleType{0} == 'Q') { - // Month or Quarter - sscanf($dynamicRuleType, '%[A-Z]%d', $periodType, $period); - if ($periodType == 'M') { - $ruleValues = array($period); - } else { - --$period; - $periodEnd = (1+$period)*3; - $periodStart = 1+$period*3; - $ruleValues = range($periodStart, $periodEnd); - } - $columnFilterTests[$columnID] = array( - 'method' => 'filterTestInPeriodDateSet', - 'arguments' => $ruleValues - ); - $filterColumn->setAttributes(array()); - } else { - // Date Range - $columnFilterTests[$columnID] = $this->dynamicFilterDateRange($dynamicRuleType, $filterColumn); - break; - } - } - } - break; - case PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_TOPTENFILTER: - $ruleValues = array(); - $dataRowCount = $rangeEnd[1] - $rangeStart[1]; - foreach ($rules as $rule) { - // We should only ever have one Dynamic Filter Rule anyway - $toptenRuleType = $rule->getGrouping(); - $ruleValue = $rule->getValue(); - $ruleOperator = $rule->getOperator(); - } - if ($ruleOperator === PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_PERCENT) { - $ruleValue = floor($ruleValue * ($dataRowCount / 100)); - } - if ($ruleValue < 1) { - $ruleValue = 1; - } - if ($ruleValue > 500) { - $ruleValue = 500; - } - - $maxVal = $this->calculateTopTenValue($columnID, $rangeStart[1]+1, $rangeEnd[1], $toptenRuleType, $ruleValue); - - $operator = ($toptenRuleType == PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_TOP) - ? PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_GREATERTHANOREQUAL - : PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_LESSTHANOREQUAL; - $ruleValues[] = array('operator' => $operator, 'value' => $maxVal); - $columnFilterTests[$columnID] = array( - 'method' => 'filterTestInCustomDataSet', - 'arguments' => array('filterRules' => $ruleValues, 'join' => PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_OR) - ); - $filterColumn->setAttributes(array('maxVal' => $maxVal)); - break; - } - } - -// echo 'Column Filter Test CRITERIA',PHP_EOL; -// var_dump($columnFilterTests); -// - // Execute the column tests for each row in the autoFilter range to determine show/hide, - for ($row = $rangeStart[1]+1; $row <= $rangeEnd[1]; ++$row) { -// echo 'Testing Row = ', $row,PHP_EOL; - $result = true; - foreach ($columnFilterTests as $columnID => $columnFilterTest) { -// echo 'Testing cell ', $columnID.$row,PHP_EOL; - $cellValue = $this->workSheet->getCell($columnID.$row)->getCalculatedValue(); -// echo 'Value is ', $cellValue,PHP_EOL; - // Execute the filter test - $result = $result && - call_user_func_array( - array('PHPExcel_Worksheet_AutoFilter', $columnFilterTest['method']), - array($cellValue, $columnFilterTest['arguments']) - ); -// echo (($result) ? 'VALID' : 'INVALID'),PHP_EOL; - // If filter test has resulted in FALSE, exit the loop straightaway rather than running any more tests - if (!$result) { - break; - } - } - // Set show/hide for the row based on the result of the autoFilter result -// echo (($result) ? 'SHOW' : 'HIDE'),PHP_EOL; - $this->workSheet->getRowDimension($row)->setVisible($result); - } - - return $this; - } - - - /** - * Implement PHP __clone to create a deep clone, not just a shallow copy. - */ - public function __clone() - { - $vars = get_object_vars($this); - foreach ($vars as $key => $value) { - if (is_object($value)) { - if ($key == 'workSheet') { - // Detach from worksheet - $this->{$key} = null; - } else { - $this->{$key} = clone $value; - } - } elseif ((is_array($value)) && ($key == 'columns')) { - // The columns array of PHPExcel_Worksheet_AutoFilter objects - $this->{$key} = array(); - foreach ($value as $k => $v) { - $this->{$key}[$k] = clone $v; - // attach the new cloned Column to this new cloned Autofilter object - $this->{$key}[$k]->setParent($this); - } - } else { - $this->{$key} = $value; - } - } - } - - /** - * toString method replicates previous behavior by returning the range if object is - * referenced as a property of its parent. - */ - public function __toString() - { - return (string) $this->range; - } -} diff --git a/application/third_party/PHPExcel/Worksheet/AutoFilter/Column.php b/application/third_party/PHPExcel/Worksheet/AutoFilter/Column.php deleted file mode 100644 index d64fd816..00000000 --- a/application/third_party/PHPExcel/Worksheet/AutoFilter/Column.php +++ /dev/null @@ -1,405 +0,0 @@ -<?php - -/** - * PHPExcel_Worksheet_AutoFilter_Column - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Worksheet - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Worksheet_AutoFilter_Column -{ - const AUTOFILTER_FILTERTYPE_FILTER = 'filters'; - const AUTOFILTER_FILTERTYPE_CUSTOMFILTER = 'customFilters'; - // Supports no more than 2 rules, with an And/Or join criteria - // if more than 1 rule is defined - const AUTOFILTER_FILTERTYPE_DYNAMICFILTER = 'dynamicFilter'; - // Even though the filter rule is constant, the filtered data can vary - // e.g. filtered by date = TODAY - const AUTOFILTER_FILTERTYPE_TOPTENFILTER = 'top10'; - - /** - * Types of autofilter rules - * - * @var string[] - */ - private static $filterTypes = array( - // Currently we're not handling - // colorFilter - // extLst - // iconFilter - self::AUTOFILTER_FILTERTYPE_FILTER, - self::AUTOFILTER_FILTERTYPE_CUSTOMFILTER, - self::AUTOFILTER_FILTERTYPE_DYNAMICFILTER, - self::AUTOFILTER_FILTERTYPE_TOPTENFILTER, - ); - - /* Multiple Rule Connections */ - const AUTOFILTER_COLUMN_JOIN_AND = 'and'; - const AUTOFILTER_COLUMN_JOIN_OR = 'or'; - - /** - * Join options for autofilter rules - * - * @var string[] - */ - private static $ruleJoins = array( - self::AUTOFILTER_COLUMN_JOIN_AND, - self::AUTOFILTER_COLUMN_JOIN_OR, - ); - - /** - * Autofilter - * - * @var PHPExcel_Worksheet_AutoFilter - */ - private $parent; - - - /** - * Autofilter Column Index - * - * @var string - */ - private $columnIndex = ''; - - - /** - * Autofilter Column Filter Type - * - * @var string - */ - private $filterType = self::AUTOFILTER_FILTERTYPE_FILTER; - - - /** - * Autofilter Multiple Rules And/Or - * - * @var string - */ - private $join = self::AUTOFILTER_COLUMN_JOIN_OR; - - - /** - * Autofilter Column Rules - * - * @var array of PHPExcel_Worksheet_AutoFilter_Column_Rule - */ - private $ruleset = array(); - - - /** - * Autofilter Column Dynamic Attributes - * - * @var array of mixed - */ - private $attributes = array(); - - - /** - * Create a new PHPExcel_Worksheet_AutoFilter_Column - * - * @param string $pColumn Column (e.g. A) - * @param PHPExcel_Worksheet_AutoFilter $pParent Autofilter for this column - */ - public function __construct($pColumn, PHPExcel_Worksheet_AutoFilter $pParent = null) - { - $this->columnIndex = $pColumn; - $this->parent = $pParent; - } - - /** - * Get AutoFilter Column Index - * - * @return string - */ - public function getColumnIndex() - { - return $this->columnIndex; - } - - /** - * Set AutoFilter Column Index - * - * @param string $pColumn Column (e.g. A) - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet_AutoFilter_Column - */ - public function setColumnIndex($pColumn) - { - // Uppercase coordinate - $pColumn = strtoupper($pColumn); - if ($this->parent !== null) { - $this->parent->testColumnInRange($pColumn); - } - - $this->columnIndex = $pColumn; - - return $this; - } - - /** - * Get this Column's AutoFilter Parent - * - * @return PHPExcel_Worksheet_AutoFilter - */ - public function getParent() - { - return $this->parent; - } - - /** - * Set this Column's AutoFilter Parent - * - * @param PHPExcel_Worksheet_AutoFilter - * @return PHPExcel_Worksheet_AutoFilter_Column - */ - public function setParent(PHPExcel_Worksheet_AutoFilter $pParent = null) - { - $this->parent = $pParent; - - return $this; - } - - /** - * Get AutoFilter Type - * - * @return string - */ - public function getFilterType() - { - return $this->filterType; - } - - /** - * Set AutoFilter Type - * - * @param string $pFilterType - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet_AutoFilter_Column - */ - public function setFilterType($pFilterType = self::AUTOFILTER_FILTERTYPE_FILTER) - { - if (!in_array($pFilterType, self::$filterTypes)) { - throw new PHPExcel_Exception('Invalid filter type for column AutoFilter.'); - } - - $this->filterType = $pFilterType; - - return $this; - } - - /** - * Get AutoFilter Multiple Rules And/Or Join - * - * @return string - */ - public function getJoin() - { - return $this->join; - } - - /** - * Set AutoFilter Multiple Rules And/Or - * - * @param string $pJoin And/Or - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet_AutoFilter_Column - */ - public function setJoin($pJoin = self::AUTOFILTER_COLUMN_JOIN_OR) - { - // Lowercase And/Or - $pJoin = strtolower($pJoin); - if (!in_array($pJoin, self::$ruleJoins)) { - throw new PHPExcel_Exception('Invalid rule connection for column AutoFilter.'); - } - - $this->join = $pJoin; - - return $this; - } - - /** - * Set AutoFilter Attributes - * - * @param string[] $pAttributes - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet_AutoFilter_Column - */ - public function setAttributes($pAttributes = array()) - { - $this->attributes = $pAttributes; - - return $this; - } - - /** - * Set An AutoFilter Attribute - * - * @param string $pName Attribute Name - * @param string $pValue Attribute Value - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet_AutoFilter_Column - */ - public function setAttribute($pName, $pValue) - { - $this->attributes[$pName] = $pValue; - - return $this; - } - - /** - * Get AutoFilter Column Attributes - * - * @return string - */ - public function getAttributes() - { - return $this->attributes; - } - - /** - * Get specific AutoFilter Column Attribute - * - * @param string $pName Attribute Name - * @return string - */ - public function getAttribute($pName) - { - if (isset($this->attributes[$pName])) { - return $this->attributes[$pName]; - } - return null; - } - - /** - * Get all AutoFilter Column Rules - * - * @throws PHPExcel_Exception - * @return array of PHPExcel_Worksheet_AutoFilter_Column_Rule - */ - public function getRules() - { - return $this->ruleset; - } - - /** - * Get a specified AutoFilter Column Rule - * - * @param integer $pIndex Rule index in the ruleset array - * @return PHPExcel_Worksheet_AutoFilter_Column_Rule - */ - public function getRule($pIndex) - { - if (!isset($this->ruleset[$pIndex])) { - $this->ruleset[$pIndex] = new PHPExcel_Worksheet_AutoFilter_Column_Rule($this); - } - return $this->ruleset[$pIndex]; - } - - /** - * Create a new AutoFilter Column Rule in the ruleset - * - * @return PHPExcel_Worksheet_AutoFilter_Column_Rule - */ - public function createRule() - { - $this->ruleset[] = new PHPExcel_Worksheet_AutoFilter_Column_Rule($this); - - return end($this->ruleset); - } - - /** - * Add a new AutoFilter Column Rule to the ruleset - * - * @param PHPExcel_Worksheet_AutoFilter_Column_Rule $pRule - * @param boolean $returnRule Flag indicating whether the rule object or the column object should be returned - * @return PHPExcel_Worksheet_AutoFilter_Column|PHPExcel_Worksheet_AutoFilter_Column_Rule - */ - public function addRule(PHPExcel_Worksheet_AutoFilter_Column_Rule $pRule, $returnRule = true) - { - $pRule->setParent($this); - $this->ruleset[] = $pRule; - - return ($returnRule) ? $pRule : $this; - } - - /** - * Delete a specified AutoFilter Column Rule - * If the number of rules is reduced to 1, then we reset And/Or logic to Or - * - * @param integer $pIndex Rule index in the ruleset array - * @return PHPExcel_Worksheet_AutoFilter_Column - */ - public function deleteRule($pIndex) - { - if (isset($this->ruleset[$pIndex])) { - unset($this->ruleset[$pIndex]); - // If we've just deleted down to a single rule, then reset And/Or joining to Or - if (count($this->ruleset) <= 1) { - $this->setJoin(self::AUTOFILTER_COLUMN_JOIN_OR); - } - } - - return $this; - } - - /** - * Delete all AutoFilter Column Rules - * - * @return PHPExcel_Worksheet_AutoFilter_Column - */ - public function clearRules() - { - $this->ruleset = array(); - $this->setJoin(self::AUTOFILTER_COLUMN_JOIN_OR); - - return $this; - } - - /** - * Implement PHP __clone to create a deep clone, not just a shallow copy. - */ - public function __clone() - { - $vars = get_object_vars($this); - foreach ($vars as $key => $value) { - if (is_object($value)) { - if ($key == 'parent') { - // Detach from autofilter parent - $this->$key = null; - } else { - $this->$key = clone $value; - } - } elseif ((is_array($value)) && ($key == 'ruleset')) { - // The columns array of PHPExcel_Worksheet_AutoFilter objects - $this->$key = array(); - foreach ($value as $k => $v) { - $this->$key[$k] = clone $v; - // attach the new cloned Rule to this new cloned Autofilter Cloned object - $this->$key[$k]->setParent($this); - } - } else { - $this->$key = $value; - } - } - } -} diff --git a/application/third_party/PHPExcel/Worksheet/AutoFilter/Column/Rule.php b/application/third_party/PHPExcel/Worksheet/AutoFilter/Column/Rule.php deleted file mode 100644 index 39ad18bf..00000000 --- a/application/third_party/PHPExcel/Worksheet/AutoFilter/Column/Rule.php +++ /dev/null @@ -1,468 +0,0 @@ -<?php - -/** - * PHPExcel_Worksheet_AutoFilter_Column_Rule - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Worksheet - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Worksheet_AutoFilter_Column_Rule -{ - const AUTOFILTER_RULETYPE_FILTER = 'filter'; - const AUTOFILTER_RULETYPE_DATEGROUP = 'dateGroupItem'; - const AUTOFILTER_RULETYPE_CUSTOMFILTER = 'customFilter'; - const AUTOFILTER_RULETYPE_DYNAMICFILTER = 'dynamicFilter'; - const AUTOFILTER_RULETYPE_TOPTENFILTER = 'top10Filter'; - - private static $ruleTypes = array( - // Currently we're not handling - // colorFilter - // extLst - // iconFilter - self::AUTOFILTER_RULETYPE_FILTER, - self::AUTOFILTER_RULETYPE_DATEGROUP, - self::AUTOFILTER_RULETYPE_CUSTOMFILTER, - self::AUTOFILTER_RULETYPE_DYNAMICFILTER, - self::AUTOFILTER_RULETYPE_TOPTENFILTER, - ); - - const AUTOFILTER_RULETYPE_DATEGROUP_YEAR = 'year'; - const AUTOFILTER_RULETYPE_DATEGROUP_MONTH = 'month'; - const AUTOFILTER_RULETYPE_DATEGROUP_DAY = 'day'; - const AUTOFILTER_RULETYPE_DATEGROUP_HOUR = 'hour'; - const AUTOFILTER_RULETYPE_DATEGROUP_MINUTE = 'minute'; - const AUTOFILTER_RULETYPE_DATEGROUP_SECOND = 'second'; - - private static $dateTimeGroups = array( - self::AUTOFILTER_RULETYPE_DATEGROUP_YEAR, - self::AUTOFILTER_RULETYPE_DATEGROUP_MONTH, - self::AUTOFILTER_RULETYPE_DATEGROUP_DAY, - self::AUTOFILTER_RULETYPE_DATEGROUP_HOUR, - self::AUTOFILTER_RULETYPE_DATEGROUP_MINUTE, - self::AUTOFILTER_RULETYPE_DATEGROUP_SECOND, - ); - - const AUTOFILTER_RULETYPE_DYNAMIC_YESTERDAY = 'yesterday'; - const AUTOFILTER_RULETYPE_DYNAMIC_TODAY = 'today'; - const AUTOFILTER_RULETYPE_DYNAMIC_TOMORROW = 'tomorrow'; - const AUTOFILTER_RULETYPE_DYNAMIC_YEARTODATE = 'yearToDate'; - const AUTOFILTER_RULETYPE_DYNAMIC_THISYEAR = 'thisYear'; - const AUTOFILTER_RULETYPE_DYNAMIC_THISQUARTER = 'thisQuarter'; - const AUTOFILTER_RULETYPE_DYNAMIC_THISMONTH = 'thisMonth'; - const AUTOFILTER_RULETYPE_DYNAMIC_THISWEEK = 'thisWeek'; - const AUTOFILTER_RULETYPE_DYNAMIC_LASTYEAR = 'lastYear'; - const AUTOFILTER_RULETYPE_DYNAMIC_LASTQUARTER = 'lastQuarter'; - const AUTOFILTER_RULETYPE_DYNAMIC_LASTMONTH = 'lastMonth'; - const AUTOFILTER_RULETYPE_DYNAMIC_LASTWEEK = 'lastWeek'; - const AUTOFILTER_RULETYPE_DYNAMIC_NEXTYEAR = 'nextYear'; - const AUTOFILTER_RULETYPE_DYNAMIC_NEXTQUARTER = 'nextQuarter'; - const AUTOFILTER_RULETYPE_DYNAMIC_NEXTMONTH = 'nextMonth'; - const AUTOFILTER_RULETYPE_DYNAMIC_NEXTWEEK = 'nextWeek'; - const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_1 = 'M1'; - const AUTOFILTER_RULETYPE_DYNAMIC_JANUARY = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_1; - const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_2 = 'M2'; - const AUTOFILTER_RULETYPE_DYNAMIC_FEBRUARY = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_2; - const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_3 = 'M3'; - const AUTOFILTER_RULETYPE_DYNAMIC_MARCH = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_3; - const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_4 = 'M4'; - const AUTOFILTER_RULETYPE_DYNAMIC_APRIL = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_4; - const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_5 = 'M5'; - const AUTOFILTER_RULETYPE_DYNAMIC_MAY = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_5; - const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_6 = 'M6'; - const AUTOFILTER_RULETYPE_DYNAMIC_JUNE = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_6; - const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_7 = 'M7'; - const AUTOFILTER_RULETYPE_DYNAMIC_JULY = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_7; - const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_8 = 'M8'; - const AUTOFILTER_RULETYPE_DYNAMIC_AUGUST = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_8; - const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_9 = 'M9'; - const AUTOFILTER_RULETYPE_DYNAMIC_SEPTEMBER = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_9; - const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_10 = 'M10'; - const AUTOFILTER_RULETYPE_DYNAMIC_OCTOBER = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_10; - const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_11 = 'M11'; - const AUTOFILTER_RULETYPE_DYNAMIC_NOVEMBER = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_11; - const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_12 = 'M12'; - const AUTOFILTER_RULETYPE_DYNAMIC_DECEMBER = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_12; - const AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_1 = 'Q1'; - const AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_2 = 'Q2'; - const AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_3 = 'Q3'; - const AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_4 = 'Q4'; - const AUTOFILTER_RULETYPE_DYNAMIC_ABOVEAVERAGE = 'aboveAverage'; - const AUTOFILTER_RULETYPE_DYNAMIC_BELOWAVERAGE = 'belowAverage'; - - private static $dynamicTypes = array( - self::AUTOFILTER_RULETYPE_DYNAMIC_YESTERDAY, - self::AUTOFILTER_RULETYPE_DYNAMIC_TODAY, - self::AUTOFILTER_RULETYPE_DYNAMIC_TOMORROW, - self::AUTOFILTER_RULETYPE_DYNAMIC_YEARTODATE, - self::AUTOFILTER_RULETYPE_DYNAMIC_THISYEAR, - self::AUTOFILTER_RULETYPE_DYNAMIC_THISQUARTER, - self::AUTOFILTER_RULETYPE_DYNAMIC_THISMONTH, - self::AUTOFILTER_RULETYPE_DYNAMIC_THISWEEK, - self::AUTOFILTER_RULETYPE_DYNAMIC_LASTYEAR, - self::AUTOFILTER_RULETYPE_DYNAMIC_LASTQUARTER, - self::AUTOFILTER_RULETYPE_DYNAMIC_LASTMONTH, - self::AUTOFILTER_RULETYPE_DYNAMIC_LASTWEEK, - self::AUTOFILTER_RULETYPE_DYNAMIC_NEXTYEAR, - self::AUTOFILTER_RULETYPE_DYNAMIC_NEXTQUARTER, - self::AUTOFILTER_RULETYPE_DYNAMIC_NEXTMONTH, - self::AUTOFILTER_RULETYPE_DYNAMIC_NEXTWEEK, - self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_1, - self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_2, - self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_3, - self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_4, - self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_5, - self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_6, - self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_7, - self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_8, - self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_9, - self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_10, - self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_11, - self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_12, - self::AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_1, - self::AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_2, - self::AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_3, - self::AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_4, - self::AUTOFILTER_RULETYPE_DYNAMIC_ABOVEAVERAGE, - self::AUTOFILTER_RULETYPE_DYNAMIC_BELOWAVERAGE, - ); - - /* - * The only valid filter rule operators for filter and customFilter types are: - * <xsd:enumeration value="equal"/> - * <xsd:enumeration value="lessThan"/> - * <xsd:enumeration value="lessThanOrEqual"/> - * <xsd:enumeration value="notEqual"/> - * <xsd:enumeration value="greaterThanOrEqual"/> - * <xsd:enumeration value="greaterThan"/> - */ - const AUTOFILTER_COLUMN_RULE_EQUAL = 'equal'; - const AUTOFILTER_COLUMN_RULE_NOTEQUAL = 'notEqual'; - const AUTOFILTER_COLUMN_RULE_GREATERTHAN = 'greaterThan'; - const AUTOFILTER_COLUMN_RULE_GREATERTHANOREQUAL = 'greaterThanOrEqual'; - const AUTOFILTER_COLUMN_RULE_LESSTHAN = 'lessThan'; - const AUTOFILTER_COLUMN_RULE_LESSTHANOREQUAL = 'lessThanOrEqual'; - - private static $operators = array( - self::AUTOFILTER_COLUMN_RULE_EQUAL, - self::AUTOFILTER_COLUMN_RULE_NOTEQUAL, - self::AUTOFILTER_COLUMN_RULE_GREATERTHAN, - self::AUTOFILTER_COLUMN_RULE_GREATERTHANOREQUAL, - self::AUTOFILTER_COLUMN_RULE_LESSTHAN, - self::AUTOFILTER_COLUMN_RULE_LESSTHANOREQUAL, - ); - - const AUTOFILTER_COLUMN_RULE_TOPTEN_BY_VALUE = 'byValue'; - const AUTOFILTER_COLUMN_RULE_TOPTEN_PERCENT = 'byPercent'; - - private static $topTenValue = array( - self::AUTOFILTER_COLUMN_RULE_TOPTEN_BY_VALUE, - self::AUTOFILTER_COLUMN_RULE_TOPTEN_PERCENT, - ); - - const AUTOFILTER_COLUMN_RULE_TOPTEN_TOP = 'top'; - const AUTOFILTER_COLUMN_RULE_TOPTEN_BOTTOM = 'bottom'; - - private static $topTenType = array( - self::AUTOFILTER_COLUMN_RULE_TOPTEN_TOP, - self::AUTOFILTER_COLUMN_RULE_TOPTEN_BOTTOM, - ); - - - /* Rule Operators (Numeric, Boolean etc) */ -// const AUTOFILTER_COLUMN_RULE_BETWEEN = 'between'; // greaterThanOrEqual 1 && lessThanOrEqual 2 - /* Rule Operators (Numeric Special) which are translated to standard numeric operators with calculated values */ -// const AUTOFILTER_COLUMN_RULE_TOPTEN = 'topTen'; // greaterThan calculated value -// const AUTOFILTER_COLUMN_RULE_TOPTENPERCENT = 'topTenPercent'; // greaterThan calculated value -// const AUTOFILTER_COLUMN_RULE_ABOVEAVERAGE = 'aboveAverage'; // Value is calculated as the average -// const AUTOFILTER_COLUMN_RULE_BELOWAVERAGE = 'belowAverage'; // Value is calculated as the average - /* Rule Operators (String) which are set as wild-carded values */ -// const AUTOFILTER_COLUMN_RULE_BEGINSWITH = 'beginsWith'; // A* -// const AUTOFILTER_COLUMN_RULE_ENDSWITH = 'endsWith'; // *Z -// const AUTOFILTER_COLUMN_RULE_CONTAINS = 'contains'; // *B* -// const AUTOFILTER_COLUMN_RULE_DOESNTCONTAIN = 'notEqual'; // notEqual *B* - /* Rule Operators (Date Special) which are translated to standard numeric operators with calculated values */ -// const AUTOFILTER_COLUMN_RULE_BEFORE = 'lessThan'; -// const AUTOFILTER_COLUMN_RULE_AFTER = 'greaterThan'; -// const AUTOFILTER_COLUMN_RULE_YESTERDAY = 'yesterday'; -// const AUTOFILTER_COLUMN_RULE_TODAY = 'today'; -// const AUTOFILTER_COLUMN_RULE_TOMORROW = 'tomorrow'; -// const AUTOFILTER_COLUMN_RULE_LASTWEEK = 'lastWeek'; -// const AUTOFILTER_COLUMN_RULE_THISWEEK = 'thisWeek'; -// const AUTOFILTER_COLUMN_RULE_NEXTWEEK = 'nextWeek'; -// const AUTOFILTER_COLUMN_RULE_LASTMONTH = 'lastMonth'; -// const AUTOFILTER_COLUMN_RULE_THISMONTH = 'thisMonth'; -// const AUTOFILTER_COLUMN_RULE_NEXTMONTH = 'nextMonth'; -// const AUTOFILTER_COLUMN_RULE_LASTQUARTER = 'lastQuarter'; -// const AUTOFILTER_COLUMN_RULE_THISQUARTER = 'thisQuarter'; -// const AUTOFILTER_COLUMN_RULE_NEXTQUARTER = 'nextQuarter'; -// const AUTOFILTER_COLUMN_RULE_LASTYEAR = 'lastYear'; -// const AUTOFILTER_COLUMN_RULE_THISYEAR = 'thisYear'; -// const AUTOFILTER_COLUMN_RULE_NEXTYEAR = 'nextYear'; -// const AUTOFILTER_COLUMN_RULE_YEARTODATE = 'yearToDate'; // <dynamicFilter val="40909" type="yearToDate" maxVal="41113"/> -// const AUTOFILTER_COLUMN_RULE_ALLDATESINMONTH = 'allDatesInMonth'; // <dynamicFilter type="M2"/> for Month/February -// const AUTOFILTER_COLUMN_RULE_ALLDATESINQUARTER = 'allDatesInQuarter'; // <dynamicFilter type="Q2"/> for Quarter 2 - - /** - * Autofilter Column - * - * @var PHPExcel_Worksheet_AutoFilter_Column - */ - private $parent = null; - - - /** - * Autofilter Rule Type - * - * @var string - */ - private $ruleType = self::AUTOFILTER_RULETYPE_FILTER; - - - /** - * Autofilter Rule Value - * - * @var string - */ - private $value = ''; - - /** - * Autofilter Rule Operator - * - * @var string - */ - private $operator = self::AUTOFILTER_COLUMN_RULE_EQUAL; - - /** - * DateTimeGrouping Group Value - * - * @var string - */ - private $grouping = ''; - - - /** - * Create a new PHPExcel_Worksheet_AutoFilter_Column_Rule - * - * @param PHPExcel_Worksheet_AutoFilter_Column $pParent - */ - public function __construct(PHPExcel_Worksheet_AutoFilter_Column $pParent = null) - { - $this->parent = $pParent; - } - - /** - * Get AutoFilter Rule Type - * - * @return string - */ - public function getRuleType() - { - return $this->ruleType; - } - - /** - * Set AutoFilter Rule Type - * - * @param string $pRuleType - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet_AutoFilter_Column - */ - public function setRuleType($pRuleType = self::AUTOFILTER_RULETYPE_FILTER) - { - if (!in_array($pRuleType, self::$ruleTypes)) { - throw new PHPExcel_Exception('Invalid rule type for column AutoFilter Rule.'); - } - - $this->ruleType = $pRuleType; - - return $this; - } - - /** - * Get AutoFilter Rule Value - * - * @return string - */ - public function getValue() - { - return $this->value; - } - - /** - * Set AutoFilter Rule Value - * - * @param string|string[] $pValue - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet_AutoFilter_Column_Rule - */ - public function setValue($pValue = '') - { - if (is_array($pValue)) { - $grouping = -1; - foreach ($pValue as $key => $value) { - // Validate array entries - if (!in_array($key, self::$dateTimeGroups)) { - // Remove any invalid entries from the value array - unset($pValue[$key]); - } else { - // Work out what the dateTime grouping will be - $grouping = max($grouping, array_search($key, self::$dateTimeGroups)); - } - } - if (count($pValue) == 0) { - throw new PHPExcel_Exception('Invalid rule value for column AutoFilter Rule.'); - } - // Set the dateTime grouping that we've anticipated - $this->setGrouping(self::$dateTimeGroups[$grouping]); - } - $this->value = $pValue; - - return $this; - } - - /** - * Get AutoFilter Rule Operator - * - * @return string - */ - public function getOperator() - { - return $this->operator; - } - - /** - * Set AutoFilter Rule Operator - * - * @param string $pOperator - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet_AutoFilter_Column_Rule - */ - public function setOperator($pOperator = self::AUTOFILTER_COLUMN_RULE_EQUAL) - { - if (empty($pOperator)) { - $pOperator = self::AUTOFILTER_COLUMN_RULE_EQUAL; - } - if ((!in_array($pOperator, self::$operators)) && - (!in_array($pOperator, self::$topTenValue))) { - throw new PHPExcel_Exception('Invalid operator for column AutoFilter Rule.'); - } - $this->operator = $pOperator; - - return $this; - } - - /** - * Get AutoFilter Rule Grouping - * - * @return string - */ - public function getGrouping() - { - return $this->grouping; - } - - /** - * Set AutoFilter Rule Grouping - * - * @param string $pGrouping - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet_AutoFilter_Column_Rule - */ - public function setGrouping($pGrouping = null) - { - if (($pGrouping !== null) && - (!in_array($pGrouping, self::$dateTimeGroups)) && - (!in_array($pGrouping, self::$dynamicTypes)) && - (!in_array($pGrouping, self::$topTenType))) { - throw new PHPExcel_Exception('Invalid rule type for column AutoFilter Rule.'); - } - $this->grouping = $pGrouping; - - return $this; - } - - /** - * Set AutoFilter Rule - * - * @param string $pOperator - * @param string|string[] $pValue - * @param string $pGrouping - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet_AutoFilter_Column_Rule - */ - public function setRule($pOperator = self::AUTOFILTER_COLUMN_RULE_EQUAL, $pValue = '', $pGrouping = null) - { - $this->setOperator($pOperator); - $this->setValue($pValue); - // Only set grouping if it's been passed in as a user-supplied argument, - // otherwise we're calculating it when we setValue() and don't want to overwrite that - // If the user supplies an argumnet for grouping, then on their own head be it - if ($pGrouping !== null) { - $this->setGrouping($pGrouping); - } - - return $this; - } - - /** - * Get this Rule's AutoFilter Column Parent - * - * @return PHPExcel_Worksheet_AutoFilter_Column - */ - public function getParent() - { - return $this->parent; - } - - /** - * Set this Rule's AutoFilter Column Parent - * - * @param PHPExcel_Worksheet_AutoFilter_Column - * @return PHPExcel_Worksheet_AutoFilter_Column_Rule - */ - public function setParent(PHPExcel_Worksheet_AutoFilter_Column $pParent = null) - { - $this->parent = $pParent; - - return $this; - } - - /** - * Implement PHP __clone to create a deep clone, not just a shallow copy. - */ - public function __clone() - { - $vars = get_object_vars($this); - foreach ($vars as $key => $value) { - if (is_object($value)) { - if ($key == 'parent') { - // Detach from autofilter column parent - $this->$key = null; - } else { - $this->$key = clone $value; - } - } else { - $this->$key = $value; - } - } - } -} diff --git a/application/third_party/PHPExcel/Worksheet/BaseDrawing.php b/application/third_party/PHPExcel/Worksheet/BaseDrawing.php deleted file mode 100644 index 9ad15c70..00000000 --- a/application/third_party/PHPExcel/Worksheet/BaseDrawing.php +++ /dev/null @@ -1,507 +0,0 @@ -<?php - -/** - * PHPExcel_Worksheet_BaseDrawing - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Worksheet - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Worksheet_BaseDrawing implements PHPExcel_IComparable -{ - /** - * Image counter - * - * @var int - */ - private static $imageCounter = 0; - - /** - * Image index - * - * @var int - */ - private $imageIndex = 0; - - /** - * Name - * - * @var string - */ - protected $name; - - /** - * Description - * - * @var string - */ - protected $description; - - /** - * Worksheet - * - * @var PHPExcel_Worksheet - */ - protected $worksheet; - - /** - * Coordinates - * - * @var string - */ - protected $coordinates; - - /** - * Offset X - * - * @var int - */ - protected $offsetX; - - /** - * Offset Y - * - * @var int - */ - protected $offsetY; - - /** - * Width - * - * @var int - */ - protected $width; - - /** - * Height - * - * @var int - */ - protected $height; - - /** - * Proportional resize - * - * @var boolean - */ - protected $resizeProportional; - - /** - * Rotation - * - * @var int - */ - protected $rotation; - - /** - * Shadow - * - * @var PHPExcel_Worksheet_Drawing_Shadow - */ - protected $shadow; - - /** - * Create a new PHPExcel_Worksheet_BaseDrawing - */ - public function __construct() - { - // Initialise values - $this->name = ''; - $this->description = ''; - $this->worksheet = null; - $this->coordinates = 'A1'; - $this->offsetX = 0; - $this->offsetY = 0; - $this->width = 0; - $this->height = 0; - $this->resizeProportional = true; - $this->rotation = 0; - $this->shadow = new PHPExcel_Worksheet_Drawing_Shadow(); - - // Set image index - self::$imageCounter++; - $this->imageIndex = self::$imageCounter; - } - - /** - * Get image index - * - * @return int - */ - public function getImageIndex() - { - return $this->imageIndex; - } - - /** - * Get Name - * - * @return string - */ - public function getName() - { - return $this->name; - } - - /** - * Set Name - * - * @param string $pValue - * @return PHPExcel_Worksheet_BaseDrawing - */ - public function setName($pValue = '') - { - $this->name = $pValue; - return $this; - } - - /** - * Get Description - * - * @return string - */ - public function getDescription() - { - return $this->description; - } - - /** - * Set Description - * - * @param string $pValue - * @return PHPExcel_Worksheet_BaseDrawing - */ - public function setDescription($pValue = '') - { - $this->description = $pValue; - return $this; - } - - /** - * Get Worksheet - * - * @return PHPExcel_Worksheet - */ - public function getWorksheet() - { - return $this->worksheet; - } - - /** - * Set Worksheet - * - * @param PHPExcel_Worksheet $pValue - * @param bool $pOverrideOld If a Worksheet has already been assigned, overwrite it and remove image from old Worksheet? - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet_BaseDrawing - */ - public function setWorksheet(PHPExcel_Worksheet $pValue = null, $pOverrideOld = false) - { - if (is_null($this->worksheet)) { - // Add drawing to PHPExcel_Worksheet - $this->worksheet = $pValue; - $this->worksheet->getCell($this->coordinates); - $this->worksheet->getDrawingCollection()->append($this); - } else { - if ($pOverrideOld) { - // Remove drawing from old PHPExcel_Worksheet - $iterator = $this->worksheet->getDrawingCollection()->getIterator(); - - while ($iterator->valid()) { - if ($iterator->current()->getHashCode() == $this->getHashCode()) { - $this->worksheet->getDrawingCollection()->offsetUnset($iterator->key()); - $this->worksheet = null; - break; - } - } - - // Set new PHPExcel_Worksheet - $this->setWorksheet($pValue); - } else { - throw new PHPExcel_Exception("A PHPExcel_Worksheet has already been assigned. Drawings can only exist on one PHPExcel_Worksheet."); - } - } - return $this; - } - - /** - * Get Coordinates - * - * @return string - */ - public function getCoordinates() - { - return $this->coordinates; - } - - /** - * Set Coordinates - * - * @param string $pValue - * @return PHPExcel_Worksheet_BaseDrawing - */ - public function setCoordinates($pValue = 'A1') - { - $this->coordinates = $pValue; - return $this; - } - - /** - * Get OffsetX - * - * @return int - */ - public function getOffsetX() - { - return $this->offsetX; - } - - /** - * Set OffsetX - * - * @param int $pValue - * @return PHPExcel_Worksheet_BaseDrawing - */ - public function setOffsetX($pValue = 0) - { - $this->offsetX = $pValue; - return $this; - } - - /** - * Get OffsetY - * - * @return int - */ - public function getOffsetY() - { - return $this->offsetY; - } - - /** - * Set OffsetY - * - * @param int $pValue - * @return PHPExcel_Worksheet_BaseDrawing - */ - public function setOffsetY($pValue = 0) - { - $this->offsetY = $pValue; - return $this; - } - - /** - * Get Width - * - * @return int - */ - public function getWidth() - { - return $this->width; - } - - /** - * Set Width - * - * @param int $pValue - * @return PHPExcel_Worksheet_BaseDrawing - */ - public function setWidth($pValue = 0) - { - // Resize proportional? - if ($this->resizeProportional && $pValue != 0) { - $ratio = $this->height / ($this->width != 0 ? $this->width : 1); - $this->height = round($ratio * $pValue); - } - - // Set width - $this->width = $pValue; - - return $this; - } - - /** - * Get Height - * - * @return int - */ - public function getHeight() - { - return $this->height; - } - - /** - * Set Height - * - * @param int $pValue - * @return PHPExcel_Worksheet_BaseDrawing - */ - public function setHeight($pValue = 0) - { - // Resize proportional? - if ($this->resizeProportional && $pValue != 0) { - $ratio = $this->width / ($this->height != 0 ? $this->height : 1); - $this->width = round($ratio * $pValue); - } - - // Set height - $this->height = $pValue; - - return $this; - } - - /** - * Set width and height with proportional resize - * Example: - * <code> - * $objDrawing->setResizeProportional(true); - * $objDrawing->setWidthAndHeight(160,120); - * </code> - * - * @author Vincent@luo MSN:kele_100@hotmail.com - * @param int $width - * @param int $height - * @return PHPExcel_Worksheet_BaseDrawing - */ - public function setWidthAndHeight($width = 0, $height = 0) - { - $xratio = $width / ($this->width != 0 ? $this->width : 1); - $yratio = $height / ($this->height != 0 ? $this->height : 1); - if ($this->resizeProportional && !($width == 0 || $height == 0)) { - if (($xratio * $this->height) < $height) { - $this->height = ceil($xratio * $this->height); - $this->width = $width; - } else { - $this->width = ceil($yratio * $this->width); - $this->height = $height; - } - } else { - $this->width = $width; - $this->height = $height; - } - - return $this; - } - - /** - * Get ResizeProportional - * - * @return boolean - */ - public function getResizeProportional() - { - return $this->resizeProportional; - } - - /** - * Set ResizeProportional - * - * @param boolean $pValue - * @return PHPExcel_Worksheet_BaseDrawing - */ - public function setResizeProportional($pValue = true) - { - $this->resizeProportional = $pValue; - return $this; - } - - /** - * Get Rotation - * - * @return int - */ - public function getRotation() - { - return $this->rotation; - } - - /** - * Set Rotation - * - * @param int $pValue - * @return PHPExcel_Worksheet_BaseDrawing - */ - public function setRotation($pValue = 0) - { - $this->rotation = $pValue; - return $this; - } - - /** - * Get Shadow - * - * @return PHPExcel_Worksheet_Drawing_Shadow - */ - public function getShadow() - { - return $this->shadow; - } - - /** - * Set Shadow - * - * @param PHPExcel_Worksheet_Drawing_Shadow $pValue - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet_BaseDrawing - */ - public function setShadow(PHPExcel_Worksheet_Drawing_Shadow $pValue = null) - { - $this->shadow = $pValue; - return $this; - } - - /** - * Get hash code - * - * @return string Hash code - */ - public function getHashCode() - { - return md5( - $this->name . - $this->description . - $this->worksheet->getHashCode() . - $this->coordinates . - $this->offsetX . - $this->offsetY . - $this->width . - $this->height . - $this->rotation . - $this->shadow->getHashCode() . - __CLASS__ - ); - } - - /** - * Implement PHP __clone to create a deep clone, not just a shallow copy. - */ - public function __clone() - { - $vars = get_object_vars($this); - foreach ($vars as $key => $value) { - if (is_object($value)) { - $this->$key = clone $value; - } else { - $this->$key = $value; - } - } - } -} diff --git a/application/third_party/PHPExcel/Worksheet/CellIterator.php b/application/third_party/PHPExcel/Worksheet/CellIterator.php deleted file mode 100644 index 151c17f5..00000000 --- a/application/third_party/PHPExcel/Worksheet/CellIterator.php +++ /dev/null @@ -1,88 +0,0 @@ -<?php - -/** - * PHPExcel_Worksheet_CellIterator - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Worksheet - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -abstract class PHPExcel_Worksheet_CellIterator -{ - /** - * PHPExcel_Worksheet to iterate - * - * @var PHPExcel_Worksheet - */ - protected $subject; - - /** - * Current iterator position - * - * @var mixed - */ - protected $position = null; - - /** - * Iterate only existing cells - * - * @var boolean - */ - protected $onlyExistingCells = false; - - /** - * Destructor - */ - public function __destruct() - { - unset($this->subject); - } - - /** - * Get loop only existing cells - * - * @return boolean - */ - public function getIterateOnlyExistingCells() - { - return $this->onlyExistingCells; - } - - /** - * Validate start/end values for "IterateOnlyExistingCells" mode, and adjust if necessary - * - * @throws PHPExcel_Exception - */ - abstract protected function adjustForExistingOnlyRange(); - - /** - * Set the iterator to loop only existing cells - * - * @param boolean $value - * @throws PHPExcel_Exception - */ - public function setIterateOnlyExistingCells($value = true) - { - $this->onlyExistingCells = (boolean) $value; - - $this->adjustForExistingOnlyRange(); - } -} diff --git a/application/third_party/PHPExcel/Worksheet/Column.php b/application/third_party/PHPExcel/Worksheet/Column.php deleted file mode 100644 index 6d3f36d1..00000000 --- a/application/third_party/PHPExcel/Worksheet/Column.php +++ /dev/null @@ -1,86 +0,0 @@ -<?php - -/** - * PHPExcel_Worksheet_Column - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Worksheet - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Worksheet_Column -{ - /** - * PHPExcel_Worksheet - * - * @var PHPExcel_Worksheet - */ - private $parent; - - /** - * Column index - * - * @var string - */ - private $columnIndex; - - /** - * Create a new column - * - * @param PHPExcel_Worksheet $parent - * @param string $columnIndex - */ - public function __construct(PHPExcel_Worksheet $parent = null, $columnIndex = 'A') - { - // Set parent and column index - $this->parent = $parent; - $this->columnIndex = $columnIndex; - } - - /** - * Destructor - */ - public function __destruct() - { - unset($this->parent); - } - - /** - * Get column index - * - * @return string - */ - public function getColumnIndex() - { - return $this->columnIndex; - } - - /** - * Get cell iterator - * - * @param integer $startRow The row number at which to start iterating - * @param integer $endRow Optionally, the row number at which to stop iterating - * @return PHPExcel_Worksheet_CellIterator - */ - public function getCellIterator($startRow = 1, $endRow = null) - { - return new PHPExcel_Worksheet_ColumnCellIterator($this->parent, $this->columnIndex, $startRow, $endRow); - } -} diff --git a/application/third_party/PHPExcel/Worksheet/ColumnCellIterator.php b/application/third_party/PHPExcel/Worksheet/ColumnCellIterator.php deleted file mode 100644 index 7b8c2190..00000000 --- a/application/third_party/PHPExcel/Worksheet/ColumnCellIterator.php +++ /dev/null @@ -1,216 +0,0 @@ -<?php - -/** - * PHPExcel_Worksheet_ColumnCellIterator - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Worksheet - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Worksheet_ColumnCellIterator extends PHPExcel_Worksheet_CellIterator implements Iterator -{ - /** - * Column index - * - * @var string - */ - protected $columnIndex; - - /** - * Start position - * - * @var int - */ - protected $startRow = 1; - - /** - * End position - * - * @var int - */ - protected $endRow = 1; - - /** - * Create a new row iterator - * - * @param PHPExcel_Worksheet $subject The worksheet to iterate over - * @param string $columnIndex The column that we want to iterate - * @param integer $startRow The row number at which to start iterating - * @param integer $endRow Optionally, the row number at which to stop iterating - */ - public function __construct(PHPExcel_Worksheet $subject = null, $columnIndex = 'A', $startRow = 1, $endRow = null) - { - // Set subject - $this->subject = $subject; - $this->columnIndex = PHPExcel_Cell::columnIndexFromString($columnIndex) - 1; - $this->resetEnd($endRow); - $this->resetStart($startRow); - } - - /** - * Destructor - */ - public function __destruct() - { - unset($this->subject); - } - - /** - * (Re)Set the start row and the current row pointer - * - * @param integer $startRow The row number at which to start iterating - * @return PHPExcel_Worksheet_ColumnCellIterator - * @throws PHPExcel_Exception - */ - public function resetStart($startRow = 1) - { - $this->startRow = $startRow; - $this->adjustForExistingOnlyRange(); - $this->seek($startRow); - - return $this; - } - - /** - * (Re)Set the end row - * - * @param integer $endRow The row number at which to stop iterating - * @return PHPExcel_Worksheet_ColumnCellIterator - * @throws PHPExcel_Exception - */ - public function resetEnd($endRow = null) - { - $this->endRow = ($endRow) ? $endRow : $this->subject->getHighestRow(); - $this->adjustForExistingOnlyRange(); - - return $this; - } - - /** - * Set the row pointer to the selected row - * - * @param integer $row The row number to set the current pointer at - * @return PHPExcel_Worksheet_ColumnCellIterator - * @throws PHPExcel_Exception - */ - public function seek($row = 1) - { - if (($row < $this->startRow) || ($row > $this->endRow)) { - throw new PHPExcel_Exception("Row $row is out of range ({$this->startRow} - {$this->endRow})"); - } elseif ($this->onlyExistingCells && !($this->subject->cellExistsByColumnAndRow($this->columnIndex, $row))) { - throw new PHPExcel_Exception('In "IterateOnlyExistingCells" mode and Cell does not exist'); - } - $this->position = $row; - - return $this; - } - - /** - * Rewind the iterator to the starting row - */ - public function rewind() - { - $this->position = $this->startRow; - } - - /** - * Return the current cell in this worksheet column - * - * @return PHPExcel_Worksheet_Row - */ - public function current() - { - return $this->subject->getCellByColumnAndRow($this->columnIndex, $this->position); - } - - /** - * Return the current iterator key - * - * @return int - */ - public function key() - { - return $this->position; - } - - /** - * Set the iterator to its next value - */ - public function next() - { - do { - ++$this->position; - } while (($this->onlyExistingCells) && - (!$this->subject->cellExistsByColumnAndRow($this->columnIndex, $this->position)) && - ($this->position <= $this->endRow)); - } - - /** - * Set the iterator to its previous value - */ - public function prev() - { - if ($this->position <= $this->startRow) { - throw new PHPExcel_Exception("Row is already at the beginning of range ({$this->startRow} - {$this->endRow})"); - } - - do { - --$this->position; - } while (($this->onlyExistingCells) && - (!$this->subject->cellExistsByColumnAndRow($this->columnIndex, $this->position)) && - ($this->position >= $this->startRow)); - } - - /** - * Indicate if more rows exist in the worksheet range of rows that we're iterating - * - * @return boolean - */ - public function valid() - { - return $this->position <= $this->endRow; - } - - /** - * Validate start/end values for "IterateOnlyExistingCells" mode, and adjust if necessary - * - * @throws PHPExcel_Exception - */ - protected function adjustForExistingOnlyRange() - { - if ($this->onlyExistingCells) { - while ((!$this->subject->cellExistsByColumnAndRow($this->columnIndex, $this->startRow)) && - ($this->startRow <= $this->endRow)) { - ++$this->startRow; - } - if ($this->startRow > $this->endRow) { - throw new PHPExcel_Exception('No cells exist within the specified range'); - } - while ((!$this->subject->cellExistsByColumnAndRow($this->columnIndex, $this->endRow)) && - ($this->endRow >= $this->startRow)) { - --$this->endRow; - } - if ($this->endRow < $this->startRow) { - throw new PHPExcel_Exception('No cells exist within the specified range'); - } - } - } -} diff --git a/application/third_party/PHPExcel/Worksheet/ColumnDimension.php b/application/third_party/PHPExcel/Worksheet/ColumnDimension.php deleted file mode 100644 index 405b8258..00000000 --- a/application/third_party/PHPExcel/Worksheet/ColumnDimension.php +++ /dev/null @@ -1,132 +0,0 @@ -<?php - -/** - * PHPExcel_Worksheet_ColumnDimension - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Worksheet - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Worksheet_ColumnDimension extends PHPExcel_Worksheet_Dimension -{ - /** - * Column index - * - * @var int - */ - private $columnIndex; - - /** - * Column width - * - * When this is set to a negative value, the column width should be ignored by IWriter - * - * @var double - */ - private $width = -1; - - /** - * Auto size? - * - * @var bool - */ - private $autoSize = false; - - /** - * Create a new PHPExcel_Worksheet_ColumnDimension - * - * @param string $pIndex Character column index - */ - public function __construct($pIndex = 'A') - { - // Initialise values - $this->columnIndex = $pIndex; - - // set dimension as unformatted by default - parent::__construct(0); - } - - /** - * Get ColumnIndex - * - * @return string - */ - public function getColumnIndex() - { - return $this->columnIndex; - } - - /** - * Set ColumnIndex - * - * @param string $pValue - * @return PHPExcel_Worksheet_ColumnDimension - */ - public function setColumnIndex($pValue) - { - $this->columnIndex = $pValue; - return $this; - } - - /** - * Get Width - * - * @return double - */ - public function getWidth() - { - return $this->width; - } - - /** - * Set Width - * - * @param double $pValue - * @return PHPExcel_Worksheet_ColumnDimension - */ - public function setWidth($pValue = -1) - { - $this->width = $pValue; - return $this; - } - - /** - * Get Auto Size - * - * @return bool - */ - public function getAutoSize() - { - return $this->autoSize; - } - - /** - * Set Auto Size - * - * @param bool $pValue - * @return PHPExcel_Worksheet_ColumnDimension - */ - public function setAutoSize($pValue = false) - { - $this->autoSize = $pValue; - return $this; - } -} diff --git a/application/third_party/PHPExcel/Worksheet/ColumnIterator.php b/application/third_party/PHPExcel/Worksheet/ColumnIterator.php deleted file mode 100644 index 0db3e534..00000000 --- a/application/third_party/PHPExcel/Worksheet/ColumnIterator.php +++ /dev/null @@ -1,201 +0,0 @@ -<?php - -/** - * PHPExcel_Worksheet_ColumnIterator - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Worksheet - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Worksheet_ColumnIterator implements Iterator -{ - /** - * PHPExcel_Worksheet to iterate - * - * @var PHPExcel_Worksheet - */ - private $subject; - - /** - * Current iterator position - * - * @var int - */ - private $position = 0; - - /** - * Start position - * - * @var int - */ - private $startColumn = 0; - - - /** - * End position - * - * @var int - */ - private $endColumn = 0; - - - /** - * Create a new column iterator - * - * @param PHPExcel_Worksheet $subject The worksheet to iterate over - * @param string $startColumn The column address at which to start iterating - * @param string $endColumn Optionally, the column address at which to stop iterating - */ - public function __construct(PHPExcel_Worksheet $subject = null, $startColumn = 'A', $endColumn = null) - { - // Set subject - $this->subject = $subject; - $this->resetEnd($endColumn); - $this->resetStart($startColumn); - } - - /** - * Destructor - */ - public function __destruct() - { - unset($this->subject); - } - - /** - * (Re)Set the start column and the current column pointer - * - * @param integer $startColumn The column address at which to start iterating - * @return PHPExcel_Worksheet_ColumnIterator - * @throws PHPExcel_Exception - */ - public function resetStart($startColumn = 'A') - { - $startColumnIndex = PHPExcel_Cell::columnIndexFromString($startColumn) - 1; - if ($startColumnIndex > PHPExcel_Cell::columnIndexFromString($this->subject->getHighestColumn()) - 1) { - throw new PHPExcel_Exception("Start column ({$startColumn}) is beyond highest column ({$this->subject->getHighestColumn()})"); - } - - $this->startColumn = $startColumnIndex; - if ($this->endColumn < $this->startColumn) { - $this->endColumn = $this->startColumn; - } - $this->seek($startColumn); - - return $this; - } - - /** - * (Re)Set the end column - * - * @param string $endColumn The column address at which to stop iterating - * @return PHPExcel_Worksheet_ColumnIterator - */ - public function resetEnd($endColumn = null) - { - $endColumn = ($endColumn) ? $endColumn : $this->subject->getHighestColumn(); - $this->endColumn = PHPExcel_Cell::columnIndexFromString($endColumn) - 1; - - return $this; - } - - /** - * Set the column pointer to the selected column - * - * @param string $column The column address to set the current pointer at - * @return PHPExcel_Worksheet_ColumnIterator - * @throws PHPExcel_Exception - */ - public function seek($column = 'A') - { - $column = PHPExcel_Cell::columnIndexFromString($column) - 1; - if (($column < $this->startColumn) || ($column > $this->endColumn)) { - throw new PHPExcel_Exception("Column $column is out of range ({$this->startColumn} - {$this->endColumn})"); - } - $this->position = $column; - - return $this; - } - - /** - * Rewind the iterator to the starting column - */ - public function rewind() - { - $this->position = $this->startColumn; - } - - /** - * Return the current column in this worksheet - * - * @return PHPExcel_Worksheet_Column - */ - public function current() - { - return new PHPExcel_Worksheet_Column($this->subject, PHPExcel_Cell::stringFromColumnIndex($this->position)); - } - - /** - * Return the current iterator key - * - * @return string - */ - public function key() - { - return PHPExcel_Cell::stringFromColumnIndex($this->position); - } - - /** - * Set the iterator to its next value - */ - public function next() - { - ++$this->position; - } - - /** - * Set the iterator to its previous value - * - * @throws PHPExcel_Exception - */ - public function prev() - { - if ($this->position <= $this->startColumn) { - throw new PHPExcel_Exception( - "Column is already at the beginning of range (" . - PHPExcel_Cell::stringFromColumnIndex($this->endColumn) . " - " . - PHPExcel_Cell::stringFromColumnIndex($this->endColumn) . ")" - ); - } - - --$this->position; - } - - /** - * Indicate if more columns exist in the worksheet range of columns that we're iterating - * - * @return boolean - */ - public function valid() - { - return $this->position <= $this->endColumn; - } -} diff --git a/application/third_party/PHPExcel/Worksheet/Dimension.php b/application/third_party/PHPExcel/Worksheet/Dimension.php deleted file mode 100644 index 84f692cb..00000000 --- a/application/third_party/PHPExcel/Worksheet/Dimension.php +++ /dev/null @@ -1,178 +0,0 @@ -<?php - -/** - * PHPExcel_Worksheet_Dimension - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Worksheet - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -abstract class PHPExcel_Worksheet_Dimension -{ - /** - * Visible? - * - * @var bool - */ - private $visible = true; - - /** - * Outline level - * - * @var int - */ - private $outlineLevel = 0; - - /** - * Collapsed - * - * @var bool - */ - private $collapsed = false; - - /** - * Index to cellXf. Null value means row has no explicit cellXf format. - * - * @var int|null - */ - private $xfIndex; - - /** - * Create a new PHPExcel_Worksheet_Dimension - * - * @param int $pIndex Numeric row index - */ - public function __construct($initialValue = null) - { - // set dimension as unformatted by default - $this->xfIndex = $initialValue; - } - - /** - * Get Visible - * - * @return bool - */ - public function getVisible() - { - return $this->visible; - } - - /** - * Set Visible - * - * @param bool $pValue - * @return PHPExcel_Worksheet_Dimension - */ - public function setVisible($pValue = true) - { - $this->visible = $pValue; - return $this; - } - - /** - * Get Outline Level - * - * @return int - */ - public function getOutlineLevel() - { - return $this->outlineLevel; - } - - /** - * Set Outline Level - * - * Value must be between 0 and 7 - * - * @param int $pValue - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet_Dimension - */ - public function setOutlineLevel($pValue) - { - if ($pValue < 0 || $pValue > 7) { - throw new PHPExcel_Exception("Outline level must range between 0 and 7."); - } - - $this->outlineLevel = $pValue; - return $this; - } - - /** - * Get Collapsed - * - * @return bool - */ - public function getCollapsed() - { - return $this->collapsed; - } - - /** - * Set Collapsed - * - * @param bool $pValue - * @return PHPExcel_Worksheet_Dimension - */ - public function setCollapsed($pValue = true) - { - $this->collapsed = $pValue; - return $this; - } - - /** - * Get index to cellXf - * - * @return int - */ - public function getXfIndex() - { - return $this->xfIndex; - } - - /** - * Set index to cellXf - * - * @param int $pValue - * @return PHPExcel_Worksheet_Dimension - */ - public function setXfIndex($pValue = 0) - { - $this->xfIndex = $pValue; - return $this; - } - - /** - * Implement PHP __clone to create a deep clone, not just a shallow copy. - */ - public function __clone() - { - $vars = get_object_vars($this); - foreach ($vars as $key => $value) { - if (is_object($value)) { - $this->$key = clone $value; - } else { - $this->$key = $value; - } - } - } -} diff --git a/application/third_party/PHPExcel/Worksheet/Drawing.php b/application/third_party/PHPExcel/Worksheet/Drawing.php deleted file mode 100644 index e39d3eb9..00000000 --- a/application/third_party/PHPExcel/Worksheet/Drawing.php +++ /dev/null @@ -1,147 +0,0 @@ -<?php - -/** - * PHPExcel_Worksheet_Drawing - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Worksheet_Drawing - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Worksheet_Drawing extends PHPExcel_Worksheet_BaseDrawing implements PHPExcel_IComparable -{ - /** - * Path - * - * @var string - */ - private $path; - - /** - * Create a new PHPExcel_Worksheet_Drawing - */ - public function __construct() - { - // Initialise values - $this->path = ''; - - // Initialize parent - parent::__construct(); - } - - /** - * Get Filename - * - * @return string - */ - public function getFilename() - { - return basename($this->path); - } - - /** - * Get indexed filename (using image index) - * - * @return string - */ - public function getIndexedFilename() - { - $fileName = $this->getFilename(); - $fileName = str_replace(' ', '_', $fileName); - return str_replace('.' . $this->getExtension(), '', $fileName) . $this->getImageIndex() . '.' . $this->getExtension(); - } - - /** - * Get Extension - * - * @return string - */ - public function getExtension() - { - $exploded = explode(".", basename($this->path)); - return $exploded[count($exploded) - 1]; - } - - /** - * Get Path - * - * @return string - */ - public function getPath() - { - return $this->path; - } - - /** - * Set Path - * - * @param string $pValue File path - * @param boolean $pVerifyFile Verify file - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet_Drawing - */ - public function setPath($pValue = '', $pVerifyFile = true) - { - if ($pVerifyFile) { - if (file_exists($pValue)) { - $this->path = $pValue; - - if ($this->width == 0 && $this->height == 0) { - // Get width/height - list($this->width, $this->height) = getimagesize($pValue); - } - } else { - throw new PHPExcel_Exception("File $pValue not found!"); - } - } else { - $this->path = $pValue; - } - return $this; - } - - /** - * Get hash code - * - * @return string Hash code - */ - public function getHashCode() - { - return md5( - $this->path . - parent::getHashCode() . - __CLASS__ - ); - } - - /** - * Implement PHP __clone to create a deep clone, not just a shallow copy. - */ - public function __clone() - { - $vars = get_object_vars($this); - foreach ($vars as $key => $value) { - if (is_object($value)) { - $this->$key = clone $value; - } else { - $this->$key = $value; - } - } - } -} diff --git a/application/third_party/PHPExcel/Worksheet/Drawing/Shadow.php b/application/third_party/PHPExcel/Worksheet/Drawing/Shadow.php deleted file mode 100644 index 84db91d5..00000000 --- a/application/third_party/PHPExcel/Worksheet/Drawing/Shadow.php +++ /dev/null @@ -1,296 +0,0 @@ -<?php - -/** - * PHPExcel_Worksheet_Drawing_Shadow - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Worksheet_Drawing - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Worksheet_Drawing_Shadow implements PHPExcel_IComparable -{ - /* Shadow alignment */ - const SHADOW_BOTTOM = 'b'; - const SHADOW_BOTTOM_LEFT = 'bl'; - const SHADOW_BOTTOM_RIGHT = 'br'; - const SHADOW_CENTER = 'ctr'; - const SHADOW_LEFT = 'l'; - const SHADOW_TOP = 't'; - const SHADOW_TOP_LEFT = 'tl'; - const SHADOW_TOP_RIGHT = 'tr'; - - /** - * Visible - * - * @var boolean - */ - private $visible; - - /** - * Blur radius - * - * Defaults to 6 - * - * @var int - */ - private $blurRadius; - - /** - * Shadow distance - * - * Defaults to 2 - * - * @var int - */ - private $distance; - - /** - * Shadow direction (in degrees) - * - * @var int - */ - private $direction; - - /** - * Shadow alignment - * - * @var int - */ - private $alignment; - - /** - * Color - * - * @var PHPExcel_Style_Color - */ - private $color; - - /** - * Alpha - * - * @var int - */ - private $alpha; - - /** - * Create a new PHPExcel_Worksheet_Drawing_Shadow - */ - public function __construct() - { - // Initialise values - $this->visible = false; - $this->blurRadius = 6; - $this->distance = 2; - $this->direction = 0; - $this->alignment = PHPExcel_Worksheet_Drawing_Shadow::SHADOW_BOTTOM_RIGHT; - $this->color = new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_BLACK); - $this->alpha = 50; - } - - /** - * Get Visible - * - * @return boolean - */ - public function getVisible() - { - return $this->visible; - } - - /** - * Set Visible - * - * @param boolean $pValue - * @return PHPExcel_Worksheet_Drawing_Shadow - */ - public function setVisible($pValue = false) - { - $this->visible = $pValue; - return $this; - } - - /** - * Get Blur radius - * - * @return int - */ - public function getBlurRadius() - { - return $this->blurRadius; - } - - /** - * Set Blur radius - * - * @param int $pValue - * @return PHPExcel_Worksheet_Drawing_Shadow - */ - public function setBlurRadius($pValue = 6) - { - $this->blurRadius = $pValue; - return $this; - } - - /** - * Get Shadow distance - * - * @return int - */ - public function getDistance() - { - return $this->distance; - } - - /** - * Set Shadow distance - * - * @param int $pValue - * @return PHPExcel_Worksheet_Drawing_Shadow - */ - public function setDistance($pValue = 2) - { - $this->distance = $pValue; - return $this; - } - - /** - * Get Shadow direction (in degrees) - * - * @return int - */ - public function getDirection() - { - return $this->direction; - } - - /** - * Set Shadow direction (in degrees) - * - * @param int $pValue - * @return PHPExcel_Worksheet_Drawing_Shadow - */ - public function setDirection($pValue = 0) - { - $this->direction = $pValue; - return $this; - } - - /** - * Get Shadow alignment - * - * @return int - */ - public function getAlignment() - { - return $this->alignment; - } - - /** - * Set Shadow alignment - * - * @param int $pValue - * @return PHPExcel_Worksheet_Drawing_Shadow - */ - public function setAlignment($pValue = 0) - { - $this->alignment = $pValue; - return $this; - } - - /** - * Get Color - * - * @return PHPExcel_Style_Color - */ - public function getColor() - { - return $this->color; - } - - /** - * Set Color - * - * @param PHPExcel_Style_Color $pValue - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet_Drawing_Shadow - */ - public function setColor(PHPExcel_Style_Color $pValue = null) - { - $this->color = $pValue; - return $this; - } - - /** - * Get Alpha - * - * @return int - */ - public function getAlpha() - { - return $this->alpha; - } - - /** - * Set Alpha - * - * @param int $pValue - * @return PHPExcel_Worksheet_Drawing_Shadow - */ - public function setAlpha($pValue = 0) - { - $this->alpha = $pValue; - return $this; - } - - /** - * Get hash code - * - * @return string Hash code - */ - public function getHashCode() - { - return md5( - ($this->visible ? 't' : 'f') . - $this->blurRadius . - $this->distance . - $this->direction . - $this->alignment . - $this->color->getHashCode() . - $this->alpha . - __CLASS__ - ); - } - - /** - * Implement PHP __clone to create a deep clone, not just a shallow copy. - */ - public function __clone() - { - $vars = get_object_vars($this); - foreach ($vars as $key => $value) { - if (is_object($value)) { - $this->$key = clone $value; - } else { - $this->$key = $value; - } - } - } -} diff --git a/application/third_party/PHPExcel/Worksheet/HeaderFooter.php b/application/third_party/PHPExcel/Worksheet/HeaderFooter.php deleted file mode 100644 index 3a88923f..00000000 --- a/application/third_party/PHPExcel/Worksheet/HeaderFooter.php +++ /dev/null @@ -1,494 +0,0 @@ -<?php -/** - * PHPExcel_Worksheet_HeaderFooter - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not,241 write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Worksheet - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - * - * <code> - * Header/Footer Formatting Syntax taken from Office Open XML Part 4 - Markup Language Reference, page 1970: - * - * There are a number of formatting codes that can be written inline with the actual header / footer text, which - * affect the formatting in the header or footer. - * - * Example: This example shows the text "Center Bold Header" on the first line (center section), and the date on - * the second line (center section). - * &CCenter &"-,Bold"Bold&"-,Regular"Header_x000A_&D - * - * General Rules: - * There is no required order in which these codes must appear. - * - * The first occurrence of the following codes turns the formatting ON, the second occurrence turns it OFF again: - * - strikethrough - * - superscript - * - subscript - * Superscript and subscript cannot both be ON at same time. Whichever comes first wins and the other is ignored, - * while the first is ON. - * &L - code for "left section" (there are three header / footer locations, "left", "center", and "right"). When - * two or more occurrences of this section marker exist, the contents from all markers are concatenated, in the - * order of appearance, and placed into the left section. - * &P - code for "current page #" - * &N - code for "total pages" - * &font size - code for "text font size", where font size is a font size in points. - * &K - code for "text font color" - * RGB Color is specified as RRGGBB - * Theme Color is specifed as TTSNN where TT is the theme color Id, S is either "+" or "-" of the tint/shade - * value, NN is the tint/shade value. - * &S - code for "text strikethrough" on / off - * &X - code for "text super script" on / off - * &Y - code for "text subscript" on / off - * &C - code for "center section". When two or more occurrences of this section marker exist, the contents - * from all markers are concatenated, in the order of appearance, and placed into the center section. - * - * &D - code for "date" - * &T - code for "time" - * &G - code for "picture as background" - * &U - code for "text single underline" - * &E - code for "double underline" - * &R - code for "right section". When two or more occurrences of this section marker exist, the contents - * from all markers are concatenated, in the order of appearance, and placed into the right section. - * &Z - code for "this workbook's file path" - * &F - code for "this workbook's file name" - * &A - code for "sheet tab name" - * &+ - code for add to page #. - * &- - code for subtract from page #. - * &"font name,font type" - code for "text font name" and "text font type", where font name and font type - * are strings specifying the name and type of the font, separated by a comma. When a hyphen appears in font - * name, it means "none specified". Both of font name and font type can be localized values. - * &"-,Bold" - code for "bold font style" - * &B - also means "bold font style". - * &"-,Regular" - code for "regular font style" - * &"-,Italic" - code for "italic font style" - * &I - also means "italic font style" - * &"-,Bold Italic" code for "bold italic font style" - * &O - code for "outline style" - * &H - code for "shadow style" - * </code> - * - */ -class PHPExcel_Worksheet_HeaderFooter -{ - /* Header/footer image location */ - const IMAGE_HEADER_LEFT = 'LH'; - const IMAGE_HEADER_CENTER = 'CH'; - const IMAGE_HEADER_RIGHT = 'RH'; - const IMAGE_FOOTER_LEFT = 'LF'; - const IMAGE_FOOTER_CENTER = 'CF'; - const IMAGE_FOOTER_RIGHT = 'RF'; - - /** - * OddHeader - * - * @var string - */ - private $oddHeader = ''; - - /** - * OddFooter - * - * @var string - */ - private $oddFooter = ''; - - /** - * EvenHeader - * - * @var string - */ - private $evenHeader = ''; - - /** - * EvenFooter - * - * @var string - */ - private $evenFooter = ''; - - /** - * FirstHeader - * - * @var string - */ - private $firstHeader = ''; - - /** - * FirstFooter - * - * @var string - */ - private $firstFooter = ''; - - /** - * Different header for Odd/Even, defaults to false - * - * @var boolean - */ - private $differentOddEven = false; - - /** - * Different header for first page, defaults to false - * - * @var boolean - */ - private $differentFirst = false; - - /** - * Scale with document, defaults to true - * - * @var boolean - */ - private $scaleWithDocument = true; - - /** - * Align with margins, defaults to true - * - * @var boolean - */ - private $alignWithMargins = true; - - /** - * Header/footer images - * - * @var PHPExcel_Worksheet_HeaderFooterDrawing[] - */ - private $headerFooterImages = array(); - - /** - * Create a new PHPExcel_Worksheet_HeaderFooter - */ - public function __construct() - { - } - - /** - * Get OddHeader - * - * @return string - */ - public function getOddHeader() - { - return $this->oddHeader; - } - - /** - * Set OddHeader - * - * @param string $pValue - * @return PHPExcel_Worksheet_HeaderFooter - */ - public function setOddHeader($pValue) - { - $this->oddHeader = $pValue; - return $this; - } - - /** - * Get OddFooter - * - * @return string - */ - public function getOddFooter() - { - return $this->oddFooter; - } - - /** - * Set OddFooter - * - * @param string $pValue - * @return PHPExcel_Worksheet_HeaderFooter - */ - public function setOddFooter($pValue) - { - $this->oddFooter = $pValue; - return $this; - } - - /** - * Get EvenHeader - * - * @return string - */ - public function getEvenHeader() - { - return $this->evenHeader; - } - - /** - * Set EvenHeader - * - * @param string $pValue - * @return PHPExcel_Worksheet_HeaderFooter - */ - public function setEvenHeader($pValue) - { - $this->evenHeader = $pValue; - return $this; - } - - /** - * Get EvenFooter - * - * @return string - */ - public function getEvenFooter() - { - return $this->evenFooter; - } - - /** - * Set EvenFooter - * - * @param string $pValue - * @return PHPExcel_Worksheet_HeaderFooter - */ - public function setEvenFooter($pValue) - { - $this->evenFooter = $pValue; - return $this; - } - - /** - * Get FirstHeader - * - * @return string - */ - public function getFirstHeader() - { - return $this->firstHeader; - } - - /** - * Set FirstHeader - * - * @param string $pValue - * @return PHPExcel_Worksheet_HeaderFooter - */ - public function setFirstHeader($pValue) - { - $this->firstHeader = $pValue; - return $this; - } - - /** - * Get FirstFooter - * - * @return string - */ - public function getFirstFooter() - { - return $this->firstFooter; - } - - /** - * Set FirstFooter - * - * @param string $pValue - * @return PHPExcel_Worksheet_HeaderFooter - */ - public function setFirstFooter($pValue) - { - $this->firstFooter = $pValue; - return $this; - } - - /** - * Get DifferentOddEven - * - * @return boolean - */ - public function getDifferentOddEven() - { - return $this->differentOddEven; - } - - /** - * Set DifferentOddEven - * - * @param boolean $pValue - * @return PHPExcel_Worksheet_HeaderFooter - */ - public function setDifferentOddEven($pValue = false) - { - $this->differentOddEven = $pValue; - return $this; - } - - /** - * Get DifferentFirst - * - * @return boolean - */ - public function getDifferentFirst() - { - return $this->differentFirst; - } - - /** - * Set DifferentFirst - * - * @param boolean $pValue - * @return PHPExcel_Worksheet_HeaderFooter - */ - public function setDifferentFirst($pValue = false) - { - $this->differentFirst = $pValue; - return $this; - } - - /** - * Get ScaleWithDocument - * - * @return boolean - */ - public function getScaleWithDocument() - { - return $this->scaleWithDocument; - } - - /** - * Set ScaleWithDocument - * - * @param boolean $pValue - * @return PHPExcel_Worksheet_HeaderFooter - */ - public function setScaleWithDocument($pValue = true) - { - $this->scaleWithDocument = $pValue; - return $this; - } - - /** - * Get AlignWithMargins - * - * @return boolean - */ - public function getAlignWithMargins() - { - return $this->alignWithMargins; - } - - /** - * Set AlignWithMargins - * - * @param boolean $pValue - * @return PHPExcel_Worksheet_HeaderFooter - */ - public function setAlignWithMargins($pValue = true) - { - $this->alignWithMargins = $pValue; - return $this; - } - - /** - * Add header/footer image - * - * @param PHPExcel_Worksheet_HeaderFooterDrawing $image - * @param string $location - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet_HeaderFooter - */ - public function addImage(PHPExcel_Worksheet_HeaderFooterDrawing $image = null, $location = self::IMAGE_HEADER_LEFT) - { - $this->headerFooterImages[$location] = $image; - return $this; - } - - /** - * Remove header/footer image - * - * @param string $location - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet_HeaderFooter - */ - public function removeImage($location = self::IMAGE_HEADER_LEFT) - { - if (isset($this->headerFooterImages[$location])) { - unset($this->headerFooterImages[$location]); - } - return $this; - } - - /** - * Set header/footer images - * - * @param PHPExcel_Worksheet_HeaderFooterDrawing[] $images - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet_HeaderFooter - */ - public function setImages($images) - { - if (!is_array($images)) { - throw new PHPExcel_Exception('Invalid parameter!'); - } - - $this->headerFooterImages = $images; - return $this; - } - - /** - * Get header/footer images - * - * @return PHPExcel_Worksheet_HeaderFooterDrawing[] - */ - public function getImages() - { - // Sort array - $images = array(); - if (isset($this->headerFooterImages[self::IMAGE_HEADER_LEFT])) { - $images[self::IMAGE_HEADER_LEFT] = $this->headerFooterImages[self::IMAGE_HEADER_LEFT]; - } - if (isset($this->headerFooterImages[self::IMAGE_HEADER_CENTER])) { - $images[self::IMAGE_HEADER_CENTER] = $this->headerFooterImages[self::IMAGE_HEADER_CENTER]; - } - if (isset($this->headerFooterImages[self::IMAGE_HEADER_RIGHT])) { - $images[self::IMAGE_HEADER_RIGHT] = $this->headerFooterImages[self::IMAGE_HEADER_RIGHT]; - } - if (isset($this->headerFooterImages[self::IMAGE_FOOTER_LEFT])) { - $images[self::IMAGE_FOOTER_LEFT] = $this->headerFooterImages[self::IMAGE_FOOTER_LEFT]; - } - if (isset($this->headerFooterImages[self::IMAGE_FOOTER_CENTER])) { - $images[self::IMAGE_FOOTER_CENTER] = $this->headerFooterImages[self::IMAGE_FOOTER_CENTER]; - } - if (isset($this->headerFooterImages[self::IMAGE_FOOTER_RIGHT])) { - $images[self::IMAGE_FOOTER_RIGHT] = $this->headerFooterImages[self::IMAGE_FOOTER_RIGHT]; - } - $this->headerFooterImages = $images; - - return $this->headerFooterImages; - } - - /** - * Implement PHP __clone to create a deep clone, not just a shallow copy. - */ - public function __clone() - { - $vars = get_object_vars($this); - foreach ($vars as $key => $value) { - if (is_object($value)) { - $this->$key = clone $value; - } else { - $this->$key = $value; - } - } - } -} diff --git a/application/third_party/PHPExcel/Worksheet/HeaderFooterDrawing.php b/application/third_party/PHPExcel/Worksheet/HeaderFooterDrawing.php deleted file mode 100644 index a491f4ba..00000000 --- a/application/third_party/PHPExcel/Worksheet/HeaderFooterDrawing.php +++ /dev/null @@ -1,361 +0,0 @@ -<?php - -/** - * PHPExcel_Worksheet_HeaderFooterDrawing - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Worksheet - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Worksheet_HeaderFooterDrawing extends PHPExcel_Worksheet_Drawing implements PHPExcel_IComparable -{ - /** - * Path - * - * @var string - */ - private $path; - - /** - * Name - * - * @var string - */ - protected $name; - - /** - * Offset X - * - * @var int - */ - protected $offsetX; - - /** - * Offset Y - * - * @var int - */ - protected $offsetY; - - /** - * Width - * - * @var int - */ - protected $width; - - /** - * Height - * - * @var int - */ - protected $height; - - /** - * Proportional resize - * - * @var boolean - */ - protected $resizeProportional; - - /** - * Create a new PHPExcel_Worksheet_HeaderFooterDrawing - */ - public function __construct() - { - // Initialise values - $this->path = ''; - $this->name = ''; - $this->offsetX = 0; - $this->offsetY = 0; - $this->width = 0; - $this->height = 0; - $this->resizeProportional = true; - } - - /** - * Get Name - * - * @return string - */ - public function getName() - { - return $this->name; - } - - /** - * Set Name - * - * @param string $pValue - * @return PHPExcel_Worksheet_HeaderFooterDrawing - */ - public function setName($pValue = '') - { - $this->name = $pValue; - return $this; - } - - /** - * Get OffsetX - * - * @return int - */ - public function getOffsetX() - { - return $this->offsetX; - } - - /** - * Set OffsetX - * - * @param int $pValue - * @return PHPExcel_Worksheet_HeaderFooterDrawing - */ - public function setOffsetX($pValue = 0) - { - $this->offsetX = $pValue; - return $this; - } - - /** - * Get OffsetY - * - * @return int - */ - public function getOffsetY() - { - return $this->offsetY; - } - - /** - * Set OffsetY - * - * @param int $pValue - * @return PHPExcel_Worksheet_HeaderFooterDrawing - */ - public function setOffsetY($pValue = 0) - { - $this->offsetY = $pValue; - return $this; - } - - /** - * Get Width - * - * @return int - */ - public function getWidth() - { - return $this->width; - } - - /** - * Set Width - * - * @param int $pValue - * @return PHPExcel_Worksheet_HeaderFooterDrawing - */ - public function setWidth($pValue = 0) - { - // Resize proportional? - if ($this->resizeProportional && $pValue != 0) { - $ratio = $this->width / $this->height; - $this->height = round($ratio * $pValue); - } - - // Set width - $this->width = $pValue; - - return $this; - } - - /** - * Get Height - * - * @return int - */ - public function getHeight() - { - return $this->height; - } - - /** - * Set Height - * - * @param int $pValue - * @return PHPExcel_Worksheet_HeaderFooterDrawing - */ - public function setHeight($pValue = 0) - { - // Resize proportional? - if ($this->resizeProportional && $pValue != 0) { - $ratio = $this->width / $this->height; - $this->width = round($ratio * $pValue); - } - - // Set height - $this->height = $pValue; - - return $this; - } - - /** - * Set width and height with proportional resize - * Example: - * <code> - * $objDrawing->setResizeProportional(true); - * $objDrawing->setWidthAndHeight(160,120); - * </code> - * - * @author Vincent@luo MSN:kele_100@hotmail.com - * @param int $width - * @param int $height - * @return PHPExcel_Worksheet_HeaderFooterDrawing - */ - public function setWidthAndHeight($width = 0, $height = 0) - { - $xratio = $width / $this->width; - $yratio = $height / $this->height; - if ($this->resizeProportional && !($width == 0 || $height == 0)) { - if (($xratio * $this->height) < $height) { - $this->height = ceil($xratio * $this->height); - $this->width = $width; - } else { - $this->width = ceil($yratio * $this->width); - $this->height = $height; - } - } - return $this; - } - - /** - * Get ResizeProportional - * - * @return boolean - */ - public function getResizeProportional() - { - return $this->resizeProportional; - } - - /** - * Set ResizeProportional - * - * @param boolean $pValue - * @return PHPExcel_Worksheet_HeaderFooterDrawing - */ - public function setResizeProportional($pValue = true) - { - $this->resizeProportional = $pValue; - return $this; - } - - /** - * Get Filename - * - * @return string - */ - public function getFilename() - { - return basename($this->path); - } - - /** - * Get Extension - * - * @return string - */ - public function getExtension() - { - $parts = explode(".", basename($this->path)); - return end($parts); - } - - /** - * Get Path - * - * @return string - */ - public function getPath() - { - return $this->path; - } - - /** - * Set Path - * - * @param string $pValue File path - * @param boolean $pVerifyFile Verify file - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet_HeaderFooterDrawing - */ - public function setPath($pValue = '', $pVerifyFile = true) - { - if ($pVerifyFile) { - if (file_exists($pValue)) { - $this->path = $pValue; - - if ($this->width == 0 && $this->height == 0) { - // Get width/height - list($this->width, $this->height) = getimagesize($pValue); - } - } else { - throw new PHPExcel_Exception("File $pValue not found!"); - } - } else { - $this->path = $pValue; - } - return $this; - } - - /** - * Get hash code - * - * @return string Hash code - */ - public function getHashCode() - { - return md5( - $this->path . - $this->name . - $this->offsetX . - $this->offsetY . - $this->width . - $this->height . - __CLASS__ - ); - } - - /** - * Implement PHP __clone to create a deep clone, not just a shallow copy. - */ - public function __clone() - { - $vars = get_object_vars($this); - foreach ($vars as $key => $value) { - if (is_object($value)) { - $this->$key = clone $value; - } else { - $this->$key = $value; - } - } - } -} diff --git a/application/third_party/PHPExcel/Worksheet/MemoryDrawing.php b/application/third_party/PHPExcel/Worksheet/MemoryDrawing.php deleted file mode 100644 index 438ed2c5..00000000 --- a/application/third_party/PHPExcel/Worksheet/MemoryDrawing.php +++ /dev/null @@ -1,201 +0,0 @@ -<?php - -/** - * PHPExcel_Worksheet_MemoryDrawing - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Worksheet - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Worksheet_MemoryDrawing extends PHPExcel_Worksheet_BaseDrawing implements PHPExcel_IComparable -{ - /* Rendering functions */ - const RENDERING_DEFAULT = 'imagepng'; - const RENDERING_PNG = 'imagepng'; - const RENDERING_GIF = 'imagegif'; - const RENDERING_JPEG = 'imagejpeg'; - - /* MIME types */ - const MIMETYPE_DEFAULT = 'image/png'; - const MIMETYPE_PNG = 'image/png'; - const MIMETYPE_GIF = 'image/gif'; - const MIMETYPE_JPEG = 'image/jpeg'; - - /** - * Image resource - * - * @var resource - */ - private $imageResource; - - /** - * Rendering function - * - * @var string - */ - private $renderingFunction; - - /** - * Mime type - * - * @var string - */ - private $mimeType; - - /** - * Unique name - * - * @var string - */ - private $uniqueName; - - /** - * Create a new PHPExcel_Worksheet_MemoryDrawing - */ - public function __construct() - { - // Initialise values - $this->imageResource = null; - $this->renderingFunction = self::RENDERING_DEFAULT; - $this->mimeType = self::MIMETYPE_DEFAULT; - $this->uniqueName = md5(rand(0, 9999). time() . rand(0, 9999)); - - // Initialize parent - parent::__construct(); - } - - /** - * Get image resource - * - * @return resource - */ - public function getImageResource() - { - return $this->imageResource; - } - - /** - * Set image resource - * - * @param $value resource - * @return PHPExcel_Worksheet_MemoryDrawing - */ - public function setImageResource($value = null) - { - $this->imageResource = $value; - - if (!is_null($this->imageResource)) { - // Get width/height - $this->width = imagesx($this->imageResource); - $this->height = imagesy($this->imageResource); - } - return $this; - } - - /** - * Get rendering function - * - * @return string - */ - public function getRenderingFunction() - { - return $this->renderingFunction; - } - - /** - * Set rendering function - * - * @param string $value - * @return PHPExcel_Worksheet_MemoryDrawing - */ - public function setRenderingFunction($value = PHPExcel_Worksheet_MemoryDrawing::RENDERING_DEFAULT) - { - $this->renderingFunction = $value; - return $this; - } - - /** - * Get mime type - * - * @return string - */ - public function getMimeType() - { - return $this->mimeType; - } - - /** - * Set mime type - * - * @param string $value - * @return PHPExcel_Worksheet_MemoryDrawing - */ - public function setMimeType($value = PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_DEFAULT) - { - $this->mimeType = $value; - return $this; - } - - /** - * Get indexed filename (using image index) - * - * @return string - */ - public function getIndexedFilename() - { - $extension = strtolower($this->getMimeType()); - $extension = explode('/', $extension); - $extension = $extension[1]; - - return $this->uniqueName . $this->getImageIndex() . '.' . $extension; - } - - /** - * Get hash code - * - * @return string Hash code - */ - public function getHashCode() - { - return md5( - $this->renderingFunction . - $this->mimeType . - $this->uniqueName . - parent::getHashCode() . - __CLASS__ - ); - } - - /** - * Implement PHP __clone to create a deep clone, not just a shallow copy. - */ - public function __clone() - { - $vars = get_object_vars($this); - foreach ($vars as $key => $value) { - if (is_object($value)) { - $this->$key = clone $value; - } else { - $this->$key = $value; - } - } - } -} diff --git a/application/third_party/PHPExcel/Worksheet/PageMargins.php b/application/third_party/PHPExcel/Worksheet/PageMargins.php deleted file mode 100644 index 70f5ee0f..00000000 --- a/application/third_party/PHPExcel/Worksheet/PageMargins.php +++ /dev/null @@ -1,233 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Worksheet - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - - -/** - * PHPExcel_Worksheet_PageMargins - * - * @category PHPExcel - * @package PHPExcel_Worksheet - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - */ -class PHPExcel_Worksheet_PageMargins -{ - /** - * Left - * - * @var double - */ - private $left = 0.7; - - /** - * Right - * - * @var double - */ - private $right = 0.7; - - /** - * Top - * - * @var double - */ - private $top = 0.75; - - /** - * Bottom - * - * @var double - */ - private $bottom = 0.75; - - /** - * Header - * - * @var double - */ - private $header = 0.3; - - /** - * Footer - * - * @var double - */ - private $footer = 0.3; - - /** - * Create a new PHPExcel_Worksheet_PageMargins - */ - public function __construct() - { - } - - /** - * Get Left - * - * @return double - */ - public function getLeft() - { - return $this->left; - } - - /** - * Set Left - * - * @param double $pValue - * @return PHPExcel_Worksheet_PageMargins - */ - public function setLeft($pValue) - { - $this->left = $pValue; - return $this; - } - - /** - * Get Right - * - * @return double - */ - public function getRight() - { - return $this->right; - } - - /** - * Set Right - * - * @param double $pValue - * @return PHPExcel_Worksheet_PageMargins - */ - public function setRight($pValue) - { - $this->right = $pValue; - return $this; - } - - /** - * Get Top - * - * @return double - */ - public function getTop() - { - return $this->top; - } - - /** - * Set Top - * - * @param double $pValue - * @return PHPExcel_Worksheet_PageMargins - */ - public function setTop($pValue) - { - $this->top = $pValue; - return $this; - } - - /** - * Get Bottom - * - * @return double - */ - public function getBottom() - { - return $this->bottom; - } - - /** - * Set Bottom - * - * @param double $pValue - * @return PHPExcel_Worksheet_PageMargins - */ - public function setBottom($pValue) - { - $this->bottom = $pValue; - return $this; - } - - /** - * Get Header - * - * @return double - */ - public function getHeader() - { - return $this->header; - } - - /** - * Set Header - * - * @param double $pValue - * @return PHPExcel_Worksheet_PageMargins - */ - public function setHeader($pValue) - { - $this->header = $pValue; - return $this; - } - - /** - * Get Footer - * - * @return double - */ - public function getFooter() - { - return $this->footer; - } - - /** - * Set Footer - * - * @param double $pValue - * @return PHPExcel_Worksheet_PageMargins - */ - public function setFooter($pValue) - { - $this->footer = $pValue; - return $this; - } - - /** - * Implement PHP __clone to create a deep clone, not just a shallow copy. - */ - public function __clone() - { - $vars = get_object_vars($this); - foreach ($vars as $key => $value) { - if (is_object($value)) { - $this->$key = clone $value; - } else { - $this->$key = $value; - } - } - } -} diff --git a/application/third_party/PHPExcel/Worksheet/PageSetup.php b/application/third_party/PHPExcel/Worksheet/PageSetup.php deleted file mode 100644 index c67053e6..00000000 --- a/application/third_party/PHPExcel/Worksheet/PageSetup.php +++ /dev/null @@ -1,839 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Worksheet - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - - -/** - * PHPExcel_Worksheet_PageSetup - * - * <code> - * Paper size taken from Office Open XML Part 4 - Markup Language Reference, page 1988: - * - * 1 = Letter paper (8.5 in. by 11 in.) - * 2 = Letter small paper (8.5 in. by 11 in.) - * 3 = Tabloid paper (11 in. by 17 in.) - * 4 = Ledger paper (17 in. by 11 in.) - * 5 = Legal paper (8.5 in. by 14 in.) - * 6 = Statement paper (5.5 in. by 8.5 in.) - * 7 = Executive paper (7.25 in. by 10.5 in.) - * 8 = A3 paper (297 mm by 420 mm) - * 9 = A4 paper (210 mm by 297 mm) - * 10 = A4 small paper (210 mm by 297 mm) - * 11 = A5 paper (148 mm by 210 mm) - * 12 = B4 paper (250 mm by 353 mm) - * 13 = B5 paper (176 mm by 250 mm) - * 14 = Folio paper (8.5 in. by 13 in.) - * 15 = Quarto paper (215 mm by 275 mm) - * 16 = Standard paper (10 in. by 14 in.) - * 17 = Standard paper (11 in. by 17 in.) - * 18 = Note paper (8.5 in. by 11 in.) - * 19 = #9 envelope (3.875 in. by 8.875 in.) - * 20 = #10 envelope (4.125 in. by 9.5 in.) - * 21 = #11 envelope (4.5 in. by 10.375 in.) - * 22 = #12 envelope (4.75 in. by 11 in.) - * 23 = #14 envelope (5 in. by 11.5 in.) - * 24 = C paper (17 in. by 22 in.) - * 25 = D paper (22 in. by 34 in.) - * 26 = E paper (34 in. by 44 in.) - * 27 = DL envelope (110 mm by 220 mm) - * 28 = C5 envelope (162 mm by 229 mm) - * 29 = C3 envelope (324 mm by 458 mm) - * 30 = C4 envelope (229 mm by 324 mm) - * 31 = C6 envelope (114 mm by 162 mm) - * 32 = C65 envelope (114 mm by 229 mm) - * 33 = B4 envelope (250 mm by 353 mm) - * 34 = B5 envelope (176 mm by 250 mm) - * 35 = B6 envelope (176 mm by 125 mm) - * 36 = Italy envelope (110 mm by 230 mm) - * 37 = Monarch envelope (3.875 in. by 7.5 in.). - * 38 = 6 3/4 envelope (3.625 in. by 6.5 in.) - * 39 = US standard fanfold (14.875 in. by 11 in.) - * 40 = German standard fanfold (8.5 in. by 12 in.) - * 41 = German legal fanfold (8.5 in. by 13 in.) - * 42 = ISO B4 (250 mm by 353 mm) - * 43 = Japanese double postcard (200 mm by 148 mm) - * 44 = Standard paper (9 in. by 11 in.) - * 45 = Standard paper (10 in. by 11 in.) - * 46 = Standard paper (15 in. by 11 in.) - * 47 = Invite envelope (220 mm by 220 mm) - * 50 = Letter extra paper (9.275 in. by 12 in.) - * 51 = Legal extra paper (9.275 in. by 15 in.) - * 52 = Tabloid extra paper (11.69 in. by 18 in.) - * 53 = A4 extra paper (236 mm by 322 mm) - * 54 = Letter transverse paper (8.275 in. by 11 in.) - * 55 = A4 transverse paper (210 mm by 297 mm) - * 56 = Letter extra transverse paper (9.275 in. by 12 in.) - * 57 = SuperA/SuperA/A4 paper (227 mm by 356 mm) - * 58 = SuperB/SuperB/A3 paper (305 mm by 487 mm) - * 59 = Letter plus paper (8.5 in. by 12.69 in.) - * 60 = A4 plus paper (210 mm by 330 mm) - * 61 = A5 transverse paper (148 mm by 210 mm) - * 62 = JIS B5 transverse paper (182 mm by 257 mm) - * 63 = A3 extra paper (322 mm by 445 mm) - * 64 = A5 extra paper (174 mm by 235 mm) - * 65 = ISO B5 extra paper (201 mm by 276 mm) - * 66 = A2 paper (420 mm by 594 mm) - * 67 = A3 transverse paper (297 mm by 420 mm) - * 68 = A3 extra transverse paper (322 mm by 445 mm) - * </code> - * - * @category PHPExcel - * @package PHPExcel_Worksheet - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - */ -class PHPExcel_Worksheet_PageSetup -{ - /* Paper size */ - const PAPERSIZE_LETTER = 1; - const PAPERSIZE_LETTER_SMALL = 2; - const PAPERSIZE_TABLOID = 3; - const PAPERSIZE_LEDGER = 4; - const PAPERSIZE_LEGAL = 5; - const PAPERSIZE_STATEMENT = 6; - const PAPERSIZE_EXECUTIVE = 7; - const PAPERSIZE_A3 = 8; - const PAPERSIZE_A4 = 9; - const PAPERSIZE_A4_SMALL = 10; - const PAPERSIZE_A5 = 11; - const PAPERSIZE_B4 = 12; - const PAPERSIZE_B5 = 13; - const PAPERSIZE_FOLIO = 14; - const PAPERSIZE_QUARTO = 15; - const PAPERSIZE_STANDARD_1 = 16; - const PAPERSIZE_STANDARD_2 = 17; - const PAPERSIZE_NOTE = 18; - const PAPERSIZE_NO9_ENVELOPE = 19; - const PAPERSIZE_NO10_ENVELOPE = 20; - const PAPERSIZE_NO11_ENVELOPE = 21; - const PAPERSIZE_NO12_ENVELOPE = 22; - const PAPERSIZE_NO14_ENVELOPE = 23; - const PAPERSIZE_C = 24; - const PAPERSIZE_D = 25; - const PAPERSIZE_E = 26; - const PAPERSIZE_DL_ENVELOPE = 27; - const PAPERSIZE_C5_ENVELOPE = 28; - const PAPERSIZE_C3_ENVELOPE = 29; - const PAPERSIZE_C4_ENVELOPE = 30; - const PAPERSIZE_C6_ENVELOPE = 31; - const PAPERSIZE_C65_ENVELOPE = 32; - const PAPERSIZE_B4_ENVELOPE = 33; - const PAPERSIZE_B5_ENVELOPE = 34; - const PAPERSIZE_B6_ENVELOPE = 35; - const PAPERSIZE_ITALY_ENVELOPE = 36; - const PAPERSIZE_MONARCH_ENVELOPE = 37; - const PAPERSIZE_6_3_4_ENVELOPE = 38; - const PAPERSIZE_US_STANDARD_FANFOLD = 39; - const PAPERSIZE_GERMAN_STANDARD_FANFOLD = 40; - const PAPERSIZE_GERMAN_LEGAL_FANFOLD = 41; - const PAPERSIZE_ISO_B4 = 42; - const PAPERSIZE_JAPANESE_DOUBLE_POSTCARD = 43; - const PAPERSIZE_STANDARD_PAPER_1 = 44; - const PAPERSIZE_STANDARD_PAPER_2 = 45; - const PAPERSIZE_STANDARD_PAPER_3 = 46; - const PAPERSIZE_INVITE_ENVELOPE = 47; - const PAPERSIZE_LETTER_EXTRA_PAPER = 48; - const PAPERSIZE_LEGAL_EXTRA_PAPER = 49; - const PAPERSIZE_TABLOID_EXTRA_PAPER = 50; - const PAPERSIZE_A4_EXTRA_PAPER = 51; - const PAPERSIZE_LETTER_TRANSVERSE_PAPER = 52; - const PAPERSIZE_A4_TRANSVERSE_PAPER = 53; - const PAPERSIZE_LETTER_EXTRA_TRANSVERSE_PAPER = 54; - const PAPERSIZE_SUPERA_SUPERA_A4_PAPER = 55; - const PAPERSIZE_SUPERB_SUPERB_A3_PAPER = 56; - const PAPERSIZE_LETTER_PLUS_PAPER = 57; - const PAPERSIZE_A4_PLUS_PAPER = 58; - const PAPERSIZE_A5_TRANSVERSE_PAPER = 59; - const PAPERSIZE_JIS_B5_TRANSVERSE_PAPER = 60; - const PAPERSIZE_A3_EXTRA_PAPER = 61; - const PAPERSIZE_A5_EXTRA_PAPER = 62; - const PAPERSIZE_ISO_B5_EXTRA_PAPER = 63; - const PAPERSIZE_A2_PAPER = 64; - const PAPERSIZE_A3_TRANSVERSE_PAPER = 65; - const PAPERSIZE_A3_EXTRA_TRANSVERSE_PAPER = 66; - - /* Page orientation */ - const ORIENTATION_DEFAULT = 'default'; - const ORIENTATION_LANDSCAPE = 'landscape'; - const ORIENTATION_PORTRAIT = 'portrait'; - - /* Print Range Set Method */ - const SETPRINTRANGE_OVERWRITE = 'O'; - const SETPRINTRANGE_INSERT = 'I'; - - - /** - * Paper size - * - * @var int - */ - private $paperSize = PHPExcel_Worksheet_PageSetup::PAPERSIZE_LETTER; - - /** - * Orientation - * - * @var string - */ - private $orientation = PHPExcel_Worksheet_PageSetup::ORIENTATION_DEFAULT; - - /** - * Scale (Print Scale) - * - * Print scaling. Valid values range from 10 to 400 - * This setting is overridden when fitToWidth and/or fitToHeight are in use - * - * @var int? - */ - private $scale = 100; - - /** - * Fit To Page - * Whether scale or fitToWith / fitToHeight applies - * - * @var boolean - */ - private $fitToPage = false; - - /** - * Fit To Height - * Number of vertical pages to fit on - * - * @var int? - */ - private $fitToHeight = 1; - - /** - * Fit To Width - * Number of horizontal pages to fit on - * - * @var int? - */ - private $fitToWidth = 1; - - /** - * Columns to repeat at left - * - * @var array Containing start column and end column, empty array if option unset - */ - private $columnsToRepeatAtLeft = array('', ''); - - /** - * Rows to repeat at top - * - * @var array Containing start row number and end row number, empty array if option unset - */ - private $rowsToRepeatAtTop = array(0, 0); - - /** - * Center page horizontally - * - * @var boolean - */ - private $horizontalCentered = false; - - /** - * Center page vertically - * - * @var boolean - */ - private $verticalCentered = false; - - /** - * Print area - * - * @var string - */ - private $printArea = null; - - /** - * First page number - * - * @var int - */ - private $firstPageNumber = null; - - /** - * Create a new PHPExcel_Worksheet_PageSetup - */ - public function __construct() - { - } - - /** - * Get Paper Size - * - * @return int - */ - public function getPaperSize() - { - return $this->paperSize; - } - - /** - * Set Paper Size - * - * @param int $pValue - * @return PHPExcel_Worksheet_PageSetup - */ - public function setPaperSize($pValue = PHPExcel_Worksheet_PageSetup::PAPERSIZE_LETTER) - { - $this->paperSize = $pValue; - return $this; - } - - /** - * Get Orientation - * - * @return string - */ - public function getOrientation() - { - return $this->orientation; - } - - /** - * Set Orientation - * - * @param string $pValue - * @return PHPExcel_Worksheet_PageSetup - */ - public function setOrientation($pValue = PHPExcel_Worksheet_PageSetup::ORIENTATION_DEFAULT) - { - $this->orientation = $pValue; - return $this; - } - - /** - * Get Scale - * - * @return int? - */ - public function getScale() - { - return $this->scale; - } - - /** - * Set Scale - * - * Print scaling. Valid values range from 10 to 400 - * This setting is overridden when fitToWidth and/or fitToHeight are in use - * - * @param int? $pValue - * @param boolean $pUpdate Update fitToPage so scaling applies rather than fitToHeight / fitToWidth - * @return PHPExcel_Worksheet_PageSetup - * @throws PHPExcel_Exception - */ - public function setScale($pValue = 100, $pUpdate = true) - { - // Microsoft Office Excel 2007 only allows setting a scale between 10 and 400 via the user interface, - // but it is apparently still able to handle any scale >= 0, where 0 results in 100 - if (($pValue >= 0) || is_null($pValue)) { - $this->scale = $pValue; - if ($pUpdate) { - $this->fitToPage = false; - } - } else { - throw new PHPExcel_Exception("Scale must not be negative"); - } - return $this; - } - - /** - * Get Fit To Page - * - * @return boolean - */ - public function getFitToPage() - { - return $this->fitToPage; - } - - /** - * Set Fit To Page - * - * @param boolean $pValue - * @return PHPExcel_Worksheet_PageSetup - */ - public function setFitToPage($pValue = true) - { - $this->fitToPage = $pValue; - return $this; - } - - /** - * Get Fit To Height - * - * @return int? - */ - public function getFitToHeight() - { - return $this->fitToHeight; - } - - /** - * Set Fit To Height - * - * @param int? $pValue - * @param boolean $pUpdate Update fitToPage so it applies rather than scaling - * @return PHPExcel_Worksheet_PageSetup - */ - public function setFitToHeight($pValue = 1, $pUpdate = true) - { - $this->fitToHeight = $pValue; - if ($pUpdate) { - $this->fitToPage = true; - } - return $this; - } - - /** - * Get Fit To Width - * - * @return int? - */ - public function getFitToWidth() - { - return $this->fitToWidth; - } - - /** - * Set Fit To Width - * - * @param int? $pValue - * @param boolean $pUpdate Update fitToPage so it applies rather than scaling - * @return PHPExcel_Worksheet_PageSetup - */ - public function setFitToWidth($pValue = 1, $pUpdate = true) - { - $this->fitToWidth = $pValue; - if ($pUpdate) { - $this->fitToPage = true; - } - return $this; - } - - /** - * Is Columns to repeat at left set? - * - * @return boolean - */ - public function isColumnsToRepeatAtLeftSet() - { - if (is_array($this->columnsToRepeatAtLeft)) { - if ($this->columnsToRepeatAtLeft[0] != '' && $this->columnsToRepeatAtLeft[1] != '') { - return true; - } - } - - return false; - } - - /** - * Get Columns to repeat at left - * - * @return array Containing start column and end column, empty array if option unset - */ - public function getColumnsToRepeatAtLeft() - { - return $this->columnsToRepeatAtLeft; - } - - /** - * Set Columns to repeat at left - * - * @param array $pValue Containing start column and end column, empty array if option unset - * @return PHPExcel_Worksheet_PageSetup - */ - public function setColumnsToRepeatAtLeft($pValue = null) - { - if (is_array($pValue)) { - $this->columnsToRepeatAtLeft = $pValue; - } - return $this; - } - - /** - * Set Columns to repeat at left by start and end - * - * @param string $pStart - * @param string $pEnd - * @return PHPExcel_Worksheet_PageSetup - */ - public function setColumnsToRepeatAtLeftByStartAndEnd($pStart = 'A', $pEnd = 'A') - { - $this->columnsToRepeatAtLeft = array($pStart, $pEnd); - return $this; - } - - /** - * Is Rows to repeat at top set? - * - * @return boolean - */ - public function isRowsToRepeatAtTopSet() - { - if (is_array($this->rowsToRepeatAtTop)) { - if ($this->rowsToRepeatAtTop[0] != 0 && $this->rowsToRepeatAtTop[1] != 0) { - return true; - } - } - - return false; - } - - /** - * Get Rows to repeat at top - * - * @return array Containing start column and end column, empty array if option unset - */ - public function getRowsToRepeatAtTop() - { - return $this->rowsToRepeatAtTop; - } - - /** - * Set Rows to repeat at top - * - * @param array $pValue Containing start column and end column, empty array if option unset - * @return PHPExcel_Worksheet_PageSetup - */ - public function setRowsToRepeatAtTop($pValue = null) - { - if (is_array($pValue)) { - $this->rowsToRepeatAtTop = $pValue; - } - return $this; - } - - /** - * Set Rows to repeat at top by start and end - * - * @param int $pStart - * @param int $pEnd - * @return PHPExcel_Worksheet_PageSetup - */ - public function setRowsToRepeatAtTopByStartAndEnd($pStart = 1, $pEnd = 1) - { - $this->rowsToRepeatAtTop = array($pStart, $pEnd); - return $this; - } - - /** - * Get center page horizontally - * - * @return bool - */ - public function getHorizontalCentered() - { - return $this->horizontalCentered; - } - - /** - * Set center page horizontally - * - * @param bool $value - * @return PHPExcel_Worksheet_PageSetup - */ - public function setHorizontalCentered($value = false) - { - $this->horizontalCentered = $value; - return $this; - } - - /** - * Get center page vertically - * - * @return bool - */ - public function getVerticalCentered() - { - return $this->verticalCentered; - } - - /** - * Set center page vertically - * - * @param bool $value - * @return PHPExcel_Worksheet_PageSetup - */ - public function setVerticalCentered($value = false) - { - $this->verticalCentered = $value; - return $this; - } - - /** - * Get print area - * - * @param int $index Identifier for a specific print area range if several ranges have been set - * Default behaviour, or a index value of 0, will return all ranges as a comma-separated string - * Otherwise, the specific range identified by the value of $index will be returned - * Print areas are numbered from 1 - * @throws PHPExcel_Exception - * @return string - */ - public function getPrintArea($index = 0) - { - if ($index == 0) { - return $this->printArea; - } - $printAreas = explode(',', $this->printArea); - if (isset($printAreas[$index-1])) { - return $printAreas[$index-1]; - } - throw new PHPExcel_Exception("Requested Print Area does not exist"); - } - - /** - * Is print area set? - * - * @param int $index Identifier for a specific print area range if several ranges have been set - * Default behaviour, or an index value of 0, will identify whether any print range is set - * Otherwise, existence of the range identified by the value of $index will be returned - * Print areas are numbered from 1 - * @return boolean - */ - public function isPrintAreaSet($index = 0) - { - if ($index == 0) { - return !is_null($this->printArea); - } - $printAreas = explode(',', $this->printArea); - return isset($printAreas[$index-1]); - } - - /** - * Clear a print area - * - * @param int $index Identifier for a specific print area range if several ranges have been set - * Default behaviour, or an index value of 0, will clear all print ranges that are set - * Otherwise, the range identified by the value of $index will be removed from the series - * Print areas are numbered from 1 - * @return PHPExcel_Worksheet_PageSetup - */ - public function clearPrintArea($index = 0) - { - if ($index == 0) { - $this->printArea = null; - } else { - $printAreas = explode(',', $this->printArea); - if (isset($printAreas[$index-1])) { - unset($printAreas[$index-1]); - $this->printArea = implode(',', $printAreas); - } - } - - return $this; - } - - /** - * Set print area. e.g. 'A1:D10' or 'A1:D10,G5:M20' - * - * @param string $value - * @param int $index Identifier for a specific print area range allowing several ranges to be set - * When the method is "O"verwrite, then a positive integer index will overwrite that indexed - * entry in the print areas list; a negative index value will identify which entry to - * overwrite working bacward through the print area to the list, with the last entry as -1. - * Specifying an index value of 0, will overwrite <b>all</b> existing print ranges. - * When the method is "I"nsert, then a positive index will insert after that indexed entry in - * the print areas list, while a negative index will insert before the indexed entry. - * Specifying an index value of 0, will always append the new print range at the end of the - * list. - * Print areas are numbered from 1 - * @param string $method Determines the method used when setting multiple print areas - * Default behaviour, or the "O" method, overwrites existing print area - * The "I" method, inserts the new print area before any specified index, or at the end of the list - * @return PHPExcel_Worksheet_PageSetup - * @throws PHPExcel_Exception - */ - public function setPrintArea($value, $index = 0, $method = self::SETPRINTRANGE_OVERWRITE) - { - if (strpos($value, '!') !== false) { - throw new PHPExcel_Exception('Cell coordinate must not specify a worksheet.'); - } elseif (strpos($value, ':') === false) { - throw new PHPExcel_Exception('Cell coordinate must be a range of cells.'); - } elseif (strpos($value, '$') !== false) { - throw new PHPExcel_Exception('Cell coordinate must not be absolute.'); - } - $value = strtoupper($value); - - if ($method == self::SETPRINTRANGE_OVERWRITE) { - if ($index == 0) { - $this->printArea = $value; - } else { - $printAreas = explode(',', $this->printArea); - if ($index < 0) { - $index = count($printAreas) - abs($index) + 1; - } - if (($index <= 0) || ($index > count($printAreas))) { - throw new PHPExcel_Exception('Invalid index for setting print range.'); - } - $printAreas[$index-1] = $value; - $this->printArea = implode(',', $printAreas); - } - } elseif ($method == self::SETPRINTRANGE_INSERT) { - if ($index == 0) { - $this->printArea .= ($this->printArea == '') ? $value : ','.$value; - } else { - $printAreas = explode(',', $this->printArea); - if ($index < 0) { - $index = abs($index) - 1; - } - if ($index > count($printAreas)) { - throw new PHPExcel_Exception('Invalid index for setting print range.'); - } - $printAreas = array_merge(array_slice($printAreas, 0, $index), array($value), array_slice($printAreas, $index)); - $this->printArea = implode(',', $printAreas); - } - } else { - throw new PHPExcel_Exception('Invalid method for setting print range.'); - } - - return $this; - } - - /** - * Add a new print area (e.g. 'A1:D10' or 'A1:D10,G5:M20') to the list of print areas - * - * @param string $value - * @param int $index Identifier for a specific print area range allowing several ranges to be set - * A positive index will insert after that indexed entry in the print areas list, while a - * negative index will insert before the indexed entry. - * Specifying an index value of 0, will always append the new print range at the end of the - * list. - * Print areas are numbered from 1 - * @return PHPExcel_Worksheet_PageSetup - * @throws PHPExcel_Exception - */ - public function addPrintArea($value, $index = -1) - { - return $this->setPrintArea($value, $index, self::SETPRINTRANGE_INSERT); - } - - /** - * Set print area - * - * @param int $column1 Column 1 - * @param int $row1 Row 1 - * @param int $column2 Column 2 - * @param int $row2 Row 2 - * @param int $index Identifier for a specific print area range allowing several ranges to be set - * When the method is "O"verwrite, then a positive integer index will overwrite that indexed - * entry in the print areas list; a negative index value will identify which entry to - * overwrite working bacward through the print area to the list, with the last entry as -1. - * Specifying an index value of 0, will overwrite <b>all</b> existing print ranges. - * When the method is "I"nsert, then a positive index will insert after that indexed entry in - * the print areas list, while a negative index will insert before the indexed entry. - * Specifying an index value of 0, will always append the new print range at the end of the - * list. - * Print areas are numbered from 1 - * @param string $method Determines the method used when setting multiple print areas - * Default behaviour, or the "O" method, overwrites existing print area - * The "I" method, inserts the new print area before any specified index, or at the end of the list - * @return PHPExcel_Worksheet_PageSetup - * @throws PHPExcel_Exception - */ - public function setPrintAreaByColumnAndRow($column1, $row1, $column2, $row2, $index = 0, $method = self::SETPRINTRANGE_OVERWRITE) - { - return $this->setPrintArea( - PHPExcel_Cell::stringFromColumnIndex($column1) . $row1 . ':' . PHPExcel_Cell::stringFromColumnIndex($column2) . $row2, - $index, - $method - ); - } - - /** - * Add a new print area to the list of print areas - * - * @param int $column1 Start Column for the print area - * @param int $row1 Start Row for the print area - * @param int $column2 End Column for the print area - * @param int $row2 End Row for the print area - * @param int $index Identifier for a specific print area range allowing several ranges to be set - * A positive index will insert after that indexed entry in the print areas list, while a - * negative index will insert before the indexed entry. - * Specifying an index value of 0, will always append the new print range at the end of the - * list. - * Print areas are numbered from 1 - * @return PHPExcel_Worksheet_PageSetup - * @throws PHPExcel_Exception - */ - public function addPrintAreaByColumnAndRow($column1, $row1, $column2, $row2, $index = -1) - { - return $this->setPrintArea( - PHPExcel_Cell::stringFromColumnIndex($column1) . $row1 . ':' . PHPExcel_Cell::stringFromColumnIndex($column2) . $row2, - $index, - self::SETPRINTRANGE_INSERT - ); - } - - /** - * Get first page number - * - * @return int - */ - public function getFirstPageNumber() - { - return $this->firstPageNumber; - } - - /** - * Set first page number - * - * @param int $value - * @return PHPExcel_Worksheet_HeaderFooter - */ - public function setFirstPageNumber($value = null) - { - $this->firstPageNumber = $value; - return $this; - } - - /** - * Reset first page number - * - * @return PHPExcel_Worksheet_HeaderFooter - */ - public function resetFirstPageNumber() - { - return $this->setFirstPageNumber(null); - } - - /** - * Implement PHP __clone to create a deep clone, not just a shallow copy. - */ - public function __clone() - { - $vars = get_object_vars($this); - foreach ($vars as $key => $value) { - if (is_object($value)) { - $this->$key = clone $value; - } else { - $this->$key = $value; - } - } - } -} diff --git a/application/third_party/PHPExcel/Worksheet/Protection.php b/application/third_party/PHPExcel/Worksheet/Protection.php deleted file mode 100644 index 00633eeb..00000000 --- a/application/third_party/PHPExcel/Worksheet/Protection.php +++ /dev/null @@ -1,581 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Worksheet - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - - -/** - * PHPExcel_Worksheet_Protection - * - * @category PHPExcel - * @package PHPExcel_Worksheet - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - */ -class PHPExcel_Worksheet_Protection -{ - /** - * Sheet - * - * @var boolean - */ - private $sheet = false; - - /** - * Objects - * - * @var boolean - */ - private $objects = false; - - /** - * Scenarios - * - * @var boolean - */ - private $scenarios = false; - - /** - * Format cells - * - * @var boolean - */ - private $formatCells = false; - - /** - * Format columns - * - * @var boolean - */ - private $formatColumns = false; - - /** - * Format rows - * - * @var boolean - */ - private $formatRows = false; - - /** - * Insert columns - * - * @var boolean - */ - private $insertColumns = false; - - /** - * Insert rows - * - * @var boolean - */ - private $insertRows = false; - - /** - * Insert hyperlinks - * - * @var boolean - */ - private $insertHyperlinks = false; - - /** - * Delete columns - * - * @var boolean - */ - private $deleteColumns = false; - - /** - * Delete rows - * - * @var boolean - */ - private $deleteRows = false; - - /** - * Select locked cells - * - * @var boolean - */ - private $selectLockedCells = false; - - /** - * Sort - * - * @var boolean - */ - private $sort = false; - - /** - * AutoFilter - * - * @var boolean - */ - private $autoFilter = false; - - /** - * Pivot tables - * - * @var boolean - */ - private $pivotTables = false; - - /** - * Select unlocked cells - * - * @var boolean - */ - private $selectUnlockedCells = false; - - /** - * Password - * - * @var string - */ - private $password = ''; - - /** - * Create a new PHPExcel_Worksheet_Protection - */ - public function __construct() - { - } - - /** - * Is some sort of protection enabled? - * - * @return boolean - */ - public function isProtectionEnabled() - { - return $this->sheet || - $this->objects || - $this->scenarios || - $this->formatCells || - $this->formatColumns || - $this->formatRows || - $this->insertColumns || - $this->insertRows || - $this->insertHyperlinks || - $this->deleteColumns || - $this->deleteRows || - $this->selectLockedCells || - $this->sort || - $this->autoFilter || - $this->pivotTables || - $this->selectUnlockedCells; - } - - /** - * Get Sheet - * - * @return boolean - */ - public function getSheet() - { - return $this->sheet; - } - - /** - * Set Sheet - * - * @param boolean $pValue - * @return PHPExcel_Worksheet_Protection - */ - public function setSheet($pValue = false) - { - $this->sheet = $pValue; - return $this; - } - - /** - * Get Objects - * - * @return boolean - */ - public function getObjects() - { - return $this->objects; - } - - /** - * Set Objects - * - * @param boolean $pValue - * @return PHPExcel_Worksheet_Protection - */ - public function setObjects($pValue = false) - { - $this->objects = $pValue; - return $this; - } - - /** - * Get Scenarios - * - * @return boolean - */ - public function getScenarios() - { - return $this->scenarios; - } - - /** - * Set Scenarios - * - * @param boolean $pValue - * @return PHPExcel_Worksheet_Protection - */ - public function setScenarios($pValue = false) - { - $this->scenarios = $pValue; - return $this; - } - - /** - * Get FormatCells - * - * @return boolean - */ - public function getFormatCells() - { - return $this->formatCells; - } - - /** - * Set FormatCells - * - * @param boolean $pValue - * @return PHPExcel_Worksheet_Protection - */ - public function setFormatCells($pValue = false) - { - $this->formatCells = $pValue; - return $this; - } - - /** - * Get FormatColumns - * - * @return boolean - */ - public function getFormatColumns() - { - return $this->formatColumns; - } - - /** - * Set FormatColumns - * - * @param boolean $pValue - * @return PHPExcel_Worksheet_Protection - */ - public function setFormatColumns($pValue = false) - { - $this->formatColumns = $pValue; - return $this; - } - - /** - * Get FormatRows - * - * @return boolean - */ - public function getFormatRows() - { - return $this->formatRows; - } - - /** - * Set FormatRows - * - * @param boolean $pValue - * @return PHPExcel_Worksheet_Protection - */ - public function setFormatRows($pValue = false) - { - $this->formatRows = $pValue; - return $this; - } - - /** - * Get InsertColumns - * - * @return boolean - */ - public function getInsertColumns() - { - return $this->insertColumns; - } - - /** - * Set InsertColumns - * - * @param boolean $pValue - * @return PHPExcel_Worksheet_Protection - */ - public function setInsertColumns($pValue = false) - { - $this->insertColumns = $pValue; - return $this; - } - - /** - * Get InsertRows - * - * @return boolean - */ - public function getInsertRows() - { - return $this->insertRows; - } - - /** - * Set InsertRows - * - * @param boolean $pValue - * @return PHPExcel_Worksheet_Protection - */ - public function setInsertRows($pValue = false) - { - $this->insertRows = $pValue; - return $this; - } - - /** - * Get InsertHyperlinks - * - * @return boolean - */ - public function getInsertHyperlinks() - { - return $this->insertHyperlinks; - } - - /** - * Set InsertHyperlinks - * - * @param boolean $pValue - * @return PHPExcel_Worksheet_Protection - */ - public function setInsertHyperlinks($pValue = false) - { - $this->insertHyperlinks = $pValue; - return $this; - } - - /** - * Get DeleteColumns - * - * @return boolean - */ - public function getDeleteColumns() - { - return $this->deleteColumns; - } - - /** - * Set DeleteColumns - * - * @param boolean $pValue - * @return PHPExcel_Worksheet_Protection - */ - public function setDeleteColumns($pValue = false) - { - $this->deleteColumns = $pValue; - return $this; - } - - /** - * Get DeleteRows - * - * @return boolean - */ - public function getDeleteRows() - { - return $this->deleteRows; - } - - /** - * Set DeleteRows - * - * @param boolean $pValue - * @return PHPExcel_Worksheet_Protection - */ - public function setDeleteRows($pValue = false) - { - $this->deleteRows = $pValue; - return $this; - } - - /** - * Get SelectLockedCells - * - * @return boolean - */ - public function getSelectLockedCells() - { - return $this->selectLockedCells; - } - - /** - * Set SelectLockedCells - * - * @param boolean $pValue - * @return PHPExcel_Worksheet_Protection - */ - public function setSelectLockedCells($pValue = false) - { - $this->selectLockedCells = $pValue; - return $this; - } - - /** - * Get Sort - * - * @return boolean - */ - public function getSort() - { - return $this->sort; - } - - /** - * Set Sort - * - * @param boolean $pValue - * @return PHPExcel_Worksheet_Protection - */ - public function setSort($pValue = false) - { - $this->sort = $pValue; - return $this; - } - - /** - * Get AutoFilter - * - * @return boolean - */ - public function getAutoFilter() - { - return $this->autoFilter; - } - - /** - * Set AutoFilter - * - * @param boolean $pValue - * @return PHPExcel_Worksheet_Protection - */ - public function setAutoFilter($pValue = false) - { - $this->autoFilter = $pValue; - return $this; - } - - /** - * Get PivotTables - * - * @return boolean - */ - public function getPivotTables() - { - return $this->pivotTables; - } - - /** - * Set PivotTables - * - * @param boolean $pValue - * @return PHPExcel_Worksheet_Protection - */ - public function setPivotTables($pValue = false) - { - $this->pivotTables = $pValue; - return $this; - } - - /** - * Get SelectUnlockedCells - * - * @return boolean - */ - public function getSelectUnlockedCells() - { - return $this->selectUnlockedCells; - } - - /** - * Set SelectUnlockedCells - * - * @param boolean $pValue - * @return PHPExcel_Worksheet_Protection - */ - public function setSelectUnlockedCells($pValue = false) - { - $this->selectUnlockedCells = $pValue; - return $this; - } - - /** - * Get Password (hashed) - * - * @return string - */ - public function getPassword() - { - return $this->password; - } - - /** - * Set Password - * - * @param string $pValue - * @param boolean $pAlreadyHashed If the password has already been hashed, set this to true - * @return PHPExcel_Worksheet_Protection - */ - public function setPassword($pValue = '', $pAlreadyHashed = false) - { - if (!$pAlreadyHashed) { - $pValue = PHPExcel_Shared_PasswordHasher::hashPassword($pValue); - } - $this->password = $pValue; - return $this; - } - - /** - * Implement PHP __clone to create a deep clone, not just a shallow copy. - */ - public function __clone() - { - $vars = get_object_vars($this); - foreach ($vars as $key => $value) { - if (is_object($value)) { - $this->$key = clone $value; - } else { - $this->$key = $value; - } - } - } -} diff --git a/application/third_party/PHPExcel/Worksheet/Row.php b/application/third_party/PHPExcel/Worksheet/Row.php deleted file mode 100644 index 4f6034f5..00000000 --- a/application/third_party/PHPExcel/Worksheet/Row.php +++ /dev/null @@ -1,86 +0,0 @@ -<?php - -/** - * PHPExcel_Worksheet_Row - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Worksheet - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Worksheet_Row -{ - /** - * PHPExcel_Worksheet - * - * @var PHPExcel_Worksheet - */ - private $parent; - - /** - * Row index - * - * @var int - */ - private $rowIndex = 0; - - /** - * Create a new row - * - * @param PHPExcel_Worksheet $parent - * @param int $rowIndex - */ - public function __construct(PHPExcel_Worksheet $parent = null, $rowIndex = 1) - { - // Set parent and row index - $this->parent = $parent; - $this->rowIndex = $rowIndex; - } - - /** - * Destructor - */ - public function __destruct() - { - unset($this->parent); - } - - /** - * Get row index - * - * @return int - */ - public function getRowIndex() - { - return $this->rowIndex; - } - - /** - * Get cell iterator - * - * @param string $startColumn The column address at which to start iterating - * @param string $endColumn Optionally, the column address at which to stop iterating - * @return PHPExcel_Worksheet_CellIterator - */ - public function getCellIterator($startColumn = 'A', $endColumn = null) - { - return new PHPExcel_Worksheet_RowCellIterator($this->parent, $this->rowIndex, $startColumn, $endColumn); - } -} diff --git a/application/third_party/PHPExcel/Worksheet/RowCellIterator.php b/application/third_party/PHPExcel/Worksheet/RowCellIterator.php deleted file mode 100644 index 90eb9c9f..00000000 --- a/application/third_party/PHPExcel/Worksheet/RowCellIterator.php +++ /dev/null @@ -1,225 +0,0 @@ -<?php - -/** - * PHPExcel_Worksheet_RowCellIterator - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Worksheet - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Worksheet_RowCellIterator extends PHPExcel_Worksheet_CellIterator implements Iterator -{ - /** - * Row index - * - * @var int - */ - protected $rowIndex; - - /** - * Start position - * - * @var int - */ - protected $startColumn = 0; - - /** - * End position - * - * @var int - */ - protected $endColumn = 0; - - /** - * Create a new column iterator - * - * @param PHPExcel_Worksheet $subject The worksheet to iterate over - * @param integer $rowIndex The row that we want to iterate - * @param string $startColumn The column address at which to start iterating - * @param string $endColumn Optionally, the column address at which to stop iterating - */ - public function __construct(PHPExcel_Worksheet $subject = null, $rowIndex = 1, $startColumn = 'A', $endColumn = null) - { - // Set subject and row index - $this->subject = $subject; - $this->rowIndex = $rowIndex; - $this->resetEnd($endColumn); - $this->resetStart($startColumn); - } - - /** - * Destructor - */ - public function __destruct() - { - unset($this->subject); - } - - /** - * (Re)Set the start column and the current column pointer - * - * @param integer $startColumn The column address at which to start iterating - * @return PHPExcel_Worksheet_RowCellIterator - * @throws PHPExcel_Exception - */ - public function resetStart($startColumn = 'A') - { - $startColumnIndex = PHPExcel_Cell::columnIndexFromString($startColumn) - 1; - $this->startColumn = $startColumnIndex; - $this->adjustForExistingOnlyRange(); - $this->seek(PHPExcel_Cell::stringFromColumnIndex($this->startColumn)); - - return $this; - } - - /** - * (Re)Set the end column - * - * @param string $endColumn The column address at which to stop iterating - * @return PHPExcel_Worksheet_RowCellIterator - * @throws PHPExcel_Exception - */ - public function resetEnd($endColumn = null) - { - $endColumn = ($endColumn) ? $endColumn : $this->subject->getHighestColumn(); - $this->endColumn = PHPExcel_Cell::columnIndexFromString($endColumn) - 1; - $this->adjustForExistingOnlyRange(); - - return $this; - } - - /** - * Set the column pointer to the selected column - * - * @param string $column The column address to set the current pointer at - * @return PHPExcel_Worksheet_RowCellIterator - * @throws PHPExcel_Exception - */ - public function seek($column = 'A') - { - $column = PHPExcel_Cell::columnIndexFromString($column) - 1; - if (($column < $this->startColumn) || ($column > $this->endColumn)) { - throw new PHPExcel_Exception("Column $column is out of range ({$this->startColumn} - {$this->endColumn})"); - } elseif ($this->onlyExistingCells && !($this->subject->cellExistsByColumnAndRow($column, $this->rowIndex))) { - throw new PHPExcel_Exception('In "IterateOnlyExistingCells" mode and Cell does not exist'); - } - $this->position = $column; - - return $this; - } - - /** - * Rewind the iterator to the starting column - */ - public function rewind() - { - $this->position = $this->startColumn; - } - - /** - * Return the current cell in this worksheet row - * - * @return PHPExcel_Cell - */ - public function current() - { - return $this->subject->getCellByColumnAndRow($this->position, $this->rowIndex); - } - - /** - * Return the current iterator key - * - * @return string - */ - public function key() - { - return PHPExcel_Cell::stringFromColumnIndex($this->position); - } - - /** - * Set the iterator to its next value - */ - public function next() - { - do { - ++$this->position; - } while (($this->onlyExistingCells) && - (!$this->subject->cellExistsByColumnAndRow($this->position, $this->rowIndex)) && - ($this->position <= $this->endColumn)); - } - - /** - * Set the iterator to its previous value - * - * @throws PHPExcel_Exception - */ - public function prev() - { - if ($this->position <= $this->startColumn) { - throw new PHPExcel_Exception( - "Column is already at the beginning of range (" . - PHPExcel_Cell::stringFromColumnIndex($this->endColumn) . " - " . - PHPExcel_Cell::stringFromColumnIndex($this->endColumn) . ")" - ); - } - - do { - --$this->position; - } while (($this->onlyExistingCells) && - (!$this->subject->cellExistsByColumnAndRow($this->position, $this->rowIndex)) && - ($this->position >= $this->startColumn)); - } - - /** - * Indicate if more columns exist in the worksheet range of columns that we're iterating - * - * @return boolean - */ - public function valid() - { - return $this->position <= $this->endColumn; - } - - /** - * Validate start/end values for "IterateOnlyExistingCells" mode, and adjust if necessary - * - * @throws PHPExcel_Exception - */ - protected function adjustForExistingOnlyRange() - { - if ($this->onlyExistingCells) { - while ((!$this->subject->cellExistsByColumnAndRow($this->startColumn, $this->rowIndex)) && - ($this->startColumn <= $this->endColumn)) { - ++$this->startColumn; - } - if ($this->startColumn > $this->endColumn) { - throw new PHPExcel_Exception('No cells exist within the specified range'); - } - while ((!$this->subject->cellExistsByColumnAndRow($this->endColumn, $this->rowIndex)) && - ($this->endColumn >= $this->startColumn)) { - --$this->endColumn; - } - if ($this->endColumn < $this->startColumn) { - throw new PHPExcel_Exception('No cells exist within the specified range'); - } - } - } -} diff --git a/application/third_party/PHPExcel/Worksheet/RowDimension.php b/application/third_party/PHPExcel/Worksheet/RowDimension.php deleted file mode 100644 index c1474862..00000000 --- a/application/third_party/PHPExcel/Worksheet/RowDimension.php +++ /dev/null @@ -1,132 +0,0 @@ -<?php - -/** - * PHPExcel_Worksheet_RowDimension - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Worksheet - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Worksheet_RowDimension extends PHPExcel_Worksheet_Dimension -{ - /** - * Row index - * - * @var int - */ - private $rowIndex; - - /** - * Row height (in pt) - * - * When this is set to a negative value, the row height should be ignored by IWriter - * - * @var double - */ - private $height = -1; - - /** - * ZeroHeight for Row? - * - * @var bool - */ - private $zeroHeight = false; - - /** - * Create a new PHPExcel_Worksheet_RowDimension - * - * @param int $pIndex Numeric row index - */ - public function __construct($pIndex = 0) - { - // Initialise values - $this->rowIndex = $pIndex; - - // set dimension as unformatted by default - parent::__construct(null); - } - - /** - * Get Row Index - * - * @return int - */ - public function getRowIndex() - { - return $this->rowIndex; - } - - /** - * Set Row Index - * - * @param int $pValue - * @return PHPExcel_Worksheet_RowDimension - */ - public function setRowIndex($pValue) - { - $this->rowIndex = $pValue; - return $this; - } - - /** - * Get Row Height - * - * @return double - */ - public function getRowHeight() - { - return $this->height; - } - - /** - * Set Row Height - * - * @param double $pValue - * @return PHPExcel_Worksheet_RowDimension - */ - public function setRowHeight($pValue = -1) - { - $this->height = $pValue; - return $this; - } - - /** - * Get ZeroHeight - * - * @return bool - */ - public function getZeroHeight() - { - return $this->zeroHeight; - } - - /** - * Set ZeroHeight - * - * @param bool $pValue - * @return PHPExcel_Worksheet_RowDimension - */ - public function setZeroHeight($pValue = false) - { - $this->zeroHeight = $pValue; - return $this; - } -} diff --git a/application/third_party/PHPExcel/Worksheet/RowIterator.php b/application/third_party/PHPExcel/Worksheet/RowIterator.php deleted file mode 100644 index 9ddb3e03..00000000 --- a/application/third_party/PHPExcel/Worksheet/RowIterator.php +++ /dev/null @@ -1,192 +0,0 @@ -<?php - -/** - * PHPExcel_Worksheet_RowIterator - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Worksheet - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Worksheet_RowIterator implements Iterator -{ - /** - * PHPExcel_Worksheet to iterate - * - * @var PHPExcel_Worksheet - */ - private $subject; - - /** - * Current iterator position - * - * @var int - */ - private $position = 1; - - /** - * Start position - * - * @var int - */ - private $startRow = 1; - - - /** - * End position - * - * @var int - */ - private $endRow = 1; - - - /** - * Create a new row iterator - * - * @param PHPExcel_Worksheet $subject The worksheet to iterate over - * @param integer $startRow The row number at which to start iterating - * @param integer $endRow Optionally, the row number at which to stop iterating - */ - public function __construct(PHPExcel_Worksheet $subject, $startRow = 1, $endRow = null) - { - // Set subject - $this->subject = $subject; - $this->resetEnd($endRow); - $this->resetStart($startRow); - } - - /** - * Destructor - */ - public function __destruct() - { - unset($this->subject); - } - - /** - * (Re)Set the start row and the current row pointer - * - * @param integer $startRow The row number at which to start iterating - * @return PHPExcel_Worksheet_RowIterator - * @throws PHPExcel_Exception - */ - public function resetStart($startRow = 1) - { - if ($startRow > $this->subject->getHighestRow()) { - throw new PHPExcel_Exception("Start row ({$startRow}) is beyond highest row ({$this->subject->getHighestRow()})"); - } - - $this->startRow = $startRow; - if ($this->endRow < $this->startRow) { - $this->endRow = $this->startRow; - } - $this->seek($startRow); - - return $this; - } - - /** - * (Re)Set the end row - * - * @param integer $endRow The row number at which to stop iterating - * @return PHPExcel_Worksheet_RowIterator - */ - public function resetEnd($endRow = null) - { - $this->endRow = ($endRow) ? $endRow : $this->subject->getHighestRow(); - - return $this; - } - - /** - * Set the row pointer to the selected row - * - * @param integer $row The row number to set the current pointer at - * @return PHPExcel_Worksheet_RowIterator - * @throws PHPExcel_Exception - */ - public function seek($row = 1) - { - if (($row < $this->startRow) || ($row > $this->endRow)) { - throw new PHPExcel_Exception("Row $row is out of range ({$this->startRow} - {$this->endRow})"); - } - $this->position = $row; - - return $this; - } - - /** - * Rewind the iterator to the starting row - */ - public function rewind() - { - $this->position = $this->startRow; - } - - /** - * Return the current row in this worksheet - * - * @return PHPExcel_Worksheet_Row - */ - public function current() - { - return new PHPExcel_Worksheet_Row($this->subject, $this->position); - } - - /** - * Return the current iterator key - * - * @return int - */ - public function key() - { - return $this->position; - } - - /** - * Set the iterator to its next value - */ - public function next() - { - ++$this->position; - } - - /** - * Set the iterator to its previous value - */ - public function prev() - { - if ($this->position <= $this->startRow) { - throw new PHPExcel_Exception("Row is already at the beginning of range ({$this->startRow} - {$this->endRow})"); - } - - --$this->position; - } - - /** - * Indicate if more rows exist in the worksheet range of rows that we're iterating - * - * @return boolean - */ - public function valid() - { - return $this->position <= $this->endRow; - } -} diff --git a/application/third_party/PHPExcel/Worksheet/SheetView.php b/application/third_party/PHPExcel/Worksheet/SheetView.php deleted file mode 100644 index 5aaef3ba..00000000 --- a/application/third_party/PHPExcel/Worksheet/SheetView.php +++ /dev/null @@ -1,187 +0,0 @@ -<?php - -/** - * PHPExcel_Worksheet_SheetView - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Worksheet - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Worksheet_SheetView -{ - - /* Sheet View types */ - const SHEETVIEW_NORMAL = 'normal'; - const SHEETVIEW_PAGE_LAYOUT = 'pageLayout'; - const SHEETVIEW_PAGE_BREAK_PREVIEW = 'pageBreakPreview'; - - private static $sheetViewTypes = array( - self::SHEETVIEW_NORMAL, - self::SHEETVIEW_PAGE_LAYOUT, - self::SHEETVIEW_PAGE_BREAK_PREVIEW, - ); - - /** - * ZoomScale - * - * Valid values range from 10 to 400. - * - * @var int - */ - private $zoomScale = 100; - - /** - * ZoomScaleNormal - * - * Valid values range from 10 to 400. - * - * @var int - */ - private $zoomScaleNormal = 100; - - /** - * View - * - * Valid values range from 10 to 400. - * - * @var string - */ - private $sheetviewType = self::SHEETVIEW_NORMAL; - - /** - * Create a new PHPExcel_Worksheet_SheetView - */ - public function __construct() - { - } - - /** - * Get ZoomScale - * - * @return int - */ - public function getZoomScale() - { - return $this->zoomScale; - } - - /** - * Set ZoomScale - * - * Valid values range from 10 to 400. - * - * @param int $pValue - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet_SheetView - */ - public function setZoomScale($pValue = 100) - { - // Microsoft Office Excel 2007 only allows setting a scale between 10 and 400 via the user interface, - // but it is apparently still able to handle any scale >= 1 - if (($pValue >= 1) || is_null($pValue)) { - $this->zoomScale = $pValue; - } else { - throw new PHPExcel_Exception("Scale must be greater than or equal to 1."); - } - return $this; - } - - /** - * Get ZoomScaleNormal - * - * @return int - */ - public function getZoomScaleNormal() - { - return $this->zoomScaleNormal; - } - - /** - * Set ZoomScale - * - * Valid values range from 10 to 400. - * - * @param int $pValue - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet_SheetView - */ - public function setZoomScaleNormal($pValue = 100) - { - if (($pValue >= 1) || is_null($pValue)) { - $this->zoomScaleNormal = $pValue; - } else { - throw new PHPExcel_Exception("Scale must be greater than or equal to 1."); - } - return $this; - } - - /** - * Get View - * - * @return string - */ - public function getView() - { - return $this->sheetviewType; - } - - /** - * Set View - * - * Valid values are - * 'normal' self::SHEETVIEW_NORMAL - * 'pageLayout' self::SHEETVIEW_PAGE_LAYOUT - * 'pageBreakPreview' self::SHEETVIEW_PAGE_BREAK_PREVIEW - * - * @param string $pValue - * @throws PHPExcel_Exception - * @return PHPExcel_Worksheet_SheetView - */ - public function setView($pValue = null) - { - // MS Excel 2007 allows setting the view to 'normal', 'pageLayout' or 'pageBreakPreview' via the user interface - if ($pValue === null) { - $pValue = self::SHEETVIEW_NORMAL; - } - if (in_array($pValue, self::$sheetViewTypes)) { - $this->sheetviewType = $pValue; - } else { - throw new PHPExcel_Exception("Invalid sheetview layout type."); - } - - return $this; - } - - /** - * Implement PHP __clone to create a deep clone, not just a shallow copy. - */ - public function __clone() - { - $vars = get_object_vars($this); - foreach ($vars as $key => $value) { - if (is_object($value)) { - $this->$key = clone $value; - } else { - $this->$key = $value; - } - } - } -} diff --git a/application/third_party/PHPExcel/WorksheetIterator.php b/application/third_party/PHPExcel/WorksheetIterator.php deleted file mode 100644 index cb1b2811..00000000 --- a/application/third_party/PHPExcel/WorksheetIterator.php +++ /dev/null @@ -1,108 +0,0 @@ -<?php - -/** - * PHPExcel_WorksheetIterator - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_WorksheetIterator implements Iterator -{ - /** - * Spreadsheet to iterate - * - * @var PHPExcel - */ - private $subject; - - /** - * Current iterator position - * - * @var int - */ - private $position = 0; - - /** - * Create a new worksheet iterator - * - * @param PHPExcel $subject - */ - public function __construct(PHPExcel $subject = null) - { - // Set subject - $this->subject = $subject; - } - - /** - * Destructor - */ - public function __destruct() - { - unset($this->subject); - } - - /** - * Rewind iterator - */ - public function rewind() - { - $this->position = 0; - } - - /** - * Current PHPExcel_Worksheet - * - * @return PHPExcel_Worksheet - */ - public function current() - { - return $this->subject->getSheet($this->position); - } - - /** - * Current key - * - * @return int - */ - public function key() - { - return $this->position; - } - - /** - * Next value - */ - public function next() - { - ++$this->position; - } - - /** - * More PHPExcel_Worksheet instances available? - * - * @return boolean - */ - public function valid() - { - return $this->position < $this->subject->getSheetCount(); - } -} diff --git a/application/third_party/PHPExcel/Writer/Abstract.php b/application/third_party/PHPExcel/Writer/Abstract.php deleted file mode 100644 index 2a797a94..00000000 --- a/application/third_party/PHPExcel/Writer/Abstract.php +++ /dev/null @@ -1,157 +0,0 @@ -<?php - -/** - * PHPExcel_Writer_Abstract - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -abstract class PHPExcel_Writer_Abstract implements PHPExcel_Writer_IWriter -{ - /** - * Write charts that are defined in the workbook? - * Identifies whether the Writer should write definitions for any charts that exist in the PHPExcel object; - * - * @var boolean - */ - protected $includeCharts = false; - - /** - * Pre-calculate formulas - * Forces PHPExcel to recalculate all formulae in a workbook when saving, so that the pre-calculated values are - * immediately available to MS Excel or other office spreadsheet viewer when opening the file - * - * @var boolean - */ - protected $preCalculateFormulas = true; - - /** - * Use disk caching where possible? - * - * @var boolean - */ - protected $_useDiskCaching = false; - - /** - * Disk caching directory - * - * @var string - */ - protected $_diskCachingDirectory = './'; - - /** - * Write charts in workbook? - * If this is true, then the Writer will write definitions for any charts that exist in the PHPExcel object. - * If false (the default) it will ignore any charts defined in the PHPExcel object. - * - * @return boolean - */ - public function getIncludeCharts() - { - return $this->includeCharts; - } - - /** - * Set write charts in workbook - * Set to true, to advise the Writer to include any charts that exist in the PHPExcel object. - * Set to false (the default) to ignore charts. - * - * @param boolean $pValue - * @return PHPExcel_Writer_IWriter - */ - public function setIncludeCharts($pValue = false) - { - $this->includeCharts = (boolean) $pValue; - return $this; - } - - /** - * Get Pre-Calculate Formulas flag - * If this is true (the default), then the writer will recalculate all formulae in a workbook when saving, - * so that the pre-calculated values are immediately available to MS Excel or other office spreadsheet - * viewer when opening the file - * If false, then formulae are not calculated on save. This is faster for saving in PHPExcel, but slower - * when opening the resulting file in MS Excel, because Excel has to recalculate the formulae itself - * - * @return boolean - */ - public function getPreCalculateFormulas() - { - return $this->preCalculateFormulas; - } - - /** - * Set Pre-Calculate Formulas - * Set to true (the default) to advise the Writer to calculate all formulae on save - * Set to false to prevent precalculation of formulae on save. - * - * @param boolean $pValue Pre-Calculate Formulas? - * @return PHPExcel_Writer_IWriter - */ - public function setPreCalculateFormulas($pValue = true) - { - $this->preCalculateFormulas = (boolean) $pValue; - return $this; - } - - /** - * Get use disk caching where possible? - * - * @return boolean - */ - public function getUseDiskCaching() - { - return $this->_useDiskCaching; - } - - /** - * Set use disk caching where possible? - * - * @param boolean $pValue - * @param string $pDirectory Disk caching directory - * @throws PHPExcel_Writer_Exception when directory does not exist - * @return PHPExcel_Writer_Excel2007 - */ - public function setUseDiskCaching($pValue = false, $pDirectory = null) - { - $this->_useDiskCaching = $pValue; - - if ($pDirectory !== null) { - if (is_dir($pDirectory)) { - $this->_diskCachingDirectory = $pDirectory; - } else { - throw new PHPExcel_Writer_Exception("Directory does not exist: $pDirectory"); - } - } - return $this; - } - - /** - * Get disk caching directory - * - * @return string - */ - public function getDiskCachingDirectory() - { - return $this->_diskCachingDirectory; - } -} diff --git a/application/third_party/PHPExcel/Writer/CSV.php b/application/third_party/PHPExcel/Writer/CSV.php deleted file mode 100644 index e59c3013..00000000 --- a/application/third_party/PHPExcel/Writer/CSV.php +++ /dev/null @@ -1,352 +0,0 @@ -<?php - -/** - * PHPExcel_Writer_CSV - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_CSV - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Writer_CSV extends PHPExcel_Writer_Abstract implements PHPExcel_Writer_IWriter -{ - /** - * PHPExcel object - * - * @var PHPExcel - */ - private $phpExcel; - - /** - * Delimiter - * - * @var string - */ - private $delimiter = ','; - - /** - * Enclosure - * - * @var string - */ - private $enclosure = '"'; - - /** - * Line ending - * - * @var string - */ - private $lineEnding = PHP_EOL; - - /** - * Sheet index to write - * - * @var int - */ - private $sheetIndex = 0; - - /** - * Whether to write a BOM (for UTF8). - * - * @var boolean - */ - private $useBOM = false; - - /** - * Whether to write a Separator line as the first line of the file - * sep=x - * - * @var boolean - */ - private $includeSeparatorLine = false; - - /** - * Whether to write a fully Excel compatible CSV file. - * - * @var boolean - */ - private $excelCompatibility = false; - - /** - * Create a new PHPExcel_Writer_CSV - * - * @param PHPExcel $phpExcel PHPExcel object - */ - public function __construct(PHPExcel $phpExcel) - { - $this->phpExcel = $phpExcel; - } - - /** - * Save PHPExcel to file - * - * @param string $pFilename - * @throws PHPExcel_Writer_Exception - */ - public function save($pFilename = null) - { - // Fetch sheet - $sheet = $this->phpExcel->getSheet($this->sheetIndex); - - $saveDebugLog = PHPExcel_Calculation::getInstance($this->phpExcel)->getDebugLog()->getWriteDebugLog(); - PHPExcel_Calculation::getInstance($this->phpExcel)->getDebugLog()->setWriteDebugLog(false); - $saveArrayReturnType = PHPExcel_Calculation::getArrayReturnType(); - PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE); - - // Open file - $fileHandle = fopen($pFilename, 'wb+'); - if ($fileHandle === false) { - throw new PHPExcel_Writer_Exception("Could not open file $pFilename for writing."); - } - - if ($this->excelCompatibility) { - $this->setUseBOM(true); // Enforce UTF-8 BOM Header - $this->setIncludeSeparatorLine(true); // Set separator line - $this->setEnclosure('"'); // Set enclosure to " - $this->setDelimiter(";"); // Set delimiter to a semi-colon - $this->setLineEnding("\r\n"); - } - if ($this->useBOM) { - // Write the UTF-8 BOM code if required - fwrite($fileHandle, "\xEF\xBB\xBF"); - } - if ($this->includeSeparatorLine) { - // Write the separator line if required - fwrite($fileHandle, 'sep=' . $this->getDelimiter() . $this->lineEnding); - } - - // Identify the range that we need to extract from the worksheet - $maxCol = $sheet->getHighestDataColumn(); - $maxRow = $sheet->getHighestDataRow(); - - // Write rows to file - for ($row = 1; $row <= $maxRow; ++$row) { - // Convert the row to an array... - $cellsArray = $sheet->rangeToArray('A'.$row.':'.$maxCol.$row, '', $this->preCalculateFormulas); - // ... and write to the file - $this->writeLine($fileHandle, $cellsArray[0]); - } - - // Close file - fclose($fileHandle); - - PHPExcel_Calculation::setArrayReturnType($saveArrayReturnType); - PHPExcel_Calculation::getInstance($this->phpExcel)->getDebugLog()->setWriteDebugLog($saveDebugLog); - } - - /** - * Get delimiter - * - * @return string - */ - public function getDelimiter() - { - return $this->delimiter; - } - - /** - * Set delimiter - * - * @param string $pValue Delimiter, defaults to , - * @return PHPExcel_Writer_CSV - */ - public function setDelimiter($pValue = ',') - { - $this->delimiter = $pValue; - return $this; - } - - /** - * Get enclosure - * - * @return string - */ - public function getEnclosure() - { - return $this->enclosure; - } - - /** - * Set enclosure - * - * @param string $pValue Enclosure, defaults to " - * @return PHPExcel_Writer_CSV - */ - public function setEnclosure($pValue = '"') - { - if ($pValue == '') { - $pValue = null; - } - $this->enclosure = $pValue; - return $this; - } - - /** - * Get line ending - * - * @return string - */ - public function getLineEnding() - { - return $this->lineEnding; - } - - /** - * Set line ending - * - * @param string $pValue Line ending, defaults to OS line ending (PHP_EOL) - * @return PHPExcel_Writer_CSV - */ - public function setLineEnding($pValue = PHP_EOL) - { - $this->lineEnding = $pValue; - return $this; - } - - /** - * Get whether BOM should be used - * - * @return boolean - */ - public function getUseBOM() - { - return $this->useBOM; - } - - /** - * Set whether BOM should be used - * - * @param boolean $pValue Use UTF-8 byte-order mark? Defaults to false - * @return PHPExcel_Writer_CSV - */ - public function setUseBOM($pValue = false) - { - $this->useBOM = $pValue; - return $this; - } - - /** - * Get whether a separator line should be included - * - * @return boolean - */ - public function getIncludeSeparatorLine() - { - return $this->includeSeparatorLine; - } - - /** - * Set whether a separator line should be included as the first line of the file - * - * @param boolean $pValue Use separator line? Defaults to false - * @return PHPExcel_Writer_CSV - */ - public function setIncludeSeparatorLine($pValue = false) - { - $this->includeSeparatorLine = $pValue; - return $this; - } - - /** - * Get whether the file should be saved with full Excel Compatibility - * - * @return boolean - */ - public function getExcelCompatibility() - { - return $this->excelCompatibility; - } - - /** - * Set whether the file should be saved with full Excel Compatibility - * - * @param boolean $pValue Set the file to be written as a fully Excel compatible csv file - * Note that this overrides other settings such as useBOM, enclosure and delimiter - * @return PHPExcel_Writer_CSV - */ - public function setExcelCompatibility($pValue = false) - { - $this->excelCompatibility = $pValue; - return $this; - } - - /** - * Get sheet index - * - * @return int - */ - public function getSheetIndex() - { - return $this->sheetIndex; - } - - /** - * Set sheet index - * - * @param int $pValue Sheet index - * @return PHPExcel_Writer_CSV - */ - public function setSheetIndex($pValue = 0) - { - $this->sheetIndex = $pValue; - return $this; - } - - /** - * Write line to CSV file - * - * @param mixed $pFileHandle PHP filehandle - * @param array $pValues Array containing values in a row - * @throws PHPExcel_Writer_Exception - */ - private function writeLine($pFileHandle = null, $pValues = null) - { - if (is_array($pValues)) { - // No leading delimiter - $writeDelimiter = false; - - // Build the line - $line = ''; - - foreach ($pValues as $element) { - // Escape enclosures - $element = str_replace($this->enclosure, $this->enclosure . $this->enclosure, $element); - - // Add delimiter - if ($writeDelimiter) { - $line .= $this->delimiter; - } else { - $writeDelimiter = true; - } - - // Add enclosed string - $line .= $this->enclosure . $element . $this->enclosure; - } - - // Add line ending - $line .= $this->lineEnding; - - // Write to file - fwrite($pFileHandle, $line); - } else { - throw new PHPExcel_Writer_Exception("Invalid data row passed to CSV writer."); - } - } -} diff --git a/application/third_party/PHPExcel/Writer/Excel2007.php b/application/third_party/PHPExcel/Writer/Excel2007.php deleted file mode 100644 index 11d354b4..00000000 --- a/application/third_party/PHPExcel/Writer/Excel2007.php +++ /dev/null @@ -1,533 +0,0 @@ -<?php - -/** - * PHPExcel_Writer_Excel2007 - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_Excel2007 - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Writer_Excel2007 extends PHPExcel_Writer_Abstract implements PHPExcel_Writer_IWriter -{ - /** - * Pre-calculate formulas - * Forces PHPExcel to recalculate all formulae in a workbook when saving, so that the pre-calculated values are - * immediately available to MS Excel or other office spreadsheet viewer when opening the file - * - * Overrides the default TRUE for this specific writer for performance reasons - * - * @var boolean - */ - protected $preCalculateFormulas = false; - - /** - * Office2003 compatibility - * - * @var boolean - */ - private $office2003compatibility = false; - - /** - * Private writer parts - * - * @var PHPExcel_Writer_Excel2007_WriterPart[] - */ - private $writerParts = array(); - - /** - * Private PHPExcel - * - * @var PHPExcel - */ - private $spreadSheet; - - /** - * Private string table - * - * @var string[] - */ - private $stringTable = array(); - - /** - * Private unique PHPExcel_Style_Conditional HashTable - * - * @var PHPExcel_HashTable - */ - private $stylesConditionalHashTable; - - /** - * Private unique PHPExcel_Style HashTable - * - * @var PHPExcel_HashTable - */ - private $styleHashTable; - - /** - * Private unique PHPExcel_Style_Fill HashTable - * - * @var PHPExcel_HashTable - */ - private $fillHashTable; - - /** - * Private unique PHPExcel_Style_Font HashTable - * - * @var PHPExcel_HashTable - */ - private $fontHashTable; - - /** - * Private unique PHPExcel_Style_Borders HashTable - * - * @var PHPExcel_HashTable - */ - private $bordersHashTable ; - - /** - * Private unique PHPExcel_Style_NumberFormat HashTable - * - * @var PHPExcel_HashTable - */ - private $numFmtHashTable; - - /** - * Private unique PHPExcel_Worksheet_BaseDrawing HashTable - * - * @var PHPExcel_HashTable - */ - private $drawingHashTable; - - /** - * Create a new PHPExcel_Writer_Excel2007 - * - * @param PHPExcel $pPHPExcel - */ - public function __construct(PHPExcel $pPHPExcel = null) - { - // Assign PHPExcel - $this->setPHPExcel($pPHPExcel); - - $writerPartsArray = array( 'stringtable' => 'PHPExcel_Writer_Excel2007_StringTable', - 'contenttypes' => 'PHPExcel_Writer_Excel2007_ContentTypes', - 'docprops' => 'PHPExcel_Writer_Excel2007_DocProps', - 'rels' => 'PHPExcel_Writer_Excel2007_Rels', - 'theme' => 'PHPExcel_Writer_Excel2007_Theme', - 'style' => 'PHPExcel_Writer_Excel2007_Style', - 'workbook' => 'PHPExcel_Writer_Excel2007_Workbook', - 'worksheet' => 'PHPExcel_Writer_Excel2007_Worksheet', - 'drawing' => 'PHPExcel_Writer_Excel2007_Drawing', - 'comments' => 'PHPExcel_Writer_Excel2007_Comments', - 'chart' => 'PHPExcel_Writer_Excel2007_Chart', - 'relsvba' => 'PHPExcel_Writer_Excel2007_RelsVBA', - 'relsribbonobjects' => 'PHPExcel_Writer_Excel2007_RelsRibbon' - ); - - // Initialise writer parts - // and Assign their parent IWriters - foreach ($writerPartsArray as $writer => $class) { - $this->writerParts[$writer] = new $class($this); - } - - $hashTablesArray = array( 'stylesConditionalHashTable', 'fillHashTable', 'fontHashTable', - 'bordersHashTable', 'numFmtHashTable', 'drawingHashTable', - 'styleHashTable' - ); - - // Set HashTable variables - foreach ($hashTablesArray as $tableName) { - $this->$tableName = new PHPExcel_HashTable(); - } - } - - /** - * Get writer part - * - * @param string $pPartName Writer part name - * @return PHPExcel_Writer_Excel2007_WriterPart - */ - public function getWriterPart($pPartName = '') - { - if ($pPartName != '' && isset($this->writerParts[strtolower($pPartName)])) { - return $this->writerParts[strtolower($pPartName)]; - } else { - return null; - } - } - - /** - * Save PHPExcel to file - * - * @param string $pFilename - * @throws PHPExcel_Writer_Exception - */ - public function save($pFilename = null) - { - if ($this->spreadSheet !== null) { - // garbage collect - $this->spreadSheet->garbageCollect(); - - // If $pFilename is php://output or php://stdout, make it a temporary file... - $originalFilename = $pFilename; - if (strtolower($pFilename) == 'php://output' || strtolower($pFilename) == 'php://stdout') { - $pFilename = @tempnam(PHPExcel_Shared_File::sys_get_temp_dir(), 'phpxltmp'); - if ($pFilename == '') { - $pFilename = $originalFilename; - } - } - - $saveDebugLog = PHPExcel_Calculation::getInstance($this->spreadSheet)->getDebugLog()->getWriteDebugLog(); - PHPExcel_Calculation::getInstance($this->spreadSheet)->getDebugLog()->setWriteDebugLog(false); - $saveDateReturnType = PHPExcel_Calculation_Functions::getReturnDateType(); - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL); - - // Create string lookup table - $this->stringTable = array(); - for ($i = 0; $i < $this->spreadSheet->getSheetCount(); ++$i) { - $this->stringTable = $this->getWriterPart('StringTable')->createStringTable($this->spreadSheet->getSheet($i), $this->stringTable); - } - - // Create styles dictionaries - $this->styleHashTable->addFromSource($this->getWriterPart('Style')->allStyles($this->spreadSheet)); - $this->stylesConditionalHashTable->addFromSource($this->getWriterPart('Style')->allConditionalStyles($this->spreadSheet)); - $this->fillHashTable->addFromSource($this->getWriterPart('Style')->allFills($this->spreadSheet)); - $this->fontHashTable->addFromSource($this->getWriterPart('Style')->allFonts($this->spreadSheet)); - $this->bordersHashTable->addFromSource($this->getWriterPart('Style')->allBorders($this->spreadSheet)); - $this->numFmtHashTable->addFromSource($this->getWriterPart('Style')->allNumberFormats($this->spreadSheet)); - - // Create drawing dictionary - $this->drawingHashTable->addFromSource($this->getWriterPart('Drawing')->allDrawings($this->spreadSheet)); - - // Create new ZIP file and open it for writing - $zipClass = PHPExcel_Settings::getZipClass(); - $objZip = new $zipClass(); - - // Retrieve OVERWRITE and CREATE constants from the instantiated zip class - // This method of accessing constant values from a dynamic class should work with all appropriate versions of PHP - $ro = new ReflectionObject($objZip); - $zipOverWrite = $ro->getConstant('OVERWRITE'); - $zipCreate = $ro->getConstant('CREATE'); - - if (file_exists($pFilename)) { - unlink($pFilename); - } - // Try opening the ZIP file - if ($objZip->open($pFilename, $zipOverWrite) !== true) { - if ($objZip->open($pFilename, $zipCreate) !== true) { - throw new PHPExcel_Writer_Exception("Could not open " . $pFilename . " for writing."); - } - } - - // Add [Content_Types].xml to ZIP file - $objZip->addFromString('[Content_Types].xml', $this->getWriterPart('ContentTypes')->writeContentTypes($this->spreadSheet, $this->includeCharts)); - - //if hasMacros, add the vbaProject.bin file, Certificate file(if exists) - if ($this->spreadSheet->hasMacros()) { - $macrosCode=$this->spreadSheet->getMacrosCode(); - if (!is_null($macrosCode)) {// we have the code ? - $objZip->addFromString('xl/vbaProject.bin', $macrosCode);//allways in 'xl', allways named vbaProject.bin - if ($this->spreadSheet->hasMacrosCertificate()) {//signed macros ? - // Yes : add the certificate file and the related rels file - $objZip->addFromString('xl/vbaProjectSignature.bin', $this->spreadSheet->getMacrosCertificate()); - $objZip->addFromString('xl/_rels/vbaProject.bin.rels', $this->getWriterPart('RelsVBA')->writeVBARelationships($this->spreadSheet)); - } - } - } - //a custom UI in this workbook ? add it ("base" xml and additional objects (pictures) and rels) - if ($this->spreadSheet->hasRibbon()) { - $tmpRibbonTarget=$this->spreadSheet->getRibbonXMLData('target'); - $objZip->addFromString($tmpRibbonTarget, $this->spreadSheet->getRibbonXMLData('data')); - if ($this->spreadSheet->hasRibbonBinObjects()) { - $tmpRootPath=dirname($tmpRibbonTarget).'/'; - $ribbonBinObjects=$this->spreadSheet->getRibbonBinObjects('data');//the files to write - foreach ($ribbonBinObjects as $aPath => $aContent) { - $objZip->addFromString($tmpRootPath.$aPath, $aContent); - } - //the rels for files - $objZip->addFromString($tmpRootPath.'_rels/'.basename($tmpRibbonTarget).'.rels', $this->getWriterPart('RelsRibbonObjects')->writeRibbonRelationships($this->spreadSheet)); - } - } - - // Add relationships to ZIP file - $objZip->addFromString('_rels/.rels', $this->getWriterPart('Rels')->writeRelationships($this->spreadSheet)); - $objZip->addFromString('xl/_rels/workbook.xml.rels', $this->getWriterPart('Rels')->writeWorkbookRelationships($this->spreadSheet)); - - // Add document properties to ZIP file - $objZip->addFromString('docProps/app.xml', $this->getWriterPart('DocProps')->writeDocPropsApp($this->spreadSheet)); - $objZip->addFromString('docProps/core.xml', $this->getWriterPart('DocProps')->writeDocPropsCore($this->spreadSheet)); - $customPropertiesPart = $this->getWriterPart('DocProps')->writeDocPropsCustom($this->spreadSheet); - if ($customPropertiesPart !== null) { - $objZip->addFromString('docProps/custom.xml', $customPropertiesPart); - } - - // Add theme to ZIP file - $objZip->addFromString('xl/theme/theme1.xml', $this->getWriterPart('Theme')->writeTheme($this->spreadSheet)); - - // Add string table to ZIP file - $objZip->addFromString('xl/sharedStrings.xml', $this->getWriterPart('StringTable')->writeStringTable($this->stringTable)); - - // Add styles to ZIP file - $objZip->addFromString('xl/styles.xml', $this->getWriterPart('Style')->writeStyles($this->spreadSheet)); - - // Add workbook to ZIP file - $objZip->addFromString('xl/workbook.xml', $this->getWriterPart('Workbook')->writeWorkbook($this->spreadSheet, $this->preCalculateFormulas)); - - $chartCount = 0; - // Add worksheets - for ($i = 0; $i < $this->spreadSheet->getSheetCount(); ++$i) { - $objZip->addFromString('xl/worksheets/sheet' . ($i + 1) . '.xml', $this->getWriterPart('Worksheet')->writeWorksheet($this->spreadSheet->getSheet($i), $this->stringTable, $this->includeCharts)); - if ($this->includeCharts) { - $charts = $this->spreadSheet->getSheet($i)->getChartCollection(); - if (count($charts) > 0) { - foreach ($charts as $chart) { - $objZip->addFromString('xl/charts/chart' . ($chartCount + 1) . '.xml', $this->getWriterPart('Chart')->writeChart($chart, $this->preCalculateFormulas)); - $chartCount++; - } - } - } - } - - $chartRef1 = $chartRef2 = 0; - // Add worksheet relationships (drawings, ...) - for ($i = 0; $i < $this->spreadSheet->getSheetCount(); ++$i) { - // Add relationships - $objZip->addFromString('xl/worksheets/_rels/sheet' . ($i + 1) . '.xml.rels', $this->getWriterPart('Rels')->writeWorksheetRelationships($this->spreadSheet->getSheet($i), ($i + 1), $this->includeCharts)); - - $drawings = $this->spreadSheet->getSheet($i)->getDrawingCollection(); - $drawingCount = count($drawings); - if ($this->includeCharts) { - $chartCount = $this->spreadSheet->getSheet($i)->getChartCount(); - } - - // Add drawing and image relationship parts - if (($drawingCount > 0) || ($chartCount > 0)) { - // Drawing relationships - $objZip->addFromString('xl/drawings/_rels/drawing' . ($i + 1) . '.xml.rels', $this->getWriterPart('Rels')->writeDrawingRelationships($this->spreadSheet->getSheet($i), $chartRef1, $this->includeCharts)); - - // Drawings - $objZip->addFromString('xl/drawings/drawing' . ($i + 1) . '.xml', $this->getWriterPart('Drawing')->writeDrawings($this->spreadSheet->getSheet($i), $chartRef2, $this->includeCharts)); - } - - // Add comment relationship parts - if (count($this->spreadSheet->getSheet($i)->getComments()) > 0) { - // VML Comments - $objZip->addFromString('xl/drawings/vmlDrawing' . ($i + 1) . '.vml', $this->getWriterPart('Comments')->writeVMLComments($this->spreadSheet->getSheet($i))); - - // Comments - $objZip->addFromString('xl/comments' . ($i + 1) . '.xml', $this->getWriterPart('Comments')->writeComments($this->spreadSheet->getSheet($i))); - } - - // Add header/footer relationship parts - if (count($this->spreadSheet->getSheet($i)->getHeaderFooter()->getImages()) > 0) { - // VML Drawings - $objZip->addFromString('xl/drawings/vmlDrawingHF' . ($i + 1) . '.vml', $this->getWriterPart('Drawing')->writeVMLHeaderFooterImages($this->spreadSheet->getSheet($i))); - - // VML Drawing relationships - $objZip->addFromString('xl/drawings/_rels/vmlDrawingHF' . ($i + 1) . '.vml.rels', $this->getWriterPart('Rels')->writeHeaderFooterDrawingRelationships($this->spreadSheet->getSheet($i))); - - // Media - foreach ($this->spreadSheet->getSheet($i)->getHeaderFooter()->getImages() as $image) { - $objZip->addFromString('xl/media/' . $image->getIndexedFilename(), file_get_contents($image->getPath())); - } - } - } - - // Add media - for ($i = 0; $i < $this->getDrawingHashTable()->count(); ++$i) { - if ($this->getDrawingHashTable()->getByIndex($i) instanceof PHPExcel_Worksheet_Drawing) { - $imageContents = null; - $imagePath = $this->getDrawingHashTable()->getByIndex($i)->getPath(); - if (strpos($imagePath, 'zip://') !== false) { - $imagePath = substr($imagePath, 6); - $imagePathSplitted = explode('#', $imagePath); - - $imageZip = new ZipArchive(); - $imageZip->open($imagePathSplitted[0]); - $imageContents = $imageZip->getFromName($imagePathSplitted[1]); - $imageZip->close(); - unset($imageZip); - } else { - $imageContents = file_get_contents($imagePath); - } - - $objZip->addFromString('xl/media/' . str_replace(' ', '_', $this->getDrawingHashTable()->getByIndex($i)->getIndexedFilename()), $imageContents); - } elseif ($this->getDrawingHashTable()->getByIndex($i) instanceof PHPExcel_Worksheet_MemoryDrawing) { - ob_start(); - call_user_func( - $this->getDrawingHashTable()->getByIndex($i)->getRenderingFunction(), - $this->getDrawingHashTable()->getByIndex($i)->getImageResource() - ); - $imageContents = ob_get_contents(); - ob_end_clean(); - - $objZip->addFromString('xl/media/' . str_replace(' ', '_', $this->getDrawingHashTable()->getByIndex($i)->getIndexedFilename()), $imageContents); - } - } - - PHPExcel_Calculation_Functions::setReturnDateType($saveDateReturnType); - PHPExcel_Calculation::getInstance($this->spreadSheet)->getDebugLog()->setWriteDebugLog($saveDebugLog); - - // Close file - if ($objZip->close() === false) { - throw new PHPExcel_Writer_Exception("Could not close zip file $pFilename."); - } - - // If a temporary file was used, copy it to the correct file stream - if ($originalFilename != $pFilename) { - if (copy($pFilename, $originalFilename) === false) { - throw new PHPExcel_Writer_Exception("Could not copy temporary zip file $pFilename to $originalFilename."); - } - @unlink($pFilename); - } - } else { - throw new PHPExcel_Writer_Exception("PHPExcel object unassigned."); - } - } - - /** - * Get PHPExcel object - * - * @return PHPExcel - * @throws PHPExcel_Writer_Exception - */ - public function getPHPExcel() - { - if ($this->spreadSheet !== null) { - return $this->spreadSheet; - } else { - throw new PHPExcel_Writer_Exception("No PHPExcel object assigned."); - } - } - - /** - * Set PHPExcel object - * - * @param PHPExcel $pPHPExcel PHPExcel object - * @throws PHPExcel_Writer_Exception - * @return PHPExcel_Writer_Excel2007 - */ - public function setPHPExcel(PHPExcel $pPHPExcel = null) - { - $this->spreadSheet = $pPHPExcel; - return $this; - } - - /** - * Get string table - * - * @return string[] - */ - public function getStringTable() - { - return $this->stringTable; - } - - /** - * Get PHPExcel_Style HashTable - * - * @return PHPExcel_HashTable - */ - public function getStyleHashTable() - { - return $this->styleHashTable; - } - - /** - * Get PHPExcel_Style_Conditional HashTable - * - * @return PHPExcel_HashTable - */ - public function getStylesConditionalHashTable() - { - return $this->stylesConditionalHashTable; - } - - /** - * Get PHPExcel_Style_Fill HashTable - * - * @return PHPExcel_HashTable - */ - public function getFillHashTable() - { - return $this->fillHashTable; - } - - /** - * Get PHPExcel_Style_Font HashTable - * - * @return PHPExcel_HashTable - */ - public function getFontHashTable() - { - return $this->fontHashTable; - } - - /** - * Get PHPExcel_Style_Borders HashTable - * - * @return PHPExcel_HashTable - */ - public function getBordersHashTable() - { - return $this->bordersHashTable; - } - - /** - * Get PHPExcel_Style_NumberFormat HashTable - * - * @return PHPExcel_HashTable - */ - public function getNumFmtHashTable() - { - return $this->numFmtHashTable; - } - - /** - * Get PHPExcel_Worksheet_BaseDrawing HashTable - * - * @return PHPExcel_HashTable - */ - public function getDrawingHashTable() - { - return $this->drawingHashTable; - } - - /** - * Get Office2003 compatibility - * - * @return boolean - */ - public function getOffice2003Compatibility() - { - return $this->office2003compatibility; - } - - /** - * Set Office2003 compatibility - * - * @param boolean $pValue Office2003 compatibility? - * @return PHPExcel_Writer_Excel2007 - */ - public function setOffice2003Compatibility($pValue = false) - { - $this->office2003compatibility = $pValue; - return $this; - } -} diff --git a/application/third_party/PHPExcel/Writer/Excel2007/Chart.php b/application/third_party/PHPExcel/Writer/Excel2007/Chart.php deleted file mode 100644 index 92fa2150..00000000 --- a/application/third_party/PHPExcel/Writer/Excel2007/Chart.php +++ /dev/null @@ -1,1520 +0,0 @@ -<?php - -/** - * PHPExcel_Writer_Excel2007_Chart - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_Excel2007 - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Writer_Excel2007_Chart extends PHPExcel_Writer_Excel2007_WriterPart -{ - protected $calculateCellValues; - - /** - * Write charts to XML format - * - * @param PHPExcel_Chart $pChart - * - * @return string XML Output - * @throws PHPExcel_Writer_Exception - */ - public function writeChart(PHPExcel_Chart $pChart = null, $calculateCellValues = true) - { - $this->calculateCellValues = $calculateCellValues; - - // Create XML writer - $objWriter = null; - if ($this->getParentWriter()->getUseDiskCaching()) { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); - } else { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); - } - // Ensure that data series values are up-to-date before we save - if ($this->calculateCellValues) { - $pChart->refresh(); - } - - // XML header - $objWriter->startDocument('1.0', 'UTF-8', 'yes'); - - // c:chartSpace - $objWriter->startElement('c:chartSpace'); - $objWriter->writeAttribute('xmlns:c', 'http://schemas.openxmlformats.org/drawingml/2006/chart'); - $objWriter->writeAttribute('xmlns:a', 'http://schemas.openxmlformats.org/drawingml/2006/main'); - $objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'); - - $objWriter->startElement('c:date1904'); - $objWriter->writeAttribute('val', 0); - $objWriter->endElement(); - $objWriter->startElement('c:lang'); - $objWriter->writeAttribute('val', "en-GB"); - $objWriter->endElement(); - $objWriter->startElement('c:roundedCorners'); - $objWriter->writeAttribute('val', 0); - $objWriter->endElement(); - - $this->writeAlternateContent($objWriter); - - $objWriter->startElement('c:chart'); - - $this->writeTitle($pChart->getTitle(), $objWriter); - - $objWriter->startElement('c:autoTitleDeleted'); - $objWriter->writeAttribute('val', 0); - $objWriter->endElement(); - - $this->writePlotArea($pChart->getPlotArea(), $pChart->getXAxisLabel(), $pChart->getYAxisLabel(), $objWriter, $pChart->getWorksheet(), $pChart->getChartAxisX(), $pChart->getChartAxisY(), $pChart->getMajorGridlines(), $pChart->getMinorGridlines()); - - $this->writeLegend($pChart->getLegend(), $objWriter); - - $objWriter->startElement('c:plotVisOnly'); - $objWriter->writeAttribute('val', 1); - $objWriter->endElement(); - - $objWriter->startElement('c:dispBlanksAs'); - $objWriter->writeAttribute('val', "gap"); - $objWriter->endElement(); - - $objWriter->startElement('c:showDLblsOverMax'); - $objWriter->writeAttribute('val', 0); - $objWriter->endElement(); - - $objWriter->endElement(); - - $this->writePrintSettings($objWriter); - - $objWriter->endElement(); - - // Return - return $objWriter->getData(); - } - - /** - * Write Chart Title - * - * @param PHPExcel_Chart_Title $title - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * - * @throws PHPExcel_Writer_Exception - */ - private function writeTitle(PHPExcel_Chart_Title $title = null, $objWriter) - { - if (is_null($title)) { - return; - } - - $objWriter->startElement('c:title'); - $objWriter->startElement('c:tx'); - $objWriter->startElement('c:rich'); - - $objWriter->startElement('a:bodyPr'); - $objWriter->endElement(); - - $objWriter->startElement('a:lstStyle'); - $objWriter->endElement(); - - $objWriter->startElement('a:p'); - - $caption = $title->getCaption(); - if ((is_array($caption)) && (count($caption) > 0)) { - $caption = $caption[0]; - } - $this->getParentWriter()->getWriterPart('stringtable')->writeRichTextForCharts($objWriter, $caption, 'a'); - - $objWriter->endElement(); - $objWriter->endElement(); - $objWriter->endElement(); - - $this->writeLayout($title->getLayout(), $objWriter); - - $objWriter->startElement('c:overlay'); - $objWriter->writeAttribute('val', 0); - $objWriter->endElement(); - - $objWriter->endElement(); - } - - /** - * Write Chart Legend - * - * @param PHPExcel_Chart_Legend $legend - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * - * @throws PHPExcel_Writer_Exception - */ - private function writeLegend(PHPExcel_Chart_Legend $legend = null, $objWriter) - { - if (is_null($legend)) { - return; - } - - $objWriter->startElement('c:legend'); - - $objWriter->startElement('c:legendPos'); - $objWriter->writeAttribute('val', $legend->getPosition()); - $objWriter->endElement(); - - $this->writeLayout($legend->getLayout(), $objWriter); - - $objWriter->startElement('c:overlay'); - $objWriter->writeAttribute('val', ($legend->getOverlay()) ? '1' : '0'); - $objWriter->endElement(); - - $objWriter->startElement('c:txPr'); - $objWriter->startElement('a:bodyPr'); - $objWriter->endElement(); - - $objWriter->startElement('a:lstStyle'); - $objWriter->endElement(); - - $objWriter->startElement('a:p'); - $objWriter->startElement('a:pPr'); - $objWriter->writeAttribute('rtl', 0); - - $objWriter->startElement('a:defRPr'); - $objWriter->endElement(); - $objWriter->endElement(); - - $objWriter->startElement('a:endParaRPr'); - $objWriter->writeAttribute('lang', "en-US"); - $objWriter->endElement(); - - $objWriter->endElement(); - $objWriter->endElement(); - - $objWriter->endElement(); - } - - /** - * Write Chart Plot Area - * - * @param PHPExcel_Chart_PlotArea $plotArea - * @param PHPExcel_Chart_Title $xAxisLabel - * @param PHPExcel_Chart_Title $yAxisLabel - * @param PHPExcel_Chart_Axis $xAxis - * @param PHPExcel_Chart_Axis $yAxis - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * - * @throws PHPExcel_Writer_Exception - */ - private function writePlotArea(PHPExcel_Chart_PlotArea $plotArea, PHPExcel_Chart_Title $xAxisLabel = null, PHPExcel_Chart_Title $yAxisLabel = null, $objWriter, PHPExcel_Worksheet $pSheet, PHPExcel_Chart_Axis $xAxis, PHPExcel_Chart_Axis $yAxis, PHPExcel_Chart_GridLines $majorGridlines, PHPExcel_Chart_GridLines $minorGridlines) - { - if (is_null($plotArea)) { - return; - } - - $id1 = $id2 = 0; - $this->_seriesIndex = 0; - $objWriter->startElement('c:plotArea'); - - $layout = $plotArea->getLayout(); - - $this->writeLayout($layout, $objWriter); - - $chartTypes = self::getChartType($plotArea); - $catIsMultiLevelSeries = $valIsMultiLevelSeries = false; - $plotGroupingType = ''; - foreach ($chartTypes as $chartType) { - $objWriter->startElement('c:' . $chartType); - - $groupCount = $plotArea->getPlotGroupCount(); - for ($i = 0; $i < $groupCount; ++$i) { - $plotGroup = $plotArea->getPlotGroupByIndex($i); - $groupType = $plotGroup->getPlotType(); - if ($groupType == $chartType) { - $plotStyle = $plotGroup->getPlotStyle(); - if ($groupType === PHPExcel_Chart_DataSeries::TYPE_RADARCHART) { - $objWriter->startElement('c:radarStyle'); - $objWriter->writeAttribute('val', $plotStyle); - $objWriter->endElement(); - } elseif ($groupType === PHPExcel_Chart_DataSeries::TYPE_SCATTERCHART) { - $objWriter->startElement('c:scatterStyle'); - $objWriter->writeAttribute('val', $plotStyle); - $objWriter->endElement(); - } - - $this->writePlotGroup($plotGroup, $chartType, $objWriter, $catIsMultiLevelSeries, $valIsMultiLevelSeries, $plotGroupingType, $pSheet); - } - } - - $this->writeDataLabels($objWriter, $layout); - - if ($chartType === PHPExcel_Chart_DataSeries::TYPE_LINECHART) { - // Line only, Line3D can't be smoothed - - $objWriter->startElement('c:smooth'); - $objWriter->writeAttribute('val', (integer) $plotGroup->getSmoothLine()); - $objWriter->endElement(); - } elseif (($chartType === PHPExcel_Chart_DataSeries::TYPE_BARCHART) ||($chartType === PHPExcel_Chart_DataSeries::TYPE_BARCHART_3D)) { - $objWriter->startElement('c:gapWidth'); - $objWriter->writeAttribute('val', 150); - $objWriter->endElement(); - - if ($plotGroupingType == 'percentStacked' || $plotGroupingType == 'stacked') { - $objWriter->startElement('c:overlap'); - $objWriter->writeAttribute('val', 100); - $objWriter->endElement(); - } - } elseif ($chartType === PHPExcel_Chart_DataSeries::TYPE_BUBBLECHART) { - $objWriter->startElement('c:bubbleScale'); - $objWriter->writeAttribute('val', 25); - $objWriter->endElement(); - - $objWriter->startElement('c:showNegBubbles'); - $objWriter->writeAttribute('val', 0); - $objWriter->endElement(); - } elseif ($chartType === PHPExcel_Chart_DataSeries::TYPE_STOCKCHART) { - $objWriter->startElement('c:hiLowLines'); - $objWriter->endElement(); - - $objWriter->startElement('c:upDownBars'); - - $objWriter->startElement('c:gapWidth'); - $objWriter->writeAttribute('val', 300); - $objWriter->endElement(); - - $objWriter->startElement('c:upBars'); - $objWriter->endElement(); - - $objWriter->startElement('c:downBars'); - $objWriter->endElement(); - - $objWriter->endElement(); - } - - // Generate 2 unique numbers to use for axId values - // $id1 = $id2 = rand(10000000,99999999); - // do { - // $id2 = rand(10000000,99999999); - // } while ($id1 == $id2); - $id1 = '75091328'; - $id2 = '75089408'; - - if (($chartType !== PHPExcel_Chart_DataSeries::TYPE_PIECHART) && ($chartType !== PHPExcel_Chart_DataSeries::TYPE_PIECHART_3D) && ($chartType !== PHPExcel_Chart_DataSeries::TYPE_DONUTCHART)) { - $objWriter->startElement('c:axId'); - $objWriter->writeAttribute('val', $id1); - $objWriter->endElement(); - $objWriter->startElement('c:axId'); - $objWriter->writeAttribute('val', $id2); - $objWriter->endElement(); - } else { - $objWriter->startElement('c:firstSliceAng'); - $objWriter->writeAttribute('val', 0); - $objWriter->endElement(); - - if ($chartType === PHPExcel_Chart_DataSeries::TYPE_DONUTCHART) { - $objWriter->startElement('c:holeSize'); - $objWriter->writeAttribute('val', 50); - $objWriter->endElement(); - } - } - - $objWriter->endElement(); - } - - if (($chartType !== PHPExcel_Chart_DataSeries::TYPE_PIECHART) && ($chartType !== PHPExcel_Chart_DataSeries::TYPE_PIECHART_3D) && ($chartType !== PHPExcel_Chart_DataSeries::TYPE_DONUTCHART)) { - if ($chartType === PHPExcel_Chart_DataSeries::TYPE_BUBBLECHART) { - $this->writeValueAxis($objWriter, $plotArea, $xAxisLabel, $chartType, $id1, $id2, $catIsMultiLevelSeries, $xAxis, $yAxis, $majorGridlines, $minorGridlines); - } else { - $this->writeCategoryAxis($objWriter, $plotArea, $xAxisLabel, $chartType, $id1, $id2, $catIsMultiLevelSeries, $xAxis, $yAxis); - } - - $this->writeValueAxis($objWriter, $plotArea, $yAxisLabel, $chartType, $id1, $id2, $valIsMultiLevelSeries, $xAxis, $yAxis, $majorGridlines, $minorGridlines); - } - - $objWriter->endElement(); - } - - /** - * Write Data Labels - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Chart_Layout $chartLayout Chart layout - * - * @throws PHPExcel_Writer_Exception - */ - private function writeDataLabels($objWriter, $chartLayout) - { - $objWriter->startElement('c:dLbls'); - - $objWriter->startElement('c:showLegendKey'); - $showLegendKey = (empty($chartLayout)) ? 0 : $chartLayout->getShowLegendKey(); - $objWriter->writeAttribute('val', ((empty($showLegendKey)) ? 0 : 1)); - $objWriter->endElement(); - - $objWriter->startElement('c:showVal'); - $showVal = (empty($chartLayout)) ? 0 : $chartLayout->getShowVal(); - $objWriter->writeAttribute('val', ((empty($showVal)) ? 0 : 1)); - $objWriter->endElement(); - - $objWriter->startElement('c:showCatName'); - $showCatName = (empty($chartLayout)) ? 0 : $chartLayout->getShowCatName(); - $objWriter->writeAttribute('val', ((empty($showCatName)) ? 0 : 1)); - $objWriter->endElement(); - - $objWriter->startElement('c:showSerName'); - $showSerName = (empty($chartLayout)) ? 0 : $chartLayout->getShowSerName(); - $objWriter->writeAttribute('val', ((empty($showSerName)) ? 0 : 1)); - $objWriter->endElement(); - - $objWriter->startElement('c:showPercent'); - $showPercent = (empty($chartLayout)) ? 0 : $chartLayout->getShowPercent(); - $objWriter->writeAttribute('val', ((empty($showPercent)) ? 0 : 1)); - $objWriter->endElement(); - - $objWriter->startElement('c:showBubbleSize'); - $showBubbleSize = (empty($chartLayout)) ? 0 : $chartLayout->getShowBubbleSize(); - $objWriter->writeAttribute('val', ((empty($showBubbleSize)) ? 0 : 1)); - $objWriter->endElement(); - - $objWriter->startElement('c:showLeaderLines'); - $showLeaderLines = (empty($chartLayout)) ? 1 : $chartLayout->getShowLeaderLines(); - $objWriter->writeAttribute('val', ((empty($showLeaderLines)) ? 0 : 1)); - $objWriter->endElement(); - - $objWriter->endElement(); - } - - /** - * Write Category Axis - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Chart_PlotArea $plotArea - * @param PHPExcel_Chart_Title $xAxisLabel - * @param string $groupType Chart type - * @param string $id1 - * @param string $id2 - * @param boolean $isMultiLevelSeries - * - * @throws PHPExcel_Writer_Exception - */ - private function writeCategoryAxis($objWriter, PHPExcel_Chart_PlotArea $plotArea, $xAxisLabel, $groupType, $id1, $id2, $isMultiLevelSeries, $xAxis, $yAxis) - { - $objWriter->startElement('c:catAx'); - - if ($id1 > 0) { - $objWriter->startElement('c:axId'); - $objWriter->writeAttribute('val', $id1); - $objWriter->endElement(); - } - - $objWriter->startElement('c:scaling'); - $objWriter->startElement('c:orientation'); - $objWriter->writeAttribute('val', $yAxis->getAxisOptionsProperty('orientation')); - $objWriter->endElement(); - $objWriter->endElement(); - - $objWriter->startElement('c:delete'); - $objWriter->writeAttribute('val', 0); - $objWriter->endElement(); - - $objWriter->startElement('c:axPos'); - $objWriter->writeAttribute('val', "b"); - $objWriter->endElement(); - - if (!is_null($xAxisLabel)) { - $objWriter->startElement('c:title'); - $objWriter->startElement('c:tx'); - $objWriter->startElement('c:rich'); - - $objWriter->startElement('a:bodyPr'); - $objWriter->endElement(); - - $objWriter->startElement('a:lstStyle'); - $objWriter->endElement(); - - $objWriter->startElement('a:p'); - $objWriter->startElement('a:r'); - - $caption = $xAxisLabel->getCaption(); - if (is_array($caption)) { - $caption = $caption[0]; - } - $objWriter->startElement('a:t'); - // $objWriter->writeAttribute('xml:space', 'preserve'); - $objWriter->writeRawData(PHPExcel_Shared_String::ControlCharacterPHP2OOXML($caption)); - $objWriter->endElement(); - - $objWriter->endElement(); - $objWriter->endElement(); - $objWriter->endElement(); - $objWriter->endElement(); - - $layout = $xAxisLabel->getLayout(); - $this->writeLayout($layout, $objWriter); - - $objWriter->startElement('c:overlay'); - $objWriter->writeAttribute('val', 0); - $objWriter->endElement(); - - $objWriter->endElement(); - } - - $objWriter->startElement('c:numFmt'); - $objWriter->writeAttribute('formatCode', $yAxis->getAxisNumberFormat()); - $objWriter->writeAttribute('sourceLinked', $yAxis->getAxisNumberSourceLinked()); - $objWriter->endElement(); - - $objWriter->startElement('c:majorTickMark'); - $objWriter->writeAttribute('val', $yAxis->getAxisOptionsProperty('major_tick_mark')); - $objWriter->endElement(); - - $objWriter->startElement('c:minorTickMark'); - $objWriter->writeAttribute('val', $yAxis->getAxisOptionsProperty('minor_tick_mark')); - $objWriter->endElement(); - - $objWriter->startElement('c:tickLblPos'); - $objWriter->writeAttribute('val', $yAxis->getAxisOptionsProperty('axis_labels')); - $objWriter->endElement(); - - if ($id2 > 0) { - $objWriter->startElement('c:crossAx'); - $objWriter->writeAttribute('val', $id2); - $objWriter->endElement(); - - $objWriter->startElement('c:crosses'); - $objWriter->writeAttribute('val', $yAxis->getAxisOptionsProperty('horizontal_crosses')); - $objWriter->endElement(); - } - - $objWriter->startElement('c:auto'); - $objWriter->writeAttribute('val', 1); - $objWriter->endElement(); - - $objWriter->startElement('c:lblAlgn'); - $objWriter->writeAttribute('val', "ctr"); - $objWriter->endElement(); - - $objWriter->startElement('c:lblOffset'); - $objWriter->writeAttribute('val', 100); - $objWriter->endElement(); - - if ($isMultiLevelSeries) { - $objWriter->startElement('c:noMultiLvlLbl'); - $objWriter->writeAttribute('val', 0); - $objWriter->endElement(); - } - $objWriter->endElement(); - } - - /** - * Write Value Axis - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Chart_PlotArea $plotArea - * @param PHPExcel_Chart_Title $yAxisLabel - * @param string $groupType Chart type - * @param string $id1 - * @param string $id2 - * @param boolean $isMultiLevelSeries - * - * @throws PHPExcel_Writer_Exception - */ - private function writeValueAxis($objWriter, PHPExcel_Chart_PlotArea $plotArea, $yAxisLabel, $groupType, $id1, $id2, $isMultiLevelSeries, $xAxis, $yAxis, $majorGridlines, $minorGridlines) - { - $objWriter->startElement('c:valAx'); - - if ($id2 > 0) { - $objWriter->startElement('c:axId'); - $objWriter->writeAttribute('val', $id2); - $objWriter->endElement(); - } - - $objWriter->startElement('c:scaling'); - - if (!is_null($xAxis->getAxisOptionsProperty('maximum'))) { - $objWriter->startElement('c:max'); - $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('maximum')); - $objWriter->endElement(); - } - - if (!is_null($xAxis->getAxisOptionsProperty('minimum'))) { - $objWriter->startElement('c:min'); - $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('minimum')); - $objWriter->endElement(); - } - - $objWriter->startElement('c:orientation'); - $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('orientation')); - - - $objWriter->endElement(); - $objWriter->endElement(); - - $objWriter->startElement('c:delete'); - $objWriter->writeAttribute('val', 0); - $objWriter->endElement(); - - $objWriter->startElement('c:axPos'); - $objWriter->writeAttribute('val', "l"); - $objWriter->endElement(); - - $objWriter->startElement('c:majorGridlines'); - $objWriter->startElement('c:spPr'); - - if (!is_null($majorGridlines->getLineColorProperty('value'))) { - $objWriter->startElement('a:ln'); - $objWriter->writeAttribute('w', $majorGridlines->getLineStyleProperty('width')); - $objWriter->startElement('a:solidFill'); - $objWriter->startElement("a:{$majorGridlines->getLineColorProperty('type')}"); - $objWriter->writeAttribute('val', $majorGridlines->getLineColorProperty('value')); - $objWriter->startElement('a:alpha'); - $objWriter->writeAttribute('val', $majorGridlines->getLineColorProperty('alpha')); - $objWriter->endElement(); //end alpha - $objWriter->endElement(); //end srgbClr - $objWriter->endElement(); //end solidFill - - $objWriter->startElement('a:prstDash'); - $objWriter->writeAttribute('val', $majorGridlines->getLineStyleProperty('dash')); - $objWriter->endElement(); - - if ($majorGridlines->getLineStyleProperty('join') == 'miter') { - $objWriter->startElement('a:miter'); - $objWriter->writeAttribute('lim', '800000'); - $objWriter->endElement(); - } else { - $objWriter->startElement('a:bevel'); - $objWriter->endElement(); - } - - if (!is_null($majorGridlines->getLineStyleProperty(array('arrow', 'head', 'type')))) { - $objWriter->startElement('a:headEnd'); - $objWriter->writeAttribute('type', $majorGridlines->getLineStyleProperty(array('arrow', 'head', 'type'))); - $objWriter->writeAttribute('w', $majorGridlines->getLineStyleArrowParameters('head', 'w')); - $objWriter->writeAttribute('len', $majorGridlines->getLineStyleArrowParameters('head', 'len')); - $objWriter->endElement(); - } - - if (!is_null($majorGridlines->getLineStyleProperty(array('arrow', 'end', 'type')))) { - $objWriter->startElement('a:tailEnd'); - $objWriter->writeAttribute('type', $majorGridlines->getLineStyleProperty(array('arrow', 'end', 'type'))); - $objWriter->writeAttribute('w', $majorGridlines->getLineStyleArrowParameters('end', 'w')); - $objWriter->writeAttribute('len', $majorGridlines->getLineStyleArrowParameters('end', 'len')); - $objWriter->endElement(); - } - $objWriter->endElement(); //end ln - } - $objWriter->startElement('a:effectLst'); - - if (!is_null($majorGridlines->getGlowSize())) { - $objWriter->startElement('a:glow'); - $objWriter->writeAttribute('rad', $majorGridlines->getGlowSize()); - $objWriter->startElement("a:{$majorGridlines->getGlowColor('type')}"); - $objWriter->writeAttribute('val', $majorGridlines->getGlowColor('value')); - $objWriter->startElement('a:alpha'); - $objWriter->writeAttribute('val', $majorGridlines->getGlowColor('alpha')); - $objWriter->endElement(); //end alpha - $objWriter->endElement(); //end schemeClr - $objWriter->endElement(); //end glow - } - - if (!is_null($majorGridlines->getShadowProperty('presets'))) { - $objWriter->startElement("a:{$majorGridlines->getShadowProperty('effect')}"); - if (!is_null($majorGridlines->getShadowProperty('blur'))) { - $objWriter->writeAttribute('blurRad', $majorGridlines->getShadowProperty('blur')); - } - if (!is_null($majorGridlines->getShadowProperty('distance'))) { - $objWriter->writeAttribute('dist', $majorGridlines->getShadowProperty('distance')); - } - if (!is_null($majorGridlines->getShadowProperty('direction'))) { - $objWriter->writeAttribute('dir', $majorGridlines->getShadowProperty('direction')); - } - if (!is_null($majorGridlines->getShadowProperty('algn'))) { - $objWriter->writeAttribute('algn', $majorGridlines->getShadowProperty('algn')); - } - if (!is_null($majorGridlines->getShadowProperty(array('size', 'sx')))) { - $objWriter->writeAttribute('sx', $majorGridlines->getShadowProperty(array('size', 'sx'))); - } - if (!is_null($majorGridlines->getShadowProperty(array('size', 'sy')))) { - $objWriter->writeAttribute('sy', $majorGridlines->getShadowProperty(array('size', 'sy'))); - } - if (!is_null($majorGridlines->getShadowProperty(array('size', 'kx')))) { - $objWriter->writeAttribute('kx', $majorGridlines->getShadowProperty(array('size', 'kx'))); - } - if (!is_null($majorGridlines->getShadowProperty('rotWithShape'))) { - $objWriter->writeAttribute('rotWithShape', $majorGridlines->getShadowProperty('rotWithShape')); - } - $objWriter->startElement("a:{$majorGridlines->getShadowProperty(array('color', 'type'))}"); - $objWriter->writeAttribute('val', $majorGridlines->getShadowProperty(array('color', 'value'))); - - $objWriter->startElement('a:alpha'); - $objWriter->writeAttribute('val', $majorGridlines->getShadowProperty(array('color', 'alpha'))); - $objWriter->endElement(); //end alpha - - $objWriter->endElement(); //end color:type - $objWriter->endElement(); //end shadow - } - - if (!is_null($majorGridlines->getSoftEdgesSize())) { - $objWriter->startElement('a:softEdge'); - $objWriter->writeAttribute('rad', $majorGridlines->getSoftEdgesSize()); - $objWriter->endElement(); //end softEdge - } - - $objWriter->endElement(); //end effectLst - $objWriter->endElement(); //end spPr - $objWriter->endElement(); //end majorGridLines - - if ($minorGridlines->getObjectState()) { - $objWriter->startElement('c:minorGridlines'); - $objWriter->startElement('c:spPr'); - - if (!is_null($minorGridlines->getLineColorProperty('value'))) { - $objWriter->startElement('a:ln'); - $objWriter->writeAttribute('w', $minorGridlines->getLineStyleProperty('width')); - $objWriter->startElement('a:solidFill'); - $objWriter->startElement("a:{$minorGridlines->getLineColorProperty('type')}"); - $objWriter->writeAttribute('val', $minorGridlines->getLineColorProperty('value')); - $objWriter->startElement('a:alpha'); - $objWriter->writeAttribute('val', $minorGridlines->getLineColorProperty('alpha')); - $objWriter->endElement(); //end alpha - $objWriter->endElement(); //end srgbClr - $objWriter->endElement(); //end solidFill - - $objWriter->startElement('a:prstDash'); - $objWriter->writeAttribute('val', $minorGridlines->getLineStyleProperty('dash')); - $objWriter->endElement(); - - if ($minorGridlines->getLineStyleProperty('join') == 'miter') { - $objWriter->startElement('a:miter'); - $objWriter->writeAttribute('lim', '800000'); - $objWriter->endElement(); - } else { - $objWriter->startElement('a:bevel'); - $objWriter->endElement(); - } - - if (!is_null($minorGridlines->getLineStyleProperty(array('arrow', 'head', 'type')))) { - $objWriter->startElement('a:headEnd'); - $objWriter->writeAttribute('type', $minorGridlines->getLineStyleProperty(array('arrow', 'head', 'type'))); - $objWriter->writeAttribute('w', $minorGridlines->getLineStyleArrowParameters('head', 'w')); - $objWriter->writeAttribute('len', $minorGridlines->getLineStyleArrowParameters('head', 'len')); - $objWriter->endElement(); - } - - if (!is_null($minorGridlines->getLineStyleProperty(array('arrow', 'end', 'type')))) { - $objWriter->startElement('a:tailEnd'); - $objWriter->writeAttribute('type', $minorGridlines->getLineStyleProperty(array('arrow', 'end', 'type'))); - $objWriter->writeAttribute('w', $minorGridlines->getLineStyleArrowParameters('end', 'w')); - $objWriter->writeAttribute('len', $minorGridlines->getLineStyleArrowParameters('end', 'len')); - $objWriter->endElement(); - } - $objWriter->endElement(); //end ln - } - - $objWriter->startElement('a:effectLst'); - - if (!is_null($minorGridlines->getGlowSize())) { - $objWriter->startElement('a:glow'); - $objWriter->writeAttribute('rad', $minorGridlines->getGlowSize()); - $objWriter->startElement("a:{$minorGridlines->getGlowColor('type')}"); - $objWriter->writeAttribute('val', $minorGridlines->getGlowColor('value')); - $objWriter->startElement('a:alpha'); - $objWriter->writeAttribute('val', $minorGridlines->getGlowColor('alpha')); - $objWriter->endElement(); //end alpha - $objWriter->endElement(); //end schemeClr - $objWriter->endElement(); //end glow - } - - if (!is_null($minorGridlines->getShadowProperty('presets'))) { - $objWriter->startElement("a:{$minorGridlines->getShadowProperty('effect')}"); - if (!is_null($minorGridlines->getShadowProperty('blur'))) { - $objWriter->writeAttribute('blurRad', $minorGridlines->getShadowProperty('blur')); - } - if (!is_null($minorGridlines->getShadowProperty('distance'))) { - $objWriter->writeAttribute('dist', $minorGridlines->getShadowProperty('distance')); - } - if (!is_null($minorGridlines->getShadowProperty('direction'))) { - $objWriter->writeAttribute('dir', $minorGridlines->getShadowProperty('direction')); - } - if (!is_null($minorGridlines->getShadowProperty('algn'))) { - $objWriter->writeAttribute('algn', $minorGridlines->getShadowProperty('algn')); - } - if (!is_null($minorGridlines->getShadowProperty(array('size', 'sx')))) { - $objWriter->writeAttribute('sx', $minorGridlines->getShadowProperty(array('size', 'sx'))); - } - if (!is_null($minorGridlines->getShadowProperty(array('size', 'sy')))) { - $objWriter->writeAttribute('sy', $minorGridlines->getShadowProperty(array('size', 'sy'))); - } - if (!is_null($minorGridlines->getShadowProperty(array('size', 'kx')))) { - $objWriter->writeAttribute('kx', $minorGridlines->getShadowProperty(array('size', 'kx'))); - } - if (!is_null($minorGridlines->getShadowProperty('rotWithShape'))) { - $objWriter->writeAttribute('rotWithShape', $minorGridlines->getShadowProperty('rotWithShape')); - } - $objWriter->startElement("a:{$minorGridlines->getShadowProperty(array('color', 'type'))}"); - $objWriter->writeAttribute('val', $minorGridlines->getShadowProperty(array('color', 'value'))); - $objWriter->startElement('a:alpha'); - $objWriter->writeAttribute('val', $minorGridlines->getShadowProperty(array('color', 'alpha'))); - $objWriter->endElement(); //end alpha - $objWriter->endElement(); //end color:type - $objWriter->endElement(); //end shadow - } - - if (!is_null($minorGridlines->getSoftEdgesSize())) { - $objWriter->startElement('a:softEdge'); - $objWriter->writeAttribute('rad', $minorGridlines->getSoftEdgesSize()); - $objWriter->endElement(); //end softEdge - } - - $objWriter->endElement(); //end effectLst - $objWriter->endElement(); //end spPr - $objWriter->endElement(); //end minorGridLines - } - - if (!is_null($yAxisLabel)) { - $objWriter->startElement('c:title'); - $objWriter->startElement('c:tx'); - $objWriter->startElement('c:rich'); - - $objWriter->startElement('a:bodyPr'); - $objWriter->endElement(); - - $objWriter->startElement('a:lstStyle'); - $objWriter->endElement(); - - $objWriter->startElement('a:p'); - $objWriter->startElement('a:r'); - - $caption = $yAxisLabel->getCaption(); - if (is_array($caption)) { - $caption = $caption[0]; - } - - $objWriter->startElement('a:t'); - // $objWriter->writeAttribute('xml:space', 'preserve'); - $objWriter->writeRawData(PHPExcel_Shared_String::ControlCharacterPHP2OOXML($caption)); - $objWriter->endElement(); - - $objWriter->endElement(); - $objWriter->endElement(); - $objWriter->endElement(); - $objWriter->endElement(); - - if ($groupType !== PHPExcel_Chart_DataSeries::TYPE_BUBBLECHART) { - $layout = $yAxisLabel->getLayout(); - $this->writeLayout($layout, $objWriter); - } - - $objWriter->startElement('c:overlay'); - $objWriter->writeAttribute('val', 0); - $objWriter->endElement(); - - $objWriter->endElement(); - } - - $objWriter->startElement('c:numFmt'); - $objWriter->writeAttribute('formatCode', $xAxis->getAxisNumberFormat()); - $objWriter->writeAttribute('sourceLinked', $xAxis->getAxisNumberSourceLinked()); - $objWriter->endElement(); - - $objWriter->startElement('c:majorTickMark'); - $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('major_tick_mark')); - $objWriter->endElement(); - - $objWriter->startElement('c:minorTickMark'); - $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('minor_tick_mark')); - $objWriter->endElement(); - - $objWriter->startElement('c:tickLblPos'); - $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('axis_labels')); - $objWriter->endElement(); - - $objWriter->startElement('c:spPr'); - - if (!is_null($xAxis->getFillProperty('value'))) { - $objWriter->startElement('a:solidFill'); - $objWriter->startElement("a:" . $xAxis->getFillProperty('type')); - $objWriter->writeAttribute('val', $xAxis->getFillProperty('value')); - $objWriter->startElement('a:alpha'); - $objWriter->writeAttribute('val', $xAxis->getFillProperty('alpha')); - $objWriter->endElement(); - $objWriter->endElement(); - $objWriter->endElement(); - } - - $objWriter->startElement('a:ln'); - - $objWriter->writeAttribute('w', $xAxis->getLineStyleProperty('width')); - $objWriter->writeAttribute('cap', $xAxis->getLineStyleProperty('cap')); - $objWriter->writeAttribute('cmpd', $xAxis->getLineStyleProperty('compound')); - - if (!is_null($xAxis->getLineProperty('value'))) { - $objWriter->startElement('a:solidFill'); - $objWriter->startElement("a:" . $xAxis->getLineProperty('type')); - $objWriter->writeAttribute('val', $xAxis->getLineProperty('value')); - $objWriter->startElement('a:alpha'); - $objWriter->writeAttribute('val', $xAxis->getLineProperty('alpha')); - $objWriter->endElement(); - $objWriter->endElement(); - $objWriter->endElement(); - } - - $objWriter->startElement('a:prstDash'); - $objWriter->writeAttribute('val', $xAxis->getLineStyleProperty('dash')); - $objWriter->endElement(); - - if ($xAxis->getLineStyleProperty('join') == 'miter') { - $objWriter->startElement('a:miter'); - $objWriter->writeAttribute('lim', '800000'); - $objWriter->endElement(); - } else { - $objWriter->startElement('a:bevel'); - $objWriter->endElement(); - } - - if (!is_null($xAxis->getLineStyleProperty(array('arrow', 'head', 'type')))) { - $objWriter->startElement('a:headEnd'); - $objWriter->writeAttribute('type', $xAxis->getLineStyleProperty(array('arrow', 'head', 'type'))); - $objWriter->writeAttribute('w', $xAxis->getLineStyleArrowWidth('head')); - $objWriter->writeAttribute('len', $xAxis->getLineStyleArrowLength('head')); - $objWriter->endElement(); - } - - if (!is_null($xAxis->getLineStyleProperty(array('arrow', 'end', 'type')))) { - $objWriter->startElement('a:tailEnd'); - $objWriter->writeAttribute('type', $xAxis->getLineStyleProperty(array('arrow', 'end', 'type'))); - $objWriter->writeAttribute('w', $xAxis->getLineStyleArrowWidth('end')); - $objWriter->writeAttribute('len', $xAxis->getLineStyleArrowLength('end')); - $objWriter->endElement(); - } - - $objWriter->endElement(); - - $objWriter->startElement('a:effectLst'); - - if (!is_null($xAxis->getGlowProperty('size'))) { - $objWriter->startElement('a:glow'); - $objWriter->writeAttribute('rad', $xAxis->getGlowProperty('size')); - $objWriter->startElement("a:{$xAxis->getGlowProperty(array('color','type'))}"); - $objWriter->writeAttribute('val', $xAxis->getGlowProperty(array('color','value'))); - $objWriter->startElement('a:alpha'); - $objWriter->writeAttribute('val', $xAxis->getGlowProperty(array('color','alpha'))); - $objWriter->endElement(); - $objWriter->endElement(); - $objWriter->endElement(); - } - - if (!is_null($xAxis->getShadowProperty('presets'))) { - $objWriter->startElement("a:{$xAxis->getShadowProperty('effect')}"); - - if (!is_null($xAxis->getShadowProperty('blur'))) { - $objWriter->writeAttribute('blurRad', $xAxis->getShadowProperty('blur')); - } - if (!is_null($xAxis->getShadowProperty('distance'))) { - $objWriter->writeAttribute('dist', $xAxis->getShadowProperty('distance')); - } - if (!is_null($xAxis->getShadowProperty('direction'))) { - $objWriter->writeAttribute('dir', $xAxis->getShadowProperty('direction')); - } - if (!is_null($xAxis->getShadowProperty('algn'))) { - $objWriter->writeAttribute('algn', $xAxis->getShadowProperty('algn')); - } - if (!is_null($xAxis->getShadowProperty(array('size','sx')))) { - $objWriter->writeAttribute('sx', $xAxis->getShadowProperty(array('size','sx'))); - } - if (!is_null($xAxis->getShadowProperty(array('size','sy')))) { - $objWriter->writeAttribute('sy', $xAxis->getShadowProperty(array('size','sy'))); - } - if (!is_null($xAxis->getShadowProperty(array('size','kx')))) { - $objWriter->writeAttribute('kx', $xAxis->getShadowProperty(array('size','kx'))); - } - if (!is_null($xAxis->getShadowProperty('rotWithShape'))) { - $objWriter->writeAttribute('rotWithShape', $xAxis->getShadowProperty('rotWithShape')); - } - - $objWriter->startElement("a:{$xAxis->getShadowProperty(array('color','type'))}"); - $objWriter->writeAttribute('val', $xAxis->getShadowProperty(array('color','value'))); - $objWriter->startElement('a:alpha'); - $objWriter->writeAttribute('val', $xAxis->getShadowProperty(array('color','alpha'))); - $objWriter->endElement(); - $objWriter->endElement(); - - $objWriter->endElement(); - } - - if (!is_null($xAxis->getSoftEdgesSize())) { - $objWriter->startElement('a:softEdge'); - $objWriter->writeAttribute('rad', $xAxis->getSoftEdgesSize()); - $objWriter->endElement(); - } - - $objWriter->endElement(); //effectList - $objWriter->endElement(); //end spPr - - if ($id1 > 0) { - $objWriter->startElement('c:crossAx'); - $objWriter->writeAttribute('val', $id2); - $objWriter->endElement(); - - if (!is_null($xAxis->getAxisOptionsProperty('horizontal_crosses_value'))) { - $objWriter->startElement('c:crossesAt'); - $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('horizontal_crosses_value')); - $objWriter->endElement(); - } else { - $objWriter->startElement('c:crosses'); - $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('horizontal_crosses')); - $objWriter->endElement(); - } - - $objWriter->startElement('c:crossBetween'); - $objWriter->writeAttribute('val', "midCat"); - $objWriter->endElement(); - - if (!is_null($xAxis->getAxisOptionsProperty('major_unit'))) { - $objWriter->startElement('c:majorUnit'); - $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('major_unit')); - $objWriter->endElement(); - } - - if (!is_null($xAxis->getAxisOptionsProperty('minor_unit'))) { - $objWriter->startElement('c:minorUnit'); - $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('minor_unit')); - $objWriter->endElement(); - } - } - - if ($isMultiLevelSeries) { - if ($groupType !== PHPExcel_Chart_DataSeries::TYPE_BUBBLECHART) { - $objWriter->startElement('c:noMultiLvlLbl'); - $objWriter->writeAttribute('val', 0); - $objWriter->endElement(); - } - } - - $objWriter->endElement(); - } - - /** - * Get the data series type(s) for a chart plot series - * - * @param PHPExcel_Chart_PlotArea $plotArea - * - * @return string|array - * @throws PHPExcel_Writer_Exception - */ - private static function getChartType($plotArea) - { - $groupCount = $plotArea->getPlotGroupCount(); - - if ($groupCount == 1) { - $chartType = array($plotArea->getPlotGroupByIndex(0)->getPlotType()); - } else { - $chartTypes = array(); - for ($i = 0; $i < $groupCount; ++$i) { - $chartTypes[] = $plotArea->getPlotGroupByIndex($i)->getPlotType(); - } - $chartType = array_unique($chartTypes); - if (count($chartTypes) == 0) { - throw new PHPExcel_Writer_Exception('Chart is not yet implemented'); - } - } - - return $chartType; - } - - /** - * Write Plot Group (series of related plots) - * - * @param PHPExcel_Chart_DataSeries $plotGroup - * @param string $groupType Type of plot for dataseries - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param boolean &$catIsMultiLevelSeries Is category a multi-series category - * @param boolean &$valIsMultiLevelSeries Is value set a multi-series set - * @param string &$plotGroupingType Type of grouping for multi-series values - * @param PHPExcel_Worksheet $pSheet - * - * @throws PHPExcel_Writer_Exception - */ - private function writePlotGroup($plotGroup, $groupType, $objWriter, &$catIsMultiLevelSeries, &$valIsMultiLevelSeries, &$plotGroupingType, PHPExcel_Worksheet $pSheet) - { - if (is_null($plotGroup)) { - return; - } - - if (($groupType == PHPExcel_Chart_DataSeries::TYPE_BARCHART) || ($groupType == PHPExcel_Chart_DataSeries::TYPE_BARCHART_3D)) { - $objWriter->startElement('c:barDir'); - $objWriter->writeAttribute('val', $plotGroup->getPlotDirection()); - $objWriter->endElement(); - } - - if (!is_null($plotGroup->getPlotGrouping())) { - $plotGroupingType = $plotGroup->getPlotGrouping(); - $objWriter->startElement('c:grouping'); - $objWriter->writeAttribute('val', $plotGroupingType); - $objWriter->endElement(); - } - - // Get these details before the loop, because we can use the count to check for varyColors - $plotSeriesOrder = $plotGroup->getPlotOrder(); - $plotSeriesCount = count($plotSeriesOrder); - - if (($groupType !== PHPExcel_Chart_DataSeries::TYPE_RADARCHART) && ($groupType !== PHPExcel_Chart_DataSeries::TYPE_STOCKCHART)) { - if ($groupType !== PHPExcel_Chart_DataSeries::TYPE_LINECHART) { - if (($groupType == PHPExcel_Chart_DataSeries::TYPE_PIECHART) || ($groupType == PHPExcel_Chart_DataSeries::TYPE_PIECHART_3D) || ($groupType == PHPExcel_Chart_DataSeries::TYPE_DONUTCHART) || ($plotSeriesCount > 1)) { - $objWriter->startElement('c:varyColors'); - $objWriter->writeAttribute('val', 1); - $objWriter->endElement(); - } else { - $objWriter->startElement('c:varyColors'); - $objWriter->writeAttribute('val', 0); - $objWriter->endElement(); - } - } - } - - foreach ($plotSeriesOrder as $plotSeriesIdx => $plotSeriesRef) { - $objWriter->startElement('c:ser'); - - $objWriter->startElement('c:idx'); - $objWriter->writeAttribute('val', $this->_seriesIndex + $plotSeriesIdx); - $objWriter->endElement(); - - $objWriter->startElement('c:order'); - $objWriter->writeAttribute('val', $this->_seriesIndex + $plotSeriesRef); - $objWriter->endElement(); - - if (($groupType == PHPExcel_Chart_DataSeries::TYPE_PIECHART) || ($groupType == PHPExcel_Chart_DataSeries::TYPE_PIECHART_3D) || ($groupType == PHPExcel_Chart_DataSeries::TYPE_DONUTCHART)) { - $objWriter->startElement('c:dPt'); - $objWriter->startElement('c:idx'); - $objWriter->writeAttribute('val', 3); - $objWriter->endElement(); - - $objWriter->startElement('c:bubble3D'); - $objWriter->writeAttribute('val', 0); - $objWriter->endElement(); - - $objWriter->startElement('c:spPr'); - $objWriter->startElement('a:solidFill'); - $objWriter->startElement('a:srgbClr'); - $objWriter->writeAttribute('val', 'FF9900'); - $objWriter->endElement(); - $objWriter->endElement(); - $objWriter->endElement(); - $objWriter->endElement(); - } - - // Labels - $plotSeriesLabel = $plotGroup->getPlotLabelByIndex($plotSeriesRef); - if ($plotSeriesLabel && ($plotSeriesLabel->getPointCount() > 0)) { - $objWriter->startElement('c:tx'); - $objWriter->startElement('c:strRef'); - $this->writePlotSeriesLabel($plotSeriesLabel, $objWriter); - $objWriter->endElement(); - $objWriter->endElement(); - } - - // Formatting for the points - if (($groupType == PHPExcel_Chart_DataSeries::TYPE_LINECHART) || ($groupType == PHPExcel_Chart_DataSeries::TYPE_STOCKCHART)) { - $objWriter->startElement('c:spPr'); - $objWriter->startElement('a:ln'); - $objWriter->writeAttribute('w', 12700); - if ($groupType == PHPExcel_Chart_DataSeries::TYPE_STOCKCHART) { - $objWriter->startElement('a:noFill'); - $objWriter->endElement(); - } - $objWriter->endElement(); - $objWriter->endElement(); - } - - $plotSeriesValues = $plotGroup->getPlotValuesByIndex($plotSeriesRef); - if ($plotSeriesValues) { - $plotSeriesMarker = $plotSeriesValues->getPointMarker(); - if ($plotSeriesMarker) { - $objWriter->startElement('c:marker'); - $objWriter->startElement('c:symbol'); - $objWriter->writeAttribute('val', $plotSeriesMarker); - $objWriter->endElement(); - - if ($plotSeriesMarker !== 'none') { - $objWriter->startElement('c:size'); - $objWriter->writeAttribute('val', 3); - $objWriter->endElement(); - } - - $objWriter->endElement(); - } - } - - if (($groupType === PHPExcel_Chart_DataSeries::TYPE_BARCHART) || ($groupType === PHPExcel_Chart_DataSeries::TYPE_BARCHART_3D) || ($groupType === PHPExcel_Chart_DataSeries::TYPE_BUBBLECHART)) { - $objWriter->startElement('c:invertIfNegative'); - $objWriter->writeAttribute('val', 0); - $objWriter->endElement(); - } - - // Category Labels - $plotSeriesCategory = $plotGroup->getPlotCategoryByIndex($plotSeriesRef); - if ($plotSeriesCategory && ($plotSeriesCategory->getPointCount() > 0)) { - $catIsMultiLevelSeries = $catIsMultiLevelSeries || $plotSeriesCategory->isMultiLevelSeries(); - - if (($groupType == PHPExcel_Chart_DataSeries::TYPE_PIECHART) || ($groupType == PHPExcel_Chart_DataSeries::TYPE_PIECHART_3D) || ($groupType == PHPExcel_Chart_DataSeries::TYPE_DONUTCHART)) { - if (!is_null($plotGroup->getPlotStyle())) { - $plotStyle = $plotGroup->getPlotStyle(); - if ($plotStyle) { - $objWriter->startElement('c:explosion'); - $objWriter->writeAttribute('val', 25); - $objWriter->endElement(); - } - } - } - - if (($groupType === PHPExcel_Chart_DataSeries::TYPE_BUBBLECHART) || ($groupType === PHPExcel_Chart_DataSeries::TYPE_SCATTERCHART)) { - $objWriter->startElement('c:xVal'); - } else { - $objWriter->startElement('c:cat'); - } - - $this->writePlotSeriesValues($plotSeriesCategory, $objWriter, $groupType, 'str', $pSheet); - $objWriter->endElement(); - } - - // Values - if ($plotSeriesValues) { - $valIsMultiLevelSeries = $valIsMultiLevelSeries || $plotSeriesValues->isMultiLevelSeries(); - - if (($groupType === PHPExcel_Chart_DataSeries::TYPE_BUBBLECHART) || ($groupType === PHPExcel_Chart_DataSeries::TYPE_SCATTERCHART)) { - $objWriter->startElement('c:yVal'); - } else { - $objWriter->startElement('c:val'); - } - - $this->writePlotSeriesValues($plotSeriesValues, $objWriter, $groupType, 'num', $pSheet); - $objWriter->endElement(); - } - - if ($groupType === PHPExcel_Chart_DataSeries::TYPE_BUBBLECHART) { - $this->writeBubbles($plotSeriesValues, $objWriter, $pSheet); - } - - $objWriter->endElement(); - } - - $this->_seriesIndex += $plotSeriesIdx + 1; - } - - /** - * Write Plot Series Label - * - * @param PHPExcel_Chart_DataSeriesValues $plotSeriesLabel - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * - * @throws PHPExcel_Writer_Exception - */ - private function writePlotSeriesLabel($plotSeriesLabel, $objWriter) - { - if (is_null($plotSeriesLabel)) { - return; - } - - $objWriter->startElement('c:f'); - $objWriter->writeRawData($plotSeriesLabel->getDataSource()); - $objWriter->endElement(); - - $objWriter->startElement('c:strCache'); - $objWriter->startElement('c:ptCount'); - $objWriter->writeAttribute('val', $plotSeriesLabel->getPointCount()); - $objWriter->endElement(); - - foreach ($plotSeriesLabel->getDataValues() as $plotLabelKey => $plotLabelValue) { - $objWriter->startElement('c:pt'); - $objWriter->writeAttribute('idx', $plotLabelKey); - - $objWriter->startElement('c:v'); - $objWriter->writeRawData($plotLabelValue); - $objWriter->endElement(); - $objWriter->endElement(); - } - $objWriter->endElement(); - } - - /** - * Write Plot Series Values - * - * @param PHPExcel_Chart_DataSeriesValues $plotSeriesValues - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param string $groupType Type of plot for dataseries - * @param string $dataType Datatype of series values - * @param PHPExcel_Worksheet $pSheet - * - * @throws PHPExcel_Writer_Exception - */ - private function writePlotSeriesValues($plotSeriesValues, $objWriter, $groupType, $dataType = 'str', PHPExcel_Worksheet $pSheet) - { - if (is_null($plotSeriesValues)) { - return; - } - - if ($plotSeriesValues->isMultiLevelSeries()) { - $levelCount = $plotSeriesValues->multiLevelCount(); - - $objWriter->startElement('c:multiLvlStrRef'); - - $objWriter->startElement('c:f'); - $objWriter->writeRawData($plotSeriesValues->getDataSource()); - $objWriter->endElement(); - - $objWriter->startElement('c:multiLvlStrCache'); - - $objWriter->startElement('c:ptCount'); - $objWriter->writeAttribute('val', $plotSeriesValues->getPointCount()); - $objWriter->endElement(); - - for ($level = 0; $level < $levelCount; ++$level) { - $objWriter->startElement('c:lvl'); - - foreach ($plotSeriesValues->getDataValues() as $plotSeriesKey => $plotSeriesValue) { - if (isset($plotSeriesValue[$level])) { - $objWriter->startElement('c:pt'); - $objWriter->writeAttribute('idx', $plotSeriesKey); - - $objWriter->startElement('c:v'); - $objWriter->writeRawData($plotSeriesValue[$level]); - $objWriter->endElement(); - $objWriter->endElement(); - } - } - - $objWriter->endElement(); - } - - $objWriter->endElement(); - - $objWriter->endElement(); - } else { - $objWriter->startElement('c:' . $dataType . 'Ref'); - - $objWriter->startElement('c:f'); - $objWriter->writeRawData($plotSeriesValues->getDataSource()); - $objWriter->endElement(); - - $objWriter->startElement('c:' . $dataType . 'Cache'); - - if (($groupType != PHPExcel_Chart_DataSeries::TYPE_PIECHART) && ($groupType != PHPExcel_Chart_DataSeries::TYPE_PIECHART_3D) && ($groupType != PHPExcel_Chart_DataSeries::TYPE_DONUTCHART)) { - if (($plotSeriesValues->getFormatCode() !== null) && ($plotSeriesValues->getFormatCode() !== '')) { - $objWriter->startElement('c:formatCode'); - $objWriter->writeRawData($plotSeriesValues->getFormatCode()); - $objWriter->endElement(); - } - } - - $objWriter->startElement('c:ptCount'); - $objWriter->writeAttribute('val', $plotSeriesValues->getPointCount()); - $objWriter->endElement(); - - $dataValues = $plotSeriesValues->getDataValues(); - if (!empty($dataValues)) { - if (is_array($dataValues)) { - foreach ($dataValues as $plotSeriesKey => $plotSeriesValue) { - $objWriter->startElement('c:pt'); - $objWriter->writeAttribute('idx', $plotSeriesKey); - - $objWriter->startElement('c:v'); - $objWriter->writeRawData($plotSeriesValue); - $objWriter->endElement(); - $objWriter->endElement(); - } - } - } - - $objWriter->endElement(); - - $objWriter->endElement(); - } - } - - /** - * Write Bubble Chart Details - * - * @param PHPExcel_Chart_DataSeriesValues $plotSeriesValues - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * - * @throws PHPExcel_Writer_Exception - */ - private function writeBubbles($plotSeriesValues, $objWriter, PHPExcel_Worksheet $pSheet) - { - if (is_null($plotSeriesValues)) { - return; - } - - $objWriter->startElement('c:bubbleSize'); - $objWriter->startElement('c:numLit'); - - $objWriter->startElement('c:formatCode'); - $objWriter->writeRawData('General'); - $objWriter->endElement(); - - $objWriter->startElement('c:ptCount'); - $objWriter->writeAttribute('val', $plotSeriesValues->getPointCount()); - $objWriter->endElement(); - - $dataValues = $plotSeriesValues->getDataValues(); - if (!empty($dataValues)) { - if (is_array($dataValues)) { - foreach ($dataValues as $plotSeriesKey => $plotSeriesValue) { - $objWriter->startElement('c:pt'); - $objWriter->writeAttribute('idx', $plotSeriesKey); - $objWriter->startElement('c:v'); - $objWriter->writeRawData(1); - $objWriter->endElement(); - $objWriter->endElement(); - } - } - } - - $objWriter->endElement(); - $objWriter->endElement(); - - $objWriter->startElement('c:bubble3D'); - $objWriter->writeAttribute('val', 0); - $objWriter->endElement(); - } - - /** - * Write Layout - * - * @param PHPExcel_Chart_Layout $layout - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * - * @throws PHPExcel_Writer_Exception - */ - private function writeLayout(PHPExcel_Chart_Layout $layout = null, $objWriter) - { - $objWriter->startElement('c:layout'); - - if (!is_null($layout)) { - $objWriter->startElement('c:manualLayout'); - - $layoutTarget = $layout->getLayoutTarget(); - if (!is_null($layoutTarget)) { - $objWriter->startElement('c:layoutTarget'); - $objWriter->writeAttribute('val', $layoutTarget); - $objWriter->endElement(); - } - - $xMode = $layout->getXMode(); - if (!is_null($xMode)) { - $objWriter->startElement('c:xMode'); - $objWriter->writeAttribute('val', $xMode); - $objWriter->endElement(); - } - - $yMode = $layout->getYMode(); - if (!is_null($yMode)) { - $objWriter->startElement('c:yMode'); - $objWriter->writeAttribute('val', $yMode); - $objWriter->endElement(); - } - - $x = $layout->getXPosition(); - if (!is_null($x)) { - $objWriter->startElement('c:x'); - $objWriter->writeAttribute('val', $x); - $objWriter->endElement(); - } - - $y = $layout->getYPosition(); - if (!is_null($y)) { - $objWriter->startElement('c:y'); - $objWriter->writeAttribute('val', $y); - $objWriter->endElement(); - } - - $w = $layout->getWidth(); - if (!is_null($w)) { - $objWriter->startElement('c:w'); - $objWriter->writeAttribute('val', $w); - $objWriter->endElement(); - } - - $h = $layout->getHeight(); - if (!is_null($h)) { - $objWriter->startElement('c:h'); - $objWriter->writeAttribute('val', $h); - $objWriter->endElement(); - } - - $objWriter->endElement(); - } - - $objWriter->endElement(); - } - - /** - * Write Alternate Content block - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * - * @throws PHPExcel_Writer_Exception - */ - private function writeAlternateContent($objWriter) - { - $objWriter->startElement('mc:AlternateContent'); - $objWriter->writeAttribute('xmlns:mc', 'http://schemas.openxmlformats.org/markup-compatibility/2006'); - - $objWriter->startElement('mc:Choice'); - $objWriter->writeAttribute('xmlns:c14', 'http://schemas.microsoft.com/office/drawing/2007/8/2/chart'); - $objWriter->writeAttribute('Requires', 'c14'); - - $objWriter->startElement('c14:style'); - $objWriter->writeAttribute('val', '102'); - $objWriter->endElement(); - $objWriter->endElement(); - - $objWriter->startElement('mc:Fallback'); - $objWriter->startElement('c:style'); - $objWriter->writeAttribute('val', '2'); - $objWriter->endElement(); - $objWriter->endElement(); - - $objWriter->endElement(); - } - - /** - * Write Printer Settings - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * - * @throws PHPExcel_Writer_Exception - */ - private function writePrintSettings($objWriter) - { - $objWriter->startElement('c:printSettings'); - - $objWriter->startElement('c:headerFooter'); - $objWriter->endElement(); - - $objWriter->startElement('c:pageMargins'); - $objWriter->writeAttribute('footer', 0.3); - $objWriter->writeAttribute('header', 0.3); - $objWriter->writeAttribute('r', 0.7); - $objWriter->writeAttribute('l', 0.7); - $objWriter->writeAttribute('t', 0.75); - $objWriter->writeAttribute('b', 0.75); - $objWriter->endElement(); - - $objWriter->startElement('c:pageSetup'); - $objWriter->writeAttribute('orientation', "portrait"); - $objWriter->endElement(); - - $objWriter->endElement(); - } -} diff --git a/application/third_party/PHPExcel/Writer/Excel2007/Comments.php b/application/third_party/PHPExcel/Writer/Excel2007/Comments.php deleted file mode 100644 index 7139f6c4..00000000 --- a/application/third_party/PHPExcel/Writer/Excel2007/Comments.php +++ /dev/null @@ -1,260 +0,0 @@ -<?php - -/** - * PHPExcel_Writer_Excel2007_Comments - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_Excel2007 - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Writer_Excel2007_Comments extends PHPExcel_Writer_Excel2007_WriterPart -{ - /** - * Write comments to XML format - * - * @param PHPExcel_Worksheet $pWorksheet - * @return string XML Output - * @throws PHPExcel_Writer_Exception - */ - public function writeComments(PHPExcel_Worksheet $pWorksheet = null) - { - // Create XML writer - $objWriter = null; - if ($this->getParentWriter()->getUseDiskCaching()) { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); - } else { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); - } - - // XML header - $objWriter->startDocument('1.0', 'UTF-8', 'yes'); - - // Comments cache - $comments = $pWorksheet->getComments(); - - // Authors cache - $authors = array(); - $authorId = 0; - foreach ($comments as $comment) { - if (!isset($authors[$comment->getAuthor()])) { - $authors[$comment->getAuthor()] = $authorId++; - } - } - - // comments - $objWriter->startElement('comments'); - $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'); - - // Loop through authors - $objWriter->startElement('authors'); - foreach ($authors as $author => $index) { - $objWriter->writeElement('author', $author); - } - $objWriter->endElement(); - - // Loop through comments - $objWriter->startElement('commentList'); - foreach ($comments as $key => $value) { - $this->writeComment($objWriter, $key, $value, $authors); - } - $objWriter->endElement(); - - $objWriter->endElement(); - - // Return - return $objWriter->getData(); - } - - /** - * Write comment to XML format - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param string $pCellReference Cell reference - * @param PHPExcel_Comment $pComment Comment - * @param array $pAuthors Array of authors - * @throws PHPExcel_Writer_Exception - */ - private function writeComment(PHPExcel_Shared_XMLWriter $objWriter = null, $pCellReference = 'A1', PHPExcel_Comment $pComment = null, $pAuthors = null) - { - // comment - $objWriter->startElement('comment'); - $objWriter->writeAttribute('ref', $pCellReference); - $objWriter->writeAttribute('authorId', $pAuthors[$pComment->getAuthor()]); - - // text - $objWriter->startElement('text'); - $this->getParentWriter()->getWriterPart('stringtable')->writeRichText($objWriter, $pComment->getText()); - $objWriter->endElement(); - - $objWriter->endElement(); - } - - /** - * Write VML comments to XML format - * - * @param PHPExcel_Worksheet $pWorksheet - * @return string XML Output - * @throws PHPExcel_Writer_Exception - */ - public function writeVMLComments(PHPExcel_Worksheet $pWorksheet = null) - { - // Create XML writer - $objWriter = null; - if ($this->getParentWriter()->getUseDiskCaching()) { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); - } else { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); - } - - // XML header - $objWriter->startDocument('1.0', 'UTF-8', 'yes'); - - // Comments cache - $comments = $pWorksheet->getComments(); - - // xml - $objWriter->startElement('xml'); - $objWriter->writeAttribute('xmlns:v', 'urn:schemas-microsoft-com:vml'); - $objWriter->writeAttribute('xmlns:o', 'urn:schemas-microsoft-com:office:office'); - $objWriter->writeAttribute('xmlns:x', 'urn:schemas-microsoft-com:office:excel'); - - // o:shapelayout - $objWriter->startElement('o:shapelayout'); - $objWriter->writeAttribute('v:ext', 'edit'); - - // o:idmap - $objWriter->startElement('o:idmap'); - $objWriter->writeAttribute('v:ext', 'edit'); - $objWriter->writeAttribute('data', '1'); - $objWriter->endElement(); - - $objWriter->endElement(); - - // v:shapetype - $objWriter->startElement('v:shapetype'); - $objWriter->writeAttribute('id', '_x0000_t202'); - $objWriter->writeAttribute('coordsize', '21600,21600'); - $objWriter->writeAttribute('o:spt', '202'); - $objWriter->writeAttribute('path', 'm,l,21600r21600,l21600,xe'); - - // v:stroke - $objWriter->startElement('v:stroke'); - $objWriter->writeAttribute('joinstyle', 'miter'); - $objWriter->endElement(); - - // v:path - $objWriter->startElement('v:path'); - $objWriter->writeAttribute('gradientshapeok', 't'); - $objWriter->writeAttribute('o:connecttype', 'rect'); - $objWriter->endElement(); - - $objWriter->endElement(); - - // Loop through comments - foreach ($comments as $key => $value) { - $this->writeVMLComment($objWriter, $key, $value); - } - - $objWriter->endElement(); - - // Return - return $objWriter->getData(); - } - - /** - * Write VML comment to XML format - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param string $pCellReference Cell reference - * @param PHPExcel_Comment $pComment Comment - * @throws PHPExcel_Writer_Exception - */ - private function writeVMLComment(PHPExcel_Shared_XMLWriter $objWriter = null, $pCellReference = 'A1', PHPExcel_Comment $pComment = null) - { - // Metadata - list($column, $row) = PHPExcel_Cell::coordinateFromString($pCellReference); - $column = PHPExcel_Cell::columnIndexFromString($column); - $id = 1024 + $column + $row; - $id = substr($id, 0, 4); - - // v:shape - $objWriter->startElement('v:shape'); - $objWriter->writeAttribute('id', '_x0000_s' . $id); - $objWriter->writeAttribute('type', '#_x0000_t202'); - $objWriter->writeAttribute('style', 'position:absolute;margin-left:' . $pComment->getMarginLeft() . ';margin-top:' . $pComment->getMarginTop() . ';width:' . $pComment->getWidth() . ';height:' . $pComment->getHeight() . ';z-index:1;visibility:' . ($pComment->getVisible() ? 'visible' : 'hidden')); - $objWriter->writeAttribute('fillcolor', '#' . $pComment->getFillColor()->getRGB()); - $objWriter->writeAttribute('o:insetmode', 'auto'); - - // v:fill - $objWriter->startElement('v:fill'); - $objWriter->writeAttribute('color2', '#' . $pComment->getFillColor()->getRGB()); - $objWriter->endElement(); - - // v:shadow - $objWriter->startElement('v:shadow'); - $objWriter->writeAttribute('on', 't'); - $objWriter->writeAttribute('color', 'black'); - $objWriter->writeAttribute('obscured', 't'); - $objWriter->endElement(); - - // v:path - $objWriter->startElement('v:path'); - $objWriter->writeAttribute('o:connecttype', 'none'); - $objWriter->endElement(); - - // v:textbox - $objWriter->startElement('v:textbox'); - $objWriter->writeAttribute('style', 'mso-direction-alt:auto'); - - // div - $objWriter->startElement('div'); - $objWriter->writeAttribute('style', 'text-align:left'); - $objWriter->endElement(); - - $objWriter->endElement(); - - // x:ClientData - $objWriter->startElement('x:ClientData'); - $objWriter->writeAttribute('ObjectType', 'Note'); - - // x:MoveWithCells - $objWriter->writeElement('x:MoveWithCells', ''); - - // x:SizeWithCells - $objWriter->writeElement('x:SizeWithCells', ''); - - // x:Anchor - //$objWriter->writeElement('x:Anchor', $column . ', 15, ' . ($row - 2) . ', 10, ' . ($column + 4) . ', 15, ' . ($row + 5) . ', 18'); - - // x:AutoFill - $objWriter->writeElement('x:AutoFill', 'False'); - - // x:Row - $objWriter->writeElement('x:Row', ($row - 1)); - - // x:Column - $objWriter->writeElement('x:Column', ($column - 1)); - - $objWriter->endElement(); - - $objWriter->endElement(); - } -} diff --git a/application/third_party/PHPExcel/Writer/Excel2007/ContentTypes.php b/application/third_party/PHPExcel/Writer/Excel2007/ContentTypes.php deleted file mode 100644 index 0d911899..00000000 --- a/application/third_party/PHPExcel/Writer/Excel2007/ContentTypes.php +++ /dev/null @@ -1,240 +0,0 @@ -<?php - -/** - * PHPExcel_Writer_Excel2007_ContentTypes - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_Excel2007 - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Writer_Excel2007_ContentTypes extends PHPExcel_Writer_Excel2007_WriterPart -{ - /** - * Write content types to XML format - * - * @param PHPExcel $pPHPExcel - * @param boolean $includeCharts Flag indicating if we should include drawing details for charts - * @return string XML Output - * @throws PHPExcel_Writer_Exception - */ - public function writeContentTypes(PHPExcel $pPHPExcel = null, $includeCharts = false) - { - // Create XML writer - $objWriter = null; - if ($this->getParentWriter()->getUseDiskCaching()) { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); - } else { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); - } - - // XML header - $objWriter->startDocument('1.0', 'UTF-8', 'yes'); - - // Types - $objWriter->startElement('Types'); - $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/content-types'); - - // Theme - $this->writeOverrideContentType($objWriter, '/xl/theme/theme1.xml', 'application/vnd.openxmlformats-officedocument.theme+xml'); - - // Styles - $this->writeOverrideContentType($objWriter, '/xl/styles.xml', 'application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml'); - - // Rels - $this->writeDefaultContentType($objWriter, 'rels', 'application/vnd.openxmlformats-package.relationships+xml'); - - // XML - $this->writeDefaultContentType($objWriter, 'xml', 'application/xml'); - - // VML - $this->writeDefaultContentType($objWriter, 'vml', 'application/vnd.openxmlformats-officedocument.vmlDrawing'); - - // Workbook - if ($pPHPExcel->hasMacros()) { //Macros in workbook ? - // Yes : not standard content but "macroEnabled" - $this->writeOverrideContentType($objWriter, '/xl/workbook.xml', 'application/vnd.ms-excel.sheet.macroEnabled.main+xml'); - //... and define a new type for the VBA project - $this->writeDefaultContentType($objWriter, 'bin', 'application/vnd.ms-office.vbaProject'); - if ($pPHPExcel->hasMacrosCertificate()) {// signed macros ? - // Yes : add needed information - $this->writeOverrideContentType($objWriter, '/xl/vbaProjectSignature.bin', 'application/vnd.ms-office.vbaProjectSignature'); - } - } else {// no macros in workbook, so standard type - $this->writeOverrideContentType($objWriter, '/xl/workbook.xml', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml'); - } - - // DocProps - $this->writeOverrideContentType($objWriter, '/docProps/app.xml', 'application/vnd.openxmlformats-officedocument.extended-properties+xml'); - - $this->writeOverrideContentType($objWriter, '/docProps/core.xml', 'application/vnd.openxmlformats-package.core-properties+xml'); - - $customPropertyList = $pPHPExcel->getProperties()->getCustomProperties(); - if (!empty($customPropertyList)) { - $this->writeOverrideContentType($objWriter, '/docProps/custom.xml', 'application/vnd.openxmlformats-officedocument.custom-properties+xml'); - } - - // Worksheets - $sheetCount = $pPHPExcel->getSheetCount(); - for ($i = 0; $i < $sheetCount; ++$i) { - $this->writeOverrideContentType($objWriter, '/xl/worksheets/sheet' . ($i + 1) . '.xml', 'application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml'); - } - - // Shared strings - $this->writeOverrideContentType($objWriter, '/xl/sharedStrings.xml', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml'); - - // Add worksheet relationship content types - $chart = 1; - for ($i = 0; $i < $sheetCount; ++$i) { - $drawings = $pPHPExcel->getSheet($i)->getDrawingCollection(); - $drawingCount = count($drawings); - $chartCount = ($includeCharts) ? $pPHPExcel->getSheet($i)->getChartCount() : 0; - - // We need a drawing relationship for the worksheet if we have either drawings or charts - if (($drawingCount > 0) || ($chartCount > 0)) { - $this->writeOverrideContentType($objWriter, '/xl/drawings/drawing' . ($i + 1) . '.xml', 'application/vnd.openxmlformats-officedocument.drawing+xml'); - } - - // If we have charts, then we need a chart relationship for every individual chart - if ($chartCount > 0) { - for ($c = 0; $c < $chartCount; ++$c) { - $this->writeOverrideContentType($objWriter, '/xl/charts/chart' . $chart++ . '.xml', 'application/vnd.openxmlformats-officedocument.drawingml.chart+xml'); - } - } - } - - // Comments - for ($i = 0; $i < $sheetCount; ++$i) { - if (count($pPHPExcel->getSheet($i)->getComments()) > 0) { - $this->writeOverrideContentType($objWriter, '/xl/comments' . ($i + 1) . '.xml', 'application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml'); - } - } - - // Add media content-types - $aMediaContentTypes = array(); - $mediaCount = $this->getParentWriter()->getDrawingHashTable()->count(); - for ($i = 0; $i < $mediaCount; ++$i) { - $extension = ''; - $mimeType = ''; - - if ($this->getParentWriter()->getDrawingHashTable()->getByIndex($i) instanceof PHPExcel_Worksheet_Drawing) { - $extension = strtolower($this->getParentWriter()->getDrawingHashTable()->getByIndex($i)->getExtension()); - $mimeType = $this->getImageMimeType($this->getParentWriter()->getDrawingHashTable()->getByIndex($i)->getPath()); - } elseif ($this->getParentWriter()->getDrawingHashTable()->getByIndex($i) instanceof PHPExcel_Worksheet_MemoryDrawing) { - $extension = strtolower($this->getParentWriter()->getDrawingHashTable()->getByIndex($i)->getMimeType()); - $extension = explode('/', $extension); - $extension = $extension[1]; - - $mimeType = $this->getParentWriter()->getDrawingHashTable()->getByIndex($i)->getMimeType(); - } - - if (!isset( $aMediaContentTypes[$extension])) { - $aMediaContentTypes[$extension] = $mimeType; - - $this->writeDefaultContentType($objWriter, $extension, $mimeType); - } - } - if ($pPHPExcel->hasRibbonBinObjects()) { - // Some additional objects in the ribbon ? - // we need to write "Extension" but not already write for media content - $tabRibbonTypes=array_diff($pPHPExcel->getRibbonBinObjects('types'), array_keys($aMediaContentTypes)); - foreach ($tabRibbonTypes as $aRibbonType) { - $mimeType='image/.'.$aRibbonType;//we wrote $mimeType like customUI Editor - $this->writeDefaultContentType($objWriter, $aRibbonType, $mimeType); - } - } - $sheetCount = $pPHPExcel->getSheetCount(); - for ($i = 0; $i < $sheetCount; ++$i) { - if (count($pPHPExcel->getSheet()->getHeaderFooter()->getImages()) > 0) { - foreach ($pPHPExcel->getSheet()->getHeaderFooter()->getImages() as $image) { - if (!isset( $aMediaContentTypes[strtolower($image->getExtension())])) { - $aMediaContentTypes[strtolower($image->getExtension())] = $this->getImageMimeType($image->getPath()); - - $this->writeDefaultContentType($objWriter, strtolower($image->getExtension()), $aMediaContentTypes[strtolower($image->getExtension())]); - } - } - } - } - - $objWriter->endElement(); - - // Return - return $objWriter->getData(); - } - - /** - * Get image mime type - * - * @param string $pFile Filename - * @return string Mime Type - * @throws PHPExcel_Writer_Exception - */ - private function getImageMimeType($pFile = '') - { - if (PHPExcel_Shared_File::file_exists($pFile)) { - $image = getimagesize($pFile); - return image_type_to_mime_type($image[2]); - } else { - throw new PHPExcel_Writer_Exception("File $pFile does not exist"); - } - } - - /** - * Write Default content type - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param string $pPartname Part name - * @param string $pContentType Content type - * @throws PHPExcel_Writer_Exception - */ - private function writeDefaultContentType(PHPExcel_Shared_XMLWriter $objWriter = null, $pPartname = '', $pContentType = '') - { - if ($pPartname != '' && $pContentType != '') { - // Write content type - $objWriter->startElement('Default'); - $objWriter->writeAttribute('Extension', $pPartname); - $objWriter->writeAttribute('ContentType', $pContentType); - $objWriter->endElement(); - } else { - throw new PHPExcel_Writer_Exception("Invalid parameters passed."); - } - } - - /** - * Write Override content type - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param string $pPartname Part name - * @param string $pContentType Content type - * @throws PHPExcel_Writer_Exception - */ - private function writeOverrideContentType(PHPExcel_Shared_XMLWriter $objWriter = null, $pPartname = '', $pContentType = '') - { - if ($pPartname != '' && $pContentType != '') { - // Write content type - $objWriter->startElement('Override'); - $objWriter->writeAttribute('PartName', $pPartname); - $objWriter->writeAttribute('ContentType', $pContentType); - $objWriter->endElement(); - } else { - throw new PHPExcel_Writer_Exception("Invalid parameters passed."); - } - } -} diff --git a/application/third_party/PHPExcel/Writer/Excel2007/DocProps.php b/application/third_party/PHPExcel/Writer/Excel2007/DocProps.php deleted file mode 100644 index fef3d937..00000000 --- a/application/third_party/PHPExcel/Writer/Excel2007/DocProps.php +++ /dev/null @@ -1,262 +0,0 @@ -<?php - -/** - * PHPExcel_Writer_Excel2007_DocProps - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_Excel2007 - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Writer_Excel2007_DocProps extends PHPExcel_Writer_Excel2007_WriterPart -{ - /** - * Write docProps/app.xml to XML format - * - * @param PHPExcel $pPHPExcel - * @return string XML Output - * @throws PHPExcel_Writer_Exception - */ - public function writeDocPropsApp(PHPExcel $pPHPExcel = null) - { - // Create XML writer - $objWriter = null; - if ($this->getParentWriter()->getUseDiskCaching()) { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); - } else { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); - } - - // XML header - $objWriter->startDocument('1.0', 'UTF-8', 'yes'); - - // Properties - $objWriter->startElement('Properties'); - $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/officeDocument/2006/extended-properties'); - $objWriter->writeAttribute('xmlns:vt', 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes'); - - // Application - $objWriter->writeElement('Application', 'Microsoft Excel'); - - // DocSecurity - $objWriter->writeElement('DocSecurity', '0'); - - // ScaleCrop - $objWriter->writeElement('ScaleCrop', 'false'); - - // HeadingPairs - $objWriter->startElement('HeadingPairs'); - - // Vector - $objWriter->startElement('vt:vector'); - $objWriter->writeAttribute('size', '2'); - $objWriter->writeAttribute('baseType', 'variant'); - - // Variant - $objWriter->startElement('vt:variant'); - $objWriter->writeElement('vt:lpstr', 'Worksheets'); - $objWriter->endElement(); - - // Variant - $objWriter->startElement('vt:variant'); - $objWriter->writeElement('vt:i4', $pPHPExcel->getSheetCount()); - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - // TitlesOfParts - $objWriter->startElement('TitlesOfParts'); - - // Vector - $objWriter->startElement('vt:vector'); - $objWriter->writeAttribute('size', $pPHPExcel->getSheetCount()); - $objWriter->writeAttribute('baseType', 'lpstr'); - - $sheetCount = $pPHPExcel->getSheetCount(); - for ($i = 0; $i < $sheetCount; ++$i) { - $objWriter->writeElement('vt:lpstr', $pPHPExcel->getSheet($i)->getTitle()); - } - - $objWriter->endElement(); - - $objWriter->endElement(); - - // Company - $objWriter->writeElement('Company', $pPHPExcel->getProperties()->getCompany()); - - // Company - $objWriter->writeElement('Manager', $pPHPExcel->getProperties()->getManager()); - - // LinksUpToDate - $objWriter->writeElement('LinksUpToDate', 'false'); - - // SharedDoc - $objWriter->writeElement('SharedDoc', 'false'); - - // HyperlinksChanged - $objWriter->writeElement('HyperlinksChanged', 'false'); - - // AppVersion - $objWriter->writeElement('AppVersion', '12.0000'); - - $objWriter->endElement(); - - // Return - return $objWriter->getData(); - } - - /** - * Write docProps/core.xml to XML format - * - * @param PHPExcel $pPHPExcel - * @return string XML Output - * @throws PHPExcel_Writer_Exception - */ - public function writeDocPropsCore(PHPExcel $pPHPExcel = null) - { - // Create XML writer - $objWriter = null; - if ($this->getParentWriter()->getUseDiskCaching()) { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); - } else { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); - } - - // XML header - $objWriter->startDocument('1.0', 'UTF-8', 'yes'); - - // cp:coreProperties - $objWriter->startElement('cp:coreProperties'); - $objWriter->writeAttribute('xmlns:cp', 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties'); - $objWriter->writeAttribute('xmlns:dc', 'http://purl.org/dc/elements/1.1/'); - $objWriter->writeAttribute('xmlns:dcterms', 'http://purl.org/dc/terms/'); - $objWriter->writeAttribute('xmlns:dcmitype', 'http://purl.org/dc/dcmitype/'); - $objWriter->writeAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance'); - - // dc:creator - $objWriter->writeElement('dc:creator', $pPHPExcel->getProperties()->getCreator()); - - // cp:lastModifiedBy - $objWriter->writeElement('cp:lastModifiedBy', $pPHPExcel->getProperties()->getLastModifiedBy()); - - // dcterms:created - $objWriter->startElement('dcterms:created'); - $objWriter->writeAttribute('xsi:type', 'dcterms:W3CDTF'); - $objWriter->writeRawData(date(DATE_W3C, $pPHPExcel->getProperties()->getCreated())); - $objWriter->endElement(); - - // dcterms:modified - $objWriter->startElement('dcterms:modified'); - $objWriter->writeAttribute('xsi:type', 'dcterms:W3CDTF'); - $objWriter->writeRawData(date(DATE_W3C, $pPHPExcel->getProperties()->getModified())); - $objWriter->endElement(); - - // dc:title - $objWriter->writeElement('dc:title', $pPHPExcel->getProperties()->getTitle()); - - // dc:description - $objWriter->writeElement('dc:description', $pPHPExcel->getProperties()->getDescription()); - - // dc:subject - $objWriter->writeElement('dc:subject', $pPHPExcel->getProperties()->getSubject()); - - // cp:keywords - $objWriter->writeElement('cp:keywords', $pPHPExcel->getProperties()->getKeywords()); - - // cp:category - $objWriter->writeElement('cp:category', $pPHPExcel->getProperties()->getCategory()); - - $objWriter->endElement(); - - // Return - return $objWriter->getData(); - } - - /** - * Write docProps/custom.xml to XML format - * - * @param PHPExcel $pPHPExcel - * @return string XML Output - * @throws PHPExcel_Writer_Exception - */ - public function writeDocPropsCustom(PHPExcel $pPHPExcel = null) - { - $customPropertyList = $pPHPExcel->getProperties()->getCustomProperties(); - if (empty($customPropertyList)) { - return; - } - - // Create XML writer - $objWriter = null; - if ($this->getParentWriter()->getUseDiskCaching()) { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); - } else { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); - } - - // XML header - $objWriter->startDocument('1.0', 'UTF-8', 'yes'); - - // cp:coreProperties - $objWriter->startElement('Properties'); - $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/officeDocument/2006/custom-properties'); - $objWriter->writeAttribute('xmlns:vt', 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes'); - - - foreach ($customPropertyList as $key => $customProperty) { - $propertyValue = $pPHPExcel->getProperties()->getCustomPropertyValue($customProperty); - $propertyType = $pPHPExcel->getProperties()->getCustomPropertyType($customProperty); - - $objWriter->startElement('property'); - $objWriter->writeAttribute('fmtid', '{D5CDD505-2E9C-101B-9397-08002B2CF9AE}'); - $objWriter->writeAttribute('pid', $key+2); - $objWriter->writeAttribute('name', $customProperty); - - switch ($propertyType) { - case 'i': - $objWriter->writeElement('vt:i4', $propertyValue); - break; - case 'f': - $objWriter->writeElement('vt:r8', $propertyValue); - break; - case 'b': - $objWriter->writeElement('vt:bool', ($propertyValue) ? 'true' : 'false'); - break; - case 'd': - $objWriter->startElement('vt:filetime'); - $objWriter->writeRawData(date(DATE_W3C, $propertyValue)); - $objWriter->endElement(); - break; - default: - $objWriter->writeElement('vt:lpwstr', $propertyValue); - break; - } - - $objWriter->endElement(); - } - - - $objWriter->endElement(); - - return $objWriter->getData(); - } -} diff --git a/application/third_party/PHPExcel/Writer/Excel2007/Drawing.php b/application/third_party/PHPExcel/Writer/Excel2007/Drawing.php deleted file mode 100644 index 28143888..00000000 --- a/application/third_party/PHPExcel/Writer/Excel2007/Drawing.php +++ /dev/null @@ -1,589 +0,0 @@ -<?php - -/** - * PHPExcel_Writer_Excel2007_Drawing - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_Excel2007 - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Writer_Excel2007_Drawing extends PHPExcel_Writer_Excel2007_WriterPart -{ - /** - * Write drawings to XML format - * - * @param PHPExcel_Worksheet $pWorksheet - * @param int &$chartRef Chart ID - * @param boolean $includeCharts Flag indicating if we should include drawing details for charts - * @return string XML Output - * @throws PHPExcel_Writer_Exception - */ - public function writeDrawings(PHPExcel_Worksheet $pWorksheet = null, &$chartRef, $includeCharts = false) - { - // Create XML writer - $objWriter = null; - if ($this->getParentWriter()->getUseDiskCaching()) { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); - } else { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); - } - - // XML header - $objWriter->startDocument('1.0', 'UTF-8', 'yes'); - - // xdr:wsDr - $objWriter->startElement('xdr:wsDr'); - $objWriter->writeAttribute('xmlns:xdr', 'http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing'); - $objWriter->writeAttribute('xmlns:a', 'http://schemas.openxmlformats.org/drawingml/2006/main'); - - // Loop through images and write drawings - $i = 1; - $iterator = $pWorksheet->getDrawingCollection()->getIterator(); - while ($iterator->valid()) { - $this->writeDrawing($objWriter, $iterator->current(), $i); - - $iterator->next(); - ++$i; - } - - if ($includeCharts) { - $chartCount = $pWorksheet->getChartCount(); - // Loop through charts and write the chart position - if ($chartCount > 0) { - for ($c = 0; $c < $chartCount; ++$c) { - $this->writeChart($objWriter, $pWorksheet->getChartByIndex($c), $c+$i); - } - } - } - - $objWriter->endElement(); - - // Return - return $objWriter->getData(); - } - - /** - * Write drawings to XML format - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Chart $pChart - * @param int $pRelationId - * @throws PHPExcel_Writer_Exception - */ - public function writeChart(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Chart $pChart = null, $pRelationId = -1) - { - $tl = $pChart->getTopLeftPosition(); - $tl['colRow'] = PHPExcel_Cell::coordinateFromString($tl['cell']); - $br = $pChart->getBottomRightPosition(); - $br['colRow'] = PHPExcel_Cell::coordinateFromString($br['cell']); - - $objWriter->startElement('xdr:twoCellAnchor'); - - $objWriter->startElement('xdr:from'); - $objWriter->writeElement('xdr:col', PHPExcel_Cell::columnIndexFromString($tl['colRow'][0]) - 1); - $objWriter->writeElement('xdr:colOff', PHPExcel_Shared_Drawing::pixelsToEMU($tl['xOffset'])); - $objWriter->writeElement('xdr:row', $tl['colRow'][1] - 1); - $objWriter->writeElement('xdr:rowOff', PHPExcel_Shared_Drawing::pixelsToEMU($tl['yOffset'])); - $objWriter->endElement(); - $objWriter->startElement('xdr:to'); - $objWriter->writeElement('xdr:col', PHPExcel_Cell::columnIndexFromString($br['colRow'][0]) - 1); - $objWriter->writeElement('xdr:colOff', PHPExcel_Shared_Drawing::pixelsToEMU($br['xOffset'])); - $objWriter->writeElement('xdr:row', $br['colRow'][1] - 1); - $objWriter->writeElement('xdr:rowOff', PHPExcel_Shared_Drawing::pixelsToEMU($br['yOffset'])); - $objWriter->endElement(); - - $objWriter->startElement('xdr:graphicFrame'); - $objWriter->writeAttribute('macro', ''); - $objWriter->startElement('xdr:nvGraphicFramePr'); - $objWriter->startElement('xdr:cNvPr'); - $objWriter->writeAttribute('name', 'Chart '.$pRelationId); - $objWriter->writeAttribute('id', 1025 * $pRelationId); - $objWriter->endElement(); - $objWriter->startElement('xdr:cNvGraphicFramePr'); - $objWriter->startElement('a:graphicFrameLocks'); - $objWriter->endElement(); - $objWriter->endElement(); - $objWriter->endElement(); - - $objWriter->startElement('xdr:xfrm'); - $objWriter->startElement('a:off'); - $objWriter->writeAttribute('x', '0'); - $objWriter->writeAttribute('y', '0'); - $objWriter->endElement(); - $objWriter->startElement('a:ext'); - $objWriter->writeAttribute('cx', '0'); - $objWriter->writeAttribute('cy', '0'); - $objWriter->endElement(); - $objWriter->endElement(); - - $objWriter->startElement('a:graphic'); - $objWriter->startElement('a:graphicData'); - $objWriter->writeAttribute('uri', 'http://schemas.openxmlformats.org/drawingml/2006/chart'); - $objWriter->startElement('c:chart'); - $objWriter->writeAttribute('xmlns:c', 'http://schemas.openxmlformats.org/drawingml/2006/chart'); - $objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'); - $objWriter->writeAttribute('r:id', 'rId'.$pRelationId); - $objWriter->endElement(); - $objWriter->endElement(); - $objWriter->endElement(); - $objWriter->endElement(); - - $objWriter->startElement('xdr:clientData'); - $objWriter->endElement(); - - $objWriter->endElement(); - } - - /** - * Write drawings to XML format - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Worksheet_BaseDrawing $pDrawing - * @param int $pRelationId - * @throws PHPExcel_Writer_Exception - */ - public function writeDrawing(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet_BaseDrawing $pDrawing = null, $pRelationId = -1) - { - if ($pRelationId >= 0) { - // xdr:oneCellAnchor - $objWriter->startElement('xdr:oneCellAnchor'); - // Image location - $aCoordinates = PHPExcel_Cell::coordinateFromString($pDrawing->getCoordinates()); - $aCoordinates[0] = PHPExcel_Cell::columnIndexFromString($aCoordinates[0]); - - // xdr:from - $objWriter->startElement('xdr:from'); - $objWriter->writeElement('xdr:col', $aCoordinates[0] - 1); - $objWriter->writeElement('xdr:colOff', PHPExcel_Shared_Drawing::pixelsToEMU($pDrawing->getOffsetX())); - $objWriter->writeElement('xdr:row', $aCoordinates[1] - 1); - $objWriter->writeElement('xdr:rowOff', PHPExcel_Shared_Drawing::pixelsToEMU($pDrawing->getOffsetY())); - $objWriter->endElement(); - - // xdr:ext - $objWriter->startElement('xdr:ext'); - $objWriter->writeAttribute('cx', PHPExcel_Shared_Drawing::pixelsToEMU($pDrawing->getWidth())); - $objWriter->writeAttribute('cy', PHPExcel_Shared_Drawing::pixelsToEMU($pDrawing->getHeight())); - $objWriter->endElement(); - - // xdr:pic - $objWriter->startElement('xdr:pic'); - - // xdr:nvPicPr - $objWriter->startElement('xdr:nvPicPr'); - - // xdr:cNvPr - $objWriter->startElement('xdr:cNvPr'); - $objWriter->writeAttribute('id', $pRelationId); - $objWriter->writeAttribute('name', $pDrawing->getName()); - $objWriter->writeAttribute('descr', $pDrawing->getDescription()); - $objWriter->endElement(); - - // xdr:cNvPicPr - $objWriter->startElement('xdr:cNvPicPr'); - - // a:picLocks - $objWriter->startElement('a:picLocks'); - $objWriter->writeAttribute('noChangeAspect', '1'); - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - // xdr:blipFill - $objWriter->startElement('xdr:blipFill'); - - // a:blip - $objWriter->startElement('a:blip'); - $objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'); - $objWriter->writeAttribute('r:embed', 'rId' . $pRelationId); - $objWriter->endElement(); - - // a:stretch - $objWriter->startElement('a:stretch'); - $objWriter->writeElement('a:fillRect', null); - $objWriter->endElement(); - - $objWriter->endElement(); - - // xdr:spPr - $objWriter->startElement('xdr:spPr'); - - // a:xfrm - $objWriter->startElement('a:xfrm'); - $objWriter->writeAttribute('rot', PHPExcel_Shared_Drawing::degreesToAngle($pDrawing->getRotation())); - $objWriter->endElement(); - - // a:prstGeom - $objWriter->startElement('a:prstGeom'); - $objWriter->writeAttribute('prst', 'rect'); - - // a:avLst - $objWriter->writeElement('a:avLst', null); - - $objWriter->endElement(); - -// // a:solidFill -// $objWriter->startElement('a:solidFill'); - -// // a:srgbClr -// $objWriter->startElement('a:srgbClr'); -// $objWriter->writeAttribute('val', 'FFFFFF'); - -///* SHADE -// // a:shade -// $objWriter->startElement('a:shade'); -// $objWriter->writeAttribute('val', '85000'); -// $objWriter->endElement(); -//*/ - -// $objWriter->endElement(); - -// $objWriter->endElement(); -/* - // a:ln - $objWriter->startElement('a:ln'); - $objWriter->writeAttribute('w', '88900'); - $objWriter->writeAttribute('cap', 'sq'); - - // a:solidFill - $objWriter->startElement('a:solidFill'); - - // a:srgbClr - $objWriter->startElement('a:srgbClr'); - $objWriter->writeAttribute('val', 'FFFFFF'); - $objWriter->endElement(); - - $objWriter->endElement(); - - // a:miter - $objWriter->startElement('a:miter'); - $objWriter->writeAttribute('lim', '800000'); - $objWriter->endElement(); - - $objWriter->endElement(); -*/ - - if ($pDrawing->getShadow()->getVisible()) { - // a:effectLst - $objWriter->startElement('a:effectLst'); - - // a:outerShdw - $objWriter->startElement('a:outerShdw'); - $objWriter->writeAttribute('blurRad', PHPExcel_Shared_Drawing::pixelsToEMU($pDrawing->getShadow()->getBlurRadius())); - $objWriter->writeAttribute('dist', PHPExcel_Shared_Drawing::pixelsToEMU($pDrawing->getShadow()->getDistance())); - $objWriter->writeAttribute('dir', PHPExcel_Shared_Drawing::degreesToAngle($pDrawing->getShadow()->getDirection())); - $objWriter->writeAttribute('algn', $pDrawing->getShadow()->getAlignment()); - $objWriter->writeAttribute('rotWithShape', '0'); - - // a:srgbClr - $objWriter->startElement('a:srgbClr'); - $objWriter->writeAttribute('val', $pDrawing->getShadow()->getColor()->getRGB()); - - // a:alpha - $objWriter->startElement('a:alpha'); - $objWriter->writeAttribute('val', $pDrawing->getShadow()->getAlpha() * 1000); - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - } -/* - - // a:scene3d - $objWriter->startElement('a:scene3d'); - - // a:camera - $objWriter->startElement('a:camera'); - $objWriter->writeAttribute('prst', 'orthographicFront'); - $objWriter->endElement(); - - // a:lightRig - $objWriter->startElement('a:lightRig'); - $objWriter->writeAttribute('rig', 'twoPt'); - $objWriter->writeAttribute('dir', 't'); - - // a:rot - $objWriter->startElement('a:rot'); - $objWriter->writeAttribute('lat', '0'); - $objWriter->writeAttribute('lon', '0'); - $objWriter->writeAttribute('rev', '0'); - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); -*/ -/* - // a:sp3d - $objWriter->startElement('a:sp3d'); - - // a:bevelT - $objWriter->startElement('a:bevelT'); - $objWriter->writeAttribute('w', '25400'); - $objWriter->writeAttribute('h', '19050'); - $objWriter->endElement(); - - // a:contourClr - $objWriter->startElement('a:contourClr'); - - // a:srgbClr - $objWriter->startElement('a:srgbClr'); - $objWriter->writeAttribute('val', 'FFFFFF'); - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); -*/ - $objWriter->endElement(); - - $objWriter->endElement(); - - // xdr:clientData - $objWriter->writeElement('xdr:clientData', null); - - $objWriter->endElement(); - } else { - throw new PHPExcel_Writer_Exception("Invalid parameters passed."); - } - } - - /** - * Write VML header/footer images to XML format - * - * @param PHPExcel_Worksheet $pWorksheet - * @return string XML Output - * @throws PHPExcel_Writer_Exception - */ - public function writeVMLHeaderFooterImages(PHPExcel_Worksheet $pWorksheet = null) - { - // Create XML writer - $objWriter = null; - if ($this->getParentWriter()->getUseDiskCaching()) { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); - } else { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); - } - - // XML header - $objWriter->startDocument('1.0', 'UTF-8', 'yes'); - - // Header/footer images - $images = $pWorksheet->getHeaderFooter()->getImages(); - - // xml - $objWriter->startElement('xml'); - $objWriter->writeAttribute('xmlns:v', 'urn:schemas-microsoft-com:vml'); - $objWriter->writeAttribute('xmlns:o', 'urn:schemas-microsoft-com:office:office'); - $objWriter->writeAttribute('xmlns:x', 'urn:schemas-microsoft-com:office:excel'); - - // o:shapelayout - $objWriter->startElement('o:shapelayout'); - $objWriter->writeAttribute('v:ext', 'edit'); - - // o:idmap - $objWriter->startElement('o:idmap'); - $objWriter->writeAttribute('v:ext', 'edit'); - $objWriter->writeAttribute('data', '1'); - $objWriter->endElement(); - - $objWriter->endElement(); - - // v:shapetype - $objWriter->startElement('v:shapetype'); - $objWriter->writeAttribute('id', '_x0000_t75'); - $objWriter->writeAttribute('coordsize', '21600,21600'); - $objWriter->writeAttribute('o:spt', '75'); - $objWriter->writeAttribute('o:preferrelative', 't'); - $objWriter->writeAttribute('path', 'm@4@5l@4@11@9@11@9@5xe'); - $objWriter->writeAttribute('filled', 'f'); - $objWriter->writeAttribute('stroked', 'f'); - - // v:stroke - $objWriter->startElement('v:stroke'); - $objWriter->writeAttribute('joinstyle', 'miter'); - $objWriter->endElement(); - - // v:formulas - $objWriter->startElement('v:formulas'); - - // v:f - $objWriter->startElement('v:f'); - $objWriter->writeAttribute('eqn', 'if lineDrawn pixelLineWidth 0'); - $objWriter->endElement(); - - // v:f - $objWriter->startElement('v:f'); - $objWriter->writeAttribute('eqn', 'sum @0 1 0'); - $objWriter->endElement(); - - // v:f - $objWriter->startElement('v:f'); - $objWriter->writeAttribute('eqn', 'sum 0 0 @1'); - $objWriter->endElement(); - - // v:f - $objWriter->startElement('v:f'); - $objWriter->writeAttribute('eqn', 'prod @2 1 2'); - $objWriter->endElement(); - - // v:f - $objWriter->startElement('v:f'); - $objWriter->writeAttribute('eqn', 'prod @3 21600 pixelWidth'); - $objWriter->endElement(); - - // v:f - $objWriter->startElement('v:f'); - $objWriter->writeAttribute('eqn', 'prod @3 21600 pixelHeight'); - $objWriter->endElement(); - - // v:f - $objWriter->startElement('v:f'); - $objWriter->writeAttribute('eqn', 'sum @0 0 1'); - $objWriter->endElement(); - - // v:f - $objWriter->startElement('v:f'); - $objWriter->writeAttribute('eqn', 'prod @6 1 2'); - $objWriter->endElement(); - - // v:f - $objWriter->startElement('v:f'); - $objWriter->writeAttribute('eqn', 'prod @7 21600 pixelWidth'); - $objWriter->endElement(); - - // v:f - $objWriter->startElement('v:f'); - $objWriter->writeAttribute('eqn', 'sum @8 21600 0'); - $objWriter->endElement(); - - // v:f - $objWriter->startElement('v:f'); - $objWriter->writeAttribute('eqn', 'prod @7 21600 pixelHeight'); - $objWriter->endElement(); - - // v:f - $objWriter->startElement('v:f'); - $objWriter->writeAttribute('eqn', 'sum @10 21600 0'); - $objWriter->endElement(); - - $objWriter->endElement(); - - // v:path - $objWriter->startElement('v:path'); - $objWriter->writeAttribute('o:extrusionok', 'f'); - $objWriter->writeAttribute('gradientshapeok', 't'); - $objWriter->writeAttribute('o:connecttype', 'rect'); - $objWriter->endElement(); - - // o:lock - $objWriter->startElement('o:lock'); - $objWriter->writeAttribute('v:ext', 'edit'); - $objWriter->writeAttribute('aspectratio', 't'); - $objWriter->endElement(); - - $objWriter->endElement(); - - // Loop through images - foreach ($images as $key => $value) { - $this->writeVMLHeaderFooterImage($objWriter, $key, $value); - } - - $objWriter->endElement(); - - // Return - return $objWriter->getData(); - } - - /** - * Write VML comment to XML format - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param string $pReference Reference - * @param PHPExcel_Worksheet_HeaderFooterDrawing $pImage Image - * @throws PHPExcel_Writer_Exception - */ - private function writeVMLHeaderFooterImage(PHPExcel_Shared_XMLWriter $objWriter = null, $pReference = '', PHPExcel_Worksheet_HeaderFooterDrawing $pImage = null) - { - // Calculate object id - preg_match('{(\d+)}', md5($pReference), $m); - $id = 1500 + (substr($m[1], 0, 2) * 1); - - // Calculate offset - $width = $pImage->getWidth(); - $height = $pImage->getHeight(); - $marginLeft = $pImage->getOffsetX(); - $marginTop = $pImage->getOffsetY(); - - // v:shape - $objWriter->startElement('v:shape'); - $objWriter->writeAttribute('id', $pReference); - $objWriter->writeAttribute('o:spid', '_x0000_s' . $id); - $objWriter->writeAttribute('type', '#_x0000_t75'); - $objWriter->writeAttribute('style', "position:absolute;margin-left:{$marginLeft}px;margin-top:{$marginTop}px;width:{$width}px;height:{$height}px;z-index:1"); - - // v:imagedata - $objWriter->startElement('v:imagedata'); - $objWriter->writeAttribute('o:relid', 'rId' . $pReference); - $objWriter->writeAttribute('o:title', $pImage->getName()); - $objWriter->endElement(); - - // o:lock - $objWriter->startElement('o:lock'); - $objWriter->writeAttribute('v:ext', 'edit'); - $objWriter->writeAttribute('rotation', 't'); - $objWriter->endElement(); - - $objWriter->endElement(); - } - - - /** - * Get an array of all drawings - * - * @param PHPExcel $pPHPExcel - * @return PHPExcel_Worksheet_Drawing[] All drawings in PHPExcel - * @throws PHPExcel_Writer_Exception - */ - public function allDrawings(PHPExcel $pPHPExcel = null) - { - // Get an array of all drawings - $aDrawings = array(); - - // Loop through PHPExcel - $sheetCount = $pPHPExcel->getSheetCount(); - for ($i = 0; $i < $sheetCount; ++$i) { - // Loop through images and add to array - $iterator = $pPHPExcel->getSheet($i)->getDrawingCollection()->getIterator(); - while ($iterator->valid()) { - $aDrawings[] = $iterator->current(); - - $iterator->next(); - } - } - - return $aDrawings; - } -} diff --git a/application/third_party/PHPExcel/Writer/Excel2007/Rels.php b/application/third_party/PHPExcel/Writer/Excel2007/Rels.php deleted file mode 100644 index 14ff3371..00000000 --- a/application/third_party/PHPExcel/Writer/Excel2007/Rels.php +++ /dev/null @@ -1,424 +0,0 @@ -<?php - -/** - * PHPExcel_Writer_Excel2007_Rels - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_Excel2007 - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Writer_Excel2007_Rels extends PHPExcel_Writer_Excel2007_WriterPart -{ - /** - * Write relationships to XML format - * - * @param PHPExcel $pPHPExcel - * @return string XML Output - * @throws PHPExcel_Writer_Exception - */ - public function writeRelationships(PHPExcel $pPHPExcel = null) - { - // Create XML writer - $objWriter = null; - if ($this->getParentWriter()->getUseDiskCaching()) { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); - } else { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); - } - - // XML header - $objWriter->startDocument('1.0', 'UTF-8', 'yes'); - - // Relationships - $objWriter->startElement('Relationships'); - $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships'); - - $customPropertyList = $pPHPExcel->getProperties()->getCustomProperties(); - if (!empty($customPropertyList)) { - // Relationship docProps/app.xml - $this->writeRelationship( - $objWriter, - 4, - 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties', - 'docProps/custom.xml' - ); - - } - - // Relationship docProps/app.xml - $this->writeRelationship( - $objWriter, - 3, - 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties', - 'docProps/app.xml' - ); - - // Relationship docProps/core.xml - $this->writeRelationship( - $objWriter, - 2, - 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties', - 'docProps/core.xml' - ); - - // Relationship xl/workbook.xml - $this->writeRelationship( - $objWriter, - 1, - 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument', - 'xl/workbook.xml' - ); - // a custom UI in workbook ? - if ($pPHPExcel->hasRibbon()) { - $this->writeRelationShip( - $objWriter, - 5, - 'http://schemas.microsoft.com/office/2006/relationships/ui/extensibility', - $pPHPExcel->getRibbonXMLData('target') - ); - } - - $objWriter->endElement(); - - return $objWriter->getData(); - } - - /** - * Write workbook relationships to XML format - * - * @param PHPExcel $pPHPExcel - * @return string XML Output - * @throws PHPExcel_Writer_Exception - */ - public function writeWorkbookRelationships(PHPExcel $pPHPExcel = null) - { - // Create XML writer - $objWriter = null; - if ($this->getParentWriter()->getUseDiskCaching()) { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); - } else { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); - } - - // XML header - $objWriter->startDocument('1.0', 'UTF-8', 'yes'); - - // Relationships - $objWriter->startElement('Relationships'); - $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships'); - - // Relationship styles.xml - $this->writeRelationship( - $objWriter, - 1, - 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles', - 'styles.xml' - ); - - // Relationship theme/theme1.xml - $this->writeRelationship( - $objWriter, - 2, - 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme', - 'theme/theme1.xml' - ); - - // Relationship sharedStrings.xml - $this->writeRelationship( - $objWriter, - 3, - 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings', - 'sharedStrings.xml' - ); - - // Relationships with sheets - $sheetCount = $pPHPExcel->getSheetCount(); - for ($i = 0; $i < $sheetCount; ++$i) { - $this->writeRelationship( - $objWriter, - ($i + 1 + 3), - 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet', - 'worksheets/sheet' . ($i + 1) . '.xml' - ); - } - // Relationships for vbaProject if needed - // id : just after the last sheet - if ($pPHPExcel->hasMacros()) { - $this->writeRelationShip( - $objWriter, - ($i + 1 + 3), - 'http://schemas.microsoft.com/office/2006/relationships/vbaProject', - 'vbaProject.bin' - ); - ++$i;//increment i if needed for an another relation - } - - $objWriter->endElement(); - - return $objWriter->getData(); - } - - /** - * Write worksheet relationships to XML format - * - * Numbering is as follows: - * rId1 - Drawings - * rId_hyperlink_x - Hyperlinks - * - * @param PHPExcel_Worksheet $pWorksheet - * @param int $pWorksheetId - * @param boolean $includeCharts Flag indicating if we should write charts - * @return string XML Output - * @throws PHPExcel_Writer_Exception - */ - public function writeWorksheetRelationships(PHPExcel_Worksheet $pWorksheet = null, $pWorksheetId = 1, $includeCharts = false) - { - // Create XML writer - $objWriter = null; - if ($this->getParentWriter()->getUseDiskCaching()) { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); - } else { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); - } - - // XML header - $objWriter->startDocument('1.0', 'UTF-8', 'yes'); - - // Relationships - $objWriter->startElement('Relationships'); - $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships'); - - // Write drawing relationships? - $d = 0; - if ($includeCharts) { - $charts = $pWorksheet->getChartCollection(); - } else { - $charts = array(); - } - if (($pWorksheet->getDrawingCollection()->count() > 0) || - (count($charts) > 0)) { - $this->writeRelationship( - $objWriter, - ++$d, - 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing', - '../drawings/drawing' . $pWorksheetId . '.xml' - ); - } - - // Write chart relationships? -// $chartCount = 0; -// $charts = $pWorksheet->getChartCollection(); -// echo 'Chart Rels: ' , count($charts) , '<br />'; -// if (count($charts) > 0) { -// foreach ($charts as $chart) { -// $this->writeRelationship( -// $objWriter, -// ++$d, -// 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart', -// '../charts/chart' . ++$chartCount . '.xml' -// ); -// } -// } -// - // Write hyperlink relationships? - $i = 1; - foreach ($pWorksheet->getHyperlinkCollection() as $hyperlink) { - if (!$hyperlink->isInternal()) { - $this->writeRelationship( - $objWriter, - '_hyperlink_' . $i, - 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink', - $hyperlink->getUrl(), - 'External' - ); - - ++$i; - } - } - - // Write comments relationship? - $i = 1; - if (count($pWorksheet->getComments()) > 0) { - $this->writeRelationship( - $objWriter, - '_comments_vml' . $i, - 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing', - '../drawings/vmlDrawing' . $pWorksheetId . '.vml' - ); - - $this->writeRelationship( - $objWriter, - '_comments' . $i, - 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments', - '../comments' . $pWorksheetId . '.xml' - ); - } - - // Write header/footer relationship? - $i = 1; - if (count($pWorksheet->getHeaderFooter()->getImages()) > 0) { - $this->writeRelationship( - $objWriter, - '_headerfooter_vml' . $i, - 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing', - '../drawings/vmlDrawingHF' . $pWorksheetId . '.vml' - ); - } - - $objWriter->endElement(); - - return $objWriter->getData(); - } - - /** - * Write drawing relationships to XML format - * - * @param PHPExcel_Worksheet $pWorksheet - * @param int &$chartRef Chart ID - * @param boolean $includeCharts Flag indicating if we should write charts - * @return string XML Output - * @throws PHPExcel_Writer_Exception - */ - public function writeDrawingRelationships(PHPExcel_Worksheet $pWorksheet = null, &$chartRef, $includeCharts = false) - { - // Create XML writer - $objWriter = null; - if ($this->getParentWriter()->getUseDiskCaching()) { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); - } else { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); - } - - // XML header - $objWriter->startDocument('1.0', 'UTF-8', 'yes'); - - // Relationships - $objWriter->startElement('Relationships'); - $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships'); - - // Loop through images and write relationships - $i = 1; - $iterator = $pWorksheet->getDrawingCollection()->getIterator(); - while ($iterator->valid()) { - if ($iterator->current() instanceof PHPExcel_Worksheet_Drawing - || $iterator->current() instanceof PHPExcel_Worksheet_MemoryDrawing) { - // Write relationship for image drawing - $this->writeRelationship( - $objWriter, - $i, - 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image', - '../media/' . str_replace(' ', '', $iterator->current()->getIndexedFilename()) - ); - } - - $iterator->next(); - ++$i; - } - - if ($includeCharts) { - // Loop through charts and write relationships - $chartCount = $pWorksheet->getChartCount(); - if ($chartCount > 0) { - for ($c = 0; $c < $chartCount; ++$c) { - $this->writeRelationship( - $objWriter, - $i++, - 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart', - '../charts/chart' . ++$chartRef . '.xml' - ); - } - } - } - - $objWriter->endElement(); - - return $objWriter->getData(); - } - - /** - * Write header/footer drawing relationships to XML format - * - * @param PHPExcel_Worksheet $pWorksheet - * @return string XML Output - * @throws PHPExcel_Writer_Exception - */ - public function writeHeaderFooterDrawingRelationships(PHPExcel_Worksheet $pWorksheet = null) - { - // Create XML writer - $objWriter = null; - if ($this->getParentWriter()->getUseDiskCaching()) { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); - } else { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); - } - - // XML header - $objWriter->startDocument('1.0', 'UTF-8', 'yes'); - - // Relationships - $objWriter->startElement('Relationships'); - $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships'); - - // Loop through images and write relationships - foreach ($pWorksheet->getHeaderFooter()->getImages() as $key => $value) { - // Write relationship for image drawing - $this->writeRelationship( - $objWriter, - $key, - 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image', - '../media/' . $value->getIndexedFilename() - ); - } - - $objWriter->endElement(); - - return $objWriter->getData(); - } - - /** - * Write Override content type - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param int $pId Relationship ID. rId will be prepended! - * @param string $pType Relationship type - * @param string $pTarget Relationship target - * @param string $pTargetMode Relationship target mode - * @throws PHPExcel_Writer_Exception - */ - private function writeRelationship(PHPExcel_Shared_XMLWriter $objWriter = null, $pId = 1, $pType = '', $pTarget = '', $pTargetMode = '') - { - if ($pType != '' && $pTarget != '') { - // Write relationship - $objWriter->startElement('Relationship'); - $objWriter->writeAttribute('Id', 'rId' . $pId); - $objWriter->writeAttribute('Type', $pType); - $objWriter->writeAttribute('Target', $pTarget); - - if ($pTargetMode != '') { - $objWriter->writeAttribute('TargetMode', $pTargetMode); - } - - $objWriter->endElement(); - } else { - throw new PHPExcel_Writer_Exception("Invalid parameters passed."); - } - } -} diff --git a/application/third_party/PHPExcel/Writer/Excel2007/RelsRibbon.php b/application/third_party/PHPExcel/Writer/Excel2007/RelsRibbon.php deleted file mode 100644 index 5a4a9fc0..00000000 --- a/application/third_party/PHPExcel/Writer/Excel2007/RelsRibbon.php +++ /dev/null @@ -1,67 +0,0 @@ -<?php - -/** - * PHPExcel_Writer_Excel2007_RelsRibbon - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_Excel2007 - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Writer_Excel2007_RelsRibbon extends PHPExcel_Writer_Excel2007_WriterPart -{ - /** - * Write relationships for additional objects of custom UI (ribbon) - * - * @param PHPExcel $pPHPExcel - * @return string XML Output - * @throws PHPExcel_Writer_Exception - */ - public function writeRibbonRelationships(PHPExcel $pPHPExcel = null) - { - // Create XML writer - $objWriter = null; - if ($this->getParentWriter()->getUseDiskCaching()) { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); - } else { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); - } - - // XML header - $objWriter->startDocument('1.0', 'UTF-8', 'yes'); - - // Relationships - $objWriter->startElement('Relationships'); - $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships'); - $localRels = $pPHPExcel->getRibbonBinObjects('names'); - if (is_array($localRels)) { - foreach ($localRels as $aId => $aTarget) { - $objWriter->startElement('Relationship'); - $objWriter->writeAttribute('Id', $aId); - $objWriter->writeAttribute('Type', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image'); - $objWriter->writeAttribute('Target', $aTarget); - $objWriter->endElement(); - } - } - $objWriter->endElement(); - - return $objWriter->getData(); - } -} diff --git a/application/third_party/PHPExcel/Writer/Excel2007/RelsVBA.php b/application/third_party/PHPExcel/Writer/Excel2007/RelsVBA.php deleted file mode 100644 index bee0e643..00000000 --- a/application/third_party/PHPExcel/Writer/Excel2007/RelsVBA.php +++ /dev/null @@ -1,63 +0,0 @@ -<?php - -/** - * PHPExcel_Writer_Excel2007_RelsVBA - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_Excel2007 - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Writer_Excel2007_RelsVBA extends PHPExcel_Writer_Excel2007_WriterPart -{ - /** - * Write relationships for a signed VBA Project - * - * @param PHPExcel $pPHPExcel - * @return string XML Output - * @throws PHPExcel_Writer_Exception - */ - public function writeVBARelationships(PHPExcel $pPHPExcel = null) - { - // Create XML writer - $objWriter = null; - if ($this->getParentWriter()->getUseDiskCaching()) { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); - } else { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); - } - - // XML header - $objWriter->startDocument('1.0', 'UTF-8', 'yes'); - - // Relationships - $objWriter->startElement('Relationships'); - $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships'); - $objWriter->startElement('Relationship'); - $objWriter->writeAttribute('Id', 'rId1'); - $objWriter->writeAttribute('Type', 'http://schemas.microsoft.com/office/2006/relationships/vbaProjectSignature'); - $objWriter->writeAttribute('Target', 'vbaProjectSignature.bin'); - $objWriter->endElement(); - $objWriter->endElement(); - - return $objWriter->getData(); - - } -} diff --git a/application/third_party/PHPExcel/Writer/Excel2007/StringTable.php b/application/third_party/PHPExcel/Writer/Excel2007/StringTable.php deleted file mode 100644 index fccec669..00000000 --- a/application/third_party/PHPExcel/Writer/Excel2007/StringTable.php +++ /dev/null @@ -1,313 +0,0 @@ -<?php - -/** - * PHPExcel_Writer_Excel2007_StringTable - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_Excel2007 - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Writer_Excel2007_StringTable extends PHPExcel_Writer_Excel2007_WriterPart -{ - /** - * Create worksheet stringtable - * - * @param PHPExcel_Worksheet $pSheet Worksheet - * @param string[] $pExistingTable Existing table to eventually merge with - * @return string[] String table for worksheet - * @throws PHPExcel_Writer_Exception - */ - public function createStringTable($pSheet = null, $pExistingTable = null) - { - if ($pSheet !== null) { - // Create string lookup table - $aStringTable = array(); - $cellCollection = null; - $aFlippedStringTable = null; // For faster lookup - - // Is an existing table given? - if (($pExistingTable !== null) && is_array($pExistingTable)) { - $aStringTable = $pExistingTable; - } - - // Fill index array - $aFlippedStringTable = $this->flipStringTable($aStringTable); - - // Loop through cells - foreach ($pSheet->getCellCollection() as $cellID) { - $cell = $pSheet->getCell($cellID); - $cellValue = $cell->getValue(); - if (!is_object($cellValue) && - ($cellValue !== null) && - $cellValue !== '' && - !isset($aFlippedStringTable[$cellValue]) && - ($cell->getDataType() == PHPExcel_Cell_DataType::TYPE_STRING || $cell->getDataType() == PHPExcel_Cell_DataType::TYPE_STRING2 || $cell->getDataType() == PHPExcel_Cell_DataType::TYPE_NULL)) { - $aStringTable[] = $cellValue; - $aFlippedStringTable[$cellValue] = true; - } elseif ($cellValue instanceof PHPExcel_RichText && - ($cellValue !== null) && - !isset($aFlippedStringTable[$cellValue->getHashCode()])) { - $aStringTable[] = $cellValue; - $aFlippedStringTable[$cellValue->getHashCode()] = true; - } - } - - return $aStringTable; - } else { - throw new PHPExcel_Writer_Exception("Invalid PHPExcel_Worksheet object passed."); - } - } - - /** - * Write string table to XML format - * - * @param string[] $pStringTable - * @return string XML Output - * @throws PHPExcel_Writer_Exception - */ - public function writeStringTable($pStringTable = null) - { - if ($pStringTable !== null) { - // Create XML writer - $objWriter = null; - if ($this->getParentWriter()->getUseDiskCaching()) { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); - } else { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); - } - - // XML header - $objWriter->startDocument('1.0', 'UTF-8', 'yes'); - - // String table - $objWriter->startElement('sst'); - $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'); - $objWriter->writeAttribute('uniqueCount', count($pStringTable)); - - // Loop through string table - foreach ($pStringTable as $textElement) { - $objWriter->startElement('si'); - - if (! $textElement instanceof PHPExcel_RichText) { - $textToWrite = PHPExcel_Shared_String::ControlCharacterPHP2OOXML($textElement); - $objWriter->startElement('t'); - if ($textToWrite !== trim($textToWrite)) { - $objWriter->writeAttribute('xml:space', 'preserve'); - } - $objWriter->writeRawData($textToWrite); - $objWriter->endElement(); - } elseif ($textElement instanceof PHPExcel_RichText) { - $this->writeRichText($objWriter, $textElement); - } - - $objWriter->endElement(); - } - - $objWriter->endElement(); - - return $objWriter->getData(); - } else { - throw new PHPExcel_Writer_Exception("Invalid string table array passed."); - } - } - - /** - * Write Rich Text - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_RichText $pRichText Rich text - * @param string $prefix Optional Namespace prefix - * @throws PHPExcel_Writer_Exception - */ - public function writeRichText(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_RichText $pRichText = null, $prefix = null) - { - if ($prefix !== null) { - $prefix .= ':'; - } - - // Loop through rich text elements - $elements = $pRichText->getRichTextElements(); - foreach ($elements as $element) { - // r - $objWriter->startElement($prefix.'r'); - - // rPr - if ($element instanceof PHPExcel_RichText_Run) { - // rPr - $objWriter->startElement($prefix.'rPr'); - - // rFont - $objWriter->startElement($prefix.'rFont'); - $objWriter->writeAttribute('val', $element->getFont()->getName()); - $objWriter->endElement(); - - // Bold - $objWriter->startElement($prefix.'b'); - $objWriter->writeAttribute('val', ($element->getFont()->getBold() ? 'true' : 'false')); - $objWriter->endElement(); - - // Italic - $objWriter->startElement($prefix.'i'); - $objWriter->writeAttribute('val', ($element->getFont()->getItalic() ? 'true' : 'false')); - $objWriter->endElement(); - - // Superscript / subscript - if ($element->getFont()->getSuperScript() || $element->getFont()->getSubScript()) { - $objWriter->startElement($prefix.'vertAlign'); - if ($element->getFont()->getSuperScript()) { - $objWriter->writeAttribute('val', 'superscript'); - } elseif ($element->getFont()->getSubScript()) { - $objWriter->writeAttribute('val', 'subscript'); - } - $objWriter->endElement(); - } - - // Strikethrough - $objWriter->startElement($prefix.'strike'); - $objWriter->writeAttribute('val', ($element->getFont()->getStrikethrough() ? 'true' : 'false')); - $objWriter->endElement(); - - // Color - $objWriter->startElement($prefix.'color'); - $objWriter->writeAttribute('rgb', $element->getFont()->getColor()->getARGB()); - $objWriter->endElement(); - - // Size - $objWriter->startElement($prefix.'sz'); - $objWriter->writeAttribute('val', $element->getFont()->getSize()); - $objWriter->endElement(); - - // Underline - $objWriter->startElement($prefix.'u'); - $objWriter->writeAttribute('val', $element->getFont()->getUnderline()); - $objWriter->endElement(); - - $objWriter->endElement(); - } - - // t - $objWriter->startElement($prefix.'t'); - $objWriter->writeAttribute('xml:space', 'preserve'); - $objWriter->writeRawData(PHPExcel_Shared_String::ControlCharacterPHP2OOXML($element->getText())); - $objWriter->endElement(); - - $objWriter->endElement(); - } - } - - /** - * Write Rich Text - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param string|PHPExcel_RichText $pRichText text string or Rich text - * @param string $prefix Optional Namespace prefix - * @throws PHPExcel_Writer_Exception - */ - public function writeRichTextForCharts(PHPExcel_Shared_XMLWriter $objWriter = null, $pRichText = null, $prefix = null) - { - if (!$pRichText instanceof PHPExcel_RichText) { - $textRun = $pRichText; - $pRichText = new PHPExcel_RichText(); - $pRichText->createTextRun($textRun); - } - - if ($prefix !== null) { - $prefix .= ':'; - } - - // Loop through rich text elements - $elements = $pRichText->getRichTextElements(); - foreach ($elements as $element) { - // r - $objWriter->startElement($prefix.'r'); - - // rPr - $objWriter->startElement($prefix.'rPr'); - - // Bold - $objWriter->writeAttribute('b', ($element->getFont()->getBold() ? 1 : 0)); - // Italic - $objWriter->writeAttribute('i', ($element->getFont()->getItalic() ? 1 : 0)); - // Underline - $underlineType = $element->getFont()->getUnderline(); - switch ($underlineType) { - case 'single': - $underlineType = 'sng'; - break; - case 'double': - $underlineType = 'dbl'; - break; - } - $objWriter->writeAttribute('u', $underlineType); - // Strikethrough - $objWriter->writeAttribute('strike', ($element->getFont()->getStrikethrough() ? 'sngStrike' : 'noStrike')); - - // rFont - $objWriter->startElement($prefix.'latin'); - $objWriter->writeAttribute('typeface', $element->getFont()->getName()); - $objWriter->endElement(); - - // Superscript / subscript -// if ($element->getFont()->getSuperScript() || $element->getFont()->getSubScript()) { -// $objWriter->startElement($prefix.'vertAlign'); -// if ($element->getFont()->getSuperScript()) { -// $objWriter->writeAttribute('val', 'superscript'); -// } elseif ($element->getFont()->getSubScript()) { -// $objWriter->writeAttribute('val', 'subscript'); -// } -// $objWriter->endElement(); -// } -// - $objWriter->endElement(); - - // t - $objWriter->startElement($prefix.'t'); -// $objWriter->writeAttribute('xml:space', 'preserve'); // Excel2010 accepts, Excel2007 complains - $objWriter->writeRawData(PHPExcel_Shared_String::ControlCharacterPHP2OOXML($element->getText())); - $objWriter->endElement(); - - $objWriter->endElement(); - } - } - - /** - * Flip string table (for index searching) - * - * @param array $stringTable Stringtable - * @return array - */ - public function flipStringTable($stringTable = array()) - { - // Return value - $returnValue = array(); - - // Loop through stringtable and add flipped items to $returnValue - foreach ($stringTable as $key => $value) { - if (! $value instanceof PHPExcel_RichText) { - $returnValue[$value] = $key; - } elseif ($value instanceof PHPExcel_RichText) { - $returnValue[$value->getHashCode()] = $key; - } - } - - return $returnValue; - } -} diff --git a/application/third_party/PHPExcel/Writer/Excel2007/Style.php b/application/third_party/PHPExcel/Writer/Excel2007/Style.php deleted file mode 100644 index d3f0af7b..00000000 --- a/application/third_party/PHPExcel/Writer/Excel2007/Style.php +++ /dev/null @@ -1,696 +0,0 @@ -<?php - -/** - * PHPExcel_Writer_Excel2007_Style - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_Excel2007 - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Writer_Excel2007_Style extends PHPExcel_Writer_Excel2007_WriterPart -{ - /** - * Write styles to XML format - * - * @param PHPExcel $pPHPExcel - * @return string XML Output - * @throws PHPExcel_Writer_Exception - */ - public function writeStyles(PHPExcel $pPHPExcel = null) - { - // Create XML writer - $objWriter = null; - if ($this->getParentWriter()->getUseDiskCaching()) { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); - } else { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); - } - - // XML header - $objWriter->startDocument('1.0', 'UTF-8', 'yes'); - - // styleSheet - $objWriter->startElement('styleSheet'); - $objWriter->writeAttribute('xml:space', 'preserve'); - $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'); - - // numFmts - $objWriter->startElement('numFmts'); - $objWriter->writeAttribute('count', $this->getParentWriter()->getNumFmtHashTable()->count()); - - // numFmt - for ($i = 0; $i < $this->getParentWriter()->getNumFmtHashTable()->count(); ++$i) { - $this->writeNumFmt($objWriter, $this->getParentWriter()->getNumFmtHashTable()->getByIndex($i), $i); - } - - $objWriter->endElement(); - - // fonts - $objWriter->startElement('fonts'); - $objWriter->writeAttribute('count', $this->getParentWriter()->getFontHashTable()->count()); - - // font - for ($i = 0; $i < $this->getParentWriter()->getFontHashTable()->count(); ++$i) { - $this->writeFont($objWriter, $this->getParentWriter()->getFontHashTable()->getByIndex($i)); - } - - $objWriter->endElement(); - - // fills - $objWriter->startElement('fills'); - $objWriter->writeAttribute('count', $this->getParentWriter()->getFillHashTable()->count()); - - // fill - for ($i = 0; $i < $this->getParentWriter()->getFillHashTable()->count(); ++$i) { - $this->writeFill($objWriter, $this->getParentWriter()->getFillHashTable()->getByIndex($i)); - } - - $objWriter->endElement(); - - // borders - $objWriter->startElement('borders'); - $objWriter->writeAttribute('count', $this->getParentWriter()->getBordersHashTable()->count()); - - // border - for ($i = 0; $i < $this->getParentWriter()->getBordersHashTable()->count(); ++$i) { - $this->writeBorder($objWriter, $this->getParentWriter()->getBordersHashTable()->getByIndex($i)); - } - - $objWriter->endElement(); - - // cellStyleXfs - $objWriter->startElement('cellStyleXfs'); - $objWriter->writeAttribute('count', 1); - - // xf - $objWriter->startElement('xf'); - $objWriter->writeAttribute('numFmtId', 0); - $objWriter->writeAttribute('fontId', 0); - $objWriter->writeAttribute('fillId', 0); - $objWriter->writeAttribute('borderId', 0); - $objWriter->endElement(); - - $objWriter->endElement(); - - // cellXfs - $objWriter->startElement('cellXfs'); - $objWriter->writeAttribute('count', count($pPHPExcel->getCellXfCollection())); - - // xf - foreach ($pPHPExcel->getCellXfCollection() as $cellXf) { - $this->writeCellStyleXf($objWriter, $cellXf, $pPHPExcel); - } - - $objWriter->endElement(); - - // cellStyles - $objWriter->startElement('cellStyles'); - $objWriter->writeAttribute('count', 1); - - // cellStyle - $objWriter->startElement('cellStyle'); - $objWriter->writeAttribute('name', 'Normal'); - $objWriter->writeAttribute('xfId', 0); - $objWriter->writeAttribute('builtinId', 0); - $objWriter->endElement(); - - $objWriter->endElement(); - - // dxfs - $objWriter->startElement('dxfs'); - $objWriter->writeAttribute('count', $this->getParentWriter()->getStylesConditionalHashTable()->count()); - - // dxf - for ($i = 0; $i < $this->getParentWriter()->getStylesConditionalHashTable()->count(); ++$i) { - $this->writeCellStyleDxf($objWriter, $this->getParentWriter()->getStylesConditionalHashTable()->getByIndex($i)->getStyle()); - } - - $objWriter->endElement(); - - // tableStyles - $objWriter->startElement('tableStyles'); - $objWriter->writeAttribute('defaultTableStyle', 'TableStyleMedium9'); - $objWriter->writeAttribute('defaultPivotStyle', 'PivotTableStyle1'); - $objWriter->endElement(); - - $objWriter->endElement(); - - // Return - return $objWriter->getData(); - } - - /** - * Write Fill - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Style_Fill $pFill Fill style - * @throws PHPExcel_Writer_Exception - */ - private function writeFill(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style_Fill $pFill = null) - { - // Check if this is a pattern type or gradient type - if ($pFill->getFillType() === PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR || - $pFill->getFillType() === PHPExcel_Style_Fill::FILL_GRADIENT_PATH) { - // Gradient fill - $this->writeGradientFill($objWriter, $pFill); - } elseif ($pFill->getFillType() !== null) { - // Pattern fill - $this->writePatternFill($objWriter, $pFill); - } - } - - /** - * Write Gradient Fill - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Style_Fill $pFill Fill style - * @throws PHPExcel_Writer_Exception - */ - private function writeGradientFill(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style_Fill $pFill = null) - { - // fill - $objWriter->startElement('fill'); - - // gradientFill - $objWriter->startElement('gradientFill'); - $objWriter->writeAttribute('type', $pFill->getFillType()); - $objWriter->writeAttribute('degree', $pFill->getRotation()); - - // stop - $objWriter->startElement('stop'); - $objWriter->writeAttribute('position', '0'); - - // color - $objWriter->startElement('color'); - $objWriter->writeAttribute('rgb', $pFill->getStartColor()->getARGB()); - $objWriter->endElement(); - - $objWriter->endElement(); - - // stop - $objWriter->startElement('stop'); - $objWriter->writeAttribute('position', '1'); - - // color - $objWriter->startElement('color'); - $objWriter->writeAttribute('rgb', $pFill->getEndColor()->getARGB()); - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - } - - /** - * Write Pattern Fill - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Style_Fill $pFill Fill style - * @throws PHPExcel_Writer_Exception - */ - private function writePatternFill(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style_Fill $pFill = null) - { - // fill - $objWriter->startElement('fill'); - - // patternFill - $objWriter->startElement('patternFill'); - $objWriter->writeAttribute('patternType', $pFill->getFillType()); - - if ($pFill->getFillType() !== PHPExcel_Style_Fill::FILL_NONE) { - // fgColor - if ($pFill->getStartColor()->getARGB()) { - $objWriter->startElement('fgColor'); - $objWriter->writeAttribute('rgb', $pFill->getStartColor()->getARGB()); - $objWriter->endElement(); - } - } - if ($pFill->getFillType() !== PHPExcel_Style_Fill::FILL_NONE) { - // bgColor - if ($pFill->getEndColor()->getARGB()) { - $objWriter->startElement('bgColor'); - $objWriter->writeAttribute('rgb', $pFill->getEndColor()->getARGB()); - $objWriter->endElement(); - } - } - - $objWriter->endElement(); - - $objWriter->endElement(); - } - - /** - * Write Font - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Style_Font $pFont Font style - * @throws PHPExcel_Writer_Exception - */ - private function writeFont(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style_Font $pFont = null) - { - // font - $objWriter->startElement('font'); - // Weird! The order of these elements actually makes a difference when opening Excel2007 - // files in Excel2003 with the compatibility pack. It's not documented behaviour, - // and makes for a real WTF! - - // Bold. We explicitly write this element also when false (like MS Office Excel 2007 does - // for conditional formatting). Otherwise it will apparently not be picked up in conditional - // formatting style dialog - if ($pFont->getBold() !== null) { - $objWriter->startElement('b'); - $objWriter->writeAttribute('val', $pFont->getBold() ? '1' : '0'); - $objWriter->endElement(); - } - - // Italic - if ($pFont->getItalic() !== null) { - $objWriter->startElement('i'); - $objWriter->writeAttribute('val', $pFont->getItalic() ? '1' : '0'); - $objWriter->endElement(); - } - - // Strikethrough - if ($pFont->getStrikethrough() !== null) { - $objWriter->startElement('strike'); - $objWriter->writeAttribute('val', $pFont->getStrikethrough() ? '1' : '0'); - $objWriter->endElement(); - } - - // Underline - if ($pFont->getUnderline() !== null) { - $objWriter->startElement('u'); - $objWriter->writeAttribute('val', $pFont->getUnderline()); - $objWriter->endElement(); - } - - // Superscript / subscript - if ($pFont->getSuperScript() === true || $pFont->getSubScript() === true) { - $objWriter->startElement('vertAlign'); - if ($pFont->getSuperScript() === true) { - $objWriter->writeAttribute('val', 'superscript'); - } elseif ($pFont->getSubScript() === true) { - $objWriter->writeAttribute('val', 'subscript'); - } - $objWriter->endElement(); - } - - // Size - if ($pFont->getSize() !== null) { - $objWriter->startElement('sz'); - $objWriter->writeAttribute('val', $pFont->getSize()); - $objWriter->endElement(); - } - - // Foreground color - if ($pFont->getColor()->getARGB() !== null) { - $objWriter->startElement('color'); - $objWriter->writeAttribute('rgb', $pFont->getColor()->getARGB()); - $objWriter->endElement(); - } - - // Name - if ($pFont->getName() !== null) { - $objWriter->startElement('name'); - $objWriter->writeAttribute('val', $pFont->getName()); - $objWriter->endElement(); - } - - $objWriter->endElement(); - } - - /** - * Write Border - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Style_Borders $pBorders Borders style - * @throws PHPExcel_Writer_Exception - */ - private function writeBorder(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style_Borders $pBorders = null) - { - // Write border - $objWriter->startElement('border'); - // Diagonal? - switch ($pBorders->getDiagonalDirection()) { - case PHPExcel_Style_Borders::DIAGONAL_UP: - $objWriter->writeAttribute('diagonalUp', 'true'); - $objWriter->writeAttribute('diagonalDown', 'false'); - break; - case PHPExcel_Style_Borders::DIAGONAL_DOWN: - $objWriter->writeAttribute('diagonalUp', 'false'); - $objWriter->writeAttribute('diagonalDown', 'true'); - break; - case PHPExcel_Style_Borders::DIAGONAL_BOTH: - $objWriter->writeAttribute('diagonalUp', 'true'); - $objWriter->writeAttribute('diagonalDown', 'true'); - break; - } - - // BorderPr - $this->writeBorderPr($objWriter, 'left', $pBorders->getLeft()); - $this->writeBorderPr($objWriter, 'right', $pBorders->getRight()); - $this->writeBorderPr($objWriter, 'top', $pBorders->getTop()); - $this->writeBorderPr($objWriter, 'bottom', $pBorders->getBottom()); - $this->writeBorderPr($objWriter, 'diagonal', $pBorders->getDiagonal()); - $objWriter->endElement(); - } - - /** - * Write Cell Style Xf - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Style $pStyle Style - * @param PHPExcel $pPHPExcel Workbook - * @throws PHPExcel_Writer_Exception - */ - private function writeCellStyleXf(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style $pStyle = null, PHPExcel $pPHPExcel = null) - { - // xf - $objWriter->startElement('xf'); - $objWriter->writeAttribute('xfId', 0); - $objWriter->writeAttribute('fontId', (int)$this->getParentWriter()->getFontHashTable()->getIndexForHashCode($pStyle->getFont()->getHashCode())); - if ($pStyle->getQuotePrefix()) { - $objWriter->writeAttribute('quotePrefix', 1); - } - - if ($pStyle->getNumberFormat()->getBuiltInFormatCode() === false) { - $objWriter->writeAttribute('numFmtId', (int)($this->getParentWriter()->getNumFmtHashTable()->getIndexForHashCode($pStyle->getNumberFormat()->getHashCode()) + 164)); - } else { - $objWriter->writeAttribute('numFmtId', (int)$pStyle->getNumberFormat()->getBuiltInFormatCode()); - } - - $objWriter->writeAttribute('fillId', (int)$this->getParentWriter()->getFillHashTable()->getIndexForHashCode($pStyle->getFill()->getHashCode())); - $objWriter->writeAttribute('borderId', (int)$this->getParentWriter()->getBordersHashTable()->getIndexForHashCode($pStyle->getBorders()->getHashCode())); - - // Apply styles? - $objWriter->writeAttribute('applyFont', ($pPHPExcel->getDefaultStyle()->getFont()->getHashCode() != $pStyle->getFont()->getHashCode()) ? '1' : '0'); - $objWriter->writeAttribute('applyNumberFormat', ($pPHPExcel->getDefaultStyle()->getNumberFormat()->getHashCode() != $pStyle->getNumberFormat()->getHashCode()) ? '1' : '0'); - $objWriter->writeAttribute('applyFill', ($pPHPExcel->getDefaultStyle()->getFill()->getHashCode() != $pStyle->getFill()->getHashCode()) ? '1' : '0'); - $objWriter->writeAttribute('applyBorder', ($pPHPExcel->getDefaultStyle()->getBorders()->getHashCode() != $pStyle->getBorders()->getHashCode()) ? '1' : '0'); - $objWriter->writeAttribute('applyAlignment', ($pPHPExcel->getDefaultStyle()->getAlignment()->getHashCode() != $pStyle->getAlignment()->getHashCode()) ? '1' : '0'); - if ($pStyle->getProtection()->getLocked() != PHPExcel_Style_Protection::PROTECTION_INHERIT || $pStyle->getProtection()->getHidden() != PHPExcel_Style_Protection::PROTECTION_INHERIT) { - $objWriter->writeAttribute('applyProtection', 'true'); - } - - // alignment - $objWriter->startElement('alignment'); - $objWriter->writeAttribute('horizontal', $pStyle->getAlignment()->getHorizontal()); - $objWriter->writeAttribute('vertical', $pStyle->getAlignment()->getVertical()); - - $textRotation = 0; - if ($pStyle->getAlignment()->getTextRotation() >= 0) { - $textRotation = $pStyle->getAlignment()->getTextRotation(); - } elseif ($pStyle->getAlignment()->getTextRotation() < 0) { - $textRotation = 90 - $pStyle->getAlignment()->getTextRotation(); - } - $objWriter->writeAttribute('textRotation', $textRotation); - - $objWriter->writeAttribute('wrapText', ($pStyle->getAlignment()->getWrapText() ? 'true' : 'false')); - $objWriter->writeAttribute('shrinkToFit', ($pStyle->getAlignment()->getShrinkToFit() ? 'true' : 'false')); - - if ($pStyle->getAlignment()->getIndent() > 0) { - $objWriter->writeAttribute('indent', $pStyle->getAlignment()->getIndent()); - } - if ($pStyle->getAlignment()->getReadorder() > 0) { - $objWriter->writeAttribute('readingOrder', $pStyle->getAlignment()->getReadorder()); - } - $objWriter->endElement(); - - // protection - if ($pStyle->getProtection()->getLocked() != PHPExcel_Style_Protection::PROTECTION_INHERIT || $pStyle->getProtection()->getHidden() != PHPExcel_Style_Protection::PROTECTION_INHERIT) { - $objWriter->startElement('protection'); - if ($pStyle->getProtection()->getLocked() != PHPExcel_Style_Protection::PROTECTION_INHERIT) { - $objWriter->writeAttribute('locked', ($pStyle->getProtection()->getLocked() == PHPExcel_Style_Protection::PROTECTION_PROTECTED ? 'true' : 'false')); - } - if ($pStyle->getProtection()->getHidden() != PHPExcel_Style_Protection::PROTECTION_INHERIT) { - $objWriter->writeAttribute('hidden', ($pStyle->getProtection()->getHidden() == PHPExcel_Style_Protection::PROTECTION_PROTECTED ? 'true' : 'false')); - } - $objWriter->endElement(); - } - - $objWriter->endElement(); - } - - /** - * Write Cell Style Dxf - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Style $pStyle Style - * @throws PHPExcel_Writer_Exception - */ - private function writeCellStyleDxf(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style $pStyle = null) - { - // dxf - $objWriter->startElement('dxf'); - - // font - $this->writeFont($objWriter, $pStyle->getFont()); - - // numFmt - $this->writeNumFmt($objWriter, $pStyle->getNumberFormat()); - - // fill - $this->writeFill($objWriter, $pStyle->getFill()); - - // alignment - $objWriter->startElement('alignment'); - if ($pStyle->getAlignment()->getHorizontal() !== null) { - $objWriter->writeAttribute('horizontal', $pStyle->getAlignment()->getHorizontal()); - } - if ($pStyle->getAlignment()->getVertical() !== null) { - $objWriter->writeAttribute('vertical', $pStyle->getAlignment()->getVertical()); - } - - if ($pStyle->getAlignment()->getTextRotation() !== null) { - $textRotation = 0; - if ($pStyle->getAlignment()->getTextRotation() >= 0) { - $textRotation = $pStyle->getAlignment()->getTextRotation(); - } elseif ($pStyle->getAlignment()->getTextRotation() < 0) { - $textRotation = 90 - $pStyle->getAlignment()->getTextRotation(); - } - $objWriter->writeAttribute('textRotation', $textRotation); - } - $objWriter->endElement(); - - // border - $this->writeBorder($objWriter, $pStyle->getBorders()); - - // protection - if (($pStyle->getProtection()->getLocked() !== null) || ($pStyle->getProtection()->getHidden() !== null)) { - if ($pStyle->getProtection()->getLocked() !== PHPExcel_Style_Protection::PROTECTION_INHERIT || - $pStyle->getProtection()->getHidden() !== PHPExcel_Style_Protection::PROTECTION_INHERIT) { - $objWriter->startElement('protection'); - if (($pStyle->getProtection()->getLocked() !== null) && - ($pStyle->getProtection()->getLocked() !== PHPExcel_Style_Protection::PROTECTION_INHERIT)) { - $objWriter->writeAttribute('locked', ($pStyle->getProtection()->getLocked() == PHPExcel_Style_Protection::PROTECTION_PROTECTED ? 'true' : 'false')); - } - if (($pStyle->getProtection()->getHidden() !== null) && - ($pStyle->getProtection()->getHidden() !== PHPExcel_Style_Protection::PROTECTION_INHERIT)) { - $objWriter->writeAttribute('hidden', ($pStyle->getProtection()->getHidden() == PHPExcel_Style_Protection::PROTECTION_PROTECTED ? 'true' : 'false')); - } - $objWriter->endElement(); - } - } - - $objWriter->endElement(); - } - - /** - * Write BorderPr - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param string $pName Element name - * @param PHPExcel_Style_Border $pBorder Border style - * @throws PHPExcel_Writer_Exception - */ - private function writeBorderPr(PHPExcel_Shared_XMLWriter $objWriter = null, $pName = 'left', PHPExcel_Style_Border $pBorder = null) - { - // Write BorderPr - if ($pBorder->getBorderStyle() != PHPExcel_Style_Border::BORDER_NONE) { - $objWriter->startElement($pName); - $objWriter->writeAttribute('style', $pBorder->getBorderStyle()); - - // color - $objWriter->startElement('color'); - $objWriter->writeAttribute('rgb', $pBorder->getColor()->getARGB()); - $objWriter->endElement(); - - $objWriter->endElement(); - } - } - - /** - * Write NumberFormat - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Style_NumberFormat $pNumberFormat Number Format - * @param int $pId Number Format identifier - * @throws PHPExcel_Writer_Exception - */ - private function writeNumFmt(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style_NumberFormat $pNumberFormat = null, $pId = 0) - { - // Translate formatcode - $formatCode = $pNumberFormat->getFormatCode(); - - // numFmt - if ($formatCode !== null) { - $objWriter->startElement('numFmt'); - $objWriter->writeAttribute('numFmtId', ($pId + 164)); - $objWriter->writeAttribute('formatCode', $formatCode); - $objWriter->endElement(); - } - } - - /** - * Get an array of all styles - * - * @param PHPExcel $pPHPExcel - * @return PHPExcel_Style[] All styles in PHPExcel - * @throws PHPExcel_Writer_Exception - */ - public function allStyles(PHPExcel $pPHPExcel = null) - { - return $pPHPExcel->getCellXfCollection(); - } - - /** - * Get an array of all conditional styles - * - * @param PHPExcel $pPHPExcel - * @return PHPExcel_Style_Conditional[] All conditional styles in PHPExcel - * @throws PHPExcel_Writer_Exception - */ - public function allConditionalStyles(PHPExcel $pPHPExcel = null) - { - // Get an array of all styles - $aStyles = array(); - - $sheetCount = $pPHPExcel->getSheetCount(); - for ($i = 0; $i < $sheetCount; ++$i) { - foreach ($pPHPExcel->getSheet($i)->getConditionalStylesCollection() as $conditionalStyles) { - foreach ($conditionalStyles as $conditionalStyle) { - $aStyles[] = $conditionalStyle; - } - } - } - - return $aStyles; - } - - /** - * Get an array of all fills - * - * @param PHPExcel $pPHPExcel - * @return PHPExcel_Style_Fill[] All fills in PHPExcel - * @throws PHPExcel_Writer_Exception - */ - public function allFills(PHPExcel $pPHPExcel = null) - { - // Get an array of unique fills - $aFills = array(); - - // Two first fills are predefined - $fill0 = new PHPExcel_Style_Fill(); - $fill0->setFillType(PHPExcel_Style_Fill::FILL_NONE); - $aFills[] = $fill0; - - $fill1 = new PHPExcel_Style_Fill(); - $fill1->setFillType(PHPExcel_Style_Fill::FILL_PATTERN_GRAY125); - $aFills[] = $fill1; - // The remaining fills - $aStyles = $this->allStyles($pPHPExcel); - foreach ($aStyles as $style) { - if (!array_key_exists($style->getFill()->getHashCode(), $aFills)) { - $aFills[ $style->getFill()->getHashCode() ] = $style->getFill(); - } - } - - return $aFills; - } - - /** - * Get an array of all fonts - * - * @param PHPExcel $pPHPExcel - * @return PHPExcel_Style_Font[] All fonts in PHPExcel - * @throws PHPExcel_Writer_Exception - */ - public function allFonts(PHPExcel $pPHPExcel = null) - { - // Get an array of unique fonts - $aFonts = array(); - $aStyles = $this->allStyles($pPHPExcel); - - foreach ($aStyles as $style) { - if (!array_key_exists($style->getFont()->getHashCode(), $aFonts)) { - $aFonts[ $style->getFont()->getHashCode() ] = $style->getFont(); - } - } - - return $aFonts; - } - - /** - * Get an array of all borders - * - * @param PHPExcel $pPHPExcel - * @return PHPExcel_Style_Borders[] All borders in PHPExcel - * @throws PHPExcel_Writer_Exception - */ - public function allBorders(PHPExcel $pPHPExcel = null) - { - // Get an array of unique borders - $aBorders = array(); - $aStyles = $this->allStyles($pPHPExcel); - - foreach ($aStyles as $style) { - if (!array_key_exists($style->getBorders()->getHashCode(), $aBorders)) { - $aBorders[ $style->getBorders()->getHashCode() ] = $style->getBorders(); - } - } - - return $aBorders; - } - - /** - * Get an array of all number formats - * - * @param PHPExcel $pPHPExcel - * @return PHPExcel_Style_NumberFormat[] All number formats in PHPExcel - * @throws PHPExcel_Writer_Exception - */ - public function allNumberFormats(PHPExcel $pPHPExcel = null) - { - // Get an array of unique number formats - $aNumFmts = array(); - $aStyles = $this->allStyles($pPHPExcel); - - foreach ($aStyles as $style) { - if ($style->getNumberFormat()->getBuiltInFormatCode() === false && !array_key_exists($style->getNumberFormat()->getHashCode(), $aNumFmts)) { - $aNumFmts[ $style->getNumberFormat()->getHashCode() ] = $style->getNumberFormat(); - } - } - - return $aNumFmts; - } -} diff --git a/application/third_party/PHPExcel/Writer/Excel2007/Theme.php b/application/third_party/PHPExcel/Writer/Excel2007/Theme.php deleted file mode 100644 index 223e4024..00000000 --- a/application/third_party/PHPExcel/Writer/Excel2007/Theme.php +++ /dev/null @@ -1,869 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_Excel2007 - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - - -/** - * PHPExcel_Writer_Excel2007_Theme - * - * @category PHPExcel - * @package PHPExcel_Writer_Excel2007 - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - */ -class PHPExcel_Writer_Excel2007_Theme extends PHPExcel_Writer_Excel2007_WriterPart -{ - /** - * Map of Major fonts to write - * @static array of string - * - */ - private static $majorFonts = array( - 'Jpan' => 'MS Pゴシック', - 'Hang' => '맑은 고딕', - 'Hans' => '宋体', - 'Hant' => '新細明體', - 'Arab' => 'Times New Roman', - 'Hebr' => 'Times New Roman', - 'Thai' => 'Tahoma', - 'Ethi' => 'Nyala', - 'Beng' => 'Vrinda', - 'Gujr' => 'Shruti', - 'Khmr' => 'MoolBoran', - 'Knda' => 'Tunga', - 'Guru' => 'Raavi', - 'Cans' => 'Euphemia', - 'Cher' => 'Plantagenet Cherokee', - 'Yiii' => 'Microsoft Yi Baiti', - 'Tibt' => 'Microsoft Himalaya', - 'Thaa' => 'MV Boli', - 'Deva' => 'Mangal', - 'Telu' => 'Gautami', - 'Taml' => 'Latha', - 'Syrc' => 'Estrangelo Edessa', - 'Orya' => 'Kalinga', - 'Mlym' => 'Kartika', - 'Laoo' => 'DokChampa', - 'Sinh' => 'Iskoola Pota', - 'Mong' => 'Mongolian Baiti', - 'Viet' => 'Times New Roman', - 'Uigh' => 'Microsoft Uighur', - 'Geor' => 'Sylfaen', - ); - - /** - * Map of Minor fonts to write - * @static array of string - * - */ - private static $minorFonts = array( - 'Jpan' => 'MS Pゴシック', - 'Hang' => '맑은 고딕', - 'Hans' => '宋体', - 'Hant' => '新細明體', - 'Arab' => 'Arial', - 'Hebr' => 'Arial', - 'Thai' => 'Tahoma', - 'Ethi' => 'Nyala', - 'Beng' => 'Vrinda', - 'Gujr' => 'Shruti', - 'Khmr' => 'DaunPenh', - 'Knda' => 'Tunga', - 'Guru' => 'Raavi', - 'Cans' => 'Euphemia', - 'Cher' => 'Plantagenet Cherokee', - 'Yiii' => 'Microsoft Yi Baiti', - 'Tibt' => 'Microsoft Himalaya', - 'Thaa' => 'MV Boli', - 'Deva' => 'Mangal', - 'Telu' => 'Gautami', - 'Taml' => 'Latha', - 'Syrc' => 'Estrangelo Edessa', - 'Orya' => 'Kalinga', - 'Mlym' => 'Kartika', - 'Laoo' => 'DokChampa', - 'Sinh' => 'Iskoola Pota', - 'Mong' => 'Mongolian Baiti', - 'Viet' => 'Arial', - 'Uigh' => 'Microsoft Uighur', - 'Geor' => 'Sylfaen', - ); - - /** - * Map of core colours - * @static array of string - * - */ - private static $colourScheme = array( - 'dk2' => '1F497D', - 'lt2' => 'EEECE1', - 'accent1' => '4F81BD', - 'accent2' => 'C0504D', - 'accent3' => '9BBB59', - 'accent4' => '8064A2', - 'accent5' => '4BACC6', - 'accent6' => 'F79646', - 'hlink' => '0000FF', - 'folHlink' => '800080', - ); - - /** - * Write theme to XML format - * - * @param PHPExcel $pPHPExcel - * @return string XML Output - * @throws PHPExcel_Writer_Exception - */ - public function writeTheme(PHPExcel $pPHPExcel = null) - { - // Create XML writer - $objWriter = null; - if ($this->getParentWriter()->getUseDiskCaching()) { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); - } else { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); - } - - // XML header - $objWriter->startDocument('1.0', 'UTF-8', 'yes'); - - // a:theme - $objWriter->startElement('a:theme'); - $objWriter->writeAttribute('xmlns:a', 'http://schemas.openxmlformats.org/drawingml/2006/main'); - $objWriter->writeAttribute('name', 'Office Theme'); - - // a:themeElements - $objWriter->startElement('a:themeElements'); - - // a:clrScheme - $objWriter->startElement('a:clrScheme'); - $objWriter->writeAttribute('name', 'Office'); - - // a:dk1 - $objWriter->startElement('a:dk1'); - - // a:sysClr - $objWriter->startElement('a:sysClr'); - $objWriter->writeAttribute('val', 'windowText'); - $objWriter->writeAttribute('lastClr', '000000'); - $objWriter->endElement(); - - $objWriter->endElement(); - - // a:lt1 - $objWriter->startElement('a:lt1'); - - // a:sysClr - $objWriter->startElement('a:sysClr'); - $objWriter->writeAttribute('val', 'window'); - $objWriter->writeAttribute('lastClr', 'FFFFFF'); - $objWriter->endElement(); - - $objWriter->endElement(); - - // a:dk2 - $this->writeColourScheme($objWriter); - - $objWriter->endElement(); - - // a:fontScheme - $objWriter->startElement('a:fontScheme'); - $objWriter->writeAttribute('name', 'Office'); - - // a:majorFont - $objWriter->startElement('a:majorFont'); - $this->writeFonts($objWriter, 'Cambria', self::$majorFonts); - $objWriter->endElement(); - - // a:minorFont - $objWriter->startElement('a:minorFont'); - $this->writeFonts($objWriter, 'Calibri', self::$minorFonts); - $objWriter->endElement(); - - $objWriter->endElement(); - - // a:fmtScheme - $objWriter->startElement('a:fmtScheme'); - $objWriter->writeAttribute('name', 'Office'); - - // a:fillStyleLst - $objWriter->startElement('a:fillStyleLst'); - - // a:solidFill - $objWriter->startElement('a:solidFill'); - - // a:schemeClr - $objWriter->startElement('a:schemeClr'); - $objWriter->writeAttribute('val', 'phClr'); - $objWriter->endElement(); - - $objWriter->endElement(); - - // a:gradFill - $objWriter->startElement('a:gradFill'); - $objWriter->writeAttribute('rotWithShape', '1'); - - // a:gsLst - $objWriter->startElement('a:gsLst'); - - // a:gs - $objWriter->startElement('a:gs'); - $objWriter->writeAttribute('pos', '0'); - - // a:schemeClr - $objWriter->startElement('a:schemeClr'); - $objWriter->writeAttribute('val', 'phClr'); - - // a:tint - $objWriter->startElement('a:tint'); - $objWriter->writeAttribute('val', '50000'); - $objWriter->endElement(); - - // a:satMod - $objWriter->startElement('a:satMod'); - $objWriter->writeAttribute('val', '300000'); - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - // a:gs - $objWriter->startElement('a:gs'); - $objWriter->writeAttribute('pos', '35000'); - - // a:schemeClr - $objWriter->startElement('a:schemeClr'); - $objWriter->writeAttribute('val', 'phClr'); - - // a:tint - $objWriter->startElement('a:tint'); - $objWriter->writeAttribute('val', '37000'); - $objWriter->endElement(); - - // a:satMod - $objWriter->startElement('a:satMod'); - $objWriter->writeAttribute('val', '300000'); - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - // a:gs - $objWriter->startElement('a:gs'); - $objWriter->writeAttribute('pos', '100000'); - - // a:schemeClr - $objWriter->startElement('a:schemeClr'); - $objWriter->writeAttribute('val', 'phClr'); - - // a:tint - $objWriter->startElement('a:tint'); - $objWriter->writeAttribute('val', '15000'); - $objWriter->endElement(); - - // a:satMod - $objWriter->startElement('a:satMod'); - $objWriter->writeAttribute('val', '350000'); - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - // a:lin - $objWriter->startElement('a:lin'); - $objWriter->writeAttribute('ang', '16200000'); - $objWriter->writeAttribute('scaled', '1'); - $objWriter->endElement(); - - $objWriter->endElement(); - - // a:gradFill - $objWriter->startElement('a:gradFill'); - $objWriter->writeAttribute('rotWithShape', '1'); - - // a:gsLst - $objWriter->startElement('a:gsLst'); - - // a:gs - $objWriter->startElement('a:gs'); - $objWriter->writeAttribute('pos', '0'); - - // a:schemeClr - $objWriter->startElement('a:schemeClr'); - $objWriter->writeAttribute('val', 'phClr'); - - // a:shade - $objWriter->startElement('a:shade'); - $objWriter->writeAttribute('val', '51000'); - $objWriter->endElement(); - - // a:satMod - $objWriter->startElement('a:satMod'); - $objWriter->writeAttribute('val', '130000'); - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - // a:gs - $objWriter->startElement('a:gs'); - $objWriter->writeAttribute('pos', '80000'); - - // a:schemeClr - $objWriter->startElement('a:schemeClr'); - $objWriter->writeAttribute('val', 'phClr'); - - // a:shade - $objWriter->startElement('a:shade'); - $objWriter->writeAttribute('val', '93000'); - $objWriter->endElement(); - - // a:satMod - $objWriter->startElement('a:satMod'); - $objWriter->writeAttribute('val', '130000'); - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - // a:gs - $objWriter->startElement('a:gs'); - $objWriter->writeAttribute('pos', '100000'); - - // a:schemeClr - $objWriter->startElement('a:schemeClr'); - $objWriter->writeAttribute('val', 'phClr'); - - // a:shade - $objWriter->startElement('a:shade'); - $objWriter->writeAttribute('val', '94000'); - $objWriter->endElement(); - - // a:satMod - $objWriter->startElement('a:satMod'); - $objWriter->writeAttribute('val', '135000'); - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - // a:lin - $objWriter->startElement('a:lin'); - $objWriter->writeAttribute('ang', '16200000'); - $objWriter->writeAttribute('scaled', '0'); - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - // a:lnStyleLst - $objWriter->startElement('a:lnStyleLst'); - - // a:ln - $objWriter->startElement('a:ln'); - $objWriter->writeAttribute('w', '9525'); - $objWriter->writeAttribute('cap', 'flat'); - $objWriter->writeAttribute('cmpd', 'sng'); - $objWriter->writeAttribute('algn', 'ctr'); - - // a:solidFill - $objWriter->startElement('a:solidFill'); - - // a:schemeClr - $objWriter->startElement('a:schemeClr'); - $objWriter->writeAttribute('val', 'phClr'); - - // a:shade - $objWriter->startElement('a:shade'); - $objWriter->writeAttribute('val', '95000'); - $objWriter->endElement(); - - // a:satMod - $objWriter->startElement('a:satMod'); - $objWriter->writeAttribute('val', '105000'); - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - // a:prstDash - $objWriter->startElement('a:prstDash'); - $objWriter->writeAttribute('val', 'solid'); - $objWriter->endElement(); - - $objWriter->endElement(); - - // a:ln - $objWriter->startElement('a:ln'); - $objWriter->writeAttribute('w', '25400'); - $objWriter->writeAttribute('cap', 'flat'); - $objWriter->writeAttribute('cmpd', 'sng'); - $objWriter->writeAttribute('algn', 'ctr'); - - // a:solidFill - $objWriter->startElement('a:solidFill'); - - // a:schemeClr - $objWriter->startElement('a:schemeClr'); - $objWriter->writeAttribute('val', 'phClr'); - $objWriter->endElement(); - - $objWriter->endElement(); - - // a:prstDash - $objWriter->startElement('a:prstDash'); - $objWriter->writeAttribute('val', 'solid'); - $objWriter->endElement(); - - $objWriter->endElement(); - - // a:ln - $objWriter->startElement('a:ln'); - $objWriter->writeAttribute('w', '38100'); - $objWriter->writeAttribute('cap', 'flat'); - $objWriter->writeAttribute('cmpd', 'sng'); - $objWriter->writeAttribute('algn', 'ctr'); - - // a:solidFill - $objWriter->startElement('a:solidFill'); - - // a:schemeClr - $objWriter->startElement('a:schemeClr'); - $objWriter->writeAttribute('val', 'phClr'); - $objWriter->endElement(); - - $objWriter->endElement(); - - // a:prstDash - $objWriter->startElement('a:prstDash'); - $objWriter->writeAttribute('val', 'solid'); - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - - - // a:effectStyleLst - $objWriter->startElement('a:effectStyleLst'); - - // a:effectStyle - $objWriter->startElement('a:effectStyle'); - - // a:effectLst - $objWriter->startElement('a:effectLst'); - - // a:outerShdw - $objWriter->startElement('a:outerShdw'); - $objWriter->writeAttribute('blurRad', '40000'); - $objWriter->writeAttribute('dist', '20000'); - $objWriter->writeAttribute('dir', '5400000'); - $objWriter->writeAttribute('rotWithShape', '0'); - - // a:srgbClr - $objWriter->startElement('a:srgbClr'); - $objWriter->writeAttribute('val', '000000'); - - // a:alpha - $objWriter->startElement('a:alpha'); - $objWriter->writeAttribute('val', '38000'); - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - // a:effectStyle - $objWriter->startElement('a:effectStyle'); - - // a:effectLst - $objWriter->startElement('a:effectLst'); - - // a:outerShdw - $objWriter->startElement('a:outerShdw'); - $objWriter->writeAttribute('blurRad', '40000'); - $objWriter->writeAttribute('dist', '23000'); - $objWriter->writeAttribute('dir', '5400000'); - $objWriter->writeAttribute('rotWithShape', '0'); - - // a:srgbClr - $objWriter->startElement('a:srgbClr'); - $objWriter->writeAttribute('val', '000000'); - - // a:alpha - $objWriter->startElement('a:alpha'); - $objWriter->writeAttribute('val', '35000'); - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - // a:effectStyle - $objWriter->startElement('a:effectStyle'); - - // a:effectLst - $objWriter->startElement('a:effectLst'); - - // a:outerShdw - $objWriter->startElement('a:outerShdw'); - $objWriter->writeAttribute('blurRad', '40000'); - $objWriter->writeAttribute('dist', '23000'); - $objWriter->writeAttribute('dir', '5400000'); - $objWriter->writeAttribute('rotWithShape', '0'); - - // a:srgbClr - $objWriter->startElement('a:srgbClr'); - $objWriter->writeAttribute('val', '000000'); - - // a:alpha - $objWriter->startElement('a:alpha'); - $objWriter->writeAttribute('val', '35000'); - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - // a:scene3d - $objWriter->startElement('a:scene3d'); - - // a:camera - $objWriter->startElement('a:camera'); - $objWriter->writeAttribute('prst', 'orthographicFront'); - - // a:rot - $objWriter->startElement('a:rot'); - $objWriter->writeAttribute('lat', '0'); - $objWriter->writeAttribute('lon', '0'); - $objWriter->writeAttribute('rev', '0'); - $objWriter->endElement(); - - $objWriter->endElement(); - - // a:lightRig - $objWriter->startElement('a:lightRig'); - $objWriter->writeAttribute('rig', 'threePt'); - $objWriter->writeAttribute('dir', 't'); - - // a:rot - $objWriter->startElement('a:rot'); - $objWriter->writeAttribute('lat', '0'); - $objWriter->writeAttribute('lon', '0'); - $objWriter->writeAttribute('rev', '1200000'); - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - // a:sp3d - $objWriter->startElement('a:sp3d'); - - // a:bevelT - $objWriter->startElement('a:bevelT'); - $objWriter->writeAttribute('w', '63500'); - $objWriter->writeAttribute('h', '25400'); - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - // a:bgFillStyleLst - $objWriter->startElement('a:bgFillStyleLst'); - - // a:solidFill - $objWriter->startElement('a:solidFill'); - - // a:schemeClr - $objWriter->startElement('a:schemeClr'); - $objWriter->writeAttribute('val', 'phClr'); - $objWriter->endElement(); - - $objWriter->endElement(); - - // a:gradFill - $objWriter->startElement('a:gradFill'); - $objWriter->writeAttribute('rotWithShape', '1'); - - // a:gsLst - $objWriter->startElement('a:gsLst'); - - // a:gs - $objWriter->startElement('a:gs'); - $objWriter->writeAttribute('pos', '0'); - - // a:schemeClr - $objWriter->startElement('a:schemeClr'); - $objWriter->writeAttribute('val', 'phClr'); - - // a:tint - $objWriter->startElement('a:tint'); - $objWriter->writeAttribute('val', '40000'); - $objWriter->endElement(); - - // a:satMod - $objWriter->startElement('a:satMod'); - $objWriter->writeAttribute('val', '350000'); - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - // a:gs - $objWriter->startElement('a:gs'); - $objWriter->writeAttribute('pos', '40000'); - - // a:schemeClr - $objWriter->startElement('a:schemeClr'); - $objWriter->writeAttribute('val', 'phClr'); - - // a:tint - $objWriter->startElement('a:tint'); - $objWriter->writeAttribute('val', '45000'); - $objWriter->endElement(); - - // a:shade - $objWriter->startElement('a:shade'); - $objWriter->writeAttribute('val', '99000'); - $objWriter->endElement(); - - // a:satMod - $objWriter->startElement('a:satMod'); - $objWriter->writeAttribute('val', '350000'); - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - // a:gs - $objWriter->startElement('a:gs'); - $objWriter->writeAttribute('pos', '100000'); - - // a:schemeClr - $objWriter->startElement('a:schemeClr'); - $objWriter->writeAttribute('val', 'phClr'); - - // a:shade - $objWriter->startElement('a:shade'); - $objWriter->writeAttribute('val', '20000'); - $objWriter->endElement(); - - // a:satMod - $objWriter->startElement('a:satMod'); - $objWriter->writeAttribute('val', '255000'); - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - // a:path - $objWriter->startElement('a:path'); - $objWriter->writeAttribute('path', 'circle'); - - // a:fillToRect - $objWriter->startElement('a:fillToRect'); - $objWriter->writeAttribute('l', '50000'); - $objWriter->writeAttribute('t', '-80000'); - $objWriter->writeAttribute('r', '50000'); - $objWriter->writeAttribute('b', '180000'); - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - // a:gradFill - $objWriter->startElement('a:gradFill'); - $objWriter->writeAttribute('rotWithShape', '1'); - - // a:gsLst - $objWriter->startElement('a:gsLst'); - - // a:gs - $objWriter->startElement('a:gs'); - $objWriter->writeAttribute('pos', '0'); - - // a:schemeClr - $objWriter->startElement('a:schemeClr'); - $objWriter->writeAttribute('val', 'phClr'); - - // a:tint - $objWriter->startElement('a:tint'); - $objWriter->writeAttribute('val', '80000'); - $objWriter->endElement(); - - // a:satMod - $objWriter->startElement('a:satMod'); - $objWriter->writeAttribute('val', '300000'); - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - // a:gs - $objWriter->startElement('a:gs'); - $objWriter->writeAttribute('pos', '100000'); - - // a:schemeClr - $objWriter->startElement('a:schemeClr'); - $objWriter->writeAttribute('val', 'phClr'); - - // a:shade - $objWriter->startElement('a:shade'); - $objWriter->writeAttribute('val', '30000'); - $objWriter->endElement(); - - // a:satMod - $objWriter->startElement('a:satMod'); - $objWriter->writeAttribute('val', '200000'); - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - // a:path - $objWriter->startElement('a:path'); - $objWriter->writeAttribute('path', 'circle'); - - // a:fillToRect - $objWriter->startElement('a:fillToRect'); - $objWriter->writeAttribute('l', '50000'); - $objWriter->writeAttribute('t', '50000'); - $objWriter->writeAttribute('r', '50000'); - $objWriter->writeAttribute('b', '50000'); - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - // a:objectDefaults - $objWriter->writeElement('a:objectDefaults', null); - - // a:extraClrSchemeLst - $objWriter->writeElement('a:extraClrSchemeLst', null); - - $objWriter->endElement(); - - // Return - return $objWriter->getData(); - } - - /** - * Write fonts to XML format - * - * @param PHPExcel_Shared_XMLWriter $objWriter - * @param string $latinFont - * @param array of string $fontSet - * @return string XML Output - * @throws PHPExcel_Writer_Exception - */ - private function writeFonts($objWriter, $latinFont, $fontSet) - { - // a:latin - $objWriter->startElement('a:latin'); - $objWriter->writeAttribute('typeface', $latinFont); - $objWriter->endElement(); - - // a:ea - $objWriter->startElement('a:ea'); - $objWriter->writeAttribute('typeface', ''); - $objWriter->endElement(); - - // a:cs - $objWriter->startElement('a:cs'); - $objWriter->writeAttribute('typeface', ''); - $objWriter->endElement(); - - foreach ($fontSet as $fontScript => $typeface) { - $objWriter->startElement('a:font'); - $objWriter->writeAttribute('script', $fontScript); - $objWriter->writeAttribute('typeface', $typeface); - $objWriter->endElement(); - } - } - - /** - * Write colour scheme to XML format - * - * @param PHPExcel_Shared_XMLWriter $objWriter - * @return string XML Output - * @throws PHPExcel_Writer_Exception - */ - private function writeColourScheme($objWriter) - { - foreach (self::$colourScheme as $colourName => $colourValue) { - $objWriter->startElement('a:'.$colourName); - - $objWriter->startElement('a:srgbClr'); - $objWriter->writeAttribute('val', $colourValue); - $objWriter->endElement(); - - $objWriter->endElement(); - } - } -} diff --git a/application/third_party/PHPExcel/Writer/Excel2007/Workbook.php b/application/third_party/PHPExcel/Writer/Excel2007/Workbook.php deleted file mode 100644 index 87c877ea..00000000 --- a/application/third_party/PHPExcel/Writer/Excel2007/Workbook.php +++ /dev/null @@ -1,448 +0,0 @@ -<?php - -/** - * PHPExcel_Writer_Excel2007_Workbook - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_Excel2007 - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Writer_Excel2007_Workbook extends PHPExcel_Writer_Excel2007_WriterPart -{ - /** - * Write workbook to XML format - * - * @param PHPExcel $pPHPExcel - * @param boolean $recalcRequired Indicate whether formulas should be recalculated before writing - * @return string XML Output - * @throws PHPExcel_Writer_Exception - */ - public function writeWorkbook(PHPExcel $pPHPExcel = null, $recalcRequired = false) - { - // Create XML writer - $objWriter = null; - if ($this->getParentWriter()->getUseDiskCaching()) { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); - } else { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); - } - - // XML header - $objWriter->startDocument('1.0', 'UTF-8', 'yes'); - - // workbook - $objWriter->startElement('workbook'); - $objWriter->writeAttribute('xml:space', 'preserve'); - $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'); - $objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'); - - // fileVersion - $this->writeFileVersion($objWriter); - - // workbookPr - $this->writeWorkbookPr($objWriter); - - // workbookProtection - $this->writeWorkbookProtection($objWriter, $pPHPExcel); - - // bookViews - if ($this->getParentWriter()->getOffice2003Compatibility() === false) { - $this->writeBookViews($objWriter, $pPHPExcel); - } - - // sheets - $this->writeSheets($objWriter, $pPHPExcel); - - // definedNames - $this->writeDefinedNames($objWriter, $pPHPExcel); - - // calcPr - $this->writeCalcPr($objWriter, $recalcRequired); - - $objWriter->endElement(); - - // Return - return $objWriter->getData(); - } - - /** - * Write file version - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @throws PHPExcel_Writer_Exception - */ - private function writeFileVersion(PHPExcel_Shared_XMLWriter $objWriter = null) - { - $objWriter->startElement('fileVersion'); - $objWriter->writeAttribute('appName', 'xl'); - $objWriter->writeAttribute('lastEdited', '4'); - $objWriter->writeAttribute('lowestEdited', '4'); - $objWriter->writeAttribute('rupBuild', '4505'); - $objWriter->endElement(); - } - - /** - * Write WorkbookPr - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @throws PHPExcel_Writer_Exception - */ - private function writeWorkbookPr(PHPExcel_Shared_XMLWriter $objWriter = null) - { - $objWriter->startElement('workbookPr'); - - if (PHPExcel_Shared_Date::getExcelCalendar() == PHPExcel_Shared_Date::CALENDAR_MAC_1904) { - $objWriter->writeAttribute('date1904', '1'); - } - - $objWriter->writeAttribute('codeName', 'ThisWorkbook'); - - $objWriter->endElement(); - } - - /** - * Write BookViews - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel $pPHPExcel - * @throws PHPExcel_Writer_Exception - */ - private function writeBookViews(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel $pPHPExcel = null) - { - // bookViews - $objWriter->startElement('bookViews'); - - // workbookView - $objWriter->startElement('workbookView'); - - $objWriter->writeAttribute('activeTab', $pPHPExcel->getActiveSheetIndex()); - $objWriter->writeAttribute('autoFilterDateGrouping', '1'); - $objWriter->writeAttribute('firstSheet', '0'); - $objWriter->writeAttribute('minimized', '0'); - $objWriter->writeAttribute('showHorizontalScroll', '1'); - $objWriter->writeAttribute('showSheetTabs', '1'); - $objWriter->writeAttribute('showVerticalScroll', '1'); - $objWriter->writeAttribute('tabRatio', '600'); - $objWriter->writeAttribute('visibility', 'visible'); - - $objWriter->endElement(); - - $objWriter->endElement(); - } - - /** - * Write WorkbookProtection - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel $pPHPExcel - * @throws PHPExcel_Writer_Exception - */ - private function writeWorkbookProtection(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel $pPHPExcel = null) - { - if ($pPHPExcel->getSecurity()->isSecurityEnabled()) { - $objWriter->startElement('workbookProtection'); - $objWriter->writeAttribute('lockRevision', ($pPHPExcel->getSecurity()->getLockRevision() ? 'true' : 'false')); - $objWriter->writeAttribute('lockStructure', ($pPHPExcel->getSecurity()->getLockStructure() ? 'true' : 'false')); - $objWriter->writeAttribute('lockWindows', ($pPHPExcel->getSecurity()->getLockWindows() ? 'true' : 'false')); - - if ($pPHPExcel->getSecurity()->getRevisionsPassword() != '') { - $objWriter->writeAttribute('revisionsPassword', $pPHPExcel->getSecurity()->getRevisionsPassword()); - } - - if ($pPHPExcel->getSecurity()->getWorkbookPassword() != '') { - $objWriter->writeAttribute('workbookPassword', $pPHPExcel->getSecurity()->getWorkbookPassword()); - } - - $objWriter->endElement(); - } - } - - /** - * Write calcPr - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param boolean $recalcRequired Indicate whether formulas should be recalculated before writing - * @throws PHPExcel_Writer_Exception - */ - private function writeCalcPr(PHPExcel_Shared_XMLWriter $objWriter = null, $recalcRequired = true) - { - $objWriter->startElement('calcPr'); - - // Set the calcid to a higher value than Excel itself will use, otherwise Excel will always recalc - // If MS Excel does do a recalc, then users opening a file in MS Excel will be prompted to save on exit - // because the file has changed - $objWriter->writeAttribute('calcId', '999999'); - $objWriter->writeAttribute('calcMode', 'auto'); - // fullCalcOnLoad isn't needed if we've recalculating for the save - $objWriter->writeAttribute('calcCompleted', ($recalcRequired) ? 1 : 0); - $objWriter->writeAttribute('fullCalcOnLoad', ($recalcRequired) ? 0 : 1); - - $objWriter->endElement(); - } - - /** - * Write sheets - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel $pPHPExcel - * @throws PHPExcel_Writer_Exception - */ - private function writeSheets(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel $pPHPExcel = null) - { - // Write sheets - $objWriter->startElement('sheets'); - $sheetCount = $pPHPExcel->getSheetCount(); - for ($i = 0; $i < $sheetCount; ++$i) { - // sheet - $this->writeSheet( - $objWriter, - $pPHPExcel->getSheet($i)->getTitle(), - ($i + 1), - ($i + 1 + 3), - $pPHPExcel->getSheet($i)->getSheetState() - ); - } - - $objWriter->endElement(); - } - - /** - * Write sheet - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param string $pSheetname Sheet name - * @param int $pSheetId Sheet id - * @param int $pRelId Relationship ID - * @param string $sheetState Sheet state (visible, hidden, veryHidden) - * @throws PHPExcel_Writer_Exception - */ - private function writeSheet(PHPExcel_Shared_XMLWriter $objWriter = null, $pSheetname = '', $pSheetId = 1, $pRelId = 1, $sheetState = 'visible') - { - if ($pSheetname != '') { - // Write sheet - $objWriter->startElement('sheet'); - $objWriter->writeAttribute('name', $pSheetname); - $objWriter->writeAttribute('sheetId', $pSheetId); - if ($sheetState != 'visible' && $sheetState != '') { - $objWriter->writeAttribute('state', $sheetState); - } - $objWriter->writeAttribute('r:id', 'rId' . $pRelId); - $objWriter->endElement(); - } else { - throw new PHPExcel_Writer_Exception("Invalid parameters passed."); - } - } - - /** - * Write Defined Names - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel $pPHPExcel - * @throws PHPExcel_Writer_Exception - */ - private function writeDefinedNames(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel $pPHPExcel = null) - { - // Write defined names - $objWriter->startElement('definedNames'); - - // Named ranges - if (count($pPHPExcel->getNamedRanges()) > 0) { - // Named ranges - $this->writeNamedRanges($objWriter, $pPHPExcel); - } - - // Other defined names - $sheetCount = $pPHPExcel->getSheetCount(); - for ($i = 0; $i < $sheetCount; ++$i) { - // definedName for autoFilter - $this->writeDefinedNameForAutofilter($objWriter, $pPHPExcel->getSheet($i), $i); - - // definedName for Print_Titles - $this->writeDefinedNameForPrintTitles($objWriter, $pPHPExcel->getSheet($i), $i); - - // definedName for Print_Area - $this->writeDefinedNameForPrintArea($objWriter, $pPHPExcel->getSheet($i), $i); - } - - $objWriter->endElement(); - } - - /** - * Write named ranges - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel $pPHPExcel - * @throws PHPExcel_Writer_Exception - */ - private function writeNamedRanges(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel $pPHPExcel) - { - // Loop named ranges - $namedRanges = $pPHPExcel->getNamedRanges(); - foreach ($namedRanges as $namedRange) { - $this->writeDefinedNameForNamedRange($objWriter, $namedRange); - } - } - - /** - * Write Defined Name for named range - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_NamedRange $pNamedRange - * @throws PHPExcel_Writer_Exception - */ - private function writeDefinedNameForNamedRange(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_NamedRange $pNamedRange) - { - // definedName for named range - $objWriter->startElement('definedName'); - $objWriter->writeAttribute('name', $pNamedRange->getName()); - if ($pNamedRange->getLocalOnly()) { - $objWriter->writeAttribute('localSheetId', $pNamedRange->getScope()->getParent()->getIndex($pNamedRange->getScope())); - } - - // Create absolute coordinate and write as raw text - $range = PHPExcel_Cell::splitRange($pNamedRange->getRange()); - for ($i = 0; $i < count($range); $i++) { - $range[$i][0] = '\'' . str_replace("'", "''", $pNamedRange->getWorksheet()->getTitle()) . '\'!' . PHPExcel_Cell::absoluteReference($range[$i][0]); - if (isset($range[$i][1])) { - $range[$i][1] = PHPExcel_Cell::absoluteReference($range[$i][1]); - } - } - $range = PHPExcel_Cell::buildRange($range); - - $objWriter->writeRawData($range); - - $objWriter->endElement(); - } - - /** - * Write Defined Name for autoFilter - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Worksheet $pSheet - * @param int $pSheetId - * @throws PHPExcel_Writer_Exception - */ - private function writeDefinedNameForAutofilter(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null, $pSheetId = 0) - { - // definedName for autoFilter - $autoFilterRange = $pSheet->getAutoFilter()->getRange(); - if (!empty($autoFilterRange)) { - $objWriter->startElement('definedName'); - $objWriter->writeAttribute('name', '_xlnm._FilterDatabase'); - $objWriter->writeAttribute('localSheetId', $pSheetId); - $objWriter->writeAttribute('hidden', '1'); - - // Create absolute coordinate and write as raw text - $range = PHPExcel_Cell::splitRange($autoFilterRange); - $range = $range[0]; - // Strip any worksheet ref so we can make the cell ref absolute - if (strpos($range[0], '!') !== false) { - list($ws, $range[0]) = explode('!', $range[0]); - } - - $range[0] = PHPExcel_Cell::absoluteCoordinate($range[0]); - $range[1] = PHPExcel_Cell::absoluteCoordinate($range[1]); - $range = implode(':', $range); - - $objWriter->writeRawData('\'' . str_replace("'", "''", $pSheet->getTitle()) . '\'!' . $range); - - $objWriter->endElement(); - } - } - - /** - * Write Defined Name for PrintTitles - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Worksheet $pSheet - * @param int $pSheetId - * @throws PHPExcel_Writer_Exception - */ - private function writeDefinedNameForPrintTitles(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null, $pSheetId = 0) - { - // definedName for PrintTitles - if ($pSheet->getPageSetup()->isColumnsToRepeatAtLeftSet() || $pSheet->getPageSetup()->isRowsToRepeatAtTopSet()) { - $objWriter->startElement('definedName'); - $objWriter->writeAttribute('name', '_xlnm.Print_Titles'); - $objWriter->writeAttribute('localSheetId', $pSheetId); - - // Setting string - $settingString = ''; - - // Columns to repeat - if ($pSheet->getPageSetup()->isColumnsToRepeatAtLeftSet()) { - $repeat = $pSheet->getPageSetup()->getColumnsToRepeatAtLeft(); - - $settingString .= '\'' . str_replace("'", "''", $pSheet->getTitle()) . '\'!$' . $repeat[0] . ':$' . $repeat[1]; - } - - // Rows to repeat - if ($pSheet->getPageSetup()->isRowsToRepeatAtTopSet()) { - if ($pSheet->getPageSetup()->isColumnsToRepeatAtLeftSet()) { - $settingString .= ','; - } - - $repeat = $pSheet->getPageSetup()->getRowsToRepeatAtTop(); - - $settingString .= '\'' . str_replace("'", "''", $pSheet->getTitle()) . '\'!$' . $repeat[0] . ':$' . $repeat[1]; - } - - $objWriter->writeRawData($settingString); - - $objWriter->endElement(); - } - } - - /** - * Write Defined Name for PrintTitles - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Worksheet $pSheet - * @param int $pSheetId - * @throws PHPExcel_Writer_Exception - */ - private function writeDefinedNameForPrintArea(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null, $pSheetId = 0) - { - // definedName for PrintArea - if ($pSheet->getPageSetup()->isPrintAreaSet()) { - $objWriter->startElement('definedName'); - $objWriter->writeAttribute('name', '_xlnm.Print_Area'); - $objWriter->writeAttribute('localSheetId', $pSheetId); - - // Setting string - $settingString = ''; - - // Print area - $printArea = PHPExcel_Cell::splitRange($pSheet->getPageSetup()->getPrintArea()); - - $chunks = array(); - foreach ($printArea as $printAreaRect) { - $printAreaRect[0] = PHPExcel_Cell::absoluteReference($printAreaRect[0]); - $printAreaRect[1] = PHPExcel_Cell::absoluteReference($printAreaRect[1]); - $chunks[] = '\'' . str_replace("'", "''", $pSheet->getTitle()) . '\'!' . implode(':', $printAreaRect); - } - - $objWriter->writeRawData(implode(',', $chunks)); - - $objWriter->endElement(); - } - } -} diff --git a/application/third_party/PHPExcel/Writer/Excel2007/Worksheet.php b/application/third_party/PHPExcel/Writer/Excel2007/Worksheet.php deleted file mode 100644 index c211403e..00000000 --- a/application/third_party/PHPExcel/Writer/Excel2007/Worksheet.php +++ /dev/null @@ -1,1219 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_Excel2007 - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - - -/** - * PHPExcel_Writer_Excel2007_Worksheet - * - * @category PHPExcel - * @package PHPExcel_Writer_Excel2007 - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - */ -class PHPExcel_Writer_Excel2007_Worksheet extends PHPExcel_Writer_Excel2007_WriterPart -{ - /** - * Write worksheet to XML format - * - * @param PHPExcel_Worksheet $pSheet - * @param string[] $pStringTable - * @param boolean $includeCharts Flag indicating if we should write charts - * @return string XML Output - * @throws PHPExcel_Writer_Exception - */ - public function writeWorksheet($pSheet = null, $pStringTable = null, $includeCharts = false) - { - if (!is_null($pSheet)) { - // Create XML writer - $objWriter = null; - if ($this->getParentWriter()->getUseDiskCaching()) { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); - } else { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); - } - - // XML header - $objWriter->startDocument('1.0', 'UTF-8', 'yes'); - - // Worksheet - $objWriter->startElement('worksheet'); - $objWriter->writeAttribute('xml:space', 'preserve'); - $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'); - $objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'); - - // sheetPr - $this->writeSheetPr($objWriter, $pSheet); - - // Dimension - $this->writeDimension($objWriter, $pSheet); - - // sheetViews - $this->writeSheetViews($objWriter, $pSheet); - - // sheetFormatPr - $this->writeSheetFormatPr($objWriter, $pSheet); - - // cols - $this->writeCols($objWriter, $pSheet); - - // sheetData - $this->writeSheetData($objWriter, $pSheet, $pStringTable); - - // sheetProtection - $this->writeSheetProtection($objWriter, $pSheet); - - // protectedRanges - $this->writeProtectedRanges($objWriter, $pSheet); - - // autoFilter - $this->writeAutoFilter($objWriter, $pSheet); - - // mergeCells - $this->writeMergeCells($objWriter, $pSheet); - - // conditionalFormatting - $this->writeConditionalFormatting($objWriter, $pSheet); - - // dataValidations - $this->writeDataValidations($objWriter, $pSheet); - - // hyperlinks - $this->writeHyperlinks($objWriter, $pSheet); - - // Print options - $this->writePrintOptions($objWriter, $pSheet); - - // Page margins - $this->writePageMargins($objWriter, $pSheet); - - // Page setup - $this->writePageSetup($objWriter, $pSheet); - - // Header / footer - $this->writeHeaderFooter($objWriter, $pSheet); - - // Breaks - $this->writeBreaks($objWriter, $pSheet); - - // Drawings and/or Charts - $this->writeDrawings($objWriter, $pSheet, $includeCharts); - - // LegacyDrawing - $this->writeLegacyDrawing($objWriter, $pSheet); - - // LegacyDrawingHF - $this->writeLegacyDrawingHF($objWriter, $pSheet); - - $objWriter->endElement(); - - // Return - return $objWriter->getData(); - } else { - throw new PHPExcel_Writer_Exception("Invalid PHPExcel_Worksheet object passed."); - } - } - - /** - * Write SheetPr - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Worksheet $pSheet Worksheet - * @throws PHPExcel_Writer_Exception - */ - private function writeSheetPr(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) - { - // sheetPr - $objWriter->startElement('sheetPr'); - //$objWriter->writeAttribute('codeName', $pSheet->getTitle()); - if ($pSheet->getParent()->hasMacros()) {//if the workbook have macros, we need to have codeName for the sheet - if ($pSheet->hasCodeName()==false) { - $pSheet->setCodeName($pSheet->getTitle()); - } - $objWriter->writeAttribute('codeName', $pSheet->getCodeName()); - } - $autoFilterRange = $pSheet->getAutoFilter()->getRange(); - if (!empty($autoFilterRange)) { - $objWriter->writeAttribute('filterMode', 1); - $pSheet->getAutoFilter()->showHideRows(); - } - - // tabColor - if ($pSheet->isTabColorSet()) { - $objWriter->startElement('tabColor'); - $objWriter->writeAttribute('rgb', $pSheet->getTabColor()->getARGB()); - $objWriter->endElement(); - } - - // outlinePr - $objWriter->startElement('outlinePr'); - $objWriter->writeAttribute('summaryBelow', ($pSheet->getShowSummaryBelow() ? '1' : '0')); - $objWriter->writeAttribute('summaryRight', ($pSheet->getShowSummaryRight() ? '1' : '0')); - $objWriter->endElement(); - - // pageSetUpPr - if ($pSheet->getPageSetup()->getFitToPage()) { - $objWriter->startElement('pageSetUpPr'); - $objWriter->writeAttribute('fitToPage', '1'); - $objWriter->endElement(); - } - - $objWriter->endElement(); - } - - /** - * Write Dimension - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Worksheet $pSheet Worksheet - * @throws PHPExcel_Writer_Exception - */ - private function writeDimension(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) - { - // dimension - $objWriter->startElement('dimension'); - $objWriter->writeAttribute('ref', $pSheet->calculateWorksheetDimension()); - $objWriter->endElement(); - } - - /** - * Write SheetViews - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Worksheet $pSheet Worksheet - * @throws PHPExcel_Writer_Exception - */ - private function writeSheetViews(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) - { - // sheetViews - $objWriter->startElement('sheetViews'); - - // Sheet selected? - $sheetSelected = false; - if ($this->getParentWriter()->getPHPExcel()->getIndex($pSheet) == $this->getParentWriter()->getPHPExcel()->getActiveSheetIndex()) { - $sheetSelected = true; - } - - // sheetView - $objWriter->startElement('sheetView'); - $objWriter->writeAttribute('tabSelected', $sheetSelected ? '1' : '0'); - $objWriter->writeAttribute('workbookViewId', '0'); - - // Zoom scales - if ($pSheet->getSheetView()->getZoomScale() != 100) { - $objWriter->writeAttribute('zoomScale', $pSheet->getSheetView()->getZoomScale()); - } - if ($pSheet->getSheetView()->getZoomScaleNormal() != 100) { - $objWriter->writeAttribute('zoomScaleNormal', $pSheet->getSheetView()->getZoomScaleNormal()); - } - - // View Layout Type - if ($pSheet->getSheetView()->getView() !== PHPExcel_Worksheet_SheetView::SHEETVIEW_NORMAL) { - $objWriter->writeAttribute('view', $pSheet->getSheetView()->getView()); - } - - // Gridlines - if ($pSheet->getShowGridlines()) { - $objWriter->writeAttribute('showGridLines', 'true'); - } else { - $objWriter->writeAttribute('showGridLines', 'false'); - } - - // Row and column headers - if ($pSheet->getShowRowColHeaders()) { - $objWriter->writeAttribute('showRowColHeaders', '1'); - } else { - $objWriter->writeAttribute('showRowColHeaders', '0'); - } - - // Right-to-left - if ($pSheet->getRightToLeft()) { - $objWriter->writeAttribute('rightToLeft', 'true'); - } - - $activeCell = $pSheet->getActiveCell(); - - // Pane - $pane = ''; - $topLeftCell = $pSheet->getFreezePane(); - if (($topLeftCell != '') && ($topLeftCell != 'A1')) { - $activeCell = empty($activeCell) ? $topLeftCell : $activeCell; - // Calculate freeze coordinates - $xSplit = $ySplit = 0; - - list($xSplit, $ySplit) = PHPExcel_Cell::coordinateFromString($topLeftCell); - $xSplit = PHPExcel_Cell::columnIndexFromString($xSplit); - - // pane - $pane = 'topRight'; - $objWriter->startElement('pane'); - if ($xSplit > 1) { - $objWriter->writeAttribute('xSplit', $xSplit - 1); - } - if ($ySplit > 1) { - $objWriter->writeAttribute('ySplit', $ySplit - 1); - $pane = ($xSplit > 1) ? 'bottomRight' : 'bottomLeft'; - } - $objWriter->writeAttribute('topLeftCell', $topLeftCell); - $objWriter->writeAttribute('activePane', $pane); - $objWriter->writeAttribute('state', 'frozen'); - $objWriter->endElement(); - - if (($xSplit > 1) && ($ySplit > 1)) { - // Write additional selections if more than two panes (ie both an X and a Y split) - $objWriter->startElement('selection'); - $objWriter->writeAttribute('pane', 'topRight'); - $objWriter->endElement(); - $objWriter->startElement('selection'); - $objWriter->writeAttribute('pane', 'bottomLeft'); - $objWriter->endElement(); - } - } - - // Selection -// if ($pane != '') { - // Only need to write selection element if we have a split pane - // We cheat a little by over-riding the active cell selection, setting it to the split cell - $objWriter->startElement('selection'); - if ($pane != '') { - $objWriter->writeAttribute('pane', $pane); - } - $objWriter->writeAttribute('activeCell', $activeCell); - $objWriter->writeAttribute('sqref', $activeCell); - $objWriter->endElement(); -// } - - $objWriter->endElement(); - - $objWriter->endElement(); - } - - /** - * Write SheetFormatPr - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Worksheet $pSheet Worksheet - * @throws PHPExcel_Writer_Exception - */ - private function writeSheetFormatPr(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) - { - // sheetFormatPr - $objWriter->startElement('sheetFormatPr'); - - // Default row height - if ($pSheet->getDefaultRowDimension()->getRowHeight() >= 0) { - $objWriter->writeAttribute('customHeight', 'true'); - $objWriter->writeAttribute('defaultRowHeight', PHPExcel_Shared_String::FormatNumber($pSheet->getDefaultRowDimension()->getRowHeight())); - } else { - $objWriter->writeAttribute('defaultRowHeight', '14.4'); - } - - // Set Zero Height row - if ((string)$pSheet->getDefaultRowDimension()->getZeroHeight() == '1' || - strtolower((string)$pSheet->getDefaultRowDimension()->getZeroHeight()) == 'true') { - $objWriter->writeAttribute('zeroHeight', '1'); - } - - // Default column width - if ($pSheet->getDefaultColumnDimension()->getWidth() >= 0) { - $objWriter->writeAttribute('defaultColWidth', PHPExcel_Shared_String::FormatNumber($pSheet->getDefaultColumnDimension()->getWidth())); - } - - // Outline level - row - $outlineLevelRow = 0; - foreach ($pSheet->getRowDimensions() as $dimension) { - if ($dimension->getOutlineLevel() > $outlineLevelRow) { - $outlineLevelRow = $dimension->getOutlineLevel(); - } - } - $objWriter->writeAttribute('outlineLevelRow', (int)$outlineLevelRow); - - // Outline level - column - $outlineLevelCol = 0; - foreach ($pSheet->getColumnDimensions() as $dimension) { - if ($dimension->getOutlineLevel() > $outlineLevelCol) { - $outlineLevelCol = $dimension->getOutlineLevel(); - } - } - $objWriter->writeAttribute('outlineLevelCol', (int)$outlineLevelCol); - - $objWriter->endElement(); - } - - /** - * Write Cols - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Worksheet $pSheet Worksheet - * @throws PHPExcel_Writer_Exception - */ - private function writeCols(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) - { - // cols - if (count($pSheet->getColumnDimensions()) > 0) { - $objWriter->startElement('cols'); - - $pSheet->calculateColumnWidths(); - - // Loop through column dimensions - foreach ($pSheet->getColumnDimensions() as $colDimension) { - // col - $objWriter->startElement('col'); - $objWriter->writeAttribute('min', PHPExcel_Cell::columnIndexFromString($colDimension->getColumnIndex())); - $objWriter->writeAttribute('max', PHPExcel_Cell::columnIndexFromString($colDimension->getColumnIndex())); - - if ($colDimension->getWidth() < 0) { - // No width set, apply default of 10 - $objWriter->writeAttribute('width', '9.10'); - } else { - // Width set - $objWriter->writeAttribute('width', PHPExcel_Shared_String::FormatNumber($colDimension->getWidth())); - } - - // Column visibility - if ($colDimension->getVisible() == false) { - $objWriter->writeAttribute('hidden', 'true'); - } - - // Auto size? - if ($colDimension->getAutoSize()) { - $objWriter->writeAttribute('bestFit', 'true'); - } - - // Custom width? - if ($colDimension->getWidth() != $pSheet->getDefaultColumnDimension()->getWidth()) { - $objWriter->writeAttribute('customWidth', 'true'); - } - - // Collapsed - if ($colDimension->getCollapsed() == true) { - $objWriter->writeAttribute('collapsed', 'true'); - } - - // Outline level - if ($colDimension->getOutlineLevel() > 0) { - $objWriter->writeAttribute('outlineLevel', $colDimension->getOutlineLevel()); - } - - // Style - $objWriter->writeAttribute('style', $colDimension->getXfIndex()); - - $objWriter->endElement(); - } - - $objWriter->endElement(); - } - } - - /** - * Write SheetProtection - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Worksheet $pSheet Worksheet - * @throws PHPExcel_Writer_Exception - */ - private function writeSheetProtection(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) - { - // sheetProtection - $objWriter->startElement('sheetProtection'); - - if ($pSheet->getProtection()->getPassword() != '') { - $objWriter->writeAttribute('password', $pSheet->getProtection()->getPassword()); - } - - $objWriter->writeAttribute('sheet', ($pSheet->getProtection()->getSheet() ? 'true' : 'false')); - $objWriter->writeAttribute('objects', ($pSheet->getProtection()->getObjects() ? 'true' : 'false')); - $objWriter->writeAttribute('scenarios', ($pSheet->getProtection()->getScenarios() ? 'true' : 'false')); - $objWriter->writeAttribute('formatCells', ($pSheet->getProtection()->getFormatCells() ? 'true' : 'false')); - $objWriter->writeAttribute('formatColumns', ($pSheet->getProtection()->getFormatColumns() ? 'true' : 'false')); - $objWriter->writeAttribute('formatRows', ($pSheet->getProtection()->getFormatRows() ? 'true' : 'false')); - $objWriter->writeAttribute('insertColumns', ($pSheet->getProtection()->getInsertColumns() ? 'true' : 'false')); - $objWriter->writeAttribute('insertRows', ($pSheet->getProtection()->getInsertRows() ? 'true' : 'false')); - $objWriter->writeAttribute('insertHyperlinks', ($pSheet->getProtection()->getInsertHyperlinks() ? 'true' : 'false')); - $objWriter->writeAttribute('deleteColumns', ($pSheet->getProtection()->getDeleteColumns() ? 'true' : 'false')); - $objWriter->writeAttribute('deleteRows', ($pSheet->getProtection()->getDeleteRows() ? 'true' : 'false')); - $objWriter->writeAttribute('selectLockedCells', ($pSheet->getProtection()->getSelectLockedCells() ? 'true' : 'false')); - $objWriter->writeAttribute('sort', ($pSheet->getProtection()->getSort() ? 'true' : 'false')); - $objWriter->writeAttribute('autoFilter', ($pSheet->getProtection()->getAutoFilter() ? 'true' : 'false')); - $objWriter->writeAttribute('pivotTables', ($pSheet->getProtection()->getPivotTables() ? 'true' : 'false')); - $objWriter->writeAttribute('selectUnlockedCells', ($pSheet->getProtection()->getSelectUnlockedCells() ? 'true' : 'false')); - $objWriter->endElement(); - } - - /** - * Write ConditionalFormatting - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Worksheet $pSheet Worksheet - * @throws PHPExcel_Writer_Exception - */ - private function writeConditionalFormatting(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) - { - // Conditional id - $id = 1; - - // Loop through styles in the current worksheet - foreach ($pSheet->getConditionalStylesCollection() as $cellCoordinate => $conditionalStyles) { - foreach ($conditionalStyles as $conditional) { - // WHY was this again? - // if ($this->getParentWriter()->getStylesConditionalHashTable()->getIndexForHashCode($conditional->getHashCode()) == '') { - // continue; - // } - if ($conditional->getConditionType() != PHPExcel_Style_Conditional::CONDITION_NONE) { - // conditionalFormatting - $objWriter->startElement('conditionalFormatting'); - $objWriter->writeAttribute('sqref', $cellCoordinate); - - // cfRule - $objWriter->startElement('cfRule'); - $objWriter->writeAttribute('type', $conditional->getConditionType()); - $objWriter->writeAttribute('dxfId', $this->getParentWriter()->getStylesConditionalHashTable()->getIndexForHashCode($conditional->getHashCode())); - $objWriter->writeAttribute('priority', $id++); - - if (($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CELLIS || $conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT) - && $conditional->getOperatorType() != PHPExcel_Style_Conditional::OPERATOR_NONE) { - $objWriter->writeAttribute('operator', $conditional->getOperatorType()); - } - - if ($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT - && !is_null($conditional->getText())) { - $objWriter->writeAttribute('text', $conditional->getText()); - } - - if ($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT - && $conditional->getOperatorType() == PHPExcel_Style_Conditional::OPERATOR_CONTAINSTEXT - && !is_null($conditional->getText())) { - $objWriter->writeElement('formula', 'NOT(ISERROR(SEARCH("' . $conditional->getText() . '",' . $cellCoordinate . ')))'); - } elseif ($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT - && $conditional->getOperatorType() == PHPExcel_Style_Conditional::OPERATOR_BEGINSWITH - && !is_null($conditional->getText())) { - $objWriter->writeElement('formula', 'LEFT(' . $cellCoordinate . ',' . strlen($conditional->getText()) . ')="' . $conditional->getText() . '"'); - } elseif ($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT - && $conditional->getOperatorType() == PHPExcel_Style_Conditional::OPERATOR_ENDSWITH - && !is_null($conditional->getText())) { - $objWriter->writeElement('formula', 'RIGHT(' . $cellCoordinate . ',' . strlen($conditional->getText()) . ')="' . $conditional->getText() . '"'); - } elseif ($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT - && $conditional->getOperatorType() == PHPExcel_Style_Conditional::OPERATOR_NOTCONTAINS - && !is_null($conditional->getText())) { - $objWriter->writeElement('formula', 'ISERROR(SEARCH("' . $conditional->getText() . '",' . $cellCoordinate . '))'); - } elseif ($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CELLIS - || $conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT - || $conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_EXPRESSION) { - foreach ($conditional->getConditions() as $formula) { - // Formula - $objWriter->writeElement('formula', $formula); - } - } - - $objWriter->endElement(); - - $objWriter->endElement(); - } - } - } - } - - /** - * Write DataValidations - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Worksheet $pSheet Worksheet - * @throws PHPExcel_Writer_Exception - */ - private function writeDataValidations(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) - { - // Datavalidation collection - $dataValidationCollection = $pSheet->getDataValidationCollection(); - - // Write data validations? - if (!empty($dataValidationCollection)) { - $objWriter->startElement('dataValidations'); - $objWriter->writeAttribute('count', count($dataValidationCollection)); - - foreach ($dataValidationCollection as $coordinate => $dv) { - $objWriter->startElement('dataValidation'); - - if ($dv->getType() != '') { - $objWriter->writeAttribute('type', $dv->getType()); - } - - if ($dv->getErrorStyle() != '') { - $objWriter->writeAttribute('errorStyle', $dv->getErrorStyle()); - } - - if ($dv->getOperator() != '') { - $objWriter->writeAttribute('operator', $dv->getOperator()); - } - - $objWriter->writeAttribute('allowBlank', ($dv->getAllowBlank() ? '1' : '0')); - $objWriter->writeAttribute('showDropDown', (!$dv->getShowDropDown() ? '1' : '0')); - $objWriter->writeAttribute('showInputMessage', ($dv->getShowInputMessage() ? '1' : '0')); - $objWriter->writeAttribute('showErrorMessage', ($dv->getShowErrorMessage() ? '1' : '0')); - - if ($dv->getErrorTitle() !== '') { - $objWriter->writeAttribute('errorTitle', $dv->getErrorTitle()); - } - if ($dv->getError() !== '') { - $objWriter->writeAttribute('error', $dv->getError()); - } - if ($dv->getPromptTitle() !== '') { - $objWriter->writeAttribute('promptTitle', $dv->getPromptTitle()); - } - if ($dv->getPrompt() !== '') { - $objWriter->writeAttribute('prompt', $dv->getPrompt()); - } - - $objWriter->writeAttribute('sqref', $coordinate); - - if ($dv->getFormula1() !== '') { - $objWriter->writeElement('formula1', $dv->getFormula1()); - } - if ($dv->getFormula2() !== '') { - $objWriter->writeElement('formula2', $dv->getFormula2()); - } - - $objWriter->endElement(); - } - - $objWriter->endElement(); - } - } - - /** - * Write Hyperlinks - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Worksheet $pSheet Worksheet - * @throws PHPExcel_Writer_Exception - */ - private function writeHyperlinks(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) - { - // Hyperlink collection - $hyperlinkCollection = $pSheet->getHyperlinkCollection(); - - // Relation ID - $relationId = 1; - - // Write hyperlinks? - if (!empty($hyperlinkCollection)) { - $objWriter->startElement('hyperlinks'); - - foreach ($hyperlinkCollection as $coordinate => $hyperlink) { - $objWriter->startElement('hyperlink'); - - $objWriter->writeAttribute('ref', $coordinate); - if (!$hyperlink->isInternal()) { - $objWriter->writeAttribute('r:id', 'rId_hyperlink_' . $relationId); - ++$relationId; - } else { - $objWriter->writeAttribute('location', str_replace('sheet://', '', $hyperlink->getUrl())); - } - - if ($hyperlink->getTooltip() != '') { - $objWriter->writeAttribute('tooltip', $hyperlink->getTooltip()); - } - - $objWriter->endElement(); - } - - $objWriter->endElement(); - } - } - - /** - * Write ProtectedRanges - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Worksheet $pSheet Worksheet - * @throws PHPExcel_Writer_Exception - */ - private function writeProtectedRanges(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) - { - if (count($pSheet->getProtectedCells()) > 0) { - // protectedRanges - $objWriter->startElement('protectedRanges'); - - // Loop protectedRanges - foreach ($pSheet->getProtectedCells() as $protectedCell => $passwordHash) { - // protectedRange - $objWriter->startElement('protectedRange'); - $objWriter->writeAttribute('name', 'p' . md5($protectedCell)); - $objWriter->writeAttribute('sqref', $protectedCell); - if (!empty($passwordHash)) { - $objWriter->writeAttribute('password', $passwordHash); - } - $objWriter->endElement(); - } - - $objWriter->endElement(); - } - } - - /** - * Write MergeCells - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Worksheet $pSheet Worksheet - * @throws PHPExcel_Writer_Exception - */ - private function writeMergeCells(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) - { - if (count($pSheet->getMergeCells()) > 0) { - // mergeCells - $objWriter->startElement('mergeCells'); - - // Loop mergeCells - foreach ($pSheet->getMergeCells() as $mergeCell) { - // mergeCell - $objWriter->startElement('mergeCell'); - $objWriter->writeAttribute('ref', $mergeCell); - $objWriter->endElement(); - } - - $objWriter->endElement(); - } - } - - /** - * Write PrintOptions - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Worksheet $pSheet Worksheet - * @throws PHPExcel_Writer_Exception - */ - private function writePrintOptions(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) - { - // printOptions - $objWriter->startElement('printOptions'); - - $objWriter->writeAttribute('gridLines', ($pSheet->getPrintGridlines() ? 'true': 'false')); - $objWriter->writeAttribute('gridLinesSet', 'true'); - - if ($pSheet->getPageSetup()->getHorizontalCentered()) { - $objWriter->writeAttribute('horizontalCentered', 'true'); - } - - if ($pSheet->getPageSetup()->getVerticalCentered()) { - $objWriter->writeAttribute('verticalCentered', 'true'); - } - - $objWriter->endElement(); - } - - /** - * Write PageMargins - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Worksheet $pSheet Worksheet - * @throws PHPExcel_Writer_Exception - */ - private function writePageMargins(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) - { - // pageMargins - $objWriter->startElement('pageMargins'); - $objWriter->writeAttribute('left', PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getLeft())); - $objWriter->writeAttribute('right', PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getRight())); - $objWriter->writeAttribute('top', PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getTop())); - $objWriter->writeAttribute('bottom', PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getBottom())); - $objWriter->writeAttribute('header', PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getHeader())); - $objWriter->writeAttribute('footer', PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getFooter())); - $objWriter->endElement(); - } - - /** - * Write AutoFilter - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Worksheet $pSheet Worksheet - * @throws PHPExcel_Writer_Exception - */ - private function writeAutoFilter(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) - { - $autoFilterRange = $pSheet->getAutoFilter()->getRange(); - if (!empty($autoFilterRange)) { - // autoFilter - $objWriter->startElement('autoFilter'); - - // Strip any worksheet reference from the filter coordinates - $range = PHPExcel_Cell::splitRange($autoFilterRange); - $range = $range[0]; - // Strip any worksheet ref - if (strpos($range[0], '!') !== false) { - list($ws, $range[0]) = explode('!', $range[0]); - } - $range = implode(':', $range); - - $objWriter->writeAttribute('ref', str_replace('$', '', $range)); - - $columns = $pSheet->getAutoFilter()->getColumns(); - if (count($columns > 0)) { - foreach ($columns as $columnID => $column) { - $rules = $column->getRules(); - if (count($rules) > 0) { - $objWriter->startElement('filterColumn'); - $objWriter->writeAttribute('colId', $pSheet->getAutoFilter()->getColumnOffset($columnID)); - - $objWriter->startElement($column->getFilterType()); - if ($column->getJoin() == PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_AND) { - $objWriter->writeAttribute('and', 1); - } - - foreach ($rules as $rule) { - if (($column->getFilterType() === PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_FILTER) && - ($rule->getOperator() === PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL) && - ($rule->getValue() === '')) { - // Filter rule for Blanks - $objWriter->writeAttribute('blank', 1); - } elseif ($rule->getRuleType() === PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMICFILTER) { - // Dynamic Filter Rule - $objWriter->writeAttribute('type', $rule->getGrouping()); - $val = $column->getAttribute('val'); - if ($val !== null) { - $objWriter->writeAttribute('val', $val); - } - $maxVal = $column->getAttribute('maxVal'); - if ($maxVal !== null) { - $objWriter->writeAttribute('maxVal', $maxVal); - } - } elseif ($rule->getRuleType() === PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_TOPTENFILTER) { - // Top 10 Filter Rule - $objWriter->writeAttribute('val', $rule->getValue()); - $objWriter->writeAttribute('percent', (($rule->getOperator() === PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_PERCENT) ? '1' : '0')); - $objWriter->writeAttribute('top', (($rule->getGrouping() === PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_TOP) ? '1': '0')); - } else { - // Filter, DateGroupItem or CustomFilter - $objWriter->startElement($rule->getRuleType()); - - if ($rule->getOperator() !== PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL) { - $objWriter->writeAttribute('operator', $rule->getOperator()); - } - if ($rule->getRuleType() === PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP) { - // Date Group filters - foreach ($rule->getValue() as $key => $value) { - if ($value > '') { - $objWriter->writeAttribute($key, $value); - } - } - $objWriter->writeAttribute('dateTimeGrouping', $rule->getGrouping()); - } else { - $objWriter->writeAttribute('val', $rule->getValue()); - } - - $objWriter->endElement(); - } - } - - $objWriter->endElement(); - - $objWriter->endElement(); - } - } - } - $objWriter->endElement(); - } - } - - /** - * Write PageSetup - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Worksheet $pSheet Worksheet - * @throws PHPExcel_Writer_Exception - */ - private function writePageSetup(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) - { - // pageSetup - $objWriter->startElement('pageSetup'); - $objWriter->writeAttribute('paperSize', $pSheet->getPageSetup()->getPaperSize()); - $objWriter->writeAttribute('orientation', $pSheet->getPageSetup()->getOrientation()); - - if (!is_null($pSheet->getPageSetup()->getScale())) { - $objWriter->writeAttribute('scale', $pSheet->getPageSetup()->getScale()); - } - if (!is_null($pSheet->getPageSetup()->getFitToHeight())) { - $objWriter->writeAttribute('fitToHeight', $pSheet->getPageSetup()->getFitToHeight()); - } else { - $objWriter->writeAttribute('fitToHeight', '0'); - } - if (!is_null($pSheet->getPageSetup()->getFitToWidth())) { - $objWriter->writeAttribute('fitToWidth', $pSheet->getPageSetup()->getFitToWidth()); - } else { - $objWriter->writeAttribute('fitToWidth', '0'); - } - if (!is_null($pSheet->getPageSetup()->getFirstPageNumber())) { - $objWriter->writeAttribute('firstPageNumber', $pSheet->getPageSetup()->getFirstPageNumber()); - $objWriter->writeAttribute('useFirstPageNumber', '1'); - } - - $objWriter->endElement(); - } - - /** - * Write Header / Footer - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Worksheet $pSheet Worksheet - * @throws PHPExcel_Writer_Exception - */ - private function writeHeaderFooter(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) - { - // headerFooter - $objWriter->startElement('headerFooter'); - $objWriter->writeAttribute('differentOddEven', ($pSheet->getHeaderFooter()->getDifferentOddEven() ? 'true' : 'false')); - $objWriter->writeAttribute('differentFirst', ($pSheet->getHeaderFooter()->getDifferentFirst() ? 'true' : 'false')); - $objWriter->writeAttribute('scaleWithDoc', ($pSheet->getHeaderFooter()->getScaleWithDocument() ? 'true' : 'false')); - $objWriter->writeAttribute('alignWithMargins', ($pSheet->getHeaderFooter()->getAlignWithMargins() ? 'true' : 'false')); - - $objWriter->writeElement('oddHeader', $pSheet->getHeaderFooter()->getOddHeader()); - $objWriter->writeElement('oddFooter', $pSheet->getHeaderFooter()->getOddFooter()); - $objWriter->writeElement('evenHeader', $pSheet->getHeaderFooter()->getEvenHeader()); - $objWriter->writeElement('evenFooter', $pSheet->getHeaderFooter()->getEvenFooter()); - $objWriter->writeElement('firstHeader', $pSheet->getHeaderFooter()->getFirstHeader()); - $objWriter->writeElement('firstFooter', $pSheet->getHeaderFooter()->getFirstFooter()); - $objWriter->endElement(); - } - - /** - * Write Breaks - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Worksheet $pSheet Worksheet - * @throws PHPExcel_Writer_Exception - */ - private function writeBreaks(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) - { - // Get row and column breaks - $aRowBreaks = array(); - $aColumnBreaks = array(); - foreach ($pSheet->getBreaks() as $cell => $breakType) { - if ($breakType == PHPExcel_Worksheet::BREAK_ROW) { - $aRowBreaks[] = $cell; - } elseif ($breakType == PHPExcel_Worksheet::BREAK_COLUMN) { - $aColumnBreaks[] = $cell; - } - } - - // rowBreaks - if (!empty($aRowBreaks)) { - $objWriter->startElement('rowBreaks'); - $objWriter->writeAttribute('count', count($aRowBreaks)); - $objWriter->writeAttribute('manualBreakCount', count($aRowBreaks)); - - foreach ($aRowBreaks as $cell) { - $coords = PHPExcel_Cell::coordinateFromString($cell); - - $objWriter->startElement('brk'); - $objWriter->writeAttribute('id', $coords[1]); - $objWriter->writeAttribute('man', '1'); - $objWriter->endElement(); - } - - $objWriter->endElement(); - } - - // Second, write column breaks - if (!empty($aColumnBreaks)) { - $objWriter->startElement('colBreaks'); - $objWriter->writeAttribute('count', count($aColumnBreaks)); - $objWriter->writeAttribute('manualBreakCount', count($aColumnBreaks)); - - foreach ($aColumnBreaks as $cell) { - $coords = PHPExcel_Cell::coordinateFromString($cell); - - $objWriter->startElement('brk'); - $objWriter->writeAttribute('id', PHPExcel_Cell::columnIndexFromString($coords[0]) - 1); - $objWriter->writeAttribute('man', '1'); - $objWriter->endElement(); - } - - $objWriter->endElement(); - } - } - - /** - * Write SheetData - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Worksheet $pSheet Worksheet - * @param string[] $pStringTable String table - * @throws PHPExcel_Writer_Exception - */ - private function writeSheetData(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null, $pStringTable = null) - { - if (is_array($pStringTable)) { - // Flipped stringtable, for faster index searching - $aFlippedStringTable = $this->getParentWriter()->getWriterPart('stringtable')->flipStringTable($pStringTable); - - // sheetData - $objWriter->startElement('sheetData'); - - // Get column count - $colCount = PHPExcel_Cell::columnIndexFromString($pSheet->getHighestColumn()); - - // Highest row number - $highestRow = $pSheet->getHighestRow(); - - // Loop through cells - $cellsByRow = array(); - foreach ($pSheet->getCellCollection() as $cellID) { - $cellAddress = PHPExcel_Cell::coordinateFromString($cellID); - $cellsByRow[$cellAddress[1]][] = $cellID; - } - - $currentRow = 0; - while ($currentRow++ < $highestRow) { - // Get row dimension - $rowDimension = $pSheet->getRowDimension($currentRow); - - // Write current row? - $writeCurrentRow = isset($cellsByRow[$currentRow]) || $rowDimension->getRowHeight() >= 0 || $rowDimension->getVisible() == false || $rowDimension->getCollapsed() == true || $rowDimension->getOutlineLevel() > 0 || $rowDimension->getXfIndex() !== null; - - if ($writeCurrentRow) { - // Start a new row - $objWriter->startElement('row'); - $objWriter->writeAttribute('r', $currentRow); - $objWriter->writeAttribute('spans', '1:' . $colCount); - - // Row dimensions - if ($rowDimension->getRowHeight() >= 0) { - $objWriter->writeAttribute('customHeight', '1'); - $objWriter->writeAttribute('ht', PHPExcel_Shared_String::FormatNumber($rowDimension->getRowHeight())); - } - - // Row visibility - if ($rowDimension->getVisible() == false) { - $objWriter->writeAttribute('hidden', 'true'); - } - - // Collapsed - if ($rowDimension->getCollapsed() == true) { - $objWriter->writeAttribute('collapsed', 'true'); - } - - // Outline level - if ($rowDimension->getOutlineLevel() > 0) { - $objWriter->writeAttribute('outlineLevel', $rowDimension->getOutlineLevel()); - } - - // Style - if ($rowDimension->getXfIndex() !== null) { - $objWriter->writeAttribute('s', $rowDimension->getXfIndex()); - $objWriter->writeAttribute('customFormat', '1'); - } - - // Write cells - if (isset($cellsByRow[$currentRow])) { - foreach ($cellsByRow[$currentRow] as $cellAddress) { - // Write cell - $this->writeCell($objWriter, $pSheet, $cellAddress, $pStringTable, $aFlippedStringTable); - } - } - - // End row - $objWriter->endElement(); - } - } - - $objWriter->endElement(); - } else { - throw new PHPExcel_Writer_Exception("Invalid parameters passed."); - } - } - - /** - * Write Cell - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Worksheet $pSheet Worksheet - * @param PHPExcel_Cell $pCellAddress Cell Address - * @param string[] $pStringTable String table - * @param string[] $pFlippedStringTable String table (flipped), for faster index searching - * @throws PHPExcel_Writer_Exception - */ - private function writeCell(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null, $pCellAddress = null, $pStringTable = null, $pFlippedStringTable = null) - { - if (is_array($pStringTable) && is_array($pFlippedStringTable)) { - // Cell - $pCell = $pSheet->getCell($pCellAddress); - $objWriter->startElement('c'); - $objWriter->writeAttribute('r', $pCellAddress); - - // Sheet styles - if ($pCell->getXfIndex() != '') { - $objWriter->writeAttribute('s', $pCell->getXfIndex()); - } - - // If cell value is supplied, write cell value - $cellValue = $pCell->getValue(); - if (is_object($cellValue) || $cellValue !== '') { - // Map type - $mappedType = $pCell->getDataType(); - - // Write data type depending on its type - switch (strtolower($mappedType)) { - case 'inlinestr': // Inline string - case 's': // String - case 'b': // Boolean - $objWriter->writeAttribute('t', $mappedType); - break; - case 'f': // Formula - $calculatedValue = ($this->getParentWriter()->getPreCalculateFormulas()) ? - $pCell->getCalculatedValue() : - $cellValue; - if (is_string($calculatedValue)) { - $objWriter->writeAttribute('t', 'str'); - } - break; - case 'e': // Error - $objWriter->writeAttribute('t', $mappedType); - } - - // Write data depending on its type - switch (strtolower($mappedType)) { - case 'inlinestr': // Inline string - if (! $cellValue instanceof PHPExcel_RichText) { - $objWriter->writeElement('t', PHPExcel_Shared_String::ControlCharacterPHP2OOXML(htmlspecialchars($cellValue))); - } elseif ($cellValue instanceof PHPExcel_RichText) { - $objWriter->startElement('is'); - $this->getParentWriter()->getWriterPart('stringtable')->writeRichText($objWriter, $cellValue); - $objWriter->endElement(); - } - - break; - case 's': // String - if (! $cellValue instanceof PHPExcel_RichText) { - if (isset($pFlippedStringTable[$cellValue])) { - $objWriter->writeElement('v', $pFlippedStringTable[$cellValue]); - } - } elseif ($cellValue instanceof PHPExcel_RichText) { - $objWriter->writeElement('v', $pFlippedStringTable[$cellValue->getHashCode()]); - } - - break; - case 'f': // Formula - $attributes = $pCell->getFormulaAttributes(); - if ($attributes['t'] == 'array') { - $objWriter->startElement('f'); - $objWriter->writeAttribute('t', 'array'); - $objWriter->writeAttribute('ref', $pCellAddress); - $objWriter->writeAttribute('aca', '1'); - $objWriter->writeAttribute('ca', '1'); - $objWriter->text(substr($cellValue, 1)); - $objWriter->endElement(); - } else { - $objWriter->writeElement('f', substr($cellValue, 1)); - } - if ($this->getParentWriter()->getOffice2003Compatibility() === false) { - if ($this->getParentWriter()->getPreCalculateFormulas()) { -// $calculatedValue = $pCell->getCalculatedValue(); - if (!is_array($calculatedValue) && substr($calculatedValue, 0, 1) != '#') { - $objWriter->writeElement('v', PHPExcel_Shared_String::FormatNumber($calculatedValue)); - } else { - $objWriter->writeElement('v', '0'); - } - } else { - $objWriter->writeElement('v', '0'); - } - } - break; - case 'n': // Numeric - // force point as decimal separator in case current locale uses comma - $objWriter->writeElement('v', str_replace(',', '.', $cellValue)); - break; - case 'b': // Boolean - $objWriter->writeElement('v', ($cellValue ? '1' : '0')); - break; - case 'e': // Error - if (substr($cellValue, 0, 1) == '=') { - $objWriter->writeElement('f', substr($cellValue, 1)); - $objWriter->writeElement('v', substr($cellValue, 1)); - } else { - $objWriter->writeElement('v', $cellValue); - } - - break; - } - } - - $objWriter->endElement(); - } else { - throw new PHPExcel_Writer_Exception("Invalid parameters passed."); - } - } - - /** - * Write Drawings - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Worksheet $pSheet Worksheet - * @param boolean $includeCharts Flag indicating if we should include drawing details for charts - * @throws PHPExcel_Writer_Exception - */ - private function writeDrawings(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null, $includeCharts = false) - { - $chartCount = ($includeCharts) ? $pSheet->getChartCollection()->count() : 0; - // If sheet contains drawings, add the relationships - if (($pSheet->getDrawingCollection()->count() > 0) || - ($chartCount > 0)) { - $objWriter->startElement('drawing'); - $objWriter->writeAttribute('r:id', 'rId1'); - $objWriter->endElement(); - } - } - - /** - * Write LegacyDrawing - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Worksheet $pSheet Worksheet - * @throws PHPExcel_Writer_Exception - */ - private function writeLegacyDrawing(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) - { - // If sheet contains comments, add the relationships - if (count($pSheet->getComments()) > 0) { - $objWriter->startElement('legacyDrawing'); - $objWriter->writeAttribute('r:id', 'rId_comments_vml1'); - $objWriter->endElement(); - } - } - - /** - * Write LegacyDrawingHF - * - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer - * @param PHPExcel_Worksheet $pSheet Worksheet - * @throws PHPExcel_Writer_Exception - */ - private function writeLegacyDrawingHF(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) - { - // If sheet contains images, add the relationships - if (count($pSheet->getHeaderFooter()->getImages()) > 0) { - $objWriter->startElement('legacyDrawingHF'); - $objWriter->writeAttribute('r:id', 'rId_headerfooter_vml1'); - $objWriter->endElement(); - } - } -} diff --git a/application/third_party/PHPExcel/Writer/Excel2007/WriterPart.php b/application/third_party/PHPExcel/Writer/Excel2007/WriterPart.php deleted file mode 100644 index 806ebe51..00000000 --- a/application/third_party/PHPExcel/Writer/Excel2007/WriterPart.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * PHPExcel_Writer_Excel2007_WriterPart - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_Excel2007 - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -abstract class PHPExcel_Writer_Excel2007_WriterPart -{ - /** - * Parent IWriter object - * - * @var PHPExcel_Writer_IWriter - */ - private $parentWriter; - - /** - * Set parent IWriter object - * - * @param PHPExcel_Writer_IWriter $pWriter - * @throws PHPExcel_Writer_Exception - */ - public function setParentWriter(PHPExcel_Writer_IWriter $pWriter = null) - { - $this->parentWriter = $pWriter; - } - - /** - * Get parent IWriter object - * - * @return PHPExcel_Writer_IWriter - * @throws PHPExcel_Writer_Exception - */ - public function getParentWriter() - { - if (!is_null($this->parentWriter)) { - return $this->parentWriter; - } else { - throw new PHPExcel_Writer_Exception("No parent PHPExcel_Writer_IWriter assigned."); - } - } - - /** - * Set parent IWriter object - * - * @param PHPExcel_Writer_IWriter $pWriter - * @throws PHPExcel_Writer_Exception - */ - public function __construct(PHPExcel_Writer_IWriter $pWriter = null) - { - if (!is_null($pWriter)) { - $this->parentWriter = $pWriter; - } - } -} diff --git a/application/third_party/PHPExcel/Writer/Excel5.php b/application/third_party/PHPExcel/Writer/Excel5.php deleted file mode 100644 index 2dede819..00000000 --- a/application/third_party/PHPExcel/Writer/Excel5.php +++ /dev/null @@ -1,904 +0,0 @@ -<?php - -/** - * PHPExcel_Writer_Excel5 - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_Excel5 - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Writer_Excel5 extends PHPExcel_Writer_Abstract implements PHPExcel_Writer_IWriter -{ - /** - * PHPExcel object - * - * @var PHPExcel - */ - private $phpExcel; - - /** - * Total number of shared strings in workbook - * - * @var int - */ - private $strTotal = 0; - - /** - * Number of unique shared strings in workbook - * - * @var int - */ - private $strUnique = 0; - - /** - * Array of unique shared strings in workbook - * - * @var array - */ - private $strTable = array(); - - /** - * Color cache. Mapping between RGB value and color index. - * - * @var array - */ - private $colors; - - /** - * Formula parser - * - * @var PHPExcel_Writer_Excel5_Parser - */ - private $parser; - - /** - * Identifier clusters for drawings. Used in MSODRAWINGGROUP record. - * - * @var array - */ - private $IDCLs; - - /** - * Basic OLE object summary information - * - * @var array - */ - private $summaryInformation; - - /** - * Extended OLE object document summary information - * - * @var array - */ - private $documentSummaryInformation; - - /** - * Create a new PHPExcel_Writer_Excel5 - * - * @param PHPExcel $phpExcel PHPExcel object - */ - public function __construct(PHPExcel $phpExcel) - { - $this->phpExcel = $phpExcel; - - $this->parser = new PHPExcel_Writer_Excel5_Parser(); - } - - /** - * Save PHPExcel to file - * - * @param string $pFilename - * @throws PHPExcel_Writer_Exception - */ - public function save($pFilename = null) - { - - // garbage collect - $this->phpExcel->garbageCollect(); - - $saveDebugLog = PHPExcel_Calculation::getInstance($this->phpExcel)->getDebugLog()->getWriteDebugLog(); - PHPExcel_Calculation::getInstance($this->phpExcel)->getDebugLog()->setWriteDebugLog(false); - $saveDateReturnType = PHPExcel_Calculation_Functions::getReturnDateType(); - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL); - - // initialize colors array - $this->colors = array(); - - // Initialise workbook writer - $this->writerWorkbook = new PHPExcel_Writer_Excel5_Workbook($this->phpExcel, $this->strTotal, $this->strUnique, $this->strTable, $this->colors, $this->parser); - - // Initialise worksheet writers - $countSheets = $this->phpExcel->getSheetCount(); - for ($i = 0; $i < $countSheets; ++$i) { - $this->writerWorksheets[$i] = new PHPExcel_Writer_Excel5_Worksheet($this->strTotal, $this->strUnique, $this->strTable, $this->colors, $this->parser, $this->preCalculateFormulas, $this->phpExcel->getSheet($i)); - } - - // build Escher objects. Escher objects for workbooks needs to be build before Escher object for workbook. - $this->buildWorksheetEschers(); - $this->buildWorkbookEscher(); - - // add 15 identical cell style Xfs - // for now, we use the first cellXf instead of cellStyleXf - $cellXfCollection = $this->phpExcel->getCellXfCollection(); - for ($i = 0; $i < 15; ++$i) { - $this->writerWorkbook->addXfWriter($cellXfCollection[0], true); - } - - // add all the cell Xfs - foreach ($this->phpExcel->getCellXfCollection() as $style) { - $this->writerWorkbook->addXfWriter($style, false); - } - - // add fonts from rich text eleemnts - for ($i = 0; $i < $countSheets; ++$i) { - foreach ($this->writerWorksheets[$i]->phpSheet->getCellCollection() as $cellID) { - $cell = $this->writerWorksheets[$i]->phpSheet->getCell($cellID); - $cVal = $cell->getValue(); - if ($cVal instanceof PHPExcel_RichText) { - $elements = $cVal->getRichTextElements(); - foreach ($elements as $element) { - if ($element instanceof PHPExcel_RichText_Run) { - $font = $element->getFont(); - $this->writerWorksheets[$i]->fontHashIndex[$font->getHashCode()] = $this->writerWorkbook->addFont($font); - } - } - } - } - } - - // initialize OLE file - $workbookStreamName = 'Workbook'; - $OLE = new PHPExcel_Shared_OLE_PPS_File(PHPExcel_Shared_OLE::Asc2Ucs($workbookStreamName)); - - // Write the worksheet streams before the global workbook stream, - // because the byte sizes of these are needed in the global workbook stream - $worksheetSizes = array(); - for ($i = 0; $i < $countSheets; ++$i) { - $this->writerWorksheets[$i]->close(); - $worksheetSizes[] = $this->writerWorksheets[$i]->_datasize; - } - - // add binary data for global workbook stream - $OLE->append($this->writerWorkbook->writeWorkbook($worksheetSizes)); - - // add binary data for sheet streams - for ($i = 0; $i < $countSheets; ++$i) { - $OLE->append($this->writerWorksheets[$i]->getData()); - } - - $this->documentSummaryInformation = $this->writeDocumentSummaryInformation(); - // initialize OLE Document Summary Information - if (isset($this->documentSummaryInformation) && !empty($this->documentSummaryInformation)) { - $OLE_DocumentSummaryInformation = new PHPExcel_Shared_OLE_PPS_File(PHPExcel_Shared_OLE::Asc2Ucs(chr(5) . 'DocumentSummaryInformation')); - $OLE_DocumentSummaryInformation->append($this->documentSummaryInformation); - } - - $this->summaryInformation = $this->writeSummaryInformation(); - // initialize OLE Summary Information - if (isset($this->summaryInformation) && !empty($this->summaryInformation)) { - $OLE_SummaryInformation = new PHPExcel_Shared_OLE_PPS_File(PHPExcel_Shared_OLE::Asc2Ucs(chr(5) . 'SummaryInformation')); - $OLE_SummaryInformation->append($this->summaryInformation); - } - - // define OLE Parts - $arrRootData = array($OLE); - // initialize OLE Properties file - if (isset($OLE_SummaryInformation)) { - $arrRootData[] = $OLE_SummaryInformation; - } - // initialize OLE Extended Properties file - if (isset($OLE_DocumentSummaryInformation)) { - $arrRootData[] = $OLE_DocumentSummaryInformation; - } - - $root = new PHPExcel_Shared_OLE_PPS_Root(time(), time(), $arrRootData); - // save the OLE file - $res = $root->save($pFilename); - - PHPExcel_Calculation_Functions::setReturnDateType($saveDateReturnType); - PHPExcel_Calculation::getInstance($this->phpExcel)->getDebugLog()->setWriteDebugLog($saveDebugLog); - } - - /** - * Set temporary storage directory - * - * @deprecated - * @param string $pValue Temporary storage directory - * @throws PHPExcel_Writer_Exception when directory does not exist - * @return PHPExcel_Writer_Excel5 - */ - public function setTempDir($pValue = '') - { - return $this; - } - - /** - * Build the Worksheet Escher objects - * - */ - private function buildWorksheetEschers() - { - // 1-based index to BstoreContainer - $blipIndex = 0; - $lastReducedSpId = 0; - $lastSpId = 0; - - foreach ($this->phpExcel->getAllsheets() as $sheet) { - // sheet index - $sheetIndex = $sheet->getParent()->getIndex($sheet); - - $escher = null; - - // check if there are any shapes for this sheet - $filterRange = $sheet->getAutoFilter()->getRange(); - if (count($sheet->getDrawingCollection()) == 0 && empty($filterRange)) { - continue; - } - - // create intermediate Escher object - $escher = new PHPExcel_Shared_Escher(); - - // dgContainer - $dgContainer = new PHPExcel_Shared_Escher_DgContainer(); - - // set the drawing index (we use sheet index + 1) - $dgId = $sheet->getParent()->getIndex($sheet) + 1; - $dgContainer->setDgId($dgId); - $escher->setDgContainer($dgContainer); - - // spgrContainer - $spgrContainer = new PHPExcel_Shared_Escher_DgContainer_SpgrContainer(); - $dgContainer->setSpgrContainer($spgrContainer); - - // add one shape which is the group shape - $spContainer = new PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer(); - $spContainer->setSpgr(true); - $spContainer->setSpType(0); - $spContainer->setSpId(($sheet->getParent()->getIndex($sheet) + 1) << 10); - $spgrContainer->addChild($spContainer); - - // add the shapes - - $countShapes[$sheetIndex] = 0; // count number of shapes (minus group shape), in sheet - - foreach ($sheet->getDrawingCollection() as $drawing) { - ++$blipIndex; - - ++$countShapes[$sheetIndex]; - - // add the shape - $spContainer = new PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer(); - - // set the shape type - $spContainer->setSpType(0x004B); - // set the shape flag - $spContainer->setSpFlag(0x02); - - // set the shape index (we combine 1-based sheet index and $countShapes to create unique shape index) - $reducedSpId = $countShapes[$sheetIndex]; - $spId = $reducedSpId - | ($sheet->getParent()->getIndex($sheet) + 1) << 10; - $spContainer->setSpId($spId); - - // keep track of last reducedSpId - $lastReducedSpId = $reducedSpId; - - // keep track of last spId - $lastSpId = $spId; - - // set the BLIP index - $spContainer->setOPT(0x4104, $blipIndex); - - // set coordinates and offsets, client anchor - $coordinates = $drawing->getCoordinates(); - $offsetX = $drawing->getOffsetX(); - $offsetY = $drawing->getOffsetY(); - $width = $drawing->getWidth(); - $height = $drawing->getHeight(); - - $twoAnchor = PHPExcel_Shared_Excel5::oneAnchor2twoAnchor($sheet, $coordinates, $offsetX, $offsetY, $width, $height); - - $spContainer->setStartCoordinates($twoAnchor['startCoordinates']); - $spContainer->setStartOffsetX($twoAnchor['startOffsetX']); - $spContainer->setStartOffsetY($twoAnchor['startOffsetY']); - $spContainer->setEndCoordinates($twoAnchor['endCoordinates']); - $spContainer->setEndOffsetX($twoAnchor['endOffsetX']); - $spContainer->setEndOffsetY($twoAnchor['endOffsetY']); - - $spgrContainer->addChild($spContainer); - } - - // AutoFilters - if (!empty($filterRange)) { - $rangeBounds = PHPExcel_Cell::rangeBoundaries($filterRange); - $iNumColStart = $rangeBounds[0][0]; - $iNumColEnd = $rangeBounds[1][0]; - - $iInc = $iNumColStart; - while ($iInc <= $iNumColEnd) { - ++$countShapes[$sheetIndex]; - - // create an Drawing Object for the dropdown - $oDrawing = new PHPExcel_Worksheet_BaseDrawing(); - // get the coordinates of drawing - $cDrawing = PHPExcel_Cell::stringFromColumnIndex($iInc - 1) . $rangeBounds[0][1]; - $oDrawing->setCoordinates($cDrawing); - $oDrawing->setWorksheet($sheet); - - // add the shape - $spContainer = new PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer(); - // set the shape type - $spContainer->setSpType(0x00C9); - // set the shape flag - $spContainer->setSpFlag(0x01); - - // set the shape index (we combine 1-based sheet index and $countShapes to create unique shape index) - $reducedSpId = $countShapes[$sheetIndex]; - $spId = $reducedSpId - | ($sheet->getParent()->getIndex($sheet) + 1) << 10; - $spContainer->setSpId($spId); - - // keep track of last reducedSpId - $lastReducedSpId = $reducedSpId; - - // keep track of last spId - $lastSpId = $spId; - - $spContainer->setOPT(0x007F, 0x01040104); // Protection -> fLockAgainstGrouping - $spContainer->setOPT(0x00BF, 0x00080008); // Text -> fFitTextToShape - $spContainer->setOPT(0x01BF, 0x00010000); // Fill Style -> fNoFillHitTest - $spContainer->setOPT(0x01FF, 0x00080000); // Line Style -> fNoLineDrawDash - $spContainer->setOPT(0x03BF, 0x000A0000); // Group Shape -> fPrint - - // set coordinates and offsets, client anchor - $endCoordinates = PHPExcel_Cell::stringFromColumnIndex(PHPExcel_Cell::stringFromColumnIndex($iInc - 1)); - $endCoordinates .= $rangeBounds[0][1] + 1; - - $spContainer->setStartCoordinates($cDrawing); - $spContainer->setStartOffsetX(0); - $spContainer->setStartOffsetY(0); - $spContainer->setEndCoordinates($endCoordinates); - $spContainer->setEndOffsetX(0); - $spContainer->setEndOffsetY(0); - - $spgrContainer->addChild($spContainer); - $iInc++; - } - } - - // identifier clusters, used for workbook Escher object - $this->IDCLs[$dgId] = $lastReducedSpId; - - // set last shape index - $dgContainer->setLastSpId($lastSpId); - - // set the Escher object - $this->writerWorksheets[$sheetIndex]->setEscher($escher); - } - } - - /** - * Build the Escher object corresponding to the MSODRAWINGGROUP record - */ - private function buildWorkbookEscher() - { - $escher = null; - - // any drawings in this workbook? - $found = false; - foreach ($this->phpExcel->getAllSheets() as $sheet) { - if (count($sheet->getDrawingCollection()) > 0) { - $found = true; - break; - } - } - - // nothing to do if there are no drawings - if (!$found) { - return; - } - - // if we reach here, then there are drawings in the workbook - $escher = new PHPExcel_Shared_Escher(); - - // dggContainer - $dggContainer = new PHPExcel_Shared_Escher_DggContainer(); - $escher->setDggContainer($dggContainer); - - // set IDCLs (identifier clusters) - $dggContainer->setIDCLs($this->IDCLs); - - // this loop is for determining maximum shape identifier of all drawing - $spIdMax = 0; - $totalCountShapes = 0; - $countDrawings = 0; - - foreach ($this->phpExcel->getAllsheets() as $sheet) { - $sheetCountShapes = 0; // count number of shapes (minus group shape), in sheet - - if (count($sheet->getDrawingCollection()) > 0) { - ++$countDrawings; - - foreach ($sheet->getDrawingCollection() as $drawing) { - ++$sheetCountShapes; - ++$totalCountShapes; - - $spId = $sheetCountShapes | ($this->phpExcel->getIndex($sheet) + 1) << 10; - $spIdMax = max($spId, $spIdMax); - } - } - } - - $dggContainer->setSpIdMax($spIdMax + 1); - $dggContainer->setCDgSaved($countDrawings); - $dggContainer->setCSpSaved($totalCountShapes + $countDrawings); // total number of shapes incl. one group shapes per drawing - - // bstoreContainer - $bstoreContainer = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer(); - $dggContainer->setBstoreContainer($bstoreContainer); - - // the BSE's (all the images) - foreach ($this->phpExcel->getAllsheets() as $sheet) { - foreach ($sheet->getDrawingCollection() as $drawing) { - if ($drawing instanceof PHPExcel_Worksheet_Drawing) { - $filename = $drawing->getPath(); - - list($imagesx, $imagesy, $imageFormat) = getimagesize($filename); - - switch ($imageFormat) { - case 1: // GIF, not supported by BIFF8, we convert to PNG - $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG; - ob_start(); - imagepng(imagecreatefromgif($filename)); - $blipData = ob_get_contents(); - ob_end_clean(); - break; - case 2: // JPEG - $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_JPEG; - $blipData = file_get_contents($filename); - break; - case 3: // PNG - $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG; - $blipData = file_get_contents($filename); - break; - case 6: // Windows DIB (BMP), we convert to PNG - $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG; - ob_start(); - imagepng(PHPExcel_Shared_Drawing::imagecreatefrombmp($filename)); - $blipData = ob_get_contents(); - ob_end_clean(); - break; - default: - continue 2; - } - - $blip = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip(); - $blip->setData($blipData); - - $BSE = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE(); - $BSE->setBlipType($blipType); - $BSE->setBlip($blip); - - $bstoreContainer->addBSE($BSE); - } elseif ($drawing instanceof PHPExcel_Worksheet_MemoryDrawing) { - switch ($drawing->getRenderingFunction()) { - case PHPExcel_Worksheet_MemoryDrawing::RENDERING_JPEG: - $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_JPEG; - $renderingFunction = 'imagejpeg'; - break; - case PHPExcel_Worksheet_MemoryDrawing::RENDERING_GIF: - case PHPExcel_Worksheet_MemoryDrawing::RENDERING_PNG: - case PHPExcel_Worksheet_MemoryDrawing::RENDERING_DEFAULT: - $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG; - $renderingFunction = 'imagepng'; - break; - } - - ob_start(); - call_user_func($renderingFunction, $drawing->getImageResource()); - $blipData = ob_get_contents(); - ob_end_clean(); - - $blip = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip(); - $blip->setData($blipData); - - $BSE = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE(); - $BSE->setBlipType($blipType); - $BSE->setBlip($blip); - - $bstoreContainer->addBSE($BSE); - } - } - } - - // Set the Escher object - $this->writerWorkbook->setEscher($escher); - } - - /** - * Build the OLE Part for DocumentSummary Information - * @return string - */ - private function writeDocumentSummaryInformation() - { - // offset: 0; size: 2; must be 0xFE 0xFF (UTF-16 LE byte order mark) - $data = pack('v', 0xFFFE); - // offset: 2; size: 2; - $data .= pack('v', 0x0000); - // offset: 4; size: 2; OS version - $data .= pack('v', 0x0106); - // offset: 6; size: 2; OS indicator - $data .= pack('v', 0x0002); - // offset: 8; size: 16 - $data .= pack('VVVV', 0x00, 0x00, 0x00, 0x00); - // offset: 24; size: 4; section count - $data .= pack('V', 0x0001); - - // offset: 28; size: 16; first section's class id: 02 d5 cd d5 9c 2e 1b 10 93 97 08 00 2b 2c f9 ae - $data .= pack('vvvvvvvv', 0xD502, 0xD5CD, 0x2E9C, 0x101B, 0x9793, 0x0008, 0x2C2B, 0xAEF9); - // offset: 44; size: 4; offset of the start - $data .= pack('V', 0x30); - - // SECTION - $dataSection = array(); - $dataSection_NumProps = 0; - $dataSection_Summary = ''; - $dataSection_Content = ''; - - // GKPIDDSI_CODEPAGE: CodePage - $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x01), - 'offset' => array('pack' => 'V'), - 'type' => array('pack' => 'V', 'data' => 0x02), // 2 byte signed integer - 'data' => array('data' => 1252)); - $dataSection_NumProps++; - - // GKPIDDSI_CATEGORY : Category - if ($this->phpExcel->getProperties()->getCategory()) { - $dataProp = $this->phpExcel->getProperties()->getCategory(); - $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x02), - 'offset' => array('pack' => 'V'), - 'type' => array('pack' => 'V', 'data' => 0x1E), - 'data' => array('data' => $dataProp, 'length' => strlen($dataProp))); - $dataSection_NumProps++; - } - // GKPIDDSI_VERSION :Version of the application that wrote the property storage - $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x17), - 'offset' => array('pack' => 'V'), - 'type' => array('pack' => 'V', 'data' => 0x03), - 'data' => array('pack' => 'V', 'data' => 0x000C0000)); - $dataSection_NumProps++; - // GKPIDDSI_SCALE : FALSE - $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x0B), - 'offset' => array('pack' => 'V'), - 'type' => array('pack' => 'V', 'data' => 0x0B), - 'data' => array('data' => false)); - $dataSection_NumProps++; - // GKPIDDSI_LINKSDIRTY : True if any of the values for the linked properties have changed outside of the application - $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x10), - 'offset' => array('pack' => 'V'), - 'type' => array('pack' => 'V', 'data' => 0x0B), - 'data' => array('data' => false)); - $dataSection_NumProps++; - // GKPIDDSI_SHAREDOC : FALSE - $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x13), - 'offset' => array('pack' => 'V'), - 'type' => array('pack' => 'V', 'data' => 0x0B), - 'data' => array('data' => false)); - $dataSection_NumProps++; - // GKPIDDSI_HYPERLINKSCHANGED : True if any of the values for the _PID_LINKS (hyperlink text) have changed outside of the application - $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x16), - 'offset' => array('pack' => 'V'), - 'type' => array('pack' => 'V', 'data' => 0x0B), - 'data' => array('data' => false)); - $dataSection_NumProps++; - - // GKPIDDSI_DOCSPARTS - // MS-OSHARED p75 (2.3.3.2.2.1) - // Structure is VtVecUnalignedLpstrValue (2.3.3.1.9) - // cElements - $dataProp = pack('v', 0x0001); - $dataProp .= pack('v', 0x0000); - // array of UnalignedLpstr - // cch - $dataProp .= pack('v', 0x000A); - $dataProp .= pack('v', 0x0000); - // value - $dataProp .= 'Worksheet'.chr(0); - - $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x0D), - 'offset' => array('pack' => 'V'), - 'type' => array('pack' => 'V', 'data' => 0x101E), - 'data' => array('data' => $dataProp, 'length' => strlen($dataProp))); - $dataSection_NumProps++; - - // GKPIDDSI_HEADINGPAIR - // VtVecHeadingPairValue - // cElements - $dataProp = pack('v', 0x0002); - $dataProp .= pack('v', 0x0000); - // Array of vtHeadingPair - // vtUnalignedString - headingString - // stringType - $dataProp .= pack('v', 0x001E); - // padding - $dataProp .= pack('v', 0x0000); - // UnalignedLpstr - // cch - $dataProp .= pack('v', 0x0013); - $dataProp .= pack('v', 0x0000); - // value - $dataProp .= 'Feuilles de calcul'; - // vtUnalignedString - headingParts - // wType : 0x0003 = 32 bit signed integer - $dataProp .= pack('v', 0x0300); - // padding - $dataProp .= pack('v', 0x0000); - // value - $dataProp .= pack('v', 0x0100); - $dataProp .= pack('v', 0x0000); - $dataProp .= pack('v', 0x0000); - $dataProp .= pack('v', 0x0000); - - $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x0C), - 'offset' => array('pack' => 'V'), - 'type' => array('pack' => 'V', 'data' => 0x100C), - 'data' => array('data' => $dataProp, 'length' => strlen($dataProp))); - $dataSection_NumProps++; - - // 4 Section Length - // 4 Property count - // 8 * $dataSection_NumProps (8 = ID (4) + OffSet(4)) - $dataSection_Content_Offset = 8 + $dataSection_NumProps * 8; - foreach ($dataSection as $dataProp) { - // Summary - $dataSection_Summary .= pack($dataProp['summary']['pack'], $dataProp['summary']['data']); - // Offset - $dataSection_Summary .= pack($dataProp['offset']['pack'], $dataSection_Content_Offset); - // DataType - $dataSection_Content .= pack($dataProp['type']['pack'], $dataProp['type']['data']); - // Data - if ($dataProp['type']['data'] == 0x02) { // 2 byte signed integer - $dataSection_Content .= pack('V', $dataProp['data']['data']); - - $dataSection_Content_Offset += 4 + 4; - } elseif ($dataProp['type']['data'] == 0x03) { // 4 byte signed integer - $dataSection_Content .= pack('V', $dataProp['data']['data']); - - $dataSection_Content_Offset += 4 + 4; - } elseif ($dataProp['type']['data'] == 0x0B) { // Boolean - if ($dataProp['data']['data'] == false) { - $dataSection_Content .= pack('V', 0x0000); - } else { - $dataSection_Content .= pack('V', 0x0001); - } - $dataSection_Content_Offset += 4 + 4; - } elseif ($dataProp['type']['data'] == 0x1E) { // null-terminated string prepended by dword string length - // Null-terminated string - $dataProp['data']['data'] .= chr(0); - $dataProp['data']['length'] += 1; - // Complete the string with null string for being a %4 - $dataProp['data']['length'] = $dataProp['data']['length'] + ((4 - $dataProp['data']['length'] % 4)==4 ? 0 : (4 - $dataProp['data']['length'] % 4)); - $dataProp['data']['data'] = str_pad($dataProp['data']['data'], $dataProp['data']['length'], chr(0), STR_PAD_RIGHT); - - $dataSection_Content .= pack('V', $dataProp['data']['length']); - $dataSection_Content .= $dataProp['data']['data']; - - $dataSection_Content_Offset += 4 + 4 + strlen($dataProp['data']['data']); - } elseif ($dataProp['type']['data'] == 0x40) { // Filetime (64-bit value representing the number of 100-nanosecond intervals since January 1, 1601) - $dataSection_Content .= $dataProp['data']['data']; - - $dataSection_Content_Offset += 4 + 8; - } else { - // Data Type Not Used at the moment - $dataSection_Content .= $dataProp['data']['data']; - - $dataSection_Content_Offset += 4 + $dataProp['data']['length']; - } - } - // Now $dataSection_Content_Offset contains the size of the content - - // section header - // offset: $secOffset; size: 4; section length - // + x Size of the content (summary + content) - $data .= pack('V', $dataSection_Content_Offset); - // offset: $secOffset+4; size: 4; property count - $data .= pack('V', $dataSection_NumProps); - // Section Summary - $data .= $dataSection_Summary; - // Section Content - $data .= $dataSection_Content; - - return $data; - } - - /** - * Build the OLE Part for Summary Information - * @return string - */ - private function writeSummaryInformation() - { - // offset: 0; size: 2; must be 0xFE 0xFF (UTF-16 LE byte order mark) - $data = pack('v', 0xFFFE); - // offset: 2; size: 2; - $data .= pack('v', 0x0000); - // offset: 4; size: 2; OS version - $data .= pack('v', 0x0106); - // offset: 6; size: 2; OS indicator - $data .= pack('v', 0x0002); - // offset: 8; size: 16 - $data .= pack('VVVV', 0x00, 0x00, 0x00, 0x00); - // offset: 24; size: 4; section count - $data .= pack('V', 0x0001); - - // offset: 28; size: 16; first section's class id: e0 85 9f f2 f9 4f 68 10 ab 91 08 00 2b 27 b3 d9 - $data .= pack('vvvvvvvv', 0x85E0, 0xF29F, 0x4FF9, 0x1068, 0x91AB, 0x0008, 0x272B, 0xD9B3); - // offset: 44; size: 4; offset of the start - $data .= pack('V', 0x30); - - // SECTION - $dataSection = array(); - $dataSection_NumProps = 0; - $dataSection_Summary = ''; - $dataSection_Content = ''; - - // CodePage : CP-1252 - $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x01), - 'offset' => array('pack' => 'V'), - 'type' => array('pack' => 'V', 'data' => 0x02), // 2 byte signed integer - 'data' => array('data' => 1252)); - $dataSection_NumProps++; - - // Title - if ($this->phpExcel->getProperties()->getTitle()) { - $dataProp = $this->phpExcel->getProperties()->getTitle(); - $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x02), - 'offset' => array('pack' => 'V'), - 'type' => array('pack' => 'V', 'data' => 0x1E), // null-terminated string prepended by dword string length - 'data' => array('data' => $dataProp, 'length' => strlen($dataProp))); - $dataSection_NumProps++; - } - // Subject - if ($this->phpExcel->getProperties()->getSubject()) { - $dataProp = $this->phpExcel->getProperties()->getSubject(); - $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x03), - 'offset' => array('pack' => 'V'), - 'type' => array('pack' => 'V', 'data' => 0x1E), // null-terminated string prepended by dword string length - 'data' => array('data' => $dataProp, 'length' => strlen($dataProp))); - $dataSection_NumProps++; - } - // Author (Creator) - if ($this->phpExcel->getProperties()->getCreator()) { - $dataProp = $this->phpExcel->getProperties()->getCreator(); - $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x04), - 'offset' => array('pack' => 'V'), - 'type' => array('pack' => 'V', 'data' => 0x1E), // null-terminated string prepended by dword string length - 'data' => array('data' => $dataProp, 'length' => strlen($dataProp))); - $dataSection_NumProps++; - } - // Keywords - if ($this->phpExcel->getProperties()->getKeywords()) { - $dataProp = $this->phpExcel->getProperties()->getKeywords(); - $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x05), - 'offset' => array('pack' => 'V'), - 'type' => array('pack' => 'V', 'data' => 0x1E), // null-terminated string prepended by dword string length - 'data' => array('data' => $dataProp, 'length' => strlen($dataProp))); - $dataSection_NumProps++; - } - // Comments (Description) - if ($this->phpExcel->getProperties()->getDescription()) { - $dataProp = $this->phpExcel->getProperties()->getDescription(); - $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x06), - 'offset' => array('pack' => 'V'), - 'type' => array('pack' => 'V', 'data' => 0x1E), // null-terminated string prepended by dword string length - 'data' => array('data' => $dataProp, 'length' => strlen($dataProp))); - $dataSection_NumProps++; - } - // Last Saved By (LastModifiedBy) - if ($this->phpExcel->getProperties()->getLastModifiedBy()) { - $dataProp = $this->phpExcel->getProperties()->getLastModifiedBy(); - $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x08), - 'offset' => array('pack' => 'V'), - 'type' => array('pack' => 'V', 'data' => 0x1E), // null-terminated string prepended by dword string length - 'data' => array('data' => $dataProp, 'length' => strlen($dataProp))); - $dataSection_NumProps++; - } - // Created Date/Time - if ($this->phpExcel->getProperties()->getCreated()) { - $dataProp = $this->phpExcel->getProperties()->getCreated(); - $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x0C), - 'offset' => array('pack' => 'V'), - 'type' => array('pack' => 'V', 'data' => 0x40), // Filetime (64-bit value representing the number of 100-nanosecond intervals since January 1, 1601) - 'data' => array('data' => PHPExcel_Shared_OLE::LocalDate2OLE($dataProp))); - $dataSection_NumProps++; - } - // Modified Date/Time - if ($this->phpExcel->getProperties()->getModified()) { - $dataProp = $this->phpExcel->getProperties()->getModified(); - $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x0D), - 'offset' => array('pack' => 'V'), - 'type' => array('pack' => 'V', 'data' => 0x40), // Filetime (64-bit value representing the number of 100-nanosecond intervals since January 1, 1601) - 'data' => array('data' => PHPExcel_Shared_OLE::LocalDate2OLE($dataProp))); - $dataSection_NumProps++; - } - // Security - $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x13), - 'offset' => array('pack' => 'V'), - 'type' => array('pack' => 'V', 'data' => 0x03), // 4 byte signed integer - 'data' => array('data' => 0x00)); - $dataSection_NumProps++; - - - // 4 Section Length - // 4 Property count - // 8 * $dataSection_NumProps (8 = ID (4) + OffSet(4)) - $dataSection_Content_Offset = 8 + $dataSection_NumProps * 8; - foreach ($dataSection as $dataProp) { - // Summary - $dataSection_Summary .= pack($dataProp['summary']['pack'], $dataProp['summary']['data']); - // Offset - $dataSection_Summary .= pack($dataProp['offset']['pack'], $dataSection_Content_Offset); - // DataType - $dataSection_Content .= pack($dataProp['type']['pack'], $dataProp['type']['data']); - // Data - if ($dataProp['type']['data'] == 0x02) { // 2 byte signed integer - $dataSection_Content .= pack('V', $dataProp['data']['data']); - - $dataSection_Content_Offset += 4 + 4; - } elseif ($dataProp['type']['data'] == 0x03) { // 4 byte signed integer - $dataSection_Content .= pack('V', $dataProp['data']['data']); - - $dataSection_Content_Offset += 4 + 4; - } elseif ($dataProp['type']['data'] == 0x1E) { // null-terminated string prepended by dword string length - // Null-terminated string - $dataProp['data']['data'] .= chr(0); - $dataProp['data']['length'] += 1; - // Complete the string with null string for being a %4 - $dataProp['data']['length'] = $dataProp['data']['length'] + ((4 - $dataProp['data']['length'] % 4)==4 ? 0 : (4 - $dataProp['data']['length'] % 4)); - $dataProp['data']['data'] = str_pad($dataProp['data']['data'], $dataProp['data']['length'], chr(0), STR_PAD_RIGHT); - - $dataSection_Content .= pack('V', $dataProp['data']['length']); - $dataSection_Content .= $dataProp['data']['data']; - - $dataSection_Content_Offset += 4 + 4 + strlen($dataProp['data']['data']); - } elseif ($dataProp['type']['data'] == 0x40) { // Filetime (64-bit value representing the number of 100-nanosecond intervals since January 1, 1601) - $dataSection_Content .= $dataProp['data']['data']; - - $dataSection_Content_Offset += 4 + 8; - } else { - // Data Type Not Used at the moment - } - } - // Now $dataSection_Content_Offset contains the size of the content - - // section header - // offset: $secOffset; size: 4; section length - // + x Size of the content (summary + content) - $data .= pack('V', $dataSection_Content_Offset); - // offset: $secOffset+4; size: 4; property count - $data .= pack('V', $dataSection_NumProps); - // Section Summary - $data .= $dataSection_Summary; - // Section Content - $data .= $dataSection_Content; - - return $data; - } -} diff --git a/application/third_party/PHPExcel/Writer/Excel5/BIFFwriter.php b/application/third_party/PHPExcel/Writer/Excel5/BIFFwriter.php deleted file mode 100644 index a7957523..00000000 --- a/application/third_party/PHPExcel/Writer/Excel5/BIFFwriter.php +++ /dev/null @@ -1,246 +0,0 @@ -<?php - -/** - * PHPExcel_Writer_Excel5_BIFFwriter - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_Excel5 - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -// Original file header of PEAR::Spreadsheet_Excel_Writer_BIFFwriter (used as the base for this class): -// ----------------------------------------------------------------------------------------- -// * Module written/ported by Xavier Noguer <xnoguer@rezebra.com> -// * -// * The majority of this is _NOT_ my code. I simply ported it from the -// * PERL Spreadsheet::WriteExcel module. -// * -// * The author of the Spreadsheet::WriteExcel module is John McNamara -// * <jmcnamara@cpan.org> -// * -// * I _DO_ maintain this code, and John McNamara has nothing to do with the -// * porting of this code to PHP. Any questions directly related to this -// * class library should be directed to me. -// * -// * License Information: -// * -// * Spreadsheet_Excel_Writer: A library for generating Excel Spreadsheets -// * Copyright (c) 2002-2003 Xavier Noguer xnoguer@rezebra.com -// * -// * This library is free software; you can redistribute it and/or -// * modify it under the terms of the GNU Lesser General Public -// * License as published by the Free Software Foundation; either -// * version 2.1 of the License, or (at your option) any later version. -// * -// * This library is distributed in the hope that it will be useful, -// * but WITHOUT ANY WARRANTY; without even the implied warranty of -// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// * Lesser General Public License for more details. -// * -// * You should have received a copy of the GNU Lesser General Public -// * License along with this library; if not, write to the Free Software -// * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// */ -class PHPExcel_Writer_Excel5_BIFFwriter -{ - /** - * The byte order of this architecture. 0 => little endian, 1 => big endian - * @var integer - */ - private static $byteOrder; - - /** - * The string containing the data of the BIFF stream - * @var string - */ - public $_data; - - /** - * The size of the data in bytes. Should be the same as strlen($this->_data) - * @var integer - */ - public $_datasize; - - /** - * The maximum length for a BIFF record (excluding record header and length field). See addContinue() - * @var integer - * @see addContinue() - */ - private $limit = 8224; - - /** - * Constructor - */ - public function __construct() - { - $this->_data = ''; - $this->_datasize = 0; -// $this->limit = 8224; - } - - /** - * Determine the byte order and store it as class data to avoid - * recalculating it for each call to new(). - * - * @return int - */ - public static function getByteOrder() - { - if (!isset(self::$byteOrder)) { - // Check if "pack" gives the required IEEE 64bit float - $teststr = pack("d", 1.2345); - $number = pack("C8", 0x8D, 0x97, 0x6E, 0x12, 0x83, 0xC0, 0xF3, 0x3F); - if ($number == $teststr) { - $byte_order = 0; // Little Endian - } elseif ($number == strrev($teststr)) { - $byte_order = 1; // Big Endian - } else { - // Give up. I'll fix this in a later version. - throw new PHPExcel_Writer_Exception("Required floating point format not supported on this platform."); - } - self::$byteOrder = $byte_order; - } - - return self::$byteOrder; - } - - /** - * General storage function - * - * @param string $data binary data to append - * @access private - */ - protected function append($data) - { - if (strlen($data) - 4 > $this->limit) { - $data = $this->addContinue($data); - } - $this->_data .= $data; - $this->_datasize += strlen($data); - } - - /** - * General storage function like append, but returns string instead of modifying $this->_data - * - * @param string $data binary data to write - * @return string - */ - public function writeData($data) - { - if (strlen($data) - 4 > $this->limit) { - $data = $this->addContinue($data); - } - $this->_datasize += strlen($data); - - return $data; - } - - /** - * Writes Excel BOF record to indicate the beginning of a stream or - * sub-stream in the BIFF file. - * - * @param integer $type Type of BIFF file to write: 0x0005 Workbook, - * 0x0010 Worksheet. - * @access private - */ - protected function storeBof($type) - { - $record = 0x0809; // Record identifier (BIFF5-BIFF8) - $length = 0x0010; - - // by inspection of real files, MS Office Excel 2007 writes the following - $unknown = pack("VV", 0x000100D1, 0x00000406); - - $build = 0x0DBB; // Excel 97 - $year = 0x07CC; // Excel 97 - - $version = 0x0600; // BIFF8 - - $header = pack("vv", $record, $length); - $data = pack("vvvv", $version, $type, $build, $year); - $this->append($header . $data . $unknown); - } - - /** - * Writes Excel EOF record to indicate the end of a BIFF stream. - * - * @access private - */ - protected function storeEof() - { - $record = 0x000A; // Record identifier - $length = 0x0000; // Number of bytes to follow - - $header = pack("vv", $record, $length); - $this->append($header); - } - - /** - * Writes Excel EOF record to indicate the end of a BIFF stream. - * - * @access private - */ - public function writeEof() - { - $record = 0x000A; // Record identifier - $length = 0x0000; // Number of bytes to follow - $header = pack("vv", $record, $length); - return $this->writeData($header); - } - - /** - * Excel limits the size of BIFF records. In Excel 5 the limit is 2084 bytes. In - * Excel 97 the limit is 8228 bytes. Records that are longer than these limits - * must be split up into CONTINUE blocks. - * - * This function takes a long BIFF record and inserts CONTINUE records as - * necessary. - * - * @param string $data The original binary data to be written - * @return string A very convenient string of continue blocks - * @access private - */ - private function addContinue($data) - { - $limit = $this->limit; - $record = 0x003C; // Record identifier - - // The first 2080/8224 bytes remain intact. However, we have to change - // the length field of the record. - $tmp = substr($data, 0, 2) . pack("v", $limit) . substr($data, 4, $limit); - - $header = pack("vv", $record, $limit); // Headers for continue records - - // Retrieve chunks of 2080/8224 bytes +4 for the header. - $data_length = strlen($data); - for ($i = $limit + 4; $i < ($data_length - $limit); $i += $limit) { - $tmp .= $header; - $tmp .= substr($data, $i, $limit); - } - - // Retrieve the last chunk of data - $header = pack("vv", $record, strlen($data) - $i); - $tmp .= $header; - $tmp .= substr($data, $i, strlen($data) - $i); - - return $tmp; - } -} diff --git a/application/third_party/PHPExcel/Writer/Excel5/Escher.php b/application/third_party/PHPExcel/Writer/Excel5/Escher.php deleted file mode 100644 index c37fda9b..00000000 --- a/application/third_party/PHPExcel/Writer/Excel5/Escher.php +++ /dev/null @@ -1,523 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_Excel5 - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - - -/** - * PHPExcel_Shared_Escher_DggContainer_BstoreContainer - * - * @category PHPExcel - * @package PHPExcel_Writer_Excel5 - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - */ -class PHPExcel_Writer_Excel5_Escher -{ - /** - * The object we are writing - */ - private $object; - - /** - * The written binary data - */ - private $data; - - /** - * Shape offsets. Positions in binary stream where a new shape record begins - * - * @var array - */ - private $spOffsets; - - /** - * Shape types. - * - * @var array - */ - private $spTypes; - - /** - * Constructor - * - * @param mixed - */ - public function __construct($object) - { - $this->object = $object; - } - - /** - * Process the object to be written - */ - public function close() - { - // initialize - $this->data = ''; - - switch (get_class($this->object)) { - case 'PHPExcel_Shared_Escher': - if ($dggContainer = $this->object->getDggContainer()) { - $writer = new PHPExcel_Writer_Excel5_Escher($dggContainer); - $this->data = $writer->close(); - } elseif ($dgContainer = $this->object->getDgContainer()) { - $writer = new PHPExcel_Writer_Excel5_Escher($dgContainer); - $this->data = $writer->close(); - $this->spOffsets = $writer->getSpOffsets(); - $this->spTypes = $writer->getSpTypes(); - } - break; - case 'PHPExcel_Shared_Escher_DggContainer': - // this is a container record - - // initialize - $innerData = ''; - - // write the dgg - $recVer = 0x0; - $recInstance = 0x0000; - $recType = 0xF006; - - $recVerInstance = $recVer; - $recVerInstance |= $recInstance << 4; - - // dgg data - $dggData = - pack( - 'VVVV', - $this->object->getSpIdMax(), // maximum shape identifier increased by one - $this->object->getCDgSaved() + 1, // number of file identifier clusters increased by one - $this->object->getCSpSaved(), - $this->object->getCDgSaved() // count total number of drawings saved - ); - - // add file identifier clusters (one per drawing) - $IDCLs = $this->object->getIDCLs(); - - foreach ($IDCLs as $dgId => $maxReducedSpId) { - $dggData .= pack('VV', $dgId, $maxReducedSpId + 1); - } - - $header = pack('vvV', $recVerInstance, $recType, strlen($dggData)); - $innerData .= $header . $dggData; - - // write the bstoreContainer - if ($bstoreContainer = $this->object->getBstoreContainer()) { - $writer = new PHPExcel_Writer_Excel5_Escher($bstoreContainer); - $innerData .= $writer->close(); - } - - // write the record - $recVer = 0xF; - $recInstance = 0x0000; - $recType = 0xF000; - $length = strlen($innerData); - - $recVerInstance = $recVer; - $recVerInstance |= $recInstance << 4; - - $header = pack('vvV', $recVerInstance, $recType, $length); - - $this->data = $header . $innerData; - break; - case 'PHPExcel_Shared_Escher_DggContainer_BstoreContainer': - // this is a container record - - // initialize - $innerData = ''; - - // treat the inner data - if ($BSECollection = $this->object->getBSECollection()) { - foreach ($BSECollection as $BSE) { - $writer = new PHPExcel_Writer_Excel5_Escher($BSE); - $innerData .= $writer->close(); - } - } - - // write the record - $recVer = 0xF; - $recInstance = count($this->object->getBSECollection()); - $recType = 0xF001; - $length = strlen($innerData); - - $recVerInstance = $recVer; - $recVerInstance |= $recInstance << 4; - - $header = pack('vvV', $recVerInstance, $recType, $length); - - $this->data = $header . $innerData; - break; - case 'PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE': - // this is a semi-container record - - // initialize - $innerData = ''; - - // here we treat the inner data - if ($blip = $this->object->getBlip()) { - $writer = new PHPExcel_Writer_Excel5_Escher($blip); - $innerData .= $writer->close(); - } - - // initialize - $data = ''; - - $btWin32 = $this->object->getBlipType(); - $btMacOS = $this->object->getBlipType(); - $data .= pack('CC', $btWin32, $btMacOS); - - $rgbUid = pack('VVVV', 0, 0, 0, 0); // todo - $data .= $rgbUid; - - $tag = 0; - $size = strlen($innerData); - $cRef = 1; - $foDelay = 0; //todo - $unused1 = 0x0; - $cbName = 0x0; - $unused2 = 0x0; - $unused3 = 0x0; - $data .= pack('vVVVCCCC', $tag, $size, $cRef, $foDelay, $unused1, $cbName, $unused2, $unused3); - - $data .= $innerData; - - // write the record - $recVer = 0x2; - $recInstance = $this->object->getBlipType(); - $recType = 0xF007; - $length = strlen($data); - - $recVerInstance = $recVer; - $recVerInstance |= $recInstance << 4; - - $header = pack('vvV', $recVerInstance, $recType, $length); - - $this->data = $header; - - $this->data .= $data; - break; - case 'PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip': - // this is an atom record - - // write the record - switch ($this->object->getParent()->getBlipType()) { - case PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_JPEG: - // initialize - $innerData = ''; - - $rgbUid1 = pack('VVVV', 0, 0, 0, 0); // todo - $innerData .= $rgbUid1; - - $tag = 0xFF; // todo - $innerData .= pack('C', $tag); - - $innerData .= $this->object->getData(); - - $recVer = 0x0; - $recInstance = 0x46A; - $recType = 0xF01D; - $length = strlen($innerData); - - $recVerInstance = $recVer; - $recVerInstance |= $recInstance << 4; - - $header = pack('vvV', $recVerInstance, $recType, $length); - - $this->data = $header; - - $this->data .= $innerData; - break; - - case PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG: - // initialize - $innerData = ''; - - $rgbUid1 = pack('VVVV', 0, 0, 0, 0); // todo - $innerData .= $rgbUid1; - - $tag = 0xFF; // todo - $innerData .= pack('C', $tag); - - $innerData .= $this->object->getData(); - - $recVer = 0x0; - $recInstance = 0x6E0; - $recType = 0xF01E; - $length = strlen($innerData); - - $recVerInstance = $recVer; - $recVerInstance |= $recInstance << 4; - - $header = pack('vvV', $recVerInstance, $recType, $length); - - $this->data = $header; - - $this->data .= $innerData; - break; - } - break; - case 'PHPExcel_Shared_Escher_DgContainer': - // this is a container record - - // initialize - $innerData = ''; - - // write the dg - $recVer = 0x0; - $recInstance = $this->object->getDgId(); - $recType = 0xF008; - $length = 8; - - $recVerInstance = $recVer; - $recVerInstance |= $recInstance << 4; - - $header = pack('vvV', $recVerInstance, $recType, $length); - - // number of shapes in this drawing (including group shape) - $countShapes = count($this->object->getSpgrContainer()->getChildren()); - $innerData .= $header . pack('VV', $countShapes, $this->object->getLastSpId()); - //$innerData .= $header . pack('VV', 0, 0); - - // write the spgrContainer - if ($spgrContainer = $this->object->getSpgrContainer()) { - $writer = new PHPExcel_Writer_Excel5_Escher($spgrContainer); - $innerData .= $writer->close(); - - // get the shape offsets relative to the spgrContainer record - $spOffsets = $writer->getSpOffsets(); - $spTypes = $writer->getSpTypes(); - - // save the shape offsets relative to dgContainer - foreach ($spOffsets as & $spOffset) { - $spOffset += 24; // add length of dgContainer header data (8 bytes) plus dg data (16 bytes) - } - - $this->spOffsets = $spOffsets; - $this->spTypes = $spTypes; - } - - // write the record - $recVer = 0xF; - $recInstance = 0x0000; - $recType = 0xF002; - $length = strlen($innerData); - - $recVerInstance = $recVer; - $recVerInstance |= $recInstance << 4; - - $header = pack('vvV', $recVerInstance, $recType, $length); - - $this->data = $header . $innerData; - break; - case 'PHPExcel_Shared_Escher_DgContainer_SpgrContainer': - // this is a container record - - // initialize - $innerData = ''; - - // initialize spape offsets - $totalSize = 8; - $spOffsets = array(); - $spTypes = array(); - - // treat the inner data - foreach ($this->object->getChildren() as $spContainer) { - $writer = new PHPExcel_Writer_Excel5_Escher($spContainer); - $spData = $writer->close(); - $innerData .= $spData; - - // save the shape offsets (where new shape records begin) - $totalSize += strlen($spData); - $spOffsets[] = $totalSize; - - $spTypes = array_merge($spTypes, $writer->getSpTypes()); - } - - // write the record - $recVer = 0xF; - $recInstance = 0x0000; - $recType = 0xF003; - $length = strlen($innerData); - - $recVerInstance = $recVer; - $recVerInstance |= $recInstance << 4; - - $header = pack('vvV', $recVerInstance, $recType, $length); - - $this->data = $header . $innerData; - $this->spOffsets = $spOffsets; - $this->spTypes = $spTypes; - break; - case 'PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer': - // initialize - $data = ''; - - // build the data - - // write group shape record, if necessary? - if ($this->object->getSpgr()) { - $recVer = 0x1; - $recInstance = 0x0000; - $recType = 0xF009; - $length = 0x00000010; - - $recVerInstance = $recVer; - $recVerInstance |= $recInstance << 4; - - $header = pack('vvV', $recVerInstance, $recType, $length); - - $data .= $header . pack('VVVV', 0, 0, 0, 0); - } - $this->spTypes[] = ($this->object->getSpType()); - - // write the shape record - $recVer = 0x2; - $recInstance = $this->object->getSpType(); // shape type - $recType = 0xF00A; - $length = 0x00000008; - - $recVerInstance = $recVer; - $recVerInstance |= $recInstance << 4; - - $header = pack('vvV', $recVerInstance, $recType, $length); - - $data .= $header . pack('VV', $this->object->getSpId(), $this->object->getSpgr() ? 0x0005 : 0x0A00); - - - // the options - if ($this->object->getOPTCollection()) { - $optData = ''; - - $recVer = 0x3; - $recInstance = count($this->object->getOPTCollection()); - $recType = 0xF00B; - foreach ($this->object->getOPTCollection() as $property => $value) { - $optData .= pack('vV', $property, $value); - } - $length = strlen($optData); - - $recVerInstance = $recVer; - $recVerInstance |= $recInstance << 4; - - $header = pack('vvV', $recVerInstance, $recType, $length); - $data .= $header . $optData; - } - - // the client anchor - if ($this->object->getStartCoordinates()) { - $clientAnchorData = ''; - - $recVer = 0x0; - $recInstance = 0x0; - $recType = 0xF010; - - // start coordinates - list($column, $row) = PHPExcel_Cell::coordinateFromString($this->object->getStartCoordinates()); - $c1 = PHPExcel_Cell::columnIndexFromString($column) - 1; - $r1 = $row - 1; - - // start offsetX - $startOffsetX = $this->object->getStartOffsetX(); - - // start offsetY - $startOffsetY = $this->object->getStartOffsetY(); - - // end coordinates - list($column, $row) = PHPExcel_Cell::coordinateFromString($this->object->getEndCoordinates()); - $c2 = PHPExcel_Cell::columnIndexFromString($column) - 1; - $r2 = $row - 1; - - // end offsetX - $endOffsetX = $this->object->getEndOffsetX(); - - // end offsetY - $endOffsetY = $this->object->getEndOffsetY(); - - $clientAnchorData = pack('vvvvvvvvv', $this->object->getSpFlag(), $c1, $startOffsetX, $r1, $startOffsetY, $c2, $endOffsetX, $r2, $endOffsetY); - - $length = strlen($clientAnchorData); - - $recVerInstance = $recVer; - $recVerInstance |= $recInstance << 4; - - $header = pack('vvV', $recVerInstance, $recType, $length); - $data .= $header . $clientAnchorData; - } - - // the client data, just empty for now - if (!$this->object->getSpgr()) { - $clientDataData = ''; - - $recVer = 0x0; - $recInstance = 0x0; - $recType = 0xF011; - - $length = strlen($clientDataData); - - $recVerInstance = $recVer; - $recVerInstance |= $recInstance << 4; - - $header = pack('vvV', $recVerInstance, $recType, $length); - $data .= $header . $clientDataData; - } - - // write the record - $recVer = 0xF; - $recInstance = 0x0000; - $recType = 0xF004; - $length = strlen($data); - - $recVerInstance = $recVer; - $recVerInstance |= $recInstance << 4; - - $header = pack('vvV', $recVerInstance, $recType, $length); - - $this->data = $header . $data; - break; - } - - return $this->data; - } - - /** - * Gets the shape offsets - * - * @return array - */ - public function getSpOffsets() - { - return $this->spOffsets; - } - - /** - * Gets the shape types - * - * @return array - */ - public function getSpTypes() - { - return $this->spTypes; - } -} diff --git a/application/third_party/PHPExcel/Writer/Excel5/Font.php b/application/third_party/PHPExcel/Writer/Excel5/Font.php deleted file mode 100644 index ed85ff45..00000000 --- a/application/third_party/PHPExcel/Writer/Excel5/Font.php +++ /dev/null @@ -1,166 +0,0 @@ -<?php - -/** - * PHPExcel_Writer_Excel5_Font - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_Excel5 - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Writer_Excel5_Font -{ - /** - * Color index - * - * @var int - */ - private $colorIndex; - - /** - * Font - * - * @var PHPExcel_Style_Font - */ - private $font; - - /** - * Constructor - * - * @param PHPExcel_Style_Font $font - */ - public function __construct(PHPExcel_Style_Font $font = null) - { - $this->colorIndex = 0x7FFF; - $this->font = $font; - } - - /** - * Set the color index - * - * @param int $colorIndex - */ - public function setColorIndex($colorIndex) - { - $this->colorIndex = $colorIndex; - } - - /** - * Get font record data - * - * @return string - */ - public function writeFont() - { - $font_outline = 0; - $font_shadow = 0; - - $icv = $this->colorIndex; // Index to color palette - if ($this->font->getSuperScript()) { - $sss = 1; - } elseif ($this->font->getSubScript()) { - $sss = 2; - } else { - $sss = 0; - } - $bFamily = 0; // Font family - $bCharSet = PHPExcel_Shared_Font::getCharsetFromFontName($this->font->getName()); // Character set - - $record = 0x31; // Record identifier - $reserved = 0x00; // Reserved - $grbit = 0x00; // Font attributes - if ($this->font->getItalic()) { - $grbit |= 0x02; - } - if ($this->font->getStrikethrough()) { - $grbit |= 0x08; - } - if ($font_outline) { - $grbit |= 0x10; - } - if ($font_shadow) { - $grbit |= 0x20; - } - - $data = pack( - "vvvvvCCCC", - // Fontsize (in twips) - $this->font->getSize() * 20, - $grbit, - // Colour - $icv, - // Font weight - self::mapBold($this->font->getBold()), - // Superscript/Subscript - $sss, - self::mapUnderline($this->font->getUnderline()), - $bFamily, - $bCharSet, - $reserved - ); - $data .= PHPExcel_Shared_String::UTF8toBIFF8UnicodeShort($this->font->getName()); - - $length = strlen($data); - $header = pack("vv", $record, $length); - - return($header . $data); - } - - /** - * Map to BIFF5-BIFF8 codes for bold - * - * @param boolean $bold - * @return int - */ - private static function mapBold($bold) - { - if ($bold) { - return 0x2BC; // 700 = Bold font weight - } - return 0x190; // 400 = Normal font weight - } - - /** - * Map of BIFF2-BIFF8 codes for underline styles - * @static array of int - * - */ - private static $mapUnderline = array( - PHPExcel_Style_Font::UNDERLINE_NONE => 0x00, - PHPExcel_Style_Font::UNDERLINE_SINGLE => 0x01, - PHPExcel_Style_Font::UNDERLINE_DOUBLE => 0x02, - PHPExcel_Style_Font::UNDERLINE_SINGLEACCOUNTING => 0x21, - PHPExcel_Style_Font::UNDERLINE_DOUBLEACCOUNTING => 0x22, - ); - - /** - * Map underline - * - * @param string - * @return int - */ - private static function mapUnderline($underline) - { - if (isset(self::$mapUnderline[$underline])) { - return self::$mapUnderline[$underline]; - } - return 0x00; - } -} diff --git a/application/third_party/PHPExcel/Writer/Excel5/Parser.php b/application/third_party/PHPExcel/Writer/Excel5/Parser.php deleted file mode 100644 index 0cf1c1d6..00000000 --- a/application/third_party/PHPExcel/Writer/Excel5/Parser.php +++ /dev/null @@ -1,1531 +0,0 @@ -<?php - -/** - * PHPExcel_Writer_Excel5_Parser - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_Excel5 - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -// Original file header of PEAR::Spreadsheet_Excel_Writer_Parser (used as the base for this class): -// ----------------------------------------------------------------------------------------- -// * Class for parsing Excel formulas -// * -// * License Information: -// * -// * Spreadsheet_Excel_Writer: A library for generating Excel Spreadsheets -// * Copyright (c) 2002-2003 Xavier Noguer xnoguer@rezebra.com -// * -// * This library is free software; you can redistribute it and/or -// * modify it under the terms of the GNU Lesser General Public -// * License as published by the Free Software Foundation; either -// * version 2.1 of the License, or (at your option) any later version. -// * -// * This library is distributed in the hope that it will be useful, -// * but WITHOUT ANY WARRANTY; without even the implied warranty of -// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// * Lesser General Public License for more details. -// * -// * You should have received a copy of the GNU Lesser General Public -// * License along with this library; if not, write to the Free Software -// * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// */ -class PHPExcel_Writer_Excel5_Parser -{ - /** Constants */ - // Sheet title in unquoted form - // Invalid sheet title characters cannot occur in the sheet title: - // *:/\?[] - // Moreover, there are valid sheet title characters that cannot occur in unquoted form (there may be more?) - // +-% '^&<>=,;#()"{} - const REGEX_SHEET_TITLE_UNQUOTED = '[^\*\:\/\\\\\?\[\]\+\-\% \\\'\^\&\<\>\=\,\;\#\(\)\"\{\}]+'; - - // Sheet title in quoted form (without surrounding quotes) - // Invalid sheet title characters cannot occur in the sheet title: - // *:/\?[] (usual invalid sheet title characters) - // Single quote is represented as a pair '' - const REGEX_SHEET_TITLE_QUOTED = '(([^\*\:\/\\\\\?\[\]\\\'])+|(\\\'\\\')+)+'; - - /** - * The index of the character we are currently looking at - * @var integer - */ - public $currentCharacter; - - /** - * The token we are working on. - * @var string - */ - public $currentToken; - - /** - * The formula to parse - * @var string - */ - private $formula; - - /** - * The character ahead of the current char - * @var string - */ - public $lookAhead; - - /** - * The parse tree to be generated - * @var string - */ - private $parseTree; - - /** - * Array of external sheets - * @var array - */ - private $externalSheets; - - /** - * Array of sheet references in the form of REF structures - * @var array - */ - public $references; - - /** - * The class constructor - * - */ - public function __construct() - { - $this->currentCharacter = 0; - $this->currentToken = ''; // The token we are working on. - $this->formula = ''; // The formula to parse. - $this->lookAhead = ''; // The character ahead of the current char. - $this->parseTree = ''; // The parse tree to be generated. - $this->initializeHashes(); // Initialize the hashes: ptg's and function's ptg's - $this->externalSheets = array(); - $this->references = array(); - } - - /** - * Initialize the ptg and function hashes. - * - * @access private - */ - private function initializeHashes() - { - // The Excel ptg indices - $this->ptg = array( - 'ptgExp' => 0x01, - 'ptgTbl' => 0x02, - 'ptgAdd' => 0x03, - 'ptgSub' => 0x04, - 'ptgMul' => 0x05, - 'ptgDiv' => 0x06, - 'ptgPower' => 0x07, - 'ptgConcat' => 0x08, - 'ptgLT' => 0x09, - 'ptgLE' => 0x0A, - 'ptgEQ' => 0x0B, - 'ptgGE' => 0x0C, - 'ptgGT' => 0x0D, - 'ptgNE' => 0x0E, - 'ptgIsect' => 0x0F, - 'ptgUnion' => 0x10, - 'ptgRange' => 0x11, - 'ptgUplus' => 0x12, - 'ptgUminus' => 0x13, - 'ptgPercent' => 0x14, - 'ptgParen' => 0x15, - 'ptgMissArg' => 0x16, - 'ptgStr' => 0x17, - 'ptgAttr' => 0x19, - 'ptgSheet' => 0x1A, - 'ptgEndSheet' => 0x1B, - 'ptgErr' => 0x1C, - 'ptgBool' => 0x1D, - 'ptgInt' => 0x1E, - 'ptgNum' => 0x1F, - 'ptgArray' => 0x20, - 'ptgFunc' => 0x21, - 'ptgFuncVar' => 0x22, - 'ptgName' => 0x23, - 'ptgRef' => 0x24, - 'ptgArea' => 0x25, - 'ptgMemArea' => 0x26, - 'ptgMemErr' => 0x27, - 'ptgMemNoMem' => 0x28, - 'ptgMemFunc' => 0x29, - 'ptgRefErr' => 0x2A, - 'ptgAreaErr' => 0x2B, - 'ptgRefN' => 0x2C, - 'ptgAreaN' => 0x2D, - 'ptgMemAreaN' => 0x2E, - 'ptgMemNoMemN' => 0x2F, - 'ptgNameX' => 0x39, - 'ptgRef3d' => 0x3A, - 'ptgArea3d' => 0x3B, - 'ptgRefErr3d' => 0x3C, - 'ptgAreaErr3d' => 0x3D, - 'ptgArrayV' => 0x40, - 'ptgFuncV' => 0x41, - 'ptgFuncVarV' => 0x42, - 'ptgNameV' => 0x43, - 'ptgRefV' => 0x44, - 'ptgAreaV' => 0x45, - 'ptgMemAreaV' => 0x46, - 'ptgMemErrV' => 0x47, - 'ptgMemNoMemV' => 0x48, - 'ptgMemFuncV' => 0x49, - 'ptgRefErrV' => 0x4A, - 'ptgAreaErrV' => 0x4B, - 'ptgRefNV' => 0x4C, - 'ptgAreaNV' => 0x4D, - 'ptgMemAreaNV' => 0x4E, - 'ptgMemNoMemN' => 0x4F, - 'ptgFuncCEV' => 0x58, - 'ptgNameXV' => 0x59, - 'ptgRef3dV' => 0x5A, - 'ptgArea3dV' => 0x5B, - 'ptgRefErr3dV' => 0x5C, - 'ptgAreaErr3d' => 0x5D, - 'ptgArrayA' => 0x60, - 'ptgFuncA' => 0x61, - 'ptgFuncVarA' => 0x62, - 'ptgNameA' => 0x63, - 'ptgRefA' => 0x64, - 'ptgAreaA' => 0x65, - 'ptgMemAreaA' => 0x66, - 'ptgMemErrA' => 0x67, - 'ptgMemNoMemA' => 0x68, - 'ptgMemFuncA' => 0x69, - 'ptgRefErrA' => 0x6A, - 'ptgAreaErrA' => 0x6B, - 'ptgRefNA' => 0x6C, - 'ptgAreaNA' => 0x6D, - 'ptgMemAreaNA' => 0x6E, - 'ptgMemNoMemN' => 0x6F, - 'ptgFuncCEA' => 0x78, - 'ptgNameXA' => 0x79, - 'ptgRef3dA' => 0x7A, - 'ptgArea3dA' => 0x7B, - 'ptgRefErr3dA' => 0x7C, - 'ptgAreaErr3d' => 0x7D - ); - - // Thanks to Michael Meeks and Gnumeric for the initial arg values. - // - // The following hash was generated by "function_locale.pl" in the distro. - // Refer to function_locale.pl for non-English function names. - // - // The array elements are as follow: - // ptg: The Excel function ptg code. - // args: The number of arguments that the function takes: - // >=0 is a fixed number of arguments. - // -1 is a variable number of arguments. - // class: The reference, value or array class of the function args. - // vol: The function is volatile. - // - $this->functions = array( - // function ptg args class vol - 'COUNT' => array( 0, -1, 0, 0 ), - 'IF' => array( 1, -1, 1, 0 ), - 'ISNA' => array( 2, 1, 1, 0 ), - 'ISERROR' => array( 3, 1, 1, 0 ), - 'SUM' => array( 4, -1, 0, 0 ), - 'AVERAGE' => array( 5, -1, 0, 0 ), - 'MIN' => array( 6, -1, 0, 0 ), - 'MAX' => array( 7, -1, 0, 0 ), - 'ROW' => array( 8, -1, 0, 0 ), - 'COLUMN' => array( 9, -1, 0, 0 ), - 'NA' => array( 10, 0, 0, 0 ), - 'NPV' => array( 11, -1, 1, 0 ), - 'STDEV' => array( 12, -1, 0, 0 ), - 'DOLLAR' => array( 13, -1, 1, 0 ), - 'FIXED' => array( 14, -1, 1, 0 ), - 'SIN' => array( 15, 1, 1, 0 ), - 'COS' => array( 16, 1, 1, 0 ), - 'TAN' => array( 17, 1, 1, 0 ), - 'ATAN' => array( 18, 1, 1, 0 ), - 'PI' => array( 19, 0, 1, 0 ), - 'SQRT' => array( 20, 1, 1, 0 ), - 'EXP' => array( 21, 1, 1, 0 ), - 'LN' => array( 22, 1, 1, 0 ), - 'LOG10' => array( 23, 1, 1, 0 ), - 'ABS' => array( 24, 1, 1, 0 ), - 'INT' => array( 25, 1, 1, 0 ), - 'SIGN' => array( 26, 1, 1, 0 ), - 'ROUND' => array( 27, 2, 1, 0 ), - 'LOOKUP' => array( 28, -1, 0, 0 ), - 'INDEX' => array( 29, -1, 0, 1 ), - 'REPT' => array( 30, 2, 1, 0 ), - 'MID' => array( 31, 3, 1, 0 ), - 'LEN' => array( 32, 1, 1, 0 ), - 'VALUE' => array( 33, 1, 1, 0 ), - 'TRUE' => array( 34, 0, 1, 0 ), - 'FALSE' => array( 35, 0, 1, 0 ), - 'AND' => array( 36, -1, 0, 0 ), - 'OR' => array( 37, -1, 0, 0 ), - 'NOT' => array( 38, 1, 1, 0 ), - 'MOD' => array( 39, 2, 1, 0 ), - 'DCOUNT' => array( 40, 3, 0, 0 ), - 'DSUM' => array( 41, 3, 0, 0 ), - 'DAVERAGE' => array( 42, 3, 0, 0 ), - 'DMIN' => array( 43, 3, 0, 0 ), - 'DMAX' => array( 44, 3, 0, 0 ), - 'DSTDEV' => array( 45, 3, 0, 0 ), - 'VAR' => array( 46, -1, 0, 0 ), - 'DVAR' => array( 47, 3, 0, 0 ), - 'TEXT' => array( 48, 2, 1, 0 ), - 'LINEST' => array( 49, -1, 0, 0 ), - 'TREND' => array( 50, -1, 0, 0 ), - 'LOGEST' => array( 51, -1, 0, 0 ), - 'GROWTH' => array( 52, -1, 0, 0 ), - 'PV' => array( 56, -1, 1, 0 ), - 'FV' => array( 57, -1, 1, 0 ), - 'NPER' => array( 58, -1, 1, 0 ), - 'PMT' => array( 59, -1, 1, 0 ), - 'RATE' => array( 60, -1, 1, 0 ), - 'MIRR' => array( 61, 3, 0, 0 ), - 'IRR' => array( 62, -1, 0, 0 ), - 'RAND' => array( 63, 0, 1, 1 ), - 'MATCH' => array( 64, -1, 0, 0 ), - 'DATE' => array( 65, 3, 1, 0 ), - 'TIME' => array( 66, 3, 1, 0 ), - 'DAY' => array( 67, 1, 1, 0 ), - 'MONTH' => array( 68, 1, 1, 0 ), - 'YEAR' => array( 69, 1, 1, 0 ), - 'WEEKDAY' => array( 70, -1, 1, 0 ), - 'HOUR' => array( 71, 1, 1, 0 ), - 'MINUTE' => array( 72, 1, 1, 0 ), - 'SECOND' => array( 73, 1, 1, 0 ), - 'NOW' => array( 74, 0, 1, 1 ), - 'AREAS' => array( 75, 1, 0, 1 ), - 'ROWS' => array( 76, 1, 0, 1 ), - 'COLUMNS' => array( 77, 1, 0, 1 ), - 'OFFSET' => array( 78, -1, 0, 1 ), - 'SEARCH' => array( 82, -1, 1, 0 ), - 'TRANSPOSE' => array( 83, 1, 1, 0 ), - 'TYPE' => array( 86, 1, 1, 0 ), - 'ATAN2' => array( 97, 2, 1, 0 ), - 'ASIN' => array( 98, 1, 1, 0 ), - 'ACOS' => array( 99, 1, 1, 0 ), - 'CHOOSE' => array( 100, -1, 1, 0 ), - 'HLOOKUP' => array( 101, -1, 0, 0 ), - 'VLOOKUP' => array( 102, -1, 0, 0 ), - 'ISREF' => array( 105, 1, 0, 0 ), - 'LOG' => array( 109, -1, 1, 0 ), - 'CHAR' => array( 111, 1, 1, 0 ), - 'LOWER' => array( 112, 1, 1, 0 ), - 'UPPER' => array( 113, 1, 1, 0 ), - 'PROPER' => array( 114, 1, 1, 0 ), - 'LEFT' => array( 115, -1, 1, 0 ), - 'RIGHT' => array( 116, -1, 1, 0 ), - 'EXACT' => array( 117, 2, 1, 0 ), - 'TRIM' => array( 118, 1, 1, 0 ), - 'REPLACE' => array( 119, 4, 1, 0 ), - 'SUBSTITUTE' => array( 120, -1, 1, 0 ), - 'CODE' => array( 121, 1, 1, 0 ), - 'FIND' => array( 124, -1, 1, 0 ), - 'CELL' => array( 125, -1, 0, 1 ), - 'ISERR' => array( 126, 1, 1, 0 ), - 'ISTEXT' => array( 127, 1, 1, 0 ), - 'ISNUMBER' => array( 128, 1, 1, 0 ), - 'ISBLANK' => array( 129, 1, 1, 0 ), - 'T' => array( 130, 1, 0, 0 ), - 'N' => array( 131, 1, 0, 0 ), - 'DATEVALUE' => array( 140, 1, 1, 0 ), - 'TIMEVALUE' => array( 141, 1, 1, 0 ), - 'SLN' => array( 142, 3, 1, 0 ), - 'SYD' => array( 143, 4, 1, 0 ), - 'DDB' => array( 144, -1, 1, 0 ), - 'INDIRECT' => array( 148, -1, 1, 1 ), - 'CALL' => array( 150, -1, 1, 0 ), - 'CLEAN' => array( 162, 1, 1, 0 ), - 'MDETERM' => array( 163, 1, 2, 0 ), - 'MINVERSE' => array( 164, 1, 2, 0 ), - 'MMULT' => array( 165, 2, 2, 0 ), - 'IPMT' => array( 167, -1, 1, 0 ), - 'PPMT' => array( 168, -1, 1, 0 ), - 'COUNTA' => array( 169, -1, 0, 0 ), - 'PRODUCT' => array( 183, -1, 0, 0 ), - 'FACT' => array( 184, 1, 1, 0 ), - 'DPRODUCT' => array( 189, 3, 0, 0 ), - 'ISNONTEXT' => array( 190, 1, 1, 0 ), - 'STDEVP' => array( 193, -1, 0, 0 ), - 'VARP' => array( 194, -1, 0, 0 ), - 'DSTDEVP' => array( 195, 3, 0, 0 ), - 'DVARP' => array( 196, 3, 0, 0 ), - 'TRUNC' => array( 197, -1, 1, 0 ), - 'ISLOGICAL' => array( 198, 1, 1, 0 ), - 'DCOUNTA' => array( 199, 3, 0, 0 ), - 'USDOLLAR' => array( 204, -1, 1, 0 ), - 'FINDB' => array( 205, -1, 1, 0 ), - 'SEARCHB' => array( 206, -1, 1, 0 ), - 'REPLACEB' => array( 207, 4, 1, 0 ), - 'LEFTB' => array( 208, -1, 1, 0 ), - 'RIGHTB' => array( 209, -1, 1, 0 ), - 'MIDB' => array( 210, 3, 1, 0 ), - 'LENB' => array( 211, 1, 1, 0 ), - 'ROUNDUP' => array( 212, 2, 1, 0 ), - 'ROUNDDOWN' => array( 213, 2, 1, 0 ), - 'ASC' => array( 214, 1, 1, 0 ), - 'DBCS' => array( 215, 1, 1, 0 ), - 'RANK' => array( 216, -1, 0, 0 ), - 'ADDRESS' => array( 219, -1, 1, 0 ), - 'DAYS360' => array( 220, -1, 1, 0 ), - 'TODAY' => array( 221, 0, 1, 1 ), - 'VDB' => array( 222, -1, 1, 0 ), - 'MEDIAN' => array( 227, -1, 0, 0 ), - 'SUMPRODUCT' => array( 228, -1, 2, 0 ), - 'SINH' => array( 229, 1, 1, 0 ), - 'COSH' => array( 230, 1, 1, 0 ), - 'TANH' => array( 231, 1, 1, 0 ), - 'ASINH' => array( 232, 1, 1, 0 ), - 'ACOSH' => array( 233, 1, 1, 0 ), - 'ATANH' => array( 234, 1, 1, 0 ), - 'DGET' => array( 235, 3, 0, 0 ), - 'INFO' => array( 244, 1, 1, 1 ), - 'DB' => array( 247, -1, 1, 0 ), - 'FREQUENCY' => array( 252, 2, 0, 0 ), - 'ERROR.TYPE' => array( 261, 1, 1, 0 ), - 'REGISTER.ID' => array( 267, -1, 1, 0 ), - 'AVEDEV' => array( 269, -1, 0, 0 ), - 'BETADIST' => array( 270, -1, 1, 0 ), - 'GAMMALN' => array( 271, 1, 1, 0 ), - 'BETAINV' => array( 272, -1, 1, 0 ), - 'BINOMDIST' => array( 273, 4, 1, 0 ), - 'CHIDIST' => array( 274, 2, 1, 0 ), - 'CHIINV' => array( 275, 2, 1, 0 ), - 'COMBIN' => array( 276, 2, 1, 0 ), - 'CONFIDENCE' => array( 277, 3, 1, 0 ), - 'CRITBINOM' => array( 278, 3, 1, 0 ), - 'EVEN' => array( 279, 1, 1, 0 ), - 'EXPONDIST' => array( 280, 3, 1, 0 ), - 'FDIST' => array( 281, 3, 1, 0 ), - 'FINV' => array( 282, 3, 1, 0 ), - 'FISHER' => array( 283, 1, 1, 0 ), - 'FISHERINV' => array( 284, 1, 1, 0 ), - 'FLOOR' => array( 285, 2, 1, 0 ), - 'GAMMADIST' => array( 286, 4, 1, 0 ), - 'GAMMAINV' => array( 287, 3, 1, 0 ), - 'CEILING' => array( 288, 2, 1, 0 ), - 'HYPGEOMDIST' => array( 289, 4, 1, 0 ), - 'LOGNORMDIST' => array( 290, 3, 1, 0 ), - 'LOGINV' => array( 291, 3, 1, 0 ), - 'NEGBINOMDIST' => array( 292, 3, 1, 0 ), - 'NORMDIST' => array( 293, 4, 1, 0 ), - 'NORMSDIST' => array( 294, 1, 1, 0 ), - 'NORMINV' => array( 295, 3, 1, 0 ), - 'NORMSINV' => array( 296, 1, 1, 0 ), - 'STANDARDIZE' => array( 297, 3, 1, 0 ), - 'ODD' => array( 298, 1, 1, 0 ), - 'PERMUT' => array( 299, 2, 1, 0 ), - 'POISSON' => array( 300, 3, 1, 0 ), - 'TDIST' => array( 301, 3, 1, 0 ), - 'WEIBULL' => array( 302, 4, 1, 0 ), - 'SUMXMY2' => array( 303, 2, 2, 0 ), - 'SUMX2MY2' => array( 304, 2, 2, 0 ), - 'SUMX2PY2' => array( 305, 2, 2, 0 ), - 'CHITEST' => array( 306, 2, 2, 0 ), - 'CORREL' => array( 307, 2, 2, 0 ), - 'COVAR' => array( 308, 2, 2, 0 ), - 'FORECAST' => array( 309, 3, 2, 0 ), - 'FTEST' => array( 310, 2, 2, 0 ), - 'INTERCEPT' => array( 311, 2, 2, 0 ), - 'PEARSON' => array( 312, 2, 2, 0 ), - 'RSQ' => array( 313, 2, 2, 0 ), - 'STEYX' => array( 314, 2, 2, 0 ), - 'SLOPE' => array( 315, 2, 2, 0 ), - 'TTEST' => array( 316, 4, 2, 0 ), - 'PROB' => array( 317, -1, 2, 0 ), - 'DEVSQ' => array( 318, -1, 0, 0 ), - 'GEOMEAN' => array( 319, -1, 0, 0 ), - 'HARMEAN' => array( 320, -1, 0, 0 ), - 'SUMSQ' => array( 321, -1, 0, 0 ), - 'KURT' => array( 322, -1, 0, 0 ), - 'SKEW' => array( 323, -1, 0, 0 ), - 'ZTEST' => array( 324, -1, 0, 0 ), - 'LARGE' => array( 325, 2, 0, 0 ), - 'SMALL' => array( 326, 2, 0, 0 ), - 'QUARTILE' => array( 327, 2, 0, 0 ), - 'PERCENTILE' => array( 328, 2, 0, 0 ), - 'PERCENTRANK' => array( 329, -1, 0, 0 ), - 'MODE' => array( 330, -1, 2, 0 ), - 'TRIMMEAN' => array( 331, 2, 0, 0 ), - 'TINV' => array( 332, 2, 1, 0 ), - 'CONCATENATE' => array( 336, -1, 1, 0 ), - 'POWER' => array( 337, 2, 1, 0 ), - 'RADIANS' => array( 342, 1, 1, 0 ), - 'DEGREES' => array( 343, 1, 1, 0 ), - 'SUBTOTAL' => array( 344, -1, 0, 0 ), - 'SUMIF' => array( 345, -1, 0, 0 ), - 'COUNTIF' => array( 346, 2, 0, 0 ), - 'COUNTBLANK' => array( 347, 1, 0, 0 ), - 'ISPMT' => array( 350, 4, 1, 0 ), - 'DATEDIF' => array( 351, 3, 1, 0 ), - 'DATESTRING' => array( 352, 1, 1, 0 ), - 'NUMBERSTRING' => array( 353, 2, 1, 0 ), - 'ROMAN' => array( 354, -1, 1, 0 ), - 'GETPIVOTDATA' => array( 358, -1, 0, 0 ), - 'HYPERLINK' => array( 359, -1, 1, 0 ), - 'PHONETIC' => array( 360, 1, 0, 0 ), - 'AVERAGEA' => array( 361, -1, 0, 0 ), - 'MAXA' => array( 362, -1, 0, 0 ), - 'MINA' => array( 363, -1, 0, 0 ), - 'STDEVPA' => array( 364, -1, 0, 0 ), - 'VARPA' => array( 365, -1, 0, 0 ), - 'STDEVA' => array( 366, -1, 0, 0 ), - 'VARA' => array( 367, -1, 0, 0 ), - 'BAHTTEXT' => array( 368, 1, 0, 0 ), - ); - } - - /** - * Convert a token to the proper ptg value. - * - * @access private - * @param mixed $token The token to convert. - * @return mixed the converted token on success - */ - private function convert($token) - { - if (preg_match("/\"([^\"]|\"\"){0,255}\"/", $token)) { - return $this->convertString($token); - - } elseif (is_numeric($token)) { - return $this->convertNumber($token); - - // match references like A1 or $A$1 - } elseif (preg_match('/^\$?([A-Ia-i]?[A-Za-z])\$?(\d+)$/', $token)) { - return $this->convertRef2d($token); - - // match external references like Sheet1!A1 or Sheet1:Sheet2!A1 or Sheet1!$A$1 or Sheet1:Sheet2!$A$1 - } elseif (preg_match("/^" . self::REGEX_SHEET_TITLE_UNQUOTED . "(\:" . self::REGEX_SHEET_TITLE_UNQUOTED . ")?\!\\$?[A-Ia-i]?[A-Za-z]\\$?(\d+)$/u", $token)) { - return $this->convertRef3d($token); - - // match external references like 'Sheet1'!A1 or 'Sheet1:Sheet2'!A1 or 'Sheet1'!$A$1 or 'Sheet1:Sheet2'!$A$1 - } elseif (preg_match("/^'" . self::REGEX_SHEET_TITLE_QUOTED . "(\:" . self::REGEX_SHEET_TITLE_QUOTED . ")?'\!\\$?[A-Ia-i]?[A-Za-z]\\$?(\d+)$/u", $token)) { - return $this->convertRef3d($token); - - // match ranges like A1:B2 or $A$1:$B$2 - } elseif (preg_match('/^(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)\:(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)$/', $token)) { - return $this->convertRange2d($token); - - // match external ranges like Sheet1!A1:B2 or Sheet1:Sheet2!A1:B2 or Sheet1!$A$1:$B$2 or Sheet1:Sheet2!$A$1:$B$2 - } elseif (preg_match("/^" . self::REGEX_SHEET_TITLE_UNQUOTED . "(\:" . self::REGEX_SHEET_TITLE_UNQUOTED . ")?\!\\$?([A-Ia-i]?[A-Za-z])?\\$?(\d+)\:\\$?([A-Ia-i]?[A-Za-z])?\\$?(\d+)$/u", $token)) { - return $this->convertRange3d($token); - - // match external ranges like 'Sheet1'!A1:B2 or 'Sheet1:Sheet2'!A1:B2 or 'Sheet1'!$A$1:$B$2 or 'Sheet1:Sheet2'!$A$1:$B$2 - } elseif (preg_match("/^'" . self::REGEX_SHEET_TITLE_QUOTED . "(\:" . self::REGEX_SHEET_TITLE_QUOTED . ")?'\!\\$?([A-Ia-i]?[A-Za-z])?\\$?(\d+)\:\\$?([A-Ia-i]?[A-Za-z])?\\$?(\d+)$/u", $token)) { - return $this->convertRange3d($token); - - // operators (including parentheses) - } elseif (isset($this->ptg[$token])) { - return pack("C", $this->ptg[$token]); - - // match error codes - } elseif (preg_match("/^#[A-Z0\/]{3,5}[!?]{1}$/", $token) or $token == '#N/A') { - return $this->convertError($token); - - // commented so argument number can be processed correctly. See toReversePolish(). - /*elseif (preg_match("/[A-Z0-9\xc0-\xdc\.]+/", $token)) - { - return($this->convertFunction($token, $this->_func_args)); - }*/ - - // if it's an argument, ignore the token (the argument remains) - } elseif ($token == 'arg') { - return ''; - } - - // TODO: use real error codes - throw new PHPExcel_Writer_Exception("Unknown token $token"); - } - - /** - * Convert a number token to ptgInt or ptgNum - * - * @access private - * @param mixed $num an integer or double for conversion to its ptg value - */ - private function convertNumber($num) - { - // Integer in the range 0..2**16-1 - if ((preg_match("/^\d+$/", $num)) and ($num <= 65535)) { - return pack("Cv", $this->ptg['ptgInt'], $num); - } else { // A float - if (PHPExcel_Writer_Excel5_BIFFwriter::getByteOrder()) { // if it's Big Endian - $num = strrev($num); - } - return pack("Cd", $this->ptg['ptgNum'], $num); - } - } - - /** - * Convert a string token to ptgStr - * - * @access private - * @param string $string A string for conversion to its ptg value. - * @return mixed the converted token on success - */ - private function convertString($string) - { - // chop away beggining and ending quotes - $string = substr($string, 1, strlen($string) - 2); - if (strlen($string) > 255) { - throw new PHPExcel_Writer_Exception("String is too long"); - } - - return pack('C', $this->ptg['ptgStr']) . PHPExcel_Shared_String::UTF8toBIFF8UnicodeShort($string); - } - - /** - * Convert a function to a ptgFunc or ptgFuncVarV depending on the number of - * args that it takes. - * - * @access private - * @param string $token The name of the function for convertion to ptg value. - * @param integer $num_args The number of arguments the function receives. - * @return string The packed ptg for the function - */ - private function convertFunction($token, $num_args) - { - $args = $this->functions[$token][1]; -// $volatile = $this->functions[$token][3]; - - // Fixed number of args eg. TIME($i, $j, $k). - if ($args >= 0) { - return pack("Cv", $this->ptg['ptgFuncV'], $this->functions[$token][0]); - } - // Variable number of args eg. SUM($i, $j, $k, ..). - if ($args == -1) { - return pack("CCv", $this->ptg['ptgFuncVarV'], $num_args, $this->functions[$token][0]); - } - } - - /** - * Convert an Excel range such as A1:D4 to a ptgRefV. - * - * @access private - * @param string $range An Excel range in the A1:A2 - * @param int $class - */ - private function convertRange2d($range, $class = 0) - { - - // TODO: possible class value 0,1,2 check Formula.pm - // Split the range into 2 cell refs - if (preg_match('/^(\$)?([A-Ia-i]?[A-Za-z])(\$)?(\d+)\:(\$)?([A-Ia-i]?[A-Za-z])(\$)?(\d+)$/', $range)) { - list($cell1, $cell2) = explode(':', $range); - } else { - // TODO: use real error codes - throw new PHPExcel_Writer_Exception("Unknown range separator"); - } - - // Convert the cell references - list($row1, $col1) = $this->cellToPackedRowcol($cell1); - list($row2, $col2) = $this->cellToPackedRowcol($cell2); - - // The ptg value depends on the class of the ptg. - if ($class == 0) { - $ptgArea = pack("C", $this->ptg['ptgArea']); - } elseif ($class == 1) { - $ptgArea = pack("C", $this->ptg['ptgAreaV']); - } elseif ($class == 2) { - $ptgArea = pack("C", $this->ptg['ptgAreaA']); - } else { - // TODO: use real error codes - throw new PHPExcel_Writer_Exception("Unknown class $class"); - } - return $ptgArea . $row1 . $row2 . $col1. $col2; - } - - /** - * Convert an Excel 3d range such as "Sheet1!A1:D4" or "Sheet1:Sheet2!A1:D4" to - * a ptgArea3d. - * - * @access private - * @param string $token An Excel range in the Sheet1!A1:A2 format. - * @return mixed The packed ptgArea3d token on success. - */ - private function convertRange3d($token) - { -// $class = 0; // formulas like Sheet1!$A$1:$A$2 in list type data validation need this class (0x3B) - - // Split the ref at the ! symbol - list($ext_ref, $range) = explode('!', $token); - - // Convert the external reference part (different for BIFF8) - $ext_ref = $this->getRefIndex($ext_ref); - - // Split the range into 2 cell refs - list($cell1, $cell2) = explode(':', $range); - - // Convert the cell references - if (preg_match("/^(\\$)?[A-Ia-i]?[A-Za-z](\\$)?(\d+)$/", $cell1)) { - list($row1, $col1) = $this->cellToPackedRowcol($cell1); - list($row2, $col2) = $this->cellToPackedRowcol($cell2); - } else { // It's a rows range (like 26:27) - list($row1, $col1, $row2, $col2) = $this->rangeToPackedRange($cell1.':'.$cell2); - } - - // The ptg value depends on the class of the ptg. -// if ($class == 0) { - $ptgArea = pack("C", $this->ptg['ptgArea3d']); -// } elseif ($class == 1) { -// $ptgArea = pack("C", $this->ptg['ptgArea3dV']); -// } elseif ($class == 2) { -// $ptgArea = pack("C", $this->ptg['ptgArea3dA']); -// } else { -// throw new PHPExcel_Writer_Exception("Unknown class $class"); -// } - - return $ptgArea . $ext_ref . $row1 . $row2 . $col1. $col2; - } - - /** - * Convert an Excel reference such as A1, $B2, C$3 or $D$4 to a ptgRefV. - * - * @access private - * @param string $cell An Excel cell reference - * @return string The cell in packed() format with the corresponding ptg - */ - private function convertRef2d($cell) - { -// $class = 2; // as far as I know, this is magick. - - // Convert the cell reference - $cell_array = $this->cellToPackedRowcol($cell); - list($row, $col) = $cell_array; - - // The ptg value depends on the class of the ptg. -// if ($class == 0) { -// $ptgRef = pack("C", $this->ptg['ptgRef']); -// } elseif ($class == 1) { -// $ptgRef = pack("C", $this->ptg['ptgRefV']); -// } elseif ($class == 2) { - $ptgRef = pack("C", $this->ptg['ptgRefA']); -// } else { -// // TODO: use real error codes -// throw new PHPExcel_Writer_Exception("Unknown class $class"); -// } - return $ptgRef.$row.$col; - } - - /** - * Convert an Excel 3d reference such as "Sheet1!A1" or "Sheet1:Sheet2!A1" to a - * ptgRef3d. - * - * @access private - * @param string $cell An Excel cell reference - * @return mixed The packed ptgRef3d token on success. - */ - private function convertRef3d($cell) - { -// $class = 2; // as far as I know, this is magick. - - // Split the ref at the ! symbol - list($ext_ref, $cell) = explode('!', $cell); - - // Convert the external reference part (different for BIFF8) - $ext_ref = $this->getRefIndex($ext_ref); - - // Convert the cell reference part - list($row, $col) = $this->cellToPackedRowcol($cell); - - // The ptg value depends on the class of the ptg. -// if ($class == 0) { -// $ptgRef = pack("C", $this->ptg['ptgRef3d']); -// } elseif ($class == 1) { -// $ptgRef = pack("C", $this->ptg['ptgRef3dV']); -// } elseif ($class == 2) { - $ptgRef = pack("C", $this->ptg['ptgRef3dA']); -// } else { -// throw new PHPExcel_Writer_Exception("Unknown class $class"); -// } - - return $ptgRef . $ext_ref. $row . $col; - } - - /** - * Convert an error code to a ptgErr - * - * @access private - * @param string $errorCode The error code for conversion to its ptg value - * @return string The error code ptgErr - */ - private function convertError($errorCode) - { - switch ($errorCode) { - case '#NULL!': - return pack("C", 0x00); - case '#DIV/0!': - return pack("C", 0x07); - case '#VALUE!': - return pack("C", 0x0F); - case '#REF!': - return pack("C", 0x17); - case '#NAME?': - return pack("C", 0x1D); - case '#NUM!': - return pack("C", 0x24); - case '#N/A': - return pack("C", 0x2A); - } - return pack("C", 0xFF); - } - - /** - * Convert the sheet name part of an external reference, for example "Sheet1" or - * "Sheet1:Sheet2", to a packed structure. - * - * @access private - * @param string $ext_ref The name of the external reference - * @return string The reference index in packed() format - */ - private function packExtRef($ext_ref) - { - $ext_ref = preg_replace("/^'/", '', $ext_ref); // Remove leading ' if any. - $ext_ref = preg_replace("/'$/", '', $ext_ref); // Remove trailing ' if any. - - // Check if there is a sheet range eg., Sheet1:Sheet2. - if (preg_match("/:/", $ext_ref)) { - list($sheet_name1, $sheet_name2) = explode(':', $ext_ref); - - $sheet1 = $this->getSheetIndex($sheet_name1); - if ($sheet1 == -1) { - throw new PHPExcel_Writer_Exception("Unknown sheet name $sheet_name1 in formula"); - } - $sheet2 = $this->getSheetIndex($sheet_name2); - if ($sheet2 == -1) { - throw new PHPExcel_Writer_Exception("Unknown sheet name $sheet_name2 in formula"); - } - - // Reverse max and min sheet numbers if necessary - if ($sheet1 > $sheet2) { - list($sheet1, $sheet2) = array($sheet2, $sheet1); - } - } else { // Single sheet name only. - $sheet1 = $this->getSheetIndex($ext_ref); - if ($sheet1 == -1) { - throw new PHPExcel_Writer_Exception("Unknown sheet name $ext_ref in formula"); - } - $sheet2 = $sheet1; - } - - // References are stored relative to 0xFFFF. - $offset = -1 - $sheet1; - - return pack('vdvv', $offset, 0x00, $sheet1, $sheet2); - } - - /** - * Look up the REF index that corresponds to an external sheet name - * (or range). If it doesn't exist yet add it to the workbook's references - * array. It assumes all sheet names given must exist. - * - * @access private - * @param string $ext_ref The name of the external reference - * @return mixed The reference index in packed() format on success - */ - private function getRefIndex($ext_ref) - { - $ext_ref = preg_replace("/^'/", '', $ext_ref); // Remove leading ' if any. - $ext_ref = preg_replace("/'$/", '', $ext_ref); // Remove trailing ' if any. - $ext_ref = str_replace('\'\'', '\'', $ext_ref); // Replace escaped '' with ' - - // Check if there is a sheet range eg., Sheet1:Sheet2. - if (preg_match("/:/", $ext_ref)) { - list($sheet_name1, $sheet_name2) = explode(':', $ext_ref); - - $sheet1 = $this->getSheetIndex($sheet_name1); - if ($sheet1 == -1) { - throw new PHPExcel_Writer_Exception("Unknown sheet name $sheet_name1 in formula"); - } - $sheet2 = $this->getSheetIndex($sheet_name2); - if ($sheet2 == -1) { - throw new PHPExcel_Writer_Exception("Unknown sheet name $sheet_name2 in formula"); - } - - // Reverse max and min sheet numbers if necessary - if ($sheet1 > $sheet2) { - list($sheet1, $sheet2) = array($sheet2, $sheet1); - } - } else { // Single sheet name only. - $sheet1 = $this->getSheetIndex($ext_ref); - if ($sheet1 == -1) { - throw new PHPExcel_Writer_Exception("Unknown sheet name $ext_ref in formula"); - } - $sheet2 = $sheet1; - } - - // assume all references belong to this document - $supbook_index = 0x00; - $ref = pack('vvv', $supbook_index, $sheet1, $sheet2); - $totalreferences = count($this->references); - $index = -1; - for ($i = 0; $i < $totalreferences; ++$i) { - if ($ref == $this->references[$i]) { - $index = $i; - break; - } - } - // if REF was not found add it to references array - if ($index == -1) { - $this->references[$totalreferences] = $ref; - $index = $totalreferences; - } - - return pack('v', $index); - } - - /** - * Look up the index that corresponds to an external sheet name. The hash of - * sheet names is updated by the addworksheet() method of the - * PHPExcel_Writer_Excel5_Workbook class. - * - * @access private - * @param string $sheet_name Sheet name - * @return integer The sheet index, -1 if the sheet was not found - */ - private function getSheetIndex($sheet_name) - { - if (!isset($this->externalSheets[$sheet_name])) { - return -1; - } else { - return $this->externalSheets[$sheet_name]; - } - } - - /** - * This method is used to update the array of sheet names. It is - * called by the addWorksheet() method of the - * PHPExcel_Writer_Excel5_Workbook class. - * - * @access public - * @see PHPExcel_Writer_Excel5_Workbook::addWorksheet() - * @param string $name The name of the worksheet being added - * @param integer $index The index of the worksheet being added - */ - public function setExtSheet($name, $index) - { - $this->externalSheets[$name] = $index; - } - - /** - * pack() row and column into the required 3 or 4 byte format. - * - * @access private - * @param string $cell The Excel cell reference to be packed - * @return array Array containing the row and column in packed() format - */ - private function cellToPackedRowcol($cell) - { - $cell = strtoupper($cell); - list($row, $col, $row_rel, $col_rel) = $this->cellToRowcol($cell); - if ($col >= 256) { - throw new PHPExcel_Writer_Exception("Column in: $cell greater than 255"); - } - if ($row >= 65536) { - throw new PHPExcel_Writer_Exception("Row in: $cell greater than 65536 "); - } - - // Set the high bits to indicate if row or col are relative. - $col |= $col_rel << 14; - $col |= $row_rel << 15; - $col = pack('v', $col); - - $row = pack('v', $row); - - return array($row, $col); - } - - /** - * pack() row range into the required 3 or 4 byte format. - * Just using maximum col/rows, which is probably not the correct solution - * - * @access private - * @param string $range The Excel range to be packed - * @return array Array containing (row1,col1,row2,col2) in packed() format - */ - private function rangeToPackedRange($range) - { - preg_match('/(\$)?(\d+)\:(\$)?(\d+)/', $range, $match); - // return absolute rows if there is a $ in the ref - $row1_rel = empty($match[1]) ? 1 : 0; - $row1 = $match[2]; - $row2_rel = empty($match[3]) ? 1 : 0; - $row2 = $match[4]; - // Convert 1-index to zero-index - --$row1; - --$row2; - // Trick poor inocent Excel - $col1 = 0; - $col2 = 65535; // FIXME: maximum possible value for Excel 5 (change this!!!) - - // FIXME: this changes for BIFF8 - if (($row1 >= 65536) or ($row2 >= 65536)) { - throw new PHPExcel_Writer_Exception("Row in: $range greater than 65536 "); - } - - // Set the high bits to indicate if rows are relative. - $col1 |= $row1_rel << 15; - $col2 |= $row2_rel << 15; - $col1 = pack('v', $col1); - $col2 = pack('v', $col2); - - $row1 = pack('v', $row1); - $row2 = pack('v', $row2); - - return array($row1, $col1, $row2, $col2); - } - - /** - * Convert an Excel cell reference such as A1 or $B2 or C$3 or $D$4 to a zero - * indexed row and column number. Also returns two (0,1) values to indicate - * whether the row or column are relative references. - * - * @access private - * @param string $cell The Excel cell reference in A1 format. - * @return array - */ - private function cellToRowcol($cell) - { - preg_match('/(\$)?([A-I]?[A-Z])(\$)?(\d+)/', $cell, $match); - // return absolute column if there is a $ in the ref - $col_rel = empty($match[1]) ? 1 : 0; - $col_ref = $match[2]; - $row_rel = empty($match[3]) ? 1 : 0; - $row = $match[4]; - - // Convert base26 column string to a number. - $expn = strlen($col_ref) - 1; - $col = 0; - $col_ref_length = strlen($col_ref); - for ($i = 0; $i < $col_ref_length; ++$i) { - $col += (ord($col_ref{$i}) - 64) * pow(26, $expn); - --$expn; - } - - // Convert 1-index to zero-index - --$row; - --$col; - - return array($row, $col, $row_rel, $col_rel); - } - - /** - * Advance to the next valid token. - * - * @access private - */ - private function advance() - { - $i = $this->currentCharacter; - $formula_length = strlen($this->formula); - // eat up white spaces - if ($i < $formula_length) { - while ($this->formula{$i} == " ") { - ++$i; - } - - if ($i < ($formula_length - 1)) { - $this->lookAhead = $this->formula{$i+1}; - } - $token = ''; - } - - while ($i < $formula_length) { - $token .= $this->formula{$i}; - - if ($i < ($formula_length - 1)) { - $this->lookAhead = $this->formula{$i+1}; - } else { - $this->lookAhead = ''; - } - - if ($this->match($token) != '') { - //if ($i < strlen($this->formula) - 1) { - // $this->lookAhead = $this->formula{$i+1}; - //} - $this->currentCharacter = $i + 1; - $this->currentToken = $token; - return 1; - } - - if ($i < ($formula_length - 2)) { - $this->lookAhead = $this->formula{$i+2}; - } else { // if we run out of characters lookAhead becomes empty - $this->lookAhead = ''; - } - ++$i; - } - //die("Lexical error ".$this->currentCharacter); - } - - /** - * Checks if it's a valid token. - * - * @access private - * @param mixed $token The token to check. - * @return mixed The checked token or false on failure - */ - private function match($token) - { - switch ($token) { - case "+": - case "-": - case "*": - case "/": - case "(": - case ")": - case ",": - case ";": - case ">=": - case "<=": - case "=": - case "<>": - case "^": - case "&": - case "%": - return $token; - break; - case ">": - if ($this->lookAhead == '=') { // it's a GE token - break; - } - return $token; - break; - case "<": - // it's a LE or a NE token - if (($this->lookAhead == '=') or ($this->lookAhead == '>')) { - break; - } - return $token; - break; - default: - // if it's a reference A1 or $A$1 or $A1 or A$1 - if (preg_match('/^\$?[A-Ia-i]?[A-Za-z]\$?[0-9]+$/', $token) and !preg_match("/[0-9]/", $this->lookAhead) and ($this->lookAhead != ':') and ($this->lookAhead != '.') and ($this->lookAhead != '!')) { - return $token; - } elseif (preg_match("/^" . self::REGEX_SHEET_TITLE_UNQUOTED . "(\:" . self::REGEX_SHEET_TITLE_UNQUOTED . ")?\!\\$?[A-Ia-i]?[A-Za-z]\\$?[0-9]+$/u", $token) and !preg_match("/[0-9]/", $this->lookAhead) and ($this->lookAhead != ':') and ($this->lookAhead != '.')) { - // If it's an external reference (Sheet1!A1 or Sheet1:Sheet2!A1 or Sheet1!$A$1 or Sheet1:Sheet2!$A$1) - return $token; - } elseif (preg_match("/^'" . self::REGEX_SHEET_TITLE_QUOTED . "(\:" . self::REGEX_SHEET_TITLE_QUOTED . ")?'\!\\$?[A-Ia-i]?[A-Za-z]\\$?[0-9]+$/u", $token) and !preg_match("/[0-9]/", $this->lookAhead) and ($this->lookAhead != ':') and ($this->lookAhead != '.')) { - // If it's an external reference ('Sheet1'!A1 or 'Sheet1:Sheet2'!A1 or 'Sheet1'!$A$1 or 'Sheet1:Sheet2'!$A$1) - return $token; - } elseif (preg_match('/^(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+:(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+$/', $token) && !preg_match("/[0-9]/", $this->lookAhead)) { - // if it's a range A1:A2 or $A$1:$A$2 - return $token; - } elseif (preg_match("/^" . self::REGEX_SHEET_TITLE_UNQUOTED . "(\:" . self::REGEX_SHEET_TITLE_UNQUOTED . ")?\!\\$?([A-Ia-i]?[A-Za-z])?\\$?[0-9]+:\\$?([A-Ia-i]?[A-Za-z])?\\$?[0-9]+$/u", $token) and !preg_match("/[0-9]/", $this->lookAhead)) { - // If it's an external range like Sheet1!A1:B2 or Sheet1:Sheet2!A1:B2 or Sheet1!$A$1:$B$2 or Sheet1:Sheet2!$A$1:$B$2 - return $token; - } elseif (preg_match("/^'" . self::REGEX_SHEET_TITLE_QUOTED . "(\:" . self::REGEX_SHEET_TITLE_QUOTED . ")?'\!\\$?([A-Ia-i]?[A-Za-z])?\\$?[0-9]+:\\$?([A-Ia-i]?[A-Za-z])?\\$?[0-9]+$/u", $token) and !preg_match("/[0-9]/", $this->lookAhead)) { - // If it's an external range like 'Sheet1'!A1:B2 or 'Sheet1:Sheet2'!A1:B2 or 'Sheet1'!$A$1:$B$2 or 'Sheet1:Sheet2'!$A$1:$B$2 - return $token; - } elseif (is_numeric($token) and (!is_numeric($token.$this->lookAhead) or ($this->lookAhead == '')) and ($this->lookAhead != '!') and ($this->lookAhead != ':')) { - // If it's a number (check that it's not a sheet name or range) - return $token; - } elseif (preg_match("/\"([^\"]|\"\"){0,255}\"/", $token) and $this->lookAhead != '"' and (substr_count($token, '"')%2 == 0)) { - // If it's a string (of maximum 255 characters) - return $token; - } elseif (preg_match("/^#[A-Z0\/]{3,5}[!?]{1}$/", $token) or $token == '#N/A') { - // If it's an error code - return $token; - } elseif (preg_match("/^[A-Z0-9\xc0-\xdc\.]+$/i", $token) and ($this->lookAhead == "(")) { - // if it's a function call - return $token; - } elseif (substr($token, -1) == ')') { - // It's an argument of some description (e.g. a named range), - // precise nature yet to be determined - return $token; - } - return ''; - } - } - - /** - * The parsing method. It parses a formula. - * - * @access public - * @param string $formula The formula to parse, without the initial equal - * sign (=). - * @return mixed true on success - */ - public function parse($formula) - { - $this->currentCharacter = 0; - $this->formula = $formula; - $this->lookAhead = isset($formula{1}) ? $formula{1} : ''; - $this->advance(); - $this->parseTree = $this->condition(); - return true; - } - - /** - * It parses a condition. It assumes the following rule: - * Cond -> Expr [(">" | "<") Expr] - * - * @access private - * @return mixed The parsed ptg'd tree on success - */ - private function condition() - { - $result = $this->expression(); - if ($this->currentToken == "<") { - $this->advance(); - $result2 = $this->expression(); - $result = $this->createTree('ptgLT', $result, $result2); - } elseif ($this->currentToken == ">") { - $this->advance(); - $result2 = $this->expression(); - $result = $this->createTree('ptgGT', $result, $result2); - } elseif ($this->currentToken == "<=") { - $this->advance(); - $result2 = $this->expression(); - $result = $this->createTree('ptgLE', $result, $result2); - } elseif ($this->currentToken == ">=") { - $this->advance(); - $result2 = $this->expression(); - $result = $this->createTree('ptgGE', $result, $result2); - } elseif ($this->currentToken == "=") { - $this->advance(); - $result2 = $this->expression(); - $result = $this->createTree('ptgEQ', $result, $result2); - } elseif ($this->currentToken == "<>") { - $this->advance(); - $result2 = $this->expression(); - $result = $this->createTree('ptgNE', $result, $result2); - } elseif ($this->currentToken == "&") { - $this->advance(); - $result2 = $this->expression(); - $result = $this->createTree('ptgConcat', $result, $result2); - } - return $result; - } - - /** - * It parses a expression. It assumes the following rule: - * Expr -> Term [("+" | "-") Term] - * -> "string" - * -> "-" Term : Negative value - * -> "+" Term : Positive value - * -> Error code - * - * @access private - * @return mixed The parsed ptg'd tree on success - */ - private function expression() - { - // If it's a string return a string node - if (preg_match("/\"([^\"]|\"\"){0,255}\"/", $this->currentToken)) { - $tmp = str_replace('""', '"', $this->currentToken); - if (($tmp == '"') || ($tmp == '')) { - // Trap for "" that has been used for an empty string - $tmp = '""'; - } - $result = $this->createTree($tmp, '', ''); - $this->advance(); - return $result; - // If it's an error code - } elseif (preg_match("/^#[A-Z0\/]{3,5}[!?]{1}$/", $this->currentToken) or $this->currentToken == '#N/A') { - $result = $this->createTree($this->currentToken, 'ptgErr', ''); - $this->advance(); - return $result; - // If it's a negative value - } elseif ($this->currentToken == "-") { - // catch "-" Term - $this->advance(); - $result2 = $this->expression(); - $result = $this->createTree('ptgUminus', $result2, ''); - return $result; - // If it's a positive value - } elseif ($this->currentToken == "+") { - // catch "+" Term - $this->advance(); - $result2 = $this->expression(); - $result = $this->createTree('ptgUplus', $result2, ''); - return $result; - } - $result = $this->term(); - while (($this->currentToken == "+") or - ($this->currentToken == "-") or - ($this->currentToken == "^")) { - /**/ - if ($this->currentToken == "+") { - $this->advance(); - $result2 = $this->term(); - $result = $this->createTree('ptgAdd', $result, $result2); - } elseif ($this->currentToken == "-") { - $this->advance(); - $result2 = $this->term(); - $result = $this->createTree('ptgSub', $result, $result2); - } else { - $this->advance(); - $result2 = $this->term(); - $result = $this->createTree('ptgPower', $result, $result2); - } - } - return $result; - } - - /** - * This function just introduces a ptgParen element in the tree, so that Excel - * doesn't get confused when working with a parenthesized formula afterwards. - * - * @access private - * @see fact() - * @return array The parsed ptg'd tree - */ - private function parenthesizedExpression() - { - $result = $this->createTree('ptgParen', $this->expression(), ''); - return $result; - } - - /** - * It parses a term. It assumes the following rule: - * Term -> Fact [("*" | "/") Fact] - * - * @access private - * @return mixed The parsed ptg'd tree on success - */ - private function term() - { - $result = $this->fact(); - while (($this->currentToken == "*") or - ($this->currentToken == "/")) { - /**/ - if ($this->currentToken == "*") { - $this->advance(); - $result2 = $this->fact(); - $result = $this->createTree('ptgMul', $result, $result2); - } else { - $this->advance(); - $result2 = $this->fact(); - $result = $this->createTree('ptgDiv', $result, $result2); - } - } - return $result; - } - - /** - * It parses a factor. It assumes the following rule: - * Fact -> ( Expr ) - * | CellRef - * | CellRange - * | Number - * | Function - * - * @access private - * @return mixed The parsed ptg'd tree on success - */ - private function fact() - { - if ($this->currentToken == "(") { - $this->advance(); // eat the "(" - $result = $this->parenthesizedExpression(); - if ($this->currentToken != ")") { - throw new PHPExcel_Writer_Exception("')' token expected."); - } - $this->advance(); // eat the ")" - return $result; - } - // if it's a reference - if (preg_match('/^\$?[A-Ia-i]?[A-Za-z]\$?[0-9]+$/', $this->currentToken)) { - $result = $this->createTree($this->currentToken, '', ''); - $this->advance(); - return $result; - } elseif (preg_match("/^" . self::REGEX_SHEET_TITLE_UNQUOTED . "(\:" . self::REGEX_SHEET_TITLE_UNQUOTED . ")?\!\\$?[A-Ia-i]?[A-Za-z]\\$?[0-9]+$/u", $this->currentToken)) { - // If it's an external reference (Sheet1!A1 or Sheet1:Sheet2!A1 or Sheet1!$A$1 or Sheet1:Sheet2!$A$1) - $result = $this->createTree($this->currentToken, '', ''); - $this->advance(); - return $result; - } elseif (preg_match("/^'" . self::REGEX_SHEET_TITLE_QUOTED . "(\:" . self::REGEX_SHEET_TITLE_QUOTED . ")?'\!\\$?[A-Ia-i]?[A-Za-z]\\$?[0-9]+$/u", $this->currentToken)) { - // If it's an external reference ('Sheet1'!A1 or 'Sheet1:Sheet2'!A1 or 'Sheet1'!$A$1 or 'Sheet1:Sheet2'!$A$1) - $result = $this->createTree($this->currentToken, '', ''); - $this->advance(); - return $result; - } elseif (preg_match('/^(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+:(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+$/', $this->currentToken) or - preg_match('/^(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+\.\.(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+$/', $this->currentToken)) { - // if it's a range A1:B2 or $A$1:$B$2 - // must be an error? - $result = $this->createTree($this->currentToken, '', ''); - $this->advance(); - return $result; - } elseif (preg_match("/^" . self::REGEX_SHEET_TITLE_UNQUOTED . "(\:" . self::REGEX_SHEET_TITLE_UNQUOTED . ")?\!\\$?([A-Ia-i]?[A-Za-z])?\\$?[0-9]+:\\$?([A-Ia-i]?[A-Za-z])?\\$?[0-9]+$/u", $this->currentToken)) { - // If it's an external range (Sheet1!A1:B2 or Sheet1:Sheet2!A1:B2 or Sheet1!$A$1:$B$2 or Sheet1:Sheet2!$A$1:$B$2) - // must be an error? - //$result = $this->currentToken; - $result = $this->createTree($this->currentToken, '', ''); - $this->advance(); - return $result; - } elseif (preg_match("/^'" . self::REGEX_SHEET_TITLE_QUOTED . "(\:" . self::REGEX_SHEET_TITLE_QUOTED . ")?'\!\\$?([A-Ia-i]?[A-Za-z])?\\$?[0-9]+:\\$?([A-Ia-i]?[A-Za-z])?\\$?[0-9]+$/u", $this->currentToken)) { - // If it's an external range ('Sheet1'!A1:B2 or 'Sheet1'!A1:B2 or 'Sheet1'!$A$1:$B$2 or 'Sheet1'!$A$1:$B$2) - // must be an error? - //$result = $this->currentToken; - $result = $this->createTree($this->currentToken, '', ''); - $this->advance(); - return $result; - } elseif (is_numeric($this->currentToken)) { - // If it's a number or a percent - if ($this->lookAhead == '%') { - $result = $this->createTree('ptgPercent', $this->currentToken, ''); - $this->advance(); // Skip the percentage operator once we've pre-built that tree - } else { - $result = $this->createTree($this->currentToken, '', ''); - } - $this->advance(); - return $result; - } elseif (preg_match("/^[A-Z0-9\xc0-\xdc\.]+$/i", $this->currentToken)) { - // if it's a function call - $result = $this->func(); - return $result; - } - throw new PHPExcel_Writer_Exception("Syntax error: ".$this->currentToken.", lookahead: ".$this->lookAhead.", current char: ".$this->currentCharacter); - } - - /** - * It parses a function call. It assumes the following rule: - * Func -> ( Expr [,Expr]* ) - * - * @access private - * @return mixed The parsed ptg'd tree on success - */ - private function func() - { - $num_args = 0; // number of arguments received - $function = strtoupper($this->currentToken); - $result = ''; // initialize result - $this->advance(); - $this->advance(); // eat the "(" - while ($this->currentToken != ')') { - /**/ - if ($num_args > 0) { - if ($this->currentToken == "," || $this->currentToken == ";") { - $this->advance(); // eat the "," or ";" - } else { - throw new PHPExcel_Writer_Exception("Syntax error: comma expected in function $function, arg #{$num_args}"); - } - $result2 = $this->condition(); - $result = $this->createTree('arg', $result, $result2); - } else { // first argument - $result2 = $this->condition(); - $result = $this->createTree('arg', '', $result2); - } - ++$num_args; - } - if (!isset($this->functions[$function])) { - throw new PHPExcel_Writer_Exception("Function $function() doesn't exist"); - } - $args = $this->functions[$function][1]; - // If fixed number of args eg. TIME($i, $j, $k). Check that the number of args is valid. - if (($args >= 0) and ($args != $num_args)) { - throw new PHPExcel_Writer_Exception("Incorrect number of arguments in function $function() "); - } - - $result = $this->createTree($function, $result, $num_args); - $this->advance(); // eat the ")" - return $result; - } - - /** - * Creates a tree. In fact an array which may have one or two arrays (sub-trees) - * as elements. - * - * @access private - * @param mixed $value The value of this node. - * @param mixed $left The left array (sub-tree) or a final node. - * @param mixed $right The right array (sub-tree) or a final node. - * @return array A tree - */ - private function createTree($value, $left, $right) - { - return array('value' => $value, 'left' => $left, 'right' => $right); - } - - /** - * Builds a string containing the tree in reverse polish notation (What you - * would use in a HP calculator stack). - * The following tree: - * - * + - * / \ - * 2 3 - * - * produces: "23+" - * - * The following tree: - * - * + - * / \ - * 3 * - * / \ - * 6 A1 - * - * produces: "36A1*+" - * - * In fact all operands, functions, references, etc... are written as ptg's - * - * @access public - * @param array $tree The optional tree to convert. - * @return string The tree in reverse polish notation - */ - public function toReversePolish($tree = array()) - { - $polish = ""; // the string we are going to return - if (empty($tree)) { // If it's the first call use parseTree - $tree = $this->parseTree; - } - - if (is_array($tree['left'])) { - $converted_tree = $this->toReversePolish($tree['left']); - $polish .= $converted_tree; - } elseif ($tree['left'] != '') { // It's a final node - $converted_tree = $this->convert($tree['left']); - $polish .= $converted_tree; - } - if (is_array($tree['right'])) { - $converted_tree = $this->toReversePolish($tree['right']); - $polish .= $converted_tree; - } elseif ($tree['right'] != '') { // It's a final node - $converted_tree = $this->convert($tree['right']); - $polish .= $converted_tree; - } - // if it's a function convert it here (so we can set it's arguments) - if (preg_match("/^[A-Z0-9\xc0-\xdc\.]+$/", $tree['value']) and - !preg_match('/^([A-Ia-i]?[A-Za-z])(\d+)$/', $tree['value']) and - !preg_match("/^[A-Ia-i]?[A-Za-z](\d+)\.\.[A-Ia-i]?[A-Za-z](\d+)$/", $tree['value']) and - !is_numeric($tree['value']) and - !isset($this->ptg[$tree['value']])) { - // left subtree for a function is always an array. - if ($tree['left'] != '') { - $left_tree = $this->toReversePolish($tree['left']); - } else { - $left_tree = ''; - } - // add it's left subtree and return. - return $left_tree.$this->convertFunction($tree['value'], $tree['right']); - } else { - $converted_tree = $this->convert($tree['value']); - } - $polish .= $converted_tree; - return $polish; - } -} diff --git a/application/third_party/PHPExcel/Writer/Excel5/Workbook.php b/application/third_party/PHPExcel/Writer/Excel5/Workbook.php deleted file mode 100644 index 8b068437..00000000 --- a/application/third_party/PHPExcel/Writer/Excel5/Workbook.php +++ /dev/null @@ -1,1444 +0,0 @@ -<?php - -/** - * PHPExcel_Writer_Excel5_Workbook - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_Excel5 - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -// Original file header of PEAR::Spreadsheet_Excel_Writer_Workbook (used as the base for this class): -// ----------------------------------------------------------------------------------------- -// /* -// * Module written/ported by Xavier Noguer <xnoguer@rezebra.com> -// * -// * The majority of this is _NOT_ my code. I simply ported it from the -// * PERL Spreadsheet::WriteExcel module. -// * -// * The author of the Spreadsheet::WriteExcel module is John McNamara -// * <jmcnamara@cpan.org> -// * -// * I _DO_ maintain this code, and John McNamara has nothing to do with the -// * porting of this code to PHP. Any questions directly related to this -// * class library should be directed to me. -// * -// * License Information: -// * -// * Spreadsheet_Excel_Writer: A library for generating Excel Spreadsheets -// * Copyright (c) 2002-2003 Xavier Noguer xnoguer@rezebra.com -// * -// * This library is free software; you can redistribute it and/or -// * modify it under the terms of the GNU Lesser General Public -// * License as published by the Free Software Foundation; either -// * version 2.1 of the License, or (at your option) any later version. -// * -// * This library is distributed in the hope that it will be useful, -// * but WITHOUT ANY WARRANTY; without even the implied warranty of -// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// * Lesser General Public License for more details. -// * -// * You should have received a copy of the GNU Lesser General Public -// * License along with this library; if not, write to the Free Software -// * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// */ -class PHPExcel_Writer_Excel5_Workbook extends PHPExcel_Writer_Excel5_BIFFwriter -{ - /** - * Formula parser - * - * @var PHPExcel_Writer_Excel5_Parser - */ - private $parser; - - /** - * The BIFF file size for the workbook. - * @var integer - * @see calcSheetOffsets() - */ - private $biffSize; - - /** - * XF Writers - * @var PHPExcel_Writer_Excel5_Xf[] - */ - private $xfWriters = array(); - - /** - * Array containing the colour palette - * @var array - */ - private $palette; - - /** - * The codepage indicates the text encoding used for strings - * @var integer - */ - private $codepage; - - /** - * The country code used for localization - * @var integer - */ - private $countryCode; - - /** - * Workbook - * @var PHPExcel - */ - private $phpExcel; - - /** - * Fonts writers - * - * @var PHPExcel_Writer_Excel5_Font[] - */ - private $fontWriters = array(); - - /** - * Added fonts. Maps from font's hash => index in workbook - * - * @var array - */ - private $addedFonts = array(); - - /** - * Shared number formats - * - * @var array - */ - private $numberFormats = array(); - - /** - * Added number formats. Maps from numberFormat's hash => index in workbook - * - * @var array - */ - private $addedNumberFormats = array(); - - /** - * Sizes of the binary worksheet streams - * - * @var array - */ - private $worksheetSizes = array(); - - /** - * Offsets of the binary worksheet streams relative to the start of the global workbook stream - * - * @var array - */ - private $worksheetOffsets = array(); - - /** - * Total number of shared strings in workbook - * - * @var int - */ - private $stringTotal; - - /** - * Number of unique shared strings in workbook - * - * @var int - */ - private $stringUnique; - - /** - * Array of unique shared strings in workbook - * - * @var array - */ - private $stringTable; - - /** - * Color cache - */ - private $colors; - - /** - * Escher object corresponding to MSODRAWINGGROUP - * - * @var PHPExcel_Shared_Escher - */ - private $escher; - - - /** - * Class constructor - * - * @param PHPExcel $phpExcel The Workbook - * @param int &$str_total Total number of strings - * @param int &$str_unique Total number of unique strings - * @param array &$str_table String Table - * @param array &$colors Colour Table - * @param mixed $parser The formula parser created for the Workbook - */ - public function __construct(PHPExcel $phpExcel = null, &$str_total, &$str_unique, &$str_table, &$colors, $parser) - { - // It needs to call its parent's constructor explicitly - parent::__construct(); - - $this->parser = $parser; - $this->biffSize = 0; - $this->palette = array(); - $this->countryCode = -1; - - $this->stringTotal = &$str_total; - $this->stringUnique = &$str_unique; - $this->stringTable = &$str_table; - $this->colors = &$colors; - $this->setPaletteXl97(); - - $this->phpExcel = $phpExcel; - - // set BIFFwriter limit for CONTINUE records - // $this->_limit = 8224; - $this->codepage = 0x04B0; - - // Add empty sheets and Build color cache - $countSheets = $phpExcel->getSheetCount(); - for ($i = 0; $i < $countSheets; ++$i) { - $phpSheet = $phpExcel->getSheet($i); - - $this->parser->setExtSheet($phpSheet->getTitle(), $i); // Register worksheet name with parser - - $supbook_index = 0x00; - $ref = pack('vvv', $supbook_index, $i, $i); - $this->parser->references[] = $ref; // Register reference with parser - - // Sheet tab colors? - if ($phpSheet->isTabColorSet()) { - $this->addColor($phpSheet->getTabColor()->getRGB()); - } - } - - } - - /** - * Add a new XF writer - * - * @param PHPExcel_Style - * @param boolean Is it a style XF? - * @return int Index to XF record - */ - public function addXfWriter($style, $isStyleXf = false) - { - $xfWriter = new PHPExcel_Writer_Excel5_Xf($style); - $xfWriter->setIsStyleXf($isStyleXf); - - // Add the font if not already added - $fontIndex = $this->addFont($style->getFont()); - - // Assign the font index to the xf record - $xfWriter->setFontIndex($fontIndex); - - // Background colors, best to treat these after the font so black will come after white in custom palette - $xfWriter->setFgColor($this->addColor($style->getFill()->getStartColor()->getRGB())); - $xfWriter->setBgColor($this->addColor($style->getFill()->getEndColor()->getRGB())); - $xfWriter->setBottomColor($this->addColor($style->getBorders()->getBottom()->getColor()->getRGB())); - $xfWriter->setTopColor($this->addColor($style->getBorders()->getTop()->getColor()->getRGB())); - $xfWriter->setRightColor($this->addColor($style->getBorders()->getRight()->getColor()->getRGB())); - $xfWriter->setLeftColor($this->addColor($style->getBorders()->getLeft()->getColor()->getRGB())); - $xfWriter->setDiagColor($this->addColor($style->getBorders()->getDiagonal()->getColor()->getRGB())); - - // Add the number format if it is not a built-in one and not already added - if ($style->getNumberFormat()->getBuiltInFormatCode() === false) { - $numberFormatHashCode = $style->getNumberFormat()->getHashCode(); - - if (isset($this->addedNumberFormats[$numberFormatHashCode])) { - $numberFormatIndex = $this->addedNumberFormats[$numberFormatHashCode]; - } else { - $numberFormatIndex = 164 + count($this->numberFormats); - $this->numberFormats[$numberFormatIndex] = $style->getNumberFormat(); - $this->addedNumberFormats[$numberFormatHashCode] = $numberFormatIndex; - } - } else { - $numberFormatIndex = (int) $style->getNumberFormat()->getBuiltInFormatCode(); - } - - // Assign the number format index to xf record - $xfWriter->setNumberFormatIndex($numberFormatIndex); - - $this->xfWriters[] = $xfWriter; - - $xfIndex = count($this->xfWriters) - 1; - return $xfIndex; - } - - /** - * Add a font to added fonts - * - * @param PHPExcel_Style_Font $font - * @return int Index to FONT record - */ - public function addFont(PHPExcel_Style_Font $font) - { - $fontHashCode = $font->getHashCode(); - if (isset($this->addedFonts[$fontHashCode])) { - $fontIndex = $this->addedFonts[$fontHashCode]; - } else { - $countFonts = count($this->fontWriters); - $fontIndex = ($countFonts < 4) ? $countFonts : $countFonts + 1; - - $fontWriter = new PHPExcel_Writer_Excel5_Font($font); - $fontWriter->setColorIndex($this->addColor($font->getColor()->getRGB())); - $this->fontWriters[] = $fontWriter; - - $this->addedFonts[$fontHashCode] = $fontIndex; - } - return $fontIndex; - } - - /** - * Alter color palette adding a custom color - * - * @param string $rgb E.g. 'FF00AA' - * @return int Color index - */ - private function addColor($rgb) - { - if (!isset($this->colors[$rgb])) { - if (count($this->colors) < 57) { - // then we add a custom color altering the palette - $colorIndex = 8 + count($this->colors); - $this->palette[$colorIndex] = - array( - hexdec(substr($rgb, 0, 2)), - hexdec(substr($rgb, 2, 2)), - hexdec(substr($rgb, 4)), - 0 - ); - $this->colors[$rgb] = $colorIndex; - } else { - // no room for more custom colors, just map to black - $colorIndex = 0; - } - } else { - // fetch already added custom color - $colorIndex = $this->colors[$rgb]; - } - - return $colorIndex; - } - - /** - * Sets the colour palette to the Excel 97+ default. - * - * @access private - */ - private function setPaletteXl97() - { - $this->palette = array( - 0x08 => array(0x00, 0x00, 0x00, 0x00), - 0x09 => array(0xff, 0xff, 0xff, 0x00), - 0x0A => array(0xff, 0x00, 0x00, 0x00), - 0x0B => array(0x00, 0xff, 0x00, 0x00), - 0x0C => array(0x00, 0x00, 0xff, 0x00), - 0x0D => array(0xff, 0xff, 0x00, 0x00), - 0x0E => array(0xff, 0x00, 0xff, 0x00), - 0x0F => array(0x00, 0xff, 0xff, 0x00), - 0x10 => array(0x80, 0x00, 0x00, 0x00), - 0x11 => array(0x00, 0x80, 0x00, 0x00), - 0x12 => array(0x00, 0x00, 0x80, 0x00), - 0x13 => array(0x80, 0x80, 0x00, 0x00), - 0x14 => array(0x80, 0x00, 0x80, 0x00), - 0x15 => array(0x00, 0x80, 0x80, 0x00), - 0x16 => array(0xc0, 0xc0, 0xc0, 0x00), - 0x17 => array(0x80, 0x80, 0x80, 0x00), - 0x18 => array(0x99, 0x99, 0xff, 0x00), - 0x19 => array(0x99, 0x33, 0x66, 0x00), - 0x1A => array(0xff, 0xff, 0xcc, 0x00), - 0x1B => array(0xcc, 0xff, 0xff, 0x00), - 0x1C => array(0x66, 0x00, 0x66, 0x00), - 0x1D => array(0xff, 0x80, 0x80, 0x00), - 0x1E => array(0x00, 0x66, 0xcc, 0x00), - 0x1F => array(0xcc, 0xcc, 0xff, 0x00), - 0x20 => array(0x00, 0x00, 0x80, 0x00), - 0x21 => array(0xff, 0x00, 0xff, 0x00), - 0x22 => array(0xff, 0xff, 0x00, 0x00), - 0x23 => array(0x00, 0xff, 0xff, 0x00), - 0x24 => array(0x80, 0x00, 0x80, 0x00), - 0x25 => array(0x80, 0x00, 0x00, 0x00), - 0x26 => array(0x00, 0x80, 0x80, 0x00), - 0x27 => array(0x00, 0x00, 0xff, 0x00), - 0x28 => array(0x00, 0xcc, 0xff, 0x00), - 0x29 => array(0xcc, 0xff, 0xff, 0x00), - 0x2A => array(0xcc, 0xff, 0xcc, 0x00), - 0x2B => array(0xff, 0xff, 0x99, 0x00), - 0x2C => array(0x99, 0xcc, 0xff, 0x00), - 0x2D => array(0xff, 0x99, 0xcc, 0x00), - 0x2E => array(0xcc, 0x99, 0xff, 0x00), - 0x2F => array(0xff, 0xcc, 0x99, 0x00), - 0x30 => array(0x33, 0x66, 0xff, 0x00), - 0x31 => array(0x33, 0xcc, 0xcc, 0x00), - 0x32 => array(0x99, 0xcc, 0x00, 0x00), - 0x33 => array(0xff, 0xcc, 0x00, 0x00), - 0x34 => array(0xff, 0x99, 0x00, 0x00), - 0x35 => array(0xff, 0x66, 0x00, 0x00), - 0x36 => array(0x66, 0x66, 0x99, 0x00), - 0x37 => array(0x96, 0x96, 0x96, 0x00), - 0x38 => array(0x00, 0x33, 0x66, 0x00), - 0x39 => array(0x33, 0x99, 0x66, 0x00), - 0x3A => array(0x00, 0x33, 0x00, 0x00), - 0x3B => array(0x33, 0x33, 0x00, 0x00), - 0x3C => array(0x99, 0x33, 0x00, 0x00), - 0x3D => array(0x99, 0x33, 0x66, 0x00), - 0x3E => array(0x33, 0x33, 0x99, 0x00), - 0x3F => array(0x33, 0x33, 0x33, 0x00), - ); - } - - /** - * Assemble worksheets into a workbook and send the BIFF data to an OLE - * storage. - * - * @param array $pWorksheetSizes The sizes in bytes of the binary worksheet streams - * @return string Binary data for workbook stream - */ - public function writeWorkbook($pWorksheetSizes = null) - { - $this->worksheetSizes = $pWorksheetSizes; - - // Calculate the number of selected worksheet tabs and call the finalization - // methods for each worksheet - $total_worksheets = $this->phpExcel->getSheetCount(); - - // Add part 1 of the Workbook globals, what goes before the SHEET records - $this->storeBof(0x0005); - $this->writeCodepage(); - $this->writeWindow1(); - - $this->writeDateMode(); - $this->writeAllFonts(); - $this->writeAllNumberFormats(); - $this->writeAllXfs(); - $this->writeAllStyles(); - $this->writePalette(); - - // Prepare part 3 of the workbook global stream, what goes after the SHEET records - $part3 = ''; - if ($this->countryCode != -1) { - $part3 .= $this->writeCountry(); - } - $part3 .= $this->writeRecalcId(); - - $part3 .= $this->writeSupbookInternal(); - /* TODO: store external SUPBOOK records and XCT and CRN records - in case of external references for BIFF8 */ - $part3 .= $this->writeExternalsheetBiff8(); - $part3 .= $this->writeAllDefinedNamesBiff8(); - $part3 .= $this->writeMsoDrawingGroup(); - $part3 .= $this->writeSharedStringsTable(); - - $part3 .= $this->writeEof(); - - // Add part 2 of the Workbook globals, the SHEET records - $this->calcSheetOffsets(); - for ($i = 0; $i < $total_worksheets; ++$i) { - $this->writeBoundSheet($this->phpExcel->getSheet($i), $this->worksheetOffsets[$i]); - } - - // Add part 3 of the Workbook globals - $this->_data .= $part3; - - return $this->_data; - } - - /** - * Calculate offsets for Worksheet BOF records. - * - * @access private - */ - private function calcSheetOffsets() - { - $boundsheet_length = 10; // fixed length for a BOUNDSHEET record - - // size of Workbook globals part 1 + 3 - $offset = $this->_datasize; - - // add size of Workbook globals part 2, the length of the SHEET records - $total_worksheets = count($this->phpExcel->getAllSheets()); - foreach ($this->phpExcel->getWorksheetIterator() as $sheet) { - $offset += $boundsheet_length + strlen(PHPExcel_Shared_String::UTF8toBIFF8UnicodeShort($sheet->getTitle())); - } - - // add the sizes of each of the Sheet substreams, respectively - for ($i = 0; $i < $total_worksheets; ++$i) { - $this->worksheetOffsets[$i] = $offset; - $offset += $this->worksheetSizes[$i]; - } - $this->biffSize = $offset; - } - - /** - * Store the Excel FONT records. - */ - private function writeAllFonts() - { - foreach ($this->fontWriters as $fontWriter) { - $this->append($fontWriter->writeFont()); - } - } - - /** - * Store user defined numerical formats i.e. FORMAT records - */ - private function writeAllNumberFormats() - { - foreach ($this->numberFormats as $numberFormatIndex => $numberFormat) { - $this->writeNumberFormat($numberFormat->getFormatCode(), $numberFormatIndex); - } - } - - /** - * Write all XF records. - */ - private function writeAllXfs() - { - foreach ($this->xfWriters as $xfWriter) { - $this->append($xfWriter->writeXf()); - } - } - - /** - * Write all STYLE records. - */ - private function writeAllStyles() - { - $this->writeStyle(); - } - - /** - * Write the EXTERNCOUNT and EXTERNSHEET records. These are used as indexes for - * the NAME records. - */ - private function writeExternals() - { - $countSheets = $this->phpExcel->getSheetCount(); - // Create EXTERNCOUNT with number of worksheets - $this->writeExternalCount($countSheets); - - // Create EXTERNSHEET for each worksheet - for ($i = 0; $i < $countSheets; ++$i) { - $this->writeExternalSheet($this->phpExcel->getSheet($i)->getTitle()); - } - } - - /** - * Write the NAME record to define the print area and the repeat rows and cols. - */ - private function writeNames() - { - // total number of sheets - $total_worksheets = $this->phpExcel->getSheetCount(); - - // Create the print area NAME records - for ($i = 0; $i < $total_worksheets; ++$i) { - $sheetSetup = $this->phpExcel->getSheet($i)->getPageSetup(); - // Write a Name record if the print area has been defined - if ($sheetSetup->isPrintAreaSet()) { - // Print area - $printArea = PHPExcel_Cell::splitRange($sheetSetup->getPrintArea()); - $printArea = $printArea[0]; - $printArea[0] = PHPExcel_Cell::coordinateFromString($printArea[0]); - $printArea[1] = PHPExcel_Cell::coordinateFromString($printArea[1]); - - $print_rowmin = $printArea[0][1] - 1; - $print_rowmax = $printArea[1][1] - 1; - $print_colmin = PHPExcel_Cell::columnIndexFromString($printArea[0][0]) - 1; - $print_colmax = PHPExcel_Cell::columnIndexFromString($printArea[1][0]) - 1; - - $this->writeNameShort( - $i, // sheet index - 0x06, // NAME type - $print_rowmin, - $print_rowmax, - $print_colmin, - $print_colmax - ); - } - } - - // Create the print title NAME records - for ($i = 0; $i < $total_worksheets; ++$i) { - $sheetSetup = $this->phpExcel->getSheet($i)->getPageSetup(); - - // simultaneous repeatColumns repeatRows - if ($sheetSetup->isColumnsToRepeatAtLeftSet() && $sheetSetup->isRowsToRepeatAtTopSet()) { - $repeat = $sheetSetup->getColumnsToRepeatAtLeft(); - $colmin = PHPExcel_Cell::columnIndexFromString($repeat[0]) - 1; - $colmax = PHPExcel_Cell::columnIndexFromString($repeat[1]) - 1; - - $repeat = $sheetSetup->getRowsToRepeatAtTop(); - $rowmin = $repeat[0] - 1; - $rowmax = $repeat[1] - 1; - - $this->writeNameLong( - $i, // sheet index - 0x07, // NAME type - $rowmin, - $rowmax, - $colmin, - $colmax - ); - - // (exclusive) either repeatColumns or repeatRows - } elseif ($sheetSetup->isColumnsToRepeatAtLeftSet() || $sheetSetup->isRowsToRepeatAtTopSet()) { - // Columns to repeat - if ($sheetSetup->isColumnsToRepeatAtLeftSet()) { - $repeat = $sheetSetup->getColumnsToRepeatAtLeft(); - $colmin = PHPExcel_Cell::columnIndexFromString($repeat[0]) - 1; - $colmax = PHPExcel_Cell::columnIndexFromString($repeat[1]) - 1; - } else { - $colmin = 0; - $colmax = 255; - } - - // Rows to repeat - if ($sheetSetup->isRowsToRepeatAtTopSet()) { - $repeat = $sheetSetup->getRowsToRepeatAtTop(); - $rowmin = $repeat[0] - 1; - $rowmax = $repeat[1] - 1; - } else { - $rowmin = 0; - $rowmax = 65535; - } - - $this->writeNameShort( - $i, // sheet index - 0x07, // NAME type - $rowmin, - $rowmax, - $colmin, - $colmax - ); - } - } - } - - /** - * Writes all the DEFINEDNAME records (BIFF8). - * So far this is only used for repeating rows/columns (print titles) and print areas - */ - private function writeAllDefinedNamesBiff8() - { - $chunk = ''; - - // Named ranges - if (count($this->phpExcel->getNamedRanges()) > 0) { - // Loop named ranges - $namedRanges = $this->phpExcel->getNamedRanges(); - foreach ($namedRanges as $namedRange) { - // Create absolute coordinate - $range = PHPExcel_Cell::splitRange($namedRange->getRange()); - for ($i = 0; $i < count($range); $i++) { - $range[$i][0] = '\'' . str_replace("'", "''", $namedRange->getWorksheet()->getTitle()) . '\'!' . PHPExcel_Cell::absoluteCoordinate($range[$i][0]); - if (isset($range[$i][1])) { - $range[$i][1] = PHPExcel_Cell::absoluteCoordinate($range[$i][1]); - } - } - $range = PHPExcel_Cell::buildRange($range); // e.g. Sheet1!$A$1:$B$2 - - // parse formula - try { - $error = $this->parser->parse($range); - $formulaData = $this->parser->toReversePolish(); - - // make sure tRef3d is of type tRef3dR (0x3A) - if (isset($formulaData{0}) and ($formulaData{0} == "\x7A" or $formulaData{0} == "\x5A")) { - $formulaData = "\x3A" . substr($formulaData, 1); - } - - if ($namedRange->getLocalOnly()) { - // local scope - $scope = $this->phpExcel->getIndex($namedRange->getScope()) + 1; - } else { - // global scope - $scope = 0; - } - $chunk .= $this->writeData($this->writeDefinedNameBiff8($namedRange->getName(), $formulaData, $scope, false)); - - } catch (PHPExcel_Exception $e) { - // do nothing - } - } - } - - // total number of sheets - $total_worksheets = $this->phpExcel->getSheetCount(); - - // write the print titles (repeating rows, columns), if any - for ($i = 0; $i < $total_worksheets; ++$i) { - $sheetSetup = $this->phpExcel->getSheet($i)->getPageSetup(); - // simultaneous repeatColumns repeatRows - if ($sheetSetup->isColumnsToRepeatAtLeftSet() && $sheetSetup->isRowsToRepeatAtTopSet()) { - $repeat = $sheetSetup->getColumnsToRepeatAtLeft(); - $colmin = PHPExcel_Cell::columnIndexFromString($repeat[0]) - 1; - $colmax = PHPExcel_Cell::columnIndexFromString($repeat[1]) - 1; - - $repeat = $sheetSetup->getRowsToRepeatAtTop(); - $rowmin = $repeat[0] - 1; - $rowmax = $repeat[1] - 1; - - // construct formula data manually - $formulaData = pack('Cv', 0x29, 0x17); // tMemFunc - $formulaData .= pack('Cvvvvv', 0x3B, $i, 0, 65535, $colmin, $colmax); // tArea3d - $formulaData .= pack('Cvvvvv', 0x3B, $i, $rowmin, $rowmax, 0, 255); // tArea3d - $formulaData .= pack('C', 0x10); // tList - - // store the DEFINEDNAME record - $chunk .= $this->writeData($this->writeDefinedNameBiff8(pack('C', 0x07), $formulaData, $i + 1, true)); - - // (exclusive) either repeatColumns or repeatRows - } elseif ($sheetSetup->isColumnsToRepeatAtLeftSet() || $sheetSetup->isRowsToRepeatAtTopSet()) { - // Columns to repeat - if ($sheetSetup->isColumnsToRepeatAtLeftSet()) { - $repeat = $sheetSetup->getColumnsToRepeatAtLeft(); - $colmin = PHPExcel_Cell::columnIndexFromString($repeat[0]) - 1; - $colmax = PHPExcel_Cell::columnIndexFromString($repeat[1]) - 1; - } else { - $colmin = 0; - $colmax = 255; - } - // Rows to repeat - if ($sheetSetup->isRowsToRepeatAtTopSet()) { - $repeat = $sheetSetup->getRowsToRepeatAtTop(); - $rowmin = $repeat[0] - 1; - $rowmax = $repeat[1] - 1; - } else { - $rowmin = 0; - $rowmax = 65535; - } - - // construct formula data manually because parser does not recognize absolute 3d cell references - $formulaData = pack('Cvvvvv', 0x3B, $i, $rowmin, $rowmax, $colmin, $colmax); - - // store the DEFINEDNAME record - $chunk .= $this->writeData($this->writeDefinedNameBiff8(pack('C', 0x07), $formulaData, $i + 1, true)); - } - } - - // write the print areas, if any - for ($i = 0; $i < $total_worksheets; ++$i) { - $sheetSetup = $this->phpExcel->getSheet($i)->getPageSetup(); - if ($sheetSetup->isPrintAreaSet()) { - // Print area, e.g. A3:J6,H1:X20 - $printArea = PHPExcel_Cell::splitRange($sheetSetup->getPrintArea()); - $countPrintArea = count($printArea); - - $formulaData = ''; - for ($j = 0; $j < $countPrintArea; ++$j) { - $printAreaRect = $printArea[$j]; // e.g. A3:J6 - $printAreaRect[0] = PHPExcel_Cell::coordinateFromString($printAreaRect[0]); - $printAreaRect[1] = PHPExcel_Cell::coordinateFromString($printAreaRect[1]); - - $print_rowmin = $printAreaRect[0][1] - 1; - $print_rowmax = $printAreaRect[1][1] - 1; - $print_colmin = PHPExcel_Cell::columnIndexFromString($printAreaRect[0][0]) - 1; - $print_colmax = PHPExcel_Cell::columnIndexFromString($printAreaRect[1][0]) - 1; - - // construct formula data manually because parser does not recognize absolute 3d cell references - $formulaData .= pack('Cvvvvv', 0x3B, $i, $print_rowmin, $print_rowmax, $print_colmin, $print_colmax); - - if ($j > 0) { - $formulaData .= pack('C', 0x10); // list operator token ',' - } - } - - // store the DEFINEDNAME record - $chunk .= $this->writeData($this->writeDefinedNameBiff8(pack('C', 0x06), $formulaData, $i + 1, true)); - } - } - - // write autofilters, if any - for ($i = 0; $i < $total_worksheets; ++$i) { - $sheetAutoFilter = $this->phpExcel->getSheet($i)->getAutoFilter(); - $autoFilterRange = $sheetAutoFilter->getRange(); - if (!empty($autoFilterRange)) { - $rangeBounds = PHPExcel_Cell::rangeBoundaries($autoFilterRange); - - //Autofilter built in name - $name = pack('C', 0x0D); - - $chunk .= $this->writeData($this->writeShortNameBiff8($name, $i + 1, $rangeBounds, true)); - } - } - - return $chunk; - } - - /** - * Write a DEFINEDNAME record for BIFF8 using explicit binary formula data - * - * @param string $name The name in UTF-8 - * @param string $formulaData The binary formula data - * @param string $sheetIndex 1-based sheet index the defined name applies to. 0 = global - * @param boolean $isBuiltIn Built-in name? - * @return string Complete binary record data - */ - private function writeDefinedNameBiff8($name, $formulaData, $sheetIndex = 0, $isBuiltIn = false) - { - $record = 0x0018; - - // option flags - $options = $isBuiltIn ? 0x20 : 0x00; - - // length of the name, character count - $nlen = PHPExcel_Shared_String::CountCharacters($name); - - // name with stripped length field - $name = substr(PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($name), 2); - - // size of the formula (in bytes) - $sz = strlen($formulaData); - - // combine the parts - $data = pack('vCCvvvCCCC', $options, 0, $nlen, $sz, 0, $sheetIndex, 0, 0, 0, 0) - . $name . $formulaData; - $length = strlen($data); - - $header = pack('vv', $record, $length); - - return $header . $data; - } - - /** - * Write a short NAME record - * - * @param string $name - * @param string $sheetIndex 1-based sheet index the defined name applies to. 0 = global - * @param integer[][] $rangeBounds range boundaries - * @param boolean $isHidden - * @return string Complete binary record data - * */ - private function writeShortNameBiff8($name, $sheetIndex = 0, $rangeBounds, $isHidden = false) - { - $record = 0x0018; - - // option flags - $options = ($isHidden ? 0x21 : 0x00); - - $extra = pack( - 'Cvvvvv', - 0x3B, - $sheetIndex - 1, - $rangeBounds[0][1] - 1, - $rangeBounds[1][1] - 1, - $rangeBounds[0][0] - 1, - $rangeBounds[1][0] - 1 - ); - - // size of the formula (in bytes) - $sz = strlen($extra); - - // combine the parts - $data = pack('vCCvvvCCCCC', $options, 0, 1, $sz, 0, $sheetIndex, 0, 0, 0, 0, 0) - . $name . $extra; - $length = strlen($data); - - $header = pack('vv', $record, $length); - - return $header . $data; - } - - /** - * Stores the CODEPAGE biff record. - */ - private function writeCodepage() - { - $record = 0x0042; // Record identifier - $length = 0x0002; // Number of bytes to follow - $cv = $this->codepage; // The code page - - $header = pack('vv', $record, $length); - $data = pack('v', $cv); - - $this->append($header . $data); - } - - /** - * Write Excel BIFF WINDOW1 record. - */ - private function writeWindow1() - { - $record = 0x003D; // Record identifier - $length = 0x0012; // Number of bytes to follow - - $xWn = 0x0000; // Horizontal position of window - $yWn = 0x0000; // Vertical position of window - $dxWn = 0x25BC; // Width of window - $dyWn = 0x1572; // Height of window - - $grbit = 0x0038; // Option flags - - // not supported by PHPExcel, so there is only one selected sheet, the active - $ctabsel = 1; // Number of workbook tabs selected - - $wTabRatio = 0x0258; // Tab to scrollbar ratio - - // not supported by PHPExcel, set to 0 - $itabFirst = 0; // 1st displayed worksheet - $itabCur = $this->phpExcel->getActiveSheetIndex(); // Active worksheet - - $header = pack("vv", $record, $length); - $data = pack("vvvvvvvvv", $xWn, $yWn, $dxWn, $dyWn, $grbit, $itabCur, $itabFirst, $ctabsel, $wTabRatio); - $this->append($header . $data); - } - - /** - * Writes Excel BIFF BOUNDSHEET record. - * - * @param PHPExcel_Worksheet $sheet Worksheet name - * @param integer $offset Location of worksheet BOF - */ - private function writeBoundSheet($sheet, $offset) - { - $sheetname = $sheet->getTitle(); - $record = 0x0085; // Record identifier - - // sheet state - switch ($sheet->getSheetState()) { - case PHPExcel_Worksheet::SHEETSTATE_VISIBLE: - $ss = 0x00; - break; - case PHPExcel_Worksheet::SHEETSTATE_HIDDEN: - $ss = 0x01; - break; - case PHPExcel_Worksheet::SHEETSTATE_VERYHIDDEN: - $ss = 0x02; - break; - default: - $ss = 0x00; - break; - } - - // sheet type - $st = 0x00; - - $grbit = 0x0000; // Visibility and sheet type - - $data = pack("VCC", $offset, $ss, $st); - $data .= PHPExcel_Shared_String::UTF8toBIFF8UnicodeShort($sheetname); - - $length = strlen($data); - $header = pack("vv", $record, $length); - $this->append($header . $data); - } - - /** - * Write Internal SUPBOOK record - */ - private function writeSupbookInternal() - { - $record = 0x01AE; // Record identifier - $length = 0x0004; // Bytes to follow - - $header = pack("vv", $record, $length); - $data = pack("vv", $this->phpExcel->getSheetCount(), 0x0401); - return $this->writeData($header . $data); - } - - /** - * Writes the Excel BIFF EXTERNSHEET record. These references are used by - * formulas. - * - */ - private function writeExternalsheetBiff8() - { - $totalReferences = count($this->parser->references); - $record = 0x0017; // Record identifier - $length = 2 + 6 * $totalReferences; // Number of bytes to follow - - $supbook_index = 0; // FIXME: only using internal SUPBOOK record - $header = pack("vv", $record, $length); - $data = pack('v', $totalReferences); - for ($i = 0; $i < $totalReferences; ++$i) { - $data .= $this->parser->references[$i]; - } - return $this->writeData($header . $data); - } - - /** - * Write Excel BIFF STYLE records. - */ - private function writeStyle() - { - $record = 0x0293; // Record identifier - $length = 0x0004; // Bytes to follow - - $ixfe = 0x8000; // Index to cell style XF - $BuiltIn = 0x00; // Built-in style - $iLevel = 0xff; // Outline style level - - $header = pack("vv", $record, $length); - $data = pack("vCC", $ixfe, $BuiltIn, $iLevel); - $this->append($header . $data); - } - - /** - * Writes Excel FORMAT record for non "built-in" numerical formats. - * - * @param string $format Custom format string - * @param integer $ifmt Format index code - */ - private function writeNumberFormat($format, $ifmt) - { - $record = 0x041E; // Record identifier - - $numberFormatString = PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($format); - $length = 2 + strlen($numberFormatString); // Number of bytes to follow - - - $header = pack("vv", $record, $length); - $data = pack("v", $ifmt) . $numberFormatString; - $this->append($header . $data); - } - - /** - * Write DATEMODE record to indicate the date system in use (1904 or 1900). - */ - private function writeDateMode() - { - $record = 0x0022; // Record identifier - $length = 0x0002; // Bytes to follow - - $f1904 = (PHPExcel_Shared_Date::getExcelCalendar() == PHPExcel_Shared_Date::CALENDAR_MAC_1904) - ? 1 - : 0; // Flag for 1904 date system - - $header = pack("vv", $record, $length); - $data = pack("v", $f1904); - $this->append($header . $data); - } - - /** - * Write BIFF record EXTERNCOUNT to indicate the number of external sheet - * references in the workbook. - * - * Excel only stores references to external sheets that are used in NAME. - * The workbook NAME record is required to define the print area and the repeat - * rows and columns. - * - * A similar method is used in Worksheet.php for a slightly different purpose. - * - * @param integer $cxals Number of external references - */ - private function writeExternalCount($cxals) - { - $record = 0x0016; // Record identifier - $length = 0x0002; // Number of bytes to follow - - $header = pack("vv", $record, $length); - $data = pack("v", $cxals); - $this->append($header . $data); - } - - /** - * Writes the Excel BIFF EXTERNSHEET record. These references are used by - * formulas. NAME record is required to define the print area and the repeat - * rows and columns. - * - * A similar method is used in Worksheet.php for a slightly different purpose. - * - * @param string $sheetname Worksheet name - */ - private function writeExternalSheet($sheetname) - { - $record = 0x0017; // Record identifier - $length = 0x02 + strlen($sheetname); // Number of bytes to follow - - $cch = strlen($sheetname); // Length of sheet name - $rgch = 0x03; // Filename encoding - - $header = pack("vv", $record, $length); - $data = pack("CC", $cch, $rgch); - $this->append($header . $data . $sheetname); - } - - /** - * Store the NAME record in the short format that is used for storing the print - * area, repeat rows only and repeat columns only. - * - * @param integer $index Sheet index - * @param integer $type Built-in name type - * @param integer $rowmin Start row - * @param integer $rowmax End row - * @param integer $colmin Start colum - * @param integer $colmax End column - */ - private function writeNameShort($index, $type, $rowmin, $rowmax, $colmin, $colmax) - { - $record = 0x0018; // Record identifier - $length = 0x0024; // Number of bytes to follow - - $grbit = 0x0020; // Option flags - $chKey = 0x00; // Keyboard shortcut - $cch = 0x01; // Length of text name - $cce = 0x0015; // Length of text definition - $ixals = $index + 1; // Sheet index - $itab = $ixals; // Equal to ixals - $cchCustMenu = 0x00; // Length of cust menu text - $cchDescription = 0x00; // Length of description text - $cchHelptopic = 0x00; // Length of help topic text - $cchStatustext = 0x00; // Length of status bar text - $rgch = $type; // Built-in name type - - $unknown03 = 0x3b; - $unknown04 = 0xffff - $index; - $unknown05 = 0x0000; - $unknown06 = 0x0000; - $unknown07 = 0x1087; - $unknown08 = 0x8005; - - $header = pack("vv", $record, $length); - $data = pack("v", $grbit); - $data .= pack("C", $chKey); - $data .= pack("C", $cch); - $data .= pack("v", $cce); - $data .= pack("v", $ixals); - $data .= pack("v", $itab); - $data .= pack("C", $cchCustMenu); - $data .= pack("C", $cchDescription); - $data .= pack("C", $cchHelptopic); - $data .= pack("C", $cchStatustext); - $data .= pack("C", $rgch); - $data .= pack("C", $unknown03); - $data .= pack("v", $unknown04); - $data .= pack("v", $unknown05); - $data .= pack("v", $unknown06); - $data .= pack("v", $unknown07); - $data .= pack("v", $unknown08); - $data .= pack("v", $index); - $data .= pack("v", $index); - $data .= pack("v", $rowmin); - $data .= pack("v", $rowmax); - $data .= pack("C", $colmin); - $data .= pack("C", $colmax); - $this->append($header . $data); - } - - /** - * Store the NAME record in the long format that is used for storing the repeat - * rows and columns when both are specified. This shares a lot of code with - * writeNameShort() but we use a separate method to keep the code clean. - * Code abstraction for reuse can be carried too far, and I should know. ;-) - * - * @param integer $index Sheet index - * @param integer $type Built-in name type - * @param integer $rowmin Start row - * @param integer $rowmax End row - * @param integer $colmin Start colum - * @param integer $colmax End column - */ - private function writeNameLong($index, $type, $rowmin, $rowmax, $colmin, $colmax) - { - $record = 0x0018; // Record identifier - $length = 0x003d; // Number of bytes to follow - $grbit = 0x0020; // Option flags - $chKey = 0x00; // Keyboard shortcut - $cch = 0x01; // Length of text name - $cce = 0x002e; // Length of text definition - $ixals = $index + 1; // Sheet index - $itab = $ixals; // Equal to ixals - $cchCustMenu = 0x00; // Length of cust menu text - $cchDescription = 0x00; // Length of description text - $cchHelptopic = 0x00; // Length of help topic text - $cchStatustext = 0x00; // Length of status bar text - $rgch = $type; // Built-in name type - - $unknown01 = 0x29; - $unknown02 = 0x002b; - $unknown03 = 0x3b; - $unknown04 = 0xffff-$index; - $unknown05 = 0x0000; - $unknown06 = 0x0000; - $unknown07 = 0x1087; - $unknown08 = 0x8008; - - $header = pack("vv", $record, $length); - $data = pack("v", $grbit); - $data .= pack("C", $chKey); - $data .= pack("C", $cch); - $data .= pack("v", $cce); - $data .= pack("v", $ixals); - $data .= pack("v", $itab); - $data .= pack("C", $cchCustMenu); - $data .= pack("C", $cchDescription); - $data .= pack("C", $cchHelptopic); - $data .= pack("C", $cchStatustext); - $data .= pack("C", $rgch); - $data .= pack("C", $unknown01); - $data .= pack("v", $unknown02); - // Column definition - $data .= pack("C", $unknown03); - $data .= pack("v", $unknown04); - $data .= pack("v", $unknown05); - $data .= pack("v", $unknown06); - $data .= pack("v", $unknown07); - $data .= pack("v", $unknown08); - $data .= pack("v", $index); - $data .= pack("v", $index); - $data .= pack("v", 0x0000); - $data .= pack("v", 0x3fff); - $data .= pack("C", $colmin); - $data .= pack("C", $colmax); - // Row definition - $data .= pack("C", $unknown03); - $data .= pack("v", $unknown04); - $data .= pack("v", $unknown05); - $data .= pack("v", $unknown06); - $data .= pack("v", $unknown07); - $data .= pack("v", $unknown08); - $data .= pack("v", $index); - $data .= pack("v", $index); - $data .= pack("v", $rowmin); - $data .= pack("v", $rowmax); - $data .= pack("C", 0x00); - $data .= pack("C", 0xff); - // End of data - $data .= pack("C", 0x10); - $this->append($header . $data); - } - - /** - * Stores the COUNTRY record for localization - * - * @return string - */ - private function writeCountry() - { - $record = 0x008C; // Record identifier - $length = 4; // Number of bytes to follow - - $header = pack('vv', $record, $length); - /* using the same country code always for simplicity */ - $data = pack('vv', $this->countryCode, $this->countryCode); - //$this->append($header . $data); - return $this->writeData($header . $data); - } - - /** - * Write the RECALCID record - * - * @return string - */ - private function writeRecalcId() - { - $record = 0x01C1; // Record identifier - $length = 8; // Number of bytes to follow - - $header = pack('vv', $record, $length); - - // by inspection of real Excel files, MS Office Excel 2007 writes this - $data = pack('VV', 0x000001C1, 0x00001E667); - - return $this->writeData($header . $data); - } - - /** - * Stores the PALETTE biff record. - */ - private function writePalette() - { - $aref = $this->palette; - - $record = 0x0092; // Record identifier - $length = 2 + 4 * count($aref); // Number of bytes to follow - $ccv = count($aref); // Number of RGB values to follow - $data = ''; // The RGB data - - // Pack the RGB data - foreach ($aref as $color) { - foreach ($color as $byte) { - $data .= pack("C", $byte); - } - } - - $header = pack("vvv", $record, $length, $ccv); - $this->append($header . $data); - } - - /** - * Handling of the SST continue blocks is complicated by the need to include an - * additional continuation byte depending on whether the string is split between - * blocks or whether it starts at the beginning of the block. (There are also - * additional complications that will arise later when/if Rich Strings are - * supported). - * - * The Excel documentation says that the SST record should be followed by an - * EXTSST record. The EXTSST record is a hash table that is used to optimise - * access to SST. However, despite the documentation it doesn't seem to be - * required so we will ignore it. - * - * @return string Binary data - */ - private function writeSharedStringsTable() - { - // maximum size of record data (excluding record header) - $continue_limit = 8224; - - // initialize array of record data blocks - $recordDatas = array(); - - // start SST record data block with total number of strings, total number of unique strings - $recordData = pack("VV", $this->stringTotal, $this->stringUnique); - - // loop through all (unique) strings in shared strings table - foreach (array_keys($this->stringTable) as $string) { - // here $string is a BIFF8 encoded string - - // length = character count - $headerinfo = unpack("vlength/Cencoding", $string); - - // currently, this is always 1 = uncompressed - $encoding = $headerinfo["encoding"]; - - // initialize finished writing current $string - $finished = false; - - while ($finished === false) { - // normally, there will be only one cycle, but if string cannot immediately be written as is - // there will be need for more than one cylcle, if string longer than one record data block, there - // may be need for even more cycles - - if (strlen($recordData) + strlen($string) <= $continue_limit) { - // then we can write the string (or remainder of string) without any problems - $recordData .= $string; - - if (strlen($recordData) + strlen($string) == $continue_limit) { - // we close the record data block, and initialize a new one - $recordDatas[] = $recordData; - $recordData = ''; - } - - // we are finished writing this string - $finished = true; - } else { - // special treatment writing the string (or remainder of the string) - // If the string is very long it may need to be written in more than one CONTINUE record. - - // check how many bytes more there is room for in the current record - $space_remaining = $continue_limit - strlen($recordData); - - // minimum space needed - // uncompressed: 2 byte string length length field + 1 byte option flags + 2 byte character - // compressed: 2 byte string length length field + 1 byte option flags + 1 byte character - $min_space_needed = ($encoding == 1) ? 5 : 4; - - // We have two cases - // 1. space remaining is less than minimum space needed - // here we must waste the space remaining and move to next record data block - // 2. space remaining is greater than or equal to minimum space needed - // here we write as much as we can in the current block, then move to next record data block - - // 1. space remaining is less than minimum space needed - if ($space_remaining < $min_space_needed) { - // we close the block, store the block data - $recordDatas[] = $recordData; - - // and start new record data block where we start writing the string - $recordData = ''; - - // 2. space remaining is greater than or equal to minimum space needed - } else { - // initialize effective remaining space, for Unicode strings this may need to be reduced by 1, see below - $effective_space_remaining = $space_remaining; - - // for uncompressed strings, sometimes effective space remaining is reduced by 1 - if ($encoding == 1 && (strlen($string) - $space_remaining) % 2 == 1) { - --$effective_space_remaining; - } - - // one block fininshed, store the block data - $recordData .= substr($string, 0, $effective_space_remaining); - - $string = substr($string, $effective_space_remaining); // for next cycle in while loop - $recordDatas[] = $recordData; - - // start new record data block with the repeated option flags - $recordData = pack('C', $encoding); - } - } - } - } - - // Store the last record data block unless it is empty - // if there was no need for any continue records, this will be the for SST record data block itself - if (strlen($recordData) > 0) { - $recordDatas[] = $recordData; - } - - // combine into one chunk with all the blocks SST, CONTINUE,... - $chunk = ''; - foreach ($recordDatas as $i => $recordData) { - // first block should have the SST record header, remaing should have CONTINUE header - $record = ($i == 0) ? 0x00FC : 0x003C; - - $header = pack("vv", $record, strlen($recordData)); - $data = $header . $recordData; - - $chunk .= $this->writeData($data); - } - - return $chunk; - } - - /** - * Writes the MSODRAWINGGROUP record if needed. Possibly split using CONTINUE records. - */ - private function writeMsoDrawingGroup() - { - // write the Escher stream if necessary - if (isset($this->escher)) { - $writer = new PHPExcel_Writer_Excel5_Escher($this->escher); - $data = $writer->close(); - - $record = 0x00EB; - $length = strlen($data); - $header = pack("vv", $record, $length); - - return $this->writeData($header . $data); - } else { - return ''; - } - } - - /** - * Get Escher object - * - * @return PHPExcel_Shared_Escher - */ - public function getEscher() - { - return $this->escher; - } - - /** - * Set Escher object - * - * @param PHPExcel_Shared_Escher $pValue - */ - public function setEscher(PHPExcel_Shared_Escher $pValue = null) - { - $this->escher = $pValue; - } -} diff --git a/application/third_party/PHPExcel/Writer/Excel5/Worksheet.php b/application/third_party/PHPExcel/Writer/Excel5/Worksheet.php deleted file mode 100644 index be965e23..00000000 --- a/application/third_party/PHPExcel/Writer/Excel5/Worksheet.php +++ /dev/null @@ -1,4240 +0,0 @@ -<?php - -/** - * PHPExcel_Writer_Excel5_Worksheet - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_Excel5 - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -// Original file header of PEAR::Spreadsheet_Excel_Writer_Worksheet (used as the base for this class): -// ----------------------------------------------------------------------------------------- -// /* -// * Module written/ported by Xavier Noguer <xnoguer@rezebra.com> -// * -// * The majority of this is _NOT_ my code. I simply ported it from the -// * PERL Spreadsheet::WriteExcel module. -// * -// * The author of the Spreadsheet::WriteExcel module is John McNamara -// * <jmcnamara@cpan.org> -// * -// * I _DO_ maintain this code, and John McNamara has nothing to do with the -// * porting of this code to PHP. Any questions directly related to this -// * class library should be directed to me. -// * -// * License Information: -// * -// * Spreadsheet_Excel_Writer: A library for generating Excel Spreadsheets -// * Copyright (c) 2002-2003 Xavier Noguer xnoguer@rezebra.com -// * -// * This library is free software; you can redistribute it and/or -// * modify it under the terms of the GNU Lesser General Public -// * License as published by the Free Software Foundation; either -// * version 2.1 of the License, or (at your option) any later version. -// * -// * This library is distributed in the hope that it will be useful, -// * but WITHOUT ANY WARRANTY; without even the implied warranty of -// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// * Lesser General Public License for more details. -// * -// * You should have received a copy of the GNU Lesser General Public -// * License along with this library; if not, write to the Free Software -// * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// */ -class PHPExcel_Writer_Excel5_Worksheet extends PHPExcel_Writer_Excel5_BIFFwriter -{ - /** - * Formula parser - * - * @var PHPExcel_Writer_Excel5_Parser - */ - private $parser; - - /** - * Maximum number of characters for a string (LABEL record in BIFF5) - * @var integer - */ - private $xlsStringMaxLength; - - /** - * Array containing format information for columns - * @var array - */ - private $columnInfo; - - /** - * Array containing the selected area for the worksheet - * @var array - */ - private $selection; - - /** - * The active pane for the worksheet - * @var integer - */ - private $activePane; - - /** - * Whether to use outline. - * @var integer - */ - private $outlineOn; - - /** - * Auto outline styles. - * @var bool - */ - private $outlineStyle; - - /** - * Whether to have outline summary below. - * @var bool - */ - private $outlineBelow; - - /** - * Whether to have outline summary at the right. - * @var bool - */ - private $outlineRight; - - /** - * Reference to the total number of strings in the workbook - * @var integer - */ - private $stringTotal; - - /** - * Reference to the number of unique strings in the workbook - * @var integer - */ - private $stringUnique; - - /** - * Reference to the array containing all the unique strings in the workbook - * @var array - */ - private $stringTable; - - /** - * Color cache - */ - private $colors; - - /** - * Index of first used row (at least 0) - * @var int - */ - private $firstRowIndex; - - /** - * Index of last used row. (no used rows means -1) - * @var int - */ - private $lastRowIndex; - - /** - * Index of first used column (at least 0) - * @var int - */ - private $firstColumnIndex; - - /** - * Index of last used column (no used columns means -1) - * @var int - */ - private $lastColumnIndex; - - /** - * Sheet object - * @var PHPExcel_Worksheet - */ - public $phpSheet; - - /** - * Count cell style Xfs - * - * @var int - */ - private $countCellStyleXfs; - - /** - * Escher object corresponding to MSODRAWING - * - * @var PHPExcel_Shared_Escher - */ - private $escher; - - /** - * Array of font hashes associated to FONT records index - * - * @var array - */ - public $fontHashIndex; - - /** - * Constructor - * - * @param int &$str_total Total number of strings - * @param int &$str_unique Total number of unique strings - * @param array &$str_table String Table - * @param array &$colors Colour Table - * @param mixed $parser The formula parser created for the Workbook - * @param boolean $preCalculateFormulas Flag indicating whether formulas should be calculated or just written - * @param string $phpSheet The worksheet to write - * @param PHPExcel_Worksheet $phpSheet - */ - public function __construct(&$str_total, &$str_unique, &$str_table, &$colors, $parser, $preCalculateFormulas, $phpSheet) - { - // It needs to call its parent's constructor explicitly - parent::__construct(); - - // change BIFFwriter limit for CONTINUE records -// $this->_limit = 8224; - - - $this->_preCalculateFormulas = $preCalculateFormulas; - $this->stringTotal = &$str_total; - $this->stringUnique = &$str_unique; - $this->stringTable = &$str_table; - $this->colors = &$colors; - $this->parser = $parser; - - $this->phpSheet = $phpSheet; - - //$this->ext_sheets = array(); - //$this->offset = 0; - $this->xlsStringMaxLength = 255; - $this->columnInfo = array(); - $this->selection = array(0,0,0,0); - $this->activePane = 3; - - $this->_print_headers = 0; - - $this->outlineStyle = 0; - $this->outlineBelow = 1; - $this->outlineRight = 1; - $this->outlineOn = 1; - - $this->fontHashIndex = array(); - - // calculate values for DIMENSIONS record - $minR = 1; - $minC = 'A'; - - $maxR = $this->phpSheet->getHighestRow(); - $maxC = $this->phpSheet->getHighestColumn(); - - // Determine lowest and highest column and row -// $this->firstRowIndex = ($minR > 65535) ? 65535 : $minR; - $this->lastRowIndex = ($maxR > 65535) ? 65535 : $maxR ; - - $this->firstColumnIndex = PHPExcel_Cell::columnIndexFromString($minC); - $this->lastColumnIndex = PHPExcel_Cell::columnIndexFromString($maxC); - -// if ($this->firstColumnIndex > 255) $this->firstColumnIndex = 255; - if ($this->lastColumnIndex > 255) { - $this->lastColumnIndex = 255; - } - - $this->countCellStyleXfs = count($phpSheet->getParent()->getCellStyleXfCollection()); - } - - /** - * Add data to the beginning of the workbook (note the reverse order) - * and to the end of the workbook. - * - * @access public - * @see PHPExcel_Writer_Excel5_Workbook::storeWorkbook() - */ - public function close() - { - $phpSheet = $this->phpSheet; - - $num_sheets = $phpSheet->getParent()->getSheetCount(); - - // Write BOF record - $this->storeBof(0x0010); - - // Write PRINTHEADERS - $this->writePrintHeaders(); - - // Write PRINTGRIDLINES - $this->writePrintGridlines(); - - // Write GRIDSET - $this->writeGridset(); - - // Calculate column widths - $phpSheet->calculateColumnWidths(); - - // Column dimensions - if (($defaultWidth = $phpSheet->getDefaultColumnDimension()->getWidth()) < 0) { - $defaultWidth = PHPExcel_Shared_Font::getDefaultColumnWidthByFont($phpSheet->getParent()->getDefaultStyle()->getFont()); - } - - $columnDimensions = $phpSheet->getColumnDimensions(); - $maxCol = $this->lastColumnIndex -1; - for ($i = 0; $i <= $maxCol; ++$i) { - $hidden = 0; - $level = 0; - $xfIndex = 15; // there are 15 cell style Xfs - - $width = $defaultWidth; - - $columnLetter = PHPExcel_Cell::stringFromColumnIndex($i); - if (isset($columnDimensions[$columnLetter])) { - $columnDimension = $columnDimensions[$columnLetter]; - if ($columnDimension->getWidth() >= 0) { - $width = $columnDimension->getWidth(); - } - $hidden = $columnDimension->getVisible() ? 0 : 1; - $level = $columnDimension->getOutlineLevel(); - $xfIndex = $columnDimension->getXfIndex() + 15; // there are 15 cell style Xfs - } - - // Components of columnInfo: - // $firstcol first column on the range - // $lastcol last column on the range - // $width width to set - // $xfIndex The optional cell style Xf index to apply to the columns - // $hidden The optional hidden atribute - // $level The optional outline level - $this->columnInfo[] = array($i, $i, $width, $xfIndex, $hidden, $level); - } - - // Write GUTS - $this->writeGuts(); - - // Write DEFAULTROWHEIGHT - $this->writeDefaultRowHeight(); - // Write WSBOOL - $this->writeWsbool(); - // Write horizontal and vertical page breaks - $this->writeBreaks(); - // Write page header - $this->writeHeader(); - // Write page footer - $this->writeFooter(); - // Write page horizontal centering - $this->writeHcenter(); - // Write page vertical centering - $this->writeVcenter(); - // Write left margin - $this->writeMarginLeft(); - // Write right margin - $this->writeMarginRight(); - // Write top margin - $this->writeMarginTop(); - // Write bottom margin - $this->writeMarginBottom(); - // Write page setup - $this->writeSetup(); - // Write sheet protection - $this->writeProtect(); - // Write SCENPROTECT - $this->writeScenProtect(); - // Write OBJECTPROTECT - $this->writeObjectProtect(); - // Write sheet password - $this->writePassword(); - // Write DEFCOLWIDTH record - $this->writeDefcol(); - - // Write the COLINFO records if they exist - if (!empty($this->columnInfo)) { - $colcount = count($this->columnInfo); - for ($i = 0; $i < $colcount; ++$i) { - $this->writeColinfo($this->columnInfo[$i]); - } - } - $autoFilterRange = $phpSheet->getAutoFilter()->getRange(); - if (!empty($autoFilterRange)) { - // Write AUTOFILTERINFO - $this->writeAutoFilterInfo(); - } - - // Write sheet dimensions - $this->writeDimensions(); - - // Row dimensions - foreach ($phpSheet->getRowDimensions() as $rowDimension) { - $xfIndex = $rowDimension->getXfIndex() + 15; // there are 15 cellXfs - $this->writeRow($rowDimension->getRowIndex() - 1, $rowDimension->getRowHeight(), $xfIndex, ($rowDimension->getVisible() ? '0' : '1'), $rowDimension->getOutlineLevel()); - } - - // Write Cells - foreach ($phpSheet->getCellCollection() as $cellID) { - $cell = $phpSheet->getCell($cellID); - $row = $cell->getRow() - 1; - $column = PHPExcel_Cell::columnIndexFromString($cell->getColumn()) - 1; - - // Don't break Excel! -// if ($row + 1 > 65536 or $column + 1 > 256) { - if ($row > 65535 || $column > 255) { - break; - } - - // Write cell value - $xfIndex = $cell->getXfIndex() + 15; // there are 15 cell style Xfs - - $cVal = $cell->getValue(); - if ($cVal instanceof PHPExcel_RichText) { - // $this->writeString($row, $column, $cVal->getPlainText(), $xfIndex); - $arrcRun = array(); - $str_len = PHPExcel_Shared_String::CountCharacters($cVal->getPlainText(), 'UTF-8'); - $str_pos = 0; - $elements = $cVal->getRichTextElements(); - foreach ($elements as $element) { - // FONT Index - if ($element instanceof PHPExcel_RichText_Run) { - $str_fontidx = $this->fontHashIndex[$element->getFont()->getHashCode()]; - } else { - $str_fontidx = 0; - } - $arrcRun[] = array('strlen' => $str_pos, 'fontidx' => $str_fontidx); - // Position FROM - $str_pos += PHPExcel_Shared_String::CountCharacters($element->getText(), 'UTF-8'); - } - $this->writeRichTextString($row, $column, $cVal->getPlainText(), $xfIndex, $arrcRun); - } else { - switch ($cell->getDatatype()) { - case PHPExcel_Cell_DataType::TYPE_STRING: - case PHPExcel_Cell_DataType::TYPE_NULL: - if ($cVal === '' || $cVal === null) { - $this->writeBlank($row, $column, $xfIndex); - } else { - $this->writeString($row, $column, $cVal, $xfIndex); - } - break; - - case PHPExcel_Cell_DataType::TYPE_NUMERIC: - $this->writeNumber($row, $column, $cVal, $xfIndex); - break; - - case PHPExcel_Cell_DataType::TYPE_FORMULA: - $calculatedValue = $this->_preCalculateFormulas ? - $cell->getCalculatedValue() : null; - $this->writeFormula($row, $column, $cVal, $xfIndex, $calculatedValue); - break; - - case PHPExcel_Cell_DataType::TYPE_BOOL: - $this->writeBoolErr($row, $column, $cVal, 0, $xfIndex); - break; - - case PHPExcel_Cell_DataType::TYPE_ERROR: - $this->writeBoolErr($row, $column, self::mapErrorCode($cVal), 1, $xfIndex); - break; - - } - } - } - - // Append - $this->writeMsoDrawing(); - - // Write WINDOW2 record - $this->writeWindow2(); - - // Write PLV record - $this->writePageLayoutView(); - - // Write ZOOM record - $this->writeZoom(); - if ($phpSheet->getFreezePane()) { - $this->writePanes(); - } - - // Write SELECTION record - $this->writeSelection(); - - // Write MergedCellsTable Record - $this->writeMergedCells(); - - // Hyperlinks - foreach ($phpSheet->getHyperLinkCollection() as $coordinate => $hyperlink) { - list($column, $row) = PHPExcel_Cell::coordinateFromString($coordinate); - - $url = $hyperlink->getUrl(); - - if (strpos($url, 'sheet://') !== false) { - // internal to current workbook - $url = str_replace('sheet://', 'internal:', $url); - - } elseif (preg_match('/^(http:|https:|ftp:|mailto:)/', $url)) { - // URL - // $url = $url; - - } else { - // external (local file) - $url = 'external:' . $url; - } - - $this->writeUrl($row - 1, PHPExcel_Cell::columnIndexFromString($column) - 1, $url); - } - - $this->writeDataValidity(); - $this->writeSheetLayout(); - - // Write SHEETPROTECTION record - $this->writeSheetProtection(); - $this->writeRangeProtection(); - - $arrConditionalStyles = $phpSheet->getConditionalStylesCollection(); - if (!empty($arrConditionalStyles)) { - $arrConditional = array(); - // @todo CFRule & CFHeader - // Write CFHEADER record - $this->writeCFHeader(); - // Write ConditionalFormattingTable records - foreach ($arrConditionalStyles as $cellCoordinate => $conditionalStyles) { - foreach ($conditionalStyles as $conditional) { - if ($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_EXPRESSION - || $conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CELLIS) { - if (!in_array($conditional->getHashCode(), $arrConditional)) { - $arrConditional[] = $conditional->getHashCode(); - // Write CFRULE record - $this->writeCFRule($conditional); - } - } - } - } - } - - $this->storeEof(); - } - - /** - * Write a cell range address in BIFF8 - * always fixed range - * See section 2.5.14 in OpenOffice.org's Documentation of the Microsoft Excel File Format - * - * @param string $range E.g. 'A1' or 'A1:B6' - * @return string Binary data - */ - private function writeBIFF8CellRangeAddressFixed($range = 'A1') - { - $explodes = explode(':', $range); - - // extract first cell, e.g. 'A1' - $firstCell = $explodes[0]; - - // extract last cell, e.g. 'B6' - if (count($explodes) == 1) { - $lastCell = $firstCell; - } else { - $lastCell = $explodes[1]; - } - - $firstCellCoordinates = PHPExcel_Cell::coordinateFromString($firstCell); // e.g. array(0, 1) - $lastCellCoordinates = PHPExcel_Cell::coordinateFromString($lastCell); // e.g. array(1, 6) - - return pack('vvvv', $firstCellCoordinates[1] - 1, $lastCellCoordinates[1] - 1, PHPExcel_Cell::columnIndexFromString($firstCellCoordinates[0]) - 1, PHPExcel_Cell::columnIndexFromString($lastCellCoordinates[0]) - 1); - } - - /** - * Retrieves data from memory in one chunk, or from disk in $buffer - * sized chunks. - * - * @return string The data - */ - public function getData() - { - $buffer = 4096; - - // Return data stored in memory - if (isset($this->_data)) { - $tmp = $this->_data; - unset($this->_data); - return $tmp; - } - // No data to return - return false; - } - - /** - * Set the option to print the row and column headers on the printed page. - * - * @access public - * @param integer $print Whether to print the headers or not. Defaults to 1 (print). - */ - public function printRowColHeaders($print = 1) - { - $this->_print_headers = $print; - } - - /** - * This method sets the properties for outlining and grouping. The defaults - * correspond to Excel's defaults. - * - * @param bool $visible - * @param bool $symbols_below - * @param bool $symbols_right - * @param bool $auto_style - */ - public function setOutline($visible = true, $symbols_below = true, $symbols_right = true, $auto_style = false) - { - $this->outlineOn = $visible; - $this->outlineBelow = $symbols_below; - $this->outlineRight = $symbols_right; - $this->outlineStyle = $auto_style; - - // Ensure this is a boolean vale for Window2 - if ($this->outlineOn) { - $this->outlineOn = 1; - } - } - - /** - * Write a double to the specified row and column (zero indexed). - * An integer can be written as a double. Excel will display an - * integer. $format is optional. - * - * Returns 0 : normal termination - * -2 : row or column out of range - * - * @param integer $row Zero indexed row - * @param integer $col Zero indexed column - * @param float $num The number to write - * @param mixed $xfIndex The optional XF format - * @return integer - */ - private function writeNumber($row, $col, $num, $xfIndex) - { - $record = 0x0203; // Record identifier - $length = 0x000E; // Number of bytes to follow - - $header = pack("vv", $record, $length); - $data = pack("vvv", $row, $col, $xfIndex); - $xl_double = pack("d", $num); - if (self::getByteOrder()) { // if it's Big Endian - $xl_double = strrev($xl_double); - } - - $this->append($header.$data.$xl_double); - return(0); - } - - /** - * Write a LABELSST record or a LABEL record. Which one depends on BIFF version - * - * @param int $row Row index (0-based) - * @param int $col Column index (0-based) - * @param string $str The string - * @param int $xfIndex Index to XF record - */ - private function writeString($row, $col, $str, $xfIndex) - { - $this->writeLabelSst($row, $col, $str, $xfIndex); - } - - /** - * Write a LABELSST record or a LABEL record. Which one depends on BIFF version - * It differs from writeString by the writing of rich text strings. - * @param int $row Row index (0-based) - * @param int $col Column index (0-based) - * @param string $str The string - * @param mixed $xfIndex The XF format index for the cell - * @param array $arrcRun Index to Font record and characters beginning - */ - private function writeRichTextString($row, $col, $str, $xfIndex, $arrcRun) - { - $record = 0x00FD; // Record identifier - $length = 0x000A; // Bytes to follow - $str = PHPExcel_Shared_String::UTF8toBIFF8UnicodeShort($str, $arrcRun); - - /* check if string is already present */ - if (!isset($this->stringTable[$str])) { - $this->stringTable[$str] = $this->stringUnique++; - } - $this->stringTotal++; - - $header = pack('vv', $record, $length); - $data = pack('vvvV', $row, $col, $xfIndex, $this->stringTable[$str]); - $this->append($header.$data); - } - - /** - * Write a string to the specified row and column (zero indexed). - * NOTE: there is an Excel 5 defined limit of 255 characters. - * $format is optional. - * Returns 0 : normal termination - * -2 : row or column out of range - * -3 : long string truncated to 255 chars - * - * @access public - * @param integer $row Zero indexed row - * @param integer $col Zero indexed column - * @param string $str The string to write - * @param mixed $xfIndex The XF format index for the cell - * @return integer - */ - private function writeLabel($row, $col, $str, $xfIndex) - { - $strlen = strlen($str); - $record = 0x0204; // Record identifier - $length = 0x0008 + $strlen; // Bytes to follow - - $str_error = 0; - - if ($strlen > $this->xlsStringMaxLength) { // LABEL must be < 255 chars - $str = substr($str, 0, $this->xlsStringMaxLength); - $length = 0x0008 + $this->xlsStringMaxLength; - $strlen = $this->xlsStringMaxLength; - $str_error = -3; - } - - $header = pack("vv", $record, $length); - $data = pack("vvvv", $row, $col, $xfIndex, $strlen); - $this->append($header . $data . $str); - return($str_error); - } - - /** - * Write a string to the specified row and column (zero indexed). - * This is the BIFF8 version (no 255 chars limit). - * $format is optional. - * Returns 0 : normal termination - * -2 : row or column out of range - * -3 : long string truncated to 255 chars - * - * @access public - * @param integer $row Zero indexed row - * @param integer $col Zero indexed column - * @param string $str The string to write - * @param mixed $xfIndex The XF format index for the cell - * @return integer - */ - private function writeLabelSst($row, $col, $str, $xfIndex) - { - $record = 0x00FD; // Record identifier - $length = 0x000A; // Bytes to follow - - $str = PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($str); - - /* check if string is already present */ - if (!isset($this->stringTable[$str])) { - $this->stringTable[$str] = $this->stringUnique++; - } - $this->stringTotal++; - - $header = pack('vv', $record, $length); - $data = pack('vvvV', $row, $col, $xfIndex, $this->stringTable[$str]); - $this->append($header.$data); - } - - /** - * Writes a note associated with the cell given by the row and column. - * NOTE records don't have a length limit. - * - * @param integer $row Zero indexed row - * @param integer $col Zero indexed column - * @param string $note The note to write - */ - private function writeNote($row, $col, $note) - { - $note_length = strlen($note); - $record = 0x001C; // Record identifier - $max_length = 2048; // Maximun length for a NOTE record - - // Length for this record is no more than 2048 + 6 - $length = 0x0006 + min($note_length, 2048); - $header = pack("vv", $record, $length); - $data = pack("vvv", $row, $col, $note_length); - $this->append($header . $data . substr($note, 0, 2048)); - - for ($i = $max_length; $i < $note_length; $i += $max_length) { - $chunk = substr($note, $i, $max_length); - $length = 0x0006 + strlen($chunk); - $header = pack("vv", $record, $length); - $data = pack("vvv", -1, 0, strlen($chunk)); - $this->append($header.$data.$chunk); - } - return(0); - } - - /** - * Write a blank cell to the specified row and column (zero indexed). - * A blank cell is used to specify formatting without adding a string - * or a number. - * - * A blank cell without a format serves no purpose. Therefore, we don't write - * a BLANK record unless a format is specified. - * - * Returns 0 : normal termination (including no format) - * -1 : insufficient number of arguments - * -2 : row or column out of range - * - * @param integer $row Zero indexed row - * @param integer $col Zero indexed column - * @param mixed $xfIndex The XF format index - */ - public function writeBlank($row, $col, $xfIndex) - { - $record = 0x0201; // Record identifier - $length = 0x0006; // Number of bytes to follow - - $header = pack("vv", $record, $length); - $data = pack("vvv", $row, $col, $xfIndex); - $this->append($header . $data); - return 0; - } - - /** - * Write a boolean or an error type to the specified row and column (zero indexed) - * - * @param int $row Row index (0-based) - * @param int $col Column index (0-based) - * @param int $value - * @param boolean $isError Error or Boolean? - * @param int $xfIndex - */ - private function writeBoolErr($row, $col, $value, $isError, $xfIndex) - { - $record = 0x0205; - $length = 8; - - $header = pack("vv", $record, $length); - $data = pack("vvvCC", $row, $col, $xfIndex, $value, $isError); - $this->append($header . $data); - return 0; - } - - /** - * Write a formula to the specified row and column (zero indexed). - * The textual representation of the formula is passed to the parser in - * Parser.php which returns a packed binary string. - * - * Returns 0 : normal termination - * -1 : formula errors (bad formula) - * -2 : row or column out of range - * - * @param integer $row Zero indexed row - * @param integer $col Zero indexed column - * @param string $formula The formula text string - * @param mixed $xfIndex The XF format index - * @param mixed $calculatedValue Calculated value - * @return integer - */ - private function writeFormula($row, $col, $formula, $xfIndex, $calculatedValue) - { - $record = 0x0006; // Record identifier - - // Initialize possible additional value for STRING record that should be written after the FORMULA record? - $stringValue = null; - - // calculated value - if (isset($calculatedValue)) { - // Since we can't yet get the data type of the calculated value, - // we use best effort to determine data type - if (is_bool($calculatedValue)) { - // Boolean value - $num = pack('CCCvCv', 0x01, 0x00, (int)$calculatedValue, 0x00, 0x00, 0xFFFF); - } elseif (is_int($calculatedValue) || is_float($calculatedValue)) { - // Numeric value - $num = pack('d', $calculatedValue); - } elseif (is_string($calculatedValue)) { - if (array_key_exists($calculatedValue, PHPExcel_Cell_DataType::getErrorCodes())) { - // Error value - $num = pack('CCCvCv', 0x02, 0x00, self::mapErrorCode($calculatedValue), 0x00, 0x00, 0xFFFF); - } elseif ($calculatedValue === '') { - // Empty string (and BIFF8) - $num = pack('CCCvCv', 0x03, 0x00, 0x00, 0x00, 0x00, 0xFFFF); - } else { - // Non-empty string value (or empty string BIFF5) - $stringValue = $calculatedValue; - $num = pack('CCCvCv', 0x00, 0x00, 0x00, 0x00, 0x00, 0xFFFF); - } - } else { - // We are really not supposed to reach here - $num = pack('d', 0x00); - } - } else { - $num = pack('d', 0x00); - } - - $grbit = 0x03; // Option flags - $unknown = 0x0000; // Must be zero - - // Strip the '=' or '@' sign at the beginning of the formula string - if ($formula{0} == '=') { - $formula = substr($formula, 1); - } else { - // Error handling - $this->writeString($row, $col, 'Unrecognised character for formula'); - return -1; - } - - // Parse the formula using the parser in Parser.php - try { - $error = $this->parser->parse($formula); - $formula = $this->parser->toReversePolish(); - - $formlen = strlen($formula); // Length of the binary string - $length = 0x16 + $formlen; // Length of the record data - - $header = pack("vv", $record, $length); - - $data = pack("vvv", $row, $col, $xfIndex) - . $num - . pack("vVv", $grbit, $unknown, $formlen); - $this->append($header . $data . $formula); - - // Append also a STRING record if necessary - if ($stringValue !== null) { - $this->writeStringRecord($stringValue); - } - - return 0; - - } catch (PHPExcel_Exception $e) { - // do nothing - } - - } - - /** - * Write a STRING record. This - * - * @param string $stringValue - */ - private function writeStringRecord($stringValue) - { - $record = 0x0207; // Record identifier - $data = PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($stringValue); - - $length = strlen($data); - $header = pack('vv', $record, $length); - - $this->append($header . $data); - } - - /** - * Write a hyperlink. - * This is comprised of two elements: the visible label and - * the invisible link. The visible label is the same as the link unless an - * alternative string is specified. The label is written using the - * writeString() method. Therefore the 255 characters string limit applies. - * $string and $format are optional. - * - * The hyperlink can be to a http, ftp, mail, internal sheet (not yet), or external - * directory url. - * - * Returns 0 : normal termination - * -2 : row or column out of range - * -3 : long string truncated to 255 chars - * - * @param integer $row Row - * @param integer $col Column - * @param string $url URL string - * @return integer - */ - private function writeUrl($row, $col, $url) - { - // Add start row and col to arg list - return($this->writeUrlRange($row, $col, $row, $col, $url)); - } - - /** - * This is the more general form of writeUrl(). It allows a hyperlink to be - * written to a range of cells. This function also decides the type of hyperlink - * to be written. These are either, Web (http, ftp, mailto), Internal - * (Sheet1!A1) or external ('c:\temp\foo.xls#Sheet1!A1'). - * - * @access private - * @see writeUrl() - * @param integer $row1 Start row - * @param integer $col1 Start column - * @param integer $row2 End row - * @param integer $col2 End column - * @param string $url URL string - * @return integer - */ - public function writeUrlRange($row1, $col1, $row2, $col2, $url) - { - // Check for internal/external sheet links or default to web link - if (preg_match('[^internal:]', $url)) { - return($this->writeUrlInternal($row1, $col1, $row2, $col2, $url)); - } - if (preg_match('[^external:]', $url)) { - return($this->writeUrlExternal($row1, $col1, $row2, $col2, $url)); - } - return($this->writeUrlWeb($row1, $col1, $row2, $col2, $url)); - } - - /** - * Used to write http, ftp and mailto hyperlinks. - * The link type ($options) is 0x03 is the same as absolute dir ref without - * sheet. However it is differentiated by the $unknown2 data stream. - * - * @access private - * @see writeUrl() - * @param integer $row1 Start row - * @param integer $col1 Start column - * @param integer $row2 End row - * @param integer $col2 End column - * @param string $url URL string - * @return integer - */ - public function writeUrlWeb($row1, $col1, $row2, $col2, $url) - { - $record = 0x01B8; // Record identifier - $length = 0x00000; // Bytes to follow - - // Pack the undocumented parts of the hyperlink stream - $unknown1 = pack("H*", "D0C9EA79F9BACE118C8200AA004BA90B02000000"); - $unknown2 = pack("H*", "E0C9EA79F9BACE118C8200AA004BA90B"); - - // Pack the option flags - $options = pack("V", 0x03); - - // Convert URL to a null terminated wchar string - $url = join("\0", preg_split("''", $url, -1, PREG_SPLIT_NO_EMPTY)); - $url = $url . "\0\0\0"; - - // Pack the length of the URL - $url_len = pack("V", strlen($url)); - - // Calculate the data length - $length = 0x34 + strlen($url); - - // Pack the header data - $header = pack("vv", $record, $length); - $data = pack("vvvv", $row1, $row2, $col1, $col2); - - // Write the packed data - $this->append($header . $data . - $unknown1 . $options . - $unknown2 . $url_len . $url); - return 0; - } - - /** - * Used to write internal reference hyperlinks such as "Sheet1!A1". - * - * @access private - * @see writeUrl() - * @param integer $row1 Start row - * @param integer $col1 Start column - * @param integer $row2 End row - * @param integer $col2 End column - * @param string $url URL string - * @return integer - */ - public function writeUrlInternal($row1, $col1, $row2, $col2, $url) - { - $record = 0x01B8; // Record identifier - $length = 0x00000; // Bytes to follow - - // Strip URL type - $url = preg_replace('/^internal:/', '', $url); - - // Pack the undocumented parts of the hyperlink stream - $unknown1 = pack("H*", "D0C9EA79F9BACE118C8200AA004BA90B02000000"); - - // Pack the option flags - $options = pack("V", 0x08); - - // Convert the URL type and to a null terminated wchar string - $url .= "\0"; - - // character count - $url_len = PHPExcel_Shared_String::CountCharacters($url); - $url_len = pack('V', $url_len); - - $url = PHPExcel_Shared_String::ConvertEncoding($url, 'UTF-16LE', 'UTF-8'); - - // Calculate the data length - $length = 0x24 + strlen($url); - - // Pack the header data - $header = pack("vv", $record, $length); - $data = pack("vvvv", $row1, $row2, $col1, $col2); - - // Write the packed data - $this->append($header . $data . - $unknown1 . $options . - $url_len . $url); - return 0; - } - - /** - * Write links to external directory names such as 'c:\foo.xls', - * c:\foo.xls#Sheet1!A1', '../../foo.xls'. and '../../foo.xls#Sheet1!A1'. - * - * Note: Excel writes some relative links with the $dir_long string. We ignore - * these cases for the sake of simpler code. - * - * @access private - * @see writeUrl() - * @param integer $row1 Start row - * @param integer $col1 Start column - * @param integer $row2 End row - * @param integer $col2 End column - * @param string $url URL string - * @return integer - */ - public function writeUrlExternal($row1, $col1, $row2, $col2, $url) - { - // Network drives are different. We will handle them separately - // MS/Novell network drives and shares start with \\ - if (preg_match('[^external:\\\\]', $url)) { - return; //($this->writeUrlExternal_net($row1, $col1, $row2, $col2, $url, $str, $format)); - } - - $record = 0x01B8; // Record identifier - $length = 0x00000; // Bytes to follow - - // Strip URL type and change Unix dir separator to Dos style (if needed) - // - $url = preg_replace('/^external:/', '', $url); - $url = preg_replace('/\//', "\\", $url); - - // Determine if the link is relative or absolute: - // relative if link contains no dir separator, "somefile.xls" - // relative if link starts with up-dir, "..\..\somefile.xls" - // otherwise, absolute - - $absolute = 0x00; // relative path - if (preg_match('/^[A-Z]:/', $url)) { - $absolute = 0x02; // absolute path on Windows, e.g. C:\... - } - $link_type = 0x01 | $absolute; - - // Determine if the link contains a sheet reference and change some of the - // parameters accordingly. - // Split the dir name and sheet name (if it exists) - $dir_long = $url; - if (preg_match("/\#/", $url)) { - $link_type |= 0x08; - } - - - // Pack the link type - $link_type = pack("V", $link_type); - - // Calculate the up-level dir count e.g.. (..\..\..\ == 3) - $up_count = preg_match_all("/\.\.\\\/", $dir_long, $useless); - $up_count = pack("v", $up_count); - - // Store the short dos dir name (null terminated) - $dir_short = preg_replace("/\.\.\\\/", '', $dir_long) . "\0"; - - // Store the long dir name as a wchar string (non-null terminated) - $dir_long = $dir_long . "\0"; - - // Pack the lengths of the dir strings - $dir_short_len = pack("V", strlen($dir_short)); - $dir_long_len = pack("V", strlen($dir_long)); - $stream_len = pack("V", 0); //strlen($dir_long) + 0x06); - - // Pack the undocumented parts of the hyperlink stream - $unknown1 = pack("H*", 'D0C9EA79F9BACE118C8200AA004BA90B02000000'); - $unknown2 = pack("H*", '0303000000000000C000000000000046'); - $unknown3 = pack("H*", 'FFFFADDE000000000000000000000000000000000000000'); - $unknown4 = pack("v", 0x03); - - // Pack the main data stream - $data = pack("vvvv", $row1, $row2, $col1, $col2) . - $unknown1 . - $link_type . - $unknown2 . - $up_count . - $dir_short_len. - $dir_short . - $unknown3 . - $stream_len ;/*. - $dir_long_len . - $unknown4 . - $dir_long . - $sheet_len . - $sheet ;*/ - - // Pack the header data - $length = strlen($data); - $header = pack("vv", $record, $length); - - // Write the packed data - $this->append($header. $data); - return 0; - } - - /** - * This method is used to set the height and format for a row. - * - * @param integer $row The row to set - * @param integer $height Height we are giving to the row. - * Use null to set XF without setting height - * @param integer $xfIndex The optional cell style Xf index to apply to the columns - * @param bool $hidden The optional hidden attribute - * @param integer $level The optional outline level for row, in range [0,7] - */ - private function writeRow($row, $height, $xfIndex, $hidden = false, $level = 0) - { - $record = 0x0208; // Record identifier - $length = 0x0010; // Number of bytes to follow - - $colMic = 0x0000; // First defined column - $colMac = 0x0000; // Last defined column - $irwMac = 0x0000; // Used by Excel to optimise loading - $reserved = 0x0000; // Reserved - $grbit = 0x0000; // Option flags - $ixfe = $xfIndex; - - if ($height < 0) { - $height = null; - } - - // Use writeRow($row, null, $XF) to set XF format without setting height - if ($height != null) { - $miyRw = $height * 20; // row height - } else { - $miyRw = 0xff; // default row height is 256 - } - - // Set the options flags. fUnsynced is used to show that the font and row - // heights are not compatible. This is usually the case for WriteExcel. - // The collapsed flag 0x10 doesn't seem to be used to indicate that a row - // is collapsed. Instead it is used to indicate that the previous row is - // collapsed. The zero height flag, 0x20, is used to collapse a row. - - $grbit |= $level; - if ($hidden) { - $grbit |= 0x0030; - } - if ($height !== null) { - $grbit |= 0x0040; // fUnsynced - } - if ($xfIndex !== 0xF) { - $grbit |= 0x0080; - } - $grbit |= 0x0100; - - $header = pack("vv", $record, $length); - $data = pack("vvvvvvvv", $row, $colMic, $colMac, $miyRw, $irwMac, $reserved, $grbit, $ixfe); - $this->append($header.$data); - } - - /** - * Writes Excel DIMENSIONS to define the area in which there is data. - */ - private function writeDimensions() - { - $record = 0x0200; // Record identifier - - $length = 0x000E; - $data = pack('VVvvv', $this->firstRowIndex, $this->lastRowIndex + 1, $this->firstColumnIndex, $this->lastColumnIndex + 1, 0x0000); // reserved - - $header = pack("vv", $record, $length); - $this->append($header.$data); - } - - /** - * Write BIFF record Window2. - */ - private function writeWindow2() - { - $record = 0x023E; // Record identifier - $length = 0x0012; - - $grbit = 0x00B6; // Option flags - $rwTop = 0x0000; // Top row visible in window - $colLeft = 0x0000; // Leftmost column visible in window - - - // The options flags that comprise $grbit - $fDspFmla = 0; // 0 - bit - $fDspGrid = $this->phpSheet->getShowGridlines() ? 1 : 0; // 1 - $fDspRwCol = $this->phpSheet->getShowRowColHeaders() ? 1 : 0; // 2 - $fFrozen = $this->phpSheet->getFreezePane() ? 1 : 0; // 3 - $fDspZeros = 1; // 4 - $fDefaultHdr = 1; // 5 - $fArabic = $this->phpSheet->getRightToLeft() ? 1 : 0; // 6 - $fDspGuts = $this->outlineOn; // 7 - $fFrozenNoSplit = 0; // 0 - bit - // no support in PHPExcel for selected sheet, therefore sheet is only selected if it is the active sheet - $fSelected = ($this->phpSheet === $this->phpSheet->getParent()->getActiveSheet()) ? 1 : 0; - $fPaged = 1; // 2 - $fPageBreakPreview = $this->phpSheet->getSheetView()->getView() === PHPExcel_Worksheet_SheetView::SHEETVIEW_PAGE_BREAK_PREVIEW; - - $grbit = $fDspFmla; - $grbit |= $fDspGrid << 1; - $grbit |= $fDspRwCol << 2; - $grbit |= $fFrozen << 3; - $grbit |= $fDspZeros << 4; - $grbit |= $fDefaultHdr << 5; - $grbit |= $fArabic << 6; - $grbit |= $fDspGuts << 7; - $grbit |= $fFrozenNoSplit << 8; - $grbit |= $fSelected << 9; - $grbit |= $fPaged << 10; - $grbit |= $fPageBreakPreview << 11; - - $header = pack("vv", $record, $length); - $data = pack("vvv", $grbit, $rwTop, $colLeft); - - // FIXME !!! - $rgbHdr = 0x0040; // Row/column heading and gridline color index - $zoom_factor_page_break = ($fPageBreakPreview ? $this->phpSheet->getSheetView()->getZoomScale() : 0x0000); - $zoom_factor_normal = $this->phpSheet->getSheetView()->getZoomScaleNormal(); - - $data .= pack("vvvvV", $rgbHdr, 0x0000, $zoom_factor_page_break, $zoom_factor_normal, 0x00000000); - - $this->append($header.$data); - } - - /** - * Write BIFF record DEFAULTROWHEIGHT. - */ - private function writeDefaultRowHeight() - { - $defaultRowHeight = $this->phpSheet->getDefaultRowDimension()->getRowHeight(); - - if ($defaultRowHeight < 0) { - return; - } - - // convert to twips - $defaultRowHeight = (int) 20 * $defaultRowHeight; - - $record = 0x0225; // Record identifier - $length = 0x0004; // Number of bytes to follow - - $header = pack("vv", $record, $length); - $data = pack("vv", 1, $defaultRowHeight); - $this->append($header . $data); - } - - /** - * Write BIFF record DEFCOLWIDTH if COLINFO records are in use. - */ - private function writeDefcol() - { - $defaultColWidth = 8; - - $record = 0x0055; // Record identifier - $length = 0x0002; // Number of bytes to follow - - $header = pack("vv", $record, $length); - $data = pack("v", $defaultColWidth); - $this->append($header . $data); - } - - /** - * Write BIFF record COLINFO to define column widths - * - * Note: The SDK says the record length is 0x0B but Excel writes a 0x0C - * length record. - * - * @param array $col_array This is the only parameter received and is composed of the following: - * 0 => First formatted column, - * 1 => Last formatted column, - * 2 => Col width (8.43 is Excel default), - * 3 => The optional XF format of the column, - * 4 => Option flags. - * 5 => Optional outline level - */ - private function writeColinfo($col_array) - { - if (isset($col_array[0])) { - $colFirst = $col_array[0]; - } - if (isset($col_array[1])) { - $colLast = $col_array[1]; - } - if (isset($col_array[2])) { - $coldx = $col_array[2]; - } else { - $coldx = 8.43; - } - if (isset($col_array[3])) { - $xfIndex = $col_array[3]; - } else { - $xfIndex = 15; - } - if (isset($col_array[4])) { - $grbit = $col_array[4]; - } else { - $grbit = 0; - } - if (isset($col_array[5])) { - $level = $col_array[5]; - } else { - $level = 0; - } - $record = 0x007D; // Record identifier - $length = 0x000C; // Number of bytes to follow - - $coldx *= 256; // Convert to units of 1/256 of a char - - $ixfe = $xfIndex; - $reserved = 0x0000; // Reserved - - $level = max(0, min($level, 7)); - $grbit |= $level << 8; - - $header = pack("vv", $record, $length); - $data = pack("vvvvvv", $colFirst, $colLast, $coldx, $ixfe, $grbit, $reserved); - $this->append($header.$data); - } - - /** - * Write BIFF record SELECTION. - */ - private function writeSelection() - { - // look up the selected cell range - $selectedCells = $this->phpSheet->getSelectedCells(); - $selectedCells = PHPExcel_Cell::splitRange($this->phpSheet->getSelectedCells()); - $selectedCells = $selectedCells[0]; - if (count($selectedCells) == 2) { - list($first, $last) = $selectedCells; - } else { - $first = $selectedCells[0]; - $last = $selectedCells[0]; - } - - list($colFirst, $rwFirst) = PHPExcel_Cell::coordinateFromString($first); - $colFirst = PHPExcel_Cell::columnIndexFromString($colFirst) - 1; // base 0 column index - --$rwFirst; // base 0 row index - - list($colLast, $rwLast) = PHPExcel_Cell::coordinateFromString($last); - $colLast = PHPExcel_Cell::columnIndexFromString($colLast) - 1; // base 0 column index - --$rwLast; // base 0 row index - - // make sure we are not out of bounds - $colFirst = min($colFirst, 255); - $colLast = min($colLast, 255); - - $rwFirst = min($rwFirst, 65535); - $rwLast = min($rwLast, 65535); - - $record = 0x001D; // Record identifier - $length = 0x000F; // Number of bytes to follow - - $pnn = $this->activePane; // Pane position - $rwAct = $rwFirst; // Active row - $colAct = $colFirst; // Active column - $irefAct = 0; // Active cell ref - $cref = 1; // Number of refs - - if (!isset($rwLast)) { - $rwLast = $rwFirst; // Last row in reference - } - if (!isset($colLast)) { - $colLast = $colFirst; // Last col in reference - } - - // Swap last row/col for first row/col as necessary - if ($rwFirst > $rwLast) { - list($rwFirst, $rwLast) = array($rwLast, $rwFirst); - } - - if ($colFirst > $colLast) { - list($colFirst, $colLast) = array($colLast, $colFirst); - } - - $header = pack("vv", $record, $length); - $data = pack("CvvvvvvCC", $pnn, $rwAct, $colAct, $irefAct, $cref, $rwFirst, $rwLast, $colFirst, $colLast); - $this->append($header . $data); - } - - /** - * Store the MERGEDCELLS records for all ranges of merged cells - */ - private function writeMergedCells() - { - $mergeCells = $this->phpSheet->getMergeCells(); - $countMergeCells = count($mergeCells); - - if ($countMergeCells == 0) { - return; - } - - // maximum allowed number of merged cells per record - $maxCountMergeCellsPerRecord = 1027; - - // record identifier - $record = 0x00E5; - - // counter for total number of merged cells treated so far by the writer - $i = 0; - - // counter for number of merged cells written in record currently being written - $j = 0; - - // initialize record data - $recordData = ''; - - // loop through the merged cells - foreach ($mergeCells as $mergeCell) { - ++$i; - ++$j; - - // extract the row and column indexes - $range = PHPExcel_Cell::splitRange($mergeCell); - list($first, $last) = $range[0]; - list($firstColumn, $firstRow) = PHPExcel_Cell::coordinateFromString($first); - list($lastColumn, $lastRow) = PHPExcel_Cell::coordinateFromString($last); - - $recordData .= pack('vvvv', $firstRow - 1, $lastRow - 1, PHPExcel_Cell::columnIndexFromString($firstColumn) - 1, PHPExcel_Cell::columnIndexFromString($lastColumn) - 1); - - // flush record if we have reached limit for number of merged cells, or reached final merged cell - if ($j == $maxCountMergeCellsPerRecord or $i == $countMergeCells) { - $recordData = pack('v', $j) . $recordData; - $length = strlen($recordData); - $header = pack('vv', $record, $length); - $this->append($header . $recordData); - - // initialize for next record, if any - $recordData = ''; - $j = 0; - } - } - } - - /** - * Write SHEETLAYOUT record - */ - private function writeSheetLayout() - { - if (!$this->phpSheet->isTabColorSet()) { - return; - } - - $recordData = pack( - 'vvVVVvv', - 0x0862, - 0x0000, // unused - 0x00000000, // unused - 0x00000000, // unused - 0x00000014, // size of record data - $this->colors[$this->phpSheet->getTabColor()->getRGB()], // color index - 0x0000 // unused - ); - - $length = strlen($recordData); - - $record = 0x0862; // Record identifier - $header = pack('vv', $record, $length); - $this->append($header . $recordData); - } - - /** - * Write SHEETPROTECTION - */ - private function writeSheetProtection() - { - // record identifier - $record = 0x0867; - - // prepare options - $options = (int) !$this->phpSheet->getProtection()->getObjects() - | (int) !$this->phpSheet->getProtection()->getScenarios() << 1 - | (int) !$this->phpSheet->getProtection()->getFormatCells() << 2 - | (int) !$this->phpSheet->getProtection()->getFormatColumns() << 3 - | (int) !$this->phpSheet->getProtection()->getFormatRows() << 4 - | (int) !$this->phpSheet->getProtection()->getInsertColumns() << 5 - | (int) !$this->phpSheet->getProtection()->getInsertRows() << 6 - | (int) !$this->phpSheet->getProtection()->getInsertHyperlinks() << 7 - | (int) !$this->phpSheet->getProtection()->getDeleteColumns() << 8 - | (int) !$this->phpSheet->getProtection()->getDeleteRows() << 9 - | (int) !$this->phpSheet->getProtection()->getSelectLockedCells() << 10 - | (int) !$this->phpSheet->getProtection()->getSort() << 11 - | (int) !$this->phpSheet->getProtection()->getAutoFilter() << 12 - | (int) !$this->phpSheet->getProtection()->getPivotTables() << 13 - | (int) !$this->phpSheet->getProtection()->getSelectUnlockedCells() << 14 ; - - // record data - $recordData = pack( - 'vVVCVVvv', - 0x0867, // repeated record identifier - 0x0000, // not used - 0x0000, // not used - 0x00, // not used - 0x01000200, // unknown data - 0xFFFFFFFF, // unknown data - $options, // options - 0x0000 // not used - ); - - $length = strlen($recordData); - $header = pack('vv', $record, $length); - - $this->append($header . $recordData); - } - - /** - * Write BIFF record RANGEPROTECTION - * - * Openoffice.org's Documentaion of the Microsoft Excel File Format uses term RANGEPROTECTION for these records - * Microsoft Office Excel 97-2007 Binary File Format Specification uses term FEAT for these records - */ - private function writeRangeProtection() - { - foreach ($this->phpSheet->getProtectedCells() as $range => $password) { - // number of ranges, e.g. 'A1:B3 C20:D25' - $cellRanges = explode(' ', $range); - $cref = count($cellRanges); - - $recordData = pack( - 'vvVVvCVvVv', - 0x0868, - 0x00, - 0x0000, - 0x0000, - 0x02, - 0x0, - 0x0000, - $cref, - 0x0000, - 0x00 - ); - - foreach ($cellRanges as $cellRange) { - $recordData .= $this->writeBIFF8CellRangeAddressFixed($cellRange); - } - - // the rgbFeat structure - $recordData .= pack( - 'VV', - 0x0000, - hexdec($password) - ); - - $recordData .= PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong('p' . md5($recordData)); - - $length = strlen($recordData); - - $record = 0x0868; // Record identifier - $header = pack("vv", $record, $length); - $this->append($header . $recordData); - } - } - - /** - * Write BIFF record EXTERNCOUNT to indicate the number of external sheet - * references in a worksheet. - * - * Excel only stores references to external sheets that are used in formulas. - * For simplicity we store references to all the sheets in the workbook - * regardless of whether they are used or not. This reduces the overall - * complexity and eliminates the need for a two way dialogue between the formula - * parser the worksheet objects. - * - * @param integer $count The number of external sheet references in this worksheet - */ - private function writeExterncount($count) - { - $record = 0x0016; // Record identifier - $length = 0x0002; // Number of bytes to follow - - $header = pack("vv", $record, $length); - $data = pack("v", $count); - $this->append($header . $data); - } - - /** - * Writes the Excel BIFF EXTERNSHEET record. These references are used by - * formulas. A formula references a sheet name via an index. Since we store a - * reference to all of the external worksheets the EXTERNSHEET index is the same - * as the worksheet index. - * - * @param string $sheetname The name of a external worksheet - */ - private function writeExternsheet($sheetname) - { - $record = 0x0017; // Record identifier - - // References to the current sheet are encoded differently to references to - // external sheets. - // - if ($this->phpSheet->getTitle() == $sheetname) { - $sheetname = ''; - $length = 0x02; // The following 2 bytes - $cch = 1; // The following byte - $rgch = 0x02; // Self reference - } else { - $length = 0x02 + strlen($sheetname); - $cch = strlen($sheetname); - $rgch = 0x03; // Reference to a sheet in the current workbook - } - - $header = pack("vv", $record, $length); - $data = pack("CC", $cch, $rgch); - $this->append($header . $data . $sheetname); - } - - /** - * Writes the Excel BIFF PANE record. - * The panes can either be frozen or thawed (unfrozen). - * Frozen panes are specified in terms of an integer number of rows and columns. - * Thawed panes are specified in terms of Excel's units for rows and columns. - */ - private function writePanes() - { - $panes = array(); - if ($freezePane = $this->phpSheet->getFreezePane()) { - list($column, $row) = PHPExcel_Cell::coordinateFromString($freezePane); - $panes[0] = $row - 1; - $panes[1] = PHPExcel_Cell::columnIndexFromString($column) - 1; - } else { - // thaw panes - return; - } - - $y = isset($panes[0]) ? $panes[0] : null; - $x = isset($panes[1]) ? $panes[1] : null; - $rwTop = isset($panes[2]) ? $panes[2] : null; - $colLeft = isset($panes[3]) ? $panes[3] : null; - if (count($panes) > 4) { // if Active pane was received - $pnnAct = $panes[4]; - } else { - $pnnAct = null; - } - $record = 0x0041; // Record identifier - $length = 0x000A; // Number of bytes to follow - - // Code specific to frozen or thawed panes. - if ($this->phpSheet->getFreezePane()) { - // Set default values for $rwTop and $colLeft - if (!isset($rwTop)) { - $rwTop = $y; - } - if (!isset($colLeft)) { - $colLeft = $x; - } - } else { - // Set default values for $rwTop and $colLeft - if (!isset($rwTop)) { - $rwTop = 0; - } - if (!isset($colLeft)) { - $colLeft = 0; - } - - // Convert Excel's row and column units to the internal units. - // The default row height is 12.75 - // The default column width is 8.43 - // The following slope and intersection values were interpolated. - // - $y = 20*$y + 255; - $x = 113.879*$x + 390; - } - - - // Determine which pane should be active. There is also the undocumented - // option to override this should it be necessary: may be removed later. - // - if (!isset($pnnAct)) { - if ($x != 0 && $y != 0) { - $pnnAct = 0; // Bottom right - } - if ($x != 0 && $y == 0) { - $pnnAct = 1; // Top right - } - if ($x == 0 && $y != 0) { - $pnnAct = 2; // Bottom left - } - if ($x == 0 && $y == 0) { - $pnnAct = 3; // Top left - } - } - - $this->activePane = $pnnAct; // Used in writeSelection - - $header = pack("vv", $record, $length); - $data = pack("vvvvv", $x, $y, $rwTop, $colLeft, $pnnAct); - $this->append($header . $data); - } - - /** - * Store the page setup SETUP BIFF record. - */ - private function writeSetup() - { - $record = 0x00A1; // Record identifier - $length = 0x0022; // Number of bytes to follow - - $iPaperSize = $this->phpSheet->getPageSetup()->getPaperSize(); // Paper size - - $iScale = $this->phpSheet->getPageSetup()->getScale() ? - $this->phpSheet->getPageSetup()->getScale() : 100; // Print scaling factor - - $iPageStart = 0x01; // Starting page number - $iFitWidth = (int) $this->phpSheet->getPageSetup()->getFitToWidth(); // Fit to number of pages wide - $iFitHeight = (int) $this->phpSheet->getPageSetup()->getFitToHeight(); // Fit to number of pages high - $grbit = 0x00; // Option flags - $iRes = 0x0258; // Print resolution - $iVRes = 0x0258; // Vertical print resolution - - $numHdr = $this->phpSheet->getPageMargins()->getHeader(); // Header Margin - - $numFtr = $this->phpSheet->getPageMargins()->getFooter(); // Footer Margin - $iCopies = 0x01; // Number of copies - - $fLeftToRight = 0x0; // Print over then down - - // Page orientation - $fLandscape = ($this->phpSheet->getPageSetup()->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE) ? - 0x0 : 0x1; - - $fNoPls = 0x0; // Setup not read from printer - $fNoColor = 0x0; // Print black and white - $fDraft = 0x0; // Print draft quality - $fNotes = 0x0; // Print notes - $fNoOrient = 0x0; // Orientation not set - $fUsePage = 0x0; // Use custom starting page - - $grbit = $fLeftToRight; - $grbit |= $fLandscape << 1; - $grbit |= $fNoPls << 2; - $grbit |= $fNoColor << 3; - $grbit |= $fDraft << 4; - $grbit |= $fNotes << 5; - $grbit |= $fNoOrient << 6; - $grbit |= $fUsePage << 7; - - $numHdr = pack("d", $numHdr); - $numFtr = pack("d", $numFtr); - if (self::getByteOrder()) { // if it's Big Endian - $numHdr = strrev($numHdr); - $numFtr = strrev($numFtr); - } - - $header = pack("vv", $record, $length); - $data1 = pack("vvvvvvvv", $iPaperSize, $iScale, $iPageStart, $iFitWidth, $iFitHeight, $grbit, $iRes, $iVRes); - $data2 = $numHdr.$numFtr; - $data3 = pack("v", $iCopies); - $this->append($header . $data1 . $data2 . $data3); - } - - /** - * Store the header caption BIFF record. - */ - private function writeHeader() - { - $record = 0x0014; // Record identifier - - /* removing for now - // need to fix character count (multibyte!) - if (strlen($this->phpSheet->getHeaderFooter()->getOddHeader()) <= 255) { - $str = $this->phpSheet->getHeaderFooter()->getOddHeader(); // header string - } else { - $str = ''; - } - */ - - $recordData = PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($this->phpSheet->getHeaderFooter()->getOddHeader()); - $length = strlen($recordData); - - $header = pack("vv", $record, $length); - - $this->append($header . $recordData); - } - - /** - * Store the footer caption BIFF record. - */ - private function writeFooter() - { - $record = 0x0015; // Record identifier - - /* removing for now - // need to fix character count (multibyte!) - if (strlen($this->phpSheet->getHeaderFooter()->getOddFooter()) <= 255) { - $str = $this->phpSheet->getHeaderFooter()->getOddFooter(); - } else { - $str = ''; - } - */ - - $recordData = PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($this->phpSheet->getHeaderFooter()->getOddFooter()); - $length = strlen($recordData); - - $header = pack("vv", $record, $length); - - $this->append($header . $recordData); - } - - /** - * Store the horizontal centering HCENTER BIFF record. - * - * @access private - */ - private function writeHcenter() - { - $record = 0x0083; // Record identifier - $length = 0x0002; // Bytes to follow - - $fHCenter = $this->phpSheet->getPageSetup()->getHorizontalCentered() ? 1 : 0; // Horizontal centering - - $header = pack("vv", $record, $length); - $data = pack("v", $fHCenter); - - $this->append($header.$data); - } - - /** - * Store the vertical centering VCENTER BIFF record. - */ - private function writeVcenter() - { - $record = 0x0084; // Record identifier - $length = 0x0002; // Bytes to follow - - $fVCenter = $this->phpSheet->getPageSetup()->getVerticalCentered() ? 1 : 0; // Horizontal centering - - $header = pack("vv", $record, $length); - $data = pack("v", $fVCenter); - $this->append($header . $data); - } - - /** - * Store the LEFTMARGIN BIFF record. - */ - private function writeMarginLeft() - { - $record = 0x0026; // Record identifier - $length = 0x0008; // Bytes to follow - - $margin = $this->phpSheet->getPageMargins()->getLeft(); // Margin in inches - - $header = pack("vv", $record, $length); - $data = pack("d", $margin); - if (self::getByteOrder()) { // if it's Big Endian - $data = strrev($data); - } - - $this->append($header . $data); - } - - /** - * Store the RIGHTMARGIN BIFF record. - */ - private function writeMarginRight() - { - $record = 0x0027; // Record identifier - $length = 0x0008; // Bytes to follow - - $margin = $this->phpSheet->getPageMargins()->getRight(); // Margin in inches - - $header = pack("vv", $record, $length); - $data = pack("d", $margin); - if (self::getByteOrder()) { // if it's Big Endian - $data = strrev($data); - } - - $this->append($header . $data); - } - - /** - * Store the TOPMARGIN BIFF record. - */ - private function writeMarginTop() - { - $record = 0x0028; // Record identifier - $length = 0x0008; // Bytes to follow - - $margin = $this->phpSheet->getPageMargins()->getTop(); // Margin in inches - - $header = pack("vv", $record, $length); - $data = pack("d", $margin); - if (self::getByteOrder()) { // if it's Big Endian - $data = strrev($data); - } - - $this->append($header . $data); - } - - /** - * Store the BOTTOMMARGIN BIFF record. - */ - private function writeMarginBottom() - { - $record = 0x0029; // Record identifier - $length = 0x0008; // Bytes to follow - - $margin = $this->phpSheet->getPageMargins()->getBottom(); // Margin in inches - - $header = pack("vv", $record, $length); - $data = pack("d", $margin); - if (self::getByteOrder()) { // if it's Big Endian - $data = strrev($data); - } - - $this->append($header . $data); - } - - /** - * Write the PRINTHEADERS BIFF record. - */ - private function writePrintHeaders() - { - $record = 0x002a; // Record identifier - $length = 0x0002; // Bytes to follow - - $fPrintRwCol = $this->_print_headers; // Boolean flag - - $header = pack("vv", $record, $length); - $data = pack("v", $fPrintRwCol); - $this->append($header . $data); - } - - /** - * Write the PRINTGRIDLINES BIFF record. Must be used in conjunction with the - * GRIDSET record. - */ - private function writePrintGridlines() - { - $record = 0x002b; // Record identifier - $length = 0x0002; // Bytes to follow - - $fPrintGrid = $this->phpSheet->getPrintGridlines() ? 1 : 0; // Boolean flag - - $header = pack("vv", $record, $length); - $data = pack("v", $fPrintGrid); - $this->append($header . $data); - } - - /** - * Write the GRIDSET BIFF record. Must be used in conjunction with the - * PRINTGRIDLINES record. - */ - private function writeGridset() - { - $record = 0x0082; // Record identifier - $length = 0x0002; // Bytes to follow - - $fGridSet = !$this->phpSheet->getPrintGridlines(); // Boolean flag - - $header = pack("vv", $record, $length); - $data = pack("v", $fGridSet); - $this->append($header . $data); - } - - /** - * Write the AUTOFILTERINFO BIFF record. This is used to configure the number of autofilter select used in the sheet. - */ - private function writeAutoFilterInfo() - { - $record = 0x009D; // Record identifier - $length = 0x0002; // Bytes to follow - - $rangeBounds = PHPExcel_Cell::rangeBoundaries($this->phpSheet->getAutoFilter()->getRange()); - $iNumFilters = 1 + $rangeBounds[1][0] - $rangeBounds[0][0]; - - $header = pack("vv", $record, $length); - $data = pack("v", $iNumFilters); - $this->append($header . $data); - } - - /** - * Write the GUTS BIFF record. This is used to configure the gutter margins - * where Excel outline symbols are displayed. The visibility of the gutters is - * controlled by a flag in WSBOOL. - * - * @see writeWsbool() - */ - private function writeGuts() - { - $record = 0x0080; // Record identifier - $length = 0x0008; // Bytes to follow - - $dxRwGut = 0x0000; // Size of row gutter - $dxColGut = 0x0000; // Size of col gutter - - // determine maximum row outline level - $maxRowOutlineLevel = 0; - foreach ($this->phpSheet->getRowDimensions() as $rowDimension) { - $maxRowOutlineLevel = max($maxRowOutlineLevel, $rowDimension->getOutlineLevel()); - } - - $col_level = 0; - - // Calculate the maximum column outline level. The equivalent calculation - // for the row outline level is carried out in writeRow(). - $colcount = count($this->columnInfo); - for ($i = 0; $i < $colcount; ++$i) { - $col_level = max($this->columnInfo[$i][5], $col_level); - } - - // Set the limits for the outline levels (0 <= x <= 7). - $col_level = max(0, min($col_level, 7)); - - // The displayed level is one greater than the max outline levels - if ($maxRowOutlineLevel) { - ++$maxRowOutlineLevel; - } - if ($col_level) { - ++$col_level; - } - - $header = pack("vv", $record, $length); - $data = pack("vvvv", $dxRwGut, $dxColGut, $maxRowOutlineLevel, $col_level); - - $this->append($header.$data); - } - - /** - * Write the WSBOOL BIFF record, mainly for fit-to-page. Used in conjunction - * with the SETUP record. - */ - private function writeWsbool() - { - $record = 0x0081; // Record identifier - $length = 0x0002; // Bytes to follow - $grbit = 0x0000; - - // The only option that is of interest is the flag for fit to page. So we - // set all the options in one go. - // - // Set the option flags - $grbit |= 0x0001; // Auto page breaks visible - if ($this->outlineStyle) { - $grbit |= 0x0020; // Auto outline styles - } - if ($this->phpSheet->getShowSummaryBelow()) { - $grbit |= 0x0040; // Outline summary below - } - if ($this->phpSheet->getShowSummaryRight()) { - $grbit |= 0x0080; // Outline summary right - } - if ($this->phpSheet->getPageSetup()->getFitToPage()) { - $grbit |= 0x0100; // Page setup fit to page - } - if ($this->outlineOn) { - $grbit |= 0x0400; // Outline symbols displayed - } - - $header = pack("vv", $record, $length); - $data = pack("v", $grbit); - $this->append($header . $data); - } - - /** - * Write the HORIZONTALPAGEBREAKS and VERTICALPAGEBREAKS BIFF records. - */ - private function writeBreaks() - { - // initialize - $vbreaks = array(); - $hbreaks = array(); - - foreach ($this->phpSheet->getBreaks() as $cell => $breakType) { - // Fetch coordinates - $coordinates = PHPExcel_Cell::coordinateFromString($cell); - - // Decide what to do by the type of break - switch ($breakType) { - case PHPExcel_Worksheet::BREAK_COLUMN: - // Add to list of vertical breaks - $vbreaks[] = PHPExcel_Cell::columnIndexFromString($coordinates[0]) - 1; - break; - case PHPExcel_Worksheet::BREAK_ROW: - // Add to list of horizontal breaks - $hbreaks[] = $coordinates[1]; - break; - case PHPExcel_Worksheet::BREAK_NONE: - default: - // Nothing to do - break; - } - } - - //horizontal page breaks - if (!empty($hbreaks)) { - // Sort and filter array of page breaks - sort($hbreaks, SORT_NUMERIC); - if ($hbreaks[0] == 0) { // don't use first break if it's 0 - array_shift($hbreaks); - } - - $record = 0x001b; // Record identifier - $cbrk = count($hbreaks); // Number of page breaks - $length = 2 + 6 * $cbrk; // Bytes to follow - - $header = pack("vv", $record, $length); - $data = pack("v", $cbrk); - - // Append each page break - foreach ($hbreaks as $hbreak) { - $data .= pack("vvv", $hbreak, 0x0000, 0x00ff); - } - - $this->append($header . $data); - } - - // vertical page breaks - if (!empty($vbreaks)) { - // 1000 vertical pagebreaks appears to be an internal Excel 5 limit. - // It is slightly higher in Excel 97/200, approx. 1026 - $vbreaks = array_slice($vbreaks, 0, 1000); - - // Sort and filter array of page breaks - sort($vbreaks, SORT_NUMERIC); - if ($vbreaks[0] == 0) { // don't use first break if it's 0 - array_shift($vbreaks); - } - - $record = 0x001a; // Record identifier - $cbrk = count($vbreaks); // Number of page breaks - $length = 2 + 6 * $cbrk; // Bytes to follow - - $header = pack("vv", $record, $length); - $data = pack("v", $cbrk); - - // Append each page break - foreach ($vbreaks as $vbreak) { - $data .= pack("vvv", $vbreak, 0x0000, 0xffff); - } - - $this->append($header . $data); - } - } - - /** - * Set the Biff PROTECT record to indicate that the worksheet is protected. - */ - private function writeProtect() - { - // Exit unless sheet protection has been specified - if (!$this->phpSheet->getProtection()->getSheet()) { - return; - } - - $record = 0x0012; // Record identifier - $length = 0x0002; // Bytes to follow - - $fLock = 1; // Worksheet is protected - - $header = pack("vv", $record, $length); - $data = pack("v", $fLock); - - $this->append($header.$data); - } - - /** - * Write SCENPROTECT - */ - private function writeScenProtect() - { - // Exit if sheet protection is not active - if (!$this->phpSheet->getProtection()->getSheet()) { - return; - } - - // Exit if scenarios are not protected - if (!$this->phpSheet->getProtection()->getScenarios()) { - return; - } - - $record = 0x00DD; // Record identifier - $length = 0x0002; // Bytes to follow - - $header = pack('vv', $record, $length); - $data = pack('v', 1); - - $this->append($header . $data); - } - - /** - * Write OBJECTPROTECT - */ - private function writeObjectProtect() - { - // Exit if sheet protection is not active - if (!$this->phpSheet->getProtection()->getSheet()) { - return; - } - - // Exit if objects are not protected - if (!$this->phpSheet->getProtection()->getObjects()) { - return; - } - - $record = 0x0063; // Record identifier - $length = 0x0002; // Bytes to follow - - $header = pack('vv', $record, $length); - $data = pack('v', 1); - - $this->append($header . $data); - } - - /** - * Write the worksheet PASSWORD record. - */ - private function writePassword() - { - // Exit unless sheet protection and password have been specified - if (!$this->phpSheet->getProtection()->getSheet() || !$this->phpSheet->getProtection()->getPassword()) { - return; - } - - $record = 0x0013; // Record identifier - $length = 0x0002; // Bytes to follow - - $wPassword = hexdec($this->phpSheet->getProtection()->getPassword()); // Encoded password - - $header = pack("vv", $record, $length); - $data = pack("v", $wPassword); - - $this->append($header . $data); - } - - /** - * Insert a 24bit bitmap image in a worksheet. - * - * @access public - * @param integer $row The row we are going to insert the bitmap into - * @param integer $col The column we are going to insert the bitmap into - * @param mixed $bitmap The bitmap filename or GD-image resource - * @param integer $x The horizontal position (offset) of the image inside the cell. - * @param integer $y The vertical position (offset) of the image inside the cell. - * @param float $scale_x The horizontal scale - * @param float $scale_y The vertical scale - */ - public function insertBitmap($row, $col, $bitmap, $x = 0, $y = 0, $scale_x = 1, $scale_y = 1) - { - $bitmap_array = (is_resource($bitmap) ? $this->processBitmapGd($bitmap) : $this->processBitmap($bitmap)); - list($width, $height, $size, $data) = $bitmap_array; //$this->processBitmap($bitmap); - - // Scale the frame of the image. - $width *= $scale_x; - $height *= $scale_y; - - // Calculate the vertices of the image and write the OBJ record - $this->positionImage($col, $row, $x, $y, $width, $height); - - // Write the IMDATA record to store the bitmap data - $record = 0x007f; - $length = 8 + $size; - $cf = 0x09; - $env = 0x01; - $lcb = $size; - - $header = pack("vvvvV", $record, $length, $cf, $env, $lcb); - $this->append($header.$data); - } - - /** - * Calculate the vertices that define the position of the image as required by - * the OBJ record. - * - * +------------+------------+ - * | A | B | - * +-----+------------+------------+ - * | |(x1,y1) | | - * | 1 |(A1)._______|______ | - * | | | | | - * | | | | | - * +-----+----| BITMAP |-----+ - * | | | | | - * | 2 | |______________. | - * | | | (B2)| - * | | | (x2,y2)| - * +---- +------------+------------+ - * - * Example of a bitmap that covers some of the area from cell A1 to cell B2. - * - * Based on the width and height of the bitmap we need to calculate 8 vars: - * $col_start, $row_start, $col_end, $row_end, $x1, $y1, $x2, $y2. - * The width and height of the cells are also variable and have to be taken into - * account. - * The values of $col_start and $row_start are passed in from the calling - * function. The values of $col_end and $row_end are calculated by subtracting - * the width and height of the bitmap from the width and height of the - * underlying cells. - * The vertices are expressed as a percentage of the underlying cell width as - * follows (rhs values are in pixels): - * - * x1 = X / W *1024 - * y1 = Y / H *256 - * x2 = (X-1) / W *1024 - * y2 = (Y-1) / H *256 - * - * Where: X is distance from the left side of the underlying cell - * Y is distance from the top of the underlying cell - * W is the width of the cell - * H is the height of the cell - * The SDK incorrectly states that the height should be expressed as a - * percentage of 1024. - * - * @access private - * @param integer $col_start Col containing upper left corner of object - * @param integer $row_start Row containing top left corner of object - * @param integer $x1 Distance to left side of object - * @param integer $y1 Distance to top of object - * @param integer $width Width of image frame - * @param integer $height Height of image frame - */ - public function positionImage($col_start, $row_start, $x1, $y1, $width, $height) - { - // Initialise end cell to the same as the start cell - $col_end = $col_start; // Col containing lower right corner of object - $row_end = $row_start; // Row containing bottom right corner of object - - // Zero the specified offset if greater than the cell dimensions - if ($x1 >= PHPExcel_Shared_Excel5::sizeCol($this->phpSheet, PHPExcel_Cell::stringFromColumnIndex($col_start))) { - $x1 = 0; - } - if ($y1 >= PHPExcel_Shared_Excel5::sizeRow($this->phpSheet, $row_start + 1)) { - $y1 = 0; - } - - $width = $width + $x1 -1; - $height = $height + $y1 -1; - - // Subtract the underlying cell widths to find the end cell of the image - while ($width >= PHPExcel_Shared_Excel5::sizeCol($this->phpSheet, PHPExcel_Cell::stringFromColumnIndex($col_end))) { - $width -= PHPExcel_Shared_Excel5::sizeCol($this->phpSheet, PHPExcel_Cell::stringFromColumnIndex($col_end)); - ++$col_end; - } - - // Subtract the underlying cell heights to find the end cell of the image - while ($height >= PHPExcel_Shared_Excel5::sizeRow($this->phpSheet, $row_end + 1)) { - $height -= PHPExcel_Shared_Excel5::sizeRow($this->phpSheet, $row_end + 1); - ++$row_end; - } - - // Bitmap isn't allowed to start or finish in a hidden cell, i.e. a cell - // with zero eight or width. - // - if (PHPExcel_Shared_Excel5::sizeCol($this->phpSheet, PHPExcel_Cell::stringFromColumnIndex($col_start)) == 0) { - return; - } - if (PHPExcel_Shared_Excel5::sizeCol($this->phpSheet, PHPExcel_Cell::stringFromColumnIndex($col_end)) == 0) { - return; - } - if (PHPExcel_Shared_Excel5::sizeRow($this->phpSheet, $row_start + 1) == 0) { - return; - } - if (PHPExcel_Shared_Excel5::sizeRow($this->phpSheet, $row_end + 1) == 0) { - return; - } - - // Convert the pixel values to the percentage value expected by Excel - $x1 = $x1 / PHPExcel_Shared_Excel5::sizeCol($this->phpSheet, PHPExcel_Cell::stringFromColumnIndex($col_start)) * 1024; - $y1 = $y1 / PHPExcel_Shared_Excel5::sizeRow($this->phpSheet, $row_start + 1) * 256; - $x2 = $width / PHPExcel_Shared_Excel5::sizeCol($this->phpSheet, PHPExcel_Cell::stringFromColumnIndex($col_end)) * 1024; // Distance to right side of object - $y2 = $height / PHPExcel_Shared_Excel5::sizeRow($this->phpSheet, $row_end + 1) * 256; // Distance to bottom of object - - $this->writeObjPicture($col_start, $x1, $row_start, $y1, $col_end, $x2, $row_end, $y2); - } - - /** - * Store the OBJ record that precedes an IMDATA record. This could be generalise - * to support other Excel objects. - * - * @param integer $colL Column containing upper left corner of object - * @param integer $dxL Distance from left side of cell - * @param integer $rwT Row containing top left corner of object - * @param integer $dyT Distance from top of cell - * @param integer $colR Column containing lower right corner of object - * @param integer $dxR Distance from right of cell - * @param integer $rwB Row containing bottom right corner of object - * @param integer $dyB Distance from bottom of cell - */ - private function writeObjPicture($colL, $dxL, $rwT, $dyT, $colR, $dxR, $rwB, $dyB) - { - $record = 0x005d; // Record identifier - $length = 0x003c; // Bytes to follow - - $cObj = 0x0001; // Count of objects in file (set to 1) - $OT = 0x0008; // Object type. 8 = Picture - $id = 0x0001; // Object ID - $grbit = 0x0614; // Option flags - - $cbMacro = 0x0000; // Length of FMLA structure - $Reserved1 = 0x0000; // Reserved - $Reserved2 = 0x0000; // Reserved - - $icvBack = 0x09; // Background colour - $icvFore = 0x09; // Foreground colour - $fls = 0x00; // Fill pattern - $fAuto = 0x00; // Automatic fill - $icv = 0x08; // Line colour - $lns = 0xff; // Line style - $lnw = 0x01; // Line weight - $fAutoB = 0x00; // Automatic border - $frs = 0x0000; // Frame style - $cf = 0x0009; // Image format, 9 = bitmap - $Reserved3 = 0x0000; // Reserved - $cbPictFmla = 0x0000; // Length of FMLA structure - $Reserved4 = 0x0000; // Reserved - $grbit2 = 0x0001; // Option flags - $Reserved5 = 0x0000; // Reserved - - - $header = pack("vv", $record, $length); - $data = pack("V", $cObj); - $data .= pack("v", $OT); - $data .= pack("v", $id); - $data .= pack("v", $grbit); - $data .= pack("v", $colL); - $data .= pack("v", $dxL); - $data .= pack("v", $rwT); - $data .= pack("v", $dyT); - $data .= pack("v", $colR); - $data .= pack("v", $dxR); - $data .= pack("v", $rwB); - $data .= pack("v", $dyB); - $data .= pack("v", $cbMacro); - $data .= pack("V", $Reserved1); - $data .= pack("v", $Reserved2); - $data .= pack("C", $icvBack); - $data .= pack("C", $icvFore); - $data .= pack("C", $fls); - $data .= pack("C", $fAuto); - $data .= pack("C", $icv); - $data .= pack("C", $lns); - $data .= pack("C", $lnw); - $data .= pack("C", $fAutoB); - $data .= pack("v", $frs); - $data .= pack("V", $cf); - $data .= pack("v", $Reserved3); - $data .= pack("v", $cbPictFmla); - $data .= pack("v", $Reserved4); - $data .= pack("v", $grbit2); - $data .= pack("V", $Reserved5); - - $this->append($header . $data); - } - - /** - * Convert a GD-image into the internal format. - * - * @access private - * @param resource $image The image to process - * @return array Array with data and properties of the bitmap - */ - public function processBitmapGd($image) - { - $width = imagesx($image); - $height = imagesy($image); - - $data = pack("Vvvvv", 0x000c, $width, $height, 0x01, 0x18); - for ($j=$height; $j--;) { - for ($i=0; $i < $width; ++$i) { - $color = imagecolorsforindex($image, imagecolorat($image, $i, $j)); - foreach (array("red", "green", "blue") as $key) { - $color[$key] = $color[$key] + round((255 - $color[$key]) * $color["alpha"] / 127); - } - $data .= chr($color["blue"]) . chr($color["green"]) . chr($color["red"]); - } - if (3*$width % 4) { - $data .= str_repeat("\x00", 4 - 3*$width % 4); - } - } - - return array($width, $height, strlen($data), $data); - } - - /** - * Convert a 24 bit bitmap into the modified internal format used by Windows. - * This is described in BITMAPCOREHEADER and BITMAPCOREINFO structures in the - * MSDN library. - * - * @access private - * @param string $bitmap The bitmap to process - * @return array Array with data and properties of the bitmap - */ - public function processBitmap($bitmap) - { - // Open file. - $bmp_fd = @fopen($bitmap, "rb"); - if (!$bmp_fd) { - throw new PHPExcel_Writer_Exception("Couldn't import $bitmap"); - } - - // Slurp the file into a string. - $data = fread($bmp_fd, filesize($bitmap)); - - // Check that the file is big enough to be a bitmap. - if (strlen($data) <= 0x36) { - throw new PHPExcel_Writer_Exception("$bitmap doesn't contain enough data.\n"); - } - - // The first 2 bytes are used to identify the bitmap. - $identity = unpack("A2ident", $data); - if ($identity['ident'] != "BM") { - throw new PHPExcel_Writer_Exception("$bitmap doesn't appear to be a valid bitmap image.\n"); - } - - // Remove bitmap data: ID. - $data = substr($data, 2); - - // Read and remove the bitmap size. This is more reliable than reading - // the data size at offset 0x22. - // - $size_array = unpack("Vsa", substr($data, 0, 4)); - $size = $size_array['sa']; - $data = substr($data, 4); - $size -= 0x36; // Subtract size of bitmap header. - $size += 0x0C; // Add size of BIFF header. - - // Remove bitmap data: reserved, offset, header length. - $data = substr($data, 12); - - // Read and remove the bitmap width and height. Verify the sizes. - $width_and_height = unpack("V2", substr($data, 0, 8)); - $width = $width_and_height[1]; - $height = $width_and_height[2]; - $data = substr($data, 8); - if ($width > 0xFFFF) { - throw new PHPExcel_Writer_Exception("$bitmap: largest image width supported is 65k.\n"); - } - if ($height > 0xFFFF) { - throw new PHPExcel_Writer_Exception("$bitmap: largest image height supported is 65k.\n"); - } - - // Read and remove the bitmap planes and bpp data. Verify them. - $planes_and_bitcount = unpack("v2", substr($data, 0, 4)); - $data = substr($data, 4); - if ($planes_and_bitcount[2] != 24) { // Bitcount - throw new PHPExcel_Writer_Exception("$bitmap isn't a 24bit true color bitmap.\n"); - } - if ($planes_and_bitcount[1] != 1) { - throw new PHPExcel_Writer_Exception("$bitmap: only 1 plane supported in bitmap image.\n"); - } - - // Read and remove the bitmap compression. Verify compression. - $compression = unpack("Vcomp", substr($data, 0, 4)); - $data = substr($data, 4); - - //$compression = 0; - if ($compression['comp'] != 0) { - throw new PHPExcel_Writer_Exception("$bitmap: compression not supported in bitmap image.\n"); - } - - // Remove bitmap data: data size, hres, vres, colours, imp. colours. - $data = substr($data, 20); - - // Add the BITMAPCOREHEADER data - $header = pack("Vvvvv", 0x000c, $width, $height, 0x01, 0x18); - $data = $header . $data; - - return (array($width, $height, $size, $data)); - } - - /** - * Store the window zoom factor. This should be a reduced fraction but for - * simplicity we will store all fractions with a numerator of 100. - */ - private function writeZoom() - { - // If scale is 100 we don't need to write a record - if ($this->phpSheet->getSheetView()->getZoomScale() == 100) { - return; - } - - $record = 0x00A0; // Record identifier - $length = 0x0004; // Bytes to follow - - $header = pack("vv", $record, $length); - $data = pack("vv", $this->phpSheet->getSheetView()->getZoomScale(), 100); - $this->append($header . $data); - } - - /** - * Get Escher object - * - * @return PHPExcel_Shared_Escher - */ - public function getEscher() - { - return $this->escher; - } - - /** - * Set Escher object - * - * @param PHPExcel_Shared_Escher $pValue - */ - public function setEscher(PHPExcel_Shared_Escher $pValue = null) - { - $this->escher = $pValue; - } - - /** - * Write MSODRAWING record - */ - private function writeMsoDrawing() - { - // write the Escher stream if necessary - if (isset($this->escher)) { - $writer = new PHPExcel_Writer_Excel5_Escher($this->escher); - $data = $writer->close(); - $spOffsets = $writer->getSpOffsets(); - $spTypes = $writer->getSpTypes(); - // write the neccesary MSODRAWING, OBJ records - - // split the Escher stream - $spOffsets[0] = 0; - $nm = count($spOffsets) - 1; // number of shapes excluding first shape - for ($i = 1; $i <= $nm; ++$i) { - // MSODRAWING record - $record = 0x00EC; // Record identifier - - // chunk of Escher stream for one shape - $dataChunk = substr($data, $spOffsets[$i -1], $spOffsets[$i] - $spOffsets[$i - 1]); - - $length = strlen($dataChunk); - $header = pack("vv", $record, $length); - - $this->append($header . $dataChunk); - - // OBJ record - $record = 0x005D; // record identifier - $objData = ''; - - // ftCmo - if ($spTypes[$i] == 0x00C9) { - // Add ftCmo (common object data) subobject - $objData .= - pack( - 'vvvvvVVV', - 0x0015, // 0x0015 = ftCmo - 0x0012, // length of ftCmo data - 0x0014, // object type, 0x0014 = filter - $i, // object id number, Excel seems to use 1-based index, local for the sheet - 0x2101, // option flags, 0x2001 is what OpenOffice.org uses - 0, // reserved - 0, // reserved - 0 // reserved - ); - - // Add ftSbs Scroll bar subobject - $objData .= pack('vv', 0x00C, 0x0014); - $objData .= pack('H*', '0000000000000000640001000A00000010000100'); - // Add ftLbsData (List box data) subobject - $objData .= pack('vv', 0x0013, 0x1FEE); - $objData .= pack('H*', '00000000010001030000020008005700'); - } else { - // Add ftCmo (common object data) subobject - $objData .= - pack( - 'vvvvvVVV', - 0x0015, // 0x0015 = ftCmo - 0x0012, // length of ftCmo data - 0x0008, // object type, 0x0008 = picture - $i, // object id number, Excel seems to use 1-based index, local for the sheet - 0x6011, // option flags, 0x6011 is what OpenOffice.org uses - 0, // reserved - 0, // reserved - 0 // reserved - ); - } - - // ftEnd - $objData .= - pack( - 'vv', - 0x0000, // 0x0000 = ftEnd - 0x0000 // length of ftEnd data - ); - - $length = strlen($objData); - $header = pack('vv', $record, $length); - $this->append($header . $objData); - } - } - } - - /** - * Store the DATAVALIDATIONS and DATAVALIDATION records. - */ - private function writeDataValidity() - { - // Datavalidation collection - $dataValidationCollection = $this->phpSheet->getDataValidationCollection(); - - // Write data validations? - if (!empty($dataValidationCollection)) { - // DATAVALIDATIONS record - $record = 0x01B2; // Record identifier - $length = 0x0012; // Bytes to follow - - $grbit = 0x0000; // Prompt box at cell, no cached validity data at DV records - $horPos = 0x00000000; // Horizontal position of prompt box, if fixed position - $verPos = 0x00000000; // Vertical position of prompt box, if fixed position - $objId = 0xFFFFFFFF; // Object identifier of drop down arrow object, or -1 if not visible - - $header = pack('vv', $record, $length); - $data = pack('vVVVV', $grbit, $horPos, $verPos, $objId, count($dataValidationCollection)); - $this->append($header.$data); - - // DATAVALIDATION records - $record = 0x01BE; // Record identifier - - foreach ($dataValidationCollection as $cellCoordinate => $dataValidation) { - // initialize record data - $data = ''; - - // options - $options = 0x00000000; - - // data type - $type = $dataValidation->getType(); - switch ($type) { - case PHPExcel_Cell_DataValidation::TYPE_NONE: - $type = 0x00; - break; - case PHPExcel_Cell_DataValidation::TYPE_WHOLE: - $type = 0x01; - break; - case PHPExcel_Cell_DataValidation::TYPE_DECIMAL: - $type = 0x02; - break; - case PHPExcel_Cell_DataValidation::TYPE_LIST: - $type = 0x03; - break; - case PHPExcel_Cell_DataValidation::TYPE_DATE: - $type = 0x04; - break; - case PHPExcel_Cell_DataValidation::TYPE_TIME: - $type = 0x05; - break; - case PHPExcel_Cell_DataValidation::TYPE_TEXTLENGTH: - $type = 0x06; - break; - case PHPExcel_Cell_DataValidation::TYPE_CUSTOM: - $type = 0x07; - break; - } - $options |= $type << 0; - - // error style - $errorStyle = $dataValidation->getType(); - switch ($errorStyle) { - case PHPExcel_Cell_DataValidation::STYLE_STOP: - $errorStyle = 0x00; - break; - case PHPExcel_Cell_DataValidation::STYLE_WARNING: - $errorStyle = 0x01; - break; - case PHPExcel_Cell_DataValidation::STYLE_INFORMATION: - $errorStyle = 0x02; - break; - } - $options |= $errorStyle << 4; - - // explicit formula? - if ($type == 0x03 && preg_match('/^\".*\"$/', $dataValidation->getFormula1())) { - $options |= 0x01 << 7; - } - - // empty cells allowed - $options |= $dataValidation->getAllowBlank() << 8; - - // show drop down - $options |= (!$dataValidation->getShowDropDown()) << 9; - - // show input message - $options |= $dataValidation->getShowInputMessage() << 18; - - // show error message - $options |= $dataValidation->getShowErrorMessage() << 19; - - // condition operator - $operator = $dataValidation->getOperator(); - switch ($operator) { - case PHPExcel_Cell_DataValidation::OPERATOR_BETWEEN: - $operator = 0x00; - break; - case PHPExcel_Cell_DataValidation::OPERATOR_NOTBETWEEN: - $operator = 0x01; - break; - case PHPExcel_Cell_DataValidation::OPERATOR_EQUAL: - $operator = 0x02; - break; - case PHPExcel_Cell_DataValidation::OPERATOR_NOTEQUAL: - $operator = 0x03; - break; - case PHPExcel_Cell_DataValidation::OPERATOR_GREATERTHAN: - $operator = 0x04; - break; - case PHPExcel_Cell_DataValidation::OPERATOR_LESSTHAN: - $operator = 0x05; - break; - case PHPExcel_Cell_DataValidation::OPERATOR_GREATERTHANOREQUAL: - $operator = 0x06; - break; - case PHPExcel_Cell_DataValidation::OPERATOR_LESSTHANOREQUAL: - $operator = 0x07; - break; - } - $options |= $operator << 20; - - $data = pack('V', $options); - - // prompt title - $promptTitle = $dataValidation->getPromptTitle() !== '' ? - $dataValidation->getPromptTitle() : chr(0); - $data .= PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($promptTitle); - - // error title - $errorTitle = $dataValidation->getErrorTitle() !== '' ? - $dataValidation->getErrorTitle() : chr(0); - $data .= PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($errorTitle); - - // prompt text - $prompt = $dataValidation->getPrompt() !== '' ? - $dataValidation->getPrompt() : chr(0); - $data .= PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($prompt); - - // error text - $error = $dataValidation->getError() !== '' ? - $dataValidation->getError() : chr(0); - $data .= PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($error); - - // formula 1 - try { - $formula1 = $dataValidation->getFormula1(); - if ($type == 0x03) { // list type - $formula1 = str_replace(',', chr(0), $formula1); - } - $this->parser->parse($formula1); - $formula1 = $this->parser->toReversePolish(); - $sz1 = strlen($formula1); - } catch (PHPExcel_Exception $e) { - $sz1 = 0; - $formula1 = ''; - } - $data .= pack('vv', $sz1, 0x0000); - $data .= $formula1; - - // formula 2 - try { - $formula2 = $dataValidation->getFormula2(); - if ($formula2 === '') { - throw new PHPExcel_Writer_Exception('No formula2'); - } - $this->parser->parse($formula2); - $formula2 = $this->parser->toReversePolish(); - $sz2 = strlen($formula2); - } catch (PHPExcel_Exception $e) { - $sz2 = 0; - $formula2 = ''; - } - $data .= pack('vv', $sz2, 0x0000); - $data .= $formula2; - - // cell range address list - $data .= pack('v', 0x0001); - $data .= $this->writeBIFF8CellRangeAddressFixed($cellCoordinate); - - $length = strlen($data); - $header = pack("vv", $record, $length); - - $this->append($header . $data); - } - } - } - - /** - * Map Error code - * - * @param string $errorCode - * @return int - */ - private static function mapErrorCode($errorCode) - { - switch ($errorCode) { - case '#NULL!': - return 0x00; - case '#DIV/0!': - return 0x07; - case '#VALUE!': - return 0x0F; - case '#REF!': - return 0x17; - case '#NAME?': - return 0x1D; - case '#NUM!': - return 0x24; - case '#N/A': - return 0x2A; - } - - return 0; - } - - /** - * Write PLV Record - */ - private function writePageLayoutView() - { - $record = 0x088B; // Record identifier - $length = 0x0010; // Bytes to follow - - $rt = 0x088B; // 2 - $grbitFrt = 0x0000; // 2 - $reserved = 0x0000000000000000; // 8 - $wScalvePLV = $this->phpSheet->getSheetView()->getZoomScale(); // 2 - - // The options flags that comprise $grbit - if ($this->phpSheet->getSheetView()->getView() == PHPExcel_Worksheet_SheetView::SHEETVIEW_PAGE_LAYOUT) { - $fPageLayoutView = 1; - } else { - $fPageLayoutView = 0; - } - $fRulerVisible = 0; - $fWhitespaceHidden = 0; - - $grbit = $fPageLayoutView; // 2 - $grbit |= $fRulerVisible << 1; - $grbit |= $fWhitespaceHidden << 3; - - $header = pack("vv", $record, $length); - $data = pack("vvVVvv", $rt, $grbitFrt, 0x00000000, 0x00000000, $wScalvePLV, $grbit); - $this->append($header . $data); - } - - /** - * Write CFRule Record - * @param PHPExcel_Style_Conditional $conditional - */ - private function writeCFRule(PHPExcel_Style_Conditional $conditional) - { - $record = 0x01B1; // Record identifier - - // $type : Type of the CF - // $operatorType : Comparison operator - if ($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_EXPRESSION) { - $type = 0x02; - $operatorType = 0x00; - } elseif ($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CELLIS) { - $type = 0x01; - - switch ($conditional->getOperatorType()) { - case PHPExcel_Style_Conditional::OPERATOR_NONE: - $operatorType = 0x00; - break; - case PHPExcel_Style_Conditional::OPERATOR_EQUAL: - $operatorType = 0x03; - break; - case PHPExcel_Style_Conditional::OPERATOR_GREATERTHAN: - $operatorType = 0x05; - break; - case PHPExcel_Style_Conditional::OPERATOR_GREATERTHANOREQUAL: - $operatorType = 0x07; - break; - case PHPExcel_Style_Conditional::OPERATOR_LESSTHAN: - $operatorType = 0x06; - break; - case PHPExcel_Style_Conditional::OPERATOR_LESSTHANOREQUAL: - $operatorType = 0x08; - break; - case PHPExcel_Style_Conditional::OPERATOR_NOTEQUAL: - $operatorType = 0x04; - break; - case PHPExcel_Style_Conditional::OPERATOR_BETWEEN: - $operatorType = 0x01; - break; - // not OPERATOR_NOTBETWEEN 0x02 - } - } - - // $szValue1 : size of the formula data for first value or formula - // $szValue2 : size of the formula data for second value or formula - $arrConditions = $conditional->getConditions(); - $numConditions = sizeof($arrConditions); - if ($numConditions == 1) { - $szValue1 = ($arrConditions[0] <= 65535 ? 3 : 0x0000); - $szValue2 = 0x0000; - $operand1 = pack('Cv', 0x1E, $arrConditions[0]); - $operand2 = null; - } elseif ($numConditions == 2 && ($conditional->getOperatorType() == PHPExcel_Style_Conditional::OPERATOR_BETWEEN)) { - $szValue1 = ($arrConditions[0] <= 65535 ? 3 : 0x0000); - $szValue2 = ($arrConditions[1] <= 65535 ? 3 : 0x0000); - $operand1 = pack('Cv', 0x1E, $arrConditions[0]); - $operand2 = pack('Cv', 0x1E, $arrConditions[1]); - } else { - $szValue1 = 0x0000; - $szValue2 = 0x0000; - $operand1 = null; - $operand2 = null; - } - - // $flags : Option flags - // Alignment - $bAlignHz = ($conditional->getStyle()->getAlignment()->getHorizontal() == null ? 1 : 0); - $bAlignVt = ($conditional->getStyle()->getAlignment()->getVertical() == null ? 1 : 0); - $bAlignWrapTx = ($conditional->getStyle()->getAlignment()->getWrapText() == false ? 1 : 0); - $bTxRotation = ($conditional->getStyle()->getAlignment()->getTextRotation() == null ? 1 : 0); - $bIndent = ($conditional->getStyle()->getAlignment()->getIndent() == 0 ? 1 : 0); - $bShrinkToFit = ($conditional->getStyle()->getAlignment()->getShrinkToFit() == false ? 1 : 0); - if ($bAlignHz == 0 || $bAlignVt == 0 || $bAlignWrapTx == 0 || $bTxRotation == 0 || $bIndent == 0 || $bShrinkToFit == 0) { - $bFormatAlign = 1; - } else { - $bFormatAlign = 0; - } - // Protection - $bProtLocked = ($conditional->getStyle()->getProtection()->getLocked() == null ? 1 : 0); - $bProtHidden = ($conditional->getStyle()->getProtection()->getHidden() == null ? 1 : 0); - if ($bProtLocked == 0 || $bProtHidden == 0) { - $bFormatProt = 1; - } else { - $bFormatProt = 0; - } - // Border - $bBorderLeft = ($conditional->getStyle()->getBorders()->getLeft()->getColor()->getARGB() == PHPExcel_Style_Color::COLOR_BLACK - && $conditional->getStyle()->getBorders()->getLeft()->getBorderStyle() == PHPExcel_Style_Border::BORDER_NONE ? 1 : 0); - $bBorderRight = ($conditional->getStyle()->getBorders()->getRight()->getColor()->getARGB() == PHPExcel_Style_Color::COLOR_BLACK - && $conditional->getStyle()->getBorders()->getRight()->getBorderStyle() == PHPExcel_Style_Border::BORDER_NONE ? 1 : 0); - $bBorderTop = ($conditional->getStyle()->getBorders()->getTop()->getColor()->getARGB() == PHPExcel_Style_Color::COLOR_BLACK - && $conditional->getStyle()->getBorders()->getTop()->getBorderStyle() == PHPExcel_Style_Border::BORDER_NONE ? 1 : 0); - $bBorderBottom = ($conditional->getStyle()->getBorders()->getBottom()->getColor()->getARGB() == PHPExcel_Style_Color::COLOR_BLACK - && $conditional->getStyle()->getBorders()->getBottom()->getBorderStyle() == PHPExcel_Style_Border::BORDER_NONE ? 1 : 0); - if ($bBorderLeft == 0 || $bBorderRight == 0 || $bBorderTop == 0 || $bBorderBottom == 0) { - $bFormatBorder = 1; - } else { - $bFormatBorder = 0; - } - // Pattern - $bFillStyle = ($conditional->getStyle()->getFill()->getFillType() == null ? 0 : 1); - $bFillColor = ($conditional->getStyle()->getFill()->getStartColor()->getARGB() == null ? 0 : 1); - $bFillColorBg = ($conditional->getStyle()->getFill()->getEndColor()->getARGB() == null ? 0 : 1); - if ($bFillStyle == 0 || $bFillColor == 0 || $bFillColorBg == 0) { - $bFormatFill = 1; - } else { - $bFormatFill = 0; - } - // Font - if ($conditional->getStyle()->getFont()->getName() != null - || $conditional->getStyle()->getFont()->getSize() != null - || $conditional->getStyle()->getFont()->getBold() != null - || $conditional->getStyle()->getFont()->getItalic() != null - || $conditional->getStyle()->getFont()->getSuperScript() != null - || $conditional->getStyle()->getFont()->getSubScript() != null - || $conditional->getStyle()->getFont()->getUnderline() != null - || $conditional->getStyle()->getFont()->getStrikethrough() != null - || $conditional->getStyle()->getFont()->getColor()->getARGB() != null) { - $bFormatFont = 1; - } else { - $bFormatFont = 0; - } - // Alignment - $flags = 0; - $flags |= (1 == $bAlignHz ? 0x00000001 : 0); - $flags |= (1 == $bAlignVt ? 0x00000002 : 0); - $flags |= (1 == $bAlignWrapTx ? 0x00000004 : 0); - $flags |= (1 == $bTxRotation ? 0x00000008 : 0); - // Justify last line flag - $flags |= (1 == 1 ? 0x00000010 : 0); - $flags |= (1 == $bIndent ? 0x00000020 : 0); - $flags |= (1 == $bShrinkToFit ? 0x00000040 : 0); - // Default - $flags |= (1 == 1 ? 0x00000080 : 0); - // Protection - $flags |= (1 == $bProtLocked ? 0x00000100 : 0); - $flags |= (1 == $bProtHidden ? 0x00000200 : 0); - // Border - $flags |= (1 == $bBorderLeft ? 0x00000400 : 0); - $flags |= (1 == $bBorderRight ? 0x00000800 : 0); - $flags |= (1 == $bBorderTop ? 0x00001000 : 0); - $flags |= (1 == $bBorderBottom ? 0x00002000 : 0); - $flags |= (1 == 1 ? 0x00004000 : 0); // Top left to Bottom right border - $flags |= (1 == 1 ? 0x00008000 : 0); // Bottom left to Top right border - // Pattern - $flags |= (1 == $bFillStyle ? 0x00010000 : 0); - $flags |= (1 == $bFillColor ? 0x00020000 : 0); - $flags |= (1 == $bFillColorBg ? 0x00040000 : 0); - $flags |= (1 == 1 ? 0x00380000 : 0); - // Font - $flags |= (1 == $bFormatFont ? 0x04000000 : 0); - // Alignment: - $flags |= (1 == $bFormatAlign ? 0x08000000 : 0); - // Border - $flags |= (1 == $bFormatBorder ? 0x10000000 : 0); - // Pattern - $flags |= (1 == $bFormatFill ? 0x20000000 : 0); - // Protection - $flags |= (1 == $bFormatProt ? 0x40000000 : 0); - // Text direction - $flags |= (1 == 0 ? 0x80000000 : 0); - - // Data Blocks - if ($bFormatFont == 1) { - // Font Name - if ($conditional->getStyle()->getFont()->getName() == null) { - $dataBlockFont = pack('VVVVVVVV', 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000); - $dataBlockFont .= pack('VVVVVVVV', 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000); - } else { - $dataBlockFont = PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($conditional->getStyle()->getFont()->getName()); - } - // Font Size - if ($conditional->getStyle()->getFont()->getSize() == null) { - $dataBlockFont .= pack('V', 20 * 11); - } else { - $dataBlockFont .= pack('V', 20 * $conditional->getStyle()->getFont()->getSize()); - } - // Font Options - $dataBlockFont .= pack('V', 0); - // Font weight - if ($conditional->getStyle()->getFont()->getBold() == true) { - $dataBlockFont .= pack('v', 0x02BC); - } else { - $dataBlockFont .= pack('v', 0x0190); - } - // Escapement type - if ($conditional->getStyle()->getFont()->getSubScript() == true) { - $dataBlockFont .= pack('v', 0x02); - $fontEscapement = 0; - } elseif ($conditional->getStyle()->getFont()->getSuperScript() == true) { - $dataBlockFont .= pack('v', 0x01); - $fontEscapement = 0; - } else { - $dataBlockFont .= pack('v', 0x00); - $fontEscapement = 1; - } - // Underline type - switch ($conditional->getStyle()->getFont()->getUnderline()) { - case PHPExcel_Style_Font::UNDERLINE_NONE: - $dataBlockFont .= pack('C', 0x00); - $fontUnderline = 0; - break; - case PHPExcel_Style_Font::UNDERLINE_DOUBLE: - $dataBlockFont .= pack('C', 0x02); - $fontUnderline = 0; - break; - case PHPExcel_Style_Font::UNDERLINE_DOUBLEACCOUNTING: - $dataBlockFont .= pack('C', 0x22); - $fontUnderline = 0; - break; - case PHPExcel_Style_Font::UNDERLINE_SINGLE: - $dataBlockFont .= pack('C', 0x01); - $fontUnderline = 0; - break; - case PHPExcel_Style_Font::UNDERLINE_SINGLEACCOUNTING: - $dataBlockFont .= pack('C', 0x21); - $fontUnderline = 0; - break; - default: $dataBlockFont .= pack('C', 0x00); - $fontUnderline = 1; - break; - } - // Not used (3) - $dataBlockFont .= pack('vC', 0x0000, 0x00); - // Font color index - switch ($conditional->getStyle()->getFont()->getColor()->getRGB()) { - case '000000': - $colorIdx = 0x08; - break; - case 'FFFFFF': - $colorIdx = 0x09; - break; - case 'FF0000': - $colorIdx = 0x0A; - break; - case '00FF00': - $colorIdx = 0x0B; - break; - case '0000FF': - $colorIdx = 0x0C; - break; - case 'FFFF00': - $colorIdx = 0x0D; - break; - case 'FF00FF': - $colorIdx = 0x0E; - break; - case '00FFFF': - $colorIdx = 0x0F; - break; - case '800000': - $colorIdx = 0x10; - break; - case '008000': - $colorIdx = 0x11; - break; - case '000080': - $colorIdx = 0x12; - break; - case '808000': - $colorIdx = 0x13; - break; - case '800080': - $colorIdx = 0x14; - break; - case '008080': - $colorIdx = 0x15; - break; - case 'C0C0C0': - $colorIdx = 0x16; - break; - case '808080': - $colorIdx = 0x17; - break; - case '9999FF': - $colorIdx = 0x18; - break; - case '993366': - $colorIdx = 0x19; - break; - case 'FFFFCC': - $colorIdx = 0x1A; - break; - case 'CCFFFF': - $colorIdx = 0x1B; - break; - case '660066': - $colorIdx = 0x1C; - break; - case 'FF8080': - $colorIdx = 0x1D; - break; - case '0066CC': - $colorIdx = 0x1E; - break; - case 'CCCCFF': - $colorIdx = 0x1F; - break; - case '000080': - $colorIdx = 0x20; - break; - case 'FF00FF': - $colorIdx = 0x21; - break; - case 'FFFF00': - $colorIdx = 0x22; - break; - case '00FFFF': - $colorIdx = 0x23; - break; - case '800080': - $colorIdx = 0x24; - break; - case '800000': - $colorIdx = 0x25; - break; - case '008080': - $colorIdx = 0x26; - break; - case '0000FF': - $colorIdx = 0x27; - break; - case '00CCFF': - $colorIdx = 0x28; - break; - case 'CCFFFF': - $colorIdx = 0x29; - break; - case 'CCFFCC': - $colorIdx = 0x2A; - break; - case 'FFFF99': - $colorIdx = 0x2B; - break; - case '99CCFF': - $colorIdx = 0x2C; - break; - case 'FF99CC': - $colorIdx = 0x2D; - break; - case 'CC99FF': - $colorIdx = 0x2E; - break; - case 'FFCC99': - $colorIdx = 0x2F; - break; - case '3366FF': - $colorIdx = 0x30; - break; - case '33CCCC': - $colorIdx = 0x31; - break; - case '99CC00': - $colorIdx = 0x32; - break; - case 'FFCC00': - $colorIdx = 0x33; - break; - case 'FF9900': - $colorIdx = 0x34; - break; - case 'FF6600': - $colorIdx = 0x35; - break; - case '666699': - $colorIdx = 0x36; - break; - case '969696': - $colorIdx = 0x37; - break; - case '003366': - $colorIdx = 0x38; - break; - case '339966': - $colorIdx = 0x39; - break; - case '003300': - $colorIdx = 0x3A; - break; - case '333300': - $colorIdx = 0x3B; - break; - case '993300': - $colorIdx = 0x3C; - break; - case '993366': - $colorIdx = 0x3D; - break; - case '333399': - $colorIdx = 0x3E; - break; - case '333333': - $colorIdx = 0x3F; - break; - default: - $colorIdx = 0x00; - break; - } - $dataBlockFont .= pack('V', $colorIdx); - // Not used (4) - $dataBlockFont .= pack('V', 0x00000000); - // Options flags for modified font attributes - $optionsFlags = 0; - $optionsFlagsBold = ($conditional->getStyle()->getFont()->getBold() == null ? 1 : 0); - $optionsFlags |= (1 == $optionsFlagsBold ? 0x00000002 : 0); - $optionsFlags |= (1 == 1 ? 0x00000008 : 0); - $optionsFlags |= (1 == 1 ? 0x00000010 : 0); - $optionsFlags |= (1 == 0 ? 0x00000020 : 0); - $optionsFlags |= (1 == 1 ? 0x00000080 : 0); - $dataBlockFont .= pack('V', $optionsFlags); - // Escapement type - $dataBlockFont .= pack('V', $fontEscapement); - // Underline type - $dataBlockFont .= pack('V', $fontUnderline); - // Always - $dataBlockFont .= pack('V', 0x00000000); - // Always - $dataBlockFont .= pack('V', 0x00000000); - // Not used (8) - $dataBlockFont .= pack('VV', 0x00000000, 0x00000000); - // Always - $dataBlockFont .= pack('v', 0x0001); - } - if ($bFormatAlign == 1) { - $blockAlign = 0; - // Alignment and text break - switch ($conditional->getStyle()->getAlignment()->getHorizontal()) { - case PHPExcel_Style_Alignment::HORIZONTAL_GENERAL: - $blockAlign = 0; - break; - case PHPExcel_Style_Alignment::HORIZONTAL_LEFT: - $blockAlign = 1; - break; - case PHPExcel_Style_Alignment::HORIZONTAL_RIGHT: - $blockAlign = 3; - break; - case PHPExcel_Style_Alignment::HORIZONTAL_CENTER: - $blockAlign = 2; - break; - case PHPExcel_Style_Alignment::HORIZONTAL_CENTER_CONTINUOUS: - $blockAlign = 6; - break; - case PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY: - $blockAlign = 5; - break; - } - if ($conditional->getStyle()->getAlignment()->getWrapText() == true) { - $blockAlign |= 1 << 3; - } else { - $blockAlign |= 0 << 3; - } - switch ($conditional->getStyle()->getAlignment()->getVertical()) { - case PHPExcel_Style_Alignment::VERTICAL_BOTTOM: - $blockAlign = 2 << 4; - break; - case PHPExcel_Style_Alignment::VERTICAL_TOP: - $blockAlign = 0 << 4; - break; - case PHPExcel_Style_Alignment::VERTICAL_CENTER: - $blockAlign = 1 << 4; - break; - case PHPExcel_Style_Alignment::VERTICAL_JUSTIFY: - $blockAlign = 3 << 4; - break; - } - $blockAlign |= 0 << 7; - - // Text rotation angle - $blockRotation = $conditional->getStyle()->getAlignment()->getTextRotation(); - - // Indentation - $blockIndent = $conditional->getStyle()->getAlignment()->getIndent(); - if ($conditional->getStyle()->getAlignment()->getShrinkToFit() == true) { - $blockIndent |= 1 << 4; - } else { - $blockIndent |= 0 << 4; - } - $blockIndent |= 0 << 6; - - // Relative indentation - $blockIndentRelative = 255; - - $dataBlockAlign = pack('CCvvv', $blockAlign, $blockRotation, $blockIndent, $blockIndentRelative, 0x0000); - } - if ($bFormatBorder == 1) { - $blockLineStyle = 0; - switch ($conditional->getStyle()->getBorders()->getLeft()->getBorderStyle()) { - case PHPExcel_Style_Border::BORDER_NONE: - $blockLineStyle |= 0x00; - break; - case PHPExcel_Style_Border::BORDER_THIN: - $blockLineStyle |= 0x01; - break; - case PHPExcel_Style_Border::BORDER_MEDIUM: - $blockLineStyle |= 0x02; - break; - case PHPExcel_Style_Border::BORDER_DASHED: - $blockLineStyle |= 0x03; - break; - case PHPExcel_Style_Border::BORDER_DOTTED: - $blockLineStyle |= 0x04; - break; - case PHPExcel_Style_Border::BORDER_THICK: - $blockLineStyle |= 0x05; - break; - case PHPExcel_Style_Border::BORDER_DOUBLE: - $blockLineStyle |= 0x06; - break; - case PHPExcel_Style_Border::BORDER_HAIR: - $blockLineStyle |= 0x07; - break; - case PHPExcel_Style_Border::BORDER_MEDIUMDASHED: - $blockLineStyle |= 0x08; - break; - case PHPExcel_Style_Border::BORDER_DASHDOT: - $blockLineStyle |= 0x09; - break; - case PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT: - $blockLineStyle |= 0x0A; - break; - case PHPExcel_Style_Border::BORDER_DASHDOTDOT: - $blockLineStyle |= 0x0B; - break; - case PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT: - $blockLineStyle |= 0x0C; - break; - case PHPExcel_Style_Border::BORDER_SLANTDASHDOT: - $blockLineStyle |= 0x0D; - break; - } - switch ($conditional->getStyle()->getBorders()->getRight()->getBorderStyle()) { - case PHPExcel_Style_Border::BORDER_NONE: - $blockLineStyle |= 0x00 << 4; - break; - case PHPExcel_Style_Border::BORDER_THIN: - $blockLineStyle |= 0x01 << 4; - break; - case PHPExcel_Style_Border::BORDER_MEDIUM: - $blockLineStyle |= 0x02 << 4; - break; - case PHPExcel_Style_Border::BORDER_DASHED: - $blockLineStyle |= 0x03 << 4; - break; - case PHPExcel_Style_Border::BORDER_DOTTED: - $blockLineStyle |= 0x04 << 4; - break; - case PHPExcel_Style_Border::BORDER_THICK: - $blockLineStyle |= 0x05 << 4; - break; - case PHPExcel_Style_Border::BORDER_DOUBLE: - $blockLineStyle |= 0x06 << 4; - break; - case PHPExcel_Style_Border::BORDER_HAIR: - $blockLineStyle |= 0x07 << 4; - break; - case PHPExcel_Style_Border::BORDER_MEDIUMDASHED: - $blockLineStyle |= 0x08 << 4; - break; - case PHPExcel_Style_Border::BORDER_DASHDOT: - $blockLineStyle |= 0x09 << 4; - break; - case PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT: - $blockLineStyle |= 0x0A << 4; - break; - case PHPExcel_Style_Border::BORDER_DASHDOTDOT: - $blockLineStyle |= 0x0B << 4; - break; - case PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT: - $blockLineStyle |= 0x0C << 4; - break; - case PHPExcel_Style_Border::BORDER_SLANTDASHDOT: - $blockLineStyle |= 0x0D << 4; - break; - } - switch ($conditional->getStyle()->getBorders()->getTop()->getBorderStyle()) { - case PHPExcel_Style_Border::BORDER_NONE: - $blockLineStyle |= 0x00 << 8; - break; - case PHPExcel_Style_Border::BORDER_THIN: - $blockLineStyle |= 0x01 << 8; - break; - case PHPExcel_Style_Border::BORDER_MEDIUM: - $blockLineStyle |= 0x02 << 8; - break; - case PHPExcel_Style_Border::BORDER_DASHED: - $blockLineStyle |= 0x03 << 8; - break; - case PHPExcel_Style_Border::BORDER_DOTTED: - $blockLineStyle |= 0x04 << 8; - break; - case PHPExcel_Style_Border::BORDER_THICK: - $blockLineStyle |= 0x05 << 8; - break; - case PHPExcel_Style_Border::BORDER_DOUBLE: - $blockLineStyle |= 0x06 << 8; - break; - case PHPExcel_Style_Border::BORDER_HAIR: - $blockLineStyle |= 0x07 << 8; - break; - case PHPExcel_Style_Border::BORDER_MEDIUMDASHED: - $blockLineStyle |= 0x08 << 8; - break; - case PHPExcel_Style_Border::BORDER_DASHDOT: - $blockLineStyle |= 0x09 << 8; - break; - case PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT: - $blockLineStyle |= 0x0A << 8; - break; - case PHPExcel_Style_Border::BORDER_DASHDOTDOT: - $blockLineStyle |= 0x0B << 8; - break; - case PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT: - $blockLineStyle |= 0x0C << 8; - break; - case PHPExcel_Style_Border::BORDER_SLANTDASHDOT: - $blockLineStyle |= 0x0D << 8; - break; - } - switch ($conditional->getStyle()->getBorders()->getBottom()->getBorderStyle()) { - case PHPExcel_Style_Border::BORDER_NONE: - $blockLineStyle |= 0x00 << 12; - break; - case PHPExcel_Style_Border::BORDER_THIN: - $blockLineStyle |= 0x01 << 12; - break; - case PHPExcel_Style_Border::BORDER_MEDIUM: - $blockLineStyle |= 0x02 << 12; - break; - case PHPExcel_Style_Border::BORDER_DASHED: - $blockLineStyle |= 0x03 << 12; - break; - case PHPExcel_Style_Border::BORDER_DOTTED: - $blockLineStyle |= 0x04 << 12; - break; - case PHPExcel_Style_Border::BORDER_THICK: - $blockLineStyle |= 0x05 << 12; - break; - case PHPExcel_Style_Border::BORDER_DOUBLE: - $blockLineStyle |= 0x06 << 12; - break; - case PHPExcel_Style_Border::BORDER_HAIR: - $blockLineStyle |= 0x07 << 12; - break; - case PHPExcel_Style_Border::BORDER_MEDIUMDASHED: - $blockLineStyle |= 0x08 << 12; - break; - case PHPExcel_Style_Border::BORDER_DASHDOT: - $blockLineStyle |= 0x09 << 12; - break; - case PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT: - $blockLineStyle |= 0x0A << 12; - break; - case PHPExcel_Style_Border::BORDER_DASHDOTDOT: - $blockLineStyle |= 0x0B << 12; - break; - case PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT: - $blockLineStyle |= 0x0C << 12; - break; - case PHPExcel_Style_Border::BORDER_SLANTDASHDOT: - $blockLineStyle |= 0x0D << 12; - break; - } - //@todo writeCFRule() => $blockLineStyle => Index Color for left line - //@todo writeCFRule() => $blockLineStyle => Index Color for right line - //@todo writeCFRule() => $blockLineStyle => Top-left to bottom-right on/off - //@todo writeCFRule() => $blockLineStyle => Bottom-left to top-right on/off - $blockColor = 0; - //@todo writeCFRule() => $blockColor => Index Color for top line - //@todo writeCFRule() => $blockColor => Index Color for bottom line - //@todo writeCFRule() => $blockColor => Index Color for diagonal line - switch ($conditional->getStyle()->getBorders()->getDiagonal()->getBorderStyle()) { - case PHPExcel_Style_Border::BORDER_NONE: - $blockColor |= 0x00 << 21; - break; - case PHPExcel_Style_Border::BORDER_THIN: - $blockColor |= 0x01 << 21; - break; - case PHPExcel_Style_Border::BORDER_MEDIUM: - $blockColor |= 0x02 << 21; - break; - case PHPExcel_Style_Border::BORDER_DASHED: - $blockColor |= 0x03 << 21; - break; - case PHPExcel_Style_Border::BORDER_DOTTED: - $blockColor |= 0x04 << 21; - break; - case PHPExcel_Style_Border::BORDER_THICK: - $blockColor |= 0x05 << 21; - break; - case PHPExcel_Style_Border::BORDER_DOUBLE: - $blockColor |= 0x06 << 21; - break; - case PHPExcel_Style_Border::BORDER_HAIR: - $blockColor |= 0x07 << 21; - break; - case PHPExcel_Style_Border::BORDER_MEDIUMDASHED: - $blockColor |= 0x08 << 21; - break; - case PHPExcel_Style_Border::BORDER_DASHDOT: - $blockColor |= 0x09 << 21; - break; - case PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT: - $blockColor |= 0x0A << 21; - break; - case PHPExcel_Style_Border::BORDER_DASHDOTDOT: - $blockColor |= 0x0B << 21; - break; - case PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT: - $blockColor |= 0x0C << 21; - break; - case PHPExcel_Style_Border::BORDER_SLANTDASHDOT: - $blockColor |= 0x0D << 21; - break; - } - $dataBlockBorder = pack('vv', $blockLineStyle, $blockColor); - } - if ($bFormatFill == 1) { - // Fill Patern Style - $blockFillPatternStyle = 0; - switch ($conditional->getStyle()->getFill()->getFillType()) { - case PHPExcel_Style_Fill::FILL_NONE: - $blockFillPatternStyle = 0x00; - break; - case PHPExcel_Style_Fill::FILL_SOLID: - $blockFillPatternStyle = 0x01; - break; - case PHPExcel_Style_Fill::FILL_PATTERN_MEDIUMGRAY: - $blockFillPatternStyle = 0x02; - break; - case PHPExcel_Style_Fill::FILL_PATTERN_DARKGRAY: - $blockFillPatternStyle = 0x03; - break; - case PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRAY: - $blockFillPatternStyle = 0x04; - break; - case PHPExcel_Style_Fill::FILL_PATTERN_DARKHORIZONTAL: - $blockFillPatternStyle = 0x05; - break; - case PHPExcel_Style_Fill::FILL_PATTERN_DARKVERTICAL: - $blockFillPatternStyle = 0x06; - break; - case PHPExcel_Style_Fill::FILL_PATTERN_DARKDOWN: - $blockFillPatternStyle = 0x07; - break; - case PHPExcel_Style_Fill::FILL_PATTERN_DARKUP: - $blockFillPatternStyle = 0x08; - break; - case PHPExcel_Style_Fill::FILL_PATTERN_DARKGRID: - $blockFillPatternStyle = 0x09; - break; - case PHPExcel_Style_Fill::FILL_PATTERN_DARKTRELLIS: - $blockFillPatternStyle = 0x0A; - break; - case PHPExcel_Style_Fill::FILL_PATTERN_LIGHTHORIZONTAL: - $blockFillPatternStyle = 0x0B; - break; - case PHPExcel_Style_Fill::FILL_PATTERN_LIGHTVERTICAL: - $blockFillPatternStyle = 0x0C; - break; - case PHPExcel_Style_Fill::FILL_PATTERN_LIGHTDOWN: - $blockFillPatternStyle = 0x0D; - break; - case PHPExcel_Style_Fill::FILL_PATTERN_LIGHTUP: - $blockFillPatternStyle = 0x0E; - break; - case PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRID: - $blockFillPatternStyle = 0x0F; - break; - case PHPExcel_Style_Fill::FILL_PATTERN_LIGHTTRELLIS: - $blockFillPatternStyle = 0x10; - break; - case PHPExcel_Style_Fill::FILL_PATTERN_GRAY125: - $blockFillPatternStyle = 0x11; - break; - case PHPExcel_Style_Fill::FILL_PATTERN_GRAY0625: - $blockFillPatternStyle = 0x12; - break; - case PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR: - $blockFillPatternStyle = 0x00; - break; // does not exist in BIFF8 - case PHPExcel_Style_Fill::FILL_GRADIENT_PATH: - $blockFillPatternStyle = 0x00; - break; // does not exist in BIFF8 - default: - $blockFillPatternStyle = 0x00; - break; - } - // Color - switch ($conditional->getStyle()->getFill()->getStartColor()->getRGB()) { - case '000000': - $colorIdxBg = 0x08; - break; - case 'FFFFFF': - $colorIdxBg = 0x09; - break; - case 'FF0000': - $colorIdxBg = 0x0A; - break; - case '00FF00': - $colorIdxBg = 0x0B; - break; - case '0000FF': - $colorIdxBg = 0x0C; - break; - case 'FFFF00': - $colorIdxBg = 0x0D; - break; - case 'FF00FF': - $colorIdxBg = 0x0E; - break; - case '00FFFF': - $colorIdxBg = 0x0F; - break; - case '800000': - $colorIdxBg = 0x10; - break; - case '008000': - $colorIdxBg = 0x11; - break; - case '000080': - $colorIdxBg = 0x12; - break; - case '808000': - $colorIdxBg = 0x13; - break; - case '800080': - $colorIdxBg = 0x14; - break; - case '008080': - $colorIdxBg = 0x15; - break; - case 'C0C0C0': - $colorIdxBg = 0x16; - break; - case '808080': - $colorIdxBg = 0x17; - break; - case '9999FF': - $colorIdxBg = 0x18; - break; - case '993366': - $colorIdxBg = 0x19; - break; - case 'FFFFCC': - $colorIdxBg = 0x1A; - break; - case 'CCFFFF': - $colorIdxBg = 0x1B; - break; - case '660066': - $colorIdxBg = 0x1C; - break; - case 'FF8080': - $colorIdxBg = 0x1D; - break; - case '0066CC': - $colorIdxBg = 0x1E; - break; - case 'CCCCFF': - $colorIdxBg = 0x1F; - break; - case '000080': - $colorIdxBg = 0x20; - break; - case 'FF00FF': - $colorIdxBg = 0x21; - break; - case 'FFFF00': - $colorIdxBg = 0x22; - break; - case '00FFFF': - $colorIdxBg = 0x23; - break; - case '800080': - $colorIdxBg = 0x24; - break; - case '800000': - $colorIdxBg = 0x25; - break; - case '008080': - $colorIdxBg = 0x26; - break; - case '0000FF': - $colorIdxBg = 0x27; - break; - case '00CCFF': - $colorIdxBg = 0x28; - break; - case 'CCFFFF': - $colorIdxBg = 0x29; - break; - case 'CCFFCC': - $colorIdxBg = 0x2A; - break; - case 'FFFF99': - $colorIdxBg = 0x2B; - break; - case '99CCFF': - $colorIdxBg = 0x2C; - break; - case 'FF99CC': - $colorIdxBg = 0x2D; - break; - case 'CC99FF': - $colorIdxBg = 0x2E; - break; - case 'FFCC99': - $colorIdxBg = 0x2F; - break; - case '3366FF': - $colorIdxBg = 0x30; - break; - case '33CCCC': - $colorIdxBg = 0x31; - break; - case '99CC00': - $colorIdxBg = 0x32; - break; - case 'FFCC00': - $colorIdxBg = 0x33; - break; - case 'FF9900': - $colorIdxBg = 0x34; - break; - case 'FF6600': - $colorIdxBg = 0x35; - break; - case '666699': - $colorIdxBg = 0x36; - break; - case '969696': - $colorIdxBg = 0x37; - break; - case '003366': - $colorIdxBg = 0x38; - break; - case '339966': - $colorIdxBg = 0x39; - break; - case '003300': - $colorIdxBg = 0x3A; - break; - case '333300': - $colorIdxBg = 0x3B; - break; - case '993300': - $colorIdxBg = 0x3C; - break; - case '993366': - $colorIdxBg = 0x3D; - break; - case '333399': - $colorIdxBg = 0x3E; - break; - case '333333': - $colorIdxBg = 0x3F; - break; - default: - $colorIdxBg = 0x41; - break; - } - // Fg Color - switch ($conditional->getStyle()->getFill()->getEndColor()->getRGB()) { - case '000000': - $colorIdxFg = 0x08; - break; - case 'FFFFFF': - $colorIdxFg = 0x09; - break; - case 'FF0000': - $colorIdxFg = 0x0A; - break; - case '00FF00': - $colorIdxFg = 0x0B; - break; - case '0000FF': - $colorIdxFg = 0x0C; - break; - case 'FFFF00': - $colorIdxFg = 0x0D; - break; - case 'FF00FF': - $colorIdxFg = 0x0E; - break; - case '00FFFF': - $colorIdxFg = 0x0F; - break; - case '800000': - $colorIdxFg = 0x10; - break; - case '008000': - $colorIdxFg = 0x11; - break; - case '000080': - $colorIdxFg = 0x12; - break; - case '808000': - $colorIdxFg = 0x13; - break; - case '800080': - $colorIdxFg = 0x14; - break; - case '008080': - $colorIdxFg = 0x15; - break; - case 'C0C0C0': - $colorIdxFg = 0x16; - break; - case '808080': - $colorIdxFg = 0x17; - break; - case '9999FF': - $colorIdxFg = 0x18; - break; - case '993366': - $colorIdxFg = 0x19; - break; - case 'FFFFCC': - $colorIdxFg = 0x1A; - break; - case 'CCFFFF': - $colorIdxFg = 0x1B; - break; - case '660066': - $colorIdxFg = 0x1C; - break; - case 'FF8080': - $colorIdxFg = 0x1D; - break; - case '0066CC': - $colorIdxFg = 0x1E; - break; - case 'CCCCFF': - $colorIdxFg = 0x1F; - break; - case '000080': - $colorIdxFg = 0x20; - break; - case 'FF00FF': - $colorIdxFg = 0x21; - break; - case 'FFFF00': - $colorIdxFg = 0x22; - break; - case '00FFFF': - $colorIdxFg = 0x23; - break; - case '800080': - $colorIdxFg = 0x24; - break; - case '800000': - $colorIdxFg = 0x25; - break; - case '008080': - $colorIdxFg = 0x26; - break; - case '0000FF': - $colorIdxFg = 0x27; - break; - case '00CCFF': - $colorIdxFg = 0x28; - break; - case 'CCFFFF': - $colorIdxFg = 0x29; - break; - case 'CCFFCC': - $colorIdxFg = 0x2A; - break; - case 'FFFF99': - $colorIdxFg = 0x2B; - break; - case '99CCFF': - $colorIdxFg = 0x2C; - break; - case 'FF99CC': - $colorIdxFg = 0x2D; - break; - case 'CC99FF': - $colorIdxFg = 0x2E; - break; - case 'FFCC99': - $colorIdxFg = 0x2F; - break; - case '3366FF': - $colorIdxFg = 0x30; - break; - case '33CCCC': - $colorIdxFg = 0x31; - break; - case '99CC00': - $colorIdxFg = 0x32; - break; - case 'FFCC00': - $colorIdxFg = 0x33; - break; - case 'FF9900': - $colorIdxFg = 0x34; - break; - case 'FF6600': - $colorIdxFg = 0x35; - break; - case '666699': - $colorIdxFg = 0x36; - break; - case '969696': - $colorIdxFg = 0x37; - break; - case '003366': - $colorIdxFg = 0x38; - break; - case '339966': - $colorIdxFg = 0x39; - break; - case '003300': - $colorIdxFg = 0x3A; - break; - case '333300': - $colorIdxFg = 0x3B; - break; - case '993300': - $colorIdxFg = 0x3C; - break; - case '993366': - $colorIdxFg = 0x3D; - break; - case '333399': - $colorIdxFg = 0x3E; - break; - case '333333': - $colorIdxFg = 0x3F; - break; - default: - $colorIdxFg = 0x40; - break; - } - $dataBlockFill = pack('v', $blockFillPatternStyle); - $dataBlockFill .= pack('v', $colorIdxFg | ($colorIdxBg << 7)); - } - if ($bFormatProt == 1) { - $dataBlockProtection = 0; - if ($conditional->getStyle()->getProtection()->getLocked() == PHPExcel_Style_Protection::PROTECTION_PROTECTED) { - $dataBlockProtection = 1; - } - if ($conditional->getStyle()->getProtection()->getHidden() == PHPExcel_Style_Protection::PROTECTION_PROTECTED) { - $dataBlockProtection = 1 << 1; - } - } - - $data = pack('CCvvVv', $type, $operatorType, $szValue1, $szValue2, $flags, 0x0000); - if ($bFormatFont == 1) { // Block Formatting : OK - $data .= $dataBlockFont; - } - if ($bFormatAlign == 1) { - $data .= $dataBlockAlign; - } - if ($bFormatBorder == 1) { - $data .= $dataBlockBorder; - } - if ($bFormatFill == 1) { // Block Formatting : OK - $data .= $dataBlockFill; - } - if ($bFormatProt == 1) { - $data .= $dataBlockProtection; - } - if (!is_null($operand1)) { - $data .= $operand1; - } - if (!is_null($operand2)) { - $data .= $operand2; - } - $header = pack('vv', $record, strlen($data)); - $this->append($header . $data); - } - - /** - * Write CFHeader record - */ - private function writeCFHeader() - { - $record = 0x01B0; // Record identifier - $length = 0x0016; // Bytes to follow - - $numColumnMin = null; - $numColumnMax = null; - $numRowMin = null; - $numRowMax = null; - $arrConditional = array(); - foreach ($this->phpSheet->getConditionalStylesCollection() as $cellCoordinate => $conditionalStyles) { - foreach ($conditionalStyles as $conditional) { - if ($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_EXPRESSION - || $conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CELLIS) { - if (!in_array($conditional->getHashCode(), $arrConditional)) { - $arrConditional[] = $conditional->getHashCode(); - } - // Cells - $arrCoord = PHPExcel_Cell::coordinateFromString($cellCoordinate); - if (!is_numeric($arrCoord[0])) { - $arrCoord[0] = PHPExcel_Cell::columnIndexFromString($arrCoord[0]); - } - if (is_null($numColumnMin) || ($numColumnMin > $arrCoord[0])) { - $numColumnMin = $arrCoord[0]; - } - if (is_null($numColumnMax) || ($numColumnMax < $arrCoord[0])) { - $numColumnMax = $arrCoord[0]; - } - if (is_null($numRowMin) || ($numRowMin > $arrCoord[1])) { - $numRowMin = $arrCoord[1]; - } - if (is_null($numRowMax) || ($numRowMax < $arrCoord[1])) { - $numRowMax = $arrCoord[1]; - } - } - } - } - $needRedraw = 1; - $cellRange = pack('vvvv', $numRowMin-1, $numRowMax-1, $numColumnMin-1, $numColumnMax-1); - - $header = pack('vv', $record, $length); - $data = pack('vv', count($arrConditional), $needRedraw); - $data .= $cellRange; - $data .= pack('v', 0x0001); - $data .= $cellRange; - $this->append($header . $data); - } -} diff --git a/application/third_party/PHPExcel/Writer/Excel5/Xf.php b/application/third_party/PHPExcel/Writer/Excel5/Xf.php deleted file mode 100644 index e41589a8..00000000 --- a/application/third_party/PHPExcel/Writer/Excel5/Xf.php +++ /dev/null @@ -1,557 +0,0 @@ -<?php - -/** - * PHPExcel_Writer_Excel5_Xf - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_Excel5 - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -// Original file header of PEAR::Spreadsheet_Excel_Writer_Format (used as the base for this class): -// ----------------------------------------------------------------------------------------- -// /* -// * Module written/ported by Xavier Noguer <xnoguer@rezebra.com> -// * -// * The majority of this is _NOT_ my code. I simply ported it from the -// * PERL Spreadsheet::WriteExcel module. -// * -// * The author of the Spreadsheet::WriteExcel module is John McNamara -// * <jmcnamara@cpan.org> -// * -// * I _DO_ maintain this code, and John McNamara has nothing to do with the -// * porting of this code to PHP. Any questions directly related to this -// * class library should be directed to me. -// * -// * License Information: -// * -// * Spreadsheet_Excel_Writer: A library for generating Excel Spreadsheets -// * Copyright (c) 2002-2003 Xavier Noguer xnoguer@rezebra.com -// * -// * This library is free software; you can redistribute it and/or -// * modify it under the terms of the GNU Lesser General Public -// * License as published by the Free Software Foundation; either -// * version 2.1 of the License, or (at your option) any later version. -// * -// * This library is distributed in the hope that it will be useful, -// * but WITHOUT ANY WARRANTY; without even the implied warranty of -// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// * Lesser General Public License for more details. -// * -// * You should have received a copy of the GNU Lesser General Public -// * License along with this library; if not, write to the Free Software -// * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// */ -class PHPExcel_Writer_Excel5_Xf -{ - /** - * Style XF or a cell XF ? - * - * @var boolean - */ - private $isStyleXf; - - /** - * Index to the FONT record. Index 4 does not exist - * @var integer - */ - private $fontIndex; - - /** - * An index (2 bytes) to a FORMAT record (number format). - * @var integer - */ - private $numberFormatIndex; - - /** - * 1 bit, apparently not used. - * @var integer - */ - private $textJustLast; - - /** - * The cell's foreground color. - * @var integer - */ - private $foregroundColor; - - /** - * The cell's background color. - * @var integer - */ - private $backgroundColor; - - /** - * Color of the bottom border of the cell. - * @var integer - */ - private $bottomBorderColor; - - /** - * Color of the top border of the cell. - * @var integer - */ - private $topBorderColor; - - /** - * Color of the left border of the cell. - * @var integer - */ - private $leftBorderColor; - - /** - * Color of the right border of the cell. - * @var integer - */ - private $rightBorderColor; - - /** - * Constructor - * - * @access public - * @param PHPExcel_Style The XF format - */ - public function __construct(PHPExcel_Style $style = null) - { - $this->isStyleXf = false; - $this->fontIndex = 0; - - $this->numberFormatIndex = 0; - - $this->textJustLast = 0; - - $this->foregroundColor = 0x40; - $this->backgroundColor = 0x41; - - $this->_diag = 0; - - $this->bottomBorderColor = 0x40; - $this->topBorderColor = 0x40; - $this->leftBorderColor = 0x40; - $this->rightBorderColor = 0x40; - $this->_diag_color = 0x40; - $this->_style = $style; - - } - - - /** - * Generate an Excel BIFF XF record (style or cell). - * - * @return string The XF record - */ - public function writeXf() - { - // Set the type of the XF record and some of the attributes. - if ($this->isStyleXf) { - $style = 0xFFF5; - } else { - $style = self::mapLocked($this->_style->getProtection()->getLocked()); - $style |= self::mapHidden($this->_style->getProtection()->getHidden()) << 1; - } - - // Flags to indicate if attributes have been set. - $atr_num = ($this->numberFormatIndex != 0)?1:0; - $atr_fnt = ($this->fontIndex != 0)?1:0; - $atr_alc = ((int) $this->_style->getAlignment()->getWrapText()) ? 1 : 0; - $atr_bdr = (self::mapBorderStyle($this->_style->getBorders()->getBottom()->getBorderStyle()) || - self::mapBorderStyle($this->_style->getBorders()->getTop()->getBorderStyle()) || - self::mapBorderStyle($this->_style->getBorders()->getLeft()->getBorderStyle()) || - self::mapBorderStyle($this->_style->getBorders()->getRight()->getBorderStyle()))?1:0; - $atr_pat = (($this->foregroundColor != 0x40) || - ($this->backgroundColor != 0x41) || - self::mapFillType($this->_style->getFill()->getFillType()))?1:0; - $atr_prot = self::mapLocked($this->_style->getProtection()->getLocked()) - | self::mapHidden($this->_style->getProtection()->getHidden()); - - // Zero the default border colour if the border has not been set. - if (self::mapBorderStyle($this->_style->getBorders()->getBottom()->getBorderStyle()) == 0) { - $this->bottomBorderColor = 0; - } - if (self::mapBorderStyle($this->_style->getBorders()->getTop()->getBorderStyle()) == 0) { - $this->topBorderColor = 0; - } - if (self::mapBorderStyle($this->_style->getBorders()->getRight()->getBorderStyle()) == 0) { - $this->rightBorderColor = 0; - } - if (self::mapBorderStyle($this->_style->getBorders()->getLeft()->getBorderStyle()) == 0) { - $this->leftBorderColor = 0; - } - if (self::mapBorderStyle($this->_style->getBorders()->getDiagonal()->getBorderStyle()) == 0) { - $this->_diag_color = 0; - } - - $record = 0x00E0; // Record identifier - $length = 0x0014; // Number of bytes to follow - - $ifnt = $this->fontIndex; // Index to FONT record - $ifmt = $this->numberFormatIndex; // Index to FORMAT record - - $align = $this->mapHAlign($this->_style->getAlignment()->getHorizontal()); // Alignment - $align |= (int) $this->_style->getAlignment()->getWrapText() << 3; - $align |= self::mapVAlign($this->_style->getAlignment()->getVertical()) << 4; - $align |= $this->textJustLast << 7; - - $used_attrib = $atr_num << 2; - $used_attrib |= $atr_fnt << 3; - $used_attrib |= $atr_alc << 4; - $used_attrib |= $atr_bdr << 5; - $used_attrib |= $atr_pat << 6; - $used_attrib |= $atr_prot << 7; - - $icv = $this->foregroundColor; // fg and bg pattern colors - $icv |= $this->backgroundColor << 7; - - $border1 = self::mapBorderStyle($this->_style->getBorders()->getLeft()->getBorderStyle()); // Border line style and color - $border1 |= self::mapBorderStyle($this->_style->getBorders()->getRight()->getBorderStyle()) << 4; - $border1 |= self::mapBorderStyle($this->_style->getBorders()->getTop()->getBorderStyle()) << 8; - $border1 |= self::mapBorderStyle($this->_style->getBorders()->getBottom()->getBorderStyle()) << 12; - $border1 |= $this->leftBorderColor << 16; - $border1 |= $this->rightBorderColor << 23; - - $diagonalDirection = $this->_style->getBorders()->getDiagonalDirection(); - $diag_tl_to_rb = $diagonalDirection == PHPExcel_Style_Borders::DIAGONAL_BOTH - || $diagonalDirection == PHPExcel_Style_Borders::DIAGONAL_DOWN; - $diag_tr_to_lb = $diagonalDirection == PHPExcel_Style_Borders::DIAGONAL_BOTH - || $diagonalDirection == PHPExcel_Style_Borders::DIAGONAL_UP; - $border1 |= $diag_tl_to_rb << 30; - $border1 |= $diag_tr_to_lb << 31; - - $border2 = $this->topBorderColor; // Border color - $border2 |= $this->bottomBorderColor << 7; - $border2 |= $this->_diag_color << 14; - $border2 |= self::mapBorderStyle($this->_style->getBorders()->getDiagonal()->getBorderStyle()) << 21; - $border2 |= self::mapFillType($this->_style->getFill()->getFillType()) << 26; - - $header = pack("vv", $record, $length); - - //BIFF8 options: identation, shrinkToFit and text direction - $biff8_options = $this->_style->getAlignment()->getIndent(); - $biff8_options |= (int) $this->_style->getAlignment()->getShrinkToFit() << 4; - - $data = pack("vvvC", $ifnt, $ifmt, $style, $align); - $data .= pack("CCC", self::mapTextRotation($this->_style->getAlignment()->getTextRotation()), $biff8_options, $used_attrib); - $data .= pack("VVv", $border1, $border2, $icv); - - return($header . $data); - } - - /** - * Is this a style XF ? - * - * @param boolean $value - */ - public function setIsStyleXf($value) - { - $this->isStyleXf = $value; - } - - /** - * Sets the cell's bottom border color - * - * @access public - * @param int $colorIndex Color index - */ - public function setBottomColor($colorIndex) - { - $this->bottomBorderColor = $colorIndex; - } - - /** - * Sets the cell's top border color - * - * @access public - * @param int $colorIndex Color index - */ - public function setTopColor($colorIndex) - { - $this->topBorderColor = $colorIndex; - } - - /** - * Sets the cell's left border color - * - * @access public - * @param int $colorIndex Color index - */ - public function setLeftColor($colorIndex) - { - $this->leftBorderColor = $colorIndex; - } - - /** - * Sets the cell's right border color - * - * @access public - * @param int $colorIndex Color index - */ - public function setRightColor($colorIndex) - { - $this->rightBorderColor = $colorIndex; - } - - /** - * Sets the cell's diagonal border color - * - * @access public - * @param int $colorIndex Color index - */ - public function setDiagColor($colorIndex) - { - $this->_diag_color = $colorIndex; - } - - - /** - * Sets the cell's foreground color - * - * @access public - * @param int $colorIndex Color index - */ - public function setFgColor($colorIndex) - { - $this->foregroundColor = $colorIndex; - } - - /** - * Sets the cell's background color - * - * @access public - * @param int $colorIndex Color index - */ - public function setBgColor($colorIndex) - { - $this->backgroundColor = $colorIndex; - } - - /** - * Sets the index to the number format record - * It can be date, time, currency, etc... - * - * @access public - * @param integer $numberFormatIndex Index to format record - */ - public function setNumberFormatIndex($numberFormatIndex) - { - $this->numberFormatIndex = $numberFormatIndex; - } - - /** - * Set the font index. - * - * @param int $value Font index, note that value 4 does not exist - */ - public function setFontIndex($value) - { - $this->fontIndex = $value; - } - - /** - * Map of BIFF2-BIFF8 codes for border styles - * @static array of int - * - */ - private static $mapBorderStyles = array( - PHPExcel_Style_Border::BORDER_NONE => 0x00, - PHPExcel_Style_Border::BORDER_THIN => 0x01, - PHPExcel_Style_Border::BORDER_MEDIUM => 0x02, - PHPExcel_Style_Border::BORDER_DASHED => 0x03, - PHPExcel_Style_Border::BORDER_DOTTED => 0x04, - PHPExcel_Style_Border::BORDER_THICK => 0x05, - PHPExcel_Style_Border::BORDER_DOUBLE => 0x06, - PHPExcel_Style_Border::BORDER_HAIR => 0x07, - PHPExcel_Style_Border::BORDER_MEDIUMDASHED => 0x08, - PHPExcel_Style_Border::BORDER_DASHDOT => 0x09, - PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT => 0x0A, - PHPExcel_Style_Border::BORDER_DASHDOTDOT => 0x0B, - PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT => 0x0C, - PHPExcel_Style_Border::BORDER_SLANTDASHDOT => 0x0D, - ); - - /** - * Map border style - * - * @param string $borderStyle - * @return int - */ - private static function mapBorderStyle($borderStyle) - { - if (isset(self::$mapBorderStyles[$borderStyle])) { - return self::$mapBorderStyles[$borderStyle]; - } - return 0x00; - } - - /** - * Map of BIFF2-BIFF8 codes for fill types - * @static array of int - * - */ - private static $mapFillTypes = array( - PHPExcel_Style_Fill::FILL_NONE => 0x00, - PHPExcel_Style_Fill::FILL_SOLID => 0x01, - PHPExcel_Style_Fill::FILL_PATTERN_MEDIUMGRAY => 0x02, - PHPExcel_Style_Fill::FILL_PATTERN_DARKGRAY => 0x03, - PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRAY => 0x04, - PHPExcel_Style_Fill::FILL_PATTERN_DARKHORIZONTAL => 0x05, - PHPExcel_Style_Fill::FILL_PATTERN_DARKVERTICAL => 0x06, - PHPExcel_Style_Fill::FILL_PATTERN_DARKDOWN => 0x07, - PHPExcel_Style_Fill::FILL_PATTERN_DARKUP => 0x08, - PHPExcel_Style_Fill::FILL_PATTERN_DARKGRID => 0x09, - PHPExcel_Style_Fill::FILL_PATTERN_DARKTRELLIS => 0x0A, - PHPExcel_Style_Fill::FILL_PATTERN_LIGHTHORIZONTAL => 0x0B, - PHPExcel_Style_Fill::FILL_PATTERN_LIGHTVERTICAL => 0x0C, - PHPExcel_Style_Fill::FILL_PATTERN_LIGHTDOWN => 0x0D, - PHPExcel_Style_Fill::FILL_PATTERN_LIGHTUP => 0x0E, - PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRID => 0x0F, - PHPExcel_Style_Fill::FILL_PATTERN_LIGHTTRELLIS => 0x10, - PHPExcel_Style_Fill::FILL_PATTERN_GRAY125 => 0x11, - PHPExcel_Style_Fill::FILL_PATTERN_GRAY0625 => 0x12, - PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR => 0x00, // does not exist in BIFF8 - PHPExcel_Style_Fill::FILL_GRADIENT_PATH => 0x00, // does not exist in BIFF8 - ); - - /** - * Map fill type - * - * @param string $fillType - * @return int - */ - private static function mapFillType($fillType) - { - if (isset(self::$mapFillTypes[$fillType])) { - return self::$mapFillTypes[$fillType]; - } - return 0x00; - } - - /** - * Map of BIFF2-BIFF8 codes for horizontal alignment - * @static array of int - * - */ - private static $mapHAlignments = array( - PHPExcel_Style_Alignment::HORIZONTAL_GENERAL => 0, - PHPExcel_Style_Alignment::HORIZONTAL_LEFT => 1, - PHPExcel_Style_Alignment::HORIZONTAL_CENTER => 2, - PHPExcel_Style_Alignment::HORIZONTAL_RIGHT => 3, - PHPExcel_Style_Alignment::HORIZONTAL_FILL => 4, - PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY => 5, - PHPExcel_Style_Alignment::HORIZONTAL_CENTER_CONTINUOUS => 6, - ); - - /** - * Map to BIFF2-BIFF8 codes for horizontal alignment - * - * @param string $hAlign - * @return int - */ - private function mapHAlign($hAlign) - { - if (isset(self::$mapHAlignments[$hAlign])) { - return self::$mapHAlignments[$hAlign]; - } - return 0; - } - - /** - * Map of BIFF2-BIFF8 codes for vertical alignment - * @static array of int - * - */ - private static $mapVAlignments = array( - PHPExcel_Style_Alignment::VERTICAL_TOP => 0, - PHPExcel_Style_Alignment::VERTICAL_CENTER => 1, - PHPExcel_Style_Alignment::VERTICAL_BOTTOM => 2, - PHPExcel_Style_Alignment::VERTICAL_JUSTIFY => 3, - ); - - /** - * Map to BIFF2-BIFF8 codes for vertical alignment - * - * @param string $vAlign - * @return int - */ - private static function mapVAlign($vAlign) - { - if (isset(self::$mapVAlignments[$vAlign])) { - return self::$mapVAlignments[$vAlign]; - } - return 2; - } - - /** - * Map to BIFF8 codes for text rotation angle - * - * @param int $textRotation - * @return int - */ - private static function mapTextRotation($textRotation) - { - if ($textRotation >= 0) { - return $textRotation; - } elseif ($textRotation == -165) { - return 255; - } elseif ($textRotation < 0) { - return 90 - $textRotation; - } - } - - /** - * Map locked - * - * @param string - * @return int - */ - private static function mapLocked($locked) - { - switch ($locked) { - case PHPExcel_Style_Protection::PROTECTION_INHERIT: - return 1; - case PHPExcel_Style_Protection::PROTECTION_PROTECTED: - return 1; - case PHPExcel_Style_Protection::PROTECTION_UNPROTECTED: - return 0; - default: - return 1; - } - } - - /** - * Map hidden - * - * @param string - * @return int - */ - private static function mapHidden($hidden) - { - switch ($hidden) { - case PHPExcel_Style_Protection::PROTECTION_INHERIT: - return 0; - case PHPExcel_Style_Protection::PROTECTION_PROTECTED: - return 1; - case PHPExcel_Style_Protection::PROTECTION_UNPROTECTED: - return 0; - default: - return 0; - } - } -} diff --git a/application/third_party/PHPExcel/Writer/Exception.php b/application/third_party/PHPExcel/Writer/Exception.php deleted file mode 100644 index bfa00568..00000000 --- a/application/third_party/PHPExcel/Writer/Exception.php +++ /dev/null @@ -1,46 +0,0 @@ -<?php - -/** - * PHPExcel_Writer_Exception - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Writer_Exception extends PHPExcel_Exception -{ - /** - * Error handler callback - * - * @param mixed $code - * @param mixed $string - * @param mixed $file - * @param mixed $line - * @param mixed $context - */ - public static function errorHandlerCallback($code, $string, $file, $line, $context) - { - $e = new self($string, $code); - $e->line = $line; - $e->file = $file; - throw $e; - } -} diff --git a/application/third_party/PHPExcel/Writer/HTML.php b/application/third_party/PHPExcel/Writer/HTML.php deleted file mode 100644 index 31d7c63a..00000000 --- a/application/third_party/PHPExcel/Writer/HTML.php +++ /dev/null @@ -1,1612 +0,0 @@ -<?php - -/** - * PHPExcel_Writer_HTML - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_HTML - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Writer_HTML extends PHPExcel_Writer_Abstract implements PHPExcel_Writer_IWriter -{ - /** - * PHPExcel object - * - * @var PHPExcel - */ - protected $phpExcel; - - /** - * Sheet index to write - * - * @var int - */ - private $sheetIndex = 0; - - /** - * Images root - * - * @var string - */ - private $imagesRoot = '.'; - - /** - * embed images, or link to images - * - * @var boolean - */ - private $embedImages = false; - - /** - * Use inline CSS? - * - * @var boolean - */ - private $useInlineCss = false; - - /** - * Array of CSS styles - * - * @var array - */ - private $cssStyles; - - /** - * Array of column widths in points - * - * @var array - */ - private $columnWidths; - - /** - * Default font - * - * @var PHPExcel_Style_Font - */ - private $defaultFont; - - /** - * Flag whether spans have been calculated - * - * @var boolean - */ - private $spansAreCalculated = false; - - /** - * Excel cells that should not be written as HTML cells - * - * @var array - */ - private $isSpannedCell = array(); - - /** - * Excel cells that are upper-left corner in a cell merge - * - * @var array - */ - private $isBaseCell = array(); - - /** - * Excel rows that should not be written as HTML rows - * - * @var array - */ - private $isSpannedRow = array(); - - /** - * Is the current writer creating PDF? - * - * @var boolean - */ - protected $isPdf = false; - - /** - * Generate the Navigation block - * - * @var boolean - */ - private $generateSheetNavigationBlock = true; - - /** - * Create a new PHPExcel_Writer_HTML - * - * @param PHPExcel $phpExcel PHPExcel object - */ - public function __construct(PHPExcel $phpExcel) - { - $this->phpExcel = $phpExcel; - $this->defaultFont = $this->phpExcel->getDefaultStyle()->getFont(); - } - - /** - * Save PHPExcel to file - * - * @param string $pFilename - * @throws PHPExcel_Writer_Exception - */ - public function save($pFilename = null) - { - // garbage collect - $this->phpExcel->garbageCollect(); - - $saveDebugLog = PHPExcel_Calculation::getInstance($this->phpExcel)->getDebugLog()->getWriteDebugLog(); - PHPExcel_Calculation::getInstance($this->phpExcel)->getDebugLog()->setWriteDebugLog(false); - $saveArrayReturnType = PHPExcel_Calculation::getArrayReturnType(); - PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE); - - // Build CSS - $this->buildCSS(!$this->useInlineCss); - - // Open file - $fileHandle = fopen($pFilename, 'wb+'); - if ($fileHandle === false) { - throw new PHPExcel_Writer_Exception("Could not open file $pFilename for writing."); - } - - // Write headers - fwrite($fileHandle, $this->generateHTMLHeader(!$this->useInlineCss)); - - // Write navigation (tabs) - if ((!$this->isPdf) && ($this->generateSheetNavigationBlock)) { - fwrite($fileHandle, $this->generateNavigation()); - } - - // Write data - fwrite($fileHandle, $this->generateSheetData()); - - // Write footer - fwrite($fileHandle, $this->generateHTMLFooter()); - - // Close file - fclose($fileHandle); - - PHPExcel_Calculation::setArrayReturnType($saveArrayReturnType); - PHPExcel_Calculation::getInstance($this->phpExcel)->getDebugLog()->setWriteDebugLog($saveDebugLog); - } - - /** - * Map VAlign - * - * @param string $vAlign Vertical alignment - * @return string - */ - private function mapVAlign($vAlign) - { - switch ($vAlign) { - case PHPExcel_Style_Alignment::VERTICAL_BOTTOM: - return 'bottom'; - case PHPExcel_Style_Alignment::VERTICAL_TOP: - return 'top'; - case PHPExcel_Style_Alignment::VERTICAL_CENTER: - case PHPExcel_Style_Alignment::VERTICAL_JUSTIFY: - return 'middle'; - default: - return 'baseline'; - } - } - - /** - * Map HAlign - * - * @param string $hAlign Horizontal alignment - * @return string|false - */ - private function mapHAlign($hAlign) - { - switch ($hAlign) { - case PHPExcel_Style_Alignment::HORIZONTAL_GENERAL: - return false; - case PHPExcel_Style_Alignment::HORIZONTAL_LEFT: - return 'left'; - case PHPExcel_Style_Alignment::HORIZONTAL_RIGHT: - return 'right'; - case PHPExcel_Style_Alignment::HORIZONTAL_CENTER: - case PHPExcel_Style_Alignment::HORIZONTAL_CENTER_CONTINUOUS: - return 'center'; - case PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY: - return 'justify'; - default: - return false; - } - } - - /** - * Map border style - * - * @param int $borderStyle Sheet index - * @return string - */ - private function mapBorderStyle($borderStyle) - { - switch ($borderStyle) { - case PHPExcel_Style_Border::BORDER_NONE: - return 'none'; - case PHPExcel_Style_Border::BORDER_DASHDOT: - return '1px dashed'; - case PHPExcel_Style_Border::BORDER_DASHDOTDOT: - return '1px dotted'; - case PHPExcel_Style_Border::BORDER_DASHED: - return '1px dashed'; - case PHPExcel_Style_Border::BORDER_DOTTED: - return '1px dotted'; - case PHPExcel_Style_Border::BORDER_DOUBLE: - return '3px double'; - case PHPExcel_Style_Border::BORDER_HAIR: - return '1px solid'; - case PHPExcel_Style_Border::BORDER_MEDIUM: - return '2px solid'; - case PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT: - return '2px dashed'; - case PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT: - return '2px dotted'; - case PHPExcel_Style_Border::BORDER_MEDIUMDASHED: - return '2px dashed'; - case PHPExcel_Style_Border::BORDER_SLANTDASHDOT: - return '2px dashed'; - case PHPExcel_Style_Border::BORDER_THICK: - return '3px solid'; - case PHPExcel_Style_Border::BORDER_THIN: - return '1px solid'; - default: - // map others to thin - return '1px solid'; - } - } - - /** - * Get sheet index - * - * @return int - */ - public function getSheetIndex() - { - return $this->sheetIndex; - } - - /** - * Set sheet index - * - * @param int $pValue Sheet index - * @return PHPExcel_Writer_HTML - */ - public function setSheetIndex($pValue = 0) - { - $this->sheetIndex = $pValue; - return $this; - } - - /** - * Get sheet index - * - * @return boolean - */ - public function getGenerateSheetNavigationBlock() - { - return $this->generateSheetNavigationBlock; - } - - /** - * Set sheet index - * - * @param boolean $pValue Flag indicating whether the sheet navigation block should be generated or not - * @return PHPExcel_Writer_HTML - */ - public function setGenerateSheetNavigationBlock($pValue = true) - { - $this->generateSheetNavigationBlock = (bool) $pValue; - return $this; - } - - /** - * Write all sheets (resets sheetIndex to NULL) - */ - public function writeAllSheets() - { - $this->sheetIndex = null; - return $this; - } - - /** - * Generate HTML header - * - * @param boolean $pIncludeStyles Include styles? - * @return string - * @throws PHPExcel_Writer_Exception - */ - public function generateHTMLHeader($pIncludeStyles = false) - { - // PHPExcel object known? - if (is_null($this->phpExcel)) { - throw new PHPExcel_Writer_Exception('Internal PHPExcel object not set to an instance of an object.'); - } - - // Construct HTML - $properties = $this->phpExcel->getProperties(); - $html = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">' . PHP_EOL; - $html .= '<!-- Generated by PHPExcel - http://www.phpexcel.net -->' . PHP_EOL; - $html .= '<html>' . PHP_EOL; - $html .= ' <head>' . PHP_EOL; - $html .= ' <meta http-equiv="Content-Type" content="text/html; charset=utf-8">' . PHP_EOL; - if ($properties->getTitle() > '') { - $html .= ' <title>' . htmlspecialchars($properties->getTitle()) . '</title>' . PHP_EOL; - } - if ($properties->getCreator() > '') { - $html .= ' <meta name="author" content="' . htmlspecialchars($properties->getCreator()) . '" />' . PHP_EOL; - } - if ($properties->getTitle() > '') { - $html .= ' <meta name="title" content="' . htmlspecialchars($properties->getTitle()) . '" />' . PHP_EOL; - } - if ($properties->getDescription() > '') { - $html .= ' <meta name="description" content="' . htmlspecialchars($properties->getDescription()) . '" />' . PHP_EOL; - } - if ($properties->getSubject() > '') { - $html .= ' <meta name="subject" content="' . htmlspecialchars($properties->getSubject()) . '" />' . PHP_EOL; - } - if ($properties->getKeywords() > '') { - $html .= ' <meta name="keywords" content="' . htmlspecialchars($properties->getKeywords()) . '" />' . PHP_EOL; - } - if ($properties->getCategory() > '') { - $html .= ' <meta name="category" content="' . htmlspecialchars($properties->getCategory()) . '" />' . PHP_EOL; - } - if ($properties->getCompany() > '') { - $html .= ' <meta name="company" content="' . htmlspecialchars($properties->getCompany()) . '" />' . PHP_EOL; - } - if ($properties->getManager() > '') { - $html .= ' <meta name="manager" content="' . htmlspecialchars($properties->getManager()) . '" />' . PHP_EOL; - } - - if ($pIncludeStyles) { - $html .= $this->generateStyles(true); - } - - $html .= ' </head>' . PHP_EOL; - $html .= '' . PHP_EOL; - $html .= ' <body>' . PHP_EOL; - - return $html; - } - - /** - * Generate sheet data - * - * @return string - * @throws PHPExcel_Writer_Exception - */ - public function generateSheetData() - { - // PHPExcel object known? - if (is_null($this->phpExcel)) { - throw new PHPExcel_Writer_Exception('Internal PHPExcel object not set to an instance of an object.'); - } - - // Ensure that Spans have been calculated? - if ($this->sheetIndex !== null || !$this->spansAreCalculated) { - $this->calculateSpans(); - } - - // Fetch sheets - $sheets = array(); - if (is_null($this->sheetIndex)) { - $sheets = $this->phpExcel->getAllSheets(); - } else { - $sheets[] = $this->phpExcel->getSheet($this->sheetIndex); - } - - // Construct HTML - $html = ''; - - // Loop all sheets - $sheetId = 0; - foreach ($sheets as $sheet) { - // Write table header - $html .= $this->generateTableHeader($sheet); - - // Get worksheet dimension - $dimension = explode(':', $sheet->calculateWorksheetDimension()); - $dimension[0] = PHPExcel_Cell::coordinateFromString($dimension[0]); - $dimension[0][0] = PHPExcel_Cell::columnIndexFromString($dimension[0][0]) - 1; - $dimension[1] = PHPExcel_Cell::coordinateFromString($dimension[1]); - $dimension[1][0] = PHPExcel_Cell::columnIndexFromString($dimension[1][0]) - 1; - - // row min,max - $rowMin = $dimension[0][1]; - $rowMax = $dimension[1][1]; - - // calculate start of <tbody>, <thead> - $tbodyStart = $rowMin; - $theadStart = $theadEnd = 0; // default: no <thead> no </thead> - if ($sheet->getPageSetup()->isRowsToRepeatAtTopSet()) { - $rowsToRepeatAtTop = $sheet->getPageSetup()->getRowsToRepeatAtTop(); - - // we can only support repeating rows that start at top row - if ($rowsToRepeatAtTop[0] == 1) { - $theadStart = $rowsToRepeatAtTop[0]; - $theadEnd = $rowsToRepeatAtTop[1]; - $tbodyStart = $rowsToRepeatAtTop[1] + 1; - } - } - - // Loop through cells - $row = $rowMin-1; - while ($row++ < $rowMax) { - // <thead> ? - if ($row == $theadStart) { - $html .= ' <thead>' . PHP_EOL; - $cellType = 'th'; - } - - // <tbody> ? - if ($row == $tbodyStart) { - $html .= ' <tbody>' . PHP_EOL; - $cellType = 'td'; - } - - // Write row if there are HTML table cells in it - if (!isset($this->isSpannedRow[$sheet->getParent()->getIndex($sheet)][$row])) { - // Start a new rowData - $rowData = array(); - // Loop through columns - $column = $dimension[0][0] - 1; - while ($column++ < $dimension[1][0]) { - // Cell exists? - if ($sheet->cellExistsByColumnAndRow($column, $row)) { - $rowData[$column] = PHPExcel_Cell::stringFromColumnIndex($column) . $row; - } else { - $rowData[$column] = ''; - } - } - $html .= $this->generateRow($sheet, $rowData, $row - 1, $cellType); - } - - // </thead> ? - if ($row == $theadEnd) { - $html .= ' </thead>' . PHP_EOL; - } - } - $html .= $this->extendRowsForChartsAndImages($sheet, $row); - - // Close table body. - $html .= ' </tbody>' . PHP_EOL; - - // Write table footer - $html .= $this->generateTableFooter(); - - // Writing PDF? - if ($this->isPdf) { - if (is_null($this->sheetIndex) && $sheetId + 1 < $this->phpExcel->getSheetCount()) { - $html .= '<div style="page-break-before:always" />'; - } - } - - // Next sheet - ++$sheetId; - } - - return $html; - } - - /** - * Generate sheet tabs - * - * @return string - * @throws PHPExcel_Writer_Exception - */ - public function generateNavigation() - { - // PHPExcel object known? - if (is_null($this->phpExcel)) { - throw new PHPExcel_Writer_Exception('Internal PHPExcel object not set to an instance of an object.'); - } - - // Fetch sheets - $sheets = array(); - if (is_null($this->sheetIndex)) { - $sheets = $this->phpExcel->getAllSheets(); - } else { - $sheets[] = $this->phpExcel->getSheet($this->sheetIndex); - } - - // Construct HTML - $html = ''; - - // Only if there are more than 1 sheets - if (count($sheets) > 1) { - // Loop all sheets - $sheetId = 0; - - $html .= '<ul class="navigation">' . PHP_EOL; - - foreach ($sheets as $sheet) { - $html .= ' <li class="sheet' . $sheetId . '"><a href="#sheet' . $sheetId . '">' . $sheet->getTitle() . '</a></li>' . PHP_EOL; - ++$sheetId; - } - - $html .= '</ul>' . PHP_EOL; - } - - return $html; - } - - private function extendRowsForChartsAndImages(PHPExcel_Worksheet $pSheet, $row) - { - $rowMax = $row; - $colMax = 'A'; - if ($this->includeCharts) { - foreach ($pSheet->getChartCollection() as $chart) { - if ($chart instanceof PHPExcel_Chart) { - $chartCoordinates = $chart->getTopLeftPosition(); - $chartTL = PHPExcel_Cell::coordinateFromString($chartCoordinates['cell']); - $chartCol = PHPExcel_Cell::columnIndexFromString($chartTL[0]); - if ($chartTL[1] > $rowMax) { - $rowMax = $chartTL[1]; - if ($chartCol > PHPExcel_Cell::columnIndexFromString($colMax)) { - $colMax = $chartTL[0]; - } - } - } - } - } - - foreach ($pSheet->getDrawingCollection() as $drawing) { - if ($drawing instanceof PHPExcel_Worksheet_Drawing) { - $imageTL = PHPExcel_Cell::coordinateFromString($drawing->getCoordinates()); - $imageCol = PHPExcel_Cell::columnIndexFromString($imageTL[0]); - if ($imageTL[1] > $rowMax) { - $rowMax = $imageTL[1]; - if ($imageCol > PHPExcel_Cell::columnIndexFromString($colMax)) { - $colMax = $imageTL[0]; - } - } - } - } - - $html = ''; - $colMax++; - while ($row <= $rowMax) { - $html .= '<tr>'; - for ($col = 'A'; $col != $colMax; ++$col) { - $html .= '<td>'; - $html .= $this->writeImageInCell($pSheet, $col.$row); - if ($this->includeCharts) { - $html .= $this->writeChartInCell($pSheet, $col.$row); - } - $html .= '</td>'; - } - ++$row; - $html .= '</tr>'; - } - return $html; - } - - - /** - * Generate image tag in cell - * - * @param PHPExcel_Worksheet $pSheet PHPExcel_Worksheet - * @param string $coordinates Cell coordinates - * @return string - * @throws PHPExcel_Writer_Exception - */ - private function writeImageInCell(PHPExcel_Worksheet $pSheet, $coordinates) - { - // Construct HTML - $html = ''; - - // Write images - foreach ($pSheet->getDrawingCollection() as $drawing) { - if ($drawing instanceof PHPExcel_Worksheet_Drawing) { - if ($drawing->getCoordinates() == $coordinates) { - $filename = $drawing->getPath(); - - // Strip off eventual '.' - if (substr($filename, 0, 1) == '.') { - $filename = substr($filename, 1); - } - - // Prepend images root - $filename = $this->getImagesRoot() . $filename; - - // Strip off eventual '.' - if (substr($filename, 0, 1) == '.' && substr($filename, 0, 2) != './') { - $filename = substr($filename, 1); - } - - // Convert UTF8 data to PCDATA - $filename = htmlspecialchars($filename); - - $html .= PHP_EOL; - if ((!$this->embedImages) || ($this->isPdf)) { - $imageData = $filename; - } else { - $imageDetails = getimagesize($filename); - if ($fp = fopen($filename, "rb", 0)) { - $picture = fread($fp, filesize($filename)); - fclose($fp); - // base64 encode the binary data, then break it - // into chunks according to RFC 2045 semantics - $base64 = chunk_split(base64_encode($picture)); - $imageData = 'data:'.$imageDetails['mime'].';base64,' . $base64; - } else { - $imageData = $filename; - } - } - - $html .= '<div style="position: relative;">'; - $html .= '<img style="position: absolute; z-index: 1; left: ' . - $drawing->getOffsetX() . 'px; top: ' . $drawing->getOffsetY() . 'px; width: ' . - $drawing->getWidth() . 'px; height: ' . $drawing->getHeight() . 'px;" src="' . - $imageData . '" border="0" />'; - $html .= '</div>'; - } - } elseif ($drawing instanceof PHPExcel_Worksheet_MemoryDrawing) { - if ($drawing->getCoordinates() != $coordinates) { - continue; - } - ob_start(); // Let's start output buffering. - imagepng($drawing->getImageResource()); // This will normally output the image, but because of ob_start(), it won't. - $contents = ob_get_contents(); // Instead, output above is saved to $contents - ob_end_clean(); // End the output buffer. - - $dataUri = "data:image/jpeg;base64," . base64_encode($contents); - - // Because of the nature of tables, width is more important than height. - // max-width: 100% ensures that image doesnt overflow containing cell - // width: X sets width of supplied image. - // As a result, images bigger than cell will be contained and images smaller will not get stretched - $html .= '<img src="'.$dataUri.'" style="max-width:100%;width:'.$drawing->getWidth().'px;" />'; - } - } - - return $html; - } - - /** - * Generate chart tag in cell - * - * @param PHPExcel_Worksheet $pSheet PHPExcel_Worksheet - * @param string $coordinates Cell coordinates - * @return string - * @throws PHPExcel_Writer_Exception - */ - private function writeChartInCell(PHPExcel_Worksheet $pSheet, $coordinates) - { - // Construct HTML - $html = ''; - - // Write charts - foreach ($pSheet->getChartCollection() as $chart) { - if ($chart instanceof PHPExcel_Chart) { - $chartCoordinates = $chart->getTopLeftPosition(); - if ($chartCoordinates['cell'] == $coordinates) { - $chartFileName = PHPExcel_Shared_File::sys_get_temp_dir().'/'.uniqid().'.png'; - if (!$chart->render($chartFileName)) { - return; - } - - $html .= PHP_EOL; - $imageDetails = getimagesize($chartFileName); - if ($fp = fopen($chartFileName, "rb", 0)) { - $picture = fread($fp, filesize($chartFileName)); - fclose($fp); - // base64 encode the binary data, then break it - // into chunks according to RFC 2045 semantics - $base64 = chunk_split(base64_encode($picture)); - $imageData = 'data:'.$imageDetails['mime'].';base64,' . $base64; - - $html .= '<div style="position: relative;">'; - $html .= '<img style="position: absolute; z-index: 1; left: ' . $chartCoordinates['xOffset'] . 'px; top: ' . $chartCoordinates['yOffset'] . 'px; width: ' . $imageDetails[0] . 'px; height: ' . $imageDetails[1] . 'px;" src="' . $imageData . '" border="0" />' . PHP_EOL; - $html .= '</div>'; - - unlink($chartFileName); - } - } - } - } - - // Return - return $html; - } - - /** - * Generate CSS styles - * - * @param boolean $generateSurroundingHTML Generate surrounding HTML tags? (&lt;style&gt; and &lt;/style&gt;) - * @return string - * @throws PHPExcel_Writer_Exception - */ - public function generateStyles($generateSurroundingHTML = true) - { - // PHPExcel object known? - if (is_null($this->phpExcel)) { - throw new PHPExcel_Writer_Exception('Internal PHPExcel object not set to an instance of an object.'); - } - - // Build CSS - $css = $this->buildCSS($generateSurroundingHTML); - - // Construct HTML - $html = ''; - - // Start styles - if ($generateSurroundingHTML) { - $html .= ' <style type="text/css">' . PHP_EOL; - $html .= ' html { ' . $this->assembleCSS($css['html']) . ' }' . PHP_EOL; - } - - // Write all other styles - foreach ($css as $styleName => $styleDefinition) { - if ($styleName != 'html') { - $html .= ' ' . $styleName . ' { ' . $this->assembleCSS($styleDefinition) . ' }' . PHP_EOL; - } - } - - // End styles - if ($generateSurroundingHTML) { - $html .= ' </style>' . PHP_EOL; - } - - // Return - return $html; - } - - /** - * Build CSS styles - * - * @param boolean $generateSurroundingHTML Generate surrounding HTML style? (html { }) - * @return array - * @throws PHPExcel_Writer_Exception - */ - public function buildCSS($generateSurroundingHTML = true) - { - // PHPExcel object known? - if (is_null($this->phpExcel)) { - throw new PHPExcel_Writer_Exception('Internal PHPExcel object not set to an instance of an object.'); - } - - // Cached? - if (!is_null($this->cssStyles)) { - return $this->cssStyles; - } - - // Ensure that spans have been calculated - if (!$this->spansAreCalculated) { - $this->calculateSpans(); - } - - // Construct CSS - $css = array(); - - // Start styles - if ($generateSurroundingHTML) { - // html { } - $css['html']['font-family'] = 'Calibri, Arial, Helvetica, sans-serif'; - $css['html']['font-size'] = '11pt'; - $css['html']['background-color'] = 'white'; - } - - - // table { } - $css['table']['border-collapse'] = 'collapse'; - if (!$this->isPdf) { - $css['table']['page-break-after'] = 'always'; - } - - // .gridlines td { } - $css['.gridlines td']['border'] = '1px dotted black'; - $css['.gridlines th']['border'] = '1px dotted black'; - - // .b {} - $css['.b']['text-align'] = 'center'; // BOOL - - // .e {} - $css['.e']['text-align'] = 'center'; // ERROR - - // .f {} - $css['.f']['text-align'] = 'right'; // FORMULA - - // .inlineStr {} - $css['.inlineStr']['text-align'] = 'left'; // INLINE - - // .n {} - $css['.n']['text-align'] = 'right'; // NUMERIC - - // .s {} - $css['.s']['text-align'] = 'left'; // STRING - - // Calculate cell style hashes - foreach ($this->phpExcel->getCellXfCollection() as $index => $style) { - $css['td.style' . $index] = $this->createCSSStyle($style); - $css['th.style' . $index] = $this->createCSSStyle($style); - } - - // Fetch sheets - $sheets = array(); - if (is_null($this->sheetIndex)) { - $sheets = $this->phpExcel->getAllSheets(); - } else { - $sheets[] = $this->phpExcel->getSheet($this->sheetIndex); - } - - // Build styles per sheet - foreach ($sheets as $sheet) { - // Calculate hash code - $sheetIndex = $sheet->getParent()->getIndex($sheet); - - // Build styles - // Calculate column widths - $sheet->calculateColumnWidths(); - - // col elements, initialize - $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($sheet->getHighestColumn()) - 1; - $column = -1; - while ($column++ < $highestColumnIndex) { - $this->columnWidths[$sheetIndex][$column] = 42; // approximation - $css['table.sheet' . $sheetIndex . ' col.col' . $column]['width'] = '42pt'; - } - - // col elements, loop through columnDimensions and set width - foreach ($sheet->getColumnDimensions() as $columnDimension) { - if (($width = PHPExcel_Shared_Drawing::cellDimensionToPixels($columnDimension->getWidth(), $this->defaultFont)) >= 0) { - $width = PHPExcel_Shared_Drawing::pixelsToPoints($width); - $column = PHPExcel_Cell::columnIndexFromString($columnDimension->getColumnIndex()) - 1; - $this->columnWidths[$sheetIndex][$column] = $width; - $css['table.sheet' . $sheetIndex . ' col.col' . $column]['width'] = $width . 'pt'; - - if ($columnDimension->getVisible() === false) { - $css['table.sheet' . $sheetIndex . ' col.col' . $column]['visibility'] = 'collapse'; - $css['table.sheet' . $sheetIndex . ' col.col' . $column]['*display'] = 'none'; // target IE6+7 - } - } - } - - // Default row height - $rowDimension = $sheet->getDefaultRowDimension(); - - // table.sheetN tr { } - $css['table.sheet' . $sheetIndex . ' tr'] = array(); - - if ($rowDimension->getRowHeight() == -1) { - $pt_height = PHPExcel_Shared_Font::getDefaultRowHeightByFont($this->phpExcel->getDefaultStyle()->getFont()); - } else { - $pt_height = $rowDimension->getRowHeight(); - } - $css['table.sheet' . $sheetIndex . ' tr']['height'] = $pt_height . 'pt'; - if ($rowDimension->getVisible() === false) { - $css['table.sheet' . $sheetIndex . ' tr']['display'] = 'none'; - $css['table.sheet' . $sheetIndex . ' tr']['visibility'] = 'hidden'; - } - - // Calculate row heights - foreach ($sheet->getRowDimensions() as $rowDimension) { - $row = $rowDimension->getRowIndex() - 1; - - // table.sheetN tr.rowYYYYYY { } - $css['table.sheet' . $sheetIndex . ' tr.row' . $row] = array(); - - if ($rowDimension->getRowHeight() == -1) { - $pt_height = PHPExcel_Shared_Font::getDefaultRowHeightByFont($this->phpExcel->getDefaultStyle()->getFont()); - } else { - $pt_height = $rowDimension->getRowHeight(); - } - $css['table.sheet' . $sheetIndex . ' tr.row' . $row]['height'] = $pt_height . 'pt'; - if ($rowDimension->getVisible() === false) { - $css['table.sheet' . $sheetIndex . ' tr.row' . $row]['display'] = 'none'; - $css['table.sheet' . $sheetIndex . ' tr.row' . $row]['visibility'] = 'hidden'; - } - } - } - - // Cache - if (is_null($this->cssStyles)) { - $this->cssStyles = $css; - } - - // Return - return $css; - } - - /** - * Create CSS style - * - * @param PHPExcel_Style $pStyle PHPExcel_Style - * @return array - */ - private function createCSSStyle(PHPExcel_Style $pStyle) - { - // Construct CSS - $css = ''; - - // Create CSS - $css = array_merge( - $this->createCSSStyleAlignment($pStyle->getAlignment()), - $this->createCSSStyleBorders($pStyle->getBorders()), - $this->createCSSStyleFont($pStyle->getFont()), - $this->createCSSStyleFill($pStyle->getFill()) - ); - - // Return - return $css; - } - - /** - * Create CSS style (PHPExcel_Style_Alignment) - * - * @param PHPExcel_Style_Alignment $pStyle PHPExcel_Style_Alignment - * @return array - */ - private function createCSSStyleAlignment(PHPExcel_Style_Alignment $pStyle) - { - // Construct CSS - $css = array(); - - // Create CSS - $css['vertical-align'] = $this->mapVAlign($pStyle->getVertical()); - if ($textAlign = $this->mapHAlign($pStyle->getHorizontal())) { - $css['text-align'] = $textAlign; - if (in_array($textAlign, array('left', 'right'))) { - $css['padding-'.$textAlign] = (string)((int)$pStyle->getIndent() * 9).'px'; - } - } - - return $css; - } - - /** - * Create CSS style (PHPExcel_Style_Font) - * - * @param PHPExcel_Style_Font $pStyle PHPExcel_Style_Font - * @return array - */ - private function createCSSStyleFont(PHPExcel_Style_Font $pStyle) - { - // Construct CSS - $css = array(); - - // Create CSS - if ($pStyle->getBold()) { - $css['font-weight'] = 'bold'; - } - if ($pStyle->getUnderline() != PHPExcel_Style_Font::UNDERLINE_NONE && $pStyle->getStrikethrough()) { - $css['text-decoration'] = 'underline line-through'; - } elseif ($pStyle->getUnderline() != PHPExcel_Style_Font::UNDERLINE_NONE) { - $css['text-decoration'] = 'underline'; - } elseif ($pStyle->getStrikethrough()) { - $css['text-decoration'] = 'line-through'; - } - if ($pStyle->getItalic()) { - $css['font-style'] = 'italic'; - } - - $css['color'] = '#' . $pStyle->getColor()->getRGB(); - $css['font-family'] = '\'' . $pStyle->getName() . '\''; - $css['font-size'] = $pStyle->getSize() . 'pt'; - - return $css; - } - - /** - * Create CSS style (PHPExcel_Style_Borders) - * - * @param PHPExcel_Style_Borders $pStyle PHPExcel_Style_Borders - * @return array - */ - private function createCSSStyleBorders(PHPExcel_Style_Borders $pStyle) - { - // Construct CSS - $css = array(); - - // Create CSS - $css['border-bottom'] = $this->createCSSStyleBorder($pStyle->getBottom()); - $css['border-top'] = $this->createCSSStyleBorder($pStyle->getTop()); - $css['border-left'] = $this->createCSSStyleBorder($pStyle->getLeft()); - $css['border-right'] = $this->createCSSStyleBorder($pStyle->getRight()); - - return $css; - } - - /** - * Create CSS style (PHPExcel_Style_Border) - * - * @param PHPExcel_Style_Border $pStyle PHPExcel_Style_Border - * @return string - */ - private function createCSSStyleBorder(PHPExcel_Style_Border $pStyle) - { - // Create CSS -// $css = $this->mapBorderStyle($pStyle->getBorderStyle()) . ' #' . $pStyle->getColor()->getRGB(); - // Create CSS - add !important to non-none border styles for merged cells - $borderStyle = $this->mapBorderStyle($pStyle->getBorderStyle()); - $css = $borderStyle . ' #' . $pStyle->getColor()->getRGB() . (($borderStyle == 'none') ? '' : ' !important'); - - return $css; - } - - /** - * Create CSS style (PHPExcel_Style_Fill) - * - * @param PHPExcel_Style_Fill $pStyle PHPExcel_Style_Fill - * @return array - */ - private function createCSSStyleFill(PHPExcel_Style_Fill $pStyle) - { - // Construct HTML - $css = array(); - - // Create CSS - $value = $pStyle->getFillType() == PHPExcel_Style_Fill::FILL_NONE ? - 'white' : '#' . $pStyle->getStartColor()->getRGB(); - $css['background-color'] = $value; - - return $css; - } - - /** - * Generate HTML footer - */ - public function generateHTMLFooter() - { - // Construct HTML - $html = ''; - $html .= ' </body>' . PHP_EOL; - $html .= '</html>' . PHP_EOL; - - return $html; - } - - /** - * Generate table header - * - * @param PHPExcel_Worksheet $pSheet The worksheet for the table we are writing - * @return string - * @throws PHPExcel_Writer_Exception - */ - private function generateTableHeader($pSheet) - { - $sheetIndex = $pSheet->getParent()->getIndex($pSheet); - - // Construct HTML - $html = ''; - $html .= $this->setMargins($pSheet); - - if (!$this->useInlineCss) { - $gridlines = $pSheet->getShowGridlines() ? ' gridlines' : ''; - $html .= ' <table border="0" cellpadding="0" cellspacing="0" id="sheet' . $sheetIndex . '" class="sheet' . $sheetIndex . $gridlines . '">' . PHP_EOL; - } else { - $style = isset($this->cssStyles['table']) ? - $this->assembleCSS($this->cssStyles['table']) : ''; - - if ($this->isPdf && $pSheet->getShowGridlines()) { - $html .= ' <table border="1" cellpadding="1" id="sheet' . $sheetIndex . '" cellspacing="1" style="' . $style . '">' . PHP_EOL; - } else { - $html .= ' <table border="0" cellpadding="1" id="sheet' . $sheetIndex . '" cellspacing="0" style="' . $style . '">' . PHP_EOL; - } - } - - // Write <col> elements - $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($pSheet->getHighestColumn()) - 1; - $i = -1; - while ($i++ < $highestColumnIndex) { - if (!$this->isPdf) { - if (!$this->useInlineCss) { - $html .= ' <col class="col' . $i . '">' . PHP_EOL; - } else { - $style = isset($this->cssStyles['table.sheet' . $sheetIndex . ' col.col' . $i]) ? - $this->assembleCSS($this->cssStyles['table.sheet' . $sheetIndex . ' col.col' . $i]) : ''; - $html .= ' <col style="' . $style . '">' . PHP_EOL; - } - } - } - - return $html; - } - - /** - * Generate table footer - * - * @throws PHPExcel_Writer_Exception - */ - private function generateTableFooter() - { - $html = ' </table>' . PHP_EOL; - - return $html; - } - - /** - * Generate row - * - * @param PHPExcel_Worksheet $pSheet PHPExcel_Worksheet - * @param array $pValues Array containing cells in a row - * @param int $pRow Row number (0-based) - * @return string - * @throws PHPExcel_Writer_Exception - */ - private function generateRow(PHPExcel_Worksheet $pSheet, $pValues = null, $pRow = 0, $cellType = 'td') - { - if (is_array($pValues)) { - // Construct HTML - $html = ''; - - // Sheet index - $sheetIndex = $pSheet->getParent()->getIndex($pSheet); - - // DomPDF and breaks - if ($this->isPdf && count($pSheet->getBreaks()) > 0) { - $breaks = $pSheet->getBreaks(); - - // check if a break is needed before this row - if (isset($breaks['A' . $pRow])) { - // close table: </table> - $html .= $this->generateTableFooter(); - - // insert page break - $html .= '<div style="page-break-before:always" />'; - - // open table again: <table> + <col> etc. - $html .= $this->generateTableHeader($pSheet); - } - } - - // Write row start - if (!$this->useInlineCss) { - $html .= ' <tr class="row' . $pRow . '">' . PHP_EOL; - } else { - $style = isset($this->cssStyles['table.sheet' . $sheetIndex . ' tr.row' . $pRow]) - ? $this->assembleCSS($this->cssStyles['table.sheet' . $sheetIndex . ' tr.row' . $pRow]) : ''; - - $html .= ' <tr style="' . $style . '">' . PHP_EOL; - } - - // Write cells - $colNum = 0; - foreach ($pValues as $cellAddress) { - $cell = ($cellAddress > '') ? $pSheet->getCell($cellAddress) : ''; - $coordinate = PHPExcel_Cell::stringFromColumnIndex($colNum) . ($pRow + 1); - if (!$this->useInlineCss) { - $cssClass = ''; - $cssClass = 'column' . $colNum; - } else { - $cssClass = array(); - if ($cellType == 'th') { - if (isset($this->cssStyles['table.sheet' . $sheetIndex . ' th.column' . $colNum])) { - $this->cssStyles['table.sheet' . $sheetIndex . ' th.column' . $colNum]; - } - } else { - if (isset($this->cssStyles['table.sheet' . $sheetIndex . ' td.column' . $colNum])) { - $this->cssStyles['table.sheet' . $sheetIndex . ' td.column' . $colNum]; - } - } - } - $colSpan = 1; - $rowSpan = 1; - - // initialize - $cellData = '&nbsp;'; - - // PHPExcel_Cell - if ($cell instanceof PHPExcel_Cell) { - $cellData = ''; - if (is_null($cell->getParent())) { - $cell->attach($pSheet); - } - // Value - if ($cell->getValue() instanceof PHPExcel_RichText) { - // Loop through rich text elements - $elements = $cell->getValue()->getRichTextElements(); - foreach ($elements as $element) { - // Rich text start? - if ($element instanceof PHPExcel_RichText_Run) { - $cellData .= '<span style="' . $this->assembleCSS($this->createCSSStyleFont($element->getFont())) . '">'; - - if ($element->getFont()->getSuperScript()) { - $cellData .= '<sup>'; - } elseif ($element->getFont()->getSubScript()) { - $cellData .= '<sub>'; - } - } - - // Convert UTF8 data to PCDATA - $cellText = $element->getText(); - $cellData .= htmlspecialchars($cellText); - - if ($element instanceof PHPExcel_RichText_Run) { - if ($element->getFont()->getSuperScript()) { - $cellData .= '</sup>'; - } elseif ($element->getFont()->getSubScript()) { - $cellData .= '</sub>'; - } - - $cellData .= '</span>'; - } - } - } else { - if ($this->preCalculateFormulas) { - $cellData = PHPExcel_Style_NumberFormat::toFormattedString( - $cell->getCalculatedValue(), - $pSheet->getParent()->getCellXfByIndex($cell->getXfIndex())->getNumberFormat()->getFormatCode(), - array($this, 'formatColor') - ); - } else { - $cellData = PHPExcel_Style_NumberFormat::toFormattedString( - $cell->getValue(), - $pSheet->getParent()->getCellXfByIndex($cell->getXfIndex())->getNumberFormat()->getFormatCode(), - array($this, 'formatColor') - ); - } - $cellData = htmlspecialchars($cellData); - if ($pSheet->getParent()->getCellXfByIndex($cell->getXfIndex())->getFont()->getSuperScript()) { - $cellData = '<sup>'.$cellData.'</sup>'; - } elseif ($pSheet->getParent()->getCellXfByIndex($cell->getXfIndex())->getFont()->getSubScript()) { - $cellData = '<sub>'.$cellData.'</sub>'; - } - } - - // Converts the cell content so that spaces occuring at beginning of each new line are replaced by &nbsp; - // Example: " Hello\n to the world" is converted to "&nbsp;&nbsp;Hello\n&nbsp;to the world" - $cellData = preg_replace("/(?m)(?:^|\\G) /", '&nbsp;', $cellData); - - // convert newline "\n" to '<br>' - $cellData = nl2br($cellData); - - // Extend CSS class? - if (!$this->useInlineCss) { - $cssClass .= ' style' . $cell->getXfIndex(); - $cssClass .= ' ' . $cell->getDataType(); - } else { - if ($cellType == 'th') { - if (isset($this->cssStyles['th.style' . $cell->getXfIndex()])) { - $cssClass = array_merge($cssClass, $this->cssStyles['th.style' . $cell->getXfIndex()]); - } - } else { - if (isset($this->cssStyles['td.style' . $cell->getXfIndex()])) { - $cssClass = array_merge($cssClass, $this->cssStyles['td.style' . $cell->getXfIndex()]); - } - } - - // General horizontal alignment: Actual horizontal alignment depends on dataType - $sharedStyle = $pSheet->getParent()->getCellXfByIndex($cell->getXfIndex()); - if ($sharedStyle->getAlignment()->getHorizontal() == PHPExcel_Style_Alignment::HORIZONTAL_GENERAL - && isset($this->cssStyles['.' . $cell->getDataType()]['text-align'])) { - $cssClass['text-align'] = $this->cssStyles['.' . $cell->getDataType()]['text-align']; - } - } - } - - // Hyperlink? - if ($pSheet->hyperlinkExists($coordinate) && !$pSheet->getHyperlink($coordinate)->isInternal()) { - $cellData = '<a href="' . htmlspecialchars($pSheet->getHyperlink($coordinate)->getUrl()) . '" title="' . htmlspecialchars($pSheet->getHyperlink($coordinate)->getTooltip()) . '">' . $cellData . '</a>'; - } - - // Should the cell be written or is it swallowed by a rowspan or colspan? - $writeCell = !(isset($this->isSpannedCell[$pSheet->getParent()->getIndex($pSheet)][$pRow + 1][$colNum]) - && $this->isSpannedCell[$pSheet->getParent()->getIndex($pSheet)][$pRow + 1][$colNum]); - - // Colspan and Rowspan - $colspan = 1; - $rowspan = 1; - if (isset($this->isBaseCell[$pSheet->getParent()->getIndex($pSheet)][$pRow + 1][$colNum])) { - $spans = $this->isBaseCell[$pSheet->getParent()->getIndex($pSheet)][$pRow + 1][$colNum]; - $rowSpan = $spans['rowspan']; - $colSpan = $spans['colspan']; - - // Also apply style from last cell in merge to fix borders - - // relies on !important for non-none border declarations in createCSSStyleBorder - $endCellCoord = PHPExcel_Cell::stringFromColumnIndex($colNum + $colSpan - 1) . ($pRow + $rowSpan); - if (!$this->useInlineCss) { - $cssClass .= ' style' . $pSheet->getCell($endCellCoord)->getXfIndex(); - } - } - - // Write - if ($writeCell) { - // Column start - $html .= ' <' . $cellType; - if (!$this->useInlineCss) { - $html .= ' class="' . $cssClass . '"'; - } else { - //** Necessary redundant code for the sake of PHPExcel_Writer_PDF ** - // We must explicitly write the width of the <td> element because TCPDF - // does not recognize e.g. <col style="width:42pt"> - $width = 0; - $i = $colNum - 1; - $e = $colNum + $colSpan - 1; - while ($i++ < $e) { - if (isset($this->columnWidths[$sheetIndex][$i])) { - $width += $this->columnWidths[$sheetIndex][$i]; - } - } - $cssClass['width'] = $width . 'pt'; - - // We must also explicitly write the height of the <td> element because TCPDF - // does not recognize e.g. <tr style="height:50pt"> - if (isset($this->cssStyles['table.sheet' . $sheetIndex . ' tr.row' . $pRow]['height'])) { - $height = $this->cssStyles['table.sheet' . $sheetIndex . ' tr.row' . $pRow]['height']; - $cssClass['height'] = $height; - } - //** end of redundant code ** - - $html .= ' style="' . $this->assembleCSS($cssClass) . '"'; - } - if ($colSpan > 1) { - $html .= ' colspan="' . $colSpan . '"'; - } - if ($rowSpan > 1) { - $html .= ' rowspan="' . $rowSpan . '"'; - } - $html .= '>'; - - // Image? - $html .= $this->writeImageInCell($pSheet, $coordinate); - - // Chart? - if ($this->includeCharts) { - $html .= $this->writeChartInCell($pSheet, $coordinate); - } - - // Cell data - $html .= $cellData; - - // Column end - $html .= '</'.$cellType.'>' . PHP_EOL; - } - - // Next column - ++$colNum; - } - - // Write row end - $html .= ' </tr>' . PHP_EOL; - - // Return - return $html; - } else { - throw new PHPExcel_Writer_Exception("Invalid parameters passed."); - } - } - - /** - * Takes array where of CSS properties / values and converts to CSS string - * - * @param array - * @return string - */ - private function assembleCSS($pValue = array()) - { - $pairs = array(); - foreach ($pValue as $property => $value) { - $pairs[] = $property . ':' . $value; - } - $string = implode('; ', $pairs); - - return $string; - } - - /** - * Get images root - * - * @return string - */ - public function getImagesRoot() - { - return $this->imagesRoot; - } - - /** - * Set images root - * - * @param string $pValue - * @return PHPExcel_Writer_HTML - */ - public function setImagesRoot($pValue = '.') - { - $this->imagesRoot = $pValue; - return $this; - } - - /** - * Get embed images - * - * @return boolean - */ - public function getEmbedImages() - { - return $this->embedImages; - } - - /** - * Set embed images - * - * @param boolean $pValue - * @return PHPExcel_Writer_HTML - */ - public function setEmbedImages($pValue = '.') - { - $this->embedImages = $pValue; - return $this; - } - - /** - * Get use inline CSS? - * - * @return boolean - */ - public function getUseInlineCss() - { - return $this->useInlineCss; - } - - /** - * Set use inline CSS? - * - * @param boolean $pValue - * @return PHPExcel_Writer_HTML - */ - public function setUseInlineCss($pValue = false) - { - $this->useInlineCss = $pValue; - return $this; - } - - /** - * Add color to formatted string as inline style - * - * @param string $pValue Plain formatted value without color - * @param string $pFormat Format code - * @return string - */ - public function formatColor($pValue, $pFormat) - { - // Color information, e.g. [Red] is always at the beginning - $color = null; // initialize - $matches = array(); - - $color_regex = '/^\\[[a-zA-Z]+\\]/'; - if (preg_match($color_regex, $pFormat, $matches)) { - $color = str_replace('[', '', $matches[0]); - $color = str_replace(']', '', $color); - $color = strtolower($color); - } - - // convert to PCDATA - $value = htmlspecialchars($pValue); - - // color span tag - if ($color !== null) { - $value = '<span style="color:' . $color . '">' . $value . '</span>'; - } - - return $value; - } - - /** - * Calculate information about HTML colspan and rowspan which is not always the same as Excel's - */ - private function calculateSpans() - { - // Identify all cells that should be omitted in HTML due to cell merge. - // In HTML only the upper-left cell should be written and it should have - // appropriate rowspan / colspan attribute - $sheetIndexes = $this->sheetIndex !== null ? - array($this->sheetIndex) : range(0, $this->phpExcel->getSheetCount() - 1); - - foreach ($sheetIndexes as $sheetIndex) { - $sheet = $this->phpExcel->getSheet($sheetIndex); - - $candidateSpannedRow = array(); - - // loop through all Excel merged cells - foreach ($sheet->getMergeCells() as $cells) { - list($cells,) = PHPExcel_Cell::splitRange($cells); - $first = $cells[0]; - $last = $cells[1]; - - list($fc, $fr) = PHPExcel_Cell::coordinateFromString($first); - $fc = PHPExcel_Cell::columnIndexFromString($fc) - 1; - - list($lc, $lr) = PHPExcel_Cell::coordinateFromString($last); - $lc = PHPExcel_Cell::columnIndexFromString($lc) - 1; - - // loop through the individual cells in the individual merge - $r = $fr - 1; - while ($r++ < $lr) { - // also, flag this row as a HTML row that is candidate to be omitted - $candidateSpannedRow[$r] = $r; - - $c = $fc - 1; - while ($c++ < $lc) { - if (!($c == $fc && $r == $fr)) { - // not the upper-left cell (should not be written in HTML) - $this->isSpannedCell[$sheetIndex][$r][$c] = array( - 'baseCell' => array($fr, $fc), - ); - } else { - // upper-left is the base cell that should hold the colspan/rowspan attribute - $this->isBaseCell[$sheetIndex][$r][$c] = array( - 'xlrowspan' => $lr - $fr + 1, // Excel rowspan - 'rowspan' => $lr - $fr + 1, // HTML rowspan, value may change - 'xlcolspan' => $lc - $fc + 1, // Excel colspan - 'colspan' => $lc - $fc + 1, // HTML colspan, value may change - ); - } - } - } - } - - // Identify which rows should be omitted in HTML. These are the rows where all the cells - // participate in a merge and the where base cells are somewhere above. - $countColumns = PHPExcel_Cell::columnIndexFromString($sheet->getHighestColumn()); - foreach ($candidateSpannedRow as $rowIndex) { - if (isset($this->isSpannedCell[$sheetIndex][$rowIndex])) { - if (count($this->isSpannedCell[$sheetIndex][$rowIndex]) == $countColumns) { - $this->isSpannedRow[$sheetIndex][$rowIndex] = $rowIndex; - }; - } - } - - // For each of the omitted rows we found above, the affected rowspans should be subtracted by 1 - if (isset($this->isSpannedRow[$sheetIndex])) { - foreach ($this->isSpannedRow[$sheetIndex] as $rowIndex) { - $adjustedBaseCells = array(); - $c = -1; - $e = $countColumns - 1; - while ($c++ < $e) { - $baseCell = $this->isSpannedCell[$sheetIndex][$rowIndex][$c]['baseCell']; - - if (!in_array($baseCell, $adjustedBaseCells)) { - // subtract rowspan by 1 - --$this->isBaseCell[$sheetIndex][ $baseCell[0] ][ $baseCell[1] ]['rowspan']; - $adjustedBaseCells[] = $baseCell; - } - } - } - } - - // TODO: Same for columns - } - - // We have calculated the spans - $this->spansAreCalculated = true; - } - - private function setMargins(PHPExcel_Worksheet $pSheet) - { - $htmlPage = '@page { '; - $htmlBody = 'body { '; - - $left = PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getLeft()) . 'in; '; - $htmlPage .= 'margin-left: ' . $left; - $htmlBody .= 'margin-left: ' . $left; - $right = PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getRight()) . 'in; '; - $htmlPage .= 'margin-right: ' . $right; - $htmlBody .= 'margin-right: ' . $right; - $top = PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getTop()) . 'in; '; - $htmlPage .= 'margin-top: ' . $top; - $htmlBody .= 'margin-top: ' . $top; - $bottom = PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getBottom()) . 'in; '; - $htmlPage .= 'margin-bottom: ' . $bottom; - $htmlBody .= 'margin-bottom: ' . $bottom; - - $htmlPage .= "}\n"; - $htmlBody .= "}\n"; - - return "<style>\n" . $htmlPage . $htmlBody . "</style>\n"; - } -} diff --git a/application/third_party/PHPExcel/Writer/IWriter.php b/application/third_party/PHPExcel/Writer/IWriter.php deleted file mode 100644 index c7cfe740..00000000 --- a/application/third_party/PHPExcel/Writer/IWriter.php +++ /dev/null @@ -1,37 +0,0 @@ -<?php - -/** - * PHPExcel_Writer_IWriter - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -interface PHPExcel_Writer_IWriter -{ - /** - * Save PHPExcel to file - * - * @param string $pFilename Name of the file to save - * @throws PHPExcel_Writer_Exception - */ - public function save($pFilename = null); -} diff --git a/application/third_party/PHPExcel/Writer/OpenDocument.php b/application/third_party/PHPExcel/Writer/OpenDocument.php deleted file mode 100644 index 912ba9df..00000000 --- a/application/third_party/PHPExcel/Writer/OpenDocument.php +++ /dev/null @@ -1,190 +0,0 @@ -<?php - -/** - * PHPExcel_Writer_OpenDocument - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_OpenDocument - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Writer_OpenDocument extends PHPExcel_Writer_Abstract implements PHPExcel_Writer_IWriter -{ - /** - * Private writer parts - * - * @var PHPExcel_Writer_OpenDocument_WriterPart[] - */ - private $writerParts = array(); - - /** - * Private PHPExcel - * - * @var PHPExcel - */ - private $spreadSheet; - - /** - * Create a new PHPExcel_Writer_OpenDocument - * - * @param PHPExcel $pPHPExcel - */ - public function __construct(PHPExcel $pPHPExcel = null) - { - $this->setPHPExcel($pPHPExcel); - - $writerPartsArray = array( - 'content' => 'PHPExcel_Writer_OpenDocument_Content', - 'meta' => 'PHPExcel_Writer_OpenDocument_Meta', - 'meta_inf' => 'PHPExcel_Writer_OpenDocument_MetaInf', - 'mimetype' => 'PHPExcel_Writer_OpenDocument_Mimetype', - 'settings' => 'PHPExcel_Writer_OpenDocument_Settings', - 'styles' => 'PHPExcel_Writer_OpenDocument_Styles', - 'thumbnails' => 'PHPExcel_Writer_OpenDocument_Thumbnails' - ); - - foreach ($writerPartsArray as $writer => $class) { - $this->writerParts[$writer] = new $class($this); - } - } - - /** - * Get writer part - * - * @param string $pPartName Writer part name - * @return PHPExcel_Writer_Excel2007_WriterPart - */ - public function getWriterPart($pPartName = '') - { - if ($pPartName != '' && isset($this->writerParts[strtolower($pPartName)])) { - return $this->writerParts[strtolower($pPartName)]; - } else { - return null; - } - } - - /** - * Save PHPExcel to file - * - * @param string $pFilename - * @throws PHPExcel_Writer_Exception - */ - public function save($pFilename = null) - { - if (!$this->spreadSheet) { - throw new PHPExcel_Writer_Exception('PHPExcel object unassigned.'); - } - - // garbage collect - $this->spreadSheet->garbageCollect(); - - // If $pFilename is php://output or php://stdout, make it a temporary file... - $originalFilename = $pFilename; - if (strtolower($pFilename) == 'php://output' || strtolower($pFilename) == 'php://stdout') { - $pFilename = @tempnam(PHPExcel_Shared_File::sys_get_temp_dir(), 'phpxltmp'); - if ($pFilename == '') { - $pFilename = $originalFilename; - } - } - - $objZip = $this->createZip($pFilename); - - $objZip->addFromString('META-INF/manifest.xml', $this->getWriterPart('meta_inf')->writeManifest()); - $objZip->addFromString('Thumbnails/thumbnail.png', $this->getWriterPart('thumbnails')->writeThumbnail()); - $objZip->addFromString('content.xml', $this->getWriterPart('content')->write()); - $objZip->addFromString('meta.xml', $this->getWriterPart('meta')->write()); - $objZip->addFromString('mimetype', $this->getWriterPart('mimetype')->write()); - $objZip->addFromString('settings.xml', $this->getWriterPart('settings')->write()); - $objZip->addFromString('styles.xml', $this->getWriterPart('styles')->write()); - - // Close file - if ($objZip->close() === false) { - throw new PHPExcel_Writer_Exception("Could not close zip file $pFilename."); - } - - // If a temporary file was used, copy it to the correct file stream - if ($originalFilename != $pFilename) { - if (copy($pFilename, $originalFilename) === false) { - throw new PHPExcel_Writer_Exception("Could not copy temporary zip file $pFilename to $originalFilename."); - } - @unlink($pFilename); - } - } - - /** - * Create zip object - * - * @param string $pFilename - * @throws PHPExcel_Writer_Exception - * @return ZipArchive - */ - private function createZip($pFilename) - { - // Create new ZIP file and open it for writing - $zipClass = PHPExcel_Settings::getZipClass(); - $objZip = new $zipClass(); - - // Retrieve OVERWRITE and CREATE constants from the instantiated zip class - // This method of accessing constant values from a dynamic class should work with all appropriate versions of PHP - $ro = new ReflectionObject($objZip); - $zipOverWrite = $ro->getConstant('OVERWRITE'); - $zipCreate = $ro->getConstant('CREATE'); - - if (file_exists($pFilename)) { - unlink($pFilename); - } - // Try opening the ZIP file - if ($objZip->open($pFilename, $zipOverWrite) !== true) { - if ($objZip->open($pFilename, $zipCreate) !== true) { - throw new PHPExcel_Writer_Exception("Could not open $pFilename for writing."); - } - } - - return $objZip; - } - - /** - * Get PHPExcel object - * - * @return PHPExcel - * @throws PHPExcel_Writer_Exception - */ - public function getPHPExcel() - { - if ($this->spreadSheet !== null) { - return $this->spreadSheet; - } else { - throw new PHPExcel_Writer_Exception('No PHPExcel assigned.'); - } - } - - /** - * Set PHPExcel object - * - * @param PHPExcel $pPHPExcel PHPExcel object - * @throws PHPExcel_Writer_Exception - * @return PHPExcel_Writer_Excel2007 - */ - public function setPHPExcel(PHPExcel $pPHPExcel = null) - { - $this->spreadSheet = $pPHPExcel; - return $this; - } -} diff --git a/application/third_party/PHPExcel/Writer/OpenDocument/Cell/Comment.php b/application/third_party/PHPExcel/Writer/OpenDocument/Cell/Comment.php deleted file mode 100644 index f1e98a16..00000000 --- a/application/third_party/PHPExcel/Writer/OpenDocument/Cell/Comment.php +++ /dev/null @@ -1,63 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_OpenDocument - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - - -/** - * PHPExcel_Writer_OpenDocument_Cell_Comment - * - * @category PHPExcel - * @package PHPExcel_Writer_OpenDocument - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @author Alexander Pervakov <frost-nzcr4@jagmort.com> - */ -class PHPExcel_Writer_OpenDocument_Cell_Comment -{ - public static function write(PHPExcel_Shared_XMLWriter $objWriter, PHPExcel_Cell $cell) - { - $comments = $cell->getWorksheet()->getComments(); - if (!isset($comments[$cell->getCoordinate()])) { - return; - } - $comment = $comments[$cell->getCoordinate()]; - - $objWriter->startElement('office:annotation'); - //$objWriter->writeAttribute('draw:style-name', 'gr1'); - //$objWriter->writeAttribute('draw:text-style-name', 'P1'); - $objWriter->writeAttribute('svg:width', $comment->getWidth()); - $objWriter->writeAttribute('svg:height', $comment->getHeight()); - $objWriter->writeAttribute('svg:x', $comment->getMarginLeft()); - $objWriter->writeAttribute('svg:y', $comment->getMarginTop()); - //$objWriter->writeAttribute('draw:caption-point-x', $comment->getMarginLeft()); - //$objWriter->writeAttribute('draw:caption-point-y', $comment->getMarginTop()); - $objWriter->writeElement('dc:creator', $comment->getAuthor()); - // TODO: Not realized in PHPExcel_Comment yet. - //$objWriter->writeElement('dc:date', $comment->getDate()); - $objWriter->writeElement('text:p', $comment->getText()->getPlainText()); - //$objWriter->writeAttribute('draw:text-style-name', 'P1'); - $objWriter->endElement(); - } -} diff --git a/application/third_party/PHPExcel/Writer/OpenDocument/Content.php b/application/third_party/PHPExcel/Writer/OpenDocument/Content.php deleted file mode 100644 index a34b1670..00000000 --- a/application/third_party/PHPExcel/Writer/OpenDocument/Content.php +++ /dev/null @@ -1,272 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_OpenDocument - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - - -/** - * PHPExcel_Writer_OpenDocument_Content - * - * @category PHPExcel - * @package PHPExcel_Writer_OpenDocument - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @author Alexander Pervakov <frost-nzcr4@jagmort.com> - */ -class PHPExcel_Writer_OpenDocument_Content extends PHPExcel_Writer_OpenDocument_WriterPart -{ - const NUMBER_COLS_REPEATED_MAX = 1024; - const NUMBER_ROWS_REPEATED_MAX = 1048576; - - /** - * Write content.xml to XML format - * - * @param PHPExcel $pPHPExcel - * @return string XML Output - * @throws PHPExcel_Writer_Exception - */ - public function write(PHPExcel $pPHPExcel = null) - { - if (!$pPHPExcel) { - $pPHPExcel = $this->getParentWriter()->getPHPExcel(); /* @var $pPHPExcel PHPExcel */ - } - - $objWriter = null; - if ($this->getParentWriter()->getUseDiskCaching()) { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); - } else { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); - } - - // XML header - $objWriter->startDocument('1.0', 'UTF-8'); - - // Content - $objWriter->startElement('office:document-content'); - $objWriter->writeAttribute('xmlns:office', 'urn:oasis:names:tc:opendocument:xmlns:office:1.0'); - $objWriter->writeAttribute('xmlns:style', 'urn:oasis:names:tc:opendocument:xmlns:style:1.0'); - $objWriter->writeAttribute('xmlns:text', 'urn:oasis:names:tc:opendocument:xmlns:text:1.0'); - $objWriter->writeAttribute('xmlns:table', 'urn:oasis:names:tc:opendocument:xmlns:table:1.0'); - $objWriter->writeAttribute('xmlns:draw', 'urn:oasis:names:tc:opendocument:xmlns:drawing:1.0'); - $objWriter->writeAttribute('xmlns:fo', 'urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0'); - $objWriter->writeAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink'); - $objWriter->writeAttribute('xmlns:dc', 'http://purl.org/dc/elements/1.1/'); - $objWriter->writeAttribute('xmlns:meta', 'urn:oasis:names:tc:opendocument:xmlns:meta:1.0'); - $objWriter->writeAttribute('xmlns:number', 'urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0'); - $objWriter->writeAttribute('xmlns:presentation', 'urn:oasis:names:tc:opendocument:xmlns:presentation:1.0'); - $objWriter->writeAttribute('xmlns:svg', 'urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0'); - $objWriter->writeAttribute('xmlns:chart', 'urn:oasis:names:tc:opendocument:xmlns:chart:1.0'); - $objWriter->writeAttribute('xmlns:dr3d', 'urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0'); - $objWriter->writeAttribute('xmlns:math', 'http://www.w3.org/1998/Math/MathML'); - $objWriter->writeAttribute('xmlns:form', 'urn:oasis:names:tc:opendocument:xmlns:form:1.0'); - $objWriter->writeAttribute('xmlns:script', 'urn:oasis:names:tc:opendocument:xmlns:script:1.0'); - $objWriter->writeAttribute('xmlns:ooo', 'http://openoffice.org/2004/office'); - $objWriter->writeAttribute('xmlns:ooow', 'http://openoffice.org/2004/writer'); - $objWriter->writeAttribute('xmlns:oooc', 'http://openoffice.org/2004/calc'); - $objWriter->writeAttribute('xmlns:dom', 'http://www.w3.org/2001/xml-events'); - $objWriter->writeAttribute('xmlns:xforms', 'http://www.w3.org/2002/xforms'); - $objWriter->writeAttribute('xmlns:xsd', 'http://www.w3.org/2001/XMLSchema'); - $objWriter->writeAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance'); - $objWriter->writeAttribute('xmlns:rpt', 'http://openoffice.org/2005/report'); - $objWriter->writeAttribute('xmlns:of', 'urn:oasis:names:tc:opendocument:xmlns:of:1.2'); - $objWriter->writeAttribute('xmlns:xhtml', 'http://www.w3.org/1999/xhtml'); - $objWriter->writeAttribute('xmlns:grddl', 'http://www.w3.org/2003/g/data-view#'); - $objWriter->writeAttribute('xmlns:tableooo', 'http://openoffice.org/2009/table'); - $objWriter->writeAttribute('xmlns:field', 'urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0'); - $objWriter->writeAttribute('xmlns:formx', 'urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0'); - $objWriter->writeAttribute('xmlns:css3t', 'http://www.w3.org/TR/css3-text/'); - $objWriter->writeAttribute('office:version', '1.2'); - - $objWriter->writeElement('office:scripts'); - $objWriter->writeElement('office:font-face-decls'); - $objWriter->writeElement('office:automatic-styles'); - - $objWriter->startElement('office:body'); - $objWriter->startElement('office:spreadsheet'); - $objWriter->writeElement('table:calculation-settings'); - $this->writeSheets($objWriter); - $objWriter->writeElement('table:named-expressions'); - $objWriter->endElement(); - $objWriter->endElement(); - $objWriter->endElement(); - - return $objWriter->getData(); - } - - /** - * Write sheets - * - * @param PHPExcel_Shared_XMLWriter $objWriter - */ - private function writeSheets(PHPExcel_Shared_XMLWriter $objWriter) - { - $pPHPExcel = $this->getParentWriter()->getPHPExcel(); /* @var $pPHPExcel PHPExcel */ - - $sheet_count = $pPHPExcel->getSheetCount(); - for ($i = 0; $i < $sheet_count; $i++) { - //$this->getWriterPart('Worksheet')->writeWorksheet()); - $objWriter->startElement('table:table'); - $objWriter->writeAttribute('table:name', $pPHPExcel->getSheet($i)->getTitle()); - $objWriter->writeElement('office:forms'); - $objWriter->startElement('table:table-column'); - $objWriter->writeAttribute('table:number-columns-repeated', self::NUMBER_COLS_REPEATED_MAX); - $objWriter->endElement(); - $this->writeRows($objWriter, $pPHPExcel->getSheet($i)); - $objWriter->endElement(); - } - } - - /** - * Write rows of the specified sheet - * - * @param PHPExcel_Shared_XMLWriter $objWriter - * @param PHPExcel_Worksheet $sheet - */ - private function writeRows(PHPExcel_Shared_XMLWriter $objWriter, PHPExcel_Worksheet $sheet) - { - $number_rows_repeated = self::NUMBER_ROWS_REPEATED_MAX; - $span_row = 0; - $rows = $sheet->getRowIterator(); - while ($rows->valid()) { - $number_rows_repeated--; - $row = $rows->current(); - if ($row->getCellIterator()->valid()) { - if ($span_row) { - $objWriter->startElement('table:table-row'); - if ($span_row > 1) { - $objWriter->writeAttribute('table:number-rows-repeated', $span_row); - } - $objWriter->startElement('table:table-cell'); - $objWriter->writeAttribute('table:number-columns-repeated', self::NUMBER_COLS_REPEATED_MAX); - $objWriter->endElement(); - $objWriter->endElement(); - $span_row = 0; - } - $objWriter->startElement('table:table-row'); - $this->writeCells($objWriter, $row); - $objWriter->endElement(); - } else { - $span_row++; - } - $rows->next(); - } - } - - /** - * Write cells of the specified row - * - * @param PHPExcel_Shared_XMLWriter $objWriter - * @param PHPExcel_Worksheet_Row $row - * @throws PHPExcel_Writer_Exception - */ - private function writeCells(PHPExcel_Shared_XMLWriter $objWriter, PHPExcel_Worksheet_Row $row) - { - $number_cols_repeated = self::NUMBER_COLS_REPEATED_MAX; - $prev_column = -1; - $cells = $row->getCellIterator(); - while ($cells->valid()) { - $cell = $cells->current(); - $column = PHPExcel_Cell::columnIndexFromString($cell->getColumn()) - 1; - - $this->writeCellSpan($objWriter, $column, $prev_column); - $objWriter->startElement('table:table-cell'); - - switch ($cell->getDataType()) { - case PHPExcel_Cell_DataType::TYPE_BOOL: - $objWriter->writeAttribute('office:value-type', 'boolean'); - $objWriter->writeAttribute('office:value', $cell->getValue()); - $objWriter->writeElement('text:p', $cell->getValue()); - break; - - case PHPExcel_Cell_DataType::TYPE_ERROR: - throw new PHPExcel_Writer_Exception('Writing of error not implemented yet.'); - break; - - case PHPExcel_Cell_DataType::TYPE_FORMULA: - try { - $formula_value = $cell->getCalculatedValue(); - } catch (Exception $e) { - $formula_value = $cell->getValue(); - } - $objWriter->writeAttribute('table:formula', 'of:' . $cell->getValue()); - if (is_numeric($formula_value)) { - $objWriter->writeAttribute('office:value-type', 'float'); - } else { - $objWriter->writeAttribute('office:value-type', 'string'); - } - $objWriter->writeAttribute('office:value', $formula_value); - $objWriter->writeElement('text:p', $formula_value); - break; - - case PHPExcel_Cell_DataType::TYPE_INLINE: - throw new PHPExcel_Writer_Exception('Writing of inline not implemented yet.'); - break; - - case PHPExcel_Cell_DataType::TYPE_NUMERIC: - $objWriter->writeAttribute('office:value-type', 'float'); - $objWriter->writeAttribute('office:value', $cell->getValue()); - $objWriter->writeElement('text:p', $cell->getValue()); - break; - - case PHPExcel_Cell_DataType::TYPE_STRING: - $objWriter->writeAttribute('office:value-type', 'string'); - $objWriter->writeElement('text:p', $cell->getValue()); - break; - } - PHPExcel_Writer_OpenDocument_Cell_Comment::write($objWriter, $cell); - $objWriter->endElement(); - $prev_column = $column; - $cells->next(); - } - $number_cols_repeated = $number_cols_repeated - $prev_column - 1; - if ($number_cols_repeated > 0) { - if ($number_cols_repeated > 1) { - $objWriter->startElement('table:table-cell'); - $objWriter->writeAttribute('table:number-columns-repeated', $number_cols_repeated); - $objWriter->endElement(); - } else { - $objWriter->writeElement('table:table-cell'); - } - } - } - - /** - * Write span - * - * @param PHPExcel_Shared_XMLWriter $objWriter - * @param integer $curColumn - * @param integer $prevColumn - */ - private function writeCellSpan(PHPExcel_Shared_XMLWriter $objWriter, $curColumn, $prevColumn) - { - $diff = $curColumn - $prevColumn - 1; - if (1 === $diff) { - $objWriter->writeElement('table:table-cell'); - } elseif ($diff > 1) { - $objWriter->startElement('table:table-cell'); - $objWriter->writeAttribute('table:number-columns-repeated', $diff); - $objWriter->endElement(); - } - } -} diff --git a/application/third_party/PHPExcel/Writer/OpenDocument/Meta.php b/application/third_party/PHPExcel/Writer/OpenDocument/Meta.php deleted file mode 100644 index 1a5c5fd0..00000000 --- a/application/third_party/PHPExcel/Writer/OpenDocument/Meta.php +++ /dev/null @@ -1,95 +0,0 @@ -<?php - -/** - * PHPExcel_Writer_OpenDocument_Meta - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_OpenDocument - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Writer_OpenDocument_Meta extends PHPExcel_Writer_OpenDocument_WriterPart -{ - /** - * Write meta.xml to XML format - * - * @param PHPExcel $pPHPExcel - * @return string XML Output - * @throws PHPExcel_Writer_Exception - */ - public function write(PHPExcel $pPHPExcel = null) - { - if (!$pPHPExcel) { - $pPHPExcel = $this->getParentWriter()->getPHPExcel(); - } - - $objWriter = null; - if ($this->getParentWriter()->getUseDiskCaching()) { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); - } else { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); - } - - // XML header - $objWriter->startDocument('1.0', 'UTF-8'); - - // Meta - $objWriter->startElement('office:document-meta'); - - $objWriter->writeAttribute('xmlns:office', 'urn:oasis:names:tc:opendocument:xmlns:office:1.0'); - $objWriter->writeAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink'); - $objWriter->writeAttribute('xmlns:dc', 'http://purl.org/dc/elements/1.1/'); - $objWriter->writeAttribute('xmlns:meta', 'urn:oasis:names:tc:opendocument:xmlns:meta:1.0'); - $objWriter->writeAttribute('xmlns:ooo', 'http://openoffice.org/2004/office'); - $objWriter->writeAttribute('xmlns:grddl', 'http://www.w3.org/2003/g/data-view#'); - $objWriter->writeAttribute('office:version', '1.2'); - - $objWriter->startElement('office:meta'); - - $objWriter->writeElement('meta:initial-creator', $pPHPExcel->getProperties()->getCreator()); - $objWriter->writeElement('dc:creator', $pPHPExcel->getProperties()->getCreator()); - $objWriter->writeElement('meta:creation-date', date(DATE_W3C, $pPHPExcel->getProperties()->getCreated())); - $objWriter->writeElement('dc:date', date(DATE_W3C, $pPHPExcel->getProperties()->getCreated())); - $objWriter->writeElement('dc:title', $pPHPExcel->getProperties()->getTitle()); - $objWriter->writeElement('dc:description', $pPHPExcel->getProperties()->getDescription()); - $objWriter->writeElement('dc:subject', $pPHPExcel->getProperties()->getSubject()); - $keywords = explode(' ', $pPHPExcel->getProperties()->getKeywords()); - foreach ($keywords as $keyword) { - $objWriter->writeElement('meta:keyword', $keyword); - } - - //<meta:document-statistic meta:table-count="XXX" meta:cell-count="XXX" meta:object-count="XXX"/> - $objWriter->startElement('meta:user-defined'); - $objWriter->writeAttribute('meta:name', 'Company'); - $objWriter->writeRaw($pPHPExcel->getProperties()->getCompany()); - $objWriter->endElement(); - - $objWriter->startElement('meta:user-defined'); - $objWriter->writeAttribute('meta:name', 'category'); - $objWriter->writeRaw($pPHPExcel->getProperties()->getCategory()); - $objWriter->endElement(); - - $objWriter->endElement(); - - $objWriter->endElement(); - - return $objWriter->getData(); - } -} diff --git a/application/third_party/PHPExcel/Writer/OpenDocument/MetaInf.php b/application/third_party/PHPExcel/Writer/OpenDocument/MetaInf.php deleted file mode 100644 index c43b7233..00000000 --- a/application/third_party/PHPExcel/Writer/OpenDocument/MetaInf.php +++ /dev/null @@ -1,87 +0,0 @@ -<?php - -/** - * PHPExcel_Writer_OpenDocument_MetaInf - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_OpenDocument - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Writer_OpenDocument_MetaInf extends PHPExcel_Writer_OpenDocument_WriterPart -{ - /** - * Write META-INF/manifest.xml to XML format - * - * @param PHPExcel $pPHPExcel - * @return string XML Output - * @throws PHPExcel_Writer_Exception - */ - public function writeManifest(PHPExcel $pPHPExcel = null) - { - if (!$pPHPExcel) { - $pPHPExcel = $this->getParentWriter()->getPHPExcel(); - } - - $objWriter = null; - if ($this->getParentWriter()->getUseDiskCaching()) { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); - } else { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); - } - - // XML header - $objWriter->startDocument('1.0', 'UTF-8'); - - // Manifest - $objWriter->startElement('manifest:manifest'); - $objWriter->writeAttribute('xmlns:manifest', 'urn:oasis:names:tc:opendocument:xmlns:manifest:1.0'); - $objWriter->writeAttribute('manifest:version', '1.2'); - - $objWriter->startElement('manifest:file-entry'); - $objWriter->writeAttribute('manifest:full-path', '/'); - $objWriter->writeAttribute('manifest:version', '1.2'); - $objWriter->writeAttribute('manifest:media-type', 'application/vnd.oasis.opendocument.spreadsheet'); - $objWriter->endElement(); - $objWriter->startElement('manifest:file-entry'); - $objWriter->writeAttribute('manifest:full-path', 'meta.xml'); - $objWriter->writeAttribute('manifest:media-type', 'text/xml'); - $objWriter->endElement(); - $objWriter->startElement('manifest:file-entry'); - $objWriter->writeAttribute('manifest:full-path', 'settings.xml'); - $objWriter->writeAttribute('manifest:media-type', 'text/xml'); - $objWriter->endElement(); - $objWriter->startElement('manifest:file-entry'); - $objWriter->writeAttribute('manifest:full-path', 'content.xml'); - $objWriter->writeAttribute('manifest:media-type', 'text/xml'); - $objWriter->endElement(); - $objWriter->startElement('manifest:file-entry'); - $objWriter->writeAttribute('manifest:full-path', 'Thumbnails/thumbnail.png'); - $objWriter->writeAttribute('manifest:media-type', 'image/png'); - $objWriter->endElement(); - $objWriter->startElement('manifest:file-entry'); - $objWriter->writeAttribute('manifest:full-path', 'styles.xml'); - $objWriter->writeAttribute('manifest:media-type', 'text/xml'); - $objWriter->endElement(); - $objWriter->endElement(); - - return $objWriter->getData(); - } -} diff --git a/application/third_party/PHPExcel/Writer/OpenDocument/Mimetype.php b/application/third_party/PHPExcel/Writer/OpenDocument/Mimetype.php deleted file mode 100644 index d51a8b97..00000000 --- a/application/third_party/PHPExcel/Writer/OpenDocument/Mimetype.php +++ /dev/null @@ -1,41 +0,0 @@ -<?php - -/** - * PHPExcel - * - * PHPExcel_Writer_OpenDocument_Mimetype - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_OpenDocument - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Writer_OpenDocument_Mimetype extends PHPExcel_Writer_OpenDocument_WriterPart -{ - /** - * Write mimetype to plain text format - * - * @param PHPExcel $pPHPExcel - * @return string XML Output - * @throws PHPExcel_Writer_Exception - */ - public function write(PHPExcel $pPHPExcel = null) - { - return 'application/vnd.oasis.opendocument.spreadsheet'; - } -} diff --git a/application/third_party/PHPExcel/Writer/OpenDocument/Settings.php b/application/third_party/PHPExcel/Writer/OpenDocument/Settings.php deleted file mode 100644 index 84161b6d..00000000 --- a/application/third_party/PHPExcel/Writer/OpenDocument/Settings.php +++ /dev/null @@ -1,76 +0,0 @@ -<?php - -/** - * PHPExcel_Writer_OpenDocument_Settings - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_OpenDocument - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Writer_OpenDocument_Settings extends PHPExcel_Writer_OpenDocument_WriterPart -{ - /** - * Write settings.xml to XML format - * - * @param PHPExcel $pPHPExcel - * @return string XML Output - * @throws PHPExcel_Writer_Exception - */ - public function write(PHPExcel $pPHPExcel = null) - { - if (!$pPHPExcel) { - $pPHPExcel = $this->getParentWriter()->getPHPExcel(); - } - - $objWriter = null; - if ($this->getParentWriter()->getUseDiskCaching()) { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); - } else { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); - } - - // XML header - $objWriter->startDocument('1.0', 'UTF-8'); - - // Settings - $objWriter->startElement('office:document-settings'); - $objWriter->writeAttribute('xmlns:office', 'urn:oasis:names:tc:opendocument:xmlns:office:1.0'); - $objWriter->writeAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink'); - $objWriter->writeAttribute('xmlns:config', 'urn:oasis:names:tc:opendocument:xmlns:config:1.0'); - $objWriter->writeAttribute('xmlns:ooo', 'http://openoffice.org/2004/office'); - $objWriter->writeAttribute('office:version', '1.2'); - - $objWriter->startElement('office:settings'); - $objWriter->startElement('config:config-item-set'); - $objWriter->writeAttribute('config:name', 'ooo:view-settings'); - $objWriter->startElement('config:config-item-map-indexed'); - $objWriter->writeAttribute('config:name', 'Views'); - $objWriter->endElement(); - $objWriter->endElement(); - $objWriter->startElement('config:config-item-set'); - $objWriter->writeAttribute('config:name', 'ooo:configuration-settings'); - $objWriter->endElement(); - $objWriter->endElement(); - $objWriter->endElement(); - - return $objWriter->getData(); - } -} diff --git a/application/third_party/PHPExcel/Writer/OpenDocument/Styles.php b/application/third_party/PHPExcel/Writer/OpenDocument/Styles.php deleted file mode 100644 index cc6e25b4..00000000 --- a/application/third_party/PHPExcel/Writer/OpenDocument/Styles.php +++ /dev/null @@ -1,92 +0,0 @@ -<?php - -/** - * PHPExcel_Writer_OpenDocument_Styles - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_OpenDocument - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Writer_OpenDocument_Styles extends PHPExcel_Writer_OpenDocument_WriterPart -{ - /** - * Write styles.xml to XML format - * - * @param PHPExcel $pPHPExcel - * @return string XML Output - * @throws PHPExcel_Writer_Exception - */ - public function write(PHPExcel $pPHPExcel = null) - { - if (!$pPHPExcel) { - $pPHPExcel = $this->getParentWriter()->getPHPExcel(); - } - - $objWriter = null; - if ($this->getParentWriter()->getUseDiskCaching()) { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); - } else { - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); - } - - // XML header - $objWriter->startDocument('1.0', 'UTF-8'); - - // Content - $objWriter->startElement('office:document-styles'); - $objWriter->writeAttribute('xmlns:office', 'urn:oasis:names:tc:opendocument:xmlns:office:1.0'); - $objWriter->writeAttribute('xmlns:style', 'urn:oasis:names:tc:opendocument:xmlns:style:1.0'); - $objWriter->writeAttribute('xmlns:text', 'urn:oasis:names:tc:opendocument:xmlns:text:1.0'); - $objWriter->writeAttribute('xmlns:table', 'urn:oasis:names:tc:opendocument:xmlns:table:1.0'); - $objWriter->writeAttribute('xmlns:draw', 'urn:oasis:names:tc:opendocument:xmlns:drawing:1.0'); - $objWriter->writeAttribute('xmlns:fo', 'urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0'); - $objWriter->writeAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink'); - $objWriter->writeAttribute('xmlns:dc', 'http://purl.org/dc/elements/1.1/'); - $objWriter->writeAttribute('xmlns:meta', 'urn:oasis:names:tc:opendocument:xmlns:meta:1.0'); - $objWriter->writeAttribute('xmlns:number', 'urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0'); - $objWriter->writeAttribute('xmlns:presentation', 'urn:oasis:names:tc:opendocument:xmlns:presentation:1.0'); - $objWriter->writeAttribute('xmlns:svg', 'urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0'); - $objWriter->writeAttribute('xmlns:chart', 'urn:oasis:names:tc:opendocument:xmlns:chart:1.0'); - $objWriter->writeAttribute('xmlns:dr3d', 'urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0'); - $objWriter->writeAttribute('xmlns:math', 'http://www.w3.org/1998/Math/MathML'); - $objWriter->writeAttribute('xmlns:form', 'urn:oasis:names:tc:opendocument:xmlns:form:1.0'); - $objWriter->writeAttribute('xmlns:script', 'urn:oasis:names:tc:opendocument:xmlns:script:1.0'); - $objWriter->writeAttribute('xmlns:ooo', 'http://openoffice.org/2004/office'); - $objWriter->writeAttribute('xmlns:ooow', 'http://openoffice.org/2004/writer'); - $objWriter->writeAttribute('xmlns:oooc', 'http://openoffice.org/2004/calc'); - $objWriter->writeAttribute('xmlns:dom', 'http://www.w3.org/2001/xml-events'); - $objWriter->writeAttribute('xmlns:rpt', 'http://openoffice.org/2005/report'); - $objWriter->writeAttribute('xmlns:of', 'urn:oasis:names:tc:opendocument:xmlns:of:1.2'); - $objWriter->writeAttribute('xmlns:xhtml', 'http://www.w3.org/1999/xhtml'); - $objWriter->writeAttribute('xmlns:grddl', 'http://www.w3.org/2003/g/data-view#'); - $objWriter->writeAttribute('xmlns:tableooo', 'http://openoffice.org/2009/table'); - $objWriter->writeAttribute('xmlns:css3t', 'http://www.w3.org/TR/css3-text/'); - $objWriter->writeAttribute('office:version', '1.2'); - - $objWriter->writeElement('office:font-face-decls'); - $objWriter->writeElement('office:styles'); - $objWriter->writeElement('office:automatic-styles'); - $objWriter->writeElement('office:master-styles'); - $objWriter->endElement(); - - return $objWriter->getData(); - } -} diff --git a/application/third_party/PHPExcel/Writer/OpenDocument/Thumbnails.php b/application/third_party/PHPExcel/Writer/OpenDocument/Thumbnails.php deleted file mode 100644 index 54247ae2..00000000 --- a/application/third_party/PHPExcel/Writer/OpenDocument/Thumbnails.php +++ /dev/null @@ -1,41 +0,0 @@ -<?php - -/** - * PHPExcel_Writer_OpenDocument_Thumbnails - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_OpenDocument - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Writer_OpenDocument_Thumbnails extends PHPExcel_Writer_OpenDocument_WriterPart -{ - /** - * Write Thumbnails/thumbnail.png to PNG format - * - * @param PHPExcel $pPHPExcel - * @return string XML Output - * @throws PHPExcel_Writer_Exception - */ - public function writeThumbnail(PHPExcel $pPHPExcel = null) - { - return ''; - } -} diff --git a/application/third_party/PHPExcel/Writer/OpenDocument/WriterPart.php b/application/third_party/PHPExcel/Writer/OpenDocument/WriterPart.php deleted file mode 100644 index 562787a3..00000000 --- a/application/third_party/PHPExcel/Writer/OpenDocument/WriterPart.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php - -/** - * PHPExcel_Writer_OpenDocument_WriterPart - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_OpenDocument - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -abstract class PHPExcel_Writer_OpenDocument_WriterPart extends PHPExcel_Writer_Excel2007_WriterPart -{ -} diff --git a/application/third_party/PHPExcel/Writer/PDF.php b/application/third_party/PHPExcel/Writer/PDF.php deleted file mode 100644 index 579edfa5..00000000 --- a/application/third_party/PHPExcel/Writer/PDF.php +++ /dev/null @@ -1,89 +0,0 @@ -<?php - -/** - * PHPExcel_Writer_PDF - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_PDF - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Writer_PDF implements PHPExcel_Writer_IWriter -{ - - /** - * The wrapper for the requested PDF rendering engine - * - * @var PHPExcel_Writer_PDF_Core - */ - private $renderer = null; - - /** - * Instantiate a new renderer of the configured type within this container class - * - * @param PHPExcel $phpExcel PHPExcel object - * @throws PHPExcel_Writer_Exception when PDF library is not configured - */ - public function __construct(PHPExcel $phpExcel) - { - $pdfLibraryName = PHPExcel_Settings::getPdfRendererName(); - if (is_null($pdfLibraryName)) { - throw new PHPExcel_Writer_Exception("PDF Rendering library has not been defined."); - } - - $pdfLibraryPath = PHPExcel_Settings::getPdfRendererPath(); - if (is_null($pdfLibraryName)) { - throw new PHPExcel_Writer_Exception("PDF Rendering library path has not been defined."); - } - $includePath = str_replace('\\', '/', get_include_path()); - $rendererPath = str_replace('\\', '/', $pdfLibraryPath); - if (strpos($rendererPath, $includePath) === false) { - set_include_path(get_include_path() . PATH_SEPARATOR . $pdfLibraryPath); - } - - $rendererName = 'PHPExcel_Writer_PDF_' . $pdfLibraryName; - $this->renderer = new $rendererName($phpExcel); - } - - - /** - * Magic method to handle direct calls to the configured PDF renderer wrapper class. - * - * @param string $name Renderer library method name - * @param mixed[] $arguments Array of arguments to pass to the renderer method - * @return mixed Returned data from the PDF renderer wrapper method - */ - public function __call($name, $arguments) - { - if ($this->renderer === null) { - throw new PHPExcel_Writer_Exception("PDF Rendering library has not been defined."); - } - - return call_user_func_array(array($this->renderer, $name), $arguments); - } - - /** - * {@inheritdoc} - */ - public function save($pFilename = null) - { - $this->renderer->save($pFilename); - } -} diff --git a/application/third_party/PHPExcel/Writer/PDF/Core.php b/application/third_party/PHPExcel/Writer/PDF/Core.php deleted file mode 100644 index 4fed84a7..00000000 --- a/application/third_party/PHPExcel/Writer/PDF/Core.php +++ /dev/null @@ -1,355 +0,0 @@ -<?php - -/** - * PHPExcel_Writer_PDF_Core - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_PDF - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -abstract class PHPExcel_Writer_PDF_Core extends PHPExcel_Writer_HTML -{ - /** - * Temporary storage directory - * - * @var string - */ - protected $tempDir = ''; - - /** - * Font - * - * @var string - */ - protected $font = 'freesans'; - - /** - * Orientation (Over-ride) - * - * @var string - */ - protected $orientation; - - /** - * Paper size (Over-ride) - * - * @var int - */ - protected $paperSize; - - - /** - * Temporary storage for Save Array Return type - * - * @var string - */ - private $saveArrayReturnType; - - /** - * Paper Sizes xRef List - * - * @var array - */ - protected static $paperSizes = array( - PHPExcel_Worksheet_PageSetup::PAPERSIZE_LETTER - => 'LETTER', // (8.5 in. by 11 in.) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_LETTER_SMALL - => 'LETTER', // (8.5 in. by 11 in.) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_TABLOID - => array(792.00, 1224.00), // (11 in. by 17 in.) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_LEDGER - => array(1224.00, 792.00), // (17 in. by 11 in.) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_LEGAL - => 'LEGAL', // (8.5 in. by 14 in.) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_STATEMENT - => array(396.00, 612.00), // (5.5 in. by 8.5 in.) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_EXECUTIVE - => 'EXECUTIVE', // (7.25 in. by 10.5 in.) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_A3 - => 'A3', // (297 mm by 420 mm) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4 - => 'A4', // (210 mm by 297 mm) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4_SMALL - => 'A4', // (210 mm by 297 mm) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_A5 - => 'A5', // (148 mm by 210 mm) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_B4 - => 'B4', // (250 mm by 353 mm) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_B5 - => 'B5', // (176 mm by 250 mm) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_FOLIO - => 'FOLIO', // (8.5 in. by 13 in.) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_QUARTO - => array(609.45, 779.53), // (215 mm by 275 mm) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_STANDARD_1 - => array(720.00, 1008.00), // (10 in. by 14 in.) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_STANDARD_2 - => array(792.00, 1224.00), // (11 in. by 17 in.) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_NOTE - => 'LETTER', // (8.5 in. by 11 in.) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_NO9_ENVELOPE - => array(279.00, 639.00), // (3.875 in. by 8.875 in.) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_NO10_ENVELOPE - => array(297.00, 684.00), // (4.125 in. by 9.5 in.) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_NO11_ENVELOPE - => array(324.00, 747.00), // (4.5 in. by 10.375 in.) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_NO12_ENVELOPE - => array(342.00, 792.00), // (4.75 in. by 11 in.) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_NO14_ENVELOPE - => array(360.00, 828.00), // (5 in. by 11.5 in.) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_C - => array(1224.00, 1584.00), // (17 in. by 22 in.) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_D - => array(1584.00, 2448.00), // (22 in. by 34 in.) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_E - => array(2448.00, 3168.00), // (34 in. by 44 in.) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_DL_ENVELOPE - => array(311.81, 623.62), // (110 mm by 220 mm) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_C5_ENVELOPE - => 'C5', // (162 mm by 229 mm) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_C3_ENVELOPE - => 'C3', // (324 mm by 458 mm) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_C4_ENVELOPE - => 'C4', // (229 mm by 324 mm) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_C6_ENVELOPE - => 'C6', // (114 mm by 162 mm) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_C65_ENVELOPE - => array(323.15, 649.13), // (114 mm by 229 mm) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_B4_ENVELOPE - => 'B4', // (250 mm by 353 mm) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_B5_ENVELOPE - => 'B5', // (176 mm by 250 mm) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_B6_ENVELOPE - => array(498.90, 354.33), // (176 mm by 125 mm) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_ITALY_ENVELOPE - => array(311.81, 651.97), // (110 mm by 230 mm) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_MONARCH_ENVELOPE - => array(279.00, 540.00), // (3.875 in. by 7.5 in.) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_6_3_4_ENVELOPE - => array(261.00, 468.00), // (3.625 in. by 6.5 in.) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_US_STANDARD_FANFOLD - => array(1071.00, 792.00), // (14.875 in. by 11 in.) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_GERMAN_STANDARD_FANFOLD - => array(612.00, 864.00), // (8.5 in. by 12 in.) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_GERMAN_LEGAL_FANFOLD - => 'FOLIO', // (8.5 in. by 13 in.) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_ISO_B4 - => 'B4', // (250 mm by 353 mm) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_JAPANESE_DOUBLE_POSTCARD - => array(566.93, 419.53), // (200 mm by 148 mm) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_STANDARD_PAPER_1 - => array(648.00, 792.00), // (9 in. by 11 in.) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_STANDARD_PAPER_2 - => array(720.00, 792.00), // (10 in. by 11 in.) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_STANDARD_PAPER_3 - => array(1080.00, 792.00), // (15 in. by 11 in.) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_INVITE_ENVELOPE - => array(623.62, 623.62), // (220 mm by 220 mm) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_LETTER_EXTRA_PAPER - => array(667.80, 864.00), // (9.275 in. by 12 in.) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_LEGAL_EXTRA_PAPER - => array(667.80, 1080.00), // (9.275 in. by 15 in.) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_TABLOID_EXTRA_PAPER - => array(841.68, 1296.00), // (11.69 in. by 18 in.) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4_EXTRA_PAPER - => array(668.98, 912.76), // (236 mm by 322 mm) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_LETTER_TRANSVERSE_PAPER - => array(595.80, 792.00), // (8.275 in. by 11 in.) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4_TRANSVERSE_PAPER - => 'A4', // (210 mm by 297 mm) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_LETTER_EXTRA_TRANSVERSE_PAPER - => array(667.80, 864.00), // (9.275 in. by 12 in.) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_SUPERA_SUPERA_A4_PAPER - => array(643.46, 1009.13), // (227 mm by 356 mm) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_SUPERB_SUPERB_A3_PAPER - => array(864.57, 1380.47), // (305 mm by 487 mm) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_LETTER_PLUS_PAPER - => array(612.00, 913.68), // (8.5 in. by 12.69 in.) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4_PLUS_PAPER - => array(595.28, 935.43), // (210 mm by 330 mm) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_A5_TRANSVERSE_PAPER - => 'A5', // (148 mm by 210 mm) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_JIS_B5_TRANSVERSE_PAPER - => array(515.91, 728.50), // (182 mm by 257 mm) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_A3_EXTRA_PAPER - => array(912.76, 1261.42), // (322 mm by 445 mm) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_A5_EXTRA_PAPER - => array(493.23, 666.14), // (174 mm by 235 mm) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_ISO_B5_EXTRA_PAPER - => array(569.76, 782.36), // (201 mm by 276 mm) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_A2_PAPER - => 'A2', // (420 mm by 594 mm) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_A3_TRANSVERSE_PAPER - => 'A3', // (297 mm by 420 mm) - PHPExcel_Worksheet_PageSetup::PAPERSIZE_A3_EXTRA_TRANSVERSE_PAPER - => array(912.76, 1261.42) // (322 mm by 445 mm) - ); - - /** - * Create a new PHPExcel_Writer_PDF - * - * @param PHPExcel $phpExcel PHPExcel object - */ - public function __construct(PHPExcel $phpExcel) - { - parent::__construct($phpExcel); - $this->setUseInlineCss(true); - $this->tempDir = PHPExcel_Shared_File::sys_get_temp_dir(); - } - - /** - * Get Font - * - * @return string - */ - public function getFont() - { - return $this->font; - } - - /** - * Set font. Examples: - * 'arialunicid0-chinese-simplified' - * 'arialunicid0-chinese-traditional' - * 'arialunicid0-korean' - * 'arialunicid0-japanese' - * - * @param string $fontName - */ - public function setFont($fontName) - { - $this->font = $fontName; - return $this; - } - - /** - * Get Paper Size - * - * @return int - */ - public function getPaperSize() - { - return $this->paperSize; - } - - /** - * Set Paper Size - * - * @param string $pValue Paper size - * @return PHPExcel_Writer_PDF - */ - public function setPaperSize($pValue = PHPExcel_Worksheet_PageSetup::PAPERSIZE_LETTER) - { - $this->paperSize = $pValue; - return $this; - } - - /** - * Get Orientation - * - * @return string - */ - public function getOrientation() - { - return $this->orientation; - } - - /** - * Set Orientation - * - * @param string $pValue Page orientation - * @return PHPExcel_Writer_PDF - */ - public function setOrientation($pValue = PHPExcel_Worksheet_PageSetup::ORIENTATION_DEFAULT) - { - $this->orientation = $pValue; - return $this; - } - - /** - * Get temporary storage directory - * - * @return string - */ - public function getTempDir() - { - return $this->tempDir; - } - - /** - * Set temporary storage directory - * - * @param string $pValue Temporary storage directory - * @throws PHPExcel_Writer_Exception when directory does not exist - * @return PHPExcel_Writer_PDF - */ - public function setTempDir($pValue = '') - { - if (is_dir($pValue)) { - $this->tempDir = $pValue; - } else { - throw new PHPExcel_Writer_Exception("Directory does not exist: $pValue"); - } - return $this; - } - - /** - * Save PHPExcel to PDF file, pre-save - * - * @param string $pFilename Name of the file to save as - * @throws PHPExcel_Writer_Exception - */ - protected function prepareForSave($pFilename = null) - { - // garbage collect - $this->phpExcel->garbageCollect(); - - $this->saveArrayReturnType = PHPExcel_Calculation::getArrayReturnType(); - PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE); - - // Open file - $fileHandle = fopen($pFilename, 'w'); - if ($fileHandle === false) { - throw new PHPExcel_Writer_Exception("Could not open file $pFilename for writing."); - } - - // Set PDF - $this->isPdf = true; - // Build CSS - $this->buildCSS(true); - - return $fileHandle; - } - - /** - * Save PHPExcel to PDF file, post-save - * - * @param resource $fileHandle - * @throws PHPExcel_Writer_Exception - */ - protected function restoreStateAfterSave($fileHandle) - { - // Close file - fclose($fileHandle); - - PHPExcel_Calculation::setArrayReturnType($this->saveArrayReturnType); - } -} diff --git a/application/third_party/PHPExcel/Writer/PDF/DomPDF.php b/application/third_party/PHPExcel/Writer/PDF/DomPDF.php deleted file mode 100644 index 83761acb..00000000 --- a/application/third_party/PHPExcel/Writer/PDF/DomPDF.php +++ /dev/null @@ -1,108 +0,0 @@ -<?php - -/** Require DomPDF library */ -$pdfRendererClassFile = PHPExcel_Settings::getPdfRendererPath() . '/dompdf_config.inc.php'; -if (file_exists($pdfRendererClassFile)) { - require_once $pdfRendererClassFile; -} else { - throw new PHPExcel_Writer_Exception('Unable to load PDF Rendering library'); -} - -/** - * PHPExcel_Writer_PDF_DomPDF - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_PDF - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Writer_PDF_DomPDF extends PHPExcel_Writer_PDF_Core implements PHPExcel_Writer_IWriter -{ - /** - * Create a new PHPExcel_Writer_PDF - * - * @param PHPExcel $phpExcel PHPExcel object - */ - public function __construct(PHPExcel $phpExcel) - { - parent::__construct($phpExcel); - } - - /** - * Save PHPExcel to file - * - * @param string $pFilename Name of the file to save as - * @throws PHPExcel_Writer_Exception - */ - public function save($pFilename = null) - { - $fileHandle = parent::prepareForSave($pFilename); - - // Default PDF paper size - $paperSize = 'LETTER'; // Letter (8.5 in. by 11 in.) - - // Check for paper size and page orientation - if (is_null($this->getSheetIndex())) { - $orientation = ($this->phpExcel->getSheet(0)->getPageSetup()->getOrientation() - == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE) ? 'L' : 'P'; - $printPaperSize = $this->phpExcel->getSheet(0)->getPageSetup()->getPaperSize(); - $printMargins = $this->phpExcel->getSheet(0)->getPageMargins(); - } else { - $orientation = ($this->phpExcel->getSheet($this->getSheetIndex())->getPageSetup()->getOrientation() - == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE) ? 'L' : 'P'; - $printPaperSize = $this->phpExcel->getSheet($this->getSheetIndex())->getPageSetup()->getPaperSize(); - $printMargins = $this->phpExcel->getSheet($this->getSheetIndex())->getPageMargins(); - } - - $orientation = ($orientation == 'L') ? 'landscape' : 'portrait'; - - // Override Page Orientation - if (!is_null($this->getOrientation())) { - $orientation = ($this->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_DEFAULT) - ? PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT - : $this->getOrientation(); - } - // Override Paper Size - if (!is_null($this->getPaperSize())) { - $printPaperSize = $this->getPaperSize(); - } - - if (isset(self::$paperSizes[$printPaperSize])) { - $paperSize = self::$paperSizes[$printPaperSize]; - } - - - // Create PDF - $pdf = new DOMPDF(); - $pdf->set_paper(strtolower($paperSize), $orientation); - - $pdf->load_html( - $this->generateHTMLHeader(false) . - $this->generateSheetData() . - $this->generateHTMLFooter() - ); - $pdf->render(); - - // Write to file - fwrite($fileHandle, $pdf->output()); - - parent::restoreStateAfterSave($fileHandle); - } -} diff --git a/application/third_party/PHPExcel/Writer/PDF/mPDF.php b/application/third_party/PHPExcel/Writer/PDF/mPDF.php deleted file mode 100644 index e4e6057d..00000000 --- a/application/third_party/PHPExcel/Writer/PDF/mPDF.php +++ /dev/null @@ -1,118 +0,0 @@ -<?php - -/** Require mPDF library */ -$pdfRendererClassFile = PHPExcel_Settings::getPdfRendererPath() . '/mpdf.php'; -if (file_exists($pdfRendererClassFile)) { - require_once $pdfRendererClassFile; -} else { - throw new PHPExcel_Writer_Exception('Unable to load PDF Rendering library'); -} - -/** - * PHPExcel_Writer_PDF_mPDF - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_PDF - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Writer_PDF_mPDF extends PHPExcel_Writer_PDF_Core implements PHPExcel_Writer_IWriter -{ - /** - * Create a new PHPExcel_Writer_PDF - * - * @param PHPExcel $phpExcel PHPExcel object - */ - public function __construct(PHPExcel $phpExcel) - { - parent::__construct($phpExcel); - } - - /** - * Save PHPExcel to file - * - * @param string $pFilename Name of the file to save as - * @throws PHPExcel_Writer_Exception - */ - public function save($pFilename = null) - { - $fileHandle = parent::prepareForSave($pFilename); - - // Default PDF paper size - $paperSize = 'LETTER'; // Letter (8.5 in. by 11 in.) - - // Check for paper size and page orientation - if (is_null($this->getSheetIndex())) { - $orientation = ($this->phpExcel->getSheet(0)->getPageSetup()->getOrientation() - == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE) ? 'L' : 'P'; - $printPaperSize = $this->phpExcel->getSheet(0)->getPageSetup()->getPaperSize(); - $printMargins = $this->phpExcel->getSheet(0)->getPageMargins(); - } else { - $orientation = ($this->phpExcel->getSheet($this->getSheetIndex())->getPageSetup()->getOrientation() - == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE) ? 'L' : 'P'; - $printPaperSize = $this->phpExcel->getSheet($this->getSheetIndex())->getPageSetup()->getPaperSize(); - $printMargins = $this->phpExcel->getSheet($this->getSheetIndex())->getPageMargins(); - } - $this->setOrientation($orientation); - - // Override Page Orientation - if (!is_null($this->getOrientation())) { - $orientation = ($this->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_DEFAULT) - ? PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT - : $this->getOrientation(); - } - $orientation = strtoupper($orientation); - - // Override Paper Size - if (!is_null($this->getPaperSize())) { - $printPaperSize = $this->getPaperSize(); - } - - if (isset(self::$paperSizes[$printPaperSize])) { - $paperSize = self::$paperSizes[$printPaperSize]; - } - - - // Create PDF - $pdf = new mpdf(); - $ortmp = $orientation; - $pdf->_setPageSize(strtoupper($paperSize), $ortmp); - $pdf->DefOrientation = $orientation; - $pdf->AddPage($orientation); - - // Document info - $pdf->SetTitle($this->phpExcel->getProperties()->getTitle()); - $pdf->SetAuthor($this->phpExcel->getProperties()->getCreator()); - $pdf->SetSubject($this->phpExcel->getProperties()->getSubject()); - $pdf->SetKeywords($this->phpExcel->getProperties()->getKeywords()); - $pdf->SetCreator($this->phpExcel->getProperties()->getCreator()); - - $pdf->WriteHTML( - $this->generateHTMLHeader(false) . - $this->generateSheetData() . - $this->generateHTMLFooter() - ); - - // Write to file - fwrite($fileHandle, $pdf->Output('', 'S')); - - parent::restoreStateAfterSave($fileHandle); - } -} diff --git a/application/third_party/PHPExcel/Writer/PDF/tcPDF.php b/application/third_party/PHPExcel/Writer/PDF/tcPDF.php deleted file mode 100644 index dea33a35..00000000 --- a/application/third_party/PHPExcel/Writer/PDF/tcPDF.php +++ /dev/null @@ -1,123 +0,0 @@ -<?php - -/** Require tcPDF library */ -$pdfRendererClassFile = PHPExcel_Settings::getPdfRendererPath() . '/tcpdf.php'; -if (file_exists($pdfRendererClassFile)) { - $k_path_url = PHPExcel_Settings::getPdfRendererPath(); - require_once $pdfRendererClassFile; -} else { - throw new PHPExcel_Writer_Exception('Unable to load PDF Rendering library'); -} - -/** - * PHPExcel_Writer_PDF_tcPDF - * - * Copyright (c) 2006 - 2015 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel_Writer_PDF - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ -class PHPExcel_Writer_PDF_tcPDF extends PHPExcel_Writer_PDF_Core implements PHPExcel_Writer_IWriter -{ - /** - * Create a new PHPExcel_Writer_PDF - * - * @param PHPExcel $phpExcel PHPExcel object - */ - public function __construct(PHPExcel $phpExcel) - { - parent::__construct($phpExcel); - } - - /** - * Save PHPExcel to file - * - * @param string $pFilename Name of the file to save as - * @throws PHPExcel_Writer_Exception - */ - public function save($pFilename = null) - { - $fileHandle = parent::prepareForSave($pFilename); - - // Default PDF paper size - $paperSize = 'LETTER'; // Letter (8.5 in. by 11 in.) - - // Check for paper size and page orientation - if (is_null($this->getSheetIndex())) { - $orientation = ($this->phpExcel->getSheet(0)->getPageSetup()->getOrientation() - == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE) ? 'L' : 'P'; - $printPaperSize = $this->phpExcel->getSheet(0)->getPageSetup()->getPaperSize(); - $printMargins = $this->phpExcel->getSheet(0)->getPageMargins(); - } else { - $orientation = ($this->phpExcel->getSheet($this->getSheetIndex())->getPageSetup()->getOrientation() - == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE) ? 'L' : 'P'; - $printPaperSize = $this->phpExcel->getSheet($this->getSheetIndex())->getPageSetup()->getPaperSize(); - $printMargins = $this->phpExcel->getSheet($this->getSheetIndex())->getPageMargins(); - } - - // Override Page Orientation - if (!is_null($this->getOrientation())) { - $orientation = ($this->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE) - ? 'L' - : 'P'; - } - // Override Paper Size - if (!is_null($this->getPaperSize())) { - $printPaperSize = $this->getPaperSize(); - } - - if (isset(self::$paperSizes[$printPaperSize])) { - $paperSize = self::$paperSizes[$printPaperSize]; - } - - - // Create PDF - $pdf = new TCPDF($orientation, 'pt', $paperSize); - $pdf->setFontSubsetting(false); - // Set margins, converting inches to points (using 72 dpi) - $pdf->SetMargins($printMargins->getLeft() * 72, $printMargins->getTop() * 72, $printMargins->getRight() * 72); - $pdf->SetAutoPageBreak(true, $printMargins->getBottom() * 72); - - $pdf->setPrintHeader(false); - $pdf->setPrintFooter(false); - - $pdf->AddPage(); - - // Set the appropriate font - $pdf->SetFont($this->getFont()); - $pdf->writeHTML( - $this->generateHTMLHeader(false) . - $this->generateSheetData() . - $this->generateHTMLFooter() - ); - - // Document info - $pdf->SetTitle($this->phpExcel->getProperties()->getTitle()); - $pdf->SetAuthor($this->phpExcel->getProperties()->getCreator()); - $pdf->SetSubject($this->phpExcel->getProperties()->getSubject()); - $pdf->SetKeywords($this->phpExcel->getProperties()->getKeywords()); - $pdf->SetCreator($this->phpExcel->getProperties()->getCreator()); - - // Write to file - fwrite($fileHandle, $pdf->output($pFilename, 'S')); - - parent::restoreStateAfterSave($fileHandle); - } -} diff --git a/application/third_party/PHPExcel/locale/bg/config b/application/third_party/PHPExcel/locale/bg/config deleted file mode 100644 index 4cecddb3..00000000 --- a/application/third_party/PHPExcel/locale/bg/config +++ /dev/null @@ -1,49 +0,0 @@ -## -## PHPExcel -## - -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Settings -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## - - -ArgumentSeparator = ; - - -## -## (For future use) -## -currencySymbol = лв - - -## -## Excel Error Codes (For future use) - -## -NULL = #ПРАЗНО! -DIV0 = #ДЕЛ/0! -VALUE = #СТОЙНОСТ! -REF = #РЕФ! -NAME = #ИМЕ? -NUM = #ЧИСЛО! -NA = #Н/Д diff --git a/application/third_party/PHPExcel/locale/cs/config b/application/third_party/PHPExcel/locale/cs/config deleted file mode 100644 index 42cdf326..00000000 --- a/application/third_party/PHPExcel/locale/cs/config +++ /dev/null @@ -1,47 +0,0 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Settings -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## - - -ArgumentSeparator = ; - - -## -## (For future use) -## -currencySymbol = Kč - - -## -## Excel Error Codes (For future use) -## -NULL = #NULL! -DIV0 = #DIV/0! -VALUE = #HODNOTA! -REF = #REF! -NAME = #NÁZEV? -NUM = #NUM! -NA = #N/A diff --git a/application/third_party/PHPExcel/locale/cs/functions b/application/third_party/PHPExcel/locale/cs/functions deleted file mode 100644 index c0a3cbbf..00000000 --- a/application/third_party/PHPExcel/locale/cs/functions +++ /dev/null @@ -1,438 +0,0 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Calculation -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ -## -## - - -## -## Add-in and Automation functions Funkce doplňků a automatizace -## -GETPIVOTDATA = ZÍSKATKONTDATA ## Vrátí data uložená v kontingenční tabulce. Pomocí funkce ZÍSKATKONTDATA můžete načíst souhrnná data z kontingenční tabulky, pokud jsou tato data v kontingenční sestavě zobrazena. - - -## -## Cube functions Funkce pro práci s krychlemi -## -CUBEKPIMEMBER = CUBEKPIMEMBER ## Vrátí název, vlastnost a velikost klíčového ukazatele výkonu (KUV) a zobrazí v buňce název a vlastnost. Klíčový ukazatel výkonu je kvantifikovatelná veličina, například hrubý měsíční zisk nebo čtvrtletní obrat na zaměstnance, která se používá pro sledování výkonnosti organizace. -CUBEMEMBER = CUBEMEMBER ## Vrátí člen nebo n-tici v hierarchii krychle. Slouží k ověření, zda v krychli existuje člen nebo n-tice. -CUBEMEMBERPROPERTY = CUBEMEMBERPROPERTY ## Vrátí hodnotu vlastnosti člena v krychli. Slouží k ověření, zda v krychli existuje člen s daným názvem, a k vrácení konkrétní vlastnosti tohoto člena. -CUBERANKEDMEMBER = CUBERANKEDMEMBER ## Vrátí n-tý nebo pořadový člen sady. Použijte ji pro vrácení jednoho nebo více prvků sady, například obchodníka s nejvyšším obratem nebo deseti nejlepších studentů. -CUBESET = CUBESET ## Definuje vypočtenou sadu členů nebo n-tic odesláním výrazu sady do krychle na serveru, který vytvoří sadu a potom ji vrátí do aplikace Microsoft Office Excel. -CUBESETCOUNT = CUBESETCOUNT ## Vrátí počet položek v množině -CUBEVALUE = CUBEVALUE ## Vrátí úhrnnou hodnotu z krychle. - - -## -## Database functions Funkce databáze -## -DAVERAGE = DPRŮMĚR ## Vrátí průměr vybraných položek databáze. -DCOUNT = DPOČET ## Spočítá buňky databáze obsahující čísla. -DCOUNTA = DPOČET2 ## Spočítá buňky databáze, které nejsou prázdné. -DGET = DZÍSKAT ## Extrahuje z databáze jeden záznam splňující zadaná kritéria. -DMAX = DMAX ## Vrátí maximální hodnotu z vybraných položek databáze. -DMIN = DMIN ## Vrátí minimální hodnotu z vybraných položek databáze. -DPRODUCT = DSOUČIN ## Vynásobí hodnoty určitého pole záznamů v databázi, které splňují daná kritéria. -DSTDEV = DSMODCH.VÝBĚR ## Odhadne směrodatnou odchylku výběru vybraných položek databáze. -DSTDEVP = DSMODCH ## Vypočte směrodatnou odchylku základního souboru vybraných položek databáze. -DSUM = DSUMA ## Sečte čísla ve sloupcovém poli záznamů databáze, která splňují daná kritéria. -DVAR = DVAR.VÝBĚR ## Odhadne rozptyl výběru vybraných položek databáze. -DVARP = DVAR ## Vypočte rozptyl základního souboru vybraných položek databáze. - - -## -## Date and time functions Funkce data a času -## -DATE = DATUM ## Vrátí pořadové číslo určitého data. -DATEVALUE = DATUMHODN ## Převede datum ve formě textu na pořadové číslo. -DAY = DEN ## Převede pořadové číslo na den v měsíci. -DAYS360 = ROK360 ## Vrátí počet dní mezi dvěma daty na základě roku s 360 dny. -EDATE = EDATE ## Vrátí pořadové číslo data, které označuje určený počet měsíců před nebo po počátečním datu. -EOMONTH = EOMONTH ## Vrátí pořadové číslo posledního dne měsíce před nebo po zadaném počtu měsíců. -HOUR = HODINA ## Převede pořadové číslo na hodinu. -MINUTE = MINUTA ## Převede pořadové číslo na minutu. -MONTH = MĚSÍC ## Převede pořadové číslo na měsíc. -NETWORKDAYS = NETWORKDAYS ## Vrátí počet celých pracovních dní mezi dvěma daty. -NOW = NYNÍ ## Vrátí pořadové číslo aktuálního data a času. -SECOND = SEKUNDA ## Převede pořadové číslo na sekundu. -TIME = ČAS ## Vrátí pořadové číslo určitého času. -TIMEVALUE = ČASHODN ## Převede čas ve formě textu na pořadové číslo. -TODAY = DNES ## Vrátí pořadové číslo dnešního data. -WEEKDAY = DENTÝDNE ## Převede pořadové číslo na den v týdnu. -WEEKNUM = WEEKNUM ## Převede pořadové číslo na číslo představující číselnou pozici týdne v roce. -WORKDAY = WORKDAY ## Vrátí pořadové číslo data před nebo po zadaném počtu pracovních dní. -YEAR = ROK ## Převede pořadové číslo na rok. -YEARFRAC = YEARFRAC ## Vrátí část roku vyjádřenou zlomkem a představující počet celých dní mezi počátečním a koncovým datem. - - -## -## Engineering functions Inženýrské funkce (Technické funkce) -## -BESSELI = BESSELI ## Vrátí modifikovanou Besselovu funkci In(x). -BESSELJ = BESSELJ ## Vrátí modifikovanou Besselovu funkci Jn(x). -BESSELK = BESSELK ## Vrátí modifikovanou Besselovu funkci Kn(x). -BESSELY = BESSELY ## Vrátí Besselovu funkci Yn(x). -BIN2DEC = BIN2DEC ## Převede binární číslo na desítkové. -BIN2HEX = BIN2HEX ## Převede binární číslo na šestnáctkové. -BIN2OCT = BIN2OCT ## Převede binární číslo na osmičkové. -COMPLEX = COMPLEX ## Převede reálnou a imaginární část na komplexní číslo. -CONVERT = CONVERT ## Převede číslo do jiného jednotkového měrného systému. -DEC2BIN = DEC2BIN ## Převede desítkového čísla na dvojkové -DEC2HEX = DEC2HEX ## Převede desítkové číslo na šestnáctkové. -DEC2OCT = DEC2OCT ## Převede desítkové číslo na osmičkové. -DELTA = DELTA ## Testuje rovnost dvou hodnot. -ERF = ERF ## Vrátí chybovou funkci. -ERFC = ERFC ## Vrátí doplňkovou chybovou funkci. -GESTEP = GESTEP ## Testuje, zda je číslo větší než mezní hodnota. -HEX2BIN = HEX2BIN ## Převede šestnáctkové číslo na binární. -HEX2DEC = HEX2DEC ## Převede šestnáctkové číslo na desítkové. -HEX2OCT = HEX2OCT ## Převede šestnáctkové číslo na osmičkové. -IMABS = IMABS ## Vrátí absolutní hodnotu (modul) komplexního čísla. -IMAGINARY = IMAGINARY ## Vrátí imaginární část komplexního čísla. -IMARGUMENT = IMARGUMENT ## Vrátí argument théta, úhel vyjádřený v radiánech. -IMCONJUGATE = IMCONJUGATE ## Vrátí komplexně sdružené číslo ke komplexnímu číslu. -IMCOS = IMCOS ## Vrátí kosinus komplexního čísla. -IMDIV = IMDIV ## Vrátí podíl dvou komplexních čísel. -IMEXP = IMEXP ## Vrátí exponenciální tvar komplexního čísla. -IMLN = IMLN ## Vrátí přirozený logaritmus komplexního čísla. -IMLOG10 = IMLOG10 ## Vrátí dekadický logaritmus komplexního čísla. -IMLOG2 = IMLOG2 ## Vrátí logaritmus komplexního čísla při základu 2. -IMPOWER = IMPOWER ## Vrátí komplexní číslo umocněné na celé číslo. -IMPRODUCT = IMPRODUCT ## Vrátí součin komplexních čísel. -IMREAL = IMREAL ## Vrátí reálnou část komplexního čísla. -IMSIN = IMSIN ## Vrátí sinus komplexního čísla. -IMSQRT = IMSQRT ## Vrátí druhou odmocninu komplexního čísla. -IMSUB = IMSUB ## Vrátí rozdíl mezi dvěma komplexními čísly. -IMSUM = IMSUM ## Vrátí součet dvou komplexních čísel. -OCT2BIN = OCT2BIN ## Převede osmičkové číslo na binární. -OCT2DEC = OCT2DEC ## Převede osmičkové číslo na desítkové. -OCT2HEX = OCT2HEX ## Převede osmičkové číslo na šestnáctkové. - - -## -## Financial functions Finanční funkce -## -ACCRINT = ACCRINT ## Vrátí nahromaděný úrok z cenného papíru, ze kterého je úrok placen v pravidelných termínech. -ACCRINTM = ACCRINTM ## Vrátí nahromaděný úrok z cenného papíru, ze kterého je úrok placen k datu splatnosti. -AMORDEGRC = AMORDEGRC ## Vrátí lineární amortizaci v každém účetním období pomocí koeficientu amortizace. -AMORLINC = AMORLINC ## Vrátí lineární amortizaci v každém účetním období. -COUPDAYBS = COUPDAYBS ## Vrátí počet dnů od začátku období placení kupónů do data splatnosti. -COUPDAYS = COUPDAYS ## Vrátí počet dnů v období placení kupónů, které obsahuje den zúčtování. -COUPDAYSNC = COUPDAYSNC ## Vrátí počet dnů od data zúčtování do následujícího data placení kupónu. -COUPNCD = COUPNCD ## Vrátí následující datum placení kupónu po datu zúčtování. -COUPNUM = COUPNUM ## Vrátí počet kupónů splatných mezi datem zúčtování a datem splatnosti. -COUPPCD = COUPPCD ## Vrátí předchozí datum placení kupónu před datem zúčtování. -CUMIPMT = CUMIPMT ## Vrátí kumulativní úrok splacený mezi dvěma obdobími. -CUMPRINC = CUMPRINC ## Vrátí kumulativní jistinu splacenou mezi dvěma obdobími půjčky. -DB = ODPIS.ZRYCH ## Vrátí odpis aktiva za určité období pomocí degresivní metody odpisu s pevným zůstatkem. -DDB = ODPIS.ZRYCH2 ## Vrátí odpis aktiva za určité období pomocí dvojité degresivní metody odpisu nebo jiné metody, kterou zadáte. -DISC = DISC ## Vrátí diskontní sazbu cenného papíru. -DOLLARDE = DOLLARDE ## Převede částku v korunách vyjádřenou zlomkem na částku v korunách vyjádřenou desetinným číslem. -DOLLARFR = DOLLARFR ## Převede částku v korunách vyjádřenou desetinným číslem na částku v korunách vyjádřenou zlomkem. -DURATION = DURATION ## Vrátí roční dobu cenného papíru s pravidelnými úrokovými sazbami. -EFFECT = EFFECT ## Vrátí efektivní roční úrokovou sazbu. -FV = BUDHODNOTA ## Vrátí budoucí hodnotu investice. -FVSCHEDULE = FVSCHEDULE ## Vrátí budoucí hodnotu počáteční jistiny po použití série sazeb složitého úroku. -INTRATE = INTRATE ## Vrátí úrokovou sazbu plně investovaného cenného papíru. -IPMT = PLATBA.ÚROK ## Vrátí výšku úroku investice za dané období. -IRR = MÍRA.VÝNOSNOSTI ## Vrátí vnitřní výnosové procento série peněžních toků. -ISPMT = ISPMT ## Vypočte výši úroku z investice zaplaceného během určitého období. -MDURATION = MDURATION ## Vrátí Macauleyho modifikovanou dobu cenného papíru o nominální hodnotě 100 Kč. -MIRR = MOD.MÍRA.VÝNOSNOSTI ## Vrátí vnitřní sazbu výnosu, přičemž kladné a záporné hodnoty peněžních prostředků jsou financovány podle různých sazeb. -NOMINAL = NOMINAL ## Vrátí nominální roční úrokovou sazbu. -NPER = POČET.OBDOBÍ ## Vrátí počet období pro investici. -NPV = ČISTÁ.SOUČHODNOTA ## Vrátí čistou současnou hodnotu investice vypočítanou na základě série pravidelných peněžních toků a diskontní sazby. -ODDFPRICE = ODDFPRICE ## Vrátí cenu cenného papíru o nominální hodnotě 100 Kč s odlišným prvním obdobím. -ODDFYIELD = ODDFYIELD ## Vrátí výnos cenného papíru s odlišným prvním obdobím. -ODDLPRICE = ODDLPRICE ## Vrátí cenu cenného papíru o nominální hodnotě 100 Kč s odlišným posledním obdobím. -ODDLYIELD = ODDLYIELD ## Vrátí výnos cenného papíru s odlišným posledním obdobím. -PMT = PLATBA ## Vrátí hodnotu pravidelné splátky anuity. -PPMT = PLATBA.ZÁKLAD ## Vrátí hodnotu splátky jistiny pro zadanou investici za dané období. -PRICE = PRICE ## Vrátí cenu cenného papíru o nominální hodnotě 100 Kč, ze kterého je úrok placen v pravidelných termínech. -PRICEDISC = PRICEDISC ## Vrátí cenu diskontního cenného papíru o nominální hodnotě 100 Kč. -PRICEMAT = PRICEMAT ## Vrátí cenu cenného papíru o nominální hodnotě 100 Kč, ze kterého je úrok placen k datu splatnosti. -PV = SOUČHODNOTA ## Vrátí současnou hodnotu investice. -RATE = ÚROKOVÁ.MÍRA ## Vrátí úrokovou sazbu vztaženou na období anuity. -RECEIVED = RECEIVED ## Vrátí částku obdrženou k datu splatnosti plně investovaného cenného papíru. -SLN = ODPIS.LIN ## Vrátí přímé odpisy aktiva pro jedno období. -SYD = ODPIS.NELIN ## Vrátí směrné číslo ročních odpisů aktiva pro zadané období. -TBILLEQ = TBILLEQ ## Vrátí výnos směnky státní pokladny ekvivalentní výnosu obligace. -TBILLPRICE = TBILLPRICE ## Vrátí cenu směnky státní pokladny o nominální hodnotě 100 Kč. -TBILLYIELD = TBILLYIELD ## Vrátí výnos směnky státní pokladny. -VDB = ODPIS.ZA.INT ## Vrátí odpis aktiva pro určité období nebo část období pomocí degresivní metody odpisu. -XIRR = XIRR ## Vrátí vnitřní výnosnost pro harmonogram peněžních toků, který nemusí být nutně periodický. -XNPV = XNPV ## Vrátí čistou současnou hodnotu pro harmonogram peněžních toků, který nemusí být nutně periodický. -YIELD = YIELD ## Vrátí výnos cenného papíru, ze kterého je úrok placen v pravidelných termínech. -YIELDDISC = YIELDDISC ## Vrátí roční výnos diskontního cenného papíru, například směnky státní pokladny. -YIELDMAT = YIELDMAT ## Vrátí roční výnos cenného papíru, ze kterého je úrok placen k datu splatnosti. - - -## -## Information functions Informační funkce -## -CELL = POLÍČKO ## Vrátí informace o formátování, umístění nebo obsahu buňky. -ERROR.TYPE = CHYBA.TYP ## Vrátí číslo odpovídající typu chyby. -INFO = O.PROSTŘEDÍ ## Vrátí informace o aktuálním pracovním prostředí. -ISBLANK = JE.PRÁZDNÉ ## Vrátí hodnotu PRAVDA, pokud se argument hodnota odkazuje na prázdnou buňku. -ISERR = JE.CHYBA ## Vrátí hodnotu PRAVDA, pokud je argument hodnota libovolná chybová hodnota (kromě #N/A). -ISERROR = JE.CHYBHODN ## Vrátí hodnotu PRAVDA, pokud je argument hodnota libovolná chybová hodnota. -ISEVEN = ISEVEN ## Vrátí hodnotu PRAVDA, pokud je číslo sudé. -ISLOGICAL = JE.LOGHODN ## Vrátí hodnotu PRAVDA, pokud je argument hodnota logická hodnota. -ISNA = JE.NEDEF ## Vrátí hodnotu PRAVDA, pokud je argument hodnota chybová hodnota #N/A. -ISNONTEXT = JE.NETEXT ## Vrátí hodnotu PRAVDA, pokud argument hodnota není text. -ISNUMBER = JE.ČÍSLO ## Vrátí hodnotu PRAVDA, pokud je argument hodnota číslo. -ISODD = ISODD ## Vrátí hodnotu PRAVDA, pokud je číslo liché. -ISREF = JE.ODKAZ ## Vrátí hodnotu PRAVDA, pokud je argument hodnota odkaz. -ISTEXT = JE.TEXT ## Vrátí hodnotu PRAVDA, pokud je argument hodnota text. -N = N ## Vrátí hodnotu převedenou na číslo. -NA = NEDEF ## Vrátí chybovou hodnotu #N/A. -TYPE = TYP ## Vrátí číslo označující datový typ hodnoty. - - -## -## Logical functions Logické funkce -## -AND = A ## Vrátí hodnotu PRAVDA, mají-li všechny argumenty hodnotu PRAVDA. -FALSE = NEPRAVDA ## Vrátí logickou hodnotu NEPRAVDA. -IF = KDYŽ ## Určí, který logický test má proběhnout. -IFERROR = IFERROR ## Pokud je vzorec vyhodnocen jako chyba, vrátí zadanou hodnotu. V opačném případě vrátí výsledek vzorce. -NOT = NE ## Provede logickou negaci argumentu funkce. -OR = NEBO ## Vrátí hodnotu PRAVDA, je-li alespoň jeden argument roven hodnotě PRAVDA. -TRUE = PRAVDA ## Vrátí logickou hodnotu PRAVDA. - - -## -## Lookup and reference functions Vyhledávací funkce -## -ADDRESS = ODKAZ ## Vrátí textový odkaz na jednu buňku listu. -AREAS = POČET.BLOKŮ ## Vrátí počet oblastí v odkazu. -CHOOSE = ZVOLIT ## Zvolí hodnotu ze seznamu hodnot. -COLUMN = SLOUPEC ## Vrátí číslo sloupce odkazu. -COLUMNS = SLOUPCE ## Vrátí počet sloupců v odkazu. -HLOOKUP = VVYHLEDAT ## Prohledá horní řádek matice a vrátí hodnotu určené buňky. -HYPERLINK = HYPERTEXTOVÝ.ODKAZ ## Vytvoří zástupce nebo odkaz, který otevře dokument uložený na síťovém serveru, v síti intranet nebo Internet. -INDEX = INDEX ## Pomocí rejstříku zvolí hodnotu z odkazu nebo matice. -INDIRECT = NEPŘÍMÝ.ODKAZ ## Vrátí odkaz určený textovou hodnotou. -LOOKUP = VYHLEDAT ## Vyhledá hodnoty ve vektoru nebo matici. -MATCH = POZVYHLEDAT ## Vyhledá hodnoty v odkazu nebo matici. -OFFSET = POSUN ## Vrátí posun odkazu od zadaného odkazu. -ROW = ŘÁDEK ## Vrátí číslo řádku odkazu. -ROWS = ŘÁDKY ## Vrátí počet řádků v odkazu. -RTD = RTD ## Načte data reálného času z programu, který podporuje automatizaci modelu COM (Automatizace: Způsob práce s objekty určité aplikace z jiné aplikace nebo nástroje pro vývoj. Automatizace (dříve nazývaná automatizace OLE) je počítačovým standardem a je funkcí modelu COM (Component Object Model).). -TRANSPOSE = TRANSPOZICE ## Vrátí transponovanou matici. -VLOOKUP = SVYHLEDAT ## Prohledá první sloupec matice, přesune kurzor v řádku a vrátí hodnotu buňky. - - -## -## Math and trigonometry functions Matematické a trigonometrické funkce -## -ABS = ABS ## Vrátí absolutní hodnotu čísla. -ACOS = ARCCOS ## Vrátí arkuskosinus čísla. -ACOSH = ARCCOSH ## Vrátí hyperbolický arkuskosinus čísla. -ASIN = ARCSIN ## Vrátí arkussinus čísla. -ASINH = ARCSINH ## Vrátí hyperbolický arkussinus čísla. -ATAN = ARCTG ## Vrátí arkustangens čísla. -ATAN2 = ARCTG2 ## Vrátí arkustangens x-ové a y-ové souřadnice. -ATANH = ARCTGH ## Vrátí hyperbolický arkustangens čísla. -CEILING = ZAOKR.NAHORU ## Zaokrouhlí číslo na nejbližší celé číslo nebo na nejbližší násobek zadané hodnoty. -COMBIN = KOMBINACE ## Vrátí počet kombinací pro daný počet položek. -COS = COS ## Vrátí kosinus čísla. -COSH = COSH ## Vrátí hyperbolický kosinus čísla. -DEGREES = DEGREES ## Převede radiány na stupně. -EVEN = ZAOKROUHLIT.NA.SUDÉ ## Zaokrouhlí číslo nahoru na nejbližší celé sudé číslo. -EXP = EXP ## Vrátí základ přirozeného logaritmu e umocněný na zadané číslo. -FACT = FAKTORIÁL ## Vrátí faktoriál čísla. -FACTDOUBLE = FACTDOUBLE ## Vrátí dvojitý faktoriál čísla. -FLOOR = ZAOKR.DOLŮ ## Zaokrouhlí číslo dolů, směrem k nule. -GCD = GCD ## Vrátí největší společný dělitel. -INT = CELÁ.ČÁST ## Zaokrouhlí číslo dolů na nejbližší celé číslo. -LCM = LCM ## Vrátí nejmenší společný násobek. -LN = LN ## Vrátí přirozený logaritmus čísla. -LOG = LOGZ ## Vrátí logaritmus čísla při zadaném základu. -LOG10 = LOG ## Vrátí dekadický logaritmus čísla. -MDETERM = DETERMINANT ## Vrátí determinant matice. -MINVERSE = INVERZE ## Vrátí inverzní matici. -MMULT = SOUČIN.MATIC ## Vrátí součin dvou matic. -MOD = MOD ## Vrátí zbytek po dělení. -MROUND = MROUND ## Vrátí číslo zaokrouhlené na požadovaný násobek. -MULTINOMIAL = MULTINOMIAL ## Vrátí mnohočlen z množiny čísel. -ODD = ZAOKROUHLIT.NA.LICHÉ ## Zaokrouhlí číslo nahoru na nejbližší celé liché číslo. -PI = PI ## Vrátí hodnotu čísla pí. -POWER = POWER ## Umocní číslo na zadanou mocninu. -PRODUCT = SOUČIN ## Vynásobí argumenty funkce. -QUOTIENT = QUOTIENT ## Vrátí celou část dělení. -RADIANS = RADIANS ## Převede stupně na radiány. -RAND = NÁHČÍSLO ## Vrátí náhodné číslo mezi 0 a 1. -RANDBETWEEN = RANDBETWEEN ## Vrátí náhodné číslo mezi zadanými čísly. -ROMAN = ROMAN ## Převede arabskou číslici na římskou ve formátu textu. -ROUND = ZAOKROUHLIT ## Zaokrouhlí číslo na zadaný počet číslic. -ROUNDDOWN = ROUNDDOWN ## Zaokrouhlí číslo dolů, směrem k nule. -ROUNDUP = ROUNDUP ## Zaokrouhlí číslo nahoru, směrem od nuly. -SERIESSUM = SERIESSUM ## Vrátí součet mocninné řady určené podle vzorce. -SIGN = SIGN ## Vrátí znaménko čísla. -SIN = SIN ## Vrátí sinus daného úhlu. -SINH = SINH ## Vrátí hyperbolický sinus čísla. -SQRT = ODMOCNINA ## Vrátí kladnou druhou odmocninu. -SQRTPI = SQRTPI ## Vrátí druhou odmocninu výrazu (číslo * pí). -SUBTOTAL = SUBTOTAL ## Vrátí souhrn v seznamu nebo databázi. -SUM = SUMA ## Sečte argumenty funkce. -SUMIF = SUMIF ## Sečte buňky vybrané podle zadaných kritérií. -SUMIFS = SUMIFS ## Sečte buňky určené více zadanými podmínkami. -SUMPRODUCT = SOUČIN.SKALÁRNÍ ## Vrátí součet součinů odpovídajících prvků matic. -SUMSQ = SUMA.ČTVERCŮ ## Vrátí součet čtverců argumentů. -SUMX2MY2 = SUMX2MY2 ## Vrátí součet rozdílu čtverců odpovídajících hodnot ve dvou maticích. -SUMX2PY2 = SUMX2PY2 ## Vrátí součet součtu čtverců odpovídajících hodnot ve dvou maticích. -SUMXMY2 = SUMXMY2 ## Vrátí součet čtverců rozdílů odpovídajících hodnot ve dvou maticích. -TAN = TGTG ## Vrátí tangens čísla. -TANH = TGH ## Vrátí hyperbolický tangens čísla. -TRUNC = USEKNOUT ## Zkrátí číslo na celé číslo. - - -## -## Statistical functions Statistické funkce -## -AVEDEV = PRŮMODCHYLKA ## Vrátí průměrnou hodnotu absolutních odchylek datových bodů od jejich střední hodnoty. -AVERAGE = PRŮMĚR ## Vrátí průměrnou hodnotu argumentů. -AVERAGEA = AVERAGEA ## Vrátí průměrnou hodnotu argumentů včetně čísel, textu a logických hodnot. -AVERAGEIF = AVERAGEIF ## Vrátí průměrnou hodnotu (aritmetický průměr) všech buněk v oblasti, které vyhovují příslušné podmínce. -AVERAGEIFS = AVERAGEIFS ## Vrátí průměrnou hodnotu (aritmetický průměr) všech buněk vyhovujících několika podmínkám. -BETADIST = BETADIST ## Vrátí hodnotu součtového rozdělení beta. -BETAINV = BETAINV ## Vrátí inverzní hodnotu součtového rozdělení pro zadané rozdělení beta. -BINOMDIST = BINOMDIST ## Vrátí hodnotu binomického rozdělení pravděpodobnosti jednotlivých veličin. -CHIDIST = CHIDIST ## Vrátí jednostrannou pravděpodobnost rozdělení chí-kvadrát. -CHIINV = CHIINV ## Vrátí hodnotu funkce inverzní k distribuční funkci jednostranné pravděpodobnosti rozdělení chí-kvadrát. -CHITEST = CHITEST ## Vrátí test nezávislosti. -CONFIDENCE = CONFIDENCE ## Vrátí interval spolehlivosti pro střední hodnotu základního souboru. -CORREL = CORREL ## Vrátí korelační koeficient mezi dvěma množinami dat. -COUNT = POČET ## Vrátí počet čísel v seznamu argumentů. -COUNTA = POČET2 ## Vrátí počet hodnot v seznamu argumentů. -COUNTBLANK = COUNTBLANK ## Spočítá počet prázdných buněk v oblasti. -COUNTIF = COUNTIF ## Spočítá buňky v oblasti, které odpovídají zadaným kritériím. -COUNTIFS = COUNTIFS ## Spočítá buňky v oblasti, které odpovídají více kritériím. -COVAR = COVAR ## Vrátí hodnotu kovariance, průměrnou hodnotu součinů párových odchylek -CRITBINOM = CRITBINOM ## Vrátí nejmenší hodnotu, pro kterou má součtové binomické rozdělení hodnotu větší nebo rovnu hodnotě kritéria. -DEVSQ = DEVSQ ## Vrátí součet čtverců odchylek. -EXPONDIST = EXPONDIST ## Vrátí hodnotu exponenciálního rozdělení. -FDIST = FDIST ## Vrátí hodnotu rozdělení pravděpodobnosti F. -FINV = FINV ## Vrátí hodnotu inverzní funkce k distribuční funkci rozdělení F. -FISHER = FISHER ## Vrátí hodnotu Fisherovy transformace. -FISHERINV = FISHERINV ## Vrátí hodnotu inverzní funkce k Fisherově transformaci. -FORECAST = FORECAST ## Vrátí hodnotu lineárního trendu. -FREQUENCY = ČETNOSTI ## Vrátí četnost rozdělení jako svislou matici. -FTEST = FTEST ## Vrátí výsledek F-testu. -GAMMADIST = GAMMADIST ## Vrátí hodnotu rozdělení gama. -GAMMAINV = GAMMAINV ## Vrátí hodnotu inverzní funkce k distribuční funkci součtového rozdělení gama. -GAMMALN = GAMMALN ## Vrátí přirozený logaritmus funkce gama, Γ(x). -GEOMEAN = GEOMEAN ## Vrátí geometrický průměr. -GROWTH = LOGLINTREND ## Vrátí hodnoty exponenciálního trendu. -HARMEAN = HARMEAN ## Vrátí harmonický průměr. -HYPGEOMDIST = HYPGEOMDIST ## Vrátí hodnotu hypergeometrického rozdělení. -INTERCEPT = INTERCEPT ## Vrátí úsek lineární regresní čáry. -KURT = KURT ## Vrátí hodnotu excesu množiny dat. -LARGE = LARGE ## Vrátí k-tou největší hodnotu množiny dat. -LINEST = LINREGRESE ## Vrátí parametry lineárního trendu. -LOGEST = LOGLINREGRESE ## Vrátí parametry exponenciálního trendu. -LOGINV = LOGINV ## Vrátí inverzní funkci k distribuční funkci logaritmicko-normálního rozdělení. -LOGNORMDIST = LOGNORMDIST ## Vrátí hodnotu součtového logaritmicko-normálního rozdělení. -MAX = MAX ## Vrátí maximální hodnotu seznamu argumentů. -MAXA = MAXA ## Vrátí maximální hodnotu seznamu argumentů včetně čísel, textu a logických hodnot. -MEDIAN = MEDIAN ## Vrátí střední hodnotu zadaných čísel. -MIN = MIN ## Vrátí minimální hodnotu seznamu argumentů. -MINA = MINA ## Vrátí nejmenší hodnotu v seznamu argumentů včetně čísel, textu a logických hodnot. -MODE = MODE ## Vrátí hodnotu, která se v množině dat vyskytuje nejčastěji. -NEGBINOMDIST = NEGBINOMDIST ## Vrátí hodnotu negativního binomického rozdělení. -NORMDIST = NORMDIST ## Vrátí hodnotu normálního součtového rozdělení. -NORMINV = NORMINV ## Vrátí inverzní funkci k funkci normálního součtového rozdělení. -NORMSDIST = NORMSDIST ## Vrátí hodnotu standardního normálního součtového rozdělení. -NORMSINV = NORMSINV ## Vrátí inverzní funkci k funkci standardního normálního součtového rozdělení. -PEARSON = PEARSON ## Vrátí Pearsonův výsledný momentový korelační koeficient. -PERCENTILE = PERCENTIL ## Vrátí hodnotu k-tého percentilu hodnot v oblasti. -PERCENTRANK = PERCENTRANK ## Vrátí pořadí hodnoty v množině dat vyjádřené procentuální částí množiny dat. -PERMUT = PERMUTACE ## Vrátí počet permutací pro zadaný počet objektů. -POISSON = POISSON ## Vrátí hodnotu distribuční funkce Poissonova rozdělení. -PROB = PROB ## Vrátí pravděpodobnost výskytu hodnot v oblasti mezi dvěma mezními hodnotami. -QUARTILE = QUARTIL ## Vrátí hodnotu kvartilu množiny dat. -RANK = RANK ## Vrátí pořadí čísla v seznamu čísel. -RSQ = RKQ ## Vrátí druhou mocninu Pearsonova výsledného momentového korelačního koeficientu. -SKEW = SKEW ## Vrátí zešikmení rozdělení. -SLOPE = SLOPE ## Vrátí směrnici lineární regresní čáry. -SMALL = SMALL ## Vrátí k-tou nejmenší hodnotu množiny dat. -STANDARDIZE = STANDARDIZE ## Vrátí normalizovanou hodnotu. -STDEV = SMODCH.VÝBĚR ## Vypočte směrodatnou odchylku výběru. -STDEVA = STDEVA ## Vypočte směrodatnou odchylku výběru včetně čísel, textu a logických hodnot. -STDEVP = SMODCH ## Vypočte směrodatnou odchylku základního souboru. -STDEVPA = STDEVPA ## Vypočte směrodatnou odchylku základního souboru včetně čísel, textu a logických hodnot. -STEYX = STEYX ## Vrátí standardní chybu předpovězené hodnoty y pro každou hodnotu x v regresi. -TDIST = TDIST ## Vrátí hodnotu Studentova t-rozdělení. -TINV = TINV ## Vrátí inverzní funkci k distribuční funkci Studentova t-rozdělení. -TREND = LINTREND ## Vrátí hodnoty lineárního trendu. -TRIMMEAN = TRIMMEAN ## Vrátí střední hodnotu vnitřní části množiny dat. -TTEST = TTEST ## Vrátí pravděpodobnost spojenou se Studentovým t-testem. -VAR = VAR.VÝBĚR ## Vypočte rozptyl výběru. -VARA = VARA ## Vypočte rozptyl výběru včetně čísel, textu a logických hodnot. -VARP = VAR ## Vypočte rozptyl základního souboru. -VARPA = VARPA ## Vypočte rozptyl základního souboru včetně čísel, textu a logických hodnot. -WEIBULL = WEIBULL ## Vrátí hodnotu Weibullova rozdělení. -ZTEST = ZTEST ## Vrátí jednostrannou P-hodnotu z-testu. - - -## -## Text functions Textové funkce -## -ASC = ASC ## Změní znaky s plnou šířkou (dvoubajtové)v řetězci znaků na znaky s poloviční šířkou (jednobajtové). -BAHTTEXT = BAHTTEXT ## Převede číslo na text ve formátu, měny ß (baht). -CHAR = ZNAK ## Vrátí znak určený číslem kódu. -CLEAN = VYČISTIT ## Odebere z textu všechny netisknutelné znaky. -CODE = KÓD ## Vrátí číselný kód prvního znaku zadaného textového řetězce. -CONCATENATE = CONCATENATE ## Spojí několik textových položek do jedné. -DOLLAR = KČ ## Převede číslo na text ve formátu měny Kč (česká koruna). -EXACT = STEJNÉ ## Zkontroluje, zda jsou dvě textové hodnoty shodné. -FIND = NAJÍT ## Nalezne textovou hodnotu uvnitř jiné (rozlišuje malá a velká písmena). -FINDB = FINDB ## Nalezne textovou hodnotu uvnitř jiné (rozlišuje malá a velká písmena). -FIXED = ZAOKROUHLIT.NA.TEXT ## Zformátuje číslo jako text s pevným počtem desetinných míst. -JIS = JIS ## Změní znaky s poloviční šířkou (jednobajtové) v řetězci znaků na znaky s plnou šířkou (dvoubajtové). -LEFT = ZLEVA ## Vrátí první znaky textové hodnoty umístěné nejvíce vlevo. -LEFTB = LEFTB ## Vrátí první znaky textové hodnoty umístěné nejvíce vlevo. -LEN = DÉLKA ## Vrátí počet znaků textového řetězce. -LENB = LENB ## Vrátí počet znaků textového řetězce. -LOWER = MALÁ ## Převede text na malá písmena. -MID = ČÁST ## Vrátí určitý počet znaků textového řetězce počínaje zadaným místem. -MIDB = MIDB ## Vrátí určitý počet znaků textového řetězce počínaje zadaným místem. -PHONETIC = ZVUKOVÉ ## Extrahuje fonetické znaky (furigana) z textového řetězce. -PROPER = VELKÁ2 ## Převede první písmeno každého slova textové hodnoty na velké. -REPLACE = NAHRADIT ## Nahradí znaky uvnitř textu. -REPLACEB = NAHRADITB ## Nahradí znaky uvnitř textu. -REPT = OPAKOVAT ## Zopakuje text podle zadaného počtu opakování. -RIGHT = ZPRAVA ## Vrátí první znaky textové hodnoty umístěné nejvíce vpravo. -RIGHTB = RIGHTB ## Vrátí první znaky textové hodnoty umístěné nejvíce vpravo. -SEARCH = HLEDAT ## Nalezne textovou hodnotu uvnitř jiné (malá a velká písmena nejsou rozlišována). -SEARCHB = SEARCHB ## Nalezne textovou hodnotu uvnitř jiné (malá a velká písmena nejsou rozlišována). -SUBSTITUTE = DOSADIT ## V textovém řetězci nahradí starý text novým. -T = T ## Převede argumenty na text. -TEXT = HODNOTA.NA.TEXT ## Zformátuje číslo a převede ho na text. -TRIM = PROČISTIT ## Odstraní z textu mezery. -UPPER = VELKÁ ## Převede text na velká písmena. -VALUE = HODNOTA ## Převede textový argument na číslo. diff --git a/application/third_party/PHPExcel/locale/da/config b/application/third_party/PHPExcel/locale/da/config deleted file mode 100644 index ae590031..00000000 --- a/application/third_party/PHPExcel/locale/da/config +++ /dev/null @@ -1,48 +0,0 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Settings -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## - - -ArgumentSeparator = ; - - -## -## (For future use) -## -currencySymbol = kr - - - -## -## Excel Error Codes (For future use) -## -NULL = #NUL! -DIV0 = #DIVISION/0! -VALUE = #VÆRDI! -REF = #REFERENCE! -NAME = #NAVN? -NUM = #NUM! -NA = #I/T diff --git a/application/third_party/PHPExcel/locale/da/functions b/application/third_party/PHPExcel/locale/da/functions deleted file mode 100644 index 26e0310c..00000000 --- a/application/third_party/PHPExcel/locale/da/functions +++ /dev/null @@ -1,438 +0,0 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Calculation -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ -## -## - - -## -## Add-in and Automation functions Tilføjelsesprogram- og automatiseringsfunktioner -## -GETPIVOTDATA = HENTPIVOTDATA ## Returnerer data, der er lagret i en pivottabelrapport - - -## -## Cube functions Kubefunktioner -## -CUBEKPIMEMBER = KUBE.KPI.MEDLEM ## Returnerer navn, egenskab og mål for en KPI-indikator og viser navnet og egenskaben i cellen. En KPI-indikator er en målbar størrelse, f.eks. bruttooverskud pr. måned eller personaleudskiftning pr. kvartal, der bruges til at overvåge en organisations præstationer. -CUBEMEMBER = KUBE.MEDLEM ## Returnerer et medlem eller en tupel fra kubehierarkiet. Bruges til at validere, om et medlem eller en tupel findes i kuben. -CUBEMEMBERPROPERTY = KUBEMEDLEM.EGENSKAB ## Returnerer værdien af en egenskab for et medlem i kuben. Bruges til at validere, om et medlemsnavn findes i kuben, og returnere den angivne egenskab for medlemmet. -CUBERANKEDMEMBER = KUBEMEDLEM.RANG ## Returnerer det n'te eller rangordnede medlem i et sæt. Bruges til at returnere et eller flere elementer i et sæt, f.eks. topsælgere eller de 10 bedste elever. -CUBESET = KUBESÆT ## Definerer et beregnet sæt medlemmer eller tupler ved at sende et sætudtryk til kuben på serveren, som opretter sættet og returnerer det til Microsoft Office Excel. -CUBESETCOUNT = KUBESÆT.TÆL ## Returnerer antallet af elementer i et sæt. -CUBEVALUE = KUBEVÆRDI ## Returnerer en sammenlagt (aggregeret) værdi fra en kube. - - -## -## Database functions Databasefunktioner -## -DAVERAGE = DMIDDEL ## Returnerer gennemsnittet af markerede databaseposter -DCOUNT = DTÆL ## Tæller de celler, der indeholder tal, i en database -DCOUNTA = DTÆLV ## Tæller udfyldte celler i en database -DGET = DHENT ## Uddrager en enkelt post, der opfylder de angivne kriterier, fra en database -DMAX = DMAKS ## Returnerer den største værdi blandt markerede databaseposter -DMIN = DMIN ## Returnerer den mindste værdi blandt markerede databaseposter -DPRODUCT = DPRODUKT ## Ganger værdierne i et bestemt felt med poster, der opfylder kriterierne i en database -DSTDEV = DSTDAFV ## Beregner et skøn over standardafvigelsen baseret på en stikprøve af markerede databaseposter -DSTDEVP = DSTDAFVP ## Beregner standardafvigelsen baseret på hele populationen af markerede databaseposter -DSUM = DSUM ## Sammenlægger de tal i feltkolonnen i databasen, der opfylder kriterierne -DVAR = DVARIANS ## Beregner varians baseret på en stikprøve af markerede databaseposter -DVARP = DVARIANSP ## Beregner varians baseret på hele populationen af markerede databaseposter - - -## -## Date and time functions Dato- og klokkeslætsfunktioner -## -DATE = DATO ## Returnerer serienummeret for en bestemt dato -DATEVALUE = DATOVÆRDI ## Konverterer en dato i form af tekst til et serienummer -DAY = DAG ## Konverterer et serienummer til en dag i måneden -DAYS360 = DAGE360 ## Beregner antallet af dage mellem to datoer på grundlag af et år med 360 dage -EDATE = EDATO ## Returnerer serienummeret for den dato, der ligger det angivne antal måneder før eller efter startdatoen -EOMONTH = SLUT.PÅ.MÅNED ## Returnerer serienummeret på den sidste dag i måneden før eller efter et angivet antal måneder -HOUR = TIME ## Konverterer et serienummer til en time -MINUTE = MINUT ## Konverterer et serienummer til et minut -MONTH = MÅNED ## Konverterer et serienummer til en måned -NETWORKDAYS = ANTAL.ARBEJDSDAGE ## Returnerer antallet af hele arbejdsdage mellem to datoer -NOW = NU ## Returnerer serienummeret for den aktuelle dato eller det aktuelle klokkeslæt -SECOND = SEKUND ## Konverterer et serienummer til et sekund -TIME = KLOKKESLÆT ## Returnerer serienummeret for et bestemt klokkeslæt -TIMEVALUE = TIDSVÆRDI ## Konverterer et klokkeslæt i form af tekst til et serienummer -TODAY = IDAG ## Returnerer serienummeret for dags dato -WEEKDAY = UGEDAG ## Konverterer et serienummer til en ugedag -WEEKNUM = UGE.NR ## Konverterer et serienummer til et tal, der angiver ugenummeret i året -WORKDAY = ARBEJDSDAG ## Returnerer serienummeret for dagen før eller efter det angivne antal arbejdsdage -YEAR = ÅR ## Konverterer et serienummer til et år -YEARFRAC = ÅR.BRØK ## Returnerer årsbrøken, der repræsenterer antallet af hele dage mellem startdato og slutdato - - -## -## Engineering functions Tekniske funktioner -## -BESSELI = BESSELI ## Returnerer den modificerede Bessel-funktion In(x) -BESSELJ = BESSELJ ## Returnerer Bessel-funktionen Jn(x) -BESSELK = BESSELK ## Returnerer den modificerede Bessel-funktion Kn(x) -BESSELY = BESSELY ## Returnerer Bessel-funktionen Yn(x) -BIN2DEC = BIN.TIL.DEC ## Konverterer et binært tal til et decimaltal -BIN2HEX = BIN.TIL.HEX ## Konverterer et binært tal til et heksadecimalt tal -BIN2OCT = BIN.TIL.OKT ## Konverterer et binært tal til et oktaltal. -COMPLEX = KOMPLEKS ## Konverterer reelle og imaginære koefficienter til et komplekst tal -CONVERT = KONVERTER ## Konverterer et tal fra én måleenhed til en anden -DEC2BIN = DEC.TIL.BIN ## Konverterer et decimaltal til et binært tal -DEC2HEX = DEC.TIL.HEX ## Konverterer et decimaltal til et heksadecimalt tal -DEC2OCT = DEC.TIL.OKT ## Konverterer et decimaltal til et oktaltal -DELTA = DELTA ## Tester, om to værdier er ens -ERF = FEJLFUNK ## Returner fejlfunktionen -ERFC = FEJLFUNK.KOMP ## Returnerer den komplementære fejlfunktion -GESTEP = GETRIN ## Tester, om et tal er større end en grænseværdi -HEX2BIN = HEX.TIL.BIN ## Konverterer et heksadecimalt tal til et binært tal -HEX2DEC = HEX.TIL.DEC ## Konverterer et decimaltal til et heksadecimalt tal -HEX2OCT = HEX.TIL.OKT ## Konverterer et heksadecimalt tal til et oktaltal -IMABS = IMAGABS ## Returnerer den absolutte værdi (modulus) for et komplekst tal -IMAGINARY = IMAGINÆR ## Returnerer den imaginære koefficient for et komplekst tal -IMARGUMENT = IMAGARGUMENT ## Returnerer argumentet theta, en vinkel udtrykt i radianer -IMCONJUGATE = IMAGKONJUGERE ## Returnerer den komplekse konjugation af et komplekst tal -IMCOS = IMAGCOS ## Returnerer et komplekst tals cosinus -IMDIV = IMAGDIV ## Returnerer kvotienten for to komplekse tal -IMEXP = IMAGEKSP ## Returnerer et komplekst tals eksponentialfunktion -IMLN = IMAGLN ## Returnerer et komplekst tals naturlige logaritme -IMLOG10 = IMAGLOG10 ## Returnerer et komplekst tals sædvanlige logaritme (titalslogaritme) -IMLOG2 = IMAGLOG2 ## Returnerer et komplekst tals sædvanlige logaritme (totalslogaritme) -IMPOWER = IMAGPOTENS ## Returnerer et komplekst tal opløftet i en heltalspotens -IMPRODUCT = IMAGPRODUKT ## Returnerer produktet af komplekse tal -IMREAL = IMAGREELT ## Returnerer den reelle koefficient for et komplekst tal -IMSIN = IMAGSIN ## Returnerer et komplekst tals sinus -IMSQRT = IMAGKVROD ## Returnerer et komplekst tals kvadratrod -IMSUB = IMAGSUB ## Returnerer forskellen mellem to komplekse tal -IMSUM = IMAGSUM ## Returnerer summen af komplekse tal -OCT2BIN = OKT.TIL.BIN ## Konverterer et oktaltal til et binært tal -OCT2DEC = OKT.TIL.DEC ## Konverterer et oktaltal til et decimaltal -OCT2HEX = OKT.TIL.HEX ## Konverterer et oktaltal til et heksadecimalt tal - - -## -## Financial functions Finansielle funktioner -## -ACCRINT = PÅLØBRENTE ## Returnerer den påløbne rente for et værdipapir med periodiske renteudbetalinger -ACCRINTM = PÅLØBRENTE.UDLØB ## Returnerer den påløbne rente for et værdipapir, hvor renteudbetalingen finder sted ved papirets udløb -AMORDEGRC = AMORDEGRC ## Returnerer afskrivningsbeløbet for hver regnskabsperiode ved hjælp af en afskrivningskoefficient -AMORLINC = AMORLINC ## Returnerer afskrivningsbeløbet for hver regnskabsperiode -COUPDAYBS = KUPONDAGE.SA ## Returnerer antallet af dage fra starten af kuponperioden til afregningsdatoen -COUPDAYS = KUPONDAGE.A ## Returnerer antallet af dage fra begyndelsen af kuponperioden til afregningsdatoen -COUPDAYSNC = KUPONDAGE.ANK ## Returnerer antallet af dage i den kuponperiode, der indeholder afregningsdatoen -COUPNCD = KUPONDAG.NÆSTE ## Returnerer den næste kupondato efter afregningsdatoen -COUPNUM = KUPONBETALINGER ## Returnerer antallet af kuponudbetalinger mellem afregnings- og udløbsdatoen -COUPPCD = KUPONDAG.FORRIGE ## Returnerer den forrige kupondato før afregningsdatoen -CUMIPMT = AKKUM.RENTE ## Returnerer den akkumulerede rente, der betales på et lån mellem to perioder -CUMPRINC = AKKUM.HOVEDSTOL ## Returnerer den akkumulerede nedbringelse af hovedstol mellem to perioder -DB = DB ## Returnerer afskrivningen på et aktiv i en angivet periode ved anvendelse af saldometoden -DDB = DSA ## Returnerer afskrivningsbeløbet for et aktiv over en bestemt periode ved anvendelse af dobbeltsaldometoden eller en anden afskrivningsmetode, som du angiver -DISC = DISKONTO ## Returnerer et værdipapirs diskonto -DOLLARDE = KR.DECIMAL ## Konverterer en kronepris udtrykt som brøk til en kronepris udtrykt som decimaltal -DOLLARFR = KR.BRØK ## Konverterer en kronepris udtrykt som decimaltal til en kronepris udtrykt som brøk -DURATION = VARIGHED ## Returnerer den årlige løbetid for et værdipapir med periodiske renteudbetalinger -EFFECT = EFFEKTIV.RENTE ## Returnerer den årlige effektive rente -FV = FV ## Returnerer fremtidsværdien af en investering -FVSCHEDULE = FVTABEL ## Returnerer den fremtidige værdi af en hovedstol, når der er tilskrevet rente og rentes rente efter forskellige rentesatser -INTRATE = RENTEFOD ## Returnerer renten på et fuldt ud investeret værdipapir -IPMT = R.YDELSE ## Returnerer renten fra en investering for en given periode -IRR = IA ## Returnerer den interne rente for en række pengestrømme -ISPMT = ISPMT ## Beregner den betalte rente i løbet af en bestemt investeringsperiode -MDURATION = MVARIGHED ## Returnerer Macauleys modificerede løbetid for et værdipapir med en formodet pari på kr. 100 -MIRR = MIA ## Returnerer den interne forrentning, hvor positive og negative pengestrømme finansieres til forskellig rente -NOMINAL = NOMINEL ## Returnerer den årlige nominelle rente -NPER = NPER ## Returnerer antallet af perioder for en investering -NPV = NUTIDSVÆRDI ## Returnerer nettonutidsværdien for en investering baseret på en række periodiske pengestrømme og en diskonteringssats -ODDFPRICE = ULIGE.KURS.PÅLYDENDE ## Returnerer kursen pr. kr. 100 nominel værdi for et værdipapir med en ulige (kort eller lang) første periode -ODDFYIELD = ULIGE.FØRSTE.AFKAST ## Returnerer afkastet for et værdipapir med ulige første periode -ODDLPRICE = ULIGE.SIDSTE.KURS ## Returnerer kursen pr. kr. 100 nominel værdi for et værdipapir med ulige sidste periode -ODDLYIELD = ULIGE.SIDSTE.AFKAST ## Returnerer afkastet for et værdipapir med ulige sidste periode -PMT = YDELSE ## Returnerer renten fra en investering for en given periode -PPMT = H.YDELSE ## Returnerer ydelsen på hovedstolen for en investering i en given periode -PRICE = KURS ## Returnerer kursen pr. kr 100 nominel værdi for et værdipapir med periodiske renteudbetalinger -PRICEDISC = KURS.DISKONTO ## Returnerer kursen pr. kr 100 nominel værdi for et diskonteret værdipapir -PRICEMAT = KURS.UDLØB ## Returnerer kursen pr. kr 100 nominel værdi for et værdipapir, hvor renten udbetales ved papirets udløb -PV = NV ## Returnerer den nuværende værdi af en investering -RATE = RENTE ## Returnerer renten i hver periode for en annuitet -RECEIVED = MODTAGET.VED.UDLØB ## Returnerer det beløb, der modtages ved udløbet af et fuldt ud investeret værdipapir -SLN = LA ## Returnerer den lineære afskrivning for et aktiv i en enkelt periode -SYD = ÅRSAFSKRIVNING ## Returnerer den årlige afskrivning på et aktiv i en bestemt periode -TBILLEQ = STATSOBLIGATION ## Returnerer det obligationsækvivalente afkast for en statsobligation -TBILLPRICE = STATSOBLIGATION.KURS ## Returnerer kursen pr. kr 100 nominel værdi for en statsobligation -TBILLYIELD = STATSOBLIGATION.AFKAST ## Returnerer en afkastet på en statsobligation -VDB = VSA ## Returnerer afskrivningen på et aktiv i en angivet periode, herunder delperioder, ved brug af dobbeltsaldometoden -XIRR = INTERN.RENTE ## Returnerer den interne rente for en plan over pengestrømme, der ikke behøver at være periodiske -XNPV = NETTO.NUTIDSVÆRDI ## Returnerer nutidsværdien for en plan over pengestrømme, der ikke behøver at være periodiske -YIELD = AFKAST ## Returnerer afkastet for et værdipapir med periodiske renteudbetalinger -YIELDDISC = AFKAST.DISKONTO ## Returnerer det årlige afkast for et diskonteret værdipapir, f.eks. en statsobligation -YIELDMAT = AFKAST.UDLØBSDATO ## Returnerer det årlige afkast for et værdipapir, hvor renten udbetales ved papirets udløb - - -## -## Information functions Informationsfunktioner -## -CELL = CELLE ## Returnerer oplysninger om formatering, placering eller indhold af en celle -ERROR.TYPE = FEJLTYPE ## Returnerer et tal, der svarer til en fejltype -INFO = INFO ## Returnerer oplysninger om det aktuelle operativmiljø -ISBLANK = ER.TOM ## Returnerer SAND, hvis værdien er tom -ISERR = ER.FJL ## Returnerer SAND, hvis værdien er en fejlværdi undtagen #I/T -ISERROR = ER.FEJL ## Returnerer SAND, hvis værdien er en fejlværdi -ISEVEN = ER.LIGE ## Returnerer SAND, hvis tallet er lige -ISLOGICAL = ER.LOGISK ## Returnerer SAND, hvis værdien er en logisk værdi -ISNA = ER.IKKE.TILGÆNGELIG ## Returnerer SAND, hvis værdien er fejlværdien #I/T -ISNONTEXT = ER.IKKE.TEKST ## Returnerer SAND, hvis værdien ikke er tekst -ISNUMBER = ER.TAL ## Returnerer SAND, hvis værdien er et tal -ISODD = ER.ULIGE ## Returnerer SAND, hvis tallet er ulige -ISREF = ER.REFERENCE ## Returnerer SAND, hvis værdien er en reference -ISTEXT = ER.TEKST ## Returnerer SAND, hvis værdien er tekst -N = TAL ## Returnerer en værdi konverteret til et tal -NA = IKKE.TILGÆNGELIG ## Returnerer fejlværdien #I/T -TYPE = VÆRDITYPE ## Returnerer et tal, der angiver datatypen for en værdi - - -## -## Logical functions Logiske funktioner -## -AND = OG ## Returnerer SAND, hvis alle argumenterne er sande -FALSE = FALSK ## Returnerer den logiske værdi FALSK -IF = HVIS ## Angiver en logisk test, der skal udføres -IFERROR = HVIS.FEJL ## Returnerer en værdi, du angiver, hvis en formel evauleres som en fejl. Returnerer i modsat fald resultatet af formlen -NOT = IKKE ## Vender argumentets logik om -OR = ELLER ## Returneret værdien SAND, hvis mindst ét argument er sandt -TRUE = SAND ## Returnerer den logiske værdi SAND - - -## -## Lookup and reference functions Opslags- og referencefunktioner -## -ADDRESS = ADRESSE ## Returnerer en reference som tekst til en enkelt celle i et regneark -AREAS = OMRÅDER ## Returnerer antallet af områder i en reference -CHOOSE = VÆLG ## Vælger en værdi på en liste med værdier -COLUMN = KOLONNE ## Returnerer kolonnenummeret i en reference -COLUMNS = KOLONNER ## Returnerer antallet af kolonner i en reference -HLOOKUP = VOPSLAG ## Søger i den øverste række af en matrix og returnerer værdien af den angivne celle -HYPERLINK = HYPERLINK ## Opretter en genvej kaldet et hyperlink, der åbner et dokument, som er lagret på en netværksserver, på et intranet eller på internettet -INDEX = INDEKS ## Anvender et indeks til at vælge en værdi fra en reference eller en matrix -INDIRECT = INDIREKTE ## Returnerer en reference, der er angivet af en tekstværdi -LOOKUP = SLÅ.OP ## Søger værdier i en vektor eller en matrix -MATCH = SAMMENLIGN ## Søger værdier i en reference eller en matrix -OFFSET = FORSKYDNING ## Returnerer en reference forskudt i forhold til en given reference -ROW = RÆKKE ## Returnerer rækkenummeret for en reference -ROWS = RÆKKER ## Returnerer antallet af rækker i en reference -RTD = RTD ## Henter realtidsdata fra et program, der understøtter COM-automatisering (Automation: En metode til at arbejde med objekter fra et andet program eller udviklingsværktøj. Automation, som tidligere blev kaldt OLE Automation, er en industristandard og en funktion i COM (Component Object Model).) -TRANSPOSE = TRANSPONER ## Returnerer en transponeret matrix -VLOOKUP = LOPSLAG ## Søger i øverste række af en matrix og flytter på tværs af rækken for at returnere en celleværdi - - -## -## Math and trigonometry functions Matematiske og trigonometriske funktioner -## -ABS = ABS ## Returnerer den absolutte værdi af et tal -ACOS = ARCCOS ## Returnerer et tals arcus cosinus -ACOSH = ARCCOSH ## Returnerer den inverse hyperbolske cosinus af tal -ASIN = ARCSIN ## Returnerer et tals arcus sinus -ASINH = ARCSINH ## Returnerer den inverse hyperbolske sinus for tal -ATAN = ARCTAN ## Returnerer et tals arcus tangens -ATAN2 = ARCTAN2 ## Returnerer de angivne x- og y-koordinaters arcus tangens -ATANH = ARCTANH ## Returnerer et tals inverse hyperbolske tangens -CEILING = AFRUND.LOFT ## Afrunder et tal til nærmeste heltal eller til nærmeste multiplum af betydning -COMBIN = KOMBIN ## Returnerer antallet af kombinationer for et givet antal objekter -COS = COS ## Returnerer et tals cosinus -COSH = COSH ## Returnerer den inverse hyperbolske cosinus af et tal -DEGREES = GRADER ## Konverterer radianer til grader -EVEN = LIGE ## Runder et tal op til nærmeste lige heltal -EXP = EKSP ## Returnerer e opløftet til en potens af et angivet tal -FACT = FAKULTET ## Returnerer et tals fakultet -FACTDOUBLE = DOBBELT.FAKULTET ## Returnerer et tals dobbelte fakultet -FLOOR = AFRUND.GULV ## Runder et tal ned mod nul -GCD = STØRSTE.FÆLLES.DIVISOR ## Returnerer den største fælles divisor -INT = HELTAL ## Nedrunder et tal til det nærmeste heltal -LCM = MINDSTE.FÆLLES.MULTIPLUM ## Returnerer det mindste fælles multiplum -LN = LN ## Returnerer et tals naturlige logaritme -LOG = LOG ## Returnerer logaritmen for et tal på grundlag af et angivet grundtal -LOG10 = LOG10 ## Returnerer titalslogaritmen af et tal -MDETERM = MDETERM ## Returnerer determinanten for en matrix -MINVERSE = MINVERT ## Returnerer den inverse matrix for en matrix -MMULT = MPRODUKT ## Returnerer matrixproduktet af to matrixer -MOD = REST ## Returnerer restværdien fra division -MROUND = MAFRUND ## Returnerer et tal afrundet til det ønskede multiplum -MULTINOMIAL = MULTINOMIAL ## Returnerer et multinomialt talsæt -ODD = ULIGE ## Runder et tal op til nærmeste ulige heltal -PI = PI ## Returnerer værdien af pi -POWER = POTENS ## Returnerer resultatet af et tal opløftet til en potens -PRODUCT = PRODUKT ## Multiplicerer argumenterne -QUOTIENT = KVOTIENT ## Returnerer heltalsdelen ved division -RADIANS = RADIANER ## Konverterer grader til radianer -RAND = SLUMP ## Returnerer et tilfældigt tal mellem 0 og 1 -RANDBETWEEN = SLUMP.MELLEM ## Returnerer et tilfældigt tal mellem de tal, der angives -ROMAN = ROMERTAL ## Konverterer et arabertal til romertal som tekst -ROUND = AFRUND ## Afrunder et tal til et angivet antal decimaler -ROUNDDOWN = RUND.NED ## Runder et tal ned mod nul -ROUNDUP = RUND.OP ## Runder et tal op, væk fra 0 (nul) -SERIESSUM = SERIESUM ## Returnerer summen af en potensserie baseret på en formel -SIGN = FORTEGN ## Returnerer et tals fortegn -SIN = SIN ## Returnerer en given vinkels sinusværdi -SINH = SINH ## Returnerer den hyperbolske sinus af et tal -SQRT = KVROD ## Returnerer en positiv kvadratrod -SQRTPI = KVRODPI ## Returnerer kvadratroden af (tal * pi;) -SUBTOTAL = SUBTOTAL ## Returnerer en subtotal på en liste eller i en database -SUM = SUM ## Lægger argumenterne sammen -SUMIF = SUM.HVIS ## Lægger de celler sammen, der er specificeret af et givet kriterium. -SUMIFS = SUM.HVISER ## Lægger de celler i et område sammen, der opfylder flere kriterier. -SUMPRODUCT = SUMPRODUKT ## Returnerer summen af produkter af ens matrixkomponenter -SUMSQ = SUMKV ## Returnerer summen af argumenternes kvadrater -SUMX2MY2 = SUMX2MY2 ## Returnerer summen af differensen mellem kvadrater af ens værdier i to matrixer -SUMX2PY2 = SUMX2PY2 ## Returnerer summen af summen af kvadrater af tilsvarende værdier i to matrixer -SUMXMY2 = SUMXMY2 ## Returnerer summen af kvadrater af differenser mellem ens værdier i to matrixer -TAN = TAN ## Returnerer et tals tangens -TANH = TANH ## Returnerer et tals hyperbolske tangens -TRUNC = AFKORT ## Afkorter et tal til et heltal - - -## -## Statistical functions Statistiske funktioner -## -AVEDEV = MAD ## Returnerer den gennemsnitlige numeriske afvigelse fra stikprøvens middelværdi -AVERAGE = MIDDEL ## Returnerer middelværdien af argumenterne -AVERAGEA = MIDDELV ## Returnerer middelværdien af argumenterne og medtager tal, tekst og logiske værdier -AVERAGEIF = MIDDEL.HVIS ## Returnerer gennemsnittet (den aritmetiske middelværdi) af alle de celler, der opfylder et givet kriterium, i et område -AVERAGEIFS = MIDDEL.HVISER ## Returnerer gennemsnittet (den aritmetiske middelværdi) af alle de celler, der opfylder flere kriterier. -BETADIST = BETAFORDELING ## Returnerer den kumulative betafordelingsfunktion -BETAINV = BETAINV ## Returnerer den inverse kumulative fordelingsfunktion for en angivet betafordeling -BINOMDIST = BINOMIALFORDELING ## Returnerer punktsandsynligheden for binomialfordelingen -CHIDIST = CHIFORDELING ## Returnerer fraktilsandsynligheden for en chi2-fordeling -CHIINV = CHIINV ## Returnerer den inverse fraktilsandsynlighed for en chi2-fordeling -CHITEST = CHITEST ## Foretager en test for uafhængighed -CONFIDENCE = KONFIDENSINTERVAL ## Returnerer et konfidensinterval for en population -CORREL = KORRELATION ## Returnerer korrelationskoefficienten mellem to datasæt -COUNT = TÆL ## Tæller antallet af tal på en liste med argumenter -COUNTA = TÆLV ## Tæller antallet af værdier på en liste med argumenter -COUNTBLANK = ANTAL.BLANKE ## Tæller antallet af tomme celler i et område -COUNTIF = TÆLHVIS ## Tæller antallet af celler, som opfylder de givne kriterier, i et område -COUNTIFS = TÆL.HVISER ## Tæller antallet af de celler, som opfylder flere kriterier, i et område -COVAR = KOVARIANS ## Beregner kovariansen mellem to stokastiske variabler -CRITBINOM = KRITBINOM ## Returnerer den mindste værdi for x, for hvilken det gælder, at fordelingsfunktionen er mindre end eller lig med kriterieværdien. -DEVSQ = SAK ## Returnerer summen af de kvadrerede afvigelser fra middelværdien -EXPONDIST = EKSPFORDELING ## Returnerer eksponentialfordelingen -FDIST = FFORDELING ## Returnerer fraktilsandsynligheden for F-fordelingen -FINV = FINV ## Returnerer den inverse fraktilsandsynlighed for F-fordelingen -FISHER = FISHER ## Returnerer Fisher-transformationen -FISHERINV = FISHERINV ## Returnerer den inverse Fisher-transformation -FORECAST = PROGNOSE ## Returnerer en prognoseværdi baseret på lineær tendens -FREQUENCY = FREKVENS ## Returnerer en frekvensfordeling i en søjlevektor -FTEST = FTEST ## Returnerer resultatet af en F-test til sammenligning af varians -GAMMADIST = GAMMAFORDELING ## Returnerer fordelingsfunktionen for gammafordelingen -GAMMAINV = GAMMAINV ## Returnerer den inverse fordelingsfunktion for gammafordelingen -GAMMALN = GAMMALN ## Returnerer den naturlige logaritme til gammafordelingen, G(x) -GEOMEAN = GEOMIDDELVÆRDI ## Returnerer det geometriske gennemsnit -GROWTH = FORØGELSE ## Returnerer værdier langs en eksponentiel tendens -HARMEAN = HARMIDDELVÆRDI ## Returnerer det harmoniske gennemsnit -HYPGEOMDIST = HYPGEOFORDELING ## Returnerer punktsandsynligheden i en hypergeometrisk fordeling -INTERCEPT = SKÆRING ## Returnerer afskæringsværdien på y-aksen i en lineær regression -KURT = TOPSTEJL ## Returnerer kurtosisværdien for en stokastisk variabel -LARGE = STOR ## Returnerer den k'te største værdi i et datasæt -LINEST = LINREGR ## Returnerer parameterestimaterne for en lineær tendens -LOGEST = LOGREGR ## Returnerer parameterestimaterne for en eksponentiel tendens -LOGINV = LOGINV ## Returnerer den inverse fordelingsfunktion for lognormalfordelingen -LOGNORMDIST = LOGNORMFORDELING ## Returnerer fordelingsfunktionen for lognormalfordelingen -MAX = MAKS ## Returnerer den maksimale værdi på en liste med argumenter. -MAXA = MAKSV ## Returnerer den maksimale værdi på en liste med argumenter og medtager tal, tekst og logiske værdier -MEDIAN = MEDIAN ## Returnerer medianen for de angivne tal -MIN = MIN ## Returnerer den mindste værdi på en liste med argumenter. -MINA = MINV ## Returnerer den mindste værdi på en liste med argumenter og medtager tal, tekst og logiske værdier -MODE = HYPPIGST ## Returnerer den hyppigste værdi i et datasæt -NEGBINOMDIST = NEGBINOMFORDELING ## Returnerer den negative binomialfordeling -NORMDIST = NORMFORDELING ## Returnerer fordelingsfunktionen for normalfordelingen -NORMINV = NORMINV ## Returnerer den inverse fordelingsfunktion for normalfordelingen -NORMSDIST = STANDARDNORMFORDELING ## Returnerer fordelingsfunktionen for standardnormalfordelingen -NORMSINV = STANDARDNORMINV ## Returnerer den inverse fordelingsfunktion for standardnormalfordelingen -PEARSON = PEARSON ## Returnerer Pearsons korrelationskoefficient -PERCENTILE = FRAKTIL ## Returnerer den k'te fraktil for datasættet -PERCENTRANK = PROCENTPLADS ## Returnerer den procentuelle rang for en given værdi i et datasæt -PERMUT = PERMUT ## Returnerer antallet af permutationer for et givet sæt objekter -POISSON = POISSON ## Returnerer fordelingsfunktionen for en Poisson-fordeling -PROB = SANDSYNLIGHED ## Returnerer intervalsandsynligheden -QUARTILE = KVARTIL ## Returnerer kvartilen i et givet datasæt -RANK = PLADS ## Returnerer rangen for et tal på en liste med tal -RSQ = FORKLARINGSGRAD ## Returnerer R2-værdien fra en simpel lineær regression -SKEW = SKÆVHED ## Returnerer skævheden for en stokastisk variabel -SLOPE = HÆLDNING ## Returnerer estimatet på hældningen fra en simpel lineær regression -SMALL = MINDSTE ## Returnerer den k'te mindste værdi i datasættet -STANDARDIZE = STANDARDISER ## Returnerer en standardiseret værdi -STDEV = STDAFV ## Estimerer standardafvigelsen på basis af en stikprøve -STDEVA = STDAFVV ## Beregner standardafvigelsen på basis af en prøve og medtager tal, tekst og logiske værdier -STDEVP = STDAFVP ## Beregner standardafvigelsen på basis af en hel population -STDEVPA = STDAFVPV ## Beregner standardafvigelsen på basis af en hel population og medtager tal, tekst og logiske værdier -STEYX = STFYX ## Returnerer standardafvigelsen for de estimerede y-værdier i den simple lineære regression -TDIST = TFORDELING ## Returnerer fordelingsfunktionen for Student's t-fordeling -TINV = TINV ## Returnerer den inverse fordelingsfunktion for Student's t-fordeling -TREND = TENDENS ## Returnerer værdi under antagelse af en lineær tendens -TRIMMEAN = TRIMMIDDELVÆRDI ## Returnerer den trimmede middelværdi for datasættet -TTEST = TTEST ## Returnerer den sandsynlighed, der er forbundet med Student's t-test -VAR = VARIANS ## Beregner variansen på basis af en prøve -VARA = VARIANSV ## Beregner variansen på basis af en prøve og medtager tal, tekst og logiske værdier -VARP = VARIANSP ## Beregner variansen på basis af hele populationen -VARPA = VARIANSPV ## Beregner variansen på basis af hele populationen og medtager tal, tekst og logiske værdier -WEIBULL = WEIBULL ## Returnerer fordelingsfunktionen for Weibull-fordelingen -ZTEST = ZTEST ## Returnerer sandsynlighedsværdien ved en en-sidet z-test - - -## -## Text functions Tekstfunktioner -## -ASC = ASC ## Ændrer engelske tegn i fuld bredde (dobbelt-byte) eller katakana i en tegnstreng til tegn i halv bredde (enkelt-byte) -BAHTTEXT = BAHTTEKST ## Konverterer et tal til tekst ved hjælp af valutaformatet ß (baht) -CHAR = TEGN ## Returnerer det tegn, der svarer til kodenummeret -CLEAN = RENS ## Fjerner alle tegn, der ikke kan udskrives, fra tekst -CODE = KODE ## Returnerer en numerisk kode for det første tegn i en tekststreng -CONCATENATE = SAMMENKÆDNING ## Sammenkæder adskillige tekstelementer til ét tekstelement -DOLLAR = KR ## Konverterer et tal til tekst ved hjælp af valutaformatet kr. (kroner) -EXACT = EKSAKT ## Kontrollerer, om to tekstværdier er identiske -FIND = FIND ## Søger efter en tekstværdi i en anden tekstværdi (der skelnes mellem store og små bogstaver) -FINDB = FINDB ## Søger efter en tekstværdi i en anden tekstværdi (der skelnes mellem store og små bogstaver) -FIXED = FAST ## Formaterer et tal som tekst med et fast antal decimaler -JIS = JIS ## Ændrer engelske tegn i halv bredde (enkelt-byte) eller katakana i en tegnstreng til tegn i fuld bredde (dobbelt-byte) -LEFT = VENSTRE ## Returnerer tegnet længst til venstre i en tekstværdi -LEFTB = VENSTREB ## Returnerer tegnet længst til venstre i en tekstværdi -LEN = LÆNGDE ## Returnerer antallet af tegn i en tekststreng -LENB = LÆNGDEB ## Returnerer antallet af tegn i en tekststreng -LOWER = SMÅ.BOGSTAVER ## Konverterer tekst til små bogstaver -MID = MIDT ## Returnerer et bestemt antal tegn fra en tekststreng fra og med den angivne startposition -MIDB = MIDTB ## Returnerer et bestemt antal tegn fra en tekststreng fra og med den angivne startposition -PHONETIC = FONETISK ## Uddrager de fonetiske (furigana) tegn fra en tekststreng -PROPER = STORT.FORBOGSTAV ## Konverterer første bogstav i hvert ord i teksten til stort bogstav -REPLACE = ERSTAT ## Erstatter tegn i tekst -REPLACEB = ERSTATB ## Erstatter tegn i tekst -REPT = GENTAG ## Gentager tekst et givet antal gange -RIGHT = HØJRE ## Returnerer tegnet længste til højre i en tekstværdi -RIGHTB = HØJREB ## Returnerer tegnet længste til højre i en tekstværdi -SEARCH = SØG ## Søger efter en tekstværdi i en anden tekstværdi (der skelnes ikke mellem store og små bogstaver) -SEARCHB = SØGB ## Søger efter en tekstværdi i en anden tekstværdi (der skelnes ikke mellem store og små bogstaver) -SUBSTITUTE = UDSKIFT ## Udskifter gammel tekst med ny tekst i en tekststreng -T = T ## Konverterer argumenterne til tekst -TEXT = TEKST ## Formaterer et tal og konverterer det til tekst -TRIM = FJERN.OVERFLØDIGE.BLANKE ## Fjerner mellemrum fra tekst -UPPER = STORE.BOGSTAVER ## Konverterer tekst til store bogstaver -VALUE = VÆRDI ## Konverterer et tekstargument til et tal diff --git a/application/third_party/PHPExcel/locale/de/config b/application/third_party/PHPExcel/locale/de/config deleted file mode 100644 index aa0228e7..00000000 --- a/application/third_party/PHPExcel/locale/de/config +++ /dev/null @@ -1,47 +0,0 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Settings -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## - - -ArgumentSeparator = ; - - -## -## (For future use) -## -currencySymbol = € - - -## -## Excel Error Codes (For future use) -## -NULL = #NULL! -DIV0 = #DIV/0! -VALUE = #WERT! -REF = #BEZUG! -NAME = #NAME? -NUM = #ZAHL! -NA = #NV diff --git a/application/third_party/PHPExcel/locale/de/functions b/application/third_party/PHPExcel/locale/de/functions deleted file mode 100644 index 3147f9c8..00000000 --- a/application/third_party/PHPExcel/locale/de/functions +++ /dev/null @@ -1,438 +0,0 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Calculation -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ -## -## - - -## -## Add-in and Automation functions Add-In- und Automatisierungsfunktionen -## -GETPIVOTDATA = PIVOTDATENZUORDNEN ## In einem PivotTable-Bericht gespeicherte Daten werden zurückgegeben. - - -## -## Cube functions Cubefunktionen -## -CUBEKPIMEMBER = CUBEKPIELEMENT ## Gibt Name, Eigenschaft und Measure eines Key Performance Indicators (KPI) zurück und zeigt den Namen und die Eigenschaft in der Zelle an. Ein KPI ist ein quantifizierbares Maß, wie z. B. der monatliche Bruttogewinn oder die vierteljährliche Mitarbeiterfluktuation, mit dessen Hilfe das Leistungsverhalten eines Unternehmens überwacht werden kann. -CUBEMEMBER = CUBEELEMENT ## Gibt ein Element oder ein Tuple in einer Cubehierarchie zurück. Wird verwendet, um zu überprüfen, ob das Element oder Tuple im Cube vorhanden ist. -CUBEMEMBERPROPERTY = CUBEELEMENTEIGENSCHAFT ## Gibt den Wert einer Elementeigenschaft im Cube zurück. Wird verwendet, um zu überprüfen, ob ein Elementname im Cube vorhanden ist, und um die für dieses Element angegebene Eigenschaft zurückzugeben. -CUBERANKEDMEMBER = CUBERANGELEMENT ## Gibt das n-te oder n-rangige Element in einer Menge zurück. Wird verwendet, um mindestens ein Element in einer Menge zurückzugeben, wie z. B. bester Vertriebsmitarbeiter oder 10 beste Kursteilnehmer. -CUBESET = CUBEMENGE ## Definiert eine berechnete Menge Elemente oder Tuples durch Senden eines Mengenausdrucks an den Cube auf dem Server, der die Menge erstellt und an Microsoft Office Excel zurückgibt. -CUBESETCOUNT = CUBEMENGENANZAHL ## Gibt die Anzahl der Elemente in einer Menge zurück. -CUBEVALUE = CUBEWERT ## Gibt einen Aggregatwert aus einem Cube zurück. - - -## -## Database functions Datenbankfunktionen -## -DAVERAGE = DBMITTELWERT ## Gibt den Mittelwert der ausgewählten Datenbankeinträge zurück -DCOUNT = DBANZAHL ## Zählt die Zellen mit Zahlen in einer Datenbank -DCOUNTA = DBANZAHL2 ## Zählt nicht leere Zellen in einer Datenbank -DGET = DBAUSZUG ## Extrahiert aus einer Datenbank einen einzelnen Datensatz, der den angegebenen Kriterien entspricht -DMAX = DBMAX ## Gibt den größten Wert aus ausgewählten Datenbankeinträgen zurück -DMIN = DBMIN ## Gibt den kleinsten Wert aus ausgewählten Datenbankeinträgen zurück -DPRODUCT = DBPRODUKT ## Multipliziert die Werte in einem bestimmten Feld mit Datensätzen, die den Kriterien in einer Datenbank entsprechen -DSTDEV = DBSTDABW ## Schätzt die Standardabweichung auf der Grundlage einer Stichprobe aus ausgewählten Datenbankeinträgen -DSTDEVP = DBSTDABWN ## Berechnet die Standardabweichung auf der Grundlage der Grundgesamtheit ausgewählter Datenbankeinträge -DSUM = DBSUMME ## Addiert die Zahlen in der Feldspalte mit Datensätzen in der Datenbank, die den Kriterien entsprechen -DVAR = DBVARIANZ ## Schätzt die Varianz auf der Grundlage ausgewählter Datenbankeinträge -DVARP = DBVARIANZEN ## Berechnet die Varianz auf der Grundlage der Grundgesamtheit ausgewählter Datenbankeinträge - - -## -## Date and time functions Datums- und Zeitfunktionen -## -DATE = DATUM ## Gibt die fortlaufende Zahl eines bestimmten Datums zurück -DATEVALUE = DATWERT ## Wandelt ein Datum in Form von Text in eine fortlaufende Zahl um -DAY = TAG ## Wandelt eine fortlaufende Zahl in den Tag des Monats um -DAYS360 = TAGE360 ## Berechnet die Anzahl der Tage zwischen zwei Datumsangaben ausgehend von einem Jahr, das 360 Tage hat -EDATE = EDATUM ## Gibt die fortlaufende Zahl des Datums zurück, bei dem es sich um die angegebene Anzahl von Monaten vor oder nach dem Anfangstermin handelt -EOMONTH = MONATSENDE ## Gibt die fortlaufende Zahl des letzten Tags des Monats vor oder nach einer festgelegten Anzahl von Monaten zurück -HOUR = STUNDE ## Wandelt eine fortlaufende Zahl in eine Stunde um -MINUTE = MINUTE ## Wandelt eine fortlaufende Zahl in eine Minute um -MONTH = MONAT ## Wandelt eine fortlaufende Zahl in einen Monat um -NETWORKDAYS = NETTOARBEITSTAGE ## Gibt die Anzahl von ganzen Arbeitstagen zwischen zwei Datumswerten zurück -NOW = JETZT ## Gibt die fortlaufende Zahl des aktuellen Datums und der aktuellen Uhrzeit zurück -SECOND = SEKUNDE ## Wandelt eine fortlaufende Zahl in eine Sekunde um -TIME = ZEIT ## Gibt die fortlaufende Zahl einer bestimmten Uhrzeit zurück -TIMEVALUE = ZEITWERT ## Wandelt eine Uhrzeit in Form von Text in eine fortlaufende Zahl um -TODAY = HEUTE ## Gibt die fortlaufende Zahl des heutigen Datums zurück -WEEKDAY = WOCHENTAG ## Wandelt eine fortlaufende Zahl in den Wochentag um -WEEKNUM = KALENDERWOCHE ## Wandelt eine fortlaufende Zahl in eine Zahl um, die angibt, in welche Woche eines Jahres das angegebene Datum fällt -WORKDAY = ARBEITSTAG ## Gibt die fortlaufende Zahl des Datums vor oder nach einer bestimmten Anzahl von Arbeitstagen zurück -YEAR = JAHR ## Wandelt eine fortlaufende Zahl in ein Jahr um -YEARFRAC = BRTEILJAHRE ## Gibt die Anzahl der ganzen Tage zwischen Ausgangsdatum und Enddatum in Bruchteilen von Jahren zurück - - -## -## Engineering functions Konstruktionsfunktionen -## -BESSELI = BESSELI ## Gibt die geänderte Besselfunktion In(x) zurück -BESSELJ = BESSELJ ## Gibt die Besselfunktion Jn(x) zurück -BESSELK = BESSELK ## Gibt die geänderte Besselfunktion Kn(x) zurück -BESSELY = BESSELY ## Gibt die Besselfunktion Yn(x) zurück -BIN2DEC = BININDEZ ## Wandelt eine binäre Zahl (Dualzahl) in eine dezimale Zahl um -BIN2HEX = BININHEX ## Wandelt eine binäre Zahl (Dualzahl) in eine hexadezimale Zahl um -BIN2OCT = BININOKT ## Wandelt eine binäre Zahl (Dualzahl) in eine oktale Zahl um -COMPLEX = KOMPLEXE ## Wandelt den Real- und Imaginärteil in eine komplexe Zahl um -CONVERT = UMWANDELN ## Wandelt eine Zahl von einem Maßsystem in ein anderes um -DEC2BIN = DEZINBIN ## Wandelt eine dezimale Zahl in eine binäre Zahl (Dualzahl) um -DEC2HEX = DEZINHEX ## Wandelt eine dezimale Zahl in eine hexadezimale Zahl um -DEC2OCT = DEZINOKT ## Wandelt eine dezimale Zahl in eine oktale Zahl um -DELTA = DELTA ## Überprüft, ob zwei Werte gleich sind -ERF = GAUSSFEHLER ## Gibt die Gauss'sche Fehlerfunktion zurück -ERFC = GAUSSFKOMPL ## Gibt das Komplement zur Gauss'schen Fehlerfunktion zurück -GESTEP = GGANZZAHL ## Überprüft, ob eine Zahl größer als ein gegebener Schwellenwert ist -HEX2BIN = HEXINBIN ## Wandelt eine hexadezimale Zahl in eine Binärzahl um -HEX2DEC = HEXINDEZ ## Wandelt eine hexadezimale Zahl in eine dezimale Zahl um -HEX2OCT = HEXINOKT ## Wandelt eine hexadezimale Zahl in eine Oktalzahl um -IMABS = IMABS ## Gibt den Absolutbetrag (Modulo) einer komplexen Zahl zurück -IMAGINARY = IMAGINÄRTEIL ## Gibt den Imaginärteil einer komplexen Zahl zurück -IMARGUMENT = IMARGUMENT ## Gibt das Argument Theta zurück, einen Winkel, der als Bogenmaß ausgedrückt wird -IMCONJUGATE = IMKONJUGIERTE ## Gibt die konjugierte komplexe Zahl zu einer komplexen Zahl zurück -IMCOS = IMCOS ## Gibt den Kosinus einer komplexen Zahl zurück -IMDIV = IMDIV ## Gibt den Quotienten zweier komplexer Zahlen zurück -IMEXP = IMEXP ## Gibt die algebraische Form einer in exponentieller Schreibweise vorliegenden komplexen Zahl zurück -IMLN = IMLN ## Gibt den natürlichen Logarithmus einer komplexen Zahl zurück -IMLOG10 = IMLOG10 ## Gibt den Logarithmus einer komplexen Zahl zur Basis 10 zurück -IMLOG2 = IMLOG2 ## Gibt den Logarithmus einer komplexen Zahl zur Basis 2 zurück -IMPOWER = IMAPOTENZ ## Potenziert eine komplexe Zahl mit einer ganzen Zahl -IMPRODUCT = IMPRODUKT ## Gibt das Produkt von komplexen Zahlen zurück -IMREAL = IMREALTEIL ## Gibt den Realteil einer komplexen Zahl zurück -IMSIN = IMSIN ## Gibt den Sinus einer komplexen Zahl zurück -IMSQRT = IMWURZEL ## Gibt die Quadratwurzel einer komplexen Zahl zurück -IMSUB = IMSUB ## Gibt die Differenz zwischen zwei komplexen Zahlen zurück -IMSUM = IMSUMME ## Gibt die Summe von komplexen Zahlen zurück -OCT2BIN = OKTINBIN ## Wandelt eine oktale Zahl in eine binäre Zahl (Dualzahl) um -OCT2DEC = OKTINDEZ ## Wandelt eine oktale Zahl in eine dezimale Zahl um -OCT2HEX = OKTINHEX ## Wandelt eine oktale Zahl in eine hexadezimale Zahl um - - -## -## Financial functions Finanzmathematische Funktionen -## -ACCRINT = AUFGELZINS ## Gibt die aufgelaufenen Zinsen (Stückzinsen) eines Wertpapiers mit periodischen Zinszahlungen zurück -ACCRINTM = AUFGELZINSF ## Gibt die aufgelaufenen Zinsen (Stückzinsen) eines Wertpapiers zurück, die bei Fälligkeit ausgezahlt werden -AMORDEGRC = AMORDEGRK ## Gibt die Abschreibung für die einzelnen Abschreibungszeiträume mithilfe eines Abschreibungskoeffizienten zurück -AMORLINC = AMORLINEARK ## Gibt die Abschreibung für die einzelnen Abschreibungszeiträume zurück -COUPDAYBS = ZINSTERMTAGVA ## Gibt die Anzahl der Tage vom Anfang des Zinstermins bis zum Abrechnungstermin zurück -COUPDAYS = ZINSTERMTAGE ## Gibt die Anzahl der Tage der Zinsperiode zurück, die den Abrechnungstermin einschließt -COUPDAYSNC = ZINSTERMTAGNZ ## Gibt die Anzahl der Tage vom Abrechnungstermin bis zum nächsten Zinstermin zurück -COUPNCD = ZINSTERMNZ ## Gibt das Datum des ersten Zinstermins nach dem Abrechnungstermin zurück -COUPNUM = ZINSTERMZAHL ## Gibt die Anzahl der Zinstermine zwischen Abrechnungs- und Fälligkeitsdatum zurück -COUPPCD = ZINSTERMVZ ## Gibt das Datum des letzten Zinstermins vor dem Abrechnungstermin zurück -CUMIPMT = KUMZINSZ ## Berechnet die kumulierten Zinsen, die zwischen zwei Perioden zu zahlen sind -CUMPRINC = KUMKAPITAL ## Berechnet die aufgelaufene Tilgung eines Darlehens, die zwischen zwei Perioden zu zahlen ist -DB = GDA2 ## Gibt die geometrisch-degressive Abschreibung eines Wirtschaftsguts für eine bestimmte Periode zurück -DDB = GDA ## Gibt die Abschreibung eines Anlageguts für einen angegebenen Zeitraum unter Verwendung der degressiven Doppelraten-Abschreibung oder eines anderen von Ihnen angegebenen Abschreibungsverfahrens zurück -DISC = DISAGIO ## Gibt den in Prozent ausgedrückten Abzinsungssatz eines Wertpapiers zurück -DOLLARDE = NOTIERUNGDEZ ## Wandelt eine Notierung, die als Dezimalbruch ausgedrückt wurde, in eine Dezimalzahl um -DOLLARFR = NOTIERUNGBRU ## Wandelt eine Notierung, die als Dezimalzahl ausgedrückt wurde, in einen Dezimalbruch um -DURATION = DURATION ## Gibt die jährliche Duration eines Wertpapiers mit periodischen Zinszahlungen zurück -EFFECT = EFFEKTIV ## Gibt die jährliche Effektivverzinsung zurück -FV = ZW ## Gibt den zukünftigen Wert (Endwert) einer Investition zurück -FVSCHEDULE = ZW2 ## Gibt den aufgezinsten Wert des Anfangskapitals für eine Reihe periodisch unterschiedlicher Zinssätze zurück -INTRATE = ZINSSATZ ## Gibt den Zinssatz eines voll investierten Wertpapiers zurück -IPMT = ZINSZ ## Gibt die Zinszahlung einer Investition für die angegebene Periode zurück -IRR = IKV ## Gibt den internen Zinsfuß einer Investition ohne Finanzierungskosten oder Reinvestitionsgewinne zurück -ISPMT = ISPMT ## Berechnet die während eines bestimmten Zeitraums für eine Investition gezahlten Zinsen -MDURATION = MDURATION ## Gibt die geänderte Dauer für ein Wertpapier mit einem angenommenen Nennwert von 100 € zurück -MIRR = QIKV ## Gibt den internen Zinsfuß zurück, wobei positive und negative Zahlungen zu unterschiedlichen Sätzen finanziert werden -NOMINAL = NOMINAL ## Gibt die jährliche Nominalverzinsung zurück -NPER = ZZR ## Gibt die Anzahl der Zahlungsperioden einer Investition zurück -NPV = NBW ## Gibt den Nettobarwert einer Investition auf Basis periodisch anfallender Zahlungen und eines Abzinsungsfaktors zurück -ODDFPRICE = UNREGER.KURS ## Gibt den Kurs pro 100 € Nennwert eines Wertpapiers mit einem unregelmäßigen ersten Zinstermin zurück -ODDFYIELD = UNREGER.REND ## Gibt die Rendite eines Wertpapiers mit einem unregelmäßigen ersten Zinstermin zurück -ODDLPRICE = UNREGLE.KURS ## Gibt den Kurs pro 100 € Nennwert eines Wertpapiers mit einem unregelmäßigen letzten Zinstermin zurück -ODDLYIELD = UNREGLE.REND ## Gibt die Rendite eines Wertpapiers mit einem unregelmäßigen letzten Zinstermin zurück -PMT = RMZ ## Gibt die periodische Zahlung für eine Annuität zurück -PPMT = KAPZ ## Gibt die Kapitalrückzahlung einer Investition für eine angegebene Periode zurück -PRICE = KURS ## Gibt den Kurs pro 100 € Nennwert eines Wertpapiers zurück, das periodisch Zinsen auszahlt -PRICEDISC = KURSDISAGIO ## Gibt den Kurs pro 100 € Nennwert eines unverzinslichen Wertpapiers zurück -PRICEMAT = KURSFÄLLIG ## Gibt den Kurs pro 100 € Nennwert eines Wertpapiers zurück, das Zinsen am Fälligkeitsdatum auszahlt -PV = BW ## Gibt den Barwert einer Investition zurück -RATE = ZINS ## Gibt den Zinssatz pro Zeitraum einer Annuität zurück -RECEIVED = AUSZAHLUNG ## Gibt den Auszahlungsbetrag eines voll investierten Wertpapiers am Fälligkeitstermin zurück -SLN = LIA ## Gibt die lineare Abschreibung eines Wirtschaftsguts pro Periode zurück -SYD = DIA ## Gibt die arithmetisch-degressive Abschreibung eines Wirtschaftsguts für eine bestimmte Periode zurück -TBILLEQ = TBILLÄQUIV ## Gibt die Rendite für ein Wertpapier zurück -TBILLPRICE = TBILLKURS ## Gibt den Kurs pro 100 € Nennwert eines Wertpapiers zurück -TBILLYIELD = TBILLRENDITE ## Gibt die Rendite für ein Wertpapier zurück -VDB = VDB ## Gibt die degressive Abschreibung eines Wirtschaftsguts für eine bestimmte Periode oder Teilperiode zurück -XIRR = XINTZINSFUSS ## Gibt den internen Zinsfuß einer Reihe nicht periodisch anfallender Zahlungen zurück -XNPV = XKAPITALWERT ## Gibt den Nettobarwert (Kapitalwert) einer Reihe nicht periodisch anfallender Zahlungen zurück -YIELD = RENDITE ## Gibt die Rendite eines Wertpapiers zurück, das periodisch Zinsen auszahlt -YIELDDISC = RENDITEDIS ## Gibt die jährliche Rendite eines unverzinslichen Wertpapiers zurück -YIELDMAT = RENDITEFÄLL ## Gibt die jährliche Rendite eines Wertpapiers zurück, das Zinsen am Fälligkeitsdatum auszahlt - - -## -## Information functions Informationsfunktionen -## -CELL = ZELLE ## Gibt Informationen zu Formatierung, Position oder Inhalt einer Zelle zurück -ERROR.TYPE = FEHLER.TYP ## Gibt eine Zahl zurück, die einem Fehlertyp entspricht -INFO = INFO ## Gibt Informationen zur aktuellen Betriebssystemumgebung zurück -ISBLANK = ISTLEER ## Gibt WAHR zurück, wenn der Wert leer ist -ISERR = ISTFEHL ## Gibt WAHR zurück, wenn der Wert ein beliebiger Fehlerwert außer #N/V ist -ISERROR = ISTFEHLER ## Gibt WAHR zurück, wenn der Wert ein beliebiger Fehlerwert ist -ISEVEN = ISTGERADE ## Gibt WAHR zurück, wenn es sich um eine gerade Zahl handelt -ISLOGICAL = ISTLOG ## Gibt WAHR zurück, wenn der Wert ein Wahrheitswert ist -ISNA = ISTNV ## Gibt WAHR zurück, wenn der Wert der Fehlerwert #N/V ist -ISNONTEXT = ISTKTEXT ## Gibt WAHR zurück, wenn der Wert ein Element ist, das keinen Text enthält -ISNUMBER = ISTZAHL ## Gibt WAHR zurück, wenn der Wert eine Zahl ist -ISODD = ISTUNGERADE ## Gibt WAHR zurück, wenn es sich um eine ungerade Zahl handelt -ISREF = ISTBEZUG ## Gibt WAHR zurück, wenn der Wert ein Bezug ist -ISTEXT = ISTTEXT ## Gibt WAHR zurück, wenn der Wert ein Element ist, das Text enthält -N = N ## Gibt den in eine Zahl umgewandelten Wert zurück -NA = NV ## Gibt den Fehlerwert #NV zurück -TYPE = TYP ## Gibt eine Zahl zurück, die den Datentyp des angegebenen Werts anzeigt - - -## -## Logical functions Logische Funktionen -## -AND = UND ## Gibt WAHR zurück, wenn alle zugehörigen Argumente WAHR sind -FALSE = FALSCH ## Gibt den Wahrheitswert FALSCH zurück -IF = WENN ## Gibt einen logischen Test zum Ausführen an -IFERROR = WENNFEHLER ## Gibt einen von Ihnen festgelegten Wert zurück, wenn die Auswertung der Formel zu einem Fehler führt; andernfalls wird das Ergebnis der Formel zurückgegeben -NOT = NICHT ## Kehrt den Wahrheitswert der zugehörigen Argumente um -OR = ODER ## Gibt WAHR zurück, wenn ein Argument WAHR ist -TRUE = WAHR ## Gibt den Wahrheitswert WAHR zurück - - -## -## Lookup and reference functions Nachschlage- und Verweisfunktionen -## -ADDRESS = ADRESSE ## Gibt einen Bezug auf eine einzelne Zelle in einem Tabellenblatt als Text zurück -AREAS = BEREICHE ## Gibt die Anzahl der innerhalb eines Bezugs aufgeführten Bereiche zurück -CHOOSE = WAHL ## Wählt einen Wert aus eine Liste mit Werten aus -COLUMN = SPALTE ## Gibt die Spaltennummer eines Bezugs zurück -COLUMNS = SPALTEN ## Gibt die Anzahl der Spalten in einem Bezug zurück -HLOOKUP = HVERWEIS ## Sucht in der obersten Zeile einer Matrix und gibt den Wert der angegebenen Zelle zurück -HYPERLINK = HYPERLINK ## Erstellt eine Verknüpfung, über die ein auf einem Netzwerkserver, in einem Intranet oder im Internet gespeichertes Dokument geöffnet wird -INDEX = INDEX ## Verwendet einen Index, um einen Wert aus einem Bezug oder einer Matrix auszuwählen -INDIRECT = INDIREKT ## Gibt einen Bezug zurück, der von einem Textwert angegeben wird -LOOKUP = LOOKUP ## Sucht Werte in einem Vektor oder einer Matrix -MATCH = VERGLEICH ## Sucht Werte in einem Bezug oder einer Matrix -OFFSET = BEREICH.VERSCHIEBEN ## Gibt einen Bezugoffset aus einem gegebenen Bezug zurück -ROW = ZEILE ## Gibt die Zeilennummer eines Bezugs zurück -ROWS = ZEILEN ## Gibt die Anzahl der Zeilen in einem Bezug zurück -RTD = RTD ## Ruft Echtzeitdaten von einem Programm ab, das die COM-Automatisierung (Automatisierung: Ein Verfahren, bei dem aus einer Anwendung oder einem Entwicklungstool heraus mit den Objekten einer anderen Anwendung gearbeitet wird. Die früher als OLE-Automatisierung bezeichnete Automatisierung ist ein Industriestandard und eine Funktion von COM (Component Object Model).) unterstützt -TRANSPOSE = MTRANS ## Gibt die transponierte Matrix einer Matrix zurück -VLOOKUP = SVERWEIS ## Sucht in der ersten Spalte einer Matrix und arbeitet sich durch die Zeile, um den Wert einer Zelle zurückzugeben - - -## -## Math and trigonometry functions Mathematische und trigonometrische Funktionen -## -ABS = ABS ## Gibt den Absolutwert einer Zahl zurück -ACOS = ARCCOS ## Gibt den Arkuskosinus einer Zahl zurück -ACOSH = ARCCOSHYP ## Gibt den umgekehrten hyperbolischen Kosinus einer Zahl zurück -ASIN = ARCSIN ## Gibt den Arkussinus einer Zahl zurück -ASINH = ARCSINHYP ## Gibt den umgekehrten hyperbolischen Sinus einer Zahl zurück -ATAN = ARCTAN ## Gibt den Arkustangens einer Zahl zurück -ATAN2 = ARCTAN2 ## Gibt den Arkustangens einer x- und einer y-Koordinate zurück -ATANH = ARCTANHYP ## Gibt den umgekehrten hyperbolischen Tangens einer Zahl zurück -CEILING = OBERGRENZE ## Rundet eine Zahl auf die nächste ganze Zahl oder das nächste Vielfache von Schritt -COMBIN = KOMBINATIONEN ## Gibt die Anzahl der Kombinationen für eine bestimmte Anzahl von Objekten zurück -COS = COS ## Gibt den Kosinus einer Zahl zurück -COSH = COSHYP ## Gibt den hyperbolischen Kosinus einer Zahl zurück -DEGREES = GRAD ## Wandelt Bogenmaß (Radiant) in Grad um -EVEN = GERADE ## Rundet eine Zahl auf die nächste gerade ganze Zahl auf -EXP = EXP ## Potenziert die Basis e mit der als Argument angegebenen Zahl -FACT = FAKULTÄT ## Gibt die Fakultät einer Zahl zurück -FACTDOUBLE = ZWEIFAKULTÄT ## Gibt die Fakultät zu Zahl mit Schrittlänge 2 zurück -FLOOR = UNTERGRENZE ## Rundet die Zahl auf Anzahl_Stellen ab -GCD = GGT ## Gibt den größten gemeinsamen Teiler zurück -INT = GANZZAHL ## Rundet eine Zahl auf die nächstkleinere ganze Zahl ab -LCM = KGV ## Gibt das kleinste gemeinsame Vielfache zurück -LN = LN ## Gibt den natürlichen Logarithmus einer Zahl zurück -LOG = LOG ## Gibt den Logarithmus einer Zahl zu der angegebenen Basis zurück -LOG10 = LOG10 ## Gibt den Logarithmus einer Zahl zur Basis 10 zurück -MDETERM = MDET ## Gibt die Determinante einer Matrix zurück -MINVERSE = MINV ## Gibt die inverse Matrix einer Matrix zurück -MMULT = MMULT ## Gibt das Produkt zweier Matrizen zurück -MOD = REST ## Gibt den Rest einer Division zurück -MROUND = VRUNDEN ## Gibt eine auf das gewünschte Vielfache gerundete Zahl zurück -MULTINOMIAL = POLYNOMIAL ## Gibt den Polynomialkoeffizienten einer Gruppe von Zahlen zurück -ODD = UNGERADE ## Rundet eine Zahl auf die nächste ungerade ganze Zahl auf -PI = PI ## Gibt den Wert Pi zurück -POWER = POTENZ ## Gibt als Ergebnis eine potenzierte Zahl zurück -PRODUCT = PRODUKT ## Multipliziert die zugehörigen Argumente -QUOTIENT = QUOTIENT ## Gibt den ganzzahligen Anteil einer Division zurück -RADIANS = BOGENMASS ## Wandelt Grad in Bogenmaß (Radiant) um -RAND = ZUFALLSZAHL ## Gibt eine Zufallszahl zwischen 0 und 1 zurück -RANDBETWEEN = ZUFALLSBEREICH ## Gibt eine Zufallszahl aus dem festgelegten Bereich zurück -ROMAN = RÖMISCH ## Wandelt eine arabische Zahl in eine römische Zahl als Text um -ROUND = RUNDEN ## Rundet eine Zahl auf eine bestimmte Anzahl von Dezimalstellen -ROUNDDOWN = ABRUNDEN ## Rundet die Zahl auf Anzahl_Stellen ab -ROUNDUP = AUFRUNDEN ## Rundet die Zahl auf Anzahl_Stellen auf -SERIESSUM = POTENZREIHE ## Gibt die Summe von Potenzen (zur Berechnung von Potenzreihen und dichotomen Wahrscheinlichkeiten) zurück -SIGN = VORZEICHEN ## Gibt das Vorzeichen einer Zahl zurück -SIN = SIN ## Gibt den Sinus einer Zahl zurück -SINH = SINHYP ## Gibt den hyperbolischen Sinus einer Zahl zurück -SQRT = WURZEL ## Gibt die Quadratwurzel einer Zahl zurück -SQRTPI = WURZELPI ## Gibt die Wurzel aus der mit Pi (pi) multiplizierten Zahl zurück -SUBTOTAL = TEILERGEBNIS ## Gibt ein Teilergebnis in einer Liste oder Datenbank zurück -SUM = SUMME ## Addiert die zugehörigen Argumente -SUMIF = SUMMEWENN ## Addiert Zahlen, die mit den Suchkriterien übereinstimmen -SUMIFS = SUMMEWENNS ## Die Zellen, die mehrere Kriterien erfüllen, werden in einem Bereich hinzugefügt -SUMPRODUCT = SUMMENPRODUKT ## Gibt die Summe der Produkte zusammengehöriger Matrixkomponenten zurück -SUMSQ = QUADRATESUMME ## Gibt die Summe der quadrierten Argumente zurück -SUMX2MY2 = SUMMEX2MY2 ## Gibt die Summe der Differenzen der Quadrate für zusammengehörige Komponenten zweier Matrizen zurück -SUMX2PY2 = SUMMEX2PY2 ## Gibt die Summe der Quadrate für zusammengehörige Komponenten zweier Matrizen zurück -SUMXMY2 = SUMMEXMY2 ## Gibt die Summe der quadrierten Differenzen für zusammengehörige Komponenten zweier Matrizen zurück -TAN = TAN ## Gibt den Tangens einer Zahl zurück -TANH = TANHYP ## Gibt den hyperbolischen Tangens einer Zahl zurück -TRUNC = KÜRZEN ## Schneidet die Kommastellen einer Zahl ab und gibt als Ergebnis eine ganze Zahl zurück - - -## -## Statistical functions Statistische Funktionen -## -AVEDEV = MITTELABW ## Gibt die durchschnittliche absolute Abweichung einer Reihe von Merkmalsausprägungen und ihrem Mittelwert zurück -AVERAGE = MITTELWERT ## Gibt den Mittelwert der zugehörigen Argumente zurück -AVERAGEA = MITTELWERTA ## Gibt den Mittelwert der zugehörigen Argumente, die Zahlen, Text und Wahrheitswerte enthalten, zurück -AVERAGEIF = MITTELWERTWENN ## Der Durchschnittswert (arithmetisches Mittel) für alle Zellen in einem Bereich, die einem angegebenen Kriterium entsprechen, wird zurückgegeben -AVERAGEIFS = MITTELWERTWENNS ## Gibt den Durchschnittswert (arithmetisches Mittel) aller Zellen zurück, die mehreren Kriterien entsprechen -BETADIST = BETAVERT ## Gibt die Werte der kumulierten Betaverteilungsfunktion zurück -BETAINV = BETAINV ## Gibt das Quantil der angegebenen Betaverteilung zurück -BINOMDIST = BINOMVERT ## Gibt Wahrscheinlichkeiten einer binomialverteilten Zufallsvariablen zurück -CHIDIST = CHIVERT ## Gibt Werte der Verteilungsfunktion (1-Alpha) einer Chi-Quadrat-verteilten Zufallsgröße zurück -CHIINV = CHIINV ## Gibt Quantile der Verteilungsfunktion (1-Alpha) der Chi-Quadrat-Verteilung zurück -CHITEST = CHITEST ## Gibt die Teststatistik eines Unabhängigkeitstests zurück -CONFIDENCE = KONFIDENZ ## Ermöglicht die Berechnung des 1-Alpha Konfidenzintervalls für den Erwartungswert einer Zufallsvariablen -CORREL = KORREL ## Gibt den Korrelationskoeffizienten zweier Reihen von Merkmalsausprägungen zurück -COUNT = ANZAHL ## Gibt die Anzahl der Zahlen in der Liste mit Argumenten an -COUNTA = ANZAHL2 ## Gibt die Anzahl der Werte in der Liste mit Argumenten an -COUNTBLANK = ANZAHLLEEREZELLEN ## Gibt die Anzahl der leeren Zellen in einem Bereich an -COUNTIF = ZÄHLENWENN ## Gibt die Anzahl der Zellen in einem Bereich an, deren Inhalte mit den Suchkriterien übereinstimmen -COUNTIFS = ZÄHLENWENNS ## Gibt die Anzahl der Zellen in einem Bereich an, deren Inhalte mit mehreren Suchkriterien übereinstimmen -COVAR = KOVAR ## Gibt die Kovarianz zurück, den Mittelwert der für alle Datenpunktpaare gebildeten Produkte der Abweichungen -CRITBINOM = KRITBINOM ## Gibt den kleinsten Wert zurück, für den die kumulierten Wahrscheinlichkeiten der Binomialverteilung kleiner oder gleich einer Grenzwahrscheinlichkeit sind -DEVSQ = SUMQUADABW ## Gibt die Summe der quadrierten Abweichungen der Datenpunkte von ihrem Stichprobenmittelwert zurück -EXPONDIST = EXPONVERT ## Gibt Wahrscheinlichkeiten einer exponential verteilten Zufallsvariablen zurück -FDIST = FVERT ## Gibt Werte der Verteilungsfunktion (1-Alpha) einer F-verteilten Zufallsvariablen zurück -FINV = FINV ## Gibt Quantile der F-Verteilung zurück -FISHER = FISHER ## Gibt die Fisher-Transformation zurück -FISHERINV = FISHERINV ## Gibt die Umkehrung der Fisher-Transformation zurück -FORECAST = PROGNOSE ## Gibt einen Wert zurück, der sich aus einem linearen Trend ergibt -FREQUENCY = HÄUFIGKEIT ## Gibt eine Häufigkeitsverteilung als vertikale Matrix zurück -FTEST = FTEST ## Gibt die Teststatistik eines F-Tests zurück -GAMMADIST = GAMMAVERT ## Gibt Wahrscheinlichkeiten einer gammaverteilten Zufallsvariablen zurück -GAMMAINV = GAMMAINV ## Gibt Quantile der Gammaverteilung zurück -GAMMALN = GAMMALN ## Gibt den natürlichen Logarithmus der Gammafunktion zurück, Γ(x) -GEOMEAN = GEOMITTEL ## Gibt das geometrische Mittel zurück -GROWTH = VARIATION ## Gibt Werte zurück, die sich aus einem exponentiellen Trend ergeben -HARMEAN = HARMITTEL ## Gibt das harmonische Mittel zurück -HYPGEOMDIST = HYPGEOMVERT ## Gibt Wahrscheinlichkeiten einer hypergeometrisch-verteilten Zufallsvariablen zurück -INTERCEPT = ACHSENABSCHNITT ## Gibt den Schnittpunkt der Regressionsgeraden zurück -KURT = KURT ## Gibt die Kurtosis (Exzess) einer Datengruppe zurück -LARGE = KGRÖSSTE ## Gibt den k-größten Wert einer Datengruppe zurück -LINEST = RGP ## Gibt die Parameter eines linearen Trends zurück -LOGEST = RKP ## Gibt die Parameter eines exponentiellen Trends zurück -LOGINV = LOGINV ## Gibt Quantile der Lognormalverteilung zurück -LOGNORMDIST = LOGNORMVERT ## Gibt Werte der Verteilungsfunktion einer lognormalverteilten Zufallsvariablen zurück -MAX = MAX ## Gibt den Maximalwert einer Liste mit Argumenten zurück -MAXA = MAXA ## Gibt den Maximalwert einer Liste mit Argumenten zurück, die Zahlen, Text und Wahrheitswerte enthalten -MEDIAN = MEDIAN ## Gibt den Median der angegebenen Zahlen zurück -MIN = MIN ## Gibt den Minimalwert einer Liste mit Argumenten zurück -MINA = MINA ## Gibt den kleinsten Wert einer Liste mit Argumenten zurück, die Zahlen, Text und Wahrheitswerte enthalten -MODE = MODALWERT ## Gibt den am häufigsten vorkommenden Wert in einer Datengruppe zurück -NEGBINOMDIST = NEGBINOMVERT ## Gibt Wahrscheinlichkeiten einer negativen, binominal verteilten Zufallsvariablen zurück -NORMDIST = NORMVERT ## Gibt Wahrscheinlichkeiten einer normal verteilten Zufallsvariablen zurück -NORMINV = NORMINV ## Gibt Quantile der Normalverteilung zurück -NORMSDIST = STANDNORMVERT ## Gibt Werte der Verteilungsfunktion einer standardnormalverteilten Zufallsvariablen zurück -NORMSINV = STANDNORMINV ## Gibt Quantile der Standardnormalverteilung zurück -PEARSON = PEARSON ## Gibt den Pearsonschen Korrelationskoeffizienten zurück -PERCENTILE = QUANTIL ## Gibt das Alpha-Quantil einer Gruppe von Daten zurück -PERCENTRANK = QUANTILSRANG ## Gibt den prozentualen Rang (Alpha) eines Werts in einer Datengruppe zurück -PERMUT = VARIATIONEN ## Gibt die Anzahl der Möglichkeiten zurück, um k Elemente aus einer Menge von n Elementen ohne Zurücklegen zu ziehen -POISSON = POISSON ## Gibt Wahrscheinlichkeiten einer poissonverteilten Zufallsvariablen zurück -PROB = WAHRSCHBEREICH ## Gibt die Wahrscheinlichkeit für ein von zwei Werten eingeschlossenes Intervall zurück -QUARTILE = QUARTILE ## Gibt die Quartile der Datengruppe zurück -RANK = RANG ## Gibt den Rang zurück, den eine Zahl innerhalb einer Liste von Zahlen einnimmt -RSQ = BESTIMMTHEITSMASS ## Gibt das Quadrat des Pearsonschen Korrelationskoeffizienten zurück -SKEW = SCHIEFE ## Gibt die Schiefe einer Verteilung zurück -SLOPE = STEIGUNG ## Gibt die Steigung der Regressionsgeraden zurück -SMALL = KKLEINSTE ## Gibt den k-kleinsten Wert einer Datengruppe zurück -STANDARDIZE = STANDARDISIERUNG ## Gibt den standardisierten Wert zurück -STDEV = STABW ## Schätzt die Standardabweichung ausgehend von einer Stichprobe -STDEVA = STABWA ## Schätzt die Standardabweichung ausgehend von einer Stichprobe, die Zahlen, Text und Wahrheitswerte enthält -STDEVP = STABWN ## Berechnet die Standardabweichung ausgehend von der Grundgesamtheit -STDEVPA = STABWNA ## Berechnet die Standardabweichung ausgehend von der Grundgesamtheit, die Zahlen, Text und Wahrheitswerte enthält -STEYX = STFEHLERYX ## Gibt den Standardfehler der geschätzten y-Werte für alle x-Werte der Regression zurück -TDIST = TVERT ## Gibt Werte der Verteilungsfunktion (1-Alpha) einer (Student) t-verteilten Zufallsvariablen zurück -TINV = TINV ## Gibt Quantile der t-Verteilung zurück -TREND = TREND ## Gibt Werte zurück, die sich aus einem linearen Trend ergeben -TRIMMEAN = GESTUTZTMITTEL ## Gibt den Mittelwert einer Datengruppe zurück, ohne die Randwerte zu berücksichtigen -TTEST = TTEST ## Gibt die Teststatistik eines Student'schen t-Tests zurück -VAR = VARIANZ ## Schätzt die Varianz ausgehend von einer Stichprobe -VARA = VARIANZA ## Schätzt die Varianz ausgehend von einer Stichprobe, die Zahlen, Text und Wahrheitswerte enthält -VARP = VARIANZEN ## Berechnet die Varianz ausgehend von der Grundgesamtheit -VARPA = VARIANZENA ## Berechnet die Varianz ausgehend von der Grundgesamtheit, die Zahlen, Text und Wahrheitswerte enthält -WEIBULL = WEIBULL ## Gibt Wahrscheinlichkeiten einer weibullverteilten Zufallsvariablen zurück -ZTEST = GTEST ## Gibt den einseitigen Wahrscheinlichkeitswert für einen Gausstest (Normalverteilung) zurück - - -## -## Text functions Textfunktionen -## -ASC = ASC ## Konvertiert DB-Text in einer Zeichenfolge (lateinische Buchstaben oder Katakana) in SB-Text -BAHTTEXT = BAHTTEXT ## Wandelt eine Zahl in Text im Währungsformat ß (Baht) um -CHAR = ZEICHEN ## Gibt das der Codezahl entsprechende Zeichen zurück -CLEAN = SÄUBERN ## Löscht alle nicht druckbaren Zeichen aus einem Text -CODE = CODE ## Gibt die Codezahl des ersten Zeichens in einem Text zurück -CONCATENATE = VERKETTEN ## Verknüpft mehrere Textelemente zu einem Textelement -DOLLAR = DM ## Wandelt eine Zahl in Text im Währungsformat € (Euro) um -EXACT = IDENTISCH ## Prüft, ob zwei Textwerte identisch sind -FIND = FINDEN ## Sucht nach einem Textwert, der in einem anderen Textwert enthalten ist (Groß-/Kleinschreibung wird unterschieden) -FINDB = FINDENB ## Sucht nach einem Textwert, der in einem anderen Textwert enthalten ist (Groß-/Kleinschreibung wird unterschieden) -FIXED = FEST ## Formatiert eine Zahl als Text mit einer festen Anzahl von Dezimalstellen -JIS = JIS ## Konvertiert SB-Text in einer Zeichenfolge (lateinische Buchstaben oder Katakana) in DB-Text -LEFT = LINKS ## Gibt die Zeichen ganz links in einem Textwert zurück -LEFTB = LINKSB ## Gibt die Zeichen ganz links in einem Textwert zurück -LEN = LÄNGE ## Gibt die Anzahl der Zeichen in einer Zeichenfolge zurück -LENB = LÄNGEB ## Gibt die Anzahl der Zeichen in einer Zeichenfolge zurück -LOWER = KLEIN ## Wandelt Text in Kleinbuchstaben um -MID = TEIL ## Gibt eine bestimmte Anzahl Zeichen aus einer Zeichenfolge ab der von Ihnen angegebenen Stelle zurück -MIDB = TEILB ## Gibt eine bestimmte Anzahl Zeichen aus einer Zeichenfolge ab der von Ihnen angegebenen Stelle zurück -PHONETIC = PHONETIC ## Extrahiert die phonetischen (Furigana-)Zeichen aus einer Textzeichenfolge -PROPER = GROSS2 ## Wandelt den ersten Buchstaben aller Wörter eines Textwerts in Großbuchstaben um -REPLACE = ERSETZEN ## Ersetzt Zeichen in Text -REPLACEB = ERSETZENB ## Ersetzt Zeichen in Text -REPT = WIEDERHOLEN ## Wiederholt einen Text so oft wie angegeben -RIGHT = RECHTS ## Gibt die Zeichen ganz rechts in einem Textwert zurück -RIGHTB = RECHTSB ## Gibt die Zeichen ganz rechts in einem Textwert zurück -SEARCH = SUCHEN ## Sucht nach einem Textwert, der in einem anderen Textwert enthalten ist (Groß-/Kleinschreibung wird nicht unterschieden) -SEARCHB = SUCHENB ## Sucht nach einem Textwert, der in einem anderen Textwert enthalten ist (Groß-/Kleinschreibung wird nicht unterschieden) -SUBSTITUTE = WECHSELN ## Ersetzt in einer Zeichenfolge neuen Text gegen alten -T = T ## Wandelt die zugehörigen Argumente in Text um -TEXT = TEXT ## Formatiert eine Zahl und wandelt sie in Text um -TRIM = GLÄTTEN ## Entfernt Leerzeichen aus Text -UPPER = GROSS ## Wandelt Text in Großbuchstaben um -VALUE = WERT ## Wandelt ein Textargument in eine Zahl um diff --git a/application/third_party/PHPExcel/locale/en/uk/config b/application/third_party/PHPExcel/locale/en/uk/config deleted file mode 100644 index 532080b5..00000000 --- a/application/third_party/PHPExcel/locale/en/uk/config +++ /dev/null @@ -1,32 +0,0 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Settings -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## - - -## -## (For future use) -## -currencySymbol = £ diff --git a/application/third_party/PHPExcel/locale/es/config b/application/third_party/PHPExcel/locale/es/config deleted file mode 100644 index 96cfa69d..00000000 --- a/application/third_party/PHPExcel/locale/es/config +++ /dev/null @@ -1,47 +0,0 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Settings -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## - - -ArgumentSeparator = ; - - -## -## (For future use) -## -currencySymbol = $ ## I'm surprised that the Excel Documentation suggests $ rather than € - - -## -## Excel Error Codes (For future use) -## -NULL = #¡NULO! -DIV0 = #¡DIV/0! -VALUE = #¡VALOR! -REF = #¡REF! -NAME = #¿NOMBRE? -NUM = #¡NÚM! -NA = #N/A diff --git a/application/third_party/PHPExcel/locale/es/functions b/application/third_party/PHPExcel/locale/es/functions deleted file mode 100644 index 48762695..00000000 --- a/application/third_party/PHPExcel/locale/es/functions +++ /dev/null @@ -1,438 +0,0 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Calculation -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ -## -## - - -## -## Add-in and Automation functions Funciones de complementos y automatización -## -GETPIVOTDATA = IMPORTARDATOSDINAMICOS ## Devuelve los datos almacenados en un informe de tabla dinámica. - - -## -## Cube functions Funciones de cubo -## -CUBEKPIMEMBER = MIEMBROKPICUBO ## Devuelve un nombre, propiedad y medida de indicador de rendimiento clave (KPI) y muestra el nombre y la propiedad en la celda. Un KPI es una medida cuantificable, como los beneficios brutos mensuales o la facturación trimestral por empleado, que se usa para supervisar el rendimiento de una organización. -CUBEMEMBER = MIEMBROCUBO ## Devuelve un miembro o tupla en una jerarquía de cubo. Se usa para validar la existencia del miembro o la tupla en el cubo. -CUBEMEMBERPROPERTY = PROPIEDADMIEMBROCUBO ## Devuelve el valor de una propiedad de miembro del cubo Se usa para validar la existencia de un nombre de miembro en el cubo y para devolver la propiedad especificada para este miembro. -CUBERANKEDMEMBER = MIEMBRORANGOCUBO ## Devuelve el miembro n, o clasificado, de un conjunto. Se usa para devolver uno o más elementos de un conjunto, por ejemplo, el representante con mejores ventas o los diez mejores alumnos. -CUBESET = CONJUNTOCUBO ## Define un conjunto calculado de miembros o tuplas mediante el envío de una expresión de conjunto al cubo en el servidor, lo que crea el conjunto y, después, devuelve dicho conjunto a Microsoft Office Excel. -CUBESETCOUNT = RECUENTOCONJUNTOCUBO ## Devuelve el número de elementos de un conjunto. -CUBEVALUE = VALORCUBO ## Devuelve un valor agregado de un cubo. - - -## -## Database functions Funciones de base de datos -## -DAVERAGE = BDPROMEDIO ## Devuelve el promedio de las entradas seleccionadas en la base de datos. -DCOUNT = BDCONTAR ## Cuenta el número de celdas que contienen números en una base de datos. -DCOUNTA = BDCONTARA ## Cuenta el número de celdas no vacías en una base de datos. -DGET = BDEXTRAER ## Extrae de una base de datos un único registro que cumple los criterios especificados. -DMAX = BDMAX ## Devuelve el valor máximo de las entradas seleccionadas de la base de datos. -DMIN = BDMIN ## Devuelve el valor mínimo de las entradas seleccionadas de la base de datos. -DPRODUCT = BDPRODUCTO ## Multiplica los valores de un campo concreto de registros de una base de datos que cumplen los criterios especificados. -DSTDEV = BDDESVEST ## Calcula la desviación estándar a partir de una muestra de entradas seleccionadas en la base de datos. -DSTDEVP = BDDESVESTP ## Calcula la desviación estándar en función de la población total de las entradas seleccionadas de la base de datos. -DSUM = BDSUMA ## Suma los números de la columna de campo de los registros de la base de datos que cumplen los criterios. -DVAR = BDVAR ## Calcula la varianza a partir de una muestra de entradas seleccionadas de la base de datos. -DVARP = BDVARP ## Calcula la varianza a partir de la población total de entradas seleccionadas de la base de datos. - - -## -## Date and time functions Funciones de fecha y hora -## -DATE = FECHA ## Devuelve el número de serie correspondiente a una fecha determinada. -DATEVALUE = FECHANUMERO ## Convierte una fecha con formato de texto en un valor de número de serie. -DAY = DIA ## Convierte un número de serie en un valor de día del mes. -DAYS360 = DIAS360 ## Calcula el número de días entre dos fechas a partir de un año de 360 días. -EDATE = FECHA.MES ## Devuelve el número de serie de la fecha equivalente al número indicado de meses anteriores o posteriores a la fecha inicial. -EOMONTH = FIN.MES ## Devuelve el número de serie correspondiente al último día del mes anterior o posterior a un número de meses especificado. -HOUR = HORA ## Convierte un número de serie en un valor de hora. -MINUTE = MINUTO ## Convierte un número de serie en un valor de minuto. -MONTH = MES ## Convierte un número de serie en un valor de mes. -NETWORKDAYS = DIAS.LAB ## Devuelve el número de todos los días laborables existentes entre dos fechas. -NOW = AHORA ## Devuelve el número de serie correspondiente a la fecha y hora actuales. -SECOND = SEGUNDO ## Convierte un número de serie en un valor de segundo. -TIME = HORA ## Devuelve el número de serie correspondiente a una hora determinada. -TIMEVALUE = HORANUMERO ## Convierte una hora con formato de texto en un valor de número de serie. -TODAY = HOY ## Devuelve el número de serie correspondiente al día actual. -WEEKDAY = DIASEM ## Convierte un número de serie en un valor de día de la semana. -WEEKNUM = NUM.DE.SEMANA ## Convierte un número de serie en un número que representa el lugar numérico correspondiente a una semana de un año. -WORKDAY = DIA.LAB ## Devuelve el número de serie de la fecha que tiene lugar antes o después de un número determinado de días laborables. -YEAR = AÑO ## Convierte un número de serie en un valor de año. -YEARFRAC = FRAC.AÑO ## Devuelve la fracción de año que representa el número total de días existentes entre el valor de fecha_inicial y el de fecha_final. - - -## -## Engineering functions Funciones de ingeniería -## -BESSELI = BESSELI ## Devuelve la función Bessel In(x) modificada. -BESSELJ = BESSELJ ## Devuelve la función Bessel Jn(x). -BESSELK = BESSELK ## Devuelve la función Bessel Kn(x) modificada. -BESSELY = BESSELY ## Devuelve la función Bessel Yn(x). -BIN2DEC = BIN.A.DEC ## Convierte un número binario en decimal. -BIN2HEX = BIN.A.HEX ## Convierte un número binario en hexadecimal. -BIN2OCT = BIN.A.OCT ## Convierte un número binario en octal. -COMPLEX = COMPLEJO ## Convierte coeficientes reales e imaginarios en un número complejo. -CONVERT = CONVERTIR ## Convierte un número de un sistema de medida a otro. -DEC2BIN = DEC.A.BIN ## Convierte un número decimal en binario. -DEC2HEX = DEC.A.HEX ## Convierte un número decimal en hexadecimal. -DEC2OCT = DEC.A.OCT ## Convierte un número decimal en octal. -DELTA = DELTA ## Comprueba si dos valores son iguales. -ERF = FUN.ERROR ## Devuelve la función de error. -ERFC = FUN.ERROR.COMPL ## Devuelve la función de error complementario. -GESTEP = MAYOR.O.IGUAL ## Comprueba si un número es mayor que un valor de umbral. -HEX2BIN = HEX.A.BIN ## Convierte un número hexadecimal en binario. -HEX2DEC = HEX.A.DEC ## Convierte un número hexadecimal en decimal. -HEX2OCT = HEX.A.OCT ## Convierte un número hexadecimal en octal. -IMABS = IM.ABS ## Devuelve el valor absoluto (módulo) de un número complejo. -IMAGINARY = IMAGINARIO ## Devuelve el coeficiente imaginario de un número complejo. -IMARGUMENT = IM.ANGULO ## Devuelve el argumento theta, un ángulo expresado en radianes. -IMCONJUGATE = IM.CONJUGADA ## Devuelve la conjugada compleja de un número complejo. -IMCOS = IM.COS ## Devuelve el coseno de un número complejo. -IMDIV = IM.DIV ## Devuelve el cociente de dos números complejos. -IMEXP = IM.EXP ## Devuelve el valor exponencial de un número complejo. -IMLN = IM.LN ## Devuelve el logaritmo natural (neperiano) de un número complejo. -IMLOG10 = IM.LOG10 ## Devuelve el logaritmo en base 10 de un número complejo. -IMLOG2 = IM.LOG2 ## Devuelve el logaritmo en base 2 de un número complejo. -IMPOWER = IM.POT ## Devuelve un número complejo elevado a una potencia entera. -IMPRODUCT = IM.PRODUCT ## Devuelve el producto de números complejos. -IMREAL = IM.REAL ## Devuelve el coeficiente real de un número complejo. -IMSIN = IM.SENO ## Devuelve el seno de un número complejo. -IMSQRT = IM.RAIZ2 ## Devuelve la raíz cuadrada de un número complejo. -IMSUB = IM.SUSTR ## Devuelve la diferencia entre dos números complejos. -IMSUM = IM.SUM ## Devuelve la suma de números complejos. -OCT2BIN = OCT.A.BIN ## Convierte un número octal en binario. -OCT2DEC = OCT.A.DEC ## Convierte un número octal en decimal. -OCT2HEX = OCT.A.HEX ## Convierte un número octal en hexadecimal. - - -## -## Financial functions Funciones financieras -## -ACCRINT = INT.ACUM ## Devuelve el interés acumulado de un valor bursátil con pagos de interés periódicos. -ACCRINTM = INT.ACUM.V ## Devuelve el interés acumulado de un valor bursátil con pagos de interés al vencimiento. -AMORDEGRC = AMORTIZ.PROGRE ## Devuelve la amortización de cada período contable mediante el uso de un coeficiente de amortización. -AMORLINC = AMORTIZ.LIN ## Devuelve la amortización de cada uno de los períodos contables. -COUPDAYBS = CUPON.DIAS.L1 ## Devuelve el número de días desde el principio del período de un cupón hasta la fecha de liquidación. -COUPDAYS = CUPON.DIAS ## Devuelve el número de días del período (entre dos cupones) donde se encuentra la fecha de liquidación. -COUPDAYSNC = CUPON.DIAS.L2 ## Devuelve el número de días desde la fecha de liquidación hasta la fecha del próximo cupón. -COUPNCD = CUPON.FECHA.L2 ## Devuelve la fecha del próximo cupón después de la fecha de liquidación. -COUPNUM = CUPON.NUM ## Devuelve el número de pagos de cupón entre la fecha de liquidación y la fecha de vencimiento. -COUPPCD = CUPON.FECHA.L1 ## Devuelve la fecha de cupón anterior a la fecha de liquidación. -CUMIPMT = PAGO.INT.ENTRE ## Devuelve el interés acumulado pagado entre dos períodos. -CUMPRINC = PAGO.PRINC.ENTRE ## Devuelve el capital acumulado pagado de un préstamo entre dos períodos. -DB = DB ## Devuelve la amortización de un bien durante un período específico a través del método de amortización de saldo fijo. -DDB = DDB ## Devuelve la amortización de un bien durante un período específico a través del método de amortización por doble disminución de saldo u otro método que se especifique. -DISC = TASA.DESC ## Devuelve la tasa de descuento de un valor bursátil. -DOLLARDE = MONEDA.DEC ## Convierte una cotización de un valor bursátil expresada en forma fraccionaria en una cotización de un valor bursátil expresada en forma decimal. -DOLLARFR = MONEDA.FRAC ## Convierte una cotización de un valor bursátil expresada en forma decimal en una cotización de un valor bursátil expresada en forma fraccionaria. -DURATION = DURACION ## Devuelve la duración anual de un valor bursátil con pagos de interés periódico. -EFFECT = INT.EFECTIVO ## Devuelve la tasa de interés anual efectiva. -FV = VF ## Devuelve el valor futuro de una inversión. -FVSCHEDULE = VF.PLAN ## Devuelve el valor futuro de un capital inicial después de aplicar una serie de tasas de interés compuesto. -INTRATE = TASA.INT ## Devuelve la tasa de interés para la inversión total de un valor bursátil. -IPMT = PAGOINT ## Devuelve el pago de intereses de una inversión durante un período determinado. -IRR = TIR ## Devuelve la tasa interna de retorno para una serie de flujos de efectivo periódicos. -ISPMT = INT.PAGO.DIR ## Calcula el interés pagado durante un período específico de una inversión. -MDURATION = DURACION.MODIF ## Devuelve la duración de Macauley modificada de un valor bursátil con un valor nominal supuesto de 100 $. -MIRR = TIRM ## Devuelve la tasa interna de retorno donde se financian flujos de efectivo positivos y negativos a tasas diferentes. -NOMINAL = TASA.NOMINAL ## Devuelve la tasa nominal de interés anual. -NPER = NPER ## Devuelve el número de períodos de una inversión. -NPV = VNA ## Devuelve el valor neto actual de una inversión en función de una serie de flujos periódicos de efectivo y una tasa de descuento. -ODDFPRICE = PRECIO.PER.IRREGULAR.1 ## Devuelve el precio por un valor nominal de 100 $ de un valor bursátil con un primer período impar. -ODDFYIELD = RENDTO.PER.IRREGULAR.1 ## Devuelve el rendimiento de un valor bursátil con un primer período impar. -ODDLPRICE = PRECIO.PER.IRREGULAR.2 ## Devuelve el precio por un valor nominal de 100 $ de un valor bursátil con un último período impar. -ODDLYIELD = RENDTO.PER.IRREGULAR.2 ## Devuelve el rendimiento de un valor bursátil con un último período impar. -PMT = PAGO ## Devuelve el pago periódico de una anualidad. -PPMT = PAGOPRIN ## Devuelve el pago de capital de una inversión durante un período determinado. -PRICE = PRECIO ## Devuelve el precio por un valor nominal de 100 $ de un valor bursátil que paga una tasa de interés periódico. -PRICEDISC = PRECIO.DESCUENTO ## Devuelve el precio por un valor nominal de 100 $ de un valor bursátil con descuento. -PRICEMAT = PRECIO.VENCIMIENTO ## Devuelve el precio por un valor nominal de 100 $ de un valor bursátil que paga interés a su vencimiento. -PV = VALACT ## Devuelve el valor actual de una inversión. -RATE = TASA ## Devuelve la tasa de interés por período de una anualidad. -RECEIVED = CANTIDAD.RECIBIDA ## Devuelve la cantidad recibida al vencimiento de un valor bursátil completamente invertido. -SLN = SLN ## Devuelve la amortización por método directo de un bien en un período dado. -SYD = SYD ## Devuelve la amortización por suma de dígitos de los años de un bien durante un período especificado. -TBILLEQ = LETRA.DE.TES.EQV.A.BONO ## Devuelve el rendimiento de un bono equivalente a una letra del Tesoro (de EE.UU.) -TBILLPRICE = LETRA.DE.TES.PRECIO ## Devuelve el precio por un valor nominal de 100 $ de una letra del Tesoro (de EE.UU.) -TBILLYIELD = LETRA.DE.TES.RENDTO ## Devuelve el rendimiento de una letra del Tesoro (de EE.UU.) -VDB = DVS ## Devuelve la amortización de un bien durante un período específico o parcial a través del método de cálculo del saldo en disminución. -XIRR = TIR.NO.PER ## Devuelve la tasa interna de retorno para un flujo de efectivo que no es necesariamente periódico. -XNPV = VNA.NO.PER ## Devuelve el valor neto actual para un flujo de efectivo que no es necesariamente periódico. -YIELD = RENDTO ## Devuelve el rendimiento de un valor bursátil que paga intereses periódicos. -YIELDDISC = RENDTO.DESC ## Devuelve el rendimiento anual de un valor bursátil con descuento; por ejemplo, una letra del Tesoro (de EE.UU.) -YIELDMAT = RENDTO.VENCTO ## Devuelve el rendimiento anual de un valor bursátil que paga intereses al vencimiento. - - -## -## Information functions Funciones de información -## -CELL = CELDA ## Devuelve información acerca del formato, la ubicación o el contenido de una celda. -ERROR.TYPE = TIPO.DE.ERROR ## Devuelve un número que corresponde a un tipo de error. -INFO = INFO ## Devuelve información acerca del entorno operativo en uso. -ISBLANK = ESBLANCO ## Devuelve VERDADERO si el valor está en blanco. -ISERR = ESERR ## Devuelve VERDADERO si el valor es cualquier valor de error excepto #N/A. -ISERROR = ESERROR ## Devuelve VERDADERO si el valor es cualquier valor de error. -ISEVEN = ES.PAR ## Devuelve VERDADERO si el número es par. -ISLOGICAL = ESLOGICO ## Devuelve VERDADERO si el valor es un valor lógico. -ISNA = ESNOD ## Devuelve VERDADERO si el valor es el valor de error #N/A. -ISNONTEXT = ESNOTEXTO ## Devuelve VERDADERO si el valor no es texto. -ISNUMBER = ESNUMERO ## Devuelve VERDADERO si el valor es un número. -ISODD = ES.IMPAR ## Devuelve VERDADERO si el número es impar. -ISREF = ESREF ## Devuelve VERDADERO si el valor es una referencia. -ISTEXT = ESTEXTO ## Devuelve VERDADERO si el valor es texto. -N = N ## Devuelve un valor convertido en un número. -NA = ND ## Devuelve el valor de error #N/A. -TYPE = TIPO ## Devuelve un número que indica el tipo de datos de un valor. - - -## -## Logical functions Funciones lógicas -## -AND = Y ## Devuelve VERDADERO si todos sus argumentos son VERDADERO. -FALSE = FALSO ## Devuelve el valor lógico FALSO. -IF = SI ## Especifica una prueba lógica que realizar. -IFERROR = SI.ERROR ## Devuelve un valor que se especifica si una fórmula lo evalúa como un error; de lo contrario, devuelve el resultado de la fórmula. -NOT = NO ## Invierte el valor lógico del argumento. -OR = O ## Devuelve VERDADERO si cualquier argumento es VERDADERO. -TRUE = VERDADERO ## Devuelve el valor lógico VERDADERO. - - -## -## Lookup and reference functions Funciones de búsqueda y referencia -## -ADDRESS = DIRECCION ## Devuelve una referencia como texto a una sola celda de una hoja de cálculo. -AREAS = AREAS ## Devuelve el número de áreas de una referencia. -CHOOSE = ELEGIR ## Elige un valor de una lista de valores. -COLUMN = COLUMNA ## Devuelve el número de columna de una referencia. -COLUMNS = COLUMNAS ## Devuelve el número de columnas de una referencia. -HLOOKUP = BUSCARH ## Busca en la fila superior de una matriz y devuelve el valor de la celda indicada. -HYPERLINK = HIPERVINCULO ## Crea un acceso directo o un salto que abre un documento almacenado en un servidor de red, en una intranet o en Internet. -INDEX = INDICE ## Usa un índice para elegir un valor de una referencia o matriz. -INDIRECT = INDIRECTO ## Devuelve una referencia indicada por un valor de texto. -LOOKUP = BUSCAR ## Busca valores de un vector o una matriz. -MATCH = COINCIDIR ## Busca valores de una referencia o matriz. -OFFSET = DESREF ## Devuelve un desplazamiento de referencia respecto a una referencia dada. -ROW = FILA ## Devuelve el número de fila de una referencia. -ROWS = FILAS ## Devuelve el número de filas de una referencia. -RTD = RDTR ## Recupera datos en tiempo real desde un programa compatible con la automatización COM (automatización: modo de trabajar con los objetos de una aplicación desde otra aplicación o herramienta de entorno. La automatización, antes denominada automatización OLE, es un estándar de la industria y una función del Modelo de objetos componentes (COM).). -TRANSPOSE = TRANSPONER ## Devuelve la transposición de una matriz. -VLOOKUP = BUSCARV ## Busca en la primera columna de una matriz y se mueve en horizontal por la fila para devolver el valor de una celda. - - -## -## Math and trigonometry functions Funciones matemáticas y trigonométricas -## -ABS = ABS ## Devuelve el valor absoluto de un número. -ACOS = ACOS ## Devuelve el arcocoseno de un número. -ACOSH = ACOSH ## Devuelve el coseno hiperbólico inverso de un número. -ASIN = ASENO ## Devuelve el arcoseno de un número. -ASINH = ASENOH ## Devuelve el seno hiperbólico inverso de un número. -ATAN = ATAN ## Devuelve la arcotangente de un número. -ATAN2 = ATAN2 ## Devuelve la arcotangente de las coordenadas "x" e "y". -ATANH = ATANH ## Devuelve la tangente hiperbólica inversa de un número. -CEILING = MULTIPLO.SUPERIOR ## Redondea un número al entero más próximo o al múltiplo significativo más cercano. -COMBIN = COMBINAT ## Devuelve el número de combinaciones para un número determinado de objetos. -COS = COS ## Devuelve el coseno de un número. -COSH = COSH ## Devuelve el coseno hiperbólico de un número. -DEGREES = GRADOS ## Convierte radianes en grados. -EVEN = REDONDEA.PAR ## Redondea un número hasta el entero par más próximo. -EXP = EXP ## Devuelve e elevado a la potencia de un número dado. -FACT = FACT ## Devuelve el factorial de un número. -FACTDOUBLE = FACT.DOBLE ## Devuelve el factorial doble de un número. -FLOOR = MULTIPLO.INFERIOR ## Redondea un número hacia abajo, en dirección hacia cero. -GCD = M.C.D ## Devuelve el máximo común divisor. -INT = ENTERO ## Redondea un número hacia abajo hasta el entero más próximo. -LCM = M.C.M ## Devuelve el mínimo común múltiplo. -LN = LN ## Devuelve el logaritmo natural (neperiano) de un número. -LOG = LOG ## Devuelve el logaritmo de un número en una base especificada. -LOG10 = LOG10 ## Devuelve el logaritmo en base 10 de un número. -MDETERM = MDETERM ## Devuelve la determinante matricial de una matriz. -MINVERSE = MINVERSA ## Devuelve la matriz inversa de una matriz. -MMULT = MMULT ## Devuelve el producto de matriz de dos matrices. -MOD = RESIDUO ## Devuelve el resto de la división. -MROUND = REDOND.MULT ## Devuelve un número redondeado al múltiplo deseado. -MULTINOMIAL = MULTINOMIAL ## Devuelve el polinomio de un conjunto de números. -ODD = REDONDEA.IMPAR ## Redondea un número hacia arriba hasta el entero impar más próximo. -PI = PI ## Devuelve el valor de pi. -POWER = POTENCIA ## Devuelve el resultado de elevar un número a una potencia. -PRODUCT = PRODUCTO ## Multiplica sus argumentos. -QUOTIENT = COCIENTE ## Devuelve la parte entera de una división. -RADIANS = RADIANES ## Convierte grados en radianes. -RAND = ALEATORIO ## Devuelve un número aleatorio entre 0 y 1. -RANDBETWEEN = ALEATORIO.ENTRE ## Devuelve un número aleatorio entre los números que especifique. -ROMAN = NUMERO.ROMANO ## Convierte un número arábigo en número romano, con formato de texto. -ROUND = REDONDEAR ## Redondea un número al número de decimales especificado. -ROUNDDOWN = REDONDEAR.MENOS ## Redondea un número hacia abajo, en dirección hacia cero. -ROUNDUP = REDONDEAR.MAS ## Redondea un número hacia arriba, en dirección contraria a cero. -SERIESSUM = SUMA.SERIES ## Devuelve la suma de una serie de potencias en función de la fórmula. -SIGN = SIGNO ## Devuelve el signo de un número. -SIN = SENO ## Devuelve el seno de un ángulo determinado. -SINH = SENOH ## Devuelve el seno hiperbólico de un número. -SQRT = RAIZ ## Devuelve la raíz cuadrada positiva de un número. -SQRTPI = RAIZ2PI ## Devuelve la raíz cuadrada de un número multiplicado por PI (número * pi). -SUBTOTAL = SUBTOTALES ## Devuelve un subtotal en una lista o base de datos. -SUM = SUMA ## Suma sus argumentos. -SUMIF = SUMAR.SI ## Suma las celdas especificadas que cumplen unos criterios determinados. -SUMIFS = SUMAR.SI.CONJUNTO ## Suma las celdas de un rango que cumplen varios criterios. -SUMPRODUCT = SUMAPRODUCTO ## Devuelve la suma de los productos de los correspondientes componentes de matriz. -SUMSQ = SUMA.CUADRADOS ## Devuelve la suma de los cuadrados de los argumentos. -SUMX2MY2 = SUMAX2MENOSY2 ## Devuelve la suma de la diferencia de los cuadrados de los valores correspondientes de dos matrices. -SUMX2PY2 = SUMAX2MASY2 ## Devuelve la suma de la suma de los cuadrados de los valores correspondientes de dos matrices. -SUMXMY2 = SUMAXMENOSY2 ## Devuelve la suma de los cuadrados de las diferencias de los valores correspondientes de dos matrices. -TAN = TAN ## Devuelve la tangente de un número. -TANH = TANH ## Devuelve la tangente hiperbólica de un número. -TRUNC = TRUNCAR ## Trunca un número a un entero. - - -## -## Statistical functions Funciones estadísticas -## -AVEDEV = DESVPROM ## Devuelve el promedio de las desviaciones absolutas de la media de los puntos de datos. -AVERAGE = PROMEDIO ## Devuelve el promedio de sus argumentos. -AVERAGEA = PROMEDIOA ## Devuelve el promedio de sus argumentos, incluidos números, texto y valores lógicos. -AVERAGEIF = PROMEDIO.SI ## Devuelve el promedio (media aritmética) de todas las celdas de un rango que cumplen unos criterios determinados. -AVERAGEIFS = PROMEDIO.SI.CONJUNTO ## Devuelve el promedio (media aritmética) de todas las celdas que cumplen múltiples criterios. -BETADIST = DISTR.BETA ## Devuelve la función de distribución beta acumulativa. -BETAINV = DISTR.BETA.INV ## Devuelve la función inversa de la función de distribución acumulativa de una distribución beta especificada. -BINOMDIST = DISTR.BINOM ## Devuelve la probabilidad de una variable aleatoria discreta siguiendo una distribución binomial. -CHIDIST = DISTR.CHI ## Devuelve la probabilidad de una variable aleatoria continua siguiendo una distribución chi cuadrado de una sola cola. -CHIINV = PRUEBA.CHI.INV ## Devuelve la función inversa de la probabilidad de una variable aleatoria continua siguiendo una distribución chi cuadrado de una sola cola. -CHITEST = PRUEBA.CHI ## Devuelve la prueba de independencia. -CONFIDENCE = INTERVALO.CONFIANZA ## Devuelve el intervalo de confianza de la media de una población. -CORREL = COEF.DE.CORREL ## Devuelve el coeficiente de correlación entre dos conjuntos de datos. -COUNT = CONTAR ## Cuenta cuántos números hay en la lista de argumentos. -COUNTA = CONTARA ## Cuenta cuántos valores hay en la lista de argumentos. -COUNTBLANK = CONTAR.BLANCO ## Cuenta el número de celdas en blanco de un rango. -COUNTIF = CONTAR.SI ## Cuenta el número de celdas, dentro del rango, que cumplen el criterio especificado. -COUNTIFS = CONTAR.SI.CONJUNTO ## Cuenta el número de celdas, dentro del rango, que cumplen varios criterios. -COVAR = COVAR ## Devuelve la covarianza, que es el promedio de los productos de las desviaciones para cada pareja de puntos de datos. -CRITBINOM = BINOM.CRIT ## Devuelve el menor valor cuya distribución binomial acumulativa es menor o igual a un valor de criterio. -DEVSQ = DESVIA2 ## Devuelve la suma de los cuadrados de las desviaciones. -EXPONDIST = DISTR.EXP ## Devuelve la distribución exponencial. -FDIST = DISTR.F ## Devuelve la distribución de probabilidad F. -FINV = DISTR.F.INV ## Devuelve la función inversa de la distribución de probabilidad F. -FISHER = FISHER ## Devuelve la transformación Fisher. -FISHERINV = PRUEBA.FISHER.INV ## Devuelve la función inversa de la transformación Fisher. -FORECAST = PRONOSTICO ## Devuelve un valor en una tendencia lineal. -FREQUENCY = FRECUENCIA ## Devuelve una distribución de frecuencia como una matriz vertical. -FTEST = PRUEBA.F ## Devuelve el resultado de una prueba F. -GAMMADIST = DISTR.GAMMA ## Devuelve la distribución gamma. -GAMMAINV = DISTR.GAMMA.INV ## Devuelve la función inversa de la distribución gamma acumulativa. -GAMMALN = GAMMA.LN ## Devuelve el logaritmo natural de la función gamma, G(x). -GEOMEAN = MEDIA.GEOM ## Devuelve la media geométrica. -GROWTH = CRECIMIENTO ## Devuelve valores en una tendencia exponencial. -HARMEAN = MEDIA.ARMO ## Devuelve la media armónica. -HYPGEOMDIST = DISTR.HIPERGEOM ## Devuelve la distribución hipergeométrica. -INTERCEPT = INTERSECCION.EJE ## Devuelve la intersección de la línea de regresión lineal. -KURT = CURTOSIS ## Devuelve la curtosis de un conjunto de datos. -LARGE = K.ESIMO.MAYOR ## Devuelve el k-ésimo mayor valor de un conjunto de datos. -LINEST = ESTIMACION.LINEAL ## Devuelve los parámetros de una tendencia lineal. -LOGEST = ESTIMACION.LOGARITMICA ## Devuelve los parámetros de una tendencia exponencial. -LOGINV = DISTR.LOG.INV ## Devuelve la función inversa de la distribución logarítmico-normal. -LOGNORMDIST = DISTR.LOG.NORM ## Devuelve la distribución logarítmico-normal acumulativa. -MAX = MAX ## Devuelve el valor máximo de una lista de argumentos. -MAXA = MAXA ## Devuelve el valor máximo de una lista de argumentos, incluidos números, texto y valores lógicos. -MEDIAN = MEDIANA ## Devuelve la mediana de los números dados. -MIN = MIN ## Devuelve el valor mínimo de una lista de argumentos. -MINA = MINA ## Devuelve el valor mínimo de una lista de argumentos, incluidos números, texto y valores lógicos. -MODE = MODA ## Devuelve el valor más común de un conjunto de datos. -NEGBINOMDIST = NEGBINOMDIST ## Devuelve la distribución binomial negativa. -NORMDIST = DISTR.NORM ## Devuelve la distribución normal acumulativa. -NORMINV = DISTR.NORM.INV ## Devuelve la función inversa de la distribución normal acumulativa. -NORMSDIST = DISTR.NORM.ESTAND ## Devuelve la distribución normal estándar acumulativa. -NORMSINV = DISTR.NORM.ESTAND.INV ## Devuelve la función inversa de la distribución normal estándar acumulativa. -PEARSON = PEARSON ## Devuelve el coeficiente de momento de correlación de producto Pearson. -PERCENTILE = PERCENTIL ## Devuelve el k-ésimo percentil de los valores de un rango. -PERCENTRANK = RANGO.PERCENTIL ## Devuelve el rango porcentual de un valor de un conjunto de datos. -PERMUT = PERMUTACIONES ## Devuelve el número de permutaciones de un número determinado de objetos. -POISSON = POISSON ## Devuelve la distribución de Poisson. -PROB = PROBABILIDAD ## Devuelve la probabilidad de que los valores de un rango se encuentren entre dos límites. -QUARTILE = CUARTIL ## Devuelve el cuartil de un conjunto de datos. -RANK = JERARQUIA ## Devuelve la jerarquía de un número en una lista de números. -RSQ = COEFICIENTE.R2 ## Devuelve el cuadrado del coeficiente de momento de correlación de producto Pearson. -SKEW = COEFICIENTE.ASIMETRIA ## Devuelve la asimetría de una distribución. -SLOPE = PENDIENTE ## Devuelve la pendiente de la línea de regresión lineal. -SMALL = K.ESIMO.MENOR ## Devuelve el k-ésimo menor valor de un conjunto de datos. -STANDARDIZE = NORMALIZACION ## Devuelve un valor normalizado. -STDEV = DESVEST ## Calcula la desviación estándar a partir de una muestra. -STDEVA = DESVESTA ## Calcula la desviación estándar a partir de una muestra, incluidos números, texto y valores lógicos. -STDEVP = DESVESTP ## Calcula la desviación estándar en función de toda la población. -STDEVPA = DESVESTPA ## Calcula la desviación estándar en función de toda la población, incluidos números, texto y valores lógicos. -STEYX = ERROR.TIPICO.XY ## Devuelve el error estándar del valor de "y" previsto para cada "x" de la regresión. -TDIST = DISTR.T ## Devuelve la distribución de t de Student. -TINV = DISTR.T.INV ## Devuelve la función inversa de la distribución de t de Student. -TREND = TENDENCIA ## Devuelve valores en una tendencia lineal. -TRIMMEAN = MEDIA.ACOTADA ## Devuelve la media del interior de un conjunto de datos. -TTEST = PRUEBA.T ## Devuelve la probabilidad asociada a una prueba t de Student. -VAR = VAR ## Calcula la varianza en función de una muestra. -VARA = VARA ## Calcula la varianza en función de una muestra, incluidos números, texto y valores lógicos. -VARP = VARP ## Calcula la varianza en función de toda la población. -VARPA = VARPA ## Calcula la varianza en función de toda la población, incluidos números, texto y valores lógicos. -WEIBULL = DIST.WEIBULL ## Devuelve la distribución de Weibull. -ZTEST = PRUEBA.Z ## Devuelve el valor de una probabilidad de una cola de una prueba z. - - -## -## Text functions Funciones de texto -## -ASC = ASC ## Convierte las letras inglesas o katakana de ancho completo (de dos bytes) dentro de una cadena de caracteres en caracteres de ancho medio (de un byte). -BAHTTEXT = TEXTOBAHT ## Convierte un número en texto, con el formato de moneda ß (Baht). -CHAR = CARACTER ## Devuelve el carácter especificado por el número de código. -CLEAN = LIMPIAR ## Quita del texto todos los caracteres no imprimibles. -CODE = CODIGO ## Devuelve un código numérico del primer carácter de una cadena de texto. -CONCATENATE = CONCATENAR ## Concatena varios elementos de texto en uno solo. -DOLLAR = MONEDA ## Convierte un número en texto, con el formato de moneda $ (dólar). -EXACT = IGUAL ## Comprueba si dos valores de texto son idénticos. -FIND = ENCONTRAR ## Busca un valor de texto dentro de otro (distingue mayúsculas de minúsculas). -FINDB = ENCONTRARB ## Busca un valor de texto dentro de otro (distingue mayúsculas de minúsculas). -FIXED = DECIMAL ## Da formato a un número como texto con un número fijo de decimales. -JIS = JIS ## Convierte las letras inglesas o katakana de ancho medio (de un byte) dentro de una cadena de caracteres en caracteres de ancho completo (de dos bytes). -LEFT = IZQUIERDA ## Devuelve los caracteres del lado izquierdo de un valor de texto. -LEFTB = IZQUIERDAB ## Devuelve los caracteres del lado izquierdo de un valor de texto. -LEN = LARGO ## Devuelve el número de caracteres de una cadena de texto. -LENB = LARGOB ## Devuelve el número de caracteres de una cadena de texto. -LOWER = MINUSC ## Pone el texto en minúsculas. -MID = EXTRAE ## Devuelve un número específico de caracteres de una cadena de texto que comienza en la posición que se especifique. -MIDB = EXTRAEB ## Devuelve un número específico de caracteres de una cadena de texto que comienza en la posición que se especifique. -PHONETIC = FONETICO ## Extrae los caracteres fonéticos (furigana) de una cadena de texto. -PROPER = NOMPROPIO ## Pone en mayúscula la primera letra de cada palabra de un valor de texto. -REPLACE = REEMPLAZAR ## Reemplaza caracteres de texto. -REPLACEB = REEMPLAZARB ## Reemplaza caracteres de texto. -REPT = REPETIR ## Repite el texto un número determinado de veces. -RIGHT = DERECHA ## Devuelve los caracteres del lado derecho de un valor de texto. -RIGHTB = DERECHAB ## Devuelve los caracteres del lado derecho de un valor de texto. -SEARCH = HALLAR ## Busca un valor de texto dentro de otro (no distingue mayúsculas de minúsculas). -SEARCHB = HALLARB ## Busca un valor de texto dentro de otro (no distingue mayúsculas de minúsculas). -SUBSTITUTE = SUSTITUIR ## Sustituye texto nuevo por texto antiguo en una cadena de texto. -T = T ## Convierte sus argumentos a texto. -TEXT = TEXTO ## Da formato a un número y lo convierte en texto. -TRIM = ESPACIOS ## Quita los espacios del texto. -UPPER = MAYUSC ## Pone el texto en mayúsculas. -VALUE = VALOR ## Convierte un argumento de texto en un número. diff --git a/application/third_party/PHPExcel/locale/fi/config b/application/third_party/PHPExcel/locale/fi/config deleted file mode 100644 index 498cf4ce..00000000 --- a/application/third_party/PHPExcel/locale/fi/config +++ /dev/null @@ -1,47 +0,0 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Settings -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## - - -ArgumentSeparator = ; - - -## -## (For future use) -## -currencySymbol = $ # Symbol not known, should it be a € (Euro)? - - -## -## Excel Error Codes (For future use) -## -NULL = #TYHJÄ! -DIV0 = #JAKO/0! -VALUE = #ARVO! -REF = #VIITTAUS! -NAME = #NIMI? -NUM = #LUKU! -NA = #PUUTTUU diff --git a/application/third_party/PHPExcel/locale/fi/functions b/application/third_party/PHPExcel/locale/fi/functions deleted file mode 100644 index 6a7c2b36..00000000 --- a/application/third_party/PHPExcel/locale/fi/functions +++ /dev/null @@ -1,438 +0,0 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Calculation -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ -## -## - - -## -## Add-in and Automation functions Apuohjelma- ja automaatiofunktiot -## -GETPIVOTDATA = NOUDA.PIVOT.TIEDOT ## Palauttaa pivot-taulukkoraporttiin tallennettuja tietoja. - - -## -## Cube functions Kuutiofunktiot -## -CUBEKPIMEMBER = KUUTIOKPIJÄSEN ## Palauttaa suorituskykyilmaisimen (KPI) nimen, ominaisuuden sekä mitan ja näyttää nimen sekä ominaisuuden solussa. KPI on mitattavissa oleva suure, kuten kuukauden bruttotuotto tai vuosineljänneksen työntekijäkohtainen liikevaihto, joiden avulla tarkkaillaan organisaation suorituskykyä. -CUBEMEMBER = KUUTIONJÄSEN ## Palauttaa kuutiohierarkian jäsenen tai monikon. Tällä funktiolla voit tarkistaa, että jäsen tai monikko on olemassa kuutiossa. -CUBEMEMBERPROPERTY = KUUTIONJÄSENENOMINAISUUS ## Palauttaa kuution jäsenominaisuuden arvon. Tällä funktiolla voit tarkistaa, että nimi on olemassa kuutiossa, ja palauttaa tämän jäsenen määritetyn ominaisuuden. -CUBERANKEDMEMBER = KUUTIONLUOKITELTUJÄSEN ## Palauttaa joukon n:nnen jäsenen. Tällä funktiolla voit palauttaa joukosta elementtejä, kuten parhaan myyjän tai 10 parasta opiskelijaa. -CUBESET = KUUTIOJOUKKO ## Määrittää lasketun jäsen- tai monikkojoukon lähettämällä joukon lausekkeita palvelimessa olevalle kuutiolle. Palvelin luo joukon ja palauttaa sen Microsoft Office Excelille. -CUBESETCOUNT = KUUTIOJOUKKOJENMÄÄRÄ ## Palauttaa joukon kohteiden määrän. -CUBEVALUE = KUUTIONARVO ## Palauttaa koostetun arvon kuutiosta. - - -## -## Database functions Tietokantafunktiot -## -DAVERAGE = TKESKIARVO ## Palauttaa valittujen tietokantamerkintöjen keskiarvon. -DCOUNT = TLASKE ## Laskee tietokannan lukuja sisältävien solujen määrän. -DCOUNTA = TLASKEA ## Laskee tietokannan tietoja sisältävien solujen määrän. -DGET = TNOUDA ## Hakee määritettyjä ehtoja vastaavan tietueen tietokannasta. -DMAX = TMAKS ## Palauttaa suurimman arvon tietokannasta valittujen arvojen joukosta. -DMIN = TMIN ## Palauttaa pienimmän arvon tietokannasta valittujen arvojen joukosta. -DPRODUCT = TTULO ## Kertoo määritetyn ehdon täyttävien tietokannan tietueiden tietyssä kentässä olevat arvot. -DSTDEV = TKESKIHAJONTA ## Laskee keskihajonnan tietokannasta valituista arvoista muodostuvan otoksen perusteella. -DSTDEVP = TKESKIHAJONTAP ## Laskee keskihajonnan tietokannasta valittujen arvojen koko populaation perusteella. -DSUM = TSUMMA ## Lisää luvut määritetyn ehdon täyttävien tietokannan tietueiden kenttäsarakkeeseen. -DVAR = TVARIANSSI ## Laskee varianssin tietokannasta valittujen arvojen otoksen perusteella. -DVARP = TVARIANSSIP ## Laskee varianssin tietokannasta valittujen arvojen koko populaation perusteella. - - -## -## Date and time functions Päivämäärä- ja aikafunktiot -## -DATE = PÄIVÄYS ## Palauttaa annetun päivämäärän järjestysluvun. -DATEVALUE = PÄIVÄYSARVO ## Muuntaa tekstimuodossa olevan päivämäärän järjestysluvuksi. -DAY = PÄIVÄ ## Muuntaa järjestysluvun kuukauden päiväksi. -DAYS360 = PÄIVÄT360 ## Laskee kahden päivämäärän välisten päivien määrän käyttäen perustana 360-päiväistä vuotta. -EDATE = PÄIVÄ.KUUKAUSI ## Palauttaa järjestyslukuna päivämäärän, joka poikkeaa aloituspäivän päivämäärästä annetun kuukausimäärän verran joko eteen- tai taaksepäin. -EOMONTH = KUUKAUSI.LOPPU ## Palauttaa järjestyslukuna sen kuukauden viimeisen päivämäärän, joka poikkeaa annetun kuukausimäärän verran eteen- tai taaksepäin. -HOUR = TUNNIT ## Muuntaa järjestysluvun tunneiksi. -MINUTE = MINUUTIT ## Muuntaa järjestysluvun minuuteiksi. -MONTH = KUUKAUSI ## Muuntaa järjestysluvun kuukausiksi. -NETWORKDAYS = TYÖPÄIVÄT ## Palauttaa kahden päivämäärän välissä olevien täysien työpäivien määrän. -NOW = NYT ## Palauttaa kuluvan päivämäärän ja ajan järjestysnumeron. -SECOND = SEKUNNIT ## Muuntaa järjestysluvun sekunneiksi. -TIME = AIKA ## Palauttaa annetun kellonajan järjestysluvun. -TIMEVALUE = AIKA_ARVO ## Muuntaa tekstimuodossa olevan kellonajan järjestysluvuksi. -TODAY = TÄMÄ.PÄIVÄ ## Palauttaa kuluvan päivän päivämäärän järjestysluvun. -WEEKDAY = VIIKONPÄIVÄ ## Muuntaa järjestysluvun viikonpäiväksi. -WEEKNUM = VIIKKO.NRO ## Muuntaa järjestysluvun luvuksi, joka ilmaisee viikon järjestysluvun vuoden alusta laskettuna. -WORKDAY = TYÖPÄIVÄ ## Palauttaa järjestysluvun päivämäärälle, joka sijaitsee annettujen työpäivien verran eteen tai taaksepäin. -YEAR = VUOSI ## Muuntaa järjestysluvun vuosiksi. -YEARFRAC = VUOSI.OSA ## Palauttaa määritettyjen päivämäärien (aloituspäivä ja lopetuspäivä) välisen osan vuodesta. - - -## -## Engineering functions Tekniset funktiot -## -BESSELI = BESSELI ## Palauttaa muunnetun Bessel-funktion In(x). -BESSELJ = BESSELJ ## Palauttaa Bessel-funktion Jn(x). -BESSELK = BESSELK ## Palauttaa muunnetun Bessel-funktion Kn(x). -BESSELY = BESSELY ## Palauttaa Bessel-funktion Yn(x). -BIN2DEC = BINDES ## Muuntaa binaariluvun desimaaliluvuksi. -BIN2HEX = BINHEKSA ## Muuntaa binaariluvun heksadesimaaliluvuksi. -BIN2OCT = BINOKT ## Muuntaa binaariluvun oktaaliluvuksi. -COMPLEX = KOMPLEKSI ## Muuntaa reaali- ja imaginaariosien kertoimet kompleksiluvuksi. -CONVERT = MUUNNA ## Muuntaa luvun toisen mittajärjestelmän mukaiseksi. -DEC2BIN = DESBIN ## Muuntaa desimaaliluvun binaariluvuksi. -DEC2HEX = DESHEKSA ## Muuntaa kymmenjärjestelmän luvun heksadesimaaliluvuksi. -DEC2OCT = DESOKT ## Muuntaa kymmenjärjestelmän luvun oktaaliluvuksi. -DELTA = SAMA.ARVO ## Tarkistaa, ovatko kaksi arvoa yhtä suuria. -ERF = VIRHEFUNKTIO ## Palauttaa virhefunktion. -ERFC = VIRHEFUNKTIO.KOMPLEMENTTI ## Palauttaa komplementtivirhefunktion. -GESTEP = RAJA ## Testaa, onko luku suurempi kuin kynnysarvo. -HEX2BIN = HEKSABIN ## Muuntaa heksadesimaaliluvun binaariluvuksi. -HEX2DEC = HEKSADES ## Muuntaa heksadesimaaliluvun desimaaliluvuksi. -HEX2OCT = HEKSAOKT ## Muuntaa heksadesimaaliluvun oktaaliluvuksi. -IMABS = KOMPLEKSI.ITSEISARVO ## Palauttaa kompleksiluvun itseisarvon (moduluksen). -IMAGINARY = KOMPLEKSI.IMAG ## Palauttaa kompleksiluvun imaginaariosan kertoimen. -IMARGUMENT = KOMPLEKSI.ARG ## Palauttaa theeta-argumentin, joka on radiaaneina annettu kulma. -IMCONJUGATE = KOMPLEKSI.KONJ ## Palauttaa kompleksiluvun konjugaattiluvun. -IMCOS = KOMPLEKSI.COS ## Palauttaa kompleksiluvun kosinin. -IMDIV = KOMPLEKSI.OSAM ## Palauttaa kahden kompleksiluvun osamäärän. -IMEXP = KOMPLEKSI.EKSP ## Palauttaa kompleksiluvun eksponentin. -IMLN = KOMPLEKSI.LN ## Palauttaa kompleksiluvun luonnollisen logaritmin. -IMLOG10 = KOMPLEKSI.LOG10 ## Palauttaa kompleksiluvun kymmenkantaisen logaritmin. -IMLOG2 = KOMPLEKSI.LOG2 ## Palauttaa kompleksiluvun kaksikantaisen logaritmin. -IMPOWER = KOMPLEKSI.POT ## Palauttaa kokonaislukupotenssiin korotetun kompleksiluvun. -IMPRODUCT = KOMPLEKSI.TULO ## Palauttaa kompleksilukujen tulon. -IMREAL = KOMPLEKSI.REAALI ## Palauttaa kompleksiluvun reaaliosan kertoimen. -IMSIN = KOMPLEKSI.SIN ## Palauttaa kompleksiluvun sinin. -IMSQRT = KOMPLEKSI.NELIÖJ ## Palauttaa kompleksiluvun neliöjuuren. -IMSUB = KOMPLEKSI.EROTUS ## Palauttaa kahden kompleksiluvun erotuksen. -IMSUM = KOMPLEKSI.SUM ## Palauttaa kompleksilukujen summan. -OCT2BIN = OKTBIN ## Muuntaa oktaaliluvun binaariluvuksi. -OCT2DEC = OKTDES ## Muuntaa oktaaliluvun desimaaliluvuksi. -OCT2HEX = OKTHEKSA ## Muuntaa oktaaliluvun heksadesimaaliluvuksi. - - -## -## Financial functions Rahoitusfunktiot -## -ACCRINT = KERTYNYT.KORKO ## Laskee arvopaperille kertyneen koron, kun korko kertyy säännöllisin väliajoin. -ACCRINTM = KERTYNYT.KORKO.LOPUSSA ## Laskee arvopaperille kertyneen koron, kun korko maksetaan eräpäivänä. -AMORDEGRC = AMORDEGRC ## Laskee kunkin laskentakauden poiston poistokerrointa käyttämällä. -AMORLINC = AMORLINC ## Palauttaa kunkin laskentakauden poiston. -COUPDAYBS = KORKOPÄIVÄT.ALUSTA ## Palauttaa koronmaksukauden aloituspäivän ja tilityspäivän välisen ajanjakson päivien määrän. -COUPDAYS = KORKOPÄIVÄT ## Palauttaa päivien määrän koronmaksukaudelta, johon tilityspäivä kuuluu. -COUPDAYSNC = KORKOPÄIVÄT.SEURAAVA ## Palauttaa tilityspäivän ja seuraavan koronmaksupäivän välisen ajanjakson päivien määrän. -COUPNCD = KORKOMAKSU.SEURAAVA ## Palauttaa tilityspäivän jälkeisen seuraavan koronmaksupäivän. -COUPNUM = KORKOPÄIVÄJAKSOT ## Palauttaa arvopaperin ostopäivän ja erääntymispäivän välisten koronmaksupäivien määrän. -COUPPCD = KORKOPÄIVÄ.EDELLINEN ## Palauttaa tilityspäivää edeltävän koronmaksupäivän. -CUMIPMT = MAKSETTU.KORKO ## Palauttaa kahden jakson välisenä aikana kertyneen koron. -CUMPRINC = MAKSETTU.LYHENNYS ## Palauttaa lainalle kahden jakson välisenä aikana kertyneen lyhennyksen. -DB = DB ## Palauttaa kauden kirjanpidollisen poiston amerikkalaisen DB-menetelmän (Fixed-declining balance) mukaan. -DDB = DDB ## Palauttaa kauden kirjanpidollisen poiston amerikkalaisen DDB-menetelmän (Double-Declining Balance) tai jonkin muun määrittämäsi menetelmän mukaan. -DISC = DISKONTTOKORKO ## Palauttaa arvopaperin diskonttokoron. -DOLLARDE = VALUUTTA.DES ## Muuntaa murtolukuna ilmoitetun valuuttamäärän desimaaliluvuksi. -DOLLARFR = VALUUTTA.MURTO ## Muuntaa desimaalilukuna ilmaistun valuuttamäärän murtoluvuksi. -DURATION = KESTO ## Palauttaa keston arvopaperille, jonka koronmaksu tapahtuu säännöllisesti. -EFFECT = KORKO.EFEKT ## Palauttaa todellisen vuosikoron. -FV = TULEVA.ARVO ## Palauttaa sijoituksen tulevan arvon. -FVSCHEDULE = TULEVA.ARVO.ERIKORKO ## Palauttaa pääoman tulevan arvon, kun pääomalle on kertynyt korkoa vaihtelevasti. -INTRATE = KORKO.ARVOPAPERI ## Palauttaa arvopaperin korkokannan täysin sijoitetulle arvopaperille. -IPMT = IPMT ## Laskee sijoitukselle tai lainalle tiettynä ajanjaksona kertyvän koron. -IRR = SISÄINEN.KORKO ## Laskee sisäisen korkokannan kassavirrasta muodostuvalle sarjalle. -ISPMT = ONMAKSU ## Laskee sijoituksen maksetun koron tietyllä jaksolla. -MDURATION = KESTO.MUUNN ## Palauttaa muunnetun Macauley-keston arvopaperille, jonka oletettu nimellisarvo on 100 euroa. -MIRR = MSISÄINEN ## Palauttaa sisäisen korkokannan, kun positiivisten ja negatiivisten kassavirtojen rahoituskorko on erilainen. -NOMINAL = KORKO.VUOSI ## Palauttaa vuosittaisen nimelliskoron. -NPER = NJAKSO ## Palauttaa sijoituksen jaksojen määrän. -NPV = NNA ## Palauttaa sijoituksen nykyarvon toistuvista kassavirroista muodostuvan sarjan ja diskonttokoron perusteella. -ODDFPRICE = PARITON.ENS.NIMELLISARVO ## Palauttaa arvopaperin hinnan tilanteessa, jossa ensimmäinen jakso on pariton. -ODDFYIELD = PARITON.ENS.TUOTTO ## Palauttaa arvopaperin tuoton tilanteessa, jossa ensimmäinen jakso on pariton. -ODDLPRICE = PARITON.VIIM.NIMELLISARVO ## Palauttaa arvopaperin hinnan tilanteessa, jossa viimeinen jakso on pariton. -ODDLYIELD = PARITON.VIIM.TUOTTO ## Palauttaa arvopaperin tuoton tilanteessa, jossa viimeinen jakso on pariton. -PMT = MAKSU ## Palauttaa annuiteetin kausittaisen maksuerän. -PPMT = PPMT ## Laskee sijoitukselle tai lainalle tiettynä ajanjaksona maksettavan lyhennyksen. -PRICE = HINTA ## Palauttaa hinnan 100 euron nimellisarvoa kohden arvopaperille, jonka korko maksetaan säännöllisin väliajoin. -PRICEDISC = HINTA.DISK ## Palauttaa diskontatun arvopaperin hinnan 100 euron nimellisarvoa kohden. -PRICEMAT = HINTA.LUNASTUS ## Palauttaa hinnan 100 euron nimellisarvoa kohden arvopaperille, jonka korko maksetaan erääntymispäivänä. -PV = NA ## Palauttaa sijoituksen nykyarvon. -RATE = KORKO ## Palauttaa annuiteetin kausittaisen korkokannan. -RECEIVED = SAATU.HINTA ## Palauttaa arvopaperin tuoton erääntymispäivänä kokonaan maksetulle sijoitukselle. -SLN = STP ## Palauttaa sijoituksen tasapoiston yhdeltä jaksolta. -SYD = VUOSIPOISTO ## Palauttaa sijoituksen vuosipoiston annettuna kautena amerikkalaisen SYD-menetelmän (Sum-of-Year's Digits) avulla. -TBILLEQ = OBLIG.TUOTTOPROS ## Palauttaa valtion obligaation tuoton vastaavana joukkovelkakirjan tuottona. -TBILLPRICE = OBLIG.HINTA ## Palauttaa obligaation hinnan 100 euron nimellisarvoa kohden. -TBILLYIELD = OBLIG.TUOTTO ## Palauttaa obligaation tuoton. -VDB = VDB ## Palauttaa annetun kauden tai kauden osan kirjanpidollisen poiston amerikkalaisen DB-menetelmän (Fixed-declining balance) mukaan. -XIRR = SISÄINEN.KORKO.JAKSOTON ## Palauttaa sisäisen korkokannan kassavirtojen sarjoille, jotka eivät välttämättä ole säännöllisiä. -XNPV = NNA.JAKSOTON ## Palauttaa nettonykyarvon kassavirtasarjalle, joka ei välttämättä ole kausittainen. -YIELD = TUOTTO ## Palauttaa tuoton arvopaperille, jonka korko maksetaan säännöllisin väliajoin. -YIELDDISC = TUOTTO.DISK ## Palauttaa diskontatun arvopaperin, kuten obligaation, vuosittaisen tuoton. -YIELDMAT = TUOTTO.ERÄP ## Palauttaa erääntymispäivänään korkoa tuottavan arvopaperin vuosittaisen tuoton. - - -## -## Information functions Erikoisfunktiot -## -CELL = SOLU ## Palauttaa tietoja solun muotoilusta, sijainnista ja sisällöstä. -ERROR.TYPE = VIRHEEN.LAJI ## Palauttaa virhetyyppiä vastaavan luvun. -INFO = KUVAUS ## Palauttaa tietoja nykyisestä käyttöympäristöstä. -ISBLANK = ONTYHJÄ ## Palauttaa arvon TOSI, jos arvo on tyhjä. -ISERR = ONVIRH ## Palauttaa arvon TOSI, jos arvo on mikä tahansa virhearvo paitsi arvo #PUUTTUU!. -ISERROR = ONVIRHE ## Palauttaa arvon TOSI, jos arvo on mikä tahansa virhearvo. -ISEVEN = ONPARILLINEN ## Palauttaa arvon TOSI, jos arvo on parillinen. -ISLOGICAL = ONTOTUUS ## Palauttaa arvon TOSI, jos arvo on mikä tahansa looginen arvo. -ISNA = ONPUUTTUU ## Palauttaa arvon TOSI, jos virhearvo on #PUUTTUU!. -ISNONTEXT = ONEI_TEKSTI ## Palauttaa arvon TOSI, jos arvo ei ole teksti. -ISNUMBER = ONLUKU ## Palauttaa arvon TOSI, jos arvo on luku. -ISODD = ONPARITON ## Palauttaa arvon TOSI, jos arvo on pariton. -ISREF = ONVIITT ## Palauttaa arvon TOSI, jos arvo on viittaus. -ISTEXT = ONTEKSTI ## Palauttaa arvon TOSI, jos arvo on teksti. -N = N ## Palauttaa arvon luvuksi muunnettuna. -NA = PUUTTUU ## Palauttaa virhearvon #PUUTTUU!. -TYPE = TYYPPI ## Palauttaa luvun, joka ilmaisee arvon tietotyypin. - - -## -## Logical functions Loogiset funktiot -## -AND = JA ## Palauttaa arvon TOSI, jos kaikkien argumenttien arvo on TOSI. -FALSE = EPÄTOSI ## Palauttaa totuusarvon EPÄTOSI. -IF = JOS ## Määrittää suoritettavan loogisen testin. -IFERROR = JOSVIRHE ## Palauttaa määrittämäsi arvon, jos kaavan tulos on virhe; muussa tapauksessa palauttaa kaavan tuloksen. -NOT = EI ## Kääntää argumentin loogisen arvon. -OR = TAI ## Palauttaa arvon TOSI, jos minkä tahansa argumentin arvo on TOSI. -TRUE = TOSI ## Palauttaa totuusarvon TOSI. - - -## -## Lookup and reference functions Haku- ja viitefunktiot -## -ADDRESS = OSOITE ## Palauttaa laskentataulukon soluun osoittavan viittauksen tekstinä. -AREAS = ALUEET ## Palauttaa viittauksessa olevien alueiden määrän. -CHOOSE = VALITSE.INDEKSI ## Valitsee arvon arvoluettelosta. -COLUMN = SARAKE ## Palauttaa viittauksen sarakenumeron. -COLUMNS = SARAKKEET ## Palauttaa viittauksessa olevien sarakkeiden määrän. -HLOOKUP = VHAKU ## Suorittaa haun matriisin ylimmältä riviltä ja palauttaa määritetyn solun arvon. -HYPERLINK = HYPERLINKKI ## Luo pikakuvakkeen tai tekstin, joka avaa verkkopalvelimeen, intranetiin tai Internetiin tallennetun tiedoston. -INDEX = INDEKSI ## Valitsee arvon viittauksesta tai matriisista indeksin mukaan. -INDIRECT = EPÄSUORA ## Palauttaa tekstiarvona ilmaistun viittauksen. -LOOKUP = HAKU ## Etsii arvoja vektorista tai matriisista. -MATCH = VASTINE ## Etsii arvoja viittauksesta tai matriisista. -OFFSET = SIIRTYMÄ ## Palauttaa annetun viittauksen siirtymän. -ROW = RIVI ## Palauttaa viittauksen rivinumeron. -ROWS = RIVIT ## Palauttaa viittauksessa olevien rivien määrän. -RTD = RTD ## Noutaa COM-automaatiota (automaatio: Tapa käsitellä sovelluksen objekteja toisesta sovelluksesta tai kehitystyökalusta. Automaatio, jota aiemmin kutsuttiin OLE-automaatioksi, on teollisuusstandardi ja COM-mallin (Component Object Model) ominaisuus.) tukevasta ohjelmasta reaaliaikaisia tietoja. -TRANSPOSE = TRANSPONOI ## Palauttaa matriisin käänteismatriisin. -VLOOKUP = PHAKU ## Suorittaa haun matriisin ensimmäisestä sarakkeesta ja palauttaa rivillä olevan solun arvon. - - -## -## Math and trigonometry functions Matemaattiset ja trigonometriset funktiot -## -ABS = ITSEISARVO ## Palauttaa luvun itseisarvon. -ACOS = ACOS ## Palauttaa luvun arkuskosinin. -ACOSH = ACOSH ## Palauttaa luvun käänteisen hyperbolisen kosinin. -ASIN = ASIN ## Palauttaa luvun arkussinin. -ASINH = ASINH ## Palauttaa luvun käänteisen hyperbolisen sinin. -ATAN = ATAN ## Palauttaa luvun arkustangentin. -ATAN2 = ATAN2 ## Palauttaa arkustangentin x- ja y-koordinaatin perusteella. -ATANH = ATANH ## Palauttaa luvun käänteisen hyperbolisen tangentin. -CEILING = PYÖRISTÄ.KERR.YLÖS ## Pyöristää luvun lähimpään kokonaislukuun tai tarkkuusargumentin lähimpään kerrannaiseen. -COMBIN = KOMBINAATIO ## Palauttaa mahdollisten kombinaatioiden määrän annetulle objektien määrälle. -COS = COS ## Palauttaa luvun kosinin. -COSH = COSH ## Palauttaa luvun hyperbolisen kosinin. -DEGREES = ASTEET ## Muuntaa radiaanit asteiksi. -EVEN = PARILLINEN ## Pyöristää luvun ylöspäin lähimpään parilliseen kokonaislukuun. -EXP = EKSPONENTTI ## Palauttaa e:n korotettuna annetun luvun osoittamaan potenssiin. -FACT = KERTOMA ## Palauttaa luvun kertoman. -FACTDOUBLE = KERTOMA.OSA ## Palauttaa luvun osakertoman. -FLOOR = PYÖRISTÄ.KERR.ALAS ## Pyöristää luvun alaspäin (nollaa kohti). -GCD = SUURIN.YHT.TEKIJÄ ## Palauttaa suurimman yhteisen tekijän. -INT = KOKONAISLUKU ## Pyöristää luvun alaspäin lähimpään kokonaislukuun. -LCM = PIENIN.YHT.JAETTAVA ## Palauttaa pienimmän yhteisen tekijän. -LN = LUONNLOG ## Palauttaa luvun luonnollisen logaritmin. -LOG = LOG ## Laskee luvun logaritmin käyttämällä annettua kantalukua. -LOG10 = LOG10 ## Palauttaa luvun kymmenkantaisen logaritmin. -MDETERM = MDETERM ## Palauttaa matriisin matriisideterminantin. -MINVERSE = MKÄÄNTEINEN ## Palauttaa matriisin käänteismatriisin. -MMULT = MKERRO ## Palauttaa kahden matriisin tulon. -MOD = JAKOJ ## Palauttaa jakolaskun jäännöksen. -MROUND = PYÖRISTÄ.KERR ## Palauttaa luvun pyöristettynä annetun luvun kerrannaiseen. -MULTINOMIAL = MULTINOMI ## Palauttaa lukujoukon multinomin. -ODD = PARITON ## Pyöristää luvun ylöspäin lähimpään parittomaan kokonaislukuun. -PI = PII ## Palauttaa piin arvon. -POWER = POTENSSI ## Palauttaa luvun korotettuna haluttuun potenssiin. -PRODUCT = TULO ## Kertoo annetut argumentit. -QUOTIENT = OSAMÄÄRÄ ## Palauttaa osamäärän kokonaislukuosan. -RADIANS = RADIAANIT ## Muuntaa asteet radiaaneiksi. -RAND = SATUNNAISLUKU ## Palauttaa satunnaisluvun väliltä 0–1. -RANDBETWEEN = SATUNNAISLUKU.VÄLILTÄ ## Palauttaa satunnaisluvun määritettyjen lukujen väliltä. -ROMAN = ROMAN ## Muuntaa arabialaisen numeron tekstimuotoiseksi roomalaiseksi numeroksi. -ROUND = PYÖRISTÄ ## Pyöristää luvun annettuun määrään desimaaleja. -ROUNDDOWN = PYÖRISTÄ.DES.ALAS ## Pyöristää luvun alaspäin (nollaa kohti). -ROUNDUP = PYÖRISTÄ.DES.YLÖS ## Pyöristää luvun ylöspäin (poispäin nollasta). -SERIESSUM = SARJA.SUMMA ## Palauttaa kaavaan perustuvan potenssisarjan arvon. -SIGN = ETUMERKKI ## Palauttaa luvun etumerkin. -SIN = SIN ## Palauttaa annetun kulman sinin. -SINH = SINH ## Palauttaa luvun hyperbolisen sinin. -SQRT = NELIÖJUURI ## Palauttaa positiivisen neliöjuuren. -SQRTPI = NELIÖJUURI.PII ## Palauttaa tulon (luku * pii) neliöjuuren. -SUBTOTAL = VÄLISUMMA ## Palauttaa luettelon tai tietokannan välisumman. -SUM = SUMMA ## Laskee yhteen annetut argumentit. -SUMIF = SUMMA.JOS ## Laskee ehdot täyttävien solujen summan. -SUMIFS = SUMMA.JOS.JOUKKO ## Laskee yhteen solualueen useita ehtoja vastaavat solut. -SUMPRODUCT = TULOJEN.SUMMA ## Palauttaa matriisin toisiaan vastaavien osien tulojen summan. -SUMSQ = NELIÖSUMMA ## Palauttaa argumenttien neliöiden summan. -SUMX2MY2 = NELIÖSUMMIEN.EROTUS ## Palauttaa kahden matriisin toisiaan vastaavien arvojen laskettujen neliösummien erotuksen. -SUMX2PY2 = NELIÖSUMMIEN.SUMMA ## Palauttaa kahden matriisin toisiaan vastaavien arvojen neliösummien summan. -SUMXMY2 = EROTUSTEN.NELIÖSUMMA ## Palauttaa kahden matriisin toisiaan vastaavien arvojen erotusten neliösumman. -TAN = TAN ## Palauttaa luvun tangentin. -TANH = TANH ## Palauttaa luvun hyperbolisen tangentin. -TRUNC = KATKAISE ## Katkaisee luvun kokonaisluvuksi. - - -## -## Statistical functions Tilastolliset funktiot -## -AVEDEV = KESKIPOIKKEAMA ## Palauttaa hajontojen itseisarvojen keskiarvon. -AVERAGE = KESKIARVO ## Palauttaa argumenttien keskiarvon. -AVERAGEA = KESKIARVOA ## Palauttaa argumenttien, mukaan lukien lukujen, tekstin ja loogisten arvojen, keskiarvon. -AVERAGEIF = KESKIARVO.JOS ## Palauttaa alueen niiden solujen keskiarvon (aritmeettisen keskiarvon), jotka täyttävät annetut ehdot. -AVERAGEIFS = KESKIARVO.JOS.JOUKKO ## Palauttaa niiden solujen keskiarvon (aritmeettisen keskiarvon), jotka vastaavat useita ehtoja. -BETADIST = BEETAJAKAUMA ## Palauttaa kumulatiivisen beetajakaumafunktion arvon. -BETAINV = BEETAJAKAUMA.KÄÄNT ## Palauttaa määritetyn beetajakauman käänteisen kumulatiivisen jakaumafunktion arvon. -BINOMDIST = BINOMIJAKAUMA ## Palauttaa yksittäisen termin binomijakaumatodennäköisyyden. -CHIDIST = CHIJAKAUMA ## Palauttaa yksisuuntaisen chi-neliön jakauman todennäköisyyden. -CHIINV = CHIJAKAUMA.KÄÄNT ## Palauttaa yksisuuntaisen chi-neliön jakauman todennäköisyyden käänteisarvon. -CHITEST = CHITESTI ## Palauttaa riippumattomuustestin tuloksen. -CONFIDENCE = LUOTTAMUSVÄLI ## Palauttaa luottamusvälin populaation keskiarvolle. -CORREL = KORRELAATIO ## Palauttaa kahden arvojoukon korrelaatiokertoimen. -COUNT = LASKE ## Laskee argumenttiluettelossa olevien lukujen määrän. -COUNTA = LASKE.A ## Laskee argumenttiluettelossa olevien arvojen määrän. -COUNTBLANK = LASKE.TYHJÄT ## Laskee alueella olevien tyhjien solujen määrän. -COUNTIF = LASKE.JOS ## Laskee alueella olevien sellaisten solujen määrän, joiden sisältö vastaa annettuja ehtoja. -COUNTIFS = LASKE.JOS.JOUKKO ## Laskee alueella olevien sellaisten solujen määrän, joiden sisältö vastaa useita ehtoja. -COVAR = KOVARIANSSI ## Palauttaa kovarianssin, joka on keskiarvo havaintoaineiston kunkin pisteparin poikkeamien tuloista. -CRITBINOM = BINOMIJAKAUMA.KRIT ## Palauttaa pienimmän arvon, jossa binomijakauman kertymäfunktion arvo on pienempi tai yhtä suuri kuin vertailuarvo. -DEVSQ = OIKAISTU.NELIÖSUMMA ## Palauttaa keskipoikkeamien neliösumman. -EXPONDIST = EKSPONENTIAALIJAKAUMA ## Palauttaa eksponentiaalijakauman. -FDIST = FJAKAUMA ## Palauttaa F-todennäköisyysjakauman. -FINV = FJAKAUMA.KÄÄNT ## Palauttaa F-todennäköisyysjakauman käänteisfunktion. -FISHER = FISHER ## Palauttaa Fisher-muunnoksen. -FISHERINV = FISHER.KÄÄNT ## Palauttaa käänteisen Fisher-muunnoksen. -FORECAST = ENNUSTE ## Palauttaa lineaarisen trendin arvon. -FREQUENCY = TAAJUUS ## Palauttaa frekvenssijakautuman pystysuuntaisena matriisina. -FTEST = FTESTI ## Palauttaa F-testin tuloksen. -GAMMADIST = GAMMAJAKAUMA ## Palauttaa gammajakauman. -GAMMAINV = GAMMAJAKAUMA.KÄÄNT ## Palauttaa käänteisen gammajakauman kertymäfunktion. -GAMMALN = GAMMALN ## Palauttaa gammafunktion luonnollisen logaritmin G(x). -GEOMEAN = KESKIARVO.GEOM ## Palauttaa geometrisen keskiarvon. -GROWTH = KASVU ## Palauttaa eksponentiaalisen trendin arvon. -HARMEAN = KESKIARVO.HARM ## Palauttaa harmonisen keskiarvon. -HYPGEOMDIST = HYPERGEOM.JAKAUMA ## Palauttaa hypergeometrisen jakauman. -INTERCEPT = LEIKKAUSPISTE ## Palauttaa lineaarisen regressiosuoran leikkauspisteen. -KURT = KURT ## Palauttaa tietoalueen vinous-arvon eli huipukkuuden. -LARGE = SUURI ## Palauttaa tietojoukon k:nneksi suurimman arvon. -LINEST = LINREGR ## Palauttaa lineaarisen trendin parametrit. -LOGEST = LOGREGR ## Palauttaa eksponentiaalisen trendin parametrit. -LOGINV = LOGNORM.JAKAUMA.KÄÄNT ## Palauttaa lognormeeratun jakauman käänteisfunktion. -LOGNORMDIST = LOGNORM.JAKAUMA ## Palauttaa lognormaalisen jakauman kertymäfunktion. -MAX = MAKS ## Palauttaa suurimman arvon argumenttiluettelosta. -MAXA = MAKSA ## Palauttaa argumenttien, mukaan lukien lukujen, tekstin ja loogisten arvojen, suurimman arvon. -MEDIAN = MEDIAANI ## Palauttaa annettujen lukujen mediaanin. -MIN = MIN ## Palauttaa pienimmän arvon argumenttiluettelosta. -MINA = MINA ## Palauttaa argumenttien, mukaan lukien lukujen, tekstin ja loogisten arvojen, pienimmän arvon. -MODE = MOODI ## Palauttaa tietojoukossa useimmin esiintyvän arvon. -NEGBINOMDIST = BINOMIJAKAUMA.NEG ## Palauttaa negatiivisen binomijakauman. -NORMDIST = NORM.JAKAUMA ## Palauttaa normaalijakauman kertymäfunktion. -NORMINV = NORM.JAKAUMA.KÄÄNT ## Palauttaa käänteisen normaalijakauman kertymäfunktion. -NORMSDIST = NORM.JAKAUMA.NORMIT ## Palauttaa normitetun normaalijakauman kertymäfunktion. -NORMSINV = NORM.JAKAUMA.NORMIT.KÄÄNT ## Palauttaa normitetun normaalijakauman kertymäfunktion käänteisarvon. -PEARSON = PEARSON ## Palauttaa Pearsonin tulomomenttikorrelaatiokertoimen. -PERCENTILE = PROSENTTIPISTE ## Palauttaa alueen arvojen k:nnen prosenttipisteen. -PERCENTRANK = PROSENTTIJÄRJESTYS ## Palauttaa tietojoukon arvon prosentuaalisen järjestysluvun. -PERMUT = PERMUTAATIO ## Palauttaa mahdollisten permutaatioiden määrän annetulle objektien määrälle. -POISSON = POISSON ## Palauttaa Poissonin todennäköisyysjakauman. -PROB = TODENNÄKÖISYYS ## Palauttaa todennäköisyyden sille, että arvot ovat tietyltä väliltä. -QUARTILE = NELJÄNNES ## Palauttaa tietoalueen neljänneksen. -RANK = ARVON.MUKAAN ## Palauttaa luvun paikan lukuarvoluettelossa. -RSQ = PEARSON.NELIÖ ## Palauttaa Pearsonin tulomomenttikorrelaatiokertoimen neliön. -SKEW = JAKAUMAN.VINOUS ## Palauttaa jakauman vinouden. -SLOPE = KULMAKERROIN ## Palauttaa lineaarisen regressiosuoran kulmakertoimen. -SMALL = PIENI ## Palauttaa tietojoukon k:nneksi pienimmän arvon. -STANDARDIZE = NORMITA ## Palauttaa normitetun arvon. -STDEV = KESKIHAJONTA ## Laskee populaation keskihajonnan otoksen perusteella. -STDEVA = KESKIHAJONTAA ## Laskee populaation keskihajonnan otoksen perusteella, mukaan lukien luvut, tekstin ja loogiset arvot. -STDEVP = KESKIHAJONTAP ## Laskee normaalijakautuman koko populaation perusteella. -STDEVPA = KESKIHAJONTAPA ## Laskee populaation keskihajonnan koko populaation perusteella, mukaan lukien luvut, tekstin ja totuusarvot. -STEYX = KESKIVIRHE ## Palauttaa regression kutakin x-arvoa vastaavan ennustetun y-arvon keskivirheen. -TDIST = TJAKAUMA ## Palauttaa t-jakautuman. -TINV = TJAKAUMA.KÄÄNT ## Palauttaa käänteisen t-jakauman. -TREND = SUUNTAUS ## Palauttaa lineaarisen trendin arvoja. -TRIMMEAN = KESKIARVO.TASATTU ## Palauttaa tietojoukon tasatun keskiarvon. -TTEST = TTESTI ## Palauttaa t-testiin liittyvän todennäköisyyden. -VAR = VAR ## Arvioi populaation varianssia otoksen perusteella. -VARA = VARA ## Laskee populaation varianssin otoksen perusteella, mukaan lukien luvut, tekstin ja loogiset arvot. -VARP = VARP ## Laskee varianssin koko populaation perusteella. -VARPA = VARPA ## Laskee populaation varianssin koko populaation perusteella, mukaan lukien luvut, tekstin ja totuusarvot. -WEIBULL = WEIBULL ## Palauttaa Weibullin jakauman. -ZTEST = ZTESTI ## Palauttaa z-testin yksisuuntaisen todennäköisyysarvon. - - -## -## Text functions Tekstifunktiot -## -ASC = ASC ## Muuntaa merkkijonossa olevat englanninkieliset DBCS- tai katakana-merkit SBCS-merkeiksi. -BAHTTEXT = BAHTTEKSTI ## Muuntaa luvun tekstiksi ß (baht) -valuuttamuotoa käyttämällä. -CHAR = MERKKI ## Palauttaa koodin lukua vastaavan merkin. -CLEAN = SIIVOA ## Poistaa tekstistä kaikki tulostumattomat merkit. -CODE = KOODI ## Palauttaa tekstimerkkijonon ensimmäisen merkin numerokoodin. -CONCATENATE = KETJUTA ## Yhdistää useat merkkijonot yhdeksi merkkijonoksi. -DOLLAR = VALUUTTA ## Muuntaa luvun tekstiksi $ (dollari) -valuuttamuotoa käyttämällä. -EXACT = VERTAA ## Tarkistaa, ovatko kaksi tekstiarvoa samanlaiset. -FIND = ETSI ## Etsii tekstiarvon toisen tekstin sisältä (tunnistaa isot ja pienet kirjaimet). -FINDB = ETSIB ## Etsii tekstiarvon toisen tekstin sisältä (tunnistaa isot ja pienet kirjaimet). -FIXED = KIINTEÄ ## Muotoilee luvun tekstiksi, jossa on kiinteä määrä desimaaleja. -JIS = JIS ## Muuntaa merkkijonossa olevat englanninkieliset SBCS- tai katakana-merkit DBCS-merkeiksi. -LEFT = VASEN ## Palauttaa tekstiarvon vasemmanpuoliset merkit. -LEFTB = VASENB ## Palauttaa tekstiarvon vasemmanpuoliset merkit. -LEN = PITUUS ## Palauttaa tekstimerkkijonon merkkien määrän. -LENB = PITUUSB ## Palauttaa tekstimerkkijonon merkkien määrän. -LOWER = PIENET ## Muuntaa tekstin pieniksi kirjaimiksi. -MID = POIMI.TEKSTI ## Palauttaa määritetyn määrän merkkejä merkkijonosta alkaen annetusta kohdasta. -MIDB = POIMI.TEKSTIB ## Palauttaa määritetyn määrän merkkejä merkkijonosta alkaen annetusta kohdasta. -PHONETIC = FONEETTINEN ## Hakee foneettiset (furigana) merkit merkkijonosta. -PROPER = ERISNIMI ## Muuttaa merkkijonon kunkin sanan ensimmäisen kirjaimen isoksi. -REPLACE = KORVAA ## Korvaa tekstissä olevat merkit. -REPLACEB = KORVAAB ## Korvaa tekstissä olevat merkit. -REPT = TOISTA ## Toistaa tekstin annetun määrän kertoja. -RIGHT = OIKEA ## Palauttaa tekstiarvon oikeanpuoliset merkit. -RIGHTB = OIKEAB ## Palauttaa tekstiarvon oikeanpuoliset merkit. -SEARCH = KÄY.LÄPI ## Etsii tekstiarvon toisen tekstin sisältä (isot ja pienet kirjaimet tulkitaan samoiksi merkeiksi). -SEARCHB = KÄY.LÄPIB ## Etsii tekstiarvon toisen tekstin sisältä (isot ja pienet kirjaimet tulkitaan samoiksi merkeiksi). -SUBSTITUTE = VAIHDA ## Korvaa merkkijonossa olevan tekstin toisella. -T = T ## Muuntaa argumentit tekstiksi. -TEXT = TEKSTI ## Muotoilee luvun ja muuntaa sen tekstiksi. -TRIM = POISTA.VÄLIT ## Poistaa välilyönnit tekstistä. -UPPER = ISOT ## Muuntaa tekstin isoiksi kirjaimiksi. -VALUE = ARVO ## Muuntaa tekstiargumentin luvuksi. diff --git a/application/third_party/PHPExcel/locale/fr/config b/application/third_party/PHPExcel/locale/fr/config deleted file mode 100644 index 1f5db88c..00000000 --- a/application/third_party/PHPExcel/locale/fr/config +++ /dev/null @@ -1,47 +0,0 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Settings -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## - - -ArgumentSeparator = ; - - -## -## (For future use) -## -currencySymbol = € - - -## -## Excel Error Codes (For future use) -## -NULL = #NUL! -DIV0 = #DIV/0! -VALUE = #VALEUR! -REF = #REF! -NAME = #NOM? -NUM = #NOMBRE! -NA = #N/A diff --git a/application/third_party/PHPExcel/locale/fr/functions b/application/third_party/PHPExcel/locale/fr/functions deleted file mode 100644 index 03b80e5a..00000000 --- a/application/third_party/PHPExcel/locale/fr/functions +++ /dev/null @@ -1,438 +0,0 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Calculation -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ -## -## - - -## -## Add-in and Automation functions Fonctions de complément et d’automatisation -## -GETPIVOTDATA = LIREDONNEESTABCROISDYNAMIQUE ## Renvoie les données stockées dans un rapport de tableau croisé dynamique. - - -## -## Cube functions Fonctions Cube -## -CUBEKPIMEMBER = MEMBREKPICUBE ## Renvoie un nom, une propriété et une mesure d’indicateur de performance clé et affiche le nom et la propriété dans la cellule. Un indicateur de performance clé est une mesure quantifiable, telle que la marge bénéficiaire brute mensuelle ou la rotation trimestrielle du personnel, utilisée pour évaluer les performances d’une entreprise. -CUBEMEMBER = MEMBRECUBE ## Renvoie un membre ou un uplet dans une hiérarchie de cubes. Utilisez cette fonction pour valider l’existence du membre ou de l’uplet dans le cube. -CUBEMEMBERPROPERTY = PROPRIETEMEMBRECUBE ## Renvoie la valeur d’une propriété de membre du cube. Utilisez cette fonction pour valider l’existence d’un nom de membre dans le cube et pour renvoyer la propriété spécifiée pour ce membre. -CUBERANKEDMEMBER = RANGMEMBRECUBE ## Renvoie le nième membre ou le membre placé à un certain rang dans un ensemble. Utilisez cette fonction pour renvoyer un ou plusieurs éléments d’un ensemble, tels que les meilleurs vendeurs ou les 10 meilleurs étudiants. -CUBESET = JEUCUBE ## Définit un ensemble calculé de membres ou d’uplets en envoyant une expression définie au cube sur le serveur qui crée l’ensemble et le renvoie à Microsoft Office Excel. -CUBESETCOUNT = NBJEUCUBE ## Renvoie le nombre d’éléments dans un jeu. -CUBEVALUE = VALEURCUBE ## Renvoie une valeur d’agrégation issue d’un cube. - - -## -## Database functions Fonctions de base de données -## -DAVERAGE = BDMOYENNE ## Renvoie la moyenne des entrées de base de données sélectionnées. -DCOUNT = BCOMPTE ## Compte le nombre de cellules d’une base de données qui contiennent des nombres. -DCOUNTA = BDNBVAL ## Compte les cellules non vides d’une base de données. -DGET = BDLIRE ## Extrait d’une base de données un enregistrement unique répondant aux critères spécifiés. -DMAX = BDMAX ## Renvoie la valeur maximale des entrées de base de données sélectionnées. -DMIN = BDMIN ## Renvoie la valeur minimale des entrées de base de données sélectionnées. -DPRODUCT = BDPRODUIT ## Multiplie les valeurs d’un champ particulier des enregistrements d’une base de données, qui répondent aux critères spécifiés. -DSTDEV = BDECARTYPE ## Calcule l’écart type pour un échantillon d’entrées de base de données sélectionnées. -DSTDEVP = BDECARTYPEP ## Calcule l’écart type pour l’ensemble d’une population d’entrées de base de données sélectionnées. -DSUM = BDSOMME ## Ajoute les nombres dans la colonne de champ des enregistrements de la base de données, qui répondent aux critères. -DVAR = BDVAR ## Calcule la variance pour un échantillon d’entrées de base de données sélectionnées. -DVARP = BDVARP ## Calcule la variance pour l’ensemble d’une population d’entrées de base de données sélectionnées. - - -## -## Date and time functions Fonctions de date et d’heure -## -DATE = DATE ## Renvoie le numéro de série d’une date précise. -DATEVALUE = DATEVAL ## Convertit une date représentée sous forme de texte en numéro de série. -DAY = JOUR ## Convertit un numéro de série en jour du mois. -DAYS360 = JOURS360 ## Calcule le nombre de jours qui séparent deux dates sur la base d’une année de 360 jours. -EDATE = MOIS.DECALER ## Renvoie le numéro séquentiel de la date qui représente une date spécifiée (l’argument date_départ), corrigée en plus ou en moins du nombre de mois indiqué. -EOMONTH = FIN.MOIS ## Renvoie le numéro séquentiel de la date du dernier jour du mois précédant ou suivant la date_départ du nombre de mois indiqué. -HOUR = HEURE ## Convertit un numéro de série en heure. -MINUTE = MINUTE ## Convertit un numéro de série en minute. -MONTH = MOIS ## Convertit un numéro de série en mois. -NETWORKDAYS = NB.JOURS.OUVRES ## Renvoie le nombre de jours ouvrés entiers compris entre deux dates. -NOW = MAINTENANT ## Renvoie le numéro de série de la date et de l’heure du jour. -SECOND = SECONDE ## Convertit un numéro de série en seconde. -TIME = TEMPS ## Renvoie le numéro de série d’une heure précise. -TIMEVALUE = TEMPSVAL ## Convertit une date représentée sous forme de texte en numéro de série. -TODAY = AUJOURDHUI ## Renvoie le numéro de série de la date du jour. -WEEKDAY = JOURSEM ## Convertit un numéro de série en jour de la semaine. -WEEKNUM = NO.SEMAINE ## Convertit un numéro de série en un numéro représentant l’ordre de la semaine dans l’année. -WORKDAY = SERIE.JOUR.OUVRE ## Renvoie le numéro de série de la date avant ou après le nombre de jours ouvrés spécifiés. -YEAR = ANNEE ## Convertit un numéro de série en année. -YEARFRAC = FRACTION.ANNEE ## Renvoie la fraction de l’année représentant le nombre de jours entre la date de début et la date de fin. - - -## -## Engineering functions Fonctions d’ingénierie -## -BESSELI = BESSELI ## Renvoie la fonction Bessel modifiée In(x). -BESSELJ = BESSELJ ## Renvoie la fonction Bessel Jn(x). -BESSELK = BESSELK ## Renvoie la fonction Bessel modifiée Kn(x). -BESSELY = BESSELY ## Renvoie la fonction Bessel Yn(x). -BIN2DEC = BINDEC ## Convertit un nombre binaire en nombre décimal. -BIN2HEX = BINHEX ## Convertit un nombre binaire en nombre hexadécimal. -BIN2OCT = BINOCT ## Convertit un nombre binaire en nombre octal. -COMPLEX = COMPLEXE ## Convertit des coefficients réel et imaginaire en un nombre complexe. -CONVERT = CONVERT ## Convertit un nombre d’une unité de mesure à une autre. -DEC2BIN = DECBIN ## Convertit un nombre décimal en nombre binaire. -DEC2HEX = DECHEX ## Convertit un nombre décimal en nombre hexadécimal. -DEC2OCT = DECOCT ## Convertit un nombre décimal en nombre octal. -DELTA = DELTA ## Teste l’égalité de deux nombres. -ERF = ERF ## Renvoie la valeur de la fonction d’erreur. -ERFC = ERFC ## Renvoie la valeur de la fonction d’erreur complémentaire. -GESTEP = SUP.SEUIL ## Teste si un nombre est supérieur à une valeur de seuil. -HEX2BIN = HEXBIN ## Convertit un nombre hexadécimal en nombre binaire. -HEX2DEC = HEXDEC ## Convertit un nombre hexadécimal en nombre décimal. -HEX2OCT = HEXOCT ## Convertit un nombre hexadécimal en nombre octal. -IMABS = COMPLEXE.MODULE ## Renvoie la valeur absolue (module) d’un nombre complexe. -IMAGINARY = COMPLEXE.IMAGINAIRE ## Renvoie le coefficient imaginaire d’un nombre complexe. -IMARGUMENT = COMPLEXE.ARGUMENT ## Renvoie l’argument thêta, un angle exprimé en radians. -IMCONJUGATE = COMPLEXE.CONJUGUE ## Renvoie le nombre complexe conjugué d’un nombre complexe. -IMCOS = IMCOS ## Renvoie le cosinus d’un nombre complexe. -IMDIV = COMPLEXE.DIV ## Renvoie le quotient de deux nombres complexes. -IMEXP = COMPLEXE.EXP ## Renvoie la fonction exponentielle d’un nombre complexe. -IMLN = COMPLEXE.LN ## Renvoie le logarithme népérien d’un nombre complexe. -IMLOG10 = COMPLEXE.LOG10 ## Calcule le logarithme en base 10 d’un nombre complexe. -IMLOG2 = COMPLEXE.LOG2 ## Calcule le logarithme en base 2 d’un nombre complexe. -IMPOWER = COMPLEXE.PUISSANCE ## Renvoie un nombre complexe élevé à une puissance entière. -IMPRODUCT = COMPLEXE.PRODUIT ## Renvoie le produit de plusieurs nombres complexes. -IMREAL = COMPLEXE.REEL ## Renvoie le coefficient réel d’un nombre complexe. -IMSIN = COMPLEXE.SIN ## Renvoie le sinus d’un nombre complexe. -IMSQRT = COMPLEXE.RACINE ## Renvoie la racine carrée d’un nombre complexe. -IMSUB = COMPLEXE.DIFFERENCE ## Renvoie la différence entre deux nombres complexes. -IMSUM = COMPLEXE.SOMME ## Renvoie la somme de plusieurs nombres complexes. -OCT2BIN = OCTBIN ## Convertit un nombre octal en nombre binaire. -OCT2DEC = OCTDEC ## Convertit un nombre octal en nombre décimal. -OCT2HEX = OCTHEX ## Convertit un nombre octal en nombre hexadécimal. - - -## -## Financial functions Fonctions financières -## -ACCRINT = INTERET.ACC ## Renvoie l’intérêt couru non échu d’un titre dont l’intérêt est perçu périodiquement. -ACCRINTM = INTERET.ACC.MAT ## Renvoie l’intérêt couru non échu d’un titre dont l’intérêt est perçu à l’échéance. -AMORDEGRC = AMORDEGRC ## Renvoie l’amortissement correspondant à chaque période comptable en utilisant un coefficient d’amortissement. -AMORLINC = AMORLINC ## Renvoie l’amortissement d’un bien à la fin d’une période fiscale donnée. -COUPDAYBS = NB.JOURS.COUPON.PREC ## Renvoie le nombre de jours entre le début de la période de coupon et la date de liquidation. -COUPDAYS = NB.JOURS.COUPONS ## Renvoie le nombre de jours pour la période du coupon contenant la date de liquidation. -COUPDAYSNC = NB.JOURS.COUPON.SUIV ## Renvoie le nombre de jours entre la date de liquidation et la date du coupon suivant la date de liquidation. -COUPNCD = DATE.COUPON.SUIV ## Renvoie la première date de coupon ultérieure à la date de règlement. -COUPNUM = NB.COUPONS ## Renvoie le nombre de coupons dus entre la date de règlement et la date d’échéance. -COUPPCD = DATE.COUPON.PREC ## Renvoie la date de coupon précédant la date de règlement. -CUMIPMT = CUMUL.INTER ## Renvoie l’intérêt cumulé payé sur un emprunt entre deux périodes. -CUMPRINC = CUMUL.PRINCPER ## Renvoie le montant cumulé des remboursements du capital d’un emprunt effectués entre deux périodes. -DB = DB ## Renvoie l’amortissement d’un bien pour une période spécifiée en utilisant la méthode de l’amortissement dégressif à taux fixe. -DDB = DDB ## Renvoie l’amortissement d’un bien pour toute période spécifiée, en utilisant la méthode de l’amortissement dégressif à taux double ou selon un coefficient à spécifier. -DISC = TAUX.ESCOMPTE ## Calcule le taux d’escompte d’une transaction. -DOLLARDE = PRIX.DEC ## Convertit un prix en euros, exprimé sous forme de fraction, en un prix en euros exprimé sous forme de nombre décimal. -DOLLARFR = PRIX.FRAC ## Convertit un prix en euros, exprimé sous forme de nombre décimal, en un prix en euros exprimé sous forme de fraction. -DURATION = DUREE ## Renvoie la durée, en années, d’un titre dont l’intérêt est perçu périodiquement. -EFFECT = TAUX.EFFECTIF ## Renvoie le taux d’intérêt annuel effectif. -FV = VC ## Renvoie la valeur future d’un investissement. -FVSCHEDULE = VC.PAIEMENTS ## Calcule la valeur future d’un investissement en appliquant une série de taux d’intérêt composites. -INTRATE = TAUX.INTERET ## Affiche le taux d’intérêt d’un titre totalement investi. -IPMT = INTPER ## Calcule le montant des intérêts d’un investissement pour une période donnée. -IRR = TRI ## Calcule le taux de rentabilité interne d’un investissement pour une succession de trésoreries. -ISPMT = ISPMT ## Calcule le montant des intérêts d’un investissement pour une période donnée. -MDURATION = DUREE.MODIFIEE ## Renvoie la durée de Macauley modifiée pour un titre ayant une valeur nominale hypothétique de 100_euros. -MIRR = TRIM ## Calcule le taux de rentabilité interne lorsque les paiements positifs et négatifs sont financés à des taux différents. -NOMINAL = TAUX.NOMINAL ## Calcule le taux d’intérêt nominal annuel. -NPER = NPM ## Renvoie le nombre de versements nécessaires pour rembourser un emprunt. -NPV = VAN ## Calcule la valeur actuelle nette d’un investissement basé sur une série de décaissements et un taux d’escompte. -ODDFPRICE = PRIX.PCOUPON.IRREG ## Renvoie le prix par tranche de valeur nominale de 100 euros d’un titre dont la première période de coupon est irrégulière. -ODDFYIELD = REND.PCOUPON.IRREG ## Renvoie le taux de rendement d’un titre dont la première période de coupon est irrégulière. -ODDLPRICE = PRIX.DCOUPON.IRREG ## Renvoie le prix par tranche de valeur nominale de 100 euros d’un titre dont la première période de coupon est irrégulière. -ODDLYIELD = REND.DCOUPON.IRREG ## Renvoie le taux de rendement d’un titre dont la dernière période de coupon est irrégulière. -PMT = VPM ## Calcule le paiement périodique d’un investissement donné. -PPMT = PRINCPER ## Calcule, pour une période donnée, la part de remboursement du principal d’un investissement. -PRICE = PRIX.TITRE ## Renvoie le prix d’un titre rapportant des intérêts périodiques, pour une valeur nominale de 100 euros. -PRICEDISC = VALEUR.ENCAISSEMENT ## Renvoie la valeur d’encaissement d’un escompte commercial, pour une valeur nominale de 100 euros. -PRICEMAT = PRIX.TITRE.ECHEANCE ## Renvoie le prix d’un titre dont la valeur nominale est 100 euros et qui rapporte des intérêts à l’échéance. -PV = PV ## Calcule la valeur actuelle d’un investissement. -RATE = TAUX ## Calcule le taux d’intérêt par période pour une annuité. -RECEIVED = VALEUR.NOMINALE ## Renvoie la valeur nominale à échéance d’un effet de commerce. -SLN = AMORLIN ## Calcule l’amortissement linéaire d’un bien pour une période donnée. -SYD = SYD ## Calcule l’amortissement d’un bien pour une période donnée sur la base de la méthode américaine Sum-of-Years Digits (amortissement dégressif à taux décroissant appliqué à une valeur constante). -TBILLEQ = TAUX.ESCOMPTE.R ## Renvoie le taux d’escompte rationnel d’un bon du Trésor. -TBILLPRICE = PRIX.BON.TRESOR ## Renvoie le prix d’un bon du Trésor d’une valeur nominale de 100 euros. -TBILLYIELD = RENDEMENT.BON.TRESOR ## Calcule le taux de rendement d’un bon du Trésor. -VDB = VDB ## Renvoie l’amortissement d’un bien pour une période spécifiée ou partielle en utilisant une méthode de l’amortissement dégressif à taux fixe. -XIRR = TRI.PAIEMENTS ## Calcule le taux de rentabilité interne d’un ensemble de paiements non périodiques. -XNPV = VAN.PAIEMENTS ## Renvoie la valeur actuelle nette d’un ensemble de paiements non périodiques. -YIELD = RENDEMENT.TITRE ## Calcule le rendement d’un titre rapportant des intérêts périodiquement. -YIELDDISC = RENDEMENT.SIMPLE ## Calcule le taux de rendement d’un emprunt à intérêt simple (par exemple, un bon du Trésor). -YIELDMAT = RENDEMENT.TITRE.ECHEANCE ## Renvoie le rendement annuel d’un titre qui rapporte des intérêts à l’échéance. - - -## -## Information functions Fonctions d’information -## -CELL = CELLULE ## Renvoie des informations sur la mise en forme, l’emplacement et le contenu d’une cellule. -ERROR.TYPE = TYPE.ERREUR ## Renvoie un nombre correspondant à un type d’erreur. -INFO = INFORMATIONS ## Renvoie des informations sur l’environnement d’exploitation actuel. -ISBLANK = ESTVIDE ## Renvoie VRAI si l’argument valeur est vide. -ISERR = ESTERR ## Renvoie VRAI si l’argument valeur fait référence à une valeur d’erreur, sauf #N/A. -ISERROR = ESTERREUR ## Renvoie VRAI si l’argument valeur fait référence à une valeur d’erreur. -ISEVEN = EST.PAIR ## Renvoie VRAI si le chiffre est pair. -ISLOGICAL = ESTLOGIQUE ## Renvoie VRAI si l’argument valeur fait référence à une valeur logique. -ISNA = ESTNA ## Renvoie VRAI si l’argument valeur fait référence à la valeur d’erreur #N/A. -ISNONTEXT = ESTNONTEXTE ## Renvoie VRAI si l’argument valeur ne se présente pas sous forme de texte. -ISNUMBER = ESTNUM ## Renvoie VRAI si l’argument valeur représente un nombre. -ISODD = EST.IMPAIR ## Renvoie VRAI si le chiffre est impair. -ISREF = ESTREF ## Renvoie VRAI si l’argument valeur est une référence. -ISTEXT = ESTTEXTE ## Renvoie VRAI si l’argument valeur se présente sous forme de texte. -N = N ## Renvoie une valeur convertie en nombre. -NA = NA ## Renvoie la valeur d’erreur #N/A. -TYPE = TYPE ## Renvoie un nombre indiquant le type de données d’une valeur. - - -## -## Logical functions Fonctions logiques -## -AND = ET ## Renvoie VRAI si tous ses arguments sont VRAI. -FALSE = FAUX ## Renvoie la valeur logique FAUX. -IF = SI ## Spécifie un test logique à effectuer. -IFERROR = SIERREUR ## Renvoie une valeur que vous spécifiez si une formule génère une erreur ; sinon, elle renvoie le résultat de la formule. -NOT = NON ## Inverse la logique de cet argument. -OR = OU ## Renvoie VRAI si un des arguments est VRAI. -TRUE = VRAI ## Renvoie la valeur logique VRAI. - - -## -## Lookup and reference functions Fonctions de recherche et de référence -## -ADDRESS = ADRESSE ## Renvoie une référence sous forme de texte à une seule cellule d’une feuille de calcul. -AREAS = ZONES ## Renvoie le nombre de zones dans une référence. -CHOOSE = CHOISIR ## Choisit une valeur dans une liste. -COLUMN = COLONNE ## Renvoie le numéro de colonne d’une référence. -COLUMNS = COLONNES ## Renvoie le nombre de colonnes dans une référence. -HLOOKUP = RECHERCHEH ## Effectue une recherche dans la première ligne d’une matrice et renvoie la valeur de la cellule indiquée. -HYPERLINK = LIEN_HYPERTEXTE ## Crée un raccourci ou un renvoi qui ouvre un document stocké sur un serveur réseau, sur un réseau Intranet ou sur Internet. -INDEX = INDEX ## Utilise un index pour choisir une valeur provenant d’une référence ou d’une matrice. -INDIRECT = INDIRECT ## Renvoie une référence indiquée par une valeur de texte. -LOOKUP = RECHERCHE ## Recherche des valeurs dans un vecteur ou une matrice. -MATCH = EQUIV ## Recherche des valeurs dans une référence ou une matrice. -OFFSET = DECALER ## Renvoie une référence décalée par rapport à une référence donnée. -ROW = LIGNE ## Renvoie le numéro de ligne d’une référence. -ROWS = LIGNES ## Renvoie le nombre de lignes dans une référence. -RTD = RTD ## Extrait les données en temps réel à partir d’un programme prenant en charge l’automation COM (Automation : utilisation des objets d'une application à partir d'une autre application ou d'un autre outil de développement. Autrefois appelée OLE Automation, Automation est une norme industrielle et une fonctionnalité du modèle d'objet COM (Component Object Model).). -TRANSPOSE = TRANSPOSE ## Renvoie la transposition d’une matrice. -VLOOKUP = RECHERCHEV ## Effectue une recherche dans la première colonne d’une matrice et se déplace sur la ligne pour renvoyer la valeur d’une cellule. - - -## -## Math and trigonometry functions Fonctions mathématiques et trigonométriques -## -ABS = ABS ## Renvoie la valeur absolue d’un nombre. -ACOS = ACOS ## Renvoie l’arccosinus d’un nombre. -ACOSH = ACOSH ## Renvoie le cosinus hyperbolique inverse d’un nombre. -ASIN = ASIN ## Renvoie l’arcsinus d’un nombre. -ASINH = ASINH ## Renvoie le sinus hyperbolique inverse d’un nombre. -ATAN = ATAN ## Renvoie l’arctangente d’un nombre. -ATAN2 = ATAN2 ## Renvoie l’arctangente des coordonnées x et y. -ATANH = ATANH ## Renvoie la tangente hyperbolique inverse d’un nombre. -CEILING = PLAFOND ## Arrondit un nombre au nombre entier le plus proche ou au multiple le plus proche de l’argument précision en s’éloignant de zéro. -COMBIN = COMBIN ## Renvoie le nombre de combinaisons que l’on peut former avec un nombre donné d’objets. -COS = COS ## Renvoie le cosinus d’un nombre. -COSH = COSH ## Renvoie le cosinus hyperbolique d’un nombre. -DEGREES = DEGRES ## Convertit des radians en degrés. -EVEN = PAIR ## Arrondit un nombre au nombre entier pair le plus proche en s’éloignant de zéro. -EXP = EXP ## Renvoie e élevé à la puissance d’un nombre donné. -FACT = FACT ## Renvoie la factorielle d’un nombre. -FACTDOUBLE = FACTDOUBLE ## Renvoie la factorielle double d’un nombre. -FLOOR = PLANCHER ## Arrondit un nombre en tendant vers 0 (zéro). -GCD = PGCD ## Renvoie le plus grand commun diviseur. -INT = ENT ## Arrondit un nombre à l’entier immédiatement inférieur. -LCM = PPCM ## Renvoie le plus petit commun multiple. -LN = LN ## Renvoie le logarithme népérien d’un nombre. -LOG = LOG ## Renvoie le logarithme d’un nombre dans la base spécifiée. -LOG10 = LOG10 ## Calcule le logarithme en base 10 d’un nombre. -MDETERM = DETERMAT ## Renvoie le déterminant d’une matrice. -MINVERSE = INVERSEMAT ## Renvoie la matrice inverse d’une matrice. -MMULT = PRODUITMAT ## Renvoie le produit de deux matrices. -MOD = MOD ## Renvoie le reste d’une division. -MROUND = ARRONDI.AU.MULTIPLE ## Donne l’arrondi d’un nombre au multiple spécifié. -MULTINOMIAL = MULTINOMIALE ## Calcule la multinomiale d’un ensemble de nombres. -ODD = IMPAIR ## Renvoie le nombre, arrondi à la valeur du nombre entier impair le plus proche en s’éloignant de zéro. -PI = PI ## Renvoie la valeur de pi. -POWER = PUISSANCE ## Renvoie la valeur du nombre élevé à une puissance. -PRODUCT = PRODUIT ## Multiplie ses arguments. -QUOTIENT = QUOTIENT ## Renvoie la partie entière du résultat d’une division. -RADIANS = RADIANS ## Convertit des degrés en radians. -RAND = ALEA ## Renvoie un nombre aléatoire compris entre 0 et 1. -RANDBETWEEN = ALEA.ENTRE.BORNES ## Renvoie un nombre aléatoire entre les nombres que vous spécifiez. -ROMAN = ROMAIN ## Convertit des chiffres arabes en chiffres romains, sous forme de texte. -ROUND = ARRONDI ## Arrondit un nombre au nombre de chiffres indiqué. -ROUNDDOWN = ARRONDI.INF ## Arrondit un nombre en tendant vers 0 (zéro). -ROUNDUP = ARRONDI.SUP ## Arrondit un nombre à l’entier supérieur, en s’éloignant de zéro. -SERIESSUM = SOMME.SERIES ## Renvoie la somme d’une série géométrique en s’appuyant sur la formule suivante : -SIGN = SIGNE ## Renvoie le signe d’un nombre. -SIN = SIN ## Renvoie le sinus d’un angle donné. -SINH = SINH ## Renvoie le sinus hyperbolique d’un nombre. -SQRT = RACINE ## Renvoie la racine carrée d’un nombre. -SQRTPI = RACINE.PI ## Renvoie la racine carrée de (nombre * pi). -SUBTOTAL = SOUS.TOTAL ## Renvoie un sous-total dans une liste ou une base de données. -SUM = SOMME ## Calcule la somme de ses arguments. -SUMIF = SOMME.SI ## Additionne les cellules spécifiées si elles répondent à un critère donné. -SUMIFS = SOMME.SI.ENS ## Ajoute les cellules d’une plage qui répondent à plusieurs critères. -SUMPRODUCT = SOMMEPROD ## Multiplie les valeurs correspondantes des matrices spécifiées et calcule la somme de ces produits. -SUMSQ = SOMME.CARRES ## Renvoie la somme des carrés des arguments. -SUMX2MY2 = SOMME.X2MY2 ## Renvoie la somme de la différence des carrés des valeurs correspondantes de deux matrices. -SUMX2PY2 = SOMME.X2PY2 ## Renvoie la somme de la somme des carrés des valeurs correspondantes de deux matrices. -SUMXMY2 = SOMME.XMY2 ## Renvoie la somme des carrés des différences entre les valeurs correspondantes de deux matrices. -TAN = TAN ## Renvoie la tangente d’un nombre. -TANH = TANH ## Renvoie la tangente hyperbolique d’un nombre. -TRUNC = TRONQUE ## Renvoie la partie entière d’un nombre. - - -## -## Statistical functions Fonctions statistiques -## -AVEDEV = ECART.MOYEN ## Renvoie la moyenne des écarts absolus observés dans la moyenne des points de données. -AVERAGE = MOYENNE ## Renvoie la moyenne de ses arguments. -AVERAGEA = AVERAGEA ## Renvoie la moyenne de ses arguments, nombres, texte et valeurs logiques inclus. -AVERAGEIF = MOYENNE.SI ## Renvoie la moyenne (arithmétique) de toutes les cellules d’une plage qui répondent à des critères donnés. -AVERAGEIFS = MOYENNE.SI.ENS ## Renvoie la moyenne (arithmétique) de toutes les cellules qui répondent à plusieurs critères. -BETADIST = LOI.BETA ## Renvoie la fonction de distribution cumulée. -BETAINV = BETA.INVERSE ## Renvoie l’inverse de la fonction de distribution cumulée pour une distribution bêta spécifiée. -BINOMDIST = LOI.BINOMIALE ## Renvoie la probabilité d’une variable aléatoire discrète suivant la loi binomiale. -CHIDIST = LOI.KHIDEUX ## Renvoie la probabilité unilatérale de la distribution khi-deux. -CHIINV = KHIDEUX.INVERSE ## Renvoie l’inverse de la probabilité unilatérale de la distribution khi-deux. -CHITEST = TEST.KHIDEUX ## Renvoie le test d’indépendance. -CONFIDENCE = INTERVALLE.CONFIANCE ## Renvoie l’intervalle de confiance pour une moyenne de population. -CORREL = COEFFICIENT.CORRELATION ## Renvoie le coefficient de corrélation entre deux séries de données. -COUNT = NB ## Détermine les nombres compris dans la liste des arguments. -COUNTA = NBVAL ## Détermine le nombre de valeurs comprises dans la liste des arguments. -COUNTBLANK = NB.VIDE ## Compte le nombre de cellules vides dans une plage. -COUNTIF = NB.SI ## Compte le nombre de cellules qui répondent à un critère donné dans une plage. -COUNTIFS = NB.SI.ENS ## Compte le nombre de cellules à l’intérieur d’une plage qui répondent à plusieurs critères. -COVAR = COVARIANCE ## Renvoie la covariance, moyenne des produits des écarts pour chaque série d’observations. -CRITBINOM = CRITERE.LOI.BINOMIALE ## Renvoie la plus petite valeur pour laquelle la distribution binomiale cumulée est inférieure ou égale à une valeur de critère. -DEVSQ = SOMME.CARRES.ECARTS ## Renvoie la somme des carrés des écarts. -EXPONDIST = LOI.EXPONENTIELLE ## Renvoie la distribution exponentielle. -FDIST = LOI.F ## Renvoie la distribution de probabilité F. -FINV = INVERSE.LOI.F ## Renvoie l’inverse de la distribution de probabilité F. -FISHER = FISHER ## Renvoie la transformation de Fisher. -FISHERINV = FISHER.INVERSE ## Renvoie l’inverse de la transformation de Fisher. -FORECAST = PREVISION ## Calcule une valeur par rapport à une tendance linéaire. -FREQUENCY = FREQUENCE ## Calcule la fréquence d’apparition des valeurs dans une plage de valeurs, puis renvoie des nombres sous forme de matrice verticale. -FTEST = TEST.F ## Renvoie le résultat d’un test F. -GAMMADIST = LOI.GAMMA ## Renvoie la probabilité d’une variable aléatoire suivant une loi Gamma. -GAMMAINV = LOI.GAMMA.INVERSE ## Renvoie, pour une probabilité donnée, la valeur d’une variable aléatoire suivant une loi Gamma. -GAMMALN = LNGAMMA ## Renvoie le logarithme népérien de la fonction Gamma, G(x) -GEOMEAN = MOYENNE.GEOMETRIQUE ## Renvoie la moyenne géométrique. -GROWTH = CROISSANCE ## Calcule des valeurs par rapport à une tendance exponentielle. -HARMEAN = MOYENNE.HARMONIQUE ## Renvoie la moyenne harmonique. -HYPGEOMDIST = LOI.HYPERGEOMETRIQUE ## Renvoie la probabilité d’une variable aléatoire discrète suivant une loi hypergéométrique. -INTERCEPT = ORDONNEE.ORIGINE ## Renvoie l’ordonnée à l’origine d’une droite de régression linéaire. -KURT = KURTOSIS ## Renvoie le kurtosis d’une série de données. -LARGE = GRANDE.VALEUR ## Renvoie la k-ième plus grande valeur d’une série de données. -LINEST = DROITEREG ## Renvoie les paramètres d’une tendance linéaire. -LOGEST = LOGREG ## Renvoie les paramètres d’une tendance exponentielle. -LOGINV = LOI.LOGNORMALE.INVERSE ## Renvoie l’inverse de la probabilité pour une variable aléatoire suivant la loi lognormale. -LOGNORMDIST = LOI.LOGNORMALE ## Renvoie la probabilité d’une variable aléatoire continue suivant une loi lognormale. -MAX = MAX ## Renvoie la valeur maximale contenue dans une liste d’arguments. -MAXA = MAXA ## Renvoie la valeur maximale d’une liste d’arguments, nombres, texte et valeurs logiques inclus. -MEDIAN = MEDIANE ## Renvoie la valeur médiane des nombres donnés. -MIN = MIN ## Renvoie la valeur minimale contenue dans une liste d’arguments. -MINA = MINA ## Renvoie la plus petite valeur d’une liste d’arguments, nombres, texte et valeurs logiques inclus. -MODE = MODE ## Renvoie la valeur la plus courante d’une série de données. -NEGBINOMDIST = LOI.BINOMIALE.NEG ## Renvoie la probabilité d’une variable aléatoire discrète suivant une loi binomiale négative. -NORMDIST = LOI.NORMALE ## Renvoie la probabilité d’une variable aléatoire continue suivant une loi normale. -NORMINV = LOI.NORMALE.INVERSE ## Renvoie, pour une probabilité donnée, la valeur d’une variable aléatoire suivant une loi normale standard. -NORMSDIST = LOI.NORMALE.STANDARD ## Renvoie la probabilité d’une variable aléatoire continue suivant une loi normale standard. -NORMSINV = LOI.NORMALE.STANDARD.INVERSE ## Renvoie l’inverse de la distribution cumulée normale standard. -PEARSON = PEARSON ## Renvoie le coefficient de corrélation d’échantillonnage de Pearson. -PERCENTILE = CENTILE ## Renvoie le k-ième centile des valeurs d’une plage. -PERCENTRANK = RANG.POURCENTAGE ## Renvoie le rang en pourcentage d’une valeur d’une série de données. -PERMUT = PERMUTATION ## Renvoie le nombre de permutations pour un nombre donné d’objets. -POISSON = LOI.POISSON ## Renvoie la probabilité d’une variable aléatoire suivant une loi de Poisson. -PROB = PROBABILITE ## Renvoie la probabilité que des valeurs d’une plage soient comprises entre deux limites. -QUARTILE = QUARTILE ## Renvoie le quartile d’une série de données. -RANK = RANG ## Renvoie le rang d’un nombre contenu dans une liste. -RSQ = COEFFICIENT.DETERMINATION ## Renvoie la valeur du coefficient de détermination R^2 d’une régression linéaire. -SKEW = COEFFICIENT.ASYMETRIE ## Renvoie l’asymétrie d’une distribution. -SLOPE = PENTE ## Renvoie la pente d’une droite de régression linéaire. -SMALL = PETITE.VALEUR ## Renvoie la k-ième plus petite valeur d’une série de données. -STANDARDIZE = CENTREE.REDUITE ## Renvoie une valeur centrée réduite. -STDEV = ECARTYPE ## Évalue l’écart type d’une population en se basant sur un échantillon de cette population. -STDEVA = STDEVA ## Évalue l’écart type d’une population en se basant sur un échantillon de cette population, nombres, texte et valeurs logiques inclus. -STDEVP = ECARTYPEP ## Calcule l’écart type d’une population à partir de la population entière. -STDEVPA = STDEVPA ## Calcule l’écart type d’une population à partir de l’ensemble de la population, nombres, texte et valeurs logiques inclus. -STEYX = ERREUR.TYPE.XY ## Renvoie l’erreur type de la valeur y prévue pour chaque x de la régression. -TDIST = LOI.STUDENT ## Renvoie la probabilité d’une variable aléatoire suivant une loi T de Student. -TINV = LOI.STUDENT.INVERSE ## Renvoie, pour une probabilité donnée, la valeur d’une variable aléatoire suivant une loi T de Student. -TREND = TENDANCE ## Renvoie des valeurs par rapport à une tendance linéaire. -TRIMMEAN = MOYENNE.REDUITE ## Renvoie la moyenne de l’intérieur d’une série de données. -TTEST = TEST.STUDENT ## Renvoie la probabilité associée à un test T de Student. -VAR = VAR ## Calcule la variance sur la base d’un échantillon. -VARA = VARA ## Estime la variance d’une population en se basant sur un échantillon de cette population, nombres, texte et valeurs logiques incluses. -VARP = VAR.P ## Calcule la variance sur la base de l’ensemble de la population. -VARPA = VARPA ## Calcule la variance d’une population en se basant sur la population entière, nombres, texte et valeurs logiques inclus. -WEIBULL = LOI.WEIBULL ## Renvoie la probabilité d’une variable aléatoire suivant une loi de Weibull. -ZTEST = TEST.Z ## Renvoie la valeur de probabilité unilatérale d’un test z. - - -## -## Text functions Fonctions de texte -## -ASC = ASC ## Change les caractères anglais ou katakana à pleine chasse (codés sur deux octets) à l’intérieur d’une chaîne de caractères en caractères à demi-chasse (codés sur un octet). -BAHTTEXT = BAHTTEXT ## Convertit un nombre en texte en utilisant le format monétaire ß (baht). -CHAR = CAR ## Renvoie le caractère spécifié par le code numérique. -CLEAN = EPURAGE ## Supprime tous les caractères de contrôle du texte. -CODE = CODE ## Renvoie le numéro de code du premier caractère du texte. -CONCATENATE = CONCATENER ## Assemble plusieurs éléments textuels de façon à n’en former qu’un seul. -DOLLAR = EURO ## Convertit un nombre en texte en utilisant le format monétaire € (euro). -EXACT = EXACT ## Vérifie si deux valeurs de texte sont identiques. -FIND = TROUVE ## Trouve un valeur textuelle dans une autre, en respectant la casse. -FINDB = TROUVERB ## Trouve un valeur textuelle dans une autre, en respectant la casse. -FIXED = CTXT ## Convertit un nombre au format texte avec un nombre de décimales spécifié. -JIS = JIS ## Change les caractères anglais ou katakana à demi-chasse (codés sur un octet) à l’intérieur d’une chaîne de caractères en caractères à à pleine chasse (codés sur deux octets). -LEFT = GAUCHE ## Renvoie des caractères situés à l’extrême gauche d’une chaîne de caractères. -LEFTB = GAUCHEB ## Renvoie des caractères situés à l’extrême gauche d’une chaîne de caractères. -LEN = NBCAR ## Renvoie le nombre de caractères contenus dans une chaîne de texte. -LENB = LENB ## Renvoie le nombre de caractères contenus dans une chaîne de texte. -LOWER = MINUSCULE ## Convertit le texte en minuscules. -MID = STXT ## Renvoie un nombre déterminé de caractères d’une chaîne de texte à partir de la position que vous indiquez. -MIDB = STXTB ## Renvoie un nombre déterminé de caractères d’une chaîne de texte à partir de la position que vous indiquez. -PHONETIC = PHONETIQUE ## Extrait les caractères phonétiques (furigana) d’une chaîne de texte. -PROPER = NOMPROPRE ## Met en majuscules la première lettre de chaque mot dans une chaîne textuelle. -REPLACE = REMPLACER ## Remplace des caractères dans un texte. -REPLACEB = REMPLACERB ## Remplace des caractères dans un texte. -REPT = REPT ## Répète un texte un certain nombre de fois. -RIGHT = DROITE ## Renvoie des caractères situés à l’extrême droite d’une chaîne de caractères. -RIGHTB = DROITEB ## Renvoie des caractères situés à l’extrême droite d’une chaîne de caractères. -SEARCH = CHERCHE ## Trouve un texte dans un autre texte (sans respecter la casse). -SEARCHB = CHERCHERB ## Trouve un texte dans un autre texte (sans respecter la casse). -SUBSTITUTE = SUBSTITUE ## Remplace l’ancien texte d’une chaîne de caractères par un nouveau. -T = T ## Convertit ses arguments en texte. -TEXT = TEXTE ## Convertit un nombre au format texte. -TRIM = SUPPRESPACE ## Supprime les espaces du texte. -UPPER = MAJUSCULE ## Convertit le texte en majuscules. -VALUE = CNUM ## Convertit un argument textuel en nombre diff --git a/application/third_party/PHPExcel/locale/hu/config b/application/third_party/PHPExcel/locale/hu/config deleted file mode 100644 index 080b2018..00000000 --- a/application/third_party/PHPExcel/locale/hu/config +++ /dev/null @@ -1,47 +0,0 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Settings -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## - - -ArgumentSeparator = ; - - -## -## (For future use) -## -currencySymbol = Ft - - -## -## Excel Error Codes (For future use) -## -NULL = #NULLA! -DIV0 = #ZÉRÓOSZTÓ! -VALUE = #ÉRTÉK! -REF = #HIV! -NAME = #NÉV? -NUM = #SZÁM! -NA = #HIÁNYZIK diff --git a/application/third_party/PHPExcel/locale/hu/functions b/application/third_party/PHPExcel/locale/hu/functions deleted file mode 100644 index 200d3f71..00000000 --- a/application/third_party/PHPExcel/locale/hu/functions +++ /dev/null @@ -1,438 +0,0 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Calculation -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ -## -## - - -## -## Add-in and Automation functions Bővítmények és automatizálási függvények -## -GETPIVOTDATA = KIMUTATÁSADATOT.VESZ ## A kimutatásokban tárolt adatok visszaadására használható. - - -## -## Cube functions Kockafüggvények -## -CUBEKPIMEMBER = KOCKA.FŐTELJMUT ## Egy fő teljesítménymutató (KPI) nevét, tulajdonságát és mértékegységét adja eredményül, a nevet és a tulajdonságot megjeleníti a cellában. A KPI-k számszerűsíthető mérési lehetőséget jelentenek – ilyen mutató például a havi bruttó nyereség vagy az egy alkalmazottra jutó negyedéves forgalom –, egy szervezet teljesítményének nyomonkövetésére használhatók. -CUBEMEMBER = KOCKA.TAG ## Kockahierachia tagját vagy rekordját adja eredményül. Ellenőrizhető vele, hogy szerepel-e a kockában az adott tag vagy rekord. -CUBEMEMBERPROPERTY = KOCKA.TAG.TUL ## A kocka egyik tagtulajdonságának értékét adja eredményül. Használatával ellenőrizhető, hogy szerepel-e egy tagnév a kockában, eredménye pedig az erre a tagra vonatkozó, megadott tulajdonság. -CUBERANKEDMEMBER = KOCKA.HALM.ELEM ## Egy halmaz rangsor szerinti n-edik tagját adja eredményül. Használatával egy halmaz egy vagy több elemét kaphatja meg, például a legnagyobb teljesítményű üzletkötőt vagy a 10 legjobb tanulót. -CUBESET = KOCKA.HALM ## Számított tagok vagy rekordok halmazát adja eredményül, ehhez egy beállított kifejezést elküld a kiszolgálón található kockának, majd ezt a halmazt adja vissza a Microsoft Office Excel alkalmazásnak. -CUBESETCOUNT = KOCKA.HALM.DB ## Egy halmaz elemszámát adja eredményül. -CUBEVALUE = KOCKA.ÉRTÉK ## Kockából összesített értéket ad eredményül. - - -## -## Database functions Adatbázis-kezelő függvények -## -DAVERAGE = AB.ÁTLAG ## A kijelölt adatbáziselemek átlagát számítja ki. -DCOUNT = AB.DARAB ## Megszámolja, hogy az adatbázisban hány cella tartalmaz számokat. -DCOUNTA = AB.DARAB2 ## Megszámolja az adatbázisban lévő nem üres cellákat. -DGET = AB.MEZŐ ## Egy adatbázisból egyetlen olyan rekordot ad vissza, amely megfelel a megadott feltételeknek. -DMAX = AB.MAX ## A kiválasztott adatbáziselemek közül a legnagyobb értéket adja eredményül. -DMIN = AB.MIN ## A kijelölt adatbáziselemek közül a legkisebb értéket adja eredményül. -DPRODUCT = AB.SZORZAT ## Az adatbázis megadott feltételeknek eleget tevő rekordjaira összeszorozza a megadott mezőben található számértékeket, és eredményül ezt a szorzatot adja. -DSTDEV = AB.SZÓRÁS ## A kijelölt adatbáziselemek egy mintája alapján megbecsüli a szórást. -DSTDEVP = AB.SZÓRÁS2 ## A kijelölt adatbáziselemek teljes sokasága alapján kiszámítja a szórást. -DSUM = AB.SZUM ## Összeadja a feltételnek megfelelő adatbázisrekordok mezőoszlopában a számokat. -DVAR = AB.VAR ## A kijelölt adatbáziselemek mintája alapján becslést ad a szórásnégyzetre. -DVARP = AB.VAR2 ## A kijelölt adatbáziselemek teljes sokasága alapján kiszámítja a szórásnégyzetet. - - -## -## Date and time functions Dátumfüggvények -## -DATE = DÁTUM ## Adott dátum dátumértékét adja eredményül. -DATEVALUE = DÁTUMÉRTÉK ## Szövegként megadott dátumot dátumértékké alakít át. -DAY = NAP ## Dátumértéket a hónap egy napjává (0-31) alakít. -DAYS360 = NAP360 ## Két dátum közé eső napok számát számítja ki a 360 napos év alapján. -EDATE = EDATE ## Adott dátumnál adott számú hónappal korábbi vagy későbbi dátum dátumértékét adja eredményül. -EOMONTH = EOMONTH ## Adott dátumnál adott számú hónappal korábbi vagy későbbi hónap utolsó napjának dátumértékét adja eredményül. -HOUR = ÓRA ## Időértéket órákká alakít. -MINUTE = PERC ## Időértéket percekké alakít. -MONTH = HÓNAP ## Időértéket hónapokká alakít. -NETWORKDAYS = NETWORKDAYS ## Két dátum között a teljes munkanapok számát adja meg. -NOW = MOST ## A napi dátum dátumértékét és a pontos idő időértékét adja eredményül. -SECOND = MPERC ## Időértéket másodpercekké alakít át. -TIME = IDŐ ## Adott időpont időértékét adja meg. -TIMEVALUE = IDŐÉRTÉK ## Szövegként megadott időpontot időértékké alakít át. -TODAY = MA ## A napi dátum dátumértékét adja eredményül. -WEEKDAY = HÉT.NAPJA ## Dátumértéket a hét napjává alakítja át. -WEEKNUM = WEEKNUM ## Visszatérési értéke egy szám, amely azt mutatja meg, hogy a megadott dátum az év hányadik hetére esik. -WORKDAY = WORKDAY ## Adott dátumnál adott munkanappal korábbi vagy későbbi dátum dátumértékét adja eredményül. -YEAR = ÉV ## Sorszámot évvé alakít át. -YEARFRAC = YEARFRAC ## Az adott dátumok közötti teljes napok számát törtévként adja meg. - - -## -## Engineering functions Mérnöki függvények -## -BESSELI = BESSELI ## Az In(x) módosított Bessel-függvény értékét adja eredményül. -BESSELJ = BESSELJ ## A Jn(x) Bessel-függvény értékét adja eredményül. -BESSELK = BESSELK ## A Kn(x) módosított Bessel-függvény értékét adja eredményül. -BESSELY = BESSELY ## Az Yn(x) módosított Bessel-függvény értékét adja eredményül. -BIN2DEC = BIN2DEC ## Bináris számot decimálissá alakít át. -BIN2HEX = BIN2HEX ## Bináris számot hexadecimálissá alakít át. -BIN2OCT = BIN2OCT ## Bináris számot oktálissá alakít át. -COMPLEX = COMPLEX ## Valós és képzetes részből komplex számot képez. -CONVERT = CONVERT ## Mértékegységeket vált át. -DEC2BIN = DEC2BIN ## Decimális számot binárissá alakít át. -DEC2HEX = DEC2HEX ## Decimális számot hexadecimálissá alakít át. -DEC2OCT = DEC2OCT ## Decimális számot oktálissá alakít át. -DELTA = DELTA ## Azt vizsgálja, hogy két érték egyenlő-e. -ERF = ERF ## A hibafüggvény értékét adja eredményül. -ERFC = ERFC ## A kiegészített hibafüggvény értékét adja eredményül. -GESTEP = GESTEP ## Azt vizsgálja, hogy egy szám nagyobb-e adott küszöbértéknél. -HEX2BIN = HEX2BIN ## Hexadecimális számot binárissá alakít át. -HEX2DEC = HEX2DEC ## Hexadecimális számot decimálissá alakít át. -HEX2OCT = HEX2OCT ## Hexadecimális számot oktálissá alakít át. -IMABS = IMABS ## Komplex szám abszolút értékét (modulusát) adja eredményül. -IMAGINARY = IMAGINARY ## Komplex szám képzetes részét adja eredményül. -IMARGUMENT = IMARGUMENT ## A komplex szám radiánban kifejezett théta argumentumát adja eredményül. -IMCONJUGATE = IMCONJUGATE ## Komplex szám komplex konjugáltját adja eredményül. -IMCOS = IMCOS ## Komplex szám koszinuszát adja eredményül. -IMDIV = IMDIV ## Két komplex szám hányadosát adja eredményül. -IMEXP = IMEXP ## Az e szám komplex kitevőjű hatványát adja eredményül. -IMLN = IMLN ## Komplex szám természetes logaritmusát adja eredményül. -IMLOG10 = IMLOG10 ## Komplex szám tízes alapú logaritmusát adja eredményül. -IMLOG2 = IMLOG2 ## Komplex szám kettes alapú logaritmusát adja eredményül. -IMPOWER = IMPOWER ## Komplex szám hatványát adja eredményül. -IMPRODUCT = IMPRODUCT ## Komplex számok szorzatát adja eredményül. -IMREAL = IMREAL ## Komplex szám valós részét adja eredményül. -IMSIN = IMSIN ## Komplex szám szinuszát adja eredményül. -IMSQRT = IMSQRT ## Komplex szám négyzetgyökét adja eredményül. -IMSUB = IMSUB ## Két komplex szám különbségét adja eredményül. -IMSUM = IMSUM ## Komplex számok összegét adja eredményül. -OCT2BIN = OCT2BIN ## Oktális számot binárissá alakít át. -OCT2DEC = OCT2DEC ## Oktális számot decimálissá alakít át. -OCT2HEX = OCT2HEX ## Oktális számot hexadecimálissá alakít át. - - -## -## Financial functions Pénzügyi függvények -## -ACCRINT = ACCRINT ## Periodikusan kamatozó értékpapír felszaporodott kamatát adja eredményül. -ACCRINTM = ACCRINTM ## Lejáratkor kamatozó értékpapír felszaporodott kamatát adja eredményül. -AMORDEGRC = AMORDEGRC ## Állóeszköz lineáris értékcsökkenését adja meg az egyes könyvelési időszakokra vonatkozóan. -AMORLINC = AMORLINC ## Az egyes könyvelési időszakokban az értékcsökkenést adja meg. -COUPDAYBS = COUPDAYBS ## A szelvényidőszak kezdetétől a kifizetés időpontjáig eltelt napokat adja vissza. -COUPDAYS = COUPDAYS ## A kifizetés időpontját magában foglaló szelvényperiódus hosszát adja meg napokban. -COUPDAYSNC = COUPDAYSNC ## A kifizetés időpontja és a legközelebbi szelvénydátum közötti napok számát adja meg. -COUPNCD = COUPNCD ## A kifizetést követő legelső szelvénydátumot adja eredményül. -COUPNUM = COUPNUM ## A kifizetés és a lejárat időpontja között kifizetendő szelvények számát adja eredményül. -COUPPCD = COUPPCD ## A kifizetés előtti utolsó szelvénydátumot adja eredményül. -CUMIPMT = CUMIPMT ## Két fizetési időszak között kifizetett kamat halmozott értékét adja eredményül. -CUMPRINC = CUMPRINC ## Két fizetési időszak között kifizetett részletek halmozott (kamatot nem tartalmazó) értékét adja eredményül. -DB = KCS2 ## Eszköz adott időszak alatti értékcsökkenését számítja ki a lineáris leírási modell alkalmazásával. -DDB = KCSA ## Eszköz értékcsökkenését számítja ki adott időszakra vonatkozóan a progresszív vagy egyéb megadott leírási modell alkalmazásával. -DISC = DISC ## Értékpapír leszámítolási kamatlábát adja eredményül. -DOLLARDE = DOLLARDE ## Egy közönséges törtként megadott számot tizedes törtté alakít át. -DOLLARFR = DOLLARFR ## Tizedes törtként megadott számot közönséges törtté alakít át. -DURATION = DURATION ## Periodikus kamatfizetésű értékpapír éves kamatérzékenységét adja eredményül. -EFFECT = EFFECT ## Az éves tényleges kamatláb értékét adja eredményül. -FV = JBÉ ## Befektetés jövőbeli értékét számítja ki. -FVSCHEDULE = FVSCHEDULE ## A kezdőtőke adott kamatlábak szerint megnövelt jövőbeli értékét adja eredményül. -INTRATE = INTRATE ## A lejáratig teljesen lekötött értékpapír kamatrátáját adja eredményül. -IPMT = RRÉSZLET ## Hiteltörlesztésen belül a tőketörlesztés nagyságát számítja ki adott időszakra. -IRR = BMR ## A befektetés belső megtérülési rátáját számítja ki pénzáramláshoz. -ISPMT = LRÉSZLETKAMAT ## A befektetés adott időszakára fizetett kamatot számítja ki. -MDURATION = MDURATION ## Egy 100 Ft névértékű értékpapír Macauley-féle módosított kamatérzékenységét adja eredményül. -MIRR = MEGTÉRÜLÉS ## A befektetés belső megtérülési rátáját számítja ki a költségek és a bevételek különböző kamatlába mellett. -NOMINAL = NOMINAL ## Az éves névleges kamatláb értékét adja eredményül. -NPER = PER.SZÁM ## A törlesztési időszakok számát adja meg. -NPV = NMÉ ## Befektetéshez kapcsolódó pénzáramlás nettó jelenértékét számítja ki ismert pénzáramlás és kamatláb mellett. -ODDFPRICE = ODDFPRICE ## Egy 100 Ft névértékű, a futamidő elején töredék-időszakos értékpapír árát adja eredményül. -ODDFYIELD = ODDFYIELD ## A futamidő elején töredék-időszakos értékpapír hozamát adja eredményül. -ODDLPRICE = ODDLPRICE ## Egy 100 Ft névértékű, a futamidő végén töredék-időszakos értékpapír árát adja eredményül. -ODDLYIELD = ODDLYIELD ## A futamidő végén töredék-időszakos értékpapír hozamát adja eredményül. -PMT = RÉSZLET ## A törlesztési időszakra vonatkozó törlesztési összeget számítja ki. -PPMT = PRÉSZLET ## Hiteltörlesztésen belül a tőketörlesztés nagyságát számítja ki adott időszakra. -PRICE = PRICE ## Egy 100 Ft névértékű, periodikusan kamatozó értékpapír árát adja eredményül. -PRICEDISC = PRICEDISC ## Egy 100 Ft névértékű leszámítolt értékpapír árát adja eredményül. -PRICEMAT = PRICEMAT ## Egy 100 Ft névértékű, a lejáratkor kamatozó értékpapír árát adja eredményül. -PV = MÉ ## Befektetés jelenlegi értékét számítja ki. -RATE = RÁTA ## Egy törlesztési időszakban az egy időszakra eső kamatláb nagyságát számítja ki. -RECEIVED = RECEIVED ## A lejáratig teljesen lekötött értékpapír lejáratakor kapott összegét adja eredményül. -SLN = LCSA ## Tárgyi eszköz egy időszakra eső amortizációját adja meg bruttó érték szerinti lineáris leírási kulcsot alkalmazva. -SYD = SYD ## Tárgyi eszköz értékcsökkenését számítja ki adott időszakra az évek számjegyösszegével dolgozó módszer alapján. -TBILLEQ = TBILLEQ ## Kincstárjegy kötvény-egyenértékű hozamát adja eredményül. -TBILLPRICE = TBILLPRICE ## Egy 100 Ft névértékű kincstárjegy árát adja eredményül. -TBILLYIELD = TBILLYIELD ## Kincstárjegy hozamát adja eredményül. -VDB = ÉCSRI ## Tárgyi eszköz amortizációját számítja ki megadott vagy részidőszakra a csökkenő egyenleg módszerének alkalmazásával. -XIRR = XIRR ## Ütemezett készpénzforgalom (cash flow) belső megtérülési kamatrátáját adja eredményül. -XNPV = XNPV ## Ütemezett készpénzforgalom (cash flow) nettó jelenlegi értékét adja eredményül. -YIELD = YIELD ## Periodikusan kamatozó értékpapír hozamát adja eredményül. -YIELDDISC = YIELDDISC ## Leszámítolt értékpapír (például kincstárjegy) éves hozamát adja eredményül. -YIELDMAT = YIELDMAT ## Lejáratkor kamatozó értékpapír éves hozamát adja eredményül. - - -## -## Information functions Információs függvények -## -CELL = CELLA ## Egy cella formátumára, elhelyezkedésére vagy tartalmára vonatkozó adatokat ad eredményül. -ERROR.TYPE = HIBA.TÍPUS ## Egy hibatípushoz tartozó számot ad eredményül. -INFO = INFÓ ## A rendszer- és munkakörnyezet pillanatnyi állapotáról ad felvilágosítást. -ISBLANK = ÜRES ## Eredménye IGAZ, ha az érték üres. -ISERR = HIBA ## Eredménye IGAZ, ha az érték valamelyik hibaérték a #HIÁNYZIK kivételével. -ISERROR = HIBÁS ## Eredménye IGAZ, ha az érték valamelyik hibaérték. -ISEVEN = ISEVEN ## Eredménye IGAZ, ha argumentuma páros szám. -ISLOGICAL = LOGIKAI ## Eredménye IGAZ, ha az érték logikai érték. -ISNA = NINCS ## Eredménye IGAZ, ha az érték a #HIÁNYZIK hibaérték. -ISNONTEXT = NEM.SZÖVEG ## Eredménye IGAZ, ha az érték nem szöveg. -ISNUMBER = SZÁM ## Eredménye IGAZ, ha az érték szám. -ISODD = ISODD ## Eredménye IGAZ, ha argumentuma páratlan szám. -ISREF = HIVATKOZÁS ## Eredménye IGAZ, ha az érték hivatkozás. -ISTEXT = SZÖVEG.E ## Eredménye IGAZ, ha az érték szöveg. -N = N ## Argumentumának értékét számmá alakítja. -NA = HIÁNYZIK ## Eredménye a #HIÁNYZIK hibaérték. -TYPE = TÍPUS ## Érték adattípusának azonosítószámát adja eredményül. - - -## -## Logical functions Logikai függvények -## -AND = ÉS ## Eredménye IGAZ, ha minden argumentuma IGAZ. -FALSE = HAMIS ## A HAMIS logikai értéket adja eredményül. -IF = HA ## Logikai vizsgálatot hajt végre. -IFERROR = HAHIBA ## A megadott értéket adja vissza, ha egy képlet hibához vezet; más esetben a képlet értékét adja eredményül. -NOT = NEM ## Argumentuma értékének ellentettjét adja eredményül. -OR = VAGY ## Eredménye IGAZ, ha bármely argumentuma IGAZ. -TRUE = IGAZ ## Az IGAZ logikai értéket adja eredményül. - - -## -## Lookup and reference functions Keresési és hivatkozási függvények -## -ADDRESS = CÍM ## A munkalap egy cellájára való hivatkozást adja szövegként eredményül. -AREAS = TERÜLET ## Hivatkozásban a területek számát adja eredményül. -CHOOSE = VÁLASZT ## Értékek listájából választ ki egy elemet. -COLUMN = OSZLOP ## Egy hivatkozás oszlopszámát adja eredményül. -COLUMNS = OSZLOPOK ## A hivatkozásban található oszlopok számát adja eredményül. -HLOOKUP = VKERES ## A megadott tömb felső sorában adott értékű elemet keres, és a megtalált elem oszlopából adott sorban elhelyezkedő értékkel tér vissza. -HYPERLINK = HIPERHIVATKOZÁS ## Hálózati kiszolgálón, intraneten vagy az interneten tárolt dokumentumot megnyitó parancsikont vagy hivatkozást hoz létre. -INDEX = INDEX ## Tömb- vagy hivatkozás indexszel megadott értékét adja vissza. -INDIRECT = INDIREKT ## Szöveg megadott hivatkozást ad eredményül. -LOOKUP = KERES ## Vektorban vagy tömbben keres meg értékeket. -MATCH = HOL.VAN ## Hivatkozásban vagy tömbben értékeket keres. -OFFSET = OFSZET ## Hivatkozás egy másik hivatkozástól számított távolságát adja meg. -ROW = SOR ## Egy hivatkozás sorának számát adja meg. -ROWS = SOROK ## Egy hivatkozás sorainak számát adja meg. -RTD = RTD ## Valós idejű adatokat keres vissza a COM automatizmust (automatizálás: Egy alkalmazás objektumaival való munka másik alkalmazásból vagy fejlesztőeszközből. A korábban OLE automatizmusnak nevezett automatizálás iparági szabvány, a Component Object Model (COM) szolgáltatása.) támogató programból. -TRANSPOSE = TRANSZPONÁLÁS ## Egy tömb transzponáltját adja eredményül. -VLOOKUP = FKERES ## A megadott tömb bal szélső oszlopában megkeres egy értéket, majd annak sora és a megadott oszlop metszéspontjában levő értéked adja eredményül. - - -## -## Math and trigonometry functions Matematikai és trigonometrikus függvények -## -ABS = ABS ## Egy szám abszolút értékét adja eredményül. -ACOS = ARCCOS ## Egy szám arkusz koszinuszát számítja ki. -ACOSH = ACOSH ## Egy szám inverz koszinusz hiperbolikuszát számítja ki. -ASIN = ARCSIN ## Egy szám arkusz szinuszát számítja ki. -ASINH = ASINH ## Egy szám inverz szinusz hiperbolikuszát számítja ki. -ATAN = ARCTAN ## Egy szám arkusz tangensét számítja ki. -ATAN2 = ARCTAN2 ## X és y koordináták alapján számítja ki az arkusz tangens értéket. -ATANH = ATANH ## A szám inverz tangens hiperbolikuszát számítja ki. -CEILING = PLAFON ## Egy számot a legközelebbi egészre vagy a pontosságként megadott érték legközelebb eső többszörösére kerekít. -COMBIN = KOMBINÁCIÓK ## Adott számú objektum összes lehetséges kombinációinak számát számítja ki. -COS = COS ## Egy szám koszinuszát számítja ki. -COSH = COSH ## Egy szám koszinusz hiperbolikuszát számítja ki. -DEGREES = FOK ## Radiánt fokká alakít át. -EVEN = PÁROS ## Egy számot a legközelebbi páros egész számra kerekít. -EXP = KITEVŐ ## Az e adott kitevőjű hatványát adja eredményül. -FACT = FAKT ## Egy szám faktoriálisát számítja ki. -FACTDOUBLE = FACTDOUBLE ## Egy szám dupla faktoriálisát adja eredményül. -FLOOR = PADLÓ ## Egy számot lefelé, a nulla felé kerekít. -GCD = GCD ## A legnagyobb közös osztót adja eredményül. -INT = INT ## Egy számot lefelé kerekít a legközelebbi egészre. -LCM = LCM ## A legkisebb közös többszöröst adja eredményül. -LN = LN ## Egy szám természetes logaritmusát számítja ki. -LOG = LOG ## Egy szám adott alapú logaritmusát számítja ki. -LOG10 = LOG10 ## Egy szám 10-es alapú logaritmusát számítja ki. -MDETERM = MDETERM ## Egy tömb mátrix-determinánsát számítja ki. -MINVERSE = INVERZ.MÁTRIX ## Egy tömb mátrix inverzét adja eredményül. -MMULT = MSZORZAT ## Két tömb mátrix-szorzatát adja meg. -MOD = MARADÉK ## Egy szám osztási maradékát adja eredményül. -MROUND = MROUND ## A kívánt többszörösére kerekített értéket ad eredményül. -MULTINOMIAL = MULTINOMIAL ## Számhalmaz multinomiálisát adja eredményül. -ODD = PÁRATLAN ## Egy számot a legközelebbi páratlan számra kerekít. -PI = PI ## A pi matematikai állandót adja vissza. -POWER = HATVÁNY ## Egy szám adott kitevőjű hatványát számítja ki. -PRODUCT = SZORZAT ## Argumentumai szorzatát számítja ki. -QUOTIENT = QUOTIENT ## Egy hányados egész részét adja eredményül. -RADIANS = RADIÁN ## Fokot radiánná alakít át. -RAND = VÉL ## Egy 0 és 1 közötti véletlen számot ad eredményül. -RANDBETWEEN = RANDBETWEEN ## Megadott számok közé eső véletlen számot állít elő. -ROMAN = RÓMAI ## Egy számot római számokkal kifejezve szövegként ad eredményül. -ROUND = KEREKÍTÉS ## Egy számot adott számú számjegyre kerekít. -ROUNDDOWN = KEREKÍTÉS.LE ## Egy számot lefelé, a nulla felé kerekít. -ROUNDUP = KEREKÍTÉS.FEL ## Egy számot felfelé, a nullától távolabbra kerekít. -SERIESSUM = SERIESSUM ## Hatványsor összegét adja eredményül. -SIGN = ELŐJEL ## Egy szám előjelét adja meg. -SIN = SIN ## Egy szög szinuszát számítja ki. -SINH = SINH ## Egy szám szinusz hiperbolikuszát számítja ki. -SQRT = GYÖK ## Egy szám pozitív négyzetgyökét számítja ki. -SQRTPI = SQRTPI ## A (szám*pi) négyzetgyökét adja eredményül. -SUBTOTAL = RÉSZÖSSZEG ## Lista vagy adatbázis részösszegét adja eredményül. -SUM = SZUM ## Összeadja az argumentumlistájában lévő számokat. -SUMIF = SZUMHA ## A megadott feltételeknek eleget tevő cellákban található értékeket adja össze. -SUMIFS = SZUMHATÖBB ## Több megadott feltételnek eleget tévő tartománycellák összegét adja eredményül. -SUMPRODUCT = SZORZATÖSSZEG ## A megfelelő tömbelemek szorzatának összegét számítja ki. -SUMSQ = NÉGYZETÖSSZEG ## Argumentumai négyzetének összegét számítja ki. -SUMX2MY2 = SZUMX2BŐLY2 ## Két tömb megfelelő elemei négyzetének különbségét összegzi. -SUMX2PY2 = SZUMX2MEGY2 ## Két tömb megfelelő elemei négyzetének összegét összegzi. -SUMXMY2 = SZUMXBŐLY2 ## Két tömb megfelelő elemei különbségének négyzetösszegét számítja ki. -TAN = TAN ## Egy szám tangensét számítja ki. -TANH = TANH ## Egy szám tangens hiperbolikuszát számítja ki. -TRUNC = CSONK ## Egy számot egésszé csonkít. - - -## -## Statistical functions Statisztikai függvények -## -AVEDEV = ÁTL.ELTÉRÉS ## Az adatpontoknak átlaguktól való átlagos abszolút eltérését számítja ki. -AVERAGE = ÁTLAG ## Argumentumai átlagát számítja ki. -AVERAGEA = ÁTLAGA ## Argumentumai átlagát számítja ki (beleértve a számokat, szöveget és logikai értékeket). -AVERAGEIF = ÁTLAGHA ## A megadott feltételnek eleget tévő tartomány celláinak átlagát (számtani közepét) adja eredményül. -AVERAGEIFS = ÁTLAGHATÖBB ## A megadott feltételeknek eleget tévő cellák átlagát (számtani közepét) adja eredményül. -BETADIST = BÉTA.ELOSZLÁS ## A béta-eloszlás függvényt számítja ki. -BETAINV = INVERZ.BÉTA ## Adott béta-eloszláshoz kiszámítja a béta eloszlásfüggvény inverzét. -BINOMDIST = BINOM.ELOSZLÁS ## A diszkrét binomiális eloszlás valószínűségértékét számítja ki. -CHIDIST = KHI.ELOSZLÁS ## A khi-négyzet-eloszlás egyszélű valószínűségértékét számítja ki. -CHIINV = INVERZ.KHI ## A khi-négyzet-eloszlás egyszélű valószínűségértékének inverzét számítja ki. -CHITEST = KHI.PRÓBA ## Függetlenségvizsgálatot hajt végre. -CONFIDENCE = MEGBÍZHATÓSÁG ## Egy statisztikai sokaság várható értékének megbízhatósági intervallumát adja eredményül. -CORREL = KORREL ## Két adathalmaz korrelációs együtthatóját számítja ki. -COUNT = DARAB ## Megszámolja, hogy argumentumlistájában hány szám található. -COUNTA = DARAB2 ## Megszámolja, hogy argumentumlistájában hány érték található. -COUNTBLANK = DARABÜRES ## Egy tartományban összeszámolja az üres cellákat. -COUNTIF = DARABTELI ## Egy tartományban összeszámolja azokat a cellákat, amelyek eleget tesznek a megadott feltételnek. -COUNTIFS = DARABHATÖBB ## Egy tartományban összeszámolja azokat a cellákat, amelyek eleget tesznek több feltételnek. -COVAR = KOVAR ## A kovarianciát, azaz a páronkénti eltérések szorzatának átlagát számítja ki. -CRITBINOM = KRITBINOM ## Azt a legkisebb számot adja eredményül, amelyre a binomiális eloszlásfüggvény értéke nem kisebb egy adott határértéknél. -DEVSQ = SQ ## Az átlagtól való eltérések négyzetének összegét számítja ki. -EXPONDIST = EXP.ELOSZLÁS ## Az exponenciális eloszlás értékét számítja ki. -FDIST = F.ELOSZLÁS ## Az F-eloszlás értékét számítja ki. -FINV = INVERZ.F ## Az F-eloszlás inverzének értékét számítja ki. -FISHER = FISHER ## Fisher-transzformációt hajt végre. -FISHERINV = INVERZ.FISHER ## A Fisher-transzformáció inverzét hajtja végre. -FORECAST = ELŐREJELZÉS ## Az ismert értékek alapján lineáris regresszióval becsült értéket ad eredményül. -FREQUENCY = GYAKORISÁG ## A gyakorisági vagy empirikus eloszlás értékét függőleges tömbként adja eredményül. -FTEST = F.PRÓBA ## Az F-próba értékét adja eredményül. -GAMMADIST = GAMMA.ELOSZLÁS ## A gamma-eloszlás értékét számítja ki. -GAMMAINV = INVERZ.GAMMA ## A gamma-eloszlás eloszlásfüggvénye inverzének értékét számítja ki. -GAMMALN = GAMMALN ## A gamma-függvény természetes logaritmusát számítja ki. -GEOMEAN = MÉRTANI.KÖZÉP ## Argumentumai mértani középértékét számítja ki. -GROWTH = NÖV ## Exponenciális regresszió alapján ad becslést. -HARMEAN = HARM.KÖZÉP ## Argumentumai harmonikus átlagát számítja ki. -HYPGEOMDIST = HIPERGEOM.ELOSZLÁS ## A hipergeometriai eloszlás értékét számítja ki. -INTERCEPT = METSZ ## A regressziós egyenes y tengellyel való metszéspontját határozza meg. -KURT = CSÚCSOSSÁG ## Egy adathalmaz csúcsosságát számítja ki. -LARGE = NAGY ## Egy adathalmaz k-adik legnagyobb elemét adja eredményül. -LINEST = LIN.ILL ## A legkisebb négyzetek módszerével az adatokra illesztett egyenes paramétereit határozza meg. -LOGEST = LOG.ILL ## Az adatokra illesztett exponenciális görbe paramétereit határozza meg. -LOGINV = INVERZ.LOG.ELOSZLÁS ## A lognormális eloszlás inverzét számítja ki. -LOGNORMDIST = LOG.ELOSZLÁS ## A lognormális eloszlásfüggvény értékét számítja ki. -MAX = MAX ## Az argumentumai között szereplő legnagyobb számot adja meg. -MAXA = MAX2 ## Az argumentumai között szereplő legnagyobb számot adja meg (beleértve a számokat, szöveget és logikai értékeket). -MEDIAN = MEDIÁN ## Adott számhalmaz mediánját számítja ki. -MIN = MIN ## Az argumentumai között szereplő legkisebb számot adja meg. -MINA = MIN2 ## Az argumentumai között szereplő legkisebb számot adja meg, beleértve a számokat, szöveget és logikai értékeket. -MODE = MÓDUSZ ## Egy adathalmazból kiválasztja a leggyakrabban előforduló számot. -NEGBINOMDIST = NEGBINOM.ELOSZL ## A negatív binomiális eloszlás értékét számítja ki. -NORMDIST = NORM.ELOSZL ## A normális eloszlás értékét számítja ki. -NORMINV = INVERZ.NORM ## A normális eloszlás eloszlásfüggvénye inverzének értékét számítja ki. -NORMSDIST = STNORMELOSZL ## A standard normális eloszlás eloszlásfüggvényének értékét számítja ki. -NORMSINV = INVERZ.STNORM ## A standard normális eloszlás eloszlásfüggvénye inverzének értékét számítja ki. -PEARSON = PEARSON ## A Pearson-féle korrelációs együtthatót számítja ki. -PERCENTILE = PERCENTILIS ## Egy tartományban található értékek k-adik percentilisét, azaz százalékosztályát adja eredményül. -PERCENTRANK = SZÁZALÉKRANG ## Egy értéknek egy adathalmazon belül vett százalékos rangját (elhelyezkedését) számítja ki. -PERMUT = VARIÁCIÓK ## Adott számú objektum k-ad osztályú ismétlés nélküli variációinak számát számítja ki. -POISSON = POISSON ## A Poisson-eloszlás értékét számítja ki. -PROB = VALÓSZÍNŰSÉG ## Annak valószínűségét számítja ki, hogy adott értékek két határérték közé esnek. -QUARTILE = KVARTILIS ## Egy adathalmaz kvartilisét (negyedszintjét) számítja ki. -RANK = SORSZÁM ## Kiszámítja, hogy egy szám hányadik egy számsorozatban. -RSQ = RNÉGYZET ## Kiszámítja a Pearson-féle szorzatmomentum korrelációs együtthatójának négyzetét. -SKEW = FERDESÉG ## Egy eloszlás ferdeségét határozza meg. -SLOPE = MEREDEKSÉG ## Egy lineáris regressziós egyenes meredekségét számítja ki. -SMALL = KICSI ## Egy adathalmaz k-adik legkisebb elemét adja meg. -STANDARDIZE = NORMALIZÁLÁS ## Normalizált értéket ad eredményül. -STDEV = SZÓRÁS ## Egy statisztikai sokaság mintájából kiszámítja annak szórását. -STDEVA = SZÓRÁSA ## Egy statisztikai sokaság mintájából kiszámítja annak szórását (beleértve a számokat, szöveget és logikai értékeket). -STDEVP = SZÓRÁSP ## Egy statisztikai sokaság egészéből kiszámítja annak szórását. -STDEVPA = SZÓRÁSPA ## Egy statisztikai sokaság egészéből kiszámítja annak szórását (beleértve számokat, szöveget és logikai értékeket). -STEYX = STHIBAYX ## Egy regresszió esetén az egyes x-értékek alapján meghatározott y-értékek standard hibáját számítja ki. -TDIST = T.ELOSZLÁS ## A Student-féle t-eloszlás értékét számítja ki. -TINV = INVERZ.T ## A Student-féle t-eloszlás inverzét számítja ki. -TREND = TREND ## Lineáris trend értékeit számítja ki. -TRIMMEAN = RÉSZÁTLAG ## Egy adathalmaz középső részének átlagát számítja ki. -TTEST = T.PRÓBA ## A Student-féle t-próbához tartozó valószínűséget számítja ki. -VAR = VAR ## Minta alapján becslést ad a varianciára. -VARA = VARA ## Minta alapján becslést ad a varianciára (beleértve számokat, szöveget és logikai értékeket). -VARP = VARP ## Egy statisztikai sokaság varianciáját számítja ki. -VARPA = VARPA ## Egy statisztikai sokaság varianciáját számítja ki (beleértve számokat, szöveget és logikai értékeket). -WEIBULL = WEIBULL ## A Weibull-féle eloszlás értékét számítja ki. -ZTEST = Z.PRÓBA ## Az egyszélű z-próbával kapott valószínűségértéket számítja ki. - - -## -## Text functions Szövegműveletekhez használható függvények -## -ASC = ASC ## Szöveg teljes szélességű (kétbájtos) latin és katakana karaktereit félszélességű (egybájtos) karakterekké alakítja. -BAHTTEXT = BAHTSZÖVEG ## Számot szöveggé alakít a ß (baht) pénznemformátum használatával. -CHAR = KARAKTER ## A kódszámmal meghatározott karaktert adja eredményül. -CLEAN = TISZTÍT ## A szövegből eltávolítja az összes nem nyomtatható karaktert. -CODE = KÓD ## Karaktersorozat első karakterének numerikus kódját adja eredményül. -CONCATENATE = ÖSSZEFŰZ ## Több szövegelemet egyetlen szöveges elemmé fűz össze. -DOLLAR = FORINT ## Számot pénznem formátumú szöveggé alakít át. -EXACT = AZONOS ## Megvizsgálja, hogy két érték azonos-e. -FIND = SZÖVEG.TALÁL ## Karaktersorozatot keres egy másikban (a kis- és nagybetűk megkülönböztetésével). -FINDB = SZÖVEG.TALÁL2 ## Karaktersorozatot keres egy másikban (a kis- és nagybetűk megkülönböztetésével). -FIXED = FIX ## Számot szöveges formátumúra alakít adott számú tizedesjegyre kerekítve. -JIS = JIS ## A félszélességű (egybájtos) latin és a katakana karaktereket teljes szélességű (kétbájtos) karakterekké alakítja. -LEFT = BAL ## Szöveg bal szélső karaktereit adja eredményül. -LEFTB = BAL2 ## Szöveg bal szélső karaktereit adja eredményül. -LEN = HOSSZ ## Szöveg karakterekben mért hosszát adja eredményül. -LENB = HOSSZ2 ## Szöveg karakterekben mért hosszát adja eredményül. -LOWER = KISBETŰ ## Szöveget kisbetűssé alakít át. -MID = KÖZÉP ## A szöveg adott pozíciójától kezdve megadott számú karaktert ad vissza eredményként. -MIDB = KÖZÉP2 ## A szöveg adott pozíciójától kezdve megadott számú karaktert ad vissza eredményként. -PHONETIC = PHONETIC ## Szöveg furigana (fonetikus) karaktereit adja vissza. -PROPER = TNÉV ## Szöveg minden szavának kezdőbetűjét nagybetűsre cseréli. -REPLACE = CSERE ## A szövegen belül karaktereket cserél. -REPLACEB = CSERE2 ## A szövegen belül karaktereket cserél. -REPT = SOKSZOR ## Megadott számú alkalommal megismétel egy szövegrészt. -RIGHT = JOBB ## Szövegrész jobb szélső karaktereit adja eredményül. -RIGHTB = JOBB2 ## Szövegrész jobb szélső karaktereit adja eredményül. -SEARCH = SZÖVEG.KERES ## Karaktersorozatot keres egy másikban (a kis- és nagybetűk között nem tesz különbséget). -SEARCHB = SZÖVEG.KERES2 ## Karaktersorozatot keres egy másikban (a kis- és nagybetűk között nem tesz különbséget). -SUBSTITUTE = HELYETTE ## Szövegben adott karaktereket másikra cserél. -T = T ## Argumentumát szöveggé alakítja át. -TEXT = SZÖVEG ## Számértéket alakít át adott számformátumú szöveggé. -TRIM = TRIM ## A szövegből eltávolítja a szóközöket. -UPPER = NAGYBETŰS ## Szöveget nagybetűssé alakít át. -VALUE = ÉRTÉK ## Szöveget számmá alakít át. diff --git a/application/third_party/PHPExcel/locale/it/config b/application/third_party/PHPExcel/locale/it/config deleted file mode 100644 index c3afa754..00000000 --- a/application/third_party/PHPExcel/locale/it/config +++ /dev/null @@ -1,47 +0,0 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Settings -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## - - -ArgumentSeparator = ; - - -## -## (For future use) -## -currencySymbol = € - - -## -## Excel Error Codes (For future use) -## -NULL = #NULLO! -DIV0 = #DIV/0! -VALUE = #VALORE! -REF = #RIF! -NAME = #NOME? -NUM = #NUM! -NA = #N/D diff --git a/application/third_party/PHPExcel/locale/it/functions b/application/third_party/PHPExcel/locale/it/functions deleted file mode 100644 index d371f3d7..00000000 --- a/application/third_party/PHPExcel/locale/it/functions +++ /dev/null @@ -1,438 +0,0 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Calculation -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ -## -## - - -## -## Add-in and Automation functions Funzioni di automazione e dei componenti aggiuntivi -## -GETPIVOTDATA = INFO.DATI.TAB.PIVOT ## Restituisce i dati memorizzati in un rapporto di tabella pivot - - -## -## Cube functions Funzioni cubo -## -CUBEKPIMEMBER = MEMBRO.KPI.CUBO ## Restituisce il nome, la proprietà e la misura di un indicatore di prestazioni chiave (KPI) e visualizza il nome e la proprietà nella cella. Un KPI è una misura quantificabile, ad esempio l'utile lordo mensile o il fatturato trimestrale dei dipendenti, utilizzata per il monitoraggio delle prestazioni di un'organizzazione. -CUBEMEMBER = MEMBRO.CUBO ## Restituisce un membro o una tupla in una gerarchia di cubi. Consente di verificare l'esistenza del membro o della tupla nel cubo. -CUBEMEMBERPROPERTY = PROPRIETÀ.MEMBRO.CUBO ## Restituisce il valore di una proprietà di un membro del cubo. Consente di verificare l'esistenza di un nome di membro all'interno del cubo e di restituire la proprietà specificata per tale membro. -CUBERANKEDMEMBER = MEMBRO.CUBO.CON.RANGO ## Restituisce l'n-esimo membro o il membro ordinato di un insieme. Consente di restituire uno o più elementi in un insieme, ad esempio l'agente di vendita migliore o i primi 10 studenti. -CUBESET = SET.CUBO ## Definisce un insieme di tuple o membri calcolati mediante l'invio di un'espressione di insieme al cubo sul server. In questo modo l'insieme viene creato e restituito a Microsoft Office Excel. -CUBESETCOUNT = CONTA.SET.CUBO ## Restituisce il numero di elementi di un insieme. -CUBEVALUE = VALORE.CUBO ## Restituisce un valore aggregato da un cubo. - - -## -## Database functions Funzioni di database -## -DAVERAGE = DB.MEDIA ## Restituisce la media di voci del database selezionate -DCOUNT = DB.CONTA.NUMERI ## Conta le celle di un database contenenti numeri -DCOUNTA = DB.CONTA.VALORI ## Conta le celle non vuote in un database -DGET = DB.VALORI ## Estrae da un database un singolo record che soddisfa i criteri specificati -DMAX = DB.MAX ## Restituisce il valore massimo dalle voci selezionate in un database -DMIN = DB.MIN ## Restituisce il valore minimo dalle voci di un database selezionate -DPRODUCT = DB.PRODOTTO ## Moltiplica i valori in un determinato campo di record che soddisfano i criteri del database -DSTDEV = DB.DEV.ST ## Restituisce una stima della deviazione standard sulla base di un campione di voci di un database selezionate -DSTDEVP = DB.DEV.ST.POP ## Calcola la deviazione standard sulla base di tutte le voci di un database selezionate -DSUM = DB.SOMMA ## Aggiunge i numeri nel campo colonna di record del database che soddisfa determinati criteri -DVAR = DB.VAR ## Restituisce una stima della varianza sulla base di un campione da voci di un database selezionate -DVARP = DB.VAR.POP ## Calcola la varianza sulla base di tutte le voci di un database selezionate - - -## -## Date and time functions Funzioni data e ora -## -DATE = DATA ## Restituisce il numero seriale di una determinata data -DATEVALUE = DATA.VALORE ## Converte una data sotto forma di testo in un numero seriale -DAY = GIORNO ## Converte un numero seriale in un giorno del mese -DAYS360 = GIORNO360 ## Calcola il numero di giorni compreso tra due date basandosi su un anno di 360 giorni -EDATE = DATA.MESE ## Restituisce il numero seriale della data che rappresenta il numero di mesi prima o dopo la data di inizio -EOMONTH = FINE.MESE ## Restituisce il numero seriale dell'ultimo giorno del mese, prima o dopo un determinato numero di mesi -HOUR = ORA ## Converte un numero seriale in un'ora -MINUTE = MINUTO ## Converte un numero seriale in un minuto -MONTH = MESE ## Converte un numero seriale in un mese -NETWORKDAYS = GIORNI.LAVORATIVI.TOT ## Restituisce il numero di tutti i giorni lavorativi compresi fra due date -NOW = ADESSO ## Restituisce il numero seriale della data e dell'ora corrente -SECOND = SECONDO ## Converte un numero seriale in un secondo -TIME = ORARIO ## Restituisce il numero seriale di una determinata ora -TIMEVALUE = ORARIO.VALORE ## Converte un orario in forma di testo in un numero seriale -TODAY = OGGI ## Restituisce il numero seriale relativo alla data odierna -WEEKDAY = GIORNO.SETTIMANA ## Converte un numero seriale in un giorno della settimana -WEEKNUM = NUM.SETTIMANA ## Converte un numero seriale in un numero che rappresenta la posizione numerica di una settimana nell'anno -WORKDAY = GIORNO.LAVORATIVO ## Restituisce il numero della data prima o dopo un determinato numero di giorni lavorativi -YEAR = ANNO ## Converte un numero seriale in un anno -YEARFRAC = FRAZIONE.ANNO ## Restituisce la frazione dell'anno che rappresenta il numero dei giorni compresi tra una data_ iniziale e una data_finale - - -## -## Engineering functions Funzioni ingegneristiche -## -BESSELI = BESSEL.I ## Restituisce la funzione di Bessel modificata In(x) -BESSELJ = BESSEL.J ## Restituisce la funzione di Bessel Jn(x) -BESSELK = BESSEL.K ## Restituisce la funzione di Bessel modificata Kn(x) -BESSELY = BESSEL.Y ## Restituisce la funzione di Bessel Yn(x) -BIN2DEC = BINARIO.DECIMALE ## Converte un numero binario in decimale -BIN2HEX = BINARIO.HEX ## Converte un numero binario in esadecimale -BIN2OCT = BINARIO.OCT ## Converte un numero binario in ottale -COMPLEX = COMPLESSO ## Converte i coefficienti reali e immaginari in numeri complessi -CONVERT = CONVERTI ## Converte un numero da un sistema di misura in un altro -DEC2BIN = DECIMALE.BINARIO ## Converte un numero decimale in binario -DEC2HEX = DECIMALE.HEX ## Converte un numero decimale in esadecimale -DEC2OCT = DECIMALE.OCT ## Converte un numero decimale in ottale -DELTA = DELTA ## Verifica se due valori sono uguali -ERF = FUNZ.ERRORE ## Restituisce la funzione di errore -ERFC = FUNZ.ERRORE.COMP ## Restituisce la funzione di errore complementare -GESTEP = SOGLIA ## Verifica se un numero è maggiore del valore di soglia -HEX2BIN = HEX.BINARIO ## Converte un numero esadecimale in binario -HEX2DEC = HEX.DECIMALE ## Converte un numero esadecimale in decimale -HEX2OCT = HEX.OCT ## Converte un numero esadecimale in ottale -IMABS = COMP.MODULO ## Restituisce il valore assoluto (modulo) di un numero complesso -IMAGINARY = COMP.IMMAGINARIO ## Restituisce il coefficiente immaginario di un numero complesso -IMARGUMENT = COMP.ARGOMENTO ## Restituisce l'argomento theta, un angolo espresso in radianti -IMCONJUGATE = COMP.CONIUGATO ## Restituisce il complesso coniugato del numero complesso -IMCOS = COMP.COS ## Restituisce il coseno di un numero complesso -IMDIV = COMP.DIV ## Restituisce il quoziente di due numeri complessi -IMEXP = COMP.EXP ## Restituisce il valore esponenziale di un numero complesso -IMLN = COMP.LN ## Restituisce il logaritmo naturale di un numero complesso -IMLOG10 = COMP.LOG10 ## Restituisce il logaritmo in base 10 di un numero complesso -IMLOG2 = COMP.LOG2 ## Restituisce un logaritmo in base 2 di un numero complesso -IMPOWER = COMP.POTENZA ## Restituisce il numero complesso elevato a una potenza intera -IMPRODUCT = COMP.PRODOTTO ## Restituisce il prodotto di numeri complessi compresi tra 2 e 29 -IMREAL = COMP.PARTE.REALE ## Restituisce il coefficiente reale di un numero complesso -IMSIN = COMP.SEN ## Restituisce il seno di un numero complesso -IMSQRT = COMP.RADQ ## Restituisce la radice quadrata di un numero complesso -IMSUB = COMP.DIFF ## Restituisce la differenza fra due numeri complessi -IMSUM = COMP.SOMMA ## Restituisce la somma di numeri complessi -OCT2BIN = OCT.BINARIO ## Converte un numero ottale in binario -OCT2DEC = OCT.DECIMALE ## Converte un numero ottale in decimale -OCT2HEX = OCT.HEX ## Converte un numero ottale in esadecimale - - -## -## Financial functions Funzioni finanziarie -## -ACCRINT = INT.MATURATO.PER ## Restituisce l'interesse maturato di un titolo che paga interessi periodici -ACCRINTM = INT.MATURATO.SCAD ## Restituisce l'interesse maturato di un titolo che paga interessi alla scadenza -AMORDEGRC = AMMORT.DEGR ## Restituisce l'ammortamento per ogni periodo contabile utilizzando un coefficiente di ammortamento -AMORLINC = AMMORT.PER ## Restituisce l'ammortamento per ogni periodo contabile -COUPDAYBS = GIORNI.CED.INIZ.LIQ ## Restituisce il numero dei giorni che vanno dall'inizio del periodo di durata della cedola alla data di liquidazione -COUPDAYS = GIORNI.CED ## Restituisce il numero dei giorni relativi al periodo della cedola che contiene la data di liquidazione -COUPDAYSNC = GIORNI.CED.NUOVA ## Restituisce il numero di giorni che vanno dalla data di liquidazione alla data della cedola successiva -COUPNCD = DATA.CED.SUCC ## Restituisce un numero che rappresenta la data della cedola successiva alla data di liquidazione -COUPNUM = NUM.CED ## Restituisce il numero di cedole pagabili fra la data di liquidazione e la data di scadenza -COUPPCD = DATA.CED.PREC ## Restituisce un numero che rappresenta la data della cedola precedente alla data di liquidazione -CUMIPMT = INT.CUMUL ## Restituisce l'interesse cumulativo pagato fra due periodi -CUMPRINC = CAP.CUM ## Restituisce il capitale cumulativo pagato per estinguere un debito fra due periodi -DB = DB ## Restituisce l'ammortamento di un bene per un periodo specificato utilizzando il metodo di ammortamento a quote fisse decrescenti -DDB = AMMORT ## Restituisce l'ammortamento di un bene per un periodo specificato utilizzando il metodo di ammortamento a doppie quote decrescenti o altri metodi specificati -DISC = TASSO.SCONTO ## Restituisce il tasso di sconto per un titolo -DOLLARDE = VALUTA.DEC ## Converte un prezzo valuta, espresso come frazione, in prezzo valuta, espresso come numero decimale -DOLLARFR = VALUTA.FRAZ ## Converte un prezzo valuta, espresso come numero decimale, in prezzo valuta, espresso come frazione -DURATION = DURATA ## Restituisce la durata annuale di un titolo con i pagamenti di interesse periodico -EFFECT = EFFETTIVO ## Restituisce l'effettivo tasso di interesse annuo -FV = VAL.FUT ## Restituisce il valore futuro di un investimento -FVSCHEDULE = VAL.FUT.CAPITALE ## Restituisce il valore futuro di un capitale iniziale dopo aver applicato una serie di tassi di interesse composti -INTRATE = TASSO.INT ## Restituisce il tasso di interesse per un titolo interamente investito -IPMT = INTERESSI ## Restituisce il valore degli interessi per un investimento relativo a un periodo specifico -IRR = TIR.COST ## Restituisce il tasso di rendimento interno per una serie di flussi di cassa -ISPMT = INTERESSE.RATA ## Calcola l'interesse di un investimento pagato durante un periodo specifico -MDURATION = DURATA.M ## Restituisce la durata Macauley modificata per un titolo con un valore presunto di € 100 -MIRR = TIR.VAR ## Restituisce il tasso di rendimento interno in cui i flussi di cassa positivi e negativi sono finanziati a tassi differenti -NOMINAL = NOMINALE ## Restituisce il tasso di interesse nominale annuale -NPER = NUM.RATE ## Restituisce un numero di periodi relativi a un investimento -NPV = VAN ## Restituisce il valore attuale netto di un investimento basato su una serie di flussi di cassa periodici e sul tasso di sconto -ODDFPRICE = PREZZO.PRIMO.IRR ## Restituisce il prezzo di un titolo dal valore nominale di € 100 avente il primo periodo di durata irregolare -ODDFYIELD = REND.PRIMO.IRR ## Restituisce il rendimento di un titolo avente il primo periodo di durata irregolare -ODDLPRICE = PREZZO.ULTIMO.IRR ## Restituisce il prezzo di un titolo dal valore nominale di € 100 avente l'ultimo periodo di durata irregolare -ODDLYIELD = REND.ULTIMO.IRR ## Restituisce il rendimento di un titolo avente l'ultimo periodo di durata irregolare -PMT = RATA ## Restituisce il pagamento periodico di una rendita annua -PPMT = P.RATA ## Restituisce il pagamento sul capitale di un investimento per un dato periodo -PRICE = PREZZO ## Restituisce il prezzo di un titolo dal valore nominale di € 100 che paga interessi periodici -PRICEDISC = PREZZO.SCONT ## Restituisce il prezzo di un titolo scontato dal valore nominale di € 100 -PRICEMAT = PREZZO.SCAD ## Restituisce il prezzo di un titolo dal valore nominale di € 100 che paga gli interessi alla scadenza -PV = VA ## Restituisce il valore attuale di un investimento -RATE = TASSO ## Restituisce il tasso di interesse per un periodo di un'annualità -RECEIVED = RICEV.SCAD ## Restituisce l'ammontare ricevuto alla scadenza di un titolo interamente investito -SLN = AMMORT.COST ## Restituisce l'ammortamento a quote costanti di un bene per un singolo periodo -SYD = AMMORT.ANNUO ## Restituisce l'ammortamento a somma degli anni di un bene per un periodo specificato -TBILLEQ = BOT.EQUIV ## Restituisce il rendimento equivalente ad un'obbligazione per un Buono ordinario del Tesoro -TBILLPRICE = BOT.PREZZO ## Restituisce il prezzo di un Buono del Tesoro dal valore nominale di € 100 -TBILLYIELD = BOT.REND ## Restituisce il rendimento di un Buono del Tesoro -VDB = AMMORT.VAR ## Restituisce l'ammortamento di un bene per un periodo specificato o parziale utilizzando il metodo a doppie quote proporzionali ai valori residui -XIRR = TIR.X ## Restituisce il tasso di rendimento interno di un impiego di flussi di cassa -XNPV = VAN.X ## Restituisce il valore attuale netto di un impiego di flussi di cassa non necessariamente periodici -YIELD = REND ## Restituisce il rendimento di un titolo che frutta interessi periodici -YIELDDISC = REND.TITOLI.SCONT ## Restituisce il rendimento annuale di un titolo scontato, ad esempio un Buono del Tesoro -YIELDMAT = REND.SCAD ## Restituisce il rendimento annuo di un titolo che paga interessi alla scadenza - - -## -## Information functions Funzioni relative alle informazioni -## -CELL = CELLA ## Restituisce le informazioni sulla formattazione, la posizione o i contenuti di una cella -ERROR.TYPE = ERRORE.TIPO ## Restituisce un numero che corrisponde a un tipo di errore -INFO = INFO ## Restituisce le informazioni sull'ambiente operativo corrente -ISBLANK = VAL.VUOTO ## Restituisce VERO se il valore è vuoto -ISERR = VAL.ERR ## Restituisce VERO se il valore è un valore di errore qualsiasi tranne #N/D -ISERROR = VAL.ERRORE ## Restituisce VERO se il valore è un valore di errore qualsiasi -ISEVEN = VAL.PARI ## Restituisce VERO se il numero è pari -ISLOGICAL = VAL.LOGICO ## Restituisce VERO se il valore è un valore logico -ISNA = VAL.NON.DISP ## Restituisce VERO se il valore è un valore di errore #N/D -ISNONTEXT = VAL.NON.TESTO ## Restituisce VERO se il valore non è in formato testo -ISNUMBER = VAL.NUMERO ## Restituisce VERO se il valore è un numero -ISODD = VAL.DISPARI ## Restituisce VERO se il numero è dispari -ISREF = VAL.RIF ## Restituisce VERO se il valore è un riferimento -ISTEXT = VAL.TESTO ## Restituisce VERO se il valore è in formato testo -N = NUM ## Restituisce un valore convertito in numero -NA = NON.DISP ## Restituisce il valore di errore #N/D -TYPE = TIPO ## Restituisce un numero che indica il tipo di dati relativi a un valore - - -## -## Logical functions Funzioni logiche -## -AND = E ## Restituisce VERO se tutti gli argomenti sono VERO -FALSE = FALSO ## Restituisce il valore logico FALSO -IF = SE ## Specifica un test logico da eseguire -IFERROR = SE.ERRORE ## Restituisce un valore specificato se una formula fornisce un errore come risultato; in caso contrario, restituisce il risultato della formula -NOT = NON ## Inverte la logica degli argomenti -OR = O ## Restituisce VERO se un argomento qualsiasi è VERO -TRUE = VERO ## Restituisce il valore logico VERO - - -## -## Lookup and reference functions Funzioni di ricerca e di riferimento -## -ADDRESS = INDIRIZZO ## Restituisce un riferimento come testo in una singola cella di un foglio di lavoro -AREAS = AREE ## Restituisce il numero di aree in un riferimento -CHOOSE = SCEGLI ## Sceglie un valore da un elenco di valori -COLUMN = RIF.COLONNA ## Restituisce il numero di colonna di un riferimento -COLUMNS = COLONNE ## Restituisce il numero di colonne in un riferimento -HLOOKUP = CERCA.ORIZZ ## Effettua una ricerca nella riga superiore di una matrice e restituisce il valore della cella specificata -HYPERLINK = COLLEG.IPERTESTUALE ## Crea un collegamento che apre un documento memorizzato in un server di rete, una rete Intranet o Internet -INDEX = INDICE ## Utilizza un indice per scegliere un valore da un riferimento o da una matrice -INDIRECT = INDIRETTO ## Restituisce un riferimento specificato da un valore testo -LOOKUP = CERCA ## Ricerca i valori in un vettore o in una matrice -MATCH = CONFRONTA ## Ricerca i valori in un riferimento o in una matrice -OFFSET = SCARTO ## Restituisce uno scarto di riferimento da un riferimento dato -ROW = RIF.RIGA ## Restituisce il numero di riga di un riferimento -ROWS = RIGHE ## Restituisce il numero delle righe in un riferimento -RTD = DATITEMPOREALE ## Recupera dati in tempo reale da un programma che supporta l'automazione COM (automazione: Metodo per utilizzare gli oggetti di un'applicazione da un'altra applicazione o da un altro strumento di sviluppo. Precedentemente nota come automazione OLE, l'automazione è uno standard del settore e una caratteristica del modello COM (Component Object Model).) -TRANSPOSE = MATR.TRASPOSTA ## Restituisce la trasposizione di una matrice -VLOOKUP = CERCA.VERT ## Effettua una ricerca nella prima colonna di una matrice e si sposta attraverso la riga per restituire il valore di una cella - - -## -## Math and trigonometry functions Funzioni matematiche e trigonometriche -## -ABS = ASS ## Restituisce il valore assoluto di un numero. -ACOS = ARCCOS ## Restituisce l'arcocoseno di un numero -ACOSH = ARCCOSH ## Restituisce l'inverso del coseno iperbolico di un numero -ASIN = ARCSEN ## Restituisce l'arcoseno di un numero -ASINH = ARCSENH ## Restituisce l'inverso del seno iperbolico di un numero -ATAN = ARCTAN ## Restituisce l'arcotangente di un numero -ATAN2 = ARCTAN.2 ## Restituisce l'arcotangente delle coordinate x e y specificate -ATANH = ARCTANH ## Restituisce l'inverso della tangente iperbolica di un numero -CEILING = ARROTONDA.ECCESSO ## Arrotonda un numero per eccesso all'intero più vicino o al multiplo più vicino a peso -COMBIN = COMBINAZIONE ## Restituisce il numero di combinazioni possibili per un numero assegnato di elementi -COS = COS ## Restituisce il coseno dell'angolo specificato -COSH = COSH ## Restituisce il coseno iperbolico di un numero -DEGREES = GRADI ## Converte i radianti in gradi -EVEN = PARI ## Arrotonda il valore assoluto di un numero per eccesso al più vicino intero pari -EXP = ESP ## Restituisce il numero e elevato alla potenza di num -FACT = FATTORIALE ## Restituisce il fattoriale di un numero -FACTDOUBLE = FATT.DOPPIO ## Restituisce il fattoriale doppio di un numero -FLOOR = ARROTONDA.DIFETTO ## Arrotonda un numero per difetto al multiplo più vicino a zero -GCD = MCD ## Restituisce il massimo comune divisore -INT = INT ## Arrotonda un numero per difetto al numero intero più vicino -LCM = MCM ## Restituisce il minimo comune multiplo -LN = LN ## Restituisce il logaritmo naturale di un numero -LOG = LOG ## Restituisce il logaritmo di un numero in una specificata base -LOG10 = LOG10 ## Restituisce il logaritmo in base 10 di un numero -MDETERM = MATR.DETERM ## Restituisce il determinante di una matrice -MINVERSE = MATR.INVERSA ## Restituisce l'inverso di una matrice -MMULT = MATR.PRODOTTO ## Restituisce il prodotto di due matrici -MOD = RESTO ## Restituisce il resto della divisione -MROUND = ARROTONDA.MULTIPLO ## Restituisce un numero arrotondato al multiplo desiderato -MULTINOMIAL = MULTINOMIALE ## Restituisce il multinomiale di un insieme di numeri -ODD = DISPARI ## Arrotonda un numero per eccesso al più vicino intero dispari -PI = PI.GRECO ## Restituisce il valore di pi greco -POWER = POTENZA ## Restituisce il risultato di un numero elevato a potenza -PRODUCT = PRODOTTO ## Moltiplica i suoi argomenti -QUOTIENT = QUOZIENTE ## Restituisce la parte intera di una divisione -RADIANS = RADIANTI ## Converte i gradi in radianti -RAND = CASUALE ## Restituisce un numero casuale compreso tra 0 e 1 -RANDBETWEEN = CASUALE.TRA ## Restituisce un numero casuale compreso tra i numeri specificati -ROMAN = ROMANO ## Restituisce il numero come numero romano sotto forma di testo -ROUND = ARROTONDA ## Arrotonda il numero al numero di cifre specificato -ROUNDDOWN = ARROTONDA.PER.DIF ## Arrotonda il valore assoluto di un numero per difetto -ROUNDUP = ARROTONDA.PER.ECC ## Arrotonda il valore assoluto di un numero per eccesso -SERIESSUM = SOMMA.SERIE ## Restituisce la somma di una serie di potenze in base alla formula -SIGN = SEGNO ## Restituisce il segno di un numero -SIN = SEN ## Restituisce il seno di un dato angolo -SINH = SENH ## Restituisce il seno iperbolico di un numero -SQRT = RADQ ## Restituisce una radice quadrata -SQRTPI = RADQ.PI.GRECO ## Restituisce la radice quadrata di un numero (numero * pi greco) -SUBTOTAL = SUBTOTALE ## Restituisce un subtotale in un elenco o in un database -SUM = SOMMA ## Somma i suoi argomenti -SUMIF = SOMMA.SE ## Somma le celle specificate da un dato criterio -SUMIFS = SOMMA.PIÙ.SE ## Somma le celle in un intervallo che soddisfano più criteri -SUMPRODUCT = MATR.SOMMA.PRODOTTO ## Restituisce la somma dei prodotti dei componenti corrispondenti della matrice -SUMSQ = SOMMA.Q ## Restituisce la somma dei quadrati degli argomenti -SUMX2MY2 = SOMMA.DIFF.Q ## Restituisce la somma della differenza dei quadrati dei corrispondenti elementi in due matrici -SUMX2PY2 = SOMMA.SOMMA.Q ## Restituisce la somma della somma dei quadrati dei corrispondenti elementi in due matrici -SUMXMY2 = SOMMA.Q.DIFF ## Restituisce la somma dei quadrati delle differenze dei corrispondenti elementi in due matrici -TAN = TAN ## Restituisce la tangente di un numero -TANH = TANH ## Restituisce la tangente iperbolica di un numero -TRUNC = TRONCA ## Tronca la parte decimale di un numero - - -## -## Statistical functions Funzioni statistiche -## -AVEDEV = MEDIA.DEV ## Restituisce la media delle deviazioni assolute delle coordinate rispetto alla loro media -AVERAGE = MEDIA ## Restituisce la media degli argomenti -AVERAGEA = MEDIA.VALORI ## Restituisce la media degli argomenti, inclusi i numeri, il testo e i valori logici -AVERAGEIF = MEDIA.SE ## Restituisce la media aritmetica di tutte le celle in un intervallo che soddisfano un determinato criterio -AVERAGEIFS = MEDIA.PIÙ.SE ## Restituisce la media aritmetica di tutte le celle che soddisfano più criteri -BETADIST = DISTRIB.BETA ## Restituisce la funzione di distribuzione cumulativa beta -BETAINV = INV.BETA ## Restituisce l'inverso della funzione di distribuzione cumulativa per una distribuzione beta specificata -BINOMDIST = DISTRIB.BINOM ## Restituisce la distribuzione binomiale per il termine individuale -CHIDIST = DISTRIB.CHI ## Restituisce la probabilità a una coda per la distribuzione del chi quadrato -CHIINV = INV.CHI ## Restituisce l'inverso della probabilità ad una coda per la distribuzione del chi quadrato -CHITEST = TEST.CHI ## Restituisce il test per l'indipendenza -CONFIDENCE = CONFIDENZA ## Restituisce l'intervallo di confidenza per una popolazione -CORREL = CORRELAZIONE ## Restituisce il coefficiente di correlazione tra due insiemi di dati -COUNT = CONTA.NUMERI ## Conta la quantità di numeri nell'elenco di argomenti -COUNTA = CONTA.VALORI ## Conta il numero di valori nell'elenco di argomenti -COUNTBLANK = CONTA.VUOTE ## Conta il numero di celle vuote all'interno di un intervallo -COUNTIF = CONTA.SE ## Conta il numero di celle all'interno di un intervallo che soddisfa i criteri specificati -COUNTIFS = CONTA.PIÙ.SE ## Conta il numero di celle in un intervallo che soddisfano più criteri. -COVAR = COVARIANZA ## Calcola la covarianza, la media dei prodotti delle deviazioni accoppiate -CRITBINOM = CRIT.BINOM ## Restituisce il più piccolo valore per il quale la distribuzione cumulativa binomiale risulta maggiore o uguale ad un valore di criterio -DEVSQ = DEV.Q ## Restituisce la somma dei quadrati delle deviazioni -EXPONDIST = DISTRIB.EXP ## Restituisce la distribuzione esponenziale -FDIST = DISTRIB.F ## Restituisce la distribuzione di probabilità F -FINV = INV.F ## Restituisce l'inverso della distribuzione della probabilità F -FISHER = FISHER ## Restituisce la trasformazione di Fisher -FISHERINV = INV.FISHER ## Restituisce l'inverso della trasformazione di Fisher -FORECAST = PREVISIONE ## Restituisce i valori lungo una tendenza lineare -FREQUENCY = FREQUENZA ## Restituisce la distribuzione di frequenza come matrice verticale -FTEST = TEST.F ## Restituisce il risultato di un test F -GAMMADIST = DISTRIB.GAMMA ## Restituisce la distribuzione gamma -GAMMAINV = INV.GAMMA ## Restituisce l'inverso della distribuzione cumulativa gamma -GAMMALN = LN.GAMMA ## Restituisce il logaritmo naturale della funzione gamma, G(x) -GEOMEAN = MEDIA.GEOMETRICA ## Restituisce la media geometrica -GROWTH = CRESCITA ## Restituisce i valori lungo una linea di tendenza esponenziale -HARMEAN = MEDIA.ARMONICA ## Restituisce la media armonica -HYPGEOMDIST = DISTRIB.IPERGEOM ## Restituisce la distribuzione ipergeometrica -INTERCEPT = INTERCETTA ## Restituisce l'intercetta della retta di regressione lineare -KURT = CURTOSI ## Restituisce la curtosi di un insieme di dati -LARGE = GRANDE ## Restituisce il k-esimo valore più grande in un insieme di dati -LINEST = REGR.LIN ## Restituisce i parametri di una tendenza lineare -LOGEST = REGR.LOG ## Restituisce i parametri di una linea di tendenza esponenziale -LOGINV = INV.LOGNORM ## Restituisce l'inverso di una distribuzione lognormale -LOGNORMDIST = DISTRIB.LOGNORM ## Restituisce la distribuzione lognormale cumulativa -MAX = MAX ## Restituisce il valore massimo in un elenco di argomenti -MAXA = MAX.VALORI ## Restituisce il valore massimo in un elenco di argomenti, inclusi i numeri, il testo e i valori logici -MEDIAN = MEDIANA ## Restituisce la mediana dei numeri specificati -MIN = MIN ## Restituisce il valore minimo in un elenco di argomenti -MINA = MIN.VALORI ## Restituisce il più piccolo valore in un elenco di argomenti, inclusi i numeri, il testo e i valori logici -MODE = MODA ## Restituisce il valore più comune in un insieme di dati -NEGBINOMDIST = DISTRIB.BINOM.NEG ## Restituisce la distribuzione binomiale negativa -NORMDIST = DISTRIB.NORM ## Restituisce la distribuzione cumulativa normale -NORMINV = INV.NORM ## Restituisce l'inverso della distribuzione cumulativa normale standard -NORMSDIST = DISTRIB.NORM.ST ## Restituisce la distribuzione cumulativa normale standard -NORMSINV = INV.NORM.ST ## Restituisce l'inverso della distribuzione cumulativa normale -PEARSON = PEARSON ## Restituisce il coefficiente del momento di correlazione di Pearson -PERCENTILE = PERCENTILE ## Restituisce il k-esimo dato percentile di valori in un intervallo -PERCENTRANK = PERCENT.RANGO ## Restituisce il rango di un valore in un insieme di dati come percentuale -PERMUT = PERMUTAZIONE ## Restituisce il numero delle permutazioni per un determinato numero di oggetti -POISSON = POISSON ## Restituisce la distribuzione di Poisson -PROB = PROBABILITÀ ## Calcola la probabilità che dei valori in un intervallo siano compresi tra due limiti -QUARTILE = QUARTILE ## Restituisce il quartile di un insieme di dati -RANK = RANGO ## Restituisce il rango di un numero in un elenco di numeri -RSQ = RQ ## Restituisce la radice quadrata del coefficiente di momento di correlazione di Pearson -SKEW = ASIMMETRIA ## Restituisce il grado di asimmetria di una distribuzione -SLOPE = PENDENZA ## Restituisce la pendenza di una retta di regressione lineare -SMALL = PICCOLO ## Restituisce il k-esimo valore più piccolo in un insieme di dati -STANDARDIZE = NORMALIZZA ## Restituisce un valore normalizzato -STDEV = DEV.ST ## Restituisce una stima della deviazione standard sulla base di un campione -STDEVA = DEV.ST.VALORI ## Restituisce una stima della deviazione standard sulla base di un campione, inclusi i numeri, il testo e i valori logici -STDEVP = DEV.ST.POP ## Calcola la deviazione standard sulla base di un'intera popolazione -STDEVPA = DEV.ST.POP.VALORI ## Calcola la deviazione standard sulla base sull'intera popolazione, inclusi i numeri, il testo e i valori logici -STEYX = ERR.STD.YX ## Restituisce l'errore standard del valore previsto per y per ogni valore x nella regressione -TDIST = DISTRIB.T ## Restituisce la distribuzione t di Student -TINV = INV.T ## Restituisce l'inversa della distribuzione t di Student -TREND = TENDENZA ## Restituisce i valori lungo una linea di tendenza lineare -TRIMMEAN = MEDIA.TRONCATA ## Restituisce la media della parte interna di un insieme di dati -TTEST = TEST.T ## Restituisce la probabilità associata ad un test t di Student -VAR = VAR ## Stima la varianza sulla base di un campione -VARA = VAR.VALORI ## Stima la varianza sulla base di un campione, inclusi i numeri, il testo e i valori logici -VARP = VAR.POP ## Calcola la varianza sulla base dell'intera popolazione -VARPA = VAR.POP.VALORI ## Calcola la deviazione standard sulla base sull'intera popolazione, inclusi i numeri, il testo e i valori logici -WEIBULL = WEIBULL ## Restituisce la distribuzione di Weibull -ZTEST = TEST.Z ## Restituisce il valore di probabilità a una coda per un test z - - -## -## Text functions Funzioni di testo -## -ASC = ASC ## Modifica le lettere inglesi o il katakana a doppio byte all'interno di una stringa di caratteri in caratteri a singolo byte -BAHTTEXT = BAHTTESTO ## Converte un numero in testo, utilizzando il formato valuta ß (baht) -CHAR = CODICE.CARATT ## Restituisce il carattere specificato dal numero di codice -CLEAN = LIBERA ## Elimina dal testo tutti i caratteri che non è possibile stampare -CODE = CODICE ## Restituisce il codice numerico del primo carattere di una stringa di testo -CONCATENATE = CONCATENA ## Unisce diversi elementi di testo in un unico elemento di testo -DOLLAR = VALUTA ## Converte un numero in testo, utilizzando il formato valuta € (euro) -EXACT = IDENTICO ## Verifica se due valori di testo sono uguali -FIND = TROVA ## Rileva un valore di testo all'interno di un altro (distinzione tra maiuscole e minuscole) -FINDB = TROVA.B ## Rileva un valore di testo all'interno di un altro (distinzione tra maiuscole e minuscole) -FIXED = FISSO ## Formatta un numero come testo con un numero fisso di decimali -JIS = ORDINAMENTO.JIS ## Modifica le lettere inglesi o i caratteri katakana a byte singolo all'interno di una stringa di caratteri in caratteri a byte doppio. -LEFT = SINISTRA ## Restituisce il carattere più a sinistra di un valore di testo -LEFTB = SINISTRA.B ## Restituisce il carattere più a sinistra di un valore di testo -LEN = LUNGHEZZA ## Restituisce il numero di caratteri di una stringa di testo -LENB = LUNB ## Restituisce il numero di caratteri di una stringa di testo -LOWER = MINUSC ## Converte il testo in lettere minuscole -MID = MEDIA ## Restituisce un numero specifico di caratteri di una stringa di testo a partire dalla posizione specificata -MIDB = MEDIA.B ## Restituisce un numero specifico di caratteri di una stringa di testo a partire dalla posizione specificata -PHONETIC = FURIGANA ## Estrae i caratteri fonetici (furigana) da una stringa di testo. -PROPER = MAIUSC.INIZ ## Converte in maiuscolo la prima lettera di ogni parola di un valore di testo -REPLACE = RIMPIAZZA ## Sostituisce i caratteri all'interno di un testo -REPLACEB = SOSTITUISCI.B ## Sostituisce i caratteri all'interno di un testo -REPT = RIPETI ## Ripete un testo per un dato numero di volte -RIGHT = DESTRA ## Restituisce il carattere più a destra di un valore di testo -RIGHTB = DESTRA.B ## Restituisce il carattere più a destra di un valore di testo -SEARCH = RICERCA ## Rileva un valore di testo all'interno di un altro (non è sensibile alle maiuscole e minuscole) -SEARCHB = CERCA.B ## Rileva un valore di testo all'interno di un altro (non è sensibile alle maiuscole e minuscole) -SUBSTITUTE = SOSTITUISCI ## Sostituisce il nuovo testo al testo contenuto in una stringa -T = T ## Converte gli argomenti in testo -TEXT = TESTO ## Formatta un numero e lo converte in testo -TRIM = ANNULLA.SPAZI ## Elimina gli spazi dal testo -UPPER = MAIUSC ## Converte il testo in lettere maiuscole -VALUE = VALORE ## Converte un argomento di testo in numero diff --git a/application/third_party/PHPExcel/locale/nl/config b/application/third_party/PHPExcel/locale/nl/config deleted file mode 100644 index 48dcc15b..00000000 --- a/application/third_party/PHPExcel/locale/nl/config +++ /dev/null @@ -1,47 +0,0 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Settings -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## - - -ArgumentSeparator = ; - - -## -## (For future use) -## -currencySymbol = € - - -## -## Excel Error Codes (For future use) -## -NULL = #LEEG! -DIV0 = #DEEL/0! -VALUE = #WAARDE! -REF = #VERW! -NAME = #NAAM? -NUM = #GETAL! -NA = #N/B diff --git a/application/third_party/PHPExcel/locale/nl/functions b/application/third_party/PHPExcel/locale/nl/functions deleted file mode 100644 index 573600ac..00000000 --- a/application/third_party/PHPExcel/locale/nl/functions +++ /dev/null @@ -1,438 +0,0 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Calculation -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ -## -## - - -## -## Add-in and Automation functions Automatiseringsfuncties en functies in invoegtoepassingen -## -GETPIVOTDATA = DRAAITABEL.OPHALEN ## Geeft gegevens uit een draaitabelrapport als resultaat - - -## -## Cube functions Kubusfuncties -## -CUBEKPIMEMBER = KUBUSKPILID ## Retourneert de naam, eigenschap en waarde van een KPI (prestatie-indicator) en geeft de naam en de eigenschap in de cel weer. Een KPI is een meetbare waarde, zoals de maandelijkse brutowinst of de omzet per kwartaal per werknemer, die wordt gebruikt om de prestaties van een organisatie te bewaken -CUBEMEMBER = KUBUSLID ## Retourneert een lid of tupel in een kubushiërarchie. Wordt gebruikt om te controleren of het lid of de tupel in de kubus aanwezig is -CUBEMEMBERPROPERTY = KUBUSLIDEIGENSCHAP ## Retourneert de waarde van een lideigenschap in de kubus. Wordt gebruikt om te controleren of de lidnaam in de kubus bestaat en retourneert de opgegeven eigenschap voor dit lid -CUBERANKEDMEMBER = KUBUSGERANGCHIKTLID ## Retourneert het zoveelste, gerangschikte lid in een set. Wordt gebruikt om een of meer elementen in een set te retourneren, zoals de tien beste verkopers of de tien beste studenten -CUBESET = KUBUSSET ## Definieert een berekende set leden of tupels door een ingestelde expressie naar de kubus op de server te sturen, alwaar de set wordt gemaakt en vervolgens wordt geretourneerd naar Microsoft Office Excel -CUBESETCOUNT = KUBUSSETAANTAL ## Retourneert het aantal onderdelen in een set -CUBEVALUE = KUBUSWAARDE ## Retourneert een samengestelde waarde van een kubus - - -## -## Database functions Databasefuncties -## -DAVERAGE = DBGEMIDDELDE ## Berekent de gemiddelde waarde in geselecteerde databasegegevens -DCOUNT = DBAANTAL ## Telt de cellen met getallen in een database -DCOUNTA = DBAANTALC ## Telt de niet-lege cellen in een database -DGET = DBLEZEN ## Retourneert één record dat voldoet aan de opgegeven criteria uit een database -DMAX = DBMAX ## Retourneert de maximumwaarde in de geselecteerde databasegegevens -DMIN = DBMIN ## Retourneert de minimumwaarde in de geselecteerde databasegegevens -DPRODUCT = DBPRODUCT ## Vermenigvuldigt de waarden in een bepaald veld van de records die voldoen aan de criteria in een database -DSTDEV = DBSTDEV ## Maakt een schatting van de standaarddeviatie op basis van een steekproef uit geselecteerde databasegegevens -DSTDEVP = DBSTDEVP ## Berekent de standaarddeviatie op basis van de volledige populatie van geselecteerde databasegegevens -DSUM = DBSOM ## Telt de getallen uit een kolom records in de database op die voldoen aan de criteria -DVAR = DBVAR ## Maakt een schatting van de variantie op basis van een steekproef uit geselecteerde databasegegevens -DVARP = DBVARP ## Berekent de variantie op basis van de volledige populatie van geselecteerde databasegegevens - - -## -## Date and time functions Datum- en tijdfuncties -## -DATE = DATUM ## Geeft als resultaat het seriële getal van een opgegeven datum -DATEVALUE = DATUMWAARDE ## Converteert een datum in de vorm van tekst naar een serieel getal -DAY = DAG ## Converteert een serieel getal naar een dag van de maand -DAYS360 = DAGEN360 ## Berekent het aantal dagen tussen twee datums op basis van een jaar met 360 dagen -EDATE = ZELFDE.DAG ## Geeft als resultaat het seriële getal van een datum die het opgegeven aantal maanden voor of na de begindatum ligt -EOMONTH = LAATSTE.DAG ## Geeft als resultaat het seriële getal van de laatste dag van de maand voor of na het opgegeven aantal maanden -HOUR = UUR ## Converteert een serieel getal naar uren -MINUTE = MINUUT ## Converteert een serieel naar getal minuten -MONTH = MAAND ## Converteert een serieel getal naar een maand -NETWORKDAYS = NETTO.WERKDAGEN ## Geeft als resultaat het aantal hele werkdagen tussen twee datums -NOW = NU ## Geeft als resultaat het seriële getal van de huidige datum en tijd -SECOND = SECONDE ## Converteert een serieel getal naar seconden -TIME = TIJD ## Geeft als resultaat het seriële getal van een bepaald tijdstip -TIMEVALUE = TIJDWAARDE ## Converteert de tijd in de vorm van tekst naar een serieel getal -TODAY = VANDAAG ## Geeft als resultaat het seriële getal van de huidige datum -WEEKDAY = WEEKDAG ## Converteert een serieel getal naar een weekdag -WEEKNUM = WEEKNUMMER ## Converteert een serieel getal naar een weeknummer -WORKDAY = WERKDAG ## Geeft als resultaat het seriële getal van de datum voor of na een bepaald aantal werkdagen -YEAR = JAAR ## Converteert een serieel getal naar een jaar -YEARFRAC = JAAR.DEEL ## Geeft als resultaat het gedeelte van het jaar, uitgedrukt in het aantal hele dagen tussen begindatum en einddatum - - -## -## Engineering functions Technische functies -## -BESSELI = BESSEL.Y ## Geeft als resultaat de gewijzigde Bessel-functie In(x) -BESSELJ = BESSEL.J ## Geeft als resultaat de Bessel-functie Jn(x) -BESSELK = BESSEL.K ## Geeft als resultaat de gewijzigde Bessel-functie Kn(x) -BESSELY = BESSEL.Y ## Geeft als resultaat de gewijzigde Bessel-functie Yn(x) -BIN2DEC = BIN.N.DEC ## Converteert een binair getal naar een decimaal getal -BIN2HEX = BIN.N.HEX ## Converteert een binair getal naar een hexadecimaal getal -BIN2OCT = BIN.N.OCT ## Converteert een binair getal naar een octaal getal -COMPLEX = COMPLEX ## Converteert reële en imaginaire coëfficiënten naar een complex getal -CONVERT = CONVERTEREN ## Converteert een getal in de ene maateenheid naar een getal in een andere maateenheid -DEC2BIN = DEC.N.BIN ## Converteert een decimaal getal naar een binair getal -DEC2HEX = DEC.N.HEX ## Converteert een decimaal getal naar een hexadecimaal getal -DEC2OCT = DEC.N.OCT ## Converteert een decimaal getal naar een octaal getal -DELTA = DELTA ## Test of twee waarden gelijk zijn -ERF = FOUTFUNCTIE ## Geeft als resultaat de foutfunctie -ERFC = FOUT.COMPLEMENT ## Geeft als resultaat de complementaire foutfunctie -GESTEP = GROTER.DAN ## Test of een getal groter is dan de drempelwaarde -HEX2BIN = HEX.N.BIN ## Converteert een hexadecimaal getal naar een binair getal -HEX2DEC = HEX.N.DEC ## Converteert een hexadecimaal getal naar een decimaal getal -HEX2OCT = HEX.N.OCT ## Converteert een hexadecimaal getal naar een octaal getal -IMABS = C.ABS ## Geeft als resultaat de absolute waarde (modulus) van een complex getal -IMAGINARY = C.IM.DEEL ## Geeft als resultaat de imaginaire coëfficiënt van een complex getal -IMARGUMENT = C.ARGUMENT ## Geeft als resultaat het argument thèta, een hoek uitgedrukt in radialen -IMCONJUGATE = C.TOEGEVOEGD ## Geeft als resultaat het complexe toegevoegde getal van een complex getal -IMCOS = C.COS ## Geeft als resultaat de cosinus van een complex getal -IMDIV = C.QUOTIENT ## Geeft als resultaat het quotiënt van twee complexe getallen -IMEXP = C.EXP ## Geeft als resultaat de exponent van een complex getal -IMLN = C.LN ## Geeft als resultaat de natuurlijke logaritme van een complex getal -IMLOG10 = C.LOG10 ## Geeft als resultaat de logaritme met grondtal 10 van een complex getal -IMLOG2 = C.LOG2 ## Geeft als resultaat de logaritme met grondtal 2 van een complex getal -IMPOWER = C.MACHT ## Geeft als resultaat een complex getal dat is verheven tot de macht van een geheel getal -IMPRODUCT = C.PRODUCT ## Geeft als resultaat het product van complexe getallen -IMREAL = C.REEEL.DEEL ## Geeft als resultaat de reële coëfficiënt van een complex getal -IMSIN = C.SIN ## Geeft als resultaat de sinus van een complex getal -IMSQRT = C.WORTEL ## Geeft als resultaat de vierkantswortel van een complex getal -IMSUB = C.VERSCHIL ## Geeft als resultaat het verschil tussen twee complexe getallen -IMSUM = C.SOM ## Geeft als resultaat de som van complexe getallen -OCT2BIN = OCT.N.BIN ## Converteert een octaal getal naar een binair getal -OCT2DEC = OCT.N.DEC ## Converteert een octaal getal naar een decimaal getal -OCT2HEX = OCT.N.HEX ## Converteert een octaal getal naar een hexadecimaal getal - - -## -## Financial functions Financiële functies -## -ACCRINT = SAMENG.RENTE ## Berekent de opgelopen rente voor een waardepapier waarvan de rente periodiek wordt uitgekeerd -ACCRINTM = SAMENG.RENTE.V ## Berekent de opgelopen rente voor een waardepapier waarvan de rente op de vervaldatum wordt uitgekeerd -AMORDEGRC = AMORDEGRC ## Geeft als resultaat de afschrijving voor elke boekingsperiode door een afschrijvingscoëfficiënt toe te passen -AMORLINC = AMORLINC ## Berekent de afschrijving voor elke boekingsperiode -COUPDAYBS = COUP.DAGEN.BB ## Berekent het aantal dagen vanaf het begin van de coupontermijn tot de stortingsdatum -COUPDAYS = COUP.DAGEN ## Geeft als resultaat het aantal dagen in de coupontermijn waarin de stortingsdatum valt -COUPDAYSNC = COUP.DAGEN.VV ## Geeft als resultaat het aantal dagen vanaf de stortingsdatum tot de volgende couponvervaldatum -COUPNCD = COUP.DATUM.NB ## Geeft als resultaat de volgende coupondatum na de stortingsdatum -COUPNUM = COUP.AANTAL ## Geeft als resultaat het aantal coupons dat nog moet worden uitbetaald tussen de stortingsdatum en de vervaldatum -COUPPCD = COUP.DATUM.VB ## Geeft als resultaat de vorige couponvervaldatum vóór de stortingsdatum -CUMIPMT = CUM.RENTE ## Geeft als resultaat de cumulatieve rente die tussen twee termijnen is uitgekeerd -CUMPRINC = CUM.HOOFDSOM ## Geeft als resultaat de cumulatieve hoofdsom van een lening die tussen twee termijnen is terugbetaald -DB = DB ## Geeft als resultaat de afschrijving van activa voor een bepaalde periode met behulp van de 'fixed declining balance'-methode -DDB = DDB ## Geeft als resultaat de afschrijving van activa over een bepaalde termijn met behulp van de 'double declining balance'-methode of een andere methode die u opgeeft -DISC = DISCONTO ## Geeft als resultaat het discontopercentage voor een waardepapier -DOLLARDE = EURO.DE ## Converteert een prijs in euro's, uitgedrukt in een breuk, naar een prijs in euro's, uitgedrukt in een decimaal getal -DOLLARFR = EURO.BR ## Converteert een prijs in euro's, uitgedrukt in een decimaal getal, naar een prijs in euro's, uitgedrukt in een breuk -DURATION = DUUR ## Geeft als resultaat de gewogen gemiddelde looptijd voor een waardepapier met periodieke rentebetalingen -EFFECT = EFFECT.RENTE ## Geeft als resultaat het effectieve jaarlijkse rentepercentage -FV = TW ## Geeft als resultaat de toekomstige waarde van een investering -FVSCHEDULE = TOEK.WAARDE2 ## Geeft als resultaat de toekomstige waarde van een bepaalde hoofdsom na het toepassen van een reeks samengestelde rentepercentages -INTRATE = RENTEPERCENTAGE ## Geeft als resultaat het rentepercentage voor een volgestort waardepapier -IPMT = IBET ## Geeft als resultaat de te betalen rente voor een investering over een bepaalde termijn -IRR = IR ## Geeft als resultaat de interne rentabiliteit voor een reeks cashflows -ISPMT = ISBET ## Geeft als resultaat de rente die is betaald tijdens een bepaalde termijn van een investering -MDURATION = AANG.DUUR ## Geeft als resultaat de aangepaste Macauley-looptijd voor een waardepapier, aangenomen dat de nominale waarde € 100 bedraagt -MIRR = GIR ## Geeft als resultaat de interne rentabiliteit voor een serie cashflows, waarbij voor betalingen een ander rentepercentage geldt dan voor inkomsten -NOMINAL = NOMINALE.RENTE ## Geeft als resultaat het nominale jaarlijkse rentepercentage -NPER = NPER ## Geeft als resultaat het aantal termijnen van een investering -NPV = NHW ## Geeft als resultaat de netto huidige waarde van een investering op basis van een reeks periodieke cashflows en een discontopercentage -ODDFPRICE = AFW.ET.PRIJS ## Geeft als resultaat de prijs per € 100 nominale waarde voor een waardepapier met een afwijkende eerste termijn -ODDFYIELD = AFW.ET.REND ## Geeft als resultaat het rendement voor een waardepapier met een afwijkende eerste termijn -ODDLPRICE = AFW.LT.PRIJS ## Geeft als resultaat de prijs per € 100 nominale waarde voor een waardepapier met een afwijkende laatste termijn -ODDLYIELD = AFW.LT.REND ## Geeft als resultaat het rendement voor een waardepapier met een afwijkende laatste termijn -PMT = BET ## Geeft als resultaat de periodieke betaling voor een annuïteit -PPMT = PBET ## Geeft als resultaat de afbetaling op de hoofdsom voor een bepaalde termijn -PRICE = PRIJS.NOM ## Geeft als resultaat de prijs per € 100 nominale waarde voor een waardepapier waarvan de rente periodiek wordt uitgekeerd -PRICEDISC = PRIJS.DISCONTO ## Geeft als resultaat de prijs per € 100 nominale waarde voor een verdisconteerd waardepapier -PRICEMAT = PRIJS.VERVALDAG ## Geeft als resultaat de prijs per € 100 nominale waarde voor een waardepapier waarvan de rente wordt uitgekeerd op de vervaldatum -PV = HW ## Geeft als resultaat de huidige waarde van een investering -RATE = RENTE ## Geeft als resultaat het periodieke rentepercentage voor een annuïteit -RECEIVED = OPBRENGST ## Geeft als resultaat het bedrag dat op de vervaldatum wordt uitgekeerd voor een volgestort waardepapier -SLN = LIN.AFSCHR ## Geeft als resultaat de lineaire afschrijving van activa over één termijn -SYD = SYD ## Geeft als resultaat de afschrijving van activa over een bepaalde termijn met behulp van de 'Sum-Of-Years-Digits'-methode -TBILLEQ = SCHATK.OBL ## Geeft als resultaat het rendement op schatkistpapier, dat op dezelfde manier wordt berekend als het rendement op obligaties -TBILLPRICE = SCHATK.PRIJS ## Bepaalt de prijs per € 100 nominale waarde voor schatkistpapier -TBILLYIELD = SCHATK.REND ## Berekent het rendement voor schatkistpapier -VDB = VDB ## Geeft als resultaat de afschrijving van activa over een gehele of gedeeltelijke termijn met behulp van de 'declining balance'-methode -XIRR = IR.SCHEMA ## Berekent de interne rentabiliteit voor een betalingsschema van cashflows -XNPV = NHW2 ## Berekent de huidige nettowaarde voor een betalingsschema van cashflows -YIELD = RENDEMENT ## Geeft als resultaat het rendement voor een waardepapier waarvan de rente periodiek wordt uitgekeerd -YIELDDISC = REND.DISCONTO ## Geeft als resultaat het jaarlijkse rendement voor een verdisconteerd waardepapier, bijvoorbeeld schatkistpapier -YIELDMAT = REND.VERVAL ## Geeft als resultaat het jaarlijkse rendement voor een waardepapier waarvan de rente wordt uitgekeerd op de vervaldatum - - -## -## Information functions Informatiefuncties -## -CELL = CEL ## Geeft als resultaat informatie over de opmaak, locatie of inhoud van een cel -ERROR.TYPE = TYPE.FOUT ## Geeft als resultaat een getal dat overeenkomt met een van de foutwaarden van Microsoft Excel -INFO = INFO ## Geeft als resultaat informatie over de huidige besturingsomgeving -ISBLANK = ISLEEG ## Geeft als resultaat WAAR als de waarde leeg is -ISERR = ISFOUT2 ## Geeft als resultaat WAAR als de waarde een foutwaarde is, met uitzondering van #N/B -ISERROR = ISFOUT ## Geeft als resultaat WAAR als de waarde een foutwaarde is -ISEVEN = IS.EVEN ## Geeft als resultaat WAAR als het getal even is -ISLOGICAL = ISLOGISCH ## Geeft als resultaat WAAR als de waarde een logische waarde is -ISNA = ISNB ## Geeft als resultaat WAAR als de waarde de foutwaarde #N/B is -ISNONTEXT = ISGEENTEKST ## Geeft als resultaat WAAR als de waarde geen tekst is -ISNUMBER = ISGETAL ## Geeft als resultaat WAAR als de waarde een getal is -ISODD = IS.ONEVEN ## Geeft als resultaat WAAR als het getal oneven is -ISREF = ISVERWIJZING ## Geeft als resultaat WAAR als de waarde een verwijzing is -ISTEXT = ISTEKST ## Geeft als resultaat WAAR als de waarde tekst is -N = N ## Geeft als resultaat een waarde die is geconverteerd naar een getal -NA = NB ## Geeft als resultaat de foutwaarde #N/B -TYPE = TYPE ## Geeft als resultaat een getal dat het gegevenstype van een waarde aangeeft - - -## -## Logical functions Logische functies -## -AND = EN ## Geeft als resultaat WAAR als alle argumenten WAAR zijn -FALSE = ONWAAR ## Geeft als resultaat de logische waarde ONWAAR -IF = ALS ## Geeft een logische test aan -IFERROR = ALS.FOUT ## Retourneert een waarde die u opgeeft als een formule een fout oplevert, anders wordt het resultaat van de formule geretourneerd -NOT = NIET ## Keert de logische waarde van het argument om -OR = OF ## Geeft als resultaat WAAR als minimaal een van de argumenten WAAR is -TRUE = WAAR ## Geeft als resultaat de logische waarde WAAR - - -## -## Lookup and reference functions Zoek- en verwijzingsfuncties -## -ADDRESS = ADRES ## Geeft als resultaat een verwijzing, in de vorm van tekst, naar één bepaalde cel in een werkblad -AREAS = BEREIKEN ## Geeft als resultaat het aantal bereiken in een verwijzing -CHOOSE = KIEZEN ## Kiest een waarde uit een lijst met waarden -COLUMN = KOLOM ## Geeft als resultaat het kolomnummer van een verwijzing -COLUMNS = KOLOMMEN ## Geeft als resultaat het aantal kolommen in een verwijzing -HLOOKUP = HORIZ.ZOEKEN ## Zoekt in de bovenste rij van een matrix naar een bepaalde waarde en geeft als resultaat de gevonden waarde in de opgegeven cel -HYPERLINK = HYPERLINK ## Maakt een snelkoppeling of een sprong waarmee een document wordt geopend dat is opgeslagen op een netwerkserver, een intranet of op internet -INDEX = INDEX ## Kiest met een index een waarde uit een verwijzing of een matrix -INDIRECT = INDIRECT ## Geeft als resultaat een verwijzing die wordt aangegeven met een tekstwaarde -LOOKUP = ZOEKEN ## Zoekt naar bepaalde waarden in een vector of een matrix -MATCH = VERGELIJKEN ## Zoekt naar bepaalde waarden in een verwijzing of een matrix -OFFSET = VERSCHUIVING ## Geeft als resultaat een nieuwe verwijzing die is verschoven ten opzichte van een bepaalde verwijzing -ROW = RIJ ## Geeft als resultaat het rijnummer van een verwijzing -ROWS = RIJEN ## Geeft als resultaat het aantal rijen in een verwijzing -RTD = RTG ## Haalt realtimegegevens op uit een programma dat COM-automatisering (automatisering: een methode waarmee de ene toepassing objecten van een andere toepassing of ontwikkelprogramma kan besturen. Automatisering werd vroeger OLE-automatisering genoemd. Automatisering is een industrienorm die deel uitmaakt van het Component Object Model (COM).) ondersteunt -TRANSPOSE = TRANSPONEREN ## Geeft als resultaat de getransponeerde van een matrix -VLOOKUP = VERT.ZOEKEN ## Zoekt in de meest linkse kolom van een matrix naar een bepaalde waarde en geeft als resultaat de waarde in de opgegeven cel - - -## -## Math and trigonometry functions Wiskundige en trigonometrische functies -## -ABS = ABS ## Geeft als resultaat de absolute waarde van een getal -ACOS = BOOGCOS ## Geeft als resultaat de boogcosinus van een getal -ACOSH = BOOGCOSH ## Geeft als resultaat de inverse cosinus hyperbolicus van een getal -ASIN = BOOGSIN ## Geeft als resultaat de boogsinus van een getal -ASINH = BOOGSINH ## Geeft als resultaat de inverse sinus hyperbolicus van een getal -ATAN = BOOGTAN ## Geeft als resultaat de boogtangens van een getal -ATAN2 = BOOGTAN2 ## Geeft als resultaat de boogtangens van de x- en y-coördinaten -ATANH = BOOGTANH ## Geeft als resultaat de inverse tangens hyperbolicus van een getal -CEILING = AFRONDEN.BOVEN ## Rondt de absolute waarde van een getal naar boven af op het dichtstbijzijnde gehele getal of het dichtstbijzijnde significante veelvoud -COMBIN = COMBINATIES ## Geeft als resultaat het aantal combinaties voor een bepaald aantal objecten -COS = COS ## Geeft als resultaat de cosinus van een getal -COSH = COSH ## Geeft als resultaat de cosinus hyperbolicus van een getal -DEGREES = GRADEN ## Converteert radialen naar graden -EVEN = EVEN ## Rondt het getal af op het dichtstbijzijnde gehele even getal -EXP = EXP ## Verheft e tot de macht van een bepaald getal -FACT = FACULTEIT ## Geeft als resultaat de faculteit van een getal -FACTDOUBLE = DUBBELE.FACULTEIT ## Geeft als resultaat de dubbele faculteit van een getal -FLOOR = AFRONDEN.BENEDEN ## Rondt de absolute waarde van een getal naar beneden af -GCD = GGD ## Geeft als resultaat de grootste gemene deler -INT = INTEGER ## Rondt een getal naar beneden af op het dichtstbijzijnde gehele getal -LCM = KGV ## Geeft als resultaat het kleinste gemene veelvoud -LN = LN ## Geeft als resultaat de natuurlijke logaritme van een getal -LOG = LOG ## Geeft als resultaat de logaritme met het opgegeven grondtal van een getal -LOG10 = LOG10 ## Geeft als resultaat de logaritme met grondtal 10 van een getal -MDETERM = DETERMINANTMAT ## Geeft als resultaat de determinant van een matrix -MINVERSE = INVERSEMAT ## Geeft als resultaat de inverse van een matrix -MMULT = PRODUCTMAT ## Geeft als resultaat het product van twee matrices -MOD = REST ## Geeft als resultaat het restgetal van een deling -MROUND = AFRONDEN.N.VEELVOUD ## Geeft als resultaat een getal afgerond op het gewenste veelvoud -MULTINOMIAL = MULTINOMIAAL ## Geeft als resultaat de multinomiaalcoëfficiënt van een reeks getallen -ODD = ONEVEN ## Rondt de absolute waarde van het getal naar boven af op het dichtstbijzijnde gehele oneven getal -PI = PI ## Geeft als resultaat de waarde van pi -POWER = MACHT ## Verheft een getal tot een macht -PRODUCT = PRODUCT ## Vermenigvuldigt de argumenten met elkaar -QUOTIENT = QUOTIENT ## Geeft als resultaat de uitkomst van een deling als geheel getal -RADIANS = RADIALEN ## Converteert graden naar radialen -RAND = ASELECT ## Geeft als resultaat een willekeurig getal tussen 0 en 1 -RANDBETWEEN = ASELECTTUSSEN ## Geeft een willekeurig getal tussen de getallen die u hebt opgegeven -ROMAN = ROMEINS ## Converteert een Arabisch getal naar een Romeins getal en geeft het resultaat weer in de vorm van tekst -ROUND = AFRONDEN ## Rondt een getal af op het opgegeven aantal decimalen -ROUNDDOWN = AFRONDEN.NAAR.BENEDEN ## Rondt de absolute waarde van een getal naar beneden af -ROUNDUP = AFRONDEN.NAAR.BOVEN ## Rondt de absolute waarde van een getal naar boven af -SERIESSUM = SOM.MACHTREEKS ## Geeft als resultaat de som van een machtreeks die is gebaseerd op de formule -SIGN = POS.NEG ## Geeft als resultaat het teken van een getal -SIN = SIN ## Geeft als resultaat de sinus van de opgegeven hoek -SINH = SINH ## Geeft als resultaat de sinus hyperbolicus van een getal -SQRT = WORTEL ## Geeft als resultaat de positieve vierkantswortel van een getal -SQRTPI = WORTEL.PI ## Geeft als resultaat de vierkantswortel van (getal * pi) -SUBTOTAL = SUBTOTAAL ## Geeft als resultaat een subtotaal voor een bereik -SUM = SOM ## Telt de argumenten op -SUMIF = SOM.ALS ## Telt de getallen bij elkaar op die voldoen aan een bepaald criterium -SUMIFS = SOMMEN.ALS ## Telt de cellen in een bereik op die aan meerdere criteria voldoen -SUMPRODUCT = SOMPRODUCT ## Geeft als resultaat de som van de producten van de corresponderende matrixelementen -SUMSQ = KWADRATENSOM ## Geeft als resultaat de som van de kwadraten van de argumenten -SUMX2MY2 = SOM.X2MINY2 ## Geeft als resultaat de som van het verschil tussen de kwadraten van corresponderende waarden in twee matrices -SUMX2PY2 = SOM.X2PLUSY2 ## Geeft als resultaat de som van de kwadratensom van corresponderende waarden in twee matrices -SUMXMY2 = SOM.XMINY.2 ## Geeft als resultaat de som van de kwadraten van de verschillen tussen de corresponderende waarden in twee matrices -TAN = TAN ## Geeft als resultaat de tangens van een getal -TANH = TANH ## Geeft als resultaat de tangens hyperbolicus van een getal -TRUNC = GEHEEL ## Kapt een getal af tot een geheel getal - - -## -## Statistical functions Statistische functies -## -AVEDEV = GEM.DEVIATIE ## Geeft als resultaat het gemiddelde van de absolute deviaties van gegevenspunten ten opzichte van hun gemiddelde waarde -AVERAGE = GEMIDDELDE ## Geeft als resultaat het gemiddelde van de argumenten -AVERAGEA = GEMIDDELDEA ## Geeft als resultaat het gemiddelde van de argumenten, inclusief getallen, tekst en logische waarden -AVERAGEIF = GEMIDDELDE.ALS ## Geeft het gemiddelde (rekenkundig gemiddelde) als resultaat van alle cellen in een bereik die voldoen aan de opgegeven criteria -AVERAGEIFS = GEMIDDELDEN.ALS ## Geeft het gemiddelde (rekenkundig gemiddelde) als resultaat van alle cellen die aan meerdere criteria voldoen -BETADIST = BETA.VERD ## Geeft als resultaat de cumulatieve bèta-verdelingsfunctie -BETAINV = BETA.INV ## Geeft als resultaat de inverse van de cumulatieve verdelingsfunctie voor een gegeven bèta-verdeling -BINOMDIST = BINOMIALE.VERD ## Geeft als resultaat de binomiale verdeling -CHIDIST = CHI.KWADRAAT ## Geeft als resultaat de eenzijdige kans van de chi-kwadraatverdeling -CHIINV = CHI.KWADRAAT.INV ## Geeft als resultaat de inverse van een eenzijdige kans van de chi-kwadraatverdeling -CHITEST = CHI.TOETS ## Geeft als resultaat de onafhankelijkheidstoets -CONFIDENCE = BETROUWBAARHEID ## Geeft als resultaat het betrouwbaarheidsinterval van een gemiddelde waarde voor de elementen van een populatie -CORREL = CORRELATIE ## Geeft als resultaat de correlatiecoëfficiënt van twee gegevensverzamelingen -COUNT = AANTAL ## Telt het aantal getallen in de argumentenlijst -COUNTA = AANTALARG ## Telt het aantal waarden in de argumentenlijst -COUNTBLANK = AANTAL.LEGE.CELLEN ## Telt het aantal lege cellen in een bereik -COUNTIF = AANTAL.ALS ## Telt in een bereik het aantal cellen die voldoen aan een bepaald criterium -COUNTIFS = AANTALLEN.ALS ## Telt in een bereik het aantal cellen die voldoen aan meerdere criteria -COVAR = COVARIANTIE ## Geeft als resultaat de covariantie, het gemiddelde van de producten van de gepaarde deviaties -CRITBINOM = CRIT.BINOM ## Geeft als resultaat de kleinste waarde waarvoor de binomiale verdeling kleiner is dan of gelijk is aan het criterium -DEVSQ = DEV.KWAD ## Geeft als resultaat de som van de deviaties in het kwadraat -EXPONDIST = EXPON.VERD ## Geeft als resultaat de exponentiële verdeling -FDIST = F.VERDELING ## Geeft als resultaat de F-verdeling -FINV = F.INVERSE ## Geeft als resultaat de inverse van de F-verdeling -FISHER = FISHER ## Geeft als resultaat de Fisher-transformatie -FISHERINV = FISHER.INV ## Geeft als resultaat de inverse van de Fisher-transformatie -FORECAST = VOORSPELLEN ## Geeft als resultaat een waarde op basis van een lineaire trend -FREQUENCY = FREQUENTIE ## Geeft als resultaat een frequentieverdeling in de vorm van een verticale matrix -FTEST = F.TOETS ## Geeft als resultaat een F-toets -GAMMADIST = GAMMA.VERD ## Geeft als resultaat de gamma-verdeling -GAMMAINV = GAMMA.INV ## Geeft als resultaat de inverse van de cumulatieve gamma-verdeling -GAMMALN = GAMMA.LN ## Geeft als resultaat de natuurlijke logaritme van de gamma-functie, G(x) -GEOMEAN = MEETK.GEM ## Geeft als resultaat het meetkundige gemiddelde -GROWTH = GROEI ## Geeft als resultaat de waarden voor een exponentiële trend -HARMEAN = HARM.GEM ## Geeft als resultaat het harmonische gemiddelde -HYPGEOMDIST = HYPERGEO.VERD ## Geeft als resultaat de hypergeometrische verdeling -INTERCEPT = SNIJPUNT ## Geeft als resultaat het snijpunt van de lineaire regressielijn met de y-as -KURT = KURTOSIS ## Geeft als resultaat de kurtosis van een gegevensverzameling -LARGE = GROOTSTE ## Geeft als resultaat de op k-1 na grootste waarde in een gegevensverzameling -LINEST = LIJNSCH ## Geeft als resultaat de parameters van een lineaire trend -LOGEST = LOGSCH ## Geeft als resultaat de parameters van een exponentiële trend -LOGINV = LOG.NORM.INV ## Geeft als resultaat de inverse van de logaritmische normale verdeling -LOGNORMDIST = LOG.NORM.VERD ## Geeft als resultaat de cumulatieve logaritmische normale verdeling -MAX = MAX ## Geeft als resultaat de maximumwaarde in een lijst met argumenten -MAXA = MAXA ## Geeft als resultaat de maximumwaarde in een lijst met argumenten, inclusief getallen, tekst en logische waarden -MEDIAN = MEDIAAN ## Geeft als resultaat de mediaan van de opgegeven getallen -MIN = MIN ## Geeft als resultaat de minimumwaarde in een lijst met argumenten -MINA = MINA ## Geeft als resultaat de minimumwaarde in een lijst met argumenten, inclusief getallen, tekst en logische waarden -MODE = MODUS ## Geeft als resultaat de meest voorkomende waarde in een gegevensverzameling -NEGBINOMDIST = NEG.BINOM.VERD ## Geeft als resultaat de negatieve binomiaalverdeling -NORMDIST = NORM.VERD ## Geeft als resultaat de cumulatieve normale verdeling -NORMINV = NORM.INV ## Geeft als resultaat de inverse van de cumulatieve standaardnormale verdeling -NORMSDIST = STAND.NORM.VERD ## Geeft als resultaat de cumulatieve standaardnormale verdeling -NORMSINV = STAND.NORM.INV ## Geeft als resultaat de inverse van de cumulatieve normale verdeling -PEARSON = PEARSON ## Geeft als resultaat de correlatiecoëfficiënt van Pearson -PERCENTILE = PERCENTIEL ## Geeft als resultaat het k-de percentiel van waarden in een bereik -PERCENTRANK = PERCENT.RANG ## Geeft als resultaat de positie, in procenten uitgedrukt, van een waarde in de rangorde van een gegevensverzameling -PERMUT = PERMUTATIES ## Geeft als resultaat het aantal permutaties voor een gegeven aantal objecten -POISSON = POISSON ## Geeft als resultaat de Poisson-verdeling -PROB = KANS ## Geeft als resultaat de kans dat waarden zich tussen twee grenzen bevinden -QUARTILE = KWARTIEL ## Geeft als resultaat het kwartiel van een gegevensverzameling -RANK = RANG ## Geeft als resultaat het rangnummer van een getal in een lijst getallen -RSQ = R.KWADRAAT ## Geeft als resultaat het kwadraat van de Pearson-correlatiecoëfficiënt -SKEW = SCHEEFHEID ## Geeft als resultaat de mate van asymmetrie van een verdeling -SLOPE = RICHTING ## Geeft als resultaat de richtingscoëfficiënt van een lineaire regressielijn -SMALL = KLEINSTE ## Geeft als resultaat de op k-1 na kleinste waarde in een gegevensverzameling -STANDARDIZE = NORMALISEREN ## Geeft als resultaat een genormaliseerde waarde -STDEV = STDEV ## Maakt een schatting van de standaarddeviatie op basis van een steekproef -STDEVA = STDEVA ## Maakt een schatting van de standaarddeviatie op basis van een steekproef, inclusief getallen, tekst en logische waarden -STDEVP = STDEVP ## Berekent de standaarddeviatie op basis van de volledige populatie -STDEVPA = STDEVPA ## Berekent de standaarddeviatie op basis van de volledige populatie, inclusief getallen, tekst en logische waarden -STEYX = STAND.FOUT.YX ## Geeft als resultaat de standaardfout in de voorspelde y-waarde voor elke x in een regressie -TDIST = T.VERD ## Geeft als resultaat de Student T-verdeling -TINV = T.INV ## Geeft als resultaat de inverse van de Student T-verdeling -TREND = TREND ## Geeft als resultaat de waarden voor een lineaire trend -TRIMMEAN = GETRIMD.GEM ## Geeft als resultaat het gemiddelde van waarden in een gegevensverzameling -TTEST = T.TOETS ## Geeft als resultaat de kans met behulp van de Student T-toets -VAR = VAR ## Maakt een schatting van de variantie op basis van een steekproef -VARA = VARA ## Maakt een schatting van de variantie op basis van een steekproef, inclusief getallen, tekst en logische waarden -VARP = VARP ## Berekent de variantie op basis van de volledige populatie -VARPA = VARPA ## Berekent de standaarddeviatie op basis van de volledige populatie, inclusief getallen, tekst en logische waarden -WEIBULL = WEIBULL ## Geeft als resultaat de Weibull-verdeling -ZTEST = Z.TOETS ## Geeft als resultaat de eenzijdige kanswaarde van een Z-toets - - -## -## Text functions Tekstfuncties -## -ASC = ASC ## Wijzigt Nederlandse letters of katakanatekens over de volle breedte (dubbel-bytetekens) binnen een tekenreeks in tekens over de halve breedte (enkel-bytetekens) -BAHTTEXT = BAHT.TEKST ## Converteert een getal naar tekst met de valutanotatie ß (baht) -CHAR = TEKEN ## Geeft als resultaat het teken dat hoort bij de opgegeven code -CLEAN = WISSEN.CONTROL ## Verwijdert alle niet-afdrukbare tekens uit een tekst -CODE = CODE ## Geeft als resultaat de numerieke code voor het eerste teken in een tekenreeks -CONCATENATE = TEKST.SAMENVOEGEN ## Voegt verschillende tekstfragmenten samen tot één tekstfragment -DOLLAR = EURO ## Converteert een getal naar tekst met de valutanotatie € (euro) -EXACT = GELIJK ## Controleert of twee tekenreeksen identiek zijn -FIND = VIND.ALLES ## Zoekt een bepaalde tekenreeks in een tekst (waarbij onderscheid wordt gemaakt tussen hoofdletters en kleine letters) -FINDB = VIND.ALLES.B ## Zoekt een bepaalde tekenreeks in een tekst (waarbij onderscheid wordt gemaakt tussen hoofdletters en kleine letters) -FIXED = VAST ## Maakt een getal als tekst met een vast aantal decimalen op -JIS = JIS ## Wijzigt Nederlandse letters of katakanatekens over de halve breedte (enkel-bytetekens) binnen een tekenreeks in tekens over de volle breedte (dubbel-bytetekens) -LEFT = LINKS ## Geeft als resultaat de meest linkse tekens in een tekenreeks -LEFTB = LINKSB ## Geeft als resultaat de meest linkse tekens in een tekenreeks -LEN = LENGTE ## Geeft als resultaat het aantal tekens in een tekenreeks -LENB = LENGTEB ## Geeft als resultaat het aantal tekens in een tekenreeks -LOWER = KLEINE.LETTERS ## Zet tekst om in kleine letters -MID = MIDDEN ## Geeft als resultaat een bepaald aantal tekens van een tekenreeks vanaf de positie die u opgeeft -MIDB = DEELB ## Geeft als resultaat een bepaald aantal tekens van een tekenreeks vanaf de positie die u opgeeft -PHONETIC = FONETISCH ## Haalt de fonetische tekens (furigana) uit een tekenreeks op -PROPER = BEGINLETTERS ## Zet de eerste letter van elk woord in een tekst om in een hoofdletter -REPLACE = VERVANG ## Vervangt tekens binnen een tekst -REPLACEB = VERVANGENB ## Vervangt tekens binnen een tekst -REPT = HERHALING ## Herhaalt een tekst een aantal malen -RIGHT = RECHTS ## Geeft als resultaat de meest rechtse tekens in een tekenreeks -RIGHTB = RECHTSB ## Geeft als resultaat de meest rechtse tekens in een tekenreeks -SEARCH = VIND.SPEC ## Zoekt een bepaalde tekenreeks in een tekst (waarbij geen onderscheid wordt gemaakt tussen hoofdletters en kleine letters) -SEARCHB = VIND.SPEC.B ## Zoekt een bepaalde tekenreeks in een tekst (waarbij geen onderscheid wordt gemaakt tussen hoofdletters en kleine letters) -SUBSTITUTE = SUBSTITUEREN ## Vervangt oude tekst door nieuwe tekst in een tekenreeks -T = T ## Converteert de argumenten naar tekst -TEXT = TEKST ## Maakt een getal op en converteert het getal naar tekst -TRIM = SPATIES.WISSEN ## Verwijdert de spaties uit een tekst -UPPER = HOOFDLETTERS ## Zet tekst om in hoofdletters -VALUE = WAARDE ## Converteert tekst naar een getal diff --git a/application/third_party/PHPExcel/locale/no/config b/application/third_party/PHPExcel/locale/no/config deleted file mode 100644 index bf2d34a7..00000000 --- a/application/third_party/PHPExcel/locale/no/config +++ /dev/null @@ -1,47 +0,0 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Settings -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## - - -ArgumentSeparator = ; - - -## -## (For future use) -## -currencySymbol = kr - - -## -## Excel Error Codes (For future use) -## -NULL = #NULL! -DIV0 = #DIV/0! -VALUE = #VERDI! -REF = #REF! -NAME = #NAVN? -NUM = #NUM! -NA = #I/T diff --git a/application/third_party/PHPExcel/locale/no/functions b/application/third_party/PHPExcel/locale/no/functions deleted file mode 100644 index 10d0a207..00000000 --- a/application/third_party/PHPExcel/locale/no/functions +++ /dev/null @@ -1,438 +0,0 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Calculation -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ -## -## - - -## -## Add-in and Automation functions Funksjonene Tillegg og Automatisering -## -GETPIVOTDATA = HENTPIVOTDATA ## Returnerer data som er lagret i en pivottabellrapport - - -## -## Cube functions Kubefunksjoner -## -CUBEKPIMEMBER = KUBEKPIMEDLEM ## Returnerer navnet, egenskapen og målet for en viktig ytelsesindikator (KPI), og viser navnet og egenskapen i cellen. En KPI er en målbar enhet, for eksempel månedlig bruttoinntjening eller kvartalsvis inntjening per ansatt, og brukes til å overvåke ytelsen i en organisasjon. -CUBEMEMBER = KUBEMEDLEM ## Returnerer et medlem eller en tuppel i et kubehierarki. Brukes til å validere at medlemmet eller tuppelen finnes i kuben. -CUBEMEMBERPROPERTY = KUBEMEDLEMEGENSKAP ## Returnerer verdien til en medlemsegenskap i kuben. Brukes til å validere at et medlemsnavn finnes i kuben, og til å returnere den angitte egenskapen for dette medlemmet. -CUBERANKEDMEMBER = KUBERANGERTMEDLEM ## Returnerer det n-te, eller rangerte, medlemmet i et sett. Brukes til å returnere ett eller flere elementer i et sett, for eksempel de 10 beste studentene. -CUBESET = KUBESETT ## Definerer et beregnet sett av medlemmer eller tuppeler ved å sende et settuttrykk til kuben på serveren, noe som oppretter settet og deretter returnerer dette settet til Microsoft Office Excel. -CUBESETCOUNT = KUBESETTANTALL ## Returnerer antallet elementer i et sett. -CUBEVALUE = KUBEVERDI ## Returnerer en aggregert verdi fra en kube. - - -## -## Database functions Databasefunksjoner -## -DAVERAGE = DGJENNOMSNITT ## Returnerer gjennomsnittet av merkede databaseposter -DCOUNT = DANTALL ## Teller celler som inneholder tall i en database -DCOUNTA = DANTALLA ## Teller celler som ikke er tomme i en database -DGET = DHENT ## Trekker ut fra en database en post som oppfyller angitte vilkår -DMAX = DMAKS ## Returnerer maksimumsverdien fra merkede databaseposter -DMIN = DMIN ## Returnerer minimumsverdien fra merkede databaseposter -DPRODUCT = DPRODUKT ## Multipliserer verdiene i et bestemt felt med poster som oppfyller vilkårene i en database -DSTDEV = DSTDAV ## Estimerer standardavviket basert på et utvalg av merkede databaseposter -DSTDEVP = DSTAVP ## Beregner standardavviket basert på at merkede databaseposter utgjør hele populasjonen -DSUM = DSUMMER ## Legger til tallene i feltkolonnen med poster, i databasen som oppfyller vilkårene -DVAR = DVARIANS ## Estimerer variansen basert på et utvalg av merkede databaseposter -DVARP = DVARIANSP ## Beregner variansen basert på at merkede databaseposter utgjør hele populasjonen - - -## -## Date and time functions Dato- og tidsfunksjoner -## -DATE = DATO ## Returnerer serienummeret som svarer til en bestemt dato -DATEVALUE = DATOVERDI ## Konverterer en dato med tekstformat til et serienummer -DAY = DAG ## Konverterer et serienummer til en dag i måneden -DAYS360 = DAGER360 ## Beregner antall dager mellom to datoer basert på et år med 360 dager -EDATE = DAG.ETTER ## Returnerer serienummeret som svarer til datoen som er det indikerte antall måneder før eller etter startdatoen -EOMONTH = MÅNEDSSLUTT ## Returnerer serienummeret som svarer til siste dag i måneden, før eller etter et angitt antall måneder -HOUR = TIME ## Konverterer et serienummer til en time -MINUTE = MINUTT ## Konverterer et serienummer til et minutt -MONTH = MÅNED ## Konverterer et serienummer til en måned -NETWORKDAYS = NETT.ARBEIDSDAGER ## Returnerer antall hele arbeidsdager mellom to datoer -NOW = NÅ ## Returnerer serienummeret som svarer til gjeldende dato og klokkeslett -SECOND = SEKUND ## Konverterer et serienummer til et sekund -TIME = TID ## Returnerer serienummeret som svarer til et bestemt klokkeslett -TIMEVALUE = TIDSVERDI ## Konverterer et klokkeslett i tekstformat til et serienummer -TODAY = IDAG ## Returnerer serienummeret som svarer til dagens dato -WEEKDAY = UKEDAG ## Konverterer et serienummer til en ukedag -WEEKNUM = UKENR ## Konverterer et serienummer til et tall som representerer hvilket nummer uken har i et år -WORKDAY = ARBEIDSDAG ## Returnerer serienummeret som svarer til datoen før eller etter et angitt antall arbeidsdager -YEAR = ÅR ## Konverterer et serienummer til et år -YEARFRAC = ÅRDEL ## Returnerer brøkdelen for året, som svarer til antall hele dager mellom startdato og sluttdato - - -## -## Engineering functions Tekniske funksjoner -## -BESSELI = BESSELI ## Returnerer den endrede Bessel-funksjonen In(x) -BESSELJ = BESSELJ ## Returnerer Bessel-funksjonen Jn(x) -BESSELK = BESSELK ## Returnerer den endrede Bessel-funksjonen Kn(x) -BESSELY = BESSELY ## Returnerer Bessel-funksjonen Yn(x) -BIN2DEC = BINTILDES ## Konverterer et binært tall til et desimaltall -BIN2HEX = BINTILHEKS ## Konverterer et binært tall til et heksadesimaltall -BIN2OCT = BINTILOKT ## Konverterer et binært tall til et oktaltall -COMPLEX = KOMPLEKS ## Konverterer reelle og imaginære koeffisienter til et komplekst tall -CONVERT = KONVERTER ## Konverterer et tall fra ett målsystem til et annet -DEC2BIN = DESTILBIN ## Konverterer et desimaltall til et binærtall -DEC2HEX = DESTILHEKS ## Konverterer et heltall i 10-tallsystemet til et heksadesimalt tall -DEC2OCT = DESTILOKT ## Konverterer et heltall i 10-tallsystemet til et oktaltall -DELTA = DELTA ## Undersøker om to verdier er like -ERF = FEILF ## Returnerer feilfunksjonen -ERFC = FEILFK ## Returnerer den komplementære feilfunksjonen -GESTEP = GRENSEVERDI ## Tester om et tall er større enn en terskelverdi -HEX2BIN = HEKSTILBIN ## Konverterer et heksadesimaltall til et binært tall -HEX2DEC = HEKSTILDES ## Konverterer et heksadesimalt tall til et heltall i 10-tallsystemet -HEX2OCT = HEKSTILOKT ## Konverterer et heksadesimalt tall til et oktaltall -IMABS = IMABS ## Returnerer absoluttverdien (koeffisienten) til et komplekst tall -IMAGINARY = IMAGINÆR ## Returnerer den imaginære koeffisienten til et komplekst tall -IMARGUMENT = IMARGUMENT ## Returnerer argumentet theta, som er en vinkel uttrykt i radianer -IMCONJUGATE = IMKONJUGERT ## Returnerer den komplekse konjugaten til et komplekst tall -IMCOS = IMCOS ## Returnerer cosinus til et komplekst tall -IMDIV = IMDIV ## Returnerer kvotienten til to komplekse tall -IMEXP = IMEKSP ## Returnerer eksponenten til et komplekst tall -IMLN = IMLN ## Returnerer den naturlige logaritmen for et komplekst tall -IMLOG10 = IMLOG10 ## Returnerer logaritmen med grunntall 10 for et komplekst tall -IMLOG2 = IMLOG2 ## Returnerer logaritmen med grunntall 2 for et komplekst tall -IMPOWER = IMOPPHØY ## Returnerer et komplekst tall opphøyd til en heltallspotens -IMPRODUCT = IMPRODUKT ## Returnerer produktet av komplekse tall -IMREAL = IMREELL ## Returnerer den reelle koeffisienten til et komplekst tall -IMSIN = IMSIN ## Returnerer sinus til et komplekst tall -IMSQRT = IMROT ## Returnerer kvadratroten av et komplekst tall -IMSUB = IMSUB ## Returnerer differansen mellom to komplekse tall -IMSUM = IMSUMMER ## Returnerer summen av komplekse tall -OCT2BIN = OKTTILBIN ## Konverterer et oktaltall til et binært tall -OCT2DEC = OKTTILDES ## Konverterer et oktaltall til et desimaltall -OCT2HEX = OKTTILHEKS ## Konverterer et oktaltall til et heksadesimaltall - - -## -## Financial functions Økonomiske funksjoner -## -ACCRINT = PÅLØPT.PERIODISK.RENTE ## Returnerer påløpte renter for et verdipapir som betaler periodisk rente -ACCRINTM = PÅLØPT.FORFALLSRENTE ## Returnerer den påløpte renten for et verdipapir som betaler rente ved forfall -AMORDEGRC = AMORDEGRC ## Returnerer avskrivningen for hver regnskapsperiode ved hjelp av en avskrivingskoeffisient -AMORLINC = AMORLINC ## Returnerer avskrivingen for hver regnskapsperiode -COUPDAYBS = OBLIG.DAGER.FF ## Returnerer antall dager fra begynnelsen av den rentebærende perioden til innløsningsdatoen -COUPDAYS = OBLIG.DAGER ## Returnerer antall dager i den rentebærende perioden som inneholder innløsningsdatoen -COUPDAYSNC = OBLIG.DAGER.NF ## Returnerer antall dager fra betalingsdato til neste renteinnbetalingsdato -COUPNCD = OBLIG.DAGER.EF ## Returnerer obligasjonsdatoen som kommer etter oppgjørsdatoen -COUPNUM = OBLIG.ANTALL ## Returnerer antall obligasjoner som skal betales mellom oppgjørsdatoen og forfallsdatoen -COUPPCD = OBLIG.DAG.FORRIGE ## Returnerer obligasjonsdatoen som kommer før oppgjørsdatoen -CUMIPMT = SAMLET.RENTE ## Returnerer den kumulative renten som er betalt mellom to perioder -CUMPRINC = SAMLET.HOVEDSTOL ## Returnerer den kumulative hovedstolen som er betalt for et lån mellom to perioder -DB = DAVSKR ## Returnerer avskrivningen for et aktivum i en angitt periode, foretatt med fast degressiv avskrivning -DDB = DEGRAVS ## Returnerer avskrivningen for et aktivum for en gitt periode, ved hjelp av dobbel degressiv avskrivning eller en metode som du selv angir -DISC = DISKONTERT ## Returnerer diskonteringsraten for et verdipapir -DOLLARDE = DOLLARDE ## Konverterer en valutapris uttrykt som en brøk, til en valutapris uttrykt som et desimaltall -DOLLARFR = DOLLARBR ## Konverterer en valutapris uttrykt som et desimaltall, til en valutapris uttrykt som en brøk -DURATION = VARIGHET ## Returnerer årlig varighet for et verdipapir med renter som betales periodisk -EFFECT = EFFEKTIV.RENTE ## Returnerer den effektive årlige rentesatsen -FV = SLUTTVERDI ## Returnerer fremtidig verdi for en investering -FVSCHEDULE = SVPLAN ## Returnerer den fremtidige verdien av en inngående hovedstol etter å ha anvendt en serie med sammensatte rentesatser -INTRATE = RENTESATS ## Returnerer rentefoten av et fullfinansiert verdipapir -IPMT = RAVDRAG ## Returnerer betalte renter på en investering for en gitt periode -IRR = IR ## Returnerer internrenten for en serie kontantstrømmer -ISPMT = ER.AVDRAG ## Beregner renten som er betalt for en investering i løpet av en bestemt periode -MDURATION = MVARIGHET ## Returnerer Macauleys modifiserte varighet for et verdipapir med en antatt pålydende verdi på kr 100,00 -MIRR = MODIR ## Returnerer internrenten der positive og negative kontantstrømmer finansieres med forskjellige satser -NOMINAL = NOMINELL ## Returnerer årlig nominell rentesats -NPER = PERIODER ## Returnerer antall perioder for en investering -NPV = NNV ## Returnerer netto nåverdi for en investering, basert på en serie periodiske kontantstrømmer og en rentesats -ODDFPRICE = AVVIKFP.PRIS ## Returnerer pris pålydende kr 100 for et verdipapir med en odde første periode -ODDFYIELD = AVVIKFP.AVKASTNING ## Returnerer avkastingen for et verdipapir med en odde første periode -ODDLPRICE = AVVIKSP.PRIS ## Returnerer pris pålydende kr 100 for et verdipapir med en odde siste periode -ODDLYIELD = AVVIKSP.AVKASTNING ## Returnerer avkastingen for et verdipapir med en odde siste periode -PMT = AVDRAG ## Returnerer periodisk betaling for en annuitet -PPMT = AMORT ## Returnerer betalingen på hovedstolen for en investering i en gitt periode -PRICE = PRIS ## Returnerer prisen per pålydende kr 100 for et verdipapir som gir periodisk avkastning -PRICEDISC = PRIS.DISKONTERT ## Returnerer prisen per pålydende kr 100 for et diskontert verdipapir -PRICEMAT = PRIS.FORFALL ## Returnerer prisen per pålydende kr 100 av et verdipapir som betaler rente ved forfall -PV = NÅVERDI ## Returnerer nåverdien av en investering -RATE = RENTE ## Returnerer rentesatsen per periode for en annuitet -RECEIVED = MOTTATT.AVKAST ## Returnerer summen som mottas ved forfallsdato for et fullinvestert verdipapir -SLN = LINAVS ## Returnerer den lineære avskrivningen for et aktivum i én periode -SYD = ÅRSAVS ## Returnerer årsavskrivningen for et aktivum i en angitt periode -TBILLEQ = TBILLEKV ## Returnerer den obligasjonsekvivalente avkastningen for en statsobligasjon -TBILLPRICE = TBILLPRIS ## Returnerer prisen per pålydende kr 100 for en statsobligasjon -TBILLYIELD = TBILLAVKASTNING ## Returnerer avkastningen til en statsobligasjon -VDB = VERDIAVS ## Returnerer avskrivningen for et aktivum i en angitt periode eller delperiode, ved hjelp av degressiv avskrivning -XIRR = XIR ## Returnerer internrenten for en serie kontantstrømmer som ikke nødvendigvis er periodiske -XNPV = XNNV ## Returnerer netto nåverdi for en serie kontantstrømmer som ikke nødvendigvis er periodiske -YIELD = AVKAST ## Returnerer avkastningen på et verdipapir som betaler periodisk rente -YIELDDISC = AVKAST.DISKONTERT ## Returnerer årlig avkastning for et diskontert verdipapir, for eksempel en statskasseveksel -YIELDMAT = AVKAST.FORFALL ## Returnerer den årlige avkastningen for et verdipapir som betaler rente ved forfallsdato - - -## -## Information functions Informasjonsfunksjoner -## -CELL = CELLE ## Returnerer informasjon om formatering, plassering eller innholdet til en celle -ERROR.TYPE = FEIL.TYPE ## Returnerer et tall som svarer til en feiltype -INFO = INFO ## Returnerer informasjon om gjeldende operativmiljø -ISBLANK = ERTOM ## Returnerer SANN hvis verdien er tom -ISERR = ERFEIL ## Returnerer SANN hvis verdien er en hvilken som helst annen feilverdi enn #I/T -ISERROR = ERFEIL ## Returnerer SANN hvis verdien er en hvilken som helst feilverdi -ISEVEN = ERPARTALL ## Returnerer SANN hvis tallet er et partall -ISLOGICAL = ERLOGISK ## Returnerer SANN hvis verdien er en logisk verdi -ISNA = ERIT ## Returnerer SANN hvis verdien er feilverdien #I/T -ISNONTEXT = ERIKKETEKST ## Returnerer SANN hvis verdien ikke er tekst -ISNUMBER = ERTALL ## Returnerer SANN hvis verdien er et tall -ISODD = ERODDETALL ## Returnerer SANN hvis tallet er et oddetall -ISREF = ERREF ## Returnerer SANN hvis verdien er en referanse -ISTEXT = ERTEKST ## Returnerer SANN hvis verdien er tekst -N = N ## Returnerer en verdi som er konvertert til et tall -NA = IT ## Returnerer feilverdien #I/T -TYPE = VERDITYPE ## Returnerer et tall som indikerer datatypen til en verdi - - -## -## Logical functions Logiske funksjoner -## -AND = OG ## Returnerer SANN hvis alle argumentene er lik SANN -FALSE = USANN ## Returnerer den logiske verdien USANN -IF = HVIS ## Angir en logisk test som skal utføres -IFERROR = HVISFEIL ## Returnerer en verdi du angir hvis en formel evaluerer til en feil. Ellers returnerer den resultatet av formelen. -NOT = IKKE ## Reverserer logikken til argumentet -OR = ELLER ## Returnerer SANN hvis ett eller flere argumenter er lik SANN -TRUE = SANN ## Returnerer den logiske verdien SANN - - -## -## Lookup and reference functions Oppslag- og referansefunksjoner -## -ADDRESS = ADRESSE ## Returnerer en referanse som tekst til en enkelt celle i et regneark -AREAS = OMRÅDER ## Returnerer antall områder i en referanse -CHOOSE = VELG ## Velger en verdi fra en liste med verdier -COLUMN = KOLONNE ## Returnerer kolonnenummeret for en referanse -COLUMNS = KOLONNER ## Returnerer antall kolonner i en referanse -HLOOKUP = FINN.KOLONNE ## Leter i den øverste raden i en matrise og returnerer verdien for den angitte cellen -HYPERLINK = HYPERKOBLING ## Oppretter en snarvei eller et hopp som åpner et dokument som er lagret på en nettverksserver, et intranett eller Internett -INDEX = INDEKS ## Bruker en indeks til å velge en verdi fra en referanse eller matrise -INDIRECT = INDIREKTE ## Returnerer en referanse angitt av en tekstverdi -LOOKUP = SLÅ.OPP ## Slår opp verdier i en vektor eller matrise -MATCH = SAMMENLIGNE ## Slår opp verdier i en referanse eller matrise -OFFSET = FORSKYVNING ## Returnerer en referanseforskyvning fra en gitt referanse -ROW = RAD ## Returnerer radnummeret for en referanse -ROWS = RADER ## Returnerer antall rader i en referanse -RTD = RTD ## Henter sanntidsdata fra et program som støtter COM-automatisering (automatisering: En måte å arbeide på med programobjekter fra et annet program- eller utviklingsverktøy. Tidligere kalt OLE-automatisering. Automatisering er en bransjestandard og en funksjon i Component Object Model (COM).) -TRANSPOSE = TRANSPONER ## Returnerer transponeringen av en matrise -VLOOKUP = FINN.RAD ## Leter i den første kolonnen i en matrise og flytter bortover raden for å returnere verdien til en celle - - -## -## Math and trigonometry functions Matematikk- og trigonometrifunksjoner -## -ABS = ABS ## Returnerer absoluttverdien til et tall -ACOS = ARCCOS ## Returnerer arcus cosinus til et tall -ACOSH = ARCCOSH ## Returnerer den inverse hyperbolske cosinus til et tall -ASIN = ARCSIN ## Returnerer arcus sinus til et tall -ASINH = ARCSINH ## Returnerer den inverse hyperbolske sinus til et tall -ATAN = ARCTAN ## Returnerer arcus tangens til et tall -ATAN2 = ARCTAN2 ## Returnerer arcus tangens fra x- og y-koordinater -ATANH = ARCTANH ## Returnerer den inverse hyperbolske tangens til et tall -CEILING = AVRUND.GJELDENDE.MULTIPLUM ## Runder av et tall til nærmeste heltall eller til nærmeste signifikante multiplum -COMBIN = KOMBINASJON ## Returnerer antall kombinasjoner for ett gitt antall objekter -COS = COS ## Returnerer cosinus til et tall -COSH = COSH ## Returnerer den hyperbolske cosinus til et tall -DEGREES = GRADER ## Konverterer radianer til grader -EVEN = AVRUND.TIL.PARTALL ## Runder av et tall oppover til nærmeste heltall som er et partall -EXP = EKSP ## Returnerer e opphøyd i en angitt potens -FACT = FAKULTET ## Returnerer fakultet til et tall -FACTDOUBLE = DOBBELFAKT ## Returnerer et talls doble fakultet -FLOOR = AVRUND.GJELDENDE.MULTIPLUM.NED ## Avrunder et tall nedover, mot null -GCD = SFF ## Returnerer høyeste felles divisor -INT = HELTALL ## Avrunder et tall nedover til nærmeste heltall -LCM = MFM ## Returnerer minste felles multiplum -LN = LN ## Returnerer den naturlige logaritmen til et tall -LOG = LOG ## Returnerer logaritmen for et tall til et angitt grunntall -LOG10 = LOG10 ## Returnerer logaritmen med grunntall 10 for et tall -MDETERM = MDETERM ## Returnerer matrisedeterminanten til en matrise -MINVERSE = MINVERS ## Returnerer den inverse matrisen til en matrise -MMULT = MMULT ## Returnerer matriseproduktet av to matriser -MOD = REST ## Returnerer resten fra en divisjon -MROUND = MRUND ## Returnerer et tall avrundet til det ønskede multiplum -MULTINOMIAL = MULTINOMINELL ## Returnerer det multinominelle for et sett med tall -ODD = AVRUND.TIL.ODDETALL ## Runder av et tall oppover til nærmeste heltall som er et oddetall -PI = PI ## Returnerer verdien av pi -POWER = OPPHØYD.I ## Returnerer resultatet av et tall opphøyd i en potens -PRODUCT = PRODUKT ## Multipliserer argumentene -QUOTIENT = KVOTIENT ## Returnerer heltallsdelen av en divisjon -RADIANS = RADIANER ## Konverterer grader til radianer -RAND = TILFELDIG ## Returnerer et tilfeldig tall mellom 0 og 1 -RANDBETWEEN = TILFELDIGMELLOM ## Returnerer et tilfeldig tall innenfor et angitt område -ROMAN = ROMERTALL ## Konverterer vanlige tall til romertall, som tekst -ROUND = AVRUND ## Avrunder et tall til et angitt antall sifre -ROUNDDOWN = AVRUND.NED ## Avrunder et tall nedover, mot null -ROUNDUP = AVRUND.OPP ## Runder av et tall oppover, bort fra null -SERIESSUM = SUMMER.REKKE ## Returnerer summen av en geometrisk rekke, basert på formelen -SIGN = FORTEGN ## Returnerer fortegnet for et tall -SIN = SIN ## Returnerer sinus til en gitt vinkel -SINH = SINH ## Returnerer den hyperbolske sinus til et tall -SQRT = ROT ## Returnerer en positiv kvadratrot -SQRTPI = ROTPI ## Returnerer kvadratroten av (tall * pi) -SUBTOTAL = DELSUM ## Returnerer en delsum i en liste eller database -SUM = SUMMER ## Legger sammen argumentene -SUMIF = SUMMERHVIS ## Legger sammen cellene angitt ved et gitt vilkår -SUMIFS = SUMMER.HVIS.SETT ## Legger sammen cellene i et område som oppfyller flere vilkår -SUMPRODUCT = SUMMERPRODUKT ## Returnerer summen av produktene av tilsvarende matrisekomponenter -SUMSQ = SUMMERKVADRAT ## Returnerer kvadratsummen av argumentene -SUMX2MY2 = SUMMERX2MY2 ## Returnerer summen av differansen av kvadratene for tilsvarende verdier i to matriser -SUMX2PY2 = SUMMERX2PY2 ## Returnerer summen av kvadratsummene for tilsvarende verdier i to matriser -SUMXMY2 = SUMMERXMY2 ## Returnerer summen av kvadratene av differansen for tilsvarende verdier i to matriser -TAN = TAN ## Returnerer tangens for et tall -TANH = TANH ## Returnerer den hyperbolske tangens for et tall -TRUNC = AVKORT ## Korter av et tall til et heltall - - -## -## Statistical functions Statistiske funksjoner -## -AVEDEV = GJENNOMSNITTSAVVIK ## Returnerer datapunktenes gjennomsnittlige absoluttavvik fra middelverdien -AVERAGE = GJENNOMSNITT ## Returnerer gjennomsnittet for argumentene -AVERAGEA = GJENNOMSNITTA ## Returnerer gjennomsnittet for argumentene, inkludert tall, tekst og logiske verdier -AVERAGEIF = GJENNOMSNITTHVIS ## Returnerer gjennomsnittet (aritmetisk gjennomsnitt) av alle cellene i et område som oppfyller et bestemt vilkår -AVERAGEIFS = GJENNOMSNITT.HVIS.SETT ## Returnerer gjennomsnittet (aritmetisk middelverdi) av alle celler som oppfyller flere vilkår. -BETADIST = BETA.FORDELING ## Returnerer den kumulative betafordelingsfunksjonen -BETAINV = INVERS.BETA.FORDELING ## Returnerer den inverse verdien til fordelingsfunksjonen for en angitt betafordeling -BINOMDIST = BINOM.FORDELING ## Returnerer den individuelle binomiske sannsynlighetsfordelingen -CHIDIST = KJI.FORDELING ## Returnerer den ensidige sannsynligheten for en kjikvadrert fordeling -CHIINV = INVERS.KJI.FORDELING ## Returnerer den inverse av den ensidige sannsynligheten for den kjikvadrerte fordelingen -CHITEST = KJI.TEST ## Utfører testen for uavhengighet -CONFIDENCE = KONFIDENS ## Returnerer konfidensintervallet til gjennomsnittet for en populasjon -CORREL = KORRELASJON ## Returnerer korrelasjonskoeffisienten mellom to datasett -COUNT = ANTALL ## Teller hvor mange tall som er i argumentlisten -COUNTA = ANTALLA ## Teller hvor mange verdier som er i argumentlisten -COUNTBLANK = TELLBLANKE ## Teller antall tomme celler i et område. -COUNTIF = ANTALL.HVIS ## Teller antall celler i et område som oppfyller gitte vilkår -COUNTIFS = ANTALL.HVIS.SETT ## Teller antallet ikke-tomme celler i et område som oppfyller flere vilkår -COVAR = KOVARIANS ## Returnerer kovariansen, gjennomsnittet av produktene av parvise avvik -CRITBINOM = GRENSE.BINOM ## Returnerer den minste verdien der den kumulative binomiske fordelingen er mindre enn eller lik en vilkårsverdi -DEVSQ = AVVIK.KVADRERT ## Returnerer summen av kvadrerte avvik -EXPONDIST = EKSP.FORDELING ## Returnerer eksponentialfordelingen -FDIST = FFORDELING ## Returnerer F-sannsynlighetsfordelingen -FINV = FFORDELING.INVERS ## Returnerer den inverse av den sannsynlige F-fordelingen -FISHER = FISHER ## Returnerer Fisher-transformasjonen -FISHERINV = FISHERINV ## Returnerer den inverse av Fisher-transformasjonen -FORECAST = PROGNOSE ## Returnerer en verdi langs en lineær trend -FREQUENCY = FREKVENS ## Returnerer en frekvensdistribusjon som en loddrett matrise -FTEST = FTEST ## Returnerer resultatet av en F-test -GAMMADIST = GAMMAFORDELING ## Returnerer gammafordelingen -GAMMAINV = GAMMAINV ## Returnerer den inverse av den gammakumulative fordelingen -GAMMALN = GAMMALN ## Returnerer den naturlige logaritmen til gammafunksjonen G(x) -GEOMEAN = GJENNOMSNITT.GEOMETRISK ## Returnerer den geometriske middelverdien -GROWTH = VEKST ## Returnerer verdier langs en eksponentiell trend -HARMEAN = GJENNOMSNITT.HARMONISK ## Returnerer den harmoniske middelverdien -HYPGEOMDIST = HYPGEOM.FORDELING ## Returnerer den hypergeometriske fordelingen -INTERCEPT = SKJÆRINGSPUNKT ## Returnerer skjæringspunktet til den lineære regresjonslinjen -KURT = KURT ## Returnerer kurtosen til et datasett -LARGE = N.STØRST ## Returnerer den n-te største verdien i et datasett -LINEST = RETTLINJE ## Returnerer parameterne til en lineær trend -LOGEST = KURVE ## Returnerer parameterne til en eksponentiell trend -LOGINV = LOGINV ## Returnerer den inverse lognormale fordelingen -LOGNORMDIST = LOGNORMFORD ## Returnerer den kumulative lognormale fordelingen -MAX = STØRST ## Returnerer maksimumsverdien i en argumentliste -MAXA = MAKSA ## Returnerer maksimumsverdien i en argumentliste, inkludert tall, tekst og logiske verdier -MEDIAN = MEDIAN ## Returnerer medianen til tallene som er gitt -MIN = MIN ## Returnerer minimumsverdien i en argumentliste -MINA = MINA ## Returnerer den minste verdien i en argumentliste, inkludert tall, tekst og logiske verdier -MODE = MODUS ## Returnerer den vanligste verdien i et datasett -NEGBINOMDIST = NEGBINOM.FORDELING ## Returnerer den negative binomiske fordelingen -NORMDIST = NORMALFORDELING ## Returnerer den kumulative normalfordelingen -NORMINV = NORMINV ## Returnerer den inverse kumulative normalfordelingen -NORMSDIST = NORMSFORDELING ## Returnerer standard kumulativ normalfordeling -NORMSINV = NORMSINV ## Returnerer den inverse av den den kumulative standard normalfordelingen -PEARSON = PEARSON ## Returnerer produktmomentkorrelasjonskoeffisienten, Pearson -PERCENTILE = PERSENTIL ## Returnerer den n-te persentil av verdiene i et område -PERCENTRANK = PROSENTDEL ## Returnerer prosentrangeringen av en verdi i et datasett -PERMUT = PERMUTER ## Returnerer antall permutasjoner for et gitt antall objekter -POISSON = POISSON ## Returnerer Poissons sannsynlighetsfordeling -PROB = SANNSYNLIG ## Returnerer sannsynligheten for at verdier i et område ligger mellom to grenser -QUARTILE = KVARTIL ## Returnerer kvartilen til et datasett -RANK = RANG ## Returnerer rangeringen av et tall, eller plassen tallet har i en rekke -RSQ = RKVADRAT ## Returnerer kvadratet av produktmomentkorrelasjonskoeffisienten (Pearsons r) -SKEW = SKJEVFORDELING ## Returnerer skjevheten i en fordeling -SLOPE = STIGNINGSTALL ## Returnerer stigningtallet for den lineære regresjonslinjen -SMALL = N.MINST ## Returnerer den n-te minste verdien i et datasett -STANDARDIZE = NORMALISER ## Returnerer en normalisert verdi -STDEV = STDAV ## Estimere standardavvik på grunnlag av et utvalg -STDEVA = STDAVVIKA ## Estimerer standardavvik basert på et utvalg, inkludert tall, tekst og logiske verdier -STDEVP = STDAVP ## Beregner standardavvik basert på hele populasjonen -STDEVPA = STDAVVIKPA ## Beregner standardavvik basert på hele populasjonen, inkludert tall, tekst og logiske verdier -STEYX = STANDARDFEIL ## Returnerer standardfeilen for den predikerte y-verdien for hver x i regresjonen -TDIST = TFORDELING ## Returnerer en Student t-fordeling -TINV = TINV ## Returnerer den inverse Student t-fordelingen -TREND = TREND ## Returnerer verdier langs en lineær trend -TRIMMEAN = TRIMMET.GJENNOMSNITT ## Returnerer den interne middelverdien til et datasett -TTEST = TTEST ## Returnerer sannsynligheten assosiert med en Student t-test -VAR = VARIANS ## Estimerer varians basert på et utvalg -VARA = VARIANSA ## Estimerer varians basert på et utvalg, inkludert tall, tekst og logiske verdier -VARP = VARIANSP ## Beregner varians basert på hele populasjonen -VARPA = VARIANSPA ## Beregner varians basert på hele populasjonen, inkludert tall, tekst og logiske verdier -WEIBULL = WEIBULL.FORDELING ## Returnerer Weibull-fordelingen -ZTEST = ZTEST ## Returnerer den ensidige sannsynlighetsverdien for en z-test - - -## -## Text functions Tekstfunksjoner -## -ASC = STIGENDE ## Endrer fullbreddes (dobbeltbyte) engelske bokstaver eller katakana i en tegnstreng, til halvbreddes (enkeltbyte) tegn -BAHTTEXT = BAHTTEKST ## Konverterer et tall til tekst, og bruker valutaformatet ß (baht) -CHAR = TEGNKODE ## Returnerer tegnet som svarer til kodenummeret -CLEAN = RENSK ## Fjerner alle tegn som ikke kan skrives ut, fra teksten -CODE = KODE ## Returnerer en numerisk kode for det første tegnet i en tekststreng -CONCATENATE = KJEDE.SAMMEN ## Slår sammen flere tekstelementer til ett tekstelement -DOLLAR = VALUTA ## Konverterer et tall til tekst, og bruker valutaformatet $ (dollar) -EXACT = EKSAKT ## Kontrollerer om to tekstverdier er like -FIND = FINN ## Finner en tekstverdi inne i en annen (skiller mellom store og små bokstaver) -FINDB = FINNB ## Finner en tekstverdi inne i en annen (skiller mellom store og små bokstaver) -FIXED = FASTSATT ## Formaterer et tall som tekst med et bestemt antall desimaler -JIS = JIS ## Endrer halvbreddes (enkeltbyte) engelske bokstaver eller katakana i en tegnstreng, til fullbreddes (dobbeltbyte) tegn -LEFT = VENSTRE ## Returnerer tegnene lengst til venstre i en tekstverdi -LEFTB = VENSTREB ## Returnerer tegnene lengst til venstre i en tekstverdi -LEN = LENGDE ## Returnerer antall tegn i en tekststreng -LENB = LENGDEB ## Returnerer antall tegn i en tekststreng -LOWER = SMÅ ## Konverterer tekst til små bokstaver -MID = DELTEKST ## Returnerer et angitt antall tegn fra en tekststreng, og begynner fra posisjonen du angir -MIDB = DELTEKSTB ## Returnerer et angitt antall tegn fra en tekststreng, og begynner fra posisjonen du angir -PHONETIC = FURIGANA ## Trekker ut fonetiske tegn (furigana) fra en tekststreng -PROPER = STOR.FORBOKSTAV ## Gir den første bokstaven i hvert ord i en tekstverdi stor forbokstav -REPLACE = ERSTATT ## Erstatter tegn i en tekst -REPLACEB = ERSTATTB ## Erstatter tegn i en tekst -REPT = GJENTA ## Gjentar tekst et gitt antall ganger -RIGHT = HØYRE ## Returnerer tegnene lengst til høyre i en tekstverdi -RIGHTB = HØYREB ## Returnerer tegnene lengst til høyre i en tekstverdi -SEARCH = SØK ## Finner en tekstverdi inne i en annen (skiller ikke mellom store og små bokstaver) -SEARCHB = SØKB ## Finner en tekstverdi inne i en annen (skiller ikke mellom store og små bokstaver) -SUBSTITUTE = BYTT.UT ## Bytter ut gammel tekst med ny tekst i en tekststreng -T = T ## Konverterer argumentene til tekst -TEXT = TEKST ## Formaterer et tall og konverterer det til tekst -TRIM = TRIMME ## Fjerner mellomrom fra tekst -UPPER = STORE ## Konverterer tekst til store bokstaver -VALUE = VERDI ## Konverterer et tekstargument til et tall diff --git a/application/third_party/PHPExcel/locale/pl/config b/application/third_party/PHPExcel/locale/pl/config deleted file mode 100644 index 4dd75bee..00000000 --- a/application/third_party/PHPExcel/locale/pl/config +++ /dev/null @@ -1,47 +0,0 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Settings -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## - - -ArgumentSeparator = ; - - -## -## (For future use) -## -currencySymbol = zł - - -## -## Excel Error Codes (For future use) -## -NULL = #ZERO! -DIV0 = #DZIEL/0! -VALUE = #ARG! -REF = #ADR! -NAME = #NAZWA? -NUM = #LICZBA! -NA = #N/D! diff --git a/application/third_party/PHPExcel/locale/pl/functions b/application/third_party/PHPExcel/locale/pl/functions deleted file mode 100644 index 1881a71e..00000000 --- a/application/third_party/PHPExcel/locale/pl/functions +++ /dev/null @@ -1,438 +0,0 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Calculation -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ -## -## - - -## -## Add-in and Automation functions Funkcje dodatków i automatyzacji -## -GETPIVOTDATA = WEŹDANETABELI ## Zwraca dane przechowywane w raporcie tabeli przestawnej. - - -## -## Cube functions Funkcje modułów -## -CUBEKPIMEMBER = ELEMENT.KPI.MODUŁU ## Zwraca nazwę, właściwość i miarę kluczowego wskaźnika wydajności (KPI) oraz wyświetla nazwę i właściwość w komórce. Wskaźnik KPI jest miarą ilościową, taką jak miesięczny zysk brutto lub kwartalna fluktuacja pracowników, używaną do monitorowania wydajności organizacji. -CUBEMEMBER = ELEMENT.MODUŁU ## Zwraca element lub krotkę z hierarchii modułu. Służy do sprawdzania, czy element lub krotka istnieje w module. -CUBEMEMBERPROPERTY = WŁAŚCIWOŚĆ.ELEMENTU.MODUŁU ## Zwraca wartość właściwości elementu w module. Służy do sprawdzania, czy nazwa elementu istnieje w module, i zwracania określonej właściwości dla tego elementu. -CUBERANKEDMEMBER = USZEREGOWANY.ELEMENT.MODUŁU ## Zwraca n-ty (albo uszeregowany) element zestawu. Służy do zwracania elementu lub elementów zestawu, na przykład najlepszego sprzedawcy lub 10 najlepszych studentów. -CUBESET = ZESTAW.MODUŁÓW ## Definiuje obliczony zestaw elementów lub krotek, wysyłając wyrażenie zestawu do serwera modułu, który tworzy zestaw i zwraca go do programu Microsoft Office Excel. -CUBESETCOUNT = LICZNIK.MODUŁÓW.ZESTAWU ## Zwraca liczbę elementów zestawu. -CUBEVALUE = WARTOŚĆ.MODUŁU ## Zwraca zagregowaną wartość z modułu. - - -## -## Database functions Funkcje baz danych -## -DAVERAGE = BD.ŚREDNIA ## Zwraca wartość średniej wybranych wpisów bazy danych. -DCOUNT = BD.ILE.REKORDÓW ## Zlicza komórki zawierające liczby w bazie danych. -DCOUNTA = BD.ILE.REKORDÓW.A ## Zlicza niepuste komórki w bazie danych. -DGET = BD.POLE ## Wyodrębnia z bazy danych jeden rekord spełniający określone kryteria. -DMAX = BD.MAX ## Zwraca wartość maksymalną z wybranych wpisów bazy danych. -DMIN = BD.MIN ## Zwraca wartość minimalną z wybranych wpisów bazy danych. -DPRODUCT = BD.ILOCZYN ## Mnoży wartości w konkretnym, spełniającym kryteria polu rekordów bazy danych. -DSTDEV = BD.ODCH.STANDARD ## Szacuje odchylenie standardowe na podstawie próbki z wybranych wpisów bazy danych. -DSTDEVP = BD.ODCH.STANDARD.POPUL ## Oblicza odchylenie standardowe na podstawie całej populacji wybranych wpisów bazy danych. -DSUM = BD.SUMA ## Dodaje liczby w kolumnie pól rekordów bazy danych, które spełniają kryteria. -DVAR = BD.WARIANCJA ## Szacuje wariancję na podstawie próbki z wybranych wpisów bazy danych. -DVARP = BD.WARIANCJA.POPUL ## Oblicza wariancję na podstawie całej populacji wybranych wpisów bazy danych. - - -## -## Date and time functions Funkcje dat, godzin i czasu -## -DATE = DATA ## Zwraca liczbę seryjną dla wybranej daty. -DATEVALUE = DATA.WARTOŚĆ ## Konwertuje datę w formie tekstu na liczbę seryjną. -DAY = DZIEŃ ## Konwertuje liczbę seryjną na dzień miesiąca. -DAYS360 = DNI.360 ## Oblicza liczbę dni między dwiema datami na podstawie roku 360-dniowego. -EDATE = UPŁDNI ## Zwraca liczbę seryjną daty jako wskazaną liczbę miesięcy przed określoną datą początkową lub po niej. -EOMONTH = EOMONTH ## Zwraca liczbę seryjną ostatniego dnia miesiąca przed określoną liczbą miesięcy lub po niej. -HOUR = GODZINA ## Konwertuje liczbę seryjną na godzinę. -MINUTE = MINUTA ## Konwertuje liczbę seryjną na minutę. -MONTH = MIESIĄC ## Konwertuje liczbę seryjną na miesiąc. -NETWORKDAYS = NETWORKDAYS ## Zwraca liczbę pełnych dni roboczych między dwiema datami. -NOW = TERAZ ## Zwraca liczbę seryjną bieżącej daty i godziny. -SECOND = SEKUNDA ## Konwertuje liczbę seryjną na sekundę. -TIME = CZAS ## Zwraca liczbę seryjną określonego czasu. -TIMEVALUE = CZAS.WARTOŚĆ ## Konwertuje czas w formie tekstu na liczbę seryjną. -TODAY = DZIŚ ## Zwraca liczbę seryjną dla daty bieżącej. -WEEKDAY = DZIEŃ.TYG ## Konwertuje liczbę seryjną na dzień tygodnia. -WEEKNUM = WEEKNUM ## Konwertuje liczbę seryjną na liczbę reprezentującą numer tygodnia w roku. -WORKDAY = WORKDAY ## Zwraca liczbę seryjną dla daty przed określoną liczbą dni roboczych lub po niej. -YEAR = ROK ## Konwertuje liczbę seryjną na rok. -YEARFRAC = YEARFRAC ## Zwraca część roku reprezentowaną przez pełną liczbę dni między datą początkową a datą końcową. - - -## -## Engineering functions Funkcje inżynierskie -## -BESSELI = BESSELI ## Zwraca wartość zmodyfikowanej funkcji Bessela In(x). -BESSELJ = BESSELJ ## Zwraca wartość funkcji Bessela Jn(x). -BESSELK = BESSELK ## Zwraca wartość zmodyfikowanej funkcji Bessela Kn(x). -BESSELY = BESSELY ## Zwraca wartość funkcji Bessela Yn(x). -BIN2DEC = BIN2DEC ## Konwertuje liczbę w postaci dwójkowej na liczbę w postaci dziesiętnej. -BIN2HEX = BIN2HEX ## Konwertuje liczbę w postaci dwójkowej na liczbę w postaci szesnastkowej. -BIN2OCT = BIN2OCT ## Konwertuje liczbę w postaci dwójkowej na liczbę w postaci ósemkowej. -COMPLEX = COMPLEX ## Konwertuje część rzeczywistą i urojoną na liczbę zespoloną. -CONVERT = CONVERT ## Konwertuje liczbę z jednego systemu miar na inny. -DEC2BIN = DEC2BIN ## Konwertuje liczbę w postaci dziesiętnej na postać dwójkową. -DEC2HEX = DEC2HEX ## Konwertuje liczbę w postaci dziesiętnej na liczbę w postaci szesnastkowej. -DEC2OCT = DEC2OCT ## Konwertuje liczbę w postaci dziesiętnej na liczbę w postaci ósemkowej. -DELTA = DELTA ## Sprawdza, czy dwie wartości są równe. -ERF = ERF ## Zwraca wartość funkcji błędu. -ERFC = ERFC ## Zwraca wartość komplementarnej funkcji błędu. -GESTEP = GESTEP ## Sprawdza, czy liczba jest większa niż wartość progowa. -HEX2BIN = HEX2BIN ## Konwertuje liczbę w postaci szesnastkowej na liczbę w postaci dwójkowej. -HEX2DEC = HEX2DEC ## Konwertuje liczbę w postaci szesnastkowej na liczbę w postaci dziesiętnej. -HEX2OCT = HEX2OCT ## Konwertuje liczbę w postaci szesnastkowej na liczbę w postaci ósemkowej. -IMABS = IMABS ## Zwraca wartość bezwzględną (moduł) liczby zespolonej. -IMAGINARY = IMAGINARY ## Zwraca wartość części urojonej liczby zespolonej. -IMARGUMENT = IMARGUMENT ## Zwraca wartość argumentu liczby zespolonej, przy czym kąt wyrażony jest w radianach. -IMCONJUGATE = IMCONJUGATE ## Zwraca wartość liczby sprzężonej danej liczby zespolonej. -IMCOS = IMCOS ## Zwraca wartość cosinusa liczby zespolonej. -IMDIV = IMDIV ## Zwraca wartość ilorazu dwóch liczb zespolonych. -IMEXP = IMEXP ## Zwraca postać wykładniczą liczby zespolonej. -IMLN = IMLN ## Zwraca wartość logarytmu naturalnego liczby zespolonej. -IMLOG10 = IMLOG10 ## Zwraca wartość logarytmu dziesiętnego liczby zespolonej. -IMLOG2 = IMLOG2 ## Zwraca wartość logarytmu liczby zespolonej przy podstawie 2. -IMPOWER = IMPOWER ## Zwraca wartość liczby zespolonej podniesionej do potęgi całkowitej. -IMPRODUCT = IMPRODUCT ## Zwraca wartość iloczynu liczb zespolonych. -IMREAL = IMREAL ## Zwraca wartość części rzeczywistej liczby zespolonej. -IMSIN = IMSIN ## Zwraca wartość sinusa liczby zespolonej. -IMSQRT = IMSQRT ## Zwraca wartość pierwiastka kwadratowego z liczby zespolonej. -IMSUB = IMSUB ## Zwraca wartość różnicy dwóch liczb zespolonych. -IMSUM = IMSUM ## Zwraca wartość sumy liczb zespolonych. -OCT2BIN = OCT2BIN ## Konwertuje liczbę w postaci ósemkowej na liczbę w postaci dwójkowej. -OCT2DEC = OCT2DEC ## Konwertuje liczbę w postaci ósemkowej na liczbę w postaci dziesiętnej. -OCT2HEX = OCT2HEX ## Konwertuje liczbę w postaci ósemkowej na liczbę w postaci szesnastkowej. - - -## -## Financial functions Funkcje finansowe -## -ACCRINT = ACCRINT ## Zwraca narosłe odsetki dla papieru wartościowego z oprocentowaniem okresowym. -ACCRINTM = ACCRINTM ## Zwraca narosłe odsetki dla papieru wartościowego z oprocentowaniem w terminie wykupu. -AMORDEGRC = AMORDEGRC ## Zwraca amortyzację dla każdego okresu rozliczeniowego z wykorzystaniem współczynnika amortyzacji. -AMORLINC = AMORLINC ## Zwraca amortyzację dla każdego okresu rozliczeniowego. -COUPDAYBS = COUPDAYBS ## Zwraca liczbę dni od początku okresu dywidendy do dnia rozliczeniowego. -COUPDAYS = COUPDAYS ## Zwraca liczbę dni w okresie dywidendy, z uwzględnieniem dnia rozliczeniowego. -COUPDAYSNC = COUPDAYSNC ## Zwraca liczbę dni od dnia rozliczeniowego do daty następnego dnia dywidendy. -COUPNCD = COUPNCD ## Zwraca dzień następnej dywidendy po dniu rozliczeniowym. -COUPNUM = COUPNUM ## Zwraca liczbę dywidend płatnych między dniem rozliczeniowym a dniem wykupu. -COUPPCD = COUPPCD ## Zwraca dzień poprzedniej dywidendy przed dniem rozliczeniowym. -CUMIPMT = CUMIPMT ## Zwraca wartość procentu składanego płatnego między dwoma okresami. -CUMPRINC = CUMPRINC ## Zwraca wartość kapitału skumulowanego spłaty pożyczki między dwoma okresami. -DB = DB ## Zwraca amortyzację środka trwałego w danym okresie metodą degresywną z zastosowaniem stałej bazowej. -DDB = DDB ## Zwraca amortyzację środka trwałego za podany okres metodą degresywną z zastosowaniem podwójnej bazowej lub metodą określoną przez użytkownika. -DISC = DISC ## Zwraca wartość stopy dyskontowej papieru wartościowego. -DOLLARDE = DOLLARDE ## Konwertuje cenę w postaci ułamkowej na cenę wyrażoną w postaci dziesiętnej. -DOLLARFR = DOLLARFR ## Konwertuje cenę wyrażoną w postaci dziesiętnej na cenę wyrażoną w postaci ułamkowej. -DURATION = DURATION ## Zwraca wartość rocznego przychodu z papieru wartościowego o okresowych wypłatach oprocentowania. -EFFECT = EFFECT ## Zwraca wartość efektywnej rocznej stopy procentowej. -FV = FV ## Zwraca przyszłą wartość lokaty. -FVSCHEDULE = FVSCHEDULE ## Zwraca przyszłą wartość kapitału początkowego wraz z szeregiem procentów składanych. -INTRATE = INTRATE ## Zwraca wartość stopy procentowej papieru wartościowego całkowicie ulokowanego. -IPMT = IPMT ## Zwraca wysokość spłaty oprocentowania lokaty za dany okres. -IRR = IRR ## Zwraca wartość wewnętrznej stopy zwrotu dla serii przepływów gotówkowych. -ISPMT = ISPMT ## Oblicza wysokość spłaty oprocentowania za dany okres lokaty. -MDURATION = MDURATION ## Zwraca wartość zmodyfikowanego okresu Macauleya dla papieru wartościowego o założonej wartości nominalnej 100 zł. -MIRR = MIRR ## Zwraca wartość wewnętrznej stopy zwrotu dla przypadku, gdy dodatnie i ujemne przepływy gotówkowe mają różne stopy. -NOMINAL = NOMINAL ## Zwraca wysokość nominalnej rocznej stopy procentowej. -NPER = NPER ## Zwraca liczbę okresów dla lokaty. -NPV = NPV ## Zwraca wartość bieżącą netto lokaty na podstawie szeregu okresowych przepływów gotówkowych i stopy dyskontowej. -ODDFPRICE = ODDFPRICE ## Zwraca cenę za 100 zł wartości nominalnej papieru wartościowego z nietypowym pierwszym okresem. -ODDFYIELD = ODDFYIELD ## Zwraca rentowność papieru wartościowego z nietypowym pierwszym okresem. -ODDLPRICE = ODDLPRICE ## Zwraca cenę za 100 zł wartości nominalnej papieru wartościowego z nietypowym ostatnim okresem. -ODDLYIELD = ODDLYIELD ## Zwraca rentowność papieru wartościowego z nietypowym ostatnim okresem. -PMT = PMT ## Zwraca wartość okresowej płatności raty rocznej. -PPMT = PPMT ## Zwraca wysokość spłaty kapitału w przypadku lokaty dla danego okresu. -PRICE = PRICE ## Zwraca cenę za 100 zł wartości nominalnej papieru wartościowego z oprocentowaniem okresowym. -PRICEDISC = PRICEDISC ## Zwraca cenę za 100 zł wartości nominalnej papieru wartościowego zdyskontowanego. -PRICEMAT = PRICEMAT ## Zwraca cenę za 100 zł wartości nominalnej papieru wartościowego z oprocentowaniem w terminie wykupu. -PV = PV ## Zwraca wartość bieżącą lokaty. -RATE = RATE ## Zwraca wysokość stopy procentowej w okresie raty rocznej. -RECEIVED = RECEIVED ## Zwraca wartość kapitału otrzymanego przy wykupie papieru wartościowego całkowicie ulokowanego. -SLN = SLN ## Zwraca amortyzację środka trwałego za jeden okres metodą liniową. -SYD = SYD ## Zwraca amortyzację środka trwałego za dany okres metodą sumy cyfr lat amortyzacji. -TBILLEQ = TBILLEQ ## Zwraca rentowność ekwiwalentu obligacji dla bonu skarbowego. -TBILLPRICE = TBILLPRICE ## Zwraca cenę za 100 zł wartości nominalnej bonu skarbowego. -TBILLYIELD = TBILLYIELD ## Zwraca rentowność bonu skarbowego. -VDB = VDB ## Oblicza amortyzację środka trwałego w danym okresie lub jego części metodą degresywną. -XIRR = XIRR ## Zwraca wartość wewnętrznej stopy zwrotu dla serii rozłożonych w czasie przepływów gotówkowych, niekoniecznie okresowych. -XNPV = XNPV ## Zwraca wartość bieżącą netto dla serii rozłożonych w czasie przepływów gotówkowych, niekoniecznie okresowych. -YIELD = YIELD ## Zwraca rentowność papieru wartościowego z oprocentowaniem okresowym. -YIELDDISC = YIELDDISC ## Zwraca roczną rentowność zdyskontowanego papieru wartościowego, na przykład bonu skarbowego. -YIELDMAT = YIELDMAT ## Zwraca roczną rentowność papieru wartościowego oprocentowanego przy wykupie. - - -## -## Information functions Funkcje informacyjne -## -CELL = KOMÓRKA ## Zwraca informacje o formacie, położeniu lub zawartości komórki. -ERROR.TYPE = NR.BŁĘDU ## Zwraca liczbę odpowiadającą typowi błędu. -INFO = INFO ## Zwraca informację o aktualnym środowisku pracy. -ISBLANK = CZY.PUSTA ## Zwraca wartość PRAWDA, jeśli wartość jest pusta. -ISERR = CZY.BŁ ## Zwraca wartość PRAWDA, jeśli wartość jest dowolną wartością błędu, z wyjątkiem #N/D!. -ISERROR = CZY.BŁĄD ## Zwraca wartość PRAWDA, jeśli wartość jest dowolną wartością błędu. -ISEVEN = ISEVEN ## Zwraca wartość PRAWDA, jeśli liczba jest parzysta. -ISLOGICAL = CZY.LOGICZNA ## Zwraca wartość PRAWDA, jeśli wartość jest wartością logiczną. -ISNA = CZY.BRAK ## Zwraca wartość PRAWDA, jeśli wartość jest wartością błędu #N/D!. -ISNONTEXT = CZY.NIE.TEKST ## Zwraca wartość PRAWDA, jeśli wartość nie jest tekstem. -ISNUMBER = CZY.LICZBA ## Zwraca wartość PRAWDA, jeśli wartość jest liczbą. -ISODD = ISODD ## Zwraca wartość PRAWDA, jeśli liczba jest nieparzysta. -ISREF = CZY.ADR ## Zwraca wartość PRAWDA, jeśli wartość jest odwołaniem. -ISTEXT = CZY.TEKST ## Zwraca wartość PRAWDA, jeśli wartość jest tekstem. -N = L ## Zwraca wartość przekonwertowaną na postać liczbową. -NA = BRAK ## Zwraca wartość błędu #N/D!. -TYPE = TYP ## Zwraca liczbę wskazującą typ danych wartości. - - -## -## Logical functions Funkcje logiczne -## -AND = ORAZ ## Zwraca wartość PRAWDA, jeśli wszystkie argumenty mają wartość PRAWDA. -FALSE = FAŁSZ ## Zwraca wartość logiczną FAŁSZ. -IF = JEŻELI ## Określa warunek logiczny do sprawdzenia. -IFERROR = JEŻELI.BŁĄD ## Zwraca określoną wartość, jeśli wynikiem obliczenia formuły jest błąd; w przeciwnym przypadku zwraca wynik formuły. -NOT = NIE ## Odwraca wartość logiczną argumentu. -OR = LUB ## Zwraca wartość PRAWDA, jeśli co najmniej jeden z argumentów ma wartość PRAWDA. -TRUE = PRAWDA ## Zwraca wartość logiczną PRAWDA. - - -## -## Lookup and reference functions Funkcje wyszukiwania i odwołań -## -ADDRESS = ADRES ## Zwraca odwołanie do jednej komórki w arkuszu jako wartość tekstową. -AREAS = OBSZARY ## Zwraca liczbę obszarów występujących w odwołaniu. -CHOOSE = WYBIERZ ## Wybiera wartość z listy wartości. -COLUMN = NR.KOLUMNY ## Zwraca numer kolumny z odwołania. -COLUMNS = LICZBA.KOLUMN ## Zwraca liczbę kolumn dla danego odwołania. -HLOOKUP = WYSZUKAJ.POZIOMO ## Przegląda górny wiersz tablicy i zwraca wartość wskazanej komórki. -HYPERLINK = HIPERŁĄCZE ## Tworzy skrót lub skok, który pozwala otwierać dokument przechowywany na serwerze sieciowym, w sieci intranet lub w Internecie. -INDEX = INDEKS ## Używa indeksu do wybierania wartości z odwołania lub tablicy. -INDIRECT = ADR.POŚR ## Zwraca odwołanie określone przez wartość tekstową. -LOOKUP = WYSZUKAJ ## Wyszukuje wartości w wektorze lub tablicy. -MATCH = PODAJ.POZYCJĘ ## Wyszukuje wartości w odwołaniu lub w tablicy. -OFFSET = PRZESUNIĘCIE ## Zwraca adres przesunięty od danego odwołania. -ROW = WIERSZ ## Zwraca numer wiersza odwołania. -ROWS = ILE.WIERSZY ## Zwraca liczbę wierszy dla danego odwołania. -RTD = RTD ## Pobiera dane w czasie rzeczywistym z programu obsługującego automatyzację COM (Automatyzacja: Sposób pracy z obiektami aplikacji pochodzącymi z innej aplikacji lub narzędzia projektowania. Nazywana wcześniej Automatyzacją OLE, Automatyzacja jest standardem przemysłowym i funkcją obiektowego modelu składników (COM, Component Object Model).). -TRANSPOSE = TRANSPONUJ ## Zwraca transponowaną tablicę. -VLOOKUP = WYSZUKAJ.PIONOWO ## Przeszukuje pierwszą kolumnę tablicy i przechodzi wzdłuż wiersza, aby zwrócić wartość komórki. - - -## -## Math and trigonometry functions Funkcje matematyczne i trygonometryczne -## -ABS = MODUŁ.LICZBY ## Zwraca wartość absolutną liczby. -ACOS = ACOS ## Zwraca arcus cosinus liczby. -ACOSH = ACOSH ## Zwraca arcus cosinus hiperboliczny liczby. -ASIN = ASIN ## Zwraca arcus sinus liczby. -ASINH = ASINH ## Zwraca arcus sinus hiperboliczny liczby. -ATAN = ATAN ## Zwraca arcus tangens liczby. -ATAN2 = ATAN2 ## Zwraca arcus tangens liczby na podstawie współrzędnych x i y. -ATANH = ATANH ## Zwraca arcus tangens hiperboliczny liczby. -CEILING = ZAOKR.W.GÓRĘ ## Zaokrągla liczbę do najbliższej liczby całkowitej lub do najbliższej wielokrotności dokładności. -COMBIN = KOMBINACJE ## Zwraca liczbę kombinacji dla danej liczby obiektów. -COS = COS ## Zwraca cosinus liczby. -COSH = COSH ## Zwraca cosinus hiperboliczny liczby. -DEGREES = STOPNIE ## Konwertuje radiany na stopnie. -EVEN = ZAOKR.DO.PARZ ## Zaokrągla liczbę w górę do najbliższej liczby parzystej. -EXP = EXP ## Zwraca wartość liczby e podniesionej do potęgi określonej przez podaną liczbę. -FACT = SILNIA ## Zwraca silnię liczby. -FACTDOUBLE = FACTDOUBLE ## Zwraca podwójną silnię liczby. -FLOOR = ZAOKR.W.DÓŁ ## Zaokrągla liczbę w dół, w kierunku zera. -GCD = GCD ## Zwraca największy wspólny dzielnik. -INT = ZAOKR.DO.CAŁK ## Zaokrągla liczbę w dół do najbliższej liczby całkowitej. -LCM = LCM ## Zwraca najmniejszą wspólną wielokrotność. -LN = LN ## Zwraca logarytm naturalny podanej liczby. -LOG = LOG ## Zwraca logarytm danej liczby przy zadanej podstawie. -LOG10 = LOG10 ## Zwraca logarytm dziesiętny liczby. -MDETERM = WYZNACZNIK.MACIERZY ## Zwraca wyznacznik macierzy tablicy. -MINVERSE = MACIERZ.ODW ## Zwraca odwrotność macierzy tablicy. -MMULT = MACIERZ.ILOCZYN ## Zwraca iloczyn macierzy dwóch tablic. -MOD = MOD ## Zwraca resztę z dzielenia. -MROUND = MROUND ## Zwraca liczbę zaokrągloną do żądanej wielokrotności. -MULTINOMIAL = MULTINOMIAL ## Zwraca wielomian dla zbioru liczb. -ODD = ZAOKR.DO.NPARZ ## Zaokrągla liczbę w górę do najbliższej liczby nieparzystej. -PI = PI ## Zwraca wartość liczby Pi. -POWER = POTĘGA ## Zwraca liczbę podniesioną do potęgi. -PRODUCT = ILOCZYN ## Mnoży argumenty. -QUOTIENT = QUOTIENT ## Zwraca iloraz (całkowity). -RADIANS = RADIANY ## Konwertuje stopnie na radiany. -RAND = LOS ## Zwraca liczbę pseudolosową z zakresu od 0 do 1. -RANDBETWEEN = RANDBETWEEN ## Zwraca liczbę pseudolosową z zakresu określonego przez podane argumenty. -ROMAN = RZYMSKIE ## Konwertuje liczbę arabską na rzymską jako tekst. -ROUND = ZAOKR ## Zaokrągla liczbę do określonej liczby cyfr. -ROUNDDOWN = ZAOKR.DÓŁ ## Zaokrągla liczbę w dół, w kierunku zera. -ROUNDUP = ZAOKR.GÓRA ## Zaokrągla liczbę w górę, w kierunku od zera. -SERIESSUM = SERIESSUM ## Zwraca sumę szeregu potęgowego na podstawie wzoru. -SIGN = ZNAK.LICZBY ## Zwraca znak liczby. -SIN = SIN ## Zwraca sinus danego kąta. -SINH = SINH ## Zwraca sinus hiperboliczny liczby. -SQRT = PIERWIASTEK ## Zwraca dodatni pierwiastek kwadratowy. -SQRTPI = SQRTPI ## Zwraca pierwiastek kwadratowy iloczynu (liczba * Pi). -SUBTOTAL = SUMY.POŚREDNIE ## Zwraca sumę częściową listy lub bazy danych. -SUM = SUMA ## Dodaje argumenty. -SUMIF = SUMA.JEŻELI ## Dodaje komórki określone przez podane kryterium. -SUMIFS = SUMA.WARUNKÓW ## Dodaje komórki w zakresie, które spełniają wiele kryteriów. -SUMPRODUCT = SUMA.ILOCZYNÓW ## Zwraca sumę iloczynów odpowiednich elementów tablicy. -SUMSQ = SUMA.KWADRATÓW ## Zwraca sumę kwadratów argumentów. -SUMX2MY2 = SUMA.X2.M.Y2 ## Zwraca sumę różnic kwadratów odpowiednich wartości w dwóch tablicach. -SUMX2PY2 = SUMA.X2.P.Y2 ## Zwraca sumę sum kwadratów odpowiednich wartości w dwóch tablicach. -SUMXMY2 = SUMA.XMY.2 ## Zwraca sumę kwadratów różnic odpowiednich wartości w dwóch tablicach. -TAN = TAN ## Zwraca tangens liczby. -TANH = TANH ## Zwraca tangens hiperboliczny liczby. -TRUNC = LICZBA.CAŁK ## Przycina liczbę do wartości całkowitej. - - -## -## Statistical functions Funkcje statystyczne -## -AVEDEV = ODCH.ŚREDNIE ## Zwraca średnią wartość odchyleń absolutnych punktów danych od ich wartości średniej. -AVERAGE = ŚREDNIA ## Zwraca wartość średnią argumentów. -AVERAGEA = ŚREDNIA.A ## Zwraca wartość średnią argumentów, z uwzględnieniem liczb, tekstów i wartości logicznych. -AVERAGEIF = ŚREDNIA.JEŻELI ## Zwraca średnią (średnią arytmetyczną) wszystkich komórek w zakresie, które spełniają podane kryteria. -AVERAGEIFS = ŚREDNIA.WARUNKÓW ## Zwraca średnią (średnią arytmetyczną) wszystkich komórek, które spełniają jedno lub więcej kryteriów. -BETADIST = ROZKŁAD.BETA ## Zwraca skumulowaną funkcję gęstości prawdopodobieństwa beta. -BETAINV = ROZKŁAD.BETA.ODW ## Zwraca odwrotność skumulowanej funkcji gęstości prawdopodobieństwa beta. -BINOMDIST = ROZKŁAD.DWUM ## Zwraca pojedynczy składnik dwumianowego rozkładu prawdopodobieństwa. -CHIDIST = ROZKŁAD.CHI ## Zwraca wartość jednostronnego prawdopodobieństwa rozkładu chi-kwadrat. -CHIINV = ROZKŁAD.CHI.ODW ## Zwraca odwrotność wartości jednostronnego prawdopodobieństwa rozkładu chi-kwadrat. -CHITEST = TEST.CHI ## Zwraca test niezależności. -CONFIDENCE = UFNOŚĆ ## Zwraca interwał ufności dla średniej populacji. -CORREL = WSP.KORELACJI ## Zwraca współczynnik korelacji dwóch zbiorów danych. -COUNT = ILE.LICZB ## Zlicza liczby znajdujące się na liście argumentów. -COUNTA = ILE.NIEPUSTYCH ## Zlicza wartości znajdujące się na liście argumentów. -COUNTBLANK = LICZ.PUSTE ## Zwraca liczbę pustych komórek w pewnym zakresie. -COUNTIF = LICZ.JEŻELI ## Zlicza komórki wewnątrz zakresu, które spełniają podane kryteria. -COUNTIFS = LICZ.WARUNKI ## Zlicza komórki wewnątrz zakresu, które spełniają wiele kryteriów. -COVAR = KOWARIANCJA ## Zwraca kowariancję, czyli średnią wartość iloczynów odpowiednich odchyleń. -CRITBINOM = PRÓG.ROZKŁAD.DWUM ## Zwraca najmniejszą wartość, dla której skumulowany rozkład dwumianowy jest mniejszy niż wartość kryterium lub równy jej. -DEVSQ = ODCH.KWADRATOWE ## Zwraca sumę kwadratów odchyleń. -EXPONDIST = ROZKŁAD.EXP ## Zwraca rozkład wykładniczy. -FDIST = ROZKŁAD.F ## Zwraca rozkład prawdopodobieństwa F. -FINV = ROZKŁAD.F.ODW ## Zwraca odwrotność rozkładu prawdopodobieństwa F. -FISHER = ROZKŁAD.FISHER ## Zwraca transformację Fishera. -FISHERINV = ROZKŁAD.FISHER.ODW ## Zwraca odwrotność transformacji Fishera. -FORECAST = REGLINX ## Zwraca wartość trendu liniowego. -FREQUENCY = CZĘSTOŚĆ ## Zwraca rozkład częstotliwości jako tablicę pionową. -FTEST = TEST.F ## Zwraca wynik testu F. -GAMMADIST = ROZKŁAD.GAMMA ## Zwraca rozkład gamma. -GAMMAINV = ROZKŁAD.GAMMA.ODW ## Zwraca odwrotność skumulowanego rozkładu gamma. -GAMMALN = ROZKŁAD.LIN.GAMMA ## Zwraca logarytm naturalny funkcji gamma, Γ(x). -GEOMEAN = ŚREDNIA.GEOMETRYCZNA ## Zwraca średnią geometryczną. -GROWTH = REGEXPW ## Zwraca wartości trendu wykładniczego. -HARMEAN = ŚREDNIA.HARMONICZNA ## Zwraca średnią harmoniczną. -HYPGEOMDIST = ROZKŁAD.HIPERGEOM ## Zwraca rozkład hipergeometryczny. -INTERCEPT = ODCIĘTA ## Zwraca punkt przecięcia osi pionowej z linią regresji liniowej. -KURT = KURTOZA ## Zwraca kurtozę zbioru danych. -LARGE = MAX.K ## Zwraca k-tą największą wartość ze zbioru danych. -LINEST = REGLINP ## Zwraca parametry trendu liniowego. -LOGEST = REGEXPP ## Zwraca parametry trendu wykładniczego. -LOGINV = ROZKŁAD.LOG.ODW ## Zwraca odwrotność rozkładu logarytmu naturalnego. -LOGNORMDIST = ROZKŁAD.LOG ## Zwraca skumulowany rozkład logarytmu naturalnego. -MAX = MAX ## Zwraca maksymalną wartość listy argumentów. -MAXA = MAX.A ## Zwraca maksymalną wartość listy argumentów, z uwzględnieniem liczb, tekstów i wartości logicznych. -MEDIAN = MEDIANA ## Zwraca medianę podanych liczb. -MIN = MIN ## Zwraca minimalną wartość listy argumentów. -MINA = MIN.A ## Zwraca najmniejszą wartość listy argumentów, z uwzględnieniem liczb, tekstów i wartości logicznych. -MODE = WYST.NAJCZĘŚCIEJ ## Zwraca wartość najczęściej występującą w zbiorze danych. -NEGBINOMDIST = ROZKŁAD.DWUM.PRZEC ## Zwraca ujemny rozkład dwumianowy. -NORMDIST = ROZKŁAD.NORMALNY ## Zwraca rozkład normalny skumulowany. -NORMINV = ROZKŁAD.NORMALNY.ODW ## Zwraca odwrotność rozkładu normalnego skumulowanego. -NORMSDIST = ROZKŁAD.NORMALNY.S ## Zwraca standardowy rozkład normalny skumulowany. -NORMSINV = ROZKŁAD.NORMALNY.S.ODW ## Zwraca odwrotność standardowego rozkładu normalnego skumulowanego. -PEARSON = PEARSON ## Zwraca współczynnik korelacji momentu iloczynu Pearsona. -PERCENTILE = PERCENTYL ## Wyznacza k-ty percentyl wartości w zakresie. -PERCENTRANK = PROCENT.POZYCJA ## Zwraca procentową pozycję wartości w zbiorze danych. -PERMUT = PERMUTACJE ## Zwraca liczbę permutacji dla danej liczby obiektów. -POISSON = ROZKŁAD.POISSON ## Zwraca rozkład Poissona. -PROB = PRAWDPD ## Zwraca prawdopodobieństwo, że wartości w zakresie leżą pomiędzy dwiema granicami. -QUARTILE = KWARTYL ## Wyznacza kwartyl zbioru danych. -RANK = POZYCJA ## Zwraca pozycję liczby na liście liczb. -RSQ = R.KWADRAT ## Zwraca kwadrat współczynnika korelacji momentu iloczynu Pearsona. -SKEW = SKOŚNOŚĆ ## Zwraca skośność rozkładu. -SLOPE = NACHYLENIE ## Zwraca nachylenie linii regresji liniowej. -SMALL = MIN.K ## Zwraca k-tą najmniejszą wartość ze zbioru danych. -STANDARDIZE = NORMALIZUJ ## Zwraca wartość znormalizowaną. -STDEV = ODCH.STANDARDOWE ## Szacuje odchylenie standardowe na podstawie próbki. -STDEVA = ODCH.STANDARDOWE.A ## Szacuje odchylenie standardowe na podstawie próbki, z uwzględnieniem liczb, tekstów i wartości logicznych. -STDEVP = ODCH.STANDARD.POPUL ## Oblicza odchylenie standardowe na podstawie całej populacji. -STDEVPA = ODCH.STANDARD.POPUL.A ## Oblicza odchylenie standardowe na podstawie całej populacji, z uwzględnieniem liczb, teksów i wartości logicznych. -STEYX = REGBŁSTD ## Zwraca błąd standardowy przewidzianej wartości y dla każdej wartości x w regresji. -TDIST = ROZKŁAD.T ## Zwraca rozkład t-Studenta. -TINV = ROZKŁAD.T.ODW ## Zwraca odwrotność rozkładu t-Studenta. -TREND = REGLINW ## Zwraca wartości trendu liniowego. -TRIMMEAN = ŚREDNIA.WEWN ## Zwraca średnią wartość dla wnętrza zbioru danych. -TTEST = TEST.T ## Zwraca prawdopodobieństwo związane z testem t-Studenta. -VAR = WARIANCJA ## Szacuje wariancję na podstawie próbki. -VARA = WARIANCJA.A ## Szacuje wariancję na podstawie próbki, z uwzględnieniem liczb, tekstów i wartości logicznych. -VARP = WARIANCJA.POPUL ## Oblicza wariancję na podstawie całej populacji. -VARPA = WARIANCJA.POPUL.A ## Oblicza wariancję na podstawie całej populacji, z uwzględnieniem liczb, tekstów i wartości logicznych. -WEIBULL = ROZKŁAD.WEIBULL ## Zwraca rozkład Weibulla. -ZTEST = TEST.Z ## Zwraca wartość jednostronnego prawdopodobieństwa testu z. - - -## -## Text functions Funkcje tekstowe -## -ASC = ASC ## Zamienia litery angielskie lub katakana o pełnej szerokości (dwubajtowe) w ciągu znaków na znaki o szerokości połówkowej (jednobajtowe). -BAHTTEXT = BAHTTEXT ## Konwertuje liczbę na tekst, stosując format walutowy ß (baht). -CHAR = ZNAK ## Zwraca znak o podanym numerze kodu. -CLEAN = OCZYŚĆ ## Usuwa z tekstu wszystkie znaki, które nie mogą być drukowane. -CODE = KOD ## Zwraca kod numeryczny pierwszego znaku w ciągu tekstowym. -CONCATENATE = ZŁĄCZ.TEKSTY ## Łączy kilka oddzielnych tekstów w jeden tekst. -DOLLAR = KWOTA ## Konwertuje liczbę na tekst, stosując format walutowy $ (dolar). -EXACT = PORÓWNAJ ## Sprawdza identyczność dwóch wartości tekstowych. -FIND = ZNAJDŹ ## Znajduje jedną wartość tekstową wewnątrz innej (z uwzględnieniem wielkich i małych liter). -FINDB = ZNAJDŹB ## Znajduje jedną wartość tekstową wewnątrz innej (z uwzględnieniem wielkich i małych liter). -FIXED = ZAOKR.DO.TEKST ## Formatuje liczbę jako tekst przy stałej liczbie miejsc dziesiętnych. -JIS = JIS ## Zmienia litery angielskie lub katakana o szerokości połówkowej (jednobajtowe) w ciągu znaków na znaki o pełnej szerokości (dwubajtowe). -LEFT = LEWY ## Zwraca skrajne lewe znaki z wartości tekstowej. -LEFTB = LEWYB ## Zwraca skrajne lewe znaki z wartości tekstowej. -LEN = DŁ ## Zwraca liczbę znaków ciągu tekstowego. -LENB = DŁ.B ## Zwraca liczbę znaków ciągu tekstowego. -LOWER = LITERY.MAŁE ## Konwertuje wielkie litery tekstu na małe litery. -MID = FRAGMENT.TEKSTU ## Zwraca określoną liczbę znaków z ciągu tekstowego, zaczynając od zadanej pozycji. -MIDB = FRAGMENT.TEKSTU.B ## Zwraca określoną liczbę znaków z ciągu tekstowego, zaczynając od zadanej pozycji. -PHONETIC = PHONETIC ## Wybiera znaki fonetyczne (furigana) z ciągu tekstowego. -PROPER = Z.WIELKIEJ.LITERY ## Zastępuje pierwszą literę każdego wyrazu tekstu wielką literą. -REPLACE = ZASTĄP ## Zastępuje znaki w tekście. -REPLACEB = ZASTĄP.B ## Zastępuje znaki w tekście. -REPT = POWT ## Powiela tekst daną liczbę razy. -RIGHT = PRAWY ## Zwraca skrajne prawe znaki z wartości tekstowej. -RIGHTB = PRAWYB ## Zwraca skrajne prawe znaki z wartości tekstowej. -SEARCH = SZUKAJ.TEKST ## Wyszukuje jedną wartość tekstową wewnątrz innej (bez uwzględniania wielkości liter). -SEARCHB = SZUKAJ.TEKST.B ## Wyszukuje jedną wartość tekstową wewnątrz innej (bez uwzględniania wielkości liter). -SUBSTITUTE = PODSTAW ## Podstawia nowy tekst w miejsce poprzedniego tekstu w ciągu tekstowym. -T = T ## Konwertuje argumenty na tekst. -TEXT = TEKST ## Formatuje liczbę i konwertuje ją na tekst. -TRIM = USUŃ.ZBĘDNE.ODSTĘPY ## Usuwa spacje z tekstu. -UPPER = LITERY.WIELKIE ## Konwertuje znaki tekstu na wielkie litery. -VALUE = WARTOŚĆ ## Konwertuje argument tekstowy na liczbę. diff --git a/application/third_party/PHPExcel/locale/pt/br/config b/application/third_party/PHPExcel/locale/pt/br/config deleted file mode 100644 index 45b6fbd9..00000000 --- a/application/third_party/PHPExcel/locale/pt/br/config +++ /dev/null @@ -1,47 +0,0 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Settings -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## - - -ArgumentSeparator = ; - - -## -## (For future use) -## -currencySymbol = R$ - - -## -## Excel Error Codes (For future use) -## -NULL = #NULO! -DIV0 = #DIV/0! -VALUE = #VALOR! -REF = #REF! -NAME = #NOME? -NUM = #NÚM! -NA = #N/D diff --git a/application/third_party/PHPExcel/locale/pt/br/functions b/application/third_party/PHPExcel/locale/pt/br/functions deleted file mode 100644 index a062a7fa..00000000 --- a/application/third_party/PHPExcel/locale/pt/br/functions +++ /dev/null @@ -1,408 +0,0 @@ -## -## Add-in and Automation functions Funções Suplemento e Automação -## -GETPIVOTDATA = INFODADOSTABELADINÂMICA ## Retorna os dados armazenados em um relatório de tabela dinâmica - - -## -## Cube functions Funções de Cubo -## -CUBEKPIMEMBER = MEMBROKPICUBO ## Retorna o nome de um KPI (indicador de desempenho-chave), uma propriedade e uma medida e exibe o nome e a propriedade na célula. Um KPI é uma medida quantificável, como o lucro bruto mensal ou a rotatividade trimestral dos funcionários, usada para monitorar o desempenho de uma organização. -CUBEMEMBER = MEMBROCUBO ## Retorna um membro ou tupla em uma hierarquia de cubo. Use para validar se o membro ou tupla existe no cubo. -CUBEMEMBERPROPERTY = PROPRIEDADEMEMBROCUBO ## Retorna o valor da propriedade de um membro no cubo. Usada para validar a existência do nome do membro no cubo e para retornar a propriedade especificada para esse membro. -CUBERANKEDMEMBER = MEMBROCLASSIFICADOCUBO ## Retorna o enésimo membro, ou o membro ordenado, em um conjunto. Use para retornar um ou mais elementos em um conjunto, assim como o melhor vendedor ou os dez melhores alunos. -CUBESET = CONJUNTOCUBO ## Define um conjunto calculado de membros ou tuplas enviando uma expressão do conjunto para o cubo no servidor, que cria o conjunto e o retorna para o Microsoft Office Excel. -CUBESETCOUNT = CONTAGEMCONJUNTOCUBO ## Retorna o número de itens em um conjunto. -CUBEVALUE = VALORCUBO ## Retorna um valor agregado de um cubo. - - -## -## Database functions Funções de banco de dados -## -DAVERAGE = BDMÉDIA ## Retorna a média das entradas selecionadas de um banco de dados -DCOUNT = BDCONTAR ## Conta as células que contêm números em um banco de dados -DCOUNTA = BDCONTARA ## Conta células não vazias em um banco de dados -DGET = BDEXTRAIR ## Extrai de um banco de dados um único registro que corresponde a um critério específico -DMAX = BDMÁX ## Retorna o valor máximo de entradas selecionadas de um banco de dados -DMIN = BDMÍN ## Retorna o valor mínimo de entradas selecionadas de um banco de dados -DPRODUCT = BDMULTIPL ## Multiplica os valores em um campo específico de registros que correspondem ao critério em um banco de dados -DSTDEV = BDEST ## Estima o desvio padrão com base em uma amostra de entradas selecionadas de um banco de dados -DSTDEVP = BDDESVPA ## Calcula o desvio padrão com base na população inteira de entradas selecionadas de um banco de dados -DSUM = BDSOMA ## Adiciona os números à coluna de campos de registros do banco de dados que correspondem ao critério -DVAR = BDVAREST ## Estima a variância com base em uma amostra de entradas selecionadas de um banco de dados -DVARP = BDVARP ## Calcula a variância com base na população inteira de entradas selecionadas de um banco de dados - - -## -## Date and time functions Funções de data e hora -## -DATE = DATA ## Retorna o número de série de uma data específica -DATEVALUE = DATA.VALOR ## Converte uma data na forma de texto para um número de série -DAY = DIA ## Converte um número de série em um dia do mês -DAYS360 = DIAS360 ## Calcula o número de dias entre duas datas com base em um ano de 360 dias -EDATE = DATAM ## Retorna o número de série da data que é o número indicado de meses antes ou depois da data inicial -EOMONTH = FIMMÊS ## Retorna o número de série do último dia do mês antes ou depois de um número especificado de meses -HOUR = HORA ## Converte um número de série em uma hora -MINUTE = MINUTO ## Converte um número de série em um minuto -MONTH = MÊS ## Converte um número de série em um mês -NETWORKDAYS = DIATRABALHOTOTAL ## Retorna o número de dias úteis inteiros entre duas datas -NOW = AGORA ## Retorna o número de série seqüencial da data e hora atuais -SECOND = SEGUNDO ## Converte um número de série em um segundo -TIME = HORA ## Retorna o número de série de uma hora específica -TIMEVALUE = VALOR.TEMPO ## Converte um horário na forma de texto para um número de série -TODAY = HOJE ## Retorna o número de série da data de hoje -WEEKDAY = DIA.DA.SEMANA ## Converte um número de série em um dia da semana -WEEKNUM = NÚMSEMANA ## Converte um número de série em um número que representa onde a semana cai numericamente em um ano -WORKDAY = DIATRABALHO ## Retorna o número de série da data antes ou depois de um número específico de dias úteis -YEAR = ANO ## Converte um número de série em um ano -YEARFRAC = FRAÇÃOANO ## Retorna a fração do ano que representa o número de dias entre data_inicial e data_final - - -## -## Engineering functions Funções de engenharia -## -BESSELI = BESSELI ## Retorna a função de Bessel In(x) modificada -BESSELJ = BESSELJ ## Retorna a função de Bessel Jn(x) -BESSELK = BESSELK ## Retorna a função de Bessel Kn(x) modificada -BESSELY = BESSELY ## Retorna a função de Bessel Yn(x) -BIN2DEC = BIN2DEC ## Converte um número binário em decimal -BIN2HEX = BIN2HEX ## Converte um número binário em hexadecimal -BIN2OCT = BIN2OCT ## Converte um número binário em octal -COMPLEX = COMPLEX ## Converte coeficientes reais e imaginários e um número complexo -CONVERT = CONVERTER ## Converte um número de um sistema de medida para outro -DEC2BIN = DECABIN ## Converte um número decimal em binário -DEC2HEX = DECAHEX ## Converte um número decimal em hexadecimal -DEC2OCT = DECAOCT ## Converte um número decimal em octal -DELTA = DELTA ## Testa se dois valores são iguais -ERF = FUNERRO ## Retorna a função de erro -ERFC = FUNERROCOMPL ## Retorna a função de erro complementar -GESTEP = DEGRAU ## Testa se um número é maior do que um valor limite -HEX2BIN = HEXABIN ## Converte um número hexadecimal em binário -HEX2DEC = HEXADEC ## Converte um número hexadecimal em decimal -HEX2OCT = HEXAOCT ## Converte um número hexadecimal em octal -IMABS = IMABS ## Retorna o valor absoluto (módulo) de um número complexo -IMAGINARY = IMAGINÁRIO ## Retorna o coeficiente imaginário de um número complexo -IMARGUMENT = IMARG ## Retorna o argumento teta, um ângulo expresso em radianos -IMCONJUGATE = IMCONJ ## Retorna o conjugado complexo de um número complexo -IMCOS = IMCOS ## Retorna o cosseno de um número complexo -IMDIV = IMDIV ## Retorna o quociente de dois números complexos -IMEXP = IMEXP ## Retorna o exponencial de um número complexo -IMLN = IMLN ## Retorna o logaritmo natural de um número complexo -IMLOG10 = IMLOG10 ## Retorna o logaritmo de base 10 de um número complexo -IMLOG2 = IMLOG2 ## Retorna o logaritmo de base 2 de um número complexo -IMPOWER = IMPOT ## Retorna um número complexo elevado a uma potência inteira -IMPRODUCT = IMPROD ## Retorna o produto de números complexos -IMREAL = IMREAL ## Retorna o coeficiente real de um número complexo -IMSIN = IMSENO ## Retorna o seno de um número complexo -IMSQRT = IMRAIZ ## Retorna a raiz quadrada de um número complexo -IMSUB = IMSUBTR ## Retorna a diferença entre dois números complexos -IMSUM = IMSOMA ## Retorna a soma de números complexos -OCT2BIN = OCTABIN ## Converte um número octal em binário -OCT2DEC = OCTADEC ## Converte um número octal em decimal -OCT2HEX = OCTAHEX ## Converte um número octal em hexadecimal - - -## -## Financial functions Funções financeiras -## -ACCRINT = JUROSACUM ## Retorna a taxa de juros acumulados de um título que paga uma taxa periódica de juros -ACCRINTM = JUROSACUMV ## Retorna os juros acumulados de um título que paga juros no vencimento -AMORDEGRC = AMORDEGRC ## Retorna a depreciação para cada período contábil usando o coeficiente de depreciação -AMORLINC = AMORLINC ## Retorna a depreciação para cada período contábil -COUPDAYBS = CUPDIASINLIQ ## Retorna o número de dias do início do período de cupom até a data de liquidação -COUPDAYS = CUPDIAS ## Retorna o número de dias no período de cupom que contém a data de quitação -COUPDAYSNC = CUPDIASPRÓX ## Retorna o número de dias da data de liquidação até a data do próximo cupom -COUPNCD = CUPDATAPRÓX ## Retorna a próxima data de cupom após a data de quitação -COUPNUM = CUPNÚM ## Retorna o número de cupons pagáveis entre as datas de quitação e vencimento -COUPPCD = CUPDATAANT ## Retorna a data de cupom anterior à data de quitação -CUMIPMT = PGTOJURACUM ## Retorna os juros acumulados pagos entre dois períodos -CUMPRINC = PGTOCAPACUM ## Retorna o capital acumulado pago sobre um empréstimo entre dois períodos -DB = BD ## Retorna a depreciação de um ativo para um período especificado, usando o método de balanço de declínio fixo -DDB = BDD ## Retorna a depreciação de um ativo com relação a um período especificado usando o método de saldos decrescentes duplos ou qualquer outro método especificado por você -DISC = DESC ## Retorna a taxa de desconto de um título -DOLLARDE = MOEDADEC ## Converte um preço em formato de moeda, na forma fracionária, em um preço na forma decimal -DOLLARFR = MOEDAFRA ## Converte um preço, apresentado na forma decimal, em um preço apresentado na forma fracionária -DURATION = DURAÇÃO ## Retorna a duração anual de um título com pagamentos de juros periódicos -EFFECT = EFETIVA ## Retorna a taxa de juros anual efetiva -FV = VF ## Retorna o valor futuro de um investimento -FVSCHEDULE = VFPLANO ## Retorna o valor futuro de um capital inicial após a aplicação de uma série de taxas de juros compostas -INTRATE = TAXAJUROS ## Retorna a taxa de juros de um título totalmente investido -IPMT = IPGTO ## Retorna o pagamento de juros para um investimento em um determinado período -IRR = TIR ## Retorna a taxa interna de retorno de uma série de fluxos de caixa -ISPMT = ÉPGTO ## Calcula os juros pagos durante um período específico de um investimento -MDURATION = MDURAÇÃO ## Retorna a duração de Macauley modificada para um título com um valor de paridade equivalente a R$ 100 -MIRR = MTIR ## Calcula a taxa interna de retorno em que fluxos de caixa positivos e negativos são financiados com diferentes taxas -NOMINAL = NOMINAL ## Retorna a taxa de juros nominal anual -NPER = NPER ## Retorna o número de períodos de um investimento -NPV = VPL ## Retorna o valor líquido atual de um investimento com base em uma série de fluxos de caixa periódicos e em uma taxa de desconto -ODDFPRICE = PREÇOPRIMINC ## Retorna o preço por R$ 100 de valor nominal de um título com um primeiro período indefinido -ODDFYIELD = LUCROPRIMINC ## Retorna o rendimento de um título com um primeiro período indefinido -ODDLPRICE = PREÇOÚLTINC ## Retorna o preço por R$ 100 de valor nominal de um título com um último período de cupom indefinido -ODDLYIELD = LUCROÚLTINC ## Retorna o rendimento de um título com um último período indefinido -PMT = PGTO ## Retorna o pagamento periódico de uma anuidade -PPMT = PPGTO ## Retorna o pagamento de capital para determinado período de investimento -PRICE = PREÇO ## Retorna a preço por R$ 100,00 de valor nominal de um título que paga juros periódicos -PRICEDISC = PREÇODESC ## Retorna o preço por R$ 100,00 de valor nominal de um título descontado -PRICEMAT = PREÇOVENC ## Retorna o preço por R$ 100,00 de valor nominal de um título que paga juros no vencimento -PV = VP ## Retorna o valor presente de um investimento -RATE = TAXA ## Retorna a taxa de juros por período de uma anuidade -RECEIVED = RECEBER ## Retorna a quantia recebida no vencimento de um título totalmente investido -SLN = DPD ## Retorna a depreciação em linha reta de um ativo durante um período -SYD = SDA ## Retorna a depreciação dos dígitos da soma dos anos de um ativo para um período especificado -TBILLEQ = OTN ## Retorna o rendimento de um título equivalente a uma obrigação do Tesouro -TBILLPRICE = OTNVALOR ## Retorna o preço por R$ 100,00 de valor nominal de uma obrigação do Tesouro -TBILLYIELD = OTNLUCRO ## Retorna o rendimento de uma obrigação do Tesouro -VDB = BDV ## Retorna a depreciação de um ativo para um período especificado ou parcial usando um método de balanço declinante -XIRR = XTIR ## Fornece a taxa interna de retorno para um programa de fluxos de caixa que não é necessariamente periódico -XNPV = XVPL ## Retorna o valor presente líquido de um programa de fluxos de caixa que não é necessariamente periódico -YIELD = LUCRO ## Retorna o lucro de um título que paga juros periódicos -YIELDDISC = LUCRODESC ## Retorna o rendimento anual de um título descontado. Por exemplo, uma obrigação do Tesouro -YIELDMAT = LUCROVENC ## Retorna o lucro anual de um título que paga juros no vencimento - - -## -## Information functions Funções de informação -## -CELL = CÉL ## Retorna informações sobre formatação, localização ou conteúdo de uma célula -ERROR.TYPE = TIPO.ERRO ## Retorna um número correspondente a um tipo de erro -INFO = INFORMAÇÃO ## Retorna informações sobre o ambiente operacional atual -ISBLANK = ÉCÉL.VAZIA ## Retorna VERDADEIRO se o valor for vazio -ISERR = ÉERRO ## Retorna VERDADEIRO se o valor for um valor de erro diferente de #N/D -ISERROR = ÉERROS ## Retorna VERDADEIRO se o valor for um valor de erro -ISEVEN = ÉPAR ## Retorna VERDADEIRO se o número for par -ISLOGICAL = ÉLÓGICO ## Retorna VERDADEIRO se o valor for um valor lógico -ISNA = É.NÃO.DISP ## Retorna VERDADEIRO se o valor for o valor de erro #N/D -ISNONTEXT = É.NÃO.TEXTO ## Retorna VERDADEIRO se o valor for diferente de texto -ISNUMBER = ÉNÚM ## Retorna VERDADEIRO se o valor for um número -ISODD = ÉIMPAR ## Retorna VERDADEIRO se o número for ímpar -ISREF = ÉREF ## Retorna VERDADEIRO se o valor for uma referência -ISTEXT = ÉTEXTO ## Retorna VERDADEIRO se o valor for texto -N = N ## Retorna um valor convertido em um número -NA = NÃO.DISP ## Retorna o valor de erro #N/D -TYPE = TIPO ## Retorna um número indicando o tipo de dados de um valor - - -## -## Logical functions Funções lógicas -## -AND = E ## Retorna VERDADEIRO se todos os seus argumentos forem VERDADEIROS -FALSE = FALSO ## Retorna o valor lógico FALSO -IF = SE ## Especifica um teste lógico a ser executado -IFERROR = SEERRO ## Retornará um valor que você especifica se uma fórmula for avaliada para um erro; do contrário, retornará o resultado da fórmula -NOT = NÃO ## Inverte o valor lógico do argumento -OR = OU ## Retorna VERDADEIRO se um dos argumentos for VERDADEIRO -TRUE = VERDADEIRO ## Retorna o valor lógico VERDADEIRO - - -## -## Lookup and reference functions Funções de pesquisa e referência -## -ADDRESS = ENDEREÇO ## Retorna uma referência como texto para uma única célula em uma planilha -AREAS = ÁREAS ## Retorna o número de áreas em uma referência -CHOOSE = ESCOLHER ## Escolhe um valor a partir de uma lista de valores -COLUMN = COL ## Retorna o número da coluna de uma referência -COLUMNS = COLS ## Retorna o número de colunas em uma referência -HLOOKUP = PROCH ## Procura na linha superior de uma matriz e retorna o valor da célula especificada -HYPERLINK = HYPERLINK ## Cria um atalho ou salto que abre um documento armazenado em um servidor de rede, uma intranet ou na Internet -INDEX = ÍNDICE ## Usa um índice para escolher um valor de uma referência ou matriz -INDIRECT = INDIRETO ## Retorna uma referência indicada por um valor de texto -LOOKUP = PROC ## Procura valores em um vetor ou em uma matriz -MATCH = CORRESP ## Procura valores em uma referência ou em uma matriz -OFFSET = DESLOC ## Retorna um deslocamento de referência com base em uma determinada referência -ROW = LIN ## Retorna o número da linha de uma referência -ROWS = LINS ## Retorna o número de linhas em uma referência -RTD = RTD ## Recupera dados em tempo real de um programa que ofereça suporte a automação COM (automação: uma forma de trabalhar com objetos de um aplicativo a partir de outro aplicativo ou ferramenta de desenvolvimento. Chamada inicialmente de automação OLE, a automação é um padrão industrial e um recurso do modelo de objeto componente (COM).) -TRANSPOSE = TRANSPOR ## Retorna a transposição de uma matriz -VLOOKUP = PROCV ## Procura na primeira coluna de uma matriz e move ao longo da linha para retornar o valor de uma célula - - -## -## Math and trigonometry functions Funções matemáticas e trigonométricas -## -ABS = ABS ## Retorna o valor absoluto de um número -ACOS = ACOS ## Retorna o arco cosseno de um número -ACOSH = ACOSH ## Retorna o cosseno hiperbólico inverso de um número -ASIN = ASEN ## Retorna o arco seno de um número -ASINH = ASENH ## Retorna o seno hiperbólico inverso de um número -ATAN = ATAN ## Retorna o arco tangente de um número -ATAN2 = ATAN2 ## Retorna o arco tangente das coordenadas x e y especificadas -ATANH = ATANH ## Retorna a tangente hiperbólica inversa de um número -CEILING = TETO ## Arredonda um número para o inteiro mais próximo ou para o múltiplo mais próximo de significância -COMBIN = COMBIN ## Retorna o número de combinações de um determinado número de objetos -COS = COS ## Retorna o cosseno de um número -COSH = COSH ## Retorna o cosseno hiperbólico de um número -DEGREES = GRAUS ## Converte radianos em graus -EVEN = PAR ## Arredonda um número para cima até o inteiro par mais próximo -EXP = EXP ## Retorna e elevado à potência de um número especificado -FACT = FATORIAL ## Retorna o fatorial de um número -FACTDOUBLE = FATDUPLO ## Retorna o fatorial duplo de um número -FLOOR = ARREDMULTB ## Arredonda um número para baixo até zero -GCD = MDC ## Retorna o máximo divisor comum -INT = INT ## Arredonda um número para baixo até o número inteiro mais próximo -LCM = MMC ## Retorna o mínimo múltiplo comum -LN = LN ## Retorna o logaritmo natural de um número -LOG = LOG ## Retorna o logaritmo de um número de uma base especificada -LOG10 = LOG10 ## Retorna o logaritmo de base 10 de um número -MDETERM = MATRIZ.DETERM ## Retorna o determinante de uma matriz de uma variável do tipo matriz -MINVERSE = MATRIZ.INVERSO ## Retorna a matriz inversa de uma matriz -MMULT = MATRIZ.MULT ## Retorna o produto de duas matrizes -MOD = RESTO ## Retorna o resto da divisão -MROUND = MARRED ## Retorna um número arredondado ao múltiplo desejado -MULTINOMIAL = MULTINOMIAL ## Retorna o multinomial de um conjunto de números -ODD = ÍMPAR ## Arredonda um número para cima até o inteiro ímpar mais próximo -PI = PI ## Retorna o valor de Pi -POWER = POTÊNCIA ## Fornece o resultado de um número elevado a uma potência -PRODUCT = MULT ## Multiplica seus argumentos -QUOTIENT = QUOCIENTE ## Retorna a parte inteira de uma divisão -RADIANS = RADIANOS ## Converte graus em radianos -RAND = ALEATÓRIO ## Retorna um número aleatório entre 0 e 1 -RANDBETWEEN = ALEATÓRIOENTRE ## Retorna um número aleatório entre os números especificados -ROMAN = ROMANO ## Converte um algarismo arábico em romano, como texto -ROUND = ARRED ## Arredonda um número até uma quantidade especificada de dígitos -ROUNDDOWN = ARREDONDAR.PARA.BAIXO ## Arredonda um número para baixo até zero -ROUNDUP = ARREDONDAR.PARA.CIMA ## Arredonda um número para cima, afastando-o de zero -SERIESSUM = SOMASEQÜÊNCIA ## Retorna a soma de uma série polinomial baseada na fórmula -SIGN = SINAL ## Retorna o sinal de um número -SIN = SEN ## Retorna o seno de um ângulo dado -SINH = SENH ## Retorna o seno hiperbólico de um número -SQRT = RAIZ ## Retorna uma raiz quadrada positiva -SQRTPI = RAIZPI ## Retorna a raiz quadrada de (núm* pi) -SUBTOTAL = SUBTOTAL ## Retorna um subtotal em uma lista ou em um banco de dados -SUM = SOMA ## Soma seus argumentos -SUMIF = SOMASE ## Adiciona as células especificadas por um determinado critério -SUMIFS = SOMASE ## Adiciona as células em um intervalo que atende a vários critérios -SUMPRODUCT = SOMARPRODUTO ## Retorna a soma dos produtos de componentes correspondentes de matrizes -SUMSQ = SOMAQUAD ## Retorna a soma dos quadrados dos argumentos -SUMX2MY2 = SOMAX2DY2 ## Retorna a soma da diferença dos quadrados dos valores correspondentes em duas matrizes -SUMX2PY2 = SOMAX2SY2 ## Retorna a soma da soma dos quadrados dos valores correspondentes em duas matrizes -SUMXMY2 = SOMAXMY2 ## Retorna a soma dos quadrados das diferenças dos valores correspondentes em duas matrizes -TAN = TAN ## Retorna a tangente de um número -TANH = TANH ## Retorna a tangente hiperbólica de um número -TRUNC = TRUNCAR ## Trunca um número para um inteiro - - -## -## Statistical functions Funções estatísticas -## -AVEDEV = DESV.MÉDIO ## Retorna a média aritmética dos desvios médios dos pontos de dados a partir de sua média -AVERAGE = MÉDIA ## Retorna a média dos argumentos -AVERAGEA = MÉDIAA ## Retorna a média dos argumentos, inclusive números, texto e valores lógicos -AVERAGEIF = MÉDIASE ## Retorna a média (média aritmética) de todas as células em um intervalo que atendem a um determinado critério -AVERAGEIFS = MÉDIASES ## Retorna a média (média aritmética) de todas as células que atendem a múltiplos critérios. -BETADIST = DISTBETA ## Retorna a função de distribuição cumulativa beta -BETAINV = BETA.ACUM.INV ## Retorna o inverso da função de distribuição cumulativa para uma distribuição beta especificada -BINOMDIST = DISTRBINOM ## Retorna a probabilidade de distribuição binomial do termo individual -CHIDIST = DIST.QUI ## Retorna a probabilidade unicaudal da distribuição qui-quadrada -CHIINV = INV.QUI ## Retorna o inverso da probabilidade uni-caudal da distribuição qui-quadrada -CHITEST = TESTE.QUI ## Retorna o teste para independência -CONFIDENCE = INT.CONFIANÇA ## Retorna o intervalo de confiança para uma média da população -CORREL = CORREL ## Retorna o coeficiente de correlação entre dois conjuntos de dados -COUNT = CONT.NÚM ## Calcula quantos números há na lista de argumentos -COUNTA = CONT.VALORES ## Calcula quantos valores há na lista de argumentos -COUNTBLANK = CONTAR.VAZIO ## Conta o número de células vazias no intervalo especificado -COUNTIF = CONT.SE ## Calcula o número de células não vazias em um intervalo que corresponde a determinados critérios -COUNTIFS = CONT.SES ## Conta o número de células dentro de um intervalo que atende a múltiplos critérios -COVAR = COVAR ## Retorna a covariância, a média dos produtos dos desvios pares -CRITBINOM = CRIT.BINOM ## Retorna o menor valor para o qual a distribuição binomial cumulativa é menor ou igual ao valor padrão -DEVSQ = DESVQ ## Retorna a soma dos quadrados dos desvios -EXPONDIST = DISTEXPON ## Retorna a distribuição exponencial -FDIST = DISTF ## Retorna a distribuição de probabilidade F -FINV = INVF ## Retorna o inverso da distribuição de probabilidades F -FISHER = FISHER ## Retorna a transformação Fisher -FISHERINV = FISHERINV ## Retorna o inverso da transformação Fisher -FORECAST = PREVISÃO ## Retorna um valor ao longo de uma linha reta -FREQUENCY = FREQÜÊNCIA ## Retorna uma distribuição de freqüência como uma matriz vertical -FTEST = TESTEF ## Retorna o resultado de um teste F -GAMMADIST = DISTGAMA ## Retorna a distribuição gama -GAMMAINV = INVGAMA ## Retorna o inverso da distribuição cumulativa gama -GAMMALN = LNGAMA ## Retorna o logaritmo natural da função gama, G(x) -GEOMEAN = MÉDIA.GEOMÉTRICA ## Retorna a média geométrica -GROWTH = CRESCIMENTO ## Retorna valores ao longo de uma tendência exponencial -HARMEAN = MÉDIA.HARMÔNICA ## Retorna a média harmônica -HYPGEOMDIST = DIST.HIPERGEOM ## Retorna a distribuição hipergeométrica -INTERCEPT = INTERCEPÇÃO ## Retorna a intercepção da linha de regressão linear -KURT = CURT ## Retorna a curtose de um conjunto de dados -LARGE = MAIOR ## Retorna o maior valor k-ésimo de um conjunto de dados -LINEST = PROJ.LIN ## Retorna os parâmetros de uma tendência linear -LOGEST = PROJ.LOG ## Retorna os parâmetros de uma tendência exponencial -LOGINV = INVLOG ## Retorna o inverso da distribuição lognormal -LOGNORMDIST = DIST.LOGNORMAL ## Retorna a distribuição lognormal cumulativa -MAX = MÁXIMO ## Retorna o valor máximo em uma lista de argumentos -MAXA = MÁXIMOA ## Retorna o maior valor em uma lista de argumentos, inclusive números, texto e valores lógicos -MEDIAN = MED ## Retorna a mediana dos números indicados -MIN = MÍNIMO ## Retorna o valor mínimo em uma lista de argumentos -MINA = MÍNIMOA ## Retorna o menor valor em uma lista de argumentos, inclusive números, texto e valores lógicos -MODE = MODO ## Retorna o valor mais comum em um conjunto de dados -NEGBINOMDIST = DIST.BIN.NEG ## Retorna a distribuição binomial negativa -NORMDIST = DIST.NORM ## Retorna a distribuição cumulativa normal -NORMINV = INV.NORM ## Retorna o inverso da distribuição cumulativa normal -NORMSDIST = DIST.NORMP ## Retorna a distribuição cumulativa normal padrão -NORMSINV = INV.NORMP ## Retorna o inverso da distribuição cumulativa normal padrão -PEARSON = PEARSON ## Retorna o coeficiente de correlação do momento do produto Pearson -PERCENTILE = PERCENTIL ## Retorna o k-ésimo percentil de valores em um intervalo -PERCENTRANK = ORDEM.PORCENTUAL ## Retorna a ordem percentual de um valor em um conjunto de dados -PERMUT = PERMUT ## Retorna o número de permutações de um determinado número de objetos -POISSON = POISSON ## Retorna a distribuição Poisson -PROB = PROB ## Retorna a probabilidade de valores em um intervalo estarem entre dois limites -QUARTILE = QUARTIL ## Retorna o quartil do conjunto de dados -RANK = ORDEM ## Retorna a posição de um número em uma lista de números -RSQ = RQUAD ## Retorna o quadrado do coeficiente de correlação do momento do produto de Pearson -SKEW = DISTORÇÃO ## Retorna a distorção de uma distribuição -SLOPE = INCLINAÇÃO ## Retorna a inclinação da linha de regressão linear -SMALL = MENOR ## Retorna o menor valor k-ésimo do conjunto de dados -STANDARDIZE = PADRONIZAR ## Retorna um valor normalizado -STDEV = DESVPAD ## Estima o desvio padrão com base em uma amostra -STDEVA = DESVPADA ## Estima o desvio padrão com base em uma amostra, inclusive números, texto e valores lógicos -STDEVP = DESVPADP ## Calcula o desvio padrão com base na população total -STDEVPA = DESVPADPA ## Calcula o desvio padrão com base na população total, inclusive números, texto e valores lógicos -STEYX = EPADYX ## Retorna o erro padrão do valor-y previsto para cada x da regressão -TDIST = DISTT ## Retorna a distribuição t de Student -TINV = INVT ## Retorna o inverso da distribuição t de Student -TREND = TENDÊNCIA ## Retorna valores ao longo de uma tendência linear -TRIMMEAN = MÉDIA.INTERNA ## Retorna a média do interior de um conjunto de dados -TTEST = TESTET ## Retorna a probabilidade associada ao teste t de Student -VAR = VAR ## Estima a variância com base em uma amostra -VARA = VARA ## Estima a variância com base em uma amostra, inclusive números, texto e valores lógicos -VARP = VARP ## Calcula a variância com base na população inteira -VARPA = VARPA ## Calcula a variância com base na população total, inclusive números, texto e valores lógicos -WEIBULL = WEIBULL ## Retorna a distribuição Weibull -ZTEST = TESTEZ ## Retorna o valor de probabilidade uni-caudal de um teste-z - - -## -## Text functions Funções de texto -## -ASC = ASC ## Altera letras do inglês ou katakana de largura total (bytes duplos) dentro de uma seqüência de caracteres para caracteres de meia largura (byte único) -BAHTTEXT = BAHTTEXT ## Converte um número em um texto, usando o formato de moeda ß (baht) -CHAR = CARACT ## Retorna o caractere especificado pelo número de código -CLEAN = TIRAR ## Remove todos os caracteres do texto que não podem ser impressos -CODE = CÓDIGO ## Retorna um código numérico para o primeiro caractere de uma seqüência de caracteres de texto -CONCATENATE = CONCATENAR ## Agrupa vários itens de texto em um único item de texto -DOLLAR = MOEDA ## Converte um número em texto, usando o formato de moeda $ (dólar) -EXACT = EXATO ## Verifica se dois valores de texto são idênticos -FIND = PROCURAR ## Procura um valor de texto dentro de outro (diferencia maiúsculas de minúsculas) -FINDB = PROCURARB ## Procura um valor de texto dentro de outro (diferencia maiúsculas de minúsculas) -FIXED = DEF.NÚM.DEC ## Formata um número como texto com um número fixo de decimais -JIS = JIS ## Altera letras do inglês ou katakana de meia largura (byte único) dentro de uma seqüência de caracteres para caracteres de largura total (bytes duplos) -LEFT = ESQUERDA ## Retorna os caracteres mais à esquerda de um valor de texto -LEFTB = ESQUERDAB ## Retorna os caracteres mais à esquerda de um valor de texto -LEN = NÚM.CARACT ## Retorna o número de caracteres em uma seqüência de texto -LENB = NÚM.CARACTB ## Retorna o número de caracteres em uma seqüência de texto -LOWER = MINÚSCULA ## Converte texto para minúsculas -MID = EXT.TEXTO ## Retorna um número específico de caracteres de uma seqüência de texto começando na posição especificada -MIDB = EXT.TEXTOB ## Retorna um número específico de caracteres de uma seqüência de texto começando na posição especificada -PHONETIC = FONÉTICA ## Extrai os caracteres fonéticos (furigana) de uma seqüência de caracteres de texto -PROPER = PRI.MAIÚSCULA ## Coloca a primeira letra de cada palavra em maiúscula em um valor de texto -REPLACE = MUDAR ## Muda os caracteres dentro do texto -REPLACEB = MUDARB ## Muda os caracteres dentro do texto -REPT = REPT ## Repete o texto um determinado número de vezes -RIGHT = DIREITA ## Retorna os caracteres mais à direita de um valor de texto -RIGHTB = DIREITAB ## Retorna os caracteres mais à direita de um valor de texto -SEARCH = LOCALIZAR ## Localiza um valor de texto dentro de outro (não diferencia maiúsculas de minúsculas) -SEARCHB = LOCALIZARB ## Localiza um valor de texto dentro de outro (não diferencia maiúsculas de minúsculas) -SUBSTITUTE = SUBSTITUIR ## Substitui um novo texto por um texto antigo em uma seqüência de texto -T = T ## Converte os argumentos em texto -TEXT = TEXTO ## Formata um número e o converte em texto -TRIM = ARRUMAR ## Remove espaços do texto -UPPER = MAIÚSCULA ## Converte o texto em maiúsculas -VALUE = VALOR ## Converte um argumento de texto em um número diff --git a/application/third_party/PHPExcel/locale/pt/config b/application/third_party/PHPExcel/locale/pt/config deleted file mode 100644 index 8bb8d8b8..00000000 --- a/application/third_party/PHPExcel/locale/pt/config +++ /dev/null @@ -1,47 +0,0 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Settings -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## - - -ArgumentSeparator = ; - - -## -## (For future use) -## -currencySymbol = € - - -## -## Excel Error Codes (For future use) -## -NULL = #NULO! -DIV0 = #DIV/0! -VALUE = #VALOR! -REF = #REF! -NAME = #NOME? -NUM = #NÚM! -NA = #N/D diff --git a/application/third_party/PHPExcel/locale/pt/functions b/application/third_party/PHPExcel/locale/pt/functions deleted file mode 100644 index ba4eb471..00000000 --- a/application/third_party/PHPExcel/locale/pt/functions +++ /dev/null @@ -1,408 +0,0 @@ -## -## Add-in and Automation functions Funções de Suplemento e Automatização -## -GETPIVOTDATA = OBTERDADOSDIN ## Devolve dados armazenados num relatório de Tabela Dinâmica - - -## -## Cube functions Funções de cubo -## -CUBEKPIMEMBER = MEMBROKPICUBO ## Devolve o nome, propriedade e medição de um KPI (key performance indicator) e apresenta o nome e a propriedade na célula. Um KPI é uma medida quantificável, como, por exemplo, o lucro mensal bruto ou a rotatividade trimestral de pessoal, utilizada para monitorizar o desempenho de uma organização. -CUBEMEMBER = MEMBROCUBO ## Devolve um membro ou cadeia de identificação numa hierarquia de cubo. Utilizada para validar a existência do membro ou cadeia de identificação no cubo. -CUBEMEMBERPROPERTY = PROPRIEDADEMEMBROCUBO ## Devolve o valor de uma propriedade de membro no cubo. Utilizada para validar a existência de um nome de membro no cubo e para devolver a propriedade especificada para esse membro. -CUBERANKEDMEMBER = MEMBROCLASSIFICADOCUBO ## Devolve o enésimo ou a classificação mais alta num conjunto. Utilizada para devolver um ou mais elementos num conjunto, tal como o melhor vendedor ou os 10 melhores alunos. -CUBESET = CONJUNTOCUBO ## Define um conjunto calculado de membros ou cadeias de identificação enviando uma expressão de conjunto para o cubo no servidor, que cria o conjunto e, em seguida, devolve o conjunto ao Microsoft Office Excel. -CUBESETCOUNT = CONTARCONJUNTOCUBO ## Devolve o número de itens num conjunto. -CUBEVALUE = VALORCUBO ## Devolve um valor agregado do cubo. - - -## -## Database functions Funções de base de dados -## -DAVERAGE = BDMÉDIA ## Devolve a média das entradas da base de dados seleccionadas -DCOUNT = BDCONTAR ## Conta as células que contêm números numa base de dados -DCOUNTA = BDCONTAR.VAL ## Conta as células que não estejam em branco numa base de dados -DGET = BDOBTER ## Extrai de uma base de dados um único registo que corresponde aos critérios especificados -DMAX = BDMÁX ## Devolve o valor máximo das entradas da base de dados seleccionadas -DMIN = BDMÍN ## Devolve o valor mínimo das entradas da base de dados seleccionadas -DPRODUCT = BDMULTIPL ## Multiplica os valores de um determinado campo de registos que correspondem aos critérios numa base de dados -DSTDEV = BDDESVPAD ## Calcula o desvio-padrão com base numa amostra de entradas da base de dados seleccionadas -DSTDEVP = BDDESVPADP ## Calcula o desvio-padrão com base na população total das entradas da base de dados seleccionadas -DSUM = BDSOMA ## Adiciona os números na coluna de campo dos registos de base de dados que correspondem aos critérios -DVAR = BDVAR ## Calcula a variância com base numa amostra das entradas de base de dados seleccionadas -DVARP = BDVARP ## Calcula a variância com base na população total das entradas de base de dados seleccionadas - - -## -## Date and time functions Funções de data e hora -## -DATE = DATA ## Devolve o número de série de uma determinada data -DATEVALUE = DATA.VALOR ## Converte uma data em forma de texto num número de série -DAY = DIA ## Converte um número de série num dia do mês -DAYS360 = DIAS360 ## Calcula o número de dias entre duas datas com base num ano com 360 dias -EDATE = DATAM ## Devolve um número de série de data que corresponde ao número de meses indicado antes ou depois da data de início -EOMONTH = FIMMÊS ## Devolve o número de série do último dia do mês antes ou depois de um número de meses especificado -HOUR = HORA ## Converte um número de série numa hora -MINUTE = MINUTO ## Converte um número de série num minuto -MONTH = MÊS ## Converte um número de série num mês -NETWORKDAYS = DIATRABALHOTOTAL ## Devolve o número total de dias úteis entre duas datas -NOW = AGORA ## Devolve o número de série da data e hora actuais -SECOND = SEGUNDO ## Converte um número de série num segundo -TIME = TEMPO ## Devolve o número de série de um determinado tempo -TIMEVALUE = VALOR.TEMPO ## Converte um tempo em forma de texto num número de série -TODAY = HOJE ## Devolve o número de série da data actual -WEEKDAY = DIA.SEMANA ## Converte um número de série num dia da semana -WEEKNUM = NÚMSEMANA ## Converte um número de série num número que representa o número da semana num determinado ano -WORKDAY = DIA.TRABALHO ## Devolve o número de série da data antes ou depois de um número de dias úteis especificado -YEAR = ANO ## Converte um número de série num ano -YEARFRAC = FRACÇÃOANO ## Devolve a fracção de ano que representa o número de dias inteiros entre a data_de_início e a data_de_fim - - -## -## Engineering functions Funções de engenharia -## -BESSELI = BESSELI ## Devolve a função de Bessel modificada In(x) -BESSELJ = BESSELJ ## Devolve a função de Bessel Jn(x) -BESSELK = BESSELK ## Devolve a função de Bessel modificada Kn(x) -BESSELY = BESSELY ## Devolve a função de Bessel Yn(x) -BIN2DEC = BINADEC ## Converte um número binário em decimal -BIN2HEX = BINAHEX ## Converte um número binário em hexadecimal -BIN2OCT = BINAOCT ## Converte um número binário em octal -COMPLEX = COMPLEXO ## Converte coeficientes reais e imaginários num número complexo -CONVERT = CONVERTER ## Converte um número de um sistema de medida noutro -DEC2BIN = DECABIN ## Converte um número decimal em binário -DEC2HEX = DECAHEX ## Converte um número decimal em hexadecimal -DEC2OCT = DECAOCT ## Converte um número decimal em octal -DELTA = DELTA ## Testa se dois valores são iguais -ERF = FUNCERRO ## Devolve a função de erro -ERFC = FUNCERROCOMPL ## Devolve a função de erro complementar -GESTEP = DEGRAU ## Testa se um número é maior do que um valor limite -HEX2BIN = HEXABIN ## Converte um número hexadecimal em binário -HEX2DEC = HEXADEC ## Converte um número hexadecimal em decimal -HEX2OCT = HEXAOCT ## Converte um número hexadecimal em octal -IMABS = IMABS ## Devolve o valor absoluto (módulo) de um número complexo -IMAGINARY = IMAGINÁRIO ## Devolve o coeficiente imaginário de um número complexo -IMARGUMENT = IMARG ## Devolve o argumento Teta, um ângulo expresso em radianos -IMCONJUGATE = IMCONJ ## Devolve o conjugado complexo de um número complexo -IMCOS = IMCOS ## Devolve o co-seno de um número complexo -IMDIV = IMDIV ## Devolve o quociente de dois números complexos -IMEXP = IMEXP ## Devolve o exponencial de um número complexo -IMLN = IMLN ## Devolve o logaritmo natural de um número complexo -IMLOG10 = IMLOG10 ## Devolve o logaritmo de base 10 de um número complexo -IMLOG2 = IMLOG2 ## Devolve o logaritmo de base 2 de um número complexo -IMPOWER = IMPOT ## Devolve um número complexo elevado a uma potência inteira -IMPRODUCT = IMPROD ## Devolve o produto de números complexos -IMREAL = IMREAL ## Devolve o coeficiente real de um número complexo -IMSIN = IMSENO ## Devolve o seno de um número complexo -IMSQRT = IMRAIZ ## Devolve a raiz quadrada de um número complexo -IMSUB = IMSUBTR ## Devolve a diferença entre dois números complexos -IMSUM = IMSOMA ## Devolve a soma de números complexos -OCT2BIN = OCTABIN ## Converte um número octal em binário -OCT2DEC = OCTADEC ## Converte um número octal em decimal -OCT2HEX = OCTAHEX ## Converte um número octal em hexadecimal - - -## -## Financial functions Funções financeiras -## -ACCRINT = JUROSACUM ## Devolve os juros acumulados de um título que paga juros periódicos -ACCRINTM = JUROSACUMV ## Devolve os juros acumulados de um título que paga juros no vencimento -AMORDEGRC = AMORDEGRC ## Devolve a depreciação correspondente a cada período contabilístico utilizando um coeficiente de depreciação -AMORLINC = AMORLINC ## Devolve a depreciação correspondente a cada período contabilístico -COUPDAYBS = CUPDIASINLIQ ## Devolve o número de dias entre o início do período do cupão e a data de regularização -COUPDAYS = CUPDIAS ## Devolve o número de dias no período do cupão que contém a data de regularização -COUPDAYSNC = CUPDIASPRÓX ## Devolve o número de dias entre a data de regularização e a data do cupão seguinte -COUPNCD = CUPDATAPRÓX ## Devolve a data do cupão seguinte após a data de regularização -COUPNUM = CUPNÚM ## Devolve o número de cupões a serem pagos entre a data de regularização e a data de vencimento -COUPPCD = CUPDATAANT ## Devolve a data do cupão anterior antes da data de regularização -CUMIPMT = PGTOJURACUM ## Devolve os juros cumulativos pagos entre dois períodos -CUMPRINC = PGTOCAPACUM ## Devolve o capital cumulativo pago a título de empréstimo entre dois períodos -DB = BD ## Devolve a depreciação de um activo relativo a um período especificado utilizando o método das quotas degressivas fixas -DDB = BDD ## Devolve a depreciação de um activo relativo a um período especificado utilizando o método das quotas degressivas duplas ou qualquer outro método especificado -DISC = DESC ## Devolve a taxa de desconto de um título -DOLLARDE = MOEDADEC ## Converte um preço em unidade monetária, expresso como uma fracção, num preço em unidade monetária, expresso como um número decimal -DOLLARFR = MOEDAFRA ## Converte um preço em unidade monetária, expresso como um número decimal, num preço em unidade monetária, expresso como uma fracção -DURATION = DURAÇÃO ## Devolve a duração anual de um título com pagamentos de juros periódicos -EFFECT = EFECTIVA ## Devolve a taxa de juros anual efectiva -FV = VF ## Devolve o valor futuro de um investimento -FVSCHEDULE = VFPLANO ## Devolve o valor futuro de um capital inicial após a aplicação de uma série de taxas de juro compostas -INTRATE = TAXAJUROS ## Devolve a taxa de juros de um título investido na totalidade -IPMT = IPGTO ## Devolve o pagamento dos juros de um investimento durante um determinado período -IRR = TIR ## Devolve a taxa de rentabilidade interna para uma série de fluxos monetários -ISPMT = É.PGTO ## Calcula os juros pagos durante um período específico de um investimento -MDURATION = MDURAÇÃO ## Devolve a duração modificada de Macauley de um título com um valor de paridade equivalente a € 100 -MIRR = MTIR ## Devolve a taxa interna de rentabilidade em que os fluxos monetários positivos e negativos são financiados com taxas diferentes -NOMINAL = NOMINAL ## Devolve a taxa de juros nominal anual -NPER = NPER ## Devolve o número de períodos de um investimento -NPV = VAL ## Devolve o valor actual líquido de um investimento com base numa série de fluxos monetários periódicos e numa taxa de desconto -ODDFPRICE = PREÇOPRIMINC ## Devolve o preço por € 100 do valor nominal de um título com um período inicial incompleto -ODDFYIELD = LUCROPRIMINC ## Devolve o lucro de um título com um período inicial incompleto -ODDLPRICE = PREÇOÚLTINC ## Devolve o preço por € 100 do valor nominal de um título com um período final incompleto -ODDLYIELD = LUCROÚLTINC ## Devolve o lucro de um título com um período final incompleto -PMT = PGTO ## Devolve o pagamento periódico de uma anuidade -PPMT = PPGTO ## Devolve o pagamento sobre o capital de um investimento num determinado período -PRICE = PREÇO ## Devolve o preço por € 100 do valor nominal de um título que paga juros periódicos -PRICEDISC = PREÇODESC ## Devolve o preço por € 100 do valor nominal de um título descontado -PRICEMAT = PREÇOVENC ## Devolve o preço por € 100 do valor nominal de um título que paga juros no vencimento -PV = VA ## Devolve o valor actual de um investimento -RATE = TAXA ## Devolve a taxa de juros por período de uma anuidade -RECEIVED = RECEBER ## Devolve o montante recebido no vencimento de um título investido na totalidade -SLN = AMORT ## Devolve uma depreciação linear de um activo durante um período -SYD = AMORTD ## Devolve a depreciação por algarismos da soma dos anos de um activo durante um período especificado -TBILLEQ = OTN ## Devolve o lucro de um título equivalente a uma Obrigação do Tesouro -TBILLPRICE = OTNVALOR ## Devolve o preço por € 100 de valor nominal de uma Obrigação do Tesouro -TBILLYIELD = OTNLUCRO ## Devolve o lucro de uma Obrigação do Tesouro -VDB = BDV ## Devolve a depreciação de um activo relativo a um período específico ou parcial utilizando um método de quotas degressivas -XIRR = XTIR ## Devolve a taxa interna de rentabilidade de um plano de fluxos monetários que não seja necessariamente periódica -XNPV = XVAL ## Devolve o valor actual líquido de um plano de fluxos monetários que não seja necessariamente periódico -YIELD = LUCRO ## Devolve o lucro de um título que paga juros periódicos -YIELDDISC = LUCRODESC ## Devolve o lucro anual de um título emitido abaixo do valor nominal, por exemplo, uma Obrigação do Tesouro -YIELDMAT = LUCROVENC ## Devolve o lucro anual de um título que paga juros na data de vencimento - - -## -## Information functions Funções de informação -## -CELL = CÉL ## Devolve informações sobre a formatação, localização ou conteúdo de uma célula -ERROR.TYPE = TIPO.ERRO ## Devolve um número correspondente a um tipo de erro -INFO = INFORMAÇÃO ## Devolve informações sobre o ambiente de funcionamento actual -ISBLANK = É.CÉL.VAZIA ## Devolve VERDADEIRO se o valor estiver em branco -ISERR = É.ERROS ## Devolve VERDADEIRO se o valor for um valor de erro diferente de #N/D -ISERROR = É.ERRO ## Devolve VERDADEIRO se o valor for um valor de erro -ISEVEN = ÉPAR ## Devolve VERDADEIRO se o número for par -ISLOGICAL = É.LÓGICO ## Devolve VERDADEIRO se o valor for lógico -ISNA = É.NÃO.DISP ## Devolve VERDADEIRO se o valor for o valor de erro #N/D -ISNONTEXT = É.NÃO.TEXTO ## Devolve VERDADEIRO se o valor não for texto -ISNUMBER = É.NÚM ## Devolve VERDADEIRO se o valor for um número -ISODD = ÉÍMPAR ## Devolve VERDADEIRO se o número for ímpar -ISREF = É.REF ## Devolve VERDADEIRO se o valor for uma referência -ISTEXT = É.TEXTO ## Devolve VERDADEIRO se o valor for texto -N = N ## Devolve um valor convertido num número -NA = NÃO.DISP ## Devolve o valor de erro #N/D -TYPE = TIPO ## Devolve um número que indica o tipo de dados de um valor - - -## -## Logical functions Funções lógicas -## -AND = E ## Devolve VERDADEIRO se todos os respectivos argumentos corresponderem a VERDADEIRO -FALSE = FALSO ## Devolve o valor lógico FALSO -IF = SE ## Especifica um teste lógico a ser executado -IFERROR = SE.ERRO ## Devolve um valor definido pelo utilizador se ocorrer um erro na fórmula, e devolve o resultado da fórmula se não ocorrer nenhum erro -NOT = NÃO ## Inverte a lógica do respectivo argumento -OR = OU ## Devolve VERDADEIRO se qualquer argumento for VERDADEIRO -TRUE = VERDADEIRO ## Devolve o valor lógico VERDADEIRO - - -## -## Lookup and reference functions Funções de pesquisa e referência -## -ADDRESS = ENDEREÇO ## Devolve uma referência a uma única célula numa folha de cálculo como texto -AREAS = ÁREAS ## Devolve o número de áreas numa referência -CHOOSE = SELECCIONAR ## Selecciona um valor a partir de uma lista de valores -COLUMN = COL ## Devolve o número da coluna de uma referência -COLUMNS = COLS ## Devolve o número de colunas numa referência -HLOOKUP = PROCH ## Procura na linha superior de uma matriz e devolve o valor da célula indicada -HYPERLINK = HIPERLIGAÇÃO ## Cria um atalho ou hiperligação que abre um documento armazenado num servidor de rede, numa intranet ou na Internet -INDEX = ÍNDICE ## Utiliza um índice para escolher um valor de uma referência ou de uma matriz -INDIRECT = INDIRECTO ## Devolve uma referência indicada por um valor de texto -LOOKUP = PROC ## Procura valores num vector ou numa matriz -MATCH = CORRESP ## Procura valores numa referência ou numa matriz -OFFSET = DESLOCAMENTO ## Devolve o deslocamento de referência de uma determinada referência -ROW = LIN ## Devolve o número da linha de uma referência -ROWS = LINS ## Devolve o número de linhas numa referência -RTD = RTD ## Obtém dados em tempo real a partir de um programa que suporte automatização COM (automatização: modo de trabalhar com objectos de uma aplicação a partir de outra aplicação ou ferramenta de desenvolvimento. Anteriormente conhecida como automatização OLE, a automatização é uma norma da indústria de software e uma funcionalidade COM (Component Object Model).) -TRANSPOSE = TRANSPOR ## Devolve a transposição de uma matriz -VLOOKUP = PROCV ## Procura na primeira coluna de uma matriz e percorre a linha para devolver o valor de uma célula - - -## -## Math and trigonometry functions Funções matemáticas e trigonométricas -## -ABS = ABS ## Devolve o valor absoluto de um número -ACOS = ACOS ## Devolve o arco de co-seno de um número -ACOSH = ACOSH ## Devolve o co-seno hiperbólico inverso de um número -ASIN = ASEN ## Devolve o arco de seno de um número -ASINH = ASENH ## Devolve o seno hiperbólico inverso de um número -ATAN = ATAN ## Devolve o arco de tangente de um número -ATAN2 = ATAN2 ## Devolve o arco de tangente das coordenadas x e y -ATANH = ATANH ## Devolve a tangente hiperbólica inversa de um número -CEILING = ARRED.EXCESSO ## Arredonda um número para o número inteiro mais próximo ou para o múltiplo de significância mais próximo -COMBIN = COMBIN ## Devolve o número de combinações de um determinado número de objectos -COS = COS ## Devolve o co-seno de um número -COSH = COSH ## Devolve o co-seno hiperbólico de um número -DEGREES = GRAUS ## Converte radianos em graus -EVEN = PAR ## Arredonda um número por excesso para o número inteiro mais próximo -EXP = EXP ## Devolve e elevado à potência de um determinado número -FACT = FACTORIAL ## Devolve o factorial de um número -FACTDOUBLE = FACTDUPLO ## Devolve o factorial duplo de um número -FLOOR = ARRED.DEFEITO ## Arredonda um número por defeito até zero -GCD = MDC ## Devolve o maior divisor comum -INT = INT ## Arredonda um número por defeito para o número inteiro mais próximo -LCM = MMC ## Devolve o mínimo múltiplo comum -LN = LN ## Devolve o logaritmo natural de um número -LOG = LOG ## Devolve o logaritmo de um número com uma base especificada -LOG10 = LOG10 ## Devolve o logaritmo de base 10 de um número -MDETERM = MATRIZ.DETERM ## Devolve o determinante matricial de uma matriz -MINVERSE = MATRIZ.INVERSA ## Devolve o inverso matricial de uma matriz -MMULT = MATRIZ.MULT ## Devolve o produto matricial de duas matrizes -MOD = RESTO ## Devolve o resto da divisão -MROUND = MARRED ## Devolve um número arredondado para o múltiplo pretendido -MULTINOMIAL = POLINOMIAL ## Devolve o polinomial de um conjunto de números -ODD = ÍMPAR ## Arredonda por excesso um número para o número inteiro ímpar mais próximo -PI = PI ## Devolve o valor de pi -POWER = POTÊNCIA ## Devolve o resultado de um número elevado a uma potência -PRODUCT = PRODUTO ## Multiplica os respectivos argumentos -QUOTIENT = QUOCIENTE ## Devolve a parte inteira de uma divisão -RADIANS = RADIANOS ## Converte graus em radianos -RAND = ALEATÓRIO ## Devolve um número aleatório entre 0 e 1 -RANDBETWEEN = ALEATÓRIOENTRE ## Devolve um número aleatório entre os números especificados -ROMAN = ROMANO ## Converte um número árabe em romano, como texto -ROUND = ARRED ## Arredonda um número para um número de dígitos especificado -ROUNDDOWN = ARRED.PARA.BAIXO ## Arredonda um número por defeito até zero -ROUNDUP = ARRED.PARA.CIMA ## Arredonda um número por excesso, afastando-o de zero -SERIESSUM = SOMASÉRIE ## Devolve a soma de uma série de potências baseada na fórmula -SIGN = SINAL ## Devolve o sinal de um número -SIN = SEN ## Devolve o seno de um determinado ângulo -SINH = SENH ## Devolve o seno hiperbólico de um número -SQRT = RAIZQ ## Devolve uma raiz quadrada positiva -SQRTPI = RAIZPI ## Devolve a raiz quadrada de (núm * pi) -SUBTOTAL = SUBTOTAL ## Devolve um subtotal numa lista ou base de dados -SUM = SOMA ## Adiciona os respectivos argumentos -SUMIF = SOMA.SE ## Adiciona as células especificadas por um determinado critério -SUMIFS = SOMA.SE.S ## Adiciona as células num intervalo que cumpre vários critérios -SUMPRODUCT = SOMARPRODUTO ## Devolve a soma dos produtos de componentes de matrizes correspondentes -SUMSQ = SOMARQUAD ## Devolve a soma dos quadrados dos argumentos -SUMX2MY2 = SOMAX2DY2 ## Devolve a soma da diferença dos quadrados dos valores correspondentes em duas matrizes -SUMX2PY2 = SOMAX2SY2 ## Devolve a soma da soma dos quadrados dos valores correspondentes em duas matrizes -SUMXMY2 = SOMAXMY2 ## Devolve a soma dos quadrados da diferença dos valores correspondentes em duas matrizes -TAN = TAN ## Devolve a tangente de um número -TANH = TANH ## Devolve a tangente hiperbólica de um número -TRUNC = TRUNCAR ## Trunca um número para um número inteiro - - -## -## Statistical functions Funções estatísticas -## -AVEDEV = DESV.MÉDIO ## Devolve a média aritmética dos desvios absolutos à média dos pontos de dados -AVERAGE = MÉDIA ## Devolve a média dos respectivos argumentos -AVERAGEA = MÉDIAA ## Devolve uma média dos respectivos argumentos, incluindo números, texto e valores lógicos -AVERAGEIF = MÉDIA.SE ## Devolve a média aritmética de todas as células num intervalo que cumprem determinado critério -AVERAGEIFS = MÉDIA.SE.S ## Devolve a média aritmética de todas as células que cumprem múltiplos critérios -BETADIST = DISTBETA ## Devolve a função de distribuição cumulativa beta -BETAINV = BETA.ACUM.INV ## Devolve o inverso da função de distribuição cumulativa relativamente a uma distribuição beta específica -BINOMDIST = DISTRBINOM ## Devolve a probabilidade de distribuição binomial de termo individual -CHIDIST = DIST.CHI ## Devolve a probabilidade unicaudal da distribuição qui-quadrada -CHIINV = INV.CHI ## Devolve o inverso da probabilidade unicaudal da distribuição qui-quadrada -CHITEST = TESTE.CHI ## Devolve o teste para independência -CONFIDENCE = INT.CONFIANÇA ## Devolve o intervalo de confiança correspondente a uma média de população -CORREL = CORREL ## Devolve o coeficiente de correlação entre dois conjuntos de dados -COUNT = CONTAR ## Conta os números que existem na lista de argumentos -COUNTA = CONTAR.VAL ## Conta os valores que existem na lista de argumentos -COUNTBLANK = CONTAR.VAZIO ## Conta o número de células em branco num intervalo -COUNTIF = CONTAR.SE ## Calcula o número de células num intervalo que corresponde aos critérios determinados -COUNTIFS = CONTAR.SE.S ## Conta o número de células num intervalo que cumprem múltiplos critérios -COVAR = COVAR ## Devolve a covariância, que é a média dos produtos de desvios de pares -CRITBINOM = CRIT.BINOM ## Devolve o menor valor em que a distribuição binomial cumulativa é inferior ou igual a um valor de critério -DEVSQ = DESVQ ## Devolve a soma dos quadrados dos desvios -EXPONDIST = DISTEXPON ## Devolve a distribuição exponencial -FDIST = DISTF ## Devolve a distribuição da probabilidade F -FINV = INVF ## Devolve o inverso da distribuição da probabilidade F -FISHER = FISHER ## Devolve a transformação Fisher -FISHERINV = FISHERINV ## Devolve o inverso da transformação Fisher -FORECAST = PREVISÃO ## Devolve um valor ao longo de uma tendência linear -FREQUENCY = FREQUÊNCIA ## Devolve uma distribuição de frequência como uma matriz vertical -FTEST = TESTEF ## Devolve o resultado de um teste F -GAMMADIST = DISTGAMA ## Devolve a distribuição gama -GAMMAINV = INVGAMA ## Devolve o inverso da distribuição gama cumulativa -GAMMALN = LNGAMA ## Devolve o logaritmo natural da função gama, Γ(x) -GEOMEAN = MÉDIA.GEOMÉTRICA ## Devolve a média geométrica -GROWTH = CRESCIMENTO ## Devolve valores ao longo de uma tendência exponencial -HARMEAN = MÉDIA.HARMÓNICA ## Devolve a média harmónica -HYPGEOMDIST = DIST.HIPERGEOM ## Devolve a distribuição hipergeométrica -INTERCEPT = INTERCEPTAR ## Devolve a intercepção da linha de regressão linear -KURT = CURT ## Devolve a curtose de um conjunto de dados -LARGE = MAIOR ## Devolve o maior valor k-ésimo de um conjunto de dados -LINEST = PROJ.LIN ## Devolve os parâmetros de uma tendência linear -LOGEST = PROJ.LOG ## Devolve os parâmetros de uma tendência exponencial -LOGINV = INVLOG ## Devolve o inverso da distribuição normal logarítmica -LOGNORMDIST = DIST.NORMALLOG ## Devolve a distribuição normal logarítmica cumulativa -MAX = MÁXIMO ## Devolve o valor máximo numa lista de argumentos -MAXA = MÁXIMOA ## Devolve o valor máximo numa lista de argumentos, incluindo números, texto e valores lógicos -MEDIAN = MED ## Devolve a mediana dos números indicados -MIN = MÍNIMO ## Devolve o valor mínimo numa lista de argumentos -MINA = MÍNIMOA ## Devolve o valor mínimo numa lista de argumentos, incluindo números, texto e valores lógicos -MODE = MODA ## Devolve o valor mais comum num conjunto de dados -NEGBINOMDIST = DIST.BIN.NEG ## Devolve a distribuição binominal negativa -NORMDIST = DIST.NORM ## Devolve a distribuição cumulativa normal -NORMINV = INV.NORM ## Devolve o inverso da distribuição cumulativa normal -NORMSDIST = DIST.NORMP ## Devolve a distribuição cumulativa normal padrão -NORMSINV = INV.NORMP ## Devolve o inverso da distribuição cumulativa normal padrão -PEARSON = PEARSON ## Devolve o coeficiente de correlação momento/produto de Pearson -PERCENTILE = PERCENTIL ## Devolve o k-ésimo percentil de valores num intervalo -PERCENTRANK = ORDEM.PERCENTUAL ## Devolve a ordem percentual de um valor num conjunto de dados -PERMUT = PERMUTAR ## Devolve o número de permutações de um determinado número de objectos -POISSON = POISSON ## Devolve a distribuição de Poisson -PROB = PROB ## Devolve a probabilidade dos valores num intervalo se encontrarem entre dois limites -QUARTILE = QUARTIL ## Devolve o quartil de um conjunto de dados -RANK = ORDEM ## Devolve a ordem de um número numa lista numérica -RSQ = RQUAD ## Devolve o quadrado do coeficiente de correlação momento/produto de Pearson -SKEW = DISTORÇÃO ## Devolve a distorção de uma distribuição -SLOPE = DECLIVE ## Devolve o declive da linha de regressão linear -SMALL = MENOR ## Devolve o menor valor de k-ésimo de um conjunto de dados -STANDARDIZE = NORMALIZAR ## Devolve um valor normalizado -STDEV = DESVPAD ## Calcula o desvio-padrão com base numa amostra -STDEVA = DESVPADA ## Calcula o desvio-padrão com base numa amostra, incluindo números, texto e valores lógicos -STDEVP = DESVPADP ## Calcula o desvio-padrão com base na população total -STDEVPA = DESVPADPA ## Calcula o desvio-padrão com base na população total, incluindo números, texto e valores lógicos -STEYX = EPADYX ## Devolve o erro-padrão do valor de y previsto para cada x na regressão -TDIST = DISTT ## Devolve a distribuição t de Student -TINV = INVT ## Devolve o inverso da distribuição t de Student -TREND = TENDÊNCIA ## Devolve valores ao longo de uma tendência linear -TRIMMEAN = MÉDIA.INTERNA ## Devolve a média do interior de um conjunto de dados -TTEST = TESTET ## Devolve a probabilidade associada ao teste t de Student -VAR = VAR ## Calcula a variância com base numa amostra -VARA = VARA ## Calcula a variância com base numa amostra, incluindo números, texto e valores lógicos -VARP = VARP ## Calcula a variância com base na população total -VARPA = VARPA ## Calcula a variância com base na população total, incluindo números, texto e valores lógicos -WEIBULL = WEIBULL ## Devolve a distribuição Weibull -ZTEST = TESTEZ ## Devolve o valor de probabilidade unicaudal de um teste-z - - -## -## Text functions Funções de texto -## -ASC = ASC ## Altera letras ou katakana de largura total (byte duplo) numa cadeia de caracteres para caracteres de largura média (byte único) -BAHTTEXT = TEXTO.BAHT ## Converte um número em texto, utilizando o formato monetário ß (baht) -CHAR = CARÁCT ## Devolve o carácter especificado pelo número de código -CLEAN = LIMPAR ## Remove do texto todos os caracteres não imprimíveis -CODE = CÓDIGO ## Devolve um código numérico correspondente ao primeiro carácter numa cadeia de texto -CONCATENATE = CONCATENAR ## Agrupa vários itens de texto num único item de texto -DOLLAR = MOEDA ## Converte um número em texto, utilizando o formato monetário € (Euro) -EXACT = EXACTO ## Verifica se dois valores de texto são idênticos -FIND = LOCALIZAR ## Localiza um valor de texto dentro de outro (sensível às maiúsculas e minúsculas) -FINDB = LOCALIZARB ## Localiza um valor de texto dentro de outro (sensível às maiúsculas e minúsculas) -FIXED = FIXA ## Formata um número como texto com um número fixo de decimais -JIS = JIS ## Altera letras ou katakana de largura média (byte único) numa cadeia de caracteres para caracteres de largura total (byte duplo) -LEFT = ESQUERDA ## Devolve os caracteres mais à esquerda de um valor de texto -LEFTB = ESQUERDAB ## Devolve os caracteres mais à esquerda de um valor de texto -LEN = NÚM.CARACT ## Devolve o número de caracteres de uma cadeia de texto -LENB = NÚM.CARACTB ## Devolve o número de caracteres de uma cadeia de texto -LOWER = MINÚSCULAS ## Converte o texto em minúsculas -MID = SEG.TEXTO ## Devolve um número específico de caracteres de uma cadeia de texto, a partir da posição especificada -MIDB = SEG.TEXTOB ## Devolve um número específico de caracteres de uma cadeia de texto, a partir da posição especificada -PHONETIC = FONÉTICA ## Retira os caracteres fonéticos (furigana) de uma cadeia de texto -PROPER = INICIAL.MAIÚSCULA ## Coloca em maiúsculas a primeira letra de cada palavra de um valor de texto -REPLACE = SUBSTITUIR ## Substitui caracteres no texto -REPLACEB = SUBSTITUIRB ## Substitui caracteres no texto -REPT = REPETIR ## Repete texto um determinado número de vezes -RIGHT = DIREITA ## Devolve os caracteres mais à direita de um valor de texto -RIGHTB = DIREITAB ## Devolve os caracteres mais à direita de um valor de texto -SEARCH = PROCURAR ## Localiza um valor de texto dentro de outro (não sensível a maiúsculas e minúsculas) -SEARCHB = PROCURARB ## Localiza um valor de texto dentro de outro (não sensível a maiúsculas e minúsculas) -SUBSTITUTE = SUBST ## Substitui texto novo por texto antigo numa cadeia de texto -T = T ## Converte os respectivos argumentos em texto -TEXT = TEXTO ## Formata um número e converte-o em texto -TRIM = COMPACTAR ## Remove espaços do texto -UPPER = MAIÚSCULAS ## Converte texto em maiúsculas -VALUE = VALOR ## Converte um argumento de texto num número diff --git a/application/third_party/PHPExcel/locale/ru/config b/application/third_party/PHPExcel/locale/ru/config deleted file mode 100644 index 56e45bfd..00000000 --- a/application/third_party/PHPExcel/locale/ru/config +++ /dev/null @@ -1,47 +0,0 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Settings -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## - - -ArgumentSeparator = ; - - -## -## (For future use) -## -currencySymbol = р - - -## -## Excel Error Codes (For future use) -## -NULL = #ПУСТО! -DIV0 = #ДЕЛ/0! -VALUE = #ЗНАЧ! -REF = #ССЫЛ! -NAME = #ИМЯ? -NUM = #ЧИСЛО! -NA = #Н/Д diff --git a/application/third_party/PHPExcel/locale/ru/functions b/application/third_party/PHPExcel/locale/ru/functions deleted file mode 100644 index 5ff6d4fb..00000000 --- a/application/third_party/PHPExcel/locale/ru/functions +++ /dev/null @@ -1,438 +0,0 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Calculation -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## Data in this file derived from information provided by web-junior (http://www.web-junior.net/) -## -## - - -## -## Add-in and Automation functions Функции надстроек и автоматизации -## -GETPIVOTDATA = ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ ## Возвращает данные, хранящиеся в отчете сводной таблицы. - - -## -## Cube functions Функции Куб -## -CUBEKPIMEMBER = КУБЭЛЕМЕНТКИП ## Возвращает свойство ключевого индикатора производительности «(КИП)» и отображает имя «КИП» в ячейке. «КИП» представляет собой количественную величину, такую как ежемесячная валовая прибыль или ежеквартальная текучесть кадров, используемой для контроля эффективности работы организации. -CUBEMEMBER = КУБЭЛЕМЕНТ ## Возвращает элемент или кортеж из куба. Используется для проверки существования элемента или кортежа в кубе. -CUBEMEMBERPROPERTY = КУБСВОЙСТВОЭЛЕМЕНТА ## Возвращает значение свойства элемента из куба. Используется для проверки существования имени элемента в кубе и возвращает указанное свойство для этого элемента. -CUBERANKEDMEMBER = КУБПОРЭЛЕМЕНТ ## Возвращает n-ый или ранжированный элемент в множество. Используется для возвращения одного или нескольких элементов в множество, например, лучшего продавца или 10 лучших студентов. -CUBESET = КУБМНОЖ ## Определяет вычислительное множество элементов или кортежей, отправляя на сервер выражение, которое создает множество, а затем возвращает его в Microsoft Office Excel. -CUBESETCOUNT = КУБЧИСЛОЭЛМНОЖ ## Возвращает число элементов множества. -CUBEVALUE = КУБЗНАЧЕНИЕ ## Возвращает обобщенное значение из куба. - - -## -## Database functions Функции для работы с базами данных -## -DAVERAGE = ДСРЗНАЧ ## Возвращает среднее значение выбранных записей базы данных. -DCOUNT = БСЧЁТ ## Подсчитывает количество числовых ячеек в базе данных. -DCOUNTA = БСЧЁТА ## Подсчитывает количество непустых ячеек в базе данных. -DGET = БИЗВЛЕЧЬ ## Извлекает из базы данных одну запись, удовлетворяющую заданному условию. -DMAX = ДМАКС ## Возвращает максимальное значение среди выделенных записей базы данных. -DMIN = ДМИН ## Возвращает минимальное значение среди выделенных записей базы данных. -DPRODUCT = БДПРОИЗВЕД ## Перемножает значения определенного поля в записях базы данных, удовлетворяющих условию. -DSTDEV = ДСТАНДОТКЛ ## Оценивает стандартное отклонение по выборке для выделенных записей базы данных. -DSTDEVP = ДСТАНДОТКЛП ## Вычисляет стандартное отклонение по генеральной совокупности для выделенных записей базы данных -DSUM = БДСУММ ## Суммирует числа в поле для записей базы данных, удовлетворяющих условию. -DVAR = БДДИСП ## Оценивает дисперсию по выборке из выделенных записей базы данных -DVARP = БДДИСПП ## Вычисляет дисперсию по генеральной совокупности для выделенных записей базы данных - - -## -## Date and time functions Функции даты и времени -## -DATE = ДАТА ## Возвращает заданную дату в числовом формате. -DATEVALUE = ДАТАЗНАЧ ## Преобразует дату из текстового формата в числовой формат. -DAY = ДЕНЬ ## Преобразует дату в числовом формате в день месяца. -DAYS360 = ДНЕЙ360 ## Вычисляет количество дней между двумя датами на основе 360-дневного года. -EDATE = ДАТАМЕС ## Возвращает дату в числовом формате, отстоящую на заданное число месяцев вперед или назад от начальной даты. -EOMONTH = КОНМЕСЯЦА ## Возвращает дату в числовом формате для последнего дня месяца, отстоящего вперед или назад на заданное число месяцев. -HOUR = ЧАС ## Преобразует дату в числовом формате в часы. -MINUTE = МИНУТЫ ## Преобразует дату в числовом формате в минуты. -MONTH = МЕСЯЦ ## Преобразует дату в числовом формате в месяцы. -NETWORKDAYS = ЧИСТРАБДНИ ## Возвращает количество рабочих дней между двумя датами. -NOW = ТДАТА ## Возвращает текущую дату и время в числовом формате. -SECOND = СЕКУНДЫ ## Преобразует дату в числовом формате в секунды. -TIME = ВРЕМЯ ## Возвращает заданное время в числовом формате. -TIMEVALUE = ВРЕМЗНАЧ ## Преобразует время из текстового формата в числовой формат. -TODAY = СЕГОДНЯ ## Возвращает текущую дату в числовом формате. -WEEKDAY = ДЕНЬНЕД ## Преобразует дату в числовом формате в день недели. -WEEKNUM = НОМНЕДЕЛИ ## Преобразует числовое представление в число, которое указывает, на какую неделю года приходится указанная дата. -WORKDAY = РАБДЕНЬ ## Возвращает дату в числовом формате, отстоящую вперед или назад на заданное количество рабочих дней. -YEAR = ГОД ## Преобразует дату в числовом формате в год. -YEARFRAC = ДОЛЯГОДА ## Возвращает долю года, которую составляет количество дней между начальной и конечной датами. - - -## -## Engineering functions Инженерные функции -## -BESSELI = БЕССЕЛЬ.I ## Возвращает модифицированную функцию Бесселя In(x). -BESSELJ = БЕССЕЛЬ.J ## Возвращает функцию Бесселя Jn(x). -BESSELK = БЕССЕЛЬ.K ## Возвращает модифицированную функцию Бесселя Kn(x). -BESSELY = БЕССЕЛЬ.Y ## Возвращает функцию Бесселя Yn(x). -BIN2DEC = ДВ.В.ДЕС ## Преобразует двоичное число в десятичное. -BIN2HEX = ДВ.В.ШЕСТН ## Преобразует двоичное число в шестнадцатеричное. -BIN2OCT = ДВ.В.ВОСЬМ ## Преобразует двоичное число в восьмеричное. -COMPLEX = КОМПЛЕКСН ## Преобразует коэффициенты при вещественной и мнимой частях комплексного числа в комплексное число. -CONVERT = ПРЕОБР ## Преобразует число из одной системы единиц измерения в другую. -DEC2BIN = ДЕС.В.ДВ ## Преобразует десятичное число в двоичное. -DEC2HEX = ДЕС.В.ШЕСТН ## Преобразует десятичное число в шестнадцатеричное. -DEC2OCT = ДЕС.В.ВОСЬМ ## Преобразует десятичное число в восьмеричное. -DELTA = ДЕЛЬТА ## Проверяет равенство двух значений. -ERF = ФОШ ## Возвращает функцию ошибки. -ERFC = ДФОШ ## Возвращает дополнительную функцию ошибки. -GESTEP = ПОРОГ ## Проверяет, не превышает ли данное число порогового значения. -HEX2BIN = ШЕСТН.В.ДВ ## Преобразует шестнадцатеричное число в двоичное. -HEX2DEC = ШЕСТН.В.ДЕС ## Преобразует шестнадцатеричное число в десятичное. -HEX2OCT = ШЕСТН.В.ВОСЬМ ## Преобразует шестнадцатеричное число в восьмеричное. -IMABS = МНИМ.ABS ## Возвращает абсолютную величину (модуль) комплексного числа. -IMAGINARY = МНИМ.ЧАСТЬ ## Возвращает коэффициент при мнимой части комплексного числа. -IMARGUMENT = МНИМ.АРГУМЕНТ ## Возвращает значение аргумента комплексного числа (тета) — угол, выраженный в радианах. -IMCONJUGATE = МНИМ.СОПРЯЖ ## Возвращает комплексно-сопряженное комплексное число. -IMCOS = МНИМ.COS ## Возвращает косинус комплексного числа. -IMDIV = МНИМ.ДЕЛ ## Возвращает частное от деления двух комплексных чисел. -IMEXP = МНИМ.EXP ## Возвращает экспоненту комплексного числа. -IMLN = МНИМ.LN ## Возвращает натуральный логарифм комплексного числа. -IMLOG10 = МНИМ.LOG10 ## Возвращает обычный (десятичный) логарифм комплексного числа. -IMLOG2 = МНИМ.LOG2 ## Возвращает двоичный логарифм комплексного числа. -IMPOWER = МНИМ.СТЕПЕНЬ ## Возвращает комплексное число, возведенное в целую степень. -IMPRODUCT = МНИМ.ПРОИЗВЕД ## Возвращает произведение от 2 до 29 комплексных чисел. -IMREAL = МНИМ.ВЕЩ ## Возвращает коэффициент при вещественной части комплексного числа. -IMSIN = МНИМ.SIN ## Возвращает синус комплексного числа. -IMSQRT = МНИМ.КОРЕНЬ ## Возвращает значение квадратного корня из комплексного числа. -IMSUB = МНИМ.РАЗН ## Возвращает разность двух комплексных чисел. -IMSUM = МНИМ.СУММ ## Возвращает сумму комплексных чисел. -OCT2BIN = ВОСЬМ.В.ДВ ## Преобразует восьмеричное число в двоичное. -OCT2DEC = ВОСЬМ.В.ДЕС ## Преобразует восьмеричное число в десятичное. -OCT2HEX = ВОСЬМ.В.ШЕСТН ## Преобразует восьмеричное число в шестнадцатеричное. - - -## -## Financial functions Финансовые функции -## -ACCRINT = НАКОПДОХОД ## Возвращает накопленный процент по ценным бумагам с периодической выплатой процентов. -ACCRINTM = НАКОПДОХОДПОГАШ ## Возвращает накопленный процент по ценным бумагам, проценты по которым выплачиваются в срок погашения. -AMORDEGRC = АМОРУМ ## Возвращает величину амортизации для каждого периода, используя коэффициент амортизации. -AMORLINC = АМОРУВ ## Возвращает величину амортизации для каждого периода. -COUPDAYBS = ДНЕЙКУПОНДО ## Возвращает количество дней от начала действия купона до даты соглашения. -COUPDAYS = ДНЕЙКУПОН ## Возвращает число дней в периоде купона, содержащем дату соглашения. -COUPDAYSNC = ДНЕЙКУПОНПОСЛЕ ## Возвращает число дней от даты соглашения до срока следующего купона. -COUPNCD = ДАТАКУПОНПОСЛЕ ## Возвращает следующую дату купона после даты соглашения. -COUPNUM = ЧИСЛКУПОН ## Возвращает количество купонов, которые могут быть оплачены между датой соглашения и сроком вступления в силу. -COUPPCD = ДАТАКУПОНДО ## Возвращает предыдущую дату купона перед датой соглашения. -CUMIPMT = ОБЩПЛАТ ## Возвращает общую выплату, произведенную между двумя периодическими выплатами. -CUMPRINC = ОБЩДОХОД ## Возвращает общую выплату по займу между двумя периодами. -DB = ФУО ## Возвращает величину амортизации актива для заданного периода, рассчитанную методом фиксированного уменьшения остатка. -DDB = ДДОБ ## Возвращает величину амортизации актива за данный период, используя метод двойного уменьшения остатка или иной явно указанный метод. -DISC = СКИДКА ## Возвращает норму скидки для ценных бумаг. -DOLLARDE = РУБЛЬ.ДЕС ## Преобразует цену в рублях, выраженную в виде дроби, в цену в рублях, выраженную десятичным числом. -DOLLARFR = РУБЛЬ.ДРОБЬ ## Преобразует цену в рублях, выраженную десятичным числом, в цену в рублях, выраженную в виде дроби. -DURATION = ДЛИТ ## Возвращает ежегодную продолжительность действия ценных бумаг с периодическими выплатами по процентам. -EFFECT = ЭФФЕКТ ## Возвращает действующие ежегодные процентные ставки. -FV = БС ## Возвращает будущую стоимость инвестиции. -FVSCHEDULE = БЗРАСПИС ## Возвращает будущую стоимость первоначальной основной суммы после начисления ряда сложных процентов. -INTRATE = ИНОРМА ## Возвращает процентную ставку для полностью инвестированных ценных бумаг. -IPMT = ПРПЛТ ## Возвращает величину выплаты прибыли на вложения за данный период. -IRR = ВСД ## Возвращает внутреннюю ставку доходности для ряда потоков денежных средств. -ISPMT = ПРОЦПЛАТ ## Вычисляет выплаты за указанный период инвестиции. -MDURATION = МДЛИТ ## Возвращает модифицированную длительность Маколея для ценных бумаг с предполагаемой номинальной стоимостью 100 рублей. -MIRR = МВСД ## Возвращает внутреннюю ставку доходности, при которой положительные и отрицательные денежные потоки имеют разные значения ставки. -NOMINAL = НОМИНАЛ ## Возвращает номинальную годовую процентную ставку. -NPER = КПЕР ## Возвращает общее количество периодов выплаты для данного вклада. -NPV = ЧПС ## Возвращает чистую приведенную стоимость инвестиции, основанной на серии периодических денежных потоков и ставке дисконтирования. -ODDFPRICE = ЦЕНАПЕРВНЕРЕГ ## Возвращает цену за 100 рублей нарицательной стоимости ценных бумаг с нерегулярным первым периодом. -ODDFYIELD = ДОХОДПЕРВНЕРЕГ ## Возвращает доход по ценным бумагам с нерегулярным первым периодом. -ODDLPRICE = ЦЕНАПОСЛНЕРЕГ ## Возвращает цену за 100 рублей нарицательной стоимости ценных бумаг с нерегулярным последним периодом. -ODDLYIELD = ДОХОДПОСЛНЕРЕГ ## Возвращает доход по ценным бумагам с нерегулярным последним периодом. -PMT = ПЛТ ## Возвращает величину выплаты за один период аннуитета. -PPMT = ОСПЛТ ## Возвращает величину выплат в погашение основной суммы по инвестиции за заданный период. -PRICE = ЦЕНА ## Возвращает цену за 100 рублей нарицательной стоимости ценных бумаг, по которым производится периодическая выплата процентов. -PRICEDISC = ЦЕНАСКИДКА ## Возвращает цену за 100 рублей номинальной стоимости ценных бумаг, на которые сделана скидка. -PRICEMAT = ЦЕНАПОГАШ ## Возвращает цену за 100 рублей номинальной стоимости ценных бумаг, проценты по которым выплачиваются в срок погашения. -PV = ПС ## Возвращает приведенную (к текущему моменту) стоимость инвестиции. -RATE = СТАВКА ## Возвращает процентную ставку по аннуитету за один период. -RECEIVED = ПОЛУЧЕНО ## Возвращает сумму, полученную к сроку погашения полностью обеспеченных ценных бумаг. -SLN = АПЛ ## Возвращает величину линейной амортизации актива за один период. -SYD = АСЧ ## Возвращает величину амортизации актива за данный период, рассчитанную методом суммы годовых чисел. -TBILLEQ = РАВНОКЧЕК ## Возвращает эквивалентный облигации доход по казначейскому чеку. -TBILLPRICE = ЦЕНАКЧЕК ## Возвращает цену за 100 рублей нарицательной стоимости для казначейского чека. -TBILLYIELD = ДОХОДКЧЕК ## Возвращает доход по казначейскому чеку. -VDB = ПУО ## Возвращает величину амортизации актива для указанного или частичного периода при использовании метода сокращающегося баланса. -XIRR = ЧИСТВНДОХ ## Возвращает внутреннюю ставку доходности для графика денежных потоков, которые не обязательно носят периодический характер. -XNPV = ЧИСТНЗ ## Возвращает чистую приведенную стоимость для денежных потоков, которые не обязательно являются периодическими. -YIELD = ДОХОД ## Возвращает доход от ценных бумаг, по которым производятся периодические выплаты процентов. -YIELDDISC = ДОХОДСКИДКА ## Возвращает годовой доход по ценным бумагам, на которые сделана скидка (пример — казначейские чеки). -YIELDMAT = ДОХОДПОГАШ ## Возвращает годовой доход от ценных бумаг, проценты по которым выплачиваются в срок погашения. - - -## -## Information functions Информационные функции -## -CELL = ЯЧЕЙКА ## Возвращает информацию о формате, расположении или содержимом ячейки. -ERROR.TYPE = ТИП.ОШИБКИ ## Возвращает числовой код, соответствующий типу ошибки. -INFO = ИНФОРМ ## Возвращает информацию о текущей операционной среде. -ISBLANK = ЕПУСТО ## Возвращает значение ИСТИНА, если аргумент является ссылкой на пустую ячейку. -ISERR = ЕОШ ## Возвращает значение ИСТИНА, если аргумент ссылается на любое значение ошибки, кроме #Н/Д. -ISERROR = ЕОШИБКА ## Возвращает значение ИСТИНА, если аргумент ссылается на любое значение ошибки. -ISEVEN = ЕЧЁТН ## Возвращает значение ИСТИНА, если значение аргумента является четным числом. -ISLOGICAL = ЕЛОГИЧ ## Возвращает значение ИСТИНА, если аргумент ссылается на логическое значение. -ISNA = ЕНД ## Возвращает значение ИСТИНА, если аргумент ссылается на значение ошибки #Н/Д. -ISNONTEXT = ЕНЕТЕКСТ ## Возвращает значение ИСТИНА, если значение аргумента не является текстом. -ISNUMBER = ЕЧИСЛО ## Возвращает значение ИСТИНА, если аргумент ссылается на число. -ISODD = ЕНЕЧЁТ ## Возвращает значение ИСТИНА, если значение аргумента является нечетным числом. -ISREF = ЕССЫЛКА ## Возвращает значение ИСТИНА, если значение аргумента является ссылкой. -ISTEXT = ЕТЕКСТ ## Возвращает значение ИСТИНА, если значение аргумента является текстом. -N = Ч ## Возвращает значение, преобразованное в число. -NA = НД ## Возвращает значение ошибки #Н/Д. -TYPE = ТИП ## Возвращает число, обозначающее тип данных значения. - - -## -## Logical functions Логические функции -## -AND = И ## Renvoie VRAI si tous ses arguments sont VRAI. -FALSE = ЛОЖЬ ## Возвращает логическое значение ЛОЖЬ. -IF = ЕСЛИ ## Выполняет проверку условия. -IFERROR = ЕСЛИОШИБКА ## Возвращает введённое значение, если вычисление по формуле вызывает ошибку; в противном случае функция возвращает результат вычисления. -NOT = НЕ ## Меняет логическое значение своего аргумента на противоположное. -OR = ИЛИ ## Возвращает значение ИСТИНА, если хотя бы один аргумент имеет значение ИСТИНА. -TRUE = ИСТИНА ## Возвращает логическое значение ИСТИНА. - - -## -## Lookup and reference functions Функции ссылки и поиска -## -ADDRESS = АДРЕС ## Возвращает ссылку на отдельную ячейку листа в виде текста. -AREAS = ОБЛАСТИ ## Возвращает количество областей в ссылке. -CHOOSE = ВЫБОР ## Выбирает значение из списка значений по индексу. -COLUMN = СТОЛБЕЦ ## Возвращает номер столбца, на который указывает ссылка. -COLUMNS = ЧИСЛСТОЛБ ## Возвращает количество столбцов в ссылке. -HLOOKUP = ГПР ## Ищет в первой строке массива и возвращает значение отмеченной ячейки -HYPERLINK = ГИПЕРССЫЛКА ## Создает ссылку, открывающую документ, который находится на сервере сети, в интрасети или в Интернете. -INDEX = ИНДЕКС ## Использует индекс для выбора значения из ссылки или массива. -INDIRECT = ДВССЫЛ ## Возвращает ссылку, заданную текстовым значением. -LOOKUP = ПРОСМОТР ## Ищет значения в векторе или массиве. -MATCH = ПОИСКПОЗ ## Ищет значения в ссылке или массиве. -OFFSET = СМЕЩ ## Возвращает смещение ссылки относительно заданной ссылки. -ROW = СТРОКА ## Возвращает номер строки, определяемой ссылкой. -ROWS = ЧСТРОК ## Возвращает количество строк в ссылке. -RTD = ДРВ ## Извлекает данные реального времени из программ, поддерживающих автоматизацию COM (Программирование объектов. Стандартное средство для работы с объектами некоторого приложения из другого приложения или средства разработки. Программирование объектов (ранее называемое программированием OLE) является функцией модели COM (Component Object Model, модель компонентных объектов).). -TRANSPOSE = ТРАНСП ## Возвращает транспонированный массив. -VLOOKUP = ВПР ## Ищет значение в первом столбце массива и возвращает значение из ячейки в найденной строке и указанном столбце. - - -## -## Math and trigonometry functions Математические и тригонометрические функции -## -ABS = ABS ## Возвращает модуль (абсолютную величину) числа. -ACOS = ACOS ## Возвращает арккосинус числа. -ACOSH = ACOSH ## Возвращает гиперболический арккосинус числа. -ASIN = ASIN ## Возвращает арксинус числа. -ASINH = ASINH ## Возвращает гиперболический арксинус числа. -ATAN = ATAN ## Возвращает арктангенс числа. -ATAN2 = ATAN2 ## Возвращает арктангенс для заданных координат x и y. -ATANH = ATANH ## Возвращает гиперболический арктангенс числа. -CEILING = ОКРВВЕРХ ## Округляет число до ближайшего целого или до ближайшего кратного указанному значению. -COMBIN = ЧИСЛКОМБ ## Возвращает количество комбинаций для заданного числа объектов. -COS = COS ## Возвращает косинус числа. -COSH = COSH ## Возвращает гиперболический косинус числа. -DEGREES = ГРАДУСЫ ## Преобразует радианы в градусы. -EVEN = ЧЁТН ## Округляет число до ближайшего четного целого. -EXP = EXP ## Возвращает число e, возведенное в указанную степень. -FACT = ФАКТР ## Возвращает факториал числа. -FACTDOUBLE = ДВФАКТР ## Возвращает двойной факториал числа. -FLOOR = ОКРВНИЗ ## Округляет число до ближайшего меньшего по модулю значения. -GCD = НОД ## Возвращает наибольший общий делитель. -INT = ЦЕЛОЕ ## Округляет число до ближайшего меньшего целого. -LCM = НОК ## Возвращает наименьшее общее кратное. -LN = LN ## Возвращает натуральный логарифм числа. -LOG = LOG ## Возвращает логарифм числа по заданному основанию. -LOG10 = LOG10 ## Возвращает десятичный логарифм числа. -MDETERM = МОПРЕД ## Возвращает определитель матрицы массива. -MINVERSE = МОБР ## Возвращает обратную матрицу массива. -MMULT = МУМНОЖ ## Возвращает произведение матриц двух массивов. -MOD = ОСТАТ ## Возвращает остаток от деления. -MROUND = ОКРУГЛТ ## Возвращает число, округленное с требуемой точностью. -MULTINOMIAL = МУЛЬТИНОМ ## Возвращает мультиномиальный коэффициент множества чисел. -ODD = НЕЧЁТ ## Округляет число до ближайшего нечетного целого. -PI = ПИ ## Возвращает число пи. -POWER = СТЕПЕНЬ ## Возвращает результат возведения числа в степень. -PRODUCT = ПРОИЗВЕД ## Возвращает произведение аргументов. -QUOTIENT = ЧАСТНОЕ ## Возвращает целую часть частного при делении. -RADIANS = РАДИАНЫ ## Преобразует градусы в радианы. -RAND = СЛЧИС ## Возвращает случайное число в интервале от 0 до 1. -RANDBETWEEN = СЛУЧМЕЖДУ ## Возвращает случайное число в интервале между двумя заданными числами. -ROMAN = РИМСКОЕ ## Преобразует арабские цифры в римские в виде текста. -ROUND = ОКРУГЛ ## Округляет число до указанного количества десятичных разрядов. -ROUNDDOWN = ОКРУГЛВНИЗ ## Округляет число до ближайшего меньшего по модулю значения. -ROUNDUP = ОКРУГЛВВЕРХ ## Округляет число до ближайшего большего по модулю значения. -SERIESSUM = РЯД.СУММ ## Возвращает сумму степенного ряда, вычисленную по формуле. -SIGN = ЗНАК ## Возвращает знак числа. -SIN = SIN ## Возвращает синус заданного угла. -SINH = SINH ## Возвращает гиперболический синус числа. -SQRT = КОРЕНЬ ## Возвращает положительное значение квадратного корня. -SQRTPI = КОРЕНЬПИ ## Возвращает квадратный корень из значения выражения (число * ПИ). -SUBTOTAL = ПРОМЕЖУТОЧНЫЕ.ИТОГИ ## Возвращает промежуточный итог в списке или базе данных. -SUM = СУММ ## Суммирует аргументы. -SUMIF = СУММЕСЛИ ## Суммирует ячейки, удовлетворяющие заданному условию. -SUMIFS = СУММЕСЛИМН ## Суммирует диапазон ячеек, удовлетворяющих нескольким условиям. -SUMPRODUCT = СУММПРОИЗВ ## Возвращает сумму произведений соответствующих элементов массивов. -SUMSQ = СУММКВ ## Возвращает сумму квадратов аргументов. -SUMX2MY2 = СУММРАЗНКВ ## Возвращает сумму разностей квадратов соответствующих значений в двух массивах. -SUMX2PY2 = СУММСУММКВ ## Возвращает сумму сумм квадратов соответствующих элементов двух массивов. -SUMXMY2 = СУММКВРАЗН ## Возвращает сумму квадратов разностей соответствующих значений в двух массивах. -TAN = TAN ## Возвращает тангенс числа. -TANH = TANH ## Возвращает гиперболический тангенс числа. -TRUNC = ОТБР ## Отбрасывает дробную часть числа. - - -## -## Statistical functions Статистические функции -## -AVEDEV = СРОТКЛ ## Возвращает среднее арифметическое абсолютных значений отклонений точек данных от среднего. -AVERAGE = СРЗНАЧ ## Возвращает среднее арифметическое аргументов. -AVERAGEA = СРЗНАЧА ## Возвращает среднее арифметическое аргументов, включая числа, текст и логические значения. -AVERAGEIF = СРЗНАЧЕСЛИ ## Возвращает среднее значение (среднее арифметическое) всех ячеек в диапазоне, которые удовлетворяют данному условию. -AVERAGEIFS = СРЗНАЧЕСЛИМН ## Возвращает среднее значение (среднее арифметическое) всех ячеек, которые удовлетворяют нескольким условиям. -BETADIST = БЕТАРАСП ## Возвращает интегральную функцию бета-распределения. -BETAINV = БЕТАОБР ## Возвращает обратную интегральную функцию указанного бета-распределения. -BINOMDIST = БИНОМРАСП ## Возвращает отдельное значение биномиального распределения. -CHIDIST = ХИ2РАСП ## Возвращает одностороннюю вероятность распределения хи-квадрат. -CHIINV = ХИ2ОБР ## Возвращает обратное значение односторонней вероятности распределения хи-квадрат. -CHITEST = ХИ2ТЕСТ ## Возвращает тест на независимость. -CONFIDENCE = ДОВЕРИТ ## Возвращает доверительный интервал для среднего значения по генеральной совокупности. -CORREL = КОРРЕЛ ## Возвращает коэффициент корреляции между двумя множествами данных. -COUNT = СЧЁТ ## Подсчитывает количество чисел в списке аргументов. -COUNTA = СЧЁТЗ ## Подсчитывает количество значений в списке аргументов. -COUNTBLANK = СЧИТАТЬПУСТОТЫ ## Подсчитывает количество пустых ячеек в диапазоне -COUNTIF = СЧЁТЕСЛИ ## Подсчитывает количество ячеек в диапазоне, удовлетворяющих заданному условию -COUNTIFS = СЧЁТЕСЛИМН ## Подсчитывает количество ячеек внутри диапазона, удовлетворяющих нескольким условиям. -COVAR = КОВАР ## Возвращает ковариацию, среднее произведений парных отклонений -CRITBINOM = КРИТБИНОМ ## Возвращает наименьшее значение, для которого интегральное биномиальное распределение меньше или равно заданному критерию. -DEVSQ = КВАДРОТКЛ ## Возвращает сумму квадратов отклонений. -EXPONDIST = ЭКСПРАСП ## Возвращает экспоненциальное распределение. -FDIST = FРАСП ## Возвращает F-распределение вероятности. -FINV = FРАСПОБР ## Возвращает обратное значение для F-распределения вероятности. -FISHER = ФИШЕР ## Возвращает преобразование Фишера. -FISHERINV = ФИШЕРОБР ## Возвращает обратное преобразование Фишера. -FORECAST = ПРЕДСКАЗ ## Возвращает значение линейного тренда. -FREQUENCY = ЧАСТОТА ## Возвращает распределение частот в виде вертикального массива. -FTEST = ФТЕСТ ## Возвращает результат F-теста. -GAMMADIST = ГАММАРАСП ## Возвращает гамма-распределение. -GAMMAINV = ГАММАОБР ## Возвращает обратное гамма-распределение. -GAMMALN = ГАММАНЛОГ ## Возвращает натуральный логарифм гамма функции, Γ(x). -GEOMEAN = СРГЕОМ ## Возвращает среднее геометрическое. -GROWTH = РОСТ ## Возвращает значения в соответствии с экспоненциальным трендом. -HARMEAN = СРГАРМ ## Возвращает среднее гармоническое. -HYPGEOMDIST = ГИПЕРГЕОМЕТ ## Возвращает гипергеометрическое распределение. -INTERCEPT = ОТРЕЗОК ## Возвращает отрезок, отсекаемый на оси линией линейной регрессии. -KURT = ЭКСЦЕСС ## Возвращает эксцесс множества данных. -LARGE = НАИБОЛЬШИЙ ## Возвращает k-ое наибольшее значение в множестве данных. -LINEST = ЛИНЕЙН ## Возвращает параметры линейного тренда. -LOGEST = ЛГРФПРИБЛ ## Возвращает параметры экспоненциального тренда. -LOGINV = ЛОГНОРМОБР ## Возвращает обратное логарифмическое нормальное распределение. -LOGNORMDIST = ЛОГНОРМРАСП ## Возвращает интегральное логарифмическое нормальное распределение. -MAX = МАКС ## Возвращает наибольшее значение в списке аргументов. -MAXA = МАКСА ## Возвращает наибольшее значение в списке аргументов, включая числа, текст и логические значения. -MEDIAN = МЕДИАНА ## Возвращает медиану заданных чисел. -MIN = МИН ## Возвращает наименьшее значение в списке аргументов. -MINA = МИНА ## Возвращает наименьшее значение в списке аргументов, включая числа, текст и логические значения. -MODE = МОДА ## Возвращает значение моды множества данных. -NEGBINOMDIST = ОТРБИНОМРАСП ## Возвращает отрицательное биномиальное распределение. -NORMDIST = НОРМРАСП ## Возвращает нормальную функцию распределения. -NORMINV = НОРМОБР ## Возвращает обратное нормальное распределение. -NORMSDIST = НОРМСТРАСП ## Возвращает стандартное нормальное интегральное распределение. -NORMSINV = НОРМСТОБР ## Возвращает обратное значение стандартного нормального распределения. -PEARSON = ПИРСОН ## Возвращает коэффициент корреляции Пирсона. -PERCENTILE = ПЕРСЕНТИЛЬ ## Возвращает k-ую персентиль для значений диапазона. -PERCENTRANK = ПРОЦЕНТРАНГ ## Возвращает процентную норму значения в множестве данных. -PERMUT = ПЕРЕСТ ## Возвращает количество перестановок для заданного числа объектов. -POISSON = ПУАССОН ## Возвращает распределение Пуассона. -PROB = ВЕРОЯТНОСТЬ ## Возвращает вероятность того, что значение из диапазона находится внутри заданных пределов. -QUARTILE = КВАРТИЛЬ ## Возвращает квартиль множества данных. -RANK = РАНГ ## Возвращает ранг числа в списке чисел. -RSQ = КВПИРСОН ## Возвращает квадрат коэффициента корреляции Пирсона. -SKEW = СКОС ## Возвращает асимметрию распределения. -SLOPE = НАКЛОН ## Возвращает наклон линии линейной регрессии. -SMALL = НАИМЕНЬШИЙ ## Возвращает k-ое наименьшее значение в множестве данных. -STANDARDIZE = НОРМАЛИЗАЦИЯ ## Возвращает нормализованное значение. -STDEV = СТАНДОТКЛОН ## Оценивает стандартное отклонение по выборке. -STDEVA = СТАНДОТКЛОНА ## Оценивает стандартное отклонение по выборке, включая числа, текст и логические значения. -STDEVP = СТАНДОТКЛОНП ## Вычисляет стандартное отклонение по генеральной совокупности. -STDEVPA = СТАНДОТКЛОНПА ## Вычисляет стандартное отклонение по генеральной совокупности, включая числа, текст и логические значения. -STEYX = СТОШYX ## Возвращает стандартную ошибку предсказанных значений y для каждого значения x в регрессии. -TDIST = СТЬЮДРАСП ## Возвращает t-распределение Стьюдента. -TINV = СТЬЮДРАСПОБР ## Возвращает обратное t-распределение Стьюдента. -TREND = ТЕНДЕНЦИЯ ## Возвращает значения в соответствии с линейным трендом. -TRIMMEAN = УРЕЗСРЕДНЕЕ ## Возвращает среднее внутренности множества данных. -TTEST = ТТЕСТ ## Возвращает вероятность, соответствующую критерию Стьюдента. -VAR = ДИСП ## Оценивает дисперсию по выборке. -VARA = ДИСПА ## Оценивает дисперсию по выборке, включая числа, текст и логические значения. -VARP = ДИСПР ## Вычисляет дисперсию для генеральной совокупности. -VARPA = ДИСПРА ## Вычисляет дисперсию для генеральной совокупности, включая числа, текст и логические значения. -WEIBULL = ВЕЙБУЛЛ ## Возвращает распределение Вейбулла. -ZTEST = ZТЕСТ ## Возвращает двустороннее P-значение z-теста. - - -## -## Text functions Текстовые функции -## -ASC = ASC ## Для языков с двухбайтовыми наборами знаков (например, катакана) преобразует полноширинные (двухбайтовые) знаки в полуширинные (однобайтовые). -BAHTTEXT = БАТТЕКСТ ## Преобразует число в текст, используя денежный формат ß (БАТ). -CHAR = СИМВОЛ ## Возвращает знак с заданным кодом. -CLEAN = ПЕЧСИМВ ## Удаляет все непечатаемые знаки из текста. -CODE = КОДСИМВ ## Возвращает числовой код первого знака в текстовой строке. -CONCATENATE = СЦЕПИТЬ ## Объединяет несколько текстовых элементов в один. -DOLLAR = РУБЛЬ ## Преобразует число в текст, используя денежный формат. -EXACT = СОВПАД ## Проверяет идентичность двух текстовых значений. -FIND = НАЙТИ ## Ищет вхождения одного текстового значения в другом (с учетом регистра). -FINDB = НАЙТИБ ## Ищет вхождения одного текстового значения в другом (с учетом регистра). -FIXED = ФИКСИРОВАННЫЙ ## Форматирует число и преобразует его в текст с заданным числом десятичных знаков. -JIS = JIS ## Для языков с двухбайтовыми наборами знаков (например, катакана) преобразует полуширинные (однобайтовые) знаки в текстовой строке в полноширинные (двухбайтовые). -LEFT = ЛЕВСИМВ ## Возвращает крайние слева знаки текстового значения. -LEFTB = ЛЕВБ ## Возвращает крайние слева знаки текстового значения. -LEN = ДЛСТР ## Возвращает количество знаков в текстовой строке. -LENB = ДЛИНБ ## Возвращает количество знаков в текстовой строке. -LOWER = СТРОЧН ## Преобразует все буквы текста в строчные. -MID = ПСТР ## Возвращает заданное число знаков из строки текста, начиная с указанной позиции. -MIDB = ПСТРБ ## Возвращает заданное число знаков из строки текста, начиная с указанной позиции. -PHONETIC = PHONETIC ## Извлекает фонетические (фуригана) знаки из текстовой строки. -PROPER = ПРОПНАЧ ## Преобразует первую букву в каждом слове текста в прописную. -REPLACE = ЗАМЕНИТЬ ## Заменяет знаки в тексте. -REPLACEB = ЗАМЕНИТЬБ ## Заменяет знаки в тексте. -REPT = ПОВТОР ## Повторяет текст заданное число раз. -RIGHT = ПРАВСИМВ ## Возвращает крайние справа знаки текстовой строки. -RIGHTB = ПРАВБ ## Возвращает крайние справа знаки текстовой строки. -SEARCH = ПОИСК ## Ищет вхождения одного текстового значения в другом (без учета регистра). -SEARCHB = ПОИСКБ ## Ищет вхождения одного текстового значения в другом (без учета регистра). -SUBSTITUTE = ПОДСТАВИТЬ ## Заменяет в текстовой строке старый текст новым. -T = Т ## Преобразует аргументы в текст. -TEXT = ТЕКСТ ## Форматирует число и преобразует его в текст. -TRIM = СЖПРОБЕЛЫ ## Удаляет из текста пробелы. -UPPER = ПРОПИСН ## Преобразует все буквы текста в прописные. -VALUE = ЗНАЧЕН ## Преобразует текстовый аргумент в число. diff --git a/application/third_party/PHPExcel/locale/sv/config b/application/third_party/PHPExcel/locale/sv/config deleted file mode 100644 index 726f7716..00000000 --- a/application/third_party/PHPExcel/locale/sv/config +++ /dev/null @@ -1,47 +0,0 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Settings -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## - - -ArgumentSeparator = ; - - -## -## (For future use) -## -currencySymbol = kr - - -## -## Excel Error Codes (For future use) -## -NULL = #Skärning! -DIV0 = #Division/0! -VALUE = #Värdefel! -REF = #Referens! -NAME = #Namn? -NUM = #Ogiltigt! -NA = #Saknas! diff --git a/application/third_party/PHPExcel/locale/sv/functions b/application/third_party/PHPExcel/locale/sv/functions deleted file mode 100644 index 73b2deb5..00000000 --- a/application/third_party/PHPExcel/locale/sv/functions +++ /dev/null @@ -1,408 +0,0 @@ -## -## Add-in and Automation functions Tilläggs- och automatiseringsfunktioner -## -GETPIVOTDATA = HÄMTA.PIVOTDATA ## Returnerar data som lagrats i en pivottabellrapport - - -## -## Cube functions Kubfunktioner -## -CUBEKPIMEMBER = KUBKPIMEDLEM ## Returnerar namn, egenskap och mått för en KPI och visar namnet och egenskapen i cellen. En KPI, eller prestandaindikator, är ett kvantifierbart mått, t.ex. månatlig bruttovinst eller personalomsättning per kvartal, som används för att analysera ett företags resultat. -CUBEMEMBER = KUBMEDLEM ## Returnerar en medlem eller ett par i en kubhierarki. Används för att verifiera att medlemmen eller paret finns i kuben. -CUBEMEMBERPROPERTY = KUBMEDLEMSEGENSKAP ## Returnerar värdet för en medlemsegenskap i kuben. Används för att verifiera att ett medlemsnamn finns i kuben, samt för att returnera den angivna egenskapen för medlemmen. -CUBERANKEDMEMBER = KUBRANGORDNADMEDLEM ## Returnerar den n:te, eller rangordnade, medlemmen i en uppsättning. Används för att returnera ett eller flera element i en uppsättning, till exempelvis den bästa försäljaren eller de tio bästa eleverna. -CUBESET = KUBINSTÄLLNING ## Definierar en beräknad uppsättning medlemmar eller par genom att skicka ett bestämt uttryck till kuben på servern, som skapar uppsättningen och sedan returnerar den till Microsoft Office Excel. -CUBESETCOUNT = KUBINSTÄLLNINGANTAL ## Returnerar antalet objekt i en uppsättning. -CUBEVALUE = KUBVÄRDE ## Returnerar ett mängdvärde från en kub. - - -## -## Database functions Databasfunktioner -## -DAVERAGE = DMEDEL ## Returnerar medelvärdet av databasposterna -DCOUNT = DANTAL ## Räknar antalet celler som innehåller tal i en databas -DCOUNTA = DANTALV ## Räknar ifyllda celler i en databas -DGET = DHÄMTA ## Hämtar en enstaka post från en databas som uppfyller de angivna villkoren -DMAX = DMAX ## Returnerar det största värdet från databasposterna -DMIN = DMIN ## Returnerar det minsta värdet från databasposterna -DPRODUCT = DPRODUKT ## Multiplicerar värdena i ett visst fält i poster som uppfyller villkoret -DSTDEV = DSTDAV ## Uppskattar standardavvikelsen baserat på ett urval av databasposterna -DSTDEVP = DSTDAVP ## Beräknar standardavvikelsen utifrån hela populationen av valda databasposter -DSUM = DSUMMA ## Summerar talen i kolumnfält i databasposter som uppfyller villkoret -DVAR = DVARIANS ## Uppskattar variansen baserat på ett urval av databasposterna -DVARP = DVARIANSP ## Beräknar variansen utifrån hela populationen av valda databasposter - - -## -## Date and time functions Tid- och datumfunktioner -## -DATE = DATUM ## Returnerar ett serienummer för ett visst datum -DATEVALUE = DATUMVÄRDE ## Konverterar ett datum i textformat till ett serienummer -DAY = DAG ## Konverterar ett serienummer till dag i månaden -DAYS360 = DAGAR360 ## Beräknar antalet dagar mellan två datum baserat på ett 360-dagarsår -EDATE = EDATUM ## Returnerar serienumret för ett datum som infaller ett visst antal månader före eller efter startdatumet -EOMONTH = SLUTMÅNAD ## Returnerar serienumret för sista dagen i månaden ett visst antal månader tidigare eller senare -HOUR = TIMME ## Konverterar ett serienummer till en timme -MINUTE = MINUT ## Konverterar ett serienummer till en minut -MONTH = MÅNAD ## Konverterar ett serienummer till en månad -NETWORKDAYS = NETTOARBETSDAGAR ## Returnerar antalet hela arbetsdagar mellan två datum -NOW = NU ## Returnerar serienumret för dagens datum och aktuell tid -SECOND = SEKUND ## Konverterar ett serienummer till en sekund -TIME = KLOCKSLAG ## Returnerar serienumret för en viss tid -TIMEVALUE = TIDVÄRDE ## Konverterar en tid i textformat till ett serienummer -TODAY = IDAG ## Returnerar serienumret för dagens datum -WEEKDAY = VECKODAG ## Konverterar ett serienummer till en dag i veckan -WEEKNUM = VECKONR ## Konverterar ett serienummer till ett veckonummer -WORKDAY = ARBETSDAGAR ## Returnerar serienumret för ett datum ett visst antal arbetsdagar tidigare eller senare -YEAR = ÅR ## Konverterar ett serienummer till ett år -YEARFRAC = ÅRDEL ## Returnerar en del av ett år som representerar antalet hela dagar mellan start- och slutdatum - - -## -## Engineering functions Tekniska funktioner -## -BESSELI = BESSELI ## Returnerar den modifierade Bessel-funktionen In(x) -BESSELJ = BESSELJ ## Returnerar Bessel-funktionen Jn(x) -BESSELK = BESSELK ## Returnerar den modifierade Bessel-funktionen Kn(x) -BESSELY = BESSELY ## Returnerar Bessel-funktionen Yn(x) -BIN2DEC = BIN.TILL.DEC ## Omvandlar ett binärt tal till decimalt -BIN2HEX = BIN.TILL.HEX ## Omvandlar ett binärt tal till hexadecimalt -BIN2OCT = BIN.TILL.OKT ## Omvandlar ett binärt tal till oktalt -COMPLEX = KOMPLEX ## Omvandlar reella och imaginära koefficienter till ett komplext tal -CONVERT = KONVERTERA ## Omvandlar ett tal från ett måttsystem till ett annat -DEC2BIN = DEC.TILL.BIN ## Omvandlar ett decimalt tal till binärt -DEC2HEX = DEC.TILL.HEX ## Omvandlar ett decimalt tal till hexadecimalt -DEC2OCT = DEC.TILL.OKT ## Omvandlar ett decimalt tal till oktalt -DELTA = DELTA ## Testar om två värden är lika -ERF = FELF ## Returnerar felfunktionen -ERFC = FELFK ## Returnerar den komplementära felfunktionen -GESTEP = SLSTEG ## Testar om ett tal är större än ett tröskelvärde -HEX2BIN = HEX.TILL.BIN ## Omvandlar ett hexadecimalt tal till binärt -HEX2DEC = HEX.TILL.DEC ## Omvandlar ett hexadecimalt tal till decimalt -HEX2OCT = HEX.TILL.OKT ## Omvandlar ett hexadecimalt tal till oktalt -IMABS = IMABS ## Returnerar absolutvärdet (modulus) för ett komplext tal -IMAGINARY = IMAGINÄR ## Returnerar den imaginära koefficienten för ett komplext tal -IMARGUMENT = IMARGUMENT ## Returnerar det komplexa talets argument, en vinkel uttryckt i radianer -IMCONJUGATE = IMKONJUGAT ## Returnerar det komplexa talets konjugat -IMCOS = IMCOS ## Returnerar cosinus för ett komplext tal -IMDIV = IMDIV ## Returnerar kvoten för två komplexa tal -IMEXP = IMEUPPHÖJT ## Returnerar exponenten för ett komplext tal -IMLN = IMLN ## Returnerar den naturliga logaritmen för ett komplext tal -IMLOG10 = IMLOG10 ## Returnerar 10-logaritmen för ett komplext tal -IMLOG2 = IMLOG2 ## Returnerar 2-logaritmen för ett komplext tal -IMPOWER = IMUPPHÖJT ## Returnerar ett komplext tal upphöjt till en exponent -IMPRODUCT = IMPRODUKT ## Returnerar produkten av komplexa tal -IMREAL = IMREAL ## Returnerar den reella koefficienten för ett komplext tal -IMSIN = IMSIN ## Returnerar sinus för ett komplext tal -IMSQRT = IMROT ## Returnerar kvadratroten av ett komplext tal -IMSUB = IMDIFF ## Returnerar differensen mellan två komplexa tal -IMSUM = IMSUM ## Returnerar summan av komplexa tal -OCT2BIN = OKT.TILL.BIN ## Omvandlar ett oktalt tal till binärt -OCT2DEC = OKT.TILL.DEC ## Omvandlar ett oktalt tal till decimalt -OCT2HEX = OKT.TILL.HEX ## Omvandlar ett oktalt tal till hexadecimalt - - -## -## Financial functions Finansiella funktioner -## -ACCRINT = UPPLRÄNTA ## Returnerar den upplupna räntan för värdepapper med periodisk ränta -ACCRINTM = UPPLOBLRÄNTA ## Returnerar den upplupna räntan för ett värdepapper som ger avkastning på förfallodagen -AMORDEGRC = AMORDEGRC ## Returnerar avskrivningen för varje redovisningsperiod med hjälp av en avskrivningskoefficient -AMORLINC = AMORLINC ## Returnerar avskrivningen för varje redovisningsperiod -COUPDAYBS = KUPDAGBB ## Returnerar antal dagar från början av kupongperioden till likviddagen -COUPDAYS = KUPDAGARS ## Returnerar antalet dagar i kupongperioden som innehåller betalningsdatumet -COUPDAYSNC = KUPDAGNK ## Returnerar antalet dagar från betalningsdatumet till nästa kupongdatum -COUPNCD = KUPNKD ## Returnerar nästa kupongdatum efter likviddagen -COUPNUM = KUPANT ## Returnerar kuponger som förfaller till betalning mellan likviddagen och förfallodagen -COUPPCD = KUPFKD ## Returnerar föregående kupongdatum före likviddagen -CUMIPMT = KUMRÄNTA ## Returnerar den ackumulerade räntan som betalats mellan två perioder -CUMPRINC = KUMPRIS ## Returnerar det ackumulerade kapitalbeloppet som betalats på ett lån mellan två perioder -DB = DB ## Returnerar avskrivningen för en tillgång under en angiven tid enligt metoden för fast degressiv avskrivning -DDB = DEGAVSKR ## Returnerar en tillgångs värdeminskning under en viss period med hjälp av dubbel degressiv avskrivning eller någon annan metod som du anger -DISC = DISK ## Returnerar diskonteringsräntan för ett värdepapper -DOLLARDE = DECTAL ## Omvandlar ett pris uttryckt som ett bråk till ett decimaltal -DOLLARFR = BRÅK ## Omvandlar ett pris i kronor uttryckt som ett decimaltal till ett bråk -DURATION = LÖPTID ## Returnerar den årliga löptiden för en säkerhet med periodiska räntebetalningar -EFFECT = EFFRÄNTA ## Returnerar den årliga effektiva räntesatsen -FV = SLUTVÄRDE ## Returnerar det framtida värdet på en investering -FVSCHEDULE = FÖRRÄNTNING ## Returnerar det framtida värdet av ett begynnelsekapital beräknat på olika räntenivåer -INTRATE = ÅRSRÄNTA ## Returnerar räntesatsen för ett betalt värdepapper -IPMT = RBETALNING ## Returnerar räntedelen av en betalning för en given period -IRR = IR ## Returnerar internräntan för en serie betalningar -ISPMT = RALÅN ## Beräknar räntan som har betalats under en specifik betalningsperiod -MDURATION = MLÖPTID ## Returnerar den modifierade Macauley-löptiden för ett värdepapper med det antagna nominella värdet 100 kr -MIRR = MODIR ## Returnerar internräntan där positiva och negativa betalningar finansieras med olika räntor -NOMINAL = NOMRÄNTA ## Returnerar den årliga nominella räntesatsen -NPER = PERIODER ## Returnerar antalet perioder för en investering -NPV = NETNUVÄRDE ## Returnerar nuvärdet av en serie periodiska betalningar vid en given diskonteringsränta -ODDFPRICE = UDDAFPRIS ## Returnerar priset per 100 kr nominellt värde för ett värdepapper med en udda första period -ODDFYIELD = UDDAFAVKASTNING ## Returnerar avkastningen för en säkerhet med en udda första period -ODDLPRICE = UDDASPRIS ## Returnerar priset per 100 kr nominellt värde för ett värdepapper med en udda sista period -ODDLYIELD = UDDASAVKASTNING ## Returnerar avkastningen för en säkerhet med en udda sista period -PMT = BETALNING ## Returnerar den periodiska betalningen för en annuitet -PPMT = AMORT ## Returnerar amorteringsdelen av en annuitetsbetalning för en given period -PRICE = PRIS ## Returnerar priset per 100 kr nominellt värde för ett värdepapper som ger periodisk ränta -PRICEDISC = PRISDISK ## Returnerar priset per 100 kr nominellt värde för ett diskonterat värdepapper -PRICEMAT = PRISFÖRF ## Returnerar priset per 100 kr nominellt värde för ett värdepapper som ger ränta på förfallodagen -PV = PV ## Returnerar nuvärdet av en serie lika stora periodiska betalningar -RATE = RÄNTA ## Returnerar räntesatsen per period i en annuitet -RECEIVED = BELOPP ## Returnerar beloppet som utdelas på förfallodagen för ett betalat värdepapper -SLN = LINAVSKR ## Returnerar den linjära avskrivningen för en tillgång under en period -SYD = ÅRSAVSKR ## Returnerar den årliga avskrivningssumman för en tillgång under en angiven period -TBILLEQ = SSVXEKV ## Returnerar avkastningen motsvarande en obligation för en statsskuldväxel -TBILLPRICE = SSVXPRIS ## Returnerar priset per 100 kr nominellt värde för en statsskuldväxel -TBILLYIELD = SSVXRÄNTA ## Returnerar avkastningen för en statsskuldväxel -VDB = VDEGRAVSKR ## Returnerar avskrivningen för en tillgång under en angiven period (med degressiv avskrivning) -XIRR = XIRR ## Returnerar internräntan för en serie betalningar som inte nödvändigtvis är periodiska -XNPV = XNUVÄRDE ## Returnerar det nuvarande nettovärdet för en serie betalningar som inte nödvändigtvis är periodiska -YIELD = NOMAVK ## Returnerar avkastningen för ett värdepapper som ger periodisk ränta -YIELDDISC = NOMAVKDISK ## Returnerar den årliga avkastningen för diskonterade värdepapper, exempelvis en statsskuldväxel -YIELDMAT = NOMAVKFÖRF ## Returnerar den årliga avkastningen för ett värdepapper som ger ränta på förfallodagen - - -## -## Information functions Informationsfunktioner -## -CELL = CELL ## Returnerar information om formatering, plats och innehåll i en cell -ERROR.TYPE = FEL.TYP ## Returnerar ett tal som motsvarar ett felvärde -INFO = INFO ## Returnerar information om operativsystemet -ISBLANK = ÄRREF ## Returnerar SANT om värdet är tomt -ISERR = Ä ## Returnerar SANT om värdet är ett felvärde annat än #SAKNAS! -ISERROR = ÄRFEL ## Returnerar SANT om värdet är ett felvärde -ISEVEN = ÄRJÄMN ## Returnerar SANT om talet är jämnt -ISLOGICAL = ÄREJTEXT ## Returnerar SANT om värdet är ett logiskt värde -ISNA = ÄRLOGISK ## Returnerar SANT om värdet är felvärdet #SAKNAS! -ISNONTEXT = ÄRSAKNAD ## Returnerar SANT om värdet inte är text -ISNUMBER = ÄRTAL ## Returnerar SANT om värdet är ett tal -ISODD = ÄRUDDA ## Returnerar SANT om talet är udda -ISREF = ÄRTOM ## Returnerar SANT om värdet är en referens -ISTEXT = ÄRTEXT ## Returnerar SANT om värdet är text -N = N ## Returnerar ett värde omvandlat till ett tal -NA = SAKNAS ## Returnerar felvärdet #SAKNAS! -TYPE = VÄRDETYP ## Returnerar ett tal som anger värdets datatyp - - -## -## Logical functions Logiska funktioner -## -AND = OCH ## Returnerar SANT om alla argument är sanna -FALSE = FALSKT ## Returnerar det logiska värdet FALSKT -IF = OM ## Anger vilket logiskt test som ska utföras -IFERROR = OMFEL ## Returnerar ett värde som du anger om en formel utvärderar till ett fel; annars returneras resultatet av formeln -NOT = ICKE ## Inverterar logiken för argumenten -OR = ELLER ## Returnerar SANT om något argument är SANT -TRUE = SANT ## Returnerar det logiska värdet SANT - - -## -## Lookup and reference functions Sök- och referensfunktioner -## -ADDRESS = ADRESS ## Returnerar en referens som text till en enstaka cell i ett kalkylblad -AREAS = OMRÅDEN ## Returnerar antalet områden i en referens -CHOOSE = VÄLJ ## Väljer ett värde i en lista över värden -COLUMN = KOLUMN ## Returnerar kolumnnumret för en referens -COLUMNS = KOLUMNER ## Returnerar antalet kolumner i en referens -HLOOKUP = LETAKOLUMN ## Söker i den översta raden i en matris och returnerar värdet för angiven cell -HYPERLINK = HYPERLÄNK ## Skapar en genväg eller ett hopp till ett dokument i nätverket, i ett intranät eller på Internet -INDEX = INDEX ## Använder ett index för ett välja ett värde i en referens eller matris -INDIRECT = INDIREKT ## Returnerar en referens som anges av ett textvärde -LOOKUP = LETAUPP ## Letar upp värden i en vektor eller matris -MATCH = PASSA ## Letar upp värden i en referens eller matris -OFFSET = FÖRSKJUTNING ## Returnerar en referens förskjuten i förhållande till en given referens -ROW = RAD ## Returnerar radnumret för en referens -ROWS = RADER ## Returnerar antalet rader i en referens -RTD = RTD ## Hämtar realtidsdata från ett program som stöder COM-automation (Automation: Ett sätt att arbeta med ett programs objekt från ett annat program eller utvecklingsverktyg. Detta kallades tidigare för OLE Automation, och är en branschstandard och ingår i Component Object Model (COM).) -TRANSPOSE = TRANSPONERA ## Transponerar en matris -VLOOKUP = LETARAD ## Letar i den första kolumnen i en matris och flyttar över raden för att returnera värdet för en cell - - -## -## Math and trigonometry functions Matematiska och trigonometriska funktioner -## -ABS = ABS ## Returnerar absolutvärdet av ett tal -ACOS = ARCCOS ## Returnerar arcus cosinus för ett tal -ACOSH = ARCCOSH ## Returnerar inverterad hyperbolisk cosinus för ett tal -ASIN = ARCSIN ## Returnerar arcus cosinus för ett tal -ASINH = ARCSINH ## Returnerar hyperbolisk arcus sinus för ett tal -ATAN = ARCTAN ## Returnerar arcus tangens för ett tal -ATAN2 = ARCTAN2 ## Returnerar arcus tangens för en x- och en y- koordinat -ATANH = ARCTANH ## Returnerar hyperbolisk arcus tangens för ett tal -CEILING = RUNDA.UPP ## Avrundar ett tal till närmaste heltal eller närmaste signifikanta multipel -COMBIN = KOMBIN ## Returnerar antalet kombinationer för ett givet antal objekt -COS = COS ## Returnerar cosinus för ett tal -COSH = COSH ## Returnerar hyperboliskt cosinus för ett tal -DEGREES = GRADER ## Omvandlar radianer till grader -EVEN = JÄMN ## Avrundar ett tal uppåt till närmaste heltal -EXP = EXP ## Returnerar e upphöjt till ett givet tal -FACT = FAKULTET ## Returnerar fakulteten för ett tal -FACTDOUBLE = DUBBELFAKULTET ## Returnerar dubbelfakulteten för ett tal -FLOOR = RUNDA.NED ## Avrundar ett tal nedåt mot noll -GCD = SGD ## Returnerar den största gemensamma nämnaren -INT = HELTAL ## Avrundar ett tal nedåt till närmaste heltal -LCM = MGM ## Returnerar den minsta gemensamma multipeln -LN = LN ## Returnerar den naturliga logaritmen för ett tal -LOG = LOG ## Returnerar logaritmen för ett tal för en given bas -LOG10 = LOG10 ## Returnerar 10-logaritmen för ett tal -MDETERM = MDETERM ## Returnerar matrisen som är avgörandet av en matris -MINVERSE = MINVERT ## Returnerar matrisinversen av en matris -MMULT = MMULT ## Returnerar matrisprodukten av två matriser -MOD = REST ## Returnerar resten vid en division -MROUND = MAVRUNDA ## Returnerar ett tal avrundat till en given multipel -MULTINOMIAL = MULTINOMIAL ## Returnerar multinomialen för en uppsättning tal -ODD = UDDA ## Avrundar ett tal uppåt till närmaste udda heltal -PI = PI ## Returnerar värdet pi -POWER = UPPHÖJT.TILL ## Returnerar resultatet av ett tal upphöjt till en exponent -PRODUCT = PRODUKT ## Multiplicerar argumenten -QUOTIENT = KVOT ## Returnerar heltalsdelen av en division -RADIANS = RADIANER ## Omvandlar grader till radianer -RAND = SLUMP ## Returnerar ett slumptal mellan 0 och 1 -RANDBETWEEN = SLUMP.MELLAN ## Returnerar ett slumptal mellan de tal som du anger -ROMAN = ROMERSK ## Omvandlar vanliga (arabiska) siffror till romerska som text -ROUND = AVRUNDA ## Avrundar ett tal till ett angivet antal siffror -ROUNDDOWN = AVRUNDA.NEDÅT ## Avrundar ett tal nedåt mot noll -ROUNDUP = AVRUNDA.UPPÅT ## Avrundar ett tal uppåt, från noll -SERIESSUM = SERIESUMMA ## Returnerar summan av en potensserie baserat på formeln -SIGN = TECKEN ## Returnerar tecknet för ett tal -SIN = SIN ## Returnerar sinus för en given vinkel -SINH = SINH ## Returnerar hyperbolisk sinus för ett tal -SQRT = ROT ## Returnerar den positiva kvadratroten -SQRTPI = ROTPI ## Returnerar kvadratroten för (tal * pi) -SUBTOTAL = DELSUMMA ## Returnerar en delsumma i en lista eller databas -SUM = SUMMA ## Summerar argumenten -SUMIF = SUMMA.OM ## Summerar celler enligt ett angivet villkor -SUMIFS = SUMMA.OMF ## Lägger till cellerna i ett område som uppfyller flera kriterier -SUMPRODUCT = PRODUKTSUMMA ## Returnerar summan av produkterna i motsvarande matriskomponenter -SUMSQ = KVADRATSUMMA ## Returnerar summan av argumentens kvadrater -SUMX2MY2 = SUMMAX2MY2 ## Returnerar summan av differensen mellan kvadraterna för motsvarande värden i två matriser -SUMX2PY2 = SUMMAX2PY2 ## Returnerar summan av summan av kvadraterna av motsvarande värden i två matriser -SUMXMY2 = SUMMAXMY2 ## Returnerar summan av kvadraten av skillnaden mellan motsvarande värden i två matriser -TAN = TAN ## Returnerar tangens för ett tal -TANH = TANH ## Returnerar hyperbolisk tangens för ett tal -TRUNC = AVKORTA ## Avkortar ett tal till ett heltal - - -## -## Statistical functions Statistiska funktioner -## -AVEDEV = MEDELAVV ## Returnerar medelvärdet för datapunkters absoluta avvikelse från deras medelvärde -AVERAGE = MEDEL ## Returnerar medelvärdet av argumenten -AVERAGEA = AVERAGEA ## Returnerar medelvärdet av argumenten, inklusive tal, text och logiska värden -AVERAGEIF = MEDELOM ## Returnerar medelvärdet (aritmetiskt medelvärde) för alla celler i ett område som uppfyller ett givet kriterium -AVERAGEIFS = MEDELOMF ## Returnerar medelvärdet (det aritmetiska medelvärdet) för alla celler som uppfyller flera villkor. -BETADIST = BETAFÖRD ## Returnerar den kumulativa betafördelningsfunktionen -BETAINV = BETAINV ## Returnerar inversen till den kumulativa fördelningsfunktionen för en viss betafördelning -BINOMDIST = BINOMFÖRD ## Returnerar den individuella binomialfördelningen -CHIDIST = CHI2FÖRD ## Returnerar den ensidiga sannolikheten av c2-fördelningen -CHIINV = CHI2INV ## Returnerar inversen av chi2-fördelningen -CHITEST = CHI2TEST ## Returnerar oberoendetesten -CONFIDENCE = KONFIDENS ## Returnerar konfidensintervallet för en populations medelvärde -CORREL = KORREL ## Returnerar korrelationskoefficienten mellan två datamängder -COUNT = ANTAL ## Räknar hur många tal som finns bland argumenten -COUNTA = ANTALV ## Räknar hur många värden som finns bland argumenten -COUNTBLANK = ANTAL.TOMMA ## Räknar antalet tomma celler i ett område -COUNTIF = ANTAL.OM ## Räknar antalet celler i ett område som uppfyller angivna villkor. -COUNTIFS = ANTAL.OMF ## Räknar antalet celler i ett område som uppfyller flera villkor. -COVAR = KOVAR ## Returnerar kovariansen, d.v.s. medelvärdet av produkterna för parade avvikelser -CRITBINOM = KRITBINOM ## Returnerar det minsta värdet för vilket den kumulativa binomialfördelningen är mindre än eller lika med ett villkorsvärde -DEVSQ = KVADAVV ## Returnerar summan av kvadrater på avvikelser -EXPONDIST = EXPONFÖRD ## Returnerar exponentialfördelningen -FDIST = FFÖRD ## Returnerar F-sannolikhetsfördelningen -FINV = FINV ## Returnerar inversen till F-sannolikhetsfördelningen -FISHER = FISHER ## Returnerar Fisher-transformationen -FISHERINV = FISHERINV ## Returnerar inversen till Fisher-transformationen -FORECAST = PREDIKTION ## Returnerar ett värde längs en linjär trendlinje -FREQUENCY = FREKVENS ## Returnerar en frekvensfördelning som en lodrät matris -FTEST = FTEST ## Returnerar resultatet av en F-test -GAMMADIST = GAMMAFÖRD ## Returnerar gammafördelningen -GAMMAINV = GAMMAINV ## Returnerar inversen till den kumulativa gammafördelningen -GAMMALN = GAMMALN ## Returnerar den naturliga logaritmen för gammafunktionen, G(x) -GEOMEAN = GEOMEDEL ## Returnerar det geometriska medelvärdet -GROWTH = EXPTREND ## Returnerar värden längs en exponentiell trend -HARMEAN = HARMMEDEL ## Returnerar det harmoniska medelvärdet -HYPGEOMDIST = HYPGEOMFÖRD ## Returnerar den hypergeometriska fördelningen -INTERCEPT = SKÄRNINGSPUNKT ## Returnerar skärningspunkten för en linjär regressionslinje -KURT = TOPPIGHET ## Returnerar toppigheten av en mängd data -LARGE = STÖRSTA ## Returnerar det n:te största värdet i en mängd data -LINEST = REGR ## Returnerar parametrar till en linjär trendlinje -LOGEST = EXPREGR ## Returnerar parametrarna i en exponentiell trend -LOGINV = LOGINV ## Returnerar inversen till den lognormala fördelningen -LOGNORMDIST = LOGNORMFÖRD ## Returnerar den kumulativa lognormala fördelningen -MAX = MAX ## Returnerar det största värdet i en lista av argument -MAXA = MAXA ## Returnerar det största värdet i en lista av argument, inklusive tal, text och logiska värden -MEDIAN = MEDIAN ## Returnerar medianen för angivna tal -MIN = MIN ## Returnerar det minsta värdet i en lista med argument -MINA = MINA ## Returnerar det minsta värdet i en lista över argument, inklusive tal, text och logiska värden -MODE = TYPVÄRDE ## Returnerar det vanligaste värdet i en datamängd -NEGBINOMDIST = NEGBINOMFÖRD ## Returnerar den negativa binomialfördelningen -NORMDIST = NORMFÖRD ## Returnerar den kumulativa normalfördelningen -NORMINV = NORMINV ## Returnerar inversen till den kumulativa normalfördelningen -NORMSDIST = NORMSFÖRD ## Returnerar den kumulativa standardnormalfördelningen -NORMSINV = NORMSINV ## Returnerar inversen till den kumulativa standardnormalfördelningen -PEARSON = PEARSON ## Returnerar korrelationskoefficienten till Pearsons momentprodukt -PERCENTILE = PERCENTIL ## Returnerar den n:te percentilen av värden i ett område -PERCENTRANK = PROCENTRANG ## Returnerar procentrangen för ett värde i en datamängd -PERMUT = PERMUT ## Returnerar antal permutationer för ett givet antal objekt -POISSON = POISSON ## Returnerar Poisson-fördelningen -PROB = SANNOLIKHET ## Returnerar sannolikheten att värden i ett område ligger mellan två gränser -QUARTILE = KVARTIL ## Returnerar kvartilen av en mängd data -RANK = RANG ## Returnerar rangordningen för ett tal i en lista med tal -RSQ = RKV ## Returnerar kvadraten av Pearsons produktmomentkorrelationskoefficient -SKEW = SNEDHET ## Returnerar snedheten för en fördelning -SLOPE = LUTNING ## Returnerar lutningen på en linjär regressionslinje -SMALL = MINSTA ## Returnerar det n:te minsta värdet i en mängd data -STANDARDIZE = STANDARDISERA ## Returnerar ett normaliserat värde -STDEV = STDAV ## Uppskattar standardavvikelsen baserat på ett urval -STDEVA = STDEVA ## Uppskattar standardavvikelsen baserat på ett urval, inklusive tal, text och logiska värden -STDEVP = STDAVP ## Beräknar standardavvikelsen baserat på hela populationen -STDEVPA = STDEVPA ## Beräknar standardavvikelsen baserat på hela populationen, inklusive tal, text och logiska värden -STEYX = STDFELYX ## Returnerar standardfelet för ett förutspått y-värde för varje x-värde i regressionen -TDIST = TFÖRD ## Returnerar Students t-fördelning -TINV = TINV ## Returnerar inversen till Students t-fördelning -TREND = TREND ## Returnerar värden längs en linjär trend -TRIMMEAN = TRIMMEDEL ## Returnerar medelvärdet av mittpunkterna i en datamängd -TTEST = TTEST ## Returnerar sannolikheten beräknad ur Students t-test -VAR = VARIANS ## Uppskattar variansen baserat på ett urval -VARA = VARA ## Uppskattar variansen baserat på ett urval, inklusive tal, text och logiska värden -VARP = VARIANSP ## Beräknar variansen baserat på hela populationen -VARPA = VARPA ## Beräknar variansen baserat på hela populationen, inklusive tal, text och logiska värden -WEIBULL = WEIBULL ## Returnerar Weibull-fördelningen -ZTEST = ZTEST ## Returnerar det ensidiga sannolikhetsvärdet av ett z-test - - -## -## Text functions Textfunktioner -## -ASC = ASC ## Ändrar helbredds (dubbel byte) engelska bokstäver eller katakana inom en teckensträng till tecken med halvt breddsteg (enkel byte) -BAHTTEXT = BAHTTEXT ## Omvandlar ett tal till text med valutaformatet ß (baht) -CHAR = TECKENKOD ## Returnerar tecknet som anges av kod -CLEAN = STÄDA ## Tar bort alla icke utskrivbara tecken i en text -CODE = KOD ## Returnerar en numerisk kod för det första tecknet i en textsträng -CONCATENATE = SAMMANFOGA ## Sammanfogar flera textdelar till en textsträng -DOLLAR = VALUTA ## Omvandlar ett tal till text med valutaformat -EXACT = EXAKT ## Kontrollerar om två textvärden är identiska -FIND = HITTA ## Hittar en text i en annan (skiljer på gemener och versaler) -FINDB = HITTAB ## Hittar en text i en annan (skiljer på gemener och versaler) -FIXED = FASTTAL ## Formaterar ett tal som text med ett fast antal decimaler -JIS = JIS ## Ändrar halvbredds (enkel byte) engelska bokstäver eller katakana inom en teckensträng till tecken med helt breddsteg (dubbel byte) -LEFT = VÄNSTER ## Returnerar tecken längst till vänster i en sträng -LEFTB = VÄNSTERB ## Returnerar tecken längst till vänster i en sträng -LEN = LÄNGD ## Returnerar antalet tecken i en textsträng -LENB = LÄNGDB ## Returnerar antalet tecken i en textsträng -LOWER = GEMENER ## Omvandlar text till gemener -MID = EXTEXT ## Returnerar angivet antal tecken från en text med början vid den position som du anger -MIDB = EXTEXTB ## Returnerar angivet antal tecken från en text med början vid den position som du anger -PHONETIC = PHONETIC ## Returnerar de fonetiska (furigana) tecknen i en textsträng -PROPER = INITIAL ## Ändrar första bokstaven i varje ord i ett textvärde till versal -REPLACE = ERSÄTT ## Ersätter tecken i text -REPLACEB = ERSÄTTB ## Ersätter tecken i text -REPT = REP ## Upprepar en text ett bestämt antal gånger -RIGHT = HÖGER ## Returnerar tecken längst till höger i en sträng -RIGHTB = HÖGERB ## Returnerar tecken längst till höger i en sträng -SEARCH = SÖK ## Hittar ett textvärde i ett annat (skiljer inte på gemener och versaler) -SEARCHB = SÖKB ## Hittar ett textvärde i ett annat (skiljer inte på gemener och versaler) -SUBSTITUTE = BYT.UT ## Ersätter gammal text med ny text i en textsträng -T = T ## Omvandlar argumenten till text -TEXT = TEXT ## Formaterar ett tal och omvandlar det till text -TRIM = RENSA ## Tar bort blanksteg från text -UPPER = VERSALER ## Omvandlar text till versaler -VALUE = TEXTNUM ## Omvandlar ett textargument till ett tal diff --git a/application/third_party/PHPExcel/locale/tr/config b/application/third_party/PHPExcel/locale/tr/config deleted file mode 100644 index b69d4257..00000000 --- a/application/third_party/PHPExcel/locale/tr/config +++ /dev/null @@ -1,47 +0,0 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Settings -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## - - -ArgumentSeparator = ; - - -## -## (For future use) -## -currencySymbol = YTL - - -## -## Excel Error Codes (For future use) -## -NULL = #BOŞ! -DIV0 = #SAYI/0! -VALUE = #DEĞER! -REF = #BAŞV! -NAME = #AD? -NUM = #SAYI! -NA = #YOK diff --git a/application/third_party/PHPExcel/locale/tr/functions b/application/third_party/PHPExcel/locale/tr/functions deleted file mode 100644 index 45d7df1f..00000000 --- a/application/third_party/PHPExcel/locale/tr/functions +++ /dev/null @@ -1,438 +0,0 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Calculation -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ -## -## - - -## -## Add-in and Automation functions Eklenti ve Otomasyon fonksiyonları -## -GETPIVOTDATA = ÖZETVERİAL ## Bir Özet Tablo raporunda saklanan verileri verir. - - -## -## Cube functions Küp işlevleri -## -CUBEKPIMEMBER = KÜPKPIÜYE ## Kilit performans göstergesi (KPI-Key Performance Indicator) adını, özelliğini ve ölçüsünü verir ve hücredeki ad ve özelliği gösterir. KPI, bir kurumun performansını izlemek için kullanılan aylık brüt kâr ya da üç aylık çalışan giriş çıkışları gibi ölçülebilen bir birimdir. -CUBEMEMBER = KÜPÜYE ## Bir küp hiyerarşisinde bir üyeyi veya kaydı verir. Üye veya kaydın küpte varolduğunu doğrulamak için kullanılır. -CUBEMEMBERPROPERTY = KÜPÜYEÖZELLİĞİ ## Bir küpte bir üyenin özelliğinin değerini verir. Küp içinde üye adının varlığını doğrulamak ve bu üyenin belli özelliklerini getirmek için kullanılır. -CUBERANKEDMEMBER = KÜPÜYESIRASI ## Bir küme içindeki üyenin derecesini veya kaçıncı olduğunu verir. En iyi satış elemanı, veya en iyi on öğrenci gibi bir kümedeki bir veya daha fazla öğeyi getirmek için kullanılır. -CUBESET = KÜPKÜME ## Kümeyi oluşturan ve ardından bu kümeyi Microsoft Office Excel'e getiren sunucudaki küpe küme ifadelerini göndererek hesaplanan üye veya kayıt kümesini tanımlar. -CUBESETCOUNT = KÜPKÜMESAY ## Bir kümedeki öğelerin sayısını getirir. -CUBEVALUE = KÜPDEĞER ## Bir küpten toplam değeri getirir. - - -## -## Database functions Veritabanı işlevleri -## -DAVERAGE = VSEÇORT ## Seçili veritabanı girdilerinin ortalamasını verir. -DCOUNT = VSEÇSAY ## Veritabanında sayı içeren hücre sayısını hesaplar. -DCOUNTA = VSEÇSAYDOLU ## Veritabanındaki boş olmayan hücreleri sayar. -DGET = VAL ## Veritabanından, belirtilen ölçütlerle eşleşen tek bir rapor çıkarır. -DMAX = VSEÇMAK ## Seçili veritabanı girişlerinin en yüksek değerini verir. -DMIN = VSEÇMİN ## Seçili veritabanı girişlerinin en düşük değerini verir. -DPRODUCT = VSEÇÇARP ## Kayıtların belli bir alanında bulunan, bir veritabanındaki ölçütlerle eşleşen değerleri çarpar. -DSTDEV = VSEÇSTDSAPMA ## Seçili veritabanı girişlerinden oluşan bir örneğe dayanarak, standart sapmayı tahmin eder. -DSTDEVP = VSEÇSTDSAPMAS ## Standart sapmayı, seçili veritabanı girişlerinin tüm popülasyonunu esas alarak hesaplar. -DSUM = VSEÇTOPLA ## Kayıtların alan sütununda bulunan, ölçütle eşleşen sayıları toplar. -DVAR = VSEÇVAR ## Seçili veritabanı girişlerinden oluşan bir örneği esas alarak farkı tahmin eder. -DVARP = VSEÇVARS ## Seçili veritabanı girişlerinin tüm popülasyonunu esas alarak farkı hesaplar. - - -## -## Date and time functions Tarih ve saat işlevleri -## -DATE = TARİH ## Belirli bir tarihin seri numarasını verir. -DATEVALUE = TARİHSAYISI ## Metin biçimindeki bir tarihi seri numarasına dönüştürür. -DAY = GÜN ## Seri numarasını, ayın bir gününe dönüştürür. -DAYS360 = GÜN360 ## İki tarih arasındaki gün sayısını, 360 günlük yılı esas alarak hesaplar. -EDATE = SERİTARİH ## Başlangıç tarihinden itibaren, belirtilen ay sayısından önce veya sonraki tarihin seri numarasını verir. -EOMONTH = SERİAY ## Belirtilen sayıda ay önce veya sonraki ayın son gününün seri numarasını verir. -HOUR = SAAT ## Bir seri numarasını saate dönüştürür. -MINUTE = DAKİKA ## Bir seri numarasını dakikaya dönüştürür. -MONTH = AY ## Bir seri numarasını aya dönüştürür. -NETWORKDAYS = TAMİŞGÜNÜ ## İki tarih arasındaki tam çalışma günlerinin sayısını verir. -NOW = ŞİMDİ ## Geçerli tarihin ve saatin seri numarasını verir. -SECOND = SANİYE ## Bir seri numarasını saniyeye dönüştürür. -TIME = ZAMAN ## Belirli bir zamanın seri numarasını verir. -TIMEVALUE = ZAMANSAYISI ## Metin biçimindeki zamanı seri numarasına dönüştürür. -TODAY = BUGÜN ## Bugünün tarihini seri numarasına dönüştürür. -WEEKDAY = HAFTANINGÜNÜ ## Bir seri numarasını, haftanın gününe dönüştürür. -WEEKNUM = HAFTASAY ## Dizisel değerini, haftanın yıl içinde bulunduğu konumu sayısal olarak gösteren sayıya dönüştürür. -WORKDAY = İŞGÜNÜ ## Belirtilen sayıda çalışma günü öncesinin ya da sonrasının tarihinin seri numarasını verir. -YEAR = YIL ## Bir seri numarasını yıla dönüştürür. -YEARFRAC = YILORAN ## Başlangıç_tarihi ve bitiş_tarihi arasındaki tam günleri gösteren yıl kesrini verir. - - -## -## Engineering functions Mühendislik işlevleri -## -BESSELI = BESSELI ## Değiştirilmiş Bessel fonksiyonu In(x)'i verir. -BESSELJ = BESSELJ ## Bessel fonksiyonu Jn(x)'i verir. -BESSELK = BESSELK ## Değiştirilmiş Bessel fonksiyonu Kn(x)'i verir. -BESSELY = BESSELY ## Bessel fonksiyonu Yn(x)'i verir. -BIN2DEC = BIN2DEC ## İkili bir sayıyı, ondalık sayıya dönüştürür. -BIN2HEX = BIN2HEX ## İkili bir sayıyı, onaltılıya dönüştürür. -BIN2OCT = BIN2OCT ## İkili bir sayıyı, sekizliye dönüştürür. -COMPLEX = KARMAŞIK ## Gerçek ve sanal katsayıları, karmaşık sayıya dönüştürür. -CONVERT = ÇEVİR ## Bir sayıyı, bir ölçüm sisteminden bir başka ölçüm sistemine dönüştürür. -DEC2BIN = DEC2BIN ## Ondalık bir sayıyı, ikiliye dönüştürür. -DEC2HEX = DEC2HEX ## Ondalık bir sayıyı, onaltılıya dönüştürür. -DEC2OCT = DEC2OCT ## Ondalık bir sayıyı sekizliğe dönüştürür. -DELTA = DELTA ## İki değerin eşit olup olmadığını sınar. -ERF = HATAİŞLEV ## Hata işlevini verir. -ERFC = TÜMHATAİŞLEV ## Tümleyici hata işlevini verir. -GESTEP = BESINIR ## Bir sayının eşik değerinden büyük olup olmadığını sınar. -HEX2BIN = HEX2BIN ## Onaltılı bir sayıyı ikiliye dönüştürür. -HEX2DEC = HEX2DEC ## Onaltılı bir sayıyı ondalığa dönüştürür. -HEX2OCT = HEX2OCT ## Onaltılı bir sayıyı sekizliğe dönüştürür. -IMABS = SANMUTLAK ## Karmaşık bir sayının mutlak değerini (modül) verir. -IMAGINARY = SANAL ## Karmaşık bir sayının sanal katsayısını verir. -IMARGUMENT = SANBAĞ_DEĞİŞKEN ## Radyanlarla belirtilen bir açı olan teta bağımsız değişkenini verir. -IMCONJUGATE = SANEŞLENEK ## Karmaşık bir sayının karmaşık eşleniğini verir. -IMCOS = SANCOS ## Karmaşık bir sayının kosinüsünü verir. -IMDIV = SANBÖL ## İki karmaşık sayının bölümünü verir. -IMEXP = SANÜS ## Karmaşık bir sayının üssünü verir. -IMLN = SANLN ## Karmaşık bir sayının doğal logaritmasını verir. -IMLOG10 = SANLOG10 ## Karmaşık bir sayının, 10 tabanında logaritmasını verir. -IMLOG2 = SANLOG2 ## Karmaşık bir sayının 2 tabanında logaritmasını verir. -IMPOWER = SANÜSSÜ ## Karmaşık bir sayıyı, bir tamsayı üssüne yükseltilmiş olarak verir. -IMPRODUCT = SANÇARP ## Karmaşık sayıların çarpımını verir. -IMREAL = SANGERÇEK ## Karmaşık bir sayının, gerçek katsayısını verir. -IMSIN = SANSIN ## Karmaşık bir sayının sinüsünü verir. -IMSQRT = SANKAREKÖK ## Karmaşık bir sayının karekökünü verir. -IMSUB = SANÇIKAR ## İki karmaşık sayının farkını verir. -IMSUM = SANTOPLA ## Karmaşık sayıların toplamını verir. -OCT2BIN = OCT2BIN ## Sekizli bir sayıyı ikiliye dönüştürür. -OCT2DEC = OCT2DEC ## Sekizli bir sayıyı ondalığa dönüştürür. -OCT2HEX = OCT2HEX ## Sekizli bir sayıyı onaltılıya dönüştürür. - - -## -## Financial functions Finansal fonksiyonlar -## -ACCRINT = GERÇEKFAİZ ## Dönemsel faiz ödeyen hisse senedine ilişkin tahakkuk eden faizi getirir. -ACCRINTM = GERÇEKFAİZV ## Vadesinde ödeme yapan bir tahvilin tahakkuk etmiş faizini verir. -AMORDEGRC = AMORDEGRC ## Yıpranma katsayısı kullanarak her hesap döneminin değer kaybını verir. -AMORLINC = AMORLINC ## Her hesap dönemi içindeki yıpranmayı verir. -COUPDAYBS = KUPONGÜNBD ## Kupon süresinin başlangıcından alış tarihine kadar olan süredeki gün sayısını verir. -COUPDAYS = KUPONGÜN ## Kupon süresindeki, gün sayısını, alış tarihini de içermek üzere, verir. -COUPDAYSNC = KUPONGÜNDSK ## Alış tarihinden bir sonraki kupon tarihine kadar olan gün sayısını verir. -COUPNCD = KUPONGÜNSKT ## Alış tarihinden bir sonraki kupon tarihini verir. -COUPNUM = KUPONSAYI ## Alış tarihiyle vade tarihi arasında ödenecek kuponların sayısını verir. -COUPPCD = KUPONGÜNÖKT ## Alış tarihinden bir önceki kupon tarihini verir. -CUMIPMT = AİÇVERİMORANI ## İki dönem arasında ödenen kümülatif faizi verir. -CUMPRINC = ANA_PARA_ÖDEMESİ ## İki dönem arasında bir borç üzerine ödenen birikimli temeli verir. -DB = AZALANBAKİYE ## Bir malın belirtilen bir süre içindeki yıpranmasını, sabit azalan bakiye yöntemini kullanarak verir. -DDB = ÇİFTAZALANBAKİYE ## Bir malın belirtilen bir süre içindeki yıpranmasını, çift azalan bakiye yöntemi ya da sizin belirttiğiniz başka bir yöntemi kullanarak verir. -DISC = İNDİRİM ## Bir tahvilin indirim oranını verir. -DOLLARDE = LİRAON ## Kesir olarak tanımlanmış lira fiyatını, ondalık sayı olarak tanımlanmış lira fiyatına dönüştürür. -DOLLARFR = LİRAKES ## Ondalık sayı olarak tanımlanmış lira fiyatını, kesir olarak tanımlanmış lira fiyatına dönüştürür. -DURATION = SÜRE ## Belli aralıklarla faiz ödemesi yapan bir tahvilin yıllık süresini verir. -EFFECT = ETKİN ## Efektif yıllık faiz oranını verir. -FV = ANBD ## Bir yatırımın gelecekteki değerini verir. -FVSCHEDULE = GDPROGRAM ## Bir seri birleşik faiz oranı uyguladıktan sonra, bir başlangıçtaki anaparanın gelecekteki değerini verir. -INTRATE = FAİZORANI ## Tam olarak yatırım yapılmış bir tahvilin faiz oranını verir. -IPMT = FAİZTUTARI ## Bir yatırımın verilen bir süre için faiz ödemesini verir. -IRR = İÇ_VERİM_ORANI ## Bir para akışı serisi için, iç verim oranını verir. -ISPMT = ISPMT ## Yatırımın belirli bir dönemi boyunca ödenen faizi hesaplar. -MDURATION = MSÜRE ## Varsayılan par değeri 10.000.000 lira olan bir tahvil için Macauley değiştirilmiş süreyi verir. -MIRR = D_İÇ_VERİM_ORANI ## Pozitif ve negatif para akışlarının farklı oranlarda finanse edildiği durumlarda, iç verim oranını verir. -NOMINAL = NOMİNAL ## Yıllık nominal faiz oranını verir. -NPER = DÖNEM_SAYISI ## Bir yatırımın dönem sayısını verir. -NPV = NBD ## Bir yatırımın bugünkü net değerini, bir dönemsel para akışları serisine ve bir indirim oranına bağlı olarak verir. -ODDFPRICE = TEKYDEĞER ## Tek bir ilk dönemi olan bir tahvilin değerini, her 100.000.000 lirada bir verir. -ODDFYIELD = TEKYÖDEME ## Tek bir ilk dönemi olan bir tahvilin ödemesini verir. -ODDLPRICE = TEKSDEĞER ## Tek bir son dönemi olan bir tahvilin fiyatını her 10.000.000 lirada bir verir. -ODDLYIELD = TEKSÖDEME ## Tek bir son dönemi olan bir tahvilin ödemesini verir. -PMT = DEVRESEL_ÖDEME ## Bir yıllık dönemsel ödemeyi verir. -PPMT = ANA_PARA_ÖDEMESİ ## Verilen bir süre için, bir yatırımın anaparasına dayanan ödemeyi verir. -PRICE = DEĞER ## Dönemsel faiz ödeyen bir tahvilin fiyatını 10.000.00 liralık değer başına verir. -PRICEDISC = DEĞERİND ## İndirimli bir tahvilin fiyatını 10.000.000 liralık nominal değer başına verir. -PRICEMAT = DEĞERVADE ## Faizini vade sonunda ödeyen bir tahvilin fiyatını 10.000.000 nominal değer başına verir. -PV = BD ## Bir yatırımın bugünkü değerini verir. -RATE = FAİZ_ORANI ## Bir yıllık dönem başına düşen faiz oranını verir. -RECEIVED = GETİRİ ## Tam olarak yatırılmış bir tahvilin vadesinin bitiminde alınan miktarı verir. -SLN = DA ## Bir malın bir dönem içindeki doğrusal yıpranmasını verir. -SYD = YAT ## Bir malın belirli bir dönem için olan amortismanını verir. -TBILLEQ = HTAHEŞ ## Bir Hazine bonosunun bono eşdeğeri ödemesini verir. -TBILLPRICE = HTAHDEĞER ## Bir Hazine bonosunun değerini, 10.000.000 liralık nominal değer başına verir. -TBILLYIELD = HTAHÖDEME ## Bir Hazine bonosunun ödemesini verir. -VDB = DAB ## Bir malın amortismanını, belirlenmiş ya da kısmi bir dönem için, bir azalan bakiye yöntemi kullanarak verir. -XIRR = AİÇVERİMORANI ## Dönemsel olması gerekmeyen bir para akışları programı için, iç verim oranını verir. -XNPV = ANBD ## Dönemsel olması gerekmeyen bir para akışları programı için, bugünkü net değeri verir. -YIELD = ÖDEME ## Belirli aralıklarla faiz ödeyen bir tahvilin ödemesini verir. -YIELDDISC = ÖDEMEİND ## İndirimli bir tahvilin yıllık ödemesini verir; örneğin, bir Hazine bonosunun. -YIELDMAT = ÖDEMEVADE ## Vadesinin bitiminde faiz ödeyen bir tahvilin yıllık ödemesini verir. - - -## -## Information functions Bilgi fonksiyonları -## -CELL = HÜCRE ## Bir hücrenin biçimlendirmesi, konumu ya da içeriği hakkında bilgi verir. -ERROR.TYPE = HATA.TİPİ ## Bir hata türüne ilişkin sayıları verir. -INFO = BİLGİ ## Geçerli işletim ortamı hakkında bilgi verir. -ISBLANK = EBOŞSA ## Değer boşsa, DOĞRU verir. -ISERR = EHATA ## Değer, #YOK dışındaki bir hata değeriyse, DOĞRU verir. -ISERROR = EHATALIYSA ## Değer, herhangi bir hata değeriyse, DOĞRU verir. -ISEVEN = ÇİFTTİR ## Sayı çiftse, DOĞRU verir. -ISLOGICAL = EMANTIKSALSA ## Değer, mantıksal bir değerse, DOĞRU verir. -ISNA = EYOKSA ## Değer, #YOK hata değeriyse, DOĞRU verir. -ISNONTEXT = EMETİNDEĞİLSE ## Değer, metin değilse, DOĞRU verir. -ISNUMBER = ESAYIYSA ## Değer, bir sayıysa, DOĞRU verir. -ISODD = TEKTİR ## Sayı tekse, DOĞRU verir. -ISREF = EREFSE ## Değer bir başvuruysa, DOĞRU verir. -ISTEXT = EMETİNSE ## Değer bir metinse DOĞRU verir. -N = N ## Sayıya dönüştürülmüş bir değer verir. -NA = YOKSAY ## #YOK hata değerini verir. -TYPE = TİP ## Bir değerin veri türünü belirten bir sayı verir. - - -## -## Logical functions Mantıksal fonksiyonlar -## -AND = VE ## Bütün bağımsız değişkenleri DOĞRU ise, DOĞRU verir. -FALSE = YANLIŞ ## YANLIŞ mantıksal değerini verir. -IF = EĞER ## Gerçekleştirilecek bir mantıksal sınama belirtir. -IFERROR = EĞERHATA ## Formül hatalıysa belirttiğiniz değeri verir; bunun dışındaki durumlarda formülün sonucunu verir. -NOT = DEĞİL ## Bağımsız değişkeninin mantığını tersine çevirir. -OR = YADA ## Bağımsız değişkenlerden herhangi birisi DOĞRU ise, DOĞRU verir. -TRUE = DOĞRU ## DOĞRU mantıksal değerini verir. - - -## -## Lookup and reference functions Arama ve Başvuru fonksiyonları -## -ADDRESS = ADRES ## Bir başvuruyu, çalışma sayfasındaki tek bir hücreye metin olarak verir. -AREAS = ALANSAY ## Renvoie le nombre de zones dans une référence. -CHOOSE = ELEMAN ## Değerler listesinden bir değer seçer. -COLUMN = SÜTUN ## Bir başvurunun sütun sayısını verir. -COLUMNS = SÜTUNSAY ## Bir başvurudaki sütunların sayısını verir. -HLOOKUP = YATAYARA ## Bir dizinin en üst satırına bakar ve belirtilen hücrenin değerini verir. -HYPERLINK = KÖPRÜ ## Bir ağ sunucusunda, bir intranette ya da Internet'te depolanan bir belgeyi açan bir kısayol ya da atlama oluşturur. -INDEX = İNDİS ## Başvurudan veya diziden bir değer seçmek için, bir dizin kullanır. -INDIRECT = DOLAYLI ## Metin değeriyle belirtilen bir başvuru verir. -LOOKUP = ARA ## Bir vektördeki veya dizideki değerleri arar. -MATCH = KAÇINCI ## Bir başvurudaki veya dizideki değerleri arar. -OFFSET = KAYDIR ## Verilen bir başvurudan, bir başvuru kaydırmayı verir. -ROW = SATIR ## Bir başvurunun satır sayısını verir. -ROWS = SATIRSAY ## Bir başvurudaki satırların sayısını verir. -RTD = RTD ## COM otomasyonunu destekleyen programdan gerçek zaman verileri alır. -TRANSPOSE = DEVRİK_DÖNÜŞÜM ## Bir dizinin devrik dönüşümünü verir. -VLOOKUP = DÜŞEYARA ## Bir dizinin ilk sütununa bakar ve bir hücrenin değerini vermek için satır boyunca hareket eder. - - -## -## Math and trigonometry functions Matematik ve trigonometri fonksiyonları -## -ABS = MUTLAK ## Bir sayının mutlak değerini verir. -ACOS = ACOS ## Bir sayının ark kosinüsünü verir. -ACOSH = ACOSH ## Bir sayının ters hiperbolik kosinüsünü verir. -ASIN = ASİN ## Bir sayının ark sinüsünü verir. -ASINH = ASİNH ## Bir sayının ters hiperbolik sinüsünü verir. -ATAN = ATAN ## Bir sayının ark tanjantını verir. -ATAN2 = ATAN2 ## Ark tanjantı, x- ve y- koordinatlarından verir. -ATANH = ATANH ## Bir sayının ters hiperbolik tanjantını verir. -CEILING = TAVANAYUVARLA ## Bir sayıyı, en yakın tamsayıya ya da en yakın katına yuvarlar. -COMBIN = KOMBİNASYON ## Verilen sayıda öğenin kombinasyon sayısını verir. -COS = COS ## Bir sayının kosinüsünü verir. -COSH = COSH ## Bir sayının hiperbolik kosinüsünü verir. -DEGREES = DERECE ## Radyanları dereceye dönüştürür. -EVEN = ÇİFT ## Bir sayıyı, en yakın daha büyük çift tamsayıya yuvarlar. -EXP = ÜS ## e'yi, verilen bir sayının üssüne yükseltilmiş olarak verir. -FACT = ÇARPINIM ## Bir sayının faktörünü verir. -FACTDOUBLE = ÇİFTFAKTÖR ## Bir sayının çift çarpınımını verir. -FLOOR = TABANAYUVARLA ## Bir sayıyı, daha küçük sayıya, sıfıra yakınsayarak yuvarlar. -GCD = OBEB ## En büyük ortak böleni verir. -INT = TAMSAYI ## Bir sayıyı aşağıya doğru en yakın tamsayıya yuvarlar. -LCM = OKEK ## En küçük ortak katı verir. -LN = LN ## Bir sayının doğal logaritmasını verir. -LOG = LOG ## Bir sayının, belirtilen bir tabandaki logaritmasını verir. -LOG10 = LOG10 ## Bir sayının 10 tabanında logaritmasını verir. -MDETERM = DETERMİNANT ## Bir dizinin dizey determinantını verir. -MINVERSE = DİZEY_TERS ## Bir dizinin dizey tersini verir. -MMULT = DÇARP ## İki dizinin dizey çarpımını verir. -MOD = MODÜLO ## Bölmeden kalanı verir. -MROUND = KYUVARLA ## İstenen kata yuvarlanmış bir sayı verir. -MULTINOMIAL = ÇOKTERİMLİ ## Bir sayılar kümesinin çok terimlisini verir. -ODD = TEK ## Bir sayıyı en yakın daha büyük tek sayıya yuvarlar. -PI = Pİ ## Pi değerini verir. -POWER = KUVVET ## Bir üsse yükseltilmiş sayının sonucunu verir. -PRODUCT = ÇARPIM ## Bağımsız değişkenlerini çarpar. -QUOTIENT = BÖLÜM ## Bir bölme işleminin tamsayı kısmını verir. -RADIANS = RADYAN ## Dereceleri radyanlara dönüştürür. -RAND = S_SAYI_ÜRET ## 0 ile 1 arasında rastgele bir sayı verir. -RANDBETWEEN = RASTGELEARALIK ## Belirttiğiniz sayılar arasında rastgele bir sayı verir. -ROMAN = ROMEN ## Bir normal rakamı, metin olarak, romen rakamına çevirir. -ROUND = YUVARLA ## Bir sayıyı, belirtilen basamak sayısına yuvarlar. -ROUNDDOWN = AŞAĞIYUVARLA ## Bir sayıyı, daha küçük sayıya, sıfıra yakınsayarak yuvarlar. -ROUNDUP = YUKARIYUVARLA ## Bir sayıyı daha büyük sayıya, sıfırdan ıraksayarak yuvarlar. -SERIESSUM = SERİTOPLA ## Bir üs serisinin toplamını, formüle bağlı olarak verir. -SIGN = İŞARET ## Bir sayının işaretini verir. -SIN = SİN ## Verilen bir açının sinüsünü verir. -SINH = SİNH ## Bir sayının hiperbolik sinüsünü verir. -SQRT = KAREKÖK ## Pozitif bir karekök verir. -SQRTPI = KAREKÖKPİ ## (* Pi sayısının) kare kökünü verir. -SUBTOTAL = ALTTOPLAM ## Bir listedeki ya da veritabanındaki bir alt toplamı verir. -SUM = TOPLA ## Bağımsız değişkenlerini toplar. -SUMIF = ETOPLA ## Verilen ölçütle belirlenen hücreleri toplar. -SUMIFS = SUMIFS ## Bir aralıktaki, birden fazla ölçüte uyan hücreleri ekler. -SUMPRODUCT = TOPLA.ÇARPIM ## İlişkili dizi bileşenlerinin çarpımlarının toplamını verir. -SUMSQ = TOPKARE ## Bağımsız değişkenlerin karelerinin toplamını verir. -SUMX2MY2 = TOPX2EY2 ## İki dizideki ilişkili değerlerin farkının toplamını verir. -SUMX2PY2 = TOPX2AY2 ## İki dizideki ilişkili değerlerin karelerinin toplamının toplamını verir. -SUMXMY2 = TOPXEY2 ## İki dizideki ilişkili değerlerin farklarının karelerinin toplamını verir. -TAN = TAN ## Bir sayının tanjantını verir. -TANH = TANH ## Bir sayının hiperbolik tanjantını verir. -TRUNC = NSAT ## Bir sayının, tamsayı durumuna gelecek şekilde, fazlalıklarını atar. - - -## -## Statistical functions İstatistiksel fonksiyonlar -## -AVEDEV = ORTSAP ## Veri noktalarının ortalamalarından mutlak sapmalarının ortalamasını verir. -AVERAGE = ORTALAMA ## Bağımsız değişkenlerinin ortalamasını verir. -AVERAGEA = ORTALAMAA ## Bağımsız değişkenlerinin, sayılar, metin ve mantıksal değerleri içermek üzere ortalamasını verir. -AVERAGEIF = EĞERORTALAMA ## Verili ölçütü karşılayan bir aralıktaki bütün hücrelerin ortalamasını (aritmetik ortalama) hesaplar. -AVERAGEIFS = EĞERLERORTALAMA ## Birden çok ölçüte uyan tüm hücrelerin ortalamasını (aritmetik ortalama) hesaplar. -BETADIST = BETADAĞ ## Beta birikimli dağılım fonksiyonunu verir. -BETAINV = BETATERS ## Belirli bir beta dağılımı için birikimli dağılım fonksiyonunun tersini verir. -BINOMDIST = BİNOMDAĞ ## Tek terimli binom dağılımı olasılığını verir. -CHIDIST = KİKAREDAĞ ## Kikare dağılımın tek kuyruklu olasılığını verir. -CHIINV = KİKARETERS ## Kikare dağılımın kuyruklu olasılığının tersini verir. -CHITEST = KİKARETEST ## Bağımsızlık sınamalarını verir. -CONFIDENCE = GÜVENİRLİK ## Bir popülasyon ortalaması için güvenirlik aralığını verir. -CORREL = KORELASYON ## İki veri kümesi arasındaki bağlantı katsayısını verir. -COUNT = BAĞ_DEĞ_SAY ## Bağımsız değişkenler listesinde kaç tane sayı bulunduğunu sayar. -COUNTA = BAĞ_DEĞ_DOLU_SAY ## Bağımsız değişkenler listesinde kaç tane değer bulunduğunu sayar. -COUNTBLANK = BOŞLUKSAY ## Aralıktaki boş hücre sayısını hesaplar. -COUNTIF = EĞERSAY ## Verilen ölçütlere uyan bir aralık içindeki hücreleri sayar. -COUNTIFS = ÇOKEĞERSAY ## Birden çok ölçüte uyan bir aralık içindeki hücreleri sayar. -COVAR = KOVARYANS ## Eşleştirilmiş sapmaların ortalaması olan kovaryansı verir. -CRITBINOM = KRİTİKBİNOM ## Birikimli binom dağılımının bir ölçüt değerinden küçük veya ölçüt değerine eşit olduğu en küçük değeri verir. -DEVSQ = SAPKARE ## Sapmaların karelerinin toplamını verir. -EXPONDIST = ÜSTELDAĞ ## Üstel dağılımı verir. -FDIST = FDAĞ ## F olasılık dağılımını verir. -FINV = FTERS ## F olasılık dağılımının tersini verir. -FISHER = FISHER ## Fisher dönüşümünü verir. -FISHERINV = FISHERTERS ## Fisher dönüşümünün tersini verir. -FORECAST = TAHMİN ## Bir doğrusal eğilim boyunca bir değer verir. -FREQUENCY = SIKLIK ## Bir sıklık dağılımını, dikey bir dizi olarak verir. -FTEST = FTEST ## Bir F-test'in sonucunu verir. -GAMMADIST = GAMADAĞ ## Gama dağılımını verir. -GAMMAINV = GAMATERS ## Gama kümülatif dağılımının tersini verir. -GAMMALN = GAMALN ## Gama fonksiyonunun (?(x)) doğal logaritmasını verir. -GEOMEAN = GEOORT ## Geometrik ortayı verir. -GROWTH = BÜYÜME ## Üstel bir eğilim boyunca değerler verir. -HARMEAN = HARORT ## Harmonik ortayı verir. -HYPGEOMDIST = HİPERGEOMDAĞ ## Hipergeometrik dağılımı verir. -INTERCEPT = KESMENOKTASI ## Doğrusal çakıştırma çizgisinin kesişme noktasını verir. -KURT = BASIKLIK ## Bir veri kümesinin basıklığını verir. -LARGE = BÜYÜK ## Bir veri kümesinde k. en büyük değeri verir. -LINEST = DOT ## Doğrusal bir eğilimin parametrelerini verir. -LOGEST = LOT ## Üstel bir eğilimin parametrelerini verir. -LOGINV = LOGTERS ## Bir lognormal dağılımının tersini verir. -LOGNORMDIST = LOGNORMDAĞ ## Birikimli lognormal dağılımını verir. -MAX = MAK ## Bir bağımsız değişkenler listesindeki en büyük değeri verir. -MAXA = MAKA ## Bir bağımsız değişkenler listesindeki, sayılar, metin ve mantıksal değerleri içermek üzere, en büyük değeri verir. -MEDIAN = ORTANCA ## Belirtilen sayıların orta değerini verir. -MIN = MİN ## Bir bağımsız değişkenler listesindeki en küçük değeri verir. -MINA = MİNA ## Bir bağımsız değişkenler listesindeki, sayılar, metin ve mantıksal değerleri de içermek üzere, en küçük değeri verir. -MODE = ENÇOK_OLAN ## Bir veri kümesindeki en sık rastlanan değeri verir. -NEGBINOMDIST = NEGBİNOMDAĞ ## Negatif binom dağılımını verir. -NORMDIST = NORMDAĞ ## Normal birikimli dağılımı verir. -NORMINV = NORMTERS ## Normal kümülatif dağılımın tersini verir. -NORMSDIST = NORMSDAĞ ## Standart normal birikimli dağılımı verir. -NORMSINV = NORMSTERS ## Standart normal birikimli dağılımın tersini verir. -PEARSON = PEARSON ## Pearson çarpım moment korelasyon katsayısını verir. -PERCENTILE = YÜZDEBİRLİK ## Bir aralık içerisinde bulunan değerlerin k. frekans toplamını verir. -PERCENTRANK = YÜZDERANK ## Bir veri kümesindeki bir değerin yüzde mertebesini verir. -PERMUT = PERMÜTASYON ## Verilen sayıda nesne için permütasyon sayısını verir. -POISSON = POISSON ## Poisson dağılımını verir. -PROB = OLASILIK ## Bir aralıktaki değerlerin iki sınır arasında olması olasılığını verir. -QUARTILE = DÖRTTEBİRLİK ## Bir veri kümesinin dörtte birliğini verir. -RANK = RANK ## Bir sayılar listesinde bir sayının mertebesini verir. -RSQ = RKARE ## Pearson çarpım moment korelasyon katsayısının karesini verir. -SKEW = ÇARPIKLIK ## Bir dağılımın çarpıklığını verir. -SLOPE = EĞİM ## Doğrusal çakışma çizgisinin eğimini verir. -SMALL = KÜÇÜK ## Bir veri kümesinde k. en küçük değeri verir. -STANDARDIZE = STANDARTLAŞTIRMA ## Normalleştirilmiş bir değer verir. -STDEV = STDSAPMA ## Bir örneğe dayanarak standart sapmayı tahmin eder. -STDEVA = STDSAPMAA ## Standart sapmayı, sayılar, metin ve mantıksal değerleri içermek üzere, bir örneğe bağlı olarak tahmin eder. -STDEVP = STDSAPMAS ## Standart sapmayı, tüm popülasyona bağlı olarak hesaplar. -STDEVPA = STDSAPMASA ## Standart sapmayı, sayılar, metin ve mantıksal değerleri içermek üzere, tüm popülasyona bağlı olarak hesaplar. -STEYX = STHYX ## Regresyondaki her x için tahmini y değerinin standart hatasını verir. -TDIST = TDAĞ ## T-dağılımını verir. -TINV = TTERS ## T-dağılımının tersini verir. -TREND = EĞİLİM ## Doğrusal bir eğilim boyunca değerler verir. -TRIMMEAN = KIRPORTALAMA ## Bir veri kümesinin içinin ortalamasını verir. -TTEST = TTEST ## T-test'le ilişkilendirilmiş olasılığı verir. -VAR = VAR ## Varyansı, bir örneğe bağlı olarak tahmin eder. -VARA = VARA ## Varyansı, sayılar, metin ve mantıksal değerleri içermek üzere, bir örneğe bağlı olarak tahmin eder. -VARP = VARS ## Varyansı, tüm popülasyona dayanarak hesaplar. -VARPA = VARSA ## Varyansı, sayılar, metin ve mantıksal değerleri içermek üzere, tüm popülasyona bağlı olarak hesaplar. -WEIBULL = WEIBULL ## Weibull dağılımını hesaplar. -ZTEST = ZTEST ## Z-testinin tek kuyruklu olasılık değerini hesaplar. - - -## -## Text functions Metin fonksiyonları -## -ASC = ASC ## Bir karakter dizesindeki çift enli (iki bayt) İngilizce harfleri veya katakanayı yarım enli (tek bayt) karakterlerle değiştirir. -BAHTTEXT = BAHTTEXT ## Sayıyı, ß (baht) para birimi biçimini kullanarak metne dönüştürür. -CHAR = DAMGA ## Kod sayısıyla belirtilen karakteri verir. -CLEAN = TEMİZ ## Metindeki bütün yazdırılamaz karakterleri kaldırır. -CODE = KOD ## Bir metin dizesindeki ilk karakter için sayısal bir kod verir. -CONCATENATE = BİRLEŞTİR ## Pek çok metin öğesini bir metin öğesi olarak birleştirir. -DOLLAR = LİRA ## Bir sayıyı YTL (yeni Türk lirası) para birimi biçimini kullanarak metne dönüştürür. -EXACT = ÖZDEŞ ## İki metin değerinin özdeş olup olmadığını anlamak için, değerleri denetler. -FIND = BUL ## Bir metin değerini, bir başkasının içinde bulur (büyük küçük harf duyarlıdır). -FINDB = BULB ## Bir metin değerini, bir başkasının içinde bulur (büyük küçük harf duyarlıdır). -FIXED = SAYIDÜZENLE ## Bir sayıyı, sabit sayıda ondalıkla, metin olarak biçimlendirir. -JIS = JIS ## Bir karakter dizesindeki tek enli (tek bayt) İngilizce harfleri veya katakanayı çift enli (iki bayt) karakterlerle değiştirir. -LEFT = SOL ## Bir metin değerinden en soldaki karakterleri verir. -LEFTB = SOLB ## Bir metin değerinden en soldaki karakterleri verir. -LEN = UZUNLUK ## Bir metin dizesindeki karakter sayısını verir. -LENB = UZUNLUKB ## Bir metin dizesindeki karakter sayısını verir. -LOWER = KÜÇÜKHARF ## Metni küçük harfe çevirir. -MID = ORTA ## Bir metin dizesinden belirli sayıda karakteri, belirttiğiniz konumdan başlamak üzere verir. -MIDB = ORTAB ## Bir metin dizesinden belirli sayıda karakteri, belirttiğiniz konumdan başlamak üzere verir. -PHONETIC = SES ## Metin dizesinden ses (furigana) karakterlerini ayıklar. -PROPER = YAZIM.DÜZENİ ## Bir metin değerinin her bir sözcüğünün ilk harfini büyük harfe çevirir. -REPLACE = DEĞİŞTİR ## Metnin içindeki karakterleri değiştirir. -REPLACEB = DEĞİŞTİRB ## Metnin içindeki karakterleri değiştirir. -REPT = YİNELE ## Metni belirtilen sayıda yineler. -RIGHT = SAĞ ## Bir metin değerinden en sağdaki karakterleri verir. -RIGHTB = SAĞB ## Bir metin değerinden en sağdaki karakterleri verir. -SEARCH = BUL ## Bir metin değerini, bir başkasının içinde bulur (büyük küçük harf duyarlı değildir). -SEARCHB = BULB ## Bir metin değerini, bir başkasının içinde bulur (büyük küçük harf duyarlı değildir). -SUBSTITUTE = YERİNEKOY ## Bir metin dizesinde, eski metnin yerine yeni metin koyar. -T = M ## Bağımsız değerlerini metne dönüştürür. -TEXT = METNEÇEVİR ## Bir sayıyı biçimlendirir ve metne dönüştürür. -TRIM = KIRP ## Metindeki boşlukları kaldırır. -UPPER = BÜYÜKHARF ## Metni büyük harfe çevirir. -VALUE = SAYIYAÇEVİR ## Bir metin bağımsız değişkenini sayıya dönüştürür. diff --git a/application/third_party/PHPReport.php b/application/third_party/PHPReport.php deleted file mode 100644 index f7978510..00000000 --- a/application/third_party/PHPReport.php +++ /dev/null @@ -1,1076 +0,0 @@ -<?php -/** - * PHPReport - * Library for generating reports from PHP - * Copyright (c) 2012 PHPReport - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * - * @package PHPReport - * @author Vernes Šiljegović - * @copyright Copyright (c) 2012 PHPReport - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version 1.1, 2013-01-06 - */ - -if ( ! defined('BASEPATH')) exit('No direct script access allowed'); - -/** - * PHPExcel - * - * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel) - */ - - -require_once('PHPExcel.php'); - -class PHPReport { - - //report template - private $_templateDir; - private $_template; - private $_usingTemplate; - - //internal collections of data - private $_data=array(); - private $_search=array(); - private $_replace=array(); - private $_group=array(); - private $_lastColumn='A'; - private $_lastRow=1; - - //parameters - private $_renderHeading=false; - private $_useStripRows=false; - private $_headingText; - private $_noResultText; - - //styling - private $_headerStyleArray = array( - 'font' => array( - 'bold' => true, - 'color' => array( - 'rgb' => 'FFFFFF' - ) - ), - 'fill' => array( - 'type' => PHPExcel_Style_Fill::FILL_SOLID, - 'startcolor' => array( - 'rgb' => '4E5A7A' - ) - ) - ); - private $_footerStyleArray = array( - 'font' => array( - 'bold' => true, - ), - 'fill' => array( - 'type' => PHPExcel_Style_Fill::FILL_SOLID, - 'startcolor' => array( - 'rgb' => 'E4E8F3', - ) - ) - ); - private $_headerGroupStyleArray = array( - 'alignment' => array( - 'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_LEFT - ), - 'font' => array( - 'bold' => true - ), - 'fill' => array( - 'type' => PHPExcel_Style_Fill::FILL_SOLID, - 'startcolor' => array( - 'rgb' => '8DB4E3' - ) - ) - ); - private $_footerGroupStyleArray = array( - 'font' => array( - 'bold' => true - ), - 'fill' => array( - 'type' => PHPExcel_Style_Fill::FILL_SOLID, - 'startcolor' => array( - 'rgb' => 'C5D9F1' - ) - ) - ); - private $_noResultStyleArray = array( - 'borders' => array( - 'outline' => array( - 'style' => PHPExcel_Style_Border::BORDER_THIN - ) - ), - 'alignment' => array( - 'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER - ), - 'font' => array( - 'bold' => true - ), - 'fill' => array( - 'type' => PHPExcel_Style_Fill::FILL_SOLID, - 'startcolor' => array( - 'rgb' => 'FFEBA5' - ) - ) - ); - private $_headingStyleArray = array( - 'font' => array( - 'bold' => true, - 'color' => array( - 'rgb' => '4E5A7A' - ), - 'size' => '24' - ), - 'alignment' => array( - 'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER - ) - ); - - //PHPExcel objects - private $objReader; - private $objPHPExcel; - private $objWorksheet; - private $objWriter; - - /** - * Creates new report with some configuration parameters - * @param array $config - */ - public function __construct($config=array()) - { - $this->setConfig($config); - $this->init(); - } - - /** - * Uses configuration array to adjust report parameters - * @param array $config - */ - public function setConfig($config) - { - if(!is_array($config)) - throw new Exception('Unable to use non-array configuration'); - - foreach($config as $key=>$value) - { - $_key='_'.$key; - $this->$_key=$value; - } - } - - /** - * Initializes internal objects - */ - private function init() - { - if($this->_template!='') - { - $this->loadTemplate(); - } - else - { - $this->createTemplate(); - } - } - - /** - * Loads Excel file as a template for report - */ - public function loadTemplate($template='') - { - if($template!='') - $this->_template=$template; - - if(!is_file($this->_templateDir.$this->_template)) - throw new Exception('Unable to load template file: '.$this->_templateDir.$this->_template); - - //identify type of template file - $inputFileType = PHPExcel_IOFactory::identify($this->_templateDir.$this->_template); - //TODO: better control of allowed input types - //load template file into PHPExcel objects - $this->objReader = PHPExcel_IOFactory::createReader($inputFileType); - $this->objPHPExcel = $this->objReader->load($this->_templateDir.$this->_template); - $this->objWorksheet = $this->objPHPExcel->getActiveSheet(); - - $this->_usingTemplate=true; - } - - /** - * Creates PHPExcel object and template for report - */ - private function createTemplate() - { - $this->objPHPExcel = new PHPExcel(); - $this->objPHPExcel->setActiveSheetIndex(0); - $this->objWorksheet = $this->objPHPExcel->getActiveSheet(); - //TODO: other parameters - $this->objWorksheet->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT); - $this->objWorksheet->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4); - $this->objWorksheet->getPageSetup()->setHorizontalCentered(true); - $this->objWorksheet->getPageSetup()->setVerticalCentered(false); - - $this->_usingTemplate=false; - } - - /** - * Takes an array of all the data for report - * - * @param array $dataCollection Associative array with data for report - * or an array of such arrays - * id - unique identifier of data group - * data - Single array of data - */ - public function load($dataCollection) - { - if(!is_array($dataCollection)) - throw new Exception("Could not load a non-array data!"); - - //clear current data - $this->clearData(); - - //check if it is a single array of data - if(isset ($dataCollection['data'])) - { - $this->addData($dataCollection); - } - else - { - //it's an array of arrays of data, add all - foreach($dataCollection as $data) - $this->addData($data); - } - } - - /** - * Takes an array of all the data for report - * - * @param array $data Associative array with two elements - * id - unique identifier of data group - * data - Single array of data - */ - private function addData($data) - { - if(!is_array($data)) - throw new Exception("Could not load a non-array data!"); - if(!isset ($data['id'])) - throw new Exception("Every array of data needs an 'id'!"); - if(!isset ($data['data'])) - throw new Exception("Loaded array needs an element 'data'!"); - - $this->_data[]=$data; - } - - /** - * Clears internal collection of data - */ - private function clearData() - { - $this->_data=array(); - } - - /** - *Creates a new report based on loaded data - */ - public function createReport() - { - foreach($this->_data as $data) - { - //$data must have id and data elements - //$data may also have config, header, footer, group - - $id=$data['id']; - $format=isset($data['format'])?$data['format']:array(); - $config=isset($data['config'])?$data['config']:array(); - $group=isset($data['group'])?$data['group']:array(); - - $configHeader=isset($config['header'])?$config['header']:$config; - $configData=isset($config['data'])?$config['data']:$config; - $configFooter=isset($config['footer'])?$config['footer']:$config; - - $config=array( - 'header'=>$configHeader, - 'data'=>$configData, - 'footer'=>$configFooter - ); - - //set the group - $this->_group=$group; - - $loadCollection=array(); - - $nextRow=$this->objWorksheet->getHighestRow(); - if($nextRow>1) - $nextRow++; - $colIndex=-1; - - //form the header for data - if(isset($data['header'])) - { - $headerId='HEADER_'.$id; - foreach($data['header'] as $k=>$v) - { - $colIndex++; - $tag="{".$headerId.":".$k."}"; - $this->objWorksheet->setCellValueByColumnAndRow($colIndex,$nextRow,$tag); - if(isset($config['header'][$k]['width'])) - $this->objWorksheet->getColumnDimensionByColumn($colIndex)->setWidth(pixel2unit($config['header'][$k]['width'])); - if(isset($config['header'][$k]['align'])) - $this->objWorksheet->getStyleByColumnAndRow($colIndex,$nextRow)->getAlignment()->setHorizontal($config['header'][$k]['align']); - } - - if($colIndex>-1) - { - $this->objWorksheet->getStyle(PHPExcel_Cell::stringFromColumnIndex(0).$nextRow.':'.PHPExcel_Cell::stringFromColumnIndex($colIndex).$nextRow)->applyFromArray($this->_headerStyleArray); - } - - //add header row to load collection - $loadCollection[]=array('id'=>$headerId,'data'=>$data['header']); - - //move to next row for data - $nextRow++; - } - - - //form the data repeating row - $dataId='DATA_'.$id; - $colIndex=-1; - - //form the template row - if(count($data['data'])>0) - { - //we just need first row of data, to see array keys - $singleDataRow=$data['data'][0]; - foreach($singleDataRow as $k=>$v) - { - $colIndex++; - $tag="{".$dataId.":".$k."}"; - $this->objWorksheet->setCellValueByColumnAndRow($colIndex,$nextRow,$tag); - if(isset($config['data'][$k]['align'])) - $this->objWorksheet->getStyleByColumnAndRow($colIndex,$nextRow)->getAlignment()->setHorizontal($config['data'][$k]['align']); - } - } - - //add this row to collection for load but with repeating - $loadCollection[]=array('id'=>$dataId,'data'=>$data['data'],'repeat'=>true,'format'=>$format); - $this->enableStripRows(); - - //form the footer row for data if needed - if(isset($data['footer'])) - { - $footerId='FOOTER_'.$id; - $colIndex=-1; - $nextRow++; - - //formiraj template - foreach($data['footer'] as $k=>$v) - { - $colIndex++; - $tag="{".$footerId.":".$k."}"; - $this->objWorksheet->setCellValueByColumnAndRow($colIndex,$nextRow,$tag); - if(isset($config['footer'][$k]['align'])) - $this->objWorksheet->getStyleByColumnAndRow($colIndex,$nextRow)->getAlignment()->setHorizontal($config['footer'][$k]['align']); - } - if($colIndex>-1) - { - $this->objWorksheet->getStyle(PHPExcel_Cell::stringFromColumnIndex(0).$nextRow.':'.PHPExcel_Cell::stringFromColumnIndex($colIndex).$nextRow)->applyFromArray($this->_footerStyleArray); - } - - //add footer row to load collection - $loadCollection[]=array('id'=>$footerId,'data'=>$data['footer'],'format'=>$format); - } - - $this->load($loadCollection); - $this->generateReport(); - } - } - - /** - * Generates report based on loaded data - */ - public function generateReport() - { - $this->_lastColumn=$this->objWorksheet->getHighestColumn();//TODO: better detection - $this->_lastRow=$this->objWorksheet->getHighestRow(); - foreach($this->_data as $data) - { - if(isset ($data['repeat']) && $data['repeat']==true) - { - //Repeating data - $foundTags=false; - $repeatRange=''; - $firstRow=''; - $lastRow=''; - - $firstCol='A';//TODO: better detection - $lastCol=$this->_lastColumn; - - //scan the template - //search for repeating part - foreach ($this->objWorksheet->getRowIterator() as $row) - { - $cellIterator = $row->getCellIterator(); - $rowIndex = $row->getRowIndex(); - //find the repeating range (one or more rows) - foreach ($cellIterator as $cell) - { - $cellval=trim($cell->getValue()); - $column = $cell->getColumn(); - //see if the cell has something for replacing - if(preg_match_all("/\{".$data['id'].":(\w*|#\+?-?(\d*)?)\}/", $cellval, $matches)) - { - //this cell has replacement tags - if(!$foundTags) $foundTags=true; - //remember the first ant the last row - if($rowIndex!=$firstRow) - $lastRow=$rowIndex; - if($firstRow=='') - $firstRow=$rowIndex; - } - } - } - - //form the repeating range - if($foundTags) - $repeatRange=$firstCol.$firstRow.":".$lastCol.$lastRow; - - //check if this is the last row - if($foundTags && $lastRow==$this->_lastRow) - $data['last']=true; - - //set initial format data - if(! isset($data['format'])) - $data['format']=array(); - - //set default step as 1 - if(! isset($data['step'])) - $data['step']=1; - - //check if data is an array - if(is_array($data['data'])) - { - //every element is an array with data for all the columns - if($foundTags) - { - //insert repeating rows, as many as needed - //check if grouping is defined - if(count($this->_group)) - $this->generateRepeatingRowsWithGrouping($data, $repeatRange); - else - $this->generateRepeatingRows($data, $repeatRange); - //remove the template rows - for($i=$firstRow;$i<=$lastRow;$i++) - { - $this->objWorksheet->removeRow($firstRow); - } - //if there is no data - if(count($data['data'])==0) - $this->addNoResultRow($firstRow,$firstCol,$lastCol); - } - } - else - { - //TODO - //maybe an SQL query? - //needs to be database agnostic - } - - } - else - { - //non-repeating data - //check for additional formating - if(! isset($data['format'])) - $data['format']=array(); - - //check if data is an array or mybe a SQL query - if(is_array($data['data'])) - { - //array of data - $this->generateSingleRow($data); - } - else - { - //TODO - //maybe an SQL query? - //needs to be database agnostic - } - } - } - - //call the replacing function - $this->searchAndReplace(); - - //generate heading if heading text is set - if($this->_headingText!='') - $this->generateHeading(); - - } - - /** - * Generates single non-repeating row of data - * @param array $data - */ - private function generateSingleRow(& $data) - { - $id=$data['id']; - $format=$data['format']; - foreach($data['data'] as $key=>$value) - { - $search="{".$id.":".$key."}"; - $this->_search[]=$search; - - //if it needs formating - if(isset($format[$key])) - { - foreach($format[$key] as $ftype=>$f) - { - $value=$this->formatValue($value,$ftype,$f); - } - } - $this->_replace[]=$value; - } - } - - /** - * Generates repeating rows of data with some template range - * @param array $data - * @param string $repeatRange - */ - private function generateRepeatingRows(& $data, $repeatRange) - { - $rowCounter=0; - $repeatTemplateArray=$this->objWorksheet->rangeToArray($repeatRange,null,true,true,true); - //insert repeating rows but first check for minimum number of rows - if(isset($data['minRows'])) - { - $minRows=(int)$data['minRows']; - } - else - $minRows=0; - - //is this the last data - if(isset($data['last'])) - $last=$data['last']; - else - $last=false; - - $templateKeys=array_keys($repeatTemplateArray); - $lastRowFoundAt=end($templateKeys); - $firstRowFoundAt=reset($templateKeys); - $rowsFound=count($repeatTemplateArray); - - $mergeCells=$this->objWorksheet->getMergeCells(); - $needMerge=array(); - foreach($mergeCells as $mergeCell) - { - if($this->isSubrange($mergeCell, $repeatRange)) - { - //contains merged cells, save for later - $needMerge[]=$mergeCell; - } - } - - //check if any new rows need to bi inserted - $dataRows=count($data['data']); - if($minRows<$dataRows) - $this->objWorksheet->insertNewRowBefore($lastRowFoundAt+1,$rowsFound * ($dataRows - $minRows)); - - //check all the data - foreach ($data['data'] as $value) - { - $rowCounter++; - $skip=$rowCounter*$rowsFound; - $newRowIndex=$firstRowFoundAt+$skip; - - //copy merge definitions - foreach($needMerge as $nm) - { - $nm=PHPExcel_Cell::rangeBoundaries($nm); - $newMerge=PHPExcel_Cell::stringFromColumnIndex($nm[0][0]-1).($nm[0][1]+$skip).":".PHPExcel_Cell::stringFromColumnIndex($nm[1][0]-1).($nm[1][1]+$skip); - - $this->objWorksheet->mergeCells($newMerge); - } - - //generate row of data - $this->generateSingleRepeatingRow($value, $repeatTemplateArray, $rowCounter, $skip, $data['id'], $data['format'], $data['step']); - } - //remove merge on template, BUG fix - foreach($needMerge as $nm) - { - $this->objWorksheet->unmergeCells($nm); - } - } - - /** - * Generates repeating rows of data with some template range but also with grouping - * @param array $data - * @param string $repeatRange - */ - private function generateRepeatingRowsWithGrouping(& $data, $repeatRange) - { - $rowCounter=0; - $groupCounter=0; - $footerCount=0; - $repeatTemplateArray=$this->objWorksheet->rangeToArray($repeatRange,null,true,true,true); - //insert repeating rows but first check for minimum number of rows - if(isset($data['minRows'])) - { - $minRows=(int)$data['minRows']; - } - else - $minRows=0; - - $templateKeys=array_keys($repeatTemplateArray); - $lastRowFoundAt=end($templateKeys); - $firstRowFoundAt=reset($templateKeys); - $rowsFound=count($repeatTemplateArray); - - list($rangeStart,$rangeEnd) = PHPExcel_Cell::rangeBoundaries($repeatRange); - $firstCol=PHPExcel_Cell::stringFromColumnIndex($rangeStart[0]-1); - $lastCol=PHPExcel_Cell::stringFromColumnIndex($rangeEnd[0]-1); - - $mergeCells=$this->objWorksheet->getMergeCells(); - $needMerge=array(); - foreach($mergeCells as $mergeCell) - { - if($this->isSubrange($mergeCell, $repeatRange)) - { - //contains merged cells, save for later - $needMerge[]=$mergeCell; - } - } - - //group array should have header, rows and summary elements - foreach($this->_group['rows'] as $name=>$rows) - { - $groupCounter++; - $caption=$this->_group['caption'][$name]; - $newRowIndex=$firstRowFoundAt+$rowCounter*$rowsFound+$footerCount*$rowsFound+$groupCounter; - //insert header for the group - $this->objWorksheet->insertNewRowBefore($newRowIndex,1); - $this->objWorksheet->setCellValue($firstCol.$newRowIndex,$caption); - $this->objWorksheet->mergeCells($firstCol.$newRowIndex.":".$lastCol.$newRowIndex); - - //add style for the header - - $this->objWorksheet->getStyle($firstCol.$newRowIndex)->applyFromArray($this->_headerGroupStyleArray); - - //add data for the group - foreach ($rows as $row) - { - $value=$data['data'][$row]; - $rowCounter++; - $skip=$rowCounter*$rowsFound+$footerCount*$rowsFound+$groupCounter; - $newRowIndex=$firstRowFoundAt+$skip; - - //insert one or more rows if needed - if($minRows<$rowCounter) - $this->objWorksheet->insertNewRowBefore($newRowIndex,$rowsFound); - - //copy merge definitions - foreach($needMerge as $nm) - { - $nm=PHPExcel_Cell::rangeBoundaries($nm); - $newMerge=PHPExcel_Cell::stringFromColumnIndex($nm[0][0]-1).($nm[0][1]+$skip).":".PHPExcel_Cell::stringFromColumnIndex($nm[1][0]-1).($nm[1][1]+$skip); - - $this->objWorksheet->mergeCells($newMerge); - } - - //generate row of data - $this->generateSingleRepeatingRow($value, $repeatTemplateArray, $rowCounter, $skip, $data['id'], $data['format'], $data['step']); - } - - //include the footer if defined - if(isset($this->_group['summary']) && isset($this->_group['summary'][$name])) - { - $footerCount++; - $skip=$groupCounter+$rowCounter*$rowsFound+$footerCount*$rowsFound; - $newRowIndex=$firstRowFoundAt+$skip; - - $this->objWorksheet->insertNewRowBefore($newRowIndex,$rowsFound); - $this->generateSingleRepeatingRow($this->_group['summary'][$name], $repeatTemplateArray, '', $skip, $data['id'], $data['format'], $data['step']); - //add style for the footer - - $this->objWorksheet->getStyle($firstCol.$newRowIndex.":".$lastCol.$newRowIndex)->applyFromArray($this->_footerGroupStyleArray); - } - - //remove merge on template, BUG fix - foreach($needMerge as $nm) - { - $this->objWorksheet->unmergeCells($nm); - } - } - } - - /** - * Generates single row for repeating data - * @param array $value - * @param array $repeatTemplateArray - * @param int $rowCounter - * @param int $skip - * @param string $id - * @param array $format - * @param int $step - */ - private function generateSingleRepeatingRow(& $value, & $repeatTemplateArray, $rowCounter, $skip, $id, $format, $step) - { - foreach($repeatTemplateArray as $rowKey=>$rowData) - { - foreach($rowData as $col=>$tag) - { - //$col is like A, B, C, ... - //$rowKey is like 9,10,11, ... - //$tag can have many replacement tags, e.g. "{item:item_id} --- {item:item_code}" - - if(preg_match_all("/\{".$id.":(\w*|#\+?-?(\d*)?)\}/", $tag, $matches)) - { - $matchTags=$matches[0]; //array with complete tags, e.g. '{item:item_id}' - $matchKeys=$matches[1]; //array with only the key names, e.g. 'item_id' - $matchNumber=count($matchTags); //how many replacement tags is there in this cell - $replaceTags=array(); - $replaceValues=array(); - foreach($matchKeys as $mkey) - { - $replaceTags[]="{".$id.":".$mkey."}"; - if(strpos($mkey, "#")===0) - { - //this is a counter (optional offset) - $offset=explode("+", $mkey); - if(count($offset)>1) - $offset=$offset[1]; - else - $offset=0; - - $rValue=($rowCounter-1)*$step+1+(int)$offset; - } - elseif(key_exists($mkey, $value)) - { - //format if needed - if(isset($format) && isset($format[$mkey])) - { - foreach($format[$mkey] as $ftype=>$f) - { - $rValue=$this->formatValue($value[$mkey],$ftype,$f); - } - } - else - { - //without additional formating - $rValue=$value[$mkey]; - } - } - else - $rValue=$mkey; - - //add to replace array - $replaceValues[]=$rValue; - } - //replace all the values in this cell - $tag=str_replace($replaceTags,$replaceValues,$tag); - } - $newCellAddress=$col.($rowKey+$skip); - $this->objWorksheet->setCellValue($newCellAddress,$tag); - - //copy cell styles - $xfIndex=$this->objWorksheet->getCell($col.$rowKey)->getXfIndex(); - $this->objWorksheet->getCell($newCellAddress)->setXfIndex($xfIndex); - - //strip rows if requested - if($this->_useStripRows && $rowCounter%2) - { - $this->objWorksheet->getStyle($newCellAddress)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID); - $this->objWorksheet->getStyle($newCellAddress)->getFill()->getStartColor()->setRGB('F2F2F2'); - } - } - } - } - - - /** - * Check and apply various formating - */ - /** - * Applies various formatings - * Type can be datetime or number - * @param mixed $value - * @param string $type - * @param mixed $format - */ - protected function formatValue($value,$type,$format) - { - if($type=='datetime') - { - //format can only be string - if(is_string($format)) - $value=date($format, strtotime($value)); - } - elseif($type=='number') - { - //format must be an array - if(is_array($format)) - { - //set the defaults - if(!isset($format['prefix'])) - $format['prefix']=''; - if(!isset($format['decimals'])) - $format['decimals']=0; - if(!isset($format['decPoint'])) - $format['decPoint']='.'; - if(!isset($format['thousandsSep'])) - $format['thousandsSep']=','; - if(!isset($format['sufix'])) - $format['sufix']=''; - $value=$format['prefix'].number_format($value,$format['decimals'],$format['decPoint'],$format['thousandsSep']).$format['sufix']; - } - } - - return $value; - } - - /** - * Replaces all the cells with real data - */ - private function searchAndReplace() - { - foreach ($this->objWorksheet->getRowIterator() as $row) - { - $cellIterator = $row->getCellIterator(); - foreach ($cellIterator as $cell) - { - $cell->setValue(str_replace($this->_search, $this->_replace, $cell->getValue())); - } - } - } - - /** - * Adda a row for repeating data when there is no results - * @param int $rowIndex - * @param string $colMin - * @param string $colMax - */ - private function addNoResultRow($rowIndex,$colMin,$colMax) - { - //insert one row - $this->objWorksheet->insertNewRowBefore($rowIndex); - - //merge as required - $this->objWorksheet->mergeCells($colMin.$rowIndex.":".$colMax.$rowIndex); - - //insert text - - $this->objWorksheet->setCellValue($colMin.$rowIndex, $this->_noResultText); - - $this->objWorksheet->getStyle($colMin.$rowIndex.":".$colMax.$rowIndex)->applyFromArray($this->_noResultStyleArray); - } - - /** - * Generates heading title of the report - */ - private function generateHeading() - { - //get current dimensions - $highestRow = $this->objWorksheet->getHighestRow(); // e.g. 10 - $highestColumn = $this->objWorksheet->getHighestColumn(); // e.g 'F' - - $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn); - - //insert row on top - $this->objWorksheet->insertNewRowBefore(1,2); - - //merge cells - $this->objWorksheet->mergeCells("A1:".$highestColumn."1"); - - //set the text for header - $this->objWorksheet->setCellValue("A1", $this->_headingText); - $this->objWorksheet->getStyle('A1')->getAlignment()->setWrapText(true); - $this->objWorksheet->getRowDimension('1')->setRowHeight(48); - - //Apply style - $this->objWorksheet->getStyle("A1")->applyFromArray($this->_headingStyleArray); - } - - /** - * Renders report as specified output file - * @param string $type - * @param string $filename - */ - public function render($type='html',$filename='') - { - //create or generate report - if($this->_usingTemplate) - $this->generateReport(); - else - $this->createReport(); - - if($type=='') - $type="html"; - - if($filename=='') - $filename="Report ".date("Y-m-d"); - else - $filename=strftime($filename); - //http://strftime.net/ - - - if(strtolower($type)=='html') - return $this->renderHtml(); - elseif(strtolower($type)=='excel') - return $this->renderXlsx($filename); - elseif(strtolower($type)=='excel2003') - return $this->renderXls($filename); - elseif(strtolower($type)=='pdf') - return $this->renderPdf($filename); - else - return "Error: unsupported export type!"; //TODO: better error handling - } - - /** - * Renders report as a HTML output - */ - private function renderHtml() - { - $this->objWriter = new PHPExcel_Writer_HTML($this->objPHPExcel); - - // Generate HTML - $html = ''; - $html .= $this->objWriter->generateHTMLHeader(true); - $html .= $this->objWriter->generateSheetData(); - $html .= $this->objWriter->generateHTMLFooter(); - $html .= ''; - $this->objPHPExcel->disconnectWorkSheets(); - unset($this->objWriter); - unset($this->objWorksheet); - unset($this->objReader); - unset($this->objPHPExcel); - - return $html; - } - - /** - * Renders report as a XLSX file - */ - private function renderXlsx($filename) - { - //header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); - // header('Content-Disposition: attachment;filename="'.$filename.'.xlsx"'); - // header('Cache-Control: max-age=0'); - - $this->objWriter = PHPExcel_IOFactory::createWriter($this->objPHPExcel, 'Excel2007'); - - $this->objWriter->save($filename); - - unset($this->objWriter); - unset($this->objWorksheet); - unset($this->objReader); - unset($this->objPHPExcel); - - - //exit(); - } - - /** - * Renders report as a XLS file - */ - private function renderXls($filename) - { -// header('Content-Type: application/vnd.ms-excel'); -// header('Content-Disposition: attachment;filename="'.$filename.'.xls"'); -// header('Cache-Control: max-age=0'); - - $this->objWriter = PHPExcel_IOFactory::createWriter($this->objPHPExcel, 'Excel5'); - - //$this->objWriter->save('php://output'); - $this->objWriter->save($filename); - - unset($this->objWriter); - unset($this->objWorksheet); - unset($this->objReader); - unset($this->objPHPExcel); - - //exit(); - } - - /** - * Renders report as a PDF file - */ - private function renderPdf($filename) - { - header('Content-Type: application/vnd.pdf'); - header('Content-Disposition: attachment;filename="'.$filename.'.pdf"'); - header('Cache-Control: max-age=0'); - - //set margins - $this->objPHPExcel->getActiveSheet()->getPageMargins()->setTop(0.75); - $this->objPHPExcel->getActiveSheet()->getPageMargins()->setRight(0.25); - $this->objPHPExcel->getActiveSheet()->getPageMargins()->setLeft(0.25); - $this->objPHPExcel->getActiveSheet()->getPageMargins()->setBottom(0.75); - $this->objPHPExcel->getActiveSheet()->getPageMargins()->setHeader(0.3); - $this->objPHPExcel->getActiveSheet()->getPageMargins()->setFooter(0.3); - - //set print area - $this->objPHPExcel->getActiveSheet()->getPageSetup()->setPrintArea('A1:A5'); - - $this->objWriter = PHPExcel_IOFactory::createWriter($this->objPHPExcel, 'PDF'); - - echo "a"; - - //$this->objWriter->save('php://output'); - $this->objWriter->save($filename); - - echo "b"; - - //exit(); - } - - /** - * Helper function for checking subranges of a range - */ - public function isSubrange($subRange,$range) - { - list($rangeStart,$rangeEnd) = PHPExcel_Cell::rangeBoundaries($range); - list($subrangeStart,$subrangeEnd) = PHPExcel_Cell::rangeBoundaries($subRange); - return (($subrangeStart[0]>=$rangeStart[0]) && ($subrangeStart[1]>=$rangeStart[1]) && ($subrangeEnd[0]<=$rangeEnd[0]) && ($subrangeEnd[1]<=$rangeEnd[1])); - } - - /** - * Enabling strip rows - */ - function enableStripRows() - { - $this->_useStripRows=true; - } - - /** - * Sets title of the report header - */ - function setHeading($h) - { - $this->_headingText=$h; - } - -} - -/** - * converts pixels to excel units - * @param float $p - * @return float - */ -function pixel2unit($p) -{ - return ($p-5)/7; -} diff --git a/application/third_party/dompdf/LICENSE.LGPL b/application/third_party/dompdf/LICENSE.LGPL deleted file mode 100644 index 6ef5de82..00000000 --- a/application/third_party/dompdf/LICENSE.LGPL +++ /dev/null @@ -1,456 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. \ No newline at end of file diff --git a/application/third_party/dompdf/dompdf.php b/application/third_party/dompdf/dompdf.php deleted file mode 100644 index 73310f25..00000000 --- a/application/third_party/dompdf/dompdf.php +++ /dev/null @@ -1,328 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: dompdf.php,v $ - * Created on: 2004-06-22 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * dompdf.php is a simple script to drive DOMPDF. It can be executed from - * a browser or from the command line. - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: dompdf.php 301 2010-08-23 21:00:51Z fabien.menager $ */ - -/** - * Display command line usage: - * - * Usage: ./dompdf.php [options] html_file - * - * html_file can be a filename, a url if fopen_wrappers are enabled, or the '-' - * character to read from standard input. - * - * Options: - * -h Show this message - * -l list available paper sizes - * -p size paper size; something like 'letter', 'A4', 'legal', etc. The default is - * 'letter' - * -o orientation either 'portrait' or 'landscape'. Default is 'portrait'. - * -b path set the 'document root' of the html_file. Relative urls (for - * stylesheets) are resolved using this directory. Default is the - * directory of html_file. - * -f file the output filename. Default is the input [html_file].pdf. - * -v verbose: display html parsing warnings and file not found errors. - * -d very verbose: display oodles of debugging output: every frame in the - * tree is printed to stdout. - * -t comma separated list of debugging types (page-break,reflow,split) - * -r write the render time to the log file - * - * - */ -function dompdf_usage() { - echo - "\nUsage: {$_SERVER["argv"][0]} [options] html_file\n\n". - "html_file can be a filename, a url if fopen_wrappers are enabled, or the '-' \n". - "character to read from standard input.\n\n". - "Options:\n". - " -h\t\tShow this message\n". - " -l\t\tlist available paper sizes\n". - " -p size\tpaper size; something like 'letter', 'A4', 'legal', etc. The default is\n". - " \t\t'" . DOMPDF_DEFAULT_PAPER_SIZE . "'\n". - " -o orientation\teither 'portrait' or 'landscape'. Default is 'portrait'.\n". - " -b path\tset the 'document root' of the html_file. Relative urls (for \n". - " \tstylesheets) are resolved using this directory. Default is the \n". - " \tdirectory of html_file.\n". - " -f file\tthe output filename. Default is the input [html_file].pdf.\n". - " -v \tverbose: display html parsing warnings and file not found errors.\n". - " -d \tvery verbose: display oodles of debugging output: every frame\n". - " \tin the tree printed to stdout.\n". - " -t comma separated list of debugging types (page-break,reflow,split)\n\n"; -} - -function getoptions() { - - $opts = array(); - - if ( $_SERVER["argc"] == 1 ) - return $opts; - - $i = 1; - while ($i < $_SERVER["argc"]) { - - switch ($_SERVER["argv"][$i]) { - - case "--help": - case "-h": - $opts["h"] = true; - $i++; - break; - - case "-l": - $opts["l"] = true; - $i++; - break; - - case "-p": - if ( !isset($_SERVER["argv"][$i+1]) ) - die("-p switch requires a size parameter\n"); - $opts["p"] = $_SERVER["argv"][$i+1]; - $i += 2; - break; - - case "-o": - if ( !isset($_SERVER["argv"][$i+1]) ) - die("-o switch requires an orientation parameter\n"); - $opts["o"] = $_SERVER["argv"][$i+1]; - $i += 2; - break; - - case "-b": - if ( !isset($_SERVER["argv"][$i+1]) ) - die("-b switch requires a path parameter\n"); - $opts["b"] = $_SERVER["argv"][$i+1]; - $i += 2; - break; - - case "-f": - if ( !isset($_SERVER["argv"][$i+1]) ) - die("-f switch requires a filename parameter\n"); - $opts["f"] = $_SERVER["argv"][$i+1]; - $i += 2; - break; - - case "-v": - $opts["v"] = true; - $i++; - break; - - case "-d": - $opts["d"] = true; - $i++; - break; - - case "-t": - if ( !isset($_SERVER['argv'][$i + 1]) ) - die("-t switch requires a comma separated list of types\n"); - $opts["t"] = $_SERVER['argv'][$i+1]; - $i += 2; - break; - - default: - $opts["filename"] = $_SERVER["argv"][$i]; - $i++; - break; - } - - } - return $opts; -} - -require_once("dompdf_config.inc.php"); -global $_dompdf_show_warnings, $_dompdf_debug, $_DOMPDF_DEBUG_TYPES; - -$sapi = php_sapi_name(); -$options = array(); - -switch ( $sapi ) { - - case "cli": - - $opts = getoptions(); - - if ( isset($opts["h"]) || (!isset($opts["filename"]) && !isset($opts["l"])) ) { - dompdf_usage(); - exit; - } - - if ( isset($opts["l"]) ) { - echo "\nUnderstood paper sizes:\n"; - - foreach (array_keys(CPDF_Adapter::$PAPER_SIZES) as $size) - echo " " . mb_strtoupper($size) . "\n"; - exit; - } - $file = $opts["filename"]; - - if ( isset($opts["p"]) ) - $paper = $opts["p"]; - else - $paper = DOMPDF_DEFAULT_PAPER_SIZE; - - if ( isset($opts["o"]) ) - $orientation = $opts["o"]; - else - $orientation = "portrait"; - - if ( isset($opts["b"]) ) - $base_path = $opts["b"]; - - if ( isset($opts["f"]) ) - $outfile = $opts["f"]; - else { - if ( $file === "-" ) - $outfile = "dompdf_out.pdf"; - else - $outfile = str_ireplace(array(".html", ".htm", ".php"), "", $file) . ".pdf"; - } - - if ( isset($opts["v"]) ) - $_dompdf_show_warnings = true; - - if ( isset($opts["d"]) ) { - $_dompdf_show_warnings = true; - $_dompdf_debug = true; - } - - if ( isset($opts['t']) ) { - $arr = split(',',$opts['t']); - $types = array(); - foreach ($arr as $type) - $types[ trim($type) ] = 1; - $_DOMPDF_DEBUG_TYPES = $types; - } - - $save_file = true; - - break; - - default: - - if ( isset($_GET["input_file"]) ) - $file = rawurldecode($_GET["input_file"]); - else - throw new DOMPDF_Exception("An input file is required (i.e. input_file _GET variable)."); - - if ( isset($_GET["paper"]) ) - $paper = rawurldecode($_GET["paper"]); - else - $paper = DOMPDF_DEFAULT_PAPER_SIZE; - - if ( isset($_GET["orientation"]) ) - $orientation = rawurldecode($_GET["orientation"]); - else - $orientation = "portrait"; - - if ( isset($_GET["base_path"]) ) { - $base_path = rawurldecode($_GET["base_path"]); - $file = $base_path . $file; # Set the input file - } - - if ( isset($_GET["options"]) ) { - $options = $_GET["options"]; - } - - $file_parts = explode_url($file); - /* Check to see if the input file is local and, if so, that the base path falls within that specified by DOMDPF_CHROOT */ - if(($file_parts['protocol'] == '' || $file_parts['protocol'] === 'file://')) { - $file = realpath($file); - if (strpos($file, DOMPDF_CHROOT) !== 0) { - throw new DOMPDF_Exception("Permission denied on $file."); - } - } - - $outfile = "dompdf_out.pdf"; # Don't allow them to set the output file - $save_file = false; # Don't save the file - - break; -} - -$dompdf = new DOMPDF(); - -if ( $file === "-" ) { - $str = ""; - while ( !feof(STDIN) ) - $str .= fread(STDIN, 4096); - - $dompdf->load_html($str); - -} else - $dompdf->load_html_file($file); - -if ( isset($base_path) ) { - $dompdf->set_base_path($base_path); -} - -$dompdf->set_paper($paper, $orientation); - -$dompdf->render(); - -if ( $_dompdf_show_warnings ) { - global $_dompdf_warnings; - foreach ($_dompdf_warnings as $msg) - echo $msg . "\n"; - echo $dompdf->get_canvas()->get_cpdf()->messages; - flush(); -} - -if ( $save_file ) { -// if ( !is_writable($outfile) ) -// throw new DOMPDF_Exception("'$outfile' is not writable."); - if ( strtolower(DOMPDF_PDF_BACKEND) === "gd" ) - $outfile = str_replace(".pdf", ".png", $outfile); - - list($proto, $host, $path, $file) = explode_url($outfile); - if ( $proto != "" ) // i.e. not file:// - $outfile = $file; // just save it locally, FIXME? could save it like wget: ./host/basepath/file - - $outfile = realpath(dirname($outfile)) . DIRECTORY_SEPARATOR . basename($outfile); - - if ( strpos($outfile, DOMPDF_CHROOT) !== 0 ) - throw new DOMPDF_Exception("Permission denied."); - - file_put_contents($outfile, $dompdf->output( array("compress" => 0) )); - exit(0); -} - -if ( !headers_sent() ) { - $dompdf->stream($outfile, $options); -} diff --git a/application/third_party/dompdf/dompdf_config.custom.inc.php b/application/third_party/dompdf/dompdf_config.custom.inc.php deleted file mode 100644 index 609a7ab6..00000000 --- a/application/third_party/dompdf/dompdf_config.custom.inc.php +++ /dev/null @@ -1,24 +0,0 @@ -<?php -//define("DOMPDF_TEMP_DIR", "/tmp"); -//define("DOMPDF_CHROOT", DOMPDF_DIR); -//define("DOMPDF_UNICODE_ENABLED", false); -//define("TTF2AFM", "C:/Program Files (x86)/GnuWin32/bin/ttf2pt1.exe"); -define("DOMPDF_PDF_BACKEND", "PDFLib"); -define("DOMPDF_DEFAULT_MEDIA_TYPE", "print"); -define("DOMPDF_DEFAULT_PAPER_SIZE", "letter"); -//define("DOMPDF_DEFAULT_FONT", "serif"); -//define("DOMPDF_DPI", 72); -define("DOMPDF_ENABLE_PHP", true); -//define("DOMPDF_ENABLE_REMOTE", true); -define("DOMPDF_ENABLE_CSS_FLOAT", true); -define("DOMPDF_ENABLE_JAVASCRIPT", true); -//define("DEBUGPNG", true); -//define("DEBUGKEEPTEMP", true); -//define("DEBUGCSS", true); -//define("DEBUG_LAYOUT", true); -//define("DEBUG_LAYOUT_LINES", false); -//define("DEBUG_LAYOUT_BLOCKS", false); -//define("DEBUG_LAYOUT_INLINE", false); -//define("DOMPDF_FONT_HEIGHT_RATIO", 1.0); -//define("DEBUG_LAYOUT_PADDINGBOX", false); -//define("DOMPDF_LOG_OUTPUT_FILE", DOMPDF_FONT_DIR."log.htm"); \ No newline at end of file diff --git a/application/third_party/dompdf/dompdf_config.inc.php b/application/third_party/dompdf/dompdf_config.inc.php deleted file mode 100644 index 1e105ef2..00000000 --- a/application/third_party/dompdf/dompdf_config.inc.php +++ /dev/null @@ -1,497 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: dompdf_config.inc.php,v $ - * Created on: 2004-08-04 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @package dompdf - * - * Changes - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @version 0.5.1.htischer.20090507 - * - Allow overriding of configuration settings by calling php script. - * This allows replacing of dompdf by a new version in an application - * without any modification, - * - Optionally separate font cache folder from font folder. - * This allows write protecting the entire installation - * - Add settings to enable/disable additional debug output categories - * - Change some defaults to more practical values - * - Add comments about configuration parameter implications - */ - -/* $Id: dompdf_config.inc.php 363 2011-02-17 21:18:25Z fabien.menager $ */ - -//error_reporting(E_STRICT | E_ALL | E_DEPRECATED); -//ini_set("display_errors", 1); - -/** - * The root of your DOMPDF installation - */ -define("DOMPDF_DIR", str_replace(DIRECTORY_SEPARATOR, '/', realpath(dirname(__FILE__)))); - -/** - * The location of the DOMPDF include directory - */ -define("DOMPDF_INC_DIR", DOMPDF_DIR . "/include"); - -/** - * The location of the DOMPDF lib directory - */ -define("DOMPDF_LIB_DIR", DOMPDF_DIR . "/lib"); - -/** - * Some installations don't have $_SERVER['DOCUMENT_ROOT'] - * http://fyneworks.blogspot.com/2007/08/php-documentroot-in-iis-windows-servers.html - */ -if( !isset($_SERVER['DOCUMENT_ROOT']) ) { - $path = ""; - - if ( isset($_SERVER['SCRIPT_FILENAME']) ) - $path = $_SERVER['SCRIPT_FILENAME']; - elseif ( isset($_SERVER['PATH_TRANSLATED']) ) - $path = str_replace('\\\\', '\\', $_SERVER['PATH_TRANSLATED']); - - $_SERVER['DOCUMENT_ROOT'] = str_replace( '\\', '/', substr($path, 0, 0-strlen($_SERVER['PHP_SELF']))); -} - -/** Include the custom config file if it exists */ -if ( file_exists(DOMPDF_DIR . "/dompdf_config.custom.inc.php") ){ - require_once(DOMPDF_DIR . "/dompdf_config.custom.inc.php"); -} - -//FIXME: Some function definitions rely on the constants defined by DOMPDF. However, might this location prove problematic? -require_once(DOMPDF_INC_DIR . "/functions.inc.php"); - -/** - * The location of the DOMPDF font directory - * - * If DOMPDF_FONT_DIR identical to DOMPDF_FONT_CACHE or user executing DOMPDF from the CLI, - * this directory must be writable by the webserver process (). - * *Please note the trailing slash.* - * - * Notes regarding fonts: - * Additional .afm font metrics can be added by executing load_font.php from command line. - * Converting ttf fonts to afm requires the external tool referenced by TTF2AFM - * - * Only the original "Base 14 fonts" are present on all pdf viewers. Additional fonts must - * be embedded in the pdf file or the PDF may not display correctly. This can significantly - * increase file size and could violate copyright provisions of a font. Font embedding is - * not currently supported (? via HT). - * - * Any font specification in the source HTML is translated to the closest font available - * in the font directory. - * - * The pdf standard "Base 14 fonts" are: - * Courier, Courier-Bold, Courier-BoldOblique, Courier-Oblique, - * Helvetica, Helvetica-Bold, Helvetica-BoldOblique, Helvetica-Oblique, - * Times-Roman, Times-Bold, Times-BoldItalic, Times-Italic, - * Symbol, - * ZapfDingbats, - * - * *Please note the trailing slash.* - */ -def("DOMPDF_FONT_DIR", DOMPDF_DIR . "/lib/fonts/"); - -/** - * The location of the DOMPDF font cache directory - * - * Note this directory must be writable by the webserver process - * This folder must already exist! - * It contains the .afm files, on demand parsed, converted to php syntax and cached - * This folder can be the same as DOMPDF_FONT_DIR - */ -def("DOMPDF_FONT_CACHE", DOMPDF_FONT_DIR); - -/** - * The location of a temporary directory. - * - * The directory specified must be writeable by the webserver process. - * The temporary directory is required to download remote images and when - * using the PFDLib back end. - */ -def("DOMPDF_TEMP_DIR", sys_get_temp_dir()); - -/** - * ==== IMPORTANT ==== - * - * dompdf's "chroot": Prevents dompdf from accessing system files or other - * files on the webserver. All local files opened by dompdf must be in a - * subdirectory of this directory. DO NOT set it to '/' since this could - * allow an attacker to use dompdf to read any files on the server. This - * should be an absolute path. - * This is only checked on command line call by dompdf.php, but not by - * direct class use like: - * $dompdf = new DOMPDF(); $dompdf->load_html($htmldata); $dompdf->render(); $pdfdata = $dompdf->output(); - */ -def("DOMPDF_CHROOT", realpath(DOMPDF_DIR)); - -/** - * Whether to use Unicode fonts or not. - * - * When set to true the PDF backend must be set to "CPDF" and fonts must be - * loaded via the modified ttf2ufm tool included with dompdf (see below). - * Unicode font metric files (with .ufm extensions) must be created with - * ttf2ufm. load_font.php should do this for you if the TTF2AFM define below - * points to the modified ttf2ufm tool included with dompdf. - * - * When enabled, dompdf can support all Unicode glyphs. Any glyphs used in a - * document must be present in your fonts, however. - */ -def("DOMPDF_UNICODE_ENABLED", true); - -/** - * The path to the tt2pt1 utility (used to convert ttf to afm) - * - * Not strictly necessary, but useful if you would like to install - * additional fonts using the {@link load_font.php} utility. - * - * Windows users should use something like this: - * define("TTF2AFM", "C:\\Program Files\\Ttf2Pt1\\bin\\ttf2pt1.exe"); - * - * @link http://ttf2pt1.sourceforge.net/ - */ -if ( strpos(PHP_OS, "WIN") === false ) - def("TTF2AFM", DOMPDF_LIB_DIR ."/ttf2ufm/ttf2ufm-src/ttf2pt1"); -else - def("TTF2AFM", "C:\\Program Files\\GnuWin32\\bin\\ttf2pt1.exe"); - -/** - * The PDF rendering backend to use - * - * Valid settings are 'PDFLib', 'CPDF' (the bundled R&OS PDF class), 'GD' and - * 'auto'. 'auto' will look for PDFLib and use it if found, or if not it will - * fall back on CPDF. 'GD' renders PDFs to graphic files. {@link - * Canvas_Factory} ultimately determines which rendering class to instantiate - * based on this setting. - * - * Both PDFLib & CPDF rendering backends provide sufficient rendering - * capabilities for dompdf, however additional features (e.g. object, - * image and font support, etc.) differ between backends. Please see - * {@link PDFLib_Adapter} for more information on the PDFLib backend - * and {@link CPDF_Adapter} and lib/class.pdf.php for more information - * on CPDF. Also see the documentation for each backend at the links - * below. - * - * The GD rendering backend is a little different than PDFLib and - * CPDF. Several features of CPDF and PDFLib are not supported or do - * not make any sense when creating image files. For example, - * multiple pages are not supported, nor are PDF 'objects'. Have a - * look at {@link GD_Adapter} for more information. GD support is new - * and experimental, so use it at your own risk. - * - * @link http://www.pdflib.com - * @link http://www.ros.co.nz/pdf - * @link http://www.php.net/image - */ -def("DOMPDF_PDF_BACKEND", "CPDF"); - -/** - * PDFlib license key - * - * If you are using a licensed, commercial version of PDFlib, specify - * your license key here. If you are using PDFlib-Lite or are evaluating - * the commercial version of PDFlib, comment out this setting. - * - * @link http://www.pdflib.com - * - * If pdflib present in web server and auto or selected explicitely above, - * a real license code must exist! - */ -#def("DOMPDF_PDFLIB_LICENSE", "your license key here"); - -/** - * html target media view which should be rendered into pdf. - * List of types and parsing rules for future extensions: - * http://www.w3.org/TR/REC-html40/types.html - * screen, tty, tv, projection, handheld, print, braille, aural, all - * Note: aural is deprecated in CSS 2.1 because it is replaced by speech in CSS 3. - * Note, even though the generated pdf file is intended for print output, - * the desired content might be different (e.g. screen or projection view of html file). - * Therefore allow specification of content here. - */ -def("DOMPDF_DEFAULT_MEDIA_TYPE", "screen"); - -/** - * The default paper size. - * - * North America standard is "letter"; other countries generally "a4" - * - * @see CPDF_Adapter::PAPER_SIZES for valid sizes - */ -def("DOMPDF_DEFAULT_PAPER_SIZE", "letter"); - -/** - * The default font family - * - * Used if no suitable fonts can be found. This must exist in the font folder. - * @var string - */ -def("DOMPDF_DEFAULT_FONT", "serif"); - -/** - * Image DPI setting - * - * This setting determines the default DPI setting for images and fonts. The - * DPI may be overridden for inline images by explictly setting the - * image's width & height style attributes (i.e. if the image's native - * width is 600 pixels and you specify the image's width as 72 points, - * the image will have a DPI of 600 in the rendered PDF. The DPI of - * background images can not be overridden and is controlled entirely - * via this parameter. - * - * For the purposes of DOMPDF, pixels per inch (PPI) = dots per inch (DPI). - * If a size in html is given as px (or without unit as image size), - * this tells the corresponding size in pt. - * This adjusts the relative sizes to be similar to the rendering of the - * html page in a reference browser. - * - * In pdf, always 1 pt = 1/72 inch - * - * Rendering resolution of various browsers in px per inch: - * Windows Firefox and Internet Explorer: - * SystemControl->Display properties->FontResolution: Default:96, largefonts:120, custom:? - * Linux Firefox: - * about:config *resolution: Default:96 - * (xorg screen dimension in mm and Desktop font dpi settings are ignored) - * - * Take care about extra font/image zoom factor of browser. - * - * In images, <img> size in pixel attribute, img css style, are overriding - * the real image dimension in px for rendering. - * - * @var int - */ -def("DOMPDF_DPI", 96); - -/** - * Enable inline PHP - * - * If this setting is set to true then DOMPDF will automatically evaluate - * inline PHP contained within <script type="text/php"> ... </script> tags. - * - * Enabling this for documents you do not trust (e.g. arbitrary remote html - * pages) is a security risk. Set this option to false if you wish to process - * untrusted documents. - * - * @var bool - */ -def("DOMPDF_ENABLE_PHP", false); - -/** - * Enable inline Javascript - * - * If this setting is set to true then DOMPDF will automatically insert - * JavaScript code contained within <script type="text/javascript"> ... </script> tags. - * - * @var bool - */ -def("DOMPDF_ENABLE_JAVASCRIPT", true); - -/** - * Enable remote file access - * - * If this setting is set to true, DOMPDF will access remote sites for - * images and CSS files as required. - * This is required for part of test case www/test/image_variants.html through www/examples.php - * - * Attention! - * This can be a security risk, in particular in combination with DOMPDF_ENABLE_PHP and - * allowing remote access to dompdf.php or on allowing remote html code to be passed to - * $dompdf = new DOMPDF(); $dompdf->load_html(...); - * This allows anonymous users to download legally doubtful internet content which on - * tracing back appears to being downloaded by your server, or allows malicious php code - * in remote html pages to be executed by your server with your account privileges. - * - * @var bool - */ -def("DOMPDF_ENABLE_REMOTE", false); - -/** - * The debug output log - * @var string - */ -def("DOMPDF_LOG_OUTPUT_FILE", DOMPDF_FONT_DIR."log.htm"); - -/** - * A ratio applied to the fonts height to be more like browsers' line height - */ -def("DOMPDF_FONT_HEIGHT_RATIO", 1.1); - -/** - * Enable CSS float - * - * Allows people to disabled CSS float support - * @var bool - */ -def("DOMPDF_ENABLE_CSS_FLOAT", false); - -/** - * DOMPDF autoload function - * - * If you have an existing autoload function, add a call to this function - * from your existing __autoload() implementation. - * - * @param string $class - */ -function DOMPDF_autoload($class) { - $filename = DOMPDF_INC_DIR . "/" . mb_strtolower($class) . ".cls.php"; - - if ( is_file($filename) ) - require_once($filename); -} - -// If SPL autoload functions are available (PHP >= 5.1.2) -if ( function_exists("spl_autoload_register") ) { - $autoload = "DOMPDF_autoload"; - $funcs = spl_autoload_functions(); - - // No functions currently in the stack. - if ( $funcs === false ) { - spl_autoload_register($autoload); - } - - // If PHP >= 5.3 the $prepend argument is available - else if ( version_compare(PHP_VERSION, '5.3', '>=') ) { - spl_autoload_register($autoload, true, true); - } - - else { - // Unregister existing autoloaders... - $compat = version_compare(PHP_VERSION, '5.1.2', '<=') && - version_compare(PHP_VERSION, '5.1.0', '>='); - - foreach ($funcs as $func) { - if (is_array($func)) { - // :TRICKY: There are some compatibility issues and some - // places where we need to error out - $reflector = new ReflectionMethod($func[0], $func[1]); - if (!$reflector->isStatic()) { - throw new Exception('This function is not compatible with non-static object methods due to PHP Bug #44144.'); - } - - // Suprisingly, spl_autoload_register supports the - // Class::staticMethod callback format, although call_user_func doesn't - if ($compat) $func = implode('::', $func); - } - - spl_autoload_unregister($func); - } - - // Register the new one, thus putting it at the front of the stack... - spl_autoload_register($autoload); - - // Now, go back and re-register all of our old ones. - foreach ($funcs as $func) { - spl_autoload_register($func); - } - - // Be polite and ensure that userland autoload gets retained - if ( function_exists("__autoload") ) { - spl_autoload_register("__autoload"); - } - } -} - -else if ( !function_exists("__autoload") ) { - /** - * Default __autoload() function - * - * @param string $class - */ - function __autoload($class) { - DOMPDF_autoload($class); - } -} - -// ### End of user-configurable options ### - - -/** - * Ensure that PHP is working with text internally using UTF8 character encoding. - */ -mb_internal_encoding('UTF-8'); - -/** - * Global array of warnings generated by DomDocument parser and - * stylesheet class - * - * @var array - */ -global $_dompdf_warnings; -$_dompdf_warnings = array(); - -/** - * If true, $_dompdf_warnings is dumped on script termination when using - * dompdf/dompdf.php or after rendering when using the DOMPDF class. - * When using the class, setting this value to true will prevent you from - * streaming the PDF. - * - * @var bool - */ -global $_dompdf_show_warnings; -$_dompdf_show_warnings = false; - -/** - * If true, the entire tree is dumped to stdout in dompdf.cls.php. - * Setting this value to true will prevent you from streaming the PDF. - * - * @var bool - */ -global $_dompdf_debug; -$_dompdf_debug = false; - -/** - * Array of enabled debug message types - * - * @var array - */ -global $_DOMPDF_DEBUG_TYPES; -$_DOMPDF_DEBUG_TYPES = array(); //array("page-break" => 1); - -/* Optionally enable different classes of debug output before the pdf content. - * Visible if displaying pdf as text, - * E.g. on repeated display of same pdf in browser when pdf is not taken out of - * the browser cache and the premature output prevents setting of the mime type. - */ -def('DEBUGPNG', false); -def('DEBUGKEEPTEMP', false); -def('DEBUGCSS', false); - -/* Layout debugging. Will display rectangles around different block levels. - * Visible in the PDF itself. - */ -def('DEBUG_LAYOUT', false); -def('DEBUG_LAYOUT_LINES', true); -def('DEBUG_LAYOUT_BLOCKS', true); -def('DEBUG_LAYOUT_INLINE', true); -def('DEBUG_LAYOUT_PADDINGBOX', true); diff --git a/application/third_party/dompdf/include/absolute_positioner.cls.php b/application/third_party/dompdf/include/absolute_positioner.cls.php deleted file mode 100644 index ff8b6fa7..00000000 --- a/application/third_party/dompdf/include/absolute_positioner.cls.php +++ /dev/null @@ -1,85 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: absolute_positioner.cls.php,v $ - * Created on: 2004-06-08 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id */ - -/** - * Positions absolutly positioned frames - */ -class Absolute_Positioner extends Positioner { - - function __construct(Frame_Decorator $frame) { parent::__construct($frame); } - - function position() { - - $frame = $this->_frame; - $style = $frame->get_style(); - $cb = $frame->get_containing_block(); - - $top = $style->length_in_pt($style->top, $cb["h"]); - $right = $style->length_in_pt($style->right, $cb["w"]); - $bottom = $style->length_in_pt($style->bottom, $cb["h"]); - $left = $style->length_in_pt($style->left, $cb["w"]); - - $p = $frame->find_positionned_parent(); - - if ( $p ) { - // Get the parent's padding box (see http://www.w3.org/TR/CSS21/visuren.html#propdef-top) - list($x, $y, $w, $h) = $p->get_padding_box(); - } else { - $x = $cb["x"]; - $y = $cb["y"]; - } - - if ( $top !== "auto" ) { - $y += $top; - } else if ( $bottom !== "auto" ) { - // FIXME: need to know this frame's height before we can do this correctly - } - - if ( $left !== "auto" ) { - $x += $left; - } else if ( $right !== "auto" ) { - // FIXME: need to know this frame's width before we can do this correctly - } - - $frame->set_position($x, $y); - - } -} \ No newline at end of file diff --git a/application/third_party/dompdf/include/abstract_renderer.cls.php b/application/third_party/dompdf/include/abstract_renderer.cls.php deleted file mode 100644 index 979e30e6..00000000 --- a/application/third_party/dompdf/include/abstract_renderer.cls.php +++ /dev/null @@ -1,890 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: abstract_renderer.cls.php,v $ - * Created on: 2004-06-01 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @package dompdf - * - * Changes - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @version 0.5.1.htischer.20090507 - * - On background image - * - Clip invisible areas from background images, then merge identical - * image/size/offset to a single image. - * - Fix rounding of background image size. - * - Fix background image position given as percent - * - Check if identical image is already cached by cpdf. Then do not create - * duplicates to save memory and CPU time - * - Fix skipping of image repetition if area is too small - * - Do not create temporary files, but pass gd object directly - */ - -/* $Id: abstract_renderer.cls.php 361 2011-02-16 21:03:05Z fabien.menager $ */ - -/** - * Base renderer class - * - * @access private - * @package dompdf - */ -abstract class Abstract_Renderer { - - /** - * Rendering backend - * - * @var Canvas - */ - protected $_canvas; - - /** - * Current dompdf instance - * - * @var DOMPDF - */ - protected $_dompdf; - - /** - * Class constructor - * - * @param DOMPDF $dompdf The current dompdf instance - */ - function __construct(DOMPDF $dompdf) { - $this->_dompdf = $dompdf; - $this->_canvas = $dompdf->get_canvas(); - } - - /** - * Render a frame. - * - * Specialized in child classes - * - * @param Frame $frame The frame to render - */ - abstract function render(Frame $frame); - - //........................................................................ - - /** - * Render a background image over a rectangular area - * - * @param string $img The background image to load - * @param float $x The left edge of the rectangular area - * @param float $y The top edge of the rectangular area - * @param float $width The width of the rectangular area - * @param float $height The height of the rectangular area - * @param Style $style The associated Style object - */ - protected function _background_image($url, $x, $y, $width, $height, $style) { - $sheet = $style->get_stylesheet(); - - // Skip degenerate cases - if ( $width == 0 || $height == 0 ) - return; - - //debugpng - if (DEBUGPNG) print '[_background_image '.$url.']'; - - list($img, $ext) = Image_Cache::resolve_url($url, - $sheet->get_protocol(), - $sheet->get_host(), - $sheet->get_base_path()); - - // Bail if the image is no good - if ( $img === DOMPDF_LIB_DIR . "/res/broken_image.png" ) - return; - - //Try to optimize away reading and composing of same background multiple times - //Postponing read with imagecreatefrom ...() - //final composition paramters and name not known yet - //Therefore read dimension directly from file, instead of creating gd object first. - //$img_w = imagesx($src); $img_h = imagesy($src); - - list($img_w, $img_h) = dompdf_getimagesize($img); - if (!isset($img_w) || $img_w == 0 || !isset($img_h) || $img_h == 0) { - return; - } - - $repeat = $style->background_repeat; - $bg_color = $style->background_color; - - //Increase background resolution and dependent box size according to image resolution to be placed in - //Then image can be copied in without resize - $bg_width = round((float)($width * DOMPDF_DPI) / 72); - $bg_height = round((float)($height * DOMPDF_DPI) / 72); - - //Need %bg_x, $bg_y as background pos, where img starts, converted to pixel - - list($bg_x, $bg_y) = $style->background_position; - - if ( is_percent($bg_x) ) { - // The point $bg_x % from the left edge of the image is placed - // $bg_x % from the left edge of the background rectangle - $p = ((float)$bg_x)/100.0; - $x1 = $p * $img_w; - $x2 = $p * $bg_width; - - $bg_x = round($x2 - $x1); - } else { - $bg_x = round((float)($style->length_in_pt($bg_x)*DOMPDF_DPI) / 72); - } - - if ( is_percent($bg_y) ) { - // The point $bg_y % from the left edge of the image is placed - // $bg_y % from the left edge of the background rectangle - $p = ((float)$bg_y)/100.0; - $y1 = $p * $img_h; - $y2 = $p * $bg_height; - - $bg_y = round($y2 - $y1); - } else { - $bg_y = round((float)($style->length_in_pt($bg_y)*DOMPDF_DPI) / 72); - } - - //clip background to the image area on partial repeat. Nothing to do if img off area - //On repeat, normalize start position to the tile at immediate left/top or 0/0 of area - //On no repeat with positive offset: move size/start to have offset==0 - //Handle x/y Dimensions separately - - if ( $repeat !== "repeat" && $repeat !== "repeat-x" ) { - //No repeat x - if ($bg_x < 0) { - $bg_width = $img_w + $bg_x; - } else { - $x += ($bg_x * 72)/DOMPDF_DPI; - $bg_width = $bg_width - $bg_x; - if ($bg_width > $img_w) { - $bg_width = $img_w; - } - $bg_x = 0; - } - if ($bg_width <= 0) { - return; - } - $width = (float)($bg_width * 72)/DOMPDF_DPI; - } else { - //repeat x - if ($bg_x < 0) { - $bg_x = - ((-$bg_x) % $img_w); - } else { - $bg_x = $bg_x % $img_w; - if ($bg_x > 0) { - $bg_x -= $img_w; - } - } - } - - if ( $repeat !== "repeat" && $repeat !== "repeat-y" ) { - //no repeat y - if ($bg_y < 0) { - $bg_height = $img_h + $bg_y; - } else { - $y += ($bg_y * 72)/DOMPDF_DPI; - $bg_height = $bg_height - $bg_y; - if ($bg_height > $img_h) { - $bg_height = $img_h; - } - $bg_y = 0; - } - if ($bg_height <= 0) { - return; - } - $height = (float)($bg_height * 72)/DOMPDF_DPI; - } else { - //repeat y - if ($bg_y < 0) { - $bg_y = - ((-$bg_y) % $img_h); - } else { - $bg_y = $bg_y % $img_h; - if ($bg_y > 0) { - $bg_y -= $img_h; - } - } - } - - //Optimization, if repeat has no effect - if ( $repeat === "repeat" && $bg_y <= 0 && $img_h+$bg_y >= $bg_height ) { - $repeat = "repeat-x"; - } - if ( $repeat === "repeat" && $bg_x <= 0 && $img_w+$bg_x >= $bg_width ) { - $repeat = "repeat-y"; - } - if ( ($repeat === "repeat-x" && $bg_x <= 0 && $img_w+$bg_x >= $bg_width) || - ($repeat === "repeat-y" && $bg_y <= 0 && $img_h+$bg_y >= $bg_height) ) { - $repeat = "no-repeat"; - } - - //Use filename as indicator only - //different names for different variants to have different copies in the pdf - //This is not dependent of background color of box! .'_'.(is_array($bg_color) ? $bg_color["hex"] : $bg_color) - //Note: Here, bg_* are the start values, not end values after going through the tile loops! - - $filedummy = $img; - - /* - //Make shorter strings with limited characters for cache associative array index - needed? - //Strip common base path - server root, explicite temp, default temp; remove unwanted characters; - $filedummy = strtr($filedummy,"\\:","//"); - $p = strtr($_SERVER["DOCUMENT_ROOT"],"\\:","//"); - $l = strlen($p); - if ( substr($filedummy,0,$l) == $p) { - $filedummy = substr($filedummy,$l); - } else { - $p = strtr(DOMPDF_TEMP_DIR,"\\:","//"); - $l = strlen($p); - if ( substr($filedummy,0,$l) == $p) { - $filedummy = substr($filedummy,$l); - } else { - $p = strtr(sys_get_temp_dir(),"\\:","//"); - $l = strlen($p); - if ( substr($filedummy,0,$l) == $p) { - $filedummy = substr($filedummy,$l); - } - } - } - */ - - $filedummy .= '_'.$bg_width.'_'.$bg_height.'_'.$bg_x.'_'.$bg_y.'_'.$repeat; - //debugpng - //if (DEBUGPNG) print '<pre>[_background_image name '.$filedummy.']</pre>'; - - //Optimization to avoid multiple times rendering the same image. - //If check functions are existing and identical image already cached, - //then skip creation of duplicate, because it is not needed by addImagePng - if ( method_exists( $this->_canvas, "get_cpdf" ) && - method_exists( $this->_canvas->get_cpdf(), "addImagePng" ) && - method_exists( $this->_canvas->get_cpdf(), "image_iscached" ) && - $this->_canvas->get_cpdf()->image_iscached($filedummy) ) { - $bg = null; - - //debugpng - //if (DEBUGPNG) print '[_background_image skip]'; - } - - else { - - // Create a new image to fit over the background rectangle - $bg = imagecreatetruecolor($bg_width, $bg_height); - - //anyway default - //imagealphablending($img, true); - - switch (strtolower($ext)) { - case "png": - $src = imagecreatefrompng($img); - break; - - case "jpg": - case "jpeg": - $src = imagecreatefromjpeg($img); - break; - - case "gif": - $src = imagecreatefromgif($img); - break; - - case "bmp": - $src = imagecreatefrombmp($img); - break; - - default: return; // Unsupported image type - } - - if ($src == null) { - return; - } - - //Background color if box is not relevant here - //Non transparent image: box clipped to real size. Background non relevant. - //Transparent image: The image controls the transparency and lets shine through whatever background. - //However on transparent imaage preset the composed image with the transparency color, - //to keep the transparency when copying over the non transparent parts of the tiles. - $ti = imagecolortransparent($src); - - if ($ti >= 0) { - $tc = imagecolorsforindex($src,$ti); - $ti = imagecolorallocate($bg,$tc['red'],$tc['green'],$tc['blue']); - imagefill($bg,0,0,$ti); - imagecolortransparent($bg, $ti); - } - - //This has only an effect for the non repeatable dimension. - //compute start of src and dest coordinates of the single copy - if ( $bg_x < 0 ) { - $dst_x = 0; - $src_x = -$bg_x; - } else { - $src_x = 0; - $dst_x = $bg_x; - } - - if ( $bg_y < 0 ) { - $dst_y = 0; - $src_y = -$bg_y; - } else { - $src_y = 0; - $dst_y = $bg_y; - } - - //For historical reasons exchange meanings of variables: - //start_* will be the start values, while bg_* will be the temporary start values in the loops - $start_x = $bg_x; - $start_y = $bg_y; - - // Copy regions from the source image to the background - if ( $repeat === "no-repeat" ) { - - // Simply place the image on the background - imagecopy($bg, $src, $dst_x, $dst_y, $src_x, $src_y, $img_w, $img_h); - - } else if ( $repeat === "repeat-x" ) { - - for ( $bg_x = $start_x; $bg_x < $bg_width; $bg_x += $img_w ) { - if ( $bg_x < 0 ) { - $dst_x = 0; - $src_x = -$bg_x; - $w = $img_w + $bg_x; - } else { - $dst_x = $bg_x; - $src_x = 0; - $w = $img_w; - } - imagecopy($bg, $src, $dst_x, $dst_y, $src_x, $src_y, $w, $img_h); - } - - } else if ( $repeat === "repeat-y" ) { - - for ( $bg_y = $start_y; $bg_y < $bg_height; $bg_y += $img_h ) { - if ( $bg_y < 0 ) { - $dst_y = 0; - $src_y = -$bg_y; - $h = $img_h + $bg_y; - } else { - $dst_y = $bg_y; - $src_y = 0; - $h = $img_h; - } - imagecopy($bg, $src, $dst_x, $dst_y, $src_x, $src_y, $img_w, $h); - - } - - } else if ( $repeat === "repeat" ) { - - for ( $bg_y = $start_y; $bg_y < $bg_height; $bg_y += $img_h ) { - for ( $bg_x = $start_x; $bg_x < $bg_width; $bg_x += $img_w ) { - - if ( $bg_x < 0 ) { - $dst_x = 0; - $src_x = -$bg_x; - $w = $img_w + $bg_x; - } else { - $dst_x = $bg_x; - $src_x = 0; - $w = $img_w; - } - - if ( $bg_y < 0 ) { - $dst_y = 0; - $src_y = -$bg_y; - $h = $img_h + $bg_y; - } else { - $dst_y = $bg_y; - $src_y = 0; - $h = $img_h; - } - imagecopy($bg, $src, $dst_x, $dst_y, $src_x, $src_y, $w, $h); - } - } - } - - else { - print 'Unknown repeat!'; - } - - imagedestroy($src); - - } /* End optimize away creation of duplicates */ - - //img: image url string - //img_w, img_h: original image size in px - //width, height: box size in pt - //bg_width, bg_height: box size in px - //x, y: left/top edge of box on page in pt - //start_x, start_y: placement of image relativ to pattern - //$repeat: repeat mode - //$bg: GD object of result image - //$src: GD object of original image - //When using cpdf and optimization to direct png creation from gd object is available, - //don't create temp file, but place gd object directly into the pdf - if ( method_exists( $this->_canvas, "get_cpdf" ) && - method_exists( $this->_canvas->get_cpdf(), "addImagePng" ) ) { - // Note: CPDF_Adapter image converts y position - $this->_canvas->get_cpdf()->addImagePng($filedummy, $x, $this->_canvas->get_height() - $y - $height, $width, $height, $bg); - } - - else { - $tmp_file = tempnam(DOMPDF_TEMP_DIR, "bg_dompdf_img_").'.png'; - //debugpng - if (DEBUGPNG) print '[_background_image '.$tmp_file.']'; - - imagepng($bg, $tmp_file); - $this->_canvas->image($tmp_file, "png", $x, $y, $width, $height); - imagedestroy($bg); - - //debugpng - if (DEBUGPNG) print '[_background_image unlink '.$tmp_file.']'; - - if (!DEBUGKEEPTEMP) - unlink($tmp_file); - } - } - - protected function _get_dash_pattern($style, $width) { - $pattern = array(); - - switch ($style) { - default: - /*case "solid": - case "double": - case "groove": - case "inset": - case "outset": - case "ridge":*/ - case "none": break; - - case "dotted": - if ( $width < 2 ) - $pattern = array($width, 2); - else - $pattern = array($width); - break; - - case "dashed": - $pattern = array(3 * $width); - break; - } - - return $pattern; - } - - protected function _border_none($x, $y, $length, $color, $widths, $side, $corner_style = "bevel") { - return; - } - - // Border rendering functions - protected function _border_dotted($x, $y, $length, $color, $widths, $side, $corner_style = "bevel") { - list($top, $right, $bottom, $left) = $widths; - - $pattern = $this->_get_dash_pattern("dotted", $$side); - - switch ($side) { - - case "top": - $delta = $top / 2; - case "bottom": - $delta = isset($delta) ? $delta : -$bottom / 2; - $this->_canvas->line($x, $y + $delta, $x + $length, $y + $delta, $color, $$side, $pattern); - break; - - case "left": - $delta = $left / 2; - case "right": - $delta = isset($delta) ? $delta : - $right / 2; - $this->_canvas->line($x + $delta, $y, $x + $delta, $y + $length, $color, $$side, $pattern); - break; - - default: - return; - - } - } - - - protected function _border_dashed($x, $y, $length, $color, $widths, $side, $corner_style = "bevel") { - list($top, $right, $bottom, $left) = $widths; - - $pattern = $this->_get_dash_pattern("dashed", $$side); - - switch ($side) { - - case "top": - $delta = $top / 2; - case "bottom": - $delta = isset($delta) ? $delta : -$bottom / 2; - $this->_canvas->line($x, $y + $delta, $x + $length, $y + $delta, $color, $$side, $pattern); - break; - - case "left": - $delta = $left / 2; - case "right": - $delta = isset($delta) ? $delta : - $right / 2; - $this->_canvas->line($x + $delta, $y, $x + $delta, $y + $length, $color, $$side, $pattern); - break; - - default: - return; - } - - } - - - protected function _border_solid($x, $y, $length, $color, $widths, $side, $corner_style = "bevel") { - list($top, $right, $bottom, $left) = $widths; - - // All this polygon business is for beveled corners... - switch ($side) { - - case "top": - if ( $corner_style === "bevel" ) { - - $points = array($x, $y, - $x + $length, $y, - $x + $length - $right, $y + $top, - $x + $left, $y + $top); - $this->_canvas->polygon($points, $color, null, null, true); - } else - $this->_canvas->filled_rectangle($x, $y, $length, $top, $color); - - break; - - case "bottom": - if ( $corner_style === "bevel" ) { - $points = array($x, $y, - $x + $length, $y, - $x + $length - $right, $y - $bottom, - $x + $left, $y - $bottom); - $this->_canvas->polygon($points, $color, null, null, true); - } else - $this->_canvas->filled_rectangle($x, $y - $bottom, $length, $bottom, $color); - - break; - - case "left": - if ( $corner_style === "bevel" ) { - $points = array($x, $y, - $x, $y + $length, - $x + $left, $y + $length - $bottom, - $x + $left, $y + $top); - $this->_canvas->polygon($points, $color, null, null, true); - } else - $this->_canvas->filled_rectangle($x, $y, $left, $length, $color); - - break; - - case "right": - if ( $corner_style === "bevel" ) { - $points = array($x, $y, - $x, $y + $length, - $x - $right, $y + $length - $bottom, - $x - $right, $y + $top); - $this->_canvas->polygon($points, $color, null, null, true); - } else - $this->_canvas->filled_rectangle($x - $right, $y, $right, $length, $color); - - break; - - default: - return; - - } - - } - - - protected function _border_double($x, $y, $length, $color, $widths, $side, $corner_style = "bevel") { - list($top, $right, $bottom, $left) = $widths; - - $line_width = $$side / 4; - - // We draw the outermost edge first. Points are ordered: outer left, - // outer right, inner right, inner left, or outer top, outer bottom, - // inner bottom, inner top. - switch ($side) { - - case "top": - if ( $corner_style === "bevel" ) { - $left_line_width = $left / 4; - $right_line_width = $right / 4; - - $points = array($x, $y, - $x + $length, $y, - $x + $length - $right_line_width, $y + $line_width, - $x + $left_line_width, $y + $line_width,); - $this->_canvas->polygon($points, $color, null, null, true); - - $points = array($x + $left - $left_line_width, $y + $top - $line_width, - $x + $length - $right + $right_line_width, $y + $top - $line_width, - $x + $length - $right, $y + $top, - $x + $left, $y + $top); - $this->_canvas->polygon($points, $color, null, null, true); - - } else { - $this->_canvas->filled_rectangle($x, $y, $length, $line_width, $color); - $this->_canvas->filled_rectangle($x, $y + $top - $line_width, $length, $line_width, $color); - - } - break; - - case "bottom": - if ( $corner_style === "bevel" ) { - $left_line_width = $left / 4; - $right_line_width = $right / 4; - - $points = array($x, $y, - $x + $length, $y, - $x + $length - $right_line_width, $y - $line_width, - $x + $left_line_width, $y - $line_width); - $this->_canvas->polygon($points, $color, null, null, true); - - $points = array($x + $left - $left_line_width, $y - $bottom + $line_width, - $x + $length - $right + $right_line_width, $y - $bottom + $line_width, - $x + $length - $right, $y - $bottom, - $x + $left, $y - $bottom); - $this->_canvas->polygon($points, $color, null, null, true); - - } else { - $this->_canvas->filled_rectangle($x, $y - $line_width, $length, $line_width, $color); - $this->_canvas->filled_rectangle($x, $y - $bottom, $length, $line_width, $color); - } - - break; - - case "left": - if ( $corner_style === "bevel" ) { - $top_line_width = $top / 4; - $bottom_line_width = $bottom / 4; - - $points = array($x, $y, - $x, $y + $length, - $x + $line_width, $y + $length - $bottom_line_width, - $x + $line_width, $y + $top_line_width); - $this->_canvas->polygon($points, $color, null, null, true); - - $points = array($x + $left - $line_width, $y + $top - $top_line_width, - $x + $left - $line_width, $y + $length - $bottom + $bottom_line_width, - $x + $left, $y + $length - $bottom, - $x + $left, $y + $top); - $this->_canvas->polygon($points, $color, null, null, true); - - } else { - $this->_canvas->filled_rectangle($x, $y, $line_width, $length, $color); - $this->_canvas->filled_rectangle($x + $left - $line_width, $y, $line_width, $length, $color); - } - - break; - - case "right": - if ( $corner_style === "bevel" ) { - $top_line_width = $top / 4; - $bottom_line_width = $bottom / 4; - - - $points = array($x, $y, - $x, $y + $length, - $x - $line_width, $y + $length - $bottom_line_width, - $x - $line_width, $y + $top_line_width); - $this->_canvas->polygon($points, $color, null, null, true); - - $points = array($x - $right + $line_width, $y + $top - $top_line_width, - $x - $right + $line_width, $y + $length - $bottom + $bottom_line_width, - $x - $right, $y + $length - $bottom, - $x - $right, $y + $top); - $this->_canvas->polygon($points, $color, null, null, true); - - } else { - $this->_canvas->filled_rectangle($x - $line_width, $y, $line_width, $length, $color); - $this->_canvas->filled_rectangle($x - $right, $y, $line_width, $length, $color); - } - - break; - - default: - return; - - } - - } - - protected function _border_groove($x, $y, $length, $color, $widths, $side, $corner_style = "bevel") { - list($top, $right, $bottom, $left) = $widths; - - $half_widths = array($top / 2, $right / 2, $bottom / 2, $left / 2); - - $this->_border_inset($x, $y, $length, $color, $half_widths, $side); - - switch ($side) { - - case "top": - $x += $left / 2; - $y += $top / 2; - $length -= $left / 2 + $right / 2; - break; - - case "bottom": - $x += $left / 2; - $y -= $bottom / 2; - $length -= $left / 2 + $right / 2; - break; - - case "left": - $x += $left / 2; - $y += $top / 2; - $length -= $top / 2 + $bottom / 2; - break; - - case "right": - $x -= $right / 2; - $y += $top / 2; - $length -= $top / 2 + $bottom / 2; - break; - - default: - return; - - } - - $this->_border_outset($x, $y, $length, $color, $half_widths, $side); - - } - - protected function _border_ridge($x, $y, $length, $color, $widths, $side, $corner_style = "bevel") { - list($top, $right, $bottom, $left) = $widths; - - $half_widths = array($top / 2, $right / 2, $bottom / 2, $left / 2); - - $this->_border_outset($x, $y, $length, $color, $half_widths, $side); - - switch ($side) { - - case "top": - $x += $left / 2; - $y += $top / 2; - $length -= $left / 2 + $right / 2; - break; - - case "bottom": - $x += $left / 2; - $y -= $bottom / 2; - $length -= $left / 2 + $right / 2; - break; - - case "left": - $x += $left / 2; - $y += $top / 2; - $length -= $top / 2 + $bottom / 2; - break; - - case "right": - $x -= $right / 2; - $y += $top / 2; - $length -= $top / 2 + $bottom / 2; - break; - - default: - return; - - } - - $this->_border_inset($x, $y, $length, $color, $half_widths, $side); - - } - - protected function _tint($c) { - if ( !is_numeric($c) ) - return $c; - - return min(1, $c + 0.16); - } - - protected function _shade($c) { - if ( !is_numeric($c) ) - return $c; - - return max(0, $c - 0.33); - } - - protected function _border_inset($x, $y, $length, $color, $widths, $side, $corner_style = "bevel") { - list($top, $right, $bottom, $left) = $widths; - - switch ($side) { - - case "top": - case "left": - $shade = array_map(array($this, "_shade"), $color); - $this->_border_solid($x, $y, $length, $shade, $widths, $side); - break; - - case "bottom": - case "right": - $tint = array_map(array($this, "_tint"), $color); - $this->_border_solid($x, $y, $length, $tint, $widths, $side); - break; - - default: - return; - } - } - - protected function _border_outset($x, $y, $length, $color, $widths, $side, $corner_style = "bevel") { - list($top, $right, $bottom, $left) = $widths; - - switch ($side) { - case "top": - case "left": - $tint = array_map(array($this, "_tint"), $color); - $this->_border_solid($x, $y, $length, $tint, $widths, $side); - break; - - case "bottom": - case "right": - $shade = array_map(array($this, "_shade"), $color); - $this->_border_solid($x, $y, $length, $shade, $widths, $side); - break; - - default: - return; - - } - } - - protected function _set_opacity($opacity) { - if ( is_numeric($opacity) && $opacity <= 1.0 && $opacity >= 0.0 ) { - $this->_canvas->set_opacity( $opacity ); - } - } - - protected function _debug_layout($box, $color = "red", $style = array()) { - $this->_canvas->rectangle($box[0], $box[1], $box[2], $box[3], CSS_Color::parse($color), 0.1, $style); - } - //........................................................................ -} diff --git a/application/third_party/dompdf/include/attribute_translator.cls.php b/application/third_party/dompdf/include/attribute_translator.cls.php deleted file mode 100644 index 87503fea..00000000 --- a/application/third_party/dompdf/include/attribute_translator.cls.php +++ /dev/null @@ -1,481 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: attribute_translator.cls.php,v $ - * Created on: 2004-09-13 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: attribute_translator.cls.php 346 2011-01-09 13:23:22Z fabien.menager $ */ - -/** - * Translates HTML 4.0 attributes into CSS rules - * - * @access private - * @package dompdf - */ -class Attribute_Translator { - - // Munged data originally from - // http://www.w3.org/TR/REC-html40/index/attributes.html - // - // thank you var_export() :D - static private $__ATTRIBUTE_LOOKUP = array( - //'caption' => array ( 'align' => '', ), - 'img' => array( - 'align' => array( - 'bottom' => 'vertical-align: baseline;', - 'middle' => 'vertical-align: middle;', - 'top' => 'vertical-align: top;', - 'left' => 'float: left;', - 'right' => 'float: right;' - ), - 'border' => 'border-width: %0.2F px;', - 'height' => 'height: %s px;', - 'hspace' => 'padding-left: %1$0.2F px; padding-right: %1$0.2F px;', - 'vspace' => 'padding-top: %1$0.2F px; padding-bottom: %1$0.2F px;', - 'width' => 'width: %s px;', - ), - 'table' => array( - 'align' => array( - 'left' => 'margin-left: 0; margin-right: auto;', - 'center' => 'margin-left: auto; margin-right: auto;', - 'right' => 'margin-left: auto; margin-right: 0;' - ), - 'bgcolor' => 'background-color: %s;', - 'border' => '!set_table_border', - 'cellpadding' => '!set_table_cellpadding', - 'cellspacing' => 'border-spacing: %0.2F; border-collapse: separate;', - 'frame' => array( - 'void' => 'border-style: none;', - 'above' => 'border-top-style: solid;', - 'below' => 'border-bottom-style: solid;', - 'hsides' => 'border-left-style: solid; border-right-style: solid;', - 'vsides' => 'border-top-style: solid; border-bottom-style: solid;', - 'lhs' => 'border-left-style: solid;', - 'rhs' => 'border-right-style: solid;', - 'box' => 'border-style: solid;', - 'border' => 'border-style: solid;' - ), - 'rules' => '!set_table_rules', - 'width' => 'width: %s;', - ), - 'hr' => array( - 'align' => '!set_hr_align', // Need to grab width to set 'left' & 'right' correctly - 'noshade' => 'border-style: solid;', - 'size' => 'border-width: %0.2F px;', - 'width' => 'width: %s;', - ), - 'div' => array( - 'align' => 'text-align: %s;', - ), - 'h1' => array( - 'align' => 'text-align: %s;', - ), - 'h2' => array( - 'align' => 'text-align: %s;', - ), - 'h3' => array( - 'align' => 'text-align: %s;', - ), - 'h4' => array( - 'align' => 'text-align: %s;', - ), - 'h5' => array( - 'align' => 'text-align: %s;', - ), - 'h6' => array( - 'align' => 'text-align: %s;', - ), - 'p' => array( - 'align' => 'text-align: %s;', - ), -// 'col' => array( -// 'align' => '', -// 'valign' => '', -// ), -// 'colgroup' => array( -// 'align' => '', -// 'valign' => '', -// ), - 'tbody' => array( - 'align' => '!set_table_row_align', - 'valign' => '!set_table_row_valign', - ), - 'td' => array( - 'align' => 'text-align: %s;', - 'bgcolor' => 'background-color: %s;', - 'height' => 'height: %s;', - 'nowrap' => 'white-space: nowrap;', - 'valign' => 'vertical-align: %s;', - 'width' => 'width: %s;', - ), - 'tfoot' => array( - 'align' => '!set_table_row_align', - 'valign' => '!set_table_row_valign', - ), - 'th' => array( - 'align' => 'text-align: %s;', - 'bgcolor' => 'background-color: %s;', - 'height' => 'height: %s;', - 'nowrap' => 'white-space: nowrap;', - 'valign' => 'vertical-align: %s;', - 'width' => 'width: %s;', - ), - 'thead' => array( - 'align' => '!set_table_row_align', - 'valign' => '!set_table_row_valign', - ), - 'tr' => array( - 'align' => '!set_table_row_align', - 'bgcolor' => '!set_table_row_bgcolor', - 'valign' => '!set_table_row_valign', - ), - 'body' => array( - 'background' => 'background-image: url(%s);', - 'bgcolor' => 'background-color: %s;', - 'link' => '!set_body_link', - 'text' => 'color: %s;', - ), - 'br' => array( - 'clear' => 'clear: %s;', - ), - 'basefont' => array( - 'color' => 'color: %s;', - 'face' => 'font-family: %s;', - 'size' => '!set_basefont_size', - ), - 'font' => array( - 'color' => 'color: %s;', - 'face' => 'font-family: %s;', - 'size' => '!set_font_size', - ), - 'dir' => array( - 'compact' => 'margin: 0.5em 0;', - ), - 'dl' => array( - 'compact' => 'margin: 0.5em 0;', - ), - 'menu' => array( - 'compact' => 'margin: 0.5em 0;', - ), - 'ol' => array( - 'compact' => 'margin: 0.5em 0;', - 'start' => 'counter-reset: -dompdf-default-counter %d;', - 'type' => 'list-style-type: %s;', - ), - 'ul' => array( - 'compact' => 'margin: 0.5em 0;', - 'type' => 'list-style-type: %s;', - ), - 'li' => array( - 'type' => 'list-style-type: %s;', - 'value' => 'counter-reset: -dompdf-default-counter %d;', - ), - 'pre' => array( - 'width' => 'width: %s;', - ), - ); - - - static protected $_last_basefont_size = 3; - static protected $_font_size_lookup = array( - // For basefont support - -3 => "4pt", - -2 => "5pt", - -1 => "6pt", - 0 => "7pt", - - 1 => "8pt", - 2 => "10pt", - 3 => "12pt", - 4 => "14pt", - 5 => "18pt", - 6 => "24pt", - 7 => "34pt", - - // For basefont support - 8 => "48pt", - 9 => "44pt", - 10 => "52pt", - 11 => "60pt", - ); - - - static function translate_attributes($frame) { - $node = $frame->get_node(); - $tag = $node->tagName; - - if ( !isset(self::$__ATTRIBUTE_LOOKUP[$tag]) ) - return; - - $valid_attrs = self::$__ATTRIBUTE_LOOKUP[$tag]; - $attrs = $node->attributes; - $style = rtrim($node->getAttribute("style"), "; "); - if ( $style != "" ) - $style .= ";"; - - foreach ($attrs as $attr => $attr_node ) { - if ( !isset($valid_attrs[$attr]) ) - continue; - - $value = $attr_node->value; - - $target = $valid_attrs[$attr]; - - // Look up $value in $target, if $target is an array: - if ( is_array($target) ) { - - if ( isset($target[$value]) ) - $style .= " " . self::_resolve_target($node, $target[$value], $value); - - } else { - // otherwise use target directly - $style .= " " . self::_resolve_target($node, $target, $value); - } - } - if ( !is_null($style) ) { - $style = ltrim($style); - $node->setAttribute("style", $style); - } - - } - - static protected function _resolve_target($node, $target, $value) { - if ( $target[0] === "!" ) { - // Function call - $func = "_" . mb_substr($target, 1); - return self::$func($node, $value); - } - - return $value ? sprintf($target, $value) : ""; - } - - //..................................................................... - - static protected function _set_table_cellpadding($node, $value) { - $td_list = $node->getElementsByTagName("td"); - foreach ($td_list as $td) { - $style = rtrim($td->getAttribute("style"), ";"); - $style .= "; padding: $value" . "px;"; - $style = ltrim($style, ";"); - $td->setAttribute("style", $style); - } - return null; - } - - static protected function _set_table_border($node, $value) { - $td_list = $node->getElementsByTagName("td"); - foreach ($td_list as $td) { - $style = $td->getAttribute("style"); - if ( strpos($style, "border") !== false ) - continue; - $style = rtrim($style, ";"); - $style .= "; border-width: " . ($value > 0 ? 1 : 0) . "pt; border-style: inset;"; - $style = ltrim($style, ";"); - $td->setAttribute("style", $style); - } - - $th_list = $node->getElementsByTagName("th"); - foreach ($th_list as $th) { - $style = $th->getAttribute("style"); - if ( strpos($style, "border") !== false ) - continue; - $style = rtrim($style, ";"); - $style .= "; border-width: " . ($value > 0 ? 1 : 0) . "pt; border-style: inset;"; - $style = ltrim($style, ";"); - $th->setAttribute("style", $style); - } - - $style = rtrim($node->getAttribute("style"),";"); - $style .= "; border-width: $value" . "px; "; - return ltrim($style, "; "); - } - - static protected function _set_table_cellspacing($node, $value) { - $style = rtrim($node->getAttribute($style), ";"); - - if ( $value == 0 ) - $style .= "; border-collapse: collapse;"; - - else - $style = "; border-collapse: separate;"; - - return ltrim($style, ";"); - } - - static protected function _set_table_rules($node, $value) { - $new_style = "; border-collapse: collapse;"; - switch ($value) { - case "none": - $new_style .= "border-style: none;"; - break; - - case "groups": - // FIXME: unsupported - return; - - case "rows": - $new_style .= "border-style: solid none solid none; border-width: 1px; "; - break; - - case "cols": - $new_style .= "border-style: none solid none solid; border-width: 1px; "; - break; - - case "all": - $new_style .= "border-style: solid; border-width: 1px; "; - break; - - default: - // Invalid value - return null; - } - - $td_list = $node->getElementsByTagName("td"); - - foreach ($td_list as $td) { - $style = $td->getAttribute("style"); - $style .= $new_style; - $td->setAttribute("style", $style); - } - return null; - } - - static protected function _set_hr_align($node, $value) { - $style = rtrim($node->getAttribute("style"),";"); - $width = $node->getAttribute("width"); - if ( $width == "" ) - $width = "100%"; - - $remainder = 100 - (double)rtrim($width, "% "); - - switch ($value) { - case "left": - $style .= "; margin-right: $remainder %;"; - break; - - case "right": - $style .= "; margin-left: $remainder %;"; - break; - - case "center": - $style .= "; margin-left: auto; margin-right: auto;"; - break; - - default: - return null; - } - return ltrim($style, "; "); - } - - static protected function _set_table_row_align($node, $value) { - - $td_list = $node->getElementsByTagName("td"); - - foreach ($td_list as $td) { - $style = rtrim($td->getAttribute("style"), ";"); - $style .= "; text-align: $value;"; - $style = ltrim($style, "; "); - $td->setAttribute("style", $style); - } - - return null; - } - - static protected function _set_table_row_valign($node, $value) { - - $td_list = $node->getElementsByTagName("td"); - - foreach ($td_list as $td) { - $style = rtrim($td->getAttribute("style"), ";"); - $style .= "; vertical-align: $value;"; - $style = ltrim($style, "; "); - $td->setAttribute("style", $style); - } - - return null; - } - - static protected function _set_table_row_bgcolor($node, $value) { - - $td_list = $node->getElementsByTagName("td"); - - foreach ($td_list as $td) { - $style = rtrim($td->getAttribute("style"), ";"); - $style .= "; background-color: $value;"; - $style = ltrim($style, "; "); - $td->setAttribute("style", $style); - } - - return null; - } - - static protected function _set_body_link($node, $value) { - - $a_list = $node->getElementsByTagName("a"); - - foreach ($a_list as $a) { - $style = rtrim($a->getAttribute("style"), ";"); - $style .= "; color: $value;"; - $style = ltrim($style, "; "); - $a->setAttribute("style", $style); - } - - return null; - } - - static protected function _set_basefont_size($node, $value) { - // FIXME: ? we don't actually set the font size of anything here, just - // the base size for later modification by <font> tags. - self::$_last_basefont_size = $value; - return null; - } - - static protected function _set_font_size($node, $value) { - $style = $node->getAttribute("style"); - - if ( $value[0] === "-" || $value[0] === "+" ) - $value = self::$_last_basefont_size + (int)$value; - - if ( isset(self::$_font_size_lookup[$value]) ) - $style .= "; font-size: " . self::$_font_size_lookup[$value] . ";"; - else - $style .= "; font-size: $value;"; - - return ltrim($style, "; "); - - } - -} diff --git a/application/third_party/dompdf/include/block_frame_decorator.cls.php b/application/third_party/dompdf/include/block_frame_decorator.cls.php deleted file mode 100644 index c03ff7b9..00000000 --- a/application/third_party/dompdf/include/block_frame_decorator.cls.php +++ /dev/null @@ -1,354 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: block_frame_decorator.cls.php,v $ - * Created on: 2004-06-02 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: block_frame_decorator.cls.php 358 2011-01-30 22:22:47Z fabien.menager $ */ - -/** - * Decorates frames for block layout - * - * @access private - * @package dompdf - */ -class Block_Frame_Decorator extends Frame_Decorator { - - const DEFAULT_COUNTER = "-dompdf-default-counter"; - - protected $_lines; // array( [num] => array([frames] => array(<frame list>), - // y, w, h) ) - protected $_counters; // array([id] => counter_value) (for generated content) - protected $_cl; // current line index - - static protected $_initial_line_state = array( - "frames" => array(), - "wc" => 0, - "y" => null, - "w" => 0, - "h" => 0, - "left" => 0, - "right" => 0, - "tallest_frame" => null, - "br" => false, - ); - - //........................................................................ - - function __construct(Frame $frame, DOMPDF $dompdf) { - parent::__construct($frame, $dompdf); - - $this->_lines = array(self::$_initial_line_state); - - $this->_counters = array(self::DEFAULT_COUNTER => 0); - $this->_cl = 0; - } - - //........................................................................ - - function reset() { - parent::reset(); - - $this->_lines = array(self::$_initial_line_state); - - $this->_counters = array(self::DEFAULT_COUNTER => 0); - $this->_cl = 0; - } - - //........................................................................ - - // Accessor methods - - function get_current_line($i = null) { - $cl = $this->_lines[$this->_cl]; - if ( isset($i) ) - return $cl[$i]; - return $cl; - } - - function get_current_line_number() { - return $this->_cl; - } - - function get_lines() { return $this->_lines; } - - //........................................................................ - - // Set methods - function set_current_line($y = null, $w = null, $h = null, $tallest_frame = null, $left = null, $right = null) { - $this->set_line($this->_cl, $y, $w, $h, $tallest_frame, $left, $right); - } - - function clear_line($i) { - if ( isset($this->_lines[$i]) ) - unset($this->_lines[$i]); - } - - function set_line($lineno, $y = null, $w = null, $h = null, $tallest_frame = null, $left = null, $right = null) { - - if ( is_array($y) ) - extract($y); - - if (is_numeric($y)) - $this->_lines[$lineno]["y"] = $y; - - if (is_numeric($w)) - $this->_lines[$lineno]["w"] = $w; - - if (is_numeric($h)) - $this->_lines[$lineno]["h"] = $h; - - if ($tallest_frame && $tallest_frame instanceof Frame) - $this->_lines[$lineno]["tallest_frame"] = $tallest_frame; - - if (is_numeric($left)) - $this->_lines[$lineno]["left"] = $left; - - if (is_numeric($right)) - $this->_lines[$lineno]["right"] = $right; - } - - - function add_frame_to_line(Frame $frame) { - $style = $frame->get_style(); - - if ( in_array($style->position, array("absolute", "fixed")) || - (DOMPDF_ENABLE_CSS_FLOAT && $style->float !== "none") ) { - return; - } - - $frame->set_containing_line($this->_lines[$this->_cl]); - - /* - // Adds a new line after a block, only if certain conditions are met - if ((($frame instanceof Inline_Frame_Decorator && $frame->get_node()->nodeName !== "br") || - $frame instanceof Text_Frame_Decorator && trim($frame->get_text())) && - ($frame->get_prev_sibling() && $frame->get_prev_sibling()->get_style()->display === "block" && - $this->_lines[$this->_cl]["w"] > 0 )) { - - $this->maximize_line_height( $style->length_in_pt($style->line_height), $frame ); - $this->add_line(); - - // Add each child of the inline frame to the line individually - foreach ($frame->get_children() as $child) - $this->add_frame_to_line( $child ); - } - else*/ - - // Handle inline frames (which are effectively wrappers) - if ( $frame instanceof Inline_Frame_Decorator ) { - - // Handle line breaks - if ( $frame->get_node()->nodeName === "br" ) { - $this->maximize_line_height( $style->length_in_pt($style->line_height), $frame ); - $this->add_line(true); - } - - return; - } - - // Trim leading text if this is an empty line. Kinda a hack to put it here, - // but what can you do... - if ( $this->_lines[$this->_cl]["w"] == 0 && - $frame->get_node()->nodeName === "#text" && - ($style->white_space !== "pre" || - $style->white_space !== "pre-wrap") ) { - - $frame->set_text( ltrim($frame->get_text()) ); - $frame->recalculate_width(); - } - - $w = $frame->get_margin_width(); - - if ( $w == 0 ) - return; - - // Debugging code: - /* - pre_r("\n<h3>Adding frame to line:</h3>"); - - // pre_r("Me: " . $this->get_node()->nodeName . " (" . spl_object_hash($this->get_node()) . ")"); - // pre_r("Node: " . $frame->get_node()->nodeName . " (" . spl_object_hash($frame->get_node()) . ")"); - if ( $frame->get_node()->nodeName === "#text" ) - pre_r('"'.$frame->get_node()->nodeValue.'"'); - - pre_r("Line width: " . $this->_lines[$this->_cl]["w"]); - pre_r("Frame: " . get_class($frame)); - pre_r("Frame width: " . $w); - pre_r("Frame height: " . $frame->get_margin_height()); - pre_r("Containing block width: " . $this->get_containing_block("w")); - */ - // End debugging - - $line = $this->_lines[$this->_cl]; - if ( $line["left"] + $line["w"] + $line["right"] + $w > $this->get_containing_block("w")) - $this->add_line(); - - $frame->position(); - - $current_line = &$this->_lines[$this->_cl]; - - $current_line["frames"][] = $frame; - - if ( $frame->get_node()->nodeName === "#text") - $current_line["wc"] += count(preg_split("/\s+/", trim($frame->get_text()))); - - $this->increase_line_width($w); - - $this->maximize_line_height($frame->get_margin_height(), $frame); - } - - function remove_frames_from_line(Frame $frame) { - // Search backwards through the lines for $frame - $i = $this->_cl; - - while ($i >= 0) { - if ( ($j = in_array($frame, $this->_lines[$i]["frames"], true)) !== false ) - break; - $i--; - } - - if ( $j === false ) - return; - - // Remove $frame and all frames that follow - while ($j < count($this->_lines[$i]["frames"])) { - $f = $this->_lines[$i]["frames"][$j]; - $this->_lines[$i]["frames"][$j] = null; - unset($this->_lines[$i]["frames"][$j]); - $j++; - $this->_lines[$i]["w"] -= $f->get_margin_width(); - } - - // Recalculate the height of the line - $h = 0; - foreach ($this->_lines[$i]["frames"] as $f) - $h = max( $h, $f->get_margin_height() ); - - $this->_lines[$i]["h"] = $h; - - // Remove all lines that follow - while ($this->_cl > $i) { - $this->_lines[ $this->_cl ] = null; - unset($this->_lines[ $this->_cl ]); - $this->_cl--; - } - } - - function increase_line_width($w) { - $this->_lines[ $this->_cl ]["w"] += $w; - } - - function maximize_line_height($val, Frame $frame) { - if ( $val > $this->_lines[ $this->_cl ]["h"] ) { - $this->_lines[ $this->_cl ]["tallest_frame"] = $frame; - $this->_lines[ $this->_cl ]["h"] = $val; - } - } - - function add_line($br = false) { - -// if ( $this->_lines[$this->_cl]["h"] == 0 ) //count($this->_lines[$i]["frames"]) == 0 || -// return; - - $this->_lines[$this->_cl]["br"] = $br; - $y = $this->_lines[$this->_cl]["y"] + $this->_lines[$this->_cl]["h"]; - - $new_line = self::$_initial_line_state; - $new_line["y"] = $y; - - $this->_lines[ ++$this->_cl ] = $new_line; - } - - //........................................................................ - - function reset_counter($id = self::DEFAULT_COUNTER, $value = 0) { - $this->_counters[$id] = $value; - } - - function increment_counter($id = self::DEFAULT_COUNTER, $increment = 1) { - if ( !isset($this->_counters[$id]) ) - $this->_counters[$id] = $increment; - else - $this->_counters[$id] += $increment; - } - - // TODO: What version is the best : this one or the one in List_Bullet_Renderer ? - function counter_value($id = self::DEFAULT_COUNTER, $type = "decimal") { - $type = mb_strtolower($type); - - if ( $id === "page" ) { - $value = $this->get_dompdf()->get_canvas()->get_page_number(); - } - elseif ( !isset($this->_counters[$id]) ) { - $this->_counters[$id] = 0; - $value = 0; - } - else { - $value = $this->_counters[$id]; - } - - switch ($type) { - - default: - case "decimal": - return $value; - - case "decimal-leading-zero": - return str_pad($value, 2, "0"); - - case "lower-roman": - return dec2roman($value); - - case "upper-roman": - return mb_strtoupper(dec2roman($value)); - - case "lower-latin": - case "lower-alpha": - return chr( ($value % 26) + ord('a') - 1); - - case "upper-latin": - case "upper-alpha": - return chr( ($value % 26) + ord('A') - 1); - - case "lower-greek": - return unichr($value + 944); - - case "upper-greek": - return unichr($value + 912); - } - } -} diff --git a/application/third_party/dompdf/include/block_frame_reflower.cls.php b/application/third_party/dompdf/include/block_frame_reflower.cls.php deleted file mode 100644 index c2350bd9..00000000 --- a/application/third_party/dompdf/include/block_frame_reflower.cls.php +++ /dev/null @@ -1,756 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: block_frame_reflower.cls.php,v $ - * Created on: 2004-06-17 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: block_frame_reflower.cls.php 358 2011-01-30 22:22:47Z fabien.menager $ */ - -/** - * Reflows block frames - * - * @access private - * @package dompdf - */ -class Block_Frame_Reflower extends Frame_Reflower { - // Minimum line width to justify, as fraction of available width - const MIN_JUSTIFY_WIDTH = 0.80; - - /** - * @var Block_Frame_Decorator - */ - protected $_frame; - - function __construct(Block_Frame_Decorator $frame) { parent::__construct($frame); } - - /** - * Calculate the ideal used value for the width property as per: - * http://www.w3.org/TR/CSS21/visudet.html#Computing_widths_and_margins - * - * @param float $width - * @return array - */ - protected function _calculate_width($width) { - $style = $this->_frame->get_style(); - $w = $this->_frame->get_containing_block("w"); - - if( $style->position === "fixed" ) - $w = $this->_frame->get_parent()->get_containing_block("w"); - - $rm = $style->length_in_pt($style->margin_right, $w); - $lm = $style->length_in_pt($style->margin_left, $w); - - $left = $style->length_in_pt($style->left, $w); - $right = $style->length_in_pt($style->right, $w); - - // Handle 'auto' values - $dims = array($style->border_left_width, - $style->border_right_width, - $style->padding_left, - $style->padding_right, - $width !== "auto" ? $width : 0, - $rm !== "auto" ? $rm : 0, - $lm !== "auto" ? $lm : 0); - - // absolutely positioned boxes take the 'left' and 'right' properties into account - if ( $style->position === "absolute" || $style->position === "fixed" ) { - $absolute = true; - $dims[] = $left !== "auto" ? $left : 0; - $dims[] = $right !== "auto" ? $right : 0; - } else { - $absolute = false; - } - - $sum = $style->length_in_pt($dims, $w); - - // Compare to the containing block - $diff = $w - $sum; - - if ( $diff > 0 ) { - - if ( $absolute ) { - - // resolve auto properties: see - // http://www.w3.org/TR/CSS21/visudet.html#abs-non-replaced-width - - if ( $width === "auto" && $left === "auto" && $right === "auto" ) { - - if ( $lm === "auto" ) - $lm = 0; - if ( $rm === "auto" ) - $rm = 0; - - // Technically, the width should be "shrink-to-fit" i.e. based on the - // preferred width of the content... a little too costly here as a - // special case. Just get the width to take up the slack: - $left = 0; - $right = 0; - $width = $diff; - - } else if ( $width === "auto" ) { - - if ( $lm === "auto" ) - $lm = 0; - if ( $rm === "auto" ) - $rm = 0; - if ( $left === "auto" ) - $left = 0; - if ( $right === "auto" ) - $right = 0; - - $width = $diff; - - } else if ( $left === "auto" ) { - - if ( $lm === "auto" ) - $lm = 0; - if ( $rm === "auto" ) - $rm = 0; - if ( $right === "auto" ) - $right = 0; - - $left = $diff; - - } else if ( $right === "auto" ) { - - if ( $lm === "auto" ) - $lm = 0; - if ( $rm === "auto" ) - $rm = 0; - - $right = $diff; - } - - } else { - - // Find auto properties and get them to take up the slack - if ( $width === "auto" ) - $width = $diff; - - else if ( $lm === "auto" && $rm === "auto" ) - $lm = $rm = round($diff / 2); - - else if ( $lm === "auto" ) - $lm = $diff; - - else if ( $rm === "auto" ) - $rm = $diff; - } - - } else if ($diff < 0) { - - // We are over constrained--set margin-right to the difference - $rm = $diff; - - } - - return array("width"=> $width, "margin_left" => $lm, "margin_right" => $rm, "left" => $left, "right" => $right); - } - - /** - * Call the above function, but resolve max/min widths - * @return array - */ - protected function _calculate_restricted_width() { - $frame = $this->_frame; - $style = $frame->get_style(); - $cb = $frame->get_containing_block(); - - if ( $style->position === "fixed" ) - $cb = $frame->get_root()->get_containing_block(); - - //if ( $style->position === "absolute" ) - // $cb = $frame->find_positionned_parent()->get_containing_block(); - - if ( !isset($cb["w"]) ) - throw new DOMPDF_Exception("Box property calculation requires containing block width"); - - // Treat width 100% as auto - if ( $style->width === "100%" ) { - $width = "auto"; - } - else { - $width = $style->length_in_pt($style->width, $cb["w"]); - } - extract($this->_calculate_width($width)); - - // Handle min/max width - $min_width = $style->length_in_pt($style->min_width, $cb["w"]); - $max_width = $style->length_in_pt($style->max_width, $cb["w"]); - - if ( $max_width !== "none" && $min_width > $max_width) - // Swap 'em - list($max_width, $min_width) = array($min_width, $max_width); - - if ( $max_width !== "none" && $width > $max_width ) - extract($this->_calculate_width($max_width)); - - if ( $width < $min_width ) - extract($this->_calculate_width($min_width)); - - return array($width, $margin_left, $margin_right, $left, $right); - - } - - /** - * Determine the unrestricted height of content within the block - * by adding each line's height - * @return float - */ - protected function _calculate_content_height() { - $height = 0; - - foreach ($this->_frame->get_lines() as $line) { - $height += $line["h"]; - } - - return $height; - } - - /** - * Determine the frame's restricted height - * @return array - */ - protected function _calculate_restricted_height() { - $style = $this->_frame->get_style(); - $content_height = $this->_calculate_content_height(); - $cb = $this->_frame->get_containing_block(); - - $height = $style->length_in_pt($style->height, $cb["h"]); - - $top = $style->length_in_pt($style->top, $cb["h"]); - $bottom = $style->length_in_pt($style->bottom, $cb["h"]); - - $margin_top = $style->length_in_pt($style->margin_top, $cb["h"]); - $margin_bottom = $style->length_in_pt($style->margin_bottom, $cb["h"]); - - if ( $style->position === "absolute" || $style->position === "fixed" ) { - - // see http://www.w3.org/TR/CSS21/visudet.html#abs-non-replaced-height - - $dims = array($top !== "auto" ? $top : 0, - $style->margin_top !== "auto" ? $style->margin_top : 0, - $style->padding_top, - $style->border_top_width, - $height !== "auto" ? $height : 0, - $style->border_bottom_width, - $style->padding_bottom, - $style->margin_bottom !== "auto" ? $style->margin_bottom : 0, - $bottom !== "auto" ? $bottom : 0); - - $sum = $style->length_in_pt($dims, $cb["h"]); - - $diff = $cb["h"] - $sum; - - if ( $diff > 0 ) { - - if ( $height === "auto" && $top === "auto" && $bottom === "auto" ) { - - if ( $margin_top === "auto" ) - $margin_top = 0; - if ( $margin_bottom === "auto" ) - $margin_bottom = 0; - - $height = $diff; - - } else if ( $height === "auto" && $top === "auto" ) { - - if ( $margin_top === "auto" ) - $margin_top = 0; - if ( $margin_bottom === "auto" ) - $margin_bottom = 0; - - $height = $content_height; - $top = $diff - $content_height; - - } else if ( $height === "auto" && $bottom === "auto" ) { - - if ( $margin_top === "auto" ) - $margin_top = 0; - if ( $margin_bottom === "auto" ) - $margin_bottom = 0; - - $height = $content_height; - $bottom = $diff - $content_height; - - } else if ( $top === "auto" && $bottom === "auto" ) { - - if ( $margin_top === "auto" ) - $margin_top = 0; - if ( $margin_bottom === "auto" ) - $margin_bottom = 0; - - $bottom = $diff; - - } else if ( $top === "auto" ) { - - if ( $margin_top === "auto" ) - $margin_top = 0; - if ( $margin_bottom === "auto" ) - $margin_bottom = 0; - - $top = $diff; - - } else if ( $height === "auto" ) { - - if ( $margin_top === "auto" ) - $margin_top = 0; - if ( $margin_bottom === "auto" ) - $margin_bottom = 0; - - $height = $diff; - - } else if ( $bottom === "auto" ) { - - if ( $margin_top === "auto" ) - $margin_top = 0; - if ( $margin_bottom === "auto" ) - $margin_bottom = 0; - - $bottom = $diff; - - } else { - - if ( $style->overflow === "visible" ) { - - // set all autos to zero - if ( $margin_top === "auto" ) - $margin_top = 0; - if ( $margin_bottom === "auto" ) - $margin_bottom = 0; - if ( $top === "auto" ) - $top = 0; - if ( $bottom === "auto" ) - $bottom = 0; - if ( $height === "auto" ) - $height = $content_height; - - } - - // FIXME: overflow hidden - } - - } - - } else { - - // Expand the height if overflow is visible - if ( $height === "auto" && $content_height > $height /* && $style->overflow === "visible" */) - $height = $content_height; - - // FIXME: this should probably be moved to a seperate function as per - // _calculate_restricted_width - - // Only handle min/max height if the height is independent of the frame's content - if ( !($style->overflow === "visible" || - ($style->overflow === "hidden" && $height === "auto")) ) { - - $min_height = $style->min_height; - $max_height = $style->max_height; - - if ( isset($cb["h"]) ) { - $min_height = $style->length_in_pt($min_height, $cb["h"]); - $max_height = $style->length_in_pt($max_height, $cb["h"]); - - } else if ( isset($cb["w"]) ) { - - if ( mb_strpos($min_height, "%") !== false ) - $min_height = 0; - else - $min_height = $style->length_in_pt($min_height, $cb["w"]); - - if ( mb_strpos($max_height, "%") !== false ) - $max_height = "none"; - else - $max_height = $style->length_in_pt($max_height, $cb["w"]); - } - - if ( $max_height !== "none" && $min_height > $max_height ) - // Swap 'em - list($max_height, $min_height) = array($min_height, $max_height); - - if ( $max_height !== "none" && $height > $max_height ) - $height = $max_height; - - if ( $height < $min_height ) - $height = $min_height; - } - - } - - return array($height, $margin_top, $margin_bottom, $top, $bottom); - - } - - /** - * Adjust the justification of each of our lines. - * http://www.w3.org/TR/CSS21/text.html#propdef-text-align - */ - protected function _text_align() { - $style = $this->_frame->get_style(); - $w = $this->_frame->get_containing_block("w"); - $width = $style->length_in_pt($style->width, $w); - switch ($style->text_align) { - - default: - case "left": - foreach ($this->_frame->get_lines() as $line) { - if ( !$line["left"] ) continue; - foreach($line["frames"] as $frame) { - if ( $frame instanceof Block_Frame_Decorator) continue; - $frame->set_position( $frame->get_position("x") + $line["left"] ); - } - } - return; - - case "right": - foreach ($this->_frame->get_lines() as $line) { - // Move each child over by $dx - $dx = $width - $line["w"] - $line["right"]; - - foreach($line["frames"] as $frame) { - // Block frames are not aligned by text-align - if ($frame instanceof Block_Frame_Decorator) continue; - - $frame->set_position( $frame->get_position("x") + $dx ); - } - } - break; - - - case "justify": - // We justify all lines except the last one - $lines = $this->_frame->get_lines(); // needs to be a variable (strict standards) - $lines = array_splice($lines, 0, -1); - - foreach($lines as $i => $line) { - if ( $line["br"] ) { - unset($lines[$i]); - } - } - - // One space character's width. Will be used to get a more accurate spacing - $space_width = Font_Metrics::get_text_width(" ", $style->font_family, $style->font_size); - - foreach ($lines as $i => $line) { - if ( $line["left"] ) { - foreach($line["frames"] as $frame) { - if ( !$frame instanceof Text_Frame_Decorator ) - continue; - - $frame->set_position( $frame->get_position("x") + $line["left"] ); - } - } - - // Only set the spacing if the line is long enough. This is really - // just an aesthetic choice ;) - //if ( $line["left"] + $line["w"] + $line["right"] > self::MIN_JUSTIFY_WIDTH * $width ) { - - // Set the spacing for each child - if ( $line["wc"] > 1 ) - $spacing = ($width - ($line["left"] + $line["w"] + $line["right"]) + $space_width) / ($line["wc"] - 1); - else - $spacing = 0; - - $dx = 0; - foreach($line["frames"] as $frame) { - if ( !$frame instanceof Text_Frame_Decorator ) - continue; - - $text = $frame->get_text(); - $spaces = mb_substr_count($text, " "); - - $char_spacing = $style->length_in_pt($style->letter_spacing); - $_spacing = $spacing + $char_spacing; - - $frame->set_position( $frame->get_position("x") + $dx ); - $frame->set_text_spacing($_spacing); - - $dx += $spaces * $_spacing; - } - - // The line (should) now occupy the entire width - $this->_frame->set_line($i, null, $width); - - //} - } - break; - - case "center": - case "centre": - foreach ($this->_frame->get_lines() as $line) { - // Centre each line by moving each frame in the line by: - $dx = ($width + $line["left"] - $line["w"] - $line["right"] ) / 2; - - foreach ($line["frames"] as $frame) { - // Block frames are not aligned by text-align - if ($frame instanceof Block_Frame_Decorator) continue; - - $frame->set_position( $frame->get_position("x") + $dx ); - } - } - break; - } - } - - /** - * Align inline children vertically. - * Aligns each child vertically after each line is reflowed - */ - function vertical_align() { - - foreach ( $this->_frame->get_lines() as $i => $line ) { - - $height = $line["h"]; - - foreach ( $line["frames"] as $frame ) { - $style = $frame->get_style(); - - if ( $style->display !== "inline" && $style->display !== "text" ) - continue; - - // FIXME? - if ( $this instanceof Table_Cell_Frame_Reflower ) - $align = $frame->get_frame()->get_style()->vertical_align; - else - $align = $frame->get_frame()->get_parent()->get_style()->vertical_align; - - $frame_h = $frame->get_margin_height(); - $y = $line["y"]; - - switch ($align) { - - case "baseline": - $y += $height - $frame_h; - break; - - case "middle": - $y += ($height + $frame_h) / 2; - break; - - case "sub": - $y += 0.2 * $height; - break; - - case "super": - $y += -0.3 * $height; - break; - - case "text-top": - case "top": // Not strictly accurate, but good enough for now - break; - - case "text-bottom": - case "bottom": - $y += $height - $frame_h; - break; - } - - $x = $frame->get_position("x"); - $frame->set_position($x, $y); - - } - } - } - - function reflow(Frame_Decorator $block = null) { - - // Check if a page break is forced - $page = $this->_frame->get_root(); - $page->check_forced_page_break($this->_frame); - - // Bail if the page is full - if ( $page->is_full() ) - return; - - // Generated content - $this->_set_content(); - - // Collapse margins if required - $this->_collapse_margins(); - - $style = $this->_frame->get_style(); - $cb = $this->_frame->get_containing_block(); - - if ( $style->counter_increment && ($increment = $style->counter_increment) !== "none" ) - $this->_frame->increment_counter($increment); - - if ( $style->position === "fixed" ) - $cb = $this->_frame->get_root()->get_containing_block(); - - // Determine the constraints imposed by this frame: calculate the width - // of the content area: - list($w, $left_margin, $right_margin, $left, $right) = $this->_calculate_restricted_width(); - - // Store the calculated properties - $style->width = $w . "pt"; - $style->margin_left = $left_margin."pt"; - $style->margin_right = $right_margin."pt"; - $style->left = $left ."pt"; - $style->right = $right . "pt"; - - // Update the position - $this->_frame->position(); - list($x, $y) = $this->_frame->get_position(); - - // Adjust the first line based on the text-indent property - $indent = $style->length_in_pt($style->text_indent, $cb["w"]); - $this->_frame->increase_line_width($indent); - - // Determine the content edge - $top = $style->length_in_pt(array($style->margin_top, - $style->padding_top, - $style->border_top_width), $cb["h"]); - - $bottom = $style->length_in_pt(array($style->border_bottom_width, - $style->margin_bottom, - $style->padding_bottom), $cb["h"]); - - $cb_x = $x + $left_margin + $style->length_in_pt(array($style->border_left_width, - $style->padding_left), $cb["w"]); - - $cb_y = $y + $top; - - $cb_h = ($cb["h"] + $cb["y"]) - $bottom - $cb_y; - - // Set the y position of the first line in this block - $this->_frame->set_current_line($cb_y); - - $floating_children = array(); - - // Set the containing blocks and reflow each child - foreach ( $this->_frame->get_children() as $child ) { - - // Bail out if the page is full - if ( $page->is_full() ) - break; - - // Floating siblings - if ( DOMPDF_ENABLE_CSS_FLOAT && count($floating_children) ) { - $offset_left = 0; - $offset_right = 0; - - // We need to reflow the child to know its initial x position - $child->set_containing_block($cb_x, $cb_y, $w, $cb_h); - $child->reflow($this->_frame); - - $current_line = $this->_frame->get_current_line(); - - foreach ( $floating_children as $child_key => $floating_child ) { - $float = $floating_child->get_style()->float; - $floating_width = $floating_child->get_margin_width(); - $floating_x = $floating_child->get_position("x"); - - if ( $float === "left" ) { - if ($current_line["left"] + $child->get_position("x") > $floating_x + $floating_width) continue; - } - else { - if ($current_line["left"] + $child->get_position("x") + $child->get_margin_width() < $w - $floating_width - $current_line["right"]) continue; - } - - // If the child is still shifted by the floating element - if ( $floating_child->get_position("y") + $floating_child->get_margin_height() > $current_line["y"] ) { - if ( $float === "left" ) - $offset_left += $floating_width; - else - $offset_right += $floating_width; - } - - // else, the floating element won't shift anymore - else { - unset($floating_children[$child_key]); - } - } - - if ( $offset_left ) - $this->_frame->set_current_line(array("left" => $offset_left)); - - if ( $offset_right ) - $this->_frame->set_current_line(array("right" => $offset_right)); - } - - $child->set_containing_block($cb_x, $cb_y, $w, $cb_h); - $child->reflow($this->_frame); - - // Don't add the child to the line if a page break has occurred - if ( $page->check_page_break($child) ) - break; - - $child_style = $child->get_style(); - - if ( DOMPDF_ENABLE_CSS_FLOAT && $child_style->float !== "none") { - $floating_children[] = $child; - - // Remove next frame's beginning whitespace - $next = $child->get_next_sibling(); - if ( $next && $next instanceof Text_Frame_Decorator) { - $next->set_text(ltrim($next->get_text())); - } - - $float_x = $cb_x; - $float_y = $this->_frame->get_current_line("y"); - - $child_style = $child->get_style(); - - switch( $child_style->float ) { - case "left": break; - case "right": - $width = $w; - $float_x += ($width - $child->get_margin_width()); - break; - } - - $child->set_position($float_x, $float_y); - } - - } - - // Determine our height - list($height, $margin_top, $margin_bottom, $top, $bottom) = $this->_calculate_restricted_height(); - $style->height = $height; - $style->margin_top = $margin_top; - $style->margin_bottom = $margin_bottom; - $style->top = $top; - $style->bottom = $bottom; - - $this->_text_align(); - $this->vertical_align(); - - if ( $block ) { - $block->add_frame_to_line($this->_frame); - } - } -} diff --git a/application/third_party/dompdf/include/block_positioner.cls.php b/application/third_party/dompdf/include/block_positioner.cls.php deleted file mode 100644 index 2f81caa0..00000000 --- a/application/third_party/dompdf/include/block_positioner.cls.php +++ /dev/null @@ -1,86 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: block_positioner.cls.php,v $ - * Created on: 2004-06-08 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: block_positioner.cls.php 356 2011-01-28 08:56:10Z fabien.menager $ */ - -/** - * Positions block frames - * - * @access private - * @package dompdf - */ -class Block_Positioner extends Positioner { - - - function __construct(Frame_Decorator $frame) { parent::__construct($frame); } - - //........................................................................ - - function position() { - $frame = $this->_frame; - $style = $frame->get_style(); - $cb = $frame->get_containing_block(); - $p = $frame->find_block_parent(); - - if ( $p ) { - $float = $style->float; - if ( !DOMPDF_ENABLE_CSS_FLOAT || !$float || $float === "none" ) { - $p->add_line(); - } - $y = $p->get_current_line("y"); - - } else - $y = $cb["y"]; - - $x = $cb["x"]; - - // Relative positionning - if ( $style->position === "relative" ) { - $top = $style->length_in_pt($style->top, $cb["h"]); - //$right = $style->length_in_pt($style->right, $cb["w"]); - //$bottom = $style->length_in_pt($style->bottom, $cb["h"]); - $left = $style->length_in_pt($style->left, $cb["w"]); - - $x += $left; - $y += $top; - } - - $frame->set_position($x, $y); - } -} diff --git a/application/third_party/dompdf/include/block_renderer.cls.php b/application/third_party/dompdf/include/block_renderer.cls.php deleted file mode 100644 index 6506b240..00000000 --- a/application/third_party/dompdf/include/block_renderer.cls.php +++ /dev/null @@ -1,211 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: block_renderer.cls.php,v $ - * Created on: 2004-06-03 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: block_renderer.cls.php 346 2011-01-09 13:23:22Z fabien.menager $ */ - -/** - * Renders block frames - * - * @access private - * @package dompdf - */ -class Block_Renderer extends Abstract_Renderer { - - //........................................................................ - - function render(Frame $frame) { - $style = $frame->get_style(); - list($x, $y, $w, $h) = $frame->get_padding_box(); - - $this->_set_opacity( $frame->get_opacity( $style->opacity ) ); - - // Draw our background, border and content - if ( ($bg = $style->background_color) !== "transparent" ) { - $this->_canvas->filled_rectangle( $x, $y, $w, $h, $bg ); - } - - if ( ($url = $style->background_image) && $url !== "none" ) - $this->_background_image($url, $x, $y, $w, $h, $style); - - $this->_render_border($frame); - $this->_render_outline($frame); - - if (DEBUG_LAYOUT && DEBUG_LAYOUT_BLOCKS) { - $this->_debug_layout($frame->get_border_box(), "red"); - if (DEBUG_LAYOUT_PADDINGBOX) { - $this->_debug_layout($frame->get_padding_box(), "red", array(0.5, 0.5)); - } - } - - if (DEBUG_LAYOUT && DEBUG_LAYOUT_LINES && $frame->get_decorator()) { - foreach ($frame->get_decorator()->get_lines() as $line) { - $frame->_debug_layout(array($line["x"], $line["y"], $line["w"], $line["h"]), "orange"); - } - } - } - - protected function _render_border(Frame_Decorator $frame, $corner_style = "bevel") { - $style = $frame->get_style(); - $bbox = $frame->get_border_box(); - $bp = $style->get_border_properties(); - - // If all the borders are "solid" with the same color and style, we'd better draw a rectangle - if ( - in_array($bp["top"]["style"], array("solid", "dashed", "dotted")) && - $bp["top"] == $bp["right"] && - $bp["right"] == $bp["bottom"] && - $bp["bottom"] == $bp["left"] - ) { - $props = $bp["top"]; - if ( $props["color"] === "transparent" || $props["width"] <= 0 ) return; - - list($x, $y, $w, $h) = $bbox; - $width = $style->length_in_pt($props["width"]); - $pattern = $this->_get_dash_pattern($props["style"], $width); - $this->_canvas->rectangle($x + $width / 2, $y + $width / 2, $w - $width, $h - $width, $props["color"], $width, $pattern); - return; - } - - $widths = array($style->length_in_pt($bp["top"]["width"]), - $style->length_in_pt($bp["right"]["width"]), - $style->length_in_pt($bp["bottom"]["width"]), - $style->length_in_pt($bp["left"]["width"])); - - foreach ($bp as $side => $props) { - list($x, $y, $w, $h) = $bbox; - - if ( !$props["style"] || - $props["style"] === "none" || - $props["width"] <= 0 || - $props["color"] == "transparent" ) - continue; - - switch($side) { - case "top": - $length = $w; - break; - - case "bottom": - $length = $w; - $y += $h; - break; - - case "left": - $length = $h; - break; - - case "right": - $length = $h; - $x += $w; - break; - default: - break; - } - $method = "_border_" . $props["style"]; - - $this->$method($x, $y, $length, $props["color"], $widths, $side, $corner_style); - } - } - - protected function _render_outline(Frame_Decorator $frame, $corner_style = "bevel") { - $style = $frame->get_style(); - - $props = array( - "width" => $style->outline_width, - "style" => $style->outline_style, - "color" => $style->outline_color, - ); - - if ( !$props["style"] || $props["style"] === "none" || $props["width"] <= 0 ) - return; - - $bbox = $frame->get_border_box(); - $offset = $style->length_in_pt($props["width"]); - $pattern = $this->_get_dash_pattern($props["style"], $offset); - - // If the outline style is "solid" we'd better draw a rectangle - if ( in_array($props["style"], array("solid", "dashed", "dotted")) ) { - $bbox[0] -= $offset / 2; - $bbox[1] -= $offset / 2; - $bbox[2] += $offset; - $bbox[3] += $offset; - - list($x, $y, $w, $h) = $bbox; - $this->_canvas->rectangle($x, $y, $w, $h, $props["color"], $offset, $pattern); - return; - } - - $bbox[0] -= $offset; - $bbox[1] -= $offset; - $bbox[2] += $offset * 2; - $bbox[3] += $offset * 2; - - $method = "_border_" . $props["style"]; - $widths = array_fill(0, 4, $props["width"]); - $sides = array("top", "right", "left", "bottom"); - - foreach ($sides as $side) { - list($x, $y, $w, $h) = $bbox; - - switch($side) { - case "top": - $length = $w; - break; - - case "bottom": - $length = $w; - $y += $h; - break; - - case "left": - $length = $h; - break; - - case "right": - $length = $h; - $x += $w; - break; - default: - break; - } - - $this->$method($x, $y, $length, $props["color"], $widths, $side, $corner_style); - } - } -} diff --git a/application/third_party/dompdf/include/cached_pdf_decorator.cls.php b/application/third_party/dompdf/include/cached_pdf_decorator.cls.php deleted file mode 100644 index 53790401..00000000 --- a/application/third_party/dompdf/include/cached_pdf_decorator.cls.php +++ /dev/null @@ -1,186 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: cached_pdf_decorator.cls.php,v $ - * Created on: 2004-07-23 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: cached_pdf_decorator.cls.php 216 2010-03-11 22:49:18Z ryan.masten $ */ - -/** - * Caching canvas implementation - * - * Each rendered page is serialized and stored in the {@link Page_Cache}. - * This is useful for static forms/pages that do not need to be re-rendered - * all the time. - * - * This class decorates normal CPDF_Adapters. It is currently completely - * experimental. - * - * @access private - * @package dompdf - */ -class Cached_PDF_Decorator extends CPDF_Adapter implements Canvas { - protected $_pdf; - protected $_cache_id; - protected $_current_page_id; - protected $_fonts; // fonts used in this document - - function __construct($cache_id, CPDF_Adapter $pdf) { - $this->_pdf = $pdf; - $this->_cache_id = $cache_id; - $this->_fonts = array(); - - $this->_current_page_id = $this->_pdf->open_object(); - } - - //........................................................................ - - function get_cpdf() { return $this->_pdf->get_cpdf(); } - - function open_object() { $this->_pdf->open_object(); } - function reopen_object() { return $this->_pdf->reopen_object(); } - - function close_object() { $this->_pdf->close_object(); } - - function add_object($object, $where = 'all') { $this->_pdf->add_object($object, $where); } - - function serialize_object($id) { $this->_pdf->serialize_object($id); } - - function reopen_serialized_object($obj) { $this->_pdf->reopen_serialized_object($obj); } - - //........................................................................ - - function get_width() { return $this->_pdf->get_width(); } - function get_height() { return $this->_pdf->get_height(); } - function get_page_number() { return $this->_pdf->get_page_number(); } - function get_page_count() { return $this->_pdf->get_page_count(); } - - function set_page_number($num) { $this->_pdf->set_page_number($num); } - function set_page_count($count) { $this->_pdf->set_page_count($count); } - - function line($x1, $y1, $x2, $y2, $color, $width, $style = array()) { - $this->_pdf->line($x1, $y1, $x2, $y2, $color, $width, $style); - } - - function rectangle($x1, $y1, $w, $h, $color, $width, $style = array()) { - $this->_pdf->rectangle($x1, $y1, $w, $h, $color, $width, $style); - } - - function filled_rectangle($x1, $y1, $w, $h, $color) { - $this->_pdf->filled_rectangle($x1, $y1, $w, $h, $color); - } - - function polygon($points, $color, $width = null, $style = array(), $fill = false) { - $this->_pdf->polygon($points, $color, $width, $style, $fill); - } - - function circle($x, $y, $r1, $color, $width = null, $style = null, $fill = false) { - $this->_pdf->circle($x, $y, $r1, $color, $width, $style, $fill); - } - - function image($img_url, $x, $y, $w = null, $h = null) { - $this->_pdf->image($img_url, $x, $y, $w, $h); - } - - function text($x, $y, $text, $font, $size, $color = array(0,0,0), $adjust = 0, $angle = 0) { - $this->_fonts[$font] = true; - $this->_pdf->text($x, $y, $text, $font, $size, $color, $adjust, $angle); - } - - function page_text($x, $y, $text, $font, $size, $color = array(0,0,0), $adjust = 0, $angle = 0) { - - // We want to remove this from cached pages since it may not be correct - $this->_pdf->close_object(); - $this->_pdf->page_text($x, $y, $text, $font, $size, $color, $adjust, $angle); - $this->_pdf->reopen_object($this->_current_page_id); - } - - function page_script($script, $type = 'text/php') { - - // We want to remove this from cached pages since it may not be correct - $this->_pdf->close_object(); - $this->_pdf->page_script($script, $type); - $this->_pdf->reopen_object($this->_current_page_id); - } - - function new_page() { - $this->_pdf->close_object(); - - // Add the object to the current page - $this->_pdf->add_object($this->_current_page_id, "add"); - $this->_pdf->new_page(); - - Page_Cache::store_page($this->_cache_id, - $this->_pdf->get_page_number() - 1, - $this->_pdf->serialize_object($this->_current_page_id)); - - $this->_current_page_id = $this->_pdf->open_object(); - return $this->_current_page_id; - } - - function stream($filename) { - // Store the last page in the page cache - if ( !is_null($this->_current_page_id) ) { - $this->_pdf->close_object(); - $this->_pdf->add_object($this->_current_page_id, "add"); - Page_Cache::store_page($this->_cache_id, - $this->_pdf->get_page_number(), - $this->_pdf->serialize_object($this->_current_page_id)); - Page_Cache::store_fonts($this->_cache_id, $this->_fonts); - $this->_current_page_id = null; - } - - $this->_pdf->stream($filename); - - } - - function &output() { - // Store the last page in the page cache - if ( !is_null($this->_current_page_id) ) { - $this->_pdf->close_object(); - $this->_pdf->add_object($this->_current_page_id, "add"); - Page_Cache::store_page($this->_cache_id, - $this->_pdf->get_page_number(), - $this->_pdf->serialize_object($this->_current_page_id)); - $this->_current_page_id = null; - } - - return $this->_pdf->output(); - } - - function get_messages() { return $this->_pdf->get_messages(); } - -} diff --git a/application/third_party/dompdf/include/canvas.cls.php b/application/third_party/dompdf/include/canvas.cls.php deleted file mode 100644 index cbc0d9c9..00000000 --- a/application/third_party/dompdf/include/canvas.cls.php +++ /dev/null @@ -1,328 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: canvas.cls.php,v $ - * Created on: 2004-06-06 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: canvas.cls.php 357 2011-01-30 20:56:46Z fabien.menager $ */ - -/** - * Main rendering interface - * - * Currently {@link CPDF_Adapter}, {@link PDFLib_Adapter}, {@link TCPDF_Adapter}, and {@link GD_Adapter} - * implement this interface. - * - * Implementations should measure x and y increasing to the left and down, - * respectively, with the origin in the top left corner. Implementations - * are free to use a unit other than points for length, but I can't - * guarantee that the results will look any good. - * - * @package dompdf - */ -interface Canvas { - - /** - * Returns the current page number - * - * @return int - */ - function get_page_number(); - - /** - * Returns the total number of pages - * - * @return int - */ - function get_page_count(); - - /** - * Sets the total number of pages - * - * @param int $count - */ - function set_page_count($count); - - /** - * Draws a line from x1,y1 to x2,y2 - * - * See {@link Style::munge_colour()} for the format of the colour array. - * See {@link Cpdf::setLineStyle()} for a description of the format of the - * $style parameter (aka dash). - * - * @param float $x1 - * @param float $y1 - * @param float $x2 - * @param float $y2 - * @param array $color - * @param float $width - * @param array $style - */ - function line($x1, $y1, $x2, $y2, $color, $width, $style = null); - - /** - * Draws a rectangle at x1,y1 with width w and height h - * - * See {@link Style::munge_colour()} for the format of the colour array. - * See {@link Cpdf::setLineStyle()} for a description of the $style - * parameter (aka dash) - * - * @param float $x1 - * @param float $y1 - * @param float $w - * @param float $h - * @param array $color - * @param float $width - * @param array $style - */ - function rectangle($x1, $y1, $w, $h, $color, $width, $style = null); - - /** - * Draws a filled rectangle at x1,y1 with width w and height h - * - * See {@link Style::munge_colour()} for the format of the colour array. - * - * @param float $x1 - * @param float $y1 - * @param float $w - * @param float $h - * @param array $color - */ - function filled_rectangle($x1, $y1, $w, $h, $color); - - /** - * Starts a clipping rectangle at x1,y1 with width w and height h - * - * @param float $x1 - * @param float $y1 - * @param float $w - * @param float $h - */ - function clipping_rectangle($x1, $y1, $w, $h); - - /** - * Ends the last clipping shape - */ - function clipping_end(); - - /** - * Save current state - */ - function save(); - - /** - * Restore last state - */ - function restore(); - - /** - * Rotate - */ - function rotate($angle, $x, $y); - - /** - * Skew - */ - function skew($angle_x, $angle_y, $x, $y); - - /** - * Scale - */ - function scale($s_x, $s_y, $x, $y); - - /** - * Translate - */ - function translate($t_x, $t_y); - - /** - * Transform - */ - function transform($a, $b, $c, $d, $e, $f); - - /** - * Draws a polygon - * - * The polygon is formed by joining all the points stored in the $points - * array. $points has the following structure: - * <code> - * array(0 => x1, - * 1 => y1, - * 2 => x2, - * 3 => y2, - * ... - * ); - * </code> - * - * See {@link Style::munge_colour()} for the format of the colour array. - * See {@link Cpdf::setLineStyle()} for a description of the $style - * parameter (aka dash) - * - * @param array $points - * @param array $color - * @param float $width - * @param array $style - * @param bool $fill Fills the polygon if true - */ - function polygon($points, $color, $width = null, $style = null, $fill = false); - - /** - * Draws a circle at $x,$y with radius $r - * - * See {@link Style::munge_colour()} for the format of the colour array. - * See {@link Cpdf::setLineStyle()} for a description of the $style - * parameter (aka dash) - * - * @param float $x - * @param float $y - * @param float $r - * @param array $color - * @param float $width - * @param array $style - * @param bool $fill Fills the circle if true - */ - function circle($x, $y, $r, $color, $width = null, $style = null, $fill = false); - - /** - * Add an image to the pdf. - * - * The image is placed at the specified x and y coordinates with the - * given width and height. - * - * @param string $img_url the path to the image - * @param string $img_type the type (e.g. extension) of the image - * @param float $x x position - * @param float $y y position - * @param int $w width (in pixels) - * @param int $h height (in pixels) - */ - function image($img_url, $img_type, $x, $y, $w, $h); - - /** - * Writes text at the specified x and y coordinates - * - * See {@link Style::munge_colour()} for the format of the colour array. - * - * @param float $x - * @param float $y - * @param string $text the text to write - * @param string $font the font file to use - * @param float $size the font size, in points - * @param array $color - * @param float $word_space word spacing adjustment - * @param float $char_space whar spacing adjustment - * @param float $angle angle - */ - function text($x, $y, $text, $font, $size, $color = array(0,0,0), $word_space = 0, $char_space = 0, $angle = 0); - - /** - * Add a named destination (similar to <a name="foo">...</a> in html) - * - * @param string $anchorname The name of the named destination - */ - function add_named_dest($anchorname); - - /** - * Add a link to the pdf - * - * @param string $url The url to link to - * @param float $x The x position of the link - * @param float $y The y position of the link - * @param float $width The width of the link - * @param float $height The height of the link - */ - function add_link($url, $x, $y, $width, $height); - - /** - * Add meta information to the pdf - * - * @param string $label label of the value (Creator, Producer, etc.) - * @param string $value the text to set - */ - function add_info($name, $value); - - /** - * Calculates text size, in points - * - * @param string $text the text to be sized - * @param string $font the desired font - * @param float $size the desired font size - * @param float $spacing word spacing, if any - * @return float - */ - function get_text_width($text, $font, $size, $word_spacing = 0, $char_spacing = 0); - - /** - * Calculates font height, in points - * - * @param string $font - * @param float $size - * @return float - */ - function get_font_height($font, $size); - - /** - * Sets the opacity - * - * @param float $opacity - * @param string $mode - * @return float - */ - function set_opacity($opacity, $mode = "Normal"); - - /** - * Starts a new page - * - * Subsequent drawing operations will appear on the new page. - */ - function new_page(); - - /** - * Streams the PDF directly to the browser - * - * @param string $filename the name of the PDF file - * @param array $options associative array, 'Attachment' => 0 or 1, 'compress' => 1 or 0 - */ - function stream($filename, $options = null); - - /** - * Returns the PDF as a string - * - * @param array $options associative array: 'compress' => 1 or 0 - * @return string - */ - function output($options = null); - -} diff --git a/application/third_party/dompdf/include/canvas_factory.cls.php b/application/third_party/dompdf/include/canvas_factory.cls.php deleted file mode 100644 index 4dc4070a..00000000 --- a/application/third_party/dompdf/include/canvas_factory.cls.php +++ /dev/null @@ -1,83 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: canvas_factory.cls.php,v $ - * Created on: 2004-06-02 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: canvas_factory.cls.php 216 2010-03-11 22:49:18Z ryan.masten $ */ - -/** - * Create canvas instances - * - * The canvas factory creates canvas instances based on the - * availability of rendering backends and config options. - * - * @package dompdf - */ -class Canvas_Factory { - - /** - * Constructor is private: this is a static class - */ - private function __construct() { } - - static function get_instance($paper = null, $orientation = null, $class = null) { - - $backend = strtolower(DOMPDF_PDF_BACKEND); - - if ( isset($class) && class_exists($class, false) ) - $class .= "_Adapter"; - - else if ( (DOMPDF_PDF_BACKEND === "auto" || $backend === "pdflib" ) && - class_exists("PDFLib", false) ) - $class = "PDFLib_Adapter"; - - else if ( (DOMPDF_PDF_BACKEND === "auto" || $backend === "cpdf") ) - $class = "CPDF_Adapter"; - - else if ( ( $backend === "tcpdf") ) - $class = "TCPDF_Adapter"; - - else if ( $backend === "gd" ) - $class = "GD_Adapter"; - - else - $class = "CPDF_Adapter"; - - return new $class($paper, $orientation); - - } -} diff --git a/application/third_party/dompdf/include/cellmap.cls.php b/application/third_party/dompdf/include/cellmap.cls.php deleted file mode 100644 index 03f9c03a..00000000 --- a/application/third_party/dompdf/include/cellmap.cls.php +++ /dev/null @@ -1,730 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: cellmap.cls.php,v $ - * Created on: 2004-07-28 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: cellmap.cls.php 283 2010-07-19 17:57:40Z fabien.menager $ */ - -/** - * Maps table cells to the table grid. - * - * This class resolves borders in tables with collapsed borders and helps - * place row & column spanned table cells. - * - * @access private - * @package dompdf - */ -class Cellmap { - - /** - * Border style weight lookup for collapsed border resolution. - * - * @var array - */ - static protected $_BORDER_STYLE_SCORE = array("inset" => 1, - "groove" => 2, - "outset" => 3, - "ridge" => 4, - "dotted" => 5, - "dashed" => 6, - "solid" => 7, - "double" => 8, - "none" => 0); - - /** - * The table object this cellmap is attached to. - * - * @var Table_Frame_Decorator - */ - protected $_table; - - /** - * The total number of rows in the table - * - * @var int - */ - protected $_num_rows; - - /** - * The total number of columns in the table - * - * @var int - */ - protected $_num_cols; - - /** - * 2D array mapping <row,column> to frames - * - * @var array - */ - protected $_cells; - - /** - * 1D array of column dimensions - * - * @var array - */ - protected $_columns; - - /** - * 1D array of row dimensions - * - * @var array - */ - protected $_rows; - - /** - * 2D array of border specs - * - * @var array - */ - protected $_borders; - - /** - * 1D Array mapping frames to (multiple) <row, col> pairs, keyed on - * frame_id. - * - * @var array - */ - protected $_frames; - - /** - * Current column when adding cells, 0-based - * - * @var int - */ - private $__col; - - /** - * Current row when adding cells, 0-based - * - * @var int - */ - private $__row; - - //........................................................................ - - function __construct(Table_Frame_Decorator $table) { - $this->_table = $table; - $this->reset(); - } - - function __destruct() { - clear_object($this); - } - //........................................................................ - - function reset() { - $this->_num_rows = 0; - $this->_num_cols = 0; - - $this->_cells = array(); - $this->_frames = array(); - - $this->_columns = array(); - $this->_rows = array(); - - $this->_borders = array(); - - $this->__col = $this->__row = 0; - } - - //........................................................................ - - function get_num_rows() { return $this->_num_rows; } - function get_num_cols() { return $this->_num_cols; } - - function &get_columns() { - return $this->_columns; - } - - function &get_column($i) { - if ( !isset($this->_columns[$i]) ) - $this->_columns[$i] = array("x" => 0, - "min-width" => 0, - "max-width" => 0, - "used-width" => null, - "absolute" => 0, - "percent" => 0, - "auto" => true); - - return $this->_columns[$i]; - } - - function &get_rows() { - return $this->_rows; - } - - function &get_row($j) { - if ( !isset($this->_rows[$j]) ) - $this->_rows[$j] = array("y" => 0, - "first-column" => 0, - "height" => null); - return $this->_rows[$j]; - } - - function get_border($i, $j, $h_v, $prop = null) { - if ( !isset($this->_borders[$i][$j][$h_v]) ) - $this->_borders[$i][$j][$h_v] = array("width" => 0, - "style" => "solid", - "color" => "black"); - if ( isset($prop) ) - return $this->_borders[$i][$j][$h_v][$prop]; - - return $this->_borders[$i][$j][$h_v]; - } - - function get_border_properties($i, $j) { - - $left = $this->get_border($i, $j, "vertical"); - $right = $this->get_border($i, $j+1, "vertical"); - $top = $this->get_border($i, $j, "horizontal"); - $bottom = $this->get_border($i+1, $j, "horizontal"); - - return compact("top", "bottom", "left", "right"); - } - - //........................................................................ - - function get_spanned_cells($frame) { - $key = $frame->get_id(); - - if ( !isset($this->_frames[$key]) ) { - throw new DOMPDF_Internal_Exception("Frame not found in cellmap"); - } - - return $this->_frames[$key]; - - } - - function frame_exists_in_cellmap($frame) { - $key = $frame->get_id(); - return isset($this->_frames[$key]); - } - - function get_frame_position($frame) { - global $_dompdf_warnings; - - $key = $frame->get_id(); - - if ( !isset($this->_frames[$key]) ) { - throw new DOMPDF_Internal_Exception("Frame not found in cellmap"); - } - - $col = $this->_frames[$key]["columns"][0]; - $row = $this->_frames[$key]["rows"][0]; - - if ( !isset($this->_columns[$col])) { - $_dompdf_warnings[] = "Frame not found in columns array. Check your table layout for missing or extra TDs."; - $x = 0; - } else - $x = $this->_columns[$col]["x"]; - - if ( !isset($this->_rows[$row])) { - $_dompdf_warnings[] = "Frame not found in row array. Check your table layout for missing or extra TDs."; - $y = 0; - } else - $y = $this->_rows[$row]["y"]; - - return array($x, $y, "x" => $x, "y" => $y); - } - - function get_frame_width($frame) { - $key = $frame->get_id(); - - if ( !isset($this->_frames[$key]) ) { - throw new DOMPDF_Internal_Exception("Frame not found in cellmap"); - } - - $cols = $this->_frames[$key]["columns"]; - $w = 0; - foreach ($cols as $i) - $w += $this->_columns[$i]["used-width"]; - - return $w; - - } - - function get_frame_height($frame) { - $key = $frame->get_id(); - - if ( !isset($this->_frames[$key]) ) - throw new DOMPDF_Internal_Exception("Frame not found in cellmap"); - - $rows = $this->_frames[$key]["rows"]; - $h = 0; - foreach ($rows as $i) { - if ( !isset($this->_rows[$i]) ) { - throw new Exception("foo"); - } - $h += $this->_rows[$i]["height"]; - } - return $h; - - } - - - //........................................................................ - - function set_column_width($j, $width) { - $col =& $this->get_column($j); - $col["used-width"] = $width; - $next_col =& $this->get_column($j+1); - $next_col["x"] = $next_col["x"] + $width; - } - - function set_row_height($i, $height) { - $row =& $this->get_row($i); - if ( $height <= $row["height"] ) - return; - - $row["height"] = $height; - $next_row =& $this->get_row($i+1); - $next_row["y"] = $row["y"] + $height; - - } - - //........................................................................ - - - protected function _resolve_border($i, $j, $h_v, $border_spec) { - $n_width = $border_spec["width"]; - $n_style = $border_spec["style"]; - $n_color = $border_spec["color"]; - - if ( !isset($this->_borders[$i][$j][$h_v]) ) { - $this->_borders[$i][$j][$h_v] = $border_spec; - return $this->_borders[$i][$j][$h_v]["width"]; - } - - $border = &$this->_borders[$i][$j][$h_v]; - - $o_width = $border["width"]; - $o_style = $border["style"]; - $o_color = $border["color"]; - - if ( ($n_style === "hidden" || - $n_width > $o_width || - $o_style === "none") - - or - - ($o_width == $n_width && - in_array($n_style, self::$_BORDER_STYLE_SCORE) && - self::$_BORDER_STYLE_SCORE[ $n_style ] > self::$_BORDER_STYLE_SCORE[ $o_style ]) ) - $border = $border_spec; - - return $border["width"]; - } - - //........................................................................ - - function add_frame(Frame $frame) { - - $style = $frame->get_style(); - $display = $style->display; - - $collapse = $this->_table->get_style()->border_collapse == "collapse"; - - // Recursively add the frames within tables, table-row-groups and table-rows - if ( $display === "table-row" || - $display === "table" || - $display === "inline-table" || - in_array($display, Table_Frame_Decorator::$ROW_GROUPS) ) { - - $start_row = $this->__row; - foreach ( $frame->get_children() as $child ) - $this->add_frame( $child ); - - if ( $display === "table-row" ) - $this->add_row(); - - $num_rows = $this->__row - $start_row - 1; - $key = $frame->get_id(); - - // Row groups always span across the entire table - $this->_frames[$key]["columns"] = range(0,max(0,$this->_num_cols-1)); - $this->_frames[$key]["rows"] = range($start_row, max(0, $this->__row - 1)); - $this->_frames[$key]["frame"] = $frame; - - if ( $display !== "table-row" && $collapse ) { - - $bp = $style->get_border_properties(); - - // Resolve the borders - for ( $i = 0; $i < $num_rows+1; $i++) { - $this->_resolve_border($start_row + $i, 0, "vertical", $bp["left"]); - $this->_resolve_border($start_row + $i, $this->_num_cols, "vertical", $bp["right"]); - } - - for ( $j = 0; $j < $this->_num_cols; $j++) { - $this->_resolve_border($start_row, $j, "horizontal", $bp["top"]); - $this->_resolve_border($this->__row, $j, "horizontal", $bp["bottom"]); - } - } - - - return; - } - - $node = $frame->get_node(); - - // Determine where this cell is going - $colspan = $node->getAttribute("colspan"); - $rowspan = $node->getAttribute("rowspan"); - - if ( !$colspan ) { - $colspan = 1; - $node->setAttribute("colspan",1); - } - - if ( !$rowspan ) { - $rowspan = 1; - $node->setAttribute("rowspan",1); - } - $key = $frame->get_id(); - - $bp = $style->get_border_properties(); - - - // Add the frame to the cellmap - $max_left = $max_right = 0; - - // Find the next available column (fix by Ciro Mondueri) - $ac = $this->__col; - while ( isset($this->_cells[$this->__row][$ac]) ) - $ac++; - $this->__col = $ac; - - // Rows: - for ( $i = 0; $i < $rowspan; $i++ ) { - $row = $this->__row + $i; - - $this->_frames[$key]["rows"][] = $row; - - for ( $j = 0; $j < $colspan; $j++) - $this->_cells[$row][$this->__col + $j] = $frame; - - if ( $collapse ) { - // Resolve vertical borders - $max_left = max($max_left, $this->_resolve_border($row, $this->__col, "vertical", $bp["left"])); - $max_right = max($max_right, $this->_resolve_border($row, $this->__col + $colspan, "vertical", $bp["right"])); - } - } - - $max_top = $max_bottom = 0; - - // Columns: - for ( $j = 0; $j < $colspan; $j++ ) { - $col = $this->__col + $j; - $this->_frames[$key]["columns"][] = $col; - - if ( $collapse ) { - // Resolve horizontal borders - $max_top = max($max_top, $this->_resolve_border($this->__row, $col, "horizontal", $bp["top"])); - $max_bottom = max($max_bottom, $this->_resolve_border($this->__row + $rowspan, $col, "horizontal", $bp["bottom"])); - } - } - - $this->_frames[$key]["frame"] = $frame; - - // Handle seperated border model - if ( !$collapse ) { - list($h, $v) = $this->_table->get_style()->border_spacing; - - // Border spacing is effectively a margin between cells - $v = $style->length_in_pt($v) / 2; - $h = $style->length_in_pt($h) / 2; - $style->margin = "$v $h"; - - // The additional 1/2 width gets added to the table proper - - } else { - - // Drop the frame's actual border - $style->border_left_width = $max_left / 2; - $style->border_right_width = $max_right / 2; - $style->border_top_width = $max_top / 2; - $style->border_bottom_width = $max_bottom / 2; - $style->margin = "none"; - } - - // Resolve the frame's width - list($frame_min, $frame_max) = $frame->get_min_max_width(); - - $width = $style->width; - - if ( is_percent($width) ) { - $var = "percent"; - $val = (float)rtrim($width, "% ") / $colspan; - - } else if ( $width !== "auto" ) { - $var = "absolute"; - $val = $style->length_in_pt($frame_min) / $colspan; - } - - $min = 0; - $max = 0; - for ( $cs = 0; $cs < $colspan; $cs++ ) { - - // Resolve the frame's width(s) with other cells - $col =& $this->get_column( $this->__col + $cs ); - - // Note: $var is either 'percent' or 'absolute'. We compare the - // requested percentage or absolute values with the existing widths - // and adjust accordingly. - if ( isset($var) && $val > $col[$var] ) { - $col[$var] = $val; - $col["auto"] = false; - } - - $min += $col["min-width"]; - $max += $col["max-width"]; - } - - - if ( $frame_min > $min ) { - // The frame needs more space. Expand each sub-column - $inc = ($frame_min - $min) / $colspan; - for ($c = 0; $c < $colspan; $c++) { - $col =& $this->get_column($this->__col + $c); - $col["min-width"] += $inc; - } - } - - if ( $frame_max > $max ) { - $inc = ($frame_max - $max) / $colspan; - for ($c = 0; $c < $colspan; $c++) { - $col =& $this->get_column($this->__col + $c); - $col["max-width"] += $inc; - } - } - - $this->__col += $colspan; - if ( $this->__col > $this->_num_cols ) - $this->_num_cols = $this->__col; - - } - - //........................................................................ - - function add_row() { - - $this->__row++; - $this->_num_rows++; - - // Find the next available column - $i = 0; - while ( isset($this->_cells[$this->__row][$i]) ) - $i++; - - $this->__col = $i; - - } - - //........................................................................ - - /** - * Remove a row from the cellmap. - * - * @param Frame - */ - function remove_row(Frame $row) { - - $key = $row->get_id(); - if ( !isset($this->_frames[$key]) ) - return; // Presumably this row has alredy been removed - - $this->_row = $this->_num_rows--; - - $rows = $this->_frames[$key]["rows"]; - $columns = $this->_frames[$key]["columns"]; - - // Remove all frames from this row - foreach ( $rows as $r ) { - foreach ( $columns as $c ) { - if ( isset($this->_cells[$r][$c]) ) { - $id = $this->_cells[$r][$c]->get_id(); - - $this->_frames[$id] = null; - unset($this->_frames[$id]); - - $this->_cells[$r][$c] = null; - unset($this->_cells[$r][$c]); - } - } - $this->_rows[$r] = null; - unset($this->_rows[$r]); - } - - $this->_frames[$key] = null; - unset($this->_frames[$key]); - - } - - /** - * Remove a row group from the cellmap. - * - * @param Frame $group The group to remove - */ - function remove_row_group(Frame $group) { - - $key = $group->get_id(); - if ( !isset($this->_frames[$key]) ) - return; // Presumably this row has alredy been removed - - $iter = $group->get_first_child(); - while ($iter) { - $this->remove_row($iter); - $iter = $iter->get_next_sibling(); - } - - $this->_frames[$key] = null; - unset($this->_frames[$key]); - } - - /** - * Update a row group after rows have been removed - * - * @param Frame $group The group to update - * @param Frame $last_row The last row in the row group - */ - function update_row_group(Frame $group, Frame $last_row) { - - $g_key = $group->get_id(); - $r_key = $last_row->get_id(); - - $r_rows = $this->_frames[$r_key]["rows"]; - $this->_frames[$g_key]["rows"] = range( $this->_frames[$g_key]["rows"][0], end($r_rows) ); - - } - - //........................................................................ - - function assign_x_positions() { - // Pre-condition: widths must be resolved and assigned to columns and - // column[0]["x"] must be set. - - $x = $this->_columns[0]["x"]; - foreach ( array_keys($this->_columns) as $j ) { - $this->_columns[$j]["x"] = $x; - $x += $this->_columns[$j]["used-width"]; - - } - - } - - function assign_frame_heights() { - // Pre-condition: widths and heights of each column & row must be - // calcluated - - foreach ( $this->_frames as $arr ) { - $frame = $arr["frame"]; - - $h = 0; - foreach( $arr["rows"] as $row ) { - if ( !isset($this->_rows[$row]) ) - // The row has been removed because of a page split, so skip it. - continue; - $h += $this->_rows[$row]["height"]; - } - - if ( $frame instanceof Table_Cell_Frame_Decorator ) - $frame->set_cell_height($h); - else - $frame->get_style()->height = $h; - } - - } - - //........................................................................ - - /** - * Re-adjust frame height if the table height is larger than its content - */ - function set_frame_heights($table_height, $content_height) { - - - // Distribute the increased height proportionally amongst each row - foreach ( $this->_frames as $arr ) { - $frame = $arr["frame"]; - - $h = 0; - foreach ($arr["rows"] as $row ) { - if ( !isset($this->_rows[$row]) ) - continue; - - $h += $this->_rows[$row]["height"]; - } - - if ( $content_height > 0 ) - $new_height = ($h / $content_height) * $table_height; - else - $new_height = 0; - - if ( $frame instanceof Table_Cell_Frame_Decorator ) - $frame->set_cell_height($new_height); - else - $frame->get_style()->height = $new_height; - } - - } - - //........................................................................ - - // Used for debugging: - function __toString() { - $str = ""; - $str .= "Columns:<br/>"; - $str .= pre_r($this->_columns, true); - $str .= "Rows:<br/>"; - $str .= pre_r($this->_rows, true); - - $str .= "Frames:<br/>"; - $arr = array(); - foreach ( $this->_frames as $key => $val ) - $arr[$key] = array("columns" => $val["columns"], "rows" => $val["rows"]); - - $str .= pre_r($arr, true); - - if ( php_sapi_name() == "cli" ) - $str = strip_tags(str_replace(array("<br/>","<b>","</b>"), - array("\n",chr(27)."[01;33m", chr(27)."[0m"), - $str)); - return $str; - } -} diff --git a/application/third_party/dompdf/include/cpdf_adapter.cls.php b/application/third_party/dompdf/include/cpdf_adapter.cls.php deleted file mode 100644 index 8598df52..00000000 --- a/application/third_party/dompdf/include/cpdf_adapter.cls.php +++ /dev/null @@ -1,919 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: cpdf_adapter.cls.php,v $ - * Created on: 2004-08-04 - * Modified on: 2008-01-05 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * Portions copyright (c) 2008 - Orion Richardson <orionr@yahoo.com> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @contributor Orion Richardson <orionr@yahoo.com> - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @package dompdf - * - * Changes - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @version 0.5.1.htischer.20090507 - * - On gif to png conversion tmp file creation, clarify tmp name and add to tmp deletion list only on success - * - On gif to png conversion, when available add direct from gd without tmp file, skip image load if already cached. - * to safe CPU time and memory - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @version dompdf_trunk_with_helmut_mods.20090524 - * - Pass temp and fontcache folders to Cpdf, to making Cpdf independent from dompdf - * @version dompdf_trunk_with_helmut_mods.20090528 - * - fix text position according to glyph baseline to match background rectangle - */ - -/* $Id: cpdf_adapter.cls.php 356 2011-01-28 08:56:10Z fabien.menager $ */ - -// FIXME: Need to sanity check inputs to this class -require_once(DOMPDF_LIB_DIR . "/class.pdf.php"); - -/** - * PDF rendering interface - * - * CPDF_Adapter provides a simple stateless interface to the stateful one - * provided by the Cpdf class. - * - * Unless otherwise mentioned, all dimensions are in points (1/72 in). The - * coordinate origin is in the top left corner, and y values increase - * downwards. - * - * See {@link http://www.ros.co.nz/pdf/} for more complete documentation - * on the underlying {@link Cpdf} class. - * - * @package dompdf - */ -class CPDF_Adapter implements Canvas { - - /** - * Dimensions of paper sizes in points - * - * @var array; - */ - static $PAPER_SIZES = array( - "4a0" => array(0,0,4767.87,6740.79), - "2a0" => array(0,0,3370.39,4767.87), - "a0" => array(0,0,2383.94,3370.39), - "a1" => array(0,0,1683.78,2383.94), - "a2" => array(0,0,1190.55,1683.78), - "a3" => array(0,0,841.89,1190.55), - "a4" => array(0,0,595.28,841.89), - "a5" => array(0,0,419.53,595.28), - "a6" => array(0,0,297.64,419.53), - "a7" => array(0,0,209.76,297.64), - "a8" => array(0,0,147.40,209.76), - "a9" => array(0,0,104.88,147.40), - "a10" => array(0,0,73.70,104.88), - "b0" => array(0,0,2834.65,4008.19), - "b1" => array(0,0,2004.09,2834.65), - "b2" => array(0,0,1417.32,2004.09), - "b3" => array(0,0,1000.63,1417.32), - "b4" => array(0,0,708.66,1000.63), - "b5" => array(0,0,498.90,708.66), - "b6" => array(0,0,354.33,498.90), - "b7" => array(0,0,249.45,354.33), - "b8" => array(0,0,175.75,249.45), - "b9" => array(0,0,124.72,175.75), - "b10" => array(0,0,87.87,124.72), - "c0" => array(0,0,2599.37,3676.54), - "c1" => array(0,0,1836.85,2599.37), - "c2" => array(0,0,1298.27,1836.85), - "c3" => array(0,0,918.43,1298.27), - "c4" => array(0,0,649.13,918.43), - "c5" => array(0,0,459.21,649.13), - "c6" => array(0,0,323.15,459.21), - "c7" => array(0,0,229.61,323.15), - "c8" => array(0,0,161.57,229.61), - "c9" => array(0,0,113.39,161.57), - "c10" => array(0,0,79.37,113.39), - "ra0" => array(0,0,2437.80,3458.27), - "ra1" => array(0,0,1729.13,2437.80), - "ra2" => array(0,0,1218.90,1729.13), - "ra3" => array(0,0,864.57,1218.90), - "ra4" => array(0,0,609.45,864.57), - "sra0" => array(0,0,2551.18,3628.35), - "sra1" => array(0,0,1814.17,2551.18), - "sra2" => array(0,0,1275.59,1814.17), - "sra3" => array(0,0,907.09,1275.59), - "sra4" => array(0,0,637.80,907.09), - "letter" => array(0,0,612.00,792.00), - "legal" => array(0,0,612.00,1008.00), - "ledger" => array(0,0,1224.00, 792.00), - "tabloid" => array(0,0,792.00, 1224.00), - "executive" => array(0,0,521.86,756.00), - "folio" => array(0,0,612.00,936.00), - "commercial #10 envelope" => array(0,0,684,297), - "catalog #10 1/2 envelope" => array(0,0,648,864), - "8.5x11" => array(0,0,612.00,792.00), - "8.5x14" => array(0,0,612.00,1008.0), - "11x17" => array(0,0,792.00, 1224.00), - ); - - - /** - * Instance of Cpdf class - * - * @var Cpdf - */ - private $_pdf; - - /** - * PDF width, in points - * - * @var float - */ - private $_width; - - /** - * PDF height, in points - * - * @var float; - */ - private $_height; - - /** - * Current page number - * - * @var int - */ - private $_page_number; - - /** - * Total number of pages - * - * @var int - */ - private $_page_count; - - /** - * Text to display on every page - * - * @var array - */ - private $_page_text; - - /** - * Array of pages for accesing after rendering is initially complete - * - * @var array - */ - private $_pages; - - /** - * Array of temporary cached images to be deleted when processing is complete - * - * @var array - */ - private $_image_cache; - - /** - * Class constructor - * - * @param mixed $paper The size of paper to use in this PDF ({@link CPDF_Adapter::$PAPER_SIZES}) - * @param string $orientation The orienation of the document (either 'landscape' or 'portrait') - */ - function __construct($paper = "letter", $orientation = "portrait") { - - if ( is_array($paper) ) - $size = $paper; - else if ( isset(self::$PAPER_SIZES[mb_strtolower($paper)]) ) - $size = self::$PAPER_SIZES[mb_strtolower($paper)]; - else - $size = self::$PAPER_SIZES["letter"]; - - if ( mb_strtolower($orientation) === "landscape" ) { - list($size[2], $size[3]) = array($size[3], $size[2]); - } - - $this->_pdf = new Cpdf($size, DOMPDF_UNICODE_ENABLED, DOMPDF_FONT_CACHE, DOMPDF_TEMP_DIR); - $this->_pdf->addInfo("Creator", "DOMPDF"); - $time = substr_replace(date('YmdHisO'), '\'', -2, 0).'\''; - $this->_pdf->addInfo("CreationDate", "D:$time"); - $this->_pdf->addInfo("ModDate", "D:$time"); - - $this->_width = $size[2] - $size[0]; - $this->_height= $size[3] - $size[1]; - $this->_pdf->openHere('Fit'); - - $this->_page_number = $this->_page_count = 1; - $this->_page_text = array(); - - $this->_pages = array($this->_pdf->getFirstPageId()); - - $this->_image_cache = array(); - } - - /** - * Class destructor - * - * Deletes all temporary image files - */ - function __destruct() { - foreach ($this->_image_cache as $img) { - //debugpng - if (DEBUGPNG) print '[__destruct unlink '.$img.']'; - if (!DEBUGKEEPTEMP) - unlink($img); - } - clear_object($this); - } - - /** - * Returns the Cpdf instance - * - * @return Cpdf - */ - function get_cpdf() { return $this->_pdf; } - - /** - * Add meta information to the PDF - * - * @param string $label label of the value (Creator, Producer, etc.) - * @param string $value the text to set - */ - function add_info($label, $value) { - $this->_pdf->addInfo($label, $value); - } - - /** - * Opens a new 'object' - * - * While an object is open, all drawing actions are recored in the object, - * as opposed to being drawn on the current page. Objects can be added - * later to a specific page or to several pages. - * - * The return value is an integer ID for the new object. - * - * @see CPDF_Adapter::close_object() - * @see CPDF_Adapter::add_object() - * - * @return int - */ - function open_object() { - $ret = $this->_pdf->openObject(); - $this->_pdf->saveState(); - return $ret; - } - - /** - * Reopens an existing 'object' - * - * @see CPDF_Adapter::open_object() - * @param int $object the ID of a previously opened object - */ - function reopen_object($object) { - $this->_pdf->reopenObject($object); - $this->_pdf->saveState(); - } - - /** - * Closes the current 'object' - * - * @see CPDF_Adapter::open_object() - */ - function close_object() { - $this->_pdf->restoreState(); - $this->_pdf->closeObject(); - } - - /** - * Adds a specified 'object' to the document - * - * $object int specifying an object created with {@link - * CPDF_Adapter::open_object()}. $where can be one of: - * - 'add' add to current page only - * - 'all' add to every page from the current one onwards - * - 'odd' add to all odd numbered pages from now on - * - 'even' add to all even numbered pages from now on - * - 'next' add the object to the next page only - * - 'nextodd' add to all odd numbered pages from the next one - * - 'nexteven' add to all even numbered pages from the next one - * - * @see Cpdf::addObject() - * - * @param int $object - * @param string $where - */ - function add_object($object, $where = 'all') { - $this->_pdf->addObject($object, $where); - } - - /** - * Stops the specified 'object' from appearing in the document. - * - * The object will stop being displayed on the page following the current - * one. - * - * @param int $object - */ - function stop_object($object) { - $this->_pdf->stopObject($object); - } - - /** - * @access private - */ - function serialize_object($id) { - // Serialize the pdf object's current state for retrieval later - return $this->_pdf->serializeObject($id); - } - - /** - * @access private - */ - function reopen_serialized_object($obj) { - return $this->_pdf->restoreSerializedObject($obj); - } - - //........................................................................ - - /** - * Returns the PDF's width in points - * @return float - */ - function get_width() { return $this->_width; } - - /** - * Returns the PDF's height in points - * @return float - */ - function get_height() { return $this->_height; } - - /** - * Returns the current page number - * @return int - */ - function get_page_number() { return $this->_page_number; } - - /** - * Returns the total number of pages in the document - * @return int - */ - function get_page_count() { return $this->_page_count; } - - /** - * Sets the current page number - * - * @param int $num - */ - function set_page_number($num) { $this->_page_number = $num; } - - /** - * Sets the page count - * - * @param int $count - */ - function set_page_count($count) { $this->_page_count = $count; } - - /** - * Sets the stroke colour - * - * See {@link Style::set_colour()} for the format of the color array. - * @param array $color - */ - protected function _set_stroke_color($color) { - $this->_pdf->setStrokeColor($color); - } - - /** - * Sets the fill colour - * - * See {@link Style::set_colour()} for the format of the colour array. - * @param array $color - */ - protected function _set_fill_color($color) { - $this->_pdf->setColor($color); - } - - /** - * Sets line transparency - * @see Cpdf::setLineTransparency() - * - * Valid blend modes are (case-sensitive): - * - * Normal, Multiply, Screen, Overlay, Darken, Lighten, - * ColorDodge, ColorBurn, HardLight, SoftLight, Difference, - * Exclusion - * - * @param string $mode the blending mode to use - * @param float $opacity 0.0 fully transparent, 1.0 fully opaque - */ - protected function _set_line_transparency($mode, $opacity) { - $this->_pdf->setLineTransparency($mode, $opacity); - } - - /** - * Sets fill transparency - * @see Cpdf::setFillTransparency() - * - * Valid blend modes are (case-sensitive): - * - * Normal, Multiply, Screen, Overlay, Darken, Lighten, - * ColorDogde, ColorBurn, HardLight, SoftLight, Difference, - * Exclusion - * - * @param string $mode the blending mode to use - * @param float $opacity 0.0 fully transparent, 1.0 fully opaque - */ - protected function _set_fill_transparency($mode, $opacity) { - $this->_pdf->setFillTransparency($mode, $opacity); - } - - /** - * Sets the line style - * - * @see Cpdf::setLineStyle() - * - * @param float width - * @param string cap - * @param string join - * @param array dash - */ - protected function _set_line_style($width, $cap, $join, $dash) { - $this->_pdf->setLineStyle($width, $cap, $join, $dash); - } - - /** - * Sets the opacity - * - * @param $opacity - * @param $mode - */ - function set_opacity($opacity, $mode = "Normal") { - $this->_set_line_transparency($mode, $opacity); - $this->_set_fill_transparency($mode, $opacity); - } - - //........................................................................ - - - /** - * Remaps y coords from 4th to 1st quadrant - * - * @param float $y - * @return float - */ - protected function y($y) { return $this->_height - $y; } - - // Canvas implementation - - function line($x1, $y1, $x2, $y2, $color, $width, $style = array()) { - //pre_r(compact("x1", "y1", "x2", "y2", "color", "width", "style")); - - $this->_set_stroke_color($color); - $this->_set_line_style($width, "butt", "", $style); - $this->_pdf->line($x1, $this->y($y1), - $x2, $this->y($y2)); - } - - //........................................................................ - - /** - * Convert a GIF or BMP image to a PNG image - * - * @return string The url of the newly converted image - */ - protected function _convert_gif_bmp_to_png($image_url, $image_type) { - $func_name = "imagecreatefrom$image_type"; - - if ( !function_exists($func_name) ) { - throw new DOMPDF_Exception("Function $func_name() not found. Cannot convert $image_type image: $image_url. Please install the image PHP extension."); - } - - set_error_handler("record_warnings"); - $im = $func_name($image_url); - - if ( $im ) { - imageinterlace($im, 0); - - $filename = tempnam(DOMPDF_TEMP_DIR, "{$image_type}dompdf_img_").'.png'; - $this->_image_cache[] = $filename; - - imagepng($im, $filename); - imagedestroy($im); - } else { - $filename = DOMPDF_LIB_DIR . "/res/broken_image.png"; - - } - - restore_error_handler(); - - return $filename; - } - - function rectangle($x1, $y1, $w, $h, $color, $width, $style = array()) { - $this->_set_stroke_color($color); - $this->_set_line_style($width, "butt", "", $style); - $this->_pdf->rectangle($x1, $this->y($y1) - $h, $w, $h); - } - - //........................................................................ - - function filled_rectangle($x1, $y1, $w, $h, $color) { - $this->_set_fill_color($color); - $this->_pdf->filledRectangle($x1, $this->y($y1) - $h, $w, $h); - } - - function clipping_rectangle($x1, $y1, $w, $h) { - $this->_pdf->clippingRectangle($x1, $this->y($y1) - $h, $w, $h); - } - - function clipping_end() { - $this->_pdf->clippingEnd(); - } - - function save() { - $this->_pdf->saveState(); - } - - function restore() { - $this->_pdf->restoreState(); - } - - function rotate($angle, $x, $y) { - $this->_pdf->rotate($angle, $x, $y); - } - - function skew($angle_x, $angle_y, $x, $y) { - $this->_pdf->skew($angle_x, $angle_y, $x, $y); - } - - function scale($s_x, $s_y, $x, $y) { - $this->_pdf->scale($s_x, $s_y, $x, $y); - } - - function translate($t_x, $t_y) { - $this->_pdf->translate($t_x, $t_y); - } - - function transform($a, $b, $c, $d, $e, $f) { - $this->_pdf->transform(array($a, $b, $c, $d, $e, $f)); - } - - //........................................................................ - - function polygon($points, $color, $width = null, $style = array(), $fill = false) { - $this->_set_fill_color($color); - $this->_set_stroke_color($color); - - // Adjust y values - for ( $i = 1; $i < count($points); $i += 2) - $points[$i] = $this->y($points[$i]); - - $this->_pdf->polygon($points, count($points) / 2, $fill); - } - - //........................................................................ - - function circle($x, $y, $r1, $color, $width = null, $style = null, $fill = false) { - $this->_set_fill_color($color); - $this->_set_stroke_color($color); - - if ( !$fill && isset($width) ) - $this->_set_line_style($width, "round", "round", $style); - - $this->_pdf->ellipse($x, $this->y($y), $r1, 0, 0, 8, 0, 360, 1, $fill); - } - - //........................................................................ - - function image($img_url, $img_type, $x, $y, $w, $h) { - //debugpng - if (DEBUGPNG) print '[image:'.$img_url.'|'.$img_type.']'; - - $img_type = mb_strtolower($img_type); - - switch ($img_type) { - case "jpeg": - case "jpg": - //debugpng - if (DEBUGPNG) print '!!!jpg!!!'; - - $this->_pdf->addJpegFromFile($img_url, $x, $this->y($y) - $h, $w, $h); - break; - - case "png": - //debugpng - if (DEBUGPNG) print '!!!png!!!'; - - $this->_pdf->addPngFromFile($img_url, $x, $this->y($y) - $h, $w, $h); - break; - - case "gif": - case "bmp": - // Convert gifs or bmps to pngs - //DEBUG_IMG_TEMP - //if (0) { - if ( method_exists( $this->_pdf, "addImagePng" ) ) { - //debugpng - if (DEBUGPNG) print "!!!$img_type addImagePng!!!"; - - //If optimization to direct png creation from gd object is available, - //don't create temp file, but place gd object directly into the pdf - if ( method_exists( $this->_pdf, "image_iscached" ) && - $this->_pdf->image_iscached($img_url) ) { - //If same image has occured already before, no need to load because - //duplicate will anyway be eliminated. - $img = null; - unset($img); - } - else { - $func_name = "imagecreatefrom$img_type"; - $img = @$func_name($img_url); - if ( !$img ) { - return; - } - imageinterlace($img, false); - } - - $this->_pdf->addImagePng($img_url, $x, $this->y($y) - $h, $w, $h, $img); - - if ( $img ) { - imagedestroy($img); - } - } - else { - //debugpng - if (DEBUGPNG) print "!!!$img_type addPngFromFile!!!"; - $img_url = $this->_convert_gif_bmp_to_png($img_url, $img_type); - $this->_pdf->addPngFromFile($img_url, $x, $this->y($y) - $h, $w, $h); - } - break; - - default: - //debugpng - if (DEBUGPNG) print '!!!unknown!!!'; - break; - } - - return; - } - - //........................................................................ - - function text($x, $y, $text, $font, $size, $color = array(0,0,0), $word_space = 0, $char_space = 0, $angle = 0) { - $pdf = $this->_pdf; - - $pdf->setColor($color); - - $font .= ".afm"; - $pdf->selectFont($font); - - //Font_Metrics::get_font_height($font, $size) == - //$this->get_font_height($font, $size) == - //$this->_pdf->selectFont($font),$this->_pdf->getFontHeight($size) - //- FontBBoxheight+FontHeightOffset, scaled to $size, in pt - //$this->_pdf->getFontDescender($size) - //- Descender scaled to size - // - //$this->_pdf->fonts[$this->_pdf->currentFont] sizes: - //['FontBBox'][0] left, ['FontBBox'][1] bottom, ['FontBBox'][2] right, ['FontBBox'][3] top - //Maximum extent of all glyphs of the font from the baseline point - //['Ascender'] maximum height above baseline except accents - //['Descender'] maximum depth below baseline, negative number means below baseline - //['FontHeightOffset'] manual enhancement of .afm files to trim windows fonts. currently not used. - //Values are in 1/1000 pt for a font size of 1 pt - // - //['FontBBox'][1] should be close to ['Descender'] - //['FontBBox'][3] should be close to ['Ascender']+Accents - //in practice, FontBBox values are a little bigger - // - //The text position is referenced to the baseline, not to the lower corner of the FontBBox, - //for what the left,top corner is given. - //FontBBox spans also the background box for the text. - //If the lower corner would be used as reference point, the Descents of the glyphs would - //hang over the background box border. - //Therefore compensate only the extent above the Baseline. - // - //print '<pre>['.$font.','.$size.','.$pdf->getFontHeight($size).','.$pdf->getFontDescender($size).','.$pdf->fonts[$pdf->currentFont]['FontBBox'][3].','.$pdf->fonts[$pdf->currentFont]['FontBBox'][1].','.$pdf->fonts[$pdf->currentFont]['FontHeightOffset'].','.$pdf->fonts[$pdf->currentFont]['Ascender'].','.$pdf->fonts[$pdf->currentFont]['Descender'].']</pre>'; - // - //$pdf->addText($x, $this->y($y) - Font_Metrics::get_font_height($font, $size), $size, $text, $angle, $word_space, $char_space); - //$pdf->addText($x, $this->y($y) - $size, $size, $text, $angle, $word_space, $char_space); - //$pdf->addText($x, $this->y($y) - $pdf->getFontHeight($size)-$pdf->getFontDescender($size), $size, $text, $angle, $word_space, $char_space); - $pdf->addText($x, $this->y($y) - ($pdf->fonts[$pdf->currentFont]['FontBBox'][3]*$size)/1000, $size, $text, $angle, $word_space, $char_space); - } - - //........................................................................ - - function javascript($code) { - $this->_pdf->addJavascript($code); - } - - //........................................................................ - - /** - * Add a named destination (similar to <a name="foo">...</a> in html) - * - * @param string $anchorname The name of the named destination - */ - function add_named_dest($anchorname) { - $this->_pdf->addDestination($anchorname, "Fit"); - } - - //........................................................................ - - /** - * Add a link to the pdf - * - * @param string $url The url to link to - * @param float $x The x position of the link - * @param float $y The y position of the link - * @param float $width The width of the link - * @param float $height The height of the link - */ - function add_link($url, $x, $y, $width, $height) { - - $y = $this->y($y) - $height; - - if ( strpos($url, '#') === 0 ) { - // Local link - $name = substr($url,1); - if ( $name ) - $this->_pdf->addInternalLink($name, $x, $y, $x + $width, $y + $height); - - } else { - $this->_pdf->addLink(rawurldecode($url), $x, $y, $x + $width, $y + $height); - } - } - - //........................................................................ - - function get_text_width($text, $font, $size, $word_spacing = 0, $char_spacing = 0) { - $this->_pdf->selectFont($font); - if (!DOMPDF_UNICODE_ENABLED) { - $text = mb_convert_encoding($text, 'Windows-1252', 'UTF-8'); - } - return $this->_pdf->getTextWidth($size, $text, $word_spacing, $char_spacing); - } - - //........................................................................ - - function get_font_height($font, $size) { - $this->_pdf->selectFont($font); - return $this->_pdf->getFontHeight($size) * DOMPDF_FONT_HEIGHT_RATIO; - } - - //........................................................................ - - /** - * Writes text at the specified x and y coordinates on every page - * - * The strings '{PAGE_NUM}' and '{PAGE_COUNT}' are automatically replaced - * with their current values. - * - * See {@link Style::munge_colour()} for the format of the colour array. - * - * @param float $x - * @param float $y - * @param string $text the text to write - * @param string $font the font file to use - * @param float $size the font size, in points - * @param array $color - * @param float $adjust word spacing adjustment - * @param float $angle angle to write the text at, measured CW starting from the x-axis - */ - function page_text($x, $y, $text, $font, $size, $color = array(0,0,0), $adjust = 0, $angle = 0) { - $_t = "text"; - $this->_page_text[] = compact("_t", "x", "y", "text", "font", "size", "color", "adjust", "angle"); - } - - //........................................................................ - - /** - * Processes a script on every page - * - * The variables $pdf, $PAGE_NUM, and $PAGE_COUNT are available. - * - * This function can be used to add page numbers to all pages - * after the first one, for example. - * - * @param string $code the script code - * @param string $type the language type for script - */ - function page_script($code, $type = "text/php") { - $_t = "script"; - $this->_page_text[] = compact("_t", "code", "type"); - } - - //........................................................................ - - function new_page() { - $this->_page_number++; - $this->_page_count++; - - $ret = $this->_pdf->newPage(); - $this->_pages[] = $ret; - return $ret; - } - - //........................................................................ - - /** - * Add text to each page after rendering is complete - */ - protected function _add_page_text() { - - if ( !count($this->_page_text) ) - return; - - $page_number = 1; - $eval = null; - - foreach ($this->_pages as $pid) { - $this->reopen_object($pid); - - foreach ($this->_page_text as $pt) { - extract($pt); - - switch ($_t) { - - case "text": - $text = str_replace(array("{PAGE_NUM}","{PAGE_COUNT}"), - array($page_number, $this->_page_count), $text); - $this->text($x, $y, $text, $font, $size, $color, $adjust, $angle); - break; - - case "script": - if (!$eval) { - $eval = new PHP_Evaluator($this); - } - $eval->evaluate($code, array('PAGE_NUM' => $page_number, 'PAGE_COUNT' => $this->_page_count)); - break; - } - } - - $this->close_object(); - $page_number++; - } - } - - /** - * Streams the PDF directly to the browser - * - * @param string $filename the name of the PDF file - * @param array $options associative array, 'Attachment' => 0 or 1, 'compress' => 1 or 0 - */ - function stream($filename, $options = null) { - // Add page text - $this->_add_page_text(); - - $options["Content-Disposition"] = $filename; - $this->_pdf->stream($options); - } - - //........................................................................ - - /** - * Returns the PDF as a string - * - * @param array $options Output options - * @return string - */ - function output($options = null) { - // Add page text - $this->_add_page_text(); - - $debug = isset($options["compress"]) && $options["compress"] != 1; - - return $this->_pdf->output($debug); - } - - //........................................................................ - - /** - * Returns logging messages generated by the Cpdf class - * - * @return string - */ - function get_messages() { return $this->_pdf->messages; } - -} diff --git a/application/third_party/dompdf/include/css_color.cls.php b/application/third_party/dompdf/include/css_color.cls.php deleted file mode 100644 index f6f003a7..00000000 --- a/application/third_party/dompdf/include/css_color.cls.php +++ /dev/null @@ -1,287 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile$ - * Created on: 2010-03-03 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Fabien M�nager - * @package dompdf - */ - -/* $Id: css_color.cls.php 300 2010-08-11 22:01:09Z fabien.menager $ */ - -class CSS_Color { - static $cssColorNames = array( - "aliceblue" => "F0F8FF", - "antiquewhite" => "FAEBD7", - "aqua" => "00FFFF", - "aquamarine" => "7FFFD4", - "azure" => "F0FFFF", - "beige" => "F5F5DC", - "bisque" => "FFE4C4", - "black" => "000000", - "blanchedalmond" => "FFEBCD", - "blue" => "0000FF", - "blueviolet" => "8A2BE2", - "brown" => "A52A2A", - "burlywood" => "DEB887", - "cadetblue" => "5F9EA0", - "chartreuse" => "7FFF00", - "chocolate" => "D2691E", - "coral" => "FF7F50", - "cornflowerblue" => "6495ED", - "cornsilk" => "FFF8DC", - "crimson" => "DC143C", - "cyan" => "00FFFF", - "darkblue" => "00008B", - "darkcyan" => "008B8B", - "darkgoldenrod" => "B8860B", - "darkgray" => "A9A9A9", - "darkgreen" => "006400", - "darkgrey" => "A9A9A9", - "darkkhaki" => "BDB76B", - "darkmagenta" => "8B008B", - "darkolivegreen" => "556B2F", - "darkorange" => "FF8C00", - "darkorchid" => "9932CC", - "darkred" => "8B0000", - "darksalmon" => "E9967A", - "darkseagreen" => "8FBC8F", - "darkslateblue" => "483D8B", - "darkslategray" => "2F4F4F", - "darkslategrey" => "2F4F4F", - "darkturquoise" => "00CED1", - "darkviolet" => "9400D3", - "deeppink" => "FF1493", - "deepskyblue" => "00BFFF", - "dimgray" => "696969", - "dimgrey" => "696969", - "dodgerblue" => "1E90FF", - "firebrick" => "B22222", - "floralwhite" => "FFFAF0", - "forestgreen" => "228B22", - "fuchsia" => "FF00FF", - "gainsboro" => "DCDCDC", - "ghostwhite" => "F8F8FF", - "gold" => "FFD700", - "goldenrod" => "DAA520", - "gray" => "808080", - "green" => "008000", - "greenyellow" => "ADFF2F", - "grey" => "808080", - "honeydew" => "F0FFF0", - "hotpink" => "FF69B4", - "indianred" => "CD5C5C", - "indigo" => "4B0082", - "ivory" => "FFFFF0", - "khaki" => "F0E68C", - "lavender" => "E6E6FA", - "lavenderblush" => "FFF0F5", - "lawngreen" => "7CFC00", - "lemonchiffon" => "FFFACD", - "lightblue" => "ADD8E6", - "lightcoral" => "F08080", - "lightcyan" => "E0FFFF", - "lightgoldenrodyellow" => "FAFAD2", - "lightgray" => "D3D3D3", - "lightgreen" => "90EE90", - "lightgrey" => "D3D3D3", - "lightpink" => "FFB6C1", - "lightsalmon" => "FFA07A", - "lightseagreen" => "20B2AA", - "lightskyblue" => "87CEFA", - "lightslategray" => "778899", - "lightslategrey" => "778899", - "lightsteelblue" => "B0C4DE", - "lightyellow" => "FFFFE0", - "lime" => "00FF00", - "limegreen" => "32CD32", - "linen" => "FAF0E6", - "magenta" => "FF00FF", - "maroon" => "800000", - "mediumaquamarine" => "66CDAA", - "mediumblue" => "0000CD", - "mediumorchid" => "BA55D3", - "mediumpurple" => "9370DB", - "mediumseagreen" => "3CB371", - "mediumslateblue" => "7B68EE", - "mediumspringgreen" => "00FA9A", - "mediumturquoise" => "48D1CC", - "mediumvioletred" => "C71585", - "midnightblue" => "191970", - "mintcream" => "F5FFFA", - "mistyrose" => "FFE4E1", - "moccasin" => "FFE4B5", - "navajowhite" => "FFDEAD", - "navy" => "000080", - "oldlace" => "FDF5E6", - "olive" => "808000", - "olivedrab" => "6B8E23", - "orange" => "FFA500", - "orangered" => "FF4500", - "orchid" => "DA70D6", - "palegoldenrod" => "EEE8AA", - "palegreen" => "98FB98", - "paleturquoise" => "AFEEEE", - "palevioletred" => "DB7093", - "papayawhip" => "FFEFD5", - "peachpuff" => "FFDAB9", - "peru" => "CD853F", - "pink" => "FFC0CB", - "plum" => "DDA0DD", - "powderblue" => "B0E0E6", - "purple" => "800080", - "red" => "FF0000", - "rosybrown" => "BC8F8F", - "royalblue" => "4169E1", - "saddlebrown" => "8B4513", - "salmon" => "FA8072", - "sandybrown" => "F4A460", - "seagreen" => "2E8B57", - "seashell" => "FFF5EE", - "sienna" => "A0522D", - "silver" => "C0C0C0", - "skyblue" => "87CEEB", - "slateblue" => "6A5ACD", - "slategray" => "708090", - "slategrey" => "708090", - "snow" => "FFFAFA", - "springgreen" => "00FF7F", - "steelblue" => "4682B4", - "tan" => "D2B48C", - "teal" => "008080", - "thistle" => "D8BFD8", - "tomato" => "FF6347", - "turquoise" => "40E0D0", - "violet" => "EE82EE", - "wheat" => "F5DEB3", - "white" => "FFFFFF", - "whitesmoke" => "F5F5F5", - "yellow" => "FFFF00", - "yellowgreen" => "9ACD32", - ); - - static function parse($colour) { - if ( is_array($colour) ) - // Assume the array has the right format... - // FIXME: should/could verify this. - return $colour; - - $colour = strtolower($colour); - - if (isset(self::$cssColorNames[$colour])) - return self::getArray(self::$cssColorNames[$colour]); - - if ($colour === "transparent") - return "transparent"; - - $length = mb_strlen($colour); - - // #rgb format - if ( $length == 4 && $colour[0] === "#" ) { - return self::getArray($colour[1].$colour[1].$colour[2].$colour[2].$colour[3].$colour[3]); - - // #rrggbb format - } else if ( $length == 7 && $colour[0] === "#" ) { - return self::getArray(mb_substr($colour, 1, 6)); - - // rgb( r,g,b ) format - } else if ( mb_strpos($colour, "rgb") !== false ) { - $i = mb_strpos($colour, "("); - $j = mb_strpos($colour, ")"); - - // Bad colour value - if ($i === false || $j === false) - return null; - - $triplet = explode(",", mb_substr($colour, $i+1, $j-$i-1)); - - if (count($triplet) != 3) - return null; - - foreach (array_keys($triplet) as $c) { - $triplet[$c] = trim($triplet[$c]); - - if ( $triplet[$c][mb_strlen($triplet[$c]) - 1] === "%" ) - $triplet[$c] = round($triplet[$c] * 2.55); - } - - return self::getArray(vsprintf("%02X%02X%02X", $triplet)); - - // cmyk( c,m,y,k ) format - // http://www.w3.org/TR/css3-gcpm/#cmyk-colors - } else if ( mb_strpos($colour, "cmyk") !== false ) { - $i = mb_strpos($colour, "("); - $j = mb_strpos($colour, ")"); - - // Bad colour value - if ($i === false || $j === false) - return null; - - $values = explode(",", mb_substr($colour, $i+1, $j-$i-1)); - - if (count($values) != 4) - return null; - - foreach ($values as &$c) { - $c = floatval(trim($c)); - if ($c > 1.0) $c = 1.0; - if ($c < 0.0) $c = 0.0; - } - - return self::getArray($values); - } - } - - static function getArray($colour) { - $c = array(null, null, null, null, "hex" => null); - - if (is_array($colour)) { - $c = $colour; - $c["c"] = $c[0]; - $c["m"] = $c[1]; - $c["y"] = $c[2]; - $c["k"] = $c[3]; - $c["hex"] = "cmyk($c[0],$c[1],$c[2],$c[3])"; - } - else { - $c[0] = hexdec(mb_substr($colour, 0, 2)) / 0xff; - $c[1] = hexdec(mb_substr($colour, 2, 2)) / 0xff; - $c[2] = hexdec(mb_substr($colour, 4, 2)) / 0xff; - $c["r"] = $c[0]; - $c["g"] = $c[1]; - $c["b"] = $c[2]; - $c["hex"] = "#$colour"; - } - - return $c; - } -} diff --git a/application/third_party/dompdf/include/dompdf.cls.php b/application/third_party/dompdf/include/dompdf.cls.php deleted file mode 100644 index 7cff2491..00000000 --- a/application/third_party/dompdf/include/dompdf.cls.php +++ /dev/null @@ -1,792 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: dompdf.cls.php,v $ - * Created on: 2004-06-09 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: dompdf.cls.php 362 2011-02-16 22:17:28Z fabien.menager $ */ - -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * DOMPDF loads HTML and does its best to render it as a PDF. It gets its - * name from the new DomDocument PHP5 extension. Source HTML is first - * parsed by a DomDocument object. DOMPDF takes the resulting DOM tree and - * attaches a {@link Frame} object to each node. {@link Frame} objects store - * positioning and layout information and each has a reference to a {@link - * Style} object. - * - * Style information is loaded and parsed (see {@link Stylesheet}) and is - * applied to the frames in the tree by using XPath. CSS selectors are - * converted into XPath queries, and the computed {@link Style} objects are - * applied to the {@link Frame}s. - * - * {@link Frame}s are then decorated (in the design pattern sense of the - * word) based on their CSS display property ({@link - * http://www.w3.org/TR/CSS21/visuren.html#propdef-display}). - * Frame_Decorators augment the basic {@link Frame} class by adding - * additional properties and methods specific to the particular type of - * {@link Frame}. For example, in the CSS layout model, block frames - * (display: block;) contain line boxes that are usually filled with text or - * other inline frames. The Block_Frame_Decorator therefore adds a $lines - * property as well as methods to add {@link Frame}s to lines and to add - * additional lines. {@link Frame}s also are attached to specific - * Positioner and {@link Frame_Reflower} objects that contain the - * positioining and layout algorithm for a specific type of frame, - * respectively. This is an application of the Strategy pattern. - * - * Layout, or reflow, proceeds recursively (post-order) starting at the root - * of the document. Space constraints (containing block width & height) are - * pushed down, and resolved positions and sizes bubble up. Thus, every - * {@link Frame} in the document tree is traversed once (except for tables - * which use a two-pass layout algorithm). If you are interested in the - * details, see the reflow() method of the Reflower classes. - * - * Rendering is relatively straightforward once layout is complete. {@link - * Frame}s are rendered using an adapted {@link Cpdf} class, originally - * written by Wayne Munro, http://www.ros.co.nz/pdf/. (Some performance - * related changes have been made to the original {@link Cpdf} class, and - * the {@link CPDF_Adapter} class provides a simple, stateless interface to - * PDF generation.) PDFLib support has now also been added, via the {@link - * PDFLib_Adapter}. - * - * - * @package dompdf - */ -class DOMPDF { - - /** - * DomDocument representing the HTML document - * - * @var DomDocument - */ - protected $_xml; - - /** - * Frame_Tree derived from the DOM tree - * - * @var Frame_Tree - */ - protected $_tree; - - /** - * Stylesheet for the document - * - * @var Stylesheet - */ - protected $_css; - - /** - * Actual PDF renderer - * - * @var Canvas - */ - protected $_pdf; - - /** - * Desired paper size ('letter', 'legal', 'A4', etc.) - * - * @var string - */ - protected $_paper_size; - - /** - * Paper orientation ('portrait' or 'landscape') - * - * @var string - */ - protected $_paper_orientation; - - /** - * Callbacks on new page and new element - * - * @var array - */ - protected $_callbacks; - - /** - * Experimental caching capability - * - * @var string - */ - private $_cache_id; - - /** - * Base hostname - * - * Used for relative paths/urls - * @var string - */ - protected $_base_host; - - /** - * Absolute base path - * - * Used for relative paths/urls - * @var string - */ - protected $_base_path; - - /** - * Protcol used to request file (file://, http://, etc) - * - * @var string - */ - protected $_protocol; - - /** - * Timestamp of the script start time - * - * @var int - */ - private $_start_time = null; - - /** - * @var string The system's locale - */ - private $_system_locale = null; - - /** - * @var bool Tells if the system's locale is the C standard one - */ - private $_locale_standard = false; - - /** - * Class constructor - */ - function __construct() { - $this->_locale_standard = sprintf('%.1f', 1.0) == '1.0'; - - $this->save_locale(); - - $this->_messages = array(); - $this->_xml = new DOMDocument(); - $this->_xml->preserveWhiteSpace = true; - $this->_tree = new Frame_Tree($this->_xml); - $this->_css = new Stylesheet(); - $this->_pdf = null; - $this->_paper_size = "letter"; - $this->_paper_orientation = "portrait"; - $this->_base_protocol = ""; - $this->_base_host = ""; - $this->_base_path = ""; - $this->_callbacks = array(); - $this->_cache_id = null; - - $this->restore_locale(); - } - - /** - * Class destructor - */ - function __destruct() { - clear_object($this); - } - - /** - * Save the system's locale configuration and - * set the right value for numeric formatting - */ - private function save_locale() { - if ( $this->_locale_standard ) return; - - $this->_system_locale = setlocale(LC_NUMERIC, "C"); - } - - /** - * Restore the system's locale configuration - */ - private function restore_locale() { - if ( $this->_locale_standard ) return; - - setlocale(LC_NUMERIC, $this->_system_locale); - } - - /** - * Returns the underlying {@link Frame_Tree} object - * - * @return Frame_Tree - */ - function get_tree() { return $this->_tree; } - - /** - * Sets the protocol to use - * FIXME validate these - * - * @param string $proto - */ - function set_protocol($proto) { $this->_protocol = $proto; } - - /** - * Sets the base hostname - * - * @param string $host - */ - function set_host($host) { $this->_base_host = $host; } - - /** - * Sets the base path - * - * @param string $path - */ - function set_base_path($path) { $this->_base_path = $path; } - - /** - * Returns the protocol in use - * - * @return string - */ - function get_protocol() { return $this->_protocol; } - - /** - * Returns the base hostname - * - * @return string - */ - function get_host() { return $this->_base_host; } - - /** - * Returns the base path - * - * @return string - */ - function get_base_path() { return $this->_base_path; } - - /** - * Return the underlying Canvas instance (e.g. CPDF_Adapter, GD_Adapter) - * - * @return Canvas - */ - function get_canvas() { return $this->_pdf; } - - /** - * Returns the callbacks array - * - * @return array - */ - function get_callbacks() { return $this->_callbacks; } - - /** - * Loads an HTML file - * - * Parse errors are stored in the global array _dompdf_warnings. - * - * @param string $file a filename or url to load - */ - function load_html_file($file) { - $this->save_locale(); - - // Store parsing warnings as messages (this is to prevent output to the - // browser if the html is ugly and the dom extension complains, - // preventing the pdf from being streamed.) - if ( !$this->_protocol && !$this->_base_host && !$this->_base_path ) - list($this->_protocol, $this->_base_host, $this->_base_path) = explode_url($file); - - if ( !DOMPDF_ENABLE_REMOTE && - ($this->_protocol != "" && $this->_protocol !== "file://" ) ) - throw new DOMPDF_Exception("Remote file requested, but DOMPDF_ENABLE_REMOTE is false."); - - if ($this->_protocol == "" || $this->_protocol === "file://") { - - $realfile = realpath($file); - if ( !$file ) - throw new DOMPDF_Exception("File '$file' not found."); - - if ( strpos($realfile, DOMPDF_CHROOT) !== 0 ) - throw new DOMPDF_Exception("Permission denied on $file."); - - // Exclude dot files (e.g. .htaccess) - if ( substr(basename($realfile),0,1) === "." ) - throw new DOMPDF_Exception("Permission denied on $file."); - - $file = $realfile; - } - - $contents = file_get_contents($file); - $encoding = null; - - // See http://the-stickman.com/web-development/php/getting-http-response-headers-when-using-file_get_contents/ - if ( isset($http_response_header) ) { - foreach($http_response_header as $_header) { - if ( preg_match("@Content-Type:\s*[\w/]+;\s*?charset=([^\s]+)@i", $_header, $matches) ) { - $encoding = strtoupper($matches[1]); - break; - } - } - } - - $this->restore_locale(); - - $this->load_html($contents, $encoding); - } - - /** - * Loads an HTML string - * - * Parse errors are stored in the global array _dompdf_warnings. - * - * @param string $str HTML text to load - */ - function load_html($str, $encoding = null) { - $this->save_locale(); - - // TODO: use the $encoding variable - // FIXME: Determine character encoding, switch to UTF8, update meta tag. Need better http/file stream encoding detection, currently relies on text or meta tag. - mb_detect_order('auto'); - - if (mb_detect_encoding($str) !== 'UTF-8') { - $metatags = array( - '@<meta\s+http-equiv="Content-Type"\s+content="(?:[\w/]+)(?:;\s*?charset=([^\s"]+))?@i', - '@<meta\s+content="(?:[\w/]+)(?:;\s*?charset=([^\s"]+))"?\s+http-equiv="Content-Type"@i', - ); - - foreach($metatags as $metatag) { - if (preg_match($metatag, $str, $matches)) break; - } - - if (mb_detect_encoding($str) == '') { - if (isset($matches[1])) { - $encoding = strtoupper($matches[1]); - } else { - $encoding = 'UTF-8'; - } - } else { - if (isset($matches[1])) { - $encoding = strtoupper($matches[1]); - } else { - $encoding = 'auto'; - } - } - - if ($encoding !== 'UTF-8') { - $str = mb_convert_encoding($str, 'UTF-8', $encoding); - } - - if (isset($matches[1])) { - $str = preg_replace('/charset=([^\s"]+)/i','charset=UTF-8', $str); - } else { - $str = str_replace('<head>', '<head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">', $str); - } - } - - // Parse embedded php, first-pass - if ( DOMPDF_ENABLE_PHP ) { - ob_start(); - eval("?" . ">$str"); - $str = ob_get_clean(); - } - - // if the document contains non utf-8 with a utf-8 meta tag chars and was - // detected as utf-8 by mbstring, problems could happen. - // http://devzone.zend.com/article/8855 - if ( $encoding === 'UTF-8' ) { - $str = preg_replace("/<meta([^>]+)>/", "", $str); - } - - // Store parsing warnings as messages - set_error_handler("record_warnings"); - $this->_xml->loadHTML($str); - restore_error_handler(); - - /** - @todo Take the quirksmode into account - // http://hsivonen.iki.fi/doctype/ - // https://developer.mozilla.org/en/mozilla's_quirks_mode - $quirksmode = false; - - // HTML5 <!DOCTYPE html> - if ( !$this->_xml->doctype->publicId && !$this->_xml->doctype->systemId ) { - $quirksmode = false; - } - - // not XHTML - if ( !preg_match("/xhtml/i", $this->_xml->doctype->publicId) ) { - $quirksmode = true; - } - */ - - $this->restore_locale(); - } - - /** - * Builds the {@link Frame_Tree}, loads any CSS and applies the styles to - * the {@link Frame_Tree} - */ - protected function _process_html() { - $this->save_locale(); - - $this->_tree->build_tree(); - - $this->_css->load_css_file(Stylesheet::DEFAULT_STYLESHEET); - - $acceptedmedia = Stylesheet::$ACCEPTED_GENERIC_MEDIA_TYPES; - if ( defined("DOMPDF_DEFAULT_MEDIA_TYPE") ) { - $acceptedmedia[] = DOMPDF_DEFAULT_MEDIA_TYPE; - } else { - $acceptedmedia[] = Stylesheet::$ACCEPTED_DEFAULT_MEDIA_TYPE; - } - - // load <link rel="STYLESHEET" ... /> tags - $links = $this->_xml->getElementsByTagName("link"); - foreach ($links as $link) { - if ( mb_strtolower($link->getAttribute("rel")) === "stylesheet" || - mb_strtolower($link->getAttribute("type")) === "text/css" ) { - //Check if the css file is for an accepted media type - //media not given then always valid - $formedialist = preg_split("/[\s\n,]/", $link->getAttribute("media"),-1, PREG_SPLIT_NO_EMPTY); - if ( count($formedialist) > 0 ) { - $accept = false; - foreach ( $formedialist as $type ) { - if ( in_array(mb_strtolower(trim($type)), $acceptedmedia) ) { - $accept = true; - break; - } - } - if (!$accept) { - //found at least one mediatype, but none of the accepted ones - //Skip this css file. - continue; - } - } - - $url = $link->getAttribute("href"); - $url = build_url($this->_protocol, $this->_base_host, $this->_base_path, $url); - - $this->_css->load_css_file($url); - } - - } - - // load <style> tags - $styles = $this->_xml->getElementsByTagName("style"); - foreach ($styles as $style) { - - // Accept all <style> tags by default (note this is contrary to W3C - // HTML 4.0 spec: - // http://www.w3.org/TR/REC-html40/present/styles.html#adef-media - // which states that the default media type is 'screen' - if ( $style->hasAttributes() && - ($media = $style->getAttribute("media")) && - !in_array($media, $acceptedmedia) ) - continue; - - $css = ""; - if ( $style->hasChildNodes() ) { - - $child = $style->firstChild; - while ( $child ) { - $css .= $child->nodeValue; // Handle <style><!-- blah --></style> - $child = $child->nextSibling; - } - - } else - $css = $style->nodeValue; - - // Set the base path of the Stylesheet to that of the file being processed - $this->_css->set_protocol($this->_protocol); - $this->_css->set_host($this->_base_host); - $this->_css->set_base_path($this->_base_path); - - $this->_css->load_css($css); - } - - $this->restore_locale(); - } - - /** - * Sets the paper size & orientation - * - * @param string $size 'letter', 'legal', 'A4', etc. {@link CPDF_Adapter::$PAPER_SIZES} - * @param string $orientation 'portrait' or 'landscape' - */ - function set_paper($size, $orientation = "portrait") { - $this->_paper_size = $size; - $this->_paper_orientation = $orientation; - } - - /** - * Enable experimental caching capability - * @access private - */ - function enable_caching($cache_id) { - $this->_cache_id = $cache_id; - } - - /** - * Sets callbacks for events like rendering of pages and elements. - * The callbacks array contains arrays with 'event' set to 'begin_page', - * 'end_page', 'begin_frame', or 'end_frame' and 'f' set to a function or - * object plus method to be called. - * - * The function 'f' must take an array as argument, which contains info - * about the event. - * - * @param array $callbacks the set of callbacks to set - */ - function set_callbacks($callbacks) { - if (is_array($callbacks)) { - $this->_callbacks = array(); - foreach ($callbacks as $c) { - if (is_array($c) && isset($c['event']) && isset($c['f'])) { - $event = $c['event']; - $f = $c['f']; - if (is_callable($f) && is_string($event)) { - $this->_callbacks[$event][] = $f; - } - } - } - } - } - - /** - * Renders the HTML to PDF - */ - function render() { - $this->save_locale(); - - if ( DOMPDF_LOG_OUTPUT_FILE ) { - if ( !file_exists(DOMPDF_LOG_OUTPUT_FILE) && is_writable(dirname(DOMPDF_LOG_OUTPUT_FILE)) ) { - touch(DOMPDF_LOG_OUTPUT_FILE); - } - - $this->_start_time = microtime(true); - ob_start(); - } - - //enable_mem_profile(); - - $this->_process_html(); - - $this->_css->apply_styles($this->_tree); - - $root = null; - - foreach ($this->_tree->get_frames() as $frame) { - // Set up the root frame - - if ( is_null($root) ) { - $root = Frame_Factory::decorate_root( $this->_tree->get_root(), $this ); - continue; - } - - // Create the appropriate decorators, reflowers & positioners. - $deco = Frame_Factory::decorate_frame($frame, $this); - $deco->set_root($root); - - // FIXME: handle generated content - if ( $frame->get_style()->display === "list-item" ) { - - // Insert a list-bullet frame - $node = $this->_xml->createElement("bullet"); // arbitrary choice - $b_f = new Frame($node); - - $parent_node = $frame->get_parent()->get_node(); - - if ( !$parent_node->hasAttribute("dompdf-children-count") ) { - $count = 0; - foreach ($parent_node->childNodes as $_node) { - if ( $_node instanceof DOMElement ) - $count++; - } - $parent_node->setAttribute("dompdf-children-count", $count); - } - - $index = 0; - if ( !$parent_node->hasAttribute("dompdf-counter") ) { - $index = 1; - $parent_node->setAttribute("dompdf-counter", 1); - } - else { - $index = $parent_node->getAttribute("dompdf-counter"); - $index++; - $parent_node->setAttribute("dompdf-counter", $index); - } - - $node->setAttribute("dompdf-counter", $index); - $style = $this->_css->create_style(); - $style->display = "-dompdf-list-bullet"; - $style->inherit($frame->get_style()); - $b_f->set_style($style); - - $deco->prepend_child( Frame_Factory::decorate_frame($b_f, $this) ); - } - - } - - $page_style = $this->_css->get_page_style(); - - if ( $page_style && is_array($page_style->size) ) { - $this->set_paper(array(0, 0, $page_style->size[0], $page_style->size[1])); - } - - $this->_pdf = Canvas_Factory::get_instance($this->_paper_size, $this->_paper_orientation); - - // Add meta information - $title = $this->_xml->getElementsByTagName("title"); - if ( $title->length ) { - $this->_pdf->add_info("Title", trim($title->item(0)->nodeValue)); - } - - $metas = $this->_xml->getElementsByTagName("meta"); - $labels = array( - "author" => "Author", - "keywords" => "Keywords", - "description" => "Subject", - ); - foreach($metas as $meta) { - $name = mb_strtolower($meta->getAttribute("name")); - if ( isset($labels[$name]) ) { - $this->_pdf->add_info($labels[$name], trim($meta->getAttribute("content"))); - } - } - - $root->set_containing_block(0, 0, $this->_pdf->get_width(), $this->_pdf->get_height()); - $root->set_renderer(new Renderer($this)); - - // This is where the magic happens: - $root->reflow(); - - // Clean up cached images - Image_Cache::clear(); - - global $_dompdf_warnings, $_dompdf_show_warnings; - if ( $_dompdf_show_warnings ) { - echo '<b>DOMPDF Warnings</b><br><pre>'; - foreach ($_dompdf_warnings as $msg) - echo $msg . "\n"; - echo $this->get_canvas()->get_cpdf()->messages; - echo '</pre>'; - flush(); - } - - $this->restore_locale(); - } - - /** - * Add meta information to the PDF after rendering - */ - function add_info($label, $value) { - if (!is_null($this->_pdf)) - $this->_pdf->add_info($label, $value); - } - - /** - * Writes the output buffer in the log file - * @return void - */ - private function write_log() { - if ( !DOMPDF_LOG_OUTPUT_FILE || !is_writable(DOMPDF_LOG_OUTPUT_FILE) ) return; - - $memory = DOMPDF_memory_usage(); - $memory = number_format($memory/1024); - $time = number_format((microtime(true) - $this->_start_time) * 1000, 4); - - $out = "<span style='color: #900'>$memory KB</span> ". - "<span style='color: #090'>$time ms</span><br />"; - - $out .= ob_get_clean(); - file_put_contents(DOMPDF_LOG_OUTPUT_FILE, $out); - } - - /** - * Streams the PDF to the client - * - * The file will open a download dialog by default. The options - * parameter controls the output. Accepted options are: - * - * 'Accept-Ranges' => 1 or 0 - if this is not set to 1, then this - * header is not included, off by default this header seems to - * have caused some problems despite the fact that it is supposed - * to solve them, so I am leaving it off by default. - * - * 'compress' = > 1 or 0 - apply content stream compression, this is - * on (1) by default - * - * 'Attachment' => 1 or 0 - if 1, force the browser to open a - * download dialog, on (1) by default - * - * @param string $filename the name of the streamed file - * @param array $options header options (see above) - */ - function stream($filename, $options = null) { - $this->save_locale(); - - $this->write_log(); - - if (!is_null($this->_pdf)) - $this->_pdf->stream($filename, $options); - - $this->restore_locale(); - } - - /** - * Returns the PDF as a string - * - * The file will open a download dialog by default. The options - * parameter controls the output. Accepted options are: - * - * - * 'compress' = > 1 or 0 - apply content stream compression, this is - * on (1) by default - * - * - * @param array $options options (see above) - * @return string - */ - function output($options = null) { - $this->save_locale(); - - $this->write_log(); - - if ( is_null($this->_pdf) ) - return null; - - $output = $this->_pdf->output( $options ); - - $this->restore_locale(); - - return $output; - } - - /** - * Returns the underlying HTML document as a string - * - * @return string - */ - function output_html() { - return $this->_xml->saveHTML(); - } -} diff --git a/application/third_party/dompdf/include/dompdf_exception.cls.php b/application/third_party/dompdf/include/dompdf_exception.cls.php deleted file mode 100644 index bc61e31a..00000000 --- a/application/third_party/dompdf/include/dompdf_exception.cls.php +++ /dev/null @@ -1,60 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: dompdf_exception.cls.php,v $ - * Created on: 2004-08-07 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: dompdf_exception.cls.php 216 2010-03-11 22:49:18Z ryan.masten $ */ - -/** - * Standard exception thrown by DOMPDF classes - * - * @link http://www.zend.com/php5/articles/engine2-php5-changes.php#Heading12 - * @package dompdf - */ -class DOMPDF_Exception extends Exception { - - /** - * Class constructor - * - * @param string $message Error message - * @param int $code Error code - */ - function __construct($message = NULL, $code = 0) { - parent::__construct($message, $code); - } - -} diff --git a/application/third_party/dompdf/include/dompdf_internal_exception.cls.php b/application/third_party/dompdf/include/dompdf_internal_exception.cls.php deleted file mode 100644 index 1822548e..00000000 --- a/application/third_party/dompdf/include/dompdf_internal_exception.cls.php +++ /dev/null @@ -1,59 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: dompdf_internal_exception.cls.php,v $ - * Created on: 2004-08-07 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: dompdf_internal_exception.cls.php 216 2010-03-11 22:49:18Z ryan.masten $ */ - -/** - * Exception thrown by DOMPDF classes for internal errors - * - * @package dompdf - */ -class DOMPDF_Internal_Exception extends Exception { - - /** - * Class constructor - * - * @param string $message Error message - * @param int $code Error code - */ - function __construct($message = NULL, $code = 0) { - parent::__construct($message, $code); - } - -} diff --git a/application/third_party/dompdf/include/file.skel b/application/third_party/dompdf/include/file.skel deleted file mode 100644 index f5610438..00000000 --- a/application/third_party/dompdf/include/file.skel +++ /dev/null @@ -1,40 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: file.skel,v $ - * Created on: 2004-08-04 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - * @version 0.3 - */ - -/* $Id: file.skel 216 2010-03-11 22:49:18Z ryan.masten $ */ diff --git a/application/third_party/dompdf/include/fixed_positioner.cls.php b/application/third_party/dompdf/include/fixed_positioner.cls.php deleted file mode 100644 index 8903776b..00000000 --- a/application/third_party/dompdf/include/fixed_positioner.cls.php +++ /dev/null @@ -1,117 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: absolute_positioner.cls.php,v $ - * Created on: 2004-06-08 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - */ - -/* $Id */ - -/** - * Positions fixely positioned frames - */ -class Fixed_Positioner extends Positioner { - - function __construct(Frame_Decorator $frame) { parent::__construct($frame); } - - function position() { - - $frame = $this->_frame; - $style = $frame->get_original_style(); - $root = $frame->get_root(); - $initialcb = $root->get_containing_block(); - $initialcb_style = $root->get_style(); - - $p = $frame->find_block_parent(); - if ( $p ) { - $p->add_line(); - } - - // Compute the margins of the @page style - $margin_top = $initialcb_style->length_in_pt($initialcb_style->margin_top, $initialcb["h"]); - $margin_right = $initialcb_style->length_in_pt($initialcb_style->margin_right, $initialcb["w"]); - $margin_bottom = $initialcb_style->length_in_pt($initialcb_style->margin_bottom, $initialcb["h"]); - $margin_left = $initialcb_style->length_in_pt($initialcb_style->margin_left, $initialcb["w"]); - - // The needed computed style of the element - $height = $style->length_in_pt($style->height, $initialcb["h"]); - $width = $style->length_in_pt($style->width, $initialcb["w"]); - - $top = $style->length_in_pt($style->top, $initialcb["h"]); - $right = $style->length_in_pt($style->right, $initialcb["w"]); - $bottom = $style->length_in_pt($style->bottom, $initialcb["h"]); - $left = $style->length_in_pt($style->left, $initialcb["w"]); - - $y = $margin_top; - if ( isset($top) ) { - $y = $top + $margin_top; - if ( $top === "auto" ) { - $y = $margin_top; - if ( isset($bottom) && $bottom !== "auto" ) { - $y = $initialcb["h"] - $bottom - $margin_bottom; - $margin_height = $this->_frame->get_margin_height(); - if ( $margin_height !== "auto" ) { - $y -= $margin_height; - } else { - $y -= $height; - } - } - } - } - - $x = $margin_left; - if ( isset($left) ) { - $x = $left + $margin_left; - if ( $left === "auto" ) { - $x = $margin_left; - if ( isset($right) && $right !== "auto" ) { - $x = $initialcb["w"] - $right - $margin_right; - $margin_width = $this->_frame->get_margin_width(); - if ( $margin_width !== "auto" ) { - $x -= $margin_width; - } else { - $x -= $width; - } - } - } - } - - $frame->set_position($x, $y); - - $children = $frame->get_children(); - foreach($children as $child) { - $child->set_position($x, $y); - } - } -} \ No newline at end of file diff --git a/application/third_party/dompdf/include/font_metrics.cls.php b/application/third_party/dompdf/include/font_metrics.cls.php deleted file mode 100644 index ee91ebe5..00000000 --- a/application/third_party/dompdf/include/font_metrics.cls.php +++ /dev/null @@ -1,299 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: font_metrics.cls.php,v $ - * Created on: 2004-06-02 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @package dompdf - * - * Changes - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @version 0.5.1.htischer.20090507 - * - On missing font on explicite font selection don't change subtype and don't return default font. - * - On requesting default font and missing subtype, check similar subtypes, then any subtype, then normal. The last must exist. - * - Add comments - */ - -/* $Id: font_metrics.cls.php 355 2011-01-27 07:44:54Z fabien.menager $ */ - -require_once(DOMPDF_LIB_DIR . "/class.pdf.php"); - -/** - * Name of the font cache file - * - * This file must be writable by the webserver process only to update it - * with save_font_families() after adding the .afm file references of a new font family - * with Font_Metrics::save_font_families(). - * This is typically done only from command line with load_font.php on converting - * ttf fonts to afm with an external tool referenced in the define _TTF2AFM - * - * Declared here because PHP5 prevents constants from being declared with expressions - */ -if (!defined("__DOMPDF_FONT_CACHE_FILE")) { - if (file_exists(DOMPDF_FONT_DIR . "dompdf_font_family_cache")) { - define('__DOMPDF_FONT_CACHE_FILE', DOMPDF_FONT_DIR . "dompdf_font_family_cache"); - } else { - define('__DOMPDF_FONT_CACHE_FILE', DOMPDF_FONT_DIR . "dompdf_font_family_cache.dist.php"); - } -} - -/** - * The font metrics class - * - * This class provides information about fonts and text. It can resolve - * font names into actual installed font files, as well as determine the - * size of text in a particular font and size. - * - * @static - * @package dompdf - */ -class Font_Metrics { - - /** - * @see __DOMPDF_FONT_CACHE_FILE - */ - const CACHE_FILE = __DOMPDF_FONT_CACHE_FILE; - - /** - * Underlying {@link Canvas} object to perform text size calculations - * - * @var Canvas - */ - static protected $_pdf = null; - - /** - * Array of font family names to font files - * - * Usually cached by the {@link load_font.php} script - * - * @var array - */ - static protected $_font_lookup = array(); - - - /** - * Class initialization - * - */ - static function init() { - if (!self::$_pdf) { - self::load_font_families(); - self::$_pdf = Canvas_Factory::get_instance(); - } - } - - /** - * Calculates text size, in points - * - * @param string $text the text to be sized - * @param string $font the desired font - * @param float $size the desired font size - * @param float $spacing word spacing, if any - * @return float - */ - static function get_text_width($text, $font, $size, $word_spacing = 0, $char_spacing = 0) { - return self::$_pdf->get_text_width($text, $font, $size, $word_spacing, $char_spacing); - } - - /** - * Calculates font height - * - * @param string $font - * @param float $size - * @return float - */ - static function get_font_height($font, $size) { - return self::$_pdf->get_font_height($font, $size); - } - - /** - * Resolves a font family & subtype into an actual font file - * - * Subtype can be one of 'normal', 'bold', 'italic' or 'bold_italic'. If - * the particular font family has no suitable font file, the default font - * ({@link DOMPDF_DEFAULT_FONT}) is used. The font file returned - * is the absolute pathname to the font file on the system. - * - * @param string $family - * @param string $subtype - * @return string - */ - static function get_font($family, $subtype = "normal") { - - /* Allow calling for various fonts in search path. Therefore not immediately - * return replacement on non match. - * Only when called with NULL try replacement. - * When this is also missing there is really trouble. - * If only the subtype fails, nevertheless return failure. - * Only on checking the fallback font, check various subtypes on same font. - */ - - if ( $family ) { - $family = str_replace( array("'", '"'), "", mb_strtolower($family)); - $subtype = mb_strtolower($subtype); - - if ( isset(self::$_font_lookup[$family][$subtype]) ) { - return self::$_font_lookup[$family][$subtype]; - } - return null; - } - - $family = DOMPDF_DEFAULT_FONT; - - if ( isset(self::$_font_lookup[$family][$subtype]) ) { - return self::$_font_lookup[$family][$subtype]; - } - - foreach ( self::$_font_lookup[$family] as $sub => $font ) { - if (strpos($subtype, $sub) !== false) { - return $font; - } - } - - if ($subtype !== "normal") { - foreach ( self::$_font_lookup[$family] as $sub => $font ) { - if ($sub !== "normal") { - return $font; - } - } - } - - $subtype = "normal"; - - if ( isset(self::$_font_lookup[$family][$subtype]) ) { - return self::$_font_lookup[$family][$subtype]; - } - return null; - } - - /** - * Saves the stored font family cache - * - * The name and location of the cache file are determined by {@link - * Font_Metrics::CACHE_FILE}. This file should be writable by the - * webserver process. - * - * @see Font_Metrics::load_font_families() - */ - static function save_font_families() { - // replace the path to the DOMPDF font directory with "DOMPDF_FONT_DIR" (allows for more portability) - $cache_data = var_export(self::$_font_lookup, true); - $cache_data = str_replace('\''.DOMPDF_FONT_DIR , 'DOMPDF_FONT_DIR . \'' , $cache_data); - $cache_data = "<"."?php return $cache_data ?".">"; - file_put_contents(self::CACHE_FILE, $cache_data); - } - - /** - * Loads the stored font family cache - * - * @see save_font_families() - */ - static function load_font_families() { - if ( !is_readable(self::CACHE_FILE) ) - return; - - self::$_font_lookup = require_once(self::CACHE_FILE); - - // If the font family cache is still in the old format - if ( self::$_font_lookup === 1 ) { - $cache_data = file_get_contents(self::CACHE_FILE); - file_put_contents(self::CACHE_FILE, "<"."?php return $cache_data ?".">"); - self::$_font_lookup = require_once(self::CACHE_FILE); - } - } - - static function get_system_fonts() { - $files = glob("/usr/share/fonts/truetype/*.ttf") + - glob("/usr/share/fonts/truetype/*/*.ttf") + - glob("/usr/share/fonts/truetype/*/*/*.ttf") + - glob("C:\\Windows\\fonts\\*.ttf") + - glob("C:\\WinNT\\fonts\\*.ttf") + - glob("/mnt/c_drive/WINDOWS/Fonts/"); - - new TTF_Info; - - $names = array(); - - foreach($files as $file) { - $info = getFontInfo($file); - $info["path"] = $file; - $type = $info[2]; - - if (preg_match("/regular|normal|medium|book/i", $type)) { - $type = "normal"; - } - elseif (preg_match("/bold/i", $type)) { - if (preg_match("/italic|oblique/i", $type)) { - $type = "bold_italic"; - } - else { - $type = "bold"; - } - } - elseif (preg_match("/italic|oblique/i", $type)) { - $type = "italic"; - } - - $names[mb_strtolower($info[1])][$type] = $file; - } - - $keys = array_keys($names); - - /*$matches = array_intersect(array("times", "times new roman"), $keys); - $names["serif"] = $names[reset($matches)]; - - $matches = array_intersect(array("helvetica", "arial", "verdana"), $keys); - $names["sans-serif"] = $names[reset($matches)]; - - $matches = array_intersect(array("courier", "courier new"), $keys); - $names["monospace"] = $names[reset($matches)]; - $names["fixed"] = $names[reset($matches)];*/ - - return $names; - } - - /** - * Returns the current font lookup table - * - * @return array - */ - static function get_font_families() { - return self::$_font_lookup; - } - - static function set_font_family($fontname, $entry) { - self::$_font_lookup[mb_strtolower($fontname)] = $entry; - } -} - -Font_Metrics::init(); diff --git a/application/third_party/dompdf/include/frame.cls.php b/application/third_party/dompdf/include/frame.cls.php deleted file mode 100644 index 3f16ad5a..00000000 --- a/application/third_party/dompdf/include/frame.cls.php +++ /dev/null @@ -1,990 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: frame.cls.php,v $ - * Created on: 2004-06-02 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: frame.cls.php 359 2011-02-05 12:15:06Z fabien.menager $ */ - -/** - * The main Frame class - * - * This class represents a single HTML element. This class stores - * positioning information as well as containing block location and - * dimensions. Style information for the element is stored in a {@link - * Style} object. Tree structure is maintained via the parent & children - * links. - * - * @access protected - * @package dompdf - */ -class Frame { - - /** - * The DOMNode object this frame represents - * - * @var DOMNode - */ - protected $_node; - - /** - * Unique identifier for this frame. Used to reference this frame - * via the node. - * - * @var string - */ - protected $_id; - - /** - * Unique id counter - */ - static protected $ID_COUNTER = 0; - - /** - * This frame's calculated style - * - * @var Style - */ - protected $_style; - - /** - * This frame's original style. Needed for cases where frames are - * split across pages. - * - * @var Style - */ - protected $_original_style; - - /** - * This frame's parent in the document tree. - * - * @var Frame - */ - protected $_parent; - - /** - * This frame's first child. All children are handled as a - * doubly-linked list. - * - * @var Frame - */ - protected $_first_child; - - /** - * This frame's last child. - * - * @var Frame - */ - protected $_last_child; - - /** - * This frame's previous sibling in the document tree. - * - * @var Frame - */ - protected $_prev_sibling; - - /** - * This frame's next sibling in the document tree. - * - * @var Frame - */ - protected $_next_sibling; - - /** - * This frame's containing block (used in layout): array(x, y, w, h) - * - * @var array - */ - protected $_containing_block; - - /** - * Position on the page of the top-left corner of the margin box of - * this frame: array(x,y) - * - * @var array - */ - protected $_position; - - /** - * Absolute opacity of this frame - * - * @var float - */ - protected $_opacity; - - /** - * This frame's decorator - * - * @var Frame_Decorator - */ - protected $_decorator; - - protected $_containing_line; - - /** - * Tells wether the frame was already pushed to the next page - * @var bool - */ - public $_already_pushed = false; - - /** - * Class destructor - */ - function __destruct() { - clear_object($this); - } - - /** - * Class constructor - * - * @param DOMNode $node the DOMNode this frame represents - */ - function __construct(DomNode $node) { - $this->_node = $node; - - $this->_parent = null; - $this->_first_child = null; - $this->_last_child = null; - $this->_prev_sibling = $this->_next_sibling = null; - - $this->_style = null; - $this->_original_style = null; - - $this->_containing_block = array( - "x" => null, - "y" => null, - "w" => null, - "h" => null, - ); - - $this->_containing_block[0] =& $this->_containing_block["x"]; - $this->_containing_block[1] =& $this->_containing_block["y"]; - $this->_containing_block[2] =& $this->_containing_block["w"]; - $this->_containing_block[3] =& $this->_containing_block["h"]; - - $this->_position = array( - "x" => null, - "y" => null, - ); - - $this->_position[0] =& $this->_position["x"]; - $this->_position[1] =& $this->_position["y"]; - - $this->_opacity = 1.0; - $this->_decorator = null; - - $this->set_id( self::$ID_COUNTER++ ); - } - - /** - * "Destructor": forcibly free all references held by this frame - * - * @param bool $recursive if true, call dispose on all children - */ - function dispose($recursive = false) { - - if ( $recursive ) { - while ( $child = $this->_first_child ) - $child->dispose(true); - } - - // Remove this frame from the tree - if ( $this->_prev_sibling ) { - $this->_prev_sibling->_next_sibling = $this->_next_sibling; - } - - if ( $this->_next_sibling ) { - $this->_next_sibling->_prev_sibling = $this->_prev_sibling; - } - - if ( $this->_parent && $this->_parent->_first_child === $this ) { - $this->_parent->_first_child = $this->_next_sibling; - } - - if ( $this->_parent && $this->_parent->_last_child === $this ) { - $this->_parent->_last_child = $this->_prev_sibling; - } - - if ( $this->_parent ) { - $this->_parent->get_node()->removeChild($this->_node); - } - - $this->_style->dispose(); - $this->_style = null; - unset($this->_style); - - $this->_original_style->dispose(); - $this->_original_style = null; - unset($this->_original_style); - - } - - // Re-initialize the frame - function reset() { - $this->_position["x"] = null; - $this->_position["y"] = null; - - $this->_containing_block["x"] = null; - $this->_containing_block["y"] = null; - $this->_containing_block["w"] = null; - $this->_containing_block["h"] = null; - - $this->_style = null; - unset($this->_style); - $this->_style = clone $this->_original_style; - } - - //........................................................................ - - // Accessor methods - /** - * @return DOMNode - */ - function get_node() { return $this->_node; } - - /** - * @return string - */ - function get_id() { return $this->_id; } - - /** - * @return Style - */ - function get_style() { return $this->_style; } - - /** - * @return Style - */ - function get_original_style() { return $this->_original_style; } - - /** - * @return Frame - */ - function get_parent() { return $this->_parent; } - - /** - * @return Frame_Decorator - */ - function get_decorator() { return $this->_decorator; } - - /** - * @return Frame - */ - function get_first_child() { return $this->_first_child; } - - /** - * @return Frame - */ - function get_last_child() { return $this->_last_child; } - - /** - * @return Frame - */ - function get_prev_sibling() { return $this->_prev_sibling; } - - /** - * @return Frame - */ - function get_next_sibling() { return $this->_next_sibling; } - - /** - * @return FrameList - */ - function get_children() { return new FrameList($this); } - - // Layout property accessors - - /** - * Containing block dimensions - * - * @param $i string The key of the wanted containing block's dimension (x, y, x, h) - * @return array|float - */ - function get_containing_block($i = null) { - if ( isset($i) ) - return $this->_containing_block[$i]; - return $this->_containing_block; - } - - /** - * Block position - * - * @param $i string The key of the wanted position value (x, y) - * @return array|float - */ - function get_position($i = null) { - if ( isset($i) ) { - return $this->_position[$i]; - } - return $this->_position; - } - - //........................................................................ - - /** - * Return the height of the margin box of the frame, in pt. Meaningless - * unless the height has been calculated properly. - * - * @return float - */ - function get_margin_height() { - $style = $this->_style; - - return $style->length_in_pt(array( - $style->height, - $style->margin_top, - $style->margin_bottom, - $style->border_top_width, - $style->border_bottom_width, - $style->padding_top, - $style->padding_bottom - ), $this->_containing_block["h"]); - } - - /** - * Return the width of the margin box of the frame, in pt. Meaningless - * unless the width has been calculated properly. - * - * @return float - */ - function get_margin_width() { - $style = $this->_style; - - return $style->length_in_pt(array( - $style->width, - $style->margin_left, - $style->margin_right, - $style->border_left_width, - $style->border_right_width, - $style->padding_left, - $style->padding_right - ), $this->_containing_block["w"]); - } - - function get_break_margins(){ - $style = $this->_style; - - return $style->length_in_pt(array( - //$style->height, - $style->margin_top, - $style->margin_bottom, - $style->border_top_width, - $style->border_bottom_width, - $style->padding_top, - $style->padding_bottom - ), $this->_containing_block["h"]); - } - - /** - * Return the padding box (x,y,w,h) of the frame - * - * @return array - */ - function get_padding_box() { - $style = $this->_style; - $cb = $this->_containing_block; - - $x = $this->_position["x"] + - $style->length_in_pt(array($style->margin_left, - $style->border_left_width), - $cb["w"]); - - $y = $this->_position["y"] + - $style->length_in_pt(array($style->margin_top, - $style->border_top_width), - $cb["h"]); - - $w = $style->length_in_pt(array($style->padding_left, - $style->width, - $style->padding_right), - $cb["w"]); - - $h = $style->length_in_pt(array($style->padding_top, - $style->height, - $style->padding_bottom), - $cb["h"]); - - return array(0 => $x, "x" => $x, - 1 => $y, "y" => $y, - 2 => $w, "w" => $w, - 3 => $h, "h" => $h); - } - - /** - * Return the border box of the frame - * - * @return array - */ - function get_border_box() { - $style = $this->_style; - $cb = $this->_containing_block; - - $x = $this->_position["x"] + $style->length_in_pt($style->margin_left, $cb["w"]); - - $y = $this->_position["y"] + $style->length_in_pt($style->margin_top, $cb["h"]); - - $w = $style->length_in_pt(array($style->border_left_width, - $style->padding_left, - $style->width, - $style->padding_right, - $style->border_right_width), - $cb["w"]); - - $h = $style->length_in_pt(array($style->border_top_width, - $style->padding_top, - $style->height, - $style->padding_bottom, - $style->border_bottom_width), - $cb["h"]); - - return array(0 => $x, "x" => $x, - 1 => $y, "y" => $y, - 2 => $w, "w" => $w, - 3 => $h, "h" => $h); - } - - function get_opacity($opacity = null) { - if ( $opacity !== null ) { - $this->set_opacity($opacity); - } - return $this->_opacity; - } - - function &get_containing_line() { - return $this->_containing_line; - } - - //........................................................................ - - // Set methods - function set_id($id) { - $this->_id = $id; - - // We can only set attributes of DOMElement objects (nodeType == 1). - // Since these are the only objects that we can assign CSS rules to, - // this shortcoming is okay. - if ( $this->_node->nodeType == XML_ELEMENT_NODE ) - $this->_node->setAttribute("frame_id", $id); - } - - function set_style(Style $style) { - if ( is_null($this->_style) ) - $this->_original_style = clone $style; - - //$style->set_frame($this); - $this->_style = $style; - } - - function set_decorator(Frame_Decorator $decorator) { - $this->_decorator = $decorator; - } - - function set_containing_block($x = null, $y = null, $w = null, $h = null) { - if ( is_array($x) ){ - foreach($x as $key => $val){ - $$key = $val; - } - } - - if (is_numeric($x)) { - $this->_containing_block["x"] = $x; - } - - if (is_numeric($y)) { - $this->_containing_block["y"] = $y; - } - - if (is_numeric($w)) { - $this->_containing_block["w"] = $w; - } - - if (is_numeric($h)) { - $this->_containing_block["h"] = $h; - } - } - - function set_position($x = null, $y = null) { - if ( is_array($x) ) - extract($x); - - if ( is_numeric($x) ) { - $this->_position["x"] = $x; - } - - if ( is_numeric($y) ) { - $this->_position["y"] = $y; - } - } - - function set_opacity($opacity) { - $parent = $this->get_parent(); - $base_opacity = (($parent && $parent->_opacity !== null) ? $parent->_opacity : 1.0); - $this->_opacity = $base_opacity * $opacity; - } - - function set_containing_line(&$line) { - $this->_containing_line = &$line; - } - - //........................................................................ - - /** - * Inserts a new child at the beginning of the Frame - * - * @param $child Frame The new Frame to insert - * @param $update_node boolean Whether or not to update the DOM - */ - function prepend_child(Frame $child, $update_node = true) { - if ( $update_node ) - $this->_node->insertBefore($child->_node, $this->_first_child ? $this->_first_child->_node : null); - - // Remove the child from its parent - if ( $child->_parent ) - $child->_parent->remove_child($child, false); - - $child->_parent = $this; - $child->_prev_sibling = null; - - // Handle the first child - if ( !$this->_first_child ) { - $this->_first_child = $child; - $this->_last_child = $child; - $child->_next_sibling = null; - } else { - $this->_first_child->_prev_sibling = $child; - $child->_next_sibling = $this->_first_child; - $this->_first_child = $child; - } - } - - /** - * Inserts a new child at the end of the Frame - * - * @param $child Frame The new Frame to insert - * @param $update_node boolean Whether or not to update the DOM - */ - function append_child(Frame $child, $update_node = true) { - if ( $update_node ) - $this->_node->appendChild($child->_node); - - // Remove the child from its parent - if ( $child->_parent ) - $child->_parent->remove_child($child, false); - - $child->_parent = $this; - $child->_next_sibling = null; - - // Handle the first child - if ( !$this->_last_child ) { - $this->_first_child = $child; - $this->_last_child = $child; - $child->_prev_sibling = null; - } else { - $this->_last_child->_next_sibling = $child; - $child->_prev_sibling = $this->_last_child; - $this->_last_child = $child; - } - } - - /** - * Inserts a new child immediately before the specified frame - * - * @param $new_child Frame The new Frame to insert - * @param $ref Frame The Frame after the new Frame - * @param $update_node boolean Whether or not to update the DOM - */ - function insert_child_before(Frame $new_child, Frame $ref, $update_node = true) { - if ( $ref === $this->_first_child ) { - $this->prepend_child($new_child, $update_node); - return; - } - - if ( is_null($ref) ) { - $this->append_child($new_child, $update_node); - return; - } - - if ( $ref->_parent !== $this ) - throw new DOMPDF_Exception("Reference child is not a child of this node."); - - // Update the node - if ( $update_node ) - $this->_node->insertBefore($new_child->_node, $ref->_node); - - // Remove the child from its parent - if ( $new_child->_parent ) - $new_child->_parent->remove_child($new_child, false); - - $new_child->_parent = $this; - $new_child->_next_sibling = $ref; - $new_child->_prev_sibling = $ref->_prev_sibling; - - if ( $ref->_prev_sibling ) - $ref->_prev_sibling->_next_sibling = $new_child; - - $ref->_prev_sibling = $new_child; - } - - /** - * Inserts a new child immediately after the specified frame - * - * @param $new_child Frame The new Frame to insert - * @param $ref Frame The Frame before the new Frame - * @param $update_node boolean Whether or not to update the DOM - */ - function insert_child_after(Frame $new_child, Frame $ref, $update_node = true) { - if ( $ref === $this->_last_child ) { - $this->append_child($new_child, $update_node); - return; - } - - if ( is_null($ref) ) { - $this->prepend_child($new_child, $update_node); - return; - } - - if ( $ref->_parent !== $this ) - throw new DOMPDF_Exception("Reference child is not a child of this node."); - - // Update the node - if ( $update_node ) { - if ( $ref->_next_sibling ) { - $next_node = $ref->_next_sibling->_node; - $this->_node->insertBefore($new_child->_node, $next_node); - } else { - $new_child->_node = $this->_node->appendChild($new_child); - } - } - - // Remove the child from its parent - if ( $new_child->_parent) - $new_child->_parent->remove_child($new_child, false); - - $new_child->_parent = $this; - $new_child->_prev_sibling = $ref; - $new_child->_next_sibling = $ref->_next_sibling; - - if ( $ref->_next_sibling ) - $ref->_next_sibling->_prev_sibling = $new_child; - - $ref->_next_sibling = $new_child; - } - - - /** - * Remove a child frame - * - * @param $child Frame - * @param $update_node boolean Whether or not to remove the DOM node - * @return Frame The removed child frame - */ - function remove_child(Frame $child, $update_node = true) { - if ( $child->_parent !== $this ) - throw new DOMPDF_Exception("Child not found in this frame"); - - if ( $update_node ) - $this->_node->removeChild($child->_node); - - if ( $child === $this->_first_child ) - $this->_first_child = $child->_next_sibling; - - if ( $child === $this->_last_child ) - $this->_last_child = $child->_prev_sibling; - - if ( $child->_prev_sibling ) - $child->_prev_sibling->_next_sibling = $child->_next_sibling; - - if ( $child->_next_sibling ) - $child->_next_sibling->_prev_sibling = $child->_prev_sibling; - - $child->_next_sibling = null; - $child->_prev_sibling = null; - $child->_parent = null; - return $child; - } - - //........................................................................ - - // Debugging function: - function __toString() { - // Skip empty text frames -// if ( $this->_node->nodeName === "#text" && -// preg_replace("/\s/", "", $this->_node->data) === "" ) -// return ""; - - - $str = "<b>" . $this->_node->nodeName . ":</b><br/>"; - //$str .= spl_object_hash($this->_node) . "<br/>"; - $str .= "Id: " .$this->get_id() . "<br/>"; - $str .= "Class: " .get_class($this) . "<br/>"; - - if ( $this->_node->nodeName === "#text" ) { - $tmp = htmlspecialchars($this->_node->nodeValue); - $str .= "<pre>'" . mb_substr($tmp,0,70) . - (mb_strlen($tmp) > 70 ? "..." : "") . "'</pre>"; - } elseif ( $css_class = $this->_node->getAttribute("class") ) { - $tmp = htmlspecialchars($css_class); - $str .= "CSS class: '$css_class'<br/>"; - } - - if ( $this->_parent ) - $str .= "\nParent:" . $this->_parent->_node->nodeName . - " (" . spl_object_hash($this->_parent->_node) . ") " . - "<br/>"; - - if ( $this->_prev_sibling ) - $str .= "Prev: " . $this->_prev_sibling->_node->nodeName . - " (" . spl_object_hash($this->_prev_sibling->_node) . ") " . - "<br/>"; - - if ( $this->_next_sibling ) - $str .= "Next: " . $this->_next_sibling->_node->nodeName . - " (" . spl_object_hash($this->_next_sibling->_node) . ") " . - "<br/>"; - - $d = $this->get_decorator(); - while ($d && $d != $d->get_decorator()) { - $str .= "Decorator: " . get_class($d) . "<br/>"; - $d = $d->get_decorator(); - } - - $str .= "Position: " . pre_r($this->_position, true); - $str .= "\nContaining block: " . pre_r($this->_containing_block, true); - $str .= "\nMargin width: " . pre_r($this->get_margin_width(), true); - $str .= "\nMargin height: " . pre_r($this->get_margin_height(), true); - - $str .= "\nStyle: <pre>". $this->_style->__toString() . "</pre>"; - - if ( $this->_decorator instanceof Block_Frame_Decorator ) { - $str .= "Lines:<pre>"; - foreach ($this->_decorator->get_lines() as $line) { - foreach ($line["frames"] as $frame) { - if ($frame instanceof Text_Frame_Decorator) { - $str .= "\ntext: "; - $str .= "'". htmlspecialchars($frame->get_text()) ."'"; - } else { - $str .= "\nBlock: " . $frame->get_node()->nodeName . " (" . spl_object_hash($frame->get_node()) . ")"; - } - } - - $str .= - //"\ncount => " . $line["count"] . "\n". - "\ny => " . $line["y"] . "\n" . - "w => " . $line["w"] . "\n" . - "h => " . $line["h"] . "\n" . - "left => " . $line["left"] . "\n" . - "right => " . $line["right"] . "\n"; - } - $str .= "</pre>"; - } - $str .= "\n"; - if ( php_sapi_name() === "cli" ) - $str = strip_tags(str_replace(array("<br/>","<b>","</b>"), - array("\n","",""), - $str)); - - return $str; - } -} - -//------------------------------------------------------------------------ - -/** - * Linked-list IteratorAggregate - * - * @access private - * @package dompdf - */ -class FrameList implements IteratorAggregate { - protected $_frame; - - function __construct($frame) { $this->_frame = $frame; } - function getIterator() { return new FrameListIterator($this->_frame); } -} - -/** - * Linked-list Iterator - * - * Returns children in order and allows for list to change during iteration, - * provided the changes occur to or after the current element - * - * @access private - * @package dompdf - */ -class FrameListIterator implements Iterator { - - /** - * @var Frame - */ - protected $_parent; - - /** - * @var Frame - */ - protected $_cur; - - /** - * @var int - */ - protected $_num; - - function __construct(Frame $frame) { - $this->_parent = $frame; - $this->_cur = $frame->get_first_child(); - $this->_num = 0; - } - - function rewind() { - $this->_cur = $this->_parent->get_first_child(); - $this->_num = 0; - } - - /** - * @return bool - */ - function valid() { - return isset($this->_cur);// && ($this->_cur->get_prev_sibling() === $this->_prev); - } - - function key() { return $this->_num; } - - /** - * @return Frame - */ - function current() { return $this->_cur; } - - /** - * @return Frame - */ - function next() { - - $ret = $this->_cur; - if ( !$ret ) - return null; - - $this->_cur = $this->_cur->get_next_sibling(); - $this->_num++; - return $ret; - } -} - -//------------------------------------------------------------------------ - -/** - * Pre-order IteratorAggregate - * - * @access private - * @package dompdf - */ -class FrameTreeList implements IteratorAggregate { - /** - * @var Frame - */ - protected $_root; - - function __construct(Frame $root) { $this->_root = $root; } - - /** - * @return FrameTreeIterator - */ - function getIterator() { return new FrameTreeIterator($this->_root); } -} - -/** - * Pre-order Iterator - * - * Returns frames in preorder traversal order (parent then children) - * - * @access private - * @package dompdf - */ -class FrameTreeIterator implements Iterator { - /** - * @var Frame - */ - protected $_root; - protected $_stack = array(); - - /** - * @var int - */ - protected $_num; - - function __construct(Frame $root) { - $this->_stack[] = $this->_root = $root; - $this->_num = 0; - } - - function rewind() { - $this->_stack = array($this->_root); - $this->_num = 0; - } - - /** - * @return bool - */ - function valid() { return count($this->_stack) > 0; } - - /** - * @return int - */ - function key() { return $this->_num; } - - /** - * @var Frame - */ - function current() { return end($this->_stack); } - - /** - * @var Frame - */ - function next() { - $b = end($this->_stack); - - // Pop last element - unset($this->_stack[ key($this->_stack) ]); - $this->_num++; - - // Push all children onto the stack in reverse order - if ( $c = $b->get_last_child() ) { - $this->_stack[] = $c; - while ( $c = $c->get_prev_sibling() ) - $this->_stack[] = $c; - } - return $b; - } -} diff --git a/application/third_party/dompdf/include/frame_decorator.cls.php b/application/third_party/dompdf/include/frame_decorator.cls.php deleted file mode 100644 index 19478811..00000000 --- a/application/third_party/dompdf/include/frame_decorator.cls.php +++ /dev/null @@ -1,483 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: frame_decorator.cls.php,v $ - * Created on: 2004-06-02 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: frame_decorator.cls.php 357 2011-01-30 20:56:46Z fabien.menager $ */ - -/** - * Base Frame_Decorator class - * - * @access private - * @package dompdf - */ -abstract class Frame_Decorator extends Frame { - - /** - * The root node of the DOM tree - * - * @var Frame - */ - protected $_root; - - /** - * The decorated frame - * - * @var Frame - */ - protected $_frame; - - /** - * Positioner object used to position this frame (Strategy pattern) - * - * @var Positioner - */ - protected $_positioner; - - /** - * Reflower object used to calculate frame dimensions (Strategy pattern) - * - * @var Frame_Reflower - */ - protected $_reflower; - - /** - * Reference to the current dompdf instance - * - * @var DOMPDF - */ - protected $_dompdf; - - /** - * First block parent - * - * @var Frame_Decorator - */ - private $_block_parent; - - /** - * First positionned parent (position: relative | absolute | fixed) - * - * @var Frame_Decorator - */ - private $_positionned_parent; - - /** - * Class constructor - * - * @param Frame $frame the decoration target - */ - function __construct(Frame $frame, DOMPDF $dompdf) { - $this->_frame = $frame; - $this->_root = null; - $this->_dompdf = $dompdf; - $frame->set_decorator($this); - } - - /** - * "Destructor": foribly free all references held by this object - * - * @param bool $recursive if true, call dispose on all children - */ - function dispose($recursive = false) { - - if ( $recursive ) { - while ( $child = $this->get_first_child() ) - $child->dispose(true); - } - - $this->_root = null; - unset($this->_root); - - $this->_frame->dispose(true); - $this->_frame = null; - unset($this->_frame); - - $this->_positioner = null; - unset($this->_positioner); - - $this->_reflower = null; - unset($this->_reflower); - } - - /** - * Return a copy of this frame with $node as its node - * - * @param DomNode $node - * @return Frame - */ - function copy(DomNode $node) { - $frame = new Frame($node); - $frame->set_style(clone $this->_frame->get_original_style()); - $deco = Frame_Factory::decorate_frame($frame, $this->_dompdf); - $deco->set_root($this->_root); - return $deco; - } - - /** - * Create a deep copy: copy this node and all children - * - * @return Frame - */ - function deep_copy() { - $frame = new Frame($this->get_node()->cloneNode()); - $frame->set_style(clone $this->_frame->get_original_style()); - $deco = Frame_Factory::decorate_frame($frame, $this->_dompdf); - $deco->set_root($this->_root); - - foreach ($this->get_children() as $child) - $deco->append_child($child->deep_copy()); - - return $deco; - } - //........................................................................ - - /** - * Delegate calls to decorated frame object - */ - function reset() { - $this->_frame->reset(); - - // Reset all children - foreach ($this->get_children() as $child) - $child->reset(); - } - - // Getters ----------- - function get_id() { return $this->_frame->get_id(); } - - /** - * @return Frame - */ - function get_frame() { return $this->_frame; } - - /** - * @return DomNode - */ - function get_node() { return $this->_frame->get_node(); } - - /** - * @return Style - */ - function get_style() { return $this->_frame->get_style(); } - - /** - * @return Style - */ - function get_original_style() { return $this->_frame->get_original_style(); } - function get_containing_block($i = null) { return $this->_frame->get_containing_block($i); } - function get_position($i = null) { return $this->_frame->get_position($i); } - - /** - * @return DOMPDF - */ - function get_dompdf() { return $this->_dompdf; } - - function get_margin_height() { return $this->_frame->get_margin_height(); } - function get_margin_width() { return $this->_frame->get_margin_width(); } - function get_padding_box() { return $this->_frame->get_padding_box(); } - function get_border_box() { return $this->_frame->get_border_box(); } - - // Setters ----------- - function set_id($id) { $this->_frame->set_id($id); } - function set_style(Style $style) { $this->_frame->set_style($style); } - - function set_containing_block($x = null, $y = null, $w = null, $h = null) { - $this->_frame->set_containing_block($x, $y, $w, $h); - } - - function set_position($x = null, $y = null) { - $this->_frame->set_position($x, $y); - } - function __toString() { return $this->_frame->__toString(); } - - function prepend_child(Frame $child, $update_node = true) { - while ( $child instanceof Frame_Decorator ) - $child = $child->_frame; - - $this->_frame->prepend_child($child, $update_node); - } - - function append_child(Frame $child, $update_node = true) { - while ( $child instanceof Frame_Decorator ) - $child = $child->_frame; - - $this->_frame->append_child($child, $update_node); - } - - function insert_child_before(Frame $new_child, Frame $ref, $update_node = true) { - while ( $new_child instanceof Frame_Decorator ) - $new_child = $new_child->_frame; - - if ( $ref instanceof Frame_Decorator ) - $ref = $ref->_frame; - - $this->_frame->insert_child_before($new_child, $ref, $update_node); - } - - function insert_child_after(Frame $new_child, Frame $ref, $update_node = true) { - while ( $new_child instanceof Frame_Decorator ) - $new_child = $new_child->_frame; - - while ( $ref instanceof Frame_Decorator ) - $ref = $ref->_frame; - - $this->_frame->insert_child_after($new_child, $ref, $update_node); - } - - function remove_child(Frame $child, $update_node = true) { - while ( $child instanceof Frame_Decorator ) - $child = $new_child->_frame; - - $this->_frame->remove_child($child, $update_node); - } - - //........................................................................ - - /** - * @return Frame_Decorator - */ - function get_parent() { - $p = $this->_frame->get_parent(); - if ( $p && $deco = $p->get_decorator() ) { - while ( $tmp = $deco->get_decorator() ) - $deco = $tmp; - return $deco; - } else if ( $p ) - return $p; - else - return null; - } - - /** - * @return Frame_Decorator - */ - function get_first_child() { - $c = $this->_frame->get_first_child(); - if ( $c && $deco = $c->get_decorator() ) { - while ( $tmp = $deco->get_decorator() ) - $deco = $tmp; - return $deco; - } else if ( $c ) - return $c; - else - return null; - } - - /** - * @return Frame_Decorator - */ - function get_last_child() { - $c = $this->_frame->get_last_child(); - if ( $c && $deco = $c->get_decorator() ) { - while ( $tmp = $deco->get_decorator() ) - $deco = $tmp; - return $deco; - } else if ( $c ) - return $c; - else - return null; - } - - /** - * @return Frame_Decorator - */ - function get_prev_sibling() { - $s = $this->_frame->get_prev_sibling(); - if ( $s && $deco = $s->get_decorator() ) { - while ( $tmp = $deco->get_decorator() ) - $deco = $tmp; - return $deco; - } else if ( $s ) - return $s; - else - return null; - } - - /** - * @return Frame_Decorator - */ - function get_next_sibling() { - $s = $this->_frame->get_next_sibling(); - if ( $s && $deco = $s->get_decorator() ) { - while ( $tmp = $deco->get_decorator() ) - $deco = $tmp; - return $deco; - } else if ( $s ) - return $s; - else - return null; - } - - /** - * @return FrameList - */ - function get_children() { - return new FrameList($this); - } - - /** - * @return FrameTreeList - */ - function get_subtree() { - return new FrameTreeList($this); - } - - //........................................................................ - - function set_positioner(Positioner $posn) { - $this->_positioner = $posn; - if ( $this->_frame instanceof Frame_Decorator ) - $this->_frame->set_positioner($posn); - } - - //........................................................................ - - function set_reflower(Frame_Reflower $reflower) { - $this->_reflower = $reflower; - if ( $this->_frame instanceof Frame_Decorator ) - $this->_frame->set_reflower( $reflower ); - } - - function get_reflower() { return $this->_reflower; } - - //........................................................................ - - function set_root(Frame $root) { - $this->_root = $root; - if ( $this->_frame instanceof Frame_Decorator ) - $this->_frame->set_root($root); - } - - function get_root() { return $this->_root; } - - //........................................................................ - - /** - * @return Frame_Decorator - */ - function find_block_parent() { - //if ( $this->_block_parent ) return $this->_block_parent; // FIXME: makes dom_anchor_link example fail - - // Find our nearest block level parent - $p = $this->get_parent(); - - while ( $p ) { - if ( in_array($p->get_style()->display, Style::$BLOCK_TYPES) ) - break; - - $p = $p->get_parent(); - } - - return $this->_block_parent = $p; - } - - /** - * @return Frame_Decorator - */ - function find_positionned_parent() { - //if ( $this->_positionned_parent ) return $this->_positionned_parent; // FIXME: makes dom_anchor_link example fail - - // Find our nearest relative positionned parent - $p = $this->get_parent(); - while ( $p ) { - if ( in_array($p->get_style()->position, Style::$POSITIONNED_TYPES) ) { - break; - } - - $p = $p->get_parent(); - } - - if ( !$p ) { - $p = $this->_root; - } - - return $this->_positionned_parent = $p; - } - - //........................................................................ - - /** - * split this frame at $child. - * - * The current frame is cloned and $child and all children following - * $child are added to the clone. The clone is then passed to the - * current frame's parent->split() method. - * - * @param Frame $child - * @param boolean $force_pagebreak - */ - function split($child = null, $force_pagebreak = false) { - if ( is_null( $child ) ) { - $this->get_parent()->split($this, $force_pagebreak); - return; - } - - if ( $child->get_parent() !== $this ) - throw new DOMPDF_Exception("Unable to split: frame is not a child of this one."); - - $split = $this->copy( $this->_frame->get_node()->cloneNode() ); - $split->reset(); - $this->get_parent()->insert_child_after($split, $this); - - // Add $frame and all following siblings to the new split node - $iter = $child; - while ($iter) { - $frame = $iter; - $iter = $iter->get_next_sibling(); - $frame->reset(); - $split->append_child($frame); - } - - $this->get_parent()->split($split, $force_pagebreak); - } - - //........................................................................ - - final function position() { $this->_positioner->position(); } - - final function reflow(Frame_Decorator $block = null) { - // Uncomment this to see the frames before they're laid out, instead of - // during rendering. - //echo $this->_frame; flush(); - $this->_reflower->reflow($block); - } - - final function get_min_max_width() { return $this->_reflower->get_min_max_width(); } - - //........................................................................ -} diff --git a/application/third_party/dompdf/include/frame_factory.cls.php b/application/third_party/dompdf/include/frame_factory.cls.php deleted file mode 100644 index f4a1a8cb..00000000 --- a/application/third_party/dompdf/include/frame_factory.cls.php +++ /dev/null @@ -1,207 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: frame_factory.cls.php,v $ - * Created on: 2004-06-17 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: frame_factory.cls.php 356 2011-01-28 08:56:10Z fabien.menager $ */ - -/** - * Contains frame decorating logic - * - * This class is responsible for assigning the correct {@link Frame_Decorator}, - * {@link Positioner}, and {@link Frame_Reflower} objects to {@link Frame} - * objects. This is determined primarily by the Frame's display type, but - * also by the Frame's node's type (e.g. DomElement vs. #text) - * - * @access private - * @package dompdf - */ -class Frame_Factory { - - /** - * Decorate the Frame - * - * @param $root Frame The frame to decorate - * @param $dompdf DOMPDF The dompdf instance - */ - static function decorate_root(Frame $root, DOMPDF $dompdf) { - $frame = new Page_Frame_Decorator($root, $dompdf); - $frame->set_reflower( new Page_Frame_Reflower($frame) ); - $root->set_decorator($frame); - return $frame; - } - - /** - * Decorate a Frame - * - * @param $root Frame The frame to decorate - * @param $dompdf DOMPDF The dompdf instance - * @return Frame_Decorator - * FIXME: this is admittedly a little smelly... - */ - static function decorate_frame(Frame $frame, DOMPDF $dompdf) { - if ( is_null($dompdf) ) - throw new Exception("foo"); - - $style = $frame->get_style(); - - switch ($style->display) { - - case "block": - $positioner = "Block"; - $decorator = "Block"; - $reflower = "Block"; - break; - - case "inline-block": - $positioner = "Inline"; - $decorator = "Block"; - $reflower = "Block"; - break; - - case "inline": - $positioner = "Inline"; - if ( $frame->get_node()->nodeName === "#text" ) { - $decorator = "Text"; - $reflower = "Text"; - } - else { - if ( DOMPDF_ENABLE_CSS_FLOAT && $style->float !== "none" ) { - $decorator = "Block"; - $reflower = "Block"; - } - else { - $decorator = "Inline"; - $reflower = "Inline"; - } - } - break; - - case "table": - $positioner = "Block"; - $decorator = "Table"; - $reflower = "Table"; - break; - - case "inline-table": - $positioner = "Inline"; - $decorator = "Table"; - $reflower = "Table"; - break; - - case "table-row-group": - case "table-header-group": - case "table-footer-group": - $positioner = "Null"; - $decorator = "Table_Row_Group"; - $reflower = "Table_Row_Group"; - break; - - case "table-row": - $positioner = "Null"; - $decorator = "Table_Row"; - $reflower = "Table_Row"; - break; - - case "table-cell": - $positioner = "Table_Cell"; - $decorator = "Table_Cell"; - $reflower = "Table_Cell"; - break; - - case "list-item": - $positioner = "Block"; - $decorator = "Block"; - $reflower = "Block"; - break; - - case "-dompdf-list-bullet": - if ( $style->list_style_position === "inside" ) - $positioner = "Inline"; - else - $positioner = "List_Bullet"; - - if ( $style->list_style_image !== "none" ) - $decorator = "List_Bullet_Image"; - else - $decorator = "List_Bullet"; - - $reflower = "List_Bullet"; - break; - - case "-dompdf-image": - $positioner = "Inline"; - $decorator = "Image"; - $reflower = "Image"; - break; - - case "-dompdf-br": - $positioner = "Inline"; - $decorator = "Inline"; - $reflower = "Inline"; - break; - - default: - // FIXME: should throw some sort of warning or something? - case "none": - $positioner = "Null"; - $decorator = "Null"; - $reflower = "Null"; - break; - } - - $position = $style->position; - - if ( $position === "absolute" ) - $positioner = "Absolute"; - - else if ( $position === "fixed" ) - $positioner = "Fixed"; - - $positioner .= "_Positioner"; - $decorator .= "_Frame_Decorator"; - $reflower .= "_Frame_Reflower"; - - $deco = new $decorator($frame, $dompdf); - $deco->set_positioner( new $positioner($deco) ); - $reflow = new $reflower($deco); - - $deco->set_reflower( $reflow ); - - return $deco; - } -} diff --git a/application/third_party/dompdf/include/frame_reflower.cls.php b/application/third_party/dompdf/include/frame_reflower.cls.php deleted file mode 100644 index febe473b..00000000 --- a/application/third_party/dompdf/include/frame_reflower.cls.php +++ /dev/null @@ -1,414 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: frame_reflower.cls.php,v $ - * Created on: 2004-06-17 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: frame_reflower.cls.php 357 2011-01-30 20:56:46Z fabien.menager $ */ - -/** - * Base reflower class - * - * Reflower objects are responsible for determining the width and height of - * individual frames. They also create line and page breaks as necessary. - * - * @access private - * @package dompdf - */ -abstract class Frame_Reflower { - - /** - * Frame for this reflower - * - * @var Frame - */ - protected $_frame; - - /** - * Cached min/max size - * - * @var array - */ - protected $_min_max_cache; - - function __construct(Frame $frame) { - $this->_frame = $frame; - $this->_min_max_cache = null; - } - - function dispose() { - clear_object($this); - } - - protected function _collapse_margins() { - $cb = $this->_frame->get_containing_block(); - $style = $this->_frame->get_style(); - - $t = $style->length_in_pt($style->margin_top, $cb["h"]); - $b = $style->length_in_pt($style->margin_bottom, $cb["h"]); - - // Handle 'auto' values - if ( $t === "auto" ) { - $style->margin_top = "0pt"; - $t = 0; - } - - if ( $b === "auto" ) { - $style->margin_bottom = "0pt"; - $b = 0; - } - - // Collapse vertical margins: - $n = $this->_frame->get_next_sibling(); - - // FIXME If there is a non-empty inline frame between the blocks, it is not taken into account - while ( $n && !in_array($n->get_style()->display, Style::$BLOCK_TYPES) ) { - $n = $n->get_next_sibling(); - } - - if ( $n ) { // && !$n instanceof Page_Frame_Decorator ) { - $b = max($b, $style->length_in_pt($n->get_style()->margin_top, $cb["h"])); - $n->get_style()->margin_top = "0pt"; - $style->margin_bottom = $b."pt"; - } - - // Collapse our first child's margin - $f = $this->_frame->get_first_child(); - while ( $f && !in_array($f->get_style()->display, Style::$BLOCK_TYPES) ) - $f = $f->get_next_sibling(); - - // Margin are collapsed only between block elements - if ( $f && in_array($f->get_style()->display, Style::$BLOCK_TYPES)) { - $t = max( $t, $style->length_in_pt($f->get_style()->margin_top, $cb["h"])); - $style->margin_top = $t."pt"; - $f->get_style()->margin_bottom = "0pt"; - } - - } - - //........................................................................ - - abstract function reflow(Frame_Decorator $block = null); - - //........................................................................ - - // Required for table layout: Returns an array(0 => min, 1 => max, "min" - // => min, "max" => max) of the minimum and maximum widths of this frame. - // This provides a basic implementation. Child classes should override - // this if necessary. - function get_min_max_width() { - if ( !is_null($this->_min_max_cache) ) { - return $this->_min_max_cache; - } - - $style = $this->_frame->get_style(); - - // Account for margins & padding - $dims = array($style->padding_left, - $style->padding_right, - $style->border_left_width, - $style->border_right_width, - $style->margin_left, - $style->margin_right); - - $cb_w = $this->_frame->get_containing_block("w"); - $delta = $style->length_in_pt($dims, $cb_w); - - // Handle degenerate case - if ( !$this->_frame->get_first_child() ) - return $this->_min_max_cache = array($delta, $delta,"min" => $delta, "max" => $delta); - - $low = array(); - $high = array(); - - for ( $iter = $this->_frame->get_children()->getIterator(); - $iter->valid(); - $iter->next() ) { - - $inline_min = 0; - $inline_max = 0; - - // Add all adjacent inline widths together to calculate max width - while ( $iter->valid() && in_array( $iter->current()->get_style()->display, Style::$INLINE_TYPES ) ) { - - $child = $iter->current(); - - $minmax = $child->get_min_max_width(); - - if ( in_array( $iter->current()->get_style()->white_space, array("pre", "nowrap") ) ) - $inline_min += $minmax["min"]; - else - $low[] = $minmax["min"]; - - $inline_max += $minmax["max"]; - $iter->next(); - - } - - if ( $inline_max > 0 ) - $high[] = $inline_max; - - if ( $inline_min > 0 ) - $low[] = $inline_min; - - if ( $iter->valid() ) { - list($low[], $high[]) = $iter->current()->get_min_max_width(); - continue; - } - - } - $min = count($low) ? max($low) : 0; - $max = count($high) ? max($high) : 0; - - // Use specified width if it is greater than the minimum defined by the - // content. If the width is a percentage ignore it for now. - $width = $style->width; - if ( $width !== "auto" && !is_percent($width) ) { - $width = $style->length_in_pt($width, $cb_w); - if ( $min < $width ) - $min = $width; - if ( $max < $width ) - $max = $width; - } - - $min += $delta; - $max += $delta; - return $this->_min_max_cache = array($min, $max, "min"=>$min, "max"=>$max); - } - - /** - * Parses a CSS string containing quotes and escaped hex characters - * - * @param $string string The CSS string to parse - * @param $single_trim - * @return string - */ - protected function _parse_string($string, $single_trim = false) { - if ($single_trim) { - $string = preg_replace("/^[\"\']/", "", $string); - $string = preg_replace("/[\"\']$/", "", $string); - } - else { - $string = trim($string, "'\""); - } - - $string = str_replace(array("\\\n",'\\"',"\\'"), - array("",'"',"'"), $string); - - // Convert escaped hex characters into ascii characters (e.g. \A => newline) - $string = preg_replace_callback("/\\\\([0-9a-fA-F]{0,6})(\s)?(?(2)|(?=[^0-9a-fA-F]))/", - create_function('$matches', - 'return chr(hexdec($matches[1]));'), - $string); - return $string; - } - - /** - * Parses a CSS "quotes" property - * - * @return array An array of pairs of quotes - */ - protected function _parse_quotes() { - - // Matches quote types - $re = "/(\'[^\']*\')|(\"[^\"]*\")/"; - - $quotes = $this->_frame->get_style()->quotes; - - // split on spaces, except within quotes - if (!preg_match_all($re, "$quotes", $matches, PREG_SET_ORDER)) - return; - - $quotes_array = array(); - foreach($matches as &$_quote){ - $quotes_array[] = $this->_parse_string($_quote[0], true); - } - - if ( empty($quotes_array) ) { - $quotes_array = array('"', '"'); - } - - return array_chunk($quotes_array, 2); - } - - /** - * Parses the CSS "content" property - * - * @return string The resulting string - */ - protected function _parse_content() { - - // Matches generated content - $re = "/\n". - "\s(counters?\\([^)]*\\))|\n". - "\A(counters?\\([^)]*\\))|\n". - "\s([\"']) ( (?:[^\"']|\\\\[\"'])+ )(?<!\\\\)\\3|\n". - "\A([\"']) ( (?:[^\"']|\\\\[\"'])+ )(?<!\\\\)\\5|\n" . - "\s([^\s\"']+)|\n" . - "\A([^\s\"']+)\n". - "/xi"; - - $content = $this->_frame->get_style()->content; - - $quotes = $this->_parse_quotes(); - - // split on spaces, except within quotes - if (!preg_match_all($re, $content, $matches, PREG_SET_ORDER)) - return; - - $text = ""; - - foreach ($matches as $match) { - - if ( isset($match[2]) && $match[2] !== "" ) - $match[1] = $match[2]; - - if ( isset($match[6]) && $match[6] !== "" ) - $match[4] = $match[6]; - - if ( isset($match[8]) && $match[8] !== "" ) - $match[7] = $match[8]; - - if ( isset($match[1]) && $match[1] !== "" ) { - - // counters?(...) - $match[1] = mb_strtolower(trim($match[1])); - - // Handle counter() references: - // http://www.w3.org/TR/CSS21/generate.html#content - - $i = mb_strpos($match[1], ")"); - if ( $i === false ) - continue; - - $args = explode(",", mb_substr($match[1], 8, $i - 8)); - $counter_id = $args[0]; - - if ( $match[1][7] === "(" ) { - // counter(name [,style]) - - if ( isset($args[1]) ) - $type = trim($args[1]); - else - $type = null; - - $p = $this->_frame->find_block_parent(); - - $text .= $p->counter_value($counter_id, $type); - - } else if ( $match[1][7] === "s" ) { - // counters(name, string [,style]) - if ( isset($args[1]) ) - $string = $this->_parse_string(trim($args[1])); - else - $string = ""; - - if ( isset($args[2]) ) - $type = $args[2]; - else - $type = null; - - $p = $this->_frame->find_block_parent(); - $tmp = ""; - while ($p) { - $tmp = $p->counter_value($counter_id, $type) . $string . $tmp; - $p = $p->find_block_parent(); - } - $text .= $tmp; - - } else - // countertops? - continue; - - } else if ( isset($match[4]) && $match[4] !== "" ) { - // String match - $text .= $this->_parse_string($match[4]); - - } else if ( isset($match[7]) && $match[7] !== "" ) { - // Directive match - - if ( $match[7] === "open-quote" ) { - // FIXME: do something here - $text .= $quotes[0][0]; - } else if ( $match[7] === "close-quote" ) { - // FIXME: do something else here - $text .= $quotes[0][1]; - } else if ( $match[7] === "no-open-quote" ) { - // FIXME: - } else if ( $match[7] === "no-close-quote" ) { - // FIXME: - } else if ( mb_strpos($match[7],"attr(") === 0 ) { - - $i = mb_strpos($match[7],")"); - if ( $i === false ) - continue; - - $attr = mb_substr($match[7], 5, $i - 5); - if ( $attr == "" ) - continue; - - $text .= $this->_frame->get_parent()->get_node()->getAttribute($attr); - } else - continue; - } - } - - return $text; - } - - /** - * Sets the generated content of a generated frame - */ - protected function _set_content(){ - $frame = $this->_frame; - $style = $frame->get_style(); - - if ( $style->content && $frame->get_node()->nodeName === "dompdf_generated" ) { - $content = $this->_parse_content(); - $node = $frame->get_node()->ownerDocument->createTextNode($content); - - $new_style = $style->get_stylesheet()->create_style(); - $new_style->inherit($style); - - $new_frame = new Frame($node); - $new_frame->set_style($new_style); - - Frame_Factory::decorate_frame($new_frame, $frame->get_dompdf()); - $new_frame->get_decorator()->set_root($frame->get_root()); - $frame->append_child($new_frame); - } - } -} diff --git a/application/third_party/dompdf/include/frame_tree.cls.php b/application/third_party/dompdf/include/frame_tree.cls.php deleted file mode 100644 index 3d5d2148..00000000 --- a/application/third_party/dompdf/include/frame_tree.cls.php +++ /dev/null @@ -1,230 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: frame_tree.cls.php,v $ - * Created on: 2004-06-02 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: frame_tree.cls.php 332 2010-11-27 14:06:34Z fabien.menager $ */ - -/** - * Represents an entire document as a tree of frames - * - * The Frame_Tree consists of {@link Frame} objects each tied to specific - * DomNode objects in a specific DomDocument. The Frame_Tree has the same - * structure as the DomDocument, but adds additional capabalities for - * styling and layout. - * - * @package dompdf - * @access protected - */ -class Frame_Tree { - - /** - * Tags to ignore while parsing the tree - * - * @var array - */ - static protected $_HIDDEN_TAGS = array("area", "base", "basefont", "head", "style", - "meta", "title", "colgroup", - "noembed", "noscript", "param", "#comment"); - /** - * The main DomDocument - * - * @see http://ca2.php.net/manual/en/ref.dom.php - * @var DomDocument - */ - protected $_dom; - - /** - * The root node of the FrameTree. - * - * @var Frame - */ - protected $_root; - - /** - * Subtrees of absolutely positioned elements - * - * @var array of Frames - */ - protected $_absolute_frames; - - /** - * A mapping of {@link Frame} objects to DomNode objects - * - * @var array - */ - protected $_registry; - - - /** - * Class constructor - * - * @param DomDocument $dom the main DomDocument object representing the current html document - */ - function __construct(DomDocument $dom) { - $this->_dom = $dom; - $this->_root = null; - $this->_registry = array(); - } - - function __destruct() { - clear_object($this); - } - - /** - * Returns the DomDocument object representing the curent html document - * - * @return DomDocument - */ - function get_dom() { return $this->_dom; } - - /** - * Returns the root frame of the tree - * - * @return Frame - */ - function get_root() { return $this->_root; } - - /** - * Returns a specific frame given its id - * - * @param string $id - * @return Frame - */ - function get_frame($id) { return isset($this->_registry[$id]) ? $this->_registry[$id] : null; } - - /** - * Returns a post-order iterator for all frames in the tree - * - * @return FrameTreeList - */ - function get_frames() { return new FrameTreeList($this->_root); } - - /** - * Builds the tree - */ - function build_tree() { - $html = $this->_dom->getElementsByTagName("html")->item(0); - if ( is_null($html) ) - $html = $this->_dom->firstChild; - - if ( is_null($html) ) - throw new DOMPDF_Exception("Requested HTML document contains no data."); - - $this->_root = $this->_build_tree_r($html); - - } - - /** - * Recursively adds {@link Frame} objects to the tree - * - * Recursively build a tree of Frame objects based on a dom tree. - * No layout information is calculated at this time, although the - * tree may be adjusted (i.e. nodes and frames for generated content - * and images may be created). - * - * @param DomNode $node the current DomNode being considered - * @return Frame - */ - protected function _build_tree_r(DomNode $node) { - - $frame = new Frame($node); - $id = $frame->get_id(); - $this->_registry[ $id ] = $frame; - - if ( !$node->hasChildNodes() ) - return $frame; - - // Fixes 'cannot access undefined property for object with - // overloaded access', fix by Stefan radulian - // <stefan.radulian@symbion.at> - //foreach ($node->childNodes as $child) { - - // Store the children in an array so that the tree can be modified - $children = array(); - for ($i = 0; $i < $node->childNodes->length; $i++) - $children[] = $node->childNodes->item($i); - - foreach ($children as $child) { - $node_name = mb_strtolower($child->nodeName); - - // Skip non-displaying nodes - if ( in_array($node_name, self::$_HIDDEN_TAGS) ) { - if ( $node_name !== "head" && - $node_name !== "style" ) - $child->parentNode->removeChild($child); - continue; - } - - // Skip empty text nodes - if ( $node_name === "#text" && $child->nodeValue == "" ) { - $child->parentNode->removeChild($child); - continue; - } - - // Skip empty image nodes - if ( $node_name === "img" && $child->getAttribute("src") == "" ) { - $child->parentNode->removeChild($child); - continue; - } - - $frame->append_child($this->_build_tree_r($child), false); - } - - return $frame; - } - - public function insert_node(DOMNode $node, DOMNode $new_node, $pos) { - if ($pos === "after" || !$node->firstChild) - $node->appendChild($new_node); - else - $node->insertBefore($new_node, $node->firstChild); - - $this->_build_tree_r($new_node); - - $frame_id = $new_node->getAttribute("frame_id"); - $frame = $this->get_frame($frame_id); - - $parent_id = $node->getAttribute("frame_id"); - $parent = $this->get_frame($parent_id); - - if ($pos === "before") - $parent->prepend_child($frame, false); - else - $parent->append_child($frame, false); - } -} diff --git a/application/third_party/dompdf/include/functions.inc.php b/application/third_party/dompdf/include/functions.inc.php deleted file mode 100644 index 23c3b1ab..00000000 --- a/application/third_party/dompdf/include/functions.inc.php +++ /dev/null @@ -1,942 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: functions.inc.php,v $ - * Created on: 2004-08-04 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @package dompdf - * - * Changes - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @version 0.5.1.htischer.20090507 - * - trailing slash of base_path in build_url is no longer optional when - * required. This allows paths not ending in a slash, e.g. on dynamically - * created sites with page id in the url parameters. - * @version 20090601 - * - fix windows paths - * @version 20090610 - * - relax windows path syntax, use uniform path delimiter. Used for background images. - */ - -/* $Id: functions.inc.php 361 2011-02-16 21:03:05Z fabien.menager $ */ - -function def($name, $value = true) { - if (!defined($name)) { - define($name, $value); - } -} - -if ( !function_exists("pre_r") ) { -/** - * print_r wrapper for html/cli output - * - * Wraps print_r() output in < pre > tags if the current sapi is not - * 'cli'. Returns the output string instead of displaying it if $return is - * true. - * - * @param mixed $mixed variable or expression to display - * @param bool $return - * - */ -function pre_r($mixed, $return = false) { - if ($return) - return "<pre>" . print_r($mixed, true) . "</pre>"; - - if ( php_sapi_name() !== "cli") - echo ("<pre>"); - print_r($mixed); - - if ( php_sapi_name() !== "cli") - echo("</pre>"); - else - echo ("\n"); - flush(); - -} -} - -if ( !function_exists("pre_var_dump") ) { -/** - * var_dump wrapper for html/cli output - * - * Wraps var_dump() output in < pre > tags if the current sapi is not - * 'cli'. - * - * @param mixed $mixed variable or expression to display. - */ -function pre_var_dump($mixed) { - if ( php_sapi_name() !== "cli") - echo("<pre>"); - - var_dump($mixed); - - if ( php_sapi_name() !== "cli") - echo("</pre>"); -} -} - -if ( !function_exists("d") ) { -/** - * generic debug function - * - * Takes everything and does its best to give a good debug output - * - * @param mixed $mixed variable or expression to display. - */ -function d($mixed) { - if ( php_sapi_name() !== "cli") - echo("<pre>"); - - // line - if (is_array($mixed) && array_key_exists("tallest_frame", $mixed)) { - echo "<strong>LINE</strong>:\n"; - foreach($mixed as $key => $value) { - if (is_array($value) || is_object($value)) continue; - echo " $key:\t".var_export($value,true)."\n"; - } - } - - // other - else { - var_export($mixed); - } - - if ( php_sapi_name() !== "cli") - echo("</pre>"); -} -} - -/** - * builds a full url given a protocol, hostname, base path and url - * - * @param string $protocol - * @param string $host - * @param string $base_path - * @param string $url - * @return string - * - * Initially the trailing slash of $base_path was optional, and conditionally appended. - * However on dynamically created sites, where the page is given as url parameter, - * the base path might not end with an url. - * Therefore do not append a slash, and **require** the $base_url to ending in a slash - * when needed. - * Vice versa, on using the local file system path of a file, make sure that the slash - * is appended (o.k. also for Windows) - */ -function build_url($protocol, $host, $base_path, $url) { - if ( mb_strlen($url) == 0 ) { - //return $protocol . $host . rtrim($base_path, "/\\") . "/"; - return $protocol . $host . $base_path; - } - - // Is the url already fully qualified or a Data URI? - if ( mb_strpos($url, "://") !== false || mb_strpos($url, "data:") === 0 ) - return $url; - - $ret = $protocol; - - if (!in_array(mb_strtolower($protocol), array("http://", "https://", "ftp://", "ftps://"))) { - //On Windows local file, an abs path can begin also with a '\' or a drive letter and colon - //drive: followed by a relative path would be a drive specific default folder. - //not known in php app code, treat as abs path - //($url[1] !== ':' || ($url[2]!=='\\' && $url[2]!=='/')) - if ($url[0] !== '/' && (strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN' || ($url[0] !== '\\' && $url[1] !== ':'))) { - // For rel path and local acess we ignore the host, and run the path through realpath() - $ret .= realpath($base_path).'/'; - } - $ret .= $url; - $ret = preg_replace("/\?(.*)$/", "", $ret); - return $ret; - } - - //remote urls with backslash in html/css are not really correct, but lets be genereous - if ( $url[0] === '/' || $url[0] === '\\' ) { - // Absolute path - $ret .= $host . $url; - } else { - // Relative path - //$base_path = $base_path !== "" ? rtrim($base_path, "/\\") . "/" : ""; - $ret .= $host . $base_path . $url; - } - - return $ret; - -} - -/** - * parse a full url or pathname and return an array(protocol, host, path, - * file + query + fragment) - * - * @param string $url - * @return array - */ -function explode_url($url) { - $protocol = ""; - $host = ""; - $path = ""; - $file = ""; - - $arr = parse_url($url); - - if ( isset($arr["scheme"]) && - $arr["scheme"] !== "file" && - mb_strlen($arr["scheme"]) > 1 ) // Exclude windows drive letters... - { - $protocol = $arr["scheme"] . "://"; - - if ( isset($arr["user"]) ) { - $host .= $arr["user"]; - - if ( isset($arr["pass"]) ) - $host .= "@" . $arr["pass"]; - - $host .= ":"; - } - - if ( isset($arr["host"]) ) - $host .= $arr["host"]; - - if ( isset($arr["port"]) ) - $host .= ":" . $arr["port"]; - - if ( isset($arr["path"]) && $arr["path"] !== "" ) { - // Do we have a trailing slash? - if ( $arr["path"][ mb_strlen($arr["path"]) - 1 ] === "/" ) { - $path = $arr["path"]; - $file = ""; - } else { - $path = dirname($arr["path"]) . "/"; - $file = basename($arr["path"]); - } - } - - if ( isset($arr["query"]) ) - $file .= "?" . $arr["query"]; - - if ( isset($arr["fragment"]) ) - $file .= "#" . $arr["fragment"]; - - } else { - - $i = mb_strpos($url, "file://"); - if ( $i !== false) - $url = mb_substr($url, $i + 7); - - $protocol = ""; // "file://"; ? why doesn't this work... It's because of - // network filenames like //COMPU/SHARENAME - - $host = ""; // localhost, really - $file = basename($url); - - $path = dirname($url); - - // Check that the path exists - if ( $path !== false ) { - $path .= '/'; - - } else { - // generate a url to access the file if no real path found. - $protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https://' : 'http://'; - - $host = isset($_SERVER["HTTP_HOST"]) ? $_SERVER["HTTP_HOST"] : php_uname("n"); - - if ( substr($arr["path"], 0, 1) === '/' ) { - $path = dirname($arr["path"]); - } else { - $path = '/' . rtrim(dirname($_SERVER["SCRIPT_NAME"]), '/') . '/' . $arr["path"]; - } - } - } - - $ret = array($protocol, $host, $path, $file, - "protocol" => $protocol, - "host" => $host, - "path" => $path, - "file" => $file); - return $ret; -} - -/** - * converts decimal numbers to roman numerals - * - * @param int $num - * @return string - */ -function dec2roman($num) { - - static $ones = array("", "i", "ii", "iii", "iv", "v", - "vi", "vii", "viii", "ix"); - static $tens = array("", "x", "xx", "xxx", "xl", "l", - "lx", "lxx", "lxxx", "xc"); - static $hund = array("", "c", "cc", "ccc", "cd", "d", - "dc", "dcc", "dccc", "cm"); - static $thou = array("", "m", "mm", "mmm"); - - if ( !is_numeric($num) ) - throw new DOMPDF_Exception("dec2roman() requires a numeric argument."); - - if ( $num > 4000 || $num < 0 ) - return "(out of range)"; - - $num = strrev((string)$num); - - $ret = ""; - switch (mb_strlen($num)) { - case 4: $ret .= $thou[$num[3]]; - case 3: $ret .= $hund[$num[2]]; - case 2: $ret .= $tens[$num[1]]; - case 1: $ret .= $ones[$num[0]]; - default: break; - } - return $ret; - -} - -/** - * Determines whether $value is a percentage or not - * - * @param float $value - * @return bool - */ -function is_percent($value) { return false !== mb_strpos($value, "%"); } - -/** - * Parses a data URI scheme - * http://en.wikipedia.org/wiki/Data_URI_scheme - * @param string $data_uri The data URI to parse - * @return array The result with charset, mime type and decoded data - */ -function parse_data_uri($data_uri) { - if (!preg_match('/^data:(?P<mime>[a-z0-9\/+-.]+)(;charset=(?P<charset>[a-z0-9-])+)?(?P<base64>;base64)?\,(?P<data>.*)?/i', $data_uri, $match)) { - return false; - } - - $match['data'] = rawurldecode($match['data']); - $result = array( - 'charset' => $match['charset'] ? $match['charset'] : 'US-ASCII', - 'mime' => $match['mime'] ? $match['mime'] : 'text/plain', - 'data' => $match['base64'] ? base64_decode($match['data']) : $match['data'], - ); - - return $result; -} - -/** - * mb_string compatibility - */ -if ( !function_exists("mb_strlen") ) { - - define('MB_OVERLOAD_MAIL', 1); - define('MB_OVERLOAD_STRING', 2); - define('MB_OVERLOAD_REGEX', 4); - define('MB_CASE_UPPER', 0); - define('MB_CASE_LOWER', 1); - define('MB_CASE_TITLE', 2); - - function mb_convert_encoding($data, $to_encoding, $from_encoding = 'UTF-8') { - if (str_replace('-', '', strtolower($to_encoding)) === 'utf8') { - return utf8_encode($data); - } else { - return utf8_decode($data); - } - } - - function mb_detect_encoding($data, $encoding_list = array('iso-8859-1'), $strict = false) { - return 'iso-8859-1'; - } - - function mb_detect_order($encoding_list = array('iso-8859-1')) { - return 'iso-8859-1'; - } - - function mb_internal_encoding($encoding = null) { - if (isset($encoding)) { - return true; - } else { - return 'iso-8859-1'; - } - } - - function mb_strlen($str, $encoding = 'iso-8859-1') { - switch (str_replace('-', '', strtolower($encoding))) { - case "utf8": return strlen(utf8_encode($str)); - case "8bit": return strlen($str); - default: return strlen(utf8_decode($str)); - } - } - - function mb_strpos($haystack, $needle, $offset = 0) { - return strpos($haystack, $needle, $offset); - } - - function mb_strrpos($haystack, $needle, $offset = 0) { - return strrpos($haystack, $needle, $offset); - } - - function mb_strtolower( $str ) { - return strtolower($str); - } - - function mb_strtoupper( $str ) { - return strtoupper($str); - } - - function mb_substr($string, $start, $length = null, $encoding = 'iso-8859-1') { - if ( is_null($length) ) - return substr($string, $start); - else - return substr($string, $start, $length); - } - - function mb_substr_count($haystack, $needle, $encoding = 'iso-8859-1') { - return substr_count($haystack, $needle); - } - - function mb_encode_numericentity($str, $convmap, $encoding) { - return htmlspecialchars($str); - } - - function mb_convert_case($str, $mode = MB_CASE_UPPER, $encoding = array()) { - switch($mode) { - case MB_CASE_UPPER: return mb_strtoupper($str); - case MB_CASE_LOWER: return mb_strtolower($str); - case MB_CASE_TITLE: return ucwords(mb_strtolower($str)); - default: return $str; - } - } - - function mb_list_encodings() { - return array( - "ISO-8859-1", - "UTF-8", - "8bit", - ); - } -} - -/** - * Decoder for RLE8 compression in windows bitmaps - * http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_6x0u.asp - */ -function rle8_decode ($str, $width){ - $lineWidth = $width + (3 - ($width-1) % 4); - $out = ''; - $cnt = strlen($str); - - for ($i = 0; $i <$cnt; $i++) { - $o = ord($str[$i]); - switch ($o){ - case 0: # ESCAPE - $i++; - switch (ord($str[$i])){ - case 0: # NEW LINE - $padCnt = $lineWidth - strlen($out)%$lineWidth; - if ($padCnt<$lineWidth) $out .= str_repeat(chr(0), $padCnt); # pad line - break; - case 1: # END OF FILE - $padCnt = $lineWidth - strlen($out)%$lineWidth; - if ($padCnt<$lineWidth) $out .= str_repeat(chr(0), $padCnt); # pad line - break 3; - case 2: # DELTA - $i += 2; - break; - default: # ABSOLUTE MODE - $num = ord($str[$i]); - for ($j = 0; $j < $num; $j++) - $out .= $str[++$i]; - if ($num % 2) $i++; - } - break; - default: - $out .= str_repeat($str[++$i], $o); - } - } - return $out; -} - -/** - * Decoder for RLE4 compression in windows bitmaps - * see http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_6x0u.asp - */ -function rle4_decode ($str, $width) { - $w = floor($width/2) + ($width % 2); - $lineWidth = $w + (3 - ( ($width-1) / 2) % 4); - $pixels = array(); - $cnt = strlen($str); - - for ($i = 0; $i < $cnt; $i++) { - $o = ord($str[$i]); - switch ($o) { - case 0: # ESCAPE - $i++; - switch (ord($str[$i])){ - case 0: # NEW LINE - while (count($pixels)%$lineWidth!=0) - $pixels[]=0; - break; - case 1: # END OF FILE - while (count($pixels)%$lineWidth!=0) - $pixels[]=0; - break 3; - case 2: # DELTA - $i += 2; - break; - default: # ABSOLUTE MODE - $num = ord($str[$i]); - for ($j = 0; $j < $num; $j++){ - if ($j%2 == 0){ - $c = ord($str[++$i]); - $pixels[] = ($c & 240)>>4; - } else - $pixels[] = $c & 15; - } - if ($num % 2) $i++; - } - break; - default: - $c = ord($str[++$i]); - for ($j = 0; $j < $o; $j++) - $pixels[] = ($j%2==0 ? ($c & 240)>>4 : $c & 15); - } - } - - $out = ''; - if (count($pixels)%2) $pixels[]=0; - $cnt = count($pixels)/2; - - for ($i = 0; $i < $cnt; $i++) - $out .= chr(16*$pixels[2*$i] + $pixels[2*$i+1]); - - return $out; -} - -if ( !function_exists("imagecreatefrombmp") ) { - -/** - * Credit goes to mgutt - * http://www.programmierer-forum.de/function-imagecreatefrombmp-welche-variante-laeuft-t143137.htm - * Modified by Fabien Menager to support RGB555 BMP format - */ -function imagecreatefrombmp($filename) { - try { - // version 1.00 - if (!($fh = fopen($filename, 'rb'))) { - trigger_error('imagecreatefrombmp: Can not open ' . $filename, E_USER_WARNING); - return false; - } - - // read file header - $meta = unpack('vtype/Vfilesize/Vreserved/Voffset', fread($fh, 14)); - - // check for bitmap - if ($meta['type'] != 19778) { - trigger_error('imagecreatefrombmp: ' . $filename . ' is not a bitmap!', E_USER_WARNING); - return false; - } - - // read image header - $meta += unpack('Vheadersize/Vwidth/Vheight/vplanes/vbits/Vcompression/Vimagesize/Vxres/Vyres/Vcolors/Vimportant', fread($fh, 40)); - - // read additional bitfield header - if ($meta['compression'] == 3) { - $meta += unpack('VrMask/VgMask/VbMask', fread($fh, 12)); - } - - //pre_r($filename);pre_r($meta); - - // set bytes and padding - $meta['bytes'] = $meta['bits'] / 8; - $meta['decal'] = 4 - (4 * (($meta['width'] * $meta['bytes'] / 4)- floor($meta['width'] * $meta['bytes'] / 4))); - if ($meta['decal'] == 4) { - $meta['decal'] = 0; - } - - // obtain imagesize - if ($meta['imagesize'] < 1) { - $meta['imagesize'] = $meta['filesize'] - $meta['offset']; - // in rare cases filesize is equal to offset so we need to read physical size - if ($meta['imagesize'] < 1) { - $meta['imagesize'] = @filesize($filename) - $meta['offset']; - if ($meta['imagesize'] < 1) { - trigger_error('imagecreatefrombmp: Can not obtain filesize of ' . $filename . '!', E_USER_WARNING); - return false; - } - } - } - - // calculate colors - $meta['colors'] = !$meta['colors'] ? pow(2, $meta['bits']) : $meta['colors']; - - // read color palette - $palette = array(); - if ($meta['bits'] < 16) { - $palette = unpack('l' . $meta['colors'], fread($fh, $meta['colors'] * 4)); - // in rare cases the color value is signed - if ($palette[1] < 0) { - foreach ($palette as $i => $color) { - $palette[$i] = $color + 16777216; - } - } - } - - // create gd image - $im = imagecreatetruecolor($meta['width'], $meta['height']); - $data = fread($fh, $meta['imagesize']); - - // uncompress data - switch ($meta['compression']) { - case 1: $data = rle8_decode($data, $meta['width']); break; - case 2: $data = rle4_decode($data, $meta['width']); break; - } - - $p = 0; - $vide = chr(0); - $y = $meta['height'] - 1; - $error = 'imagecreatefrombmp: ' . $filename . ' has not enough data!'; - - // loop through the image data beginning with the lower left corner - while ($y >= 0) { - $x = 0; - while ($x < $meta['width']) { - switch ($meta['bits']) { - case 32: - case 24: - if (!($part = substr($data, $p, 3 /*$meta['bytes']*/))) { - trigger_error($error, E_USER_WARNING); - return $im; - } - $color = unpack('V', $part . $vide); - break; - case 16: - if (!($part = substr($data, $p, 2 /*$meta['bytes']*/))) { - trigger_error($error, E_USER_WARNING); - return $im; - } - $color = unpack('v', $part); - - if (empty($meta['rMask']) || $meta['rMask'] != 0xf800) - $color[1] = (($color[1] & 0x7c00) >> 7) * 65536 + (($color[1] & 0x03e0) >> 2) * 256 + (($color[1] & 0x001f) << 3); // 555 - else - $color[1] = (($color[1] & 0xf800) >> 8) * 65536 + (($color[1] & 0x07e0) >> 3) * 256 + (($color[1] & 0x001f) << 3); // 565 - break; - case 8: - $color = unpack('n', $vide . substr($data, $p, 1)); - $color[1] = $palette[ $color[1] + 1 ]; - break; - case 4: - $color = unpack('n', $vide . substr($data, floor($p), 1)); - $color[1] = ($p * 2) % 2 == 0 ? $color[1] >> 4 : $color[1] & 0x0F; - $color[1] = $palette[ $color[1] + 1 ]; - break; - case 1: - $color = unpack('n', $vide . substr($data, floor($p), 1)); - switch (($p * 8) % 8) { - case 0: $color[1] = $color[1] >> 7; break; - case 1: $color[1] = ($color[1] & 0x40) >> 6; break; - case 2: $color[1] = ($color[1] & 0x20) >> 5; break; - case 3: $color[1] = ($color[1] & 0x10) >> 4; break; - case 4: $color[1] = ($color[1] & 0x8 ) >> 3; break; - case 5: $color[1] = ($color[1] & 0x4 ) >> 2; break; - case 6: $color[1] = ($color[1] & 0x2 ) >> 1; break; - case 7: $color[1] = ($color[1] & 0x1 ); break; - } - $color[1] = $palette[ $color[1] + 1 ]; - break; - default: - trigger_error('imagecreatefrombmp: ' . $filename . ' has ' . $meta['bits'] . ' bits and this is not supported!', E_USER_WARNING); - return false; - } - imagesetpixel($im, $x, $y, $color[1]); - $x++; - $p += $meta['bytes']; - } - $y--; - $p += $meta['decal']; - } - fclose($fh); - return $im; - } catch (Exception $e) {var_dump($e);} -} -} - -/** - * getimagesize doesn't give a good size for 32bit BMP image v5 - * - * @param string $filename - * @return array The same format as getimagesize($filename) - */ -function dompdf_getimagesize($filename) { - $size = getimagesize($filename); - - if ( $size[0] == null || $size[1] == null ) { - $data = file_get_contents($filename, null, null, 0, 26); - - if ( substr($data, 0, 2) === "BM" ) { - $meta = unpack('vtype/Vfilesize/Vreserved/Voffset/Vheadersize/Vwidth/Vheight', $data); - $size[0] = (int)$meta['width']; - $size[1] = (int)$meta['height']; - } - } - - return $size; -} - -/** - * Converts a CMYK color to RGB - * - * @param int $c - * @param int $m - * @param int $y - * @param int $k - * @return object - */ -function cmyk_to_rgb($c, $m = null, $y = null, $k = null) { - if (is_array($c)) { - list($c, $m, $y, $k) = $c; - } - - $c *= 255; - $m *= 255; - $y *= 255; - $k *= 255; - - $r = (1 - round(2.55 * ($c+$k))) ; - $g = (1 - round(2.55 * ($m+$k))) ; - $b = (1 - round(2.55 * ($y+$k))) ; - - if($r<0) $r = 0; - if($g<0) $g = 0; - if($b<0) $b = 0; - - return array( - $r, $g, $b, - "r" => $r, "g" => $g, "b" => $b - ); -} - -function unichr($c) { - if ($c <= 0x7F) { - return chr($c); - } else if ($c <= 0x7FF) { - return chr(0xC0 | $c >> 6) . chr(0x80 | $c & 0x3F); - } else if ($c <= 0xFFFF) { - return chr(0xE0 | $c >> 12) . chr(0x80 | $c >> 6 & 0x3F) - . chr(0x80 | $c & 0x3F); - } else if ($c <= 0x10FFFF) { - return chr(0xF0 | $c >> 18) . chr(0x80 | $c >> 12 & 0x3F) - . chr(0x80 | $c >> 6 & 0x3F) - . chr(0x80 | $c & 0x3F); - } - return false; -} - -if ( !function_exists("date_default_timezone_get") ) { - function date_default_timezone_get() { - return ""; - } - - function date_default_timezone_set($timezone_identifier) { - return true; - } -} - -/** - * Stores warnings in an array for display later - * - * This function allows warnings generated by the DomDocument parser - * and CSS loader ({@link Stylesheet}) to be captured and displayed - * later. Without this function, errors are displayed immediately and - * PDF streaming is impossible. - * - * @see http://www.php.net/manual/en/function.set-error_handler.php - * - * @param int $errno - * @param string $errstr - * @param string $errfile - * @param string $errline - */ -function record_warnings($errno, $errstr, $errfile, $errline) { - - if ( !($errno & (E_WARNING | E_NOTICE | E_USER_NOTICE | E_USER_WARNING )) ) // Not a warning or notice - throw new DOMPDF_Exception($errstr . " $errno"); - - global $_dompdf_warnings; - global $_dompdf_show_warnings; - - if ( $_dompdf_show_warnings ) - echo $errstr . "\n"; - - $_dompdf_warnings[] = $errstr; -} - -/** - * Print a useful backtrace - */ -function bt() { - if ( php_sapi_name() !== "cli") - echo("<pre>"); - - $bt = debug_backtrace(); - - array_shift($bt); // remove actual bt() call - echo "\n"; - - $i = 0; - foreach ($bt as $call) { - $file = basename($call["file"]) . " (" . $call["line"] . ")"; - if ( isset($call["class"]) ) { - $func = $call["class"] . "->" . $call["function"] . "()"; - } else { - $func = $call["function"] . "()"; - } - - echo "#" . str_pad($i, 2, " ", STR_PAD_RIGHT) . ": " . str_pad($file.":", 42) . " $func\n"; - $i++; - } - echo "\n"; - - if ( php_sapi_name() !== "cli") - echo("</pre>"); -} - -/** - * Print debug messages - * - * @param string $type The type of debug messages to print - */ -function dompdf_debug($type, $msg) { - global $_DOMPDF_DEBUG_TYPES, $_dompdf_show_warnings, $_dompdf_debug; - if ( isset($_DOMPDF_DEBUG_TYPES[$type]) && ($_dompdf_show_warnings || $_dompdf_debug) ) { - $arr = debug_backtrace(); - - echo basename($arr[0]["file"]) . " (" . $arr[0]["line"] ."): " . $arr[1]["function"] . ": "; - pre_r($msg); - } -} - -if ( !function_exists("print_memusage") ) { -/** - * Dump memory usage - */ -function print_memusage() { - global $memusage; - echo ("Memory Usage\n"); - $prev = 0; - $initial = reset($memusage); - echo (str_pad("Initial:", 40) . $initial . "\n\n"); - - foreach ($memusage as $key=>$mem) { - $mem -= $initial; - echo (str_pad("$key:" , 40)); - echo (str_pad("$mem", 12) . "(diff: " . ($mem - $prev) . ")\n"); - $prev = $mem; - } - - echo ("\n" . str_pad("Total:", 40) . memory_get_usage()) . "\n"; -} -} - -if ( !function_exists("enable_mem_profile") ) { -/** - * Initialize memory profiling code - */ -function enable_mem_profile() { - global $memusage; - $memusage = array("Startup" => memory_get_usage()); - register_shutdown_function("print_memusage"); -} -} - -if ( !function_exists("mark_memusage") ) { -/** - * Record the current memory usage - * - * @param string $location a meaningful location - */ -function mark_memusage($location) { - global $memusage; - if ( isset($memusage) ) - $memusage[$location] = memory_get_usage(); -} -} - -if ( !function_exists('sys_get_temp_dir')) { -/** - * Find the current system temporary directory - * - * @link http://us.php.net/manual/en/function.sys-get-temp-dir.php#85261 - */ -function sys_get_temp_dir() { - if (!empty($_ENV['TMP'])) { return realpath($_ENV['TMP']); } - if (!empty($_ENV['TMPDIR'])) { return realpath( $_ENV['TMPDIR']); } - if (!empty($_ENV['TEMP'])) { return realpath( $_ENV['TEMP']); } - $tempfile=tempnam(uniqid(rand(),TRUE),''); - if (file_exists($tempfile)) { - unlink($tempfile); - return realpath(dirname($tempfile)); - } -} -} - -if ( function_exists("memory_get_peak_usage") ) { - function DOMPDF_memory_usage(){ - return memory_get_peak_usage(true); - } -} -else if ( function_exists("memory_get_peak_usage") ) { - function DOMPDF_memory_usage(){ - return memory_get_usage(true); - } -} -else { - function DOMPDF_memory_usage(){ - return "N/A"; - } -} - -/** - * Affect null to the unused objects - * @param unknown_type $object - */ -function clear_object(&$object) { - if ( is_object($object) ) { - foreach (array_keys((array)$object) as $key) { - clear_object($property); - } - foreach(get_class_vars(get_class($object)) as $property => $value) { - clear_object($property); - } - } - $object = null; - unset($object); -} diff --git a/application/third_party/dompdf/include/gd_adapter.cls.php b/application/third_party/dompdf/include/gd_adapter.cls.php deleted file mode 100644 index 58dde2da..00000000 --- a/application/third_party/dompdf/include/gd_adapter.cls.php +++ /dev/null @@ -1,840 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: gd_adapter.cls.php,v $ - * Created on: 2004-06-06 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: gd_adapter.cls.php 355 2011-01-27 07:44:54Z fabien.menager $ */ - -/** - * Image rendering interface - * - * Renders to an image format supported by GD (jpeg, gif, png, xpm). - * Not super-useful day-to-day but handy nonetheless - * - * @package dompdf - */ -class GD_Adapter implements Canvas { - - /** - * Resoure handle for the image - * - * @var resource - */ - private $_img; - - /** - * Image width in pixels - * - * @var int - */ - private $_width; - - /** - * Image height in pixels - * - * @var int - */ - private $_height; - - /** - * Current page number - * - * @var int - */ - private $_page_number; - - /** - * Total number of pages - * - * @var int - */ - private $_page_count; - - /** - * Image antialias factor - * - * @var float - */ - private $_aa_factor; - - /** - * Allocated colors - * - * @var array - */ - private $_colors; - - /** - * Background color - * - * @var int - */ - private $_bg_color; - - /** - * Class constructor - * - * @param mixed $size The size of image to create: array(x1,y1,x2,y2) or "letter", "legal", etc. - * @param string $orientation The orientation of the document (either 'landscape' or 'portrait') - * @param float $aa_factor Anti-aliasing factor, 1 for no AA - * @param array $bg_color Image background color: array(r,g,b,a), 0 <= r,g,b,a <= 1 - */ - function __construct($size, $orientation = "portrait", $aa_factor = 1, $bg_color = array(1,1,1,0) ) { - - if ( !is_array($size) ) { - $size = strtolower($size); - - if ( isset(CPDF_Adapter::$PAPER_SIZES[$size]) ) - $size = CPDF_Adapter::$PAPER_SIZES[$size]; - else - $size = CPDF_Adapter::$PAPER_SIZES["letter"]; - } - - if ( strtolower($orientation) === "landscape" ) { - list($size[2],$size[3]) = array($size[3],$size[2]); - } - - if ( $aa_factor < 1 ) - $aa_factor = 1; - - $this->_aa_factor = $aa_factor; - - $size[2] *= $aa_factor; - $size[3] *= $aa_factor; - - $this->_width = $size[2] - $size[0]; - $this->_height = $size[3] - $size[1]; - - $this->_img = imagecreatetruecolor($this->_width, $this->_height); - - if ( is_null($bg_color) || !is_array($bg_color) ) { - // Pure white bg - $bg_color = array(1,1,1,0); - } - - $this->_bg_color = $this->_allocate_color($bg_color); - imagealphablending($this->_img, true); - imagesavealpha($this->_img, true); - imagefill($this->_img, 0, 0, $this->_bg_color); - - } - - /** - * Return the GF image resource - * - * @return resource - */ - function get_image() { return $this->_img; } - - /** - * Return the image's width in pixels - * - * @return float - */ - function get_width() { return $this->_width / $this->_aa_factor; } - - /** - * Return the image's height in pixels - * - * @return float - */ - function get_height() { return $this->_height / $this->_aa_factor; } - - /** - * Returns the current page number - * @return int - */ - function get_page_number() { return $this->_page_number; } - - /** - * Returns the total number of pages in the document - * @return int - */ - function get_page_count() { return $this->_page_count; } - - /** - * Sets the current page number - * - * @param int $num - */ - function set_page_number($num) { $this->_page_number = $num; } - - /** - * Sets the page count - * - * @param int $count - */ - function set_page_count($count) { $this->_page_count = $count; } - - /** - * Sets the opacity - * - * @param $opacity - * @param $mode - */ - function set_opacity($opacity, $mode = "Normal") { - // FIXME - } - - /** - * Allocate a new color. Allocate with GD as needed and store - * previously allocated colors in $this->_colors. - * - * @param array $color The new current color - * @return int The allocated color - */ - private function _allocate_color($color) { - - if ( isset($color["c"]) ) { - $color = cmyk_to_rgb($color); - } - - // Full opacity if no alpha set - if ( !isset($color[3]) ) - $color[3] = 0; - - list($r,$g,$b,$a) = $color; - - $r *= 255; - $g *= 255; - $b *= 255; - $a *= 127; - - // Clip values - $r = $r > 255 ? 255 : $r; - $g = $g > 255 ? 255 : $g; - $b = $b > 255 ? 255 : $b; - $a = $a > 127 ? 127 : $a; - - $r = $r < 0 ? 0 : $r; - $g = $g < 0 ? 0 : $g; - $b = $b < 0 ? 0 : $b; - $a = $a < 0 ? 0 : $a; - - $key = sprintf("#%02X%02X%02X%02X", $r, $g, $b, $a); - - if ( isset($this->_colors[$key]) ) - return $this->_colors[$key]; - - if ( $a != 0 ) - $this->_colors[$key] = imagecolorallocatealpha($this->_img, $r, $g, $b, $a); - else - $this->_colors[$key] = imagecolorallocate($this->_img, $r, $g, $b); - - return $this->_colors[$key]; - - } - - /** - * Draws a line from x1,y1 to x2,y2 - * - * See {@link Style::munge_color()} for the format of the color array. - * See {@link Cpdf::setLineStyle()} for a description of the format of the - * $style parameter (aka dash). - * - * @param float $x1 - * @param float $y1 - * @param float $x2 - * @param float $y2 - * @param array $color - * @param float $width - * @param array $style - */ - function line($x1, $y1, $x2, $y2, $color, $width, $style = null) { - - // Scale by the AA factor - $x1 *= $this->_aa_factor; - $y1 *= $this->_aa_factor; - $x2 *= $this->_aa_factor; - $y2 *= $this->_aa_factor; - $width *= $this->_aa_factor; - - $c = $this->_allocate_color($color); - - // Convert the style array if required - if ( !is_null($style) ) { - $gd_style = array(); - - if ( count($style) == 1 ) { - for ($i = 0; $i < $style[0] * $this->_aa_factor; $i++) { - $gd_style[] = $c; - } - - for ($i = 0; $i < $style[0] * $this->_aa_factor; $i++) { - $gd_style[] = $this->_bg_color; - } - - } else { - - $i = 0; - foreach ($style as $length) { - - if ( $i % 2 == 0 ) { - // 'On' pattern - for ($i = 0; $i < $style[0] * $this->_aa_factor; $i++) - $gd_style[] = $c; - - } else { - // Off pattern - for ($i = 0; $i < $style[0] * $this->_aa_factor; $i++) - $gd_style[] = $this->_bg_color; - - } - $i++; - } - } - - imagesetstyle($this->_img, $gd_style); - $c = IMG_COLOR_STYLED; - } - - imagesetthickness($this->_img, $width); - - imageline($this->_img, $x1, $y1, $x2, $y2, $c); - - } - - /** - * Draws a rectangle at x1,y1 with width w and height h - * - * See {@link Style::munge_color()} for the format of the color array. - * See {@link Cpdf::setLineStyle()} for a description of the $style - * parameter (aka dash) - * - * @param float $x1 - * @param float $y1 - * @param float $w - * @param float $h - * @param array $color - * @param float $width - * @param array $style - */ - function rectangle($x1, $y1, $w, $h, $color, $width, $style = null) { - - // Scale by the AA factor - $x1 *= $this->_aa_factor; - $y1 *= $this->_aa_factor; - $w *= $this->_aa_factor; - $h *= $this->_aa_factor; - - $c = $this->_allocate_color($color); - - // Convert the style array if required - if ( !is_null($style) ) { - $gd_style = array(); - - foreach ($style as $length) { - for ($i = 0; $i < $length; $i++) { - $gd_style[] = $c; - } - } - - imagesetstyle($this->_img, $gd_style); - $c = IMG_COLOR_STYLED; - } - - imagesetthickness($this->_img, $width); - - imagerectangle($this->_img, $x1, $y1, $x1 + $w, $y1 + $h, $c); - - } - - /** - * Draws a filled rectangle at x1,y1 with width w and height h - * - * See {@link Style::munge_color()} for the format of the color array. - * - * @param float $x1 - * @param float $y1 - * @param float $w - * @param float $h - * @param array $color - */ - function filled_rectangle($x1, $y1, $w, $h, $color) { - - // Scale by the AA factor - $x1 *= $this->_aa_factor; - $y1 *= $this->_aa_factor; - $w *= $this->_aa_factor; - $h *= $this->_aa_factor; - - $c = $this->_allocate_color($color); - - imagefilledrectangle($this->_img, $x1, $y1, $x1 + $w, $y1 + $h, $c); - - } - - /** - * Starts a clipping rectangle at x1,y1 with width w and height h - * - * @param float $x1 - * @param float $y1 - * @param float $w - * @param float $h - */ - function clipping_rectangle($x1, $y1, $w, $h) { - // @todo - } - - /** - * Ends the last clipping shape - */ - function clipping_end() { - // @todo - } - - function save() { - // @todo - } - - function restore() { - // @todo - } - - function rotate($angle, $x, $y) { - // @todo - } - - function skew($angle_x, $angle_y, $x, $y) { - // @todo - } - - function scale($s_x, $s_y, $x, $y) { - // @todo - } - - function translate($t_x, $t_y) { - // @todo - } - - function transform($a, $b, $c, $d, $e, $f) { - // @todo - } - - /** - * Draws a polygon - * - * The polygon is formed by joining all the points stored in the $points - * array. $points has the following structure: - * <code> - * array(0 => x1, - * 1 => y1, - * 2 => x2, - * 3 => y2, - * ... - * ); - * </code> - * - * See {@link Style::munge_color()} for the format of the color array. - * See {@link Cpdf::setLineStyle()} for a description of the $style - * parameter (aka dash) - * - * @param array $points - * @param array $color - * @param float $width - * @param array $style - * @param bool $fill Fills the polygon if true - */ - function polygon($points, $color, $width = null, $style = null, $fill = false) { - - // Scale each point by the AA factor - foreach (array_keys($points) as $i) - $points[$i] *= $this->_aa_factor; - - $c = $this->_allocate_color($color); - - // Convert the style array if required - if ( !is_null($style) && !$fill ) { - $gd_style = array(); - - foreach ($style as $length) { - for ($i = 0; $i < $length; $i++) { - $gd_style[] = $c; - } - } - - imagesetstyle($this->_img, $gd_style); - $c = IMG_COLOR_STYLED; - } - - imagesetthickness($this->_img, $width); - - if ( $fill ) - imagefilledpolygon($this->_img, $points, count($points) / 2, $c); - else - imagepolygon($this->_img, $points, count($points) / 2, $c); - - } - - /** - * Draws a circle at $x,$y with radius $r - * - * See {@link Style::munge_color()} for the format of the color array. - * See {@link Cpdf::setLineStyle()} for a description of the $style - * parameter (aka dash) - * - * @param float $x - * @param float $y - * @param float $r - * @param array $color - * @param float $width - * @param array $style - * @param bool $fill Fills the circle if true - */ - function circle($x, $y, $r, $color, $width = null, $style = null, $fill = false) { - - // Scale by the AA factor - $x *= $this->_aa_factor; - $y *= $this->_aa_factor; - $r *= $this->_aa_factor; - - $c = $this->_allocate_color($color); - - // Convert the style array if required - if ( !is_null($style) && !$fill ) { - $gd_style = array(); - - foreach ($style as $length) { - for ($i = 0; $i < $length; $i++) { - $gd_style[] = $c; - } - } - - imagesetstyle($this->_img, $gd_style); - $c = IMG_COLOR_STYLED; - } - - imagesetthickness($this->_img, $width); - - if ( $fill ) - imagefilledellipse($this->_img, $x, $y, $r, $r, $c); - else - imageellipse($this->_img, $x, $y, $r, $r, $c); - - } - - /** - * Add an image to the pdf. - * - * The image is placed at the specified x and y coordinates with the - * given width and height. - * - * @param string $img_url the path to the image - * @param string $img_type the type (e.g. extension) of the image - * @param float $x x position - * @param float $y y position - * @param int $w width (in pixels) - * @param int $h height (in pixels) - */ - function image($img_url, $img_type, $x, $y, $w, $h) { - - switch ($img_type) { - case "png": - $src = @imagecreatefrompng($img_url); - break; - - case "gif": - $src = @imagecreatefromgif($img_url); - break; - - case "bmp": - $src = @imagecreatefrombmp($img_url); - break; - - case "jpg": - case "jpeg": - $src = @imagecreatefromjpeg($img_url); - break; - - default: - break; - - } - - if ( !$src ) - return; // Probably should add to $_dompdf_errors or whatever here - - // Scale by the AA factor - $x *= $this->_aa_factor; - $y *= $this->_aa_factor; - - $w *= $this->_aa_factor; - $h *= $this->_aa_factor; - - $img_w = imagesx($src); - $img_h = imagesy($src); - - - imagecopyresampled($this->_img, $src, $x, $y, 0, 0, $w, $h, $img_w, $img_h); - - } - - /** - * Writes text at the specified x and y coordinates - * - * See {@link Style::munge_color()} for the format of the color array. - * - * @param float $x - * @param float $y - * @param string $text the text to write - * @param string $font the font file to use - * @param float $size the font size, in points - * @param array $color - * @param float $adjust word spacing adjustment - * @param float $angle Text angle - */ - function text($x, $y, $text, $font, $size, $color = array(0,0,0), $word_spacing = 0, $char_spacing = 0, $angle = 0) { - - // Scale by the AA factor - $x *= $this->_aa_factor; - $y *= $this->_aa_factor; - $size *= $this->_aa_factor; - - $h = $this->get_font_height($font, $size); - $c = $this->_allocate_color($color); - - $text = mb_encode_numericentity($text, array(0x0080, 0xff, 0, 0xff), 'UTF-8'); - - if ( strpos($font, '.ttf') === false ) - $font .= ".ttf"; - - // FIXME: word spacing - @imagettftext($this->_img, $size, $angle, $x, $y + $h, $c, $font, $text); - - } - - function javascript($code) { - // Not implemented - } - - /** - * Add a named destination (similar to <a name="foo">...</a> in html) - * - * @param string $anchorname The name of the named destination - */ - function add_named_dest($anchorname) { - // Not implemented - } - - /** - * Add a link to the pdf - * - * @param string $url The url to link to - * @param float $x The x position of the link - * @param float $y The y position of the link - * @param float $width The width of the link - * @param float $height The height of the link - */ - function add_link($url, $x, $y, $width, $height) { - // Not implemented - } - - /** - * Add meta information to the PDF - * - * @param string $label label of the value (Creator, Producer, etc.) - * @param string $value the text to set - */ - function add_info($label, $value) { - // N/A - } - - /** - * Calculates text size, in points - * - * @param string $text the text to be sized - * @param string $font the desired font - * @param float $size the desired font size - * @param float $spacing word spacing, if any - * @return float - */ - function get_text_width($text, $font, $size, $word_spacing = 0, $char_spacing = 0) { - - if ( strpos($font, '.ttf') === false ) - $font .= ".ttf"; - - $text = mb_encode_numericentity($text, array(0x0080, 0xffff, 0, 0xffff), 'UTF-8'); - - // FIXME: word spacing - list($x1,,$x2) = @imagettfbbox($size, 0, $font, $text); - return $x2 - $x1; - } - - /** - * Calculates font height, in points - * - * @param string $font - * @param float $size - * @return float - */ - function get_font_height($font, $size) { - if ( strpos($font, '.ttf') === false ) - $font .= ".ttf"; - - // FIXME: word spacing - list(,$y2,,,,$y1) = imagettfbbox($size, 0, $font, "MXjpqytfhl"); // Test string with ascenders, descenders and caps - return ($y2 - $y1) * DOMPDF_FONT_HEIGHT_RATIO; - } - - - /** - * Starts a new page - * - * Subsequent drawing operations will appear on the new page. - */ - function new_page() { - $this->_page_number++; - $this->_page_count++; - } - - function open_object(){ - // N/A - } - - function close_object(){ - // N/A - } - - function add_object(){ - // N/A - } - - function page_text(){ - // N/A - } - - /** - * Streams the image directly to the browser - * - * @param string $filename the name of the image file (ignored) - * @param array $options associative array, 'type' => jpeg|jpg|png, 'quality' => 0 - 100 (jpeg only) - */ - function stream($filename, $options = null) { - - // Perform any antialiasing - if ( $this->_aa_factor != 1 ) { - $dst_w = $this->_width / $this->_aa_factor; - $dst_h = $this->_height / $this->_aa_factor; - $dst = imagecreatetruecolor($dst_w, $dst_h); - imagecopyresampled($dst, $this->_img, 0, 0, 0, 0, - $dst_w, $dst_h, - $this->_width, $this->_height); - } else { - $dst = $this->_img; - } - - if ( !isset($options["type"]) ) - $options["type"] = "png"; - - $type = strtolower($options["type"]); - - header("Cache-Control: private"); - - switch ($type) { - - case "jpg": - case "jpeg": - if ( !isset($options["quality"]) ) - $options["quality"] = 75; - - header("Content-type: image/jpeg"); - imagejpeg($dst, '', $options["quality"]); - break; - - case "png": - default: - header("Content-type: image/png"); - imagepng($dst); - break; - } - - if ( $this->_aa_factor != 1 ) - imagedestroy($dst); - } - - /** - * Returns the PNG as a string - * - * @param array $options associative array, 'type' => jpeg|jpg|png, 'quality' => 0 - 100 (jpeg only) - * @return string - */ - function output($options = null) { - - if ( $this->_aa_factor != 1 ) { - $dst_w = $this->_width / $this->_aa_factor; - $dst_h = $this->_height / $this->_aa_factor; - $dst = imagecreatetruecolor($dst_w, $dst_h); - imagecopyresampled($dst, $this->_img, 0, 0, 0, 0, - $dst_w, $dst_h, - $this->_width, $this->_height); - } else { - $dst = $this->_img; - } - - if ( !isset($options["type"]) ) - $options["type"] = "png"; - - $type = $options["type"]; - - ob_start(); - - switch ($type) { - - case "jpg": - case "jpeg": - if ( !isset($options["quality"]) ) - $options["quality"] = 75; - - imagejpeg($dst, '', $options["quality"]); - break; - - case "png": - default: - imagepng($dst); - break; - } - - $image = ob_get_clean(); - - if ( $this->_aa_factor != 1 ) - imagedestroy($dst); - - return $image; - } - - -} diff --git a/application/third_party/dompdf/include/image_cache.cls.php b/application/third_party/dompdf/include/image_cache.cls.php deleted file mode 100644 index 46dc0c66..00000000 --- a/application/third_party/dompdf/include/image_cache.cls.php +++ /dev/null @@ -1,231 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: image_cache.cls.php,v $ - * Created on: 2004-08-08 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @package dompdf - * - * Changes - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @version 0.5.1.htischer.20090507 - * - On getting type of images don't require any file endings - * and don't strip off url parameters, - * to allowing dynamically generated sites with image id - * in url parameters and not at end of url or missing file extension - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @version dompdf_trunk_with_helmut_mods.20090524 - * - Made debug messages more individually configurable - * @version 20090622 - * - don't cache broken image, but refer to original broken image replacement - */ - -/* $Id: image_cache.cls.php 354 2011-01-24 21:59:54Z fabien.menager $ */ - -/** - * Static class that resolves image urls and downloads and caches - * remote images if required. - * - * @access private - * @package dompdf - */ -class Image_Cache { - - /** - * Array of downloaded images. Cached so that identical images are - * not needlessly downloaded. - * - * @var array - */ - static protected $_cache = array(); - - - /** - * Resolve and fetch an image for use. - * - * @param string $url The url of the image - * @param string $proto Default protocol if none specified in $url - * @param string $host Default host if none specified in $url - * @param string $base_path Default path if none specified in $url - * @return array An array with two elements: The local path to the image and the image extension - */ - static function resolve_url($url, $proto, $host, $base_path) { - global $_dompdf_warnings; - - $parsed_url = explode_url($url); - - $DEBUGPNG=DEBUGPNG; //=DEBUGPNG; Allow override of global setting for ad hoc debug - $full_url_dbg = ''; - - //debugpng - if ($DEBUGPNG) print 'resolve_url('.$url.','.$proto.','.$host.','.$base_path.')('.$parsed_url['protocol'].')'; - - $remote = ($proto != "" && $proto !== "file://"); - $remote = $remote || ($parsed_url['protocol'] != ""); - - $datauri = strpos($parsed_url['protocol'], "data:") === 0; - - if ( !DOMPDF_ENABLE_REMOTE && $remote && !$datauri ) { - $resolved_url = DOMPDF_LIB_DIR . "/res/broken_image.png"; - $ext = "png"; - - //debugpng - if ($DEBUGPNG) $full_url_dbg = '(blockedremote)'; - - } - else if ( DOMPDF_ENABLE_REMOTE && $remote || $datauri ) { - // Download remote files to a temporary directory - $full_url = build_url($proto, $host, $base_path, $url); - - if ( isset(self::$_cache[$full_url]) ) { - list($resolved_url,$ext) = self::$_cache[$full_url]; - - //debugpng - if ($DEBUGPNG) $full_url_dbg = $full_url.'(cache)'; - - } else { - - $resolved_url = tempnam(DOMPDF_TEMP_DIR, "ca_dompdf_img_"); - //debugpng - if ($DEBUGPNG) echo $resolved_url . "\n"; - - if ($datauri) { - if ($parsed_data_uri = parse_data_uri($url)) { - $image = $parsed_data_uri['data']; - list(, $ext) = explode('/', $parsed_data_uri['mime'], 2); - } - } - else { - $old_err = set_error_handler("record_warnings"); - $image = file_get_contents($full_url); - restore_error_handler(); - } - - if ( strlen($image) == 0 ) { - //target image not found - $resolved_url = DOMPDF_LIB_DIR . "/res/broken_image.png"; - $ext = "png"; - - //debugpng - if ($DEBUGPNG) $full_url_dbg = $full_url.'(missing)'; - - } else { - - file_put_contents($resolved_url, $image); - - //e.g. fetch.php?media=url.jpg&cache=1 - //- Image file name might be one of the dynamic parts of the url, don't strip off! - // if ( preg_match("/.*\.(\w+)/",$url,$match) ) $ext = $match[1]; - //- a remote url does not need to have a file extension at all - //- local cached file does not have a matching file extension - //Therefore get image type from the content - - $imagedim = dompdf_getimagesize($resolved_url); - - if( $imagedim[0] && $imagedim[1] && - in_array($imagedim[2], array(IMAGETYPE_GIF, IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETYPE_BMP)) ) { - //target image is valid - - $imagetypes = array('','gif','jpeg','png','swf','psd','bmp'); - $ext = $imagetypes[$imagedim[2]]; - if ( rename($resolved_url,$resolved_url.'.'.$ext) ) { - $resolved_url .= '.'.$ext; - } - - //Don't put replacement image into cache - otherwise it will be deleted on cache cleanup. - //Only execute on successfull caching of remote image. - self::$_cache[$full_url] = array($resolved_url,$ext); - - } else { - //target image is not valid. - unlink($resolved_url); - - $resolved_url = DOMPDF_LIB_DIR . "/res/broken_image.png"; - $ext = "png"; - } - } - - } - - } else { - - $resolved_url = build_url($proto, $host, $base_path, $url); - if ($DEBUGPNG) print 'build_url('.$proto.','.$host.','.$base_path.','.$url.')('.$resolved_url.')'; - - if ( !preg_match("/.*\.(\w+)/",$url,$match) ) { - //debugpng - if ($DEBUGPNG) print '[resolve_url exception '.$url.']'; - throw new DOMPDF_Exception("Unknown image type: $url."); - } - - $ext = $match[1]; - - //debugpng - if ($DEBUGPNG) $full_url_dbg = '(local)'; - - } - - if ( !is_readable($resolved_url) || !filesize($resolved_url) ) { - - //debugpng - if ($DEBUGPNG) $full_url_dbg .= '(nocache'.$resolved_url.')'; - - $_dompdf_warnings[] = "File " .$resolved_url . " is not readable or is an empty file.\n"; - $resolved_url = DOMPDF_LIB_DIR . "/res/broken_image.png"; - $ext = "png"; - } - - //debugpng - if ($DEBUGPNG) print '[resolve_url '.$url.'|'.$full_url_dbg.'|'.$resolved_url.'|'.$ext.']'; - - return array($resolved_url, $ext); - } - - /** - * Unlink all cached images (i.e. temporary images either downloaded - * or converted) - */ - static function clear() { - if ( count(self::$_cache) ) { - while ($entry = array_shift(self::$_cache)) { - list($file, $ext) = $entry; - //debugpng - if (DEBUGPNG) print '[clear unlink '.$file.']'; - if (!DEBUGKEEPTEMP) - //XXX: Should we have some kind of fallback or warning if unlink() fails? - unlink($file); - } - } - } - -} diff --git a/application/third_party/dompdf/include/image_frame_decorator.cls.php b/application/third_party/dompdf/include/image_frame_decorator.cls.php deleted file mode 100644 index e81a4cfd..00000000 --- a/application/third_party/dompdf/include/image_frame_decorator.cls.php +++ /dev/null @@ -1,116 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: image_frame_decorator.cls.php,v $ - * Created on: 2004-08-08 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @package dompdf - * - * Changes - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @version 0.5.1.htischer.20090507 - * - add optional debug output - */ - -/* $Id: image_frame_decorator.cls.php 283 2010-07-19 17:57:40Z fabien.menager $ */ - -/** - * Decorates frames for image layout and rendering - * - * @access private - * @package dompdf - */ -class Image_Frame_Decorator extends Frame_Decorator { - - /** - * The path to the image file (note that remote images are - * downloaded locally to DOMPDF_TEMP_DIR). - * - * @var string - */ - protected $_image_url; - - /** - * The image's file extension (i.e. png, jpeg, gif) - * - * @var string - */ - protected $_image_ext; - - /** - * Class constructor - * - * @param Frame $frame the frame to decorate - * @param DOMPDF $dompdf the document's dompdf object (required to resolve relative & remote urls) - */ - function __construct(Frame $frame, DOMPDF $dompdf) { - global $_dompdf_warnings; - - parent::__construct($frame, $dompdf); - $url = $frame->get_node()->getAttribute("src"); - - //debugpng - if (DEBUGPNG) print '[__construct '.$url.']'; - - list($this->_image_url, $this->_image_ext) = Image_Cache::resolve_url($url, - $dompdf->get_protocol(), - $dompdf->get_host(), - $dompdf->get_base_path()); - - if ( strrpos( $this->_image_url, DOMPDF_LIB_DIR . "/res/broken_image.png", 0) !== false && - $alt = $frame->get_node()->getAttribute("alt") ) { - $style = $frame->get_style(); - $style->width = (4/3)*Font_Metrics::get_text_width($alt, $style->font_family, $style->font_size, $style->word_spacing); - $style->height = Font_Metrics::get_font_height($style->font_family, $style->font_size); - } - } - - /** - * Return the image's url - * - * @return string The url of this image - */ - function get_image_url() { - return $this->_image_url; - } - - /** - * Return the image's file extension - * - * @return string The image's file extension - */ - function get_image_ext() { - return $this->_image_ext; - } - -} diff --git a/application/third_party/dompdf/include/image_frame_reflower.cls.php b/application/third_party/dompdf/include/image_frame_reflower.cls.php deleted file mode 100644 index 153fa3e5..00000000 --- a/application/third_party/dompdf/include/image_frame_reflower.cls.php +++ /dev/null @@ -1,162 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: image_frame_reflower.cls.php,v $ - * Created on: 2004-08-08 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @package dompdf - * - * Changes - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @version 0.5.1.htischer.20090507 - * - Fix image size as percent of wrapping box - * - Fix arithmetic rounding of image size - * - Time consuming additional image file scan only when really needed - */ - -/* $Id: image_frame_reflower.cls.php 357 2011-01-30 20:56:46Z fabien.menager $ */ - -/** - * Image reflower class - * - * @access private - * @package dompdf - */ -class Image_Frame_Reflower extends Frame_Reflower { - - function __construct(Image_Frame_Decorator $frame) { - parent::__construct($frame); - } - - function reflow(Frame_Decorator $block = null) { - $this->_frame->position(); - - //FLOAT - //$frame = $this->_frame; - //$page = $frame->get_root(); - //if (DOMPDF_ENABLE_CSS_FLOAT && $frame->get_style()->float !== "none" ) { - // $page->add_floating_frame($this); - //} - // Set the frame's width - $this->get_min_max_width(); - - if ( $block ) { - $block->add_frame_to_line($this->_frame); - } - } - - function get_min_max_width() { - if (DEBUGPNG) { - // Determine the image's size. Time consuming. Only when really needed? - list($img_width, $img_height) = dompdf_getimagesize($this->_frame->get_image_url()); - print "get_min_max_width() ". - $this->_frame->get_style()->width.' '. - $this->_frame->get_style()->height.';'. - $this->_frame->get_parent()->get_style()->width." ". - $this->_frame->get_parent()->get_style()->height.";". - $this->_frame->get_parent()->get_parent()->get_style()->width.' '. - $this->_frame->get_parent()->get_parent()->get_style()->height.';'. - $img_width. ' '. - $img_height.'|' ; - } - - $style = $this->_frame->get_style(); - - //own style auto or invalid value: use natural size in px - //own style value: ignore suffix text including unit, use given number as px - //own style %: walk up parent chain until found available space in pt; fill available space - // - //special ignored unit: e.g. 10ex: e treated as exponent; x ignored; 10e completely invalid ->like auto - - $width = ($style->width > 0 ? $style->width : 0); - if ( is_percent($width) ) { - $t = 0.0; - for ($f = $this->_frame->get_parent(); $f; $f = $f->get_parent()) { - $t = (float)($f->get_style()->width); //always in pt - if ((float)$t != 0) { - break; - } - } - $width = ((float)rtrim($width,"%") * $t)/100; //maybe 0 - } elseif ( !mb_strpos($width, 'pt') ) { - // Don't set image original size if "%" branch was 0 or size not given. - // Otherwise aspect changed on %/auto combination for width/height - // Resample according to px per inch - // See also List_Bullet_Image_Frame_Decorator::__construct - $width = (float)($width * 72) / DOMPDF_DPI; - } - - $height = ($style->height > 0 ? $style->height : 0); - if ( is_percent($height) ) { - $t = 0.0; - for ($f = $this->_frame->get_parent(); $f; $f = $f->get_parent()) { - $t = (float)($f->get_style()->height); //always in pt - if ((float)$t != 0) { - break; - } - } - $height = ((float)rtrim($height,"%") * $t)/100; //maybe 0 - } elseif ( !mb_strpos($height, 'pt') ) { - // Don't set image original size if "%" branch was 0 or size not given. - // Otherwise aspect changed on %/auto combination for width/height - // Resample according to px per inch - // See also List_Bullet_Image_Frame_Decorator::__construct - $height = (float)($height * 72) / DOMPDF_DPI; - } - - if ($width == 0 || $height == 0) { - // Determine the image's size. Time consuming. Only when really needed! - list($img_width, $img_height) = dompdf_getimagesize($this->_frame->get_image_url()); - - // don't treat 0 as error. Can be downscaled or can be catched elsewhere if image not readable. - // Resample according to px per inch - // See also List_Bullet_Image_Frame_Decorator::__construct - if ($width == 0 && $height == 0) { - $width = (float)($img_width * 72) / DOMPDF_DPI; - $height = (float)($img_height * 72) / DOMPDF_DPI; - } elseif ($height == 0 && $width != 0) { - $height = ($width / $img_width) * $img_height; //keep aspect ratio - } elseif ($width == 0 && $height != 0) { - $width = ($height / $img_height) * $img_width; //keep aspect ratio - } - } - - if (DEBUGPNG) print $width.' '.$height.';'; - - $style->width = $width . "pt"; - $style->height = $height . "pt"; - - return array( $width, $width, "min" => $width, "max" => $width); - - } -} diff --git a/application/third_party/dompdf/include/image_renderer.cls.php b/application/third_party/dompdf/include/image_renderer.cls.php deleted file mode 100644 index 6fef82ab..00000000 --- a/application/third_party/dompdf/include/image_renderer.cls.php +++ /dev/null @@ -1,95 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: image_renderer.cls.php,v $ - * Created on: 2004-08-04 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: image_renderer.cls.php 325 2010-11-07 18:05:59Z fabien.menager $ */ - -/** - * Image renderer - * - * @access private - * @package dompdf - */ -class Image_Renderer extends Block_Renderer { - - function render(Frame $frame) { - // Render background & borders - $style = $frame->get_style(); - $cb = $frame->get_containing_block(); - list($x, $y, $w, $h) = $frame->get_border_box(); - - $this->_set_opacity( $frame->get_opacity( $style->opacity ) ); - - // Handle the last child - if ( ($bg = $style->background_color) !== "transparent" ) - $this->_canvas->filled_rectangle( $x + $widths[3], $y + $widths[0], $w, $h, $bg); - - if ( ($url = $style->background_image) && $url !== "none" ) - $this->_background_image($url, $x + $widths[3], $y + $widths[0], $w, $h, $style); - - $this->_render_border($frame); - $this->_render_outline($frame); - - list($x, $y) = $frame->get_padding_box(); - $x += $style->length_in_pt($style->padding_left, $cb["w"]); - $y += $style->length_in_pt($style->padding_top, $cb["h"]); - - $w = $style->length_in_pt($style->width, $cb["w"]); - $h = $style->length_in_pt($style->height, $cb["h"]); - - if ( strrpos( $frame->get_image_url(), DOMPDF_LIB_DIR . "/res/broken_image.png", 0) !== false && - $alt = $frame->get_node()->getAttribute("alt") ) { - $font = $style->font_family; - $size = $style->font_size; - $spacing = $style->word_spacing; - $this->_canvas->text($x, $y, $alt, - $font, $size, - $style->color, $spacing); - } - else { - $this->_canvas->image( $frame->get_image_url(), $frame->get_image_ext(), $x, $y, $w, $h); - } - - if (DEBUG_LAYOUT && DEBUG_LAYOUT_BLOCKS) { - $this->_debug_layout($frame->get_border_box(), "blue"); - if (DEBUG_LAYOUT_PADDINGBOX) { - $this->_debug_layout($frame->get_padding_box(), "blue", array(0.5, 0.5)); - } - } - } -} diff --git a/application/third_party/dompdf/include/inline_frame_decorator.cls.php b/application/third_party/dompdf/include/inline_frame_decorator.cls.php deleted file mode 100644 index efd66d05..00000000 --- a/application/third_party/dompdf/include/inline_frame_decorator.cls.php +++ /dev/null @@ -1,112 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: inline_frame_decorator.cls.php,v $ - * Created on: 2004-06-02 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @package dompdf - - * - * Changes - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @version 20090610 - * - don't repeat non repeatable background images after a line break - */ - -/* $Id: inline_frame_decorator.cls.php 252 2010-04-19 08:10:45Z flaviencrochard $ */ - -/** - * Decorates frames for inline layout - * - * @access private - * @package dompdf - */ -class Inline_Frame_Decorator extends Frame_Decorator { - - function __construct(Frame $frame, DOMPDF $dompdf) { parent::__construct($frame, $dompdf); } - - function split($frame = null, $force_pagebreak = false) { - - if ( is_null($frame) ) { - $this->get_parent()->split($this, $force_pagebreak); - return; - } - - if ( $frame->get_parent() !== $this ) - throw new DOMPDF_Exception("Unable to split: frame is not a child of this one."); - - $split = $this->copy( $this->_frame->get_node()->cloneNode() ); - $this->get_parent()->insert_child_after($split, $this); - - // Unset the current node's right style properties - $style = $this->_frame->get_style(); - $style->margin_right = "0"; - $style->padding_right = "0"; - $style->border_right_width = "0"; - - // Unset the split node's left style properties since we don't want them - // to propagate - $style = $split->get_style(); - $style->margin_left = "0"; - $style->padding_left = "0"; - $style->border_left_width = "0"; - - //On continuation of inline element on next line, - //don't repeat non-vertically repeatble background images - //See e.g. in testcase image_variants, long desriptions - if ( ($url = $style->background_image) && $url !== "none" - && ($repeat = $style->background_repeat) && $repeat !== "repeat" && $repeat !== "repeat-y" - ) { - $style->background_image = "none"; - } - - // Add $frame and all following siblings to the new split node - $iter = $frame; - while ($iter) { - $frame = $iter; - $iter = $iter->get_next_sibling(); - $frame->reset(); - $split->append_child($frame); - } - - $page_breaks = array("always", "left", "right"); - $frame_style = $frame->get_style(); - if( $force_pagebreak || - in_array($frame_style->page_break_before, $page_breaks) || - in_array($frame_style->page_break_after, $page_breaks) ) { - - $this->get_parent()->split($split, true); - } - } - -} diff --git a/application/third_party/dompdf/include/inline_frame_reflower.cls.php b/application/third_party/dompdf/include/inline_frame_reflower.cls.php deleted file mode 100644 index be2e1759..00000000 --- a/application/third_party/dompdf/include/inline_frame_reflower.cls.php +++ /dev/null @@ -1,99 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: inline_frame_reflower.cls.php,v $ - * Created on: 2004-06-17 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: inline_frame_reflower.cls.php 357 2011-01-30 20:56:46Z fabien.menager $ */ - -/** - * Reflows inline frames - * - * @access private - * @package dompdf - */ -class Inline_Frame_Reflower extends Frame_Reflower { - - function __construct(Frame $frame) { parent::__construct($frame); } - - //........................................................................ - - function reflow(Frame_Decorator $block = null) { - $frame = $this->_frame; - - // Check if a page break is forced - $page = $frame->get_root(); - $page->check_forced_page_break($frame); - - if ( $page->is_full() ) - return; - - $style = $frame->get_style(); - - // Generated content - $this->_set_content(); - - $frame->position(); - - $cb = $frame->get_containing_block(); - - // Add our margin, padding & border to the first and last children - if ( ($f = $frame->get_first_child()) && $f instanceof Text_Frame_Decorator ) { - $f_style = $f->get_style(); - $f_style->margin_left = $style->margin_left; - $f_style->padding_left = $style->padding_left; - $f_style->border_left = $style->border_left; - } - - if ( ($l = $frame->get_last_child()) && $l instanceof Text_Frame_Decorator ) { - $l_style = $l->get_style(); - $l_style->margin_right = $style->margin_right; - $l_style->padding_right = $style->padding_right; - $l_style->border_right = $style->border_right; - } - - if ( $block ) { - $block->add_frame_to_line($this->_frame); - } - - // Set the containing blocks and reflow each child. The containing - // block is not changed by line boxes. - foreach ( $frame->get_children() as $child ) { - $child->set_containing_block($cb); - $child->reflow($block); - } - } -} diff --git a/application/third_party/dompdf/include/inline_positioner.cls.php b/application/third_party/dompdf/include/inline_positioner.cls.php deleted file mode 100644 index 79bd776c..00000000 --- a/application/third_party/dompdf/include/inline_positioner.cls.php +++ /dev/null @@ -1,102 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: inline_positioner.cls.php,v $ - * Created on: 2004-06-08 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: inline_positioner.cls.php 357 2011-01-30 20:56:46Z fabien.menager $ */ -/** - * Positions inline frames - * - * @access private - * @package dompdf - */ -class Inline_Positioner extends Positioner { - - function __construct(Frame_Decorator $frame) { parent::__construct($frame); } - - //........................................................................ - - function position() { - // Find our nearest block level parent and access its lines property. - $p = $this->_frame->find_block_parent(); - - // Debugging code: - -// pre_r("\nPositioning:"); -// pre_r("Me: " . $this->_frame->get_node()->nodeName . " (" . spl_object_hash($this->_frame->get_node()) . ")"); -// pre_r("Parent: " . $p->get_node()->nodeName . " (" . spl_object_hash($p->get_node()) . ")"); - - // End debugging - - if ( !$p ) - throw new DOMPDF_Exception("No block-level parent found. Not good."); - - $f = $this->_frame; - - $cb = $f->get_containing_block(); - $style = $f->get_style(); - $line = $p->get_current_line(); - - // Skip the page break if in a fixed position element - $is_fixed = false; - while($f = $f->get_parent()) { - if($f->get_style()->position === "fixed") { - $is_fixed = true; - break; - } - } - - $f = $this->_frame; - - if ( !$is_fixed && $f->get_parent() && - $f->get_parent() instanceof Inline_Frame_Decorator && - $f->get_node()->nodeName === "#text" ) { - - $min_max = $f->get_reflower()->get_min_max_width(); - $initialcb = $f->get_root()->get_containing_block(); - $height = $style->length_in_pt($style->height, $initialcb["h"]); - - // If the frame doesn't fit in the current line, a line break occurs - if ( $min_max["min"] > ($cb["w"]-$line["left"]-$line["w"]-$line["right"]) ) { - $p->add_line(); - } - } - - $this->_frame->set_position($cb["x"] + $line["w"], $line["y"]); - - } -} diff --git a/application/third_party/dompdf/include/inline_renderer.cls.php b/application/third_party/dompdf/include/inline_renderer.cls.php deleted file mode 100644 index 131e8439..00000000 --- a/application/third_party/dompdf/include/inline_renderer.cls.php +++ /dev/null @@ -1,207 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: inline_renderer.cls.php,v $ - * Created on: 2004-06-30 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: inline_renderer.cls.php 332 2010-11-27 14:06:34Z fabien.menager $ */ - -/** - * Renders inline frames - * - * @access private - * @package dompdf - */ -class Inline_Renderer extends Abstract_Renderer { - - //........................................................................ - - function render(Frame $frame) { - $style = $frame->get_style(); - - if ( !$frame->get_first_child() ) - return; // No children, no service - - // Draw the left border if applicable - $bp = $style->get_border_properties(); - $widths = array($style->length_in_pt($bp["top"]["width"]), - $style->length_in_pt($bp["right"]["width"]), - $style->length_in_pt($bp["bottom"]["width"]), - $style->length_in_pt($bp["left"]["width"])); - - // Draw the background & border behind each child. To do this we need - // to figure out just how much space each child takes: - list($x, $y) = $frame->get_first_child()->get_position(); - $w = null; - $h = 0; -// $x += $widths[3]; -// $y += $widths[0]; - - $this->_set_opacity( $frame->get_opacity( $style->opacity ) ); - - $first_row = true; - - foreach ($frame->get_children() as $child) { - list($child_x, $child_y, $child_w, $child_h) = $child->get_padding_box(); - - if ( !is_null($w) && $child_x < $x + $w ) { - //This branch seems to be supposed to being called on the first part - //of an inline html element, and the part after the if clause for the - //parts after a line break. - //But because $w initially mostly is 0, and gets updated only on the next - //round, this seem to be never executed and the common close always. - - // The next child is on another line. Draw the background & - // borders on this line. - - // Background: - if ( ($bg = $style->background_color) !== "transparent" ) - $this->_canvas->filled_rectangle( $x, $y, $w, $h, $bg); - - if ( ($url = $style->background_image) && $url !== "none" ) { - $this->_background_image($url, $x, $y, $w, $h, $style); - } - - // If this is the first row, draw the left border - if ( $first_row ) { - - if ( $bp["left"]["style"] !== "none" && $bp["left"]["color"] !== "transparent" && $bp["left"]["width"] > 0 ) { - $method = "_border_" . $bp["left"]["style"]; - $this->$method($x, $y, $h + $widths[0] + $widths[2], $bp["left"]["color"], $widths, "left"); - } - $first_row = false; - } - - // Draw the top & bottom borders - if ( $bp["top"]["style"] !== "none" && $bp["top"]["color"] !== "transparent" && $bp["top"]["width"] > 0 ) { - $method = "_border_" . $bp["top"]["style"]; - $this->$method($x, $y, $w + $widths[1] + $widths[3], $bp["top"]["color"], $widths, "top"); - } - - if ( $bp["bottom"]["style"] !== "none" && $bp["bottom"]["color"] !== "transparent" && $bp["bottom"]["width"] > 0 ) { - $method = "_border_" . $bp["bottom"]["style"]; - $this->$method($x, $y + $h + $widths[0] + $widths[2], $w + $widths[1] + $widths[3], $bp["bottom"]["color"], $widths, "bottom"); - } - - // Handle anchors & links - if ( $frame->get_node()->nodeName === "a" ) { - if ( $href = $frame->get_node()->getAttribute("href") ) - $this->_canvas->add_link($href, $x, $y, $w, $h); - } - - $x = $child_x; - $y = $child_y; - $w = $child_w; - $h = $child_h; - continue; - } - - if ( is_null($w) ) - $w = $child_w; - else - $w += $child_w; - - $h = max($h, $child_h); - } - - - // Handle the last child - if ( ($bg = $style->background_color) !== "transparent" ) - $this->_canvas->filled_rectangle( $x + $widths[3], $y + $widths[0], $w, $h, $bg); - - //On continuation lines (after line break) of inline elements, the style got copied. - //But a non repeatable background image should not be repeated on the next line. - //But removing the background image above has never an effect, and removing it below - //removes it always, even on the initial line. - //Need to handle it elsewhere, e.g. on certain ...clone()... usages. - // Repeat not given: default is Style::__construct - // ... && (!($repeat = $style->background_repeat) || $repeat === "repeat" ... - //different position? $this->_background_image($url, $x, $y, $w, $h, $style); - if ( ($url = $style->background_image) && $url !== "none" ) - $this->_background_image($url, $x + $widths[3], $y + $widths[0], $w, $h, $style); - - // Add the border widths - $w += $widths[1] + $widths[3]; - $h += $widths[0] + $widths[2]; - - // make sure the border and background start inside the left margin - $left_margin = $style->length_in_pt($style->margin_left); - $x += $left_margin; - - // If this is the first row, draw the left border too - if ( $first_row && $bp["left"]["style"] !== "none" && $bp["left"]["color"] !== "transparent" && $widths[3] > 0 ) { - $method = "_border_" . $bp["left"]["style"]; - $this->$method($x, $y, $h, $bp["left"]["color"], $widths, "left"); - } - - // Draw the top & bottom borders - if ( $bp["top"]["style"] !== "none" && $bp["top"]["color"] !== "transparent" && $widths[0] > 0 ) { - $method = "_border_" . $bp["top"]["style"]; - $this->$method($x, $y, $w, $bp["top"]["color"], $widths, "top"); - } - - if ( $bp["bottom"]["style"] !== "none" && $bp["bottom"]["color"] !== "transparent" && $widths[2] > 0 ) { - $method = "_border_" . $bp["bottom"]["style"]; - $this->$method($x, $y + $h, $w, $bp["bottom"]["color"], $widths, "bottom"); - } - - // pre_var_dump(get_class($frame->get_next_sibling())); - // $last_row = get_class($frame->get_next_sibling()) !== 'Inline_Frame_Decorator'; - // Draw the right border if this is the last row - if ( $bp["right"]["style"] !== "none" && $bp["right"]["color"] !== "transparent" && $widths[1] > 0 ) { - $method = "_border_" . $bp["right"]["style"]; - $this->$method($x + $w, $y, $h, $bp["right"]["color"], $widths, "right"); - } - - $node = $frame->get_node(); - - // Handle anchors & links - if ( $node->nodeName === "a" ) { - if ( $name = $node->getAttribute("name") ) - $this->_canvas->add_named_dest($name); - - if ( $href = $node->getAttribute("href") ) - $this->_canvas->add_link($href, $x, $y, $w, $h); - } - - if (DEBUG_LAYOUT && DEBUG_LAYOUT_INLINE) { - $this->_debug_layout($child->get_border_box(), "blue"); - if (DEBUG_LAYOUT_PADDINGBOX) { - $this->_debug_layout($child->get_padding_box(), "blue", array(0.5, 0.5)); - } - } - } -} diff --git a/application/third_party/dompdf/include/javascript_embedder.cls.php b/application/third_party/dompdf/include/javascript_embedder.cls.php deleted file mode 100644 index 087f0e5c..00000000 --- a/application/third_party/dompdf/include/javascript_embedder.cls.php +++ /dev/null @@ -1,68 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: php_evaluator.cls.php,v $ - * Created on: 2004-07-12 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - */ - -/* $Id: javascript_embedder.cls.php 291 2010-08-02 20:55:23Z fabien.menager $ */ - -/** - * Embeds Javascript into the PDF document - * - * @access private - * @package dompdf - */ -class Javascript_Embedder { - - /** - * @var DOMPDF - */ - protected $_dompdf; - - function __construct(DOMPDF $dompdf) { - $this->_dompdf = $dompdf; - } - - function insert($code) { - $this->_dompdf->get_canvas()->javascript($code); - } - - function render($frame) { - if ( !DOMPDF_ENABLE_JAVASCRIPT ) - return; - - $this->insert($frame->get_node()->nodeValue); - } -} diff --git a/application/third_party/dompdf/include/list_bullet_frame_decorator.cls.php b/application/third_party/dompdf/include/list_bullet_frame_decorator.cls.php deleted file mode 100644 index 28210198..00000000 --- a/application/third_party/dompdf/include/list_bullet_frame_decorator.cls.php +++ /dev/null @@ -1,96 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: list_bullet_frame_decorator.cls.php,v $ - * Created on: 2004-06-23 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @package dompdf - - * - * Changes - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @version 20090622 - * - bullet size proportional to font size, center position - */ - -/* $Id: list_bullet_frame_decorator.cls.php 325 2010-11-07 18:05:59Z fabien.menager $ */ - -/** - * Decorates frames for list bullet rendering - * - * @access private - * @package dompdf - */ -class List_Bullet_Frame_Decorator extends Frame_Decorator { - - const BULLET_PADDING = 1; // Distance from bullet to text in pt - // As fraction of font size (including descent). See also DECO_THICKNESS. - const BULLET_THICKNESS = 0.04; // Thickness of bullet outline. Screen: 0.08, print: better less, e.g. 0.04 - const BULLET_DESCENT = 0.3; //descent of font below baseline. Todo: Guessed for now. - const BULLET_SIZE = 0.35; // bullet diameter. For now 0.5 of font_size without descent. - - static $BULLET_TYPES = array("disc", "circle", "square"); - - //........................................................................ - - function __construct(Frame $frame, DOMPDF $dompdf) { - parent::__construct($frame, $dompdf); - } - - function get_margin_width() { - $style = $this->_frame->get_style(); - // Small hack to prevent extra indenting of list text on list_style_position === "inside" - // and on suppressed bullet - if ( $style->list_style_position === "outside" || - $style->list_style_type === "none" ) - return 0; - return $style->get_font_size()*self::BULLET_SIZE + 2 * self::BULLET_PADDING; - } - - //hits only on "inset" lists items, to increase height of box - function get_margin_height() { - $style = $this->_frame->get_style(); - if ( $style->list_style_type === 'none' ) return 0; - return $style->get_font_size() * self::BULLET_SIZE + 2 * self::BULLET_PADDING; - } - - function get_width() { - return $this->get_margin_height(); - } - - function get_height() { - return $this->get_margin_height(); - } - - //........................................................................ -} diff --git a/application/third_party/dompdf/include/list_bullet_frame_reflower.cls.php b/application/third_party/dompdf/include/list_bullet_frame_reflower.cls.php deleted file mode 100644 index fcc75e44..00000000 --- a/application/third_party/dompdf/include/list_bullet_frame_reflower.cls.php +++ /dev/null @@ -1,66 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: list_bullet_frame_reflower.cls.php,v $ - * Created on: 2004-06-23 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: list_bullet_frame_reflower.cls.php 357 2011-01-30 20:56:46Z fabien.menager $ */ - -/** - * Reflows list bullets - * - * @access private - * @package dompdf - */ -class List_Bullet_Frame_Reflower extends Frame_Reflower { - - function __construct(Frame_Decorator $frame) { parent::__construct($frame); } - - //........................................................................ - - function reflow(Frame_Decorator $block = null) { - $style = $this->_frame->get_style(); - - $style->width = $this->_frame->get_width(); - $this->_frame->position(); - - if ( $style->list_style_position === "inside" ) { - $p = $this->_frame->find_block_parent(); - $p->add_frame_to_line($this->_frame); - } - - } -} diff --git a/application/third_party/dompdf/include/list_bullet_image_frame_decorator.cls.php b/application/third_party/dompdf/include/list_bullet_image_frame_decorator.cls.php deleted file mode 100644 index cfbeb182..00000000 --- a/application/third_party/dompdf/include/list_bullet_image_frame_decorator.cls.php +++ /dev/null @@ -1,188 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: list_bullet_image_frame_decorator.cls.php,v $ - * Created on: 2005-06-28 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @package dompdf - * - * Changes - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @version 0.5.1.htischer.20090507 - * - added comment - */ - -/* $Id: list_bullet_image_frame_decorator.cls.php 354 2011-01-24 21:59:54Z fabien.menager $ */ - -/** - * Decorates frames for list bullets with custom images - * - * @access private - * @package dompdf - */ -class List_Bullet_Image_Frame_Decorator extends Frame_Decorator { - - /** - * The underlying image frame - * - * @var Image_Frame_Decorator - */ - protected $_img; - - /** - * The image's width in pixels - * - * @var int - */ - protected $_width; - - /** - * The image's height in pixels - * - * @var int - */ - protected $_height; - - /** - * Class constructor - * - * @param Frame $frame the bullet frame to decorate - * @param DOMPDF $dompdf the document's dompdf object - */ - function __construct(Frame $frame, DOMPDF $dompdf) { - $style = $frame->get_style(); - $url = $style->list_style_image; - $frame->get_node()->setAttribute("src", $url); - $this->_img = new Image_Frame_Decorator($frame, $dompdf); - parent::__construct($this->_img, $dompdf); - list($width, $height) = dompdf_getimagesize($this->_img->get_image_url()); - - // Resample the bullet image to be consistent with 'auto' sized images - // See also Image_Frame_Reflower::get_min_max_width - // Tested php ver: value measured in px, suffix "px" not in value: rtrim unnecessary. - $this->_width = (((float)rtrim($width, "px")) * 72) / DOMPDF_DPI; - $this->_height = (((float)rtrim($height, "px")) * 72) / DOMPDF_DPI; - - //If an image is taller as the containing block/box, the box should be extended. - //Neighbour elements are overwriting the overlapping image areas. - //Todo: Where can the box size be extended? - //Code below has no effect. - //See block_frame_reflower _calculate_restricted_height - //See generated_frame_reflower, Dompdf:render() "list-item", "-dompdf-list-bullet"S. - //Leave for now - //if ($style->min_height < $this->_height ) { - // $style->min_height = $this->_height; - //} - //$style->height = "auto"; - } - - /** - * Return the bullet's width - * - * @return int - */ - function get_width() { - //ignore image width, use same width as on predefined bullet List_Bullet_Frame_Decorator - //for proper alignment of bullet image and text. Allow image to not fitting on left border. - //This controls the distance between bullet image and text - //return $this->_width; - return $this->_frame->get_style()->get_font_size()*List_Bullet_Frame_Decorator::BULLET_SIZE + - 2 * List_Bullet_Frame_Decorator::BULLET_PADDING; - } - - /** - * Return the bullet's height - * - * @return int - */ - function get_height() { - //based on image height - return $this->_height; - } - - /** - * Override get_margin_width - * - * @return int - */ - function get_margin_width() { - //ignore image width, use same width as on predefined bullet List_Bullet_Frame_Decorator - //for proper alignment of bullet image and text. Allow image to not fitting on left border. - //This controls the extra indentation of text to make room for the bullet image. - //Here use actual image size, not predefined bullet size - //return $this->_frame->get_style()->get_font_size()*List_Bullet_Frame_Decorator::BULLET_SIZE + - // 2 * List_Bullet_Frame_Decorator::BULLET_PADDING; - - // Small hack to prevent indenting of list text - // Image Might not exist, then position like on list_bullet_frame_decorator fallback to none. - if ( $this->_frame->get_style()->list_style_position === "outside" || - $this->_width == 0) - return 0; - //This aligns the "inside" image position with the text. - //The text starts to the right of the image. - //Between the image and the text there is an added margin of image width. - //Where this comes from is unknown. - //The corresponding List_Bullet_Frame_Decorator sets a smaller margin. bullet size? - return $this->_width + 2 * List_Bullet_Frame_Decorator::BULLET_PADDING; - } - - /** - * Override get_margin_height() - * - * @return int - */ - function get_margin_height() { - //Hits only on "inset" lists items, to increase height of box - //based on image height - return $this->_height + 2 * List_Bullet_Frame_Decorator::BULLET_PADDING; - } - - /** - * Return image url - * - * @return string - */ - function get_image_url() { - return $this->_img->get_image_url(); - } - - /** - * Return the image extension - * - * @return string - */ - function get_image_ext() { - return $this->_img->get_image_ext(); - } - -} diff --git a/application/third_party/dompdf/include/list_bullet_positioner.cls.php b/application/third_party/dompdf/include/list_bullet_positioner.cls.php deleted file mode 100644 index 66a5c12f..00000000 --- a/application/third_party/dompdf/include/list_bullet_positioner.cls.php +++ /dev/null @@ -1,111 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: list_bullet_positioner.cls.php,v $ - * Created on: 2004-06-23 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @package dompdf - - * - * Changes - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @version 20090622 - * - try to adjust top position of bullet to top corner of subsequent font - */ - -/* $Id: list_bullet_positioner.cls.php 216 2010-03-11 22:49:18Z ryan.masten $ */ - -/** - * Positions list bullets - * - * @access private - * @package dompdf - */ -class List_Bullet_Positioner extends Positioner { - - function __construct(Frame_Decorator $frame) { parent::__construct($frame); } - - //........................................................................ - - function position() { - - // Bullets & friends are positioned an absolute distance to the left of - // the content edge of their parent element - $cb = $this->_frame->get_containing_block(); - $style = $this->_frame->get_style(); - - // Note: this differs from most frames in that we must position - // ourselves after determining our width - $x = $cb["x"] - $this->_frame->get_width(); - - $p = $this->_frame->find_block_parent(); - - $y = $p->get_current_line("y"); - - // This is a bit of a hack... - $n = $this->_frame->get_next_sibling(); - if ( $n ) { - $style = $n->get_style(); - $y += $style->length_in_pt( array($style->margin_top, $style->padding_top), - $n->get_containing_block("w") ); - } - - // Now the position is the left top of the block which should be marked with the bullet. - // We tried to find out the y of the start of the first text character within the block. - // But the top margin/padding does not fit, neither from this nor from the next sibling - // The "bit of a hack" above does not work also. - - // Instead let's position the bullet vertically centered to the block which should be marked. - // But for get_next_sibling() the get_containing_block is all zero, and for find_block_parent() - // the get_containing_block is paper width and the entire list as height. - - // if ($p) { - // //$cb = $n->get_containing_block(); - // $cb = $p->get_containing_block(); - // $y += $cb["h"]/2; - // print 'cb:'.$cb["x"].':'.$cb["y"].':'.$cb["w"].':'.$cb["h"].':'; - // } - - // Todo: - // For now give up on the above. Use Guesswork with font y-pos in the middle of the line spacing - - $style = $p->get_style(); - $font_size = $style->get_font_size(); - $line_height = $style->length_in_pt($style->line_height, $font_size); - $y += ($line_height - $font_size) / 2; - - //Position is x-end y-top of character position of the bullet. - $this->_frame->set_position($x, $y); - - } -} diff --git a/application/third_party/dompdf/include/list_bullet_renderer.cls.php b/application/third_party/dompdf/include/list_bullet_renderer.cls.php deleted file mode 100644 index 8655ffd6..00000000 --- a/application/third_party/dompdf/include/list_bullet_renderer.cls.php +++ /dev/null @@ -1,200 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: list_bullet_renderer.cls.php,v $ - * Created on: 2004-06-23 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @package dompdf - - * - * Changes - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @version 20090622 - * - bullet size proportional to font size, center position - */ - -/* $Id: list_bullet_renderer.cls.php 354 2011-01-24 21:59:54Z fabien.menager $ */ - -/** - * Renders list bullets - * - * @access private - * @package dompdf - */ -class List_Bullet_Renderer extends Abstract_Renderer { - - //........................................................................ - private function make_counter($n, $type, $pad = null){ - $n = intval($n); - $text = ""; - $uppercase = false; - - switch ($type) { - case "decimal-leading-zero": - case "decimal": - case "1": - if ($pad) - $text = str_pad($n, $pad, "0", STR_PAD_LEFT); - else - $text = $n; - break; - - case "upper-alpha": - case "upper-latin": - case "A": - $uppercase = true; - case "lower-alpha": - case "lower-latin": - case "a": - $text = chr( ($n % 26) + ord('a') - 1); - break; - - case "upper-roman": - case "I": - $uppercase = true; - case "lower-roman": - case "i": - $text = dec2roman($n); - break; - - case "lower-greek": - $text = unichr($n + 944); - break; - } - - if ($uppercase) - $text = strtoupper($text); - - return $text."."; - } - - function render(Frame $frame) { - - $style = $frame->get_style(); - $font_size = $style->get_font_size(); - $line_height = $style->length_in_pt($style->line_height, $frame->get_containing_block("w")); - - $this->_set_opacity( $frame->get_opacity( $style->opacity ) ); - - // Handle list-style-image - // If list style image is requested but missing, fall back to predefined types - if ( $style->list_style_image !== "none" && - strcmp($img = $frame->get_image_url(), DOMPDF_LIB_DIR . "/res/broken_image.png") != 0) { - - list($x,$y) = $frame->get_position(); - - //For expected size and aspect, instead of box size, use image natural size scaled to DPI. - // Resample the bullet image to be consistent with 'auto' sized images - // See also Image_Frame_Reflower::get_min_max_width - // Tested php ver: value measured in px, suffix "px" not in value: rtrim unnecessary. - //$w = $frame->get_width(); - //$h = $frame->get_height(); - list($width, $height) = dompdf_getimagesize($img); - $w = (((float)rtrim($width, "px")) * 72) / DOMPDF_DPI; - $h = (((float)rtrim($height, "px")) * 72) / DOMPDF_DPI; - - $x -= $w; - $y -= ($line_height - $font_size)/2; //Reverse hinting of list_bullet_positioner - - $this->_canvas->image( $img, $frame->get_image_ext(), $x, $y, $w, $h); - - } else { - - $bullet_style = $style->list_style_type; - - $fill = false; - - switch ($bullet_style) { - - default: - case "disc": - $fill = true; - - case "circle": - list($x,$y) = $frame->get_position(); - $r = ($font_size*(List_Bullet_Frame_Decorator::BULLET_SIZE /*-List_Bullet_Frame_Decorator::BULLET_THICKNESS*/ ))/2; - $x -= $font_size*(List_Bullet_Frame_Decorator::BULLET_SIZE/2); - $y += ($font_size*(1-List_Bullet_Frame_Decorator::BULLET_DESCENT))/2; - $o = $font_size*List_Bullet_Frame_Decorator::BULLET_THICKNESS; - $this->_canvas->circle($x, $y, $r, $style->color, $o, null, $fill); - break; - - case "square": - list($x, $y) = $frame->get_position(); - $w = $font_size*List_Bullet_Frame_Decorator::BULLET_SIZE; - $x -= $w; - $y += ($font_size*(1-List_Bullet_Frame_Decorator::BULLET_DESCENT-List_Bullet_Frame_Decorator::BULLET_SIZE))/2; - $this->_canvas->filled_rectangle($x, $y, $w, $w, $style->color); - break; - - case "decimal-leading-zero": - case "decimal": - case "lower-alpha": - case "lower-latin": - case "lower-roman": - case "lower-greek": - case "upper-alpha": - case "upper-latin": - case "upper-roman": - case "1": // HTML 4.0 compatibility - case "a": - case "i": - case "A": - case "I": - list($x,$y) = $frame->get_position(); - - $pad = null; - if ( $bullet_style === "decimal-leading-zero" ) { - $pad = strlen($frame->get_parent()->get_parent()->get_node()->getAttribute("dompdf-children-count")); - } - - $index = $frame->get_node()->getAttribute("dompdf-counter"); - $text = $this->make_counter($index, $bullet_style, $pad); - $font_family = $style->font_family; - $spacing = 0; //$frame->get_text_spacing() + $style->word_spacing; - - if ( trim($text) == "" ) - return; - - $x -= Font_Metrics::get_text_width($text, $font_family, $font_size, $spacing); - - $this->_canvas->text($x, $y, $text, - $font_family, $font_size, - $style->color, $spacing); - - case "none": - break; - } - } - } -} diff --git a/application/third_party/dompdf/include/null_frame_decorator.cls.php b/application/third_party/dompdf/include/null_frame_decorator.cls.php deleted file mode 100644 index ff3f955a..00000000 --- a/application/third_party/dompdf/include/null_frame_decorator.cls.php +++ /dev/null @@ -1,59 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: null_frame_decorator.cls.php,v $ - * Created on: 2004-07-12 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: null_frame_decorator.cls.php 216 2010-03-11 22:49:18Z ryan.masten $ */ - -/** - * Dummy decorator - * - * @access private - * @package dompdf - */ -class Null_Frame_Decorator extends Frame_Decorator { - - function __construct(Frame $frame, DOMPDF $dompdf) { - parent::__construct($frame, $dompdf); - $style = $this->_frame->get_style(); - $style->width = 0; - $style->height = 0; - $style->margin = 0; - $style->padding = 0; - } - -} diff --git a/application/third_party/dompdf/include/null_frame_reflower.cls.php b/application/third_party/dompdf/include/null_frame_reflower.cls.php deleted file mode 100644 index 6af18ace..00000000 --- a/application/third_party/dompdf/include/null_frame_reflower.cls.php +++ /dev/null @@ -1,54 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: null_frame_reflower.cls.php,v $ - * Created on: 2004-07-12 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: null_frame_reflower.cls.php 357 2011-01-30 20:56:46Z fabien.menager $ */ - -/** - * Dummy reflower - * - * @access private - * @package dompdf - */ -class Null_Frame_Reflower extends Frame_Reflower { - - function __construct(Frame $frame) { parent::__construct($frame); } - - function reflow(Frame_Decorator $block = null) { return; } - -} diff --git a/application/third_party/dompdf/include/null_positioner.cls.php b/application/third_party/dompdf/include/null_positioner.cls.php deleted file mode 100644 index 0e79f816..00000000 --- a/application/third_party/dompdf/include/null_positioner.cls.php +++ /dev/null @@ -1,56 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: null_positioner.cls.php,v $ - * Created on: 2004-07-12 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: null_positioner.cls.php 216 2010-03-11 22:49:18Z ryan.masten $ */ - -/** - * Dummy positioner - * - * @access private - * @package dompdf - */ -class Null_Positioner extends Positioner { - - function __construct(Frame_Decorator $frame) { - parent::__construct($frame); - } - - function position() { return; } - -} diff --git a/application/third_party/dompdf/include/page_cache.cls.php b/application/third_party/dompdf/include/page_cache.cls.php deleted file mode 100644 index a7b7dc87..00000000 --- a/application/third_party/dompdf/include/page_cache.cls.php +++ /dev/null @@ -1,159 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: page_cache.cls.php,v $ - * Created on: 2004-07-23 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: page_cache.cls.php 216 2010-03-11 22:49:18Z ryan.masten $ */ - -/** - * Caches individual rendered PDF pages - * - * Not totally implmented yet. Use at your own risk ;) - * - * @access private - * @package dompdf - * @static - */ -class Page_Cache { - - const DB_USER = "dompdf_page_cache"; - const DB_PASS = "some meaningful password"; - const DB_NAME = "dompdf_page_cache"; - - static private $__connection = null; - - function init() { - if ( is_null(self::$__connection) ) { - $con_str = "host=" . DB_HOST . - " dbname=" . self::DB_NAME . - " user=" . self::DB_USER . - " password=" . self::DB_PASS; - - if ( !self::$__connection = pg_connect($con_str) ) - throw new Exception("Database connection failed."); - } - } - - function __construct() { throw new Exception("Can not create instance of Page_Class. Class is static."); } - - private static function __query($sql) { - if ( !($res = pg_query(self::$__connection, $sql)) ) - throw new Exception(pg_last_error(self::$__connection)); - return $res; - } - - static function store_page($id, $page_num, $data) { - $where = "WHERE id='" . pg_escape_string($id) . "' AND ". - "page_num=". pg_escape_string($page_num); - - $res = self::__query("SELECT timestamp FROM page_cache ". $where); - - $row = pg_fetch_assoc($res); - - if ( $row ) - self::__query("UPDATE page_cache SET data='" . pg_escape_string($data) . "' " . $where); - else - self::__query("INSERT INTO page_cache (id, page_num, data) VALUES ('" . pg_escape_string($id) . "', ". - pg_escape_string($page_num) . ", ". - "'". pg_escape_string($data) . "')"); - - } - - static function store_fonts($id, $fonts) { - self::__query("BEGIN"); - // Update the font information - self::__query("DELETE FROM page_fonts WHERE id='" . pg_escape_string($id) . "'"); - - foreach (array_keys($fonts) as $font) - self::__query("INSERT INTO page_fonts (id, font_name) VALUES ('" . - pg_escape_string($id) . "', '" . pg_escape_string($font) . "')"); - self::__query("COMMIT"); - } - -// static function retrieve_page($id, $page_num) { - -// $res = self::__query("SELECT data FROM page_cache WHERE id='" . pg_escape_string($id) . "' AND ". -// "page_num=". pg_escape_string($page_num)); - -// $row = pg_fetch_assoc($res); - -// return pg_unescape_bytea($row["data"]); - -// } - - static function get_page_timestamp($id, $page_num) { - $res = self::__query("SELECT timestamp FROM page_cache WHERE id='" . pg_escape_string($id) . "' AND ". - "page_num=". pg_escape_string($page_num)); - - $row = pg_fetch_assoc($res); - - return $row["timestamp"]; - - } - - // Adds the cached document referenced by $id to the provided pdf - static function insert_cached_document(CPDF_Adapter $pdf, $id, $new_page = true) { - $res = self::__query("SELECT font_name FROM page_fonts WHERE id='" . pg_escape_string($id) . "'"); - - // Ensure that the fonts needed by the cached document are loaded into - // the pdf - while ($row = pg_fetch_assoc($res)) - $pdf->get_cpdf()->selectFont($row["font_name"]); - - $res = self::__query("SELECT data FROM page_cache WHERE id='" . pg_escape_string($id) . "'"); - - if ( $new_page ) - $pdf->new_page(); - - $first = true; - while ($row = pg_fetch_assoc($res)) { - - if ( !$first ) - $pdf->new_page(); - else - $first = false; - - $page = $pdf->reopen_serialized_object($row["data"]); - //$pdf->close_object(); - $pdf->add_object($page, "add"); - - } - - } -} - -Page_Cache::init(); diff --git a/application/third_party/dompdf/include/page_frame_decorator.cls.php b/application/third_party/dompdf/include/page_frame_decorator.cls.php deleted file mode 100644 index eaa823b7..00000000 --- a/application/third_party/dompdf/include/page_frame_decorator.cls.php +++ /dev/null @@ -1,583 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: page_frame_decorator.cls.php,v $ - * Created on: 2004-06-15 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: page_frame_decorator.cls.php 337 2010-12-01 21:30:27Z fabien.menager $ */ - -/** - * Decorates frames for page layout - * - * @access private - * @package dompdf - */ -class Page_Frame_Decorator extends Frame_Decorator { - - /** - * y value of bottom page margin - * - * @var float - */ - protected $_bottom_page_margin; - - /** - * Flag indicating page is full. - * - * @var bool - */ - protected $_page_full; - - /** - * Number of tables currently being reflowed - * - * @var int - */ - protected $_in_table; - - /** - * The pdf renderer - * - * @var Renderer - */ - protected $_renderer; - - //........................................................................ - - /** - * Class constructor - * - * @param Frame $frame the frame to decorate - */ - function __construct(Frame $frame, DOMPDF $dompdf) { - parent::__construct($frame, $dompdf); - $this->_page_full = false; - $this->_in_table = 0; - $this->_bottom_page_margin = null; - } - - - /** - * Set the renderer used for this pdf - * - * @param Renderer $renderer the renderer to use - */ - function set_renderer($renderer) { - $this->_renderer = $renderer; - } - - /** - * Return the renderer used for this pdf - * - * @return Renderer - */ - function get_renderer() { - return $this->_renderer; - } - - /** - * Set the frame's containing block. Overridden to set $this->_bottom_page_margin. - * - * @param float $x - * @param float $y - * @param float $w - * @param float $h - */ - function set_containing_block($x = null, $y = null, $w = null, $h = null) { - parent::set_containing_block($x,$y,$w,$h); - $w = $this->get_containing_block("w"); - if ( isset($h) ) - $this->_bottom_page_margin = $h; // - $this->_frame->get_style()->length_in_pt($this->_frame->get_style()->margin_bottom, $w); - } - - /** - * Returns true if the page is full and is no longer accepting frames. - * - * @return bool - */ - function is_full() { - return $this->_page_full; - } - - /** - * Start a new page by resetting the full flag. - */ - function next_page() { - $this->_renderer->new_page(); - $this->_page_full = false; - } - - /** - * Indicate to the page that a table is currently being reflowed. - */ - function table_reflow_start() { - $this->_in_table++; - } - - /** - * Indicate to the page that table reflow is finished. - */ - function table_reflow_end() { - $this->_in_table--; - } - - /** - * Return whether we are currently in a nested table or not - * - * @return bool - */ - function in_nested_table() { - return $this->_in_table > 1; - } - - /** - * Check if a forced page break is required before $frame. This uses the - * frame's page_break_before property as well as the preceeding frame's - * page_break_after property. - * - * @link http://www.w3.org/TR/CSS21/page.html#forced - * - * @param Frame $frame the frame to check - * @return bool true if a page break occured - */ - function check_forced_page_break(Frame $frame) { - - // Skip check if page is already split - if ( $this->_page_full ) - return; - - $block_types = array("block", "list-item", "table", "inline"); - $page_breaks = array("always", "left", "right"); - - $style = $frame->get_style(); - - if ( !in_array($style->display, $block_types) ) - return false; - - // Find the previous block-level sibling - $prev = $frame->get_prev_sibling(); - - while ( $prev && !in_array($prev->get_style()->display, $block_types) ) - $prev = $prev->get_prev_sibling(); - - - if ( in_array($style->page_break_before, $page_breaks) ) { - - // Prevent cascading splits - $frame->split(null, true); - // We have to grab the style again here because split() resets - // $frame->style to the frame's orignal style. - $frame->get_style()->page_break_before = "auto"; - $this->_page_full = true; - - return true; - } - - if ( $prev && in_array($prev->get_style()->page_break_after, $page_breaks) ) { - // Prevent cascading splits - $frame->split(null, true); - $prev->get_style()->page_break_after = "auto"; - $this->_page_full = true; - return true; - } - - if( $prev && $prev->get_last_child() && $frame->get_node()->nodeName != "body" ) { - $prev_last_child = $prev->get_last_child(); - if ( in_array($prev_last_child->get_style()->page_break_after, $page_breaks) ) { - $frame->split(null, true); - $prev_last_child->get_style()->page_break_after = "auto"; - $this->_page_full = true; - return true; - } - } - - - return false; - } - - /** - * Determine if a page break is allowed before $frame - * http://www.w3.org/TR/CSS21/page.html#allowed-page-breaks - * - * In the normal flow, page breaks can occur at the following places: - * - * 1. In the vertical margin between block boxes. When a page - * break occurs here, the used values of the relevant - * 'margin-top' and 'margin-bottom' properties are set to '0'. - * 2. Between line boxes inside a block box. - * - * These breaks are subject to the following rules: - * - * * Rule A: Breaking at (1) is allowed only if the - * 'page-break-after' and 'page-break-before' properties of - * all the elements generating boxes that meet at this margin - * allow it, which is when at least one of them has the value - * 'always', 'left', or 'right', or when all of them are - * 'auto'. - * - * * Rule B: However, if all of them are 'auto' and the - * nearest common ancestor of all the elements has a - * 'page-break-inside' value of 'avoid', then breaking here is - * not allowed. - * - * * Rule C: Breaking at (2) is allowed only if the number of - * line boxes between the break and the start of the enclosing - * block box is the value of 'orphans' or more, and the number - * of line boxes between the break and the end of the box is - * the value of 'widows' or more. - * - * * Rule D: In addition, breaking at (2) is allowed only if - * the 'page-break-inside' property is 'auto'. - * - * If the above doesn't provide enough break points to keep - * content from overflowing the page boxes, then rules B and D are - * dropped in order to find additional breakpoints. - * - * If that still does not lead to sufficient break points, rules A - * and C are dropped as well, to find still more break points. - * - * We will also allow breaks between table rows. However, when - * splitting a table, the table headers should carry over to the - * next page (but they don't yet). - * - * @param Frame $frame the frame to check - * @return bool true if a break is allowed, false otherwise - */ - protected function _page_break_allowed(Frame $frame) { - - $block_types = array("block", "list-item", "table", "-dompdf-image"); - dompdf_debug("page-break", "_page_break_allowed(" . $frame->get_node()->nodeName. ")"); - $display = $frame->get_style()->display; - - // Block Frames (1): - if ( in_array($display, $block_types) ) { - - // Avoid breaks within table-cells - if ( $this->_in_table ) { - dompdf_debug("page-break", "In table: " . $this->_in_table); - return false; - } - - // Rules A & B - - if ( $frame->get_style()->page_break_before === "avoid" ) { - dompdf_debug("page-break", "before: avoid"); - return false; - } - - // Find the preceeding block-level sibling - $prev = $frame->get_prev_sibling(); - while ( $prev && !in_array($prev->get_style()->display, $block_types) ) - $prev = $prev->get_prev_sibling(); - - // Does the previous element allow a page break after? - if ( $prev && $prev->get_style()->page_break_after === "avoid" ) { - dompdf_debug("page-break", "after: avoid"); - return false; - } - - // If both $prev & $frame have the same parent, check the parent's - // page_break_inside property. - $parent = $frame->get_parent(); - if ( $prev && $parent && $parent->get_style()->page_break_inside === "avoid" ) { - dompdf_debug("page-break", "parent inside: avoid"); - return false; - } - - // To prevent cascading page breaks when a top-level element has - // page-break-inside: avoid, ensure that at least one frame is - // on the page before splitting. - if ( $parent->get_node()->nodeName === "body" && !$prev ) { - // We are the body's first child - dompdf_debug("page-break", "Body's first child."); - return false; - } - - // If the frame is the first block-level frame, use the value from - // $frame's parent instead. - if ( !$prev && $parent ) - return $this->_page_break_allowed( $parent ); - - dompdf_debug("page-break", "block: break allowed"); - return true; - - } - - // Inline frames (2): - else if ( in_array($display, Style::$INLINE_TYPES) ) { - - // Avoid breaks within table-cells - if ( $this->_in_table ) { - dompdf_debug("page-break", "In table: " . $this->_in_table); - return false; - } - - // Rule C - $block_parent = $frame->find_block_parent(); - if ( count($block_parent->get_lines() ) < $frame->get_style()->orphans ) { - dompdf_debug("page-break", "orphans"); - return false; - } - - // FIXME: Checking widows is tricky without having laid out the - // remaining line boxes. Just ignore it for now... - - // Rule D - $p = $block_parent; - while ($p) { - if ( $p->get_style()->page_break_inside === "avoid" ) { - dompdf_debug("page-break", "parent->inside: avoid"); - return false; - } - $p = $p->find_block_parent(); - } - - // To prevent cascading page breaks when a top-level element has - // page-break-inside: avoid, ensure that at least one frame with - // some content is on the page before splitting. - $prev = $frame->get_prev_sibling(); - while ( $prev && ($prev->get_node()->nodeName === "#text" && trim($prev->get_node()->nodeValue) == "") ) - $prev = $prev->get_prev_sibling(); - - if ( $block_parent->get_node()->nodeName === "body" && !$prev ) { - // We are the body's first child - dompdf_debug("page-break", "Body's first child."); - return false; - } - - // Skip breaks on empty text nodes - if ( $frame->get_node()->nodeName === "#text" && - $frame->get_node()->nodeValue == "" ) - return false; - - dompdf_debug("page-break", "inline: break allowed"); - return true; - - // Table-rows - } else if ( $display === "table-row" ) { - - // Simply check if the parent table's page_break_inside property is - // not 'avoid' - $p = Table_Frame_Decorator::find_parent_table($frame); - - while ($p) { - if ( $p->get_style()->page_break_inside === "avoid" ) { - dompdf_debug("page-break", "parent->inside: avoid"); - return false; - } - $p = $p->find_block_parent(); - } - - // Avoid breaking after the first row of a table - if ( $p && $p->get_first_child() === $frame) { - dompdf_debug("page-break", "table: first-row"); - return false; - } - - // If this is a nested table, prevent the page from breaking - if ( $this->_in_table > 1 ) { - dompdf_debug("page-break", "table: nested table"); - return false; - } - - dompdf_debug("page-break","table-row/row-groups: break allowed"); - return true; - - } else if ( in_array($display, Table_Frame_Decorator::$ROW_GROUPS) ) { - - // Disallow breaks at row-groups: only split at row boundaries - return false; - - } else { - - dompdf_debug("page-break", "? " . $frame->get_style()->display . ""); - return false; - } - - } - - /** - * Check if $frame will fit on the page. If the frame does not fit, - * the frame tree is modified so that a page break occurs in the - * correct location. - * - * @param Frame $frame the frame to check - * @return Frame the frame following the page break - */ - function check_page_break(Frame $frame) { - // Do not split if we have already or if the frame was already - // pushed to the next page (prevents infinite loops) - if ( $this->_page_full || $frame->_already_pushed ) { - return false; - } - - // If the frame is absolute of fixed it shouldn't break - $p = $frame; - do { - if ( in_array($p->get_style()->position, array("fixed", "absolute")) ) - return false; - } while ( $p = $p->get_parent() ); - - $margin_height = $frame->get_margin_height(); - - // FIXME If the row is taller than the page and - // if it the first of the page, we don't break - if ( $frame->get_style()->display === "table-row" && - !$frame->get_prev_sibling() && - $margin_height > $this->get_margin_height() ) - return false; - - // Determine the frame's maximum y value - $max_y = $frame->get_position("y") + $margin_height; - - // If a split is to occur here, then the bottom margins & paddings of all - // parents of $frame must fit on the page as well: - $p = $frame->get_parent(); - while ( $p ) { - $style = $p->get_style(); - $max_y += $style->length_in_pt(array($style->margin_bottom, - $style->padding_bottom, - $style->border_bottom_width)); - $p = $p->get_parent(); - } - - - // Check if $frame flows off the page - if ( $max_y <= $this->_bottom_page_margin ) - // no: do nothing - return false; - - dompdf_debug("page-break", "check_page_break"); - dompdf_debug("page-break", "in_table: " . $this->_in_table); - - // yes: determine page break location - $iter = $frame; - $flg = false; - - $in_table = $this->_in_table; - - dompdf_debug("page-break","Starting search"); - while ( $iter ) { -// echo "\nbacktrack: " .$iter->get_node()->nodeName ." ".spl_object_hash($iter->get_node()). ""; - if ( $iter === $this ) { - dompdf_debug("page-break", "reached root."); - // We've reached the root in our search. Just split at $frame. - break; - } - - if ( $this->_page_break_allowed($iter) ) { - dompdf_debug("page-break","break allowed, splitting."); - $iter->split(null, true); - $this->_page_full = true; - $this->_in_table = $in_table; - $frame->_already_pushed = true; - return true; - } - - if ( !$flg && $next = $iter->get_last_child() ) { - dompdf_debug("page-break", "following last child."); - - if ( in_array($next->get_style()->display, Style::$TABLE_TYPES) ) - $this->_in_table++; - - $iter = $next; - continue; - } - - if ( $next = $iter->get_prev_sibling() ) { - dompdf_debug("page-break", "following prev sibling."); - - if ( in_array($next->get_style()->display, Style::$TABLE_TYPES) && - !in_array($iter->get_style()->display, Style::$TABLE_TYPES) ) - $this->_in_table++; - - else if ( !in_array($next->get_style()->display, Style::$TABLE_TYPES) && - in_array($iter->get_style()->display, Style::$TABLE_TYPES) ) - $this->_in_table--; - - $iter = $next; - $flg = false; - continue; - } - - if ( $next = $iter->get_parent() ) { - dompdf_debug("page-break", "following parent."); - - if ( in_array($iter->get_style()->display, Style::$TABLE_TYPES) ) - $this->_in_table--; - - $iter = $next; - $flg = true; - continue; - } - - break; - } - - $this->_in_table = $in_table; - - // No valid page break found. Just break at $frame. - dompdf_debug("page-break", "no valid break found, just splitting."); - - // If we are in a table, backtrack to the nearest top-level table row - if ( $this->_in_table ) { - $num_tables = $this->_in_table - 1; - - $iter = $frame; - while ( $iter && $num_tables && $iter->get_style->display !== "table" ) { - $iter = $iter->get_parent(); - $num_tables--; - } - - $iter = $frame; - while ($iter && $iter->get_style()->display !== "table-row" ) - $iter = $iter->get_parent(); - } - - $frame->split(null, true); - $this->_page_full = true; - $frame->_already_pushed = true; - return true; - - } - - //........................................................................ - - function split($frame = null, $force_pagebreak = false) { - // Do nothing - } - -} diff --git a/application/third_party/dompdf/include/page_frame_reflower.cls.php b/application/third_party/dompdf/include/page_frame_reflower.cls.php deleted file mode 100644 index 249b3435..00000000 --- a/application/third_party/dompdf/include/page_frame_reflower.cls.php +++ /dev/null @@ -1,245 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: page_frame_reflower.cls.php,v $ - * Created on: 2004-06-16 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: page_frame_reflower.cls.php 357 2011-01-30 20:56:46Z fabien.menager $ */ - -/** - * Reflows pages - * - * @access private - * @package dompdf - */ -class Page_Frame_Reflower extends Frame_Reflower { - - /** - * Cache of the callbacks array - * - * @var array - */ - private $_callbacks; - - /** - * Cache of the canvas - * - * @var Canvas - */ - private $_canvas; - - /** - * This page's floating frames - * - * @var array - */ - private $_floating_frames; - - /** - * true if the page has floating frales - * Used to improve performances as it will - * be accesses everytime - * @var bool - */ - private $_has_floating_frames; - - /** - * The stacking context, containing all z-indexed frames - * @var array - */ - private $_stacking_context = array(); - - function __construct(Page_Frame_Decorator $frame) { parent::__construct($frame); } - - /** - * @return array - */ - function get_floating_frames() { return $this->_floating_frames; } - - /** - * @param $frame Frame - * @return void - */ - function add_frame_to_stacking_context(Frame $frame, $z_index) { - $this->_stacking_context[$z_index][] = $frame; - } - - /** - * Add a floating frame - * - * @param $child Frame - */ - function add_floating_frame(Frame $frame) { - $this->_floating_frames[] = $frame; - $this->_has_floating_frames = true; - } - - /** - * Tells if the page has floating frames - * - * @return bool - */ - function has_floating_frames() { - return $this->_has_floating_frames; - } - - //........................................................................ - - function reflow(Frame_Decorator $block = null) { - $style = $this->_frame->get_style(); - - // Paged layout: - // http://www.w3.org/TR/CSS21/page.html - - // Pages are only concerned with margins - $cb = $this->_frame->get_containing_block(); - $left = $style->length_in_pt($style->margin_left, $cb["w"]); - $right = $style->length_in_pt($style->margin_right, $cb["w"]); - $top = $style->length_in_pt($style->margin_top, $cb["h"]); - $bottom = $style->length_in_pt($style->margin_bottom, $cb["h"]); - - $content_x = $cb["x"] + $left; - $content_y = $cb["y"] + $top; - $content_width = $cb["w"] - $left - $right; - $content_height = $cb["h"] - $top - $bottom; - - $fixed_children = array(); - - $prev_child = null; - $child = $this->_frame->get_first_child(); - $current_page = 0; - - while ($child) { - // Only if it's the first page, we save the nodes with a fixed position - if ($current_page == 0) { - $children = $child->get_children(); - foreach ($children as $onechild) { - if ($onechild->get_style()->position === "fixed") { - $fixed_children[] = $onechild->deep_copy(); - } - } - $fixed_children = array_reverse($fixed_children); - } - - $child->set_containing_block($content_x, $content_y, $content_width, $content_height); - - // Check for begin reflow callback - $this->_check_callbacks("begin_page_reflow", $child); - - //Insert a copy of each node which have a fixed position - if ($current_page >= 1) { - foreach ($fixed_children as $fixed_child) { - $child->insert_child_before($fixed_child->deep_copy(), $child->get_first_child()); - } - } - - $child->reflow(); - $next_child = $child->get_next_sibling(); - - // Check for begin render callback - $this->_check_callbacks("begin_page_render", $child); - - $renderer = $this->_frame->get_renderer(); - - // Render the page - $renderer->render($child); - - // http://www.w3.org/TR/CSS21/visuren.html#z-index - ksort($this->_stacking_context); - - foreach( $this->_stacking_context as $_z_index => $_frames ) { - foreach ( $_frames as $_frame ) { - $renderer->render($_frame); - } - } - - $this->_stacking_context = array(); - - // Check for end render callback - $this->_check_callbacks("end_page_render", $child); - - if ( $next_child ) { - $this->_frame->next_page(); - } - - // Wait to dispose of all frames on the previous page - // so callback will have access to them - if ( $prev_child ) { - $prev_child->dispose(true); - } - $prev_child = $child; - $child = $next_child; - $current_page++; - } - - // Dispose of previous page if it still exists - if ( $prev_child ) { - $prev_child->dispose(true); - } - } - - //........................................................................ - - /** - * Check for callbacks that need to be performed when a given event - * gets triggered on a page - * - * @param string $event the type of event - * @param Frame $frame the frame that event is triggered on - */ - protected function _check_callbacks($event, $frame) { - if (!isset($this->_callbacks)) { - $dompdf = $this->_frame->get_dompdf(); - $this->_callbacks = $dompdf->get_callbacks(); - $this->_canvas = $dompdf->get_canvas(); - } - - if (is_array($this->_callbacks) && isset($this->_callbacks[$event])) { - $info = array(0 => $this->_canvas, "canvas" => $this->_canvas, - 1 => $frame, "frame" => $frame); - $fs = $this->_callbacks[$event]; - foreach ($fs as $f) { - if (is_callable($f)) { - if (is_array($f)) { - $f[0]->$f[1]($info); - } else { - $f($info); - } - } - } - } - } -} diff --git a/application/third_party/dompdf/include/pdflib_adapter.cls.php b/application/third_party/dompdf/include/pdflib_adapter.cls.php deleted file mode 100644 index 859b6be9..00000000 --- a/application/third_party/dompdf/include/pdflib_adapter.cls.php +++ /dev/null @@ -1,1053 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: pdflib_adapter.cls.php,v $ - * Created on: 2005-02-28 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @package dompdf - * - * Changes - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @version 0.5.1.htischer.20090507 - * - Clarify temp file name, optional debug output for temp file tracking - */ - -/* $Id: pdflib_adapter.cls.php 355 2011-01-27 07:44:54Z fabien.menager $ */ - -/** - * PDF rendering interface - * - * PDFLib_Adapter provides a simple, stateless interface to the one - * provided by PDFLib. - * - * Unless otherwise mentioned, all dimensions are in points (1/72 in). - * The coordinate origin is in the top left corner and y values - * increase downwards. - * - * See {@link http://www.pdflib.com/} for more complete documentation - * on the underlying PDFlib functions. - * - * @package dompdf - */ -class PDFLib_Adapter implements Canvas { - - /** - * Dimensions of paper sizes in points - * - * @var array; - */ - static public $PAPER_SIZES = array(); // Set to - // CPDF_Adapter::$PAPER_SIZES below. - - /** - * Whether to create PDFs in memory or on disk - * - * @var bool - */ - static $IN_MEMORY = true; - - /** - * Instance of PDFLib class - * - * @var PDFlib - */ - private $_pdf; - - /** - * Name of temporary file used for PDFs created on disk - * - * @var string - */ - private $_file; - - /** - * PDF width, in points - * - * @var float - */ - private $_width; - - /** - * PDF height, in points - * - * @var height - */ - private $_height; - - /** - * Last fill colour used - * - * @var array - */ - private $_last_fill_color; - - /** - * Last stroke colour used - * - * @var array - */ - private $_last_stroke_color; - - /** - * Cache of image handles - * - * @var array - */ - private $_imgs; - - /** - * Cache of font handles - * - * @var array - */ - private $_fonts; - - /** - * List of objects (templates) to add to multiple pages - * - * @var array - */ - private $_objs; - - /** - * Current page number - * - * @var int - */ - private $_page_number; - - /** - * Total number of pages - * - * @var int - */ - private $_page_count; - - /** - * Text to display on every page - * - * @var array - */ - private $_page_text; - - /** - * Array of pages for accesing after rendering is initially complete - * - * @var array - */ - private $_pages; - - /** - * Class constructor - * - * @param mixed $paper The size of paper to use either a string (see {@link CPDF_Adapter::$PAPER_SIZES}) or - * an array(xmin,ymin,xmax,ymax) - * @param string $orientation The orientation of the document (either 'landscape' or 'portrait') - */ - function __construct($paper = "letter", $orientation = "portrait") { - if ( is_array($paper) ) - $size = $paper; - else if ( isset(self::$PAPER_SIZES[mb_strtolower($paper)]) ) - $size = self::$PAPER_SIZES[mb_strtolower($paper)]; - else - $size = self::$PAPER_SIZES["letter"]; - - if ( mb_strtolower($orientation) === "landscape" ) { - list($size[2], $size[3]) = array($size[3], $size[2]); - } - - $this->_width = $size[2] - $size[0]; - $this->_height= $size[3] - $size[1]; - - $this->_pdf = new PDFLib(); - - if ( defined("DOMPDF_PDFLIB_LICENSE") ) - $this->_pdf->set_parameter( "license", DOMPDF_PDFLIB_LICENSE); - - $this->_pdf->set_parameter("textformat", "utf8"); - $this->_pdf->set_parameter("fontwarning", "false"); - - $this->_pdf->set_info("Creator", "DOMPDF"); - - // Silence pedantic warnings about missing TZ settings - $tz = @date_default_timezone_get(); - date_default_timezone_set("UTC"); - $this->_pdf->set_info("Date", date("Y-m-d")); - date_default_timezone_set($tz); - - if ( self::$IN_MEMORY ) - $this->_pdf->begin_document("",""); - else { - $this->_file = tempnam(DOMPDF_TEMP_DIR, "libdompdf_pdf_").'.pdf'; - $this->_pdf->begin_document($this->_file,""); - } - - $this->_pdf->begin_page_ext($this->_width, $this->_height, ""); - - $this->_page_number = $this->_page_count = 1; - $this->_page_text = array(); - - $this->_imgs = array(); - $this->_fonts = array(); - $this->_objs = array(); - - // Set up font paths - $families = Font_Metrics::get_font_families(); - foreach ($families as $family => $files) { - foreach ($files as $style => $file) { - $face = basename($file); - - // Prefer ttfs to afms - if ( file_exists("$file.ttf") ) { - $outline = "$file.ttf"; - $afm = null; - - } else if ( file_exists("$file.TTF") ) { - $outline = "$file.TTF"; - $afm = null; - - } else if ( file_exists("$file.pfb") ) { - $outline = "$file.pfb"; - - if ( file_exists("$file.afm") ) - $afm = "$file.afm"; - - } else if ( file_exists("$file.PFB") ) { - $outline = "$file.PFB"; - if ( file_exists("$file.AFM") ) - $afm = "$file.AFM"; - } else - continue; - - $this->_pdf->set_parameter("FontOutline", "\{$face\}=\{$outline\}"); - if ( !is_null($afm) ) - $this->_pdf->set_parameter("FontAFM", "\{$face\}=\{$afm\}"); - } - } - } - - /** - * Close the pdf - */ - protected function _close() { - $this->_place_objects(); - - // Close all pages - $this->_pdf->suspend_page(""); - for ($p = 1; $p <= $this->_page_count; $p++) { - $this->_pdf->resume_page("pagenumber=$p"); - $this->_pdf->end_page_ext(""); - } - - $this->_pdf->end_document(""); - } - - - /** - * Returns the PDFLib instance - * - * @return PDFLib - */ - function get_pdflib() { return $this->_pdf; } - - /** - * Add meta information to the PDF - * - * @param string $label label of the value (Creator, Producter, etc.) - * @param string $value the text to set - */ - function add_info($label, $value) { - $this->_pdf->set_info($label, $value); - } - - /** - * Opens a new 'object' (template in PDFLib-speak) - * - * While an object is open, all drawing actions are recorded to the - * object instead of being drawn on the current page. Objects can - * be added later to a specific page or to several pages. - * - * The return value is an integer ID for the new object. - * - * @see PDFLib_Adapter::close_object() - * @see PDFLib_Adapter::add_object() - * - * @return int - */ - function open_object() { - $this->_pdf->suspend_page(""); - $ret = $this->_pdf->begin_template($this->_width, $this->_height); - $this->_pdf->save(); - $this->_objs[$ret] = array("start_page" => $this->_page_number); - return $ret; - } - - /** - * Reopen an existing object (NOT IMPLEMENTED) - * - * PDFLib does not seem to support reopening templates. - * - * @param int $object the ID of a previously opened object - */ - function reopen_object($object) { - throw new DOMPDF_Exception("PDFLib does not support reopening objects."); - } - - /** - * Close the current template - * - * @see PDFLib_Adapter::open_object() - */ - function close_object() { - $this->_pdf->restore(); - $this->_pdf->end_template(); - $this->_pdf->resume_page("pagenumber=".$this->_page_number); - } - - /** - * Adds the specified object to the document - * - * $where can be one of: - * - 'add' add to current page only - * - 'all' add to every page from the current one onwards - * - 'odd' add to all odd numbered pages from now on - * - 'even' add to all even numbered pages from now on - * - 'next' add the object to the next page only - * - 'nextodd' add to all odd numbered pages from the next one - * - 'nexteven' add to all even numbered pages from the next one - * - * @param int $object the object handle returned by open_object() - * @param string $where - */ - function add_object($object, $where = 'all') { - - if ( mb_strpos($where, "next") !== false ) { - $this->_objs[$object]["start_page"]++; - $where = str_replace("next", "", $where); - if ( $where == "" ) - $where = "add"; - } - - $this->_objs[$object]["where"] = $where; - } - - /** - * Stops the specified template from appearing in the document. - * - * The object will stop being displayed on the page following the - * current one. - * - * @param int $object - */ - function stop_object($object) { - - if ( !isset($this->_objs[$object]) ) - return; - - $start = $this->_objs[$object]["start_page"]; - $where = $this->_objs[$object]["where"]; - - // Place the object on this page if required - if ( $this->_page_number >= $start && - (($this->_page_number % 2 == 0 && $where === "even") || - ($this->_page_number % 2 == 1 && $where === "odd") || - ($where === "all")) ) - $this->_pdf->fit_image($object,0,0,""); - - $this->_objs[$object] = null; - unset($this->_objs[$object]); - } - - /** - * Add all active objects to the current page - */ - protected function _place_objects() { - - foreach ( $this->_objs as $obj => $props ) { - $start = $props["start_page"]; - $where = $props["where"]; - - // Place the object on this page if required - if ( $this->_page_number >= $start && - (($this->_page_number % 2 == 0 && $where === "even") || - ($this->_page_number % 2 == 1 && $where === "odd") || - ($where === "all")) ) { - $this->_pdf->fit_image($obj,0,0,""); - } - } - - } - - function get_width() { return $this->_width; } - - function get_height() { return $this->_height; } - - function get_page_number() { return $this->_page_number; } - - function get_page_count() { return $this->_page_count; } - - function set_page_number($num) { $this->_page_number = (int)$num; } - - function set_page_count($count) { $this->_page_count = (int)$count; } - - - /** - * Sets the line style - * - * @param float width - * @param string corner - * @param string join - * @param array dash - */ - protected function _set_line_style($width, $cap, $join, $dash) { - - if ( count($dash) == 1 ) - $dash[] = $dash[0]; - - if ( count($dash) > 1 ) - $this->_pdf->setdashpattern("dasharray={" . implode(" ", $dash) . "}"); - else - $this->_pdf->setdash(0,0); - - switch ( $join ) { - case "miter": - $this->_pdf->setlinejoin(0); - break; - - case "round": - $this->_pdf->setlinejoin(1); - break; - - case "bevel": - $this->_pdf->setlinejoin(2); - break; - - default: - break; - } - - switch ( $cap ) { - case "butt": - $this->_pdf->setlinecap(0); - break; - - case "round": - $this->_pdf->setlinecap(1); - break; - - case "square": - $this->_pdf->setlinecap(2); - break; - - default: - break; - } - - $this->_pdf->setlinewidth($width); - - } - - /** - * Sets the line color - * - * @param array $color array(r,g,b) - */ - protected function _set_stroke_color($color) { - if($this->_last_stroke_color == $color) - return; - - $this->_last_stroke_color = $color; - - if (isset($color[3])) { - $type = "cmyk"; - list($c1, $c2, $c3, $c4) = array($color[0], $color[1], $color[2], $color[3]); - } - elseif (isset($color[2])) { - $type = "rgb"; - list($c1, $c2, $c3, $c4) = array($color[0], $color[1], $color[2], null); - } - else { - $type = "gray"; - list($c1, $c2, $c3, $c4) = array($color[0], $color[1], null, null); - } - - $this->_pdf->setcolor("stroke", $type, $c1, $c2, $c3, $c4); - } - - /** - * Sets the fill color - * - * @param array $color array(r,g,b) - */ - protected function _set_fill_color($color) { - if($this->_last_fill_color == $color) - return; - - $this->_last_fill_color = $color; - - if (isset($color[3])) { - $type = "cmyk"; - list($c1, $c2, $c3, $c4) = array($color[0], $color[1], $color[2], $color[3]); - } - elseif (isset($color[2])) { - $type = "rgb"; - list($c1, $c2, $c3, $c4) = array($color[0], $color[1], $color[2], null); - } - else { - $type = "gray"; - list($c1, $c2, $c3, $c4) = array($color[0], $color[1], null, null); - } - - $this->_pdf->setcolor("fill", $type, $c1, $c2, $c3, $c4); - } - - /** - * Sets the opacity - * - * @param $opacity - * @param $mode - */ - function set_opacity($opacity, $mode = "Normal") { - if ( $mode === "Normal" ) { - $gstate = $this->_pdf->create_gstate("opacityfill=$opacity opacitystroke=$opacity"); - $this->_pdf->set_gstate($gstate); - } - } - - /** - * Loads a specific font and stores the corresponding descriptor. - * - * @param string $font - * @return int the font descriptor for the font - */ - protected function _load_font($font, $encoding = null, $options = "") { - - // Check if the font is a native PDF font - // Embed non-native fonts - $native_fonts = array("courier", "courier-bold", "courier-oblique", "courier-boldoblique", - "helvetica", "helvetica-bold", "helvetica-oblique", "helvetica-boldoblique", - "times-roman", "times-bold", "times-italic", "times-bolditalic", - "symbol", "zapfdinbats"); - - $test = strtolower(basename($font)); - if ( in_array($test, $native_fonts) ) { - $font = basename($font); - - } else { - // Embed non-native fonts - $options .= " embedding=true"; - } - - if ( is_null($encoding) ) { - - // Unicode encoding is only available for the commerical - // version of PDFlib and not PDFlib-Lite - if ( defined("DOMPDF_PDFLIB_LICENSE") ) - $encoding = "unicode"; - else - $encoding = "auto"; - - } - - $key = "$font:$encoding:$options"; - - if ( isset($this->_fonts[$key]) ) - return $this->_fonts[$key]; - - else { - - $this->_fonts[$key] = $this->_pdf->load_font($font, $encoding, $options); - return $this->_fonts[$key]; - - } - - } - - /** - * Remaps y coords from 4th to 1st quadrant - * - * @param float $y - * @return float - */ - protected function y($y) { return $this->_height - $y; } - - //........................................................................ - - function line($x1, $y1, $x2, $y2, $color, $width, $style = null) { - $this->_set_line_style($width, "butt", "", $style); - $this->_set_stroke_color($color); - - $y1 = $this->y($y1); - $y2 = $this->y($y2); - - $this->_pdf->moveto($x1,$y1); - $this->_pdf->lineto($x2, $y2); - $this->_pdf->stroke(); - } - - //........................................................................ - - function rectangle($x1, $y1, $w, $h, $color, $width, $style = null) { - $this->_set_stroke_color($color); - $this->_set_line_style($width, "butt", "", $style); - - $y1 = $this->y($y1) - $h; - - $this->_pdf->rect($x1, $y1, $w, $h); - $this->_pdf->stroke(); - } - - //........................................................................ - - function filled_rectangle($x1, $y1, $w, $h, $color) { - $this->_set_fill_color($color); - - $y1 = $this->y($y1) - $h; - - $this->_pdf->rect(floatval($x1), floatval($y1), floatval($w), floatval($h)); - $this->_pdf->fill(); - } - - function clipping_rectangle($x1, $y1, $w, $h) { - $this->_pdf->save(); - - $y1 = $this->y($y1) - $h; - - $this->_pdf->rect(floatval($x1), floatval($y1), floatval($w), floatval($h)); - $this->_pdf->clip(); - } - - function clipping_end() { - $this->_pdf->restore(); - } - - function save() { - $this->_pdf->save(); - } - - function restore() { - $this->_pdf->restore(); - } - - function rotate($angle, $x, $y) { - $pdf = $this->_pdf; - $pdf->translate($x, $this->_height-$y); - $pdf->rotate(-$angle); - $pdf->translate(-$x, -$this->_height+$y); - } - - function skew($angle_x, $angle_y, $x, $y) { - $pdf = $this->_pdf; - $pdf->translate($x, $this->_height-$y); - $pdf->skew($angle_y, $angle_x); // Needs to be inverted - $pdf->translate(-$x, -$this->_height+$y); - } - - function scale($s_x, $s_y, $x, $y) { - $pdf = $this->_pdf; - $pdf->translate($x, $this->_height-$y); - $pdf->scale($s_x, $s_y); - $pdf->translate(-$x, -$this->_height+$y); - } - - function translate($t_x, $t_y) { - $this->_pdf->translate($t_x, -$t_y); - } - - function transform($a, $b, $c, $d, $e, $f) { - $this->_pdf->concat($a, $b, $c, $d, $e, $f); - } - - //........................................................................ - - function polygon($points, $color, $width = null, $style = null, $fill = false) { - - $this->_set_fill_color($color); - $this->_set_stroke_color($color); - - if ( !$fill && isset($width) ) - $this->_set_line_style($width, "square", "miter", $style); - - $y = $this->y(array_pop($points)); - $x = array_pop($points); - $this->_pdf->moveto($x,$y); - - while (count($points) > 1) { - $y = $this->y(array_pop($points)); - $x = array_pop($points); - $this->_pdf->lineto($x,$y); - } - - if ( $fill ) - $this->_pdf->fill(); - else - $this->_pdf->closepath_stroke(); - } - - //........................................................................ - - function circle($x, $y, $r, $color, $width = null, $style = null, $fill = false) { - - $this->_set_fill_color($color); - $this->_set_stroke_color($color); - - if ( !$fill && isset($width) ) - $this->_set_line_style($width, "round", "round", $style); - - $y = $this->y($y); - - $this->_pdf->circle($x, $y, $r); - - if ( $fill ) - $this->_pdf->fill(); - else - $this->_pdf->stroke(); - - } - - //........................................................................ - - function image($img_url, $img_type, $x, $y, $w, $h) { - $w = (int)$w; - $h = (int)$h; - - $img_type = strtolower($img_type); - - if ( $img_type === "jpg" ) - $img_type = "jpeg"; - - if ( isset($this->_imgs[$img_url]) ) - $img = $this->_imgs[$img_url]; - - else { - - $img = $this->_imgs[$img_url] = $this->_pdf->load_image($img_type, $img_url, ""); - } - - $y = $this->y($y) - $h; - $this->_pdf->fit_image($img, $x, $y, 'boxsize={'. "$w $h" .'} fitmethod=entire'); - - } - - //........................................................................ - - function text($x, $y, $text, $font, $size, $color = array(0,0,0), $word_spacing = 0, $char_spacing = 0, $angle = 0) { - $fh = $this->_load_font($font); - - $this->_pdf->setfont($fh, $size); - $this->_set_fill_color($color); - - $y = $this->y($y) - Font_Metrics::get_font_height($font, $size); - - $word_spacing = (float)$word_spacing; - $char_spacing = (float)$char_spacing; - $angle = -(float)$angle; - - $this->_pdf->fit_textline($text, $x, $y, "rotate=$angle wordspacing=$word_spacing charspacing=$char_spacing "); - - } - - //........................................................................ - - function javascript($code) { - if ( defined("DOMPDF_PDFLIB_LICENSE") ) { - $this->_pdf->create_action("JavaScript", $code); - } - } - - //........................................................................ - - /** - * Add a named destination (similar to <a name="foo">...</a> in html) - * - * @param string $anchorname The name of the named destination - */ - function add_named_dest($anchorname) { - $this->_pdf->add_nameddest($anchorname,""); - } - - //........................................................................ - - /** - * Add a link to the pdf - * - * @param string $url The url to link to - * @param float $x The x position of the link - * @param float $y The y position of the link - * @param float $width The width of the link - * @param float $height The height of the link - */ - function add_link($url, $x, $y, $width, $height) { - - $y = $this->y($y) - $height; - if ( strpos($url, '#') === 0 ) { - // Local link - $name = substr($url,1); - if ( $name ) - $this->_pdf->create_annotation($x, $y, $x + $width, $y + $height, 'Link', "contents={$url} destname=". substr($url,1) . " linewidth=0"); - } else { - - list($proto, $host, $path, $file) = explode_url($url); - - if ( $proto == "" || $proto === "file://" ) - return; // Local links are not allowed - $url = build_url($proto, $host, $path, $file); - $url = '{' . rawurldecode($url) . '}'; - - $action = $this->_pdf->create_action("URI", "url=" . $url); - $this->_pdf->create_annotation($x, $y, $x + $width, $y + $height, 'Link', "contents={$url} action={activate=$action} linewidth=0"); - } - } - - //........................................................................ - - function get_text_width($text, $font, $size, $word_spacing = 0, $letter_spacing = 0) { - $fh = $this->_load_font($font); - - // Determine the additional width due to extra spacing - $num_spaces = mb_substr_count($text," "); - $delta = $word_spacing * $num_spaces; - - if ( $letter_spacing ) { - $num_chars = mb_strlen($text); - $delta += ($num_chars - $num_spaces) * $letter_spacing; - } - - return $this->_pdf->stringwidth($text, $fh, $size) + $delta; - } - - //........................................................................ - - function get_font_height($font, $size) { - - $fh = $this->_load_font($font); - - $this->_pdf->setfont($fh, $size); - - $asc = $this->_pdf->get_value("ascender", $fh); - $desc = $this->_pdf->get_value("descender", $fh); - - // $desc is usually < 0, - return $size * ($asc - $desc) * DOMPDF_FONT_HEIGHT_RATIO; - } - - //........................................................................ - - /** - * Writes text at the specified x and y coordinates on every page - * - * The strings '{PAGE_NUM}' and '{PAGE_COUNT}' are automatically replaced - * with their current values. - * - * See {@link Style::munge_colour()} for the format of the colour array. - * - * @param float $x - * @param float $y - * @param string $text the text to write - * @param string $font the font file to use - * @param float $size the font size, in points - * @param array $color - * @param float $adjust word spacing adjustment - * @param float $angle angle to write the text at, measured CW starting from the x-axis - */ - function page_text($x, $y, $text, $font, $size, $color = array(0,0,0), - $adjust = 0, $angle = 0) { - $_t = "text"; - $this->_page_text[] = compact("_t", "x", "y", "text", "font", "size", "color", "adjust", "angle"); - } - - //........................................................................ - - /** - * Processes a script on every page - * - * The variables $pdf, $PAGE_NUM, and $PAGE_COUNT are available. - * - * This function can be used to add page numbers to all pages - * after the first one, for example. - * - * @param string $code the script code - * @param string $type the language type for script - */ - function page_script($code, $type = "text/php") { - $_t = "script"; - $this->_page_text[] = compact("_t", "code", "type"); - } - - //........................................................................ - - function new_page() { - - // Add objects to the current page - $this->_place_objects(); - - $this->_pdf->suspend_page(""); - $this->_pdf->begin_page_ext($this->_width, $this->_height, ""); - $this->_page_number = ++$this->_page_count; - - } - - //........................................................................ - - /** - * Add text to each page after rendering is complete - */ - protected function _add_page_text() { - - if ( !count($this->_page_text) ) - return; - - $this->_pdf->suspend_page(""); - - for ($p = 1; $p <= $this->_page_count; $p++) { - $this->_pdf->resume_page("pagenumber=$p"); - - foreach ($this->_page_text as $pt) { - extract($pt); - - switch ($_t) { - - case "text": - $text = str_replace(array("{PAGE_NUM}","{PAGE_COUNT}"), - array($p, $this->_page_count), $text); - $this->text($x, $y, $text, $font, $size, $color, $adjust, $angle); - break; - - case "script": - if (!$eval) { - $eval = new PHP_Evaluator($this); - } - $eval->evaluate($code, array('PAGE_NUM' => $p, 'PAGE_COUNT' => $this->_page_count)); - break; - } - } - - $this->_pdf->suspend_page(""); - } - - $this->_pdf->resume_page("pagenumber=".$this->_page_number); - } - - //........................................................................ - - function stream($filename, $options = null) { - - // Add page text - $this->_add_page_text(); - - if ( isset($options["compress"]) && $options["compress"] != 1 ) - $this->_pdf->set_value("compress", 0); - else - $this->_pdf->set_value("compress", 6); - - $this->_close(); - - if ( self::$IN_MEMORY ) { - $data = $this->_pdf->get_buffer(); - $size = strlen($data); - - } else - $size = filesize($this->_file); - - - $filename = str_replace(array("\n","'"),"", $filename); - $attach = (isset($options["Attachment"]) && $options["Attachment"]) ? "attachment" : "inline"; - - header("Cache-Control: private"); - header("Content-type: application/pdf"); - header("Content-Disposition: $attach; filename=\"$filename\""); - - //header("Content-length: " . $size); - - if ( self::$IN_MEMORY ) - echo $data; - - else { - - // Chunked readfile() - $chunk = (1 << 21); // 2 MB - $fh = fopen($this->_file, "rb"); - if ( !$fh ) - throw new DOMPDF_Exception("Unable to load temporary PDF file: " . $this->_file); - - while ( !feof($fh) ) - echo fread($fh,$chunk); - fclose($fh); - - //debugpng - if (DEBUGPNG) print '[pdflib stream unlink '.$this->_file.']'; - if (!DEBUGKEEPTEMP) - - unlink($this->_file); - $this->_file = null; - unset($this->_file); - } - - flush(); - } - - //........................................................................ - - function output($options = null) { - - // Add page text - $this->_add_page_text(); - - if ( isset($options["compress"]) && $options["compress"] != 1 ) - $this->_pdf->set_value("compress", 0); - else - $this->_pdf->set_value("compress", 6); - - $this->_close(); - - if ( self::$IN_MEMORY ) - $data = $this->_pdf->get_buffer(); - - else { - $data = file_get_contents($this->_file); - - //debugpng - if (DEBUGPNG) print '[pdflib output unlink '.$this->_file.']'; - if (!DEBUGKEEPTEMP) - - unlink($this->_file); - $this->_file = null; - unset($this->_file); - } - - return $data; - } -} - -// Workaround for idiotic limitation on statics... -PDFLib_Adapter::$PAPER_SIZES = CPDF_Adapter::$PAPER_SIZES; diff --git a/application/third_party/dompdf/include/php_evaluator.cls.php b/application/third_party/dompdf/include/php_evaluator.cls.php deleted file mode 100644 index fe45864a..00000000 --- a/application/third_party/dompdf/include/php_evaluator.cls.php +++ /dev/null @@ -1,76 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: php_evaluator.cls.php,v $ - * Created on: 2004-07-12 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: php_evaluator.cls.php 216 2010-03-11 22:49:18Z ryan.masten $ */ - -/** - * Executes inline PHP code during the rendering process - * - * @access private - * @package dompdf - */ -class PHP_Evaluator { - - protected $_canvas; - - function __construct(Canvas $canvas) { - $this->_canvas = $canvas; - } - - function evaluate($code, $vars = array()) { - if ( !DOMPDF_ENABLE_PHP ) - return; - - // Set up some variables for the inline code - $pdf = $this->_canvas; - $PAGE_NUM = $pdf->get_page_number(); - $PAGE_COUNT = $pdf->get_page_count(); - - // Override those variables if passed in - foreach ($vars as $k => $v) { - $$k = $v; - } - - eval(utf8_decode($code)); - } - - function render($frame) { - $this->evaluate($frame->get_node()->nodeValue); - } -} diff --git a/application/third_party/dompdf/include/positioner.cls.php b/application/third_party/dompdf/include/positioner.cls.php deleted file mode 100644 index f2e27af2..00000000 --- a/application/third_party/dompdf/include/positioner.cls.php +++ /dev/null @@ -1,71 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: positioner.cls.php,v $ - * Created on: 2004-06-08 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: positioner.cls.php 283 2010-07-19 17:57:40Z fabien.menager $ */ - -/** - * Base Positioner class - * - * Defines postioner interface - * - * @access private - * @package dompdf - */ -abstract class Positioner { - - // protected members - protected $_frame; - - //........................................................................ - - function __construct(Frame_Decorator $frame) { - $this->_frame = $frame; - } - - /** - * Class destructor - */ - function __destruct() { - clear_object($this); - } - //........................................................................ - - abstract function position(); - -} diff --git a/application/third_party/dompdf/include/renderer.cls.php b/application/third_party/dompdf/include/renderer.cls.php deleted file mode 100644 index d3d2162d..00000000 --- a/application/third_party/dompdf/include/renderer.cls.php +++ /dev/null @@ -1,293 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: renderer.cls.php,v $ - * Created on: 2004-06-03 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: renderer.cls.php 351 2011-01-19 20:27:02Z fabien.menager $ */ - -/** - * Concrete renderer - * - * Instantiates several specific renderers in order to render any given - * frame. - * - * @access private - * @package dompdf - */ -class Renderer extends Abstract_Renderer { - - /** - * Array of renderers for specific frame types - * - * @var array - */ - protected $_renderers; - - /** - * Cache of the callbacks array - * - * @var array - */ - private $_callbacks; - - /** - * Class destructor - */ - function __destruct() { - clear_object($this); - } - - /** - * Advance the canvas to the next page - */ - function new_page() { - $this->_canvas->new_page(); - } - - /** - * Render frames recursively - * - * @param Frame $frame the frame to render - */ - function render(Frame $frame) { - global $_dompdf_debug; - - if ( $_dompdf_debug ) { - echo $frame; - flush(); - } - - $style = $frame->get_style(); - $display = $style->display; - - // Starts the CSS transformation - if ( $style->transform && is_array($style->transform) ) { - $this->_canvas->save(); - list($x, $y, $w, $h) = $frame->get_padding_box(); - $origin = $style->transform_origin; - - foreach($style->transform as $transform) { - list($function, $values) = $transform; - if ( $function === "matrix" ) { - $function = "transform"; - } - - $values = array_map("floatval", $values); - $values[] = $x + $style->length_in_pt($origin[0], $style->width); - $values[] = $y + $style->length_in_pt($origin[1], $style->height); - - call_user_func_array(array($this->_canvas, $function), $values); - } - } - - switch ($display) { - - case "block": - case "list-item": - case "inline-block": - case "table": - case "table-row-group": - case "table-header-group": - case "table-footer-group": - case "inline-table": - $this->_render_frame("block", $frame); - break; - - case "inline": - if ( $frame->get_node()->nodeName === "#text" ) - $this->_render_frame("text", $frame); - else - $this->_render_frame("inline", $frame); - break; - - case "table-cell": - $this->_render_frame("table-cell", $frame); - break; - - case "-dompdf-list-bullet": - $this->_render_frame("list-bullet", $frame); - break; - - case "-dompdf-image": - $this->_render_frame("image", $frame); - break; - - case "none": - $node = $frame->get_node(); - - if ( $node->nodeName === "script" ) { - if ( $node->getAttribute("type") === "text/php" || - $node->getAttribute("language") === "php" ) { - // Evaluate embedded php scripts - $this->_render_frame("php", $frame); - } - - elseif ( $node->getAttribute("type") === "text/javascript" || - $node->getAttribute("language") === "javascript" ) { - // Insert JavaScript - $this->_render_frame("javascript", $frame); - } - } - - // Don't render children, so skip to next iter - return; - - default: - break; - - } - - // Check for begin frame callback - $this->_check_callbacks("begin_frame", $frame); - - // Starts the overflow: hidden box - if ( $style->overflow === "hidden" ) { - list($x, $y, $w, $h) = $frame->get_padding_box(); - $this->_canvas->clipping_rectangle($x, $y, $w, $h); - } - - $page = $frame->get_root()->get_reflower(); - - foreach ($frame->get_children() as $child) { - $child_style = $child->get_style(); - - // Stacking context - if ( $child_style->z_index !== false && ($child_style->z_index !== "auto" || in_array($child_style->position, Style::$POSITIONNED_TYPES)) ) { - $z_index = ($child_style->z_index === "auto") ? 0 : intval($child_style->z_index); - $page->add_frame_to_stacking_context($child, $z_index); - $child_style->z_index = false; - } - - else { - $this->render($child); - } - } - - // Ends the overflow: hidden box - if ( $style->overflow === "hidden" ) { - $this->_canvas->clipping_end(); - } - - if ( $style->transform && is_array($style->transform) ) { - $this->_canvas->restore(); - } - - // Check for end frame callback - $this->_check_callbacks("end_frame", $frame); - - } - - /** - * Check for callbacks that need to be performed when a given event - * gets triggered on a frame - * - * @param string $event the type of event - * @param Frame $frame the frame that event is triggered on - */ - protected function _check_callbacks($event, $frame) { - if (!isset($this->_callbacks)) { - $this->_callbacks = $this->_dompdf->get_callbacks(); - } - - if (is_array($this->_callbacks) && isset($this->_callbacks[$event])) { - $info = array(0 => $this->_canvas, "canvas" => $this->_canvas, - 1 => $frame, "frame" => $frame); - $fs = $this->_callbacks[$event]; - foreach ($fs as $f) { - if (is_callable($f)) { - if (is_array($f)) { - $f[0]->$f[1]($info); - } else { - $f($info); - } - } - } - } - } - - /** - * Render a single frame - * - * Creates Renderer objects on demand - * - * @param string $type type of renderer to use - * @param Frame $frame the frame to render - */ - protected function _render_frame($type, $frame) { - - if ( !isset($this->_renderers[$type]) ) { - - switch ($type) { - case "block": - $this->_renderers[$type] = new Block_Renderer($this->_dompdf); - break; - - case "inline": - $this->_renderers[$type] = new Inline_Renderer($this->_dompdf); - break; - - case "text": - $this->_renderers[$type] = new Text_Renderer($this->_dompdf); - break; - - case "image": - $this->_renderers[$type] = new Image_Renderer($this->_dompdf); - break; - - case "table-cell": - $this->_renderers[$type] = new Table_Cell_Renderer($this->_dompdf); - break; - - case "list-bullet": - $this->_renderers[$type] = new List_Bullet_Renderer($this->_dompdf); - break; - - case "php": - $this->_renderers[$type] = new PHP_Evaluator($this->_canvas); - break; - - case "javascript": - $this->_renderers[$type] = new Javascript_Embedder($this->_dompdf); - break; - - } - } - - $this->_renderers[$type]->render($frame); - - } -} diff --git a/application/third_party/dompdf/include/style.cls.php b/application/third_party/dompdf/include/style.cls.php deleted file mode 100644 index 594134b9..00000000 --- a/application/third_party/dompdf/include/style.cls.php +++ /dev/null @@ -1,2149 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: style.cls.php,v $ - * Created on: 2004-06-01 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @package dompdf - * - * Changes - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @version 0.5.1.htischer.20090507 - * - Fix px to pt conversion according to DOMPDF_DPI - * - Recognize css styles with !important attribute, and store !important attribute within style - * - Propagate !important by inherit and sequences of styles with merge. - * - Add missing style property cache flushes for consistent rendering, e.g. on explicte assignments - * - Add important set/get for access from outside of class - * - Fix font_family search path with multiple fonts list in css attribute: - * On missing font, do not immediately fall back to default font, - * but try subsequent fonts in search chain. Only when none found, explicitely - * refer to default font. - * - Allow read of background individual properties - * - Add support for individual styles background-position, background-attachment, background-repeat - * - Complete style components of list-style - * - Add support for combined styles in addition to individual styles - * like {border: red 1px solid;}, { border-width: 1px;}, { border-right-color: red; } ... - * for font, background - * - Propagate attributes including !important from combined style to individual component - * for border, background, padding, margin, font, list_style - * - Refactor common code of border, background, padding, margin, font, list_style - * - Refactor common code of list-style-image and background-image - * - special treatment of css images "none" instead of url(...), otherwise would prepend string "none" with path name - * - Added comments - * - Added debug output - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @version dompdf_trunk_with_helmut_mods.20090524 - * - Allow superflous white space and string delimiter in font search path. - * - Restore lost change of default font of above - * @version 20090610 - * - Allow absolute path from web server root as html image reference - * - More accurate handling of css property cache consistency - */ - -/* $Id: style.cls.php 355 2011-01-27 07:44:54Z fabien.menager $ */ - -/** - * Represents CSS properties. - * - * The Style class is responsible for handling and storing CSS properties. - * It includes methods to resolve colours and lengths, as well as getters & - * setters for many CSS properites. - * - * Actual CSS parsing is performed in the {@link Stylesheet} class. - * - * @package dompdf - */ -class Style { - - /** - * Default font size, in points. - * - * @var float - */ - static $default_font_size = 12; - - /** - * Default line height, as a fraction of the font size. - * - * @var float - */ - static $default_line_height = 1.2; - - /** - * Default "absolute" font sizes relative to the default font-size - * http://www.w3.org/TR/css3-fonts/#font-size-the-font-size-property - * @var array<float> - */ - static $font_size_keywords = array( - "xx-small" => 0.6, // 3/5 - "x-small" => 0.75, // 3/4 - "small" => 0.889, // 8/9 - "medium" => 1, // 1 - "large" => 1.2, // 6/5 - "x-large" => 1.5, // 3/2 - "xx-large" => 2.0, // 2/1 - ); - - /** - * List of all inline types. Should really be a constant. - * - * @var array - */ - static $INLINE_TYPES = array("inline"); - - /** - * List of all block types. Should really be a constant. - * - * @var array - */ - static $BLOCK_TYPES = array("block", "inline-block", "table-cell", "list-item"); - - /** - * List of all positionned types. Should really be a constant. - * - * @var array - */ - static $POSITIONNED_TYPES = array("relative", "absolute", "fixed"); - - /** - * List of all table types. Should really be a constant. - * - * @var array; - */ - static $TABLE_TYPES = array("table", "inline-table"); - - /** - * List of valid border styles. Should also really be a constant. - * - * @var array - */ - static $BORDER_STYLES = array("none", "hidden", "dotted", "dashed", "solid", - "double", "groove", "ridge", "inset", "outset"); - - /** - * Default style values. - * - * @link http://www.w3.org/TR/CSS21/propidx.html - * - * @var array - */ - static protected $_defaults = null; - - /** - * List of inherited properties - * - * @link http://www.w3.org/TR/CSS21/propidx.html - * - * @var array - */ - static protected $_inherited = null; - - /** - * The stylesheet this style belongs to - * - * @see Stylesheet - * @var Stylesheet - */ - protected $_stylesheet; // stylesheet this style is attached to - - /** - * Main array of all CSS properties & values - * - * @var array - */ - protected $_props; - - /* var instead of protected would allow access outside of class */ - protected $_important_props; - - /** - * Cached property values - * - * @var array - */ - protected $_prop_cache; - - /** - * Font size of parent element in document tree. Used for relative font - * size resolution. - * - * @var float - */ - protected $_parent_font_size; // Font size of parent element - - /** - * @var Frame - */ - protected $_frame; - - // private members - /** - * True once the font size is resolved absolutely - * - * @var bool - */ - private $__font_size_calculated; // Cache flag - - /** - * Class constructor - * - * @param Stylesheet $stylesheet the stylesheet this Style is associated with. - */ - function __construct(Stylesheet $stylesheet) { - $this->_props = array(); - $this->_important_props = array(); - $this->_stylesheet = $stylesheet; - $this->_parent_font_size = null; - $this->__font_size_calculated = false; - - if ( !isset(self::$_defaults) ) { - - // Shorthand - $d =& self::$_defaults; - - // All CSS 2.1 properties, and their default values - $d["azimuth"] = "center"; - $d["background_attachment"] = "scroll"; - $d["background_color"] = "transparent"; - $d["background_image"] = "none"; - $d["background_position"] = "0% 0%"; - $d["background_repeat"] = "repeat"; - $d["background"] = ""; - $d["border_collapse"] = "separate"; - $d["border_color"] = ""; - $d["border_spacing"] = "0"; - $d["border_style"] = ""; - $d["border_top"] = ""; - $d["border_right"] = ""; - $d["border_bottom"] = ""; - $d["border_left"] = ""; - $d["border_top_color"] = ""; - $d["border_right_color"] = ""; - $d["border_bottom_color"] = ""; - $d["border_left_color"] = ""; - $d["border_top_style"] = "none"; - $d["border_right_style"] = "none"; - $d["border_bottom_style"] = "none"; - $d["border_left_style"] = "none"; - $d["border_top_width"] = "medium"; - $d["border_right_width"] = "medium"; - $d["border_bottom_width"] = "medium"; - $d["border_left_width"] = "medium"; - $d["border_width"] = "medium"; - $d["border"] = ""; - $d["bottom"] = "auto"; - $d["caption_side"] = "top"; - $d["clear"] = "none"; - $d["clip"] = "auto"; - $d["color"] = "#000000"; - $d["content"] = "normal"; - $d["counter_increment"] = "none"; - $d["counter_reset"] = "none"; - $d["cue_after"] = "none"; - $d["cue_before"] = "none"; - $d["cue"] = ""; - $d["cursor"] = "auto"; - $d["direction"] = "ltr"; - $d["display"] = "inline"; - $d["elevation"] = "level"; - $d["empty_cells"] = "show"; - $d["float"] = "none"; - $d["font_family"] = "serif"; - $d["font_size"] = "medium"; - $d["font_style"] = "normal"; - $d["font_variant"] = "normal"; - $d["font_weight"] = "normal"; - $d["font"] = ""; - $d["height"] = "auto"; - $d["left"] = "auto"; - $d["letter_spacing"] = "normal"; - $d["line_height"] = "normal"; - $d["list_style_image"] = "none"; - $d["list_style_position"] = "outside"; - $d["list_style_type"] = "disc"; - $d["list_style"] = ""; - $d["margin_right"] = "0"; - $d["margin_left"] = "0"; - $d["margin_top"] = "0"; - $d["margin_bottom"] = "0"; - $d["margin"] = ""; - $d["max_height"] = "none"; - $d["max_width"] = "none"; - $d["min_height"] = "0"; - $d["min_width"] = "0"; - $d["opacity"] = "1.0"; // CSS3 - $d["orphans"] = "2"; - $d["outline_color"] = ""; // "invert" special color is not supported - $d["outline_style"] = "none"; - $d["outline_width"] = "medium"; - $d["outline"] = ""; - $d["overflow"] = "visible"; - $d["padding_top"] = "0"; - $d["padding_right"] = "0"; - $d["padding_bottom"] = "0"; - $d["padding_left"] = "0"; - $d["padding"] = ""; - $d["page_break_after"] = "auto"; - $d["page_break_before"] = "auto"; - $d["page_break_inside"] = "auto"; - $d["pause_after"] = "0"; - $d["pause_before"] = "0"; - $d["pause"] = ""; - $d["pitch_range"] = "50"; - $d["pitch"] = "medium"; - $d["play_during"] = "auto"; - $d["position"] = "static"; - $d["quotes"] = ""; - $d["richness"] = "50"; - $d["right"] = "auto"; - $d["size"] = "auto"; // @page - $d["speak_header"] = "once"; - $d["speak_numeral"] = "continuous"; - $d["speak_punctuation"] = "none"; - $d["speak"] = "normal"; - $d["speech_rate"] = "medium"; - $d["stress"] = "50"; - $d["table_layout"] = "auto"; - $d["text_align"] = "left"; - $d["text_decoration"] = "none"; - $d["text_indent"] = "0"; - $d["text_transform"] = "none"; - $d["top"] = "auto"; - $d["transform"] = "none"; // CSS3 - $d["transform_origin"] = "50% 50%"; // CSS3 - $d["_webkit_transform"] = $d["transform"]; // CSS3 - $d["_webkit_transform_origin"] = $d["transform_origin"]; // CSS3 - $d["unicode_bidi"] = "normal"; - $d["vertical_align"] = "baseline"; - $d["visibility"] = "visible"; - $d["voice_family"] = ""; - $d["volume"] = "medium"; - $d["white_space"] = "normal"; - $d["widows"] = "2"; - $d["width"] = "auto"; - $d["word_spacing"] = "normal"; - $d["z_index"] = "auto"; - - // for @font-face - $d["src"] = ""; - $d["unicode_range"] = ""; - - // Properties that inherit by default - self::$_inherited = array("azimuth", - "border_collapse", - "border_spacing", - "caption_side", - "color", - "cursor", - "direction", - "elevation", - "empty_cells", - "font_family", - "font_size", - "font_style", - "font_variant", - "font_weight", - "font", - "letter_spacing", - "line_height", - "list_style_image", - "list_style_position", - "list_style_type", - "list_style", - "orphans", - "page_break_inside", - "pitch_range", - "pitch", - "quotes", - "richness", - "speak_header", - "speak_numeral", - "speak_punctuation", - "speak", - "speech_rate", - "stress", - "text_align", - "text_indent", - "text_transform", - "visibility", - "voice_family", - "volume", - "white_space", - "widows", - "word_spacing"); - } - - } - - /** - * "Destructor": forcibly free all references held by this object - */ - function dispose() { - clear_object($this); - } - - function set_frame(Frame $frame) { - $this->_frame = $frame; - } - - function get_frame() { - return $this->_frame; - } - - /** - * returns the {@link Stylesheet} this Style is associated with. - * - * @return Stylesheet - */ - function get_stylesheet() { return $this->_stylesheet; } - - /** - * Converts any CSS length value into an absolute length in points. - * - * length_in_pt() takes a single length (e.g. '1em') or an array of - * lengths and returns an absolute length. If an array is passed, then - * the return value is the sum of all elements. - * - * If a reference size is not provided, the default font size is used - * ({@link Style::$default_font_size}). - * - * @param float|array $length the length or array of lengths to resolve - * @param float $ref_size an absolute reference size to resolve percentage lengths - * @return float - */ - function length_in_pt($length, $ref_size = null) { - - if ( !is_array($length) ) - $length = array($length); - - if ( !isset($ref_size) ) - $ref_size = self::$default_font_size; - - $ret = 0; - foreach ($length as $l) { - - if ( $l === "auto" ) - return "auto"; - - if ( $l === "none" ) - return "none"; - - // Assume numeric values are already in points - if ( is_numeric($l) ) { - $ret += $l; - continue; - } - - if ( $l === "normal" ) { - $ret += $ref_size; - continue; - } - - // Border lengths - if ( $l === "thin" ) { - $ret += 0.5; - continue; - } - - if ( $l === "medium" ) { - $ret += 1.5; - continue; - } - - if ( $l === "thick" ) { - $ret += 2.5; - continue; - } - - if ( ($i = mb_strpos($l, "px")) !== false ) { - $ret += ( mb_substr($l, 0, $i) * 72 ) / DOMPDF_DPI; - continue; - } - - if ( ($i = mb_strpos($l, "pt")) !== false ) { - $ret += mb_substr($l, 0, $i); - continue; - } - - if ( ($i = mb_strpos($l, "em")) !== false ) { - $ret += mb_substr($l, 0, $i) * $this->__get("font_size"); - continue; - } - - if ( ($i = mb_strpos($l, "%")) !== false ) { - $ret += mb_substr($l, 0, $i)/100 * $ref_size; - continue; - } - - if ( ($i = mb_strpos($l, "cm")) !== false ) { - $ret += mb_substr($l, 0, $i) * 72 / 2.54; - continue; - } - - if ( ($i = mb_strpos($l, "mm")) !== false ) { - $ret += mb_substr($l, 0, $i) * 72 / 25.4; - continue; - } - - // FIXME: em:ex ratio? - if ( ($i = mb_strpos($l, "ex")) !== false ) { - $ret += mb_substr($l, 0, $i) * $this->__get("font_size"); - continue; - } - - if ( ($i = mb_strpos($l, "in")) !== false ) { - $ret += mb_substr($l, 0, $i) * 72; - continue; - } - - if ( ($i = mb_strpos($l, "pc")) !== false ) { - $ret += mb_substr($l, 0, $i) / 12; - continue; - } - - // Bogus value - $ret += $ref_size; - } - - return $ret; - } - - - /** - * Set inherited properties in this style using values in $parent - * - * @param Style $parent - */ - function inherit(Style $parent) { - - // Set parent font size - $this->_parent_font_size = $parent->get_font_size(); - - foreach (self::$_inherited as $prop) { - //inherit the !important property also. - //if local property is also !important, don't inherit. - if ( isset($parent->_props[$prop]) && - ( !isset($this->_props[$prop]) || - ( isset($parent->_important_props[$prop]) && !isset($this->_important_props[$prop]) ) - ) - ) { - if ( isset($parent->_important_props[$prop]) ) { - $this->_important_props[$prop] = true; - } - //see __set and __get, on all assignments clear cache! - $this->_prop_cache[$prop] = null; - $this->_props[$prop] = $parent->_props[$prop]; - } - } - - foreach (array_keys($this->_props) as $prop) { - if ( $this->_props[$prop] === "inherit" ) { - if ( isset($parent->_important_props[$prop]) ) { - $this->_important_props[$prop] = true; - } - //do not assign direct, but - //implicite assignment through __set, redirect to specialized, get value with __get - //This is for computing defaults if the parent setting is also missing. - //Therefore do not directly assign the value without __set - //set _important_props before that to be able to propagate. - //see __set and __get, on all assignments clear cache! - //$this->_prop_cache[$prop] = null; - //$this->_props[$prop] = $parent->_props[$prop]; - //props_set for more obvious explicite assignment not implemented, because - //too many implicite uses. - // $this->props_set($prop, $parent->$prop); - $this->$prop = $parent->$prop; - } - } - - return $this; - } - - /** - * Override properties in this style with those in $style - * - * @param Style $style - */ - function merge(Style $style) { - //treat the !important attribute - //if old rule has !important attribute, override with new rule only if - //the new rule is also !important - foreach($style->_props as $prop => $val ) { - if (isset($style->_important_props[$prop])) { - $this->_important_props[$prop] = true; - //see __set and __get, on all assignments clear cache! - $this->_prop_cache[$prop] = null; - $this->_props[$prop] = $val; - } else if ( !isset($this->_important_props[$prop]) ) { - //see __set and __get, on all assignments clear cache! - $this->_prop_cache[$prop] = null; - $this->_props[$prop] = $val; - } - } - - if ( isset($style->_props["font_size"]) ) - $this->__font_size_calculated = false; - } - - /** - * Returns an array(r, g, b, "r"=> r, "g"=>g, "b"=>b, "hex"=>"#rrggbb") - * based on the provided CSS colour value. - * - * @param string $colour - * @return array - */ - function munge_colour($colour) { return CSS_Color::parse($colour); } - - /** - * Alias for {@link Style::munge_colour()} - * - * @param string $color - * @return array - */ - function munge_color($color) { return CSS_Color::parse($color); } - - /* direct access to _important_props array from outside would work only when declared as - * 'var $_important_props;' instead of 'protected $_important_props;' - * Don't call _set/__get on missing attribute. Therefore need a special access. - * Assume that __set will be also called when this is called, so do not check validity again. - * Only created, if !important exists -> always set true. - */ - function important_set($prop) { - $prop = str_replace("-", "_", $prop); - $this->_important_props[$prop] = true; - } - - function important_get($prop) { - isset($this->_important_props[$prop]); - } - - /** - * PHP5 overloaded setter - * - * This function along with {@link Style::__get()} permit a user of the - * Style class to access any (CSS) property using the following syntax: - * <code> - * Style->margin_top = "1em"; - * echo (Style->margin_top); - * </code> - * - * __set() automatically calls the provided set function, if one exists, - * otherwise it sets the property directly. Typically, __set() is not - * called directly from outside of this class. - * - * On each modification clear cache to return accurate setting. - * Also affects direct settings not using __set - * For easier finding all assignments, attempted to allowing only explicite assignment: - * Very many uses, e.g. frame_reflower.cls.php -> for now leave as it is - * function __set($prop, $val) { - * throw new DOMPDF_Exception("Implicite replacement of assignment by __set. Not good."); - * } - * function props_set($prop, $val) { ... } - * - * @param string $prop the property to set - * @param mixed $val the value of the property - * - */ - function __set($prop, $val) { - $prop = str_replace("-", "_", $prop); - $this->_prop_cache[$prop] = null; - - if ( !isset(self::$_defaults[$prop]) ) { - global $_dompdf_warnings; - $_dompdf_warnings[] = "'$prop' is not a valid CSS2 property."; - return; - } - - if ( $prop !== "content" && is_string($val) && strlen($val) > 5 && mb_strpos($val, "url") === false ) { - $val = mb_strtolower(trim(str_replace(array("\n", "\t"), array(" "), $val))); - $val = preg_replace("/([0-9]+) (pt|px|pc|em|ex|in|cm|mm|%)/S", "\\1\\2", $val); - } - - $method = "set_$prop"; - - if ( method_exists($this, $method) ) - $this->$method($val); - else - $this->_props[$prop] = $val; - } - - /** - * PHP5 overloaded getter - * - * Along with {@link Style::__set()} __get() provides access to all CSS - * properties directly. Typically __get() is not called directly outside - * of this class. - * - * On each modification clear cache to return accurate setting. - * Also affects direct settings not using __set - * - * @param string $prop - * @return mixed - */ - function __get($prop) { - if ( !isset(self::$_defaults[$prop]) ) - throw new DOMPDF_Exception("'$prop' is not a valid CSS2 property."); - - if ( isset($this->_prop_cache[$prop]) && $this->_prop_cache[$prop] != null ) - return $this->_prop_cache[$prop]; - - $method = "get_$prop"; - - // Fall back on defaults if property is not set - if ( !isset($this->_props[$prop]) ) - $this->_props[$prop] = self::$_defaults[$prop]; - - if ( method_exists($this, $method) ) - return $this->_prop_cache[$prop] = $this->$method(); - - return $this->_prop_cache[$prop] = $this->_props[$prop]; - } - - - /** - * Getter for the 'font-family' CSS property. - * - * Uses the {@link Font_Metrics} class to resolve the font family into an - * actual font file. - * - * @link http://www.w3.org/TR/CSS21/fonts.html#propdef-font-family - * @return string - */ - function get_font_family() { - - $DEBUGCSS=DEBUGCSS; //=DEBUGCSS; Allow override of global setting for ad hoc debug - - // Select the appropriate font. First determine the subtype, then check - // the specified font-families for a candidate. - - // Resolve font-weight - $weight = $this->__get("font_weight"); - - if ( is_numeric($weight) ) { - - if ( $weight < 600 ) - $weight = "normal"; - else - $weight = "bold"; - - } else if ( $weight === "bold" || $weight === "bolder" ) { - $weight = "bold"; - - } else { - $weight = "normal"; - - } - - // Resolve font-style - $font_style = $this->__get("font_style"); - - if ( $weight === "bold" && ($font_style === "italic" || $font_style === "oblique") ) - $subtype = "bold_italic"; - else if ( $weight === "bold" && $font_style !== "italic" && $font_style !== "oblique" ) - $subtype = "bold"; - else if ( $weight !== "bold" && ($font_style === "italic" || $font_style === "oblique") ) - $subtype = "italic"; - else - $subtype = "normal"; - - // Resolve the font family - if ($DEBUGCSS) { - print "<pre>[get_font_family:"; - print '('.$this->_props["font_family"].'.'.$font_style.'.'.$this->__get("font_weight").'.'.$weight.'.'.$subtype.')'; - } - $families = explode(",", $this->_props["font_family"]); - $families = array_map('trim',$families); - reset($families); - - $font = null; - while ( current($families) ) { - list(,$family) = each($families); - //remove leading and trailing string delimiters, e.g. on font names with spaces; - //remove leading and trailing whitespace - $family=trim($family," \t\n\r\x0B\"'"); - if ($DEBUGCSS) print '('.$family.')'; - $font = Font_Metrics::get_font($family, $subtype); - - if ( $font ) { - if ($DEBUGCSS) print '('.$font.")get_font_family]\n</pre>"; - return $font; - } - } - - $family = null; - if ($DEBUGCSS) print '(default)'; - $font = Font_Metrics::get_font($family, $subtype); - - if ( $font ) { - if ($DEBUGCSS) print '('.$font.")get_font_family]\n</pre>"; - return $font; - } - throw new DOMPDF_Exception("Unable to find a suitable font replacement for: '" . $this->_props["font_family"] ."'"); - - } - - /** - * Returns the resolved font size, in points - * - * @link http://www.w3.org/TR/CSS21/fonts.html#propdef-font-size - * @return float - */ - function get_font_size() { - - if ( $this->__font_size_calculated ) - return $this->_props["font_size"]; - - if ( !isset($this->_props["font_size"]) ) - $fs = self::$_defaults["font_size"]; - else - $fs = $this->_props["font_size"]; - - if ( !isset($this->_parent_font_size) ) - $this->_parent_font_size = self::$default_font_size; - - switch ($fs) { - case "xx-small": - case "x-small": - case "small": - case "medium": - case "large": - case "x-large": - case "xx-large": - $fs = self::$default_font_size * self::$font_size_keywords[$fs]; - break; - - case "smaller": - $fs = 8/9 * $this->_parent_font_size; - break; - - case "larger": - $fs = 6/5 * $this->_parent_font_size; - break; - - default: - break; - } - - // Ensure relative sizes resolve to something - if ( ($i = mb_strpos($fs, "em")) !== false ) - $fs = mb_substr($fs, 0, $i) * $this->_parent_font_size; - - else if ( ($i = mb_strpos($fs, "ex")) !== false ) - $fs = mb_substr($fs, 0, $i) * $this->_parent_font_size; - - else - $fs = $this->length_in_pt($fs); - - //see __set and __get, on all assignments clear cache! - $this->_prop_cache["font_size"] = null; - $this->_props["font_size"] = $fs; - $this->__font_size_calculated = true; - return $this->_props["font_size"]; - - } - - /** - * @link http://www.w3.org/TR/CSS21/text.html#propdef-word-spacing - * @return float - */ - function get_word_spacing() { - if ( $this->_props["word_spacing"] === "normal" ) - return 0; - - return $this->_props["word_spacing"]; - } - - /** - * @link http://www.w3.org/TR/CSS21/text.html#propdef-letter-spacing - * @return float - */ - function get_letter_spacing() { - if ( $this->_props["letter_spacing"] === "normal" ) - return 0; - - return $this->_props["letter_spacing"]; - } - - /** - * @link http://www.w3.org/TR/CSS21/visudet.html#propdef-line-height - * @return float - */ - function get_line_height() { - $line_height = $this->_props["line_height"]; - - if ( $line_height === "normal" ) - return self::$default_line_height * $this->get_font_size(); - - if ( is_numeric($line_height) ) - return $this->length_in_pt( $line_height . "em", $this->get_font_size()); - - return $this->length_in_pt( $line_height, $this->get_font_size() ); - } - - /** - * Returns the colour as an array - * - * The array has the following format: - * <code>array(r,g,b, "r" => r, "g" => g, "b" => b, "hex" => "#rrggbb")</code> - * - * @link http://www.w3.org/TR/CSS21/colors.html#propdef-color - * @return array - */ - function get_color() { - return $this->munge_color( $this->_props["color"] ); - } - - /** - * Returns the background colour as an array - * - * The returned array has the same format as {@link Style::get_color()} - * - * @link http://www.w3.org/TR/CSS21/colors.html#propdef-background-color - * @return array - */ - function get_background_color() { - return $this->munge_color( $this->_props["background_color"] ); - } - - /** - * Returns the background position as an array - * - * The returned array has the following format: - * <code>array(x,y, "x" => x, "y" => y)</code> - * - * @link http://www.w3.org/TR/CSS21/colors.html#propdef-background-position - * @return array - */ - function get_background_position() { - $tmp = explode(" ", $this->_props["background_position"]); - - switch ($tmp[0]) { - - case "left": - $x = "0%"; - break; - - case "right": - $x = "100%"; - break; - - case "top": - $y = "0%"; - break; - - case "bottom": - $y = "100%"; - break; - - case "center": - $x = "50%"; - $y = "50%"; - break; - - default: - $x = $tmp[0]; - break; - } - - if ( isset($tmp[1]) ) { - - switch ($tmp[1]) { - case "left": - $x = "0%"; - break; - - case "right": - $x = "100%"; - break; - - case "top": - $y = "0%"; - break; - - case "bottom": - $y = "100%"; - break; - - case "center": - if ( $tmp[0] === "left" || $tmp[0] === "right" || $tmp[0] === "center" ) - $y = "50%"; - else - $x = "50%"; - break; - - default: - $y = $tmp[1]; - break; - } - - } else { - $y = "50%"; - } - - if ( !isset($x) ) - $x = "0%"; - - if ( !isset($y) ) - $y = "0%"; - - return array( 0 => $x, "x" => $x, - 1 => $y, "y" => $y ); - } - - - /** - * Returns the background as it is currently stored - * - * (currently anyway only for completeness. - * not used for further processing) - * - * @link http://www.w3.org/TR/CSS21/colors.html#propdef-background-attachment - * @return string - */ - function get_background_attachment() { - return $this->_props["background_attachment"]; - } - - - /** - * Returns the background_repeat as it is currently stored - * - * (currently anyway only for completeness. - * not used for further processing) - * - * @link http://www.w3.org/TR/CSS21/colors.html#propdef-background-repeat - * @return string - */ - function get_background_repeat() { - return $this->_props["background_repeat"]; - } - - - /** - * Returns the background as it is currently stored - * - * (currently anyway only for completeness. - * not used for further processing, but the individual get_background_xxx) - * - * @link http://www.w3.org/TR/CSS21/colors.html#propdef-background - * @return string - */ - function get_background() { - return $this->_props["background"]; - } - - - /**#@+ - * Returns the border colour as an array - * - * See {@link Style::get_color()} - * - * @link http://www.w3.org/TR/CSS21/box.html#border-color-properties - * @return array - */ - function get_border_top_color() { - if ( $this->_props["border_top_color"] === "" ) { - //see __set and __get, on all assignments clear cache! - $this->_prop_cache["border_top_color"] = null; - $this->_props["border_top_color"] = $this->__get("color"); - } - return $this->munge_color($this->_props["border_top_color"]); - } - - function get_border_right_color() { - if ( $this->_props["border_right_color"] === "" ) { - //see __set and __get, on all assignments clear cache! - $this->_prop_cache["border_right_color"] = null; - $this->_props["border_right_color"] = $this->__get("color"); - } - return $this->munge_color($this->_props["border_right_color"]); - } - - function get_border_bottom_color() { - if ( $this->_props["border_bottom_color"] === "" ) { - //see __set and __get, on all assignments clear cache! - $this->_prop_cache["border_bottom_color"] = null; - $this->_props["border_bottom_color"] = $this->__get("color"); - } - return $this->munge_color($this->_props["border_bottom_color"]); - } - - function get_border_left_color() { - if ( $this->_props["border_left_color"] === "" ) { - //see __set and __get, on all assignments clear cache! - $this->_prop_cache["border_left_color"] = null; - $this->_props["border_left_color"] = $this->__get("color"); - } - return $this->munge_color($this->_props["border_left_color"]); - } - - /**#@-*/ - - /**#@+ - * Returns the border width, as it is currently stored - * - * @link http://www.w3.org/TR/CSS21/box.html#border-width-properties - * @return float|string - */ - function get_border_top_width() { - $style = $this->__get("border_top_style"); - return $style !== "none" && $style !== "hidden" ? $this->length_in_pt($this->_props["border_top_width"]) : 0; - } - - function get_border_right_width() { - $style = $this->__get("border_right_style"); - return $style !== "none" && $style !== "hidden" ? $this->length_in_pt($this->_props["border_right_width"]) : 0; - } - - function get_border_bottom_width() { - $style = $this->__get("border_bottom_style"); - return $style !== "none" && $style !== "hidden" ? $this->length_in_pt($this->_props["border_bottom_width"]) : 0; - } - - function get_border_left_width() { - $style = $this->__get("border_left_style"); - return $style !== "none" && $style !== "hidden" ? $this->length_in_pt($this->_props["border_left_width"]) : 0; - } - /**#@-*/ - - /** - * Return an array of all border properties. - * - * The returned array has the following structure: - * <code> - * array("top" => array("width" => [border-width], - * "style" => [border-style], - * "color" => [border-color (array)]), - * "bottom" ... ) - * </code> - * - * @return array - */ - function get_border_properties() { - return array("top" => array("width" => $this->__get("border_top_width"), - "style" => $this->__get("border_top_style"), - "color" => $this->__get("border_top_color")), - "bottom" => array("width" => $this->__get("border_bottom_width"), - "style" => $this->__get("border_bottom_style"), - "color" => $this->__get("border_bottom_color")), - "right" => array("width" => $this->__get("border_right_width"), - "style" => $this->__get("border_right_style"), - "color" => $this->__get("border_right_color")), - "left" => array("width" => $this->__get("border_left_width"), - "style" => $this->__get("border_left_style"), - "color" => $this->__get("border_left_color"))); - } - - /** - * Return a single border property - * - * @return mixed - */ - protected function _get_border($side) { - $color = $this->__get("border_" . $side . "_color"); - - return $this->__get("border_" . $side . "_width") . " " . - $this->__get("border_" . $side . "_style") . " " . $color["hex"]; - } - - /**#@+ - * Return full border properties as a string - * - * Border properties are returned just as specified in CSS: - * <pre>[width] [style] [color]</pre> - * e.g. "1px solid blue" - * - * @link http://www.w3.org/TR/CSS21/box.html#border-shorthand-properties - * @return string - */ - function get_border_top() { return $this->_get_border("top"); } - function get_border_right() { return $this->_get_border("right"); } - function get_border_bottom() { return $this->_get_border("bottom"); } - function get_border_left() { return $this->_get_border("left"); } - /**#@-*/ - - /** - * Returns the outline colour as an array - * - * See {@link Style::get_color()} - * - * @link http://www.w3.org/TR/CSS21/box.html#border-color-properties - * @return array - */ - function get_outline_color() { - if ( $this->_props["outline_color"] === "" ) { - //see __set and __get, on all assignments clear cache! - $this->_prop_cache["outline_color"] = null; - $this->_props["outline_color"] = $this->__get("color"); - } - return $this->munge_color($this->_props["outline_color"]); - } - - /**#@+ - * Returns the outline width, as it is currently stored - * @return float|string - */ - function get_outline_width() { - $style = $this->__get("outline_style"); - return $style !== "none" && $style !== "hidden" ? $this->length_in_pt($this->_props["outline_width"]) : 0; - } - - /**#@+ - * Return full outline properties as a string - * - * Outline properties are returned just as specified in CSS: - * <pre>[width] [style] [color]</pre> - * e.g. "1px solid blue" - * - * @link http://www.w3.org/TR/CSS21/box.html#border-shorthand-properties - * @return string - */ - function get_outline() { - $color = $this->__get("outline_color"); - return - $this->__get("outline_width") . " " . - $this->__get("outline_style") . " " . - $color["hex"]; - } - /**#@-*/ - - /** - * Returns border spacing as an array - * - * The array has the format (h_space,v_space) - * - * @link http://www.w3.org/TR/CSS21/tables.html#propdef-border-spacing - * @return array - */ - function get_border_spacing() { - return explode(" ", $this->_props["border_spacing"]); - } - -/*==============================*/ - - /* - !important attribute - For basic functionality of the !important attribute with overloading - of several styles of an element, changes in inherit(), merge() and _parse_properties() - are sufficient [helpers var $_important_props, __construct(), important_set(), important_get()] - - Only for combined attributes extra treatment needed. See below. - - div { border: 1px red; } - div { border: solid; } // Not combined! Only one occurence of same style per context - // - div { border: 1px red; } - div a { border: solid; } // Adding to border style ok by inheritance - // - div { border-style: solid; } // Adding to border style ok because of different styles - div { border: 1px red; } - // - div { border-style: solid; !important} // border: overrides, even though not !important - div { border: 1px dashed red; } - // - div { border: 1px red; !important } - div a { border-style: solid; } // Need to override because not set - - Special treatment: - At individual property like border-top-width need to check whether overriding value is also !important. - Also store the !important condition for later overrides. - Since not known who is initiating the override, need to get passed !importan as parameter. - !important Paramter taken as in the original style in the css file. - When poperty border !important given, do not mark subsets like border_style as important. Only - individual properties. - - Note: - Setting individual property directly from css with e.g. set_border_top_style() is not needed, because - missing set funcions handled by a generic handler __set(), including the !important. - Setting individual property of as sub-property is handled below. - - Implementation see at _set_style_side_type() - Callers _set_style_sides_type(), _set_style_type, _set_style_type_important() - - Related functionality for background, padding, margin, font, list_style - */ - - /* Generalized set function for individual attribute of combined style. - * With check for !important - * Applicable for background, border, padding, margin, font, list_style - * Note: $type has a leading underscore (or is empty), the others not. - */ - protected function _set_style_side_type($style,$side,$type,$val,$important) { - $prop = $style.'_'.$side.$type; - - if ( !isset($this->_important_props[$prop]) || $important) { - //see __set and __get, on all assignments clear cache! - $this->_prop_cache[$prop] = null; - if ($important) { - $this->_important_props[$prop] = true; - } - $this->_props[$prop] = $val; - } - } - - protected function _set_style_sides_type($style,$top,$right,$bottom,$left,$type,$important) { - $this->_set_style_side_type($style,'top',$type,$top,$important); - $this->_set_style_side_type($style,'right',$type,$right,$important); - $this->_set_style_side_type($style,'bottom',$type,$bottom,$important); - $this->_set_style_side_type($style,'left',$type,$left,$important); - } - - protected function _set_style_type($style,$type,$val,$important) { - $arr = explode(" ", $val); - switch (count($arr)) { - case 1: - $this->_set_style_sides_type($style,$arr[0],$arr[0],$arr[0],$arr[0],$type,$important); - break; - case 2: - $this->_set_style_sides_type($style,$arr[0],$arr[1],$arr[0],$arr[1],$type,$important); - break; - case 3: - $this->_set_style_sides_type($style,$arr[0],$arr[1],$arr[2],$arr[1],$type,$important); - break; - case 4: - $this->_set_style_sides_type($style,$arr[0],$arr[1],$arr[2],$arr[3],$type,$important); - break; - default: - break; - } - //see __set and __get, on all assignments clear cache! - $this->_prop_cache[$style.$type] = null; - $this->_props[$style.$type] = $val; - } - - protected function _set_style_type_important($style,$type,$val) { - $this->_set_style_type($style,$type,$val,isset($this->_important_props[$style.$type])); - } - - /* Anyway only called if _important matches and is assigned - * E.g. _set_style_side_type($style,$side,'',str_replace("none", "0px", $val),isset($this->_important_props[$style.'_'.$side])); - */ - protected function _set_style_side_width_important($style,$side,$val) { - //see __set and __get, on all assignments clear cache! - $this->_prop_cache[$style.'_'.$side] = null; - $this->_props[$style.'_'.$side] = str_replace("none", "0px", $val); - } - - protected function _set_style($style,$val,$important) { - if ( !isset($this->_important_props[$style]) || $important) { - if ($important) { - $this->_important_props[$style] = true; - } - //see __set and __get, on all assignments clear cache! - $this->_prop_cache[$style] = null; - $this->_props[$style] = $val; - } - } - - protected function _image($val) { - $DEBUGCSS=DEBUGCSS; - - if ( mb_strpos($val, "url") === false ) { - $path = "none"; //Don't resolve no image -> otherwise would prefix path and no longer recognize as none - } else { - $val = preg_replace("/url\(['\"]?([^'\")]+)['\"]?\)/","\\1", trim($val)); - - // Resolve the url now in the context of the current stylesheet - $parsed_url = explode_url($val); - if ( $parsed_url["protocol"] == "" && $this->_stylesheet->get_protocol() == "" ) { - if ($parsed_url["path"][0] === '/' || $parsed_url["path"][0] === '\\' ) { - $path = $_SERVER["DOCUMENT_ROOT"].'/'; - } else { - $path = $this->_stylesheet->get_base_path(); - } - $path .= $parsed_url["path"] . $parsed_url["file"]; - $path = realpath($path); - // If realpath returns FALSE then specifically state that there is no background image - if (!$path) { $path = 'none'; } - } else { - $path = build_url($this->_stylesheet->get_protocol(), - $this->_stylesheet->get_host(), - $this->_stylesheet->get_base_path(), - $val); - } - } - if ($DEBUGCSS) { - print "<pre>[_image\n"; - print_r($parsed_url); - print $this->_stylesheet->get_protocol()."\n".$this->_stylesheet->get_base_path()."\n".$path."\n"; - print "_image]</pre>";; - } - return $path; - } - -/*======================*/ - - /** - * Sets colour - * - * The colour parameter can be any valid CSS colour value - * - * @link http://www.w3.org/TR/CSS21/colors.html#propdef-color - * @param string $colour - */ - function set_color($colour) { - $col = $this->munge_colour($colour); - - if ( is_null($col) ) - $col = self::$_defaults["color"]; - - //see __set and __get, on all assignments clear cache, not needed on direct set through __set - $this->_prop_cache["color"] = null; - $this->_props["color"] = $col["hex"]; - } - - /** - * Sets the background colour - * - * @link http://www.w3.org/TR/CSS21/colors.html#propdef-background-color - * @param string $colour - */ - function set_background_color($colour) { - $col = $this->munge_colour($colour); - if ( is_null($col) ) - $col = self::$_defaults["background_color"]; - - //see __set and __get, on all assignments clear cache, not needed on direct set through __set - $this->_prop_cache["background_color"] = null; - $this->_props["background_color"] = is_array($col) ? $col["hex"] : $col; - } - - /** - * Set the background image url - * - * @link http://www.w3.org/TR/CSS21/colors.html#background-properties - * @param string $url - */ - function set_background_image($val) { - //see __set and __get, on all assignments clear cache, not needed on direct set through __set - $this->_prop_cache["background_image"] = null; - $this->_props["background_image"] = $this->_image($val); - } - - /** - * Sets the background repeat - * - * @link http://www.w3.org/TR/CSS21/colors.html#propdef-background-repeat - * @param string $val - */ - function set_background_repeat($val) { - if ( is_null($val) ) - $val = self::$_defaults["background_repeat"]; - - //see __set and __get, on all assignments clear cache, not needed on direct set through __set - $this->_prop_cache["background_repeat"] = null; - $this->_props["background_repeat"] = $val; - } - - /** - * Sets the background attachment - * - * @link http://www.w3.org/TR/CSS21/colors.html#propdef-background-attachment - * @param string $val - */ - function set_background_attachment($val) { - if ( is_null($val) ) - $val = self::$_defaults["background_attachment"]; - - //see __set and __get, on all assignments clear cache, not needed on direct set through __set - $this->_prop_cache["background_attachment"] = null; - $this->_props["background_attachment"] = $val; - } - - /** - * Sets the background position - * - * @link http://www.w3.org/TR/CSS21/colors.html#propdef-background-position - * @param string $val - */ - function set_background_position($val) { - if ( is_null($val) ) - $val = self::$_defaults["background_position"]; - - //see __set and __get, on all assignments clear cache, not needed on direct set through __set - $this->_prop_cache["background_position"] = null; - $this->_props["background_position"] = $val; - } - - /** - * Sets the background - combined options - * - * @link http://www.w3.org/TR/CSS21/colors.html#propdef-background - * @param string $val - */ - function set_background($val) { - $col = null; - $pos = array(); - $tmp = preg_replace("/\s*\,\s*/", ",", $val); // when rgb() has spaces - $tmp = explode(" ", $tmp); - $important = isset($this->_important_props["background"]); - - foreach($tmp as $attr) { - if (mb_substr($attr, 0, 3) === "url" || $attr === "none") { - $this->_set_style("background_image", $this->_image($attr), $important); - } else if ($attr === "fixed" || $attr === "scroll") { - $this->_set_style("background_attachment", $attr, $important); - } else if ($attr === "repeat" || $attr === "repeat-x" || $attr === "repeat-y" || $attr === "no-repeat") { - $this->_set_style("background_repeat", $attr, $important); - } else if (($col = $this->munge_color($attr)) != null ) { - $this->_set_style("background_color", is_array($col) ? $col["hex"] : $col, $important); - } else { - $pos[] = $attr; - } - } - - if (count($pos)) { - $this->_set_style("background_position",implode(' ',$pos), $important); - } - //see __set and __get, on all assignments clear cache, not needed on direct set through __set - $this->_prop_cache["background"] = null; - $this->_props["background"] = $val; - } - - /** - * Sets the font size - * - * $size can be any acceptable CSS size - * - * @link http://www.w3.org/TR/CSS21/fonts.html#propdef-font-size - * @param string|float $size - */ - function set_font_size($size) { - $this->__font_size_calculated = false; - //see __set and __get, on all assignments clear cache, not needed on direct set through __set - $this->_prop_cache["font_size"] = null; - $this->_props["font_size"] = $size; - } - - /** - * Sets the font style - * - * combined attributes - * set individual attributes also, respecting !important mark - * exactly this order, separate by space. Multiple fonts separated by comma: - * font-style, font-variant, font-weight, font-size, line-height, font-family - * - * Other than with border and list, existing partial attributes should - * reset when starting here, even when not mentioned. - * If individual attribute is !important and explicite or implicite replacement is not, - * keep individual attribute - * - * require whitespace as delimiters for single value attributes - * On delimiter "/" treat first as font height, second as line height - * treat all remaining at the end of line as font - * font-style, font-variant, font-weight, font-size, line-height, font-family - * - * missing font-size and font-family might be not allowed, but accept it here and - * use default (medium size, enpty font name) - * - * @link http://www.w3.org/TR/CSS21/generate.html#propdef-list-style - * @param $val - */ - function set_font($val) { - $this->__font_size_calculated = false; - //see __set and __get, on all assignments clear cache, not needed on direct set through __set - $this->_prop_cache["font"] = null; - $this->_props["font"] = $val; - - $important = isset($this->_important_props["font"]); - - if ( preg_match("/^(italic|oblique|normal)\s*(.*)$/i",$val,$match) ) { - $this->_set_style("font_style", $match[1], $important); - $val = $match[2]; - } else { - $this->_set_style("font_style", self::$_defaults["font_style"], $important); - } - - if ( preg_match("/^(small-caps|normal)\s*(.*)$/i",$val,$match) ) { - $this->_set_style("font_variant", $match[1], $important); - $val = $match[2]; - } else { - $this->_set_style("font_variant", self::$_defaults["font_variant"], $important); - } - - //matching numeric value followed by unit -> this is indeed a subsequent font size. Skip! - if ( preg_match("/^(bold|bolder|lighter|100|200|300|400|500|600|700|800|900|normal)\s*(.*)$/i",$val,$match) && - !preg_match("/^(?:pt|px|pc|em|ex|in|cm|mm|%)/",$match[2]) - ) { - $this->_set_style("font_weight", $match[1], $important); - $val = $match[2]; - } else { - $this->_set_style("font_weight", self::$_defaults["font_weight"], $important); - } - - if ( preg_match("/^(xx-small|x-small|small|medium|large|x-large|xx-large|smaller|larger|\d+\s*(?:pt|px|pc|em|ex|in|cm|mm|%))\s*(.*)$/i",$val,$match) ) { - $this->_set_style("font_size", $match[1], $important); - $val = $match[2]; - if (preg_match("/^\/\s*(\d+\s*(?:pt|px|pc|em|ex|in|cm|mm|%))\s*(.*)$/i",$val,$match) ) { - $this->_set_style("line_height", $match[1], $important); - $val = $match[2]; - } else { - $this->_set_style("line_height", self::$_defaults["line_height"], $important); - } - } else { - $this->_set_style("font_size", self::$_defaults["font_size"], $important); - $this->_set_style("line_height", self::$_defaults["line_height"], $important); - } - - if(strlen($val) != 0) { - $this->_set_style("font_family", $val, $important); - } else { - $this->_set_style("font_family", self::$_defaults["font_family"], $important); - } - } - - /**#@+ - * Sets page break properties - * - * @link http://www.w3.org/TR/CSS21/page.html#page-breaks - * @param string $break - */ - function set_page_break_before($break) { - if ($break === "left" || $break === "right") - $break = "always"; - - //see __set and __get, on all assignments clear cache, not needed on direct set through __set - $this->_prop_cache["page_break_before"] = null; - $this->_props["page_break_before"] = $break; - } - - function set_page_break_after($break) { - if ($break === "left" || $break === "right") - $break = "always"; - - //see __set and __get, on all assignments clear cache, not needed on direct set through __set - $this->_prop_cache["page_break_after"] = null; - $this->_props["page_break_after"] = $break; - } - /**#@-*/ - - //........................................................................ - - /**#@+ - * Sets the margin size - * - * @link http://www.w3.org/TR/CSS21/box.html#margin-properties - * @param $val - */ - function set_margin_top($val) { - $this->_set_style_side_width_important('margin','top',$val); - } - - function set_margin_right($val) { - $this->_set_style_side_width_important('margin','right',$val); - } - - function set_margin_bottom($val) { - $this->_set_style_side_width_important('margin','bottom',$val); - } - - function set_margin_left($val) { - $this->_set_style_side_width_important('margin','left',$val); - } - - function set_margin($val) { - $val = str_replace("none", "0px", $val); - $this->_set_style_type_important('margin','',$val); - } - /**#@-*/ - - /**#@+ - * Sets the padding size - * - * @link http://www.w3.org/TR/CSS21/box.html#padding-properties - * @param $val - */ - function set_padding_top($val) { - $this->_set_style_side_width_important('padding','top',$val); - } - - function set_padding_right($val) { - $this->_set_style_side_width_important('padding','right',$val); - } - - function set_padding_bottom($val) { - $this->_set_style_side_width_important('padding','bottom',$val); - } - - function set_padding_left($val) { - $this->_set_style_side_width_important('padding','left',$val); - } - - function set_padding($val) { - $val = str_replace("none", "0px", $val); - $this->_set_style_type_important('padding','',$val); - } - /**#@-*/ - - /** - * Sets a single border - * - * @param string $side - * @param string $border_spec ([width] [style] [color]) - */ - protected function _set_border($side, $border_spec, $important) { - $border_spec = preg_replace("/\s*\,\s*/", ",", $border_spec); - //$border_spec = str_replace(",", " ", $border_spec); // Why did we have this ?? rbg(10, 102, 10) > rgb(10 102 10) - $arr = explode(" ", $border_spec); - - // FIXME: handle partial values - - //For consistency of individal and combined properties, and with ie8 and firefox3 - //reset all attributes, even if only partially given - $this->_set_style_side_type('border',$side,'_style',self::$_defaults['border_'.$side.'_style'],$important); - $this->_set_style_side_type('border',$side,'_width',self::$_defaults['border_'.$side.'_width'],$important); - $this->_set_style_side_type('border',$side,'_color',self::$_defaults['border_'.$side.'_color'],$important); - - foreach ($arr as $value) { - $value = trim($value); - if ( in_array($value, self::$BORDER_STYLES) ) { - $this->_set_style_side_type('border',$side,'_style',$value,$important); - - } else if ( preg_match("/[.0-9]+(?:px|pt|pc|em|ex|%|in|mm|cm)|(?:thin|medium|thick)/", $value ) ) { - $this->_set_style_side_type('border',$side,'_width',$value,$important); - - } else { - // must be colour - $this->_set_style_side_type('border',$side,'_color',$value,$important); - } - } - - //see __set and __get, on all assignments clear cache! - $this->_prop_cache['border_'.$side] = null; - $this->_props['border_'.$side] = $border_spec; - } - - /**#@+ - * Sets the border styles - * - * @link http://www.w3.org/TR/CSS21/box.html#border-properties - * @param string $val - */ - function set_border_top($val) { $this->_set_border("top", $val, isset($this->_important_props['border_top'])); } - function set_border_right($val) { $this->_set_border("right", $val, isset($this->_important_props['border_right'])); } - function set_border_bottom($val) { $this->_set_border("bottom", $val, isset($this->_important_props['border_bottom'])); } - function set_border_left($val) { $this->_set_border("left", $val, isset($this->_important_props['border_left'])); } - - function set_border($val) { - $important = isset($this->_important_props["border"]); - $this->_set_border("top", $val, $important); - $this->_set_border("right", $val, $important); - $this->_set_border("bottom", $val, $important); - $this->_set_border("left", $val, $important); - //see __set and __get, on all assignments clear cache, not needed on direct set through __set - $this->_prop_cache["border"] = null; - $this->_props["border"] = $val; - } - - function set_border_width($val) { - $this->_set_style_type_important('border','_width',$val); - } - - function set_border_color($val) { - $this->_set_style_type_important('border','_color',$val); - } - - function set_border_style($val) { - $this->_set_style_type_important('border','_style',$val); - } - - /**#@+ - * Sets the outline styles - * - * @link http://www.w3.org/TR/CSS21/ui.html#dynamic-outlines - * @param string $val - */ - function set_outline($val) { - $important = isset($this->_important_props["outline"]); - - $props = array( - "outline_style", - "outline_width", - "outline_color", - ); - - foreach($props as $prop) { - $_val = self::$_defaults[$prop]; - - if ( !isset($this->_important_props[$prop]) || $important) { - //see __set and __get, on all assignments clear cache! - $this->_prop_cache[$prop] = null; - if ($important) { - $this->_important_props[$prop] = true; - } - $this->_props[$prop] = $_val; - } - } - - $val = preg_replace("/\s*\,\s*/", ",", $val); // when rgb() has spaces - $arr = explode(" ", $val); - foreach ($arr as $value) { - $value = trim($value); - if ( in_array($value, self::$BORDER_STYLES) ) { - $this->set_outline_style($value); - } else if ( preg_match("/[.0-9]+(?:px|pt|pc|em|ex|%|in|mm|cm)|(?:thin|medium|thick)/", $value ) ) { - $this->set_outline_width($value); - } else { - // must be colour - $this->set_outline_color($value); - } - } - - //see __set and __get, on all assignments clear cache, not needed on direct set through __set - $this->_prop_cache["outline"] = null; - $this->_props["outline"] = $val; - } - - function set_outline_width($val) { - $this->_set_style_type_important('outline','_width',$val); - } - - function set_outline_color($val) { - $this->_set_style_type_important('outline','_color',$val); - } - - function set_outline_style($val) { - $this->_set_style_type_important('outline','_style',$val); - } - /**#@-*/ - - - /** - * Sets the border spacing - * - * @link http://www.w3.org/TR/CSS21/box.html#border-properties - * @param float $val - */ - function set_border_spacing($val) { - $arr = explode(" ", $val); - - if ( count($arr) == 1 ) - $arr[1] = $arr[0]; - - //see __set and __get, on all assignments clear cache, not needed on direct set through __set - $this->_prop_cache["border_spacing"] = null; - $this->_props["border_spacing"] = "$arr[0] $arr[1]"; - } - - /** - * Sets the list style image - * - * @link http://www.w3.org/TR/CSS21/generate.html#propdef-list-style-image - * @param $val - */ - function set_list_style_image($val) { - //see __set and __get, on all assignments clear cache, not needed on direct set through __set - $this->_prop_cache["list_style_image"] = null; - $this->_props["list_style_image"] = $this->_image($val); - } - - /** - * Sets the list style - * - * @link http://www.w3.org/TR/CSS21/generate.html#propdef-list-style - * @param $val - */ - function set_list_style($val) { - $important = isset($this->_important_props["list_style"]); - $arr = explode(" ", str_replace(",", " ", $val)); - - static $types = array( - "disc", "circle", "square", - "decimal-leading-zero", "decimal", "1", - "lower-roman", "upper-roman", "a", "A", - "lower-greek", - "lower-latin", "upper-latin", - "lower-alpha", "upper-alpha", - "armenian", "georgian", "hebrew", - "cjk-ideographic", "hiragana", "katakana", - "hiragana-iroha", "katakana-iroha", "none" - ); - - static $positions = array("inside", "outside"); - - foreach ($arr as $value) { - /* http://www.w3.org/TR/CSS21/generate.html#list-style - * A value of 'none' for the 'list-style' property sets both 'list-style-type' and 'list-style-image' to 'none' - */ - if ($value === "none") { - $this->_set_style("list_style_type", $value, $important); - $this->_set_style("list_style_image", $value, $important); - continue; - } - - //On setting or merging or inheriting list_style_image as well as list_style_type, - //and url exists, then url has precedence, otherwise fall back to list_style_type - //Firefox is wrong here (list_style_image gets overwritten on explicite list_style_type) - //Internet Explorer 7/8 and dompdf is right. - - if (mb_substr($value, 0, 3) === "url") { - $this->_set_style("list_style_image", $this->_image($value), $important); - continue; - } - - if ( in_array($value, $types) ) { - $this->_set_style("list_style_type", $value, $important); - } else if ( in_array($value, $positions) ) { - $this->_set_style("list_style_position", $value, $important); - } - } - - //see __set and __get, on all assignments clear cache, not needed on direct set through __set - $this->_prop_cache["list_style"] = null; - $this->_props["list_style"] = $val; - } - - function set_size($val) { - $length_re = "/(\d+\s*(?:pt|px|pc|em|ex|in|cm|mm|%))/"; - - $val = mb_strtolower($val); - - if ( $val === "auto" ) { - return; - } - - $parts = preg_split("/\s+/", $val); - - $computed = array(); - if ( preg_match($length_re, $parts[0]) ) { - $computed[] = $this->length_in_pt($parts[0]); - - if ( isset($parts[1]) && preg_match($length_re, $parts[1]) ) { - $computed[] = $this->length_in_pt($parts[1]); - } - else { - $computed[] = $computed[0]; - } - } - elseif ( isset(CPDF_Adapter::$PAPER_SIZES[$parts[0]]) ) { - $computed = array_slice(CPDF_Adapter::$PAPER_SIZES[$parts[0]], 2, 2); - - if ( isset($parts[1]) && $parts[1] === "landscape" ) { - $computed = array_reverse($computed); - } - } - else { - return; - } - - $this->_props["size"] = $computed; - } - - /** - * Sets the CSS3 transform property - * - * @link http://www.w3.org/TR/css3-2d-transforms/#transform-property - * @param string $val - */ - function set_transform($val) { - $number = "\s*([^,\s]+)\s*"; - $tr_value = "\s*([^,\s]+)\s*"; - $angle = "\s*([^,\s]+(?:deg|rad)?)\s*"; - - if( !preg_match_all("/[a-z]+\([^\)]+\)/i", $val, $parts, PREG_SET_ORDER) ) { - return; - } - - $functions = array( - //"matrix" => "\($number,$number,$number,$number,$number,$number\)", - - "translate" => "\($tr_value(?:,$tr_value)?\)", - "translateX" => "\($tr_value\)", - "translateY" => "\($tr_value\)", - - "scale" => "\($number(?:,$number)?\)", - "scaleX" => "\($number\)", - "scaleY" => "\($number\)", - - "rotate" => "\($angle\)", - - "skew" => "\($angle(?:,$angle)?\)", - "skewX" => "\($angle\)", - "skewY" => "\($angle\)", - ); - - $transforms = array(); - - foreach($parts as $part) { - $t = $part[0]; - - foreach($functions as $name => $pattern) { - if (preg_match("/$name\s*$pattern/i", $t, $matches)) { - $values = array_slice($matches, 1); - - switch($name) { - // <angle> units - case "rotate": - case "skew": - case "skewX": - case "skewY": - - foreach($values as $i => $value) { - if ( strpos($value, "rad") ) - $values[$i] = rad2deg(floatval($value)); - else - $values[$i] = floatval($value); - } - - switch($name) { - case "skew": - if ( !isset($values[1]) ) - $values[1] = 0; - break; - case "skewX": - $name = "skew"; - $values = array($values[0], 0); - break; - case "skewY": - $name = "skew"; - $values = array(0, $values[0]); - break; - } - break; - - // <translation-value> units - case "translate": - $values[0] = $this->length_in_pt($values[0], $this->width); - - if ( isset($values[1]) ) - $values[1] = $this->length_in_pt($values[1], $this->height); - else - $values[1] = 0; - break; - - case "translateX": - $name = "translate"; - $values = array($this->length_in_pt($values[0], $this->width), 0); - break; - - case "translateY": - $name = "translate"; - $values = array(0, $this->length_in_pt($values[0], $this->height)); - break; - - // <number> units - case "scale": - if ( !isset($values[1]) ) - $values[1] = $values[0]; - break; - - case "scaleX": - $name = "scale"; - $values = array($values[0], 1.0); - break; - - case "scaleY": - $name = "scale"; - $values = array(1.0, $values[0]); - break; - } - - $transforms[] = array( - $name, - $values, - ); - } - } - } - - //see __set and __get, on all assignments clear cache, not needed on direct set through __set - $this->_prop_cache["transform"] = null; - $this->_props["transform"] = $transforms; - } - - function set__webkit_transform($val) { - return $this->set_transform($val); - } - - function set__webkit_transform_origin($val) { - return $this->set_transform_origin($val); - } - - /** - * Sets the CSS3 transform-origin property - * - * @link http://www.w3.org/TR/css3-2d-transforms/#transform-origin - * @param string $val - */ - function set_transform_origin($val) { - $values = preg_split("/\s+/", $val); - - if ( count($values) === 0) { - return; - } - - foreach($values as &$value) { - if ( in_array($value, array("top", "left")) ) { - $value = 0; - } - - if ( in_array($value, array("bottom", "right")) ) { - $value = "100%"; - } - } - - if ( !isset($values[1]) ) { - $values[1] = $values[0]; - } - - //see __set and __get, on all assignments clear cache, not needed on direct set through __set - $this->_prop_cache["transform_origin"] = null; - $this->_props["transform_origin"] = $values; - } - - /** - * Generate a string representation of the Style - * - * This dumps the entire property array into a string via print_r. Useful - * for debugging. - * - * @return string - */ - /*DEBUGCSS print: see below additional debugging util*/ - function __toString() { - return print_r(array_merge(array("parent_font_size" => $this->_parent_font_size), - $this->_props), true); - } - -/*DEBUGCSS*/ function debug_print() -/*DEBUGCSS*/ { -/*DEBUGCSS*/ print "parent_font_size:".$this->_parent_font_size . ";\n"; -/*DEBUGCSS*/ foreach($this->_props as $prop => $val ) { -/*DEBUGCSS*/ print $prop.':'.$val; -/*DEBUGCSS*/ if (isset($this->_important_props[$prop])) { -/*DEBUGCSS*/ print '!important'; -/*DEBUGCSS*/ } -/*DEBUGCSS*/ print ";\n"; -/*DEBUGCSS*/ } -/*DEBUGCSS*/ } -} diff --git a/application/third_party/dompdf/include/stylesheet.cls.php b/application/third_party/dompdf/include/stylesheet.cls.php deleted file mode 100644 index 3107d087..00000000 --- a/application/third_party/dompdf/include/stylesheet.cls.php +++ /dev/null @@ -1,1202 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: stylesheet.cls.php,v $ - * Created on: 2004-06-01 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @package dompdf - * - * Changes - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @version 0.5.1.htischer.20090507 - * - Specifity of css selector chain was too small because leading whitespace - * to be counted as number of elements was removed - * - On parsing css properties accept and register !important attribute - * - Add optional debug output - * @version 20090610 - * - _parse_properties on style property name and value remove augmenting superflous - * space for consistent parsing, in particular combined values like background - */ - -/* $Id: stylesheet.cls.php 360 2011-02-15 19:33:52Z fabien.menager $ */ - -/** - * The location of the default built-in CSS file. - * {@link Stylesheet::DEFAULT_STYLESHEET} - */ -define('__DEFAULT_STYLESHEET', DOMPDF_LIB_DIR . DIRECTORY_SEPARATOR . "res" . DIRECTORY_SEPARATOR . "html.css"); - -/** - * The master stylesheet class - * - * The Stylesheet class is responsible for parsing stylesheets and style - * tags/attributes. It also acts as a registry of the individual Style - * objects generated by the current set of loaded CSS files and style - * elements. - * - * @see Style - * @package dompdf - */ -class Stylesheet { - - /** - * The location of the default built-in CSS file. - */ - const DEFAULT_STYLESHEET = __DEFAULT_STYLESHEET; - - /** - * Array of currently defined styles - * @var array - */ - private $_styles; - - /** - * Base protocol of the document being parsed - * Used to handle relative urls. - * @var string - */ - private $_protocol; - - /** - * Base hostname of the document being parsed - * Used to handle relative urls. - * @var string - */ - private $_base_host; - - /** - * Base path of the document being parsed - * Used to handle relative urls. - * @var string - */ - private $_base_path; - - /** - * The style defined by @page rules - * @var Style - */ - private $_page_style; - - /** - * List of loaded files, used to prevent recursion - * @var array - */ - private $_loaded_files; - - /** - * Accepted CSS media types - * List of types and parsing rules for future extensions: - * http://www.w3.org/TR/REC-html40/types.html - * screen, tty, tv, projection, handheld, print, braille, aural, all - * The following are non standard extensions for undocumented specific environments. - * static, visual, bitmap, paged, dompdf - * Note, even though the generated pdf file is intended for print output, - * the desired content might be different (e.g. screen or projection view of html file). - * Therefore allow specification of content by dompdf setting DOMPDF_DEFAULT_MEDIA_TYPE. - * If given, replace media "print" by DOMPDF_DEFAULT_MEDIA_TYPE. - * (Previous version $ACCEPTED_MEDIA_TYPES = $ACCEPTED_GENERIC_MEDIA_TYPES + $ACCEPTED_DEFAULT_MEDIA_TYPE) - */ - static $ACCEPTED_DEFAULT_MEDIA_TYPE = "print"; - static $ACCEPTED_GENERIC_MEDIA_TYPES = array("all", "static", "visual", "bitmap", "paged", "dompdf"); - - /** - * The class constructor. - * - * The base protocol, host & path are initialized to those of - * the current script. - */ - function __construct() { - $this->_styles = array(); - $this->_loaded_files = array(); - list($this->_protocol, $this->_base_host, $this->_base_path) = explode_url($_SERVER["SCRIPT_FILENAME"]); - $this->_page_style = null; - } - - /** - * Class destructor - */ - function __destruct() { - clear_object($this); - } - - /** - * Set the base protocol - * - * @param string $proto - */ - function set_protocol($proto) { $this->_protocol = $proto; } - - /** - * Set the base host - * - * @param string $host - */ - function set_host($host) { $this->_base_host = $host; } - - /** - * Set the base path - * - * @param string $path - */ - function set_base_path($path) { $this->_base_path = $path; } - - /** - * Return the base protocol for this stylesheet - * - * @return string - */ - function get_protocol() { return $this->_protocol; } - - /** - * Return the base host for this stylesheet - * - * @return string - */ - function get_host() { return $this->_base_host; } - - /** - * Return the base path for this stylesheet - * - * @return string - */ - function get_base_path() { return $this->_base_path; } - - /** - * Return the page style - * - * @return Style - */ - function get_page_style() { return $this->_page_style; } - - /** - * Add a new Style object to the stylesheet - * - * add_style() adds a new Style object to the current stylesheet, or - * merges a new Style with an existing one. - * - * @param string $key the Style's selector - * @param Style $style the Style to be added - */ - function add_style($key, Style $style) { - if (!is_string($key)) - throw new DOMPDF_Exception("CSS rule must be keyed by a string."); - - if ( isset($this->_styles[$key]) ) - $this->_styles[$key]->merge($style); - else - $this->_styles[$key] = clone $style; - } - - /** - * lookup a specifc Style object - * - * lookup() returns the Style specified by $key, or null if the Style is - * not found. - * - * @param string $key the selector of the requested Style - * @return Style - */ - function lookup($key) { - if ( !isset($this->_styles[$key]) ) - return null; - - return $this->_styles[$key]; - } - - /** - * create a new Style object associated with this stylesheet - * - * @param Style $parent The style of this style's parent in the DOM tree - * @return Style - */ - function create_style(Style $parent = null) { - return new Style($this, $parent); - } - - /** - * load and parse a CSS string - * - * @param string $css - */ - function load_css(&$css) { $this->_parse_css($css); } - - - /** - * load and parse a CSS file - * - * @param string $file - */ - function load_css_file($file) { - global $_dompdf_warnings; - - // Prevent circular references - if ( isset($this->_loaded_files[$file]) ) - return; - - $this->_loaded_files[$file] = true; - $parsed_url = explode_url($file); - - list($this->_protocol, $this->_base_host, $this->_base_path, $filename) = $parsed_url; - - if ( !DOMPDF_ENABLE_REMOTE && - ($this->_protocol != "" && $this->_protocol !== "file://") ) { - record_warnings(E_USER_WARNING, "Remote CSS file '$file' requested, but DOMPDF_ENABLE_REMOTE is false.", __FILE__, __LINE__); - return; - } - - // Fix submitted by Nick Oostveen for aliased directory support: - if ( $this->_protocol == "" ) - $file = $this->_base_path . $filename; - else - $file = build_url($this->_protocol, $this->_base_host, $this->_base_path, $filename); - - set_error_handler("record_warnings"); - $css = file_get_contents($file); - restore_error_handler(); - - if ( $css == "" ) { - record_warnings(E_USER_WARNING, "Unable to load css file $file", __FILE__, __LINE__);; - return; - } - - $this->_parse_css($css); - } - - /** - * @link http://www.w3.org/TR/CSS21/cascade.html#specificity} - * - * @param string $selector - * @return int - */ - private function _specificity($selector) { - // http://www.w3.org/TR/CSS21/cascade.html#specificity - // ignoring the ":" pseudoclass modifyers - // also ignored in _css_selector_to_xpath - - $a = ($selector === "!style attribute") ? 1 : 0; - - $b = min(mb_substr_count($selector, "#"), 255); - - $c = min(mb_substr_count($selector, ".") + - mb_substr_count($selector, "["), 255); - - $d = min(mb_substr_count($selector, " ") + - mb_substr_count($selector, ">") + - mb_substr_count($selector, "+"), 255); - - //If a normal element name is at the begining of the string, - //a leading whitespace might have been removed on whitespace collapsing and removal - //therefore there might be one whitespace less as selected element names - //this can lead to a too small specificity - //see _css_selector_to_xpath - - if ( !in_array($selector[0], array(" ", ">", ".", "#", "+", ":", "[")) ) { - $d++; - } - - if (DEBUGCSS) { - /*DEBUGCSS*/ print "<pre>\n"; - /*DEBUGCSS*/ printf("_specificity(): 0x%08x \"%s\"\n", ($a << 24) | ($b << 16) | ($c << 8) | ($d), $selector); - /*DEBUGCSS*/ print "</pre>"; - } - - return ($a << 24) | ($b << 16) | ($c << 8) | ($d); - } - - /** - * converts a CSS selector to an XPath query. - * - * @param string $selector - * @return string - */ - private function _css_selector_to_xpath($selector, $first_pass = false) { - - // Collapse white space and strip whitespace around delimiters -// $search = array("/\\s+/", "/\\s+([.>#+:])\\s+/"); -// $replace = array(" ", "\\1"); -// $selector = preg_replace($search, $replace, trim($selector)); - - // Initial query (non-absolute) - $query = "//"; - - // Will contain :before and :after if they must be created - $pseudo_elements = array(); - - // Parse the selector - //$s = preg_split("/([ :>.#+])/", $selector, -1, PREG_SPLIT_DELIM_CAPTURE); - - $delimiters = array(" ", ">", ".", "#", "+", ":", "["); - - // Add an implicit * at the beginning of the selector - // if it begins with an attribute selector - if ( $selector[0] === "[" ) - $selector = "*$selector"; - - // Add an implicit space at the beginning of the selector if there is no - // delimiter there already. - if ( !in_array($selector[0], $delimiters) ) - $selector = " $selector"; - - $tok = ""; - $len = mb_strlen($selector); - $i = 0; - - while ( $i < $len ) { - - $s = $selector[$i]; - $i++; - - // Eat characters up to the next delimiter - $tok = ""; - $in_attr = false; - - while ($i < $len) { - $c = $selector[$i]; - $c_prev = $selector[$i-1]; - - if ( !$in_attr && in_array($c, $delimiters) ) - break; - - if ( $c_prev === "[" ) { - $in_attr = true; - } - - $tok .= $selector[$i++]; - } - - switch ($s) { - - case " ": - case ">": - // All elements matching the next token that are direct children of - // the current token - $expr = $s === " " ? "descendant" : "child"; - - if ( mb_substr($query, -1, 1) !== "/" ) - $query .= "/"; - - if ( !$tok ) - $tok = "*"; - - $query .= "$expr::$tok"; - $tok = ""; - break; - - case ".": - case "#": - // All elements matching the current token with a class/id equal to - // the _next_ token. - - $attr = $s === "." ? "class" : "id"; - - // empty class/id == * - if ( mb_substr($query, -1, 1) === "/" ) - $query .= "*"; - - // Match multiple classes: $tok contains the current selected - // class. Search for class attributes with class="$tok", - // class=".* $tok .*" and class=".* $tok" - - // This doesn't work because libxml only supports XPath 1.0... - //$query .= "[matches(@$attr,\"^${tok}\$|^${tok}[ ]+|[ ]+${tok}\$|[ ]+${tok}[ ]+\")]"; - - // Query improvement by Michael Sheakoski <michael@mjsdigital.com>: - $query .= "[contains(concat(' ', @$attr, ' '), concat(' ', '$tok', ' '))]"; - $tok = ""; - break; - - case "+": - // All sibling elements that folow the current token - if ( mb_substr($query, -1, 1) !== "/" ) - $query .= "/"; - - $query .= "following-sibling::$tok"; - $tok = ""; - break; - - case ":": - // Pseudo-classes - switch ($tok) { - - case "first-child": - $query .= "[1]"; - $tok = ""; - break; - - case "last-child": - $query .= "[not(following-sibling::*)]"; - $tok = ""; - break; - - case "link": - $query .= "[@href]"; - $tok = ""; - break; - - case "first-line": // TODO - case "first-letter": // TODO - - // N/A - case "active": - case "visited": - $query .= "[@dummy]"; - $tok = ""; - break; - - /* Pseudo-elements */ - case "before": - case "after": - if ( $first_pass ) - $pseudo_elements[$tok] = $tok; - else - $query .= "/*[@$tok]"; - - $tok = ""; - break; - - case "empty": - $query .= "[not(*) and not(normalize-space())]"; - $tok = ""; - break; - - case "disabled": - case "checked": - $query .= "[@$tok]"; - $tok = ""; - break; - - case "enabled": - $query .= "[not(@disabled)]"; - $tok = ""; - break; - } - - break; - - case "[": - // Attribute selectors. All with an attribute matching the following token(s) - $attr_delimiters = array("=", "]", "~", "|", "$", "^", "*"); - $tok_len = mb_strlen($tok); - $j = 0; - - $attr = ""; - $op = ""; - $value = ""; - - while ( $j < $tok_len ) { - if ( in_array($tok[$j], $attr_delimiters) ) - break; - $attr .= $tok[$j++]; - } - - switch ( $tok[$j] ) { - - case "~": - case "|": - case "$": - case "^": - case "*": - $op .= $tok[$j++]; - - if ( $tok[$j] !== "=" ) - throw new DOMPDF_Exception("Invalid CSS selector syntax: invalid attribute selector: $selector"); - - $op .= $tok[$j]; - break; - - case "=": - $op = "="; - break; - - } - - // Read the attribute value, if required - if ( $op != "" ) { - $j++; - while ( $j < $tok_len ) { - if ( $tok[$j] === "]" ) - break; - $value .= $tok[$j++]; - } - } - - if ( $attr == "" ) - throw new DOMPDF_Exception("Invalid CSS selector syntax: missing attribute name"); - - $value = trim($value, "\"'"); - - switch ( $op ) { - - case "": - $query .= "[@$attr]"; - break; - - case "=": - $query .= "[@$attr=\"$value\"]"; - break; - - case "~=": - // FIXME: this will break if $value contains quoted strings - // (e.g. [type~="a b c" "d e f"]) - $values = explode(" ", $value); - $query .= "["; - - foreach ( $values as $val ) - $query .= "@$attr=\"$val\" or "; - - $query = rtrim($query, " or ") . "]"; - break; - - case "|=": - $values = explode("-", $value); - $query .= "["; - - foreach ( $values as $val ) - $query .= "starts-with(@$attr, \"$val\") or "; - - $query = rtrim($query, " or ") . "]"; - break; - - case "$=": - $query .= "[substring(@$attr, string-length(@$attr)-".(strlen($value) - 1).")=\"$value\"]"; - break; - - case "^=": - $query .= "[starts-with(@$attr,\"$value\")]"; - break; - - case "*=": - $query .= "[contains(@$attr,\"$value\")]"; - break; - } - - break; - } - } - $i++; - -// case ":": -// // Pseudo selectors: ignore for now. Partially handled directly -// // below. - -// // Skip until the next special character, leaving the token as-is -// while ( $i < $len ) { -// if ( in_array($selector[$i], $delimiters) ) -// break; -// $i++; -// } -// break; - -// default: -// // Add the character to the token -// $tok .= $selector[$i++]; -// break; -// } - -// } - - - // Trim the trailing '/' from the query - if ( mb_strlen($query) > 2 ) - $query = rtrim($query, "/"); - - return array("query" => $query, "pseudo_elements" => $pseudo_elements); - } - - /** - * applies all current styles to a particular document tree - * - * apply_styles() applies all currently loaded styles to the provided - * {@link Frame_Tree}. Aside from parsing CSS, this is the main purpose - * of this class. - * - * @param Frame_Tree $tree - */ - function apply_styles(Frame_Tree $tree) { - - // Use XPath to select nodes. This would be easier if we could attach - // Frame objects directly to DOMNodes using the setUserData() method, but - // we can't do that just yet. Instead, we set a _node attribute_ in - // Frame->set_id() and use that as a handle on the Frame object via - // Frame_Tree::$_registry. - - // We create a scratch array of styles indexed by frame id. Once all - // styles have been assigned, we order the cached styles by specificity - // and create a final style object to assign to the frame. - - // FIXME: this is not particularly robust... - - $styles = array(); - $xp = new DOMXPath($tree->get_dom()); - - // Add generated content - foreach ($this->_styles as $selector => $style) { - if (strpos($selector, ":before") === false && - strpos($selector, ":after") === false) continue; - - $query = $this->_css_selector_to_xpath($selector, true); - - // Retrieve the nodes - $nodes = @$xp->query($query["query"]); - if ($nodes == null) { - record_warnings(E_USER_WARNING, "The CSS selector '$selector' is not valid", __FILE__, __LINE__); - continue; - } - - foreach ($nodes as $i => $node) { - foreach ($query["pseudo_elements"] as $pos) { - if (($src = $this->_image($style->content)) !== "none") { - $new_node = $node->ownerDocument->createElement("img_generated"); - $new_node->setAttribute("src", $src); - } - else { - $new_node = $node->ownerDocument->createElement("dompdf_generated"); - } - $new_node->setAttribute($pos, $pos); - - $tree->insert_node($node, $new_node, $pos); - } - } - } - - // Apply all styles in stylesheet - foreach ($this->_styles as $selector => $style) { - $query = $this->_css_selector_to_xpath($selector); - - // Retrieve the nodes - $nodes = @$xp->query($query["query"]); - if ($nodes == null) { - record_warnings(E_USER_WARNING, "The CSS selector '$selector' is not valid", __FILE__, __LINE__); - continue; - } - - foreach ($nodes as $node) { - // Retrieve the node id - if ( $node->nodeType != XML_ELEMENT_NODE ) // Only DOMElements get styles - continue; - - $id = $node->getAttribute("frame_id"); - - // Assign the current style to the scratch array - $spec = $this->_specificity($selector); - $styles[$id][$spec][] = $style; - } - } - - // Now create the styles and assign them to the appropriate frames. (We - // iterate over the tree using an implicit Frame_Tree iterator.) - $root_flg = false; - foreach ($tree->get_frames() as $frame) { - // pre_r($frame->get_node()->nodeName . ":"); - if ( !$root_flg && $this->_page_style ) { - $style = $this->_page_style; - $root_flg = true; - } else - $style = $this->create_style(); - - // Find nearest DOMElement parent - $p = $frame; - while ( $p = $p->get_parent() ) - if ($p->get_node()->nodeType == XML_ELEMENT_NODE ) - break; - - // Styles can only be applied directly to DOMElements; anonymous - // frames inherit from their parent - if ( $frame->get_node()->nodeType != XML_ELEMENT_NODE ) { - if ( $p ) - $style->inherit($p->get_style()); - $frame->set_style($style); - continue; - } - - $id = $frame->get_id(); - - // Handle HTML 4.0 attributes - Attribute_Translator::translate_attributes($frame); - - // Locate any additional style attributes - if ( ($str = $frame->get_node()->getAttribute("style")) !== "" ) { - // Destroy CSS comments - $str = preg_replace("'/\*.*?\*/'si", "", $str); - - $spec = $this->_specificity("!style attribute"); - $styles[$id][$spec][] = $this->_parse_properties($str); - } - - // Grab the applicable styles - if ( isset($styles[$id]) ) { - - $applied_styles = $styles[ $frame->get_id() ]; - - // Sort by specificity - ksort($applied_styles); - - if (DEBUGCSS) { - $debug_nodename = $frame->get_node()->nodeName; - print "<pre>\n[$debug_nodename\n"; - foreach ($applied_styles as $spec => $arr) { - printf("specificity: 0x%08x\n",$spec); - foreach ($arr as $s) { - print "[\n"; - $s->debug_print(); - print "]\n"; - } - } - } - - // Merge the new styles with the inherited styles - foreach ($applied_styles as $arr) { - foreach ($arr as $s) - $style->merge($s); - } - } - - // Inherit parent's styles if required - if ( $p ) { - - if (DEBUGCSS) { - print "inherit:\n"; - print "[\n"; - $p->get_style()->debug_print(); - print "]\n"; - } - - $style->inherit( $p->get_style() ); - } - - if (DEBUGCSS) { - print "DomElementStyle:\n"; - print "[\n"; - $style->debug_print(); - print "]\n"; - print "/$debug_nodename]\n</pre>"; - } - - /*DEBUGCSS print: see below different print debugging method - pre_r($frame->get_node()->nodeName . ":"); - echo "<pre>"; - echo $style; - echo "</pre>";*/ - $frame->set_style($style); - - } - - // We're done! Clean out the registry of all styles since we - // won't be needing this later. - foreach ( array_keys($this->_styles) as $key ) { - $this->_styles[$key] = null; - unset($this->_styles[$key]); - } - - } - - - /** - * parse a CSS string using a regex parser - * - * Called by {@link Stylesheet::parse_css()} - * - * @param string $str - */ - private function _parse_css($str) { - - $str = trim($str); - - // Destroy comments and remove HTML comments - $css = preg_replace(array( - "'/\*.*?\*/'si", - "/^<!--/", - "/-->$/" - ), "", $str); - - // FIXME: handle '{' within strings, e.g. [attr="string {}"] - - // Something more legible: - $re = - "/\s* # Skip leading whitespace \n". - "( @([^\s]+)\s+([^{;]*) (?:;|({)) )? # Match @rules followed by ';' or '{' \n". - "(?(1) # Only parse sub-sections if we're in an @rule... \n". - " (?(4) # ...and if there was a leading '{' \n". - " \s*( (?:(?>[^{}]+) ({)? # Parse rulesets and individual @page rules \n". - " (?(6) (?>[^}]*) }) \s*)+? \n". - " ) \n". - " }) # Balancing '}' \n". - "| # Branch to match regular rules (not preceeded by '@')\n". - "([^{]*{[^}]*})) # Parse normal rulesets\n". - "/xs"; - - if ( preg_match_all($re, $css, $matches, PREG_SET_ORDER) === false ) - // An error occured - throw new DOMPDF_Exception("Error parsing css file: preg_match_all() failed."); - - // After matching, the array indicies are set as follows: - // - // [0] => complete text of match - // [1] => contains '@import ...;' or '@media {' if applicable - // [2] => text following @ for cases where [1] is set - // [3] => media types or full text following '@import ...;' - // [4] => '{', if present - // [5] => rulesets within media rules - // [6] => '{', within media rules - // [7] => individual rules, outside of media rules - // - //pre_r($matches); - foreach ( $matches as $match ) { - $match[2] = trim($match[2]); - - if ( $match[2] !== "" ) { - // Handle @rules - switch ($match[2]) { - - case "import": - $this->_parse_import($match[3]); - break; - - case "media": - $acceptedmedia = self::$ACCEPTED_GENERIC_MEDIA_TYPES; - if ( defined("DOMPDF_DEFAULT_MEDIA_TYPE") ) { - $acceptedmedia[] = DOMPDF_DEFAULT_MEDIA_TYPE; - } else { - $acceptedmedia[] = self::$ACCEPTED_DEFAULT_MEDIA_TYPE; - } - if ( in_array(mb_strtolower(trim($match[3])), $acceptedmedia ) ) { - $this->_parse_sections($match[5]); - } - break; - - case "page": - //This handles @page to be applied to page oriented media - //Note: This has a reduced syntax: - //@page { margin:1cm; color:blue; } - //Not a sequence of styles like a full.css, but only the properties - //of a single style, which is applied to the very first "root" frame before - //processing other styles of the frame. - //Working properties: - // margin (for margin around edge of paper) - // font-family (default font of pages) - // color (default text color of pages) - //Non working properties: - // border - // padding - // background-color - //Todo:Reason is unknown - //Other properties (like further font or border attributes) not tested. - //If a border or background color around each paper sheet is desired, - //assign it to the <body> tag, possibly only for the css of the correct media type. - - // If the page has a name, skip the style. - if ($match[3] !== "") - return; - - // Store the style for later... - if ( is_null($this->_page_style) ) - $this->_page_style = $this->_parse_properties($match[5]); - else - $this->_page_style->merge($this->_parse_properties($match[5])); - break; - - case "font-face": - $this->_parse_font_face($match[5]); - break; - - default: - // ignore everything else - break; - } - - continue; - } - - if ( $match[7] !== "" ) - $this->_parse_sections($match[7]); - - } - } - - /* See also style.cls Style::_image(), refactoring?, works also for imported css files */ - protected function _image($val) { - $DEBUGCSS=DEBUGCSS; - - if ( mb_strpos($val, "url") === false ) { - $path = "none"; //Don't resolve no image -> otherwise would prefix path and no longer recognize as none - } - else { - $val = preg_replace("/url\(['\"]?([^'\")]+)['\"]?\)/","\\1", trim($val)); - - // Resolve the url now in the context of the current stylesheet - $parsed_url = explode_url($val); - if ( $parsed_url["protocol"] == "" && $this->get_protocol() == "" ) { - if ($parsed_url["path"][0] === '/' || $parsed_url["path"][0] === '\\' ) { - $path = $_SERVER["DOCUMENT_ROOT"].'/'; - } else { - $path = $this->get_base_path(); - } - $path .= $parsed_url["path"] . $parsed_url["file"]; - $path = realpath($path); - // If realpath returns FALSE then specifically state that there is no background image - // FIXME: Is this causing problems for imported CSS files? There are some './none' references when running the test cases. - if (!$path) { $path = 'none'; } - } else { - $path = build_url($this->get_protocol(), - $this->get_host(), - $this->get_base_path(), - $val); - } - } - if ($DEBUGCSS) { - print "<pre>[_image\n"; - print_r($parsed_url); - print $this->get_protocol()."\n".$this->get_base_path()."\n".$path."\n"; - print "_image]</pre>";; - } - return $path; - } - - /** - * parse @import{} sections - * - * @param string $url the url of the imported CSS file - */ - private function _parse_import($url) { - $arr = preg_split("/[\s\n,]/", $url,-1, PREG_SPLIT_NO_EMPTY); - $url = array_shift($arr); - $accept = false; - - if ( count($arr) > 0 ) { - - $acceptedmedia = self::$ACCEPTED_GENERIC_MEDIA_TYPES; - if ( defined("DOMPDF_DEFAULT_MEDIA_TYPE") ) { - $acceptedmedia[] = DOMPDF_DEFAULT_MEDIA_TYPE; - } else { - $acceptedmedia[] = self::$ACCEPTED_DEFAULT_MEDIA_TYPE; - } - - // @import url media_type [media_type...] - foreach ( $arr as $type ) { - if ( in_array(mb_strtolower(trim($type)), $acceptedmedia) ) { - $accept = true; - break; - } - } - - } else { - // unconditional import - $accept = true; - } - - if ( $accept ) { - // Store our current base url properties in case the new url is elsewhere - $protocol = $this->_protocol; - $host = $this->_base_host; - $path = $this->_base_path; - - // $url = str_replace(array('"',"url", "(", ")"), "", $url); - // If the protocol is php, assume that we will import using file:// - // $url = build_url($protocol == "php://" ? "file://" : $protocol, $host, $path, $url); - // Above does not work for subfolders and absolute urls. - // Todo: As above, do we need to replace php or file to an empty protocol for local files? - - $url = $this->_image($url); - - $this->load_css_file($url); - - // Restore the current base url - $this->_protocol = $protocol; - $this->_base_host = $host; - $this->_base_path = $path; - } - - } - - /** - * parse @font-face{} sections - * http://www.w3.org/TR/css3-fonts/#the-font-face-rule - * - * @param string $str CSS @font-face rules - * @return Style - */ - private function _parse_font_face($str) { - $descriptors = $this->_parse_properties($str); - - preg_match_all("/(url|local)\s*\([\"\']?([^\"\'\)]+)[\"\']?\)\s*(format\s*\([\"\']?([^\"\'\)]+)[\"\']?\))?/i", $descriptors->src, $src); - - $sources = array(); - foreach($src[0] as $i => $value) { - $sources[] = array( - "local" => strtolower($src[1][$i]) === "local", - "uri" => $src[2][$i], - "format" => $src[4][$i], - ); - } - - //@todo download font file, ttf2afm, etc - } - - /** - * parse regular CSS blocks - * - * _parse_properties() creates a new Style object based on the provided - * CSS rules. - * - * @param string $str CSS rules - * @return Style - */ - private function _parse_properties($str) { - $properties = preg_split("/;(?=(?:[^\(]*\([^\)]*\))*(?![^\)]*\)))/", $str); - - if (DEBUGCSS) print '[_parse_properties'; - - // Create the style - $style = new Style($this); - foreach ($properties as $prop) { - // If the $prop contains an url, the regex may be wrong - // @todo: fix the regex so that it works everytime - /*if (strpos($prop, "url(") === false) { - if (preg_match("/([a-z-]+)\s*:\s*[^:]+$/i", $prop, $m)) - $prop = $m[0]; - }*/ - //A css property can have " ! important" appended (whitespace optional) - //strip this off to decode core of the property correctly. - //Pass on in the style to allow proper handling: - //!important properties can only be overridden by other !important ones. - //$style->$prop_name = is a shortcut of $style->__set($prop_name,$value);. - //If no specific set function available, set _props["prop_name"] - //style is always copied completely, or $_props handled separately - //Therefore set a _important_props["prop_name"]=true to indicate the modifier - - /* Instead of short code, prefer the typical case with fast code - $important = preg_match("/(.*?)!\s*important/",$prop,$match); - if ( $important ) { - $prop = $match[1]; - } - $prop = trim($prop); - */ - if (DEBUGCSS) print '('; - $important = false; - $prop = trim($prop); - if (substr($prop,-9) === 'important') { - $prop_tmp = rtrim(substr($prop,0,-9)); - if (substr($prop_tmp,-1) === '!') { - $prop = rtrim(substr($prop_tmp,0,-1)); - $important = true; - } - } - - if ($prop == "") { - if (DEBUGCSS) print 'empty)'; - continue; - } - - $i = mb_strpos($prop, ":"); - if ( $i === false ) { - if (DEBUGCSS) print 'novalue'.$prop.')'; - continue; - } - - $prop_name = rtrim(mb_strtolower(mb_substr($prop, 0, $i))); - $value = ltrim(mb_substr($prop, $i+1)); - if (DEBUGCSS) print $prop_name.':='.$value.($important?'!IMPORTANT':'').')'; - //New style, anyway empty - //if ($important || !$style->important_get($prop_name) ) { - //$style->$prop_name = array($value,$important); - //assignment might be replaced by overloading through __set, - //and overloaded functions might check _important_props, - //therefore set _important_props first. - if ($important) { - $style->important_set($prop_name); - } - //For easier debugging, don't use overloading of assignments with __set - $style->$prop_name = $value; - //$style->props_set($prop_name, $value); - } - if (DEBUGCSS) print '_parse_properties]'; - - return $style; - } - - /** - * parse selector + rulesets - * - * @param string $str CSS selectors and rulesets - */ - private function _parse_sections($str) { - // Pre-process: collapse all whitespace and strip whitespace around '>', - // '.', ':', '+', '#' - - $patterns = array("/[\\s\n]+/", "/\\s+([>.:+#])\\s+/"); - $replacements = array(" ", "\\1"); - $str = preg_replace($patterns, $replacements, $str); - - $sections = explode("}", $str); - if (DEBUGCSS) print '[_parse_sections'; - foreach ($sections as $sect) { - $i = mb_strpos($sect, "{"); - - $selectors = explode(",", mb_substr($sect, 0, $i)); - if (DEBUGCSS) print '[section'; - $style = $this->_parse_properties(trim(mb_substr($sect, $i+1))); - - // Assign it to the selected elements - foreach ($selectors as $selector) { - $selector = trim($selector); - - if ($selector == "") { - if (DEBUGCSS) print '#empty#'; - continue; - } - if (DEBUGCSS) print '#'.$selector.'#'; - //if (DEBUGCSS) { if (strpos($selector,'p') !== false) print '!!!p!!!#'; } - - $this->add_style($selector, $style); - } - if (DEBUGCSS) print 'section]'; - } - if (DEBUGCSS) print '_parse_sections]'; - } - - /** - * dumps the entire stylesheet as a string - * - * Generates a string of each selector and associated style in the - * Stylesheet. Useful for debugging. - * - * @return string - */ - function __toString() { - $str = ""; - foreach ($this->_styles as $selector => $style) - $str .= "$selector => " . $style->__toString() . "\n"; - - return $str; - } -} diff --git a/application/third_party/dompdf/include/table_cell_frame_decorator.cls.php b/application/third_party/dompdf/include/table_cell_frame_decorator.cls.php deleted file mode 100644 index d23eaa44..00000000 --- a/application/third_party/dompdf/include/table_cell_frame_decorator.cls.php +++ /dev/null @@ -1,135 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: table_cell_frame_decorator.cls.php,v $ - * Created on: 2004-07-29 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: table_cell_frame_decorator.cls.php 216 2010-03-11 22:49:18Z ryan.masten $ */ - -/** - * Decorates table cells for layout - * - * @access private - * @package dompdf - */ -class Table_Cell_Frame_Decorator extends Block_Frame_Decorator { - - protected $_resolved_borders; - protected $_content_height; - - //........................................................................ - - function __construct(Frame $frame, DOMPDF $dompdf) { - parent::__construct($frame, $dompdf); - $this->_resolved_borders = array(); - $this->_content_height = 0; - } - - //........................................................................ - - function reset() { - parent::reset(); - $this->_resolved_borders = array(); - $this->_content_height = 0; - $this->_frame->reset(); - } - - function get_content_height() { - return $this->_content_height; - } - - function set_content_height($height) { - $this->_content_height = $height; - } - - function set_cell_height($height) { - $style = $this->get_style(); - $v_space = $style->length_in_pt(array($style->margin_top, - $style->padding_top, - $style->border_top_width, - $style->border_bottom_width, - $style->padding_bottom, - $style->margin_bottom), - $style->width); - - $new_height = $height - $v_space; - $style->height = $new_height; - - if ( $new_height > $this->_content_height ) { - // Adjust our vertical alignment - $valign = $style->vertical_align; - - switch ($valign) { - - default: - case "baseline": - // FIXME: this isn't right - - case "top": - // Don't need to do anything - return; - - case "middle": - $delta = ($new_height - $this->_content_height) / 2; - break; - - case "bottom": - $delta = $new_height - $this->_content_height; - break; - - } - - // Move our children - foreach ( $this->get_lines() as $i => $line ) { - foreach ( $line["frames"] as $frame ) - $frame->set_position( null, $frame->get_position("y") + $delta ); - } - } - - } - - function set_resolved_border($side, $border_spec) { - $this->_resolved_borders[$side] = $border_spec; - } - - //........................................................................ - - function get_resolved_border($side) { - return $this->_resolved_borders[$side]; - } - - function get_resolved_borders() { return $this->_resolved_borders; } -} diff --git a/application/third_party/dompdf/include/table_cell_frame_reflower.cls.php b/application/third_party/dompdf/include/table_cell_frame_reflower.cls.php deleted file mode 100644 index 0393c85b..00000000 --- a/application/third_party/dompdf/include/table_cell_frame_reflower.cls.php +++ /dev/null @@ -1,147 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: table_cell_frame_reflower.cls.php,v $ - * Created on: 2004-06-07 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: table_cell_frame_reflower.cls.php 358 2011-01-30 22:22:47Z fabien.menager $ */ - - -/** - * Reflows table cells - * - * @access private - * @package dompdf - */ -class Table_Cell_Frame_Reflower extends Block_Frame_Reflower { - - //........................................................................ - - function __construct(Frame $frame) { - parent::__construct($frame); - } - - //........................................................................ - - function reflow(Frame_Decorator $block = null) { - - $style = $this->_frame->get_style(); - - $table = Table_Frame_Decorator::find_parent_table($this->_frame); - $cellmap = $table->get_cellmap(); - - list($x, $y) = $cellmap->get_frame_position($this->_frame); - $this->_frame->set_position($x, $y); - - $cells = $cellmap->get_spanned_cells($this->_frame); - - $w = 0; - foreach ( $cells["columns"] as $i ) { - $col = $cellmap->get_column( $i ); - $w += $col["used-width"]; - } - - //FIXME? - $h = $this->_frame->get_containing_block("h"); - - $left_space = $style->length_in_pt(array($style->margin_left, - $style->padding_left, - $style->border_left_width), - $w); - - $right_space = $style->length_in_pt(array($style->padding_right, - $style->margin_right, - $style->border_right_width), - $w); - - $top_space = $style->length_in_pt(array($style->margin_top, - $style->padding_top, - $style->border_top_width), - $h); - $bottom_space = $style->length_in_pt(array($style->margin_bottom, - $style->padding_bottom, - $style->border_bottom_width), - $h); - - $style->width = $cb_w = $w - $left_space - $right_space; - - $content_x = $x + $left_space; - $content_y = $line_y = $y + $top_space; - - // Adjust the first line based on the text-indent property - $indent = $style->length_in_pt($style->text_indent, $w); - $this->_frame->increase_line_width($indent); - - // Set the y position of the first line in the cell - $page = $this->_frame->get_root(); - $this->_frame->set_current_line($line_y); - - // Set the containing blocks and reflow each child - foreach ( $this->_frame->get_children() as $child ) { - - if ( $page->is_full() ) - break; - - $child->set_containing_block($content_x, $content_y, $cb_w, $h); - $child->reflow($this->_frame); - - } - - // Determine our height - $style_height = $style->length_in_pt($style->height, $h); - - $this->_frame->set_content_height($this->_calculate_content_height()); - - $height = max($style_height, $this->_frame->get_content_height()); - - // Let the cellmap know our height - $cell_height = $height / count($cells["rows"]); - - if ($style_height <= $height) - $cell_height += $top_space + $bottom_space; - - foreach ($cells["rows"] as $i) - $cellmap->set_row_height($i, $cell_height); - - $style->height = $height; - - $this->_text_align(); - - $this->vertical_align(); - - } - -} diff --git a/application/third_party/dompdf/include/table_cell_positioner.cls.php b/application/third_party/dompdf/include/table_cell_positioner.cls.php deleted file mode 100644 index 29842ace..00000000 --- a/application/third_party/dompdf/include/table_cell_positioner.cls.php +++ /dev/null @@ -1,61 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: table_cell_positioner.cls.php,v $ - * Created on: 2004-06-08 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: table_cell_positioner.cls.php 216 2010-03-11 22:49:18Z ryan.masten $ */ - -/** - * Positions table cells - * - * @access private - * @package dompdf - */ -class Table_Cell_Positioner extends Positioner { - - function __construct(Frame_Decorator $frame) { parent::__construct($frame); } - - //........................................................................ - - function position() { - - $table = Table_Frame_Decorator::find_parent_table($this->_frame); - $cellmap = $table->get_cellmap(); - $this->_frame->set_position($cellmap->get_frame_position($this->_frame)); - - } -} diff --git a/application/third_party/dompdf/include/table_cell_renderer.cls.php b/application/third_party/dompdf/include/table_cell_renderer.cls.php deleted file mode 100644 index 5417032b..00000000 --- a/application/third_party/dompdf/include/table_cell_renderer.cls.php +++ /dev/null @@ -1,185 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: table_cell_renderer.cls.php,v $ - * Created on: 2004-06-09 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: table_cell_renderer.cls.php 311 2010-09-05 20:02:01Z fabien.menager $ */ - -/** - * Renders table cells - * - * @access private - * @package dompdf - */ -class Table_Cell_Renderer extends Block_Renderer { - - //........................................................................ - - function render(Frame $frame) { - $style = $frame->get_style(); - - $this->_set_opacity( $frame->get_opacity( $style->opacity ) ); - - // Draw our background, border and content - if ( ($bg = $style->background_color) !== "transparent" ) { - list($x, $y, $w, $h) = $frame->get_padding_box(); - $this->_canvas->filled_rectangle( $x, $y, $w, $h, $bg ); - } - else { - list($x, $y, $w, $h) = $frame->get_padding_box(); - } - - if ( ($url = $style->background_image) && $url !== "none" ) { - $this->_background_image($url, $x, $y, $w, $h, $style); - } - - if ( $style->border_collapse !== "collapse" ) { - $this->_render_border($frame, "bevel"); - $this->_render_outline($frame, "bevel"); - return; - } - - // The collapsed case is slightly complicated... - // @todo Add support for outlines here - - $cellmap = Table_Frame_Decorator::find_parent_table($frame)->get_cellmap(); - $cells = $cellmap->get_spanned_cells($frame); - $num_rows = $cellmap->get_num_rows(); - $num_cols = $cellmap->get_num_cols(); - - // Determine the top row spanned by this cell - $i = $cells["rows"][0]; - $top_row = $cellmap->get_row($i); - - // Determine if this cell borders on the bottom of the table. If so, - // then we draw its bottom border. Otherwise the next row down will - // draw its top border instead. - if (in_array( $num_rows - 1, $cells["rows"])) { - $draw_bottom = true; - $bottom_row = $cellmap->get_row($num_rows - 1); - } else - $draw_bottom = false; - - - // Draw the horizontal borders - foreach ( $cells["columns"] as $j ) { - $bp = $cellmap->get_border_properties($i, $j); - - $y = $top_row["y"] - $bp["top"]["width"] / 2; - - $col = $cellmap->get_column($j); - $x = $col["x"] - $bp["left"]["width"] / 2; - $w = $col["used-width"] + ($bp["left"]["width"] + $bp["right"]["width"] ) / 2; - - if ( $bp["top"]["style"] !== "none" && $bp["top"]["width"] > 0 ) { - $widths = array($bp["top"]["width"], - $bp["right"]["width"], - $bp["bottom"]["width"], - $bp["left"]["width"]); - $method = "_border_". $bp["top"]["style"]; - $this->$method($x, $y, $w, $bp["top"]["color"], $widths, "top", "square"); - } - - if ( $draw_bottom ) { - $bp = $cellmap->get_border_properties($num_rows - 1, $j); - if ( $bp["bottom"]["style"] === "none" || $bp["bottom"]["width"] <= 0 ) - continue; - - $y = $bottom_row["y"] + $bottom_row["height"] + $bp["bottom"]["width"] / 2; - - $widths = array($bp["top"]["width"], - $bp["right"]["width"], - $bp["bottom"]["width"], - $bp["left"]["width"]); - $method = "_border_". $bp["bottom"]["style"]; - $this->$method($x, $y, $w, $bp["bottom"]["color"], $widths, "bottom", "square"); - - } - } - - $j = $cells["columns"][0]; - - $left_col = $cellmap->get_column($j); - - if (in_array($num_cols - 1, $cells["columns"])) { - $draw_right = true; - $right_col = $cellmap->get_column($num_cols - 1); - } else - $draw_right = false; - - // Draw the vertical borders - foreach ( $cells["rows"] as $i ) { - $bp = $cellmap->get_border_properties($i, $j); - - $x = $left_col["x"] - $bp["left"]["width"] / 2; - - $row = $cellmap->get_row($i); - - $y = $row["y"] - $bp["top"]["width"] / 2; - $h = $row["height"] + ($bp["top"]["width"] + $bp["bottom"]["width"])/ 2; - - if ( $bp["left"]["style"] !== "none" && $bp["left"]["width"] > 0 ) { - - $widths = array($bp["top"]["width"], - $bp["right"]["width"], - $bp["bottom"]["width"], - $bp["left"]["width"]); - - $method = "_border_" . $bp["left"]["style"]; - $this->$method($x, $y, $h, $bp["left"]["color"], $widths, "left", "square"); - } - - if ( $draw_right ) { - $bp = $cellmap->get_border_properties($i, $num_cols - 1); - if ( $bp["right"]["style"] === "none" || $bp["right"]["width"] <= 0 ) - continue; - - $x = $right_col["x"] + $right_col["used-width"] + $bp["right"]["width"] / 2; - - $widths = array($bp["top"]["width"], - $bp["right"]["width"], - $bp["bottom"]["width"], - $bp["left"]["width"]); - - $method = "_border_" . $bp["right"]["style"]; - $this->$method($x, $y, $h, $bp["right"]["color"], $widths, "right", "square"); - - } - } - - } -} diff --git a/application/third_party/dompdf/include/table_frame_decorator.cls.php b/application/third_party/dompdf/include/table_frame_decorator.cls.php deleted file mode 100644 index 713cce4d..00000000 --- a/application/third_party/dompdf/include/table_frame_decorator.cls.php +++ /dev/null @@ -1,342 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: table_frame_decorator.cls.php,v $ - * Created on: 2004-06-04 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: table_frame_decorator.cls.php 317 2010-10-06 13:06:57Z fabien.menager $ */ - -/** - * Decorates Frames for table layout - * - * @access private - * @package dompdf - */ -class Table_Frame_Decorator extends Frame_Decorator { - static $VALID_CHILDREN = array("table-row-group", - "table-row", - "table-header-group", - "table-footer-group", - "table-column", - "table-column-group", - "table-caption", - "table-cell"); - - static $ROW_GROUPS = array('table-row-group', - 'table-header-group', - 'table-footer-group'); - - /** - * The Cellmap object for this table. The cellmap maps table cells - * to rows and columns, and aids in calculating column widths. - * - * @var Cellmap - */ - protected $_cellmap; - - /** - * The minimum width of the table, in pt - * - * @var float - */ - protected $_min_width; - - /** - * The maximum width of the table, in pt - * - * @var float - */ - protected $_max_width; - - /** - * Table header rows. Each table header is duplicated when a table - * spans pages. - * - * @var array - */ - protected $_headers; - - /** - * Table footer rows. Each table footer is duplicated when a table - * spans pages. - * - * @var array - */ - protected $_footers; - - /** - * Class constructor - * - * @param Frame $frame the frame to decorate - */ - function __construct(Frame $frame, DOMPDF $dompdf) { - parent::__construct($frame, $dompdf); - $this->_cellmap = new Cellmap($this); - $this->_min_width = null; - $this->_max_width = null; - $this->_headers = array(); - $this->_footers = array(); - } - - - function reset() { - parent::reset(); - $this->_cellmap->reset(); - $this->_min_width = null; - $this->_max_width = null; - $this->_headers = array(); - $this->_footers = array(); - $this->_reflower->reset(); - } - - //........................................................................ - - /** - * split the table at $row. $row and all subsequent rows will be - * added to the clone. This method is overidden in order to remove - * frames from the cellmap properly. - * - * @param Frame $row - */ - function split($child = null, $force_pagebreak = false) { - - if ( is_null($child) ) { - parent::split(); - return; - } - - // If $child is a header or if it is the first non-header row, do - // not duplicate headers, simply move the table to the next page. - if ( count($this->_headers) && !in_array($child, $this->_headers, true) && - !in_array($child->get_prev_sibling(), $this->_headers, true) ) { - - $first_header = null; - - // Insert copies of the table headers before $child - foreach ($this->_headers as $header) { - - $new_header = $header->deep_copy(); - - if ( is_null($first_header) ) - $first_header = $new_header; - - $this->insert_child_before($new_header, $child); - } - - parent::split($first_header); - - } else if ( in_array($child->get_style()->display, self::$ROW_GROUPS) ) { - - // Individual rows should have already been handled - parent::split($child); - - } else { - - $iter = $child; - - while ($iter) { - $this->_cellmap->remove_row($iter); - $iter = $iter->get_next_sibling(); - } - - parent::split($child); - } - } - - /** - * Static function to locate the parent table of a frame - * - * @param Frame $frame - * @return Table_Frame_Decorator the table that is an ancestor of $frame - */ - static function find_parent_table(Frame $frame) { - - while ( $frame = $frame->get_parent() ) - if ( in_array($frame->get_style()->display, Style::$TABLE_TYPES) ) - break; - - return $frame; - } - - /** - * Return this table's Cellmap - * - * @return Cellmap - */ - function get_cellmap() { return $this->_cellmap; } - - /** - * Return the minimum width of this table - * - * @return float - */ - function get_min_width() { return $this->_min_width; } - - /** - * Return the maximum width of this table - * - * @return float - */ - function get_max_width() { return $this->_max_width; } - - /** - * Set the minimum width of the table - * - * @param float $width the new minimum width - */ - function set_min_width($width) { $this->_min_width = $width; } - - /** - * Set the maximum width of the table - * - * @param float $width the new maximum width - */ - function set_max_width($width) { $this->_max_width = $width; } - - /** - * Restructure tree so that the table has the correct structure. - * Invalid children (i.e. all non-table-rows) are moved below the - * table. - */ - function normalise() { - - // Store frames generated by invalid tags and move them outside the table - $erroneous_frames = array(); - $anon_row = false; - $iter = $this->get_first_child(); - while ( $iter ) { - $child = $iter; - $iter = $iter->get_next_sibling(); - - $display = $child->get_style()->display; - - if ( $anon_row ) { - - if ( $display === "table-row" ) { - // Add the previous anonymous row - $this->insert_child_before($table_row, $child); - - $table_row->normalise(); - $child->normalise(); - $anon_row = false; - continue; - } - - // add the child to the anonymous row - $table_row->append_child($child); - continue; - - } else { - - if ( $display === "table-row" ) { - $child->normalise(); - continue; - } - - if ( $display === "table-cell") { - // Create an anonymous table row - $tr = $this->get_node()->ownerDocument->createElement("tr"); - - $frame = new Frame($tr); - - $css = $this->get_style()->get_stylesheet(); - $style = $css->create_style(); - $style->inherit($this->get_style()); - - // Lookup styles for tr tags. If the user wants styles to work - // better, they should make the tr explicit... I'm not going to - // try to guess what they intended. - if ( $tr_style = $css->lookup("tr") ) - $style->merge($tr_style); - - // Okay, I have absolutely no idea why I need this clone here, but - // if it's omitted, php (as of 2004-07-28) segfaults. - $frame->set_style(clone $style); - $table_row = Frame_Factory::decorate_frame($frame, $this->_dompdf); - $table_row->set_root($this->_root); - - // Add the cell to the row - $table_row->append_child($child); - - $anon_row = true; - continue; - } - - if ( !in_array($display, self::$VALID_CHILDREN) ) { - $erroneous_frames[] = $child; - continue; - } - - // Normalise other table parts (i.e. row groups) - foreach ($child->get_children() as $grandchild) { - if ( $grandchild->get_style()->display === "table-row" ) - $grandchild->normalise(); - } - - // Add headers and footers - if ( $display === "table-header-group" ) - $this->_headers[] = $child; - - else if ( $display === "table-footer-group" ) - $this->_footers[] = $child; - } - } - - if ( $anon_row ) { - // Add the row to the table - $this->_frame->append_child($table_row); - $table_row->normalise(); - $this->_cellmap->add_row(); - } - - foreach ($erroneous_frames as $frame) - $this->move_after($frame); - - } - - //........................................................................ - - /** - * Moves the specified frame and it's corresponding node outside of - * the table. - * - * @param Frame $frame the frame to move - */ - function move_after(Frame $frame) { - $this->get_parent()->insert_child_after($frame, $this); - } - -} diff --git a/application/third_party/dompdf/include/table_frame_reflower.cls.php b/application/third_party/dompdf/include/table_frame_reflower.cls.php deleted file mode 100644 index 5e4a9a1f..00000000 --- a/application/third_party/dompdf/include/table_frame_reflower.cls.php +++ /dev/null @@ -1,574 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: table_frame_reflower.cls.php,v $ - * Created on: 2004-06-17 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: table_frame_reflower.cls.php 359 2011-02-05 12:15:06Z fabien.menager $ */ - -/** - * Reflows tables - * - * @access private - * @package dompdf - */ -class Table_Frame_Reflower extends Frame_Reflower { - - /** - * Cache of results between call to get_min_max_width and assign_widths - * - * @var array - */ - protected $_state; - - function __construct(Table_Frame_Decorator $frame) { - $this->_state = null; - parent::__construct($frame); - } - - /** - * State is held here so it needs to be reset along with the decorator - */ - function reset() { - $this->_state = null; - $this->_min_max_cache = null; - } - - //........................................................................ - - protected function _assign_widths() { - $style = $this->_frame->get_style(); - - // Find the min/max width of the table and sort the columns into - // absolute/percent/auto arrays - $min_width = $this->_state["min_width"]; - $max_width = $this->_state["max_width"]; - $percent_used = $this->_state["percent_used"]; - $absolute_used = $this->_state["absolute_used"]; - $auto_min = $this->_state["auto_min"]; - - $absolute =& $this->_state["absolute"]; - $percent =& $this->_state["percent"]; - $auto =& $this->_state["auto"]; - - // Determine the actual width of the table - $cb = $this->_frame->get_containing_block(); - $columns =& $this->_frame->get_cellmap()->get_columns(); - - $width = $style->width; - - // Calculate padding & border fudge factor - $left = $style->margin_left; - $right = $style->margin_right; - - $left = $left === "auto" ? 0 : $style->length_in_pt($left, $cb["w"]); - $right = $right === "auto" ? 0 : $style->length_in_pt($right, $cb["w"]); - - $delta = $left + $right + $style->length_in_pt(array($style->padding_left, - $style->border_left_width, - $style->border_right_width, - $style->padding_right), $cb["w"]); - - $min_table_width = $style->length_in_pt( $style->min_width, $cb["w"] - $delta ); - - // min & max widths already include borders & padding - $min_width -= $delta; - $max_width -= $delta; - - if ( $width !== "auto" ) { - - $preferred_width = $style->length_in_pt($width, $cb["w"]) - $delta; - - if ( $preferred_width < $min_table_width ) - $preferred_width = $min_table_width; - - if ( $preferred_width > $min_width ) - $width = $preferred_width; - else - $width = $min_width; - - } else { - - if ( $max_width + $delta < $cb["w"] ) - $width = $max_width; - else if ( $cb["w"] - $delta > $min_width ) - $width = $cb["w"] - $delta; - else - $width = $min_width; - - if ( $width < $min_table_width ) - $width = $min_table_width; - - } - - // Store our resolved width - $style->width = $width; - - $cellmap = $this->_frame->get_cellmap(); - - // If the whole table fits on the page, then assign each column it's max width - if ( $width == $max_width ) { - - foreach (array_keys($columns) as $i) - $cellmap->set_column_width($i, $columns[$i]["max-width"]); - - return; - } - - // Determine leftover and assign it evenly to all columns - if ( $width > $min_width ) { - - // We have four cases to deal with: - // - // 1. All columns are auto--no widths have been specified. In this - // case we distribute extra space across all columns weighted by max-width. - // - // 2. Only absolute widths have been specified. In this case we - // distribute any extra space equally among 'width: auto' columns, or all - // columns if no auto columns have been specified. - // - // 3. Only percentage widths have been specified. In this case we - // normalize the percentage values and distribute any remaining % to - // width: auto columns. We then proceed to assign widths as fractions - // of the table width. - // - // 4. Both absolute and percentage widths have been specified. - - // Case 1: - if ( $absolute_used == 0 && $percent_used == 0 ) { - $increment = $width - $min_width; - - foreach (array_keys($columns) as $i) - $cellmap->set_column_width($i, $columns[$i]["min-width"] + $increment * ($columns[$i]["max-width"] / $max_width)); - return; - } - - - // Case 2 - if ( $absolute_used > 0 && $percent_used == 0 ) { - - if ( count($auto) > 0 ) - $increment = ($width - $auto_min - $absolute_used) / count($auto); - - // Use the absolutely specified width or the increment - foreach (array_keys($columns) as $i) { - - if ( $columns[$i]["absolute"] > 0 && count($auto) ) - $cellmap->set_column_width($i, $columns[$i]["min-width"]); - else if ( count($auto) ) - $cellmap->set_column_width($i, $columns[$i]["min-width"] + $increment); - else { - // All absolute columns - $increment = ($width - $absolute_used) * $columns[$i]["absolute"] / $absolute_used; - - $cellmap->set_column_width($i, $columns[$i]["min-width"] + $increment); - } - - } - return; - } - - - // Case 3: - if ( $absolute_used == 0 && $percent_used > 0 ) { - - $scale = null; - $remaining = null; - - // Scale percent values if the total percentage is > 100, or if all - // values are specified as percentages. - if ( $percent_used > 100 || count($auto) == 0) - $scale = 100 / $percent_used; - else - $scale = 1; - - // Account for the minimum space used by the unassigned auto columns - $used_width = $auto_min; - - foreach ($percent as $i) { - $columns[$i]["percent"] *= $scale; - - $slack = $width - $used_width; - - $w = min($columns[$i]["percent"] * $width/100, $slack); - - if ( $w < $columns[$i]["min-width"] ) - $w = $columns[$i]["min-width"]; - - $cellmap->set_column_width($i, $w); - $used_width += $w; - - } - - // This works because $used_width includes the min-width of each - // unassigned column - if ( count($auto) > 0 ) { - $increment = ($width - $used_width) / count($auto); - - foreach ($auto as $i) - $cellmap->set_column_width($i, $columns[$i]["min-width"] + $increment); - - } - return; - } - - // Case 4: - - // First-come, first served - if ( $absolute_used > 0 && $percent_used > 0 ) { - - $used_width = $auto_min; - - foreach ($absolute as $i) { - $cellmap->set_column_width($i, $columns[$i]["min-width"]); - $used_width += $columns[$i]["min-width"]; - } - - // Scale percent values if the total percentage is > 100 or there - // are no auto values to take up slack - if ( $percent_used > 100 || count($auto) == 0 ) - $scale = 100 / $percent_used; - else - $scale = 1; - - $remaining_width = $width - $used_width; - - foreach ($percent as $i) { - $slack = $remaining_width - $used_width; - - $columns[$i]["percent"] *= $scale; - $w = min($columns[$i]["percent"] * $remaining_width / 100, $slack); - - if ( $w < $columns[$i]["min-width"] ) - $w = $columns[$i]["min-width"]; - - $columns[$i]["used-width"] = $w; - $used_width += $w; - } - - if ( count($auto) > 0 ) { - $increment = ($width - $used_width) / count($auto); - - foreach ($auto as $i) - $cellmap->set_column_width($i, $columns[$i]["min-width"] + $increment); - - } - - return; - } - - - } else { // we are over constrained - - // Each column gets its minimum width - foreach (array_keys($columns) as $i) - $cellmap->set_column_width($i, $columns[$i]["min-width"]); - - } - } - - //........................................................................ - - // Determine the frame's height based on min/max height - protected function _calculate_height() { - - $style = $this->_frame->get_style(); - $height = $style->height; - - $cellmap = $this->_frame->get_cellmap(); - $cellmap->assign_frame_heights(); - $rows = $cellmap->get_rows(); - - // Determine our content height - $content_height = 0; - foreach ( $rows as $r ) - $content_height += $r["height"]; - - $cb = $this->_frame->get_containing_block(); - - if ( !($style->overflow === "visible" || - ($style->overflow === "hidden" && $height === "auto")) ) { - - // Only handle min/max height if the height is independent of the frame's content - - $min_height = $style->min_height; - $max_height = $style->max_height; - - if ( isset($cb["h"]) ) { - $min_height = $style->length_in_pt($min_height, $cb["h"]); - $max_height = $style->length_in_pt($max_height, $cb["h"]); - - } else if ( isset($cb["w"]) ) { - - if ( mb_strpos($min_height, "%") !== false ) - $min_height = 0; - else - $min_height = $style->length_in_pt($min_height, $cb["w"]); - - if ( mb_strpos($max_height, "%") !== false ) - $max_height = "none"; - else - $max_height = $style->length_in_pt($max_height, $cb["w"]); - } - - if ( $max_height !== "none" && $min_height > $max_height ) - // Swap 'em - list($max_height, $min_height) = array($min_height, $max_height); - - if ( $max_height !== "none" && $height > $max_height ) - $height = $max_height; - - if ( $height < $min_height ) - $height = $min_height; - - } else { - - // Use the content height or the height value, whichever is greater - if ( $height !== "auto" ) { - $height = $style->length_in_pt($height, $cb["h"]); - - if ( $height <= $content_height ) - $height = $content_height; - else - $cellmap->set_frame_heights($height,$content_height); - - } else - $height = $content_height; - - } - - return $height; - - } - //........................................................................ - - function reflow(Frame_Decorator $block = null) { - $frame = $this->_frame; - - // Check if a page break is forced - $page = $frame->get_root(); - $page->check_forced_page_break($frame); - - // Bail if the page is full - if ( $page->is_full() ) - return; - - // Let the page know that we're reflowing a table so that splits - // are suppressed (simply setting page-break-inside: avoid won't - // work because we may have an arbitrary number of block elements - // inside tds.) - $page->table_reflow_start(); - - // Collapse vertical margins, if required - $this->_collapse_margins(); - - $frame->position(); - - // Table layout algorithm: - // http://www.w3.org/TR/CSS21/tables.html#auto-table-layout - - if ( is_null($this->_state) ) - $this->get_min_max_width(); - - $cb = $frame->get_containing_block(); - $style = $frame->get_style(); - - // This is slightly inexact, but should be okay. Add half the - // border-spacing to the table as padding. The other half is added to - // the cells themselves. - if ( $style->border_collapse === "separate" ) { - list($h, $v) = $style->border_spacing; - - $v = $style->length_in_pt($v) / 2; - $h = $style->length_in_pt($h) / 2; - - $style->padding_left = $style->length_in_pt($style->padding_left, $cb["w"]) + $h; - $style->padding_right = $style->length_in_pt($style->padding_right, $cb["w"]) + $h; - $style->padding_top = $style->length_in_pt($style->padding_top, $cb["h"]) + $v; - $style->padding_bottom = $style->length_in_pt($style->padding_bottom, $cb["h"]) + $v; - - } - - $this->_assign_widths(); - - // Adjust left & right margins, if they are auto - $width = $style->width; - $left = $style->margin_left; - $right = $style->margin_right; - - $diff = $cb["w"] - $width; - - if ( $left === "auto" && $right === "auto" && $diff > 0 ) { - $left = $right = $diff / 2; - $style->margin_left = "$left pt"; - $style->margin_right = "$right pt"; - - } else { - if($left === "auto") { - $left = $style->length_in_pt($cb["w"] - $right - $width, $cb["w"]); - } - if($right === "auto") { - $left = $style->length_in_pt($left, $cb["w"]); - } - } - - - list($x, $y) = $frame->get_position(); - - // Determine the content edge - $content_x = $x + $left + $style->length_in_pt(array($style->padding_left, - $style->border_left_width), $cb["w"]); - $content_y = $y + $style->length_in_pt(array($style->margin_top, - $style->border_top_width, - $style->padding_top), $cb["h"]); - - if ( isset($cb["h"]) ) - $h = $cb["h"]; - else - $h = null; - - - $cellmap = $frame->get_cellmap(); - $col =& $cellmap->get_column(0); - $col["x"] = $content_x; - - $row =& $cellmap->get_row(0); - $row["y"] = $content_y; - - $cellmap->assign_x_positions(); - - // Set the containing block of each child & reflow - foreach ( $frame->get_children() as $child ) { - - // Bail if the page is full - if ( !$page->in_nested_table() && $page->is_full() ) - break; - - $child->set_containing_block($content_x, $content_y, $width, $h); - $child->reflow(); - - if ( !$page->in_nested_table() ) - // Check if a split has occured - $page->check_page_break($child); - - } - - // Assign heights to our cells: - $style->height = $this->_calculate_height(); - - if ( $style->border_collapse === "collapse" ) { - // Unset our borders because our cells are now using them - $style->border_style = "none"; - } - - $page->table_reflow_end(); - - // Debugging: - //echo ($this->_frame->get_cellmap()); - - if ( $block ) { - $block->add_frame_to_line($this->_frame); - } - } - - //........................................................................ - - function get_min_max_width() { - - if ( !is_null($this->_min_max_cache) ) - return $this->_min_max_cache; - - $style = $this->_frame->get_style(); - - $this->_frame->normalise(); - - // Add the cells to the cellmap (this will calcluate column widths as - // frames are added) - $this->_frame->get_cellmap()->add_frame($this->_frame); - - // Find the min/max width of the table and sort the columns into - // absolute/percent/auto arrays - $this->_state = array(); - $this->_state["min_width"] = 0; - $this->_state["max_width"] = 0; - - $this->_state["percent_used"] = 0; - $this->_state["absolute_used"] = 0; - $this->_state["auto_min"] = 0; - - $this->_state["absolute"] = array(); - $this->_state["percent"] = array(); - $this->_state["auto"] = array(); - - $columns =& $this->_frame->get_cellmap()->get_columns(); - foreach (array_keys($columns) as $i) { - $this->_state["min_width"] += $columns[$i]["min-width"]; - $this->_state["max_width"] += $columns[$i]["max-width"]; - - if ( $columns[$i]["absolute"] > 0 ) { - $this->_state["absolute"][] = $i; - $this->_state["absolute_used"] += $columns[$i]["absolute"]; - - } else if ( $columns[$i]["percent"] > 0 ) { - $this->_state["percent"][] = $i; - $this->_state["percent_used"] += $columns[$i]["percent"]; - - } else { - $this->_state["auto"][] = $i; - $this->_state["auto_min"] += $columns[$i]["min-width"]; - } - } - - // Account for margins & padding - $dims = array($style->border_left_width, - $style->border_right_width, - $style->padding_left, - $style->padding_right, - $style->margin_left, - $style->margin_right); - - if ( $style->border_collapse !== "collapse" ) - list($dims[]) = $style->border_spacing; - - $delta = $style->length_in_pt($dims, $this->_frame->get_containing_block("w")); - - $this->_state["min_width"] += $delta; - $this->_state["max_width"] += $delta; - - return $this->_min_max_cache = array($this->_state["min_width"], $this->_state["max_width"], - "min" => $this->_state["min_width"], "max" => $this->_state["max_width"]); - } -} diff --git a/application/third_party/dompdf/include/table_row_frame_decorator.cls.php b/application/third_party/dompdf/include/table_row_frame_decorator.cls.php deleted file mode 100644 index 1bf7911b..00000000 --- a/application/third_party/dompdf/include/table_row_frame_decorator.cls.php +++ /dev/null @@ -1,81 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: table_row_frame_decorator.cls.php,v $ - * Created on: 2004-06-07 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: table_row_frame_decorator.cls.php 216 2010-03-11 22:49:18Z ryan.masten $ */ - -/** - * Decorates Frames for table row layout - * - * @access private - * @package dompdf - */ -class Table_Row_Frame_Decorator extends Frame_Decorator { - - // protected members - - function __construct(Frame $frame, DOMPDF $dompdf) { - parent::__construct($frame, $dompdf); - } - - //........................................................................ - - /** - * Remove all non table-cell frames from this row and move them after - * the table. - */ - function normalise() { - - // Find our table parent - $p = Table_Frame_Decorator::find_parent_table($this); - - $erroneous_frames = array(); - foreach ($this->get_children() as $child) { - $display = $child->get_style()->display; - - if ( $display !== "table-cell" ) - $erroneous_frames[] = $child; - } - - // dump the extra nodes after the table. - foreach ($erroneous_frames as $frame) - $p->move_after($frame); - } - - -} diff --git a/application/third_party/dompdf/include/table_row_frame_reflower.cls.php b/application/third_party/dompdf/include/table_row_frame_reflower.cls.php deleted file mode 100644 index d44d3169..00000000 --- a/application/third_party/dompdf/include/table_row_frame_reflower.cls.php +++ /dev/null @@ -1,94 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: table_row_frame_reflower.cls.php,v $ - * Created on: 2004-06-17 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: table_row_frame_reflower.cls.php 357 2011-01-30 20:56:46Z fabien.menager $ */ - -/** - * Reflows table rows - * - * @access private - * @package dompdf - */ -class Table_Row_Frame_Reflower extends Frame_Reflower { - - - function __construct(Table_Row_Frame_Decorator $frame) { - parent::__construct($frame); - } - - //........................................................................ - - function reflow(Frame_Decorator $block = null) { - $page = $this->_frame->get_root(); - - if ( $page->is_full() ) - return; - - $this->_frame->position(); - $style = $this->_frame->get_style(); - $cb = $this->_frame->get_containing_block(); - - foreach ($this->_frame->get_children() as $child) { - - if ( $page->is_full() ) - return; - - $child->set_containing_block($cb); - $child->reflow(); - - } - - if ( $page->is_full() ) - return; - - $table = Table_Frame_Decorator::find_parent_table($this->_frame); - $cellmap = $table->get_cellmap(); - $style->width = $cellmap->get_frame_width($this->_frame); - $style->height = $cellmap->get_frame_height($this->_frame); - - $this->_frame->set_position($cellmap->get_frame_position($this->_frame)); - - } - - //........................................................................ - - function get_min_max_width() { - throw new DOMPDF_Exception("Min/max width is undefined for table rows"); - } -} diff --git a/application/third_party/dompdf/include/table_row_group_frame_decorator.cls.php b/application/third_party/dompdf/include/table_row_group_frame_decorator.cls.php deleted file mode 100644 index 10c64baa..00000000 --- a/application/third_party/dompdf/include/table_row_group_frame_decorator.cls.php +++ /dev/null @@ -1,96 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: table_row_group_frame_decorator.cls.php,v $ - * Created on: 2004-06-02 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004-6 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - */ - -/* $Id: table_row_group_frame_decorator.cls.php 317 2010-10-06 13:06:57Z fabien.menager $ */ - -/** - * Table row group decorator - * - * Overrides split() method for tbody, thead & tfoot elements - * - * @access private - * @package dompdf - */ -class Table_Row_Group_Frame_Decorator extends Frame_Decorator { - - /** - * Class constructor - * - * @param Frame $frame Frame to decorate - * @param DOMPDF $dompdf Current dompdf instance - */ - function __construct(Frame $frame, DOMPDF $dompdf) { - parent::__construct($frame, $dompdf); - } - - /** - * Override split() to remove all child rows and this element from the cellmap - * - * @param Frame $child - */ - function split($child = null, $force_pagebreak = false) { - - if ( is_null($child) ) { - parent::split(); - return; - } - - - // Remove child & all subsequent rows from the cellmap - $cellmap = $this->get_parent()->get_cellmap(); - $iter = $child; - - while ( $iter ) { - $cellmap->remove_row($iter); - $iter = $iter->get_next_sibling(); - } - - // If we are splitting at the first child remove the - // table-row-group from the cellmap as well - if ( $child === $this->get_first_child() ) { - $cellmap->remove_row_group($this); - parent::split(); - return; - } - - $cellmap->update_row_group($this, $child->get_prev_sibling()); - parent::split($child); - - } -} - diff --git a/application/third_party/dompdf/include/table_row_group_frame_reflower.cls.php b/application/third_party/dompdf/include/table_row_group_frame_reflower.cls.php deleted file mode 100644 index 5298876d..00000000 --- a/application/third_party/dompdf/include/table_row_group_frame_reflower.cls.php +++ /dev/null @@ -1,92 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: table_row_group_frame_reflower.cls.php,v $ - * Created on: 2004-07-26 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: table_row_group_frame_reflower.cls.php 357 2011-01-30 20:56:46Z fabien.menager $ */ - -/** - * Reflows table row groups (e.g. tbody tags) - * - * @access private - * @package dompdf - */ -class Table_Row_Group_Frame_Reflower extends Frame_Reflower { - - function __construct($frame) { - parent::__construct($frame); - } - - function reflow(Frame_Decorator $block = null) { - $page = $this->_frame->get_root(); - - $style = $this->_frame->get_style(); - - // Our width is equal to the width of our parent table - $table = Table_Frame_Decorator::find_parent_table($this->_frame); - - $cb = $this->_frame->get_containing_block(); - - foreach ( $this->_frame->get_children() as $child) { - // Bail if the page is full - if ( $page->is_full() ) - return; - - $child->set_containing_block($cb["x"], $cb["y"], $cb["w"], $cb["h"]); - $child->reflow(); - - // Check if a split has occured - $page->check_page_break($child); - - } - - if ( $page->is_full() ) - return; - - $cellmap = $table->get_cellmap(); - $style->width = $cellmap->get_frame_width($this->_frame); - $style->height = $cellmap->get_frame_height($this->_frame); - - $this->_frame->set_position($cellmap->get_frame_position($this->_frame)); - - if ( $table->get_style()->border_collapse === "collapse" ) - // Unset our borders because our cells are now using them - $style->border_style = "none"; - - } - -} diff --git a/application/third_party/dompdf/include/table_row_positioner.cls.php b/application/third_party/dompdf/include/table_row_positioner.cls.php deleted file mode 100644 index 7a15929f..00000000 --- a/application/third_party/dompdf/include/table_row_positioner.cls.php +++ /dev/null @@ -1,68 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: table_row_positioner.cls.php,v $ - * Created on: 2004-06-08 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: table_row_positioner.cls.php 216 2010-03-11 22:49:18Z ryan.masten $ */ - -/** - * Positions table rows - * - * @access private - * @package dompdf - */ -class Table_Row_Positioner extends Positioner { - - function __construct(Frame_Decorator $frame) { parent::__construct($frame); } - - //........................................................................ - - function position() { - - $cb = $this->_frame->get_containing_block(); - $p = $this->_frame->get_prev_sibling(); - - if ( $p ) - $y = $p->get_position("y") + $p->get_margin_height(); - - else - $y = $cb["y"]; - - $this->_frame->set_position($cb["x"], $y); - - } -} diff --git a/application/third_party/dompdf/include/tcpdf_adapter.cls.php b/application/third_party/dompdf/include/tcpdf_adapter.cls.php deleted file mode 100644 index 47ed71ae..00000000 --- a/application/third_party/dompdf/include/tcpdf_adapter.cls.php +++ /dev/null @@ -1,498 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile$ - * Created on: 2004-08-04 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: tcpdf_adapter.cls.php 311 2010-09-05 20:02:01Z fabien.menager $ */ - -require_once(DOMPDF_LIB_DIR . '/tcpdf/tcpdf.php'); - -/** - * TCPDF PDF Rendering interface - * - * TCPDF_Adapter provides a simple, stateless interface to TCPDF. - * - * Unless otherwise mentioned, all dimensions are in points (1/72 in). - * The coordinate origin is in the top left corner and y values - * increase downwards. - * - * See {@link http://tcpdf.sourceforge.net} for more information on - * the underlying TCPDF class. - * - * @package dompdf - */ -class TCPDF_Adapter implements Canvas { - - /** - * Dimensions of paper sizes in points - * - * @var array; - */ - static public $PAPER_SIZES = array(); // Set to - // CPDF_Adapter::$PAPER_SIZES below. - - - /** - * Instance of the TCPDF class - * - * @var TCPDF - */ - private $_pdf; - - /** - * PDF width in points - * - * @var float - */ - private $_width; - - /** - * PDF height in points - * - * @var float - */ - private $_height; - - /** - * Last fill colour used - * - * @var array - */ - private $_last_fill_color; - - /** - * Last stroke colour used - * - * @var array - */ - private $_last_stroke_color; - - /** - * Last line width used - * - * @var float - */ - private $_last_line_width; - - /** - * Total number of pages - * - * @var int - */ - private $_page_count; - - /** - * Text to display on every page - * - * @var array - */ - private $_page_text; - - /** - * Array of pages for accessing after initial rendering is complete - * - * @var array - */ - private $_pages; - - /** - * Class constructor - * - * @param mixed $paper The size of paper to use either a string (see {@link CPDF_Adapter::$PAPER_SIZES}) or - * an array(xmin,ymin,xmax,ymax) - * @param string $orientation The orientation of the document (either 'landscape' or 'portrait') - */ - function __construct($paper = "letter", $orientation = "portrait") { - - if ( is_array($paper) ) - $size = $paper; - else if ( isset(self::$PAPER_SIZES[mb_strtolower($paper)]) ) - $size = self::$PAPER_SIZE[$paper]; - else - $size = self::$PAPER_SIZE["letter"]; - - if ( mb_strtolower($orientation) === "landscape" ) { - list($size[2], $size[3]) = array($size[3], $size[2]); - } - - $this->_width = $size[2] - $size[0]; - $this->_height = $size[3] - $size[1]; - - $this->_pdf = new TCPDF("P", "pt", array($this->_width, $this->_height)); - $this->_pdf->Setcreator("DOMPDF Converter"); - - $this->_pdf->AddPage(); - - $this->_page_number = $this->_page_count = 1; - $this->_page_text = array(); - - $this->_last_fill_color = - $this->_last_stroke_color = - $this->_last_line_width = null; - - } - - /** - * Remaps y coords from 4th to 1st quadrant - * - * @param float $y - * @return float - */ - protected function y($y) { return $this->_height - $y; } - - /** - * Sets the stroke colour - * - * @param array $color - */ - protected function _set_stroke_colour($colour) { - $colour[0] = round(255 * $colour[0]); - $colour[1] = round(255 * $colour[1]); - $colour[2] = round(255 * $colour[2]); - - if ( is_null($this->_last_stroke_color) || $color != $this->_last_stroke_color ) { - $this->_pdf->SetDrawColor($color[0],$color[1],$color[2]); - $this->_last_stroke_color = $color; - } - - } - - /** - * Sets the fill colour - * - * @param array $color - */ - protected function _set_fill_colour($colour) { - $colour[0] = round(255 * $colour[0]); - $colour[1] = round(255 * $colour[1]); - $colour[2] = round(255 * $colour[2]); - - if ( is_null($this->_last_fill_color) || $color != $this->_last_fill_color ) { - $this->_pdf->SetDrawColor($color[0],$color[1],$color[2]); - $this->_last_fill_color = $color; - } - - } - - /** - * Return the TCPDF instance - * - * @return TCPDF - */ - function get_tcpdf() { return $this->_pdf; } - - /** - * Returns the current page number - * - * @return int - */ - function get_page_number() { - return $this->_page_number; - } - - /** - * Returns the total number of pages - * - * @return int - */ - function get_page_count() { - return $this->_page_count; - } - - /** - * Sets the total number of pages - * - * @param int $count - */ - function set_page_count($count) { - $this->_page_count = (int)$count; - } - - /** - * Draws a line from x1,y1 to x2,y2 - * - * See {@link Style::munge_colour()} for the format of the colour array. - * See {@link Cpdf::setLineStyle()} for a description of the format of the - * $style parameter (aka dash). - * - * @param float $x1 - * @param float $y1 - * @param float $x2 - * @param float $y2 - * @param array $color - * @param float $width - * @param array $style - */ - function line($x1, $y1, $x2, $y2, $color, $width, $style = null) { - - if ( is_null($this->_last_line_width) || $width != $this->_last_line_width ) { - $this->_pdf->SetLineWidth($width); - $this->_last_line_width = $width; - } - - $this->_set_stroke_colour($color); - - // FIXME: ugh, need to handle different styles here - $this->_pdf->line($x1, $y1, $x2, $y2); - } - - /** - * Draws a rectangle at x1,y1 with width w and height h - * - * See {@link Style::munge_colour()} for the format of the colour array. - * See {@link Cpdf::setLineStyle()} for a description of the $style - * parameter (aka dash) - * - * @param float $x1 - * @param float $y1 - * @param float $w - * @param float $h - * @param array $color - * @param float $width - * @param array $style - */ - function rectangle($x1, $y1, $w, $h, $color, $width, $style = null) { - - if ( is_null($this->_last_line_width) || $width != $this->_last_line_width ) { - $this->_pdf->SetLineWidth($width); - $this->_last_line_width = $width; - } - - $this->_set_stroke_colour($color); - - // FIXME: ugh, need to handle styles here - $this->_pdf->rect($x1, $y1, $w, $h); - - } - - /** - * Draws a filled rectangle at x1,y1 with width w and height h - * - * See {@link Style::munge_colour()} for the format of the colour array. - * - * @param float $x1 - * @param float $y1 - * @param float $w - * @param float $h - * @param array $color - */ - function filled_rectangle($x1, $y1, $w, $h, $color) { - - $this->_set_fill_colour($color); - - // FIXME: ugh, need to handle styles here - $this->_pdf->rect($x1, $y1, $w, $h, "F"); - } - - /** - * Draws a polygon - * - * The polygon is formed by joining all the points stored in the $points - * array. $points has the following structure: - * <code> - * array(0 => x1, - * 1 => y1, - * 2 => x2, - * 3 => y2, - * ... - * ); - * </code> - * - * See {@link Style::munge_colour()} for the format of the colour array. - * See {@link Cpdf::setLineStyle()} for a description of the $style - * parameter (aka dash) - * - * @param array $points - * @param array $color - * @param float $width - * @param array $style - * @param bool $fill Fills the polygon if true - */ - function polygon($points, $color, $width = null, $style = null, $fill = false) { - // FIXME - } - - /** - * Draws a circle at $x,$y with radius $r - * - * See {@link Style::munge_colour()} for the format of the colour array. - * See {@link Cpdf::setLineStyle()} for a description of the $style - * parameter (aka dash) - * - * @param float $x - * @param float $y - * @param float $r - * @param array $color - * @param float $width - * @param array $style - * @param bool $fill Fills the circle if true - */ - function circle($x, $y, $r, $color, $width = null, $style = null, $fill = false) { - // FIXME - } - - /** - * Add an image to the pdf. - * - * The image is placed at the specified x and y coordinates with the - * given width and height. - * - * @param string $img_url the path to the image - * @param string $img_type the type (e.g. extension) of the image - * @param float $x x position - * @param float $y y position - * @param int $w width (in pixels) - * @param int $h height (in pixels) - */ - function image($img_url, $img_type, $x, $y, $w, $h) { - // FIXME - } - - /** - * Writes text at the specified x and y coordinates - * - * See {@link Style::munge_colour()} for the format of the colour array. - * - * @param float $x - * @param float $y - * @param string $text the text to write - * @param string $font the font file to use - * @param float $size the font size, in points - * @param array $color - * @param float $adjust word spacing adjustment - */ - function text($x, $y, $text, $font, $size, $color = array(0,0,0), $adjust = 0) { - // FIXME - } - - function javascript($code) { - // FIXME - } - - /** - * Add a named destination (similar to <a name="foo">...</a> in html) - * - * @param string $anchorname The name of the named destination - */ - function add_named_dest($anchorname) { - // FIXME - } - - /** - * Add a link to the pdf - * - * @param string $url The url to link to - * @param float $x The x position of the link - * @param float $y The y position of the link - * @param float $width The width of the link - * @param float $height The height of the link - */ - function add_link($url, $x, $y, $width, $height) { - // FIXME - } - - /** - * Add meta information to the PDF - * - * @param string $label label of the value (Creator, Producer, etc.) - * @param string $value the text to set - */ - function add_info($label, $value) { - $method = "Set$label"; - if ( in_array("Title", "Author", "Keywords", "Subject") && method_exists($this->_pdf, $method) ) { - $this->_pdf->$method($value); - } - } - - /** - * Calculates text size, in points - * - * @param string $text the text to be sized - * @param string $font the desired font - * @param float $size the desired font size - * @param float $spacing word spacing, if any - * @return float - */ - function get_text_width($text, $font, $size, $spacing = 0) { - // FIXME - } - - /** - * Calculates font height, in points - * - * @param string $font - * @param float $size - * @return float - */ - function get_font_height($font, $size) { - // FIXME - } - - - /** - * Starts a new page - * - * Subsequent drawing operations will appear on the new page. - */ - function new_page() { - // FIXME - } - - /** - * Streams the PDF directly to the browser - * - * @param string $filename the name of the PDF file - * @param array $options associative array, 'Attachment' => 0 or 1, 'compress' => 1 or 0 - */ - function stream($filename, $options = null) { - // FIXME - } - - /** - * Returns the PDF as a string - * - * @param array $options associative array: 'compress' => 1 or 0 - * @return string - */ - function output($options = null) { - // FIXME - } - -} - -// Workaround for idiotic limitation on statics... -PDFLib_Adapter::$PAPER_SIZES = CPDF_Adapter::$PAPER_SIZES; diff --git a/application/third_party/dompdf/include/text_frame_decorator.cls.php b/application/third_party/dompdf/include/text_frame_decorator.cls.php deleted file mode 100644 index 0bcb77f2..00000000 --- a/application/third_party/dompdf/include/text_frame_decorator.cls.php +++ /dev/null @@ -1,204 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: text_frame_decorator.cls.php,v $ - * Created on: 2004-06-04 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: text_frame_decorator.cls.php 356 2011-01-28 08:56:10Z fabien.menager $ */ - -/** - * Decorates Frame objects for text layout - * - * @access private - * @package dompdf - */ -class Text_Frame_Decorator extends Frame_Decorator { - - // protected members - protected $_text_spacing; - - // buggy DOMText::splitText (PHP < 5.2.7) - public static $_buggy_splittext; - - function __construct(Frame $frame, DOMPDF $dompdf) { - if ( $frame->get_node()->nodeName !== "#text" ) - throw new DOMPDF_Exception("Text_Decorator can only be applied to #text nodes."); - - parent::__construct($frame, $dompdf); - $this->_text_spacing = null; - } - - //........................................................................ - - function reset() { - parent::reset(); - $this->_text_spacing = null; - } - - //........................................................................ - - // Accessor methods - function get_text_spacing() { return $this->_text_spacing; } - - function get_text() { - // FIXME: this should be in a child class (and is incorrect) -// if ( $this->_frame->get_style()->content !== "normal" ) { -// $this->_frame->get_node()->data = $this->_frame->get_style()->content; -// $this->_frame->get_style()->content = "normal"; -// } - -// pre_r("---"); -// $style = $this->_frame->get_style(); -// var_dump($text = $this->_frame->get_node()->data); -// var_dump($asc = utf8_decode($text)); -// for ($i = 0; $i < strlen($asc); $i++) -// pre_r("$i: " . $asc[$i] . " - " . ord($asc[$i])); -// pre_r("width: " . Font_Metrics::get_text_width($text, $style->font_family, $style->font_size)); - - return $this->_frame->get_node()->data; - } - - //........................................................................ - - // Vertical margins & padding do not apply to text frames - - // http://www.w3.org/TR/CSS21/visudet.html#inline-non-replaced: - // - // The vertical padding, border and margin of an inline, non-replaced box - // start at the top and bottom of the content area, not the - // 'line-height'. But only the 'line-height' is used to calculate the - // height of the line box. - function get_margin_height() { - // This function is called in add_frame_to_line() and is used to - // determine the line height, so we actually want to return the - // 'line-height' property, not the actual margin box - $style = $this->get_style(); - $font = $style->font_family; - $size = $style->font_size; - - /* - pre_r('-----'); - pre_r($style->line_height); - pre_r($style->font_size); - pre_r(Font_Metrics::get_font_height($font, $size)); - pre_r(($style->line_height / $size) * Font_Metrics::get_font_height($font, $size)); - */ - - return ($style->line_height / $size) * Font_Metrics::get_font_height($font, $size); - - } - - function get_padding_box() { - $pb = $this->_frame->get_padding_box(); - $pb[3] = $pb["h"] = $this->_frame->get_style()->height; - return $pb; - } - //........................................................................ - - // Set method - function set_text_spacing($spacing) { - $style = $this->_frame->get_style(); - - $this->_text_spacing = $spacing; - $char_spacing = $style->length_in_pt($style->letter_spacing); - - // Re-adjust our width to account for the change in spacing - $style->width = Font_Metrics::get_text_width($this->get_text(), $style->font_family, $style->font_size, $spacing, $char_spacing); - } - - //........................................................................ - - // Recalculate the text width - function recalculate_width() { - $style = $this->get_style(); - $text = $this->get_text(); - $size = $style->font_size; - $font = $style->font_family; - $word_spacing = $style->length_in_pt($style->word_spacing); - $char_spacing = $style->length_in_pt($style->letter_spacing); - - return $style->width = Font_Metrics::get_text_width($text, $font, $size, $word_spacing, $char_spacing); - } - - //........................................................................ - - // Text manipulation methods - - // split the text in this frame at the offset specified. The remaining - // text is added a sibling frame following this one and is returned. - function split_text($offset) { - if ( $offset == 0 ) - return; - - if ( self::$_buggy_splittext ) { - // workaround to solve DOMText::spliText() bug parsing multibyte strings - $node = $this->_frame->get_node(); - $txt0 = $node->substringData(0, $offset); - $txt1 = $node->substringData($offset, mb_strlen($node->textContent)-1); - - $node->replaceData(0, mb_strlen($node->textContent), $txt0); - $split = $node->parentNode->appendChild(new DOMText($txt1)); - } - else { - $split = $this->_frame->get_node()->splitText($offset); - } - - $deco = $this->copy($split); - - $p = $this->get_parent(); - $p->insert_child_after($deco, $this, false); - - if ( $p instanceof Inline_Frame_Decorator ) - $p->split($deco); - - return $deco; - } - - //........................................................................ - - function delete_text($offset, $count) { - $this->_frame->get_node()->deleteData($offset, $count); - } - - //........................................................................ - - function set_text($text) { - $this->_frame->get_node()->data = $text; - } - -} - -Text_Frame_Decorator::$_buggy_splittext = version_compare(PHP_VERSION, '5.2.6', '<='); diff --git a/application/third_party/dompdf/include/text_frame_reflower.cls.php b/application/third_party/dompdf/include/text_frame_reflower.cls.php deleted file mode 100644 index 622fb86b..00000000 --- a/application/third_party/dompdf/include/text_frame_reflower.cls.php +++ /dev/null @@ -1,440 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: text_frame_reflower.cls.php,v $ - * Created on: 2004-06-17 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -/* $Id: text_frame_reflower.cls.php 360 2011-02-15 19:33:52Z fabien.menager $ */ - -/** - * Reflows text frames. - * - * @access private - * @package dompdf - */ -class Text_Frame_Reflower extends Frame_Reflower { - - /** - * @var Block_Frame_Decorator - */ - protected $_block_parent; // Nearest block-level ancestor - - /** - * @var Text_Frame_Decorator - */ - protected $_frame; - - public static $_whitespace_pattern = "/[ \t\r\n\f]+/u"; - - function __construct(Text_Frame_Decorator $frame) { parent::__construct($frame); } - - //........................................................................ - - protected function _collapse_white_space($text) { - //$text = $this->_frame->get_text(); -// if ( $this->_block_parent->get_current_line("w") == 0 ) -// $text = ltrim($text, " \n\r\t"); - return preg_replace(self::$_whitespace_pattern, " ", $text); - } - - //........................................................................ - - protected function _line_break($text) { - $style = $this->_frame->get_style(); - $size = $style->font_size; - $font = $style->font_family; - $current_line = $this->_block_parent->get_current_line(); - - // Determine the available width - $line_width = $this->_frame->get_containing_block("w"); - $current_line_width = $current_line["left"] + $current_line["w"] + $current_line["right"]; - - $available_width = $line_width - $current_line_width; - - // split the text into words - $words = preg_split('/([\s-]+)/u', $text, -1, PREG_SPLIT_DELIM_CAPTURE); - $wc = count($words); - - // Account for word-spacing - $word_spacing = $style->length_in_pt($style->word_spacing); - $char_spacing = $style->length_in_pt($style->letter_spacing); - - // Determine the frame width including margin, padding & border - $text_width = Font_Metrics::get_text_width($text, $font, $size, $word_spacing, $char_spacing); - $mbp_width = - $style->length_in_pt( array( $style->margin_left, - $style->border_left_width, - $style->padding_left, - $style->padding_right, - $style->border_right_width, - $style->margin_right), $line_width ); - - $frame_width = $text_width + $mbp_width; - -// Debugging: -// pre_r("Text: '" . htmlspecialchars($text). "'"); -// pre_r("width: " .$frame_width); -// pre_r("textwidth + delta: $text_width + $mbp_width"); -// pre_r("font-size: $size"); -// pre_r("cb[w]: " .$line_width); -// pre_r("available width: " . $available_width); -// pre_r("current line width: " . $current_line_width); - -// pre_r($words); - - if ( $frame_width <= $available_width ) - return false; - - // Determine the split point - $width = 0; - $str = ""; - reset($words); - - // @todo support <shy>, <wbr> - for ($i = 0; $i < $wc; $i += 2) { - $word = $words[$i] . (isset($words[$i+1]) ? $words[$i+1] : ""); - $word_width = Font_Metrics::get_text_width($word, $font, $size, $word_spacing, $char_spacing); - if ( $width + $word_width + $mbp_width > $available_width ) - break; - - $width += $word_width; - $str .= $word; - - } - - // The first word has overflowed. Force it onto the line - if ( $current_line_width == 0 && $width == 0 ) { - $width += $word_width; - $str .= $word; - } - - $offset = mb_strlen($str); - -// More debugging: -// pre_var_dump($str); -// pre_r("Width: ". $width); -// pre_r("Offset: " . $offset); - - return $offset; - - } - - //........................................................................ - - protected function _newline_break($text) { - - if ( ($i = mb_strpos($text, "\n")) === false) - return false; - - return $i+1; - - } - - //........................................................................ - - protected function _layout_line() { - $style = $this->_frame->get_style(); - $text = $this->_frame->get_text(); - $size = $style->font_size; - $font = $style->font_family; - $word_spacing = $style->length_in_pt($style->word_spacing); - $char_spacing = $style->length_in_pt($style->letter_spacing); - - // Determine the text height - $style->height = Font_Metrics::get_font_height( $font, $size ); - - $split = false; - $add_line = false; - - // Handle text transform: - // http://www.w3.org/TR/CSS21/text.html#propdef-text-transform - switch (strtolower($style->text_transform)) { - default: break; - case "capitalize": $text = mb_convert_case($text, MB_CASE_TITLE); break; - case "uppercase": $text = mb_convert_case($text, MB_CASE_UPPER); break; - case "lowercase": $text = mb_convert_case($text, MB_CASE_LOWER); break; - } - - // Handle white-space property: - // http://www.w3.org/TR/CSS21/text.html#propdef-white-space - switch ($style->white_space) { - - default: - case "normal": - $this->_frame->set_text( $text = $this->_collapse_white_space($text) ); - if ( $text == "" ) - break; - - $split = $this->_line_break($text); - break; - - case "pre": - $split = $this->_newline_break($text); - $add_line = $split !== false; - break; - - case "nowrap": - $this->_frame->set_text( $text = $this->_collapse_white_space($text) ); - break; - - case "pre-wrap": - $split = $this->_newline_break($text); - - if ( ($tmp = $this->_line_break($text)) !== false ) { - $add_line = $split < $tmp; - $split = min($tmp, $split); - } else - $add_line = true; - - break; - - case "pre-line": - // Collapse white-space except for \n - $this->_frame->set_text( $text = preg_replace( "/[ \t]+/u", " ", $text ) ); - - if ( $text == "" ) - break; - - $split = $this->_newline_break($text); - - if ( ($tmp = $this->_line_break($text)) !== false ) { - $add_line = $split < $tmp; - $split = min($tmp, $split); - } else - $add_line = true; - - break; - - } - - // Handle degenerate case - if ( $text === "" ) - return; - - if ( $split !== false) { - - // Handle edge cases - if ( $split == 0 && $text === " " ) { - $this->_frame->set_text(""); - return; - } - - if ( $split == 0 ) { - - // Trim newlines from the beginning of the line - //$this->_frame->set_text(ltrim($text, "\n\r")); - - $this->_block_parent->add_line(); - $this->_frame->position(); - - // Layout the new line - $this->_layout_line(); - - } - - else if ( $split < mb_strlen($this->_frame->get_text()) ) { - // split the line if required - $this->_frame->split_text($split); - - $t = $this->_frame->get_text(); - - // Remove any trailing newlines - if ( $split > 1 && $t[$split-1] === "\n" ) - $this->_frame->set_text( mb_substr($t, 0, -1) ); - - // Do we need to trim spaces on wrapped lines? This might be desired, however, we - // can't trim the lines here or the layout will be affected if trimming the line - // leaves enough space to fit the next word in the text stream (because pdf layout - // is performed elsewhere). - /*if (!$this->_frame->get_prev_sibling() && !$this->_frame->get_next_sibling()) { - $t = $this->_frame->get_text(); - $this->_frame->set_text( trim($t) ); - }*/ - } - - if ( $add_line ) { - $this->_block_parent->add_line(); - $this->_frame->position(); - } - - } else { - - // Remove empty space from start and end of line, but only where there isn't an inline sibling - // and the parent node isn't an inline element with siblings - // FIXME: Include non-breaking spaces? - $t = $this->_frame->get_text(); - $parent = $this->_frame->get_parent(); - $is_inline_frame = get_class($parent) === 'Inline_Frame_Decorator'; - - if ((!$is_inline_frame && !$this->_frame->get_next_sibling()) || - ( $is_inline_frame && !$parent->get_next_sibling())) { - $t = rtrim($t); - } - - if ((!$is_inline_frame && !$this->_frame->get_prev_sibling()) || - ( $is_inline_frame && !$parent->get_prev_sibling())) { - $t = ltrim($t); - } - - $this->_frame->set_text( $t ); - - } - - // Set our new width - $width = $this->_frame->recalculate_width(); - } - - //........................................................................ - - function reflow(Frame_Decorator $block = null) { - - $page = $this->_frame->get_root(); - $page->check_forced_page_break($this->_frame); - - if ( $page->is_full() ) - return; - - $this->_block_parent = $this->_frame->find_block_parent(); - - // Left trim the text if this is the first text on the line and we're - // collapsing white space -// if ( $this->_block_parent->get_current_line("w") == 0 && -// ($this->_frame->get_style()->white_space !== "pre" || -// $this->_frame->get_style()->white_space !== "pre-wrap") ) { -// $this->_frame->set_text( ltrim( $this->_frame->get_text() ) ); -// } - - $this->_frame->position(); - - $this->_layout_line(); - - if ( $block ) { - $block->add_frame_to_line($this->_frame); - } - } - - //........................................................................ - - // Returns an array(0 => min, 1 => max, "min" => min, "max" => max) of the - // minimum and maximum widths of this frame - function get_min_max_width() { - - $style = $this->_frame->get_style(); - $this->_block_parent = $this->_frame->find_block_parent(); - $line_width = $this->_frame->get_containing_block("w"); - - $str = $text = $this->_frame->get_text(); - $size = $style->font_size; - $font = $style->font_family; - - $word_spacing = $style->length_in_pt($style->word_spacing); - $char_spacing = $style->length_in_pt($style->letter_spacing); - - switch($style->white_space) { - - default: - case "normal": - $str = preg_replace(self::$_whitespace_pattern," ", $str); - case "pre-wrap": - case "pre-line": - - // Find the longest word (i.e. minimum length) - - // This technique (using arrays & an anonymous function) is actually - // faster than doing a single-pass character by character scan. Heh, - // yes I took the time to bench it ;) - $words = array_flip(preg_split("/[\s-]+/u",$str, -1, PREG_SPLIT_DELIM_CAPTURE)); - array_walk($words, create_function('&$val,$str', - '$val = Font_Metrics::get_text_width($str, "'.addslashes($font).'", '.$size.', '.$word_spacing.', '.$char_spacing.');')); - arsort($words); - $min = reset($words); - break; - - case "pre": - $lines = array_flip(preg_split("/\n/u", $str)); - array_walk($lines, create_function('&$val,$str', - '$val = Font_Metrics::get_text_width($str, "'.addslashes($font).'", '.$size.', '.$word_spacing.', '.$char_spacing.');')); - - arsort($lines); - $min = reset($lines); - break; - - case "nowrap": - $min = Font_Metrics::get_text_width($this->_collapse_white_space($str), $font, $size, $word_spacing, $char_spacing); - break; - - } - - switch ($style->white_space) { - - default: - case "normal": - case "nowrap": - $str = preg_replace(self::$_whitespace_pattern," ", $text); - break; - - case "pre-line": - //XXX: Is this correct? - $str = preg_replace( "/[ \t]+/u", " ", $text); - - case "pre-wrap": - // Find the longest word (i.e. minimum length) - $lines = array_flip(preg_split("/\n/", $text)); - array_walk($lines, create_function('&$val,$str', - '$val = Font_Metrics::get_text_width($str, "'.$font.'", '.$size.', '.$word_spacing.', '.$char_spacing.');')); - arsort($lines); - reset($lines); - $str = key($lines); - break; - - } - - $max = Font_Metrics::get_text_width($str, $font, $size, $word_spacing, $char_spacing); - - $delta = $style->length_in_pt(array($style->margin_left, - $style->border_left_width, - $style->padding_left, - $style->padding_right, - $style->border_right_width, - $style->margin_right), $line_width); - $min += $delta; - $max += $delta; - - return array($min, $max, "min" => $min, "max" => $max); - - } - -} diff --git a/application/third_party/dompdf/include/text_renderer.cls.php b/application/third_party/dompdf/include/text_renderer.cls.php deleted file mode 100644 index 56ba38f1..00000000 --- a/application/third_party/dompdf/include/text_renderer.cls.php +++ /dev/null @@ -1,182 +0,0 @@ -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: text_renderer.cls.php,v $ - * Created on: 2004-06-01 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @package dompdf - - * - * Changes - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @version dompdf_trunk_with_helmut_mods.20090528 - * - fix text decoration positions according to font metrics - * @version 20090610 - * - better accuracy on using different renderer as cpdf, added comments - */ - -/* $Id: text_renderer.cls.php 357 2011-01-30 20:56:46Z fabien.menager $ */ -/** - * Renders text frames - * - * @access private - * @package dompdf - */ -class Text_Renderer extends Abstract_Renderer { - - const DECO_THICKNESS = 0.02; // Thickness of underline. Screen: 0.08, print: better less, e.g. 0.04 - - //Tweaking if $base and $descent are not accurate. - //Check method_exists( $this->_canvas, "get_cpdf" ) - //- For cpdf these can and must stay 0, because font metrics are used directly. - //- For other renderers, if different values are wanted, separate the parameter sets. - // But $size and $size-$height seem to be accurate enough - const UNDERLINE_OFFSET = 0.0; // Relative to bottom of text, as fraction of height. - const OVERLINE_OFFSET = 0.0; // Relative to top of text - const LINETHROUGH_OFFSET = 0.0; // Relative to centre of text. - const DECO_EXTENSION = 0.0; // How far to extend lines past either end, in pt - - //........................................................................ - - function render(Frame $frame) { - $text = $frame->get_text(); - if ( trim($text) === "" ) - return; - - $style = $frame->get_style(); - list($x, $y) = $frame->get_position(); - $cb = $frame->get_containing_block(); - - if ( ($ml = $style->margin_left) === "auto" || $ml === "none" ) - $ml = 0; - - if ( ($pl = $style->padding_left) === "auto" || $pl === "none" ) - $pl = 0; - - if ( ($bl = $style->border_left_width) === "auto" || $bl === "none" ) - $bl = 0; - - $x += $style->length_in_pt( array($ml, $pl, $bl), $cb["w"] ); - - $font = $style->font_family; - $size = $frame_font_size = $style->font_size; - $height = $style->height; - $word_spacing = $frame->get_text_spacing() + $style->length_in_pt($style->word_spacing); - $char_spacing = $style->length_in_pt($style->letter_spacing); - $width = $style->width; - - /*$text = str_replace( - array("{PAGE_NUM}"), - array($this->_canvas->get_page_number()), - $text - );*/ - - $this->_canvas->text($x, $y, $text, - $font, $size, - $style->color, $word_spacing, $char_spacing); - - $line = $frame->get_containing_line(); - - // FIXME Instead of using the tallest frame to position, - // the decoration, the text should be well placed - if ( false && $line["tallest_frame"] ) { - $base_frame = $line["tallest_frame"]; - $style = $base_frame->get_style(); - $size = $style->font_size; - $height = $line["h"] * ($size / $style->line_height); - } - - if ( method_exists( $this->_canvas, "get_cpdf" ) ) { - $cpdf = $this->_canvas->get_cpdf(); - $fontBBox = $cpdf->fonts[$style->font_family]['FontBBox']; - $base = (($fontBBox[3]*$size)/1000) * 0.90; - $descent = ($fontBBox[1]*$size)/1000; - //print '<pre>Text_Renderer cpdf:'.$base.' '.$descent.' '.$size.'</pre>'; - } else { - //Descent is font part below baseline, typically negative. $height is about full height of font box. - //$descent = -$size/6; is less accurate, depends on font family. - // @todo Could we get font info for PDFlib adapter and others ? - $base = $size*1.08; - $descent = $size-$height; - //print '<pre>Text_Renderer other than cpdf:'.$base.' '.$descent.' '.$size.'</pre>'; - } - - // Handle text decoration: - // http://www.w3.org/TR/CSS21/text.html#propdef-text-decoration - - // Draw all applicable text-decorations. Start with the root and work our way down. - $p = $frame; - $stack = array(); - while ( $p = $p->get_parent() ) - $stack[] = $p; - - while ( count($stack) > 0 ) { - $f = array_pop($stack); - - if ( ($text_deco = $f->get_style()->text_decoration) === "none" ) - continue; - - $deco_y = $y; //$line["y"]; - $color = $f->get_style()->color; - - switch ($text_deco) { - - default: - continue; - - case "underline": - $deco_y += $base - $descent + $size * (self::UNDERLINE_OFFSET - self::DECO_THICKNESS/2); - break; - - case "overline": - $deco_y += $size * (self::OVERLINE_OFFSET + self::DECO_THICKNESS/2); - break; - - case "line-through": - $deco_y += $base * 0.7 + $size * self::LINETHROUGH_OFFSET; - break; - } - - $dx = 0; - $x1 = $x - self::DECO_EXTENSION; - $x2 = $x + $width + $dx + self::DECO_EXTENSION; - $this->_canvas->line($x1, $deco_y, $x2, $deco_y, $color, $size * self::DECO_THICKNESS); - - } - - if (DEBUG_LAYOUT && DEBUG_LAYOUT_LINES) { - $text_width = Font_Metrics::get_text_width($text, $font, $frame_font_size); - $this->_debug_layout(array($x, $y, $text_width+($line["wc"]-1)*$word_spacing, $frame_font_size), "orange", array(0.5, 0.5)); - } - } -} diff --git a/application/third_party/dompdf/include/ttf_info.cls.php b/application/third_party/dompdf/include/ttf_info.cls.php deleted file mode 100644 index 8fdeb3bc..00000000 --- a/application/third_party/dompdf/include/ttf_info.cls.php +++ /dev/null @@ -1,306 +0,0 @@ -<?php -/** - * ttfInfo class - * Retrieve data stored in a TTF files 'name' table - * - * @original author Unknown - * found at http://www.phpclasses.org/browse/package/2144.html - * - * @ported for used on http://www.nufont.com - * @author Jason Arencibia - * @version 0.2 - * @copyright (c) 2006 GrayTap Media - * @website http://www.graytap.com - * @license GPL 2.0 - * @access public - * - * @todo: Make it Retrieve additional information from other tables - * - */ -class TTF_Info { - /** - * variable $_dirRestriction - * Restrict the resource pointer to this directory and above. - * Change to 1 for to allow the class to look outside of it current directory - * @protected - * @var int - */ - protected $_dirRestriction = true; - /** - * variable $_dirRestriction - * Restrict the resource pointer to this directory and above. - * Change to 1 for nested directories - * @protected - * @var int - */ - protected $_recursive = true; - - /** - * variable $fontsdir - * This is to declare this variable as protected - * don't edit this!!! - * @protected - */ - protected $fontsdir; - /** - * variable $filename - * This is to declare this varable as protected - * don't edit this!!! - * @protected - */ - protected $filename; - - /** - * function setFontFile() - * set the filename - * @public - * @param string $data the new value - * @return object reference to this - */ - public function setFontFile($data) - { - if ($this->_dirRestriction && preg_match('[\.\/|\.\.\/]', $data)) - { - $this->exitClass('Error: Directory restriction is enforced!'); - } - - $this->filename = $data; - return $this; - } // public function setFontFile - - /** - * function setFontsDir() - * set the Font Directory - * @public - * @param string $data the new value - * @return object referrence to this - */ - public function setFontsDir($data) - { - if ($this->_dirRestriction && preg_match('[\.\/|\.\.\/]', $data)) - { - $this->exitClass('Error: Directory restriction is enforced!'); - } - - $this->fontsdir = $data; - return $this; - } // public function setFontsDir - - /** - * function readFontsDir() - * @public - * @return information contained in the TTF 'name' table of all fonts in a directory. - */ - public function readFontsDir() - { - if (empty($this->fontsdir)) { $this->exitClass('Error: Fonts Directory has not been set with setFontsDir().'); } - if (empty($this->backupDir)){ $this->backupDir = $this->fontsdir; } - - //$this->array = array(); - $d = dir($this->fontsdir); - - while (false !== ($e = $d->read())) - { - if($e != '.' && $e != '..') - { - $e = $this->fontsdir . $e; - if($this->_recursive && is_dir($e)) - { - $this->setFontsDir($e); - $this->readFontsDir(); - } - else if ($this->is_ttf($e) === true) - { - $this->setFontFile($e); - $this->array[] = $this->getFontInfo(); - } - } - } - - if (!empty($this->backupDir)){ $this->fontsdir = $this->backupDir; } - - $d->close(); - return $this; - } // public function readFontsDir - - /** - * function setProtectedVar() - * @public - * @param string $var the new variable - * @param string $data the new value - * @return object reference to this - - * DISABLED, NO REAL USE YET - - public function setProtectedVar($var, $data) - { - if ($var == 'filename') - { - $this->setFontFile($data); - } else { - //if (isset($var) && !empty($data)) - $this->$var = $data; - } - return $this; - } - */ - /** - * function getFontInfo() - * @public - * @return information contained in the TTF 'name' table. - */ - public function getFontInfo() - { - $fd = fopen ($this->filename, "r"); - $this->text = fread ($fd, filesize($this->filename)); - fclose ($fd); - - $number_of_tables = hexdec($this->dec2ord($this->text[4]).$this->dec2ord($this->text[5])); - - for ($i=0;$i<$number_of_tables;$i++) - { - $tag = $this->text[12+$i*16].$this->text[12+$i*16+1].$this->text[12+$i*16+2].$this->text[12+$i*16+3]; - - if ($tag == 'name') - { - $this->ntOffset = hexdec( - $this->dec2ord($this->text[12+$i*16+8]).$this->dec2ord($this->text[12+$i*16+8+1]). - $this->dec2ord($this->text[12+$i*16+8+2]).$this->dec2ord($this->text[12+$i*16+8+3])); - - $offset_storage_dec = hexdec($this->dec2ord($this->text[$this->ntOffset+4]).$this->dec2ord($this->text[$this->ntOffset+5])); - $number_name_records_dec = hexdec($this->dec2ord($this->text[$this->ntOffset+2]).$this->dec2ord($this->text[$this->ntOffset+3])); - } - } - - $storage_dec = $offset_storage_dec + $this->ntOffset; - $storage_hex = strtoupper(dechex($storage_dec)); - - for ($j=0;$j<$number_name_records_dec;$j++) - { - $platform_id_dec = hexdec($this->dec2ord($this->text[$this->ntOffset+6+$j*12+0]).$this->dec2ord($this->text[$this->ntOffset+6+$j*12+1])); - $name_id_dec = hexdec($this->dec2ord($this->text[$this->ntOffset+6+$j*12+6]).$this->dec2ord($this->text[$this->ntOffset+6+$j*12+7])); - $string_length_dec = hexdec($this->dec2ord($this->text[$this->ntOffset+6+$j*12+8]).$this->dec2ord($this->text[$this->ntOffset+6+$j*12+9])); - $string_offset_dec = hexdec($this->dec2ord($this->text[$this->ntOffset+6+$j*12+10]).$this->dec2ord($this->text[$this->ntOffset+6+$j*12+11])); - - if (!empty($name_id_dec) and empty($font_tags[$name_id_dec])) - { - for($l=0;$l<$string_length_dec;$l++) - { - if (ord($this->text[$storage_dec+$string_offset_dec+$l]) == '0') { continue; } - else { $font_tags[$name_id_dec] .= ($this->text[$storage_dec+$string_offset_dec+$l]); } - } - } - } - return $font_tags; - } // public function getFontInfo - - /** - * function getCopyright() - * @public - * @return 'Copyright notice' contained in the TTF 'name' table at index 0 - */ - public function getCopyright() - { - $this->info = $this->getFontInfo(); - return $this->info[0]; - } // public function getCopyright - - /** - * function getFontFamily() - * @public - * @return 'Font Family name' contained in the TTF 'name' table at index 1 - */ - public function getFontFamily() - { - $this->info = $this->getFontInfo(); - return $this->info[1]; - } // public function getFontFamily - - /** - * function getFontSubFamily() - * @public - * @return 'Font Subfamily name' contained in the TTF 'name' table at index 2 - */ - public function getFontSubFamily() - { - $this->info = $this->getFontInfo(); - return $this->info[2]; - } // public function getFontSubFamily - - /** - * function getFontId() - * @public - * @return 'Unique font identifier' contained in the TTF 'name' table at index 3 - */ - public function getFontId() - { - $this->info = $this->getFontInfo(); - return $this->info[3]; - } // public function getFontId - - /** - * function getFullFontName() - * @public - * @return 'Full font name' contained in the TTF 'name' table at index 4 - */ - public function getFullFontName() - { - $this->info = $this->getFontInfo(); - return $this->info[4]; - } // public function getFullFontName - - /** - * function dec2ord() - * Used to lessen redundant calls to multiple functions. - * @protected - * @return object - */ - protected function dec2ord($dec) - { - return $this->dec2hex(ord($dec)); - } // protected function dec2ord - - /** - * function dec2hex() - * private function to perform Hexadecimal to decimal with proper padding. - * @protected - * @return object - */ - protected function dec2hex($dec) - { - return str_repeat('0', 2-strlen(($hex=strtoupper(dechex($dec))))) . $hex; - } // protected function dec2hex - - /** - * function dec2hex() - * private function to perform Hexadecimal to decimal with proper padding. - * @protected - * @return object - */ - protected function exitClass($message) - { - echo $message; - exit; - } // protected function dec2hex - - /** - * function dec2hex() - * private helper function to test in the file in question is a ttf. - * @protected - * @return object - */ - protected function is_ttf($file) - { - $ext = explode('.', $file); - $ext = $ext[count($ext)-1]; - return preg_match("/ttf$/i",$ext) ? true : false; - } // protected function is_ttf -} // class ttfInfo - -function getFontInfo($resource) -{ - $ttfInfo = new TTF_Info; - $ttfInfo->setFontFile($resource); - return $ttfInfo->getFontInfo(); -} -?> \ No newline at end of file diff --git a/application/third_party/dompdf/index.php b/application/third_party/dompdf/index.php deleted file mode 100644 index 7ed173a8..00000000 --- a/application/third_party/dompdf/index.php +++ /dev/null @@ -1 +0,0 @@ -<?php header("Location: www/"); ?> \ No newline at end of file diff --git a/application/third_party/dompdf/lib/class.pdf.php b/application/third_party/dompdf/lib/class.pdf.php deleted file mode 100644 index 3478e05d..00000000 --- a/application/third_party/dompdf/lib/class.pdf.php +++ /dev/null @@ -1,4897 +0,0 @@ -<?php - /** - * Cpdf - * - * http://www.ros.co.nz/pdf - * - * A PHP class to provide the basic functionality to create a pdf document without - * any requirement for additional modules. - * - * Note that the companion class CezPdf can be used to extend this class and dramatically - * simplify the creation of documents. - * - * Extended by Orion Richardson to support Unicode / UTF-8 characters using - * TCPDF and others as a guide. - * - * IMPORTANT NOTE - * there is no warranty, implied or otherwise with this software. - * - * LICENCE - * This code has been placed in the Public Domain for all to enjoy. - * - * @author Wayne Munro <pdf@ros.co.nz> - * @contributor Orion Richardson <orionr@yahoo.com> - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @contributor Ryan H. Masten <ryan.masten@gmail.com> - * @version 009 - * @package Cpdf - * - * Changes - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @version 0.5.1.htischer.20090507 - * - On multiple identical png and jpg images, put only one copy into the pdf file and refer to it. - * This reduces file size and rendering time. - * - Allow font metrics cache to be a different folder as the font metrics. This allows a read only installation. - * - Allow adding images directly from a gd object. This increases performance by avoiding temporary files. - * - On png image files remove alpa channel to allow display of typical png files in pdf. - * - On addImage avoid temporary file. Todo: Duplicate Image (currently not used) - * - Add a check function, whether image is already cached, This avoids double creation by caller which saves - * CPU time and memory. - * @contributor Helmut Tischer <htischer@weihenstephan.org> - * @version dompdf_trunk_with_helmut_mods.20090524 - * - Allow temp and fontcache folders to be passed in by class creator - * @version dompdf_trunk_with_helmut_mods.20090528 - * - typo 'decent' instead of 'descent' at various locations made getFontDescender worthless - */ - -/* $Id: class.pdf.php 360 2011-02-15 19:33:52Z fabien.menager $ */ - -class Cpdf { - - - /** - * the current number of pdf objects in the document - */ - public $numObj = 0; - - /** - * this array contains all of the pdf objects, ready for final assembly - */ - public $objects = array(); - - /** - * the objectId (number within the objects array) of the document catalog - */ - public $catalogId; - - /** - * array carrying information about the fonts that the system currently knows about - * used to ensure that a font is not loaded twice, among other things - */ - public $fonts = array(); - - /** - * the default font metrics file to use if no other font has been loaded - * the path to the directory containing the font metrics should be included - */ - public $defaultFont = './fonts/Helvetica.afm'; - - /** - * a record of the current font - */ - public $currentFont = ''; - - /** - * the current base font - */ - public $currentBaseFont = ''; - - /** - * the number of the current font within the font array - */ - public $currentFontNum = 0; - - /** - * - */ - public $currentNode; - - /** - * object number of the current page - */ - public $currentPage; - - /** - * object number of the currently active contents block - */ - public $currentContents; - - /** - * number of fonts within the system - */ - public $numFonts = 0; - - /** - * Number of graphic state resources used - */ - private $numStates = 0; - - /** - * current colour for fill operations, defaults to inactive value, all three components should be between 0 and 1 inclusive when active - */ - public $currentColour = null; - - /** - * current colour for stroke operations (lines etc.) - */ - public $currentStrokeColour = null; - - /** - * current style that lines are drawn in - */ - public $currentLineStyle = ''; - - /** - * current line transparency (partial graphics state) - */ - public $currentLineTransparency = array("mode" => "Normal", "opacity" => 1.0); - - /** - * current fill transparency (partial graphics state) - */ - public $currentFillTransparency = array("mode" => "Normal", "opacity" => 1.0); - - /** - * an array which is used to save the state of the document, mainly the colours and styles - * it is used to temporarily change to another state, the change back to what it was before - */ - public $stateStack = array(); - - /** - * number of elements within the state stack - */ - public $nStateStack = 0; - - /** - * number of page objects within the document - */ - public $numPages = 0; - - /** - * object Id storage stack - */ - public $stack = array(); - - /** - * number of elements within the object Id storage stack - */ - public $nStack = 0; - - /** - * an array which contains information about the objects which are not firmly attached to pages - * these have been added with the addObject function - */ - public $looseObjects = array(); - - /** - * array contains infomation about how the loose objects are to be added to the document - */ - public $addLooseObjects = array(); - - /** - * the objectId of the information object for the document - * this contains authorship, title etc. - */ - public $infoObject = 0; - - /** - * number of images being tracked within the document - */ - public $numImages = 0; - - /** - * an array containing options about the document - * it defaults to turning on the compression of the objects - */ - public $options = array('compression'=>true); - - /** - * the objectId of the first page of the document - */ - public $firstPageId; - - /** - * used to track the last used value of the inter-word spacing, this is so that it is known - * when the spacing is changed. - */ - public $wordSpaceAdjust = 0; - - /** - * used to track the last used value of the inter-letter spacing, this is so that it is known - * when the spacing is changed. - */ - public $charSpaceAdjust = 0; - - /** - * the object Id of the procset object - */ - public $procsetObjectId; - - /** - * store the information about the relationship between font families - * this used so that the code knows which font is the bold version of another font, etc. - * the value of this array is initialised in the constuctor function. - */ - public $fontFamilies = array(); - - /** - * folder for php serialized formats of font metrics files. - * If empty string, use same folder as original metrics files. - * This can be passed in from class creator. - * If this folder does not exist or is not writable, Cpdf will be **much** slower. - * Because of potential trouble with php safe mode, folder cannot be created at runtime. - */ - public $fontcache = ''; - - /** - * The version of the font metrics cache file. - * This value must be manually incremented whenever the internal font data structure is modified. - */ - public $fontcacheVersion = 4; - - /** - * temporary folder. - * If empty string, will attempty system tmp folder. - * This can be passed in from class creator. - * Only used for conversion of gd images to jpeg images. - */ - public $tmp = ''; - - /** - * track if the current font is bolded or italicised - */ - public $currentTextState = ''; - - /** - * messages are stored here during processing, these can be selected afterwards to give some useful debug information - */ - public $messages = ''; - - /** - * the ancryption array for the document encryption is stored here - */ - public $arc4 = ''; - - /** - * the object Id of the encryption information - */ - public $arc4_objnum = 0; - - /** - * the file identifier, used to uniquely identify a pdf document - */ - public $fileIdentifier = ''; - - /** - * a flag to say if a document is to be encrypted or not - */ - public $encrypted = 0; - - /** - * the ancryption key for the encryption of all the document content (structure is not encrypted) - */ - public $encryptionKey = ''; - - /** - * array which forms a stack to keep track of nested callback functions - */ - public $callback = array(); - - /** - * the number of callback functions in the callback array - */ - public $nCallback = 0; - - /** - * store label->id pairs for named destinations, these will be used to replace internal links - * done this way so that destinations can be defined after the location that links to them - */ - public $destinations = array(); - - /** - * store the stack for the transaction commands, each item in here is a record of the values of all the - * publiciables within the class, so that the user can rollback at will (from each 'start' command) - * note that this includes the objects array, so these can be large. - */ - public $checkpoint = ''; - - /* Table of Image origin filenames and image labels which were already added with o_image(). - * Allows to merge identical images - */ - public $imagelist = array(); - - /** - * whether the text passed in should be treated as Unicode or just local character set. - */ - public $isUnicode = false; - - /** - * @var string the JavaScript code of the document - */ - public $javascript = ''; - - /** - * @var boolean whether the compression is possible - */ - protected $compressionReady = false; - - /** - * @var array current page size - */ - protected $currentPageSize = array("width" => 0, "height" => 0); - - /** - * @var string the target internal encoding - */ - static protected $targetEncoding = 'iso-8859-1'; - - /** - * class constructor - * this will start a new document - * @var array array of 4 numbers, defining the bottom left and upper right corner of the page. first two are normally zero. - * @var boolean whether text will be treated as Unicode or not. - */ - function __construct ($pageSize = array(0, 0, 612, 792), $isUnicode = false, $fontcache = '', $tmp = '') { - $this->isUnicode = $isUnicode; - $this->fontcache = $fontcache; - $this->tmp = $tmp; - $this->newDocument($pageSize); - - $this->compressionReady = function_exists('gzcompress'); - - if ( in_array('Windows-1252', mb_list_encodings()) ) { - self::$targetEncoding = 'Windows-1252'; - } - - // also initialize the font families that are known about already - $this->setFontFamily('init'); - // $this->fileIdentifier = md5('xxxxxxxx'.time()); - } - - - /** - * Class destructor - */ - function __destruct() { - clear_object($this); - } - - /** - * Document object methods (internal use only) - * - * There is about one object method for each type of object in the pdf document - * Each function has the same call list ($id,$action,$options). - * $id = the object ID of the object, or what it is to be if it is being created - * $action = a string specifying the action to be performed, though ALL must support: - * 'new' - create the object with the id $id - * 'out' - produce the output for the pdf object - * $options = optional, a string or array containing the various parameters for the object - * - * These, in conjunction with the output function are the ONLY way for output to be produced - * within the pdf 'file'. - */ - - /** - *destination object, used to specify the location for the user to jump to, presently on opening - */ - protected function o_destination($id, $action, $options = '') { - if ($action !== 'new') { - $o = & $this->objects[$id]; - } - - switch ($action) { - case 'new': - $this->objects[$id] = array('t'=>'destination', 'info'=>array()); - $tmp = ''; - switch ($options['type']) { - case 'XYZ': - case 'FitR': - $tmp = ' '.$options['p3'].$tmp; - case 'FitH': - case 'FitV': - case 'FitBH': - case 'FitBV': - $tmp = ' '.$options['p1'].' '.$options['p2'].$tmp; - case 'Fit': - case 'FitB': - $tmp = $options['type'].$tmp; - $this->objects[$id]['info']['string'] = $tmp; - $this->objects[$id]['info']['page'] = $options['page']; - } - break; - - case 'out': - $tmp = $o['info']; - $res = "\n$id 0 obj\n".'['.$tmp['page'].' 0 R /'.$tmp['string']."]\nendobj"; - return $res; - } - } - - - /** - * set the viewer preferences - */ - protected function o_viewerPreferences($id, $action, $options = '') { - if ($action !== 'new') { - $o = & $this->objects[$id]; - } - - switch ($action) { - case 'new': - $this->objects[$id] = array('t'=>'viewerPreferences', 'info'=>array()); - break; - - case 'add': - foreach($options as $k=>$v) { - switch ($k) { - case 'HideToolbar': - case 'HideMenubar': - case 'HideWindowUI': - case 'FitWindow': - case 'CenterWindow': - case 'NonFullScreenPageMode': - case 'Direction': - $o['info'][$k] = $v; - break; - } - } - break; - - case 'out': - $res = "\n$id 0 obj\n<< "; - foreach($o['info'] as $k=>$v) { - $res.= "\n/$k $v"; - } - $res.= "\n>>\n"; - return $res; - } - } - - - /** - * define the document catalog, the overall controller for the document - */ - protected function o_catalog($id, $action, $options = '') { - if ($action !== 'new') { - $o = & $this->objects[$id]; - } - - switch ($action) { - case 'new': - $this->objects[$id] = array('t'=>'catalog', 'info'=>array()); - $this->catalogId = $id; - break; - - case 'outlines': - case 'pages': - case 'openHere': - case 'javascript': - $o['info'][$action] = $options; - break; - - case 'viewerPreferences': - if (!isset($o['info']['viewerPreferences'])) { - $this->numObj++; - $this->o_viewerPreferences($this->numObj, 'new'); - $o['info']['viewerPreferences'] = $this->numObj; - } - - $vp = $o['info']['viewerPreferences']; - $this->o_viewerPreferences($vp, 'add', $options); - - break; - - case 'out': - $res = "\n$id 0 obj\n<< /Type /Catalog"; - - foreach($o['info'] as $k=>$v) { - switch ($k) { - case 'outlines': - $res.= "\n/Outlines $v 0 R"; - break; - - case 'pages': - $res.= "\n/Pages $v 0 R"; - break; - - case 'viewerPreferences': - $res.= "\n/ViewerPreferences $v 0 R"; - break; - - case 'openHere': - $res.= "\n/OpenAction $v 0 R"; - break; - - case 'javascript': - $res.= "\n/Names <</JavaScript $v 0 R>>"; - break; - } - } - - $res.= " >>\nendobj"; - return $res; - } - } - - - /** - * object which is a parent to the pages in the document - */ - protected function o_pages($id, $action, $options = '') { - if ($action !== 'new') { - $o = & $this->objects[$id]; - } - - switch ($action) { - case 'new': - $this->objects[$id] = array('t'=>'pages', 'info'=>array()); - $this->o_catalog($this->catalogId, 'pages', $id); - break; - - case 'page': - if (!is_array($options)) { - // then it will just be the id of the new page - $o['info']['pages'][] = $options; - } else { - // then it should be an array having 'id','rid','pos', where rid=the page to which this one will be placed relative - // and pos is either 'before' or 'after', saying where this page will fit. - if (isset($options['id']) && isset($options['rid']) && isset($options['pos'])) { - $i = array_search($options['rid'], $o['info']['pages']); - if (isset($o['info']['pages'][$i]) && $o['info']['pages'][$i] == $options['rid']) { - - // then there is a match - // make a space - switch ($options['pos']) { - case 'before': - $k = $i; - break; - - case 'after': - $k = $i+1; - break; - - default: - $k = -1; - break; - } - - if ($k >= 0) { - for ($j = count($o['info']['pages']) -1;$j >= $k;$j--) { - $o['info']['pages'][$j+1] = $o['info']['pages'][$j]; - } - - $o['info']['pages'][$k] = $options['id']; - } - } - } - } - break; - - case 'procset': - $o['info']['procset'] = $options; - break; - - case 'mediaBox': - $o['info']['mediaBox'] = $options; - // which should be an array of 4 numbers - $this->currentPageSize = array('width' => $options[2], 'height' => $options[3]); - break; - - case 'font': - $o['info']['fonts'][] = array('objNum'=>$options['objNum'], 'fontNum'=>$options['fontNum']); - break; - - case 'extGState': - $o['info']['extGStates'][] = array('objNum' => $options['objNum'], 'stateNum' => $options['stateNum']); - break; - - case 'xObject': - $o['info']['xObjects'][] = array('objNum'=>$options['objNum'], 'label'=>$options['label']); - break; - - case 'out': - if (count($o['info']['pages'])) { - $res = "\n$id 0 obj\n<< /Type /Pages\n/Kids ["; - foreach($o['info']['pages'] as $v) { - $res.= "$v 0 R\n"; - } - - $res.= "]\n/Count ".count($this->objects[$id]['info']['pages']); - - if ( (isset($o['info']['fonts']) && count($o['info']['fonts'])) || - isset($o['info']['procset']) || - (isset($o['info']['extGStates']) && count($o['info']['extGStates']))) { - $res.= "\n/Resources <<"; - - if (isset($o['info']['procset'])) { - $res.= "\n/ProcSet ".$o['info']['procset']." 0 R"; - } - - if (isset($o['info']['fonts']) && count($o['info']['fonts'])) { - $res.= "\n/Font << "; - foreach($o['info']['fonts'] as $finfo) { - $res.= "\n/F".$finfo['fontNum']." ".$finfo['objNum']." 0 R"; - } - $res.= "\n>>"; - } - - if (isset($o['info']['xObjects']) && count($o['info']['xObjects'])) { - $res.= "\n/XObject << "; - foreach($o['info']['xObjects'] as $finfo) { - $res.= "\n/".$finfo['label']." ".$finfo['objNum']." 0 R"; - } - $res.= "\n>>"; - } - - if ( isset($o['info']['extGStates']) && count($o['info']['extGStates'])) { - $res.= "\n/ExtGState << "; - foreach ($o['info']['extGStates'] as $gstate) { - $res.= "\n/GS" . $gstate['stateNum'] . " " . $gstate['objNum'] . " 0 R"; - } - $res.= "\n>>"; - } - - $res.= "\n>>"; - if (isset($o['info']['mediaBox'])) { - $tmp = $o['info']['mediaBox']; - $res.= "\n/MediaBox [".sprintf('%.3F %.3F %.3F %.3F', $tmp[0], $tmp[1], $tmp[2], $tmp[3]) .']'; - } - } - - $res.= "\n >>\nendobj"; - } else { - $res = "\n$id 0 obj\n<< /Type /Pages\n/Count 0\n>>\nendobj"; - } - - return $res; - } - } - - - /** - * define the outlines in the doc, empty for now - */ - protected function o_outlines($id, $action, $options = '') { - if ($action !== 'new') { - $o = & $this->objects[$id]; - } - - switch ($action) { - case 'new': - $this->objects[$id] = array('t'=>'outlines', 'info'=>array('outlines'=>array())); - $this->o_catalog($this->catalogId, 'outlines', $id); - break; - - case 'outline': - $o['info']['outlines'][] = $options; - break; - - case 'out': - if (count($o['info']['outlines'])) { - $res = "\n$id 0 obj\n<< /Type /Outlines /Kids ["; - foreach($o['info']['outlines'] as $v) { - $res.= "$v 0 R "; - } - - $res.= "] /Count ".count($o['info']['outlines']) ." >>\nendobj"; - } else { - $res = "\n$id 0 obj\n<< /Type /Outlines /Count 0 >>\nendobj"; - } - - return $res; - } - } - - - /** - * an object to hold the font description - */ - protected function o_font($id, $action, $options = '') { - if ($action !== 'new') { - $o = & $this->objects[$id]; - } - - switch ($action) { - case 'new': - $this->objects[$id] = array('t' => 'font', 'info' => array('name' => $options['name'], 'fontFileName' => $options['fontFileName'], 'SubType' => 'Type1')); - $fontNum = $this->numFonts; - $this->objects[$id]['info']['fontNum'] = $fontNum; - - // deal with the encoding and the differences - if (isset($options['differences'])) { - // then we'll need an encoding dictionary - $this->numObj++; - $this->o_fontEncoding($this->numObj, 'new', $options); - $this->objects[$id]['info']['encodingDictionary'] = $this->numObj; - } else if (isset($options['encoding'])) { - // we can specify encoding here - switch ($options['encoding']) { - case 'WinAnsiEncoding': - case 'MacRomanEncoding': - case 'MacExpertEncoding': - $this->objects[$id]['info']['encoding'] = $options['encoding']; - break; - - case 'none': - break; - - default: - $this->objects[$id]['info']['encoding'] = 'WinAnsiEncoding'; - break; - } - } else { - $this->objects[$id]['info']['encoding'] = 'WinAnsiEncoding'; - } - - if ($this->fonts[$options['fontFileName']]['isUnicode']) { - // For Unicode fonts, we need to incorporate font data into - // sub-sections that are linked from the primary font section. - // Look at o_fontGIDtoCID and o_fontDescendentCID functions - // for more informaiton. - // - // All of this code is adapted from the excellent changes made to - // transform FPDF to TCPDF (http://tcpdf.sourceforge.net/) - - $toUnicodeId = ++$this->numObj; - $this->o_contents($toUnicodeId, 'new', 'raw'); - $this->objects[$id]['info']['toUnicode'] = $toUnicodeId; - - $stream = <<<EOT -/CIDInit /ProcSet findresource begin -12 dict begin -begincmap -/CIDSystemInfo -<</Registry (Adobe) -/Ordering (UCS) -/Supplement 0 ->> def -/CMapName /Adobe-Identity-UCS def -/CMapType 2 def -1 begincodespacerange -<0000> <FFFF> -endcodespacerange -1 beginbfrange -<0000> <FFFF> <0000> -endbfrange -endcmap -CMapName currentdict /CMap defineresource pop -end -end -EOT; - - $res = "<</Length " . mb_strlen($stream, '8bit') . " >>\n"; - $res .= "stream\n" . $stream . "endstream"; - - $this->objects[$toUnicodeId]['c'] = $res; - - $cidFontId = ++$this->numObj; - $this->o_fontDescendentCID($cidFontId, 'new', $options); - $this->objects[$id]['info']['cidFont'] = $cidFontId; - } - - // also tell the pages node about the new font - $this->o_pages($this->currentNode, 'font', array('fontNum' => $fontNum, 'objNum' => $id)); - break; - - case 'add': - foreach ($options as $k => $v) { - switch ($k) { - case 'BaseFont': - $o['info']['name'] = $v; - break; - case 'FirstChar': - case 'LastChar': - case 'Widths': - case 'FontDescriptor': - case 'SubType': - $this->addMessage('o_font '.$k." : ".$v); - $o['info'][$k] = $v; - break; - } - } - - // pass values down to descendent font - if (isset($o['info']['cidFont'])) { - $this->o_fontDescendentCID($o['info']['cidFont'], 'add', $options); - } - break; - - case 'out': - if ($this->fonts[$this->objects[$id]['info']['fontFileName']]['isUnicode']) { - // For Unicode fonts, we need to incorporate font data into - // sub-sections that are linked from the primary font section. - // Look at o_fontGIDtoCID and o_fontDescendentCID functions - // for more informaiton. - // - // All of this code is adapted from the excellent changes made to - // transform FPDF to TCPDF (http://tcpdf.sourceforge.net/) - - $res = "\n$id 0 obj\n<</Type /Font\n/Subtype /Type0\n"; - $res.= "/BaseFont /".$o['info']['name']."\n"; - - // The horizontal identity mapping for 2-byte CIDs; may be used - // with CIDFonts using any Registry, Ordering, and Supplement values. - $res.= "/Encoding /Identity-H\n"; - $res.= "/DescendantFonts [".$o['info']['cidFont']." 0 R]\n"; - $res.= "/ToUnicode ".$o['info']['toUnicode']." 0 R\n"; - $res.= ">>\n"; - $res.= "endobj"; - } else { - $res = "\n$id 0 obj\n<< /Type /Font\n/Subtype /".$o['info']['SubType']."\n"; - $res.= "/Name /F".$o['info']['fontNum']."\n"; - $res.= "/BaseFont /".$o['info']['name']."\n"; - - if (isset($o['info']['encodingDictionary'])) { - // then place a reference to the dictionary - $res.= "/Encoding ".$o['info']['encodingDictionary']." 0 R\n"; - } else if (isset($o['info']['encoding'])) { - // use the specified encoding - $res.= "/Encoding /".$o['info']['encoding']."\n"; - } - - if (isset($o['info']['FirstChar'])) { - $res.= "/FirstChar ".$o['info']['FirstChar']."\n"; - } - - if (isset($o['info']['LastChar'])) { - $res.= "/LastChar ".$o['info']['LastChar']."\n"; - } - - if (isset($o['info']['Widths'])) { - $res.= "/Widths ".$o['info']['Widths']." 0 R\n"; - } - - if (isset($o['info']['FontDescriptor'])) { - $res.= "/FontDescriptor ".$o['info']['FontDescriptor']." 0 R\n"; - } - - $res.= ">>\n"; - $res.= "endobj"; - } - - return $res; - } - } - - - /** - * a font descriptor, needed for including additional fonts - */ - protected function o_fontDescriptor($id, $action, $options = '') { - if ($action !== 'new') { - $o = & $this->objects[$id]; - } - - switch ($action) { - case 'new': - $this->objects[$id] = array('t'=>'fontDescriptor', 'info'=>$options); - break; - - case 'out': - $res = "\n$id 0 obj\n<< /Type /FontDescriptor\n"; - foreach ($o['info'] as $label => $value) { - switch ($label) { - case 'Ascent': - case 'CapHeight': - case 'Descent': - case 'Flags': - case 'ItalicAngle': - case 'StemV': - case 'AvgWidth': - case 'Leading': - case 'MaxWidth': - case 'MissingWidth': - case 'StemH': - case 'XHeight': - case 'CharSet': - if (mb_strlen($value, '8bit')) { - $res.= "/$label $value\n"; - } - - break; - case 'FontFile': - case 'FontFile2': - case 'FontFile3': - $res.= "/$label $value 0 R\n"; - break; - - case 'FontBBox': - $res.= "/$label [$value[0] $value[1] $value[2] $value[3]]\n"; - break; - - case 'FontName': - $res.= "/$label /$value\n"; - break; - } - } - - $res.= ">>\nendobj"; - - return $res; - } - } - - - /** - * the font encoding - */ - protected function o_fontEncoding($id, $action, $options = '') { - if ($action !== 'new') { - $o = & $this->objects[$id]; - } - - switch ($action) { - case 'new': - // the options array should contain 'differences' and maybe 'encoding' - $this->objects[$id] = array('t'=>'fontEncoding', 'info'=>$options); - break; - - case 'out': - $res = "\n$id 0 obj\n<< /Type /Encoding\n"; - if (!isset($o['info']['encoding'])) { - $o['info']['encoding'] = 'WinAnsiEncoding'; - } - - if ($o['info']['encoding'] !== 'none') { - $res.= "/BaseEncoding /".$o['info']['encoding']."\n"; - } - - $res.= "/Differences \n["; - - $onum = -100; - - foreach($o['info']['differences'] as $num=>$label) { - if ($num != $onum+1) { - // we cannot make use of consecutive numbering - $res.= "\n$num /$label"; - } else { - $res.= " /$label"; - } - - $onum = $num; - } - - $res.= "\n]\n>>\nendobj"; - return $res; - } - } - - - /** - * a descendent cid font, needed for unicode fonts - */ - protected function o_fontDescendentCID($id, $action, $options = '') { - if ($action !== 'new') { - $o = & $this->objects[$id]; - } - - switch ($action) { - case 'new': - $this->objects[$id] = array('t'=>'fontDescendentCID', 'info'=>$options); - - // we need a CID system info section - $cidSystemInfoId = ++$this->numObj; - $this->o_contents($cidSystemInfoId, 'new', 'raw'); - $this->objects[$id]['info']['cidSystemInfo'] = $cidSystemInfoId; - $res= "<</Registry (Adobe)\n"; // A string identifying an issuer of character collections - $res.= "/Ordering (UCS)\n"; // A string that uniquely names a character collection issued by a specific registry - $res.= "/Supplement 0\n"; // The supplement number of the character collection. - $res.= ">>"; - $this->objects[$cidSystemInfoId]['c'] = $res; - - // and a CID to GID map - $cidToGidMapId = ++$this->numObj; - $this->o_fontGIDtoCIDMap($cidToGidMapId, 'new', $options); - $this->objects[$id]['info']['cidToGidMap'] = $cidToGidMapId; - break; - - case 'add': - foreach ($options as $k => $v) { - switch ($k) { - case 'BaseFont': - $o['info']['name'] = $v; - break; - - case 'FirstChar': - case 'LastChar': - case 'MissingWidth': - case 'FontDescriptor': - case 'SubType': - $this->addMessage("o_fontDescendentCID $k : $v"); - $o['info'][$k] = $v; - break; - } - } - - // pass values down to cid to gid map - $this->o_fontGIDtoCIDMap($o['info']['cidToGidMap'], 'add', $options); - break; - - case 'out': - $res = "\n$id 0 obj\n"; - $res.= "<</Type /Font\n"; - $res.= "/Subtype /CIDFontType2\n"; - $res.= "/BaseFont /".$o['info']['name']."\n"; - $res.= "/CIDSystemInfo ".$o['info']['cidSystemInfo']." 0 R\n"; -// if (isset($o['info']['FirstChar'])) { -// $res.= "/FirstChar ".$o['info']['FirstChar']."\n"; -// } - -// if (isset($o['info']['LastChar'])) { -// $res.= "/LastChar ".$o['info']['LastChar']."\n"; -// } - if (isset($o['info']['FontDescriptor'])) { - $res.= "/FontDescriptor ".$o['info']['FontDescriptor']." 0 R\n"; - } - - if (isset($o['info']['MissingWidth'])) { - $res.= "/DW ".$o['info']['MissingWidth']."\n"; - } - - if (isset($o['info']['fontFileName']) && isset($this->fonts[$o['info']['fontFileName']]['CIDWidths'])) { - $cid_widths = &$this->fonts[$o['info']['fontFileName']]['CIDWidths']; - $w = ''; - foreach ($cid_widths as $cid => $width) { - $w .= "$cid [$width] "; - } - $res.= "/W [$w]\n"; - } - - $res.= "/CIDToGIDMap ".$o['info']['cidToGidMap']." 0 R\n"; - $res.= ">>\n"; - $res.= "endobj"; - - return $res; - } - } - - - /** - * a font glyph to character map, needed for unicode fonts - */ - protected function o_fontGIDtoCIDMap($id, $action, $options = '') { - if ($action !== 'new') { - $o = & $this->objects[$id]; - } - - switch ($action) { - case 'new': - $this->objects[$id] = array('t'=>'fontGIDtoCIDMap', 'info'=>$options); - break; - - case 'out': - $res = "\n$id 0 obj\n"; - $fontFileName = $o['info']['fontFileName']; - $tmp = $this->fonts[$fontFileName]['CIDtoGID'] = base64_decode($this->fonts[$fontFileName]['CIDtoGID']); - - $compressed = isset($this->fonts[$fontFileName]['CIDtoGID_Compressed']) && - $this->fonts[$fontFileName]['CIDtoGID_Compressed']; - - if (!$compressed && isset($o['raw'])) { - $res.= $tmp; - } else { - $res.= "<<"; - - if (!$compressed && $this->compressionReady && $this->options['compression']) { - // then implement ZLIB based compression on this content stream - $compressed = true; - $tmp = gzcompress($tmp, 6); - } - if ($compressed) { - $res.= "\n/Filter /FlateDecode"; - } - - $res.= "\n/Length ".mb_strlen($tmp, '8bit') .">>\nstream\n$tmp\nendstream"; - } - - $res.= "\nendobj"; - return $res; - } - } - - - /** - * the document procset, solves some problems with printing to old PS printers - */ - protected function o_procset($id, $action, $options = '') { - if ($action !== 'new') { - $o = & $this->objects[$id]; - } - - switch ($action) { - case 'new': - $this->objects[$id] = array('t'=>'procset', 'info'=>array('PDF'=>1, 'Text'=>1)); - $this->o_pages($this->currentNode, 'procset', $id); - $this->procsetObjectId = $id; - break; - - case 'add': - // this is to add new items to the procset list, despite the fact that this is considered - // obselete, the items are required for printing to some postscript printers - switch ($options) { - case 'ImageB': - case 'ImageC': - case 'ImageI': - $o['info'][$options] = 1; - break; - } - break; - - case 'out': - $res = "\n$id 0 obj\n["; - foreach ($o['info'] as $label=>$val) { - $res.= "/$label "; - } - $res.= "]\nendobj"; - return $res; - } - } - - - /** - * define the document information - */ - protected function o_info($id, $action, $options = '') { - if ($action !== 'new') { - $o = & $this->objects[$id]; - } - - switch ($action) { - case 'new': - $this->infoObject = $id; - $date = 'D:'.@date('Ymd'); - $this->objects[$id] = array('t'=>'info', 'info'=>array('Creator'=>'R and OS php pdf writer, http://www.ros.co.nz', 'CreationDate'=>$date)); - break; - case 'Title': - case 'Author': - case 'Subject': - case 'Keywords': - case 'Creator': - case 'Producer': - case 'CreationDate': - case 'ModDate': - case 'Trapped': - $o['info'][$action] = $options; - break; - - case 'out': - if ($this->encrypted) { - $this->encryptInit($id); - } - - $res = "\n$id 0 obj\n<<\n"; - foreach ($o['info'] as $k=>$v) { - $res.= "/$k ("; - // dates must be outputted as-is, without Unicode transformations - $raw = ($k === 'CreationDate' || $k === 'ModDate'); - $c = $v; - - if ($this->encrypted) { - $c = $this->ARC4($c); - } - - $res.= ($raw) ? $c : $this->filterText($c); - $res.= ")\n"; - } - - $res.= ">>\nendobj"; - return $res; - } - } - - - /** - * an action object, used to link to URLS initially - */ - protected function o_action($id, $action, $options = '') { - if ($action !== 'new') { - $o = & $this->objects[$id]; - } - - switch ($action) { - case 'new': - if (is_array($options)) { - $this->objects[$id] = array('t'=>'action', 'info'=>$options, 'type'=>$options['type']); - } else { - // then assume a URI action - $this->objects[$id] = array('t'=>'action', 'info'=>$options, 'type'=>'URI'); - } - break; - - case 'out': - if ($this->encrypted) { - $this->encryptInit($id); - } - - $res = "\n$id 0 obj\n<< /Type /Action"; - switch ($o['type']) { - case 'ilink': - // there will be an 'label' setting, this is the name of the destination - $res.= "\n/S /GoTo\n/D ".$this->destinations[(string)$o['info']['label']]." 0 R"; - break; - - case 'URI': - $res.= "\n/S /URI\n/URI ("; - if ($this->encrypted) { - $res.= $this->filterText($this->ARC4($o['info'])); - } else { - $res.= $this->filterText($o['info']); - } - - $res.= ")"; - break; - } - - $res.= "\n>>\nendobj"; - return $res; - } - } - - - /** - * an annotation object, this will add an annotation to the current page. - * initially will support just link annotations - */ - protected function o_annotation($id, $action, $options = '') { - if ($action !== 'new') { - $o = & $this->objects[$id]; - } - - switch ($action) { - case 'new': - // add the annotation to the current page - $pageId = $this->currentPage; - $this->o_page($pageId, 'annot', $id); - - // and add the action object which is going to be required - switch ($options['type']) { - case 'link': - $this->objects[$id] = array('t'=>'annotation', 'info'=>$options); - $this->numObj++; - $this->o_action($this->numObj, 'new', $options['url']); - $this->objects[$id]['info']['actionId'] = $this->numObj; - break; - - case 'ilink': - // this is to a named internal link - $label = $options['label']; - $this->objects[$id] = array('t'=>'annotation', 'info'=>$options); - $this->numObj++; - $this->o_action($this->numObj, 'new', array('type'=>'ilink', 'label'=>$label)); - $this->objects[$id]['info']['actionId'] = $this->numObj; - break; - } - break; - - case 'out': - $res = "\n$id 0 obj\n<< /Type /Annot"; - switch ($o['info']['type']) { - case 'link': - case 'ilink': - $res.= "\n/Subtype /Link"; - break; - } - $res.= "\n/A ".$o['info']['actionId']." 0 R"; - $res.= "\n/Border [0 0 0]"; - $res.= "\n/H /I"; - $res.= "\n/Rect [ "; - - foreach($o['info']['rect'] as $v) { - $res.= sprintf("%.4F ", $v); - } - - $res.= "]"; - $res.= "\n>>\nendobj"; - return $res; - } - } - - - /** - * a page object, it also creates a contents object to hold its contents - */ - protected function o_page($id, $action, $options = '') { - if ($action !== 'new') { - $o = & $this->objects[$id]; - } - - switch ($action) { - case 'new': - $this->numPages++; - $this->objects[$id] = array('t'=>'page', 'info'=>array('parent'=>$this->currentNode, 'pageNum'=>$this->numPages)); - - if (is_array($options)) { - // then this must be a page insertion, array should contain 'rid','pos'=[before|after] - $options['id'] = $id; - $this->o_pages($this->currentNode, 'page', $options); - } else { - $this->o_pages($this->currentNode, 'page', $id); - } - - $this->currentPage = $id; - //make a contents object to go with this page - $this->numObj++; - $this->o_contents($this->numObj, 'new', $id); - $this->currentContents = $this->numObj; - $this->objects[$id]['info']['contents'] = array(); - $this->objects[$id]['info']['contents'][] = $this->numObj; - - $match = ($this->numPages%2 ? 'odd' : 'even'); - foreach($this->addLooseObjects as $oId=>$target) { - if ($target === 'all' || $match === $target) { - $this->objects[$id]['info']['contents'][] = $oId; - } - } - break; - - case 'content': - $o['info']['contents'][] = $options; - break; - - case 'annot': - // add an annotation to this page - if (!isset($o['info']['annot'])) { - $o['info']['annot'] = array(); - } - - // $options should contain the id of the annotation dictionary - $o['info']['annot'][] = $options; - break; - - case 'out': - $res = "\n$id 0 obj\n<< /Type /Page"; - $res.= "\n/Parent ".$o['info']['parent']." 0 R"; - - if (isset($o['info']['annot'])) { - $res.= "\n/Annots ["; - foreach($o['info']['annot'] as $aId) { - $res.= " $aId 0 R"; - } - $res.= " ]"; - } - - $count = count($o['info']['contents']); - if ($count == 1) { - $res.= "\n/Contents ".$o['info']['contents'][0]." 0 R"; - } else if ($count>1) { - $res.= "\n/Contents [\n"; - - // reverse the page contents so added objects are below normal content - //foreach (array_reverse($o['info']['contents']) as $cId) { - // Back to normal now that I've got transparency working --Benj - foreach ($o['info']['contents'] as $cId) { - $res.= "$cId 0 R\n"; - } - $res.= "]"; - } - - $res.= "\n>>\nendobj"; - return $res; - } - } - - - /** - * the contents objects hold all of the content which appears on pages - */ - protected function o_contents($id, $action, $options = '') { - if ($action !== 'new') { - $o = & $this->objects[$id]; - } - - switch ($action) { - case 'new': - $this->objects[$id] = array('t'=>'contents', 'c'=>'', 'info'=>array()); - if (mb_strlen($options, '8bit') && intval($options)) { - // then this contents is the primary for a page - $this->objects[$id]['onPage'] = $options; - } else if ($options === 'raw') { - // then this page contains some other type of system object - $this->objects[$id]['raw'] = 1; - } - break; - - case 'add': - // add more options to the decleration - foreach ($options as $k=>$v) { - $o['info'][$k] = $v; - } - - case 'out': - $tmp = $o['c']; - $res = "\n$id 0 obj\n"; - - if (isset($this->objects[$id]['raw'])) { - $res.= $tmp; - } else { - $res.= "<<"; - if ($this->compressionReady && $this->options['compression']) { - // then implement ZLIB based compression on this content stream - $res.= " /Filter /FlateDecode"; - $tmp = gzcompress($tmp, 6); - } - - if ($this->encrypted) { - $this->encryptInit($id); - $tmp = $this->ARC4($tmp); - } - - foreach($o['info'] as $k=>$v) { - $res.= "\n/$k $v"; - } - - $res.= "\n/Length ".mb_strlen($tmp, '8bit') ." >>\nstream\n$tmp\nendstream"; - } - - $res.= "\nendobj"; - return $res; - } - } - - protected function o_embedjs($id, $action, $code = '') { - if ($action !== 'new') { - $o = & $this->objects[$id]; - } - - switch ($action) { - case 'new': - $this->objects[$id] = array('t'=>'embedjs', 'info'=>array( - 'Names' => '[(EmbeddedJS) '.($id+1).' 0 R]' - )); - break; - - case 'out': - $res = "\n$id 0 obj\n<< "; - foreach($o['info'] as $k=>$v) { - $res.= "\n/$k $v"; - } - $res.= "\n>>\nendobj"; - return $res; - } - } - - protected function o_javascript($id, $action, $code = '') { - if ($action !== 'new') { - $o = & $this->objects[$id]; - } - - switch ($action) { - case 'new': - $this->objects[$id] = array('t'=>'javascript', 'info'=>array( - 'S' => '/JavaScript', - 'JS' => '('.$this->filterText($code).')', - )); - break; - - case 'out': - $res = "\n$id 0 obj\n<< "; - foreach($o['info'] as $k=>$v) { - $res.= "\n/$k $v"; - } - $res.= "\n>>\nendobj"; - return $res; - } - } - - /** - * an image object, will be an XObject in the document, includes description and data - */ - protected function o_image($id, $action, $options = '') { - if ($action !== 'new') { - $o = & $this->objects[$id]; - } - - switch ($action) { - case 'new': - // make the new object - $this->objects[$id] = array('t'=>'image', 'data'=>&$options['data'], 'info'=>array()); - - $info =& $this->objects[$id]['info']; - - $info['Type'] = '/XObject'; - $info['Subtype'] = '/Image'; - $info['Width'] = $options['iw']; - $info['Height'] = $options['ih']; - - if (isset($options['masked']) && $options['masked']) { - $info['SMask'] = ($this->numObj-1).' 0 R'; - } - - if (!isset($options['type']) || $options['type'] === 'jpg') { - if (!isset($options['channels'])) { - $options['channels'] = 3; - } - - switch ($options['channels']) { - case 1: $info['ColorSpace'] = '/DeviceGray'; break; - case 4: $info['ColorSpace'] = '/DeviceCMYK'; break; - default: $info['ColorSpace'] = '/DeviceRGB'; break; - } - - if ($info['ColorSpace'] === '/DeviceCMYK') { - $info['Decode'] = '[1 0 1 0 1 0 1 0]'; - } - - $info['Filter'] = '/DCTDecode'; - $info['BitsPerComponent'] = 8; - } - - else if ($options['type'] === 'png') { - $info['Filter'] = '/FlateDecode'; - $info['DecodeParms'] = '<< /Predictor 15 /Colors '.$options['ncolor'].' /Columns '.$options['iw'].' /BitsPerComponent '.$options['bitsPerComponent'].'>>'; - - if ($options['isMask']) { - $info['ColorSpace'] = '/DeviceGray'; - } - else { - if (mb_strlen($options['pdata'], '8bit')) { - $tmp = ' [ /Indexed /DeviceRGB '.(mb_strlen($options['pdata'], '8bit') /3-1) .' '; - $this->numObj++; - $this->o_contents($this->numObj, 'new'); - $this->objects[$this->numObj]['c'] = $options['pdata']; - $tmp.= $this->numObj.' 0 R'; - $tmp.= ' ]'; - $info['ColorSpace'] = $tmp; - - if (isset($options['transparency'])) { - $transparency = $options['transparency']; - switch ($transparency['type']) { - case 'indexed': - $tmp = ' [ '.$transparency['data'].' '.$transparency['data'].'] '; - $info['Mask'] = $tmp; - break; - - case 'color-key': - $tmp = ' [ '. - $transparency['r'] . ' ' . $transparency['r'] . - $transparency['g'] . ' ' . $transparency['g'] . - $transparency['b'] . ' ' . $transparency['b'] . - ' ] '; - $info['Mask'] = $tmp; - break; - } - } - } else { - if (isset($options['transparency'])) { - $transparency = $options['transparency']; - - switch ($transparency['type']) { - case 'indexed': - $tmp = ' [ '.$transparency['data'].' '.$transparency['data'].'] '; - $info['Mask'] = $tmp; - break; - - case 'color-key': - $tmp = ' [ '. - $transparency['r'] . ' ' . $transparency['r'] . ' ' . - $transparency['g'] . ' ' . $transparency['g'] . ' ' . - $transparency['b'] . ' ' . $transparency['b'] . - ' ] '; - $info['Mask'] = $tmp; - break; - } - } - $info['ColorSpace'] = '/'.$options['color']; - } - } - - $info['BitsPerComponent'] = $options['bitsPerComponent']; - } - - // assign it a place in the named resource dictionary as an external object, according to - // the label passed in with it. - $this->o_pages($this->currentNode, 'xObject', array('label'=>$options['label'], 'objNum'=>$id)); - - // also make sure that we have the right procset object for it. - $this->o_procset($this->procsetObjectId, 'add', 'ImageC'); - break; - - case 'out': - $tmp = &$o['data']; - $res = "\n$id 0 obj\n<<"; - - foreach($o['info'] as $k=>$v) { - $res.= "\n/$k $v"; - } - - if ($this->encrypted) { - $this->encryptInit($id); - $tmp = $this->ARC4($tmp); - } - - $res.= "\n/Length ".mb_strlen($tmp, '8bit') .">>\nstream\n$tmp\nendstream\nendobj"; - - return $res; - } - } - - - /** - * graphics state object - */ - protected function o_extGState($id, $action, $options = "") { - static $valid_params = array("LW", "LC", "LC", "LJ", "ML", - "D", "RI", "OP", "op", "OPM", - "Font", "BG", "BG2", "UCR", - "TR", "TR2", "HT", "FL", - "SM", "SA", "BM", "SMask", - "CA", "ca", "AIS", "TK"); - - if ($action !== "new") { - $o = & $this->objects[$id]; - } - - switch ($action) { - case "new": - $this->objects[$id] = array('t' => 'extGState', 'info' => $options); - - // Tell the pages about the new resource - $this->numStates++; - $this->o_pages($this->currentNode, 'extGState', array("objNum" => $id, "stateNum" => $this->numStates)); - break; - - case "out": - $res = "\n$id 0 obj\n<< /Type /ExtGState\n"; - - foreach ($o["info"] as $k => $v) { - if ( !in_array($k, $valid_params)) - continue; - $res.= "/$k $v\n"; - } - - $res.= ">>\nendobj"; - return $res; - } - } - - - /** - * encryption object. - */ - protected function o_encryption($id, $action, $options = '') { - if ($action !== 'new') { - $o = & $this->objects[$id]; - } - - switch ($action) { - case 'new': - // make the new object - $this->objects[$id] = array('t'=>'encryption', 'info'=>$options); - $this->arc4_objnum = $id; - - // figure out the additional paramaters required - $pad = chr(0x28) .chr(0xBF) .chr(0x4E) .chr(0x5E) .chr(0x4E) .chr(0x75) .chr(0x8A) .chr(0x41) - .chr(0x64) .chr(0x00) .chr(0x4E) .chr(0x56) .chr(0xFF) .chr(0xFA) .chr(0x01) .chr(0x08) - .chr(0x2E) .chr(0x2E) .chr(0x00) .chr(0xB6) .chr(0xD0) .chr(0x68) .chr(0x3E) .chr(0x80) - .chr(0x2F) .chr(0x0C) .chr(0xA9) .chr(0xFE) .chr(0x64) .chr(0x53) .chr(0x69) .chr(0x7A); - - $len = mb_strlen($options['owner'], '8bit'); - - if ($len>32) { - $owner = substr($options['owner'], 0, 32); - } else if ($len<32) { - $owner = $options['owner'].substr($pad, 0, 32-$len); - } else { - $owner = $options['owner']; - } - - $len = mb_strlen($options['user'], '8bit'); - if ($len>32) { - $user = substr($options['user'], 0, 32); - } else if ($len<32) { - $user = $options['user'].substr($pad, 0, 32-$len); - } else { - $user = $options['user']; - } - - $tmp = $this->md5_16($owner); - $okey = substr($tmp, 0, 5); - $this->ARC4_init($okey); - $ovalue = $this->ARC4($user); - $this->objects[$id]['info']['O'] = $ovalue; - - // now make the u value, phew. - $tmp = $this->md5_16($user.$ovalue.chr($options['p']) .chr(255) .chr(255) .chr(255) .$this->fileIdentifier); - - $ukey = substr($tmp, 0, 5); - $this->ARC4_init($ukey); - $this->encryptionKey = $ukey; - $this->encrypted = 1; - $uvalue = $this->ARC4($pad); - $this->objects[$id]['info']['U'] = $uvalue; - $this->encryptionKey = $ukey; - // initialize the arc4 array - break; - - case 'out': - $res = "\n$id 0 obj\n<<"; - $res.= "\n/Filter /Standard"; - $res.= "\n/V 1"; - $res.= "\n/R 2"; - $res.= "\n/O (".$this->filterText($o['info']['O'], true, false) .')'; - $res.= "\n/U (".$this->filterText($o['info']['U'], true, false) .')'; - // and the p-value needs to be converted to account for the twos-complement approach - $o['info']['p'] = (($o['info']['p']^255) +1) *-1; - $res.= "\n/P ".($o['info']['p']); - $res.= "\n>>\nendobj"; - return $res; - } - } - - - /** - * ARC4 functions - * A series of function to implement ARC4 encoding in PHP - */ - - /** - * calculate the 16 byte version of the 128 bit md5 digest of the string - */ - function md5_16($string) { - $tmp = md5($string); - $out = ''; - for ($i = 0;$i <= 30;$i = $i+2) { - $out.= chr(hexdec(substr($tmp, $i, 2))); - } - return $out; - } - - - /** - * initialize the encryption for processing a particular object - */ - function encryptInit($id) { - $tmp = $this->encryptionKey; - $hex = dechex($id); - if (mb_strlen($hex, '8bit') <6) { - $hex = substr('000000', 0, 6-mb_strlen($hex, '8bit')) .$hex; - } - $tmp.= chr(hexdec(substr($hex, 4, 2))) .chr(hexdec(substr($hex, 2, 2))) .chr(hexdec(substr($hex, 0, 2))) .chr(0) .chr(0); - $key = $this->md5_16($tmp); - $this->ARC4_init(substr($key, 0, 10)); - } - - - /** - * initialize the ARC4 encryption - */ - function ARC4_init($key = '') { - $this->arc4 = ''; - - // setup the control array - if (mb_strlen($key, '8bit') == 0) { - return; - } - - $k = ''; - while (mb_strlen($k, '8bit') <256) { - $k.= $key; - } - - $k = substr($k, 0, 256); - for ($i = 0;$i<256;$i++) { - $this->arc4.= chr($i); - } - - $j = 0; - - for ($i = 0;$i<256;$i++) { - $t = $this->arc4[$i]; - $j = ($j + ord($t) + ord($k[$i])) %256; - $this->arc4[$i] = $this->arc4[$j]; - $this->arc4[$j] = $t; - } - } - - - /** - * ARC4 encrypt a text string - */ - function ARC4($text) { - $len = mb_strlen($text, '8bit'); - $a = 0; - $b = 0; - $c = $this->arc4; - $out = ''; - for ($i = 0;$i<$len;$i++) { - $a = ($a+1) %256; - $t = $c[$a]; - $b = ($b+ord($t)) %256; - $c[$a] = $c[$b]; - $c[$b] = $t; - $k = ord($c[(ord($c[$a]) +ord($c[$b])) %256]); - $out.= chr(ord($text[$i]) ^ $k); - } - return $out; - } - - - /** - * functions which can be called to adjust or add to the document - */ - - /** - * add a link in the document to an external URL - */ - function addLink($url, $x0, $y0, $x1, $y1) { - $this->numObj++; - $info = array('type'=>'link', 'url'=>$url, 'rect'=>array($x0, $y0, $x1, $y1)); - $this->o_annotation($this->numObj, 'new', $info); - } - - - /** - * add a link in the document to an internal destination (ie. within the document) - */ - function addInternalLink($label, $x0, $y0, $x1, $y1) { - $this->numObj++; - $info = array('type'=>'ilink', 'label'=>$label, 'rect'=>array($x0, $y0, $x1, $y1)); - $this->o_annotation($this->numObj, 'new', $info); - } - - - /** - * set the encryption of the document - * can be used to turn it on and/or set the passwords which it will have. - * also the functions that the user will have are set here, such as print, modify, add - */ - function setEncryption($userPass = '', $ownerPass = '', $pc = array()) { - $p = bindec("11000000"); - - $options = array('print'=>4, 'modify'=>8, 'copy'=>16, 'add'=>32); - - foreach($pc as $k=>$v) { - if ($v && isset($options[$k])) { - $p+= $options[$k]; - } else if (isset($options[$v])) { - $p+= $options[$v]; - } - } - - // implement encryption on the document - if ($this->arc4_objnum == 0) { - // then the block does not exist already, add it. - $this->numObj++; - if (mb_strlen($ownerPass) == 0) { - $ownerPass = $userPass; - } - - $this->o_encryption($this->numObj, 'new', array('user'=>$userPass, 'owner'=>$ownerPass, 'p'=>$p)); - } - } - - - /** - * should be used for internal checks, not implemented as yet - */ - function checkAllHere() { - } - - - /** - * return the pdf stream as a string returned from the function - */ - function output($debug = false) { - if ($debug) { - // turn compression off - $this->options['compression'] = false; - } - - if ($this->javascript) { - $this->numObj++; - - $js_id = $this->numObj; - $this->o_embedjs($js_id, 'new'); - $this->o_javascript(++$this->numObj, 'new', $this->javascript); - - $id = $this->catalogId; - - $this->o_catalog($id, 'javascript', $js_id); - } - - if ($this->arc4_objnum) { - $this->ARC4_init($this->encryptionKey); - } - - $this->checkAllHere(); - - - $xref = array(); - $content = '%PDF-1.3'; - $pos = mb_strlen($content, '8bit'); - - foreach($this->objects as $k=>$v) { - $tmp = 'o_'.$v['t']; - $cont = $this->$tmp($k, 'out'); - $content.= $cont; - $xref[] = $pos; - $pos+= mb_strlen($cont, '8bit'); - } - - $content.= "\nxref\n0 ".(count($xref) +1) ."\n0000000000 65535 f \n"; - - foreach($xref as $p) { - $content.= str_pad($p, 10, "0", STR_PAD_LEFT) . " 00000 n \n"; - } - - $content.= "trailer\n<<\n/Size ".(count($xref) +1) ."\n/Root 1 0 R\n/Info $this->infoObject 0 R\n"; - - // if encryption has been applied to this document then add the marker for this dictionary - if ($this->arc4_objnum > 0) { - $content.= "/Encrypt $this->arc4_objnum 0 R\n"; - } - - if (mb_strlen($this->fileIdentifier, '8bit')) { - $content.= "/ID[<$this->fileIdentifier><$this->fileIdentifier>]\n"; - } - - $content.= ">>\nstartxref\n$pos\n%%EOF\n"; - - return $content; - } - - /** - * intialize a new document - * if this is called on an existing document results may be unpredictable, but the existing document would be lost at minimum - * this function is called automatically by the constructor function - * - * @access private - */ - function newDocument($pageSize = array(0, 0, 612, 792)) { - $this->numObj = 0; - $this->objects = array(); - - $this->numObj++; - $this->o_catalog($this->numObj, 'new'); - - $this->numObj++; - $this->o_outlines($this->numObj, 'new'); - - $this->numObj++; - $this->o_pages($this->numObj, 'new'); - - $this->o_pages($this->numObj, 'mediaBox', $pageSize); - $this->currentNode = 3; - - $this->numObj++; - $this->o_procset($this->numObj, 'new'); - - $this->numObj++; - $this->o_info($this->numObj, 'new'); - - $this->numObj++; - $this->o_page($this->numObj, 'new'); - - // need to store the first page id as there is no way to get it to the user during - // startup - $this->firstPageId = $this->currentContents; - } - - /** - * open the font file and return a php structure containing it. - * first check if this one has been done before and saved in a form more suited to php - * note that if a php serialized version does not exist it will try and make one, but will - * require write access to the directory to do it... it is MUCH faster to have these serialized - * files. - * - * @access private - */ - function openFont($font) { - // assume that $font contains the path and file but not the extension - $pos = strrpos($font, '/'); - - if ($pos === false) { - $dir = './'; - $name = $font; - } else { - $dir = substr($font, 0, $pos+1); - $name = substr($font, $pos+1); - } - - $fontcache = $this->fontcache; - if ($fontcache == '') { - $fontcache = $dir; - } - - //$name filename without folder and extension of font metrics - //$dir folder of font metrics - //$fontcache folder of runtime created php serialized version of font metrics. - // If this is not given, the same folder as the font metrics will be used. - // Storing and reusing serialized versions improves speed much - - $this->addMessage("openFont: $font - $name"); - - $metrics_name = $name . ($this->isUnicode ? '.ufm' : '.afm'); - - // Core fonts don't currently work with composite fonts (for Unicode support). - // The .ufm files have been removed so we need to check whether or not to use the - // .ufm or .afm. - if ($this->isUnicode && !file_exists("$dir/$metrics_name")) { $metrics_name = $name . '.afm'; } - - $cache_name = "$metrics_name.php"; - $this->addMessage("metrics: $metrics_name, cache: $cache_name"); - if (file_exists($fontcache . $cache_name)) { - $this->addMessage("openFont: php file exists $fontcache$cache_name"); - $this->fonts[$font] = require($fontcache . $cache_name); - - if (!isset($this->fonts[$font]['_version_']) || $this->fonts[$font]['_version_'] != $this->fontcacheVersion) { - // if the font file is old, then clear it out and prepare for re-creation - $this->addMessage('openFont: clear out, make way for new version.'); - $this->fonts[$font] = null; - unset($this->fonts[$font]); - } - } - else { - $old_cache_name = "php_$metrics_name"; - if (file_exists($fontcache . $old_cache_name)) { - $this->addMessage("openFont: php file doesn't exist $fontcache$cache_name, creating it from the old format"); - $old_cache = file_get_contents($fontcache . $old_cache_name); - file_put_contents($fontcache . $cache_name, '<?php return ' . $old_cache . ';'); - return $this->openFont($font); - } - } - - if (!isset($this->fonts[$font]) && file_exists($dir . $metrics_name)) { - // then rebuild the php_<font>.afm file from the <font>.afm file - $this->addMessage("openFont: build php file from $dir$metrics_name"); - $data = array(); - - // 20 => 'space' - $data['codeToName'] = array(); - - // Since we're not going to enable Unicode for the core fonts we need to use a font-based - // setting for Unicode support rather than a global setting. - $data['isUnicode'] = (strtolower(substr($metrics_name, -3)) !== 'afm'); - - $cidtogid = ''; - if ($data['isUnicode']) { - $cidtogid = str_pad('', 256*256*2, "\x00"); - } - - $file = file($dir . $metrics_name); - - foreach ($file as $rowA) { - $row = trim($rowA); - $pos = strpos($row, ' '); - - if ($pos) { - // then there must be some keyword - $key = substr($row, 0, $pos); - switch ($key) { - case 'FontName': - case 'FullName': - case 'FamilyName': - case 'Weight': - case 'ItalicAngle': - case 'IsFixedPitch': - case 'CharacterSet': - case 'UnderlinePosition': - case 'UnderlineThickness': - case 'Version': - case 'EncodingScheme': - case 'CapHeight': - case 'XHeight': - case 'Ascender': - case 'Descender': - case 'StdHW': - case 'StdVW': - case 'StartCharMetrics': - case 'FontHeightOffset': // OAR - Added so we can offset the height calculation of a Windows font. Otherwise it's too big. - $data[$key] = trim(substr($row, $pos)); - break; - - case 'FontBBox': - $data[$key] = explode(' ', trim(substr($row, $pos))); - break; - - //C 39 ; WX 222 ; N quoteright ; B 53 463 157 718 ; - case 'C': // Found in AFM files - $bits = explode(';', trim($row)); - $dtmp = array(); - - foreach($bits as $bit) { - $bits2 = explode(' ', trim($bit)); - if (mb_strlen($bits2[0], '8bit') == 0) continue; - - if (count($bits2) >2) { - $dtmp[$bits2[0]] = array(); - for ($i = 1;$i<count($bits2);$i++) { - $dtmp[$bits2[0]][] = $bits2[$i]; - } - } else if (count($bits2) == 2) { - $dtmp[$bits2[0]] = $bits2[1]; - } - } - - $c = (int)$dtmp['C']; - $n = $dtmp['N']; - $width = floatval($dtmp['WX']); - - if ($c >= 0) { - if ($c != hexdec($n)) { - $data['codeToName'][$c] = $n; - } - $data['C'][$c] = $width; - } else { - $data['C'][$n] = $width; - } - - if (!isset($data['MissingWidth']) && $c == -1 && $n === '.notdef') { - $data['MissingWidth'] = $width; - } - - break; - - // U 827 ; WX 0 ; N squaresubnosp ; G 675 ; - case 'U': // Found in UFM files - if (!$data['isUnicode']) break; - - $bits = explode(';', trim($row)); - $dtmp = array(); - - foreach($bits as $bit) { - $bits2 = explode(' ', trim($bit)); - if (mb_strlen($bits2[0], '8bit') === 0) continue; - - if (count($bits2) >2) { - $dtmp[$bits2[0]] = array(); - for ($i = 1;$i<count($bits2);$i++) { - $dtmp[$bits2[0]][] = $bits2[$i]; - } - } else if (count($bits2) == 2) { - $dtmp[$bits2[0]] = $bits2[1]; - } - } - - $c = (int)$dtmp['U']; - $n = $dtmp['N']; - $glyph = $dtmp['G']; - $width = floatval($dtmp['WX']); - - if ($c >= 0) { - // Set values in CID to GID map - if ($c >= 0 && $c < 0xFFFF && $glyph) { - $cidtogid[$c*2] = chr($glyph >> 8); - $cidtogid[$c*2 + 1] = chr($glyph & 0xFF); - } - - if ($c != hexdec($n)) { - $data['codeToName'][$c] = $n; - } - $data['C'][$c] = $width; - } else { - $data['C'][$n] = $width; - } - - if (!isset($data['MissingWidth']) && $c == -1 && $n === '.notdef') { - $data['MissingWidth'] = $width; - } - - break; - - case 'KPX': - break; // don't include them as they are not used yet - //KPX Adieresis yacute -40 - $bits = explode(' ', trim($row)); - $data['KPX'][$bits[1]][$bits[2]] = $bits[3]; - break; - } - } - } - - // echo $cidtogid; die("CIDtoGID Displayed!"); - if ($this->compressionReady && $this->options['compression']) { - // then implement ZLIB based compression on CIDtoGID string - $data['CIDtoGID_Compressed'] = true; - $cidtogid = gzcompress($cidtogid, 6); - } - $data['CIDtoGID'] = base64_encode($cidtogid); - $data['_version_'] = $this->fontcacheVersion; - $this->fonts[$font] = $data; - - //Because of potential trouble with php safe mode, expect that the folder already exists. - //If not existing, this will hit performance because of missing cached results. - if ( is_dir(substr($fontcache,0,-1)) && is_writable(substr($fontcache,0,-1)) ) { - file_put_contents($fontcache . $cache_name, '<?php return ' . var_export($data, true) . ';'); - } - $data = null; - } - - if (!isset($this->fonts[$font])) { - $this->addMessage("openFont: no font file found for $font. Do you need to run load_font.php?"); - //echo 'Font not Found '.$font; - } - - //pre_r($this->messages); - } - - /** - * if the font is not loaded then load it and make the required object - * else just make it the current font - * the encoding array can contain 'encoding'=> 'none','WinAnsiEncoding','MacRomanEncoding' or 'MacExpertEncoding' - * note that encoding='none' will need to be used for symbolic fonts - * and 'differences' => an array of mappings between numbers 0->255 and character names. - * - */ - function selectFont($fontName, $encoding = '', $set = true) { - $ext = substr($fontName, -4); - if ($ext === '.afm' || $ext === '.ufm') { - $fontName = substr($fontName, 0, mb_strlen($fontName)-4); - } - - if (!isset($this->fonts[$fontName])) { - $this->addMessage("selectFont: selecting - $fontName - $encoding, $set"); - - // load the file - $this->openFont($fontName); - - if (isset($this->fonts[$fontName])) { - $this->numObj++; - $this->numFonts++; - - //$this->numFonts = md5($fontName); - $pos = strrpos($fontName, '/'); - // $dir = substr($fontName,0,$pos+1); - $name = substr($fontName, $pos+1); - $options = array('name' => $name, 'fontFileName' => $fontName); - - if (is_array($encoding)) { - // then encoding and differences might be set - if (isset($encoding['encoding'])) { - $options['encoding'] = $encoding['encoding']; - } - - if (isset($encoding['differences'])) { - $options['differences'] = $encoding['differences']; - } - } else if (mb_strlen($encoding, '8bit')) { - // then perhaps only the encoding has been set - $options['encoding'] = $encoding; - } - - $fontObj = $this->numObj; - $this->o_font($this->numObj, 'new', $options); - $this->fonts[$fontName]['fontNum'] = $this->numFonts; - - // if this is a '.afm' font, and there is a '.pfa' file to go with it ( as there - // should be for all non-basic fonts), then load it into an object and put the - // references into the font object - $basefile = $fontName; - if (file_exists($basefile.'.pfb')) { - $fbtype = 'pfb'; - } else if (file_exists($basefile.'.ttf')) { - $fbtype = 'ttf'; - } else { - $fbtype = ''; - } - - $fbfile = $basefile.'.'.$fbtype; - - // $pfbfile = substr($fontName,0,strlen($fontName)-4).'.pfb'; - // $ttffile = substr($fontName,0,strlen($fontName)-4).'.ttf'; - $this->addMessage('selectFont: checking for - '.$fbfile); - - // OAR - I don't understand this old check - // if (substr($fontName, -4) === '.afm' && strlen($fbtype)) { - if (mb_strlen($fbtype, '8bit')) { - $adobeFontName = $this->fonts[$fontName]['FontName']; - // $fontObj = $this->numObj; - $this->addMessage('selectFont: adding font file - '.$fbfile.' - '.$adobeFontName); - - // find the array of font widths, and put that into an object. - $firstChar = -1; - $lastChar = 0; - $widths = array(); - $cid_widths = array(); - - foreach ($this->fonts[$fontName]['C'] as $num => $d) { - if (intval($num) >0 || $num == '0') { - if (!$this->fonts[$fontName]['isUnicode']) { - // With Unicode, widths array isn't used - if ($lastChar>0 && $num>$lastChar+1) { - for ($i = $lastChar+1;$i<$num;$i++) { - $widths[] = 0; - } - } - } - - $widths[] = $d; - - if ($this->fonts[$fontName]['isUnicode']) { - $cid_widths[$num] = $d; - } - - if ($firstChar == -1) { - $firstChar = $num; - } - - $lastChar = $num; - } - } - - // also need to adjust the widths for the differences array - if (isset($options['differences'])) { - foreach($options['differences'] as $charNum => $charName) { - if ($charNum > $lastChar) { - if (!$this->fonts[$fontName]['isUnicode']) { - // With Unicode, widths array isn't used - for ($i = $lastChar + 1; $i <= $charNum; $i++) { - $widths[] = 0; - } - } - - $lastChar = $charNum; - } - - if (isset($this->fonts[$fontName]['C'][$charName])) { - $widths[$charNum-$firstChar] = $this->fonts[$fontName]['C'][$charName]; - if ($this->fonts[$fontName]['isUnicode']) { - $cid_widths[$charName] = $this->fonts[$fontName]['C'][$charName]; - } - } - } - } - - if ($this->fonts[$fontName]['isUnicode']) { - $this->fonts[$fontName]['CIDWidths'] = $cid_widths; - } - - $this->addMessage('selectFont: FirstChar = '.$firstChar); - $this->addMessage('selectFont: LastChar = '.$lastChar); - - $widthid = -1; - - if (!$this->fonts[$fontName]['isUnicode']) { - // With Unicode, widths array isn't used - - $this->numObj++; - $this->o_contents($this->numObj, 'new', 'raw'); - $this->objects[$this->numObj]['c'].= '['; - - foreach($widths as $width) { - $this->objects[$this->numObj]['c'].= ' '.$width; - } - - $this->objects[$this->numObj]['c'].= ' ]'; - $widthid = $this->numObj; - } - - $missing_width = 500; - $stemV = 70; - - if (isset($this->fonts[$fontName]['MissingWidth'])) { - $missing_width = $this->fonts[$fontName]['MissingWidth']; - } - if (isset($this->fonts[$fontName]['StdVW'])) { - $stemV = $this->fonts[$fontName]['StdVW']; - } elseif (isset($this->fonts[$fontName]['Weight']) && preg_match('!(bold|black)!i', $this->fonts[$fontName]['Weight'])) { - $stemV = 120; - } - - // load the pfb file, and put that into an object too. - // note that pdf supports only binary format type 1 font files, though there is a - // simple utility to convert them from pfa to pfb. - $data = file_get_contents($fbfile); - - // create the font descriptor - $this->numObj++; - $fontDescriptorId = $this->numObj; - - $this->numObj++; - $pfbid = $this->numObj; - - // determine flags (more than a little flakey, hopefully will not matter much) - $flags = 0; - - if ($this->fonts[$fontName]['ItalicAngle'] != 0) { - $flags+= pow(2, 6); - } - - if ($this->fonts[$fontName]['IsFixedPitch'] === 'true') { - $flags+= 1; - } - - $flags+= pow(2, 5); // assume non-sybolic - $list = array( - 'Ascent' => 'Ascender', - 'CapHeight' => 'CapHeight', - 'MissingWidth' => 'MissingWidth', - 'Descent' => 'Descender', - 'FontBBox' => 'FontBBox', - 'ItalicAngle' => 'ItalicAngle' - ); - $fdopt = array( - 'Flags' => $flags, - 'FontName' => $adobeFontName, - 'StemV' => $stemV - ); - - foreach($list as $k => $v) { - if (isset($this->fonts[$fontName][$v])) { - $fdopt[$k] = $this->fonts[$fontName][$v]; - } - } - - if ($fbtype === 'pfb') { - $fdopt['FontFile'] = $pfbid; - } else if ($fbtype === 'ttf') { - $fdopt['FontFile2'] = $pfbid; - } - - $this->o_fontDescriptor($fontDescriptorId, 'new', $fdopt); - - // embed the font program - $this->o_contents($this->numObj, 'new'); - $this->objects[$pfbid]['c'].= $data; - - // determine the cruicial lengths within this file - if ($fbtype === 'pfb') { - $l1 = strpos($data, 'eexec') +6; - $l2 = strpos($data, '00000000') -$l1; - $l3 = mb_strlen($data, '8bit') -$l2-$l1; - $this->o_contents($this->numObj, 'add', array('Length1' => $l1, 'Length2' => $l2, 'Length3' => $l3)); - } else if ($fbtype == 'ttf') { - $l1 = mb_strlen($data, '8bit'); - $this->o_contents($this->numObj, 'add', array('Length1' => $l1)); - } - - // tell the font object about all this new stuff - $tmp = array( - 'BaseFont' => $adobeFontName, - 'MissingWidth' => $missing_width, - 'Widths' => $widthid, - 'FirstChar' => $firstChar, - 'LastChar' => $lastChar, - 'FontDescriptor' => $fontDescriptorId, - ); - - if ($fbtype === 'ttf') { - $tmp['SubType'] = 'TrueType'; - } - - $this->addMessage('adding extra info to font.('.$fontObj.')'); - - foreach($tmp as $fk => $fv) { - $this->addMessage($fk." : ".$fv); - } - - $this->o_font($fontObj, 'add', $tmp); - } else { - $this->addMessage('selectFont: pfb or ttf file not found, ok if this is one of the 14 standard fonts'); - } - - // also set the differences here, note that this means that these will take effect only the - //first time that a font is selected, else they are ignored - if (isset($options['differences'])) { - $this->fonts[$fontName]['differences'] = $options['differences']; - } - } - } - - if ($set && isset($this->fonts[$fontName])) { - // so if for some reason the font was not set in the last one then it will not be selected - $this->currentBaseFont = $fontName; - - // the next lines mean that if a new font is selected, then the current text state will be - // applied to it as well. - $this->currentFont = $this->currentBaseFont; - $this->currentFontNum = $this->fonts[$this->currentFont]['fontNum']; - - //$this->setCurrentFont(); - } - - return $this->currentFontNum; - //return $this->numObj; - } - - /** - * sets up the current font, based on the font families, and the current text state - * note that this system is quite flexible, a bold-italic font can be completely different to a - * italic-bold font, and even bold-bold will have to be defined within the family to have meaning - * This function is to be called whenever the currentTextState is changed, it will update - * the currentFont setting to whatever the appropriatte family one is. - * If the user calls selectFont themselves then that will reset the currentBaseFont, and the currentFont - * This function will change the currentFont to whatever it should be, but will not change the - * currentBaseFont. - * - * @access private - */ - function setCurrentFont() { - // if (strlen($this->currentBaseFont) == 0){ - // // then assume an initial font - // $this->selectFont($this->defaultFont); - // } - // $cf = substr($this->currentBaseFont,strrpos($this->currentBaseFont,'/')+1); - // if (strlen($this->currentTextState) - // && isset($this->fontFamilies[$cf]) - // && isset($this->fontFamilies[$cf][$this->currentTextState])){ - // // then we are in some state or another - // // and this font has a family, and the current setting exists within it - // // select the font, then return it - // $nf = substr($this->currentBaseFont,0,strrpos($this->currentBaseFont,'/')+1).$this->fontFamilies[$cf][$this->currentTextState]; - // $this->selectFont($nf,'',0); - // $this->currentFont = $nf; - // $this->currentFontNum = $this->fonts[$nf]['fontNum']; - // } else { - // // the this font must not have the right family member for the current state - // // simply assume the base font - $this->currentFont = $this->currentBaseFont; - $this->currentFontNum = $this->fonts[$this->currentFont]['fontNum']; - // } - } - - - /** - * function for the user to find out what the ID is of the first page that was created during - * startup - useful if they wish to add something to it later. - */ - function getFirstPageId() { - return $this->firstPageId; - } - - - /** - * add content to the currently active object - * - * @access private - */ - function addContent($content) { - $this->objects[$this->currentContents]['c'].= $content; - } - - - /** - * sets the colour for fill operations - */ - function setColor($color, $force = false) { - $new_color = array($color[0], $color[1], $color[2], isset($color[3]) ? $color[3] : null); - - if (!$force && $this->currentColour == $new_color) return; - - if (isset($new_color[3])) { - $this->currentColour = $new_color; - $this->objects[$this->currentContents]['c'] .= vsprintf("\n%.3F %.3F %.3F %.3F k", $this->currentColour); - } - - elseif (isset($new_color[2])) { - $this->currentColour = $new_color; - $this->objects[$this->currentContents]['c'] .= vsprintf("\n%.3F %.3F %.3F rg", $this->currentColour); - } - } - - - /** - * sets the colour for stroke operations - */ - function setStrokeColor($color, $force = false) { - $new_color = array($color[0], $color[1], $color[2], isset($color[3]) ? $color[3] : null); - - if (!$force && $this->currentStrokeColour == $new_color) return; - - if (isset($new_color[3])) { - $this->currentStrokeColour = $new_color; - $this->objects[$this->currentContents]['c'] .= vsprintf("\n%.3F %.3F %.3F %.3F K", $this->currentStrokeColour); - } - - elseif (isset($new_color[2])) { - $this->currentStrokeColour = $new_color; - $this->objects[$this->currentContents]['c'] .= vsprintf("\n%.3F %.3F %.3F RG", $this->currentStrokeColour); - } - } - - - /** - * Set the graphics state for compositions - */ - function setGraphicsState($parameters) { - // Create a new graphics state object - // FIXME: should actually keep track of states that have already been created... - $this->numObj++; - $this->o_extGState($this->numObj, 'new', $parameters); - $this->objects[ $this->currentContents ]['c'].= "\n/GS$this->numStates gs"; - } - - - /** - * Set current blend mode & opacity for lines. - * - * Valid blend modes are: - * - * Normal, Multiply, Screen, Overlay, Darken, Lighten, - * ColorDogde, ColorBurn, HardLight, SoftLight, Difference, - * Exclusion - * - * @param string $mode the blend mode to use - * @param float $opacity 0.0 fully transparent, 1.0 fully opaque - */ - function setLineTransparency($mode, $opacity) { - static $blend_modes = array("Normal", "Multiply", "Screen", - "Overlay", "Darken", "Lighten", - "ColorDogde", "ColorBurn", "HardLight", - "SoftLight", "Difference", "Exclusion"); - - if ( !in_array($mode, $blend_modes) ) - $mode = "Normal"; - - // Only create a new graphics state if required - if ( $mode === $this->currentLineTransparency["mode"] && - $opacity == $this->currentLineTransparency["opacity"] ) - return; - - $this->currentLineTransparency["mode"] = $mode; - $this->currentLineTransparency["opacity"] = $opacity; - - $options = array("BM" => "/$mode", - "CA" => (float)$opacity); - - $this->setGraphicsState($options); - } - - /** - * Set current blend mode & opacity for filled objects. - * - * Valid blend modes are: - * - * Normal, Multiply, Screen, Overlay, Darken, Lighten, - * ColorDogde, ColorBurn, HardLight, SoftLight, Difference, - * Exclusion - * - * @param string $mode the blend mode to use - * @param float $opacity 0.0 fully transparent, 1.0 fully opaque - */ - function setFillTransparency($mode, $opacity) { - static $blend_modes = array("Normal", "Multiply", "Screen", - "Overlay", "Darken", "Lighten", - "ColorDogde", "ColorBurn", "HardLight", - "SoftLight", "Difference", "Exclusion"); - - if ( !in_array($mode, $blend_modes) ) - $mode = "Normal"; - - if ( $mode === $this->currentFillTransparency["mode"] && - $opacity == $this->currentFillTransparency["opacity"] ) - return; - - $this->currentFillTransparency["mode"] = $mode; - $this->currentFillTransparency["opacity"] = $opacity; - - $options = array("BM" => "/$mode", - "ca" => (float)$opacity); - - $this->setGraphicsState($options); - } - - /** - * draw a line from one set of coordinates to another - */ - function line($x1, $y1, $x2, $y2) { - $this->objects[$this->currentContents]['c'] .= sprintf("\n%.3F %.3F m %.3F %.3F l S", $x1, $y1, $x2, $y2); - } - - - /** - * draw a bezier curve based on 4 control points - */ - function curve($x0, $y0, $x1, $y1, $x2, $y2, $x3, $y3) { - // in the current line style, draw a bezier curve from (x0,y0) to (x3,y3) using the other two points - // as the control points for the curve. - $this->objects[$this->currentContents]['c'] .= - sprintf("\n%.3F %.3F m %.3F %.3F %.3F %.3F %.3F %.3F c S", $x0, $y0, $x1, $y1, $x2, $y2, $x3, $y3); - } - - - /** - * draw a part of an ellipse - */ - function partEllipse($x0, $y0, $astart, $afinish, $r1, $r2 = 0, $angle = 0, $nSeg = 8) { - $this->ellipse($x0, $y0, $r1, $r2, $angle, $nSeg, $astart, $afinish, false); - } - - - /** - * draw a filled ellipse - */ - function filledEllipse($x0, $y0, $r1, $r2 = 0, $angle = 0, $nSeg = 8, $astart = 0, $afinish = 360) { - return $this->ellipse($x0, $y0, $r1, $r2 = 0, $angle, $nSeg, $astart, $afinish, true, true); - } - - - /** - * draw an ellipse - * note that the part and filled ellipse are just special cases of this function - * - * draws an ellipse in the current line style - * centered at $x0,$y0, radii $r1,$r2 - * if $r2 is not set, then a circle is drawn - * nSeg is not allowed to be less than 2, as this will simply draw a line (and will even draw a - * pretty crappy shape at 2, as we are approximating with bezier curves. - */ - function ellipse($x0, $y0, $r1, $r2 = 0, $angle = 0, $nSeg = 8, $astart = 0, $afinish = 360, $close = true, $fill = false) { - if ($r1 == 0) { - return; - } - - if ($r2 == 0) { - $r2 = $r1; - } - - if ($nSeg < 2) { - $nSeg = 2; - } - - $astart = deg2rad((float)$astart); - $afinish = deg2rad((float)$afinish); - $totalAngle = $afinish-$astart; - - $dt = $totalAngle/$nSeg; - $dtm = $dt/3; - - if ($angle != 0) { - $a = -1*deg2rad((float)$angle); - - $this->objects[$this->currentContents]['c'] .= - sprintf("\n q %.3F %.3F %.3F %.3F %.3F %.3F cm", cos($a), -sin($a), sin($a), cos($a), $x0, $y0); - - $x0 = 0; - $y0 = 0; - } - - $t1 = $astart; - $a0 = $x0 + $r1*cos($t1); - $b0 = $y0 + $r2*sin($t1); - $c0 = -$r1 * sin($t1); - $d0 = $r2 * cos($t1); - - $this->objects[$this->currentContents]['c'] .= sprintf("\n%.3F %.3F m ", $a0, $b0); - - for ($i = 1; $i <= $nSeg; $i++) { - // draw this bit of the total curve - $t1 = $i * $dt + $astart; - $a1 = $x0 + $r1 * cos($t1); - $b1 = $y0 + $r2 * sin($t1); - $c1 = -$r1 * sin($t1); - $d1 = $r2 * cos($t1); - - $this->objects[$this->currentContents]['c'] .= - sprintf("\n%.3F %.3F %.3F %.3F %.3F %.3F c", ($a0+$c0*$dtm), ($b0+$d0*$dtm), ($a1-$c1*$dtm), ($b1-$d1*$dtm), $a1, $b1); - - $a0 = $a1; - $b0 = $b1; - $c0 = $c1; - $d0 = $d1; - } - - if ($fill) { - $this->objects[$this->currentContents]['c'].= ' f'; - } else if ($close) { - $this->objects[$this->currentContents]['c'].= ' s'; // small 's' signifies closing the path as well - } else { - $this->objects[$this->currentContents]['c'].= ' S'; - } - - if ($angle != 0) { - $this->objects[$this->currentContents]['c'].= ' Q'; - } - } - - - /** - * this sets the line drawing style. - * width, is the thickness of the line in user units - * cap is the type of cap to put on the line, values can be 'butt','round','square' - * where the diffference between 'square' and 'butt' is that 'square' projects a flat end past the - * end of the line. - * join can be 'miter', 'round', 'bevel' - * dash is an array which sets the dash pattern, is a series of length values, which are the lengths of the - * on and off dashes. - * (2) represents 2 on, 2 off, 2 on , 2 off ... - * (2,1) is 2 on, 1 off, 2 on, 1 off.. etc - * phase is a modifier on the dash pattern which is used to shift the point at which the pattern starts. - */ - function setLineStyle($width = 1, $cap = '', $join = '', $dash = '', $phase = 0) { - // this is quite inefficient in that it sets all the parameters whenever 1 is changed, but will fix another day - $string = ''; - - if ($width>0) { - $string.= "$width w"; - } - - $ca = array('butt' => 0, 'round' => 1, 'square' => 2); - - if (isset($ca[$cap])) { - $string.= " $ca[$cap] J"; - } - - $ja = array('miter' => 0, 'round' => 1, 'bevel' => 2); - - if (isset($ja[$join])) { - $string.= " $ja[$join] j"; - } - - if (is_array($dash)) { - $string.= ' [ ' . implode(' ', $dash) . " ] $phase d"; - } - - $this->currentLineStyle = $string; - $this->objects[$this->currentContents]['c'].= "\n$string"; - } - - - - /** - * draw a polygon, the syntax for this is similar to the GD polygon command - */ - function polygon($p, $np, $f = false) { - $this->objects[$this->currentContents]['c'].= sprintf("\n%.3F %.3F m ", $p[0], $p[1]); - - for ($i = 2; $i < $np * 2; $i = $i + 2) { - $this->objects[$this->currentContents]['c'].= sprintf("%.3F %.3F l ", $p[$i], $p[$i+1]); - } - - if ($f) { - $this->objects[$this->currentContents]['c'].= ' f'; - } else { - $this->objects[$this->currentContents]['c'].= ' S'; - } - } - - - /** - * a filled rectangle, note that it is the width and height of the rectangle which are the secondary paramaters, not - * the coordinates of the upper-right corner - */ - function filledRectangle($x1, $y1, $width, $height) { - $this->objects[$this->currentContents]['c'].= sprintf("\n%.3F %.3F %.3F %.3F re f", $x1, $y1, $width, $height); - } - - - /** - * draw a rectangle, note that it is the width and height of the rectangle which are the secondary paramaters, not - * the coordinates of the upper-right corner - */ - function rectangle($x1, $y1, $width, $height) { - $this->objects[$this->currentContents]['c'].= sprintf("\n%.3F %.3F %.3F %.3F re S", $x1, $y1, $width, $height); - } - - - /** - * save the current graphic state - */ - function save() { - $this->objects[$this->currentContents]['c'].= "\nq"; - } - - /** - * restore the last graphic state - */ - function restore() { - $this->objects[$this->currentContents]['c'].= "\nQ"; - } - - /** - * draw a clipping rectangle, all the elements added after this will be clipped - */ - function clippingRectangle($x1, $y1, $width, $height) { - $this->save(); - $this->objects[$this->currentContents]['c'].= sprintf("\n%.3F %.3F %.3F %.3F re W n", $x1, $y1, $width, $height); - } - - - /* - * ends the last clipping shape - */ - function clippingEnd() { - $this->restore(); - } - - /** - * scale - * @param float $s_x scaling factor for width as percent - * @param float $s_y scaling factor for height as percent - * @param float $x Origin abscisse - * @param float $y Origin ordinate - */ - function scale($s_x, $s_y, $x, $y) { - $y = $this->currentPageSize["height"] - $y; - - $tm = array( - $s_x, 0, - 0, $s_y, - $x*(1-$s_x), $y*(1-$s_y) - ); - - $this->transform($tm); - } - - /** - * translate - * @param float $t_x movement to the right - * @param float $t_y movement to the bottom - */ - function translate($t_x, $t_y) { - $tm = array( - 1, 0, - 0, 1, - $t_x, -$t_y - ); - - $this->transform($tm); - } - - /** - * rotate - * @param float $angle angle in degrees for counter-clockwise rotation - * @param float $x Origin abscisse - * @param float $y Origin ordinate - */ - function rotate($angle, $x, $y) { - $y = $this->currentPageSize["height"] - $y; - - $a = deg2rad($angle); - $cos_a = cos($a); - $sin_a = sin($a); - - $tm = array( - $cos_a, -$sin_a, - $sin_a, $cos_a, - $x - $sin_a*$y - $cos_a*$x, $y - $cos_a*$y + $sin_a*$x, - ); - - $this->transform($tm); - } - - /** - * skew - * @param float $angle_x - * @param float $angle_y - * @param float $x Origin abscisse - * @param float $y Origin ordinate - */ - function skew($angle_x, $angle_y, $x, $y) { - $y = $this->currentPageSize["height"] - $y; - - $tan_x = tan(deg2rad($angle_x)); - $tan_y = tan(deg2rad($angle_y)); - - $tm = array( - 1, -$tan_y, - -$tan_x, 1, - $tan_x*$y, $tan_y*$x, - ); - - $this->transform($tm); - } - - /** - * apply graphic transformations - * @param array $tm transformation matrix - */ - function transform($tm) { - $this->objects[$this->currentContents]['c'].= - vsprintf("\n %.3F %.3F %.3F %.3F %.3F %.3F cm", $tm); - } - - - /** - * add a new page to the document - * this also makes the new page the current active object - */ - function newPage($insert = 0, $id = 0, $pos = 'after') { - // if there is a state saved, then go up the stack closing them - // then on the new page, re-open them with the right setings - - if ($this->nStateStack) { - for ($i = $this->nStateStack;$i >= 1;$i--) { - $this->restoreState($i); - } - } - - $this->numObj++; - - if ($insert) { - // the id from the ezPdf class is the id of the contents of the page, not the page object itself - // query that object to find the parent - $rid = $this->objects[$id]['onPage']; - $opt = array('rid' => $rid, 'pos' => $pos); - $this->o_page($this->numObj, 'new', $opt); - } else { - $this->o_page($this->numObj, 'new'); - } - - // if there is a stack saved, then put that onto the page - if ($this->nStateStack) { - for ($i = 1;$i <= $this->nStateStack;$i++) { - $this->saveState($i); - } - } - - // and if there has been a stroke or fill colour set, then transfer them - if (isset($this->currentColour)) { - $this->setColor($this->currentColour, true); - } - - if (isset($this->currentStrokeColour)) { - $this->setStrokeColor($this->currentStrokeColour, true); - } - - // if there is a line style set, then put this in too - if (mb_strlen($this->currentLineStyle, '8bit')) { - $this->objects[$this->currentContents]['c'].= "\n$this->currentLineStyle"; - } - - // the call to the o_page object set currentContents to the present page, so this can be returned as the page id - return $this->currentContents; - } - - - /** - * output the pdf code, streaming it to the browser - * the relevant headers are set so that hopefully the browser will recognise it - */ - function stream($options = '') { - // setting the options allows the adjustment of the headers - // values at the moment are: - // 'Content-Disposition' => 'filename' - sets the filename, though not too sure how well this will - // work as in my trial the browser seems to use the filename of the php file with .pdf on the end - // 'Accept-Ranges' => 1 or 0 - if this is not set to 1, then this header is not included, off by default - // this header seems to have caused some problems despite tha fact that it is supposed to solve - // them, so I am leaving it off by default. - // 'compress' = > 1 or 0 - apply content stream compression, this is on (1) by default - // 'Attachment' => 1 or 0 - if 1, force the browser to open a download dialog - if (!is_array($options)) { - $options = array(); - } - - if ( headers_sent()) - die("Unable to stream pdf: headers already sent"); - - $debug = empty($options['compression']); - $tmp = ltrim($this->output($debug)); - - header("Cache-Control: private"); - header("Content-type: application/pdf"); - - //FIXME: I don't know that this is sufficient for determining content length (i.e. what about transport compression?) - header("Content-Length: " . mb_strlen($tmp, '8bit')); - $fileName = (isset($options['Content-Disposition']) ? $options['Content-Disposition'] : 'file.pdf'); - - if ( !isset($options["Attachment"])) - $options["Attachment"] = true; - - $attachment = $options["Attachment"] ? "attachment" : "inline"; - - header("Content-Disposition: $attachment; filename=\"$fileName\""); - - if (isset($options['Accept-Ranges']) && $options['Accept-Ranges'] == 1) { - //FIXME: Is this the correct value ... spec says 1#range-unit - header("Accept-Ranges: " . mb_strlen($tmp, '8bit')); - } - - echo $tmp; - flush(); - } - - - /** - * return the height in units of the current font in the given size - */ - function getFontHeight($size) { - if (!$this->numFonts) { - $this->selectFont($this->defaultFont); - } - - $font = $this->fonts[$this->currentFont]; - - // for the current font, and the given size, what is the height of the font in user units - if ( isset($font['Ascender']) && isset($font['Descender']) ) { - $h = $font['Ascender']-$font['Descender']; - } - else { - $h = $font['FontBBox'][3]-$font['FontBBox'][1]; - } - - // have to adjust by a font offset for Windows fonts. unfortunately it looks like - // the bounding box calculations are wrong and I don't know why. - if (isset($font['FontHeightOffset'])) { - // For CourierNew from Windows this needs to be -646 to match the - // Adobe native Courier font. - // - // For FreeMono from GNU this needs to be -337 to match the - // Courier font. - // - // Both have been added manually to the .afm and .ufm files. - $h += (int)$font['FontHeightOffset']; - } - - return $size*$h/1000; - } - - - /** - * return the font descender, this will normally return a negative number - * if you add this number to the baseline, you get the level of the bottom of the font - * it is in the pdf user units - */ - function getFontDescender($size) { - // note that this will most likely return a negative value - if (!$this->numFonts) { - $this->selectFont($this->defaultFont); - } - - //$h = $this->fonts[$this->currentFont]['FontBBox'][1]; - $h = $this->fonts[$this->currentFont]['Descender']; - - return $size*$h/1000; - } - - - /** - * filter the text, this is applied to all text just before being inserted into the pdf document - * it escapes the various things that need to be escaped, and so on - * - * @access private - */ - function filterText($text, $bom = true, $convert_encoding = true) { - if (!$this->numFonts) { - $this->selectFont($this->defaultFont); - } - - if ($convert_encoding) { - $cf = $this->currentFont; - if (isset($this->fonts[$cf]) && $this->fonts[$cf]['isUnicode']) { - //$text = html_entity_decode($text, ENT_QUOTES, 'UTF-8'); - $text = $this->utf8toUtf16BE($text, $bom); - } else { - //$text = html_entity_decode($text, ENT_QUOTES); - $text = mb_convert_encoding($text, self::$targetEncoding, 'UTF-8'); - } - } - - // the chr(13) substitution fixes a bug seen in TCPDF (bug #1421290) - return strtr($text, array(')' => '\\)', '(' => '\\(', '\\' => '\\\\', chr(13) => '\r')); - } - - /** - * return array containing codepoints (UTF-8 character values) for the - * string passed in. - * - * based on the excellent TCPDF code by Nicola Asuni and the - * RFC for UTF-8 at http://www.faqs.org/rfcs/rfc3629.html - * - * @access private - * @author Orion Richardson - * @since January 5, 2008 - * @param string $text UTF-8 string to process - * @return array UTF-8 codepoints array for the string - */ - function utf8toCodePointsArray(&$text) { - $length = mb_strlen($text, '8bit'); // http://www.php.net/manual/en/function.mb-strlen.php#77040 - $unicode = array(); // array containing unicode values - $bytes = array(); // array containing single character byte sequences - $numbytes = 1; // number of octetc needed to represent the UTF-8 character - - for ($i = 0; $i < $length; $i++) { - $c = ord($text[$i]); // get one string character at time - if (count($bytes) === 0) { // get starting octect - if ($c <= 0x7F) { - $unicode[] = $c; // use the character "as is" because is ASCII - $numbytes = 1; - } elseif (($c >> 0x05) === 0x06) { // 2 bytes character (0x06 = 110 BIN) - $bytes[] = ($c - 0xC0) << 0x06; - $numbytes = 2; - } elseif (($c >> 0x04) === 0x0E) { // 3 bytes character (0x0E = 1110 BIN) - $bytes[] = ($c - 0xE0) << 0x0C; - $numbytes = 3; - } elseif (($c >> 0x03) === 0x1E) { // 4 bytes character (0x1E = 11110 BIN) - $bytes[] = ($c - 0xF0) << 0x12; - $numbytes = 4; - } else { - // use replacement character for other invalid sequences - $unicode[] = 0xFFFD; - $bytes = array(); - $numbytes = 1; - } - } elseif (($c >> 0x06) === 0x02) { // bytes 2, 3 and 4 must start with 0x02 = 10 BIN - $bytes[] = $c - 0x80; - if (count($bytes) === $numbytes) { - // compose UTF-8 bytes to a single unicode value - $c = $bytes[0]; - for ($j = 1; $j < $numbytes; $j++) { - $c += ($bytes[$j] << (($numbytes - $j - 1) * 0x06)); - } - if ((($c >= 0xD800) AND ($c <= 0xDFFF)) OR ($c >= 0x10FFFF)) { - // The definition of UTF-8 prohibits encoding character numbers between - // U+D800 and U+DFFF, which are reserved for use with the UTF-16 - // encoding form (as surrogate pairs) and do not directly represent - // characters. - $unicode[] = 0xFFFD; // use replacement character - } else { - $unicode[] = $c; // add char to array - } - // reset data for next char - $bytes = array(); - $numbytes = 1; - } - } else { - // use replacement character for other invalid sequences - $unicode[] = 0xFFFD; - $bytes = array(); - $numbytes = 1; - } - } - return $unicode; - } - - /** - * convert UTF-8 to UTF-16 with an additional byte order marker - * at the front if required. - * - * based on the excellent TCPDF code by Nicola Asuni and the - * RFC for UTF-8 at http://www.faqs.org/rfcs/rfc3629.html - * - * @access private - * @author Orion Richardson - * @since January 5, 2008 - * @param string $text UTF-8 string to process - * @param boolean $bom whether to add the byte order marker - * @return string UTF-16 result string - */ - function utf8toUtf16BE(&$text, $bom = true) { - $cf = $this->currentFont; - if (!$this->fonts[$cf]['isUnicode']) return $text; - $out = $bom ? "\xFE\xFF" : ''; - - $unicode = $this->utf8toCodePointsArray($text); - foreach ($unicode as $c) { - if ($c === 0xFFFD) { - $out .= "\xFF\xFD"; // replacement character - } elseif ($c < 0x10000) { - $out .= chr($c >> 0x08) . chr($c & 0xFF); - } else { - $c -= 0x10000; - $w1 = 0xD800 | ($c >> 0x10); - $w2 = 0xDC00 | ($c & 0x3FF); - $out .= chr($w1 >> 0x08) . chr($w1 & 0xFF) . chr($w2 >> 0x08) . chr($w2 & 0xFF); - } - } - return $out; - } - - - /** - * given a start position and information about how text is to be laid out, calculate where - * on the page the text will end - * - * @access private - */ - function PRVTgetTextPosition($x, $y, $angle, $size, $wa, $text) { - // given this information return an array containing x and y for the end position as elements 0 and 1 - $w = $this->getTextWidth($size, $text); - - // need to adjust for the number of spaces in this text - $words = explode(' ', $text); - $nspaces = count($words) -1; - $w+= $wa*$nspaces; - $a = deg2rad((float)$angle); - - return array(cos($a) *$w+$x, -sin($a) *$w+$y); - } - - - /** - * wrapper function for PRVTcheckTextDirective1 - * - * @access private - */ - function PRVTcheckTextDirective(&$text, $i, &$f) { - return 0; - $x = 0; - $y = 0; - return $this->PRVTcheckTextDirective1($text, $i, $f, 0, $x, $y); - } - - - /** - * checks if the text stream contains a control directive - * if so then makes some changes and returns the number of characters involved in the directive - * this has been re-worked to include everything neccesary to find the current writing point, so that - * the location can be sent to the callback function if required - * if the directive does not require a font change, then $f should be set to 0 - * - * @access private - */ - function PRVTcheckTextDirective1(&$text, $i, &$f, $final, &$x, &$y, $size = 0, $angle = 0, $wordSpaceAdjust = 0) { - return 0; - $directive = 0; - $j = $i; - if ($text[$j] === '<') { - $j++; - switch ($text[$j]) { - case '/': - $j++; - if (mb_strlen($text) <= $j) { - return $directive; - } - - switch ($text[$j]) { - case 'b': - case 'i': - $j++; - if ($text[$j] === '>') { - $p = mb_strrpos($this->currentTextState, $text[$j-1]); - - if ($p !== false) { - // then there is one to remove - $this->currentTextState = mb_substr($this->currentTextState, 0, $p) .substr($this->currentTextState, $p+1); - } - - $directive = $j-$i+1; - } - break; - - case 'c': - // this this might be a callback function - $j++; - $k = mb_strpos($text, '>', $j); - - if ($k !== false && $text[$j] === ':') { - // then this will be treated as a callback directive - $directive = $k-$i+1; - $f = 0; - // split the remainder on colons to get the function name and the paramater - $tmp = mb_substr($text, $j+1, $k-$j-1); - $b1 = mb_strpos($tmp, ':'); - - if ($b1 !== false) { - $func = mb_substr($tmp, 0, $b1); - $parm = mb_substr($tmp, $b1+1); - } else { - $func = $tmp; - $parm = ''; - } - - if (!isset($func) || !mb_strlen(trim($func), '8bit')) { - $directive = 0; - } else { - // only call the function if this is the final call - if ($final) { - // need to assess the text position, calculate the text width to this point - // can use getTextWidth to find the text width I think - $tmp = $this->PRVTgetTextPosition($x, $y, $angle, $size, $wordSpaceAdjust, mb_substr($text, 0, $i)); - - $info = array('x' => $tmp[0], 'y' => $tmp[1], 'angle' => $angle, 'status' => 'end', 'p' => $parm, 'nCallback' => $this->nCallback); - $x = $tmp[0]; - $y = $tmp[1]; - $ret = $this->$func($info); - - if (is_array($ret)) { - // then the return from the callback function could set the position, to start with, later will do font colour, and font - foreach($ret as $rk => $rv) { - switch ($rk) { - case 'x': - case 'y': - $$rk = $rv; - break; - } - } - } - - // also remove from to the stack - // for simplicity, just take from the end, fix this another day - $this->nCallback--; - if ($this->nCallback<0) { - $this->nCallBack = 0; - } - } - } - } - break; - } - break; - - case 'b': - case 'i': - $j++; - if ($text[$j] === '>') { - $this->currentTextState.= $text[$j-1]; - $directive = $j-$i+1; - } - break; - - case 'C': - $noClose = 1; - case 'c': - // this this might be a callback function - $j++; - $k = mb_strpos($text, '>', $j); - - if ($k !== false && $text[$j] === ':') { - // then this will be treated as a callback directive - $directive = $k-$i+1; - - $f = 0; - - // split the remainder on colons to get the function name and the paramater - // $bits = explode(':',substr($text,$j+1,$k-$j-1)); - $tmp = mb_substr($text, $j+1, $k-$j-1); - $b1 = mb_strpos($tmp, ':'); - - if ($b1 !== false) { - $func = mb_substr($tmp, 0, $b1); - $parm = mb_substr($tmp, $b1+1); - } else { - $func = $tmp; - $parm = ''; - } - - if (!isset($func) || !mb_strlen(trim($func), '8bit')) { - $directive = 0; - } else { - // only call the function if this is the final call, ie, the one actually doing printing, not measurement - if ($final) { - // need to assess the text position, calculate the text width to this point - // can use getTextWidth to find the text width I think - // also add the text height and descender - $tmp = $this->PRVTgetTextPosition($x, $y, $angle, $size, $wordSpaceAdjust, mb_substr($text, 0, $i)); - - $info = array( - 'x' => $tmp[0], - 'y' => $tmp[1], - 'angle' => $angle, - 'status' => 'start', - 'p' => $parm, - 'f' => $func, - 'height' => $this->getFontHeight($size), - 'descender' => $this->getFontDescender($size) - ); - $x = $tmp[0]; - $y = $tmp[1]; - - if (!isset($noClose) || !$noClose) { - // only add to the stack if this is a small 'c', therefore is a start-stop pair - $this->nCallback++; - $info['nCallback'] = $this->nCallback; - $this->callback[$this->nCallback] = $info; - } - - $ret = $this->$func($info); - if (is_array($ret)) { - // then the return from the callback function could set the position, to start with, later will do font colour, and font - foreach($ret as $rk => $rv) { - switch ($rk) { - case 'x': - case 'y': - $$rk = $rv; - break; - } - } - } - } - } - } - break; - } - } - - return $directive; - } - - function toUpper($matches) { - return mb_strtoupper($matches[0]); - } - - - /** - * add text to the document, at a specified location, size and angle on the page - */ - function addText($x, $y, $size, $text, $angle = 0, $wordSpaceAdjust = 0, $charSpaceAdjust = 0, $smallCaps = false) { - if (!$this->numFonts) { - $this->selectFont($this->defaultFont); - } - - if ($smallCaps) { - $text = preg_replace_callback("/\p{Ll}/u", array($this, "toUpper"), $text); - } - - // if there are any open callbacks, then they should be called, to show the start of the line - if ($this->nCallback>0) { - for ($i = $this->nCallback;$i>0;$i--) { - // call each function - $info = array('x' => $x, - 'y' => $y, - 'angle' => $angle, - 'status' => 'sol', - 'p' => $this->callback[$i]['p'], - 'nCallback' => $this->callback[$i]['nCallback'], - 'height' => $this->callback[$i]['height'], - 'descender' => $this->callback[$i]['descender']); - - $func = $this->callback[$i]['f']; - $this->$func($info); - } - } - - if ($angle == 0) { - $this->objects[$this->currentContents]['c'].= sprintf("\nBT %.3F %.3F Td", $x, $y); - } else { - $a = deg2rad((float)$angle); - $this->objects[$this->currentContents]['c'].= - sprintf("\nBT %.3F %.3F %.3F %.3F %.3F %.3F Tm", cos($a), -sin($a), sin($a), cos($a), $x, $y); - } - - if ($wordSpaceAdjust != 0 || $wordSpaceAdjust != $this->wordSpaceAdjust) { - $this->wordSpaceAdjust = $wordSpaceAdjust; - $this->objects[$this->currentContents]['c'].= sprintf(" %.3F Tw", $wordSpaceAdjust); - } - - if ($charSpaceAdjust != 0 || $charSpaceAdjust != $this->charSpaceAdjust) { - $this->charSpaceAdjust = $charSpaceAdjust; - $this->objects[$this->currentContents]['c'].= sprintf(" %.3F Tc", $charSpaceAdjust); - } - - $len = mb_strlen($text); - $start = 0; - - /* - for ($i = 0;$i<$len;$i++){ - $f = 1; - $directive = 0; //$this->PRVTcheckTextDirective($text,$i,$f); - if ($directive){ - // then we should write what we need to - if ($i>$start){ - $part = mb_substr($text,$start,$i-$start); - $this->objects[$this->currentContents]['c'] .= ' /F'.$this->currentFontNum.' '.sprintf('%.1F',$size).' Tf '; - $this->objects[$this->currentContents]['c'] .= ' ('.$this->filterText($part, false).') Tj'; - } - if ($f){ - // then there was nothing drastic done here, restore the contents - $this->setCurrentFont(); - } else { - $this->objects[$this->currentContents]['c'] .= ' ET'; - $f = 1; - $xp = $x; - $yp = $y; - $directive = 0; //$this->PRVTcheckTextDirective1($text,$i,$f,1,$xp,$yp,$size,$angle,$wordSpaceAdjust); - - // restart the text object - if ($angle == 0){ - $this->objects[$this->currentContents]['c'] .= "\n".'BT '.sprintf('%.3F',$xp).' '.sprintf('%.3F',$yp).' Td'; - } else { - $a = deg2rad((float)$angle); - $tmp = "\n".'BT '; - $tmp .= sprintf('%.3F',cos($a)).' '.sprintf('%.3F',(-1.0*sin($a))).' '.sprintf('%.3F',sin($a)).' '.sprintf('%.3F',cos($a)).' '; - $tmp .= sprintf('%.3F',$xp).' '.sprintf('%.3F',$yp).' Tm'; - $this->objects[$this->currentContents]['c'] .= $tmp; - } - if ($wordSpaceAdjust != 0 || $wordSpaceAdjust != $this->wordSpaceAdjust){ - $this->wordSpaceAdjust = $wordSpaceAdjust; - $this->objects[$this->currentContents]['c'] .= ' '.sprintf('%.3F',$wordSpaceAdjust).' Tw'; - } - } - // and move the writing point to the next piece of text - $i = $i+$directive-1; - $start = $i+1; - } - - } - */ - if ($start < $len) { - $part = $text; // OAR - Don't need this anymore, given that $start always equals zero. substr($text, $start); - $place_text = $this->filterText($part, false); - // modify unicode text so that extra word spacing is manually implemented (bug #) - $cf = $this->currentFont; - if ($this->fonts[$cf]['isUnicode'] && $wordSpaceAdjust != 0) { - $space_scale = 1000 / $size; - //$place_text = str_replace(' ', ') ( ) '.($this->getTextWidth($size, chr(32), $wordSpaceAdjust)*-75).' (', $place_text); - $place_text = str_replace(' ', ' ) '.(-round($space_scale*$wordSpaceAdjust)).' (', $place_text); - } - $this->objects[$this->currentContents]['c'].= " /F$this->currentFontNum ".sprintf('%.1F Tf ', $size); - $this->objects[$this->currentContents]['c'].= " [($place_text)] TJ"; - } - - $this->objects[$this->currentContents]['c'].= ' ET'; - - // if there are any open callbacks, then they should be called, to show the end of the line - if ($this->nCallback>0) { - for ($i = $this->nCallback;$i>0;$i--) { - // call each function - $tmp = $this->PRVTgetTextPosition($x, $y, $angle, $size, $wordSpaceAdjust, $text); - $info = array( - 'x' => $tmp[0], - 'y' => $tmp[1], - 'angle' => $angle, - 'status' => 'eol', - 'p' => $this->callback[$i]['p'], - 'nCallback' => $this->callback[$i]['nCallback'], - 'height' => $this->callback[$i]['height'], - 'descender' => $this->callback[$i]['descender'] - ); - $func = $this->callback[$i]['f']; - $this->$func($info); - } - } - } - - - /** - * calculate how wide a given text string will be on a page, at a given size. - * this can be called externally, but is alse used by the other class functions - */ - function getTextWidth($size, $text, $word_spacing = 0, $char_spacing = 0) { - // this function should not change any of the settings, though it will need to - // track any directives which change during calculation, so copy them at the start - // and put them back at the end. - $store_currentTextState = $this->currentTextState; - - if (!$this->numFonts) { - $this->selectFont($this->defaultFont); - } - - // converts a number or a float to a string so it can get the width - $text = "$text"; - - // hmm, this is where it all starts to get tricky - use the font information to - // calculate the width of each character, add them up and convert to user units - $w = 0; - $cf = $this->currentFont; - $current_font = $this->fonts[$cf]; - $space_scale = 1000 / $size; - $n_spaces = 0; - - if ( $current_font['isUnicode']) { - // for Unicode, use the code points array to calculate width rather - // than just the string itself - $unicode = $this->utf8toCodePointsArray($text); - - foreach ($unicode as $char) { - // check if we have to replace character - if ( isset($current_font['differences'][$char])) { - $char = $current_font['differences'][$char]; - } - - if ( isset($current_font['C'][$char]) ) { - $char_width = $current_font['C'][$char]; - - // add the character width - $w += $char_width; - - // add additional padding for space - if ( isset($current_font['codeToName'][$char]) && $current_font['codeToName'][$char] === 'space' ) { // Space - $w += $word_spacing * $space_scale; - $n_spaces++; - } - } - } - - // add additionnal char spacing - if ( $char_spacing != 0 ) { - $w += $char_spacing * $space_scale * (count($unicode) + $n_spaces); - } - - } else { - // If CPDF is in Unicode mode but the current font does not support Unicode we need to convert the character set to Windows-1252 - if ( $this->isUnicode ) { - $text = mb_convert_encoding($text, 'Windows-1252', 'UTF-8'); - } - - $len = mb_strlen($text, 'Windows-1252'); - - for ($i = 0; $i < $len; $i++) { - $char = ord($text[$i]); - - // check if we have to replace character - if ( isset($current_font['differences'][$char])) { - $char = $current_font['differences'][$char]; - } - - if ( isset($current_font['C'][$char]) ) { - $char_width = $current_font['C'][$char]; - - // add the character width - $w += $char_width; - - // add additional padding for space - if ( isset($current_font['codeToName'][$char]) && $current_font['codeToName'][$char] === 'space' ) { // Space - $w += $word_spacing * $space_scale; - $n_spaces++; - } - } - } - - // add additionnal char spacing - if ( $char_spacing != 0 ) { - $w += $char_spacing * $space_scale * ($len + $n_spaces); - } - } - - $this->currentTextState = $store_currentTextState; - $this->setCurrentFont(); - - return $w*$size/1000; - } - - - /** - * do a part of the calculation for sorting out the justification of the text - * - * @access private - */ - function PRVTadjustWrapText($text, $actual, $width, &$x, &$adjust, $justification) { - switch ($justification) { - case 'left': - return; - - case 'right': - $x+= $width-$actual; - break; - - case 'center': - case 'centre': - $x+= ($width-$actual) /2; - break; - - case 'full': - // count the number of words - $words = explode(' ', $text); - $nspaces = count($words) -1; - - if ($nspaces>0) { - $adjust = ($width-$actual) /$nspaces; - } else { - $adjust = 0; - } - break; - } - } - - - /** - * add text to the page, but ensure that it fits within a certain width - * if it does not fit then put in as much as possible, splitting at word boundaries - * and return the remainder. - * justification and angle can also be specified for the text - */ - function addTextWrap($x, $y, $width, $size, $text, $justification = 'left', $angle = 0, $test = 0) { - // TODO - need to support Unicode - $cf = $this->currentFont; - if ($this->fonts[$cf]['isUnicode']) { - die("addTextWrap does not support Unicode yet!"); - } - - // this will display the text, and if it goes beyond the width $width, will backtrack to the - // previous space or hyphen, and return the remainder of the text. - - // $justification can be set to 'left','right','center','centre','full' - - // need to store the initial text state, as this will change during the width calculation - // but will need to be re-set before printing, so that the chars work out right - $store_currentTextState = $this->currentTextState; - - if (!$this->numFonts) { - $this->selectFont($this->defaultFont); - } - - if ($width <= 0) { - // error, pretend it printed ok, otherwise risking a loop - return ''; - } - - $w = 0; - $break = 0; - $breakWidth = 0; - $len = mb_strlen($text); - $cf = $this->currentFont; - $tw = $width/$size*1000; - - for ($i = 0;$i<$len;$i++) { - $f = 1; - $directive = 0; - //$this->PRVTcheckTextDirective($text,$i,$f); - if ($directive) { - if ($f) { - $this->setCurrentFont(); - $cf = $this->currentFont; - } - - $i = $i+$directive-1; - } else { - $cOrd = ord($text[$i]); - - if (isset($this->fonts[$cf]['differences'][$cOrd])) { - // then this character is being replaced by another - $cOrd2 = $this->fonts[$cf]['differences'][$cOrd]; - } else { - $cOrd2 = $cOrd; - } - - if (isset($this->fonts[$cf]['C'][$cOrd2])) { - $w+= $this->fonts[$cf]['C'][$cOrd2]; - } - - if ($w>$tw) { - // then we need to truncate this line - if ($break>0) { - // then we have somewhere that we can split :) - if ($text[$break] === ' ') { - $tmp = mb_substr($text, 0, $break); - } else { - $tmp = mb_substr($text, 0, $break+1); - } - - $adjust = 0; - $this->PRVTadjustWrapText($tmp, $breakWidth, $width, $x, $adjust, $justification); - - // reset the text state - $this->currentTextState = $store_currentTextState; - $this->setCurrentFont(); - - if (!$test) { - $this->addText($x, $y, $size, $tmp, $angle, $adjust); - } - - return mb_substr($text, $break+1); - } else { - // just split before the current character - $tmp = mb_substr($text, 0, $i); - $adjust = 0; - $ctmp = ord($text[$i]); - - if (isset($this->fonts[$cf]['differences'][$ctmp])) { - $ctmp = $this->fonts[$cf]['differences'][$ctmp]; - } - - $tmpw = ($w-$this->fonts[$cf]['C'][$ctmp]) *$size/1000; - $this->PRVTadjustWrapText($tmp, $tmpw, $width, $x, $adjust, $justification); - - // reset the text state - $this->currentTextState = $store_currentTextState; - $this->setCurrentFont(); - - if (!$test) { - $this->addText($x, $y, $size, $tmp, $angle, $adjust); - } - - return mb_substr($text, $i); - } - } - - if ($text[$i] === '-') { - $break = $i; - $breakWidth = $w*$size/1000; - } - - if ($text[$i] === ' ') { - $break = $i; - $ctmp = ord($text[$i]); - - if (isset($this->fonts[$cf]['differences'][$ctmp])) { - $ctmp = $this->fonts[$cf]['differences'][$ctmp]; - } - - $breakWidth = ($w-$this->fonts[$cf]['C'][$ctmp]) *$size/1000; - } - } - } - - // then there was no need to break this line - if ($justification === 'full') { - $justification = 'left'; - } - - $adjust = 0; - $tmpw = $w*$size/1000; - - $this->PRVTadjustWrapText($text, $tmpw, $width, $x, $adjust, $justification); - - // reset the text state - $this->currentTextState = $store_currentTextState; - $this->setCurrentFont(); - - if (!$test) { - $this->addText($x, $y, $size, $text, $angle, $adjust); - } - - return ''; - } - - - /** - * this will be called at a new page to return the state to what it was on the - * end of the previous page, before the stack was closed down - * This is to get around not being able to have open 'q' across pages - * - */ - function saveState($pageEnd = 0) { - if ($pageEnd) { - // this will be called at a new page to return the state to what it was on the - // end of the previous page, before the stack was closed down - // This is to get around not being able to have open 'q' across pages - $opt = $this->stateStack[$pageEnd]; - // ok to use this as stack starts numbering at 1 - $this->setColor($opt['col'], true); - $this->setStrokeColor($opt['str'], true); - $this->objects[$this->currentContents]['c'].= "\n".$opt['lin']; - // $this->currentLineStyle = $opt['lin']; - } else { - $this->nStateStack++; - $this->stateStack[$this->nStateStack] = array( - 'col' => $this->currentColour, - 'str' => $this->currentStrokeColour, - 'lin' => $this->currentLineStyle - ); - } - - $this->save(); - } - - - /** - * restore a previously saved state - */ - function restoreState($pageEnd = 0) { - if (!$pageEnd) { - $n = $this->nStateStack; - $this->currentColour = $this->stateStack[$n]['col']; - $this->currentStrokeColour = $this->stateStack[$n]['str']; - $this->objects[$this->currentContents]['c'].= "\n".$this->stateStack[$n]['lin']; - $this->currentLineStyle = $this->stateStack[$n]['lin']; - $this->stateStack[$n] = null; - unset($this->stateStack[$n]); - $this->nStateStack--; - } - - $this->restore(); - } - - - /** - * make a loose object, the output will go into this object, until it is closed, then will revert to - * the current one. - * this object will not appear until it is included within a page. - * the function will return the object number - */ - function openObject() { - $this->nStack++; - $this->stack[$this->nStack] = array('c' => $this->currentContents, 'p' => $this->currentPage); - // add a new object of the content type, to hold the data flow - $this->numObj++; - $this->o_contents($this->numObj, 'new'); - $this->currentContents = $this->numObj; - $this->looseObjects[$this->numObj] = 1; - - return $this->numObj; - } - - - /** - * open an existing object for editing - */ - function reopenObject($id) { - $this->nStack++; - $this->stack[$this->nStack] = array('c' => $this->currentContents, 'p' => $this->currentPage); - $this->currentContents = $id; - - // also if this object is the primary contents for a page, then set the current page to its parent - if (isset($this->objects[$id]['onPage'])) { - $this->currentPage = $this->objects[$id]['onPage']; - } - } - - - /** - * close an object - */ - function closeObject() { - // close the object, as long as there was one open in the first place, which will be indicated by - // an objectId on the stack. - if ($this->nStack>0) { - $this->currentContents = $this->stack[$this->nStack]['c']; - $this->currentPage = $this->stack[$this->nStack]['p']; - $this->nStack--; - // easier to probably not worry about removing the old entries, they will be overwritten - // if there are new ones. - } - } - - - /** - * stop an object from appearing on pages from this point on - */ - function stopObject($id) { - // if an object has been appearing on pages up to now, then stop it, this page will - // be the last one that could contian it. - if (isset($this->addLooseObjects[$id])) { - $this->addLooseObjects[$id] = ''; - } - } - - - /** - * after an object has been created, it wil only show if it has been added, using this function. - */ - function addObject($id, $options = 'add') { - // add the specified object to the page - if (isset($this->looseObjects[$id]) && $this->currentContents != $id) { - // then it is a valid object, and it is not being added to itself - switch ($options) { - case 'all': - // then this object is to be added to this page (done in the next block) and - // all future new pages. - $this->addLooseObjects[$id] = 'all'; - - case 'add': - if (isset($this->objects[$this->currentContents]['onPage'])) { - // then the destination contents is the primary for the page - // (though this object is actually added to that page) - $this->o_page($this->objects[$this->currentContents]['onPage'], 'content', $id); - } - break; - - case 'even': - $this->addLooseObjects[$id] = 'even'; - $pageObjectId = $this->objects[$this->currentContents]['onPage']; - if ($this->objects[$pageObjectId]['info']['pageNum']%2 == 0) { - $this->addObject($id); - // hacky huh :) - } - break; - - case 'odd': - $this->addLooseObjects[$id] = 'odd'; - $pageObjectId = $this->objects[$this->currentContents]['onPage']; - if ($this->objects[$pageObjectId]['info']['pageNum']%2 == 1) { - $this->addObject($id); - // hacky huh :) - } - break; - - case 'next': - $this->addLooseObjects[$id] = 'all'; - break; - - case 'nexteven': - $this->addLooseObjects[$id] = 'even'; - break; - - case 'nextodd': - $this->addLooseObjects[$id] = 'odd'; - break; - } - } - } - - - /** - * return a storable representation of a specific object - */ - function serializeObject($id) { - if ( array_key_exists($id, $this->objects)) - return var_export($this->objects[$id], true); - } - - - /** - * restore an object from its stored representation. returns its new object id. - */ - function restoreSerializedObject($obj) { - $obj_id = $this->openObject(); - eval('$this->objects[$obj_id] = ' . $obj . ';'); - $this->closeObject(); - return $obj_id; - } - - - /** - * add content to the documents info object - */ - function addInfo($label, $value = 0) { - // this will only work if the label is one of the valid ones. - // modify this so that arrays can be passed as well. - // if $label is an array then assume that it is key => value pairs - // else assume that they are both scalar, anything else will probably error - if (is_array($label)) { - foreach ($label as $l => $v) { - $this->o_info($this->infoObject, $l, $v); - } - } else { - $this->o_info($this->infoObject, $label, $value); - } - } - - - /** - * set the viewer preferences of the document, it is up to the browser to obey these. - */ - function setPreferences($label, $value = 0) { - // this will only work if the label is one of the valid ones. - if (is_array($label)) { - foreach ($label as $l => $v) { - $this->o_catalog($this->catalogId, 'viewerPreferences', array($l => $v)); - } - } else { - $this->o_catalog($this->catalogId, 'viewerPreferences', array($label => $value)); - } - } - - - /** - * extract an integer from a position in a byte stream - * - * @access private - */ - function PRVT_getBytes(&$data, $pos, $num) { - // return the integer represented by $num bytes from $pos within $data - $ret = 0; - for ($i = 0;$i<$num;$i++) { - $ret = $ret*256; - $ret+= ord($data[$pos+$i]); - } - - return $ret; - } - - - /** - * add a PNG image into the document, from a GD object - * this should work with remote files - * - * @param string $file The PNG file - * @param float $x X position - * @param float $y Y position - * @param float $w Width - * @param float $h Height - * @param resource $img A GD resource - * @param bool $is_mask true if the image is a mask - * @param bool $mask true if the image is masked - */ - function addImagePng($file, $x, $y, $w = 0, $h = 0, &$img, $is_mask = false, $mask = null) { - //if already cached, need not to read again - if ( isset($this->imagelist[$file]) ) { - $data = null; - } else { - // Example for transparency handling on new image. Retain for current image - // $tIndex = imagecolortransparent($img); - // if ($tIndex > 0) { - // $tColor = imagecolorsforindex($img, $tIndex); - // $new_tIndex = imagecolorallocate($new_img, $tColor['red'], $tColor['green'], $tColor['blue']); - // imagefill($new_img, 0, 0, $new_tIndex); - // imagecolortransparent($new_img, $new_tIndex); - // } - // blending mode (literal/blending) on drawing into current image. not relevant when not saved or not drawn - //imagealphablending($img, true); - - //default, but explicitely set to ensure pdf compatibility - imagesavealpha($img, false/*!$is_mask && !$mask*/); - - $error = 0; - //DEBUG_IMG_TEMP - //debugpng - if (DEBUGPNG) print '[addImagePng '.$file.']'; - - ob_start(); - @imagepng($img); - $data = ob_get_clean(); - - if ($data == '') { - $error = 1; - $errormsg = 'trouble writing file from GD'; - //DEBUG_IMG_TEMP - //debugpng - if (DEBUGPNG) print 'trouble writing file from GD'; - } - - if ($error) { - $this->addMessage('PNG error - ('.$file.') '.$errormsg); - return; - } - } //End isset($this->imagelist[$file]) (png Duplicate removal) - - $this->addPngFromBuf($file, $x, $y, $w, $h, $data, $is_mask, $mask); - } - - protected function addImagePngAlpha($file, $x, $y, $w, $h, $byte) { - // generate images - $img = imagecreatefrompng($file); - - if ($img === false) { - return; - } - - $wpx = imagesx($img); - $hpx = imagesy($img); - - imagesavealpha($img, false); - - $imgalpha = imagecreate($wpx, $hpx); - imagesavealpha($imgalpha, false); - - // generate gray scale palette (0 -> 255) - for ($c = 0; $c < 256; ++$c) { - imagecolorallocate($imgalpha, $c, $c, $c); - } - - // FIXME The pixel transformation doesn't work well with 8bit PNGs - $eight_bit = ($byte & 4) !== 4; - - // allocated colors cache - $allocated_colors = array(); - - // extract alpha channel - for ($xpx = 0; $xpx < $wpx; ++$xpx) { - for ($ypx = 0; $ypx < $hpx; ++$ypx) { - $color = imagecolorat($img, $xpx, $ypx); - $col = imagecolorsforindex($img, $color); - $alpha = $col['alpha']; - - if ($eight_bit) { - // with gamma correction - $gammacorr = 2.2; - $pixel = pow((((127 - $alpha) * 255 / 127) / 255), $gammacorr) * 255; - } - - else { - // without gamma correction - $pixel = (127 - $alpha) * 2; - - $key = implode("-", array($col['red'], $col['green'], $col['blue'])); - - if (!isset($allocated_colors[$key])) { - $pixel_img = imagecolorallocate($img, $col['red'], $col['green'], $col['blue']); - $allocated_colors[$key] = $pixel_img; - } - else { - $pixel_img = $allocated_colors[$key]; - } - - imagesetpixel($img, $xpx, $ypx, $pixel_img); - } - - imagesetpixel($imgalpha, $xpx, $ypx, $pixel); - } - } - - // create temp alpha file - $tempfile_alpha = tempnam($this->tmp, "cpdf_img_").'.png'; - imagepng($imgalpha, $tempfile_alpha); - - // extract image without alpha channel - $imgplain = imagecreatetruecolor($wpx, $hpx); - imagecopy($imgplain, $img, 0, 0, 0, 0, $wpx, $hpx); - imagedestroy($img); - - // create temp image file - $tempfile_plain = tempnam($this->tmp, "cpdf_img_").'.png'; - imagepng($imgplain, $tempfile_plain); - - // embed mask image - $this->addImagePng($tempfile_alpha, $x, $y, $w, $h, $imgalpha, true); - imagedestroy($imgalpha); - - // embed image, masked with previously embedded mask - $this->addImagePng($tempfile_plain, $x, $y, $w, $h, $imgplain, false, true); - imagedestroy($imgplain); - - // remove temp files - unlink($tempfile_alpha); - unlink($tempfile_plain); - } - - - /** - * add a PNG image into the document, from a file - * this should work with remote files - */ - function addPngFromFile($file, $x, $y, $w = 0, $h = 0) { - //if already cached, need not to read again - if ( isset($this->imagelist[$file]) ) { - $img = null; - } - - else { - $byte = ord (file_get_contents ($file, false, null, 25, 1)); - $is_alpha = ($byte & 6); // 6 => 32b, 4 => 8b - - if ($is_alpha) { // exclude grayscale alpha - return $this->addImagePngAlpha($file, $x, $y, $w, $h, $byte); - } - - //png files typically contain an alpha channel. - //pdf file format or class.pdf does not support alpha blending. - //on alpha blended images, more transparent areas have a color near black. - //This appears in the result on not storing the alpha channel. - //Correct would be the box background image or its parent when transparent. - //But this would make the image dependent on the background. - //Therefore create an image with white background and copy in - //A more natural background than black is white. - //Therefore create an empty image with white background and merge the - //image in with alpha blending. - $imgtmp = @imagecreatefrompng($file); - if (!$imgtmp) { - return; - } - $sx = imagesx($imgtmp); - $sy = imagesy($imgtmp); - $img = imagecreatetruecolor($sx,$sy); - imagealphablending($img, true); - - // @todo is it still needed ?? - $ti = imagecolortransparent($imgtmp); - if ($ti >= 0) { - $tc = imagecolorsforindex($imgtmp,$ti); - $ti = imagecolorallocate($img,$tc['red'],$tc['green'],$tc['blue']); - imagefill($img,0,0,$ti); - imagecolortransparent($img, $ti); - } else { - imagefill($img,1,1,imagecolorallocate($img,255,255,255)); - } - - imagecopy($img,$imgtmp,0,0,0,0,$sx,$sy); - imagedestroy($imgtmp); - } - $this->addImagePng($file, $x, $y, $w, $h, $img); - imagedestroy($img); - } - - - /** - * add a PNG image into the document, from a memory buffer of the file - */ - function addPngFromBuf($file, $x, $y, $w = 0, $h = 0, &$data, $is_mask = false, $mask = null) { - if ( isset($this->imagelist[$file]) ) { - //debugpng - //if (DEBUGPNG) print '[addPngFromBuf Duplicate '.$file.']'; - $data = null; - $info['width'] = $this->imagelist[$file]['w']; - $info['height'] = $this->imagelist[$file]['h']; - $label = $this->imagelist[$file]['label']; - } - - else { - if ($data == null) { - $this->addMessage('addPngFromBuf error - ('.$imgname.') data not present!'); - return; - } - //debugpng - //if (DEBUGPNG) print '[addPngFromBuf file='.$file.']'; - $error = 0; - - if (!$error) { - $header = chr(137) .chr(80) .chr(78) .chr(71) .chr(13) .chr(10) .chr(26) .chr(10); - if (mb_substr($data, 0, 8, '8bit') != $header) { - $error = 1; - //debugpng - if (DEBUGPNG) print '[addPngFromFile this file does not have a valid header '.$file.']'; - - $errormsg = 'this file does not have a valid header'; - } - } - - if (!$error) { - // set pointer - $p = 8; - $len = mb_strlen($data, '8bit'); - - // cycle through the file, identifying chunks - $haveHeader = 0; - $info = array(); - $idata = ''; - $pdata = ''; - - while ($p < $len) { - $chunkLen = $this->PRVT_getBytes($data, $p, 4); - $chunkType = mb_substr($data, $p+4, 4, '8bit'); - // echo $chunkType.' - '.$chunkLen.'<br>'; - switch ($chunkType) { - case 'IHDR': - // this is where all the file information comes from - $info['width'] = $this->PRVT_getBytes($data, $p+8, 4); - $info['height'] = $this->PRVT_getBytes($data, $p+12, 4); - $info['bitDepth'] = ord($data[$p+16]); - $info['colorType'] = ord($data[$p+17]); - $info['compressionMethod'] = ord($data[$p+18]); - $info['filterMethod'] = ord($data[$p+19]); - $info['interlaceMethod'] = ord($data[$p+20]); - - //print_r($info); - $haveHeader = 1; - if ($info['compressionMethod'] != 0) { - $error = 1; - - //debugpng - if (DEBUGPNG) print '[addPngFromFile unsupported compression method '.$file.']'; - - $errormsg = 'unsupported compression method'; - } - - if ($info['filterMethod'] != 0) { - $error = 1; - - //debugpng - if (DEBUGPNG) print '[addPngFromFile unsupported filter method '.$file.']'; - - $errormsg = 'unsupported filter method'; - } - break; - - case 'PLTE': - $pdata.= mb_substr($data, $p+8, $chunkLen, '8bit'); - break; - - case 'IDAT': - $idata.= mb_substr($data, $p+8, $chunkLen, '8bit'); - break; - - case 'tRNS': - //this chunk can only occur once and it must occur after the PLTE chunk and before IDAT chunk - //print "tRNS found, color type = ".$info['colorType']."\n"; - $transparency = array(); - - if ($info['colorType'] == 3) { - // indexed color, rbg - /* corresponding to entries in the plte chunk - Alpha for palette index 0: 1 byte - Alpha for palette index 1: 1 byte - ...etc... - */ - // there will be one entry for each palette entry. up until the last non-opaque entry. - // set up an array, stretching over all palette entries which will be o (opaque) or 1 (transparent) - $transparency['type'] = 'indexed'; - $numPalette = mb_strlen($pdata, '8bit')/3; - $trans = 0; - - for ($i = $chunkLen;$i >= 0;$i--) { - if (ord($data[$p+8+$i]) == 0) { - $trans = $i; - } - } - - $transparency['data'] = $trans; - } elseif ($info['colorType'] == 0) { - // grayscale - /* corresponding to entries in the plte chunk - Gray: 2 bytes, range 0 .. (2^bitdepth)-1 - */ - // $transparency['grayscale'] = $this->PRVT_getBytes($data,$p+8,2); // g = grayscale - $transparency['type'] = 'indexed'; - - $transparency['data'] = ord($data[$p+8+1]); - } elseif ($info['colorType'] == 2) { - // truecolor - /* corresponding to entries in the plte chunk - Red: 2 bytes, range 0 .. (2^bitdepth)-1 - Green: 2 bytes, range 0 .. (2^bitdepth)-1 - Blue: 2 bytes, range 0 .. (2^bitdepth)-1 - */ - $transparency['r'] = $this->PRVT_getBytes($data, $p+8, 2); - // r from truecolor - $transparency['g'] = $this->PRVT_getBytes($data, $p+10, 2); - // g from truecolor - $transparency['b'] = $this->PRVT_getBytes($data, $p+12, 2); - // b from truecolor - - $transparency['type'] = 'color-key'; - - } else { - //unsupported transparency type - //debugpng - if (DEBUGPNG) print '[addPngFromFile unsupported transparency type '.$file.']'; - } - // KS End new code - break; - - default: - break; - } - - $p+= $chunkLen+12; - } - - - if (!$haveHeader) { - $error = 1; - - //debugpng - if (DEBUGPNG) print '[addPngFromFile information header is missing '.$file.']'; - - $errormsg = 'information header is missing'; - } - - if (isset($info['interlaceMethod']) && $info['interlaceMethod']) { - $error = 1; - - //debugpng - if (DEBUGPNG) print '[addPngFromFile no support for interlaced images in pdf '.$file.']'; - - $errormsg = 'There appears to be no support for interlaced images in pdf.'; - } - } - - if (!$error && $info['bitDepth'] > 8) { - $error = 1; - - //debugpng - if (DEBUGPNG) print '[addPngFromFile bit depth of 8 or less is supported '.$file.']'; - - $errormsg = 'only bit depth of 8 or less is supported'; - } - - if (!$error) { - switch ($info['colorType']) { - case 3: - $color = 'DeviceRGB'; - $ncolor = 1; - break; - - case 2: - $color = 'DeviceRGB'; - $ncolor = 3; - break; - - case 0: - $color = 'DeviceGray'; - $ncolor = 1; - break; - - default: - $error = 1; - - //debugpng - if (DEBUGPNG) print '[addPngFromFile alpha channel not supported: '.$info['colorType'].' '.$file.']'; - - $errormsg = 'transparancey alpha channel not supported, transparency only supported for palette images.'; - } - } - - if ($error) { - $this->addMessage('PNG error - ('.$file.') '.$errormsg); - return; - } - - //print_r($info); - // so this image is ok... add it in. - $this->numImages++; - $im = $this->numImages; - $label = 'I'.$im; - $this->numObj++; - - // $this->o_image($this->numObj,'new',array('label' => $label,'data' => $idata,'iw' => $w,'ih' => $h,'type' => 'png','ic' => $info['width'])); - $options = array( - 'label' => $label, - 'data' => $idata, - 'bitsPerComponent' => $info['bitDepth'], - 'pdata' => $pdata, - 'iw' => $info['width'], - 'ih' => $info['height'], - 'type' => 'png', - 'color' => $color, - 'ncolor' => $ncolor, - 'masked' => $mask, - 'isMask' => $is_mask, - ); - - if (isset($transparency)) { - $options['transparency'] = $transparency; - } - - $this->o_image($this->numObj, 'new', $options); - $this->imagelist[$file] = array('label' =>$label, 'w' => $info['width'], 'h' => $info['height']); - } - - if ($is_mask) { - return; - } - - if ($w <= 0 && $h <= 0) { - $w = $info['width']; - $h = $info['height']; - } - - if ($w <= 0) { - $w = $h/$info['height']*$info['width']; - } - - if ($h <= 0) { - $h = $w*$info['height']/$info['width']; - } - - $this->objects[$this->currentContents]['c'].= sprintf("\nq\n%.3F 0 0 %.3F %.3F %.3F cm", $w, $h, $x, $y); - $this->objects[$this->currentContents]['c'].= "\n/$label Do\nQ"; - } - - - /** - * add a JPEG image into the document, from a file - */ - function addJpegFromFile($img, $x, $y, $w = 0, $h = 0) { - // attempt to add a jpeg image straight from a file, using no GD commands - // note that this function is unable to operate on a remote file. - - if (!file_exists($img)) { - return; - } - - if ( isset($this->imagelist[$img]) ) { - $data = null; - $imageWidth = $this->imagelist[$img]['w']; - $imageHeight = $this->imagelist[$img]['h']; - $channels = $this->imagelist[$img]['c']; - } else { - $tmp = getimagesize($img); - $imageWidth = $tmp[0]; - $imageHeight = $tmp[1]; - - if (isset($tmp['channels'])) { - $channels = $tmp['channels']; - } else { - $channels = 3; - } - - $data = file_get_contents($img); - } - - if ($w <= 0 && $h <= 0) { - $w = $imageWidth; - } - - if ($w == 0) { - $w = $h/$imageHeight*$imageWidth; - } - - if ($h == 0) { - $h = $w*$imageHeight/$imageWidth; - } - - $this->addJpegImage_common($data, $x, $y, $w, $h, $imageWidth, $imageHeight, $channels, $img); - } - - - /** - * add an image into the document, from a GD object - * this function is not all that reliable, and I would probably encourage people to use - * the file based functions - */ - function addImage(&$img, $x, $y, $w = 0, $h = 0, $quality = 75) { - /* Todo: - * Pass in original filename as $imgname - * If already cached like image_iscached(), allow empty $img - * How to get w and h in this case? - * Then caller can check with image_iscached() whether generation of image is needed. - * - * But anyway, this function is not used! - */ - $imgname = tempnam($this->tmp, "cpdf_img_").'.jpeg'; - - // add a new image into the current location, as an external object - // add the image at $x,$y, and with width and height as defined by $w & $h - - // note that this will only work with full colour images and makes them jpg images for display - // later versions could present lossless image formats if there is interest. - - // there seems to be some problem here in that images that have quality set above 75 do not appear - // not too sure why this is, but in the meantime I have restricted this to 75. - if ($quality>75) { - $quality = 75; - } - - // if the width or height are set to zero, then set the other one based on keeping the image - // height/width ratio the same, if they are both zero, then give up :) - $imageWidth = imagesx($img); - $imageHeight = imagesy($img); - - if ($w <= 0 && $h <= 0) { - return; - } - - if ($w == 0) { - $w = $h/$imageHeight*$imageWidth; - } - - if ($h == 0) { - $h = $w*$imageHeight/$imageWidth; - } - - // gotta get the data out of the img.. - ob_start(); - imagejpeg($img, '', $quality); - $data = ob_get_clean(); - - $this->addJpegImage_common($data, $x, $y, $w, $h, $imageWidth, $imageHeight, $imgname); - } - - - /* Check if image already added to pdf image directory. - * If yes, need not to create again (pass empty data) - */ - function image_iscached($imgname) { - return isset($this->imagelist[$imgname]); - } - - - /** - * common code used by the two JPEG adding functions - * - * @access private - */ - function addJpegImage_common(&$data, $x, $y, $w = 0, $h = 0, $imageWidth, $imageHeight, $channels = 3, $imgname) { - if ( isset($this->imagelist[$imgname]) ) { - $label = $this->imagelist[$imgname]['label']; - //debugpng - //if (DEBUGPNG) print '[addJpegImage_common Duplicate '.$imgname.']'; - - } else { - if ($data == null) { - $this->addMessage('addJpegImage_common error - ('.$imgname.') data not present!'); - return; - } - - // note that this function is not to be called externally - // it is just the common code between the GD and the file options - $this->numImages++; - $im = $this->numImages; - $label = 'I'.$im; - $this->numObj++; - - $this->o_image($this->numObj, 'new', array( - 'label' => $label, - 'data' => &$data, - 'iw' => $imageWidth, - 'ih' => $imageHeight, - 'channels' => $channels - )); - $this->imagelist[$imgname] = array('label' =>$label, 'w' => $imageWidth, 'h' => $imageHeight, 'c'=> $channels ); - } - - $this->objects[$this->currentContents]['c'].= sprintf("\nq\n%.3F 0 0 %.3F %.3F %.3F cm", $w, $h, $x, $y); - $this->objects[$this->currentContents]['c'].= "\n/$label Do\nQ"; - } - - - /** - * specify where the document should open when it first starts - */ - function openHere($style, $a = 0, $b = 0, $c = 0) { - // this function will open the document at a specified page, in a specified style - // the values for style, and the required paramters are: - // 'XYZ' left, top, zoom - // 'Fit' - // 'FitH' top - // 'FitV' left - // 'FitR' left,bottom,right - // 'FitB' - // 'FitBH' top - // 'FitBV' left - $this->numObj++; - $this->o_destination($this->numObj, 'new', array('page' => $this->currentPage, 'type' => $style, 'p1' => $a, 'p2' => $b, 'p3' => $c)); - $id = $this->catalogId; - $this->o_catalog($id, 'openHere', $this->numObj); - } - - function addJavascript($code) { - $this->javascript .= $code; - } - - - /** - * create a labelled destination within the document - */ - function addDestination($label, $style, $a = 0, $b = 0, $c = 0) { - // associates the given label with the destination, it is done this way so that a destination can be specified after - // it has been linked to - // styles are the same as the 'openHere' function - $this->numObj++; - $this->o_destination($this->numObj, 'new', array('page' => $this->currentPage, 'type' => $style, 'p1' => $a, 'p2' => $b, 'p3' => $c)); - $id = $this->numObj; - - // store the label->idf relationship, note that this means that labels can be used only once - $this->destinations["$label"] = $id; - } - - - /** - * define font families, this is used to initialize the font families for the default fonts - * and for the user to add new ones for their fonts. The default bahavious can be overridden should - * that be desired. - */ - function setFontFamily($family, $options = '') { - if (!is_array($options)) { - if ($family === 'init') { - // set the known family groups - // these font families will be used to enable bold and italic markers to be included - // within text streams. html forms will be used... <b></b> <i></i> - $this->fontFamilies['Helvetica.afm'] = - array('b' => 'Helvetica-Bold.afm', - 'i' => 'Helvetica-Oblique.afm', - 'bi' => 'Helvetica-BoldOblique.afm', - 'ib' => 'Helvetica-BoldOblique.afm'); - - $this->fontFamilies['Courier.afm'] = - array('b' => 'Courier-Bold.afm', - 'i' => 'Courier-Oblique.afm', - 'bi' => 'Courier-BoldOblique.afm', - 'ib' => 'Courier-BoldOblique.afm'); - - $this->fontFamilies['Times-Roman.afm'] = - array('b' => 'Times-Bold.afm', - 'i' => 'Times-Italic.afm', - 'bi' => 'Times-BoldItalic.afm', - 'ib' => 'Times-BoldItalic.afm'); - } - } else { - - // the user is trying to set a font family - // note that this can also be used to set the base ones to something else - if (mb_strlen($family)) { - $this->fontFamilies[$family] = $options; - } - } - } - - /** - * used to add messages for use in debugging - */ - function addMessage($message) { - $this->messages.= $message."\n"; - } - - - /** - * a few functions which should allow the document to be treated transactionally. - */ - function transaction($action) { - switch ($action) { - case 'start': - // store all the data away into the checkpoint variable - $data = get_object_vars($this); - $this->checkpoint = $data; - unset($data); - break; - - case 'commit': - if (is_array($this->checkpoint) && isset($this->checkpoint['checkpoint'])) { - $tmp = $this->checkpoint['checkpoint']; - $this->checkpoint = $tmp; - unset($tmp); - } else { - $this->checkpoint = ''; - } - break; - - case 'rewind': - // do not destroy the current checkpoint, but move us back to the state then, so that we can try again - if (is_array($this->checkpoint)) { - // can only abort if were inside a checkpoint - $tmp = $this->checkpoint; - - foreach ($tmp as $k => $v) { - if ($k !== 'checkpoint') { - $this->$k = $v; - } - } - unset($tmp); - } - break; - - case 'abort': - if (is_array($this->checkpoint)) { - // can only abort if were inside a checkpoint - $tmp = $this->checkpoint; - foreach ($tmp as $k => $v) { - $this->$k = $v; - } - unset($tmp); - } - break; - } - } -} -// end of class diff --git a/application/third_party/dompdf/lib/fonts/Courier-Bold.afm b/application/third_party/dompdf/lib/fonts/Courier-Bold.afm deleted file mode 100644 index 0ccfd618..00000000 --- a/application/third_party/dompdf/lib/fonts/Courier-Bold.afm +++ /dev/null @@ -1,344 +0,0 @@ -StartFontMetrics 4.1 -Comment Copyright (c) 1989, 1990, 1991, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. -Comment Creation Date: Mon Jun 23 16:28:00 0:00:00 -Comment UniqueID 43048 -Comment VMusage 41139 52164 -FontName Courier-Bold -FullName Courier Bold -FamilyName Courier -Weight Bold -ItalicAngle 0 -IsFixedPitch true -CharacterSet ExtendedRoman -FontBBox -113 -250 749 801 -UnderlinePosition -100 -UnderlineThickness 50 -Version 003.000 -Notice Copyright (c) 1989, 1990, 1991, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. -EncodingScheme WinAnsiEncoding -CapHeight 562 -XHeight 439 -Ascender 629 -Descender -157 -StdHW 84 -StdVW 106 -StartCharMetrics 317 -C 32 ; WX 600 ; N space ; B 0 0 0 0 ; -C 160 ; WX 600 ; N space ; B 0 0 0 0 ; -C 33 ; WX 600 ; N exclam ; B 202 -15 398 572 ; -C 34 ; WX 600 ; N quotedbl ; B 135 277 465 562 ; -C 35 ; WX 600 ; N numbersign ; B 56 -45 544 651 ; -C 36 ; WX 600 ; N dollar ; B 82 -126 519 666 ; -C 37 ; WX 600 ; N percent ; B 5 -15 595 616 ; -C 38 ; WX 600 ; N ampersand ; B 36 -15 546 543 ; -C 146 ; WX 600 ; N quoteright ; B 171 277 423 562 ; -C 40 ; WX 600 ; N parenleft ; B 219 -102 461 616 ; -C 41 ; WX 600 ; N parenright ; B 139 -102 381 616 ; -C 42 ; WX 600 ; N asterisk ; B 91 219 509 601 ; -C 43 ; WX 600 ; N plus ; B 71 39 529 478 ; -C 44 ; WX 600 ; N comma ; B 123 -111 393 174 ; -C 45 ; WX 600 ; N hyphen ; B 100 203 500 313 ; -C 173 ; WX 600 ; N hyphen ; B 100 203 500 313 ; -C 46 ; WX 600 ; N period ; B 192 -15 408 171 ; -C 47 ; WX 600 ; N slash ; B 98 -77 502 626 ; -C 48 ; WX 600 ; N zero ; B 87 -15 513 616 ; -C 49 ; WX 600 ; N one ; B 81 0 539 616 ; -C 50 ; WX 600 ; N two ; B 61 0 499 616 ; -C 51 ; WX 600 ; N three ; B 63 -15 501 616 ; -C 52 ; WX 600 ; N four ; B 53 0 507 616 ; -C 53 ; WX 600 ; N five ; B 70 -15 521 601 ; -C 54 ; WX 600 ; N six ; B 90 -15 521 616 ; -C 55 ; WX 600 ; N seven ; B 55 0 494 601 ; -C 56 ; WX 600 ; N eight ; B 83 -15 517 616 ; -C 57 ; WX 600 ; N nine ; B 79 -15 510 616 ; -C 58 ; WX 600 ; N colon ; B 191 -15 407 425 ; -C 59 ; WX 600 ; N semicolon ; B 123 -111 408 425 ; -C 60 ; WX 600 ; N less ; B 66 15 523 501 ; -C 61 ; WX 600 ; N equal ; B 71 118 529 398 ; -C 62 ; WX 600 ; N greater ; B 77 15 534 501 ; -C 63 ; WX 600 ; N question ; B 98 -14 501 580 ; -C 64 ; WX 600 ; N at ; B 16 -15 584 616 ; -C 65 ; WX 600 ; N A ; B -9 0 609 562 ; -C 66 ; WX 600 ; N B ; B 30 0 573 562 ; -C 67 ; WX 600 ; N C ; B 22 -18 560 580 ; -C 68 ; WX 600 ; N D ; B 30 0 594 562 ; -C 69 ; WX 600 ; N E ; B 25 0 560 562 ; -C 70 ; WX 600 ; N F ; B 39 0 570 562 ; -C 71 ; WX 600 ; N G ; B 22 -18 594 580 ; -C 72 ; WX 600 ; N H ; B 20 0 580 562 ; -C 73 ; WX 600 ; N I ; B 77 0 523 562 ; -C 74 ; WX 600 ; N J ; B 37 -18 601 562 ; -C 75 ; WX 600 ; N K ; B 21 0 599 562 ; -C 76 ; WX 600 ; N L ; B 39 0 578 562 ; -C 77 ; WX 600 ; N M ; B -2 0 602 562 ; -C 78 ; WX 600 ; N N ; B 8 -12 610 562 ; -C 79 ; WX 600 ; N O ; B 22 -18 578 580 ; -C 80 ; WX 600 ; N P ; B 48 0 559 562 ; -C 81 ; WX 600 ; N Q ; B 32 -138 578 580 ; -C 82 ; WX 600 ; N R ; B 24 0 599 562 ; -C 83 ; WX 600 ; N S ; B 47 -22 553 582 ; -C 84 ; WX 600 ; N T ; B 21 0 579 562 ; -C 85 ; WX 600 ; N U ; B 4 -18 596 562 ; -C 86 ; WX 600 ; N V ; B -13 0 613 562 ; -C 87 ; WX 600 ; N W ; B -18 0 618 562 ; -C 88 ; WX 600 ; N X ; B 12 0 588 562 ; -C 89 ; WX 600 ; N Y ; B 12 0 589 562 ; -C 90 ; WX 600 ; N Z ; B 62 0 539 562 ; -C 91 ; WX 600 ; N bracketleft ; B 245 -102 475 616 ; -C 92 ; WX 600 ; N backslash ; B 99 -77 503 626 ; -C 93 ; WX 600 ; N bracketright ; B 125 -102 355 616 ; -C 94 ; WX 600 ; N asciicircum ; B 108 250 492 616 ; -C 95 ; WX 600 ; N underscore ; B 0 -125 600 -75 ; -C 145 ; WX 600 ; N quoteleft ; B 178 277 428 562 ; -C 97 ; WX 600 ; N a ; B 35 -15 570 454 ; -C 98 ; WX 600 ; N b ; B 0 -15 584 626 ; -C 99 ; WX 600 ; N c ; B 40 -15 545 459 ; -C 100 ; WX 600 ; N d ; B 20 -15 591 626 ; -C 101 ; WX 600 ; N e ; B 40 -15 563 454 ; -C 102 ; WX 600 ; N f ; B 83 0 547 626 ; L i fi ; L l fl ; -C 103 ; WX 600 ; N g ; B 30 -146 580 454 ; -C 104 ; WX 600 ; N h ; B 5 0 592 626 ; -C 105 ; WX 600 ; N i ; B 77 0 523 658 ; -C 106 ; WX 600 ; N j ; B 63 -146 440 658 ; -C 107 ; WX 600 ; N k ; B 20 0 585 626 ; -C 108 ; WX 600 ; N l ; B 77 0 523 626 ; -C 109 ; WX 600 ; N m ; B -22 0 626 454 ; -C 110 ; WX 600 ; N n ; B 18 0 592 454 ; -C 111 ; WX 600 ; N o ; B 30 -15 570 454 ; -C 112 ; WX 600 ; N p ; B -1 -142 570 454 ; -C 113 ; WX 600 ; N q ; B 20 -142 591 454 ; -C 114 ; WX 600 ; N r ; B 47 0 580 454 ; -C 115 ; WX 600 ; N s ; B 68 -17 535 459 ; -C 116 ; WX 600 ; N t ; B 47 -15 532 562 ; -C 117 ; WX 600 ; N u ; B -1 -15 569 439 ; -C 118 ; WX 600 ; N v ; B -1 0 601 439 ; -C 119 ; WX 600 ; N w ; B -18 0 618 439 ; -C 120 ; WX 600 ; N x ; B 6 0 594 439 ; -C 121 ; WX 600 ; N y ; B -4 -142 601 439 ; -C 122 ; WX 600 ; N z ; B 81 0 520 439 ; -C 123 ; WX 600 ; N braceleft ; B 160 -102 464 616 ; -C 124 ; WX 600 ; N bar ; B 255 -250 345 750 ; -C 125 ; WX 600 ; N braceright ; B 136 -102 440 616 ; -C 126 ; WX 600 ; N asciitilde ; B 71 153 530 356 ; -C 161 ; WX 600 ; N exclamdown ; B 202 -146 398 449 ; -C 162 ; WX 600 ; N cent ; B 66 -49 518 614 ; -C 163 ; WX 600 ; N sterling ; B 72 -28 558 611 ; -C -1 ; WX 600 ; N fraction ; B 25 -60 576 661 ; -C 165 ; WX 600 ; N yen ; B 10 0 590 562 ; -C 131 ; WX 600 ; N florin ; B -30 -131 572 616 ; -C 167 ; WX 600 ; N section ; B 83 -70 517 580 ; -C 164 ; WX 600 ; N currency ; B 54 49 546 517 ; -C 39 ; WX 600 ; N quotesingle ; B 227 277 373 562 ; -C 147 ; WX 600 ; N quotedblleft ; B 71 277 535 562 ; -C 170 ; WX 600 ; N guillemotleft ; B 8 70 553 446 ; -C 139 ; WX 600 ; N guilsinglleft ; B 141 70 459 446 ; -C 155 ; WX 600 ; N guilsinglright ; B 141 70 459 446 ; -C -1 ; WX 600 ; N fi ; B 12 0 593 626 ; -C -1 ; WX 600 ; N fl ; B 12 0 593 626 ; -C 150 ; WX 600 ; N endash ; B 65 203 535 313 ; -C 134 ; WX 600 ; N dagger ; B 106 -70 494 580 ; -C 135 ; WX 600 ; N daggerdbl ; B 106 -70 494 580 ; -C 183 ; WX 600 ; N periodcentered ; B 196 165 404 351 ; -C 182 ; WX 600 ; N paragraph ; B 6 -70 576 580 ; -C 149 ; WX 600 ; N bullet ; B 140 132 460 430 ; -C 130 ; WX 600 ; N quotesinglbase ; B 175 -142 427 143 ; -C 132 ; WX 600 ; N quotedblbase ; B 65 -142 529 143 ; -C 148 ; WX 600 ; N quotedblright ; B 61 277 525 562 ; -C 187 ; WX 600 ; N guillemotright ; B 47 70 592 446 ; -C 133 ; WX 600 ; N ellipsis ; B 26 -15 574 116 ; -C 137 ; WX 600 ; N perthousand ; B -113 -15 713 616 ; -C 191 ; WX 600 ; N questiondown ; B 99 -146 502 449 ; -C 96 ; WX 600 ; N grave ; B 132 508 395 661 ; -C 180 ; WX 600 ; N acute ; B 205 508 468 661 ; -C 136 ; WX 600 ; N circumflex ; B 103 483 497 657 ; -C 152 ; WX 600 ; N tilde ; B 89 493 512 636 ; -C 175 ; WX 600 ; N macron ; B 88 505 512 585 ; -C -1 ; WX 600 ; N breve ; B 83 468 517 631 ; -C -1 ; WX 600 ; N dotaccent ; B 230 498 370 638 ; -C 168 ; WX 600 ; N dieresis ; B 128 498 472 638 ; -C -1 ; WX 600 ; N ring ; B 198 481 402 678 ; -C 184 ; WX 600 ; N cedilla ; B 205 -206 387 0 ; -C -1 ; WX 600 ; N hungarumlaut ; B 68 488 588 661 ; -C -1 ; WX 600 ; N ogonek ; B 169 -199 400 0 ; -C -1 ; WX 600 ; N caron ; B 103 493 497 667 ; -C 151 ; WX 600 ; N emdash ; B -10 203 610 313 ; -C 198 ; WX 600 ; N AE ; B -29 0 602 562 ; -C 170 ; WX 600 ; N ordfeminine ; B 147 196 453 580 ; -C -1 ; WX 600 ; N Lslash ; B 39 0 578 562 ; -C 216 ; WX 600 ; N Oslash ; B 22 -22 578 584 ; -C 140 ; WX 600 ; N OE ; B -25 0 595 562 ; -C 186 ; WX 600 ; N ordmasculine ; B 147 196 453 580 ; -C 230 ; WX 600 ; N ae ; B -4 -15 601 454 ; -C -1 ; WX 600 ; N dotlessi ; B 77 0 523 439 ; -C -1 ; WX 600 ; N lslash ; B 77 0 523 626 ; -C 248 ; WX 600 ; N oslash ; B 30 -24 570 463 ; -C 156 ; WX 600 ; N oe ; B -18 -15 611 454 ; -C 223 ; WX 600 ; N germandbls ; B 22 -15 596 626 ; -C 207 ; WX 600 ; N Idieresis ; B 77 0 523 761 ; -C 233 ; WX 600 ; N eacute ; B 40 -15 563 661 ; -C -1 ; WX 600 ; N abreve ; B 35 -15 570 661 ; -C -1 ; WX 600 ; N uhungarumlaut ; B -1 -15 628 661 ; -C -1 ; WX 600 ; N ecaron ; B 40 -15 563 667 ; -C 159 ; WX 600 ; N Ydieresis ; B 12 0 589 761 ; -C 247 ; WX 600 ; N divide ; B 71 16 529 500 ; -C 221 ; WX 600 ; N Yacute ; B 12 0 589 784 ; -C 194 ; WX 600 ; N Acircumflex ; B -9 0 609 780 ; -C 225 ; WX 600 ; N aacute ; B 35 -15 570 661 ; -C 219 ; WX 600 ; N Ucircumflex ; B 4 -18 596 780 ; -C 253 ; WX 600 ; N yacute ; B -4 -142 601 661 ; -C -1 ; WX 600 ; N scommaaccent ; B 68 -250 535 459 ; -C 234 ; WX 600 ; N ecircumflex ; B 40 -15 563 657 ; -C -1 ; WX 600 ; N Uring ; B 4 -18 596 801 ; -C 220 ; WX 600 ; N Udieresis ; B 4 -18 596 761 ; -C -1 ; WX 600 ; N aogonek ; B 35 -199 586 454 ; -C 218 ; WX 600 ; N Uacute ; B 4 -18 596 784 ; -C -1 ; WX 600 ; N uogonek ; B -1 -199 585 439 ; -C 203 ; WX 600 ; N Edieresis ; B 25 0 560 761 ; -C -1 ; WX 600 ; N Dcroat ; B 30 0 594 562 ; -C -1 ; WX 600 ; N commaaccent ; B 205 -250 397 -57 ; -C 169 ; WX 600 ; N copyright ; B 0 -18 600 580 ; -C -1 ; WX 600 ; N Emacron ; B 25 0 560 708 ; -C -1 ; WX 600 ; N ccaron ; B 40 -15 545 667 ; -C 229 ; WX 600 ; N aring ; B 35 -15 570 678 ; -C -1 ; WX 600 ; N Ncommaaccent ; B 8 -250 610 562 ; -C -1 ; WX 600 ; N lacute ; B 77 0 523 801 ; -C 224 ; WX 600 ; N agrave ; B 35 -15 570 661 ; -C -1 ; WX 600 ; N Tcommaaccent ; B 21 -250 579 562 ; -C -1 ; WX 600 ; N Cacute ; B 22 -18 560 784 ; -C 227 ; WX 600 ; N atilde ; B 35 -15 570 636 ; -C -1 ; WX 600 ; N Edotaccent ; B 25 0 560 761 ; -C 154 ; WX 600 ; N scaron ; B 68 -17 535 667 ; -C -1 ; WX 600 ; N scedilla ; B 68 -206 535 459 ; -C 237 ; WX 600 ; N iacute ; B 77 0 523 661 ; -C -1 ; WX 600 ; N lozenge ; B 66 0 534 740 ; -C -1 ; WX 600 ; N Rcaron ; B 24 0 599 790 ; -C -1 ; WX 600 ; N Gcommaaccent ; B 22 -250 594 580 ; -C 251 ; WX 600 ; N ucircumflex ; B -1 -15 569 657 ; -C 226 ; WX 600 ; N acircumflex ; B 35 -15 570 657 ; -C -1 ; WX 600 ; N Amacron ; B -9 0 609 708 ; -C -1 ; WX 600 ; N rcaron ; B 47 0 580 667 ; -C 231 ; WX 600 ; N ccedilla ; B 40 -206 545 459 ; -C -1 ; WX 600 ; N Zdotaccent ; B 62 0 539 761 ; -C 222 ; WX 600 ; N Thorn ; B 48 0 557 562 ; -C -1 ; WX 600 ; N Omacron ; B 22 -18 578 708 ; -C -1 ; WX 600 ; N Racute ; B 24 0 599 784 ; -C -1 ; WX 600 ; N Sacute ; B 47 -22 553 784 ; -C -1 ; WX 600 ; N dcaron ; B 20 -15 727 626 ; -C -1 ; WX 600 ; N Umacron ; B 4 -18 596 708 ; -C -1 ; WX 600 ; N uring ; B -1 -15 569 678 ; -C 179 ; WX 600 ; N threesuperior ; B 138 222 433 616 ; -C 210 ; WX 600 ; N Ograve ; B 22 -18 578 784 ; -C 192 ; WX 600 ; N Agrave ; B -9 0 609 784 ; -C -1 ; WX 600 ; N Abreve ; B -9 0 609 784 ; -C 215 ; WX 600 ; N multiply ; B 81 39 520 478 ; -C 250 ; WX 600 ; N uacute ; B -1 -15 569 661 ; -C -1 ; WX 600 ; N Tcaron ; B 21 0 579 790 ; -C -1 ; WX 600 ; N partialdiff ; B 63 -38 537 728 ; -C 255 ; WX 600 ; N ydieresis ; B -4 -142 601 638 ; -C -1 ; WX 600 ; N Nacute ; B 8 -12 610 784 ; -C 238 ; WX 600 ; N icircumflex ; B 73 0 523 657 ; -C 202 ; WX 600 ; N Ecircumflex ; B 25 0 560 780 ; -C 228 ; WX 600 ; N adieresis ; B 35 -15 570 638 ; -C 235 ; WX 600 ; N edieresis ; B 40 -15 563 638 ; -C -1 ; WX 600 ; N cacute ; B 40 -15 545 661 ; -C -1 ; WX 600 ; N nacute ; B 18 0 592 661 ; -C -1 ; WX 600 ; N umacron ; B -1 -15 569 585 ; -C -1 ; WX 600 ; N Ncaron ; B 8 -12 610 790 ; -C 205 ; WX 600 ; N Iacute ; B 77 0 523 784 ; -C 177 ; WX 600 ; N plusminus ; B 71 24 529 515 ; -C 166 ; WX 600 ; N brokenbar ; B 255 -175 345 675 ; -C 174 ; WX 600 ; N registered ; B 0 -18 600 580 ; -C -1 ; WX 600 ; N Gbreve ; B 22 -18 594 784 ; -C -1 ; WX 600 ; N Idotaccent ; B 77 0 523 761 ; -C -1 ; WX 600 ; N summation ; B 15 -10 586 706 ; -C 200 ; WX 600 ; N Egrave ; B 25 0 560 784 ; -C -1 ; WX 600 ; N racute ; B 47 0 580 661 ; -C -1 ; WX 600 ; N omacron ; B 30 -15 570 585 ; -C -1 ; WX 600 ; N Zacute ; B 62 0 539 784 ; -C 142 ; WX 600 ; N Zcaron ; B 62 0 539 790 ; -C -1 ; WX 600 ; N greaterequal ; B 26 0 523 696 ; -C 208 ; WX 600 ; N Eth ; B 30 0 594 562 ; -C 199 ; WX 600 ; N Ccedilla ; B 22 -206 560 580 ; -C -1 ; WX 600 ; N lcommaaccent ; B 77 -250 523 626 ; -C -1 ; WX 600 ; N tcaron ; B 47 -15 532 703 ; -C -1 ; WX 600 ; N eogonek ; B 40 -199 563 454 ; -C -1 ; WX 600 ; N Uogonek ; B 4 -199 596 562 ; -C 193 ; WX 600 ; N Aacute ; B -9 0 609 784 ; -C 196 ; WX 600 ; N Adieresis ; B -9 0 609 761 ; -C 232 ; WX 600 ; N egrave ; B 40 -15 563 661 ; -C -1 ; WX 600 ; N zacute ; B 81 0 520 661 ; -C -1 ; WX 600 ; N iogonek ; B 77 -199 523 658 ; -C 211 ; WX 600 ; N Oacute ; B 22 -18 578 784 ; -C 243 ; WX 600 ; N oacute ; B 30 -15 570 661 ; -C -1 ; WX 600 ; N amacron ; B 35 -15 570 585 ; -C -1 ; WX 600 ; N sacute ; B 68 -17 535 661 ; -C 239 ; WX 600 ; N idieresis ; B 77 0 523 618 ; -C 212 ; WX 600 ; N Ocircumflex ; B 22 -18 578 780 ; -C 217 ; WX 600 ; N Ugrave ; B 4 -18 596 784 ; -C -1 ; WX 600 ; N Delta ; B 6 0 594 688 ; -C 254 ; WX 600 ; N thorn ; B -14 -142 570 626 ; -C 178 ; WX 600 ; N twosuperior ; B 143 230 436 616 ; -C 214 ; WX 600 ; N Odieresis ; B 22 -18 578 761 ; -C 181 ; WX 600 ; N mu ; B -1 -142 569 439 ; -C 236 ; WX 600 ; N igrave ; B 77 0 523 661 ; -C -1 ; WX 600 ; N ohungarumlaut ; B 30 -15 668 661 ; -C -1 ; WX 600 ; N Eogonek ; B 25 -199 576 562 ; -C -1 ; WX 600 ; N dcroat ; B 20 -15 591 626 ; -C 190 ; WX 600 ; N threequarters ; B -47 -60 648 661 ; -C -1 ; WX 600 ; N Scedilla ; B 47 -206 553 582 ; -C -1 ; WX 600 ; N lcaron ; B 77 0 597 626 ; -C -1 ; WX 600 ; N Kcommaaccent ; B 21 -250 599 562 ; -C -1 ; WX 600 ; N Lacute ; B 39 0 578 784 ; -C 153 ; WX 600 ; N trademark ; B -9 230 749 562 ; -C -1 ; WX 600 ; N edotaccent ; B 40 -15 563 638 ; -C 204 ; WX 600 ; N Igrave ; B 77 0 523 784 ; -C -1 ; WX 600 ; N Imacron ; B 77 0 523 708 ; -C -1 ; WX 600 ; N Lcaron ; B 39 0 637 562 ; -C 189 ; WX 600 ; N onehalf ; B -47 -60 648 661 ; -C -1 ; WX 600 ; N lessequal ; B 26 0 523 696 ; -C 244 ; WX 600 ; N ocircumflex ; B 30 -15 570 657 ; -C 241 ; WX 600 ; N ntilde ; B 18 0 592 636 ; -C -1 ; WX 600 ; N Uhungarumlaut ; B 4 -18 638 784 ; -C 201 ; WX 600 ; N Eacute ; B 25 0 560 784 ; -C -1 ; WX 600 ; N emacron ; B 40 -15 563 585 ; -C -1 ; WX 600 ; N gbreve ; B 30 -146 580 661 ; -C 188 ; WX 600 ; N onequarter ; B -56 -60 656 661 ; -C 138 ; WX 600 ; N Scaron ; B 47 -22 553 790 ; -C -1 ; WX 600 ; N Scommaaccent ; B 47 -250 553 582 ; -C -1 ; WX 600 ; N Ohungarumlaut ; B 22 -18 628 784 ; -C 176 ; WX 600 ; N degree ; B 86 243 474 616 ; -C 242 ; WX 600 ; N ograve ; B 30 -15 570 661 ; -C -1 ; WX 600 ; N Ccaron ; B 22 -18 560 790 ; -C 249 ; WX 600 ; N ugrave ; B -1 -15 569 661 ; -C -1 ; WX 600 ; N radical ; B -19 -104 473 778 ; -C -1 ; WX 600 ; N Dcaron ; B 30 0 594 790 ; -C -1 ; WX 600 ; N rcommaaccent ; B 47 -250 580 454 ; -C 209 ; WX 600 ; N Ntilde ; B 8 -12 610 759 ; -C 245 ; WX 600 ; N otilde ; B 30 -15 570 636 ; -C -1 ; WX 600 ; N Rcommaaccent ; B 24 -250 599 562 ; -C -1 ; WX 600 ; N Lcommaaccent ; B 39 -250 578 562 ; -C 195 ; WX 600 ; N Atilde ; B -9 0 609 759 ; -C -1 ; WX 600 ; N Aogonek ; B -9 -199 625 562 ; -C 197 ; WX 600 ; N Aring ; B -9 0 609 801 ; -C 213 ; WX 600 ; N Otilde ; B 22 -18 578 759 ; -C -1 ; WX 600 ; N zdotaccent ; B 81 0 520 638 ; -C -1 ; WX 600 ; N Ecaron ; B 25 0 560 790 ; -C -1 ; WX 600 ; N Iogonek ; B 77 -199 523 562 ; -C -1 ; WX 600 ; N kcommaaccent ; B 20 -250 585 626 ; -C -1 ; WX 600 ; N minus ; B 71 203 529 313 ; -C 206 ; WX 600 ; N Icircumflex ; B 77 0 523 780 ; -C -1 ; WX 600 ; N ncaron ; B 18 0 592 667 ; -C -1 ; WX 600 ; N tcommaaccent ; B 47 -250 532 562 ; -C 172 ; WX 600 ; N logicalnot ; B 71 103 529 413 ; -C 246 ; WX 600 ; N odieresis ; B 30 -15 570 638 ; -C 252 ; WX 600 ; N udieresis ; B -1 -15 569 638 ; -C -1 ; WX 600 ; N notequal ; B 12 -47 537 563 ; -C -1 ; WX 600 ; N gcommaaccent ; B 30 -146 580 714 ; -C 240 ; WX 600 ; N eth ; B 58 -27 543 626 ; -C 158 ; WX 600 ; N zcaron ; B 81 0 520 667 ; -C -1 ; WX 600 ; N ncommaaccent ; B 18 -250 592 454 ; -C 185 ; WX 600 ; N onesuperior ; B 153 230 447 616 ; -C -1 ; WX 600 ; N imacron ; B 77 0 523 585 ; -C 128 ; WX 600 ; N Euro ; B 0 0 0 0 ; -EndCharMetrics -EndFontMetrics diff --git a/application/third_party/dompdf/lib/fonts/Courier-BoldOblique.afm b/application/third_party/dompdf/lib/fonts/Courier-BoldOblique.afm deleted file mode 100644 index 215d8be6..00000000 --- a/application/third_party/dompdf/lib/fonts/Courier-BoldOblique.afm +++ /dev/null @@ -1,344 +0,0 @@ -StartFontMetrics 4.1 -Comment Copyright (c) 1989, 1990, 1991, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. -Comment Creation Date: Mon Jun 23 16:28:46 0:00:00 -Comment UniqueID 43049 -Comment VMusage 17529 79244 -FontName Courier-BoldOblique -FullName Courier Bold Oblique -FamilyName Courier -Weight Bold -ItalicAngle -12 -IsFixedPitch true -CharacterSet ExtendedRoman -FontBBox -57 -250 869 801 -UnderlinePosition -100 -UnderlineThickness 50 -Version 3 -Notice Copyright (c) 1989, 1990, 1991, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. -EncodingScheme WinAnsiEncoding -CapHeight 562 -XHeight 439 -Ascender 629 -Descender -157 -StdHW 84 -StdVW 106 -StartCharMetrics 317 -C 32 ; WX 600 ; N space ; B 0 0 0 0 ; -C 160 ; WX 600 ; N space ; B 0 0 0 0 ; -C 33 ; WX 600 ; N exclam ; B 215 -15 495 572 ; -C 34 ; WX 600 ; N quotedbl ; B 211 277 585 562 ; -C 35 ; WX 600 ; N numbersign ; B 88 -45 641 651 ; -C 36 ; WX 600 ; N dollar ; B 87 -126 630 666 ; -C 37 ; WX 600 ; N percent ; B 101 -15 625 616 ; -C 38 ; WX 600 ; N ampersand ; B 61 -15 595 543 ; -C 146 ; WX 600 ; N quoteright ; B 229 277 543 562 ; -C 40 ; WX 600 ; N parenleft ; B 265 -102 592 616 ; -C 41 ; WX 600 ; N parenright ; B 117 -102 444 616 ; -C 42 ; WX 600 ; N asterisk ; B 179 219 598 601 ; -C 43 ; WX 600 ; N plus ; B 114 39 596 478 ; -C 44 ; WX 600 ; N comma ; B 99 -111 430 174 ; -C 45 ; WX 600 ; N hyphen ; B 143 203 567 313 ; -C 173 ; WX 600 ; N hyphen ; B 143 203 567 313 ; -C 46 ; WX 600 ; N period ; B 206 -15 427 171 ; -C 47 ; WX 600 ; N slash ; B 90 -77 626 626 ; -C 48 ; WX 600 ; N zero ; B 135 -15 593 616 ; -C 49 ; WX 600 ; N one ; B 93 0 562 616 ; -C 50 ; WX 600 ; N two ; B 61 0 594 616 ; -C 51 ; WX 600 ; N three ; B 71 -15 571 616 ; -C 52 ; WX 600 ; N four ; B 81 0 559 616 ; -C 53 ; WX 600 ; N five ; B 77 -15 621 601 ; -C 54 ; WX 600 ; N six ; B 135 -15 652 616 ; -C 55 ; WX 600 ; N seven ; B 147 0 622 601 ; -C 56 ; WX 600 ; N eight ; B 115 -15 604 616 ; -C 57 ; WX 600 ; N nine ; B 75 -15 592 616 ; -C 58 ; WX 600 ; N colon ; B 205 -15 480 425 ; -C 59 ; WX 600 ; N semicolon ; B 99 -111 481 425 ; -C 60 ; WX 600 ; N less ; B 120 15 613 501 ; -C 61 ; WX 600 ; N equal ; B 96 118 614 398 ; -C 62 ; WX 600 ; N greater ; B 97 15 589 501 ; -C 63 ; WX 600 ; N question ; B 183 -14 592 580 ; -C 64 ; WX 600 ; N at ; B 65 -15 642 616 ; -C 65 ; WX 600 ; N A ; B -9 0 632 562 ; -C 66 ; WX 600 ; N B ; B 30 0 630 562 ; -C 67 ; WX 600 ; N C ; B 74 -18 675 580 ; -C 68 ; WX 600 ; N D ; B 30 0 664 562 ; -C 69 ; WX 600 ; N E ; B 25 0 670 562 ; -C 70 ; WX 600 ; N F ; B 39 0 684 562 ; -C 71 ; WX 600 ; N G ; B 74 -18 675 580 ; -C 72 ; WX 600 ; N H ; B 20 0 700 562 ; -C 73 ; WX 600 ; N I ; B 77 0 643 562 ; -C 74 ; WX 600 ; N J ; B 58 -18 721 562 ; -C 75 ; WX 600 ; N K ; B 21 0 692 562 ; -C 76 ; WX 600 ; N L ; B 39 0 636 562 ; -C 77 ; WX 600 ; N M ; B -2 0 722 562 ; -C 78 ; WX 600 ; N N ; B 8 -12 730 562 ; -C 79 ; WX 600 ; N O ; B 74 -18 645 580 ; -C 80 ; WX 600 ; N P ; B 48 0 643 562 ; -C 81 ; WX 600 ; N Q ; B 83 -138 636 580 ; -C 82 ; WX 600 ; N R ; B 24 0 617 562 ; -C 83 ; WX 600 ; N S ; B 54 -22 673 582 ; -C 84 ; WX 600 ; N T ; B 86 0 679 562 ; -C 85 ; WX 600 ; N U ; B 101 -18 716 562 ; -C 86 ; WX 600 ; N V ; B 84 0 733 562 ; -C 87 ; WX 600 ; N W ; B 79 0 738 562 ; -C 88 ; WX 600 ; N X ; B 12 0 690 562 ; -C 89 ; WX 600 ; N Y ; B 109 0 709 562 ; -C 90 ; WX 600 ; N Z ; B 62 0 637 562 ; -C 91 ; WX 600 ; N bracketleft ; B 223 -102 606 616 ; -C 92 ; WX 600 ; N backslash ; B 222 -77 496 626 ; -C 93 ; WX 600 ; N bracketright ; B 103 -102 486 616 ; -C 94 ; WX 600 ; N asciicircum ; B 171 250 556 616 ; -C 95 ; WX 600 ; N underscore ; B -27 -125 585 -75 ; -C 145 ; WX 600 ; N quoteleft ; B 297 277 487 562 ; -C 97 ; WX 600 ; N a ; B 61 -15 593 454 ; -C 98 ; WX 600 ; N b ; B 13 -15 636 626 ; -C 99 ; WX 600 ; N c ; B 81 -15 631 459 ; -C 100 ; WX 600 ; N d ; B 60 -15 645 626 ; -C 101 ; WX 600 ; N e ; B 81 -15 605 454 ; -C 102 ; WX 600 ; N f ; B 83 0 677 626 ; L i fi ; L l fl ; -C 103 ; WX 600 ; N g ; B 40 -146 674 454 ; -C 104 ; WX 600 ; N h ; B 18 0 615 626 ; -C 105 ; WX 600 ; N i ; B 77 0 546 658 ; -C 106 ; WX 600 ; N j ; B 36 -146 580 658 ; -C 107 ; WX 600 ; N k ; B 33 0 643 626 ; -C 108 ; WX 600 ; N l ; B 77 0 546 626 ; -C 109 ; WX 600 ; N m ; B -22 0 649 454 ; -C 110 ; WX 600 ; N n ; B 18 0 615 454 ; -C 111 ; WX 600 ; N o ; B 71 -15 622 454 ; -C 112 ; WX 600 ; N p ; B -32 -142 622 454 ; -C 113 ; WX 600 ; N q ; B 60 -142 685 454 ; -C 114 ; WX 600 ; N r ; B 47 0 655 454 ; -C 115 ; WX 600 ; N s ; B 66 -17 608 459 ; -C 116 ; WX 600 ; N t ; B 118 -15 567 562 ; -C 117 ; WX 600 ; N u ; B 70 -15 592 439 ; -C 118 ; WX 600 ; N v ; B 70 0 695 439 ; -C 119 ; WX 600 ; N w ; B 53 0 712 439 ; -C 120 ; WX 600 ; N x ; B 6 0 671 439 ; -C 121 ; WX 600 ; N y ; B -21 -142 695 439 ; -C 122 ; WX 600 ; N z ; B 81 0 614 439 ; -C 123 ; WX 600 ; N braceleft ; B 203 -102 595 616 ; -C 124 ; WX 600 ; N bar ; B 201 -250 505 750 ; -C 125 ; WX 600 ; N braceright ; B 114 -102 506 616 ; -C 126 ; WX 600 ; N asciitilde ; B 120 153 590 356 ; -C 161 ; WX 600 ; N exclamdown ; B 196 -146 477 449 ; -C 162 ; WX 600 ; N cent ; B 121 -49 605 614 ; -C 163 ; WX 600 ; N sterling ; B 106 -28 650 611 ; -C -1 ; WX 600 ; N fraction ; B 22 -60 708 661 ; -C 165 ; WX 600 ; N yen ; B 98 0 710 562 ; -C 131 ; WX 600 ; N florin ; B -57 -131 702 616 ; -C 167 ; WX 600 ; N section ; B 74 -70 620 580 ; -C 164 ; WX 600 ; N currency ; B 77 49 644 517 ; -C 39 ; WX 600 ; N quotesingle ; B 303 277 493 562 ; -C 147 ; WX 600 ; N quotedblleft ; B 190 277 594 562 ; -C 170 ; WX 600 ; N guillemotleft ; B 62 70 639 446 ; -C 139 ; WX 600 ; N guilsinglleft ; B 195 70 545 446 ; -C 155 ; WX 600 ; N guilsinglright ; B 165 70 514 446 ; -C -1 ; WX 600 ; N fi ; B 12 0 644 626 ; -C -1 ; WX 600 ; N fl ; B 12 0 644 626 ; -C 150 ; WX 600 ; N endash ; B 108 203 602 313 ; -C 134 ; WX 600 ; N dagger ; B 175 -70 586 580 ; -C 135 ; WX 600 ; N daggerdbl ; B 121 -70 587 580 ; -C 183 ; WX 600 ; N periodcentered ; B 248 165 461 351 ; -C 182 ; WX 600 ; N paragraph ; B 61 -70 700 580 ; -C 149 ; WX 600 ; N bullet ; B 196 132 523 430 ; -C 130 ; WX 600 ; N quotesinglbase ; B 144 -142 458 143 ; -C 132 ; WX 600 ; N quotedblbase ; B 34 -142 560 143 ; -C 148 ; WX 600 ; N quotedblright ; B 119 277 645 562 ; -C 187 ; WX 600 ; N guillemotright ; B 71 70 647 446 ; -C 133 ; WX 600 ; N ellipsis ; B 35 -15 587 116 ; -C 137 ; WX 600 ; N perthousand ; B -45 -15 743 616 ; -C 191 ; WX 600 ; N questiondown ; B 100 -146 509 449 ; -C 96 ; WX 600 ; N grave ; B 272 508 503 661 ; -C 180 ; WX 600 ; N acute ; B 312 508 609 661 ; -C 136 ; WX 600 ; N circumflex ; B 212 483 607 657 ; -C 152 ; WX 600 ; N tilde ; B 199 493 643 636 ; -C 175 ; WX 600 ; N macron ; B 195 505 637 585 ; -C -1 ; WX 600 ; N breve ; B 217 468 652 631 ; -C -1 ; WX 600 ; N dotaccent ; B 348 498 493 638 ; -C 168 ; WX 600 ; N dieresis ; B 246 498 595 638 ; -C -1 ; WX 600 ; N ring ; B 319 481 528 678 ; -C 184 ; WX 600 ; N cedilla ; B 168 -206 368 0 ; -C -1 ; WX 600 ; N hungarumlaut ; B 171 488 729 661 ; -C -1 ; WX 600 ; N ogonek ; B 143 -199 367 0 ; -C -1 ; WX 600 ; N caron ; B 238 493 633 667 ; -C 151 ; WX 600 ; N emdash ; B 33 203 677 313 ; -C 198 ; WX 600 ; N AE ; B -29 0 708 562 ; -C 170 ; WX 600 ; N ordfeminine ; B 188 196 526 580 ; -C -1 ; WX 600 ; N Lslash ; B 39 0 636 562 ; -C 216 ; WX 600 ; N Oslash ; B 48 -22 673 584 ; -C 140 ; WX 600 ; N OE ; B 26 0 701 562 ; -C 186 ; WX 600 ; N ordmasculine ; B 188 196 543 580 ; -C 230 ; WX 600 ; N ae ; B 21 -15 652 454 ; -C -1 ; WX 600 ; N dotlessi ; B 77 0 546 439 ; -C -1 ; WX 600 ; N lslash ; B 77 0 587 626 ; -C 248 ; WX 600 ; N oslash ; B 54 -24 638 463 ; -C 156 ; WX 600 ; N oe ; B 18 -15 662 454 ; -C 223 ; WX 600 ; N germandbls ; B 22 -15 629 626 ; -C 207 ; WX 600 ; N Idieresis ; B 77 0 643 761 ; -C 233 ; WX 600 ; N eacute ; B 81 -15 609 661 ; -C -1 ; WX 600 ; N abreve ; B 61 -15 658 661 ; -C -1 ; WX 600 ; N uhungarumlaut ; B 70 -15 769 661 ; -C -1 ; WX 600 ; N ecaron ; B 81 -15 633 667 ; -C 159 ; WX 600 ; N Ydieresis ; B 109 0 709 761 ; -C 247 ; WX 600 ; N divide ; B 114 16 596 500 ; -C 221 ; WX 600 ; N Yacute ; B 109 0 709 784 ; -C 194 ; WX 600 ; N Acircumflex ; B -9 0 632 780 ; -C 225 ; WX 600 ; N aacute ; B 61 -15 609 661 ; -C 219 ; WX 600 ; N Ucircumflex ; B 101 -18 716 780 ; -C 253 ; WX 600 ; N yacute ; B -21 -142 695 661 ; -C -1 ; WX 600 ; N scommaaccent ; B 66 -250 608 459 ; -C 234 ; WX 600 ; N ecircumflex ; B 81 -15 607 657 ; -C -1 ; WX 600 ; N Uring ; B 101 -18 716 801 ; -C 220 ; WX 600 ; N Udieresis ; B 101 -18 716 761 ; -C -1 ; WX 600 ; N aogonek ; B 61 -199 593 454 ; -C 218 ; WX 600 ; N Uacute ; B 101 -18 716 784 ; -C -1 ; WX 600 ; N uogonek ; B 70 -199 592 439 ; -C 203 ; WX 600 ; N Edieresis ; B 25 0 670 761 ; -C -1 ; WX 600 ; N Dcroat ; B 30 0 664 562 ; -C -1 ; WX 600 ; N commaaccent ; B 151 -250 385 -57 ; -C 169 ; WX 600 ; N copyright ; B 53 -18 667 580 ; -C -1 ; WX 600 ; N Emacron ; B 25 0 670 708 ; -C -1 ; WX 600 ; N ccaron ; B 81 -15 633 667 ; -C 229 ; WX 600 ; N aring ; B 61 -15 593 678 ; -C -1 ; WX 600 ; N Ncommaaccent ; B 8 -250 730 562 ; -C -1 ; WX 600 ; N lacute ; B 77 0 639 801 ; -C 224 ; WX 600 ; N agrave ; B 61 -15 593 661 ; -C -1 ; WX 600 ; N Tcommaaccent ; B 86 -250 679 562 ; -C -1 ; WX 600 ; N Cacute ; B 74 -18 675 784 ; -C 227 ; WX 600 ; N atilde ; B 61 -15 643 636 ; -C -1 ; WX 600 ; N Edotaccent ; B 25 0 670 761 ; -C 154 ; WX 600 ; N scaron ; B 66 -17 633 667 ; -C -1 ; WX 600 ; N scedilla ; B 66 -206 608 459 ; -C 237 ; WX 600 ; N iacute ; B 77 0 609 661 ; -C -1 ; WX 600 ; N lozenge ; B 145 0 614 740 ; -C -1 ; WX 600 ; N Rcaron ; B 24 0 659 790 ; -C -1 ; WX 600 ; N Gcommaaccent ; B 74 -250 675 580 ; -C 251 ; WX 600 ; N ucircumflex ; B 70 -15 597 657 ; -C 226 ; WX 600 ; N acircumflex ; B 61 -15 607 657 ; -C -1 ; WX 600 ; N Amacron ; B -9 0 633 708 ; -C -1 ; WX 600 ; N rcaron ; B 47 0 655 667 ; -C 231 ; WX 600 ; N ccedilla ; B 81 -206 631 459 ; -C -1 ; WX 600 ; N Zdotaccent ; B 62 0 637 761 ; -C 222 ; WX 600 ; N Thorn ; B 48 0 620 562 ; -C -1 ; WX 600 ; N Omacron ; B 74 -18 663 708 ; -C -1 ; WX 600 ; N Racute ; B 24 0 665 784 ; -C -1 ; WX 600 ; N Sacute ; B 54 -22 673 784 ; -C -1 ; WX 600 ; N dcaron ; B 60 -15 861 626 ; -C -1 ; WX 600 ; N Umacron ; B 101 -18 716 708 ; -C -1 ; WX 600 ; N uring ; B 70 -15 592 678 ; -C 179 ; WX 600 ; N threesuperior ; B 193 222 526 616 ; -C 210 ; WX 600 ; N Ograve ; B 74 -18 645 784 ; -C 192 ; WX 600 ; N Agrave ; B -9 0 632 784 ; -C -1 ; WX 600 ; N Abreve ; B -9 0 684 784 ; -C 215 ; WX 600 ; N multiply ; B 104 39 606 478 ; -C 250 ; WX 600 ; N uacute ; B 70 -15 599 661 ; -C -1 ; WX 600 ; N Tcaron ; B 86 0 679 790 ; -C -1 ; WX 600 ; N partialdiff ; B 91 -38 627 728 ; -C 255 ; WX 600 ; N ydieresis ; B -21 -142 695 638 ; -C -1 ; WX 600 ; N Nacute ; B 8 -12 730 784 ; -C 238 ; WX 600 ; N icircumflex ; B 77 0 577 657 ; -C 202 ; WX 600 ; N Ecircumflex ; B 25 0 670 780 ; -C 228 ; WX 600 ; N adieresis ; B 61 -15 595 638 ; -C 235 ; WX 600 ; N edieresis ; B 81 -15 605 638 ; -C -1 ; WX 600 ; N cacute ; B 81 -15 649 661 ; -C -1 ; WX 600 ; N nacute ; B 18 0 639 661 ; -C -1 ; WX 600 ; N umacron ; B 70 -15 637 585 ; -C -1 ; WX 600 ; N Ncaron ; B 8 -12 730 790 ; -C 205 ; WX 600 ; N Iacute ; B 77 0 643 784 ; -C 177 ; WX 600 ; N plusminus ; B 76 24 614 515 ; -C 166 ; WX 600 ; N brokenbar ; B 217 -175 489 675 ; -C 174 ; WX 600 ; N registered ; B 53 -18 667 580 ; -C -1 ; WX 600 ; N Gbreve ; B 74 -18 684 784 ; -C -1 ; WX 600 ; N Idotaccent ; B 77 0 643 761 ; -C -1 ; WX 600 ; N summation ; B 15 -10 672 706 ; -C 200 ; WX 600 ; N Egrave ; B 25 0 670 784 ; -C -1 ; WX 600 ; N racute ; B 47 0 655 661 ; -C -1 ; WX 600 ; N omacron ; B 71 -15 637 585 ; -C -1 ; WX 600 ; N Zacute ; B 62 0 665 784 ; -C 142 ; WX 600 ; N Zcaron ; B 62 0 659 790 ; -C -1 ; WX 600 ; N greaterequal ; B 26 0 627 696 ; -C 208 ; WX 600 ; N Eth ; B 30 0 664 562 ; -C 199 ; WX 600 ; N Ccedilla ; B 74 -206 675 580 ; -C -1 ; WX 600 ; N lcommaaccent ; B 77 -250 546 626 ; -C -1 ; WX 600 ; N tcaron ; B 118 -15 627 703 ; -C -1 ; WX 600 ; N eogonek ; B 81 -199 605 454 ; -C -1 ; WX 600 ; N Uogonek ; B 101 -199 716 562 ; -C 193 ; WX 600 ; N Aacute ; B -9 0 655 784 ; -C 196 ; WX 600 ; N Adieresis ; B -9 0 632 761 ; -C 232 ; WX 600 ; N egrave ; B 81 -15 605 661 ; -C -1 ; WX 600 ; N zacute ; B 81 0 614 661 ; -C -1 ; WX 600 ; N iogonek ; B 77 -199 546 658 ; -C 211 ; WX 600 ; N Oacute ; B 74 -18 645 784 ; -C 243 ; WX 600 ; N oacute ; B 71 -15 649 661 ; -C -1 ; WX 600 ; N amacron ; B 61 -15 637 585 ; -C -1 ; WX 600 ; N sacute ; B 66 -17 609 661 ; -C 239 ; WX 600 ; N idieresis ; B 77 0 561 618 ; -C 212 ; WX 600 ; N Ocircumflex ; B 74 -18 645 780 ; -C 217 ; WX 600 ; N Ugrave ; B 101 -18 716 784 ; -C -1 ; WX 600 ; N Delta ; B 6 0 594 688 ; -C 254 ; WX 600 ; N thorn ; B -32 -142 622 626 ; -C 178 ; WX 600 ; N twosuperior ; B 191 230 542 616 ; -C 214 ; WX 600 ; N Odieresis ; B 74 -18 645 761 ; -C 181 ; WX 600 ; N mu ; B 49 -142 592 439 ; -C 236 ; WX 600 ; N igrave ; B 77 0 546 661 ; -C -1 ; WX 600 ; N ohungarumlaut ; B 71 -15 809 661 ; -C -1 ; WX 600 ; N Eogonek ; B 25 -199 670 562 ; -C -1 ; WX 600 ; N dcroat ; B 60 -15 712 626 ; -C 190 ; WX 600 ; N threequarters ; B 8 -60 699 661 ; -C -1 ; WX 600 ; N Scedilla ; B 54 -206 673 582 ; -C -1 ; WX 600 ; N lcaron ; B 77 0 731 626 ; -C -1 ; WX 600 ; N Kcommaaccent ; B 21 -250 692 562 ; -C -1 ; WX 600 ; N Lacute ; B 39 0 636 784 ; -C 153 ; WX 600 ; N trademark ; B 86 230 869 562 ; -C -1 ; WX 600 ; N edotaccent ; B 81 -15 605 638 ; -C 204 ; WX 600 ; N Igrave ; B 77 0 643 784 ; -C -1 ; WX 600 ; N Imacron ; B 77 0 663 708 ; -C -1 ; WX 600 ; N Lcaron ; B 39 0 757 562 ; -C 189 ; WX 600 ; N onehalf ; B 22 -60 716 661 ; -C -1 ; WX 600 ; N lessequal ; B 26 0 671 696 ; -C 244 ; WX 600 ; N ocircumflex ; B 71 -15 622 657 ; -C 241 ; WX 600 ; N ntilde ; B 18 0 643 636 ; -C -1 ; WX 600 ; N Uhungarumlaut ; B 101 -18 805 784 ; -C 201 ; WX 600 ; N Eacute ; B 25 0 670 784 ; -C -1 ; WX 600 ; N emacron ; B 81 -15 637 585 ; -C -1 ; WX 600 ; N gbreve ; B 40 -146 674 661 ; -C 188 ; WX 600 ; N onequarter ; B 13 -60 707 661 ; -C 138 ; WX 600 ; N Scaron ; B 54 -22 689 790 ; -C -1 ; WX 600 ; N Scommaaccent ; B 54 -250 673 582 ; -C -1 ; WX 600 ; N Ohungarumlaut ; B 74 -18 795 784 ; -C 176 ; WX 600 ; N degree ; B 173 243 570 616 ; -C 242 ; WX 600 ; N ograve ; B 71 -15 622 661 ; -C -1 ; WX 600 ; N Ccaron ; B 74 -18 689 790 ; -C 249 ; WX 600 ; N ugrave ; B 70 -15 592 661 ; -C -1 ; WX 600 ; N radical ; B 67 -104 635 778 ; -C -1 ; WX 600 ; N Dcaron ; B 30 0 664 790 ; -C -1 ; WX 600 ; N rcommaaccent ; B 47 -250 655 454 ; -C 209 ; WX 600 ; N Ntilde ; B 8 -12 730 759 ; -C 245 ; WX 600 ; N otilde ; B 71 -15 643 636 ; -C -1 ; WX 600 ; N Rcommaaccent ; B 24 -250 617 562 ; -C -1 ; WX 600 ; N Lcommaaccent ; B 39 -250 636 562 ; -C 195 ; WX 600 ; N Atilde ; B -9 0 669 759 ; -C -1 ; WX 600 ; N Aogonek ; B -9 -199 632 562 ; -C 197 ; WX 600 ; N Aring ; B -9 0 632 801 ; -C 213 ; WX 600 ; N Otilde ; B 74 -18 669 759 ; -C -1 ; WX 600 ; N zdotaccent ; B 81 0 614 638 ; -C -1 ; WX 600 ; N Ecaron ; B 25 0 670 790 ; -C -1 ; WX 600 ; N Iogonek ; B 77 -199 643 562 ; -C -1 ; WX 600 ; N kcommaaccent ; B 33 -250 643 626 ; -C -1 ; WX 600 ; N minus ; B 114 203 596 313 ; -C 206 ; WX 600 ; N Icircumflex ; B 77 0 643 780 ; -C -1 ; WX 600 ; N ncaron ; B 18 0 633 667 ; -C -1 ; WX 600 ; N tcommaaccent ; B 118 -250 567 562 ; -C 172 ; WX 600 ; N logicalnot ; B 135 103 617 413 ; -C 246 ; WX 600 ; N odieresis ; B 71 -15 622 638 ; -C 252 ; WX 600 ; N udieresis ; B 70 -15 595 638 ; -C -1 ; WX 600 ; N notequal ; B 30 -47 626 563 ; -C -1 ; WX 600 ; N gcommaaccent ; B 40 -146 674 714 ; -C 240 ; WX 600 ; N eth ; B 93 -27 661 626 ; -C 158 ; WX 600 ; N zcaron ; B 81 0 643 667 ; -C -1 ; WX 600 ; N ncommaaccent ; B 18 -250 615 454 ; -C 185 ; WX 600 ; N onesuperior ; B 212 230 514 616 ; -C -1 ; WX 600 ; N imacron ; B 77 0 575 585 ; -C 128 ; WX 600 ; N Euro ; B 0 0 0 0 ; -EndCharMetrics -EndFontMetrics diff --git a/application/third_party/dompdf/lib/fonts/Courier-Oblique.afm b/application/third_party/dompdf/lib/fonts/Courier-Oblique.afm deleted file mode 100644 index 271aa192..00000000 --- a/application/third_party/dompdf/lib/fonts/Courier-Oblique.afm +++ /dev/null @@ -1,344 +0,0 @@ -StartFontMetrics 4.1 -Comment Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. -Comment Creation Date: Thu May 0:00:00 17:37:52 1997 -Comment UniqueID 43051 -Comment VMusage 16248 75829 -FontName Courier-Oblique -FullName Courier Oblique -FamilyName Courier -Weight Medium -ItalicAngle -12 -IsFixedPitch true -CharacterSet ExtendedRoman -FontBBox -27 -250 849 805 -UnderlinePosition -100 -UnderlineThickness 50 -Version 003.000 -Notice Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. -EncodingScheme WinAnsiEncoding -CapHeight 562 -XHeight 426 -Ascender 629 -Descender -157 -StdHW 51 -StdVW 51 -StartCharMetrics 317 -C 32 ; WX 600 ; N space ; B 0 0 0 0 ; -C 160 ; WX 600 ; N space ; B 0 0 0 0 ; -C 33 ; WX 600 ; N exclam ; B 243 -15 464 572 ; -C 34 ; WX 600 ; N quotedbl ; B 273 328 532 562 ; -C 35 ; WX 600 ; N numbersign ; B 133 -32 596 639 ; -C 36 ; WX 600 ; N dollar ; B 108 -126 596 662 ; -C 37 ; WX 600 ; N percent ; B 134 -15 599 622 ; -C 38 ; WX 600 ; N ampersand ; B 87 -15 580 543 ; -C 146 ; WX 600 ; N quoteright ; B 283 328 495 562 ; -C 40 ; WX 600 ; N parenleft ; B 313 -108 572 622 ; -C 41 ; WX 600 ; N parenright ; B 137 -108 396 622 ; -C 42 ; WX 600 ; N asterisk ; B 212 257 580 607 ; -C 43 ; WX 600 ; N plus ; B 129 44 580 470 ; -C 44 ; WX 600 ; N comma ; B 157 -112 370 122 ; -C 45 ; WX 600 ; N hyphen ; B 152 231 558 285 ; -C 173 ; WX 600 ; N hyphen ; B 152 231 558 285 ; -C 46 ; WX 600 ; N period ; B 238 -15 382 109 ; -C 47 ; WX 600 ; N slash ; B 112 -80 604 629 ; -C 48 ; WX 600 ; N zero ; B 154 -15 575 622 ; -C 49 ; WX 600 ; N one ; B 98 0 515 622 ; -C 50 ; WX 600 ; N two ; B 70 0 568 622 ; -C 51 ; WX 600 ; N three ; B 82 -15 538 622 ; -C 52 ; WX 600 ; N four ; B 108 0 541 622 ; -C 53 ; WX 600 ; N five ; B 99 -15 589 607 ; -C 54 ; WX 600 ; N six ; B 155 -15 629 622 ; -C 55 ; WX 600 ; N seven ; B 182 0 612 607 ; -C 56 ; WX 600 ; N eight ; B 132 -15 588 622 ; -C 57 ; WX 600 ; N nine ; B 93 -15 574 622 ; -C 58 ; WX 600 ; N colon ; B 238 -15 441 385 ; -C 59 ; WX 600 ; N semicolon ; B 157 -112 441 385 ; -C 60 ; WX 600 ; N less ; B 96 42 610 472 ; -C 61 ; WX 600 ; N equal ; B 109 138 600 376 ; -C 62 ; WX 600 ; N greater ; B 85 42 599 472 ; -C 63 ; WX 600 ; N question ; B 222 -15 583 572 ; -C 64 ; WX 600 ; N at ; B 127 -15 582 622 ; -C 65 ; WX 600 ; N A ; B 3 0 607 562 ; -C 66 ; WX 600 ; N B ; B 43 0 616 562 ; -C 67 ; WX 600 ; N C ; B 93 -18 655 580 ; -C 68 ; WX 600 ; N D ; B 43 0 645 562 ; -C 69 ; WX 600 ; N E ; B 53 0 660 562 ; -C 70 ; WX 600 ; N F ; B 53 0 660 562 ; -C 71 ; WX 600 ; N G ; B 83 -18 645 580 ; -C 72 ; WX 600 ; N H ; B 32 0 687 562 ; -C 73 ; WX 600 ; N I ; B 96 0 623 562 ; -C 74 ; WX 600 ; N J ; B 52 -18 685 562 ; -C 75 ; WX 600 ; N K ; B 38 0 671 562 ; -C 76 ; WX 600 ; N L ; B 47 0 607 562 ; -C 77 ; WX 600 ; N M ; B 4 0 715 562 ; -C 78 ; WX 600 ; N N ; B 7 -13 712 562 ; -C 79 ; WX 600 ; N O ; B 94 -18 625 580 ; -C 80 ; WX 600 ; N P ; B 79 0 644 562 ; -C 81 ; WX 600 ; N Q ; B 95 -138 625 580 ; -C 82 ; WX 600 ; N R ; B 38 0 598 562 ; -C 83 ; WX 600 ; N S ; B 76 -20 650 580 ; -C 84 ; WX 600 ; N T ; B 108 0 665 562 ; -C 85 ; WX 600 ; N U ; B 125 -18 702 562 ; -C 86 ; WX 600 ; N V ; B 105 -13 723 562 ; -C 87 ; WX 600 ; N W ; B 106 -13 722 562 ; -C 88 ; WX 600 ; N X ; B 23 0 675 562 ; -C 89 ; WX 600 ; N Y ; B 133 0 695 562 ; -C 90 ; WX 600 ; N Z ; B 86 0 610 562 ; -C 91 ; WX 600 ; N bracketleft ; B 246 -108 574 622 ; -C 92 ; WX 600 ; N backslash ; B 249 -80 468 629 ; -C 93 ; WX 600 ; N bracketright ; B 135 -108 463 622 ; -C 94 ; WX 600 ; N asciicircum ; B 175 354 587 622 ; -C 95 ; WX 600 ; N underscore ; B -27 -125 584 -75 ; -C 145 ; WX 600 ; N quoteleft ; B 343 328 457 562 ; -C 97 ; WX 600 ; N a ; B 76 -15 569 441 ; -C 98 ; WX 600 ; N b ; B 29 -15 625 629 ; -C 99 ; WX 600 ; N c ; B 106 -15 608 441 ; -C 100 ; WX 600 ; N d ; B 85 -15 640 629 ; -C 101 ; WX 600 ; N e ; B 106 -15 598 441 ; -C 102 ; WX 600 ; N f ; B 114 0 662 629 ; L i fi ; L l fl ; -C 103 ; WX 600 ; N g ; B 61 -157 657 441 ; -C 104 ; WX 600 ; N h ; B 33 0 592 629 ; -C 105 ; WX 600 ; N i ; B 95 0 515 657 ; -C 106 ; WX 600 ; N j ; B 52 -157 550 657 ; -C 107 ; WX 600 ; N k ; B 58 0 633 629 ; -C 108 ; WX 600 ; N l ; B 95 0 515 629 ; -C 109 ; WX 600 ; N m ; B -5 0 615 441 ; -C 110 ; WX 600 ; N n ; B 26 0 585 441 ; -C 111 ; WX 600 ; N o ; B 102 -15 588 441 ; -C 112 ; WX 600 ; N p ; B -24 -157 605 441 ; -C 113 ; WX 600 ; N q ; B 85 -157 682 441 ; -C 114 ; WX 600 ; N r ; B 60 0 636 441 ; -C 115 ; WX 600 ; N s ; B 78 -15 584 441 ; -C 116 ; WX 600 ; N t ; B 167 -15 561 561 ; -C 117 ; WX 600 ; N u ; B 101 -15 572 426 ; -C 118 ; WX 600 ; N v ; B 90 -10 681 426 ; -C 119 ; WX 600 ; N w ; B 76 -10 695 426 ; -C 120 ; WX 600 ; N x ; B 20 0 655 426 ; -C 121 ; WX 600 ; N y ; B -4 -157 683 426 ; -C 122 ; WX 600 ; N z ; B 99 0 593 426 ; -C 123 ; WX 600 ; N braceleft ; B 233 -108 569 622 ; -C 124 ; WX 600 ; N bar ; B 222 -250 485 750 ; -C 125 ; WX 600 ; N braceright ; B 140 -108 477 622 ; -C 126 ; WX 600 ; N asciitilde ; B 116 197 600 320 ; -C 161 ; WX 600 ; N exclamdown ; B 225 -157 445 430 ; -C 162 ; WX 600 ; N cent ; B 151 -49 588 614 ; -C 163 ; WX 600 ; N sterling ; B 124 -21 621 611 ; -C -1 ; WX 600 ; N fraction ; B 84 -57 646 665 ; -C 165 ; WX 600 ; N yen ; B 120 0 693 562 ; -C 131 ; WX 600 ; N florin ; B -26 -143 671 622 ; -C 167 ; WX 600 ; N section ; B 104 -78 590 580 ; -C 164 ; WX 600 ; N currency ; B 94 58 628 506 ; -C 39 ; WX 600 ; N quotesingle ; B 345 328 460 562 ; -C 147 ; WX 600 ; N quotedblleft ; B 262 328 541 562 ; -C 170 ; WX 600 ; N guillemotleft ; B 92 70 652 446 ; -C 139 ; WX 600 ; N guilsinglleft ; B 204 70 540 446 ; -C 155 ; WX 600 ; N guilsinglright ; B 170 70 506 446 ; -C -1 ; WX 600 ; N fi ; B 3 0 619 629 ; -C -1 ; WX 600 ; N fl ; B 3 0 619 629 ; -C 150 ; WX 600 ; N endash ; B 124 231 586 285 ; -C 134 ; WX 600 ; N dagger ; B 217 -78 546 580 ; -C 135 ; WX 600 ; N daggerdbl ; B 163 -78 546 580 ; -C 183 ; WX 600 ; N periodcentered ; B 275 189 434 327 ; -C 182 ; WX 600 ; N paragraph ; B 100 -78 630 562 ; -C 149 ; WX 600 ; N bullet ; B 224 130 485 383 ; -C 130 ; WX 600 ; N quotesinglbase ; B 185 -134 397 100 ; -C 132 ; WX 600 ; N quotedblbase ; B 115 -134 478 100 ; -C 148 ; WX 600 ; N quotedblright ; B 213 328 576 562 ; -C 187 ; WX 600 ; N guillemotright ; B 58 70 618 446 ; -C 133 ; WX 600 ; N ellipsis ; B 46 -15 575 111 ; -C 137 ; WX 600 ; N perthousand ; B 59 -15 627 622 ; -C 191 ; WX 600 ; N questiondown ; B 105 -157 466 430 ; -C 96 ; WX 600 ; N grave ; B 294 497 484 672 ; -C 180 ; WX 600 ; N acute ; B 348 497 612 672 ; -C 136 ; WX 600 ; N circumflex ; B 229 477 581 654 ; -C 152 ; WX 600 ; N tilde ; B 212 489 629 606 ; -C 175 ; WX 600 ; N macron ; B 232 525 600 565 ; -C -1 ; WX 600 ; N breve ; B 279 501 576 609 ; -C -1 ; WX 600 ; N dotaccent ; B 373 537 478 640 ; -C 168 ; WX 600 ; N dieresis ; B 272 537 579 640 ; -C -1 ; WX 600 ; N ring ; B 332 463 500 627 ; -C 184 ; WX 600 ; N cedilla ; B 197 -151 344 10 ; -C -1 ; WX 600 ; N hungarumlaut ; B 239 497 683 672 ; -C -1 ; WX 600 ; N ogonek ; B 189 -172 377 4 ; -C -1 ; WX 600 ; N caron ; B 262 492 614 669 ; -C 151 ; WX 600 ; N emdash ; B 49 231 661 285 ; -C 198 ; WX 600 ; N AE ; B 3 0 655 562 ; -C 170 ; WX 600 ; N ordfeminine ; B 209 249 512 580 ; -C -1 ; WX 600 ; N Lslash ; B 47 0 607 562 ; -C 216 ; WX 600 ; N Oslash ; B 94 -80 625 629 ; -C 140 ; WX 600 ; N OE ; B 59 0 672 562 ; -C 186 ; WX 600 ; N ordmasculine ; B 210 249 535 580 ; -C 230 ; WX 600 ; N ae ; B 41 -15 626 441 ; -C -1 ; WX 600 ; N dotlessi ; B 95 0 515 426 ; -C -1 ; WX 600 ; N lslash ; B 95 0 587 629 ; -C 248 ; WX 600 ; N oslash ; B 102 -80 588 506 ; -C 156 ; WX 600 ; N oe ; B 54 -15 615 441 ; -C 223 ; WX 600 ; N germandbls ; B 48 -15 617 629 ; -C 207 ; WX 600 ; N Idieresis ; B 96 0 623 753 ; -C 233 ; WX 600 ; N eacute ; B 106 -15 612 672 ; -C -1 ; WX 600 ; N abreve ; B 76 -15 576 609 ; -C -1 ; WX 600 ; N uhungarumlaut ; B 101 -15 723 672 ; -C -1 ; WX 600 ; N ecaron ; B 106 -15 614 669 ; -C 159 ; WX 600 ; N Ydieresis ; B 133 0 695 753 ; -C 247 ; WX 600 ; N divide ; B 136 48 573 467 ; -C 221 ; WX 600 ; N Yacute ; B 133 0 695 805 ; -C 194 ; WX 600 ; N Acircumflex ; B 3 0 607 787 ; -C 225 ; WX 600 ; N aacute ; B 76 -15 612 672 ; -C 219 ; WX 600 ; N Ucircumflex ; B 125 -18 702 787 ; -C 253 ; WX 600 ; N yacute ; B -4 -157 683 672 ; -C -1 ; WX 600 ; N scommaaccent ; B 78 -250 584 441 ; -C 234 ; WX 600 ; N ecircumflex ; B 106 -15 598 654 ; -C -1 ; WX 600 ; N Uring ; B 125 -18 702 760 ; -C 220 ; WX 600 ; N Udieresis ; B 125 -18 702 753 ; -C -1 ; WX 600 ; N aogonek ; B 76 -172 569 441 ; -C 218 ; WX 600 ; N Uacute ; B 125 -18 702 805 ; -C -1 ; WX 600 ; N uogonek ; B 101 -172 572 426 ; -C 203 ; WX 600 ; N Edieresis ; B 53 0 660 753 ; -C -1 ; WX 600 ; N Dcroat ; B 43 0 645 562 ; -C -1 ; WX 600 ; N commaaccent ; B 145 -250 323 -58 ; -C 169 ; WX 600 ; N copyright ; B 53 -18 667 580 ; -C -1 ; WX 600 ; N Emacron ; B 53 0 660 698 ; -C -1 ; WX 600 ; N ccaron ; B 106 -15 614 669 ; -C 229 ; WX 600 ; N aring ; B 76 -15 569 627 ; -C -1 ; WX 600 ; N Ncommaaccent ; B 7 -250 712 562 ; -C -1 ; WX 600 ; N lacute ; B 95 0 640 805 ; -C 224 ; WX 600 ; N agrave ; B 76 -15 569 672 ; -C -1 ; WX 600 ; N Tcommaaccent ; B 108 -250 665 562 ; -C -1 ; WX 600 ; N Cacute ; B 93 -18 655 805 ; -C 227 ; WX 600 ; N atilde ; B 76 -15 629 606 ; -C -1 ; WX 600 ; N Edotaccent ; B 53 0 660 753 ; -C 154 ; WX 600 ; N scaron ; B 78 -15 614 669 ; -C -1 ; WX 600 ; N scedilla ; B 78 -151 584 441 ; -C 237 ; WX 600 ; N iacute ; B 95 0 612 672 ; -C -1 ; WX 600 ; N lozenge ; B 94 0 519 706 ; -C -1 ; WX 600 ; N Rcaron ; B 38 0 642 802 ; -C -1 ; WX 600 ; N Gcommaaccent ; B 83 -250 645 580 ; -C 251 ; WX 600 ; N ucircumflex ; B 101 -15 572 654 ; -C 226 ; WX 600 ; N acircumflex ; B 76 -15 581 654 ; -C -1 ; WX 600 ; N Amacron ; B 3 0 607 698 ; -C -1 ; WX 600 ; N rcaron ; B 60 0 636 669 ; -C 231 ; WX 600 ; N ccedilla ; B 106 -151 614 441 ; -C -1 ; WX 600 ; N Zdotaccent ; B 86 0 610 753 ; -C 222 ; WX 600 ; N Thorn ; B 79 0 606 562 ; -C -1 ; WX 600 ; N Omacron ; B 94 -18 628 698 ; -C -1 ; WX 600 ; N Racute ; B 38 0 670 805 ; -C -1 ; WX 600 ; N Sacute ; B 76 -20 650 805 ; -C -1 ; WX 600 ; N dcaron ; B 85 -15 849 629 ; -C -1 ; WX 600 ; N Umacron ; B 125 -18 702 698 ; -C -1 ; WX 600 ; N uring ; B 101 -15 572 627 ; -C 179 ; WX 600 ; N threesuperior ; B 213 240 501 622 ; -C 210 ; WX 600 ; N Ograve ; B 94 -18 625 805 ; -C 192 ; WX 600 ; N Agrave ; B 3 0 607 805 ; -C -1 ; WX 600 ; N Abreve ; B 3 0 607 732 ; -C 215 ; WX 600 ; N multiply ; B 103 43 607 470 ; -C 250 ; WX 600 ; N uacute ; B 101 -15 602 672 ; -C -1 ; WX 600 ; N Tcaron ; B 108 0 665 802 ; -C -1 ; WX 600 ; N partialdiff ; B 45 -38 546 710 ; -C 255 ; WX 600 ; N ydieresis ; B -4 -157 683 620 ; -C -1 ; WX 600 ; N Nacute ; B 7 -13 712 805 ; -C 238 ; WX 600 ; N icircumflex ; B 95 0 551 654 ; -C 202 ; WX 600 ; N Ecircumflex ; B 53 0 660 787 ; -C 228 ; WX 600 ; N adieresis ; B 76 -15 575 620 ; -C 235 ; WX 600 ; N edieresis ; B 106 -15 598 620 ; -C -1 ; WX 600 ; N cacute ; B 106 -15 612 672 ; -C -1 ; WX 600 ; N nacute ; B 26 0 602 672 ; -C -1 ; WX 600 ; N umacron ; B 101 -15 600 565 ; -C -1 ; WX 600 ; N Ncaron ; B 7 -13 712 802 ; -C 205 ; WX 600 ; N Iacute ; B 96 0 640 805 ; -C 177 ; WX 600 ; N plusminus ; B 96 44 594 558 ; -C 166 ; WX 600 ; N brokenbar ; B 238 -175 469 675 ; -C 174 ; WX 600 ; N registered ; B 53 -18 667 580 ; -C -1 ; WX 600 ; N Gbreve ; B 83 -18 645 732 ; -C -1 ; WX 600 ; N Idotaccent ; B 96 0 623 753 ; -C -1 ; WX 600 ; N summation ; B 15 -10 670 706 ; -C 200 ; WX 600 ; N Egrave ; B 53 0 660 805 ; -C -1 ; WX 600 ; N racute ; B 60 0 636 672 ; -C -1 ; WX 600 ; N omacron ; B 102 -15 600 565 ; -C -1 ; WX 600 ; N Zacute ; B 86 0 670 805 ; -C 142 ; WX 600 ; N Zcaron ; B 86 0 642 802 ; -C -1 ; WX 600 ; N greaterequal ; B 98 0 594 710 ; -C 208 ; WX 600 ; N Eth ; B 43 0 645 562 ; -C 199 ; WX 600 ; N Ccedilla ; B 93 -151 658 580 ; -C -1 ; WX 600 ; N lcommaaccent ; B 95 -250 515 629 ; -C -1 ; WX 600 ; N tcaron ; B 167 -15 587 717 ; -C -1 ; WX 600 ; N eogonek ; B 106 -172 598 441 ; -C -1 ; WX 600 ; N Uogonek ; B 124 -172 702 562 ; -C 193 ; WX 600 ; N Aacute ; B 3 0 660 805 ; -C 196 ; WX 600 ; N Adieresis ; B 3 0 607 753 ; -C 232 ; WX 600 ; N egrave ; B 106 -15 598 672 ; -C -1 ; WX 600 ; N zacute ; B 99 0 612 672 ; -C -1 ; WX 600 ; N iogonek ; B 95 -172 515 657 ; -C 211 ; WX 600 ; N Oacute ; B 94 -18 640 805 ; -C 243 ; WX 600 ; N oacute ; B 102 -15 612 672 ; -C -1 ; WX 600 ; N amacron ; B 76 -15 600 565 ; -C -1 ; WX 600 ; N sacute ; B 78 -15 612 672 ; -C 239 ; WX 600 ; N idieresis ; B 95 0 545 620 ; -C 212 ; WX 600 ; N Ocircumflex ; B 94 -18 625 787 ; -C 217 ; WX 600 ; N Ugrave ; B 125 -18 702 805 ; -C -1 ; WX 600 ; N Delta ; B 6 0 598 688 ; -C 254 ; WX 600 ; N thorn ; B -24 -157 605 629 ; -C 178 ; WX 600 ; N twosuperior ; B 230 249 535 622 ; -C 214 ; WX 600 ; N Odieresis ; B 94 -18 625 753 ; -C 181 ; WX 600 ; N mu ; B 72 -157 572 426 ; -C 236 ; WX 600 ; N igrave ; B 95 0 515 672 ; -C -1 ; WX 600 ; N ohungarumlaut ; B 102 -15 723 672 ; -C -1 ; WX 600 ; N Eogonek ; B 53 -172 660 562 ; -C -1 ; WX 600 ; N dcroat ; B 85 -15 704 629 ; -C 190 ; WX 600 ; N threequarters ; B 73 -56 659 666 ; -C -1 ; WX 600 ; N Scedilla ; B 76 -151 650 580 ; -C -1 ; WX 600 ; N lcaron ; B 95 0 667 629 ; -C -1 ; WX 600 ; N Kcommaaccent ; B 38 -250 671 562 ; -C -1 ; WX 600 ; N Lacute ; B 47 0 607 805 ; -C 153 ; WX 600 ; N trademark ; B 75 263 742 562 ; -C -1 ; WX 600 ; N edotaccent ; B 106 -15 598 620 ; -C 204 ; WX 600 ; N Igrave ; B 96 0 623 805 ; -C -1 ; WX 600 ; N Imacron ; B 96 0 628 698 ; -C -1 ; WX 600 ; N Lcaron ; B 47 0 632 562 ; -C 189 ; WX 600 ; N onehalf ; B 65 -57 669 665 ; -C -1 ; WX 600 ; N lessequal ; B 98 0 645 710 ; -C 244 ; WX 600 ; N ocircumflex ; B 102 -15 588 654 ; -C 241 ; WX 600 ; N ntilde ; B 26 0 629 606 ; -C -1 ; WX 600 ; N Uhungarumlaut ; B 125 -18 761 805 ; -C 201 ; WX 600 ; N Eacute ; B 53 0 670 805 ; -C -1 ; WX 600 ; N emacron ; B 106 -15 600 565 ; -C -1 ; WX 600 ; N gbreve ; B 61 -157 657 609 ; -C 188 ; WX 600 ; N onequarter ; B 65 -57 674 665 ; -C 138 ; WX 600 ; N Scaron ; B 76 -20 672 802 ; -C -1 ; WX 600 ; N Scommaaccent ; B 76 -250 650 580 ; -C -1 ; WX 600 ; N Ohungarumlaut ; B 94 -18 751 805 ; -C 176 ; WX 600 ; N degree ; B 214 269 576 622 ; -C 242 ; WX 600 ; N ograve ; B 102 -15 588 672 ; -C -1 ; WX 600 ; N Ccaron ; B 93 -18 672 802 ; -C 249 ; WX 600 ; N ugrave ; B 101 -15 572 672 ; -C -1 ; WX 600 ; N radical ; B 85 -15 765 792 ; -C -1 ; WX 600 ; N Dcaron ; B 43 0 645 802 ; -C -1 ; WX 600 ; N rcommaaccent ; B 60 -250 636 441 ; -C 209 ; WX 600 ; N Ntilde ; B 7 -13 712 729 ; -C 245 ; WX 600 ; N otilde ; B 102 -15 629 606 ; -C -1 ; WX 600 ; N Rcommaaccent ; B 38 -250 598 562 ; -C -1 ; WX 600 ; N Lcommaaccent ; B 47 -250 607 562 ; -C 195 ; WX 600 ; N Atilde ; B 3 0 655 729 ; -C -1 ; WX 600 ; N Aogonek ; B 3 -172 607 562 ; -C 197 ; WX 600 ; N Aring ; B 3 0 607 750 ; -C 213 ; WX 600 ; N Otilde ; B 94 -18 655 729 ; -C -1 ; WX 600 ; N zdotaccent ; B 99 0 593 620 ; -C -1 ; WX 600 ; N Ecaron ; B 53 0 660 802 ; -C -1 ; WX 600 ; N Iogonek ; B 96 -172 623 562 ; -C -1 ; WX 600 ; N kcommaaccent ; B 58 -250 633 629 ; -C -1 ; WX 600 ; N minus ; B 129 232 580 283 ; -C 206 ; WX 600 ; N Icircumflex ; B 96 0 623 787 ; -C -1 ; WX 600 ; N ncaron ; B 26 0 614 669 ; -C -1 ; WX 600 ; N tcommaaccent ; B 165 -250 561 561 ; -C 172 ; WX 600 ; N logicalnot ; B 155 108 591 369 ; -C 246 ; WX 600 ; N odieresis ; B 102 -15 588 620 ; -C 252 ; WX 600 ; N udieresis ; B 101 -15 575 620 ; -C -1 ; WX 600 ; N notequal ; B 43 -16 621 529 ; -C -1 ; WX 600 ; N gcommaaccent ; B 61 -157 657 708 ; -C 240 ; WX 600 ; N eth ; B 102 -15 639 629 ; -C 158 ; WX 600 ; N zcaron ; B 99 0 624 669 ; -C -1 ; WX 600 ; N ncommaaccent ; B 26 -250 585 441 ; -C 185 ; WX 600 ; N onesuperior ; B 231 249 491 622 ; -C -1 ; WX 600 ; N imacron ; B 95 0 543 565 ; -C 128 ; WX 600 ; N Euro ; B 0 0 0 0 ; -EndCharMetrics -EndFontMetrics diff --git a/application/third_party/dompdf/lib/fonts/Courier.afm b/application/third_party/dompdf/lib/fonts/Courier.afm deleted file mode 100644 index 530d5f8f..00000000 --- a/application/third_party/dompdf/lib/fonts/Courier.afm +++ /dev/null @@ -1,344 +0,0 @@ -StartFontMetrics 4.1 -Comment Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. -Comment Creation Date: Thu May 1 17:27:09 1997 -Comment UniqueID 43050 -Comment VMusage 39754 50779 -FontName Courier -FullName Courier -FamilyName Courier -Weight Medium -ItalicAngle 0 -IsFixedPitch true -CharacterSet ExtendedRoman -FontBBox -23 -250 715 805 -UnderlinePosition -100 -UnderlineThickness 50 -Version 003.000 -Notice Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. -EncodingScheme WinAnsiEncoding -CapHeight 562 -XHeight 426 -Ascender 629 -Descender -157 -StdHW 51 -StdVW 51 -StartCharMetrics 317 -C 32 ; WX 600 ; N space ; B 0 0 0 0 ; -C 160 ; WX 600 ; N space ; B 0 0 0 0 ; -C 33 ; WX 600 ; N exclam ; B 236 -15 364 572 ; -C 34 ; WX 600 ; N quotedbl ; B 187 328 413 562 ; -C 35 ; WX 600 ; N numbersign ; B 93 -32 507 639 ; -C 36 ; WX 600 ; N dollar ; B 105 -126 496 662 ; -C 37 ; WX 600 ; N percent ; B 81 -15 518 622 ; -C 38 ; WX 600 ; N ampersand ; B 63 -15 538 543 ; -C 146 ; WX 600 ; N quoteright ; B 213 328 376 562 ; -C 40 ; WX 600 ; N parenleft ; B 269 -108 440 622 ; -C 41 ; WX 600 ; N parenright ; B 160 -108 331 622 ; -C 42 ; WX 600 ; N asterisk ; B 116 257 484 607 ; -C 43 ; WX 600 ; N plus ; B 80 44 520 470 ; -C 44 ; WX 600 ; N comma ; B 181 -112 344 122 ; -C 45 ; WX 600 ; N hyphen ; B 103 231 497 285 ; -C 173 ; WX 600 ; N hyphen ; B 103 231 497 285 ; -C 46 ; WX 600 ; N period ; B 229 -15 371 109 ; -C 47 ; WX 600 ; N slash ; B 125 -80 475 629 ; -C 48 ; WX 600 ; N zero ; B 106 -15 494 622 ; -C 49 ; WX 600 ; N one ; B 96 0 505 622 ; -C 50 ; WX 600 ; N two ; B 70 0 471 622 ; -C 51 ; WX 600 ; N three ; B 75 -15 466 622 ; -C 52 ; WX 600 ; N four ; B 78 0 500 622 ; -C 53 ; WX 600 ; N five ; B 92 -15 497 607 ; -C 54 ; WX 600 ; N six ; B 111 -15 497 622 ; -C 55 ; WX 600 ; N seven ; B 82 0 483 607 ; -C 56 ; WX 600 ; N eight ; B 102 -15 498 622 ; -C 57 ; WX 600 ; N nine ; B 96 -15 489 622 ; -C 58 ; WX 600 ; N colon ; B 229 -15 371 385 ; -C 59 ; WX 600 ; N semicolon ; B 181 -112 371 385 ; -C 60 ; WX 600 ; N less ; B 41 42 519 472 ; -C 61 ; WX 600 ; N equal ; B 80 138 520 376 ; -C 62 ; WX 600 ; N greater ; B 66 42 544 472 ; -C 63 ; WX 600 ; N question ; B 129 -15 492 572 ; -C 64 ; WX 600 ; N at ; B 77 -15 533 622 ; -C 65 ; WX 600 ; N A ; B 3 0 597 562 ; -C 66 ; WX 600 ; N B ; B 43 0 559 562 ; -C 67 ; WX 600 ; N C ; B 41 -18 540 580 ; -C 68 ; WX 600 ; N D ; B 43 0 574 562 ; -C 69 ; WX 600 ; N E ; B 53 0 550 562 ; -C 70 ; WX 600 ; N F ; B 53 0 545 562 ; -C 71 ; WX 600 ; N G ; B 31 -18 575 580 ; -C 72 ; WX 600 ; N H ; B 32 0 568 562 ; -C 73 ; WX 600 ; N I ; B 96 0 504 562 ; -C 74 ; WX 600 ; N J ; B 34 -18 566 562 ; -C 75 ; WX 600 ; N K ; B 38 0 582 562 ; -C 76 ; WX 600 ; N L ; B 47 0 554 562 ; -C 77 ; WX 600 ; N M ; B 4 0 596 562 ; -C 78 ; WX 600 ; N N ; B 7 -13 593 562 ; -C 79 ; WX 600 ; N O ; B 43 -18 557 580 ; -C 80 ; WX 600 ; N P ; B 79 0 558 562 ; -C 81 ; WX 600 ; N Q ; B 43 -138 557 580 ; -C 82 ; WX 600 ; N R ; B 38 0 588 562 ; -C 83 ; WX 600 ; N S ; B 72 -20 529 580 ; -C 84 ; WX 600 ; N T ; B 38 0 563 562 ; -C 85 ; WX 600 ; N U ; B 17 -18 583 562 ; -C 86 ; WX 600 ; N V ; B -4 -13 604 562 ; -C 87 ; WX 600 ; N W ; B -3 -13 603 562 ; -C 88 ; WX 600 ; N X ; B 23 0 577 562 ; -C 89 ; WX 600 ; N Y ; B 24 0 576 562 ; -C 90 ; WX 600 ; N Z ; B 86 0 514 562 ; -C 91 ; WX 600 ; N bracketleft ; B 269 -108 442 622 ; -C 92 ; WX 600 ; N backslash ; B 118 -80 482 629 ; -C 93 ; WX 600 ; N bracketright ; B 158 -108 331 622 ; -C 94 ; WX 600 ; N asciicircum ; B 94 354 506 622 ; -C 95 ; WX 600 ; N underscore ; B 0 -125 600 -75 ; -C 145 ; WX 600 ; N quoteleft ; B 224 328 387 562 ; -C 97 ; WX 600 ; N a ; B 53 -15 559 441 ; -C 98 ; WX 600 ; N b ; B 14 -15 575 629 ; -C 99 ; WX 600 ; N c ; B 66 -15 529 441 ; -C 100 ; WX 600 ; N d ; B 45 -15 591 629 ; -C 101 ; WX 600 ; N e ; B 66 -15 548 441 ; -C 102 ; WX 600 ; N f ; B 114 0 531 629 ; L i fi ; L l fl ; -C 103 ; WX 600 ; N g ; B 45 -157 566 441 ; -C 104 ; WX 600 ; N h ; B 18 0 582 629 ; -C 105 ; WX 600 ; N i ; B 95 0 505 657 ; -C 106 ; WX 600 ; N j ; B 82 -157 410 657 ; -C 107 ; WX 600 ; N k ; B 43 0 580 629 ; -C 108 ; WX 600 ; N l ; B 95 0 505 629 ; -C 109 ; WX 600 ; N m ; B -5 0 605 441 ; -C 110 ; WX 600 ; N n ; B 26 0 575 441 ; -C 111 ; WX 600 ; N o ; B 62 -15 538 441 ; -C 112 ; WX 600 ; N p ; B 9 -157 555 441 ; -C 113 ; WX 600 ; N q ; B 45 -157 591 441 ; -C 114 ; WX 600 ; N r ; B 60 0 559 441 ; -C 115 ; WX 600 ; N s ; B 80 -15 513 441 ; -C 116 ; WX 600 ; N t ; B 87 -15 530 561 ; -C 117 ; WX 600 ; N u ; B 21 -15 562 426 ; -C 118 ; WX 600 ; N v ; B 10 -10 590 426 ; -C 119 ; WX 600 ; N w ; B -4 -10 604 426 ; -C 120 ; WX 600 ; N x ; B 20 0 580 426 ; -C 121 ; WX 600 ; N y ; B 7 -157 592 426 ; -C 122 ; WX 600 ; N z ; B 99 0 502 426 ; -C 123 ; WX 600 ; N braceleft ; B 182 -108 437 622 ; -C 124 ; WX 600 ; N bar ; B 275 -250 326 750 ; -C 125 ; WX 600 ; N braceright ; B 163 -108 418 622 ; -C 126 ; WX 600 ; N asciitilde ; B 63 197 540 320 ; -C 161 ; WX 600 ; N exclamdown ; B 236 -157 364 430 ; -C 162 ; WX 600 ; N cent ; B 96 -49 500 614 ; -C 163 ; WX 600 ; N sterling ; B 84 -21 521 611 ; -C -1 ; WX 600 ; N fraction ; B 92 -57 509 665 ; -C 165 ; WX 600 ; N yen ; B 26 0 574 562 ; -C 131 ; WX 600 ; N florin ; B 4 -143 539 622 ; -C 167 ; WX 600 ; N section ; B 113 -78 488 580 ; -C 164 ; WX 600 ; N currency ; B 73 58 527 506 ; -C 39 ; WX 600 ; N quotesingle ; B 259 328 341 562 ; -C 147 ; WX 600 ; N quotedblleft ; B 143 328 471 562 ; -C 170 ; WX 600 ; N guillemotleft ; B 37 70 563 446 ; -C 139 ; WX 600 ; N guilsinglleft ; B 149 70 451 446 ; -C 155 ; WX 600 ; N guilsinglright ; B 149 70 451 446 ; -C -1 ; WX 600 ; N fi ; B 3 0 597 629 ; -C -1 ; WX 600 ; N fl ; B 3 0 597 629 ; -C 150 ; WX 600 ; N endash ; B 75 231 525 285 ; -C 134 ; WX 600 ; N dagger ; B 141 -78 459 580 ; -C 135 ; WX 600 ; N daggerdbl ; B 141 -78 459 580 ; -C 183 ; WX 600 ; N periodcentered ; B 222 189 378 327 ; -C 182 ; WX 600 ; N paragraph ; B 50 -78 511 562 ; -C 149 ; WX 600 ; N bullet ; B 172 130 428 383 ; -C 130 ; WX 600 ; N quotesinglbase ; B 213 -134 376 100 ; -C 132 ; WX 600 ; N quotedblbase ; B 143 -134 457 100 ; -C 148 ; WX 600 ; N quotedblright ; B 143 328 457 562 ; -C 187 ; WX 600 ; N guillemotright ; B 37 70 563 446 ; -C 133 ; WX 600 ; N ellipsis ; B 37 -15 563 111 ; -C 137 ; WX 600 ; N perthousand ; B 3 -15 600 622 ; -C 191 ; WX 600 ; N questiondown ; B 108 -157 471 430 ; -C 96 ; WX 600 ; N grave ; B 151 497 378 672 ; -C 180 ; WX 600 ; N acute ; B 242 497 469 672 ; -C 136 ; WX 600 ; N circumflex ; B 124 477 476 654 ; -C 152 ; WX 600 ; N tilde ; B 105 489 503 606 ; -C 175 ; WX 600 ; N macron ; B 120 525 480 565 ; -C -1 ; WX 600 ; N breve ; B 153 501 447 609 ; -C -1 ; WX 600 ; N dotaccent ; B 249 537 352 640 ; -C 168 ; WX 600 ; N dieresis ; B 148 537 453 640 ; -C -1 ; WX 600 ; N ring ; B 218 463 382 627 ; -C 184 ; WX 600 ; N cedilla ; B 224 -151 362 10 ; -C -1 ; WX 600 ; N hungarumlaut ; B 133 497 540 672 ; -C -1 ; WX 600 ; N ogonek ; B 211 -172 407 4 ; -C -1 ; WX 600 ; N caron ; B 124 492 476 669 ; -C 151 ; WX 600 ; N emdash ; B 0 231 600 285 ; -C 198 ; WX 600 ; N AE ; B 3 0 550 562 ; -C 170 ; WX 600 ; N ordfeminine ; B 156 249 442 580 ; -C -1 ; WX 600 ; N Lslash ; B 47 0 554 562 ; -C 216 ; WX 600 ; N Oslash ; B 43 -80 557 629 ; -C 140 ; WX 600 ; N OE ; B 7 0 567 562 ; -C 186 ; WX 600 ; N ordmasculine ; B 157 249 443 580 ; -C 230 ; WX 600 ; N ae ; B 19 -15 570 441 ; -C -1 ; WX 600 ; N dotlessi ; B 95 0 505 426 ; -C -1 ; WX 600 ; N lslash ; B 95 0 505 629 ; -C 248 ; WX 600 ; N oslash ; B 62 -80 538 506 ; -C 156 ; WX 600 ; N oe ; B 19 -15 559 441 ; -C 223 ; WX 600 ; N germandbls ; B 48 -15 588 629 ; -C 207 ; WX 600 ; N Idieresis ; B 96 0 504 753 ; -C 233 ; WX 600 ; N eacute ; B 66 -15 548 672 ; -C -1 ; WX 600 ; N abreve ; B 53 -15 559 609 ; -C -1 ; WX 600 ; N uhungarumlaut ; B 21 -15 580 672 ; -C -1 ; WX 600 ; N ecaron ; B 66 -15 548 669 ; -C 159 ; WX 600 ; N Ydieresis ; B 24 0 576 753 ; -C 247 ; WX 600 ; N divide ; B 87 48 513 467 ; -C 221 ; WX 600 ; N Yacute ; B 24 0 576 805 ; -C 194 ; WX 600 ; N Acircumflex ; B 3 0 597 787 ; -C 225 ; WX 600 ; N aacute ; B 53 -15 559 672 ; -C 219 ; WX 600 ; N Ucircumflex ; B 17 -18 583 787 ; -C 253 ; WX 600 ; N yacute ; B 7 -157 592 672 ; -C -1 ; WX 600 ; N scommaaccent ; B 80 -250 513 441 ; -C 234 ; WX 600 ; N ecircumflex ; B 66 -15 548 654 ; -C -1 ; WX 600 ; N Uring ; B 17 -18 583 760 ; -C 220 ; WX 600 ; N Udieresis ; B 17 -18 583 753 ; -C -1 ; WX 600 ; N aogonek ; B 53 -172 587 441 ; -C 218 ; WX 600 ; N Uacute ; B 17 -18 583 805 ; -C -1 ; WX 600 ; N uogonek ; B 21 -172 590 426 ; -C 203 ; WX 600 ; N Edieresis ; B 53 0 550 753 ; -C -1 ; WX 600 ; N Dcroat ; B 30 0 574 562 ; -C -1 ; WX 600 ; N commaaccent ; B 198 -250 335 -58 ; -C 169 ; WX 600 ; N copyright ; B 0 -18 600 580 ; -C -1 ; WX 600 ; N Emacron ; B 53 0 550 698 ; -C -1 ; WX 600 ; N ccaron ; B 66 -15 529 669 ; -C 229 ; WX 600 ; N aring ; B 53 -15 559 627 ; -C -1 ; WX 600 ; N Ncommaaccent ; B 7 -250 593 562 ; -C -1 ; WX 600 ; N lacute ; B 95 0 505 805 ; -C 224 ; WX 600 ; N agrave ; B 53 -15 559 672 ; -C -1 ; WX 600 ; N Tcommaaccent ; B 38 -250 563 562 ; -C -1 ; WX 600 ; N Cacute ; B 41 -18 540 805 ; -C 227 ; WX 600 ; N atilde ; B 53 -15 559 606 ; -C -1 ; WX 600 ; N Edotaccent ; B 53 0 550 753 ; -C 154 ; WX 600 ; N scaron ; B 80 -15 513 669 ; -C -1 ; WX 600 ; N scedilla ; B 80 -151 513 441 ; -C 237 ; WX 600 ; N iacute ; B 95 0 505 672 ; -C -1 ; WX 600 ; N lozenge ; B 18 0 443 706 ; -C -1 ; WX 600 ; N Rcaron ; B 38 0 588 802 ; -C -1 ; WX 600 ; N Gcommaaccent ; B 31 -250 575 580 ; -C 251 ; WX 600 ; N ucircumflex ; B 21 -15 562 654 ; -C 226 ; WX 600 ; N acircumflex ; B 53 -15 559 654 ; -C -1 ; WX 600 ; N Amacron ; B 3 0 597 698 ; -C -1 ; WX 600 ; N rcaron ; B 60 0 559 669 ; -C 231 ; WX 600 ; N ccedilla ; B 66 -151 529 441 ; -C -1 ; WX 600 ; N Zdotaccent ; B 86 0 514 753 ; -C 222 ; WX 600 ; N Thorn ; B 79 0 538 562 ; -C -1 ; WX 600 ; N Omacron ; B 43 -18 557 698 ; -C -1 ; WX 600 ; N Racute ; B 38 0 588 805 ; -C -1 ; WX 600 ; N Sacute ; B 72 -20 529 805 ; -C -1 ; WX 600 ; N dcaron ; B 45 -15 715 629 ; -C -1 ; WX 600 ; N Umacron ; B 17 -18 583 698 ; -C -1 ; WX 600 ; N uring ; B 21 -15 562 627 ; -C 179 ; WX 600 ; N threesuperior ; B 155 240 406 622 ; -C 210 ; WX 600 ; N Ograve ; B 43 -18 557 805 ; -C 192 ; WX 600 ; N Agrave ; B 3 0 597 805 ; -C -1 ; WX 600 ; N Abreve ; B 3 0 597 732 ; -C 215 ; WX 600 ; N multiply ; B 87 43 515 470 ; -C 250 ; WX 600 ; N uacute ; B 21 -15 562 672 ; -C -1 ; WX 600 ; N Tcaron ; B 38 0 563 802 ; -C -1 ; WX 600 ; N partialdiff ; B 17 -38 459 710 ; -C 255 ; WX 600 ; N ydieresis ; B 7 -157 592 620 ; -C -1 ; WX 600 ; N Nacute ; B 7 -13 593 805 ; -C 238 ; WX 600 ; N icircumflex ; B 94 0 505 654 ; -C 202 ; WX 600 ; N Ecircumflex ; B 53 0 550 787 ; -C 228 ; WX 600 ; N adieresis ; B 53 -15 559 620 ; -C 235 ; WX 600 ; N edieresis ; B 66 -15 548 620 ; -C -1 ; WX 600 ; N cacute ; B 66 -15 529 672 ; -C -1 ; WX 600 ; N nacute ; B 26 0 575 672 ; -C -1 ; WX 600 ; N umacron ; B 21 -15 562 565 ; -C -1 ; WX 600 ; N Ncaron ; B 7 -13 593 802 ; -C 205 ; WX 600 ; N Iacute ; B 96 0 504 805 ; -C 177 ; WX 600 ; N plusminus ; B 87 44 513 558 ; -C 166 ; WX 600 ; N brokenbar ; B 275 -175 326 675 ; -C 174 ; WX 600 ; N registered ; B 0 -18 600 580 ; -C -1 ; WX 600 ; N Gbreve ; B 31 -18 575 732 ; -C -1 ; WX 600 ; N Idotaccent ; B 96 0 504 753 ; -C -1 ; WX 600 ; N summation ; B 15 -10 585 706 ; -C 200 ; WX 600 ; N Egrave ; B 53 0 550 805 ; -C -1 ; WX 600 ; N racute ; B 60 0 559 672 ; -C -1 ; WX 600 ; N omacron ; B 62 -15 538 565 ; -C -1 ; WX 600 ; N Zacute ; B 86 0 514 805 ; -C 142 ; WX 600 ; N Zcaron ; B 86 0 514 802 ; -C -1 ; WX 600 ; N greaterequal ; B 98 0 502 710 ; -C 208 ; WX 600 ; N Eth ; B 30 0 574 562 ; -C 199 ; WX 600 ; N Ccedilla ; B 41 -151 540 580 ; -C -1 ; WX 600 ; N lcommaaccent ; B 95 -250 505 629 ; -C -1 ; WX 600 ; N tcaron ; B 87 -15 530 717 ; -C -1 ; WX 600 ; N eogonek ; B 66 -172 548 441 ; -C -1 ; WX 600 ; N Uogonek ; B 17 -172 583 562 ; -C 193 ; WX 600 ; N Aacute ; B 3 0 597 805 ; -C 196 ; WX 600 ; N Adieresis ; B 3 0 597 753 ; -C 232 ; WX 600 ; N egrave ; B 66 -15 548 672 ; -C -1 ; WX 600 ; N zacute ; B 99 0 502 672 ; -C -1 ; WX 600 ; N iogonek ; B 95 -172 505 657 ; -C 211 ; WX 600 ; N Oacute ; B 43 -18 557 805 ; -C 243 ; WX 600 ; N oacute ; B 62 -15 538 672 ; -C -1 ; WX 600 ; N amacron ; B 53 -15 559 565 ; -C -1 ; WX 600 ; N sacute ; B 80 -15 513 672 ; -C 239 ; WX 600 ; N idieresis ; B 95 0 505 620 ; -C 212 ; WX 600 ; N Ocircumflex ; B 43 -18 557 787 ; -C 217 ; WX 600 ; N Ugrave ; B 17 -18 583 805 ; -C -1 ; WX 600 ; N Delta ; B 6 0 598 688 ; -C 254 ; WX 600 ; N thorn ; B -6 -157 555 629 ; -C 178 ; WX 600 ; N twosuperior ; B 177 249 424 622 ; -C 214 ; WX 600 ; N Odieresis ; B 43 -18 557 753 ; -C 181 ; WX 600 ; N mu ; B 21 -157 562 426 ; -C 236 ; WX 600 ; N igrave ; B 95 0 505 672 ; -C -1 ; WX 600 ; N ohungarumlaut ; B 62 -15 580 672 ; -C -1 ; WX 600 ; N Eogonek ; B 53 -172 561 562 ; -C -1 ; WX 600 ; N dcroat ; B 45 -15 591 629 ; -C 190 ; WX 600 ; N threequarters ; B 8 -56 593 666 ; -C -1 ; WX 600 ; N Scedilla ; B 72 -151 529 580 ; -C -1 ; WX 600 ; N lcaron ; B 95 0 533 629 ; -C -1 ; WX 600 ; N Kcommaaccent ; B 38 -250 582 562 ; -C -1 ; WX 600 ; N Lacute ; B 47 0 554 805 ; -C 153 ; WX 600 ; N trademark ; B -23 263 623 562 ; -C -1 ; WX 600 ; N edotaccent ; B 66 -15 548 620 ; -C 204 ; WX 600 ; N Igrave ; B 96 0 504 805 ; -C -1 ; WX 600 ; N Imacron ; B 96 0 504 698 ; -C -1 ; WX 600 ; N Lcaron ; B 47 0 554 562 ; -C 189 ; WX 600 ; N onehalf ; B 0 -57 611 665 ; -C -1 ; WX 600 ; N lessequal ; B 98 0 502 710 ; -C 244 ; WX 600 ; N ocircumflex ; B 62 -15 538 654 ; -C 241 ; WX 600 ; N ntilde ; B 26 0 575 606 ; -C -1 ; WX 600 ; N Uhungarumlaut ; B 17 -18 590 805 ; -C 201 ; WX 600 ; N Eacute ; B 53 0 550 805 ; -C -1 ; WX 600 ; N emacron ; B 66 -15 548 565 ; -C -1 ; WX 600 ; N gbreve ; B 45 -157 566 609 ; -C 188 ; WX 600 ; N onequarter ; B 0 -57 600 665 ; -C 138 ; WX 600 ; N Scaron ; B 72 -20 529 802 ; -C -1 ; WX 600 ; N Scommaaccent ; B 72 -250 529 580 ; -C -1 ; WX 600 ; N Ohungarumlaut ; B 43 -18 580 805 ; -C 176 ; WX 600 ; N degree ; B 123 269 477 622 ; -C 242 ; WX 600 ; N ograve ; B 62 -15 538 672 ; -C -1 ; WX 600 ; N Ccaron ; B 41 -18 540 802 ; -C 249 ; WX 600 ; N ugrave ; B 21 -15 562 672 ; -C -1 ; WX 600 ; N radical ; B 3 -15 597 792 ; -C -1 ; WX 600 ; N Dcaron ; B 43 0 574 802 ; -C -1 ; WX 600 ; N rcommaaccent ; B 60 -250 559 441 ; -C 209 ; WX 600 ; N Ntilde ; B 7 -13 593 729 ; -C 245 ; WX 600 ; N otilde ; B 62 -15 538 606 ; -C -1 ; WX 600 ; N Rcommaaccent ; B 38 -250 588 562 ; -C -1 ; WX 600 ; N Lcommaaccent ; B 47 -250 554 562 ; -C 195 ; WX 600 ; N Atilde ; B 3 0 597 729 ; -C -1 ; WX 600 ; N Aogonek ; B 3 -172 608 562 ; -C 197 ; WX 600 ; N Aring ; B 3 0 597 750 ; -C 213 ; WX 600 ; N Otilde ; B 43 -18 557 729 ; -C -1 ; WX 600 ; N zdotaccent ; B 99 0 502 620 ; -C -1 ; WX 600 ; N Ecaron ; B 53 0 550 802 ; -C -1 ; WX 600 ; N Iogonek ; B 96 -172 504 562 ; -C -1 ; WX 600 ; N kcommaaccent ; B 43 -250 580 629 ; -C -1 ; WX 600 ; N minus ; B 80 232 520 283 ; -C 206 ; WX 600 ; N Icircumflex ; B 96 0 504 787 ; -C -1 ; WX 600 ; N ncaron ; B 26 0 575 669 ; -C -1 ; WX 600 ; N tcommaaccent ; B 87 -250 530 561 ; -C 172 ; WX 600 ; N logicalnot ; B 87 108 513 369 ; -C 246 ; WX 600 ; N odieresis ; B 62 -15 538 620 ; -C 252 ; WX 600 ; N udieresis ; B 21 -15 562 620 ; -C -1 ; WX 600 ; N notequal ; B 15 -16 540 529 ; -C -1 ; WX 600 ; N gcommaaccent ; B 45 -157 566 708 ; -C 240 ; WX 600 ; N eth ; B 62 -15 538 629 ; -C 158 ; WX 600 ; N zcaron ; B 99 0 502 669 ; -C -1 ; WX 600 ; N ncommaaccent ; B 26 -250 575 441 ; -C 185 ; WX 600 ; N onesuperior ; B 172 249 428 622 ; -C -1 ; WX 600 ; N imacron ; B 95 0 505 565 ; -C 128 ; WX 600 ; N Euro ; B 0 0 0 0 ; -EndCharMetrics -EndFontMetrics diff --git a/application/third_party/dompdf/lib/fonts/Helvetica-Bold.afm b/application/third_party/dompdf/lib/fonts/Helvetica-Bold.afm deleted file mode 100644 index a9298483..00000000 --- a/application/third_party/dompdf/lib/fonts/Helvetica-Bold.afm +++ /dev/null @@ -1,2829 +0,0 @@ -StartFontMetrics 4.1 -Comment Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved. -Comment Creation Date: Thu May 1 12:43:52 1997 -Comment UniqueID 43052 -Comment VMusage 37169 48194 -FontName Helvetica-Bold -FullName Helvetica Bold -FamilyName Helvetica -Weight Bold -ItalicAngle 0 -IsFixedPitch false -CharacterSet ExtendedRoman -FontBBox -170 -228 1003 962 -UnderlinePosition -100 -UnderlineThickness 50 -Version 002.000 -Notice Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved.Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries. -EncodingScheme WinAnsiEncoding -CapHeight 718 -XHeight 532 -Ascender 718 -Descender -207 -StdHW 118 -StdVW 140 -StartCharMetrics 317 -C 32 ; WX 278 ; N space ; B 0 0 0 0 ; -C 160 ; WX 278 ; N space ; B 0 0 0 0 ; -C 33 ; WX 333 ; N exclam ; B 90 0 244 718 ; -C 34 ; WX 474 ; N quotedbl ; B 98 447 376 718 ; -C 35 ; WX 556 ; N numbersign ; B 18 0 538 698 ; -C 36 ; WX 556 ; N dollar ; B 30 -115 523 775 ; -C 37 ; WX 889 ; N percent ; B 28 -19 861 710 ; -C 38 ; WX 722 ; N ampersand ; B 54 -19 701 718 ; -C 146 ; WX 278 ; N quoteright ; B 69 445 209 718 ; -C 40 ; WX 333 ; N parenleft ; B 35 -208 314 734 ; -C 41 ; WX 333 ; N parenright ; B 19 -208 298 734 ; -C 42 ; WX 389 ; N asterisk ; B 27 387 362 718 ; -C 43 ; WX 584 ; N plus ; B 40 0 544 506 ; -C 44 ; WX 278 ; N comma ; B 64 -168 214 146 ; -C 45 ; WX 333 ; N hyphen ; B 27 215 306 345 ; -C 173 ; WX 333 ; N hyphen ; B 44 232 289 322 ; -C 46 ; WX 278 ; N period ; B 64 0 214 146 ; -C 47 ; WX 278 ; N slash ; B -33 -19 311 737 ; -C 48 ; WX 556 ; N zero ; B 32 -19 524 710 ; -C 49 ; WX 556 ; N one ; B 69 0 378 710 ; -C 50 ; WX 556 ; N two ; B 26 0 511 710 ; -C 51 ; WX 556 ; N three ; B 27 -19 516 710 ; -C 52 ; WX 556 ; N four ; B 27 0 526 710 ; -C 53 ; WX 556 ; N five ; B 27 -19 516 698 ; -C 54 ; WX 556 ; N six ; B 31 -19 520 710 ; -C 55 ; WX 556 ; N seven ; B 25 0 528 698 ; -C 56 ; WX 556 ; N eight ; B 32 -19 524 710 ; -C 57 ; WX 556 ; N nine ; B 30 -19 522 710 ; -C 58 ; WX 333 ; N colon ; B 92 0 242 512 ; -C 59 ; WX 333 ; N semicolon ; B 92 -168 242 512 ; -C 60 ; WX 584 ; N less ; B 38 -8 546 514 ; -C 61 ; WX 584 ; N equal ; B 40 87 544 419 ; -C 62 ; WX 584 ; N greater ; B 38 -8 546 514 ; -C 63 ; WX 611 ; N question ; B 60 0 556 727 ; -C 64 ; WX 975 ; N at ; B 118 -19 856 737 ; -C 65 ; WX 722 ; N A ; B 20 0 702 718 ; -C 66 ; WX 722 ; N B ; B 76 0 669 718 ; -C 67 ; WX 722 ; N C ; B 44 -19 684 737 ; -C 68 ; WX 722 ; N D ; B 76 0 685 718 ; -C 69 ; WX 667 ; N E ; B 76 0 621 718 ; -C 70 ; WX 611 ; N F ; B 76 0 587 718 ; -C 71 ; WX 778 ; N G ; B 44 -19 713 737 ; -C 72 ; WX 722 ; N H ; B 71 0 651 718 ; -C 73 ; WX 278 ; N I ; B 64 0 214 718 ; -C 74 ; WX 556 ; N J ; B 22 -18 484 718 ; -C 75 ; WX 722 ; N K ; B 87 0 722 718 ; -C 76 ; WX 611 ; N L ; B 76 0 583 718 ; -C 77 ; WX 833 ; N M ; B 69 0 765 718 ; -C 78 ; WX 722 ; N N ; B 69 0 654 718 ; -C 79 ; WX 778 ; N O ; B 44 -19 734 737 ; -C 80 ; WX 667 ; N P ; B 76 0 627 718 ; -C 81 ; WX 778 ; N Q ; B 44 -52 737 737 ; -C 82 ; WX 722 ; N R ; B 76 0 677 718 ; -C 83 ; WX 667 ; N S ; B 39 -19 629 737 ; -C 84 ; WX 611 ; N T ; B 14 0 598 718 ; -C 85 ; WX 722 ; N U ; B 72 -19 651 718 ; -C 86 ; WX 667 ; N V ; B 19 0 648 718 ; -C 87 ; WX 944 ; N W ; B 16 0 929 718 ; -C 88 ; WX 667 ; N X ; B 14 0 653 718 ; -C 89 ; WX 667 ; N Y ; B 15 0 653 718 ; -C 90 ; WX 611 ; N Z ; B 25 0 586 718 ; -C 91 ; WX 333 ; N bracketleft ; B 63 -196 309 722 ; -C 92 ; WX 278 ; N backslash ; B -33 -19 311 737 ; -C 93 ; WX 333 ; N bracketright ; B 24 -196 270 722 ; -C 94 ; WX 584 ; N asciicircum ; B 62 323 522 698 ; -C 95 ; WX 556 ; N underscore ; B 0 -125 556 -75 ; -C 145 ; WX 278 ; N quoteleft ; B 69 454 209 727 ; -C 97 ; WX 556 ; N a ; B 29 -14 527 546 ; -C 98 ; WX 611 ; N b ; B 61 -14 578 718 ; -C 99 ; WX 556 ; N c ; B 34 -14 524 546 ; -C 100 ; WX 611 ; N d ; B 34 -14 551 718 ; -C 101 ; WX 556 ; N e ; B 23 -14 528 546 ; -C 102 ; WX 333 ; N f ; B 10 0 318 727 ; L i fi ; L l fl ; -C 103 ; WX 611 ; N g ; B 40 -217 553 546 ; -C 104 ; WX 611 ; N h ; B 65 0 546 718 ; -C 105 ; WX 278 ; N i ; B 69 0 209 725 ; -C 106 ; WX 278 ; N j ; B 3 -214 209 725 ; -C 107 ; WX 556 ; N k ; B 69 0 562 718 ; -C 108 ; WX 278 ; N l ; B 69 0 209 718 ; -C 109 ; WX 889 ; N m ; B 64 0 826 546 ; -C 110 ; WX 611 ; N n ; B 65 0 546 546 ; -C 111 ; WX 611 ; N o ; B 34 -14 578 546 ; -C 112 ; WX 611 ; N p ; B 62 -207 578 546 ; -C 113 ; WX 611 ; N q ; B 34 -207 552 546 ; -C 114 ; WX 389 ; N r ; B 64 0 373 546 ; -C 115 ; WX 556 ; N s ; B 30 -14 519 546 ; -C 116 ; WX 333 ; N t ; B 10 -6 309 676 ; -C 117 ; WX 611 ; N u ; B 66 -14 545 532 ; -C 118 ; WX 556 ; N v ; B 13 0 543 532 ; -C 119 ; WX 778 ; N w ; B 10 0 769 532 ; -C 120 ; WX 556 ; N x ; B 15 0 541 532 ; -C 121 ; WX 556 ; N y ; B 10 -214 539 532 ; -C 122 ; WX 500 ; N z ; B 20 0 480 532 ; -C 123 ; WX 389 ; N braceleft ; B 48 -196 365 722 ; -C 124 ; WX 280 ; N bar ; B 84 -225 196 775 ; -C 125 ; WX 389 ; N braceright ; B 24 -196 341 722 ; -C 126 ; WX 584 ; N asciitilde ; B 61 163 523 343 ; -C 161 ; WX 333 ; N exclamdown ; B 90 -186 244 532 ; -C 162 ; WX 556 ; N cent ; B 34 -118 524 628 ; -C 163 ; WX 556 ; N sterling ; B 28 -16 541 718 ; -C -1 ; WX 167 ; N fraction ; B -170 -19 336 710 ; -C 165 ; WX 556 ; N yen ; B -9 0 565 698 ; -C 131 ; WX 556 ; N florin ; B -10 -210 516 737 ; -C 167 ; WX 556 ; N section ; B 34 -184 522 727 ; -C 164 ; WX 556 ; N currency ; B -3 76 559 636 ; -C 39 ; WX 238 ; N quotesingle ; B 70 447 168 718 ; -C 147 ; WX 500 ; N quotedblleft ; B 64 454 436 727 ; -C 170 ; WX 556 ; N guillemotleft ; B 88 76 468 484 ; -C 139 ; WX 333 ; N guilsinglleft ; B 83 76 250 484 ; -C 155 ; WX 333 ; N guilsinglright ; B 83 76 250 484 ; -C -1 ; WX 611 ; N fi ; B 10 0 542 727 ; -C -1 ; WX 611 ; N fl ; B 10 0 542 727 ; -C 150 ; WX 556 ; N endash ; B 0 227 556 333 ; -C 134 ; WX 556 ; N dagger ; B 36 -171 520 718 ; -C 135 ; WX 556 ; N daggerdbl ; B 36 -171 520 718 ; -C 183 ; WX 278 ; N periodcentered ; B 58 172 220 334 ; -C 182 ; WX 556 ; N paragraph ; B -8 -191 539 700 ; -C 149 ; WX 350 ; N bullet ; B 10 194 340 524 ; -C 130 ; WX 278 ; N quotesinglbase ; B 69 -146 209 127 ; -C 132 ; WX 500 ; N quotedblbase ; B 64 -146 436 127 ; -C 148 ; WX 500 ; N quotedblright ; B 64 445 436 718 ; -C 187 ; WX 556 ; N guillemotright ; B 88 76 468 484 ; -C 133 ; WX 1000 ; N ellipsis ; B 92 0 908 146 ; -C 137 ; WX 1000 ; N perthousand ; B -3 -19 1003 710 ; -C 191 ; WX 611 ; N questiondown ; B 55 -195 551 532 ; -C 96 ; WX 333 ; N grave ; B -23 604 225 750 ; -C 180 ; WX 333 ; N acute ; B 108 604 356 750 ; -C 136 ; WX 333 ; N circumflex ; B -10 604 343 750 ; -C 152 ; WX 333 ; N tilde ; B -17 610 350 737 ; -C 175 ; WX 333 ; N macron ; B -6 604 339 678 ; -C -1 ; WX 333 ; N breve ; B -2 604 335 750 ; -C -1 ; WX 333 ; N dotaccent ; B 104 614 230 729 ; -C 168 ; WX 333 ; N dieresis ; B 6 614 327 729 ; -C -1 ; WX 333 ; N ring ; B 59 568 275 776 ; -C 184 ; WX 333 ; N cedilla ; B 6 -228 245 0 ; -C -1 ; WX 333 ; N hungarumlaut ; B 9 604 486 750 ; -C -1 ; WX 333 ; N ogonek ; B 71 -228 304 0 ; -C -1 ; WX 333 ; N caron ; B -10 604 343 750 ; -C 151 ; WX 1000 ; N emdash ; B 0 227 1000 333 ; -C 198 ; WX 1000 ; N AE ; B 5 0 954 718 ; -C 170 ; WX 370 ; N ordfeminine ; B 22 401 347 737 ; -C -1 ; WX 611 ; N Lslash ; B -20 0 583 718 ; -C 216 ; WX 778 ; N Oslash ; B 33 -27 744 745 ; -C 140 ; WX 1000 ; N OE ; B 37 -19 961 737 ; -C 186 ; WX 365 ; N ordmasculine ; B 6 401 360 737 ; -C 230 ; WX 889 ; N ae ; B 29 -14 858 546 ; -C -1 ; WX 278 ; N dotlessi ; B 69 0 209 532 ; -C -1 ; WX 278 ; N lslash ; B -18 0 296 718 ; -C 248 ; WX 611 ; N oslash ; B 22 -29 589 560 ; -C 156 ; WX 944 ; N oe ; B 34 -14 912 546 ; -C 223 ; WX 611 ; N germandbls ; B 69 -14 579 731 ; -C 207 ; WX 278 ; N Idieresis ; B -21 0 300 915 ; -C 233 ; WX 556 ; N eacute ; B 23 -14 528 750 ; -C -1 ; WX 556 ; N abreve ; B 29 -14 527 750 ; -C -1 ; WX 611 ; N uhungarumlaut ; B 66 -14 625 750 ; -C -1 ; WX 556 ; N ecaron ; B 23 -14 528 750 ; -C 159 ; WX 667 ; N Ydieresis ; B 15 0 653 915 ; -C 247 ; WX 584 ; N divide ; B 40 -42 544 548 ; -C 221 ; WX 667 ; N Yacute ; B 15 0 653 936 ; -C 194 ; WX 722 ; N Acircumflex ; B 20 0 702 936 ; -C 225 ; WX 556 ; N aacute ; B 29 -14 527 750 ; -C 219 ; WX 722 ; N Ucircumflex ; B 72 -19 651 936 ; -C 253 ; WX 556 ; N yacute ; B 10 -214 539 750 ; -C -1 ; WX 556 ; N scommaaccent ; B 30 -228 519 546 ; -C 234 ; WX 556 ; N ecircumflex ; B 23 -14 528 750 ; -C -1 ; WX 722 ; N Uring ; B 72 -19 651 962 ; -C 220 ; WX 722 ; N Udieresis ; B 72 -19 651 915 ; -C -1 ; WX 556 ; N aogonek ; B 29 -224 545 546 ; -C 218 ; WX 722 ; N Uacute ; B 72 -19 651 936 ; -C -1 ; WX 611 ; N uogonek ; B 66 -228 545 532 ; -C 203 ; WX 667 ; N Edieresis ; B 76 0 621 915 ; -C -1 ; WX 722 ; N Dcroat ; B -5 0 685 718 ; -C -1 ; WX 250 ; N commaaccent ; B 64 -228 199 -50 ; -C 169 ; WX 737 ; N copyright ; B -11 -19 749 737 ; -C -1 ; WX 667 ; N Emacron ; B 76 0 621 864 ; -C -1 ; WX 556 ; N ccaron ; B 34 -14 524 750 ; -C 229 ; WX 556 ; N aring ; B 29 -14 527 776 ; -C -1 ; WX 722 ; N Ncommaaccent ; B 69 -228 654 718 ; -C -1 ; WX 278 ; N lacute ; B 69 0 329 936 ; -C 224 ; WX 556 ; N agrave ; B 29 -14 527 750 ; -C -1 ; WX 611 ; N Tcommaaccent ; B 14 -228 598 718 ; -C -1 ; WX 722 ; N Cacute ; B 44 -19 684 936 ; -C 227 ; WX 556 ; N atilde ; B 29 -14 527 737 ; -C -1 ; WX 667 ; N Edotaccent ; B 76 0 621 915 ; -C 154 ; WX 556 ; N scaron ; B 30 -14 519 750 ; -C -1 ; WX 556 ; N scedilla ; B 30 -228 519 546 ; -C 237 ; WX 278 ; N iacute ; B 69 0 329 750 ; -C -1 ; WX 494 ; N lozenge ; B 10 0 484 745 ; -C -1 ; WX 722 ; N Rcaron ; B 76 0 677 936 ; -C -1 ; WX 778 ; N Gcommaaccent ; B 44 -228 713 737 ; -C 251 ; WX 611 ; N ucircumflex ; B 66 -14 545 750 ; -C 226 ; WX 556 ; N acircumflex ; B 29 -14 527 750 ; -C -1 ; WX 722 ; N Amacron ; B 20 0 702 864 ; -C -1 ; WX 389 ; N rcaron ; B 18 0 373 750 ; -C 231 ; WX 556 ; N ccedilla ; B 34 -228 524 546 ; -C -1 ; WX 611 ; N Zdotaccent ; B 25 0 586 915 ; -C 222 ; WX 667 ; N Thorn ; B 76 0 627 718 ; -C -1 ; WX 778 ; N Omacron ; B 44 -19 734 864 ; -C -1 ; WX 722 ; N Racute ; B 76 0 677 936 ; -C -1 ; WX 667 ; N Sacute ; B 39 -19 629 936 ; -C -1 ; WX 743 ; N dcaron ; B 34 -14 750 718 ; -C -1 ; WX 722 ; N Umacron ; B 72 -19 651 864 ; -C -1 ; WX 611 ; N uring ; B 66 -14 545 776 ; -C 179 ; WX 333 ; N threesuperior ; B 8 271 326 710 ; -C 210 ; WX 778 ; N Ograve ; B 44 -19 734 936 ; -C 192 ; WX 722 ; N Agrave ; B 20 0 702 936 ; -C -1 ; WX 722 ; N Abreve ; B 20 0 702 936 ; -C 215 ; WX 584 ; N multiply ; B 40 1 545 505 ; -C 250 ; WX 611 ; N uacute ; B 66 -14 545 750 ; -C -1 ; WX 611 ; N Tcaron ; B 14 0 598 936 ; -C -1 ; WX 494 ; N partialdiff ; B 11 -21 494 750 ; -C 255 ; WX 556 ; N ydieresis ; B 10 -214 539 729 ; -C -1 ; WX 722 ; N Nacute ; B 69 0 654 936 ; -C 238 ; WX 278 ; N icircumflex ; B -37 0 316 750 ; -C 202 ; WX 667 ; N Ecircumflex ; B 76 0 621 936 ; -C 228 ; WX 556 ; N adieresis ; B 29 -14 527 729 ; -C 235 ; WX 556 ; N edieresis ; B 23 -14 528 729 ; -C -1 ; WX 556 ; N cacute ; B 34 -14 524 750 ; -C -1 ; WX 611 ; N nacute ; B 65 0 546 750 ; -C -1 ; WX 611 ; N umacron ; B 66 -14 545 678 ; -C -1 ; WX 722 ; N Ncaron ; B 69 0 654 936 ; -C 205 ; WX 278 ; N Iacute ; B 64 0 329 936 ; -C 177 ; WX 584 ; N plusminus ; B 40 0 544 506 ; -C 166 ; WX 280 ; N brokenbar ; B 84 -150 196 700 ; -C 174 ; WX 737 ; N registered ; B -11 -19 748 737 ; -C -1 ; WX 778 ; N Gbreve ; B 44 -19 713 936 ; -C -1 ; WX 278 ; N Idotaccent ; B 64 0 214 915 ; -C -1 ; WX 600 ; N summation ; B 14 -10 585 706 ; -C 200 ; WX 667 ; N Egrave ; B 76 0 621 936 ; -C -1 ; WX 389 ; N racute ; B 64 0 384 750 ; -C -1 ; WX 611 ; N omacron ; B 34 -14 578 678 ; -C -1 ; WX 611 ; N Zacute ; B 25 0 586 936 ; -C 142 ; WX 611 ; N Zcaron ; B 25 0 586 936 ; -C -1 ; WX 549 ; N greaterequal ; B 26 0 523 704 ; -C 208 ; WX 722 ; N Eth ; B -5 0 685 718 ; -C 199 ; WX 722 ; N Ccedilla ; B 44 -228 684 737 ; -C -1 ; WX 278 ; N lcommaaccent ; B 69 -228 213 718 ; -C -1 ; WX 389 ; N tcaron ; B 10 -6 421 878 ; -C -1 ; WX 556 ; N eogonek ; B 23 -228 528 546 ; -C -1 ; WX 722 ; N Uogonek ; B 72 -228 651 718 ; -C 193 ; WX 722 ; N Aacute ; B 20 0 702 936 ; -C 196 ; WX 722 ; N Adieresis ; B 20 0 702 915 ; -C 232 ; WX 556 ; N egrave ; B 23 -14 528 750 ; -C -1 ; WX 500 ; N zacute ; B 20 0 480 750 ; -C -1 ; WX 278 ; N iogonek ; B 16 -224 249 725 ; -C 211 ; WX 778 ; N Oacute ; B 44 -19 734 936 ; -C 243 ; WX 611 ; N oacute ; B 34 -14 578 750 ; -C -1 ; WX 556 ; N amacron ; B 29 -14 527 678 ; -C -1 ; WX 556 ; N sacute ; B 30 -14 519 750 ; -C 239 ; WX 278 ; N idieresis ; B -21 0 300 729 ; -C 212 ; WX 778 ; N Ocircumflex ; B 44 -19 734 936 ; -C 217 ; WX 722 ; N Ugrave ; B 72 -19 651 936 ; -C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; -C 254 ; WX 611 ; N thorn ; B 62 -208 578 718 ; -C 178 ; WX 333 ; N twosuperior ; B 9 283 324 710 ; -C 214 ; WX 778 ; N Odieresis ; B 44 -19 734 915 ; -C 181 ; WX 611 ; N mu ; B 66 -207 545 532 ; -C 236 ; WX 278 ; N igrave ; B -50 0 209 750 ; -C -1 ; WX 611 ; N ohungarumlaut ; B 34 -14 625 750 ; -C -1 ; WX 667 ; N Eogonek ; B 76 -224 639 718 ; -C -1 ; WX 611 ; N dcroat ; B 34 -14 650 718 ; -C 190 ; WX 834 ; N threequarters ; B 16 -19 799 710 ; -C -1 ; WX 667 ; N Scedilla ; B 39 -228 629 737 ; -C -1 ; WX 400 ; N lcaron ; B 69 0 408 718 ; -C -1 ; WX 722 ; N Kcommaaccent ; B 87 -228 722 718 ; -C -1 ; WX 611 ; N Lacute ; B 76 0 583 936 ; -C 153 ; WX 1000 ; N trademark ; B 44 306 956 718 ; -C -1 ; WX 556 ; N edotaccent ; B 23 -14 528 729 ; -C 204 ; WX 278 ; N Igrave ; B -50 0 214 936 ; -C -1 ; WX 278 ; N Imacron ; B -33 0 312 864 ; -C -1 ; WX 611 ; N Lcaron ; B 76 0 583 718 ; -C 189 ; WX 834 ; N onehalf ; B 26 -19 794 710 ; -C -1 ; WX 549 ; N lessequal ; B 29 0 526 704 ; -C 244 ; WX 611 ; N ocircumflex ; B 34 -14 578 750 ; -C 241 ; WX 611 ; N ntilde ; B 65 0 546 737 ; -C -1 ; WX 722 ; N Uhungarumlaut ; B 72 -19 681 936 ; -C 201 ; WX 667 ; N Eacute ; B 76 0 621 936 ; -C -1 ; WX 556 ; N emacron ; B 23 -14 528 678 ; -C -1 ; WX 611 ; N gbreve ; B 40 -217 553 750 ; -C 188 ; WX 834 ; N onequarter ; B 26 -19 766 710 ; -C 138 ; WX 667 ; N Scaron ; B 39 -19 629 936 ; -C -1 ; WX 667 ; N Scommaaccent ; B 39 -228 629 737 ; -C -1 ; WX 778 ; N Ohungarumlaut ; B 44 -19 734 936 ; -C 176 ; WX 400 ; N degree ; B 57 426 343 712 ; -C 242 ; WX 611 ; N ograve ; B 34 -14 578 750 ; -C -1 ; WX 722 ; N Ccaron ; B 44 -19 684 936 ; -C 249 ; WX 611 ; N ugrave ; B 66 -14 545 750 ; -C -1 ; WX 549 ; N radical ; B 10 -46 512 850 ; -C -1 ; WX 722 ; N Dcaron ; B 76 0 685 936 ; -C -1 ; WX 389 ; N rcommaaccent ; B 64 -228 373 546 ; -C 209 ; WX 722 ; N Ntilde ; B 69 0 654 923 ; -C 245 ; WX 611 ; N otilde ; B 34 -14 578 737 ; -C -1 ; WX 722 ; N Rcommaaccent ; B 76 -228 677 718 ; -C -1 ; WX 611 ; N Lcommaaccent ; B 76 -228 583 718 ; -C 195 ; WX 722 ; N Atilde ; B 20 0 702 923 ; -C -1 ; WX 722 ; N Aogonek ; B 20 -224 742 718 ; -C 197 ; WX 722 ; N Aring ; B 20 0 702 962 ; -C 213 ; WX 778 ; N Otilde ; B 44 -19 734 923 ; -C -1 ; WX 500 ; N zdotaccent ; B 20 0 480 729 ; -C -1 ; WX 667 ; N Ecaron ; B 76 0 621 936 ; -C -1 ; WX 278 ; N Iogonek ; B -11 -228 222 718 ; -C -1 ; WX 556 ; N kcommaaccent ; B 69 -228 562 718 ; -C -1 ; WX 584 ; N minus ; B 40 197 544 309 ; -C 206 ; WX 278 ; N Icircumflex ; B -37 0 316 936 ; -C -1 ; WX 611 ; N ncaron ; B 65 0 546 750 ; -C -1 ; WX 333 ; N tcommaaccent ; B 10 -228 309 676 ; -C 172 ; WX 584 ; N logicalnot ; B 40 108 544 419 ; -C 246 ; WX 611 ; N odieresis ; B 34 -14 578 729 ; -C 252 ; WX 611 ; N udieresis ; B 66 -14 545 729 ; -C -1 ; WX 549 ; N notequal ; B 15 -49 540 570 ; -C -1 ; WX 611 ; N gcommaaccent ; B 40 -217 553 850 ; -C 240 ; WX 611 ; N eth ; B 34 -14 578 737 ; -C 158 ; WX 500 ; N zcaron ; B 20 0 480 750 ; -C -1 ; WX 611 ; N ncommaaccent ; B 65 -228 546 546 ; -C 185 ; WX 333 ; N onesuperior ; B 26 283 237 710 ; -C -1 ; WX 278 ; N imacron ; B -8 0 285 678 ; -C 128 ; WX 556 ; N Euro ; B 0 0 0 0 ; -EndCharMetrics -StartKernData -StartKernPairs 2481 -KPX A C -40 -KPX A Cacute -40 -KPX A Ccaron -40 -KPX A Ccedilla -40 -KPX A G -50 -KPX A Gbreve -50 -KPX A Gcommaaccent -50 -KPX A O -40 -KPX A Oacute -40 -KPX A Ocircumflex -40 -KPX A Odieresis -40 -KPX A Ograve -40 -KPX A Ohungarumlaut -40 -KPX A Omacron -40 -KPX A Oslash -40 -KPX A Otilde -40 -KPX A Q -40 -KPX A T -90 -KPX A Tcaron -90 -KPX A Tcommaaccent -90 -KPX A U -50 -KPX A Uacute -50 -KPX A Ucircumflex -50 -KPX A Udieresis -50 -KPX A Ugrave -50 -KPX A Uhungarumlaut -50 -KPX A Umacron -50 -KPX A Uogonek -50 -KPX A Uring -50 -KPX A V -80 -KPX A W -60 -KPX A Y -110 -KPX A Yacute -110 -KPX A Ydieresis -110 -KPX A u -30 -KPX A uacute -30 -KPX A ucircumflex -30 -KPX A udieresis -30 -KPX A ugrave -30 -KPX A uhungarumlaut -30 -KPX A umacron -30 -KPX A uogonek -30 -KPX A uring -30 -KPX A v -40 -KPX A w -30 -KPX A y -30 -KPX A yacute -30 -KPX A ydieresis -30 -KPX Aacute C -40 -KPX Aacute Cacute -40 -KPX Aacute Ccaron -40 -KPX Aacute Ccedilla -40 -KPX Aacute G -50 -KPX Aacute Gbreve -50 -KPX Aacute Gcommaaccent -50 -KPX Aacute O -40 -KPX Aacute Oacute -40 -KPX Aacute Ocircumflex -40 -KPX Aacute Odieresis -40 -KPX Aacute Ograve -40 -KPX Aacute Ohungarumlaut -40 -KPX Aacute Omacron -40 -KPX Aacute Oslash -40 -KPX Aacute Otilde -40 -KPX Aacute Q -40 -KPX Aacute T -90 -KPX Aacute Tcaron -90 -KPX Aacute Tcommaaccent -90 -KPX Aacute U -50 -KPX Aacute Uacute -50 -KPX Aacute Ucircumflex -50 -KPX Aacute Udieresis -50 -KPX Aacute Ugrave -50 -KPX Aacute Uhungarumlaut -50 -KPX Aacute Umacron -50 -KPX Aacute Uogonek -50 -KPX Aacute Uring -50 -KPX Aacute V -80 -KPX Aacute W -60 -KPX Aacute Y -110 -KPX Aacute Yacute -110 -KPX Aacute Ydieresis -110 -KPX Aacute u -30 -KPX Aacute uacute -30 -KPX Aacute ucircumflex -30 -KPX Aacute udieresis -30 -KPX Aacute ugrave -30 -KPX Aacute uhungarumlaut -30 -KPX Aacute umacron -30 -KPX Aacute uogonek -30 -KPX Aacute uring -30 -KPX Aacute v -40 -KPX Aacute w -30 -KPX Aacute y -30 -KPX Aacute yacute -30 -KPX Aacute ydieresis -30 -KPX Abreve C -40 -KPX Abreve Cacute -40 -KPX Abreve Ccaron -40 -KPX Abreve Ccedilla -40 -KPX Abreve G -50 -KPX Abreve Gbreve -50 -KPX Abreve Gcommaaccent -50 -KPX Abreve O -40 -KPX Abreve Oacute -40 -KPX Abreve Ocircumflex -40 -KPX Abreve Odieresis -40 -KPX Abreve Ograve -40 -KPX Abreve Ohungarumlaut -40 -KPX Abreve Omacron -40 -KPX Abreve Oslash -40 -KPX Abreve Otilde -40 -KPX Abreve Q -40 -KPX Abreve T -90 -KPX Abreve Tcaron -90 -KPX Abreve Tcommaaccent -90 -KPX Abreve U -50 -KPX Abreve Uacute -50 -KPX Abreve Ucircumflex -50 -KPX Abreve Udieresis -50 -KPX Abreve Ugrave -50 -KPX Abreve Uhungarumlaut -50 -KPX Abreve Umacron -50 -KPX Abreve Uogonek -50 -KPX Abreve Uring -50 -KPX Abreve V -80 -KPX Abreve W -60 -KPX Abreve Y -110 -KPX Abreve Yacute -110 -KPX Abreve Ydieresis -110 -KPX Abreve u -30 -KPX Abreve uacute -30 -KPX Abreve ucircumflex -30 -KPX Abreve udieresis -30 -KPX Abreve ugrave -30 -KPX Abreve uhungarumlaut -30 -KPX Abreve umacron -30 -KPX Abreve uogonek -30 -KPX Abreve uring -30 -KPX Abreve v -40 -KPX Abreve w -30 -KPX Abreve y -30 -KPX Abreve yacute -30 -KPX Abreve ydieresis -30 -KPX Acircumflex C -40 -KPX Acircumflex Cacute -40 -KPX Acircumflex Ccaron -40 -KPX Acircumflex Ccedilla -40 -KPX Acircumflex G -50 -KPX Acircumflex Gbreve -50 -KPX Acircumflex Gcommaaccent -50 -KPX Acircumflex O -40 -KPX Acircumflex Oacute -40 -KPX Acircumflex Ocircumflex -40 -KPX Acircumflex Odieresis -40 -KPX Acircumflex Ograve -40 -KPX Acircumflex Ohungarumlaut -40 -KPX Acircumflex Omacron -40 -KPX Acircumflex Oslash -40 -KPX Acircumflex Otilde -40 -KPX Acircumflex Q -40 -KPX Acircumflex T -90 -KPX Acircumflex Tcaron -90 -KPX Acircumflex Tcommaaccent -90 -KPX Acircumflex U -50 -KPX Acircumflex Uacute -50 -KPX Acircumflex Ucircumflex -50 -KPX Acircumflex Udieresis -50 -KPX Acircumflex Ugrave -50 -KPX Acircumflex Uhungarumlaut -50 -KPX Acircumflex Umacron -50 -KPX Acircumflex Uogonek -50 -KPX Acircumflex Uring -50 -KPX Acircumflex V -80 -KPX Acircumflex W -60 -KPX Acircumflex Y -110 -KPX Acircumflex Yacute -110 -KPX Acircumflex Ydieresis -110 -KPX Acircumflex u -30 -KPX Acircumflex uacute -30 -KPX Acircumflex ucircumflex -30 -KPX Acircumflex udieresis -30 -KPX Acircumflex ugrave -30 -KPX Acircumflex uhungarumlaut -30 -KPX Acircumflex umacron -30 -KPX Acircumflex uogonek -30 -KPX Acircumflex uring -30 -KPX Acircumflex v -40 -KPX Acircumflex w -30 -KPX Acircumflex y -30 -KPX Acircumflex yacute -30 -KPX Acircumflex ydieresis -30 -KPX Adieresis C -40 -KPX Adieresis Cacute -40 -KPX Adieresis Ccaron -40 -KPX Adieresis Ccedilla -40 -KPX Adieresis G -50 -KPX Adieresis Gbreve -50 -KPX Adieresis Gcommaaccent -50 -KPX Adieresis O -40 -KPX Adieresis Oacute -40 -KPX Adieresis Ocircumflex -40 -KPX Adieresis Odieresis -40 -KPX Adieresis Ograve -40 -KPX Adieresis Ohungarumlaut -40 -KPX Adieresis Omacron -40 -KPX Adieresis Oslash -40 -KPX Adieresis Otilde -40 -KPX Adieresis Q -40 -KPX Adieresis T -90 -KPX Adieresis Tcaron -90 -KPX Adieresis Tcommaaccent -90 -KPX Adieresis U -50 -KPX Adieresis Uacute -50 -KPX Adieresis Ucircumflex -50 -KPX Adieresis Udieresis -50 -KPX Adieresis Ugrave -50 -KPX Adieresis Uhungarumlaut -50 -KPX Adieresis Umacron -50 -KPX Adieresis Uogonek -50 -KPX Adieresis Uring -50 -KPX Adieresis V -80 -KPX Adieresis W -60 -KPX Adieresis Y -110 -KPX Adieresis Yacute -110 -KPX Adieresis Ydieresis -110 -KPX Adieresis u -30 -KPX Adieresis uacute -30 -KPX Adieresis ucircumflex -30 -KPX Adieresis udieresis -30 -KPX Adieresis ugrave -30 -KPX Adieresis uhungarumlaut -30 -KPX Adieresis umacron -30 -KPX Adieresis uogonek -30 -KPX Adieresis uring -30 -KPX Adieresis v -40 -KPX Adieresis w -30 -KPX Adieresis y -30 -KPX Adieresis yacute -30 -KPX Adieresis ydieresis -30 -KPX Agrave C -40 -KPX Agrave Cacute -40 -KPX Agrave Ccaron -40 -KPX Agrave Ccedilla -40 -KPX Agrave G -50 -KPX Agrave Gbreve -50 -KPX Agrave Gcommaaccent -50 -KPX Agrave O -40 -KPX Agrave Oacute -40 -KPX Agrave Ocircumflex -40 -KPX Agrave Odieresis -40 -KPX Agrave Ograve -40 -KPX Agrave Ohungarumlaut -40 -KPX Agrave Omacron -40 -KPX Agrave Oslash -40 -KPX Agrave Otilde -40 -KPX Agrave Q -40 -KPX Agrave T -90 -KPX Agrave Tcaron -90 -KPX Agrave Tcommaaccent -90 -KPX Agrave U -50 -KPX Agrave Uacute -50 -KPX Agrave Ucircumflex -50 -KPX Agrave Udieresis -50 -KPX Agrave Ugrave -50 -KPX Agrave Uhungarumlaut -50 -KPX Agrave Umacron -50 -KPX Agrave Uogonek -50 -KPX Agrave Uring -50 -KPX Agrave V -80 -KPX Agrave W -60 -KPX Agrave Y -110 -KPX Agrave Yacute -110 -KPX Agrave Ydieresis -110 -KPX Agrave u -30 -KPX Agrave uacute -30 -KPX Agrave ucircumflex -30 -KPX Agrave udieresis -30 -KPX Agrave ugrave -30 -KPX Agrave uhungarumlaut -30 -KPX Agrave umacron -30 -KPX Agrave uogonek -30 -KPX Agrave uring -30 -KPX Agrave v -40 -KPX Agrave w -30 -KPX Agrave y -30 -KPX Agrave yacute -30 -KPX Agrave ydieresis -30 -KPX Amacron C -40 -KPX Amacron Cacute -40 -KPX Amacron Ccaron -40 -KPX Amacron Ccedilla -40 -KPX Amacron G -50 -KPX Amacron Gbreve -50 -KPX Amacron Gcommaaccent -50 -KPX Amacron O -40 -KPX Amacron Oacute -40 -KPX Amacron Ocircumflex -40 -KPX Amacron Odieresis -40 -KPX Amacron Ograve -40 -KPX Amacron Ohungarumlaut -40 -KPX Amacron Omacron -40 -KPX Amacron Oslash -40 -KPX Amacron Otilde -40 -KPX Amacron Q -40 -KPX Amacron T -90 -KPX Amacron Tcaron -90 -KPX Amacron Tcommaaccent -90 -KPX Amacron U -50 -KPX Amacron Uacute -50 -KPX Amacron Ucircumflex -50 -KPX Amacron Udieresis -50 -KPX Amacron Ugrave -50 -KPX Amacron Uhungarumlaut -50 -KPX Amacron Umacron -50 -KPX Amacron Uogonek -50 -KPX Amacron Uring -50 -KPX Amacron V -80 -KPX Amacron W -60 -KPX Amacron Y -110 -KPX Amacron Yacute -110 -KPX Amacron Ydieresis -110 -KPX Amacron u -30 -KPX Amacron uacute -30 -KPX Amacron ucircumflex -30 -KPX Amacron udieresis -30 -KPX Amacron ugrave -30 -KPX Amacron uhungarumlaut -30 -KPX Amacron umacron -30 -KPX Amacron uogonek -30 -KPX Amacron uring -30 -KPX Amacron v -40 -KPX Amacron w -30 -KPX Amacron y -30 -KPX Amacron yacute -30 -KPX Amacron ydieresis -30 -KPX Aogonek C -40 -KPX Aogonek Cacute -40 -KPX Aogonek Ccaron -40 -KPX Aogonek Ccedilla -40 -KPX Aogonek G -50 -KPX Aogonek Gbreve -50 -KPX Aogonek Gcommaaccent -50 -KPX Aogonek O -40 -KPX Aogonek Oacute -40 -KPX Aogonek Ocircumflex -40 -KPX Aogonek Odieresis -40 -KPX Aogonek Ograve -40 -KPX Aogonek Ohungarumlaut -40 -KPX Aogonek Omacron -40 -KPX Aogonek Oslash -40 -KPX Aogonek Otilde -40 -KPX Aogonek Q -40 -KPX Aogonek T -90 -KPX Aogonek Tcaron -90 -KPX Aogonek Tcommaaccent -90 -KPX Aogonek U -50 -KPX Aogonek Uacute -50 -KPX Aogonek Ucircumflex -50 -KPX Aogonek Udieresis -50 -KPX Aogonek Ugrave -50 -KPX Aogonek Uhungarumlaut -50 -KPX Aogonek Umacron -50 -KPX Aogonek Uogonek -50 -KPX Aogonek Uring -50 -KPX Aogonek V -80 -KPX Aogonek W -60 -KPX Aogonek Y -110 -KPX Aogonek Yacute -110 -KPX Aogonek Ydieresis -110 -KPX Aogonek u -30 -KPX Aogonek uacute -30 -KPX Aogonek ucircumflex -30 -KPX Aogonek udieresis -30 -KPX Aogonek ugrave -30 -KPX Aogonek uhungarumlaut -30 -KPX Aogonek umacron -30 -KPX Aogonek uogonek -30 -KPX Aogonek uring -30 -KPX Aogonek v -40 -KPX Aogonek w -30 -KPX Aogonek y -30 -KPX Aogonek yacute -30 -KPX Aogonek ydieresis -30 -KPX Aring C -40 -KPX Aring Cacute -40 -KPX Aring Ccaron -40 -KPX Aring Ccedilla -40 -KPX Aring G -50 -KPX Aring Gbreve -50 -KPX Aring Gcommaaccent -50 -KPX Aring O -40 -KPX Aring Oacute -40 -KPX Aring Ocircumflex -40 -KPX Aring Odieresis -40 -KPX Aring Ograve -40 -KPX Aring Ohungarumlaut -40 -KPX Aring Omacron -40 -KPX Aring Oslash -40 -KPX Aring Otilde -40 -KPX Aring Q -40 -KPX Aring T -90 -KPX Aring Tcaron -90 -KPX Aring Tcommaaccent -90 -KPX Aring U -50 -KPX Aring Uacute -50 -KPX Aring Ucircumflex -50 -KPX Aring Udieresis -50 -KPX Aring Ugrave -50 -KPX Aring Uhungarumlaut -50 -KPX Aring Umacron -50 -KPX Aring Uogonek -50 -KPX Aring Uring -50 -KPX Aring V -80 -KPX Aring W -60 -KPX Aring Y -110 -KPX Aring Yacute -110 -KPX Aring Ydieresis -110 -KPX Aring u -30 -KPX Aring uacute -30 -KPX Aring ucircumflex -30 -KPX Aring udieresis -30 -KPX Aring ugrave -30 -KPX Aring uhungarumlaut -30 -KPX Aring umacron -30 -KPX Aring uogonek -30 -KPX Aring uring -30 -KPX Aring v -40 -KPX Aring w -30 -KPX Aring y -30 -KPX Aring yacute -30 -KPX Aring ydieresis -30 -KPX Atilde C -40 -KPX Atilde Cacute -40 -KPX Atilde Ccaron -40 -KPX Atilde Ccedilla -40 -KPX Atilde G -50 -KPX Atilde Gbreve -50 -KPX Atilde Gcommaaccent -50 -KPX Atilde O -40 -KPX Atilde Oacute -40 -KPX Atilde Ocircumflex -40 -KPX Atilde Odieresis -40 -KPX Atilde Ograve -40 -KPX Atilde Ohungarumlaut -40 -KPX Atilde Omacron -40 -KPX Atilde Oslash -40 -KPX Atilde Otilde -40 -KPX Atilde Q -40 -KPX Atilde T -90 -KPX Atilde Tcaron -90 -KPX Atilde Tcommaaccent -90 -KPX Atilde U -50 -KPX Atilde Uacute -50 -KPX Atilde Ucircumflex -50 -KPX Atilde Udieresis -50 -KPX Atilde Ugrave -50 -KPX Atilde Uhungarumlaut -50 -KPX Atilde Umacron -50 -KPX Atilde Uogonek -50 -KPX Atilde Uring -50 -KPX Atilde V -80 -KPX Atilde W -60 -KPX Atilde Y -110 -KPX Atilde Yacute -110 -KPX Atilde Ydieresis -110 -KPX Atilde u -30 -KPX Atilde uacute -30 -KPX Atilde ucircumflex -30 -KPX Atilde udieresis -30 -KPX Atilde ugrave -30 -KPX Atilde uhungarumlaut -30 -KPX Atilde umacron -30 -KPX Atilde uogonek -30 -KPX Atilde uring -30 -KPX Atilde v -40 -KPX Atilde w -30 -KPX Atilde y -30 -KPX Atilde yacute -30 -KPX Atilde ydieresis -30 -KPX B A -30 -KPX B Aacute -30 -KPX B Abreve -30 -KPX B Acircumflex -30 -KPX B Adieresis -30 -KPX B Agrave -30 -KPX B Amacron -30 -KPX B Aogonek -30 -KPX B Aring -30 -KPX B Atilde -30 -KPX B U -10 -KPX B Uacute -10 -KPX B Ucircumflex -10 -KPX B Udieresis -10 -KPX B Ugrave -10 -KPX B Uhungarumlaut -10 -KPX B Umacron -10 -KPX B Uogonek -10 -KPX B Uring -10 -KPX D A -40 -KPX D Aacute -40 -KPX D Abreve -40 -KPX D Acircumflex -40 -KPX D Adieresis -40 -KPX D Agrave -40 -KPX D Amacron -40 -KPX D Aogonek -40 -KPX D Aring -40 -KPX D Atilde -40 -KPX D V -40 -KPX D W -40 -KPX D Y -70 -KPX D Yacute -70 -KPX D Ydieresis -70 -KPX D comma -30 -KPX D period -30 -KPX Dcaron A -40 -KPX Dcaron Aacute -40 -KPX Dcaron Abreve -40 -KPX Dcaron Acircumflex -40 -KPX Dcaron Adieresis -40 -KPX Dcaron Agrave -40 -KPX Dcaron Amacron -40 -KPX Dcaron Aogonek -40 -KPX Dcaron Aring -40 -KPX Dcaron Atilde -40 -KPX Dcaron V -40 -KPX Dcaron W -40 -KPX Dcaron Y -70 -KPX Dcaron Yacute -70 -KPX Dcaron Ydieresis -70 -KPX Dcaron comma -30 -KPX Dcaron period -30 -KPX Dcroat A -40 -KPX Dcroat Aacute -40 -KPX Dcroat Abreve -40 -KPX Dcroat Acircumflex -40 -KPX Dcroat Adieresis -40 -KPX Dcroat Agrave -40 -KPX Dcroat Amacron -40 -KPX Dcroat Aogonek -40 -KPX Dcroat Aring -40 -KPX Dcroat Atilde -40 -KPX Dcroat V -40 -KPX Dcroat W -40 -KPX Dcroat Y -70 -KPX Dcroat Yacute -70 -KPX Dcroat Ydieresis -70 -KPX Dcroat comma -30 -KPX Dcroat period -30 -KPX F A -80 -KPX F Aacute -80 -KPX F Abreve -80 -KPX F Acircumflex -80 -KPX F Adieresis -80 -KPX F Agrave -80 -KPX F Amacron -80 -KPX F Aogonek -80 -KPX F Aring -80 -KPX F Atilde -80 -KPX F a -20 -KPX F aacute -20 -KPX F abreve -20 -KPX F acircumflex -20 -KPX F adieresis -20 -KPX F agrave -20 -KPX F amacron -20 -KPX F aogonek -20 -KPX F aring -20 -KPX F atilde -20 -KPX F comma -100 -KPX F period -100 -KPX J A -20 -KPX J Aacute -20 -KPX J Abreve -20 -KPX J Acircumflex -20 -KPX J Adieresis -20 -KPX J Agrave -20 -KPX J Amacron -20 -KPX J Aogonek -20 -KPX J Aring -20 -KPX J Atilde -20 -KPX J comma -20 -KPX J period -20 -KPX J u -20 -KPX J uacute -20 -KPX J ucircumflex -20 -KPX J udieresis -20 -KPX J ugrave -20 -KPX J uhungarumlaut -20 -KPX J umacron -20 -KPX J uogonek -20 -KPX J uring -20 -KPX K O -30 -KPX K Oacute -30 -KPX K Ocircumflex -30 -KPX K Odieresis -30 -KPX K Ograve -30 -KPX K Ohungarumlaut -30 -KPX K Omacron -30 -KPX K Oslash -30 -KPX K Otilde -30 -KPX K e -15 -KPX K eacute -15 -KPX K ecaron -15 -KPX K ecircumflex -15 -KPX K edieresis -15 -KPX K edotaccent -15 -KPX K egrave -15 -KPX K emacron -15 -KPX K eogonek -15 -KPX K o -35 -KPX K oacute -35 -KPX K ocircumflex -35 -KPX K odieresis -35 -KPX K ograve -35 -KPX K ohungarumlaut -35 -KPX K omacron -35 -KPX K oslash -35 -KPX K otilde -35 -KPX K u -30 -KPX K uacute -30 -KPX K ucircumflex -30 -KPX K udieresis -30 -KPX K ugrave -30 -KPX K uhungarumlaut -30 -KPX K umacron -30 -KPX K uogonek -30 -KPX K uring -30 -KPX K y -40 -KPX K yacute -40 -KPX K ydieresis -40 -KPX Kcommaaccent O -30 -KPX Kcommaaccent Oacute -30 -KPX Kcommaaccent Ocircumflex -30 -KPX Kcommaaccent Odieresis -30 -KPX Kcommaaccent Ograve -30 -KPX Kcommaaccent Ohungarumlaut -30 -KPX Kcommaaccent Omacron -30 -KPX Kcommaaccent Oslash -30 -KPX Kcommaaccent Otilde -30 -KPX Kcommaaccent e -15 -KPX Kcommaaccent eacute -15 -KPX Kcommaaccent ecaron -15 -KPX Kcommaaccent ecircumflex -15 -KPX Kcommaaccent edieresis -15 -KPX Kcommaaccent edotaccent -15 -KPX Kcommaaccent egrave -15 -KPX Kcommaaccent emacron -15 -KPX Kcommaaccent eogonek -15 -KPX Kcommaaccent o -35 -KPX Kcommaaccent oacute -35 -KPX Kcommaaccent ocircumflex -35 -KPX Kcommaaccent odieresis -35 -KPX Kcommaaccent ograve -35 -KPX Kcommaaccent ohungarumlaut -35 -KPX Kcommaaccent omacron -35 -KPX Kcommaaccent oslash -35 -KPX Kcommaaccent otilde -35 -KPX Kcommaaccent u -30 -KPX Kcommaaccent uacute -30 -KPX Kcommaaccent ucircumflex -30 -KPX Kcommaaccent udieresis -30 -KPX Kcommaaccent ugrave -30 -KPX Kcommaaccent uhungarumlaut -30 -KPX Kcommaaccent umacron -30 -KPX Kcommaaccent uogonek -30 -KPX Kcommaaccent uring -30 -KPX Kcommaaccent y -40 -KPX Kcommaaccent yacute -40 -KPX Kcommaaccent ydieresis -40 -KPX L T -90 -KPX L Tcaron -90 -KPX L Tcommaaccent -90 -KPX L V -110 -KPX L W -80 -KPX L Y -120 -KPX L Yacute -120 -KPX L Ydieresis -120 -KPX L quotedblright -140 -KPX L quoteright -140 -KPX L y -30 -KPX L yacute -30 -KPX L ydieresis -30 -KPX Lacute T -90 -KPX Lacute Tcaron -90 -KPX Lacute Tcommaaccent -90 -KPX Lacute V -110 -KPX Lacute W -80 -KPX Lacute Y -120 -KPX Lacute Yacute -120 -KPX Lacute Ydieresis -120 -KPX Lacute quotedblright -140 -KPX Lacute quoteright -140 -KPX Lacute y -30 -KPX Lacute yacute -30 -KPX Lacute ydieresis -30 -KPX Lcommaaccent T -90 -KPX Lcommaaccent Tcaron -90 -KPX Lcommaaccent Tcommaaccent -90 -KPX Lcommaaccent V -110 -KPX Lcommaaccent W -80 -KPX Lcommaaccent Y -120 -KPX Lcommaaccent Yacute -120 -KPX Lcommaaccent Ydieresis -120 -KPX Lcommaaccent quotedblright -140 -KPX Lcommaaccent quoteright -140 -KPX Lcommaaccent y -30 -KPX Lcommaaccent yacute -30 -KPX Lcommaaccent ydieresis -30 -KPX Lslash T -90 -KPX Lslash Tcaron -90 -KPX Lslash Tcommaaccent -90 -KPX Lslash V -110 -KPX Lslash W -80 -KPX Lslash Y -120 -KPX Lslash Yacute -120 -KPX Lslash Ydieresis -120 -KPX Lslash quotedblright -140 -KPX Lslash quoteright -140 -KPX Lslash y -30 -KPX Lslash yacute -30 -KPX Lslash ydieresis -30 -KPX O A -50 -KPX O Aacute -50 -KPX O Abreve -50 -KPX O Acircumflex -50 -KPX O Adieresis -50 -KPX O Agrave -50 -KPX O Amacron -50 -KPX O Aogonek -50 -KPX O Aring -50 -KPX O Atilde -50 -KPX O T -40 -KPX O Tcaron -40 -KPX O Tcommaaccent -40 -KPX O V -50 -KPX O W -50 -KPX O X -50 -KPX O Y -70 -KPX O Yacute -70 -KPX O Ydieresis -70 -KPX O comma -40 -KPX O period -40 -KPX Oacute A -50 -KPX Oacute Aacute -50 -KPX Oacute Abreve -50 -KPX Oacute Acircumflex -50 -KPX Oacute Adieresis -50 -KPX Oacute Agrave -50 -KPX Oacute Amacron -50 -KPX Oacute Aogonek -50 -KPX Oacute Aring -50 -KPX Oacute Atilde -50 -KPX Oacute T -40 -KPX Oacute Tcaron -40 -KPX Oacute Tcommaaccent -40 -KPX Oacute V -50 -KPX Oacute W -50 -KPX Oacute X -50 -KPX Oacute Y -70 -KPX Oacute Yacute -70 -KPX Oacute Ydieresis -70 -KPX Oacute comma -40 -KPX Oacute period -40 -KPX Ocircumflex A -50 -KPX Ocircumflex Aacute -50 -KPX Ocircumflex Abreve -50 -KPX Ocircumflex Acircumflex -50 -KPX Ocircumflex Adieresis -50 -KPX Ocircumflex Agrave -50 -KPX Ocircumflex Amacron -50 -KPX Ocircumflex Aogonek -50 -KPX Ocircumflex Aring -50 -KPX Ocircumflex Atilde -50 -KPX Ocircumflex T -40 -KPX Ocircumflex Tcaron -40 -KPX Ocircumflex Tcommaaccent -40 -KPX Ocircumflex V -50 -KPX Ocircumflex W -50 -KPX Ocircumflex X -50 -KPX Ocircumflex Y -70 -KPX Ocircumflex Yacute -70 -KPX Ocircumflex Ydieresis -70 -KPX Ocircumflex comma -40 -KPX Ocircumflex period -40 -KPX Odieresis A -50 -KPX Odieresis Aacute -50 -KPX Odieresis Abreve -50 -KPX Odieresis Acircumflex -50 -KPX Odieresis Adieresis -50 -KPX Odieresis Agrave -50 -KPX Odieresis Amacron -50 -KPX Odieresis Aogonek -50 -KPX Odieresis Aring -50 -KPX Odieresis Atilde -50 -KPX Odieresis T -40 -KPX Odieresis Tcaron -40 -KPX Odieresis Tcommaaccent -40 -KPX Odieresis V -50 -KPX Odieresis W -50 -KPX Odieresis X -50 -KPX Odieresis Y -70 -KPX Odieresis Yacute -70 -KPX Odieresis Ydieresis -70 -KPX Odieresis comma -40 -KPX Odieresis period -40 -KPX Ograve A -50 -KPX Ograve Aacute -50 -KPX Ograve Abreve -50 -KPX Ograve Acircumflex -50 -KPX Ograve Adieresis -50 -KPX Ograve Agrave -50 -KPX Ograve Amacron -50 -KPX Ograve Aogonek -50 -KPX Ograve Aring -50 -KPX Ograve Atilde -50 -KPX Ograve T -40 -KPX Ograve Tcaron -40 -KPX Ograve Tcommaaccent -40 -KPX Ograve V -50 -KPX Ograve W -50 -KPX Ograve X -50 -KPX Ograve Y -70 -KPX Ograve Yacute -70 -KPX Ograve Ydieresis -70 -KPX Ograve comma -40 -KPX Ograve period -40 -KPX Ohungarumlaut A -50 -KPX Ohungarumlaut Aacute -50 -KPX Ohungarumlaut Abreve -50 -KPX Ohungarumlaut Acircumflex -50 -KPX Ohungarumlaut Adieresis -50 -KPX Ohungarumlaut Agrave -50 -KPX Ohungarumlaut Amacron -50 -KPX Ohungarumlaut Aogonek -50 -KPX Ohungarumlaut Aring -50 -KPX Ohungarumlaut Atilde -50 -KPX Ohungarumlaut T -40 -KPX Ohungarumlaut Tcaron -40 -KPX Ohungarumlaut Tcommaaccent -40 -KPX Ohungarumlaut V -50 -KPX Ohungarumlaut W -50 -KPX Ohungarumlaut X -50 -KPX Ohungarumlaut Y -70 -KPX Ohungarumlaut Yacute -70 -KPX Ohungarumlaut Ydieresis -70 -KPX Ohungarumlaut comma -40 -KPX Ohungarumlaut period -40 -KPX Omacron A -50 -KPX Omacron Aacute -50 -KPX Omacron Abreve -50 -KPX Omacron Acircumflex -50 -KPX Omacron Adieresis -50 -KPX Omacron Agrave -50 -KPX Omacron Amacron -50 -KPX Omacron Aogonek -50 -KPX Omacron Aring -50 -KPX Omacron Atilde -50 -KPX Omacron T -40 -KPX Omacron Tcaron -40 -KPX Omacron Tcommaaccent -40 -KPX Omacron V -50 -KPX Omacron W -50 -KPX Omacron X -50 -KPX Omacron Y -70 -KPX Omacron Yacute -70 -KPX Omacron Ydieresis -70 -KPX Omacron comma -40 -KPX Omacron period -40 -KPX Oslash A -50 -KPX Oslash Aacute -50 -KPX Oslash Abreve -50 -KPX Oslash Acircumflex -50 -KPX Oslash Adieresis -50 -KPX Oslash Agrave -50 -KPX Oslash Amacron -50 -KPX Oslash Aogonek -50 -KPX Oslash Aring -50 -KPX Oslash Atilde -50 -KPX Oslash T -40 -KPX Oslash Tcaron -40 -KPX Oslash Tcommaaccent -40 -KPX Oslash V -50 -KPX Oslash W -50 -KPX Oslash X -50 -KPX Oslash Y -70 -KPX Oslash Yacute -70 -KPX Oslash Ydieresis -70 -KPX Oslash comma -40 -KPX Oslash period -40 -KPX Otilde A -50 -KPX Otilde Aacute -50 -KPX Otilde Abreve -50 -KPX Otilde Acircumflex -50 -KPX Otilde Adieresis -50 -KPX Otilde Agrave -50 -KPX Otilde Amacron -50 -KPX Otilde Aogonek -50 -KPX Otilde Aring -50 -KPX Otilde Atilde -50 -KPX Otilde T -40 -KPX Otilde Tcaron -40 -KPX Otilde Tcommaaccent -40 -KPX Otilde V -50 -KPX Otilde W -50 -KPX Otilde X -50 -KPX Otilde Y -70 -KPX Otilde Yacute -70 -KPX Otilde Ydieresis -70 -KPX Otilde comma -40 -KPX Otilde period -40 -KPX P A -100 -KPX P Aacute -100 -KPX P Abreve -100 -KPX P Acircumflex -100 -KPX P Adieresis -100 -KPX P Agrave -100 -KPX P Amacron -100 -KPX P Aogonek -100 -KPX P Aring -100 -KPX P Atilde -100 -KPX P a -30 -KPX P aacute -30 -KPX P abreve -30 -KPX P acircumflex -30 -KPX P adieresis -30 -KPX P agrave -30 -KPX P amacron -30 -KPX P aogonek -30 -KPX P aring -30 -KPX P atilde -30 -KPX P comma -120 -KPX P e -30 -KPX P eacute -30 -KPX P ecaron -30 -KPX P ecircumflex -30 -KPX P edieresis -30 -KPX P edotaccent -30 -KPX P egrave -30 -KPX P emacron -30 -KPX P eogonek -30 -KPX P o -40 -KPX P oacute -40 -KPX P ocircumflex -40 -KPX P odieresis -40 -KPX P ograve -40 -KPX P ohungarumlaut -40 -KPX P omacron -40 -KPX P oslash -40 -KPX P otilde -40 -KPX P period -120 -KPX Q U -10 -KPX Q Uacute -10 -KPX Q Ucircumflex -10 -KPX Q Udieresis -10 -KPX Q Ugrave -10 -KPX Q Uhungarumlaut -10 -KPX Q Umacron -10 -KPX Q Uogonek -10 -KPX Q Uring -10 -KPX Q comma 20 -KPX Q period 20 -KPX R O -20 -KPX R Oacute -20 -KPX R Ocircumflex -20 -KPX R Odieresis -20 -KPX R Ograve -20 -KPX R Ohungarumlaut -20 -KPX R Omacron -20 -KPX R Oslash -20 -KPX R Otilde -20 -KPX R T -20 -KPX R Tcaron -20 -KPX R Tcommaaccent -20 -KPX R U -20 -KPX R Uacute -20 -KPX R Ucircumflex -20 -KPX R Udieresis -20 -KPX R Ugrave -20 -KPX R Uhungarumlaut -20 -KPX R Umacron -20 -KPX R Uogonek -20 -KPX R Uring -20 -KPX R V -50 -KPX R W -40 -KPX R Y -50 -KPX R Yacute -50 -KPX R Ydieresis -50 -KPX Racute O -20 -KPX Racute Oacute -20 -KPX Racute Ocircumflex -20 -KPX Racute Odieresis -20 -KPX Racute Ograve -20 -KPX Racute Ohungarumlaut -20 -KPX Racute Omacron -20 -KPX Racute Oslash -20 -KPX Racute Otilde -20 -KPX Racute T -20 -KPX Racute Tcaron -20 -KPX Racute Tcommaaccent -20 -KPX Racute U -20 -KPX Racute Uacute -20 -KPX Racute Ucircumflex -20 -KPX Racute Udieresis -20 -KPX Racute Ugrave -20 -KPX Racute Uhungarumlaut -20 -KPX Racute Umacron -20 -KPX Racute Uogonek -20 -KPX Racute Uring -20 -KPX Racute V -50 -KPX Racute W -40 -KPX Racute Y -50 -KPX Racute Yacute -50 -KPX Racute Ydieresis -50 -KPX Rcaron O -20 -KPX Rcaron Oacute -20 -KPX Rcaron Ocircumflex -20 -KPX Rcaron Odieresis -20 -KPX Rcaron Ograve -20 -KPX Rcaron Ohungarumlaut -20 -KPX Rcaron Omacron -20 -KPX Rcaron Oslash -20 -KPX Rcaron Otilde -20 -KPX Rcaron T -20 -KPX Rcaron Tcaron -20 -KPX Rcaron Tcommaaccent -20 -KPX Rcaron U -20 -KPX Rcaron Uacute -20 -KPX Rcaron Ucircumflex -20 -KPX Rcaron Udieresis -20 -KPX Rcaron Ugrave -20 -KPX Rcaron Uhungarumlaut -20 -KPX Rcaron Umacron -20 -KPX Rcaron Uogonek -20 -KPX Rcaron Uring -20 -KPX Rcaron V -50 -KPX Rcaron W -40 -KPX Rcaron Y -50 -KPX Rcaron Yacute -50 -KPX Rcaron Ydieresis -50 -KPX Rcommaaccent O -20 -KPX Rcommaaccent Oacute -20 -KPX Rcommaaccent Ocircumflex -20 -KPX Rcommaaccent Odieresis -20 -KPX Rcommaaccent Ograve -20 -KPX Rcommaaccent Ohungarumlaut -20 -KPX Rcommaaccent Omacron -20 -KPX Rcommaaccent Oslash -20 -KPX Rcommaaccent Otilde -20 -KPX Rcommaaccent T -20 -KPX Rcommaaccent Tcaron -20 -KPX Rcommaaccent Tcommaaccent -20 -KPX Rcommaaccent U -20 -KPX Rcommaaccent Uacute -20 -KPX Rcommaaccent Ucircumflex -20 -KPX Rcommaaccent Udieresis -20 -KPX Rcommaaccent Ugrave -20 -KPX Rcommaaccent Uhungarumlaut -20 -KPX Rcommaaccent Umacron -20 -KPX Rcommaaccent Uogonek -20 -KPX Rcommaaccent Uring -20 -KPX Rcommaaccent V -50 -KPX Rcommaaccent W -40 -KPX Rcommaaccent Y -50 -KPX Rcommaaccent Yacute -50 -KPX Rcommaaccent Ydieresis -50 -KPX T A -90 -KPX T Aacute -90 -KPX T Abreve -90 -KPX T Acircumflex -90 -KPX T Adieresis -90 -KPX T Agrave -90 -KPX T Amacron -90 -KPX T Aogonek -90 -KPX T Aring -90 -KPX T Atilde -90 -KPX T O -40 -KPX T Oacute -40 -KPX T Ocircumflex -40 -KPX T Odieresis -40 -KPX T Ograve -40 -KPX T Ohungarumlaut -40 -KPX T Omacron -40 -KPX T Oslash -40 -KPX T Otilde -40 -KPX T a -80 -KPX T aacute -80 -KPX T abreve -80 -KPX T acircumflex -80 -KPX T adieresis -80 -KPX T agrave -80 -KPX T amacron -80 -KPX T aogonek -80 -KPX T aring -80 -KPX T atilde -80 -KPX T colon -40 -KPX T comma -80 -KPX T e -60 -KPX T eacute -60 -KPX T ecaron -60 -KPX T ecircumflex -60 -KPX T edieresis -60 -KPX T edotaccent -60 -KPX T egrave -60 -KPX T emacron -60 -KPX T eogonek -60 -KPX T hyphen -120 -KPX T o -80 -KPX T oacute -80 -KPX T ocircumflex -80 -KPX T odieresis -80 -KPX T ograve -80 -KPX T ohungarumlaut -80 -KPX T omacron -80 -KPX T oslash -80 -KPX T otilde -80 -KPX T period -80 -KPX T r -80 -KPX T racute -80 -KPX T rcommaaccent -80 -KPX T semicolon -40 -KPX T u -90 -KPX T uacute -90 -KPX T ucircumflex -90 -KPX T udieresis -90 -KPX T ugrave -90 -KPX T uhungarumlaut -90 -KPX T umacron -90 -KPX T uogonek -90 -KPX T uring -90 -KPX T w -60 -KPX T y -60 -KPX T yacute -60 -KPX T ydieresis -60 -KPX Tcaron A -90 -KPX Tcaron Aacute -90 -KPX Tcaron Abreve -90 -KPX Tcaron Acircumflex -90 -KPX Tcaron Adieresis -90 -KPX Tcaron Agrave -90 -KPX Tcaron Amacron -90 -KPX Tcaron Aogonek -90 -KPX Tcaron Aring -90 -KPX Tcaron Atilde -90 -KPX Tcaron O -40 -KPX Tcaron Oacute -40 -KPX Tcaron Ocircumflex -40 -KPX Tcaron Odieresis -40 -KPX Tcaron Ograve -40 -KPX Tcaron Ohungarumlaut -40 -KPX Tcaron Omacron -40 -KPX Tcaron Oslash -40 -KPX Tcaron Otilde -40 -KPX Tcaron a -80 -KPX Tcaron aacute -80 -KPX Tcaron abreve -80 -KPX Tcaron acircumflex -80 -KPX Tcaron adieresis -80 -KPX Tcaron agrave -80 -KPX Tcaron amacron -80 -KPX Tcaron aogonek -80 -KPX Tcaron aring -80 -KPX Tcaron atilde -80 -KPX Tcaron colon -40 -KPX Tcaron comma -80 -KPX Tcaron e -60 -KPX Tcaron eacute -60 -KPX Tcaron ecaron -60 -KPX Tcaron ecircumflex -60 -KPX Tcaron edieresis -60 -KPX Tcaron edotaccent -60 -KPX Tcaron egrave -60 -KPX Tcaron emacron -60 -KPX Tcaron eogonek -60 -KPX Tcaron hyphen -120 -KPX Tcaron o -80 -KPX Tcaron oacute -80 -KPX Tcaron ocircumflex -80 -KPX Tcaron odieresis -80 -KPX Tcaron ograve -80 -KPX Tcaron ohungarumlaut -80 -KPX Tcaron omacron -80 -KPX Tcaron oslash -80 -KPX Tcaron otilde -80 -KPX Tcaron period -80 -KPX Tcaron r -80 -KPX Tcaron racute -80 -KPX Tcaron rcommaaccent -80 -KPX Tcaron semicolon -40 -KPX Tcaron u -90 -KPX Tcaron uacute -90 -KPX Tcaron ucircumflex -90 -KPX Tcaron udieresis -90 -KPX Tcaron ugrave -90 -KPX Tcaron uhungarumlaut -90 -KPX Tcaron umacron -90 -KPX Tcaron uogonek -90 -KPX Tcaron uring -90 -KPX Tcaron w -60 -KPX Tcaron y -60 -KPX Tcaron yacute -60 -KPX Tcaron ydieresis -60 -KPX Tcommaaccent A -90 -KPX Tcommaaccent Aacute -90 -KPX Tcommaaccent Abreve -90 -KPX Tcommaaccent Acircumflex -90 -KPX Tcommaaccent Adieresis -90 -KPX Tcommaaccent Agrave -90 -KPX Tcommaaccent Amacron -90 -KPX Tcommaaccent Aogonek -90 -KPX Tcommaaccent Aring -90 -KPX Tcommaaccent Atilde -90 -KPX Tcommaaccent O -40 -KPX Tcommaaccent Oacute -40 -KPX Tcommaaccent Ocircumflex -40 -KPX Tcommaaccent Odieresis -40 -KPX Tcommaaccent Ograve -40 -KPX Tcommaaccent Ohungarumlaut -40 -KPX Tcommaaccent Omacron -40 -KPX Tcommaaccent Oslash -40 -KPX Tcommaaccent Otilde -40 -KPX Tcommaaccent a -80 -KPX Tcommaaccent aacute -80 -KPX Tcommaaccent abreve -80 -KPX Tcommaaccent acircumflex -80 -KPX Tcommaaccent adieresis -80 -KPX Tcommaaccent agrave -80 -KPX Tcommaaccent amacron -80 -KPX Tcommaaccent aogonek -80 -KPX Tcommaaccent aring -80 -KPX Tcommaaccent atilde -80 -KPX Tcommaaccent colon -40 -KPX Tcommaaccent comma -80 -KPX Tcommaaccent e -60 -KPX Tcommaaccent eacute -60 -KPX Tcommaaccent ecaron -60 -KPX Tcommaaccent ecircumflex -60 -KPX Tcommaaccent edieresis -60 -KPX Tcommaaccent edotaccent -60 -KPX Tcommaaccent egrave -60 -KPX Tcommaaccent emacron -60 -KPX Tcommaaccent eogonek -60 -KPX Tcommaaccent hyphen -120 -KPX Tcommaaccent o -80 -KPX Tcommaaccent oacute -80 -KPX Tcommaaccent ocircumflex -80 -KPX Tcommaaccent odieresis -80 -KPX Tcommaaccent ograve -80 -KPX Tcommaaccent ohungarumlaut -80 -KPX Tcommaaccent omacron -80 -KPX Tcommaaccent oslash -80 -KPX Tcommaaccent otilde -80 -KPX Tcommaaccent period -80 -KPX Tcommaaccent r -80 -KPX Tcommaaccent racute -80 -KPX Tcommaaccent rcommaaccent -80 -KPX Tcommaaccent semicolon -40 -KPX Tcommaaccent u -90 -KPX Tcommaaccent uacute -90 -KPX Tcommaaccent ucircumflex -90 -KPX Tcommaaccent udieresis -90 -KPX Tcommaaccent ugrave -90 -KPX Tcommaaccent uhungarumlaut -90 -KPX Tcommaaccent umacron -90 -KPX Tcommaaccent uogonek -90 -KPX Tcommaaccent uring -90 -KPX Tcommaaccent w -60 -KPX Tcommaaccent y -60 -KPX Tcommaaccent yacute -60 -KPX Tcommaaccent ydieresis -60 -KPX U A -50 -KPX U Aacute -50 -KPX U Abreve -50 -KPX U Acircumflex -50 -KPX U Adieresis -50 -KPX U Agrave -50 -KPX U Amacron -50 -KPX U Aogonek -50 -KPX U Aring -50 -KPX U Atilde -50 -KPX U comma -30 -KPX U period -30 -KPX Uacute A -50 -KPX Uacute Aacute -50 -KPX Uacute Abreve -50 -KPX Uacute Acircumflex -50 -KPX Uacute Adieresis -50 -KPX Uacute Agrave -50 -KPX Uacute Amacron -50 -KPX Uacute Aogonek -50 -KPX Uacute Aring -50 -KPX Uacute Atilde -50 -KPX Uacute comma -30 -KPX Uacute period -30 -KPX Ucircumflex A -50 -KPX Ucircumflex Aacute -50 -KPX Ucircumflex Abreve -50 -KPX Ucircumflex Acircumflex -50 -KPX Ucircumflex Adieresis -50 -KPX Ucircumflex Agrave -50 -KPX Ucircumflex Amacron -50 -KPX Ucircumflex Aogonek -50 -KPX Ucircumflex Aring -50 -KPX Ucircumflex Atilde -50 -KPX Ucircumflex comma -30 -KPX Ucircumflex period -30 -KPX Udieresis A -50 -KPX Udieresis Aacute -50 -KPX Udieresis Abreve -50 -KPX Udieresis Acircumflex -50 -KPX Udieresis Adieresis -50 -KPX Udieresis Agrave -50 -KPX Udieresis Amacron -50 -KPX Udieresis Aogonek -50 -KPX Udieresis Aring -50 -KPX Udieresis Atilde -50 -KPX Udieresis comma -30 -KPX Udieresis period -30 -KPX Ugrave A -50 -KPX Ugrave Aacute -50 -KPX Ugrave Abreve -50 -KPX Ugrave Acircumflex -50 -KPX Ugrave Adieresis -50 -KPX Ugrave Agrave -50 -KPX Ugrave Amacron -50 -KPX Ugrave Aogonek -50 -KPX Ugrave Aring -50 -KPX Ugrave Atilde -50 -KPX Ugrave comma -30 -KPX Ugrave period -30 -KPX Uhungarumlaut A -50 -KPX Uhungarumlaut Aacute -50 -KPX Uhungarumlaut Abreve -50 -KPX Uhungarumlaut Acircumflex -50 -KPX Uhungarumlaut Adieresis -50 -KPX Uhungarumlaut Agrave -50 -KPX Uhungarumlaut Amacron -50 -KPX Uhungarumlaut Aogonek -50 -KPX Uhungarumlaut Aring -50 -KPX Uhungarumlaut Atilde -50 -KPX Uhungarumlaut comma -30 -KPX Uhungarumlaut period -30 -KPX Umacron A -50 -KPX Umacron Aacute -50 -KPX Umacron Abreve -50 -KPX Umacron Acircumflex -50 -KPX Umacron Adieresis -50 -KPX Umacron Agrave -50 -KPX Umacron Amacron -50 -KPX Umacron Aogonek -50 -KPX Umacron Aring -50 -KPX Umacron Atilde -50 -KPX Umacron comma -30 -KPX Umacron period -30 -KPX Uogonek A -50 -KPX Uogonek Aacute -50 -KPX Uogonek Abreve -50 -KPX Uogonek Acircumflex -50 -KPX Uogonek Adieresis -50 -KPX Uogonek Agrave -50 -KPX Uogonek Amacron -50 -KPX Uogonek Aogonek -50 -KPX Uogonek Aring -50 -KPX Uogonek Atilde -50 -KPX Uogonek comma -30 -KPX Uogonek period -30 -KPX Uring A -50 -KPX Uring Aacute -50 -KPX Uring Abreve -50 -KPX Uring Acircumflex -50 -KPX Uring Adieresis -50 -KPX Uring Agrave -50 -KPX Uring Amacron -50 -KPX Uring Aogonek -50 -KPX Uring Aring -50 -KPX Uring Atilde -50 -KPX Uring comma -30 -KPX Uring period -30 -KPX V A -80 -KPX V Aacute -80 -KPX V Abreve -80 -KPX V Acircumflex -80 -KPX V Adieresis -80 -KPX V Agrave -80 -KPX V Amacron -80 -KPX V Aogonek -80 -KPX V Aring -80 -KPX V Atilde -80 -KPX V G -50 -KPX V Gbreve -50 -KPX V Gcommaaccent -50 -KPX V O -50 -KPX V Oacute -50 -KPX V Ocircumflex -50 -KPX V Odieresis -50 -KPX V Ograve -50 -KPX V Ohungarumlaut -50 -KPX V Omacron -50 -KPX V Oslash -50 -KPX V Otilde -50 -KPX V a -60 -KPX V aacute -60 -KPX V abreve -60 -KPX V acircumflex -60 -KPX V adieresis -60 -KPX V agrave -60 -KPX V amacron -60 -KPX V aogonek -60 -KPX V aring -60 -KPX V atilde -60 -KPX V colon -40 -KPX V comma -120 -KPX V e -50 -KPX V eacute -50 -KPX V ecaron -50 -KPX V ecircumflex -50 -KPX V edieresis -50 -KPX V edotaccent -50 -KPX V egrave -50 -KPX V emacron -50 -KPX V eogonek -50 -KPX V hyphen -80 -KPX V o -90 -KPX V oacute -90 -KPX V ocircumflex -90 -KPX V odieresis -90 -KPX V ograve -90 -KPX V ohungarumlaut -90 -KPX V omacron -90 -KPX V oslash -90 -KPX V otilde -90 -KPX V period -120 -KPX V semicolon -40 -KPX V u -60 -KPX V uacute -60 -KPX V ucircumflex -60 -KPX V udieresis -60 -KPX V ugrave -60 -KPX V uhungarumlaut -60 -KPX V umacron -60 -KPX V uogonek -60 -KPX V uring -60 -KPX W A -60 -KPX W Aacute -60 -KPX W Abreve -60 -KPX W Acircumflex -60 -KPX W Adieresis -60 -KPX W Agrave -60 -KPX W Amacron -60 -KPX W Aogonek -60 -KPX W Aring -60 -KPX W Atilde -60 -KPX W O -20 -KPX W Oacute -20 -KPX W Ocircumflex -20 -KPX W Odieresis -20 -KPX W Ograve -20 -KPX W Ohungarumlaut -20 -KPX W Omacron -20 -KPX W Oslash -20 -KPX W Otilde -20 -KPX W a -40 -KPX W aacute -40 -KPX W abreve -40 -KPX W acircumflex -40 -KPX W adieresis -40 -KPX W agrave -40 -KPX W amacron -40 -KPX W aogonek -40 -KPX W aring -40 -KPX W atilde -40 -KPX W colon -10 -KPX W comma -80 -KPX W e -35 -KPX W eacute -35 -KPX W ecaron -35 -KPX W ecircumflex -35 -KPX W edieresis -35 -KPX W edotaccent -35 -KPX W egrave -35 -KPX W emacron -35 -KPX W eogonek -35 -KPX W hyphen -40 -KPX W o -60 -KPX W oacute -60 -KPX W ocircumflex -60 -KPX W odieresis -60 -KPX W ograve -60 -KPX W ohungarumlaut -60 -KPX W omacron -60 -KPX W oslash -60 -KPX W otilde -60 -KPX W period -80 -KPX W semicolon -10 -KPX W u -45 -KPX W uacute -45 -KPX W ucircumflex -45 -KPX W udieresis -45 -KPX W ugrave -45 -KPX W uhungarumlaut -45 -KPX W umacron -45 -KPX W uogonek -45 -KPX W uring -45 -KPX W y -20 -KPX W yacute -20 -KPX W ydieresis -20 -KPX Y A -110 -KPX Y Aacute -110 -KPX Y Abreve -110 -KPX Y Acircumflex -110 -KPX Y Adieresis -110 -KPX Y Agrave -110 -KPX Y Amacron -110 -KPX Y Aogonek -110 -KPX Y Aring -110 -KPX Y Atilde -110 -KPX Y O -70 -KPX Y Oacute -70 -KPX Y Ocircumflex -70 -KPX Y Odieresis -70 -KPX Y Ograve -70 -KPX Y Ohungarumlaut -70 -KPX Y Omacron -70 -KPX Y Oslash -70 -KPX Y Otilde -70 -KPX Y a -90 -KPX Y aacute -90 -KPX Y abreve -90 -KPX Y acircumflex -90 -KPX Y adieresis -90 -KPX Y agrave -90 -KPX Y amacron -90 -KPX Y aogonek -90 -KPX Y aring -90 -KPX Y atilde -90 -KPX Y colon -50 -KPX Y comma -100 -KPX Y e -80 -KPX Y eacute -80 -KPX Y ecaron -80 -KPX Y ecircumflex -80 -KPX Y edieresis -80 -KPX Y edotaccent -80 -KPX Y egrave -80 -KPX Y emacron -80 -KPX Y eogonek -80 -KPX Y o -100 -KPX Y oacute -100 -KPX Y ocircumflex -100 -KPX Y odieresis -100 -KPX Y ograve -100 -KPX Y ohungarumlaut -100 -KPX Y omacron -100 -KPX Y oslash -100 -KPX Y otilde -100 -KPX Y period -100 -KPX Y semicolon -50 -KPX Y u -100 -KPX Y uacute -100 -KPX Y ucircumflex -100 -KPX Y udieresis -100 -KPX Y ugrave -100 -KPX Y uhungarumlaut -100 -KPX Y umacron -100 -KPX Y uogonek -100 -KPX Y uring -100 -KPX Yacute A -110 -KPX Yacute Aacute -110 -KPX Yacute Abreve -110 -KPX Yacute Acircumflex -110 -KPX Yacute Adieresis -110 -KPX Yacute Agrave -110 -KPX Yacute Amacron -110 -KPX Yacute Aogonek -110 -KPX Yacute Aring -110 -KPX Yacute Atilde -110 -KPX Yacute O -70 -KPX Yacute Oacute -70 -KPX Yacute Ocircumflex -70 -KPX Yacute Odieresis -70 -KPX Yacute Ograve -70 -KPX Yacute Ohungarumlaut -70 -KPX Yacute Omacron -70 -KPX Yacute Oslash -70 -KPX Yacute Otilde -70 -KPX Yacute a -90 -KPX Yacute aacute -90 -KPX Yacute abreve -90 -KPX Yacute acircumflex -90 -KPX Yacute adieresis -90 -KPX Yacute agrave -90 -KPX Yacute amacron -90 -KPX Yacute aogonek -90 -KPX Yacute aring -90 -KPX Yacute atilde -90 -KPX Yacute colon -50 -KPX Yacute comma -100 -KPX Yacute e -80 -KPX Yacute eacute -80 -KPX Yacute ecaron -80 -KPX Yacute ecircumflex -80 -KPX Yacute edieresis -80 -KPX Yacute edotaccent -80 -KPX Yacute egrave -80 -KPX Yacute emacron -80 -KPX Yacute eogonek -80 -KPX Yacute o -100 -KPX Yacute oacute -100 -KPX Yacute ocircumflex -100 -KPX Yacute odieresis -100 -KPX Yacute ograve -100 -KPX Yacute ohungarumlaut -100 -KPX Yacute omacron -100 -KPX Yacute oslash -100 -KPX Yacute otilde -100 -KPX Yacute period -100 -KPX Yacute semicolon -50 -KPX Yacute u -100 -KPX Yacute uacute -100 -KPX Yacute ucircumflex -100 -KPX Yacute udieresis -100 -KPX Yacute ugrave -100 -KPX Yacute uhungarumlaut -100 -KPX Yacute umacron -100 -KPX Yacute uogonek -100 -KPX Yacute uring -100 -KPX Ydieresis A -110 -KPX Ydieresis Aacute -110 -KPX Ydieresis Abreve -110 -KPX Ydieresis Acircumflex -110 -KPX Ydieresis Adieresis -110 -KPX Ydieresis Agrave -110 -KPX Ydieresis Amacron -110 -KPX Ydieresis Aogonek -110 -KPX Ydieresis Aring -110 -KPX Ydieresis Atilde -110 -KPX Ydieresis O -70 -KPX Ydieresis Oacute -70 -KPX Ydieresis Ocircumflex -70 -KPX Ydieresis Odieresis -70 -KPX Ydieresis Ograve -70 -KPX Ydieresis Ohungarumlaut -70 -KPX Ydieresis Omacron -70 -KPX Ydieresis Oslash -70 -KPX Ydieresis Otilde -70 -KPX Ydieresis a -90 -KPX Ydieresis aacute -90 -KPX Ydieresis abreve -90 -KPX Ydieresis acircumflex -90 -KPX Ydieresis adieresis -90 -KPX Ydieresis agrave -90 -KPX Ydieresis amacron -90 -KPX Ydieresis aogonek -90 -KPX Ydieresis aring -90 -KPX Ydieresis atilde -90 -KPX Ydieresis colon -50 -KPX Ydieresis comma -100 -KPX Ydieresis e -80 -KPX Ydieresis eacute -80 -KPX Ydieresis ecaron -80 -KPX Ydieresis ecircumflex -80 -KPX Ydieresis edieresis -80 -KPX Ydieresis edotaccent -80 -KPX Ydieresis egrave -80 -KPX Ydieresis emacron -80 -KPX Ydieresis eogonek -80 -KPX Ydieresis o -100 -KPX Ydieresis oacute -100 -KPX Ydieresis ocircumflex -100 -KPX Ydieresis odieresis -100 -KPX Ydieresis ograve -100 -KPX Ydieresis ohungarumlaut -100 -KPX Ydieresis omacron -100 -KPX Ydieresis oslash -100 -KPX Ydieresis otilde -100 -KPX Ydieresis period -100 -KPX Ydieresis semicolon -50 -KPX Ydieresis u -100 -KPX Ydieresis uacute -100 -KPX Ydieresis ucircumflex -100 -KPX Ydieresis udieresis -100 -KPX Ydieresis ugrave -100 -KPX Ydieresis uhungarumlaut -100 -KPX Ydieresis umacron -100 -KPX Ydieresis uogonek -100 -KPX Ydieresis uring -100 -KPX a g -10 -KPX a gbreve -10 -KPX a gcommaaccent -10 -KPX a v -15 -KPX a w -15 -KPX a y -20 -KPX a yacute -20 -KPX a ydieresis -20 -KPX aacute g -10 -KPX aacute gbreve -10 -KPX aacute gcommaaccent -10 -KPX aacute v -15 -KPX aacute w -15 -KPX aacute y -20 -KPX aacute yacute -20 -KPX aacute ydieresis -20 -KPX abreve g -10 -KPX abreve gbreve -10 -KPX abreve gcommaaccent -10 -KPX abreve v -15 -KPX abreve w -15 -KPX abreve y -20 -KPX abreve yacute -20 -KPX abreve ydieresis -20 -KPX acircumflex g -10 -KPX acircumflex gbreve -10 -KPX acircumflex gcommaaccent -10 -KPX acircumflex v -15 -KPX acircumflex w -15 -KPX acircumflex y -20 -KPX acircumflex yacute -20 -KPX acircumflex ydieresis -20 -KPX adieresis g -10 -KPX adieresis gbreve -10 -KPX adieresis gcommaaccent -10 -KPX adieresis v -15 -KPX adieresis w -15 -KPX adieresis y -20 -KPX adieresis yacute -20 -KPX adieresis ydieresis -20 -KPX agrave g -10 -KPX agrave gbreve -10 -KPX agrave gcommaaccent -10 -KPX agrave v -15 -KPX agrave w -15 -KPX agrave y -20 -KPX agrave yacute -20 -KPX agrave ydieresis -20 -KPX amacron g -10 -KPX amacron gbreve -10 -KPX amacron gcommaaccent -10 -KPX amacron v -15 -KPX amacron w -15 -KPX amacron y -20 -KPX amacron yacute -20 -KPX amacron ydieresis -20 -KPX aogonek g -10 -KPX aogonek gbreve -10 -KPX aogonek gcommaaccent -10 -KPX aogonek v -15 -KPX aogonek w -15 -KPX aogonek y -20 -KPX aogonek yacute -20 -KPX aogonek ydieresis -20 -KPX aring g -10 -KPX aring gbreve -10 -KPX aring gcommaaccent -10 -KPX aring v -15 -KPX aring w -15 -KPX aring y -20 -KPX aring yacute -20 -KPX aring ydieresis -20 -KPX atilde g -10 -KPX atilde gbreve -10 -KPX atilde gcommaaccent -10 -KPX atilde v -15 -KPX atilde w -15 -KPX atilde y -20 -KPX atilde yacute -20 -KPX atilde ydieresis -20 -KPX b l -10 -KPX b lacute -10 -KPX b lcommaaccent -10 -KPX b lslash -10 -KPX b u -20 -KPX b uacute -20 -KPX b ucircumflex -20 -KPX b udieresis -20 -KPX b ugrave -20 -KPX b uhungarumlaut -20 -KPX b umacron -20 -KPX b uogonek -20 -KPX b uring -20 -KPX b v -20 -KPX b y -20 -KPX b yacute -20 -KPX b ydieresis -20 -KPX c h -10 -KPX c k -20 -KPX c kcommaaccent -20 -KPX c l -20 -KPX c lacute -20 -KPX c lcommaaccent -20 -KPX c lslash -20 -KPX c y -10 -KPX c yacute -10 -KPX c ydieresis -10 -KPX cacute h -10 -KPX cacute k -20 -KPX cacute kcommaaccent -20 -KPX cacute l -20 -KPX cacute lacute -20 -KPX cacute lcommaaccent -20 -KPX cacute lslash -20 -KPX cacute y -10 -KPX cacute yacute -10 -KPX cacute ydieresis -10 -KPX ccaron h -10 -KPX ccaron k -20 -KPX ccaron kcommaaccent -20 -KPX ccaron l -20 -KPX ccaron lacute -20 -KPX ccaron lcommaaccent -20 -KPX ccaron lslash -20 -KPX ccaron y -10 -KPX ccaron yacute -10 -KPX ccaron ydieresis -10 -KPX ccedilla h -10 -KPX ccedilla k -20 -KPX ccedilla kcommaaccent -20 -KPX ccedilla l -20 -KPX ccedilla lacute -20 -KPX ccedilla lcommaaccent -20 -KPX ccedilla lslash -20 -KPX ccedilla y -10 -KPX ccedilla yacute -10 -KPX ccedilla ydieresis -10 -KPX colon space -40 -KPX comma quotedblright -120 -KPX comma quoteright -120 -KPX comma space -40 -KPX d d -10 -KPX d dcroat -10 -KPX d v -15 -KPX d w -15 -KPX d y -15 -KPX d yacute -15 -KPX d ydieresis -15 -KPX dcroat d -10 -KPX dcroat dcroat -10 -KPX dcroat v -15 -KPX dcroat w -15 -KPX dcroat y -15 -KPX dcroat yacute -15 -KPX dcroat ydieresis -15 -KPX e comma 10 -KPX e period 20 -KPX e v -15 -KPX e w -15 -KPX e x -15 -KPX e y -15 -KPX e yacute -15 -KPX e ydieresis -15 -KPX eacute comma 10 -KPX eacute period 20 -KPX eacute v -15 -KPX eacute w -15 -KPX eacute x -15 -KPX eacute y -15 -KPX eacute yacute -15 -KPX eacute ydieresis -15 -KPX ecaron comma 10 -KPX ecaron period 20 -KPX ecaron v -15 -KPX ecaron w -15 -KPX ecaron x -15 -KPX ecaron y -15 -KPX ecaron yacute -15 -KPX ecaron ydieresis -15 -KPX ecircumflex comma 10 -KPX ecircumflex period 20 -KPX ecircumflex v -15 -KPX ecircumflex w -15 -KPX ecircumflex x -15 -KPX ecircumflex y -15 -KPX ecircumflex yacute -15 -KPX ecircumflex ydieresis -15 -KPX edieresis comma 10 -KPX edieresis period 20 -KPX edieresis v -15 -KPX edieresis w -15 -KPX edieresis x -15 -KPX edieresis y -15 -KPX edieresis yacute -15 -KPX edieresis ydieresis -15 -KPX edotaccent comma 10 -KPX edotaccent period 20 -KPX edotaccent v -15 -KPX edotaccent w -15 -KPX edotaccent x -15 -KPX edotaccent y -15 -KPX edotaccent yacute -15 -KPX edotaccent ydieresis -15 -KPX egrave comma 10 -KPX egrave period 20 -KPX egrave v -15 -KPX egrave w -15 -KPX egrave x -15 -KPX egrave y -15 -KPX egrave yacute -15 -KPX egrave ydieresis -15 -KPX emacron comma 10 -KPX emacron period 20 -KPX emacron v -15 -KPX emacron w -15 -KPX emacron x -15 -KPX emacron y -15 -KPX emacron yacute -15 -KPX emacron ydieresis -15 -KPX eogonek comma 10 -KPX eogonek period 20 -KPX eogonek v -15 -KPX eogonek w -15 -KPX eogonek x -15 -KPX eogonek y -15 -KPX eogonek yacute -15 -KPX eogonek ydieresis -15 -KPX f comma -10 -KPX f e -10 -KPX f eacute -10 -KPX f ecaron -10 -KPX f ecircumflex -10 -KPX f edieresis -10 -KPX f edotaccent -10 -KPX f egrave -10 -KPX f emacron -10 -KPX f eogonek -10 -KPX f o -20 -KPX f oacute -20 -KPX f ocircumflex -20 -KPX f odieresis -20 -KPX f ograve -20 -KPX f ohungarumlaut -20 -KPX f omacron -20 -KPX f oslash -20 -KPX f otilde -20 -KPX f period -10 -KPX f quotedblright 30 -KPX f quoteright 30 -KPX g e 10 -KPX g eacute 10 -KPX g ecaron 10 -KPX g ecircumflex 10 -KPX g edieresis 10 -KPX g edotaccent 10 -KPX g egrave 10 -KPX g emacron 10 -KPX g eogonek 10 -KPX g g -10 -KPX g gbreve -10 -KPX g gcommaaccent -10 -KPX gbreve e 10 -KPX gbreve eacute 10 -KPX gbreve ecaron 10 -KPX gbreve ecircumflex 10 -KPX gbreve edieresis 10 -KPX gbreve edotaccent 10 -KPX gbreve egrave 10 -KPX gbreve emacron 10 -KPX gbreve eogonek 10 -KPX gbreve g -10 -KPX gbreve gbreve -10 -KPX gbreve gcommaaccent -10 -KPX gcommaaccent e 10 -KPX gcommaaccent eacute 10 -KPX gcommaaccent ecaron 10 -KPX gcommaaccent ecircumflex 10 -KPX gcommaaccent edieresis 10 -KPX gcommaaccent edotaccent 10 -KPX gcommaaccent egrave 10 -KPX gcommaaccent emacron 10 -KPX gcommaaccent eogonek 10 -KPX gcommaaccent g -10 -KPX gcommaaccent gbreve -10 -KPX gcommaaccent gcommaaccent -10 -KPX h y -20 -KPX h yacute -20 -KPX h ydieresis -20 -KPX k o -15 -KPX k oacute -15 -KPX k ocircumflex -15 -KPX k odieresis -15 -KPX k ograve -15 -KPX k ohungarumlaut -15 -KPX k omacron -15 -KPX k oslash -15 -KPX k otilde -15 -KPX kcommaaccent o -15 -KPX kcommaaccent oacute -15 -KPX kcommaaccent ocircumflex -15 -KPX kcommaaccent odieresis -15 -KPX kcommaaccent ograve -15 -KPX kcommaaccent ohungarumlaut -15 -KPX kcommaaccent omacron -15 -KPX kcommaaccent oslash -15 -KPX kcommaaccent otilde -15 -KPX l w -15 -KPX l y -15 -KPX l yacute -15 -KPX l ydieresis -15 -KPX lacute w -15 -KPX lacute y -15 -KPX lacute yacute -15 -KPX lacute ydieresis -15 -KPX lcommaaccent w -15 -KPX lcommaaccent y -15 -KPX lcommaaccent yacute -15 -KPX lcommaaccent ydieresis -15 -KPX lslash w -15 -KPX lslash y -15 -KPX lslash yacute -15 -KPX lslash ydieresis -15 -KPX m u -20 -KPX m uacute -20 -KPX m ucircumflex -20 -KPX m udieresis -20 -KPX m ugrave -20 -KPX m uhungarumlaut -20 -KPX m umacron -20 -KPX m uogonek -20 -KPX m uring -20 -KPX m y -30 -KPX m yacute -30 -KPX m ydieresis -30 -KPX n u -10 -KPX n uacute -10 -KPX n ucircumflex -10 -KPX n udieresis -10 -KPX n ugrave -10 -KPX n uhungarumlaut -10 -KPX n umacron -10 -KPX n uogonek -10 -KPX n uring -10 -KPX n v -40 -KPX n y -20 -KPX n yacute -20 -KPX n ydieresis -20 -KPX nacute u -10 -KPX nacute uacute -10 -KPX nacute ucircumflex -10 -KPX nacute udieresis -10 -KPX nacute ugrave -10 -KPX nacute uhungarumlaut -10 -KPX nacute umacron -10 -KPX nacute uogonek -10 -KPX nacute uring -10 -KPX nacute v -40 -KPX nacute y -20 -KPX nacute yacute -20 -KPX nacute ydieresis -20 -KPX ncaron u -10 -KPX ncaron uacute -10 -KPX ncaron ucircumflex -10 -KPX ncaron udieresis -10 -KPX ncaron ugrave -10 -KPX ncaron uhungarumlaut -10 -KPX ncaron umacron -10 -KPX ncaron uogonek -10 -KPX ncaron uring -10 -KPX ncaron v -40 -KPX ncaron y -20 -KPX ncaron yacute -20 -KPX ncaron ydieresis -20 -KPX ncommaaccent u -10 -KPX ncommaaccent uacute -10 -KPX ncommaaccent ucircumflex -10 -KPX ncommaaccent udieresis -10 -KPX ncommaaccent ugrave -10 -KPX ncommaaccent uhungarumlaut -10 -KPX ncommaaccent umacron -10 -KPX ncommaaccent uogonek -10 -KPX ncommaaccent uring -10 -KPX ncommaaccent v -40 -KPX ncommaaccent y -20 -KPX ncommaaccent yacute -20 -KPX ncommaaccent ydieresis -20 -KPX ntilde u -10 -KPX ntilde uacute -10 -KPX ntilde ucircumflex -10 -KPX ntilde udieresis -10 -KPX ntilde ugrave -10 -KPX ntilde uhungarumlaut -10 -KPX ntilde umacron -10 -KPX ntilde uogonek -10 -KPX ntilde uring -10 -KPX ntilde v -40 -KPX ntilde y -20 -KPX ntilde yacute -20 -KPX ntilde ydieresis -20 -KPX o v -20 -KPX o w -15 -KPX o x -30 -KPX o y -20 -KPX o yacute -20 -KPX o ydieresis -20 -KPX oacute v -20 -KPX oacute w -15 -KPX oacute x -30 -KPX oacute y -20 -KPX oacute yacute -20 -KPX oacute ydieresis -20 -KPX ocircumflex v -20 -KPX ocircumflex w -15 -KPX ocircumflex x -30 -KPX ocircumflex y -20 -KPX ocircumflex yacute -20 -KPX ocircumflex ydieresis -20 -KPX odieresis v -20 -KPX odieresis w -15 -KPX odieresis x -30 -KPX odieresis y -20 -KPX odieresis yacute -20 -KPX odieresis ydieresis -20 -KPX ograve v -20 -KPX ograve w -15 -KPX ograve x -30 -KPX ograve y -20 -KPX ograve yacute -20 -KPX ograve ydieresis -20 -KPX ohungarumlaut v -20 -KPX ohungarumlaut w -15 -KPX ohungarumlaut x -30 -KPX ohungarumlaut y -20 -KPX ohungarumlaut yacute -20 -KPX ohungarumlaut ydieresis -20 -KPX omacron v -20 -KPX omacron w -15 -KPX omacron x -30 -KPX omacron y -20 -KPX omacron yacute -20 -KPX omacron ydieresis -20 -KPX oslash v -20 -KPX oslash w -15 -KPX oslash x -30 -KPX oslash y -20 -KPX oslash yacute -20 -KPX oslash ydieresis -20 -KPX otilde v -20 -KPX otilde w -15 -KPX otilde x -30 -KPX otilde y -20 -KPX otilde yacute -20 -KPX otilde ydieresis -20 -KPX p y -15 -KPX p yacute -15 -KPX p ydieresis -15 -KPX period quotedblright -120 -KPX period quoteright -120 -KPX period space -40 -KPX quotedblright space -80 -KPX quoteleft quoteleft -46 -KPX quoteright d -80 -KPX quoteright dcroat -80 -KPX quoteright l -20 -KPX quoteright lacute -20 -KPX quoteright lcommaaccent -20 -KPX quoteright lslash -20 -KPX quoteright quoteright -46 -KPX quoteright r -40 -KPX quoteright racute -40 -KPX quoteright rcaron -40 -KPX quoteright rcommaaccent -40 -KPX quoteright s -60 -KPX quoteright sacute -60 -KPX quoteright scaron -60 -KPX quoteright scedilla -60 -KPX quoteright scommaaccent -60 -KPX quoteright space -80 -KPX quoteright v -20 -KPX r c -20 -KPX r cacute -20 -KPX r ccaron -20 -KPX r ccedilla -20 -KPX r comma -60 -KPX r d -20 -KPX r dcroat -20 -KPX r g -15 -KPX r gbreve -15 -KPX r gcommaaccent -15 -KPX r hyphen -20 -KPX r o -20 -KPX r oacute -20 -KPX r ocircumflex -20 -KPX r odieresis -20 -KPX r ograve -20 -KPX r ohungarumlaut -20 -KPX r omacron -20 -KPX r oslash -20 -KPX r otilde -20 -KPX r period -60 -KPX r q -20 -KPX r s -15 -KPX r sacute -15 -KPX r scaron -15 -KPX r scedilla -15 -KPX r scommaaccent -15 -KPX r t 20 -KPX r tcommaaccent 20 -KPX r v 10 -KPX r y 10 -KPX r yacute 10 -KPX r ydieresis 10 -KPX racute c -20 -KPX racute cacute -20 -KPX racute ccaron -20 -KPX racute ccedilla -20 -KPX racute comma -60 -KPX racute d -20 -KPX racute dcroat -20 -KPX racute g -15 -KPX racute gbreve -15 -KPX racute gcommaaccent -15 -KPX racute hyphen -20 -KPX racute o -20 -KPX racute oacute -20 -KPX racute ocircumflex -20 -KPX racute odieresis -20 -KPX racute ograve -20 -KPX racute ohungarumlaut -20 -KPX racute omacron -20 -KPX racute oslash -20 -KPX racute otilde -20 -KPX racute period -60 -KPX racute q -20 -KPX racute s -15 -KPX racute sacute -15 -KPX racute scaron -15 -KPX racute scedilla -15 -KPX racute scommaaccent -15 -KPX racute t 20 -KPX racute tcommaaccent 20 -KPX racute v 10 -KPX racute y 10 -KPX racute yacute 10 -KPX racute ydieresis 10 -KPX rcaron c -20 -KPX rcaron cacute -20 -KPX rcaron ccaron -20 -KPX rcaron ccedilla -20 -KPX rcaron comma -60 -KPX rcaron d -20 -KPX rcaron dcroat -20 -KPX rcaron g -15 -KPX rcaron gbreve -15 -KPX rcaron gcommaaccent -15 -KPX rcaron hyphen -20 -KPX rcaron o -20 -KPX rcaron oacute -20 -KPX rcaron ocircumflex -20 -KPX rcaron odieresis -20 -KPX rcaron ograve -20 -KPX rcaron ohungarumlaut -20 -KPX rcaron omacron -20 -KPX rcaron oslash -20 -KPX rcaron otilde -20 -KPX rcaron period -60 -KPX rcaron q -20 -KPX rcaron s -15 -KPX rcaron sacute -15 -KPX rcaron scaron -15 -KPX rcaron scedilla -15 -KPX rcaron scommaaccent -15 -KPX rcaron t 20 -KPX rcaron tcommaaccent 20 -KPX rcaron v 10 -KPX rcaron y 10 -KPX rcaron yacute 10 -KPX rcaron ydieresis 10 -KPX rcommaaccent c -20 -KPX rcommaaccent cacute -20 -KPX rcommaaccent ccaron -20 -KPX rcommaaccent ccedilla -20 -KPX rcommaaccent comma -60 -KPX rcommaaccent d -20 -KPX rcommaaccent dcroat -20 -KPX rcommaaccent g -15 -KPX rcommaaccent gbreve -15 -KPX rcommaaccent gcommaaccent -15 -KPX rcommaaccent hyphen -20 -KPX rcommaaccent o -20 -KPX rcommaaccent oacute -20 -KPX rcommaaccent ocircumflex -20 -KPX rcommaaccent odieresis -20 -KPX rcommaaccent ograve -20 -KPX rcommaaccent ohungarumlaut -20 -KPX rcommaaccent omacron -20 -KPX rcommaaccent oslash -20 -KPX rcommaaccent otilde -20 -KPX rcommaaccent period -60 -KPX rcommaaccent q -20 -KPX rcommaaccent s -15 -KPX rcommaaccent sacute -15 -KPX rcommaaccent scaron -15 -KPX rcommaaccent scedilla -15 -KPX rcommaaccent scommaaccent -15 -KPX rcommaaccent t 20 -KPX rcommaaccent tcommaaccent 20 -KPX rcommaaccent v 10 -KPX rcommaaccent y 10 -KPX rcommaaccent yacute 10 -KPX rcommaaccent ydieresis 10 -KPX s w -15 -KPX sacute w -15 -KPX scaron w -15 -KPX scedilla w -15 -KPX scommaaccent w -15 -KPX semicolon space -40 -KPX space T -100 -KPX space Tcaron -100 -KPX space Tcommaaccent -100 -KPX space V -80 -KPX space W -80 -KPX space Y -120 -KPX space Yacute -120 -KPX space Ydieresis -120 -KPX space quotedblleft -80 -KPX space quoteleft -60 -KPX v a -20 -KPX v aacute -20 -KPX v abreve -20 -KPX v acircumflex -20 -KPX v adieresis -20 -KPX v agrave -20 -KPX v amacron -20 -KPX v aogonek -20 -KPX v aring -20 -KPX v atilde -20 -KPX v comma -80 -KPX v o -30 -KPX v oacute -30 -KPX v ocircumflex -30 -KPX v odieresis -30 -KPX v ograve -30 -KPX v ohungarumlaut -30 -KPX v omacron -30 -KPX v oslash -30 -KPX v otilde -30 -KPX v period -80 -KPX w comma -40 -KPX w o -20 -KPX w oacute -20 -KPX w ocircumflex -20 -KPX w odieresis -20 -KPX w ograve -20 -KPX w ohungarumlaut -20 -KPX w omacron -20 -KPX w oslash -20 -KPX w otilde -20 -KPX w period -40 -KPX x e -10 -KPX x eacute -10 -KPX x ecaron -10 -KPX x ecircumflex -10 -KPX x edieresis -10 -KPX x edotaccent -10 -KPX x egrave -10 -KPX x emacron -10 -KPX x eogonek -10 -KPX y a -30 -KPX y aacute -30 -KPX y abreve -30 -KPX y acircumflex -30 -KPX y adieresis -30 -KPX y agrave -30 -KPX y amacron -30 -KPX y aogonek -30 -KPX y aring -30 -KPX y atilde -30 -KPX y comma -80 -KPX y e -10 -KPX y eacute -10 -KPX y ecaron -10 -KPX y ecircumflex -10 -KPX y edieresis -10 -KPX y edotaccent -10 -KPX y egrave -10 -KPX y emacron -10 -KPX y eogonek -10 -KPX y o -25 -KPX y oacute -25 -KPX y ocircumflex -25 -KPX y odieresis -25 -KPX y ograve -25 -KPX y ohungarumlaut -25 -KPX y omacron -25 -KPX y oslash -25 -KPX y otilde -25 -KPX y period -80 -KPX yacute a -30 -KPX yacute aacute -30 -KPX yacute abreve -30 -KPX yacute acircumflex -30 -KPX yacute adieresis -30 -KPX yacute agrave -30 -KPX yacute amacron -30 -KPX yacute aogonek -30 -KPX yacute aring -30 -KPX yacute atilde -30 -KPX yacute comma -80 -KPX yacute e -10 -KPX yacute eacute -10 -KPX yacute ecaron -10 -KPX yacute ecircumflex -10 -KPX yacute edieresis -10 -KPX yacute edotaccent -10 -KPX yacute egrave -10 -KPX yacute emacron -10 -KPX yacute eogonek -10 -KPX yacute o -25 -KPX yacute oacute -25 -KPX yacute ocircumflex -25 -KPX yacute odieresis -25 -KPX yacute ograve -25 -KPX yacute ohungarumlaut -25 -KPX yacute omacron -25 -KPX yacute oslash -25 -KPX yacute otilde -25 -KPX yacute period -80 -KPX ydieresis a -30 -KPX ydieresis aacute -30 -KPX ydieresis abreve -30 -KPX ydieresis acircumflex -30 -KPX ydieresis adieresis -30 -KPX ydieresis agrave -30 -KPX ydieresis amacron -30 -KPX ydieresis aogonek -30 -KPX ydieresis aring -30 -KPX ydieresis atilde -30 -KPX ydieresis comma -80 -KPX ydieresis e -10 -KPX ydieresis eacute -10 -KPX ydieresis ecaron -10 -KPX ydieresis ecircumflex -10 -KPX ydieresis edieresis -10 -KPX ydieresis edotaccent -10 -KPX ydieresis egrave -10 -KPX ydieresis emacron -10 -KPX ydieresis eogonek -10 -KPX ydieresis o -25 -KPX ydieresis oacute -25 -KPX ydieresis ocircumflex -25 -KPX ydieresis odieresis -25 -KPX ydieresis ograve -25 -KPX ydieresis ohungarumlaut -25 -KPX ydieresis omacron -25 -KPX ydieresis oslash -25 -KPX ydieresis otilde -25 -KPX ydieresis period -80 -KPX z e 10 -KPX z eacute 10 -KPX z ecaron 10 -KPX z ecircumflex 10 -KPX z edieresis 10 -KPX z edotaccent 10 -KPX z egrave 10 -KPX z emacron 10 -KPX z eogonek 10 -KPX zacute e 10 -KPX zacute eacute 10 -KPX zacute ecaron 10 -KPX zacute ecircumflex 10 -KPX zacute edieresis 10 -KPX zacute edotaccent 10 -KPX zacute egrave 10 -KPX zacute emacron 10 -KPX zacute eogonek 10 -KPX zcaron e 10 -KPX zcaron eacute 10 -KPX zcaron ecaron 10 -KPX zcaron ecircumflex 10 -KPX zcaron edieresis 10 -KPX zcaron edotaccent 10 -KPX zcaron egrave 10 -KPX zcaron emacron 10 -KPX zcaron eogonek 10 -KPX zdotaccent e 10 -KPX zdotaccent eacute 10 -KPX zdotaccent ecaron 10 -KPX zdotaccent ecircumflex 10 -KPX zdotaccent edieresis 10 -KPX zdotaccent edotaccent 10 -KPX zdotaccent egrave 10 -KPX zdotaccent emacron 10 -KPX zdotaccent eogonek 10 -EndKernPairs -EndKernData -EndFontMetrics diff --git a/application/third_party/dompdf/lib/fonts/Helvetica-Bold.afm.php b/application/third_party/dompdf/lib/fonts/Helvetica-Bold.afm.php deleted file mode 100644 index c783fb3f..00000000 --- a/application/third_party/dompdf/lib/fonts/Helvetica-Bold.afm.php +++ /dev/null @@ -1,570 +0,0 @@ -<?php return array ( - 'codeToName' => - array ( - 32 => 'space', - 160 => 'space', - 33 => 'exclam', - 34 => 'quotedbl', - 35 => 'numbersign', - 36 => 'dollar', - 37 => 'percent', - 38 => 'ampersand', - 146 => 'quoteright', - 40 => 'parenleft', - 41 => 'parenright', - 42 => 'asterisk', - 43 => 'plus', - 44 => 'comma', - 45 => 'hyphen', - 173 => 'hyphen', - 46 => 'period', - 47 => 'slash', - 48 => 'zero', - 49 => 'one', - 50 => 'two', - 51 => 'three', - 52 => 'four', - 53 => 'five', - 54 => 'six', - 55 => 'seven', - 56 => 'eight', - 57 => 'nine', - 58 => 'colon', - 59 => 'semicolon', - 60 => 'less', - 61 => 'equal', - 62 => 'greater', - 63 => 'question', - 64 => 'at', - 65 => 'A', - 66 => 'B', - 67 => 'C', - 68 => 'D', - 69 => 'E', - 70 => 'F', - 71 => 'G', - 72 => 'H', - 73 => 'I', - 74 => 'J', - 75 => 'K', - 76 => 'L', - 77 => 'M', - 78 => 'N', - 79 => 'O', - 80 => 'P', - 81 => 'Q', - 82 => 'R', - 83 => 'S', - 84 => 'T', - 85 => 'U', - 86 => 'V', - 87 => 'W', - 88 => 'X', - 89 => 'Y', - 90 => 'Z', - 91 => 'bracketleft', - 92 => 'backslash', - 93 => 'bracketright', - 94 => 'asciicircum', - 95 => 'underscore', - 145 => 'quoteleft', - 97 => 'a', - 98 => 'b', - 99 => 'c', - 100 => 'd', - 101 => 'e', - 102 => 'f', - 103 => 'g', - 104 => 'h', - 105 => 'i', - 106 => 'j', - 107 => 'k', - 108 => 'l', - 109 => 'm', - 110 => 'n', - 111 => 'o', - 112 => 'p', - 113 => 'q', - 114 => 'r', - 115 => 's', - 116 => 't', - 117 => 'u', - 118 => 'v', - 119 => 'w', - 120 => 'x', - 121 => 'y', - 122 => 'z', - 123 => 'braceleft', - 124 => 'bar', - 125 => 'braceright', - 126 => 'asciitilde', - 161 => 'exclamdown', - 162 => 'cent', - 163 => 'sterling', - 165 => 'yen', - 131 => 'florin', - 167 => 'section', - 164 => 'currency', - 39 => 'quotesingle', - 147 => 'quotedblleft', - 170 => 'ordfeminine', - 139 => 'guilsinglleft', - 155 => 'guilsinglright', - 150 => 'endash', - 134 => 'dagger', - 135 => 'daggerdbl', - 183 => 'periodcentered', - 182 => 'paragraph', - 149 => 'bullet', - 130 => 'quotesinglbase', - 132 => 'quotedblbase', - 148 => 'quotedblright', - 187 => 'guillemotright', - 133 => 'ellipsis', - 137 => 'perthousand', - 191 => 'questiondown', - 96 => 'grave', - 180 => 'acute', - 136 => 'circumflex', - 152 => 'tilde', - 175 => 'macron', - 168 => 'dieresis', - 184 => 'cedilla', - 151 => 'emdash', - 198 => 'AE', - 216 => 'Oslash', - 140 => 'OE', - 186 => 'ordmasculine', - 230 => 'ae', - 248 => 'oslash', - 156 => 'oe', - 223 => 'germandbls', - 207 => 'Idieresis', - 233 => 'eacute', - 159 => 'Ydieresis', - 247 => 'divide', - 221 => 'Yacute', - 194 => 'Acircumflex', - 225 => 'aacute', - 219 => 'Ucircumflex', - 253 => 'yacute', - 234 => 'ecircumflex', - 220 => 'Udieresis', - 218 => 'Uacute', - 203 => 'Edieresis', - 169 => 'copyright', - 229 => 'aring', - 224 => 'agrave', - 227 => 'atilde', - 154 => 'scaron', - 237 => 'iacute', - 251 => 'ucircumflex', - 226 => 'acircumflex', - 231 => 'ccedilla', - 222 => 'Thorn', - 179 => 'threesuperior', - 210 => 'Ograve', - 192 => 'Agrave', - 215 => 'multiply', - 250 => 'uacute', - 255 => 'ydieresis', - 238 => 'icircumflex', - 202 => 'Ecircumflex', - 228 => 'adieresis', - 235 => 'edieresis', - 205 => 'Iacute', - 177 => 'plusminus', - 166 => 'brokenbar', - 174 => 'registered', - 200 => 'Egrave', - 142 => 'Zcaron', - 208 => 'Eth', - 199 => 'Ccedilla', - 193 => 'Aacute', - 196 => 'Adieresis', - 232 => 'egrave', - 211 => 'Oacute', - 243 => 'oacute', - 239 => 'idieresis', - 212 => 'Ocircumflex', - 217 => 'Ugrave', - 254 => 'thorn', - 178 => 'twosuperior', - 214 => 'Odieresis', - 181 => 'mu', - 236 => 'igrave', - 190 => 'threequarters', - 153 => 'trademark', - 204 => 'Igrave', - 189 => 'onehalf', - 244 => 'ocircumflex', - 241 => 'ntilde', - 201 => 'Eacute', - 188 => 'onequarter', - 138 => 'Scaron', - 176 => 'degree', - 242 => 'ograve', - 249 => 'ugrave', - 209 => 'Ntilde', - 245 => 'otilde', - 195 => 'Atilde', - 197 => 'Aring', - 213 => 'Otilde', - 206 => 'Icircumflex', - 172 => 'logicalnot', - 246 => 'odieresis', - 252 => 'udieresis', - 240 => 'eth', - 158 => 'zcaron', - 185 => 'onesuperior', - 128 => 'Euro', - ), - 'isUnicode' => false, - 'FontName' => 'Helvetica-Bold', - 'FullName' => 'Helvetica Bold', - 'FamilyName' => 'Helvetica', - 'Weight' => 'Bold', - 'ItalicAngle' => '0', - 'IsFixedPitch' => 'false', - 'CharacterSet' => 'ExtendedRoman', - 'FontBBox' => - array ( - 0 => '-170', - 1 => '-228', - 2 => '1003', - 3 => '962', - ), - 'UnderlinePosition' => '-100', - 'UnderlineThickness' => '50', - 'Version' => '002.000', - 'EncodingScheme' => 'WinAnsiEncoding', - 'CapHeight' => '718', - 'XHeight' => '532', - 'Ascender' => '718', - 'Descender' => '-207', - 'StdHW' => '118', - 'StdVW' => '140', - 'StartCharMetrics' => '317', - 'C' => - array ( - 32 => 278.0, - 160 => 278.0, - 33 => 333.0, - 34 => 474.0, - 35 => 556.0, - 36 => 556.0, - 37 => 889.0, - 38 => 722.0, - 146 => 278.0, - 40 => 333.0, - 41 => 333.0, - 42 => 389.0, - 43 => 584.0, - 44 => 278.0, - 45 => 333.0, - 173 => 333.0, - 46 => 278.0, - 47 => 278.0, - 48 => 556.0, - 49 => 556.0, - 50 => 556.0, - 51 => 556.0, - 52 => 556.0, - 53 => 556.0, - 54 => 556.0, - 55 => 556.0, - 56 => 556.0, - 57 => 556.0, - 58 => 333.0, - 59 => 333.0, - 60 => 584.0, - 61 => 584.0, - 62 => 584.0, - 63 => 611.0, - 64 => 975.0, - 65 => 722.0, - 66 => 722.0, - 67 => 722.0, - 68 => 722.0, - 69 => 667.0, - 70 => 611.0, - 71 => 778.0, - 72 => 722.0, - 73 => 278.0, - 74 => 556.0, - 75 => 722.0, - 76 => 611.0, - 77 => 833.0, - 78 => 722.0, - 79 => 778.0, - 80 => 667.0, - 81 => 778.0, - 82 => 722.0, - 83 => 667.0, - 84 => 611.0, - 85 => 722.0, - 86 => 667.0, - 87 => 944.0, - 88 => 667.0, - 89 => 667.0, - 90 => 611.0, - 91 => 333.0, - 92 => 278.0, - 93 => 333.0, - 94 => 584.0, - 95 => 556.0, - 145 => 278.0, - 97 => 556.0, - 98 => 611.0, - 99 => 556.0, - 100 => 611.0, - 101 => 556.0, - 102 => 333.0, - 103 => 611.0, - 104 => 611.0, - 105 => 278.0, - 106 => 278.0, - 107 => 556.0, - 108 => 278.0, - 109 => 889.0, - 110 => 611.0, - 111 => 611.0, - 112 => 611.0, - 113 => 611.0, - 114 => 389.0, - 115 => 556.0, - 116 => 333.0, - 117 => 611.0, - 118 => 556.0, - 119 => 778.0, - 120 => 556.0, - 121 => 556.0, - 122 => 500.0, - 123 => 389.0, - 124 => 280.0, - 125 => 389.0, - 126 => 584.0, - 161 => 333.0, - 162 => 556.0, - 163 => 556.0, - 'fraction' => 167.0, - 165 => 556.0, - 131 => 556.0, - 167 => 556.0, - 164 => 556.0, - 39 => 238.0, - 147 => 500.0, - 170 => 370.0, - 139 => 333.0, - 155 => 333.0, - 'fi' => 611.0, - 'fl' => 611.0, - 150 => 556.0, - 134 => 556.0, - 135 => 556.0, - 183 => 278.0, - 182 => 556.0, - 149 => 350.0, - 130 => 278.0, - 132 => 500.0, - 148 => 500.0, - 187 => 556.0, - 133 => 1000.0, - 137 => 1000.0, - 191 => 611.0, - 96 => 333.0, - 180 => 333.0, - 136 => 333.0, - 152 => 333.0, - 175 => 333.0, - 'breve' => 333.0, - 'dotaccent' => 333.0, - 168 => 333.0, - 'ring' => 333.0, - 184 => 333.0, - 'hungarumlaut' => 333.0, - 'ogonek' => 333.0, - 'caron' => 333.0, - 151 => 1000.0, - 198 => 1000.0, - 'Lslash' => 611.0, - 216 => 778.0, - 140 => 1000.0, - 186 => 365.0, - 230 => 889.0, - 'dotlessi' => 278.0, - 'lslash' => 278.0, - 248 => 611.0, - 156 => 944.0, - 223 => 611.0, - 207 => 278.0, - 233 => 556.0, - 'abreve' => 556.0, - 'uhungarumlaut' => 611.0, - 'ecaron' => 556.0, - 159 => 667.0, - 247 => 584.0, - 221 => 667.0, - 194 => 722.0, - 225 => 556.0, - 219 => 722.0, - 253 => 556.0, - 'scommaaccent' => 556.0, - 234 => 556.0, - 'Uring' => 722.0, - 220 => 722.0, - 'aogonek' => 556.0, - 218 => 722.0, - 'uogonek' => 611.0, - 203 => 667.0, - 'Dcroat' => 722.0, - 'commaaccent' => 250.0, - 169 => 737.0, - 'Emacron' => 667.0, - 'ccaron' => 556.0, - 229 => 556.0, - 'Ncommaaccent' => 722.0, - 'lacute' => 278.0, - 224 => 556.0, - 'Tcommaaccent' => 611.0, - 'Cacute' => 722.0, - 227 => 556.0, - 'Edotaccent' => 667.0, - 154 => 556.0, - 'scedilla' => 556.0, - 237 => 278.0, - 'lozenge' => 494.0, - 'Rcaron' => 722.0, - 'Gcommaaccent' => 778.0, - 251 => 611.0, - 226 => 556.0, - 'Amacron' => 722.0, - 'rcaron' => 389.0, - 231 => 556.0, - 'Zdotaccent' => 611.0, - 222 => 667.0, - 'Omacron' => 778.0, - 'Racute' => 722.0, - 'Sacute' => 667.0, - 'dcaron' => 743.0, - 'Umacron' => 722.0, - 'uring' => 611.0, - 179 => 333.0, - 210 => 778.0, - 192 => 722.0, - 'Abreve' => 722.0, - 215 => 584.0, - 250 => 611.0, - 'Tcaron' => 611.0, - 'partialdiff' => 494.0, - 255 => 556.0, - 'Nacute' => 722.0, - 238 => 278.0, - 202 => 667.0, - 228 => 556.0, - 235 => 556.0, - 'cacute' => 556.0, - 'nacute' => 611.0, - 'umacron' => 611.0, - 'Ncaron' => 722.0, - 205 => 278.0, - 177 => 584.0, - 166 => 280.0, - 174 => 737.0, - 'Gbreve' => 778.0, - 'Idotaccent' => 278.0, - 'summation' => 600.0, - 200 => 667.0, - 'racute' => 389.0, - 'omacron' => 611.0, - 'Zacute' => 611.0, - 142 => 611.0, - 'greaterequal' => 549.0, - 208 => 722.0, - 199 => 722.0, - 'lcommaaccent' => 278.0, - 'tcaron' => 389.0, - 'eogonek' => 556.0, - 'Uogonek' => 722.0, - 193 => 722.0, - 196 => 722.0, - 232 => 556.0, - 'zacute' => 500.0, - 'iogonek' => 278.0, - 211 => 778.0, - 243 => 611.0, - 'amacron' => 556.0, - 'sacute' => 556.0, - 239 => 278.0, - 212 => 778.0, - 217 => 722.0, - 'Delta' => 612.0, - 254 => 611.0, - 178 => 333.0, - 214 => 778.0, - 181 => 611.0, - 236 => 278.0, - 'ohungarumlaut' => 611.0, - 'Eogonek' => 667.0, - 'dcroat' => 611.0, - 190 => 834.0, - 'Scedilla' => 667.0, - 'lcaron' => 400.0, - 'Kcommaaccent' => 722.0, - 'Lacute' => 611.0, - 153 => 1000.0, - 'edotaccent' => 556.0, - 204 => 278.0, - 'Imacron' => 278.0, - 'Lcaron' => 611.0, - 189 => 834.0, - 'lessequal' => 549.0, - 244 => 611.0, - 241 => 611.0, - 'Uhungarumlaut' => 722.0, - 201 => 667.0, - 'emacron' => 556.0, - 'gbreve' => 611.0, - 188 => 834.0, - 138 => 667.0, - 'Scommaaccent' => 667.0, - 'Ohungarumlaut' => 778.0, - 176 => 400.0, - 242 => 611.0, - 'Ccaron' => 722.0, - 249 => 611.0, - 'radical' => 549.0, - 'Dcaron' => 722.0, - 'rcommaaccent' => 389.0, - 209 => 722.0, - 245 => 611.0, - 'Rcommaaccent' => 722.0, - 'Lcommaaccent' => 611.0, - 195 => 722.0, - 'Aogonek' => 722.0, - 197 => 722.0, - 213 => 778.0, - 'zdotaccent' => 500.0, - 'Ecaron' => 667.0, - 'Iogonek' => 278.0, - 'kcommaaccent' => 556.0, - 'minus' => 584.0, - 206 => 278.0, - 'ncaron' => 611.0, - 'tcommaaccent' => 333.0, - 172 => 584.0, - 246 => 611.0, - 252 => 611.0, - 'notequal' => 549.0, - 'gcommaaccent' => 611.0, - 240 => 611.0, - 158 => 500.0, - 'ncommaaccent' => 611.0, - 185 => 333.0, - 'imacron' => 278.0, - 128 => 556.0, - ), - 'CIDtoGID_Compressed' => true, - 'CIDtoGID' => 'eJwDAAAAAAE=', - '_version_' => 4, -); \ No newline at end of file diff --git a/application/third_party/dompdf/lib/fonts/Helvetica-BoldOblique.afm b/application/third_party/dompdf/lib/fonts/Helvetica-BoldOblique.afm deleted file mode 100644 index 76b19e45..00000000 --- a/application/third_party/dompdf/lib/fonts/Helvetica-BoldOblique.afm +++ /dev/null @@ -1,2829 +0,0 @@ -StartFontMetrics 4.1 -Comment Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved. -Comment Creation Date: Thu May 1 12:45:12 1997 -Comment UniqueID 43053 -Comment VMusage 14482 68586 -FontName Helvetica-BoldOblique -FullName Helvetica Bold Oblique -FamilyName Helvetica -Weight Bold -ItalicAngle -12 -IsFixedPitch false -CharacterSet ExtendedRoman -FontBBox -174 -228 1114 962 -UnderlinePosition -100 -UnderlineThickness 50 -Version 002.000 -Notice Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved.Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries. -EncodingScheme WinAnsiEncoding -CapHeight 718 -XHeight 532 -Ascender 718 -Descender -207 -StdHW 118 -StdVW 140 -StartCharMetrics 317 -C 32 ; WX 278 ; N space ; B 0 0 0 0 ; -C 160 ; WX 278 ; N space ; B 0 0 0 0 ; -C 33 ; WX 333 ; N exclam ; B 94 0 397 718 ; -C 34 ; WX 474 ; N quotedbl ; B 193 447 529 718 ; -C 35 ; WX 556 ; N numbersign ; B 60 0 644 698 ; -C 36 ; WX 556 ; N dollar ; B 67 -115 622 775 ; -C 37 ; WX 889 ; N percent ; B 136 -19 901 710 ; -C 38 ; WX 722 ; N ampersand ; B 89 -19 732 718 ; -C 146 ; WX 278 ; N quoteright ; B 167 445 362 718 ; -C 40 ; WX 333 ; N parenleft ; B 76 -208 470 734 ; -C 41 ; WX 333 ; N parenright ; B -25 -208 369 734 ; -C 42 ; WX 389 ; N asterisk ; B 146 387 481 718 ; -C 43 ; WX 584 ; N plus ; B 82 0 610 506 ; -C 44 ; WX 278 ; N comma ; B 28 -168 245 146 ; -C 45 ; WX 333 ; N hyphen ; B 73 215 379 345 ; -C 173 ; WX 333 ; N hyphen ; B 44 232 289 322 ; -C 46 ; WX 278 ; N period ; B 64 0 245 146 ; -C 47 ; WX 278 ; N slash ; B -37 -19 468 737 ; -C 48 ; WX 556 ; N zero ; B 86 -19 617 710 ; -C 49 ; WX 556 ; N one ; B 173 0 529 710 ; -C 50 ; WX 556 ; N two ; B 26 0 619 710 ; -C 51 ; WX 556 ; N three ; B 65 -19 608 710 ; -C 52 ; WX 556 ; N four ; B 60 0 598 710 ; -C 53 ; WX 556 ; N five ; B 64 -19 636 698 ; -C 54 ; WX 556 ; N six ; B 85 -19 619 710 ; -C 55 ; WX 556 ; N seven ; B 125 0 676 698 ; -C 56 ; WX 556 ; N eight ; B 69 -19 616 710 ; -C 57 ; WX 556 ; N nine ; B 78 -19 615 710 ; -C 58 ; WX 333 ; N colon ; B 92 0 351 512 ; -C 59 ; WX 333 ; N semicolon ; B 56 -168 351 512 ; -C 60 ; WX 584 ; N less ; B 82 -8 655 514 ; -C 61 ; WX 584 ; N equal ; B 58 87 633 419 ; -C 62 ; WX 584 ; N greater ; B 36 -8 609 514 ; -C 63 ; WX 611 ; N question ; B 165 0 671 727 ; -C 64 ; WX 975 ; N at ; B 186 -19 954 737 ; -C 65 ; WX 722 ; N A ; B 20 0 702 718 ; -C 66 ; WX 722 ; N B ; B 76 0 764 718 ; -C 67 ; WX 722 ; N C ; B 107 -19 789 737 ; -C 68 ; WX 722 ; N D ; B 76 0 777 718 ; -C 69 ; WX 667 ; N E ; B 76 0 757 718 ; -C 70 ; WX 611 ; N F ; B 76 0 740 718 ; -C 71 ; WX 778 ; N G ; B 108 -19 817 737 ; -C 72 ; WX 722 ; N H ; B 71 0 804 718 ; -C 73 ; WX 278 ; N I ; B 64 0 367 718 ; -C 74 ; WX 556 ; N J ; B 60 -18 637 718 ; -C 75 ; WX 722 ; N K ; B 87 0 858 718 ; -C 76 ; WX 611 ; N L ; B 76 0 611 718 ; -C 77 ; WX 833 ; N M ; B 69 0 918 718 ; -C 78 ; WX 722 ; N N ; B 69 0 807 718 ; -C 79 ; WX 778 ; N O ; B 107 -19 823 737 ; -C 80 ; WX 667 ; N P ; B 76 0 738 718 ; -C 81 ; WX 778 ; N Q ; B 107 -52 823 737 ; -C 82 ; WX 722 ; N R ; B 76 0 778 718 ; -C 83 ; WX 667 ; N S ; B 81 -19 718 737 ; -C 84 ; WX 611 ; N T ; B 140 0 751 718 ; -C 85 ; WX 722 ; N U ; B 116 -19 804 718 ; -C 86 ; WX 667 ; N V ; B 172 0 801 718 ; -C 87 ; WX 944 ; N W ; B 169 0 1082 718 ; -C 88 ; WX 667 ; N X ; B 14 0 791 718 ; -C 89 ; WX 667 ; N Y ; B 168 0 806 718 ; -C 90 ; WX 611 ; N Z ; B 25 0 737 718 ; -C 91 ; WX 333 ; N bracketleft ; B 21 -196 462 722 ; -C 92 ; WX 278 ; N backslash ; B 124 -19 307 737 ; -C 93 ; WX 333 ; N bracketright ; B -18 -196 423 722 ; -C 94 ; WX 584 ; N asciicircum ; B 131 323 591 698 ; -C 95 ; WX 556 ; N underscore ; B -27 -125 540 -75 ; -C 145 ; WX 278 ; N quoteleft ; B 165 454 361 727 ; -C 97 ; WX 556 ; N a ; B 55 -14 583 546 ; -C 98 ; WX 611 ; N b ; B 61 -14 645 718 ; -C 99 ; WX 556 ; N c ; B 79 -14 599 546 ; -C 100 ; WX 611 ; N d ; B 82 -14 704 718 ; -C 101 ; WX 556 ; N e ; B 70 -14 593 546 ; -C 102 ; WX 333 ; N f ; B 87 0 469 727 ; L i fi ; L l fl ; -C 103 ; WX 611 ; N g ; B 38 -217 666 546 ; -C 104 ; WX 611 ; N h ; B 65 0 629 718 ; -C 105 ; WX 278 ; N i ; B 69 0 363 725 ; -C 106 ; WX 278 ; N j ; B -42 -214 363 725 ; -C 107 ; WX 556 ; N k ; B 69 0 670 718 ; -C 108 ; WX 278 ; N l ; B 69 0 362 718 ; -C 109 ; WX 889 ; N m ; B 64 0 909 546 ; -C 110 ; WX 611 ; N n ; B 65 0 629 546 ; -C 111 ; WX 611 ; N o ; B 82 -14 643 546 ; -C 112 ; WX 611 ; N p ; B 18 -207 645 546 ; -C 113 ; WX 611 ; N q ; B 80 -207 665 546 ; -C 114 ; WX 389 ; N r ; B 64 0 489 546 ; -C 115 ; WX 556 ; N s ; B 63 -14 584 546 ; -C 116 ; WX 333 ; N t ; B 100 -6 422 676 ; -C 117 ; WX 611 ; N u ; B 98 -14 658 532 ; -C 118 ; WX 556 ; N v ; B 126 0 656 532 ; -C 119 ; WX 778 ; N w ; B 123 0 882 532 ; -C 120 ; WX 556 ; N x ; B 15 0 648 532 ; -C 121 ; WX 556 ; N y ; B 42 -214 652 532 ; -C 122 ; WX 500 ; N z ; B 20 0 583 532 ; -C 123 ; WX 389 ; N braceleft ; B 94 -196 518 722 ; -C 124 ; WX 280 ; N bar ; B 36 -225 361 775 ; -C 125 ; WX 389 ; N braceright ; B -18 -196 407 722 ; -C 126 ; WX 584 ; N asciitilde ; B 115 163 577 343 ; -C 161 ; WX 333 ; N exclamdown ; B 50 -186 353 532 ; -C 162 ; WX 556 ; N cent ; B 79 -118 599 628 ; -C 163 ; WX 556 ; N sterling ; B 50 -16 635 718 ; -C -1 ; WX 167 ; N fraction ; B -174 -19 487 710 ; -C 165 ; WX 556 ; N yen ; B 60 0 713 698 ; -C 131 ; WX 556 ; N florin ; B -50 -210 669 737 ; -C 167 ; WX 556 ; N section ; B 61 -184 598 727 ; -C 164 ; WX 556 ; N currency ; B 27 76 680 636 ; -C 39 ; WX 238 ; N quotesingle ; B 165 447 321 718 ; -C 147 ; WX 500 ; N quotedblleft ; B 160 454 588 727 ; -C 170 ; WX 556 ; N guillemotleft ; B 135 76 571 484 ; -C 139 ; WX 333 ; N guilsinglleft ; B 130 76 353 484 ; -C 155 ; WX 333 ; N guilsinglright ; B 99 76 322 484 ; -C -1 ; WX 611 ; N fi ; B 87 0 696 727 ; -C -1 ; WX 611 ; N fl ; B 87 0 695 727 ; -C 150 ; WX 556 ; N endash ; B 48 227 627 333 ; -C 134 ; WX 556 ; N dagger ; B 118 -171 626 718 ; -C 135 ; WX 556 ; N daggerdbl ; B 46 -171 628 718 ; -C 183 ; WX 278 ; N periodcentered ; B 110 172 276 334 ; -C 182 ; WX 556 ; N paragraph ; B 98 -191 688 700 ; -C 149 ; WX 350 ; N bullet ; B 83 194 420 524 ; -C 130 ; WX 278 ; N quotesinglbase ; B 41 -146 236 127 ; -C 132 ; WX 500 ; N quotedblbase ; B 36 -146 463 127 ; -C 148 ; WX 500 ; N quotedblright ; B 162 445 589 718 ; -C 187 ; WX 556 ; N guillemotright ; B 104 76 540 484 ; -C 133 ; WX 1000 ; N ellipsis ; B 92 0 939 146 ; -C 137 ; WX 1000 ; N perthousand ; B 76 -19 1038 710 ; -C 191 ; WX 611 ; N questiondown ; B 53 -195 559 532 ; -C 96 ; WX 333 ; N grave ; B 136 604 353 750 ; -C 180 ; WX 333 ; N acute ; B 236 604 515 750 ; -C 136 ; WX 333 ; N circumflex ; B 118 604 471 750 ; -C 152 ; WX 333 ; N tilde ; B 113 610 507 737 ; -C 175 ; WX 333 ; N macron ; B 122 604 483 678 ; -C -1 ; WX 333 ; N breve ; B 156 604 494 750 ; -C -1 ; WX 333 ; N dotaccent ; B 235 614 385 729 ; -C 168 ; WX 333 ; N dieresis ; B 137 614 482 729 ; -C -1 ; WX 333 ; N ring ; B 200 568 420 776 ; -C 184 ; WX 333 ; N cedilla ; B -37 -228 220 0 ; -C -1 ; WX 333 ; N hungarumlaut ; B 137 604 645 750 ; -C -1 ; WX 333 ; N ogonek ; B 41 -228 264 0 ; -C -1 ; WX 333 ; N caron ; B 149 604 502 750 ; -C 151 ; WX 1000 ; N emdash ; B 48 227 1071 333 ; -C 198 ; WX 1000 ; N AE ; B 5 0 1100 718 ; -C 170 ; WX 370 ; N ordfeminine ; B 125 401 465 737 ; -C -1 ; WX 611 ; N Lslash ; B 34 0 611 718 ; -C 216 ; WX 778 ; N Oslash ; B 35 -27 894 745 ; -C 140 ; WX 1000 ; N OE ; B 99 -19 1114 737 ; -C 186 ; WX 365 ; N ordmasculine ; B 123 401 485 737 ; -C 230 ; WX 889 ; N ae ; B 56 -14 923 546 ; -C -1 ; WX 278 ; N dotlessi ; B 69 0 322 532 ; -C -1 ; WX 278 ; N lslash ; B 40 0 407 718 ; -C 248 ; WX 611 ; N oslash ; B 22 -29 701 560 ; -C 156 ; WX 944 ; N oe ; B 82 -14 977 546 ; -C 223 ; WX 611 ; N germandbls ; B 69 -14 657 731 ; -C 207 ; WX 278 ; N Idieresis ; B 64 0 494 915 ; -C 233 ; WX 556 ; N eacute ; B 70 -14 627 750 ; -C -1 ; WX 556 ; N abreve ; B 55 -14 606 750 ; -C -1 ; WX 611 ; N uhungarumlaut ; B 98 -14 784 750 ; -C -1 ; WX 556 ; N ecaron ; B 70 -14 614 750 ; -C 159 ; WX 667 ; N Ydieresis ; B 168 0 806 915 ; -C 247 ; WX 584 ; N divide ; B 82 -42 610 548 ; -C 221 ; WX 667 ; N Yacute ; B 168 0 806 936 ; -C 194 ; WX 722 ; N Acircumflex ; B 20 0 706 936 ; -C 225 ; WX 556 ; N aacute ; B 55 -14 627 750 ; -C 219 ; WX 722 ; N Ucircumflex ; B 116 -19 804 936 ; -C 253 ; WX 556 ; N yacute ; B 42 -214 652 750 ; -C -1 ; WX 556 ; N scommaaccent ; B 63 -228 584 546 ; -C 234 ; WX 556 ; N ecircumflex ; B 70 -14 593 750 ; -C -1 ; WX 722 ; N Uring ; B 116 -19 804 962 ; -C 220 ; WX 722 ; N Udieresis ; B 116 -19 804 915 ; -C -1 ; WX 556 ; N aogonek ; B 55 -224 583 546 ; -C 218 ; WX 722 ; N Uacute ; B 116 -19 804 936 ; -C -1 ; WX 611 ; N uogonek ; B 98 -228 658 532 ; -C 203 ; WX 667 ; N Edieresis ; B 76 0 757 915 ; -C -1 ; WX 722 ; N Dcroat ; B 62 0 777 718 ; -C -1 ; WX 250 ; N commaaccent ; B 16 -228 188 -50 ; -C 169 ; WX 737 ; N copyright ; B 56 -19 835 737 ; -C -1 ; WX 667 ; N Emacron ; B 76 0 757 864 ; -C -1 ; WX 556 ; N ccaron ; B 79 -14 614 750 ; -C 229 ; WX 556 ; N aring ; B 55 -14 583 776 ; -C -1 ; WX 722 ; N Ncommaaccent ; B 69 -228 807 718 ; -C -1 ; WX 278 ; N lacute ; B 69 0 528 936 ; -C 224 ; WX 556 ; N agrave ; B 55 -14 583 750 ; -C -1 ; WX 611 ; N Tcommaaccent ; B 140 -228 751 718 ; -C -1 ; WX 722 ; N Cacute ; B 107 -19 789 936 ; -C 227 ; WX 556 ; N atilde ; B 55 -14 619 737 ; -C -1 ; WX 667 ; N Edotaccent ; B 76 0 757 915 ; -C 154 ; WX 556 ; N scaron ; B 63 -14 614 750 ; -C -1 ; WX 556 ; N scedilla ; B 63 -228 584 546 ; -C 237 ; WX 278 ; N iacute ; B 69 0 488 750 ; -C -1 ; WX 494 ; N lozenge ; B 90 0 564 745 ; -C -1 ; WX 722 ; N Rcaron ; B 76 0 778 936 ; -C -1 ; WX 778 ; N Gcommaaccent ; B 108 -228 817 737 ; -C 251 ; WX 611 ; N ucircumflex ; B 98 -14 658 750 ; -C 226 ; WX 556 ; N acircumflex ; B 55 -14 583 750 ; -C -1 ; WX 722 ; N Amacron ; B 20 0 718 864 ; -C -1 ; WX 389 ; N rcaron ; B 64 0 530 750 ; -C 231 ; WX 556 ; N ccedilla ; B 79 -228 599 546 ; -C -1 ; WX 611 ; N Zdotaccent ; B 25 0 737 915 ; -C 222 ; WX 667 ; N Thorn ; B 76 0 716 718 ; -C -1 ; WX 778 ; N Omacron ; B 107 -19 823 864 ; -C -1 ; WX 722 ; N Racute ; B 76 0 778 936 ; -C -1 ; WX 667 ; N Sacute ; B 81 -19 722 936 ; -C -1 ; WX 743 ; N dcaron ; B 82 -14 903 718 ; -C -1 ; WX 722 ; N Umacron ; B 116 -19 804 864 ; -C -1 ; WX 611 ; N uring ; B 98 -14 658 776 ; -C 179 ; WX 333 ; N threesuperior ; B 91 271 441 710 ; -C 210 ; WX 778 ; N Ograve ; B 107 -19 823 936 ; -C 192 ; WX 722 ; N Agrave ; B 20 0 702 936 ; -C -1 ; WX 722 ; N Abreve ; B 20 0 729 936 ; -C 215 ; WX 584 ; N multiply ; B 57 1 635 505 ; -C 250 ; WX 611 ; N uacute ; B 98 -14 658 750 ; -C -1 ; WX 611 ; N Tcaron ; B 140 0 751 936 ; -C -1 ; WX 494 ; N partialdiff ; B 43 -21 585 750 ; -C 255 ; WX 556 ; N ydieresis ; B 42 -214 652 729 ; -C -1 ; WX 722 ; N Nacute ; B 69 0 807 936 ; -C 238 ; WX 278 ; N icircumflex ; B 69 0 444 750 ; -C 202 ; WX 667 ; N Ecircumflex ; B 76 0 757 936 ; -C 228 ; WX 556 ; N adieresis ; B 55 -14 594 729 ; -C 235 ; WX 556 ; N edieresis ; B 70 -14 594 729 ; -C -1 ; WX 556 ; N cacute ; B 79 -14 627 750 ; -C -1 ; WX 611 ; N nacute ; B 65 0 654 750 ; -C -1 ; WX 611 ; N umacron ; B 98 -14 658 678 ; -C -1 ; WX 722 ; N Ncaron ; B 69 0 807 936 ; -C 205 ; WX 278 ; N Iacute ; B 64 0 528 936 ; -C 177 ; WX 584 ; N plusminus ; B 40 0 625 506 ; -C 166 ; WX 280 ; N brokenbar ; B 52 -150 345 700 ; -C 174 ; WX 737 ; N registered ; B 55 -19 834 737 ; -C -1 ; WX 778 ; N Gbreve ; B 108 -19 817 936 ; -C -1 ; WX 278 ; N Idotaccent ; B 64 0 397 915 ; -C -1 ; WX 600 ; N summation ; B 14 -10 670 706 ; -C 200 ; WX 667 ; N Egrave ; B 76 0 757 936 ; -C -1 ; WX 389 ; N racute ; B 64 0 543 750 ; -C -1 ; WX 611 ; N omacron ; B 82 -14 643 678 ; -C -1 ; WX 611 ; N Zacute ; B 25 0 737 936 ; -C 142 ; WX 611 ; N Zcaron ; B 25 0 737 936 ; -C -1 ; WX 549 ; N greaterequal ; B 26 0 629 704 ; -C 208 ; WX 722 ; N Eth ; B 62 0 777 718 ; -C 199 ; WX 722 ; N Ccedilla ; B 107 -228 789 737 ; -C -1 ; WX 278 ; N lcommaaccent ; B 30 -228 362 718 ; -C -1 ; WX 389 ; N tcaron ; B 100 -6 608 878 ; -C -1 ; WX 556 ; N eogonek ; B 70 -228 593 546 ; -C -1 ; WX 722 ; N Uogonek ; B 116 -228 804 718 ; -C 193 ; WX 722 ; N Aacute ; B 20 0 750 936 ; -C 196 ; WX 722 ; N Adieresis ; B 20 0 716 915 ; -C 232 ; WX 556 ; N egrave ; B 70 -14 593 750 ; -C -1 ; WX 500 ; N zacute ; B 20 0 599 750 ; -C -1 ; WX 278 ; N iogonek ; B -14 -224 363 725 ; -C 211 ; WX 778 ; N Oacute ; B 107 -19 823 936 ; -C 243 ; WX 611 ; N oacute ; B 82 -14 654 750 ; -C -1 ; WX 556 ; N amacron ; B 55 -14 595 678 ; -C -1 ; WX 556 ; N sacute ; B 63 -14 627 750 ; -C 239 ; WX 278 ; N idieresis ; B 69 0 455 729 ; -C 212 ; WX 778 ; N Ocircumflex ; B 107 -19 823 936 ; -C 217 ; WX 722 ; N Ugrave ; B 116 -19 804 936 ; -C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; -C 254 ; WX 611 ; N thorn ; B 18 -208 645 718 ; -C 178 ; WX 333 ; N twosuperior ; B 69 283 449 710 ; -C 214 ; WX 778 ; N Odieresis ; B 107 -19 823 915 ; -C 181 ; WX 611 ; N mu ; B 22 -207 658 532 ; -C 236 ; WX 278 ; N igrave ; B 69 0 326 750 ; -C -1 ; WX 611 ; N ohungarumlaut ; B 82 -14 784 750 ; -C -1 ; WX 667 ; N Eogonek ; B 76 -224 757 718 ; -C -1 ; WX 611 ; N dcroat ; B 82 -14 789 718 ; -C 190 ; WX 834 ; N threequarters ; B 99 -19 839 710 ; -C -1 ; WX 667 ; N Scedilla ; B 81 -228 718 737 ; -C -1 ; WX 400 ; N lcaron ; B 69 0 561 718 ; -C -1 ; WX 722 ; N Kcommaaccent ; B 87 -228 858 718 ; -C -1 ; WX 611 ; N Lacute ; B 76 0 611 936 ; -C 153 ; WX 1000 ; N trademark ; B 179 306 1109 718 ; -C -1 ; WX 556 ; N edotaccent ; B 70 -14 593 729 ; -C 204 ; WX 278 ; N Igrave ; B 64 0 367 936 ; -C -1 ; WX 278 ; N Imacron ; B 64 0 496 864 ; -C -1 ; WX 611 ; N Lcaron ; B 76 0 643 718 ; -C 189 ; WX 834 ; N onehalf ; B 132 -19 858 710 ; -C -1 ; WX 549 ; N lessequal ; B 29 0 676 704 ; -C 244 ; WX 611 ; N ocircumflex ; B 82 -14 643 750 ; -C 241 ; WX 611 ; N ntilde ; B 65 0 646 737 ; -C -1 ; WX 722 ; N Uhungarumlaut ; B 116 -19 880 936 ; -C 201 ; WX 667 ; N Eacute ; B 76 0 757 936 ; -C -1 ; WX 556 ; N emacron ; B 70 -14 595 678 ; -C -1 ; WX 611 ; N gbreve ; B 38 -217 666 750 ; -C 188 ; WX 834 ; N onequarter ; B 132 -19 806 710 ; -C 138 ; WX 667 ; N Scaron ; B 81 -19 718 936 ; -C -1 ; WX 667 ; N Scommaaccent ; B 81 -228 718 737 ; -C -1 ; WX 778 ; N Ohungarumlaut ; B 107 -19 908 936 ; -C 176 ; WX 400 ; N degree ; B 175 426 467 712 ; -C 242 ; WX 611 ; N ograve ; B 82 -14 643 750 ; -C -1 ; WX 722 ; N Ccaron ; B 107 -19 789 936 ; -C 249 ; WX 611 ; N ugrave ; B 98 -14 658 750 ; -C -1 ; WX 549 ; N radical ; B 112 -46 689 850 ; -C -1 ; WX 722 ; N Dcaron ; B 76 0 777 936 ; -C -1 ; WX 389 ; N rcommaaccent ; B 26 -228 489 546 ; -C 209 ; WX 722 ; N Ntilde ; B 69 0 807 923 ; -C 245 ; WX 611 ; N otilde ; B 82 -14 646 737 ; -C -1 ; WX 722 ; N Rcommaaccent ; B 76 -228 778 718 ; -C -1 ; WX 611 ; N Lcommaaccent ; B 76 -228 611 718 ; -C 195 ; WX 722 ; N Atilde ; B 20 0 741 923 ; -C -1 ; WX 722 ; N Aogonek ; B 20 -224 702 718 ; -C 197 ; WX 722 ; N Aring ; B 20 0 702 962 ; -C 213 ; WX 778 ; N Otilde ; B 107 -19 823 923 ; -C -1 ; WX 500 ; N zdotaccent ; B 20 0 583 729 ; -C -1 ; WX 667 ; N Ecaron ; B 76 0 757 936 ; -C -1 ; WX 278 ; N Iogonek ; B -41 -228 367 718 ; -C -1 ; WX 556 ; N kcommaaccent ; B 69 -228 670 718 ; -C -1 ; WX 584 ; N minus ; B 82 197 610 309 ; -C 206 ; WX 278 ; N Icircumflex ; B 64 0 484 936 ; -C -1 ; WX 611 ; N ncaron ; B 65 0 641 750 ; -C -1 ; WX 333 ; N tcommaaccent ; B 58 -228 422 676 ; -C 172 ; WX 584 ; N logicalnot ; B 105 108 633 419 ; -C 246 ; WX 611 ; N odieresis ; B 82 -14 643 729 ; -C 252 ; WX 611 ; N udieresis ; B 98 -14 658 729 ; -C -1 ; WX 549 ; N notequal ; B 32 -49 630 570 ; -C -1 ; WX 611 ; N gcommaaccent ; B 38 -217 666 850 ; -C 240 ; WX 611 ; N eth ; B 82 -14 670 737 ; -C 158 ; WX 500 ; N zcaron ; B 20 0 586 750 ; -C -1 ; WX 611 ; N ncommaaccent ; B 65 -228 629 546 ; -C 185 ; WX 333 ; N onesuperior ; B 148 283 388 710 ; -C -1 ; WX 278 ; N imacron ; B 69 0 429 678 ; -C 128 ; WX 556 ; N Euro ; B 0 0 0 0 ; -EndCharMetrics -StartKernData -StartKernPairs 2481 -KPX A C -40 -KPX A Cacute -40 -KPX A Ccaron -40 -KPX A Ccedilla -40 -KPX A G -50 -KPX A Gbreve -50 -KPX A Gcommaaccent -50 -KPX A O -40 -KPX A Oacute -40 -KPX A Ocircumflex -40 -KPX A Odieresis -40 -KPX A Ograve -40 -KPX A Ohungarumlaut -40 -KPX A Omacron -40 -KPX A Oslash -40 -KPX A Otilde -40 -KPX A Q -40 -KPX A T -90 -KPX A Tcaron -90 -KPX A Tcommaaccent -90 -KPX A U -50 -KPX A Uacute -50 -KPX A Ucircumflex -50 -KPX A Udieresis -50 -KPX A Ugrave -50 -KPX A Uhungarumlaut -50 -KPX A Umacron -50 -KPX A Uogonek -50 -KPX A Uring -50 -KPX A V -80 -KPX A W -60 -KPX A Y -110 -KPX A Yacute -110 -KPX A Ydieresis -110 -KPX A u -30 -KPX A uacute -30 -KPX A ucircumflex -30 -KPX A udieresis -30 -KPX A ugrave -30 -KPX A uhungarumlaut -30 -KPX A umacron -30 -KPX A uogonek -30 -KPX A uring -30 -KPX A v -40 -KPX A w -30 -KPX A y -30 -KPX A yacute -30 -KPX A ydieresis -30 -KPX Aacute C -40 -KPX Aacute Cacute -40 -KPX Aacute Ccaron -40 -KPX Aacute Ccedilla -40 -KPX Aacute G -50 -KPX Aacute Gbreve -50 -KPX Aacute Gcommaaccent -50 -KPX Aacute O -40 -KPX Aacute Oacute -40 -KPX Aacute Ocircumflex -40 -KPX Aacute Odieresis -40 -KPX Aacute Ograve -40 -KPX Aacute Ohungarumlaut -40 -KPX Aacute Omacron -40 -KPX Aacute Oslash -40 -KPX Aacute Otilde -40 -KPX Aacute Q -40 -KPX Aacute T -90 -KPX Aacute Tcaron -90 -KPX Aacute Tcommaaccent -90 -KPX Aacute U -50 -KPX Aacute Uacute -50 -KPX Aacute Ucircumflex -50 -KPX Aacute Udieresis -50 -KPX Aacute Ugrave -50 -KPX Aacute Uhungarumlaut -50 -KPX Aacute Umacron -50 -KPX Aacute Uogonek -50 -KPX Aacute Uring -50 -KPX Aacute V -80 -KPX Aacute W -60 -KPX Aacute Y -110 -KPX Aacute Yacute -110 -KPX Aacute Ydieresis -110 -KPX Aacute u -30 -KPX Aacute uacute -30 -KPX Aacute ucircumflex -30 -KPX Aacute udieresis -30 -KPX Aacute ugrave -30 -KPX Aacute uhungarumlaut -30 -KPX Aacute umacron -30 -KPX Aacute uogonek -30 -KPX Aacute uring -30 -KPX Aacute v -40 -KPX Aacute w -30 -KPX Aacute y -30 -KPX Aacute yacute -30 -KPX Aacute ydieresis -30 -KPX Abreve C -40 -KPX Abreve Cacute -40 -KPX Abreve Ccaron -40 -KPX Abreve Ccedilla -40 -KPX Abreve G -50 -KPX Abreve Gbreve -50 -KPX Abreve Gcommaaccent -50 -KPX Abreve O -40 -KPX Abreve Oacute -40 -KPX Abreve Ocircumflex -40 -KPX Abreve Odieresis -40 -KPX Abreve Ograve -40 -KPX Abreve Ohungarumlaut -40 -KPX Abreve Omacron -40 -KPX Abreve Oslash -40 -KPX Abreve Otilde -40 -KPX Abreve Q -40 -KPX Abreve T -90 -KPX Abreve Tcaron -90 -KPX Abreve Tcommaaccent -90 -KPX Abreve U -50 -KPX Abreve Uacute -50 -KPX Abreve Ucircumflex -50 -KPX Abreve Udieresis -50 -KPX Abreve Ugrave -50 -KPX Abreve Uhungarumlaut -50 -KPX Abreve Umacron -50 -KPX Abreve Uogonek -50 -KPX Abreve Uring -50 -KPX Abreve V -80 -KPX Abreve W -60 -KPX Abreve Y -110 -KPX Abreve Yacute -110 -KPX Abreve Ydieresis -110 -KPX Abreve u -30 -KPX Abreve uacute -30 -KPX Abreve ucircumflex -30 -KPX Abreve udieresis -30 -KPX Abreve ugrave -30 -KPX Abreve uhungarumlaut -30 -KPX Abreve umacron -30 -KPX Abreve uogonek -30 -KPX Abreve uring -30 -KPX Abreve v -40 -KPX Abreve w -30 -KPX Abreve y -30 -KPX Abreve yacute -30 -KPX Abreve ydieresis -30 -KPX Acircumflex C -40 -KPX Acircumflex Cacute -40 -KPX Acircumflex Ccaron -40 -KPX Acircumflex Ccedilla -40 -KPX Acircumflex G -50 -KPX Acircumflex Gbreve -50 -KPX Acircumflex Gcommaaccent -50 -KPX Acircumflex O -40 -KPX Acircumflex Oacute -40 -KPX Acircumflex Ocircumflex -40 -KPX Acircumflex Odieresis -40 -KPX Acircumflex Ograve -40 -KPX Acircumflex Ohungarumlaut -40 -KPX Acircumflex Omacron -40 -KPX Acircumflex Oslash -40 -KPX Acircumflex Otilde -40 -KPX Acircumflex Q -40 -KPX Acircumflex T -90 -KPX Acircumflex Tcaron -90 -KPX Acircumflex Tcommaaccent -90 -KPX Acircumflex U -50 -KPX Acircumflex Uacute -50 -KPX Acircumflex Ucircumflex -50 -KPX Acircumflex Udieresis -50 -KPX Acircumflex Ugrave -50 -KPX Acircumflex Uhungarumlaut -50 -KPX Acircumflex Umacron -50 -KPX Acircumflex Uogonek -50 -KPX Acircumflex Uring -50 -KPX Acircumflex V -80 -KPX Acircumflex W -60 -KPX Acircumflex Y -110 -KPX Acircumflex Yacute -110 -KPX Acircumflex Ydieresis -110 -KPX Acircumflex u -30 -KPX Acircumflex uacute -30 -KPX Acircumflex ucircumflex -30 -KPX Acircumflex udieresis -30 -KPX Acircumflex ugrave -30 -KPX Acircumflex uhungarumlaut -30 -KPX Acircumflex umacron -30 -KPX Acircumflex uogonek -30 -KPX Acircumflex uring -30 -KPX Acircumflex v -40 -KPX Acircumflex w -30 -KPX Acircumflex y -30 -KPX Acircumflex yacute -30 -KPX Acircumflex ydieresis -30 -KPX Adieresis C -40 -KPX Adieresis Cacute -40 -KPX Adieresis Ccaron -40 -KPX Adieresis Ccedilla -40 -KPX Adieresis G -50 -KPX Adieresis Gbreve -50 -KPX Adieresis Gcommaaccent -50 -KPX Adieresis O -40 -KPX Adieresis Oacute -40 -KPX Adieresis Ocircumflex -40 -KPX Adieresis Odieresis -40 -KPX Adieresis Ograve -40 -KPX Adieresis Ohungarumlaut -40 -KPX Adieresis Omacron -40 -KPX Adieresis Oslash -40 -KPX Adieresis Otilde -40 -KPX Adieresis Q -40 -KPX Adieresis T -90 -KPX Adieresis Tcaron -90 -KPX Adieresis Tcommaaccent -90 -KPX Adieresis U -50 -KPX Adieresis Uacute -50 -KPX Adieresis Ucircumflex -50 -KPX Adieresis Udieresis -50 -KPX Adieresis Ugrave -50 -KPX Adieresis Uhungarumlaut -50 -KPX Adieresis Umacron -50 -KPX Adieresis Uogonek -50 -KPX Adieresis Uring -50 -KPX Adieresis V -80 -KPX Adieresis W -60 -KPX Adieresis Y -110 -KPX Adieresis Yacute -110 -KPX Adieresis Ydieresis -110 -KPX Adieresis u -30 -KPX Adieresis uacute -30 -KPX Adieresis ucircumflex -30 -KPX Adieresis udieresis -30 -KPX Adieresis ugrave -30 -KPX Adieresis uhungarumlaut -30 -KPX Adieresis umacron -30 -KPX Adieresis uogonek -30 -KPX Adieresis uring -30 -KPX Adieresis v -40 -KPX Adieresis w -30 -KPX Adieresis y -30 -KPX Adieresis yacute -30 -KPX Adieresis ydieresis -30 -KPX Agrave C -40 -KPX Agrave Cacute -40 -KPX Agrave Ccaron -40 -KPX Agrave Ccedilla -40 -KPX Agrave G -50 -KPX Agrave Gbreve -50 -KPX Agrave Gcommaaccent -50 -KPX Agrave O -40 -KPX Agrave Oacute -40 -KPX Agrave Ocircumflex -40 -KPX Agrave Odieresis -40 -KPX Agrave Ograve -40 -KPX Agrave Ohungarumlaut -40 -KPX Agrave Omacron -40 -KPX Agrave Oslash -40 -KPX Agrave Otilde -40 -KPX Agrave Q -40 -KPX Agrave T -90 -KPX Agrave Tcaron -90 -KPX Agrave Tcommaaccent -90 -KPX Agrave U -50 -KPX Agrave Uacute -50 -KPX Agrave Ucircumflex -50 -KPX Agrave Udieresis -50 -KPX Agrave Ugrave -50 -KPX Agrave Uhungarumlaut -50 -KPX Agrave Umacron -50 -KPX Agrave Uogonek -50 -KPX Agrave Uring -50 -KPX Agrave V -80 -KPX Agrave W -60 -KPX Agrave Y -110 -KPX Agrave Yacute -110 -KPX Agrave Ydieresis -110 -KPX Agrave u -30 -KPX Agrave uacute -30 -KPX Agrave ucircumflex -30 -KPX Agrave udieresis -30 -KPX Agrave ugrave -30 -KPX Agrave uhungarumlaut -30 -KPX Agrave umacron -30 -KPX Agrave uogonek -30 -KPX Agrave uring -30 -KPX Agrave v -40 -KPX Agrave w -30 -KPX Agrave y -30 -KPX Agrave yacute -30 -KPX Agrave ydieresis -30 -KPX Amacron C -40 -KPX Amacron Cacute -40 -KPX Amacron Ccaron -40 -KPX Amacron Ccedilla -40 -KPX Amacron G -50 -KPX Amacron Gbreve -50 -KPX Amacron Gcommaaccent -50 -KPX Amacron O -40 -KPX Amacron Oacute -40 -KPX Amacron Ocircumflex -40 -KPX Amacron Odieresis -40 -KPX Amacron Ograve -40 -KPX Amacron Ohungarumlaut -40 -KPX Amacron Omacron -40 -KPX Amacron Oslash -40 -KPX Amacron Otilde -40 -KPX Amacron Q -40 -KPX Amacron T -90 -KPX Amacron Tcaron -90 -KPX Amacron Tcommaaccent -90 -KPX Amacron U -50 -KPX Amacron Uacute -50 -KPX Amacron Ucircumflex -50 -KPX Amacron Udieresis -50 -KPX Amacron Ugrave -50 -KPX Amacron Uhungarumlaut -50 -KPX Amacron Umacron -50 -KPX Amacron Uogonek -50 -KPX Amacron Uring -50 -KPX Amacron V -80 -KPX Amacron W -60 -KPX Amacron Y -110 -KPX Amacron Yacute -110 -KPX Amacron Ydieresis -110 -KPX Amacron u -30 -KPX Amacron uacute -30 -KPX Amacron ucircumflex -30 -KPX Amacron udieresis -30 -KPX Amacron ugrave -30 -KPX Amacron uhungarumlaut -30 -KPX Amacron umacron -30 -KPX Amacron uogonek -30 -KPX Amacron uring -30 -KPX Amacron v -40 -KPX Amacron w -30 -KPX Amacron y -30 -KPX Amacron yacute -30 -KPX Amacron ydieresis -30 -KPX Aogonek C -40 -KPX Aogonek Cacute -40 -KPX Aogonek Ccaron -40 -KPX Aogonek Ccedilla -40 -KPX Aogonek G -50 -KPX Aogonek Gbreve -50 -KPX Aogonek Gcommaaccent -50 -KPX Aogonek O -40 -KPX Aogonek Oacute -40 -KPX Aogonek Ocircumflex -40 -KPX Aogonek Odieresis -40 -KPX Aogonek Ograve -40 -KPX Aogonek Ohungarumlaut -40 -KPX Aogonek Omacron -40 -KPX Aogonek Oslash -40 -KPX Aogonek Otilde -40 -KPX Aogonek Q -40 -KPX Aogonek T -90 -KPX Aogonek Tcaron -90 -KPX Aogonek Tcommaaccent -90 -KPX Aogonek U -50 -KPX Aogonek Uacute -50 -KPX Aogonek Ucircumflex -50 -KPX Aogonek Udieresis -50 -KPX Aogonek Ugrave -50 -KPX Aogonek Uhungarumlaut -50 -KPX Aogonek Umacron -50 -KPX Aogonek Uogonek -50 -KPX Aogonek Uring -50 -KPX Aogonek V -80 -KPX Aogonek W -60 -KPX Aogonek Y -110 -KPX Aogonek Yacute -110 -KPX Aogonek Ydieresis -110 -KPX Aogonek u -30 -KPX Aogonek uacute -30 -KPX Aogonek ucircumflex -30 -KPX Aogonek udieresis -30 -KPX Aogonek ugrave -30 -KPX Aogonek uhungarumlaut -30 -KPX Aogonek umacron -30 -KPX Aogonek uogonek -30 -KPX Aogonek uring -30 -KPX Aogonek v -40 -KPX Aogonek w -30 -KPX Aogonek y -30 -KPX Aogonek yacute -30 -KPX Aogonek ydieresis -30 -KPX Aring C -40 -KPX Aring Cacute -40 -KPX Aring Ccaron -40 -KPX Aring Ccedilla -40 -KPX Aring G -50 -KPX Aring Gbreve -50 -KPX Aring Gcommaaccent -50 -KPX Aring O -40 -KPX Aring Oacute -40 -KPX Aring Ocircumflex -40 -KPX Aring Odieresis -40 -KPX Aring Ograve -40 -KPX Aring Ohungarumlaut -40 -KPX Aring Omacron -40 -KPX Aring Oslash -40 -KPX Aring Otilde -40 -KPX Aring Q -40 -KPX Aring T -90 -KPX Aring Tcaron -90 -KPX Aring Tcommaaccent -90 -KPX Aring U -50 -KPX Aring Uacute -50 -KPX Aring Ucircumflex -50 -KPX Aring Udieresis -50 -KPX Aring Ugrave -50 -KPX Aring Uhungarumlaut -50 -KPX Aring Umacron -50 -KPX Aring Uogonek -50 -KPX Aring Uring -50 -KPX Aring V -80 -KPX Aring W -60 -KPX Aring Y -110 -KPX Aring Yacute -110 -KPX Aring Ydieresis -110 -KPX Aring u -30 -KPX Aring uacute -30 -KPX Aring ucircumflex -30 -KPX Aring udieresis -30 -KPX Aring ugrave -30 -KPX Aring uhungarumlaut -30 -KPX Aring umacron -30 -KPX Aring uogonek -30 -KPX Aring uring -30 -KPX Aring v -40 -KPX Aring w -30 -KPX Aring y -30 -KPX Aring yacute -30 -KPX Aring ydieresis -30 -KPX Atilde C -40 -KPX Atilde Cacute -40 -KPX Atilde Ccaron -40 -KPX Atilde Ccedilla -40 -KPX Atilde G -50 -KPX Atilde Gbreve -50 -KPX Atilde Gcommaaccent -50 -KPX Atilde O -40 -KPX Atilde Oacute -40 -KPX Atilde Ocircumflex -40 -KPX Atilde Odieresis -40 -KPX Atilde Ograve -40 -KPX Atilde Ohungarumlaut -40 -KPX Atilde Omacron -40 -KPX Atilde Oslash -40 -KPX Atilde Otilde -40 -KPX Atilde Q -40 -KPX Atilde T -90 -KPX Atilde Tcaron -90 -KPX Atilde Tcommaaccent -90 -KPX Atilde U -50 -KPX Atilde Uacute -50 -KPX Atilde Ucircumflex -50 -KPX Atilde Udieresis -50 -KPX Atilde Ugrave -50 -KPX Atilde Uhungarumlaut -50 -KPX Atilde Umacron -50 -KPX Atilde Uogonek -50 -KPX Atilde Uring -50 -KPX Atilde V -80 -KPX Atilde W -60 -KPX Atilde Y -110 -KPX Atilde Yacute -110 -KPX Atilde Ydieresis -110 -KPX Atilde u -30 -KPX Atilde uacute -30 -KPX Atilde ucircumflex -30 -KPX Atilde udieresis -30 -KPX Atilde ugrave -30 -KPX Atilde uhungarumlaut -30 -KPX Atilde umacron -30 -KPX Atilde uogonek -30 -KPX Atilde uring -30 -KPX Atilde v -40 -KPX Atilde w -30 -KPX Atilde y -30 -KPX Atilde yacute -30 -KPX Atilde ydieresis -30 -KPX B A -30 -KPX B Aacute -30 -KPX B Abreve -30 -KPX B Acircumflex -30 -KPX B Adieresis -30 -KPX B Agrave -30 -KPX B Amacron -30 -KPX B Aogonek -30 -KPX B Aring -30 -KPX B Atilde -30 -KPX B U -10 -KPX B Uacute -10 -KPX B Ucircumflex -10 -KPX B Udieresis -10 -KPX B Ugrave -10 -KPX B Uhungarumlaut -10 -KPX B Umacron -10 -KPX B Uogonek -10 -KPX B Uring -10 -KPX D A -40 -KPX D Aacute -40 -KPX D Abreve -40 -KPX D Acircumflex -40 -KPX D Adieresis -40 -KPX D Agrave -40 -KPX D Amacron -40 -KPX D Aogonek -40 -KPX D Aring -40 -KPX D Atilde -40 -KPX D V -40 -KPX D W -40 -KPX D Y -70 -KPX D Yacute -70 -KPX D Ydieresis -70 -KPX D comma -30 -KPX D period -30 -KPX Dcaron A -40 -KPX Dcaron Aacute -40 -KPX Dcaron Abreve -40 -KPX Dcaron Acircumflex -40 -KPX Dcaron Adieresis -40 -KPX Dcaron Agrave -40 -KPX Dcaron Amacron -40 -KPX Dcaron Aogonek -40 -KPX Dcaron Aring -40 -KPX Dcaron Atilde -40 -KPX Dcaron V -40 -KPX Dcaron W -40 -KPX Dcaron Y -70 -KPX Dcaron Yacute -70 -KPX Dcaron Ydieresis -70 -KPX Dcaron comma -30 -KPX Dcaron period -30 -KPX Dcroat A -40 -KPX Dcroat Aacute -40 -KPX Dcroat Abreve -40 -KPX Dcroat Acircumflex -40 -KPX Dcroat Adieresis -40 -KPX Dcroat Agrave -40 -KPX Dcroat Amacron -40 -KPX Dcroat Aogonek -40 -KPX Dcroat Aring -40 -KPX Dcroat Atilde -40 -KPX Dcroat V -40 -KPX Dcroat W -40 -KPX Dcroat Y -70 -KPX Dcroat Yacute -70 -KPX Dcroat Ydieresis -70 -KPX Dcroat comma -30 -KPX Dcroat period -30 -KPX F A -80 -KPX F Aacute -80 -KPX F Abreve -80 -KPX F Acircumflex -80 -KPX F Adieresis -80 -KPX F Agrave -80 -KPX F Amacron -80 -KPX F Aogonek -80 -KPX F Aring -80 -KPX F Atilde -80 -KPX F a -20 -KPX F aacute -20 -KPX F abreve -20 -KPX F acircumflex -20 -KPX F adieresis -20 -KPX F agrave -20 -KPX F amacron -20 -KPX F aogonek -20 -KPX F aring -20 -KPX F atilde -20 -KPX F comma -100 -KPX F period -100 -KPX J A -20 -KPX J Aacute -20 -KPX J Abreve -20 -KPX J Acircumflex -20 -KPX J Adieresis -20 -KPX J Agrave -20 -KPX J Amacron -20 -KPX J Aogonek -20 -KPX J Aring -20 -KPX J Atilde -20 -KPX J comma -20 -KPX J period -20 -KPX J u -20 -KPX J uacute -20 -KPX J ucircumflex -20 -KPX J udieresis -20 -KPX J ugrave -20 -KPX J uhungarumlaut -20 -KPX J umacron -20 -KPX J uogonek -20 -KPX J uring -20 -KPX K O -30 -KPX K Oacute -30 -KPX K Ocircumflex -30 -KPX K Odieresis -30 -KPX K Ograve -30 -KPX K Ohungarumlaut -30 -KPX K Omacron -30 -KPX K Oslash -30 -KPX K Otilde -30 -KPX K e -15 -KPX K eacute -15 -KPX K ecaron -15 -KPX K ecircumflex -15 -KPX K edieresis -15 -KPX K edotaccent -15 -KPX K egrave -15 -KPX K emacron -15 -KPX K eogonek -15 -KPX K o -35 -KPX K oacute -35 -KPX K ocircumflex -35 -KPX K odieresis -35 -KPX K ograve -35 -KPX K ohungarumlaut -35 -KPX K omacron -35 -KPX K oslash -35 -KPX K otilde -35 -KPX K u -30 -KPX K uacute -30 -KPX K ucircumflex -30 -KPX K udieresis -30 -KPX K ugrave -30 -KPX K uhungarumlaut -30 -KPX K umacron -30 -KPX K uogonek -30 -KPX K uring -30 -KPX K y -40 -KPX K yacute -40 -KPX K ydieresis -40 -KPX Kcommaaccent O -30 -KPX Kcommaaccent Oacute -30 -KPX Kcommaaccent Ocircumflex -30 -KPX Kcommaaccent Odieresis -30 -KPX Kcommaaccent Ograve -30 -KPX Kcommaaccent Ohungarumlaut -30 -KPX Kcommaaccent Omacron -30 -KPX Kcommaaccent Oslash -30 -KPX Kcommaaccent Otilde -30 -KPX Kcommaaccent e -15 -KPX Kcommaaccent eacute -15 -KPX Kcommaaccent ecaron -15 -KPX Kcommaaccent ecircumflex -15 -KPX Kcommaaccent edieresis -15 -KPX Kcommaaccent edotaccent -15 -KPX Kcommaaccent egrave -15 -KPX Kcommaaccent emacron -15 -KPX Kcommaaccent eogonek -15 -KPX Kcommaaccent o -35 -KPX Kcommaaccent oacute -35 -KPX Kcommaaccent ocircumflex -35 -KPX Kcommaaccent odieresis -35 -KPX Kcommaaccent ograve -35 -KPX Kcommaaccent ohungarumlaut -35 -KPX Kcommaaccent omacron -35 -KPX Kcommaaccent oslash -35 -KPX Kcommaaccent otilde -35 -KPX Kcommaaccent u -30 -KPX Kcommaaccent uacute -30 -KPX Kcommaaccent ucircumflex -30 -KPX Kcommaaccent udieresis -30 -KPX Kcommaaccent ugrave -30 -KPX Kcommaaccent uhungarumlaut -30 -KPX Kcommaaccent umacron -30 -KPX Kcommaaccent uogonek -30 -KPX Kcommaaccent uring -30 -KPX Kcommaaccent y -40 -KPX Kcommaaccent yacute -40 -KPX Kcommaaccent ydieresis -40 -KPX L T -90 -KPX L Tcaron -90 -KPX L Tcommaaccent -90 -KPX L V -110 -KPX L W -80 -KPX L Y -120 -KPX L Yacute -120 -KPX L Ydieresis -120 -KPX L quotedblright -140 -KPX L quoteright -140 -KPX L y -30 -KPX L yacute -30 -KPX L ydieresis -30 -KPX Lacute T -90 -KPX Lacute Tcaron -90 -KPX Lacute Tcommaaccent -90 -KPX Lacute V -110 -KPX Lacute W -80 -KPX Lacute Y -120 -KPX Lacute Yacute -120 -KPX Lacute Ydieresis -120 -KPX Lacute quotedblright -140 -KPX Lacute quoteright -140 -KPX Lacute y -30 -KPX Lacute yacute -30 -KPX Lacute ydieresis -30 -KPX Lcommaaccent T -90 -KPX Lcommaaccent Tcaron -90 -KPX Lcommaaccent Tcommaaccent -90 -KPX Lcommaaccent V -110 -KPX Lcommaaccent W -80 -KPX Lcommaaccent Y -120 -KPX Lcommaaccent Yacute -120 -KPX Lcommaaccent Ydieresis -120 -KPX Lcommaaccent quotedblright -140 -KPX Lcommaaccent quoteright -140 -KPX Lcommaaccent y -30 -KPX Lcommaaccent yacute -30 -KPX Lcommaaccent ydieresis -30 -KPX Lslash T -90 -KPX Lslash Tcaron -90 -KPX Lslash Tcommaaccent -90 -KPX Lslash V -110 -KPX Lslash W -80 -KPX Lslash Y -120 -KPX Lslash Yacute -120 -KPX Lslash Ydieresis -120 -KPX Lslash quotedblright -140 -KPX Lslash quoteright -140 -KPX Lslash y -30 -KPX Lslash yacute -30 -KPX Lslash ydieresis -30 -KPX O A -50 -KPX O Aacute -50 -KPX O Abreve -50 -KPX O Acircumflex -50 -KPX O Adieresis -50 -KPX O Agrave -50 -KPX O Amacron -50 -KPX O Aogonek -50 -KPX O Aring -50 -KPX O Atilde -50 -KPX O T -40 -KPX O Tcaron -40 -KPX O Tcommaaccent -40 -KPX O V -50 -KPX O W -50 -KPX O X -50 -KPX O Y -70 -KPX O Yacute -70 -KPX O Ydieresis -70 -KPX O comma -40 -KPX O period -40 -KPX Oacute A -50 -KPX Oacute Aacute -50 -KPX Oacute Abreve -50 -KPX Oacute Acircumflex -50 -KPX Oacute Adieresis -50 -KPX Oacute Agrave -50 -KPX Oacute Amacron -50 -KPX Oacute Aogonek -50 -KPX Oacute Aring -50 -KPX Oacute Atilde -50 -KPX Oacute T -40 -KPX Oacute Tcaron -40 -KPX Oacute Tcommaaccent -40 -KPX Oacute V -50 -KPX Oacute W -50 -KPX Oacute X -50 -KPX Oacute Y -70 -KPX Oacute Yacute -70 -KPX Oacute Ydieresis -70 -KPX Oacute comma -40 -KPX Oacute period -40 -KPX Ocircumflex A -50 -KPX Ocircumflex Aacute -50 -KPX Ocircumflex Abreve -50 -KPX Ocircumflex Acircumflex -50 -KPX Ocircumflex Adieresis -50 -KPX Ocircumflex Agrave -50 -KPX Ocircumflex Amacron -50 -KPX Ocircumflex Aogonek -50 -KPX Ocircumflex Aring -50 -KPX Ocircumflex Atilde -50 -KPX Ocircumflex T -40 -KPX Ocircumflex Tcaron -40 -KPX Ocircumflex Tcommaaccent -40 -KPX Ocircumflex V -50 -KPX Ocircumflex W -50 -KPX Ocircumflex X -50 -KPX Ocircumflex Y -70 -KPX Ocircumflex Yacute -70 -KPX Ocircumflex Ydieresis -70 -KPX Ocircumflex comma -40 -KPX Ocircumflex period -40 -KPX Odieresis A -50 -KPX Odieresis Aacute -50 -KPX Odieresis Abreve -50 -KPX Odieresis Acircumflex -50 -KPX Odieresis Adieresis -50 -KPX Odieresis Agrave -50 -KPX Odieresis Amacron -50 -KPX Odieresis Aogonek -50 -KPX Odieresis Aring -50 -KPX Odieresis Atilde -50 -KPX Odieresis T -40 -KPX Odieresis Tcaron -40 -KPX Odieresis Tcommaaccent -40 -KPX Odieresis V -50 -KPX Odieresis W -50 -KPX Odieresis X -50 -KPX Odieresis Y -70 -KPX Odieresis Yacute -70 -KPX Odieresis Ydieresis -70 -KPX Odieresis comma -40 -KPX Odieresis period -40 -KPX Ograve A -50 -KPX Ograve Aacute -50 -KPX Ograve Abreve -50 -KPX Ograve Acircumflex -50 -KPX Ograve Adieresis -50 -KPX Ograve Agrave -50 -KPX Ograve Amacron -50 -KPX Ograve Aogonek -50 -KPX Ograve Aring -50 -KPX Ograve Atilde -50 -KPX Ograve T -40 -KPX Ograve Tcaron -40 -KPX Ograve Tcommaaccent -40 -KPX Ograve V -50 -KPX Ograve W -50 -KPX Ograve X -50 -KPX Ograve Y -70 -KPX Ograve Yacute -70 -KPX Ograve Ydieresis -70 -KPX Ograve comma -40 -KPX Ograve period -40 -KPX Ohungarumlaut A -50 -KPX Ohungarumlaut Aacute -50 -KPX Ohungarumlaut Abreve -50 -KPX Ohungarumlaut Acircumflex -50 -KPX Ohungarumlaut Adieresis -50 -KPX Ohungarumlaut Agrave -50 -KPX Ohungarumlaut Amacron -50 -KPX Ohungarumlaut Aogonek -50 -KPX Ohungarumlaut Aring -50 -KPX Ohungarumlaut Atilde -50 -KPX Ohungarumlaut T -40 -KPX Ohungarumlaut Tcaron -40 -KPX Ohungarumlaut Tcommaaccent -40 -KPX Ohungarumlaut V -50 -KPX Ohungarumlaut W -50 -KPX Ohungarumlaut X -50 -KPX Ohungarumlaut Y -70 -KPX Ohungarumlaut Yacute -70 -KPX Ohungarumlaut Ydieresis -70 -KPX Ohungarumlaut comma -40 -KPX Ohungarumlaut period -40 -KPX Omacron A -50 -KPX Omacron Aacute -50 -KPX Omacron Abreve -50 -KPX Omacron Acircumflex -50 -KPX Omacron Adieresis -50 -KPX Omacron Agrave -50 -KPX Omacron Amacron -50 -KPX Omacron Aogonek -50 -KPX Omacron Aring -50 -KPX Omacron Atilde -50 -KPX Omacron T -40 -KPX Omacron Tcaron -40 -KPX Omacron Tcommaaccent -40 -KPX Omacron V -50 -KPX Omacron W -50 -KPX Omacron X -50 -KPX Omacron Y -70 -KPX Omacron Yacute -70 -KPX Omacron Ydieresis -70 -KPX Omacron comma -40 -KPX Omacron period -40 -KPX Oslash A -50 -KPX Oslash Aacute -50 -KPX Oslash Abreve -50 -KPX Oslash Acircumflex -50 -KPX Oslash Adieresis -50 -KPX Oslash Agrave -50 -KPX Oslash Amacron -50 -KPX Oslash Aogonek -50 -KPX Oslash Aring -50 -KPX Oslash Atilde -50 -KPX Oslash T -40 -KPX Oslash Tcaron -40 -KPX Oslash Tcommaaccent -40 -KPX Oslash V -50 -KPX Oslash W -50 -KPX Oslash X -50 -KPX Oslash Y -70 -KPX Oslash Yacute -70 -KPX Oslash Ydieresis -70 -KPX Oslash comma -40 -KPX Oslash period -40 -KPX Otilde A -50 -KPX Otilde Aacute -50 -KPX Otilde Abreve -50 -KPX Otilde Acircumflex -50 -KPX Otilde Adieresis -50 -KPX Otilde Agrave -50 -KPX Otilde Amacron -50 -KPX Otilde Aogonek -50 -KPX Otilde Aring -50 -KPX Otilde Atilde -50 -KPX Otilde T -40 -KPX Otilde Tcaron -40 -KPX Otilde Tcommaaccent -40 -KPX Otilde V -50 -KPX Otilde W -50 -KPX Otilde X -50 -KPX Otilde Y -70 -KPX Otilde Yacute -70 -KPX Otilde Ydieresis -70 -KPX Otilde comma -40 -KPX Otilde period -40 -KPX P A -100 -KPX P Aacute -100 -KPX P Abreve -100 -KPX P Acircumflex -100 -KPX P Adieresis -100 -KPX P Agrave -100 -KPX P Amacron -100 -KPX P Aogonek -100 -KPX P Aring -100 -KPX P Atilde -100 -KPX P a -30 -KPX P aacute -30 -KPX P abreve -30 -KPX P acircumflex -30 -KPX P adieresis -30 -KPX P agrave -30 -KPX P amacron -30 -KPX P aogonek -30 -KPX P aring -30 -KPX P atilde -30 -KPX P comma -120 -KPX P e -30 -KPX P eacute -30 -KPX P ecaron -30 -KPX P ecircumflex -30 -KPX P edieresis -30 -KPX P edotaccent -30 -KPX P egrave -30 -KPX P emacron -30 -KPX P eogonek -30 -KPX P o -40 -KPX P oacute -40 -KPX P ocircumflex -40 -KPX P odieresis -40 -KPX P ograve -40 -KPX P ohungarumlaut -40 -KPX P omacron -40 -KPX P oslash -40 -KPX P otilde -40 -KPX P period -120 -KPX Q U -10 -KPX Q Uacute -10 -KPX Q Ucircumflex -10 -KPX Q Udieresis -10 -KPX Q Ugrave -10 -KPX Q Uhungarumlaut -10 -KPX Q Umacron -10 -KPX Q Uogonek -10 -KPX Q Uring -10 -KPX Q comma 20 -KPX Q period 20 -KPX R O -20 -KPX R Oacute -20 -KPX R Ocircumflex -20 -KPX R Odieresis -20 -KPX R Ograve -20 -KPX R Ohungarumlaut -20 -KPX R Omacron -20 -KPX R Oslash -20 -KPX R Otilde -20 -KPX R T -20 -KPX R Tcaron -20 -KPX R Tcommaaccent -20 -KPX R U -20 -KPX R Uacute -20 -KPX R Ucircumflex -20 -KPX R Udieresis -20 -KPX R Ugrave -20 -KPX R Uhungarumlaut -20 -KPX R Umacron -20 -KPX R Uogonek -20 -KPX R Uring -20 -KPX R V -50 -KPX R W -40 -KPX R Y -50 -KPX R Yacute -50 -KPX R Ydieresis -50 -KPX Racute O -20 -KPX Racute Oacute -20 -KPX Racute Ocircumflex -20 -KPX Racute Odieresis -20 -KPX Racute Ograve -20 -KPX Racute Ohungarumlaut -20 -KPX Racute Omacron -20 -KPX Racute Oslash -20 -KPX Racute Otilde -20 -KPX Racute T -20 -KPX Racute Tcaron -20 -KPX Racute Tcommaaccent -20 -KPX Racute U -20 -KPX Racute Uacute -20 -KPX Racute Ucircumflex -20 -KPX Racute Udieresis -20 -KPX Racute Ugrave -20 -KPX Racute Uhungarumlaut -20 -KPX Racute Umacron -20 -KPX Racute Uogonek -20 -KPX Racute Uring -20 -KPX Racute V -50 -KPX Racute W -40 -KPX Racute Y -50 -KPX Racute Yacute -50 -KPX Racute Ydieresis -50 -KPX Rcaron O -20 -KPX Rcaron Oacute -20 -KPX Rcaron Ocircumflex -20 -KPX Rcaron Odieresis -20 -KPX Rcaron Ograve -20 -KPX Rcaron Ohungarumlaut -20 -KPX Rcaron Omacron -20 -KPX Rcaron Oslash -20 -KPX Rcaron Otilde -20 -KPX Rcaron T -20 -KPX Rcaron Tcaron -20 -KPX Rcaron Tcommaaccent -20 -KPX Rcaron U -20 -KPX Rcaron Uacute -20 -KPX Rcaron Ucircumflex -20 -KPX Rcaron Udieresis -20 -KPX Rcaron Ugrave -20 -KPX Rcaron Uhungarumlaut -20 -KPX Rcaron Umacron -20 -KPX Rcaron Uogonek -20 -KPX Rcaron Uring -20 -KPX Rcaron V -50 -KPX Rcaron W -40 -KPX Rcaron Y -50 -KPX Rcaron Yacute -50 -KPX Rcaron Ydieresis -50 -KPX Rcommaaccent O -20 -KPX Rcommaaccent Oacute -20 -KPX Rcommaaccent Ocircumflex -20 -KPX Rcommaaccent Odieresis -20 -KPX Rcommaaccent Ograve -20 -KPX Rcommaaccent Ohungarumlaut -20 -KPX Rcommaaccent Omacron -20 -KPX Rcommaaccent Oslash -20 -KPX Rcommaaccent Otilde -20 -KPX Rcommaaccent T -20 -KPX Rcommaaccent Tcaron -20 -KPX Rcommaaccent Tcommaaccent -20 -KPX Rcommaaccent U -20 -KPX Rcommaaccent Uacute -20 -KPX Rcommaaccent Ucircumflex -20 -KPX Rcommaaccent Udieresis -20 -KPX Rcommaaccent Ugrave -20 -KPX Rcommaaccent Uhungarumlaut -20 -KPX Rcommaaccent Umacron -20 -KPX Rcommaaccent Uogonek -20 -KPX Rcommaaccent Uring -20 -KPX Rcommaaccent V -50 -KPX Rcommaaccent W -40 -KPX Rcommaaccent Y -50 -KPX Rcommaaccent Yacute -50 -KPX Rcommaaccent Ydieresis -50 -KPX T A -90 -KPX T Aacute -90 -KPX T Abreve -90 -KPX T Acircumflex -90 -KPX T Adieresis -90 -KPX T Agrave -90 -KPX T Amacron -90 -KPX T Aogonek -90 -KPX T Aring -90 -KPX T Atilde -90 -KPX T O -40 -KPX T Oacute -40 -KPX T Ocircumflex -40 -KPX T Odieresis -40 -KPX T Ograve -40 -KPX T Ohungarumlaut -40 -KPX T Omacron -40 -KPX T Oslash -40 -KPX T Otilde -40 -KPX T a -80 -KPX T aacute -80 -KPX T abreve -80 -KPX T acircumflex -80 -KPX T adieresis -80 -KPX T agrave -80 -KPX T amacron -80 -KPX T aogonek -80 -KPX T aring -80 -KPX T atilde -80 -KPX T colon -40 -KPX T comma -80 -KPX T e -60 -KPX T eacute -60 -KPX T ecaron -60 -KPX T ecircumflex -60 -KPX T edieresis -60 -KPX T edotaccent -60 -KPX T egrave -60 -KPX T emacron -60 -KPX T eogonek -60 -KPX T hyphen -120 -KPX T o -80 -KPX T oacute -80 -KPX T ocircumflex -80 -KPX T odieresis -80 -KPX T ograve -80 -KPX T ohungarumlaut -80 -KPX T omacron -80 -KPX T oslash -80 -KPX T otilde -80 -KPX T period -80 -KPX T r -80 -KPX T racute -80 -KPX T rcommaaccent -80 -KPX T semicolon -40 -KPX T u -90 -KPX T uacute -90 -KPX T ucircumflex -90 -KPX T udieresis -90 -KPX T ugrave -90 -KPX T uhungarumlaut -90 -KPX T umacron -90 -KPX T uogonek -90 -KPX T uring -90 -KPX T w -60 -KPX T y -60 -KPX T yacute -60 -KPX T ydieresis -60 -KPX Tcaron A -90 -KPX Tcaron Aacute -90 -KPX Tcaron Abreve -90 -KPX Tcaron Acircumflex -90 -KPX Tcaron Adieresis -90 -KPX Tcaron Agrave -90 -KPX Tcaron Amacron -90 -KPX Tcaron Aogonek -90 -KPX Tcaron Aring -90 -KPX Tcaron Atilde -90 -KPX Tcaron O -40 -KPX Tcaron Oacute -40 -KPX Tcaron Ocircumflex -40 -KPX Tcaron Odieresis -40 -KPX Tcaron Ograve -40 -KPX Tcaron Ohungarumlaut -40 -KPX Tcaron Omacron -40 -KPX Tcaron Oslash -40 -KPX Tcaron Otilde -40 -KPX Tcaron a -80 -KPX Tcaron aacute -80 -KPX Tcaron abreve -80 -KPX Tcaron acircumflex -80 -KPX Tcaron adieresis -80 -KPX Tcaron agrave -80 -KPX Tcaron amacron -80 -KPX Tcaron aogonek -80 -KPX Tcaron aring -80 -KPX Tcaron atilde -80 -KPX Tcaron colon -40 -KPX Tcaron comma -80 -KPX Tcaron e -60 -KPX Tcaron eacute -60 -KPX Tcaron ecaron -60 -KPX Tcaron ecircumflex -60 -KPX Tcaron edieresis -60 -KPX Tcaron edotaccent -60 -KPX Tcaron egrave -60 -KPX Tcaron emacron -60 -KPX Tcaron eogonek -60 -KPX Tcaron hyphen -120 -KPX Tcaron o -80 -KPX Tcaron oacute -80 -KPX Tcaron ocircumflex -80 -KPX Tcaron odieresis -80 -KPX Tcaron ograve -80 -KPX Tcaron ohungarumlaut -80 -KPX Tcaron omacron -80 -KPX Tcaron oslash -80 -KPX Tcaron otilde -80 -KPX Tcaron period -80 -KPX Tcaron r -80 -KPX Tcaron racute -80 -KPX Tcaron rcommaaccent -80 -KPX Tcaron semicolon -40 -KPX Tcaron u -90 -KPX Tcaron uacute -90 -KPX Tcaron ucircumflex -90 -KPX Tcaron udieresis -90 -KPX Tcaron ugrave -90 -KPX Tcaron uhungarumlaut -90 -KPX Tcaron umacron -90 -KPX Tcaron uogonek -90 -KPX Tcaron uring -90 -KPX Tcaron w -60 -KPX Tcaron y -60 -KPX Tcaron yacute -60 -KPX Tcaron ydieresis -60 -KPX Tcommaaccent A -90 -KPX Tcommaaccent Aacute -90 -KPX Tcommaaccent Abreve -90 -KPX Tcommaaccent Acircumflex -90 -KPX Tcommaaccent Adieresis -90 -KPX Tcommaaccent Agrave -90 -KPX Tcommaaccent Amacron -90 -KPX Tcommaaccent Aogonek -90 -KPX Tcommaaccent Aring -90 -KPX Tcommaaccent Atilde -90 -KPX Tcommaaccent O -40 -KPX Tcommaaccent Oacute -40 -KPX Tcommaaccent Ocircumflex -40 -KPX Tcommaaccent Odieresis -40 -KPX Tcommaaccent Ograve -40 -KPX Tcommaaccent Ohungarumlaut -40 -KPX Tcommaaccent Omacron -40 -KPX Tcommaaccent Oslash -40 -KPX Tcommaaccent Otilde -40 -KPX Tcommaaccent a -80 -KPX Tcommaaccent aacute -80 -KPX Tcommaaccent abreve -80 -KPX Tcommaaccent acircumflex -80 -KPX Tcommaaccent adieresis -80 -KPX Tcommaaccent agrave -80 -KPX Tcommaaccent amacron -80 -KPX Tcommaaccent aogonek -80 -KPX Tcommaaccent aring -80 -KPX Tcommaaccent atilde -80 -KPX Tcommaaccent colon -40 -KPX Tcommaaccent comma -80 -KPX Tcommaaccent e -60 -KPX Tcommaaccent eacute -60 -KPX Tcommaaccent ecaron -60 -KPX Tcommaaccent ecircumflex -60 -KPX Tcommaaccent edieresis -60 -KPX Tcommaaccent edotaccent -60 -KPX Tcommaaccent egrave -60 -KPX Tcommaaccent emacron -60 -KPX Tcommaaccent eogonek -60 -KPX Tcommaaccent hyphen -120 -KPX Tcommaaccent o -80 -KPX Tcommaaccent oacute -80 -KPX Tcommaaccent ocircumflex -80 -KPX Tcommaaccent odieresis -80 -KPX Tcommaaccent ograve -80 -KPX Tcommaaccent ohungarumlaut -80 -KPX Tcommaaccent omacron -80 -KPX Tcommaaccent oslash -80 -KPX Tcommaaccent otilde -80 -KPX Tcommaaccent period -80 -KPX Tcommaaccent r -80 -KPX Tcommaaccent racute -80 -KPX Tcommaaccent rcommaaccent -80 -KPX Tcommaaccent semicolon -40 -KPX Tcommaaccent u -90 -KPX Tcommaaccent uacute -90 -KPX Tcommaaccent ucircumflex -90 -KPX Tcommaaccent udieresis -90 -KPX Tcommaaccent ugrave -90 -KPX Tcommaaccent uhungarumlaut -90 -KPX Tcommaaccent umacron -90 -KPX Tcommaaccent uogonek -90 -KPX Tcommaaccent uring -90 -KPX Tcommaaccent w -60 -KPX Tcommaaccent y -60 -KPX Tcommaaccent yacute -60 -KPX Tcommaaccent ydieresis -60 -KPX U A -50 -KPX U Aacute -50 -KPX U Abreve -50 -KPX U Acircumflex -50 -KPX U Adieresis -50 -KPX U Agrave -50 -KPX U Amacron -50 -KPX U Aogonek -50 -KPX U Aring -50 -KPX U Atilde -50 -KPX U comma -30 -KPX U period -30 -KPX Uacute A -50 -KPX Uacute Aacute -50 -KPX Uacute Abreve -50 -KPX Uacute Acircumflex -50 -KPX Uacute Adieresis -50 -KPX Uacute Agrave -50 -KPX Uacute Amacron -50 -KPX Uacute Aogonek -50 -KPX Uacute Aring -50 -KPX Uacute Atilde -50 -KPX Uacute comma -30 -KPX Uacute period -30 -KPX Ucircumflex A -50 -KPX Ucircumflex Aacute -50 -KPX Ucircumflex Abreve -50 -KPX Ucircumflex Acircumflex -50 -KPX Ucircumflex Adieresis -50 -KPX Ucircumflex Agrave -50 -KPX Ucircumflex Amacron -50 -KPX Ucircumflex Aogonek -50 -KPX Ucircumflex Aring -50 -KPX Ucircumflex Atilde -50 -KPX Ucircumflex comma -30 -KPX Ucircumflex period -30 -KPX Udieresis A -50 -KPX Udieresis Aacute -50 -KPX Udieresis Abreve -50 -KPX Udieresis Acircumflex -50 -KPX Udieresis Adieresis -50 -KPX Udieresis Agrave -50 -KPX Udieresis Amacron -50 -KPX Udieresis Aogonek -50 -KPX Udieresis Aring -50 -KPX Udieresis Atilde -50 -KPX Udieresis comma -30 -KPX Udieresis period -30 -KPX Ugrave A -50 -KPX Ugrave Aacute -50 -KPX Ugrave Abreve -50 -KPX Ugrave Acircumflex -50 -KPX Ugrave Adieresis -50 -KPX Ugrave Agrave -50 -KPX Ugrave Amacron -50 -KPX Ugrave Aogonek -50 -KPX Ugrave Aring -50 -KPX Ugrave Atilde -50 -KPX Ugrave comma -30 -KPX Ugrave period -30 -KPX Uhungarumlaut A -50 -KPX Uhungarumlaut Aacute -50 -KPX Uhungarumlaut Abreve -50 -KPX Uhungarumlaut Acircumflex -50 -KPX Uhungarumlaut Adieresis -50 -KPX Uhungarumlaut Agrave -50 -KPX Uhungarumlaut Amacron -50 -KPX Uhungarumlaut Aogonek -50 -KPX Uhungarumlaut Aring -50 -KPX Uhungarumlaut Atilde -50 -KPX Uhungarumlaut comma -30 -KPX Uhungarumlaut period -30 -KPX Umacron A -50 -KPX Umacron Aacute -50 -KPX Umacron Abreve -50 -KPX Umacron Acircumflex -50 -KPX Umacron Adieresis -50 -KPX Umacron Agrave -50 -KPX Umacron Amacron -50 -KPX Umacron Aogonek -50 -KPX Umacron Aring -50 -KPX Umacron Atilde -50 -KPX Umacron comma -30 -KPX Umacron period -30 -KPX Uogonek A -50 -KPX Uogonek Aacute -50 -KPX Uogonek Abreve -50 -KPX Uogonek Acircumflex -50 -KPX Uogonek Adieresis -50 -KPX Uogonek Agrave -50 -KPX Uogonek Amacron -50 -KPX Uogonek Aogonek -50 -KPX Uogonek Aring -50 -KPX Uogonek Atilde -50 -KPX Uogonek comma -30 -KPX Uogonek period -30 -KPX Uring A -50 -KPX Uring Aacute -50 -KPX Uring Abreve -50 -KPX Uring Acircumflex -50 -KPX Uring Adieresis -50 -KPX Uring Agrave -50 -KPX Uring Amacron -50 -KPX Uring Aogonek -50 -KPX Uring Aring -50 -KPX Uring Atilde -50 -KPX Uring comma -30 -KPX Uring period -30 -KPX V A -80 -KPX V Aacute -80 -KPX V Abreve -80 -KPX V Acircumflex -80 -KPX V Adieresis -80 -KPX V Agrave -80 -KPX V Amacron -80 -KPX V Aogonek -80 -KPX V Aring -80 -KPX V Atilde -80 -KPX V G -50 -KPX V Gbreve -50 -KPX V Gcommaaccent -50 -KPX V O -50 -KPX V Oacute -50 -KPX V Ocircumflex -50 -KPX V Odieresis -50 -KPX V Ograve -50 -KPX V Ohungarumlaut -50 -KPX V Omacron -50 -KPX V Oslash -50 -KPX V Otilde -50 -KPX V a -60 -KPX V aacute -60 -KPX V abreve -60 -KPX V acircumflex -60 -KPX V adieresis -60 -KPX V agrave -60 -KPX V amacron -60 -KPX V aogonek -60 -KPX V aring -60 -KPX V atilde -60 -KPX V colon -40 -KPX V comma -120 -KPX V e -50 -KPX V eacute -50 -KPX V ecaron -50 -KPX V ecircumflex -50 -KPX V edieresis -50 -KPX V edotaccent -50 -KPX V egrave -50 -KPX V emacron -50 -KPX V eogonek -50 -KPX V hyphen -80 -KPX V o -90 -KPX V oacute -90 -KPX V ocircumflex -90 -KPX V odieresis -90 -KPX V ograve -90 -KPX V ohungarumlaut -90 -KPX V omacron -90 -KPX V oslash -90 -KPX V otilde -90 -KPX V period -120 -KPX V semicolon -40 -KPX V u -60 -KPX V uacute -60 -KPX V ucircumflex -60 -KPX V udieresis -60 -KPX V ugrave -60 -KPX V uhungarumlaut -60 -KPX V umacron -60 -KPX V uogonek -60 -KPX V uring -60 -KPX W A -60 -KPX W Aacute -60 -KPX W Abreve -60 -KPX W Acircumflex -60 -KPX W Adieresis -60 -KPX W Agrave -60 -KPX W Amacron -60 -KPX W Aogonek -60 -KPX W Aring -60 -KPX W Atilde -60 -KPX W O -20 -KPX W Oacute -20 -KPX W Ocircumflex -20 -KPX W Odieresis -20 -KPX W Ograve -20 -KPX W Ohungarumlaut -20 -KPX W Omacron -20 -KPX W Oslash -20 -KPX W Otilde -20 -KPX W a -40 -KPX W aacute -40 -KPX W abreve -40 -KPX W acircumflex -40 -KPX W adieresis -40 -KPX W agrave -40 -KPX W amacron -40 -KPX W aogonek -40 -KPX W aring -40 -KPX W atilde -40 -KPX W colon -10 -KPX W comma -80 -KPX W e -35 -KPX W eacute -35 -KPX W ecaron -35 -KPX W ecircumflex -35 -KPX W edieresis -35 -KPX W edotaccent -35 -KPX W egrave -35 -KPX W emacron -35 -KPX W eogonek -35 -KPX W hyphen -40 -KPX W o -60 -KPX W oacute -60 -KPX W ocircumflex -60 -KPX W odieresis -60 -KPX W ograve -60 -KPX W ohungarumlaut -60 -KPX W omacron -60 -KPX W oslash -60 -KPX W otilde -60 -KPX W period -80 -KPX W semicolon -10 -KPX W u -45 -KPX W uacute -45 -KPX W ucircumflex -45 -KPX W udieresis -45 -KPX W ugrave -45 -KPX W uhungarumlaut -45 -KPX W umacron -45 -KPX W uogonek -45 -KPX W uring -45 -KPX W y -20 -KPX W yacute -20 -KPX W ydieresis -20 -KPX Y A -110 -KPX Y Aacute -110 -KPX Y Abreve -110 -KPX Y Acircumflex -110 -KPX Y Adieresis -110 -KPX Y Agrave -110 -KPX Y Amacron -110 -KPX Y Aogonek -110 -KPX Y Aring -110 -KPX Y Atilde -110 -KPX Y O -70 -KPX Y Oacute -70 -KPX Y Ocircumflex -70 -KPX Y Odieresis -70 -KPX Y Ograve -70 -KPX Y Ohungarumlaut -70 -KPX Y Omacron -70 -KPX Y Oslash -70 -KPX Y Otilde -70 -KPX Y a -90 -KPX Y aacute -90 -KPX Y abreve -90 -KPX Y acircumflex -90 -KPX Y adieresis -90 -KPX Y agrave -90 -KPX Y amacron -90 -KPX Y aogonek -90 -KPX Y aring -90 -KPX Y atilde -90 -KPX Y colon -50 -KPX Y comma -100 -KPX Y e -80 -KPX Y eacute -80 -KPX Y ecaron -80 -KPX Y ecircumflex -80 -KPX Y edieresis -80 -KPX Y edotaccent -80 -KPX Y egrave -80 -KPX Y emacron -80 -KPX Y eogonek -80 -KPX Y o -100 -KPX Y oacute -100 -KPX Y ocircumflex -100 -KPX Y odieresis -100 -KPX Y ograve -100 -KPX Y ohungarumlaut -100 -KPX Y omacron -100 -KPX Y oslash -100 -KPX Y otilde -100 -KPX Y period -100 -KPX Y semicolon -50 -KPX Y u -100 -KPX Y uacute -100 -KPX Y ucircumflex -100 -KPX Y udieresis -100 -KPX Y ugrave -100 -KPX Y uhungarumlaut -100 -KPX Y umacron -100 -KPX Y uogonek -100 -KPX Y uring -100 -KPX Yacute A -110 -KPX Yacute Aacute -110 -KPX Yacute Abreve -110 -KPX Yacute Acircumflex -110 -KPX Yacute Adieresis -110 -KPX Yacute Agrave -110 -KPX Yacute Amacron -110 -KPX Yacute Aogonek -110 -KPX Yacute Aring -110 -KPX Yacute Atilde -110 -KPX Yacute O -70 -KPX Yacute Oacute -70 -KPX Yacute Ocircumflex -70 -KPX Yacute Odieresis -70 -KPX Yacute Ograve -70 -KPX Yacute Ohungarumlaut -70 -KPX Yacute Omacron -70 -KPX Yacute Oslash -70 -KPX Yacute Otilde -70 -KPX Yacute a -90 -KPX Yacute aacute -90 -KPX Yacute abreve -90 -KPX Yacute acircumflex -90 -KPX Yacute adieresis -90 -KPX Yacute agrave -90 -KPX Yacute amacron -90 -KPX Yacute aogonek -90 -KPX Yacute aring -90 -KPX Yacute atilde -90 -KPX Yacute colon -50 -KPX Yacute comma -100 -KPX Yacute e -80 -KPX Yacute eacute -80 -KPX Yacute ecaron -80 -KPX Yacute ecircumflex -80 -KPX Yacute edieresis -80 -KPX Yacute edotaccent -80 -KPX Yacute egrave -80 -KPX Yacute emacron -80 -KPX Yacute eogonek -80 -KPX Yacute o -100 -KPX Yacute oacute -100 -KPX Yacute ocircumflex -100 -KPX Yacute odieresis -100 -KPX Yacute ograve -100 -KPX Yacute ohungarumlaut -100 -KPX Yacute omacron -100 -KPX Yacute oslash -100 -KPX Yacute otilde -100 -KPX Yacute period -100 -KPX Yacute semicolon -50 -KPX Yacute u -100 -KPX Yacute uacute -100 -KPX Yacute ucircumflex -100 -KPX Yacute udieresis -100 -KPX Yacute ugrave -100 -KPX Yacute uhungarumlaut -100 -KPX Yacute umacron -100 -KPX Yacute uogonek -100 -KPX Yacute uring -100 -KPX Ydieresis A -110 -KPX Ydieresis Aacute -110 -KPX Ydieresis Abreve -110 -KPX Ydieresis Acircumflex -110 -KPX Ydieresis Adieresis -110 -KPX Ydieresis Agrave -110 -KPX Ydieresis Amacron -110 -KPX Ydieresis Aogonek -110 -KPX Ydieresis Aring -110 -KPX Ydieresis Atilde -110 -KPX Ydieresis O -70 -KPX Ydieresis Oacute -70 -KPX Ydieresis Ocircumflex -70 -KPX Ydieresis Odieresis -70 -KPX Ydieresis Ograve -70 -KPX Ydieresis Ohungarumlaut -70 -KPX Ydieresis Omacron -70 -KPX Ydieresis Oslash -70 -KPX Ydieresis Otilde -70 -KPX Ydieresis a -90 -KPX Ydieresis aacute -90 -KPX Ydieresis abreve -90 -KPX Ydieresis acircumflex -90 -KPX Ydieresis adieresis -90 -KPX Ydieresis agrave -90 -KPX Ydieresis amacron -90 -KPX Ydieresis aogonek -90 -KPX Ydieresis aring -90 -KPX Ydieresis atilde -90 -KPX Ydieresis colon -50 -KPX Ydieresis comma -100 -KPX Ydieresis e -80 -KPX Ydieresis eacute -80 -KPX Ydieresis ecaron -80 -KPX Ydieresis ecircumflex -80 -KPX Ydieresis edieresis -80 -KPX Ydieresis edotaccent -80 -KPX Ydieresis egrave -80 -KPX Ydieresis emacron -80 -KPX Ydieresis eogonek -80 -KPX Ydieresis o -100 -KPX Ydieresis oacute -100 -KPX Ydieresis ocircumflex -100 -KPX Ydieresis odieresis -100 -KPX Ydieresis ograve -100 -KPX Ydieresis ohungarumlaut -100 -KPX Ydieresis omacron -100 -KPX Ydieresis oslash -100 -KPX Ydieresis otilde -100 -KPX Ydieresis period -100 -KPX Ydieresis semicolon -50 -KPX Ydieresis u -100 -KPX Ydieresis uacute -100 -KPX Ydieresis ucircumflex -100 -KPX Ydieresis udieresis -100 -KPX Ydieresis ugrave -100 -KPX Ydieresis uhungarumlaut -100 -KPX Ydieresis umacron -100 -KPX Ydieresis uogonek -100 -KPX Ydieresis uring -100 -KPX a g -10 -KPX a gbreve -10 -KPX a gcommaaccent -10 -KPX a v -15 -KPX a w -15 -KPX a y -20 -KPX a yacute -20 -KPX a ydieresis -20 -KPX aacute g -10 -KPX aacute gbreve -10 -KPX aacute gcommaaccent -10 -KPX aacute v -15 -KPX aacute w -15 -KPX aacute y -20 -KPX aacute yacute -20 -KPX aacute ydieresis -20 -KPX abreve g -10 -KPX abreve gbreve -10 -KPX abreve gcommaaccent -10 -KPX abreve v -15 -KPX abreve w -15 -KPX abreve y -20 -KPX abreve yacute -20 -KPX abreve ydieresis -20 -KPX acircumflex g -10 -KPX acircumflex gbreve -10 -KPX acircumflex gcommaaccent -10 -KPX acircumflex v -15 -KPX acircumflex w -15 -KPX acircumflex y -20 -KPX acircumflex yacute -20 -KPX acircumflex ydieresis -20 -KPX adieresis g -10 -KPX adieresis gbreve -10 -KPX adieresis gcommaaccent -10 -KPX adieresis v -15 -KPX adieresis w -15 -KPX adieresis y -20 -KPX adieresis yacute -20 -KPX adieresis ydieresis -20 -KPX agrave g -10 -KPX agrave gbreve -10 -KPX agrave gcommaaccent -10 -KPX agrave v -15 -KPX agrave w -15 -KPX agrave y -20 -KPX agrave yacute -20 -KPX agrave ydieresis -20 -KPX amacron g -10 -KPX amacron gbreve -10 -KPX amacron gcommaaccent -10 -KPX amacron v -15 -KPX amacron w -15 -KPX amacron y -20 -KPX amacron yacute -20 -KPX amacron ydieresis -20 -KPX aogonek g -10 -KPX aogonek gbreve -10 -KPX aogonek gcommaaccent -10 -KPX aogonek v -15 -KPX aogonek w -15 -KPX aogonek y -20 -KPX aogonek yacute -20 -KPX aogonek ydieresis -20 -KPX aring g -10 -KPX aring gbreve -10 -KPX aring gcommaaccent -10 -KPX aring v -15 -KPX aring w -15 -KPX aring y -20 -KPX aring yacute -20 -KPX aring ydieresis -20 -KPX atilde g -10 -KPX atilde gbreve -10 -KPX atilde gcommaaccent -10 -KPX atilde v -15 -KPX atilde w -15 -KPX atilde y -20 -KPX atilde yacute -20 -KPX atilde ydieresis -20 -KPX b l -10 -KPX b lacute -10 -KPX b lcommaaccent -10 -KPX b lslash -10 -KPX b u -20 -KPX b uacute -20 -KPX b ucircumflex -20 -KPX b udieresis -20 -KPX b ugrave -20 -KPX b uhungarumlaut -20 -KPX b umacron -20 -KPX b uogonek -20 -KPX b uring -20 -KPX b v -20 -KPX b y -20 -KPX b yacute -20 -KPX b ydieresis -20 -KPX c h -10 -KPX c k -20 -KPX c kcommaaccent -20 -KPX c l -20 -KPX c lacute -20 -KPX c lcommaaccent -20 -KPX c lslash -20 -KPX c y -10 -KPX c yacute -10 -KPX c ydieresis -10 -KPX cacute h -10 -KPX cacute k -20 -KPX cacute kcommaaccent -20 -KPX cacute l -20 -KPX cacute lacute -20 -KPX cacute lcommaaccent -20 -KPX cacute lslash -20 -KPX cacute y -10 -KPX cacute yacute -10 -KPX cacute ydieresis -10 -KPX ccaron h -10 -KPX ccaron k -20 -KPX ccaron kcommaaccent -20 -KPX ccaron l -20 -KPX ccaron lacute -20 -KPX ccaron lcommaaccent -20 -KPX ccaron lslash -20 -KPX ccaron y -10 -KPX ccaron yacute -10 -KPX ccaron ydieresis -10 -KPX ccedilla h -10 -KPX ccedilla k -20 -KPX ccedilla kcommaaccent -20 -KPX ccedilla l -20 -KPX ccedilla lacute -20 -KPX ccedilla lcommaaccent -20 -KPX ccedilla lslash -20 -KPX ccedilla y -10 -KPX ccedilla yacute -10 -KPX ccedilla ydieresis -10 -KPX colon space -40 -KPX comma quotedblright -120 -KPX comma quoteright -120 -KPX comma space -40 -KPX d d -10 -KPX d dcroat -10 -KPX d v -15 -KPX d w -15 -KPX d y -15 -KPX d yacute -15 -KPX d ydieresis -15 -KPX dcroat d -10 -KPX dcroat dcroat -10 -KPX dcroat v -15 -KPX dcroat w -15 -KPX dcroat y -15 -KPX dcroat yacute -15 -KPX dcroat ydieresis -15 -KPX e comma 10 -KPX e period 20 -KPX e v -15 -KPX e w -15 -KPX e x -15 -KPX e y -15 -KPX e yacute -15 -KPX e ydieresis -15 -KPX eacute comma 10 -KPX eacute period 20 -KPX eacute v -15 -KPX eacute w -15 -KPX eacute x -15 -KPX eacute y -15 -KPX eacute yacute -15 -KPX eacute ydieresis -15 -KPX ecaron comma 10 -KPX ecaron period 20 -KPX ecaron v -15 -KPX ecaron w -15 -KPX ecaron x -15 -KPX ecaron y -15 -KPX ecaron yacute -15 -KPX ecaron ydieresis -15 -KPX ecircumflex comma 10 -KPX ecircumflex period 20 -KPX ecircumflex v -15 -KPX ecircumflex w -15 -KPX ecircumflex x -15 -KPX ecircumflex y -15 -KPX ecircumflex yacute -15 -KPX ecircumflex ydieresis -15 -KPX edieresis comma 10 -KPX edieresis period 20 -KPX edieresis v -15 -KPX edieresis w -15 -KPX edieresis x -15 -KPX edieresis y -15 -KPX edieresis yacute -15 -KPX edieresis ydieresis -15 -KPX edotaccent comma 10 -KPX edotaccent period 20 -KPX edotaccent v -15 -KPX edotaccent w -15 -KPX edotaccent x -15 -KPX edotaccent y -15 -KPX edotaccent yacute -15 -KPX edotaccent ydieresis -15 -KPX egrave comma 10 -KPX egrave period 20 -KPX egrave v -15 -KPX egrave w -15 -KPX egrave x -15 -KPX egrave y -15 -KPX egrave yacute -15 -KPX egrave ydieresis -15 -KPX emacron comma 10 -KPX emacron period 20 -KPX emacron v -15 -KPX emacron w -15 -KPX emacron x -15 -KPX emacron y -15 -KPX emacron yacute -15 -KPX emacron ydieresis -15 -KPX eogonek comma 10 -KPX eogonek period 20 -KPX eogonek v -15 -KPX eogonek w -15 -KPX eogonek x -15 -KPX eogonek y -15 -KPX eogonek yacute -15 -KPX eogonek ydieresis -15 -KPX f comma -10 -KPX f e -10 -KPX f eacute -10 -KPX f ecaron -10 -KPX f ecircumflex -10 -KPX f edieresis -10 -KPX f edotaccent -10 -KPX f egrave -10 -KPX f emacron -10 -KPX f eogonek -10 -KPX f o -20 -KPX f oacute -20 -KPX f ocircumflex -20 -KPX f odieresis -20 -KPX f ograve -20 -KPX f ohungarumlaut -20 -KPX f omacron -20 -KPX f oslash -20 -KPX f otilde -20 -KPX f period -10 -KPX f quotedblright 30 -KPX f quoteright 30 -KPX g e 10 -KPX g eacute 10 -KPX g ecaron 10 -KPX g ecircumflex 10 -KPX g edieresis 10 -KPX g edotaccent 10 -KPX g egrave 10 -KPX g emacron 10 -KPX g eogonek 10 -KPX g g -10 -KPX g gbreve -10 -KPX g gcommaaccent -10 -KPX gbreve e 10 -KPX gbreve eacute 10 -KPX gbreve ecaron 10 -KPX gbreve ecircumflex 10 -KPX gbreve edieresis 10 -KPX gbreve edotaccent 10 -KPX gbreve egrave 10 -KPX gbreve emacron 10 -KPX gbreve eogonek 10 -KPX gbreve g -10 -KPX gbreve gbreve -10 -KPX gbreve gcommaaccent -10 -KPX gcommaaccent e 10 -KPX gcommaaccent eacute 10 -KPX gcommaaccent ecaron 10 -KPX gcommaaccent ecircumflex 10 -KPX gcommaaccent edieresis 10 -KPX gcommaaccent edotaccent 10 -KPX gcommaaccent egrave 10 -KPX gcommaaccent emacron 10 -KPX gcommaaccent eogonek 10 -KPX gcommaaccent g -10 -KPX gcommaaccent gbreve -10 -KPX gcommaaccent gcommaaccent -10 -KPX h y -20 -KPX h yacute -20 -KPX h ydieresis -20 -KPX k o -15 -KPX k oacute -15 -KPX k ocircumflex -15 -KPX k odieresis -15 -KPX k ograve -15 -KPX k ohungarumlaut -15 -KPX k omacron -15 -KPX k oslash -15 -KPX k otilde -15 -KPX kcommaaccent o -15 -KPX kcommaaccent oacute -15 -KPX kcommaaccent ocircumflex -15 -KPX kcommaaccent odieresis -15 -KPX kcommaaccent ograve -15 -KPX kcommaaccent ohungarumlaut -15 -KPX kcommaaccent omacron -15 -KPX kcommaaccent oslash -15 -KPX kcommaaccent otilde -15 -KPX l w -15 -KPX l y -15 -KPX l yacute -15 -KPX l ydieresis -15 -KPX lacute w -15 -KPX lacute y -15 -KPX lacute yacute -15 -KPX lacute ydieresis -15 -KPX lcommaaccent w -15 -KPX lcommaaccent y -15 -KPX lcommaaccent yacute -15 -KPX lcommaaccent ydieresis -15 -KPX lslash w -15 -KPX lslash y -15 -KPX lslash yacute -15 -KPX lslash ydieresis -15 -KPX m u -20 -KPX m uacute -20 -KPX m ucircumflex -20 -KPX m udieresis -20 -KPX m ugrave -20 -KPX m uhungarumlaut -20 -KPX m umacron -20 -KPX m uogonek -20 -KPX m uring -20 -KPX m y -30 -KPX m yacute -30 -KPX m ydieresis -30 -KPX n u -10 -KPX n uacute -10 -KPX n ucircumflex -10 -KPX n udieresis -10 -KPX n ugrave -10 -KPX n uhungarumlaut -10 -KPX n umacron -10 -KPX n uogonek -10 -KPX n uring -10 -KPX n v -40 -KPX n y -20 -KPX n yacute -20 -KPX n ydieresis -20 -KPX nacute u -10 -KPX nacute uacute -10 -KPX nacute ucircumflex -10 -KPX nacute udieresis -10 -KPX nacute ugrave -10 -KPX nacute uhungarumlaut -10 -KPX nacute umacron -10 -KPX nacute uogonek -10 -KPX nacute uring -10 -KPX nacute v -40 -KPX nacute y -20 -KPX nacute yacute -20 -KPX nacute ydieresis -20 -KPX ncaron u -10 -KPX ncaron uacute -10 -KPX ncaron ucircumflex -10 -KPX ncaron udieresis -10 -KPX ncaron ugrave -10 -KPX ncaron uhungarumlaut -10 -KPX ncaron umacron -10 -KPX ncaron uogonek -10 -KPX ncaron uring -10 -KPX ncaron v -40 -KPX ncaron y -20 -KPX ncaron yacute -20 -KPX ncaron ydieresis -20 -KPX ncommaaccent u -10 -KPX ncommaaccent uacute -10 -KPX ncommaaccent ucircumflex -10 -KPX ncommaaccent udieresis -10 -KPX ncommaaccent ugrave -10 -KPX ncommaaccent uhungarumlaut -10 -KPX ncommaaccent umacron -10 -KPX ncommaaccent uogonek -10 -KPX ncommaaccent uring -10 -KPX ncommaaccent v -40 -KPX ncommaaccent y -20 -KPX ncommaaccent yacute -20 -KPX ncommaaccent ydieresis -20 -KPX ntilde u -10 -KPX ntilde uacute -10 -KPX ntilde ucircumflex -10 -KPX ntilde udieresis -10 -KPX ntilde ugrave -10 -KPX ntilde uhungarumlaut -10 -KPX ntilde umacron -10 -KPX ntilde uogonek -10 -KPX ntilde uring -10 -KPX ntilde v -40 -KPX ntilde y -20 -KPX ntilde yacute -20 -KPX ntilde ydieresis -20 -KPX o v -20 -KPX o w -15 -KPX o x -30 -KPX o y -20 -KPX o yacute -20 -KPX o ydieresis -20 -KPX oacute v -20 -KPX oacute w -15 -KPX oacute x -30 -KPX oacute y -20 -KPX oacute yacute -20 -KPX oacute ydieresis -20 -KPX ocircumflex v -20 -KPX ocircumflex w -15 -KPX ocircumflex x -30 -KPX ocircumflex y -20 -KPX ocircumflex yacute -20 -KPX ocircumflex ydieresis -20 -KPX odieresis v -20 -KPX odieresis w -15 -KPX odieresis x -30 -KPX odieresis y -20 -KPX odieresis yacute -20 -KPX odieresis ydieresis -20 -KPX ograve v -20 -KPX ograve w -15 -KPX ograve x -30 -KPX ograve y -20 -KPX ograve yacute -20 -KPX ograve ydieresis -20 -KPX ohungarumlaut v -20 -KPX ohungarumlaut w -15 -KPX ohungarumlaut x -30 -KPX ohungarumlaut y -20 -KPX ohungarumlaut yacute -20 -KPX ohungarumlaut ydieresis -20 -KPX omacron v -20 -KPX omacron w -15 -KPX omacron x -30 -KPX omacron y -20 -KPX omacron yacute -20 -KPX omacron ydieresis -20 -KPX oslash v -20 -KPX oslash w -15 -KPX oslash x -30 -KPX oslash y -20 -KPX oslash yacute -20 -KPX oslash ydieresis -20 -KPX otilde v -20 -KPX otilde w -15 -KPX otilde x -30 -KPX otilde y -20 -KPX otilde yacute -20 -KPX otilde ydieresis -20 -KPX p y -15 -KPX p yacute -15 -KPX p ydieresis -15 -KPX period quotedblright -120 -KPX period quoteright -120 -KPX period space -40 -KPX quotedblright space -80 -KPX quoteleft quoteleft -46 -KPX quoteright d -80 -KPX quoteright dcroat -80 -KPX quoteright l -20 -KPX quoteright lacute -20 -KPX quoteright lcommaaccent -20 -KPX quoteright lslash -20 -KPX quoteright quoteright -46 -KPX quoteright r -40 -KPX quoteright racute -40 -KPX quoteright rcaron -40 -KPX quoteright rcommaaccent -40 -KPX quoteright s -60 -KPX quoteright sacute -60 -KPX quoteright scaron -60 -KPX quoteright scedilla -60 -KPX quoteright scommaaccent -60 -KPX quoteright space -80 -KPX quoteright v -20 -KPX r c -20 -KPX r cacute -20 -KPX r ccaron -20 -KPX r ccedilla -20 -KPX r comma -60 -KPX r d -20 -KPX r dcroat -20 -KPX r g -15 -KPX r gbreve -15 -KPX r gcommaaccent -15 -KPX r hyphen -20 -KPX r o -20 -KPX r oacute -20 -KPX r ocircumflex -20 -KPX r odieresis -20 -KPX r ograve -20 -KPX r ohungarumlaut -20 -KPX r omacron -20 -KPX r oslash -20 -KPX r otilde -20 -KPX r period -60 -KPX r q -20 -KPX r s -15 -KPX r sacute -15 -KPX r scaron -15 -KPX r scedilla -15 -KPX r scommaaccent -15 -KPX r t 20 -KPX r tcommaaccent 20 -KPX r v 10 -KPX r y 10 -KPX r yacute 10 -KPX r ydieresis 10 -KPX racute c -20 -KPX racute cacute -20 -KPX racute ccaron -20 -KPX racute ccedilla -20 -KPX racute comma -60 -KPX racute d -20 -KPX racute dcroat -20 -KPX racute g -15 -KPX racute gbreve -15 -KPX racute gcommaaccent -15 -KPX racute hyphen -20 -KPX racute o -20 -KPX racute oacute -20 -KPX racute ocircumflex -20 -KPX racute odieresis -20 -KPX racute ograve -20 -KPX racute ohungarumlaut -20 -KPX racute omacron -20 -KPX racute oslash -20 -KPX racute otilde -20 -KPX racute period -60 -KPX racute q -20 -KPX racute s -15 -KPX racute sacute -15 -KPX racute scaron -15 -KPX racute scedilla -15 -KPX racute scommaaccent -15 -KPX racute t 20 -KPX racute tcommaaccent 20 -KPX racute v 10 -KPX racute y 10 -KPX racute yacute 10 -KPX racute ydieresis 10 -KPX rcaron c -20 -KPX rcaron cacute -20 -KPX rcaron ccaron -20 -KPX rcaron ccedilla -20 -KPX rcaron comma -60 -KPX rcaron d -20 -KPX rcaron dcroat -20 -KPX rcaron g -15 -KPX rcaron gbreve -15 -KPX rcaron gcommaaccent -15 -KPX rcaron hyphen -20 -KPX rcaron o -20 -KPX rcaron oacute -20 -KPX rcaron ocircumflex -20 -KPX rcaron odieresis -20 -KPX rcaron ograve -20 -KPX rcaron ohungarumlaut -20 -KPX rcaron omacron -20 -KPX rcaron oslash -20 -KPX rcaron otilde -20 -KPX rcaron period -60 -KPX rcaron q -20 -KPX rcaron s -15 -KPX rcaron sacute -15 -KPX rcaron scaron -15 -KPX rcaron scedilla -15 -KPX rcaron scommaaccent -15 -KPX rcaron t 20 -KPX rcaron tcommaaccent 20 -KPX rcaron v 10 -KPX rcaron y 10 -KPX rcaron yacute 10 -KPX rcaron ydieresis 10 -KPX rcommaaccent c -20 -KPX rcommaaccent cacute -20 -KPX rcommaaccent ccaron -20 -KPX rcommaaccent ccedilla -20 -KPX rcommaaccent comma -60 -KPX rcommaaccent d -20 -KPX rcommaaccent dcroat -20 -KPX rcommaaccent g -15 -KPX rcommaaccent gbreve -15 -KPX rcommaaccent gcommaaccent -15 -KPX rcommaaccent hyphen -20 -KPX rcommaaccent o -20 -KPX rcommaaccent oacute -20 -KPX rcommaaccent ocircumflex -20 -KPX rcommaaccent odieresis -20 -KPX rcommaaccent ograve -20 -KPX rcommaaccent ohungarumlaut -20 -KPX rcommaaccent omacron -20 -KPX rcommaaccent oslash -20 -KPX rcommaaccent otilde -20 -KPX rcommaaccent period -60 -KPX rcommaaccent q -20 -KPX rcommaaccent s -15 -KPX rcommaaccent sacute -15 -KPX rcommaaccent scaron -15 -KPX rcommaaccent scedilla -15 -KPX rcommaaccent scommaaccent -15 -KPX rcommaaccent t 20 -KPX rcommaaccent tcommaaccent 20 -KPX rcommaaccent v 10 -KPX rcommaaccent y 10 -KPX rcommaaccent yacute 10 -KPX rcommaaccent ydieresis 10 -KPX s w -15 -KPX sacute w -15 -KPX scaron w -15 -KPX scedilla w -15 -KPX scommaaccent w -15 -KPX semicolon space -40 -KPX space T -100 -KPX space Tcaron -100 -KPX space Tcommaaccent -100 -KPX space V -80 -KPX space W -80 -KPX space Y -120 -KPX space Yacute -120 -KPX space Ydieresis -120 -KPX space quotedblleft -80 -KPX space quoteleft -60 -KPX v a -20 -KPX v aacute -20 -KPX v abreve -20 -KPX v acircumflex -20 -KPX v adieresis -20 -KPX v agrave -20 -KPX v amacron -20 -KPX v aogonek -20 -KPX v aring -20 -KPX v atilde -20 -KPX v comma -80 -KPX v o -30 -KPX v oacute -30 -KPX v ocircumflex -30 -KPX v odieresis -30 -KPX v ograve -30 -KPX v ohungarumlaut -30 -KPX v omacron -30 -KPX v oslash -30 -KPX v otilde -30 -KPX v period -80 -KPX w comma -40 -KPX w o -20 -KPX w oacute -20 -KPX w ocircumflex -20 -KPX w odieresis -20 -KPX w ograve -20 -KPX w ohungarumlaut -20 -KPX w omacron -20 -KPX w oslash -20 -KPX w otilde -20 -KPX w period -40 -KPX x e -10 -KPX x eacute -10 -KPX x ecaron -10 -KPX x ecircumflex -10 -KPX x edieresis -10 -KPX x edotaccent -10 -KPX x egrave -10 -KPX x emacron -10 -KPX x eogonek -10 -KPX y a -30 -KPX y aacute -30 -KPX y abreve -30 -KPX y acircumflex -30 -KPX y adieresis -30 -KPX y agrave -30 -KPX y amacron -30 -KPX y aogonek -30 -KPX y aring -30 -KPX y atilde -30 -KPX y comma -80 -KPX y e -10 -KPX y eacute -10 -KPX y ecaron -10 -KPX y ecircumflex -10 -KPX y edieresis -10 -KPX y edotaccent -10 -KPX y egrave -10 -KPX y emacron -10 -KPX y eogonek -10 -KPX y o -25 -KPX y oacute -25 -KPX y ocircumflex -25 -KPX y odieresis -25 -KPX y ograve -25 -KPX y ohungarumlaut -25 -KPX y omacron -25 -KPX y oslash -25 -KPX y otilde -25 -KPX y period -80 -KPX yacute a -30 -KPX yacute aacute -30 -KPX yacute abreve -30 -KPX yacute acircumflex -30 -KPX yacute adieresis -30 -KPX yacute agrave -30 -KPX yacute amacron -30 -KPX yacute aogonek -30 -KPX yacute aring -30 -KPX yacute atilde -30 -KPX yacute comma -80 -KPX yacute e -10 -KPX yacute eacute -10 -KPX yacute ecaron -10 -KPX yacute ecircumflex -10 -KPX yacute edieresis -10 -KPX yacute edotaccent -10 -KPX yacute egrave -10 -KPX yacute emacron -10 -KPX yacute eogonek -10 -KPX yacute o -25 -KPX yacute oacute -25 -KPX yacute ocircumflex -25 -KPX yacute odieresis -25 -KPX yacute ograve -25 -KPX yacute ohungarumlaut -25 -KPX yacute omacron -25 -KPX yacute oslash -25 -KPX yacute otilde -25 -KPX yacute period -80 -KPX ydieresis a -30 -KPX ydieresis aacute -30 -KPX ydieresis abreve -30 -KPX ydieresis acircumflex -30 -KPX ydieresis adieresis -30 -KPX ydieresis agrave -30 -KPX ydieresis amacron -30 -KPX ydieresis aogonek -30 -KPX ydieresis aring -30 -KPX ydieresis atilde -30 -KPX ydieresis comma -80 -KPX ydieresis e -10 -KPX ydieresis eacute -10 -KPX ydieresis ecaron -10 -KPX ydieresis ecircumflex -10 -KPX ydieresis edieresis -10 -KPX ydieresis edotaccent -10 -KPX ydieresis egrave -10 -KPX ydieresis emacron -10 -KPX ydieresis eogonek -10 -KPX ydieresis o -25 -KPX ydieresis oacute -25 -KPX ydieresis ocircumflex -25 -KPX ydieresis odieresis -25 -KPX ydieresis ograve -25 -KPX ydieresis ohungarumlaut -25 -KPX ydieresis omacron -25 -KPX ydieresis oslash -25 -KPX ydieresis otilde -25 -KPX ydieresis period -80 -KPX z e 10 -KPX z eacute 10 -KPX z ecaron 10 -KPX z ecircumflex 10 -KPX z edieresis 10 -KPX z edotaccent 10 -KPX z egrave 10 -KPX z emacron 10 -KPX z eogonek 10 -KPX zacute e 10 -KPX zacute eacute 10 -KPX zacute ecaron 10 -KPX zacute ecircumflex 10 -KPX zacute edieresis 10 -KPX zacute edotaccent 10 -KPX zacute egrave 10 -KPX zacute emacron 10 -KPX zacute eogonek 10 -KPX zcaron e 10 -KPX zcaron eacute 10 -KPX zcaron ecaron 10 -KPX zcaron ecircumflex 10 -KPX zcaron edieresis 10 -KPX zcaron edotaccent 10 -KPX zcaron egrave 10 -KPX zcaron emacron 10 -KPX zcaron eogonek 10 -KPX zdotaccent e 10 -KPX zdotaccent eacute 10 -KPX zdotaccent ecaron 10 -KPX zdotaccent ecircumflex 10 -KPX zdotaccent edieresis 10 -KPX zdotaccent edotaccent 10 -KPX zdotaccent egrave 10 -KPX zdotaccent emacron 10 -KPX zdotaccent eogonek 10 -EndKernPairs -EndKernData -EndFontMetrics diff --git a/application/third_party/dompdf/lib/fonts/Helvetica-Oblique.afm b/application/third_party/dompdf/lib/fonts/Helvetica-Oblique.afm deleted file mode 100644 index 60f76ad3..00000000 --- a/application/third_party/dompdf/lib/fonts/Helvetica-Oblique.afm +++ /dev/null @@ -1,3053 +0,0 @@ -StartFontMetrics 4.1 -Comment Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved. -Comment Creation Date: Thu May 1 12:44:31 1997 -Comment UniqueID 43055 -Comment VMusage 14960 69346 -FontName Helvetica-Oblique -FullName Helvetica Oblique -FamilyName Helvetica -Weight Medium -ItalicAngle -12 -IsFixedPitch false -CharacterSet ExtendedRoman -FontBBox -170 -225 1116 931 -UnderlinePosition -100 -UnderlineThickness 50 -Version 002.000 -Notice Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved.Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries. -EncodingScheme WinAnsiEncoding -CapHeight 718 -XHeight 523 -Ascender 718 -Descender -207 -StdHW 76 -StdVW 88 -StartCharMetrics 317 -C 32 ; WX 278 ; N space ; B 0 0 0 0 ; -C 160 ; WX 278 ; N space ; B 0 0 0 0 ; -C 33 ; WX 278 ; N exclam ; B 90 0 340 718 ; -C 34 ; WX 355 ; N quotedbl ; B 168 463 438 718 ; -C 35 ; WX 556 ; N numbersign ; B 73 0 631 688 ; -C 36 ; WX 556 ; N dollar ; B 69 -115 617 775 ; -C 37 ; WX 889 ; N percent ; B 147 -19 889 703 ; -C 38 ; WX 667 ; N ampersand ; B 77 -15 647 718 ; -C 146 ; WX 222 ; N quoteright ; B 151 463 310 718 ; -C 40 ; WX 333 ; N parenleft ; B 108 -207 454 733 ; -C 41 ; WX 333 ; N parenright ; B -9 -207 337 733 ; -C 42 ; WX 389 ; N asterisk ; B 165 431 475 718 ; -C 43 ; WX 584 ; N plus ; B 85 0 606 505 ; -C 44 ; WX 278 ; N comma ; B 56 -147 214 106 ; -C 45 ; WX 333 ; N hyphen ; B 93 232 357 322 ; -C 173 ; WX 333 ; N hyphen ; B 44 232 289 322 ; -C 46 ; WX 278 ; N period ; B 87 0 214 106 ; -C 47 ; WX 278 ; N slash ; B -21 -19 452 737 ; -C 48 ; WX 556 ; N zero ; B 93 -19 608 703 ; -C 49 ; WX 556 ; N one ; B 207 0 508 703 ; -C 50 ; WX 556 ; N two ; B 26 0 617 703 ; -C 51 ; WX 556 ; N three ; B 75 -19 610 703 ; -C 52 ; WX 556 ; N four ; B 61 0 576 703 ; -C 53 ; WX 556 ; N five ; B 68 -19 621 688 ; -C 54 ; WX 556 ; N six ; B 91 -19 615 703 ; -C 55 ; WX 556 ; N seven ; B 137 0 669 688 ; -C 56 ; WX 556 ; N eight ; B 74 -19 607 703 ; -C 57 ; WX 556 ; N nine ; B 82 -19 609 703 ; -C 58 ; WX 278 ; N colon ; B 87 0 301 516 ; -C 59 ; WX 278 ; N semicolon ; B 56 -147 301 516 ; -C 60 ; WX 584 ; N less ; B 94 11 641 495 ; -C 61 ; WX 584 ; N equal ; B 63 115 628 390 ; -C 62 ; WX 584 ; N greater ; B 50 11 597 495 ; -C 63 ; WX 556 ; N question ; B 161 0 610 727 ; -C 64 ; WX 1015 ; N at ; B 215 -19 965 737 ; -C 65 ; WX 667 ; N A ; B 14 0 654 718 ; -C 66 ; WX 667 ; N B ; B 74 0 712 718 ; -C 67 ; WX 722 ; N C ; B 108 -19 782 737 ; -C 68 ; WX 722 ; N D ; B 81 0 764 718 ; -C 69 ; WX 667 ; N E ; B 86 0 762 718 ; -C 70 ; WX 611 ; N F ; B 86 0 736 718 ; -C 71 ; WX 778 ; N G ; B 111 -19 799 737 ; -C 72 ; WX 722 ; N H ; B 77 0 799 718 ; -C 73 ; WX 278 ; N I ; B 91 0 341 718 ; -C 74 ; WX 500 ; N J ; B 47 -19 581 718 ; -C 75 ; WX 667 ; N K ; B 76 0 808 718 ; -C 76 ; WX 556 ; N L ; B 76 0 555 718 ; -C 77 ; WX 833 ; N M ; B 73 0 914 718 ; -C 78 ; WX 722 ; N N ; B 76 0 799 718 ; -C 79 ; WX 778 ; N O ; B 105 -19 826 737 ; -C 80 ; WX 667 ; N P ; B 86 0 737 718 ; -C 81 ; WX 778 ; N Q ; B 105 -56 826 737 ; -C 82 ; WX 722 ; N R ; B 88 0 773 718 ; -C 83 ; WX 667 ; N S ; B 90 -19 713 737 ; -C 84 ; WX 611 ; N T ; B 148 0 750 718 ; -C 85 ; WX 722 ; N U ; B 123 -19 797 718 ; -C 86 ; WX 667 ; N V ; B 173 0 800 718 ; -C 87 ; WX 944 ; N W ; B 169 0 1081 718 ; -C 88 ; WX 667 ; N X ; B 19 0 790 718 ; -C 89 ; WX 667 ; N Y ; B 167 0 806 718 ; -C 90 ; WX 611 ; N Z ; B 23 0 741 718 ; -C 91 ; WX 278 ; N bracketleft ; B 21 -196 403 722 ; -C 92 ; WX 278 ; N backslash ; B 140 -19 291 737 ; -C 93 ; WX 278 ; N bracketright ; B -14 -196 368 722 ; -C 94 ; WX 469 ; N asciicircum ; B 42 264 539 688 ; -C 95 ; WX 556 ; N underscore ; B -27 -125 540 -75 ; -C 145 ; WX 222 ; N quoteleft ; B 165 470 323 725 ; -C 97 ; WX 556 ; N a ; B 61 -15 559 538 ; -C 98 ; WX 556 ; N b ; B 58 -15 584 718 ; -C 99 ; WX 500 ; N c ; B 74 -15 553 538 ; -C 100 ; WX 556 ; N d ; B 84 -15 652 718 ; -C 101 ; WX 556 ; N e ; B 84 -15 578 538 ; -C 102 ; WX 278 ; N f ; B 86 0 416 728 ; L i fi ; L l fl ; -C 103 ; WX 556 ; N g ; B 42 -220 610 538 ; -C 104 ; WX 556 ; N h ; B 65 0 573 718 ; -C 105 ; WX 222 ; N i ; B 67 0 308 718 ; -C 106 ; WX 222 ; N j ; B -60 -210 308 718 ; -C 107 ; WX 500 ; N k ; B 67 0 600 718 ; -C 108 ; WX 222 ; N l ; B 67 0 308 718 ; -C 109 ; WX 833 ; N m ; B 65 0 852 538 ; -C 110 ; WX 556 ; N n ; B 65 0 573 538 ; -C 111 ; WX 556 ; N o ; B 83 -14 585 538 ; -C 112 ; WX 556 ; N p ; B 14 -207 584 538 ; -C 113 ; WX 556 ; N q ; B 84 -207 605 538 ; -C 114 ; WX 333 ; N r ; B 77 0 446 538 ; -C 115 ; WX 500 ; N s ; B 63 -15 529 538 ; -C 116 ; WX 278 ; N t ; B 102 -7 368 669 ; -C 117 ; WX 556 ; N u ; B 94 -15 600 523 ; -C 118 ; WX 500 ; N v ; B 119 0 603 523 ; -C 119 ; WX 722 ; N w ; B 125 0 820 523 ; -C 120 ; WX 500 ; N x ; B 11 0 594 523 ; -C 121 ; WX 500 ; N y ; B 15 -214 600 523 ; -C 122 ; WX 500 ; N z ; B 31 0 571 523 ; -C 123 ; WX 334 ; N braceleft ; B 92 -196 445 722 ; -C 124 ; WX 260 ; N bar ; B 46 -225 332 775 ; -C 125 ; WX 334 ; N braceright ; B 0 -196 354 722 ; -C 126 ; WX 584 ; N asciitilde ; B 111 180 580 326 ; -C 161 ; WX 333 ; N exclamdown ; B 77 -195 326 523 ; -C 162 ; WX 556 ; N cent ; B 95 -115 584 623 ; -C 163 ; WX 556 ; N sterling ; B 49 -16 634 718 ; -C -1 ; WX 167 ; N fraction ; B -170 -19 482 703 ; -C 165 ; WX 556 ; N yen ; B 81 0 699 688 ; -C 131 ; WX 556 ; N florin ; B -52 -207 654 737 ; -C 167 ; WX 556 ; N section ; B 76 -191 584 737 ; -C 164 ; WX 556 ; N currency ; B 60 99 646 603 ; -C 39 ; WX 191 ; N quotesingle ; B 157 463 285 718 ; -C 147 ; WX 333 ; N quotedblleft ; B 138 470 461 725 ; -C 170 ; WX 556 ; N guillemotleft ; B 146 108 554 446 ; -C 139 ; WX 333 ; N guilsinglleft ; B 137 108 340 446 ; -C 155 ; WX 333 ; N guilsinglright ; B 111 108 314 446 ; -C -1 ; WX 500 ; N fi ; B 86 0 587 728 ; -C -1 ; WX 500 ; N fl ; B 86 0 585 728 ; -C 150 ; WX 556 ; N endash ; B 51 240 623 313 ; -C 134 ; WX 556 ; N dagger ; B 135 -159 622 718 ; -C 135 ; WX 556 ; N daggerdbl ; B 52 -159 623 718 ; -C 183 ; WX 278 ; N periodcentered ; B 129 190 257 315 ; -C 182 ; WX 537 ; N paragraph ; B 126 -173 650 718 ; -C 149 ; WX 350 ; N bullet ; B 91 202 413 517 ; -C 130 ; WX 222 ; N quotesinglbase ; B 21 -149 180 106 ; -C 132 ; WX 333 ; N quotedblbase ; B -6 -149 318 106 ; -C 148 ; WX 333 ; N quotedblright ; B 124 463 448 718 ; -C 187 ; WX 556 ; N guillemotright ; B 120 108 528 446 ; -C 133 ; WX 1000 ; N ellipsis ; B 115 0 908 106 ; -C 137 ; WX 1000 ; N perthousand ; B 88 -19 1029 703 ; -C 191 ; WX 611 ; N questiondown ; B 85 -201 534 525 ; -C 96 ; WX 333 ; N grave ; B 170 593 337 734 ; -C 180 ; WX 333 ; N acute ; B 248 593 475 734 ; -C 136 ; WX 333 ; N circumflex ; B 147 593 438 734 ; -C 152 ; WX 333 ; N tilde ; B 125 606 490 722 ; -C 175 ; WX 333 ; N macron ; B 143 627 468 684 ; -C -1 ; WX 333 ; N breve ; B 167 595 476 731 ; -C -1 ; WX 333 ; N dotaccent ; B 249 604 362 706 ; -C 168 ; WX 333 ; N dieresis ; B 168 604 443 706 ; -C -1 ; WX 333 ; N ring ; B 214 572 402 756 ; -C 184 ; WX 333 ; N cedilla ; B 2 -225 232 0 ; -C -1 ; WX 333 ; N hungarumlaut ; B 157 593 565 734 ; -C -1 ; WX 333 ; N ogonek ; B 43 -225 249 0 ; -C -1 ; WX 333 ; N caron ; B 177 593 468 734 ; -C 151 ; WX 1000 ; N emdash ; B 51 240 1067 313 ; -C 198 ; WX 1000 ; N AE ; B 8 0 1097 718 ; -C 170 ; WX 370 ; N ordfeminine ; B 127 405 449 737 ; -C -1 ; WX 556 ; N Lslash ; B 41 0 555 718 ; -C 216 ; WX 778 ; N Oslash ; B 43 -19 890 737 ; -C 140 ; WX 1000 ; N OE ; B 98 -19 1116 737 ; -C 186 ; WX 365 ; N ordmasculine ; B 141 405 468 737 ; -C 230 ; WX 889 ; N ae ; B 61 -15 909 538 ; -C -1 ; WX 278 ; N dotlessi ; B 95 0 294 523 ; -C -1 ; WX 222 ; N lslash ; B 41 0 347 718 ; -C 248 ; WX 611 ; N oslash ; B 29 -22 647 545 ; -C 156 ; WX 944 ; N oe ; B 83 -15 964 538 ; -C 223 ; WX 611 ; N germandbls ; B 67 -15 658 728 ; -C 207 ; WX 278 ; N Idieresis ; B 91 0 458 901 ; -C 233 ; WX 556 ; N eacute ; B 84 -15 587 734 ; -C -1 ; WX 556 ; N abreve ; B 61 -15 578 731 ; -C -1 ; WX 556 ; N uhungarumlaut ; B 94 -15 677 734 ; -C -1 ; WX 556 ; N ecaron ; B 84 -15 580 734 ; -C 159 ; WX 667 ; N Ydieresis ; B 167 0 806 901 ; -C 247 ; WX 584 ; N divide ; B 85 -19 606 524 ; -C 221 ; WX 667 ; N Yacute ; B 167 0 806 929 ; -C 194 ; WX 667 ; N Acircumflex ; B 14 0 654 929 ; -C 225 ; WX 556 ; N aacute ; B 61 -15 587 734 ; -C 219 ; WX 722 ; N Ucircumflex ; B 123 -19 797 929 ; -C 253 ; WX 500 ; N yacute ; B 15 -214 600 734 ; -C -1 ; WX 500 ; N scommaaccent ; B 63 -225 529 538 ; -C 234 ; WX 556 ; N ecircumflex ; B 84 -15 578 734 ; -C -1 ; WX 722 ; N Uring ; B 123 -19 797 931 ; -C 220 ; WX 722 ; N Udieresis ; B 123 -19 797 901 ; -C -1 ; WX 556 ; N aogonek ; B 61 -220 559 538 ; -C 218 ; WX 722 ; N Uacute ; B 123 -19 797 929 ; -C -1 ; WX 556 ; N uogonek ; B 94 -225 600 523 ; -C 203 ; WX 667 ; N Edieresis ; B 86 0 762 901 ; -C -1 ; WX 722 ; N Dcroat ; B 69 0 764 718 ; -C -1 ; WX 250 ; N commaaccent ; B 39 -225 172 -40 ; -C 169 ; WX 737 ; N copyright ; B 54 -19 837 737 ; -C -1 ; WX 667 ; N Emacron ; B 86 0 762 879 ; -C -1 ; WX 500 ; N ccaron ; B 74 -15 553 734 ; -C 229 ; WX 556 ; N aring ; B 61 -15 559 756 ; -C -1 ; WX 722 ; N Ncommaaccent ; B 76 -225 799 718 ; -C -1 ; WX 222 ; N lacute ; B 67 0 461 929 ; -C 224 ; WX 556 ; N agrave ; B 61 -15 559 734 ; -C -1 ; WX 611 ; N Tcommaaccent ; B 148 -225 750 718 ; -C -1 ; WX 722 ; N Cacute ; B 108 -19 782 929 ; -C 227 ; WX 556 ; N atilde ; B 61 -15 592 722 ; -C -1 ; WX 667 ; N Edotaccent ; B 86 0 762 901 ; -C 154 ; WX 500 ; N scaron ; B 63 -15 552 734 ; -C -1 ; WX 500 ; N scedilla ; B 63 -225 529 538 ; -C 237 ; WX 278 ; N iacute ; B 95 0 448 734 ; -C -1 ; WX 471 ; N lozenge ; B 88 0 540 728 ; -C -1 ; WX 722 ; N Rcaron ; B 88 0 773 929 ; -C -1 ; WX 778 ; N Gcommaaccent ; B 111 -225 799 737 ; -C 251 ; WX 556 ; N ucircumflex ; B 94 -15 600 734 ; -C 226 ; WX 556 ; N acircumflex ; B 61 -15 559 734 ; -C -1 ; WX 667 ; N Amacron ; B 14 0 677 879 ; -C -1 ; WX 333 ; N rcaron ; B 77 0 508 734 ; -C 231 ; WX 500 ; N ccedilla ; B 74 -225 553 538 ; -C -1 ; WX 611 ; N Zdotaccent ; B 23 0 741 901 ; -C 222 ; WX 667 ; N Thorn ; B 86 0 712 718 ; -C -1 ; WX 778 ; N Omacron ; B 105 -19 826 879 ; -C -1 ; WX 722 ; N Racute ; B 88 0 773 929 ; -C -1 ; WX 667 ; N Sacute ; B 90 -19 713 929 ; -C -1 ; WX 643 ; N dcaron ; B 84 -15 808 718 ; -C -1 ; WX 722 ; N Umacron ; B 123 -19 797 879 ; -C -1 ; WX 556 ; N uring ; B 94 -15 600 756 ; -C 179 ; WX 333 ; N threesuperior ; B 90 270 436 703 ; -C 210 ; WX 778 ; N Ograve ; B 105 -19 826 929 ; -C 192 ; WX 667 ; N Agrave ; B 14 0 654 929 ; -C -1 ; WX 667 ; N Abreve ; B 14 0 685 926 ; -C 215 ; WX 584 ; N multiply ; B 50 0 642 506 ; -C 250 ; WX 556 ; N uacute ; B 94 -15 600 734 ; -C -1 ; WX 611 ; N Tcaron ; B 148 0 750 929 ; -C -1 ; WX 476 ; N partialdiff ; B 41 -38 550 714 ; -C 255 ; WX 500 ; N ydieresis ; B 15 -214 600 706 ; -C -1 ; WX 722 ; N Nacute ; B 76 0 799 929 ; -C 238 ; WX 278 ; N icircumflex ; B 95 0 411 734 ; -C 202 ; WX 667 ; N Ecircumflex ; B 86 0 762 929 ; -C 228 ; WX 556 ; N adieresis ; B 61 -15 559 706 ; -C 235 ; WX 556 ; N edieresis ; B 84 -15 578 706 ; -C -1 ; WX 500 ; N cacute ; B 74 -15 559 734 ; -C -1 ; WX 556 ; N nacute ; B 65 0 587 734 ; -C -1 ; WX 556 ; N umacron ; B 94 -15 600 684 ; -C -1 ; WX 722 ; N Ncaron ; B 76 0 799 929 ; -C 205 ; WX 278 ; N Iacute ; B 91 0 489 929 ; -C 177 ; WX 584 ; N plusminus ; B 39 0 618 506 ; -C 166 ; WX 260 ; N brokenbar ; B 62 -150 316 700 ; -C 174 ; WX 737 ; N registered ; B 54 -19 837 737 ; -C -1 ; WX 778 ; N Gbreve ; B 111 -19 799 926 ; -C -1 ; WX 278 ; N Idotaccent ; B 91 0 377 901 ; -C -1 ; WX 600 ; N summation ; B 15 -10 671 706 ; -C 200 ; WX 667 ; N Egrave ; B 86 0 762 929 ; -C -1 ; WX 333 ; N racute ; B 77 0 475 734 ; -C -1 ; WX 556 ; N omacron ; B 83 -14 585 684 ; -C -1 ; WX 611 ; N Zacute ; B 23 0 741 929 ; -C 142 ; WX 611 ; N Zcaron ; B 23 0 741 929 ; -C -1 ; WX 549 ; N greaterequal ; B 26 0 620 674 ; -C 208 ; WX 722 ; N Eth ; B 69 0 764 718 ; -C 199 ; WX 722 ; N Ccedilla ; B 108 -225 782 737 ; -C -1 ; WX 222 ; N lcommaaccent ; B 25 -225 308 718 ; -C -1 ; WX 317 ; N tcaron ; B 102 -7 501 808 ; -C -1 ; WX 556 ; N eogonek ; B 84 -225 578 538 ; -C -1 ; WX 722 ; N Uogonek ; B 123 -225 797 718 ; -C 193 ; WX 667 ; N Aacute ; B 14 0 683 929 ; -C 196 ; WX 667 ; N Adieresis ; B 14 0 654 901 ; -C 232 ; WX 556 ; N egrave ; B 84 -15 578 734 ; -C -1 ; WX 500 ; N zacute ; B 31 0 571 734 ; -C -1 ; WX 222 ; N iogonek ; B -61 -225 308 718 ; -C 211 ; WX 778 ; N Oacute ; B 105 -19 826 929 ; -C 243 ; WX 556 ; N oacute ; B 83 -14 587 734 ; -C -1 ; WX 556 ; N amacron ; B 61 -15 580 684 ; -C -1 ; WX 500 ; N sacute ; B 63 -15 559 734 ; -C 239 ; WX 278 ; N idieresis ; B 95 0 416 706 ; -C 212 ; WX 778 ; N Ocircumflex ; B 105 -19 826 929 ; -C 217 ; WX 722 ; N Ugrave ; B 123 -19 797 929 ; -C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; -C 254 ; WX 556 ; N thorn ; B 14 -207 584 718 ; -C 178 ; WX 333 ; N twosuperior ; B 64 281 449 703 ; -C 214 ; WX 778 ; N Odieresis ; B 105 -19 826 901 ; -C 181 ; WX 556 ; N mu ; B 24 -207 600 523 ; -C 236 ; WX 278 ; N igrave ; B 95 0 310 734 ; -C -1 ; WX 556 ; N ohungarumlaut ; B 83 -14 677 734 ; -C -1 ; WX 667 ; N Eogonek ; B 86 -220 762 718 ; -C -1 ; WX 556 ; N dcroat ; B 84 -15 689 718 ; -C 190 ; WX 834 ; N threequarters ; B 130 -19 861 703 ; -C -1 ; WX 667 ; N Scedilla ; B 90 -225 713 737 ; -C -1 ; WX 299 ; N lcaron ; B 67 0 464 718 ; -C -1 ; WX 667 ; N Kcommaaccent ; B 76 -225 808 718 ; -C -1 ; WX 556 ; N Lacute ; B 76 0 555 929 ; -C 153 ; WX 1000 ; N trademark ; B 186 306 1056 718 ; -C -1 ; WX 556 ; N edotaccent ; B 84 -15 578 706 ; -C 204 ; WX 278 ; N Igrave ; B 91 0 351 929 ; -C -1 ; WX 278 ; N Imacron ; B 91 0 483 879 ; -C -1 ; WX 556 ; N Lcaron ; B 76 0 570 718 ; -C 189 ; WX 834 ; N onehalf ; B 114 -19 839 703 ; -C -1 ; WX 549 ; N lessequal ; B 26 0 666 674 ; -C 244 ; WX 556 ; N ocircumflex ; B 83 -14 585 734 ; -C 241 ; WX 556 ; N ntilde ; B 65 0 592 722 ; -C -1 ; WX 722 ; N Uhungarumlaut ; B 123 -19 801 929 ; -C 201 ; WX 667 ; N Eacute ; B 86 0 762 929 ; -C -1 ; WX 556 ; N emacron ; B 84 -15 580 684 ; -C -1 ; WX 556 ; N gbreve ; B 42 -220 610 731 ; -C 188 ; WX 834 ; N onequarter ; B 150 -19 802 703 ; -C 138 ; WX 667 ; N Scaron ; B 90 -19 713 929 ; -C -1 ; WX 667 ; N Scommaaccent ; B 90 -225 713 737 ; -C -1 ; WX 778 ; N Ohungarumlaut ; B 105 -19 829 929 ; -C 176 ; WX 400 ; N degree ; B 169 411 468 703 ; -C 242 ; WX 556 ; N ograve ; B 83 -14 585 734 ; -C -1 ; WX 722 ; N Ccaron ; B 108 -19 782 929 ; -C 249 ; WX 556 ; N ugrave ; B 94 -15 600 734 ; -C -1 ; WX 453 ; N radical ; B 79 -80 617 762 ; -C -1 ; WX 722 ; N Dcaron ; B 81 0 764 929 ; -C -1 ; WX 333 ; N rcommaaccent ; B 30 -225 446 538 ; -C 209 ; WX 722 ; N Ntilde ; B 76 0 799 917 ; -C 245 ; WX 556 ; N otilde ; B 83 -14 602 722 ; -C -1 ; WX 722 ; N Rcommaaccent ; B 88 -225 773 718 ; -C -1 ; WX 556 ; N Lcommaaccent ; B 76 -225 555 718 ; -C 195 ; WX 667 ; N Atilde ; B 14 0 699 917 ; -C -1 ; WX 667 ; N Aogonek ; B 14 -225 654 718 ; -C 197 ; WX 667 ; N Aring ; B 14 0 654 931 ; -C 213 ; WX 778 ; N Otilde ; B 105 -19 826 917 ; -C -1 ; WX 500 ; N zdotaccent ; B 31 0 571 706 ; -C -1 ; WX 667 ; N Ecaron ; B 86 0 762 929 ; -C -1 ; WX 278 ; N Iogonek ; B -33 -225 341 718 ; -C -1 ; WX 500 ; N kcommaaccent ; B 67 -225 600 718 ; -C -1 ; WX 584 ; N minus ; B 85 216 606 289 ; -C 206 ; WX 278 ; N Icircumflex ; B 91 0 452 929 ; -C -1 ; WX 556 ; N ncaron ; B 65 0 580 734 ; -C -1 ; WX 278 ; N tcommaaccent ; B 63 -225 368 669 ; -C 172 ; WX 584 ; N logicalnot ; B 106 108 628 390 ; -C 246 ; WX 556 ; N odieresis ; B 83 -14 585 706 ; -C 252 ; WX 556 ; N udieresis ; B 94 -15 600 706 ; -C -1 ; WX 549 ; N notequal ; B 34 -35 623 551 ; -C -1 ; WX 556 ; N gcommaaccent ; B 42 -220 610 822 ; -C 240 ; WX 556 ; N eth ; B 81 -15 617 737 ; -C 158 ; WX 500 ; N zcaron ; B 31 0 571 734 ; -C -1 ; WX 556 ; N ncommaaccent ; B 65 -225 573 538 ; -C 185 ; WX 333 ; N onesuperior ; B 166 281 371 703 ; -C -1 ; WX 278 ; N imacron ; B 95 0 417 684 ; -C 128 ; WX 556 ; N Euro ; B 0 0 0 0 ; -EndCharMetrics -StartKernData -StartKernPairs 2705 -KPX A C -30 -KPX A Cacute -30 -KPX A Ccaron -30 -KPX A Ccedilla -30 -KPX A G -30 -KPX A Gbreve -30 -KPX A Gcommaaccent -30 -KPX A O -30 -KPX A Oacute -30 -KPX A Ocircumflex -30 -KPX A Odieresis -30 -KPX A Ograve -30 -KPX A Ohungarumlaut -30 -KPX A Omacron -30 -KPX A Oslash -30 -KPX A Otilde -30 -KPX A Q -30 -KPX A T -120 -KPX A Tcaron -120 -KPX A Tcommaaccent -120 -KPX A U -50 -KPX A Uacute -50 -KPX A Ucircumflex -50 -KPX A Udieresis -50 -KPX A Ugrave -50 -KPX A Uhungarumlaut -50 -KPX A Umacron -50 -KPX A Uogonek -50 -KPX A Uring -50 -KPX A V -70 -KPX A W -50 -KPX A Y -100 -KPX A Yacute -100 -KPX A Ydieresis -100 -KPX A u -30 -KPX A uacute -30 -KPX A ucircumflex -30 -KPX A udieresis -30 -KPX A ugrave -30 -KPX A uhungarumlaut -30 -KPX A umacron -30 -KPX A uogonek -30 -KPX A uring -30 -KPX A v -40 -KPX A w -40 -KPX A y -40 -KPX A yacute -40 -KPX A ydieresis -40 -KPX Aacute C -30 -KPX Aacute Cacute -30 -KPX Aacute Ccaron -30 -KPX Aacute Ccedilla -30 -KPX Aacute G -30 -KPX Aacute Gbreve -30 -KPX Aacute Gcommaaccent -30 -KPX Aacute O -30 -KPX Aacute Oacute -30 -KPX Aacute Ocircumflex -30 -KPX Aacute Odieresis -30 -KPX Aacute Ograve -30 -KPX Aacute Ohungarumlaut -30 -KPX Aacute Omacron -30 -KPX Aacute Oslash -30 -KPX Aacute Otilde -30 -KPX Aacute Q -30 -KPX Aacute T -120 -KPX Aacute Tcaron -120 -KPX Aacute Tcommaaccent -120 -KPX Aacute U -50 -KPX Aacute Uacute -50 -KPX Aacute Ucircumflex -50 -KPX Aacute Udieresis -50 -KPX Aacute Ugrave -50 -KPX Aacute Uhungarumlaut -50 -KPX Aacute Umacron -50 -KPX Aacute Uogonek -50 -KPX Aacute Uring -50 -KPX Aacute V -70 -KPX Aacute W -50 -KPX Aacute Y -100 -KPX Aacute Yacute -100 -KPX Aacute Ydieresis -100 -KPX Aacute u -30 -KPX Aacute uacute -30 -KPX Aacute ucircumflex -30 -KPX Aacute udieresis -30 -KPX Aacute ugrave -30 -KPX Aacute uhungarumlaut -30 -KPX Aacute umacron -30 -KPX Aacute uogonek -30 -KPX Aacute uring -30 -KPX Aacute v -40 -KPX Aacute w -40 -KPX Aacute y -40 -KPX Aacute yacute -40 -KPX Aacute ydieresis -40 -KPX Abreve C -30 -KPX Abreve Cacute -30 -KPX Abreve Ccaron -30 -KPX Abreve Ccedilla -30 -KPX Abreve G -30 -KPX Abreve Gbreve -30 -KPX Abreve Gcommaaccent -30 -KPX Abreve O -30 -KPX Abreve Oacute -30 -KPX Abreve Ocircumflex -30 -KPX Abreve Odieresis -30 -KPX Abreve Ograve -30 -KPX Abreve Ohungarumlaut -30 -KPX Abreve Omacron -30 -KPX Abreve Oslash -30 -KPX Abreve Otilde -30 -KPX Abreve Q -30 -KPX Abreve T -120 -KPX Abreve Tcaron -120 -KPX Abreve Tcommaaccent -120 -KPX Abreve U -50 -KPX Abreve Uacute -50 -KPX Abreve Ucircumflex -50 -KPX Abreve Udieresis -50 -KPX Abreve Ugrave -50 -KPX Abreve Uhungarumlaut -50 -KPX Abreve Umacron -50 -KPX Abreve Uogonek -50 -KPX Abreve Uring -50 -KPX Abreve V -70 -KPX Abreve W -50 -KPX Abreve Y -100 -KPX Abreve Yacute -100 -KPX Abreve Ydieresis -100 -KPX Abreve u -30 -KPX Abreve uacute -30 -KPX Abreve ucircumflex -30 -KPX Abreve udieresis -30 -KPX Abreve ugrave -30 -KPX Abreve uhungarumlaut -30 -KPX Abreve umacron -30 -KPX Abreve uogonek -30 -KPX Abreve uring -30 -KPX Abreve v -40 -KPX Abreve w -40 -KPX Abreve y -40 -KPX Abreve yacute -40 -KPX Abreve ydieresis -40 -KPX Acircumflex C -30 -KPX Acircumflex Cacute -30 -KPX Acircumflex Ccaron -30 -KPX Acircumflex Ccedilla -30 -KPX Acircumflex G -30 -KPX Acircumflex Gbreve -30 -KPX Acircumflex Gcommaaccent -30 -KPX Acircumflex O -30 -KPX Acircumflex Oacute -30 -KPX Acircumflex Ocircumflex -30 -KPX Acircumflex Odieresis -30 -KPX Acircumflex Ograve -30 -KPX Acircumflex Ohungarumlaut -30 -KPX Acircumflex Omacron -30 -KPX Acircumflex Oslash -30 -KPX Acircumflex Otilde -30 -KPX Acircumflex Q -30 -KPX Acircumflex T -120 -KPX Acircumflex Tcaron -120 -KPX Acircumflex Tcommaaccent -120 -KPX Acircumflex U -50 -KPX Acircumflex Uacute -50 -KPX Acircumflex Ucircumflex -50 -KPX Acircumflex Udieresis -50 -KPX Acircumflex Ugrave -50 -KPX Acircumflex Uhungarumlaut -50 -KPX Acircumflex Umacron -50 -KPX Acircumflex Uogonek -50 -KPX Acircumflex Uring -50 -KPX Acircumflex V -70 -KPX Acircumflex W -50 -KPX Acircumflex Y -100 -KPX Acircumflex Yacute -100 -KPX Acircumflex Ydieresis -100 -KPX Acircumflex u -30 -KPX Acircumflex uacute -30 -KPX Acircumflex ucircumflex -30 -KPX Acircumflex udieresis -30 -KPX Acircumflex ugrave -30 -KPX Acircumflex uhungarumlaut -30 -KPX Acircumflex umacron -30 -KPX Acircumflex uogonek -30 -KPX Acircumflex uring -30 -KPX Acircumflex v -40 -KPX Acircumflex w -40 -KPX Acircumflex y -40 -KPX Acircumflex yacute -40 -KPX Acircumflex ydieresis -40 -KPX Adieresis C -30 -KPX Adieresis Cacute -30 -KPX Adieresis Ccaron -30 -KPX Adieresis Ccedilla -30 -KPX Adieresis G -30 -KPX Adieresis Gbreve -30 -KPX Adieresis Gcommaaccent -30 -KPX Adieresis O -30 -KPX Adieresis Oacute -30 -KPX Adieresis Ocircumflex -30 -KPX Adieresis Odieresis -30 -KPX Adieresis Ograve -30 -KPX Adieresis Ohungarumlaut -30 -KPX Adieresis Omacron -30 -KPX Adieresis Oslash -30 -KPX Adieresis Otilde -30 -KPX Adieresis Q -30 -KPX Adieresis T -120 -KPX Adieresis Tcaron -120 -KPX Adieresis Tcommaaccent -120 -KPX Adieresis U -50 -KPX Adieresis Uacute -50 -KPX Adieresis Ucircumflex -50 -KPX Adieresis Udieresis -50 -KPX Adieresis Ugrave -50 -KPX Adieresis Uhungarumlaut -50 -KPX Adieresis Umacron -50 -KPX Adieresis Uogonek -50 -KPX Adieresis Uring -50 -KPX Adieresis V -70 -KPX Adieresis W -50 -KPX Adieresis Y -100 -KPX Adieresis Yacute -100 -KPX Adieresis Ydieresis -100 -KPX Adieresis u -30 -KPX Adieresis uacute -30 -KPX Adieresis ucircumflex -30 -KPX Adieresis udieresis -30 -KPX Adieresis ugrave -30 -KPX Adieresis uhungarumlaut -30 -KPX Adieresis umacron -30 -KPX Adieresis uogonek -30 -KPX Adieresis uring -30 -KPX Adieresis v -40 -KPX Adieresis w -40 -KPX Adieresis y -40 -KPX Adieresis yacute -40 -KPX Adieresis ydieresis -40 -KPX Agrave C -30 -KPX Agrave Cacute -30 -KPX Agrave Ccaron -30 -KPX Agrave Ccedilla -30 -KPX Agrave G -30 -KPX Agrave Gbreve -30 -KPX Agrave Gcommaaccent -30 -KPX Agrave O -30 -KPX Agrave Oacute -30 -KPX Agrave Ocircumflex -30 -KPX Agrave Odieresis -30 -KPX Agrave Ograve -30 -KPX Agrave Ohungarumlaut -30 -KPX Agrave Omacron -30 -KPX Agrave Oslash -30 -KPX Agrave Otilde -30 -KPX Agrave Q -30 -KPX Agrave T -120 -KPX Agrave Tcaron -120 -KPX Agrave Tcommaaccent -120 -KPX Agrave U -50 -KPX Agrave Uacute -50 -KPX Agrave Ucircumflex -50 -KPX Agrave Udieresis -50 -KPX Agrave Ugrave -50 -KPX Agrave Uhungarumlaut -50 -KPX Agrave Umacron -50 -KPX Agrave Uogonek -50 -KPX Agrave Uring -50 -KPX Agrave V -70 -KPX Agrave W -50 -KPX Agrave Y -100 -KPX Agrave Yacute -100 -KPX Agrave Ydieresis -100 -KPX Agrave u -30 -KPX Agrave uacute -30 -KPX Agrave ucircumflex -30 -KPX Agrave udieresis -30 -KPX Agrave ugrave -30 -KPX Agrave uhungarumlaut -30 -KPX Agrave umacron -30 -KPX Agrave uogonek -30 -KPX Agrave uring -30 -KPX Agrave v -40 -KPX Agrave w -40 -KPX Agrave y -40 -KPX Agrave yacute -40 -KPX Agrave ydieresis -40 -KPX Amacron C -30 -KPX Amacron Cacute -30 -KPX Amacron Ccaron -30 -KPX Amacron Ccedilla -30 -KPX Amacron G -30 -KPX Amacron Gbreve -30 -KPX Amacron Gcommaaccent -30 -KPX Amacron O -30 -KPX Amacron Oacute -30 -KPX Amacron Ocircumflex -30 -KPX Amacron Odieresis -30 -KPX Amacron Ograve -30 -KPX Amacron Ohungarumlaut -30 -KPX Amacron Omacron -30 -KPX Amacron Oslash -30 -KPX Amacron Otilde -30 -KPX Amacron Q -30 -KPX Amacron T -120 -KPX Amacron Tcaron -120 -KPX Amacron Tcommaaccent -120 -KPX Amacron U -50 -KPX Amacron Uacute -50 -KPX Amacron Ucircumflex -50 -KPX Amacron Udieresis -50 -KPX Amacron Ugrave -50 -KPX Amacron Uhungarumlaut -50 -KPX Amacron Umacron -50 -KPX Amacron Uogonek -50 -KPX Amacron Uring -50 -KPX Amacron V -70 -KPX Amacron W -50 -KPX Amacron Y -100 -KPX Amacron Yacute -100 -KPX Amacron Ydieresis -100 -KPX Amacron u -30 -KPX Amacron uacute -30 -KPX Amacron ucircumflex -30 -KPX Amacron udieresis -30 -KPX Amacron ugrave -30 -KPX Amacron uhungarumlaut -30 -KPX Amacron umacron -30 -KPX Amacron uogonek -30 -KPX Amacron uring -30 -KPX Amacron v -40 -KPX Amacron w -40 -KPX Amacron y -40 -KPX Amacron yacute -40 -KPX Amacron ydieresis -40 -KPX Aogonek C -30 -KPX Aogonek Cacute -30 -KPX Aogonek Ccaron -30 -KPX Aogonek Ccedilla -30 -KPX Aogonek G -30 -KPX Aogonek Gbreve -30 -KPX Aogonek Gcommaaccent -30 -KPX Aogonek O -30 -KPX Aogonek Oacute -30 -KPX Aogonek Ocircumflex -30 -KPX Aogonek Odieresis -30 -KPX Aogonek Ograve -30 -KPX Aogonek Ohungarumlaut -30 -KPX Aogonek Omacron -30 -KPX Aogonek Oslash -30 -KPX Aogonek Otilde -30 -KPX Aogonek Q -30 -KPX Aogonek T -120 -KPX Aogonek Tcaron -120 -KPX Aogonek Tcommaaccent -120 -KPX Aogonek U -50 -KPX Aogonek Uacute -50 -KPX Aogonek Ucircumflex -50 -KPX Aogonek Udieresis -50 -KPX Aogonek Ugrave -50 -KPX Aogonek Uhungarumlaut -50 -KPX Aogonek Umacron -50 -KPX Aogonek Uogonek -50 -KPX Aogonek Uring -50 -KPX Aogonek V -70 -KPX Aogonek W -50 -KPX Aogonek Y -100 -KPX Aogonek Yacute -100 -KPX Aogonek Ydieresis -100 -KPX Aogonek u -30 -KPX Aogonek uacute -30 -KPX Aogonek ucircumflex -30 -KPX Aogonek udieresis -30 -KPX Aogonek ugrave -30 -KPX Aogonek uhungarumlaut -30 -KPX Aogonek umacron -30 -KPX Aogonek uogonek -30 -KPX Aogonek uring -30 -KPX Aogonek v -40 -KPX Aogonek w -40 -KPX Aogonek y -40 -KPX Aogonek yacute -40 -KPX Aogonek ydieresis -40 -KPX Aring C -30 -KPX Aring Cacute -30 -KPX Aring Ccaron -30 -KPX Aring Ccedilla -30 -KPX Aring G -30 -KPX Aring Gbreve -30 -KPX Aring Gcommaaccent -30 -KPX Aring O -30 -KPX Aring Oacute -30 -KPX Aring Ocircumflex -30 -KPX Aring Odieresis -30 -KPX Aring Ograve -30 -KPX Aring Ohungarumlaut -30 -KPX Aring Omacron -30 -KPX Aring Oslash -30 -KPX Aring Otilde -30 -KPX Aring Q -30 -KPX Aring T -120 -KPX Aring Tcaron -120 -KPX Aring Tcommaaccent -120 -KPX Aring U -50 -KPX Aring Uacute -50 -KPX Aring Ucircumflex -50 -KPX Aring Udieresis -50 -KPX Aring Ugrave -50 -KPX Aring Uhungarumlaut -50 -KPX Aring Umacron -50 -KPX Aring Uogonek -50 -KPX Aring Uring -50 -KPX Aring V -70 -KPX Aring W -50 -KPX Aring Y -100 -KPX Aring Yacute -100 -KPX Aring Ydieresis -100 -KPX Aring u -30 -KPX Aring uacute -30 -KPX Aring ucircumflex -30 -KPX Aring udieresis -30 -KPX Aring ugrave -30 -KPX Aring uhungarumlaut -30 -KPX Aring umacron -30 -KPX Aring uogonek -30 -KPX Aring uring -30 -KPX Aring v -40 -KPX Aring w -40 -KPX Aring y -40 -KPX Aring yacute -40 -KPX Aring ydieresis -40 -KPX Atilde C -30 -KPX Atilde Cacute -30 -KPX Atilde Ccaron -30 -KPX Atilde Ccedilla -30 -KPX Atilde G -30 -KPX Atilde Gbreve -30 -KPX Atilde Gcommaaccent -30 -KPX Atilde O -30 -KPX Atilde Oacute -30 -KPX Atilde Ocircumflex -30 -KPX Atilde Odieresis -30 -KPX Atilde Ograve -30 -KPX Atilde Ohungarumlaut -30 -KPX Atilde Omacron -30 -KPX Atilde Oslash -30 -KPX Atilde Otilde -30 -KPX Atilde Q -30 -KPX Atilde T -120 -KPX Atilde Tcaron -120 -KPX Atilde Tcommaaccent -120 -KPX Atilde U -50 -KPX Atilde Uacute -50 -KPX Atilde Ucircumflex -50 -KPX Atilde Udieresis -50 -KPX Atilde Ugrave -50 -KPX Atilde Uhungarumlaut -50 -KPX Atilde Umacron -50 -KPX Atilde Uogonek -50 -KPX Atilde Uring -50 -KPX Atilde V -70 -KPX Atilde W -50 -KPX Atilde Y -100 -KPX Atilde Yacute -100 -KPX Atilde Ydieresis -100 -KPX Atilde u -30 -KPX Atilde uacute -30 -KPX Atilde ucircumflex -30 -KPX Atilde udieresis -30 -KPX Atilde ugrave -30 -KPX Atilde uhungarumlaut -30 -KPX Atilde umacron -30 -KPX Atilde uogonek -30 -KPX Atilde uring -30 -KPX Atilde v -40 -KPX Atilde w -40 -KPX Atilde y -40 -KPX Atilde yacute -40 -KPX Atilde ydieresis -40 -KPX B U -10 -KPX B Uacute -10 -KPX B Ucircumflex -10 -KPX B Udieresis -10 -KPX B Ugrave -10 -KPX B Uhungarumlaut -10 -KPX B Umacron -10 -KPX B Uogonek -10 -KPX B Uring -10 -KPX B comma -20 -KPX B period -20 -KPX C comma -30 -KPX C period -30 -KPX Cacute comma -30 -KPX Cacute period -30 -KPX Ccaron comma -30 -KPX Ccaron period -30 -KPX Ccedilla comma -30 -KPX Ccedilla period -30 -KPX D A -40 -KPX D Aacute -40 -KPX D Abreve -40 -KPX D Acircumflex -40 -KPX D Adieresis -40 -KPX D Agrave -40 -KPX D Amacron -40 -KPX D Aogonek -40 -KPX D Aring -40 -KPX D Atilde -40 -KPX D V -70 -KPX D W -40 -KPX D Y -90 -KPX D Yacute -90 -KPX D Ydieresis -90 -KPX D comma -70 -KPX D period -70 -KPX Dcaron A -40 -KPX Dcaron Aacute -40 -KPX Dcaron Abreve -40 -KPX Dcaron Acircumflex -40 -KPX Dcaron Adieresis -40 -KPX Dcaron Agrave -40 -KPX Dcaron Amacron -40 -KPX Dcaron Aogonek -40 -KPX Dcaron Aring -40 -KPX Dcaron Atilde -40 -KPX Dcaron V -70 -KPX Dcaron W -40 -KPX Dcaron Y -90 -KPX Dcaron Yacute -90 -KPX Dcaron Ydieresis -90 -KPX Dcaron comma -70 -KPX Dcaron period -70 -KPX Dcroat A -40 -KPX Dcroat Aacute -40 -KPX Dcroat Abreve -40 -KPX Dcroat Acircumflex -40 -KPX Dcroat Adieresis -40 -KPX Dcroat Agrave -40 -KPX Dcroat Amacron -40 -KPX Dcroat Aogonek -40 -KPX Dcroat Aring -40 -KPX Dcroat Atilde -40 -KPX Dcroat V -70 -KPX Dcroat W -40 -KPX Dcroat Y -90 -KPX Dcroat Yacute -90 -KPX Dcroat Ydieresis -90 -KPX Dcroat comma -70 -KPX Dcroat period -70 -KPX F A -80 -KPX F Aacute -80 -KPX F Abreve -80 -KPX F Acircumflex -80 -KPX F Adieresis -80 -KPX F Agrave -80 -KPX F Amacron -80 -KPX F Aogonek -80 -KPX F Aring -80 -KPX F Atilde -80 -KPX F a -50 -KPX F aacute -50 -KPX F abreve -50 -KPX F acircumflex -50 -KPX F adieresis -50 -KPX F agrave -50 -KPX F amacron -50 -KPX F aogonek -50 -KPX F aring -50 -KPX F atilde -50 -KPX F comma -150 -KPX F e -30 -KPX F eacute -30 -KPX F ecaron -30 -KPX F ecircumflex -30 -KPX F edieresis -30 -KPX F edotaccent -30 -KPX F egrave -30 -KPX F emacron -30 -KPX F eogonek -30 -KPX F o -30 -KPX F oacute -30 -KPX F ocircumflex -30 -KPX F odieresis -30 -KPX F ograve -30 -KPX F ohungarumlaut -30 -KPX F omacron -30 -KPX F oslash -30 -KPX F otilde -30 -KPX F period -150 -KPX F r -45 -KPX F racute -45 -KPX F rcaron -45 -KPX F rcommaaccent -45 -KPX J A -20 -KPX J Aacute -20 -KPX J Abreve -20 -KPX J Acircumflex -20 -KPX J Adieresis -20 -KPX J Agrave -20 -KPX J Amacron -20 -KPX J Aogonek -20 -KPX J Aring -20 -KPX J Atilde -20 -KPX J a -20 -KPX J aacute -20 -KPX J abreve -20 -KPX J acircumflex -20 -KPX J adieresis -20 -KPX J agrave -20 -KPX J amacron -20 -KPX J aogonek -20 -KPX J aring -20 -KPX J atilde -20 -KPX J comma -30 -KPX J period -30 -KPX J u -20 -KPX J uacute -20 -KPX J ucircumflex -20 -KPX J udieresis -20 -KPX J ugrave -20 -KPX J uhungarumlaut -20 -KPX J umacron -20 -KPX J uogonek -20 -KPX J uring -20 -KPX K O -50 -KPX K Oacute -50 -KPX K Ocircumflex -50 -KPX K Odieresis -50 -KPX K Ograve -50 -KPX K Ohungarumlaut -50 -KPX K Omacron -50 -KPX K Oslash -50 -KPX K Otilde -50 -KPX K e -40 -KPX K eacute -40 -KPX K ecaron -40 -KPX K ecircumflex -40 -KPX K edieresis -40 -KPX K edotaccent -40 -KPX K egrave -40 -KPX K emacron -40 -KPX K eogonek -40 -KPX K o -40 -KPX K oacute -40 -KPX K ocircumflex -40 -KPX K odieresis -40 -KPX K ograve -40 -KPX K ohungarumlaut -40 -KPX K omacron -40 -KPX K oslash -40 -KPX K otilde -40 -KPX K u -30 -KPX K uacute -30 -KPX K ucircumflex -30 -KPX K udieresis -30 -KPX K ugrave -30 -KPX K uhungarumlaut -30 -KPX K umacron -30 -KPX K uogonek -30 -KPX K uring -30 -KPX K y -50 -KPX K yacute -50 -KPX K ydieresis -50 -KPX Kcommaaccent O -50 -KPX Kcommaaccent Oacute -50 -KPX Kcommaaccent Ocircumflex -50 -KPX Kcommaaccent Odieresis -50 -KPX Kcommaaccent Ograve -50 -KPX Kcommaaccent Ohungarumlaut -50 -KPX Kcommaaccent Omacron -50 -KPX Kcommaaccent Oslash -50 -KPX Kcommaaccent Otilde -50 -KPX Kcommaaccent e -40 -KPX Kcommaaccent eacute -40 -KPX Kcommaaccent ecaron -40 -KPX Kcommaaccent ecircumflex -40 -KPX Kcommaaccent edieresis -40 -KPX Kcommaaccent edotaccent -40 -KPX Kcommaaccent egrave -40 -KPX Kcommaaccent emacron -40 -KPX Kcommaaccent eogonek -40 -KPX Kcommaaccent o -40 -KPX Kcommaaccent oacute -40 -KPX Kcommaaccent ocircumflex -40 -KPX Kcommaaccent odieresis -40 -KPX Kcommaaccent ograve -40 -KPX Kcommaaccent ohungarumlaut -40 -KPX Kcommaaccent omacron -40 -KPX Kcommaaccent oslash -40 -KPX Kcommaaccent otilde -40 -KPX Kcommaaccent u -30 -KPX Kcommaaccent uacute -30 -KPX Kcommaaccent ucircumflex -30 -KPX Kcommaaccent udieresis -30 -KPX Kcommaaccent ugrave -30 -KPX Kcommaaccent uhungarumlaut -30 -KPX Kcommaaccent umacron -30 -KPX Kcommaaccent uogonek -30 -KPX Kcommaaccent uring -30 -KPX Kcommaaccent y -50 -KPX Kcommaaccent yacute -50 -KPX Kcommaaccent ydieresis -50 -KPX L T -110 -KPX L Tcaron -110 -KPX L Tcommaaccent -110 -KPX L V -110 -KPX L W -70 -KPX L Y -140 -KPX L Yacute -140 -KPX L Ydieresis -140 -KPX L quotedblright -140 -KPX L quoteright -160 -KPX L y -30 -KPX L yacute -30 -KPX L ydieresis -30 -KPX Lacute T -110 -KPX Lacute Tcaron -110 -KPX Lacute Tcommaaccent -110 -KPX Lacute V -110 -KPX Lacute W -70 -KPX Lacute Y -140 -KPX Lacute Yacute -140 -KPX Lacute Ydieresis -140 -KPX Lacute quotedblright -140 -KPX Lacute quoteright -160 -KPX Lacute y -30 -KPX Lacute yacute -30 -KPX Lacute ydieresis -30 -KPX Lcaron T -110 -KPX Lcaron Tcaron -110 -KPX Lcaron Tcommaaccent -110 -KPX Lcaron V -110 -KPX Lcaron W -70 -KPX Lcaron Y -140 -KPX Lcaron Yacute -140 -KPX Lcaron Ydieresis -140 -KPX Lcaron quotedblright -140 -KPX Lcaron quoteright -160 -KPX Lcaron y -30 -KPX Lcaron yacute -30 -KPX Lcaron ydieresis -30 -KPX Lcommaaccent T -110 -KPX Lcommaaccent Tcaron -110 -KPX Lcommaaccent Tcommaaccent -110 -KPX Lcommaaccent V -110 -KPX Lcommaaccent W -70 -KPX Lcommaaccent Y -140 -KPX Lcommaaccent Yacute -140 -KPX Lcommaaccent Ydieresis -140 -KPX Lcommaaccent quotedblright -140 -KPX Lcommaaccent quoteright -160 -KPX Lcommaaccent y -30 -KPX Lcommaaccent yacute -30 -KPX Lcommaaccent ydieresis -30 -KPX Lslash T -110 -KPX Lslash Tcaron -110 -KPX Lslash Tcommaaccent -110 -KPX Lslash V -110 -KPX Lslash W -70 -KPX Lslash Y -140 -KPX Lslash Yacute -140 -KPX Lslash Ydieresis -140 -KPX Lslash quotedblright -140 -KPX Lslash quoteright -160 -KPX Lslash y -30 -KPX Lslash yacute -30 -KPX Lslash ydieresis -30 -KPX O A -20 -KPX O Aacute -20 -KPX O Abreve -20 -KPX O Acircumflex -20 -KPX O Adieresis -20 -KPX O Agrave -20 -KPX O Amacron -20 -KPX O Aogonek -20 -KPX O Aring -20 -KPX O Atilde -20 -KPX O T -40 -KPX O Tcaron -40 -KPX O Tcommaaccent -40 -KPX O V -50 -KPX O W -30 -KPX O X -60 -KPX O Y -70 -KPX O Yacute -70 -KPX O Ydieresis -70 -KPX O comma -40 -KPX O period -40 -KPX Oacute A -20 -KPX Oacute Aacute -20 -KPX Oacute Abreve -20 -KPX Oacute Acircumflex -20 -KPX Oacute Adieresis -20 -KPX Oacute Agrave -20 -KPX Oacute Amacron -20 -KPX Oacute Aogonek -20 -KPX Oacute Aring -20 -KPX Oacute Atilde -20 -KPX Oacute T -40 -KPX Oacute Tcaron -40 -KPX Oacute Tcommaaccent -40 -KPX Oacute V -50 -KPX Oacute W -30 -KPX Oacute X -60 -KPX Oacute Y -70 -KPX Oacute Yacute -70 -KPX Oacute Ydieresis -70 -KPX Oacute comma -40 -KPX Oacute period -40 -KPX Ocircumflex A -20 -KPX Ocircumflex Aacute -20 -KPX Ocircumflex Abreve -20 -KPX Ocircumflex Acircumflex -20 -KPX Ocircumflex Adieresis -20 -KPX Ocircumflex Agrave -20 -KPX Ocircumflex Amacron -20 -KPX Ocircumflex Aogonek -20 -KPX Ocircumflex Aring -20 -KPX Ocircumflex Atilde -20 -KPX Ocircumflex T -40 -KPX Ocircumflex Tcaron -40 -KPX Ocircumflex Tcommaaccent -40 -KPX Ocircumflex V -50 -KPX Ocircumflex W -30 -KPX Ocircumflex X -60 -KPX Ocircumflex Y -70 -KPX Ocircumflex Yacute -70 -KPX Ocircumflex Ydieresis -70 -KPX Ocircumflex comma -40 -KPX Ocircumflex period -40 -KPX Odieresis A -20 -KPX Odieresis Aacute -20 -KPX Odieresis Abreve -20 -KPX Odieresis Acircumflex -20 -KPX Odieresis Adieresis -20 -KPX Odieresis Agrave -20 -KPX Odieresis Amacron -20 -KPX Odieresis Aogonek -20 -KPX Odieresis Aring -20 -KPX Odieresis Atilde -20 -KPX Odieresis T -40 -KPX Odieresis Tcaron -40 -KPX Odieresis Tcommaaccent -40 -KPX Odieresis V -50 -KPX Odieresis W -30 -KPX Odieresis X -60 -KPX Odieresis Y -70 -KPX Odieresis Yacute -70 -KPX Odieresis Ydieresis -70 -KPX Odieresis comma -40 -KPX Odieresis period -40 -KPX Ograve A -20 -KPX Ograve Aacute -20 -KPX Ograve Abreve -20 -KPX Ograve Acircumflex -20 -KPX Ograve Adieresis -20 -KPX Ograve Agrave -20 -KPX Ograve Amacron -20 -KPX Ograve Aogonek -20 -KPX Ograve Aring -20 -KPX Ograve Atilde -20 -KPX Ograve T -40 -KPX Ograve Tcaron -40 -KPX Ograve Tcommaaccent -40 -KPX Ograve V -50 -KPX Ograve W -30 -KPX Ograve X -60 -KPX Ograve Y -70 -KPX Ograve Yacute -70 -KPX Ograve Ydieresis -70 -KPX Ograve comma -40 -KPX Ograve period -40 -KPX Ohungarumlaut A -20 -KPX Ohungarumlaut Aacute -20 -KPX Ohungarumlaut Abreve -20 -KPX Ohungarumlaut Acircumflex -20 -KPX Ohungarumlaut Adieresis -20 -KPX Ohungarumlaut Agrave -20 -KPX Ohungarumlaut Amacron -20 -KPX Ohungarumlaut Aogonek -20 -KPX Ohungarumlaut Aring -20 -KPX Ohungarumlaut Atilde -20 -KPX Ohungarumlaut T -40 -KPX Ohungarumlaut Tcaron -40 -KPX Ohungarumlaut Tcommaaccent -40 -KPX Ohungarumlaut V -50 -KPX Ohungarumlaut W -30 -KPX Ohungarumlaut X -60 -KPX Ohungarumlaut Y -70 -KPX Ohungarumlaut Yacute -70 -KPX Ohungarumlaut Ydieresis -70 -KPX Ohungarumlaut comma -40 -KPX Ohungarumlaut period -40 -KPX Omacron A -20 -KPX Omacron Aacute -20 -KPX Omacron Abreve -20 -KPX Omacron Acircumflex -20 -KPX Omacron Adieresis -20 -KPX Omacron Agrave -20 -KPX Omacron Amacron -20 -KPX Omacron Aogonek -20 -KPX Omacron Aring -20 -KPX Omacron Atilde -20 -KPX Omacron T -40 -KPX Omacron Tcaron -40 -KPX Omacron Tcommaaccent -40 -KPX Omacron V -50 -KPX Omacron W -30 -KPX Omacron X -60 -KPX Omacron Y -70 -KPX Omacron Yacute -70 -KPX Omacron Ydieresis -70 -KPX Omacron comma -40 -KPX Omacron period -40 -KPX Oslash A -20 -KPX Oslash Aacute -20 -KPX Oslash Abreve -20 -KPX Oslash Acircumflex -20 -KPX Oslash Adieresis -20 -KPX Oslash Agrave -20 -KPX Oslash Amacron -20 -KPX Oslash Aogonek -20 -KPX Oslash Aring -20 -KPX Oslash Atilde -20 -KPX Oslash T -40 -KPX Oslash Tcaron -40 -KPX Oslash Tcommaaccent -40 -KPX Oslash V -50 -KPX Oslash W -30 -KPX Oslash X -60 -KPX Oslash Y -70 -KPX Oslash Yacute -70 -KPX Oslash Ydieresis -70 -KPX Oslash comma -40 -KPX Oslash period -40 -KPX Otilde A -20 -KPX Otilde Aacute -20 -KPX Otilde Abreve -20 -KPX Otilde Acircumflex -20 -KPX Otilde Adieresis -20 -KPX Otilde Agrave -20 -KPX Otilde Amacron -20 -KPX Otilde Aogonek -20 -KPX Otilde Aring -20 -KPX Otilde Atilde -20 -KPX Otilde T -40 -KPX Otilde Tcaron -40 -KPX Otilde Tcommaaccent -40 -KPX Otilde V -50 -KPX Otilde W -30 -KPX Otilde X -60 -KPX Otilde Y -70 -KPX Otilde Yacute -70 -KPX Otilde Ydieresis -70 -KPX Otilde comma -40 -KPX Otilde period -40 -KPX P A -120 -KPX P Aacute -120 -KPX P Abreve -120 -KPX P Acircumflex -120 -KPX P Adieresis -120 -KPX P Agrave -120 -KPX P Amacron -120 -KPX P Aogonek -120 -KPX P Aring -120 -KPX P Atilde -120 -KPX P a -40 -KPX P aacute -40 -KPX P abreve -40 -KPX P acircumflex -40 -KPX P adieresis -40 -KPX P agrave -40 -KPX P amacron -40 -KPX P aogonek -40 -KPX P aring -40 -KPX P atilde -40 -KPX P comma -180 -KPX P e -50 -KPX P eacute -50 -KPX P ecaron -50 -KPX P ecircumflex -50 -KPX P edieresis -50 -KPX P edotaccent -50 -KPX P egrave -50 -KPX P emacron -50 -KPX P eogonek -50 -KPX P o -50 -KPX P oacute -50 -KPX P ocircumflex -50 -KPX P odieresis -50 -KPX P ograve -50 -KPX P ohungarumlaut -50 -KPX P omacron -50 -KPX P oslash -50 -KPX P otilde -50 -KPX P period -180 -KPX Q U -10 -KPX Q Uacute -10 -KPX Q Ucircumflex -10 -KPX Q Udieresis -10 -KPX Q Ugrave -10 -KPX Q Uhungarumlaut -10 -KPX Q Umacron -10 -KPX Q Uogonek -10 -KPX Q Uring -10 -KPX R O -20 -KPX R Oacute -20 -KPX R Ocircumflex -20 -KPX R Odieresis -20 -KPX R Ograve -20 -KPX R Ohungarumlaut -20 -KPX R Omacron -20 -KPX R Oslash -20 -KPX R Otilde -20 -KPX R T -30 -KPX R Tcaron -30 -KPX R Tcommaaccent -30 -KPX R U -40 -KPX R Uacute -40 -KPX R Ucircumflex -40 -KPX R Udieresis -40 -KPX R Ugrave -40 -KPX R Uhungarumlaut -40 -KPX R Umacron -40 -KPX R Uogonek -40 -KPX R Uring -40 -KPX R V -50 -KPX R W -30 -KPX R Y -50 -KPX R Yacute -50 -KPX R Ydieresis -50 -KPX Racute O -20 -KPX Racute Oacute -20 -KPX Racute Ocircumflex -20 -KPX Racute Odieresis -20 -KPX Racute Ograve -20 -KPX Racute Ohungarumlaut -20 -KPX Racute Omacron -20 -KPX Racute Oslash -20 -KPX Racute Otilde -20 -KPX Racute T -30 -KPX Racute Tcaron -30 -KPX Racute Tcommaaccent -30 -KPX Racute U -40 -KPX Racute Uacute -40 -KPX Racute Ucircumflex -40 -KPX Racute Udieresis -40 -KPX Racute Ugrave -40 -KPX Racute Uhungarumlaut -40 -KPX Racute Umacron -40 -KPX Racute Uogonek -40 -KPX Racute Uring -40 -KPX Racute V -50 -KPX Racute W -30 -KPX Racute Y -50 -KPX Racute Yacute -50 -KPX Racute Ydieresis -50 -KPX Rcaron O -20 -KPX Rcaron Oacute -20 -KPX Rcaron Ocircumflex -20 -KPX Rcaron Odieresis -20 -KPX Rcaron Ograve -20 -KPX Rcaron Ohungarumlaut -20 -KPX Rcaron Omacron -20 -KPX Rcaron Oslash -20 -KPX Rcaron Otilde -20 -KPX Rcaron T -30 -KPX Rcaron Tcaron -30 -KPX Rcaron Tcommaaccent -30 -KPX Rcaron U -40 -KPX Rcaron Uacute -40 -KPX Rcaron Ucircumflex -40 -KPX Rcaron Udieresis -40 -KPX Rcaron Ugrave -40 -KPX Rcaron Uhungarumlaut -40 -KPX Rcaron Umacron -40 -KPX Rcaron Uogonek -40 -KPX Rcaron Uring -40 -KPX Rcaron V -50 -KPX Rcaron W -30 -KPX Rcaron Y -50 -KPX Rcaron Yacute -50 -KPX Rcaron Ydieresis -50 -KPX Rcommaaccent O -20 -KPX Rcommaaccent Oacute -20 -KPX Rcommaaccent Ocircumflex -20 -KPX Rcommaaccent Odieresis -20 -KPX Rcommaaccent Ograve -20 -KPX Rcommaaccent Ohungarumlaut -20 -KPX Rcommaaccent Omacron -20 -KPX Rcommaaccent Oslash -20 -KPX Rcommaaccent Otilde -20 -KPX Rcommaaccent T -30 -KPX Rcommaaccent Tcaron -30 -KPX Rcommaaccent Tcommaaccent -30 -KPX Rcommaaccent U -40 -KPX Rcommaaccent Uacute -40 -KPX Rcommaaccent Ucircumflex -40 -KPX Rcommaaccent Udieresis -40 -KPX Rcommaaccent Ugrave -40 -KPX Rcommaaccent Uhungarumlaut -40 -KPX Rcommaaccent Umacron -40 -KPX Rcommaaccent Uogonek -40 -KPX Rcommaaccent Uring -40 -KPX Rcommaaccent V -50 -KPX Rcommaaccent W -30 -KPX Rcommaaccent Y -50 -KPX Rcommaaccent Yacute -50 -KPX Rcommaaccent Ydieresis -50 -KPX S comma -20 -KPX S period -20 -KPX Sacute comma -20 -KPX Sacute period -20 -KPX Scaron comma -20 -KPX Scaron period -20 -KPX Scedilla comma -20 -KPX Scedilla period -20 -KPX Scommaaccent comma -20 -KPX Scommaaccent period -20 -KPX T A -120 -KPX T Aacute -120 -KPX T Abreve -120 -KPX T Acircumflex -120 -KPX T Adieresis -120 -KPX T Agrave -120 -KPX T Amacron -120 -KPX T Aogonek -120 -KPX T Aring -120 -KPX T Atilde -120 -KPX T O -40 -KPX T Oacute -40 -KPX T Ocircumflex -40 -KPX T Odieresis -40 -KPX T Ograve -40 -KPX T Ohungarumlaut -40 -KPX T Omacron -40 -KPX T Oslash -40 -KPX T Otilde -40 -KPX T a -120 -KPX T aacute -120 -KPX T abreve -60 -KPX T acircumflex -120 -KPX T adieresis -120 -KPX T agrave -120 -KPX T amacron -60 -KPX T aogonek -120 -KPX T aring -120 -KPX T atilde -60 -KPX T colon -20 -KPX T comma -120 -KPX T e -120 -KPX T eacute -120 -KPX T ecaron -120 -KPX T ecircumflex -120 -KPX T edieresis -120 -KPX T edotaccent -120 -KPX T egrave -60 -KPX T emacron -60 -KPX T eogonek -120 -KPX T hyphen -140 -KPX T o -120 -KPX T oacute -120 -KPX T ocircumflex -120 -KPX T odieresis -120 -KPX T ograve -120 -KPX T ohungarumlaut -120 -KPX T omacron -60 -KPX T oslash -120 -KPX T otilde -60 -KPX T period -120 -KPX T r -120 -KPX T racute -120 -KPX T rcaron -120 -KPX T rcommaaccent -120 -KPX T semicolon -20 -KPX T u -120 -KPX T uacute -120 -KPX T ucircumflex -120 -KPX T udieresis -120 -KPX T ugrave -120 -KPX T uhungarumlaut -120 -KPX T umacron -60 -KPX T uogonek -120 -KPX T uring -120 -KPX T w -120 -KPX T y -120 -KPX T yacute -120 -KPX T ydieresis -60 -KPX Tcaron A -120 -KPX Tcaron Aacute -120 -KPX Tcaron Abreve -120 -KPX Tcaron Acircumflex -120 -KPX Tcaron Adieresis -120 -KPX Tcaron Agrave -120 -KPX Tcaron Amacron -120 -KPX Tcaron Aogonek -120 -KPX Tcaron Aring -120 -KPX Tcaron Atilde -120 -KPX Tcaron O -40 -KPX Tcaron Oacute -40 -KPX Tcaron Ocircumflex -40 -KPX Tcaron Odieresis -40 -KPX Tcaron Ograve -40 -KPX Tcaron Ohungarumlaut -40 -KPX Tcaron Omacron -40 -KPX Tcaron Oslash -40 -KPX Tcaron Otilde -40 -KPX Tcaron a -120 -KPX Tcaron aacute -120 -KPX Tcaron abreve -60 -KPX Tcaron acircumflex -120 -KPX Tcaron adieresis -120 -KPX Tcaron agrave -120 -KPX Tcaron amacron -60 -KPX Tcaron aogonek -120 -KPX Tcaron aring -120 -KPX Tcaron atilde -60 -KPX Tcaron colon -20 -KPX Tcaron comma -120 -KPX Tcaron e -120 -KPX Tcaron eacute -120 -KPX Tcaron ecaron -120 -KPX Tcaron ecircumflex -120 -KPX Tcaron edieresis -120 -KPX Tcaron edotaccent -120 -KPX Tcaron egrave -60 -KPX Tcaron emacron -60 -KPX Tcaron eogonek -120 -KPX Tcaron hyphen -140 -KPX Tcaron o -120 -KPX Tcaron oacute -120 -KPX Tcaron ocircumflex -120 -KPX Tcaron odieresis -120 -KPX Tcaron ograve -120 -KPX Tcaron ohungarumlaut -120 -KPX Tcaron omacron -60 -KPX Tcaron oslash -120 -KPX Tcaron otilde -60 -KPX Tcaron period -120 -KPX Tcaron r -120 -KPX Tcaron racute -120 -KPX Tcaron rcaron -120 -KPX Tcaron rcommaaccent -120 -KPX Tcaron semicolon -20 -KPX Tcaron u -120 -KPX Tcaron uacute -120 -KPX Tcaron ucircumflex -120 -KPX Tcaron udieresis -120 -KPX Tcaron ugrave -120 -KPX Tcaron uhungarumlaut -120 -KPX Tcaron umacron -60 -KPX Tcaron uogonek -120 -KPX Tcaron uring -120 -KPX Tcaron w -120 -KPX Tcaron y -120 -KPX Tcaron yacute -120 -KPX Tcaron ydieresis -60 -KPX Tcommaaccent A -120 -KPX Tcommaaccent Aacute -120 -KPX Tcommaaccent Abreve -120 -KPX Tcommaaccent Acircumflex -120 -KPX Tcommaaccent Adieresis -120 -KPX Tcommaaccent Agrave -120 -KPX Tcommaaccent Amacron -120 -KPX Tcommaaccent Aogonek -120 -KPX Tcommaaccent Aring -120 -KPX Tcommaaccent Atilde -120 -KPX Tcommaaccent O -40 -KPX Tcommaaccent Oacute -40 -KPX Tcommaaccent Ocircumflex -40 -KPX Tcommaaccent Odieresis -40 -KPX Tcommaaccent Ograve -40 -KPX Tcommaaccent Ohungarumlaut -40 -KPX Tcommaaccent Omacron -40 -KPX Tcommaaccent Oslash -40 -KPX Tcommaaccent Otilde -40 -KPX Tcommaaccent a -120 -KPX Tcommaaccent aacute -120 -KPX Tcommaaccent abreve -60 -KPX Tcommaaccent acircumflex -120 -KPX Tcommaaccent adieresis -120 -KPX Tcommaaccent agrave -120 -KPX Tcommaaccent amacron -60 -KPX Tcommaaccent aogonek -120 -KPX Tcommaaccent aring -120 -KPX Tcommaaccent atilde -60 -KPX Tcommaaccent colon -20 -KPX Tcommaaccent comma -120 -KPX Tcommaaccent e -120 -KPX Tcommaaccent eacute -120 -KPX Tcommaaccent ecaron -120 -KPX Tcommaaccent ecircumflex -120 -KPX Tcommaaccent edieresis -120 -KPX Tcommaaccent edotaccent -120 -KPX Tcommaaccent egrave -60 -KPX Tcommaaccent emacron -60 -KPX Tcommaaccent eogonek -120 -KPX Tcommaaccent hyphen -140 -KPX Tcommaaccent o -120 -KPX Tcommaaccent oacute -120 -KPX Tcommaaccent ocircumflex -120 -KPX Tcommaaccent odieresis -120 -KPX Tcommaaccent ograve -120 -KPX Tcommaaccent ohungarumlaut -120 -KPX Tcommaaccent omacron -60 -KPX Tcommaaccent oslash -120 -KPX Tcommaaccent otilde -60 -KPX Tcommaaccent period -120 -KPX Tcommaaccent r -120 -KPX Tcommaaccent racute -120 -KPX Tcommaaccent rcaron -120 -KPX Tcommaaccent rcommaaccent -120 -KPX Tcommaaccent semicolon -20 -KPX Tcommaaccent u -120 -KPX Tcommaaccent uacute -120 -KPX Tcommaaccent ucircumflex -120 -KPX Tcommaaccent udieresis -120 -KPX Tcommaaccent ugrave -120 -KPX Tcommaaccent uhungarumlaut -120 -KPX Tcommaaccent umacron -60 -KPX Tcommaaccent uogonek -120 -KPX Tcommaaccent uring -120 -KPX Tcommaaccent w -120 -KPX Tcommaaccent y -120 -KPX Tcommaaccent yacute -120 -KPX Tcommaaccent ydieresis -60 -KPX U A -40 -KPX U Aacute -40 -KPX U Abreve -40 -KPX U Acircumflex -40 -KPX U Adieresis -40 -KPX U Agrave -40 -KPX U Amacron -40 -KPX U Aogonek -40 -KPX U Aring -40 -KPX U Atilde -40 -KPX U comma -40 -KPX U period -40 -KPX Uacute A -40 -KPX Uacute Aacute -40 -KPX Uacute Abreve -40 -KPX Uacute Acircumflex -40 -KPX Uacute Adieresis -40 -KPX Uacute Agrave -40 -KPX Uacute Amacron -40 -KPX Uacute Aogonek -40 -KPX Uacute Aring -40 -KPX Uacute Atilde -40 -KPX Uacute comma -40 -KPX Uacute period -40 -KPX Ucircumflex A -40 -KPX Ucircumflex Aacute -40 -KPX Ucircumflex Abreve -40 -KPX Ucircumflex Acircumflex -40 -KPX Ucircumflex Adieresis -40 -KPX Ucircumflex Agrave -40 -KPX Ucircumflex Amacron -40 -KPX Ucircumflex Aogonek -40 -KPX Ucircumflex Aring -40 -KPX Ucircumflex Atilde -40 -KPX Ucircumflex comma -40 -KPX Ucircumflex period -40 -KPX Udieresis A -40 -KPX Udieresis Aacute -40 -KPX Udieresis Abreve -40 -KPX Udieresis Acircumflex -40 -KPX Udieresis Adieresis -40 -KPX Udieresis Agrave -40 -KPX Udieresis Amacron -40 -KPX Udieresis Aogonek -40 -KPX Udieresis Aring -40 -KPX Udieresis Atilde -40 -KPX Udieresis comma -40 -KPX Udieresis period -40 -KPX Ugrave A -40 -KPX Ugrave Aacute -40 -KPX Ugrave Abreve -40 -KPX Ugrave Acircumflex -40 -KPX Ugrave Adieresis -40 -KPX Ugrave Agrave -40 -KPX Ugrave Amacron -40 -KPX Ugrave Aogonek -40 -KPX Ugrave Aring -40 -KPX Ugrave Atilde -40 -KPX Ugrave comma -40 -KPX Ugrave period -40 -KPX Uhungarumlaut A -40 -KPX Uhungarumlaut Aacute -40 -KPX Uhungarumlaut Abreve -40 -KPX Uhungarumlaut Acircumflex -40 -KPX Uhungarumlaut Adieresis -40 -KPX Uhungarumlaut Agrave -40 -KPX Uhungarumlaut Amacron -40 -KPX Uhungarumlaut Aogonek -40 -KPX Uhungarumlaut Aring -40 -KPX Uhungarumlaut Atilde -40 -KPX Uhungarumlaut comma -40 -KPX Uhungarumlaut period -40 -KPX Umacron A -40 -KPX Umacron Aacute -40 -KPX Umacron Abreve -40 -KPX Umacron Acircumflex -40 -KPX Umacron Adieresis -40 -KPX Umacron Agrave -40 -KPX Umacron Amacron -40 -KPX Umacron Aogonek -40 -KPX Umacron Aring -40 -KPX Umacron Atilde -40 -KPX Umacron comma -40 -KPX Umacron period -40 -KPX Uogonek A -40 -KPX Uogonek Aacute -40 -KPX Uogonek Abreve -40 -KPX Uogonek Acircumflex -40 -KPX Uogonek Adieresis -40 -KPX Uogonek Agrave -40 -KPX Uogonek Amacron -40 -KPX Uogonek Aogonek -40 -KPX Uogonek Aring -40 -KPX Uogonek Atilde -40 -KPX Uogonek comma -40 -KPX Uogonek period -40 -KPX Uring A -40 -KPX Uring Aacute -40 -KPX Uring Abreve -40 -KPX Uring Acircumflex -40 -KPX Uring Adieresis -40 -KPX Uring Agrave -40 -KPX Uring Amacron -40 -KPX Uring Aogonek -40 -KPX Uring Aring -40 -KPX Uring Atilde -40 -KPX Uring comma -40 -KPX Uring period -40 -KPX V A -80 -KPX V Aacute -80 -KPX V Abreve -80 -KPX V Acircumflex -80 -KPX V Adieresis -80 -KPX V Agrave -80 -KPX V Amacron -80 -KPX V Aogonek -80 -KPX V Aring -80 -KPX V Atilde -80 -KPX V G -40 -KPX V Gbreve -40 -KPX V Gcommaaccent -40 -KPX V O -40 -KPX V Oacute -40 -KPX V Ocircumflex -40 -KPX V Odieresis -40 -KPX V Ograve -40 -KPX V Ohungarumlaut -40 -KPX V Omacron -40 -KPX V Oslash -40 -KPX V Otilde -40 -KPX V a -70 -KPX V aacute -70 -KPX V abreve -70 -KPX V acircumflex -70 -KPX V adieresis -70 -KPX V agrave -70 -KPX V amacron -70 -KPX V aogonek -70 -KPX V aring -70 -KPX V atilde -70 -KPX V colon -40 -KPX V comma -125 -KPX V e -80 -KPX V eacute -80 -KPX V ecaron -80 -KPX V ecircumflex -80 -KPX V edieresis -80 -KPX V edotaccent -80 -KPX V egrave -80 -KPX V emacron -80 -KPX V eogonek -80 -KPX V hyphen -80 -KPX V o -80 -KPX V oacute -80 -KPX V ocircumflex -80 -KPX V odieresis -80 -KPX V ograve -80 -KPX V ohungarumlaut -80 -KPX V omacron -80 -KPX V oslash -80 -KPX V otilde -80 -KPX V period -125 -KPX V semicolon -40 -KPX V u -70 -KPX V uacute -70 -KPX V ucircumflex -70 -KPX V udieresis -70 -KPX V ugrave -70 -KPX V uhungarumlaut -70 -KPX V umacron -70 -KPX V uogonek -70 -KPX V uring -70 -KPX W A -50 -KPX W Aacute -50 -KPX W Abreve -50 -KPX W Acircumflex -50 -KPX W Adieresis -50 -KPX W Agrave -50 -KPX W Amacron -50 -KPX W Aogonek -50 -KPX W Aring -50 -KPX W Atilde -50 -KPX W O -20 -KPX W Oacute -20 -KPX W Ocircumflex -20 -KPX W Odieresis -20 -KPX W Ograve -20 -KPX W Ohungarumlaut -20 -KPX W Omacron -20 -KPX W Oslash -20 -KPX W Otilde -20 -KPX W a -40 -KPX W aacute -40 -KPX W abreve -40 -KPX W acircumflex -40 -KPX W adieresis -40 -KPX W agrave -40 -KPX W amacron -40 -KPX W aogonek -40 -KPX W aring -40 -KPX W atilde -40 -KPX W comma -80 -KPX W e -30 -KPX W eacute -30 -KPX W ecaron -30 -KPX W ecircumflex -30 -KPX W edieresis -30 -KPX W edotaccent -30 -KPX W egrave -30 -KPX W emacron -30 -KPX W eogonek -30 -KPX W hyphen -40 -KPX W o -30 -KPX W oacute -30 -KPX W ocircumflex -30 -KPX W odieresis -30 -KPX W ograve -30 -KPX W ohungarumlaut -30 -KPX W omacron -30 -KPX W oslash -30 -KPX W otilde -30 -KPX W period -80 -KPX W u -30 -KPX W uacute -30 -KPX W ucircumflex -30 -KPX W udieresis -30 -KPX W ugrave -30 -KPX W uhungarumlaut -30 -KPX W umacron -30 -KPX W uogonek -30 -KPX W uring -30 -KPX W y -20 -KPX W yacute -20 -KPX W ydieresis -20 -KPX Y A -110 -KPX Y Aacute -110 -KPX Y Abreve -110 -KPX Y Acircumflex -110 -KPX Y Adieresis -110 -KPX Y Agrave -110 -KPX Y Amacron -110 -KPX Y Aogonek -110 -KPX Y Aring -110 -KPX Y Atilde -110 -KPX Y O -85 -KPX Y Oacute -85 -KPX Y Ocircumflex -85 -KPX Y Odieresis -85 -KPX Y Ograve -85 -KPX Y Ohungarumlaut -85 -KPX Y Omacron -85 -KPX Y Oslash -85 -KPX Y Otilde -85 -KPX Y a -140 -KPX Y aacute -140 -KPX Y abreve -70 -KPX Y acircumflex -140 -KPX Y adieresis -140 -KPX Y agrave -140 -KPX Y amacron -70 -KPX Y aogonek -140 -KPX Y aring -140 -KPX Y atilde -140 -KPX Y colon -60 -KPX Y comma -140 -KPX Y e -140 -KPX Y eacute -140 -KPX Y ecaron -140 -KPX Y ecircumflex -140 -KPX Y edieresis -140 -KPX Y edotaccent -140 -KPX Y egrave -140 -KPX Y emacron -70 -KPX Y eogonek -140 -KPX Y hyphen -140 -KPX Y i -20 -KPX Y iacute -20 -KPX Y iogonek -20 -KPX Y o -140 -KPX Y oacute -140 -KPX Y ocircumflex -140 -KPX Y odieresis -140 -KPX Y ograve -140 -KPX Y ohungarumlaut -140 -KPX Y omacron -140 -KPX Y oslash -140 -KPX Y otilde -140 -KPX Y period -140 -KPX Y semicolon -60 -KPX Y u -110 -KPX Y uacute -110 -KPX Y ucircumflex -110 -KPX Y udieresis -110 -KPX Y ugrave -110 -KPX Y uhungarumlaut -110 -KPX Y umacron -110 -KPX Y uogonek -110 -KPX Y uring -110 -KPX Yacute A -110 -KPX Yacute Aacute -110 -KPX Yacute Abreve -110 -KPX Yacute Acircumflex -110 -KPX Yacute Adieresis -110 -KPX Yacute Agrave -110 -KPX Yacute Amacron -110 -KPX Yacute Aogonek -110 -KPX Yacute Aring -110 -KPX Yacute Atilde -110 -KPX Yacute O -85 -KPX Yacute Oacute -85 -KPX Yacute Ocircumflex -85 -KPX Yacute Odieresis -85 -KPX Yacute Ograve -85 -KPX Yacute Ohungarumlaut -85 -KPX Yacute Omacron -85 -KPX Yacute Oslash -85 -KPX Yacute Otilde -85 -KPX Yacute a -140 -KPX Yacute aacute -140 -KPX Yacute abreve -70 -KPX Yacute acircumflex -140 -KPX Yacute adieresis -140 -KPX Yacute agrave -140 -KPX Yacute amacron -70 -KPX Yacute aogonek -140 -KPX Yacute aring -140 -KPX Yacute atilde -70 -KPX Yacute colon -60 -KPX Yacute comma -140 -KPX Yacute e -140 -KPX Yacute eacute -140 -KPX Yacute ecaron -140 -KPX Yacute ecircumflex -140 -KPX Yacute edieresis -140 -KPX Yacute edotaccent -140 -KPX Yacute egrave -140 -KPX Yacute emacron -70 -KPX Yacute eogonek -140 -KPX Yacute hyphen -140 -KPX Yacute i -20 -KPX Yacute iacute -20 -KPX Yacute iogonek -20 -KPX Yacute o -140 -KPX Yacute oacute -140 -KPX Yacute ocircumflex -140 -KPX Yacute odieresis -140 -KPX Yacute ograve -140 -KPX Yacute ohungarumlaut -140 -KPX Yacute omacron -70 -KPX Yacute oslash -140 -KPX Yacute otilde -140 -KPX Yacute period -140 -KPX Yacute semicolon -60 -KPX Yacute u -110 -KPX Yacute uacute -110 -KPX Yacute ucircumflex -110 -KPX Yacute udieresis -110 -KPX Yacute ugrave -110 -KPX Yacute uhungarumlaut -110 -KPX Yacute umacron -110 -KPX Yacute uogonek -110 -KPX Yacute uring -110 -KPX Ydieresis A -110 -KPX Ydieresis Aacute -110 -KPX Ydieresis Abreve -110 -KPX Ydieresis Acircumflex -110 -KPX Ydieresis Adieresis -110 -KPX Ydieresis Agrave -110 -KPX Ydieresis Amacron -110 -KPX Ydieresis Aogonek -110 -KPX Ydieresis Aring -110 -KPX Ydieresis Atilde -110 -KPX Ydieresis O -85 -KPX Ydieresis Oacute -85 -KPX Ydieresis Ocircumflex -85 -KPX Ydieresis Odieresis -85 -KPX Ydieresis Ograve -85 -KPX Ydieresis Ohungarumlaut -85 -KPX Ydieresis Omacron -85 -KPX Ydieresis Oslash -85 -KPX Ydieresis Otilde -85 -KPX Ydieresis a -140 -KPX Ydieresis aacute -140 -KPX Ydieresis abreve -70 -KPX Ydieresis acircumflex -140 -KPX Ydieresis adieresis -140 -KPX Ydieresis agrave -140 -KPX Ydieresis amacron -70 -KPX Ydieresis aogonek -140 -KPX Ydieresis aring -140 -KPX Ydieresis atilde -70 -KPX Ydieresis colon -60 -KPX Ydieresis comma -140 -KPX Ydieresis e -140 -KPX Ydieresis eacute -140 -KPX Ydieresis ecaron -140 -KPX Ydieresis ecircumflex -140 -KPX Ydieresis edieresis -140 -KPX Ydieresis edotaccent -140 -KPX Ydieresis egrave -140 -KPX Ydieresis emacron -70 -KPX Ydieresis eogonek -140 -KPX Ydieresis hyphen -140 -KPX Ydieresis i -20 -KPX Ydieresis iacute -20 -KPX Ydieresis iogonek -20 -KPX Ydieresis o -140 -KPX Ydieresis oacute -140 -KPX Ydieresis ocircumflex -140 -KPX Ydieresis odieresis -140 -KPX Ydieresis ograve -140 -KPX Ydieresis ohungarumlaut -140 -KPX Ydieresis omacron -140 -KPX Ydieresis oslash -140 -KPX Ydieresis otilde -140 -KPX Ydieresis period -140 -KPX Ydieresis semicolon -60 -KPX Ydieresis u -110 -KPX Ydieresis uacute -110 -KPX Ydieresis ucircumflex -110 -KPX Ydieresis udieresis -110 -KPX Ydieresis ugrave -110 -KPX Ydieresis uhungarumlaut -110 -KPX Ydieresis umacron -110 -KPX Ydieresis uogonek -110 -KPX Ydieresis uring -110 -KPX a v -20 -KPX a w -20 -KPX a y -30 -KPX a yacute -30 -KPX a ydieresis -30 -KPX aacute v -20 -KPX aacute w -20 -KPX aacute y -30 -KPX aacute yacute -30 -KPX aacute ydieresis -30 -KPX abreve v -20 -KPX abreve w -20 -KPX abreve y -30 -KPX abreve yacute -30 -KPX abreve ydieresis -30 -KPX acircumflex v -20 -KPX acircumflex w -20 -KPX acircumflex y -30 -KPX acircumflex yacute -30 -KPX acircumflex ydieresis -30 -KPX adieresis v -20 -KPX adieresis w -20 -KPX adieresis y -30 -KPX adieresis yacute -30 -KPX adieresis ydieresis -30 -KPX agrave v -20 -KPX agrave w -20 -KPX agrave y -30 -KPX agrave yacute -30 -KPX agrave ydieresis -30 -KPX amacron v -20 -KPX amacron w -20 -KPX amacron y -30 -KPX amacron yacute -30 -KPX amacron ydieresis -30 -KPX aogonek v -20 -KPX aogonek w -20 -KPX aogonek y -30 -KPX aogonek yacute -30 -KPX aogonek ydieresis -30 -KPX aring v -20 -KPX aring w -20 -KPX aring y -30 -KPX aring yacute -30 -KPX aring ydieresis -30 -KPX atilde v -20 -KPX atilde w -20 -KPX atilde y -30 -KPX atilde yacute -30 -KPX atilde ydieresis -30 -KPX b b -10 -KPX b comma -40 -KPX b l -20 -KPX b lacute -20 -KPX b lcommaaccent -20 -KPX b lslash -20 -KPX b period -40 -KPX b u -20 -KPX b uacute -20 -KPX b ucircumflex -20 -KPX b udieresis -20 -KPX b ugrave -20 -KPX b uhungarumlaut -20 -KPX b umacron -20 -KPX b uogonek -20 -KPX b uring -20 -KPX b v -20 -KPX b y -20 -KPX b yacute -20 -KPX b ydieresis -20 -KPX c comma -15 -KPX c k -20 -KPX c kcommaaccent -20 -KPX cacute comma -15 -KPX cacute k -20 -KPX cacute kcommaaccent -20 -KPX ccaron comma -15 -KPX ccaron k -20 -KPX ccaron kcommaaccent -20 -KPX ccedilla comma -15 -KPX ccedilla k -20 -KPX ccedilla kcommaaccent -20 -KPX colon space -50 -KPX comma quotedblright -100 -KPX comma quoteright -100 -KPX e comma -15 -KPX e period -15 -KPX e v -30 -KPX e w -20 -KPX e x -30 -KPX e y -20 -KPX e yacute -20 -KPX e ydieresis -20 -KPX eacute comma -15 -KPX eacute period -15 -KPX eacute v -30 -KPX eacute w -20 -KPX eacute x -30 -KPX eacute y -20 -KPX eacute yacute -20 -KPX eacute ydieresis -20 -KPX ecaron comma -15 -KPX ecaron period -15 -KPX ecaron v -30 -KPX ecaron w -20 -KPX ecaron x -30 -KPX ecaron y -20 -KPX ecaron yacute -20 -KPX ecaron ydieresis -20 -KPX ecircumflex comma -15 -KPX ecircumflex period -15 -KPX ecircumflex v -30 -KPX ecircumflex w -20 -KPX ecircumflex x -30 -KPX ecircumflex y -20 -KPX ecircumflex yacute -20 -KPX ecircumflex ydieresis -20 -KPX edieresis comma -15 -KPX edieresis period -15 -KPX edieresis v -30 -KPX edieresis w -20 -KPX edieresis x -30 -KPX edieresis y -20 -KPX edieresis yacute -20 -KPX edieresis ydieresis -20 -KPX edotaccent comma -15 -KPX edotaccent period -15 -KPX edotaccent v -30 -KPX edotaccent w -20 -KPX edotaccent x -30 -KPX edotaccent y -20 -KPX edotaccent yacute -20 -KPX edotaccent ydieresis -20 -KPX egrave comma -15 -KPX egrave period -15 -KPX egrave v -30 -KPX egrave w -20 -KPX egrave x -30 -KPX egrave y -20 -KPX egrave yacute -20 -KPX egrave ydieresis -20 -KPX emacron comma -15 -KPX emacron period -15 -KPX emacron v -30 -KPX emacron w -20 -KPX emacron x -30 -KPX emacron y -20 -KPX emacron yacute -20 -KPX emacron ydieresis -20 -KPX eogonek comma -15 -KPX eogonek period -15 -KPX eogonek v -30 -KPX eogonek w -20 -KPX eogonek x -30 -KPX eogonek y -20 -KPX eogonek yacute -20 -KPX eogonek ydieresis -20 -KPX f a -30 -KPX f aacute -30 -KPX f abreve -30 -KPX f acircumflex -30 -KPX f adieresis -30 -KPX f agrave -30 -KPX f amacron -30 -KPX f aogonek -30 -KPX f aring -30 -KPX f atilde -30 -KPX f comma -30 -KPX f dotlessi -28 -KPX f e -30 -KPX f eacute -30 -KPX f ecaron -30 -KPX f ecircumflex -30 -KPX f edieresis -30 -KPX f edotaccent -30 -KPX f egrave -30 -KPX f emacron -30 -KPX f eogonek -30 -KPX f o -30 -KPX f oacute -30 -KPX f ocircumflex -30 -KPX f odieresis -30 -KPX f ograve -30 -KPX f ohungarumlaut -30 -KPX f omacron -30 -KPX f oslash -30 -KPX f otilde -30 -KPX f period -30 -KPX f quotedblright 60 -KPX f quoteright 50 -KPX g r -10 -KPX g racute -10 -KPX g rcaron -10 -KPX g rcommaaccent -10 -KPX gbreve r -10 -KPX gbreve racute -10 -KPX gbreve rcaron -10 -KPX gbreve rcommaaccent -10 -KPX gcommaaccent r -10 -KPX gcommaaccent racute -10 -KPX gcommaaccent rcaron -10 -KPX gcommaaccent rcommaaccent -10 -KPX h y -30 -KPX h yacute -30 -KPX h ydieresis -30 -KPX k e -20 -KPX k eacute -20 -KPX k ecaron -20 -KPX k ecircumflex -20 -KPX k edieresis -20 -KPX k edotaccent -20 -KPX k egrave -20 -KPX k emacron -20 -KPX k eogonek -20 -KPX k o -20 -KPX k oacute -20 -KPX k ocircumflex -20 -KPX k odieresis -20 -KPX k ograve -20 -KPX k ohungarumlaut -20 -KPX k omacron -20 -KPX k oslash -20 -KPX k otilde -20 -KPX kcommaaccent e -20 -KPX kcommaaccent eacute -20 -KPX kcommaaccent ecaron -20 -KPX kcommaaccent ecircumflex -20 -KPX kcommaaccent edieresis -20 -KPX kcommaaccent edotaccent -20 -KPX kcommaaccent egrave -20 -KPX kcommaaccent emacron -20 -KPX kcommaaccent eogonek -20 -KPX kcommaaccent o -20 -KPX kcommaaccent oacute -20 -KPX kcommaaccent ocircumflex -20 -KPX kcommaaccent odieresis -20 -KPX kcommaaccent ograve -20 -KPX kcommaaccent ohungarumlaut -20 -KPX kcommaaccent omacron -20 -KPX kcommaaccent oslash -20 -KPX kcommaaccent otilde -20 -KPX m u -10 -KPX m uacute -10 -KPX m ucircumflex -10 -KPX m udieresis -10 -KPX m ugrave -10 -KPX m uhungarumlaut -10 -KPX m umacron -10 -KPX m uogonek -10 -KPX m uring -10 -KPX m y -15 -KPX m yacute -15 -KPX m ydieresis -15 -KPX n u -10 -KPX n uacute -10 -KPX n ucircumflex -10 -KPX n udieresis -10 -KPX n ugrave -10 -KPX n uhungarumlaut -10 -KPX n umacron -10 -KPX n uogonek -10 -KPX n uring -10 -KPX n v -20 -KPX n y -15 -KPX n yacute -15 -KPX n ydieresis -15 -KPX nacute u -10 -KPX nacute uacute -10 -KPX nacute ucircumflex -10 -KPX nacute udieresis -10 -KPX nacute ugrave -10 -KPX nacute uhungarumlaut -10 -KPX nacute umacron -10 -KPX nacute uogonek -10 -KPX nacute uring -10 -KPX nacute v -20 -KPX nacute y -15 -KPX nacute yacute -15 -KPX nacute ydieresis -15 -KPX ncaron u -10 -KPX ncaron uacute -10 -KPX ncaron ucircumflex -10 -KPX ncaron udieresis -10 -KPX ncaron ugrave -10 -KPX ncaron uhungarumlaut -10 -KPX ncaron umacron -10 -KPX ncaron uogonek -10 -KPX ncaron uring -10 -KPX ncaron v -20 -KPX ncaron y -15 -KPX ncaron yacute -15 -KPX ncaron ydieresis -15 -KPX ncommaaccent u -10 -KPX ncommaaccent uacute -10 -KPX ncommaaccent ucircumflex -10 -KPX ncommaaccent udieresis -10 -KPX ncommaaccent ugrave -10 -KPX ncommaaccent uhungarumlaut -10 -KPX ncommaaccent umacron -10 -KPX ncommaaccent uogonek -10 -KPX ncommaaccent uring -10 -KPX ncommaaccent v -20 -KPX ncommaaccent y -15 -KPX ncommaaccent yacute -15 -KPX ncommaaccent ydieresis -15 -KPX ntilde u -10 -KPX ntilde uacute -10 -KPX ntilde ucircumflex -10 -KPX ntilde udieresis -10 -KPX ntilde ugrave -10 -KPX ntilde uhungarumlaut -10 -KPX ntilde umacron -10 -KPX ntilde uogonek -10 -KPX ntilde uring -10 -KPX ntilde v -20 -KPX ntilde y -15 -KPX ntilde yacute -15 -KPX ntilde ydieresis -15 -KPX o comma -40 -KPX o period -40 -KPX o v -15 -KPX o w -15 -KPX o x -30 -KPX o y -30 -KPX o yacute -30 -KPX o ydieresis -30 -KPX oacute comma -40 -KPX oacute period -40 -KPX oacute v -15 -KPX oacute w -15 -KPX oacute x -30 -KPX oacute y -30 -KPX oacute yacute -30 -KPX oacute ydieresis -30 -KPX ocircumflex comma -40 -KPX ocircumflex period -40 -KPX ocircumflex v -15 -KPX ocircumflex w -15 -KPX ocircumflex x -30 -KPX ocircumflex y -30 -KPX ocircumflex yacute -30 -KPX ocircumflex ydieresis -30 -KPX odieresis comma -40 -KPX odieresis period -40 -KPX odieresis v -15 -KPX odieresis w -15 -KPX odieresis x -30 -KPX odieresis y -30 -KPX odieresis yacute -30 -KPX odieresis ydieresis -30 -KPX ograve comma -40 -KPX ograve period -40 -KPX ograve v -15 -KPX ograve w -15 -KPX ograve x -30 -KPX ograve y -30 -KPX ograve yacute -30 -KPX ograve ydieresis -30 -KPX ohungarumlaut comma -40 -KPX ohungarumlaut period -40 -KPX ohungarumlaut v -15 -KPX ohungarumlaut w -15 -KPX ohungarumlaut x -30 -KPX ohungarumlaut y -30 -KPX ohungarumlaut yacute -30 -KPX ohungarumlaut ydieresis -30 -KPX omacron comma -40 -KPX omacron period -40 -KPX omacron v -15 -KPX omacron w -15 -KPX omacron x -30 -KPX omacron y -30 -KPX omacron yacute -30 -KPX omacron ydieresis -30 -KPX oslash a -55 -KPX oslash aacute -55 -KPX oslash abreve -55 -KPX oslash acircumflex -55 -KPX oslash adieresis -55 -KPX oslash agrave -55 -KPX oslash amacron -55 -KPX oslash aogonek -55 -KPX oslash aring -55 -KPX oslash atilde -55 -KPX oslash b -55 -KPX oslash c -55 -KPX oslash cacute -55 -KPX oslash ccaron -55 -KPX oslash ccedilla -55 -KPX oslash comma -95 -KPX oslash d -55 -KPX oslash dcroat -55 -KPX oslash e -55 -KPX oslash eacute -55 -KPX oslash ecaron -55 -KPX oslash ecircumflex -55 -KPX oslash edieresis -55 -KPX oslash edotaccent -55 -KPX oslash egrave -55 -KPX oslash emacron -55 -KPX oslash eogonek -55 -KPX oslash f -55 -KPX oslash g -55 -KPX oslash gbreve -55 -KPX oslash gcommaaccent -55 -KPX oslash h -55 -KPX oslash i -55 -KPX oslash iacute -55 -KPX oslash icircumflex -55 -KPX oslash idieresis -55 -KPX oslash igrave -55 -KPX oslash imacron -55 -KPX oslash iogonek -55 -KPX oslash j -55 -KPX oslash k -55 -KPX oslash kcommaaccent -55 -KPX oslash l -55 -KPX oslash lacute -55 -KPX oslash lcommaaccent -55 -KPX oslash lslash -55 -KPX oslash m -55 -KPX oslash n -55 -KPX oslash nacute -55 -KPX oslash ncaron -55 -KPX oslash ncommaaccent -55 -KPX oslash ntilde -55 -KPX oslash o -55 -KPX oslash oacute -55 -KPX oslash ocircumflex -55 -KPX oslash odieresis -55 -KPX oslash ograve -55 -KPX oslash ohungarumlaut -55 -KPX oslash omacron -55 -KPX oslash oslash -55 -KPX oslash otilde -55 -KPX oslash p -55 -KPX oslash period -95 -KPX oslash q -55 -KPX oslash r -55 -KPX oslash racute -55 -KPX oslash rcaron -55 -KPX oslash rcommaaccent -55 -KPX oslash s -55 -KPX oslash sacute -55 -KPX oslash scaron -55 -KPX oslash scedilla -55 -KPX oslash scommaaccent -55 -KPX oslash t -55 -KPX oslash tcommaaccent -55 -KPX oslash u -55 -KPX oslash uacute -55 -KPX oslash ucircumflex -55 -KPX oslash udieresis -55 -KPX oslash ugrave -55 -KPX oslash uhungarumlaut -55 -KPX oslash umacron -55 -KPX oslash uogonek -55 -KPX oslash uring -55 -KPX oslash v -70 -KPX oslash w -70 -KPX oslash x -85 -KPX oslash y -70 -KPX oslash yacute -70 -KPX oslash ydieresis -70 -KPX oslash z -55 -KPX oslash zacute -55 -KPX oslash zcaron -55 -KPX oslash zdotaccent -55 -KPX otilde comma -40 -KPX otilde period -40 -KPX otilde v -15 -KPX otilde w -15 -KPX otilde x -30 -KPX otilde y -30 -KPX otilde yacute -30 -KPX otilde ydieresis -30 -KPX p comma -35 -KPX p period -35 -KPX p y -30 -KPX p yacute -30 -KPX p ydieresis -30 -KPX period quotedblright -100 -KPX period quoteright -100 -KPX period space -60 -KPX quotedblright space -40 -KPX quoteleft quoteleft -57 -KPX quoteright d -50 -KPX quoteright dcroat -50 -KPX quoteright quoteright -57 -KPX quoteright r -50 -KPX quoteright racute -50 -KPX quoteright rcaron -50 -KPX quoteright rcommaaccent -50 -KPX quoteright s -50 -KPX quoteright sacute -50 -KPX quoteright scaron -50 -KPX quoteright scedilla -50 -KPX quoteright scommaaccent -50 -KPX quoteright space -70 -KPX r a -10 -KPX r aacute -10 -KPX r abreve -10 -KPX r acircumflex -10 -KPX r adieresis -10 -KPX r agrave -10 -KPX r amacron -10 -KPX r aogonek -10 -KPX r aring -10 -KPX r atilde -10 -KPX r colon 30 -KPX r comma -50 -KPX r i 15 -KPX r iacute 15 -KPX r icircumflex 15 -KPX r idieresis 15 -KPX r igrave 15 -KPX r imacron 15 -KPX r iogonek 15 -KPX r k 15 -KPX r kcommaaccent 15 -KPX r l 15 -KPX r lacute 15 -KPX r lcommaaccent 15 -KPX r lslash 15 -KPX r m 25 -KPX r n 25 -KPX r nacute 25 -KPX r ncaron 25 -KPX r ncommaaccent 25 -KPX r ntilde 25 -KPX r p 30 -KPX r period -50 -KPX r semicolon 30 -KPX r t 40 -KPX r tcommaaccent 40 -KPX r u 15 -KPX r uacute 15 -KPX r ucircumflex 15 -KPX r udieresis 15 -KPX r ugrave 15 -KPX r uhungarumlaut 15 -KPX r umacron 15 -KPX r uogonek 15 -KPX r uring 15 -KPX r v 30 -KPX r y 30 -KPX r yacute 30 -KPX r ydieresis 30 -KPX racute a -10 -KPX racute aacute -10 -KPX racute abreve -10 -KPX racute acircumflex -10 -KPX racute adieresis -10 -KPX racute agrave -10 -KPX racute amacron -10 -KPX racute aogonek -10 -KPX racute aring -10 -KPX racute atilde -10 -KPX racute colon 30 -KPX racute comma -50 -KPX racute i 15 -KPX racute iacute 15 -KPX racute icircumflex 15 -KPX racute idieresis 15 -KPX racute igrave 15 -KPX racute imacron 15 -KPX racute iogonek 15 -KPX racute k 15 -KPX racute kcommaaccent 15 -KPX racute l 15 -KPX racute lacute 15 -KPX racute lcommaaccent 15 -KPX racute lslash 15 -KPX racute m 25 -KPX racute n 25 -KPX racute nacute 25 -KPX racute ncaron 25 -KPX racute ncommaaccent 25 -KPX racute ntilde 25 -KPX racute p 30 -KPX racute period -50 -KPX racute semicolon 30 -KPX racute t 40 -KPX racute tcommaaccent 40 -KPX racute u 15 -KPX racute uacute 15 -KPX racute ucircumflex 15 -KPX racute udieresis 15 -KPX racute ugrave 15 -KPX racute uhungarumlaut 15 -KPX racute umacron 15 -KPX racute uogonek 15 -KPX racute uring 15 -KPX racute v 30 -KPX racute y 30 -KPX racute yacute 30 -KPX racute ydieresis 30 -KPX rcaron a -10 -KPX rcaron aacute -10 -KPX rcaron abreve -10 -KPX rcaron acircumflex -10 -KPX rcaron adieresis -10 -KPX rcaron agrave -10 -KPX rcaron amacron -10 -KPX rcaron aogonek -10 -KPX rcaron aring -10 -KPX rcaron atilde -10 -KPX rcaron colon 30 -KPX rcaron comma -50 -KPX rcaron i 15 -KPX rcaron iacute 15 -KPX rcaron icircumflex 15 -KPX rcaron idieresis 15 -KPX rcaron igrave 15 -KPX rcaron imacron 15 -KPX rcaron iogonek 15 -KPX rcaron k 15 -KPX rcaron kcommaaccent 15 -KPX rcaron l 15 -KPX rcaron lacute 15 -KPX rcaron lcommaaccent 15 -KPX rcaron lslash 15 -KPX rcaron m 25 -KPX rcaron n 25 -KPX rcaron nacute 25 -KPX rcaron ncaron 25 -KPX rcaron ncommaaccent 25 -KPX rcaron ntilde 25 -KPX rcaron p 30 -KPX rcaron period -50 -KPX rcaron semicolon 30 -KPX rcaron t 40 -KPX rcaron tcommaaccent 40 -KPX rcaron u 15 -KPX rcaron uacute 15 -KPX rcaron ucircumflex 15 -KPX rcaron udieresis 15 -KPX rcaron ugrave 15 -KPX rcaron uhungarumlaut 15 -KPX rcaron umacron 15 -KPX rcaron uogonek 15 -KPX rcaron uring 15 -KPX rcaron v 30 -KPX rcaron y 30 -KPX rcaron yacute 30 -KPX rcaron ydieresis 30 -KPX rcommaaccent a -10 -KPX rcommaaccent aacute -10 -KPX rcommaaccent abreve -10 -KPX rcommaaccent acircumflex -10 -KPX rcommaaccent adieresis -10 -KPX rcommaaccent agrave -10 -KPX rcommaaccent amacron -10 -KPX rcommaaccent aogonek -10 -KPX rcommaaccent aring -10 -KPX rcommaaccent atilde -10 -KPX rcommaaccent colon 30 -KPX rcommaaccent comma -50 -KPX rcommaaccent i 15 -KPX rcommaaccent iacute 15 -KPX rcommaaccent icircumflex 15 -KPX rcommaaccent idieresis 15 -KPX rcommaaccent igrave 15 -KPX rcommaaccent imacron 15 -KPX rcommaaccent iogonek 15 -KPX rcommaaccent k 15 -KPX rcommaaccent kcommaaccent 15 -KPX rcommaaccent l 15 -KPX rcommaaccent lacute 15 -KPX rcommaaccent lcommaaccent 15 -KPX rcommaaccent lslash 15 -KPX rcommaaccent m 25 -KPX rcommaaccent n 25 -KPX rcommaaccent nacute 25 -KPX rcommaaccent ncaron 25 -KPX rcommaaccent ncommaaccent 25 -KPX rcommaaccent ntilde 25 -KPX rcommaaccent p 30 -KPX rcommaaccent period -50 -KPX rcommaaccent semicolon 30 -KPX rcommaaccent t 40 -KPX rcommaaccent tcommaaccent 40 -KPX rcommaaccent u 15 -KPX rcommaaccent uacute 15 -KPX rcommaaccent ucircumflex 15 -KPX rcommaaccent udieresis 15 -KPX rcommaaccent ugrave 15 -KPX rcommaaccent uhungarumlaut 15 -KPX rcommaaccent umacron 15 -KPX rcommaaccent uogonek 15 -KPX rcommaaccent uring 15 -KPX rcommaaccent v 30 -KPX rcommaaccent y 30 -KPX rcommaaccent yacute 30 -KPX rcommaaccent ydieresis 30 -KPX s comma -15 -KPX s period -15 -KPX s w -30 -KPX sacute comma -15 -KPX sacute period -15 -KPX sacute w -30 -KPX scaron comma -15 -KPX scaron period -15 -KPX scaron w -30 -KPX scedilla comma -15 -KPX scedilla period -15 -KPX scedilla w -30 -KPX scommaaccent comma -15 -KPX scommaaccent period -15 -KPX scommaaccent w -30 -KPX semicolon space -50 -KPX space T -50 -KPX space Tcaron -50 -KPX space Tcommaaccent -50 -KPX space V -50 -KPX space W -40 -KPX space Y -90 -KPX space Yacute -90 -KPX space Ydieresis -90 -KPX space quotedblleft -30 -KPX space quoteleft -60 -KPX v a -25 -KPX v aacute -25 -KPX v abreve -25 -KPX v acircumflex -25 -KPX v adieresis -25 -KPX v agrave -25 -KPX v amacron -25 -KPX v aogonek -25 -KPX v aring -25 -KPX v atilde -25 -KPX v comma -80 -KPX v e -25 -KPX v eacute -25 -KPX v ecaron -25 -KPX v ecircumflex -25 -KPX v edieresis -25 -KPX v edotaccent -25 -KPX v egrave -25 -KPX v emacron -25 -KPX v eogonek -25 -KPX v o -25 -KPX v oacute -25 -KPX v ocircumflex -25 -KPX v odieresis -25 -KPX v ograve -25 -KPX v ohungarumlaut -25 -KPX v omacron -25 -KPX v oslash -25 -KPX v otilde -25 -KPX v period -80 -KPX w a -15 -KPX w aacute -15 -KPX w abreve -15 -KPX w acircumflex -15 -KPX w adieresis -15 -KPX w agrave -15 -KPX w amacron -15 -KPX w aogonek -15 -KPX w aring -15 -KPX w atilde -15 -KPX w comma -60 -KPX w e -10 -KPX w eacute -10 -KPX w ecaron -10 -KPX w ecircumflex -10 -KPX w edieresis -10 -KPX w edotaccent -10 -KPX w egrave -10 -KPX w emacron -10 -KPX w eogonek -10 -KPX w o -10 -KPX w oacute -10 -KPX w ocircumflex -10 -KPX w odieresis -10 -KPX w ograve -10 -KPX w ohungarumlaut -10 -KPX w omacron -10 -KPX w oslash -10 -KPX w otilde -10 -KPX w period -60 -KPX x e -30 -KPX x eacute -30 -KPX x ecaron -30 -KPX x ecircumflex -30 -KPX x edieresis -30 -KPX x edotaccent -30 -KPX x egrave -30 -KPX x emacron -30 -KPX x eogonek -30 -KPX y a -20 -KPX y aacute -20 -KPX y abreve -20 -KPX y acircumflex -20 -KPX y adieresis -20 -KPX y agrave -20 -KPX y amacron -20 -KPX y aogonek -20 -KPX y aring -20 -KPX y atilde -20 -KPX y comma -100 -KPX y e -20 -KPX y eacute -20 -KPX y ecaron -20 -KPX y ecircumflex -20 -KPX y edieresis -20 -KPX y edotaccent -20 -KPX y egrave -20 -KPX y emacron -20 -KPX y eogonek -20 -KPX y o -20 -KPX y oacute -20 -KPX y ocircumflex -20 -KPX y odieresis -20 -KPX y ograve -20 -KPX y ohungarumlaut -20 -KPX y omacron -20 -KPX y oslash -20 -KPX y otilde -20 -KPX y period -100 -KPX yacute a -20 -KPX yacute aacute -20 -KPX yacute abreve -20 -KPX yacute acircumflex -20 -KPX yacute adieresis -20 -KPX yacute agrave -20 -KPX yacute amacron -20 -KPX yacute aogonek -20 -KPX yacute aring -20 -KPX yacute atilde -20 -KPX yacute comma -100 -KPX yacute e -20 -KPX yacute eacute -20 -KPX yacute ecaron -20 -KPX yacute ecircumflex -20 -KPX yacute edieresis -20 -KPX yacute edotaccent -20 -KPX yacute egrave -20 -KPX yacute emacron -20 -KPX yacute eogonek -20 -KPX yacute o -20 -KPX yacute oacute -20 -KPX yacute ocircumflex -20 -KPX yacute odieresis -20 -KPX yacute ograve -20 -KPX yacute ohungarumlaut -20 -KPX yacute omacron -20 -KPX yacute oslash -20 -KPX yacute otilde -20 -KPX yacute period -100 -KPX ydieresis a -20 -KPX ydieresis aacute -20 -KPX ydieresis abreve -20 -KPX ydieresis acircumflex -20 -KPX ydieresis adieresis -20 -KPX ydieresis agrave -20 -KPX ydieresis amacron -20 -KPX ydieresis aogonek -20 -KPX ydieresis aring -20 -KPX ydieresis atilde -20 -KPX ydieresis comma -100 -KPX ydieresis e -20 -KPX ydieresis eacute -20 -KPX ydieresis ecaron -20 -KPX ydieresis ecircumflex -20 -KPX ydieresis edieresis -20 -KPX ydieresis edotaccent -20 -KPX ydieresis egrave -20 -KPX ydieresis emacron -20 -KPX ydieresis eogonek -20 -KPX ydieresis o -20 -KPX ydieresis oacute -20 -KPX ydieresis ocircumflex -20 -KPX ydieresis odieresis -20 -KPX ydieresis ograve -20 -KPX ydieresis ohungarumlaut -20 -KPX ydieresis omacron -20 -KPX ydieresis oslash -20 -KPX ydieresis otilde -20 -KPX ydieresis period -100 -KPX z e -15 -KPX z eacute -15 -KPX z ecaron -15 -KPX z ecircumflex -15 -KPX z edieresis -15 -KPX z edotaccent -15 -KPX z egrave -15 -KPX z emacron -15 -KPX z eogonek -15 -KPX z o -15 -KPX z oacute -15 -KPX z ocircumflex -15 -KPX z odieresis -15 -KPX z ograve -15 -KPX z ohungarumlaut -15 -KPX z omacron -15 -KPX z oslash -15 -KPX z otilde -15 -KPX zacute e -15 -KPX zacute eacute -15 -KPX zacute ecaron -15 -KPX zacute ecircumflex -15 -KPX zacute edieresis -15 -KPX zacute edotaccent -15 -KPX zacute egrave -15 -KPX zacute emacron -15 -KPX zacute eogonek -15 -KPX zacute o -15 -KPX zacute oacute -15 -KPX zacute ocircumflex -15 -KPX zacute odieresis -15 -KPX zacute ograve -15 -KPX zacute ohungarumlaut -15 -KPX zacute omacron -15 -KPX zacute oslash -15 -KPX zacute otilde -15 -KPX zcaron e -15 -KPX zcaron eacute -15 -KPX zcaron ecaron -15 -KPX zcaron ecircumflex -15 -KPX zcaron edieresis -15 -KPX zcaron edotaccent -15 -KPX zcaron egrave -15 -KPX zcaron emacron -15 -KPX zcaron eogonek -15 -KPX zcaron o -15 -KPX zcaron oacute -15 -KPX zcaron ocircumflex -15 -KPX zcaron odieresis -15 -KPX zcaron ograve -15 -KPX zcaron ohungarumlaut -15 -KPX zcaron omacron -15 -KPX zcaron oslash -15 -KPX zcaron otilde -15 -KPX zdotaccent e -15 -KPX zdotaccent eacute -15 -KPX zdotaccent ecaron -15 -KPX zdotaccent ecircumflex -15 -KPX zdotaccent edieresis -15 -KPX zdotaccent edotaccent -15 -KPX zdotaccent egrave -15 -KPX zdotaccent emacron -15 -KPX zdotaccent eogonek -15 -KPX zdotaccent o -15 -KPX zdotaccent oacute -15 -KPX zdotaccent ocircumflex -15 -KPX zdotaccent odieresis -15 -KPX zdotaccent ograve -15 -KPX zdotaccent ohungarumlaut -15 -KPX zdotaccent omacron -15 -KPX zdotaccent oslash -15 -KPX zdotaccent otilde -15 -EndKernPairs -EndKernData -EndFontMetrics diff --git a/application/third_party/dompdf/lib/fonts/Helvetica.afm b/application/third_party/dompdf/lib/fonts/Helvetica.afm deleted file mode 100644 index 01379de1..00000000 --- a/application/third_party/dompdf/lib/fonts/Helvetica.afm +++ /dev/null @@ -1,3053 +0,0 @@ -StartFontMetrics 4.1 -Comment Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved. -Comment Creation Date: Thu May 1 12:38:23 1997 -Comment UniqueID 43054 -Comment VMusage 37069 48094 -FontName Helvetica -FullName Helvetica -FamilyName Helvetica -Weight Medium -ItalicAngle 0 -IsFixedPitch false -CharacterSet ExtendedRoman -FontBBox -166 -225 1000 931 -UnderlinePosition -100 -UnderlineThickness 50 -Version 002.000 -Notice Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved.Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries. -EncodingScheme WinAnsiEncoding -CapHeight 718 -XHeight 523 -Ascender 718 -Descender -207 -StdHW 76 -StdVW 88 -StartCharMetrics 317 -C 32 ; WX 278 ; N space ; B 0 0 0 0 ; -C 160 ; WX 278 ; N space ; B 0 0 0 0 ; -C 33 ; WX 278 ; N exclam ; B 90 0 187 718 ; -C 34 ; WX 355 ; N quotedbl ; B 70 463 285 718 ; -C 35 ; WX 556 ; N numbersign ; B 28 0 529 688 ; -C 36 ; WX 556 ; N dollar ; B 32 -115 520 775 ; -C 37 ; WX 889 ; N percent ; B 39 -19 850 703 ; -C 38 ; WX 667 ; N ampersand ; B 44 -15 645 718 ; -C 146 ; WX 222 ; N quoteright ; B 53 463 157 718 ; -C 40 ; WX 333 ; N parenleft ; B 68 -207 299 733 ; -C 41 ; WX 333 ; N parenright ; B 34 -207 265 733 ; -C 42 ; WX 389 ; N asterisk ; B 39 431 349 718 ; -C 43 ; WX 584 ; N plus ; B 39 0 545 505 ; -C 44 ; WX 278 ; N comma ; B 87 -147 191 106 ; -C 45 ; WX 333 ; N hyphen ; B 44 232 289 322 ; -C 173 ; WX 333 ; N hyphen ; B 44 232 289 322 ; -C 46 ; WX 278 ; N period ; B 87 0 191 106 ; -C 47 ; WX 278 ; N slash ; B -17 -19 295 737 ; -C 48 ; WX 556 ; N zero ; B 37 -19 519 703 ; -C 49 ; WX 556 ; N one ; B 101 0 359 703 ; -C 50 ; WX 556 ; N two ; B 26 0 507 703 ; -C 51 ; WX 556 ; N three ; B 34 -19 522 703 ; -C 52 ; WX 556 ; N four ; B 25 0 523 703 ; -C 53 ; WX 556 ; N five ; B 32 -19 514 688 ; -C 54 ; WX 556 ; N six ; B 38 -19 518 703 ; -C 55 ; WX 556 ; N seven ; B 37 0 523 688 ; -C 56 ; WX 556 ; N eight ; B 38 -19 517 703 ; -C 57 ; WX 556 ; N nine ; B 42 -19 514 703 ; -C 58 ; WX 278 ; N colon ; B 87 0 191 516 ; -C 59 ; WX 278 ; N semicolon ; B 87 -147 191 516 ; -C 60 ; WX 584 ; N less ; B 48 11 536 495 ; -C 61 ; WX 584 ; N equal ; B 39 115 545 390 ; -C 62 ; WX 584 ; N greater ; B 48 11 536 495 ; -C 63 ; WX 556 ; N question ; B 56 0 492 727 ; -C 64 ; WX 1015 ; N at ; B 147 -19 868 737 ; -C 65 ; WX 667 ; N A ; B 14 0 654 718 ; -C 66 ; WX 667 ; N B ; B 74 0 627 718 ; -C 67 ; WX 722 ; N C ; B 44 -19 681 737 ; -C 68 ; WX 722 ; N D ; B 81 0 674 718 ; -C 69 ; WX 667 ; N E ; B 86 0 616 718 ; -C 70 ; WX 611 ; N F ; B 86 0 583 718 ; -C 71 ; WX 778 ; N G ; B 48 -19 704 737 ; -C 72 ; WX 722 ; N H ; B 77 0 646 718 ; -C 73 ; WX 278 ; N I ; B 91 0 188 718 ; -C 74 ; WX 500 ; N J ; B 17 -19 428 718 ; -C 75 ; WX 667 ; N K ; B 76 0 663 718 ; -C 76 ; WX 556 ; N L ; B 76 0 537 718 ; -C 77 ; WX 833 ; N M ; B 73 0 761 718 ; -C 78 ; WX 722 ; N N ; B 76 0 646 718 ; -C 79 ; WX 778 ; N O ; B 39 -19 739 737 ; -C 80 ; WX 667 ; N P ; B 86 0 622 718 ; -C 81 ; WX 778 ; N Q ; B 39 -56 739 737 ; -C 82 ; WX 722 ; N R ; B 88 0 684 718 ; -C 83 ; WX 667 ; N S ; B 49 -19 620 737 ; -C 84 ; WX 611 ; N T ; B 14 0 597 718 ; -C 85 ; WX 722 ; N U ; B 79 -19 644 718 ; -C 86 ; WX 667 ; N V ; B 20 0 647 718 ; -C 87 ; WX 944 ; N W ; B 16 0 928 718 ; -C 88 ; WX 667 ; N X ; B 19 0 648 718 ; -C 89 ; WX 667 ; N Y ; B 14 0 653 718 ; -C 90 ; WX 611 ; N Z ; B 23 0 588 718 ; -C 91 ; WX 278 ; N bracketleft ; B 63 -196 250 722 ; -C 92 ; WX 278 ; N backslash ; B -17 -19 295 737 ; -C 93 ; WX 278 ; N bracketright ; B 28 -196 215 722 ; -C 94 ; WX 469 ; N asciicircum ; B -14 264 483 688 ; -C 95 ; WX 556 ; N underscore ; B 0 -125 556 -75 ; -C 145 ; WX 222 ; N quoteleft ; B 65 470 169 725 ; -C 97 ; WX 556 ; N a ; B 36 -15 530 538 ; -C 98 ; WX 556 ; N b ; B 58 -15 517 718 ; -C 99 ; WX 500 ; N c ; B 30 -15 477 538 ; -C 100 ; WX 556 ; N d ; B 35 -15 499 718 ; -C 101 ; WX 556 ; N e ; B 40 -15 516 538 ; -C 102 ; WX 278 ; N f ; B 14 0 262 728 ; L i fi ; L l fl ; -C 103 ; WX 556 ; N g ; B 40 -220 499 538 ; -C 104 ; WX 556 ; N h ; B 65 0 491 718 ; -C 105 ; WX 222 ; N i ; B 67 0 155 718 ; -C 106 ; WX 222 ; N j ; B -16 -210 155 718 ; -C 107 ; WX 500 ; N k ; B 67 0 501 718 ; -C 108 ; WX 222 ; N l ; B 67 0 155 718 ; -C 109 ; WX 833 ; N m ; B 65 0 769 538 ; -C 110 ; WX 556 ; N n ; B 65 0 491 538 ; -C 111 ; WX 556 ; N o ; B 35 -14 521 538 ; -C 112 ; WX 556 ; N p ; B 58 -207 517 538 ; -C 113 ; WX 556 ; N q ; B 35 -207 494 538 ; -C 114 ; WX 333 ; N r ; B 77 0 332 538 ; -C 115 ; WX 500 ; N s ; B 32 -15 464 538 ; -C 116 ; WX 278 ; N t ; B 14 -7 257 669 ; -C 117 ; WX 556 ; N u ; B 68 -15 489 523 ; -C 118 ; WX 500 ; N v ; B 8 0 492 523 ; -C 119 ; WX 722 ; N w ; B 14 0 709 523 ; -C 120 ; WX 500 ; N x ; B 11 0 490 523 ; -C 121 ; WX 500 ; N y ; B 11 -214 489 523 ; -C 122 ; WX 500 ; N z ; B 31 0 469 523 ; -C 123 ; WX 334 ; N braceleft ; B 42 -196 292 722 ; -C 124 ; WX 260 ; N bar ; B 94 -225 167 775 ; -C 125 ; WX 334 ; N braceright ; B 42 -196 292 722 ; -C 126 ; WX 584 ; N asciitilde ; B 61 180 523 326 ; -C 161 ; WX 333 ; N exclamdown ; B 118 -195 215 523 ; -C 162 ; WX 556 ; N cent ; B 51 -115 513 623 ; -C 163 ; WX 556 ; N sterling ; B 33 -16 539 718 ; -C -1 ; WX 167 ; N fraction ; B -166 -19 333 703 ; -C 165 ; WX 556 ; N yen ; B 3 0 553 688 ; -C 131 ; WX 556 ; N florin ; B -11 -207 501 737 ; -C 167 ; WX 556 ; N section ; B 43 -191 512 737 ; -C 164 ; WX 556 ; N currency ; B 28 99 528 603 ; -C 39 ; WX 191 ; N quotesingle ; B 59 463 132 718 ; -C 147 ; WX 333 ; N quotedblleft ; B 38 470 307 725 ; -C 170 ; WX 556 ; N guillemotleft ; B 97 108 459 446 ; -C 139 ; WX 333 ; N guilsinglleft ; B 88 108 245 446 ; -C 155 ; WX 333 ; N guilsinglright ; B 88 108 245 446 ; -C -1 ; WX 500 ; N fi ; B 14 0 434 728 ; -C -1 ; WX 500 ; N fl ; B 14 0 432 728 ; -C 150 ; WX 556 ; N endash ; B 0 240 556 313 ; -C 134 ; WX 556 ; N dagger ; B 43 -159 514 718 ; -C 135 ; WX 556 ; N daggerdbl ; B 43 -159 514 718 ; -C 183 ; WX 278 ; N periodcentered ; B 77 190 202 315 ; -C 182 ; WX 537 ; N paragraph ; B 18 -173 497 718 ; -C 149 ; WX 350 ; N bullet ; B 18 202 333 517 ; -C 130 ; WX 222 ; N quotesinglbase ; B 53 -149 157 106 ; -C 132 ; WX 333 ; N quotedblbase ; B 26 -149 295 106 ; -C 148 ; WX 333 ; N quotedblright ; B 26 463 295 718 ; -C 187 ; WX 556 ; N guillemotright ; B 97 108 459 446 ; -C 133 ; WX 1000 ; N ellipsis ; B 115 0 885 106 ; -C 137 ; WX 1000 ; N perthousand ; B 7 -19 994 703 ; -C 191 ; WX 611 ; N questiondown ; B 91 -201 527 525 ; -C 96 ; WX 333 ; N grave ; B 14 593 211 734 ; -C 180 ; WX 333 ; N acute ; B 122 593 319 734 ; -C 136 ; WX 333 ; N circumflex ; B 21 593 312 734 ; -C 152 ; WX 333 ; N tilde ; B -4 606 337 722 ; -C 175 ; WX 333 ; N macron ; B 10 627 323 684 ; -C -1 ; WX 333 ; N breve ; B 13 595 321 731 ; -C -1 ; WX 333 ; N dotaccent ; B 121 604 212 706 ; -C 168 ; WX 333 ; N dieresis ; B 40 604 293 706 ; -C -1 ; WX 333 ; N ring ; B 75 572 259 756 ; -C 184 ; WX 333 ; N cedilla ; B 45 -225 259 0 ; -C -1 ; WX 333 ; N hungarumlaut ; B 31 593 409 734 ; -C -1 ; WX 333 ; N ogonek ; B 73 -225 287 0 ; -C -1 ; WX 333 ; N caron ; B 21 593 312 734 ; -C 151 ; WX 1000 ; N emdash ; B 0 240 1000 313 ; -C 198 ; WX 1000 ; N AE ; B 8 0 951 718 ; -C 170 ; WX 370 ; N ordfeminine ; B 24 405 346 737 ; -C -1 ; WX 556 ; N Lslash ; B -20 0 537 718 ; -C 216 ; WX 778 ; N Oslash ; B 39 -19 740 737 ; -C 140 ; WX 1000 ; N OE ; B 36 -19 965 737 ; -C 186 ; WX 365 ; N ordmasculine ; B 25 405 341 737 ; -C 230 ; WX 889 ; N ae ; B 36 -15 847 538 ; -C -1 ; WX 278 ; N dotlessi ; B 95 0 183 523 ; -C -1 ; WX 222 ; N lslash ; B -20 0 242 718 ; -C 248 ; WX 611 ; N oslash ; B 28 -22 537 545 ; -C 156 ; WX 944 ; N oe ; B 35 -15 902 538 ; -C 223 ; WX 611 ; N germandbls ; B 67 -15 571 728 ; -C 207 ; WX 278 ; N Idieresis ; B 13 0 266 901 ; -C 233 ; WX 556 ; N eacute ; B 40 -15 516 734 ; -C -1 ; WX 556 ; N abreve ; B 36 -15 530 731 ; -C -1 ; WX 556 ; N uhungarumlaut ; B 68 -15 521 734 ; -C -1 ; WX 556 ; N ecaron ; B 40 -15 516 734 ; -C 159 ; WX 667 ; N Ydieresis ; B 14 0 653 901 ; -C 247 ; WX 584 ; N divide ; B 39 -19 545 524 ; -C 221 ; WX 667 ; N Yacute ; B 14 0 653 929 ; -C 194 ; WX 667 ; N Acircumflex ; B 14 0 654 929 ; -C 225 ; WX 556 ; N aacute ; B 36 -15 530 734 ; -C 219 ; WX 722 ; N Ucircumflex ; B 79 -19 644 929 ; -C 253 ; WX 500 ; N yacute ; B 11 -214 489 734 ; -C -1 ; WX 500 ; N scommaaccent ; B 32 -225 464 538 ; -C 234 ; WX 556 ; N ecircumflex ; B 40 -15 516 734 ; -C -1 ; WX 722 ; N Uring ; B 79 -19 644 931 ; -C 220 ; WX 722 ; N Udieresis ; B 79 -19 644 901 ; -C -1 ; WX 556 ; N aogonek ; B 36 -220 547 538 ; -C 218 ; WX 722 ; N Uacute ; B 79 -19 644 929 ; -C -1 ; WX 556 ; N uogonek ; B 68 -225 519 523 ; -C 203 ; WX 667 ; N Edieresis ; B 86 0 616 901 ; -C -1 ; WX 722 ; N Dcroat ; B 0 0 674 718 ; -C -1 ; WX 250 ; N commaaccent ; B 87 -225 181 -40 ; -C 169 ; WX 737 ; N copyright ; B -14 -19 752 737 ; -C -1 ; WX 667 ; N Emacron ; B 86 0 616 879 ; -C -1 ; WX 500 ; N ccaron ; B 30 -15 477 734 ; -C 229 ; WX 556 ; N aring ; B 36 -15 530 756 ; -C -1 ; WX 722 ; N Ncommaaccent ; B 76 -225 646 718 ; -C -1 ; WX 222 ; N lacute ; B 67 0 264 929 ; -C 224 ; WX 556 ; N agrave ; B 36 -15 530 734 ; -C -1 ; WX 611 ; N Tcommaaccent ; B 14 -225 597 718 ; -C -1 ; WX 722 ; N Cacute ; B 44 -19 681 929 ; -C 227 ; WX 556 ; N atilde ; B 36 -15 530 722 ; -C -1 ; WX 667 ; N Edotaccent ; B 86 0 616 901 ; -C 154 ; WX 500 ; N scaron ; B 32 -15 464 734 ; -C -1 ; WX 500 ; N scedilla ; B 32 -225 464 538 ; -C 237 ; WX 278 ; N iacute ; B 95 0 292 734 ; -C -1 ; WX 471 ; N lozenge ; B 10 0 462 728 ; -C -1 ; WX 722 ; N Rcaron ; B 88 0 684 929 ; -C -1 ; WX 778 ; N Gcommaaccent ; B 48 -225 704 737 ; -C 251 ; WX 556 ; N ucircumflex ; B 68 -15 489 734 ; -C 226 ; WX 556 ; N acircumflex ; B 36 -15 530 734 ; -C -1 ; WX 667 ; N Amacron ; B 14 0 654 879 ; -C -1 ; WX 333 ; N rcaron ; B 61 0 352 734 ; -C 231 ; WX 500 ; N ccedilla ; B 30 -225 477 538 ; -C -1 ; WX 611 ; N Zdotaccent ; B 23 0 588 901 ; -C 222 ; WX 667 ; N Thorn ; B 86 0 622 718 ; -C -1 ; WX 778 ; N Omacron ; B 39 -19 739 879 ; -C -1 ; WX 722 ; N Racute ; B 88 0 684 929 ; -C -1 ; WX 667 ; N Sacute ; B 49 -19 620 929 ; -C -1 ; WX 643 ; N dcaron ; B 35 -15 655 718 ; -C -1 ; WX 722 ; N Umacron ; B 79 -19 644 879 ; -C -1 ; WX 556 ; N uring ; B 68 -15 489 756 ; -C 179 ; WX 333 ; N threesuperior ; B 5 270 325 703 ; -C 210 ; WX 778 ; N Ograve ; B 39 -19 739 929 ; -C 192 ; WX 667 ; N Agrave ; B 14 0 654 929 ; -C -1 ; WX 667 ; N Abreve ; B 14 0 654 926 ; -C 215 ; WX 584 ; N multiply ; B 39 0 545 506 ; -C 250 ; WX 556 ; N uacute ; B 68 -15 489 734 ; -C -1 ; WX 611 ; N Tcaron ; B 14 0 597 929 ; -C -1 ; WX 476 ; N partialdiff ; B 13 -38 463 714 ; -C 255 ; WX 500 ; N ydieresis ; B 11 -214 489 706 ; -C -1 ; WX 722 ; N Nacute ; B 76 0 646 929 ; -C 238 ; WX 278 ; N icircumflex ; B -6 0 285 734 ; -C 202 ; WX 667 ; N Ecircumflex ; B 86 0 616 929 ; -C 228 ; WX 556 ; N adieresis ; B 36 -15 530 706 ; -C 235 ; WX 556 ; N edieresis ; B 40 -15 516 706 ; -C -1 ; WX 500 ; N cacute ; B 30 -15 477 734 ; -C -1 ; WX 556 ; N nacute ; B 65 0 491 734 ; -C -1 ; WX 556 ; N umacron ; B 68 -15 489 684 ; -C -1 ; WX 722 ; N Ncaron ; B 76 0 646 929 ; -C 205 ; WX 278 ; N Iacute ; B 91 0 292 929 ; -C 177 ; WX 584 ; N plusminus ; B 39 0 545 506 ; -C 166 ; WX 260 ; N brokenbar ; B 94 -150 167 700 ; -C 174 ; WX 737 ; N registered ; B -14 -19 752 737 ; -C -1 ; WX 778 ; N Gbreve ; B 48 -19 704 926 ; -C -1 ; WX 278 ; N Idotaccent ; B 91 0 188 901 ; -C -1 ; WX 600 ; N summation ; B 15 -10 586 706 ; -C 200 ; WX 667 ; N Egrave ; B 86 0 616 929 ; -C -1 ; WX 333 ; N racute ; B 77 0 332 734 ; -C -1 ; WX 556 ; N omacron ; B 35 -14 521 684 ; -C -1 ; WX 611 ; N Zacute ; B 23 0 588 929 ; -C 142 ; WX 611 ; N Zcaron ; B 23 0 588 929 ; -C -1 ; WX 549 ; N greaterequal ; B 26 0 523 674 ; -C 208 ; WX 722 ; N Eth ; B 0 0 674 718 ; -C 199 ; WX 722 ; N Ccedilla ; B 44 -225 681 737 ; -C -1 ; WX 222 ; N lcommaaccent ; B 67 -225 167 718 ; -C -1 ; WX 317 ; N tcaron ; B 14 -7 329 808 ; -C -1 ; WX 556 ; N eogonek ; B 40 -225 516 538 ; -C -1 ; WX 722 ; N Uogonek ; B 79 -225 644 718 ; -C 193 ; WX 667 ; N Aacute ; B 14 0 654 929 ; -C 196 ; WX 667 ; N Adieresis ; B 14 0 654 901 ; -C 232 ; WX 556 ; N egrave ; B 40 -15 516 734 ; -C -1 ; WX 500 ; N zacute ; B 31 0 469 734 ; -C -1 ; WX 222 ; N iogonek ; B -31 -225 183 718 ; -C 211 ; WX 778 ; N Oacute ; B 39 -19 739 929 ; -C 243 ; WX 556 ; N oacute ; B 35 -14 521 734 ; -C -1 ; WX 556 ; N amacron ; B 36 -15 530 684 ; -C -1 ; WX 500 ; N sacute ; B 32 -15 464 734 ; -C 239 ; WX 278 ; N idieresis ; B 13 0 266 706 ; -C 212 ; WX 778 ; N Ocircumflex ; B 39 -19 739 929 ; -C 217 ; WX 722 ; N Ugrave ; B 79 -19 644 929 ; -C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; -C 254 ; WX 556 ; N thorn ; B 58 -207 517 718 ; -C 178 ; WX 333 ; N twosuperior ; B 4 281 323 703 ; -C 214 ; WX 778 ; N Odieresis ; B 39 -19 739 901 ; -C 181 ; WX 556 ; N mu ; B 68 -207 489 523 ; -C 236 ; WX 278 ; N igrave ; B -13 0 184 734 ; -C -1 ; WX 556 ; N ohungarumlaut ; B 35 -14 521 734 ; -C -1 ; WX 667 ; N Eogonek ; B 86 -220 633 718 ; -C -1 ; WX 556 ; N dcroat ; B 35 -15 550 718 ; -C 190 ; WX 834 ; N threequarters ; B 45 -19 810 703 ; -C -1 ; WX 667 ; N Scedilla ; B 49 -225 620 737 ; -C -1 ; WX 299 ; N lcaron ; B 67 0 311 718 ; -C -1 ; WX 667 ; N Kcommaaccent ; B 76 -225 663 718 ; -C -1 ; WX 556 ; N Lacute ; B 76 0 537 929 ; -C 153 ; WX 1000 ; N trademark ; B 46 306 903 718 ; -C -1 ; WX 556 ; N edotaccent ; B 40 -15 516 706 ; -C 204 ; WX 278 ; N Igrave ; B -13 0 188 929 ; -C -1 ; WX 278 ; N Imacron ; B -17 0 296 879 ; -C -1 ; WX 556 ; N Lcaron ; B 76 0 537 718 ; -C 189 ; WX 834 ; N onehalf ; B 43 -19 773 703 ; -C -1 ; WX 549 ; N lessequal ; B 26 0 523 674 ; -C 244 ; WX 556 ; N ocircumflex ; B 35 -14 521 734 ; -C 241 ; WX 556 ; N ntilde ; B 65 0 491 722 ; -C -1 ; WX 722 ; N Uhungarumlaut ; B 79 -19 644 929 ; -C 201 ; WX 667 ; N Eacute ; B 86 0 616 929 ; -C -1 ; WX 556 ; N emacron ; B 40 -15 516 684 ; -C -1 ; WX 556 ; N gbreve ; B 40 -220 499 731 ; -C 188 ; WX 834 ; N onequarter ; B 73 -19 756 703 ; -C 138 ; WX 667 ; N Scaron ; B 49 -19 620 929 ; -C -1 ; WX 667 ; N Scommaaccent ; B 49 -225 620 737 ; -C -1 ; WX 778 ; N Ohungarumlaut ; B 39 -19 739 929 ; -C 176 ; WX 400 ; N degree ; B 54 411 346 703 ; -C 242 ; WX 556 ; N ograve ; B 35 -14 521 734 ; -C -1 ; WX 722 ; N Ccaron ; B 44 -19 681 929 ; -C 249 ; WX 556 ; N ugrave ; B 68 -15 489 734 ; -C -1 ; WX 453 ; N radical ; B -4 -80 458 762 ; -C -1 ; WX 722 ; N Dcaron ; B 81 0 674 929 ; -C -1 ; WX 333 ; N rcommaaccent ; B 77 -225 332 538 ; -C 209 ; WX 722 ; N Ntilde ; B 76 0 646 917 ; -C 245 ; WX 556 ; N otilde ; B 35 -14 521 722 ; -C -1 ; WX 722 ; N Rcommaaccent ; B 88 -225 684 718 ; -C -1 ; WX 556 ; N Lcommaaccent ; B 76 -225 537 718 ; -C 195 ; WX 667 ; N Atilde ; B 14 0 654 917 ; -C -1 ; WX 667 ; N Aogonek ; B 14 -225 654 718 ; -C 197 ; WX 667 ; N Aring ; B 14 0 654 931 ; -C 213 ; WX 778 ; N Otilde ; B 39 -19 739 917 ; -C -1 ; WX 500 ; N zdotaccent ; B 31 0 469 706 ; -C -1 ; WX 667 ; N Ecaron ; B 86 0 616 929 ; -C -1 ; WX 278 ; N Iogonek ; B -3 -225 211 718 ; -C -1 ; WX 500 ; N kcommaaccent ; B 67 -225 501 718 ; -C -1 ; WX 584 ; N minus ; B 39 216 545 289 ; -C 206 ; WX 278 ; N Icircumflex ; B -6 0 285 929 ; -C -1 ; WX 556 ; N ncaron ; B 65 0 491 734 ; -C -1 ; WX 278 ; N tcommaaccent ; B 14 -225 257 669 ; -C 172 ; WX 584 ; N logicalnot ; B 39 108 545 390 ; -C 246 ; WX 556 ; N odieresis ; B 35 -14 521 706 ; -C 252 ; WX 556 ; N udieresis ; B 68 -15 489 706 ; -C -1 ; WX 549 ; N notequal ; B 12 -35 537 551 ; -C -1 ; WX 556 ; N gcommaaccent ; B 40 -220 499 822 ; -C 240 ; WX 556 ; N eth ; B 35 -15 522 737 ; -C 158 ; WX 500 ; N zcaron ; B 31 0 469 734 ; -C -1 ; WX 556 ; N ncommaaccent ; B 65 -225 491 538 ; -C 185 ; WX 333 ; N onesuperior ; B 43 281 222 703 ; -C -1 ; WX 278 ; N imacron ; B 5 0 272 684 ; -C 128 ; WX 556 ; N Euro ; B 0 0 0 0 ; -EndCharMetrics -StartKernData -StartKernPairs 2705 -KPX A C -30 -KPX A Cacute -30 -KPX A Ccaron -30 -KPX A Ccedilla -30 -KPX A G -30 -KPX A Gbreve -30 -KPX A Gcommaaccent -30 -KPX A O -30 -KPX A Oacute -30 -KPX A Ocircumflex -30 -KPX A Odieresis -30 -KPX A Ograve -30 -KPX A Ohungarumlaut -30 -KPX A Omacron -30 -KPX A Oslash -30 -KPX A Otilde -30 -KPX A Q -30 -KPX A T -120 -KPX A Tcaron -120 -KPX A Tcommaaccent -120 -KPX A U -50 -KPX A Uacute -50 -KPX A Ucircumflex -50 -KPX A Udieresis -50 -KPX A Ugrave -50 -KPX A Uhungarumlaut -50 -KPX A Umacron -50 -KPX A Uogonek -50 -KPX A Uring -50 -KPX A V -70 -KPX A W -50 -KPX A Y -100 -KPX A Yacute -100 -KPX A Ydieresis -100 -KPX A u -30 -KPX A uacute -30 -KPX A ucircumflex -30 -KPX A udieresis -30 -KPX A ugrave -30 -KPX A uhungarumlaut -30 -KPX A umacron -30 -KPX A uogonek -30 -KPX A uring -30 -KPX A v -40 -KPX A w -40 -KPX A y -40 -KPX A yacute -40 -KPX A ydieresis -40 -KPX Aacute C -30 -KPX Aacute Cacute -30 -KPX Aacute Ccaron -30 -KPX Aacute Ccedilla -30 -KPX Aacute G -30 -KPX Aacute Gbreve -30 -KPX Aacute Gcommaaccent -30 -KPX Aacute O -30 -KPX Aacute Oacute -30 -KPX Aacute Ocircumflex -30 -KPX Aacute Odieresis -30 -KPX Aacute Ograve -30 -KPX Aacute Ohungarumlaut -30 -KPX Aacute Omacron -30 -KPX Aacute Oslash -30 -KPX Aacute Otilde -30 -KPX Aacute Q -30 -KPX Aacute T -120 -KPX Aacute Tcaron -120 -KPX Aacute Tcommaaccent -120 -KPX Aacute U -50 -KPX Aacute Uacute -50 -KPX Aacute Ucircumflex -50 -KPX Aacute Udieresis -50 -KPX Aacute Ugrave -50 -KPX Aacute Uhungarumlaut -50 -KPX Aacute Umacron -50 -KPX Aacute Uogonek -50 -KPX Aacute Uring -50 -KPX Aacute V -70 -KPX Aacute W -50 -KPX Aacute Y -100 -KPX Aacute Yacute -100 -KPX Aacute Ydieresis -100 -KPX Aacute u -30 -KPX Aacute uacute -30 -KPX Aacute ucircumflex -30 -KPX Aacute udieresis -30 -KPX Aacute ugrave -30 -KPX Aacute uhungarumlaut -30 -KPX Aacute umacron -30 -KPX Aacute uogonek -30 -KPX Aacute uring -30 -KPX Aacute v -40 -KPX Aacute w -40 -KPX Aacute y -40 -KPX Aacute yacute -40 -KPX Aacute ydieresis -40 -KPX Abreve C -30 -KPX Abreve Cacute -30 -KPX Abreve Ccaron -30 -KPX Abreve Ccedilla -30 -KPX Abreve G -30 -KPX Abreve Gbreve -30 -KPX Abreve Gcommaaccent -30 -KPX Abreve O -30 -KPX Abreve Oacute -30 -KPX Abreve Ocircumflex -30 -KPX Abreve Odieresis -30 -KPX Abreve Ograve -30 -KPX Abreve Ohungarumlaut -30 -KPX Abreve Omacron -30 -KPX Abreve Oslash -30 -KPX Abreve Otilde -30 -KPX Abreve Q -30 -KPX Abreve T -120 -KPX Abreve Tcaron -120 -KPX Abreve Tcommaaccent -120 -KPX Abreve U -50 -KPX Abreve Uacute -50 -KPX Abreve Ucircumflex -50 -KPX Abreve Udieresis -50 -KPX Abreve Ugrave -50 -KPX Abreve Uhungarumlaut -50 -KPX Abreve Umacron -50 -KPX Abreve Uogonek -50 -KPX Abreve Uring -50 -KPX Abreve V -70 -KPX Abreve W -50 -KPX Abreve Y -100 -KPX Abreve Yacute -100 -KPX Abreve Ydieresis -100 -KPX Abreve u -30 -KPX Abreve uacute -30 -KPX Abreve ucircumflex -30 -KPX Abreve udieresis -30 -KPX Abreve ugrave -30 -KPX Abreve uhungarumlaut -30 -KPX Abreve umacron -30 -KPX Abreve uogonek -30 -KPX Abreve uring -30 -KPX Abreve v -40 -KPX Abreve w -40 -KPX Abreve y -40 -KPX Abreve yacute -40 -KPX Abreve ydieresis -40 -KPX Acircumflex C -30 -KPX Acircumflex Cacute -30 -KPX Acircumflex Ccaron -30 -KPX Acircumflex Ccedilla -30 -KPX Acircumflex G -30 -KPX Acircumflex Gbreve -30 -KPX Acircumflex Gcommaaccent -30 -KPX Acircumflex O -30 -KPX Acircumflex Oacute -30 -KPX Acircumflex Ocircumflex -30 -KPX Acircumflex Odieresis -30 -KPX Acircumflex Ograve -30 -KPX Acircumflex Ohungarumlaut -30 -KPX Acircumflex Omacron -30 -KPX Acircumflex Oslash -30 -KPX Acircumflex Otilde -30 -KPX Acircumflex Q -30 -KPX Acircumflex T -120 -KPX Acircumflex Tcaron -120 -KPX Acircumflex Tcommaaccent -120 -KPX Acircumflex U -50 -KPX Acircumflex Uacute -50 -KPX Acircumflex Ucircumflex -50 -KPX Acircumflex Udieresis -50 -KPX Acircumflex Ugrave -50 -KPX Acircumflex Uhungarumlaut -50 -KPX Acircumflex Umacron -50 -KPX Acircumflex Uogonek -50 -KPX Acircumflex Uring -50 -KPX Acircumflex V -70 -KPX Acircumflex W -50 -KPX Acircumflex Y -100 -KPX Acircumflex Yacute -100 -KPX Acircumflex Ydieresis -100 -KPX Acircumflex u -30 -KPX Acircumflex uacute -30 -KPX Acircumflex ucircumflex -30 -KPX Acircumflex udieresis -30 -KPX Acircumflex ugrave -30 -KPX Acircumflex uhungarumlaut -30 -KPX Acircumflex umacron -30 -KPX Acircumflex uogonek -30 -KPX Acircumflex uring -30 -KPX Acircumflex v -40 -KPX Acircumflex w -40 -KPX Acircumflex y -40 -KPX Acircumflex yacute -40 -KPX Acircumflex ydieresis -40 -KPX Adieresis C -30 -KPX Adieresis Cacute -30 -KPX Adieresis Ccaron -30 -KPX Adieresis Ccedilla -30 -KPX Adieresis G -30 -KPX Adieresis Gbreve -30 -KPX Adieresis Gcommaaccent -30 -KPX Adieresis O -30 -KPX Adieresis Oacute -30 -KPX Adieresis Ocircumflex -30 -KPX Adieresis Odieresis -30 -KPX Adieresis Ograve -30 -KPX Adieresis Ohungarumlaut -30 -KPX Adieresis Omacron -30 -KPX Adieresis Oslash -30 -KPX Adieresis Otilde -30 -KPX Adieresis Q -30 -KPX Adieresis T -120 -KPX Adieresis Tcaron -120 -KPX Adieresis Tcommaaccent -120 -KPX Adieresis U -50 -KPX Adieresis Uacute -50 -KPX Adieresis Ucircumflex -50 -KPX Adieresis Udieresis -50 -KPX Adieresis Ugrave -50 -KPX Adieresis Uhungarumlaut -50 -KPX Adieresis Umacron -50 -KPX Adieresis Uogonek -50 -KPX Adieresis Uring -50 -KPX Adieresis V -70 -KPX Adieresis W -50 -KPX Adieresis Y -100 -KPX Adieresis Yacute -100 -KPX Adieresis Ydieresis -100 -KPX Adieresis u -30 -KPX Adieresis uacute -30 -KPX Adieresis ucircumflex -30 -KPX Adieresis udieresis -30 -KPX Adieresis ugrave -30 -KPX Adieresis uhungarumlaut -30 -KPX Adieresis umacron -30 -KPX Adieresis uogonek -30 -KPX Adieresis uring -30 -KPX Adieresis v -40 -KPX Adieresis w -40 -KPX Adieresis y -40 -KPX Adieresis yacute -40 -KPX Adieresis ydieresis -40 -KPX Agrave C -30 -KPX Agrave Cacute -30 -KPX Agrave Ccaron -30 -KPX Agrave Ccedilla -30 -KPX Agrave G -30 -KPX Agrave Gbreve -30 -KPX Agrave Gcommaaccent -30 -KPX Agrave O -30 -KPX Agrave Oacute -30 -KPX Agrave Ocircumflex -30 -KPX Agrave Odieresis -30 -KPX Agrave Ograve -30 -KPX Agrave Ohungarumlaut -30 -KPX Agrave Omacron -30 -KPX Agrave Oslash -30 -KPX Agrave Otilde -30 -KPX Agrave Q -30 -KPX Agrave T -120 -KPX Agrave Tcaron -120 -KPX Agrave Tcommaaccent -120 -KPX Agrave U -50 -KPX Agrave Uacute -50 -KPX Agrave Ucircumflex -50 -KPX Agrave Udieresis -50 -KPX Agrave Ugrave -50 -KPX Agrave Uhungarumlaut -50 -KPX Agrave Umacron -50 -KPX Agrave Uogonek -50 -KPX Agrave Uring -50 -KPX Agrave V -70 -KPX Agrave W -50 -KPX Agrave Y -100 -KPX Agrave Yacute -100 -KPX Agrave Ydieresis -100 -KPX Agrave u -30 -KPX Agrave uacute -30 -KPX Agrave ucircumflex -30 -KPX Agrave udieresis -30 -KPX Agrave ugrave -30 -KPX Agrave uhungarumlaut -30 -KPX Agrave umacron -30 -KPX Agrave uogonek -30 -KPX Agrave uring -30 -KPX Agrave v -40 -KPX Agrave w -40 -KPX Agrave y -40 -KPX Agrave yacute -40 -KPX Agrave ydieresis -40 -KPX Amacron C -30 -KPX Amacron Cacute -30 -KPX Amacron Ccaron -30 -KPX Amacron Ccedilla -30 -KPX Amacron G -30 -KPX Amacron Gbreve -30 -KPX Amacron Gcommaaccent -30 -KPX Amacron O -30 -KPX Amacron Oacute -30 -KPX Amacron Ocircumflex -30 -KPX Amacron Odieresis -30 -KPX Amacron Ograve -30 -KPX Amacron Ohungarumlaut -30 -KPX Amacron Omacron -30 -KPX Amacron Oslash -30 -KPX Amacron Otilde -30 -KPX Amacron Q -30 -KPX Amacron T -120 -KPX Amacron Tcaron -120 -KPX Amacron Tcommaaccent -120 -KPX Amacron U -50 -KPX Amacron Uacute -50 -KPX Amacron Ucircumflex -50 -KPX Amacron Udieresis -50 -KPX Amacron Ugrave -50 -KPX Amacron Uhungarumlaut -50 -KPX Amacron Umacron -50 -KPX Amacron Uogonek -50 -KPX Amacron Uring -50 -KPX Amacron V -70 -KPX Amacron W -50 -KPX Amacron Y -100 -KPX Amacron Yacute -100 -KPX Amacron Ydieresis -100 -KPX Amacron u -30 -KPX Amacron uacute -30 -KPX Amacron ucircumflex -30 -KPX Amacron udieresis -30 -KPX Amacron ugrave -30 -KPX Amacron uhungarumlaut -30 -KPX Amacron umacron -30 -KPX Amacron uogonek -30 -KPX Amacron uring -30 -KPX Amacron v -40 -KPX Amacron w -40 -KPX Amacron y -40 -KPX Amacron yacute -40 -KPX Amacron ydieresis -40 -KPX Aogonek C -30 -KPX Aogonek Cacute -30 -KPX Aogonek Ccaron -30 -KPX Aogonek Ccedilla -30 -KPX Aogonek G -30 -KPX Aogonek Gbreve -30 -KPX Aogonek Gcommaaccent -30 -KPX Aogonek O -30 -KPX Aogonek Oacute -30 -KPX Aogonek Ocircumflex -30 -KPX Aogonek Odieresis -30 -KPX Aogonek Ograve -30 -KPX Aogonek Ohungarumlaut -30 -KPX Aogonek Omacron -30 -KPX Aogonek Oslash -30 -KPX Aogonek Otilde -30 -KPX Aogonek Q -30 -KPX Aogonek T -120 -KPX Aogonek Tcaron -120 -KPX Aogonek Tcommaaccent -120 -KPX Aogonek U -50 -KPX Aogonek Uacute -50 -KPX Aogonek Ucircumflex -50 -KPX Aogonek Udieresis -50 -KPX Aogonek Ugrave -50 -KPX Aogonek Uhungarumlaut -50 -KPX Aogonek Umacron -50 -KPX Aogonek Uogonek -50 -KPX Aogonek Uring -50 -KPX Aogonek V -70 -KPX Aogonek W -50 -KPX Aogonek Y -100 -KPX Aogonek Yacute -100 -KPX Aogonek Ydieresis -100 -KPX Aogonek u -30 -KPX Aogonek uacute -30 -KPX Aogonek ucircumflex -30 -KPX Aogonek udieresis -30 -KPX Aogonek ugrave -30 -KPX Aogonek uhungarumlaut -30 -KPX Aogonek umacron -30 -KPX Aogonek uogonek -30 -KPX Aogonek uring -30 -KPX Aogonek v -40 -KPX Aogonek w -40 -KPX Aogonek y -40 -KPX Aogonek yacute -40 -KPX Aogonek ydieresis -40 -KPX Aring C -30 -KPX Aring Cacute -30 -KPX Aring Ccaron -30 -KPX Aring Ccedilla -30 -KPX Aring G -30 -KPX Aring Gbreve -30 -KPX Aring Gcommaaccent -30 -KPX Aring O -30 -KPX Aring Oacute -30 -KPX Aring Ocircumflex -30 -KPX Aring Odieresis -30 -KPX Aring Ograve -30 -KPX Aring Ohungarumlaut -30 -KPX Aring Omacron -30 -KPX Aring Oslash -30 -KPX Aring Otilde -30 -KPX Aring Q -30 -KPX Aring T -120 -KPX Aring Tcaron -120 -KPX Aring Tcommaaccent -120 -KPX Aring U -50 -KPX Aring Uacute -50 -KPX Aring Ucircumflex -50 -KPX Aring Udieresis -50 -KPX Aring Ugrave -50 -KPX Aring Uhungarumlaut -50 -KPX Aring Umacron -50 -KPX Aring Uogonek -50 -KPX Aring Uring -50 -KPX Aring V -70 -KPX Aring W -50 -KPX Aring Y -100 -KPX Aring Yacute -100 -KPX Aring Ydieresis -100 -KPX Aring u -30 -KPX Aring uacute -30 -KPX Aring ucircumflex -30 -KPX Aring udieresis -30 -KPX Aring ugrave -30 -KPX Aring uhungarumlaut -30 -KPX Aring umacron -30 -KPX Aring uogonek -30 -KPX Aring uring -30 -KPX Aring v -40 -KPX Aring w -40 -KPX Aring y -40 -KPX Aring yacute -40 -KPX Aring ydieresis -40 -KPX Atilde C -30 -KPX Atilde Cacute -30 -KPX Atilde Ccaron -30 -KPX Atilde Ccedilla -30 -KPX Atilde G -30 -KPX Atilde Gbreve -30 -KPX Atilde Gcommaaccent -30 -KPX Atilde O -30 -KPX Atilde Oacute -30 -KPX Atilde Ocircumflex -30 -KPX Atilde Odieresis -30 -KPX Atilde Ograve -30 -KPX Atilde Ohungarumlaut -30 -KPX Atilde Omacron -30 -KPX Atilde Oslash -30 -KPX Atilde Otilde -30 -KPX Atilde Q -30 -KPX Atilde T -120 -KPX Atilde Tcaron -120 -KPX Atilde Tcommaaccent -120 -KPX Atilde U -50 -KPX Atilde Uacute -50 -KPX Atilde Ucircumflex -50 -KPX Atilde Udieresis -50 -KPX Atilde Ugrave -50 -KPX Atilde Uhungarumlaut -50 -KPX Atilde Umacron -50 -KPX Atilde Uogonek -50 -KPX Atilde Uring -50 -KPX Atilde V -70 -KPX Atilde W -50 -KPX Atilde Y -100 -KPX Atilde Yacute -100 -KPX Atilde Ydieresis -100 -KPX Atilde u -30 -KPX Atilde uacute -30 -KPX Atilde ucircumflex -30 -KPX Atilde udieresis -30 -KPX Atilde ugrave -30 -KPX Atilde uhungarumlaut -30 -KPX Atilde umacron -30 -KPX Atilde uogonek -30 -KPX Atilde uring -30 -KPX Atilde v -40 -KPX Atilde w -40 -KPX Atilde y -40 -KPX Atilde yacute -40 -KPX Atilde ydieresis -40 -KPX B U -10 -KPX B Uacute -10 -KPX B Ucircumflex -10 -KPX B Udieresis -10 -KPX B Ugrave -10 -KPX B Uhungarumlaut -10 -KPX B Umacron -10 -KPX B Uogonek -10 -KPX B Uring -10 -KPX B comma -20 -KPX B period -20 -KPX C comma -30 -KPX C period -30 -KPX Cacute comma -30 -KPX Cacute period -30 -KPX Ccaron comma -30 -KPX Ccaron period -30 -KPX Ccedilla comma -30 -KPX Ccedilla period -30 -KPX D A -40 -KPX D Aacute -40 -KPX D Abreve -40 -KPX D Acircumflex -40 -KPX D Adieresis -40 -KPX D Agrave -40 -KPX D Amacron -40 -KPX D Aogonek -40 -KPX D Aring -40 -KPX D Atilde -40 -KPX D V -70 -KPX D W -40 -KPX D Y -90 -KPX D Yacute -90 -KPX D Ydieresis -90 -KPX D comma -70 -KPX D period -70 -KPX Dcaron A -40 -KPX Dcaron Aacute -40 -KPX Dcaron Abreve -40 -KPX Dcaron Acircumflex -40 -KPX Dcaron Adieresis -40 -KPX Dcaron Agrave -40 -KPX Dcaron Amacron -40 -KPX Dcaron Aogonek -40 -KPX Dcaron Aring -40 -KPX Dcaron Atilde -40 -KPX Dcaron V -70 -KPX Dcaron W -40 -KPX Dcaron Y -90 -KPX Dcaron Yacute -90 -KPX Dcaron Ydieresis -90 -KPX Dcaron comma -70 -KPX Dcaron period -70 -KPX Dcroat A -40 -KPX Dcroat Aacute -40 -KPX Dcroat Abreve -40 -KPX Dcroat Acircumflex -40 -KPX Dcroat Adieresis -40 -KPX Dcroat Agrave -40 -KPX Dcroat Amacron -40 -KPX Dcroat Aogonek -40 -KPX Dcroat Aring -40 -KPX Dcroat Atilde -40 -KPX Dcroat V -70 -KPX Dcroat W -40 -KPX Dcroat Y -90 -KPX Dcroat Yacute -90 -KPX Dcroat Ydieresis -90 -KPX Dcroat comma -70 -KPX Dcroat period -70 -KPX F A -80 -KPX F Aacute -80 -KPX F Abreve -80 -KPX F Acircumflex -80 -KPX F Adieresis -80 -KPX F Agrave -80 -KPX F Amacron -80 -KPX F Aogonek -80 -KPX F Aring -80 -KPX F Atilde -80 -KPX F a -50 -KPX F aacute -50 -KPX F abreve -50 -KPX F acircumflex -50 -KPX F adieresis -50 -KPX F agrave -50 -KPX F amacron -50 -KPX F aogonek -50 -KPX F aring -50 -KPX F atilde -50 -KPX F comma -150 -KPX F e -30 -KPX F eacute -30 -KPX F ecaron -30 -KPX F ecircumflex -30 -KPX F edieresis -30 -KPX F edotaccent -30 -KPX F egrave -30 -KPX F emacron -30 -KPX F eogonek -30 -KPX F o -30 -KPX F oacute -30 -KPX F ocircumflex -30 -KPX F odieresis -30 -KPX F ograve -30 -KPX F ohungarumlaut -30 -KPX F omacron -30 -KPX F oslash -30 -KPX F otilde -30 -KPX F period -150 -KPX F r -45 -KPX F racute -45 -KPX F rcaron -45 -KPX F rcommaaccent -45 -KPX J A -20 -KPX J Aacute -20 -KPX J Abreve -20 -KPX J Acircumflex -20 -KPX J Adieresis -20 -KPX J Agrave -20 -KPX J Amacron -20 -KPX J Aogonek -20 -KPX J Aring -20 -KPX J Atilde -20 -KPX J a -20 -KPX J aacute -20 -KPX J abreve -20 -KPX J acircumflex -20 -KPX J adieresis -20 -KPX J agrave -20 -KPX J amacron -20 -KPX J aogonek -20 -KPX J aring -20 -KPX J atilde -20 -KPX J comma -30 -KPX J period -30 -KPX J u -20 -KPX J uacute -20 -KPX J ucircumflex -20 -KPX J udieresis -20 -KPX J ugrave -20 -KPX J uhungarumlaut -20 -KPX J umacron -20 -KPX J uogonek -20 -KPX J uring -20 -KPX K O -50 -KPX K Oacute -50 -KPX K Ocircumflex -50 -KPX K Odieresis -50 -KPX K Ograve -50 -KPX K Ohungarumlaut -50 -KPX K Omacron -50 -KPX K Oslash -50 -KPX K Otilde -50 -KPX K e -40 -KPX K eacute -40 -KPX K ecaron -40 -KPX K ecircumflex -40 -KPX K edieresis -40 -KPX K edotaccent -40 -KPX K egrave -40 -KPX K emacron -40 -KPX K eogonek -40 -KPX K o -40 -KPX K oacute -40 -KPX K ocircumflex -40 -KPX K odieresis -40 -KPX K ograve -40 -KPX K ohungarumlaut -40 -KPX K omacron -40 -KPX K oslash -40 -KPX K otilde -40 -KPX K u -30 -KPX K uacute -30 -KPX K ucircumflex -30 -KPX K udieresis -30 -KPX K ugrave -30 -KPX K uhungarumlaut -30 -KPX K umacron -30 -KPX K uogonek -30 -KPX K uring -30 -KPX K y -50 -KPX K yacute -50 -KPX K ydieresis -50 -KPX Kcommaaccent O -50 -KPX Kcommaaccent Oacute -50 -KPX Kcommaaccent Ocircumflex -50 -KPX Kcommaaccent Odieresis -50 -KPX Kcommaaccent Ograve -50 -KPX Kcommaaccent Ohungarumlaut -50 -KPX Kcommaaccent Omacron -50 -KPX Kcommaaccent Oslash -50 -KPX Kcommaaccent Otilde -50 -KPX Kcommaaccent e -40 -KPX Kcommaaccent eacute -40 -KPX Kcommaaccent ecaron -40 -KPX Kcommaaccent ecircumflex -40 -KPX Kcommaaccent edieresis -40 -KPX Kcommaaccent edotaccent -40 -KPX Kcommaaccent egrave -40 -KPX Kcommaaccent emacron -40 -KPX Kcommaaccent eogonek -40 -KPX Kcommaaccent o -40 -KPX Kcommaaccent oacute -40 -KPX Kcommaaccent ocircumflex -40 -KPX Kcommaaccent odieresis -40 -KPX Kcommaaccent ograve -40 -KPX Kcommaaccent ohungarumlaut -40 -KPX Kcommaaccent omacron -40 -KPX Kcommaaccent oslash -40 -KPX Kcommaaccent otilde -40 -KPX Kcommaaccent u -30 -KPX Kcommaaccent uacute -30 -KPX Kcommaaccent ucircumflex -30 -KPX Kcommaaccent udieresis -30 -KPX Kcommaaccent ugrave -30 -KPX Kcommaaccent uhungarumlaut -30 -KPX Kcommaaccent umacron -30 -KPX Kcommaaccent uogonek -30 -KPX Kcommaaccent uring -30 -KPX Kcommaaccent y -50 -KPX Kcommaaccent yacute -50 -KPX Kcommaaccent ydieresis -50 -KPX L T -110 -KPX L Tcaron -110 -KPX L Tcommaaccent -110 -KPX L V -110 -KPX L W -70 -KPX L Y -140 -KPX L Yacute -140 -KPX L Ydieresis -140 -KPX L quotedblright -140 -KPX L quoteright -160 -KPX L y -30 -KPX L yacute -30 -KPX L ydieresis -30 -KPX Lacute T -110 -KPX Lacute Tcaron -110 -KPX Lacute Tcommaaccent -110 -KPX Lacute V -110 -KPX Lacute W -70 -KPX Lacute Y -140 -KPX Lacute Yacute -140 -KPX Lacute Ydieresis -140 -KPX Lacute quotedblright -140 -KPX Lacute quoteright -160 -KPX Lacute y -30 -KPX Lacute yacute -30 -KPX Lacute ydieresis -30 -KPX Lcaron T -110 -KPX Lcaron Tcaron -110 -KPX Lcaron Tcommaaccent -110 -KPX Lcaron V -110 -KPX Lcaron W -70 -KPX Lcaron Y -140 -KPX Lcaron Yacute -140 -KPX Lcaron Ydieresis -140 -KPX Lcaron quotedblright -140 -KPX Lcaron quoteright -160 -KPX Lcaron y -30 -KPX Lcaron yacute -30 -KPX Lcaron ydieresis -30 -KPX Lcommaaccent T -110 -KPX Lcommaaccent Tcaron -110 -KPX Lcommaaccent Tcommaaccent -110 -KPX Lcommaaccent V -110 -KPX Lcommaaccent W -70 -KPX Lcommaaccent Y -140 -KPX Lcommaaccent Yacute -140 -KPX Lcommaaccent Ydieresis -140 -KPX Lcommaaccent quotedblright -140 -KPX Lcommaaccent quoteright -160 -KPX Lcommaaccent y -30 -KPX Lcommaaccent yacute -30 -KPX Lcommaaccent ydieresis -30 -KPX Lslash T -110 -KPX Lslash Tcaron -110 -KPX Lslash Tcommaaccent -110 -KPX Lslash V -110 -KPX Lslash W -70 -KPX Lslash Y -140 -KPX Lslash Yacute -140 -KPX Lslash Ydieresis -140 -KPX Lslash quotedblright -140 -KPX Lslash quoteright -160 -KPX Lslash y -30 -KPX Lslash yacute -30 -KPX Lslash ydieresis -30 -KPX O A -20 -KPX O Aacute -20 -KPX O Abreve -20 -KPX O Acircumflex -20 -KPX O Adieresis -20 -KPX O Agrave -20 -KPX O Amacron -20 -KPX O Aogonek -20 -KPX O Aring -20 -KPX O Atilde -20 -KPX O T -40 -KPX O Tcaron -40 -KPX O Tcommaaccent -40 -KPX O V -50 -KPX O W -30 -KPX O X -60 -KPX O Y -70 -KPX O Yacute -70 -KPX O Ydieresis -70 -KPX O comma -40 -KPX O period -40 -KPX Oacute A -20 -KPX Oacute Aacute -20 -KPX Oacute Abreve -20 -KPX Oacute Acircumflex -20 -KPX Oacute Adieresis -20 -KPX Oacute Agrave -20 -KPX Oacute Amacron -20 -KPX Oacute Aogonek -20 -KPX Oacute Aring -20 -KPX Oacute Atilde -20 -KPX Oacute T -40 -KPX Oacute Tcaron -40 -KPX Oacute Tcommaaccent -40 -KPX Oacute V -50 -KPX Oacute W -30 -KPX Oacute X -60 -KPX Oacute Y -70 -KPX Oacute Yacute -70 -KPX Oacute Ydieresis -70 -KPX Oacute comma -40 -KPX Oacute period -40 -KPX Ocircumflex A -20 -KPX Ocircumflex Aacute -20 -KPX Ocircumflex Abreve -20 -KPX Ocircumflex Acircumflex -20 -KPX Ocircumflex Adieresis -20 -KPX Ocircumflex Agrave -20 -KPX Ocircumflex Amacron -20 -KPX Ocircumflex Aogonek -20 -KPX Ocircumflex Aring -20 -KPX Ocircumflex Atilde -20 -KPX Ocircumflex T -40 -KPX Ocircumflex Tcaron -40 -KPX Ocircumflex Tcommaaccent -40 -KPX Ocircumflex V -50 -KPX Ocircumflex W -30 -KPX Ocircumflex X -60 -KPX Ocircumflex Y -70 -KPX Ocircumflex Yacute -70 -KPX Ocircumflex Ydieresis -70 -KPX Ocircumflex comma -40 -KPX Ocircumflex period -40 -KPX Odieresis A -20 -KPX Odieresis Aacute -20 -KPX Odieresis Abreve -20 -KPX Odieresis Acircumflex -20 -KPX Odieresis Adieresis -20 -KPX Odieresis Agrave -20 -KPX Odieresis Amacron -20 -KPX Odieresis Aogonek -20 -KPX Odieresis Aring -20 -KPX Odieresis Atilde -20 -KPX Odieresis T -40 -KPX Odieresis Tcaron -40 -KPX Odieresis Tcommaaccent -40 -KPX Odieresis V -50 -KPX Odieresis W -30 -KPX Odieresis X -60 -KPX Odieresis Y -70 -KPX Odieresis Yacute -70 -KPX Odieresis Ydieresis -70 -KPX Odieresis comma -40 -KPX Odieresis period -40 -KPX Ograve A -20 -KPX Ograve Aacute -20 -KPX Ograve Abreve -20 -KPX Ograve Acircumflex -20 -KPX Ograve Adieresis -20 -KPX Ograve Agrave -20 -KPX Ograve Amacron -20 -KPX Ograve Aogonek -20 -KPX Ograve Aring -20 -KPX Ograve Atilde -20 -KPX Ograve T -40 -KPX Ograve Tcaron -40 -KPX Ograve Tcommaaccent -40 -KPX Ograve V -50 -KPX Ograve W -30 -KPX Ograve X -60 -KPX Ograve Y -70 -KPX Ograve Yacute -70 -KPX Ograve Ydieresis -70 -KPX Ograve comma -40 -KPX Ograve period -40 -KPX Ohungarumlaut A -20 -KPX Ohungarumlaut Aacute -20 -KPX Ohungarumlaut Abreve -20 -KPX Ohungarumlaut Acircumflex -20 -KPX Ohungarumlaut Adieresis -20 -KPX Ohungarumlaut Agrave -20 -KPX Ohungarumlaut Amacron -20 -KPX Ohungarumlaut Aogonek -20 -KPX Ohungarumlaut Aring -20 -KPX Ohungarumlaut Atilde -20 -KPX Ohungarumlaut T -40 -KPX Ohungarumlaut Tcaron -40 -KPX Ohungarumlaut Tcommaaccent -40 -KPX Ohungarumlaut V -50 -KPX Ohungarumlaut W -30 -KPX Ohungarumlaut X -60 -KPX Ohungarumlaut Y -70 -KPX Ohungarumlaut Yacute -70 -KPX Ohungarumlaut Ydieresis -70 -KPX Ohungarumlaut comma -40 -KPX Ohungarumlaut period -40 -KPX Omacron A -20 -KPX Omacron Aacute -20 -KPX Omacron Abreve -20 -KPX Omacron Acircumflex -20 -KPX Omacron Adieresis -20 -KPX Omacron Agrave -20 -KPX Omacron Amacron -20 -KPX Omacron Aogonek -20 -KPX Omacron Aring -20 -KPX Omacron Atilde -20 -KPX Omacron T -40 -KPX Omacron Tcaron -40 -KPX Omacron Tcommaaccent -40 -KPX Omacron V -50 -KPX Omacron W -30 -KPX Omacron X -60 -KPX Omacron Y -70 -KPX Omacron Yacute -70 -KPX Omacron Ydieresis -70 -KPX Omacron comma -40 -KPX Omacron period -40 -KPX Oslash A -20 -KPX Oslash Aacute -20 -KPX Oslash Abreve -20 -KPX Oslash Acircumflex -20 -KPX Oslash Adieresis -20 -KPX Oslash Agrave -20 -KPX Oslash Amacron -20 -KPX Oslash Aogonek -20 -KPX Oslash Aring -20 -KPX Oslash Atilde -20 -KPX Oslash T -40 -KPX Oslash Tcaron -40 -KPX Oslash Tcommaaccent -40 -KPX Oslash V -50 -KPX Oslash W -30 -KPX Oslash X -60 -KPX Oslash Y -70 -KPX Oslash Yacute -70 -KPX Oslash Ydieresis -70 -KPX Oslash comma -40 -KPX Oslash period -40 -KPX Otilde A -20 -KPX Otilde Aacute -20 -KPX Otilde Abreve -20 -KPX Otilde Acircumflex -20 -KPX Otilde Adieresis -20 -KPX Otilde Agrave -20 -KPX Otilde Amacron -20 -KPX Otilde Aogonek -20 -KPX Otilde Aring -20 -KPX Otilde Atilde -20 -KPX Otilde T -40 -KPX Otilde Tcaron -40 -KPX Otilde Tcommaaccent -40 -KPX Otilde V -50 -KPX Otilde W -30 -KPX Otilde X -60 -KPX Otilde Y -70 -KPX Otilde Yacute -70 -KPX Otilde Ydieresis -70 -KPX Otilde comma -40 -KPX Otilde period -40 -KPX P A -120 -KPX P Aacute -120 -KPX P Abreve -120 -KPX P Acircumflex -120 -KPX P Adieresis -120 -KPX P Agrave -120 -KPX P Amacron -120 -KPX P Aogonek -120 -KPX P Aring -120 -KPX P Atilde -120 -KPX P a -40 -KPX P aacute -40 -KPX P abreve -40 -KPX P acircumflex -40 -KPX P adieresis -40 -KPX P agrave -40 -KPX P amacron -40 -KPX P aogonek -40 -KPX P aring -40 -KPX P atilde -40 -KPX P comma -180 -KPX P e -50 -KPX P eacute -50 -KPX P ecaron -50 -KPX P ecircumflex -50 -KPX P edieresis -50 -KPX P edotaccent -50 -KPX P egrave -50 -KPX P emacron -50 -KPX P eogonek -50 -KPX P o -50 -KPX P oacute -50 -KPX P ocircumflex -50 -KPX P odieresis -50 -KPX P ograve -50 -KPX P ohungarumlaut -50 -KPX P omacron -50 -KPX P oslash -50 -KPX P otilde -50 -KPX P period -180 -KPX Q U -10 -KPX Q Uacute -10 -KPX Q Ucircumflex -10 -KPX Q Udieresis -10 -KPX Q Ugrave -10 -KPX Q Uhungarumlaut -10 -KPX Q Umacron -10 -KPX Q Uogonek -10 -KPX Q Uring -10 -KPX R O -20 -KPX R Oacute -20 -KPX R Ocircumflex -20 -KPX R Odieresis -20 -KPX R Ograve -20 -KPX R Ohungarumlaut -20 -KPX R Omacron -20 -KPX R Oslash -20 -KPX R Otilde -20 -KPX R T -30 -KPX R Tcaron -30 -KPX R Tcommaaccent -30 -KPX R U -40 -KPX R Uacute -40 -KPX R Ucircumflex -40 -KPX R Udieresis -40 -KPX R Ugrave -40 -KPX R Uhungarumlaut -40 -KPX R Umacron -40 -KPX R Uogonek -40 -KPX R Uring -40 -KPX R V -50 -KPX R W -30 -KPX R Y -50 -KPX R Yacute -50 -KPX R Ydieresis -50 -KPX Racute O -20 -KPX Racute Oacute -20 -KPX Racute Ocircumflex -20 -KPX Racute Odieresis -20 -KPX Racute Ograve -20 -KPX Racute Ohungarumlaut -20 -KPX Racute Omacron -20 -KPX Racute Oslash -20 -KPX Racute Otilde -20 -KPX Racute T -30 -KPX Racute Tcaron -30 -KPX Racute Tcommaaccent -30 -KPX Racute U -40 -KPX Racute Uacute -40 -KPX Racute Ucircumflex -40 -KPX Racute Udieresis -40 -KPX Racute Ugrave -40 -KPX Racute Uhungarumlaut -40 -KPX Racute Umacron -40 -KPX Racute Uogonek -40 -KPX Racute Uring -40 -KPX Racute V -50 -KPX Racute W -30 -KPX Racute Y -50 -KPX Racute Yacute -50 -KPX Racute Ydieresis -50 -KPX Rcaron O -20 -KPX Rcaron Oacute -20 -KPX Rcaron Ocircumflex -20 -KPX Rcaron Odieresis -20 -KPX Rcaron Ograve -20 -KPX Rcaron Ohungarumlaut -20 -KPX Rcaron Omacron -20 -KPX Rcaron Oslash -20 -KPX Rcaron Otilde -20 -KPX Rcaron T -30 -KPX Rcaron Tcaron -30 -KPX Rcaron Tcommaaccent -30 -KPX Rcaron U -40 -KPX Rcaron Uacute -40 -KPX Rcaron Ucircumflex -40 -KPX Rcaron Udieresis -40 -KPX Rcaron Ugrave -40 -KPX Rcaron Uhungarumlaut -40 -KPX Rcaron Umacron -40 -KPX Rcaron Uogonek -40 -KPX Rcaron Uring -40 -KPX Rcaron V -50 -KPX Rcaron W -30 -KPX Rcaron Y -50 -KPX Rcaron Yacute -50 -KPX Rcaron Ydieresis -50 -KPX Rcommaaccent O -20 -KPX Rcommaaccent Oacute -20 -KPX Rcommaaccent Ocircumflex -20 -KPX Rcommaaccent Odieresis -20 -KPX Rcommaaccent Ograve -20 -KPX Rcommaaccent Ohungarumlaut -20 -KPX Rcommaaccent Omacron -20 -KPX Rcommaaccent Oslash -20 -KPX Rcommaaccent Otilde -20 -KPX Rcommaaccent T -30 -KPX Rcommaaccent Tcaron -30 -KPX Rcommaaccent Tcommaaccent -30 -KPX Rcommaaccent U -40 -KPX Rcommaaccent Uacute -40 -KPX Rcommaaccent Ucircumflex -40 -KPX Rcommaaccent Udieresis -40 -KPX Rcommaaccent Ugrave -40 -KPX Rcommaaccent Uhungarumlaut -40 -KPX Rcommaaccent Umacron -40 -KPX Rcommaaccent Uogonek -40 -KPX Rcommaaccent Uring -40 -KPX Rcommaaccent V -50 -KPX Rcommaaccent W -30 -KPX Rcommaaccent Y -50 -KPX Rcommaaccent Yacute -50 -KPX Rcommaaccent Ydieresis -50 -KPX S comma -20 -KPX S period -20 -KPX Sacute comma -20 -KPX Sacute period -20 -KPX Scaron comma -20 -KPX Scaron period -20 -KPX Scedilla comma -20 -KPX Scedilla period -20 -KPX Scommaaccent comma -20 -KPX Scommaaccent period -20 -KPX T A -120 -KPX T Aacute -120 -KPX T Abreve -120 -KPX T Acircumflex -120 -KPX T Adieresis -120 -KPX T Agrave -120 -KPX T Amacron -120 -KPX T Aogonek -120 -KPX T Aring -120 -KPX T Atilde -120 -KPX T O -40 -KPX T Oacute -40 -KPX T Ocircumflex -40 -KPX T Odieresis -40 -KPX T Ograve -40 -KPX T Ohungarumlaut -40 -KPX T Omacron -40 -KPX T Oslash -40 -KPX T Otilde -40 -KPX T a -120 -KPX T aacute -120 -KPX T abreve -60 -KPX T acircumflex -120 -KPX T adieresis -120 -KPX T agrave -120 -KPX T amacron -60 -KPX T aogonek -120 -KPX T aring -120 -KPX T atilde -60 -KPX T colon -20 -KPX T comma -120 -KPX T e -120 -KPX T eacute -120 -KPX T ecaron -120 -KPX T ecircumflex -120 -KPX T edieresis -120 -KPX T edotaccent -120 -KPX T egrave -60 -KPX T emacron -60 -KPX T eogonek -120 -KPX T hyphen -140 -KPX T o -120 -KPX T oacute -120 -KPX T ocircumflex -120 -KPX T odieresis -120 -KPX T ograve -120 -KPX T ohungarumlaut -120 -KPX T omacron -60 -KPX T oslash -120 -KPX T otilde -60 -KPX T period -120 -KPX T r -120 -KPX T racute -120 -KPX T rcaron -120 -KPX T rcommaaccent -120 -KPX T semicolon -20 -KPX T u -120 -KPX T uacute -120 -KPX T ucircumflex -120 -KPX T udieresis -120 -KPX T ugrave -120 -KPX T uhungarumlaut -120 -KPX T umacron -60 -KPX T uogonek -120 -KPX T uring -120 -KPX T w -120 -KPX T y -120 -KPX T yacute -120 -KPX T ydieresis -60 -KPX Tcaron A -120 -KPX Tcaron Aacute -120 -KPX Tcaron Abreve -120 -KPX Tcaron Acircumflex -120 -KPX Tcaron Adieresis -120 -KPX Tcaron Agrave -120 -KPX Tcaron Amacron -120 -KPX Tcaron Aogonek -120 -KPX Tcaron Aring -120 -KPX Tcaron Atilde -120 -KPX Tcaron O -40 -KPX Tcaron Oacute -40 -KPX Tcaron Ocircumflex -40 -KPX Tcaron Odieresis -40 -KPX Tcaron Ograve -40 -KPX Tcaron Ohungarumlaut -40 -KPX Tcaron Omacron -40 -KPX Tcaron Oslash -40 -KPX Tcaron Otilde -40 -KPX Tcaron a -120 -KPX Tcaron aacute -120 -KPX Tcaron abreve -60 -KPX Tcaron acircumflex -120 -KPX Tcaron adieresis -120 -KPX Tcaron agrave -120 -KPX Tcaron amacron -60 -KPX Tcaron aogonek -120 -KPX Tcaron aring -120 -KPX Tcaron atilde -60 -KPX Tcaron colon -20 -KPX Tcaron comma -120 -KPX Tcaron e -120 -KPX Tcaron eacute -120 -KPX Tcaron ecaron -120 -KPX Tcaron ecircumflex -120 -KPX Tcaron edieresis -120 -KPX Tcaron edotaccent -120 -KPX Tcaron egrave -60 -KPX Tcaron emacron -60 -KPX Tcaron eogonek -120 -KPX Tcaron hyphen -140 -KPX Tcaron o -120 -KPX Tcaron oacute -120 -KPX Tcaron ocircumflex -120 -KPX Tcaron odieresis -120 -KPX Tcaron ograve -120 -KPX Tcaron ohungarumlaut -120 -KPX Tcaron omacron -60 -KPX Tcaron oslash -120 -KPX Tcaron otilde -60 -KPX Tcaron period -120 -KPX Tcaron r -120 -KPX Tcaron racute -120 -KPX Tcaron rcaron -120 -KPX Tcaron rcommaaccent -120 -KPX Tcaron semicolon -20 -KPX Tcaron u -120 -KPX Tcaron uacute -120 -KPX Tcaron ucircumflex -120 -KPX Tcaron udieresis -120 -KPX Tcaron ugrave -120 -KPX Tcaron uhungarumlaut -120 -KPX Tcaron umacron -60 -KPX Tcaron uogonek -120 -KPX Tcaron uring -120 -KPX Tcaron w -120 -KPX Tcaron y -120 -KPX Tcaron yacute -120 -KPX Tcaron ydieresis -60 -KPX Tcommaaccent A -120 -KPX Tcommaaccent Aacute -120 -KPX Tcommaaccent Abreve -120 -KPX Tcommaaccent Acircumflex -120 -KPX Tcommaaccent Adieresis -120 -KPX Tcommaaccent Agrave -120 -KPX Tcommaaccent Amacron -120 -KPX Tcommaaccent Aogonek -120 -KPX Tcommaaccent Aring -120 -KPX Tcommaaccent Atilde -120 -KPX Tcommaaccent O -40 -KPX Tcommaaccent Oacute -40 -KPX Tcommaaccent Ocircumflex -40 -KPX Tcommaaccent Odieresis -40 -KPX Tcommaaccent Ograve -40 -KPX Tcommaaccent Ohungarumlaut -40 -KPX Tcommaaccent Omacron -40 -KPX Tcommaaccent Oslash -40 -KPX Tcommaaccent Otilde -40 -KPX Tcommaaccent a -120 -KPX Tcommaaccent aacute -120 -KPX Tcommaaccent abreve -60 -KPX Tcommaaccent acircumflex -120 -KPX Tcommaaccent adieresis -120 -KPX Tcommaaccent agrave -120 -KPX Tcommaaccent amacron -60 -KPX Tcommaaccent aogonek -120 -KPX Tcommaaccent aring -120 -KPX Tcommaaccent atilde -60 -KPX Tcommaaccent colon -20 -KPX Tcommaaccent comma -120 -KPX Tcommaaccent e -120 -KPX Tcommaaccent eacute -120 -KPX Tcommaaccent ecaron -120 -KPX Tcommaaccent ecircumflex -120 -KPX Tcommaaccent edieresis -120 -KPX Tcommaaccent edotaccent -120 -KPX Tcommaaccent egrave -60 -KPX Tcommaaccent emacron -60 -KPX Tcommaaccent eogonek -120 -KPX Tcommaaccent hyphen -140 -KPX Tcommaaccent o -120 -KPX Tcommaaccent oacute -120 -KPX Tcommaaccent ocircumflex -120 -KPX Tcommaaccent odieresis -120 -KPX Tcommaaccent ograve -120 -KPX Tcommaaccent ohungarumlaut -120 -KPX Tcommaaccent omacron -60 -KPX Tcommaaccent oslash -120 -KPX Tcommaaccent otilde -60 -KPX Tcommaaccent period -120 -KPX Tcommaaccent r -120 -KPX Tcommaaccent racute -120 -KPX Tcommaaccent rcaron -120 -KPX Tcommaaccent rcommaaccent -120 -KPX Tcommaaccent semicolon -20 -KPX Tcommaaccent u -120 -KPX Tcommaaccent uacute -120 -KPX Tcommaaccent ucircumflex -120 -KPX Tcommaaccent udieresis -120 -KPX Tcommaaccent ugrave -120 -KPX Tcommaaccent uhungarumlaut -120 -KPX Tcommaaccent umacron -60 -KPX Tcommaaccent uogonek -120 -KPX Tcommaaccent uring -120 -KPX Tcommaaccent w -120 -KPX Tcommaaccent y -120 -KPX Tcommaaccent yacute -120 -KPX Tcommaaccent ydieresis -60 -KPX U A -40 -KPX U Aacute -40 -KPX U Abreve -40 -KPX U Acircumflex -40 -KPX U Adieresis -40 -KPX U Agrave -40 -KPX U Amacron -40 -KPX U Aogonek -40 -KPX U Aring -40 -KPX U Atilde -40 -KPX U comma -40 -KPX U period -40 -KPX Uacute A -40 -KPX Uacute Aacute -40 -KPX Uacute Abreve -40 -KPX Uacute Acircumflex -40 -KPX Uacute Adieresis -40 -KPX Uacute Agrave -40 -KPX Uacute Amacron -40 -KPX Uacute Aogonek -40 -KPX Uacute Aring -40 -KPX Uacute Atilde -40 -KPX Uacute comma -40 -KPX Uacute period -40 -KPX Ucircumflex A -40 -KPX Ucircumflex Aacute -40 -KPX Ucircumflex Abreve -40 -KPX Ucircumflex Acircumflex -40 -KPX Ucircumflex Adieresis -40 -KPX Ucircumflex Agrave -40 -KPX Ucircumflex Amacron -40 -KPX Ucircumflex Aogonek -40 -KPX Ucircumflex Aring -40 -KPX Ucircumflex Atilde -40 -KPX Ucircumflex comma -40 -KPX Ucircumflex period -40 -KPX Udieresis A -40 -KPX Udieresis Aacute -40 -KPX Udieresis Abreve -40 -KPX Udieresis Acircumflex -40 -KPX Udieresis Adieresis -40 -KPX Udieresis Agrave -40 -KPX Udieresis Amacron -40 -KPX Udieresis Aogonek -40 -KPX Udieresis Aring -40 -KPX Udieresis Atilde -40 -KPX Udieresis comma -40 -KPX Udieresis period -40 -KPX Ugrave A -40 -KPX Ugrave Aacute -40 -KPX Ugrave Abreve -40 -KPX Ugrave Acircumflex -40 -KPX Ugrave Adieresis -40 -KPX Ugrave Agrave -40 -KPX Ugrave Amacron -40 -KPX Ugrave Aogonek -40 -KPX Ugrave Aring -40 -KPX Ugrave Atilde -40 -KPX Ugrave comma -40 -KPX Ugrave period -40 -KPX Uhungarumlaut A -40 -KPX Uhungarumlaut Aacute -40 -KPX Uhungarumlaut Abreve -40 -KPX Uhungarumlaut Acircumflex -40 -KPX Uhungarumlaut Adieresis -40 -KPX Uhungarumlaut Agrave -40 -KPX Uhungarumlaut Amacron -40 -KPX Uhungarumlaut Aogonek -40 -KPX Uhungarumlaut Aring -40 -KPX Uhungarumlaut Atilde -40 -KPX Uhungarumlaut comma -40 -KPX Uhungarumlaut period -40 -KPX Umacron A -40 -KPX Umacron Aacute -40 -KPX Umacron Abreve -40 -KPX Umacron Acircumflex -40 -KPX Umacron Adieresis -40 -KPX Umacron Agrave -40 -KPX Umacron Amacron -40 -KPX Umacron Aogonek -40 -KPX Umacron Aring -40 -KPX Umacron Atilde -40 -KPX Umacron comma -40 -KPX Umacron period -40 -KPX Uogonek A -40 -KPX Uogonek Aacute -40 -KPX Uogonek Abreve -40 -KPX Uogonek Acircumflex -40 -KPX Uogonek Adieresis -40 -KPX Uogonek Agrave -40 -KPX Uogonek Amacron -40 -KPX Uogonek Aogonek -40 -KPX Uogonek Aring -40 -KPX Uogonek Atilde -40 -KPX Uogonek comma -40 -KPX Uogonek period -40 -KPX Uring A -40 -KPX Uring Aacute -40 -KPX Uring Abreve -40 -KPX Uring Acircumflex -40 -KPX Uring Adieresis -40 -KPX Uring Agrave -40 -KPX Uring Amacron -40 -KPX Uring Aogonek -40 -KPX Uring Aring -40 -KPX Uring Atilde -40 -KPX Uring comma -40 -KPX Uring period -40 -KPX V A -80 -KPX V Aacute -80 -KPX V Abreve -80 -KPX V Acircumflex -80 -KPX V Adieresis -80 -KPX V Agrave -80 -KPX V Amacron -80 -KPX V Aogonek -80 -KPX V Aring -80 -KPX V Atilde -80 -KPX V G -40 -KPX V Gbreve -40 -KPX V Gcommaaccent -40 -KPX V O -40 -KPX V Oacute -40 -KPX V Ocircumflex -40 -KPX V Odieresis -40 -KPX V Ograve -40 -KPX V Ohungarumlaut -40 -KPX V Omacron -40 -KPX V Oslash -40 -KPX V Otilde -40 -KPX V a -70 -KPX V aacute -70 -KPX V abreve -70 -KPX V acircumflex -70 -KPX V adieresis -70 -KPX V agrave -70 -KPX V amacron -70 -KPX V aogonek -70 -KPX V aring -70 -KPX V atilde -70 -KPX V colon -40 -KPX V comma -125 -KPX V e -80 -KPX V eacute -80 -KPX V ecaron -80 -KPX V ecircumflex -80 -KPX V edieresis -80 -KPX V edotaccent -80 -KPX V egrave -80 -KPX V emacron -80 -KPX V eogonek -80 -KPX V hyphen -80 -KPX V o -80 -KPX V oacute -80 -KPX V ocircumflex -80 -KPX V odieresis -80 -KPX V ograve -80 -KPX V ohungarumlaut -80 -KPX V omacron -80 -KPX V oslash -80 -KPX V otilde -80 -KPX V period -125 -KPX V semicolon -40 -KPX V u -70 -KPX V uacute -70 -KPX V ucircumflex -70 -KPX V udieresis -70 -KPX V ugrave -70 -KPX V uhungarumlaut -70 -KPX V umacron -70 -KPX V uogonek -70 -KPX V uring -70 -KPX W A -50 -KPX W Aacute -50 -KPX W Abreve -50 -KPX W Acircumflex -50 -KPX W Adieresis -50 -KPX W Agrave -50 -KPX W Amacron -50 -KPX W Aogonek -50 -KPX W Aring -50 -KPX W Atilde -50 -KPX W O -20 -KPX W Oacute -20 -KPX W Ocircumflex -20 -KPX W Odieresis -20 -KPX W Ograve -20 -KPX W Ohungarumlaut -20 -KPX W Omacron -20 -KPX W Oslash -20 -KPX W Otilde -20 -KPX W a -40 -KPX W aacute -40 -KPX W abreve -40 -KPX W acircumflex -40 -KPX W adieresis -40 -KPX W agrave -40 -KPX W amacron -40 -KPX W aogonek -40 -KPX W aring -40 -KPX W atilde -40 -KPX W comma -80 -KPX W e -30 -KPX W eacute -30 -KPX W ecaron -30 -KPX W ecircumflex -30 -KPX W edieresis -30 -KPX W edotaccent -30 -KPX W egrave -30 -KPX W emacron -30 -KPX W eogonek -30 -KPX W hyphen -40 -KPX W o -30 -KPX W oacute -30 -KPX W ocircumflex -30 -KPX W odieresis -30 -KPX W ograve -30 -KPX W ohungarumlaut -30 -KPX W omacron -30 -KPX W oslash -30 -KPX W otilde -30 -KPX W period -80 -KPX W u -30 -KPX W uacute -30 -KPX W ucircumflex -30 -KPX W udieresis -30 -KPX W ugrave -30 -KPX W uhungarumlaut -30 -KPX W umacron -30 -KPX W uogonek -30 -KPX W uring -30 -KPX W y -20 -KPX W yacute -20 -KPX W ydieresis -20 -KPX Y A -110 -KPX Y Aacute -110 -KPX Y Abreve -110 -KPX Y Acircumflex -110 -KPX Y Adieresis -110 -KPX Y Agrave -110 -KPX Y Amacron -110 -KPX Y Aogonek -110 -KPX Y Aring -110 -KPX Y Atilde -110 -KPX Y O -85 -KPX Y Oacute -85 -KPX Y Ocircumflex -85 -KPX Y Odieresis -85 -KPX Y Ograve -85 -KPX Y Ohungarumlaut -85 -KPX Y Omacron -85 -KPX Y Oslash -85 -KPX Y Otilde -85 -KPX Y a -140 -KPX Y aacute -140 -KPX Y abreve -70 -KPX Y acircumflex -140 -KPX Y adieresis -140 -KPX Y agrave -140 -KPX Y amacron -70 -KPX Y aogonek -140 -KPX Y aring -140 -KPX Y atilde -140 -KPX Y colon -60 -KPX Y comma -140 -KPX Y e -140 -KPX Y eacute -140 -KPX Y ecaron -140 -KPX Y ecircumflex -140 -KPX Y edieresis -140 -KPX Y edotaccent -140 -KPX Y egrave -140 -KPX Y emacron -70 -KPX Y eogonek -140 -KPX Y hyphen -140 -KPX Y i -20 -KPX Y iacute -20 -KPX Y iogonek -20 -KPX Y o -140 -KPX Y oacute -140 -KPX Y ocircumflex -140 -KPX Y odieresis -140 -KPX Y ograve -140 -KPX Y ohungarumlaut -140 -KPX Y omacron -140 -KPX Y oslash -140 -KPX Y otilde -140 -KPX Y period -140 -KPX Y semicolon -60 -KPX Y u -110 -KPX Y uacute -110 -KPX Y ucircumflex -110 -KPX Y udieresis -110 -KPX Y ugrave -110 -KPX Y uhungarumlaut -110 -KPX Y umacron -110 -KPX Y uogonek -110 -KPX Y uring -110 -KPX Yacute A -110 -KPX Yacute Aacute -110 -KPX Yacute Abreve -110 -KPX Yacute Acircumflex -110 -KPX Yacute Adieresis -110 -KPX Yacute Agrave -110 -KPX Yacute Amacron -110 -KPX Yacute Aogonek -110 -KPX Yacute Aring -110 -KPX Yacute Atilde -110 -KPX Yacute O -85 -KPX Yacute Oacute -85 -KPX Yacute Ocircumflex -85 -KPX Yacute Odieresis -85 -KPX Yacute Ograve -85 -KPX Yacute Ohungarumlaut -85 -KPX Yacute Omacron -85 -KPX Yacute Oslash -85 -KPX Yacute Otilde -85 -KPX Yacute a -140 -KPX Yacute aacute -140 -KPX Yacute abreve -70 -KPX Yacute acircumflex -140 -KPX Yacute adieresis -140 -KPX Yacute agrave -140 -KPX Yacute amacron -70 -KPX Yacute aogonek -140 -KPX Yacute aring -140 -KPX Yacute atilde -70 -KPX Yacute colon -60 -KPX Yacute comma -140 -KPX Yacute e -140 -KPX Yacute eacute -140 -KPX Yacute ecaron -140 -KPX Yacute ecircumflex -140 -KPX Yacute edieresis -140 -KPX Yacute edotaccent -140 -KPX Yacute egrave -140 -KPX Yacute emacron -70 -KPX Yacute eogonek -140 -KPX Yacute hyphen -140 -KPX Yacute i -20 -KPX Yacute iacute -20 -KPX Yacute iogonek -20 -KPX Yacute o -140 -KPX Yacute oacute -140 -KPX Yacute ocircumflex -140 -KPX Yacute odieresis -140 -KPX Yacute ograve -140 -KPX Yacute ohungarumlaut -140 -KPX Yacute omacron -70 -KPX Yacute oslash -140 -KPX Yacute otilde -140 -KPX Yacute period -140 -KPX Yacute semicolon -60 -KPX Yacute u -110 -KPX Yacute uacute -110 -KPX Yacute ucircumflex -110 -KPX Yacute udieresis -110 -KPX Yacute ugrave -110 -KPX Yacute uhungarumlaut -110 -KPX Yacute umacron -110 -KPX Yacute uogonek -110 -KPX Yacute uring -110 -KPX Ydieresis A -110 -KPX Ydieresis Aacute -110 -KPX Ydieresis Abreve -110 -KPX Ydieresis Acircumflex -110 -KPX Ydieresis Adieresis -110 -KPX Ydieresis Agrave -110 -KPX Ydieresis Amacron -110 -KPX Ydieresis Aogonek -110 -KPX Ydieresis Aring -110 -KPX Ydieresis Atilde -110 -KPX Ydieresis O -85 -KPX Ydieresis Oacute -85 -KPX Ydieresis Ocircumflex -85 -KPX Ydieresis Odieresis -85 -KPX Ydieresis Ograve -85 -KPX Ydieresis Ohungarumlaut -85 -KPX Ydieresis Omacron -85 -KPX Ydieresis Oslash -85 -KPX Ydieresis Otilde -85 -KPX Ydieresis a -140 -KPX Ydieresis aacute -140 -KPX Ydieresis abreve -70 -KPX Ydieresis acircumflex -140 -KPX Ydieresis adieresis -140 -KPX Ydieresis agrave -140 -KPX Ydieresis amacron -70 -KPX Ydieresis aogonek -140 -KPX Ydieresis aring -140 -KPX Ydieresis atilde -70 -KPX Ydieresis colon -60 -KPX Ydieresis comma -140 -KPX Ydieresis e -140 -KPX Ydieresis eacute -140 -KPX Ydieresis ecaron -140 -KPX Ydieresis ecircumflex -140 -KPX Ydieresis edieresis -140 -KPX Ydieresis edotaccent -140 -KPX Ydieresis egrave -140 -KPX Ydieresis emacron -70 -KPX Ydieresis eogonek -140 -KPX Ydieresis hyphen -140 -KPX Ydieresis i -20 -KPX Ydieresis iacute -20 -KPX Ydieresis iogonek -20 -KPX Ydieresis o -140 -KPX Ydieresis oacute -140 -KPX Ydieresis ocircumflex -140 -KPX Ydieresis odieresis -140 -KPX Ydieresis ograve -140 -KPX Ydieresis ohungarumlaut -140 -KPX Ydieresis omacron -140 -KPX Ydieresis oslash -140 -KPX Ydieresis otilde -140 -KPX Ydieresis period -140 -KPX Ydieresis semicolon -60 -KPX Ydieresis u -110 -KPX Ydieresis uacute -110 -KPX Ydieresis ucircumflex -110 -KPX Ydieresis udieresis -110 -KPX Ydieresis ugrave -110 -KPX Ydieresis uhungarumlaut -110 -KPX Ydieresis umacron -110 -KPX Ydieresis uogonek -110 -KPX Ydieresis uring -110 -KPX a v -20 -KPX a w -20 -KPX a y -30 -KPX a yacute -30 -KPX a ydieresis -30 -KPX aacute v -20 -KPX aacute w -20 -KPX aacute y -30 -KPX aacute yacute -30 -KPX aacute ydieresis -30 -KPX abreve v -20 -KPX abreve w -20 -KPX abreve y -30 -KPX abreve yacute -30 -KPX abreve ydieresis -30 -KPX acircumflex v -20 -KPX acircumflex w -20 -KPX acircumflex y -30 -KPX acircumflex yacute -30 -KPX acircumflex ydieresis -30 -KPX adieresis v -20 -KPX adieresis w -20 -KPX adieresis y -30 -KPX adieresis yacute -30 -KPX adieresis ydieresis -30 -KPX agrave v -20 -KPX agrave w -20 -KPX agrave y -30 -KPX agrave yacute -30 -KPX agrave ydieresis -30 -KPX amacron v -20 -KPX amacron w -20 -KPX amacron y -30 -KPX amacron yacute -30 -KPX amacron ydieresis -30 -KPX aogonek v -20 -KPX aogonek w -20 -KPX aogonek y -30 -KPX aogonek yacute -30 -KPX aogonek ydieresis -30 -KPX aring v -20 -KPX aring w -20 -KPX aring y -30 -KPX aring yacute -30 -KPX aring ydieresis -30 -KPX atilde v -20 -KPX atilde w -20 -KPX atilde y -30 -KPX atilde yacute -30 -KPX atilde ydieresis -30 -KPX b b -10 -KPX b comma -40 -KPX b l -20 -KPX b lacute -20 -KPX b lcommaaccent -20 -KPX b lslash -20 -KPX b period -40 -KPX b u -20 -KPX b uacute -20 -KPX b ucircumflex -20 -KPX b udieresis -20 -KPX b ugrave -20 -KPX b uhungarumlaut -20 -KPX b umacron -20 -KPX b uogonek -20 -KPX b uring -20 -KPX b v -20 -KPX b y -20 -KPX b yacute -20 -KPX b ydieresis -20 -KPX c comma -15 -KPX c k -20 -KPX c kcommaaccent -20 -KPX cacute comma -15 -KPX cacute k -20 -KPX cacute kcommaaccent -20 -KPX ccaron comma -15 -KPX ccaron k -20 -KPX ccaron kcommaaccent -20 -KPX ccedilla comma -15 -KPX ccedilla k -20 -KPX ccedilla kcommaaccent -20 -KPX colon space -50 -KPX comma quotedblright -100 -KPX comma quoteright -100 -KPX e comma -15 -KPX e period -15 -KPX e v -30 -KPX e w -20 -KPX e x -30 -KPX e y -20 -KPX e yacute -20 -KPX e ydieresis -20 -KPX eacute comma -15 -KPX eacute period -15 -KPX eacute v -30 -KPX eacute w -20 -KPX eacute x -30 -KPX eacute y -20 -KPX eacute yacute -20 -KPX eacute ydieresis -20 -KPX ecaron comma -15 -KPX ecaron period -15 -KPX ecaron v -30 -KPX ecaron w -20 -KPX ecaron x -30 -KPX ecaron y -20 -KPX ecaron yacute -20 -KPX ecaron ydieresis -20 -KPX ecircumflex comma -15 -KPX ecircumflex period -15 -KPX ecircumflex v -30 -KPX ecircumflex w -20 -KPX ecircumflex x -30 -KPX ecircumflex y -20 -KPX ecircumflex yacute -20 -KPX ecircumflex ydieresis -20 -KPX edieresis comma -15 -KPX edieresis period -15 -KPX edieresis v -30 -KPX edieresis w -20 -KPX edieresis x -30 -KPX edieresis y -20 -KPX edieresis yacute -20 -KPX edieresis ydieresis -20 -KPX edotaccent comma -15 -KPX edotaccent period -15 -KPX edotaccent v -30 -KPX edotaccent w -20 -KPX edotaccent x -30 -KPX edotaccent y -20 -KPX edotaccent yacute -20 -KPX edotaccent ydieresis -20 -KPX egrave comma -15 -KPX egrave period -15 -KPX egrave v -30 -KPX egrave w -20 -KPX egrave x -30 -KPX egrave y -20 -KPX egrave yacute -20 -KPX egrave ydieresis -20 -KPX emacron comma -15 -KPX emacron period -15 -KPX emacron v -30 -KPX emacron w -20 -KPX emacron x -30 -KPX emacron y -20 -KPX emacron yacute -20 -KPX emacron ydieresis -20 -KPX eogonek comma -15 -KPX eogonek period -15 -KPX eogonek v -30 -KPX eogonek w -20 -KPX eogonek x -30 -KPX eogonek y -20 -KPX eogonek yacute -20 -KPX eogonek ydieresis -20 -KPX f a -30 -KPX f aacute -30 -KPX f abreve -30 -KPX f acircumflex -30 -KPX f adieresis -30 -KPX f agrave -30 -KPX f amacron -30 -KPX f aogonek -30 -KPX f aring -30 -KPX f atilde -30 -KPX f comma -30 -KPX f dotlessi -28 -KPX f e -30 -KPX f eacute -30 -KPX f ecaron -30 -KPX f ecircumflex -30 -KPX f edieresis -30 -KPX f edotaccent -30 -KPX f egrave -30 -KPX f emacron -30 -KPX f eogonek -30 -KPX f o -30 -KPX f oacute -30 -KPX f ocircumflex -30 -KPX f odieresis -30 -KPX f ograve -30 -KPX f ohungarumlaut -30 -KPX f omacron -30 -KPX f oslash -30 -KPX f otilde -30 -KPX f period -30 -KPX f quotedblright 60 -KPX f quoteright 50 -KPX g r -10 -KPX g racute -10 -KPX g rcaron -10 -KPX g rcommaaccent -10 -KPX gbreve r -10 -KPX gbreve racute -10 -KPX gbreve rcaron -10 -KPX gbreve rcommaaccent -10 -KPX gcommaaccent r -10 -KPX gcommaaccent racute -10 -KPX gcommaaccent rcaron -10 -KPX gcommaaccent rcommaaccent -10 -KPX h y -30 -KPX h yacute -30 -KPX h ydieresis -30 -KPX k e -20 -KPX k eacute -20 -KPX k ecaron -20 -KPX k ecircumflex -20 -KPX k edieresis -20 -KPX k edotaccent -20 -KPX k egrave -20 -KPX k emacron -20 -KPX k eogonek -20 -KPX k o -20 -KPX k oacute -20 -KPX k ocircumflex -20 -KPX k odieresis -20 -KPX k ograve -20 -KPX k ohungarumlaut -20 -KPX k omacron -20 -KPX k oslash -20 -KPX k otilde -20 -KPX kcommaaccent e -20 -KPX kcommaaccent eacute -20 -KPX kcommaaccent ecaron -20 -KPX kcommaaccent ecircumflex -20 -KPX kcommaaccent edieresis -20 -KPX kcommaaccent edotaccent -20 -KPX kcommaaccent egrave -20 -KPX kcommaaccent emacron -20 -KPX kcommaaccent eogonek -20 -KPX kcommaaccent o -20 -KPX kcommaaccent oacute -20 -KPX kcommaaccent ocircumflex -20 -KPX kcommaaccent odieresis -20 -KPX kcommaaccent ograve -20 -KPX kcommaaccent ohungarumlaut -20 -KPX kcommaaccent omacron -20 -KPX kcommaaccent oslash -20 -KPX kcommaaccent otilde -20 -KPX m u -10 -KPX m uacute -10 -KPX m ucircumflex -10 -KPX m udieresis -10 -KPX m ugrave -10 -KPX m uhungarumlaut -10 -KPX m umacron -10 -KPX m uogonek -10 -KPX m uring -10 -KPX m y -15 -KPX m yacute -15 -KPX m ydieresis -15 -KPX n u -10 -KPX n uacute -10 -KPX n ucircumflex -10 -KPX n udieresis -10 -KPX n ugrave -10 -KPX n uhungarumlaut -10 -KPX n umacron -10 -KPX n uogonek -10 -KPX n uring -10 -KPX n v -20 -KPX n y -15 -KPX n yacute -15 -KPX n ydieresis -15 -KPX nacute u -10 -KPX nacute uacute -10 -KPX nacute ucircumflex -10 -KPX nacute udieresis -10 -KPX nacute ugrave -10 -KPX nacute uhungarumlaut -10 -KPX nacute umacron -10 -KPX nacute uogonek -10 -KPX nacute uring -10 -KPX nacute v -20 -KPX nacute y -15 -KPX nacute yacute -15 -KPX nacute ydieresis -15 -KPX ncaron u -10 -KPX ncaron uacute -10 -KPX ncaron ucircumflex -10 -KPX ncaron udieresis -10 -KPX ncaron ugrave -10 -KPX ncaron uhungarumlaut -10 -KPX ncaron umacron -10 -KPX ncaron uogonek -10 -KPX ncaron uring -10 -KPX ncaron v -20 -KPX ncaron y -15 -KPX ncaron yacute -15 -KPX ncaron ydieresis -15 -KPX ncommaaccent u -10 -KPX ncommaaccent uacute -10 -KPX ncommaaccent ucircumflex -10 -KPX ncommaaccent udieresis -10 -KPX ncommaaccent ugrave -10 -KPX ncommaaccent uhungarumlaut -10 -KPX ncommaaccent umacron -10 -KPX ncommaaccent uogonek -10 -KPX ncommaaccent uring -10 -KPX ncommaaccent v -20 -KPX ncommaaccent y -15 -KPX ncommaaccent yacute -15 -KPX ncommaaccent ydieresis -15 -KPX ntilde u -10 -KPX ntilde uacute -10 -KPX ntilde ucircumflex -10 -KPX ntilde udieresis -10 -KPX ntilde ugrave -10 -KPX ntilde uhungarumlaut -10 -KPX ntilde umacron -10 -KPX ntilde uogonek -10 -KPX ntilde uring -10 -KPX ntilde v -20 -KPX ntilde y -15 -KPX ntilde yacute -15 -KPX ntilde ydieresis -15 -KPX o comma -40 -KPX o period -40 -KPX o v -15 -KPX o w -15 -KPX o x -30 -KPX o y -30 -KPX o yacute -30 -KPX o ydieresis -30 -KPX oacute comma -40 -KPX oacute period -40 -KPX oacute v -15 -KPX oacute w -15 -KPX oacute x -30 -KPX oacute y -30 -KPX oacute yacute -30 -KPX oacute ydieresis -30 -KPX ocircumflex comma -40 -KPX ocircumflex period -40 -KPX ocircumflex v -15 -KPX ocircumflex w -15 -KPX ocircumflex x -30 -KPX ocircumflex y -30 -KPX ocircumflex yacute -30 -KPX ocircumflex ydieresis -30 -KPX odieresis comma -40 -KPX odieresis period -40 -KPX odieresis v -15 -KPX odieresis w -15 -KPX odieresis x -30 -KPX odieresis y -30 -KPX odieresis yacute -30 -KPX odieresis ydieresis -30 -KPX ograve comma -40 -KPX ograve period -40 -KPX ograve v -15 -KPX ograve w -15 -KPX ograve x -30 -KPX ograve y -30 -KPX ograve yacute -30 -KPX ograve ydieresis -30 -KPX ohungarumlaut comma -40 -KPX ohungarumlaut period -40 -KPX ohungarumlaut v -15 -KPX ohungarumlaut w -15 -KPX ohungarumlaut x -30 -KPX ohungarumlaut y -30 -KPX ohungarumlaut yacute -30 -KPX ohungarumlaut ydieresis -30 -KPX omacron comma -40 -KPX omacron period -40 -KPX omacron v -15 -KPX omacron w -15 -KPX omacron x -30 -KPX omacron y -30 -KPX omacron yacute -30 -KPX omacron ydieresis -30 -KPX oslash a -55 -KPX oslash aacute -55 -KPX oslash abreve -55 -KPX oslash acircumflex -55 -KPX oslash adieresis -55 -KPX oslash agrave -55 -KPX oslash amacron -55 -KPX oslash aogonek -55 -KPX oslash aring -55 -KPX oslash atilde -55 -KPX oslash b -55 -KPX oslash c -55 -KPX oslash cacute -55 -KPX oslash ccaron -55 -KPX oslash ccedilla -55 -KPX oslash comma -95 -KPX oslash d -55 -KPX oslash dcroat -55 -KPX oslash e -55 -KPX oslash eacute -55 -KPX oslash ecaron -55 -KPX oslash ecircumflex -55 -KPX oslash edieresis -55 -KPX oslash edotaccent -55 -KPX oslash egrave -55 -KPX oslash emacron -55 -KPX oslash eogonek -55 -KPX oslash f -55 -KPX oslash g -55 -KPX oslash gbreve -55 -KPX oslash gcommaaccent -55 -KPX oslash h -55 -KPX oslash i -55 -KPX oslash iacute -55 -KPX oslash icircumflex -55 -KPX oslash idieresis -55 -KPX oslash igrave -55 -KPX oslash imacron -55 -KPX oslash iogonek -55 -KPX oslash j -55 -KPX oslash k -55 -KPX oslash kcommaaccent -55 -KPX oslash l -55 -KPX oslash lacute -55 -KPX oslash lcommaaccent -55 -KPX oslash lslash -55 -KPX oslash m -55 -KPX oslash n -55 -KPX oslash nacute -55 -KPX oslash ncaron -55 -KPX oslash ncommaaccent -55 -KPX oslash ntilde -55 -KPX oslash o -55 -KPX oslash oacute -55 -KPX oslash ocircumflex -55 -KPX oslash odieresis -55 -KPX oslash ograve -55 -KPX oslash ohungarumlaut -55 -KPX oslash omacron -55 -KPX oslash oslash -55 -KPX oslash otilde -55 -KPX oslash p -55 -KPX oslash period -95 -KPX oslash q -55 -KPX oslash r -55 -KPX oslash racute -55 -KPX oslash rcaron -55 -KPX oslash rcommaaccent -55 -KPX oslash s -55 -KPX oslash sacute -55 -KPX oslash scaron -55 -KPX oslash scedilla -55 -KPX oslash scommaaccent -55 -KPX oslash t -55 -KPX oslash tcommaaccent -55 -KPX oslash u -55 -KPX oslash uacute -55 -KPX oslash ucircumflex -55 -KPX oslash udieresis -55 -KPX oslash ugrave -55 -KPX oslash uhungarumlaut -55 -KPX oslash umacron -55 -KPX oslash uogonek -55 -KPX oslash uring -55 -KPX oslash v -70 -KPX oslash w -70 -KPX oslash x -85 -KPX oslash y -70 -KPX oslash yacute -70 -KPX oslash ydieresis -70 -KPX oslash z -55 -KPX oslash zacute -55 -KPX oslash zcaron -55 -KPX oslash zdotaccent -55 -KPX otilde comma -40 -KPX otilde period -40 -KPX otilde v -15 -KPX otilde w -15 -KPX otilde x -30 -KPX otilde y -30 -KPX otilde yacute -30 -KPX otilde ydieresis -30 -KPX p comma -35 -KPX p period -35 -KPX p y -30 -KPX p yacute -30 -KPX p ydieresis -30 -KPX period quotedblright -100 -KPX period quoteright -100 -KPX period space -60 -KPX quotedblright space -40 -KPX quoteleft quoteleft -57 -KPX quoteright d -50 -KPX quoteright dcroat -50 -KPX quoteright quoteright -57 -KPX quoteright r -50 -KPX quoteright racute -50 -KPX quoteright rcaron -50 -KPX quoteright rcommaaccent -50 -KPX quoteright s -50 -KPX quoteright sacute -50 -KPX quoteright scaron -50 -KPX quoteright scedilla -50 -KPX quoteright scommaaccent -50 -KPX quoteright space -70 -KPX r a -10 -KPX r aacute -10 -KPX r abreve -10 -KPX r acircumflex -10 -KPX r adieresis -10 -KPX r agrave -10 -KPX r amacron -10 -KPX r aogonek -10 -KPX r aring -10 -KPX r atilde -10 -KPX r colon 30 -KPX r comma -50 -KPX r i 15 -KPX r iacute 15 -KPX r icircumflex 15 -KPX r idieresis 15 -KPX r igrave 15 -KPX r imacron 15 -KPX r iogonek 15 -KPX r k 15 -KPX r kcommaaccent 15 -KPX r l 15 -KPX r lacute 15 -KPX r lcommaaccent 15 -KPX r lslash 15 -KPX r m 25 -KPX r n 25 -KPX r nacute 25 -KPX r ncaron 25 -KPX r ncommaaccent 25 -KPX r ntilde 25 -KPX r p 30 -KPX r period -50 -KPX r semicolon 30 -KPX r t 40 -KPX r tcommaaccent 40 -KPX r u 15 -KPX r uacute 15 -KPX r ucircumflex 15 -KPX r udieresis 15 -KPX r ugrave 15 -KPX r uhungarumlaut 15 -KPX r umacron 15 -KPX r uogonek 15 -KPX r uring 15 -KPX r v 30 -KPX r y 30 -KPX r yacute 30 -KPX r ydieresis 30 -KPX racute a -10 -KPX racute aacute -10 -KPX racute abreve -10 -KPX racute acircumflex -10 -KPX racute adieresis -10 -KPX racute agrave -10 -KPX racute amacron -10 -KPX racute aogonek -10 -KPX racute aring -10 -KPX racute atilde -10 -KPX racute colon 30 -KPX racute comma -50 -KPX racute i 15 -KPX racute iacute 15 -KPX racute icircumflex 15 -KPX racute idieresis 15 -KPX racute igrave 15 -KPX racute imacron 15 -KPX racute iogonek 15 -KPX racute k 15 -KPX racute kcommaaccent 15 -KPX racute l 15 -KPX racute lacute 15 -KPX racute lcommaaccent 15 -KPX racute lslash 15 -KPX racute m 25 -KPX racute n 25 -KPX racute nacute 25 -KPX racute ncaron 25 -KPX racute ncommaaccent 25 -KPX racute ntilde 25 -KPX racute p 30 -KPX racute period -50 -KPX racute semicolon 30 -KPX racute t 40 -KPX racute tcommaaccent 40 -KPX racute u 15 -KPX racute uacute 15 -KPX racute ucircumflex 15 -KPX racute udieresis 15 -KPX racute ugrave 15 -KPX racute uhungarumlaut 15 -KPX racute umacron 15 -KPX racute uogonek 15 -KPX racute uring 15 -KPX racute v 30 -KPX racute y 30 -KPX racute yacute 30 -KPX racute ydieresis 30 -KPX rcaron a -10 -KPX rcaron aacute -10 -KPX rcaron abreve -10 -KPX rcaron acircumflex -10 -KPX rcaron adieresis -10 -KPX rcaron agrave -10 -KPX rcaron amacron -10 -KPX rcaron aogonek -10 -KPX rcaron aring -10 -KPX rcaron atilde -10 -KPX rcaron colon 30 -KPX rcaron comma -50 -KPX rcaron i 15 -KPX rcaron iacute 15 -KPX rcaron icircumflex 15 -KPX rcaron idieresis 15 -KPX rcaron igrave 15 -KPX rcaron imacron 15 -KPX rcaron iogonek 15 -KPX rcaron k 15 -KPX rcaron kcommaaccent 15 -KPX rcaron l 15 -KPX rcaron lacute 15 -KPX rcaron lcommaaccent 15 -KPX rcaron lslash 15 -KPX rcaron m 25 -KPX rcaron n 25 -KPX rcaron nacute 25 -KPX rcaron ncaron 25 -KPX rcaron ncommaaccent 25 -KPX rcaron ntilde 25 -KPX rcaron p 30 -KPX rcaron period -50 -KPX rcaron semicolon 30 -KPX rcaron t 40 -KPX rcaron tcommaaccent 40 -KPX rcaron u 15 -KPX rcaron uacute 15 -KPX rcaron ucircumflex 15 -KPX rcaron udieresis 15 -KPX rcaron ugrave 15 -KPX rcaron uhungarumlaut 15 -KPX rcaron umacron 15 -KPX rcaron uogonek 15 -KPX rcaron uring 15 -KPX rcaron v 30 -KPX rcaron y 30 -KPX rcaron yacute 30 -KPX rcaron ydieresis 30 -KPX rcommaaccent a -10 -KPX rcommaaccent aacute -10 -KPX rcommaaccent abreve -10 -KPX rcommaaccent acircumflex -10 -KPX rcommaaccent adieresis -10 -KPX rcommaaccent agrave -10 -KPX rcommaaccent amacron -10 -KPX rcommaaccent aogonek -10 -KPX rcommaaccent aring -10 -KPX rcommaaccent atilde -10 -KPX rcommaaccent colon 30 -KPX rcommaaccent comma -50 -KPX rcommaaccent i 15 -KPX rcommaaccent iacute 15 -KPX rcommaaccent icircumflex 15 -KPX rcommaaccent idieresis 15 -KPX rcommaaccent igrave 15 -KPX rcommaaccent imacron 15 -KPX rcommaaccent iogonek 15 -KPX rcommaaccent k 15 -KPX rcommaaccent kcommaaccent 15 -KPX rcommaaccent l 15 -KPX rcommaaccent lacute 15 -KPX rcommaaccent lcommaaccent 15 -KPX rcommaaccent lslash 15 -KPX rcommaaccent m 25 -KPX rcommaaccent n 25 -KPX rcommaaccent nacute 25 -KPX rcommaaccent ncaron 25 -KPX rcommaaccent ncommaaccent 25 -KPX rcommaaccent ntilde 25 -KPX rcommaaccent p 30 -KPX rcommaaccent period -50 -KPX rcommaaccent semicolon 30 -KPX rcommaaccent t 40 -KPX rcommaaccent tcommaaccent 40 -KPX rcommaaccent u 15 -KPX rcommaaccent uacute 15 -KPX rcommaaccent ucircumflex 15 -KPX rcommaaccent udieresis 15 -KPX rcommaaccent ugrave 15 -KPX rcommaaccent uhungarumlaut 15 -KPX rcommaaccent umacron 15 -KPX rcommaaccent uogonek 15 -KPX rcommaaccent uring 15 -KPX rcommaaccent v 30 -KPX rcommaaccent y 30 -KPX rcommaaccent yacute 30 -KPX rcommaaccent ydieresis 30 -KPX s comma -15 -KPX s period -15 -KPX s w -30 -KPX sacute comma -15 -KPX sacute period -15 -KPX sacute w -30 -KPX scaron comma -15 -KPX scaron period -15 -KPX scaron w -30 -KPX scedilla comma -15 -KPX scedilla period -15 -KPX scedilla w -30 -KPX scommaaccent comma -15 -KPX scommaaccent period -15 -KPX scommaaccent w -30 -KPX semicolon space -50 -KPX space T -50 -KPX space Tcaron -50 -KPX space Tcommaaccent -50 -KPX space V -50 -KPX space W -40 -KPX space Y -90 -KPX space Yacute -90 -KPX space Ydieresis -90 -KPX space quotedblleft -30 -KPX space quoteleft -60 -KPX v a -25 -KPX v aacute -25 -KPX v abreve -25 -KPX v acircumflex -25 -KPX v adieresis -25 -KPX v agrave -25 -KPX v amacron -25 -KPX v aogonek -25 -KPX v aring -25 -KPX v atilde -25 -KPX v comma -80 -KPX v e -25 -KPX v eacute -25 -KPX v ecaron -25 -KPX v ecircumflex -25 -KPX v edieresis -25 -KPX v edotaccent -25 -KPX v egrave -25 -KPX v emacron -25 -KPX v eogonek -25 -KPX v o -25 -KPX v oacute -25 -KPX v ocircumflex -25 -KPX v odieresis -25 -KPX v ograve -25 -KPX v ohungarumlaut -25 -KPX v omacron -25 -KPX v oslash -25 -KPX v otilde -25 -KPX v period -80 -KPX w a -15 -KPX w aacute -15 -KPX w abreve -15 -KPX w acircumflex -15 -KPX w adieresis -15 -KPX w agrave -15 -KPX w amacron -15 -KPX w aogonek -15 -KPX w aring -15 -KPX w atilde -15 -KPX w comma -60 -KPX w e -10 -KPX w eacute -10 -KPX w ecaron -10 -KPX w ecircumflex -10 -KPX w edieresis -10 -KPX w edotaccent -10 -KPX w egrave -10 -KPX w emacron -10 -KPX w eogonek -10 -KPX w o -10 -KPX w oacute -10 -KPX w ocircumflex -10 -KPX w odieresis -10 -KPX w ograve -10 -KPX w ohungarumlaut -10 -KPX w omacron -10 -KPX w oslash -10 -KPX w otilde -10 -KPX w period -60 -KPX x e -30 -KPX x eacute -30 -KPX x ecaron -30 -KPX x ecircumflex -30 -KPX x edieresis -30 -KPX x edotaccent -30 -KPX x egrave -30 -KPX x emacron -30 -KPX x eogonek -30 -KPX y a -20 -KPX y aacute -20 -KPX y abreve -20 -KPX y acircumflex -20 -KPX y adieresis -20 -KPX y agrave -20 -KPX y amacron -20 -KPX y aogonek -20 -KPX y aring -20 -KPX y atilde -20 -KPX y comma -100 -KPX y e -20 -KPX y eacute -20 -KPX y ecaron -20 -KPX y ecircumflex -20 -KPX y edieresis -20 -KPX y edotaccent -20 -KPX y egrave -20 -KPX y emacron -20 -KPX y eogonek -20 -KPX y o -20 -KPX y oacute -20 -KPX y ocircumflex -20 -KPX y odieresis -20 -KPX y ograve -20 -KPX y ohungarumlaut -20 -KPX y omacron -20 -KPX y oslash -20 -KPX y otilde -20 -KPX y period -100 -KPX yacute a -20 -KPX yacute aacute -20 -KPX yacute abreve -20 -KPX yacute acircumflex -20 -KPX yacute adieresis -20 -KPX yacute agrave -20 -KPX yacute amacron -20 -KPX yacute aogonek -20 -KPX yacute aring -20 -KPX yacute atilde -20 -KPX yacute comma -100 -KPX yacute e -20 -KPX yacute eacute -20 -KPX yacute ecaron -20 -KPX yacute ecircumflex -20 -KPX yacute edieresis -20 -KPX yacute edotaccent -20 -KPX yacute egrave -20 -KPX yacute emacron -20 -KPX yacute eogonek -20 -KPX yacute o -20 -KPX yacute oacute -20 -KPX yacute ocircumflex -20 -KPX yacute odieresis -20 -KPX yacute ograve -20 -KPX yacute ohungarumlaut -20 -KPX yacute omacron -20 -KPX yacute oslash -20 -KPX yacute otilde -20 -KPX yacute period -100 -KPX ydieresis a -20 -KPX ydieresis aacute -20 -KPX ydieresis abreve -20 -KPX ydieresis acircumflex -20 -KPX ydieresis adieresis -20 -KPX ydieresis agrave -20 -KPX ydieresis amacron -20 -KPX ydieresis aogonek -20 -KPX ydieresis aring -20 -KPX ydieresis atilde -20 -KPX ydieresis comma -100 -KPX ydieresis e -20 -KPX ydieresis eacute -20 -KPX ydieresis ecaron -20 -KPX ydieresis ecircumflex -20 -KPX ydieresis edieresis -20 -KPX ydieresis edotaccent -20 -KPX ydieresis egrave -20 -KPX ydieresis emacron -20 -KPX ydieresis eogonek -20 -KPX ydieresis o -20 -KPX ydieresis oacute -20 -KPX ydieresis ocircumflex -20 -KPX ydieresis odieresis -20 -KPX ydieresis ograve -20 -KPX ydieresis ohungarumlaut -20 -KPX ydieresis omacron -20 -KPX ydieresis oslash -20 -KPX ydieresis otilde -20 -KPX ydieresis period -100 -KPX z e -15 -KPX z eacute -15 -KPX z ecaron -15 -KPX z ecircumflex -15 -KPX z edieresis -15 -KPX z edotaccent -15 -KPX z egrave -15 -KPX z emacron -15 -KPX z eogonek -15 -KPX z o -15 -KPX z oacute -15 -KPX z ocircumflex -15 -KPX z odieresis -15 -KPX z ograve -15 -KPX z ohungarumlaut -15 -KPX z omacron -15 -KPX z oslash -15 -KPX z otilde -15 -KPX zacute e -15 -KPX zacute eacute -15 -KPX zacute ecaron -15 -KPX zacute ecircumflex -15 -KPX zacute edieresis -15 -KPX zacute edotaccent -15 -KPX zacute egrave -15 -KPX zacute emacron -15 -KPX zacute eogonek -15 -KPX zacute o -15 -KPX zacute oacute -15 -KPX zacute ocircumflex -15 -KPX zacute odieresis -15 -KPX zacute ograve -15 -KPX zacute ohungarumlaut -15 -KPX zacute omacron -15 -KPX zacute oslash -15 -KPX zacute otilde -15 -KPX zcaron e -15 -KPX zcaron eacute -15 -KPX zcaron ecaron -15 -KPX zcaron ecircumflex -15 -KPX zcaron edieresis -15 -KPX zcaron edotaccent -15 -KPX zcaron egrave -15 -KPX zcaron emacron -15 -KPX zcaron eogonek -15 -KPX zcaron o -15 -KPX zcaron oacute -15 -KPX zcaron ocircumflex -15 -KPX zcaron odieresis -15 -KPX zcaron ograve -15 -KPX zcaron ohungarumlaut -15 -KPX zcaron omacron -15 -KPX zcaron oslash -15 -KPX zcaron otilde -15 -KPX zdotaccent e -15 -KPX zdotaccent eacute -15 -KPX zdotaccent ecaron -15 -KPX zdotaccent ecircumflex -15 -KPX zdotaccent edieresis -15 -KPX zdotaccent edotaccent -15 -KPX zdotaccent egrave -15 -KPX zdotaccent emacron -15 -KPX zdotaccent eogonek -15 -KPX zdotaccent o -15 -KPX zdotaccent oacute -15 -KPX zdotaccent ocircumflex -15 -KPX zdotaccent odieresis -15 -KPX zdotaccent ograve -15 -KPX zdotaccent ohungarumlaut -15 -KPX zdotaccent omacron -15 -KPX zdotaccent oslash -15 -KPX zdotaccent otilde -15 -EndKernPairs -EndKernData -EndFontMetrics diff --git a/application/third_party/dompdf/lib/fonts/Helvetica.afm.php b/application/third_party/dompdf/lib/fonts/Helvetica.afm.php deleted file mode 100644 index f58cc543..00000000 --- a/application/third_party/dompdf/lib/fonts/Helvetica.afm.php +++ /dev/null @@ -1,570 +0,0 @@ -<?php return array ( - 'codeToName' => - array ( - 32 => 'space', - 160 => 'space', - 33 => 'exclam', - 34 => 'quotedbl', - 35 => 'numbersign', - 36 => 'dollar', - 37 => 'percent', - 38 => 'ampersand', - 146 => 'quoteright', - 40 => 'parenleft', - 41 => 'parenright', - 42 => 'asterisk', - 43 => 'plus', - 44 => 'comma', - 45 => 'hyphen', - 173 => 'hyphen', - 46 => 'period', - 47 => 'slash', - 48 => 'zero', - 49 => 'one', - 50 => 'two', - 51 => 'three', - 52 => 'four', - 53 => 'five', - 54 => 'six', - 55 => 'seven', - 56 => 'eight', - 57 => 'nine', - 58 => 'colon', - 59 => 'semicolon', - 60 => 'less', - 61 => 'equal', - 62 => 'greater', - 63 => 'question', - 64 => 'at', - 65 => 'A', - 66 => 'B', - 67 => 'C', - 68 => 'D', - 69 => 'E', - 70 => 'F', - 71 => 'G', - 72 => 'H', - 73 => 'I', - 74 => 'J', - 75 => 'K', - 76 => 'L', - 77 => 'M', - 78 => 'N', - 79 => 'O', - 80 => 'P', - 81 => 'Q', - 82 => 'R', - 83 => 'S', - 84 => 'T', - 85 => 'U', - 86 => 'V', - 87 => 'W', - 88 => 'X', - 89 => 'Y', - 90 => 'Z', - 91 => 'bracketleft', - 92 => 'backslash', - 93 => 'bracketright', - 94 => 'asciicircum', - 95 => 'underscore', - 145 => 'quoteleft', - 97 => 'a', - 98 => 'b', - 99 => 'c', - 100 => 'd', - 101 => 'e', - 102 => 'f', - 103 => 'g', - 104 => 'h', - 105 => 'i', - 106 => 'j', - 107 => 'k', - 108 => 'l', - 109 => 'm', - 110 => 'n', - 111 => 'o', - 112 => 'p', - 113 => 'q', - 114 => 'r', - 115 => 's', - 116 => 't', - 117 => 'u', - 118 => 'v', - 119 => 'w', - 120 => 'x', - 121 => 'y', - 122 => 'z', - 123 => 'braceleft', - 124 => 'bar', - 125 => 'braceright', - 126 => 'asciitilde', - 161 => 'exclamdown', - 162 => 'cent', - 163 => 'sterling', - 165 => 'yen', - 131 => 'florin', - 167 => 'section', - 164 => 'currency', - 39 => 'quotesingle', - 147 => 'quotedblleft', - 170 => 'ordfeminine', - 139 => 'guilsinglleft', - 155 => 'guilsinglright', - 150 => 'endash', - 134 => 'dagger', - 135 => 'daggerdbl', - 183 => 'periodcentered', - 182 => 'paragraph', - 149 => 'bullet', - 130 => 'quotesinglbase', - 132 => 'quotedblbase', - 148 => 'quotedblright', - 187 => 'guillemotright', - 133 => 'ellipsis', - 137 => 'perthousand', - 191 => 'questiondown', - 96 => 'grave', - 180 => 'acute', - 136 => 'circumflex', - 152 => 'tilde', - 175 => 'macron', - 168 => 'dieresis', - 184 => 'cedilla', - 151 => 'emdash', - 198 => 'AE', - 216 => 'Oslash', - 140 => 'OE', - 186 => 'ordmasculine', - 230 => 'ae', - 248 => 'oslash', - 156 => 'oe', - 223 => 'germandbls', - 207 => 'Idieresis', - 233 => 'eacute', - 159 => 'Ydieresis', - 247 => 'divide', - 221 => 'Yacute', - 194 => 'Acircumflex', - 225 => 'aacute', - 219 => 'Ucircumflex', - 253 => 'yacute', - 234 => 'ecircumflex', - 220 => 'Udieresis', - 218 => 'Uacute', - 203 => 'Edieresis', - 169 => 'copyright', - 229 => 'aring', - 224 => 'agrave', - 227 => 'atilde', - 154 => 'scaron', - 237 => 'iacute', - 251 => 'ucircumflex', - 226 => 'acircumflex', - 231 => 'ccedilla', - 222 => 'Thorn', - 179 => 'threesuperior', - 210 => 'Ograve', - 192 => 'Agrave', - 215 => 'multiply', - 250 => 'uacute', - 255 => 'ydieresis', - 238 => 'icircumflex', - 202 => 'Ecircumflex', - 228 => 'adieresis', - 235 => 'edieresis', - 205 => 'Iacute', - 177 => 'plusminus', - 166 => 'brokenbar', - 174 => 'registered', - 200 => 'Egrave', - 142 => 'Zcaron', - 208 => 'Eth', - 199 => 'Ccedilla', - 193 => 'Aacute', - 196 => 'Adieresis', - 232 => 'egrave', - 211 => 'Oacute', - 243 => 'oacute', - 239 => 'idieresis', - 212 => 'Ocircumflex', - 217 => 'Ugrave', - 254 => 'thorn', - 178 => 'twosuperior', - 214 => 'Odieresis', - 181 => 'mu', - 236 => 'igrave', - 190 => 'threequarters', - 153 => 'trademark', - 204 => 'Igrave', - 189 => 'onehalf', - 244 => 'ocircumflex', - 241 => 'ntilde', - 201 => 'Eacute', - 188 => 'onequarter', - 138 => 'Scaron', - 176 => 'degree', - 242 => 'ograve', - 249 => 'ugrave', - 209 => 'Ntilde', - 245 => 'otilde', - 195 => 'Atilde', - 197 => 'Aring', - 213 => 'Otilde', - 206 => 'Icircumflex', - 172 => 'logicalnot', - 246 => 'odieresis', - 252 => 'udieresis', - 240 => 'eth', - 158 => 'zcaron', - 185 => 'onesuperior', - 128 => 'Euro', - ), - 'isUnicode' => false, - 'FontName' => 'Helvetica', - 'FullName' => 'Helvetica', - 'FamilyName' => 'Helvetica', - 'Weight' => 'Medium', - 'ItalicAngle' => '0', - 'IsFixedPitch' => 'false', - 'CharacterSet' => 'ExtendedRoman', - 'FontBBox' => - array ( - 0 => '-166', - 1 => '-225', - 2 => '1000', - 3 => '931', - ), - 'UnderlinePosition' => '-100', - 'UnderlineThickness' => '50', - 'Version' => '002.000', - 'EncodingScheme' => 'WinAnsiEncoding', - 'CapHeight' => '718', - 'XHeight' => '523', - 'Ascender' => '718', - 'Descender' => '-207', - 'StdHW' => '76', - 'StdVW' => '88', - 'StartCharMetrics' => '317', - 'C' => - array ( - 32 => 278.0, - 160 => 278.0, - 33 => 278.0, - 34 => 355.0, - 35 => 556.0, - 36 => 556.0, - 37 => 889.0, - 38 => 667.0, - 146 => 222.0, - 40 => 333.0, - 41 => 333.0, - 42 => 389.0, - 43 => 584.0, - 44 => 278.0, - 45 => 333.0, - 173 => 333.0, - 46 => 278.0, - 47 => 278.0, - 48 => 556.0, - 49 => 556.0, - 50 => 556.0, - 51 => 556.0, - 52 => 556.0, - 53 => 556.0, - 54 => 556.0, - 55 => 556.0, - 56 => 556.0, - 57 => 556.0, - 58 => 278.0, - 59 => 278.0, - 60 => 584.0, - 61 => 584.0, - 62 => 584.0, - 63 => 556.0, - 64 => 1015.0, - 65 => 667.0, - 66 => 667.0, - 67 => 722.0, - 68 => 722.0, - 69 => 667.0, - 70 => 611.0, - 71 => 778.0, - 72 => 722.0, - 73 => 278.0, - 74 => 500.0, - 75 => 667.0, - 76 => 556.0, - 77 => 833.0, - 78 => 722.0, - 79 => 778.0, - 80 => 667.0, - 81 => 778.0, - 82 => 722.0, - 83 => 667.0, - 84 => 611.0, - 85 => 722.0, - 86 => 667.0, - 87 => 944.0, - 88 => 667.0, - 89 => 667.0, - 90 => 611.0, - 91 => 278.0, - 92 => 278.0, - 93 => 278.0, - 94 => 469.0, - 95 => 556.0, - 145 => 222.0, - 97 => 556.0, - 98 => 556.0, - 99 => 500.0, - 100 => 556.0, - 101 => 556.0, - 102 => 278.0, - 103 => 556.0, - 104 => 556.0, - 105 => 222.0, - 106 => 222.0, - 107 => 500.0, - 108 => 222.0, - 109 => 833.0, - 110 => 556.0, - 111 => 556.0, - 112 => 556.0, - 113 => 556.0, - 114 => 333.0, - 115 => 500.0, - 116 => 278.0, - 117 => 556.0, - 118 => 500.0, - 119 => 722.0, - 120 => 500.0, - 121 => 500.0, - 122 => 500.0, - 123 => 334.0, - 124 => 260.0, - 125 => 334.0, - 126 => 584.0, - 161 => 333.0, - 162 => 556.0, - 163 => 556.0, - 'fraction' => 167.0, - 165 => 556.0, - 131 => 556.0, - 167 => 556.0, - 164 => 556.0, - 39 => 191.0, - 147 => 333.0, - 170 => 370.0, - 139 => 333.0, - 155 => 333.0, - 'fi' => 500.0, - 'fl' => 500.0, - 150 => 556.0, - 134 => 556.0, - 135 => 556.0, - 183 => 278.0, - 182 => 537.0, - 149 => 350.0, - 130 => 222.0, - 132 => 333.0, - 148 => 333.0, - 187 => 556.0, - 133 => 1000.0, - 137 => 1000.0, - 191 => 611.0, - 96 => 333.0, - 180 => 333.0, - 136 => 333.0, - 152 => 333.0, - 175 => 333.0, - 'breve' => 333.0, - 'dotaccent' => 333.0, - 168 => 333.0, - 'ring' => 333.0, - 184 => 333.0, - 'hungarumlaut' => 333.0, - 'ogonek' => 333.0, - 'caron' => 333.0, - 151 => 1000.0, - 198 => 1000.0, - 'Lslash' => 556.0, - 216 => 778.0, - 140 => 1000.0, - 186 => 365.0, - 230 => 889.0, - 'dotlessi' => 278.0, - 'lslash' => 222.0, - 248 => 611.0, - 156 => 944.0, - 223 => 611.0, - 207 => 278.0, - 233 => 556.0, - 'abreve' => 556.0, - 'uhungarumlaut' => 556.0, - 'ecaron' => 556.0, - 159 => 667.0, - 247 => 584.0, - 221 => 667.0, - 194 => 667.0, - 225 => 556.0, - 219 => 722.0, - 253 => 500.0, - 'scommaaccent' => 500.0, - 234 => 556.0, - 'Uring' => 722.0, - 220 => 722.0, - 'aogonek' => 556.0, - 218 => 722.0, - 'uogonek' => 556.0, - 203 => 667.0, - 'Dcroat' => 722.0, - 'commaaccent' => 250.0, - 169 => 737.0, - 'Emacron' => 667.0, - 'ccaron' => 500.0, - 229 => 556.0, - 'Ncommaaccent' => 722.0, - 'lacute' => 222.0, - 224 => 556.0, - 'Tcommaaccent' => 611.0, - 'Cacute' => 722.0, - 227 => 556.0, - 'Edotaccent' => 667.0, - 154 => 500.0, - 'scedilla' => 500.0, - 237 => 278.0, - 'lozenge' => 471.0, - 'Rcaron' => 722.0, - 'Gcommaaccent' => 778.0, - 251 => 556.0, - 226 => 556.0, - 'Amacron' => 667.0, - 'rcaron' => 333.0, - 231 => 500.0, - 'Zdotaccent' => 611.0, - 222 => 667.0, - 'Omacron' => 778.0, - 'Racute' => 722.0, - 'Sacute' => 667.0, - 'dcaron' => 643.0, - 'Umacron' => 722.0, - 'uring' => 556.0, - 179 => 333.0, - 210 => 778.0, - 192 => 667.0, - 'Abreve' => 667.0, - 215 => 584.0, - 250 => 556.0, - 'Tcaron' => 611.0, - 'partialdiff' => 476.0, - 255 => 500.0, - 'Nacute' => 722.0, - 238 => 278.0, - 202 => 667.0, - 228 => 556.0, - 235 => 556.0, - 'cacute' => 500.0, - 'nacute' => 556.0, - 'umacron' => 556.0, - 'Ncaron' => 722.0, - 205 => 278.0, - 177 => 584.0, - 166 => 260.0, - 174 => 737.0, - 'Gbreve' => 778.0, - 'Idotaccent' => 278.0, - 'summation' => 600.0, - 200 => 667.0, - 'racute' => 333.0, - 'omacron' => 556.0, - 'Zacute' => 611.0, - 142 => 611.0, - 'greaterequal' => 549.0, - 208 => 722.0, - 199 => 722.0, - 'lcommaaccent' => 222.0, - 'tcaron' => 317.0, - 'eogonek' => 556.0, - 'Uogonek' => 722.0, - 193 => 667.0, - 196 => 667.0, - 232 => 556.0, - 'zacute' => 500.0, - 'iogonek' => 222.0, - 211 => 778.0, - 243 => 556.0, - 'amacron' => 556.0, - 'sacute' => 500.0, - 239 => 278.0, - 212 => 778.0, - 217 => 722.0, - 'Delta' => 612.0, - 254 => 556.0, - 178 => 333.0, - 214 => 778.0, - 181 => 556.0, - 236 => 278.0, - 'ohungarumlaut' => 556.0, - 'Eogonek' => 667.0, - 'dcroat' => 556.0, - 190 => 834.0, - 'Scedilla' => 667.0, - 'lcaron' => 299.0, - 'Kcommaaccent' => 667.0, - 'Lacute' => 556.0, - 153 => 1000.0, - 'edotaccent' => 556.0, - 204 => 278.0, - 'Imacron' => 278.0, - 'Lcaron' => 556.0, - 189 => 834.0, - 'lessequal' => 549.0, - 244 => 556.0, - 241 => 556.0, - 'Uhungarumlaut' => 722.0, - 201 => 667.0, - 'emacron' => 556.0, - 'gbreve' => 556.0, - 188 => 834.0, - 138 => 667.0, - 'Scommaaccent' => 667.0, - 'Ohungarumlaut' => 778.0, - 176 => 400.0, - 242 => 556.0, - 'Ccaron' => 722.0, - 249 => 556.0, - 'radical' => 453.0, - 'Dcaron' => 722.0, - 'rcommaaccent' => 333.0, - 209 => 722.0, - 245 => 556.0, - 'Rcommaaccent' => 722.0, - 'Lcommaaccent' => 556.0, - 195 => 667.0, - 'Aogonek' => 667.0, - 197 => 667.0, - 213 => 778.0, - 'zdotaccent' => 500.0, - 'Ecaron' => 667.0, - 'Iogonek' => 278.0, - 'kcommaaccent' => 500.0, - 'minus' => 584.0, - 206 => 278.0, - 'ncaron' => 556.0, - 'tcommaaccent' => 278.0, - 172 => 584.0, - 246 => 556.0, - 252 => 556.0, - 'notequal' => 549.0, - 'gcommaaccent' => 556.0, - 240 => 556.0, - 158 => 500.0, - 'ncommaaccent' => 556.0, - 185 => 333.0, - 'imacron' => 278.0, - 128 => 556.0, - ), - 'CIDtoGID_Compressed' => true, - 'CIDtoGID' => 'eJwDAAAAAAE=', - '_version_' => 4, -); \ No newline at end of file diff --git a/application/third_party/dompdf/lib/fonts/Symbol.afm b/application/third_party/dompdf/lib/fonts/Symbol.afm deleted file mode 100644 index 6a5386a9..00000000 --- a/application/third_party/dompdf/lib/fonts/Symbol.afm +++ /dev/null @@ -1,213 +0,0 @@ -StartFontMetrics 4.1 -Comment Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All rights reserved. -Comment Creation Date: Thu May 1 15:12:25 1997 -Comment UniqueID 43064 -Comment VMusage 30820 39997 -FontName Symbol -FullName Symbol -FamilyName Symbol -Weight Medium -ItalicAngle 0 -IsFixedPitch false -CharacterSet Special -FontBBox -180 -293 1090 1010 -UnderlinePosition -100 -UnderlineThickness 50 -Version 001.008 -Notice Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All rights reserved. -EncodingScheme FontSpecific -StdHW 92 -StdVW 85 -StartCharMetrics 190 -C 32 ; WX 250 ; N space ; B 0 0 0 0 ; -C 33 ; WX 333 ; N exclam ; B 128 -17 240 672 ; -C 34 ; WX 713 ; N universal ; B 31 0 681 705 ; -C 35 ; WX 500 ; N numbersign ; B 20 -16 481 673 ; -C 36 ; WX 549 ; N existential ; B 25 0 478 707 ; -C 37 ; WX 833 ; N percent ; B 63 -36 771 655 ; -C 38 ; WX 778 ; N ampersand ; B 41 -18 750 661 ; -C 39 ; WX 439 ; N suchthat ; B 48 -17 414 500 ; -C 40 ; WX 333 ; N parenleft ; B 53 -191 300 673 ; -C 41 ; WX 333 ; N parenright ; B 30 -191 277 673 ; -C 42 ; WX 500 ; N asteriskmath ; B 65 134 427 551 ; -C 43 ; WX 549 ; N plus ; B 10 0 539 533 ; -C 44 ; WX 250 ; N comma ; B 56 -152 194 104 ; -C 45 ; WX 549 ; N minus ; B 11 233 535 288 ; -C 46 ; WX 250 ; N period ; B 69 -17 181 95 ; -C 47 ; WX 278 ; N slash ; B 0 -18 254 646 ; -C 48 ; WX 500 ; N zero ; B 24 -14 476 685 ; -C 49 ; WX 500 ; N one ; B 117 0 390 673 ; -C 50 ; WX 500 ; N two ; B 25 0 475 685 ; -C 51 ; WX 500 ; N three ; B 43 -14 435 685 ; -C 52 ; WX 500 ; N four ; B 15 0 469 685 ; -C 53 ; WX 500 ; N five ; B 32 -14 445 690 ; -C 54 ; WX 500 ; N six ; B 34 -14 468 685 ; -C 55 ; WX 500 ; N seven ; B 24 -16 448 673 ; -C 56 ; WX 500 ; N eight ; B 56 -14 445 685 ; -C 57 ; WX 500 ; N nine ; B 30 -18 459 685 ; -C 58 ; WX 278 ; N colon ; B 81 -17 193 460 ; -C 59 ; WX 278 ; N semicolon ; B 83 -152 221 460 ; -C 60 ; WX 549 ; N less ; B 26 0 523 522 ; -C 61 ; WX 549 ; N equal ; B 11 141 537 390 ; -C 62 ; WX 549 ; N greater ; B 26 0 523 522 ; -C 63 ; WX 444 ; N question ; B 70 -17 412 686 ; -C 64 ; WX 549 ; N congruent ; B 11 0 537 475 ; -C 65 ; WX 722 ; N Alpha ; B 4 0 684 673 ; -C 66 ; WX 667 ; N Beta ; B 29 0 592 673 ; -C 67 ; WX 722 ; N Chi ; B -9 0 704 673 ; -C 68 ; WX 612 ; N Delta ; B 6 0 608 688 ; -C 69 ; WX 611 ; N Epsilon ; B 32 0 617 673 ; -C 70 ; WX 763 ; N Phi ; B 26 0 741 673 ; -C 71 ; WX 603 ; N Gamma ; B 24 0 609 673 ; -C 72 ; WX 722 ; N Eta ; B 39 0 729 673 ; -C 73 ; WX 333 ; N Iota ; B 32 0 316 673 ; -C 74 ; WX 631 ; N theta1 ; B 18 -18 623 689 ; -C 75 ; WX 722 ; N Kappa ; B 35 0 722 673 ; -C 76 ; WX 686 ; N Lambda ; B 6 0 680 688 ; -C 77 ; WX 889 ; N Mu ; B 28 0 887 673 ; -C 78 ; WX 722 ; N Nu ; B 29 -8 720 673 ; -C 79 ; WX 722 ; N Omicron ; B 41 -17 715 685 ; -C 80 ; WX 768 ; N Pi ; B 25 0 745 673 ; -C 81 ; WX 741 ; N Theta ; B 41 -17 715 685 ; -C 82 ; WX 556 ; N Rho ; B 28 0 563 673 ; -C 83 ; WX 592 ; N Sigma ; B 5 0 589 673 ; -C 84 ; WX 611 ; N Tau ; B 33 0 607 673 ; -C 85 ; WX 690 ; N Upsilon ; B -8 0 694 673 ; -C 86 ; WX 439 ; N sigma1 ; B 40 -233 436 500 ; -C 87 ; WX 768 ; N Omega ; B 34 0 736 688 ; -C 88 ; WX 645 ; N Xi ; B 40 0 599 673 ; -C 89 ; WX 795 ; N Psi ; B 15 0 781 684 ; -C 90 ; WX 611 ; N Zeta ; B 44 0 636 673 ; -C 91 ; WX 333 ; N bracketleft ; B 86 -155 299 674 ; -C 92 ; WX 863 ; N therefore ; B 163 0 701 487 ; -C 93 ; WX 333 ; N bracketright ; B 33 -155 246 674 ; -C 94 ; WX 658 ; N perpendicular ; B 15 0 652 674 ; -C 95 ; WX 500 ; N underscore ; B -2 -125 502 -75 ; -C 96 ; WX 500 ; N radicalex ; B 480 881 1090 917 ; -C 97 ; WX 631 ; N alpha ; B 41 -18 622 500 ; -C 98 ; WX 549 ; N beta ; B 61 -223 515 741 ; -C 99 ; WX 549 ; N chi ; B 12 -231 522 499 ; -C 100 ; WX 494 ; N delta ; B 40 -19 481 740 ; -C 101 ; WX 439 ; N epsilon ; B 22 -19 427 502 ; -C 102 ; WX 521 ; N phi ; B 28 -224 492 673 ; -C 103 ; WX 411 ; N gamma ; B 5 -225 484 499 ; -C 104 ; WX 603 ; N eta ; B 0 -202 527 514 ; -C 105 ; WX 329 ; N iota ; B 0 -17 301 503 ; -C 106 ; WX 603 ; N phi1 ; B 36 -224 587 499 ; -C 107 ; WX 549 ; N kappa ; B 33 0 558 501 ; -C 108 ; WX 549 ; N lambda ; B 24 -17 548 739 ; -C 109 ; WX 576 ; N mu ; B 33 -223 567 500 ; -C 110 ; WX 521 ; N nu ; B -9 -16 475 507 ; -C 111 ; WX 549 ; N omicron ; B 35 -19 501 499 ; -C 112 ; WX 549 ; N pi ; B 10 -19 530 487 ; -C 113 ; WX 521 ; N theta ; B 43 -17 485 690 ; -C 114 ; WX 549 ; N rho ; B 50 -230 490 499 ; -C 115 ; WX 603 ; N sigma ; B 30 -21 588 500 ; -C 116 ; WX 439 ; N tau ; B 10 -19 418 500 ; -C 117 ; WX 576 ; N upsilon ; B 7 -18 535 507 ; -C 118 ; WX 713 ; N omega1 ; B 12 -18 671 583 ; -C 119 ; WX 686 ; N omega ; B 42 -17 684 500 ; -C 120 ; WX 493 ; N xi ; B 27 -224 469 766 ; -C 121 ; WX 686 ; N psi ; B 12 -228 701 500 ; -C 122 ; WX 494 ; N zeta ; B 60 -225 467 756 ; -C 123 ; WX 480 ; N braceleft ; B 58 -183 397 673 ; -C 124 ; WX 200 ; N bar ; B 65 -293 135 707 ; -C 125 ; WX 480 ; N braceright ; B 79 -183 418 673 ; -C 126 ; WX 549 ; N similar ; B 17 203 529 307 ; -C 160 ; WX 750 ; N Euro ; B 20 -12 714 685 ; -C 161 ; WX 620 ; N Upsilon1 ; B -2 0 610 685 ; -C 162 ; WX 247 ; N minute ; B 27 459 228 735 ; -C 163 ; WX 549 ; N lessequal ; B 29 0 526 639 ; -C 164 ; WX 167 ; N fraction ; B -180 -12 340 677 ; -C 165 ; WX 713 ; N infinity ; B 26 124 688 404 ; -C 166 ; WX 500 ; N florin ; B 2 -193 494 686 ; -C 167 ; WX 753 ; N club ; B 86 -26 660 533 ; -C 168 ; WX 753 ; N diamond ; B 142 -36 600 550 ; -C 169 ; WX 753 ; N heart ; B 117 -33 631 532 ; -C 170 ; WX 753 ; N spade ; B 113 -36 629 548 ; -C 171 ; WX 1042 ; N arrowboth ; B 24 -15 1024 511 ; -C 172 ; WX 987 ; N arrowleft ; B 32 -15 942 511 ; -C 173 ; WX 603 ; N arrowup ; B 45 0 571 910 ; -C 174 ; WX 987 ; N arrowright ; B 49 -15 959 511 ; -C 175 ; WX 603 ; N arrowdown ; B 45 -22 571 888 ; -C 176 ; WX 400 ; N degree ; B 50 385 350 685 ; -C 177 ; WX 549 ; N plusminus ; B 10 0 539 645 ; -C 178 ; WX 411 ; N second ; B 20 459 413 737 ; -C 179 ; WX 549 ; N greaterequal ; B 29 0 526 639 ; -C 180 ; WX 549 ; N multiply ; B 17 8 533 524 ; -C 181 ; WX 713 ; N proportional ; B 27 123 639 404 ; -C 182 ; WX 494 ; N partialdiff ; B 26 -20 462 746 ; -C 183 ; WX 460 ; N bullet ; B 50 113 410 473 ; -C 184 ; WX 549 ; N divide ; B 10 71 536 456 ; -C 185 ; WX 549 ; N notequal ; B 15 -25 540 549 ; -C 186 ; WX 549 ; N equivalence ; B 14 82 538 443 ; -C 187 ; WX 549 ; N approxequal ; B 14 135 527 394 ; -C 188 ; WX 1000 ; N ellipsis ; B 111 -17 889 95 ; -C 189 ; WX 603 ; N arrowvertex ; B 280 -120 336 1010 ; -C 190 ; WX 1000 ; N arrowhorizex ; B -60 220 1050 276 ; -C 191 ; WX 658 ; N carriagereturn ; B 15 -16 602 629 ; -C 192 ; WX 823 ; N aleph ; B 175 -18 661 658 ; -C 193 ; WX 686 ; N Ifraktur ; B 10 -53 578 740 ; -C 194 ; WX 795 ; N Rfraktur ; B 26 -15 759 734 ; -C 195 ; WX 987 ; N weierstrass ; B 159 -211 870 573 ; -C 196 ; WX 768 ; N circlemultiply ; B 43 -17 733 673 ; -C 197 ; WX 768 ; N circleplus ; B 43 -15 733 675 ; -C 198 ; WX 823 ; N emptyset ; B 39 -24 781 719 ; -C 199 ; WX 768 ; N intersection ; B 40 0 732 509 ; -C 200 ; WX 768 ; N union ; B 40 -17 732 492 ; -C 201 ; WX 713 ; N propersuperset ; B 20 0 673 470 ; -C 202 ; WX 713 ; N reflexsuperset ; B 20 -125 673 470 ; -C 203 ; WX 713 ; N notsubset ; B 36 -70 690 540 ; -C 204 ; WX 713 ; N propersubset ; B 37 0 690 470 ; -C 205 ; WX 713 ; N reflexsubset ; B 37 -125 690 470 ; -C 206 ; WX 713 ; N element ; B 45 0 505 468 ; -C 207 ; WX 713 ; N notelement ; B 45 -58 505 555 ; -C 208 ; WX 768 ; N angle ; B 26 0 738 673 ; -C 209 ; WX 713 ; N gradient ; B 36 -19 681 718 ; -C 210 ; WX 790 ; N registerserif ; B 50 -17 740 673 ; -C 211 ; WX 790 ; N copyrightserif ; B 51 -15 741 675 ; -C 212 ; WX 890 ; N trademarkserif ; B 18 293 855 673 ; -C 213 ; WX 823 ; N product ; B 25 -101 803 751 ; -C 214 ; WX 549 ; N radical ; B 10 -38 515 917 ; -C 215 ; WX 250 ; N dotmath ; B 69 210 169 310 ; -C 216 ; WX 713 ; N logicalnot ; B 15 0 680 288 ; -C 217 ; WX 603 ; N logicaland ; B 23 0 583 454 ; -C 218 ; WX 603 ; N logicalor ; B 30 0 578 477 ; -C 219 ; WX 1042 ; N arrowdblboth ; B 27 -20 1023 510 ; -C 220 ; WX 987 ; N arrowdblleft ; B 30 -15 939 513 ; -C 221 ; WX 603 ; N arrowdblup ; B 39 2 567 911 ; -C 222 ; WX 987 ; N arrowdblright ; B 45 -20 954 508 ; -C 223 ; WX 603 ; N arrowdbldown ; B 44 -19 572 890 ; -C 224 ; WX 494 ; N lozenge ; B 18 0 466 745 ; -C 225 ; WX 329 ; N angleleft ; B 25 -198 306 746 ; -C 226 ; WX 790 ; N registersans ; B 50 -20 740 670 ; -C 227 ; WX 790 ; N copyrightsans ; B 49 -15 739 675 ; -C 228 ; WX 786 ; N trademarksans ; B 5 293 725 673 ; -C 229 ; WX 713 ; N summation ; B 14 -108 695 752 ; -C 230 ; WX 384 ; N parenlefttp ; B 24 -293 436 926 ; -C 231 ; WX 384 ; N parenleftex ; B 24 -85 108 925 ; -C 232 ; WX 384 ; N parenleftbt ; B 24 -293 436 926 ; -C 233 ; WX 384 ; N bracketlefttp ; B 0 -80 349 926 ; -C 234 ; WX 384 ; N bracketleftex ; B 0 -79 77 925 ; -C 235 ; WX 384 ; N bracketleftbt ; B 0 -80 349 926 ; -C 236 ; WX 494 ; N bracelefttp ; B 209 -85 445 925 ; -C 237 ; WX 494 ; N braceleftmid ; B 20 -85 284 935 ; -C 238 ; WX 494 ; N braceleftbt ; B 209 -75 445 935 ; -C 239 ; WX 494 ; N braceex ; B 209 -85 284 935 ; -C 241 ; WX 329 ; N angleright ; B 21 -198 302 746 ; -C 242 ; WX 274 ; N integral ; B 2 -107 291 916 ; -C 243 ; WX 686 ; N integraltp ; B 308 -88 675 920 ; -C 244 ; WX 686 ; N integralex ; B 308 -88 378 975 ; -C 245 ; WX 686 ; N integralbt ; B 11 -87 378 921 ; -C 246 ; WX 384 ; N parenrighttp ; B 54 -293 466 926 ; -C 247 ; WX 384 ; N parenrightex ; B 382 -85 466 925 ; -C 248 ; WX 384 ; N parenrightbt ; B 54 -293 466 926 ; -C 249 ; WX 384 ; N bracketrighttp ; B 22 -80 371 926 ; -C 250 ; WX 384 ; N bracketrightex ; B 294 -79 371 925 ; -C 251 ; WX 384 ; N bracketrightbt ; B 22 -80 371 926 ; -C 252 ; WX 494 ; N bracerighttp ; B 48 -85 284 925 ; -C 253 ; WX 494 ; N bracerightmid ; B 209 -85 473 935 ; -C 254 ; WX 494 ; N bracerightbt ; B 48 -75 284 935 ; -C -1 ; WX 790 ; N apple ; B 56 -3 733 808 ; -EndCharMetrics -EndFontMetrics diff --git a/application/third_party/dompdf/lib/fonts/Times-Bold.afm b/application/third_party/dompdf/lib/fonts/Times-Bold.afm deleted file mode 100644 index 7adf4dab..00000000 --- a/application/third_party/dompdf/lib/fonts/Times-Bold.afm +++ /dev/null @@ -1,2590 +0,0 @@ -StartFontMetrics 4.1 -Comment Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. -Comment Creation Date: Thu May 1 12:52:56 1997 -Comment UniqueID 43065 -Comment VMusage 41636 52661 -FontName Times-Bold -FullName Times Bold -FamilyName Times -Weight Bold -ItalicAngle 0 -IsFixedPitch false -CharacterSet ExtendedRoman -FontBBox -168 -218 1000 935 -UnderlinePosition -100 -UnderlineThickness 50 -Version 002.000 -Notice Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype-Hell AG and/or its subsidiaries. -EncodingScheme WinAnsiEncoding -CapHeight 676 -XHeight 461 -Ascender 683 -Descender -217 -StdHW 44 -StdVW 139 -StartCharMetrics 317 -C 32 ; WX 250 ; N space ; B 0 0 0 0 ; -C 160 ; WX 250 ; N space ; B 0 0 0 0 ; -C 33 ; WX 333 ; N exclam ; B 81 -13 251 691 ; -C 34 ; WX 555 ; N quotedbl ; B 83 404 472 691 ; -C 35 ; WX 500 ; N numbersign ; B 4 0 496 700 ; -C 36 ; WX 500 ; N dollar ; B 29 -99 472 750 ; -C 37 ; WX 1000 ; N percent ; B 124 -14 877 692 ; -C 38 ; WX 833 ; N ampersand ; B 62 -16 787 691 ; -C 146 ; WX 333 ; N quoteright ; B 79 356 263 691 ; -C 40 ; WX 333 ; N parenleft ; B 46 -168 306 694 ; -C 41 ; WX 333 ; N parenright ; B 27 -168 287 694 ; -C 42 ; WX 500 ; N asterisk ; B 56 255 447 691 ; -C 43 ; WX 570 ; N plus ; B 33 0 537 506 ; -C 44 ; WX 250 ; N comma ; B 39 -180 223 155 ; -C 45 ; WX 333 ; N hyphen ; B 44 171 287 287 ; -C 173 ; WX 333 ; N hyphen ; B 44 171 287 287 ; -C 46 ; WX 250 ; N period ; B 41 -13 210 156 ; -C 47 ; WX 278 ; N slash ; B -24 -19 302 691 ; -C 48 ; WX 500 ; N zero ; B 24 -13 476 688 ; -C 49 ; WX 500 ; N one ; B 65 0 442 688 ; -C 50 ; WX 500 ; N two ; B 17 0 478 688 ; -C 51 ; WX 500 ; N three ; B 16 -14 468 688 ; -C 52 ; WX 500 ; N four ; B 19 0 475 688 ; -C 53 ; WX 500 ; N five ; B 22 -8 470 676 ; -C 54 ; WX 500 ; N six ; B 28 -13 475 688 ; -C 55 ; WX 500 ; N seven ; B 17 0 477 676 ; -C 56 ; WX 500 ; N eight ; B 28 -13 472 688 ; -C 57 ; WX 500 ; N nine ; B 26 -13 473 688 ; -C 58 ; WX 333 ; N colon ; B 82 -13 251 472 ; -C 59 ; WX 333 ; N semicolon ; B 82 -180 266 472 ; -C 60 ; WX 570 ; N less ; B 31 -8 539 514 ; -C 61 ; WX 570 ; N equal ; B 33 107 537 399 ; -C 62 ; WX 570 ; N greater ; B 31 -8 539 514 ; -C 63 ; WX 500 ; N question ; B 57 -13 445 689 ; -C 64 ; WX 930 ; N at ; B 108 -19 822 691 ; -C 65 ; WX 722 ; N A ; B 9 0 689 690 ; -C 66 ; WX 667 ; N B ; B 16 0 619 676 ; -C 67 ; WX 722 ; N C ; B 49 -19 687 691 ; -C 68 ; WX 722 ; N D ; B 14 0 690 676 ; -C 69 ; WX 667 ; N E ; B 16 0 641 676 ; -C 70 ; WX 611 ; N F ; B 16 0 583 676 ; -C 71 ; WX 778 ; N G ; B 37 -19 755 691 ; -C 72 ; WX 778 ; N H ; B 21 0 759 676 ; -C 73 ; WX 389 ; N I ; B 20 0 370 676 ; -C 74 ; WX 500 ; N J ; B 3 -96 479 676 ; -C 75 ; WX 778 ; N K ; B 30 0 769 676 ; -C 76 ; WX 667 ; N L ; B 19 0 638 676 ; -C 77 ; WX 944 ; N M ; B 14 0 921 676 ; -C 78 ; WX 722 ; N N ; B 16 -18 701 676 ; -C 79 ; WX 778 ; N O ; B 35 -19 743 691 ; -C 80 ; WX 611 ; N P ; B 16 0 600 676 ; -C 81 ; WX 778 ; N Q ; B 35 -176 743 691 ; -C 82 ; WX 722 ; N R ; B 26 0 715 676 ; -C 83 ; WX 556 ; N S ; B 35 -19 513 692 ; -C 84 ; WX 667 ; N T ; B 31 0 636 676 ; -C 85 ; WX 722 ; N U ; B 16 -19 701 676 ; -C 86 ; WX 722 ; N V ; B 16 -18 701 676 ; -C 87 ; WX 1000 ; N W ; B 19 -15 981 676 ; -C 88 ; WX 722 ; N X ; B 16 0 699 676 ; -C 89 ; WX 722 ; N Y ; B 15 0 699 676 ; -C 90 ; WX 667 ; N Z ; B 28 0 634 676 ; -C 91 ; WX 333 ; N bracketleft ; B 67 -149 301 678 ; -C 92 ; WX 278 ; N backslash ; B -25 -19 303 691 ; -C 93 ; WX 333 ; N bracketright ; B 32 -149 266 678 ; -C 94 ; WX 581 ; N asciicircum ; B 73 311 509 676 ; -C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; -C 145 ; WX 333 ; N quoteleft ; B 70 356 254 691 ; -C 97 ; WX 500 ; N a ; B 25 -14 488 473 ; -C 98 ; WX 556 ; N b ; B 17 -14 521 676 ; -C 99 ; WX 444 ; N c ; B 25 -14 430 473 ; -C 100 ; WX 556 ; N d ; B 25 -14 534 676 ; -C 101 ; WX 444 ; N e ; B 25 -14 426 473 ; -C 102 ; WX 333 ; N f ; B 14 0 389 691 ; L i fi ; L l fl ; -C 103 ; WX 500 ; N g ; B 28 -206 483 473 ; -C 104 ; WX 556 ; N h ; B 16 0 534 676 ; -C 105 ; WX 278 ; N i ; B 16 0 255 691 ; -C 106 ; WX 333 ; N j ; B -57 -203 263 691 ; -C 107 ; WX 556 ; N k ; B 22 0 543 676 ; -C 108 ; WX 278 ; N l ; B 16 0 255 676 ; -C 109 ; WX 833 ; N m ; B 16 0 814 473 ; -C 110 ; WX 556 ; N n ; B 21 0 539 473 ; -C 111 ; WX 500 ; N o ; B 25 -14 476 473 ; -C 112 ; WX 556 ; N p ; B 19 -205 524 473 ; -C 113 ; WX 556 ; N q ; B 34 -205 536 473 ; -C 114 ; WX 444 ; N r ; B 29 0 434 473 ; -C 115 ; WX 389 ; N s ; B 25 -14 361 473 ; -C 116 ; WX 333 ; N t ; B 20 -12 332 630 ; -C 117 ; WX 556 ; N u ; B 16 -14 537 461 ; -C 118 ; WX 500 ; N v ; B 21 -14 485 461 ; -C 119 ; WX 722 ; N w ; B 23 -14 707 461 ; -C 120 ; WX 500 ; N x ; B 12 0 484 461 ; -C 121 ; WX 500 ; N y ; B 16 -205 480 461 ; -C 122 ; WX 444 ; N z ; B 21 0 420 461 ; -C 123 ; WX 394 ; N braceleft ; B 22 -175 340 698 ; -C 124 ; WX 220 ; N bar ; B 66 -218 154 782 ; -C 125 ; WX 394 ; N braceright ; B 54 -175 372 698 ; -C 126 ; WX 520 ; N asciitilde ; B 29 173 491 333 ; -C 161 ; WX 333 ; N exclamdown ; B 82 -203 252 501 ; -C 162 ; WX 500 ; N cent ; B 53 -140 458 588 ; -C 163 ; WX 500 ; N sterling ; B 21 -14 477 684 ; -C -1 ; WX 167 ; N fraction ; B -168 -12 329 688 ; -C 165 ; WX 500 ; N yen ; B -64 0 547 676 ; -C 131 ; WX 500 ; N florin ; B 0 -155 498 706 ; -C 167 ; WX 500 ; N section ; B 57 -132 443 691 ; -C 164 ; WX 500 ; N currency ; B -26 61 526 613 ; -C 39 ; WX 278 ; N quotesingle ; B 75 404 204 691 ; -C 147 ; WX 500 ; N quotedblleft ; B 32 356 486 691 ; -C 170 ; WX 500 ; N guillemotleft ; B 23 36 473 415 ; -C 139 ; WX 333 ; N guilsinglleft ; B 51 36 305 415 ; -C 155 ; WX 333 ; N guilsinglright ; B 28 36 282 415 ; -C -1 ; WX 556 ; N fi ; B 14 0 536 691 ; -C -1 ; WX 556 ; N fl ; B 14 0 536 691 ; -C 150 ; WX 500 ; N endash ; B 0 181 500 271 ; -C 134 ; WX 500 ; N dagger ; B 47 -134 453 691 ; -C 135 ; WX 500 ; N daggerdbl ; B 45 -132 456 691 ; -C 183 ; WX 250 ; N periodcentered ; B 41 248 210 417 ; -C 182 ; WX 540 ; N paragraph ; B 0 -186 519 676 ; -C 149 ; WX 350 ; N bullet ; B 35 198 315 478 ; -C 130 ; WX 333 ; N quotesinglbase ; B 79 -180 263 155 ; -C 132 ; WX 500 ; N quotedblbase ; B 14 -180 468 155 ; -C 148 ; WX 500 ; N quotedblright ; B 14 356 468 691 ; -C 187 ; WX 500 ; N guillemotright ; B 27 36 477 415 ; -C 133 ; WX 1000 ; N ellipsis ; B 82 -13 917 156 ; -C 137 ; WX 1000 ; N perthousand ; B 7 -29 995 706 ; -C 191 ; WX 500 ; N questiondown ; B 55 -201 443 501 ; -C 96 ; WX 333 ; N grave ; B 8 528 246 713 ; -C 180 ; WX 333 ; N acute ; B 86 528 324 713 ; -C 136 ; WX 333 ; N circumflex ; B -2 528 335 704 ; -C 152 ; WX 333 ; N tilde ; B -16 547 349 674 ; -C 175 ; WX 333 ; N macron ; B 1 565 331 637 ; -C -1 ; WX 333 ; N breve ; B 15 528 318 691 ; -C -1 ; WX 333 ; N dotaccent ; B 103 536 258 691 ; -C 168 ; WX 333 ; N dieresis ; B -2 537 335 667 ; -C -1 ; WX 333 ; N ring ; B 60 527 273 740 ; -C 184 ; WX 333 ; N cedilla ; B 68 -218 294 0 ; -C -1 ; WX 333 ; N hungarumlaut ; B -13 528 425 713 ; -C -1 ; WX 333 ; N ogonek ; B 90 -193 319 24 ; -C -1 ; WX 333 ; N caron ; B -2 528 335 704 ; -C 151 ; WX 1000 ; N emdash ; B 0 181 1000 271 ; -C 198 ; WX 1000 ; N AE ; B 4 0 951 676 ; -C 170 ; WX 300 ; N ordfeminine ; B -1 397 301 688 ; -C -1 ; WX 667 ; N Lslash ; B 19 0 638 676 ; -C 216 ; WX 778 ; N Oslash ; B 35 -74 743 737 ; -C 140 ; WX 1000 ; N OE ; B 22 -5 981 684 ; -C 186 ; WX 330 ; N ordmasculine ; B 18 397 312 688 ; -C 230 ; WX 722 ; N ae ; B 33 -14 693 473 ; -C -1 ; WX 278 ; N dotlessi ; B 16 0 255 461 ; -C -1 ; WX 278 ; N lslash ; B -22 0 303 676 ; -C 248 ; WX 500 ; N oslash ; B 25 -92 476 549 ; -C 156 ; WX 722 ; N oe ; B 22 -14 696 473 ; -C 223 ; WX 556 ; N germandbls ; B 19 -12 517 691 ; -C 207 ; WX 389 ; N Idieresis ; B 20 0 370 877 ; -C 233 ; WX 444 ; N eacute ; B 25 -14 426 713 ; -C -1 ; WX 500 ; N abreve ; B 25 -14 488 691 ; -C -1 ; WX 556 ; N uhungarumlaut ; B 16 -14 557 713 ; -C -1 ; WX 444 ; N ecaron ; B 25 -14 426 704 ; -C 159 ; WX 722 ; N Ydieresis ; B 15 0 699 877 ; -C 247 ; WX 570 ; N divide ; B 33 -31 537 537 ; -C 221 ; WX 722 ; N Yacute ; B 15 0 699 923 ; -C 194 ; WX 722 ; N Acircumflex ; B 9 0 689 914 ; -C 225 ; WX 500 ; N aacute ; B 25 -14 488 713 ; -C 219 ; WX 722 ; N Ucircumflex ; B 16 -19 701 914 ; -C 253 ; WX 500 ; N yacute ; B 16 -205 480 713 ; -C -1 ; WX 389 ; N scommaaccent ; B 25 -218 361 473 ; -C 234 ; WX 444 ; N ecircumflex ; B 25 -14 426 704 ; -C -1 ; WX 722 ; N Uring ; B 16 -19 701 935 ; -C 220 ; WX 722 ; N Udieresis ; B 16 -19 701 877 ; -C -1 ; WX 500 ; N aogonek ; B 25 -193 504 473 ; -C 218 ; WX 722 ; N Uacute ; B 16 -19 701 923 ; -C -1 ; WX 556 ; N uogonek ; B 16 -193 539 461 ; -C 203 ; WX 667 ; N Edieresis ; B 16 0 641 877 ; -C -1 ; WX 722 ; N Dcroat ; B 6 0 690 676 ; -C -1 ; WX 250 ; N commaaccent ; B 47 -218 203 -50 ; -C 169 ; WX 747 ; N copyright ; B 26 -19 721 691 ; -C -1 ; WX 667 ; N Emacron ; B 16 0 641 847 ; -C -1 ; WX 444 ; N ccaron ; B 25 -14 430 704 ; -C 229 ; WX 500 ; N aring ; B 25 -14 488 740 ; -C -1 ; WX 722 ; N Ncommaaccent ; B 16 -188 701 676 ; -C -1 ; WX 278 ; N lacute ; B 16 0 297 923 ; -C 224 ; WX 500 ; N agrave ; B 25 -14 488 713 ; -C -1 ; WX 667 ; N Tcommaaccent ; B 31 -218 636 676 ; -C -1 ; WX 722 ; N Cacute ; B 49 -19 687 923 ; -C 227 ; WX 500 ; N atilde ; B 25 -14 488 674 ; -C -1 ; WX 667 ; N Edotaccent ; B 16 0 641 901 ; -C 154 ; WX 389 ; N scaron ; B 25 -14 363 704 ; -C -1 ; WX 389 ; N scedilla ; B 25 -218 361 473 ; -C 237 ; WX 278 ; N iacute ; B 16 0 289 713 ; -C -1 ; WX 494 ; N lozenge ; B 10 0 484 745 ; -C -1 ; WX 722 ; N Rcaron ; B 26 0 715 914 ; -C -1 ; WX 778 ; N Gcommaaccent ; B 37 -218 755 691 ; -C 251 ; WX 556 ; N ucircumflex ; B 16 -14 537 704 ; -C 226 ; WX 500 ; N acircumflex ; B 25 -14 488 704 ; -C -1 ; WX 722 ; N Amacron ; B 9 0 689 847 ; -C -1 ; WX 444 ; N rcaron ; B 29 0 434 704 ; -C 231 ; WX 444 ; N ccedilla ; B 25 -218 430 473 ; -C -1 ; WX 667 ; N Zdotaccent ; B 28 0 634 901 ; -C 222 ; WX 611 ; N Thorn ; B 16 0 600 676 ; -C -1 ; WX 778 ; N Omacron ; B 35 -19 743 847 ; -C -1 ; WX 722 ; N Racute ; B 26 0 715 923 ; -C -1 ; WX 556 ; N Sacute ; B 35 -19 513 923 ; -C -1 ; WX 672 ; N dcaron ; B 25 -14 681 682 ; -C -1 ; WX 722 ; N Umacron ; B 16 -19 701 847 ; -C -1 ; WX 556 ; N uring ; B 16 -14 537 740 ; -C 179 ; WX 300 ; N threesuperior ; B 3 268 297 688 ; -C 210 ; WX 778 ; N Ograve ; B 35 -19 743 923 ; -C 192 ; WX 722 ; N Agrave ; B 9 0 689 923 ; -C -1 ; WX 722 ; N Abreve ; B 9 0 689 901 ; -C 215 ; WX 570 ; N multiply ; B 48 16 522 490 ; -C 250 ; WX 556 ; N uacute ; B 16 -14 537 713 ; -C -1 ; WX 667 ; N Tcaron ; B 31 0 636 914 ; -C -1 ; WX 494 ; N partialdiff ; B 11 -21 494 750 ; -C 255 ; WX 500 ; N ydieresis ; B 16 -205 480 667 ; -C -1 ; WX 722 ; N Nacute ; B 16 -18 701 923 ; -C 238 ; WX 278 ; N icircumflex ; B -37 0 300 704 ; -C 202 ; WX 667 ; N Ecircumflex ; B 16 0 641 914 ; -C 228 ; WX 500 ; N adieresis ; B 25 -14 488 667 ; -C 235 ; WX 444 ; N edieresis ; B 25 -14 426 667 ; -C -1 ; WX 444 ; N cacute ; B 25 -14 430 713 ; -C -1 ; WX 556 ; N nacute ; B 21 0 539 713 ; -C -1 ; WX 556 ; N umacron ; B 16 -14 537 637 ; -C -1 ; WX 722 ; N Ncaron ; B 16 -18 701 914 ; -C 205 ; WX 389 ; N Iacute ; B 20 0 370 923 ; -C 177 ; WX 570 ; N plusminus ; B 33 0 537 506 ; -C 166 ; WX 220 ; N brokenbar ; B 66 -143 154 707 ; -C 174 ; WX 747 ; N registered ; B 26 -19 721 691 ; -C -1 ; WX 778 ; N Gbreve ; B 37 -19 755 901 ; -C -1 ; WX 389 ; N Idotaccent ; B 20 0 370 901 ; -C -1 ; WX 600 ; N summation ; B 14 -10 585 706 ; -C 200 ; WX 667 ; N Egrave ; B 16 0 641 923 ; -C -1 ; WX 444 ; N racute ; B 29 0 434 713 ; -C -1 ; WX 500 ; N omacron ; B 25 -14 476 637 ; -C -1 ; WX 667 ; N Zacute ; B 28 0 634 923 ; -C 142 ; WX 667 ; N Zcaron ; B 28 0 634 914 ; -C -1 ; WX 549 ; N greaterequal ; B 26 0 523 704 ; -C 208 ; WX 722 ; N Eth ; B 6 0 690 676 ; -C 199 ; WX 722 ; N Ccedilla ; B 49 -218 687 691 ; -C -1 ; WX 278 ; N lcommaaccent ; B 16 -218 255 676 ; -C -1 ; WX 416 ; N tcaron ; B 20 -12 425 815 ; -C -1 ; WX 444 ; N eogonek ; B 25 -193 426 473 ; -C -1 ; WX 722 ; N Uogonek ; B 16 -193 701 676 ; -C 193 ; WX 722 ; N Aacute ; B 9 0 689 923 ; -C 196 ; WX 722 ; N Adieresis ; B 9 0 689 877 ; -C 232 ; WX 444 ; N egrave ; B 25 -14 426 713 ; -C -1 ; WX 444 ; N zacute ; B 21 0 420 713 ; -C -1 ; WX 278 ; N iogonek ; B 16 -193 274 691 ; -C 211 ; WX 778 ; N Oacute ; B 35 -19 743 923 ; -C 243 ; WX 500 ; N oacute ; B 25 -14 476 713 ; -C -1 ; WX 500 ; N amacron ; B 25 -14 488 637 ; -C -1 ; WX 389 ; N sacute ; B 25 -14 361 713 ; -C 239 ; WX 278 ; N idieresis ; B -37 0 300 667 ; -C 212 ; WX 778 ; N Ocircumflex ; B 35 -19 743 914 ; -C 217 ; WX 722 ; N Ugrave ; B 16 -19 701 923 ; -C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; -C 254 ; WX 556 ; N thorn ; B 19 -205 524 676 ; -C 178 ; WX 300 ; N twosuperior ; B 0 275 300 688 ; -C 214 ; WX 778 ; N Odieresis ; B 35 -19 743 877 ; -C 181 ; WX 556 ; N mu ; B 33 -206 536 461 ; -C 236 ; WX 278 ; N igrave ; B -27 0 255 713 ; -C -1 ; WX 500 ; N ohungarumlaut ; B 25 -14 529 713 ; -C -1 ; WX 667 ; N Eogonek ; B 16 -193 644 676 ; -C -1 ; WX 556 ; N dcroat ; B 25 -14 534 676 ; -C 190 ; WX 750 ; N threequarters ; B 23 -12 733 688 ; -C -1 ; WX 556 ; N Scedilla ; B 35 -218 513 692 ; -C -1 ; WX 394 ; N lcaron ; B 16 0 412 682 ; -C -1 ; WX 778 ; N Kcommaaccent ; B 30 -218 769 676 ; -C -1 ; WX 667 ; N Lacute ; B 19 0 638 923 ; -C 153 ; WX 1000 ; N trademark ; B 24 271 977 676 ; -C -1 ; WX 444 ; N edotaccent ; B 25 -14 426 691 ; -C 204 ; WX 389 ; N Igrave ; B 20 0 370 923 ; -C -1 ; WX 389 ; N Imacron ; B 20 0 370 847 ; -C -1 ; WX 667 ; N Lcaron ; B 19 0 652 682 ; -C 189 ; WX 750 ; N onehalf ; B -7 -12 775 688 ; -C -1 ; WX 549 ; N lessequal ; B 29 0 526 704 ; -C 244 ; WX 500 ; N ocircumflex ; B 25 -14 476 704 ; -C 241 ; WX 556 ; N ntilde ; B 21 0 539 674 ; -C -1 ; WX 722 ; N Uhungarumlaut ; B 16 -19 701 923 ; -C 201 ; WX 667 ; N Eacute ; B 16 0 641 923 ; -C -1 ; WX 444 ; N emacron ; B 25 -14 426 637 ; -C -1 ; WX 500 ; N gbreve ; B 28 -206 483 691 ; -C 188 ; WX 750 ; N onequarter ; B 28 -12 743 688 ; -C 138 ; WX 556 ; N Scaron ; B 35 -19 513 914 ; -C -1 ; WX 556 ; N Scommaaccent ; B 35 -218 513 692 ; -C -1 ; WX 778 ; N Ohungarumlaut ; B 35 -19 743 923 ; -C 176 ; WX 400 ; N degree ; B 57 402 343 688 ; -C 242 ; WX 500 ; N ograve ; B 25 -14 476 713 ; -C -1 ; WX 722 ; N Ccaron ; B 49 -19 687 914 ; -C 249 ; WX 556 ; N ugrave ; B 16 -14 537 713 ; -C -1 ; WX 549 ; N radical ; B 10 -46 512 850 ; -C -1 ; WX 722 ; N Dcaron ; B 14 0 690 914 ; -C -1 ; WX 444 ; N rcommaaccent ; B 29 -218 434 473 ; -C 209 ; WX 722 ; N Ntilde ; B 16 -18 701 884 ; -C 245 ; WX 500 ; N otilde ; B 25 -14 476 674 ; -C -1 ; WX 722 ; N Rcommaaccent ; B 26 -218 715 676 ; -C -1 ; WX 667 ; N Lcommaaccent ; B 19 -218 638 676 ; -C 195 ; WX 722 ; N Atilde ; B 9 0 689 884 ; -C -1 ; WX 722 ; N Aogonek ; B 9 -193 699 690 ; -C 197 ; WX 722 ; N Aring ; B 9 0 689 935 ; -C 213 ; WX 778 ; N Otilde ; B 35 -19 743 884 ; -C -1 ; WX 444 ; N zdotaccent ; B 21 0 420 691 ; -C -1 ; WX 667 ; N Ecaron ; B 16 0 641 914 ; -C -1 ; WX 389 ; N Iogonek ; B 20 -193 370 676 ; -C -1 ; WX 556 ; N kcommaaccent ; B 22 -218 543 676 ; -C -1 ; WX 570 ; N minus ; B 33 209 537 297 ; -C 206 ; WX 389 ; N Icircumflex ; B 20 0 370 914 ; -C -1 ; WX 556 ; N ncaron ; B 21 0 539 704 ; -C -1 ; WX 333 ; N tcommaaccent ; B 20 -218 332 630 ; -C 172 ; WX 570 ; N logicalnot ; B 33 108 537 399 ; -C 246 ; WX 500 ; N odieresis ; B 25 -14 476 667 ; -C 252 ; WX 556 ; N udieresis ; B 16 -14 537 667 ; -C -1 ; WX 549 ; N notequal ; B 15 -49 540 570 ; -C -1 ; WX 500 ; N gcommaaccent ; B 28 -206 483 829 ; -C 240 ; WX 500 ; N eth ; B 25 -14 476 691 ; -C 158 ; WX 444 ; N zcaron ; B 21 0 420 704 ; -C -1 ; WX 556 ; N ncommaaccent ; B 21 -218 539 473 ; -C 185 ; WX 300 ; N onesuperior ; B 28 275 273 688 ; -C -1 ; WX 278 ; N imacron ; B -8 0 272 637 ; -C 128 ; WX 500 ; N Euro ; B 0 0 0 0 ; -EndCharMetrics -StartKernData -StartKernPairs 2242 -KPX A C -55 -KPX A Cacute -55 -KPX A Ccaron -55 -KPX A Ccedilla -55 -KPX A G -55 -KPX A Gbreve -55 -KPX A Gcommaaccent -55 -KPX A O -45 -KPX A Oacute -45 -KPX A Ocircumflex -45 -KPX A Odieresis -45 -KPX A Ograve -45 -KPX A Ohungarumlaut -45 -KPX A Omacron -45 -KPX A Oslash -45 -KPX A Otilde -45 -KPX A Q -45 -KPX A T -95 -KPX A Tcaron -95 -KPX A Tcommaaccent -95 -KPX A U -50 -KPX A Uacute -50 -KPX A Ucircumflex -50 -KPX A Udieresis -50 -KPX A Ugrave -50 -KPX A Uhungarumlaut -50 -KPX A Umacron -50 -KPX A Uogonek -50 -KPX A Uring -50 -KPX A V -145 -KPX A W -130 -KPX A Y -100 -KPX A Yacute -100 -KPX A Ydieresis -100 -KPX A p -25 -KPX A quoteright -74 -KPX A u -50 -KPX A uacute -50 -KPX A ucircumflex -50 -KPX A udieresis -50 -KPX A ugrave -50 -KPX A uhungarumlaut -50 -KPX A umacron -50 -KPX A uogonek -50 -KPX A uring -50 -KPX A v -100 -KPX A w -90 -KPX A y -74 -KPX A yacute -74 -KPX A ydieresis -74 -KPX Aacute C -55 -KPX Aacute Cacute -55 -KPX Aacute Ccaron -55 -KPX Aacute Ccedilla -55 -KPX Aacute G -55 -KPX Aacute Gbreve -55 -KPX Aacute Gcommaaccent -55 -KPX Aacute O -45 -KPX Aacute Oacute -45 -KPX Aacute Ocircumflex -45 -KPX Aacute Odieresis -45 -KPX Aacute Ograve -45 -KPX Aacute Ohungarumlaut -45 -KPX Aacute Omacron -45 -KPX Aacute Oslash -45 -KPX Aacute Otilde -45 -KPX Aacute Q -45 -KPX Aacute T -95 -KPX Aacute Tcaron -95 -KPX Aacute Tcommaaccent -95 -KPX Aacute U -50 -KPX Aacute Uacute -50 -KPX Aacute Ucircumflex -50 -KPX Aacute Udieresis -50 -KPX Aacute Ugrave -50 -KPX Aacute Uhungarumlaut -50 -KPX Aacute Umacron -50 -KPX Aacute Uogonek -50 -KPX Aacute Uring -50 -KPX Aacute V -145 -KPX Aacute W -130 -KPX Aacute Y -100 -KPX Aacute Yacute -100 -KPX Aacute Ydieresis -100 -KPX Aacute p -25 -KPX Aacute quoteright -74 -KPX Aacute u -50 -KPX Aacute uacute -50 -KPX Aacute ucircumflex -50 -KPX Aacute udieresis -50 -KPX Aacute ugrave -50 -KPX Aacute uhungarumlaut -50 -KPX Aacute umacron -50 -KPX Aacute uogonek -50 -KPX Aacute uring -50 -KPX Aacute v -100 -KPX Aacute w -90 -KPX Aacute y -74 -KPX Aacute yacute -74 -KPX Aacute ydieresis -74 -KPX Abreve C -55 -KPX Abreve Cacute -55 -KPX Abreve Ccaron -55 -KPX Abreve Ccedilla -55 -KPX Abreve G -55 -KPX Abreve Gbreve -55 -KPX Abreve Gcommaaccent -55 -KPX Abreve O -45 -KPX Abreve Oacute -45 -KPX Abreve Ocircumflex -45 -KPX Abreve Odieresis -45 -KPX Abreve Ograve -45 -KPX Abreve Ohungarumlaut -45 -KPX Abreve Omacron -45 -KPX Abreve Oslash -45 -KPX Abreve Otilde -45 -KPX Abreve Q -45 -KPX Abreve T -95 -KPX Abreve Tcaron -95 -KPX Abreve Tcommaaccent -95 -KPX Abreve U -50 -KPX Abreve Uacute -50 -KPX Abreve Ucircumflex -50 -KPX Abreve Udieresis -50 -KPX Abreve Ugrave -50 -KPX Abreve Uhungarumlaut -50 -KPX Abreve Umacron -50 -KPX Abreve Uogonek -50 -KPX Abreve Uring -50 -KPX Abreve V -145 -KPX Abreve W -130 -KPX Abreve Y -100 -KPX Abreve Yacute -100 -KPX Abreve Ydieresis -100 -KPX Abreve p -25 -KPX Abreve quoteright -74 -KPX Abreve u -50 -KPX Abreve uacute -50 -KPX Abreve ucircumflex -50 -KPX Abreve udieresis -50 -KPX Abreve ugrave -50 -KPX Abreve uhungarumlaut -50 -KPX Abreve umacron -50 -KPX Abreve uogonek -50 -KPX Abreve uring -50 -KPX Abreve v -100 -KPX Abreve w -90 -KPX Abreve y -74 -KPX Abreve yacute -74 -KPX Abreve ydieresis -74 -KPX Acircumflex C -55 -KPX Acircumflex Cacute -55 -KPX Acircumflex Ccaron -55 -KPX Acircumflex Ccedilla -55 -KPX Acircumflex G -55 -KPX Acircumflex Gbreve -55 -KPX Acircumflex Gcommaaccent -55 -KPX Acircumflex O -45 -KPX Acircumflex Oacute -45 -KPX Acircumflex Ocircumflex -45 -KPX Acircumflex Odieresis -45 -KPX Acircumflex Ograve -45 -KPX Acircumflex Ohungarumlaut -45 -KPX Acircumflex Omacron -45 -KPX Acircumflex Oslash -45 -KPX Acircumflex Otilde -45 -KPX Acircumflex Q -45 -KPX Acircumflex T -95 -KPX Acircumflex Tcaron -95 -KPX Acircumflex Tcommaaccent -95 -KPX Acircumflex U -50 -KPX Acircumflex Uacute -50 -KPX Acircumflex Ucircumflex -50 -KPX Acircumflex Udieresis -50 -KPX Acircumflex Ugrave -50 -KPX Acircumflex Uhungarumlaut -50 -KPX Acircumflex Umacron -50 -KPX Acircumflex Uogonek -50 -KPX Acircumflex Uring -50 -KPX Acircumflex V -145 -KPX Acircumflex W -130 -KPX Acircumflex Y -100 -KPX Acircumflex Yacute -100 -KPX Acircumflex Ydieresis -100 -KPX Acircumflex p -25 -KPX Acircumflex quoteright -74 -KPX Acircumflex u -50 -KPX Acircumflex uacute -50 -KPX Acircumflex ucircumflex -50 -KPX Acircumflex udieresis -50 -KPX Acircumflex ugrave -50 -KPX Acircumflex uhungarumlaut -50 -KPX Acircumflex umacron -50 -KPX Acircumflex uogonek -50 -KPX Acircumflex uring -50 -KPX Acircumflex v -100 -KPX Acircumflex w -90 -KPX Acircumflex y -74 -KPX Acircumflex yacute -74 -KPX Acircumflex ydieresis -74 -KPX Adieresis C -55 -KPX Adieresis Cacute -55 -KPX Adieresis Ccaron -55 -KPX Adieresis Ccedilla -55 -KPX Adieresis G -55 -KPX Adieresis Gbreve -55 -KPX Adieresis Gcommaaccent -55 -KPX Adieresis O -45 -KPX Adieresis Oacute -45 -KPX Adieresis Ocircumflex -45 -KPX Adieresis Odieresis -45 -KPX Adieresis Ograve -45 -KPX Adieresis Ohungarumlaut -45 -KPX Adieresis Omacron -45 -KPX Adieresis Oslash -45 -KPX Adieresis Otilde -45 -KPX Adieresis Q -45 -KPX Adieresis T -95 -KPX Adieresis Tcaron -95 -KPX Adieresis Tcommaaccent -95 -KPX Adieresis U -50 -KPX Adieresis Uacute -50 -KPX Adieresis Ucircumflex -50 -KPX Adieresis Udieresis -50 -KPX Adieresis Ugrave -50 -KPX Adieresis Uhungarumlaut -50 -KPX Adieresis Umacron -50 -KPX Adieresis Uogonek -50 -KPX Adieresis Uring -50 -KPX Adieresis V -145 -KPX Adieresis W -130 -KPX Adieresis Y -100 -KPX Adieresis Yacute -100 -KPX Adieresis Ydieresis -100 -KPX Adieresis p -25 -KPX Adieresis quoteright -74 -KPX Adieresis u -50 -KPX Adieresis uacute -50 -KPX Adieresis ucircumflex -50 -KPX Adieresis udieresis -50 -KPX Adieresis ugrave -50 -KPX Adieresis uhungarumlaut -50 -KPX Adieresis umacron -50 -KPX Adieresis uogonek -50 -KPX Adieresis uring -50 -KPX Adieresis v -100 -KPX Adieresis w -90 -KPX Adieresis y -74 -KPX Adieresis yacute -74 -KPX Adieresis ydieresis -74 -KPX Agrave C -55 -KPX Agrave Cacute -55 -KPX Agrave Ccaron -55 -KPX Agrave Ccedilla -55 -KPX Agrave G -55 -KPX Agrave Gbreve -55 -KPX Agrave Gcommaaccent -55 -KPX Agrave O -45 -KPX Agrave Oacute -45 -KPX Agrave Ocircumflex -45 -KPX Agrave Odieresis -45 -KPX Agrave Ograve -45 -KPX Agrave Ohungarumlaut -45 -KPX Agrave Omacron -45 -KPX Agrave Oslash -45 -KPX Agrave Otilde -45 -KPX Agrave Q -45 -KPX Agrave T -95 -KPX Agrave Tcaron -95 -KPX Agrave Tcommaaccent -95 -KPX Agrave U -50 -KPX Agrave Uacute -50 -KPX Agrave Ucircumflex -50 -KPX Agrave Udieresis -50 -KPX Agrave Ugrave -50 -KPX Agrave Uhungarumlaut -50 -KPX Agrave Umacron -50 -KPX Agrave Uogonek -50 -KPX Agrave Uring -50 -KPX Agrave V -145 -KPX Agrave W -130 -KPX Agrave Y -100 -KPX Agrave Yacute -100 -KPX Agrave Ydieresis -100 -KPX Agrave p -25 -KPX Agrave quoteright -74 -KPX Agrave u -50 -KPX Agrave uacute -50 -KPX Agrave ucircumflex -50 -KPX Agrave udieresis -50 -KPX Agrave ugrave -50 -KPX Agrave uhungarumlaut -50 -KPX Agrave umacron -50 -KPX Agrave uogonek -50 -KPX Agrave uring -50 -KPX Agrave v -100 -KPX Agrave w -90 -KPX Agrave y -74 -KPX Agrave yacute -74 -KPX Agrave ydieresis -74 -KPX Amacron C -55 -KPX Amacron Cacute -55 -KPX Amacron Ccaron -55 -KPX Amacron Ccedilla -55 -KPX Amacron G -55 -KPX Amacron Gbreve -55 -KPX Amacron Gcommaaccent -55 -KPX Amacron O -45 -KPX Amacron Oacute -45 -KPX Amacron Ocircumflex -45 -KPX Amacron Odieresis -45 -KPX Amacron Ograve -45 -KPX Amacron Ohungarumlaut -45 -KPX Amacron Omacron -45 -KPX Amacron Oslash -45 -KPX Amacron Otilde -45 -KPX Amacron Q -45 -KPX Amacron T -95 -KPX Amacron Tcaron -95 -KPX Amacron Tcommaaccent -95 -KPX Amacron U -50 -KPX Amacron Uacute -50 -KPX Amacron Ucircumflex -50 -KPX Amacron Udieresis -50 -KPX Amacron Ugrave -50 -KPX Amacron Uhungarumlaut -50 -KPX Amacron Umacron -50 -KPX Amacron Uogonek -50 -KPX Amacron Uring -50 -KPX Amacron V -145 -KPX Amacron W -130 -KPX Amacron Y -100 -KPX Amacron Yacute -100 -KPX Amacron Ydieresis -100 -KPX Amacron p -25 -KPX Amacron quoteright -74 -KPX Amacron u -50 -KPX Amacron uacute -50 -KPX Amacron ucircumflex -50 -KPX Amacron udieresis -50 -KPX Amacron ugrave -50 -KPX Amacron uhungarumlaut -50 -KPX Amacron umacron -50 -KPX Amacron uogonek -50 -KPX Amacron uring -50 -KPX Amacron v -100 -KPX Amacron w -90 -KPX Amacron y -74 -KPX Amacron yacute -74 -KPX Amacron ydieresis -74 -KPX Aogonek C -55 -KPX Aogonek Cacute -55 -KPX Aogonek Ccaron -55 -KPX Aogonek Ccedilla -55 -KPX Aogonek G -55 -KPX Aogonek Gbreve -55 -KPX Aogonek Gcommaaccent -55 -KPX Aogonek O -45 -KPX Aogonek Oacute -45 -KPX Aogonek Ocircumflex -45 -KPX Aogonek Odieresis -45 -KPX Aogonek Ograve -45 -KPX Aogonek Ohungarumlaut -45 -KPX Aogonek Omacron -45 -KPX Aogonek Oslash -45 -KPX Aogonek Otilde -45 -KPX Aogonek Q -45 -KPX Aogonek T -95 -KPX Aogonek Tcaron -95 -KPX Aogonek Tcommaaccent -95 -KPX Aogonek U -50 -KPX Aogonek Uacute -50 -KPX Aogonek Ucircumflex -50 -KPX Aogonek Udieresis -50 -KPX Aogonek Ugrave -50 -KPX Aogonek Uhungarumlaut -50 -KPX Aogonek Umacron -50 -KPX Aogonek Uogonek -50 -KPX Aogonek Uring -50 -KPX Aogonek V -145 -KPX Aogonek W -130 -KPX Aogonek Y -100 -KPX Aogonek Yacute -100 -KPX Aogonek Ydieresis -100 -KPX Aogonek p -25 -KPX Aogonek quoteright -74 -KPX Aogonek u -50 -KPX Aogonek uacute -50 -KPX Aogonek ucircumflex -50 -KPX Aogonek udieresis -50 -KPX Aogonek ugrave -50 -KPX Aogonek uhungarumlaut -50 -KPX Aogonek umacron -50 -KPX Aogonek uogonek -50 -KPX Aogonek uring -50 -KPX Aogonek v -100 -KPX Aogonek w -90 -KPX Aogonek y -34 -KPX Aogonek yacute -34 -KPX Aogonek ydieresis -34 -KPX Aring C -55 -KPX Aring Cacute -55 -KPX Aring Ccaron -55 -KPX Aring Ccedilla -55 -KPX Aring G -55 -KPX Aring Gbreve -55 -KPX Aring Gcommaaccent -55 -KPX Aring O -45 -KPX Aring Oacute -45 -KPX Aring Ocircumflex -45 -KPX Aring Odieresis -45 -KPX Aring Ograve -45 -KPX Aring Ohungarumlaut -45 -KPX Aring Omacron -45 -KPX Aring Oslash -45 -KPX Aring Otilde -45 -KPX Aring Q -45 -KPX Aring T -95 -KPX Aring Tcaron -95 -KPX Aring Tcommaaccent -95 -KPX Aring U -50 -KPX Aring Uacute -50 -KPX Aring Ucircumflex -50 -KPX Aring Udieresis -50 -KPX Aring Ugrave -50 -KPX Aring Uhungarumlaut -50 -KPX Aring Umacron -50 -KPX Aring Uogonek -50 -KPX Aring Uring -50 -KPX Aring V -145 -KPX Aring W -130 -KPX Aring Y -100 -KPX Aring Yacute -100 -KPX Aring Ydieresis -100 -KPX Aring p -25 -KPX Aring quoteright -74 -KPX Aring u -50 -KPX Aring uacute -50 -KPX Aring ucircumflex -50 -KPX Aring udieresis -50 -KPX Aring ugrave -50 -KPX Aring uhungarumlaut -50 -KPX Aring umacron -50 -KPX Aring uogonek -50 -KPX Aring uring -50 -KPX Aring v -100 -KPX Aring w -90 -KPX Aring y -74 -KPX Aring yacute -74 -KPX Aring ydieresis -74 -KPX Atilde C -55 -KPX Atilde Cacute -55 -KPX Atilde Ccaron -55 -KPX Atilde Ccedilla -55 -KPX Atilde G -55 -KPX Atilde Gbreve -55 -KPX Atilde Gcommaaccent -55 -KPX Atilde O -45 -KPX Atilde Oacute -45 -KPX Atilde Ocircumflex -45 -KPX Atilde Odieresis -45 -KPX Atilde Ograve -45 -KPX Atilde Ohungarumlaut -45 -KPX Atilde Omacron -45 -KPX Atilde Oslash -45 -KPX Atilde Otilde -45 -KPX Atilde Q -45 -KPX Atilde T -95 -KPX Atilde Tcaron -95 -KPX Atilde Tcommaaccent -95 -KPX Atilde U -50 -KPX Atilde Uacute -50 -KPX Atilde Ucircumflex -50 -KPX Atilde Udieresis -50 -KPX Atilde Ugrave -50 -KPX Atilde Uhungarumlaut -50 -KPX Atilde Umacron -50 -KPX Atilde Uogonek -50 -KPX Atilde Uring -50 -KPX Atilde V -145 -KPX Atilde W -130 -KPX Atilde Y -100 -KPX Atilde Yacute -100 -KPX Atilde Ydieresis -100 -KPX Atilde p -25 -KPX Atilde quoteright -74 -KPX Atilde u -50 -KPX Atilde uacute -50 -KPX Atilde ucircumflex -50 -KPX Atilde udieresis -50 -KPX Atilde ugrave -50 -KPX Atilde uhungarumlaut -50 -KPX Atilde umacron -50 -KPX Atilde uogonek -50 -KPX Atilde uring -50 -KPX Atilde v -100 -KPX Atilde w -90 -KPX Atilde y -74 -KPX Atilde yacute -74 -KPX Atilde ydieresis -74 -KPX B A -30 -KPX B Aacute -30 -KPX B Abreve -30 -KPX B Acircumflex -30 -KPX B Adieresis -30 -KPX B Agrave -30 -KPX B Amacron -30 -KPX B Aogonek -30 -KPX B Aring -30 -KPX B Atilde -30 -KPX B U -10 -KPX B Uacute -10 -KPX B Ucircumflex -10 -KPX B Udieresis -10 -KPX B Ugrave -10 -KPX B Uhungarumlaut -10 -KPX B Umacron -10 -KPX B Uogonek -10 -KPX B Uring -10 -KPX D A -35 -KPX D Aacute -35 -KPX D Abreve -35 -KPX D Acircumflex -35 -KPX D Adieresis -35 -KPX D Agrave -35 -KPX D Amacron -35 -KPX D Aogonek -35 -KPX D Aring -35 -KPX D Atilde -35 -KPX D V -40 -KPX D W -40 -KPX D Y -40 -KPX D Yacute -40 -KPX D Ydieresis -40 -KPX D period -20 -KPX Dcaron A -35 -KPX Dcaron Aacute -35 -KPX Dcaron Abreve -35 -KPX Dcaron Acircumflex -35 -KPX Dcaron Adieresis -35 -KPX Dcaron Agrave -35 -KPX Dcaron Amacron -35 -KPX Dcaron Aogonek -35 -KPX Dcaron Aring -35 -KPX Dcaron Atilde -35 -KPX Dcaron V -40 -KPX Dcaron W -40 -KPX Dcaron Y -40 -KPX Dcaron Yacute -40 -KPX Dcaron Ydieresis -40 -KPX Dcaron period -20 -KPX Dcroat A -35 -KPX Dcroat Aacute -35 -KPX Dcroat Abreve -35 -KPX Dcroat Acircumflex -35 -KPX Dcroat Adieresis -35 -KPX Dcroat Agrave -35 -KPX Dcroat Amacron -35 -KPX Dcroat Aogonek -35 -KPX Dcroat Aring -35 -KPX Dcroat Atilde -35 -KPX Dcroat V -40 -KPX Dcroat W -40 -KPX Dcroat Y -40 -KPX Dcroat Yacute -40 -KPX Dcroat Ydieresis -40 -KPX Dcroat period -20 -KPX F A -90 -KPX F Aacute -90 -KPX F Abreve -90 -KPX F Acircumflex -90 -KPX F Adieresis -90 -KPX F Agrave -90 -KPX F Amacron -90 -KPX F Aogonek -90 -KPX F Aring -90 -KPX F Atilde -90 -KPX F a -25 -KPX F aacute -25 -KPX F abreve -25 -KPX F acircumflex -25 -KPX F adieresis -25 -KPX F agrave -25 -KPX F amacron -25 -KPX F aogonek -25 -KPX F aring -25 -KPX F atilde -25 -KPX F comma -92 -KPX F e -25 -KPX F eacute -25 -KPX F ecaron -25 -KPX F ecircumflex -25 -KPX F edieresis -25 -KPX F edotaccent -25 -KPX F egrave -25 -KPX F emacron -25 -KPX F eogonek -25 -KPX F o -25 -KPX F oacute -25 -KPX F ocircumflex -25 -KPX F odieresis -25 -KPX F ograve -25 -KPX F ohungarumlaut -25 -KPX F omacron -25 -KPX F oslash -25 -KPX F otilde -25 -KPX F period -110 -KPX J A -30 -KPX J Aacute -30 -KPX J Abreve -30 -KPX J Acircumflex -30 -KPX J Adieresis -30 -KPX J Agrave -30 -KPX J Amacron -30 -KPX J Aogonek -30 -KPX J Aring -30 -KPX J Atilde -30 -KPX J a -15 -KPX J aacute -15 -KPX J abreve -15 -KPX J acircumflex -15 -KPX J adieresis -15 -KPX J agrave -15 -KPX J amacron -15 -KPX J aogonek -15 -KPX J aring -15 -KPX J atilde -15 -KPX J e -15 -KPX J eacute -15 -KPX J ecaron -15 -KPX J ecircumflex -15 -KPX J edieresis -15 -KPX J edotaccent -15 -KPX J egrave -15 -KPX J emacron -15 -KPX J eogonek -15 -KPX J o -15 -KPX J oacute -15 -KPX J ocircumflex -15 -KPX J odieresis -15 -KPX J ograve -15 -KPX J ohungarumlaut -15 -KPX J omacron -15 -KPX J oslash -15 -KPX J otilde -15 -KPX J period -20 -KPX J u -15 -KPX J uacute -15 -KPX J ucircumflex -15 -KPX J udieresis -15 -KPX J ugrave -15 -KPX J uhungarumlaut -15 -KPX J umacron -15 -KPX J uogonek -15 -KPX J uring -15 -KPX K O -30 -KPX K Oacute -30 -KPX K Ocircumflex -30 -KPX K Odieresis -30 -KPX K Ograve -30 -KPX K Ohungarumlaut -30 -KPX K Omacron -30 -KPX K Oslash -30 -KPX K Otilde -30 -KPX K e -25 -KPX K eacute -25 -KPX K ecaron -25 -KPX K ecircumflex -25 -KPX K edieresis -25 -KPX K edotaccent -25 -KPX K egrave -25 -KPX K emacron -25 -KPX K eogonek -25 -KPX K o -25 -KPX K oacute -25 -KPX K ocircumflex -25 -KPX K odieresis -25 -KPX K ograve -25 -KPX K ohungarumlaut -25 -KPX K omacron -25 -KPX K oslash -25 -KPX K otilde -25 -KPX K u -15 -KPX K uacute -15 -KPX K ucircumflex -15 -KPX K udieresis -15 -KPX K ugrave -15 -KPX K uhungarumlaut -15 -KPX K umacron -15 -KPX K uogonek -15 -KPX K uring -15 -KPX K y -45 -KPX K yacute -45 -KPX K ydieresis -45 -KPX Kcommaaccent O -30 -KPX Kcommaaccent Oacute -30 -KPX Kcommaaccent Ocircumflex -30 -KPX Kcommaaccent Odieresis -30 -KPX Kcommaaccent Ograve -30 -KPX Kcommaaccent Ohungarumlaut -30 -KPX Kcommaaccent Omacron -30 -KPX Kcommaaccent Oslash -30 -KPX Kcommaaccent Otilde -30 -KPX Kcommaaccent e -25 -KPX Kcommaaccent eacute -25 -KPX Kcommaaccent ecaron -25 -KPX Kcommaaccent ecircumflex -25 -KPX Kcommaaccent edieresis -25 -KPX Kcommaaccent edotaccent -25 -KPX Kcommaaccent egrave -25 -KPX Kcommaaccent emacron -25 -KPX Kcommaaccent eogonek -25 -KPX Kcommaaccent o -25 -KPX Kcommaaccent oacute -25 -KPX Kcommaaccent ocircumflex -25 -KPX Kcommaaccent odieresis -25 -KPX Kcommaaccent ograve -25 -KPX Kcommaaccent ohungarumlaut -25 -KPX Kcommaaccent omacron -25 -KPX Kcommaaccent oslash -25 -KPX Kcommaaccent otilde -25 -KPX Kcommaaccent u -15 -KPX Kcommaaccent uacute -15 -KPX Kcommaaccent ucircumflex -15 -KPX Kcommaaccent udieresis -15 -KPX Kcommaaccent ugrave -15 -KPX Kcommaaccent uhungarumlaut -15 -KPX Kcommaaccent umacron -15 -KPX Kcommaaccent uogonek -15 -KPX Kcommaaccent uring -15 -KPX Kcommaaccent y -45 -KPX Kcommaaccent yacute -45 -KPX Kcommaaccent ydieresis -45 -KPX L T -92 -KPX L Tcaron -92 -KPX L Tcommaaccent -92 -KPX L V -92 -KPX L W -92 -KPX L Y -92 -KPX L Yacute -92 -KPX L Ydieresis -92 -KPX L quotedblright -20 -KPX L quoteright -110 -KPX L y -55 -KPX L yacute -55 -KPX L ydieresis -55 -KPX Lacute T -92 -KPX Lacute Tcaron -92 -KPX Lacute Tcommaaccent -92 -KPX Lacute V -92 -KPX Lacute W -92 -KPX Lacute Y -92 -KPX Lacute Yacute -92 -KPX Lacute Ydieresis -92 -KPX Lacute quotedblright -20 -KPX Lacute quoteright -110 -KPX Lacute y -55 -KPX Lacute yacute -55 -KPX Lacute ydieresis -55 -KPX Lcommaaccent T -92 -KPX Lcommaaccent Tcaron -92 -KPX Lcommaaccent Tcommaaccent -92 -KPX Lcommaaccent V -92 -KPX Lcommaaccent W -92 -KPX Lcommaaccent Y -92 -KPX Lcommaaccent Yacute -92 -KPX Lcommaaccent Ydieresis -92 -KPX Lcommaaccent quotedblright -20 -KPX Lcommaaccent quoteright -110 -KPX Lcommaaccent y -55 -KPX Lcommaaccent yacute -55 -KPX Lcommaaccent ydieresis -55 -KPX Lslash T -92 -KPX Lslash Tcaron -92 -KPX Lslash Tcommaaccent -92 -KPX Lslash V -92 -KPX Lslash W -92 -KPX Lslash Y -92 -KPX Lslash Yacute -92 -KPX Lslash Ydieresis -92 -KPX Lslash quotedblright -20 -KPX Lslash quoteright -110 -KPX Lslash y -55 -KPX Lslash yacute -55 -KPX Lslash ydieresis -55 -KPX N A -20 -KPX N Aacute -20 -KPX N Abreve -20 -KPX N Acircumflex -20 -KPX N Adieresis -20 -KPX N Agrave -20 -KPX N Amacron -20 -KPX N Aogonek -20 -KPX N Aring -20 -KPX N Atilde -20 -KPX Nacute A -20 -KPX Nacute Aacute -20 -KPX Nacute Abreve -20 -KPX Nacute Acircumflex -20 -KPX Nacute Adieresis -20 -KPX Nacute Agrave -20 -KPX Nacute Amacron -20 -KPX Nacute Aogonek -20 -KPX Nacute Aring -20 -KPX Nacute Atilde -20 -KPX Ncaron A -20 -KPX Ncaron Aacute -20 -KPX Ncaron Abreve -20 -KPX Ncaron Acircumflex -20 -KPX Ncaron Adieresis -20 -KPX Ncaron Agrave -20 -KPX Ncaron Amacron -20 -KPX Ncaron Aogonek -20 -KPX Ncaron Aring -20 -KPX Ncaron Atilde -20 -KPX Ncommaaccent A -20 -KPX Ncommaaccent Aacute -20 -KPX Ncommaaccent Abreve -20 -KPX Ncommaaccent Acircumflex -20 -KPX Ncommaaccent Adieresis -20 -KPX Ncommaaccent Agrave -20 -KPX Ncommaaccent Amacron -20 -KPX Ncommaaccent Aogonek -20 -KPX Ncommaaccent Aring -20 -KPX Ncommaaccent Atilde -20 -KPX Ntilde A -20 -KPX Ntilde Aacute -20 -KPX Ntilde Abreve -20 -KPX Ntilde Acircumflex -20 -KPX Ntilde Adieresis -20 -KPX Ntilde Agrave -20 -KPX Ntilde Amacron -20 -KPX Ntilde Aogonek -20 -KPX Ntilde Aring -20 -KPX Ntilde Atilde -20 -KPX O A -40 -KPX O Aacute -40 -KPX O Abreve -40 -KPX O Acircumflex -40 -KPX O Adieresis -40 -KPX O Agrave -40 -KPX O Amacron -40 -KPX O Aogonek -40 -KPX O Aring -40 -KPX O Atilde -40 -KPX O T -40 -KPX O Tcaron -40 -KPX O Tcommaaccent -40 -KPX O V -50 -KPX O W -50 -KPX O X -40 -KPX O Y -50 -KPX O Yacute -50 -KPX O Ydieresis -50 -KPX Oacute A -40 -KPX Oacute Aacute -40 -KPX Oacute Abreve -40 -KPX Oacute Acircumflex -40 -KPX Oacute Adieresis -40 -KPX Oacute Agrave -40 -KPX Oacute Amacron -40 -KPX Oacute Aogonek -40 -KPX Oacute Aring -40 -KPX Oacute Atilde -40 -KPX Oacute T -40 -KPX Oacute Tcaron -40 -KPX Oacute Tcommaaccent -40 -KPX Oacute V -50 -KPX Oacute W -50 -KPX Oacute X -40 -KPX Oacute Y -50 -KPX Oacute Yacute -50 -KPX Oacute Ydieresis -50 -KPX Ocircumflex A -40 -KPX Ocircumflex Aacute -40 -KPX Ocircumflex Abreve -40 -KPX Ocircumflex Acircumflex -40 -KPX Ocircumflex Adieresis -40 -KPX Ocircumflex Agrave -40 -KPX Ocircumflex Amacron -40 -KPX Ocircumflex Aogonek -40 -KPX Ocircumflex Aring -40 -KPX Ocircumflex Atilde -40 -KPX Ocircumflex T -40 -KPX Ocircumflex Tcaron -40 -KPX Ocircumflex Tcommaaccent -40 -KPX Ocircumflex V -50 -KPX Ocircumflex W -50 -KPX Ocircumflex X -40 -KPX Ocircumflex Y -50 -KPX Ocircumflex Yacute -50 -KPX Ocircumflex Ydieresis -50 -KPX Odieresis A -40 -KPX Odieresis Aacute -40 -KPX Odieresis Abreve -40 -KPX Odieresis Acircumflex -40 -KPX Odieresis Adieresis -40 -KPX Odieresis Agrave -40 -KPX Odieresis Amacron -40 -KPX Odieresis Aogonek -40 -KPX Odieresis Aring -40 -KPX Odieresis Atilde -40 -KPX Odieresis T -40 -KPX Odieresis Tcaron -40 -KPX Odieresis Tcommaaccent -40 -KPX Odieresis V -50 -KPX Odieresis W -50 -KPX Odieresis X -40 -KPX Odieresis Y -50 -KPX Odieresis Yacute -50 -KPX Odieresis Ydieresis -50 -KPX Ograve A -40 -KPX Ograve Aacute -40 -KPX Ograve Abreve -40 -KPX Ograve Acircumflex -40 -KPX Ograve Adieresis -40 -KPX Ograve Agrave -40 -KPX Ograve Amacron -40 -KPX Ograve Aogonek -40 -KPX Ograve Aring -40 -KPX Ograve Atilde -40 -KPX Ograve T -40 -KPX Ograve Tcaron -40 -KPX Ograve Tcommaaccent -40 -KPX Ograve V -50 -KPX Ograve W -50 -KPX Ograve X -40 -KPX Ograve Y -50 -KPX Ograve Yacute -50 -KPX Ograve Ydieresis -50 -KPX Ohungarumlaut A -40 -KPX Ohungarumlaut Aacute -40 -KPX Ohungarumlaut Abreve -40 -KPX Ohungarumlaut Acircumflex -40 -KPX Ohungarumlaut Adieresis -40 -KPX Ohungarumlaut Agrave -40 -KPX Ohungarumlaut Amacron -40 -KPX Ohungarumlaut Aogonek -40 -KPX Ohungarumlaut Aring -40 -KPX Ohungarumlaut Atilde -40 -KPX Ohungarumlaut T -40 -KPX Ohungarumlaut Tcaron -40 -KPX Ohungarumlaut Tcommaaccent -40 -KPX Ohungarumlaut V -50 -KPX Ohungarumlaut W -50 -KPX Ohungarumlaut X -40 -KPX Ohungarumlaut Y -50 -KPX Ohungarumlaut Yacute -50 -KPX Ohungarumlaut Ydieresis -50 -KPX Omacron A -40 -KPX Omacron Aacute -40 -KPX Omacron Abreve -40 -KPX Omacron Acircumflex -40 -KPX Omacron Adieresis -40 -KPX Omacron Agrave -40 -KPX Omacron Amacron -40 -KPX Omacron Aogonek -40 -KPX Omacron Aring -40 -KPX Omacron Atilde -40 -KPX Omacron T -40 -KPX Omacron Tcaron -40 -KPX Omacron Tcommaaccent -40 -KPX Omacron V -50 -KPX Omacron W -50 -KPX Omacron X -40 -KPX Omacron Y -50 -KPX Omacron Yacute -50 -KPX Omacron Ydieresis -50 -KPX Oslash A -40 -KPX Oslash Aacute -40 -KPX Oslash Abreve -40 -KPX Oslash Acircumflex -40 -KPX Oslash Adieresis -40 -KPX Oslash Agrave -40 -KPX Oslash Amacron -40 -KPX Oslash Aogonek -40 -KPX Oslash Aring -40 -KPX Oslash Atilde -40 -KPX Oslash T -40 -KPX Oslash Tcaron -40 -KPX Oslash Tcommaaccent -40 -KPX Oslash V -50 -KPX Oslash W -50 -KPX Oslash X -40 -KPX Oslash Y -50 -KPX Oslash Yacute -50 -KPX Oslash Ydieresis -50 -KPX Otilde A -40 -KPX Otilde Aacute -40 -KPX Otilde Abreve -40 -KPX Otilde Acircumflex -40 -KPX Otilde Adieresis -40 -KPX Otilde Agrave -40 -KPX Otilde Amacron -40 -KPX Otilde Aogonek -40 -KPX Otilde Aring -40 -KPX Otilde Atilde -40 -KPX Otilde T -40 -KPX Otilde Tcaron -40 -KPX Otilde Tcommaaccent -40 -KPX Otilde V -50 -KPX Otilde W -50 -KPX Otilde X -40 -KPX Otilde Y -50 -KPX Otilde Yacute -50 -KPX Otilde Ydieresis -50 -KPX P A -74 -KPX P Aacute -74 -KPX P Abreve -74 -KPX P Acircumflex -74 -KPX P Adieresis -74 -KPX P Agrave -74 -KPX P Amacron -74 -KPX P Aogonek -74 -KPX P Aring -74 -KPX P Atilde -74 -KPX P a -10 -KPX P aacute -10 -KPX P abreve -10 -KPX P acircumflex -10 -KPX P adieresis -10 -KPX P agrave -10 -KPX P amacron -10 -KPX P aogonek -10 -KPX P aring -10 -KPX P atilde -10 -KPX P comma -92 -KPX P e -20 -KPX P eacute -20 -KPX P ecaron -20 -KPX P ecircumflex -20 -KPX P edieresis -20 -KPX P edotaccent -20 -KPX P egrave -20 -KPX P emacron -20 -KPX P eogonek -20 -KPX P o -20 -KPX P oacute -20 -KPX P ocircumflex -20 -KPX P odieresis -20 -KPX P ograve -20 -KPX P ohungarumlaut -20 -KPX P omacron -20 -KPX P oslash -20 -KPX P otilde -20 -KPX P period -110 -KPX Q U -10 -KPX Q Uacute -10 -KPX Q Ucircumflex -10 -KPX Q Udieresis -10 -KPX Q Ugrave -10 -KPX Q Uhungarumlaut -10 -KPX Q Umacron -10 -KPX Q Uogonek -10 -KPX Q Uring -10 -KPX Q period -20 -KPX R O -30 -KPX R Oacute -30 -KPX R Ocircumflex -30 -KPX R Odieresis -30 -KPX R Ograve -30 -KPX R Ohungarumlaut -30 -KPX R Omacron -30 -KPX R Oslash -30 -KPX R Otilde -30 -KPX R T -40 -KPX R Tcaron -40 -KPX R Tcommaaccent -40 -KPX R U -30 -KPX R Uacute -30 -KPX R Ucircumflex -30 -KPX R Udieresis -30 -KPX R Ugrave -30 -KPX R Uhungarumlaut -30 -KPX R Umacron -30 -KPX R Uogonek -30 -KPX R Uring -30 -KPX R V -55 -KPX R W -35 -KPX R Y -35 -KPX R Yacute -35 -KPX R Ydieresis -35 -KPX Racute O -30 -KPX Racute Oacute -30 -KPX Racute Ocircumflex -30 -KPX Racute Odieresis -30 -KPX Racute Ograve -30 -KPX Racute Ohungarumlaut -30 -KPX Racute Omacron -30 -KPX Racute Oslash -30 -KPX Racute Otilde -30 -KPX Racute T -40 -KPX Racute Tcaron -40 -KPX Racute Tcommaaccent -40 -KPX Racute U -30 -KPX Racute Uacute -30 -KPX Racute Ucircumflex -30 -KPX Racute Udieresis -30 -KPX Racute Ugrave -30 -KPX Racute Uhungarumlaut -30 -KPX Racute Umacron -30 -KPX Racute Uogonek -30 -KPX Racute Uring -30 -KPX Racute V -55 -KPX Racute W -35 -KPX Racute Y -35 -KPX Racute Yacute -35 -KPX Racute Ydieresis -35 -KPX Rcaron O -30 -KPX Rcaron Oacute -30 -KPX Rcaron Ocircumflex -30 -KPX Rcaron Odieresis -30 -KPX Rcaron Ograve -30 -KPX Rcaron Ohungarumlaut -30 -KPX Rcaron Omacron -30 -KPX Rcaron Oslash -30 -KPX Rcaron Otilde -30 -KPX Rcaron T -40 -KPX Rcaron Tcaron -40 -KPX Rcaron Tcommaaccent -40 -KPX Rcaron U -30 -KPX Rcaron Uacute -30 -KPX Rcaron Ucircumflex -30 -KPX Rcaron Udieresis -30 -KPX Rcaron Ugrave -30 -KPX Rcaron Uhungarumlaut -30 -KPX Rcaron Umacron -30 -KPX Rcaron Uogonek -30 -KPX Rcaron Uring -30 -KPX Rcaron V -55 -KPX Rcaron W -35 -KPX Rcaron Y -35 -KPX Rcaron Yacute -35 -KPX Rcaron Ydieresis -35 -KPX Rcommaaccent O -30 -KPX Rcommaaccent Oacute -30 -KPX Rcommaaccent Ocircumflex -30 -KPX Rcommaaccent Odieresis -30 -KPX Rcommaaccent Ograve -30 -KPX Rcommaaccent Ohungarumlaut -30 -KPX Rcommaaccent Omacron -30 -KPX Rcommaaccent Oslash -30 -KPX Rcommaaccent Otilde -30 -KPX Rcommaaccent T -40 -KPX Rcommaaccent Tcaron -40 -KPX Rcommaaccent Tcommaaccent -40 -KPX Rcommaaccent U -30 -KPX Rcommaaccent Uacute -30 -KPX Rcommaaccent Ucircumflex -30 -KPX Rcommaaccent Udieresis -30 -KPX Rcommaaccent Ugrave -30 -KPX Rcommaaccent Uhungarumlaut -30 -KPX Rcommaaccent Umacron -30 -KPX Rcommaaccent Uogonek -30 -KPX Rcommaaccent Uring -30 -KPX Rcommaaccent V -55 -KPX Rcommaaccent W -35 -KPX Rcommaaccent Y -35 -KPX Rcommaaccent Yacute -35 -KPX Rcommaaccent Ydieresis -35 -KPX T A -90 -KPX T Aacute -90 -KPX T Abreve -90 -KPX T Acircumflex -90 -KPX T Adieresis -90 -KPX T Agrave -90 -KPX T Amacron -90 -KPX T Aogonek -90 -KPX T Aring -90 -KPX T Atilde -90 -KPX T O -18 -KPX T Oacute -18 -KPX T Ocircumflex -18 -KPX T Odieresis -18 -KPX T Ograve -18 -KPX T Ohungarumlaut -18 -KPX T Omacron -18 -KPX T Oslash -18 -KPX T Otilde -18 -KPX T a -92 -KPX T aacute -92 -KPX T abreve -52 -KPX T acircumflex -52 -KPX T adieresis -52 -KPX T agrave -52 -KPX T amacron -52 -KPX T aogonek -92 -KPX T aring -92 -KPX T atilde -52 -KPX T colon -74 -KPX T comma -74 -KPX T e -92 -KPX T eacute -92 -KPX T ecaron -92 -KPX T ecircumflex -92 -KPX T edieresis -52 -KPX T edotaccent -92 -KPX T egrave -52 -KPX T emacron -52 -KPX T eogonek -92 -KPX T hyphen -92 -KPX T i -18 -KPX T iacute -18 -KPX T iogonek -18 -KPX T o -92 -KPX T oacute -92 -KPX T ocircumflex -92 -KPX T odieresis -92 -KPX T ograve -92 -KPX T ohungarumlaut -92 -KPX T omacron -92 -KPX T oslash -92 -KPX T otilde -92 -KPX T period -90 -KPX T r -74 -KPX T racute -74 -KPX T rcaron -74 -KPX T rcommaaccent -74 -KPX T semicolon -74 -KPX T u -92 -KPX T uacute -92 -KPX T ucircumflex -92 -KPX T udieresis -92 -KPX T ugrave -92 -KPX T uhungarumlaut -92 -KPX T umacron -92 -KPX T uogonek -92 -KPX T uring -92 -KPX T w -74 -KPX T y -34 -KPX T yacute -34 -KPX T ydieresis -34 -KPX Tcaron A -90 -KPX Tcaron Aacute -90 -KPX Tcaron Abreve -90 -KPX Tcaron Acircumflex -90 -KPX Tcaron Adieresis -90 -KPX Tcaron Agrave -90 -KPX Tcaron Amacron -90 -KPX Tcaron Aogonek -90 -KPX Tcaron Aring -90 -KPX Tcaron Atilde -90 -KPX Tcaron O -18 -KPX Tcaron Oacute -18 -KPX Tcaron Ocircumflex -18 -KPX Tcaron Odieresis -18 -KPX Tcaron Ograve -18 -KPX Tcaron Ohungarumlaut -18 -KPX Tcaron Omacron -18 -KPX Tcaron Oslash -18 -KPX Tcaron Otilde -18 -KPX Tcaron a -92 -KPX Tcaron aacute -92 -KPX Tcaron abreve -52 -KPX Tcaron acircumflex -52 -KPX Tcaron adieresis -52 -KPX Tcaron agrave -52 -KPX Tcaron amacron -52 -KPX Tcaron aogonek -92 -KPX Tcaron aring -92 -KPX Tcaron atilde -52 -KPX Tcaron colon -74 -KPX Tcaron comma -74 -KPX Tcaron e -92 -KPX Tcaron eacute -92 -KPX Tcaron ecaron -92 -KPX Tcaron ecircumflex -92 -KPX Tcaron edieresis -52 -KPX Tcaron edotaccent -92 -KPX Tcaron egrave -52 -KPX Tcaron emacron -52 -KPX Tcaron eogonek -92 -KPX Tcaron hyphen -92 -KPX Tcaron i -18 -KPX Tcaron iacute -18 -KPX Tcaron iogonek -18 -KPX Tcaron o -92 -KPX Tcaron oacute -92 -KPX Tcaron ocircumflex -92 -KPX Tcaron odieresis -92 -KPX Tcaron ograve -92 -KPX Tcaron ohungarumlaut -92 -KPX Tcaron omacron -92 -KPX Tcaron oslash -92 -KPX Tcaron otilde -92 -KPX Tcaron period -90 -KPX Tcaron r -74 -KPX Tcaron racute -74 -KPX Tcaron rcaron -74 -KPX Tcaron rcommaaccent -74 -KPX Tcaron semicolon -74 -KPX Tcaron u -92 -KPX Tcaron uacute -92 -KPX Tcaron ucircumflex -92 -KPX Tcaron udieresis -92 -KPX Tcaron ugrave -92 -KPX Tcaron uhungarumlaut -92 -KPX Tcaron umacron -92 -KPX Tcaron uogonek -92 -KPX Tcaron uring -92 -KPX Tcaron w -74 -KPX Tcaron y -34 -KPX Tcaron yacute -34 -KPX Tcaron ydieresis -34 -KPX Tcommaaccent A -90 -KPX Tcommaaccent Aacute -90 -KPX Tcommaaccent Abreve -90 -KPX Tcommaaccent Acircumflex -90 -KPX Tcommaaccent Adieresis -90 -KPX Tcommaaccent Agrave -90 -KPX Tcommaaccent Amacron -90 -KPX Tcommaaccent Aogonek -90 -KPX Tcommaaccent Aring -90 -KPX Tcommaaccent Atilde -90 -KPX Tcommaaccent O -18 -KPX Tcommaaccent Oacute -18 -KPX Tcommaaccent Ocircumflex -18 -KPX Tcommaaccent Odieresis -18 -KPX Tcommaaccent Ograve -18 -KPX Tcommaaccent Ohungarumlaut -18 -KPX Tcommaaccent Omacron -18 -KPX Tcommaaccent Oslash -18 -KPX Tcommaaccent Otilde -18 -KPX Tcommaaccent a -92 -KPX Tcommaaccent aacute -92 -KPX Tcommaaccent abreve -52 -KPX Tcommaaccent acircumflex -52 -KPX Tcommaaccent adieresis -52 -KPX Tcommaaccent agrave -52 -KPX Tcommaaccent amacron -52 -KPX Tcommaaccent aogonek -92 -KPX Tcommaaccent aring -92 -KPX Tcommaaccent atilde -52 -KPX Tcommaaccent colon -74 -KPX Tcommaaccent comma -74 -KPX Tcommaaccent e -92 -KPX Tcommaaccent eacute -92 -KPX Tcommaaccent ecaron -92 -KPX Tcommaaccent ecircumflex -92 -KPX Tcommaaccent edieresis -52 -KPX Tcommaaccent edotaccent -92 -KPX Tcommaaccent egrave -52 -KPX Tcommaaccent emacron -52 -KPX Tcommaaccent eogonek -92 -KPX Tcommaaccent hyphen -92 -KPX Tcommaaccent i -18 -KPX Tcommaaccent iacute -18 -KPX Tcommaaccent iogonek -18 -KPX Tcommaaccent o -92 -KPX Tcommaaccent oacute -92 -KPX Tcommaaccent ocircumflex -92 -KPX Tcommaaccent odieresis -92 -KPX Tcommaaccent ograve -92 -KPX Tcommaaccent ohungarumlaut -92 -KPX Tcommaaccent omacron -92 -KPX Tcommaaccent oslash -92 -KPX Tcommaaccent otilde -92 -KPX Tcommaaccent period -90 -KPX Tcommaaccent r -74 -KPX Tcommaaccent racute -74 -KPX Tcommaaccent rcaron -74 -KPX Tcommaaccent rcommaaccent -74 -KPX Tcommaaccent semicolon -74 -KPX Tcommaaccent u -92 -KPX Tcommaaccent uacute -92 -KPX Tcommaaccent ucircumflex -92 -KPX Tcommaaccent udieresis -92 -KPX Tcommaaccent ugrave -92 -KPX Tcommaaccent uhungarumlaut -92 -KPX Tcommaaccent umacron -92 -KPX Tcommaaccent uogonek -92 -KPX Tcommaaccent uring -92 -KPX Tcommaaccent w -74 -KPX Tcommaaccent y -34 -KPX Tcommaaccent yacute -34 -KPX Tcommaaccent ydieresis -34 -KPX U A -60 -KPX U Aacute -60 -KPX U Abreve -60 -KPX U Acircumflex -60 -KPX U Adieresis -60 -KPX U Agrave -60 -KPX U Amacron -60 -KPX U Aogonek -60 -KPX U Aring -60 -KPX U Atilde -60 -KPX U comma -50 -KPX U period -50 -KPX Uacute A -60 -KPX Uacute Aacute -60 -KPX Uacute Abreve -60 -KPX Uacute Acircumflex -60 -KPX Uacute Adieresis -60 -KPX Uacute Agrave -60 -KPX Uacute Amacron -60 -KPX Uacute Aogonek -60 -KPX Uacute Aring -60 -KPX Uacute Atilde -60 -KPX Uacute comma -50 -KPX Uacute period -50 -KPX Ucircumflex A -60 -KPX Ucircumflex Aacute -60 -KPX Ucircumflex Abreve -60 -KPX Ucircumflex Acircumflex -60 -KPX Ucircumflex Adieresis -60 -KPX Ucircumflex Agrave -60 -KPX Ucircumflex Amacron -60 -KPX Ucircumflex Aogonek -60 -KPX Ucircumflex Aring -60 -KPX Ucircumflex Atilde -60 -KPX Ucircumflex comma -50 -KPX Ucircumflex period -50 -KPX Udieresis A -60 -KPX Udieresis Aacute -60 -KPX Udieresis Abreve -60 -KPX Udieresis Acircumflex -60 -KPX Udieresis Adieresis -60 -KPX Udieresis Agrave -60 -KPX Udieresis Amacron -60 -KPX Udieresis Aogonek -60 -KPX Udieresis Aring -60 -KPX Udieresis Atilde -60 -KPX Udieresis comma -50 -KPX Udieresis period -50 -KPX Ugrave A -60 -KPX Ugrave Aacute -60 -KPX Ugrave Abreve -60 -KPX Ugrave Acircumflex -60 -KPX Ugrave Adieresis -60 -KPX Ugrave Agrave -60 -KPX Ugrave Amacron -60 -KPX Ugrave Aogonek -60 -KPX Ugrave Aring -60 -KPX Ugrave Atilde -60 -KPX Ugrave comma -50 -KPX Ugrave period -50 -KPX Uhungarumlaut A -60 -KPX Uhungarumlaut Aacute -60 -KPX Uhungarumlaut Abreve -60 -KPX Uhungarumlaut Acircumflex -60 -KPX Uhungarumlaut Adieresis -60 -KPX Uhungarumlaut Agrave -60 -KPX Uhungarumlaut Amacron -60 -KPX Uhungarumlaut Aogonek -60 -KPX Uhungarumlaut Aring -60 -KPX Uhungarumlaut Atilde -60 -KPX Uhungarumlaut comma -50 -KPX Uhungarumlaut period -50 -KPX Umacron A -60 -KPX Umacron Aacute -60 -KPX Umacron Abreve -60 -KPX Umacron Acircumflex -60 -KPX Umacron Adieresis -60 -KPX Umacron Agrave -60 -KPX Umacron Amacron -60 -KPX Umacron Aogonek -60 -KPX Umacron Aring -60 -KPX Umacron Atilde -60 -KPX Umacron comma -50 -KPX Umacron period -50 -KPX Uogonek A -60 -KPX Uogonek Aacute -60 -KPX Uogonek Abreve -60 -KPX Uogonek Acircumflex -60 -KPX Uogonek Adieresis -60 -KPX Uogonek Agrave -60 -KPX Uogonek Amacron -60 -KPX Uogonek Aogonek -60 -KPX Uogonek Aring -60 -KPX Uogonek Atilde -60 -KPX Uogonek comma -50 -KPX Uogonek period -50 -KPX Uring A -60 -KPX Uring Aacute -60 -KPX Uring Abreve -60 -KPX Uring Acircumflex -60 -KPX Uring Adieresis -60 -KPX Uring Agrave -60 -KPX Uring Amacron -60 -KPX Uring Aogonek -60 -KPX Uring Aring -60 -KPX Uring Atilde -60 -KPX Uring comma -50 -KPX Uring period -50 -KPX V A -135 -KPX V Aacute -135 -KPX V Abreve -135 -KPX V Acircumflex -135 -KPX V Adieresis -135 -KPX V Agrave -135 -KPX V Amacron -135 -KPX V Aogonek -135 -KPX V Aring -135 -KPX V Atilde -135 -KPX V G -30 -KPX V Gbreve -30 -KPX V Gcommaaccent -30 -KPX V O -45 -KPX V Oacute -45 -KPX V Ocircumflex -45 -KPX V Odieresis -45 -KPX V Ograve -45 -KPX V Ohungarumlaut -45 -KPX V Omacron -45 -KPX V Oslash -45 -KPX V Otilde -45 -KPX V a -92 -KPX V aacute -92 -KPX V abreve -92 -KPX V acircumflex -92 -KPX V adieresis -92 -KPX V agrave -92 -KPX V amacron -92 -KPX V aogonek -92 -KPX V aring -92 -KPX V atilde -92 -KPX V colon -92 -KPX V comma -129 -KPX V e -100 -KPX V eacute -100 -KPX V ecaron -100 -KPX V ecircumflex -100 -KPX V edieresis -100 -KPX V edotaccent -100 -KPX V egrave -100 -KPX V emacron -100 -KPX V eogonek -100 -KPX V hyphen -74 -KPX V i -37 -KPX V iacute -37 -KPX V icircumflex -37 -KPX V idieresis -37 -KPX V igrave -37 -KPX V imacron -37 -KPX V iogonek -37 -KPX V o -100 -KPX V oacute -100 -KPX V ocircumflex -100 -KPX V odieresis -100 -KPX V ograve -100 -KPX V ohungarumlaut -100 -KPX V omacron -100 -KPX V oslash -100 -KPX V otilde -100 -KPX V period -145 -KPX V semicolon -92 -KPX V u -92 -KPX V uacute -92 -KPX V ucircumflex -92 -KPX V udieresis -92 -KPX V ugrave -92 -KPX V uhungarumlaut -92 -KPX V umacron -92 -KPX V uogonek -92 -KPX V uring -92 -KPX W A -120 -KPX W Aacute -120 -KPX W Abreve -120 -KPX W Acircumflex -120 -KPX W Adieresis -120 -KPX W Agrave -120 -KPX W Amacron -120 -KPX W Aogonek -120 -KPX W Aring -120 -KPX W Atilde -120 -KPX W O -10 -KPX W Oacute -10 -KPX W Ocircumflex -10 -KPX W Odieresis -10 -KPX W Ograve -10 -KPX W Ohungarumlaut -10 -KPX W Omacron -10 -KPX W Oslash -10 -KPX W Otilde -10 -KPX W a -65 -KPX W aacute -65 -KPX W abreve -65 -KPX W acircumflex -65 -KPX W adieresis -65 -KPX W agrave -65 -KPX W amacron -65 -KPX W aogonek -65 -KPX W aring -65 -KPX W atilde -65 -KPX W colon -55 -KPX W comma -92 -KPX W e -65 -KPX W eacute -65 -KPX W ecaron -65 -KPX W ecircumflex -65 -KPX W edieresis -65 -KPX W edotaccent -65 -KPX W egrave -65 -KPX W emacron -65 -KPX W eogonek -65 -KPX W hyphen -37 -KPX W i -18 -KPX W iacute -18 -KPX W iogonek -18 -KPX W o -75 -KPX W oacute -75 -KPX W ocircumflex -75 -KPX W odieresis -75 -KPX W ograve -75 -KPX W ohungarumlaut -75 -KPX W omacron -75 -KPX W oslash -75 -KPX W otilde -75 -KPX W period -92 -KPX W semicolon -55 -KPX W u -50 -KPX W uacute -50 -KPX W ucircumflex -50 -KPX W udieresis -50 -KPX W ugrave -50 -KPX W uhungarumlaut -50 -KPX W umacron -50 -KPX W uogonek -50 -KPX W uring -50 -KPX W y -60 -KPX W yacute -60 -KPX W ydieresis -60 -KPX Y A -110 -KPX Y Aacute -110 -KPX Y Abreve -110 -KPX Y Acircumflex -110 -KPX Y Adieresis -110 -KPX Y Agrave -110 -KPX Y Amacron -110 -KPX Y Aogonek -110 -KPX Y Aring -110 -KPX Y Atilde -110 -KPX Y O -35 -KPX Y Oacute -35 -KPX Y Ocircumflex -35 -KPX Y Odieresis -35 -KPX Y Ograve -35 -KPX Y Ohungarumlaut -35 -KPX Y Omacron -35 -KPX Y Oslash -35 -KPX Y Otilde -35 -KPX Y a -85 -KPX Y aacute -85 -KPX Y abreve -85 -KPX Y acircumflex -85 -KPX Y adieresis -85 -KPX Y agrave -85 -KPX Y amacron -85 -KPX Y aogonek -85 -KPX Y aring -85 -KPX Y atilde -85 -KPX Y colon -92 -KPX Y comma -92 -KPX Y e -111 -KPX Y eacute -111 -KPX Y ecaron -111 -KPX Y ecircumflex -111 -KPX Y edieresis -71 -KPX Y edotaccent -111 -KPX Y egrave -71 -KPX Y emacron -71 -KPX Y eogonek -111 -KPX Y hyphen -92 -KPX Y i -37 -KPX Y iacute -37 -KPX Y iogonek -37 -KPX Y o -111 -KPX Y oacute -111 -KPX Y ocircumflex -111 -KPX Y odieresis -111 -KPX Y ograve -111 -KPX Y ohungarumlaut -111 -KPX Y omacron -111 -KPX Y oslash -111 -KPX Y otilde -111 -KPX Y period -92 -KPX Y semicolon -92 -KPX Y u -92 -KPX Y uacute -92 -KPX Y ucircumflex -92 -KPX Y udieresis -92 -KPX Y ugrave -92 -KPX Y uhungarumlaut -92 -KPX Y umacron -92 -KPX Y uogonek -92 -KPX Y uring -92 -KPX Yacute A -110 -KPX Yacute Aacute -110 -KPX Yacute Abreve -110 -KPX Yacute Acircumflex -110 -KPX Yacute Adieresis -110 -KPX Yacute Agrave -110 -KPX Yacute Amacron -110 -KPX Yacute Aogonek -110 -KPX Yacute Aring -110 -KPX Yacute Atilde -110 -KPX Yacute O -35 -KPX Yacute Oacute -35 -KPX Yacute Ocircumflex -35 -KPX Yacute Odieresis -35 -KPX Yacute Ograve -35 -KPX Yacute Ohungarumlaut -35 -KPX Yacute Omacron -35 -KPX Yacute Oslash -35 -KPX Yacute Otilde -35 -KPX Yacute a -85 -KPX Yacute aacute -85 -KPX Yacute abreve -85 -KPX Yacute acircumflex -85 -KPX Yacute adieresis -85 -KPX Yacute agrave -85 -KPX Yacute amacron -85 -KPX Yacute aogonek -85 -KPX Yacute aring -85 -KPX Yacute atilde -85 -KPX Yacute colon -92 -KPX Yacute comma -92 -KPX Yacute e -111 -KPX Yacute eacute -111 -KPX Yacute ecaron -111 -KPX Yacute ecircumflex -111 -KPX Yacute edieresis -71 -KPX Yacute edotaccent -111 -KPX Yacute egrave -71 -KPX Yacute emacron -71 -KPX Yacute eogonek -111 -KPX Yacute hyphen -92 -KPX Yacute i -37 -KPX Yacute iacute -37 -KPX Yacute iogonek -37 -KPX Yacute o -111 -KPX Yacute oacute -111 -KPX Yacute ocircumflex -111 -KPX Yacute odieresis -111 -KPX Yacute ograve -111 -KPX Yacute ohungarumlaut -111 -KPX Yacute omacron -111 -KPX Yacute oslash -111 -KPX Yacute otilde -111 -KPX Yacute period -92 -KPX Yacute semicolon -92 -KPX Yacute u -92 -KPX Yacute uacute -92 -KPX Yacute ucircumflex -92 -KPX Yacute udieresis -92 -KPX Yacute ugrave -92 -KPX Yacute uhungarumlaut -92 -KPX Yacute umacron -92 -KPX Yacute uogonek -92 -KPX Yacute uring -92 -KPX Ydieresis A -110 -KPX Ydieresis Aacute -110 -KPX Ydieresis Abreve -110 -KPX Ydieresis Acircumflex -110 -KPX Ydieresis Adieresis -110 -KPX Ydieresis Agrave -110 -KPX Ydieresis Amacron -110 -KPX Ydieresis Aogonek -110 -KPX Ydieresis Aring -110 -KPX Ydieresis Atilde -110 -KPX Ydieresis O -35 -KPX Ydieresis Oacute -35 -KPX Ydieresis Ocircumflex -35 -KPX Ydieresis Odieresis -35 -KPX Ydieresis Ograve -35 -KPX Ydieresis Ohungarumlaut -35 -KPX Ydieresis Omacron -35 -KPX Ydieresis Oslash -35 -KPX Ydieresis Otilde -35 -KPX Ydieresis a -85 -KPX Ydieresis aacute -85 -KPX Ydieresis abreve -85 -KPX Ydieresis acircumflex -85 -KPX Ydieresis adieresis -85 -KPX Ydieresis agrave -85 -KPX Ydieresis amacron -85 -KPX Ydieresis aogonek -85 -KPX Ydieresis aring -85 -KPX Ydieresis atilde -85 -KPX Ydieresis colon -92 -KPX Ydieresis comma -92 -KPX Ydieresis e -111 -KPX Ydieresis eacute -111 -KPX Ydieresis ecaron -111 -KPX Ydieresis ecircumflex -111 -KPX Ydieresis edieresis -71 -KPX Ydieresis edotaccent -111 -KPX Ydieresis egrave -71 -KPX Ydieresis emacron -71 -KPX Ydieresis eogonek -111 -KPX Ydieresis hyphen -92 -KPX Ydieresis i -37 -KPX Ydieresis iacute -37 -KPX Ydieresis iogonek -37 -KPX Ydieresis o -111 -KPX Ydieresis oacute -111 -KPX Ydieresis ocircumflex -111 -KPX Ydieresis odieresis -111 -KPX Ydieresis ograve -111 -KPX Ydieresis ohungarumlaut -111 -KPX Ydieresis omacron -111 -KPX Ydieresis oslash -111 -KPX Ydieresis otilde -111 -KPX Ydieresis period -92 -KPX Ydieresis semicolon -92 -KPX Ydieresis u -92 -KPX Ydieresis uacute -92 -KPX Ydieresis ucircumflex -92 -KPX Ydieresis udieresis -92 -KPX Ydieresis ugrave -92 -KPX Ydieresis uhungarumlaut -92 -KPX Ydieresis umacron -92 -KPX Ydieresis uogonek -92 -KPX Ydieresis uring -92 -KPX a v -25 -KPX aacute v -25 -KPX abreve v -25 -KPX acircumflex v -25 -KPX adieresis v -25 -KPX agrave v -25 -KPX amacron v -25 -KPX aogonek v -25 -KPX aring v -25 -KPX atilde v -25 -KPX b b -10 -KPX b period -40 -KPX b u -20 -KPX b uacute -20 -KPX b ucircumflex -20 -KPX b udieresis -20 -KPX b ugrave -20 -KPX b uhungarumlaut -20 -KPX b umacron -20 -KPX b uogonek -20 -KPX b uring -20 -KPX b v -15 -KPX comma quotedblright -45 -KPX comma quoteright -55 -KPX d w -15 -KPX dcroat w -15 -KPX e v -15 -KPX eacute v -15 -KPX ecaron v -15 -KPX ecircumflex v -15 -KPX edieresis v -15 -KPX edotaccent v -15 -KPX egrave v -15 -KPX emacron v -15 -KPX eogonek v -15 -KPX f comma -15 -KPX f dotlessi -35 -KPX f i -25 -KPX f o -25 -KPX f oacute -25 -KPX f ocircumflex -25 -KPX f odieresis -25 -KPX f ograve -25 -KPX f ohungarumlaut -25 -KPX f omacron -25 -KPX f oslash -25 -KPX f otilde -25 -KPX f period -15 -KPX f quotedblright 50 -KPX f quoteright 55 -KPX g period -15 -KPX gbreve period -15 -KPX gcommaaccent period -15 -KPX h y -15 -KPX h yacute -15 -KPX h ydieresis -15 -KPX i v -10 -KPX iacute v -10 -KPX icircumflex v -10 -KPX idieresis v -10 -KPX igrave v -10 -KPX imacron v -10 -KPX iogonek v -10 -KPX k e -10 -KPX k eacute -10 -KPX k ecaron -10 -KPX k ecircumflex -10 -KPX k edieresis -10 -KPX k edotaccent -10 -KPX k egrave -10 -KPX k emacron -10 -KPX k eogonek -10 -KPX k o -15 -KPX k oacute -15 -KPX k ocircumflex -15 -KPX k odieresis -15 -KPX k ograve -15 -KPX k ohungarumlaut -15 -KPX k omacron -15 -KPX k oslash -15 -KPX k otilde -15 -KPX k y -15 -KPX k yacute -15 -KPX k ydieresis -15 -KPX kcommaaccent e -10 -KPX kcommaaccent eacute -10 -KPX kcommaaccent ecaron -10 -KPX kcommaaccent ecircumflex -10 -KPX kcommaaccent edieresis -10 -KPX kcommaaccent edotaccent -10 -KPX kcommaaccent egrave -10 -KPX kcommaaccent emacron -10 -KPX kcommaaccent eogonek -10 -KPX kcommaaccent o -15 -KPX kcommaaccent oacute -15 -KPX kcommaaccent ocircumflex -15 -KPX kcommaaccent odieresis -15 -KPX kcommaaccent ograve -15 -KPX kcommaaccent ohungarumlaut -15 -KPX kcommaaccent omacron -15 -KPX kcommaaccent oslash -15 -KPX kcommaaccent otilde -15 -KPX kcommaaccent y -15 -KPX kcommaaccent yacute -15 -KPX kcommaaccent ydieresis -15 -KPX n v -40 -KPX nacute v -40 -KPX ncaron v -40 -KPX ncommaaccent v -40 -KPX ntilde v -40 -KPX o v -10 -KPX o w -10 -KPX oacute v -10 -KPX oacute w -10 -KPX ocircumflex v -10 -KPX ocircumflex w -10 -KPX odieresis v -10 -KPX odieresis w -10 -KPX ograve v -10 -KPX ograve w -10 -KPX ohungarumlaut v -10 -KPX ohungarumlaut w -10 -KPX omacron v -10 -KPX omacron w -10 -KPX oslash v -10 -KPX oslash w -10 -KPX otilde v -10 -KPX otilde w -10 -KPX period quotedblright -55 -KPX period quoteright -55 -KPX quotedblleft A -10 -KPX quotedblleft Aacute -10 -KPX quotedblleft Abreve -10 -KPX quotedblleft Acircumflex -10 -KPX quotedblleft Adieresis -10 -KPX quotedblleft Agrave -10 -KPX quotedblleft Amacron -10 -KPX quotedblleft Aogonek -10 -KPX quotedblleft Aring -10 -KPX quotedblleft Atilde -10 -KPX quoteleft A -10 -KPX quoteleft Aacute -10 -KPX quoteleft Abreve -10 -KPX quoteleft Acircumflex -10 -KPX quoteleft Adieresis -10 -KPX quoteleft Agrave -10 -KPX quoteleft Amacron -10 -KPX quoteleft Aogonek -10 -KPX quoteleft Aring -10 -KPX quoteleft Atilde -10 -KPX quoteleft quoteleft -63 -KPX quoteright d -20 -KPX quoteright dcroat -20 -KPX quoteright quoteright -63 -KPX quoteright r -20 -KPX quoteright racute -20 -KPX quoteright rcaron -20 -KPX quoteright rcommaaccent -20 -KPX quoteright s -37 -KPX quoteright sacute -37 -KPX quoteright scaron -37 -KPX quoteright scedilla -37 -KPX quoteright scommaaccent -37 -KPX quoteright space -74 -KPX quoteright v -20 -KPX r c -18 -KPX r cacute -18 -KPX r ccaron -18 -KPX r ccedilla -18 -KPX r comma -92 -KPX r e -18 -KPX r eacute -18 -KPX r ecaron -18 -KPX r ecircumflex -18 -KPX r edieresis -18 -KPX r edotaccent -18 -KPX r egrave -18 -KPX r emacron -18 -KPX r eogonek -18 -KPX r g -10 -KPX r gbreve -10 -KPX r gcommaaccent -10 -KPX r hyphen -37 -KPX r n -15 -KPX r nacute -15 -KPX r ncaron -15 -KPX r ncommaaccent -15 -KPX r ntilde -15 -KPX r o -18 -KPX r oacute -18 -KPX r ocircumflex -18 -KPX r odieresis -18 -KPX r ograve -18 -KPX r ohungarumlaut -18 -KPX r omacron -18 -KPX r oslash -18 -KPX r otilde -18 -KPX r p -10 -KPX r period -100 -KPX r q -18 -KPX r v -10 -KPX racute c -18 -KPX racute cacute -18 -KPX racute ccaron -18 -KPX racute ccedilla -18 -KPX racute comma -92 -KPX racute e -18 -KPX racute eacute -18 -KPX racute ecaron -18 -KPX racute ecircumflex -18 -KPX racute edieresis -18 -KPX racute edotaccent -18 -KPX racute egrave -18 -KPX racute emacron -18 -KPX racute eogonek -18 -KPX racute g -10 -KPX racute gbreve -10 -KPX racute gcommaaccent -10 -KPX racute hyphen -37 -KPX racute n -15 -KPX racute nacute -15 -KPX racute ncaron -15 -KPX racute ncommaaccent -15 -KPX racute ntilde -15 -KPX racute o -18 -KPX racute oacute -18 -KPX racute ocircumflex -18 -KPX racute odieresis -18 -KPX racute ograve -18 -KPX racute ohungarumlaut -18 -KPX racute omacron -18 -KPX racute oslash -18 -KPX racute otilde -18 -KPX racute p -10 -KPX racute period -100 -KPX racute q -18 -KPX racute v -10 -KPX rcaron c -18 -KPX rcaron cacute -18 -KPX rcaron ccaron -18 -KPX rcaron ccedilla -18 -KPX rcaron comma -92 -KPX rcaron e -18 -KPX rcaron eacute -18 -KPX rcaron ecaron -18 -KPX rcaron ecircumflex -18 -KPX rcaron edieresis -18 -KPX rcaron edotaccent -18 -KPX rcaron egrave -18 -KPX rcaron emacron -18 -KPX rcaron eogonek -18 -KPX rcaron g -10 -KPX rcaron gbreve -10 -KPX rcaron gcommaaccent -10 -KPX rcaron hyphen -37 -KPX rcaron n -15 -KPX rcaron nacute -15 -KPX rcaron ncaron -15 -KPX rcaron ncommaaccent -15 -KPX rcaron ntilde -15 -KPX rcaron o -18 -KPX rcaron oacute -18 -KPX rcaron ocircumflex -18 -KPX rcaron odieresis -18 -KPX rcaron ograve -18 -KPX rcaron ohungarumlaut -18 -KPX rcaron omacron -18 -KPX rcaron oslash -18 -KPX rcaron otilde -18 -KPX rcaron p -10 -KPX rcaron period -100 -KPX rcaron q -18 -KPX rcaron v -10 -KPX rcommaaccent c -18 -KPX rcommaaccent cacute -18 -KPX rcommaaccent ccaron -18 -KPX rcommaaccent ccedilla -18 -KPX rcommaaccent comma -92 -KPX rcommaaccent e -18 -KPX rcommaaccent eacute -18 -KPX rcommaaccent ecaron -18 -KPX rcommaaccent ecircumflex -18 -KPX rcommaaccent edieresis -18 -KPX rcommaaccent edotaccent -18 -KPX rcommaaccent egrave -18 -KPX rcommaaccent emacron -18 -KPX rcommaaccent eogonek -18 -KPX rcommaaccent g -10 -KPX rcommaaccent gbreve -10 -KPX rcommaaccent gcommaaccent -10 -KPX rcommaaccent hyphen -37 -KPX rcommaaccent n -15 -KPX rcommaaccent nacute -15 -KPX rcommaaccent ncaron -15 -KPX rcommaaccent ncommaaccent -15 -KPX rcommaaccent ntilde -15 -KPX rcommaaccent o -18 -KPX rcommaaccent oacute -18 -KPX rcommaaccent ocircumflex -18 -KPX rcommaaccent odieresis -18 -KPX rcommaaccent ograve -18 -KPX rcommaaccent ohungarumlaut -18 -KPX rcommaaccent omacron -18 -KPX rcommaaccent oslash -18 -KPX rcommaaccent otilde -18 -KPX rcommaaccent p -10 -KPX rcommaaccent period -100 -KPX rcommaaccent q -18 -KPX rcommaaccent v -10 -KPX space A -55 -KPX space Aacute -55 -KPX space Abreve -55 -KPX space Acircumflex -55 -KPX space Adieresis -55 -KPX space Agrave -55 -KPX space Amacron -55 -KPX space Aogonek -55 -KPX space Aring -55 -KPX space Atilde -55 -KPX space T -30 -KPX space Tcaron -30 -KPX space Tcommaaccent -30 -KPX space V -45 -KPX space W -30 -KPX space Y -55 -KPX space Yacute -55 -KPX space Ydieresis -55 -KPX v a -10 -KPX v aacute -10 -KPX v abreve -10 -KPX v acircumflex -10 -KPX v adieresis -10 -KPX v agrave -10 -KPX v amacron -10 -KPX v aogonek -10 -KPX v aring -10 -KPX v atilde -10 -KPX v comma -55 -KPX v e -10 -KPX v eacute -10 -KPX v ecaron -10 -KPX v ecircumflex -10 -KPX v edieresis -10 -KPX v edotaccent -10 -KPX v egrave -10 -KPX v emacron -10 -KPX v eogonek -10 -KPX v o -10 -KPX v oacute -10 -KPX v ocircumflex -10 -KPX v odieresis -10 -KPX v ograve -10 -KPX v ohungarumlaut -10 -KPX v omacron -10 -KPX v oslash -10 -KPX v otilde -10 -KPX v period -70 -KPX w comma -55 -KPX w o -10 -KPX w oacute -10 -KPX w ocircumflex -10 -KPX w odieresis -10 -KPX w ograve -10 -KPX w ohungarumlaut -10 -KPX w omacron -10 -KPX w oslash -10 -KPX w otilde -10 -KPX w period -70 -KPX y comma -55 -KPX y e -10 -KPX y eacute -10 -KPX y ecaron -10 -KPX y ecircumflex -10 -KPX y edieresis -10 -KPX y edotaccent -10 -KPX y egrave -10 -KPX y emacron -10 -KPX y eogonek -10 -KPX y o -25 -KPX y oacute -25 -KPX y ocircumflex -25 -KPX y odieresis -25 -KPX y ograve -25 -KPX y ohungarumlaut -25 -KPX y omacron -25 -KPX y oslash -25 -KPX y otilde -25 -KPX y period -70 -KPX yacute comma -55 -KPX yacute e -10 -KPX yacute eacute -10 -KPX yacute ecaron -10 -KPX yacute ecircumflex -10 -KPX yacute edieresis -10 -KPX yacute edotaccent -10 -KPX yacute egrave -10 -KPX yacute emacron -10 -KPX yacute eogonek -10 -KPX yacute o -25 -KPX yacute oacute -25 -KPX yacute ocircumflex -25 -KPX yacute odieresis -25 -KPX yacute ograve -25 -KPX yacute ohungarumlaut -25 -KPX yacute omacron -25 -KPX yacute oslash -25 -KPX yacute otilde -25 -KPX yacute period -70 -KPX ydieresis comma -55 -KPX ydieresis e -10 -KPX ydieresis eacute -10 -KPX ydieresis ecaron -10 -KPX ydieresis ecircumflex -10 -KPX ydieresis edieresis -10 -KPX ydieresis edotaccent -10 -KPX ydieresis egrave -10 -KPX ydieresis emacron -10 -KPX ydieresis eogonek -10 -KPX ydieresis o -25 -KPX ydieresis oacute -25 -KPX ydieresis ocircumflex -25 -KPX ydieresis odieresis -25 -KPX ydieresis ograve -25 -KPX ydieresis ohungarumlaut -25 -KPX ydieresis omacron -25 -KPX ydieresis oslash -25 -KPX ydieresis otilde -25 -KPX ydieresis period -70 -EndKernPairs -EndKernData -EndFontMetrics diff --git a/application/third_party/dompdf/lib/fonts/Times-Bold.afm.php b/application/third_party/dompdf/lib/fonts/Times-Bold.afm.php deleted file mode 100644 index c925535c..00000000 --- a/application/third_party/dompdf/lib/fonts/Times-Bold.afm.php +++ /dev/null @@ -1,570 +0,0 @@ -<?php return array ( - 'codeToName' => - array ( - 32 => 'space', - 160 => 'space', - 33 => 'exclam', - 34 => 'quotedbl', - 35 => 'numbersign', - 36 => 'dollar', - 37 => 'percent', - 38 => 'ampersand', - 146 => 'quoteright', - 40 => 'parenleft', - 41 => 'parenright', - 42 => 'asterisk', - 43 => 'plus', - 44 => 'comma', - 45 => 'hyphen', - 173 => 'hyphen', - 46 => 'period', - 47 => 'slash', - 48 => 'zero', - 49 => 'one', - 50 => 'two', - 51 => 'three', - 52 => 'four', - 53 => 'five', - 54 => 'six', - 55 => 'seven', - 56 => 'eight', - 57 => 'nine', - 58 => 'colon', - 59 => 'semicolon', - 60 => 'less', - 61 => 'equal', - 62 => 'greater', - 63 => 'question', - 64 => 'at', - 65 => 'A', - 66 => 'B', - 67 => 'C', - 68 => 'D', - 69 => 'E', - 70 => 'F', - 71 => 'G', - 72 => 'H', - 73 => 'I', - 74 => 'J', - 75 => 'K', - 76 => 'L', - 77 => 'M', - 78 => 'N', - 79 => 'O', - 80 => 'P', - 81 => 'Q', - 82 => 'R', - 83 => 'S', - 84 => 'T', - 85 => 'U', - 86 => 'V', - 87 => 'W', - 88 => 'X', - 89 => 'Y', - 90 => 'Z', - 91 => 'bracketleft', - 92 => 'backslash', - 93 => 'bracketright', - 94 => 'asciicircum', - 95 => 'underscore', - 145 => 'quoteleft', - 97 => 'a', - 98 => 'b', - 99 => 'c', - 100 => 'd', - 101 => 'e', - 102 => 'f', - 103 => 'g', - 104 => 'h', - 105 => 'i', - 106 => 'j', - 107 => 'k', - 108 => 'l', - 109 => 'm', - 110 => 'n', - 111 => 'o', - 112 => 'p', - 113 => 'q', - 114 => 'r', - 115 => 's', - 116 => 't', - 117 => 'u', - 118 => 'v', - 119 => 'w', - 120 => 'x', - 121 => 'y', - 122 => 'z', - 123 => 'braceleft', - 124 => 'bar', - 125 => 'braceright', - 126 => 'asciitilde', - 161 => 'exclamdown', - 162 => 'cent', - 163 => 'sterling', - 165 => 'yen', - 131 => 'florin', - 167 => 'section', - 164 => 'currency', - 39 => 'quotesingle', - 147 => 'quotedblleft', - 170 => 'ordfeminine', - 139 => 'guilsinglleft', - 155 => 'guilsinglright', - 150 => 'endash', - 134 => 'dagger', - 135 => 'daggerdbl', - 183 => 'periodcentered', - 182 => 'paragraph', - 149 => 'bullet', - 130 => 'quotesinglbase', - 132 => 'quotedblbase', - 148 => 'quotedblright', - 187 => 'guillemotright', - 133 => 'ellipsis', - 137 => 'perthousand', - 191 => 'questiondown', - 96 => 'grave', - 180 => 'acute', - 136 => 'circumflex', - 152 => 'tilde', - 175 => 'macron', - 168 => 'dieresis', - 184 => 'cedilla', - 151 => 'emdash', - 198 => 'AE', - 216 => 'Oslash', - 140 => 'OE', - 186 => 'ordmasculine', - 230 => 'ae', - 248 => 'oslash', - 156 => 'oe', - 223 => 'germandbls', - 207 => 'Idieresis', - 233 => 'eacute', - 159 => 'Ydieresis', - 247 => 'divide', - 221 => 'Yacute', - 194 => 'Acircumflex', - 225 => 'aacute', - 219 => 'Ucircumflex', - 253 => 'yacute', - 234 => 'ecircumflex', - 220 => 'Udieresis', - 218 => 'Uacute', - 203 => 'Edieresis', - 169 => 'copyright', - 229 => 'aring', - 224 => 'agrave', - 227 => 'atilde', - 154 => 'scaron', - 237 => 'iacute', - 251 => 'ucircumflex', - 226 => 'acircumflex', - 231 => 'ccedilla', - 222 => 'Thorn', - 179 => 'threesuperior', - 210 => 'Ograve', - 192 => 'Agrave', - 215 => 'multiply', - 250 => 'uacute', - 255 => 'ydieresis', - 238 => 'icircumflex', - 202 => 'Ecircumflex', - 228 => 'adieresis', - 235 => 'edieresis', - 205 => 'Iacute', - 177 => 'plusminus', - 166 => 'brokenbar', - 174 => 'registered', - 200 => 'Egrave', - 142 => 'Zcaron', - 208 => 'Eth', - 199 => 'Ccedilla', - 193 => 'Aacute', - 196 => 'Adieresis', - 232 => 'egrave', - 211 => 'Oacute', - 243 => 'oacute', - 239 => 'idieresis', - 212 => 'Ocircumflex', - 217 => 'Ugrave', - 254 => 'thorn', - 178 => 'twosuperior', - 214 => 'Odieresis', - 181 => 'mu', - 236 => 'igrave', - 190 => 'threequarters', - 153 => 'trademark', - 204 => 'Igrave', - 189 => 'onehalf', - 244 => 'ocircumflex', - 241 => 'ntilde', - 201 => 'Eacute', - 188 => 'onequarter', - 138 => 'Scaron', - 176 => 'degree', - 242 => 'ograve', - 249 => 'ugrave', - 209 => 'Ntilde', - 245 => 'otilde', - 195 => 'Atilde', - 197 => 'Aring', - 213 => 'Otilde', - 206 => 'Icircumflex', - 172 => 'logicalnot', - 246 => 'odieresis', - 252 => 'udieresis', - 240 => 'eth', - 158 => 'zcaron', - 185 => 'onesuperior', - 128 => 'Euro', - ), - 'isUnicode' => false, - 'FontName' => 'Times-Bold', - 'FullName' => 'Times Bold', - 'FamilyName' => 'Times', - 'Weight' => 'Bold', - 'ItalicAngle' => '0', - 'IsFixedPitch' => 'false', - 'CharacterSet' => 'ExtendedRoman', - 'FontBBox' => - array ( - 0 => '-168', - 1 => '-218', - 2 => '1000', - 3 => '935', - ), - 'UnderlinePosition' => '-100', - 'UnderlineThickness' => '50', - 'Version' => '002.000', - 'EncodingScheme' => 'WinAnsiEncoding', - 'CapHeight' => '676', - 'XHeight' => '461', - 'Ascender' => '683', - 'Descender' => '-217', - 'StdHW' => '44', - 'StdVW' => '139', - 'StartCharMetrics' => '317', - 'C' => - array ( - 32 => 250.0, - 160 => 250.0, - 33 => 333.0, - 34 => 555.0, - 35 => 500.0, - 36 => 500.0, - 37 => 1000.0, - 38 => 833.0, - 146 => 333.0, - 40 => 333.0, - 41 => 333.0, - 42 => 500.0, - 43 => 570.0, - 44 => 250.0, - 45 => 333.0, - 173 => 333.0, - 46 => 250.0, - 47 => 278.0, - 48 => 500.0, - 49 => 500.0, - 50 => 500.0, - 51 => 500.0, - 52 => 500.0, - 53 => 500.0, - 54 => 500.0, - 55 => 500.0, - 56 => 500.0, - 57 => 500.0, - 58 => 333.0, - 59 => 333.0, - 60 => 570.0, - 61 => 570.0, - 62 => 570.0, - 63 => 500.0, - 64 => 930.0, - 65 => 722.0, - 66 => 667.0, - 67 => 722.0, - 68 => 722.0, - 69 => 667.0, - 70 => 611.0, - 71 => 778.0, - 72 => 778.0, - 73 => 389.0, - 74 => 500.0, - 75 => 778.0, - 76 => 667.0, - 77 => 944.0, - 78 => 722.0, - 79 => 778.0, - 80 => 611.0, - 81 => 778.0, - 82 => 722.0, - 83 => 556.0, - 84 => 667.0, - 85 => 722.0, - 86 => 722.0, - 87 => 1000.0, - 88 => 722.0, - 89 => 722.0, - 90 => 667.0, - 91 => 333.0, - 92 => 278.0, - 93 => 333.0, - 94 => 581.0, - 95 => 500.0, - 145 => 333.0, - 97 => 500.0, - 98 => 556.0, - 99 => 444.0, - 100 => 556.0, - 101 => 444.0, - 102 => 333.0, - 103 => 500.0, - 104 => 556.0, - 105 => 278.0, - 106 => 333.0, - 107 => 556.0, - 108 => 278.0, - 109 => 833.0, - 110 => 556.0, - 111 => 500.0, - 112 => 556.0, - 113 => 556.0, - 114 => 444.0, - 115 => 389.0, - 116 => 333.0, - 117 => 556.0, - 118 => 500.0, - 119 => 722.0, - 120 => 500.0, - 121 => 500.0, - 122 => 444.0, - 123 => 394.0, - 124 => 220.0, - 125 => 394.0, - 126 => 520.0, - 161 => 333.0, - 162 => 500.0, - 163 => 500.0, - 'fraction' => 167.0, - 165 => 500.0, - 131 => 500.0, - 167 => 500.0, - 164 => 500.0, - 39 => 278.0, - 147 => 500.0, - 170 => 300.0, - 139 => 333.0, - 155 => 333.0, - 'fi' => 556.0, - 'fl' => 556.0, - 150 => 500.0, - 134 => 500.0, - 135 => 500.0, - 183 => 250.0, - 182 => 540.0, - 149 => 350.0, - 130 => 333.0, - 132 => 500.0, - 148 => 500.0, - 187 => 500.0, - 133 => 1000.0, - 137 => 1000.0, - 191 => 500.0, - 96 => 333.0, - 180 => 333.0, - 136 => 333.0, - 152 => 333.0, - 175 => 333.0, - 'breve' => 333.0, - 'dotaccent' => 333.0, - 168 => 333.0, - 'ring' => 333.0, - 184 => 333.0, - 'hungarumlaut' => 333.0, - 'ogonek' => 333.0, - 'caron' => 333.0, - 151 => 1000.0, - 198 => 1000.0, - 'Lslash' => 667.0, - 216 => 778.0, - 140 => 1000.0, - 186 => 330.0, - 230 => 722.0, - 'dotlessi' => 278.0, - 'lslash' => 278.0, - 248 => 500.0, - 156 => 722.0, - 223 => 556.0, - 207 => 389.0, - 233 => 444.0, - 'abreve' => 500.0, - 'uhungarumlaut' => 556.0, - 'ecaron' => 444.0, - 159 => 722.0, - 247 => 570.0, - 221 => 722.0, - 194 => 722.0, - 225 => 500.0, - 219 => 722.0, - 253 => 500.0, - 'scommaaccent' => 389.0, - 234 => 444.0, - 'Uring' => 722.0, - 220 => 722.0, - 'aogonek' => 500.0, - 218 => 722.0, - 'uogonek' => 556.0, - 203 => 667.0, - 'Dcroat' => 722.0, - 'commaaccent' => 250.0, - 169 => 747.0, - 'Emacron' => 667.0, - 'ccaron' => 444.0, - 229 => 500.0, - 'Ncommaaccent' => 722.0, - 'lacute' => 278.0, - 224 => 500.0, - 'Tcommaaccent' => 667.0, - 'Cacute' => 722.0, - 227 => 500.0, - 'Edotaccent' => 667.0, - 154 => 389.0, - 'scedilla' => 389.0, - 237 => 278.0, - 'lozenge' => 494.0, - 'Rcaron' => 722.0, - 'Gcommaaccent' => 778.0, - 251 => 556.0, - 226 => 500.0, - 'Amacron' => 722.0, - 'rcaron' => 444.0, - 231 => 444.0, - 'Zdotaccent' => 667.0, - 222 => 611.0, - 'Omacron' => 778.0, - 'Racute' => 722.0, - 'Sacute' => 556.0, - 'dcaron' => 672.0, - 'Umacron' => 722.0, - 'uring' => 556.0, - 179 => 300.0, - 210 => 778.0, - 192 => 722.0, - 'Abreve' => 722.0, - 215 => 570.0, - 250 => 556.0, - 'Tcaron' => 667.0, - 'partialdiff' => 494.0, - 255 => 500.0, - 'Nacute' => 722.0, - 238 => 278.0, - 202 => 667.0, - 228 => 500.0, - 235 => 444.0, - 'cacute' => 444.0, - 'nacute' => 556.0, - 'umacron' => 556.0, - 'Ncaron' => 722.0, - 205 => 389.0, - 177 => 570.0, - 166 => 220.0, - 174 => 747.0, - 'Gbreve' => 778.0, - 'Idotaccent' => 389.0, - 'summation' => 600.0, - 200 => 667.0, - 'racute' => 444.0, - 'omacron' => 500.0, - 'Zacute' => 667.0, - 142 => 667.0, - 'greaterequal' => 549.0, - 208 => 722.0, - 199 => 722.0, - 'lcommaaccent' => 278.0, - 'tcaron' => 416.0, - 'eogonek' => 444.0, - 'Uogonek' => 722.0, - 193 => 722.0, - 196 => 722.0, - 232 => 444.0, - 'zacute' => 444.0, - 'iogonek' => 278.0, - 211 => 778.0, - 243 => 500.0, - 'amacron' => 500.0, - 'sacute' => 389.0, - 239 => 278.0, - 212 => 778.0, - 217 => 722.0, - 'Delta' => 612.0, - 254 => 556.0, - 178 => 300.0, - 214 => 778.0, - 181 => 556.0, - 236 => 278.0, - 'ohungarumlaut' => 500.0, - 'Eogonek' => 667.0, - 'dcroat' => 556.0, - 190 => 750.0, - 'Scedilla' => 556.0, - 'lcaron' => 394.0, - 'Kcommaaccent' => 778.0, - 'Lacute' => 667.0, - 153 => 1000.0, - 'edotaccent' => 444.0, - 204 => 389.0, - 'Imacron' => 389.0, - 'Lcaron' => 667.0, - 189 => 750.0, - 'lessequal' => 549.0, - 244 => 500.0, - 241 => 556.0, - 'Uhungarumlaut' => 722.0, - 201 => 667.0, - 'emacron' => 444.0, - 'gbreve' => 500.0, - 188 => 750.0, - 138 => 556.0, - 'Scommaaccent' => 556.0, - 'Ohungarumlaut' => 778.0, - 176 => 400.0, - 242 => 500.0, - 'Ccaron' => 722.0, - 249 => 556.0, - 'radical' => 549.0, - 'Dcaron' => 722.0, - 'rcommaaccent' => 444.0, - 209 => 722.0, - 245 => 500.0, - 'Rcommaaccent' => 722.0, - 'Lcommaaccent' => 667.0, - 195 => 722.0, - 'Aogonek' => 722.0, - 197 => 722.0, - 213 => 778.0, - 'zdotaccent' => 444.0, - 'Ecaron' => 667.0, - 'Iogonek' => 389.0, - 'kcommaaccent' => 556.0, - 'minus' => 570.0, - 206 => 389.0, - 'ncaron' => 556.0, - 'tcommaaccent' => 333.0, - 172 => 570.0, - 246 => 500.0, - 252 => 556.0, - 'notequal' => 549.0, - 'gcommaaccent' => 500.0, - 240 => 500.0, - 158 => 444.0, - 'ncommaaccent' => 556.0, - 185 => 300.0, - 'imacron' => 278.0, - 128 => 500.0, - ), - 'CIDtoGID_Compressed' => true, - 'CIDtoGID' => 'eJwDAAAAAAE=', - '_version_' => 4, -); \ No newline at end of file diff --git a/application/third_party/dompdf/lib/fonts/Times-BoldItalic.afm b/application/third_party/dompdf/lib/fonts/Times-BoldItalic.afm deleted file mode 100644 index eff5240e..00000000 --- a/application/third_party/dompdf/lib/fonts/Times-BoldItalic.afm +++ /dev/null @@ -1,2386 +0,0 @@ -StartFontMetrics 4.1 -Comment Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. -Comment Creation Date: Thu May 1 13:04:06 1997 -Comment UniqueID 43066 -Comment VMusage 45874 56899 -FontName Times-BoldItalic -FullName Times Bold Italic -FamilyName Times -Weight Bold -ItalicAngle -15 -IsFixedPitch false -CharacterSet ExtendedRoman -FontBBox -200 -218 996 921 -UnderlinePosition -100 -UnderlineThickness 50 -Version 002.000 -Notice Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype-Hell AG and/or its subsidiaries. -EncodingScheme WinAnsiEncoding -CapHeight 669 -XHeight 462 -Ascender 683 -Descender -217 -StdHW 42 -StdVW 121 -StartCharMetrics 317 -C 32 ; WX 250 ; N space ; B 0 0 0 0 ; -C 160 ; WX 250 ; N space ; B 0 0 0 0 ; -C 33 ; WX 389 ; N exclam ; B 67 -13 370 684 ; -C 34 ; WX 555 ; N quotedbl ; B 136 398 536 685 ; -C 35 ; WX 500 ; N numbersign ; B -33 0 533 700 ; -C 36 ; WX 500 ; N dollar ; B -20 -100 497 733 ; -C 37 ; WX 833 ; N percent ; B 39 -10 793 692 ; -C 38 ; WX 778 ; N ampersand ; B 5 -19 699 682 ; -C 146 ; WX 333 ; N quoteright ; B 98 369 302 685 ; -C 40 ; WX 333 ; N parenleft ; B 28 -179 344 685 ; -C 41 ; WX 333 ; N parenright ; B -44 -179 271 685 ; -C 42 ; WX 500 ; N asterisk ; B 65 249 456 685 ; -C 43 ; WX 570 ; N plus ; B 33 0 537 506 ; -C 44 ; WX 250 ; N comma ; B -60 -182 144 134 ; -C 45 ; WX 333 ; N hyphen ; B 2 166 271 282 ; -C 173 ; WX 333 ; N hyphen ; B 2 166 271 282 ; -C 46 ; WX 250 ; N period ; B -9 -13 139 135 ; -C 47 ; WX 278 ; N slash ; B -64 -18 342 685 ; -C 48 ; WX 500 ; N zero ; B 17 -14 477 683 ; -C 49 ; WX 500 ; N one ; B 5 0 419 683 ; -C 50 ; WX 500 ; N two ; B -27 0 446 683 ; -C 51 ; WX 500 ; N three ; B -15 -13 450 683 ; -C 52 ; WX 500 ; N four ; B -15 0 503 683 ; -C 53 ; WX 500 ; N five ; B -11 -13 487 669 ; -C 54 ; WX 500 ; N six ; B 23 -15 509 679 ; -C 55 ; WX 500 ; N seven ; B 52 0 525 669 ; -C 56 ; WX 500 ; N eight ; B 3 -13 476 683 ; -C 57 ; WX 500 ; N nine ; B -12 -10 475 683 ; -C 58 ; WX 333 ; N colon ; B 23 -13 264 459 ; -C 59 ; WX 333 ; N semicolon ; B -25 -183 264 459 ; -C 60 ; WX 570 ; N less ; B 31 -8 539 514 ; -C 61 ; WX 570 ; N equal ; B 33 107 537 399 ; -C 62 ; WX 570 ; N greater ; B 31 -8 539 514 ; -C 63 ; WX 500 ; N question ; B 79 -13 470 684 ; -C 64 ; WX 832 ; N at ; B 63 -18 770 685 ; -C 65 ; WX 667 ; N A ; B -67 0 593 683 ; -C 66 ; WX 667 ; N B ; B -24 0 624 669 ; -C 67 ; WX 667 ; N C ; B 32 -18 677 685 ; -C 68 ; WX 722 ; N D ; B -46 0 685 669 ; -C 69 ; WX 667 ; N E ; B -27 0 653 669 ; -C 70 ; WX 667 ; N F ; B -13 0 660 669 ; -C 71 ; WX 722 ; N G ; B 21 -18 706 685 ; -C 72 ; WX 778 ; N H ; B -24 0 799 669 ; -C 73 ; WX 389 ; N I ; B -32 0 406 669 ; -C 74 ; WX 500 ; N J ; B -46 -99 524 669 ; -C 75 ; WX 667 ; N K ; B -21 0 702 669 ; -C 76 ; WX 611 ; N L ; B -22 0 590 669 ; -C 77 ; WX 889 ; N M ; B -29 -12 917 669 ; -C 78 ; WX 722 ; N N ; B -27 -15 748 669 ; -C 79 ; WX 722 ; N O ; B 27 -18 691 685 ; -C 80 ; WX 611 ; N P ; B -27 0 613 669 ; -C 81 ; WX 722 ; N Q ; B 27 -208 691 685 ; -C 82 ; WX 667 ; N R ; B -29 0 623 669 ; -C 83 ; WX 556 ; N S ; B 2 -18 526 685 ; -C 84 ; WX 611 ; N T ; B 50 0 650 669 ; -C 85 ; WX 722 ; N U ; B 67 -18 744 669 ; -C 86 ; WX 667 ; N V ; B 65 -18 715 669 ; -C 87 ; WX 889 ; N W ; B 65 -18 940 669 ; -C 88 ; WX 667 ; N X ; B -24 0 694 669 ; -C 89 ; WX 611 ; N Y ; B 73 0 659 669 ; -C 90 ; WX 611 ; N Z ; B -11 0 590 669 ; -C 91 ; WX 333 ; N bracketleft ; B -37 -159 362 674 ; -C 92 ; WX 278 ; N backslash ; B -1 -18 279 685 ; -C 93 ; WX 333 ; N bracketright ; B -56 -157 343 674 ; -C 94 ; WX 570 ; N asciicircum ; B 67 304 503 669 ; -C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; -C 145 ; WX 333 ; N quoteleft ; B 128 369 332 685 ; -C 97 ; WX 500 ; N a ; B -21 -14 455 462 ; -C 98 ; WX 500 ; N b ; B -14 -13 444 699 ; -C 99 ; WX 444 ; N c ; B -5 -13 392 462 ; -C 100 ; WX 500 ; N d ; B -21 -13 517 699 ; -C 101 ; WX 444 ; N e ; B 5 -13 398 462 ; -C 102 ; WX 333 ; N f ; B -169 -205 446 698 ; L i fi ; L l fl ; -C 103 ; WX 500 ; N g ; B -52 -203 478 462 ; -C 104 ; WX 556 ; N h ; B -13 -9 498 699 ; -C 105 ; WX 278 ; N i ; B 2 -9 263 684 ; -C 106 ; WX 278 ; N j ; B -189 -207 279 684 ; -C 107 ; WX 500 ; N k ; B -23 -8 483 699 ; -C 108 ; WX 278 ; N l ; B 2 -9 290 699 ; -C 109 ; WX 778 ; N m ; B -14 -9 722 462 ; -C 110 ; WX 556 ; N n ; B -6 -9 493 462 ; -C 111 ; WX 500 ; N o ; B -3 -13 441 462 ; -C 112 ; WX 500 ; N p ; B -120 -205 446 462 ; -C 113 ; WX 500 ; N q ; B 1 -205 471 462 ; -C 114 ; WX 389 ; N r ; B -21 0 389 462 ; -C 115 ; WX 389 ; N s ; B -19 -13 333 462 ; -C 116 ; WX 278 ; N t ; B -11 -9 281 594 ; -C 117 ; WX 556 ; N u ; B 15 -9 492 462 ; -C 118 ; WX 444 ; N v ; B 16 -13 401 462 ; -C 119 ; WX 667 ; N w ; B 16 -13 614 462 ; -C 120 ; WX 500 ; N x ; B -46 -13 469 462 ; -C 121 ; WX 444 ; N y ; B -94 -205 392 462 ; -C 122 ; WX 389 ; N z ; B -43 -78 368 449 ; -C 123 ; WX 348 ; N braceleft ; B 5 -187 436 686 ; -C 124 ; WX 220 ; N bar ; B 66 -218 154 782 ; -C 125 ; WX 348 ; N braceright ; B -129 -187 302 686 ; -C 126 ; WX 570 ; N asciitilde ; B 54 173 516 333 ; -C 161 ; WX 389 ; N exclamdown ; B 19 -205 322 492 ; -C 162 ; WX 500 ; N cent ; B 42 -143 439 576 ; -C 163 ; WX 500 ; N sterling ; B -32 -12 510 683 ; -C -1 ; WX 167 ; N fraction ; B -169 -14 324 683 ; -C 165 ; WX 500 ; N yen ; B 33 0 628 669 ; -C 131 ; WX 500 ; N florin ; B -87 -156 537 707 ; -C 167 ; WX 500 ; N section ; B 36 -143 459 685 ; -C 164 ; WX 500 ; N currency ; B -26 34 526 586 ; -C 39 ; WX 278 ; N quotesingle ; B 128 398 268 685 ; -C 147 ; WX 500 ; N quotedblleft ; B 53 369 513 685 ; -C 170 ; WX 500 ; N guillemotleft ; B 12 32 468 415 ; -C 139 ; WX 333 ; N guilsinglleft ; B 32 32 303 415 ; -C 155 ; WX 333 ; N guilsinglright ; B 10 32 281 415 ; -C -1 ; WX 556 ; N fi ; B -188 -205 514 703 ; -C -1 ; WX 556 ; N fl ; B -186 -205 553 704 ; -C 150 ; WX 500 ; N endash ; B -40 178 477 269 ; -C 134 ; WX 500 ; N dagger ; B 91 -145 494 685 ; -C 135 ; WX 500 ; N daggerdbl ; B 10 -139 493 685 ; -C 183 ; WX 250 ; N periodcentered ; B 51 257 199 405 ; -C 182 ; WX 500 ; N paragraph ; B -57 -193 562 669 ; -C 149 ; WX 350 ; N bullet ; B 0 175 350 525 ; -C 130 ; WX 333 ; N quotesinglbase ; B -5 -182 199 134 ; -C 132 ; WX 500 ; N quotedblbase ; B -57 -182 403 134 ; -C 148 ; WX 500 ; N quotedblright ; B 53 369 513 685 ; -C 187 ; WX 500 ; N guillemotright ; B 12 32 468 415 ; -C 133 ; WX 1000 ; N ellipsis ; B 40 -13 852 135 ; -C 137 ; WX 1000 ; N perthousand ; B 7 -29 996 706 ; -C 191 ; WX 500 ; N questiondown ; B 30 -205 421 492 ; -C 96 ; WX 333 ; N grave ; B 85 516 297 697 ; -C 180 ; WX 333 ; N acute ; B 139 516 379 697 ; -C 136 ; WX 333 ; N circumflex ; B 40 516 367 690 ; -C 152 ; WX 333 ; N tilde ; B 48 536 407 655 ; -C 175 ; WX 333 ; N macron ; B 51 553 393 623 ; -C -1 ; WX 333 ; N breve ; B 71 516 387 678 ; -C -1 ; WX 333 ; N dotaccent ; B 163 550 298 684 ; -C 168 ; WX 333 ; N dieresis ; B 55 550 402 684 ; -C -1 ; WX 333 ; N ring ; B 127 516 340 729 ; -C 184 ; WX 333 ; N cedilla ; B -80 -218 156 5 ; -C -1 ; WX 333 ; N hungarumlaut ; B 69 516 498 697 ; -C -1 ; WX 333 ; N ogonek ; B 15 -183 244 34 ; -C -1 ; WX 333 ; N caron ; B 79 516 411 690 ; -C 151 ; WX 1000 ; N emdash ; B -40 178 977 269 ; -C 198 ; WX 944 ; N AE ; B -64 0 918 669 ; -C 170 ; WX 266 ; N ordfeminine ; B 16 399 330 685 ; -C -1 ; WX 611 ; N Lslash ; B -22 0 590 669 ; -C 216 ; WX 722 ; N Oslash ; B 27 -125 691 764 ; -C 140 ; WX 944 ; N OE ; B 23 -8 946 677 ; -C 186 ; WX 300 ; N ordmasculine ; B 56 400 347 685 ; -C 230 ; WX 722 ; N ae ; B -5 -13 673 462 ; -C -1 ; WX 278 ; N dotlessi ; B 2 -9 238 462 ; -C -1 ; WX 278 ; N lslash ; B -7 -9 307 699 ; -C 248 ; WX 500 ; N oslash ; B -3 -119 441 560 ; -C 156 ; WX 722 ; N oe ; B 6 -13 674 462 ; -C 223 ; WX 500 ; N germandbls ; B -200 -200 473 705 ; -C 207 ; WX 389 ; N Idieresis ; B -32 0 450 862 ; -C 233 ; WX 444 ; N eacute ; B 5 -13 435 697 ; -C -1 ; WX 500 ; N abreve ; B -21 -14 471 678 ; -C -1 ; WX 556 ; N uhungarumlaut ; B 15 -9 610 697 ; -C -1 ; WX 444 ; N ecaron ; B 5 -13 467 690 ; -C 159 ; WX 611 ; N Ydieresis ; B 73 0 659 862 ; -C 247 ; WX 570 ; N divide ; B 33 -29 537 535 ; -C 221 ; WX 611 ; N Yacute ; B 73 0 659 904 ; -C 194 ; WX 667 ; N Acircumflex ; B -67 0 593 897 ; -C 225 ; WX 500 ; N aacute ; B -21 -14 463 697 ; -C 219 ; WX 722 ; N Ucircumflex ; B 67 -18 744 897 ; -C 253 ; WX 444 ; N yacute ; B -94 -205 435 697 ; -C -1 ; WX 389 ; N scommaaccent ; B -19 -218 333 462 ; -C 234 ; WX 444 ; N ecircumflex ; B 5 -13 423 690 ; -C -1 ; WX 722 ; N Uring ; B 67 -18 744 921 ; -C 220 ; WX 722 ; N Udieresis ; B 67 -18 744 862 ; -C -1 ; WX 500 ; N aogonek ; B -21 -183 455 462 ; -C 218 ; WX 722 ; N Uacute ; B 67 -18 744 904 ; -C -1 ; WX 556 ; N uogonek ; B 15 -183 492 462 ; -C 203 ; WX 667 ; N Edieresis ; B -27 0 653 862 ; -C -1 ; WX 722 ; N Dcroat ; B -31 0 700 669 ; -C -1 ; WX 250 ; N commaaccent ; B -36 -218 131 -50 ; -C 169 ; WX 747 ; N copyright ; B 30 -18 718 685 ; -C -1 ; WX 667 ; N Emacron ; B -27 0 653 830 ; -C -1 ; WX 444 ; N ccaron ; B -5 -13 467 690 ; -C 229 ; WX 500 ; N aring ; B -21 -14 455 729 ; -C -1 ; WX 722 ; N Ncommaaccent ; B -27 -218 748 669 ; -C -1 ; WX 278 ; N lacute ; B 2 -9 392 904 ; -C 224 ; WX 500 ; N agrave ; B -21 -14 455 697 ; -C -1 ; WX 611 ; N Tcommaaccent ; B 50 -218 650 669 ; -C -1 ; WX 667 ; N Cacute ; B 32 -18 677 904 ; -C 227 ; WX 500 ; N atilde ; B -21 -14 491 655 ; -C -1 ; WX 667 ; N Edotaccent ; B -27 0 653 862 ; -C 154 ; WX 389 ; N scaron ; B -19 -13 424 690 ; -C -1 ; WX 389 ; N scedilla ; B -19 -218 333 462 ; -C 237 ; WX 278 ; N iacute ; B 2 -9 352 697 ; -C -1 ; WX 494 ; N lozenge ; B 10 0 484 745 ; -C -1 ; WX 667 ; N Rcaron ; B -29 0 623 897 ; -C -1 ; WX 722 ; N Gcommaaccent ; B 21 -218 706 685 ; -C 251 ; WX 556 ; N ucircumflex ; B 15 -9 492 690 ; -C 226 ; WX 500 ; N acircumflex ; B -21 -14 455 690 ; -C -1 ; WX 667 ; N Amacron ; B -67 0 593 830 ; -C -1 ; WX 389 ; N rcaron ; B -21 0 424 690 ; -C 231 ; WX 444 ; N ccedilla ; B -5 -218 392 462 ; -C -1 ; WX 611 ; N Zdotaccent ; B -11 0 590 862 ; -C 222 ; WX 611 ; N Thorn ; B -27 0 573 669 ; -C -1 ; WX 722 ; N Omacron ; B 27 -18 691 830 ; -C -1 ; WX 667 ; N Racute ; B -29 0 623 904 ; -C -1 ; WX 556 ; N Sacute ; B 2 -18 531 904 ; -C -1 ; WX 608 ; N dcaron ; B -21 -13 675 708 ; -C -1 ; WX 722 ; N Umacron ; B 67 -18 744 830 ; -C -1 ; WX 556 ; N uring ; B 15 -9 492 729 ; -C 179 ; WX 300 ; N threesuperior ; B 17 265 321 683 ; -C 210 ; WX 722 ; N Ograve ; B 27 -18 691 904 ; -C 192 ; WX 667 ; N Agrave ; B -67 0 593 904 ; -C -1 ; WX 667 ; N Abreve ; B -67 0 593 885 ; -C 215 ; WX 570 ; N multiply ; B 48 16 522 490 ; -C 250 ; WX 556 ; N uacute ; B 15 -9 492 697 ; -C -1 ; WX 611 ; N Tcaron ; B 50 0 650 897 ; -C -1 ; WX 494 ; N partialdiff ; B 11 -21 494 750 ; -C 255 ; WX 444 ; N ydieresis ; B -94 -205 443 655 ; -C -1 ; WX 722 ; N Nacute ; B -27 -15 748 904 ; -C 238 ; WX 278 ; N icircumflex ; B -3 -9 324 690 ; -C 202 ; WX 667 ; N Ecircumflex ; B -27 0 653 897 ; -C 228 ; WX 500 ; N adieresis ; B -21 -14 476 655 ; -C 235 ; WX 444 ; N edieresis ; B 5 -13 448 655 ; -C -1 ; WX 444 ; N cacute ; B -5 -13 435 697 ; -C -1 ; WX 556 ; N nacute ; B -6 -9 493 697 ; -C -1 ; WX 556 ; N umacron ; B 15 -9 492 623 ; -C -1 ; WX 722 ; N Ncaron ; B -27 -15 748 897 ; -C 205 ; WX 389 ; N Iacute ; B -32 0 432 904 ; -C 177 ; WX 570 ; N plusminus ; B 33 0 537 506 ; -C 166 ; WX 220 ; N brokenbar ; B 66 -143 154 707 ; -C 174 ; WX 747 ; N registered ; B 30 -18 718 685 ; -C -1 ; WX 722 ; N Gbreve ; B 21 -18 706 885 ; -C -1 ; WX 389 ; N Idotaccent ; B -32 0 406 862 ; -C -1 ; WX 600 ; N summation ; B 14 -10 585 706 ; -C 200 ; WX 667 ; N Egrave ; B -27 0 653 904 ; -C -1 ; WX 389 ; N racute ; B -21 0 407 697 ; -C -1 ; WX 500 ; N omacron ; B -3 -13 462 623 ; -C -1 ; WX 611 ; N Zacute ; B -11 0 590 904 ; -C 142 ; WX 611 ; N Zcaron ; B -11 0 590 897 ; -C -1 ; WX 549 ; N greaterequal ; B 26 0 523 704 ; -C 208 ; WX 722 ; N Eth ; B -31 0 700 669 ; -C 199 ; WX 667 ; N Ccedilla ; B 32 -218 677 685 ; -C -1 ; WX 278 ; N lcommaaccent ; B -42 -218 290 699 ; -C -1 ; WX 366 ; N tcaron ; B -11 -9 434 754 ; -C -1 ; WX 444 ; N eogonek ; B 5 -183 398 462 ; -C -1 ; WX 722 ; N Uogonek ; B 67 -183 744 669 ; -C 193 ; WX 667 ; N Aacute ; B -67 0 593 904 ; -C 196 ; WX 667 ; N Adieresis ; B -67 0 593 862 ; -C 232 ; WX 444 ; N egrave ; B 5 -13 398 697 ; -C -1 ; WX 389 ; N zacute ; B -43 -78 407 697 ; -C -1 ; WX 278 ; N iogonek ; B -20 -183 263 684 ; -C 211 ; WX 722 ; N Oacute ; B 27 -18 691 904 ; -C 243 ; WX 500 ; N oacute ; B -3 -13 463 697 ; -C -1 ; WX 500 ; N amacron ; B -21 -14 467 623 ; -C -1 ; WX 389 ; N sacute ; B -19 -13 407 697 ; -C 239 ; WX 278 ; N idieresis ; B 2 -9 364 655 ; -C 212 ; WX 722 ; N Ocircumflex ; B 27 -18 691 897 ; -C 217 ; WX 722 ; N Ugrave ; B 67 -18 744 904 ; -C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; -C 254 ; WX 500 ; N thorn ; B -120 -205 446 699 ; -C 178 ; WX 300 ; N twosuperior ; B 2 274 313 683 ; -C 214 ; WX 722 ; N Odieresis ; B 27 -18 691 862 ; -C 181 ; WX 576 ; N mu ; B -60 -207 516 449 ; -C 236 ; WX 278 ; N igrave ; B 2 -9 259 697 ; -C -1 ; WX 500 ; N ohungarumlaut ; B -3 -13 582 697 ; -C -1 ; WX 667 ; N Eogonek ; B -27 -183 653 669 ; -C -1 ; WX 500 ; N dcroat ; B -21 -13 552 699 ; -C 190 ; WX 750 ; N threequarters ; B 7 -14 726 683 ; -C -1 ; WX 556 ; N Scedilla ; B 2 -218 526 685 ; -C -1 ; WX 382 ; N lcaron ; B 2 -9 448 708 ; -C -1 ; WX 667 ; N Kcommaaccent ; B -21 -218 702 669 ; -C -1 ; WX 611 ; N Lacute ; B -22 0 590 904 ; -C 153 ; WX 1000 ; N trademark ; B 32 263 968 669 ; -C -1 ; WX 444 ; N edotaccent ; B 5 -13 398 655 ; -C 204 ; WX 389 ; N Igrave ; B -32 0 406 904 ; -C -1 ; WX 389 ; N Imacron ; B -32 0 461 830 ; -C -1 ; WX 611 ; N Lcaron ; B -22 0 671 718 ; -C 189 ; WX 750 ; N onehalf ; B -9 -14 723 683 ; -C -1 ; WX 549 ; N lessequal ; B 29 0 526 704 ; -C 244 ; WX 500 ; N ocircumflex ; B -3 -13 451 690 ; -C 241 ; WX 556 ; N ntilde ; B -6 -9 504 655 ; -C -1 ; WX 722 ; N Uhungarumlaut ; B 67 -18 744 904 ; -C 201 ; WX 667 ; N Eacute ; B -27 0 653 904 ; -C -1 ; WX 444 ; N emacron ; B 5 -13 439 623 ; -C -1 ; WX 500 ; N gbreve ; B -52 -203 478 678 ; -C 188 ; WX 750 ; N onequarter ; B 7 -14 721 683 ; -C 138 ; WX 556 ; N Scaron ; B 2 -18 553 897 ; -C -1 ; WX 556 ; N Scommaaccent ; B 2 -218 526 685 ; -C -1 ; WX 722 ; N Ohungarumlaut ; B 27 -18 723 904 ; -C 176 ; WX 400 ; N degree ; B 83 397 369 683 ; -C 242 ; WX 500 ; N ograve ; B -3 -13 441 697 ; -C -1 ; WX 667 ; N Ccaron ; B 32 -18 677 897 ; -C 249 ; WX 556 ; N ugrave ; B 15 -9 492 697 ; -C -1 ; WX 549 ; N radical ; B 10 -46 512 850 ; -C -1 ; WX 722 ; N Dcaron ; B -46 0 685 897 ; -C -1 ; WX 389 ; N rcommaaccent ; B -67 -218 389 462 ; -C 209 ; WX 722 ; N Ntilde ; B -27 -15 748 862 ; -C 245 ; WX 500 ; N otilde ; B -3 -13 491 655 ; -C -1 ; WX 667 ; N Rcommaaccent ; B -29 -218 623 669 ; -C -1 ; WX 611 ; N Lcommaaccent ; B -22 -218 590 669 ; -C 195 ; WX 667 ; N Atilde ; B -67 0 593 862 ; -C -1 ; WX 667 ; N Aogonek ; B -67 -183 604 683 ; -C 197 ; WX 667 ; N Aring ; B -67 0 593 921 ; -C 213 ; WX 722 ; N Otilde ; B 27 -18 691 862 ; -C -1 ; WX 389 ; N zdotaccent ; B -43 -78 368 655 ; -C -1 ; WX 667 ; N Ecaron ; B -27 0 653 897 ; -C -1 ; WX 389 ; N Iogonek ; B -32 -183 406 669 ; -C -1 ; WX 500 ; N kcommaaccent ; B -23 -218 483 699 ; -C -1 ; WX 606 ; N minus ; B 51 209 555 297 ; -C 206 ; WX 389 ; N Icircumflex ; B -32 0 450 897 ; -C -1 ; WX 556 ; N ncaron ; B -6 -9 523 690 ; -C -1 ; WX 278 ; N tcommaaccent ; B -62 -218 281 594 ; -C 172 ; WX 606 ; N logicalnot ; B 51 108 555 399 ; -C 246 ; WX 500 ; N odieresis ; B -3 -13 471 655 ; -C 252 ; WX 556 ; N udieresis ; B 15 -9 499 655 ; -C -1 ; WX 549 ; N notequal ; B 15 -49 540 570 ; -C -1 ; WX 500 ; N gcommaaccent ; B -52 -203 478 767 ; -C 240 ; WX 500 ; N eth ; B -3 -13 454 699 ; -C 158 ; WX 389 ; N zcaron ; B -43 -78 424 690 ; -C -1 ; WX 556 ; N ncommaaccent ; B -6 -218 493 462 ; -C 185 ; WX 300 ; N onesuperior ; B 30 274 301 683 ; -C -1 ; WX 278 ; N imacron ; B 2 -9 294 623 ; -C 128 ; WX 500 ; N Euro ; B 0 0 0 0 ; -EndCharMetrics -StartKernData -StartKernPairs 2038 -KPX A C -65 -KPX A Cacute -65 -KPX A Ccaron -65 -KPX A Ccedilla -65 -KPX A G -60 -KPX A Gbreve -60 -KPX A Gcommaaccent -60 -KPX A O -50 -KPX A Oacute -50 -KPX A Ocircumflex -50 -KPX A Odieresis -50 -KPX A Ograve -50 -KPX A Ohungarumlaut -50 -KPX A Omacron -50 -KPX A Oslash -50 -KPX A Otilde -50 -KPX A Q -55 -KPX A T -55 -KPX A Tcaron -55 -KPX A Tcommaaccent -55 -KPX A U -50 -KPX A Uacute -50 -KPX A Ucircumflex -50 -KPX A Udieresis -50 -KPX A Ugrave -50 -KPX A Uhungarumlaut -50 -KPX A Umacron -50 -KPX A Uogonek -50 -KPX A Uring -50 -KPX A V -95 -KPX A W -100 -KPX A Y -70 -KPX A Yacute -70 -KPX A Ydieresis -70 -KPX A quoteright -74 -KPX A u -30 -KPX A uacute -30 -KPX A ucircumflex -30 -KPX A udieresis -30 -KPX A ugrave -30 -KPX A uhungarumlaut -30 -KPX A umacron -30 -KPX A uogonek -30 -KPX A uring -30 -KPX A v -74 -KPX A w -74 -KPX A y -74 -KPX A yacute -74 -KPX A ydieresis -74 -KPX Aacute C -65 -KPX Aacute Cacute -65 -KPX Aacute Ccaron -65 -KPX Aacute Ccedilla -65 -KPX Aacute G -60 -KPX Aacute Gbreve -60 -KPX Aacute Gcommaaccent -60 -KPX Aacute O -50 -KPX Aacute Oacute -50 -KPX Aacute Ocircumflex -50 -KPX Aacute Odieresis -50 -KPX Aacute Ograve -50 -KPX Aacute Ohungarumlaut -50 -KPX Aacute Omacron -50 -KPX Aacute Oslash -50 -KPX Aacute Otilde -50 -KPX Aacute Q -55 -KPX Aacute T -55 -KPX Aacute Tcaron -55 -KPX Aacute Tcommaaccent -55 -KPX Aacute U -50 -KPX Aacute Uacute -50 -KPX Aacute Ucircumflex -50 -KPX Aacute Udieresis -50 -KPX Aacute Ugrave -50 -KPX Aacute Uhungarumlaut -50 -KPX Aacute Umacron -50 -KPX Aacute Uogonek -50 -KPX Aacute Uring -50 -KPX Aacute V -95 -KPX Aacute W -100 -KPX Aacute Y -70 -KPX Aacute Yacute -70 -KPX Aacute Ydieresis -70 -KPX Aacute quoteright -74 -KPX Aacute u -30 -KPX Aacute uacute -30 -KPX Aacute ucircumflex -30 -KPX Aacute udieresis -30 -KPX Aacute ugrave -30 -KPX Aacute uhungarumlaut -30 -KPX Aacute umacron -30 -KPX Aacute uogonek -30 -KPX Aacute uring -30 -KPX Aacute v -74 -KPX Aacute w -74 -KPX Aacute y -74 -KPX Aacute yacute -74 -KPX Aacute ydieresis -74 -KPX Abreve C -65 -KPX Abreve Cacute -65 -KPX Abreve Ccaron -65 -KPX Abreve Ccedilla -65 -KPX Abreve G -60 -KPX Abreve Gbreve -60 -KPX Abreve Gcommaaccent -60 -KPX Abreve O -50 -KPX Abreve Oacute -50 -KPX Abreve Ocircumflex -50 -KPX Abreve Odieresis -50 -KPX Abreve Ograve -50 -KPX Abreve Ohungarumlaut -50 -KPX Abreve Omacron -50 -KPX Abreve Oslash -50 -KPX Abreve Otilde -50 -KPX Abreve Q -55 -KPX Abreve T -55 -KPX Abreve Tcaron -55 -KPX Abreve Tcommaaccent -55 -KPX Abreve U -50 -KPX Abreve Uacute -50 -KPX Abreve Ucircumflex -50 -KPX Abreve Udieresis -50 -KPX Abreve Ugrave -50 -KPX Abreve Uhungarumlaut -50 -KPX Abreve Umacron -50 -KPX Abreve Uogonek -50 -KPX Abreve Uring -50 -KPX Abreve V -95 -KPX Abreve W -100 -KPX Abreve Y -70 -KPX Abreve Yacute -70 -KPX Abreve Ydieresis -70 -KPX Abreve quoteright -74 -KPX Abreve u -30 -KPX Abreve uacute -30 -KPX Abreve ucircumflex -30 -KPX Abreve udieresis -30 -KPX Abreve ugrave -30 -KPX Abreve uhungarumlaut -30 -KPX Abreve umacron -30 -KPX Abreve uogonek -30 -KPX Abreve uring -30 -KPX Abreve v -74 -KPX Abreve w -74 -KPX Abreve y -74 -KPX Abreve yacute -74 -KPX Abreve ydieresis -74 -KPX Acircumflex C -65 -KPX Acircumflex Cacute -65 -KPX Acircumflex Ccaron -65 -KPX Acircumflex Ccedilla -65 -KPX Acircumflex G -60 -KPX Acircumflex Gbreve -60 -KPX Acircumflex Gcommaaccent -60 -KPX Acircumflex O -50 -KPX Acircumflex Oacute -50 -KPX Acircumflex Ocircumflex -50 -KPX Acircumflex Odieresis -50 -KPX Acircumflex Ograve -50 -KPX Acircumflex Ohungarumlaut -50 -KPX Acircumflex Omacron -50 -KPX Acircumflex Oslash -50 -KPX Acircumflex Otilde -50 -KPX Acircumflex Q -55 -KPX Acircumflex T -55 -KPX Acircumflex Tcaron -55 -KPX Acircumflex Tcommaaccent -55 -KPX Acircumflex U -50 -KPX Acircumflex Uacute -50 -KPX Acircumflex Ucircumflex -50 -KPX Acircumflex Udieresis -50 -KPX Acircumflex Ugrave -50 -KPX Acircumflex Uhungarumlaut -50 -KPX Acircumflex Umacron -50 -KPX Acircumflex Uogonek -50 -KPX Acircumflex Uring -50 -KPX Acircumflex V -95 -KPX Acircumflex W -100 -KPX Acircumflex Y -70 -KPX Acircumflex Yacute -70 -KPX Acircumflex Ydieresis -70 -KPX Acircumflex quoteright -74 -KPX Acircumflex u -30 -KPX Acircumflex uacute -30 -KPX Acircumflex ucircumflex -30 -KPX Acircumflex udieresis -30 -KPX Acircumflex ugrave -30 -KPX Acircumflex uhungarumlaut -30 -KPX Acircumflex umacron -30 -KPX Acircumflex uogonek -30 -KPX Acircumflex uring -30 -KPX Acircumflex v -74 -KPX Acircumflex w -74 -KPX Acircumflex y -74 -KPX Acircumflex yacute -74 -KPX Acircumflex ydieresis -74 -KPX Adieresis C -65 -KPX Adieresis Cacute -65 -KPX Adieresis Ccaron -65 -KPX Adieresis Ccedilla -65 -KPX Adieresis G -60 -KPX Adieresis Gbreve -60 -KPX Adieresis Gcommaaccent -60 -KPX Adieresis O -50 -KPX Adieresis Oacute -50 -KPX Adieresis Ocircumflex -50 -KPX Adieresis Odieresis -50 -KPX Adieresis Ograve -50 -KPX Adieresis Ohungarumlaut -50 -KPX Adieresis Omacron -50 -KPX Adieresis Oslash -50 -KPX Adieresis Otilde -50 -KPX Adieresis Q -55 -KPX Adieresis T -55 -KPX Adieresis Tcaron -55 -KPX Adieresis Tcommaaccent -55 -KPX Adieresis U -50 -KPX Adieresis Uacute -50 -KPX Adieresis Ucircumflex -50 -KPX Adieresis Udieresis -50 -KPX Adieresis Ugrave -50 -KPX Adieresis Uhungarumlaut -50 -KPX Adieresis Umacron -50 -KPX Adieresis Uogonek -50 -KPX Adieresis Uring -50 -KPX Adieresis V -95 -KPX Adieresis W -100 -KPX Adieresis Y -70 -KPX Adieresis Yacute -70 -KPX Adieresis Ydieresis -70 -KPX Adieresis quoteright -74 -KPX Adieresis u -30 -KPX Adieresis uacute -30 -KPX Adieresis ucircumflex -30 -KPX Adieresis udieresis -30 -KPX Adieresis ugrave -30 -KPX Adieresis uhungarumlaut -30 -KPX Adieresis umacron -30 -KPX Adieresis uogonek -30 -KPX Adieresis uring -30 -KPX Adieresis v -74 -KPX Adieresis w -74 -KPX Adieresis y -74 -KPX Adieresis yacute -74 -KPX Adieresis ydieresis -74 -KPX Agrave C -65 -KPX Agrave Cacute -65 -KPX Agrave Ccaron -65 -KPX Agrave Ccedilla -65 -KPX Agrave G -60 -KPX Agrave Gbreve -60 -KPX Agrave Gcommaaccent -60 -KPX Agrave O -50 -KPX Agrave Oacute -50 -KPX Agrave Ocircumflex -50 -KPX Agrave Odieresis -50 -KPX Agrave Ograve -50 -KPX Agrave Ohungarumlaut -50 -KPX Agrave Omacron -50 -KPX Agrave Oslash -50 -KPX Agrave Otilde -50 -KPX Agrave Q -55 -KPX Agrave T -55 -KPX Agrave Tcaron -55 -KPX Agrave Tcommaaccent -55 -KPX Agrave U -50 -KPX Agrave Uacute -50 -KPX Agrave Ucircumflex -50 -KPX Agrave Udieresis -50 -KPX Agrave Ugrave -50 -KPX Agrave Uhungarumlaut -50 -KPX Agrave Umacron -50 -KPX Agrave Uogonek -50 -KPX Agrave Uring -50 -KPX Agrave V -95 -KPX Agrave W -100 -KPX Agrave Y -70 -KPX Agrave Yacute -70 -KPX Agrave Ydieresis -70 -KPX Agrave quoteright -74 -KPX Agrave u -30 -KPX Agrave uacute -30 -KPX Agrave ucircumflex -30 -KPX Agrave udieresis -30 -KPX Agrave ugrave -30 -KPX Agrave uhungarumlaut -30 -KPX Agrave umacron -30 -KPX Agrave uogonek -30 -KPX Agrave uring -30 -KPX Agrave v -74 -KPX Agrave w -74 -KPX Agrave y -74 -KPX Agrave yacute -74 -KPX Agrave ydieresis -74 -KPX Amacron C -65 -KPX Amacron Cacute -65 -KPX Amacron Ccaron -65 -KPX Amacron Ccedilla -65 -KPX Amacron G -60 -KPX Amacron Gbreve -60 -KPX Amacron Gcommaaccent -60 -KPX Amacron O -50 -KPX Amacron Oacute -50 -KPX Amacron Ocircumflex -50 -KPX Amacron Odieresis -50 -KPX Amacron Ograve -50 -KPX Amacron Ohungarumlaut -50 -KPX Amacron Omacron -50 -KPX Amacron Oslash -50 -KPX Amacron Otilde -50 -KPX Amacron Q -55 -KPX Amacron T -55 -KPX Amacron Tcaron -55 -KPX Amacron Tcommaaccent -55 -KPX Amacron U -50 -KPX Amacron Uacute -50 -KPX Amacron Ucircumflex -50 -KPX Amacron Udieresis -50 -KPX Amacron Ugrave -50 -KPX Amacron Uhungarumlaut -50 -KPX Amacron Umacron -50 -KPX Amacron Uogonek -50 -KPX Amacron Uring -50 -KPX Amacron V -95 -KPX Amacron W -100 -KPX Amacron Y -70 -KPX Amacron Yacute -70 -KPX Amacron Ydieresis -70 -KPX Amacron quoteright -74 -KPX Amacron u -30 -KPX Amacron uacute -30 -KPX Amacron ucircumflex -30 -KPX Amacron udieresis -30 -KPX Amacron ugrave -30 -KPX Amacron uhungarumlaut -30 -KPX Amacron umacron -30 -KPX Amacron uogonek -30 -KPX Amacron uring -30 -KPX Amacron v -74 -KPX Amacron w -74 -KPX Amacron y -74 -KPX Amacron yacute -74 -KPX Amacron ydieresis -74 -KPX Aogonek C -65 -KPX Aogonek Cacute -65 -KPX Aogonek Ccaron -65 -KPX Aogonek Ccedilla -65 -KPX Aogonek G -60 -KPX Aogonek Gbreve -60 -KPX Aogonek Gcommaaccent -60 -KPX Aogonek O -50 -KPX Aogonek Oacute -50 -KPX Aogonek Ocircumflex -50 -KPX Aogonek Odieresis -50 -KPX Aogonek Ograve -50 -KPX Aogonek Ohungarumlaut -50 -KPX Aogonek Omacron -50 -KPX Aogonek Oslash -50 -KPX Aogonek Otilde -50 -KPX Aogonek Q -55 -KPX Aogonek T -55 -KPX Aogonek Tcaron -55 -KPX Aogonek Tcommaaccent -55 -KPX Aogonek U -50 -KPX Aogonek Uacute -50 -KPX Aogonek Ucircumflex -50 -KPX Aogonek Udieresis -50 -KPX Aogonek Ugrave -50 -KPX Aogonek Uhungarumlaut -50 -KPX Aogonek Umacron -50 -KPX Aogonek Uogonek -50 -KPX Aogonek Uring -50 -KPX Aogonek V -95 -KPX Aogonek W -100 -KPX Aogonek Y -70 -KPX Aogonek Yacute -70 -KPX Aogonek Ydieresis -70 -KPX Aogonek quoteright -74 -KPX Aogonek u -30 -KPX Aogonek uacute -30 -KPX Aogonek ucircumflex -30 -KPX Aogonek udieresis -30 -KPX Aogonek ugrave -30 -KPX Aogonek uhungarumlaut -30 -KPX Aogonek umacron -30 -KPX Aogonek uogonek -30 -KPX Aogonek uring -30 -KPX Aogonek v -74 -KPX Aogonek w -74 -KPX Aogonek y -34 -KPX Aogonek yacute -34 -KPX Aogonek ydieresis -34 -KPX Aring C -65 -KPX Aring Cacute -65 -KPX Aring Ccaron -65 -KPX Aring Ccedilla -65 -KPX Aring G -60 -KPX Aring Gbreve -60 -KPX Aring Gcommaaccent -60 -KPX Aring O -50 -KPX Aring Oacute -50 -KPX Aring Ocircumflex -50 -KPX Aring Odieresis -50 -KPX Aring Ograve -50 -KPX Aring Ohungarumlaut -50 -KPX Aring Omacron -50 -KPX Aring Oslash -50 -KPX Aring Otilde -50 -KPX Aring Q -55 -KPX Aring T -55 -KPX Aring Tcaron -55 -KPX Aring Tcommaaccent -55 -KPX Aring U -50 -KPX Aring Uacute -50 -KPX Aring Ucircumflex -50 -KPX Aring Udieresis -50 -KPX Aring Ugrave -50 -KPX Aring Uhungarumlaut -50 -KPX Aring Umacron -50 -KPX Aring Uogonek -50 -KPX Aring Uring -50 -KPX Aring V -95 -KPX Aring W -100 -KPX Aring Y -70 -KPX Aring Yacute -70 -KPX Aring Ydieresis -70 -KPX Aring quoteright -74 -KPX Aring u -30 -KPX Aring uacute -30 -KPX Aring ucircumflex -30 -KPX Aring udieresis -30 -KPX Aring ugrave -30 -KPX Aring uhungarumlaut -30 -KPX Aring umacron -30 -KPX Aring uogonek -30 -KPX Aring uring -30 -KPX Aring v -74 -KPX Aring w -74 -KPX Aring y -74 -KPX Aring yacute -74 -KPX Aring ydieresis -74 -KPX Atilde C -65 -KPX Atilde Cacute -65 -KPX Atilde Ccaron -65 -KPX Atilde Ccedilla -65 -KPX Atilde G -60 -KPX Atilde Gbreve -60 -KPX Atilde Gcommaaccent -60 -KPX Atilde O -50 -KPX Atilde Oacute -50 -KPX Atilde Ocircumflex -50 -KPX Atilde Odieresis -50 -KPX Atilde Ograve -50 -KPX Atilde Ohungarumlaut -50 -KPX Atilde Omacron -50 -KPX Atilde Oslash -50 -KPX Atilde Otilde -50 -KPX Atilde Q -55 -KPX Atilde T -55 -KPX Atilde Tcaron -55 -KPX Atilde Tcommaaccent -55 -KPX Atilde U -50 -KPX Atilde Uacute -50 -KPX Atilde Ucircumflex -50 -KPX Atilde Udieresis -50 -KPX Atilde Ugrave -50 -KPX Atilde Uhungarumlaut -50 -KPX Atilde Umacron -50 -KPX Atilde Uogonek -50 -KPX Atilde Uring -50 -KPX Atilde V -95 -KPX Atilde W -100 -KPX Atilde Y -70 -KPX Atilde Yacute -70 -KPX Atilde Ydieresis -70 -KPX Atilde quoteright -74 -KPX Atilde u -30 -KPX Atilde uacute -30 -KPX Atilde ucircumflex -30 -KPX Atilde udieresis -30 -KPX Atilde ugrave -30 -KPX Atilde uhungarumlaut -30 -KPX Atilde umacron -30 -KPX Atilde uogonek -30 -KPX Atilde uring -30 -KPX Atilde v -74 -KPX Atilde w -74 -KPX Atilde y -74 -KPX Atilde yacute -74 -KPX Atilde ydieresis -74 -KPX B A -25 -KPX B Aacute -25 -KPX B Abreve -25 -KPX B Acircumflex -25 -KPX B Adieresis -25 -KPX B Agrave -25 -KPX B Amacron -25 -KPX B Aogonek -25 -KPX B Aring -25 -KPX B Atilde -25 -KPX B U -10 -KPX B Uacute -10 -KPX B Ucircumflex -10 -KPX B Udieresis -10 -KPX B Ugrave -10 -KPX B Uhungarumlaut -10 -KPX B Umacron -10 -KPX B Uogonek -10 -KPX B Uring -10 -KPX D A -25 -KPX D Aacute -25 -KPX D Abreve -25 -KPX D Acircumflex -25 -KPX D Adieresis -25 -KPX D Agrave -25 -KPX D Amacron -25 -KPX D Aogonek -25 -KPX D Aring -25 -KPX D Atilde -25 -KPX D V -50 -KPX D W -40 -KPX D Y -50 -KPX D Yacute -50 -KPX D Ydieresis -50 -KPX Dcaron A -25 -KPX Dcaron Aacute -25 -KPX Dcaron Abreve -25 -KPX Dcaron Acircumflex -25 -KPX Dcaron Adieresis -25 -KPX Dcaron Agrave -25 -KPX Dcaron Amacron -25 -KPX Dcaron Aogonek -25 -KPX Dcaron Aring -25 -KPX Dcaron Atilde -25 -KPX Dcaron V -50 -KPX Dcaron W -40 -KPX Dcaron Y -50 -KPX Dcaron Yacute -50 -KPX Dcaron Ydieresis -50 -KPX Dcroat A -25 -KPX Dcroat Aacute -25 -KPX Dcroat Abreve -25 -KPX Dcroat Acircumflex -25 -KPX Dcroat Adieresis -25 -KPX Dcroat Agrave -25 -KPX Dcroat Amacron -25 -KPX Dcroat Aogonek -25 -KPX Dcroat Aring -25 -KPX Dcroat Atilde -25 -KPX Dcroat V -50 -KPX Dcroat W -40 -KPX Dcroat Y -50 -KPX Dcroat Yacute -50 -KPX Dcroat Ydieresis -50 -KPX F A -100 -KPX F Aacute -100 -KPX F Abreve -100 -KPX F Acircumflex -100 -KPX F Adieresis -100 -KPX F Agrave -100 -KPX F Amacron -100 -KPX F Aogonek -100 -KPX F Aring -100 -KPX F Atilde -100 -KPX F a -95 -KPX F aacute -95 -KPX F abreve -95 -KPX F acircumflex -95 -KPX F adieresis -95 -KPX F agrave -95 -KPX F amacron -95 -KPX F aogonek -95 -KPX F aring -95 -KPX F atilde -95 -KPX F comma -129 -KPX F e -100 -KPX F eacute -100 -KPX F ecaron -100 -KPX F ecircumflex -100 -KPX F edieresis -100 -KPX F edotaccent -100 -KPX F egrave -100 -KPX F emacron -100 -KPX F eogonek -100 -KPX F i -40 -KPX F iacute -40 -KPX F icircumflex -40 -KPX F idieresis -40 -KPX F igrave -40 -KPX F imacron -40 -KPX F iogonek -40 -KPX F o -70 -KPX F oacute -70 -KPX F ocircumflex -70 -KPX F odieresis -70 -KPX F ograve -70 -KPX F ohungarumlaut -70 -KPX F omacron -70 -KPX F oslash -70 -KPX F otilde -70 -KPX F period -129 -KPX F r -50 -KPX F racute -50 -KPX F rcaron -50 -KPX F rcommaaccent -50 -KPX J A -25 -KPX J Aacute -25 -KPX J Abreve -25 -KPX J Acircumflex -25 -KPX J Adieresis -25 -KPX J Agrave -25 -KPX J Amacron -25 -KPX J Aogonek -25 -KPX J Aring -25 -KPX J Atilde -25 -KPX J a -40 -KPX J aacute -40 -KPX J abreve -40 -KPX J acircumflex -40 -KPX J adieresis -40 -KPX J agrave -40 -KPX J amacron -40 -KPX J aogonek -40 -KPX J aring -40 -KPX J atilde -40 -KPX J comma -10 -KPX J e -40 -KPX J eacute -40 -KPX J ecaron -40 -KPX J ecircumflex -40 -KPX J edieresis -40 -KPX J edotaccent -40 -KPX J egrave -40 -KPX J emacron -40 -KPX J eogonek -40 -KPX J o -40 -KPX J oacute -40 -KPX J ocircumflex -40 -KPX J odieresis -40 -KPX J ograve -40 -KPX J ohungarumlaut -40 -KPX J omacron -40 -KPX J oslash -40 -KPX J otilde -40 -KPX J period -10 -KPX J u -40 -KPX J uacute -40 -KPX J ucircumflex -40 -KPX J udieresis -40 -KPX J ugrave -40 -KPX J uhungarumlaut -40 -KPX J umacron -40 -KPX J uogonek -40 -KPX J uring -40 -KPX K O -30 -KPX K Oacute -30 -KPX K Ocircumflex -30 -KPX K Odieresis -30 -KPX K Ograve -30 -KPX K Ohungarumlaut -30 -KPX K Omacron -30 -KPX K Oslash -30 -KPX K Otilde -30 -KPX K e -25 -KPX K eacute -25 -KPX K ecaron -25 -KPX K ecircumflex -25 -KPX K edieresis -25 -KPX K edotaccent -25 -KPX K egrave -25 -KPX K emacron -25 -KPX K eogonek -25 -KPX K o -25 -KPX K oacute -25 -KPX K ocircumflex -25 -KPX K odieresis -25 -KPX K ograve -25 -KPX K ohungarumlaut -25 -KPX K omacron -25 -KPX K oslash -25 -KPX K otilde -25 -KPX K u -20 -KPX K uacute -20 -KPX K ucircumflex -20 -KPX K udieresis -20 -KPX K ugrave -20 -KPX K uhungarumlaut -20 -KPX K umacron -20 -KPX K uogonek -20 -KPX K uring -20 -KPX K y -20 -KPX K yacute -20 -KPX K ydieresis -20 -KPX Kcommaaccent O -30 -KPX Kcommaaccent Oacute -30 -KPX Kcommaaccent Ocircumflex -30 -KPX Kcommaaccent Odieresis -30 -KPX Kcommaaccent Ograve -30 -KPX Kcommaaccent Ohungarumlaut -30 -KPX Kcommaaccent Omacron -30 -KPX Kcommaaccent Oslash -30 -KPX Kcommaaccent Otilde -30 -KPX Kcommaaccent e -25 -KPX Kcommaaccent eacute -25 -KPX Kcommaaccent ecaron -25 -KPX Kcommaaccent ecircumflex -25 -KPX Kcommaaccent edieresis -25 -KPX Kcommaaccent edotaccent -25 -KPX Kcommaaccent egrave -25 -KPX Kcommaaccent emacron -25 -KPX Kcommaaccent eogonek -25 -KPX Kcommaaccent o -25 -KPX Kcommaaccent oacute -25 -KPX Kcommaaccent ocircumflex -25 -KPX Kcommaaccent odieresis -25 -KPX Kcommaaccent ograve -25 -KPX Kcommaaccent ohungarumlaut -25 -KPX Kcommaaccent omacron -25 -KPX Kcommaaccent oslash -25 -KPX Kcommaaccent otilde -25 -KPX Kcommaaccent u -20 -KPX Kcommaaccent uacute -20 -KPX Kcommaaccent ucircumflex -20 -KPX Kcommaaccent udieresis -20 -KPX Kcommaaccent ugrave -20 -KPX Kcommaaccent uhungarumlaut -20 -KPX Kcommaaccent umacron -20 -KPX Kcommaaccent uogonek -20 -KPX Kcommaaccent uring -20 -KPX Kcommaaccent y -20 -KPX Kcommaaccent yacute -20 -KPX Kcommaaccent ydieresis -20 -KPX L T -18 -KPX L Tcaron -18 -KPX L Tcommaaccent -18 -KPX L V -37 -KPX L W -37 -KPX L Y -37 -KPX L Yacute -37 -KPX L Ydieresis -37 -KPX L quoteright -55 -KPX L y -37 -KPX L yacute -37 -KPX L ydieresis -37 -KPX Lacute T -18 -KPX Lacute Tcaron -18 -KPX Lacute Tcommaaccent -18 -KPX Lacute V -37 -KPX Lacute W -37 -KPX Lacute Y -37 -KPX Lacute Yacute -37 -KPX Lacute Ydieresis -37 -KPX Lacute quoteright -55 -KPX Lacute y -37 -KPX Lacute yacute -37 -KPX Lacute ydieresis -37 -KPX Lcommaaccent T -18 -KPX Lcommaaccent Tcaron -18 -KPX Lcommaaccent Tcommaaccent -18 -KPX Lcommaaccent V -37 -KPX Lcommaaccent W -37 -KPX Lcommaaccent Y -37 -KPX Lcommaaccent Yacute -37 -KPX Lcommaaccent Ydieresis -37 -KPX Lcommaaccent quoteright -55 -KPX Lcommaaccent y -37 -KPX Lcommaaccent yacute -37 -KPX Lcommaaccent ydieresis -37 -KPX Lslash T -18 -KPX Lslash Tcaron -18 -KPX Lslash Tcommaaccent -18 -KPX Lslash V -37 -KPX Lslash W -37 -KPX Lslash Y -37 -KPX Lslash Yacute -37 -KPX Lslash Ydieresis -37 -KPX Lslash quoteright -55 -KPX Lslash y -37 -KPX Lslash yacute -37 -KPX Lslash ydieresis -37 -KPX N A -30 -KPX N Aacute -30 -KPX N Abreve -30 -KPX N Acircumflex -30 -KPX N Adieresis -30 -KPX N Agrave -30 -KPX N Amacron -30 -KPX N Aogonek -30 -KPX N Aring -30 -KPX N Atilde -30 -KPX Nacute A -30 -KPX Nacute Aacute -30 -KPX Nacute Abreve -30 -KPX Nacute Acircumflex -30 -KPX Nacute Adieresis -30 -KPX Nacute Agrave -30 -KPX Nacute Amacron -30 -KPX Nacute Aogonek -30 -KPX Nacute Aring -30 -KPX Nacute Atilde -30 -KPX Ncaron A -30 -KPX Ncaron Aacute -30 -KPX Ncaron Abreve -30 -KPX Ncaron Acircumflex -30 -KPX Ncaron Adieresis -30 -KPX Ncaron Agrave -30 -KPX Ncaron Amacron -30 -KPX Ncaron Aogonek -30 -KPX Ncaron Aring -30 -KPX Ncaron Atilde -30 -KPX Ncommaaccent A -30 -KPX Ncommaaccent Aacute -30 -KPX Ncommaaccent Abreve -30 -KPX Ncommaaccent Acircumflex -30 -KPX Ncommaaccent Adieresis -30 -KPX Ncommaaccent Agrave -30 -KPX Ncommaaccent Amacron -30 -KPX Ncommaaccent Aogonek -30 -KPX Ncommaaccent Aring -30 -KPX Ncommaaccent Atilde -30 -KPX Ntilde A -30 -KPX Ntilde Aacute -30 -KPX Ntilde Abreve -30 -KPX Ntilde Acircumflex -30 -KPX Ntilde Adieresis -30 -KPX Ntilde Agrave -30 -KPX Ntilde Amacron -30 -KPX Ntilde Aogonek -30 -KPX Ntilde Aring -30 -KPX Ntilde Atilde -30 -KPX O A -40 -KPX O Aacute -40 -KPX O Abreve -40 -KPX O Acircumflex -40 -KPX O Adieresis -40 -KPX O Agrave -40 -KPX O Amacron -40 -KPX O Aogonek -40 -KPX O Aring -40 -KPX O Atilde -40 -KPX O T -40 -KPX O Tcaron -40 -KPX O Tcommaaccent -40 -KPX O V -50 -KPX O W -50 -KPX O X -40 -KPX O Y -50 -KPX O Yacute -50 -KPX O Ydieresis -50 -KPX Oacute A -40 -KPX Oacute Aacute -40 -KPX Oacute Abreve -40 -KPX Oacute Acircumflex -40 -KPX Oacute Adieresis -40 -KPX Oacute Agrave -40 -KPX Oacute Amacron -40 -KPX Oacute Aogonek -40 -KPX Oacute Aring -40 -KPX Oacute Atilde -40 -KPX Oacute T -40 -KPX Oacute Tcaron -40 -KPX Oacute Tcommaaccent -40 -KPX Oacute V -50 -KPX Oacute W -50 -KPX Oacute X -40 -KPX Oacute Y -50 -KPX Oacute Yacute -50 -KPX Oacute Ydieresis -50 -KPX Ocircumflex A -40 -KPX Ocircumflex Aacute -40 -KPX Ocircumflex Abreve -40 -KPX Ocircumflex Acircumflex -40 -KPX Ocircumflex Adieresis -40 -KPX Ocircumflex Agrave -40 -KPX Ocircumflex Amacron -40 -KPX Ocircumflex Aogonek -40 -KPX Ocircumflex Aring -40 -KPX Ocircumflex Atilde -40 -KPX Ocircumflex T -40 -KPX Ocircumflex Tcaron -40 -KPX Ocircumflex Tcommaaccent -40 -KPX Ocircumflex V -50 -KPX Ocircumflex W -50 -KPX Ocircumflex X -40 -KPX Ocircumflex Y -50 -KPX Ocircumflex Yacute -50 -KPX Ocircumflex Ydieresis -50 -KPX Odieresis A -40 -KPX Odieresis Aacute -40 -KPX Odieresis Abreve -40 -KPX Odieresis Acircumflex -40 -KPX Odieresis Adieresis -40 -KPX Odieresis Agrave -40 -KPX Odieresis Amacron -40 -KPX Odieresis Aogonek -40 -KPX Odieresis Aring -40 -KPX Odieresis Atilde -40 -KPX Odieresis T -40 -KPX Odieresis Tcaron -40 -KPX Odieresis Tcommaaccent -40 -KPX Odieresis V -50 -KPX Odieresis W -50 -KPX Odieresis X -40 -KPX Odieresis Y -50 -KPX Odieresis Yacute -50 -KPX Odieresis Ydieresis -50 -KPX Ograve A -40 -KPX Ograve Aacute -40 -KPX Ograve Abreve -40 -KPX Ograve Acircumflex -40 -KPX Ograve Adieresis -40 -KPX Ograve Agrave -40 -KPX Ograve Amacron -40 -KPX Ograve Aogonek -40 -KPX Ograve Aring -40 -KPX Ograve Atilde -40 -KPX Ograve T -40 -KPX Ograve Tcaron -40 -KPX Ograve Tcommaaccent -40 -KPX Ograve V -50 -KPX Ograve W -50 -KPX Ograve X -40 -KPX Ograve Y -50 -KPX Ograve Yacute -50 -KPX Ograve Ydieresis -50 -KPX Ohungarumlaut A -40 -KPX Ohungarumlaut Aacute -40 -KPX Ohungarumlaut Abreve -40 -KPX Ohungarumlaut Acircumflex -40 -KPX Ohungarumlaut Adieresis -40 -KPX Ohungarumlaut Agrave -40 -KPX Ohungarumlaut Amacron -40 -KPX Ohungarumlaut Aogonek -40 -KPX Ohungarumlaut Aring -40 -KPX Ohungarumlaut Atilde -40 -KPX Ohungarumlaut T -40 -KPX Ohungarumlaut Tcaron -40 -KPX Ohungarumlaut Tcommaaccent -40 -KPX Ohungarumlaut V -50 -KPX Ohungarumlaut W -50 -KPX Ohungarumlaut X -40 -KPX Ohungarumlaut Y -50 -KPX Ohungarumlaut Yacute -50 -KPX Ohungarumlaut Ydieresis -50 -KPX Omacron A -40 -KPX Omacron Aacute -40 -KPX Omacron Abreve -40 -KPX Omacron Acircumflex -40 -KPX Omacron Adieresis -40 -KPX Omacron Agrave -40 -KPX Omacron Amacron -40 -KPX Omacron Aogonek -40 -KPX Omacron Aring -40 -KPX Omacron Atilde -40 -KPX Omacron T -40 -KPX Omacron Tcaron -40 -KPX Omacron Tcommaaccent -40 -KPX Omacron V -50 -KPX Omacron W -50 -KPX Omacron X -40 -KPX Omacron Y -50 -KPX Omacron Yacute -50 -KPX Omacron Ydieresis -50 -KPX Oslash A -40 -KPX Oslash Aacute -40 -KPX Oslash Abreve -40 -KPX Oslash Acircumflex -40 -KPX Oslash Adieresis -40 -KPX Oslash Agrave -40 -KPX Oslash Amacron -40 -KPX Oslash Aogonek -40 -KPX Oslash Aring -40 -KPX Oslash Atilde -40 -KPX Oslash T -40 -KPX Oslash Tcaron -40 -KPX Oslash Tcommaaccent -40 -KPX Oslash V -50 -KPX Oslash W -50 -KPX Oslash X -40 -KPX Oslash Y -50 -KPX Oslash Yacute -50 -KPX Oslash Ydieresis -50 -KPX Otilde A -40 -KPX Otilde Aacute -40 -KPX Otilde Abreve -40 -KPX Otilde Acircumflex -40 -KPX Otilde Adieresis -40 -KPX Otilde Agrave -40 -KPX Otilde Amacron -40 -KPX Otilde Aogonek -40 -KPX Otilde Aring -40 -KPX Otilde Atilde -40 -KPX Otilde T -40 -KPX Otilde Tcaron -40 -KPX Otilde Tcommaaccent -40 -KPX Otilde V -50 -KPX Otilde W -50 -KPX Otilde X -40 -KPX Otilde Y -50 -KPX Otilde Yacute -50 -KPX Otilde Ydieresis -50 -KPX P A -85 -KPX P Aacute -85 -KPX P Abreve -85 -KPX P Acircumflex -85 -KPX P Adieresis -85 -KPX P Agrave -85 -KPX P Amacron -85 -KPX P Aogonek -85 -KPX P Aring -85 -KPX P Atilde -85 -KPX P a -40 -KPX P aacute -40 -KPX P abreve -40 -KPX P acircumflex -40 -KPX P adieresis -40 -KPX P agrave -40 -KPX P amacron -40 -KPX P aogonek -40 -KPX P aring -40 -KPX P atilde -40 -KPX P comma -129 -KPX P e -50 -KPX P eacute -50 -KPX P ecaron -50 -KPX P ecircumflex -50 -KPX P edieresis -50 -KPX P edotaccent -50 -KPX P egrave -50 -KPX P emacron -50 -KPX P eogonek -50 -KPX P o -55 -KPX P oacute -55 -KPX P ocircumflex -55 -KPX P odieresis -55 -KPX P ograve -55 -KPX P ohungarumlaut -55 -KPX P omacron -55 -KPX P oslash -55 -KPX P otilde -55 -KPX P period -129 -KPX Q U -10 -KPX Q Uacute -10 -KPX Q Ucircumflex -10 -KPX Q Udieresis -10 -KPX Q Ugrave -10 -KPX Q Uhungarumlaut -10 -KPX Q Umacron -10 -KPX Q Uogonek -10 -KPX Q Uring -10 -KPX R O -40 -KPX R Oacute -40 -KPX R Ocircumflex -40 -KPX R Odieresis -40 -KPX R Ograve -40 -KPX R Ohungarumlaut -40 -KPX R Omacron -40 -KPX R Oslash -40 -KPX R Otilde -40 -KPX R T -30 -KPX R Tcaron -30 -KPX R Tcommaaccent -30 -KPX R U -40 -KPX R Uacute -40 -KPX R Ucircumflex -40 -KPX R Udieresis -40 -KPX R Ugrave -40 -KPX R Uhungarumlaut -40 -KPX R Umacron -40 -KPX R Uogonek -40 -KPX R Uring -40 -KPX R V -18 -KPX R W -18 -KPX R Y -18 -KPX R Yacute -18 -KPX R Ydieresis -18 -KPX Racute O -40 -KPX Racute Oacute -40 -KPX Racute Ocircumflex -40 -KPX Racute Odieresis -40 -KPX Racute Ograve -40 -KPX Racute Ohungarumlaut -40 -KPX Racute Omacron -40 -KPX Racute Oslash -40 -KPX Racute Otilde -40 -KPX Racute T -30 -KPX Racute Tcaron -30 -KPX Racute Tcommaaccent -30 -KPX Racute U -40 -KPX Racute Uacute -40 -KPX Racute Ucircumflex -40 -KPX Racute Udieresis -40 -KPX Racute Ugrave -40 -KPX Racute Uhungarumlaut -40 -KPX Racute Umacron -40 -KPX Racute Uogonek -40 -KPX Racute Uring -40 -KPX Racute V -18 -KPX Racute W -18 -KPX Racute Y -18 -KPX Racute Yacute -18 -KPX Racute Ydieresis -18 -KPX Rcaron O -40 -KPX Rcaron Oacute -40 -KPX Rcaron Ocircumflex -40 -KPX Rcaron Odieresis -40 -KPX Rcaron Ograve -40 -KPX Rcaron Ohungarumlaut -40 -KPX Rcaron Omacron -40 -KPX Rcaron Oslash -40 -KPX Rcaron Otilde -40 -KPX Rcaron T -30 -KPX Rcaron Tcaron -30 -KPX Rcaron Tcommaaccent -30 -KPX Rcaron U -40 -KPX Rcaron Uacute -40 -KPX Rcaron Ucircumflex -40 -KPX Rcaron Udieresis -40 -KPX Rcaron Ugrave -40 -KPX Rcaron Uhungarumlaut -40 -KPX Rcaron Umacron -40 -KPX Rcaron Uogonek -40 -KPX Rcaron Uring -40 -KPX Rcaron V -18 -KPX Rcaron W -18 -KPX Rcaron Y -18 -KPX Rcaron Yacute -18 -KPX Rcaron Ydieresis -18 -KPX Rcommaaccent O -40 -KPX Rcommaaccent Oacute -40 -KPX Rcommaaccent Ocircumflex -40 -KPX Rcommaaccent Odieresis -40 -KPX Rcommaaccent Ograve -40 -KPX Rcommaaccent Ohungarumlaut -40 -KPX Rcommaaccent Omacron -40 -KPX Rcommaaccent Oslash -40 -KPX Rcommaaccent Otilde -40 -KPX Rcommaaccent T -30 -KPX Rcommaaccent Tcaron -30 -KPX Rcommaaccent Tcommaaccent -30 -KPX Rcommaaccent U -40 -KPX Rcommaaccent Uacute -40 -KPX Rcommaaccent Ucircumflex -40 -KPX Rcommaaccent Udieresis -40 -KPX Rcommaaccent Ugrave -40 -KPX Rcommaaccent Uhungarumlaut -40 -KPX Rcommaaccent Umacron -40 -KPX Rcommaaccent Uogonek -40 -KPX Rcommaaccent Uring -40 -KPX Rcommaaccent V -18 -KPX Rcommaaccent W -18 -KPX Rcommaaccent Y -18 -KPX Rcommaaccent Yacute -18 -KPX Rcommaaccent Ydieresis -18 -KPX T A -55 -KPX T Aacute -55 -KPX T Abreve -55 -KPX T Acircumflex -55 -KPX T Adieresis -55 -KPX T Agrave -55 -KPX T Amacron -55 -KPX T Aogonek -55 -KPX T Aring -55 -KPX T Atilde -55 -KPX T O -18 -KPX T Oacute -18 -KPX T Ocircumflex -18 -KPX T Odieresis -18 -KPX T Ograve -18 -KPX T Ohungarumlaut -18 -KPX T Omacron -18 -KPX T Oslash -18 -KPX T Otilde -18 -KPX T a -92 -KPX T aacute -92 -KPX T abreve -92 -KPX T acircumflex -92 -KPX T adieresis -92 -KPX T agrave -92 -KPX T amacron -92 -KPX T aogonek -92 -KPX T aring -92 -KPX T atilde -92 -KPX T colon -74 -KPX T comma -92 -KPX T e -92 -KPX T eacute -92 -KPX T ecaron -92 -KPX T ecircumflex -92 -KPX T edieresis -52 -KPX T edotaccent -92 -KPX T egrave -52 -KPX T emacron -52 -KPX T eogonek -92 -KPX T hyphen -92 -KPX T i -37 -KPX T iacute -37 -KPX T iogonek -37 -KPX T o -95 -KPX T oacute -95 -KPX T ocircumflex -95 -KPX T odieresis -95 -KPX T ograve -95 -KPX T ohungarumlaut -95 -KPX T omacron -95 -KPX T oslash -95 -KPX T otilde -95 -KPX T period -92 -KPX T r -37 -KPX T racute -37 -KPX T rcaron -37 -KPX T rcommaaccent -37 -KPX T semicolon -74 -KPX T u -37 -KPX T uacute -37 -KPX T ucircumflex -37 -KPX T udieresis -37 -KPX T ugrave -37 -KPX T uhungarumlaut -37 -KPX T umacron -37 -KPX T uogonek -37 -KPX T uring -37 -KPX T w -37 -KPX T y -37 -KPX T yacute -37 -KPX T ydieresis -37 -KPX Tcaron A -55 -KPX Tcaron Aacute -55 -KPX Tcaron Abreve -55 -KPX Tcaron Acircumflex -55 -KPX Tcaron Adieresis -55 -KPX Tcaron Agrave -55 -KPX Tcaron Amacron -55 -KPX Tcaron Aogonek -55 -KPX Tcaron Aring -55 -KPX Tcaron Atilde -55 -KPX Tcaron O -18 -KPX Tcaron Oacute -18 -KPX Tcaron Ocircumflex -18 -KPX Tcaron Odieresis -18 -KPX Tcaron Ograve -18 -KPX Tcaron Ohungarumlaut -18 -KPX Tcaron Omacron -18 -KPX Tcaron Oslash -18 -KPX Tcaron Otilde -18 -KPX Tcaron a -92 -KPX Tcaron aacute -92 -KPX Tcaron abreve -92 -KPX Tcaron acircumflex -92 -KPX Tcaron adieresis -92 -KPX Tcaron agrave -92 -KPX Tcaron amacron -92 -KPX Tcaron aogonek -92 -KPX Tcaron aring -92 -KPX Tcaron atilde -92 -KPX Tcaron colon -74 -KPX Tcaron comma -92 -KPX Tcaron e -92 -KPX Tcaron eacute -92 -KPX Tcaron ecaron -92 -KPX Tcaron ecircumflex -92 -KPX Tcaron edieresis -52 -KPX Tcaron edotaccent -92 -KPX Tcaron egrave -52 -KPX Tcaron emacron -52 -KPX Tcaron eogonek -92 -KPX Tcaron hyphen -92 -KPX Tcaron i -37 -KPX Tcaron iacute -37 -KPX Tcaron iogonek -37 -KPX Tcaron o -95 -KPX Tcaron oacute -95 -KPX Tcaron ocircumflex -95 -KPX Tcaron odieresis -95 -KPX Tcaron ograve -95 -KPX Tcaron ohungarumlaut -95 -KPX Tcaron omacron -95 -KPX Tcaron oslash -95 -KPX Tcaron otilde -95 -KPX Tcaron period -92 -KPX Tcaron r -37 -KPX Tcaron racute -37 -KPX Tcaron rcaron -37 -KPX Tcaron rcommaaccent -37 -KPX Tcaron semicolon -74 -KPX Tcaron u -37 -KPX Tcaron uacute -37 -KPX Tcaron ucircumflex -37 -KPX Tcaron udieresis -37 -KPX Tcaron ugrave -37 -KPX Tcaron uhungarumlaut -37 -KPX Tcaron umacron -37 -KPX Tcaron uogonek -37 -KPX Tcaron uring -37 -KPX Tcaron w -37 -KPX Tcaron y -37 -KPX Tcaron yacute -37 -KPX Tcaron ydieresis -37 -KPX Tcommaaccent A -55 -KPX Tcommaaccent Aacute -55 -KPX Tcommaaccent Abreve -55 -KPX Tcommaaccent Acircumflex -55 -KPX Tcommaaccent Adieresis -55 -KPX Tcommaaccent Agrave -55 -KPX Tcommaaccent Amacron -55 -KPX Tcommaaccent Aogonek -55 -KPX Tcommaaccent Aring -55 -KPX Tcommaaccent Atilde -55 -KPX Tcommaaccent O -18 -KPX Tcommaaccent Oacute -18 -KPX Tcommaaccent Ocircumflex -18 -KPX Tcommaaccent Odieresis -18 -KPX Tcommaaccent Ograve -18 -KPX Tcommaaccent Ohungarumlaut -18 -KPX Tcommaaccent Omacron -18 -KPX Tcommaaccent Oslash -18 -KPX Tcommaaccent Otilde -18 -KPX Tcommaaccent a -92 -KPX Tcommaaccent aacute -92 -KPX Tcommaaccent abreve -92 -KPX Tcommaaccent acircumflex -92 -KPX Tcommaaccent adieresis -92 -KPX Tcommaaccent agrave -92 -KPX Tcommaaccent amacron -92 -KPX Tcommaaccent aogonek -92 -KPX Tcommaaccent aring -92 -KPX Tcommaaccent atilde -92 -KPX Tcommaaccent colon -74 -KPX Tcommaaccent comma -92 -KPX Tcommaaccent e -92 -KPX Tcommaaccent eacute -92 -KPX Tcommaaccent ecaron -92 -KPX Tcommaaccent ecircumflex -92 -KPX Tcommaaccent edieresis -52 -KPX Tcommaaccent edotaccent -92 -KPX Tcommaaccent egrave -52 -KPX Tcommaaccent emacron -52 -KPX Tcommaaccent eogonek -92 -KPX Tcommaaccent hyphen -92 -KPX Tcommaaccent i -37 -KPX Tcommaaccent iacute -37 -KPX Tcommaaccent iogonek -37 -KPX Tcommaaccent o -95 -KPX Tcommaaccent oacute -95 -KPX Tcommaaccent ocircumflex -95 -KPX Tcommaaccent odieresis -95 -KPX Tcommaaccent ograve -95 -KPX Tcommaaccent ohungarumlaut -95 -KPX Tcommaaccent omacron -95 -KPX Tcommaaccent oslash -95 -KPX Tcommaaccent otilde -95 -KPX Tcommaaccent period -92 -KPX Tcommaaccent r -37 -KPX Tcommaaccent racute -37 -KPX Tcommaaccent rcaron -37 -KPX Tcommaaccent rcommaaccent -37 -KPX Tcommaaccent semicolon -74 -KPX Tcommaaccent u -37 -KPX Tcommaaccent uacute -37 -KPX Tcommaaccent ucircumflex -37 -KPX Tcommaaccent udieresis -37 -KPX Tcommaaccent ugrave -37 -KPX Tcommaaccent uhungarumlaut -37 -KPX Tcommaaccent umacron -37 -KPX Tcommaaccent uogonek -37 -KPX Tcommaaccent uring -37 -KPX Tcommaaccent w -37 -KPX Tcommaaccent y -37 -KPX Tcommaaccent yacute -37 -KPX Tcommaaccent ydieresis -37 -KPX U A -45 -KPX U Aacute -45 -KPX U Abreve -45 -KPX U Acircumflex -45 -KPX U Adieresis -45 -KPX U Agrave -45 -KPX U Amacron -45 -KPX U Aogonek -45 -KPX U Aring -45 -KPX U Atilde -45 -KPX Uacute A -45 -KPX Uacute Aacute -45 -KPX Uacute Abreve -45 -KPX Uacute Acircumflex -45 -KPX Uacute Adieresis -45 -KPX Uacute Agrave -45 -KPX Uacute Amacron -45 -KPX Uacute Aogonek -45 -KPX Uacute Aring -45 -KPX Uacute Atilde -45 -KPX Ucircumflex A -45 -KPX Ucircumflex Aacute -45 -KPX Ucircumflex Abreve -45 -KPX Ucircumflex Acircumflex -45 -KPX Ucircumflex Adieresis -45 -KPX Ucircumflex Agrave -45 -KPX Ucircumflex Amacron -45 -KPX Ucircumflex Aogonek -45 -KPX Ucircumflex Aring -45 -KPX Ucircumflex Atilde -45 -KPX Udieresis A -45 -KPX Udieresis Aacute -45 -KPX Udieresis Abreve -45 -KPX Udieresis Acircumflex -45 -KPX Udieresis Adieresis -45 -KPX Udieresis Agrave -45 -KPX Udieresis Amacron -45 -KPX Udieresis Aogonek -45 -KPX Udieresis Aring -45 -KPX Udieresis Atilde -45 -KPX Ugrave A -45 -KPX Ugrave Aacute -45 -KPX Ugrave Abreve -45 -KPX Ugrave Acircumflex -45 -KPX Ugrave Adieresis -45 -KPX Ugrave Agrave -45 -KPX Ugrave Amacron -45 -KPX Ugrave Aogonek -45 -KPX Ugrave Aring -45 -KPX Ugrave Atilde -45 -KPX Uhungarumlaut A -45 -KPX Uhungarumlaut Aacute -45 -KPX Uhungarumlaut Abreve -45 -KPX Uhungarumlaut Acircumflex -45 -KPX Uhungarumlaut Adieresis -45 -KPX Uhungarumlaut Agrave -45 -KPX Uhungarumlaut Amacron -45 -KPX Uhungarumlaut Aogonek -45 -KPX Uhungarumlaut Aring -45 -KPX Uhungarumlaut Atilde -45 -KPX Umacron A -45 -KPX Umacron Aacute -45 -KPX Umacron Abreve -45 -KPX Umacron Acircumflex -45 -KPX Umacron Adieresis -45 -KPX Umacron Agrave -45 -KPX Umacron Amacron -45 -KPX Umacron Aogonek -45 -KPX Umacron Aring -45 -KPX Umacron Atilde -45 -KPX Uogonek A -45 -KPX Uogonek Aacute -45 -KPX Uogonek Abreve -45 -KPX Uogonek Acircumflex -45 -KPX Uogonek Adieresis -45 -KPX Uogonek Agrave -45 -KPX Uogonek Amacron -45 -KPX Uogonek Aogonek -45 -KPX Uogonek Aring -45 -KPX Uogonek Atilde -45 -KPX Uring A -45 -KPX Uring Aacute -45 -KPX Uring Abreve -45 -KPX Uring Acircumflex -45 -KPX Uring Adieresis -45 -KPX Uring Agrave -45 -KPX Uring Amacron -45 -KPX Uring Aogonek -45 -KPX Uring Aring -45 -KPX Uring Atilde -45 -KPX V A -85 -KPX V Aacute -85 -KPX V Abreve -85 -KPX V Acircumflex -85 -KPX V Adieresis -85 -KPX V Agrave -85 -KPX V Amacron -85 -KPX V Aogonek -85 -KPX V Aring -85 -KPX V Atilde -85 -KPX V G -10 -KPX V Gbreve -10 -KPX V Gcommaaccent -10 -KPX V O -30 -KPX V Oacute -30 -KPX V Ocircumflex -30 -KPX V Odieresis -30 -KPX V Ograve -30 -KPX V Ohungarumlaut -30 -KPX V Omacron -30 -KPX V Oslash -30 -KPX V Otilde -30 -KPX V a -111 -KPX V aacute -111 -KPX V abreve -111 -KPX V acircumflex -111 -KPX V adieresis -111 -KPX V agrave -111 -KPX V amacron -111 -KPX V aogonek -111 -KPX V aring -111 -KPX V atilde -111 -KPX V colon -74 -KPX V comma -129 -KPX V e -111 -KPX V eacute -111 -KPX V ecaron -111 -KPX V ecircumflex -111 -KPX V edieresis -71 -KPX V edotaccent -111 -KPX V egrave -71 -KPX V emacron -71 -KPX V eogonek -111 -KPX V hyphen -70 -KPX V i -55 -KPX V iacute -55 -KPX V iogonek -55 -KPX V o -111 -KPX V oacute -111 -KPX V ocircumflex -111 -KPX V odieresis -111 -KPX V ograve -111 -KPX V ohungarumlaut -111 -KPX V omacron -111 -KPX V oslash -111 -KPX V otilde -111 -KPX V period -129 -KPX V semicolon -74 -KPX V u -55 -KPX V uacute -55 -KPX V ucircumflex -55 -KPX V udieresis -55 -KPX V ugrave -55 -KPX V uhungarumlaut -55 -KPX V umacron -55 -KPX V uogonek -55 -KPX V uring -55 -KPX W A -74 -KPX W Aacute -74 -KPX W Abreve -74 -KPX W Acircumflex -74 -KPX W Adieresis -74 -KPX W Agrave -74 -KPX W Amacron -74 -KPX W Aogonek -74 -KPX W Aring -74 -KPX W Atilde -74 -KPX W O -15 -KPX W Oacute -15 -KPX W Ocircumflex -15 -KPX W Odieresis -15 -KPX W Ograve -15 -KPX W Ohungarumlaut -15 -KPX W Omacron -15 -KPX W Oslash -15 -KPX W Otilde -15 -KPX W a -85 -KPX W aacute -85 -KPX W abreve -85 -KPX W acircumflex -85 -KPX W adieresis -85 -KPX W agrave -85 -KPX W amacron -85 -KPX W aogonek -85 -KPX W aring -85 -KPX W atilde -85 -KPX W colon -55 -KPX W comma -74 -KPX W e -90 -KPX W eacute -90 -KPX W ecaron -90 -KPX W ecircumflex -90 -KPX W edieresis -50 -KPX W edotaccent -90 -KPX W egrave -50 -KPX W emacron -50 -KPX W eogonek -90 -KPX W hyphen -50 -KPX W i -37 -KPX W iacute -37 -KPX W iogonek -37 -KPX W o -80 -KPX W oacute -80 -KPX W ocircumflex -80 -KPX W odieresis -80 -KPX W ograve -80 -KPX W ohungarumlaut -80 -KPX W omacron -80 -KPX W oslash -80 -KPX W otilde -80 -KPX W period -74 -KPX W semicolon -55 -KPX W u -55 -KPX W uacute -55 -KPX W ucircumflex -55 -KPX W udieresis -55 -KPX W ugrave -55 -KPX W uhungarumlaut -55 -KPX W umacron -55 -KPX W uogonek -55 -KPX W uring -55 -KPX W y -55 -KPX W yacute -55 -KPX W ydieresis -55 -KPX Y A -74 -KPX Y Aacute -74 -KPX Y Abreve -74 -KPX Y Acircumflex -74 -KPX Y Adieresis -74 -KPX Y Agrave -74 -KPX Y Amacron -74 -KPX Y Aogonek -74 -KPX Y Aring -74 -KPX Y Atilde -74 -KPX Y O -25 -KPX Y Oacute -25 -KPX Y Ocircumflex -25 -KPX Y Odieresis -25 -KPX Y Ograve -25 -KPX Y Ohungarumlaut -25 -KPX Y Omacron -25 -KPX Y Oslash -25 -KPX Y Otilde -25 -KPX Y a -92 -KPX Y aacute -92 -KPX Y abreve -92 -KPX Y acircumflex -92 -KPX Y adieresis -92 -KPX Y agrave -92 -KPX Y amacron -92 -KPX Y aogonek -92 -KPX Y aring -92 -KPX Y atilde -92 -KPX Y colon -92 -KPX Y comma -92 -KPX Y e -111 -KPX Y eacute -111 -KPX Y ecaron -111 -KPX Y ecircumflex -71 -KPX Y edieresis -71 -KPX Y edotaccent -111 -KPX Y egrave -71 -KPX Y emacron -71 -KPX Y eogonek -111 -KPX Y hyphen -92 -KPX Y i -55 -KPX Y iacute -55 -KPX Y iogonek -55 -KPX Y o -111 -KPX Y oacute -111 -KPX Y ocircumflex -111 -KPX Y odieresis -111 -KPX Y ograve -111 -KPX Y ohungarumlaut -111 -KPX Y omacron -111 -KPX Y oslash -111 -KPX Y otilde -111 -KPX Y period -74 -KPX Y semicolon -92 -KPX Y u -92 -KPX Y uacute -92 -KPX Y ucircumflex -92 -KPX Y udieresis -92 -KPX Y ugrave -92 -KPX Y uhungarumlaut -92 -KPX Y umacron -92 -KPX Y uogonek -92 -KPX Y uring -92 -KPX Yacute A -74 -KPX Yacute Aacute -74 -KPX Yacute Abreve -74 -KPX Yacute Acircumflex -74 -KPX Yacute Adieresis -74 -KPX Yacute Agrave -74 -KPX Yacute Amacron -74 -KPX Yacute Aogonek -74 -KPX Yacute Aring -74 -KPX Yacute Atilde -74 -KPX Yacute O -25 -KPX Yacute Oacute -25 -KPX Yacute Ocircumflex -25 -KPX Yacute Odieresis -25 -KPX Yacute Ograve -25 -KPX Yacute Ohungarumlaut -25 -KPX Yacute Omacron -25 -KPX Yacute Oslash -25 -KPX Yacute Otilde -25 -KPX Yacute a -92 -KPX Yacute aacute -92 -KPX Yacute abreve -92 -KPX Yacute acircumflex -92 -KPX Yacute adieresis -92 -KPX Yacute agrave -92 -KPX Yacute amacron -92 -KPX Yacute aogonek -92 -KPX Yacute aring -92 -KPX Yacute atilde -92 -KPX Yacute colon -92 -KPX Yacute comma -92 -KPX Yacute e -111 -KPX Yacute eacute -111 -KPX Yacute ecaron -111 -KPX Yacute ecircumflex -71 -KPX Yacute edieresis -71 -KPX Yacute edotaccent -111 -KPX Yacute egrave -71 -KPX Yacute emacron -71 -KPX Yacute eogonek -111 -KPX Yacute hyphen -92 -KPX Yacute i -55 -KPX Yacute iacute -55 -KPX Yacute iogonek -55 -KPX Yacute o -111 -KPX Yacute oacute -111 -KPX Yacute ocircumflex -111 -KPX Yacute odieresis -111 -KPX Yacute ograve -111 -KPX Yacute ohungarumlaut -111 -KPX Yacute omacron -111 -KPX Yacute oslash -111 -KPX Yacute otilde -111 -KPX Yacute period -74 -KPX Yacute semicolon -92 -KPX Yacute u -92 -KPX Yacute uacute -92 -KPX Yacute ucircumflex -92 -KPX Yacute udieresis -92 -KPX Yacute ugrave -92 -KPX Yacute uhungarumlaut -92 -KPX Yacute umacron -92 -KPX Yacute uogonek -92 -KPX Yacute uring -92 -KPX Ydieresis A -74 -KPX Ydieresis Aacute -74 -KPX Ydieresis Abreve -74 -KPX Ydieresis Acircumflex -74 -KPX Ydieresis Adieresis -74 -KPX Ydieresis Agrave -74 -KPX Ydieresis Amacron -74 -KPX Ydieresis Aogonek -74 -KPX Ydieresis Aring -74 -KPX Ydieresis Atilde -74 -KPX Ydieresis O -25 -KPX Ydieresis Oacute -25 -KPX Ydieresis Ocircumflex -25 -KPX Ydieresis Odieresis -25 -KPX Ydieresis Ograve -25 -KPX Ydieresis Ohungarumlaut -25 -KPX Ydieresis Omacron -25 -KPX Ydieresis Oslash -25 -KPX Ydieresis Otilde -25 -KPX Ydieresis a -92 -KPX Ydieresis aacute -92 -KPX Ydieresis abreve -92 -KPX Ydieresis acircumflex -92 -KPX Ydieresis adieresis -92 -KPX Ydieresis agrave -92 -KPX Ydieresis amacron -92 -KPX Ydieresis aogonek -92 -KPX Ydieresis aring -92 -KPX Ydieresis atilde -92 -KPX Ydieresis colon -92 -KPX Ydieresis comma -92 -KPX Ydieresis e -111 -KPX Ydieresis eacute -111 -KPX Ydieresis ecaron -111 -KPX Ydieresis ecircumflex -71 -KPX Ydieresis edieresis -71 -KPX Ydieresis edotaccent -111 -KPX Ydieresis egrave -71 -KPX Ydieresis emacron -71 -KPX Ydieresis eogonek -111 -KPX Ydieresis hyphen -92 -KPX Ydieresis i -55 -KPX Ydieresis iacute -55 -KPX Ydieresis iogonek -55 -KPX Ydieresis o -111 -KPX Ydieresis oacute -111 -KPX Ydieresis ocircumflex -111 -KPX Ydieresis odieresis -111 -KPX Ydieresis ograve -111 -KPX Ydieresis ohungarumlaut -111 -KPX Ydieresis omacron -111 -KPX Ydieresis oslash -111 -KPX Ydieresis otilde -111 -KPX Ydieresis period -74 -KPX Ydieresis semicolon -92 -KPX Ydieresis u -92 -KPX Ydieresis uacute -92 -KPX Ydieresis ucircumflex -92 -KPX Ydieresis udieresis -92 -KPX Ydieresis ugrave -92 -KPX Ydieresis uhungarumlaut -92 -KPX Ydieresis umacron -92 -KPX Ydieresis uogonek -92 -KPX Ydieresis uring -92 -KPX b b -10 -KPX b period -40 -KPX b u -20 -KPX b uacute -20 -KPX b ucircumflex -20 -KPX b udieresis -20 -KPX b ugrave -20 -KPX b uhungarumlaut -20 -KPX b umacron -20 -KPX b uogonek -20 -KPX b uring -20 -KPX c h -10 -KPX c k -10 -KPX c kcommaaccent -10 -KPX cacute h -10 -KPX cacute k -10 -KPX cacute kcommaaccent -10 -KPX ccaron h -10 -KPX ccaron k -10 -KPX ccaron kcommaaccent -10 -KPX ccedilla h -10 -KPX ccedilla k -10 -KPX ccedilla kcommaaccent -10 -KPX comma quotedblright -95 -KPX comma quoteright -95 -KPX e b -10 -KPX eacute b -10 -KPX ecaron b -10 -KPX ecircumflex b -10 -KPX edieresis b -10 -KPX edotaccent b -10 -KPX egrave b -10 -KPX emacron b -10 -KPX eogonek b -10 -KPX f comma -10 -KPX f dotlessi -30 -KPX f e -10 -KPX f eacute -10 -KPX f edotaccent -10 -KPX f eogonek -10 -KPX f f -18 -KPX f o -10 -KPX f oacute -10 -KPX f ocircumflex -10 -KPX f ograve -10 -KPX f ohungarumlaut -10 -KPX f oslash -10 -KPX f otilde -10 -KPX f period -10 -KPX f quoteright 55 -KPX k e -30 -KPX k eacute -30 -KPX k ecaron -30 -KPX k ecircumflex -30 -KPX k edieresis -30 -KPX k edotaccent -30 -KPX k egrave -30 -KPX k emacron -30 -KPX k eogonek -30 -KPX k o -10 -KPX k oacute -10 -KPX k ocircumflex -10 -KPX k odieresis -10 -KPX k ograve -10 -KPX k ohungarumlaut -10 -KPX k omacron -10 -KPX k oslash -10 -KPX k otilde -10 -KPX kcommaaccent e -30 -KPX kcommaaccent eacute -30 -KPX kcommaaccent ecaron -30 -KPX kcommaaccent ecircumflex -30 -KPX kcommaaccent edieresis -30 -KPX kcommaaccent edotaccent -30 -KPX kcommaaccent egrave -30 -KPX kcommaaccent emacron -30 -KPX kcommaaccent eogonek -30 -KPX kcommaaccent o -10 -KPX kcommaaccent oacute -10 -KPX kcommaaccent ocircumflex -10 -KPX kcommaaccent odieresis -10 -KPX kcommaaccent ograve -10 -KPX kcommaaccent ohungarumlaut -10 -KPX kcommaaccent omacron -10 -KPX kcommaaccent oslash -10 -KPX kcommaaccent otilde -10 -KPX n v -40 -KPX nacute v -40 -KPX ncaron v -40 -KPX ncommaaccent v -40 -KPX ntilde v -40 -KPX o v -15 -KPX o w -25 -KPX o x -10 -KPX o y -10 -KPX o yacute -10 -KPX o ydieresis -10 -KPX oacute v -15 -KPX oacute w -25 -KPX oacute x -10 -KPX oacute y -10 -KPX oacute yacute -10 -KPX oacute ydieresis -10 -KPX ocircumflex v -15 -KPX ocircumflex w -25 -KPX ocircumflex x -10 -KPX ocircumflex y -10 -KPX ocircumflex yacute -10 -KPX ocircumflex ydieresis -10 -KPX odieresis v -15 -KPX odieresis w -25 -KPX odieresis x -10 -KPX odieresis y -10 -KPX odieresis yacute -10 -KPX odieresis ydieresis -10 -KPX ograve v -15 -KPX ograve w -25 -KPX ograve x -10 -KPX ograve y -10 -KPX ograve yacute -10 -KPX ograve ydieresis -10 -KPX ohungarumlaut v -15 -KPX ohungarumlaut w -25 -KPX ohungarumlaut x -10 -KPX ohungarumlaut y -10 -KPX ohungarumlaut yacute -10 -KPX ohungarumlaut ydieresis -10 -KPX omacron v -15 -KPX omacron w -25 -KPX omacron x -10 -KPX omacron y -10 -KPX omacron yacute -10 -KPX omacron ydieresis -10 -KPX oslash v -15 -KPX oslash w -25 -KPX oslash x -10 -KPX oslash y -10 -KPX oslash yacute -10 -KPX oslash ydieresis -10 -KPX otilde v -15 -KPX otilde w -25 -KPX otilde x -10 -KPX otilde y -10 -KPX otilde yacute -10 -KPX otilde ydieresis -10 -KPX period quotedblright -95 -KPX period quoteright -95 -KPX quoteleft quoteleft -74 -KPX quoteright d -15 -KPX quoteright dcroat -15 -KPX quoteright quoteright -74 -KPX quoteright r -15 -KPX quoteright racute -15 -KPX quoteright rcaron -15 -KPX quoteright rcommaaccent -15 -KPX quoteright s -74 -KPX quoteright sacute -74 -KPX quoteright scaron -74 -KPX quoteright scedilla -74 -KPX quoteright scommaaccent -74 -KPX quoteright space -74 -KPX quoteright t -37 -KPX quoteright tcommaaccent -37 -KPX quoteright v -15 -KPX r comma -65 -KPX r period -65 -KPX racute comma -65 -KPX racute period -65 -KPX rcaron comma -65 -KPX rcaron period -65 -KPX rcommaaccent comma -65 -KPX rcommaaccent period -65 -KPX space A -37 -KPX space Aacute -37 -KPX space Abreve -37 -KPX space Acircumflex -37 -KPX space Adieresis -37 -KPX space Agrave -37 -KPX space Amacron -37 -KPX space Aogonek -37 -KPX space Aring -37 -KPX space Atilde -37 -KPX space V -70 -KPX space W -70 -KPX space Y -70 -KPX space Yacute -70 -KPX space Ydieresis -70 -KPX v comma -37 -KPX v e -15 -KPX v eacute -15 -KPX v ecaron -15 -KPX v ecircumflex -15 -KPX v edieresis -15 -KPX v edotaccent -15 -KPX v egrave -15 -KPX v emacron -15 -KPX v eogonek -15 -KPX v o -15 -KPX v oacute -15 -KPX v ocircumflex -15 -KPX v odieresis -15 -KPX v ograve -15 -KPX v ohungarumlaut -15 -KPX v omacron -15 -KPX v oslash -15 -KPX v otilde -15 -KPX v period -37 -KPX w a -10 -KPX w aacute -10 -KPX w abreve -10 -KPX w acircumflex -10 -KPX w adieresis -10 -KPX w agrave -10 -KPX w amacron -10 -KPX w aogonek -10 -KPX w aring -10 -KPX w atilde -10 -KPX w comma -37 -KPX w e -10 -KPX w eacute -10 -KPX w ecaron -10 -KPX w ecircumflex -10 -KPX w edieresis -10 -KPX w edotaccent -10 -KPX w egrave -10 -KPX w emacron -10 -KPX w eogonek -10 -KPX w o -15 -KPX w oacute -15 -KPX w ocircumflex -15 -KPX w odieresis -15 -KPX w ograve -15 -KPX w ohungarumlaut -15 -KPX w omacron -15 -KPX w oslash -15 -KPX w otilde -15 -KPX w period -37 -KPX x e -10 -KPX x eacute -10 -KPX x ecaron -10 -KPX x ecircumflex -10 -KPX x edieresis -10 -KPX x edotaccent -10 -KPX x egrave -10 -KPX x emacron -10 -KPX x eogonek -10 -KPX y comma -37 -KPX y period -37 -KPX yacute comma -37 -KPX yacute period -37 -KPX ydieresis comma -37 -KPX ydieresis period -37 -EndKernPairs -EndKernData -EndFontMetrics diff --git a/application/third_party/dompdf/lib/fonts/Times-Italic.afm b/application/third_party/dompdf/lib/fonts/Times-Italic.afm deleted file mode 100644 index 822e8986..00000000 --- a/application/third_party/dompdf/lib/fonts/Times-Italic.afm +++ /dev/null @@ -1,2669 +0,0 @@ -StartFontMetrics 4.1 -Comment Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. -Comment Creation Date: Thu May 1 12:56:55 1997 -Comment UniqueID 43067 -Comment VMusage 47727 58752 -FontName Times-Italic -FullName Times Italic -FamilyName Times -Weight Medium -ItalicAngle -15.5 -IsFixedPitch false -CharacterSet ExtendedRoman -FontBBox -169 -217 1010 883 -UnderlinePosition -100 -UnderlineThickness 50 -Version 002.000 -Notice Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype-Hell AG and/or its subsidiaries. -EncodingScheme WinAnsiEncoding -CapHeight 653 -XHeight 441 -Ascender 683 -Descender -217 -StdHW 32 -StdVW 76 -StartCharMetrics 317 -C 32 ; WX 250 ; N space ; B 0 0 0 0 ; -C 160 ; WX 250 ; N space ; B 0 0 0 0 ; -C 33 ; WX 333 ; N exclam ; B 39 -11 302 667 ; -C 34 ; WX 420 ; N quotedbl ; B 144 421 432 666 ; -C 35 ; WX 500 ; N numbersign ; B 2 0 540 676 ; -C 36 ; WX 500 ; N dollar ; B 31 -89 497 731 ; -C 37 ; WX 833 ; N percent ; B 79 -13 790 676 ; -C 38 ; WX 778 ; N ampersand ; B 76 -18 723 666 ; -C 146 ; WX 333 ; N quoteright ; B 151 436 290 666 ; -C 40 ; WX 333 ; N parenleft ; B 42 -181 315 669 ; -C 41 ; WX 333 ; N parenright ; B 16 -180 289 669 ; -C 42 ; WX 500 ; N asterisk ; B 128 255 492 666 ; -C 43 ; WX 675 ; N plus ; B 86 0 590 506 ; -C 44 ; WX 250 ; N comma ; B -4 -129 135 101 ; -C 45 ; WX 333 ; N hyphen ; B 49 192 282 255 ; -C 173 ; WX 333 ; N hyphen ; B 49 192 282 255 ; -C 46 ; WX 250 ; N period ; B 27 -11 138 100 ; -C 47 ; WX 278 ; N slash ; B -65 -18 386 666 ; -C 48 ; WX 500 ; N zero ; B 32 -7 497 676 ; -C 49 ; WX 500 ; N one ; B 49 0 409 676 ; -C 50 ; WX 500 ; N two ; B 12 0 452 676 ; -C 51 ; WX 500 ; N three ; B 15 -7 465 676 ; -C 52 ; WX 500 ; N four ; B 1 0 479 676 ; -C 53 ; WX 500 ; N five ; B 15 -7 491 666 ; -C 54 ; WX 500 ; N six ; B 30 -7 521 686 ; -C 55 ; WX 500 ; N seven ; B 75 -8 537 666 ; -C 56 ; WX 500 ; N eight ; B 30 -7 493 676 ; -C 57 ; WX 500 ; N nine ; B 23 -17 492 676 ; -C 58 ; WX 333 ; N colon ; B 50 -11 261 441 ; -C 59 ; WX 333 ; N semicolon ; B 27 -129 261 441 ; -C 60 ; WX 675 ; N less ; B 84 -8 592 514 ; -C 61 ; WX 675 ; N equal ; B 86 120 590 386 ; -C 62 ; WX 675 ; N greater ; B 84 -8 592 514 ; -C 63 ; WX 500 ; N question ; B 132 -12 472 664 ; -C 64 ; WX 920 ; N at ; B 118 -18 806 666 ; -C 65 ; WX 611 ; N A ; B -51 0 564 668 ; -C 66 ; WX 611 ; N B ; B -8 0 588 653 ; -C 67 ; WX 667 ; N C ; B 66 -18 689 666 ; -C 68 ; WX 722 ; N D ; B -8 0 700 653 ; -C 69 ; WX 611 ; N E ; B -1 0 634 653 ; -C 70 ; WX 611 ; N F ; B 8 0 645 653 ; -C 71 ; WX 722 ; N G ; B 52 -18 722 666 ; -C 72 ; WX 722 ; N H ; B -8 0 767 653 ; -C 73 ; WX 333 ; N I ; B -8 0 384 653 ; -C 74 ; WX 444 ; N J ; B -6 -18 491 653 ; -C 75 ; WX 667 ; N K ; B 7 0 722 653 ; -C 76 ; WX 556 ; N L ; B -8 0 559 653 ; -C 77 ; WX 833 ; N M ; B -18 0 873 653 ; -C 78 ; WX 667 ; N N ; B -20 -15 727 653 ; -C 79 ; WX 722 ; N O ; B 60 -18 699 666 ; -C 80 ; WX 611 ; N P ; B 0 0 605 653 ; -C 81 ; WX 722 ; N Q ; B 59 -182 699 666 ; -C 82 ; WX 611 ; N R ; B -13 0 588 653 ; -C 83 ; WX 500 ; N S ; B 17 -18 508 667 ; -C 84 ; WX 556 ; N T ; B 59 0 633 653 ; -C 85 ; WX 722 ; N U ; B 102 -18 765 653 ; -C 86 ; WX 611 ; N V ; B 76 -18 688 653 ; -C 87 ; WX 833 ; N W ; B 71 -18 906 653 ; -C 88 ; WX 611 ; N X ; B -29 0 655 653 ; -C 89 ; WX 556 ; N Y ; B 78 0 633 653 ; -C 90 ; WX 556 ; N Z ; B -6 0 606 653 ; -C 91 ; WX 389 ; N bracketleft ; B 21 -153 391 663 ; -C 92 ; WX 278 ; N backslash ; B -41 -18 319 666 ; -C 93 ; WX 389 ; N bracketright ; B 12 -153 382 663 ; -C 94 ; WX 422 ; N asciicircum ; B 0 301 422 666 ; -C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; -C 145 ; WX 333 ; N quoteleft ; B 171 436 310 666 ; -C 97 ; WX 500 ; N a ; B 17 -11 476 441 ; -C 98 ; WX 500 ; N b ; B 23 -11 473 683 ; -C 99 ; WX 444 ; N c ; B 30 -11 425 441 ; -C 100 ; WX 500 ; N d ; B 15 -13 527 683 ; -C 101 ; WX 444 ; N e ; B 31 -11 412 441 ; -C 102 ; WX 278 ; N f ; B -147 -207 424 678 ; L i fi ; L l fl ; -C 103 ; WX 500 ; N g ; B 8 -206 472 441 ; -C 104 ; WX 500 ; N h ; B 19 -9 478 683 ; -C 105 ; WX 278 ; N i ; B 49 -11 264 654 ; -C 106 ; WX 278 ; N j ; B -124 -207 276 654 ; -C 107 ; WX 444 ; N k ; B 14 -11 461 683 ; -C 108 ; WX 278 ; N l ; B 41 -11 279 683 ; -C 109 ; WX 722 ; N m ; B 12 -9 704 441 ; -C 110 ; WX 500 ; N n ; B 14 -9 474 441 ; -C 111 ; WX 500 ; N o ; B 27 -11 468 441 ; -C 112 ; WX 500 ; N p ; B -75 -205 469 441 ; -C 113 ; WX 500 ; N q ; B 25 -209 483 441 ; -C 114 ; WX 389 ; N r ; B 45 0 412 441 ; -C 115 ; WX 389 ; N s ; B 16 -13 366 442 ; -C 116 ; WX 278 ; N t ; B 37 -11 296 546 ; -C 117 ; WX 500 ; N u ; B 42 -11 475 441 ; -C 118 ; WX 444 ; N v ; B 21 -18 426 441 ; -C 119 ; WX 667 ; N w ; B 16 -18 648 441 ; -C 120 ; WX 444 ; N x ; B -27 -11 447 441 ; -C 121 ; WX 444 ; N y ; B -24 -206 426 441 ; -C 122 ; WX 389 ; N z ; B -2 -81 380 428 ; -C 123 ; WX 400 ; N braceleft ; B 51 -177 407 687 ; -C 124 ; WX 275 ; N bar ; B 105 -217 171 783 ; -C 125 ; WX 400 ; N braceright ; B -7 -177 349 687 ; -C 126 ; WX 541 ; N asciitilde ; B 40 183 502 323 ; -C 161 ; WX 389 ; N exclamdown ; B 59 -205 322 473 ; -C 162 ; WX 500 ; N cent ; B 77 -143 472 560 ; -C 163 ; WX 500 ; N sterling ; B 10 -6 517 670 ; -C -1 ; WX 167 ; N fraction ; B -169 -10 337 676 ; -C 165 ; WX 500 ; N yen ; B 27 0 603 653 ; -C 131 ; WX 500 ; N florin ; B 25 -182 507 682 ; -C 167 ; WX 500 ; N section ; B 53 -162 461 666 ; -C 164 ; WX 500 ; N currency ; B -22 53 522 597 ; -C 39 ; WX 214 ; N quotesingle ; B 132 421 241 666 ; -C 147 ; WX 556 ; N quotedblleft ; B 166 436 514 666 ; -C 170 ; WX 500 ; N guillemotleft ; B 53 37 445 403 ; -C 139 ; WX 333 ; N guilsinglleft ; B 51 37 281 403 ; -C 155 ; WX 333 ; N guilsinglright ; B 52 37 282 403 ; -C -1 ; WX 500 ; N fi ; B -141 -207 481 681 ; -C -1 ; WX 500 ; N fl ; B -141 -204 518 682 ; -C 150 ; WX 500 ; N endash ; B -6 197 505 243 ; -C 134 ; WX 500 ; N dagger ; B 101 -159 488 666 ; -C 135 ; WX 500 ; N daggerdbl ; B 22 -143 491 666 ; -C 183 ; WX 250 ; N periodcentered ; B 70 199 181 310 ; -C 182 ; WX 523 ; N paragraph ; B 55 -123 616 653 ; -C 149 ; WX 350 ; N bullet ; B 40 191 310 461 ; -C 130 ; WX 333 ; N quotesinglbase ; B 44 -129 183 101 ; -C 132 ; WX 556 ; N quotedblbase ; B 57 -129 405 101 ; -C 148 ; WX 556 ; N quotedblright ; B 151 436 499 666 ; -C 187 ; WX 500 ; N guillemotright ; B 55 37 447 403 ; -C 133 ; WX 889 ; N ellipsis ; B 57 -11 762 100 ; -C 137 ; WX 1000 ; N perthousand ; B 25 -19 1010 706 ; -C 191 ; WX 500 ; N questiondown ; B 28 -205 368 471 ; -C 96 ; WX 333 ; N grave ; B 121 492 311 664 ; -C 180 ; WX 333 ; N acute ; B 180 494 403 664 ; -C 136 ; WX 333 ; N circumflex ; B 91 492 385 661 ; -C 152 ; WX 333 ; N tilde ; B 100 517 427 624 ; -C 175 ; WX 333 ; N macron ; B 99 532 411 583 ; -C -1 ; WX 333 ; N breve ; B 117 492 418 650 ; -C -1 ; WX 333 ; N dotaccent ; B 207 548 305 646 ; -C 168 ; WX 333 ; N dieresis ; B 107 548 405 646 ; -C -1 ; WX 333 ; N ring ; B 155 492 355 691 ; -C 184 ; WX 333 ; N cedilla ; B -30 -217 182 0 ; -C -1 ; WX 333 ; N hungarumlaut ; B 93 494 486 664 ; -C -1 ; WX 333 ; N ogonek ; B 20 -169 203 40 ; -C -1 ; WX 333 ; N caron ; B 121 492 426 661 ; -C 151 ; WX 889 ; N emdash ; B -6 197 894 243 ; -C 198 ; WX 889 ; N AE ; B -27 0 911 653 ; -C 170 ; WX 276 ; N ordfeminine ; B 42 406 352 676 ; -C -1 ; WX 556 ; N Lslash ; B -8 0 559 653 ; -C 216 ; WX 722 ; N Oslash ; B 60 -105 699 722 ; -C 140 ; WX 944 ; N OE ; B 49 -8 964 666 ; -C 186 ; WX 310 ; N ordmasculine ; B 67 406 362 676 ; -C 230 ; WX 667 ; N ae ; B 23 -11 640 441 ; -C -1 ; WX 278 ; N dotlessi ; B 49 -11 235 441 ; -C -1 ; WX 278 ; N lslash ; B 41 -11 312 683 ; -C 248 ; WX 500 ; N oslash ; B 28 -135 469 554 ; -C 156 ; WX 667 ; N oe ; B 20 -12 646 441 ; -C 223 ; WX 500 ; N germandbls ; B -168 -207 493 679 ; -C 207 ; WX 333 ; N Idieresis ; B -8 0 435 818 ; -C 233 ; WX 444 ; N eacute ; B 31 -11 459 664 ; -C -1 ; WX 500 ; N abreve ; B 17 -11 502 650 ; -C -1 ; WX 500 ; N uhungarumlaut ; B 42 -11 580 664 ; -C -1 ; WX 444 ; N ecaron ; B 31 -11 482 661 ; -C 159 ; WX 556 ; N Ydieresis ; B 78 0 633 818 ; -C 247 ; WX 675 ; N divide ; B 86 -11 590 517 ; -C 221 ; WX 556 ; N Yacute ; B 78 0 633 876 ; -C 194 ; WX 611 ; N Acircumflex ; B -51 0 564 873 ; -C 225 ; WX 500 ; N aacute ; B 17 -11 487 664 ; -C 219 ; WX 722 ; N Ucircumflex ; B 102 -18 765 873 ; -C 253 ; WX 444 ; N yacute ; B -24 -206 459 664 ; -C -1 ; WX 389 ; N scommaaccent ; B 16 -217 366 442 ; -C 234 ; WX 444 ; N ecircumflex ; B 31 -11 441 661 ; -C -1 ; WX 722 ; N Uring ; B 102 -18 765 883 ; -C 220 ; WX 722 ; N Udieresis ; B 102 -18 765 818 ; -C -1 ; WX 500 ; N aogonek ; B 17 -169 476 441 ; -C 218 ; WX 722 ; N Uacute ; B 102 -18 765 876 ; -C -1 ; WX 500 ; N uogonek ; B 42 -169 477 441 ; -C 203 ; WX 611 ; N Edieresis ; B -1 0 634 818 ; -C -1 ; WX 722 ; N Dcroat ; B -8 0 700 653 ; -C -1 ; WX 250 ; N commaaccent ; B 8 -217 133 -50 ; -C 169 ; WX 760 ; N copyright ; B 41 -18 719 666 ; -C -1 ; WX 611 ; N Emacron ; B -1 0 634 795 ; -C -1 ; WX 444 ; N ccaron ; B 30 -11 482 661 ; -C 229 ; WX 500 ; N aring ; B 17 -11 476 691 ; -C -1 ; WX 667 ; N Ncommaaccent ; B -20 -187 727 653 ; -C -1 ; WX 278 ; N lacute ; B 41 -11 395 876 ; -C 224 ; WX 500 ; N agrave ; B 17 -11 476 664 ; -C -1 ; WX 556 ; N Tcommaaccent ; B 59 -217 633 653 ; -C -1 ; WX 667 ; N Cacute ; B 66 -18 690 876 ; -C 227 ; WX 500 ; N atilde ; B 17 -11 511 624 ; -C -1 ; WX 611 ; N Edotaccent ; B -1 0 634 818 ; -C 154 ; WX 389 ; N scaron ; B 16 -13 454 661 ; -C -1 ; WX 389 ; N scedilla ; B 16 -217 366 442 ; -C 237 ; WX 278 ; N iacute ; B 49 -11 355 664 ; -C -1 ; WX 471 ; N lozenge ; B 13 0 459 724 ; -C -1 ; WX 611 ; N Rcaron ; B -13 0 588 873 ; -C -1 ; WX 722 ; N Gcommaaccent ; B 52 -217 722 666 ; -C 251 ; WX 500 ; N ucircumflex ; B 42 -11 475 661 ; -C 226 ; WX 500 ; N acircumflex ; B 17 -11 476 661 ; -C -1 ; WX 611 ; N Amacron ; B -51 0 564 795 ; -C -1 ; WX 389 ; N rcaron ; B 45 0 434 661 ; -C 231 ; WX 444 ; N ccedilla ; B 30 -217 425 441 ; -C -1 ; WX 556 ; N Zdotaccent ; B -6 0 606 818 ; -C 222 ; WX 611 ; N Thorn ; B 0 0 569 653 ; -C -1 ; WX 722 ; N Omacron ; B 60 -18 699 795 ; -C -1 ; WX 611 ; N Racute ; B -13 0 588 876 ; -C -1 ; WX 500 ; N Sacute ; B 17 -18 508 876 ; -C -1 ; WX 544 ; N dcaron ; B 15 -13 658 683 ; -C -1 ; WX 722 ; N Umacron ; B 102 -18 765 795 ; -C -1 ; WX 500 ; N uring ; B 42 -11 475 691 ; -C 179 ; WX 300 ; N threesuperior ; B 43 268 339 676 ; -C 210 ; WX 722 ; N Ograve ; B 60 -18 699 876 ; -C 192 ; WX 611 ; N Agrave ; B -51 0 564 876 ; -C -1 ; WX 611 ; N Abreve ; B -51 0 564 862 ; -C 215 ; WX 675 ; N multiply ; B 93 8 582 497 ; -C 250 ; WX 500 ; N uacute ; B 42 -11 477 664 ; -C -1 ; WX 556 ; N Tcaron ; B 59 0 633 873 ; -C -1 ; WX 476 ; N partialdiff ; B 17 -38 459 710 ; -C 255 ; WX 444 ; N ydieresis ; B -24 -206 441 606 ; -C -1 ; WX 667 ; N Nacute ; B -20 -15 727 876 ; -C 238 ; WX 278 ; N icircumflex ; B 33 -11 327 661 ; -C 202 ; WX 611 ; N Ecircumflex ; B -1 0 634 873 ; -C 228 ; WX 500 ; N adieresis ; B 17 -11 489 606 ; -C 235 ; WX 444 ; N edieresis ; B 31 -11 451 606 ; -C -1 ; WX 444 ; N cacute ; B 30 -11 459 664 ; -C -1 ; WX 500 ; N nacute ; B 14 -9 477 664 ; -C -1 ; WX 500 ; N umacron ; B 42 -11 485 583 ; -C -1 ; WX 667 ; N Ncaron ; B -20 -15 727 873 ; -C 205 ; WX 333 ; N Iacute ; B -8 0 433 876 ; -C 177 ; WX 675 ; N plusminus ; B 86 0 590 506 ; -C 166 ; WX 275 ; N brokenbar ; B 105 -142 171 708 ; -C 174 ; WX 760 ; N registered ; B 41 -18 719 666 ; -C -1 ; WX 722 ; N Gbreve ; B 52 -18 722 862 ; -C -1 ; WX 333 ; N Idotaccent ; B -8 0 384 818 ; -C -1 ; WX 600 ; N summation ; B 15 -10 585 706 ; -C 200 ; WX 611 ; N Egrave ; B -1 0 634 876 ; -C -1 ; WX 389 ; N racute ; B 45 0 431 664 ; -C -1 ; WX 500 ; N omacron ; B 27 -11 495 583 ; -C -1 ; WX 556 ; N Zacute ; B -6 0 606 876 ; -C 142 ; WX 556 ; N Zcaron ; B -6 0 606 873 ; -C -1 ; WX 549 ; N greaterequal ; B 26 0 523 658 ; -C 208 ; WX 722 ; N Eth ; B -8 0 700 653 ; -C 199 ; WX 667 ; N Ccedilla ; B 66 -217 689 666 ; -C -1 ; WX 278 ; N lcommaaccent ; B 22 -217 279 683 ; -C -1 ; WX 300 ; N tcaron ; B 37 -11 407 681 ; -C -1 ; WX 444 ; N eogonek ; B 31 -169 412 441 ; -C -1 ; WX 722 ; N Uogonek ; B 102 -184 765 653 ; -C 193 ; WX 611 ; N Aacute ; B -51 0 564 876 ; -C 196 ; WX 611 ; N Adieresis ; B -51 0 564 818 ; -C 232 ; WX 444 ; N egrave ; B 31 -11 412 664 ; -C -1 ; WX 389 ; N zacute ; B -2 -81 431 664 ; -C -1 ; WX 278 ; N iogonek ; B 49 -169 264 654 ; -C 211 ; WX 722 ; N Oacute ; B 60 -18 699 876 ; -C 243 ; WX 500 ; N oacute ; B 27 -11 487 664 ; -C -1 ; WX 500 ; N amacron ; B 17 -11 495 583 ; -C -1 ; WX 389 ; N sacute ; B 16 -13 431 664 ; -C 239 ; WX 278 ; N idieresis ; B 49 -11 352 606 ; -C 212 ; WX 722 ; N Ocircumflex ; B 60 -18 699 873 ; -C 217 ; WX 722 ; N Ugrave ; B 102 -18 765 876 ; -C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; -C 254 ; WX 500 ; N thorn ; B -75 -205 469 683 ; -C 178 ; WX 300 ; N twosuperior ; B 33 271 324 676 ; -C 214 ; WX 722 ; N Odieresis ; B 60 -18 699 818 ; -C 181 ; WX 500 ; N mu ; B -30 -209 497 428 ; -C 236 ; WX 278 ; N igrave ; B 49 -11 284 664 ; -C -1 ; WX 500 ; N ohungarumlaut ; B 27 -11 590 664 ; -C -1 ; WX 611 ; N Eogonek ; B -1 -169 634 653 ; -C -1 ; WX 500 ; N dcroat ; B 15 -13 572 683 ; -C 190 ; WX 750 ; N threequarters ; B 23 -10 736 676 ; -C -1 ; WX 500 ; N Scedilla ; B 17 -217 508 667 ; -C -1 ; WX 300 ; N lcaron ; B 41 -11 407 683 ; -C -1 ; WX 667 ; N Kcommaaccent ; B 7 -217 722 653 ; -C -1 ; WX 556 ; N Lacute ; B -8 0 559 876 ; -C 153 ; WX 980 ; N trademark ; B 30 247 957 653 ; -C -1 ; WX 444 ; N edotaccent ; B 31 -11 412 606 ; -C 204 ; WX 333 ; N Igrave ; B -8 0 384 876 ; -C -1 ; WX 333 ; N Imacron ; B -8 0 441 795 ; -C -1 ; WX 611 ; N Lcaron ; B -8 0 586 653 ; -C 189 ; WX 750 ; N onehalf ; B 34 -10 749 676 ; -C -1 ; WX 549 ; N lessequal ; B 26 0 523 658 ; -C 244 ; WX 500 ; N ocircumflex ; B 27 -11 468 661 ; -C 241 ; WX 500 ; N ntilde ; B 14 -9 476 624 ; -C -1 ; WX 722 ; N Uhungarumlaut ; B 102 -18 765 876 ; -C 201 ; WX 611 ; N Eacute ; B -1 0 634 876 ; -C -1 ; WX 444 ; N emacron ; B 31 -11 457 583 ; -C -1 ; WX 500 ; N gbreve ; B 8 -206 487 650 ; -C 188 ; WX 750 ; N onequarter ; B 33 -10 736 676 ; -C 138 ; WX 500 ; N Scaron ; B 17 -18 520 873 ; -C -1 ; WX 500 ; N Scommaaccent ; B 17 -217 508 667 ; -C -1 ; WX 722 ; N Ohungarumlaut ; B 60 -18 699 876 ; -C 176 ; WX 400 ; N degree ; B 101 390 387 676 ; -C 242 ; WX 500 ; N ograve ; B 27 -11 468 664 ; -C -1 ; WX 667 ; N Ccaron ; B 66 -18 689 873 ; -C 249 ; WX 500 ; N ugrave ; B 42 -11 475 664 ; -C -1 ; WX 453 ; N radical ; B 2 -60 452 768 ; -C -1 ; WX 722 ; N Dcaron ; B -8 0 700 873 ; -C -1 ; WX 389 ; N rcommaaccent ; B -3 -217 412 441 ; -C 209 ; WX 667 ; N Ntilde ; B -20 -15 727 836 ; -C 245 ; WX 500 ; N otilde ; B 27 -11 496 624 ; -C -1 ; WX 611 ; N Rcommaaccent ; B -13 -187 588 653 ; -C -1 ; WX 556 ; N Lcommaaccent ; B -8 -217 559 653 ; -C 195 ; WX 611 ; N Atilde ; B -51 0 566 836 ; -C -1 ; WX 611 ; N Aogonek ; B -51 -169 566 668 ; -C 197 ; WX 611 ; N Aring ; B -51 0 564 883 ; -C 213 ; WX 722 ; N Otilde ; B 60 -18 699 836 ; -C -1 ; WX 389 ; N zdotaccent ; B -2 -81 380 606 ; -C -1 ; WX 611 ; N Ecaron ; B -1 0 634 873 ; -C -1 ; WX 333 ; N Iogonek ; B -8 -169 384 653 ; -C -1 ; WX 444 ; N kcommaaccent ; B 14 -187 461 683 ; -C -1 ; WX 675 ; N minus ; B 86 220 590 286 ; -C 206 ; WX 333 ; N Icircumflex ; B -8 0 425 873 ; -C -1 ; WX 500 ; N ncaron ; B 14 -9 510 661 ; -C -1 ; WX 278 ; N tcommaaccent ; B 2 -217 296 546 ; -C 172 ; WX 675 ; N logicalnot ; B 86 108 590 386 ; -C 246 ; WX 500 ; N odieresis ; B 27 -11 489 606 ; -C 252 ; WX 500 ; N udieresis ; B 42 -11 479 606 ; -C -1 ; WX 549 ; N notequal ; B 12 -29 537 541 ; -C -1 ; WX 500 ; N gcommaaccent ; B 8 -206 472 706 ; -C 240 ; WX 500 ; N eth ; B 27 -11 482 683 ; -C 158 ; WX 389 ; N zcaron ; B -2 -81 434 661 ; -C -1 ; WX 500 ; N ncommaaccent ; B 14 -187 474 441 ; -C 185 ; WX 300 ; N onesuperior ; B 43 271 284 676 ; -C -1 ; WX 278 ; N imacron ; B 46 -11 311 583 ; -C 128 ; WX 500 ; N Euro ; B 0 0 0 0 ; -EndCharMetrics -StartKernData -StartKernPairs 2321 -KPX A C -30 -KPX A Cacute -30 -KPX A Ccaron -30 -KPX A Ccedilla -30 -KPX A G -35 -KPX A Gbreve -35 -KPX A Gcommaaccent -35 -KPX A O -40 -KPX A Oacute -40 -KPX A Ocircumflex -40 -KPX A Odieresis -40 -KPX A Ograve -40 -KPX A Ohungarumlaut -40 -KPX A Omacron -40 -KPX A Oslash -40 -KPX A Otilde -40 -KPX A Q -40 -KPX A T -37 -KPX A Tcaron -37 -KPX A Tcommaaccent -37 -KPX A U -50 -KPX A Uacute -50 -KPX A Ucircumflex -50 -KPX A Udieresis -50 -KPX A Ugrave -50 -KPX A Uhungarumlaut -50 -KPX A Umacron -50 -KPX A Uogonek -50 -KPX A Uring -50 -KPX A V -105 -KPX A W -95 -KPX A Y -55 -KPX A Yacute -55 -KPX A Ydieresis -55 -KPX A quoteright -37 -KPX A u -20 -KPX A uacute -20 -KPX A ucircumflex -20 -KPX A udieresis -20 -KPX A ugrave -20 -KPX A uhungarumlaut -20 -KPX A umacron -20 -KPX A uogonek -20 -KPX A uring -20 -KPX A v -55 -KPX A w -55 -KPX A y -55 -KPX A yacute -55 -KPX A ydieresis -55 -KPX Aacute C -30 -KPX Aacute Cacute -30 -KPX Aacute Ccaron -30 -KPX Aacute Ccedilla -30 -KPX Aacute G -35 -KPX Aacute Gbreve -35 -KPX Aacute Gcommaaccent -35 -KPX Aacute O -40 -KPX Aacute Oacute -40 -KPX Aacute Ocircumflex -40 -KPX Aacute Odieresis -40 -KPX Aacute Ograve -40 -KPX Aacute Ohungarumlaut -40 -KPX Aacute Omacron -40 -KPX Aacute Oslash -40 -KPX Aacute Otilde -40 -KPX Aacute Q -40 -KPX Aacute T -37 -KPX Aacute Tcaron -37 -KPX Aacute Tcommaaccent -37 -KPX Aacute U -50 -KPX Aacute Uacute -50 -KPX Aacute Ucircumflex -50 -KPX Aacute Udieresis -50 -KPX Aacute Ugrave -50 -KPX Aacute Uhungarumlaut -50 -KPX Aacute Umacron -50 -KPX Aacute Uogonek -50 -KPX Aacute Uring -50 -KPX Aacute V -105 -KPX Aacute W -95 -KPX Aacute Y -55 -KPX Aacute Yacute -55 -KPX Aacute Ydieresis -55 -KPX Aacute quoteright -37 -KPX Aacute u -20 -KPX Aacute uacute -20 -KPX Aacute ucircumflex -20 -KPX Aacute udieresis -20 -KPX Aacute ugrave -20 -KPX Aacute uhungarumlaut -20 -KPX Aacute umacron -20 -KPX Aacute uogonek -20 -KPX Aacute uring -20 -KPX Aacute v -55 -KPX Aacute w -55 -KPX Aacute y -55 -KPX Aacute yacute -55 -KPX Aacute ydieresis -55 -KPX Abreve C -30 -KPX Abreve Cacute -30 -KPX Abreve Ccaron -30 -KPX Abreve Ccedilla -30 -KPX Abreve G -35 -KPX Abreve Gbreve -35 -KPX Abreve Gcommaaccent -35 -KPX Abreve O -40 -KPX Abreve Oacute -40 -KPX Abreve Ocircumflex -40 -KPX Abreve Odieresis -40 -KPX Abreve Ograve -40 -KPX Abreve Ohungarumlaut -40 -KPX Abreve Omacron -40 -KPX Abreve Oslash -40 -KPX Abreve Otilde -40 -KPX Abreve Q -40 -KPX Abreve T -37 -KPX Abreve Tcaron -37 -KPX Abreve Tcommaaccent -37 -KPX Abreve U -50 -KPX Abreve Uacute -50 -KPX Abreve Ucircumflex -50 -KPX Abreve Udieresis -50 -KPX Abreve Ugrave -50 -KPX Abreve Uhungarumlaut -50 -KPX Abreve Umacron -50 -KPX Abreve Uogonek -50 -KPX Abreve Uring -50 -KPX Abreve V -105 -KPX Abreve W -95 -KPX Abreve Y -55 -KPX Abreve Yacute -55 -KPX Abreve Ydieresis -55 -KPX Abreve quoteright -37 -KPX Abreve u -20 -KPX Abreve uacute -20 -KPX Abreve ucircumflex -20 -KPX Abreve udieresis -20 -KPX Abreve ugrave -20 -KPX Abreve uhungarumlaut -20 -KPX Abreve umacron -20 -KPX Abreve uogonek -20 -KPX Abreve uring -20 -KPX Abreve v -55 -KPX Abreve w -55 -KPX Abreve y -55 -KPX Abreve yacute -55 -KPX Abreve ydieresis -55 -KPX Acircumflex C -30 -KPX Acircumflex Cacute -30 -KPX Acircumflex Ccaron -30 -KPX Acircumflex Ccedilla -30 -KPX Acircumflex G -35 -KPX Acircumflex Gbreve -35 -KPX Acircumflex Gcommaaccent -35 -KPX Acircumflex O -40 -KPX Acircumflex Oacute -40 -KPX Acircumflex Ocircumflex -40 -KPX Acircumflex Odieresis -40 -KPX Acircumflex Ograve -40 -KPX Acircumflex Ohungarumlaut -40 -KPX Acircumflex Omacron -40 -KPX Acircumflex Oslash -40 -KPX Acircumflex Otilde -40 -KPX Acircumflex Q -40 -KPX Acircumflex T -37 -KPX Acircumflex Tcaron -37 -KPX Acircumflex Tcommaaccent -37 -KPX Acircumflex U -50 -KPX Acircumflex Uacute -50 -KPX Acircumflex Ucircumflex -50 -KPX Acircumflex Udieresis -50 -KPX Acircumflex Ugrave -50 -KPX Acircumflex Uhungarumlaut -50 -KPX Acircumflex Umacron -50 -KPX Acircumflex Uogonek -50 -KPX Acircumflex Uring -50 -KPX Acircumflex V -105 -KPX Acircumflex W -95 -KPX Acircumflex Y -55 -KPX Acircumflex Yacute -55 -KPX Acircumflex Ydieresis -55 -KPX Acircumflex quoteright -37 -KPX Acircumflex u -20 -KPX Acircumflex uacute -20 -KPX Acircumflex ucircumflex -20 -KPX Acircumflex udieresis -20 -KPX Acircumflex ugrave -20 -KPX Acircumflex uhungarumlaut -20 -KPX Acircumflex umacron -20 -KPX Acircumflex uogonek -20 -KPX Acircumflex uring -20 -KPX Acircumflex v -55 -KPX Acircumflex w -55 -KPX Acircumflex y -55 -KPX Acircumflex yacute -55 -KPX Acircumflex ydieresis -55 -KPX Adieresis C -30 -KPX Adieresis Cacute -30 -KPX Adieresis Ccaron -30 -KPX Adieresis Ccedilla -30 -KPX Adieresis G -35 -KPX Adieresis Gbreve -35 -KPX Adieresis Gcommaaccent -35 -KPX Adieresis O -40 -KPX Adieresis Oacute -40 -KPX Adieresis Ocircumflex -40 -KPX Adieresis Odieresis -40 -KPX Adieresis Ograve -40 -KPX Adieresis Ohungarumlaut -40 -KPX Adieresis Omacron -40 -KPX Adieresis Oslash -40 -KPX Adieresis Otilde -40 -KPX Adieresis Q -40 -KPX Adieresis T -37 -KPX Adieresis Tcaron -37 -KPX Adieresis Tcommaaccent -37 -KPX Adieresis U -50 -KPX Adieresis Uacute -50 -KPX Adieresis Ucircumflex -50 -KPX Adieresis Udieresis -50 -KPX Adieresis Ugrave -50 -KPX Adieresis Uhungarumlaut -50 -KPX Adieresis Umacron -50 -KPX Adieresis Uogonek -50 -KPX Adieresis Uring -50 -KPX Adieresis V -105 -KPX Adieresis W -95 -KPX Adieresis Y -55 -KPX Adieresis Yacute -55 -KPX Adieresis Ydieresis -55 -KPX Adieresis quoteright -37 -KPX Adieresis u -20 -KPX Adieresis uacute -20 -KPX Adieresis ucircumflex -20 -KPX Adieresis udieresis -20 -KPX Adieresis ugrave -20 -KPX Adieresis uhungarumlaut -20 -KPX Adieresis umacron -20 -KPX Adieresis uogonek -20 -KPX Adieresis uring -20 -KPX Adieresis v -55 -KPX Adieresis w -55 -KPX Adieresis y -55 -KPX Adieresis yacute -55 -KPX Adieresis ydieresis -55 -KPX Agrave C -30 -KPX Agrave Cacute -30 -KPX Agrave Ccaron -30 -KPX Agrave Ccedilla -30 -KPX Agrave G -35 -KPX Agrave Gbreve -35 -KPX Agrave Gcommaaccent -35 -KPX Agrave O -40 -KPX Agrave Oacute -40 -KPX Agrave Ocircumflex -40 -KPX Agrave Odieresis -40 -KPX Agrave Ograve -40 -KPX Agrave Ohungarumlaut -40 -KPX Agrave Omacron -40 -KPX Agrave Oslash -40 -KPX Agrave Otilde -40 -KPX Agrave Q -40 -KPX Agrave T -37 -KPX Agrave Tcaron -37 -KPX Agrave Tcommaaccent -37 -KPX Agrave U -50 -KPX Agrave Uacute -50 -KPX Agrave Ucircumflex -50 -KPX Agrave Udieresis -50 -KPX Agrave Ugrave -50 -KPX Agrave Uhungarumlaut -50 -KPX Agrave Umacron -50 -KPX Agrave Uogonek -50 -KPX Agrave Uring -50 -KPX Agrave V -105 -KPX Agrave W -95 -KPX Agrave Y -55 -KPX Agrave Yacute -55 -KPX Agrave Ydieresis -55 -KPX Agrave quoteright -37 -KPX Agrave u -20 -KPX Agrave uacute -20 -KPX Agrave ucircumflex -20 -KPX Agrave udieresis -20 -KPX Agrave ugrave -20 -KPX Agrave uhungarumlaut -20 -KPX Agrave umacron -20 -KPX Agrave uogonek -20 -KPX Agrave uring -20 -KPX Agrave v -55 -KPX Agrave w -55 -KPX Agrave y -55 -KPX Agrave yacute -55 -KPX Agrave ydieresis -55 -KPX Amacron C -30 -KPX Amacron Cacute -30 -KPX Amacron Ccaron -30 -KPX Amacron Ccedilla -30 -KPX Amacron G -35 -KPX Amacron Gbreve -35 -KPX Amacron Gcommaaccent -35 -KPX Amacron O -40 -KPX Amacron Oacute -40 -KPX Amacron Ocircumflex -40 -KPX Amacron Odieresis -40 -KPX Amacron Ograve -40 -KPX Amacron Ohungarumlaut -40 -KPX Amacron Omacron -40 -KPX Amacron Oslash -40 -KPX Amacron Otilde -40 -KPX Amacron Q -40 -KPX Amacron T -37 -KPX Amacron Tcaron -37 -KPX Amacron Tcommaaccent -37 -KPX Amacron U -50 -KPX Amacron Uacute -50 -KPX Amacron Ucircumflex -50 -KPX Amacron Udieresis -50 -KPX Amacron Ugrave -50 -KPX Amacron Uhungarumlaut -50 -KPX Amacron Umacron -50 -KPX Amacron Uogonek -50 -KPX Amacron Uring -50 -KPX Amacron V -105 -KPX Amacron W -95 -KPX Amacron Y -55 -KPX Amacron Yacute -55 -KPX Amacron Ydieresis -55 -KPX Amacron quoteright -37 -KPX Amacron u -20 -KPX Amacron uacute -20 -KPX Amacron ucircumflex -20 -KPX Amacron udieresis -20 -KPX Amacron ugrave -20 -KPX Amacron uhungarumlaut -20 -KPX Amacron umacron -20 -KPX Amacron uogonek -20 -KPX Amacron uring -20 -KPX Amacron v -55 -KPX Amacron w -55 -KPX Amacron y -55 -KPX Amacron yacute -55 -KPX Amacron ydieresis -55 -KPX Aogonek C -30 -KPX Aogonek Cacute -30 -KPX Aogonek Ccaron -30 -KPX Aogonek Ccedilla -30 -KPX Aogonek G -35 -KPX Aogonek Gbreve -35 -KPX Aogonek Gcommaaccent -35 -KPX Aogonek O -40 -KPX Aogonek Oacute -40 -KPX Aogonek Ocircumflex -40 -KPX Aogonek Odieresis -40 -KPX Aogonek Ograve -40 -KPX Aogonek Ohungarumlaut -40 -KPX Aogonek Omacron -40 -KPX Aogonek Oslash -40 -KPX Aogonek Otilde -40 -KPX Aogonek Q -40 -KPX Aogonek T -37 -KPX Aogonek Tcaron -37 -KPX Aogonek Tcommaaccent -37 -KPX Aogonek U -50 -KPX Aogonek Uacute -50 -KPX Aogonek Ucircumflex -50 -KPX Aogonek Udieresis -50 -KPX Aogonek Ugrave -50 -KPX Aogonek Uhungarumlaut -50 -KPX Aogonek Umacron -50 -KPX Aogonek Uogonek -50 -KPX Aogonek Uring -50 -KPX Aogonek V -105 -KPX Aogonek W -95 -KPX Aogonek Y -55 -KPX Aogonek Yacute -55 -KPX Aogonek Ydieresis -55 -KPX Aogonek quoteright -37 -KPX Aogonek u -20 -KPX Aogonek uacute -20 -KPX Aogonek ucircumflex -20 -KPX Aogonek udieresis -20 -KPX Aogonek ugrave -20 -KPX Aogonek uhungarumlaut -20 -KPX Aogonek umacron -20 -KPX Aogonek uogonek -20 -KPX Aogonek uring -20 -KPX Aogonek v -55 -KPX Aogonek w -55 -KPX Aogonek y -55 -KPX Aogonek yacute -55 -KPX Aogonek ydieresis -55 -KPX Aring C -30 -KPX Aring Cacute -30 -KPX Aring Ccaron -30 -KPX Aring Ccedilla -30 -KPX Aring G -35 -KPX Aring Gbreve -35 -KPX Aring Gcommaaccent -35 -KPX Aring O -40 -KPX Aring Oacute -40 -KPX Aring Ocircumflex -40 -KPX Aring Odieresis -40 -KPX Aring Ograve -40 -KPX Aring Ohungarumlaut -40 -KPX Aring Omacron -40 -KPX Aring Oslash -40 -KPX Aring Otilde -40 -KPX Aring Q -40 -KPX Aring T -37 -KPX Aring Tcaron -37 -KPX Aring Tcommaaccent -37 -KPX Aring U -50 -KPX Aring Uacute -50 -KPX Aring Ucircumflex -50 -KPX Aring Udieresis -50 -KPX Aring Ugrave -50 -KPX Aring Uhungarumlaut -50 -KPX Aring Umacron -50 -KPX Aring Uogonek -50 -KPX Aring Uring -50 -KPX Aring V -105 -KPX Aring W -95 -KPX Aring Y -55 -KPX Aring Yacute -55 -KPX Aring Ydieresis -55 -KPX Aring quoteright -37 -KPX Aring u -20 -KPX Aring uacute -20 -KPX Aring ucircumflex -20 -KPX Aring udieresis -20 -KPX Aring ugrave -20 -KPX Aring uhungarumlaut -20 -KPX Aring umacron -20 -KPX Aring uogonek -20 -KPX Aring uring -20 -KPX Aring v -55 -KPX Aring w -55 -KPX Aring y -55 -KPX Aring yacute -55 -KPX Aring ydieresis -55 -KPX Atilde C -30 -KPX Atilde Cacute -30 -KPX Atilde Ccaron -30 -KPX Atilde Ccedilla -30 -KPX Atilde G -35 -KPX Atilde Gbreve -35 -KPX Atilde Gcommaaccent -35 -KPX Atilde O -40 -KPX Atilde Oacute -40 -KPX Atilde Ocircumflex -40 -KPX Atilde Odieresis -40 -KPX Atilde Ograve -40 -KPX Atilde Ohungarumlaut -40 -KPX Atilde Omacron -40 -KPX Atilde Oslash -40 -KPX Atilde Otilde -40 -KPX Atilde Q -40 -KPX Atilde T -37 -KPX Atilde Tcaron -37 -KPX Atilde Tcommaaccent -37 -KPX Atilde U -50 -KPX Atilde Uacute -50 -KPX Atilde Ucircumflex -50 -KPX Atilde Udieresis -50 -KPX Atilde Ugrave -50 -KPX Atilde Uhungarumlaut -50 -KPX Atilde Umacron -50 -KPX Atilde Uogonek -50 -KPX Atilde Uring -50 -KPX Atilde V -105 -KPX Atilde W -95 -KPX Atilde Y -55 -KPX Atilde Yacute -55 -KPX Atilde Ydieresis -55 -KPX Atilde quoteright -37 -KPX Atilde u -20 -KPX Atilde uacute -20 -KPX Atilde ucircumflex -20 -KPX Atilde udieresis -20 -KPX Atilde ugrave -20 -KPX Atilde uhungarumlaut -20 -KPX Atilde umacron -20 -KPX Atilde uogonek -20 -KPX Atilde uring -20 -KPX Atilde v -55 -KPX Atilde w -55 -KPX Atilde y -55 -KPX Atilde yacute -55 -KPX Atilde ydieresis -55 -KPX B A -25 -KPX B Aacute -25 -KPX B Abreve -25 -KPX B Acircumflex -25 -KPX B Adieresis -25 -KPX B Agrave -25 -KPX B Amacron -25 -KPX B Aogonek -25 -KPX B Aring -25 -KPX B Atilde -25 -KPX B U -10 -KPX B Uacute -10 -KPX B Ucircumflex -10 -KPX B Udieresis -10 -KPX B Ugrave -10 -KPX B Uhungarumlaut -10 -KPX B Umacron -10 -KPX B Uogonek -10 -KPX B Uring -10 -KPX D A -35 -KPX D Aacute -35 -KPX D Abreve -35 -KPX D Acircumflex -35 -KPX D Adieresis -35 -KPX D Agrave -35 -KPX D Amacron -35 -KPX D Aogonek -35 -KPX D Aring -35 -KPX D Atilde -35 -KPX D V -40 -KPX D W -40 -KPX D Y -40 -KPX D Yacute -40 -KPX D Ydieresis -40 -KPX Dcaron A -35 -KPX Dcaron Aacute -35 -KPX Dcaron Abreve -35 -KPX Dcaron Acircumflex -35 -KPX Dcaron Adieresis -35 -KPX Dcaron Agrave -35 -KPX Dcaron Amacron -35 -KPX Dcaron Aogonek -35 -KPX Dcaron Aring -35 -KPX Dcaron Atilde -35 -KPX Dcaron V -40 -KPX Dcaron W -40 -KPX Dcaron Y -40 -KPX Dcaron Yacute -40 -KPX Dcaron Ydieresis -40 -KPX Dcroat A -35 -KPX Dcroat Aacute -35 -KPX Dcroat Abreve -35 -KPX Dcroat Acircumflex -35 -KPX Dcroat Adieresis -35 -KPX Dcroat Agrave -35 -KPX Dcroat Amacron -35 -KPX Dcroat Aogonek -35 -KPX Dcroat Aring -35 -KPX Dcroat Atilde -35 -KPX Dcroat V -40 -KPX Dcroat W -40 -KPX Dcroat Y -40 -KPX Dcroat Yacute -40 -KPX Dcroat Ydieresis -40 -KPX F A -115 -KPX F Aacute -115 -KPX F Abreve -115 -KPX F Acircumflex -115 -KPX F Adieresis -115 -KPX F Agrave -115 -KPX F Amacron -115 -KPX F Aogonek -115 -KPX F Aring -115 -KPX F Atilde -115 -KPX F a -75 -KPX F aacute -75 -KPX F abreve -75 -KPX F acircumflex -75 -KPX F adieresis -75 -KPX F agrave -75 -KPX F amacron -75 -KPX F aogonek -75 -KPX F aring -75 -KPX F atilde -75 -KPX F comma -135 -KPX F e -75 -KPX F eacute -75 -KPX F ecaron -75 -KPX F ecircumflex -75 -KPX F edieresis -75 -KPX F edotaccent -75 -KPX F egrave -75 -KPX F emacron -75 -KPX F eogonek -75 -KPX F i -45 -KPX F iacute -45 -KPX F icircumflex -45 -KPX F idieresis -45 -KPX F igrave -45 -KPX F imacron -45 -KPX F iogonek -45 -KPX F o -105 -KPX F oacute -105 -KPX F ocircumflex -105 -KPX F odieresis -105 -KPX F ograve -105 -KPX F ohungarumlaut -105 -KPX F omacron -105 -KPX F oslash -105 -KPX F otilde -105 -KPX F period -135 -KPX F r -55 -KPX F racute -55 -KPX F rcaron -55 -KPX F rcommaaccent -55 -KPX J A -40 -KPX J Aacute -40 -KPX J Abreve -40 -KPX J Acircumflex -40 -KPX J Adieresis -40 -KPX J Agrave -40 -KPX J Amacron -40 -KPX J Aogonek -40 -KPX J Aring -40 -KPX J Atilde -40 -KPX J a -35 -KPX J aacute -35 -KPX J abreve -35 -KPX J acircumflex -35 -KPX J adieresis -35 -KPX J agrave -35 -KPX J amacron -35 -KPX J aogonek -35 -KPX J aring -35 -KPX J atilde -35 -KPX J comma -25 -KPX J e -25 -KPX J eacute -25 -KPX J ecaron -25 -KPX J ecircumflex -25 -KPX J edieresis -25 -KPX J edotaccent -25 -KPX J egrave -25 -KPX J emacron -25 -KPX J eogonek -25 -KPX J o -25 -KPX J oacute -25 -KPX J ocircumflex -25 -KPX J odieresis -25 -KPX J ograve -25 -KPX J ohungarumlaut -25 -KPX J omacron -25 -KPX J oslash -25 -KPX J otilde -25 -KPX J period -25 -KPX J u -35 -KPX J uacute -35 -KPX J ucircumflex -35 -KPX J udieresis -35 -KPX J ugrave -35 -KPX J uhungarumlaut -35 -KPX J umacron -35 -KPX J uogonek -35 -KPX J uring -35 -KPX K O -50 -KPX K Oacute -50 -KPX K Ocircumflex -50 -KPX K Odieresis -50 -KPX K Ograve -50 -KPX K Ohungarumlaut -50 -KPX K Omacron -50 -KPX K Oslash -50 -KPX K Otilde -50 -KPX K e -35 -KPX K eacute -35 -KPX K ecaron -35 -KPX K ecircumflex -35 -KPX K edieresis -35 -KPX K edotaccent -35 -KPX K egrave -35 -KPX K emacron -35 -KPX K eogonek -35 -KPX K o -40 -KPX K oacute -40 -KPX K ocircumflex -40 -KPX K odieresis -40 -KPX K ograve -40 -KPX K ohungarumlaut -40 -KPX K omacron -40 -KPX K oslash -40 -KPX K otilde -40 -KPX K u -40 -KPX K uacute -40 -KPX K ucircumflex -40 -KPX K udieresis -40 -KPX K ugrave -40 -KPX K uhungarumlaut -40 -KPX K umacron -40 -KPX K uogonek -40 -KPX K uring -40 -KPX K y -40 -KPX K yacute -40 -KPX K ydieresis -40 -KPX Kcommaaccent O -50 -KPX Kcommaaccent Oacute -50 -KPX Kcommaaccent Ocircumflex -50 -KPX Kcommaaccent Odieresis -50 -KPX Kcommaaccent Ograve -50 -KPX Kcommaaccent Ohungarumlaut -50 -KPX Kcommaaccent Omacron -50 -KPX Kcommaaccent Oslash -50 -KPX Kcommaaccent Otilde -50 -KPX Kcommaaccent e -35 -KPX Kcommaaccent eacute -35 -KPX Kcommaaccent ecaron -35 -KPX Kcommaaccent ecircumflex -35 -KPX Kcommaaccent edieresis -35 -KPX Kcommaaccent edotaccent -35 -KPX Kcommaaccent egrave -35 -KPX Kcommaaccent emacron -35 -KPX Kcommaaccent eogonek -35 -KPX Kcommaaccent o -40 -KPX Kcommaaccent oacute -40 -KPX Kcommaaccent ocircumflex -40 -KPX Kcommaaccent odieresis -40 -KPX Kcommaaccent ograve -40 -KPX Kcommaaccent ohungarumlaut -40 -KPX Kcommaaccent omacron -40 -KPX Kcommaaccent oslash -40 -KPX Kcommaaccent otilde -40 -KPX Kcommaaccent u -40 -KPX Kcommaaccent uacute -40 -KPX Kcommaaccent ucircumflex -40 -KPX Kcommaaccent udieresis -40 -KPX Kcommaaccent ugrave -40 -KPX Kcommaaccent uhungarumlaut -40 -KPX Kcommaaccent umacron -40 -KPX Kcommaaccent uogonek -40 -KPX Kcommaaccent uring -40 -KPX Kcommaaccent y -40 -KPX Kcommaaccent yacute -40 -KPX Kcommaaccent ydieresis -40 -KPX L T -20 -KPX L Tcaron -20 -KPX L Tcommaaccent -20 -KPX L V -55 -KPX L W -55 -KPX L Y -20 -KPX L Yacute -20 -KPX L Ydieresis -20 -KPX L quoteright -37 -KPX L y -30 -KPX L yacute -30 -KPX L ydieresis -30 -KPX Lacute T -20 -KPX Lacute Tcaron -20 -KPX Lacute Tcommaaccent -20 -KPX Lacute V -55 -KPX Lacute W -55 -KPX Lacute Y -20 -KPX Lacute Yacute -20 -KPX Lacute Ydieresis -20 -KPX Lacute quoteright -37 -KPX Lacute y -30 -KPX Lacute yacute -30 -KPX Lacute ydieresis -30 -KPX Lcommaaccent T -20 -KPX Lcommaaccent Tcaron -20 -KPX Lcommaaccent Tcommaaccent -20 -KPX Lcommaaccent V -55 -KPX Lcommaaccent W -55 -KPX Lcommaaccent Y -20 -KPX Lcommaaccent Yacute -20 -KPX Lcommaaccent Ydieresis -20 -KPX Lcommaaccent quoteright -37 -KPX Lcommaaccent y -30 -KPX Lcommaaccent yacute -30 -KPX Lcommaaccent ydieresis -30 -KPX Lslash T -20 -KPX Lslash Tcaron -20 -KPX Lslash Tcommaaccent -20 -KPX Lslash V -55 -KPX Lslash W -55 -KPX Lslash Y -20 -KPX Lslash Yacute -20 -KPX Lslash Ydieresis -20 -KPX Lslash quoteright -37 -KPX Lslash y -30 -KPX Lslash yacute -30 -KPX Lslash ydieresis -30 -KPX N A -27 -KPX N Aacute -27 -KPX N Abreve -27 -KPX N Acircumflex -27 -KPX N Adieresis -27 -KPX N Agrave -27 -KPX N Amacron -27 -KPX N Aogonek -27 -KPX N Aring -27 -KPX N Atilde -27 -KPX Nacute A -27 -KPX Nacute Aacute -27 -KPX Nacute Abreve -27 -KPX Nacute Acircumflex -27 -KPX Nacute Adieresis -27 -KPX Nacute Agrave -27 -KPX Nacute Amacron -27 -KPX Nacute Aogonek -27 -KPX Nacute Aring -27 -KPX Nacute Atilde -27 -KPX Ncaron A -27 -KPX Ncaron Aacute -27 -KPX Ncaron Abreve -27 -KPX Ncaron Acircumflex -27 -KPX Ncaron Adieresis -27 -KPX Ncaron Agrave -27 -KPX Ncaron Amacron -27 -KPX Ncaron Aogonek -27 -KPX Ncaron Aring -27 -KPX Ncaron Atilde -27 -KPX Ncommaaccent A -27 -KPX Ncommaaccent Aacute -27 -KPX Ncommaaccent Abreve -27 -KPX Ncommaaccent Acircumflex -27 -KPX Ncommaaccent Adieresis -27 -KPX Ncommaaccent Agrave -27 -KPX Ncommaaccent Amacron -27 -KPX Ncommaaccent Aogonek -27 -KPX Ncommaaccent Aring -27 -KPX Ncommaaccent Atilde -27 -KPX Ntilde A -27 -KPX Ntilde Aacute -27 -KPX Ntilde Abreve -27 -KPX Ntilde Acircumflex -27 -KPX Ntilde Adieresis -27 -KPX Ntilde Agrave -27 -KPX Ntilde Amacron -27 -KPX Ntilde Aogonek -27 -KPX Ntilde Aring -27 -KPX Ntilde Atilde -27 -KPX O A -55 -KPX O Aacute -55 -KPX O Abreve -55 -KPX O Acircumflex -55 -KPX O Adieresis -55 -KPX O Agrave -55 -KPX O Amacron -55 -KPX O Aogonek -55 -KPX O Aring -55 -KPX O Atilde -55 -KPX O T -40 -KPX O Tcaron -40 -KPX O Tcommaaccent -40 -KPX O V -50 -KPX O W -50 -KPX O X -40 -KPX O Y -50 -KPX O Yacute -50 -KPX O Ydieresis -50 -KPX Oacute A -55 -KPX Oacute Aacute -55 -KPX Oacute Abreve -55 -KPX Oacute Acircumflex -55 -KPX Oacute Adieresis -55 -KPX Oacute Agrave -55 -KPX Oacute Amacron -55 -KPX Oacute Aogonek -55 -KPX Oacute Aring -55 -KPX Oacute Atilde -55 -KPX Oacute T -40 -KPX Oacute Tcaron -40 -KPX Oacute Tcommaaccent -40 -KPX Oacute V -50 -KPX Oacute W -50 -KPX Oacute X -40 -KPX Oacute Y -50 -KPX Oacute Yacute -50 -KPX Oacute Ydieresis -50 -KPX Ocircumflex A -55 -KPX Ocircumflex Aacute -55 -KPX Ocircumflex Abreve -55 -KPX Ocircumflex Acircumflex -55 -KPX Ocircumflex Adieresis -55 -KPX Ocircumflex Agrave -55 -KPX Ocircumflex Amacron -55 -KPX Ocircumflex Aogonek -55 -KPX Ocircumflex Aring -55 -KPX Ocircumflex Atilde -55 -KPX Ocircumflex T -40 -KPX Ocircumflex Tcaron -40 -KPX Ocircumflex Tcommaaccent -40 -KPX Ocircumflex V -50 -KPX Ocircumflex W -50 -KPX Ocircumflex X -40 -KPX Ocircumflex Y -50 -KPX Ocircumflex Yacute -50 -KPX Ocircumflex Ydieresis -50 -KPX Odieresis A -55 -KPX Odieresis Aacute -55 -KPX Odieresis Abreve -55 -KPX Odieresis Acircumflex -55 -KPX Odieresis Adieresis -55 -KPX Odieresis Agrave -55 -KPX Odieresis Amacron -55 -KPX Odieresis Aogonek -55 -KPX Odieresis Aring -55 -KPX Odieresis Atilde -55 -KPX Odieresis T -40 -KPX Odieresis Tcaron -40 -KPX Odieresis Tcommaaccent -40 -KPX Odieresis V -50 -KPX Odieresis W -50 -KPX Odieresis X -40 -KPX Odieresis Y -50 -KPX Odieresis Yacute -50 -KPX Odieresis Ydieresis -50 -KPX Ograve A -55 -KPX Ograve Aacute -55 -KPX Ograve Abreve -55 -KPX Ograve Acircumflex -55 -KPX Ograve Adieresis -55 -KPX Ograve Agrave -55 -KPX Ograve Amacron -55 -KPX Ograve Aogonek -55 -KPX Ograve Aring -55 -KPX Ograve Atilde -55 -KPX Ograve T -40 -KPX Ograve Tcaron -40 -KPX Ograve Tcommaaccent -40 -KPX Ograve V -50 -KPX Ograve W -50 -KPX Ograve X -40 -KPX Ograve Y -50 -KPX Ograve Yacute -50 -KPX Ograve Ydieresis -50 -KPX Ohungarumlaut A -55 -KPX Ohungarumlaut Aacute -55 -KPX Ohungarumlaut Abreve -55 -KPX Ohungarumlaut Acircumflex -55 -KPX Ohungarumlaut Adieresis -55 -KPX Ohungarumlaut Agrave -55 -KPX Ohungarumlaut Amacron -55 -KPX Ohungarumlaut Aogonek -55 -KPX Ohungarumlaut Aring -55 -KPX Ohungarumlaut Atilde -55 -KPX Ohungarumlaut T -40 -KPX Ohungarumlaut Tcaron -40 -KPX Ohungarumlaut Tcommaaccent -40 -KPX Ohungarumlaut V -50 -KPX Ohungarumlaut W -50 -KPX Ohungarumlaut X -40 -KPX Ohungarumlaut Y -50 -KPX Ohungarumlaut Yacute -50 -KPX Ohungarumlaut Ydieresis -50 -KPX Omacron A -55 -KPX Omacron Aacute -55 -KPX Omacron Abreve -55 -KPX Omacron Acircumflex -55 -KPX Omacron Adieresis -55 -KPX Omacron Agrave -55 -KPX Omacron Amacron -55 -KPX Omacron Aogonek -55 -KPX Omacron Aring -55 -KPX Omacron Atilde -55 -KPX Omacron T -40 -KPX Omacron Tcaron -40 -KPX Omacron Tcommaaccent -40 -KPX Omacron V -50 -KPX Omacron W -50 -KPX Omacron X -40 -KPX Omacron Y -50 -KPX Omacron Yacute -50 -KPX Omacron Ydieresis -50 -KPX Oslash A -55 -KPX Oslash Aacute -55 -KPX Oslash Abreve -55 -KPX Oslash Acircumflex -55 -KPX Oslash Adieresis -55 -KPX Oslash Agrave -55 -KPX Oslash Amacron -55 -KPX Oslash Aogonek -55 -KPX Oslash Aring -55 -KPX Oslash Atilde -55 -KPX Oslash T -40 -KPX Oslash Tcaron -40 -KPX Oslash Tcommaaccent -40 -KPX Oslash V -50 -KPX Oslash W -50 -KPX Oslash X -40 -KPX Oslash Y -50 -KPX Oslash Yacute -50 -KPX Oslash Ydieresis -50 -KPX Otilde A -55 -KPX Otilde Aacute -55 -KPX Otilde Abreve -55 -KPX Otilde Acircumflex -55 -KPX Otilde Adieresis -55 -KPX Otilde Agrave -55 -KPX Otilde Amacron -55 -KPX Otilde Aogonek -55 -KPX Otilde Aring -55 -KPX Otilde Atilde -55 -KPX Otilde T -40 -KPX Otilde Tcaron -40 -KPX Otilde Tcommaaccent -40 -KPX Otilde V -50 -KPX Otilde W -50 -KPX Otilde X -40 -KPX Otilde Y -50 -KPX Otilde Yacute -50 -KPX Otilde Ydieresis -50 -KPX P A -90 -KPX P Aacute -90 -KPX P Abreve -90 -KPX P Acircumflex -90 -KPX P Adieresis -90 -KPX P Agrave -90 -KPX P Amacron -90 -KPX P Aogonek -90 -KPX P Aring -90 -KPX P Atilde -90 -KPX P a -80 -KPX P aacute -80 -KPX P abreve -80 -KPX P acircumflex -80 -KPX P adieresis -80 -KPX P agrave -80 -KPX P amacron -80 -KPX P aogonek -80 -KPX P aring -80 -KPX P atilde -80 -KPX P comma -135 -KPX P e -80 -KPX P eacute -80 -KPX P ecaron -80 -KPX P ecircumflex -80 -KPX P edieresis -80 -KPX P edotaccent -80 -KPX P egrave -80 -KPX P emacron -80 -KPX P eogonek -80 -KPX P o -80 -KPX P oacute -80 -KPX P ocircumflex -80 -KPX P odieresis -80 -KPX P ograve -80 -KPX P ohungarumlaut -80 -KPX P omacron -80 -KPX P oslash -80 -KPX P otilde -80 -KPX P period -135 -KPX Q U -10 -KPX Q Uacute -10 -KPX Q Ucircumflex -10 -KPX Q Udieresis -10 -KPX Q Ugrave -10 -KPX Q Uhungarumlaut -10 -KPX Q Umacron -10 -KPX Q Uogonek -10 -KPX Q Uring -10 -KPX R O -40 -KPX R Oacute -40 -KPX R Ocircumflex -40 -KPX R Odieresis -40 -KPX R Ograve -40 -KPX R Ohungarumlaut -40 -KPX R Omacron -40 -KPX R Oslash -40 -KPX R Otilde -40 -KPX R U -40 -KPX R Uacute -40 -KPX R Ucircumflex -40 -KPX R Udieresis -40 -KPX R Ugrave -40 -KPX R Uhungarumlaut -40 -KPX R Umacron -40 -KPX R Uogonek -40 -KPX R Uring -40 -KPX R V -18 -KPX R W -18 -KPX R Y -18 -KPX R Yacute -18 -KPX R Ydieresis -18 -KPX Racute O -40 -KPX Racute Oacute -40 -KPX Racute Ocircumflex -40 -KPX Racute Odieresis -40 -KPX Racute Ograve -40 -KPX Racute Ohungarumlaut -40 -KPX Racute Omacron -40 -KPX Racute Oslash -40 -KPX Racute Otilde -40 -KPX Racute U -40 -KPX Racute Uacute -40 -KPX Racute Ucircumflex -40 -KPX Racute Udieresis -40 -KPX Racute Ugrave -40 -KPX Racute Uhungarumlaut -40 -KPX Racute Umacron -40 -KPX Racute Uogonek -40 -KPX Racute Uring -40 -KPX Racute V -18 -KPX Racute W -18 -KPX Racute Y -18 -KPX Racute Yacute -18 -KPX Racute Ydieresis -18 -KPX Rcaron O -40 -KPX Rcaron Oacute -40 -KPX Rcaron Ocircumflex -40 -KPX Rcaron Odieresis -40 -KPX Rcaron Ograve -40 -KPX Rcaron Ohungarumlaut -40 -KPX Rcaron Omacron -40 -KPX Rcaron Oslash -40 -KPX Rcaron Otilde -40 -KPX Rcaron U -40 -KPX Rcaron Uacute -40 -KPX Rcaron Ucircumflex -40 -KPX Rcaron Udieresis -40 -KPX Rcaron Ugrave -40 -KPX Rcaron Uhungarumlaut -40 -KPX Rcaron Umacron -40 -KPX Rcaron Uogonek -40 -KPX Rcaron Uring -40 -KPX Rcaron V -18 -KPX Rcaron W -18 -KPX Rcaron Y -18 -KPX Rcaron Yacute -18 -KPX Rcaron Ydieresis -18 -KPX Rcommaaccent O -40 -KPX Rcommaaccent Oacute -40 -KPX Rcommaaccent Ocircumflex -40 -KPX Rcommaaccent Odieresis -40 -KPX Rcommaaccent Ograve -40 -KPX Rcommaaccent Ohungarumlaut -40 -KPX Rcommaaccent Omacron -40 -KPX Rcommaaccent Oslash -40 -KPX Rcommaaccent Otilde -40 -KPX Rcommaaccent U -40 -KPX Rcommaaccent Uacute -40 -KPX Rcommaaccent Ucircumflex -40 -KPX Rcommaaccent Udieresis -40 -KPX Rcommaaccent Ugrave -40 -KPX Rcommaaccent Uhungarumlaut -40 -KPX Rcommaaccent Umacron -40 -KPX Rcommaaccent Uogonek -40 -KPX Rcommaaccent Uring -40 -KPX Rcommaaccent V -18 -KPX Rcommaaccent W -18 -KPX Rcommaaccent Y -18 -KPX Rcommaaccent Yacute -18 -KPX Rcommaaccent Ydieresis -18 -KPX T A -50 -KPX T Aacute -50 -KPX T Abreve -50 -KPX T Acircumflex -50 -KPX T Adieresis -50 -KPX T Agrave -50 -KPX T Amacron -50 -KPX T Aogonek -50 -KPX T Aring -50 -KPX T Atilde -50 -KPX T O -18 -KPX T Oacute -18 -KPX T Ocircumflex -18 -KPX T Odieresis -18 -KPX T Ograve -18 -KPX T Ohungarumlaut -18 -KPX T Omacron -18 -KPX T Oslash -18 -KPX T Otilde -18 -KPX T a -92 -KPX T aacute -92 -KPX T abreve -92 -KPX T acircumflex -92 -KPX T adieresis -92 -KPX T agrave -92 -KPX T amacron -92 -KPX T aogonek -92 -KPX T aring -92 -KPX T atilde -92 -KPX T colon -55 -KPX T comma -74 -KPX T e -92 -KPX T eacute -92 -KPX T ecaron -92 -KPX T ecircumflex -52 -KPX T edieresis -52 -KPX T edotaccent -92 -KPX T egrave -52 -KPX T emacron -52 -KPX T eogonek -92 -KPX T hyphen -74 -KPX T i -55 -KPX T iacute -55 -KPX T iogonek -55 -KPX T o -92 -KPX T oacute -92 -KPX T ocircumflex -92 -KPX T odieresis -92 -KPX T ograve -92 -KPX T ohungarumlaut -92 -KPX T omacron -92 -KPX T oslash -92 -KPX T otilde -92 -KPX T period -74 -KPX T r -55 -KPX T racute -55 -KPX T rcaron -55 -KPX T rcommaaccent -55 -KPX T semicolon -65 -KPX T u -55 -KPX T uacute -55 -KPX T ucircumflex -55 -KPX T udieresis -55 -KPX T ugrave -55 -KPX T uhungarumlaut -55 -KPX T umacron -55 -KPX T uogonek -55 -KPX T uring -55 -KPX T w -74 -KPX T y -74 -KPX T yacute -74 -KPX T ydieresis -34 -KPX Tcaron A -50 -KPX Tcaron Aacute -50 -KPX Tcaron Abreve -50 -KPX Tcaron Acircumflex -50 -KPX Tcaron Adieresis -50 -KPX Tcaron Agrave -50 -KPX Tcaron Amacron -50 -KPX Tcaron Aogonek -50 -KPX Tcaron Aring -50 -KPX Tcaron Atilde -50 -KPX Tcaron O -18 -KPX Tcaron Oacute -18 -KPX Tcaron Ocircumflex -18 -KPX Tcaron Odieresis -18 -KPX Tcaron Ograve -18 -KPX Tcaron Ohungarumlaut -18 -KPX Tcaron Omacron -18 -KPX Tcaron Oslash -18 -KPX Tcaron Otilde -18 -KPX Tcaron a -92 -KPX Tcaron aacute -92 -KPX Tcaron abreve -92 -KPX Tcaron acircumflex -92 -KPX Tcaron adieresis -92 -KPX Tcaron agrave -92 -KPX Tcaron amacron -92 -KPX Tcaron aogonek -92 -KPX Tcaron aring -92 -KPX Tcaron atilde -92 -KPX Tcaron colon -55 -KPX Tcaron comma -74 -KPX Tcaron e -92 -KPX Tcaron eacute -92 -KPX Tcaron ecaron -92 -KPX Tcaron ecircumflex -52 -KPX Tcaron edieresis -52 -KPX Tcaron edotaccent -92 -KPX Tcaron egrave -52 -KPX Tcaron emacron -52 -KPX Tcaron eogonek -92 -KPX Tcaron hyphen -74 -KPX Tcaron i -55 -KPX Tcaron iacute -55 -KPX Tcaron iogonek -55 -KPX Tcaron o -92 -KPX Tcaron oacute -92 -KPX Tcaron ocircumflex -92 -KPX Tcaron odieresis -92 -KPX Tcaron ograve -92 -KPX Tcaron ohungarumlaut -92 -KPX Tcaron omacron -92 -KPX Tcaron oslash -92 -KPX Tcaron otilde -92 -KPX Tcaron period -74 -KPX Tcaron r -55 -KPX Tcaron racute -55 -KPX Tcaron rcaron -55 -KPX Tcaron rcommaaccent -55 -KPX Tcaron semicolon -65 -KPX Tcaron u -55 -KPX Tcaron uacute -55 -KPX Tcaron ucircumflex -55 -KPX Tcaron udieresis -55 -KPX Tcaron ugrave -55 -KPX Tcaron uhungarumlaut -55 -KPX Tcaron umacron -55 -KPX Tcaron uogonek -55 -KPX Tcaron uring -55 -KPX Tcaron w -74 -KPX Tcaron y -74 -KPX Tcaron yacute -74 -KPX Tcaron ydieresis -34 -KPX Tcommaaccent A -50 -KPX Tcommaaccent Aacute -50 -KPX Tcommaaccent Abreve -50 -KPX Tcommaaccent Acircumflex -50 -KPX Tcommaaccent Adieresis -50 -KPX Tcommaaccent Agrave -50 -KPX Tcommaaccent Amacron -50 -KPX Tcommaaccent Aogonek -50 -KPX Tcommaaccent Aring -50 -KPX Tcommaaccent Atilde -50 -KPX Tcommaaccent O -18 -KPX Tcommaaccent Oacute -18 -KPX Tcommaaccent Ocircumflex -18 -KPX Tcommaaccent Odieresis -18 -KPX Tcommaaccent Ograve -18 -KPX Tcommaaccent Ohungarumlaut -18 -KPX Tcommaaccent Omacron -18 -KPX Tcommaaccent Oslash -18 -KPX Tcommaaccent Otilde -18 -KPX Tcommaaccent a -92 -KPX Tcommaaccent aacute -92 -KPX Tcommaaccent abreve -92 -KPX Tcommaaccent acircumflex -92 -KPX Tcommaaccent adieresis -92 -KPX Tcommaaccent agrave -92 -KPX Tcommaaccent amacron -92 -KPX Tcommaaccent aogonek -92 -KPX Tcommaaccent aring -92 -KPX Tcommaaccent atilde -92 -KPX Tcommaaccent colon -55 -KPX Tcommaaccent comma -74 -KPX Tcommaaccent e -92 -KPX Tcommaaccent eacute -92 -KPX Tcommaaccent ecaron -92 -KPX Tcommaaccent ecircumflex -52 -KPX Tcommaaccent edieresis -52 -KPX Tcommaaccent edotaccent -92 -KPX Tcommaaccent egrave -52 -KPX Tcommaaccent emacron -52 -KPX Tcommaaccent eogonek -92 -KPX Tcommaaccent hyphen -74 -KPX Tcommaaccent i -55 -KPX Tcommaaccent iacute -55 -KPX Tcommaaccent iogonek -55 -KPX Tcommaaccent o -92 -KPX Tcommaaccent oacute -92 -KPX Tcommaaccent ocircumflex -92 -KPX Tcommaaccent odieresis -92 -KPX Tcommaaccent ograve -92 -KPX Tcommaaccent ohungarumlaut -92 -KPX Tcommaaccent omacron -92 -KPX Tcommaaccent oslash -92 -KPX Tcommaaccent otilde -92 -KPX Tcommaaccent period -74 -KPX Tcommaaccent r -55 -KPX Tcommaaccent racute -55 -KPX Tcommaaccent rcaron -55 -KPX Tcommaaccent rcommaaccent -55 -KPX Tcommaaccent semicolon -65 -KPX Tcommaaccent u -55 -KPX Tcommaaccent uacute -55 -KPX Tcommaaccent ucircumflex -55 -KPX Tcommaaccent udieresis -55 -KPX Tcommaaccent ugrave -55 -KPX Tcommaaccent uhungarumlaut -55 -KPX Tcommaaccent umacron -55 -KPX Tcommaaccent uogonek -55 -KPX Tcommaaccent uring -55 -KPX Tcommaaccent w -74 -KPX Tcommaaccent y -74 -KPX Tcommaaccent yacute -74 -KPX Tcommaaccent ydieresis -34 -KPX U A -40 -KPX U Aacute -40 -KPX U Abreve -40 -KPX U Acircumflex -40 -KPX U Adieresis -40 -KPX U Agrave -40 -KPX U Amacron -40 -KPX U Aogonek -40 -KPX U Aring -40 -KPX U Atilde -40 -KPX U comma -25 -KPX U period -25 -KPX Uacute A -40 -KPX Uacute Aacute -40 -KPX Uacute Abreve -40 -KPX Uacute Acircumflex -40 -KPX Uacute Adieresis -40 -KPX Uacute Agrave -40 -KPX Uacute Amacron -40 -KPX Uacute Aogonek -40 -KPX Uacute Aring -40 -KPX Uacute Atilde -40 -KPX Uacute comma -25 -KPX Uacute period -25 -KPX Ucircumflex A -40 -KPX Ucircumflex Aacute -40 -KPX Ucircumflex Abreve -40 -KPX Ucircumflex Acircumflex -40 -KPX Ucircumflex Adieresis -40 -KPX Ucircumflex Agrave -40 -KPX Ucircumflex Amacron -40 -KPX Ucircumflex Aogonek -40 -KPX Ucircumflex Aring -40 -KPX Ucircumflex Atilde -40 -KPX Ucircumflex comma -25 -KPX Ucircumflex period -25 -KPX Udieresis A -40 -KPX Udieresis Aacute -40 -KPX Udieresis Abreve -40 -KPX Udieresis Acircumflex -40 -KPX Udieresis Adieresis -40 -KPX Udieresis Agrave -40 -KPX Udieresis Amacron -40 -KPX Udieresis Aogonek -40 -KPX Udieresis Aring -40 -KPX Udieresis Atilde -40 -KPX Udieresis comma -25 -KPX Udieresis period -25 -KPX Ugrave A -40 -KPX Ugrave Aacute -40 -KPX Ugrave Abreve -40 -KPX Ugrave Acircumflex -40 -KPX Ugrave Adieresis -40 -KPX Ugrave Agrave -40 -KPX Ugrave Amacron -40 -KPX Ugrave Aogonek -40 -KPX Ugrave Aring -40 -KPX Ugrave Atilde -40 -KPX Ugrave comma -25 -KPX Ugrave period -25 -KPX Uhungarumlaut A -40 -KPX Uhungarumlaut Aacute -40 -KPX Uhungarumlaut Abreve -40 -KPX Uhungarumlaut Acircumflex -40 -KPX Uhungarumlaut Adieresis -40 -KPX Uhungarumlaut Agrave -40 -KPX Uhungarumlaut Amacron -40 -KPX Uhungarumlaut Aogonek -40 -KPX Uhungarumlaut Aring -40 -KPX Uhungarumlaut Atilde -40 -KPX Uhungarumlaut comma -25 -KPX Uhungarumlaut period -25 -KPX Umacron A -40 -KPX Umacron Aacute -40 -KPX Umacron Abreve -40 -KPX Umacron Acircumflex -40 -KPX Umacron Adieresis -40 -KPX Umacron Agrave -40 -KPX Umacron Amacron -40 -KPX Umacron Aogonek -40 -KPX Umacron Aring -40 -KPX Umacron Atilde -40 -KPX Umacron comma -25 -KPX Umacron period -25 -KPX Uogonek A -40 -KPX Uogonek Aacute -40 -KPX Uogonek Abreve -40 -KPX Uogonek Acircumflex -40 -KPX Uogonek Adieresis -40 -KPX Uogonek Agrave -40 -KPX Uogonek Amacron -40 -KPX Uogonek Aogonek -40 -KPX Uogonek Aring -40 -KPX Uogonek Atilde -40 -KPX Uogonek comma -25 -KPX Uogonek period -25 -KPX Uring A -40 -KPX Uring Aacute -40 -KPX Uring Abreve -40 -KPX Uring Acircumflex -40 -KPX Uring Adieresis -40 -KPX Uring Agrave -40 -KPX Uring Amacron -40 -KPX Uring Aogonek -40 -KPX Uring Aring -40 -KPX Uring Atilde -40 -KPX Uring comma -25 -KPX Uring period -25 -KPX V A -60 -KPX V Aacute -60 -KPX V Abreve -60 -KPX V Acircumflex -60 -KPX V Adieresis -60 -KPX V Agrave -60 -KPX V Amacron -60 -KPX V Aogonek -60 -KPX V Aring -60 -KPX V Atilde -60 -KPX V O -30 -KPX V Oacute -30 -KPX V Ocircumflex -30 -KPX V Odieresis -30 -KPX V Ograve -30 -KPX V Ohungarumlaut -30 -KPX V Omacron -30 -KPX V Oslash -30 -KPX V Otilde -30 -KPX V a -111 -KPX V aacute -111 -KPX V abreve -111 -KPX V acircumflex -111 -KPX V adieresis -111 -KPX V agrave -111 -KPX V amacron -111 -KPX V aogonek -111 -KPX V aring -111 -KPX V atilde -111 -KPX V colon -65 -KPX V comma -129 -KPX V e -111 -KPX V eacute -111 -KPX V ecaron -111 -KPX V ecircumflex -111 -KPX V edieresis -71 -KPX V edotaccent -111 -KPX V egrave -71 -KPX V emacron -71 -KPX V eogonek -111 -KPX V hyphen -55 -KPX V i -74 -KPX V iacute -74 -KPX V icircumflex -34 -KPX V idieresis -34 -KPX V igrave -34 -KPX V imacron -34 -KPX V iogonek -74 -KPX V o -111 -KPX V oacute -111 -KPX V ocircumflex -111 -KPX V odieresis -111 -KPX V ograve -111 -KPX V ohungarumlaut -111 -KPX V omacron -111 -KPX V oslash -111 -KPX V otilde -111 -KPX V period -129 -KPX V semicolon -74 -KPX V u -74 -KPX V uacute -74 -KPX V ucircumflex -74 -KPX V udieresis -74 -KPX V ugrave -74 -KPX V uhungarumlaut -74 -KPX V umacron -74 -KPX V uogonek -74 -KPX V uring -74 -KPX W A -60 -KPX W Aacute -60 -KPX W Abreve -60 -KPX W Acircumflex -60 -KPX W Adieresis -60 -KPX W Agrave -60 -KPX W Amacron -60 -KPX W Aogonek -60 -KPX W Aring -60 -KPX W Atilde -60 -KPX W O -25 -KPX W Oacute -25 -KPX W Ocircumflex -25 -KPX W Odieresis -25 -KPX W Ograve -25 -KPX W Ohungarumlaut -25 -KPX W Omacron -25 -KPX W Oslash -25 -KPX W Otilde -25 -KPX W a -92 -KPX W aacute -92 -KPX W abreve -92 -KPX W acircumflex -92 -KPX W adieresis -92 -KPX W agrave -92 -KPX W amacron -92 -KPX W aogonek -92 -KPX W aring -92 -KPX W atilde -92 -KPX W colon -65 -KPX W comma -92 -KPX W e -92 -KPX W eacute -92 -KPX W ecaron -92 -KPX W ecircumflex -92 -KPX W edieresis -52 -KPX W edotaccent -92 -KPX W egrave -52 -KPX W emacron -52 -KPX W eogonek -92 -KPX W hyphen -37 -KPX W i -55 -KPX W iacute -55 -KPX W iogonek -55 -KPX W o -92 -KPX W oacute -92 -KPX W ocircumflex -92 -KPX W odieresis -92 -KPX W ograve -92 -KPX W ohungarumlaut -92 -KPX W omacron -92 -KPX W oslash -92 -KPX W otilde -92 -KPX W period -92 -KPX W semicolon -65 -KPX W u -55 -KPX W uacute -55 -KPX W ucircumflex -55 -KPX W udieresis -55 -KPX W ugrave -55 -KPX W uhungarumlaut -55 -KPX W umacron -55 -KPX W uogonek -55 -KPX W uring -55 -KPX W y -70 -KPX W yacute -70 -KPX W ydieresis -70 -KPX Y A -50 -KPX Y Aacute -50 -KPX Y Abreve -50 -KPX Y Acircumflex -50 -KPX Y Adieresis -50 -KPX Y Agrave -50 -KPX Y Amacron -50 -KPX Y Aogonek -50 -KPX Y Aring -50 -KPX Y Atilde -50 -KPX Y O -15 -KPX Y Oacute -15 -KPX Y Ocircumflex -15 -KPX Y Odieresis -15 -KPX Y Ograve -15 -KPX Y Ohungarumlaut -15 -KPX Y Omacron -15 -KPX Y Oslash -15 -KPX Y Otilde -15 -KPX Y a -92 -KPX Y aacute -92 -KPX Y abreve -92 -KPX Y acircumflex -92 -KPX Y adieresis -92 -KPX Y agrave -92 -KPX Y amacron -92 -KPX Y aogonek -92 -KPX Y aring -92 -KPX Y atilde -92 -KPX Y colon -65 -KPX Y comma -92 -KPX Y e -92 -KPX Y eacute -92 -KPX Y ecaron -92 -KPX Y ecircumflex -92 -KPX Y edieresis -52 -KPX Y edotaccent -92 -KPX Y egrave -52 -KPX Y emacron -52 -KPX Y eogonek -92 -KPX Y hyphen -74 -KPX Y i -74 -KPX Y iacute -74 -KPX Y icircumflex -34 -KPX Y idieresis -34 -KPX Y igrave -34 -KPX Y imacron -34 -KPX Y iogonek -74 -KPX Y o -92 -KPX Y oacute -92 -KPX Y ocircumflex -92 -KPX Y odieresis -92 -KPX Y ograve -92 -KPX Y ohungarumlaut -92 -KPX Y omacron -92 -KPX Y oslash -92 -KPX Y otilde -92 -KPX Y period -92 -KPX Y semicolon -65 -KPX Y u -92 -KPX Y uacute -92 -KPX Y ucircumflex -92 -KPX Y udieresis -92 -KPX Y ugrave -92 -KPX Y uhungarumlaut -92 -KPX Y umacron -92 -KPX Y uogonek -92 -KPX Y uring -92 -KPX Yacute A -50 -KPX Yacute Aacute -50 -KPX Yacute Abreve -50 -KPX Yacute Acircumflex -50 -KPX Yacute Adieresis -50 -KPX Yacute Agrave -50 -KPX Yacute Amacron -50 -KPX Yacute Aogonek -50 -KPX Yacute Aring -50 -KPX Yacute Atilde -50 -KPX Yacute O -15 -KPX Yacute Oacute -15 -KPX Yacute Ocircumflex -15 -KPX Yacute Odieresis -15 -KPX Yacute Ograve -15 -KPX Yacute Ohungarumlaut -15 -KPX Yacute Omacron -15 -KPX Yacute Oslash -15 -KPX Yacute Otilde -15 -KPX Yacute a -92 -KPX Yacute aacute -92 -KPX Yacute abreve -92 -KPX Yacute acircumflex -92 -KPX Yacute adieresis -92 -KPX Yacute agrave -92 -KPX Yacute amacron -92 -KPX Yacute aogonek -92 -KPX Yacute aring -92 -KPX Yacute atilde -92 -KPX Yacute colon -65 -KPX Yacute comma -92 -KPX Yacute e -92 -KPX Yacute eacute -92 -KPX Yacute ecaron -92 -KPX Yacute ecircumflex -92 -KPX Yacute edieresis -52 -KPX Yacute edotaccent -92 -KPX Yacute egrave -52 -KPX Yacute emacron -52 -KPX Yacute eogonek -92 -KPX Yacute hyphen -74 -KPX Yacute i -74 -KPX Yacute iacute -74 -KPX Yacute icircumflex -34 -KPX Yacute idieresis -34 -KPX Yacute igrave -34 -KPX Yacute imacron -34 -KPX Yacute iogonek -74 -KPX Yacute o -92 -KPX Yacute oacute -92 -KPX Yacute ocircumflex -92 -KPX Yacute odieresis -92 -KPX Yacute ograve -92 -KPX Yacute ohungarumlaut -92 -KPX Yacute omacron -92 -KPX Yacute oslash -92 -KPX Yacute otilde -92 -KPX Yacute period -92 -KPX Yacute semicolon -65 -KPX Yacute u -92 -KPX Yacute uacute -92 -KPX Yacute ucircumflex -92 -KPX Yacute udieresis -92 -KPX Yacute ugrave -92 -KPX Yacute uhungarumlaut -92 -KPX Yacute umacron -92 -KPX Yacute uogonek -92 -KPX Yacute uring -92 -KPX Ydieresis A -50 -KPX Ydieresis Aacute -50 -KPX Ydieresis Abreve -50 -KPX Ydieresis Acircumflex -50 -KPX Ydieresis Adieresis -50 -KPX Ydieresis Agrave -50 -KPX Ydieresis Amacron -50 -KPX Ydieresis Aogonek -50 -KPX Ydieresis Aring -50 -KPX Ydieresis Atilde -50 -KPX Ydieresis O -15 -KPX Ydieresis Oacute -15 -KPX Ydieresis Ocircumflex -15 -KPX Ydieresis Odieresis -15 -KPX Ydieresis Ograve -15 -KPX Ydieresis Ohungarumlaut -15 -KPX Ydieresis Omacron -15 -KPX Ydieresis Oslash -15 -KPX Ydieresis Otilde -15 -KPX Ydieresis a -92 -KPX Ydieresis aacute -92 -KPX Ydieresis abreve -92 -KPX Ydieresis acircumflex -92 -KPX Ydieresis adieresis -92 -KPX Ydieresis agrave -92 -KPX Ydieresis amacron -92 -KPX Ydieresis aogonek -92 -KPX Ydieresis aring -92 -KPX Ydieresis atilde -92 -KPX Ydieresis colon -65 -KPX Ydieresis comma -92 -KPX Ydieresis e -92 -KPX Ydieresis eacute -92 -KPX Ydieresis ecaron -92 -KPX Ydieresis ecircumflex -92 -KPX Ydieresis edieresis -52 -KPX Ydieresis edotaccent -92 -KPX Ydieresis egrave -52 -KPX Ydieresis emacron -52 -KPX Ydieresis eogonek -92 -KPX Ydieresis hyphen -74 -KPX Ydieresis i -74 -KPX Ydieresis iacute -74 -KPX Ydieresis icircumflex -34 -KPX Ydieresis idieresis -34 -KPX Ydieresis igrave -34 -KPX Ydieresis imacron -34 -KPX Ydieresis iogonek -74 -KPX Ydieresis o -92 -KPX Ydieresis oacute -92 -KPX Ydieresis ocircumflex -92 -KPX Ydieresis odieresis -92 -KPX Ydieresis ograve -92 -KPX Ydieresis ohungarumlaut -92 -KPX Ydieresis omacron -92 -KPX Ydieresis oslash -92 -KPX Ydieresis otilde -92 -KPX Ydieresis period -92 -KPX Ydieresis semicolon -65 -KPX Ydieresis u -92 -KPX Ydieresis uacute -92 -KPX Ydieresis ucircumflex -92 -KPX Ydieresis udieresis -92 -KPX Ydieresis ugrave -92 -KPX Ydieresis uhungarumlaut -92 -KPX Ydieresis umacron -92 -KPX Ydieresis uogonek -92 -KPX Ydieresis uring -92 -KPX a g -10 -KPX a gbreve -10 -KPX a gcommaaccent -10 -KPX aacute g -10 -KPX aacute gbreve -10 -KPX aacute gcommaaccent -10 -KPX abreve g -10 -KPX abreve gbreve -10 -KPX abreve gcommaaccent -10 -KPX acircumflex g -10 -KPX acircumflex gbreve -10 -KPX acircumflex gcommaaccent -10 -KPX adieresis g -10 -KPX adieresis gbreve -10 -KPX adieresis gcommaaccent -10 -KPX agrave g -10 -KPX agrave gbreve -10 -KPX agrave gcommaaccent -10 -KPX amacron g -10 -KPX amacron gbreve -10 -KPX amacron gcommaaccent -10 -KPX aogonek g -10 -KPX aogonek gbreve -10 -KPX aogonek gcommaaccent -10 -KPX aring g -10 -KPX aring gbreve -10 -KPX aring gcommaaccent -10 -KPX atilde g -10 -KPX atilde gbreve -10 -KPX atilde gcommaaccent -10 -KPX b period -40 -KPX b u -20 -KPX b uacute -20 -KPX b ucircumflex -20 -KPX b udieresis -20 -KPX b ugrave -20 -KPX b uhungarumlaut -20 -KPX b umacron -20 -KPX b uogonek -20 -KPX b uring -20 -KPX c h -15 -KPX c k -20 -KPX c kcommaaccent -20 -KPX cacute h -15 -KPX cacute k -20 -KPX cacute kcommaaccent -20 -KPX ccaron h -15 -KPX ccaron k -20 -KPX ccaron kcommaaccent -20 -KPX ccedilla h -15 -KPX ccedilla k -20 -KPX ccedilla kcommaaccent -20 -KPX comma quotedblright -140 -KPX comma quoteright -140 -KPX e comma -10 -KPX e g -40 -KPX e gbreve -40 -KPX e gcommaaccent -40 -KPX e period -15 -KPX e v -15 -KPX e w -15 -KPX e x -20 -KPX e y -30 -KPX e yacute -30 -KPX e ydieresis -30 -KPX eacute comma -10 -KPX eacute g -40 -KPX eacute gbreve -40 -KPX eacute gcommaaccent -40 -KPX eacute period -15 -KPX eacute v -15 -KPX eacute w -15 -KPX eacute x -20 -KPX eacute y -30 -KPX eacute yacute -30 -KPX eacute ydieresis -30 -KPX ecaron comma -10 -KPX ecaron g -40 -KPX ecaron gbreve -40 -KPX ecaron gcommaaccent -40 -KPX ecaron period -15 -KPX ecaron v -15 -KPX ecaron w -15 -KPX ecaron x -20 -KPX ecaron y -30 -KPX ecaron yacute -30 -KPX ecaron ydieresis -30 -KPX ecircumflex comma -10 -KPX ecircumflex g -40 -KPX ecircumflex gbreve -40 -KPX ecircumflex gcommaaccent -40 -KPX ecircumflex period -15 -KPX ecircumflex v -15 -KPX ecircumflex w -15 -KPX ecircumflex x -20 -KPX ecircumflex y -30 -KPX ecircumflex yacute -30 -KPX ecircumflex ydieresis -30 -KPX edieresis comma -10 -KPX edieresis g -40 -KPX edieresis gbreve -40 -KPX edieresis gcommaaccent -40 -KPX edieresis period -15 -KPX edieresis v -15 -KPX edieresis w -15 -KPX edieresis x -20 -KPX edieresis y -30 -KPX edieresis yacute -30 -KPX edieresis ydieresis -30 -KPX edotaccent comma -10 -KPX edotaccent g -40 -KPX edotaccent gbreve -40 -KPX edotaccent gcommaaccent -40 -KPX edotaccent period -15 -KPX edotaccent v -15 -KPX edotaccent w -15 -KPX edotaccent x -20 -KPX edotaccent y -30 -KPX edotaccent yacute -30 -KPX edotaccent ydieresis -30 -KPX egrave comma -10 -KPX egrave g -40 -KPX egrave gbreve -40 -KPX egrave gcommaaccent -40 -KPX egrave period -15 -KPX egrave v -15 -KPX egrave w -15 -KPX egrave x -20 -KPX egrave y -30 -KPX egrave yacute -30 -KPX egrave ydieresis -30 -KPX emacron comma -10 -KPX emacron g -40 -KPX emacron gbreve -40 -KPX emacron gcommaaccent -40 -KPX emacron period -15 -KPX emacron v -15 -KPX emacron w -15 -KPX emacron x -20 -KPX emacron y -30 -KPX emacron yacute -30 -KPX emacron ydieresis -30 -KPX eogonek comma -10 -KPX eogonek g -40 -KPX eogonek gbreve -40 -KPX eogonek gcommaaccent -40 -KPX eogonek period -15 -KPX eogonek v -15 -KPX eogonek w -15 -KPX eogonek x -20 -KPX eogonek y -30 -KPX eogonek yacute -30 -KPX eogonek ydieresis -30 -KPX f comma -10 -KPX f dotlessi -60 -KPX f f -18 -KPX f i -20 -KPX f iogonek -20 -KPX f period -15 -KPX f quoteright 92 -KPX g comma -10 -KPX g e -10 -KPX g eacute -10 -KPX g ecaron -10 -KPX g ecircumflex -10 -KPX g edieresis -10 -KPX g edotaccent -10 -KPX g egrave -10 -KPX g emacron -10 -KPX g eogonek -10 -KPX g g -10 -KPX g gbreve -10 -KPX g gcommaaccent -10 -KPX g period -15 -KPX gbreve comma -10 -KPX gbreve e -10 -KPX gbreve eacute -10 -KPX gbreve ecaron -10 -KPX gbreve ecircumflex -10 -KPX gbreve edieresis -10 -KPX gbreve edotaccent -10 -KPX gbreve egrave -10 -KPX gbreve emacron -10 -KPX gbreve eogonek -10 -KPX gbreve g -10 -KPX gbreve gbreve -10 -KPX gbreve gcommaaccent -10 -KPX gbreve period -15 -KPX gcommaaccent comma -10 -KPX gcommaaccent e -10 -KPX gcommaaccent eacute -10 -KPX gcommaaccent ecaron -10 -KPX gcommaaccent ecircumflex -10 -KPX gcommaaccent edieresis -10 -KPX gcommaaccent edotaccent -10 -KPX gcommaaccent egrave -10 -KPX gcommaaccent emacron -10 -KPX gcommaaccent eogonek -10 -KPX gcommaaccent g -10 -KPX gcommaaccent gbreve -10 -KPX gcommaaccent gcommaaccent -10 -KPX gcommaaccent period -15 -KPX k e -10 -KPX k eacute -10 -KPX k ecaron -10 -KPX k ecircumflex -10 -KPX k edieresis -10 -KPX k edotaccent -10 -KPX k egrave -10 -KPX k emacron -10 -KPX k eogonek -10 -KPX k o -10 -KPX k oacute -10 -KPX k ocircumflex -10 -KPX k odieresis -10 -KPX k ograve -10 -KPX k ohungarumlaut -10 -KPX k omacron -10 -KPX k oslash -10 -KPX k otilde -10 -KPX k y -10 -KPX k yacute -10 -KPX k ydieresis -10 -KPX kcommaaccent e -10 -KPX kcommaaccent eacute -10 -KPX kcommaaccent ecaron -10 -KPX kcommaaccent ecircumflex -10 -KPX kcommaaccent edieresis -10 -KPX kcommaaccent edotaccent -10 -KPX kcommaaccent egrave -10 -KPX kcommaaccent emacron -10 -KPX kcommaaccent eogonek -10 -KPX kcommaaccent o -10 -KPX kcommaaccent oacute -10 -KPX kcommaaccent ocircumflex -10 -KPX kcommaaccent odieresis -10 -KPX kcommaaccent ograve -10 -KPX kcommaaccent ohungarumlaut -10 -KPX kcommaaccent omacron -10 -KPX kcommaaccent oslash -10 -KPX kcommaaccent otilde -10 -KPX kcommaaccent y -10 -KPX kcommaaccent yacute -10 -KPX kcommaaccent ydieresis -10 -KPX n v -40 -KPX nacute v -40 -KPX ncaron v -40 -KPX ncommaaccent v -40 -KPX ntilde v -40 -KPX o g -10 -KPX o gbreve -10 -KPX o gcommaaccent -10 -KPX o v -10 -KPX oacute g -10 -KPX oacute gbreve -10 -KPX oacute gcommaaccent -10 -KPX oacute v -10 -KPX ocircumflex g -10 -KPX ocircumflex gbreve -10 -KPX ocircumflex gcommaaccent -10 -KPX ocircumflex v -10 -KPX odieresis g -10 -KPX odieresis gbreve -10 -KPX odieresis gcommaaccent -10 -KPX odieresis v -10 -KPX ograve g -10 -KPX ograve gbreve -10 -KPX ograve gcommaaccent -10 -KPX ograve v -10 -KPX ohungarumlaut g -10 -KPX ohungarumlaut gbreve -10 -KPX ohungarumlaut gcommaaccent -10 -KPX ohungarumlaut v -10 -KPX omacron g -10 -KPX omacron gbreve -10 -KPX omacron gcommaaccent -10 -KPX omacron v -10 -KPX oslash g -10 -KPX oslash gbreve -10 -KPX oslash gcommaaccent -10 -KPX oslash v -10 -KPX otilde g -10 -KPX otilde gbreve -10 -KPX otilde gcommaaccent -10 -KPX otilde v -10 -KPX period quotedblright -140 -KPX period quoteright -140 -KPX quoteleft quoteleft -111 -KPX quoteright d -25 -KPX quoteright dcroat -25 -KPX quoteright quoteright -111 -KPX quoteright r -25 -KPX quoteright racute -25 -KPX quoteright rcaron -25 -KPX quoteright rcommaaccent -25 -KPX quoteright s -40 -KPX quoteright sacute -40 -KPX quoteright scaron -40 -KPX quoteright scedilla -40 -KPX quoteright scommaaccent -40 -KPX quoteright space -111 -KPX quoteright t -30 -KPX quoteright tcommaaccent -30 -KPX quoteright v -10 -KPX r a -15 -KPX r aacute -15 -KPX r abreve -15 -KPX r acircumflex -15 -KPX r adieresis -15 -KPX r agrave -15 -KPX r amacron -15 -KPX r aogonek -15 -KPX r aring -15 -KPX r atilde -15 -KPX r c -37 -KPX r cacute -37 -KPX r ccaron -37 -KPX r ccedilla -37 -KPX r comma -111 -KPX r d -37 -KPX r dcroat -37 -KPX r e -37 -KPX r eacute -37 -KPX r ecaron -37 -KPX r ecircumflex -37 -KPX r edieresis -37 -KPX r edotaccent -37 -KPX r egrave -37 -KPX r emacron -37 -KPX r eogonek -37 -KPX r g -37 -KPX r gbreve -37 -KPX r gcommaaccent -37 -KPX r hyphen -20 -KPX r o -45 -KPX r oacute -45 -KPX r ocircumflex -45 -KPX r odieresis -45 -KPX r ograve -45 -KPX r ohungarumlaut -45 -KPX r omacron -45 -KPX r oslash -45 -KPX r otilde -45 -KPX r period -111 -KPX r q -37 -KPX r s -10 -KPX r sacute -10 -KPX r scaron -10 -KPX r scedilla -10 -KPX r scommaaccent -10 -KPX racute a -15 -KPX racute aacute -15 -KPX racute abreve -15 -KPX racute acircumflex -15 -KPX racute adieresis -15 -KPX racute agrave -15 -KPX racute amacron -15 -KPX racute aogonek -15 -KPX racute aring -15 -KPX racute atilde -15 -KPX racute c -37 -KPX racute cacute -37 -KPX racute ccaron -37 -KPX racute ccedilla -37 -KPX racute comma -111 -KPX racute d -37 -KPX racute dcroat -37 -KPX racute e -37 -KPX racute eacute -37 -KPX racute ecaron -37 -KPX racute ecircumflex -37 -KPX racute edieresis -37 -KPX racute edotaccent -37 -KPX racute egrave -37 -KPX racute emacron -37 -KPX racute eogonek -37 -KPX racute g -37 -KPX racute gbreve -37 -KPX racute gcommaaccent -37 -KPX racute hyphen -20 -KPX racute o -45 -KPX racute oacute -45 -KPX racute ocircumflex -45 -KPX racute odieresis -45 -KPX racute ograve -45 -KPX racute ohungarumlaut -45 -KPX racute omacron -45 -KPX racute oslash -45 -KPX racute otilde -45 -KPX racute period -111 -KPX racute q -37 -KPX racute s -10 -KPX racute sacute -10 -KPX racute scaron -10 -KPX racute scedilla -10 -KPX racute scommaaccent -10 -KPX rcaron a -15 -KPX rcaron aacute -15 -KPX rcaron abreve -15 -KPX rcaron acircumflex -15 -KPX rcaron adieresis -15 -KPX rcaron agrave -15 -KPX rcaron amacron -15 -KPX rcaron aogonek -15 -KPX rcaron aring -15 -KPX rcaron atilde -15 -KPX rcaron c -37 -KPX rcaron cacute -37 -KPX rcaron ccaron -37 -KPX rcaron ccedilla -37 -KPX rcaron comma -111 -KPX rcaron d -37 -KPX rcaron dcroat -37 -KPX rcaron e -37 -KPX rcaron eacute -37 -KPX rcaron ecaron -37 -KPX rcaron ecircumflex -37 -KPX rcaron edieresis -37 -KPX rcaron edotaccent -37 -KPX rcaron egrave -37 -KPX rcaron emacron -37 -KPX rcaron eogonek -37 -KPX rcaron g -37 -KPX rcaron gbreve -37 -KPX rcaron gcommaaccent -37 -KPX rcaron hyphen -20 -KPX rcaron o -45 -KPX rcaron oacute -45 -KPX rcaron ocircumflex -45 -KPX rcaron odieresis -45 -KPX rcaron ograve -45 -KPX rcaron ohungarumlaut -45 -KPX rcaron omacron -45 -KPX rcaron oslash -45 -KPX rcaron otilde -45 -KPX rcaron period -111 -KPX rcaron q -37 -KPX rcaron s -10 -KPX rcaron sacute -10 -KPX rcaron scaron -10 -KPX rcaron scedilla -10 -KPX rcaron scommaaccent -10 -KPX rcommaaccent a -15 -KPX rcommaaccent aacute -15 -KPX rcommaaccent abreve -15 -KPX rcommaaccent acircumflex -15 -KPX rcommaaccent adieresis -15 -KPX rcommaaccent agrave -15 -KPX rcommaaccent amacron -15 -KPX rcommaaccent aogonek -15 -KPX rcommaaccent aring -15 -KPX rcommaaccent atilde -15 -KPX rcommaaccent c -37 -KPX rcommaaccent cacute -37 -KPX rcommaaccent ccaron -37 -KPX rcommaaccent ccedilla -37 -KPX rcommaaccent comma -111 -KPX rcommaaccent d -37 -KPX rcommaaccent dcroat -37 -KPX rcommaaccent e -37 -KPX rcommaaccent eacute -37 -KPX rcommaaccent ecaron -37 -KPX rcommaaccent ecircumflex -37 -KPX rcommaaccent edieresis -37 -KPX rcommaaccent edotaccent -37 -KPX rcommaaccent egrave -37 -KPX rcommaaccent emacron -37 -KPX rcommaaccent eogonek -37 -KPX rcommaaccent g -37 -KPX rcommaaccent gbreve -37 -KPX rcommaaccent gcommaaccent -37 -KPX rcommaaccent hyphen -20 -KPX rcommaaccent o -45 -KPX rcommaaccent oacute -45 -KPX rcommaaccent ocircumflex -45 -KPX rcommaaccent odieresis -45 -KPX rcommaaccent ograve -45 -KPX rcommaaccent ohungarumlaut -45 -KPX rcommaaccent omacron -45 -KPX rcommaaccent oslash -45 -KPX rcommaaccent otilde -45 -KPX rcommaaccent period -111 -KPX rcommaaccent q -37 -KPX rcommaaccent s -10 -KPX rcommaaccent sacute -10 -KPX rcommaaccent scaron -10 -KPX rcommaaccent scedilla -10 -KPX rcommaaccent scommaaccent -10 -KPX space A -18 -KPX space Aacute -18 -KPX space Abreve -18 -KPX space Acircumflex -18 -KPX space Adieresis -18 -KPX space Agrave -18 -KPX space Amacron -18 -KPX space Aogonek -18 -KPX space Aring -18 -KPX space Atilde -18 -KPX space T -18 -KPX space Tcaron -18 -KPX space Tcommaaccent -18 -KPX space V -35 -KPX space W -40 -KPX space Y -75 -KPX space Yacute -75 -KPX space Ydieresis -75 -KPX v comma -74 -KPX v period -74 -KPX w comma -74 -KPX w period -74 -KPX y comma -55 -KPX y period -55 -KPX yacute comma -55 -KPX yacute period -55 -KPX ydieresis comma -55 -KPX ydieresis period -55 -EndKernPairs -EndKernData -EndFontMetrics diff --git a/application/third_party/dompdf/lib/fonts/Times-Roman.afm b/application/third_party/dompdf/lib/fonts/Times-Roman.afm deleted file mode 100644 index cf0ce275..00000000 --- a/application/third_party/dompdf/lib/fonts/Times-Roman.afm +++ /dev/null @@ -1,2421 +0,0 @@ -StartFontMetrics 4.1 -Comment Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. -Comment Creation Date: Thu May 1 12:49:17 1997 -Comment UniqueID 43068 -Comment VMusage 43909 54934 -FontName Times-Roman -FullName Times Roman -FamilyName Times -Weight Roman -ItalicAngle 0 -IsFixedPitch false -CharacterSet ExtendedRoman -FontBBox -168 -218 1000 898 -UnderlinePosition -100 -UnderlineThickness 50 -Version 002.00 -Notice Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype-Hell AG and/or its subsidiaries. -EncodingScheme WinAnsiEncoding -CapHeight 662 -XHeight 450 -Ascender 683 -Descender -217 -StdHW 28 -StdVW 84 -StartCharMetrics 317 -C 32 ; WX 250 ; N space ; B 0 0 0 0 ; -C 160 ; WX 250 ; N space ; B 0 0 0 0 ; -C 33 ; WX 333 ; N exclam ; B 130 -9 238 676 ; -C 34 ; WX 408 ; N quotedbl ; B 77 431 331 676 ; -C 35 ; WX 500 ; N numbersign ; B 5 0 496 662 ; -C 36 ; WX 500 ; N dollar ; B 44 -87 457 727 ; -C 37 ; WX 833 ; N percent ; B 61 -13 772 676 ; -C 38 ; WX 778 ; N ampersand ; B 42 -13 750 676 ; -C 146 ; WX 333 ; N quoteright ; B 79 433 218 676 ; -C 40 ; WX 333 ; N parenleft ; B 48 -177 304 676 ; -C 41 ; WX 333 ; N parenright ; B 29 -177 285 676 ; -C 42 ; WX 500 ; N asterisk ; B 69 265 432 676 ; -C 43 ; WX 564 ; N plus ; B 30 0 534 506 ; -C 44 ; WX 250 ; N comma ; B 56 -141 195 102 ; -C 45 ; WX 333 ; N hyphen ; B 39 194 285 257 ; -C 173 ; WX 333 ; N hyphen ; B 39 194 285 257 ; -C 46 ; WX 250 ; N period ; B 70 -11 181 100 ; -C 47 ; WX 278 ; N slash ; B -9 -14 287 676 ; -C 48 ; WX 500 ; N zero ; B 24 -14 476 676 ; -C 49 ; WX 500 ; N one ; B 111 0 394 676 ; -C 50 ; WX 500 ; N two ; B 30 0 475 676 ; -C 51 ; WX 500 ; N three ; B 43 -14 431 676 ; -C 52 ; WX 500 ; N four ; B 12 0 472 676 ; -C 53 ; WX 500 ; N five ; B 32 -14 438 688 ; -C 54 ; WX 500 ; N six ; B 34 -14 468 684 ; -C 55 ; WX 500 ; N seven ; B 20 -8 449 662 ; -C 56 ; WX 500 ; N eight ; B 56 -14 445 676 ; -C 57 ; WX 500 ; N nine ; B 30 -22 459 676 ; -C 58 ; WX 278 ; N colon ; B 81 -11 192 459 ; -C 59 ; WX 278 ; N semicolon ; B 80 -141 219 459 ; -C 60 ; WX 564 ; N less ; B 28 -8 536 514 ; -C 61 ; WX 564 ; N equal ; B 30 120 534 386 ; -C 62 ; WX 564 ; N greater ; B 28 -8 536 514 ; -C 63 ; WX 444 ; N question ; B 68 -8 414 676 ; -C 64 ; WX 921 ; N at ; B 116 -14 809 676 ; -C 65 ; WX 722 ; N A ; B 15 0 706 674 ; -C 66 ; WX 667 ; N B ; B 17 0 593 662 ; -C 67 ; WX 667 ; N C ; B 28 -14 633 676 ; -C 68 ; WX 722 ; N D ; B 16 0 685 662 ; -C 69 ; WX 611 ; N E ; B 12 0 597 662 ; -C 70 ; WX 556 ; N F ; B 12 0 546 662 ; -C 71 ; WX 722 ; N G ; B 32 -14 709 676 ; -C 72 ; WX 722 ; N H ; B 19 0 702 662 ; -C 73 ; WX 333 ; N I ; B 18 0 315 662 ; -C 74 ; WX 389 ; N J ; B 10 -14 370 662 ; -C 75 ; WX 722 ; N K ; B 34 0 723 662 ; -C 76 ; WX 611 ; N L ; B 12 0 598 662 ; -C 77 ; WX 889 ; N M ; B 12 0 863 662 ; -C 78 ; WX 722 ; N N ; B 12 -11 707 662 ; -C 79 ; WX 722 ; N O ; B 34 -14 688 676 ; -C 80 ; WX 556 ; N P ; B 16 0 542 662 ; -C 81 ; WX 722 ; N Q ; B 34 -178 701 676 ; -C 82 ; WX 667 ; N R ; B 17 0 659 662 ; -C 83 ; WX 556 ; N S ; B 42 -14 491 676 ; -C 84 ; WX 611 ; N T ; B 17 0 593 662 ; -C 85 ; WX 722 ; N U ; B 14 -14 705 662 ; -C 86 ; WX 722 ; N V ; B 16 -11 697 662 ; -C 87 ; WX 944 ; N W ; B 5 -11 932 662 ; -C 88 ; WX 722 ; N X ; B 10 0 704 662 ; -C 89 ; WX 722 ; N Y ; B 22 0 703 662 ; -C 90 ; WX 611 ; N Z ; B 9 0 597 662 ; -C 91 ; WX 333 ; N bracketleft ; B 88 -156 299 662 ; -C 92 ; WX 278 ; N backslash ; B -9 -14 287 676 ; -C 93 ; WX 333 ; N bracketright ; B 34 -156 245 662 ; -C 94 ; WX 469 ; N asciicircum ; B 24 297 446 662 ; -C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; -C 145 ; WX 333 ; N quoteleft ; B 115 433 254 676 ; -C 97 ; WX 444 ; N a ; B 37 -10 442 460 ; -C 98 ; WX 500 ; N b ; B 3 -10 468 683 ; -C 99 ; WX 444 ; N c ; B 25 -10 412 460 ; -C 100 ; WX 500 ; N d ; B 27 -10 491 683 ; -C 101 ; WX 444 ; N e ; B 25 -10 424 460 ; -C 102 ; WX 333 ; N f ; B 20 0 383 683 ; L i fi ; L l fl ; -C 103 ; WX 500 ; N g ; B 28 -218 470 460 ; -C 104 ; WX 500 ; N h ; B 9 0 487 683 ; -C 105 ; WX 278 ; N i ; B 16 0 253 683 ; -C 106 ; WX 278 ; N j ; B -70 -218 194 683 ; -C 107 ; WX 500 ; N k ; B 7 0 505 683 ; -C 108 ; WX 278 ; N l ; B 19 0 257 683 ; -C 109 ; WX 778 ; N m ; B 16 0 775 460 ; -C 110 ; WX 500 ; N n ; B 16 0 485 460 ; -C 111 ; WX 500 ; N o ; B 29 -10 470 460 ; -C 112 ; WX 500 ; N p ; B 5 -217 470 460 ; -C 113 ; WX 500 ; N q ; B 24 -217 488 460 ; -C 114 ; WX 333 ; N r ; B 5 0 335 460 ; -C 115 ; WX 389 ; N s ; B 51 -10 348 460 ; -C 116 ; WX 278 ; N t ; B 13 -10 279 579 ; -C 117 ; WX 500 ; N u ; B 9 -10 479 450 ; -C 118 ; WX 500 ; N v ; B 19 -14 477 450 ; -C 119 ; WX 722 ; N w ; B 21 -14 694 450 ; -C 120 ; WX 500 ; N x ; B 17 0 479 450 ; -C 121 ; WX 500 ; N y ; B 14 -218 475 450 ; -C 122 ; WX 444 ; N z ; B 27 0 418 450 ; -C 123 ; WX 480 ; N braceleft ; B 100 -181 350 680 ; -C 124 ; WX 200 ; N bar ; B 67 -218 133 782 ; -C 125 ; WX 480 ; N braceright ; B 130 -181 380 680 ; -C 126 ; WX 541 ; N asciitilde ; B 40 183 502 323 ; -C 161 ; WX 333 ; N exclamdown ; B 97 -218 205 467 ; -C 162 ; WX 500 ; N cent ; B 53 -138 448 579 ; -C 163 ; WX 500 ; N sterling ; B 12 -8 490 676 ; -C -1 ; WX 167 ; N fraction ; B -168 -14 331 676 ; -C 165 ; WX 500 ; N yen ; B -53 0 512 662 ; -C 131 ; WX 500 ; N florin ; B 7 -189 490 676 ; -C 167 ; WX 500 ; N section ; B 70 -148 426 676 ; -C 164 ; WX 500 ; N currency ; B -22 58 522 602 ; -C 39 ; WX 180 ; N quotesingle ; B 48 431 133 676 ; -C 147 ; WX 444 ; N quotedblleft ; B 43 433 414 676 ; -C 170 ; WX 500 ; N guillemotleft ; B 42 33 456 416 ; -C 139 ; WX 333 ; N guilsinglleft ; B 63 33 285 416 ; -C 155 ; WX 333 ; N guilsinglright ; B 48 33 270 416 ; -C -1 ; WX 556 ; N fi ; B 31 0 521 683 ; -C -1 ; WX 556 ; N fl ; B 32 0 521 683 ; -C 150 ; WX 500 ; N endash ; B 0 201 500 250 ; -C 134 ; WX 500 ; N dagger ; B 59 -149 442 676 ; -C 135 ; WX 500 ; N daggerdbl ; B 58 -153 442 676 ; -C 183 ; WX 250 ; N periodcentered ; B 70 199 181 310 ; -C 182 ; WX 453 ; N paragraph ; B -22 -154 450 662 ; -C 149 ; WX 350 ; N bullet ; B 40 196 310 466 ; -C 130 ; WX 333 ; N quotesinglbase ; B 79 -141 218 102 ; -C 132 ; WX 444 ; N quotedblbase ; B 45 -141 416 102 ; -C 148 ; WX 444 ; N quotedblright ; B 30 433 401 676 ; -C 187 ; WX 500 ; N guillemotright ; B 44 33 458 416 ; -C 133 ; WX 1000 ; N ellipsis ; B 111 -11 888 100 ; -C 137 ; WX 1000 ; N perthousand ; B 7 -19 994 706 ; -C 191 ; WX 444 ; N questiondown ; B 30 -218 376 466 ; -C 96 ; WX 333 ; N grave ; B 19 507 242 678 ; -C 180 ; WX 333 ; N acute ; B 93 507 317 678 ; -C 136 ; WX 333 ; N circumflex ; B 11 507 322 674 ; -C 152 ; WX 333 ; N tilde ; B 1 532 331 638 ; -C 175 ; WX 333 ; N macron ; B 11 547 322 601 ; -C -1 ; WX 333 ; N breve ; B 26 507 307 664 ; -C -1 ; WX 333 ; N dotaccent ; B 118 581 216 681 ; -C 168 ; WX 333 ; N dieresis ; B 18 581 315 681 ; -C -1 ; WX 333 ; N ring ; B 67 512 266 711 ; -C 184 ; WX 333 ; N cedilla ; B 52 -215 261 0 ; -C -1 ; WX 333 ; N hungarumlaut ; B -3 507 377 678 ; -C -1 ; WX 333 ; N ogonek ; B 62 -165 243 0 ; -C -1 ; WX 333 ; N caron ; B 11 507 322 674 ; -C 151 ; WX 1000 ; N emdash ; B 0 201 1000 250 ; -C 198 ; WX 889 ; N AE ; B 0 0 863 662 ; -C 170 ; WX 276 ; N ordfeminine ; B 4 394 270 676 ; -C -1 ; WX 611 ; N Lslash ; B 12 0 598 662 ; -C 216 ; WX 722 ; N Oslash ; B 34 -80 688 734 ; -C 140 ; WX 889 ; N OE ; B 30 -6 885 668 ; -C 186 ; WX 310 ; N ordmasculine ; B 6 394 304 676 ; -C 230 ; WX 667 ; N ae ; B 38 -10 632 460 ; -C -1 ; WX 278 ; N dotlessi ; B 16 0 253 460 ; -C -1 ; WX 278 ; N lslash ; B 19 0 259 683 ; -C 248 ; WX 500 ; N oslash ; B 29 -112 470 551 ; -C 156 ; WX 722 ; N oe ; B 30 -10 690 460 ; -C 223 ; WX 500 ; N germandbls ; B 12 -9 468 683 ; -C 207 ; WX 333 ; N Idieresis ; B 18 0 315 835 ; -C 233 ; WX 444 ; N eacute ; B 25 -10 424 678 ; -C -1 ; WX 444 ; N abreve ; B 37 -10 442 664 ; -C -1 ; WX 500 ; N uhungarumlaut ; B 9 -10 501 678 ; -C -1 ; WX 444 ; N ecaron ; B 25 -10 424 674 ; -C 159 ; WX 722 ; N Ydieresis ; B 22 0 703 835 ; -C 247 ; WX 564 ; N divide ; B 30 -10 534 516 ; -C 221 ; WX 722 ; N Yacute ; B 22 0 703 890 ; -C 194 ; WX 722 ; N Acircumflex ; B 15 0 706 886 ; -C 225 ; WX 444 ; N aacute ; B 37 -10 442 678 ; -C 219 ; WX 722 ; N Ucircumflex ; B 14 -14 705 886 ; -C 253 ; WX 500 ; N yacute ; B 14 -218 475 678 ; -C -1 ; WX 389 ; N scommaaccent ; B 51 -218 348 460 ; -C 234 ; WX 444 ; N ecircumflex ; B 25 -10 424 674 ; -C -1 ; WX 722 ; N Uring ; B 14 -14 705 898 ; -C 220 ; WX 722 ; N Udieresis ; B 14 -14 705 835 ; -C -1 ; WX 444 ; N aogonek ; B 37 -165 469 460 ; -C 218 ; WX 722 ; N Uacute ; B 14 -14 705 890 ; -C -1 ; WX 500 ; N uogonek ; B 9 -155 487 450 ; -C 203 ; WX 611 ; N Edieresis ; B 12 0 597 835 ; -C -1 ; WX 722 ; N Dcroat ; B 16 0 685 662 ; -C -1 ; WX 250 ; N commaaccent ; B 59 -218 184 -50 ; -C 169 ; WX 760 ; N copyright ; B 38 -14 722 676 ; -C -1 ; WX 611 ; N Emacron ; B 12 0 597 813 ; -C -1 ; WX 444 ; N ccaron ; B 25 -10 412 674 ; -C 229 ; WX 444 ; N aring ; B 37 -10 442 711 ; -C -1 ; WX 722 ; N Ncommaaccent ; B 12 -198 707 662 ; -C -1 ; WX 278 ; N lacute ; B 19 0 290 890 ; -C 224 ; WX 444 ; N agrave ; B 37 -10 442 678 ; -C -1 ; WX 611 ; N Tcommaaccent ; B 17 -218 593 662 ; -C -1 ; WX 667 ; N Cacute ; B 28 -14 633 890 ; -C 227 ; WX 444 ; N atilde ; B 37 -10 442 638 ; -C -1 ; WX 611 ; N Edotaccent ; B 12 0 597 835 ; -C 154 ; WX 389 ; N scaron ; B 39 -10 350 674 ; -C -1 ; WX 389 ; N scedilla ; B 51 -215 348 460 ; -C 237 ; WX 278 ; N iacute ; B 16 0 290 678 ; -C -1 ; WX 471 ; N lozenge ; B 13 0 459 724 ; -C -1 ; WX 667 ; N Rcaron ; B 17 0 659 886 ; -C -1 ; WX 722 ; N Gcommaaccent ; B 32 -218 709 676 ; -C 251 ; WX 500 ; N ucircumflex ; B 9 -10 479 674 ; -C 226 ; WX 444 ; N acircumflex ; B 37 -10 442 674 ; -C -1 ; WX 722 ; N Amacron ; B 15 0 706 813 ; -C -1 ; WX 333 ; N rcaron ; B 5 0 335 674 ; -C 231 ; WX 444 ; N ccedilla ; B 25 -215 412 460 ; -C -1 ; WX 611 ; N Zdotaccent ; B 9 0 597 835 ; -C 222 ; WX 556 ; N Thorn ; B 16 0 542 662 ; -C -1 ; WX 722 ; N Omacron ; B 34 -14 688 813 ; -C -1 ; WX 667 ; N Racute ; B 17 0 659 890 ; -C -1 ; WX 556 ; N Sacute ; B 42 -14 491 890 ; -C -1 ; WX 588 ; N dcaron ; B 27 -10 589 695 ; -C -1 ; WX 722 ; N Umacron ; B 14 -14 705 813 ; -C -1 ; WX 500 ; N uring ; B 9 -10 479 711 ; -C 179 ; WX 300 ; N threesuperior ; B 15 262 291 676 ; -C 210 ; WX 722 ; N Ograve ; B 34 -14 688 890 ; -C 192 ; WX 722 ; N Agrave ; B 15 0 706 890 ; -C -1 ; WX 722 ; N Abreve ; B 15 0 706 876 ; -C 215 ; WX 564 ; N multiply ; B 38 8 527 497 ; -C 250 ; WX 500 ; N uacute ; B 9 -10 479 678 ; -C -1 ; WX 611 ; N Tcaron ; B 17 0 593 886 ; -C -1 ; WX 476 ; N partialdiff ; B 17 -38 459 710 ; -C 255 ; WX 500 ; N ydieresis ; B 14 -218 475 623 ; -C -1 ; WX 722 ; N Nacute ; B 12 -11 707 890 ; -C 238 ; WX 278 ; N icircumflex ; B -16 0 295 674 ; -C 202 ; WX 611 ; N Ecircumflex ; B 12 0 597 886 ; -C 228 ; WX 444 ; N adieresis ; B 37 -10 442 623 ; -C 235 ; WX 444 ; N edieresis ; B 25 -10 424 623 ; -C -1 ; WX 444 ; N cacute ; B 25 -10 413 678 ; -C -1 ; WX 500 ; N nacute ; B 16 0 485 678 ; -C -1 ; WX 500 ; N umacron ; B 9 -10 479 601 ; -C -1 ; WX 722 ; N Ncaron ; B 12 -11 707 886 ; -C 205 ; WX 333 ; N Iacute ; B 18 0 317 890 ; -C 177 ; WX 564 ; N plusminus ; B 30 0 534 506 ; -C 166 ; WX 200 ; N brokenbar ; B 67 -143 133 707 ; -C 174 ; WX 760 ; N registered ; B 38 -14 722 676 ; -C -1 ; WX 722 ; N Gbreve ; B 32 -14 709 876 ; -C -1 ; WX 333 ; N Idotaccent ; B 18 0 315 835 ; -C -1 ; WX 600 ; N summation ; B 15 -10 585 706 ; -C 200 ; WX 611 ; N Egrave ; B 12 0 597 890 ; -C -1 ; WX 333 ; N racute ; B 5 0 335 678 ; -C -1 ; WX 500 ; N omacron ; B 29 -10 470 601 ; -C -1 ; WX 611 ; N Zacute ; B 9 0 597 890 ; -C 142 ; WX 611 ; N Zcaron ; B 9 0 597 886 ; -C -1 ; WX 549 ; N greaterequal ; B 26 0 523 666 ; -C 208 ; WX 722 ; N Eth ; B 16 0 685 662 ; -C 199 ; WX 667 ; N Ccedilla ; B 28 -215 633 676 ; -C -1 ; WX 278 ; N lcommaaccent ; B 19 -218 257 683 ; -C -1 ; WX 326 ; N tcaron ; B 13 -10 318 722 ; -C -1 ; WX 444 ; N eogonek ; B 25 -165 424 460 ; -C -1 ; WX 722 ; N Uogonek ; B 14 -165 705 662 ; -C 193 ; WX 722 ; N Aacute ; B 15 0 706 890 ; -C 196 ; WX 722 ; N Adieresis ; B 15 0 706 835 ; -C 232 ; WX 444 ; N egrave ; B 25 -10 424 678 ; -C -1 ; WX 444 ; N zacute ; B 27 0 418 678 ; -C -1 ; WX 278 ; N iogonek ; B 16 -165 265 683 ; -C 211 ; WX 722 ; N Oacute ; B 34 -14 688 890 ; -C 243 ; WX 500 ; N oacute ; B 29 -10 470 678 ; -C -1 ; WX 444 ; N amacron ; B 37 -10 442 601 ; -C -1 ; WX 389 ; N sacute ; B 51 -10 348 678 ; -C 239 ; WX 278 ; N idieresis ; B -9 0 288 623 ; -C 212 ; WX 722 ; N Ocircumflex ; B 34 -14 688 886 ; -C 217 ; WX 722 ; N Ugrave ; B 14 -14 705 890 ; -C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; -C 254 ; WX 500 ; N thorn ; B 5 -217 470 683 ; -C 178 ; WX 300 ; N twosuperior ; B 1 270 296 676 ; -C 214 ; WX 722 ; N Odieresis ; B 34 -14 688 835 ; -C 181 ; WX 500 ; N mu ; B 36 -218 512 450 ; -C 236 ; WX 278 ; N igrave ; B -8 0 253 678 ; -C -1 ; WX 500 ; N ohungarumlaut ; B 29 -10 491 678 ; -C -1 ; WX 611 ; N Eogonek ; B 12 -165 597 662 ; -C -1 ; WX 500 ; N dcroat ; B 27 -10 500 683 ; -C 190 ; WX 750 ; N threequarters ; B 15 -14 718 676 ; -C -1 ; WX 556 ; N Scedilla ; B 42 -215 491 676 ; -C -1 ; WX 344 ; N lcaron ; B 19 0 347 695 ; -C -1 ; WX 722 ; N Kcommaaccent ; B 34 -198 723 662 ; -C -1 ; WX 611 ; N Lacute ; B 12 0 598 890 ; -C 153 ; WX 980 ; N trademark ; B 30 256 957 662 ; -C -1 ; WX 444 ; N edotaccent ; B 25 -10 424 623 ; -C 204 ; WX 333 ; N Igrave ; B 18 0 315 890 ; -C -1 ; WX 333 ; N Imacron ; B 11 0 322 813 ; -C -1 ; WX 611 ; N Lcaron ; B 12 0 598 676 ; -C 189 ; WX 750 ; N onehalf ; B 31 -14 746 676 ; -C -1 ; WX 549 ; N lessequal ; B 26 0 523 666 ; -C 244 ; WX 500 ; N ocircumflex ; B 29 -10 470 674 ; -C 241 ; WX 500 ; N ntilde ; B 16 0 485 638 ; -C -1 ; WX 722 ; N Uhungarumlaut ; B 14 -14 705 890 ; -C 201 ; WX 611 ; N Eacute ; B 12 0 597 890 ; -C -1 ; WX 444 ; N emacron ; B 25 -10 424 601 ; -C -1 ; WX 500 ; N gbreve ; B 28 -218 470 664 ; -C 188 ; WX 750 ; N onequarter ; B 37 -14 718 676 ; -C 138 ; WX 556 ; N Scaron ; B 42 -14 491 886 ; -C -1 ; WX 556 ; N Scommaaccent ; B 42 -218 491 676 ; -C -1 ; WX 722 ; N Ohungarumlaut ; B 34 -14 688 890 ; -C 176 ; WX 400 ; N degree ; B 57 390 343 676 ; -C 242 ; WX 500 ; N ograve ; B 29 -10 470 678 ; -C -1 ; WX 667 ; N Ccaron ; B 28 -14 633 886 ; -C 249 ; WX 500 ; N ugrave ; B 9 -10 479 678 ; -C -1 ; WX 453 ; N radical ; B 2 -60 452 768 ; -C -1 ; WX 722 ; N Dcaron ; B 16 0 685 886 ; -C -1 ; WX 333 ; N rcommaaccent ; B 5 -218 335 460 ; -C 209 ; WX 722 ; N Ntilde ; B 12 -11 707 850 ; -C 245 ; WX 500 ; N otilde ; B 29 -10 470 638 ; -C -1 ; WX 667 ; N Rcommaaccent ; B 17 -198 659 662 ; -C -1 ; WX 611 ; N Lcommaaccent ; B 12 -218 598 662 ; -C 195 ; WX 722 ; N Atilde ; B 15 0 706 850 ; -C -1 ; WX 722 ; N Aogonek ; B 15 -165 738 674 ; -C 197 ; WX 722 ; N Aring ; B 15 0 706 898 ; -C 213 ; WX 722 ; N Otilde ; B 34 -14 688 850 ; -C -1 ; WX 444 ; N zdotaccent ; B 27 0 418 623 ; -C -1 ; WX 611 ; N Ecaron ; B 12 0 597 886 ; -C -1 ; WX 333 ; N Iogonek ; B 18 -165 315 662 ; -C -1 ; WX 500 ; N kcommaaccent ; B 7 -218 505 683 ; -C -1 ; WX 564 ; N minus ; B 30 220 534 286 ; -C 206 ; WX 333 ; N Icircumflex ; B 11 0 322 886 ; -C -1 ; WX 500 ; N ncaron ; B 16 0 485 674 ; -C -1 ; WX 278 ; N tcommaaccent ; B 13 -218 279 579 ; -C 172 ; WX 564 ; N logicalnot ; B 30 108 534 386 ; -C 246 ; WX 500 ; N odieresis ; B 29 -10 470 623 ; -C 252 ; WX 500 ; N udieresis ; B 9 -10 479 623 ; -C -1 ; WX 549 ; N notequal ; B 12 -31 537 547 ; -C -1 ; WX 500 ; N gcommaaccent ; B 28 -218 470 749 ; -C 240 ; WX 500 ; N eth ; B 29 -10 471 686 ; -C 158 ; WX 444 ; N zcaron ; B 27 0 418 674 ; -C -1 ; WX 500 ; N ncommaaccent ; B 16 -218 485 460 ; -C 185 ; WX 300 ; N onesuperior ; B 57 270 248 676 ; -C -1 ; WX 278 ; N imacron ; B 6 0 271 601 ; -C 128 ; WX 500 ; N Euro ; B 0 0 0 0 ; -EndCharMetrics -StartKernData -StartKernPairs 2073 -KPX A C -40 -KPX A Cacute -40 -KPX A Ccaron -40 -KPX A Ccedilla -40 -KPX A G -40 -KPX A Gbreve -40 -KPX A Gcommaaccent -40 -KPX A O -55 -KPX A Oacute -55 -KPX A Ocircumflex -55 -KPX A Odieresis -55 -KPX A Ograve -55 -KPX A Ohungarumlaut -55 -KPX A Omacron -55 -KPX A Oslash -55 -KPX A Otilde -55 -KPX A Q -55 -KPX A T -111 -KPX A Tcaron -111 -KPX A Tcommaaccent -111 -KPX A U -55 -KPX A Uacute -55 -KPX A Ucircumflex -55 -KPX A Udieresis -55 -KPX A Ugrave -55 -KPX A Uhungarumlaut -55 -KPX A Umacron -55 -KPX A Uogonek -55 -KPX A Uring -55 -KPX A V -135 -KPX A W -90 -KPX A Y -105 -KPX A Yacute -105 -KPX A Ydieresis -105 -KPX A quoteright -111 -KPX A v -74 -KPX A w -92 -KPX A y -92 -KPX A yacute -92 -KPX A ydieresis -92 -KPX Aacute C -40 -KPX Aacute Cacute -40 -KPX Aacute Ccaron -40 -KPX Aacute Ccedilla -40 -KPX Aacute G -40 -KPX Aacute Gbreve -40 -KPX Aacute Gcommaaccent -40 -KPX Aacute O -55 -KPX Aacute Oacute -55 -KPX Aacute Ocircumflex -55 -KPX Aacute Odieresis -55 -KPX Aacute Ograve -55 -KPX Aacute Ohungarumlaut -55 -KPX Aacute Omacron -55 -KPX Aacute Oslash -55 -KPX Aacute Otilde -55 -KPX Aacute Q -55 -KPX Aacute T -111 -KPX Aacute Tcaron -111 -KPX Aacute Tcommaaccent -111 -KPX Aacute U -55 -KPX Aacute Uacute -55 -KPX Aacute Ucircumflex -55 -KPX Aacute Udieresis -55 -KPX Aacute Ugrave -55 -KPX Aacute Uhungarumlaut -55 -KPX Aacute Umacron -55 -KPX Aacute Uogonek -55 -KPX Aacute Uring -55 -KPX Aacute V -135 -KPX Aacute W -90 -KPX Aacute Y -105 -KPX Aacute Yacute -105 -KPX Aacute Ydieresis -105 -KPX Aacute quoteright -111 -KPX Aacute v -74 -KPX Aacute w -92 -KPX Aacute y -92 -KPX Aacute yacute -92 -KPX Aacute ydieresis -92 -KPX Abreve C -40 -KPX Abreve Cacute -40 -KPX Abreve Ccaron -40 -KPX Abreve Ccedilla -40 -KPX Abreve G -40 -KPX Abreve Gbreve -40 -KPX Abreve Gcommaaccent -40 -KPX Abreve O -55 -KPX Abreve Oacute -55 -KPX Abreve Ocircumflex -55 -KPX Abreve Odieresis -55 -KPX Abreve Ograve -55 -KPX Abreve Ohungarumlaut -55 -KPX Abreve Omacron -55 -KPX Abreve Oslash -55 -KPX Abreve Otilde -55 -KPX Abreve Q -55 -KPX Abreve T -111 -KPX Abreve Tcaron -111 -KPX Abreve Tcommaaccent -111 -KPX Abreve U -55 -KPX Abreve Uacute -55 -KPX Abreve Ucircumflex -55 -KPX Abreve Udieresis -55 -KPX Abreve Ugrave -55 -KPX Abreve Uhungarumlaut -55 -KPX Abreve Umacron -55 -KPX Abreve Uogonek -55 -KPX Abreve Uring -55 -KPX Abreve V -135 -KPX Abreve W -90 -KPX Abreve Y -105 -KPX Abreve Yacute -105 -KPX Abreve Ydieresis -105 -KPX Abreve quoteright -111 -KPX Abreve v -74 -KPX Abreve w -92 -KPX Abreve y -92 -KPX Abreve yacute -92 -KPX Abreve ydieresis -92 -KPX Acircumflex C -40 -KPX Acircumflex Cacute -40 -KPX Acircumflex Ccaron -40 -KPX Acircumflex Ccedilla -40 -KPX Acircumflex G -40 -KPX Acircumflex Gbreve -40 -KPX Acircumflex Gcommaaccent -40 -KPX Acircumflex O -55 -KPX Acircumflex Oacute -55 -KPX Acircumflex Ocircumflex -55 -KPX Acircumflex Odieresis -55 -KPX Acircumflex Ograve -55 -KPX Acircumflex Ohungarumlaut -55 -KPX Acircumflex Omacron -55 -KPX Acircumflex Oslash -55 -KPX Acircumflex Otilde -55 -KPX Acircumflex Q -55 -KPX Acircumflex T -111 -KPX Acircumflex Tcaron -111 -KPX Acircumflex Tcommaaccent -111 -KPX Acircumflex U -55 -KPX Acircumflex Uacute -55 -KPX Acircumflex Ucircumflex -55 -KPX Acircumflex Udieresis -55 -KPX Acircumflex Ugrave -55 -KPX Acircumflex Uhungarumlaut -55 -KPX Acircumflex Umacron -55 -KPX Acircumflex Uogonek -55 -KPX Acircumflex Uring -55 -KPX Acircumflex V -135 -KPX Acircumflex W -90 -KPX Acircumflex Y -105 -KPX Acircumflex Yacute -105 -KPX Acircumflex Ydieresis -105 -KPX Acircumflex quoteright -111 -KPX Acircumflex v -74 -KPX Acircumflex w -92 -KPX Acircumflex y -92 -KPX Acircumflex yacute -92 -KPX Acircumflex ydieresis -92 -KPX Adieresis C -40 -KPX Adieresis Cacute -40 -KPX Adieresis Ccaron -40 -KPX Adieresis Ccedilla -40 -KPX Adieresis G -40 -KPX Adieresis Gbreve -40 -KPX Adieresis Gcommaaccent -40 -KPX Adieresis O -55 -KPX Adieresis Oacute -55 -KPX Adieresis Ocircumflex -55 -KPX Adieresis Odieresis -55 -KPX Adieresis Ograve -55 -KPX Adieresis Ohungarumlaut -55 -KPX Adieresis Omacron -55 -KPX Adieresis Oslash -55 -KPX Adieresis Otilde -55 -KPX Adieresis Q -55 -KPX Adieresis T -111 -KPX Adieresis Tcaron -111 -KPX Adieresis Tcommaaccent -111 -KPX Adieresis U -55 -KPX Adieresis Uacute -55 -KPX Adieresis Ucircumflex -55 -KPX Adieresis Udieresis -55 -KPX Adieresis Ugrave -55 -KPX Adieresis Uhungarumlaut -55 -KPX Adieresis Umacron -55 -KPX Adieresis Uogonek -55 -KPX Adieresis Uring -55 -KPX Adieresis V -135 -KPX Adieresis W -90 -KPX Adieresis Y -105 -KPX Adieresis Yacute -105 -KPX Adieresis Ydieresis -105 -KPX Adieresis quoteright -111 -KPX Adieresis v -74 -KPX Adieresis w -92 -KPX Adieresis y -92 -KPX Adieresis yacute -92 -KPX Adieresis ydieresis -92 -KPX Agrave C -40 -KPX Agrave Cacute -40 -KPX Agrave Ccaron -40 -KPX Agrave Ccedilla -40 -KPX Agrave G -40 -KPX Agrave Gbreve -40 -KPX Agrave Gcommaaccent -40 -KPX Agrave O -55 -KPX Agrave Oacute -55 -KPX Agrave Ocircumflex -55 -KPX Agrave Odieresis -55 -KPX Agrave Ograve -55 -KPX Agrave Ohungarumlaut -55 -KPX Agrave Omacron -55 -KPX Agrave Oslash -55 -KPX Agrave Otilde -55 -KPX Agrave Q -55 -KPX Agrave T -111 -KPX Agrave Tcaron -111 -KPX Agrave Tcommaaccent -111 -KPX Agrave U -55 -KPX Agrave Uacute -55 -KPX Agrave Ucircumflex -55 -KPX Agrave Udieresis -55 -KPX Agrave Ugrave -55 -KPX Agrave Uhungarumlaut -55 -KPX Agrave Umacron -55 -KPX Agrave Uogonek -55 -KPX Agrave Uring -55 -KPX Agrave V -135 -KPX Agrave W -90 -KPX Agrave Y -105 -KPX Agrave Yacute -105 -KPX Agrave Ydieresis -105 -KPX Agrave quoteright -111 -KPX Agrave v -74 -KPX Agrave w -92 -KPX Agrave y -92 -KPX Agrave yacute -92 -KPX Agrave ydieresis -92 -KPX Amacron C -40 -KPX Amacron Cacute -40 -KPX Amacron Ccaron -40 -KPX Amacron Ccedilla -40 -KPX Amacron G -40 -KPX Amacron Gbreve -40 -KPX Amacron Gcommaaccent -40 -KPX Amacron O -55 -KPX Amacron Oacute -55 -KPX Amacron Ocircumflex -55 -KPX Amacron Odieresis -55 -KPX Amacron Ograve -55 -KPX Amacron Ohungarumlaut -55 -KPX Amacron Omacron -55 -KPX Amacron Oslash -55 -KPX Amacron Otilde -55 -KPX Amacron Q -55 -KPX Amacron T -111 -KPX Amacron Tcaron -111 -KPX Amacron Tcommaaccent -111 -KPX Amacron U -55 -KPX Amacron Uacute -55 -KPX Amacron Ucircumflex -55 -KPX Amacron Udieresis -55 -KPX Amacron Ugrave -55 -KPX Amacron Uhungarumlaut -55 -KPX Amacron Umacron -55 -KPX Amacron Uogonek -55 -KPX Amacron Uring -55 -KPX Amacron V -135 -KPX Amacron W -90 -KPX Amacron Y -105 -KPX Amacron Yacute -105 -KPX Amacron Ydieresis -105 -KPX Amacron quoteright -111 -KPX Amacron v -74 -KPX Amacron w -92 -KPX Amacron y -92 -KPX Amacron yacute -92 -KPX Amacron ydieresis -92 -KPX Aogonek C -40 -KPX Aogonek Cacute -40 -KPX Aogonek Ccaron -40 -KPX Aogonek Ccedilla -40 -KPX Aogonek G -40 -KPX Aogonek Gbreve -40 -KPX Aogonek Gcommaaccent -40 -KPX Aogonek O -55 -KPX Aogonek Oacute -55 -KPX Aogonek Ocircumflex -55 -KPX Aogonek Odieresis -55 -KPX Aogonek Ograve -55 -KPX Aogonek Ohungarumlaut -55 -KPX Aogonek Omacron -55 -KPX Aogonek Oslash -55 -KPX Aogonek Otilde -55 -KPX Aogonek Q -55 -KPX Aogonek T -111 -KPX Aogonek Tcaron -111 -KPX Aogonek Tcommaaccent -111 -KPX Aogonek U -55 -KPX Aogonek Uacute -55 -KPX Aogonek Ucircumflex -55 -KPX Aogonek Udieresis -55 -KPX Aogonek Ugrave -55 -KPX Aogonek Uhungarumlaut -55 -KPX Aogonek Umacron -55 -KPX Aogonek Uogonek -55 -KPX Aogonek Uring -55 -KPX Aogonek V -135 -KPX Aogonek W -90 -KPX Aogonek Y -105 -KPX Aogonek Yacute -105 -KPX Aogonek Ydieresis -105 -KPX Aogonek quoteright -111 -KPX Aogonek v -74 -KPX Aogonek w -52 -KPX Aogonek y -52 -KPX Aogonek yacute -52 -KPX Aogonek ydieresis -52 -KPX Aring C -40 -KPX Aring Cacute -40 -KPX Aring Ccaron -40 -KPX Aring Ccedilla -40 -KPX Aring G -40 -KPX Aring Gbreve -40 -KPX Aring Gcommaaccent -40 -KPX Aring O -55 -KPX Aring Oacute -55 -KPX Aring Ocircumflex -55 -KPX Aring Odieresis -55 -KPX Aring Ograve -55 -KPX Aring Ohungarumlaut -55 -KPX Aring Omacron -55 -KPX Aring Oslash -55 -KPX Aring Otilde -55 -KPX Aring Q -55 -KPX Aring T -111 -KPX Aring Tcaron -111 -KPX Aring Tcommaaccent -111 -KPX Aring U -55 -KPX Aring Uacute -55 -KPX Aring Ucircumflex -55 -KPX Aring Udieresis -55 -KPX Aring Ugrave -55 -KPX Aring Uhungarumlaut -55 -KPX Aring Umacron -55 -KPX Aring Uogonek -55 -KPX Aring Uring -55 -KPX Aring V -135 -KPX Aring W -90 -KPX Aring Y -105 -KPX Aring Yacute -105 -KPX Aring Ydieresis -105 -KPX Aring quoteright -111 -KPX Aring v -74 -KPX Aring w -92 -KPX Aring y -92 -KPX Aring yacute -92 -KPX Aring ydieresis -92 -KPX Atilde C -40 -KPX Atilde Cacute -40 -KPX Atilde Ccaron -40 -KPX Atilde Ccedilla -40 -KPX Atilde G -40 -KPX Atilde Gbreve -40 -KPX Atilde Gcommaaccent -40 -KPX Atilde O -55 -KPX Atilde Oacute -55 -KPX Atilde Ocircumflex -55 -KPX Atilde Odieresis -55 -KPX Atilde Ograve -55 -KPX Atilde Ohungarumlaut -55 -KPX Atilde Omacron -55 -KPX Atilde Oslash -55 -KPX Atilde Otilde -55 -KPX Atilde Q -55 -KPX Atilde T -111 -KPX Atilde Tcaron -111 -KPX Atilde Tcommaaccent -111 -KPX Atilde U -55 -KPX Atilde Uacute -55 -KPX Atilde Ucircumflex -55 -KPX Atilde Udieresis -55 -KPX Atilde Ugrave -55 -KPX Atilde Uhungarumlaut -55 -KPX Atilde Umacron -55 -KPX Atilde Uogonek -55 -KPX Atilde Uring -55 -KPX Atilde V -135 -KPX Atilde W -90 -KPX Atilde Y -105 -KPX Atilde Yacute -105 -KPX Atilde Ydieresis -105 -KPX Atilde quoteright -111 -KPX Atilde v -74 -KPX Atilde w -92 -KPX Atilde y -92 -KPX Atilde yacute -92 -KPX Atilde ydieresis -92 -KPX B A -35 -KPX B Aacute -35 -KPX B Abreve -35 -KPX B Acircumflex -35 -KPX B Adieresis -35 -KPX B Agrave -35 -KPX B Amacron -35 -KPX B Aogonek -35 -KPX B Aring -35 -KPX B Atilde -35 -KPX B U -10 -KPX B Uacute -10 -KPX B Ucircumflex -10 -KPX B Udieresis -10 -KPX B Ugrave -10 -KPX B Uhungarumlaut -10 -KPX B Umacron -10 -KPX B Uogonek -10 -KPX B Uring -10 -KPX D A -40 -KPX D Aacute -40 -KPX D Abreve -40 -KPX D Acircumflex -40 -KPX D Adieresis -40 -KPX D Agrave -40 -KPX D Amacron -40 -KPX D Aogonek -40 -KPX D Aring -40 -KPX D Atilde -40 -KPX D V -40 -KPX D W -30 -KPX D Y -55 -KPX D Yacute -55 -KPX D Ydieresis -55 -KPX Dcaron A -40 -KPX Dcaron Aacute -40 -KPX Dcaron Abreve -40 -KPX Dcaron Acircumflex -40 -KPX Dcaron Adieresis -40 -KPX Dcaron Agrave -40 -KPX Dcaron Amacron -40 -KPX Dcaron Aogonek -40 -KPX Dcaron Aring -40 -KPX Dcaron Atilde -40 -KPX Dcaron V -40 -KPX Dcaron W -30 -KPX Dcaron Y -55 -KPX Dcaron Yacute -55 -KPX Dcaron Ydieresis -55 -KPX Dcroat A -40 -KPX Dcroat Aacute -40 -KPX Dcroat Abreve -40 -KPX Dcroat Acircumflex -40 -KPX Dcroat Adieresis -40 -KPX Dcroat Agrave -40 -KPX Dcroat Amacron -40 -KPX Dcroat Aogonek -40 -KPX Dcroat Aring -40 -KPX Dcroat Atilde -40 -KPX Dcroat V -40 -KPX Dcroat W -30 -KPX Dcroat Y -55 -KPX Dcroat Yacute -55 -KPX Dcroat Ydieresis -55 -KPX F A -74 -KPX F Aacute -74 -KPX F Abreve -74 -KPX F Acircumflex -74 -KPX F Adieresis -74 -KPX F Agrave -74 -KPX F Amacron -74 -KPX F Aogonek -74 -KPX F Aring -74 -KPX F Atilde -74 -KPX F a -15 -KPX F aacute -15 -KPX F abreve -15 -KPX F acircumflex -15 -KPX F adieresis -15 -KPX F agrave -15 -KPX F amacron -15 -KPX F aogonek -15 -KPX F aring -15 -KPX F atilde -15 -KPX F comma -80 -KPX F o -15 -KPX F oacute -15 -KPX F ocircumflex -15 -KPX F odieresis -15 -KPX F ograve -15 -KPX F ohungarumlaut -15 -KPX F omacron -15 -KPX F oslash -15 -KPX F otilde -15 -KPX F period -80 -KPX J A -60 -KPX J Aacute -60 -KPX J Abreve -60 -KPX J Acircumflex -60 -KPX J Adieresis -60 -KPX J Agrave -60 -KPX J Amacron -60 -KPX J Aogonek -60 -KPX J Aring -60 -KPX J Atilde -60 -KPX K O -30 -KPX K Oacute -30 -KPX K Ocircumflex -30 -KPX K Odieresis -30 -KPX K Ograve -30 -KPX K Ohungarumlaut -30 -KPX K Omacron -30 -KPX K Oslash -30 -KPX K Otilde -30 -KPX K e -25 -KPX K eacute -25 -KPX K ecaron -25 -KPX K ecircumflex -25 -KPX K edieresis -25 -KPX K edotaccent -25 -KPX K egrave -25 -KPX K emacron -25 -KPX K eogonek -25 -KPX K o -35 -KPX K oacute -35 -KPX K ocircumflex -35 -KPX K odieresis -35 -KPX K ograve -35 -KPX K ohungarumlaut -35 -KPX K omacron -35 -KPX K oslash -35 -KPX K otilde -35 -KPX K u -15 -KPX K uacute -15 -KPX K ucircumflex -15 -KPX K udieresis -15 -KPX K ugrave -15 -KPX K uhungarumlaut -15 -KPX K umacron -15 -KPX K uogonek -15 -KPX K uring -15 -KPX K y -25 -KPX K yacute -25 -KPX K ydieresis -25 -KPX Kcommaaccent O -30 -KPX Kcommaaccent Oacute -30 -KPX Kcommaaccent Ocircumflex -30 -KPX Kcommaaccent Odieresis -30 -KPX Kcommaaccent Ograve -30 -KPX Kcommaaccent Ohungarumlaut -30 -KPX Kcommaaccent Omacron -30 -KPX Kcommaaccent Oslash -30 -KPX Kcommaaccent Otilde -30 -KPX Kcommaaccent e -25 -KPX Kcommaaccent eacute -25 -KPX Kcommaaccent ecaron -25 -KPX Kcommaaccent ecircumflex -25 -KPX Kcommaaccent edieresis -25 -KPX Kcommaaccent edotaccent -25 -KPX Kcommaaccent egrave -25 -KPX Kcommaaccent emacron -25 -KPX Kcommaaccent eogonek -25 -KPX Kcommaaccent o -35 -KPX Kcommaaccent oacute -35 -KPX Kcommaaccent ocircumflex -35 -KPX Kcommaaccent odieresis -35 -KPX Kcommaaccent ograve -35 -KPX Kcommaaccent ohungarumlaut -35 -KPX Kcommaaccent omacron -35 -KPX Kcommaaccent oslash -35 -KPX Kcommaaccent otilde -35 -KPX Kcommaaccent u -15 -KPX Kcommaaccent uacute -15 -KPX Kcommaaccent ucircumflex -15 -KPX Kcommaaccent udieresis -15 -KPX Kcommaaccent ugrave -15 -KPX Kcommaaccent uhungarumlaut -15 -KPX Kcommaaccent umacron -15 -KPX Kcommaaccent uogonek -15 -KPX Kcommaaccent uring -15 -KPX Kcommaaccent y -25 -KPX Kcommaaccent yacute -25 -KPX Kcommaaccent ydieresis -25 -KPX L T -92 -KPX L Tcaron -92 -KPX L Tcommaaccent -92 -KPX L V -100 -KPX L W -74 -KPX L Y -100 -KPX L Yacute -100 -KPX L Ydieresis -100 -KPX L quoteright -92 -KPX L y -55 -KPX L yacute -55 -KPX L ydieresis -55 -KPX Lacute T -92 -KPX Lacute Tcaron -92 -KPX Lacute Tcommaaccent -92 -KPX Lacute V -100 -KPX Lacute W -74 -KPX Lacute Y -100 -KPX Lacute Yacute -100 -KPX Lacute Ydieresis -100 -KPX Lacute quoteright -92 -KPX Lacute y -55 -KPX Lacute yacute -55 -KPX Lacute ydieresis -55 -KPX Lcaron quoteright -92 -KPX Lcaron y -55 -KPX Lcaron yacute -55 -KPX Lcaron ydieresis -55 -KPX Lcommaaccent T -92 -KPX Lcommaaccent Tcaron -92 -KPX Lcommaaccent Tcommaaccent -92 -KPX Lcommaaccent V -100 -KPX Lcommaaccent W -74 -KPX Lcommaaccent Y -100 -KPX Lcommaaccent Yacute -100 -KPX Lcommaaccent Ydieresis -100 -KPX Lcommaaccent quoteright -92 -KPX Lcommaaccent y -55 -KPX Lcommaaccent yacute -55 -KPX Lcommaaccent ydieresis -55 -KPX Lslash T -92 -KPX Lslash Tcaron -92 -KPX Lslash Tcommaaccent -92 -KPX Lslash V -100 -KPX Lslash W -74 -KPX Lslash Y -100 -KPX Lslash Yacute -100 -KPX Lslash Ydieresis -100 -KPX Lslash quoteright -92 -KPX Lslash y -55 -KPX Lslash yacute -55 -KPX Lslash ydieresis -55 -KPX N A -35 -KPX N Aacute -35 -KPX N Abreve -35 -KPX N Acircumflex -35 -KPX N Adieresis -35 -KPX N Agrave -35 -KPX N Amacron -35 -KPX N Aogonek -35 -KPX N Aring -35 -KPX N Atilde -35 -KPX Nacute A -35 -KPX Nacute Aacute -35 -KPX Nacute Abreve -35 -KPX Nacute Acircumflex -35 -KPX Nacute Adieresis -35 -KPX Nacute Agrave -35 -KPX Nacute Amacron -35 -KPX Nacute Aogonek -35 -KPX Nacute Aring -35 -KPX Nacute Atilde -35 -KPX Ncaron A -35 -KPX Ncaron Aacute -35 -KPX Ncaron Abreve -35 -KPX Ncaron Acircumflex -35 -KPX Ncaron Adieresis -35 -KPX Ncaron Agrave -35 -KPX Ncaron Amacron -35 -KPX Ncaron Aogonek -35 -KPX Ncaron Aring -35 -KPX Ncaron Atilde -35 -KPX Ncommaaccent A -35 -KPX Ncommaaccent Aacute -35 -KPX Ncommaaccent Abreve -35 -KPX Ncommaaccent Acircumflex -35 -KPX Ncommaaccent Adieresis -35 -KPX Ncommaaccent Agrave -35 -KPX Ncommaaccent Amacron -35 -KPX Ncommaaccent Aogonek -35 -KPX Ncommaaccent Aring -35 -KPX Ncommaaccent Atilde -35 -KPX Ntilde A -35 -KPX Ntilde Aacute -35 -KPX Ntilde Abreve -35 -KPX Ntilde Acircumflex -35 -KPX Ntilde Adieresis -35 -KPX Ntilde Agrave -35 -KPX Ntilde Amacron -35 -KPX Ntilde Aogonek -35 -KPX Ntilde Aring -35 -KPX Ntilde Atilde -35 -KPX O A -35 -KPX O Aacute -35 -KPX O Abreve -35 -KPX O Acircumflex -35 -KPX O Adieresis -35 -KPX O Agrave -35 -KPX O Amacron -35 -KPX O Aogonek -35 -KPX O Aring -35 -KPX O Atilde -35 -KPX O T -40 -KPX O Tcaron -40 -KPX O Tcommaaccent -40 -KPX O V -50 -KPX O W -35 -KPX O X -40 -KPX O Y -50 -KPX O Yacute -50 -KPX O Ydieresis -50 -KPX Oacute A -35 -KPX Oacute Aacute -35 -KPX Oacute Abreve -35 -KPX Oacute Acircumflex -35 -KPX Oacute Adieresis -35 -KPX Oacute Agrave -35 -KPX Oacute Amacron -35 -KPX Oacute Aogonek -35 -KPX Oacute Aring -35 -KPX Oacute Atilde -35 -KPX Oacute T -40 -KPX Oacute Tcaron -40 -KPX Oacute Tcommaaccent -40 -KPX Oacute V -50 -KPX Oacute W -35 -KPX Oacute X -40 -KPX Oacute Y -50 -KPX Oacute Yacute -50 -KPX Oacute Ydieresis -50 -KPX Ocircumflex A -35 -KPX Ocircumflex Aacute -35 -KPX Ocircumflex Abreve -35 -KPX Ocircumflex Acircumflex -35 -KPX Ocircumflex Adieresis -35 -KPX Ocircumflex Agrave -35 -KPX Ocircumflex Amacron -35 -KPX Ocircumflex Aogonek -35 -KPX Ocircumflex Aring -35 -KPX Ocircumflex Atilde -35 -KPX Ocircumflex T -40 -KPX Ocircumflex Tcaron -40 -KPX Ocircumflex Tcommaaccent -40 -KPX Ocircumflex V -50 -KPX Ocircumflex W -35 -KPX Ocircumflex X -40 -KPX Ocircumflex Y -50 -KPX Ocircumflex Yacute -50 -KPX Ocircumflex Ydieresis -50 -KPX Odieresis A -35 -KPX Odieresis Aacute -35 -KPX Odieresis Abreve -35 -KPX Odieresis Acircumflex -35 -KPX Odieresis Adieresis -35 -KPX Odieresis Agrave -35 -KPX Odieresis Amacron -35 -KPX Odieresis Aogonek -35 -KPX Odieresis Aring -35 -KPX Odieresis Atilde -35 -KPX Odieresis T -40 -KPX Odieresis Tcaron -40 -KPX Odieresis Tcommaaccent -40 -KPX Odieresis V -50 -KPX Odieresis W -35 -KPX Odieresis X -40 -KPX Odieresis Y -50 -KPX Odieresis Yacute -50 -KPX Odieresis Ydieresis -50 -KPX Ograve A -35 -KPX Ograve Aacute -35 -KPX Ograve Abreve -35 -KPX Ograve Acircumflex -35 -KPX Ograve Adieresis -35 -KPX Ograve Agrave -35 -KPX Ograve Amacron -35 -KPX Ograve Aogonek -35 -KPX Ograve Aring -35 -KPX Ograve Atilde -35 -KPX Ograve T -40 -KPX Ograve Tcaron -40 -KPX Ograve Tcommaaccent -40 -KPX Ograve V -50 -KPX Ograve W -35 -KPX Ograve X -40 -KPX Ograve Y -50 -KPX Ograve Yacute -50 -KPX Ograve Ydieresis -50 -KPX Ohungarumlaut A -35 -KPX Ohungarumlaut Aacute -35 -KPX Ohungarumlaut Abreve -35 -KPX Ohungarumlaut Acircumflex -35 -KPX Ohungarumlaut Adieresis -35 -KPX Ohungarumlaut Agrave -35 -KPX Ohungarumlaut Amacron -35 -KPX Ohungarumlaut Aogonek -35 -KPX Ohungarumlaut Aring -35 -KPX Ohungarumlaut Atilde -35 -KPX Ohungarumlaut T -40 -KPX Ohungarumlaut Tcaron -40 -KPX Ohungarumlaut Tcommaaccent -40 -KPX Ohungarumlaut V -50 -KPX Ohungarumlaut W -35 -KPX Ohungarumlaut X -40 -KPX Ohungarumlaut Y -50 -KPX Ohungarumlaut Yacute -50 -KPX Ohungarumlaut Ydieresis -50 -KPX Omacron A -35 -KPX Omacron Aacute -35 -KPX Omacron Abreve -35 -KPX Omacron Acircumflex -35 -KPX Omacron Adieresis -35 -KPX Omacron Agrave -35 -KPX Omacron Amacron -35 -KPX Omacron Aogonek -35 -KPX Omacron Aring -35 -KPX Omacron Atilde -35 -KPX Omacron T -40 -KPX Omacron Tcaron -40 -KPX Omacron Tcommaaccent -40 -KPX Omacron V -50 -KPX Omacron W -35 -KPX Omacron X -40 -KPX Omacron Y -50 -KPX Omacron Yacute -50 -KPX Omacron Ydieresis -50 -KPX Oslash A -35 -KPX Oslash Aacute -35 -KPX Oslash Abreve -35 -KPX Oslash Acircumflex -35 -KPX Oslash Adieresis -35 -KPX Oslash Agrave -35 -KPX Oslash Amacron -35 -KPX Oslash Aogonek -35 -KPX Oslash Aring -35 -KPX Oslash Atilde -35 -KPX Oslash T -40 -KPX Oslash Tcaron -40 -KPX Oslash Tcommaaccent -40 -KPX Oslash V -50 -KPX Oslash W -35 -KPX Oslash X -40 -KPX Oslash Y -50 -KPX Oslash Yacute -50 -KPX Oslash Ydieresis -50 -KPX Otilde A -35 -KPX Otilde Aacute -35 -KPX Otilde Abreve -35 -KPX Otilde Acircumflex -35 -KPX Otilde Adieresis -35 -KPX Otilde Agrave -35 -KPX Otilde Amacron -35 -KPX Otilde Aogonek -35 -KPX Otilde Aring -35 -KPX Otilde Atilde -35 -KPX Otilde T -40 -KPX Otilde Tcaron -40 -KPX Otilde Tcommaaccent -40 -KPX Otilde V -50 -KPX Otilde W -35 -KPX Otilde X -40 -KPX Otilde Y -50 -KPX Otilde Yacute -50 -KPX Otilde Ydieresis -50 -KPX P A -92 -KPX P Aacute -92 -KPX P Abreve -92 -KPX P Acircumflex -92 -KPX P Adieresis -92 -KPX P Agrave -92 -KPX P Amacron -92 -KPX P Aogonek -92 -KPX P Aring -92 -KPX P Atilde -92 -KPX P a -15 -KPX P aacute -15 -KPX P abreve -15 -KPX P acircumflex -15 -KPX P adieresis -15 -KPX P agrave -15 -KPX P amacron -15 -KPX P aogonek -15 -KPX P aring -15 -KPX P atilde -15 -KPX P comma -111 -KPX P period -111 -KPX Q U -10 -KPX Q Uacute -10 -KPX Q Ucircumflex -10 -KPX Q Udieresis -10 -KPX Q Ugrave -10 -KPX Q Uhungarumlaut -10 -KPX Q Umacron -10 -KPX Q Uogonek -10 -KPX Q Uring -10 -KPX R O -40 -KPX R Oacute -40 -KPX R Ocircumflex -40 -KPX R Odieresis -40 -KPX R Ograve -40 -KPX R Ohungarumlaut -40 -KPX R Omacron -40 -KPX R Oslash -40 -KPX R Otilde -40 -KPX R T -60 -KPX R Tcaron -60 -KPX R Tcommaaccent -60 -KPX R U -40 -KPX R Uacute -40 -KPX R Ucircumflex -40 -KPX R Udieresis -40 -KPX R Ugrave -40 -KPX R Uhungarumlaut -40 -KPX R Umacron -40 -KPX R Uogonek -40 -KPX R Uring -40 -KPX R V -80 -KPX R W -55 -KPX R Y -65 -KPX R Yacute -65 -KPX R Ydieresis -65 -KPX Racute O -40 -KPX Racute Oacute -40 -KPX Racute Ocircumflex -40 -KPX Racute Odieresis -40 -KPX Racute Ograve -40 -KPX Racute Ohungarumlaut -40 -KPX Racute Omacron -40 -KPX Racute Oslash -40 -KPX Racute Otilde -40 -KPX Racute T -60 -KPX Racute Tcaron -60 -KPX Racute Tcommaaccent -60 -KPX Racute U -40 -KPX Racute Uacute -40 -KPX Racute Ucircumflex -40 -KPX Racute Udieresis -40 -KPX Racute Ugrave -40 -KPX Racute Uhungarumlaut -40 -KPX Racute Umacron -40 -KPX Racute Uogonek -40 -KPX Racute Uring -40 -KPX Racute V -80 -KPX Racute W -55 -KPX Racute Y -65 -KPX Racute Yacute -65 -KPX Racute Ydieresis -65 -KPX Rcaron O -40 -KPX Rcaron Oacute -40 -KPX Rcaron Ocircumflex -40 -KPX Rcaron Odieresis -40 -KPX Rcaron Ograve -40 -KPX Rcaron Ohungarumlaut -40 -KPX Rcaron Omacron -40 -KPX Rcaron Oslash -40 -KPX Rcaron Otilde -40 -KPX Rcaron T -60 -KPX Rcaron Tcaron -60 -KPX Rcaron Tcommaaccent -60 -KPX Rcaron U -40 -KPX Rcaron Uacute -40 -KPX Rcaron Ucircumflex -40 -KPX Rcaron Udieresis -40 -KPX Rcaron Ugrave -40 -KPX Rcaron Uhungarumlaut -40 -KPX Rcaron Umacron -40 -KPX Rcaron Uogonek -40 -KPX Rcaron Uring -40 -KPX Rcaron V -80 -KPX Rcaron W -55 -KPX Rcaron Y -65 -KPX Rcaron Yacute -65 -KPX Rcaron Ydieresis -65 -KPX Rcommaaccent O -40 -KPX Rcommaaccent Oacute -40 -KPX Rcommaaccent Ocircumflex -40 -KPX Rcommaaccent Odieresis -40 -KPX Rcommaaccent Ograve -40 -KPX Rcommaaccent Ohungarumlaut -40 -KPX Rcommaaccent Omacron -40 -KPX Rcommaaccent Oslash -40 -KPX Rcommaaccent Otilde -40 -KPX Rcommaaccent T -60 -KPX Rcommaaccent Tcaron -60 -KPX Rcommaaccent Tcommaaccent -60 -KPX Rcommaaccent U -40 -KPX Rcommaaccent Uacute -40 -KPX Rcommaaccent Ucircumflex -40 -KPX Rcommaaccent Udieresis -40 -KPX Rcommaaccent Ugrave -40 -KPX Rcommaaccent Uhungarumlaut -40 -KPX Rcommaaccent Umacron -40 -KPX Rcommaaccent Uogonek -40 -KPX Rcommaaccent Uring -40 -KPX Rcommaaccent V -80 -KPX Rcommaaccent W -55 -KPX Rcommaaccent Y -65 -KPX Rcommaaccent Yacute -65 -KPX Rcommaaccent Ydieresis -65 -KPX T A -93 -KPX T Aacute -93 -KPX T Abreve -93 -KPX T Acircumflex -93 -KPX T Adieresis -93 -KPX T Agrave -93 -KPX T Amacron -93 -KPX T Aogonek -93 -KPX T Aring -93 -KPX T Atilde -93 -KPX T O -18 -KPX T Oacute -18 -KPX T Ocircumflex -18 -KPX T Odieresis -18 -KPX T Ograve -18 -KPX T Ohungarumlaut -18 -KPX T Omacron -18 -KPX T Oslash -18 -KPX T Otilde -18 -KPX T a -80 -KPX T aacute -80 -KPX T abreve -80 -KPX T acircumflex -80 -KPX T adieresis -40 -KPX T agrave -40 -KPX T amacron -40 -KPX T aogonek -80 -KPX T aring -80 -KPX T atilde -40 -KPX T colon -50 -KPX T comma -74 -KPX T e -70 -KPX T eacute -70 -KPX T ecaron -70 -KPX T ecircumflex -70 -KPX T edieresis -30 -KPX T edotaccent -70 -KPX T egrave -70 -KPX T emacron -30 -KPX T eogonek -70 -KPX T hyphen -92 -KPX T i -35 -KPX T iacute -35 -KPX T iogonek -35 -KPX T o -80 -KPX T oacute -80 -KPX T ocircumflex -80 -KPX T odieresis -80 -KPX T ograve -80 -KPX T ohungarumlaut -80 -KPX T omacron -80 -KPX T oslash -80 -KPX T otilde -80 -KPX T period -74 -KPX T r -35 -KPX T racute -35 -KPX T rcaron -35 -KPX T rcommaaccent -35 -KPX T semicolon -55 -KPX T u -45 -KPX T uacute -45 -KPX T ucircumflex -45 -KPX T udieresis -45 -KPX T ugrave -45 -KPX T uhungarumlaut -45 -KPX T umacron -45 -KPX T uogonek -45 -KPX T uring -45 -KPX T w -80 -KPX T y -80 -KPX T yacute -80 -KPX T ydieresis -80 -KPX Tcaron A -93 -KPX Tcaron Aacute -93 -KPX Tcaron Abreve -93 -KPX Tcaron Acircumflex -93 -KPX Tcaron Adieresis -93 -KPX Tcaron Agrave -93 -KPX Tcaron Amacron -93 -KPX Tcaron Aogonek -93 -KPX Tcaron Aring -93 -KPX Tcaron Atilde -93 -KPX Tcaron O -18 -KPX Tcaron Oacute -18 -KPX Tcaron Ocircumflex -18 -KPX Tcaron Odieresis -18 -KPX Tcaron Ograve -18 -KPX Tcaron Ohungarumlaut -18 -KPX Tcaron Omacron -18 -KPX Tcaron Oslash -18 -KPX Tcaron Otilde -18 -KPX Tcaron a -80 -KPX Tcaron aacute -80 -KPX Tcaron abreve -80 -KPX Tcaron acircumflex -80 -KPX Tcaron adieresis -40 -KPX Tcaron agrave -40 -KPX Tcaron amacron -40 -KPX Tcaron aogonek -80 -KPX Tcaron aring -80 -KPX Tcaron atilde -40 -KPX Tcaron colon -50 -KPX Tcaron comma -74 -KPX Tcaron e -70 -KPX Tcaron eacute -70 -KPX Tcaron ecaron -70 -KPX Tcaron ecircumflex -30 -KPX Tcaron edieresis -30 -KPX Tcaron edotaccent -70 -KPX Tcaron egrave -70 -KPX Tcaron emacron -30 -KPX Tcaron eogonek -70 -KPX Tcaron hyphen -92 -KPX Tcaron i -35 -KPX Tcaron iacute -35 -KPX Tcaron iogonek -35 -KPX Tcaron o -80 -KPX Tcaron oacute -80 -KPX Tcaron ocircumflex -80 -KPX Tcaron odieresis -80 -KPX Tcaron ograve -80 -KPX Tcaron ohungarumlaut -80 -KPX Tcaron omacron -80 -KPX Tcaron oslash -80 -KPX Tcaron otilde -80 -KPX Tcaron period -74 -KPX Tcaron r -35 -KPX Tcaron racute -35 -KPX Tcaron rcaron -35 -KPX Tcaron rcommaaccent -35 -KPX Tcaron semicolon -55 -KPX Tcaron u -45 -KPX Tcaron uacute -45 -KPX Tcaron ucircumflex -45 -KPX Tcaron udieresis -45 -KPX Tcaron ugrave -45 -KPX Tcaron uhungarumlaut -45 -KPX Tcaron umacron -45 -KPX Tcaron uogonek -45 -KPX Tcaron uring -45 -KPX Tcaron w -80 -KPX Tcaron y -80 -KPX Tcaron yacute -80 -KPX Tcaron ydieresis -80 -KPX Tcommaaccent A -93 -KPX Tcommaaccent Aacute -93 -KPX Tcommaaccent Abreve -93 -KPX Tcommaaccent Acircumflex -93 -KPX Tcommaaccent Adieresis -93 -KPX Tcommaaccent Agrave -93 -KPX Tcommaaccent Amacron -93 -KPX Tcommaaccent Aogonek -93 -KPX Tcommaaccent Aring -93 -KPX Tcommaaccent Atilde -93 -KPX Tcommaaccent O -18 -KPX Tcommaaccent Oacute -18 -KPX Tcommaaccent Ocircumflex -18 -KPX Tcommaaccent Odieresis -18 -KPX Tcommaaccent Ograve -18 -KPX Tcommaaccent Ohungarumlaut -18 -KPX Tcommaaccent Omacron -18 -KPX Tcommaaccent Oslash -18 -KPX Tcommaaccent Otilde -18 -KPX Tcommaaccent a -80 -KPX Tcommaaccent aacute -80 -KPX Tcommaaccent abreve -80 -KPX Tcommaaccent acircumflex -80 -KPX Tcommaaccent adieresis -40 -KPX Tcommaaccent agrave -40 -KPX Tcommaaccent amacron -40 -KPX Tcommaaccent aogonek -80 -KPX Tcommaaccent aring -80 -KPX Tcommaaccent atilde -40 -KPX Tcommaaccent colon -50 -KPX Tcommaaccent comma -74 -KPX Tcommaaccent e -70 -KPX Tcommaaccent eacute -70 -KPX Tcommaaccent ecaron -70 -KPX Tcommaaccent ecircumflex -30 -KPX Tcommaaccent edieresis -30 -KPX Tcommaaccent edotaccent -70 -KPX Tcommaaccent egrave -30 -KPX Tcommaaccent emacron -70 -KPX Tcommaaccent eogonek -70 -KPX Tcommaaccent hyphen -92 -KPX Tcommaaccent i -35 -KPX Tcommaaccent iacute -35 -KPX Tcommaaccent iogonek -35 -KPX Tcommaaccent o -80 -KPX Tcommaaccent oacute -80 -KPX Tcommaaccent ocircumflex -80 -KPX Tcommaaccent odieresis -80 -KPX Tcommaaccent ograve -80 -KPX Tcommaaccent ohungarumlaut -80 -KPX Tcommaaccent omacron -80 -KPX Tcommaaccent oslash -80 -KPX Tcommaaccent otilde -80 -KPX Tcommaaccent period -74 -KPX Tcommaaccent r -35 -KPX Tcommaaccent racute -35 -KPX Tcommaaccent rcaron -35 -KPX Tcommaaccent rcommaaccent -35 -KPX Tcommaaccent semicolon -55 -KPX Tcommaaccent u -45 -KPX Tcommaaccent uacute -45 -KPX Tcommaaccent ucircumflex -45 -KPX Tcommaaccent udieresis -45 -KPX Tcommaaccent ugrave -45 -KPX Tcommaaccent uhungarumlaut -45 -KPX Tcommaaccent umacron -45 -KPX Tcommaaccent uogonek -45 -KPX Tcommaaccent uring -45 -KPX Tcommaaccent w -80 -KPX Tcommaaccent y -80 -KPX Tcommaaccent yacute -80 -KPX Tcommaaccent ydieresis -80 -KPX U A -40 -KPX U Aacute -40 -KPX U Abreve -40 -KPX U Acircumflex -40 -KPX U Adieresis -40 -KPX U Agrave -40 -KPX U Amacron -40 -KPX U Aogonek -40 -KPX U Aring -40 -KPX U Atilde -40 -KPX Uacute A -40 -KPX Uacute Aacute -40 -KPX Uacute Abreve -40 -KPX Uacute Acircumflex -40 -KPX Uacute Adieresis -40 -KPX Uacute Agrave -40 -KPX Uacute Amacron -40 -KPX Uacute Aogonek -40 -KPX Uacute Aring -40 -KPX Uacute Atilde -40 -KPX Ucircumflex A -40 -KPX Ucircumflex Aacute -40 -KPX Ucircumflex Abreve -40 -KPX Ucircumflex Acircumflex -40 -KPX Ucircumflex Adieresis -40 -KPX Ucircumflex Agrave -40 -KPX Ucircumflex Amacron -40 -KPX Ucircumflex Aogonek -40 -KPX Ucircumflex Aring -40 -KPX Ucircumflex Atilde -40 -KPX Udieresis A -40 -KPX Udieresis Aacute -40 -KPX Udieresis Abreve -40 -KPX Udieresis Acircumflex -40 -KPX Udieresis Adieresis -40 -KPX Udieresis Agrave -40 -KPX Udieresis Amacron -40 -KPX Udieresis Aogonek -40 -KPX Udieresis Aring -40 -KPX Udieresis Atilde -40 -KPX Ugrave A -40 -KPX Ugrave Aacute -40 -KPX Ugrave Abreve -40 -KPX Ugrave Acircumflex -40 -KPX Ugrave Adieresis -40 -KPX Ugrave Agrave -40 -KPX Ugrave Amacron -40 -KPX Ugrave Aogonek -40 -KPX Ugrave Aring -40 -KPX Ugrave Atilde -40 -KPX Uhungarumlaut A -40 -KPX Uhungarumlaut Aacute -40 -KPX Uhungarumlaut Abreve -40 -KPX Uhungarumlaut Acircumflex -40 -KPX Uhungarumlaut Adieresis -40 -KPX Uhungarumlaut Agrave -40 -KPX Uhungarumlaut Amacron -40 -KPX Uhungarumlaut Aogonek -40 -KPX Uhungarumlaut Aring -40 -KPX Uhungarumlaut Atilde -40 -KPX Umacron A -40 -KPX Umacron Aacute -40 -KPX Umacron Abreve -40 -KPX Umacron Acircumflex -40 -KPX Umacron Adieresis -40 -KPX Umacron Agrave -40 -KPX Umacron Amacron -40 -KPX Umacron Aogonek -40 -KPX Umacron Aring -40 -KPX Umacron Atilde -40 -KPX Uogonek A -40 -KPX Uogonek Aacute -40 -KPX Uogonek Abreve -40 -KPX Uogonek Acircumflex -40 -KPX Uogonek Adieresis -40 -KPX Uogonek Agrave -40 -KPX Uogonek Amacron -40 -KPX Uogonek Aogonek -40 -KPX Uogonek Aring -40 -KPX Uogonek Atilde -40 -KPX Uring A -40 -KPX Uring Aacute -40 -KPX Uring Abreve -40 -KPX Uring Acircumflex -40 -KPX Uring Adieresis -40 -KPX Uring Agrave -40 -KPX Uring Amacron -40 -KPX Uring Aogonek -40 -KPX Uring Aring -40 -KPX Uring Atilde -40 -KPX V A -135 -KPX V Aacute -135 -KPX V Abreve -135 -KPX V Acircumflex -135 -KPX V Adieresis -135 -KPX V Agrave -135 -KPX V Amacron -135 -KPX V Aogonek -135 -KPX V Aring -135 -KPX V Atilde -135 -KPX V G -15 -KPX V Gbreve -15 -KPX V Gcommaaccent -15 -KPX V O -40 -KPX V Oacute -40 -KPX V Ocircumflex -40 -KPX V Odieresis -40 -KPX V Ograve -40 -KPX V Ohungarumlaut -40 -KPX V Omacron -40 -KPX V Oslash -40 -KPX V Otilde -40 -KPX V a -111 -KPX V aacute -111 -KPX V abreve -111 -KPX V acircumflex -71 -KPX V adieresis -71 -KPX V agrave -71 -KPX V amacron -71 -KPX V aogonek -111 -KPX V aring -111 -KPX V atilde -71 -KPX V colon -74 -KPX V comma -129 -KPX V e -111 -KPX V eacute -111 -KPX V ecaron -71 -KPX V ecircumflex -71 -KPX V edieresis -71 -KPX V edotaccent -111 -KPX V egrave -71 -KPX V emacron -71 -KPX V eogonek -111 -KPX V hyphen -100 -KPX V i -60 -KPX V iacute -60 -KPX V icircumflex -20 -KPX V idieresis -20 -KPX V igrave -20 -KPX V imacron -20 -KPX V iogonek -60 -KPX V o -129 -KPX V oacute -129 -KPX V ocircumflex -129 -KPX V odieresis -89 -KPX V ograve -89 -KPX V ohungarumlaut -129 -KPX V omacron -89 -KPX V oslash -129 -KPX V otilde -89 -KPX V period -129 -KPX V semicolon -74 -KPX V u -75 -KPX V uacute -75 -KPX V ucircumflex -75 -KPX V udieresis -75 -KPX V ugrave -75 -KPX V uhungarumlaut -75 -KPX V umacron -75 -KPX V uogonek -75 -KPX V uring -75 -KPX W A -120 -KPX W Aacute -120 -KPX W Abreve -120 -KPX W Acircumflex -120 -KPX W Adieresis -120 -KPX W Agrave -120 -KPX W Amacron -120 -KPX W Aogonek -120 -KPX W Aring -120 -KPX W Atilde -120 -KPX W O -10 -KPX W Oacute -10 -KPX W Ocircumflex -10 -KPX W Odieresis -10 -KPX W Ograve -10 -KPX W Ohungarumlaut -10 -KPX W Omacron -10 -KPX W Oslash -10 -KPX W Otilde -10 -KPX W a -80 -KPX W aacute -80 -KPX W abreve -80 -KPX W acircumflex -80 -KPX W adieresis -80 -KPX W agrave -80 -KPX W amacron -80 -KPX W aogonek -80 -KPX W aring -80 -KPX W atilde -80 -KPX W colon -37 -KPX W comma -92 -KPX W e -80 -KPX W eacute -80 -KPX W ecaron -80 -KPX W ecircumflex -80 -KPX W edieresis -40 -KPX W edotaccent -80 -KPX W egrave -40 -KPX W emacron -40 -KPX W eogonek -80 -KPX W hyphen -65 -KPX W i -40 -KPX W iacute -40 -KPX W iogonek -40 -KPX W o -80 -KPX W oacute -80 -KPX W ocircumflex -80 -KPX W odieresis -80 -KPX W ograve -80 -KPX W ohungarumlaut -80 -KPX W omacron -80 -KPX W oslash -80 -KPX W otilde -80 -KPX W period -92 -KPX W semicolon -37 -KPX W u -50 -KPX W uacute -50 -KPX W ucircumflex -50 -KPX W udieresis -50 -KPX W ugrave -50 -KPX W uhungarumlaut -50 -KPX W umacron -50 -KPX W uogonek -50 -KPX W uring -50 -KPX W y -73 -KPX W yacute -73 -KPX W ydieresis -73 -KPX Y A -120 -KPX Y Aacute -120 -KPX Y Abreve -120 -KPX Y Acircumflex -120 -KPX Y Adieresis -120 -KPX Y Agrave -120 -KPX Y Amacron -120 -KPX Y Aogonek -120 -KPX Y Aring -120 -KPX Y Atilde -120 -KPX Y O -30 -KPX Y Oacute -30 -KPX Y Ocircumflex -30 -KPX Y Odieresis -30 -KPX Y Ograve -30 -KPX Y Ohungarumlaut -30 -KPX Y Omacron -30 -KPX Y Oslash -30 -KPX Y Otilde -30 -KPX Y a -100 -KPX Y aacute -100 -KPX Y abreve -100 -KPX Y acircumflex -100 -KPX Y adieresis -60 -KPX Y agrave -60 -KPX Y amacron -60 -KPX Y aogonek -100 -KPX Y aring -100 -KPX Y atilde -60 -KPX Y colon -92 -KPX Y comma -129 -KPX Y e -100 -KPX Y eacute -100 -KPX Y ecaron -100 -KPX Y ecircumflex -100 -KPX Y edieresis -60 -KPX Y edotaccent -100 -KPX Y egrave -60 -KPX Y emacron -60 -KPX Y eogonek -100 -KPX Y hyphen -111 -KPX Y i -55 -KPX Y iacute -55 -KPX Y iogonek -55 -KPX Y o -110 -KPX Y oacute -110 -KPX Y ocircumflex -110 -KPX Y odieresis -70 -KPX Y ograve -70 -KPX Y ohungarumlaut -110 -KPX Y omacron -70 -KPX Y oslash -110 -KPX Y otilde -70 -KPX Y period -129 -KPX Y semicolon -92 -KPX Y u -111 -KPX Y uacute -111 -KPX Y ucircumflex -111 -KPX Y udieresis -71 -KPX Y ugrave -71 -KPX Y uhungarumlaut -111 -KPX Y umacron -71 -KPX Y uogonek -111 -KPX Y uring -111 -KPX Yacute A -120 -KPX Yacute Aacute -120 -KPX Yacute Abreve -120 -KPX Yacute Acircumflex -120 -KPX Yacute Adieresis -120 -KPX Yacute Agrave -120 -KPX Yacute Amacron -120 -KPX Yacute Aogonek -120 -KPX Yacute Aring -120 -KPX Yacute Atilde -120 -KPX Yacute O -30 -KPX Yacute Oacute -30 -KPX Yacute Ocircumflex -30 -KPX Yacute Odieresis -30 -KPX Yacute Ograve -30 -KPX Yacute Ohungarumlaut -30 -KPX Yacute Omacron -30 -KPX Yacute Oslash -30 -KPX Yacute Otilde -30 -KPX Yacute a -100 -KPX Yacute aacute -100 -KPX Yacute abreve -100 -KPX Yacute acircumflex -100 -KPX Yacute adieresis -60 -KPX Yacute agrave -60 -KPX Yacute amacron -60 -KPX Yacute aogonek -100 -KPX Yacute aring -100 -KPX Yacute atilde -60 -KPX Yacute colon -92 -KPX Yacute comma -129 -KPX Yacute e -100 -KPX Yacute eacute -100 -KPX Yacute ecaron -100 -KPX Yacute ecircumflex -100 -KPX Yacute edieresis -60 -KPX Yacute edotaccent -100 -KPX Yacute egrave -60 -KPX Yacute emacron -60 -KPX Yacute eogonek -100 -KPX Yacute hyphen -111 -KPX Yacute i -55 -KPX Yacute iacute -55 -KPX Yacute iogonek -55 -KPX Yacute o -110 -KPX Yacute oacute -110 -KPX Yacute ocircumflex -110 -KPX Yacute odieresis -70 -KPX Yacute ograve -70 -KPX Yacute ohungarumlaut -110 -KPX Yacute omacron -70 -KPX Yacute oslash -110 -KPX Yacute otilde -70 -KPX Yacute period -129 -KPX Yacute semicolon -92 -KPX Yacute u -111 -KPX Yacute uacute -111 -KPX Yacute ucircumflex -111 -KPX Yacute udieresis -71 -KPX Yacute ugrave -71 -KPX Yacute uhungarumlaut -111 -KPX Yacute umacron -71 -KPX Yacute uogonek -111 -KPX Yacute uring -111 -KPX Ydieresis A -120 -KPX Ydieresis Aacute -120 -KPX Ydieresis Abreve -120 -KPX Ydieresis Acircumflex -120 -KPX Ydieresis Adieresis -120 -KPX Ydieresis Agrave -120 -KPX Ydieresis Amacron -120 -KPX Ydieresis Aogonek -120 -KPX Ydieresis Aring -120 -KPX Ydieresis Atilde -120 -KPX Ydieresis O -30 -KPX Ydieresis Oacute -30 -KPX Ydieresis Ocircumflex -30 -KPX Ydieresis Odieresis -30 -KPX Ydieresis Ograve -30 -KPX Ydieresis Ohungarumlaut -30 -KPX Ydieresis Omacron -30 -KPX Ydieresis Oslash -30 -KPX Ydieresis Otilde -30 -KPX Ydieresis a -100 -KPX Ydieresis aacute -100 -KPX Ydieresis abreve -100 -KPX Ydieresis acircumflex -100 -KPX Ydieresis adieresis -60 -KPX Ydieresis agrave -60 -KPX Ydieresis amacron -60 -KPX Ydieresis aogonek -100 -KPX Ydieresis aring -100 -KPX Ydieresis atilde -100 -KPX Ydieresis colon -92 -KPX Ydieresis comma -129 -KPX Ydieresis e -100 -KPX Ydieresis eacute -100 -KPX Ydieresis ecaron -100 -KPX Ydieresis ecircumflex -100 -KPX Ydieresis edieresis -60 -KPX Ydieresis edotaccent -100 -KPX Ydieresis egrave -60 -KPX Ydieresis emacron -60 -KPX Ydieresis eogonek -100 -KPX Ydieresis hyphen -111 -KPX Ydieresis i -55 -KPX Ydieresis iacute -55 -KPX Ydieresis iogonek -55 -KPX Ydieresis o -110 -KPX Ydieresis oacute -110 -KPX Ydieresis ocircumflex -110 -KPX Ydieresis odieresis -70 -KPX Ydieresis ograve -70 -KPX Ydieresis ohungarumlaut -110 -KPX Ydieresis omacron -70 -KPX Ydieresis oslash -110 -KPX Ydieresis otilde -70 -KPX Ydieresis period -129 -KPX Ydieresis semicolon -92 -KPX Ydieresis u -111 -KPX Ydieresis uacute -111 -KPX Ydieresis ucircumflex -111 -KPX Ydieresis udieresis -71 -KPX Ydieresis ugrave -71 -KPX Ydieresis uhungarumlaut -111 -KPX Ydieresis umacron -71 -KPX Ydieresis uogonek -111 -KPX Ydieresis uring -111 -KPX a v -20 -KPX a w -15 -KPX aacute v -20 -KPX aacute w -15 -KPX abreve v -20 -KPX abreve w -15 -KPX acircumflex v -20 -KPX acircumflex w -15 -KPX adieresis v -20 -KPX adieresis w -15 -KPX agrave v -20 -KPX agrave w -15 -KPX amacron v -20 -KPX amacron w -15 -KPX aogonek v -20 -KPX aogonek w -15 -KPX aring v -20 -KPX aring w -15 -KPX atilde v -20 -KPX atilde w -15 -KPX b period -40 -KPX b u -20 -KPX b uacute -20 -KPX b ucircumflex -20 -KPX b udieresis -20 -KPX b ugrave -20 -KPX b uhungarumlaut -20 -KPX b umacron -20 -KPX b uogonek -20 -KPX b uring -20 -KPX b v -15 -KPX c y -15 -KPX c yacute -15 -KPX c ydieresis -15 -KPX cacute y -15 -KPX cacute yacute -15 -KPX cacute ydieresis -15 -KPX ccaron y -15 -KPX ccaron yacute -15 -KPX ccaron ydieresis -15 -KPX ccedilla y -15 -KPX ccedilla yacute -15 -KPX ccedilla ydieresis -15 -KPX comma quotedblright -70 -KPX comma quoteright -70 -KPX e g -15 -KPX e gbreve -15 -KPX e gcommaaccent -15 -KPX e v -25 -KPX e w -25 -KPX e x -15 -KPX e y -15 -KPX e yacute -15 -KPX e ydieresis -15 -KPX eacute g -15 -KPX eacute gbreve -15 -KPX eacute gcommaaccent -15 -KPX eacute v -25 -KPX eacute w -25 -KPX eacute x -15 -KPX eacute y -15 -KPX eacute yacute -15 -KPX eacute ydieresis -15 -KPX ecaron g -15 -KPX ecaron gbreve -15 -KPX ecaron gcommaaccent -15 -KPX ecaron v -25 -KPX ecaron w -25 -KPX ecaron x -15 -KPX ecaron y -15 -KPX ecaron yacute -15 -KPX ecaron ydieresis -15 -KPX ecircumflex g -15 -KPX ecircumflex gbreve -15 -KPX ecircumflex gcommaaccent -15 -KPX ecircumflex v -25 -KPX ecircumflex w -25 -KPX ecircumflex x -15 -KPX ecircumflex y -15 -KPX ecircumflex yacute -15 -KPX ecircumflex ydieresis -15 -KPX edieresis g -15 -KPX edieresis gbreve -15 -KPX edieresis gcommaaccent -15 -KPX edieresis v -25 -KPX edieresis w -25 -KPX edieresis x -15 -KPX edieresis y -15 -KPX edieresis yacute -15 -KPX edieresis ydieresis -15 -KPX edotaccent g -15 -KPX edotaccent gbreve -15 -KPX edotaccent gcommaaccent -15 -KPX edotaccent v -25 -KPX edotaccent w -25 -KPX edotaccent x -15 -KPX edotaccent y -15 -KPX edotaccent yacute -15 -KPX edotaccent ydieresis -15 -KPX egrave g -15 -KPX egrave gbreve -15 -KPX egrave gcommaaccent -15 -KPX egrave v -25 -KPX egrave w -25 -KPX egrave x -15 -KPX egrave y -15 -KPX egrave yacute -15 -KPX egrave ydieresis -15 -KPX emacron g -15 -KPX emacron gbreve -15 -KPX emacron gcommaaccent -15 -KPX emacron v -25 -KPX emacron w -25 -KPX emacron x -15 -KPX emacron y -15 -KPX emacron yacute -15 -KPX emacron ydieresis -15 -KPX eogonek g -15 -KPX eogonek gbreve -15 -KPX eogonek gcommaaccent -15 -KPX eogonek v -25 -KPX eogonek w -25 -KPX eogonek x -15 -KPX eogonek y -15 -KPX eogonek yacute -15 -KPX eogonek ydieresis -15 -KPX f a -10 -KPX f aacute -10 -KPX f abreve -10 -KPX f acircumflex -10 -KPX f adieresis -10 -KPX f agrave -10 -KPX f amacron -10 -KPX f aogonek -10 -KPX f aring -10 -KPX f atilde -10 -KPX f dotlessi -50 -KPX f f -25 -KPX f i -20 -KPX f iacute -20 -KPX f quoteright 55 -KPX g a -5 -KPX g aacute -5 -KPX g abreve -5 -KPX g acircumflex -5 -KPX g adieresis -5 -KPX g agrave -5 -KPX g amacron -5 -KPX g aogonek -5 -KPX g aring -5 -KPX g atilde -5 -KPX gbreve a -5 -KPX gbreve aacute -5 -KPX gbreve abreve -5 -KPX gbreve acircumflex -5 -KPX gbreve adieresis -5 -KPX gbreve agrave -5 -KPX gbreve amacron -5 -KPX gbreve aogonek -5 -KPX gbreve aring -5 -KPX gbreve atilde -5 -KPX gcommaaccent a -5 -KPX gcommaaccent aacute -5 -KPX gcommaaccent abreve -5 -KPX gcommaaccent acircumflex -5 -KPX gcommaaccent adieresis -5 -KPX gcommaaccent agrave -5 -KPX gcommaaccent amacron -5 -KPX gcommaaccent aogonek -5 -KPX gcommaaccent aring -5 -KPX gcommaaccent atilde -5 -KPX h y -5 -KPX h yacute -5 -KPX h ydieresis -5 -KPX i v -25 -KPX iacute v -25 -KPX icircumflex v -25 -KPX idieresis v -25 -KPX igrave v -25 -KPX imacron v -25 -KPX iogonek v -25 -KPX k e -10 -KPX k eacute -10 -KPX k ecaron -10 -KPX k ecircumflex -10 -KPX k edieresis -10 -KPX k edotaccent -10 -KPX k egrave -10 -KPX k emacron -10 -KPX k eogonek -10 -KPX k o -10 -KPX k oacute -10 -KPX k ocircumflex -10 -KPX k odieresis -10 -KPX k ograve -10 -KPX k ohungarumlaut -10 -KPX k omacron -10 -KPX k oslash -10 -KPX k otilde -10 -KPX k y -15 -KPX k yacute -15 -KPX k ydieresis -15 -KPX kcommaaccent e -10 -KPX kcommaaccent eacute -10 -KPX kcommaaccent ecaron -10 -KPX kcommaaccent ecircumflex -10 -KPX kcommaaccent edieresis -10 -KPX kcommaaccent edotaccent -10 -KPX kcommaaccent egrave -10 -KPX kcommaaccent emacron -10 -KPX kcommaaccent eogonek -10 -KPX kcommaaccent o -10 -KPX kcommaaccent oacute -10 -KPX kcommaaccent ocircumflex -10 -KPX kcommaaccent odieresis -10 -KPX kcommaaccent ograve -10 -KPX kcommaaccent ohungarumlaut -10 -KPX kcommaaccent omacron -10 -KPX kcommaaccent oslash -10 -KPX kcommaaccent otilde -10 -KPX kcommaaccent y -15 -KPX kcommaaccent yacute -15 -KPX kcommaaccent ydieresis -15 -KPX l w -10 -KPX lacute w -10 -KPX lcommaaccent w -10 -KPX lslash w -10 -KPX n v -40 -KPX n y -15 -KPX n yacute -15 -KPX n ydieresis -15 -KPX nacute v -40 -KPX nacute y -15 -KPX nacute yacute -15 -KPX nacute ydieresis -15 -KPX ncaron v -40 -KPX ncaron y -15 -KPX ncaron yacute -15 -KPX ncaron ydieresis -15 -KPX ncommaaccent v -40 -KPX ncommaaccent y -15 -KPX ncommaaccent yacute -15 -KPX ncommaaccent ydieresis -15 -KPX ntilde v -40 -KPX ntilde y -15 -KPX ntilde yacute -15 -KPX ntilde ydieresis -15 -KPX o v -15 -KPX o w -25 -KPX o y -10 -KPX o yacute -10 -KPX o ydieresis -10 -KPX oacute v -15 -KPX oacute w -25 -KPX oacute y -10 -KPX oacute yacute -10 -KPX oacute ydieresis -10 -KPX ocircumflex v -15 -KPX ocircumflex w -25 -KPX ocircumflex y -10 -KPX ocircumflex yacute -10 -KPX ocircumflex ydieresis -10 -KPX odieresis v -15 -KPX odieresis w -25 -KPX odieresis y -10 -KPX odieresis yacute -10 -KPX odieresis ydieresis -10 -KPX ograve v -15 -KPX ograve w -25 -KPX ograve y -10 -KPX ograve yacute -10 -KPX ograve ydieresis -10 -KPX ohungarumlaut v -15 -KPX ohungarumlaut w -25 -KPX ohungarumlaut y -10 -KPX ohungarumlaut yacute -10 -KPX ohungarumlaut ydieresis -10 -KPX omacron v -15 -KPX omacron w -25 -KPX omacron y -10 -KPX omacron yacute -10 -KPX omacron ydieresis -10 -KPX oslash v -15 -KPX oslash w -25 -KPX oslash y -10 -KPX oslash yacute -10 -KPX oslash ydieresis -10 -KPX otilde v -15 -KPX otilde w -25 -KPX otilde y -10 -KPX otilde yacute -10 -KPX otilde ydieresis -10 -KPX p y -10 -KPX p yacute -10 -KPX p ydieresis -10 -KPX period quotedblright -70 -KPX period quoteright -70 -KPX quotedblleft A -80 -KPX quotedblleft Aacute -80 -KPX quotedblleft Abreve -80 -KPX quotedblleft Acircumflex -80 -KPX quotedblleft Adieresis -80 -KPX quotedblleft Agrave -80 -KPX quotedblleft Amacron -80 -KPX quotedblleft Aogonek -80 -KPX quotedblleft Aring -80 -KPX quotedblleft Atilde -80 -KPX quoteleft A -80 -KPX quoteleft Aacute -80 -KPX quoteleft Abreve -80 -KPX quoteleft Acircumflex -80 -KPX quoteleft Adieresis -80 -KPX quoteleft Agrave -80 -KPX quoteleft Amacron -80 -KPX quoteleft Aogonek -80 -KPX quoteleft Aring -80 -KPX quoteleft Atilde -80 -KPX quoteleft quoteleft -74 -KPX quoteright d -50 -KPX quoteright dcroat -50 -KPX quoteright l -10 -KPX quoteright lacute -10 -KPX quoteright lcommaaccent -10 -KPX quoteright lslash -10 -KPX quoteright quoteright -74 -KPX quoteright r -50 -KPX quoteright racute -50 -KPX quoteright rcaron -50 -KPX quoteright rcommaaccent -50 -KPX quoteright s -55 -KPX quoteright sacute -55 -KPX quoteright scaron -55 -KPX quoteright scedilla -55 -KPX quoteright scommaaccent -55 -KPX quoteright space -74 -KPX quoteright t -18 -KPX quoteright tcommaaccent -18 -KPX quoteright v -50 -KPX r comma -40 -KPX r g -18 -KPX r gbreve -18 -KPX r gcommaaccent -18 -KPX r hyphen -20 -KPX r period -55 -KPX racute comma -40 -KPX racute g -18 -KPX racute gbreve -18 -KPX racute gcommaaccent -18 -KPX racute hyphen -20 -KPX racute period -55 -KPX rcaron comma -40 -KPX rcaron g -18 -KPX rcaron gbreve -18 -KPX rcaron gcommaaccent -18 -KPX rcaron hyphen -20 -KPX rcaron period -55 -KPX rcommaaccent comma -40 -KPX rcommaaccent g -18 -KPX rcommaaccent gbreve -18 -KPX rcommaaccent gcommaaccent -18 -KPX rcommaaccent hyphen -20 -KPX rcommaaccent period -55 -KPX space A -55 -KPX space Aacute -55 -KPX space Abreve -55 -KPX space Acircumflex -55 -KPX space Adieresis -55 -KPX space Agrave -55 -KPX space Amacron -55 -KPX space Aogonek -55 -KPX space Aring -55 -KPX space Atilde -55 -KPX space T -18 -KPX space Tcaron -18 -KPX space Tcommaaccent -18 -KPX space V -50 -KPX space W -30 -KPX space Y -90 -KPX space Yacute -90 -KPX space Ydieresis -90 -KPX v a -25 -KPX v aacute -25 -KPX v abreve -25 -KPX v acircumflex -25 -KPX v adieresis -25 -KPX v agrave -25 -KPX v amacron -25 -KPX v aogonek -25 -KPX v aring -25 -KPX v atilde -25 -KPX v comma -65 -KPX v e -15 -KPX v eacute -15 -KPX v ecaron -15 -KPX v ecircumflex -15 -KPX v edieresis -15 -KPX v edotaccent -15 -KPX v egrave -15 -KPX v emacron -15 -KPX v eogonek -15 -KPX v o -20 -KPX v oacute -20 -KPX v ocircumflex -20 -KPX v odieresis -20 -KPX v ograve -20 -KPX v ohungarumlaut -20 -KPX v omacron -20 -KPX v oslash -20 -KPX v otilde -20 -KPX v period -65 -KPX w a -10 -KPX w aacute -10 -KPX w abreve -10 -KPX w acircumflex -10 -KPX w adieresis -10 -KPX w agrave -10 -KPX w amacron -10 -KPX w aogonek -10 -KPX w aring -10 -KPX w atilde -10 -KPX w comma -65 -KPX w o -10 -KPX w oacute -10 -KPX w ocircumflex -10 -KPX w odieresis -10 -KPX w ograve -10 -KPX w ohungarumlaut -10 -KPX w omacron -10 -KPX w oslash -10 -KPX w otilde -10 -KPX w period -65 -KPX x e -15 -KPX x eacute -15 -KPX x ecaron -15 -KPX x ecircumflex -15 -KPX x edieresis -15 -KPX x edotaccent -15 -KPX x egrave -15 -KPX x emacron -15 -KPX x eogonek -15 -KPX y comma -65 -KPX y period -65 -KPX yacute comma -65 -KPX yacute period -65 -KPX ydieresis comma -65 -KPX ydieresis period -65 -EndKernPairs -EndKernData -EndFontMetrics diff --git a/application/third_party/dompdf/lib/fonts/Times-Roman.afm.php b/application/third_party/dompdf/lib/fonts/Times-Roman.afm.php deleted file mode 100644 index db367a77..00000000 --- a/application/third_party/dompdf/lib/fonts/Times-Roman.afm.php +++ /dev/null @@ -1,570 +0,0 @@ -<?php return array ( - 'codeToName' => - array ( - 32 => 'space', - 160 => 'space', - 33 => 'exclam', - 34 => 'quotedbl', - 35 => 'numbersign', - 36 => 'dollar', - 37 => 'percent', - 38 => 'ampersand', - 146 => 'quoteright', - 40 => 'parenleft', - 41 => 'parenright', - 42 => 'asterisk', - 43 => 'plus', - 44 => 'comma', - 45 => 'hyphen', - 173 => 'hyphen', - 46 => 'period', - 47 => 'slash', - 48 => 'zero', - 49 => 'one', - 50 => 'two', - 51 => 'three', - 52 => 'four', - 53 => 'five', - 54 => 'six', - 55 => 'seven', - 56 => 'eight', - 57 => 'nine', - 58 => 'colon', - 59 => 'semicolon', - 60 => 'less', - 61 => 'equal', - 62 => 'greater', - 63 => 'question', - 64 => 'at', - 65 => 'A', - 66 => 'B', - 67 => 'C', - 68 => 'D', - 69 => 'E', - 70 => 'F', - 71 => 'G', - 72 => 'H', - 73 => 'I', - 74 => 'J', - 75 => 'K', - 76 => 'L', - 77 => 'M', - 78 => 'N', - 79 => 'O', - 80 => 'P', - 81 => 'Q', - 82 => 'R', - 83 => 'S', - 84 => 'T', - 85 => 'U', - 86 => 'V', - 87 => 'W', - 88 => 'X', - 89 => 'Y', - 90 => 'Z', - 91 => 'bracketleft', - 92 => 'backslash', - 93 => 'bracketright', - 94 => 'asciicircum', - 95 => 'underscore', - 145 => 'quoteleft', - 97 => 'a', - 98 => 'b', - 99 => 'c', - 100 => 'd', - 101 => 'e', - 102 => 'f', - 103 => 'g', - 104 => 'h', - 105 => 'i', - 106 => 'j', - 107 => 'k', - 108 => 'l', - 109 => 'm', - 110 => 'n', - 111 => 'o', - 112 => 'p', - 113 => 'q', - 114 => 'r', - 115 => 's', - 116 => 't', - 117 => 'u', - 118 => 'v', - 119 => 'w', - 120 => 'x', - 121 => 'y', - 122 => 'z', - 123 => 'braceleft', - 124 => 'bar', - 125 => 'braceright', - 126 => 'asciitilde', - 161 => 'exclamdown', - 162 => 'cent', - 163 => 'sterling', - 165 => 'yen', - 131 => 'florin', - 167 => 'section', - 164 => 'currency', - 39 => 'quotesingle', - 147 => 'quotedblleft', - 170 => 'ordfeminine', - 139 => 'guilsinglleft', - 155 => 'guilsinglright', - 150 => 'endash', - 134 => 'dagger', - 135 => 'daggerdbl', - 183 => 'periodcentered', - 182 => 'paragraph', - 149 => 'bullet', - 130 => 'quotesinglbase', - 132 => 'quotedblbase', - 148 => 'quotedblright', - 187 => 'guillemotright', - 133 => 'ellipsis', - 137 => 'perthousand', - 191 => 'questiondown', - 96 => 'grave', - 180 => 'acute', - 136 => 'circumflex', - 152 => 'tilde', - 175 => 'macron', - 168 => 'dieresis', - 184 => 'cedilla', - 151 => 'emdash', - 198 => 'AE', - 216 => 'Oslash', - 140 => 'OE', - 186 => 'ordmasculine', - 230 => 'ae', - 248 => 'oslash', - 156 => 'oe', - 223 => 'germandbls', - 207 => 'Idieresis', - 233 => 'eacute', - 159 => 'Ydieresis', - 247 => 'divide', - 221 => 'Yacute', - 194 => 'Acircumflex', - 225 => 'aacute', - 219 => 'Ucircumflex', - 253 => 'yacute', - 234 => 'ecircumflex', - 220 => 'Udieresis', - 218 => 'Uacute', - 203 => 'Edieresis', - 169 => 'copyright', - 229 => 'aring', - 224 => 'agrave', - 227 => 'atilde', - 154 => 'scaron', - 237 => 'iacute', - 251 => 'ucircumflex', - 226 => 'acircumflex', - 231 => 'ccedilla', - 222 => 'Thorn', - 179 => 'threesuperior', - 210 => 'Ograve', - 192 => 'Agrave', - 215 => 'multiply', - 250 => 'uacute', - 255 => 'ydieresis', - 238 => 'icircumflex', - 202 => 'Ecircumflex', - 228 => 'adieresis', - 235 => 'edieresis', - 205 => 'Iacute', - 177 => 'plusminus', - 166 => 'brokenbar', - 174 => 'registered', - 200 => 'Egrave', - 142 => 'Zcaron', - 208 => 'Eth', - 199 => 'Ccedilla', - 193 => 'Aacute', - 196 => 'Adieresis', - 232 => 'egrave', - 211 => 'Oacute', - 243 => 'oacute', - 239 => 'idieresis', - 212 => 'Ocircumflex', - 217 => 'Ugrave', - 254 => 'thorn', - 178 => 'twosuperior', - 214 => 'Odieresis', - 181 => 'mu', - 236 => 'igrave', - 190 => 'threequarters', - 153 => 'trademark', - 204 => 'Igrave', - 189 => 'onehalf', - 244 => 'ocircumflex', - 241 => 'ntilde', - 201 => 'Eacute', - 188 => 'onequarter', - 138 => 'Scaron', - 176 => 'degree', - 242 => 'ograve', - 249 => 'ugrave', - 209 => 'Ntilde', - 245 => 'otilde', - 195 => 'Atilde', - 197 => 'Aring', - 213 => 'Otilde', - 206 => 'Icircumflex', - 172 => 'logicalnot', - 246 => 'odieresis', - 252 => 'udieresis', - 240 => 'eth', - 158 => 'zcaron', - 185 => 'onesuperior', - 128 => 'Euro', - ), - 'isUnicode' => false, - 'FontName' => 'Times-Roman', - 'FullName' => 'Times Roman', - 'FamilyName' => 'Times', - 'Weight' => 'Roman', - 'ItalicAngle' => '0', - 'IsFixedPitch' => 'false', - 'CharacterSet' => 'ExtendedRoman', - 'FontBBox' => - array ( - 0 => '-168', - 1 => '-218', - 2 => '1000', - 3 => '898', - ), - 'UnderlinePosition' => '-100', - 'UnderlineThickness' => '50', - 'Version' => '002.00', - 'EncodingScheme' => 'WinAnsiEncoding', - 'CapHeight' => '662', - 'XHeight' => '450', - 'Ascender' => '683', - 'Descender' => '-217', - 'StdHW' => '28', - 'StdVW' => '84', - 'StartCharMetrics' => '317', - 'C' => - array ( - 32 => 250.0, - 160 => 250.0, - 33 => 333.0, - 34 => 408.0, - 35 => 500.0, - 36 => 500.0, - 37 => 833.0, - 38 => 778.0, - 146 => 333.0, - 40 => 333.0, - 41 => 333.0, - 42 => 500.0, - 43 => 564.0, - 44 => 250.0, - 45 => 333.0, - 173 => 333.0, - 46 => 250.0, - 47 => 278.0, - 48 => 500.0, - 49 => 500.0, - 50 => 500.0, - 51 => 500.0, - 52 => 500.0, - 53 => 500.0, - 54 => 500.0, - 55 => 500.0, - 56 => 500.0, - 57 => 500.0, - 58 => 278.0, - 59 => 278.0, - 60 => 564.0, - 61 => 564.0, - 62 => 564.0, - 63 => 444.0, - 64 => 921.0, - 65 => 722.0, - 66 => 667.0, - 67 => 667.0, - 68 => 722.0, - 69 => 611.0, - 70 => 556.0, - 71 => 722.0, - 72 => 722.0, - 73 => 333.0, - 74 => 389.0, - 75 => 722.0, - 76 => 611.0, - 77 => 889.0, - 78 => 722.0, - 79 => 722.0, - 80 => 556.0, - 81 => 722.0, - 82 => 667.0, - 83 => 556.0, - 84 => 611.0, - 85 => 722.0, - 86 => 722.0, - 87 => 944.0, - 88 => 722.0, - 89 => 722.0, - 90 => 611.0, - 91 => 333.0, - 92 => 278.0, - 93 => 333.0, - 94 => 469.0, - 95 => 500.0, - 145 => 333.0, - 97 => 444.0, - 98 => 500.0, - 99 => 444.0, - 100 => 500.0, - 101 => 444.0, - 102 => 333.0, - 103 => 500.0, - 104 => 500.0, - 105 => 278.0, - 106 => 278.0, - 107 => 500.0, - 108 => 278.0, - 109 => 778.0, - 110 => 500.0, - 111 => 500.0, - 112 => 500.0, - 113 => 500.0, - 114 => 333.0, - 115 => 389.0, - 116 => 278.0, - 117 => 500.0, - 118 => 500.0, - 119 => 722.0, - 120 => 500.0, - 121 => 500.0, - 122 => 444.0, - 123 => 480.0, - 124 => 200.0, - 125 => 480.0, - 126 => 541.0, - 161 => 333.0, - 162 => 500.0, - 163 => 500.0, - 'fraction' => 167.0, - 165 => 500.0, - 131 => 500.0, - 167 => 500.0, - 164 => 500.0, - 39 => 180.0, - 147 => 444.0, - 170 => 276.0, - 139 => 333.0, - 155 => 333.0, - 'fi' => 556.0, - 'fl' => 556.0, - 150 => 500.0, - 134 => 500.0, - 135 => 500.0, - 183 => 250.0, - 182 => 453.0, - 149 => 350.0, - 130 => 333.0, - 132 => 444.0, - 148 => 444.0, - 187 => 500.0, - 133 => 1000.0, - 137 => 1000.0, - 191 => 444.0, - 96 => 333.0, - 180 => 333.0, - 136 => 333.0, - 152 => 333.0, - 175 => 333.0, - 'breve' => 333.0, - 'dotaccent' => 333.0, - 168 => 333.0, - 'ring' => 333.0, - 184 => 333.0, - 'hungarumlaut' => 333.0, - 'ogonek' => 333.0, - 'caron' => 333.0, - 151 => 1000.0, - 198 => 889.0, - 'Lslash' => 611.0, - 216 => 722.0, - 140 => 889.0, - 186 => 310.0, - 230 => 667.0, - 'dotlessi' => 278.0, - 'lslash' => 278.0, - 248 => 500.0, - 156 => 722.0, - 223 => 500.0, - 207 => 333.0, - 233 => 444.0, - 'abreve' => 444.0, - 'uhungarumlaut' => 500.0, - 'ecaron' => 444.0, - 159 => 722.0, - 247 => 564.0, - 221 => 722.0, - 194 => 722.0, - 225 => 444.0, - 219 => 722.0, - 253 => 500.0, - 'scommaaccent' => 389.0, - 234 => 444.0, - 'Uring' => 722.0, - 220 => 722.0, - 'aogonek' => 444.0, - 218 => 722.0, - 'uogonek' => 500.0, - 203 => 611.0, - 'Dcroat' => 722.0, - 'commaaccent' => 250.0, - 169 => 760.0, - 'Emacron' => 611.0, - 'ccaron' => 444.0, - 229 => 444.0, - 'Ncommaaccent' => 722.0, - 'lacute' => 278.0, - 224 => 444.0, - 'Tcommaaccent' => 611.0, - 'Cacute' => 667.0, - 227 => 444.0, - 'Edotaccent' => 611.0, - 154 => 389.0, - 'scedilla' => 389.0, - 237 => 278.0, - 'lozenge' => 471.0, - 'Rcaron' => 667.0, - 'Gcommaaccent' => 722.0, - 251 => 500.0, - 226 => 444.0, - 'Amacron' => 722.0, - 'rcaron' => 333.0, - 231 => 444.0, - 'Zdotaccent' => 611.0, - 222 => 556.0, - 'Omacron' => 722.0, - 'Racute' => 667.0, - 'Sacute' => 556.0, - 'dcaron' => 588.0, - 'Umacron' => 722.0, - 'uring' => 500.0, - 179 => 300.0, - 210 => 722.0, - 192 => 722.0, - 'Abreve' => 722.0, - 215 => 564.0, - 250 => 500.0, - 'Tcaron' => 611.0, - 'partialdiff' => 476.0, - 255 => 500.0, - 'Nacute' => 722.0, - 238 => 278.0, - 202 => 611.0, - 228 => 444.0, - 235 => 444.0, - 'cacute' => 444.0, - 'nacute' => 500.0, - 'umacron' => 500.0, - 'Ncaron' => 722.0, - 205 => 333.0, - 177 => 564.0, - 166 => 200.0, - 174 => 760.0, - 'Gbreve' => 722.0, - 'Idotaccent' => 333.0, - 'summation' => 600.0, - 200 => 611.0, - 'racute' => 333.0, - 'omacron' => 500.0, - 'Zacute' => 611.0, - 142 => 611.0, - 'greaterequal' => 549.0, - 208 => 722.0, - 199 => 667.0, - 'lcommaaccent' => 278.0, - 'tcaron' => 326.0, - 'eogonek' => 444.0, - 'Uogonek' => 722.0, - 193 => 722.0, - 196 => 722.0, - 232 => 444.0, - 'zacute' => 444.0, - 'iogonek' => 278.0, - 211 => 722.0, - 243 => 500.0, - 'amacron' => 444.0, - 'sacute' => 389.0, - 239 => 278.0, - 212 => 722.0, - 217 => 722.0, - 'Delta' => 612.0, - 254 => 500.0, - 178 => 300.0, - 214 => 722.0, - 181 => 500.0, - 236 => 278.0, - 'ohungarumlaut' => 500.0, - 'Eogonek' => 611.0, - 'dcroat' => 500.0, - 190 => 750.0, - 'Scedilla' => 556.0, - 'lcaron' => 344.0, - 'Kcommaaccent' => 722.0, - 'Lacute' => 611.0, - 153 => 980.0, - 'edotaccent' => 444.0, - 204 => 333.0, - 'Imacron' => 333.0, - 'Lcaron' => 611.0, - 189 => 750.0, - 'lessequal' => 549.0, - 244 => 500.0, - 241 => 500.0, - 'Uhungarumlaut' => 722.0, - 201 => 611.0, - 'emacron' => 444.0, - 'gbreve' => 500.0, - 188 => 750.0, - 138 => 556.0, - 'Scommaaccent' => 556.0, - 'Ohungarumlaut' => 722.0, - 176 => 400.0, - 242 => 500.0, - 'Ccaron' => 667.0, - 249 => 500.0, - 'radical' => 453.0, - 'Dcaron' => 722.0, - 'rcommaaccent' => 333.0, - 209 => 722.0, - 245 => 500.0, - 'Rcommaaccent' => 667.0, - 'Lcommaaccent' => 611.0, - 195 => 722.0, - 'Aogonek' => 722.0, - 197 => 722.0, - 213 => 722.0, - 'zdotaccent' => 444.0, - 'Ecaron' => 611.0, - 'Iogonek' => 333.0, - 'kcommaaccent' => 500.0, - 'minus' => 564.0, - 206 => 333.0, - 'ncaron' => 500.0, - 'tcommaaccent' => 278.0, - 172 => 564.0, - 246 => 500.0, - 252 => 500.0, - 'notequal' => 549.0, - 'gcommaaccent' => 500.0, - 240 => 500.0, - 158 => 444.0, - 'ncommaaccent' => 500.0, - 185 => 300.0, - 'imacron' => 278.0, - 128 => 500.0, - ), - 'CIDtoGID_Compressed' => true, - 'CIDtoGID' => 'eJwDAAAAAAE=', - '_version_' => 4, -); \ No newline at end of file diff --git a/application/third_party/dompdf/lib/fonts/ZapfDingbats.afm b/application/third_party/dompdf/lib/fonts/ZapfDingbats.afm deleted file mode 100644 index b2745053..00000000 --- a/application/third_party/dompdf/lib/fonts/ZapfDingbats.afm +++ /dev/null @@ -1,225 +0,0 @@ -StartFontMetrics 4.1 -Comment Copyright (c) 1985, 1987, 1988, 1989, 1997 Adobe Systems Incorporated. All Rights Reserved. -Comment Creation Date: Thu May 1 15:14:13 1997 -Comment UniqueID 43082 -Comment VMusage 45775 55535 -FontName ZapfDingbats -FullName ITC Zapf Dingbats -FamilyName ZapfDingbats -Weight Medium -ItalicAngle 0 -IsFixedPitch false -CharacterSet Special -FontBBox -1 -143 981 820 -UnderlinePosition -100 -UnderlineThickness 50 -Version 002.000 -Notice Copyright (c) 1985, 1987, 1988, 1989, 1997 Adobe Systems Incorporated. All Rights Reserved.ITC Zapf Dingbats is a registered trademark of International Typeface Corporation. -EncodingScheme FontSpecific -StdHW 28 -StdVW 90 -StartCharMetrics 202 -C 32 ; WX 278 ; N space ; B 0 0 0 0 ; -C 33 ; WX 974 ; N a1 ; B 35 72 939 621 ; -C 34 ; WX 961 ; N a2 ; B 35 81 927 611 ; -C 35 ; WX 974 ; N a202 ; B 35 72 939 621 ; -C 36 ; WX 980 ; N a3 ; B 35 0 945 692 ; -C 37 ; WX 719 ; N a4 ; B 34 139 685 566 ; -C 38 ; WX 789 ; N a5 ; B 35 -14 755 705 ; -C 39 ; WX 790 ; N a119 ; B 35 -14 755 705 ; -C 40 ; WX 791 ; N a118 ; B 35 -13 761 705 ; -C 41 ; WX 690 ; N a117 ; B 34 138 655 553 ; -C 42 ; WX 960 ; N a11 ; B 35 123 925 568 ; -C 43 ; WX 939 ; N a12 ; B 35 134 904 559 ; -C 44 ; WX 549 ; N a13 ; B 29 -11 516 705 ; -C 45 ; WX 855 ; N a14 ; B 34 59 820 632 ; -C 46 ; WX 911 ; N a15 ; B 35 50 876 642 ; -C 47 ; WX 933 ; N a16 ; B 35 139 899 550 ; -C 48 ; WX 911 ; N a105 ; B 35 50 876 642 ; -C 49 ; WX 945 ; N a17 ; B 35 139 909 553 ; -C 50 ; WX 974 ; N a18 ; B 35 104 938 587 ; -C 51 ; WX 755 ; N a19 ; B 34 -13 721 705 ; -C 52 ; WX 846 ; N a20 ; B 36 -14 811 705 ; -C 53 ; WX 762 ; N a21 ; B 35 0 727 692 ; -C 54 ; WX 761 ; N a22 ; B 35 0 727 692 ; -C 55 ; WX 571 ; N a23 ; B -1 -68 571 661 ; -C 56 ; WX 677 ; N a24 ; B 36 -13 642 705 ; -C 57 ; WX 763 ; N a25 ; B 35 0 728 692 ; -C 58 ; WX 760 ; N a26 ; B 35 0 726 692 ; -C 59 ; WX 759 ; N a27 ; B 35 0 725 692 ; -C 60 ; WX 754 ; N a28 ; B 35 0 720 692 ; -C 61 ; WX 494 ; N a6 ; B 35 0 460 692 ; -C 62 ; WX 552 ; N a7 ; B 35 0 517 692 ; -C 63 ; WX 537 ; N a8 ; B 35 0 503 692 ; -C 64 ; WX 577 ; N a9 ; B 35 96 542 596 ; -C 65 ; WX 692 ; N a10 ; B 35 -14 657 705 ; -C 66 ; WX 786 ; N a29 ; B 35 -14 751 705 ; -C 67 ; WX 788 ; N a30 ; B 35 -14 752 705 ; -C 68 ; WX 788 ; N a31 ; B 35 -14 753 705 ; -C 69 ; WX 790 ; N a32 ; B 35 -14 756 705 ; -C 70 ; WX 793 ; N a33 ; B 35 -13 759 705 ; -C 71 ; WX 794 ; N a34 ; B 35 -13 759 705 ; -C 72 ; WX 816 ; N a35 ; B 35 -14 782 705 ; -C 73 ; WX 823 ; N a36 ; B 35 -14 787 705 ; -C 74 ; WX 789 ; N a37 ; B 35 -14 754 705 ; -C 75 ; WX 841 ; N a38 ; B 35 -14 807 705 ; -C 76 ; WX 823 ; N a39 ; B 35 -14 789 705 ; -C 77 ; WX 833 ; N a40 ; B 35 -14 798 705 ; -C 78 ; WX 816 ; N a41 ; B 35 -13 782 705 ; -C 79 ; WX 831 ; N a42 ; B 35 -14 796 705 ; -C 80 ; WX 923 ; N a43 ; B 35 -14 888 705 ; -C 81 ; WX 744 ; N a44 ; B 35 0 710 692 ; -C 82 ; WX 723 ; N a45 ; B 35 0 688 692 ; -C 83 ; WX 749 ; N a46 ; B 35 0 714 692 ; -C 84 ; WX 790 ; N a47 ; B 34 -14 756 705 ; -C 85 ; WX 792 ; N a48 ; B 35 -14 758 705 ; -C 86 ; WX 695 ; N a49 ; B 35 -14 661 706 ; -C 87 ; WX 776 ; N a50 ; B 35 -6 741 699 ; -C 88 ; WX 768 ; N a51 ; B 35 -7 734 699 ; -C 89 ; WX 792 ; N a52 ; B 35 -14 757 705 ; -C 90 ; WX 759 ; N a53 ; B 35 0 725 692 ; -C 91 ; WX 707 ; N a54 ; B 35 -13 672 704 ; -C 92 ; WX 708 ; N a55 ; B 35 -14 672 705 ; -C 93 ; WX 682 ; N a56 ; B 35 -14 647 705 ; -C 94 ; WX 701 ; N a57 ; B 35 -14 666 705 ; -C 95 ; WX 826 ; N a58 ; B 35 -14 791 705 ; -C 96 ; WX 815 ; N a59 ; B 35 -14 780 705 ; -C 97 ; WX 789 ; N a60 ; B 35 -14 754 705 ; -C 98 ; WX 789 ; N a61 ; B 35 -14 754 705 ; -C 99 ; WX 707 ; N a62 ; B 34 -14 673 705 ; -C 100 ; WX 687 ; N a63 ; B 36 0 651 692 ; -C 101 ; WX 696 ; N a64 ; B 35 0 661 691 ; -C 102 ; WX 689 ; N a65 ; B 35 0 655 692 ; -C 103 ; WX 786 ; N a66 ; B 34 -14 751 705 ; -C 104 ; WX 787 ; N a67 ; B 35 -14 752 705 ; -C 105 ; WX 713 ; N a68 ; B 35 -14 678 705 ; -C 106 ; WX 791 ; N a69 ; B 35 -14 756 705 ; -C 107 ; WX 785 ; N a70 ; B 36 -14 751 705 ; -C 108 ; WX 791 ; N a71 ; B 35 -14 757 705 ; -C 109 ; WX 873 ; N a72 ; B 35 -14 838 705 ; -C 110 ; WX 761 ; N a73 ; B 35 0 726 692 ; -C 111 ; WX 762 ; N a74 ; B 35 0 727 692 ; -C 112 ; WX 762 ; N a203 ; B 35 0 727 692 ; -C 113 ; WX 759 ; N a75 ; B 35 0 725 692 ; -C 114 ; WX 759 ; N a204 ; B 35 0 725 692 ; -C 115 ; WX 892 ; N a76 ; B 35 0 858 705 ; -C 116 ; WX 892 ; N a77 ; B 35 -14 858 692 ; -C 117 ; WX 788 ; N a78 ; B 35 -14 754 705 ; -C 118 ; WX 784 ; N a79 ; B 35 -14 749 705 ; -C 119 ; WX 438 ; N a81 ; B 35 -14 403 705 ; -C 120 ; WX 138 ; N a82 ; B 35 0 104 692 ; -C 121 ; WX 277 ; N a83 ; B 35 0 242 692 ; -C 122 ; WX 415 ; N a84 ; B 35 0 380 692 ; -C 123 ; WX 392 ; N a97 ; B 35 263 357 705 ; -C 124 ; WX 392 ; N a98 ; B 34 263 357 705 ; -C 125 ; WX 668 ; N a99 ; B 35 263 633 705 ; -C 126 ; WX 668 ; N a100 ; B 36 263 634 705 ; -C 128 ; WX 390 ; N a89 ; B 35 -14 356 705 ; -C 129 ; WX 390 ; N a90 ; B 35 -14 355 705 ; -C 130 ; WX 317 ; N a93 ; B 35 0 283 692 ; -C 131 ; WX 317 ; N a94 ; B 35 0 283 692 ; -C 132 ; WX 276 ; N a91 ; B 35 0 242 692 ; -C 133 ; WX 276 ; N a92 ; B 35 0 242 692 ; -C 134 ; WX 509 ; N a205 ; B 35 0 475 692 ; -C 135 ; WX 509 ; N a85 ; B 35 0 475 692 ; -C 136 ; WX 410 ; N a206 ; B 35 0 375 692 ; -C 137 ; WX 410 ; N a86 ; B 35 0 375 692 ; -C 138 ; WX 234 ; N a87 ; B 35 -14 199 705 ; -C 139 ; WX 234 ; N a88 ; B 35 -14 199 705 ; -C 140 ; WX 334 ; N a95 ; B 35 0 299 692 ; -C 141 ; WX 334 ; N a96 ; B 35 0 299 692 ; -C 161 ; WX 732 ; N a101 ; B 35 -143 697 806 ; -C 162 ; WX 544 ; N a102 ; B 56 -14 488 706 ; -C 163 ; WX 544 ; N a103 ; B 34 -14 508 705 ; -C 164 ; WX 910 ; N a104 ; B 35 40 875 651 ; -C 165 ; WX 667 ; N a106 ; B 35 -14 633 705 ; -C 166 ; WX 760 ; N a107 ; B 35 -14 726 705 ; -C 167 ; WX 760 ; N a108 ; B 0 121 758 569 ; -C 168 ; WX 776 ; N a112 ; B 35 0 741 705 ; -C 169 ; WX 595 ; N a111 ; B 34 -14 560 705 ; -C 170 ; WX 694 ; N a110 ; B 35 -14 659 705 ; -C 171 ; WX 626 ; N a109 ; B 34 0 591 705 ; -C 172 ; WX 788 ; N a120 ; B 35 -14 754 705 ; -C 173 ; WX 788 ; N a121 ; B 35 -14 754 705 ; -C 174 ; WX 788 ; N a122 ; B 35 -14 754 705 ; -C 175 ; WX 788 ; N a123 ; B 35 -14 754 705 ; -C 176 ; WX 788 ; N a124 ; B 35 -14 754 705 ; -C 177 ; WX 788 ; N a125 ; B 35 -14 754 705 ; -C 178 ; WX 788 ; N a126 ; B 35 -14 754 705 ; -C 179 ; WX 788 ; N a127 ; B 35 -14 754 705 ; -C 180 ; WX 788 ; N a128 ; B 35 -14 754 705 ; -C 181 ; WX 788 ; N a129 ; B 35 -14 754 705 ; -C 182 ; WX 788 ; N a130 ; B 35 -14 754 705 ; -C 183 ; WX 788 ; N a131 ; B 35 -14 754 705 ; -C 184 ; WX 788 ; N a132 ; B 35 -14 754 705 ; -C 185 ; WX 788 ; N a133 ; B 35 -14 754 705 ; -C 186 ; WX 788 ; N a134 ; B 35 -14 754 705 ; -C 187 ; WX 788 ; N a135 ; B 35 -14 754 705 ; -C 188 ; WX 788 ; N a136 ; B 35 -14 754 705 ; -C 189 ; WX 788 ; N a137 ; B 35 -14 754 705 ; -C 190 ; WX 788 ; N a138 ; B 35 -14 754 705 ; -C 191 ; WX 788 ; N a139 ; B 35 -14 754 705 ; -C 192 ; WX 788 ; N a140 ; B 35 -14 754 705 ; -C 193 ; WX 788 ; N a141 ; B 35 -14 754 705 ; -C 194 ; WX 788 ; N a142 ; B 35 -14 754 705 ; -C 195 ; WX 788 ; N a143 ; B 35 -14 754 705 ; -C 196 ; WX 788 ; N a144 ; B 35 -14 754 705 ; -C 197 ; WX 788 ; N a145 ; B 35 -14 754 705 ; -C 198 ; WX 788 ; N a146 ; B 35 -14 754 705 ; -C 199 ; WX 788 ; N a147 ; B 35 -14 754 705 ; -C 200 ; WX 788 ; N a148 ; B 35 -14 754 705 ; -C 201 ; WX 788 ; N a149 ; B 35 -14 754 705 ; -C 202 ; WX 788 ; N a150 ; B 35 -14 754 705 ; -C 203 ; WX 788 ; N a151 ; B 35 -14 754 705 ; -C 204 ; WX 788 ; N a152 ; B 35 -14 754 705 ; -C 205 ; WX 788 ; N a153 ; B 35 -14 754 705 ; -C 206 ; WX 788 ; N a154 ; B 35 -14 754 705 ; -C 207 ; WX 788 ; N a155 ; B 35 -14 754 705 ; -C 208 ; WX 788 ; N a156 ; B 35 -14 754 705 ; -C 209 ; WX 788 ; N a157 ; B 35 -14 754 705 ; -C 210 ; WX 788 ; N a158 ; B 35 -14 754 705 ; -C 211 ; WX 788 ; N a159 ; B 35 -14 754 705 ; -C 212 ; WX 894 ; N a160 ; B 35 58 860 634 ; -C 213 ; WX 838 ; N a161 ; B 35 152 803 540 ; -C 214 ; WX 1016 ; N a163 ; B 34 152 981 540 ; -C 215 ; WX 458 ; N a164 ; B 35 -127 422 820 ; -C 216 ; WX 748 ; N a196 ; B 35 94 698 597 ; -C 217 ; WX 924 ; N a165 ; B 35 140 890 552 ; -C 218 ; WX 748 ; N a192 ; B 35 94 698 597 ; -C 219 ; WX 918 ; N a166 ; B 35 166 884 526 ; -C 220 ; WX 927 ; N a167 ; B 35 32 892 660 ; -C 221 ; WX 928 ; N a168 ; B 35 129 891 562 ; -C 222 ; WX 928 ; N a169 ; B 35 128 893 563 ; -C 223 ; WX 834 ; N a170 ; B 35 155 799 537 ; -C 224 ; WX 873 ; N a171 ; B 35 93 838 599 ; -C 225 ; WX 828 ; N a172 ; B 35 104 791 588 ; -C 226 ; WX 924 ; N a173 ; B 35 98 889 594 ; -C 227 ; WX 924 ; N a162 ; B 35 98 889 594 ; -C 228 ; WX 917 ; N a174 ; B 35 0 882 692 ; -C 229 ; WX 930 ; N a175 ; B 35 84 896 608 ; -C 230 ; WX 931 ; N a176 ; B 35 84 896 608 ; -C 231 ; WX 463 ; N a177 ; B 35 -99 429 791 ; -C 232 ; WX 883 ; N a178 ; B 35 71 848 623 ; -C 233 ; WX 836 ; N a179 ; B 35 44 802 648 ; -C 234 ; WX 836 ; N a193 ; B 35 44 802 648 ; -C 235 ; WX 867 ; N a180 ; B 35 101 832 591 ; -C 236 ; WX 867 ; N a199 ; B 35 101 832 591 ; -C 237 ; WX 696 ; N a181 ; B 35 44 661 648 ; -C 238 ; WX 696 ; N a200 ; B 35 44 661 648 ; -C 239 ; WX 874 ; N a182 ; B 35 77 840 619 ; -C 241 ; WX 874 ; N a201 ; B 35 73 840 615 ; -C 242 ; WX 760 ; N a183 ; B 35 0 725 692 ; -C 243 ; WX 946 ; N a184 ; B 35 160 911 533 ; -C 244 ; WX 771 ; N a197 ; B 34 37 736 655 ; -C 245 ; WX 865 ; N a185 ; B 35 207 830 481 ; -C 246 ; WX 771 ; N a194 ; B 34 37 736 655 ; -C 247 ; WX 888 ; N a198 ; B 34 -19 853 712 ; -C 248 ; WX 967 ; N a186 ; B 35 124 932 568 ; -C 249 ; WX 888 ; N a195 ; B 34 -19 853 712 ; -C 250 ; WX 831 ; N a187 ; B 35 113 796 579 ; -C 251 ; WX 873 ; N a188 ; B 36 118 838 578 ; -C 252 ; WX 927 ; N a189 ; B 35 150 891 542 ; -C 253 ; WX 970 ; N a190 ; B 35 76 931 616 ; -C 254 ; WX 918 ; N a191 ; B 34 99 884 593 ; -EndCharMetrics -EndFontMetrics diff --git a/application/third_party/dompdf/lib/fonts/dompdf_font_family_cache.dist.php b/application/third_party/dompdf/lib/fonts/dompdf_font_family_cache.dist.php deleted file mode 100644 index d634e889..00000000 --- a/application/third_party/dompdf/lib/fonts/dompdf_font_family_cache.dist.php +++ /dev/null @@ -1,92 +0,0 @@ -<?php return array ( - 'sans-serif' => array ( - 'normal' => DOMPDF_FONT_DIR . 'Helvetica', - 'bold' => DOMPDF_FONT_DIR . 'Helvetica-Bold', - 'italic' => DOMPDF_FONT_DIR . 'Helvetica-Oblique', - 'bold_italic' => DOMPDF_FONT_DIR . 'Helvetica-BoldOblique' - ), - 'times' => array ( - 'normal' => DOMPDF_FONT_DIR . 'Times-Roman', - 'bold' => DOMPDF_FONT_DIR . 'Times-Bold', - 'italic' => DOMPDF_FONT_DIR . 'Times-Italic', - 'bold_italic' => DOMPDF_FONT_DIR . 'Times-BoldItalic' - ), - 'times-roman' => array ( - 'normal' => DOMPDF_FONT_DIR . 'Times-Roman', - 'bold' => DOMPDF_FONT_DIR . 'Times-Bold', - 'italic' => DOMPDF_FONT_DIR . 'Times-Italic', - 'bold_italic' => DOMPDF_FONT_DIR . 'Times-BoldItalic' - ), - 'courier' => array ( - 'normal' => DOMPDF_FONT_DIR . 'Courier', - 'bold' => DOMPDF_FONT_DIR . 'Courier-Bold', - 'italic' => DOMPDF_FONT_DIR . 'Courier-Oblique', - 'bold_italic' => DOMPDF_FONT_DIR . 'Courier-BoldOblique' - ), - 'helvetica' => array ( - 'normal' => DOMPDF_FONT_DIR . 'Helvetica', - 'bold' => DOMPDF_FONT_DIR . 'Helvetica-Bold', - 'italic' => DOMPDF_FONT_DIR . 'Helvetica-Oblique', - 'bold_italic' => DOMPDF_FONT_DIR . 'Helvetica-BoldOblique' - ), - 'zapfdingbats' => array ( - 'normal' => DOMPDF_FONT_DIR . 'ZapfDingbats', - 'bold' => DOMPDF_FONT_DIR . 'ZapfDingbats', - 'italic' => DOMPDF_FONT_DIR . 'ZapfDingbats', - 'bold_italic' => DOMPDF_FONT_DIR . 'ZapfDingbats' - ), - 'symbol' => array ( - 'normal' => DOMPDF_FONT_DIR . 'Symbol', - 'bold' => DOMPDF_FONT_DIR . 'Symbol', - 'italic' => DOMPDF_FONT_DIR . 'Symbol', - 'bold_italic' => DOMPDF_FONT_DIR . 'Symbol' - ), - 'serif' => array ( - 'normal' => DOMPDF_FONT_DIR . 'Times-Roman', - 'bold' => DOMPDF_FONT_DIR . 'Times-Bold', - 'italic' => DOMPDF_FONT_DIR . 'Times-Italic', - 'bold_italic' => DOMPDF_FONT_DIR . 'Times-BoldItalic' - ), - 'monospace' => array ( - 'normal' => DOMPDF_FONT_DIR . 'Courier', - 'bold' => DOMPDF_FONT_DIR . 'Courier-Bold', - 'italic' => DOMPDF_FONT_DIR . 'Courier-Oblique', - 'bold_italic' => DOMPDF_FONT_DIR . 'Courier-BoldOblique' - ), - 'fixed' => array ( - 'normal' => DOMPDF_FONT_DIR . 'Courier', - 'bold' => DOMPDF_FONT_DIR . 'Courier-Bold', - 'italic' => DOMPDF_FONT_DIR . 'Courier-Oblique', - 'bold_italic' => DOMPDF_FONT_DIR . 'Courier-BoldOblique' - ) -) - -/* The proper way for web browser environment independent font handling in html/css is, - * to defining a font search path ending in serif, sans-serif, or monospace, e.g.: - * <style>body {font-family: Verdana,Arial,Helvetica,sans-serif;}</style> - * - * For more satisfying results on html files without proper font search path, - * popular fonts which are candidates for further font aliases similar to - * 'sans-serif' and 'helvetica' above might be: - * - * See - * http://www.codestyle.org/css/font-family/index.shtml - * http://mondaybynoon.com/2007/04/02/linux-font-equivalents-to-popular-web-typefaces/ - * C:\Windows\Fonts - * - * Times: - * serif, times, times-roman, times, times new roman, georgia, garamond, ms reference serif, - * palatino, palatino linotype, dejavu serif, freeserif, liberation serif, luxi serif, - * century schoolbook, new century schoolbook - * - * Helvetica: - * sans-serif, helvetica, helvetica, microsoft sans serif, verdana, arial, tahoma, - * trebuchet ms, lucida sans, ms reference sans serif, lucida grande, freesans, - * liberation sans, dejavu sans, luxi sans, lucida - * - * Courier: - * monospace, fixed, courier, courier new, lucida console, lucida sans typewriter, freeMono, - * fixed, terminal, dejavu sans mono, liberation mono, luxi mono - */ - -?> \ No newline at end of file diff --git a/application/third_party/dompdf/lib/fonts/log.htm b/application/third_party/dompdf/lib/fonts/log.htm deleted file mode 100644 index 5dc9a305..00000000 --- a/application/third_party/dompdf/lib/fonts/log.htm +++ /dev/null @@ -1,10 +0,0 @@ -<span style='color: #900'>14,592 KB</span> <span style='color: #090'>244.4260 ms</span><br /><div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;"> - -<h4>A PHP Error was encountered</h4> - -<p>Severity: Warning</p> -<p>Message: explode() expects parameter 2 to be string, array given</p> -<p>Filename: include/style.cls.php</p> -<p>Line Number: 948</p> - -</div> \ No newline at end of file diff --git a/application/third_party/dompdf/lib/fonts/mustRead.html b/application/third_party/dompdf/lib/fonts/mustRead.html deleted file mode 100644 index b9f4ba2a..00000000 --- a/application/third_party/dompdf/lib/fonts/mustRead.html +++ /dev/null @@ -1,17 +0,0 @@ -<html> - <head> - <meta http-equiv="content-type" content="text/html;charset=iso-8859-1"> - <meta name="generator" content="Adobe GoLive 4"> - <title>Core 14 AFM Files - ReadMe</title> - </head> - <body bgcolor="white"> - <font color="white">or</font> - <table border="0" cellpadding="0" cellspacing="2"> - <tr> - <td width="40"></td> - <td width="300">This file and the 14 PostScript(R) AFM files it accompanies may be used, copied, and distributed for any purpose and without charge, with or without modification, provided that all copyright notices are retained; that the AFM files are not distributed without this file; that all modifications to this file or any of the AFM files are prominently noted in the modified file(s); and that this paragraph is not modified. Adobe Systems has no responsibility or obligation to support the use of the AFM files. <font color="white">Col</font></td> - </tr> - </table> - <p>Source <a href="http://www.adobe.com/devnet/font/#pcfi">http://www.adobe.com/devnet/font/#pcfi</a></p> -</body> -</html> \ No newline at end of file diff --git a/application/third_party/dompdf/lib/res/broken_image.png b/application/third_party/dompdf/lib/res/broken_image.png deleted file mode 100644 index eda02feb..00000000 Binary files a/application/third_party/dompdf/lib/res/broken_image.png and /dev/null differ diff --git a/application/third_party/dompdf/lib/res/html.css b/application/third_party/dompdf/lib/res/html.css deleted file mode 100644 index d8aa95f9..00000000 --- a/application/third_party/dompdf/lib/res/html.css +++ /dev/null @@ -1,427 +0,0 @@ -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: html.css,v $ - * Created on: 2004-08-04 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * 1998 - Netscape Communications Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Originally from mozilla (http://www.mozilla.org). Original code was - * licensed under the NPL, with the option of release under the GPL or LGPL. - * This file is hence released under the LGPL. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is - * Netscape Communications Corporation. - * Portions created by the Initial Developer are Copyright (C) 1998 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * Blake Ross <BlakeR1234@aol.com> - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - * @version 0.3 - */ - -/* $Id: html.css,v 1.4 2006-04-05 20:09:00 benjcarson Exp $ */ - -@page { - margin: 1.2cm; -} - -html { - display: -dompdf-page; - counter-increment: page; -} - -/* blocks */ - -div, map, dt, isindex { - display: block; -} - -body { - page-break-before: avoid; - display: block; -} - -p, dl, multicol { - display: block; - margin: 1em 0; -} - -dd { - display: block; - margin-left: 40px; -} - -blockquote { - display: block; - margin: 1em 40px; -} - -address { - display: block; - font-style: italic; -} - -center { - display: block; - text-align: center; -} - -blockquote[type=cite] { - display: block; - margin: 1em 0px; - padding-left: 1em; - border-left: solid; - border-color: blue; - border-width: thin; -} - -h1, h2, h3, h4, h5, h6 { - display: block; - font-weight: bold; -} - -h1 { - font-size: 2em; - margin: .67em 0; -} - -h2 { - font-size: 1.5em; - margin: .83em 0; -} - -h3 { - font-size: 1.17em; - margin: 1em 0; -} - -h4 { - margin: 1.33em 0; -} - -h5 { - font-size: 0.83em; - margin: 1.67em 0; -} - -h6 { - font-size: 0.67em; - margin: 2.33em 0; -} - -listing { - display: block; - font-family: fixed; - font-size: medium; - white-space: pre; - margin: 1em 0; -} - -plaintext, xmp, pre { - display: block; - font-family: fixed; - white-space: pre; - margin: 1em 0; -} - -/* tables */ - -table { - display: table; - border-spacing: 2px; - border-collapse: separate; - margin-top: 0; - margin-bottom: 0; - text-indent: 0; - text-align: left; /* quirk */ -} - -table[border] { - border-style: outset; - border-color: gray; -} - -/* This won't work (???) */ -/* -table[border] td, -table[border] th { - border: 1pt solid grey; -}*/ - -/* make sure backgrounds are inherited in tables -- see bug 4510 */ -td, th, tr { - background: inherit; -} - -/* caption inherits from table not table-outer */ -caption { - display: table-caption; - text-align: center; -} - -tr { - display: table-row; - vertical-align: inherit; -} - -col { - display: table-column; -} - -colgroup { - display: table-column-group; -} - -tbody { - display: table-row-group; - vertical-align: middle; -} - -thead { - display: table-header-group; - vertical-align: middle; -} - -tfoot { - display: table-footer-group; - vertical-align: middle; -} - -/* To simulate tbody auto-insertion */ -table > tr { - vertical-align: middle; -} - -td { - display: table-cell; - vertical-align: inherit; - text-align: inherit; - padding: 1px; -} - -th { - display: table-cell; - vertical-align: inherit; - font-weight: bold; - padding: 1px; - text-align: center; -} - -/* inlines */ -q { - quotes: '"' '"' "'" "'"; /* FIXME only the first level is used */ -} - -q:before { - content: open-quote; -} - -q:after { - content: close-quote; -} - -a:link { - color: #00c; - text-decoration: underline; -} - -b, strong { - font-weight: bolder; -} - -i, cite, em, var, dfn { - font-style: italic; -} - -tt, code, kbd, samp { - font-family: fixed; -} - -u, ins { - text-decoration: underline; -} - -s, strike, del { - text-decoration: line-through; -} - -blink { - text-decoration: blink; -} - -big { - font-size: larger; -} - -small { - font-size: smaller; -} - -sub { - vertical-align: sub; - font-size: smaller; - line-height: normal; -} - -sup { - vertical-align: super; - font-size: smaller; - line-height: normal; -} - -nobr { - white-space: nowrap; -} - -/* lists */ - -ul, menu, dir { - display: block; - list-style-type: disc; - margin: 1em 0; - padding-left: 40px; -} - -ol { - display: block; - list-style-type: decimal; - margin: 1em 0; - padding-left: 40px; -} - -li { - display: list-item; -} - -/* nested lists have no top/bottom margins */ -ul ul, ul ol, ul dir, ul menu, ul dl, -ol ul, ol ol, ol dir, ol menu, ol dl, -dir ul, dir ol, dir dir, dir menu, dir dl, -menu ul, menu ol, menu dir, menu menu, menu dl, -dl ul, dl ol, dl dir, dl menu, dl dl { - margin-top: 0; - margin-bottom: 0; -} - -/* 2 deep unordered lists use a circle */ -ol ul, ul ul, menu ul, dir ul, -ol menu, ul menu, menu menu, dir menu, -ol dir, ul dir, menu dir, dir dir { - list-style-type: circle; -} - -/* 3 deep (or more) unordered lists use a square */ -ol ol ul, ol ul ul, ol menu ul, ol dir ul, -ol ol menu, ol ul menu, ol menu menu, ol dir menu, -ol ol dir, ol ul dir, ol menu dir, ol dir dir, -ul ol ul, ul ul ul, ul menu ul, ul dir ul, -ul ol menu, ul ul menu, ul menu menu, ul dir menu, -ul ol dir, ul ul dir, ul menu dir, ul dir dir, -menu ol ul, menu ul ul, menu menu ul, menu dir ul, -menu ol menu, menu ul menu, menu menu menu, menu dir menu, -menu ol dir, menu ul dir, menu menu dir, menu dir dir, -dir ol ul, dir ul ul, dir menu ul, dir dir ul, -dir ol menu, dir ul menu, dir menu menu, dir dir menu, -dir ol dir, dir ul dir, dir menu dir, dir dir dir { - list-style-type: square; -} - -/* forms */ - -/* -input[type=text] { - border: 1pt solid black; - background-color: white; -} - -input[type=text]:before { - content: attr(value); -}*/ - -fieldset { - display: block; - margin-left: 2px; - margin-right: 2px; - padding: 0.35em 0.625em 0.75em; - border: 1pt groove #666; -} - -fieldset > legend { - padding-left: 2px; - padding-right: 2px; - min-width: 1em; - max-width: none; - height: auto; - min-height: 0; - max-height: none; - white-space: nowrap; - margin-top: -1.0em; - background: white; -} - -legend { - display: inline-block; -} - - -/* leafs */ - -hr { - display: block; - height: 2px; - border: 1px inset; - margin: 0.5em auto 0.5em auto; -} - -iframe { - border: 2px inset; -} - -noframes { - display: none; -} - -br { - display: -dompdf-br; -} - -img, img_generated { - display: -dompdf-image; -} - -dompdf_generated { - display: inline; -} - -/* hidden elements */ -area, base, basefont, head, meta, script, style, title, -noembed, noscript, param { - display: none; -} \ No newline at end of file diff --git a/application/third_party/dompdf/lib/ttf2ufm/README.TXT b/application/third_party/dompdf/lib/ttf2ufm/README.TXT deleted file mode 100644 index be9839b6..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/README.TXT +++ /dev/null @@ -1,24 +0,0 @@ -To embed TrueType fonts (.TTF) files, you need to extract the font metrics and -build the required tables using the provided utility (/fonts/ttf2ufm). - -TTF2UFM is a modified version of Mark Heath's TTF 2 PT1 converter -(http://ttf2pt1.sourceforge.net/) by Steven Wittens <steven@acko.net> -(http://www.acko.net/blog/ufpdf). ttf2ufm, is included in /ttf2ufm-src. -The /fonts/ttf2ufm folder contains a compiled Windows binary. -TTF 2 UFM is identical to TTF 2 PT1 except that it also generates a .ufm file -for usage with makefontuni.php. - - -Setting up a Truetype font for usage with TCPDF: - 1) Generate the font's .ufm metrics file by processing it with the provided - ttf2ufm program (modified ttf2pt1). For example: - $ ttf2ufm -a -F myfont.ttf - 2) Run makefontuni.php with the .ttf and .ufm filenames as argument: - $ php -q makefontuni.php myfont.ttf myfont.ufm - 3) Copy the resulting .php, .z and .ctg.z file to the TCPDF font directory. - 4) Rename php font files variations for bold and italic using the following schema: - [basic-font-name]b.php for bold variation - [basic-font-name]i.php for oblique variation - [basic-font-name]bi.php for bold oblique variation - 5) Convert all fonts filenames to lowercase. - \ No newline at end of file diff --git a/application/third_party/dompdf/lib/ttf2ufm/bin/ttf2ufm.exe b/application/third_party/dompdf/lib/ttf2ufm/bin/ttf2ufm.exe deleted file mode 100644 index ad623592..00000000 Binary files a/application/third_party/dompdf/lib/ttf2ufm/bin/ttf2ufm.exe and /dev/null differ diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/CHANGES b/application/third_party/dompdf/lib/ttf2ufm/src/CHANGES deleted file mode 100644 index e69de29b..00000000 diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/CHANGES.html b/application/third_party/dompdf/lib/ttf2ufm/src/CHANGES.html deleted file mode 100644 index c638b6d4..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/CHANGES.html +++ /dev/null @@ -1,815 +0,0 @@ -<HTML> -<HEAD> -<TITLE> -TTF2PT1 - CHANGES history -</TITLE> -</HEAD> -<BODY> -<H2> -TTF2PT1 - CHANGES history -</H2> - -<! -(Do not edit this file, it is generated from CHANGES.html!!!) -> - -<H4> -3.4.4 -- December 31, 2003 -</H4> -<! -------- -> - -<b>New features:</b> -<ul> -<li> Improved the auto-vectoring (-OV) alrogithm. -<li> Allow use of any encoding table of format 4 in the ttf parser. -<li> Take the first available format 4 encoding table if no known - table is found in the ttf parser. -<li> The ttf parser lists the available encodings if no supported - encoding table is found. This can be used to list the encodings in - any font by specifying a bogus explicit PID/EID, such as - with option <b>-l plane+pid=50,eid=50</b>. -</ul> - -<b>Bug fixes:</b> -<ul> -<li> Fix to build all the features on Windows MS C++, by Tomoo Amano. -<li> Fix for a null pointer in the encodings, bad inner loop variable. -<li> Unified the parsing of font name strings and improved the checks - against invalid characters. -</ul> - -<H4> -3.4.3 -- December 2, 2002 -</H4> -<! -------- -> - -<b>New features:</b> -<ul> -<li> <tt>scripts/forceiso</tt> got an optional argument to select the - format of the names for glyphs without standard Latin-1 names. -</ul> - -<b>Bug fixes:</b> -<ul> -<li> Changed the glyph names in scripts/forceiso to match those in ttf2pt1. -<li> Included the missing directory app/TeX. -</ul> - -<H4> -3.4.2 -- August 30, 2002 -</H4> -<! -------- -> - -<b>New features:</b> -<ul> -<li> New map for T2A_compat encoding (for Cyrillic LaTeX) by Mikhail - Umorin. -<li> Scripts supporting font conversion for CJK-LaTeX, by Mike Fabian - from SuSE. -</ul> - -<b>Bug fixes:</b> -<ul> -<li> Explicit owner/group/permissions are used to install directories. -<li> In scripts/convert fixed the addition of encoding name to the font - name for the external encoding maps, was missing "/" at the start. -<li> Fixed the divergence between two copies of UniqueID. -<li> Fixed the recovery after defective empty contours. -</ul> - -<H4> -3.4.1 -- June 13, 2002 -</H4> -<! -------- -> - -<b>New features:</b> -<ul> -<li> Added Autotrace support for the bitmap fonts (-OZ). It's horrible. -<li> Added vectorization of bitmap fonts (-OV) - functionally the same thing as - autotrace but home-grown. Works mostly decently but still with large - space for impprovement. -<li> Relaxed the conditions for warnings about long glyphs. -</ul> - -<b>Bug fixes:</b> -<ul> -<li> Fix by Rob Kolstad for a crash in the new outline smoothing - code (on small thin contours) and diagnostic for another crash. -<li> Fix by Holger Huesing for a crash on degenerate contours. -<li> Fix for bitmaps of zero dimensions. -<li> The BDF reader does not fail on redefintion of the properties. -<li> Fix for reading of BDF glyphs with 0 size. -<li> Fix for a hang when guessing the boldness of some fonts. -<li> Fix by Adriano Konzen for scaling coefficients in composite glyphs. -</ul> - -<H4> -3.4.0 -- November 24, 2001 -</H4> -<! -------- -> - -<b>New features:</b> -<ul> -<li> Parser for the BDF bitmap fonts. -<li> Vastly improved the smoothing of the outlines. -<li> The options are saved as a comment in the output file. -<li> New script <tt>other/showdf</tt> for visual comparison of the fonts. -<li> New option <b>-G</b> to select the file types to generate. -<li> Creation of the dvips encoding files (by Rigel). -<li> More glyphs in the Chinese maps (by Rigel). -<li> Made the assignment of ISO8859/1 glyph names to the glyphs in the - fonts without PostScript names in them dependent on the original - encoding: no change for the 8-bit encodings, for the Unicode encoding - the names are assigned to the glyph with the codes 0-255 in Unicode, - and for the other 16-bit encodings the 8859/1 names are not assigned - at all. -</ul> - -<b>Bug fixes:</b> -<ul> -<li> Added a check for spaces in the PostScript font name in the FreeType - parser. -<li> Made "-" a valid character in the glyph names. -<li> Fixed handling of the Unicode names returned by FreeType, though - not perfectly. -<li> Changed the build for FreeType-2.0.4. -<li> Fixed the handling and printing of bad glyph names. -<li> Fixed the bug with duplicated glyph names when more than 256 glyphs are - extracted from a font that has no PostScript glyph names defined. -<li> Added ability to map a glyph to more than one code when unisng the - native parser (-pttf). -</ul> - -<H4> -3.3.5 -- September 12, 2001 -</H4> -<! -------- -> - -Packaged by Sergey Babkin. -<p> - -<b>Bug fixes:</b> -<ul> -<li> Fixed the scaling of Ascender and Descender in the AFM file. -<li> Fixed the brekage of "-l adobestd". -</ul> - -<H4> -3.3.4 -- June 4, 2001 -</H4> -<! -------- -> - -Packaged by Sergey Babkin. -<p> - -<b>New features:</b> -<ul> -<li> Cyrillic (full set of glyphs) language tables (by Zvezdan Petkovic). - Now the languages "russian" and "bulgarian" are provided for compatibility - only, use the common language "cyrillic" instead. -<li> More information in <a href="FONTS.html">FONTS</a> on using Cyrillic fonts with - Netscape (by Zvezdan Petkovic) -<li> In the Netscape print filter added removal of the clipping path command: - otherwise Netscape tends to cut off a large piece of the rightmost column - of the tables. -<li> One more script for printing from Netscape (by Zvezdan Petkovic). -<li> Added selection of the base TTF encoding by pid/eid in the external maps. -<li> Improved the recognition of substituted stems for intersecting contours. -<li> Improved the substituted hints to make the horizontal positioning of - the points at the same height more uniform at small pixel sizes. -<li> Made the algorithm for calculation of standard stem widths more - selective. -<li> Added link to the GnuWin32 project. -</ul> - -<b>Bug fixes:</b> -<ul> -<li> TH: Print out metrics of un-encoded glyphs even without "-a" option. -<li> Added missing "/" in Fontmap generation in convert (by Zvezdan Petkovic). -<li> Removed unneccessary "\n" in messages in x2gs. -<li> Removed the broken overoptimisation of "0 0 rmoveto". -<li> Removed the useless warnings about multiple codes for a glyph. -<li> Changed the FreeType2 include directory in the Makefile to match the - FreeType's default. -</ul> - -<H4> -3.3.3 -- March 4, 2001 -</H4> -<! -------- -> - -Packaged by Sergey Babkin. -<p> - -<b>New features:</b> -<ul> -<li> TH: Added printing of front-end parser in the header of the font file. -<li> Tested build with FreeType 2.0 Release. -</ul> - -<b>Bug fixes:</b> -<ul> -<li> Changed the installation script which on some versions of bash - copied all files into the share directory. -<li> Fixed the close sequences of html2man comments in the HTML files, - now they should display correctly with <tt>lynx</tt>. -<li> Restored the ability to include un-encoded characters into the - customised maps (those with codes over 255). -<li> Fixed the Unicode mapping of the Cyrillic letters "YO" and "yo" - (by Yuri Shemanin). -<li> Fixed the spurious aborts when the conversion-by-plane function - gets called for auto-guessing of encoding. -</ul> - -<H4> -3.3.2 -- November 20, 2000 -</H4> -<! --------------------------- -> - -Packaged by Sergey Babkin. -<p> - -<b>New features:</b> -<ul> -<li> Added generation of man pages. -<li> Added "make install" and "make uninstall". -<li> Added language option "-l plane". -<li> In <tt>other/showg</tt> added better support of comparison files: -<ul> - <li> printing of the comparison file legend; - <li> guessing of missing glyph names in a comparison file by code; - <li> bounding boxes of all comparison files are used for page layout. -</ul> -<li> Added ability to use external t1asm instead of compiling it in. -<li> Renamed the fonts installation guide from INSTALL*html to FONTS*html - to avoid confusion with installation of ttf2pt1 itself. -</ul> - -<b>Bug fixes:</b> -<ul> -<li> Removed erroneous extra fclose(pfa_file). -<li> Fixed random memory corruption that manifested with crash on Linux - when converting fonts not containing glyph names. -<li> Removed from the output file the comments that confused dvips. Changed - <tt>other/showg</tt> to work without them. -<li> In <tt>other/showg</tt> added better checks for missing glyphs, now it - gives warnings about them and the output file does not crash PostScript. -</ul> - -<b>Other:</b> -<ul> -<li> <tt>ttf2pfa</tt> is no longer included, people interested in history - should look for it in the older versions. -</ul> - -<H4> -3.3.1 -- October 22, 2000 -</H4> -<! -------------------------- -> - -Packaged by Sergey Babkin. -<p> - -<b>New features:</b> -<ul> -<li> Added front-end parser based on the FreeType-2 library. See Makefile -for build instructions. -<li> Changed the handling of encodings to accomodate the FreeType model. -<li> Further cleaned up the front-end parser interface. -</ul> - -<b>Bug fixes:</b> -<ul> -<li> Fixed a bug that caused core dump on Alpha machines. -<li> Fixed a bug in the outline smoothing that occasionally caused core dump. -<li> Cleaned up warnings from picky compilers -<li> Fixed more bugs in the Windows port (by Stefan Bauer). -<li> Fixed the RPM spec file (suggested by Brian Armstrong). -</ul> -<p> - -<H4> -3.3.0 -- September 22, 2000 -</H4> -<! ---------------------------- -> - -Packaged by Sergey Babkin. -<p> - -<b>New features:</b> -<ul> -<li> Converted most of the outlines' processing to floating point -arithmetic. -<li> Added splitting of curves crossing the quadrant boundaries (no gross -damage is done any more to the Marvosym font and others like it). -<li> Added modular interface for front-end font parsers and option to control -their selection at run time. -<li> Grouped the outline processing control options into one to reduce the -options namespace pollution. -<li> Thomas moved the Chinese maps into a separate module, chinese-maps. -<li> Thomas added option -V to print version number. In addition, the version -number is put in the header of the font file. -<li> Added long option names (suggested by Thomas). -<li> Added support for multi-level composite glyphs. -<li> TH: Made &lt;fontname&gt; command-line argument optional; default to &lt;ttf-file&gt; -with suffix replaced. -<li> In <tt>other/showg</tt> added more ways to specify glyphs and the comparison option. -</ul> - -<b>Bug fixes:</b> -<ul> -<li> Fixed the VC++ batch file, added batch file for Cygnus GCC on Windows. -<li> Removed parentheses from the Version string in AFM files because it does -not help StarOffice anyway. StarOffice 5.2 has been reported to have this -bug fixed. Added paragraph on StarOffice in FONTS.html. -<li> Made messages on the '?' option parameter more meaningful (by Johan Vromans). -<li> Changed the latin1 encoding table to include the Euro sign, Z and z with -caron (by Thomas Henlich). -<li> Improved the smoothing code which occasionally had problems with -joining curves. Also fixed a few minor bugs in it. -</ul> - -<H4> -3.22 -- May 23, 2000 -</H4> -<! --------------------- -> - -Packaged by Sergey Babkin. -<p> - -<b>New features:</b> -<ul> -<li> Included windows support by Frank Siegert (somewhat amended) -<li> Added control over verbosity of warnings. -<li> Added arguments and initialization functions to the language -translation routines. -<li> Added support of planes determined by arguments to the external -maps. -<li> Added compact external maps format (primarily for Eastern fonts). -<li> Added external maps for Chinese GBK and Big5 encodings (converted -from ttf2pfb) as well as maps for other Chinese encodings by Wang Lei. -<li> Added the idea of buckets to speed up the search in external maps. -<li> Changed the grouping algorithm for substituted hints: now it creates -a bit bigger files but requires smaller hint stack when being rendered. -<li> Added maximal limit of hint stack depth, glyphs requiring bigger -stack get generation of substituted hints disabled. This makes substituted -hints safe to use, no more lost glyphs due to hint stack overflow. -<li> Added the font dump program <tt>other/dumpf</tt>. -<li> Changed the testing HTML generator <tt>other/lst.pl</tt> to use tables. -<li> Added debugging script <tt>other/cntstems.pl</tt> to count required hint -stack depth for the glyphs. -</ul> - -<b>Bug fixes:</b> -<ul> -<li> Fixed printing of UID in script/trans. Changed the auto-generated UID to -be in range 4000000-4999999 which is reserved by Adobe for private use. -<li> Fixed handling of "cleartomark" in built-in t1asm. -<li> Added handling of "can't happen" case in straighten() routine -which actually happened on strange fonts and caused failure on assertion. -<li> Made it always include the glyph .notdef in the resulting font. -<li> Placed the version string in AFM file in parentheses, hopefully -that would fix the problem with StarOffice. -<li> Improved the smoothing code which occasionally had problems with -joining curves. -</ul> - -<H4> -3.21 -- March 1, 2000 -</H4> -<! ---------------------- -> - -Sergey Babkin: committed the changes by Petr Titera and -my bugfixes. -<p> - -<b>New features:</b> -<ul> -<li> New Unicode map format with glyph names, by Petr Titera. -<li> Option to force the Unicode encoding by Petr Titera - (I changed it to work on any MS encoding, not only Symbol). -<li> Slightly tweaked the calculation of hints, should be better now. -</ul> - -<b>Bug fixes:</b> -<ul> -<li> The unicode-sample.map with description of the map formats - was lost in the release process, restored and enhanced. -<li> Renamed the table ISOLatin1Encoding to Fmt3Encoding to reflect - the way it is used. Saved the original one for reference - purposes. In the new table renamed "quoteright" to "quotesingle" - as Thomas Henlich suggested (and he were right). -<li> In the ISOLatinEncoding table renamed the glyph "grave" - at octal 0140 to "quoteleft", "quotesingle" at octal 047 to - "quoteright" to conform to the standard as suggested by - Martin Trautner). -<li> Fixed bug in scripts/trans that corrupted the UniqueID record - in the translated fonts. -<li> Fixed bug in interaction of substituted hints with BlueZones. - Now the fonts with hint substitution seem to be always at least - not worse than without it (well, when they fit in the X11 - file size limit). -</ul> - - -<H4> -3.2 -- January 15, 2000 -</H4> -<! ------------------------ -> - -Sergey Babkin: combined my changes with the changes by -Thomas Henlich. The result deserves a not-so-minor version -increase. -<p> - -<b>New features:</b> -<ul> -<li> Support of the external Unicode re-encoding maps - (by Thomas). -<li> Support for inclusion of all the glyphs from the - source file into the resulting file (inspired by - Thomas but I re-implemented it to remove the limitation - of his implementation: not more than 1024 glyphs). -<li> The hints substitution. It's an experimental feature - yet and needs further work. -<li> Support for UniqueID and its auto-generation. -<li> Support for the name-based conversions from Unicode - in general and the adobestd "language" in particular. -<li> Started the split of the source code into multiple - files. This needs more work to do it in a cleaner - way. -<li> Better framework for the debugging printout - in the converter. -<li> Utilities to install the fonts in Netscape - Navigator/Communicator 4.x. -<li> Patches for bigger font files in the X11 rasterizer. -<li> Linux RPM spec-file (by Johan Vromans). -<li> Added the COPYRIGHT file (BSD-style, as we discussed - on the mailing list earlier) and the CHANGES file. -<li> Creation of the <tt>.pfb</tt> files from the <tt>convert</tt> - script. -<li> Changed the <tt>.notdef</tt>-s in the built-in - ISOLatin1Encoding table to some valid names (by Thomas). - Thomas also suggested replacing `<tt>quoteright</tt>' by - `<tt>quotesingle</tt>' but this seems to be against the - Adobe ISOLatin1 table. -<li> New aliases <tt>windows-1251</tt> and <tt>cp-866</tt> for - the Russian encodings: those are expected by Netscape - navigator. -<li> The font comparison program <tt>other/cmpf</tt>. -<li> The "magnifying glass" program for glyph outlines: - <tt>other/showg</tt>. -<li> Other updates of the tools in the `<tt>other</tt>' subdirectory. -<li> Added a link to T1LIB in README. -<li> A few new options in <tt>convert.cfg</tt>. -</ul> - -<b>Bux fixes:</b> -<ul> -<li> A bug in the outline smoothing code that corrupted some - of the fonts (for example, Microsoft Verdana). -<li> Added explicit `<tt>cleartomark</tt>' to the end of file, - this seems to be compatible with both old and new version - of <tt>t1asm</tt> (suggested by Thomas). -<li> Added the <tt>FontEncoding</tt> statement to the AFM files - (techincally this was not a bug because this statement - is optional but some programs want it). -<li> A coredump when the converter tried to print a warning - (rather ironically) about a weird glyph width. -<li> Changed the underscores in the font names to dashes (this - has been proposed long time ago by Johan Vromans). -<li> No more glyph names of font names staring with a digit. -<li> The names of the fonts in font and AFM files are now the - same as in the generated Ghostscript <tt>Fontmap</tt> file.<br> - <b>Warning:</b> the names in <tt>Fontmap</tt> have been - changed. -<li> The <tt>forceiso</tt> script does not corrupt the character - and kerning pairs counts any more, and is optional at all. -<li> Fix for a loop going to 254 instead of 255 (by Thomas). -<li> Added ':' in the font header (by Thomas). -<li> A coredump when wrong language name is given (this was - also fixed by Thomas but I noticed it too late, after - I already fixed it by myself). -<li> Fixed the links to the Adobe documents in README. -</ul> - - -<H4> -3.13 -- October 18, 1999 -</H4> -<! ------------------------- -> - -Packaged by Sergey Babkin. -<p> - -<b>New features:</b> -<ul> -<li> New option -v for automatic re-scaling based on the vertical size of the font -<li> Changed the code to use getopt() instead of a home-made version of it. -<li> Latin2 language support by Szalay Tamas. -</ul> - -<b>Bux fixes:</b> -<ul> -<li> Fix for the bug that made possible calls of malloc(0). -<li> Refinement of the option -w to prevent extra wide spacing -</ul> - -<H4> -3.12 -- October 2, 1999 -</H4> -<! ------------------------ -> - -Packaged by Sergey Babkin. -<p> - -<b>New features:</b> -<ul> -<li> Added support for the Bulgarian language (actually, for now just an alias -of Russian). -<li> Added option -w that tries to make sure that the character widths are not -too narrow. -<li> Added the concept of aliased encodings. -<li> Now the conversion scripts create and install the .afm files too. -<li> The conversion script removes the intermediate files after installation. -<li> Added tunables to the conversion script. -<li> Installation of the Ghostscript fonts can now be done automatically -together with the X11 fonts. -</ul> - -<b>Bux fixes:</b> -<ul> -<li> (FINALLY!!!) A correct fix for the infamous Red Hat 6.0 stdio "feature". -<li> A number of little bugs discovered by a picky SGI compiler (well, maybe -some day I'll try to run it through the UnixWare lint and see what happens). -<li> A diagnostic message about the empty encodings in the convert script was -made less cryptic and a bug in the awk sub-script was fixed. -<li> The .afm creation code now considers the option -t. -</ul> - -<H4> -3.11 -- May 24, 1999 -</H4> -<! --------------------- -> - -Packaged by Sergey Babkin. -<p> - -<b>New features:</b> -<ul> -<li> It includes the Turkish (Latin5, ISO8859/9) -language support by Turgut Uyar and Baltic (ISO8859/4) languages support by -Rihardas Hepas. -<li> Also the installation script got updated: the configuration parameters -are moved to a separate file and the generated fonts.dir files should now be -compatible with Xfsft. -</ul> - -<H4> -3.1 -- March 28, 1999 -</H4> -<! ---------------------- -> - -Packaged by Sergey Babkin. -<p> - -<b>New features:</b> -<ul> -<li> Improved the interaction of the character-level hints and font-level hints -</ul> - - -<H4> -3.0 -- March 6, 1999 -</H4> -<! --------------------- -> - -Packaged by Sergey Babkin. -<p> - -<b>New features:</b> -<ul> -<li> Added HTML documents. -</ul> - -<H4> -3.0beta2 -- February 14, 1999 -</H4> -<! ------------------------------ -> - -Packaged by Sergey Babkin. -<p> - -<b>New features:</b> -<ul> -<li> Added ability to print the .afm file instead of the font to STDOUT. -<li> Added the guessing of the /ForceBold parameter that proved to be useful. -</ul> - -<b>Bux fixes:</b> -<ul> -<li> Removed the force-fixed option that proved to be troublesome. -</ul> - -<H4> -3.0beta1 -- December 11, 1998 -</H4> -<! ------------------------------ -> - -By Andrew Weeks. -<p> - -<b>New features:</b> -<ul> -<li> Added option (passed to t1asm) to create a compressed binary -version of the font (A PFB file). -</ul> - -<b>Bux fixes:</b> -<ul> -<li> Versions of handle_post and handle_cmap that deal with some -problems with buggy fonts. -<li> Minor Bug Fixes. -</ul> - -<H4> -3.0beta-afm -- December 5, 1998 -</H4> -<! -------------------------------- -> - -By Thomas Henlich. -<p> - -<b>New features:</b> -<ul> -<li> Integration of AFM file creation. -</ul> - -<H4> -3.0beta -- November 15, 1998 -</H4> -<! ----------------------------- -> - -By Sergey Babkin. -<p> - -<b>New features:</b> -<ul> -<li> Added the auto-calculation of the italic angle. -</ul> - -<b>Bux fixes:</b> -<ul> -<li> Fixed a couple of bugs. -</ul> - -<H4> -3.0alpha -- October 19, 1998 -</H4> -<! ----------------------------- -> - -By Sergey Babkin. -<p> - -<b>New features:</b> -<ul> -<li> Improved (although still not perfect) handling of -scaling in composite glyphs -<li> Automatic correction of outlines to make them more -smooth (to correct both rounding errors introduced -during conversion and present in the original font) -<li> Automatic generation of hints (still has lots of -space for improvement) -<li> Automatic generation of BlueValues etc. -</ul> - -<b>Bux fixes:</b> -<ul> -<li> Scaling of fonts to 1000x1000 M-square required by -Type1 standard -<li> Printing out the contours in reverse direction, because -TTF directions are different from Type1 ones (that was -the major reason why the fonts generated by -version 2.2 were rendered so badly in small sizes) -</ul> - -<H4> -June 22, 1998 (AKA 2.2) -</H4> -<! -------------- -> - -By Thomas Henlich. -<p> - -<b>Bux fixes:</b> -<ul> -<li> "width" should be "short int" because otherwise: -characters with negative widths (e.g. -4) become *very* wide (65532) -<li> The number of /CharStrings is numglyphs and not numglyphs+1 -</ul> - -<H4> -February 13, 1998 -</H4> -<! ------------------ -> - -By Mark Heath. -<p> - -<b>Bux fixes:</b> -<ul> -<li> An original Bug Reported by Frank, which was just incorrect syntax in the -Type 1 header, managed to creep back into the Feb 04 Version. This has been -Fixed in the Feb 13 Version. -</ul> - -<H4> -February 4, 1998 -</H4> -<! ----------------- -> - -By Mark Heath. -<p> - -<b>Bux fixes:</b> -<ul> -<li> A workaround was implemented in ttf2pfa by altering the matrix. I suspect -I will have to calculate the correct values, as matrix ops are probably not -allowed in Type 1 format. -</ul> - -<! ---------------------------------------------- -> -<H4> -The older history seems to be lost. -</H4> - -<I> -(S.B.: The story how we got the version numbers is rather funny. Initially -there were no version umbers, the releases were marked by dates. The version -from June 22 1998 untarred itself into a directory "<tt>ttf2pt1-22</tt>". When I -made my changes to it I assumed that this was the version number meaning -version 2.2. Since Mark asked me to send him a complete archive I supposed -that I have to bump the version number. And I bumped it to 3.0 because the -changes were rather extensive. Mark silently agreed and released the new -version as 3.0. And that's the end of the story about how we got this -Microsoft-like high version number.) -</I> - -</BODY> -</HTML> diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/COPYRIGHT b/application/third_party/dompdf/lib/ttf2ufm/src/COPYRIGHT deleted file mode 100644 index 75e8f38e..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/COPYRIGHT +++ /dev/null @@ -1,87 +0,0 @@ -The following copyright notice applies to all the files provided -in this distribution unless explicitly noted otherwise -(the most notable exception being t1asm.c). - - Copyright (c) 1997-2003 by the AUTHORS: - Andrew Weeks <ccsaw@bath.ac.uk> - Frank M. Siegert <fms@this.net> - Mark Heath <mheath@netspace.net.au> - Thomas Henlich <thenlich@rcs.urz.tu-dresden.de> - Sergey Babkin <babkin@users.sourceforge.net>, <sab123@hotmail.com> - Turgut Uyar <uyar@cs.itu.edu.tr> - Rihardas Hepas <rch@WriteMe.Com> - Szalay Tamas <tomek@elender.hu> - Johan Vromans <jvromans@squirrel.nl> - Petr Titera <P.Titera@sh.cvut.cz> - Lei Wang <lwang@amath8.amt.ac.cn> - Chen Xiangyang <chenxy@sun.ihep.ac.cn> - Zvezdan Petkovic <z.petkovic@computer.org> - Rigel <rigel863@yahoo.com> - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. All advertising materials mentioning features or use of this software - must display the following acknowledgement: - This product includes software developed by the TTF2PT1 Project - and its contributors. - - THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE - FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - SUCH DAMAGE. - -For the approximate list of the AUTHORS' responsibilities see the -project history. - -Other contributions to the project are: - -Turgut Uyar <uyar@cs.itu.edu.tr> - The Unicode translation table for the Turkish language. - -Rihardas Hepas <rch@WriteMe.Com> - The Unicode translation table for the Baltic languages. - -Szalay Tamas <tomek@elender.hu> - The Unicode translation table for the Central European languages. - -Johan Vromans <jvromans@squirrel.nl> - The RPM file. - -Petr Titera <P.Titera@sh.cvut.cz> - The Unicode map format with names, the forced Unicode option. - -Frank M. Siegert <frank@this.net> - Port to Windows - -Lei Wang <lwang@amath8.amt.ac.cn> -Chen Xiangyang <chenxy@sun.ihep.ac.cn> - Translation maps for Chinese fonts. - -Zvezdan Petkovic <z.petkovic@computer.org> - The Unicode translation tables for the Cyrillic alphabet. - -Rigel <rigel863@yahoo.com> - Generation of the dvips encoding files, modification to the Chinese maps. - -I. Lee Hetherington <ilh@lcs.mit.edu> - The Type1 assembler (from the package 't1utils'), its full copyright - notice: - Copyright (c) 1992 by I. Lee Hetherington, all rights reserved. - Permission is hereby granted to use, modify, and distribute this program - for any purpose provided this copyright notice and the one below remain - intact. - diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/FONTS b/application/third_party/dompdf/lib/ttf2ufm/src/FONTS deleted file mode 100644 index dc28cc0d..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/FONTS +++ /dev/null @@ -1,462 +0,0 @@ -Sergey A. Babkin -<babkin@bellatlantic.net> or <sab123@hotmail.com> -(Do not edit this file, it is generated from FONTS.html!!!) - -THE FONT INSTALLATION GUIDE -for the TTF to Type1 converter and fonts generated by it -======================================================== - -There is historically a number of problems with the support of the 8-bit -character encodings. This installation guide pays a lot of attention -to the 8-bit issues, because these issues are responsible for the -most of troubles during the installation of fonts. But they are -not the only things covered in this guide, so it's worth reading -even if all you need is plain ASCII. For convenience of reading -I have marked the paragraphs dealing solely with 8-bit problems -with characters *8*. - -To simplify this installation the distribution package of the -converter contains a number of scripts written in shell and -Perl. So, to run them you will need a shell interpreter (Bourne-shell, -POSIX-shell, Korn-shell are OK, ba-shell is probably also OK but not -tested yet). The Perl scripts were tested with Perl5 but probably -should work with Perl4 too. All the scripts are located in the -`scripts' subdirectory. - -This guide considers the following issues of installation of the -fonts: - -- X11 -- Ghostscript -- MS Windows -- Netscape Navigator/Communicator -- Linux RPM package -- FrameMaker -- StarOffice - -X11 -=== - -To simplify the conversion a set of scripts is provided with ttf2pt1. -They are collected in the `scripts' subdirectory. - -`Convert' is the master conversion script provided with ttf2pt1. -When installed into a public directory it's named `ttf2pt1_convert' -to avoid name collisions with the other programs. - -It's called as: - - convert [config-file] - -If the configuration file is not specified as an argument then the file -`convert.cfg' in the current directory is used. This file contains -a set of configuration variables. The distribution contains a sample file -file `convert.cfg.sample'. Please copy it to `convert.cfg', -look inside it and change the configuration variables. The more stable -configuration variables, such as the path names of the scripts and -encoding files are located in `convert' itself, they are -automatically updated when installing ttf2pt1. - -Put all the TTF fonts you want to convert into some directory (this -may be just the directory that already contains all the Windows -fonts on a mounted FAT filesystem). If you have fonts in different -source encoding then put the fonts in each of the encodings -into a separate directory. Up to 10 source directories are -supported. If you (in a rather unlikely case) have more source -directories then you can make two separate runs of the converter, -converting up to 10 directories at a time. - -The variables in the configuration file are: - -SRCDIRS - the list of directories (with absolute paths) with - TTF fonts. Each line contains at least 3 fields: the name of the directory, - the language of the fonts in it (if you have fonts for different - languages you have to put them into the separate directories) and the - encoding of the fonts. Again, if you have some of the TTF typefaces in - one encoding, and some in another (say, CP-1251 and KOI-8), you have - to put them into the separate source directories. Some lines may contain - 4 fields. Then the fourth field is the name of the external map to - convert the Unicode fonts into the desirable encoding. This map is - used instead of the built-in map for the specified language. - -*8* -An interesting thing is that some languages have more than one -widely used character encodings. For example, the widely used -encodings for Russian are IBM CP-866 (MS-DOS and Unix), KOI-8 -(Unix and VAX, also the standard Internet encoding), IBM CP-1251 (MS Windows). -That's why I have provided the means to generate the converted fonts -in more than one encoding. See the file encodings/README for -details about the encoding tables. Actually, if you plan to use -these fonts with Netscape Navigator better use the aliases -cp-866 instead of ibm-866 and windows-1251 instead of ibm-1251 -because that's what Netscape wants. - -DSTDIR - directory for the resulting Type1 fonts. Be careful! - This directory gets completely wiped out before conversion, - so don't use any already existing directory for this purpose. - -DSTENC{language} - the list of encodings in which the destination - fonts will be generated for each language. Each font of that - language will be generated in each of the specified - encodings. If you don't want any translation, just specify both - SRCENC and DSTENC as iso8859-1 (or if you want any other encoding - specified in the fonts.dir, copy the description of 8859-1 with - new name and use this new name for SRCENC and DSTENC). - -FOUNDRY - the foundry name to be used in the fonts.dir file. I have - set it to `fromttf' to avoid name conflicts with any existing font for - sure. But this foundry name is not registered in X11 standards and - if you want to get the full standard compliance or have a font server - that enforces such a compliance, use `misc'. - -The next few parameters control the general behavior of the converter. -They default values are set to something reasonable. - -CORRECTWIDTH - if the value is set to YES then use the - converter option -w, otherwise don't use it. See the description of - this option in the README file. - -REMOVET1A - if the value is set to YES then after - conversion remove the un-encoded .t1a font files and the - intermediate .xpfa font metric files. - -INSTALLFONTMAP - a Ghostscript parameter, if the value is set to - YES then install the entries for the new fonts - right into the main Fontmap file. Otherwise just leave - the file Fontmap.ttf in the Ghostscript configuration - directory. - -HINTSUBST - if the value is set to YES use the option - -H, otherwise don't use it. This option enables the - hint substitution technique. If you have not installed the X11 patch - described above, use this option with great caution. See further - description of this option in the README file. - -ENFORCEISO - if the value is set to YES then - disguise the resulting fonts as the fonts in ISOLatin1 encoding. Historically - this was neccessary due to the way the installer scripts created the - X11 font configuration files. It is not neccessary any more for this - purpose. But if you plan to use these fonts with some other application - that expects ISOLatin1 encoding then better enable this option. - -ALLGLYPHS - if the value is set to YES then - include all the glyphs from the source fonts into the resulting fonts, even - if these glyphs are inaccessible. If it's set to NO then - include only the glyphs which have codes assigned to them. The glyphs - without codes can not be used directly. But some clever programs, - such as the Type 1 library from XFree86 3.9 and higher can change - the encoding on the fly and use another set of glyphs. If you have not - installed the X11 patch described above, use this option with great - caution. See further description of the option option -a in the - README file. - -GENUID - if the value is set to YES then use - the option -uA of the converter to generate UniqueIDs for - the converted fonts. The standard X11 Type 1 library does not use - this ID, so it may only be neccessary for the other applications. - The script is clever enough to generate different UniqueID for the - same font converted to multiple encodings. Also after conversion it - checks all the fonts generacted during the session for duplicated - UniqueID and shows those. Still, this does not quarantee that these - UniqueIDs won't overlap with some other fonts. The UniqueIDs are - generated as hash values from the font names, so it's guaranteed - that if the `convert' script runs multiple times it will - generate the same UniqueIDs during each run. See further description - of this option in the README file. - -GENUID - if the value is set to YES then create - the .pfb files, otherwise the .pfa files. The .pfb - files are more compact but contain binary data, so you may experience some - troubles when transferring them through the network. - -The following parameters are used to locate the other scripts and -configuration files. By default the scripts do a bit of guessing for them: -they search in the ttf2pt1 installation directory if ttf2pt1 -was installed or otherwise suppose that you are running `convert' with -`scripts' subdirectory being the current directory. - -ENCDIR - directory containing the descriptions of encodings -MAPDIR - directory containing the external map files - -Besides that a few parameters are built into the `convert' script itself. -You probably won't need to change them: - -T1ASM, TTF2PT1, TRANS, T1FDIR, FORCEISO - paths to the other script - -Also there are a few parameters controlling the installation of -fonts for Ghostscript. Please look at their description in the -Ghostscript section of documentation or in the ttf2pt1_x2gs(1) -manual page before running `convert'. If these parameters are -set, `convert' will call the `x2gs' script automatically -to install the newly converted fonts in Ghostscript. - -After creating the configuration file run the `convert' script. Look at -the result and the log file in DSTDIR. - -Add the directory with newly converted fonts to the configuration -of X server or font server. For most of the systems this step is -very straightforward. For HP-UX it's rather tricky and poorly -documented, so the file FONTS.hpux gives a short description. - -If you don't have the privileges of the root user, you still can -configure your private font server. Just use some non-standard -port number (see FONTS.hpux for an example, exept that you won't -need all the HP-related stuff on any other system). - -Known Problems --------------- - -- One catch is that the X11 Type 1 font library has a rather low limit - on the font size. Because of this the fonts with more complicated - outlines and the enabled hint substitution may not fit into - this limit. The same applies to the fonts with very complicated - outlines or with very many glyphs (especially the fonts with - over 256 glyphs). So you will need to excercise caution with - these options if you plan using these fonts with X11. Some vendors - such as HP provide the Type 1 implementation licensed from Adobe - which should have no such problem. - - But there is a solution even for the generic X11. A patch located - in the subdirectory `app/X11' fixes this problem as well - as some other minor problems. Its description is provided in - app/X11/README. - - To fix the X11 font library, you have to get the X11 sources. I - can recommend the ftp sites of the XFree86 project ftp://ftp.xfree86.org - or of the Open Group ftp://ftp.x.org. This patch was made on the sources - of XFree86 so you may have better success with applying it to the - XFree86 distribution. After you have got the sources, make sure - that you can compile them. Then apply the patch as described. - Make sure that it was applied properly. Compile the sources again - (actually, you need only the fonts library, the fonts server, and - possibly the X server). It would be prudent now to save your old - font library, font server and, possibly, X server. Then install - the new recently compiled versions of these files. Of course, - if you know someone who already has compiled these files for the - same OS as yours, you can just copy the binary fles from him. - - Alas, building the X11 system from the source code is not the - easiest thing in the world and if you have no experience it - can be quite difficult. In this case just avoid the aforementioned - features or check each converted font to make sure that it - works properly. - -- The Type1 font library from the standard X11 distribution - does not work on HP-UX (at least, up to 10.01). The font server - supplied with HP-UX up to 10.01 is also broken. Starting from - HP-UX 10.20 (I don't know about 10.10) they supply a proprietary font - library and the converted fonts work fine with it, provided that - they are configured properly (see the file FONTS.hpux). - -- The fonts.scale files created by the older versions of the - ttf2pt1 installation program (up to release 3.1) have conflicted - with the language definitions of the Xfsft font server and - parts of it included into XFree86. To overcome this incompatibility - the never versions creats the fonts.scale file describing all the - fonts as belonging to the adobe-fontspecific encoding and - the fonts.alias file with the proper names. The drawback of - this solution is that xlsfonts gives the list of twice more - fonts. But as a side effect the option ENFORCEISO in - `convert.cfg' is not required for X11 any more. - -- The conversion script has no support for Eastern multi-plane fonts. - Contribution of such a support would be welcome. - -Ghostscript -=========== - -The fonts generated with ttf2pt1 work fine with Ghostscript by -themselves. The script `x2gs' (or `ttf2pt1_x2gs' when installed -into a public directory, to avoid name conflicts with other -programs) links the font files from the X11 direcotry into the Ghostscript -directory and automatically creates the description file (Fontmap) -in Ghostscript format. - -It's called as: - - x2gs [config-file] - -If the configuration file is not specified as an argument then the file -`convert.cfg' in the current directory is used, just like the -`convert' script does. Indeed, this configuration file is used for -both scripts. - -The Ghostscript-related parameters in the configuration file are: - -DSTDIR - the X11 font directory used by `x2gs' as the - source of the fonts. This parameter is common with the X11 - configuration. - -GSDIR - the base directory of Ghostsript. If this - parameter is set to an empty string then `convert' won't - call `x2gs'. So if you want to get only the X11 fonts - installed then set this parameter to an empty string. This - directory may vary on various system, so please check your - system and set this value accordingly before running the script. - -GSFONTDIR - the font directory of Ghostscript. In the standard - Ghostscript installation it's a subdirectory of GSDIR - but some systems may use completely different directories. - -GSCONFDIR - the configuration subdirectory of Ghostscript - that contains the Fontmap file. - -INSTALLFONTMAP - if the value is set to YES then - install the entries for the new fonts right into the main - Fontmap file. Otherwise just leave the file Fontmap.ttf - in the Ghostscript configuration directory. - - -After preparing the configuration file run the script. It symbolicaly links -all the font files and creates the description file Fontmap.ttf in -GSCONDFIR. After that there are two choices. - -If the option INSTALLFONTMAP was set to YES then -the font descriptions are also automatically installed into the -master Fontmap file. The script is clever enough to -detect if it was run multiple times with the same directories -and if so it replaces the old Fontmap entries with -the new ones instead of just accumulating all of them. You -may also run it multiple times for multiple X11 directories -and all the results will be properly collected in the Fontmap. -But it's your responsibility to watch that the names of the -font files don't overlap. If the X11 font directory gets -renamed then you have to remove its font entries from the -Fontmap and only after that re-run `x2gs' -for the new directory. - -On the other hand if the option INSTALLFONTMAP was set to -NO then go to the GSCONFDIR directory and insert the -contents of Fontmap.ttf into the Fontmap file -manually. This step may be left manual to make the installation -a little bit more safe. - -After that you may also want to redefine some of the aliases in -Fontmap to refer to the newly installed fonts. -But the redefinition of the aliases may be dangerous if the width of -characters in the new font will be different from the old font. -Alas, there is no visible solution of this problem yet. - -MS Windows -=========== - -Ttf2pt1 can be built on Windows either with native compiler or in -POSIX emulation mode. - -Native MS Windows compilers require a different way to build the converter -instead of the Makefile (their make programs commonly are quite weird -and limited in capabilities). An example of batch file winbuild.bat -is provided for MS Visual C/C++. Probably it can be easily adapted for other -32-bit Windows and DOS compilers. The important part is to define the -preprocessor symbol WINDOWS during compilation. - -Cygnus make almost supports full Makefiles but not quite. Seems -like its POSIX support is also of the same quality "almost but not quite". -So another command file cygbuild.sh is provided for Cygnus GNU C, also -with the preprocessor symbol WINDOWS defined. It is intended to be run from -the Cygnus BASH shell. To run the programs produced by the Cygnus compiler -the Cygnus library file CYGWIN1.DLL should be copied first into -C:\WINDOWS. - -To run the accompanying scripts Perl for Windows will be required as well as -other tools from the Cygnus set. - -The Windows support was not particularly tested, so in case of problems with -building or running the converter please let us know. - -The pre-built code (possibly of an older version) of ttf2pt1 for MS Windows is -available from the GnuWin32 project from - -http://gnuwin32.sourceforge.net/packages/ttf2pt1.htm - -Netscape Navigator/Communicator -=============================== - -Basically, the biggest problem with Netscape Navigator is that -it has built-in fixed PostScript font names and built-in fixed -glyph tables for them. Oh, no, that's two! Let's start over: -basically the two biggest problems of Netscape Navigator are -that (one)it has built-in fixed PostScript font names and (two) -built-in fixed glyph tables for them and (three) it always -assumes that the fonts have ISOLatin1 encoding. OK, let's -start over again: basically the three biggest problems of Netscape -Navigator are that (one) it has built-in fixed PostScript font names, -(two) built-in fixed glyph tables for them and (three) it always -assumes that the fonts have ISOLatin1 encoding and (four) it -does not remember the scaled font size between the sessions. -You did not expect such a Spanish Inquisition, did you ? (*) - -Luckily, we have solutions for all of these problems. They are -located in the subdirectory `app/netscape' and described -in app/netscape/README. - - ------- - *) See Monty Python's Flying Circus, episode 15 - -*8* -Netscape and cyrillic fonts ---------------------------- -(courtesy of Zvezdan Petkovic) - -If you use TrueType fonts in your X, as I do, and you always get -KOI8-R encoded pages, then your Netscape does not recognise windows-1251 -encoding. Microsoft TrueType fonts simply declare all encodings they -can support including KOI8-R. For some reason, KOI8-R always wins over -ISO-8859-5 in Netscape under X. If you are reading other cyrillic -languages besides Russian, you might want to either erase KOI8-R entries -from the fonts.dir and fonts.scale files, or alternatively fix Netscape. -I put this line in my .Xdefaults. - - Netscape*documentFonts.charset*koi8-r: iso-8859-5 - -Notice that you can still read Russian sites without trouble because -Netscape translates KOI8-R to ISO-8859-5 on the fly. I read both Russian -and Serbian sites with no trouble. - -Note: If anybody knows the way to tell Netscape under Unix how to -recognise {windows,ibm,cp}-1251 encoded fonts, I'd like to hear about that. - -Linux RPM package -================= - -The spec file for the creation of a Linux RPM package is located in -app/RPM. It has been contributed by Johan Vromans. When -make all is ran in the main directory it among the other -things creates the version of itself adapted to Linux in app/RPM, -you may want to copy that version back to the main directory. - -Warning: Please note that the install section is incomplete, and -the installed scripts won't work until the paths inside them -are corrected. - -FrameMaker -========== - -The fonts and AFM files generated by the version 3.2 and higher -should work with Framemaker without problems. The AFM files -generated by the previous versions of the converter require a -line added to them: - - EncodingScheme FontSpecific - -And the underscores in the font names of the font and AFM files -generated by the older versions may need to be changed to dashes. - -NOTE by Jason Baietto: Ignore the directions in the Frame on-line docs -that say to put a "serverdict begin 0 exitserver" line in the pfa files. -Doing this caused both my printer and ghostscript to choke on the resulting -output from FrameMaker, so I would not advise doing this (though your -mileage may vary). - -StarOffice -========== - -StarOffice 5.1x has been reported to crash if the .afm file contains -spaces in the values of such statements as Version, Weight etc. -These spaces are permitted by the Adobe spec, so this is a problem of -StarOffice. The easiest way to fix these .afm files for StarOffice -is to remove spaces in these strings or remove these strings (in case if -they are optional) at all. This can be done automatically with a sed -script. It seems that StarOffice 5.2 has this problem fixed, so we decided to -spend no efforts on providing workarounds for 5.1 with ttf2pt1. - diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/FONTS.hpux b/application/third_party/dompdf/lib/ttf2ufm/src/FONTS.hpux deleted file mode 100644 index 585f7943..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/FONTS.hpux +++ /dev/null @@ -1,107 +0,0 @@ -Sergey A. Babkin -<babkin@bellatlantic.net> or <sab123@hotmail.com> -(Do not edit this file, it is generated from FONTS.hpux.html!!!) - -How to install new Type1 fonts on an HP-UX 10.20 machine --------------------------------------------------------- - -1. Add the font files to /usr/lib/X11/fonts/type1.st/typefaces. - -2. Add the font descriptions to -/usr/lib/X11/fonts/type1.st/typefaces/fonts.scale. Run `mkfontdir' -in /usr/lib/X11/fonts/type1.st/typefaces. In the descriptions -you have to specify the font manufacturer as `misc', like: - - -misc-courier-... - -3. Copy /usr/lib/X11/fonts/type1.st/typefaces/fonts.dir to -/usr/lib/X11/fonts/type1.st/licenses/STSYSTEM/DISPLAYS/fonts.dir. -Better yet, create a symbolic link. - -4. For each font encoding you are going to use create a description -file in /usr/lib/X11/fonts/stadmin/type1/charsets. Of course, if you -are going to use the same fonts in several encodings, the best way -would be to create fair descriptions of charsets and really store -only one encoding in typefaces, all the others will be produced -automatically. That's not difficult at all. -But the simplest way is to just copy the file cp.iso8859-1 -to cp.<your-encoding-name>, like cp.koi8-r. - -5. Restart you X server and/or font server. - -What if you don't have the `root' privileges ? ----------------------------------------------- - -You still can run the font server and configure your X server -to get the fonts from it. - -Further let's suppose that the name on which you are going -to run the font server is named `somehost'. Login to it -and configure the font server. - -First, choose some unused port. Numbers around 9000 are a good -choice. Verify that this port is not used by somebody else -by entering - - netstat -naf inet |grep 9000 - -and look what happens. If you get nothing, that's good, this -port is unused. If you get some lines of data, try abother port. - -Go to you home directory $HOME and create some directory for -your font server, say, $HOME/fs. Copy the directory structure -of /usr/lib/X11/fonts/type1.st into $HOME/fs, so that in result -you get $HOME/fs/type1.st/<whatever was there>. Copy the directory -structure of /usr/lib/X11/fonts/stadmin/type1/charsets into $HOME/fs, -so that in result you get $HOME/fs/charsets/<whatever was there>. -Install the new fonts in these directorues as described above. - -Then create the fontserver configuration file, say, $HOME/fs/xfs.cfg. -The sample contents (supposing that my $HOME is equal to /home/babkin) -is: - ---------------8<----------- cut here ----------------------------- -# font server configuration file -# $XConsortium: config.cpp,v 1.7 91/08/22 11:39:59 rws Exp $ - -rasterizers = /usr/lib/X11/fs/ufstrast.sl,/usr/lib/X11/fs/iforast.sl - -clone-self = off -use-syslog = off -catalogue = /home/babkin/fs/type1.st -# in decipoints -default-point-size = 120 -default-resolutions = 100,100,75,75 -port=9000 -error-file=/home/babkin/fs/fs.err ---------------8<----------- cut here ----------------------------- - -Then create the script to start your font server, say, $HOME/fs/runme: - ---------------8<----------- cut here ----------------------------- -TYPE1_CODEPAGE_DIR=$HOME/fs/charsets -export TYPE1_CODEPAGE_DIR -kill `ps -ef | grep $HOME/\[f\]s/xfs.cfg | awk '{print $2}'`; -nohup xfs -config $HOME/fs/xfs.cfg & ---------------8<----------- cut here ----------------------------- - -Don't forget to make $HOME/fs/runme executable. Then you can -execute it manually or from you .profile. - -After you get your font server running, just execute the following -command (with proper host name and port number) in your X session - - xset fp+ tcp/somehost:9000 - -to get the access to your private font server. You can add this -information to the configuration data of your X server or just -put it also into your .profile. In the latter case the best way -to do that would be like: - ---------------8<----------- cut here ----------------------------- -... -$HOME/fs/runme -sleep 2 # give it some time to start -xset fp+ tcp/somehost:9000 -... ---------------8<----------- cut here ----------------------------- diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/FONTS.hpux.html b/application/third_party/dompdf/lib/ttf2ufm/src/FONTS.hpux.html deleted file mode 100644 index 80889cae..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/FONTS.hpux.html +++ /dev/null @@ -1,197 +0,0 @@ -<HTML> -<HEAD> -<TITLE> -How to install new Type1 fonts on an HP-UX 10.20 machine -</TITLE> -</HEAD> -<BODY> -Sergey A. Babkin -<br> -<A HREF="mailto:babkin@bellatlantic.net"> -&lt;babkin@bellatlantic.net&gt;</A> or <A HREF="mailto:sab123@hotmail.com">&lt;sab123@hotmail.com&gt;</A> -<p> -<! -(Do not edit this file, it is generated from FONTS.hpux.html!!!) -> - -<H3> -How to install new Type1 fonts on an HP-UX 10.20 machine -</H3> -<! --------------------------------------------------------- -> - -1. Add the font files to <tt>/usr/lib/X11/fonts/type1.st/typefaces</tt>. -<p> - -2. Add the font descriptions to -<tt>/usr/lib/X11/fonts/type1.st/typefaces/fonts.scale</tt>. Run `mkfontdir' -in <tt>/usr/lib/X11/fonts/type1.st/typefaces</tt>. In the descriptions -you have to specify the font manufacturer as `misc', like: -<p> - -<tt> -&nbsp;&nbsp;-misc-courier-... -</tt> -<p> - -3. Copy <tt>/usr/lib/X11/fonts/type1.st/typefaces/fonts.dir</tt> to -<tt>/usr/lib/X11/fonts/type1.st/licenses/STSYSTEM/DISPLAYS/fonts.dir</tt>. -Better yet, create a symbolic link. -<p> - -4. For each font encoding you are going to use create a description -file in <tt>/usr/lib/X11/fonts/stadmin/type1/charsets</tt>. Of course, if you -are going to use the same fonts in several encodings, the best way -would be to create fair descriptions of charsets and really store -only one encoding in typefaces, all the others will be produced -automatically. That's not difficult at all. -But the simplest way is to just copy the file <tt>cp.iso8859-1</tt> -to <tt>cp.<i>&lt;your-encoding-name&gt;</i></tt>, like <tt>cp.koi8-r</tt>. -<p> - -5. Restart you X server and/or font server. -<p> - -<H4> -What if you don't have the `root' privileges ? -</H4> -<! ----------------------------------------------- -> - -You still can run the font server and configure your X server -to get the fonts from it. -<p> - -Further let's suppose that the name on which you are going -to run the font server is named `somehost'. Login to it -and configure the font server. -<p> - -First, choose some unused port. Numbers around 9000 are a good -choice. Verify that this port is not used by somebody else -by entering -<p> - -<blockquote><tt> - netstat -naf inet |grep 9000 -</tt></blockquote> - -and look what happens. If you get nothing, that's good, this -port is unused. If you get some lines of data, try abother port. -<p> - -Go to you home directory <tt>$HOME</tt> and create some directory for -your font server, say, <tt>$HOME/fs</tt>. Copy the directory structure -of <tt>/usr/lib/X11/fonts/type1.st</tt> into <tt>$HOME/fs</tt>, so that in result -you get <tt>$HOME/fs/type1.st/<i>&lt;whatever was there&gt;</i></tt>. Copy the directory -structure of <tt>/usr/lib/X11/fonts/stadmin/type1/charsets</tt> into <tt>$HOME/fs</tt>, -so that in result you get <tt>$HOME/fs/charsets/<i>&lt;whatever was there&gt;</i></tt>. -Install the new fonts in these directorues as described above. -<p> - -Then create the fontserver configuration file, say, <tt>$HOME/fs/xfs.cfg</tt>. -The sample contents (supposing that my <tt>$HOME</tt> is equal to <tt>/home/babkin</tt>) -is: -<p> - -<! ---------------8&lt;----------- cut here ----------------------------- -> -<hr> -<tt> -# font server configuration file -<br> -# $XConsortium: config.cpp,v 1.7 91/08/22 11:39:59 rws Exp $ -<br> - -<br> -rasterizers = /usr/lib/X11/fs/ufstrast.sl,/usr/lib/X11/fs/iforast.sl -<br> - -<br> -clone-self = off -<br> -use-syslog = off -<br> -catalogue = /home/babkin/fs/type1.st -<br> -# in decipoints -<br> -default-point-size = 120 -<br> -default-resolutions = 100,100,75,75 -<br> -port=9000 -<br> -error-file=/home/babkin/fs/fs.err -</tt> -<hr> -<! ---------------8&lt;----------- cut here ----------------------------- -> -<p> - -Then create the script to start your font server, say, <tt>$HOME/fs/runme</tt>: -<p> - -<! ---------------8&lt;----------- cut here ----------------------------- -> -<hr> -<tt> -TYPE1_CODEPAGE_DIR=$HOME/fs/charsets -<br> -export TYPE1_CODEPAGE_DIR -<br> -kill `ps -ef | grep $HOME/\[f\]s/xfs.cfg | awk '{print $2}'`; -<br> -nohup xfs -config $HOME/fs/xfs.cfg & -</tt> -<hr> -<! ---------------8&lt;----------- cut here ----------------------------- -> -<p> - -Don't forget to make <tt>$HOME/fs/runme</tt> executable. Then you can -execute it manually or from you .profile. -<p> - -After you get your font server running, just execute the following -command (with proper host name and port number) in your X session -<p> - -<blockquote><tt> - xset fp+ tcp/somehost:9000 -</tt></blockquote> - -to get the access to your private font server. You can add this -information to the configuration data of your X server or just -put it also into your .profile. In the latter case the best way -to do that would be like: -<p> - -<! ---------------8&lt;----------- cut here ----------------------------- -> -<hr> -<tt> -... -<br> -$HOME/fs/runme -<br> -sleep 2 # give it some time to start -<br> -xset fp+ tcp/somehost:9000 -<br> -... -</tt> -<hr> -<! ---------------8&lt;----------- cut here ----------------------------- -> -<p> -</BODY> -</HTML> diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/FONTS.html b/application/third_party/dompdf/lib/ttf2ufm/src/FONTS.html deleted file mode 100644 index 352bd069..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/FONTS.html +++ /dev/null @@ -1,708 +0,0 @@ -<HTML> -<HEAD> -<TITLE> -The ttf2pt1 font installation guide -</TITLE> -</HEAD> -<BODY> -Sergey A. Babkin -<br> -<A HREF="mailto:babkin@users.sourceforge.net"> -&lt;babkin@bellatlantic.net&gt;</A> or <A HREF="mailto:sab123@hotmail.com">&lt;sab123@hotmail.com&gt;</A> -<p> -<! -(Do not edit this file, it is generated from FONTS.html!!!) -> - -<!-- =defdoc cv ttf2pt1_convert 1 --> -<!-- =defdoc gs ttf2pt1_x2gs 1 --> -<H2> -THE FONT INSTALLATION GUIDE -<br> -for the TTF to Type1 converter and fonts generated by it -</H2> -<! -======================================================== -> - -There is historically a number of problems with the support of the 8-bit -character encodings. This installation guide pays a lot of attention -to the 8-bit issues, because these issues are responsible for the -most of troubles during the installation of fonts. But they are -not the only things covered in this guide, so it's worth reading -even if all you need is plain ASCII. For convenience of reading -I have marked the paragraphs dealing solely with 8-bit problems -with characters <FONT COLOR="#3333FF"><FONT SIZE=-1>*8*</FONT></FONT>. -<p> - -To simplify this installation the distribution package of the -converter contains a number of scripts written in shell and -Perl. So, to run them you will need a shell interpreter (Bourne-shell, -POSIX-shell, Korn-shell are OK, ba-shell is probably also OK but not -tested yet). The Perl scripts were tested with Perl5 but probably -should work with Perl4 too. All the scripts are located in the -`scripts' subdirectory. -<p> - -This guide considers the following issues of installation of the -fonts: -<p> - -<b> -<ul> -<li> <A HREF="#X11">X11</A><br> -<li> <A HREF="#gs">Ghostscript</A><br> -<li> <A HREF="#win">MS Windows</A><br> -<li> <A HREF="#netscape">Netscape Navigator/Communicator</A><br> -<li> <A HREF="#rpm">Linux RPM package</A><br> -<li> <A HREF="#framemaker">FrameMaker</A><br> -<li> <A HREF="#soffice">StarOffice</A><br> -</ul> -</b><p> - -<A NAME="X11"></A> -<H3> -X11 -</H3> -<! -=== -> - -<!-- =section cv NAME --> -<!-- =text B&lt;ttf2pt1_convert&gt; - convenience font conversion script --> -<!-- =stop --> -To simplify the conversion a set of scripts is provided with <b>ttf2pt1</b>. -They are collected in the `<TT>scripts</TT>' subdirectory. -<p> - -<!-- =section cv DESCRIPTION --> -`<b>Convert</b>' is the master conversion script provided with ttf2pt1. -When installed into a public directory it's named `<b>ttf2pt1_convert</b>' -to avoid name collisions with the other programs. -<p> -<!-- =stop --> - -It's called as: -<p> - -<!-- =section cv SYNOPSIS --> -<!-- =text ttf2pt1_convert B&lt;[config-file]&gt; --> -<!-- =stop --> -<blockquote> - convert <i>[config-file]</i> -</blockquote> - -<!-- =section cv DESCRIPTION --> -If the configuration file is not specified as an argument then the file -`<TT>convert.cfg</TT>' in the current directory is used. This file contains -a set of configuration variables. The distribution contains a sample file -file `<TT>convert.cfg.sample</TT>'. Please copy it to `<TT>convert.cfg</TT>', -look inside it and change the configuration variables. The more stable -configuration variables, such as the path names of the scripts and -encoding files are located in `<TT>convert</TT>' itself, they are -automatically updated when installing <b>ttf2pt1</b>. -<p> - -Put all the TTF fonts you want to convert into some directory (this -may be just the directory that already contains all the Windows -fonts on a mounted FAT filesystem). If you have fonts in different -source encoding then put the fonts in each of the encodings -into a separate directory. Up to 10 source directories are -supported. If you (in a rather unlikely case) have more source -directories then you can make two separate runs of the converter, -converting up to 10 directories at a time. -<p> - -The variables in the configuration file are: -<p> - -<!-- ==over 2 --> -<!-- ==item * --> -<B><tt>SRCDIRS</tt></B> - the list of directories (with absolute paths) with - TTF fonts. Each line contains at least 3 fields: the name of the directory, - the language of the fonts in it (if you have fonts for different - languages you have to put them into the separate directories) and the - encoding of the fonts. Again, if you have some of the TTF typefaces in - one encoding, and some in another (say, CP-1251 and KOI-8), you have - to put them into the separate source directories. Some lines may contain - 4 fields. Then the fourth field is the name of the external map to - convert the Unicode fonts into the desirable encoding. This map is - used instead of the built-in map for the specified language. -<p> - -<FONT COLOR="#3333FF"><FONT SIZE=-1>*8*</FONT></FONT> -An interesting thing is that some languages have more than one -widely used character encodings. For example, the widely used -encodings for Russian are IBM CP-866 (MS-DOS and Unix), KOI-8 -(Unix and VAX, also the standard Internet encoding), IBM CP-1251 (MS Windows). -That's why I have provided the means to generate the converted fonts -in more than one encoding. See the file <A HREF="encodings/README.html">encodings/README</A> for -details about the encoding tables. Actually, if you plan to use -these fonts with Netscape Navigator better use the aliases -cp-866 instead of ibm-866 and windows-1251 instead of ibm-1251 -because that's what Netscape wants. -<p> - -<!-- ==item * --> -<b><tt>DSTDIR</tt></b> - directory for the resulting Type1 fonts. Be careful! - This directory gets completely wiped out before conversion, - so don't use any already existing directory for this purpose. -<p> - -<!-- ==item * --> -<b><tt>DSTENC<i>{language}</i></tt></b> - the list of encodings in which the destination - fonts will be generated for each language. Each font of that - language will be generated in each of the specified - encodings. If you don't want any translation, just specify both - <tt>SRCENC</tt> and <tt>DSTENC</tt> as iso8859-1 (or if you want any other encoding - specified in the fonts.dir, copy the description of 8859-1 with - new name and use this new name for <tt>SRCENC</tt> and <tt>DSTENC</tt>). -<p> - -<!-- ==item * --> -<b><tt>FOUNDRY</tt></b> - the foundry name to be used in the fonts.dir file. I have - set it to `fromttf' to avoid name conflicts with any existing font for - sure. But this foundry name is not registered in X11 standards and - if you want to get the full standard compliance or have a font server - that enforces such a compliance, use `misc'. -<p> -<!-- ==back --> - -The next few parameters control the general behavior of the converter. -They default values are set to something reasonable. -<p> - -<!-- ==over 2 --> -<!-- ==item * --> -<b><tt>CORRECTWIDTH</tt></b> - if the value is set to <b><tt>YES</tt></b> then use the - converter option <tt><b>-w</b></tt>, otherwise don't use it. See the description of - this option in the <A HREF="README.html">README</A> file. -<p> - -<!-- ==item * --> -<b><tt>REMOVET1A</tt></b> - if the value is set to <b><tt>YES</tt></b> then after - conversion remove the un-encoded <tt>.t1a</tt> font files and the - intermediate <tt>.xpfa</tt> font metric files. -<p> - -<!-- ==item * --> -<b><tt>INSTALLFONTMAP</tt></b> - a Ghostscript parameter, if the value is set to - <b><tt>YES</tt></b> then install the entries for the new fonts - right into the main <tt>Fontmap</tt> file. Otherwise just leave - the file <tt>Fontmap.ttf</tt> in the Ghostscript configuration - directory. -<p> - -<!-- ==item * --> -<b><tt>HINTSUBST</tt></b> - if the value is set to <b><tt>YES</tt></b> use the option - <tt><b>-H</b></tt>, otherwise don't use it. This option enables the - hint substitution technique. If you have not installed the X11 patch - described above, use this option with great caution. See further - description of this option in the <A HREF="README.html">README</A> file. -<p> - -<!-- ==item * --> -<b><tt>ENFORCEISO</tt></b> - if the value is set to <b><tt>YES</tt></b> then - disguise the resulting fonts as the fonts in ISOLatin1 encoding. Historically - this was neccessary due to the way the installer scripts created the - X11 font configuration files. It is not neccessary any more for this - purpose. But if you plan to use these fonts with some other application - that expects ISOLatin1 encoding then better enable this option. -<p> - -<!-- ==item * --> -<b><tt>ALLGLYPHS</tt></b> - if the value is set to <b><tt>YES</tt></b> then - include all the glyphs from the source fonts into the resulting fonts, even - if these glyphs are inaccessible. If it's set to <b><tt>NO</tt></b> then - include only the glyphs which have codes assigned to them. The glyphs - without codes can not be used directly. But some clever programs, - such as the Type 1 library from XFree86 3.9 and higher can change - the encoding on the fly and use another set of glyphs. If you have not - installed the X11 patch described above, use this option with great - caution. See further description of the option option <tt><b>-a</b></tt> in the - <A HREF="README.html">README</A> file. -<p> - -<!-- ==item * --> -<b><tt>GENUID</tt></b> - if the value is set to <b><tt>YES</tt></b> then use - the option <tt><b>-uA</b></tt> of the converter to generate UniqueIDs for - the converted fonts. The standard X11 Type 1 library does not use - this ID, so it may only be neccessary for the other applications. - The script is clever enough to generate different UniqueID for the - same font converted to multiple encodings. Also after conversion it - checks all the fonts generacted during the session for duplicated - UniqueID and shows those. Still, this does not quarantee that these - UniqueIDs won't overlap with some other fonts. The UniqueIDs are - generated as hash values from the font names, so it's guaranteed - that if the `<tt>convert</tt>' script runs multiple times it will - generate the same UniqueIDs during each run. See further description - of this option in the <A HREF="README.html">README</A> file. -<p> - -<!-- ==item * --> -<b><tt>GENUID</tt></b> - if the value is set to <b><tt>YES</tt></b> then create - the <tt>.pfb</tt> files, otherwise the <tt>.pfa</tt> files. The <tt>.pfb</tt> - files are more compact but contain binary data, so you may experience some - troubles when transferring them through the network. -<p> -<!-- ==back --> - -The following parameters are used to locate the other scripts and -configuration files. By default the scripts do a bit of guessing for them: -they search in the <b>ttf2pt1</b> installation directory if <b>ttf2pt1</b> -was installed or otherwise suppose that you are running `<tt>convert</tt>' with -`<tt>scripts</tt>' subdirectory being the current directory. -<p> - -<!-- ==over 2 --> -<!-- ==item * --> -<b><tt>ENCDIR</tt></b> - directory containing the descriptions of encodings -<br> -<!-- ==item * --> -<b><tt>MAPDIR</tt></b> - directory containing the external map files -<p> -<!-- ==back --> - -Besides that a few parameters are built into the `<tt>convert</tt>' script itself. -You probably won't need to change them: -<p> - -<!-- ==over 2 --> -<!-- ==item * --> -<tt><b>T1ASM</b></tt>, <tt><b>TTF2PT1</b></tt>, <tt><b>TRANS</b></tt>, <tt><b>T1FDIR</b></tt>, <tt><b>FORCEISO</b></tt> - paths to the other script -<p> -<!-- ==back --> - -Also there are a few parameters controlling the installation of -fonts for Ghostscript. Please look at their description in the -<A HREF="#gs">Ghostscript</a> section of documentation or in the <b>ttf2pt1_x2gs(1)</b> -manual page before running `<tt>convert</tt>'. If these parameters are -set, `<tt>convert</tt>' will call the `<tt>x2gs</tt>' script automatically -to install the newly converted fonts in Ghostscript. -<p> - -After creating the configuration file run the `<tt>convert</tt>' script. Look at -the result and the log file in <tt>DSTDIR</tt>. -<p> - -Add the directory with newly converted fonts to the configuration -of X server or font server. For most of the systems this step is -very straightforward. For HP-UX it's rather tricky and poorly -documented, so the file <A HREF="FONTS.hpux.html">FONTS.hpux</A> gives a short description. -<p> - -If you don't have the privileges of the root user, you still can -configure your private font server. Just use some non-standard -port number (see <A HREF="FONTS.hpux.html">FONTS.hpux</A> for an example, exept that you won't -need all the HP-related stuff on any other system). -<p> -<!-- =stop --> - -<H4> -Known Problems -</H4> -<! --------------- -> -<!-- =section cv BUGS --> -<!-- ==head2 Known problems --> - -<ul> -<li> One catch is that the X11 Type 1 font library has a rather low limit - on the font size. Because of this the fonts with more complicated - outlines and the enabled hint substitution may not fit into - this limit. The same applies to the fonts with very complicated - outlines or with very many glyphs (especially the fonts with - over 256 glyphs). So you will need to excercise caution with - these options if you plan using these fonts with X11. Some vendors - such as HP provide the Type 1 implementation licensed from Adobe - which should have no such problem. -<p> - - But there is a solution even for the generic X11. A patch located - in the subdirectory `<tt>app/X11</tt>' fixes this problem as well - as some other minor problems. Its description is provided in - <A HREF="app/X11/README.html">app/X11/README</A>. -<p> - - To fix the X11 font library, you have to get the X11 sources. I - can recommend the ftp sites of the XFree86 project <A HREF="ftp://ftp.xfree86.org">ftp://ftp.xfree86.org</A> - or of the Open Group <A HREF="ftp://ftp.x.org">ftp://ftp.x.org</A>. This patch was made on the sources - of XFree86 so you may have better success with applying it to the - XFree86 distribution. After you have got the sources, make sure - that you can compile them. Then apply the patch as described. - Make sure that it was applied properly. Compile the sources again - (actually, you need only the fonts library, the fonts server, and - possibly the X server). It would be prudent now to save your old - font library, font server and, possibly, X server. Then install - the new recently compiled versions of these files. Of course, - if you know someone who already has compiled these files for the - same OS as yours, you can just copy the binary fles from him. -<p> - - Alas, building the X11 system from the source code is not the - easiest thing in the world and if you have no experience it - can be quite difficult. In this case just avoid the aforementioned - features or check each converted font to make sure that it - works properly. -<p> - -<li> The Type1 font library from the standard X11 distribution - does not work on HP-UX (at least, up to 10.01). The font server - supplied with HP-UX up to 10.01 is also broken. Starting from - HP-UX 10.20 (I don't know about 10.10) they supply a proprietary font - library and the converted fonts work fine with it, provided that - they are configured properly (see the file <A HREF="FONTS.hpux.html">FONTS.hpux</A>). -<p> - -<li> The <tt>fonts.scale</tt> files created by the older versions of the - <tt>ttf2pt1</tt> installation program (up to release 3.1) have conflicted - with the language definitions of the <tt>Xfsft</tt> font server and - parts of it included into XFree86. To overcome this incompatibility - the never versions creats the <tt>fonts.scale</tt> file describing all the - fonts as belonging to the <tt>adobe-fontspecific</tt> encoding and - the <tt>fonts.alias</tt> file with the proper names. The drawback of - this solution is that <tt>xlsfonts</tt> gives the list of twice more - fonts. But as a side effect the option <tt><b>ENFORCEISO</b></tt> in - `<tt>convert.cfg</tt>' is not required for X11 any more. -<p> - -<li> The conversion script has no support for Eastern multi-plane fonts. - Contribution of such a support would be welcome. -<p> -</ul> -<!-- =stop --> -<!-- =section cv FILES --> -<!-- ==over 2 --> -<!-- ==item * --> -<!-- =text TTF2PT1_SHAREDIR/scripts/convert.cfg.sample --> -<!-- ==item * --> -<!-- =text TTF2PT1_SHAREDIR/scripts/* --> -<!-- ==item * --> -<!-- =text TTF2PT1_SHAREDIR/README --> -<!-- ==item * --> -<!-- =text TTF2PT1_SHAREDIR/FONTS --> -<!-- ==item * --> -<!-- =text TTF2PT1_SHAREDIR/* --> -<!-- ==item * --> -<!-- =text TTF2PT1_BINDIR/ttf2pt1 --> -<!-- ==back --> -<!-- =stop --> -<!-- =section cv SEE ALSO --> -<!-- ==over 4 --> -<!-- ==item * --> -<!-- =text L&lt;ttf2pt1(1)&gt; --> -<!-- ==item * --> -<!-- =text L&lt;ttf2pt1_x2gs(1)&gt; --> -<!-- ==item * --> -<!-- =text L&lt;t1asm(1)&gt; --> -<!-- ==back --> -<!-- =stop --> - -<A NAME="gs"></A> -<H3> -Ghostscript -</H3> -<! -=========== -> -<!-- =section gs NAME --> -<!-- =text B&lt;ttf2pt1_x2gs&gt; - font installer for Ghostscript --> -<!-- =stop --> - -<!-- =section gs DESCRIPTION --> -The fonts generated with <b>ttf2pt1</b> work fine with Ghostscript by -themselves. The script `<b>x2gs</b>' (or `<b>ttf2pt1_x2gs</b>' when installed -into a public directory, to avoid name conflicts with other -programs) links the font files from the X11 direcotry into the Ghostscript -directory and automatically creates the description file (<tt>Fontmap</tt>) -in Ghostscript format. -<!-- =stop --> - -It's called as: -<p> - -<!-- =section gs SYNOPSIS --> -<!-- =text ttf2pt1_x2gs B&lt;[config-file]&gt; --> -<!-- =stop --> -<blockquote> - x2gs <i>[config-file]</i> -</blockquote> - -<!-- =section gs DESCRIPTION --> -If the configuration file is not specified as an argument then the file -`<TT>convert.cfg</TT>' in the current directory is used, just like the -`<tt>convert</tt>' script does. Indeed, this configuration file is used for -both scripts. -<p> - -The Ghostscript-related parameters in the configuration file are: -<p> - -<b><tt>DSTDIR</tt></b> - the X11 font directory used by `<tt>x2gs</tt>' as the - source of the fonts. This parameter is common with the X11 - configuration. -<p> - -<b><tt>GSDIR</tt></b> - the base directory of Ghostsript. If this - parameter is set to an empty string then `<tt>convert</tt>' won't - call `<tt>x2gs</tt>'. So if you want to get only the X11 fonts - installed then set this parameter to an empty string. This - directory may vary on various system, so please check your - system and set this value accordingly before running the script. -<p> - -<b><tt>GSFONTDIR</tt></b> - the font directory of Ghostscript. In the standard - Ghostscript installation it's a subdirectory of <tt>GSDIR</tt> - but some systems may use completely different directories. -<p> - -<b><tt>GSCONFDIR</tt></b> - the configuration subdirectory of Ghostscript - that contains the <tt>Fontmap</tt> file. -<p> - -<b><tt>INSTALLFONTMAP</tt></b> - if the value is set to <b><tt>YES</tt></b> then - install the entries for the new fonts right into the main - <tt>Fontmap</tt> file. Otherwise just leave the file <tt>Fontmap.ttf</tt> - in the Ghostscript configuration directory. -<p> - - -After preparing the configuration file run the script. It symbolicaly links -all the font files and creates the description file <tt>Fontmap.ttf</tt> in -<tt>GSCONDFIR</tt>. After that there are two choices. -<p> - -If the option <tt>INSTALLFONTMAP</tt> was set to <tt>YES</tt> then -the font descriptions are also automatically installed into the -master <tt>Fontmap</tt> file. The script is clever enough to -detect if it was run multiple times with the same directories -and if so it replaces the old <tt>Fontmap</tt> entries with -the new ones instead of just accumulating all of them. You -may also run it multiple times for multiple X11 directories -and all the results will be properly collected in the <tt>Fontmap</tt>. -But it's your responsibility to watch that the names of the -font files don't overlap. If the X11 font directory gets -renamed then you have to remove its font entries from the -<tt>Fontmap</tt> and only after that re-run `<tt>x2gs</tt>' -for the new directory. -<p> - -On the other hand if the option <tt>INSTALLFONTMAP</tt> was set to -<tt>NO</tt> then go to the <tt>GSCONFDIR</tt> directory and insert the -contents of <tt>Fontmap.ttf</tt> into the <tt>Fontmap</tt> file -manually. This step may be left manual to make the installation -a little bit more safe. -<p> - -After that you may also want to redefine some of the aliases in -<tt>Fontmap</tt> to refer to the newly installed fonts. -But the redefinition of the aliases may be dangerous if the width of -characters in the new font will be different from the old font. -Alas, there is no visible solution of this problem yet. -<p> -<!-- =stop --> -<!-- =section gs FILES --> -<!-- ==over 2 --> -<!-- ==item * --> -<!-- =text TTF2PT1_SHAREDIR/scripts/convert.cfg.sample --> -<!-- ==item * --> -<!-- =text TTF2PT1_SHAREDIR/scripts/* --> -<!-- ==item * --> -<!-- =text TTF2PT1_SHAREDIR/README --> -<!-- ==item * --> -<!-- =text TTF2PT1_SHAREDIR/FONTS --> -<!-- ==item * --> -<!-- =text TTF2PT1_SHAREDIR/* --> -<!-- ==item * --> -<!-- =text TTF2PT1_BINDIR/ttf2pt1 --> -<!-- ==back --> -<!-- =stop --> -<!-- =section gs SEE ALSO --> -<!-- ==over 4 --> -<!-- ==item * --> -<!-- =text L&lt;ttf2pt1(1)&gt; --> -<!-- ==item * --> -<!-- =text L&lt;ttf2pt1_convert(1)&gt; --> -<!-- ==item * --> -<!-- =text L&lt;t1asm(1)&gt; --> -<!-- ==back --> -<!-- =stop --> - -<A NAME="win"></A> -<H3> -MS Windows -</H3> -<! -=========== -> - -<b>Ttf2pt1</b> can be built on Windows either with native compiler or in -POSIX emulation mode. -<p> - -Native MS Windows compilers require a different way to build the converter -instead of the Makefile (their <tt>make</tt> programs commonly are quite weird -and limited in capabilities). An example of batch file <tt>winbuild.bat</tt> -is provided for MS Visual C/C++. Probably it can be easily adapted for other -32-bit Windows and DOS compilers. The important part is to define the -preprocessor symbol WINDOWS during compilation. -<p> - -Cygnus <tt>make</tt> almost supports full Makefiles but not quite. Seems -like its POSIX support is also of the same quality "almost but not quite". -So another command file <tt>cygbuild.sh</tt> is provided for Cygnus GNU C, also -with the preprocessor symbol WINDOWS defined. It is intended to be run from -the Cygnus BASH shell. To run the programs produced by the Cygnus compiler -the Cygnus library file <tt>CYGWIN1.DLL</tt> should be copied first into -<tt>C:\WINDOWS</tt>. -<p> - -To run the accompanying scripts Perl for Windows will be required as well as -other tools from the Cygnus set. -<p> - -The Windows support was not particularly tested, so in case of problems with -building or running the converter please let us know. -<p> - -The pre-built code (possibly of an older version) of ttf2pt1 for MS Windows is -available from the GnuWin32 project from - -<A HREF="http://gnuwin32.sourceforge.net/packages/ttf2pt1.htm">http://gnuwin32.sourceforge.net/packages/ttf2pt1.htm</A> -<p> - -<A NAME="netscape"></a> -<H3> -Netscape Navigator/Communicator -</H3> -<! -=============================== -> - -Basically, the biggest problem with Netscape Navigator is that -it has built-in fixed PostScript font names and built-in fixed -glyph tables for them. Oh, no, that's two! Let's start over: -basically the two biggest problems of Netscape Navigator are -that (one)it has built-in fixed PostScript font names and (two) -built-in fixed glyph tables for them and (three) it always -assumes that the fonts have ISOLatin1 encoding. OK, let's -start over again: basically the three biggest problems of Netscape -Navigator are that (one) it has built-in fixed PostScript font names, -(two) built-in fixed glyph tables for them and (three) it always -assumes that the fonts have ISOLatin1 encoding and (four) it -does not remember the scaled font size between the sessions. -You did not expect such a Spanish Inquisition, did you ? (<A HREF="#nsfn1">*</a>) -<p> - -Luckily, we have solutions for all of these problems. They are -located in the subdirectory `<tt>app/netscape</tt>' and described -in <A HREF="app/netscape/README.html">app/netscape/README</a>. -<p> - -<A NAME="nsfn1"></a> -&nbsp;&nbsp;-------<br> -&nbsp;&nbsp;<FONT SIZE=-1>*) See Monty Python's Flying Circus, episode 15</FONT></FONT> -<p> - -<FONT COLOR="#3333FF"><FONT SIZE=-1>*8*</FONT></FONT> -<H4> -Netscape and cyrillic fonts<br> -<! ---------------------------- -> -(courtesy of Zvezdan Petkovic) -</H4> - -If you use TrueType fonts in your X, as I do, and you always get -KOI8-R encoded pages, then your Netscape does not recognise windows-1251 -encoding. Microsoft TrueType fonts simply declare all encodings they -can support including KOI8-R. For some reason, KOI8-R always wins over -ISO-8859-5 in Netscape under X. If you are reading other cyrillic -languages besides Russian, you might want to either erase KOI8-R entries -from the fonts.dir and fonts.scale files, or alternatively fix Netscape. -I put this line in my .Xdefaults. -<p> - -<blockquote><tt> - Netscape*documentFonts.charset*koi8-r: iso-8859-5 -</tt></blockquote> -<p> - -Notice that you can still read Russian sites without trouble because -Netscape translates KOI8-R to ISO-8859-5 on the fly. I read both Russian -and Serbian sites with no trouble. -<p> - -<b>Note:</b> <i>If anybody knows the way to tell Netscape under Unix how to -recognise {windows,ibm,cp}-1251 encoded fonts, I'd like to hear about that.</i> -<p> - -<A NAME="rpm"></a> -<H3> -Linux RPM package -</H3> -<! -================= -> - -The spec file for the creation of a Linux RPM package is located in -<tt>app/RPM</tt>. It has been contributed by Johan Vromans. When -<tt>make all</tt> is ran in the main directory it among the other -things creates the version of itself adapted to Linux in <tt>app/RPM</tt>, -you may want to copy that version back to the main directory. -<p> - -<B>Warning:</B> Please note that the install section is incomplete, and -the installed scripts won't work until the paths inside them -are corrected. -<p> - -<A NAME="framemaker"></a> -<H3> -FrameMaker -</H3> -<! -========== -> - -The fonts and AFM files generated by the version 3.2 and higher -should work with Framemaker without problems. The AFM files -generated by the previous versions of the converter require a -line added to them: -<p> - -&nbsp;&nbsp;<tt>EncodingScheme FontSpecific</tt> -<p> - -And the underscores in the font names of the font and AFM files -generated by the older versions may need to be changed to dashes. -<p> - -<B>NOTE by Jason Baietto:</B> Ignore the directions in the Frame on-line docs -that say to put a "serverdict begin 0 exitserver" line in the pfa files. -Doing this caused both my printer and ghostscript to choke on the resulting -output from FrameMaker, so I would not advise doing this (though your -mileage may vary). -<p> - -<A NAME="soffice"></a> -<H3> -StarOffice -</H3> -<! -========== -> - -StarOffice 5.1x has been reported to crash if the <tt>.afm</tt> file contains -spaces in the values of such statements as <b>Version</b>, <b>Weight</b> etc. -These spaces are permitted by the Adobe spec, so this is a problem of -StarOffice. The easiest way to fix these <tt>.afm</tt> files for StarOffice -is to remove spaces in these strings or remove these strings (in case if -they are optional) at all. This can be done automatically with a <tt>sed</tt> -script. It seems that StarOffice 5.2 has this problem fixed, so we decided to -spend no efforts on providing workarounds for 5.1 with <tt>ttf2pt1</tt>. -<p> - -</BODY> -</HTML> diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/Makefile b/application/third_party/dompdf/lib/ttf2ufm/src/Makefile deleted file mode 100644 index 3a81cdc8..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/Makefile +++ /dev/null @@ -1,279 +0,0 @@ - -# This file should be configured before running `make'. -# Uncomment or change the values that are relevant for your OS. - -# The preferred C compiler (by default use the OS-specific default value). -# For BSD/OS, FreeBSD, Linux (all flavors), NetBSD, OpenBSD the default -# compiler is GNU C. -# (Note please the politically correct ordering by alphabet ! :-) -# -# Use GNU C even if it's not the default compiler -# -#CC=gcc -# -# Use the standard ANSI C compiler on HP-UX even if it's not default -# -#CC=c89 - -# -# The system-dependent flags for the C compiler -# -# Default - -CFLAGS_SYS= -g - -# For GNU C -# -#CFLAGS_SYS= -O2 -# -# For GNU C with long options support library (Linux etc.) -# -#CFLAGS_SYS= -O2 -D_GNU_SOURCE -# -# For GNU C on HP-UX/PA-RISC 1.1 -# -#CFLAGS_SYS= -O2 -Wa,-w -# -# For the standard ANSI C on HP-UX -# -#CFLAGS_SYS= +O2 -D_HPUX_SOURCE - -# -# The system-dependent libraries -# -# Defalut (for the BSD-style OSes) - -LIBS_SYS= -lm - -# For SystemV (such as SCO, UnixWare, Solaris, but _NOT_ Linux or HP-UX) -# -#LIBS_SYS= -lm -lsocket - -# -# The flags for C compiler for the FreeType-2 library (disabled by default). -# This WON'T BUILD with FT2-beta8, use the FreeType release 2.0.4 -# http://download.sourceforge.net/freetype/freetype-2.0.4.tar.gz - -#CFLAGS_FT= - -# To enable use of the FreeType-2 library -# (if the include and lib directory do not match your installation, -# modify them), also uncomment LIBS_FT -# -CFLAGS_FT = -DUSE_FREETYPE -I/usr/include/freetype2 -I/usr/include - -# -# The FreeType-2 library flags (disabled by default) - -#LIBS_FT= - -# To enable use of the FreeType-2 library -# (if the include and lib directory do not match your installation, -# modify them), also uncomment CFLAGS_FT -# -LIBS_FT= -L/usr/lib -lfreetype - -# -# The flags for C compiler for the Autotrace library (disabled by default). -# USE OF THIS FEATURE IS STRONGLY DISCOURAGED, THE BUILT-IN TRACING -# (AKA VECTORIZATION) PROVIDES MUCH BETTER RESULTS. -# The tested version is 0.29a (and the fonts produced with it are -# absolutely not usable). -# http://download.sourceforge.net/autotrace/autotrace-0.29.tar.gz - -CFLAGS_AT= - -# To enable use of the Autotrace library -# (if the include and lib directory do not match your installation, -# modify them), also uncomment LIBS_AT -# -#CFLAGS_AT = -DUSE_AUTOTRACE -I/usr/local/include - -# -# The Autotrace library flags (disabled by default) - -LIBS_AT= - -# To enable use of the Autotrace library -# (if the include and lib directory do not match your installation, -# modify them), also uncomment CFLAGS_AT -# -#LIBS_AT= -L/usr/local/lib -lautotrace - -# -# Preference of front-ends if multiple parsers match a file -# (by default the build-in front-end takes preference over FreeType) - -CFLAGS_PREF= - -# To prefer FreeType (if enabled): -# -#CFLAGS_PREF= -DPREFER_FREETYPE - -# Uncomment the second line to not compile t1asm into ttf2pt1 -CFLAGS_EXTT1ASM= -#CFLAGS_EXTT1ASM= -DEXTERNAL_T1ASM - -CFLAGS= $(CFLAGS_SYS) $(CFLAGS_FT) $(CFLAGS_AT) $(CFLAGS_PREF) -LIBS= $(LIBS_SYS) $(LIBS_FT) $(LIBS_AT) - -# Installation-related stuff -# -# The base dir for installation and subdirs in it -INSTDIR = /usr/local -# for binaries -BINDIR = $(INSTDIR)/bin -# for binaries of little general interest -LIBXDIR = $(INSTDIR)/libexec/ttf2pt1 -# for scripts, maps/encodings etc. -SHAREDIR = $(INSTDIR)/share/ttf2pt1 -MANDIR = $(INSTDIR)/man - -# owner and group of installed files -OWNER = root -GROUP = bin - -# After you have configured the Makefile, comment out the following -# definition: -warning: docs - @echo >&2 - @echo " You have to configure the Makefile before running make!" >&2 - @echo "(or if you are lazy and hope that it will work as is run \`make all')">&2 - @echo >&2 - -DOCS=CHANGES README FONTS FONTS.hpux encodings/README other/README \ - app/X11/README app/netscape/README app/TeX/README - -SUBDIRS = app encodings maps scripts other -TXTFILES = README* FONTS* CHANGES* COPYRIGHT - -MANS1=ttf2pt1.1 ttf2pt1_convert.1 ttf2pt1_x2gs.1 -MANS=$(MANS1) $(MANS5) - -all: t1asm ttf2pt1 docs mans rpm - -docs: $(DOCS) - -mans: $(MANS) - -clean: - rm -f t1asm ttf2pt1 *.o app/RPM/Makefile app/RPM/*.spec *.core core.* core - ( cd other && make clean; ) - ( cd app/netscape && make clean; ) - -veryclean: clean - rm -f $(DOCS) $(MANS) - -rpm: app/RPM/Makefile app/RPM/ttf2pt1.spec - -ttf2pt1.1: README.html - scripts/html2man . . <README.html - -ttf2pt1_convert.1 ttf2pt1_x2gs.1: FONTS.html - scripts/html2man . . <FONTS.html - -app/RPM/Makefile: Makefile - sed 's/^CFLAGS_SYS.*=.*$$/CFLAGS_SYS= -O2 -D_GNU_SOURCE/;/warning:/,/^$$/s/^/#/' <Makefile >app/RPM/Makefile - -app/RPM/ttf2pt1.spec: app/RPM/ttf2pt1.spec.src version.h - sed 's/^Version:.*/Version: '`grep TTF2PT1_VERSION version.h| cut -d\" -f2`'/' <app/RPM/ttf2pt1.spec.src >$@ - -t1asm: t1asm.c - $(CC) $(CFLAGS) -o t1asm -DSTANDALONE t1asm.c $(LIBS) - -ttf2pt1.o: ttf2pt1.c ttf.h pt1.h global.h version.h - $(CC) $(CFLAGS) -c ttf2pt1.c - -pt1.o: pt1.c ttf.h pt1.h global.h - $(CC) $(CFLAGS) -c pt1.c - -ttf.o: ttf.c ttf.h pt1.h global.h - $(CC) $(CFLAGS) -c ttf.c - -ft.o: ft.c pt1.h global.h - $(CC) $(CFLAGS) -c ft.c - -bdf.o: bdf.c pt1.h global.h - $(CC) $(CFLAGS) -c bdf.c - -bitmap.o: bitmap.c pt1.h global.h - $(CC) $(CFLAGS) -c bitmap.c - -runt1asm.o: runt1asm.c global.h - $(CC) $(CFLAGS) $(CFLAGS_EXTT1ASM) -c runt1asm.c - -ttf2pt1: ttf2pt1.o pt1.o runt1asm.o ttf.o ft.o bdf.o bitmap.o - $(CC) $(CFLAGS) -o ttf2pt1 ttf2pt1.o pt1.o runt1asm.o ttf.o ft.o bdf.o bitmap.o $(LIBS) - -CHANGES: CHANGES.html - scripts/unhtml <CHANGES.html >CHANGES - -README: README.html - scripts/unhtml <README.html >README - -encodings/README: encodings/README.html - scripts/unhtml <encodings/README.html >encodings/README - -other/README: other/README.html - scripts/unhtml <other/README.html >other/README - -app/X11/README: app/X11/README.html - scripts/unhtml <app/X11/README.html >app/X11/README - -app/netscape/README: app/netscape/README.html - scripts/unhtml <app/netscape/README.html >app/netscape/README - -app/TeX/README: app/TeX/README.html - scripts/unhtml <app/TeX/README.html >app/TeX/README - -FONTS: FONTS.html - scripts/unhtml <FONTS.html >FONTS - -FONTS.hpux: FONTS.hpux.html - scripts/unhtml <FONTS.hpux.html >FONTS.hpux - -install: all - scripts/inst_dir $(BINDIR) $(OWNER) $(GROUP) 0755 - scripts/inst_dir $(LIBXDIR) $(OWNER) $(GROUP) 0755 - scripts/inst_dir $(SHAREDIR) $(OWNER) $(GROUP) 0755 - scripts/inst_dir $(MANDIR)/man1 $(OWNER) $(GROUP) 0755 - scripts/inst_dir $(MANDIR)/man5 $(OWNER) $(GROUP) 0755 - cp -R $(TXTFILES) $(SUBDIRS) $(SHAREDIR) - chown -R $(OWNER) $(SHAREDIR) - chgrp -R $(GROUP) $(SHAREDIR) - chmod -R go-w $(SHAREDIR) - scripts/inst_file ttf2pt1 $(BINDIR)/ttf2pt1 $(OWNER) $(GROUP) 0755 - [ -f $(BINDIR)/t1asm ] || scripts/inst_file t1asm $(LIBXDIR)/t1asm $(OWNER) $(GROUP) 0755 - sed -e 's|^TTF2PT1_BINDIR=$$|TTF2PT1_BINDIR=$(BINDIR)|;' \ - -e 's|^TTF2PT1_LIBXDIR=$$|TTF2PT1_LIBXDIR=$(LIBXDIR)|;' \ - -e 's|^TTF2PT1_SHAREDIR=$$|TTF2PT1_SHAREDIR=$(SHAREDIR)|;' <scripts/convert >cvt.tmp - scripts/inst_file cvt.tmp $(BINDIR)/ttf2pt1_convert $(OWNER) $(GROUP) 0755 - scripts/inst_file cvt.tmp $(SHAREDIR)/scripts/convert $(OWNER) $(GROUP) 0755 - rm cvt.tmp - scripts/inst_file scripts/x2gs $(BINDIR)/ttf2pt1_x2gs $(OWNER) $(GROUP) 0755 - for i in $(MANS1); do { \ - sed -e 's|TTF2PT1_BINDIR|$(BINDIR)|;' \ - -e 's|TTF2PT1_LIBXDIR|$(LIBXDIR)|;' \ - -e 's|TTF2PT1_SHAREDIR|$(SHAREDIR)|;' <$$i >$(MANDIR)/man1/$$i \ - && chown $(OWNER) $(MANDIR)/man1/$$i \ - && chgrp $(GROUP) $(MANDIR)/man1/$$i \ - && chmod 0644 $(MANDIR)/man1/$$i \ - || exit 1; \ - } done - -uninstall: - rm -f $(BINDIR)/ttf2pt1 $(BINDIR)/ttf2pt1_convert $(BINDIR)/ttf2pt1_x2gs - rm -rf $(LIBXDIR) - rm -rf $(SHAREDIR) - for i in $(MANS1); do { \ - rm -f $(MANDIR)/man1/$$i $(MANDIR)/man1/$$i.gz; \ - } done - - -# targets for automatic generation of releases and snapshots - -snapshot: - scripts/mkrel snapshot - -release: - scripts/mkrel release diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/README b/application/third_party/dompdf/lib/ttf2ufm/src/README deleted file mode 100644 index f1cf5b67..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/README +++ /dev/null @@ -1,814 +0,0 @@ -TTF2PT1 - A True Type to PostScript Type 1 Font Converter - -(Do not edit this file, it is generated from README.html!!!) -[ - Based on ttf2pfa by Andrew Weeks, and help from Frank Siegert. - Modification by Mark Heath. - Further modification by Sergey Babkin. - The Type1 assembler by I. Lee Hetherington with modifications by - Kai-Uwe Herbing. -] - -Ever wanted to install a particular font on your XServer but only could find -the font you are after in True Type Format? - -Ever asked comp.fonts for a True Type to Type 1 converter and got a List -of Commercial software that doesn't run on your Operating System? - -Well, this program should be the answer. This program is written in C (so it -should be portable) and therefore should run on any OS. The only limitation -is that the program requires some method of converting Big endian integers into -local host integers so the network functions ntohs and ntohl are used. These -can be replaced by macros if your platform doesn't have them. -Of course the target platform requires a C compiler and command line ability. - -Ttf2pt1 is a font converter from the True Type format (and some other formats -supported by the FreeType library as well) to the Adobe Type1 format. - -The versions 3.0 and later got rather extensive post-processing algorithm that -brings the converted fonts to the requirements of the Type1 standard, tries to -correct the rounding errors introduced during conversions and some simple -kinds of bugs that are typical for the public domain TTF fonts. It -also generates the hints that enable much better rendering of fonts in -small sizes that are typical for the computer displays. But everything -has its price, and some of the optimizations may not work well for certain -fonts. That's why the options were added to the converter, to control -the performed optimizations. - -The converter is simple to run, just: - - ttf2pt1 [-options] ttffont.ttf [Fontname] -or - ttf2pt1 [-options] ttffont.ttf - - -The first variant creates the file Fontname.pfa (or Fontname.pfb if the -option '-b' was used) with the converted font and Fontname.afm with the -font metrics, the second one prints the font or another file (if the option -'-G' was used) on the standard output from where it can be immediately -piped through some filter. If no Fontname is specified for the first -variant, the name is generated from ttffont by replacing the .ttf -filename suffix. - -Most of the time no options are neccessary (with a possible exception -of '-e'). But if there are some troubles with the resulting font, they -may be used to control the conversion. -The options are: - --a - Include all the glyphs from the source file into the converted - file. If this option is not specified then only the glyphs that have - been assigned some encoding are included, because the rest of glyphs - would be inaccessible anyway and would only consume the disk space. - But some applications are clever enough to change the encoding on - the fly and thus use the other glyphs, in this case they could - benefit from using this option. But there is a catch: the X11 library - has rather low limit for the font size. Including more glyphs increases - the file size and thus increases the chance of hitting this limit. - See app/X11/README for the description of a - patch to X11 which fixes this problem. - --b - Encode the resulting font to produce a ready .pfb file. - --d suboptions - Debugging options. The suboptions are: - - a - Print out the absolute coordinates of dots in outlines. Such - a font can not be used by any program (that's why this option is - incompatible with '-e') but it has proven to be a valuable debuging - information. - - r - Do not reverse the direction of outlines. The TTF fonts have - the standard direction of outlines opposite to the Type1 fonts. So - they should be reversed during proper conversion. This option - may be used for debugging or to handle a TTF font with wrong - direction of outlines (possibly, converted in a broken way from - a Type1 font). The first signs of the wrong direction are the - letters like "P" or "B" without the unpainted "holes" inside. - --e - Assemble the resulting font to produce a ready .pfa file. - [ S.B.: Personally I don't think that this option is particularly useful. - The same result may be achieved by piping the unassembled data - through t1asm, the Type 1 assembler. And, anyways, it's good to - have the t1utils package handy. But Mark and many users think that - this functionality is good and it took not much time to add this option. ] - --F - Force the Unicode encoding: any type of MS encoding specified - in the font is ignored and the font is treated like it has Unicode - encoding. WARNING: this option is intended for buggy fonts - which actually are in Unicode but are marked as something else. The - effect on the other fonts is unpredictable. - --G suboptions - File generation options. The suboptions may be lowercase - or uppercase, the lowercase ones disable the generation of particular - files, the corresponding uppercase suboptions enable the generation of the - same kind of files. If the result of ttf2pt1 is requested to be printed on - the standard output, the last enabling suboption of -G determines - which file will be written to the standard output and the rest of files - will be discarded. For example, -G A will request the AFM file. - The suboptions to disable/enable the generation of the files are: - - f/F - The font file. Depending on the other options this file - will have one of the suffixes .t1a, .pfa or .pfb. If the conversion result - is requested on the standard output ('-' is used as the output file name) - then the font file will also be written there by default, if not overwritten - by another suboption of -G. - Default: enabled - - a/A - The Adobe font metrics file (.afm). - Default: enabled - - e/E - The dvips encoding file (.enc). - Default: disabled - - --l language[+argument] - Extract the fonts for the specified language from a - multi-language Unicode font. If this option is not used the converter - tries to guess the language by the values of the shell variable LANG. - If it is not able to guess the language by LANG it tries all the - languages in the order they are listed. - - After the plus sign an optional argument for the language extractor - may be specified. The format of the argument is absolutely up to - the particular language converter. The primary purpose of the - argument is to support selection of planes for the multi-plane - Eastern encodings but it can also be used in any other way. The - language extractor may decide to add the plane name in some form - to the name of the resulting font. None of the currently supported - languages make any use of the argument yet. - - As of now the following languages are supported: - latin1 - for all the languages using the Latin-1 encoding - latin2 - for the Central European languages - latin4 - for the Baltic languages - latin5 - for the Turkish language - cyrillic - for the languages with Cyrillic alphabet - russian - historic synonym for cyrillic - bulgarian - historic synonym for cyrillic - adobestd - for the AdobeStandard encoding used by TeX - plane+argument - to select one plane from a multi-byte encoding - - The argument of the "plane" language may be in one of three forms: - plane+pid=<pid>,eid=<eid> - plane+pid=<pid>,eid=<eid>,<plane_number> - plane+<plane_number> - - Pid (TTF platform id) and eid (TTF encoding id) select a particular - TTF encoding table in the original font. They are specified as decimal - numbers. If this particular encoding table is not present in the font - file then the conversion fails. The native ("ttf") front-end parser supports - only pid=3 (Windows platform), the FreeType-based ("ft") front-end supports - any platform. If pid/eid is not specified then the TTF encoding table is - determined as usual: Unicode encoding if it's first or an 8-bit encoding - if not (and for an 8-bit encoding the plane number is silently ignored). - To prevent the converter from falling back to an 8-bit encoding, specify - the Unicode pid/eid value explicitly. - - Plane_number is a hexadecimal (if starts with "0x") or decimal number. - It gives the values of upper bytes for which 256 characters will be - selected. If not specified, defaults to 0. It is also used as a font - name suffix (the leading "0x" is not included into the suffix). - - NOTE: - It seems that many Eastern fonts use features of the TTF format that are - not supported by the ttf2pt1's built-in front-end parser. Because of - this for now we recommend using the FreeType-based parser (option - '-p ft') with the "plane" language. - - NOTE: - You may notice that the language names are not uniform: some are the - names of particular languages and some are names of encodings. This - is because of the different approaches. The original idea was to - implement a conversion from Unicode to the appropriate Windows - encoding for a given language. And then use the translation tables - to generate the fonts in whatever final encodings are needed. This - would allow to pile together the Unicode fonts and the non-Unicode - Windows fonts for that language and let the program to sort them out - automatically. And then generate fonts in all the possible encodings - for that language. An example of this approach is the Russian language - support. But if there is no multiplicity of encodings used for some - languages and if the non-Unicode fonts are not considered important - by the users, another way would be simpler to implement: just provide - only one table for extraction of the target encoding from Unicode - and don't bother with the translation tables. The latin* "languages" - are examples of this approach. If somebody feels that he needs the - Type1 fonts both in Latin-* and Windows encodings he or she is absolutely - welcome to submit the code to implement it. - - WARNING: - Some of the glyphs included into the AdobeStandard encoding are not - included into the Unicode standard. The most typical examples of such - glyphs are ligatures like 'fi', 'fl' etc. Because of this the font - designers may place them at various places. The converter tries to - do its best, if the glyphs have honest Adobe names and/or are - placed at the same codes as in the Microsoft fonts they will be - picked up. Otherwise a possible solution is to use the option '-L' - with an external map. - --L file[+[pid=<pid>,eid=<eid>,][plane]] - Extract the fonts for the specified - language from a multi-language font using the map from this file. This is - rather like the option '-l' but the encoding map is not - compiled into the program, it's taken from that file, so it's - easy to edit. Examples of such files are provided in - maps/adobe-standard-encoding.map, CP1250.map. (NOTE: - the 'standard encoding' map does not include all the glyphs of the - AdobeStandard encoding, it's provided only as an example.) The - description of the supported map formats is in the file - maps/unicode-sample.map. - - Likewise to '-l', an argument may be specified after the map file - name. But in this case the argument has fixed meaning: it selects the - original TTF encoding table (the syntax is the same as in '-l plane') - and/or a plane of the map file. The plane name also gets added after dash - to the font name. The plane is a concept used in the Eastern fonts with big - number of glyphs: one TTF font gets divided into multiple Type1 fonts, - each containing one plane of up to 256 glyphs. But with a little - creativity this concept may be used for other purposes of combining - multiple translation maps into one file. To extract multiple planes - from a TTF font ttf2pt1 must be run multiple times, each time with - a different plane name specified. - - The default original TTF encoding table used for the option '-L' is - Unicode. The map files may include directives to specify different original - TTF encodings. However if the pid/eid pair is specified with - it overrides any original encoding specified in the map file. - --m type=value - Set maximal or minimal limits of resources. - These limits control the the font generation by limiting the resources - that the font is permitted to require from the PostScript interpreter. - The currently supported types of limits are: - - h - the maximal hint stack depth for the substituted hints. - The default value is 128, according to the limitation in X11. This seems to - be the lowest (and thus the safest) widespread value. To display the - hint stack depth required by each glyph in a .t1a file use the script - scripts/cntstems.pl. - --O suboptions - Outline processing options. The suboptions - may be lowercase or uppercase, the lowercase ones disable the features, - the corresponding uppercase suboptions enable the same features. - The suboptions to disable/enable features are: - - b/B - Guessing of the ForceBold parameter. This parameter helps - the Type1 engine to rasterize the bold fonts properly at small sizes. - But the algorithm used to guess the proper value of this flag makes - that guess based solely on the font name. In rare cases that may cause - errors, in these cases you may want to disable this guessing. - Default: enabled - - h/H - Autogeneration of hints. The really complex outlines - may confuse the algorithm, so theoretically it may be useful - sometimes to disable them. Although up to now it seems that - even bad hints are better than no hints at all. - Default: enabled - - u/U - Hint substitution. Hint substitution is a technique - permitting generation of more detailed hints for the rasterizer. It allows - to use different sets of hints for different parts of a glyph and change - these sets as neccessary during rasterization (that's why "substituted"). - So it should improve the quality of the fonts rendered at small sizes. - But there are two catches: First, the X11 library has rather low limit for - the font size. More detailed hints increase the file size and thus increase - the chance of hitting this limit (that does not mean that you shall hit it - but you may if your fonts are particularly big). This is especially - probable for Unicode fonts converted with option '-a', so you may want to - use '-a' together with '-Ou'. See app/X11/README for the description of - a patch to X11 which fixes this problem. Second, some rasterizers (again, - X11 is the typical example) have a limitation for total number of hints - used when drawing a glyph (also known as the hint stack depth). If that - stack overflows the glyph is ignored. Starting from version 3.22 ttf2pt1 - uses algorithms to minimizing this depth, with the trade-off of slightly - bigger font files. The glyphs which still exceed the limit set by option - '-mh' have all the substituted hints removed and only base hints left. - The algorithms seem to have been refined far enough to make the fonts with - substituted hints look better than the fonts without them or at least the - same. Still if the original fonts are not well-designed the detailed - hinting may emphasize the defects of the design, such as non-even thickness - of lines. So provided that you are not afraid of the X11 bug the best idea - would be to generate a font with this feature and without it, then compare - the results using the program other/cmpf (see the description - in other/README) and decide which one looks better. - Default: enabled - - o/O - Space optimization of the outlines' code. This kind of optimization - never hurts, and the only reason to disable this feature is for comparison - of the generated fonts with the fonts generated by the previous versions of - converter. Well, it _almost_ never hurts. As it turned out there exist - some brain-damaged printers which don't understand it. Actually this - feature does not change the outlines at all. The Type 1 font manual - provides a set of redundant operators that make font description shorter, - such as '10 hlineto' instead of '0 10 rlineto' to describe a horizontal - line. This feature enables use of these operators. - Default: enabled - - s/S - Smoothing of outlines. If the font is broken in some - way (even the ones that are not easily noticeable), such smoothing - may break it further. So disabling this feature is the first thing to be - tried if some font looks odd. But with smoothing off the hint generation - algorithms may not work properly too. - Default: enabled - - t/T - Auto-scaling to the 1000x1000 Type1 standard matrix. The - TTF fonts are described in terms of an arbitrary matrix up to - 4000x4000. The converted fonts must be scaled to conform to - the Type1 standard. But the scaling introduces additional rounding - errors, so it may be curious sometimes to look at the font in its - original scale. - Default: enabled - - v/V - Do vectorization on the bitmap fonts. Functionally - "vectorization" is the same thing as "autotracing", a different word is - used purely to differentiate it from the Autotrace library. It tries to - produce nice smooth outlines from bitmaps. This feature is still a work - in progress though the results are already mostly decent. - Default: disabled - - w/W - Glyphs' width corection. This option is designed to be - used on broken fonts which specify too narrow widths for the - letters. You can tell that a font can benefit from this option - if you see that the characters are smashed together without - any whitespace between them. This option causes the converter - to set the character widths to the actual width of this character - plus the width of a typical vertical stem. But on the other hand - the well-designed fonts may have characters that look better if - their widths are set slightly narrower. Such well-designed fonts - will benefit from disabling this feature. You may want to convert - a font with and without this feature, compare the results and - select the better one. This feature may be used only on proportional - fonts, it has no effect on the fixed-width fonts. - Default: disabled - - z/Z - Use the Autotrace library on the bitmap fonts. The results - are horrible and the use of this option is not recommended. This option is - present for experimental purposes. It may change or be removed in the - future. The working tracing can be achieved with option -OV. - Default: disabled - --p parser_name - Use the specified front-end parser to read the font file. - If this option is not used, ttf2pt1 selects the parser automatically based - on the suffix of the font file name, it uses the first parser in its - list that supports this font type. Now two parsers are supported: - - ttf - built-in parser for the ttf files (suffix .ttf) - bdf - built-in parser for the BDF files (suffix .bdf) - ft - parser based on the FreeType-2 library (suffixes .ttf, - .otf, .pfa, .pfb) - - The parser ft is NOT linked in by default. See Makefile - for instructions how to enable it. We do no support this parser on - Windows: probably it will work but nobody tried and nobody knows how - to build it. - - The conversion of the bitmap fonts (such as BDF) is simplistic yet, - producing jagged outlines. When converting such fonts, it might be - a good idea to turn off the hint substitution (using option -Ou) - because the hints produced will be huge but not adding much to the - quality of the fonts. - --u number - Mark the font with this value as its - UniqueID. The UniqueID is used by the printers with the hard disks - to cache the rasterized characters and thus significantly - speed-up the printing. Some of those printers just can't - store the fonts without UniqueID on their disk.The problem - is that the ID is supposed to be unique, as it name says. And - there is no easy way to create a guaranteed unique ID. Adobe specifies - the range 4000000-4999999 for private IDs but still it's difficult - to guarantee the uniqueness within it. So if you don't really need the - UniqueID don't use it, it's optional. Luckily there are a few millions of - possible IDs, so the chances of collision are rather low. - If instead of the number a special value 'A' is given - then the converter generates the value of UniqueID automatically, - as a hash of the font name. (NOTE: in the version 3.22 the - algorithm for autogeneration of UniqueID was changed to fit the values - into the Adobe-spacified range. This means that if UniqueIDs were used - then the printer's cache may need to be flushed before replacing the - fonts converted by an old version with fonts converted by a newer version). - A simple way to find if any of the fonts in a given directory have - duplicated UniqueIDs is to use the command: - - cat *.pf[ab] | grep UniqueID | sort | uniq -c | grep -v ' 1 ' - - Or if you use scripts/convert it will do that for you automatically - plus it will also give the exact list of files with duplicate UIDs. - --v size - Re-scale the font to get the size of a typical uppercase - letter somewhere around the specified size. Actually, it re-scales - the whole font to get the size of one language-dependent letter to be - at least of the specified size. Now this letter is "A" in all the - supported languages. The size is specified in the points of the - Type 1 coordinate grids, the maximal value is 1000. This is an - experimental option and should be used with caution. It tries to - increase the visible font size for a given point size and thus make - the font more readable. But if overused it may cause the fonts to - look out of scale. As of now the interesting values of size for - this option seem to be located mostly between 600 and 850. This - re-scaling may be quite useful but needs more experience to - understand the balance of its effects. - --W level - Select the verbosity level of the warnings. - Currently the levels from 0 to 4 are supported. Level 0 means no warnings - at all, level 4 means all the possible warnings. The default level is 3. - Other levels may be added in the future, so using the level number 99 is - recommended to get all the possible warnings. Going below level 2 is - not generally recommended because you may miss valuable information about - the problems with the fonts being converted. - -Obsolete option: --A - Print the font metrics (.afm file) instead of the font on STDOUT. - Use -GA instead. - -Very obsolete option: - The algorithm that implemented the forced fixed width had major - flaws, so it was disabled. The code is still in the program and - some day it will be refined and returned back. Meanwhile the - option name '-f' was reused for another option. The old version was: --f - Don't try to force the fixed width of font. Normally the converter - considers the fonts in which the glyph width deviates by not more - than 5% as buggy fixed width fonts and forces them to have really - fixed width. If this is undesirable, it can be disabled by this option. - -The .pfa font format supposes that the description of the characters -is binary encoded and encrypted. This converter does not encode or -encrypt the data by default, you have to specify the option '-e' -or use the t1asm program to assemble (that means, encode and -encrypt) the font program. The t1asm program that is included with -the converter is actually a part of the t1utils package, rather old -version of which may be obtained from - - http://ttf2pt1.sourceforge.net/t1utils.tar.gz - -Note that t1asm from the old version of that package won't work properly -with the files generated by ttf2pt1 version 3.20 and later. Please use -t1asm packaged with ttf2pt1 or from the new version t1utils -instead. For a newer version of t1utils please look at - - http://www.lcdf.org/~eddietwo/type/ - -So, the following command lines: - - ttf2pt1 -e ttffont.ttf t1font - ttf2pt1 ttffont.ttf - | t1asm >t1font.pfa - -represent two ways to get a working font. The benefit of the second form -is that other filters may be applied to the font between the converter -and assembler. - -Installation and deinstallation of the converter ------------------------------------------------- - -The converter may be easily installed systemwide with - - make install - -and uninstalled with - - make uninstall - -By default the Makefile is configured to install in the hierarchy -of directory /usr/local. This destination directory as well as -the structure of the hierarchy may be changed by editing the Makefile. - -Installation of the fonts -------------------------- - -Running the converter manually becomes somewhat boring if it has to -be applied to a few hundreds of fonts and then you have to generate the -fonts.scale and/or Fontmap files. The FONTS file describes how to use -the supplied scripts to handle such cases easily. It also discusses -the installation of the fonts for a few widespread programs. - -Other utilities ---------------- - -A few other small interesting programs that allow a cloase look at -the fonts are located in the subdirectory 'other'. They -are described shortly in others/README. - -Optional packages ------------------ - -Some auxiliary files are not needed by everyone and are big enough that -moving them to a separate package speeds up the downloads of the main -package significantly. As of now we have one such optional package: - - ttf2pt1-chinese - contains the Chinese conversion maps - -The general versioning policy for the optional packages is the following: -These packages may have no direct dependency on the ttf2pt1 version. -But they may be updated in future, as well as some versions of optional -packages may have dependencies on certain versions of ttf2pt1. -To avoid unneccessary extra releases on one hand and keep the updates in -sync with the ttf2pt1 itself on the other hand, a new version of an optional -package will be released only if there are any changes to it and it will be -given the same version number as ttf2pt1 released at the same time. So not -every release of ttf2pt1 would have a corresponding release of all optional -packages. For example, to get the correct version of optional packages for an -imaginary release 8.3.4 of ttf2pt1 you would need to look for optional -packages of the highest version not higher than (but possibly equal to) 8.3.4. - -TO DO: ------- - -- Improve hinting. -- Improve the auto-tracing of bitmaps. -- Implement the family-level hints. -- Add generation of CID-fonts. -- Handle the composite glyphs with relative base points. -- Preserve the relative width of stems during scaling to 1000x1000 matrix. -- Add support for bitmap TTF fonts. -- Implement better support of Asian encodings. -- Implement automatic creation of ligatures. - -TROUBLESHOOTING AND BUG REPORTS -------------------------------- - -Have problems with conversion of some font ? The converter dumps core ? Or your -printer refuses to understand the converted fonts ? Or some characters are -missing ? Or some characters look strange ? - -Send the bug reports to the ttf2pt1 development mailing list at -ttf2pt1-devel@lists.sourceforge.net. - -Try to collect more information about the problem and include it into -the bug report. (Of course, even better if you would provide a ready -fix, but just a detailed bug report is also good). Provide detailed -information about your problem, this will speed up the response greatly. -Don't just write "this font looks strange after conversion" but describe -what's exactly wrong with it: for example, what characters look wrong -and what exactly is wrong about their look. Providing a link to the -original font file would be also a good idea. Try to do a little -troublehooting and report its result. This not only would help with -the fix but may also give you a temporary work-around for the bug. - -First, enable full warnings with option '-W99', save them to -a file and read carefully. Sometimes the prolem is with a not implemented -feature which is reported in the warnings. Still, reporting about such -problems may be a good idea: some features were missed to cut corners, -in hope that no real font is using them. So a report about a font using -such a feature may motivate someone to implement it. Of course, you -may be the most motivated person: after all, you are the one wishing -to convert that font. ;-) Seriously, the philosophy "scrath your own itch" -seems to be the strongest moving force behind the Open Source software. - -The next step is playing with the options. This serves a dual purpose: -on one hand, it helps to localize the bug, on the other hand you may be -able to get a working version of the font for the meantime while the -bug is being fixed. The typical options to try out are: first '-Ou', if -it does not help then '-Os', then '-Oh', then '-Oo'. -They are described in a bit more detail above. Try them one by one -and in combinations. See if with them the resulting fonts look better. - -On some fonts ttf2pt1 just crashes. Commonly that happens because the -font being converted is highly defective (although sometimes the bug -is in ttf2pt1 itself). In any case it should not crash, so the reports -about such cases will help to handle these defects properly in future. - -We try to respond to the bug reports in a timely fashion but alas, this -may not always be possible, especially if the problem is complex. -This is a volunteer project and its resources are limited. Because -of this we would appreciate bug reports as detailed as possible, -and we would appreciate the ready fixes and contributions even more. - -CONTACTS --------- - -ttf2pt1-announce@lists.sourceforge.net - The mailing list with announcements about ttf2pt1. It is a moderated mailing - with extremely low traffic. Everyone is encouraged to subscribe to keep in - touch with the current status of project. To subscribe use the Web interface - at http://lists.sourceforge.net/mailman/listinfo/ttf2pt1-announce. - If you have only e-mail access to the Net then send a subscribe request to - the development mailing list ttf2pt1-devel@lists.sourceforge.net and somebody - will help you with subscription. - -ttf2pt1-devel@lists.sourceforge.net -ttf2pt1-users@lists.sourceforge.net - The ttf2pt1 mailing lists for development and users issues. They have not - that much traffic either. To subscribe use the Web interface at - http://lists.sourceforge.net/mailman/listinfo/ttf2pt1-devel - and http://lists.sourceforge.net/mailman/listinfo/ttf2pt1-users. - If you have only e-mail access to the Net then send a subscribe request to - the development mailing list ttf2pt1-devel@lists.sourceforge.net and somebody - will help you with subscription. - -mheath@netspace.net.au - Mark Heath - -A.Weeks@mcc.ac.uk - Andrew Weeks - -babkin@users.sourceforge.net (preferred) -sab123@hotmail.com -http://members.bellatlantic.net/~babkin - Sergey Babkin - -SEE ALSO --------- - -http://ttf2pt1.sourceforge.net - The main page of the project. - -http://www.netspace.net.au/~mheath/ttf2pt1/ - The old main page of the project. - -http://sourceforge.net/projects/gnuwin32 - Precompiled binaries for Windows. - -http://www.lcdf.org/~eddietwo/type/ - The home page of the Type 1 utilities package. - -http://www.rightbrain.com/pages/books.html - The first book about PostScript on the Web, "Thinking in PostScript". - -http://fonts.apple.com/TTRefMan/index.html - The True Type reference manual. - -http://partners.adobe.com/asn/developer/PDFS/TN/PLRM.pdf - Adobe PostScript reference manual. - -http://partners.adobe.com/asn/developer/PDFS/TN/T1_SPEC.PDF - Specification of the Type 1 font format. - -http://partners.adobe.com/asn/developer/PDFS/TN/5015.Type1_Supp.pdf - The Type 1 font format supplement. - -http://partners.adobe.com/asn/developer/PDFS/TN/5004.AFM_Spec.pdf - Specification of the Adobe font metrics file format. - -http://www.cs.wpi.edu/~matt/courses/cs563/talks/surface/bez_surf.html -http://www.cs.wpi.edu/~matt/courses/cs563/talks/curves.html - Information about the Bezier curves. - -http://www.neuroinformatik.ruhr-uni-bochum.de/ini/PEOPLE/rmz/t1lib/t1lib.html - A stand-alone library supporting the Type1 fonts. Is neccessary - to compile the programs other/cmpf and other/dmpf. - -http://www.freetype.org - A library supporting the TTF fonts. Also many useful TTF programs - are included with it. - -http://heliotrope.homestead.com/files/printsoft.html - Moses Gold's collection of links to printing software. - -http://linuxartist.org/fonts/ - Collection of font-related links. - ----------------------------------------------------------------------- ----------------------------------------------------------------------- - -Following is the Readme of ttf2pfa (true type to type 3 font converter) It -covers other issues regarding the use of this software. Please note that -although ttf2pfa is a public domain software, ttf2pt1 -is instead covered by an Open Source license. See the COPYRIGHT -file for details. - -Please note also that ttf2pfa has not been maintained for a long time. -All of its functionality has been integrated into ttf2pt1 and all the -development moved to ttf2pt1, including Andrew Weeks, the author of -ttf2pfa. Ttf2pfa is provided for historical reasons only. Please use -ttf2pt1 instead. - ----------------------------------------------------------------------- - -True Type to Postscript Font converter --------------------------------------- - -My mind is still reeling from the discovery that I was able to write -this program. What it does is it reads a Microsoft TrueType font and -creates a Postscript font. '_A_ postscript font', that is, not necessarily -the same font, you understand, but a fair imitation. - -Run it like this: - - ttf2pfa fontfile.ttf fontname - -The first parameter is the truetype filename, the second is a stem for -the output file names. The program will create a fontname.pfa containing -the Postscript font and a fontname.afm containing the metrics. - -The motivation behind this is that in Linux if you do not have a -Postscript printer, but only some other printer, you can only print -Postscript by using Ghostscript. But the fonts that come with -Ghostscript are very poor (they are converted from bitmaps and look -rather lumpy). This is rather frustrating as the PC running Linux -probably has MS-Windows as well and will therefore have truetype fonts, -but which are quite useless with Linux, X or Ghostscript. - -The program has been tested on over a hundred different TrueType fonts -from various sources, and seems to work fairly well. The converted -characters look OK, and the program doesn't seem to crash any more. I'm -not sure about the AFM files though, as I have no means to test them. - -The fonts generated will not work with X, as the font rasterizer that -comes with X only copes with Type 1 fonts. If I have the time I may -modify ttf2pfa to generate Type 1s. - -Copyright issues ----------------- - -I am putting this program into the public domain, so don't bother -sending me any money, I'd only have to declare it for income tax. - -Copyright on fonts, however, is a difficult legal question. Any -copyright statements found in a font will be preserved in the output. -Whether you are entitled to translate them at all I don't know. - -If you have a license to run a software package, like say MS-Windows, on -your PC, then you probably have a right to use any part of it, including -fonts, on that PC, even if not using that package for its intended -purpose. - -I am not a lawyer, however, so this is not a legal opinion, and may be -garbage. - -There shouldn't be a any problem with public domain fonts. - -About the Program ------------------ - -It was written in C on a IBM PC running Linux. - -The TrueType format was originally developed by Apple for the MAC, which -has opposite endianness to the PC, so to ensure compatibility 16 and 32 -bit fields are the wrong way round from the PC's point of view. This is -the reason for all the 'ntohs' and 'ntohl' calls. Doing it this way -means the program will also work on big-endian machines like Suns. - -I doubt whether it will work on a DOS-based PC though. - -The program produces what technically are Type 3 rather than Type 1 -fonts. They are not compressed or encrypted and are plain text. This is -so I (and you) can see what's going on, and (if you're a Postscript guru -and really want to) can alter the outlines. - -I only translate the outlines, not the 'instructions' that come with -them. This latter task is probably virtually impossible anyway. TrueType -outlines are B-splines rather than the Bezier curves that Postscript -uses. I believe that my conversion algorithm is reasonably correct, if -nothing else because the characters look right. - -Problems that may occur ------------------------ - -Most seriously, very complex characters (with lots of outline segments) -can make Ghostscript releases 2.x.x fail with a 'limitcheck' error. It -is possible that this may happen with some older Postscript printers as -well. Such characters will be flagged by the program and there are -basically two things you can do. First is to edit the .pfa file to -simplify or remove the offending character. This is not really -recommended. The second is to use Ghostscript release 3, if you can get -it. This has much larger limits and does not seem to have any problems -with complex characters. - -Then there are buggy fonts (yes, a font can have bugs). I try to deal -with these in as sane a manner as possible, but it's not always -possible. - -Encodings ---------- - -A postscript font must have a 256 element array, called an encoding, -each element of which is a name, which is also the name of a procedure -contained within the font. The 'BuildChar' command takes a byte and uses -it to index the encoding array to find a character name, and then looks -that up in the font's procedure table find the commands to draw the -glyph. However, not all characters need be in the encoding array. Those -that are not cannot be drawn (at least not using 'show'), however it is -possible to 're-encode' the font to enable these characters. There are -several standard encodings: Adobe's original, ISO-Latin1 and Symbol -being the most commonly encountered. - -TrueType fonts are organised differently. As well as the glyph -descriptions there are a number of tables. One of these is a mapping -from a character set into the glyph array, and another is a mapping from -the glyph array into a set of Postscript character names. The problems -are: - 1) Microsoft uses Unicode, a 16-bit system, to encode the font. - 2) that more than one glyph is given the same Postscript name. - -I deal with (1) by assuming a Latin1 encoding. The MS-Windows and -Unicode character sets are both supersets of ISO-8859-1. This usually -means that most characters will be properly encoded, but you should be -warned that some software may assume that fonts have an Adobe encoding. -Symbol, or Dingbat, fonts are in fact less of a problem, as they have -private encodings starting at 0xF000. It is easy to just lose the top -byte. - -Postscript fonts can be re-encoded, either manually, or by software. -Groff, for example, generates postscript that re-encodes fonts with the -Adobe encoding. The problem here is that not all characters in the Adobe -set are in the MS-Windows set. In particular there are no fi and fl -ligatures. This means that conversions of the versions of -Times-New-Roman and Arial that come with MS-Windows cannot be used -blindly as replacements for Adobe Times-Roman and Helvetica. You can get -expanded versions of MS fonts from Microsoft's web site which do contain -these ligatures (and a lot else besides). - -I deal with (2) by creating new character names. This can be error-prone -because I do not know which of them is the correct glyph to give the -name to. Some (buggy) fonts have large numbers of blank glyphs, all with -the same name. - -(almost every TrueType font has three glyphs called .notdef, one of them -is usually an empty square shape, one has no outline and has zero width, -and one has no outline and a positive width. This example is not really -a problem with well formed fonts since the .notdef characters are only -used for unprintable characters, which shouldn't occur in your documents -anyway). diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/README.FIRST b/application/third_party/dompdf/lib/ttf2ufm/src/README.FIRST deleted file mode 100644 index f89db201..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/README.FIRST +++ /dev/null @@ -1,4 +0,0 @@ -To get the plain-text README and installation guides run: - - make docs - diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/README.html b/application/third_party/dompdf/lib/ttf2ufm/src/README.html deleted file mode 100644 index b1d6c9c2..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/README.html +++ /dev/null @@ -1,1182 +0,0 @@ -<HTML> -<HEAD> -<TITLE> -TTF2PT1 - A True Type to PostScript Type 1 Converter -</TITLE> -</HEAD> -<BODY> -<!-- =defdoc t1 ttf2pt1 1 --> -<H2> -<!-- =section t1 NAME --> -TTF2PT1 - A True Type to PostScript Type 1 Font Converter -<!-- =stop --> -</H2> - -<! -(Do not edit this file, it is generated from README.html!!!) -> -<TT> -[ -<blockquote> -<!-- =section t1 HISTORY --> - Based on ttf2pfa by Andrew Weeks, and help from Frank Siegert. -<BR> - Modification by Mark Heath. -<BR> - Further modification by Sergey Babkin. -<BR> - The Type1 assembler by I. Lee Hetherington with modifications by - Kai-Uwe Herbing. -<!-- =stop --> -</blockquote> -] -</TT> -<p> - -Ever wanted to install a particular font on your XServer but only could find -the font you are after in True Type Format? -<p> - -Ever asked <TT>comp.fonts</TT> for a True Type to Type 1 converter and got a List -of Commercial software that doesn't run on your Operating System? -<p> - -Well, this program should be the answer. This program is written in C (so it -should be portable) and therefore should run on any OS. The only limitation -is that the program requires some method of converting Big endian integers into -local host integers so the network functions ntohs and ntohl are used. These -can be replaced by macros if your platform doesn't have them. -Of course the target platform requires a C compiler and command line ability. -<p> - -<!-- =section t1 DESCRIPTION --> -Ttf2pt1 is a font converter from the True Type format (and some other formats -supported by the FreeType library as well) to the Adobe Type1 format. -<p> - -The versions 3.0 and later got rather extensive post-processing algorithm that -brings the converted fonts to the requirements of the Type1 standard, tries to -correct the rounding errors introduced during conversions and some simple -kinds of bugs that are typical for the public domain TTF fonts. It -also generates the hints that enable much better rendering of fonts in -small sizes that are typical for the computer displays. But everything -has its price, and some of the optimizations may not work well for certain -fonts. That's why the options were added to the converter, to control -the performed optimizations. -<p> -<!-- =stop --> - -The converter is simple to run, just: -<p> - -<!-- =section t1 SYNOPSIS --> -<blockquote> - <tt>ttf2pt1 <i>[-options] ttffont.ttf [Fontname]</i></tt> -</blockquote> -or -<blockquote> - <tt>ttf2pt1 <i>[-options] ttffont.ttf -</i></tt> -</blockquote> -<!-- =stop --> -<p> - -<!-- =section t1 OPTIONS --> -The first variant creates the file <tt>Fontname.pfa</tt> (or <tt>Fontname.pfb</tt> if the -option '<b>-b</b>' was used) with the converted font and <tt>Fontname.afm</tt> with the -font metrics, the second one prints the font or another file (if the option -'<b>-G</b>' was used) on the standard output from where it can be immediately -piped through some filter. If no <tt>Fontname</tt> is specified for the first -variant, the name is generated from <tt>ttffont</tt> by replacing the <tt>.ttf</tt> -filename suffix. -<p> - -Most of the time no options are neccessary (with a possible exception -of '<b>-e</b>'). But if there are some troubles with the resulting font, they -may be used to control the conversion. -The <B>options</B> are: -<p> - -<!-- ==over 2 --> -<!-- ==item * --> -<TT><B>-a</TT></B> - Include all the glyphs from the source file into the converted - file. If this option is not specified then only the glyphs that have - been assigned some encoding are included, because the rest of glyphs - would be inaccessible anyway and would only consume the disk space. - But some applications are clever enough to change the encoding on - the fly and thus use the other glyphs, in this case they could - benefit from using this option. But there is a catch: the X11 library - has rather low limit for the font size. Including more glyphs increases - the file size and thus increases the chance of hitting this limit. - See <A HREF="app/X11/README.html"><tt>app/X11/README</tt></A> for the description of a - patch to X11 which fixes this problem. -<p> - -<!-- ==item * --> -<TT><B>-b</TT></B> - Encode the resulting font to produce a ready <tt>.pfb</tt> file. -<p> - -<!-- ==item * --> -<TT><B>-d <i>suboptions</i></TT></B> - Debugging options. The suboptions are: -<p> - -<blockquote> - <TT><B>a</TT></B> - Print out the absolute coordinates of dots in outlines. Such - a font can not be used by any program (that's why this option is - incompatible with '<b>-e</b>') but it has proven to be a valuable debuging - information. -<p> - - <TT><B>r</TT></B> - Do not reverse the direction of outlines. The TTF fonts have - the standard direction of outlines opposite to the Type1 fonts. So - they should be reversed during proper conversion. This option - may be used for debugging or to handle a TTF font with wrong - direction of outlines (possibly, converted in a broken way from - a Type1 font). The first signs of the wrong direction are the - letters like "P" or "B" without the unpainted "holes" inside. -<p> -</blockquote> - -<!-- ==item * --> -<TT><B>-e</TT></B> - Assemble the resulting font to produce a ready <tt>.pfa</tt> file. -<I> - [ </I>S.B.<I>: Personally I don't think that this option is particularly useful. - The same result may be achieved by piping the unassembled data - through t1asm, the Type 1 assembler. And, anyways, it's good to - have the t1utils package handy. But Mark and many users think that - this functionality is good and it took not much time to add this option. ] -</I> -<p> - -<!-- ==item * --> -<TT><B>-F</TT></B> - Force the Unicode encoding: any type of MS encoding specified - in the font is ignored and the font is treated like it has Unicode - encoding. <B>WARNING:</B> <I>this option is intended for buggy fonts - which actually are in Unicode but are marked as something else. The - effect on the other fonts is unpredictable.</I> -<p> - -<!-- ==item * --> -<TT><B>-G <i>suboptions</i></TT></B> - File generation options. The suboptions may be lowercase - or uppercase, the lowercase ones disable the generation of particular - files, the corresponding uppercase suboptions enable the generation of the - same kind of files. If the result of ttf2pt1 is requested to be printed on - the standard output, the last enabling suboption of <b>-G</b> determines - which file will be written to the standard output and the rest of files - will be discarded. For example, <b>-G A</b> will request the AFM file. - The suboptions to disable/enable the generation of the files are: -<p> - -<blockquote> - <TT><B>f/F</TT></B> - The font file. Depending on the other options this file - will have one of the suffixes <tt>.t1a</tt>, <tt>.pfa</tt> or <tt>.pfb</tt>. If the conversion result - is requested on the standard output ('<tt>-</tt>' is used as the output file name) - then the font file will also be written there by default, if not overwritten - by another suboption of <b>-G</b>. - <b>Default: enabled</b> -<p> - - <TT><B>a/A</TT></B> - The Adobe font metrics file (<tt>.afm</tt>). - <b>Default: enabled</b> -<p> - - <TT><B>e/E</TT></B> - The dvips encoding file (<tt>.enc</tt>). - <b>Default: disabled</b> -<p> - -</blockquote> - -<!-- ==item * --> -<TT><B>-l <I>language</I>[+<I>argument</I>]</TT></B> - Extract the fonts for the specified language from a - multi-language Unicode font. If this option is not used the converter - tries to guess the language by the values of the shell variable LANG. - If it is not able to guess the language by LANG it tries all the - languages in the order they are listed. -<p> - - After the plus sign an optional argument for the language extractor - may be specified. The format of the argument is absolutely up to - the particular language converter. The primary purpose of the - argument is to support selection of planes for the multi-plane - Eastern encodings but it can also be used in any other way. The - language extractor may decide to add the plane name in some form - to the name of the resulting font. None of the currently supported - languages make any use of the argument yet. -<p> - - As of now the following languages are supported: -<br> - &nbsp;&nbsp;<TT>latin1</TT> - for all the languages using the Latin-1 encoding -<br> - &nbsp;&nbsp;<TT>latin2</TT> - for the Central European languages -<br> - &nbsp;&nbsp;<TT>latin4</TT> - for the Baltic languages -<br> - &nbsp;&nbsp;<TT>latin5</TT> - for the Turkish language -<br> - &nbsp;&nbsp;<TT>cyrillic</TT> - for the languages with Cyrillic alphabet -<br> - &nbsp;&nbsp;<TT>russian</TT> - historic synonym for cyrillic -<br> - &nbsp;&nbsp;<TT>bulgarian</TT> - historic synonym for cyrillic -<br> - &nbsp;&nbsp;<TT>adobestd</TT> - for the AdobeStandard encoding used by TeX -<br> - &nbsp;&nbsp;<TT>plane+<i>argument</i></TT> - to select one plane from a multi-byte encoding -<p> - - The argument of the "<tt>plane</tt>" language may be in one of three forms: -<p> - &nbsp;&nbsp;<tt>plane+<b>pid=</b><i>&lt;pid&gt;</i><b>,eid=</b><i>&lt;eid&gt;</i></tt> -<br> - &nbsp;&nbsp;<tt>plane+<b>pid=</b><i>&lt;pid&gt;</i><b>,eid=</b><i>&lt;eid&gt;</i><b>,</b><i>&lt;plane_number&gt;</i></tt> -<br> - &nbsp;&nbsp;<tt>plane+<i>&lt;plane_number&gt;</i></tt> -<p> - - Pid (TTF platform id) and eid (TTF encoding id) select a particular - TTF encoding table in the original font. They are specified as decimal - numbers. If this particular encoding table is not present in the font - file then the conversion fails. The native ("ttf") front-end parser supports - only pid=3 (Windows platform), the FreeType-based ("ft") front-end supports - any platform. If pid/eid is not specified then the TTF encoding table is - determined as usual: Unicode encoding if it's first or an 8-bit encoding - if not (and for an 8-bit encoding the plane number is silently ignored). - To prevent the converter from falling back to an 8-bit encoding, specify - the Unicode pid/eid value explicitly. -<p> - - Plane_number is a hexadecimal (if starts with "<b>0x</b>") or decimal number. - It gives the values of upper bytes for which 256 characters will be - selected. If not specified, defaults to 0. It is also used as a font - name suffix (the leading "0x" is not included into the suffix). -<p> - -<!-- =stop --> - <B>NOTE:</B> -<!-- =section t1 BUGS --> - It seems that many Eastern fonts use features of the TTF format that are - not supported by the ttf2pt1's built-in front-end parser. Because of - this for now we recommend using the FreeType-based parser (option - '<b>-p ft</b>') with the "<tt>plane</tt>" language. -<p> -<!-- =stop --> - -<!-- =section t1 OPTIONS --> -<I> - <B>NOTE:</B> - You may notice that the language names are not uniform: some are the - names of particular languages and some are names of encodings. This - is because of the different approaches. The original idea was to - implement a conversion from Unicode to the appropriate Windows - encoding for a given language. And then use the translation tables - to generate the fonts in whatever final encodings are needed. This - would allow to pile together the Unicode fonts and the non-Unicode - Windows fonts for that language and let the program to sort them out - automatically. And then generate fonts in all the possible encodings - for that language. An example of this approach is the Russian language - support. But if there is no multiplicity of encodings used for some - languages and if the non-Unicode fonts are not considered important - by the users, another way would be simpler to implement: just provide - only one table for extraction of the target encoding from Unicode - and don't bother with the translation tables. The </I>latin*<I> "languages" - are examples of this approach. If somebody feels that he needs the - Type1 fonts both in Latin-* and Windows encodings he or she is absolutely - welcome to submit the code to implement it. -</I><p> - - <B>WARNING:</B> - Some of the glyphs included into the AdobeStandard encoding are not - included into the Unicode standard. The most typical examples of such - glyphs are ligatures like 'fi', 'fl' etc. Because of this the font - designers may place them at various places. The converter tries to - do its best, if the glyphs have honest Adobe names and/or are - placed at the same codes as in the Microsoft fonts they will be - picked up. Otherwise a possible solution is to use the option '<b>-L</b>' - with an external map. -<p> - -<!-- ==item * --> -<TT><B>-L <I>file</I>[+[pid=<I>&lt;pid&gt;</I>,eid=<I>&lt;eid&gt;</I>,][<I>plane</I>]]</TT></B> - Extract the fonts for the specified - language from a multi-language font using the map from this file. This is - rather like the option '<b>-l</b>' but the encoding map is not - compiled into the program, it's taken from that file, so it's - easy to edit. Examples of such files are provided in - <tt>maps/adobe-standard-encoding.map</tt>, <tt>CP1250.map</tt>. (<b>NOTE:</b> - <I>the 'standard encoding' map does not include all the glyphs of the - AdobeStandard encoding, it's provided only as an example</I>.) The - description of the supported map formats is in the file - <tt>maps/unicode-sample.map</tt>. -<p> - - Likewise to '<b>-l</b>', an argument may be specified after the map file - name. But in this case the argument has fixed meaning: it selects the - original TTF encoding table (the syntax is the same as in '<b>-l plane</b>') - and/or a plane of the map file. The plane name also gets added after dash - to the font name. The plane is a concept used in the Eastern fonts with big - number of glyphs: one TTF font gets divided into multiple Type1 fonts, - each containing one plane of up to 256 glyphs. But with a little - creativity this concept may be used for other purposes of combining - multiple translation maps into one file. To extract multiple planes - from a TTF font <tt>ttf2pt1</tt> must be run multiple times, each time with - a different plane name specified. -<p> - - The default original TTF encoding table used for the option '<b>-L</b>' is - Unicode. The map files may include directives to specify different original - TTF encodings. However if the pid/eid pair is specified with - it overrides any original encoding specified in the map file. -<p> - -<!-- ==item * --> -<TT><B>-m <i>type</i>=<i>value</i></TT></B> - Set maximal or minimal limits of resources. - These limits control the the font generation by limiting the resources - that the font is permitted to require from the PostScript interpreter. - The currently supported types of limits are: -<p> - -<blockquote> - <TT><B>h</TT></B> - the maximal hint stack depth for the substituted hints. - The default value is 128, according to the limitation in X11. This seems to - be the lowest (and thus the safest) widespread value. To display the - hint stack depth required by each glyph in a <tt>.t1a</tt> file use the script - <tt>scripts/cntstems.pl</tt>. -<p> -</blockquote> - -<!-- ==item * --> -<TT><B>-O <i>suboptions</i></TT></B> - Outline processing options. The suboptions - may be lowercase or uppercase, the lowercase ones disable the features, - the corresponding uppercase suboptions enable the same features. - The suboptions to disable/enable features are: -<p> - -<blockquote> - <TT><B>b/B</TT></B> - Guessing of the ForceBold parameter. This parameter helps - the Type1 engine to rasterize the bold fonts properly at small sizes. - But the algorithm used to guess the proper value of this flag makes - that guess based solely on the font name. In rare cases that may cause - errors, in these cases you may want to disable this guessing. - <b>Default: enabled</b> -<p> - - <TT><B>h/H</TT></B> - Autogeneration of hints. The really complex outlines - may confuse the algorithm, so theoretically it may be useful - sometimes to disable them. Although up to now it seems that - even bad hints are better than no hints at all. - <b>Default: enabled</b> -<p> - - <TT><B>u/U</TT></B> - Hint substitution. Hint substitution is a technique - permitting generation of more detailed hints for the rasterizer. It allows - to use different sets of hints for different parts of a glyph and change - these sets as neccessary during rasterization (that's why "substituted"). - So it should improve the quality of the fonts rendered at small sizes. - But there are two catches: First, the X11 library has rather low limit for - the font size. More detailed hints increase the file size and thus increase - the chance of hitting this limit (that does not mean that you shall hit it - but you may if your fonts are particularly big). This is especially - probable for Unicode fonts converted with option '<b>-a</b>', so you may want to - use '<b>-a</b>' together with '<b>-Ou</b>'. See <A HREF="app/X11/README.html"><tt>app/X11/README</tt></A> for the description of - a patch to X11 which fixes this problem. Second, some rasterizers (again, - X11 is the typical example) have a limitation for total number of hints - used when drawing a glyph (also known as the hint stack depth). If that - stack overflows the glyph is ignored. Starting from version 3.22 <tt>ttf2pt1</tt> - uses algorithms to minimizing this depth, with the trade-off of slightly - bigger font files. The glyphs which still exceed the limit set by option - '<b>-mh</b>' have all the substituted hints removed and only base hints left. - The algorithms seem to have been refined far enough to make the fonts with - substituted hints look better than the fonts without them or at least the - same. Still if the original fonts are not well-designed the detailed - hinting may emphasize the defects of the design, such as non-even thickness - of lines. So provided that you are not afraid of the X11 bug the best idea - would be to generate a font with this feature and without it, then compare - the results using the program <tt>other/cmpf</tt> (see the description - in <A HREF="other/README.html"><tt>other/README</tt></A>) and decide which one looks better. - <b>Default: enabled</b> -<p> - - <TT><B>o/O</TT></B> - Space optimization of the outlines' code. This kind of optimization - never hurts, and the only reason to disable this feature is for comparison - of the generated fonts with the fonts generated by the previous versions of - converter. Well, it _almost_ never hurts. As it turned out there exist - some brain-damaged printers which don't understand it. Actually this - feature does not change the outlines at all. The Type 1 font manual - provides a set of redundant operators that make font description shorter, - such as '10 hlineto' instead of '0 10 rlineto' to describe a horizontal - line. This feature enables use of these operators. - <b>Default: enabled</b> -<p> - - <TT><B>s/S</TT></B> - Smoothing of outlines. If the font is broken in some - way (even the ones that are not easily noticeable), such smoothing - may break it further. So disabling this feature is the first thing to be - tried if some font looks odd. But with smoothing off the hint generation - algorithms may not work properly too. - <b>Default: enabled</b> -<p> - - <TT><B>t/T</TT></B> - Auto-scaling to the 1000x1000 Type1 standard matrix. The - TTF fonts are described in terms of an arbitrary matrix up to - 4000x4000. The converted fonts must be scaled to conform to - the Type1 standard. But the scaling introduces additional rounding - errors, so it may be curious sometimes to look at the font in its - original scale. - <b>Default: enabled</b> -<p> - - <TT><B>v/V</TT></B> - Do vectorization on the bitmap fonts. Functionally - "vectorization" is the same thing as "autotracing", a different word is - used purely to differentiate it from the Autotrace library. It tries to - produce nice smooth outlines from bitmaps. This feature is still a work - in progress though the results are already mostly decent. - <b>Default: disabled</b> -<p> - - <TT><B>w/W</TT></B> - Glyphs' width corection. This option is designed to be - used on broken fonts which specify too narrow widths for the - letters. You can tell that a font can benefit from this option - if you see that the characters are smashed together without - any whitespace between them. This option causes the converter - to set the character widths to the actual width of this character - plus the width of a typical vertical stem. But on the other hand - the well-designed fonts may have characters that look better if - their widths are set slightly narrower. Such well-designed fonts - will benefit from disabling this feature. You may want to convert - a font with and without this feature, compare the results and - select the better one. This feature may be used only on proportional - fonts, it has no effect on the fixed-width fonts. - <b>Default: disabled</b> -<p> - - <TT><B>z/Z</TT></B> - Use the Autotrace library on the bitmap fonts. The results - are horrible and <b>the use of this option is not recommended</b>. This option is - present for experimental purposes. It may change or be removed in the - future. The working tracing can be achieved with option <tt><b>-OV</b></tt>. - <b>Default: disabled</b> -<p> -</blockquote> - -<!-- ==item * --> -<TT><B>-p <I>parser_name</I></TT></B> - Use the specified front-end parser to read the font file. - If this option is not used, ttf2pt1 selects the parser automatically based - on the suffix of the font file name, it uses the first parser in its - list that supports this font type. Now two parsers are supported: -<p> - - &nbsp;&nbsp;<TT>ttf</TT> - built-in parser for the ttf files (suffix <tt>.ttf</tt>) -<br> - &nbsp;&nbsp;<TT>bdf</TT> - built-in parser for the BDF files (suffix <tt>.bdf</tt>) -<br> - &nbsp;&nbsp;<TT>ft</TT> - parser based on the FreeType-2 library (suffixes <tt>.ttf</tt>, - <tt>.otf</tt>, <tt>.pfa</tt>, <tt>.pfb</tt>) -<p> - - The parser <tt>ft</tt> is <b>NOT</b> linked in by default. See <tt>Makefile</tt> - for instructions how to enable it. We do no support this parser on - Windows: probably it will work but nobody tried and nobody knows how - to build it. -<p> - - The conversion of the bitmap fonts (such as BDF) is simplistic yet, - producing jagged outlines. When converting such fonts, it might be - a good idea to turn off the hint substitution (using option <b>-Ou</b>) - because the hints produced will be huge but not adding much to the - quality of the fonts. -<p> - -<!-- ==item * --> -<TT><B>-u <I>number</I></TT></B> - Mark the font with this value as its - UniqueID. The UniqueID is used by the printers with the hard disks - to cache the rasterized characters and thus significantly - speed-up the printing. Some of those printers just can't - store the fonts without UniqueID on their disk.The problem - is that the ID is supposed to be unique, as it name says. And - there is no easy way to create a guaranteed unique ID. Adobe specifies - the range 4000000-4999999 for private IDs but still it's difficult - to guarantee the uniqueness within it. So if you don't really need the - UniqueID don't use it, it's optional. Luckily there are a few millions of - possible IDs, so the chances of collision are rather low. - If instead of the number a special value '<tt><b>A</b></tt>' is given - then the converter generates the value of UniqueID automatically, - as a hash of the font name. (<b>NOTE:</b> <i> in the version 3.22 the - algorithm for autogeneration of UniqueID was changed to fit the values - into the Adobe-spacified range. This means that if UniqueIDs were used - then the printer's cache may need to be flushed before replacing the - fonts converted by an old version with fonts converted by a newer version</i>). - A simple way to find if any of the fonts in a given directory have - duplicated UniqueIDs is to use the command: -<p> - - <tt>&nbsp;&nbsp;cat *.pf[ab] | grep UniqueID | sort | uniq -c | grep -v ' 1 '</tt> -<p> - - Or if you use <tt>scripts/convert</tt> it will do that for you automatically - plus it will also give the exact list of files with duplicate UIDs. -<p> - -<!-- ==item * --> -<TT><B>-v <I>size</I></TT></B> - Re-scale the font to get the size of a typical uppercase - letter somewhere around the specified size. Actually, it re-scales - the whole font to get the size of one language-dependent letter to be - at least of the specified size. Now this letter is "A" in all the - supported languages. The size is specified in the points of the - Type 1 coordinate grids, the maximal value is 1000. This is an - experimental option and should be used with caution. It tries to - increase the visible font size for a given point size and thus make - the font more readable. But if overused it may cause the fonts to - look out of scale. As of now the interesting values of size for - this option seem to be located mostly between 600 and 850. This - re-scaling may be quite useful but needs more experience to - understand the balance of its effects. -<p> - -<!-- ==item * --> -<TT><B>-W <i>level</i></TT></B> - Select the verbosity level of the warnings. - Currently the levels from 0 to 4 are supported. Level 0 means no warnings - at all, level 4 means all the possible warnings. The default level is 3. - Other levels may be added in the future, so using the level number 99 is - recommended to get all the possible warnings. Going below level 2 is - not generally recommended because you may miss valuable information about - the problems with the fonts being converted. -<p> - -<!-- ==item * --> -<B>Obsolete option:</B> -<TT><B>-A</TT></B> - Print the font metrics (.afm file) instead of the font on STDOUT. - Use <b>-GA</b> instead. -<p> - -<!-- ==item * --> -<B>Very obsolete option:</B> -<br> - The algorithm that implemented the forced fixed width had major - flaws, so it was disabled. The code is still in the program and - some day it will be refined and returned back. Meanwhile the - option name '<b>-f</b>' was reused for another option. The old version was: -<br> -<TT><B>-f</TT></B> - Don't try to force the fixed width of font. Normally the converter - considers the fonts in which the glyph width deviates by not more - than 5% as buggy fixed width fonts and forces them to have really - fixed width. If this is undesirable, it can be disabled by this option. -<p> -<!-- ==back --> - -The <tt>.pfa</tt> font format supposes that the description of the characters -is binary encoded and encrypted. This converter does not encode or -encrypt the data by default, you have to specify the option '<b>-e</b>' -or use the <tt>t1asm</tt> program to assemble (that means, encode and -encrypt) the font program. The <tt>t1asm</tt> program that is included with -the converter is actually a part of the <tt>t1utils</tt> package, rather old -version of which may be obtained from -<p> - -<blockquote> -<A HREF="http://ttf2pt1.sourceforge.net/t1utils.tar.gz"> - http://ttf2pt1.sourceforge.net/t1utils.tar.gz -</A> -</blockquote> -<p> - -Note that <tt>t1asm</tt> from the old version of that package won't work properly -with the files generated by <tt>ttf2pt1</tt> version 3.20 and later. Please use -<tt>t1asm</tt> packaged with <tt>ttf2pt1</tt> or from the new version <tt>t1utils</tt> -instead. For a newer version of <tt>t1utils</tt> please look at -<p> - -<blockquote> -<A HREF="http://www.lcdf.org/~eddietwo/type/"> - http://www.lcdf.org/~eddietwo/type/ -</A> -</blockquote> -<p> -<!-- =stop --> - -<!-- =section t1 EXAMPLES --> -So, the following command lines: -<p> - -<blockquote> - <tt>ttf2pt1 -e ttffont.ttf t1font</tt> -<br> - <tt>ttf2pt1 ttffont.ttf - | t1asm &gt;t1font.pfa</tt> -</blockquote> -<p> - -represent two ways to get a working font. The benefit of the second form -is that other filters may be applied to the font between the converter -and assembler. -<p> -<!-- =stop --> - -<H4> -Installation and deinstallation of the converter -</H4> -<! ------------------------------------------------- -> - -The converter may be easily installed systemwide with - -<blockquote> - <tt>make install</tt> -</blockquote> - -and uninstalled with - -<blockquote> - <tt>make uninstall</tt> -</blockquote> - -By default the <tt>Makefile</tt> is configured to install in the hierarchy -of directory <tt>/usr/local</tt>. This destination directory as well as -the structure of the hierarchy may be changed by editing the <tt>Makefile</tt>. - -<H4> -Installation of the fonts -</H4> -<! -------------------------- -> - -Running the converter manually becomes somewhat boring if it has to -be applied to a few hundreds of fonts and then you have to generate the -<tt>fonts.scale</tt> and/or <tt>Fontmap</tt> files. The <A HREF="FONTS.html"><tt>FONTS</tt></A> file describes how to use -the supplied scripts to handle such cases easily. It also discusses -the installation of the fonts for a few widespread programs. -<p> - -<H4> -Other utilities -</H4> -<! ---------------- -> - -A few other small interesting programs that allow a cloase look at -the fonts are located in the subdirectory '<tt>other</tt>'. They -are described shortly in <A HREF="other/README.html">others/README</a>. -<p> - -<H4> -Optional packages -</H4> -<! ------------------ -> - -Some auxiliary files are not needed by everyone and are big enough that -moving them to a separate package speeds up the downloads of the main -package significantly. As of now we have one such optional package: -<p> - -&nbsp;&nbsp;<b>ttf2pt1-chinese</b> - contains the Chinese conversion maps -<p> - -The general versioning policy for the optional packages is the following: -These packages may have no direct dependency on the ttf2pt1 version. -But they may be updated in future, as well as some versions of optional -packages may have dependencies on certain versions of ttf2pt1. -To avoid unneccessary extra releases on one hand and keep the updates in -sync with the ttf2pt1 itself on the other hand, a new version of an optional -package will be released only if there are any changes to it and it will be -given the same version number as ttf2pt1 released at the same time. So not -every release of ttf2pt1 would have a corresponding release of all optional -packages. For example, to get the correct version of optional packages for an -imaginary release 8.3.4 of ttf2pt1 you would need to look for optional -packages of the highest version not higher than (but possibly equal to) 8.3.4. -<p> - -<H4> -TO DO: -</H4> -<! ------- -> - -<ul> -<li> Improve hinting. -<li> Improve the auto-tracing of bitmaps. -<li> Implement the family-level hints. -<li> Add generation of CID-fonts. -<li> Handle the composite glyphs with relative base points. -<li> Preserve the relative width of stems during scaling to 1000x1000 matrix. -<li> Add support for bitmap TTF fonts. -<li> Implement better support of Asian encodings. -<li> Implement automatic creation of ligatures. -</ul> - -<H4> -TROUBLESHOOTING AND BUG REPORTS -</H4> -<! -------------------------------- -> -<!-- =section t1 BUGS --> -<!-- ==head2 Troubleshooting and bug reports --> - -Have problems with conversion of some font ? The converter dumps core ? Or your -printer refuses to understand the converted fonts ? Or some characters are -missing ? Or some characters look strange ? -<p> - -Send the bug reports to the ttf2pt1 development mailing list at -<A HREF="mailto:ttf2pt1-devel@lists.sourceforge.net">ttf2pt1-devel@lists.sourceforge.net</A>. -<p> - -Try to collect more information about the problem and include it into -the bug report. (Of course, even better if you would provide a ready -fix, but just a detailed bug report is also good). Provide detailed -information about your problem, this will speed up the response greatly. -Don't just write "this font looks strange after conversion" but describe -what's exactly wrong with it: for example, what characters look wrong -and what exactly is wrong about their look. Providing a link to the -original font file would be also a good idea. Try to do a little -troublehooting and report its result. This not only would help with -the fix but may also give you a temporary work-around for the bug. -<p> - -First, enable full warnings with option '<b>-W99</b>', save them to -a file and read carefully. Sometimes the prolem is with a not implemented -feature which is reported in the warnings. Still, reporting about such -problems may be a good idea: some features were missed to cut corners, -in hope that no real font is using them. So a report about a font using -such a feature may motivate someone to implement it. Of course, you -may be the most motivated person: after all, you are the one wishing -to convert that font. ;-) Seriously, the philosophy "scrath your own itch" -seems to be the strongest moving force behind the Open Source software. -<p> - -The next step is playing with the options. This serves a dual purpose: -on one hand, it helps to localize the bug, on the other hand you may be -able to get a working version of the font for the meantime while the -bug is being fixed. The typical options to try out are: first '<b>-Ou</b>', if -it does not help then '<b>-Os</b>', then '<b>-Oh</b>', then '<b>-Oo</b>'. -They are described in a bit more detail above. Try them one by one -and in combinations. See if with them the resulting fonts look better. -<p> - -On some fonts ttf2pt1 just crashes. Commonly that happens because the -font being converted is highly defective (although sometimes the bug -is in ttf2pt1 itself). In any case it should not crash, so the reports -about such cases will help to handle these defects properly in future. -<p> - -We try to respond to the bug reports in a timely fashion but alas, this -may not always be possible, especially if the problem is complex. -This is a volunteer project and its resources are limited. Because -of this we would appreciate bug reports as detailed as possible, -and we would appreciate the ready fixes and contributions even more. -<p> -<!-- =stop --> -<!-- =section t1 FILES --> -<!-- ==over 2 --> -<!-- ==item * --> -<!-- =text TTF2PT1_LIBXDIR/t1asm --> -<!-- ==item * --> -<!-- =text TTF2PT1_SHAREDIR/* --> -<!-- ==item * --> -<!-- =text TTF2PT1_SHAREDIR/scripts/* --> -<!-- ==item * --> -<!-- =text TTF2PT1_SHAREDIR/other/* --> -<!-- ==item * --> -<!-- =text TTF2PT1_SHAREDIR/README --> -<!-- ==item * --> -<!-- =text TTF2PT1_SHAREDIR/FONTS --> -<!-- ==back --> -<!-- =stop --> - -<H4> -CONTACTS -</H4> -<! --------- -> -<!-- =section t1 SEE ALSO --> -<!-- ==over 4 --> -<!-- ==item * --> -<!-- =text L&lt;ttf2pt1_convert(1)&gt; --> -<!-- ==item * --> -<!-- =text L&lt;ttf2pt1_x2gs(1)&gt; --> -<!-- ==item * --> -<!-- =text L&lt;t1asm(1)&gt; --> - -<!-- ==item * --> -<A HREF="http://lists.sourceforge.net/mailman/listinfo/ttf2pt1-announce"> -ttf2pt1-announce@lists.sourceforge.net -</A><br> - The mailing list with announcements about ttf2pt1. It is a moderated mailing - with extremely low traffic. Everyone is encouraged to subscribe to keep in - touch with the current status of project. To subscribe use the Web interface - at <A HREF="http://lists.sourceforge.net/mailman/listinfo/ttf2pt1-announce">http://lists.sourceforge.net/mailman/listinfo/ttf2pt1-announce</A>. - If you have only e-mail access to the Net then send a subscribe request to - the development mailing list ttf2pt1-devel@lists.sourceforge.net and somebody - will help you with subscription. -<p> - -<!-- ==item * --> -<A HREF="mailto:ttf2pt1-devel@lists.sourceforge.net"> -ttf2pt1-devel@lists.sourceforge.net -</A><br> -<A HREF="mailto:ttf2pt1-users@lists.sourceforge.net"> -ttf2pt1-users@lists.sourceforge.net -</A><br> - The ttf2pt1 mailing lists for development and users issues. They have not - that much traffic either. To subscribe use the Web interface at - <A HREF="http://lists.sourceforge.net/mailman/listinfo/ttf2pt1-devel">http://lists.sourceforge.net/mailman/listinfo/ttf2pt1-devel</A> - and <A HREF="http://lists.sourceforge.net/mailman/listinfo/ttf2pt1-users">http://lists.sourceforge.net/mailman/listinfo/ttf2pt1-users</A>. - If you have only e-mail access to the Net then send a subscribe request to - the development mailing list ttf2pt1-devel@lists.sourceforge.net and somebody - will help you with subscription. -<p> - -<!-- =stop --> -<A HREF="mailto:mheath@netspace.net.au"> -mheath@netspace.net.au -</A><br> - Mark Heath -<p> - -<A HREF="mailto:A.Weeks@mcc.ac.uk"> -A.Weeks@mcc.ac.uk -</A><br> - Andrew Weeks -<p> - -<A HREF="mailto:babkin@users.sourceforge.net"> -babkin@users.sourceforge.net</A> (preferred)<br> -<A HREF="mailto:sab123@hotmail.com"> -sab123@hotmail.com -</A><br> -<A HREF="http://members.bellatlantic.net/~babkin"> -http://members.bellatlantic.net/~babkin -</A><br> - Sergey Babkin -<p> - -<H4> -SEE ALSO -</H4> -<! --------- -> - -<!-- =section t1 SEE ALSO --> -<!-- ==item * --> -<A HREF="http://ttf2pt1.sourceforge.net"> -http://ttf2pt1.sourceforge.net -</A><br> - The main page of the project. -<p> - -<A HREF="http://www.netspace.net.au/~mheath/ttf2pt1/"> -http://www.netspace.net.au/~mheath/ttf2pt1/ -</A><br> - The old main page of the project. -<p> -<!-- ==back --> -<!-- =stop --> - -<A HREF="http://sourceforge.net/projects/gnuwin32"> -http://sourceforge.net/projects/gnuwin32 -</A><br> - Precompiled binaries for Windows. -<p> - -<A HREF="http://www.lcdf.org/~eddietwo/type/"> -http://www.lcdf.org/~eddietwo/type/ -</a><br> - The home page of the Type 1 utilities package. -<p> - -<A HREF="http://www.rightbrain.com/pages/books.html"> -http://www.rightbrain.com/pages/books.html -</a><br> - The first book about PostScript on the Web, "Thinking in PostScript". -<p> - -<A HREF="http://fonts.apple.com/TTRefMan/index.html"> -http://fonts.apple.com/TTRefMan/index.html -</a><br> - The True Type reference manual. -<p> - -<A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/PLRM.pdf"> -http://partners.adobe.com/asn/developer/PDFS/TN/PLRM.pdf -</a><br> - Adobe PostScript reference manual. -<p> - -<A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/T1_SPEC.PDF"> -http://partners.adobe.com/asn/developer/PDFS/TN/T1_SPEC.PDF -</a><br> - Specification of the Type 1 font format. -<p> - -<A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/5015.Type1_Supp.pdf"> -http://partners.adobe.com/asn/developer/PDFS/TN/5015.Type1_Supp.pdf -</a><br> - The Type 1 font format supplement. -<p> - -<A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/5004.AFM_Spec.pdf"> -http://partners.adobe.com/asn/developer/PDFS/TN/5004.AFM_Spec.pdf -</A><BR> - Specification of the Adobe font metrics file format. -<p> - -<A HREF="http://www.cs.wpi.edu/~matt/courses/cs563/talks/surface/bez_surf.html"> -http://www.cs.wpi.edu/~matt/courses/cs563/talks/surface/bez_surf.html -</A><BR> -<A HREF="http://www.cs.wpi.edu/~matt/courses/cs563/talks/curves.html"> -http://www.cs.wpi.edu/~matt/courses/cs563/talks/curves.html -</A><BR> - Information about the Bezier curves. -<p> - -<A HREF="http://www.neuroinformatik.ruhr-uni-bochum.de/ini/PEOPLE/rmz/t1lib/t1lib.html"> -http://www.neuroinformatik.ruhr-uni-bochum.de/ini/PEOPLE/rmz/t1lib/t1lib.html -</A><br> - A stand-alone library supporting the Type1 fonts. Is neccessary - to compile the programs <tt>other/cmpf</tt> and <tt>other/dmpf</tt>. -<p> - -<A HREF="http://www.freetype.org"> -http://www.freetype.org -</A><br> - A library supporting the TTF fonts. Also many useful TTF programs - are included with it. -<p> - -<A HREF="http://heliotrope.homestead.com/files/printsoft.html"> -http://heliotrope.homestead.com/files/printsoft.html -</A><br> - Moses Gold's collection of links to printing software. -<p> - -<A HREF="http://linuxartist.org/fonts/"> -http://linuxartist.org/fonts/ -</A><br> - Collection of font-related links. -<p> - -<HR> -<HR> -<! ----------------------------------------------------------------------- ----------------------------------------------------------------------- -> - -Following is the Readme of <tt>ttf2pfa</tt> (true type to type 3 font converter) It -covers other issues regarding the use of this software. Please note that -although <tt>ttf2pfa</tt> is a public domain software, <tt>ttf2pt1</tt> -is instead covered by an Open Source license. See the <tt>COPYRIGHT</tt> -file for details. -<p> - -Please note also that <tt>ttf2pfa</tt> has not been maintained for a long time. -All of its functionality has been integrated into <tt>ttf2pt1</tt> and all the -development moved to <tt>ttf2pt1</tt>, including Andrew Weeks, the author of -<tt>ttf2pfa</tt>. <tt>Ttf2pfa</tt> is provided for historical reasons only. Please use -<tt>ttf2pt1</tt> instead. - -<HR> -<! ----------------------------------------------------------------------- -> - -<H3> -True Type to Postscript Font converter -</H3> -<! --------------------------------------- -> - -My mind is still reeling from the discovery that I was able to write -this program. What it does is it reads a Microsoft TrueType font and -creates a Postscript font. '<I>_A_</I> postscript font', that is, not necessarily -the same font, you understand, but a fair imitation. -<p> - -Run it like this: -<p> - -<blockquote><tt> - ttf2pfa fontfile.ttf fontname -</tt></blockquote> -<p> - -The first parameter is the truetype filename, the second is a stem for -the output file names. The program will create a <tt>fontname.pfa</tt> containing -the Postscript font and a <tt>fontname.afm</tt> containing the metrics. -<p> - -The motivation behind this is that in Linux if you do not have a -Postscript printer, but only some other printer, you can only print -Postscript by using Ghostscript. But the fonts that come with -Ghostscript are very poor (they are converted from bitmaps and look -rather lumpy). This is rather frustrating as the PC running Linux -probably has MS-Windows as well and will therefore have truetype fonts, -but which are quite useless with Linux, X or Ghostscript. -<p> - -The program has been tested on over a hundred different TrueType fonts -from various sources, and seems to work fairly well. The converted -characters look OK, and the program doesn't seem to crash any more. I'm -not sure about the AFM files though, as I have no means to test them. -<p> - -The fonts generated will not work with X, as the font rasterizer that -comes with X only copes with Type 1 fonts. If I have the time I may -modify ttf2pfa to generate Type 1s. -<p> - -<H4> -Copyright issues -</H4> -<! ----------------- -> - -I am putting this program into the public domain, so don't bother -sending me any money, I'd only have to declare it for income tax. -<p> - -Copyright on fonts, however, is a difficult legal question. Any -copyright statements found in a font will be preserved in the output. -Whether you are entitled to translate them at all I don't know. -<p> - -If you have a license to run a software package, like say MS-Windows, on -your PC, then you probably have a right to use any part of it, including -fonts, on that PC, even if not using that package for its intended -purpose. -<p> - -I am not a lawyer, however, so this is not a legal opinion, and may be -garbage. -<p> - -There shouldn't be a any problem with public domain fonts. -<p> - -<H4> -About the Program -</H4> -<! ------------------ -> - -It was written in C on a IBM PC running Linux. -<p> - -The TrueType format was originally developed by Apple for the MAC, which -has opposite endianness to the PC, so to ensure compatibility 16 and 32 -bit fields are the wrong way round from the PC's point of view. This is -the reason for all the 'ntohs' and 'ntohl' calls. Doing it this way -means the program will also work on big-endian machines like Suns. -<p> - -I doubt whether it will work on a DOS-based PC though. -<p> - -The program produces what technically are Type 3 rather than Type 1 -fonts. They are not compressed or encrypted and are plain text. This is -so I (and you) can see what's going on, and (if you're a Postscript guru -and really want to) can alter the outlines. -<p> - -I only translate the outlines, not the 'instructions' that come with -them. This latter task is probably virtually impossible anyway. TrueType -outlines are B-splines rather than the Bezier curves that Postscript -uses. I believe that my conversion algorithm is reasonably correct, if -nothing else because the characters look right. -<p> - -<H4> -Problems that may occur -</H4> -<! ------------------------ -> - -Most seriously, very complex characters (with lots of outline segments) -can make Ghostscript releases 2.x.x fail with a 'limitcheck' error. It -is possible that this may happen with some older Postscript printers as -well. Such characters will be flagged by the program and there are -basically two things you can do. First is to edit the <tt>.pfa</tt> file to -simplify or remove the offending character. This is not really -recommended. The second is to use Ghostscript release 3, if you can get -it. This has much larger limits and does not seem to have any problems -with complex characters. -<p> - -Then there are buggy fonts (yes, a font can have bugs). I try to deal -with these in as sane a manner as possible, but it's not always -possible. -<p> - -<H4> -Encodings -</H4> -<! ---------- -> - -A postscript font must have a 256 element array, called an encoding, -each element of which is a name, which is also the name of a procedure -contained within the font. The 'BuildChar' command takes a byte and uses -it to index the encoding array to find a character name, and then looks -that up in the font's procedure table find the commands to draw the -glyph. However, not all characters need be in the encoding array. Those -that are not cannot be drawn (at least not using 'show'), however it is -possible to 're-encode' the font to enable these characters. There are -several standard encodings: Adobe's original, ISO-Latin1 and Symbol -being the most commonly encountered. -<p> - -TrueType fonts are organised differently. As well as the glyph -descriptions there are a number of tables. One of these is a mapping -from a character set into the glyph array, and another is a mapping from -the glyph array into a set of Postscript character names. The problems -are: -<p> - 1) Microsoft uses Unicode, a 16-bit system, to encode the font. -<br> - 2) that more than one glyph is given the same Postscript name. -<p> - -I deal with (1) by assuming a Latin1 encoding. The MS-Windows and -Unicode character sets are both supersets of ISO-8859-1. This usually -means that most characters will be properly encoded, but you should be -warned that some software may assume that fonts have an Adobe encoding. -Symbol, or Dingbat, fonts are in fact less of a problem, as they have -private encodings starting at 0xF000. It is easy to just lose the top -byte. -<p> - -Postscript fonts can be re-encoded, either manually, or by software. -Groff, for example, generates postscript that re-encodes fonts with the -Adobe encoding. The problem here is that not all characters in the Adobe -set are in the MS-Windows set. In particular there are no fi and fl -ligatures. This means that conversions of the versions of -Times-New-Roman and Arial that come with MS-Windows cannot be used -blindly as replacements for Adobe Times-Roman and Helvetica. You can get -expanded versions of MS fonts from Microsoft's web site which do contain -these ligatures (and a lot else besides). -<p> - -I deal with (2) by creating new character names. This can be error-prone -because I do not know which of them is the correct glyph to give the -name to. Some (buggy) fonts have large numbers of blank glyphs, all with -the same name. -<p> - -(almost every TrueType font has three glyphs called <tt>.notdef</tt>, one of them -is usually an empty square shape, one has no outline and has zero width, -and one has no outline and a positive width. This example is not really -a problem with well formed fonts since the <tt>.notdef</tt> characters are only -used for unprintable characters, which shouldn't occur in your documents -anyway). -<p> -</BODY> -</HTML> diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/app/RPM/Makefile b/application/third_party/dompdf/lib/ttf2ufm/src/app/RPM/Makefile deleted file mode 100644 index 02a33b4d..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/app/RPM/Makefile +++ /dev/null @@ -1,279 +0,0 @@ - -# This file should be configured before running `make'. -# Uncomment or change the values that are relevant for your OS. - -# The preferred C compiler (by default use the OS-specific default value). -# For BSD/OS, FreeBSD, Linux (all flavors), NetBSD, OpenBSD the default -# compiler is GNU C. -# (Note please the politically correct ordering by alphabet ! :-) -# -# Use GNU C even if it's not the default compiler -# -CC=gcc -# -# Use the standard ANSI C compiler on HP-UX even if it's not default -# -#CC=c89 - -# -# The system-dependent flags for the C compiler -# -# Default - -CFLAGS_SYS= -O2 -D_GNU_SOURCE - -# For GNU C -# -CFLAGS_SYS= -O2 -D_GNU_SOURCE -# -# For GNU C with long options support library (Linux etc.) -# -CFLAGS_SYS= -O2 -D_GNU_SOURCE -# -# For GNU C on HP-UX/PA-RISC 1.1 -# -#CFLAGS_SYS= -O2 -Wa,-w -# -# For the standard ANSI C on HP-UX -# -#CFLAGS_SYS= +O2 -D_HPUX_SOURCE - -# -# The system-dependent libraries -# -# Defalut (for the BSD-style OSes) - -LIBS_SYS= -lm - -# For SystemV (such as SCO, UnixWare, Solaris, but _NOT_ Linux or HP-UX) -# -#LIBS_SYS= -lm -lsocket - -# -# The flags for C compiler for the FreeType-2 library (disabled by default). -# This WON'T BUILD with FT2-beta8, use the FreeType release 2.0.4 -# http://download.sourceforge.net/freetype/freetype-2.0.4.tar.gz - -CFLAGS_FT= - -# To enable use of the FreeType-2 library -# (if the include and lib directory do not match your installation, -# modify them), also uncomment LIBS_FT -# -#CFLAGS_FT = -DUSE_FREETYPE -I/usr/include/freetype2 -I/usr/include - -# -# The FreeType-2 library flags (disabled by default) - -LIBS_FT= - -# To enable use of the FreeType-2 library -# (if the include and lib directory do not match your installation, -# modify them), also uncomment CFLAGS_FT -# -#LIBS_FT= -L/usr/lib -lfreetype - -# -# The flags for C compiler for the Autotrace library (disabled by default). -# USE OF THIS FEATURE IS STRONGLY DISCOURAGED, THE BUILT-IN TRACING -# (AKA VECTORIZATION) PROVIDES MUCH BETTER RESULTS. -# The tested version is 0.29a (and the fonts produced with it are -# absolutely not usable). -# http://download.sourceforge.net/autotrace/autotrace-0.29.tar.gz - -CFLAGS_AT= - -# To enable use of the Autotrace library -# (if the include and lib directory do not match your installation, -# modify them), also uncomment LIBS_AT -# -#CFLAGS_AT = -DUSE_AUTOTRACE -I/usr/local/include - -# -# The Autotrace library flags (disabled by default) - -LIBS_AT= - -# To enable use of the Autotrace library -# (if the include and lib directory do not match your installation, -# modify them), also uncomment CFLAGS_AT -# -#LIBS_AT= -L/usr/local/lib -lautotrace - -# -# Preference of front-ends if multiple parsers match a file -# (by default the build-in front-end takes preference over FreeType) - -CFLAGS_PREF= - -# To prefer FreeType (if enabled): -# -#CFLAGS_PREF= -DPREFER_FREETYPE - -# Uncomment the second line to not compile t1asm into ttf2pt1 -CFLAGS_EXTT1ASM= -#CFLAGS_EXTT1ASM= -DEXTERNAL_T1ASM - -CFLAGS= $(CFLAGS_SYS) $(CFLAGS_FT) $(CFLAGS_AT) $(CFLAGS_PREF) -LIBS= $(LIBS_SYS) $(LIBS_FT) $(LIBS_AT) - -# Installation-related stuff -# -# The base dir for installation and subdirs in it -INSTDIR = /home/eclecticgeek/apps -# for binaries -BINDIR = $(INSTDIR)/bin -# for binaries of little general interest -LIBXDIR = $(INSTDIR)/libexec/ttf2pt1 -# for scripts, maps/encodings etc. -SHAREDIR = $(INSTDIR)/share/ttf2pt1 -MANDIR = $(INSTDIR)/man - -# owner and group of installed files -OWNER = eclecticgeek -GROUP = pg1755828 - -# After you have configured the Makefile, comment out the following -# definition: -##warning: docs -## @echo >&2 -## @echo " You have to configure the Makefile before running make!" >&2 -## @echo "(or if you are lazy and hope that it will work as is run \`make all')">&2 -## @echo >&2 -# -DOCS=CHANGES README FONTS FONTS.hpux encodings/README other/README \ - app/X11/README app/netscape/README app/TeX/README - -SUBDIRS = app encodings maps scripts other -TXTFILES = README* FONTS* CHANGES* COPYRIGHT - -MANS1=ttf2pt1.1 ttf2pt1_convert.1 ttf2pt1_x2gs.1 -MANS=$(MANS1) $(MANS5) - -all: t1asm ttf2pt1 docs mans rpm - -docs: $(DOCS) - -mans: $(MANS) - -clean: - rm -f t1asm ttf2pt1 *.o app/RPM/Makefile app/RPM/*.spec *.core core.* core - ( cd other && make clean; ) - ( cd app/netscape && make clean; ) - -veryclean: clean - rm -f $(DOCS) $(MANS) - -rpm: app/RPM/Makefile app/RPM/ttf2pt1.spec - -ttf2pt1.1: README.html - scripts/html2man . . <README.html - -ttf2pt1_convert.1 ttf2pt1_x2gs.1: FONTS.html - scripts/html2man . . <FONTS.html - -app/RPM/Makefile: Makefile -# sed 's/^CFLAGS_SYS.*=.*$$/CFLAGS_SYS= -O2 -D_GNU_SOURCE/;/warning:/,/^$$/s/^/#/' <Makefile >app/RPM/Makefile -# -app/RPM/ttf2pt1.spec: app/RPM/ttf2pt1.spec.src version.h - sed 's/^Version:.*/Version: '`grep TTF2PT1_VERSION version.h| cut -d\" -f2`'/' <app/RPM/ttf2pt1.spec.src >$@ - -t1asm: t1asm.c - $(CC) $(CFLAGS) -o t1asm -DSTANDALONE t1asm.c $(LIBS) - -ttf2pt1.o: ttf2pt1.c ttf.h pt1.h global.h version.h - $(CC) $(CFLAGS) -c ttf2pt1.c - -pt1.o: pt1.c ttf.h pt1.h global.h - $(CC) $(CFLAGS) -c pt1.c - -ttf.o: ttf.c ttf.h pt1.h global.h - $(CC) $(CFLAGS) -c ttf.c - -ft.o: ft.c pt1.h global.h - $(CC) $(CFLAGS) -c ft.c - -bdf.o: bdf.c pt1.h global.h - $(CC) $(CFLAGS) -c bdf.c - -bitmap.o: bitmap.c pt1.h global.h - $(CC) $(CFLAGS) -c bitmap.c - -runt1asm.o: runt1asm.c global.h - $(CC) $(CFLAGS) $(CFLAGS_EXTT1ASM) -c runt1asm.c - -ttf2pt1: ttf2pt1.o pt1.o runt1asm.o ttf.o ft.o bdf.o bitmap.o - $(CC) $(CFLAGS) -o ttf2pt1 ttf2pt1.o pt1.o runt1asm.o ttf.o ft.o bdf.o bitmap.o $(LIBS) - -CHANGES: CHANGES.html - scripts/unhtml <CHANGES.html >CHANGES - -README: README.html - scripts/unhtml <README.html >README - -encodings/README: encodings/README.html - scripts/unhtml <encodings/README.html >encodings/README - -other/README: other/README.html - scripts/unhtml <other/README.html >other/README - -app/X11/README: app/X11/README.html - scripts/unhtml <app/X11/README.html >app/X11/README - -app/netscape/README: app/netscape/README.html - scripts/unhtml <app/netscape/README.html >app/netscape/README - -app/TeX/README: app/TeX/README.html - scripts/unhtml <app/TeX/README.html >app/TeX/README - -FONTS: FONTS.html - scripts/unhtml <FONTS.html >FONTS - -FONTS.hpux: FONTS.hpux.html - scripts/unhtml <FONTS.hpux.html >FONTS.hpux - -install: all - scripts/inst_dir $(BINDIR) $(OWNER) $(GROUP) 0755 - scripts/inst_dir $(LIBXDIR) $(OWNER) $(GROUP) 0755 - scripts/inst_dir $(SHAREDIR) $(OWNER) $(GROUP) 0755 - scripts/inst_dir $(MANDIR)/man1 $(OWNER) $(GROUP) 0755 - scripts/inst_dir $(MANDIR)/man5 $(OWNER) $(GROUP) 0755 - cp -R $(TXTFILES) $(SUBDIRS) $(SHAREDIR) - chown -R $(OWNER) $(SHAREDIR) - chgrp -R $(GROUP) $(SHAREDIR) - chmod -R go-w $(SHAREDIR) - scripts/inst_file ttf2pt1 $(BINDIR)/ttf2pt1 $(OWNER) $(GROUP) 0755 - [ -f $(BINDIR)/t1asm ] || scripts/inst_file t1asm $(LIBXDIR)/t1asm $(OWNER) $(GROUP) 0755 - sed -e 's|^TTF2PT1_BINDIR=$$|TTF2PT1_BINDIR=$(BINDIR)|;' \ - -e 's|^TTF2PT1_LIBXDIR=$$|TTF2PT1_LIBXDIR=$(LIBXDIR)|;' \ - -e 's|^TTF2PT1_SHAREDIR=$$|TTF2PT1_SHAREDIR=$(SHAREDIR)|;' <scripts/convert >cvt.tmp - scripts/inst_file cvt.tmp $(BINDIR)/ttf2pt1_convert $(OWNER) $(GROUP) 0755 - scripts/inst_file cvt.tmp $(SHAREDIR)/scripts/convert $(OWNER) $(GROUP) 0755 - rm cvt.tmp - scripts/inst_file scripts/x2gs $(BINDIR)/ttf2pt1_x2gs $(OWNER) $(GROUP) 0755 - for i in $(MANS1); do { \ - sed -e 's|TTF2PT1_BINDIR|$(BINDIR)|;' \ - -e 's|TTF2PT1_LIBXDIR|$(LIBXDIR)|;' \ - -e 's|TTF2PT1_SHAREDIR|$(SHAREDIR)|;' <$$i >$(MANDIR)/man1/$$i \ - && chown $(OWNER) $(MANDIR)/man1/$$i \ - && chgrp $(GROUP) $(MANDIR)/man1/$$i \ - && chmod 0644 $(MANDIR)/man1/$$i \ - || exit 1; \ - } done - -uninstall: - rm -f $(BINDIR)/ttf2pt1 $(BINDIR)/ttf2pt1_convert $(BINDIR)/ttf2pt1_x2gs - rm -rf $(LIBXDIR) - rm -rf $(SHAREDIR) - for i in $(MANS1); do { \ - rm -f $(MANDIR)/man1/$$i $(MANDIR)/man1/$$i.gz; \ - } done - - -# targets for automatic generation of releases and snapshots - -snapshot: - scripts/mkrel snapshot - -release: - scripts/mkrel release diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/app/RPM/ttf2pt1.spec b/application/third_party/dompdf/lib/ttf2ufm/src/app/RPM/ttf2pt1.spec deleted file mode 100644 index 73a658d5..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/app/RPM/ttf2pt1.spec +++ /dev/null @@ -1,40 +0,0 @@ -Summary: TrueType to Adobe Type 1 font converter -Name: ttf2pt1 -Version: 3.4.4 -Release: 1jv -Source: %{name}-%{version}.tgz -Copyright: Distributable -Group: Utilities/Printing -BuildRoot: /var/tmp/ttf2pt1 - -%description - * True Type Font to Adobe Type 1 font converter - * By Mark Heath <mheath@netspace.net.au> - * Based on ttf2pfa by Andrew Weeks <ccsaw@bath.ac.uk> - * With help from Frank M. Siegert <fms@this.net> - -%prep -%setup - -%build -make all - -%install -rm -fr $RPM_BUILD_ROOT -mkdir -p $RPM_BUILD_ROOT/usr/local/bin -mkdir -p $RPM_BUILD_ROOT/usr/local/share/%{name} -mkdir -p $RPM_BUILD_ROOT/usr/local/doc - -install -s -m 0555 ttf2pt1 $RPM_BUILD_ROOT/usr/local/bin -install -m 0555 scripts/* $RPM_BUILD_ROOT/usr/local/share/%{name} -chmod 0444 $RPM_BUILD_ROOT/usr/local/share/%{name}/convert.cfg.sample - -%clean -rm -rf $RPM_BUILD_ROOT - -%files -%defattr(644, root, root, 755) -%doc README README.html INSTALL INSTALL.html -/usr/local/bin/ttf2pt1 -/usr/local/share/%{name} - diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/app/RPM/ttf2pt1.spec.src b/application/third_party/dompdf/lib/ttf2ufm/src/app/RPM/ttf2pt1.spec.src deleted file mode 100644 index 31fc9843..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/app/RPM/ttf2pt1.spec.src +++ /dev/null @@ -1,40 +0,0 @@ -Summary: TrueType to Adobe Type 1 font converter -Name: ttf2pt1 -Version: XXX -Release: 1jv -Source: %{name}-%{version}.tgz -Copyright: Distributable -Group: Utilities/Printing -BuildRoot: /var/tmp/ttf2pt1 - -%description - * True Type Font to Adobe Type 1 font converter - * By Mark Heath <mheath@netspace.net.au> - * Based on ttf2pfa by Andrew Weeks <ccsaw@bath.ac.uk> - * With help from Frank M. Siegert <fms@this.net> - -%prep -%setup - -%build -make all - -%install -rm -fr $RPM_BUILD_ROOT -mkdir -p $RPM_BUILD_ROOT/usr/local/bin -mkdir -p $RPM_BUILD_ROOT/usr/local/share/%{name} -mkdir -p $RPM_BUILD_ROOT/usr/local/doc - -install -s -m 0555 ttf2pt1 $RPM_BUILD_ROOT/usr/local/bin -install -m 0555 scripts/* $RPM_BUILD_ROOT/usr/local/share/%{name} -chmod 0444 $RPM_BUILD_ROOT/usr/local/share/%{name}/convert.cfg.sample - -%clean -rm -rf $RPM_BUILD_ROOT - -%files -%defattr(644, root, root, 755) -%doc README README.html INSTALL INSTALL.html -/usr/local/bin/ttf2pt1 -/usr/local/share/%{name} - diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/app/TeX/README b/application/third_party/dompdf/lib/ttf2ufm/src/app/TeX/README deleted file mode 100644 index cffad647..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/app/TeX/README +++ /dev/null @@ -1,51 +0,0 @@ -Scripts to support CJK-LaTeX - -by Mike Fabian -<mfabian@suse.de> - -The tiny Perl-script 'sfd2map' converts .sfd files (as used by -CJK-LaTeX) to .map files (as used by ttf2pt1). - -Actually I currently don't use that script stand-alone for performance -reasons. - -Currently I use such a conversion in another small script 'cjk-latex-config' -(attached as well) which creates .tfm files usable with CJK-LaTeX -from TrueType fonts as listed in /etc/ttf2pk/ttfonts.map. When called like - cjk-latex-config --type1 -this script will use ttf2pt1 to generate .pfb files as well from these TrueType -fonts to be used with CJK-LaTeX. - -The .sfd files cannot be directly used as input to ttf2pt1 because the -format of the .map files which ttf2pt1 expects is slightly different, -therefore I made the 'sfd2map' converter script. - -But then I noticed that I would have to parse the generated map file -*again* to get a list of the plane numbers to use. That seemed to be a -bit wastful because I had just parsed the .sfd file to convert it to -.map, therefore I included sfd2map as a function in 'cjk-latex-config' -as well and collected the plane numbers during the conversion. - -But 'cjk-latex-config' is maybe a little bit SuSE specific, therefore -I kept 'sfd2map' also as a standalong script. Use it if you like. - -'cjk-latex-config' calls another small script 'cjk-latex-t1mapgen' -to generate a cjk-latex.map file containing something like - cyberb00 BitstreamCyberbit-Roman-00 <cyberb00.pfb - cyberb01 BitstreamCyberbit-Roman-01 <cyberb01.pfb - cyberb02 BitstreamCyberbit-Roman-02 <cyberb02.pfb - [...] -after all .pfb files have been generated. - -Maybe this is also SuSE specific, I'm not sure about in what -directories the relevant files are stored on other Linux-like systems. - -I'm not yet sure whether they work on other systems beside SuSE Linux. -They have hard coded path names where to find the TrueType fonts, -ttfonts.map, the TeX fonts etc and cjk-latex-config checks -whether freetype-tools.rpm is installed. freetype-tools.rpm might -have another name for other distributions and for distributions -which don't use rpm this check can't work anyway. - -These are small details and it should not be difficult to adapt the -scripts for other Linux-like systems though. diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/app/TeX/README.html b/application/third_party/dompdf/lib/ttf2ufm/src/app/TeX/README.html deleted file mode 100644 index f526f503..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/app/TeX/README.html +++ /dev/null @@ -1,80 +0,0 @@ -<HTML> -<HEAD> -<TITLE> -Scripts to support CJK-LaTeX -</TITLE> -</HEAD> -<BODY> -<H2> -Scripts to support CJK-LaTeX -</H2> - -by Mike Fabian -&lt;mfabian@suse.de&gt; -<p> - -The tiny Perl-script '<tt>sfd2map</tt>' converts <tt>.sfd</tt> files (as used by -CJK-LaTeX) to <tt>.map</tt> files (as used by ttf2pt1). -<p> - -Actually I currently don't use that script stand-alone for performance -reasons. -<p> - -Currently I use such a conversion in another small script '<tt>cjk-latex-config</tt>' -(attached as well) which creates <tt>.tfm</tt> files usable with CJK-LaTeX -from TrueType fonts as listed in <tt>/etc/ttf2pk/ttfonts.map</tt>. When called like -<br> -&nbsp;&nbsp;<tt>cjk-latex-config --type1</tt> -<br> -this script will use ttf2pt1 to generate <tt>.pfb</tt> files as well from these TrueType -fonts to be used with CJK-LaTeX. -<p> - -The <tt>.sfd</tt> files cannot be directly used as input to ttf2pt1 because the -format of the <tt>.map</tt> files which ttf2pt1 expects is slightly different, -therefore I made the '<tt>sfd2map</tt>' converter script. -<p> - -But then I noticed that I would have to parse the generated map file -*again* to get a list of the plane numbers to use. That seemed to be a -bit wastful because I had just parsed the <tt>.sfd</tt> file to convert it to -<tt>.map</tt>, therefore I included <tt>sfd2map</tt> as a function in '<tt>cjk-latex-config</tt>' -as well and collected the plane numbers during the conversion. -<p> - -But '<tt>cjk-latex-config</tt>' is maybe a little bit SuSE specific, therefore -I kept '<tt>sfd2map</tt>' also as a standalong script. Use it if you like. -<p> - -'<tt>cjk-latex-config</tt>' calls another small script '<tt>cjk-latex-t1mapgen</tt>' -to generate a <tt>cjk-latex.map</tt> file containing something like -<br> -<tt>&nbsp;&nbsp;cyberb00 BitstreamCyberbit-Roman-00 &lt;cyberb00.pfb</tt> -<br> -<tt>&nbsp;&nbsp;cyberb01 BitstreamCyberbit-Roman-01 &lt;cyberb01.pfb</tt> -<br> -<tt>&nbsp;&nbsp;cyberb02 BitstreamCyberbit-Roman-02 &lt;cyberb02.pfb</tt> -<br> -<tt>&nbsp;&nbsp;[...]</tt> -<br> -after all <tt>.pfb</tt> files have been generated. -<p> - -Maybe this is also SuSE specific, I'm not sure about in what -directories the relevant files are stored on other Linux-like systems. -<p> - -I'm not yet sure whether they work on other systems beside SuSE Linux. -They have hard coded path names where to find the TrueType fonts, -<tt>ttfonts.map</tt>, the TeX fonts etc and <tt>cjk-latex-config</tt> checks -whether freetype-tools.rpm is installed. freetype-tools.rpm might -have another name for other distributions and for distributions -which don't use rpm this check can't work anyway. -<p> - -These are small details and it should not be difficult to adapt the -scripts for other Linux-like systems though. -<p> -</BODY> -</HTML> diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/app/TeX/cjk-latex-config b/application/third_party/dompdf/lib/ttf2ufm/src/app/TeX/cjk-latex-config deleted file mode 100644 index 4ee30e28..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/app/TeX/cjk-latex-config +++ /dev/null @@ -1,352 +0,0 @@ -#!/usr/bin/perl -w -# -# Copyright (c) 2002 SuSE Linux AG, Nuernberg, Germany. All rights reserved. -# -# Author: Mike Fabian <mfabian@suse.de>, 2002 -# - -use English; -use Getopt::Long; - -# check if we are started as root -# only one of UID and USER must be set correctly - -if ($UID != 0 && $ENV{USER} !~ /root/) { - print "You must be root to start $0\n"; - exit 1; -} - -if (system ("rpm -q freetype-tools >/dev/null 2>&1") != 0) { - print "freetype-tools package missing, exiting.\n"; - exit 1; -} - - -sub usage { - print "Usage: cjk-latex-config [--verbose|v] [--force|f] [--type1|t]\n"; - exit 1; -} - -# Process command line options -my %opt; -unless (GetOptions(\%opt, - 'verbose|v', \$OPT_VERBOSE, - 'force|f', \$OPT_FORCE, - 'type1|t', \$OPT_TYPE1, - )) { - &usage(); - exit 1; -} - -# to make sure ttf2tfm finds the .sdf files: -system("texhash"); - -$tfm_created = 0; -$type1_created = 0; - -system("mkdir -p /usr/share/texmf/fonts/truetype/"); - -open (TTFONTS_MAP, "/etc/ttf2pk/ttfonts.map"); - -while (<TTFONTS_MAP>) { - - chomp($ARG); - - if ($ARG =~ /\@[a-zA-Z0-9\/]+\@/) { - - if($OPT_VERBOSE) { - print "----------------------------------------------------------------------\n"; - print "$ARG\n"; - } - - @fields = split(/\s+/, $ARG); - - $tt_dir = "/usr/X11R6/lib/X11/fonts/truetype/"; - $tt_basename = $fields[1]; - - if ($fields[0] =~ /([^\s]+)\@[a-zA-Z0-9\/]+\@/) { - $latex_font_name = $1; - } else { - print "can't find latex font name.\n"; - exit 1 - } - - if ($fields[0] =~ /\@([a-zA-Z0-9\/]+)\@/) { - $sfd_name = $1; - $sfd_name =~ /.*\/([a-zA-Z0-9]+)/; - $sfd_basename = $1; - } else { - print "can't find sfd_name.\n"; - exit 1 - } - - if ($ARG =~ /Pid=([0-9]+)/) { - $pid = "$1"; - } else { - $pid = "3"; - } - - if ($ARG =~ /Eid=([0-9]+)/) { - $eid = "$1"; - } else { - $eid = "1"; - } - - if ($ARG =~ /Slant=([0-9.]+)/) { - $slant = $1; - $slant_opt = "-s $1"; - } else { - $slant = 0; - $slant_opt = "-s 0"; - } - - if ($ARG =~ /Rotate=(Yes)/) { - $rotate = 1; - $rotate_opt = "-x"; - } else { - $rotate = 0; - $rotate_opt = ""; - } - - if (-e "$tt_dir/$tt_basename") { - symlink("$tt_dir/$tt_basename", - "/usr/share/texmf/fonts/truetype/$tt_basename"); - $tfm_dir = "/usr/share/texmf/fonts/tfm/cjk-latex/"; - $type1_dir = "/usr/share/texmf/fonts/type1/cjk-latex/"; - - if (0 != create_or_update_tfm ()) { - print "creating .tfm failed.\n"; - } - if ($OPT_TYPE1 && $slant == 0 && $rotate == 0) { - if (0 != create_or_update_type1 ()) { - print "creating type1 font failed.\n"; - } - } - } - } -} - -if ($type1_created) { - $command = "cjk-latex-t1mapgen $type1_dir"; - if (0 != system ($command)) { - print "$command failed.\n"; - exit 1; - } -} - -if ($tfm_created || $type1_created) { - system("texhash"); -} - - -exit 0; - - -###################################################################### - -sub create_or_update_tfm { - - if ($OPT_FORCE || - mtime_differs_or_missing ("$tt_dir/$tt_basename", - "$tfm_dir/$sfd_basename/$latex_font_name/")) { - - if (0 != system ("mkdir -p $tfm_dir/$sfd_basename/$latex_font_name/")) { - print "mkdir -p $tfm_dir/$sfd_basename/$latex_font_name/ failed.\n"; - exit 1; - } - if (! chdir ("$tfm_dir/$sfd_basename/$latex_font_name/")) { - print "can't chdir to $tfm_dir/$sfd_basename/$latex_font_name/\n"; - exit 1; - } - - $command = "ttf2tfm $tt_dir/$tt_basename "; - unless ($OPT_VERBOSE) { - $command .= " -q"; - } - $command .= " -P $pid -E $eid $rotate_opt $slant_opt $latex_font_name\@$sfd_name\@"; - if ($OPT_VERBOSE) { - print "$command\n"; - } else { - $command .= " > /dev/null 2>&1"; - print "$latex_font_name\@$sfd_name\@: calling ttf2tfm ...\n"; - } - if (0 != system($command)) { - print "$command failed.\n"; - return 1; - } - - # success, mark this by giving the created directory the same time stamp - # as the TT-font: - system("touch -r $tt_dir/$tt_basename $tfm_dir/$sfd_basename/$latex_font_name/"); - $tfm_created = 1; - return 0; - } - -} - -###################################################################### - -sub create_or_update_type1 { - - if ($OPT_FORCE || - mtime_differs_or_missing ("$tt_dir/$tt_basename", - "$type1_dir/$sfd_basename/$latex_font_name/")) { - - if (0 != system ("mkdir -p $type1_dir/$sfd_basename/$latex_font_name/")) { - print "mkdir -p $type1_dir/$sfd_basename/$latex_font_name/ failed.\n"; - exit 1; - } - if (! chdir ("$type1_dir/$sfd_basename/$latex_font_name/")) { - print "can't chdir to $type1_dir/$sfd_basename/$latex_font_name/\n"; - exit 1; - } - - if (grep(/$tt_basename/,("wadalab-gothic.ttf","watanabe-mincho.ttf"))) { - print "$tt_basename does not work with ttf2pt1, skipping ...\n"; - return 0; - } - - # disable smoothing of outlines for broken fonts - # (for details see 'man ttf2pt1'): - my $smoothing_opt = " "; - if (grep(/$tt_basename/,("kochi-gothic.ttf"))) { - print "$tt_basename broken, disabling smoothing of outlines.\n"; - $smoothing_opt = " -O s "; - } - - $sfd_file = "/usr/share/texmf/ttf2tfm/$sfd_basename.sfd"; - $map_file = `mktemp /tmp/cjk-latex-config-map.XXXXXX`; - chomp $map_file; - if ($map_file eq "") { - print "mktemp /tmp/cjk-latex-config-map.XXXXXX failed.\n"; - } - - @planes = sfd2map($sfd_file,$map_file); - if ($#planes == -1) { - print "sfd2map($sfd_file,$map_file) failed.\n"; - return 1; - } - - for my $plane (@planes) { - if ($OPT_VERBOSE) { - $command = "ttf2pt1 -W 99 "; - } else { - $command = "ttf2pt1 -W 0 "; - } - $command .= $smoothing_opt; - $command .= " -p ft -b -G a -m h=5000 "; - $command .= " -L $map_file+pid=$pid,eid=$eid,$plane "; - $command .= " $tt_dir/$tt_basename $latex_font_name$plane"; - if ($OPT_VERBOSE) { - print "$command\n"; - } else { - $command .= " > /dev/null 2>&1"; - print "$latex_font_name\@$sfd_name\@, plane=$plane: calling ttf2pt1 ...\n"; - } - if (0 != system($command)) { - print "$command failed.\n"; - return 1; - } - } - - unlink $map_file; - - # success, mark this by giving the created directory the same time stamp - # as the TT-font: - system("touch -r $tt_dir/$tt_basename $type1_dir/$sfd_basename/$latex_font_name/"); - $type1_created = 1; - return 0; - } -} - -###################################################################### - -sub sfd2map { - my($sfd_file,$map_file) = @_; - if (! open (SFD, "<$sfd_file")) { - print "cannot open $sfd_file\n"; - return (); - } - if (! open (MAP, ">$map_file")) { - print "cannot open $map_file\n"; - close (SFD); - return (); - } - - my(@planes) = (); - - while (<SFD>) { - - if ( ! ($ARG =~ /^[[:space:]]*\#/)) { # skip comment lines - - # handle plane numbers: - if ( $ARG =~ /^([[:xdigit:]]{2})[[:space:]]*/ ) { - $ARG =~ s/^([[:xdigit:]]{2})[[:space:]]*/ /; - print MAP "plane $1\n"; - print MAP "at 0x00\n"; - $planes[$#planes + 1] = $1; - } - - # remove continuation chars '\': - $ARG =~ s/\\$//; - - $ARG =~ s/(0x[[:xdigit:]]{1,4})/$1,/g; - # handle ranges like 0xF800_0xF8FF - $ARG =~ s/(0x[[:xdigit:]]{1,4}),_/$1-/g; - } - - print MAP $ARG; - - } - - close (MAP); - close (SFD); - return @planes; -} - - -# Returns true if the modification time of $f1 differs from -# the modification time of $f2 -sub mtime_differs { - my($f1,$f2) = @_; - if( -e $f1 && -e $f2) { - local (@f1s) = stat ($f1); - local (@f2s) = stat ($f2); - return ($f1s[9] != $f2s[9]); - } else { - return 0; - } -} - -# Returns true if the modification time of $f1 differs from -# the modification time of $f2 or if one of the files is missing -sub mtime_differs_or_missing { - my($f1,$f2) = @_; - if (! -e $f1 || ! -e $f2 || mtime_differs($f1,$f2)) { - return 1; - } else { - return 0; - } -} - -# Returns true if $f1 is newer than $f2 -sub newer { - my($f1,$f2) = @_; - if( -e $f1 && -e $f2) { - local (@f1s) = stat ($f1); - local (@f2s) = stat ($f2); - return ($f1s[9] > $f2s[9]); - } else { - return 0; - } -} - -# Returns true if $f1 is newer than $f2 or if one of the files is missing -sub newer_or_missing { - my($f1,$f2) = @_; - if (! -e $f1 || ! -e $f2 || newer($f1,$f2)) { - return 1; - } else { - return 0; - } -} diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/app/TeX/cjk-latex-t1mapgen b/application/third_party/dompdf/lib/ttf2ufm/src/app/TeX/cjk-latex-t1mapgen deleted file mode 100644 index 5b79b45e..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/app/TeX/cjk-latex-t1mapgen +++ /dev/null @@ -1,60 +0,0 @@ -#!/bin/sh -# -# Copyright (c) 2002 SuSE Linux AG, Nuernberg, Germany. All rights reserved. -# -# Author: Mike Fabian <mfabian@suse.de>, 2002 -# - -TYPE1_DIR=$1 -if [ -z $TYPE1_DIR ] ; then - TYPE1_DIR=/usr/share/texmf/fonts/type1/cjk-latex/ -fi - -CJK_LATEX_TYPE1_MAP_FILE=/var/lib/texmf/dvips/config/cjk-latex.map - -echo "creating $CJK_LATEX_TYPE1_MAP_FILE ..." - -TMPFILE=`mktemp /tmp/cjk-latex-t1mapgen.XXXXXX` - -if [ -d $TYPE1_DIR ] ; then - for FILE in $( find $TYPE1_DIR -name "*.pfb" ) - do - BASENAME_WITHOUT_EXT=$( basename $FILE ) - BASENAME_WITHOUT_EXT=${BASENAME_WITHOUT_EXT%.pfb} - FONT_NAME=$( grep -a "/FontName.*def" ${FILE} | perl -pe "s%/FontName /([^ ]+) def%\1%" ) - echo "${BASENAME_WITHOUT_EXT} ${FONT_NAME} <${BASENAME_WITHOUT_EXT}.pfb" >> $TMPFILE - done -fi - -mv $TMPFILE $CJK_LATEX_TYPE1_MAP_FILE -chmod 644 $CJK_LATEX_TYPE1_MAP_FILE - -# add entries for PostScript font map files used by CJK-LaTeX -# to 'pdftex.cfg' and 'config.ps': - -PDFTEX_CFG=/var/lib/texmf/pdftex/config/pdftex.cfg -CONFIG_PS=/var/lib/texmf/dvips/config/config.ps - -for MAP in cjk-latex.map -do - if [ -f /var/lib/texmf/dvips/config/$MAP ] ; then - egrep "^p \+$MAP" $CONFIG_PS > /dev/null - if [ $? = 1 ] ; then - echo "p +$MAP" >> $CONFIG_PS - fi - egrep "^map \+$MAP" $PDFTEX_CFG > /dev/null - if [ $? = 1 ] ; then - echo "map +$MAP" >> $PDFTEX_CFG - fi - fi -done - -# pdflatex seems to prefer pk fonts if they exist. That seems strange -# but I couldn't find out how to change this. -# Deleting all the pk fonts from /var/cache/fonts/pk/* is probably a bit overkill -# but it helps. 'dvips' will regenerate the pk fonts as needed but will not -# regenerate pk fonts for the pfb fonts listed in the map file generated above. -# Therefore, deleting /var/cache/fonts/pk/* makes sure that all available pfb -# fonts are used: - -rm -rf /var/cache/fonts/pk/* \ No newline at end of file diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/app/TeX/sfd2map b/application/third_party/dompdf/lib/ttf2ufm/src/app/TeX/sfd2map deleted file mode 100644 index 671a7fb8..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/app/TeX/sfd2map +++ /dev/null @@ -1,68 +0,0 @@ -#!/usr/bin/perl -w -# -# Copyright (c) 2002 Mike Fabian <mike.fabian@gmx.de> -# -# This program is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. - -use English; -use Getopt::Long; - -sub usage { - print "Usage: sfd2map [-debug|d]\n\n"; - print "Converts a .sfd files in the format used by ttf2pk and ttf2tfm\n"; - print "into .map files in the format expected by ttf2pt1. For example:\n\n"; - print " sfd2map < UJIS.sfd > UJIS.map \n\n"; - exit 1; -} - -# Process command line options -my %opt; -unless (GetOptions(\%opt, - '-debug|d' , \$OPT_DEBUG - )) { - &usage(); - exit 1; -} - -if($OPT_DEBUG) { -} - -open (MAP, ">&STDOUT"); -open (SFD, "<&STDIN"); - -print MAP "# generated from a .sfd file by sfd2map to make it usable with ttf2pt1\n"; -print MAP "#\n"; - -while (<SFD>) { - - if ( ! ($ARG =~ /^[[:space:]]*\#/)) { # skip comment lines - - # handle plane numbers: - if ( $ARG =~ /^([[:xdigit:]]{2})[[:space:]]*/ ) { - $ARG =~ s/^([[:xdigit:]]{2})[[:space:]]*/ /; - print MAP "plane $1\n"; - print MAP "at 0x00\n"; - } - - # remove continuation chars '\': - $ARG =~ s/\\$//; - - $ARG =~ s/(0x[[:xdigit:]]{1,4})/$1,/g; - # handle ranges like 0xF800_0xF8FF - $ARG =~ s/(0x[[:xdigit:]]{1,4}),_/$1-/g; - - } - - print MAP $ARG; - -} - - diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/app/X11/README b/application/third_party/dompdf/lib/ttf2ufm/src/app/X11/README deleted file mode 100644 index c07c7998..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/app/X11/README +++ /dev/null @@ -1,24 +0,0 @@ -Recommended patches for the X11 font library - -by Sergey Babkin -<babkin@bellatlantic.net>, <sab123@hotmail.com> - -These are patches for XFree86 versions 3.3.4 and 3.9 -to fix a few known problems with big Type1 fonts and -with strange handling of the standard stem width table. -The patch for XFree86 3.3.4 probably may be easily -installed on any other distribution of X11. -They are supposed to be installed in the subdirectory - - xc/lib/font/Type1 - -of the X11 source tree and after that the font library, -font server and X server should be rebuilt. - -Sorry that the description has so little details but if -you know how to build X11 then this is enough, otherwise -any more details won't help much. - -The patches have been submitted to the XFree86 project, -hope they will be included in some next release of XFree86 -and X11. diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/app/X11/README.html b/application/third_party/dompdf/lib/ttf2ufm/src/app/X11/README.html deleted file mode 100644 index 322a01e9..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/app/X11/README.html +++ /dev/null @@ -1,41 +0,0 @@ -<HTML> -<HEAD> -<TITLE> -Recommended patches for the X11 font library -</TITLE> -</HEAD> -<BODY> -<H2> -Recommended patches for the X11 font library -</H2> - -by Sergey Babkin -&lt;babkin@bellatlantic.net&gt;, &lt;sab123@hotmail.com&gt; -<p> - -These are patches for XFree86 versions 3.3.4 and 3.9 -to fix a few known problems with big Type1 fonts and -with strange handling of the standard stem width table. -The patch for XFree86 3.3.4 probably may be easily -installed on any other distribution of X11. -They are supposed to be installed in the subdirectory -<br> - -&nbsp;&nbsp;<tt>xc/lib/font/Type1</tt> -<br> - -of the X11 source tree and after that the font library, -font server and X server should be rebuilt. -<p> - -Sorry that the description has so little details but if -you know how to build X11 then this is enough, otherwise -any more details won't help much. -<p> - -The patches have been submitted to the XFree86 project, -hope they will be included in some next release of XFree86 -and X11. -<p> -</BODY> -</HTML> diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/app/X11/t1-xf86.334.patch b/application/third_party/dompdf/lib/ttf2ufm/src/app/X11/t1-xf86.334.patch deleted file mode 100644 index 31e98e2d..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/app/X11/t1-xf86.334.patch +++ /dev/null @@ -1,199 +0,0 @@ -*** fontfcn.c 2000/01/02 18:55:56 1.1 ---- fontfcn.c 2000/01/02 19:00:17 -*************** -*** 33,38 **** ---- 33,39 ---- - #include <string.h> - #include "t1imager.h" - #include "util.h" -+ #include "t1stdio.h" - #include "fontfcn.h" - #include "fontmisc.h" - -*************** -*** 117,132 **** - resetFont(env); - /* This will load the font into the FontP */ - rcode = scan_font(FontP); -! if (rcode == SCAN_OUT_OF_MEMORY) { - /* free the memory and start again */ - xfree(vm_base); - if (!(initFont(vm_size * 2))) { - /* we are really out of memory */ - return(SCAN_OUT_OF_MEMORY); - } - resetFont(env); - rcode = scan_font(FontP); -- /* only double the memory once, then report error */ - } - return(rcode); - } ---- 118,151 ---- - resetFont(env); - /* This will load the font into the FontP */ - rcode = scan_font(FontP); -! if (rcode != SCAN_OUT_OF_MEMORY) -! return rcode; -! -! if (T1FileSize > VM_SIZE) { -! /* use the file size as estimation */ -! - /* free the memory and start again */ - xfree(vm_base); -+ if (!(initFont(T1FileSize))) { -+ /* we are really out of memory */ -+ return(SCAN_OUT_OF_MEMORY); -+ } -+ resetFont(env); -+ rcode = scan_font(FontP); -+ if (rcode != SCAN_OUT_OF_MEMORY) -+ return rcode; -+ } -+ -+ /* if still not enough, increase up to maximum */ -+ while (rcode == SCAN_OUT_OF_MEMORY -+ && vm_size <= VM_SIZE_MAX/2 ) { -+ xfree(vm_base); - if (!(initFont(vm_size * 2))) { - /* we are really out of memory */ - return(SCAN_OUT_OF_MEMORY); - } - resetFont(env); - rcode = scan_font(FontP); - } - return(rcode); - } -*** paths.c 2000/01/02 18:55:56 1.1 ---- paths.c 2000/01/02 18:56:27 -*************** -*** 584,590 **** - CONCAT(before, r); - r = before; - } -! else - r->context = after->context; - if (after != NULL) - CONCAT(r, after); ---- 584,590 ---- - CONCAT(before, r); - r = before; - } -! else if (after != NULL) - r->context = after->context; - if (after != NULL) - CONCAT(r, after); -*** scanfont.c 2000/01/02 18:55:56 1.1 ---- scanfont.c 2000/01/02 18:56:26 -*************** -*** 1383,1388 **** ---- 1383,1390 ---- - /* point to name and search for leading blanks */ - nameP= FontP->FontFileName.data.nameP; - namelen = FontP->FontFileName.len; -+ if (namelen > (128-1) ) /* prevent getting out of filename[] */ -+ namelen = (128-1); - while (nameP[0] == ' ') { - nameP++; - namelen--; -*** t1io.c 2000/01/02 18:55:56 1.1 ---- t1io.c 2000/01/02 18:56:32 -*************** -*** 54,59 **** ---- 54,62 ---- - /* Our single FILE structure and buffer for this package */ - STATIC F_FILE TheFile; - STATIC unsigned char TheBuffer[F_BUFSIZ]; -+ -+ /* the size of the file we read */ -+ int T1FileSize; - - /* Our routines */ - F_FILE *T1Open(), *T1Eexec(); -*************** -*** 87,92 **** ---- 90,96 ---- - of->flags = 0; - of->error = 0; - haveextrach = 0; -+ T1FileSize = 0; - return &TheFile; - } /* end Open */ - -*************** -*** 165,171 **** ---- 169,181 ---- - int T1Close(f) /* Close the file */ - F_FILE *f; /* Stream descriptor */ - { -+ int rc; -+ - if (f->b_base == NULL) return 0; /* already closed */ -+ -+ while ( (rc = read(f->fd, f->b_base, F_BUFSIZ)) >0) -+ T1FileSize += rc; /* count the rest of the file */ -+ - f->b_base = NULL; /* no valid stream */ - return close(f->fd); - } /* end Close */ -*************** -*** 289,294 **** ---- 299,305 ---- - } - } - f->b_ptr = f->b_base; -+ T1FileSize += rc; /* remember how many bytes we have */ - if (Decrypt) rc = T1Decrypt(f->b_base, rc); - return rc; - } /* end Fill */ -*** type1.c 2000/01/02 18:55:56 1.1 ---- type1.c 2000/01/02 18:56:27 -*************** -*** 365,378 **** - /* ADJUST STEM WIDTHS */ - /**********************/ - -! widthdiff = 0.0; - - /* Find standard stem with smallest width difference from this stem */ - if (stems[stemno].vertical) { /* vertical stem */ - if (blues->StdVW != 0) /* there is an entry for StdVW */ - widthdiff = blues->StdVW - stemwidth; - for (i = 0; i < blues->numStemSnapV; ++i) { /* now look at StemSnapV */ -! if (blues->StemSnapV[i] - stemwidth < widthdiff) - /* this standard width is the best match so far for this stem */ - widthdiff = blues->StemSnapV[i] - stemwidth; - } ---- 365,380 ---- - /* ADJUST STEM WIDTHS */ - /**********************/ - -! /* a big value to not compete with StemSnap */ -! /* if there is no StemSnap it will be caught later */ -! widthdiff = onepixel*2; - - /* Find standard stem with smallest width difference from this stem */ - if (stems[stemno].vertical) { /* vertical stem */ - if (blues->StdVW != 0) /* there is an entry for StdVW */ - widthdiff = blues->StdVW - stemwidth; - for (i = 0; i < blues->numStemSnapV; ++i) { /* now look at StemSnapV */ -! if ( FABS(blues->StemSnapV[i] - stemwidth) < FABS(widthdiff) ) - /* this standard width is the best match so far for this stem */ - widthdiff = blues->StemSnapV[i] - stemwidth; - } -*************** -*** 380,386 **** - if (blues->StdHW != 0) /* there is an entry for StdHW */ - widthdiff = blues->StdHW - stemwidth; - for (i = 0; i < blues->numStemSnapH; ++i) { /* now look at StemSnapH */ -! if (blues->StemSnapH[i] - stemwidth < widthdiff) - /* this standard width is the best match so far for this stem */ - widthdiff = blues->StemSnapH[i] - stemwidth; - } ---- 382,388 ---- - if (blues->StdHW != 0) /* there is an entry for StdHW */ - widthdiff = blues->StdHW - stemwidth; - for (i = 0; i < blues->numStemSnapH; ++i) { /* now look at StemSnapH */ -! if ( FABS(blues->StemSnapH[i] - stemwidth) < FABS(widthdiff) ) - /* this standard width is the best match so far for this stem */ - widthdiff = blues->StemSnapH[i] - stemwidth; - } diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/app/X11/t1-xf86.39.patch b/application/third_party/dompdf/lib/ttf2ufm/src/app/X11/t1-xf86.39.patch deleted file mode 100644 index 44d32ce5..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/app/X11/t1-xf86.39.patch +++ /dev/null @@ -1,252 +0,0 @@ -*** scanfont.c 1999/12/27 00:34:02 1.1 ---- scanfont.c 1999/12/27 00:35:34 -*************** -*** 2234,2239 **** ---- 2234,2241 ---- - /* point to name and search for leading blanks */ - nameP= FontP->FontFileName.data.nameP; - namelen = FontP->FontFileName.len; -+ if (namelen > (128-1) ) /* prevent getting out of filename[] */ -+ namelen = (128-1); - while (nameP[0] == ' ') { - nameP++; - namelen--; -*** paths.c 1999/12/27 00:37:01 1.1 ---- paths.c 1999/12/27 00:37:43 -*************** -*** 583,589 **** - CONCAT(before, r); - r = before; - } -! else - r->context = after->context; - if (after != NULL) - CONCAT(r, after); ---- 583,589 ---- - CONCAT(before, r); - r = before; - } -! else if (after != NULL) - r->context = after->context; - if (after != NULL) - CONCAT(r, after); -*** type1.c 1999/12/27 00:38:16 1.1 ---- type1.c 1999/12/27 01:08:02 -*************** -*** 399,412 **** - /* ADJUST STEM WIDTHS */ - /**********************/ - -! widthdiff = 0.0; - - /* Find standard stem with smallest width difference from this stem */ - if (stems[stemno].vertical) { /* vertical stem */ - if (blues->StdVW != 0) /* there is an entry for StdVW */ - widthdiff = blues->StdVW - stemwidth; - for (i = 0; i < blues->numStemSnapV; ++i) { /* now look at StemSnapV */ -! if (blues->StemSnapV[i] - stemwidth < widthdiff) - /* this standard width is the best match so far for this stem */ - widthdiff = blues->StemSnapV[i] - stemwidth; - } ---- 399,414 ---- - /* ADJUST STEM WIDTHS */ - /**********************/ - -! /* a big value to not compete with StemSnap */ -! /* if there is no StemSnap it will be caught later */ -! widthdiff = onepixel*2; - - /* Find standard stem with smallest width difference from this stem */ - if (stems[stemno].vertical) { /* vertical stem */ - if (blues->StdVW != 0) /* there is an entry for StdVW */ - widthdiff = blues->StdVW - stemwidth; - for (i = 0; i < blues->numStemSnapV; ++i) { /* now look at StemSnapV */ -! if ( FABS(blues->StemSnapV[i] - stemwidth) < FABS(widthdiff) ) - /* this standard width is the best match so far for this stem */ - widthdiff = blues->StemSnapV[i] - stemwidth; - } -*************** -*** 414,420 **** - if (blues->StdHW != 0) /* there is an entry for StdHW */ - widthdiff = blues->StdHW - stemwidth; - for (i = 0; i < blues->numStemSnapH; ++i) { /* now look at StemSnapH */ -! if (blues->StemSnapH[i] - stemwidth < widthdiff) - /* this standard width is the best match so far for this stem */ - widthdiff = blues->StemSnapH[i] - stemwidth; - } ---- 416,422 ---- - if (blues->StdHW != 0) /* there is an entry for StdHW */ - widthdiff = blues->StdHW - stemwidth; - for (i = 0; i < blues->numStemSnapH; ++i) { /* now look at StemSnapH */ -! if ( FABS(blues->StemSnapH[i] - stemwidth) < FABS(widthdiff) ) - /* this standard width is the best match so far for this stem */ - widthdiff = blues->StemSnapH[i] - stemwidth; - } -*** t1io.c 2000/01/01 00:41:44 1.1 ---- t1io.c 2000/01/01 01:23:38 -*************** -*** 78,83 **** ---- 78,86 ---- - /* Our single FILE structure and buffer for this package */ - STATIC F_FILE TheFile; - STATIC unsigned char TheBuffer[F_BUFSIZ]; -+ -+ /* the size of the file we read */ -+ int T1FileSize; - - /* Our routines */ - F_FILE *T1Open(), *T1Eexec(); -*************** -*** 118,123 **** ---- 121,127 ---- - of->flags = 0; - of->error = 0; - haveextrach = 0; -+ T1FileSize = 0; - return &TheFile; - } /* end Open */ - -*************** -*** 196,202 **** ---- 200,212 ---- - int T1Close(f) /* Close the file */ - F_FILE *f; /* Stream descriptor */ - { -+ int rc; -+ - if (f->b_base == NULL) return 0; /* already closed */ -+ -+ while ( (rc = read(f->fd, f->b_base, F_BUFSIZ)) >0) -+ T1FileSize += rc; /* count the rest of the file */ -+ - f->b_base = NULL; /* no valid stream */ - return close(f->fd); - } /* end Close */ -*************** -*** 381,386 **** ---- 391,397 ---- - } - } - f->b_ptr = f->b_base; -+ T1FileSize += rc; /* remember how many bytes we have */ - if (Decrypt) rc = T1Decrypt(f->b_base, rc); - return rc; - } /* end Fill */ -*** t1stdio.h 2000/01/01 00:43:38 1.1 ---- t1stdio.h 2000/01/01 01:24:19 -*************** -*** 73,78 **** ---- 73,79 ---- - - extern FILE *T1Open(), *T1eexec(); - extern int T1Close(), T1Ungetc(), T1Read(); -+ extern int T1FileSize; - - #undef fclose - #undef fopen -*** fontfcn.c 2000/01/01 00:07:54 1.1 ---- fontfcn.c 2000/01/01 01:36:02 -*************** -*** 57,62 **** ---- 57,63 ---- - #endif - #include "t1imager.h" - #include "util.h" -+ #include "t1stdio.h" - #ifdef BUILDCID - #include "range.h" - #include "fontmisc.h" -*************** -*** 300,333 **** - resetFont(env); - /* This will load the font into the FontP */ - rcode = scan_font(FontP); -! if (rcode == SCAN_OUT_OF_MEMORY) { - /* free the memory and start again */ - #ifdef BUILDCID - /* xfree(vm_base); */ - #else - xfree(vm_base); - #endif - if (!(initFont(vm_size * 2))) { - /* we are really out of memory */ - return(SCAN_OUT_OF_MEMORY); - } - resetFont(env); - rcode = scan_font(FontP); -- #ifdef BUILDCID -- /* only double the memory twice, then report error */ -- if (rcode == SCAN_OUT_OF_MEMORY) { -- /* free the memory and start again */ -- /* xfree(vm_base) */ -- if (!(initFont(vm_size * 2))) { -- /* we are really out of memory */ -- return(SCAN_OUT_OF_MEMORY); -- } -- resetFont(env); -- rcode = scan_font(FontP); -- } -- #else -- /* only double the memory once, then report error */ -- #endif - } - return(rcode); - } ---- 301,342 ---- - resetFont(env); - /* This will load the font into the FontP */ - rcode = scan_font(FontP); -! if (rcode != SCAN_OUT_OF_MEMORY) -! return rcode; -! -! if (T1FileSize > VM_SIZE) { -! /* use the file size as estimation */ -! - /* free the memory and start again */ - #ifdef BUILDCID - /* xfree(vm_base); */ - #else - xfree(vm_base); - #endif -+ if (!(initFont(T1FileSize))) { -+ /* we are really out of memory */ -+ return(SCAN_OUT_OF_MEMORY); -+ } -+ resetFont(env); -+ rcode = scan_font(FontP); -+ if (rcode != SCAN_OUT_OF_MEMORY) -+ return rcode; -+ } -+ -+ /* if still not enough, increase up to maximum */ -+ while (rcode == SCAN_OUT_OF_MEMORY -+ && vm_size <= VM_SIZE_MAX/2 ) { -+ #ifdef BUILDCID -+ /* xfree(vm_base); */ -+ #else -+ xfree(vm_base); -+ #endif - if (!(initFont(vm_size * 2))) { - /* we are really out of memory */ - return(SCAN_OUT_OF_MEMORY); - } - resetFont(env); - rcode = scan_font(FontP); - } - return(rcode); - } -*** util.h 2000/01/01 00:40:11 1.1 ---- util.h 2000/01/01 01:29:18 -*************** -*** 83,88 **** ---- 83,92 ---- - #else - #define VM_SIZE (50*1024) - #endif -+ -+ /* this is the maximal permitted memory size */ -+ #define VM_SIZE_MAX (1024*1024) -+ - /***================================================================***/ - - #ifndef MIN diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/app/netscape/Makefile b/application/third_party/dompdf/lib/ttf2ufm/src/app/netscape/Makefile deleted file mode 100644 index 2c69599b..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/app/netscape/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -nsfix: nsfix.c - $(CC) $(CFLAGS) -o nsfix nsfix.c $(LDFLAGS) - -clean: - rm -f *.o core *.core core.* nsfix diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/app/netscape/README b/application/third_party/dompdf/lib/ttf2ufm/src/app/netscape/README deleted file mode 100644 index d57c1cd5..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/app/netscape/README +++ /dev/null @@ -1,180 +0,0 @@ -Installing the fonts in Netscape Navigator - -by Sergey Babkin -<babkin@bellatlantic.net>, <sab123@hotmail.com> - -This is a collection of supplements to Netscape 4.x on -Unix. Probably they will also work with Netscape 3.x, -possilby with minor modifications. - - Makefile - nsfix.c - psfonts.cf - -This is a program that allows to substitute the font metrics -of any PostScript font in Netscape. - -When Netscape prints the files to PostScript format it uses a -built-in table of character widths. It prints all the fixed-width -characters in the typeface "Courier" and all the variable-width -characters in the typeface "Times". And if the PostScript printer -has these fonts by Adobe then everything goes fine because -the tables inside Netscape are generated from the Adobe fonts. -But if the fonts are different (say, those supplied with Ghostscripts -or the fonts with non-latin characters) then the result is quite -ugly. This program allows to replace the width tables inside -the Netscape executable with the tables for any given font. -The only problem is that Netscape can hold only one set of tables -at once. So if you want to print with different fonts (say, -for different languages or encodings) you will have to make -multiple copies of the executable, tune each of them for its -font and then run them separately. - -I tried to make the program as machine-independent as possible. -But because it patches the binary files it still has the dependencies -on hardware. The default version as supplied was designed for -Intel x86 machines but it should work OK on any machine -with 32-bit CPU and 4Kbyte (or less) page size. If it can't -find the tables matching the font names on some other architecture -the first thing to try would be reduce the `PAGEBITS' definition -in the source code. On the machines with non-page-aligned structure -of executables it won't work at all. I don't know whether would -it work on the 64-bit machines. This may depend on whether the -Netscape executable was compiled in 32-bit or 64-bit mode. For -the 64-bit executables it may be neccessary to change the definition -of the type `tptr' to an 8-byte integer type (probably `long' -or `long long'). Also must be re-compiled for patching of the -Netscape binary for each particular machine architecture because -it assumes the byte order of the current machine. - -It might be possible to create a program that would patch -a running Netscape binary on the fly, that would allow -changing the printing fonts as neccessary when Netscape is -running. But this would be even more platform-dependent, -so I don't feel any enthusiasm about doing that. - -I have tested the program on the Intel machines, Netscape -4.08 and 4.7, OS FreeBSD (both a.out and ELF formats of the -Netscape binary) and UnixWare. - -After all these scary issues are resolved the compiling -is easy: just run `make'. - -To command to patch the Netscape is: - ./nsfix <netscape-binary> <config-file> - -Please make a copy of the original Netscape binary before -patching in case anything goes wrong. Patch the copy, test -that it works OK and only then install it. The configuration -file describes the fonts that are to be used. An example -is provided in the file psfonts.cf. - -Each line in the configuration file consists of 4 -columns: - -<PS_font_name> <font_base_file> <suffix_afm> <suffix_font> - -For example, the following line from my configuration file: - -Courier /usr/lib/X11/fonts/ttf/cokoi8n.koi8-r .afm .pfa - -says that the font `Courier' will be replaced with the -font taken from the file `/usr/lib/X11/fonts/ttf/cokoi8n.koi8-r.pfa' -and the metrics for that font will be taken from the file -`/usr/lib/X11/fonts/ttf/cokoi8n.koi8-r.afm' . - -One more caveat: the new font must have a proper encoding -table. Some fonts contain characters for multiple encodings -hoping that the program wil re-encode them as neccessary. -This won't work in this case, only the primary encoding table -of the font will be used. - - nsfilter - nsprint - psfonts.cf - -These are the filters for printing from Netscape. - -Changing the metrics is not the end of the story. This will -provide proper placement of the characters but not the -characters themselves. There are a few ways to provide -the characters: - -First, if you use GhostScript you may configure proper -aliases in the GhostScript configuration file. We will -consider this variant trivial and won't discuss it furter -except for one caveat: Netscape tries to re-encode the -fonts per the ISO Latin-1 encoding. If the primary encoding -of the font is different this cause unexpected effects. -So you still may consider using the filters (at least in a -simplified form) to solve this problem. - -Second, load the fonts right into your printer. This is -very much like configuring GhostScript. - -Third, use the provided filters. The script `nsfilter' -reads the output of Netscape on its standard input and -puts the result to its standard output. It uses the same -configuration file `psfonts.cf' as `nsfix'. First it -looks for the configuration file in the user's home -directory ($HOME/.netscape/psfonts.cf) and if the -file it not there then the second guess is the system-wide -configuration file /usr/local/etc/psfonts.cf. The -script inserts the fonts into the output and also -removes the Netscape's experiments with the encodings. - -`nsfilter' is generally intended to be ran by user, not by the -printing subsystem. The reason is that the user may have -changed fonts in his Netscape and the printing subsystem -would have no way to access user's configuration file. -But if all the users are using the same fonts then it -may be incorporated into the printing subsystem and use -the system-wide configuration file. - -The script `nsprint' is purely for convenience, to type it -as a printing command in the Netscape printing window. -It just pipelines the data through `nsfilter' to the -printing program which also gets all the arguments. Please -note that the SystemV-style and BSD-style systems use different -printing programs (although they commonly provide compatibility -with the other style too). The script tries to guess the -type of system and use its native print program, `lp' or -`lpr'. But in case it guesses wrong you may want -to change this in the script. Also if the printer does not support -PostScript directly this script may be a good place to -insert a call to GhostScript. - - notscape - fontsz.cf - -Netscape on Unix has a very annoying "feature", it does -not remember the desired base size of the scalable screen -fonts and always resets it to 12.0 points. Even if the size -is changed manually in its preferences file, Netscape -forgets it after it exits. - -So my solution was to write a program which would change -the size to my favorite one every time right before -starting Netscape. `notscape' is exactly such a program, -it sets the font sizes an then transparently executes -netscape. It takes the font sizes from the file -`$HOME/.netscape/fontsz.cf' . An example of such file -is provided. The format of the file is quite self-explanatory, -for example the lines - -fixed-koi8-r 140 -prop-koi8-r 150 - -mean "set the size of the fixed-width screen font in the -encoding koi8-r to 14.0 points; set the size of the proportional -(variable-width) font in the encoding koi8-r to 15.0 points". - - - nspr -by Zvezdan Petkovic - -To print from Netscape, I usually print to the Postscript file first. -Then I use this small script to change the names of Times and Courier fonts -in the file and remove `/Encoding' lines. After that the file can be -sent to printer. - diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/app/netscape/README.html b/application/third_party/dompdf/lib/ttf2ufm/src/app/netscape/README.html deleted file mode 100644 index 1e8961bb..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/app/netscape/README.html +++ /dev/null @@ -1,242 +0,0 @@ -<HTML> -<HEAD> -<TITLE> -Installing the fonts in Netscape Navigator -</TITLE> -</HEAD> -<BODY> -<H2> -Installing the fonts in Netscape Navigator -</H2> - -<tt> -by Sergey Babkin -&lt;babkin@bellatlantic.net&gt;, &lt;sab123@hotmail.com&gt; -</tt> -<p> - -This is a collection of supplements to Netscape 4.x on -Unix. Probably they will also work with Netscape 3.x, -possilby with minor modifications. -<p> - -<h4><tt> -&nbsp;&nbsp;Makefile<br> -&nbsp;&nbsp;nsfix.c<br> -&nbsp;&nbsp;psfonts.cf -</tt></h4> -<p> - -This is a program that allows to substitute the font metrics -of any PostScript font in Netscape. -<p> - -When Netscape prints the files to PostScript format it uses a -built-in table of character widths. It prints all the fixed-width -characters in the typeface "Courier" and all the variable-width -characters in the typeface "Times". And if the PostScript printer -has these fonts by Adobe then everything goes fine because -the tables inside Netscape are generated from the Adobe fonts. -But if the fonts are different (say, those supplied with Ghostscripts -or the fonts with non-latin characters) then the result is quite -ugly. This program allows to replace the width tables inside -the Netscape executable with the tables for any given font. -The only problem is that Netscape can hold only one set of tables -at once. So if you want to print with different fonts (say, -for different languages or encodings) you will have to make -multiple copies of the executable, tune each of them for its -font and then run them separately. -<p> - -I tried to make the program as machine-independent as possible. -But because it patches the binary files it still has the dependencies -on hardware. The default version as supplied was designed for -Intel x86 machines but it should work OK on any machine -with 32-bit CPU and 4Kbyte (or less) page size. If it can't -find the tables matching the font names on some other architecture -the first thing to try would be reduce the `<tt>PAGEBITS</tt>' definition -in the source code. On the machines with non-page-aligned structure -of executables it won't work at all. I don't know whether would -it work on the 64-bit machines. This may depend on whether the -Netscape executable was compiled in 32-bit or 64-bit mode. For -the 64-bit executables it may be neccessary to change the definition -of the type `<tt>tptr</tt>' to an 8-byte integer type (probably `<tt>long</tt>' -or `<tt>long long</tt>'). Also must be re-compiled for patching of the -Netscape binary for each particular machine architecture because -it assumes the byte order of the current machine. -<p> - -It might be possible to create a program that would patch -a running Netscape binary on the fly, that would allow -changing the printing fonts as neccessary when Netscape is -running. But this would be even more platform-dependent, -so I don't feel any enthusiasm about doing that. -<p> - -I have tested the program on the Intel machines, Netscape -4.08 and 4.7, OS FreeBSD (both a.out and ELF formats of the -Netscape binary) and UnixWare. -<p> - -After all these scary issues are resolved the compiling -is easy: just run `<tt>make</tt>'. -<p> - -To command to patch the Netscape is: -<p> -<tt> -&nbsp;&nbsp;./nsfix <i>&lt;netscape-binary&gt; &lt;config-file&gt;</i> -</tt> -<p> - -Please make a copy of the original Netscape binary before -patching in case anything goes wrong. Patch the copy, test -that it works OK and only then install it. The configuration -file describes the fonts that are to be used. An example -is provided in the file psfonts.cf. -<p> - -Each line in the configuration file consists of 4 -columns: -<p> - -<tt><i> -&lt;PS_font_name&gt; &lt;font_base_file&gt; &lt;suffix_afm&gt; &lt;suffix_font&gt; -</i></tt> -<p> - -For example, the following line from my configuration file: -<p> - -<tt> -Courier /usr/lib/X11/fonts/ttf/cokoi8n.koi8-r .afm .pfa -</tt> -<p> - -says that the font `Courier' will be replaced with the -font taken from the file `<tt>/usr/lib/X11/fonts/ttf/cokoi8n.koi8-r.pfa</tt>' -and the metrics for that font will be taken from the file -`<tt>/usr/lib/X11/fonts/ttf/cokoi8n.koi8-r.afm</tt>' . -<p> - -One more caveat: the new font must have a proper encoding -table. Some fonts contain characters for multiple encodings -hoping that the program wil re-encode them as neccessary. -This won't work in this case, only the primary encoding table -of the font will be used. -<p> - -<h4><tt> -&nbsp;&nbsp;nsfilter<br> -&nbsp;&nbsp;nsprint<br> -&nbsp;&nbsp;psfonts.cf -</tt></h4> -<p> - -These are the filters for printing from Netscape. -<p> - -Changing the metrics is not the end of the story. This will -provide proper placement of the characters but not the -characters themselves. There are a few ways to provide -the characters: -<p> - -First, if you use GhostScript you may configure proper -aliases in the GhostScript configuration file. We will -consider this variant trivial and won't discuss it furter -except for one caveat: Netscape tries to re-encode the -fonts per the ISO Latin-1 encoding. If the primary encoding -of the font is different this cause unexpected effects. -So you still may consider using the filters (at least in a -simplified form) to solve this problem. -<p> - -Second, load the fonts right into your printer. This is -very much like configuring GhostScript. -<p> - -Third, use the provided filters. The script `<tt>nsfilter</tt>' -reads the output of Netscape on its standard input and -puts the result to its standard output. It uses the same -configuration file `<tt>psfonts.cf</tt>' as `<tt>nsfix</tt>'. First it -looks for the configuration file in the user's home -directory (<tt>$HOME/.netscape/psfonts.cf</tt>) and if the -file it not there then the second guess is the system-wide -configuration file <tt>/usr/local/etc/psfonts.cf</tt>. The -script inserts the fonts into the output and also -removes the Netscape's experiments with the encodings. -<p> - -`<tt>nsfilter</tt>' is generally intended to be ran by user, not by the -printing subsystem. The reason is that the user may have -changed fonts in his Netscape and the printing subsystem -would have no way to access user's configuration file. -But if all the users are using the same fonts then it -may be incorporated into the printing subsystem and use -the system-wide configuration file. -<p> - -The script `<tt>nsprint</tt>' is purely for convenience, to type it -as a printing command in the Netscape printing window. -It just pipelines the data through `<tt>nsfilter</tt>' to the -printing program which also gets all the arguments. Please -note that the SystemV-style and BSD-style systems use different -printing programs (although they commonly provide compatibility -with the other style too). The script tries to guess the -type of system and use its native print program, `<tt>lp</tt>' or -`<tt>lpr</tt>'. But in case it guesses wrong you may want -to change this in the script. Also if the printer does not support -PostScript directly this script may be a good place to -insert a call to GhostScript. -<p> - -<h4><tt> -&nbsp;&nbsp;notscape<br> -&nbsp;&nbsp;fontsz.cf -</tt></h4> -<p> - -Netscape on Unix has a very annoying "feature", it does -not remember the desired base size of the scalable screen -fonts and always resets it to 12.0 points. Even if the size -is changed manually in its preferences file, Netscape -forgets it after it exits. -<p> - -So my solution was to write a program which would change -the size to my favorite one every time right before -starting Netscape. `<tt>notscape</tt>' is exactly such a program, -it sets the font sizes an then transparently executes -netscape. It takes the font sizes from the file -`<tt>$HOME/.netscape/fontsz.cf</tt>' . An example of such file -is provided. The format of the file is quite self-explanatory, -for example the lines -<p> - -<tt> -fixed-koi8-r 140<br> -prop-koi8-r 150 -</tt> -<p> - -mean "set the size of the fixed-width screen font in the -encoding koi8-r to 14.0 points; set the size of the proportional -(variable-width) font in the encoding koi8-r to 15.0 points". -<p> - - -<h3><tt> -&nbsp;&nbsp;nspr -</tt><br> -by Zvezdan Petkovic</h3> -<p> - -To print from Netscape, I usually print to the Postscript file first. -Then I use this small script to change the names of Times and Courier fonts -in the file and remove `/Encoding' lines. After that the file can be -sent to printer. -<p> -</BODY> -</HTML> - diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/app/netscape/fontsz.cf b/application/third_party/dompdf/lib/ttf2ufm/src/app/netscape/fontsz.cf deleted file mode 100644 index acce79c2..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/app/netscape/fontsz.cf +++ /dev/null @@ -1,8 +0,0 @@ -fixed-koi8-r 150 -prop-koi8-r 150 -fixed-iso-8859-5 150 -prop-iso-8859-5 150 -fixed-iso-8859-1 150 -prop-iso-8859-1 150 -fixed-x-user-defined 150 -prop-x-user-defined 150 diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/app/netscape/notscape b/application/third_party/dompdf/lib/ttf2ufm/src/app/netscape/notscape deleted file mode 100644 index 67d87bcb..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/app/netscape/notscape +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh - -NDIR=$HOME/.netscape -PFILE=$NDIR/preferences.js -CFFILE=$NDIR/fontsz.cf -TMPFILE=$NDIR/fontsz.sed - -die() { - echo "notscape: can't $*" >&2 - exit 1 -} - -[ -r $CFFILE ] && { -awk '{ printf("/intl.font_spec_list/s/-[^-]*-\\([^-]*\\)-%s,/-%s-\\1-%s,/\n", \ - $1, $2, $1); }' <$CFFILE >$TMPFILE - -cp $PFILE $PFILE.old || die "save old pref file" -sed -f $TMPFILE <$PFILE.old >$PFILE.new || die "create new pref file" -[ -s $PFILE.new ] || die "create new pref file" - -mv $PFILE.new $PFILE || die "install new pref file" - -} - -exec netscape -no-about-splash "$@" diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/app/netscape/nsfilter b/application/third_party/dompdf/lib/ttf2ufm/src/app/netscape/nsfilter deleted file mode 100644 index 77b5b64b..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/app/netscape/nsfilter +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh -CONFLOCAL=$HOME/.netscape/psfonts.cf -CONFGLOBAL=/usr/local/etc/nspsfonts.cf - -if [ -r "$CONFLOCAL" ] -then - CONF="$CONFLOCAL" -else - CONF="$CONFGLOBAL" -fi - -grep -v "^#" <$CONF | grep -v "^$" | while : -do { - read nsname base afm pfa x - [ -z "$nsname" ] && break; - - fname=`awk '/^FontName/ {print $2;}' <$base$afm` - - cat $base$pfa - echo "/$nsname /$fname findfont definefont" - -} done - -grep -v "^ /Encoding isolatin1encoding def$" | egrep -v '^newpath .* closepath clip newpath$' diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/app/netscape/nsfix.c b/application/third_party/dompdf/lib/ttf2ufm/src/app/netscape/nsfix.c deleted file mode 100644 index 6aa47c91..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/app/netscape/nsfix.c +++ /dev/null @@ -1,469 +0,0 @@ -/* - * Fix the Netscape executable for specified font widths - * - * (c) 1999 Copyright by Sergey Babkin - * see COPYRIGHT - */ - -#include <sys/types.h> -#include <fcntl.h> -#include <stdio.h> -#include <locale.h> -#include <unistd.h> - -/************************** DEFINES *************************/ - -#undef DEBUG - -/* we can handle at most this many fonts */ -#define MAXFONTS 20 - -/* maximal line buffer size */ -#define MAXLINE 512 - -/* there may be multiple strings with the same contents */ -#define MAXDUPS 10 - -/* file read buffer size */ -#define FILEBF 40960 - -/* bits in the hardware page offset */ -#define BITSPERPAGE 12 - -/* size of page in bytes */ -#define PAGESIZE (1<<BITSPERPAGE) - -/* mask of the in-page offset */ -#define PAGEMASK (PAGESIZE-1) - -/* this is machine-dependent! */ -typedef short t2b; /* 2-byte type */ -typedef int t4b; /* 4-byte type */ -typedef int tptr; /* integer type with the same size as pointer */ - -struct bbox { /* bounding box */ - t2b llx; /* lower-left-x */ - t2b lly; - t2b urx; - t2b ury; /* upper-right-y */ -}; - -struct glyphmetrics { /* metrics of one glyph */ - t2b width; - t2b unknown; - struct bbox bbox; -}; - -struct fontmetrics { /* metrics of the wholefont */ - tptr name; - struct bbox bbox; - t2b underlinepos; - t2b underlinethick; - struct glyphmetrics glyphs[256]; -}; - -struct font { - char nsname[MAXLINE]; /* name in the Netscape binary */ - char afmname[MAXLINE]; /* name of the .afm file */ - char pfaname[MAXLINE]; /* name of the .pfa (or .pfb) file */ - struct fontmetrics metrics; - off_t binoff; /* offset in the binary */ -}; - -#define SCONST(x) (x), ((sizeof (x))-1) - -/************************** GLOBALS *************************/ - -struct font font[MAXFONTS]; -int nfonts=0; - -char msg[MAXLINE]; - -/*************************** PROTOTYPES **********************/ - -void usage(void); -void readconfig( char *fn); -void readmetrics(void); -void replacefonts( char *fn); - -/************************** main ****************************/ - -main(ac, av) - int ac; - char **av; -{ - setlocale(LC_ALL, ""); - - if(ac!=3) { - usage(); exit(1); - } - - readconfig(av[2]); - readmetrics(); - replacefonts( av[1]); -} - -/************************** usage ***************************/ - -void -usage(void) -{ - fprintf(stderr,"Use:\n"); - fprintf(stderr," nsfix <netscape.bin> <config-file>\n"); -} - - -/************************** readconfig **********************/ - -void -readconfig(fn) - char *fn; -{ - char s[MAXLINE]; - char afmsuffix[MAXLINE], pfasuffix[MAXLINE]; - int lineno=0; - FILE *f; - - if(( f=fopen(fn, "r") )==NULL) { - sprintf(msg,"nsfix: open %s",fn); - perror(msg); - exit(1); - } - - while( fgets(s, MAXLINE, f) ) { - lineno++; - if(s[0]=='#' || s[0]=='\n') - continue; - - if(nfonts>=MAXFONTS) { - fprintf(stderr, "nsfix: only %d fonts are supported at once\n", - MAXFONTS); - exit(1); - } - - if( sscanf(s, "%s %s %s %s", font[nfonts].nsname, - font[nfonts].afmname, afmsuffix, pfasuffix) != 4 ) { - fprintf(stderr, "nsfix: syntax error at line %d of %s\n", - lineno, fn); - exit(1); - } - strcpy(font[nfonts].pfaname, font[nfonts].afmname); - strcat(font[nfonts].afmname, afmsuffix); - strcat(font[nfonts].pfaname, pfasuffix); - nfonts++; - } - - if(nfonts==0) { - fprintf(stderr, "nsfix: no fonts are defined in %s\n", fn); - exit(1); - } - fclose(f); -} - -/************************** readmetrics *********************/ - -void -readmetrics(void) -{ - int i; - char s[MAXLINE]; - FILE *f; - int n; - int lineno; - int code, width, llx, lly, urx, ury; - char gn[MAXLINE]; - struct glyphmetrics *gm; - - for(i=0; i<nfonts; i++) { - if(( f=fopen(font[i].afmname, "r") )==NULL) { - sprintf(msg,"nsfix: open %s", font[i].afmname); - perror(msg); - exit(1); - } - lineno=0; - while( fgets(s, MAXLINE, f) ) { - lineno++; - if( !strncmp(s, SCONST("UnderlineThickness ")) ) { - if( sscanf(s, "UnderlineThickness %d", &n) <1) { - fprintf(stderr, "nsfix: weird UnderlineThickness at line %d in %s\n", - lineno, font[i].afmname); - exit(1); - } - font[i].metrics.underlinethick=n; - } else if( !strncmp(s, SCONST("UnderlinePosition ")) ) { - if( sscanf(s, "UnderlinePosition %d", &n) <1) { - fprintf(stderr, "nsfix: weird UnderlinePosition at line %d in %s\n", - lineno, font[i].afmname); - exit(1); - } - font[i].metrics.underlinepos=n; - } else if( !strncmp(s, SCONST("FontBBox ")) ) { - if( sscanf(s, "FontBBox %d %d %d %d", &llx, &lly, &urx, &ury) <4) { - fprintf(stderr, "nsfix: weird FontBBox at line %d in %s\n", - lineno, font[i].afmname); - exit(1); - } - font[i].metrics.bbox.llx=llx; - font[i].metrics.bbox.lly=lly; - font[i].metrics.bbox.urx=urx; - font[i].metrics.bbox.ury=ury; - } else if( !strncmp(s, SCONST("C ")) ) { - if( sscanf(s, "C %d ; WX %d ; N %s ; B %d %d %d %d", - &code, &width, &gn, &llx, &lly, &urx, &ury) <7) - { - fprintf(stderr, "nsfix: weird metrics at line %d in %s\n", - lineno, font[i].afmname); - exit(1); - } - if(code>=32 && code<=255) { - font[i].metrics.glyphs[code].width=width; - font[i].metrics.glyphs[code].bbox.llx=llx; - font[i].metrics.glyphs[code].bbox.lly=lly; - font[i].metrics.glyphs[code].bbox.urx=urx; - font[i].metrics.glyphs[code].bbox.ury=ury; - } - } - } - fclose(f); - } - -#ifdef DEBUG - for(i=0; i<nfonts; i++) { - printf("Font %s\n", font[i].nsname); - for(n=0; n<256; n++) { - gm= &font[i].metrics.glyphs[n]; - printf(" %d w=%4d [%4d %4d %4d %4d]", n, gm->width, - gm->bbox.llx, gm->bbox.lly, gm->bbox.urx, gm->bbox.ury); - printf(" w=0x%04x [0x%04x 0x%04x 0x%04x 0x%04x]\n", gm->width & 0xffff, - gm->bbox.llx & 0xffff, gm->bbox.lly & 0xffff, gm->bbox.urx & 0xffff, gm->bbox.ury & 0xffff); - } - } - - exit(0); -#endif - -} - -/************************** replacefonts ********************/ - -void -replacefonts(fn) - char *fn; -{ - int f; /* don't use stdio */ - char bf[FILEBF]; - char *bfend, *p; - int len; - off_t pos; - - off_t zerooff[MAXFONTS*MAXDUPS]; /* offset of zero strings */ - tptr nameaddr[MAXFONTS*MAXDUPS]; /* name pointers before these zero strings */ - int zeroid[MAXFONTS*MAXDUPS]; /* font number for this zero block */ - int nzeroes; - short matched[MAXFONTS]; /* counters how many matches we have for each requested font */ - struct fontmetrics *fp; - - struct { - int noff; - int nz; - off_t off[MAXDUPS]; /* there may be multiple strings with the same contents */ - } o[MAXFONTS]; - int maxnlen; - int i, j, k, n; - - static struct glyphmetrics gm[32]; /* 0-initialized */ - - - if(( f=open(fn, O_RDWR) )<0) { - sprintf(msg,"nsfix: open %s",fn); - perror(msg); - exit(1); - } - - - /* get the maximal font name length */ - maxnlen=0; - for(i=0; i<nfonts; i++) { - o[i].noff=o[i].nz=0; - matched[i]=0; - len=strlen(font[i].nsname)+1; - if(len>maxnlen) - maxnlen=len; - } - - /* fprintf(stderr,"maxnlen= 0x%x\n", maxnlen); /* */ - /* try to find the literal strings of the font names */ - pos=0; bfend=bf; - while(( len=read(f, bfend, FILEBF-(bfend-bf)) )>=0 ) { - /* fprintf(stderr,"looking at 0x%lx\n", (long)pos); /* */ - /* the last position to check */ - if(len>=maxnlen) - /* leave the rest with the next block */ - bfend+= len-maxnlen; - else { - /* we are very near to the end of file, check - * up to the very last byte */ - bfend+= len-2; - memset(bfend+2, 0, maxnlen); - } - - for(p=bf; p<=bfend; p++) - for(i=0; i<nfonts; i++) - if(!strcmp(font[i].nsname, p) && o[i].noff<MAXDUPS) { - o[i].off[ o[i].noff++ ] = pos + (p-bf); - fprintf(stderr,"found %s at 0x%lx\n", font[i].nsname, (long)pos + (p-bf)); - } - - if(len==0) - break; - - memmove(bf, bfend, maxnlen); - pos+= (bfend-bf); - bfend= (bf+maxnlen); - } - if(len<0) { - sprintf(msg,"nsfix: read %s",fn); - perror(msg); - exit(1); - } - fprintf(stderr,"---\n"); - /* if there are any dups try to resolve them */ - for(i=0; i<nfonts; i++) { - if(o[i].noff==0) { - fprintf(stderr, "nsfix: font %s (%d of %d) is missing in %s\n", - font[i].nsname, i, nfonts, fn); - exit(1); - } - if(o[i].noff!=1) - continue; - /* good, only one entry */ - fprintf(stderr,"found unique %s at 0x%lx\n", font[i].nsname, (long)o[i].off[0] ); - /* if any dupped entry is right after this one then it's good */ - /* if it's farther than PAGESIZE/2 then it's bad */ - pos=o[i].off[0]+strlen(font[i].nsname)+1; - for(j=0; j<MAXFONTS; j++) { - if(o[j].noff<=1) - continue; - for(k=0; k<o[j].noff; k++) { - if(o[j].off[k]==pos) { /* good */ - fprintf(stderr,"got unique %s at 0x%lx\n", font[j].nsname, (long)pos ); - o[j].off[0]=pos; - o[j].noff=1; - break; - } - if(o[j].off[k] < pos - PAGESIZE/2 - || o[j].off[k] > pos + PAGESIZE/2) { /* bad */ - fprintf(stderr, "eliminated %s at 0x%lx\n", font[j].nsname, (long)o[j].off[k] ); - for(n=k+1; n<o[j].noff; n++) - o[j].off[n-1]=o[j].off[n]; - o[j].noff--; - k--; - } - } - if(o[j].noff==1 && j<i) { /* have to revisit this font */ - i=j-1; /* compensate for i++ */ - break; - } - } - } - - - /* try to find the metric tables in the executable */ - if(lseek(f, (off_t)0, SEEK_SET)<0) { - sprintf(msg,"nsfix: rewind %s",fn); - perror(msg); - exit(1); - } - - /* - * search for the zeroes in place of the metrics for the codes 0-31: - * 4-byte aligned strings of (32*sizeof(struct glyphmetrics)) zero bytes - */ - maxnlen=sizeof(struct fontmetrics); - - pos=0; bfend=bf; nzeroes=0; - while(( len=read(f, bfend, FILEBF-(bfend-bf)) )>=0 ) { - /* fprintf(stderr,"looking at 0x%lx\n", (long)pos); /* */ - /* the last position to check */ - bfend+= len-maxnlen; /* don't look beyond the EOF */ - - for(p=bf; p<=bfend; p+=4 /* 4-byte aligned */ ) { - fp=(struct fontmetrics *)p; - if(fp->name==0) - continue; - if( memcmp(gm, fp->glyphs, sizeof gm) ) - continue; - - /* OK, looks like it, see if we can match it to any name */ - n= fp->name & PAGEMASK; - for(i=0; i<nfonts; i++) { - for(j=0; j<o[i].noff; j++) - if( n==(o[i].off[j] & PAGEMASK) ) { - zerooff[nzeroes]= pos + (p-bf); - nameaddr[nzeroes]= fp->name; - zeroid[nzeroes]=i; - o[i].nz++; - fprintf(stderr, "matched %s at 0x%lx\n", - font[i].nsname, (long) zerooff[nzeroes]); - nzeroes++; - matched[i]++; - break; - } - } - - } - - if(len==0) - break; - - memmove(bf, bfend, maxnlen); - pos+= (bfend-bf); - bfend= (bf+maxnlen); - } - if(len<0) { - sprintf(msg,"nsfix: read %s",fn); - perror(msg); - exit(1); - } - fprintf(stderr,"---\n"); - - /* make sure that all the fonts got one match */ - k=0; /* flag: have non-matched fonts */ n=0; /* flag: have ambiguities */ - for(i=0; i<nfonts; i++) - if(matched[i]==0) - k=1; - else if(matched[i]>1) - n=1; - - if(k) { - fprintf(stderr,"nsfix: can't find match for some of the fonts\n"); - fprintf(stderr,"nsfix: maybe wrong byte order, aborting\n"); - exit(1); - } - if(n) { - fprintf(stderr,"nsfix: got multiple matches for some of the fonts\n"); - fprintf(stderr,"nsfix: can't resolve, aborting\n"); - exit(1); - } - - /* now finally write the updated tables */ - for(i=0; i<nzeroes; i++) { - j=zeroid[i]; - fprintf(stderr, "nsfix: writing table for %s at 0x%lx\n", font[j].nsname, - (long)zerooff[i]); - - font[j].metrics.name=nameaddr[i]; - if( lseek(f, zerooff[i], SEEK_SET)<0 ) { - sprintf(msg,"nsfix: seek %s to 0x%lx",fn, (long)zerooff[i] ); - perror(msg); - exit(1); - } - if( write(f, &font[j].metrics, sizeof font[j].metrics) != sizeof font[j].metrics ) { - sprintf(msg,"nsfix: write to %s",fn ); - perror(msg); - exit(1); - } - } - - close(f); -} diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/app/netscape/nspr b/application/third_party/dompdf/lib/ttf2ufm/src/app/netscape/nspr deleted file mode 100644 index 96d6a69d..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/app/netscape/nspr +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/sh -if [ $# != 2 ] -then - echo "Usage: 'nspr # file.ps' where # is 2, 5, or 1251" - exit -else - enc=$1 - shift -fi -case ${enc} in - 1250|1251) - charset=windows - ;; - *) - charset=iso8859 - ;; -esac -sed "s/Times-Roman/Timesnew-Roman-${charset}-${enc}/g;\ - s/Times-Italic/Timesnew-Italic-${charset}-${enc}/g;\ - s/Times-BoldItalic/Timesnew-BoldItalic-${charset}-${enc}/g;\ - s/Times-Bold/Timesnew-Bold-${charset}-${enc}/g;\ - s/Courier/Couriernew-Roman-${charset}-${enc}/g;\ - s/Couriernew-Roman-${charset}-${enc}-BoldOblique/Couriernew-BoldItalic-${charset}-${enc}/g;\ - s/Couriernew-Roman-${charset}-${enc}-Bold/Couriernew-Bold-${charset}-${enc}/g;\ - s/Couriernew-Roman-${charset}-${enc}-Oblique/Couriernew-Italic-${charset}-${enc}/g;" $* | \ -grep -v "^ /Encoding isolatin1encoding def$" diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/app/netscape/nsprint b/application/third_party/dompdf/lib/ttf2ufm/src/app/netscape/nsprint deleted file mode 100644 index 6209f167..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/app/netscape/nsprint +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -if uname -s | grep -i bsd >/dev/null -then - LPR=lpr -else - LPR=lp -fi - -nsfilter | $LPR "$@" diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/app/netscape/psfonts.cf b/application/third_party/dompdf/lib/ttf2ufm/src/app/netscape/psfonts.cf deleted file mode 100644 index 19b4d712..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/app/netscape/psfonts.cf +++ /dev/null @@ -1,11 +0,0 @@ -# PS_font_name font_base_file suffix_afm suffix_font - -Courier /usr/lib/X11/fonts/ttf/cokoi8n.koi8-r .afm .pfa -Courier-Bold /usr/lib/X11/fonts/ttf/cokoi8b.koi8-r .afm .pfa -Courier-Oblique /usr/lib/X11/fonts/ttf/cokoi8i.koi8-r .afm .pfa -Courier-BoldOblique /usr/lib/X11/fonts/ttf/cokoi8bi.koi8-r .afm .pfa - -Times-Roman /usr/lib/X11/fonts/ttf/kudriash.koi8-r .afm .pfa -Times-Bold /usr/lib/X11/fonts/ttf/kudrias1.koi8-r .afm .pfa -Times-Italic /usr/lib/X11/fonts/ttf/kudrias3.koi8-r .afm .pfa -Times-BoldItalic /usr/lib/X11/fonts/ttf/kudrias2.koi8-r .afm .pfa diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/bdf.c b/application/third_party/dompdf/lib/ttf2ufm/src/bdf.c deleted file mode 100644 index a27fc911..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/bdf.c +++ /dev/null @@ -1,661 +0,0 @@ -/* - * The font parser for the BDF files - * - * Copyright (c) 2001 by the TTF2PT1 project - * Copyright (c) 2001 by Sergey Babkin - * - * see COPYRIGHT for the full copyright notice - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <ctype.h> -#include "pt1.h" -#include "global.h" - -/* prototypes of call entries */ -static void openfont(char *fname, char *arg); -static void closefont( void); -static int getnglyphs ( void); -static int glnames( GLYPH *glyph_list); -static void readglyphs( GLYPH *glyph_list); -static int glenc( GLYPH *glyph_list, int *encoding, int *unimap); -static void fnmetrics( struct font_metrics *fm); -static void glpath( int glyphno, GLYPH *glyph_list); -static void kerning( GLYPH *glyph_list); - -/* globals */ - -/* front-end descriptor */ -struct frontsw bdf_sw = { - /*name*/ "bdf", - /*descr*/ "BDF bitmapped fonts", - /*suffix*/ { "bdf" }, - /*open*/ openfont, - /*close*/ closefont, - /*nglyphs*/ getnglyphs, - /*glnames*/ glnames, - /*glmetrics*/ readglyphs, - /*glenc*/ glenc, - /*fnmetrics*/ fnmetrics, - /*glpath*/ glpath, - /*kerning*/ kerning, -}; - -/* statics */ - -#define MAXLINE 10240 /* maximal line length in the input file */ - -static int lineno; /* line number */ - -#define GETLEN(s) s, (sizeof(s)-1) -#define LENCMP(str, txt) strncmp(str, txt, sizeof(txt)-1) - -static FILE *bdf_file; -static int nglyphs; -static struct font_metrics fmet; - -/* many BDF fonts are of small pixel size, so we better try - * to scale them by an integer to keep the dimensions in - * whole pixels. However if the size is too big and a non- - * integer scaling is needed, we use the standard ttf2pt1's - * scaling abilities. - */ -static int pixel_size; -static int scale; -static int scale_external; - -static char *slant; -static char xlfdname[201]; -static char *spacing; -static char *charset_reg; -static char *charset_enc; -static char *fnwidth; -static int is_unicode = 0; - -/* tempoary storage for returning data to ttf2pt1 later on request */ -static int maxenc = 0; -static int *fontenc; -static GENTRY **glpaths; - -static int got_glyphs = 0; -static GLYPH *glyphs; -static int curgl; - -static int readfile(FILE *f, int (*strfunc)(int len, char *str)); - -/* - * Read the file and parse each string with strfunc(), - * until strfunc() returns !=0 or the end of file happens. - * Returns -1 on EOF or strfunc() returning <0, else 0 - */ - -static int -readfile( - FILE *f, - int (*strfunc)(int len, char *str) -) -{ - static char str[MAXLINE]; /* input line, maybe should be dynamic ? */ - char *s; - int len, c, res; - - len=0; - while(( c=getc(f) )!=EOF) { - if(c=='\n') { - str[len]=0; - - res = strfunc(len, str); - lineno++; - if(res<0) - return -1; - else if(res!=0) - return 0; - - len=0; - } else if(len<MAXLINE-1) { - if(c!='\r') - str[len++]=c; - } else { - fprintf(stderr, "**** bdf: line %d is too long (>%d)\n", lineno, MAXLINE-1); - exit(1); - } - } - return -1; /* EOF */ -} - -/* - * Parse the header of the font file. - * Stop after the line CHARS is encountered. Ignore the unknown lines. - */ - -struct line { - char *name; /* property name with trailing space */ - int namelen; /* length of the name string */ - enum { - ALLOW_REPEAT = 0x01, /* this property may be repeated in multiple lines */ - IS_SEEN = 0x02, /* this property has been seen already */ - MUST_SEE = 0x04, /* this property must be seen */ - IS_LAST = 0x08 /* this is the last property to be read */ - } flags; - char *fmt; /* format string for the arguments, NULL means a string arg */ - int nvals; /* number of values to be read by sscanf */ - void *vp[4]; /* pointers to values to be read */ -}; - -static struct line header[] = { - { GETLEN("FONT "), 0, " %200s", 1, {&xlfdname} }, - { GETLEN("SIZE "), MUST_SEE, " %d", 1, {&pixel_size} }, - { GETLEN("FONTBOUNDINGBOX "), MUST_SEE, " %hd %hd %hd %hd", 4, - {&fmet.bbox[2], &fmet.bbox[3], &fmet.bbox[0], &fmet.bbox[1]} }, - { GETLEN("FAMILY_NAME "), MUST_SEE, NULL, 1, {&fmet.name_family} }, - { GETLEN("WEIGHT_NAME "), MUST_SEE, NULL, 1, {&fmet.name_style} }, - { GETLEN("COPYRIGHT "), 0, NULL, 1, {&fmet.name_copyright} }, - { GETLEN("SLANT "), MUST_SEE, NULL, 1, {&slant} }, - { GETLEN("SPACING "), 0, NULL, 1, {&spacing} }, - { GETLEN("SETWIDTH_NAME "), 0, NULL, 1, {&fnwidth} }, - { GETLEN("CHARSET_REGISTRY "), 0, NULL, 1, {&charset_reg} }, - { GETLEN("CHARSET_ENCODING "), 0, NULL, 1, {&charset_enc} }, - { GETLEN("FONT_ASCENT "), 0, " %hd", 1, {&fmet.ascender} }, - { GETLEN("FONT_DESCENT "), 0, " %hd", 1, {&fmet.descender} }, - - /* these 2 must go in this order for post-processing */ - { GETLEN("UNDERLINE_THICKNESS "), 0, " %hd", 1, {&fmet.underline_thickness} }, - { GETLEN("UNDERLINE_POSITION "), 0, " %hd", 1, {&fmet.underline_position} }, - - { GETLEN("CHARS "), MUST_SEE|IS_LAST, " %d", 1, {&nglyphs} }, - { NULL, 0, 0 } /* end mark: name==NULL */ -}; - -static int -handle_header( - int len, - char *str -) -{ - struct line *cl; - char *s, *p; - char bf[2000]; - int c; - -#if 0 - fprintf(stderr, "line: %s\n", str); -#endif - for(cl = header; cl->name != 0; cl++) { - if(strncmp(str, cl->name, cl->namelen)) - continue; -#if 0 - fprintf(stderr, "match: %s\n", cl->name); -#endif - if(cl->flags & IS_SEEN) { - if(cl->flags & ALLOW_REPEAT) - continue; - - fprintf(stderr, "**** input line %d redefines the property %s\n", lineno, cl->name); - exit(1); - } - cl->flags |= IS_SEEN; - if(cl->fmt == 0) { - if(len - cl->namelen + 1 > sizeof bf) - len = sizeof bf; /* cut it down */ - - s = bf; /* a temporary buffer to extract the value */ - - /* skip until a quote */ - for(p = str+cl->namelen; len!=0 && (c = *p)!=0; p++, len--) { - if(c == '"') { - p++; - break; - } - } - for(; len!=0 && (c = *p)!=0; p++, len--) { - if(c == '"') { - c = *++p; - if(c == '"') - *s++ = c; - else - break; - } else - *s++ = c; - } - *s = 0; /* end of line */ - - *((char **)(cl->vp[0])) = dupcnstring(bf, s-bf); - } else { - c = sscanf(str+cl->namelen, cl->fmt, cl->vp[0], cl->vp[1], cl->vp[2], cl->vp[3]); - if(c != cl->nvals) { - fprintf(stderr, "**** property %s at input line %d must have %d arguments\n", - cl->name, lineno, cl->nvals); - exit(1); - } - } - if(cl->flags & IS_LAST) - return 1; - else - return 0; - } - return 0; -} - -/* - * Parse the description of the glyphs - */ - -static int -handle_glyphs( - int len, - char *str -) -{ - static int inbmap=0; - static char *bmap; - static int xsz, ysz, xoff, yoff; - static int curln; - int i, c; - char *p, *plim, *psz; - - if(!LENCMP(str, "ENDFONT")) { - if(curgl < nglyphs) { - fprintf(stderr, "**** unexpected end of font file after %d glyphs\n", curgl); - exit(1); - } else - return 1; - } - if(curgl >= nglyphs) { - fprintf(stderr, "**** file contains more glyphs than advertised (%d)\n", nglyphs); - exit(1); - } - if(!LENCMP(str, "STARTCHAR")) { - /* sizeof will count \0 instead of ' ' */ - for(i=sizeof("STARTCHAR"); str[i] == ' '; i++) - {} - - glyphs[curgl].name = strdup(str + i); - if(glyphs[curgl].name == 0) { - fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__); - exit(255); - } - } else if(!LENCMP(str, "ENCODING")) { - if(sscanf(str, "ENCODING %d", &fontenc[curgl])!=1) { - fprintf(stderr,"**** weird ENCODING statement at line %d\n", lineno); - exit(1); - } - if(fontenc[curgl] == -1) /* compatibility format */ - sscanf(str, "ENCODING -1 %d", &fontenc[curgl]); - if(fontenc[curgl] > maxenc) - maxenc = fontenc[curgl]; - } else if(!LENCMP(str, "DWIDTH")) { - if(sscanf(str, "DWIDTH %d %d", &xsz, &ysz)!=2) { - fprintf(stderr,"**** weird DWIDTH statement at line %d\n", lineno); - exit(1); - } - glyphs[curgl].width = xsz*scale; - } else if(!LENCMP(str, "BBX")) { - if(sscanf(str, "BBX %d %d %d %d", &xsz, &ysz, &xoff, &yoff)!=4) { - fprintf(stderr,"**** weird BBX statement at line %d\n", lineno); - exit(1); - } - bmap=malloc(xsz*ysz); - if(bmap==0) { - fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__); - exit(255); - } - glyphs[curgl].lsb = -xoff*scale; - glyphs[curgl].xMin = -xoff*scale; - glyphs[curgl].xMax = (xsz-xoff)*scale; - glyphs[curgl].yMin = -yoff*scale; - glyphs[curgl].yMax = (ysz-xoff)*scale; - } else if(!LENCMP(str, "BITMAP")) { - inbmap=1; - curln=ysz-1; /* the lowest line has index 0 */ - } else if(!LENCMP(str, "ENDCHAR")) { - inbmap=0; - if(bmap) { - glyphs[curgl].lastentry = 0; - glyphs[curgl].path = 0; - glyphs[curgl].entries = 0; - bmp_outline(&glyphs[curgl], scale, bmap, xsz, ysz, xoff, yoff); - free(bmap); - /* remember in a static table or it will be erased */ - glpaths[curgl] = glyphs[curgl].entries; - glyphs[curgl].entries = 0; - - if(glpaths[curgl]) - glyphs[curgl].ttf_pathlen = 1; - else - glyphs[curgl].ttf_pathlen = 0; - } - curgl++; - } else if(inbmap) { - if(curln<0) { - fprintf(stderr,"**** bitmap is longer than %d lines at line %d\n", ysz, lineno); - exit(1); - } - - i=0; - p=&bmap[curln*xsz]; psz=p+xsz; - while(i<len) { - c=str[i++]; - if(!isxdigit(c)) { - fprintf(stderr,"**** non-hex digit in bitmap at line %d\n", lineno); - exit(1); - } - if(c<='9') - c-='0'; - else - c= tolower(c)-'a'+10; - - for(plim=p+4; p<psz && p<plim; c<<=1) - *p++ = (( c & 0x08 )!=0); - } - if(p<psz) { - fprintf(stderr,"**** bitmap line is too short at line %d\n", lineno); - exit(1); - } - curln--; - } - return 0; -} - -/* - * Read all the possible information about the glyphs - */ - -static void -readglyphs( - GLYPH *glyph_list -) -{ - int i; - GLYPH *g; - - if(got_glyphs) - return; - - /* pass them to handle_glyphs() through statics */ - glyphs = glyph_list; - curgl = 2; /* skip the empty glyph and .notdef */ - - /* initialize the empty glyph and .notdef */ - - for(i=0; i<2; i++) { - g = &glyphs[i]; - g->lsb = 0; - g->width = fmet.bbox[2]; - g->xMin = 0; - g->yMin = 0; - } - g = &glyphs[0]; - g->name = ".notdef"; - g->xMax = fmet.bbox[2]*4/5; - g->yMax = fmet.bbox[3]*4/5; - g->entries = g->path = g->lastentry = 0; - /* make it look as a black square */ - fg_rmoveto(g, 0.0, 0.0); - fg_rlineto(g, 0.0, (double)g->yMax); - fg_rlineto(g, (double)g->xMax, (double)g->yMax); - fg_rlineto(g, (double)g->xMax, 0.0); - fg_rlineto(g, 0.0, 0.0); - g_closepath(g); - glpaths[0] = g->entries; - g->entries = 0; - g->ttf_pathlen = 4; - - g = &glyphs[1]; - g->name = ".null"; - g->xMax = g->yMax = 0; - g->ttf_pathlen = 0; - - if(readfile(bdf_file, handle_glyphs) < 0) { - fprintf(stderr, "**** file does not contain the ENDFONT line\n"); - exit(1); - } - got_glyphs = 1; -} - -/* - * Open font and prepare to return information to the main driver. - * May print error and warning messages. - * Exit on error. - */ - -static void -openfont( - char *fname, - char *arg /* unused now */ -) -{ - struct line *cl; - int i, l; - - if ((bdf_file = fopen(fname, "r")) == NULL) { - fprintf(stderr, "**** Cannot open file '%s'\n", fname); - exit(1); - } else { - WARNING_2 fprintf(stderr, "Processing file %s\n", fname); - } - - lineno = 1; - - for(cl = header; cl->name != 0; cl++) - cl->flags &= ~IS_SEEN; - if(readfile(bdf_file, handle_header) < 0) { - fprintf(stderr, "**** file does not contain the CHARS definition\n"); - exit(1); - } - for(cl = header; cl->name != 0; cl++) { - if( (cl->flags & MUST_SEE) && !(cl->flags & IS_SEEN) ) { - fprintf(stderr, "**** mandatory property %sis not found in the input line\n", - cl->name); /* cl->name has a space at the end */ - exit(1); - } - - /* set a few defaults */ - if( !(cl->flags & IS_SEEN) ) { - if(cl->vp[0] == &fmet.underline_thickness) { - fmet.underline_thickness = 1; - } else if(cl->vp[0] == &fmet.underline_position) { - fmet.underline_position = fmet.bbox[1] + fmet.underline_thickness - - (pixel_size - fmet.bbox[3]); - } else if(cl->vp[0] == &fmet.ascender) { - fmet.ascender = fmet.bbox[2] + fmet.bbox[0]; - } else if(cl->vp[0] == &fmet.descender) { - fmet.descender = fmet.bbox[0]; - } - } - } - - nglyphs += 2; /* add empty glyph and .notdef */ - - /* postprocessing to compensate for the differences in the metric formats */ - fmet.bbox[2] += fmet.bbox[0]; - fmet.bbox[3] += fmet.bbox[1]; - - scale = 1000/pixel_size; /* XXX ? */ - if(scale*pixel_size < 950) { - scale = 1; - scale_external = 1; - fmet.units_per_em = pixel_size; - } else { - scale_external = 0; - fmet.units_per_em = scale*pixel_size; - - fmet.underline_position *= scale; - fmet.underline_thickness *= scale; - fmet.ascender *= scale; - fmet.descender *= scale; - for(i=0; i<4; i++) - fmet.bbox[i] *= scale; - } - - fmet.italic_angle = 0.0; - if(spacing == 0 /* possibly an old font */ - || toupper(spacing[0]) != 'P') /* or anything non-proportional */ - fmet.is_fixed_pitch = 1; - else - fmet.is_fixed_pitch = 0; - - if(fmet.name_copyright==NULL) - fmet.name_copyright = ""; - - /* create the full name */ - l = strlen(fmet.name_family) - + (fmet.name_style? strlen(fmet.name_style) : 0) - + (fnwidth? strlen(fnwidth) : 0) - + strlen("Oblique") + 1; - - if(( fmet.name_full = malloc(l) )==NULL) { - fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__); - exit(255); - } - strcpy(fmet.name_full, fmet.name_family); - if(fnwidth && strcmp(fnwidth, "Normal")) { - strcat(fmet.name_full, fnwidth); - } - if(fmet.name_style && strcmp(fmet.name_style, "Medium")) { - strcat(fmet.name_full, fmet.name_style); - } - switch(toupper(slant[0])) { - case 'O': - strcat(fmet.name_full, "Oblique"); - break; - case 'I': - strcat(fmet.name_full, "Italic"); - break; - } - - fmet.name_ps = fmet.name_full; - fmet.name_version = "1.0"; - - if(charset_reg && charset_enc - && !strcmp(charset_reg, "iso10646") && !strcmp(charset_enc, "1")) - is_unicode = 1; - - if(( fontenc = calloc(nglyphs, sizeof *fontenc) )==NULL) { - fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__); - exit(255); - } - for(i=0; i<nglyphs; i++) - fontenc[i] = -1; - if(( glpaths = calloc(nglyphs, sizeof *glpaths) )==NULL) { - fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__); - exit(255); - } -} - -/* - * Close font. - * Exit on error. - */ - -static void -closefont( - void -) -{ - if(fclose(bdf_file) < 0) { - WARNING_1 fprintf(stderr, "Errors when closing the font file, ignored\n"); - } -} - -/* - * Get the number of glyphs in font. - */ - -static int -getnglyphs ( - void -) -{ - return nglyphs; -} - -/* - * Get the names of the glyphs. - * Returns 0 if the names were assigned, non-zero if the font - * provides no glyph names. - */ - -static int -glnames( - GLYPH *glyph_list -) -{ - readglyphs(glyph_list); - return 0; -} - -/* - * Get the original encoding of the font. - * Returns 1 for if the original encoding is Unicode, 2 if the - * original encoding is other 16-bit, 0 if 8-bit. - */ - -static int -glenc( - GLYPH *glyph_list, - int *encoding, - int *unimap -) -{ - int i, douni, e; - - if(is_unicode || forcemap) - douni = 1; - else - douni = 0; - - for(i=0; i<nglyphs; i++) { - e = fontenc[i]; - if(douni) - e = unicode_rev_lookup(e); - if(e>=0 && e<ENCTABSZ && encoding[e] == -1) - encoding[e] = i; - } - - if(is_unicode) - return 1; - else if(maxenc > 255) - return 2; - else - return 0; -} - -/* - * Get the font metrics - */ -static void -fnmetrics( - struct font_metrics *fm -) -{ - *fm = fmet; -} - -/* - * Get the path of contrours for a glyph. - */ - -static void -glpath( - int glyphno, - GLYPH *glyf_list -) -{ - readglyphs(glyf_list); - glyf_list[glyphno].entries = glpaths[glyphno]; - glpaths[glyphno] = 0; -} - -/* - * Get the kerning data. - */ - -static void -kerning( - GLYPH *glyph_list -) -{ - return; /* no kerning in BDF */ -} diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/bitmap.c b/application/third_party/dompdf/lib/ttf2ufm/src/bitmap.c deleted file mode 100644 index d2334e43..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/bitmap.c +++ /dev/null @@ -1,2633 +0,0 @@ -/* - * Handling of the bitmapped glyphs - * - * Copyright (c) 2001 by the TTF2PT1 project - * Copyright (c) 2001 by Sergey Babkin - * - * see COPYRIGHT for the full copyright notice - */ - -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include "pt1.h" -#include "global.h" - -/* possible values of limits */ -#define L_NONE 0 /* nothing here */ -#define L_ON 1 /* black is on up/right */ -#define L_OFF 2 /* black is on down/left */ - -static int warnedhints = 0; - - -#ifdef USE_AUTOTRACE -#include <autotrace/autotrace.h> - -/* - * Produce an autotraced outline from a bitmap. - * scale - factor to scale the sizes - * bmap - array of dots by lines, xsz * ysz - * xoff, yoff - offset of the bitmap's lower left corner - * from the logical position (0,0) - */ - -static void -autotraced_bmp_outline( - GLYPH *g, - int scale, - char *bmap, - int xsz, - int ysz, - int xoff, - int yoff -) -{ - at_bitmap_type atb; - at_splines_type *atsp; - at_fitting_opts_type *atoptsp; - at_spline_list_type *slp; - at_spline_type *sp; - int i, j, k; - double lastx, lasty; - double fscale; - char *xbmap; - - fscale = (double)scale; - - /* provide a white margin around the bitmap */ - xbmap = malloc((ysz+2)*(xsz+2)); - if(xbmap == 0) { - fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__); - exit(255); - } - memset(xbmap, 0, xsz+2); /* top margin */ - for(i=0, j=xsz+2; i<ysz; i++, j+=xsz+2) { - xbmap[j] = 0; /* left margin */ - memcpy(&xbmap[j+1], &bmap[xsz*(ysz-1-i)], xsz); /* a line of bitmap */ - xbmap[j+xsz+1] = 0; /* right margin */ - } - memset(xbmap+j, 0, xsz+2); /* bottom margin */ - xoff--; yoff-=2; /* compensate for the margins */ - - atoptsp = at_fitting_opts_new(); - - atb.width = xsz+2; - atb.height = ysz+2; - atb.np = 1; - atb.bitmap = xbmap; - - atsp = at_splines_new(&atb, atoptsp); - - lastx = lasty = -1.; - for(i=0; i<atsp->length; i++) { - slp = &atsp->data[i]; -#if 0 - fprintf(stderr, "%s: contour %d: %d entries clockwise=%d color=%02X%02X%02X\n", - g->name, i, slp->length, slp->clockwise, slp->color.r, slp->color.g, slp->color.b); -#endif - if(slp->length == 0) - continue; -#if 0 - if(slp->color.r + slp->color.g + slp->color.b == 0) - continue; -#endif - fg_rmoveto(g, fscale*(slp->data[0].v[0].x+xoff), fscale*(slp->data[0].v[0].y+yoff)); - for(j=0; j<slp->length; j++) { -#if 0 - fprintf(stderr, " "); - for(k=0; k<4; k++) - fprintf(stderr, "(%g %g) ", - fscale*(slp->data[j].v[k].x+xoff), - fscale*(ysz-slp->data[j].v[k].y+yoff) - ); - fprintf(stderr, "\n"); -#endif - fg_rrcurveto(g, - fscale*(slp->data[j].v[1].x+xoff), fscale*(slp->data[j].v[1].y+yoff), - fscale*(slp->data[j].v[2].x+xoff), fscale*(slp->data[j].v[2].y+yoff), - fscale*(slp->data[j].v[3].x+xoff), fscale*(slp->data[j].v[3].y+yoff) ); - } - g_closepath(g); - } - - at_splines_free(atsp); - at_fitting_opts_free(atoptsp); - free(xbmap); -} - -#endif /*USE_AUTOTRACE*/ - -/* an extension of gentry for description of the fragments */ -typedef struct gex_frag GEX_FRAG; -struct gex_frag { - /* indexes to len, the exact values and order are important */ -#define GEXFI_NONE -1 -#define GEXFI_CONVEX 0 -#define GEXFI_CONCAVE 1 -#define GEXFI_LINE 2 /* a line with steps varying by +-1 pixel */ -#define GEXFI_EXACTLINE 3 /* a line with exactly the same steps */ -#define GEXFI_SERIF 4 /* small serifs at the ends of stemsi - must be last */ -#define GEXFI_COUNT 5 /* maximal index + 1 */ - unsigned short len[GEXFI_COUNT]; /* length of various fragment types starting here */ - unsigned short lenback[GEXFI_COUNT]; /* length back to the start of curve */ - - signed char ixstart; /* index of the frag type that starts here */ - signed char ixcont; /* index of the frag type that continues here */ - - short flags; -#define GEXFF_HLINE 0x0001 /* the exact line is longer in "horizontal" dimension */ -#define GEXFF_EXTR 0x0002 /* this gentry is an extremum in some direction */ -#define GEXFF_CIRC 0x0004 /* the joint at this gentry is for a circular curve */ -#define GEXFF_DRAWCURVE 0x0008 /* vect[] describes a curve to draw */ -#define GEXFF_DRAWLINE 0x0010 /* vect[] describes a line to draw */ -#define GEXFF_SPLIT 0x0020 /* is a result of splitting a line */ -#define GEXFF_SYMNEXT 0x0040 /* this subfrag is symmetric with next one */ -#define GEXFF_DONE 0x0080 /* this subfrag has been vectorized */ -#define GEXFF_LONG 0x0100 /* this gentry is longer than 1 pixel */ - - unsigned short aidx; /* index of gentry in the array representing the contour */ - - unsigned short vectlen; /* number of gentries represented by vect[] */ - - /* coordinates for vectored replacement of this fragment */ - /* (already scaled because it's needed for curve approximation) */ - double vect[4 /*ref.points*/][2 /*X,Y*/]; - - double bbox[2 /*X,Y*/]; /* absolute sizes of bounding box of a subfragment */ - - /* used when splitting the curved frags into subfrags */ - GENTRY *prevsub; /* to gentries describing neighboring subfrags */ - GENTRY *nextsub; - GENTRY *ordersub; /* single-linked list describing the order of calculation */ - - int sublen; /* length of this subfrag */ - /* the symmetry across the subfrags */ - int symaxis; /* the symmetry axis, with next subfrag */ - int symxlen; /* min length of adjacent symmetric frags */ - /* the symmetry within this subfrag (the axis is always diagonal) */ - GENTRY *symge; /* symge->i{x,y}3 is the symmetry point of symge==0 if none */ - -}; -#define X_FRAG(ge) ((GEX_FRAG *)((ge)->ext)) - -/* various interesting tables related to GEX_FRAG */ -static char *gxf_name[GEXFI_COUNT] = {"Convex", "Concave", "Line", "ExLine", "Serif"}; -static int gxf_cvk[2] = {-1, 1}; /* coefficients of concaveness */ - -/* - * Dump the contents of X_EXT()->len and ->lenback for a contour - */ -static void -gex_dump_contour( - GENTRY *ge, - int clen -) -{ - int i, j; - - for(j = 0; j < GEXFI_COUNT; j++) { - fprintf(stderr, "%-8s", gxf_name[j]); - for(i = 0; i < clen; i++, ge = ge->frwd) - fprintf(stderr, " %2d", X_FRAG(ge)->len[j]); - fprintf(stderr, " %p\n (back) ", ge); - for(i = 0; i < clen; i++, ge = ge->frwd) - fprintf(stderr, " %2d", X_FRAG(ge)->lenback[j]); - fprintf(stderr, "\n"); - } -} - -/* - * Calculate values of X_EXT()->lenback[] for all entries in - * a contour. The contour is identified by: - * ge - any gentry of the contour - * clen - contour length - */ - -static void -gex_calc_lenback( - GENTRY *ge, - int clen -) -{ - int i, j; - int end; - GEX_FRAG *f; - int len[GEXFI_COUNT]; /* length of the most recent fragment */ - int count[GEXFI_COUNT]; /* steps since beginning of the fragment */ - - for(j = 0; j < GEXFI_COUNT; j++) - len[j] = count[j] = 0; - - end = clen; - for(i = 0; i < end; i++, ge = ge->frwd) { - f = X_FRAG(ge); - for(j = 0; j < GEXFI_COUNT; j++) { - if(len[j] != count[j]) { - f->lenback[j] = count[j]++; - } else - f->lenback[j] = 0; - if(f->len[j] != 0) { - len[j] = f->len[j]; - count[j] = 1; /* start with the next gentry */ - /* if the fragment will wrap over the start, process to its end */ - if(i < clen && i + len[j] > end) - end = i + len[j]; - } - } - } - gex_dump_contour(ge, clen); -} - -/* Limit a curve to not exceed the given coordinates - * at its given side - */ - -static void -limcurve( - double curve[4][2 /*X,Y*/], - double lim[2 /*X,Y*/], - int where /* 0 - start, 3 - end */ -) -{ - int other = 3-where; /* the other end */ - int sgn[2 /*X,Y*/]; /* sign for comparison */ - double t, from, to, nt, t2, nt2, tt[4]; - double val[2 /*X,Y*/]; - int i; - - for(i=0; i<2; i++) - sgn[i] = fsign(curve[other][i] - curve[where][i]); - -#if 0 - fprintf(stderr, " limit (%g,%g)-(%g,%g) at %d by (%g,%g), sgn(%d,%d)\n", - curve[0][0], curve[0][1], curve[3][0], curve[3][1], - where, lim[0], lim[1], sgn[0], sgn[1]); -#endif - /* a common special case */ - if( sgn[0]*(curve[where][0] - lim[0]) >= 0. - && sgn[1]*(curve[where][1] - lim[1]) >= 0. ) - return; /* nothing to do */ - - if(other==0) { - from = 0.; - to = 1.; - } else { - from = 1.; - to = 0.; - } -#if 0 - fprintf(stderr, "t="); -#endif - while( fabs(from-to) > 0.00001 ) { - t = 0.5 * (from+to); - t2 = t*t; - nt = 1.-t; - nt2 = nt*nt; - tt[0] = nt2*nt; - tt[1] = 3*nt2*t; - tt[2] = 3*nt*t2; - tt[3] = t*t2; - for(i=0; i<2; i++) - val[i] = curve[0][i]*tt[0] + curve[1][i]*tt[1] - + curve[2][i]*tt[2] + curve[3][i]*tt[3]; -#if 0 - fprintf(stderr, "%g(%g,%g) ", t, val[0], val[1]); -#endif - if(fabs(val[0] - lim[0]) < 0.1 - || fabs(val[1] - lim[1]) < 0.1) - break; - - if(sgn[0] * (val[0] - lim[0]) < 0. - || sgn[1] * (val[1] - lim[1]) < 0.) - to = t; - else - from = t; - } - /* now t is the point of splitting */ -#define SPLIT(pt1, pt2) ( (pt1) + t*((pt2)-(pt1)) ) /* order is important! */ - for(i=0; i<2; i++) { - double v11, v12, v13, v21, v22, v31; /* intermediate points */ - - v11 = SPLIT(curve[0][i], curve[1][i]); - v12 = SPLIT(curve[1][i], curve[2][i]); - v13 = SPLIT(curve[2][i], curve[3][i]); - v21 = SPLIT(v11, v12); - v22 = SPLIT(v12, v13); - v31 = SPLIT(v21, v22); - if(other==0) { - curve[1][i] = v11; - curve[2][i] = v21; - curve[3][i] = fabs(v31 - lim[i]) < 0.1 ? lim[i] : v31; - } else { - curve[0][i] = fabs(v31 - lim[i]) < 0.1 ? lim[i] : v31; - curve[1][i] = v22; - curve[2][i] = v13; - } - } -#undef SPLIT -#if 0 - fprintf(stderr, "\n"); -#endif -} - -/* - * Vectorize a subfragment of a curve fragment. All the data has been already - * collected by this time - */ - -static void -dosubfrag( - GLYPH *g, - int fti, /* fragment type index */ - GENTRY *firstge, /* first gentry of fragment */ - GENTRY *ge, /* first gentry of subfragment */ - double fscale -) -{ - GENTRY *gel, *gei; /* last gentry of this subfrag */ - GEX_FRAG *f, *ff, *lf, *pf, *xf; - /* maximal amount of space that can be used at the beginning and the end */ - double fixfront[2], fixend[2]; /* fixed points - used to show direction */ - double mvfront[2], mvend[2]; /* movable points */ - double limfront[2], limend[2]; /* limit of movement for movabel points */ - double sympt; - int outfront, outend; /* the beginning/end is going outwards */ - int symfront, symend; /* a ready symmetric fragment is present at front/end */ - int drnd[2 /*X,Y*/]; /* size of the round part */ - int i, j, a1, a2, ndots; - double avg2, max2; /* squared distances */ - struct dot_dist *dots, *usedots; - - ff = X_FRAG(firstge); - f = X_FRAG(ge); - gel = f->nextsub; - lf = X_FRAG(gel); - if(f->prevsub != 0) - pf = X_FRAG(f->prevsub); - else - pf = 0; - - for(i=0; i<2; i++) - drnd[i] = gel->bkwd->ipoints[i][2] - ge->ipoints[i][2]; - - if(f->prevsub==0 && f->ixcont == GEXFI_NONE) { - /* nothing to join with : may use the whole length */ - for(i = 0; i < 2; i++) - limfront[i] = ge->bkwd->ipoints[i][2]; - } else { - /* limit to a half */ - for(i = 0; i < 2; i++) - limfront[i] = 0.5 * (ge->ipoints[i][2] + ge->bkwd->ipoints[i][2]); - } - if( (ge->ix3 == ge->bkwd->ix3) /* vert */ - ^ (isign(ge->bkwd->ix3 - ge->frwd->ix3)==isign(ge->bkwd->iy3 - ge->frwd->iy3)) - ^ (fti == GEXFI_CONCAVE) /* counter-clockwise */ ) { - /* the beginning is not a flat 90-degree end */ - outfront = 1; - for(i = 0; i < 2; i++) - fixfront[i] = ge->frwd->ipoints[i][2]; - } else { - outfront = 0; - for(i = 0; i < 2; i++) - fixfront[i] = ge->ipoints[i][2]; - } - - if(lf->nextsub==0 && lf->ixstart == GEXFI_NONE) { - /* nothing to join with : may use the whole length */ - for(i = 0; i < 2; i++) - limend[i] = gel->ipoints[i][2]; - } else { - /* limit to a half */ - for(i = 0; i < 2; i++) - limend[i] = 0.5 * (gel->ipoints[i][2] + gel->bkwd->ipoints[i][2]); - } - gei = gel->bkwd->bkwd; - if( (gel->ix3 == gel->bkwd->ix3) /* vert */ - ^ (isign(gel->ix3 - gei->ix3)==isign(gel->iy3 - gei->iy3)) - ^ (fti == GEXFI_CONVEX) /* clockwise */ ) { - /* the end is not a flat 90-degree end */ - outend = 1; - for(i = 0; i < 2; i++) - fixend[i] = gel->bkwd->bkwd->ipoints[i][2]; - } else { - outend = 0; - for(i = 0; i < 2; i++) - fixend[i] = gel->bkwd->ipoints[i][2]; - } - - for(i = 0; i < 2; i++) { - fixfront[i] *= fscale; - limfront[i] *= fscale; - fixend[i] *= fscale; - limend[i] *= fscale; - } - - fprintf(stderr, " %d out(%d[%d %d %d],%d[%d %d %d]) drnd(%d, %d)\n", - fti, - outfront, - (ge->ix3 == ge->bkwd->ix3), - (isign(ge->bkwd->ix3 - ge->frwd->ix3)==isign(ge->bkwd->iy3 - ge->frwd->iy3)), - (fti == GEXFI_CONCAVE), - outend, - (gel->ix3 == gel->bkwd->ix3), - (isign(gel->ix3 - gei->ix3)==isign(gel->iy3 - gei->iy3)), - (fti == GEXFI_CONVEX), - drnd[0], drnd[1]); - - /* prepare to calculate the distances */ - ndots = f->sublen - 1; - dots = malloc(sizeof(*dots) * ndots); - if(dots == 0) { - fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__); - exit(255); - } - for(i = 0, gei = ge; i < ndots; i++, gei = gei->frwd) { - for(a1 = 0; a1 < 2; a1++) - dots[i].p[a1] = fscale * gei->ipoints[a1][2]; - } - - /* see if we can mirror a ready symmetric curve */ - - /* check symmetry with the fragment before this */ - symfront = (pf != 0 && (pf->flags & GEXFF_SYMNEXT) && (pf->flags & GEXFF_DONE) - && ( outend && f->sublen <= pf->sublen - || ( pf->sublen == f->sublen - && (lf->sublen == 0 - || ( abs(limfront[0]-limend[0]) >= abs(pf->vect[0][0]-pf->vect[3][0]) - && abs(limfront[1]-limend[1]) >= abs(pf->vect[0][1]-pf->vect[3][1]) )) - ) - ) - ); - /* check symmetry with the fragment after this */ - symend = ( (f->flags & GEXFF_SYMNEXT) && (lf->flags & GEXFF_DONE) - && ( outfront && f->sublen <= lf->sublen - || ( lf->sublen == f->sublen - && (pf == 0 - || ( abs(limfront[0]-limend[0]) >= abs(lf->vect[0][0]-lf->vect[3][0]) - && abs(limfront[1]-limend[1]) >= abs(lf->vect[0][1]-lf->vect[3][1]) )) - ) - ) - ); - if(symfront || symend) { - /* mirror the symmetric neighbour subfrag */ - if(symfront) { - a1 = (ge->ix3 != ge->bkwd->ix3); /* the symmetry axis */ - a2 = !a1; /* the other axis (goes along the extremum gentry) */ - - /* the symmetry point on a2 */ - sympt = fscale * 0.5 * (ge->ipoints[a2][2] + ge->bkwd->ipoints[a2][2]); - xf = pf; /* the symmetric fragment */ - } else { - a1 = (gel->ix3 != gel->bkwd->ix3); /* the symmetry axis */ - a2 = !a1; /* the other axis (goes along the extremum gentry) */ - - /* the symmetry point on a2 */ - sympt = fscale * 0.5 * (gel->ipoints[a2][2] + gel->bkwd->ipoints[a2][2]); - xf = lf; /* the symmetric fragment */ - } - fprintf(stderr, " sym with %p f=%d(%p) e=%d(%p) a1=%c a2=%c sympt=%g\n", - xf, symfront, pf, symend, lf, - a1 ? 'Y': 'X', a2 ? 'Y': 'X', sympt - ); - for(i=0; i<4; i++) { - f->vect[3-i][a1] = xf->vect[i][a1]; - f->vect[3-i][a2] = sympt - (xf->vect[i][a2]-sympt); - } - if(symfront) { - if(outend || lf->sublen==0) - limcurve(f->vect, limend, 3); - } else { - if(outfront || pf == 0) - limcurve(f->vect, limfront, 0); - } - avg2 = fdotcurvdist2(f->vect, dots, ndots, &max2); - fprintf(stderr, " avg=%g max=%g fscale=%g\n", sqrt(avg2), sqrt(max2), fscale); - if(max2 <= fscale*fscale) { - f->flags |= (GEXFF_DONE | GEXFF_DRAWCURVE); - f->vectlen = f->sublen; - free(dots); - return; - } - } - - if( !outfront && !outend && f->symge != 0) { - /* a special case: try a circle segment as an approximation */ - double lenfront, lenend, len, maxlen; - - /* coefficient for a Bezier approximation of a circle */ -#define CIRCLE_FRAC 0.55 - - a1 = (ge->ix3 == ge->bkwd->ix3); /* get the axis along the front */ - a2 = !a1; /* axis along the end */ - - lenfront = fixfront[a1] - limfront[a1]; - lenend = fixend[a2] - limend[a2]; - if(fabs(lenfront) < fabs(lenend)) - len = fabs(lenfront); - else - len = fabs(lenend); - - /* make it go close to the round shape */ - switch(f->sublen) { - case 2: - maxlen = fscale; - break; - case 4: - case 6: - maxlen = fscale * 2.; - break; - default: - maxlen = fscale * abs(ge->frwd->frwd->ipoints[a1][2] - - ge->ipoints[a1][2]); - break; - } - if(len > maxlen) - len = maxlen; - - mvfront[a1] = fixfront[a1] - fsign(lenfront) * len; - mvfront[a2] = limfront[a2]; - mvend[a2] = fixend[a2] - fsign(lenend) * len; - mvend[a1] = limend[a1]; - - for(i=0; i<2; i++) { - f->vect[0][i] = mvfront[i]; - f->vect[3][i] = mvend[i]; - } - f->vect[1][a1] = mvfront[a1] + CIRCLE_FRAC*(mvend[a1]-mvfront[a1]); - f->vect[1][a2] = mvfront[a2]; - f->vect[2][a1] = mvend[a1]; - f->vect[2][a2] = mvend[a2] + CIRCLE_FRAC*(mvfront[a2]-mvend[a2]); - - avg2 = fdotcurvdist2(f->vect, dots, ndots, &max2); - fprintf(stderr, " avg=%g max=%g fscale=%g\n", sqrt(avg2), sqrt(max2), fscale); - if(max2 <= fscale*fscale) { - f->flags |= (GEXFF_DONE | GEXFF_DRAWCURVE); - f->vectlen = f->sublen; - free(dots); - return; - } -#undef CIRCLE_FRAC - } - for(i=0; i<2; i++) { - f->vect[0][i] = limfront[i]; - f->vect[1][i] = fixfront[i]; - f->vect[2][i] = fixend[i]; - f->vect[3][i] = limend[i]; - } - usedots = dots; - if(outfront) { - usedots++; ndots--; - } - if(outend) - ndots--; - if( fcrossrayscv(f->vect, NULL, NULL) == 0) { - fprintf(stderr, "**** Internal error: rays must cross but don't at %p-%p\n", - ge, gel); - fprintf(stderr, " (%g, %g) (%g, %g) (%g, %g) (%g, %g)\n", - limfront[0], limfront[1], - fixfront[0], fixfront[1], - fixend[0], fixend[1], - limend[0], limend[1] - ); - dumppaths(g, NULL, NULL); - exit(1); - } else { - if(ndots != 0) - fapproxcurve(f->vect, usedots, ndots); - f->flags |= (GEXFF_DONE | GEXFF_DRAWCURVE); - f->vectlen = f->sublen; - } - free(dots); -} - -/* - * Subtract a list of gentries (covered by a fragment of higher - * priority) from the set of fragments of a given - * type. - * - * An example is subtraction of the long exact line fragments - * from the curve fragments which get overridden. - */ - -static void -frag_subtract( - GLYPH *g, - GENTRY **age, /* array of gentries for this contour */ - int clen, /* length of the contour */ - GENTRY *ge, /* first gentry to be subtracted */ - int slen, /* number of gentries in the list to be subtracted */ - int d /* type of fragments from which to subtract, as in GEXFI_... */ -) -{ - GENTRY *pge; - GEX_FRAG *f, *pf; - int len, i, j; - - f = X_FRAG(ge); - len = slen; - - /* check if we overlap the end of some fragment */ - if(f->lenback[d]) { - /* chop off the end of conflicting fragment */ - len = f->lenback[d]; - pge = age[(f->aidx + clen - len)%clen]; - pf = X_FRAG(pge); - if(pf->len[d] == clen+1 && pf->flags & GEXFF_CIRC) { - /* the conflicting fragment is self-connected */ - - pf->len[d] = 0; - /* calculate the new value for lenback */ - len = clen+1 - slen; - for(pge = ge; len > 0; pge = pge->bkwd, len--) - X_FRAG(pge)->lenback[d] = len; - /* now pge points to the last entry of the line, - * which is also the new first entry of the curve - */ - X_FRAG(pge)->len[d] = clen+2 - slen; - /* clean lenback of gentries covered by the line */ - for(pge = ge->frwd, j = slen-1; j > 0; pge = pge->frwd, j--) - X_FRAG(pge)->lenback[d] = 0; - fprintf(stderr, " cut %s circular frag to %p-%p\n", - gxf_name[d], pge, ge); - gex_dump_contour(ge, clen); - } else { - /* when we chop off a piece of fragment, we leave the remaining - * piece(s) overlapping with the beginning and possibly the end - * of the line fragment under consideration - */ - fprintf(stderr, " cut %s frag at %p from len=%d to len=%d (end %p)\n", - gxf_name[d], pge, pf->len[d], len+1, ge); - j = pf->len[d] - len - 1; /* how many gentries are chopped off */ - pf->len[d] = len + 1; - i = slen - 1; - for(pge = ge->frwd; j > 0 && i > 0; j--, i--, pge = pge->frwd) - X_FRAG(pge)->lenback[d] = 0; - gex_dump_contour(ge, clen); - - if(j != 0) { - /* the conflicting fragment is split in two by this line - * fragment, fix up its tail - */ - - fprintf(stderr, " end of %s frag len=%d %p-", - gxf_name[d], j+1, pge->bkwd); - X_FRAG(pge->bkwd)->len[d] = j+1; /* the overlapping */ - for(i = 1; j > 0; j--, i++, pge = pge->frwd) - X_FRAG(pge)->lenback[d] = i; - fprintf(stderr, "%p\n", pge->bkwd); - gex_dump_contour(ge, clen); - } - } - } - /* check if we overlap the beginning of some fragments */ - i = slen-1; /* getntries remaining to consider */ - j = 0; /* gentries remaining in the overlapping fragment */ - for(pge = ge; i > 0; i--, pge = pge->frwd) { - if(j > 0) { - X_FRAG(pge)->lenback[d] = 0; - j--; - } - /* the beginning of one fragment may be the end of another - * fragment, in this case if j-- above results in 0, that will - * cause it to check the same gentry for the beginning - */ - if(j == 0) { - pf = X_FRAG(pge); - j = pf->len[d]; - if(j != 0) { - fprintf(stderr, " removed %s frag at %p len=%d\n", - gxf_name[d], pge, j); - gex_dump_contour(ge, clen); - pf->len[d] = 0; - j--; - } - } - } - /* pge points at the last gentry of the line fragment */ - if(j > 1) { /* we have the tail of a fragment left */ - fprintf(stderr, " end of %s frag len=%d %p-", - gxf_name[d], j, pge); - X_FRAG(pge)->len[d] = j; /* the overlapping */ - for(i = 0; j > 0; j--, i++, pge = pge->frwd) - X_FRAG(pge)->lenback[d] = i; - fprintf(stderr, "%p\n", pge->bkwd); - gex_dump_contour(ge, clen); - } else if(j == 1) { - X_FRAG(pge)->lenback[d] = 0; - } -} - -/* - * Produce an outline from a bitmap. - * scale - factor to scale the sizes - * bmap - array of dots by lines, xsz * ysz - * xoff, yoff - offset of the bitmap's lower left corner - * from the logical position (0,0) - */ - -void -bmp_outline( - GLYPH *g, - int scale, - char *bmap, - int xsz, - int ysz, - int xoff, - int yoff -) -{ - char *hlm, *vlm; /* arrays of the limits of outlines */ - char *amp; /* map of ambiguous points */ - int x, y; - char *ip, *op; - double fscale; - - if(xsz==0 || ysz==0) - return; - -#ifdef USE_AUTOTRACE - if(use_autotrace) { - autotraced_bmp_outline(g, scale, bmap, xsz, ysz, xoff, yoff); - return; - } -#endif /*USE_AUTOTRACE*/ - - fscale = (double)scale; - g->flags &= ~GF_FLOAT; /* build it as int first */ - - if(!warnedhints) { - warnedhints = 1; - if(hints && subhints) { - WARNING_2 fprintf(stderr, - "Use of hint substitution on bitmap fonts is not recommended\n"); - } - } - -#if 0 - printbmap(bmap, xsz, ysz, xoff, yoff); -#endif - - /* now find the outlines */ - hlm=calloc( xsz, ysz+1 ); /* horizontal limits */ - vlm=calloc( xsz+1, ysz ); /* vertical limits */ - amp=calloc( xsz, ysz ); /* ambiguous points */ - - if(hlm==0 || vlm==0 || amp==0) { - fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__); - exit(255); - } - - /* - * hlm and vlm represent a grid of horisontal and - * vertical lines. Each pixel is surrounded by the grid - * from all the sides. The values of [hv]lm mark the - * parts of grid where the pixel value switches from white - * to black and back. - */ - - /* find the horizontal limits */ - ip=bmap; op=hlm; - /* 1st row */ - for(x=0; x<xsz; x++) { - if(ip[x]) - op[x]=L_ON; - } - ip+=xsz; op+=xsz; - /* internal rows */ - for(y=1; y<ysz; y++) { - for(x=0; x<xsz; x++) { - if(ip[x]) { - if(!ip[x-xsz]) - op[x]=L_ON; - } else { - if(ip[x-xsz]) - op[x]=L_OFF; - } - } - ip+=xsz; op+=xsz; - } - - /* last row */ - ip-=xsz; - for(x=0; x<xsz; x++) { - if(ip[x]) - op[x]=L_OFF; - } - - /* find the vertical limits */ - ip=bmap; op=vlm; - for(y=0; y<ysz; y++) { - if(ip[0]) - op[0]=L_ON; - for(x=1; x<xsz; x++) { - if(ip[x]) { - if(!ip[x-1]) - op[x]=L_ON; - } else { - if(ip[x-1]) - op[x]=L_OFF; - } - } - if(ip[xsz-1]) - op[xsz]=L_OFF; - ip+=xsz; op+=xsz+1; - } - - /* - * Ambiguous points are the nodes of the grids - * that are between two white and two black pixels - * located in a checkerboard style. Actually - * there are only two patterns that may be - * around an ambiguous point: - * - * X|. .|X - * -*- -*- - * .|X X|. - * - * where "|" and "-" represent the grid (respectively members - * of vlm and hlm), "*" represents an ambiguous point - * and "X" and "." represent black and white pixels. - * - * If these sample pattern occur in the lower left corner - * of the bitmap then this ambiguous point will be - * located at amp[1][1] or in other words amp[1*xsz+1]. - * - * These points are named "ambiguous" because it's - * not easy to guess what did the font creator mean - * at these points. So we are going to treat them - * specially, doing no aggressive smoothing. - */ - - /* find the ambiguous points */ - for(y=ysz-1; y>0; y--) - for(x=xsz-1; x>0; x--) { - if(bmap[y*xsz+x]) { - if( !bmap[y*xsz+x-1] && !bmap[y*xsz-xsz+x] && bmap[y*xsz-xsz+x-1] ) - amp[y*xsz+x]=1; - } else { - if( bmap[y*xsz+x-1] && bmap[y*xsz-xsz+x] && !bmap[y*xsz-xsz+x-1] ) - amp[y*xsz+x]=1; - } - } - -#if 0 - printlimits(hlm, vlm, amp, xsz, ysz); -#endif - - /* generate the vectored (stepping) outline */ - - while(1) { - int found = 0; - int outer; /* flag: this is an outer contour */ - int hor, newhor; /* flag: the current contour direction is horizontal */ - int dir; /* previous direction of the coordinate, 1 - L_ON, 0 - L_OFF */ - int startx, starty; /* start of a contour */ - int firstx, firsty; /* start of the current line */ - int newx, newy; /* new coordinates to try */ - char *lm, val; - int maxx, maxy, xor; - - for(y=ysz; !found && y>0; y--) - for(x=0; x<xsz; x++) - if(hlm[y*xsz+x] > L_NONE) - goto foundcontour; - break; /* have no contours left */ - - foundcontour: - ig_rmoveto(g, x+xoff, y+yoff); /* intermediate as int */ - - startx = firstx = x; - starty = firsty = y; - - if(hlm[y*xsz+x] == L_OFF) { - outer = 1; dir = 0; - hlm[y*xsz+x] = -hlm[y*xsz+x]; /* mark as seen */ - hor = 1; x++; - } else { - outer = 0; dir = 0; - hor = 0; y--; - vlm[y*(xsz+1)+x] = -vlm[y*(xsz+1)+x]; /* mark as seen */ - } - - while(x!=startx || y!=starty) { -#if 0 - printf("trace (%d, %d) outer=%d hor=%d dir=%d\n", x, y, outer, hor, dir); -#endif - - /* initialization common for try1 and try2 */ - if(hor) { - lm = vlm; maxx = xsz+1; maxy = ysz; newhor = 0; - } else { - lm = hlm; maxx = xsz; maxy = ysz+1; newhor = 1; - } - xor = (outer ^ hor ^ dir); - - try1: - /* first we try to change axis, to keep the - * contour as long as possible - */ - - newx = x; newy = y; - if(!hor && (!outer ^ dir)) - newx--; - if(hor && (!outer ^ dir)) - newy--; - - if(newx < 0 || newx >= maxx || newy < 0 || newy >= maxy) - goto try2; - - if(!xor) - val = L_ON; - else - val = L_OFF; -#if 0 - printf("try 1, want %d have %d at %c(%d, %d)\n", val, lm[newy*maxx + newx], - (newhor ? 'h':'v'), newx, newy); -#endif - if( lm[newy*maxx + newx] == val ) - goto gotit; - - try2: - /* try to change the axis anyway */ - - newx = x; newy = y; - if(!hor && (outer ^ dir)) - newx--; - if(hor && (outer ^ dir)) - newy--; - - if(newx < 0 || newx >= maxx || newy < 0 || newy >= maxy) - goto try3; - - if(xor) - val = L_ON; - else - val = L_OFF; -#if 0 - printf("try 2, want %d have %d at %c(%d, %d)\n", val, lm[newy*maxx + newx], - (newhor ? 'h':'v'), newx, newy); -#endif - if( lm[newy*maxx + newx] == val ) - goto gotit; - - try3: - /* try to continue in the old direction */ - - if(hor) { - lm = hlm; maxx = xsz; maxy = ysz+1; - } else { - lm = vlm; maxx = xsz+1; maxy = ysz; - } - newhor = hor; - newx = x; newy = y; - if(hor && dir) - newx--; - if(!hor && !dir) - newy--; - - if(newx < 0 || newx >= maxx || newy < 0 || newy >= maxy) - goto badtry; - - if(dir) - val = L_ON; - else - val = L_OFF; -#if 0 - printf("try 3, want %d have %d at %c(%d, %d)\n", val, lm[newy*maxx + newx], - (newhor ? 'h':'v'), newx, newy); -#endif - if( lm[newy*maxx + newx] == val ) - goto gotit; - - badtry: - fprintf(stderr, "**** Internal error in the contour detection code at (%d, %d)\n", x, y); - fprintf(stderr, "glyph='%s' outer=%d hor=%d dir=%d\n", g->name, outer, hor, dir); - fflush(stdout); - exit(1); - - gotit: - if(hor != newhor) { /* changed direction, end the previous line */ - ig_rlineto(g, x+xoff, y+yoff); /* intermediate as int */ - firstx = x; firsty = y; - } - lm[newy*maxx + newx] = -lm[newy*maxx + newx]; - hor = newhor; - dir = (val == L_ON); - if(newhor) - x -= (dir<<1)-1; - else - y += (dir<<1)-1; - } -#if 0 - printf("trace (%d, %d) outer=%d hor=%d dir=%d\n", x, y, outer, hor, dir); -#endif - ig_rlineto(g, x+xoff, y+yoff); /* intermediate as int */ - g_closepath(g); - } - - - /* try to vectorize the curves and sloped lines in the bitmap */ - if(vectorize) { - GENTRY *ge, *pge, *cge, *loopge; - int i; - int skip; - - dumppaths(g, NULL, NULL); - - /* allocate the extensions */ - for(cge=g->entries; cge!=0; cge=cge->next) { - cge->ext = calloc(1, sizeof(GEX_FRAG) ); - if(cge->ext == 0) { - fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__); - exit(255); - } - } - - for(cge=g->entries; cge!=0; cge=cge->next) { - if(cge->type != GE_MOVE) - continue; - - /* we've found the beginning of a contour */ - { - int d, vert, count, stepmore, delaystop; - int vdir, hdir, fullvdir, fullhdir, len; - int dx, dy, lastdx, lastdy; - int k1, k2, reversal, smooth, good; - int line[2 /*H,V*/], maxlen[2 /*H,V*/], minlen[2 /*H,V*/]; - GENTRY **age; /* array of gentries in a contour */ - int clen; /* contour length, size of ths array */ - int i, j; - GEX_FRAG *f; - - /* we know that all the contours start at the top-left corner, - * so at most it might be before/after the last element of - * the last/first fragment - */ - - ge = cge->next; - pge = ge->bkwd; - if(ge->ix3 == pge->ix3) { /* a vertical line */ - /* we want to start always from a horizontal line because - * then we always start from top and that is quaranteed to be a - * fragment boundary, so move the start point of the contour - */ - pge->prev->next = pge->next; - pge->next->prev = pge->prev; - cge->next = pge; - pge->prev = cge; - pge->next = ge; - ge->prev = pge; - ge = pge; pge = ge->bkwd; - cge->ix3 = pge->ix3; cge->iy3 = pge->iy3; - } - - /* fill the array of gentries */ - clen = 1; - for(ge = cge->next->frwd; ge != cge->next; ge = ge->frwd) - clen++; - age = (GENTRY **)malloc(sizeof(*age) * clen); - ge = cge->next; - count = 0; - do { - age[count] = ge; - X_FRAG(ge)->aidx = count++; - - /* and by the way find the extremums */ - for(i=0; i<2; i++) { - if( isign(ge->frwd->ipoints[i][2] - ge->ipoints[i][2]) - * isign(ge->bkwd->bkwd->ipoints[i][2] - ge->bkwd->ipoints[i][2]) == 1) { - X_FRAG(ge)->flags |= GEXFF_EXTR; - fprintf(stderr, " %s extremum at %p\n", (i?"vert":"hor"), ge); - } - if(abs(ge->ipoints[i][2] - ge->bkwd->ipoints[i][2]) > 1) - X_FRAG(ge)->flags |= GEXFF_LONG; - } - - ge = ge->frwd; - } while(ge != cge->next); - - /* Find the serif fragments, looking as either of: - * -+ | - * | | - * +-+ +-+ - * | | - * +--... +--... - * with the thickness of serifs being 1 pixel. We make no - * difference between serifs on vertical and horizontal stems. - */ - - ge = cge->next; - do { - GENTRY *nge; - int pdx, pdy, ndx, ndy; - - /* two gentries of length 1 mean a potential serif */ - pge = ge->bkwd; - nge = ge->frwd; - - dx = nge->ix3 - pge->ix3; - dy = nge->iy3 - pge->iy3; - - if(abs(dx) != 1 || abs(dy) != 1) /* 2 small ones */ - continue; - - if( - (!(X_FRAG(ge)->flags & GEXFF_EXTR) - || !(X_FRAG(ge->bkwd)->flags & GEXFF_EXTR)) - && (!(X_FRAG(ge->frwd)->flags & GEXFF_EXTR) - || !(X_FRAG(ge->frwd->frwd)->flags & GEXFF_EXTR)) - ) - continue; /* either side must be a couple of extremums */ - - pdx = pge->ix3 - pge->bkwd->ix3; - pdy = pge->iy3 - pge->bkwd->iy3; - ndx = nge->frwd->ix3 - nge->ix3; - ndy = nge->frwd->iy3 - nge->iy3; - - if(pdx*dx + pdy*dy > 0 && ndx*dx + ndy*dy > 0) - continue; /* definitely not a serif but a round corner */ - - if(abs(pdx) + abs(pdy) == 1 || abs(ndx) + abs(ndy) == 1) - continue; - - /* we've found a serif including this and next gentry */ - X_FRAG(ge)->len[GEXFI_SERIF] = 2; - - } while( (ge = ge->frwd) != cge->next ); - - - /* Find the convex and concave fragments, defined as: - * convex (clockwise): dy/dx <= dy0/dx0, - * or a reversal: dy/dx == - dy0/dx0 && abs(dxthis) == 1 && dy/dx > 0 - * concave (counter-clockwise): dy/dx >= dy0/dx0, - * or a reversal: dy/dx == - dy0/dx0 && abs(dxthis) == 1 && dy/dx < 0 - * - * Where dx and dy are measured between the end of this gentry - * and the start of the previous one (dx0 and dy0 are the same - * thing calculated for the previous gentry and its previous one), - * dxthis is between the end and begginning of this gentry. - * - * A reversal is a situation when the curve changes its direction - * along the x axis, so it passes through a momentary vertical - * direction. - */ - for(d = GEXFI_CONVEX; d<= GEXFI_CONCAVE; d++) { - ge = cge->next; - pge = ge->bkwd; /* the beginning of the fragment */ - count = 1; - lastdx = pge->ix3 - pge->bkwd->bkwd->ix3; - lastdy = pge->iy3 - pge->bkwd->bkwd->iy3; - -#define CHKCURVCONN(ge, msg) do { \ - dx = (ge)->ix3 - (ge)->bkwd->bkwd->ix3; \ - dy = (ge)->iy3 - (ge)->bkwd->bkwd->iy3; \ - if(0 && msg) { \ - fprintf(stderr, " %p: dx=%d dy=%d dx0=%d dy0=%d ", \ - (ge), dx, dy, lastdx, lastdy); \ - } \ - k1 = X_FRAG(ge)->flags; \ - k2 = X_FRAG((ge)->bkwd)->flags; \ - if(0 && msg) { \ - fprintf(stderr, "fl=%c%c%c%c ", \ - (k1 & GEXFF_EXTR) ? 'X' : '-', \ - (k1 & GEXFF_LONG) ? 'L' : '-', \ - (k2 & GEXFF_EXTR) ? 'X' : '-', \ - (k2 & GEXFF_LONG) ? 'L' : '-' \ - ); \ - } \ - if( (k1 & GEXFF_EXTR) && (k2 & GEXFF_LONG) \ - || (k2 & GEXFF_EXTR) && (k1 & GEXFF_LONG) ) { \ - smooth = 0; \ - good = reversal = -1; /* for debugging */ \ - } else { \ - k1 = dy * lastdx; \ - k2 = lastdy * dx; \ - smooth = (abs(dx)==1 || abs(dy)==1); \ - good = (k1 - k2)*gxf_cvk[d] >= 0; \ - if(smooth && !good) { \ - reversal = (k1 == -k2 && abs((ge)->ix3 - (ge)->bkwd->ix3)==1 \ - && dy*dx*gxf_cvk[d] < 0); \ - } else \ - reversal = 0; \ - } \ - if(0 && msg) { \ - fprintf(stderr, "k1=%d k2=%d pge=%p count=%d %s good=%d rev=%d\n", \ - k1, k2, pge, count, gxf_name[d], good, reversal); \ - } \ - } while(0) - - do { - CHKCURVCONN(ge, 1); - - if(smooth && (good || reversal) ) - count++; - else { - /* can't continue */ -#if 0 - if(count >= 4) { /* worth remembering */ - fprintf(stderr, " %s frag %p-%p count=%d\n", gxf_name[d], pge, ge->bkwd, count); - } -#endif - X_FRAG(pge)->len[d] = count; - if(smooth) { - pge = ge->bkwd; - count = 2; - } else { - pge = ge; - count = 1; - } - } - lastdx = dx; lastdy = dy; - ge = ge->frwd; - } while(ge != cge->next); - - /* see if we can connect the last fragment to the first */ - CHKCURVCONN(ge, 1); - - if(smooth && (good || reversal) ) { - /* -1 to avoid ge->bkwd being counted twice */ - if( X_FRAG(ge->bkwd)->len[d] >= 2 ) - count += X_FRAG(ge->bkwd)->len[d] - 1; - else if(count == clen+1) { - /* we are joining a circular (closed) curve, check whether it - * can be joined at any point or whether it has a discontinuity - * at the point where we join it now - */ - lastdx = dx; lastdy = dy; - CHKCURVCONN(ge->frwd, 0); - - if(smooth && (good || reversal) ) { - /* yes, the curve is truly a circular one and can be - * joined at any point - */ - -#if 0 - fprintf(stderr, " found a circular joint point at %p\n", pge); -#endif - /* make sure that in a circular fragment we start from an extremum */ - while( ! (X_FRAG(pge)->flags & GEXFF_EXTR) ) - pge = pge->frwd; - X_FRAG(pge)->flags |= GEXFF_CIRC; - } - } -#if 0 - fprintf(stderr, " %s joined %p to %p count=%d bk_count=%d\n", gxf_name[d], pge, ge->bkwd, - count, X_FRAG(ge->bkwd)->len[d] ); -#endif - X_FRAG(ge->bkwd)->len[d] = 0; - } - X_FRAG(pge)->len[d] = count; -#if 0 - if(count >= 4) { /* worth remembering */ - fprintf(stderr, " %s last frag %p-%p count=%d\n", gxf_name[d], pge, ge->bkwd, count); - } -#endif -#undef CHKCURVCONN - - /* do postprocessing */ - ge = cge->next; - do { - f = X_FRAG(ge); - len = f->len[d]; -#if 0 - fprintf(stderr, " %p %s len=%d clen=%d\n", ge, gxf_name[d], len, clen); -#endif - if(len < 3) /* get rid of the fragments that are too short */ - f->len[d] = 0; - else if(len == 3) { - /* _ - * drop the |_| - shaped fragments, leave alone the _| - shaped - * (and even those only if not too short in pixels), - * those left alone are further filtered later - */ - k1 = (ge->ix3 == ge->bkwd->ix3); /* axis of the start */ - if(isign(ge->ipoints[k1][2] - ge->bkwd->ipoints[k1][2]) - != isign(ge->frwd->ipoints[k1][2] - ge->frwd->frwd->ipoints[k1][2]) - && abs(ge->frwd->frwd->ipoints[k1][2] - ge->bkwd->ipoints[k1][2]) > 2) { -#if 0 - fprintf(stderr, " %s frag %p count=%d good shape\n", - gxf_name[d], ge, count); -#endif - } else - f->len[d] = 0; - } else if(len == clen+1) - break; /* a closed fragment, nothing else interesting */ - else { /* only for open fragments */ - GENTRY *gem, *gex, *gei, *ges; - - ges = ge; /* the start entry */ - gem = age[(f->aidx + f->len[d])%clen]; /* entry past the end of the fragment */ - - gei = ge->frwd; - if( (ge->ix3 == ge->bkwd->ix3) /* vert */ - ^ (isign(ge->bkwd->ix3 - gei->ix3)==isign(ge->bkwd->iy3 - gei->iy3)) - ^ !(d == GEXFI_CONVEX) /* counter-clockwise */ ) { - -#if 0 - fprintf(stderr, " %p: %s potential spurious start\n", ge, gxf_name[d]); -#endif - /* the beginning may be a spurious entry */ - - gex = 0; /* the extremum closest to the beginning - to be found */ - for(gei = ge->frwd; gei != gem; gei = gei->frwd) { - if(X_FRAG(gei)->flags & GEXFF_EXTR) { - gex = gei; - break; - } - } - if(gex == 0) - gex = gem->bkwd; - - /* A special case: ignore the spurious ends on small curves that - * either enclose an 1-pixel-wide extremum or are 1-pixel deep. - * Any 5-or-less-pixel-long curve with extremum 2 steps away - * qualifies for that. - */ - - if(len <= 5 && gex == ge->frwd->frwd) { - good = 0; -#if 0 - fprintf(stderr, " E"); -#endif - } else { - good = 1; /* assume that ge is not spurious */ - - /* gei goes backwards, gex goes forwards from the extremum */ - gei = gex; - /* i is the symmetry axis, j is the other axis (X=0 Y=1) */ - i = (gex->ix3 != gex->bkwd->ix3); - j = !i; - for( ; gei!=ge && gex!=gem; gei=gei->bkwd, gex=gex->frwd) { - if( gei->bkwd->ipoints[i][2] != gex->ipoints[i][2] - || gei->bkwd->ipoints[j][2] - gei->ipoints[j][2] - != gex->bkwd->ipoints[j][2] - gex->ipoints[j][2] - ) { - good = 0; /* no symmetry - must be spurious */ -#if 0 - fprintf(stderr, " M(%p,%p)(%d %d,%d)(%d %d,%d)", - gei, gex, - i, gei->bkwd->ipoints[i][2], gex->ipoints[i][2], - j, gei->bkwd->ipoints[j][2] - gei->ipoints[j][2], - gex->bkwd->ipoints[j][2] - gex->ipoints[j][2] ); -#endif - break; - } - } - if(gex == gem) { /* oops, the other side is too short */ - good = 0; -#if 0 - fprintf(stderr, " X"); -#endif - } - if(good && gei == ge) { - if( isign(gei->bkwd->ipoints[j][2] - gei->ipoints[j][2]) - != isign(gex->bkwd->ipoints[j][2] - gex->ipoints[j][2]) ) { - good = 0; /* oops, goes into another direction */ -#if 0 - fprintf(stderr, " D"); -#endif - } - } - } - if(!good) { /* it is spurious, drop it */ -#if 0 - fprintf(stderr, " %p: %s spurious start\n", ge, gxf_name[d]); -#endif - f->len[d] = 0; - ges = ge->frwd; - len--; - X_FRAG(ges)->len[d] = len; - } - } - - gei = gem->bkwd->bkwd->bkwd; - if( (gem->ix3 != gem->bkwd->ix3) /* gem->bkwd is vert */ - ^ (isign(gem->bkwd->ix3 - gei->ix3)==isign(gem->bkwd->iy3 - gei->iy3)) - ^ (d == GEXFI_CONVEX) /* clockwise */ ) { - -#if 0 - fprintf(stderr, " %p: %s potential spurious end\n", gem->bkwd, gxf_name[d]); -#endif - /* the end may be a spurious entry */ - - gex = 0; /* the extremum closest to the end - to be found */ - for(gei = gem->bkwd->bkwd; gei != ges->bkwd; gei = gei->bkwd) { - if(X_FRAG(gei)->flags & GEXFF_EXTR) { - gex = gei; - break; - } - } - if(gex == 0) - gex = ges; - - good = 1; /* assume that gem->bkwd is not spurious */ - /* gei goes backwards, gex goes forwards from the extremum */ - gei = gex; - /* i is the symmetry axis, j is the other axis (X=0 Y=1) */ - i = (gex->ix3 != gex->bkwd->ix3); - j = !i; - for( ; gei!=ges->bkwd && gex!=gem->bkwd; gei=gei->bkwd, gex=gex->frwd) { - if( gei->bkwd->ipoints[i][2] != gex->ipoints[i][2] - || gei->bkwd->ipoints[j][2] - gei->ipoints[j][2] - != gex->bkwd->ipoints[j][2] - gex->ipoints[j][2] - ) { - good = 0; /* no symmetry - must be spurious */ -#if 0 - fprintf(stderr, " M(%p,%p)(%d %d,%d)(%d %d,%d)", - gei, gex, - i, gei->bkwd->ipoints[i][2], gex->ipoints[i][2], - j, gei->bkwd->ipoints[j][2] - gei->ipoints[j][2], - gex->bkwd->ipoints[j][2] - gex->ipoints[j][2] ); -#endif - break; - } - } - if(gei == ges->bkwd) { /* oops, the other side is too short */ - good = 0; -#if 0 - fprintf(stderr, " X"); -#endif - } - if(good && gex == gem->bkwd) { - if( isign(gei->bkwd->ipoints[j][2] - gei->ipoints[j][2]) - != isign(gex->bkwd->ipoints[j][2] - gex->ipoints[j][2]) ) { - good = 0; /* oops, goes into another direction */ -#if 0 - fprintf(stderr, " D"); -#endif - } - } - if(!good) { /* it is spurious, drop it */ -#if 0 - fprintf(stderr, " %p: %s spurious end\n", gem->bkwd, gxf_name[d]); -#endif - X_FRAG(ges)->len[d] = --len; - } - } - if(len < 4) { - X_FRAG(ges)->len[d] = 0; -#if 0 - fprintf(stderr, " %p: %s frag discarded, too small now\n", ge, gxf_name[d]); -#endif - } - if(ges != ge) { - if(ges == cge->next) - break; /* went around the loop */ - else { - ge = ges->frwd; /* don't look at this fragment twice */ - continue; - } - } - } - - ge = ge->frwd; - } while(ge != cge->next); - } - - /* Find the straight line fragments. - * Even though the lines are sloped, they are called - * "vertical" or "horizontal" according to their longer - * dimension. All the steps in the shother dimension must - * be 1 pixel long, all the steps in the longer dimension - * must be within the difference of 1 pixel. - */ - for(d = GEXFI_LINE; d<= GEXFI_EXACTLINE; d++) { - ge = cge->next; - pge = ge->bkwd; /* the beginning of the fragment */ - count = 1; - delaystop = 0; - do { - int h; - - stepmore = 0; - hdir = isign(ge->ix3 - ge->bkwd->ix3); - vdir = isign(ge->iy3 - ge->bkwd->iy3); - vert = (hdir == 0); - if(count==1) { - /* at this point pge==ge->bkwd */ - /* account for the previous gentry, which was !vert */ - if(!vert) { /* prev was vertical */ - maxlen[0] = minlen[0] = 0; - maxlen[1] = minlen[1] = abs(pge->iy3 - pge->bkwd->iy3); - line[0] = (maxlen[1] == 1); - line[1] = 1; - fullhdir = hdir; - fullvdir = isign(pge->iy3 - pge->bkwd->iy3); - } else { - maxlen[0] = minlen[0] = abs(pge->ix3 - pge->bkwd->ix3); - maxlen[1] = minlen[1] = 0; - line[0] = 1; - line[1] = (maxlen[0] == 1); - fullhdir = isign(pge->ix3 - pge->bkwd->ix3); - fullvdir = vdir; - } - } - h = line[0]; /* remember the prevalent direction */ -#if 0 - fprintf(stderr, " %p: v=%d(%d) h=%d(%d) vl(%d,%d,%d) hl=(%d,%d,%d) %s count=%d ", - ge, vdir, fullvdir, hdir, fullhdir, - line[1], minlen[1], maxlen[1], - line[0], minlen[0], maxlen[0], - gxf_name[d], count); -#endif - if(vert) { - if(vdir != fullvdir) - line[0] = line[1] = 0; - len = abs(ge->iy3 - ge->bkwd->iy3); - } else { - if(hdir != fullhdir) - line[0] = line[1] = 0; - len = abs(ge->ix3 - ge->bkwd->ix3); - } -#if 0 - fprintf(stderr, "len=%d\n", len); -#endif - if(len != 1) /* this is not a continuation in the short dimension */ - line[!vert] = 0; - - /* can it be a continuation in the long dimension ? */ - if( line[vert] ) { - if(maxlen[vert]==0) - maxlen[vert] = minlen[vert] = len; - else if(maxlen[vert]==minlen[vert]) { - if(d == GEXFI_EXACTLINE) { - if(len != maxlen[vert]) - line[vert] = 0; /* it can't */ - } else if(len < maxlen[vert]) { - if(len < minlen[vert]-1) - line[vert] = 0; /* it can't */ - else - minlen[vert] = len; - } else { - if(len > maxlen[vert]+1) - line[vert] = 0; /* it can't */ - else - maxlen[vert] = len; - } - } else if(len < minlen[vert] || len > maxlen[vert]) - line[vert] = 0; /* it can't */ - } - - if(line[0] == 0 && line[1] == 0) { -#if 0 - if(count >= 3) - fprintf(stderr, " %s frag %p-%p count=%d\n", gxf_name[d], pge, ge->bkwd, count); -#endif - X_FRAG(pge)->len[d] = count; - if(d == GEXFI_EXACTLINE && h) { - X_FRAG(pge)->flags |= GEXFF_HLINE; - } - if(count == 1) - pge = ge; - else { - stepmore = 1; /* may reconsider the 1st gentry */ - pge = ge = ge->bkwd; - count = 1; - } - } else - count++; - - ge = ge->frwd; - if(ge == cge->next && !stepmore) - delaystop = 1; /* consider the first gentry again */ - } while(stepmore || ge != cge->next ^ delaystop); - /* see if there is an unfinished line left */ - if(count != 1) { -#if 0 - if(count >= 3) - fprintf(stderr, " %s frag %p-%p count=%d\n", gxf_name[d], pge, ge->bkwd, count); -#endif - X_FRAG(ge->bkwd->bkwd)->len[d] = 0; - X_FRAG(pge)->len[d] = count; - } - } - - /* do postprocessing of the lines */ -#if 0 - fprintf(stderr, "Line postprocessing\n"); - gex_dump_contour(cge->next, clen); -#endif - - /* the non-exact line frags are related to exact line frags sort - * of like to individual gentries: two kinds of exact frags - * must be interleaved, with one kind having the size of 3 - * and the other kind having the size varying within +-2. - */ - - ge = cge->next; - do { - GEX_FRAG *pf, *lastf1, *lastf2; - int len1, len2, fraglen; - - f = X_FRAG(ge); - - fraglen = f->len[GEXFI_LINE]; - if(fraglen >= 4) { - - vert = 0; /* vert is a pseudo-directon */ - line[0] = line[1] = 1; - maxlen[0] = minlen[0] = maxlen[1] = minlen[1] = 0; - lastf2 = lastf1 = f; - len2 = len1 = 0; - for(pge = ge, i = 1; i < fraglen; i++, pge=pge->frwd) { - pf = X_FRAG(pge); - len = pf->len[GEXFI_EXACTLINE]; -#if 0 - fprintf(stderr, " pge=%p i=%d of %d ge=%p exLen=%d\n", pge, i, - f->len[GEXFI_LINE], ge, len); -#endif - len1++; len2++; - if(len==0) { - continue; - } - vert = !vert; /* alternate the pseudo-direction */ - if(len > 3) - line[!vert] = 0; - if(maxlen[vert] == 0) - maxlen[vert] = minlen[vert] = len; - else if(maxlen[vert]-2 >= len && minlen[vert]+2 <= len) { - if(len > maxlen[vert]) - maxlen[vert] = len; - else if(len < minlen[vert]) - minlen[vert] = len; - } else - line[vert] = 0; - if(line[0] == 0 && line[1] == 0) { -#if 0 - fprintf(stderr, " Line breaks at %p %c(%d, %d) %c(%d, %d) len=%d fl=%d l2=%d l1=%d\n", - pge, (!vert)?'*':' ', minlen[0], maxlen[0], - vert?'*':' ', minlen[1], maxlen[1], len, fraglen, len2, len1); -#endif - if(lastf2 != lastf1) { - lastf2->len[GEXFI_LINE] = len2-len1; - } - lastf1->len[GEXFI_LINE] = len1+1; - pf->len[GEXFI_LINE] = fraglen+1 - i; -#if 0 - gex_dump_contour(pge, clen); -#endif - - /* continue with the line */ - vert = 0; /* vert is a pseudo-directon */ - line[0] = line[1] = 1; - maxlen[0] = minlen[0] = maxlen[1] = minlen[1] = 0; - lastf2 = lastf1 = f; - len2 = len1 = 0; - } else { - lastf1 = pf; - len1 = 0; - } - } - } - - ge = ge->frwd; - } while(ge != cge->next); -#if 0 - fprintf(stderr, "Line postprocessing part 2\n"); - gex_dump_contour(cge->next, clen); -#endif - - ge = cge->next; - do { - f = X_FRAG(ge); - - if(f->len[GEXFI_LINE] >= 4) { - len = f->len[GEXFI_EXACTLINE]; - /* if a non-exact line covers precisely two exact lines, - * split it - */ - if(len > 0 && f->len[GEXFI_LINE] >= len+1) { - GEX_FRAG *pf; - pge = age[(f->aidx + len - 1)%clen]; /* last gentry of exact line */ - pf = X_FRAG(pge); - if(f->len[GEXFI_LINE] + 1 == len + pf->len[GEXFI_EXACTLINE]) { - f->len[GEXFI_LINE] = len; - f->flags |= GEXFF_SPLIT; - pf->len[GEXFI_LINE] = pf->len[GEXFI_EXACTLINE]; - pf->flags |= GEXFF_SPLIT; - } - } - } - - ge = ge->frwd; - } while(ge != cge->next); -#if 0 - fprintf(stderr, "Line postprocessing part 2a\n"); - gex_dump_contour(cge->next, clen); -#endif - ge = cge->next; - do { - f = X_FRAG(ge); - - /* too small lines are of no interest */ - if( (f->flags & GEXFF_SPLIT)==0 && f->len[GEXFI_LINE] < 4) - f->len[GEXFI_LINE] = 0; - - len = f->len[GEXFI_EXACTLINE]; - /* too small exact lines are of no interest */ - if(len < 3) /* exact lines may be shorter */ - f->len[GEXFI_EXACTLINE] = 0; - /* get rid of inexact additions to the end of the exact lines */ - else if(f->len[GEXFI_LINE] == len+1) - f->len[GEXFI_LINE] = len; - /* same at the beginning */ - else { - int diff = X_FRAG(ge->bkwd)->len[GEXFI_LINE] - len; - - if(diff == 1 || diff == 2) { - X_FRAG(ge->bkwd)->len[GEXFI_LINE] = 0; - f->len[GEXFI_LINE] = len; - } - } - - ge = ge->frwd; - } while(ge != cge->next); -#if 0 - fprintf(stderr, "Line postprocessing is completed\n"); - gex_dump_contour(cge->next, clen); -#endif - - gex_calc_lenback(cge->next, clen); /* prepare data */ - - /* resolve conflicts between lines and curves */ - - /* - * the short (3-gentry) curve frags must have one of the ends - * coinciding with another curve frag of the same type - */ - - for(d = GEXFI_CONVEX; d<= GEXFI_CONCAVE; d++) { - ge = cge->next; - do { - f = X_FRAG(ge); - - if(f->len[d] == 3) { - pge = age[(f->aidx + 2)%clen]; /* last gentry of this frag */ - if(f->lenback[d] == 0 && X_FRAG(pge)->len[d] == 0) { - fprintf(stderr, " discarded small %s at %p-%p\n", gxf_name[d], ge, pge); - f->len[d] = 0; - X_FRAG(ge->frwd)->lenback[d] = 0; - X_FRAG(ge->frwd->frwd)->lenback[d] = 0; - } - } - ge = ge->frwd; - } while(ge != cge->next); - } - - /* the serifs take priority over everything else */ - ge = cge->next; - do { - f = X_FRAG(ge); - - len = f->len[GEXFI_SERIF]; - if(len == 0) - continue; - - if(len != 2) { /* this is used in the code below */ - fprintf(stderr, "Internal error at %s line %d: serif frags len is %d\n", - __FILE__, __LINE__, len); - exit(1); - } - - for(d = 0; d < GEXFI_SERIF; d++) { - /* serifs may not have common ends with the other fragments, - * this is expressed as extending them by 1 gentry on each side - */ - frag_subtract(g, age, clen, ge->bkwd, len+2, d); - } - } while( (ge = ge->frwd) != cge->next); - - /* - * longer exact lines take priority over curves; shorter lines - * and inexact lines are resolved with convex/concave conflicts - */ - ge = cge->next; - do { - f = X_FRAG(ge); - - len = f->len[GEXFI_EXACTLINE]; - - if(len < 6) { /* line is short */ - ge = ge->frwd; - continue; - } - - fprintf(stderr, " line at %p len=%d\n", ge, f->len[GEXFI_EXACTLINE]); - for(d = GEXFI_CONVEX; d<= GEXFI_CONCAVE; d++) { - frag_subtract(g, age, clen, ge, len, d); - } - - ge = ge->frwd; - } while(ge != cge->next); - - /* - * The exact lines take priority over curves that coincide - * with them or extend by only one gentry on either side - * (but not both sides). By this time it applies only to the - * small exact lines. - * - * An interesting general case is when a curve matches more - * than one exact line going diamond-like. - */ - - ge = cge->next; - do { - int done, len2; - int sharpness; - GEX_FRAG *pf; - - f = X_FRAG(ge); - - /* "sharpness" shows how a group of exact line frags is connected: if the gentries - * of some of them overlap, the curve matching requirement is loosened: it may - * extend up to 1 gentry beyond each end of the group of exact line frags - * (sharpness=2); otherwise it may extend to only one end (sharpness=1) - */ - sharpness = 1; - - len = f->len[GEXFI_EXACTLINE]; - if(len >= 4) { - while(len < clen) { - done = 0; - pf = X_FRAG(ge->bkwd); - for(d = GEXFI_CONVEX; d<= GEXFI_CONCAVE; d++) { - if(f->len[d] == len || f->len[d] == len+1) { - - fprintf(stderr, " removed %s frag at %p len=%d linelen=%d\n", - gxf_name[d], ge, f->len[d], len); - pge = ge->frwd; - for(i = f->len[d]; i > 1; i--, pge = pge->frwd) - X_FRAG(pge)->lenback[d] = 0; - f->len[d] = 0; - gex_dump_contour(ge, clen); - done = 1; - } else if(pf->len[d] == len+1 || pf->len[d] == len+sharpness) { - fprintf(stderr, " removed %s frag at %p len=%d next linelen=%d\n", - gxf_name[d], ge->bkwd, pf->len[d], len); - pge = ge; - for(i = pf->len[d]; i > 1; i--, pge = pge->frwd) - X_FRAG(pge)->lenback[d] = 0; - pf->len[d] = 0; - gex_dump_contour(ge, clen); - done = 1; - } - } - if(done) - break; - - /* is there any chance to match a sequence of exect lines ? */ - if(f->len[GEXFI_CONVEX] < len && f->len[GEXFI_CONCAVE] < len - && pf->len[GEXFI_CONVEX] < len && pf->len[GEXFI_CONCAVE] < len) - break; - - done = 1; - /* check whether the line is connected to another exact line at an extremum */ - pge = age[(f->aidx + len - 1)%clen]; /* last gentry of exact line */ - len2 = X_FRAG(pge)->len[GEXFI_EXACTLINE]; - if(len2 > 0) { - if( len2 >= 4 && (X_FRAG(pge)->flags & GEXFF_EXTR) ) { - len += len2 - 1; - sharpness = 2; - done = 0; - } - } else { - /* see if the extremum is between two exact lines */ - pge = pge->frwd; - if(X_FRAG(pge)->flags & GEXFF_EXTR) { - pge = pge->frwd; - len2 = X_FRAG(pge)->len[GEXFI_EXACTLINE]; - if(len2 >= 4) { - len += len2 + 1; - done = 0; - } - } - } - if(done) - break; - } - } - - ge = ge->frwd; - } while(ge != cge->next); - - /* - * The lines may cover only whole curves (or otherwise empty space), - * so cut them where they overlap parts of the curves. If 2 or less - * gentries are left in the line, remove the line. - * If a line and a curve fully coincide, remove the line. Otherwise - * remove the curves that are completely covered by the lines. - */ - - ge = cge->next; - do { - f = X_FRAG(ge); - - reconsider_line: - len = f->len[GEXFI_LINE]; - - if(len == 0) { - ge = ge->frwd; - continue; - } - - if(f->len[GEXFI_CONVEX] >= len - || f->len[GEXFI_CONCAVE] >= len) { - line_completely_covered: - fprintf(stderr, " removed covered Line frag at %p len=%d\n", - ge, len); - f->len[GEXFI_LINE] = 0; - for(pge = ge->frwd; len > 1; len--, pge = pge->frwd) - X_FRAG(pge)->lenback[GEXFI_LINE] = 0; - gex_dump_contour(ge, clen); - ge = ge->frwd; - continue; - } - - k1 = 0; /* how much to cut at the front */ - for(d = GEXFI_CONVEX; d<= GEXFI_CONCAVE; d++) { - if(f->lenback[d]) { - pge = age[(f->aidx + clen - f->lenback[d])%clen]; - i = X_FRAG(pge)->len[d] - f->lenback[d] - 1; - if(i > k1) - k1 = i; - } - } - - k2 = 0; /* how much to cut at the end */ - pge = age[(f->aidx + len)%clen]; /* gentry after the end */ - for(d = GEXFI_CONVEX; d<= GEXFI_CONCAVE; d++) { - i = X_FRAG(pge)->lenback[d] - 1; - if(i > k2) - k2 = i; - } - - if(k1+k2 > 0 && k1+k2 >= len-3) { - fprintf(stderr, " k1=%d k2=%d\n", k1, k2); - goto line_completely_covered; - } - - - if(k2 != 0) { /* cut the end */ - len -= k2; - f->len[GEXFI_LINE] = len; - /* pge still points after the end */ - for(i = k2, pge = pge->bkwd; i > 0; i--, pge = pge->bkwd) - X_FRAG(pge)->lenback[GEXFI_LINE] = 0; - } - if(k1 != 0) { /* cut the beginning */ - len -= k1; - f->len[GEXFI_LINE] = 0; - for(i = 1, pge = ge->frwd; i < k1; i++, pge = pge->frwd) - X_FRAG(pge)->lenback[GEXFI_LINE] = 0; - X_FRAG(pge)->len[GEXFI_LINE] = len; - for(i = 0; i < len; i++, pge = pge->frwd) - X_FRAG(pge)->lenback[GEXFI_LINE] = i; - } - if(k1 != 0 || k2 != 0) { - fprintf(stderr, " cut Line frag at %p by (%d,%d) to len=%d\n", - ge, k1, k2, len); - gex_dump_contour(ge, clen); - - goto reconsider_line; /* the line may have to be cut again */ - } - pge = age[(f->aidx + k1)%clen]; /* new beginning */ - good = 1; /* flag: no need do do a debugging dump */ - for(i=1; i<len; i++, pge = pge->frwd) - for(d = GEXFI_CONVEX; d<= GEXFI_CONCAVE; d++) { - if(X_FRAG(pge)->len[d]) { - fprintf(stderr, " removed %s frag at %p len=%d covered by line\n", - gxf_name[d], pge, X_FRAG(pge)->len[d], len); - good = 0; - } - X_FRAG(pge)->len[d] = 0; - } - pge = age[(f->aidx + k1 + 1)%clen]; /* next after new beginning */ - for(i=1; i<len; i++, pge = pge->frwd) - for(d = GEXFI_CONVEX; d<= GEXFI_CONCAVE; d++) - X_FRAG(pge)->lenback[d] = 0; - if(!good) - gex_dump_contour(ge, clen); - - ge = ge->frwd; - } while(ge != cge->next); - - /* Resolve conflicts between curves */ - for(d = GEXFI_CONVEX; d<= GEXFI_CONCAVE; d++) { - dx = (GEXFI_CONVEX + GEXFI_CONCAVE) - d; /* the other type */ - ge = cge->next; - do { - GENTRY *sge; - - f = X_FRAG(ge); - len = f->len[d]; - if(len < 2) { - ge = ge->frwd; - continue; - } - sge = ge; /* the start of fragment */ - - i = f->len[dx]; - if(i != 0) { /* two curved frags starting here */ - /* should be i!=len because otherwise they would be - * covered by an exact line - */ - if(i > len) { - curve_completely_covered: - /* remove the convex frag */ - fprintf(stderr, " removed %s frag at %p len=%d covered by %s\n", - gxf_name[d], ge, len, gxf_name[dx]); - f->len[d] = 0; - for(pge = ge->frwd, j = 1; j < len; j++, pge = pge->frwd) - X_FRAG(pge)->lenback[d] = 0; - gex_dump_contour(ge, clen); - - ge = ge->frwd; /* the frag is gone, nothing more to do */ - continue; - } else { - /* remove the concave frag */ - fprintf(stderr, " removed %s frag at %p len=%d covered by %s\n", - gxf_name[dx], ge, i, gxf_name[d]); - f->len[dx] = 0; - for(pge = ge->frwd, j = 1; j < i; j++, pge = pge->frwd) - X_FRAG(pge)->lenback[dx] = 0; - gex_dump_contour(ge, clen); - } - } - - - k1 = X_FRAG(ge->frwd)->lenback[dx]; - if(k1 != 0) { /* conflict at the front */ - GENTRY *gels, *gele, *gei; - - pge = age[(f->aidx + clen - (k1-1))%clen]; /* first gentry of concave frag */ - k2 = X_FRAG(pge)->len[dx]; /* its length */ - - i = k2 - (k1-1); /* amount of overlap */ - if(i > len) - i = len; - /* i >= 2 by definition */ - if(i >= k2-1) { /* covers the other frag - maybe with 1 gentry showing */ - fprintf(stderr, " removed %s frag at %p len=%d covered by %s\n", - gxf_name[dx], pge, k2, gxf_name[d]); - X_FRAG(pge)->len[dx] = 0; - for(pge = pge->frwd, j = 1; j < k2; j++, pge = pge->frwd) - X_FRAG(pge)->lenback[dx] = 0; - if(i >= len-1) { /* covers our frag too - maybe with 1 gentry showing */ - /* our frag will be removed as well, prepare a line to replace it */ - gels = ge; - gele = age[(f->aidx + i - 1)%clen]; - fprintf(stderr, " new Line frag at %p-%p len=%d\n", gels, gele, i); - X_FRAG(gels)->len[GEXFI_LINE] = i; - for(gei = gels->frwd, j = 1; j < i; gei = gei->frwd, j++) - X_FRAG(gei)->lenback[GEXFI_LINE] = j; - } else { - gex_dump_contour(ge, clen); - ge = ge->frwd; - continue; - } - } - if(i >= len-1) /* covers our frag - maybe with 1 gentry showing */ - goto curve_completely_covered; - - /* XXX need to do something better for the case when a curve frag - * is actually nothing but an artifact of two other curves of - * the opposite type touching each other, like on the back of "3" - */ - - /* change the overlapping part to a line */ - gels = ge; - gele = age[(f->aidx + i - 1)%clen]; - /* give preference to local extremums */ - if(X_FRAG(gels)->flags & GEXFF_EXTR) { - gels = gels->frwd; - i--; - } - if(X_FRAG(gele)->flags & GEXFF_EXTR) { - gele = gele->bkwd; - i--; - } - if(gels->bkwd == gele) { - /* Oops the line became negative. Probably should - * never happen but I can't think of any formal reasoning - * leading to that, so check just in case. Restore - * the previous state. - */ - gels = gele; gele = gels->frwd; i = 2; - } - - j = X_FRAG(gels)->lenback[dx] + 1; /* new length */ - if(j != k2) { - X_FRAG(pge)->len[dx] = j; - fprintf(stderr, " cut %s frag at %p len=%d to %p len=%d end overlap with %s\n", - gxf_name[dx], pge, k2, gels, j, gxf_name[d]); - for(gei = gels->frwd; j < k2; gei = gei->frwd, j++) - X_FRAG(gei)->lenback[dx] = 0; - } - - if(gele != ge) { - sge = gele; - f->len[d] = 0; - fprintf(stderr, " cut %s frag at %p len=%d ", gxf_name[d], ge, len); - len--; - for(gei = ge->frwd; gei != gele; gei = gei->frwd, len--) - X_FRAG(gei)->lenback[d] = 0; - X_FRAG(gele)->len[d] = len; - X_FRAG(gele)->lenback[d] = 0; - fprintf(stderr, "to %p len=%d start overlap with %s\n", - sge, len, gxf_name[dx]); - for(gei = gei->frwd, j = 1; j < len; gei = gei->frwd, j++) - X_FRAG(gei)->lenback[d] = j; - - } - if(i > 1) { - fprintf(stderr, " new Line frag at %p-%p len=%d\n", gels, gele, i); - X_FRAG(gels)->len[GEXFI_LINE] = i; - for(gei = gels->frwd, j = 1; j < i; gei = gei->frwd, j++) - X_FRAG(gei)->lenback[GEXFI_LINE] = j; - } - gex_dump_contour(ge, clen); - } - - ge = ge->frwd; - } while(ge != cge->next); - } - - /* - * Assert that there are no conflicts any more and - * for each gentry find the fragment types that start - * and continue here. - */ - ge = cge->next; - do { - f = X_FRAG(ge); - dx = GEXFI_NONE; /* type that starts here */ - dy = GEXFI_NONE; /* type that goes through here */ - /* GEXFI_EXACTLINE and GEXFI_SERIF are auxiliary and don't - * generate any actual lines/curves in the result - */ - for(d = GEXFI_CONVEX; d<= GEXFI_LINE; d++) { - if(f->len[d]) { - if(dx >= 0) { - fprintf(stderr, "**** Internal error in vectorization\n"); - fprintf(stderr, "CONFLICT in %s at %p between %s and %s\n", - g->name, ge, gxf_name[dx], gxf_name[d]); - dumppaths(g, cge->next, cge->next->bkwd); - gex_dump_contour(ge, clen); - exit(1); - } - dx = d; - } - if(f->lenback[d]) { - if(dy >= 0) { - fprintf(stderr, "**** Internal error in vectorization\n"); - fprintf(stderr, "CONFLICT in %s at %p between %s and %s\n", - g->name, ge, gxf_name[dy], gxf_name[d]); - dumppaths(g, cge->next, cge->next->bkwd); - gex_dump_contour(ge, clen); - exit(1); - } - dy = d; - } - } - f->ixstart = dx; - f->ixcont = dy; - ge = ge->frwd; - } while(ge != cge->next); - - /* - * make sure that the contour does not start in the - * middle of a fragment - */ - ge = cge->next; /* old start of the contour */ - f = X_FRAG(ge); - if(f->ixstart == GEXFI_NONE && f->ixcont != GEXFI_NONE) { - /* oops, it's mid-fragment, move the start */ - GENTRY *xge; - - xge = ge->bkwd->next; /* entry following the contour */ - - /* find the first gentry of this frag */ - pge = age[(f->aidx + clen - f->lenback[f->ixcont])%clen]; - - ge->prev = ge->bkwd; - ge->bkwd->next = ge; - - cge->next = pge; - pge->prev = cge; - - pge->bkwd->next = xge; - if(xge) - xge->prev = pge->bkwd; - - cge->ix3 = pge->bkwd->ix3; cge->iy3 = pge->bkwd->iy3; - } - - /* vectorize each fragment separately - * make 2 passes: first handle the straight lines, then - * the curves to allow the curver to be connected smoothly - * to the straights - */ - ge = cge->next; - do { /* pass 1 */ - f = X_FRAG(ge); - switch(f->ixstart) { - case GEXFI_LINE: - len = f->len[GEXFI_LINE]; - pge = age[(f->aidx + len - 1)%clen]; /* last gentry */ - - if(ge->iy3 == ge->bkwd->iy3) { /* frag starts and ends horizontally */ - k1 = 1/*Y*/ ; /* across the direction of start */ - k2 = 0/*X*/ ; /* along the direction of start */ - } else { /* frag starts and ends vertically */ - k1 = 0/*X*/ ; /* across the direction of start */ - k2 = 1/*Y*/ ; /* along the direction of start */ - } - - if(len % 2) { - /* odd number of entries in the frag */ - double halfstep, halfend; - - f->vect[0][k1] = fscale * ge->ipoints[k1][2]; - f->vect[3][k1] = fscale * pge->ipoints[k1][2]; - - halfstep = (pge->ipoints[k2][2] - ge->bkwd->ipoints[k2][2]) - * 0.5 / ((len+1)/2); - if(f->ixcont != GEXFI_NONE) { - halfend = (ge->ipoints[k2][2] - ge->bkwd->ipoints[k2][2]) * 0.5; - if(fabs(halfstep) < fabs(halfend)) /* must be at least half gentry away */ - halfstep = halfend; - } - if(X_FRAG(pge)->ixstart != GEXFI_NONE) { - halfend = (pge->ipoints[k2][2] - pge->bkwd->ipoints[k2][2]) * 0.5; - if(fabs(halfstep) < fabs(halfend)) /* must be at least half gentry away */ - halfstep = halfend; - } - f->vect[0][k2] = fscale * (ge->bkwd->ipoints[k2][2] + halfstep); - f->vect[3][k2] = fscale * (pge->ipoints[k2][2] - halfstep); - } else { - /* even number of entries */ - double halfstep, halfend; - - f->vect[0][k1] = fscale * ge->ipoints[k1][2]; - halfstep = (pge->ipoints[k2][2] - ge->bkwd->ipoints[k2][2]) - * 0.5 / (len/2); - if(f->ixcont != GEXFI_NONE) { - halfend = (ge->ipoints[k2][2] - ge->bkwd->ipoints[k2][2]) * 0.5; - if(fabs(halfstep) < fabs(halfend)) /* must be at least half gentry away */ - halfstep = halfend; - } - f->vect[0][k2] = fscale * (ge->bkwd->ipoints[k2][2] + halfstep); - - halfstep = (pge->ipoints[k1][2] - ge->bkwd->ipoints[k1][2]) - * 0.5 / (len/2); - if(X_FRAG(pge)->ixstart != GEXFI_NONE) { - halfend = (pge->ipoints[k1][2] - pge->bkwd->ipoints[k1][2]) * 0.5; - if(fabs(halfstep) < fabs(halfend)) /* must be at least half gentry away */ - halfstep = halfend; - } - f->vect[3][k1] = fscale * (pge->ipoints[k1][2] - halfstep); - f->vect[3][k2] = fscale * pge->ipoints[k2][2]; - } - f->vectlen = len; - f->flags |= GEXFF_DRAWLINE; - break; - } - } while((ge = ge->frwd) != cge->next); - - ge = cge->next; - do { /* pass 2 */ - /* data for curves */ - GENTRY *firstge, *lastge, *gef, *gel, *gei, *gex; - GENTRY *ordhd; /* head of the order list */ - GENTRY **ordlast; - int nsub; /* number of subfrags */ - GEX_FRAG *ff, *lf, *xf; - - f = X_FRAG(ge); - switch(f->ixstart) { - case GEXFI_CONVEX: - case GEXFI_CONCAVE: - len = f->len[f->ixstart]; - firstge = ge; - lastge = age[(f->aidx + len - 1)%clen]; /* last gentry */ - - nsub = 0; - gex = firstge; - xf = X_FRAG(gex); - xf->prevsub = 0; - xf->sublen = 1; - xf->flags &= ~GEXFF_DONE; - for(gei = firstge->frwd; gei != lastge; gei = gei->frwd) { - xf->sublen++; - if(X_FRAG(gei)->flags & GEXFF_EXTR) { - xf->nextsub = gei; - for(i=0; i<2; i++) - xf->bbox[i] = abs(gei->ipoints[i][2] - gex->bkwd->ipoints[i][2]); - nsub++; - xf = X_FRAG(gei); - xf->prevsub = gex; - xf->sublen = 1; - xf->flags &= ~GEXFF_DONE; - gex = gei; - } - } - xf->sublen++; - xf->nextsub = gei; - for(i=0; i<2; i++) - xf->bbox[i] = abs(gei->ipoints[i][2] - gex->bkwd->ipoints[i][2]); - nsub++; - ff = xf; /* remember the beginning of the last subfrag */ - xf = X_FRAG(gei); - xf->prevsub = gex; - if(firstge != lastge) { - xf->nextsub = 0; - xf->sublen = 0; - - /* correct the bounding box of the last and first subfrags for - * intersections with other fragments - */ - if(xf->ixstart != GEXFI_NONE) { - /* ff points to the beginning of the last subfrag */ - for(i=0; i<2; i++) - ff->bbox[i] -= 0.5 * abs(lastge->ipoints[i][2] - lastge->bkwd->ipoints[i][2]); - } - ff = X_FRAG(firstge); - if(ff->ixcont != GEXFI_NONE) { - for(i=0; i<2; i++) - ff->bbox[i] -= 0.5 * abs(firstge->ipoints[i][2] - firstge->bkwd->ipoints[i][2]); - } - } - - fprintf(stderr, " %s frag %p%s nsub=%d\n", gxf_name[f->ixstart], - ge, (f->flags&GEXFF_CIRC)?" circular":"", nsub); - - /* find the symmetry between the subfragments */ - for(gef = firstge, count=0; count < nsub; gef = ff->nextsub, count++) { - ff = X_FRAG(gef); - gex = ff->nextsub; - xf = X_FRAG(gex); - gel = xf->nextsub; - if(gel == 0) { - ff->flags &= ~GEXFF_SYMNEXT; - break; /* not a circular frag */ - } - good = 1; /* assume that we have symmetry */ - /* gei goes backwards, gex goes forwards from the extremum */ - gei = gex; - /* i is the symmetry axis, j is the other axis (X=0 Y=1) */ - ff->symaxis = i = (gex->ix3 != gex->bkwd->ix3); - j = !i; - for( ; gei!=gef && gex!=gel; gei=gei->bkwd, gex=gex->frwd) { - if( gei->bkwd->ipoints[i][2] != gex->ipoints[i][2] - || gei->bkwd->ipoints[j][2] - gei->ipoints[j][2] - != gex->bkwd->ipoints[j][2] - gex->ipoints[j][2] - ) { - good = 0; /* no symmetry */ - break; - } - } - if(good) { - if( isign(gei->bkwd->ipoints[j][2] - gei->ipoints[j][2]) - != isign(gex->bkwd->ipoints[j][2] - gex->ipoints[j][2]) ) { - good = 0; /* oops, goes into another direction */ - } - } - if(good) - ff->flags |= GEXFF_SYMNEXT; - else - ff->flags &= ~GEXFF_SYMNEXT; - } - - for(gef = firstge, count=0; count < nsub; gef = ff->nextsub, count++) { - ff = X_FRAG(gef); - if((ff->flags & GEXFF_SYMNEXT)==0) { - ff->symxlen = 0; - continue; - } - gex = ff->prevsub; - if(gex == 0 || (X_FRAG(gex)->flags & GEXFF_SYMNEXT)==0) { - ff->symxlen = 0; - continue; - } - ff->symxlen = X_FRAG(gex)->sublen; - xf = X_FRAG(ff->nextsub); - if(xf->sublen < ff->symxlen) - ff->symxlen = xf->sublen; - } - - /* find the symmetry inside the subfragments */ - for(gef = firstge, count=0; count < nsub; gef = ff->nextsub, count++) { - ff = X_FRAG(gef); - - if(ff->sublen % 2) { - /* we must have an even number of gentries for diagonal symmetry */ - ff->symge = 0; - continue; - } - - /* gei goes forwards from the front */ - gei = gef->frwd; - /* gex goes backwards from the back */ - gex = ff->nextsub->bkwd; - - /* i is the direction of gei, j is the direction of gex */ - i = (gei->iy3 != gei->bkwd->iy3); - j = !i; - for( ; gei->bkwd != gex; gei=gei->frwd, gex=gex->bkwd) { - if( abs(gei->bkwd->ipoints[i][2] - gei->ipoints[i][2]) - != abs(gex->bkwd->ipoints[j][2] - gex->ipoints[j][2]) ) - break; /* no symmetry */ - i = j; - j = !j; - } - if(gei->bkwd == gex) - ff->symge = gex; - else - ff->symge = 0; /* no symmetry */ - } - - /* find the order of calculation: - * prefer to start from long fragments that have the longest - * neighbours symmetric with them, with all being equal prefer - * the fragments that have smaller physical size - */ - ordhd = 0; - for(gef = firstge, count=0; count < nsub; gef = ff->nextsub, count++) { - ff = X_FRAG(gef); - - for(ordlast = &ordhd; *ordlast != 0; ordlast = &xf->ordersub) { - xf = X_FRAG(*ordlast); - if(ff->sublen > xf->sublen) - break; - if(ff->sublen < xf->sublen) - continue; - if(ff->symxlen > xf->symxlen) - break; - if(ff->symxlen < xf->symxlen) - continue; - if(ff->bbox[0] < xf->bbox[0] || ff->bbox[1] < xf->bbox[1]) - break; - } - - ff->ordersub = *ordlast; - *ordlast = gef; - } - - /* vectorize the subfragments */ - for(gef = ordhd; gef != 0; gef = ff->ordersub) { - - /* debugging stuff */ - ff = X_FRAG(gef); - fprintf(stderr, " %p-%p bbox[%g,%g] sym=%p %s len=%d xlen=%d\n", - gef, ff->nextsub, ff->bbox[0], ff->bbox[1], ff->symge, - (ff->flags & GEXFF_SYMNEXT) ? "symnext" : "", - ff->sublen, ff->symxlen); - - dosubfrag(g, f->ixstart, firstge, gef, fscale); - } - - break; - } - } while((ge = ge->frwd) != cge->next); - - free(age); - - } - - } - - /* all the fragments are found, extract the vectorization */ - pge = g->entries; - g->entries = g->lastentry = 0; - g->flags |= GF_FLOAT; - loopge = 0; - skip = 0; - - for(ge = pge; ge != 0; ge = ge->next) { - GEX_FRAG *f, *pf; - - switch(ge->type) { - case GE_LINE: - f = X_FRAG(ge); - if(skip == 0) { - if(f->flags & (GEXFF_DRAWLINE|GEXFF_DRAWCURVE)) { - /* draw a line to the start point */ - fg_rlineto(g, f->vect[0][0], f->vect[0][1]); - /* draw the fragment */ - if(f->flags & GEXFF_DRAWCURVE) - fg_rrcurveto(g, - f->vect[1][0], f->vect[1][1], - f->vect[2][0], f->vect[2][1], - f->vect[3][0], f->vect[3][1]); - else - fg_rlineto(g, f->vect[3][0], f->vect[3][1]); - skip = f->vectlen - 2; - } else { - fg_rlineto(g, fscale * ge->ix3, fscale * ge->iy3); - } - } else - skip--; - break; - case GE_MOVE: - fg_rmoveto(g, -1e6, -1e6); /* will be fixed by GE_PATH */ - skip = 0; - /* remember the reference to update it later */ - loopge = g->lastentry; - break; - case GE_PATH: - /* update the first MOVE of this contour */ - if(loopge) { - loopge->fx3 = g->lastentry->fx3; - loopge->fy3 = g->lastentry->fy3; - loopge = 0; - } - g_closepath(g); - break; - } - } - for(ge = pge; ge != 0; ge = cge) { - cge = ge->next; - free(ge->ext); - free(ge); - } - dumppaths(g, NULL, NULL); - - /* end of vectorization logic */ - } else { - /* convert the data to float */ - GENTRY *ge; - double x, y; - - for(ge = g->entries; ge != 0; ge = ge->next) { - ge->flags |= GEF_FLOAT; - if(ge->type != GE_MOVE && ge->type != GE_LINE) - continue; - - x = fscale * ge->ix3; - y = fscale * ge->iy3; - - ge->fx3 = x; - ge->fy3 = y; - } - g->flags |= GF_FLOAT; - } - - free(hlm); free(vlm); free(amp); -} - -#if 0 -/* print out the bitmap */ -printbmap(bmap, xsz, ysz, xoff, yoff) - char *bmap; - int xsz, ysz, xoff, yoff; -{ - int x, y; - - for(y=ysz-1; y>=0; y--) { - putchar( (y%10==0) ? y/10+'0' : ' ' ); - putchar( y%10+'0' ); - for(x=0; x<xsz; x++) - putchar( bmap[y*xsz+x] ? 'X' : '.' ); - if(-yoff==y) - putchar('_'); /* mark the baseline */ - putchar('\n'); - } - putchar(' '); putchar(' '); - for(x=0; x<xsz; x++) - putchar( x%10+'0' ); - putchar('\n'); putchar(' '); putchar(' '); - for(x=0; x<xsz; x++) - putchar( (x%10==0) ? x/10+'0' : ' ' ); - putchar('\n'); -} - -/* print out the limits of outlines */ -printlimits(hlm, vlm, amp, xsz, ysz) - char *hlm, *vlm, *amp; - int xsz, ysz; -{ - int x, y; - static char h_char[]={ ' ', '~', '^' }; - static char v_char[]={ ' ', '(', ')' }; - - for(y=ysz-1; y>=0; y--) { - for(x=0; x<xsz; x++) { - if(amp[y*xsz+x]) - putchar('!'); /* ambigouos point is always on a limit */ - else - putchar(v_char[ vlm[y*(xsz+1)+x] & (L_ON|L_OFF) ]); - putchar(h_char[ hlm[(y+1)*xsz+x] & (L_ON|L_OFF) ]); - } - putchar(v_char[ vlm[y*(xsz+1)+x] & (L_ON|L_OFF) ]); - putchar('\n'); - } - /* last line */ - for(x=0; x<xsz; x++) { - putchar(' '); - putchar(h_char[ hlm[x] & (L_ON|L_OFF) ]); - } - putchar(' '); - putchar('\n'); -} -#endif /* 0 */ diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/byteorder.h b/application/third_party/dompdf/lib/ttf2ufm/src/byteorder.h deleted file mode 100644 index c139817e..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/byteorder.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * see COPYRIGHT - */ - -/* This defines the macroes ntohs and ntohl, which convert short and long - ints from network order (used on 68000 chips, and in TrueType font - files) to whatever order your computer uses. #define _BIG_ENDIAN or not - to control which set of definitions apply. If you don't know, try both. If - you have a peculiar machine you're on your own. -*/ - -#if defined(_BIG_ENDIAN) -#define ntohl(x) (x) -#define ntohs(x) (x) -#else -#define ntohs(x) \ - ((USHORT)((((USHORT)(x) & 0x00ff) << 8) | \ - (((USHORT)(x) & 0xff00) >> 8))) -#define ntohl(x) \ - ((ULONG)((((ULONG)(x) & 0x000000ffU) << 24) | \ - (((ULONG)(x) & 0x0000ff00U) << 8) | \ - (((ULONG)(x) & 0x00ff0000U) >> 8) | \ - (((ULONG)(x) & 0xff000000U) >> 24))) -#endif diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/cygbuild.sh b/application/third_party/dompdf/lib/ttf2ufm/src/cygbuild.sh deleted file mode 100644 index 262c76d7..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/cygbuild.sh +++ /dev/null @@ -1,8 +0,0 @@ -: -# this file should be run from Cygnus BASH -# file to build ttf2pt1 with Cygnus GCC on Windows -# don't forget to copy CYGWIN1.DLL into C:\WINDOWS - -gcc -o ttf2pt1 -DWINDOWS ttf2pt1.c pt1.c t1asm.c ttf.c -lm -gcc -o t1asm -DWINDOWS -DSTANDALONE t1asm.c - diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/README b/application/third_party/dompdf/lib/ttf2ufm/src/encodings/README deleted file mode 100644 index cdcf6e4e..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/README +++ /dev/null @@ -1,47 +0,0 @@ -Sergey A. Babkin -<babkin@bellatlantic.net> or <sab123@hotmail.com> -(Do not edit this file, it is generated from README.html!!!) - -The Translation Tables ----------------------- - -These translation tables are used to translate the Type 1 fonts between -different encodings of the same language. - -The file names are supposed to have the suffix .tbl. Each file -describes one encoding, and all the tables for a given language -are stored in the same directory. - -The file format is quite simple: just a sequence of rows in -format - -<name> <decimal code> - -The names do not have to conform to any standard, just the same -glyph must have the same name in all the files for a given language. - -Not all the codes need to be described in the tables, the codes that -are not mentioned in the tables are left untranslated. So a file -of zero length may be used in case when no translation is neccessary. - -The translation changes only the encoding table of the font and does not -rename the glyphs in the font file. - -Examples --------- - -The directory `russian' contains the tables for some encodings of the -Russian language: KOI-8, IBM CP-866, IBM CP-1251 and just for fun -ISO-8859/5 (nobody uses it anyways). The tables describe both russian -letters and table graphics characters (except for CP-1251 for which -the table graphics is not defined, so the table graphics portion for -it is just copied from KOI-8). - -The file for ISO-8859/1 is just a copy of file for KOI-8. It is neccessary -because Netscape has rather weird ideas about the documents in -KOI-8 encoding. The common way to fool Netscape is to set the KOI-8 -fonts for the ISO-8859/1 encoding and set the default encoding -in Netscape to 8859/1. - -The directory `latin1' contains an empty table for ISO-8859/1 -because it does not need any translation. diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/README.html b/application/third_party/dompdf/lib/ttf2ufm/src/encodings/README.html deleted file mode 100644 index 9a7c40c7..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/README.html +++ /dev/null @@ -1,81 +0,0 @@ -<HTML> -<HEAD> -<TITLE> -The INSTALLATION GUIDE -</TITLE> -</HEAD> -<BODY> -Sergey A. Babkin -<br> -<A HREF="mailto:babkin@bellatlantic.net"> -&lt;babkin@bellatlantic.net&gt;</A> or <A HREF="mailto:sab123@hotmail.com">&lt;sab123@hotmail.com&gt;</A> -<p> -<! -(Do not edit this file, it is generated from README.html!!!) -> - -<H3> -The Translation Tables -</H3> -<! ----------------------- -> - -These translation tables are used to translate the Type 1 fonts between -different encodings of the same language. -<p> - -The file names are supposed to have the suffix <tt>.tbl</tt>. Each file -describes one encoding, and all the tables for a given language -are stored in the same directory. -<p> - -The file format is quite simple: just a sequence of rows in -format -<p> - -<tt> -&lt;name&gt; &lt;decimal code&gt; -</tt> -<p> - -The names do not have to conform to any standard, just the same -glyph must have the same name in all the files for a given language. -<p> - -Not all the codes need to be described in the tables, the codes that -are not mentioned in the tables are left untranslated. So a file -of zero length may be used in case when no translation is neccessary. -<p> - -The translation changes only the encoding table of the font and does not -rename the glyphs in the font file. -<p> - -<H3> -Examples -</H3> -<! --------- -> - -The directory `russian' contains the tables for some encodings of the -Russian language: KOI-8, IBM CP-866, IBM CP-1251 and just for fun -ISO-8859/5 (nobody uses it anyways). The tables describe both russian -letters and table graphics characters (except for CP-1251 for which -the table graphics is not defined, so the table graphics portion for -it is just copied from KOI-8). -<p> - -The file for ISO-8859/1 is just a copy of file for KOI-8. It is neccessary -because Netscape has rather weird ideas about the documents in -KOI-8 encoding. The common way to fool Netscape is to set the KOI-8 -fonts for the ISO-8859/1 encoding and set the default encoding -in Netscape to 8859/1. -<p> - -The directory `latin1' contains an empty table for ISO-8859/1 -because it does not need any translation. -<p> -</BODY> -</HTML> diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/adobestd/adobe-std.tbl b/application/third_party/dompdf/lib/ttf2ufm/src/encodings/adobestd/adobe-std.tbl deleted file mode 100644 index e69de29b..00000000 diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/bulgarian/README b/application/third_party/dompdf/lib/ttf2ufm/src/encodings/bulgarian/README deleted file mode 100644 index 08f8ce36..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/bulgarian/README +++ /dev/null @@ -1,3 +0,0 @@ -These files are copies of thos provided for the language "cyrillic" -and are provided for compatibility purposes only, please -use the language "cyrillic" instead. diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/bulgarian/encodings.alias b/application/third_party/dompdf/lib/ttf2ufm/src/encodings/bulgarian/encodings.alias deleted file mode 100644 index e1f29063..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/bulgarian/encodings.alias +++ /dev/null @@ -1,4 +0,0 @@ -# alias real-name -iso8859-1 koi8-r -windows-1251 ibm-1251 -cp-866 ibm-866 diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/bulgarian/ibm-1251.tbl b/application/third_party/dompdf/lib/ttf2ufm/src/encodings/bulgarian/ibm-1251.tbl deleted file mode 100644 index 3fd17bd2..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/bulgarian/ibm-1251.tbl +++ /dev/null @@ -1,127 +0,0 @@ -cyr_DJE 128 -cyr_GJE 129 -quotesinglbase 130 -cyr_gje 131 -quotedblbase 132 -ellipsis 133 -dagger 134 -daggerdbl 135 -Euro 136 -perthousand 137 -cyr_LJE 138 -guilsinglleft 139 -cyr_NJE 140 -cyr_KJE 141 -cyr_TSHE 142 -cyr_DZHE 143 -cyr_dje 144 -quotesinglleft 145 -quotesinglright 146 -quotedblleft 147 -quotedblright 148 -bullet 149 -endash 150 -emdash 151 -trademark 153 -cyr_lje 154 -guilsinglright 155 -cyr_nje 156 -cyr_kje 157 -cyr_tshe 158 -cyr_dzhe 159 -nbspace 160 -cyr_SHORT_U 161 -cyr_short_u 162 -cyr_JE 163 -currency 164 -cyr_GHE_UPTURN 165 -brokenbar 166 -section 167 -cyr_IO 168 -copyright 169 -cyr_UKRAINIAN_IE 170 -guillemotleft 171 -notsign 172 -hyphen 173 -registered 174 -cyr_YI 175 -degree 176 -plusminus 177 -cyr_BYELORUSSIAN_UKRAINIAN_I 178 -cyr_byelorussian_ukrainian_i 179 -cyr_ghe_upturn 180 -mu 181 -paragraph 182 -periodcentered 183 -cyr_io 184 -numero 185 -cyr_ukrainian_ie 186 -guillemotright 187 -cyr_je 188 -cyr_DZE 189 -cyr_dze 190 -cyr_yi 191 -cyr_A 192 -cyr_BE 193 -cyr_VE 194 -cyr_GHE 195 -cyr_DE 196 -cyr_IE 197 -cyr_ZHE 198 -cyr_ZE 199 -cyr_I 200 -cyr_SHORT_I 201 -cyr_KA 202 -cyr_EL 203 -cyr_EM 204 -cyr_EN 205 -cyr_O 206 -cyr_PE 207 -cyr_ER 208 -cyr_ES 209 -cyr_TE 210 -cyr_U 211 -cyr_EF 212 -cyr_HA 213 -cyr_TSE 214 -cyr_CHE 215 -cyr_SHA 216 -cyr_SHCHA 217 -cyr_HARD_SIGN 218 -cyr_YERU 219 -cyr_SOFT_SIGN 220 -cyr_E 221 -cyr_YU 222 -cyr_YA 223 -cyr_a 224 -cyr_be 225 -cyr_ve 226 -cyr_ghe 227 -cyr_de 228 -cyr_ie 229 -cyr_zhe 230 -cyr_ze 231 -cyr_i 232 -cyr_short_i 233 -cyr_ka 234 -cyr_el 235 -cyr_em 236 -cyr_en 237 -cyr_o 238 -cyr_pe 239 -cyr_er 240 -cyr_es 241 -cyr_te 242 -cyr_u 243 -cyr_ef 244 -cyr_ha 245 -cyr_tse 246 -cyr_che 247 -cyr_sha 248 -cyr_shcha 249 -cyr_hard_sign 250 -cyr_yeru 251 -cyr_soft_sign 252 -cyr_e 253 -cyr_yu 254 -cyr_ya 255 diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/bulgarian/ibm-866.tbl b/application/third_party/dompdf/lib/ttf2ufm/src/encodings/bulgarian/ibm-866.tbl deleted file mode 100644 index b0451ae9..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/bulgarian/ibm-866.tbl +++ /dev/null @@ -1,128 +0,0 @@ -cyr_A 128 -cyr_BE 129 -cyr_CHE 151 -cyr_DE 132 -cyr_E 157 -cyr_EF 148 -cyr_EL 139 -cyr_EM 140 -cyr_EN 141 -cyr_ER 144 -cyr_ES 145 -cyr_GHE 131 -cyr_HA 149 -cyr_HARD_SIGN 154 -cyr_I 136 -cyr_IE 133 -cyr_KA 138 -cyr_O 142 -cyr_PE 143 -cyr_SHA 152 -cyr_SHCHA 153 -cyr_SHORT_I 137 -cyr_SOFT_SIGN 156 -cyr_TE 146 -cyr_TSE 150 -cyr_U 147 -cyr_VE 130 -cyr_YA 159 -cyr_YERU 155 -cyr_IO 240 -cyr_YU 158 -cyr_ZE 135 -cyr_ZHE 134 -cyr_a 160 -cyr_be 161 -cyr_che 231 -cyr_de 164 -cyr_e 237 -cyr_ef 228 -cyr_el 171 -cyr_em 172 -cyr_en 173 -cyr_er 224 -cyr_es 225 -graphic_100pc 219 -graphic_25pc 178 -graphic_50pc 177 -graphic_75pc 176 -graphic_LD 187 -graphic_LR 205 -graphic_LRD 203 -graphic_LRT 202 -graphic_LRTD 206 -graphic_LRd 209 -graphic_LRt 207 -graphic_LRtd 216 -graphic_LT 188 -graphic_LTD 185 -graphic_Ld 184 -graphic_Lt 190 -graphic_Ltd 181 -graphic_RD 201 -graphic_RT 200 -graphic_RTD 204 -graphic_Rd 213 -graphic_Rt 212 -graphic_Rtd 198 -graphic_TD 186 -copyright 252 -degree 248 -graphic_dintegral 245 -graphic_divide 246 -graphic_equal 247 -graphic_fatdot 249 -graphic_ge 242 -graphic_lD 183 -graphic_lT 189 -graphic_lTD 182 -graphic_ld 191 -graphic_le 243 -graphic_leandot 250 -graphic_lefthalf 221 -graphic_lowerhalf 220 -graphic_lr 196 -graphic_lrD 210 -graphic_lrT 208 -graphic_lrTD 215 -graphic_lrd 194 -graphic_lrt 193 -graphic_lrtd 197 -graphic_lt 217 -graphic_ltd 180 -graphic_power2 253 -graphic_rD 214 -graphic_rT 211 -graphic_rTD 199 -graphic_rd 218 -graphic_righthalf 222 -graphic_root 251 -graphic_rt 192 -graphic_rtd 195 -nbspace 255 -graphic_square 254 -graphic_td 179 -graphic_tintegral 244 -graphic_upperhalf 223 -cyr_ghe 163 -cyr_ha 229 -cyr_hard_sign 234 -cyr_i 168 -cyr_ie 165 -cyr_ka 170 -cyr_o 174 -cyr_pe 175 -cyr_sha 232 -cyr_shcha 233 -cyr_short_i 169 -cyr_soft_sign 236 -cyr_te 226 -cyr_tse 230 -cyr_u 227 -cyr_ve 162 -cyr_ya 239 -cyr_yeru 235 -cyr_io 241 -cyr_yu 238 -cyr_ze 167 -cyr_zhe 166 diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/bulgarian/iso8859-5.tbl b/application/third_party/dompdf/lib/ttf2ufm/src/encodings/bulgarian/iso8859-5.tbl deleted file mode 100644 index 8e60e18f..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/bulgarian/iso8859-5.tbl +++ /dev/null @@ -1,127 +0,0 @@ -cyr_GHE_UPTURN 128 -cyr_ghe_upturn 129 -quotesinglbase 130 -currency 131 -quotedblbase 132 -ellipsis 133 -dagger 134 -daggerdbl 135 -Euro 136 -perthousand 137 -brokenbar 138 -guilsinglleft 139 -copyright 140 -guillemotleft 141 -notsign 142 -registered 143 -degree 144 -quotesinglleft 145 -quotesinglright 146 -quotedblleft 147 -quotedblright 148 -bullet 149 -endash 150 -emdash 151 -trademark 153 -plusminus 154 -guilsinglright 155 -mu 156 -paragraph 157 -periodcentered 158 -guillemotright 159 -nbspace 160 -cyr_IO 161 -cyr_DJE 162 -cyr_GJE 163 -cyr_UKRAINIAN_IE 164 -cyr_DZE 165 -cyr_BYELORUSSIAN_UKRAINIAN_I 166 -cyr_YI 167 -cyr_JE 168 -cyr_LJE 169 -cyr_NJE 170 -cyr_TSHE 171 -cyr_KJE 172 -hyphen 173 -cyr_SHORT_U 174 -cyr_DZHE 175 -cyr_A 176 -cyr_BE 177 -cyr_VE 178 -cyr_GHE 179 -cyr_DE 180 -cyr_IE 181 -cyr_ZHE 182 -cyr_ZE 183 -cyr_I 184 -cyr_SHORT_I 185 -cyr_KA 186 -cyr_EL 187 -cyr_EM 188 -cyr_EN 189 -cyr_O 190 -cyr_PE 191 -cyr_ER 192 -cyr_ES 193 -cyr_TE 194 -cyr_U 195 -cyr_EF 196 -cyr_HA 197 -cyr_TSE 198 -cyr_CHE 199 -cyr_SHA 200 -cyr_SHCHA 201 -cyr_HARD_SIGN 202 -cyr_YERU 203 -cyr_SOFT_SIGN 204 -cyr_E 205 -cyr_YU 206 -cyr_YA 207 -cyr_a 208 -cyr_be 209 -cyr_ve 210 -cyr_ghe 211 -cyr_de 212 -cyr_ie 213 -cyr_zhe 214 -cyr_ze 215 -cyr_i 216 -cyr_short_i 217 -cyr_ka 218 -cyr_el 219 -cyr_em 220 -cyr_en 221 -cyr_o 222 -cyr_pe 223 -cyr_er 224 -cyr_es 225 -cyr_te 226 -cyr_u 227 -cyr_ef 228 -cyr_ha 229 -cyr_tse 230 -cyr_che 231 -cyr_sha 232 -cyr_shcha 233 -cyr_hard_sign 234 -cyr_yeru 235 -cyr_soft_sign 236 -cyr_e 237 -cyr_yu 238 -cyr_ya 239 -numero 240 -cyr_io 241 -cyr_dje 242 -cyr_gje 243 -cyr_ukrainian_ie 244 -cyr_dze 245 -cyr_byelorussian_ukrainian_i 246 -cyr_yi 247 -cyr_je 248 -cyr_lje 249 -cyr_nje 250 -cyr_tshe 251 -cyr_kje 252 -section 253 -cyr_short_u 254 -cyr_dzhe 255 diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/bulgarian/koi8-r.tbl b/application/third_party/dompdf/lib/ttf2ufm/src/encodings/bulgarian/koi8-r.tbl deleted file mode 100644 index e22775a2..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/bulgarian/koi8-r.tbl +++ /dev/null @@ -1,128 +0,0 @@ -cyr_A 225 -cyr_BE 226 -cyr_CHE 254 -cyr_DE 228 -cyr_E 252 -cyr_EF 230 -cyr_EL 236 -cyr_EM 237 -cyr_EN 238 -cyr_ER 242 -cyr_ES 243 -cyr_GHE 231 -cyr_HA 232 -cyr_HARD_SIGN 255 -cyr_I 233 -cyr_IE 229 -cyr_KA 235 -cyr_O 239 -cyr_PE 240 -cyr_SHA 251 -cyr_SHCHA 253 -cyr_SHORT_I 234 -cyr_SOFT_SIGN 248 -cyr_TE 244 -cyr_TSE 227 -cyr_U 245 -cyr_VE 247 -cyr_YA 241 -cyr_YERU 249 -cyr_IO 179 -cyr_YU 224 -cyr_ZE 250 -cyr_ZHE 246 -cyr_a 193 -cyr_be 194 -cyr_che 222 -cyr_de 196 -cyr_e 220 -cyr_ef 198 -cyr_el 204 -cyr_em 205 -cyr_en 206 -cyr_er 210 -cyr_es 211 -graphic_100pc 141 -graphic_25pc 144 -graphic_50pc 145 -graphic_75pc 146 -graphic_LD 168 -graphic_LR 160 -graphic_LRD 184 -graphic_LRT 187 -graphic_LRTD 190 -graphic_LRd 182 -graphic_LRt 185 -graphic_LRtd 188 -graphic_LT 174 -graphic_LTD 181 -graphic_Ld 166 -graphic_Lt 172 -graphic_Ltd 178 -graphic_RD 165 -graphic_RT 171 -graphic_RTD 177 -graphic_Rd 162 -graphic_Rt 170 -graphic_Rtd 175 -graphic_TD 161 -copyright 191 -degree 156 -graphic_dintegral 155 -graphic_divide 159 -graphic_equal 151 -graphic_fatdot 149 -graphic_ge 153 -graphic_lD 167 -graphic_lT 173 -graphic_lTD 180 -graphic_ld 131 -graphic_le 152 -graphic_leandot 158 -graphic_lefthalf 142 -graphic_lowerhalf 140 -graphic_lr 128 -graphic_lrD 183 -graphic_lrT 186 -graphic_lrTD 189 -graphic_lrd 136 -graphic_lrt 137 -graphic_lrtd 138 -graphic_lt 133 -graphic_ltd 135 -graphic_power2 157 -graphic_rD 164 -graphic_rT 169 -graphic_rTD 176 -graphic_rd 130 -graphic_righthalf 143 -graphic_root 150 -graphic_rt 132 -graphic_rtd 134 -nbspace 154 -graphic_square 148 -graphic_td 129 -graphic_tintegral 147 -graphic_upperhalf 139 -cyr_ghe 199 -cyr_ha 200 -cyr_hard_sign 223 -cyr_i 201 -cyr_ie 197 -cyr_ka 203 -cyr_o 207 -cyr_pe 208 -cyr_sha 219 -cyr_shcha 221 -cyr_short_i 202 -cyr_soft_sign 216 -cyr_te 212 -cyr_tse 195 -cyr_u 213 -cyr_ve 215 -cyr_ya 209 -cyr_yeru 217 -cyr_io 163 -cyr_yu 192 -cyr_ze 218 -cyr_zhe 214 diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/cyrillic/encodings.alias b/application/third_party/dompdf/lib/ttf2ufm/src/encodings/cyrillic/encodings.alias deleted file mode 100644 index e1f29063..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/cyrillic/encodings.alias +++ /dev/null @@ -1,4 +0,0 @@ -# alias real-name -iso8859-1 koi8-r -windows-1251 ibm-1251 -cp-866 ibm-866 diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/cyrillic/ibm-1251.tbl b/application/third_party/dompdf/lib/ttf2ufm/src/encodings/cyrillic/ibm-1251.tbl deleted file mode 100644 index 3fd17bd2..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/cyrillic/ibm-1251.tbl +++ /dev/null @@ -1,127 +0,0 @@ -cyr_DJE 128 -cyr_GJE 129 -quotesinglbase 130 -cyr_gje 131 -quotedblbase 132 -ellipsis 133 -dagger 134 -daggerdbl 135 -Euro 136 -perthousand 137 -cyr_LJE 138 -guilsinglleft 139 -cyr_NJE 140 -cyr_KJE 141 -cyr_TSHE 142 -cyr_DZHE 143 -cyr_dje 144 -quotesinglleft 145 -quotesinglright 146 -quotedblleft 147 -quotedblright 148 -bullet 149 -endash 150 -emdash 151 -trademark 153 -cyr_lje 154 -guilsinglright 155 -cyr_nje 156 -cyr_kje 157 -cyr_tshe 158 -cyr_dzhe 159 -nbspace 160 -cyr_SHORT_U 161 -cyr_short_u 162 -cyr_JE 163 -currency 164 -cyr_GHE_UPTURN 165 -brokenbar 166 -section 167 -cyr_IO 168 -copyright 169 -cyr_UKRAINIAN_IE 170 -guillemotleft 171 -notsign 172 -hyphen 173 -registered 174 -cyr_YI 175 -degree 176 -plusminus 177 -cyr_BYELORUSSIAN_UKRAINIAN_I 178 -cyr_byelorussian_ukrainian_i 179 -cyr_ghe_upturn 180 -mu 181 -paragraph 182 -periodcentered 183 -cyr_io 184 -numero 185 -cyr_ukrainian_ie 186 -guillemotright 187 -cyr_je 188 -cyr_DZE 189 -cyr_dze 190 -cyr_yi 191 -cyr_A 192 -cyr_BE 193 -cyr_VE 194 -cyr_GHE 195 -cyr_DE 196 -cyr_IE 197 -cyr_ZHE 198 -cyr_ZE 199 -cyr_I 200 -cyr_SHORT_I 201 -cyr_KA 202 -cyr_EL 203 -cyr_EM 204 -cyr_EN 205 -cyr_O 206 -cyr_PE 207 -cyr_ER 208 -cyr_ES 209 -cyr_TE 210 -cyr_U 211 -cyr_EF 212 -cyr_HA 213 -cyr_TSE 214 -cyr_CHE 215 -cyr_SHA 216 -cyr_SHCHA 217 -cyr_HARD_SIGN 218 -cyr_YERU 219 -cyr_SOFT_SIGN 220 -cyr_E 221 -cyr_YU 222 -cyr_YA 223 -cyr_a 224 -cyr_be 225 -cyr_ve 226 -cyr_ghe 227 -cyr_de 228 -cyr_ie 229 -cyr_zhe 230 -cyr_ze 231 -cyr_i 232 -cyr_short_i 233 -cyr_ka 234 -cyr_el 235 -cyr_em 236 -cyr_en 237 -cyr_o 238 -cyr_pe 239 -cyr_er 240 -cyr_es 241 -cyr_te 242 -cyr_u 243 -cyr_ef 244 -cyr_ha 245 -cyr_tse 246 -cyr_che 247 -cyr_sha 248 -cyr_shcha 249 -cyr_hard_sign 250 -cyr_yeru 251 -cyr_soft_sign 252 -cyr_e 253 -cyr_yu 254 -cyr_ya 255 diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/cyrillic/ibm-866.tbl b/application/third_party/dompdf/lib/ttf2ufm/src/encodings/cyrillic/ibm-866.tbl deleted file mode 100644 index b0451ae9..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/cyrillic/ibm-866.tbl +++ /dev/null @@ -1,128 +0,0 @@ -cyr_A 128 -cyr_BE 129 -cyr_CHE 151 -cyr_DE 132 -cyr_E 157 -cyr_EF 148 -cyr_EL 139 -cyr_EM 140 -cyr_EN 141 -cyr_ER 144 -cyr_ES 145 -cyr_GHE 131 -cyr_HA 149 -cyr_HARD_SIGN 154 -cyr_I 136 -cyr_IE 133 -cyr_KA 138 -cyr_O 142 -cyr_PE 143 -cyr_SHA 152 -cyr_SHCHA 153 -cyr_SHORT_I 137 -cyr_SOFT_SIGN 156 -cyr_TE 146 -cyr_TSE 150 -cyr_U 147 -cyr_VE 130 -cyr_YA 159 -cyr_YERU 155 -cyr_IO 240 -cyr_YU 158 -cyr_ZE 135 -cyr_ZHE 134 -cyr_a 160 -cyr_be 161 -cyr_che 231 -cyr_de 164 -cyr_e 237 -cyr_ef 228 -cyr_el 171 -cyr_em 172 -cyr_en 173 -cyr_er 224 -cyr_es 225 -graphic_100pc 219 -graphic_25pc 178 -graphic_50pc 177 -graphic_75pc 176 -graphic_LD 187 -graphic_LR 205 -graphic_LRD 203 -graphic_LRT 202 -graphic_LRTD 206 -graphic_LRd 209 -graphic_LRt 207 -graphic_LRtd 216 -graphic_LT 188 -graphic_LTD 185 -graphic_Ld 184 -graphic_Lt 190 -graphic_Ltd 181 -graphic_RD 201 -graphic_RT 200 -graphic_RTD 204 -graphic_Rd 213 -graphic_Rt 212 -graphic_Rtd 198 -graphic_TD 186 -copyright 252 -degree 248 -graphic_dintegral 245 -graphic_divide 246 -graphic_equal 247 -graphic_fatdot 249 -graphic_ge 242 -graphic_lD 183 -graphic_lT 189 -graphic_lTD 182 -graphic_ld 191 -graphic_le 243 -graphic_leandot 250 -graphic_lefthalf 221 -graphic_lowerhalf 220 -graphic_lr 196 -graphic_lrD 210 -graphic_lrT 208 -graphic_lrTD 215 -graphic_lrd 194 -graphic_lrt 193 -graphic_lrtd 197 -graphic_lt 217 -graphic_ltd 180 -graphic_power2 253 -graphic_rD 214 -graphic_rT 211 -graphic_rTD 199 -graphic_rd 218 -graphic_righthalf 222 -graphic_root 251 -graphic_rt 192 -graphic_rtd 195 -nbspace 255 -graphic_square 254 -graphic_td 179 -graphic_tintegral 244 -graphic_upperhalf 223 -cyr_ghe 163 -cyr_ha 229 -cyr_hard_sign 234 -cyr_i 168 -cyr_ie 165 -cyr_ka 170 -cyr_o 174 -cyr_pe 175 -cyr_sha 232 -cyr_shcha 233 -cyr_short_i 169 -cyr_soft_sign 236 -cyr_te 226 -cyr_tse 230 -cyr_u 227 -cyr_ve 162 -cyr_ya 239 -cyr_yeru 235 -cyr_io 241 -cyr_yu 238 -cyr_ze 167 -cyr_zhe 166 diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/cyrillic/iso8859-5.tbl b/application/third_party/dompdf/lib/ttf2ufm/src/encodings/cyrillic/iso8859-5.tbl deleted file mode 100644 index 8e60e18f..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/cyrillic/iso8859-5.tbl +++ /dev/null @@ -1,127 +0,0 @@ -cyr_GHE_UPTURN 128 -cyr_ghe_upturn 129 -quotesinglbase 130 -currency 131 -quotedblbase 132 -ellipsis 133 -dagger 134 -daggerdbl 135 -Euro 136 -perthousand 137 -brokenbar 138 -guilsinglleft 139 -copyright 140 -guillemotleft 141 -notsign 142 -registered 143 -degree 144 -quotesinglleft 145 -quotesinglright 146 -quotedblleft 147 -quotedblright 148 -bullet 149 -endash 150 -emdash 151 -trademark 153 -plusminus 154 -guilsinglright 155 -mu 156 -paragraph 157 -periodcentered 158 -guillemotright 159 -nbspace 160 -cyr_IO 161 -cyr_DJE 162 -cyr_GJE 163 -cyr_UKRAINIAN_IE 164 -cyr_DZE 165 -cyr_BYELORUSSIAN_UKRAINIAN_I 166 -cyr_YI 167 -cyr_JE 168 -cyr_LJE 169 -cyr_NJE 170 -cyr_TSHE 171 -cyr_KJE 172 -hyphen 173 -cyr_SHORT_U 174 -cyr_DZHE 175 -cyr_A 176 -cyr_BE 177 -cyr_VE 178 -cyr_GHE 179 -cyr_DE 180 -cyr_IE 181 -cyr_ZHE 182 -cyr_ZE 183 -cyr_I 184 -cyr_SHORT_I 185 -cyr_KA 186 -cyr_EL 187 -cyr_EM 188 -cyr_EN 189 -cyr_O 190 -cyr_PE 191 -cyr_ER 192 -cyr_ES 193 -cyr_TE 194 -cyr_U 195 -cyr_EF 196 -cyr_HA 197 -cyr_TSE 198 -cyr_CHE 199 -cyr_SHA 200 -cyr_SHCHA 201 -cyr_HARD_SIGN 202 -cyr_YERU 203 -cyr_SOFT_SIGN 204 -cyr_E 205 -cyr_YU 206 -cyr_YA 207 -cyr_a 208 -cyr_be 209 -cyr_ve 210 -cyr_ghe 211 -cyr_de 212 -cyr_ie 213 -cyr_zhe 214 -cyr_ze 215 -cyr_i 216 -cyr_short_i 217 -cyr_ka 218 -cyr_el 219 -cyr_em 220 -cyr_en 221 -cyr_o 222 -cyr_pe 223 -cyr_er 224 -cyr_es 225 -cyr_te 226 -cyr_u 227 -cyr_ef 228 -cyr_ha 229 -cyr_tse 230 -cyr_che 231 -cyr_sha 232 -cyr_shcha 233 -cyr_hard_sign 234 -cyr_yeru 235 -cyr_soft_sign 236 -cyr_e 237 -cyr_yu 238 -cyr_ya 239 -numero 240 -cyr_io 241 -cyr_dje 242 -cyr_gje 243 -cyr_ukrainian_ie 244 -cyr_dze 245 -cyr_byelorussian_ukrainian_i 246 -cyr_yi 247 -cyr_je 248 -cyr_lje 249 -cyr_nje 250 -cyr_tshe 251 -cyr_kje 252 -section 253 -cyr_short_u 254 -cyr_dzhe 255 diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/cyrillic/koi8-r.tbl b/application/third_party/dompdf/lib/ttf2ufm/src/encodings/cyrillic/koi8-r.tbl deleted file mode 100644 index e22775a2..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/cyrillic/koi8-r.tbl +++ /dev/null @@ -1,128 +0,0 @@ -cyr_A 225 -cyr_BE 226 -cyr_CHE 254 -cyr_DE 228 -cyr_E 252 -cyr_EF 230 -cyr_EL 236 -cyr_EM 237 -cyr_EN 238 -cyr_ER 242 -cyr_ES 243 -cyr_GHE 231 -cyr_HA 232 -cyr_HARD_SIGN 255 -cyr_I 233 -cyr_IE 229 -cyr_KA 235 -cyr_O 239 -cyr_PE 240 -cyr_SHA 251 -cyr_SHCHA 253 -cyr_SHORT_I 234 -cyr_SOFT_SIGN 248 -cyr_TE 244 -cyr_TSE 227 -cyr_U 245 -cyr_VE 247 -cyr_YA 241 -cyr_YERU 249 -cyr_IO 179 -cyr_YU 224 -cyr_ZE 250 -cyr_ZHE 246 -cyr_a 193 -cyr_be 194 -cyr_che 222 -cyr_de 196 -cyr_e 220 -cyr_ef 198 -cyr_el 204 -cyr_em 205 -cyr_en 206 -cyr_er 210 -cyr_es 211 -graphic_100pc 141 -graphic_25pc 144 -graphic_50pc 145 -graphic_75pc 146 -graphic_LD 168 -graphic_LR 160 -graphic_LRD 184 -graphic_LRT 187 -graphic_LRTD 190 -graphic_LRd 182 -graphic_LRt 185 -graphic_LRtd 188 -graphic_LT 174 -graphic_LTD 181 -graphic_Ld 166 -graphic_Lt 172 -graphic_Ltd 178 -graphic_RD 165 -graphic_RT 171 -graphic_RTD 177 -graphic_Rd 162 -graphic_Rt 170 -graphic_Rtd 175 -graphic_TD 161 -copyright 191 -degree 156 -graphic_dintegral 155 -graphic_divide 159 -graphic_equal 151 -graphic_fatdot 149 -graphic_ge 153 -graphic_lD 167 -graphic_lT 173 -graphic_lTD 180 -graphic_ld 131 -graphic_le 152 -graphic_leandot 158 -graphic_lefthalf 142 -graphic_lowerhalf 140 -graphic_lr 128 -graphic_lrD 183 -graphic_lrT 186 -graphic_lrTD 189 -graphic_lrd 136 -graphic_lrt 137 -graphic_lrtd 138 -graphic_lt 133 -graphic_ltd 135 -graphic_power2 157 -graphic_rD 164 -graphic_rT 169 -graphic_rTD 176 -graphic_rd 130 -graphic_righthalf 143 -graphic_root 150 -graphic_rt 132 -graphic_rtd 134 -nbspace 154 -graphic_square 148 -graphic_td 129 -graphic_tintegral 147 -graphic_upperhalf 139 -cyr_ghe 199 -cyr_ha 200 -cyr_hard_sign 223 -cyr_i 201 -cyr_ie 197 -cyr_ka 203 -cyr_o 207 -cyr_pe 208 -cyr_sha 219 -cyr_shcha 221 -cyr_short_i 202 -cyr_soft_sign 216 -cyr_te 212 -cyr_tse 195 -cyr_u 213 -cyr_ve 215 -cyr_ya 209 -cyr_yeru 217 -cyr_io 163 -cyr_yu 192 -cyr_ze 218 -cyr_zhe 214 diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/latin1/iso8859-1.tbl b/application/third_party/dompdf/lib/ttf2ufm/src/encodings/latin1/iso8859-1.tbl deleted file mode 100644 index e69de29b..00000000 diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/latin2/iso8859-2.tbl b/application/third_party/dompdf/lib/ttf2ufm/src/encodings/latin2/iso8859-2.tbl deleted file mode 100644 index e69de29b..00000000 diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/latin4/iso8859-4 b/application/third_party/dompdf/lib/ttf2ufm/src/encodings/latin4/iso8859-4 deleted file mode 100644 index e69de29b..00000000 diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/latin4/iso8859-4.tbl b/application/third_party/dompdf/lib/ttf2ufm/src/encodings/latin4/iso8859-4.tbl deleted file mode 100644 index e69de29b..00000000 diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/latin5/iso8859-9 b/application/third_party/dompdf/lib/ttf2ufm/src/encodings/latin5/iso8859-9 deleted file mode 100644 index e69de29b..00000000 diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/russian/README b/application/third_party/dompdf/lib/ttf2ufm/src/encodings/russian/README deleted file mode 100644 index 08f8ce36..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/russian/README +++ /dev/null @@ -1,3 +0,0 @@ -These files are copies of thos provided for the language "cyrillic" -and are provided for compatibility purposes only, please -use the language "cyrillic" instead. diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/russian/encodings.alias b/application/third_party/dompdf/lib/ttf2ufm/src/encodings/russian/encodings.alias deleted file mode 100644 index e1f29063..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/russian/encodings.alias +++ /dev/null @@ -1,4 +0,0 @@ -# alias real-name -iso8859-1 koi8-r -windows-1251 ibm-1251 -cp-866 ibm-866 diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/russian/ibm-1251.tbl b/application/third_party/dompdf/lib/ttf2ufm/src/encodings/russian/ibm-1251.tbl deleted file mode 100644 index 3fd17bd2..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/russian/ibm-1251.tbl +++ /dev/null @@ -1,127 +0,0 @@ -cyr_DJE 128 -cyr_GJE 129 -quotesinglbase 130 -cyr_gje 131 -quotedblbase 132 -ellipsis 133 -dagger 134 -daggerdbl 135 -Euro 136 -perthousand 137 -cyr_LJE 138 -guilsinglleft 139 -cyr_NJE 140 -cyr_KJE 141 -cyr_TSHE 142 -cyr_DZHE 143 -cyr_dje 144 -quotesinglleft 145 -quotesinglright 146 -quotedblleft 147 -quotedblright 148 -bullet 149 -endash 150 -emdash 151 -trademark 153 -cyr_lje 154 -guilsinglright 155 -cyr_nje 156 -cyr_kje 157 -cyr_tshe 158 -cyr_dzhe 159 -nbspace 160 -cyr_SHORT_U 161 -cyr_short_u 162 -cyr_JE 163 -currency 164 -cyr_GHE_UPTURN 165 -brokenbar 166 -section 167 -cyr_IO 168 -copyright 169 -cyr_UKRAINIAN_IE 170 -guillemotleft 171 -notsign 172 -hyphen 173 -registered 174 -cyr_YI 175 -degree 176 -plusminus 177 -cyr_BYELORUSSIAN_UKRAINIAN_I 178 -cyr_byelorussian_ukrainian_i 179 -cyr_ghe_upturn 180 -mu 181 -paragraph 182 -periodcentered 183 -cyr_io 184 -numero 185 -cyr_ukrainian_ie 186 -guillemotright 187 -cyr_je 188 -cyr_DZE 189 -cyr_dze 190 -cyr_yi 191 -cyr_A 192 -cyr_BE 193 -cyr_VE 194 -cyr_GHE 195 -cyr_DE 196 -cyr_IE 197 -cyr_ZHE 198 -cyr_ZE 199 -cyr_I 200 -cyr_SHORT_I 201 -cyr_KA 202 -cyr_EL 203 -cyr_EM 204 -cyr_EN 205 -cyr_O 206 -cyr_PE 207 -cyr_ER 208 -cyr_ES 209 -cyr_TE 210 -cyr_U 211 -cyr_EF 212 -cyr_HA 213 -cyr_TSE 214 -cyr_CHE 215 -cyr_SHA 216 -cyr_SHCHA 217 -cyr_HARD_SIGN 218 -cyr_YERU 219 -cyr_SOFT_SIGN 220 -cyr_E 221 -cyr_YU 222 -cyr_YA 223 -cyr_a 224 -cyr_be 225 -cyr_ve 226 -cyr_ghe 227 -cyr_de 228 -cyr_ie 229 -cyr_zhe 230 -cyr_ze 231 -cyr_i 232 -cyr_short_i 233 -cyr_ka 234 -cyr_el 235 -cyr_em 236 -cyr_en 237 -cyr_o 238 -cyr_pe 239 -cyr_er 240 -cyr_es 241 -cyr_te 242 -cyr_u 243 -cyr_ef 244 -cyr_ha 245 -cyr_tse 246 -cyr_che 247 -cyr_sha 248 -cyr_shcha 249 -cyr_hard_sign 250 -cyr_yeru 251 -cyr_soft_sign 252 -cyr_e 253 -cyr_yu 254 -cyr_ya 255 diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/russian/ibm-866.tbl b/application/third_party/dompdf/lib/ttf2ufm/src/encodings/russian/ibm-866.tbl deleted file mode 100644 index b0451ae9..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/russian/ibm-866.tbl +++ /dev/null @@ -1,128 +0,0 @@ -cyr_A 128 -cyr_BE 129 -cyr_CHE 151 -cyr_DE 132 -cyr_E 157 -cyr_EF 148 -cyr_EL 139 -cyr_EM 140 -cyr_EN 141 -cyr_ER 144 -cyr_ES 145 -cyr_GHE 131 -cyr_HA 149 -cyr_HARD_SIGN 154 -cyr_I 136 -cyr_IE 133 -cyr_KA 138 -cyr_O 142 -cyr_PE 143 -cyr_SHA 152 -cyr_SHCHA 153 -cyr_SHORT_I 137 -cyr_SOFT_SIGN 156 -cyr_TE 146 -cyr_TSE 150 -cyr_U 147 -cyr_VE 130 -cyr_YA 159 -cyr_YERU 155 -cyr_IO 240 -cyr_YU 158 -cyr_ZE 135 -cyr_ZHE 134 -cyr_a 160 -cyr_be 161 -cyr_che 231 -cyr_de 164 -cyr_e 237 -cyr_ef 228 -cyr_el 171 -cyr_em 172 -cyr_en 173 -cyr_er 224 -cyr_es 225 -graphic_100pc 219 -graphic_25pc 178 -graphic_50pc 177 -graphic_75pc 176 -graphic_LD 187 -graphic_LR 205 -graphic_LRD 203 -graphic_LRT 202 -graphic_LRTD 206 -graphic_LRd 209 -graphic_LRt 207 -graphic_LRtd 216 -graphic_LT 188 -graphic_LTD 185 -graphic_Ld 184 -graphic_Lt 190 -graphic_Ltd 181 -graphic_RD 201 -graphic_RT 200 -graphic_RTD 204 -graphic_Rd 213 -graphic_Rt 212 -graphic_Rtd 198 -graphic_TD 186 -copyright 252 -degree 248 -graphic_dintegral 245 -graphic_divide 246 -graphic_equal 247 -graphic_fatdot 249 -graphic_ge 242 -graphic_lD 183 -graphic_lT 189 -graphic_lTD 182 -graphic_ld 191 -graphic_le 243 -graphic_leandot 250 -graphic_lefthalf 221 -graphic_lowerhalf 220 -graphic_lr 196 -graphic_lrD 210 -graphic_lrT 208 -graphic_lrTD 215 -graphic_lrd 194 -graphic_lrt 193 -graphic_lrtd 197 -graphic_lt 217 -graphic_ltd 180 -graphic_power2 253 -graphic_rD 214 -graphic_rT 211 -graphic_rTD 199 -graphic_rd 218 -graphic_righthalf 222 -graphic_root 251 -graphic_rt 192 -graphic_rtd 195 -nbspace 255 -graphic_square 254 -graphic_td 179 -graphic_tintegral 244 -graphic_upperhalf 223 -cyr_ghe 163 -cyr_ha 229 -cyr_hard_sign 234 -cyr_i 168 -cyr_ie 165 -cyr_ka 170 -cyr_o 174 -cyr_pe 175 -cyr_sha 232 -cyr_shcha 233 -cyr_short_i 169 -cyr_soft_sign 236 -cyr_te 226 -cyr_tse 230 -cyr_u 227 -cyr_ve 162 -cyr_ya 239 -cyr_yeru 235 -cyr_io 241 -cyr_yu 238 -cyr_ze 167 -cyr_zhe 166 diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/russian/iso8859-5.tbl b/application/third_party/dompdf/lib/ttf2ufm/src/encodings/russian/iso8859-5.tbl deleted file mode 100644 index 8e60e18f..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/russian/iso8859-5.tbl +++ /dev/null @@ -1,127 +0,0 @@ -cyr_GHE_UPTURN 128 -cyr_ghe_upturn 129 -quotesinglbase 130 -currency 131 -quotedblbase 132 -ellipsis 133 -dagger 134 -daggerdbl 135 -Euro 136 -perthousand 137 -brokenbar 138 -guilsinglleft 139 -copyright 140 -guillemotleft 141 -notsign 142 -registered 143 -degree 144 -quotesinglleft 145 -quotesinglright 146 -quotedblleft 147 -quotedblright 148 -bullet 149 -endash 150 -emdash 151 -trademark 153 -plusminus 154 -guilsinglright 155 -mu 156 -paragraph 157 -periodcentered 158 -guillemotright 159 -nbspace 160 -cyr_IO 161 -cyr_DJE 162 -cyr_GJE 163 -cyr_UKRAINIAN_IE 164 -cyr_DZE 165 -cyr_BYELORUSSIAN_UKRAINIAN_I 166 -cyr_YI 167 -cyr_JE 168 -cyr_LJE 169 -cyr_NJE 170 -cyr_TSHE 171 -cyr_KJE 172 -hyphen 173 -cyr_SHORT_U 174 -cyr_DZHE 175 -cyr_A 176 -cyr_BE 177 -cyr_VE 178 -cyr_GHE 179 -cyr_DE 180 -cyr_IE 181 -cyr_ZHE 182 -cyr_ZE 183 -cyr_I 184 -cyr_SHORT_I 185 -cyr_KA 186 -cyr_EL 187 -cyr_EM 188 -cyr_EN 189 -cyr_O 190 -cyr_PE 191 -cyr_ER 192 -cyr_ES 193 -cyr_TE 194 -cyr_U 195 -cyr_EF 196 -cyr_HA 197 -cyr_TSE 198 -cyr_CHE 199 -cyr_SHA 200 -cyr_SHCHA 201 -cyr_HARD_SIGN 202 -cyr_YERU 203 -cyr_SOFT_SIGN 204 -cyr_E 205 -cyr_YU 206 -cyr_YA 207 -cyr_a 208 -cyr_be 209 -cyr_ve 210 -cyr_ghe 211 -cyr_de 212 -cyr_ie 213 -cyr_zhe 214 -cyr_ze 215 -cyr_i 216 -cyr_short_i 217 -cyr_ka 218 -cyr_el 219 -cyr_em 220 -cyr_en 221 -cyr_o 222 -cyr_pe 223 -cyr_er 224 -cyr_es 225 -cyr_te 226 -cyr_u 227 -cyr_ef 228 -cyr_ha 229 -cyr_tse 230 -cyr_che 231 -cyr_sha 232 -cyr_shcha 233 -cyr_hard_sign 234 -cyr_yeru 235 -cyr_soft_sign 236 -cyr_e 237 -cyr_yu 238 -cyr_ya 239 -numero 240 -cyr_io 241 -cyr_dje 242 -cyr_gje 243 -cyr_ukrainian_ie 244 -cyr_dze 245 -cyr_byelorussian_ukrainian_i 246 -cyr_yi 247 -cyr_je 248 -cyr_lje 249 -cyr_nje 250 -cyr_tshe 251 -cyr_kje 252 -section 253 -cyr_short_u 254 -cyr_dzhe 255 diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/russian/koi8-r.tbl b/application/third_party/dompdf/lib/ttf2ufm/src/encodings/russian/koi8-r.tbl deleted file mode 100644 index e22775a2..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/encodings/russian/koi8-r.tbl +++ /dev/null @@ -1,128 +0,0 @@ -cyr_A 225 -cyr_BE 226 -cyr_CHE 254 -cyr_DE 228 -cyr_E 252 -cyr_EF 230 -cyr_EL 236 -cyr_EM 237 -cyr_EN 238 -cyr_ER 242 -cyr_ES 243 -cyr_GHE 231 -cyr_HA 232 -cyr_HARD_SIGN 255 -cyr_I 233 -cyr_IE 229 -cyr_KA 235 -cyr_O 239 -cyr_PE 240 -cyr_SHA 251 -cyr_SHCHA 253 -cyr_SHORT_I 234 -cyr_SOFT_SIGN 248 -cyr_TE 244 -cyr_TSE 227 -cyr_U 245 -cyr_VE 247 -cyr_YA 241 -cyr_YERU 249 -cyr_IO 179 -cyr_YU 224 -cyr_ZE 250 -cyr_ZHE 246 -cyr_a 193 -cyr_be 194 -cyr_che 222 -cyr_de 196 -cyr_e 220 -cyr_ef 198 -cyr_el 204 -cyr_em 205 -cyr_en 206 -cyr_er 210 -cyr_es 211 -graphic_100pc 141 -graphic_25pc 144 -graphic_50pc 145 -graphic_75pc 146 -graphic_LD 168 -graphic_LR 160 -graphic_LRD 184 -graphic_LRT 187 -graphic_LRTD 190 -graphic_LRd 182 -graphic_LRt 185 -graphic_LRtd 188 -graphic_LT 174 -graphic_LTD 181 -graphic_Ld 166 -graphic_Lt 172 -graphic_Ltd 178 -graphic_RD 165 -graphic_RT 171 -graphic_RTD 177 -graphic_Rd 162 -graphic_Rt 170 -graphic_Rtd 175 -graphic_TD 161 -copyright 191 -degree 156 -graphic_dintegral 155 -graphic_divide 159 -graphic_equal 151 -graphic_fatdot 149 -graphic_ge 153 -graphic_lD 167 -graphic_lT 173 -graphic_lTD 180 -graphic_ld 131 -graphic_le 152 -graphic_leandot 158 -graphic_lefthalf 142 -graphic_lowerhalf 140 -graphic_lr 128 -graphic_lrD 183 -graphic_lrT 186 -graphic_lrTD 189 -graphic_lrd 136 -graphic_lrt 137 -graphic_lrtd 138 -graphic_lt 133 -graphic_ltd 135 -graphic_power2 157 -graphic_rD 164 -graphic_rT 169 -graphic_rTD 176 -graphic_rd 130 -graphic_righthalf 143 -graphic_root 150 -graphic_rt 132 -graphic_rtd 134 -nbspace 154 -graphic_square 148 -graphic_td 129 -graphic_tintegral 147 -graphic_upperhalf 139 -cyr_ghe 199 -cyr_ha 200 -cyr_hard_sign 223 -cyr_i 201 -cyr_ie 197 -cyr_ka 203 -cyr_o 207 -cyr_pe 208 -cyr_sha 219 -cyr_shcha 221 -cyr_short_i 202 -cyr_soft_sign 216 -cyr_te 212 -cyr_tse 195 -cyr_u 213 -cyr_ve 215 -cyr_ya 209 -cyr_yeru 217 -cyr_io 163 -cyr_yu 192 -cyr_ze 218 -cyr_zhe 214 diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/ft.c b/application/third_party/dompdf/lib/ttf2ufm/src/ft.c deleted file mode 100644 index 3bbcb896..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/ft.c +++ /dev/null @@ -1,649 +0,0 @@ -/* - * The font parser using the FreeType library version 2. - * - * see COPYRIGHT - * - */ - -#ifdef USE_FREETYPE - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <ctype.h> -#include <sys/types.h> -#include <freetype/config/ftheader.h> -#include <freetype/freetype.h> -#include <freetype/ftglyph.h> -#include <freetype/ftsnames.h> -#include <freetype/ttnameid.h> -#include <freetype/ftoutln.h> -#include "pt1.h" -#include "global.h" - -/* prototypes of call entries */ -static void openfont(char *fname, char *arg); -static void closefont( void); -static int getnglyphs ( void); -static int glnames( GLYPH *glyph_list); -static void glmetrics( GLYPH *glyph_list); -static int glenc( GLYPH *glyph_list, int *encoding, int *unimap); -static void fnmetrics( struct font_metrics *fm); -static void glpath( int glyphno, GLYPH *glyph_list); -static void kerning( GLYPH *glyph_list); - -/* globals */ - -/* front-end descriptor */ -struct frontsw freetype_sw = { - /*name*/ "ft", - /*descr*/ "based on the FreeType library", - /*suffix*/ { "ttf", "otf", "pfa", "pfb" }, - /*open*/ openfont, - /*close*/ closefont, - /*nglyphs*/ getnglyphs, - /*glnames*/ glnames, - /*glmetrics*/ glmetrics, - /*glenc*/ glenc, - /*fnmetrics*/ fnmetrics, - /*glpath*/ glpath, - /*kerning*/ kerning, -}; - -/* statics */ - -static FT_Library library; -static FT_Face face; - -static int enc_type, enc_found; - -/* SFNT functions do not seem to be included by default in FT2beta8 */ -#define ENABLE_SFNT - -/* - * Open font and prepare to return information to the main driver. - * May print error and warning messages. - * Exit on error. - */ - -static void -openfont( - char *fname, - char *arg /* unused now */ -) -{ - FT_Error error; - - if( FT_Init_FreeType( &library ) ) { - fprintf(stderr, "** FreeType initialization failed\n"); - exit(1); - } - - if( error = FT_New_Face( library, fname, 0, &face ) ) { - if ( error == FT_Err_Unknown_File_Format ) - fprintf(stderr, "**** %s has format unknown to FreeType\n", fname); - else - fprintf(stderr, "**** Cannot access %s ****\n", fname); - exit(1); - } - - if(FT_HAS_FIXED_SIZES(face)) { - WARNING_1 fprintf(stderr, "Font contains bitmaps\n"); - } - if(FT_HAS_MULTIPLE_MASTERS(face)) { - WARNING_1 fprintf(stderr, "Font contains multiple masters, using default\n"); - } - - if(ISDBG(FT)) fprintf(stderr," %d units per EM\n", face->units_per_EM); - - enc_found = 0; -} - -/* - * Close font. - * Exit on error. - */ - -static void -closefont( - void -) -{ - if( FT_Done_Face(face) ) { - WARNING_1 fprintf(stderr, "Errors when closing the font file, ignored\n"); - } - if( FT_Done_FreeType(library) ) { - WARNING_1 fprintf(stderr, "Errors when stopping FreeType, ignored\n"); - } -} - -/* - * Get the number of glyphs in font. - */ - -static int -getnglyphs ( - void -) -{ - if(ISDBG(FT)) fprintf(stderr, "%d glyphs in font\n", face->num_glyphs); - return (int)face->num_glyphs; -} - -/* - * Get the names of the glyphs. - * Returns 0 if the names were assigned, non-zero if the font - * provides no glyph names. - */ - -static int -glnames( - GLYPH *glyph_list -) -{ -#define MAX_NAMELEN 1024 - unsigned char bf[1024]; - int i; - - if( ! FT_HAS_GLYPH_NAMES(face) ) { - WARNING_1 fprintf(stderr, "Font has no glyph names\n"); - return 1; - } - - for(i=0; i < face->num_glyphs; i++) { - if( FT_Get_Glyph_Name(face, i, bf, MAX_NAMELEN) || bf[0]==0 ) { - sprintf(bf, "_g_%d", i); - WARNING_2 fprintf(stderr, - "Glyph No. %d has no postscript name, becomes %s\n", i, bf); - } - glyph_list[i].name = strdup(bf); - if(ISDBG(FT)) fprintf(stderr, "%d has name %s\n", i, bf); - if (glyph_list[i].name == NULL) { - fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__); - exit(255); - } - } - return 0; -} - -/* - * Get the metrics of the glyphs. - */ - -static void -glmetrics( - GLYPH *glyph_list -) -{ - GLYPH *g; - int i; - FT_Glyph_Metrics *met; - FT_BBox bbox; - FT_Glyph gly; - FT_ULong charcode; - FT_UInt index; - - for(i=0; i < face->num_glyphs; i++) { - g = &(glyph_list[i]); - - if( FT_Load_Glyph(face, i, FT_LOAD_NO_BITMAP|FT_LOAD_NO_SCALE) ) { - fprintf(stderr, "Can't load glyph %s, skipped\n", g->name); - continue; - } - - met = &face->glyph->metrics; - - if(FT_HAS_HORIZONTAL(face)) { - g->width = met->horiAdvance; - g->lsb = met->horiBearingX; - } else { - WARNING_2 fprintf(stderr, "Glyph %s has no horizontal metrics, guessed them\n", g->name); - g->width = met->width; - g->lsb = 0; - } - - if( FT_Get_Glyph(face->glyph, &gly) ) { - fprintf(stderr, "Can't access glyph %s bbox, skipped\n", g->name); - continue; - } - - FT_Glyph_Get_CBox(gly, ft_glyph_bbox_unscaled, &bbox); - g->xMin = bbox.xMin; - g->yMin = bbox.yMin; - g->xMax = bbox.xMax; - g->yMax = bbox.yMax; - - g->ttf_pathlen = face->glyph->outline.n_points; - - } - - charcode = FT_Get_First_Char(face, &index); - while ( index != 0 ) { - if ( index >= face->num_glyphs ) { - break; - } - for ( i = 0; i < GLYPH_MAX_ENCODINGS; i++ ) { - if ( glyph_list[index].orig_code[i] == -1 ) - break; - } - - if ( i == GLYPH_MAX_ENCODINGS ) { - if (strcmp(glyph_list[index].name, ".notdef") != 0) { - WARNING_2 fprintf(stderr, - "Glyph %s has >= %d encodings (A), %4.4x & %4.4x\n", - GLYPH_MAX_ENCODINGS, - glyph_list[index].name, - glyph_list[index].orig_code[i], - charcode); - } - } else { - glyph_list[index].orig_code[i] = charcode; - } - - charcode = FT_Get_Next_Char(face, charcode, &index); - } -} - -/* - * Get the original encoding of the font. - * Returns 1 for if the original encoding is Unicode, 2 if the - * original encoding is other 16-bit, 0 if 8-bit. - */ - -static int -glenc( - GLYPH *glyph_list, - int *encoding, - int *unimap -) -{ - int i, e; - unsigned code, index; - - if(ISDBG(FT)) - for(e=0; e < face->num_charmaps; e++) { - fprintf(stderr, "found encoding pid=%d eid=%d\n", - face->charmaps[e]->platform_id, - face->charmaps[e]->encoding_id); - } - - if(enc_found) - goto populate_map; - - enc_type = 0; - - /* first check for an explicit PID/EID */ - - if(force_pid != -1) { - for(e=0; e < face->num_charmaps; e++) { - if(face->charmaps[e]->platform_id == force_pid - && face->charmaps[e]->encoding_id == force_eid) { - WARNING_1 fprintf(stderr, "Found Encoding PID=%d/EID=%d\n", - force_pid, force_eid); - if( !face->charmaps || FT_Set_Charmap(face, face->charmaps[e]) ) { - fprintf(stderr, "**** Cannot set charmap in FreeType ****\n"); - exit(1); - } - enc_type = 1; - goto populate_map; - } - } - fprintf(stderr, "*** TTF encoding table PID=%d/EID=%d not found\n", - force_pid, force_eid); - exit(1); - } - - /* next check for a direct Adobe mapping */ - - if(!forcemap) { - for(e=0; e < face->num_charmaps; e++) { - if(face->charmaps[e]->encoding == ft_encoding_adobe_custom) { - WARNING_1 fputs("Found Adobe Custom Encoding\n", stderr); - if( FT_Set_Charmap(face, face->charmaps[e]) ) { - fprintf(stderr, "**** Cannot set charmap in FreeType ****\n"); - exit(1); - } - goto populate_map; - } - } - } - - for(e=0; e < face->num_charmaps; e++) { - if(face->charmaps[e]->platform_id == 3) { - switch(face->charmaps[e]->encoding_id) { - case 0: - WARNING_1 fputs("Found Symbol Encoding\n", stderr); - break; - case 1: - WARNING_1 fputs("Found Unicode Encoding\n", stderr); - enc_type = 1; - break; - default: - WARNING_1 { - fprintf(stderr, - "****MS Encoding ID %d not supported****\n", - face->charmaps[e]->encoding_id); - fputs("Treating it like Symbol encoding\n", stderr); - } - break; - } - break; - } - } - if(e >= face->num_charmaps) { - WARNING_1 fputs("No Microsoft encoding, using first encoding available\n", stderr); - e = 0; - } - - if( FT_Set_Charmap(face, face->charmaps[e]) ) { - fprintf(stderr, "**** Cannot set charmap in FreeType ****\n"); - exit(1); - } - -populate_map: - enc_found = 1; - - for(i=0; i<ENCTABSZ; i++) { - if(encoding[i] != -1) - continue; - if(enc_type == 1 || forcemap) { - code = unimap[i]; - if(code == (unsigned) -1) - continue; - } else - code = i; - - code = FT_Get_Char_Index(face, code); - if(0 && ISDBG(FT)) fprintf(stderr, "code of %3d is %3d\n", i, code); - if(code == 0) - continue; /* .notdef */ - encoding[i] = code; - } - - return enc_type; -} - -/* - * Get the font metrics - */ -static void -fnmetrics( - struct font_metrics *fm -) -{ - char *str; - static char *fieldstocheck[3]; -#ifdef ENABLE_SFNT - FT_SfntName sn; -#endif /* ENABLE_SFNT */ - int i, j, len; - - fm->italic_angle = 0.0; /* FreeType hides the angle */ - fm->underline_position = face->underline_position; - fm->underline_thickness = face->underline_thickness; - fm->is_fixed_pitch = FT_IS_FIXED_WIDTH(face); - - fm->ascender = face->ascender; - fm->descender = face->descender; - - fm->units_per_em = face->units_per_EM; - - fm->bbox[0] = face->bbox.xMin; - fm->bbox[1] = face->bbox.yMin; - fm->bbox[2] = face->bbox.xMax; - fm->bbox[3] = face->bbox.yMax; - -#ifdef ENABLE_SFNT - if( FT_Get_Sfnt_Name(face, TT_NAME_ID_COPYRIGHT, &sn) ) -#endif /* ENABLE_SFNT */ - fm->name_copyright = ""; -#ifdef ENABLE_SFNT - else - fm->name_copyright = dupcnstring(sn.string, sn.string_len); -#endif /* ENABLE_SFNT */ - - fm->name_family = face->family_name; - - fm->name_style = face->style_name; - if(fm->name_style == NULL) - fm->name_style = ""; - -#ifdef ENABLE_SFNT - if( FT_Get_Sfnt_Name(face, TT_NAME_ID_FULL_NAME, &sn) ) -#endif /* ENABLE_SFNT */ - { - int len; - - len = strlen(fm->name_family) + strlen(fm->name_style) + 2; - if(( fm->name_full = malloc(len) )==NULL) { - fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__); - exit(255); - } - strcpy(fm->name_full, fm->name_family); - if(strlen(fm->name_style) != 0) { - strcat(fm->name_full, " "); - strcat(fm->name_full, fm->name_style); - } - } -#ifdef ENABLE_SFNT - else - fm->name_full = dupcnstring(sn.string, sn.string_len); -#endif /* ENABLE_SFNT */ - -#ifdef ENABLE_SFNT - if( FT_Get_Sfnt_Name(face, TT_NAME_ID_VERSION_STRING, &sn) ) -#endif /* ENABLE_SFNT */ - fm->name_version = "1.0"; -#ifdef ENABLE_SFNT - else - fm->name_version = dupcnstring(sn.string, sn.string_len); -#endif /* ENABLE_SFNT */ - -#ifdef ENABLE_SFNT - if( FT_Get_Sfnt_Name(face, TT_NAME_ID_PS_NAME , &sn) ) { -#endif /* ENABLE_SFNT */ - if(( fm->name_ps = strdup(fm->name_full) )==NULL) { - fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__); - exit(255); - } -#ifdef ENABLE_SFNT - } else - fm->name_ps = dupcnstring(sn.string, sn.string_len); -#endif /* ENABLE_SFNT */ - for(i=0; fm->name_ps[i]!=0; i++) - if(fm->name_ps[i] == ' ') - fm->name_ps[i] = '_'; /* no spaces in the Postscript name *m - - /* guess the boldness from the font names */ - fm->force_bold=0; - - fieldstocheck[0] = fm->name_style; - fieldstocheck[1] = fm->name_full; - fieldstocheck[2] = fm->name_ps; - - for(i=0; !fm->force_bold && i<sizeof fieldstocheck /sizeof(fieldstocheck[0]); i++) { - str=fieldstocheck[i]; - len = strlen(str); - for(j=0; j<len; j++) { - if( (str[j]=='B' - || str[j]=='b' - && ( j==0 || !isalpha(str[j-1]) ) - ) - && !strncmp("old",&str[j+1],3) - && (j+4 >= len || !islower(str[j+4])) - ) { - fm->force_bold=1; - break; - } - } - } -} - -/* - * Functions to decompose the outlines - */ - -static GLYPH *curg; -static double lastx, lasty; - -static int -outl_moveto( - FT_Vector *to, - void *unused -) -{ - double tox, toy; - - tox = fscale((double)to->x); toy = fscale((double)to->y); - - /* FreeType does not do explicit closepath() */ - if(curg->lastentry) { - g_closepath(curg); - } - fg_rmoveto(curg, tox, toy); - lastx = tox; lasty = toy; - - return 0; -} - -static int -outl_lineto( - FT_Vector *to, - void *unused -) -{ - double tox, toy; - - tox = fscale((double)to->x); toy = fscale((double)to->y); - - fg_rlineto(curg, tox, toy); - lastx = tox; lasty = toy; - - return 0; -} - -static int -outl_conicto( - FT_Vector *control1, - FT_Vector *to, - void *unused -) -{ - double c1x, c1y, tox, toy; - - c1x = fscale((double)control1->x); c1y = fscale((double)control1->y); - tox = fscale((double)to->x); toy = fscale((double)to->y); - - fg_rrcurveto(curg, - (lastx + 2.0 * c1x) / 3.0, (lasty + 2.0 * c1y) / 3.0, - (2.0 * c1x + tox) / 3.0, (2.0 * c1y + toy) / 3.0, - tox, toy ); - lastx = tox; lasty = toy; - - return 0; -} - -static int -outl_cubicto( - FT_Vector *control1, - FT_Vector *control2, - FT_Vector *to, - void *unused -) -{ - double c1x, c1y, c2x, c2y, tox, toy; - - c1x = fscale((double)control1->x); c1y = fscale((double)control1->y); - c2x = fscale((double)control2->x); c2y = fscale((double)control2->y); - tox = fscale((double)to->x); toy = fscale((double)to->y); - - fg_rrcurveto(curg, c1x, c1y, c2x, c2y, tox, toy); - lastx = tox; lasty = toy; - - return 0; -} - -static FT_Outline_Funcs ft_outl_funcs = { - outl_moveto, - outl_lineto, - outl_conicto, - outl_cubicto, - 0, - 0 -}; - -/* - * Get the path of contrours for a glyph. - */ - -static void -glpath( - int glyphno, - GLYPH *glyf_list -) -{ - FT_Outline *ol; - - curg = &glyf_list[glyphno]; - - if( FT_Load_Glyph(face, glyphno, FT_LOAD_NO_BITMAP|FT_LOAD_NO_SCALE|FT_LOAD_NO_HINTING) - || face->glyph->format != ft_glyph_format_outline ) { - fprintf(stderr, "Can't load glyph %s, skipped\n", curg->name); - return; - } - - ol = &face->glyph->outline; - lastx = 0.0; lasty = 0.0; - - if( FT_Outline_Decompose(ol, &ft_outl_funcs, NULL) ) { - fprintf(stderr, "Can't decompose outline of glyph %s, skipped\n", curg->name); - return; - } - - /* FreeType does not do explicit closepath() */ - if(curg->lastentry) { - g_closepath(curg); - } - - if(ol->flags & ft_outline_reverse_fill) { - assertpath(curg->entries, __FILE__, __LINE__, curg->name); - reversepaths(curg); - } -} - -/* - * Get the kerning data. - */ - -static void -kerning( - GLYPH *glyph_list -) -{ - int i, j, n; - int nglyphs = face->num_glyphs; - FT_Vector k; - GLYPH *gl; - - if( nglyphs == 0 || !FT_HAS_KERNING(face) ) { - WARNING_1 fputs("No Kerning data\n", stderr); - return; - } - - for(i=0; i<nglyphs; i++) { - if( (glyph_list[i].flags & GF_USED) ==0) - continue; - for(j=0; j<nglyphs; j++) { - if( (glyph_list[j].flags & GF_USED) ==0) - continue; - if( FT_Get_Kerning(face, i, j, ft_kerning_unscaled, &k) ) - continue; - if( k.x == 0 ) - continue; - - addkernpair(i, j, k.x); - } - } -} - -#endif diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/global.h b/application/third_party/dompdf/lib/ttf2ufm/src/global.h deleted file mode 100644 index 1aaa572f..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/global.h +++ /dev/null @@ -1,173 +0,0 @@ -/* - * see COPYRIGHT - */ - - -/* options */ - -extern int encode; /* encode the resulting file */ -extern int pfbflag; /* produce compressed file */ -extern int wantafm; /* want to see .afm instead of .t1a on stdout */ -extern int correctvsize; /* try to correct the vertical size of characters */ -extern int wantuid; /* user wants UniqueID entry in the font */ -extern int allglyphs; /* convert all glyphs, not only 256 of them */ -extern int warnlevel; /* the level of permitted warnings */ -extern int forcemap; /* do mapping even on non-Unicode fonts */ -/* options - maximal limits */ -extern int max_stemdepth; /* maximal depth of stem stack in interpreter */ -/* options - debugging */ -extern int absolute; /* print out in absolute values */ -extern int reverse; /* reverse font to Type1 path directions */ -/* options - suboptions of Outline Processing */ -extern int optimize; /* enables space optimization */ -extern int smooth; /* enable smoothing of outlines */ -extern int transform; /* enables transformation to 1000x1000 matrix */ -extern int hints; /* enables autogeneration of hints */ -extern int subhints; /* enables autogeneration of substituted hints */ -extern int trybold; /* try to guess whether the font is bold */ -extern int correctwidth; /* try to correct the character width */ -extern int vectorize; /* vectorize the bitmaps */ -extern int use_autotrace; /* use the autotrace library on bitmap */ -/* options - suboptions of File Generation */ -extern int gen_pfa; /* generate the font file */ -extern int gen_afm; /* generate the metrics file */ -extern int gen_dvienc; /* generate the dvips encoding file */ - -/* not quite options to select a particular source encoding */ -extern int force_pid; /* specific platform id */ -extern int force_eid; /* specific encoding id */ - -/* other globals */ -extern FILE *null_file, *pfa_file, *afm_file, *ufm_file, *dvienc_file; -extern int numglyphs; - -/* warnings */ - -#define WARNING_1 if(warnlevel >= 1) -#define WARNING_2 if(warnlevel >= 2) -#define WARNING_3 if(warnlevel >= 3) -#define WARNING_4 if(warnlevel >= 4) - -/* - * Bitmap control macros - */ - -#define BITMAP_BYTES(size) (((size)+7)>>3) -#define DEF_BITMAP(name, size) unsigned char name[BITMAP_BYTES(size)] -#define SET_BITMAP(name, bit) ( name[(bit)>>3] |= (1<<((bit)&7)) ) -#define CLR_BITMAP(name, bit) ( name[(bit)>>3] &= ~(1<<((bit)&7)) ) -#define IS_BITMAP(name, bit) ( name[(bit)>>3] & (1<<((bit)&7)) ) - -/* debugging */ - -/* debug flags */ -#define DEBUG_UNICODE 0x00000001 /* unicode to 8-bit code conversion */ -#define DEBUG_MAINSTEMS 0x00000002 /* glyph-wide main stem generation */ -#define DEBUG_SUBSTEMS 0x00000004 /* substituted stem generation */ -#define DEBUG_STEMS (DEBUG_MAINSTEMS|DEBUG_SUBSTEMS) -#define DEBUG_REVERSAL 0x00000008 /* reversal of the paths */ -#define DEBUG_FIXCVDIR 0x00000010 /* fixcvdir() */ -#define DEBUG_STEMOVERLAP 0x00000020 /* stemoverlap() */ -#define DEBUG_BLUESTEMS 0x00000040 /* markbluestems() */ -#define DEBUG_STRAIGHTEN 0x00000080 /* markbluestems() */ -#define DEBUG_EXTMAP 0x00000100 /* parsing of external map */ -#define DEBUG_TOINT 0x00000200 /* conversion of path to integer */ -#define DEBUG_BUILDG 0x00000400 /* building of glyph path */ -#define DEBUG_QUAD 0x00000800 /* splitting curves by quadrants */ -#define DEBUG_SQEQ 0x00001000 /* square equation solver */ -#define DEBUG_COMPOSITE 0x00002000 /* handling of composite glyphs */ -#define DEBUG_FCONCISE 0x00004000 /* normalization of curves */ -#define DEBUG_FT 0x00008000 /* FreeType front-end */ -#define DEBUG_BITMAP 0x00010000 /* conversion from bitmap */ -#define DEBUG_DISABLED 0x80000000 /* special flag: temporary disable debugging */ - -/* at what we want to look now */ -#ifndef DEBUG -# define DEBUG (0) -#endif - -/* uncomment the next line if debugging data is wanted for one glyph only */ -/* #define DBG_GLYPH "C118" /* */ - -#if DEBUG==0 -# define ISDBG(name) (0) -# define ENABLEDBG(condition) (0) -# define DISABLEDBG(condition) (0) -#else - extern int debug; /* collection of the flags */ -/* this ISDBG will only work on ANSI C, not K&R */ -# define ISDBG(name) ( (debug & DEBUG_DISABLED) ? 0 : (debug & (DEBUG_##name)) ) -# define ENABLEDBG(condition) ( (condition) ? (debug&=~DEBUG_DISABLED) : 0 ) -# define DISABLEDBG(condition) ( (condition) ? (debug|=DEBUG_DISABLED) : 0 ) -#endif - -#ifdef DBG_GLYPH -# define DBG_TO_GLYPH(g) DISABLEDBG( strcmp( (g)->name, DBG_GLYPH ) ) -# define DBG_FROM_GLYPH(g) ENABLEDBG(1) -#else -# define DBG_TO_GLYPH(g) (0) -# define DBG_FROM_GLYPH(g) (0) -#endif - -/* prototypes */ -int iscale( int val); -double fscale( double val); -int unicode_rev_lookup( int unival); -void bmp_outline( GLYPH *g, int scale, char *bmap, - int xsz, int ysz, int xoff, int yoff); -int isign( int x); -int fsign( double x); -char *dupcnstring( unsigned char *s, int len); - -/* global metrics for a font */ - -struct font_metrics { - /* post */ - double italic_angle; - short underline_position; - short underline_thickness; - short is_fixed_pitch; - - /* hhea */ - short ascender; - short descender; - - /* head */ - unsigned short units_per_em; - short bbox[4]; - - /* name */ - char *name_copyright; - char *name_family; - char *name_style; - char *name_full; - char *name_version; - char *name_ps; - - /* other */ - int force_bold; -}; - -/* size of the encoding table - glyphs beyond 255 are actually unnumbered */ - -#define ENCTABSZ 1024 - -/* switch table structure for front-ends */ - -#define MAXSUFFIX 10 - -struct frontsw { - char *name; /* name of the front end */ - char *descr; /* description of the front end */ - char *suffix[MAXSUFFIX]; /* possible file name suffixes */ - - void (*open)(char *fname, char *arg); /* open font file */ - void (*close)(void); /* close font file */ - int (*nglyphs)(void); /* get the number of glyphs */ - int (*glnames)(GLYPH *glyphs); /* get the names of glyphs */ - void (*glmetrics)(GLYPH *glyphs); /* get the metrics of glyphs */ - int (*glenc)(GLYPH *glyphs, int *enc, int *unimap); /* get the encoding */ - void (*fnmetrics)(struct font_metrics *fm); /* get the font metrics */ - void (*glpath)(int glyphno, GLYPH *glyphs); /* get the glyph path */ - void (*kerning)(GLYPH *glyph_list); /* extract the kerning data */ -}; diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/maps/CP1250.map b/application/third_party/dompdf/lib/ttf2ufm/src/maps/CP1250.map deleted file mode 100644 index 34596a94..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/maps/CP1250.map +++ /dev/null @@ -1,254 +0,0 @@ -// CP1250 code encoding table with glyph renaming -// Petr Titera P.Titera@sh.cvut.cz - -!00 U+0000 .notdef -!01 U+0001 .notdef -!02 U+0002 .notdef -!03 U+0003 .notdef -!04 U+0004 .notdef -!05 U+0005 .notdef -!06 U+0006 .notdef -!07 U+0007 .notdef -!08 U+0008 .notdef -!09 U+0009 .notdef -!0A U+000A .notdef -!0B U+000B .notdef -!0C U+000C .notdef -!0D U+000D .notdef -!0E U+000E .notdef -!0F U+000F .notdef -!10 U+0010 .notdef -!11 U+0011 .notdef -!12 U+0012 .notdef -!13 U+0013 .notdef -!14 U+0014 .notdef -!15 U+0015 .notdef -!16 U+0016 .notdef -!17 U+0017 .notdef -!18 U+0018 .notdef -!19 U+0019 .notdef -!1A U+001A .notdef -!1B U+001B .notdef -!1C U+001C .notdef -!1D U+001D .notdef -!1E U+001E .notdef -!1F U+001F .notdef -!20 U+0020 space -!21 U+0021 exclam -!22 U+0022 quotedbl -!23 U+0023 numbersign -!24 U+0024 dollar -!25 U+0025 percent -!26 U+0026 ampersand -!27 U+0027 quote -!28 U+0028 parenleft -!29 U+0029 parenright -!2A U+002A asterisk -!2B U+002B plus -!2C U+002C comma -!2D U+002D minus -!2E U+002E period -!2F U+002F slash -!30 U+0030 zero -!31 U+0031 one -!32 U+0032 two -!33 U+0033 three -!34 U+0034 four -!35 U+0035 five -!36 U+0036 six -!37 U+0037 seven -!38 U+0038 eight -!39 U+0039 nine -!3A U+003A colon -!3B U+003B semicolon -!3C U+003C less -!3D U+003D equal -!3E U+003E greater -!3F U+003F question -!40 U+0040 at -!41 U+0041 A -!42 U+0042 B -!43 U+0043 C -!44 U+0044 D -!45 U+0045 E -!46 U+0046 F -!47 U+0047 G -!48 U+0048 H -!49 U+0049 I -!4A U+004A J -!4B U+004B K -!4C U+004C L -!4D U+004D M -!4E U+004E N -!4F U+004F O -!50 U+0050 P -!51 U+0051 Q -!52 U+0052 R -!53 U+0053 S -!54 U+0054 T -!55 U+0055 U -!56 U+0056 V -!57 U+0057 W -!58 U+0058 X -!59 U+0059 Y -!5A U+005A Z -!5B U+005B bracketleft -!5C U+005C backslash -!5D U+005D bracketright -!5E U+005E asciicircum -!5F U+005F underscore -!60 U+0060 grave -!61 U+0061 a -!62 U+0062 b -!63 U+0063 c -!64 U+0064 d -!65 U+0065 e -!66 U+0066 f -!67 U+0067 g -!68 U+0068 h -!69 U+0069 i -!6A U+006A j -!6B U+006B k -!6C U+006C l -!6D U+006D m -!6E U+006E n -!6F U+006F o -!70 U+0070 p -!71 U+0071 q -!72 U+0072 r -!73 U+0073 s -!74 U+0074 t -!75 U+0075 u -!76 U+0076 v -!77 U+0077 w -!78 U+0078 x -!79 U+0079 y -!7A U+007A z -!7B U+007B braceleft -!7C U+007C bar -!7D U+007D braceright -!7E U+007E asciitilde -!7F U+007F .notdef -!80 U+20AC .notdef -!82 U+201A quotesinglbase -!84 U+201E quotedblbase -!85 U+2026 ellipsis -!86 U+2020 dagger -!87 U+2021 daggerdbl -!89 U+2030 perthousand -!8A U+0160 Scaron -!8B U+2039 guilsinglleft -!8C U+015A Sacute -!8D U+0164 Tcaron -!8E U+017D Zcaron -!8F U+0179 Zacute -!91 U+2018 quotesinglleft -!92 U+2019 quotesinglright -!93 U+201C quotedblleft -!94 U+201D quotedblright -!95 U+2022 bullet -!96 U+2013 endash -!97 U+2014 emdash -!99 U+2122 trademark -!9A U+0161 scaron -!9B U+203A guilsinglright -!9C U+015B sacute -!9D U+0165 tcaron -!9E U+017E zcaron -!9F U+017A zacute -!A0 U+00A0 nbspace -!A1 U+02C7 caron -!A2 U+02D8 breve -!A3 U+0141 Lslash -!A4 U+00A4 currency -!A5 U+0104 Aogonek -!A6 U+00A6 brokenbar -!A7 U+00A7 section -!A8 U+00A8 dieresis -!A9 U+00A9 copyright -!AA U+015E Scedilla -!AB U+00AB guillemotleft -!AC U+00AC notsign -!AD U+00AD hyphen -!AE U+00AE registered -!AF U+017B Zdotaccent -!B0 U+00B0 degree -!B1 U+00B1 plusminus -!B2 U+02DB ogonek -!B3 U+0142 lslash -!B4 U+00B4 acute -!B5 U+00B5 mu -!B6 U+00B6 paragraph -!B7 U+2219 periodcentered -!B8 U+00B8 cedilla -!B9 U+0105 aogonek -!BA U+015F scedilla -!BB U+00BB guillemotright -!BC U+013D Lcaron -!BD U+02DD hungarumlaut -!BE U+013E lcaron -!BF U+017C zdotaccent -!C0 U+0154 Racute -!C1 U+00C1 Aacute -!C2 U+00C2 Acircumflex -!C3 U+0102 Abreve -!C4 U+00C4 Adieresis -!C5 U+0139 Lacute -!C6 U+0106 Cacute -!C7 U+00C7 Ccedilla -!C8 U+010C Ccaron -!C9 U+00C9 Eacute -!CA U+0118 Eogonek -!CB U+00CB Edieresis -!CC U+011A Ecaron -!CD U+00CD Iacute -!CE U+00CE Icircumflex -!CF U+010E Dcaron -!D0 U+00D0 Eth -!D1 U+0143 Nacute -!D2 U+0147 Ncaron -!D3 U+00D3 Oacute -!D4 U+00D4 Ocircumflex -!D5 U+0150 Ohungarumlaut -!D6 U+00D6 Odieresis -!D7 U+00D7 multiply -!D8 U+0158 Rcaron -!D9 U+016E Uring -!DA U+00DA Uacute -!DB U+0170 Uhungarumlaut -!DC U+00DC Udieresis -!DD U+00DD Yacute -!DE U+0162 Tcedilla -!DF U+00DF germandbls -!E0 U+0155 racute -!E1 U+00E1 aacute -!E2 U+00E2 acircumflex -!E3 U+0103 abreve -!E4 U+00E4 adieresis -!E5 U+013A lacute -!E6 U+0107 cacute -!E7 U+00E7 ccedilla -!E8 U+010D ccaron -!E9 U+00E9 eacute -!EA U+0119 eogonek -!EB U+00EB edieresis -!EC U+011B ecaron -!ED U+00ED iacute -!EE U+00EE icircumflex -!EF U+010F dcaron -!F0 U+0111 eth -!F1 U+0144 nacute -!F2 U+0148 ncaron -!F3 U+00F3 oacute -!F4 U+00F4 ocircumflex -!F5 U+0151 ohungarumlaut -!F6 U+00F6 odieresis -!F7 U+00F7 divide -!F8 U+0159 rcaron -!F9 U+016F uring -!FA U+00FA uacute -!FB U+0171 uhungarumlaut -!FC U+00FC udieresis -!FD U+00FD yacute -!FE U+0163 tcedilla -!FF U+02D9 dotaccent diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/maps/CP1251.map b/application/third_party/dompdf/lib/ttf2ufm/src/maps/CP1251.map deleted file mode 100644 index 3fd854d9..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/maps/CP1251.map +++ /dev/null @@ -1,245 +0,0 @@ -// CP1251 encoding table -// Zvezdan Petkovic <z.petkovic@computer.org> - -!00 U+0000 .notdef -!01 U+0001 .notdef -!02 U+0002 .notdef -!03 U+0003 .notdef -!04 U+0004 .notdef -!05 U+0005 .notdef -!06 U+0006 .notdef -!07 U+0007 .notdef -!08 U+0008 .notdef -!09 U+0009 .notdef -!0A U+000A .notdef -!0B U+000B .notdef -!0C U+000C .notdef -!0D U+000D .notdef -!0E U+000E .notdef -!0F U+000F .notdef -!10 U+0010 .notdef -!11 U+0011 .notdef -!12 U+0012 .notdef -!20 U+0020 space -!21 U+0021 exclam -!22 U+0022 quotedbl -!23 U+0023 numbersign -!24 U+0024 dollar -!25 U+0025 percent -!26 U+0026 ampersand -!27 U+0027 quote -!28 U+0028 parenleft -!29 U+0029 parenright -!2A U+002A asterisk -!2B U+002B plus -!2C U+002C comma -!2D U+002D minus -!2E U+002E period -!2F U+002F slash -!30 U+0030 zero -!31 U+0031 one -!32 U+0032 two -!33 U+0033 three -!34 U+0034 four -!35 U+0035 five -!36 U+0036 six -!37 U+0037 seven -!38 U+0038 eight -!39 U+0039 nine -!3A U+003A colon -!3B U+003B semicolon -!3C U+003C less -!3D U+003D equal -!3E U+003E greater -!3F U+003F question -!40 U+0040 at -!41 U+0041 A -!42 U+0042 B -!43 U+0043 C -!44 U+0044 D -!45 U+0045 E -!46 U+0046 F -!47 U+0047 G -!48 U+0048 H -!49 U+0049 I -!4A U+004A J -!4B U+004B K -!4C U+004C L -!4D U+004D M -!4E U+004E N -!4F U+004F O -!50 U+0050 P -!51 U+0051 Q -!52 U+0052 R -!53 U+0053 S -!54 U+0054 T -!55 U+0055 U -!56 U+0056 V -!57 U+0057 W -!58 U+0058 X -!59 U+0059 Y -!5A U+005A Z -!5B U+005B bracketleft -!5C U+005C backslash -!5D U+005D bracketright -!5E U+005E asciicircum -!5F U+005F underscore -!60 U+0060 grave -!61 U+0061 a -!62 U+0062 b -!63 U+0063 c -!64 U+0064 d -!65 U+0065 e -!66 U+0066 f -!67 U+0067 g -!68 U+0068 h -!69 U+0069 i -!6A U+006A j -!6B U+006B k -!6C U+006C l -!6D U+006D m -!6E U+006E n -!6F U+006F o -!70 U+0070 p -!71 U+0071 q -!72 U+0072 r -!73 U+0073 s -!74 U+0074 t -!75 U+0075 u -!76 U+0076 v -!77 U+0077 w -!78 U+0078 x -!79 U+0079 y -!7A U+007A z -!7B U+007B braceleft -!7C U+007C bar -!7D U+007D braceright -!7E U+007E asciitilde -!7F U+007F .notdef -!80 U+0402 cyr_DJE -!81 U+0403 cyr_GJE -!82 U+201A quotesinglbase -!83 U+0453 cyr_gje -!84 U+201E quotedblbase -!85 U+2026 ellipsis -!86 U+2020 dagger -!87 U+2021 daggerdbl -!88 U+20AC Euro -!89 U+2030 perthousand -!8A U+0409 cyr_LJE -!8B U+2039 guilsinglleft -!8C U+040A cyr_NJE -!8D U+040C cyr_KJE -!8E U+040B cyr_TSHE -!8F U+040F cyr_DZHE -!90 U+0452 cyr_dje -!91 U+2018 quotesinglleft -!92 U+2019 quotesinglright -!93 U+201C quotedblleft -!94 U+201D quotedblright -!95 U+2022 bullet -!96 U+2013 endash -!97 U+2014 emdash -!99 U+2122 trademark -!9A U+0459 cyr_lje -!9B U+203A guilsinglright -!9C U+045A cyr_nje -!9D U+045C cyr_kje -!9E U+045B cyr_tshe -!9F U+045F cyr_dzhe -!A0 U+00A0 nbspace -!A1 U+040E cyr_SHORT_U -!A2 U+045E cyr_short_u -!A3 U+0408 cyr_JE -!A4 U+00A4 currency -!A5 U+0490 cyr_GHE_UPTURN -!A6 U+00A6 brokenbar -!A7 U+00A7 section -!A8 U+0401 cyr_IO -!A9 U+00A9 copyright -!AA U+0404 cyr_UKRAINIAN_IE -!AB U+00AB guillemotleft -!AC U+00AC notsign -!AD U+00AD hyphen -!AE U+00AE registered -!AF U+0407 cyr_YI -!B0 U+00B0 degree -!B1 U+00B1 plusminus -!B2 U+0406 cyr_BYELORUSSIAN_UKRAINIAN_I -!B3 U+0456 cyr_byelorussian_ukrainian_i -!B4 U+0491 cyr_ghe_upturn -!B5 U+00B5 mu -!B6 U+00B6 paragraph -!B7 U+00B7 periodcentered -!B8 U+0451 cyr_io -!B9 U+2116 numero -!BA U+0454 cyr_ukrainian_ie -!BB U+00BB guillemotright -!BC U+0458 cyr_je -!BD U+0405 cyr_DZE -!BE U+0455 cyr_dze -!BF U+0457 cyr_yi -!C0 U+0410 cyr_A -!C1 U+0411 cyr_BE -!C2 U+0412 cyr_VE -!C3 U+0413 cyr_GHE -!C4 U+0414 cyr_DE -!C5 U+0415 cyr_IE -!C6 U+0416 cyr_ZHE -!C7 U+0417 cyr_ZE -!C8 U+0418 cyr_I -!C9 U+0419 cyr_SHORT_I -!CA U+041A cyr_KA -!CB U+041B cyr_EL -!CC U+041C cyr_EM -!CD U+041D cyr_EN -!CE U+041E cyr_O -!CF U+041F cyr_PE -!D0 U+0420 cyr_ER -!D1 U+0421 cyr_ES -!D2 U+0422 cyr_TE -!D3 U+0423 cyr_U -!D4 U+0424 cyr_EF -!D5 U+0425 cyr_HA -!D6 U+0426 cyr_TSE -!D7 U+0427 cyr_CHE -!D8 U+0428 cyr_SHA -!D9 U+0429 cyr_SHCHA -!DA U+042A cyr_HARD_SIGN -!DB U+042B cyr_YERU -!DC U+042C cyr_SOFT_SIGN -!DD U+042D cyr_E -!DE U+042E cyr_YU -!DF U+042F cyr_YA -!E0 U+0430 cyr_a -!E1 U+0431 cyr_be -!E2 U+0432 cyr_ve -!E3 U+0433 cyr_ghe -!E4 U+0434 cyr_de -!E5 U+0435 cyr_ie -!E6 U+0436 cyr_zhe -!E7 U+0437 cyr_ze -!E8 U+0438 cyr_i -!E9 U+0439 cyr_short_i -!EA U+043A cyr_ka -!EB U+043B cyr_el -!EC U+043C cyr_em -!ED U+043D cyr_en -!EE U+043E cyr_o -!EF U+043F cyr_pe -!F0 U+0440 cyr_er -!F1 U+0441 cyr_es -!F2 U+0442 cyr_te -!F3 U+0443 cyr_u -!F4 U+0444 cyr_ef -!F5 U+0445 cyr_ha -!F6 U+0446 cyr_tse -!F7 U+0447 cyr_che -!F8 U+0448 cyr_sha -!F9 U+0449 cyr_shcha -!FA U+044A cyr_hard_sign -!FB U+044B cyr_yeru -!FC U+044C cyr_soft_sign -!FD U+044D cyr_e -!FE U+044E cyr_yu -!FF U+044F cyr_ya diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/maps/T2A_compact.map b/application/third_party/dompdf/lib/ttf2ufm/src/maps/T2A_compact.map deleted file mode 100644 index c329b64a..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/maps/T2A_compact.map +++ /dev/null @@ -1,111 +0,0 @@ -// Map file to make PFA/PFB files with T2A encoding -// from TTF using ttf2pt1 package. See package documentation for details. -// The encoding is incomplete but some (many) glyphs do not exist in TTF. -// Mikhail Umorin mikeumo@obebox.com -//start at 0 -0x0060 -0x00B4 -0x02C6 -0x02DC -0x00A8 -0x02DD -0x02DA -0x02C7 -0x02D8 -0x00AF -0x02D9 -// at 0x000B (11) -// will set more later -0x00B8 -0x02DB -0x0130 -0x2039 -0x203A -0x201C -0x201D -0x0000 -0x0000 -0x0000 -0x2013 -0x2014 -0x0000 -0x0000 -0x0131 -0x0000 -0x0000 -0x0000 -0x0000 -0x0000 -0x0000 -// at 0x0020 (32) -0x0020-0x005F -// at 0x0060 (96) -0x2018 -// at 0x0061 (97) -0x0061-0x007E -0x00AD -//this ends the lower half of the table: 0x007F (127) -// at 0x008F -0x0490 -0x0000 -0x040B -0x0402 -0x0000 -0x0000 -0x0000 -0x0409 -0x0407 -0x0000 -0x0000 -0x0000 -0x00C6 -0x0000 -0x0000 -0x0405 -0x0000 -0x00C7 -0x040E -0x0000 -0x0000 -0x0000 -0x040F -0x0000 -0x0000 -0x0404 -0x0000 -// at 155 -0x040A, 0x0401, 0x2116, 0x00A4, 0x00A7 -// at A0 (160) -0x0491 -0x0000 -0x045B -0x0452 -0x0000 -0x0000 -0x0000 -0x0459 -0x0457 -0x0000 -0x0000 -0x0000 -0x00E6 -0x0000 -0x0000 -0x0455 -0x0000 -0x00E7 -0x045E -0x0000 -0x0000 -0x0000 -0x045F -0x0000 -0x0000 -0x0454 -0x0000 -// at 187 -0x045A, 0x0451, 0x201E, 0x00AB, 0x00BB -// at 192 -0x0410-0x044F -// this concludes the upper half of the table - diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/maps/adobe-standard-encoding.map b/application/third_party/dompdf/lib/ttf2ufm/src/maps/adobe-standard-encoding.map deleted file mode 100644 index 230d4a1e..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/maps/adobe-standard-encoding.map +++ /dev/null @@ -1,231 +0,0 @@ -// Adobe Standard Encoding table for ttf2pt1 -// Thomas Henlich <Thomas.Henlich@mailbox.tu-dresden.de> - -=20 U+0020 SPACE -=21 U+0021 EXCLAMATION MARK -=22 U+0022 QUOTATION MARK -=23 U+0023 NUMBER SIGN -=24 U+0024 DOLLAR SIGN -=25 U+0025 PERCENT SIGN -=26 U+0026 AMPERSAND -=27 U+2019 RIGHT SINGLE QUOTATION MARK -=28 U+0028 LEFT PARENTHESIS -=29 U+0029 RIGHT PARENTHESIS -=2A U+002A ASTERISK -=2B U+002B PLUS SIGN -=2C U+002C COMMA -=2D U+002D HYPHEN-MINUS -=2E U+002E FULL STOP -=2F U+002F SOLIDUS -=30 U+0030 DIGIT ZERO -=31 U+0031 DIGIT ONE -=32 U+0032 DIGIT TWO -=33 U+0033 DIGIT THREE -=34 U+0034 DIGIT FOUR -=35 U+0035 DIGIT FIVE -=36 U+0036 DIGIT SIX -=37 U+0037 DIGIT SEVEN -=38 U+0038 DIGIT EIGHT -=39 U+0039 DIGIT NINE -=3A U+003A COLON -=3B U+003B SEMICOLON -=3C U+003C LESS-THAN SIGN -=3D U+003D EQUALS SIGN -=3E U+003E GREATER-THAN SIGN -=3F U+003F QUESTION MARK -=40 U+0040 COMMERCIAL AT -=41 U+0041 LATIN CAPITAL LETTER A -=42 U+0042 LATIN CAPITAL LETTER B -=43 U+0043 LATIN CAPITAL LETTER C -=44 U+0044 LATIN CAPITAL LETTER D -=45 U+0045 LATIN CAPITAL LETTER E -=46 U+0046 LATIN CAPITAL LETTER F -=47 U+0047 LATIN CAPITAL LETTER G -=48 U+0048 LATIN CAPITAL LETTER H -=49 U+0049 LATIN CAPITAL LETTER I -=4A U+004A LATIN CAPITAL LETTER J -=4B U+004B LATIN CAPITAL LETTER K -=4C U+004C LATIN CAPITAL LETTER L -=4D U+004D LATIN CAPITAL LETTER M -=4E U+004E LATIN CAPITAL LETTER N -=4F U+004F LATIN CAPITAL LETTER O -=50 U+0050 LATIN CAPITAL LETTER P -=51 U+0051 LATIN CAPITAL LETTER Q -=52 U+0052 LATIN CAPITAL LETTER R -=53 U+0053 LATIN CAPITAL LETTER S -=54 U+0054 LATIN CAPITAL LETTER T -=55 U+0055 LATIN CAPITAL LETTER U -=56 U+0056 LATIN CAPITAL LETTER V -=57 U+0057 LATIN CAPITAL LETTER W -=58 U+0058 LATIN CAPITAL LETTER X -=59 U+0059 LATIN CAPITAL LETTER Y -=5A U+005A LATIN CAPITAL LETTER Z -=5B U+005B LEFT SQUARE BRACKET -=5C U+005C REVERSE SOLIDUS -=5D U+005D RIGHT SQUARE BRACKET -=5E U+005E CIRCUMFLEX ACCENT -=5F U+005F LOW LINE -=60 U+2018 LEFT SINGLE QUOTATION MARK -=61 U+0061 LATIN SMALL LETTER A -=62 U+0062 LATIN SMALL LETTER B -=63 U+0063 LATIN SMALL LETTER C -=64 U+0064 LATIN SMALL LETTER D -=65 U+0065 LATIN SMALL LETTER E -=66 U+0066 LATIN SMALL LETTER F -=67 U+0067 LATIN SMALL LETTER G -=68 U+0068 LATIN SMALL LETTER H -=69 U+0069 LATIN SMALL LETTER I -=6A U+006A LATIN SMALL LETTER J -=6B U+006B LATIN SMALL LETTER K -=6C U+006C LATIN SMALL LETTER L -=6D U+006D LATIN SMALL LETTER M -=6E U+006E LATIN SMALL LETTER N -=6F U+006F LATIN SMALL LETTER O -=70 U+0070 LATIN SMALL LETTER P -=71 U+0071 LATIN SMALL LETTER Q -=72 U+0072 LATIN SMALL LETTER R -=73 U+0073 LATIN SMALL LETTER S -=74 U+0074 LATIN SMALL LETTER T -=75 U+0075 LATIN SMALL LETTER U -=76 U+0076 LATIN SMALL LETTER V -=77 U+0077 LATIN SMALL LETTER W -=78 U+0078 LATIN SMALL LETTER X -=79 U+0079 LATIN SMALL LETTER Y -=7A U+007A LATIN SMALL LETTER Z -=7B U+007B LEFT CURLY BRACKET -=7C U+007C VERTICAL LINE -=7D U+007D RIGHT CURLY BRACKET -=7E U+007E TILDE -=A1 U+00A1 INVERTED EXCLAMATION MARK -=A2 U+00A2 CENT SIGN -=A3 U+00A3 POUND SIGN -=A4 U+2044 FRACTION SLASH -=A5 U+00A5 YEN SIGN -=A6 U+0192 LATIN SMALL LETTER F WITH HOOK -=A7 U+00A7 SECTION SIGN -=A8 U+00A4 CURRENCY SIGN -=A9 U+0027 APOSTROPHE -=AA U+201C LEFT DOUBLE QUOTATION MARK -=AB U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK -=AC U+2039 SINGLE LEFT-POINTING ANGLE QUOTATION MARK -=AD U+203A SINGLE RIGHT-POINTING ANGLE QUOTATION MARK -=AE U+FB01 LATIN SMALL LIGATURE FI -=AF U+FB02 LATIN SMALL LIGATURE FL -=B1 U+2013 EN DASH -=B2 U+2020 DAGGER -=B3 U+2021 DOUBLE DAGGER -=B4 U+00B7 MIDDLE DOT -=B6 U+00B6 PILCROW SIGN -=B7 U+2022 BULLET -=B8 U+201A SINGLE LOW-9 QUOTATION MARK -=B9 U+201E DOUBLE LOW-9 QUOTATION MARK -=BA U+201D RIGHT DOUBLE QUOTATION MARK -=BB U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -=BC U+2026 HORIZONTAL ELLIPSIS -=BD U+2030 PER MILLE SIGN -=BF U+00BF INVERTED QUESTION MARK -=C1 U+0060 GRAVE ACCENT -=C2 U+00B4 ACUTE ACCENT -=C3 U+02C6 MODIFIER LETTER CIRCUMFLEX ACCENT -=C4 U+02DC SMALL TILDE -=C5 U+00AF MACRON -=C6 U+02D8 BREVE -=C7 U+02D9 DOT ABOVE -=C8 U+00A8 DIAERESIS -=CA U+02DA RING ABOVE -=CB U+00B8 CEDILLA -=CD U+02DD DOUBLE ACUTE ACCENT -=CE U+02DB OGONEK -=CF U+02C7 CARON -=D0 U+2014 EM DASH -=E1 U+00C6 LATIN CAPITAL LETTER AE -=E3 U+00AA FEMININE ORDINAL INDICATOR -=E8 U+0141 LATIN CAPITAL LETTER L WITH STROKE -=E9 U+00D8 LATIN CAPITAL LETTER O WITH STROKE -=EA U+0152 LATIN CAPITAL LIGATURE OE -=EB U+00BA MASCULINE ORDINAL INDICATOR -=F1 U+00E6 LATIN SMALL LETTER AE -=F5 U+0131 LATIN SMALL LETTER DOTLESS I -=F8 U+0142 LATIN SMALL LETTER L WITH STROKE -=F9 U+00F8 LATIN SMALL LETTER O WITH STROKE -=FA U+0153 LATIN SMALL LIGATURE OE -=FB U+00DF LATIN SMALL LETTER SHARP S - -// unencoded characters: -=100 U+00E7 LATIN SMALL LETTER C WITH CEDILLA -=101 U+00FF LATIN SMALL LETTER Y WITH DIAERESIS -=102 U+00E3 LATIN SMALL LETTER A WITH TILDE -=103 U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX -=104 U+00B3 SUPERSCRIPT THREE -=105 U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX -=106 U+00FE LATIN SMALL LETTER THORN -=107 U+00E8 LATIN SMALL LETTER E WITH GRAVE -=108 U+00B2 SUPERSCRIPT TWO -=109 U+00E9 LATIN SMALL LETTER E WITH ACUTE -=10A U+00F5 LATIN SMALL LETTER O WITH TILDE -=10B U+00C1 LATIN CAPITAL LETTER A WITH ACUTE -=10C U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX -=10D U+00FD LATIN SMALL LETTER Y WITH ACUTE -=10E U+00FC LATIN SMALL LETTER U WITH DIAERESIS -=10F U+00BE VULGAR FRACTION THREE QUARTERS -=110 U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX -=111 U+00D0 LATIN CAPITAL LETTER ETH -=112 U+00EB LATIN SMALL LETTER E WITH DIAERESIS -=113 U+00F9 LATIN SMALL LETTER U WITH GRAVE -=114 U+2122 TRADE MARK SIGN -=115 U+00F2 LATIN SMALL LETTER O WITH GRAVE -=116 U+0161 LATIN SMALL LETTER S WITH CARON -=117 U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS -=118 U+00FA LATIN SMALL LETTER U WITH ACUTE -=119 U+00E0 LATIN SMALL LETTER A WITH GRAVE -=11A U+00F1 LATIN SMALL LETTER N WITH TILDE -=11B U+00E5 LATIN SMALL LETTER A WITH RING ABOVE -=11C U+017E LATIN SMALL LETTER Z WITH CARON -=11D U+00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX -=11E U+00D1 LATIN CAPITAL LETTER N WITH TILDE -=11F U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX -=120 U+00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX -=121 U+00CD LATIN CAPITAL LETTER I WITH ACUTE -=122 U+00C7 LATIN CAPITAL LETTER C WITH CEDILLA -=123 U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS -=124 U+0160 LATIN CAPITAL LETTER S WITH CARON -=125 U+00CC LATIN CAPITAL LETTER I WITH GRAVE -=126 U+00E4 LATIN SMALL LETTER A WITH DIAERESIS -=127 U+00D2 LATIN CAPITAL LETTER O WITH GRAVE -=128 U+00C8 LATIN CAPITAL LETTER E WITH GRAVE -=129 U+0178 LATIN CAPITAL LETTER Y WITH DIAERESIS -=12A U+00AE REGISTERED SIGN -=12B U+00D5 LATIN CAPITAL LETTER O WITH TILDE -=12C U+00BC VULGAR FRACTION ONE QUARTER -=12D U+00D9 LATIN CAPITAL LETTER U WITH GRAVE -=12E U+00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX -=12F U+00DE LATIN CAPITAL LETTER THORN -=130 U+00F7 DIVISION SIGN -=131 U+00C3 LATIN CAPITAL LETTER A WITH TILDE -=132 U+00DA LATIN CAPITAL LETTER U WITH ACUTE -=133 U+00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX -=134 U+00AC NOT SIGN -=135 U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE -=136 U+00EF LATIN SMALL LETTER I WITH DIAERESIS -=137 U+00ED LATIN SMALL LETTER I WITH ACUTE -=138 U+00E1 LATIN SMALL LETTER A WITH ACUTE -=139 U+00B1 PLUS-MINUS SIGN -=13A U+00D7 MULTIPLICATION SIGN -=13B U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS -=13C U+2212 MINUS SIGN -=13D U+00B9 SUPERSCRIPT ONE -=13E U+00C9 LATIN CAPITAL LETTER E WITH ACUTE -=13F U+00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX -=140 U+00A9 COPYRIGHT SIGN -=141 U+00C0 LATIN CAPITAL LETTER A WITH GRAVE -=142 U+00F6 LATIN SMALL LETTER O WITH DIAERESIS -=143 U+00F3 LATIN SMALL LETTER O WITH ACUTE -=144 U+00B0 DEGREE SIGN -=145 U+00EC LATIN SMALL LETTER I WITH GRAVE -=146 U+00B5 MICRO SIGN -=147 U+00D3 LATIN CAPITAL LETTER O WITH ACUTE -=148 U+00F0 LATIN SMALL LETTER ETH -=149 U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS -=14A U+00DD LATIN CAPITAL LETTER Y WITH ACUTE -=14B U+00A6 BROKEN BAR -=14C U+00BD VULGAR FRACTION ONE HALF diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/maps/cubg5plus.map b/application/third_party/dompdf/lib/ttf2ufm/src/maps/cubg5plus.map deleted file mode 100644 index 18f4d283..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/maps/cubg5plus.map +++ /dev/null @@ -1,3184 +0,0 @@ -# -# For unicode Big5+ Chinese fonts. -# -plane 01 -at 0x00 - 0x8488, 0x8710, 0x871F, 0x870F, 0x88D3, 0x8C87, 0x8CC6, 0x90CC, - 0x916D, 0x9258, 0x9242, 0x9268, 0x9269, 0x9243, 0x9247, 0x959D, - 0x96CF, 0x97F4, 0x9809, 0x98AB, 0x98FB, 0x9AAC, 0x9AAE, 0x9AAA, - 0x9B5C, 0x50DF, 0x5619, 0x560A, 0x589A, 0x5D85, 0x5E56, 0x5E51, - 0x5FB1, 0x645A, 0x6463, 0x669B, 0x66A3, 0x669E, 0x69B8, 0x69BA, - 0x69C7, 0x69D7, 0x6B70, 0x6B9D, 0x6F16, 0x6F24, 0x6F45, 0x7179, - 0x717A, 0x7254, 0x757C, 0x757B, 0x7612, 0x76B6, 0x76E0, 0x7773, - 0x7772, 0x7770, 0x789D, 0x7A27, 0x7A35, 0x7BA2, 0x7B89, 0x4E28, - 0x4E05, 0x4E04, 0x4E2A, 0x4E87, 0x4E49, 0x51E2, 0x4E46, 0x4E8F, - 0x4EBC, 0x4EBE, 0x5166, 0x51E3, 0x5204, 0x529C, 0x5344, 0x5F51, - 0x961D, 0x4E63, 0x4E62, 0x4EA3, 0x5185, 0x4EC5, 0x4ECF, 0x4ECE, - 0x4ECC, 0x5184, 0x5186, 0x51E4, 0x5205, 0x529E, 0x529D, 0x52FD, - 0x7BA5, 0x7CB6, 0x7DA5, 0x7DC3, 0x7FAB, 0x8025, 0x8059, 0x8185, - 0x818E, 0x84BE, 0x84A6, 0x872F, 0x89A0, 0x8A97, 0x8C8B, 0x8F0F, - 0x9275, 0x929F, 0x95A6, 0x969A, 0x9757, 0x97F7, 0x98B0, 0x99C6, - 0x50FA, 0x5285, 0x5643, 0x563C, 0x5BED, 0x5C35, 0x5F47, 0x616D, - 0x69F5, 0x6A03, 0x6A65, 0x6B75, 0x6F56, 0x6F98, 0x6F68, 0x7234, - 0x7245, 0x735C, 0x7356, 0x78BF, 0x78BD, 0x78E4, 0x7A34, 0x7A36, - 0x7BBA, 0x7BBC, 0x7BC8, 0x7BC3, 0x7BB6, 0x7BC2, 0x7BC5, 0x7BBD, - 0x7BB0, 0x7BBB, 0x7E04, 0x81F1, 0x8522, 0x8538, 0x8532, 0x8510, - 0x854F, 0x877C, 0x890D, 0x8908, 0x8D9E, 0x8F28, 0x8F21, 0x9066, - 0x906C, 0x90F6, 0x92EC, 0x92BA, 0x92E3, 0x92BD, 0x95B4, 0x97D1, - 0x9823, 0x990B, 0x9AB2, 0x9ADB, 0x9B73, 0x9B6E, 0x9B65, 0x9B6A, - 0x9B6D, 0x9D0B, 0x9E76, 0x9F11, 0x5119, 0x5675, 0x596F, 0x61A5, - 0x61A0, 0x65B4, 0x65D8, 0x66C2, 0x6BA8, 0x6F83, 0x6FC5, 0x71CD, - 0x729C, 0x7499, 0x7639, 0x762E, 0x769F, 0x76A0, 0x7794, 0x77AE, - 0x78E6, 0x7ABC, 0x7BD6, 0x7CCF, 0x7E18, 0x806D, 0x8190, 0x8552, - 0x8550, 0x87A0, 0x8786, 0x8795, 0x8860, 0x8928, 0x8920, 0x89A8, - 0x8E3A, 0x9194, 0x9311, 0x9337, 0x9343, 0x96A6, 0x9795, 0x9796, - 0x9825, 0x9926, 0x9934, 0x9B8A, 0x9B7F, 0x9D11, 0x9ED9, 0x9F3C, - 0x5123, 0x512C, 0x5295, 0x5688, 0x568B, 0x61E1, 0x61D7, 0x65A3, - 0x66D3, 0x6A8B, 0x6BAC, 0x7374, 0x7640, 0x5300, 0x533A, 0x5346, -plane 02 -at 0x00 - 0x535D, 0x5386, 0x53B7, 0x53CC, 0x53CE, 0x5721, 0x5E00, 0x5F0C, - 0x6237, 0x6238, 0x6535, 0x738D, 0x4E97, 0x4EE0, 0x4EE7, 0x4EE6, - 0x56D8, 0x518B, 0x518C, 0x5199, 0x51E5, 0x520B, 0x5304, 0x5303, - 0x5307, 0x531E, 0x535F, 0x536D, 0x5389, 0x53BA, 0x7641, 0x76E8, - 0x78F6, 0x7900, 0x7A59, 0x7A55, 0x7AF4, 0x7C04, 0x7C15, 0x7BF5, - 0x81C1, 0x857D, 0x85A5, 0x893A, 0x8E51, 0x9198, 0x9381, 0x936F, - 0x9842, 0x9937, 0x9BA9, 0x9BA7, 0x9BAC, 0x9B9C, 0x9D3C, 0x9D1C, - 0x9D3A, 0x9D32, 0x9D34, 0x9F3F, 0x5EEB, 0x61D5, 0x6502, 0x7012, - 0x7585, 0x7654, 0x7655, 0x76A7, 0x76A8, 0x790F, 0x7CE4, 0x7CE5, - 0x7E65, 0x7E4E, 0x7F82, 0x802D, 0x85CA, 0x85BC, 0x8CFF, 0x91A6, - 0x93B6, 0x93AB, 0x97A7, 0x983E, 0x9BBC, 0x9BB7, 0x9BBE, 0x9D62, - 0x9E8F, 0x9ECB, 0x56A9, 0x5913, 0x5BF4, 0x61EC, 0x61EF, 0x6AD6, - 0x7209, 0x7379, 0x74C6, 0x77C3, 0x791F, 0x7A65, 0x7AC6, 0x7C3A, - 0x7CEB, 0x7F84, 0x85E0, 0x85F3, 0x881E, 0x89B4, 0x89F9, 0x8B44, - 0x8E71, 0x8E6E, 0x8E79, 0x8EC4, 0x908C, 0x93C9, 0x97B0, 0x985A, - 0x9946, 0x9AC3, 0x9B0F, 0x9BF4, 0x9BFA, 0x9BDD, 0x9BED, 0x9BEF, - 0x9E96, 0x9EB3, 0x9EE2, 0x9F8F, 0x56B1, 0x5B41, 0x6AF6, 0x6AF2, - 0x7588, 0x8267, 0x860E, 0x8D0E, 0x91B6, 0x942F, 0x97E0, 0x97DB, - 0x9861, 0x9A33, 0x9C0F, 0x9C11, 0x9C03, 0x9C01, 0x9C16, 0x9D93, - 0x535B, 0x56BF, 0x5DCE, 0x76AC, 0x77D2, 0x7C52, 0x8B76, 0x8EC7, - 0x9434, 0x943E, 0x97BC, 0x9B39, 0x9C2A, 0x9C26, 0x9C27, 0x9DC0, - 0x9DC9, 0x9EEC, 0x9F68, 0x8032, 0x8031, 0x89FD, 0x908E, 0x97C2, - 0x9A4B, 0x9B1C, 0x9B1B, 0x9C42, 0x56D0, 0x56CF, 0x5DDA, 0x66EA, - 0x8B89, 0x9458, 0x9DE7, 0x53D0, 0x53F6, 0x53F7, 0x53F9, 0x53F4, - 0x5724, 0x5904, 0x5918, 0x5932, 0x5930, 0x5934, 0x5975, 0x5B82, - 0x5BF9, 0x5C14, 0x5E81, 0x5E83, 0x5F0D, 0x5F52, 0x5FCA, 0x5FC7, - 0x6239, 0x624F, 0x65E7, 0x672F, 0x6B7A, 0x6C39, 0x6C37, 0x6C44, - 0x6C45, 0x738C, 0x9093, 0x9092, 0x9DEA, 0x9DF1, 0x9F44, 0x9F6D, - 0x5DD9, 0x883A, 0x8975, 0x9A5D, 0x9C64, 0x9E0A, 0x9F73, 0x77E1, - 0x9B2D, 0x9E0C, 0x9F1F, 0x7C70, 0x9479, 0x974A, 0x7E9D, 0x9960, - 0x9F9E, 0x9EF8, 0x9F3A, 0x9F7D, 0x9F96, 0x6729, 0x5E07, 0x5FCB, - 0x52B7, 0x52B8, 0x52B6, 0x52BA, 0x6306, 0x6B85, 0x8C38, 0x7309, -plane 03 -at 0x00 - 0x8A2F, 0x52DC, 0x5921, 0x5E3F, 0x7B3F, 0x83D0, 0x86E7, 0x6117, - 0x8714, 0x88D1, 0x8CCB, 0x8EED, 0x52EC, 0x52E8, 0x7527, 0x798C, - 0x7991, 0x8660, 0x9904, 0x999B, 0x729F, 0x8770, 0x8E37, 0x9703, - 0x52F6, 0x64CC, 0x764A, 0x7AB9, 0x7BD7, 0x999F, 0x9B8D, 0x9E77, - 0x764B, 0x76A2, 0x87F1, 0x9BBA, 0x8804, 0x9BD8, 0x9D7C, 0x7C46, - 0x9D8D, 0x957E, 0x9C20, 0x9C22, 0x9C1E, 0x8970, 0x9C43, 0x9DE0, - 0x9459, 0x9C72, 0x6530, 0x72DD, 0x6804, 0x82FF, 0x8FEC, 0x53DE, - 0x5A30, 0x5BB2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0x4E21, 0x4E20, 0x4E22, 0x4E68, 0x4E89, 0x4E98, 0x4EF9, - 0x4EEF, 0x4EF8, 0x4F06, 0x4F03, 0x4EFC, 0x4EEE, 0x4F16, 0x4F28, - 0x4F1C, 0x4F07, 0x4F1A, 0x4EFA, 0x4F17, 0x514A, 0x5172, 0x51B4, - 0x51B3, 0x51B2, 0x51E8, 0x5214, 0x520F, 0x5215, 0x5218, 0x52A8, - 0x534B, 0x534F, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane 04 -at 0x00 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0x5350, - 0x538B, 0x53BE, 0x53D2, 0x5416, 0x53FF, 0x5400, 0x5405, 0x5413, - 0x5415, 0x56E3, 0x5735, 0x5736, 0x5731, 0x5732, 0x58EE, 0x5905, - 0x4E54, 0x5936, 0x597A, 0x5986, 0x5B86, 0x5F53, 0x5C18, 0x5C3D, - 0x5C78, 0x5C80, 0x5E08, 0x5EF5, 0x5F0E, 0x5FD3, 0x5FDA, 0x5FDB, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0x620F, 0x625D, 0x625F, - 0x6267, 0x6257, 0x9F50, 0x65EB, 0x65EA, 0x6737, 0x6732, 0x6736, -plane 05 -at 0x00 - 0x6B22, 0x6BCE, 0x6C58, 0x6C51, 0x6C77, 0x6C3C, 0x6C5A, 0x6C53, - 0x706F, 0x7072, 0x706E, 0x7073, 0x72B1, 0x72B2, 0x738F, 0x793C, - 0x808D, 0x808E, 0x827B, 0x8D71, 0x8FB9, 0x9096, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0x909A, 0x4E24, 0x4E71, 0x4E9C, 0x4F45, - 0x4F4A, 0x4F39, 0x4F37, 0x4F32, 0x4F42, 0x4F44, 0x4F4B, 0x4F40, - 0x4F35, 0x4F31, 0x5151, 0x5150, 0x514E, 0x519D, 0x51B5, 0x51B8, - 0x51EC, 0x5223, 0x5227, 0x5226, 0x521F, 0x522B, 0x5220, 0x52B4, - 0x52B3, 0x5325, 0x533B, 0x5374, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane 06 -at 0x00 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0x544D, 0x543A, 0x5444, 0x544C, 0x5423, 0x541A, 0x5432, - 0x544B, 0x5421, 0x5434, 0x5449, 0x5450, 0x5422, 0x543F, 0x5451, - 0x545A, 0x542F, 0x56E9, 0x56F2, 0x56F3, 0x56EF, 0x56ED, 0x56EC, - 0x56E6, 0x5748, 0x5744, 0x573F, 0x573C, 0x5753, 0x5756, 0x575F, - 0x5743, 0x5758, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane 07 -at 0x00 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0x5757, - 0x5746, 0x573D, 0x5742, 0x5754, 0x5755, 0x58F1, 0x58F2, 0x58F0, - 0x590B, 0x9EA6, 0x56F1, 0x593D, 0x5994, 0x598C, 0x599C, 0x599F, - 0x599B, 0x5989, 0x599A, 0x6588, 0x5B8D, 0x5BFE, 0x5BFF, 0x5BFD, - 0x5C2B, 0x5C84, 0x5C8E, 0x5C9C, 0x5C85, 0x5DF5, 0x5E09, 0x5E0B, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0x5E92, 0x5E90, 0x5F03, - 0x5F1E, 0x5F63, 0x5FE7, 0x5FFE, 0x5FE6, 0x5FDC, 0x5FCE, 0x5FFC, - 0x5FDF, 0x5FEC, 0x5FF6, 0x5FF2, 0x5FF0, 0x5FF9, 0x6213, 0x623B, -plane 08 -at 0x00 - 0x623C, 0x6282, 0x6278, 0x628B, 0x629E, 0x62A5, 0x629B, 0x629C, - 0x6299, 0x628D, 0x6285, 0x629D, 0x6275, 0x65F6, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0x66F5, 0x675B, 0x6754, 0x6752, 0x6758, - 0x6744, 0x674A, 0x6761, 0x6C7F, 0x6C91, 0x6C9E, 0x6C6E, 0x6C7C, - 0x6C9F, 0x6C75, 0x6C56, 0x6CA2, 0x6C79, 0x6CA1, 0x6CAA, 0x6CA0, - 0x7079, 0x7077, 0x707E, 0x7075, 0x707B, 0x7264, 0x72BB, 0x72BC, - 0x72C7, 0x72B9, 0x72BE, 0x72B6, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane 09 -at 0x00 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0x7398, 0x7593, 0x7680, 0x7683, 0x76C0, 0x76C1, 0x77F4, - 0x77F5, 0x7ACC, 0x7ACD, 0x7CFA, 0x809F, 0x8091, 0x8097, 0x8094, - 0x8286, 0x828C, 0x8295, 0x866C, 0x8FBE, 0x8FC7, 0x8FC1, 0x90A9, - 0x90A4, 0x90A8, 0x9627, 0x9626, 0x962B, 0x9633, 0x9634, 0x9629, - 0x4E3D, 0x4E9D, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane 10 -at 0x00 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0x4F93, - 0x4F8A, 0x4F6D, 0x4F8E, 0x4FA0, 0x4FA2, 0x4FA1, 0x4F9F, 0x4FA3, - 0x4F72, 0x4F8C, 0x5156, 0x5190, 0x51ED, 0x51FE, 0x522F, 0x523C, - 0x5234, 0x5239, 0x52B9, 0x52B5, 0x52BF, 0x5355, 0x5376, 0x537A, - 0x5393, 0x53C1, 0x53C2, 0x53D5, 0x5485, 0x545F, 0x5493, 0x5489, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0x8038, 0x8081, - 0x8158, 0x8A24, 0x8DC3, 0x51F2, 0x55B6, 0x5EC3, 0x7861, 0x7A01, - 0x8849, 0x8999, 0x921F, 0x5313, 0x55E0, 0x6139, 0x6ED7, 0x733D, - 0x9775, 0x7FE4, 0x8088, 0x5655, 0x617F, 0x71D7, 0x8666, 0x8F3A, - 0x933D, 0x64F5, 0x7F80, 0x8D01, 0x58E1, 0x7CE9, 0x81CB, 0x95D9, - 0x6707, 0x9A47, 0x7674, 0x5301, 0x53FA, 0x9F99, 0x6C49, 0x8FB7, - 0x4F29, 0x534E, 0x5C81, 0x5F10, 0x6268, 0x6742, 0x6740, 0x51EA, - 0x6C62, 0x7391, 0x8FBB, 0x8FBC, 0x56E8, 0x575B, 0x5C97, 0x6762, - 0x62A4, 0x6766, 0x6CA3, 0x707F, 0x77F6, 0x5479, 0x9EFE, 0x548F, - 0x5469, 0x546D, 0x5494, 0x546A, 0x548A, 0x56FD, 0x56FB, 0x56F8, - 0x56FC, 0x56F6, 0x5765, 0x5781, 0x5763, 0x5767, 0x576E, 0x5778, - 0x577F, 0x58F3, 0x594B, 0x594C, 0x59AD, 0x59C4, 0x59C2, 0x59B0, -plane 11 -at 0x00 - 0x59BF, 0x59C9, 0x59B8, 0x59AC, 0x59B7, 0x59D7, 0x8FC8, 0x4FAB, - 0x5C2D, 0x549C, 0x5788, 0x62C3, 0x6619, 0x67A1, 0x67A6, 0x77FE, - 0x7F57, 0x82C5, 0x8FDF, 0x8FDC, 0x4FE4, 0x551B, 0x57AA, 0x57AB, - 0x5BA9, 0x6811, 0x7551, 0x7553, 0x7818, 0x7AD7, 0x7C7E, 0x867E, - 0x5266, 0x5520, 0x5521, 0x57D7, 0x5BBE, 0x6857, 0x7F3C, 0x8273, - 0x96BE, 0x66FA, 0x5A72, 0x68BD, 0x6E15, 0x7413, 0x74F8, 0x7B3D, - 0x76D8, 0x79FC, 0x7B39, 0x7D4B, 0x83B9, 0x86CF, 0x8EAE, 0x96EB, - 0x55B0, 0x5840, 0x5842, 0x692B, 0x6916, 0x691B, 0x6927, 0x6BF5, - 0x6E82, 0x6E7A, 0x7129, 0x7CAB, 0x7CAC, 0x83F7, 0x9596, 0x55F1, - 0x5F41, 0x698A, 0x698C, 0x6980, 0x697F, 0x789C, 0x7B7B, 0x90D2, - 0x95A0, 0x51A9, 0x7195, 0x7198, 0x7478, 0x78B9, 0x7A33, 0x7CC0, - 0x7CC1, 0x8744, 0x9064, 0x9277, 0x92AF, 0x5E64, 0x6A2B, 0x6F46, - 0x6F9A, 0x92F2, 0x9B79, 0x567A, 0x5F5C, 0x65D9, 0x6A72, 0x6A78, - 0x6B5A, 0x8EBE, 0x933B, 0x9340, 0x933A, 0x9B96, 0x71F5, 0x7A50, - 0x9387, 0x9385, 0x9BB1, 0x9D47, 0x93B9, 0x93BF, 0x9BCF, 0x9D64, - 0x9EBF, 0x89B8, 0x9BF3, 0x7C4F, 0x9425, 0x95E6, 0x9C2F, 0x6B0C, - 0x9C47, 0x7936, 0x6B15, 0x53B5, 0x4F66, 0x4F68, 0x4FE7, 0x503F, - 0x50A6, 0x510F, 0x523E, 0x5324, 0x5365, 0x539B, 0x517F, 0x54CB, - 0x5573, 0x5571, 0x556B, 0x55F4, 0x5622, 0x5620, 0x5692, 0x56BA, - 0x5691, 0x56B0, 0x5759, 0x578A, 0x580F, 0x5812, 0x5813, 0x5847, - 0x589B, 0x5900, 0x594D, 0x5B60, 0x5B96, 0x5B9E, 0x5B94, 0x5B9F, - 0x5B9D, 0x5C00, 0x5C19, 0x5C49, 0x5C4A, 0x5CBB, 0x5CC1, 0x5CB9, - 0x5C9E, 0x5CB4, 0x5CBA, 0x5DF6, 0x5E13, 0x5E12, 0x5E77, 0x5E98, - 0x5E99, 0x5E9D, 0x5EF8, 0x5EF9, 0x5F06, 0x5F21, 0x5F25, 0x5F55, - 0x5F84, 0x5F83, 0x6030, 0x6007, 0x5AD1, 0x5AD3, 0x5B67, 0x5C57, - 0x5C77, 0x5CD5, 0x5D75, 0x5D8E, 0x5DA5, 0x5DB6, 0x5DBF, 0x5E65, - 0x5ECD, 0x5EED, 0x5F94, 0x5F9A, 0x5FBA, 0x6125, 0x6150, 0x62A3, - 0x6360, 0x6364, 0x63B6, 0x6403, 0x64B6, 0x651A, 0x7A25, 0x5C21, - 0x66E2, 0x6702, 0x67A4, 0x67AC, 0x6810, 0x6806, 0x685E, 0x685A, - 0x692C, 0x6929, 0x6A2D, 0x6A77, 0x6A7A, 0x6ACA, 0x6AE6, 0x6AF5, - 0x6B0D, 0x6B0E, 0x6BDC, 0x6BDD, 0x6BF6, 0x6C1E, 0x6C63, 0x6DA5, - 0x6E0F, 0x6E8A, 0x6E84, 0x6E8B, 0x6E7C, 0x6F4C, 0x6F48, 0x6F49, -plane 12 -at 0x00 - 0x6F9D, 0x6F99, 0x6FF8, 0x702E, 0x702D, 0x705C, 0x79CC, 0x70BF, - 0x70EA, 0x70E5, 0x7111, 0x7112, 0x713F, 0x7139, 0x713B, 0x713D, - 0x7177, 0x7175, 0x7176, 0x7171, 0x7196, 0x7193, 0x71B4, 0x71DD, - 0x71DE, 0x720E, 0x5911, 0x7218, 0x7347, 0x7348, 0x73EF, 0x7412, - 0x743B, 0x74A4, 0x748D, 0x74B4, 0x7673, 0x7677, 0x76BC, 0x7819, - 0x781B, 0x783D, 0x7853, 0x7854, 0x7858, 0x78B7, 0x78D8, 0x78EE, - 0x7922, 0x794D, 0x7986, 0x7999, 0x79A3, 0x79BC, 0x7AA7, 0x7B37, - 0x7B59, 0x7BD0, 0x7C2F, 0x7C32, 0x7C42, 0x7C4E, 0x7C68, 0x7CA9, - 0x7CED, 0x7DD0, 0x7E07, 0x7DD3, 0x7E64, 0x7F40, 0x8041, 0x8063, - 0x80BB, 0x6711, 0x6725, 0x8248, 0x8310, 0x8362, 0x8312, 0x8421, - 0x841E, 0x84E2, 0x84DE, 0x84E1, 0x8573, 0x85D4, 0x85F5, 0x8637, - 0x8645, 0x8672, 0x874A, 0x87A9, 0x87A5, 0x87F5, 0x8834, 0x8850, - 0x8887, 0x6036, 0x5FE9, 0x603D, 0x6008, 0x62BA, 0x62B2, 0x62B7, - 0x62E4, 0x62A7, 0x62D5, 0x62E1, 0x62DD, 0x62A6, 0x62C1, 0x62C5, - 0x62C0, 0x62DF, 0x62E0, 0x62DE, 0x6589, 0x65A6, 0x65BA, 0x65FF, - 0x6617, 0x6618, 0x6601, 0x65FE, 0x670C, 0x676B, 0x6796, 0x6782, - 0x678A, 0x67A3, 0x8954, 0x8984, 0x8B03, 0x8C52, 0x8CD8, 0x8D0C, - 0x8D18, 0x8DB0, 0x8EBC, 0x8ED5, 0x8FAA, 0x909C, 0x915C, 0x922B, - 0x9221, 0x9273, 0x92F4, 0x92F5, 0x933F, 0x9342, 0x9386, 0x93BE, - 0x93BC, 0x93BD, 0x93F1, 0x93F2, 0x93EF, 0x9422, 0x9423, 0x9424, - 0x9467, 0x9466, 0x9597, 0x95CE, 0x95E7, 0x973B, 0x974D, 0x98E4, - 0x9942, 0x9B1D, 0x9B98, 0x9D49, 0x6449, 0x5E71, 0x5E85, 0x61D3, - 0x990E, 0x8002, 0x781E, 0x5528, 0x5572, 0x55BA, 0x55F0, 0x55EE, - 0x56B8, 0x56B9, 0x56C4, 0x8053, 0x92B0, 0x4E13, 0x4E1A, 0x4E1B, - 0x4E1C, 0x4E1D, 0x4E25, 0x4E27, 0x4E2C, 0x4E34, 0x4E3A, 0x4E3E, - 0x4E4C, 0x4E50, 0x4E60, 0x4E61, 0x4E66, 0x4E70, 0x4E78, 0x4E9A, - 0x4EA7, 0x4EA9, 0x4EAA, 0x4EB5, 0x4EB8, 0x4EBB, 0x4EBF, 0x4ED1, - 0x4ED3, 0x4EEA, 0x4EEB, 0x4EEC, 0x4F1E, 0x4F1F, 0x4F20, 0x4F21, - 0x4F23, 0x4F24, 0x4F25, 0x4F26, 0x4F27, 0x4F2A, 0x4F2B, 0x4F65, - 0x4FA5, 0x4FA6, 0x4FA7, 0x4FA8, 0x4FA9, 0x4FAA, 0x4FAC, 0x4FE6, - 0x4FE8, 0x4FEA, 0x4FEB, 0x4FED, 0x503A, 0x503D, 0x503E, 0x507E, - 0x507F, 0x50A4, 0x50A5, 0x50A7, 0x50A8, 0x50A9, 0x5170, 0x5174, -plane 13 -at 0x00 - 0x517B, 0x517D, 0x5181, 0x519A, 0x519B, 0x519C, 0x51A7, 0x51AE, - 0x51AF, 0x51BB, 0x51EB, 0x51EF, 0x51FB, 0x51FC, 0x51FF, 0x520D, - 0x5219, 0x521A, 0x521B, 0x522C, 0x522D, 0x523F, 0x5240, 0x5242, - 0x5250, 0x5251, 0x528F, 0x52A1, 0x52A2, 0x52B2, 0x52CB, 0x67A2, - 0x678F, 0x67F9, 0x6780, 0x6B26, 0x6B27, 0x6B68, 0x6B69, 0x6B81, - 0x6BB4, 0x6BD1, 0x6C1C, 0x6C97, 0x6C6C, 0x6CDF, 0x6CEA, 0x6CE4, - 0x6CD8, 0x6CB2, 0x6CCE, 0x6CC8, 0x708B, 0x7088, 0x7090, 0x708F, - 0x7087, 0x7089, 0x708D, 0x7081, 0x708C, 0x7240, 0x7265, 0x7266, - 0x52DA, 0x5326, 0x532E, 0x5356, 0x5362, 0x536B, 0x5385, 0x538C, - 0x538D, 0x5390, 0x5395, 0x53A2, 0x53A3, 0x53BF, 0x53C6, 0x53C7, - 0x53D1, 0x53D8, 0x53FE, 0x5417, 0x5452, 0x5453, 0x5456, 0x5457, - 0x5458, 0x5459, 0x545B, 0x545C, 0x5497, 0x5499, 0x549B, 0x549D, - 0x54D1, 0x54D2, 0x54D3, 0x54D4, 0x54D5, 0x54D7, 0x54D9, 0x54DC, - 0x54DD, 0x54DF, 0x551D, 0x551E, 0x5522, 0x5523, 0x5524, 0x5525, - 0x5567, 0x556C, 0x556D, 0x556E, 0x556F, 0x5570, 0x5574, 0x5578, - 0x5579, 0x55B7, 0x55B9, 0x55BC, 0x55BE, 0x55EB, 0x55EC, 0x55F3, - 0x55F5, 0x5621, 0x5623, 0x5624, 0x5625, 0x565C, 0x565D, 0x567C, - 0x56A1, 0x56A3, 0x56A4, 0x56D6, 0x56E2, 0x56F4, 0x56F5, 0x56FE, - 0x5706, 0x5719, 0x5739, 0x573A, 0x575A, 0x575C, 0x575D, 0x575E, - 0x5760, 0x5784, 0x5785, 0x57AD, 0x57AF, 0x57B1, 0x57B2, 0x57D8, - 0x57D9, 0x57DA, 0x5811, 0x5816, 0x5846, 0x5899, 0x58B6, 0x58CB, - 0x58EA, 0x58F6, 0x58F8, 0x5907, 0x5939, 0x593A, 0x5941, 0x5942, - 0x5956, 0x5987, 0x5988, 0x59A9, 0x59AA, 0x59AB, 0x5A05, 0x5A06, - 0x5A07, 0x5A08, 0x5A32, 0x5A34, 0x5A74, 0x5A76, 0x5AAD, 0x5AD2, - 0x5AD4, 0x5AF1, 0x5AF2, 0x5B59, 0x5B6D, 0x5BA0, 0x5BA1, 0x5BAA, - 0x5BBD, 0x5BFB, 0x5BFC, 0x5C1C, 0x5C1D, 0x5C27, 0x5C34, 0x5C42, - 0x5C43, 0x5C66, 0x5C72, 0x5C7F, 0x5C82, 0x5C83, 0x5C96, 0x5C98, - 0x5C99, 0x5C9A, 0x5C9B, 0x5CBD, 0x5CBF, 0x7268, 0x72CD, 0x72D3, - 0x72DB, 0x72CF, 0x73A7, 0x73A3, 0x739E, 0x73AF, 0x73AA, 0x739C, - 0x7542, 0x7544, 0x753B, 0x7541, 0x759B, 0x759E, 0x79C4, 0x79C3, - 0x79C6, 0x79C7, 0x79CA, 0x7ACF, 0x7C76, 0x7C74, 0x7CFF, 0x7CFC, - 0x7F59, 0x80A8, 0x80B0, 0x80B3, 0x80A4, 0x80B6, 0x5CC2, 0x5CC3, -plane 14 -at 0x00 - 0x5CC4, 0x5CE3, 0x5CE4, 0x5CE7, 0x5D02, 0x5D03, 0x5D04, 0x5D05, - 0x5D2D, 0x5D58, 0x5D5A, 0x5D5D, 0x5DC5, 0x5DEF, 0x5E05, 0x5E0F, - 0x5E10, 0x5E1C, 0x5E26, 0x5E27, 0x5E31, 0x5E3B, 0x5E3C, 0x5E86, - 0x5E91, 0x5E93, 0x5E94, 0x5E9E, 0x5E9F, 0x5EBC, 0x5F20, 0x5F2A, - 0x5F5F, 0x5F68, 0x5F7B, 0x5F95, 0x6001, 0x6002, 0x6003, 0x6004, - 0x6005, 0x6006, 0x603B, 0x603C, 0x603F, 0x6076, 0x6078, 0x6079, - 0x607A, 0x607B, 0x607D, 0x60AB, 0x60AC, 0x60AD, 0x60AF, 0x60EB, - 0x60EC, 0x60ED, 0x60EF, 0x6124, 0x6126, 0x6151, 0x61D1, 0x61D2, - 0x61D4, 0x6206, 0x620B, 0x6217, 0x6269, 0x626A, 0x626B, 0x626C, - 0x629F, 0x62A0, 0x62A1, 0x62A2, 0x62E2, 0x62E3, 0x62E6, 0x62E7, - 0x62E8, 0x62E9, 0x631A, 0x631C, 0x631D, 0x631E, 0x6320, 0x6322, - 0x6324, 0x6325, 0x6326, 0x635E, 0x635F, 0x6361, 0x6362, 0x6363, - 0x63B3, 0x63B7, 0x63B8, 0x63B9, 0x63BC, 0x63FB, 0x63FC, 0x63FD, - 0x63FF, 0x6400, 0x6401, 0x6402, 0x6404, 0x6405, 0x6444, 0x6445, - 0x6448, 0x644A, 0x6484, 0x64B5, 0x64B7, 0x64B8, 0x64BA, 0x64DD, - 0x64DE, 0x6512, 0x6569, 0x6586, 0x658F, 0x6593, 0x65A9, 0x65F7, - 0x65F8, 0x663D, 0x663E, 0x6653, 0x6654, 0x6655, 0x6656, 0x6682, - 0x66A7, 0x6743, 0x6767, 0x6768, 0x6769, 0x67A5, 0x67A7, 0x67A8, - 0x67AA, 0x67AB, 0x67AD, 0x67FD, 0x6807, 0x6808, 0x6809, 0x680A, - 0x680B, 0x680C, 0x680E, 0x80A7, 0x80AC, 0x80A6, 0x5367, 0x820E, - 0x82C4, 0x833E, 0x829C, 0x82AA, 0x82C9, 0x82A6, 0x82B2, 0x8FCC, - 0x8FD9, 0x8FCA, 0x8FD8, 0x8FCF, 0x90B7, 0x90AD, 0x90B9, 0x9637, - 0x9641, 0x963E, 0x9751, 0x9763, 0x4E57, 0x4E79, 0x4EB2, 0x4EB0, - 0x4EAF, 0x4EB1, 0x4FD2, 0x4FD5, 0x680F, 0x6860, 0x6861, 0x6862, - 0x6864, 0x6865, 0x6866, 0x6868, 0x6869, 0x686A, 0x68BE, 0x68BF, - 0x68C0, 0x691D, 0x691F, 0x6920, 0x6924, 0x692D, 0x6984, 0x6987, - 0x6988, 0x6989, 0x69DA, 0x69DB, 0x69DC, 0x69DF, 0x69E0, 0x6A2F, - 0x6A31, 0x6A79, 0x6A7C, 0x6AA9, 0x6B7C, 0x6B87, 0x6B92, 0x6B93, - 0x6B9A, 0x6BC2, 0x6BD5, 0x6BD9, 0x6C07, 0x6C22, 0x6C29, 0x6C47, - 0x6C48, 0x6C64, 0x6CA4, 0x6CA5, 0x6CA6, 0x6CA7, 0x6CA8, 0x6CA9, - 0x6CF6, 0x6CF7, 0x6CF8, 0x6CFA, 0x6CFB, 0x6CFC, 0x6CFD, 0x6CFE, - 0x6D46, 0x6D47, 0x6D48, 0x6D49, 0x6D4A, 0x6D4B, 0x6D4D, 0x6D4E, -plane 15 -at 0x00 - 0x6D4F, 0x6D50, 0x6D51, 0x6D52, 0x6D53, 0x6D54, 0x6D55, 0x6D9D, - 0x6D9F, 0x6DA0, 0x6DA1, 0x6DA2, 0x6DA3, 0x6DA4, 0x6DA6, 0x6DA7, - 0x6DA8, 0x6DA9, 0x6E0D, 0x6E0E, 0x6E10, 0x6E11, 0x6E14, 0x6E16, - 0x6E81, 0x6E83, 0x6E85, 0x6E87, 0x6EDF, 0x6EE0, 0x6EE1, 0x6EE2, - 0x6EE4, 0x6EE5, 0x6EE7, 0x6EEA, 0x6F47, 0x6F4B, 0x6F4D, 0x6F9B, - 0x6F9C, 0x6FD1, 0x6FD2, 0x704F, 0x706D, 0x7080, 0x709C, 0x709D, - 0x709E, 0x70BC, 0x70BD, 0x70C1, 0x70C2, 0x70C3, 0x70E6, 0x70E7, - 0x70E8, 0x70E9, 0x70EB, 0x70EC, 0x70ED, 0x7115, 0x7116, 0x7118, - 0x7140, 0x71F7, 0x7231, 0x7237, 0x724D, 0x7275, 0x728A, 0x72B7, - 0x72B8, 0x72C8, 0x72DE, 0x72EE, 0x72EF, 0x72F0, 0x72F1, 0x72F2, - 0x7303, 0x7321, 0x736D, 0x7399, 0x739A, 0x739B, 0x73AE, 0x73B0, - 0x73B1, 0x4FBE, 0x4FB8, 0x4FB0, 0x4FB1, 0x4FC8, 0x4FC6, 0x4FCC, - 0x4FE5, 0x4FE3, 0x4FB4, 0x516A, 0x519F, 0x51C1, 0x51C2, 0x51C3, - 0x5245, 0x5248, 0x524F, 0x52C5, 0x52CA, 0x52C4, 0x5327, 0x5358, - 0x537D, 0x53DD, 0x53DC, 0x53DA, 0x53D9, 0x54B9, 0x54D0, 0x54B4, - 0x54CA, 0x54A3, 0x73D1, 0x73F0, 0x73F2, 0x740E, 0x740F, 0x7410, - 0x7437, 0x7477, 0x748E, 0x74D2, 0x7519, 0x7534, 0x7535, 0x7545, - 0x758D, 0x7596, 0x759F, 0x75A0, 0x75A1, 0x75AC, 0x75AD, 0x75AE, - 0x75AF, 0x75C8, 0x75C9, 0x75D6, 0x75E8, 0x75EA, 0x75EB, 0x7605, - 0x7617, 0x7618, 0x762A, 0x762B, 0x763E, 0x763F, 0x765D, 0x765E, - 0x7663, 0x7666, 0x766B, 0x7691, 0x76B1, 0x76B2, 0x76CF, 0x76D0, - 0x76D1, 0x770D, 0x772C, 0x7750, 0x7751, 0x7786, 0x7792, 0x7793, - 0x77CB, 0x77EB, 0x77FF, 0x7800, 0x7801, 0x7816, 0x7817, 0x781A, - 0x781C, 0x7839, 0x783B, 0x783E, 0x7840, 0x7841, 0x7855, 0x7856, - 0x7857, 0x7859, 0x785A, 0x785B, 0x7875, 0x7877, 0x789B, 0x78D7, - 0x78D9, 0x7903, 0x7933, 0x7943, 0x794E, 0x796F, 0x7978, 0x79EF, - 0x79FE, 0x7A06, 0x7A23, 0x7A51, 0x7A52, 0x7A5E, 0x7A77, 0x7A8D, - 0x7A8E, 0x7A9C, 0x7A9D, 0x7AA5, 0x7AA6, 0x7AAD, 0x7AD6, 0x7ADE, - 0x7B03, 0x7B15, 0x7B3A, 0x7B3C, 0x7B3E, 0x7B5A, 0x7B5B, 0x7B5C, - 0x7B7C, 0x7B7E, 0x7B7F, 0x7B80, 0x7BA6, 0x7BA7, 0x7BA8, 0x7BA9, - 0x7BAB, 0x7BD1, 0x7BD3, 0x7BEE, 0x7BEF, 0x7C16, 0x7C41, 0x7CAA, - 0x7CF9, 0x7D27, 0x7D77, 0x7DD4, 0x7E06, 0x7E9F, 0x7EA0, 0x7EA1, -plane 16 -at 0x00 - 0x7EA2, 0x7EA3, 0x7EA4, 0x7EA5, 0x7EA6, 0x7EA7, 0x7EA8, 0x7EA9, - 0x7EAA, 0x7EAB, 0x7EAC, 0x7EAD, 0x7EAE, 0x7EAF, 0x7EB0, 0x7EB1, - 0x7EB2, 0x7EB3, 0x7EB4, 0x7EB5, 0x7EB6, 0x7EB7, 0x7EB8, 0x54DA, - 0x54A4, 0x54B2, 0x549E, 0x549F, 0x54B5, 0x54CD, 0x54CC, 0x5700, - 0x57AC, 0x5791, 0x578E, 0x578D, 0x5792, 0x57A1, 0x5790, 0x57A6, - 0x57A8, 0x579C, 0x5796, 0x57A7, 0x58F5, 0x5909, 0x5908, 0x5952, - 0x59DF, 0x59EB, 0x59EF, 0x59F0, 0x59D5, 0x5A0D, 0x5A04, 0x59F9, - 0x7EB9, 0x7EBA, 0x7EBB, 0x7EBC, 0x7EBD, 0x7EBE, 0x7EBF, 0x7EC0, - 0x7EC1, 0x7EC2, 0x7EC3, 0x7EC4, 0x7EC5, 0x7EC6, 0x7EC7, 0x7EC8, - 0x7EC9, 0x7ECA, 0x7ECB, 0x7ECC, 0x7ECD, 0x7ECE, 0x7ECF, 0x7ED0, - 0x7ED1, 0x7ED2, 0x7ED3, 0x7ED4, 0x7ED5, 0x7ED6, 0x7ED7, 0x7ED8, - 0x7ED9, 0x7EDA, 0x7EDB, 0x7EDC, 0x7EDD, 0x7EDE, 0x7EDF, 0x7EE0, - 0x7EE1, 0x7EE2, 0x7EE3, 0x7EE4, 0x7EE5, 0x7EE6, 0x7EE7, 0x7EE8, - 0x7EE9, 0x7EEA, 0x7EEB, 0x7EEC, 0x7EED, 0x7EEE, 0x7EEF, 0x7EF0, - 0x7EF1, 0x7EF2, 0x7EF3, 0x7EF4, 0x7EF5, 0x7EF6, 0x7EF7, 0x7EF8, - 0x7EF9, 0x7EFA, 0x7EFB, 0x7EFC, 0x7EFD, 0x7EFE, 0x7EFF, 0x7F00, - 0x7F01, 0x7F02, 0x7F03, 0x7F04, 0x7F05, 0x7F06, 0x7F07, 0x7F08, - 0x7F09, 0x7F0A, 0x7F0B, 0x7F0C, 0x7F0D, 0x7F0E, 0x7F0F, 0x7F10, - 0x7F11, 0x7F12, 0x7F13, 0x7F14, 0x7F15, 0x7F16, 0x7F17, 0x7F18, - 0x7F19, 0x7F1A, 0x7F1B, 0x7F1C, 0x7F1D, 0x7F1E, 0x7F1F, 0x7F20, - 0x7F21, 0x7F22, 0x7F23, 0x7F24, 0x7F25, 0x7F26, 0x7F27, 0x7F28, - 0x7F29, 0x7F2A, 0x7F2B, 0x7F2C, 0x7F2D, 0x7F2E, 0x7F2F, 0x7F30, - 0x7F31, 0x7F32, 0x7F33, 0x7F34, 0x7F35, 0x7F42, 0x7F49, 0x7F56, - 0x7F5A, 0x7F74, 0x7F81, 0x7F9F, 0x7FD8, 0x7FD9, 0x7FDA, 0x8022, - 0x8027, 0x8042, 0x804B, 0x804C, 0x804D, 0x8054, 0x8069, 0x8080, - 0x8083, 0x80A0, 0x80BC, 0x80BD, 0x80BE, 0x80BF, 0x80C0, 0x80C1, - 0x80E7, 0x80E8, 0x80E9, 0x80EA, 0x80EB, 0x5A02, 0x59F8, 0x59E2, - 0x59D9, 0x59E7, 0x5B6A, 0x5BAB, 0x5C1B, 0x5C2F, 0x663C, 0x5CD1, - 0x5CDC, 0x5CE6, 0x5CE1, 0x5CCD, 0x5CE2, 0x5CDD, 0x5CE5, 0x5DFB, - 0x5DFA, 0x5E1E, 0x5EA1, 0x5EFC, 0x5EFB, 0x5F2F, 0x5F66, 0x605C, - 0x604E, 0x6051, 0x6023, 0x6031, 0x607C, 0x6060, 0x80EC, 0x810C, - 0x810D, 0x810E, 0x810F, 0x8110, 0x8111, 0x8112, 0x8113, 0x8132, -plane 17 -at 0x00 - 0x8136, 0x8137, 0x8138, 0x8156, 0x8159, 0x815A, 0x817B, 0x817C, - 0x817E, 0x8191, 0x81A5, 0x81B6, 0x81DC, 0x8206, 0x8223, 0x8230, - 0x8231, 0x823B, 0x823E, 0x8254, 0x8270, 0x8282, 0x8288, 0x8297, - 0x82C7, 0x82C8, 0x82CB, 0x82CC, 0x82CD, 0x82CE, 0x82CF, 0x830F, - 0x8311, 0x8313, 0x8314, 0x8315, 0x8359, 0x835A, 0x835B, 0x835C, - 0x835D, 0x835E, 0x835F, 0x8360, 0x8361, 0x8364, 0x8365, 0x8366, - 0x8367, 0x8368, 0x8369, 0x836A, 0x836B, 0x836C, 0x836D, 0x836E, - 0x836F, 0x83B2, 0x83B3, 0x83B4, 0x83B6, 0x83B8, 0x83BA, 0x83BC, - 0x841A, 0x841C, 0x841D, 0x8424, 0x8425, 0x8426, 0x8427, 0x8428, - 0x8487, 0x8489, 0x848C, 0x84DD, 0x84DF, 0x84E0, 0x84E3, 0x84E5, - 0x84E6, 0x8537, 0x8539, 0x853A, 0x853C, 0x8572, 0x8574, 0x85D3, - 0x8614, 0x864F, 0x867F, 0x8680, 0x8681, 0x8682, 0x8683, 0x86AC, - 0x86F0, 0x86F1, 0x86F2, 0x86F3, 0x86F4, 0x8717, 0x8748, 0x877E, - 0x8780, 0x87A8, 0x87CF, 0x8854, 0x8865, 0x886C, 0x8885, 0x8886, - 0x88AD, 0x88AF, 0x88C6, 0x88C7, 0x88C8, 0x88E2, 0x88E3, 0x88E4, - 0x88E5, 0x8934, 0x8947, 0x8955, 0x8980, 0x89C1, 0x89C2, 0x89C3, - 0x89C4, 0x89C5, 0x89C6, 0x89C7, 0x89C8, 0x89C9, 0x89CA, 0x89CB, - 0x89CC, 0x89CD, 0x89CE, 0x89CF, 0x89D0, 0x89D1, 0x89DE, 0x89EF, - 0x8A01, 0x8A1A, 0x8A5F, 0x604A, 0x6061, 0x6218, 0x631F, 0x6317, - 0x62EA, 0x6321, 0x6304, 0x6305, 0x6531, 0x6544, 0x6540, 0x6542, - 0x65BE, 0x6629, 0x661B, 0x6623, 0x662C, 0x661A, 0x6630, 0x663B, - 0x661E, 0x6637, 0x6638, 0x670E, 0x67E8, 0x67D6, 0x67C7, 0x67BC, - 0x6852, 0x67BF, 0x67D5, 0x67FE, 0x8A8A, 0x8BA0, 0x8BA1, 0x8BA2, - 0x8BA3, 0x8BA4, 0x8BA5, 0x8BA6, 0x8BA7, 0x8BA8, 0x8BA9, 0x8BAA, - 0x8BAB, 0x8BAC, 0x8BAD, 0x8BAE, 0x8BAF, 0x8BB0, 0x8BB1, 0x8BB2, - 0x8BB3, 0x8BB4, 0x8BB5, 0x8BB6, 0x8BB7, 0x8BB8, 0x8BB9, 0x8BBA, - 0x8BBB, 0x8BBC, 0x8BBD, 0x8BBE, 0x8BBF, 0x8BC0, 0x8BC1, 0x8BC2, - 0x8BC3, 0x8BC4, 0x8BC5, 0x8BC6, 0x8BC7, 0x8BC8, 0x8BC9, 0x8BCA, - 0x8BCB, 0x8BCC, 0x8BCD, 0x8BCE, 0x8BCF, 0x8BD0, 0x8BD1, 0x8BD2, - 0x8BD3, 0x8BD4, 0x8BD5, 0x8BD6, 0x8BD7, 0x8BD8, 0x8BD9, 0x8BDA, - 0x8BDB, 0x8BDC, 0x8BDD, 0x8BDE, 0x8BDF, 0x8BE0, 0x8BE1, 0x8BE2, - 0x8BE3, 0x8BE4, 0x8BE5, 0x8BE6, 0x8BE7, 0x8BE8, 0x8BE9, 0x8BEA, -plane 18 -at 0x00 - 0x8BEB, 0x8BEC, 0x8BED, 0x8BEE, 0x8BEF, 0x8BF0, 0x8BF1, 0x8BF2, - 0x8BF3, 0x8BF4, 0x8BF5, 0x8BF6, 0x8BF7, 0x8BF8, 0x8BF9, 0x8BFA, - 0x8BFB, 0x8BFC, 0x8BFD, 0x8BFE, 0x8BFF, 0x8C00, 0x8C01, 0x8C02, - 0x8C03, 0x8C04, 0x8C05, 0x8C06, 0x8C07, 0x8C08, 0x8C09, 0x8C0A, - 0x8C0B, 0x8C0C, 0x8C0D, 0x8C0E, 0x8C0F, 0x8C10, 0x8C11, 0x8C12, - 0x8C13, 0x8C14, 0x8C15, 0x8C16, 0x8C17, 0x8C18, 0x8C19, 0x8C1A, - 0x8C1B, 0x8C1C, 0x8C1D, 0x8C1E, 0x8C1F, 0x8C20, 0x8C21, 0x8C22, - 0x8C23, 0x8C24, 0x8C25, 0x8C26, 0x8C27, 0x8C28, 0x8C29, 0x8C2A, - 0x8C2B, 0x8C2C, 0x8C2D, 0x8C2E, 0x8C2F, 0x8C30, 0x8C31, 0x8C32, - 0x8C33, 0x8C34, 0x8C35, 0x8C36, 0x8C6E, 0x8D1D, 0x8D1E, 0x8D1F, - 0x8D20, 0x8363, 0x67FB, 0x67B1, 0x6801, 0x6805, 0x6800, 0x67D7, - 0x6B2A, 0x6B6B, 0x6BE1, 0x6D23, 0x6CFF, 0x6D14, 0x6D05, 0x6D13, - 0x6D06, 0x6D21, 0x6D15, 0x6CAF, 0x6CF4, 0x6D02, 0x6D45, 0x6D26, - 0x6D44, 0x6D24, 0x70A5, 0x70A3, 0x70A2, 0x70BB, 0x70A0, 0x70AA, - 0x70A8, 0x70B6, 0x8D21, 0x8D22, 0x8D23, 0x8D24, 0x8D25, 0x8D26, - 0x8D27, 0x8D28, 0x8D29, 0x8D2A, 0x8D2B, 0x8D2C, 0x8D2D, 0x8D2E, - 0x8D2F, 0x8D30, 0x8D31, 0x8D32, 0x8D33, 0x8D34, 0x8D35, 0x8D36, - 0x8D37, 0x8D38, 0x8D39, 0x8D3A, 0x8D3B, 0x8D3C, 0x8D3D, 0x8D3E, - 0x8D3F, 0x8D40, 0x8D41, 0x8D42, 0x8D43, 0x8D44, 0x8D45, 0x8D46, - 0x8D47, 0x8D48, 0x8D49, 0x8D4A, 0x8D4B, 0x8D4C, 0x8D4D, 0x8D4E, - 0x8D4F, 0x8D50, 0x8D51, 0x8D52, 0x8D53, 0x8D54, 0x8D55, 0x8D56, - 0x8D57, 0x8D58, 0x8D59, 0x8D5A, 0x8D5B, 0x8D5C, 0x8D5D, 0x8D5E, - 0x8D5F, 0x8D60, 0x8D61, 0x8D62, 0x8D63, 0x8D6A, 0x8D75, 0x8DB1, - 0x8DB8, 0x8DC4, 0x8DDE, 0x8DF6, 0x8DF7, 0x8DF8, 0x8DF9, 0x8DFB, - 0x8E0C, 0x8E0E, 0x8E2C, 0x8E2D, 0x8E2F, 0x8E52, 0x8E7E, 0x8E7F, - 0x8E80, 0x8E8F, 0x8E9C, 0x8ECE, 0x8F66, 0x8F67, 0x8F68, 0x8F69, - 0x8F6A, 0x8F6B, 0x8F6C, 0x8F6D, 0x8F6E, 0x8F6F, 0x8F70, 0x8F71, - 0x8F72, 0x8F73, 0x8F74, 0x8F75, 0x8F76, 0x8F77, 0x8F78, 0x8F79, - 0x8F7A, 0x8F7B, 0x8F7C, 0x8F7D, 0x8F7E, 0x8F7F, 0x8F80, 0x8F81, - 0x8F82, 0x8F83, 0x8F84, 0x8F85, 0x8F86, 0x8F87, 0x8F88, 0x8F89, - 0x8F8A, 0x8F8B, 0x8F8C, 0x8F8D, 0x8F8E, 0x8F8F, 0x8F90, 0x8F91, - 0x8F92, 0x8F93, 0x8F94, 0x8F95, 0x8F96, 0x8F97, 0x8F98, 0x8F99, -plane 19 -at 0x00 - 0x8F9A, 0x8FA9, 0x8FAB, 0x8FBD, 0x8FDB, 0x8FDD, 0x8FDE, 0x8FF3, - 0x900A, 0x9026, 0x9057, 0x909D, 0x90AC, 0x90BA, 0x90BB, 0x70B2, - 0x70A7, 0x70B9, 0x722E, 0x723C, 0x726D, 0x72E7, 0x72ED, 0x72EC, - 0x72E5, 0x72E2, 0x73C4, 0x73BD, 0x73CF, 0x73C9, 0x73C1, 0x73D0, - 0x73CE, 0x74ED, 0x74EB, 0x74EF, 0x7549, 0x7550, 0x7546, 0x754A, - 0x754D, 0x75A6, 0x75A8, 0x76C7, 0x76FF, 0x76FD, 0x77E6, 0x780A, - 0x90CF, 0x90D0, 0x90D1, 0x90D3, 0x90E6, 0x90E7, 0x90F8, 0x9142, - 0x915D, 0x915E, 0x9166, 0x9171, 0x917D, 0x917E, 0x917F, 0x91CA, - 0x91D2, 0x91FA, 0x922A, 0x9274, 0x933E, 0x9341, 0x93F0, 0x9426, - 0x9485, 0x9486, 0x9487, 0x9488, 0x9489, 0x948A, 0x948B, 0x948C, - 0x948D, 0x948E, 0x948F, 0x9490, 0x9491, 0x9492, 0x9493, 0x9494, - 0x9495, 0x9496, 0x9497, 0x9498, 0x9499, 0x949A, 0x949B, 0x949C, - 0x949D, 0x949E, 0x949F, 0x94A0, 0x94A1, 0x94A2, 0x94A3, 0x94A4, - 0x94A5, 0x94A6, 0x94A7, 0x94A8, 0x94A9, 0x94AA, 0x94AB, 0x94AC, - 0x94AD, 0x94AE, 0x94AF, 0x94B0, 0x94B1, 0x94B2, 0x94B3, 0x94B4, - 0x94B5, 0x94B6, 0x94B7, 0x94B8, 0x94B9, 0x94BA, 0x94BB, 0x94BC, - 0x94BD, 0x94BE, 0x94BF, 0x94C0, 0x94C1, 0x94C2, 0x94C3, 0x94C4, - 0x94C5, 0x94C6, 0x94C7, 0x94C8, 0x94C9, 0x94CA, 0x94CB, 0x94CC, - 0x94CD, 0x94CE, 0x94CF, 0x94D0, 0x94D1, 0x94D2, 0x94D3, 0x94D4, - 0x94D5, 0x94D6, 0x94D7, 0x94D8, 0x94D9, 0x94DA, 0x94DB, 0x94DC, - 0x94DD, 0x94DE, 0x94DF, 0x94E0, 0x94E1, 0x94E2, 0x94E3, 0x94E4, - 0x94E5, 0x94E6, 0x94E7, 0x94E8, 0x94E9, 0x94EA, 0x94EB, 0x94EC, - 0x94ED, 0x94EE, 0x94EF, 0x94F0, 0x94F1, 0x94F2, 0x94F3, 0x94F4, - 0x94F5, 0x94F6, 0x94F7, 0x94F8, 0x94F9, 0x94FA, 0x94FB, 0x94FC, - 0x94FD, 0x94FE, 0x94FF, 0x9500, 0x9501, 0x9502, 0x9503, 0x9504, - 0x9505, 0x9506, 0x9507, 0x9508, 0x9509, 0x7804, 0x780B, 0x7807, - 0x7815, 0x7808, 0x79D3, 0x79D4, 0x79D0, 0x79D7, 0x7A7C, 0x7A7D, - 0x7A83, 0x7A82, 0x7AD4, 0x7AD5, 0x7AD3, 0x7AD0, 0x7AD2, 0x7AFE, - 0x7AFC, 0x7C77, 0x7C7C, 0x7C7B, 0x7F8F, 0x80D3, 0x80CB, 0x80D2, - 0x8109, 0x80E2, 0x80DF, 0x80C6, 0x8224, 0x82F7, 0x950A, 0x950B, - 0x950C, 0x950D, 0x950E, 0x950F, 0x9510, 0x9511, 0x9512, 0x9513, - 0x9514, 0x9515, 0x9516, 0x9517, 0x9518, 0x9519, 0x951A, 0x951B, -plane 20 -at 0x00 - 0x951C, 0x951D, 0x951E, 0x951F, 0x9520, 0x9521, 0x9522, 0x9523, - 0x9524, 0x9525, 0x9526, 0x9527, 0x9528, 0x9529, 0x952A, 0x952B, - 0x952C, 0x952D, 0x952E, 0x952F, 0x9530, 0x9531, 0x9532, 0x9533, - 0x9534, 0x9535, 0x9536, 0x9537, 0x9538, 0x9539, 0x953A, 0x953B, - 0x953C, 0x953D, 0x953E, 0x953F, 0x9540, 0x9541, 0x9542, 0x9543, - 0x9544, 0x9545, 0x9546, 0x9547, 0x9548, 0x9549, 0x954A, 0x954B, - 0x954C, 0x954D, 0x954E, 0x954F, 0x9550, 0x9551, 0x9552, 0x9553, - 0x9554, 0x9555, 0x9556, 0x9557, 0x9558, 0x9559, 0x955A, 0x955B, - 0x955C, 0x955D, 0x955E, 0x955F, 0x9560, 0x9561, 0x9562, 0x9563, - 0x9564, 0x9565, 0x9566, 0x9567, 0x9568, 0x9569, 0x956A, 0x956B, - 0x956C, 0x956D, 0x956E, 0x956F, 0x9570, 0x9571, 0x9572, 0x9573, - 0x9574, 0x9575, 0x9576, 0x957F, 0x95E8, 0x95E9, 0x95EA, 0x95EB, - 0x95EC, 0x95ED, 0x95EE, 0x95EF, 0x95F0, 0x95F1, 0x95F2, 0x95F3, - 0x95F4, 0x95F5, 0x95F6, 0x95F7, 0x95F8, 0x95F9, 0x95FA, 0x95FB, - 0x95FC, 0x95FD, 0x95FE, 0x95FF, 0x9600, 0x9601, 0x9602, 0x9603, - 0x9604, 0x9605, 0x9606, 0x9607, 0x9608, 0x9609, 0x960A, 0x960B, - 0x960C, 0x960D, 0x960E, 0x960F, 0x9610, 0x9611, 0x9612, 0x9613, - 0x9614, 0x9615, 0x9616, 0x82D8, 0x82DD, 0x82F8, 0x82FC, 0x82E9, - 0x82EE, 0x82D0, 0x830E, 0x82E2, 0x830B, 0x82FD, 0x5179, 0x8676, - 0x8678, 0x8675, 0x867D, 0x8842, 0x8866, 0x898C, 0x8A05, 0x8A06, - 0x8C9F, 0x8FF1, 0x8FE7, 0x8FE9, 0x8FEF, 0x90C2, 0x90BC, 0x90C6, - 0x90C0, 0x90CD, 0x90C9, 0x90C4, 0x9617, 0x9618, 0x9619, 0x961A, - 0x961B, 0x961F, 0x9635, 0x9636, 0x9645, 0x9646, 0x9647, 0x9648, - 0x9649, 0x9667, 0x9668, 0x9669, 0x9690, 0x96E0, 0x96F3, 0x96FE, - 0x9701, 0x972D, 0x9753, 0x9754, 0x9765, 0x9791, 0x9792, 0x97AF, - 0x97E6, 0x97E7, 0x97E8, 0x97E9, 0x97EA, 0x97EB, 0x97EC, 0x9875, - 0x9876, 0x9877, 0x9878, 0x9879, 0x987A, 0x987B, 0x987C, 0x987D, - 0x987E, 0x987F, 0x9880, 0x9881, 0x9882, 0x9883, 0x9884, 0x9885, - 0x9886, 0x9887, 0x9888, 0x9889, 0x988A, 0x988B, 0x988C, 0x988D, - 0x988E, 0x988F, 0x9890, 0x9891, 0x9892, 0x9893, 0x9894, 0x9895, - 0x9896, 0x9897, 0x9898, 0x9899, 0x989A, 0x989B, 0x989C, 0x989D, - 0x989E, 0x989F, 0x98A0, 0x98A1, 0x98A2, 0x98A3, 0x98A4, 0x98A5, -plane 21 -at 0x00 - 0x98A6, 0x98A7, 0x98CE, 0x98CF, 0x98D0, 0x98D1, 0x98D2, 0x98D3, - 0x98D4, 0x98D5, 0x98D6, 0x98D7, 0x98D8, 0x98D9, 0x98DA, 0x98DE, - 0x98E0, 0x98E8, 0x990D, 0x990F, 0x9962, 0x9963, 0x9964, 0x9965, - 0x9966, 0x9967, 0x9968, 0x9969, 0x996A, 0x996B, 0x996C, 0x996D, - 0x996E, 0x996F, 0x9970, 0x9971, 0x9972, 0x9973, 0x9974, 0x9975, - 0x9976, 0x9977, 0x9978, 0x9979, 0x997A, 0x997B, 0x997C, 0x997D, - 0x997E, 0x997F, 0x9980, 0x9981, 0x9982, 0x9983, 0x9984, 0x9985, - 0x9986, 0x9987, 0x9988, 0x9989, 0x998A, 0x998B, 0x998C, 0x998D, - 0x998E, 0x998F, 0x9990, 0x9991, 0x9992, 0x9993, 0x9994, 0x9995, - 0x9A6C, 0x9581, 0x9CEC, 0x5032, 0x4FF9, 0x501D, 0x4FFF, 0x5004, - 0x4FF0, 0x5003, 0x5002, 0x4FFC, 0x4FF2, 0x5024, 0x5008, 0x5036, - 0x502E, 0x5010, 0x5038, 0x5039, 0x4FFD, 0x5056, 0x4FFB, 0x51A3, - 0x51A6, 0x51A1, 0x51C7, 0x51C9, 0x5260, 0x5264, 0x5259, 0x5265, - 0x5267, 0x5257, 0x9A6D, 0x9A6E, 0x9A6F, 0x9A70, 0x9A71, 0x9A72, - 0x9A73, 0x9A74, 0x9A75, 0x9A76, 0x9A77, 0x9A78, 0x9A79, 0x9A7A, - 0x9A7B, 0x9A7C, 0x9A7D, 0x9A7E, 0x9A7F, 0x9A80, 0x9A81, 0x9A82, - 0x9A83, 0x9A84, 0x9A85, 0x9A86, 0x9A87, 0x9A88, 0x9A89, 0x9A8A, - 0x9A8B, 0x9A8C, 0x9A8D, 0x9A8E, 0x9A8F, 0x9A90, 0x9A91, 0x9A92, - 0x9A93, 0x9A94, 0x9A95, 0x9A96, 0x9A97, 0x9A98, 0x9A99, 0x9A9A, - 0x9A9B, 0x9A9C, 0x9A9D, 0x9A9E, 0x9A9F, 0x9AA0, 0x9AA1, 0x9AA2, - 0x9AA3, 0x9AA4, 0x9AA5, 0x9AA6, 0x9AA7, 0x9ACB, 0x9ACC, 0x9B13, - 0x9B47, 0x9C7C, 0x9C7D, 0x9C7E, 0x9C7F, 0x9C80, 0x9C81, 0x9C82, - 0x9C83, 0x9C84, 0x9C85, 0x9C86, 0x9C87, 0x9C88, 0x9C89, 0x9C8A, - 0x9C8B, 0x9C8C, 0x9C8D, 0x9C8E, 0x9C8F, 0x9C90, 0x9C91, 0x9C92, - 0x9C93, 0x9C94, 0x9C95, 0x9C96, 0x9C97, 0x9C98, 0x9C99, 0x9C9A, - 0x9C9B, 0x9C9C, 0x9C9D, 0x9C9E, 0x9C9F, 0x9CA0, 0x9CA1, 0x9CA2, - 0x9CA3, 0x9CA4, 0x9CA5, 0x9CA6, 0x9CA7, 0x9CA8, 0x9CA9, 0x9CAA, - 0x9CAB, 0x9CAC, 0x9CAD, 0x9CAE, 0x9CAF, 0x9CB0, 0x9CB1, 0x9CB2, - 0x9CB3, 0x9CB4, 0x9CB5, 0x9CB6, 0x9CB7, 0x9CB8, 0x9CB9, 0x9CBA, - 0x9CBB, 0x9CBC, 0x9CBD, 0x9CBE, 0x9CBF, 0x9CC0, 0x9CC1, 0x9CC2, - 0x9CC3, 0x9CC4, 0x9CC5, 0x9CC6, 0x9CC7, 0x9CC8, 0x9CC9, 0x9CCA, - 0x9CCB, 0x9CCC, 0x9CCD, 0x9CCE, 0x9CCF, 0x9CD0, 0x9CD1, 0x9CD2, -plane 22 -at 0x00 - 0x9CD3, 0x9CD4, 0x9CD5, 0x9CD6, 0x9CD7, 0x9CD8, 0x9CD9, 0x5263, - 0x5253, 0x52CF, 0x52CE, 0x52D0, 0x52D1, 0x52CC, 0x550D, 0x54F4, - 0x5513, 0x54EF, 0x54F5, 0x54F9, 0x5502, 0x5500, 0x5518, 0x54F0, - 0x54F6, 0x5519, 0x5705, 0x57C9, 0x57B7, 0x57CD, 0x57BE, 0x57BB, - 0x57DB, 0x57C8, 0x57C4, 0x57C5, 0x57D1, 0x57CA, 0x57C0, 0x5A21, - 0x9CDA, 0x9CDB, 0x9CDC, 0x9CDD, 0x9CDE, 0x9CDF, 0x9CE0, 0x9CE1, - 0x9CE2, 0x9CE3, 0x9CE4, 0x9E1F, 0x9E20, 0x9E21, 0x9E22, 0x9E23, - 0x9E24, 0x9E25, 0x9E26, 0x9E27, 0x9E28, 0x9E29, 0x9E2A, 0x9E2B, - 0x9E2C, 0x9E2D, 0x9E2E, 0x9E2F, 0x9E30, 0x9E31, 0x9E32, 0x9E33, - 0x9E34, 0x9E35, 0x9E36, 0x9E37, 0x9E38, 0x9E39, 0x9E3A, 0x9E3B, - 0x9E3C, 0x9E3D, 0x9E3E, 0x9E3F, 0x9E40, 0x9E41, 0x9E42, 0x9E43, - 0x9E44, 0x9E45, 0x9E46, 0x9E47, 0x9E48, 0x9E49, 0x9E4A, 0x9E4B, - 0x9E4C, 0x9E4D, 0x9E4E, 0x9E4F, 0x9E50, 0x9E51, 0x9E52, 0x9E53, - 0x9E54, 0x9E55, 0x9E56, 0x9E57, 0x9E58, 0x9E59, 0x9E5A, 0x9E5B, - 0x9E5C, 0x9E5D, 0x9E5E, 0x9E5F, 0x9E60, 0x9E61, 0x9E62, 0x9E63, - 0x9E64, 0x9E65, 0x9E66, 0x9E67, 0x9E68, 0x9E69, 0x9E6A, 0x9E6B, - 0x9E6C, 0x9E6D, 0x9E6E, 0x9E6F, 0x9E70, 0x9E71, 0x9E72, 0x9E73, - 0x9E74, 0x9E7E, 0x9EC9, 0x9EE1, 0x9EE9, 0x9EEA, 0x9F0B, 0x9F0C, - 0x9F0D, 0x9F51, 0x9F7F, 0x9F80, 0x9F81, 0x9F82, 0x9F83, 0x9F84, - 0x9F85, 0x9F86, 0x9F87, 0x9F88, 0x9F89, 0x9F8A, 0x9F8B, 0x9F8C, - 0x9F9A, 0x9F9B, 0x9F9F, 0x4E06, 0x4E37, 0x4E44, 0x4E4A, 0x4E55, - 0x4E5B, 0x4E64, 0x4E65, 0x4E67, 0x4E6B, 0x4E6C, 0x4E6D, 0x4E6E, - 0x4E6F, 0x4E72, 0x4E76, 0x4E77, 0x4E7A, 0x4E7B, 0x4E7C, 0x4E7D, - 0x4E8A, 0x4E90, 0x4EBD, 0x4ED2, 0x4EED, 0x4FA4, 0x4FAD, 0x503B, - 0x50F2, 0x516F, 0x517A, 0x51E6, 0x51E7, 0x5A2A, 0x5A1D, 0x5A0B, - 0x5A22, 0x5A24, 0x5A14, 0x5A31, 0x5A2F, 0x5A1A, 0x5A12, 0x5A26, - 0x5BBC, 0x5BBB, 0x5BB7, 0x5C05, 0x5C06, 0x5C52, 0x5C53, 0x5CFA, - 0x5CEB, 0x5CF3, 0x5CF5, 0x5CE9, 0x5CEF, 0x5E2A, 0x5E30, 0x5E2E, - 0x5E2C, 0x5E2F, 0x5EAF, 0x5EA9, 0x5EFD, 0x5F32, 0x51E9, 0x5271, - 0x5302, 0x5381, 0x5391, 0x53BC, 0x5414, 0x5455, 0x54D8, 0x54DB, - 0x551C, 0x551F, 0x5569, 0x55B8, 0x55BD, 0x55ED, 0x561A, 0x565B, - 0x56A2, 0x56CE, 0x56D5, 0x5726, 0x5737, 0x5738, 0x5786, 0x5789, -plane 23 -at 0x00 - 0x57B0, 0x57B3, 0x57D6, 0x5815, 0x5841, 0x586E, 0x5870, 0x58B8, - 0x58B9, 0x58CC, 0x58D7, 0x58E5, 0x58ED, 0x591E, 0x593B, 0x5B36, - 0x5B5E, 0x5B91, 0x5BC9, 0x5C02, 0x5C26, 0x5C2E, 0x5C32, 0x5C76, - 0x5CBC, 0x5CBE, 0x5CC5, 0x5CE0, 0x5D2B, 0x5D5C, 0x5D76, 0x5DEA, - 0x5DEC, 0x5DED, 0x5DFC, 0x5E49, 0x5EE4, 0x5F09, 0x5F16, 0x5F45, - 0x5FC6, 0x603A, 0x603E, 0x6077, 0x6184, 0x61F4, 0x6244, 0x6255, - 0x6256, 0x62E5, 0x6318, 0x6327, 0x63B4, 0x63B5, 0x63BB, 0x6442, - 0x655B, 0x657D, 0x657E, 0x65C0, 0x65D5, 0x663F, 0x6683, 0x66FB, - 0x66FD, 0x6730, 0x6741, 0x6763, 0x6764, 0x67A0, 0x67A9, 0x6802, - 0x6803, 0x680D, 0x685B, 0x685C, 0x685D, 0x685F, 0x6863, 0x6867, - 0x688D, 0x68BA, 0x68BB, 0x68BC, 0x68C2, 0x6919, 0x691A, 0x6921, - 0x6922, 0x6923, 0x6926, 0x6928, 0x697E, 0x6981, 0x698B, 0x69DD, - 0x69DE, 0x6A2E, 0x6A30, 0x6A73, 0x6A74, 0x6A75, 0x6A7B, 0x6AC9, - 0x6AE4, 0x6AF7, 0x6B05, 0x6B1F, 0x6BA9, 0x6BB1, 0x6BDF, 0x6BEE, - 0x6C0E, 0x6C17, 0x6C35, 0x6C3A, 0x6C3D, 0x6D4C, 0x6D9C, 0x6D9E, - 0x6E13, 0x6E7F, 0x6E8C, 0x6EDE, 0x6FF9, 0x704E, 0x7050, 0x7114, - 0x713C, 0x713E, 0x7155, 0x5F8E, 0x5F93, 0x5F8F, 0x604F, 0x6099, - 0x607E, 0x6074, 0x604B, 0x6073, 0x6075, 0x6056, 0x60A9, 0x608B, - 0x60A6, 0x6093, 0x60AE, 0x609E, 0x60A7, 0x6245, 0x632E, 0x6352, - 0x6330, 0x635B, 0x6319, 0x631B, 0x6331, 0x635D, 0x6337, 0x6335, - 0x6353, 0x635C, 0x633F, 0x654B, 0x7173, 0x71F6, 0x7233, 0x725C, - 0x72A0, 0x731F, 0x7320, 0x7339, 0x7363, 0x7364, 0x73F1, 0x7411, - 0x748F, 0x7491, 0x74E7, 0x74F0, 0x74F1, 0x74F2, 0x74FC, 0x7505, - 0x753C, 0x7552, 0x7560, 0x7569, 0x7573, 0x7574, 0x7582, 0x7597, - 0x75E9, 0x7604, 0x7606, 0x764D, 0x767A, 0x770C, 0x77C8, 0x783A, - 0x783C, 0x783F, 0x7872, 0x7873, 0x7874, 0x78B5, 0x78B6, 0x78F5, - 0x7916, 0x7934, 0x793B, 0x7985, 0x79F4, 0x79FD, 0x7A24, 0x7A43, - 0x7A5D, 0x7A63, 0x7AC3, 0x7B02, 0x7B07, 0x7B5D, 0x7B7A, 0x7B7D, - 0x7B9A, 0x7BAA, 0x7BCF, 0x7BD2, 0x7C13, 0x7C14, 0x7C17, 0x7C31, - 0x7C61, 0x7C82, 0x7C8F, 0x7C90, 0x7CAD, 0x7CD8, 0x7D26, 0x7D9A, - 0x7D9B, 0x7DD5, 0x7E05, 0x7E28, 0x7E4A, 0x7E4B, 0x7E67, 0x7E83, - 0x7E90, 0x7F53, 0x7FAA, 0x8062, 0x810B, 0x8133, 0x8135, 0x8157, -plane 24 -at 0x00 - 0x81A4, 0x81D3, 0x8217, 0x822E, 0x824D, 0x825D, 0x8260, 0x827A, - 0x82C6, 0x83B1, 0x83B5, 0x83BB, 0x8419, 0x8420, 0x8422, 0x8485, - 0x848A, 0x848B, 0x84D9, 0x84DC, 0x8536, 0x85AD, 0x85AE, 0x8612, - 0x8630, 0x8644, 0x86AB, 0x86CD, 0x86CE, 0x86EF, 0x8749, 0x874B, - 0x877F, 0x87A6, 0x87A7, 0x87D0, 0x8864, 0x88AE, 0x88B0, 0x88C3, - 0x88C4, 0x88C5, 0x8904, 0x891C, 0x891D, 0x8945, 0x8968, 0x8977, - 0x8A33, 0x8A89, 0x8AAD, 0x8AAE, 0x8ADA, 0x8B21, 0x8B5B, 0x8B72, - 0x8B8F, 0x8CCE, 0x8DE5, 0x8DF5, 0x8E7D, 0x8E9B, 0x8EB5, 0x8EBB, - 0x8EC5, 0x658B, 0x659A, 0x6650, 0x6646, 0x664E, 0x6640, 0x664B, - 0x6648, 0x6660, 0x6644, 0x664D, 0x6837, 0x6824, 0x681B, 0x6836, - 0x682C, 0x6819, 0x6856, 0x6847, 0x683E, 0x681E, 0x6815, 0x6822, - 0x6827, 0x6859, 0x6858, 0x6855, 0x6830, 0x6823, 0x6B2E, 0x6B2B, - 0x6B30, 0x6B6C, 0x8EC8, 0x8EE2, 0x8EE3, 0x8F0C, 0x8F4C, 0x8FBA, - 0x8FDA, 0x8FF2, 0x9027, 0x9039, 0x9056, 0x9065, 0x915B, 0x9197, - 0x91A4, 0x91B8, 0x91C8, 0x91E1, 0x91FB, 0x91FC, 0x9228, 0x9229, - 0x922C, 0x9271, 0x9344, 0x93BA, 0x9421, 0x9441, 0x9453, 0x958A, - 0x95AA, 0x95CF, 0x9665, 0x9666, 0x967A, 0x974C, 0x974E, 0x974F, - 0x9771, 0x9786, 0x9790, 0x982C, 0x98AA, 0x98B4, 0x98C5, 0x98EE, - 0x99C5, 0x99F2, 0x9A12, 0x9A13, 0x9A28, 0x9AC5, 0x9B36, 0x9B5E, - 0x9B78, 0x9B97, 0x9BB2, 0x9BB4, 0x9BCE, 0x9BD0, 0x9BD1, 0x9BF1, - 0x9BF2, 0x9BF5, 0x9C18, 0x9C19, 0x9C1A, 0x9C30, 0x9C5A, 0x9C5B, - 0x9C5C, 0x9C69, 0x9C6A, 0x9C6B, 0x9C70, 0x9CF0, 0x9D0E, 0x9D2B, - 0x9D2C, 0x9D46, 0x9D48, 0x9D65, 0x9D8E, 0x9D8F, 0x9DAB, 0x9DC6, - 0x9E78, 0x9EB8, 0x9EB9, 0x9EBA, 0x9F21, 0x9F62, 0, 0, - 0x3000, 0xFF0C, 0x3001, 0x3002, 0xFF0E, 0x2027, 0xFF1B, 0xFF1A, - 0xFF1F, 0xFF01, 0xFE30, 0x2026, 0x2025, 0xFE50, 0xFE51, 0xFE52, - 0x00B7, 0xFE54, 0xFE55, 0xFE56, 0xFE57, 0xFF5C, 0x2015, 0xFE31, - 0x2014, 0xFE33, 0x2574, 0xFE34, 0xFE4F, 0xFF08, 0xFF09, 0xFE35, - 0xFE36, 0xFF5B, 0xFF5D, 0xFE37, 0xFE38, 0x3014, 0x3015, 0xFE39, - 0xFE3A, 0x3010, 0x3011, 0xFE3B, 0xFE3C, 0x300A, 0x300B, 0xFE3D, - 0xFE3E, 0x3008, 0x3009, 0xFE3F, 0xFE40, 0x300C, 0x300D, 0xFE41, - 0xFE42, 0x300E, 0x300F, 0xFE43, 0xFE44, 0xFE59, 0xFE5A, 0x6B8B, -plane 25 -at 0x00 - 0x6BE9, 0x6BEA, 0x6BE5, 0x6D6B, 0x6D73, 0x6D57, 0x6D5D, 0x6D56, - 0x6D8F, 0x6D5B, 0x6D1C, 0x6D9A, 0x6D9B, 0x6D99, 0x6D81, 0x6D71, - 0x6D72, 0x6D5C, 0x6D96, 0x70C4, 0x70DB, 0x70CC, 0x70D0, 0x70E3, - 0x70DF, 0x70D6, 0x70EE, 0x70D5, 0x727A, 0x72F5, 0x7302, 0x73E2, - 0xFE5B, 0xFE5C, 0xFE5D, 0xFE5E, 0x2018, 0x2019, 0x201C, 0x201D, - 0x301D, 0x301E, 0x2035, 0x2032, 0xFF03, 0xFF06, 0xFF0A, 0x203B, - 0x00A7, 0x3003, 0x25CB, 0x25CF, 0x25B3, 0x25B2, 0x25CE, 0x2606, - 0x2605, 0x25C7, 0x25C6, 0x25A1, 0x25A0, 0x25BD, 0x25BC, 0x32A3, - 0x2105, 0x203E, 0xFFE3, 0xFF3F, 0x02CD, 0xFE49, 0xFE4A, 0xFE4D, - 0xFE4E, 0xFE4B, 0xFE4C, 0xFE5F, 0xFE60, 0xFE61, 0xFF0B, 0xFF0D, - 0x00D7, 0x00F7, 0x00B1, 0x221A, 0xFF1C, 0xFF1E, 0xFF1D, 0x2266, - 0x2267, 0x2260, 0x221E, 0x2252, 0x2261, 0xFE62, 0xFE63, 0xFE64, - 0xFE65, 0xFE66, 0xFF5E, 0x2229, 0x222A, 0x22A5, 0x2220, 0x221F, - 0x22BF, 0x33D2, 0x33D1, 0x222B, 0x222E, 0x2235, 0x2234, 0x2640, - 0x2642, 0x2295, 0x2299, 0x2191, 0x2193, 0x2190, 0x2192, 0x2196, - 0x2197, 0x2199, 0x2198, 0x2225, 0x2223, 0xFF0F, 0xFF3C, 0x2215, - 0xFE68, 0xFF04, 0xFFE5, 0x3012, 0xFFE0, 0xFFE1, 0xFF05, 0xFF20, - 0x2103, 0x2109, 0xFE69, 0xFE6A, 0xFE6B, 0x33D5, 0x339C, 0x339D, - 0x339E, 0x33CE, 0x33A1, 0x338E, 0x338F, 0x33C4, 0x00B0, 0x5159, - 0x515B, 0x515E, 0x515D, 0x5161, 0x5163, 0x55E7, 0x74E9, 0x7CCE, - 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586, 0x2587, 0x2588, - 0x258F, 0x258E, 0x258D, 0x258C, 0x258B, 0x258A, 0x2589, 0x253C, - 0x2534, 0x252C, 0x2524, 0x251C, 0x2594, 0x2500, 0x2502, 0x2595, - 0x250C, 0x2510, 0x2514, 0x2518, 0x256D, 0x73EC, 0x73D5, 0x73F9, - 0x73DF, 0x73E6, 0x73E4, 0x73E1, 0x74F3, 0x7556, 0x7555, 0x7558, - 0x7557, 0x755E, 0x75C3, 0x75B4, 0x75B1, 0x76CB, 0x76CC, 0x772A, - 0x7716, 0x770F, 0x773F, 0x772B, 0x770E, 0x7724, 0x7721, 0x7718, - 0x77DD, 0x7824, 0x7836, 0x7958, 0x7959, 0x7962, 0x256E, 0x2570, - 0x256F, 0x2501, 0x251D, 0x253F, 0x2525, 0x25E2, 0x25E3, 0x25E5, - 0x25E4, 0x2571, 0x2572, 0x2573, 0xFF10, 0xFF11, 0xFF12, 0xFF13, - 0xFF14, 0xFF15, 0xFF16, 0xFF17, 0xFF18, 0xFF19, 0x2160, 0x2161, - 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, -plane 26 -at 0x00 - 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027, 0x3028, - 0x3029, 0x5341, 0x5344, 0x5345, 0xFF21, 0xFF22, 0xFF23, 0xFF24, - 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, - 0xFF2D, 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, - 0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0xFF41, 0xFF42, - 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A, - 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F, 0xFF50, 0xFF51, 0xFF52, - 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57, 0xFF58, 0xFF59, 0xFF5A, - 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, - 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, 0x03A0, - 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, - 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, - 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, - 0x03C1, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9, - 0x3105, 0x3106, 0x3107, 0x3108, 0x3109, 0x310A, 0x310B, 0x310C, - 0x310D, 0x310E, 0x310F, 0x79DA, 0x79D9, 0x79E1, 0x79E5, 0x79E8, - 0x79DB, 0x79E2, 0x79F0, 0x7ADA, 0x7ADD, 0x7ADB, 0x7ADC, 0x7B0D, - 0x7B0B, 0x7B14, 0x7C8E, 0x7C86, 0x7C87, 0x7C83, 0x7C8B, 0x7D24, - 0x7D25, 0x7F62, 0x7F93, 0x7F99, 0x7F97, 0x7FC4, 0x7FC6, 0x800A, - 0x8040, 0x803C, 0x803B, 0x80F6, 0x3110, 0x3111, 0x3112, 0x3113, - 0x3114, 0x3115, 0x3116, 0x3117, 0x3118, 0x3119, 0x311A, 0x311B, - 0x311C, 0x311D, 0x311E, 0x311F, 0x3120, 0x3121, 0x3122, 0x3123, - 0x3124, 0x3125, 0x3126, 0x3127, 0x3128, 0x3129, 0x02D9, 0x02C9, - 0x02CA, 0x02C7, 0x02CB, 0x2400, 0x2401, 0x2402, 0x2403, 0x2404, - 0x2405, 0x2406, 0x2407, 0x2408, 0x2409, 0x240A, 0x240B, 0x240C, - 0x240D, 0x240E, 0x240F, 0x2410, 0x2411, 0x2412, 0x2413, 0x2414, - 0x2415, 0x2416, 0x2417, 0x2418, 0x2419, 0x241A, 0x241B, 0x241C, - 0x241D, 0x241E, 0x241F, 0x2421, 0x532C, 0x5359, 0x5368, 0x537E, - 0x53A1, 0x555B, 0x5542, 0x5547, 0x553D, 0x5560, 0x57EB, 0x595F, - 0x5B6F, 0x5C5A, 0x5FA2, 0x5F9D, 0x5FA3, 0x60C2, 0x60A5, 0x621C, - 0x621D, 0x6395, 0x639A, 0x63A6, 0x6550, 0x6552, 0x65C8, 0x6658, - 0x6888, 0x6BB8, 0x4E00, 0x4E59, 0x4E01, 0x4E03, 0x4E43, 0x4E5D, -plane 27 -at 0x00 - 0x4E86, 0x4E8C, 0x4EBA, 0x513F, 0x5165, 0x516B, 0x51E0, 0x5200, - 0x5201, 0x529B, 0x5315, 0x5341, 0x535C, 0x53C8, 0x4E09, 0x4E0B, - 0x4E08, 0x4E0A, 0x4E2B, 0x4E38, 0x51E1, 0x4E45, 0x4E48, 0x4E5F, - 0x4E5E, 0x4E8E, 0x4EA1, 0x5140, 0x5203, 0x52FA, 0x5343, 0x53C9, - 0x53E3, 0x571F, 0x58EB, 0x5915, 0x5927, 0x5973, 0x5B50, 0x5B51, - 0x5B53, 0x5BF8, 0x5C0F, 0x5C22, 0x5C38, 0x5C71, 0x5DDD, 0x5DE5, - 0x5DF1, 0x5DF2, 0x5DF3, 0x5DFE, 0x5E72, 0x5EFE, 0x5F0B, 0x5F13, - 0x624D, 0x80FF, 0x80EE, 0x8104, 0x8103, 0x8107, 0x80F7, 0x822D, - 0x8227, 0x8229, 0x831F, 0x8357, 0x8321, 0x8318, 0x8358, 0x8684, - 0x869F, 0x869B, 0x8689, 0x86A6, 0x8692, 0x868F, 0x86A0, 0x884F, - 0x8878, 0x887A, 0x886E, 0x887B, 0x8884, 0x8873, 0x8A0D, 0x8A0B, - 0x8A19, 0x8ED0, 0x4E11, 0x4E10, 0x4E0D, 0x4E2D, 0x4E30, 0x4E39, - 0x4E4B, 0x5C39, 0x4E88, 0x4E91, 0x4E95, 0x4E92, 0x4E94, 0x4EA2, - 0x4EC1, 0x4EC0, 0x4EC3, 0x4EC6, 0x4EC7, 0x4ECD, 0x4ECA, 0x4ECB, - 0x4EC4, 0x5143, 0x5141, 0x5167, 0x516D, 0x516E, 0x516C, 0x5197, - 0x51F6, 0x5206, 0x5207, 0x5208, 0x52FB, 0x52FE, 0x52FF, 0x5316, - 0x5339, 0x5348, 0x5347, 0x5345, 0x535E, 0x5384, 0x53CB, 0x53CA, - 0x53CD, 0x58EC, 0x5929, 0x592B, 0x592A, 0x592D, 0x5B54, 0x5C11, - 0x5C24, 0x5C3A, 0x5C6F, 0x5DF4, 0x5E7B, 0x5EFF, 0x5F14, 0x5F15, - 0x5FC3, 0x6208, 0x6236, 0x624B, 0x624E, 0x652F, 0x6587, 0x6597, - 0x65A4, 0x65B9, 0x65E5, 0x66F0, 0x6708, 0x6728, 0x6B20, 0x6B62, - 0x6B79, 0x6BCB, 0x6BD4, 0x6BDB, 0x6C0F, 0x6C34, 0x706B, 0x722A, - 0x7236, 0x723B, 0x7247, 0x7259, 0x725B, 0x72AC, 0x738B, 0x4E19, - 0x4E16, 0x4E15, 0x4E14, 0x4E18, 0x4E3B, 0x4E4D, 0x4E4F, 0x4E4E, - 0x4EE5, 0x4ED8, 0x4ED4, 0x4ED5, 0x4ED6, 0x4ED7, 0x4EE3, 0x4EE4, - 0x4ED9, 0x4EDE, 0x5145, 0x5144, 0x5189, 0x518A, 0x51AC, 0x51F9, - 0x51FA, 0x51F8, 0x520A, 0x52A0, 0x529F, 0x5305, 0x5306, 0x5317, - 0x531D, 0x4EDF, 0x534A, 0x5349, 0x5361, 0x5360, 0x536F, 0x536E, - 0x53BB, 0x53EF, 0x53E4, 0x53F3, 0x53EC, 0x53EE, 0x53E9, 0x53E8, - 0x53FC, 0x53F8, 0x53F5, 0x53EB, 0x53E6, 0x53EA, 0x53F2, 0x53F1, - 0x53F0, 0x53E5, 0x53ED, 0x53FB, 0x56DB, 0x56DA, 0x5916, 0x8FF9, - 0x9009, 0x9008, 0x90DE, 0x9151, 0x91DB, 0x91DF, 0x91DE, 0x91D6, -plane 28 -at 0x00 - 0x91E0, 0x9585, 0x9660, 0x9659, 0x9656, 0x96BD, 0x5042, 0x5059, - 0x5044, 0x5066, 0x5052, 0x5054, 0x5071, 0x5050, 0x507B, 0x507C, - 0x5058, 0x5079, 0x506C, 0x5078, 0x51A8, 0x51D1, 0x51CF, 0x5268, - 0x592E, 0x5931, 0x5974, 0x5976, 0x5B55, 0x5B83, 0x5C3C, 0x5DE8, - 0x5DE7, 0x5DE6, 0x5E02, 0x5E03, 0x5E73, 0x5E7C, 0x5F01, 0x5F18, - 0x5F17, 0x5FC5, 0x620A, 0x6253, 0x6254, 0x6252, 0x6251, 0x65A5, - 0x65E6, 0x672E, 0x672C, 0x672A, 0x672B, 0x672D, 0x6B63, 0x6BCD, - 0x6C11, 0x6C10, 0x6C38, 0x6C41, 0x6C40, 0x6C3E, 0x72AF, 0x7384, - 0x7389, 0x74DC, 0x74E6, 0x7518, 0x751F, 0x7528, 0x7529, 0x7530, - 0x7531, 0x7532, 0x7533, 0x758B, 0x767D, 0x76AE, 0x76BF, 0x76EE, - 0x77DB, 0x77E2, 0x77F3, 0x793A, 0x79BE, 0x7A74, 0x7ACB, 0x4E1E, - 0x4E1F, 0x4E52, 0x4E53, 0x4E69, 0x4E99, 0x4EA4, 0x4EA6, 0x4EA5, - 0x4EFF, 0x4F09, 0x4F19, 0x4F0A, 0x4F15, 0x4F0D, 0x4F10, 0x4F11, - 0x4F0F, 0x4EF2, 0x4EF6, 0x4EFB, 0x4EF0, 0x4EF3, 0x4EFD, 0x4F01, - 0x4F0B, 0x5149, 0x5147, 0x5146, 0x5148, 0x5168, 0x5171, 0x518D, - 0x51B0, 0x5217, 0x5211, 0x5212, 0x520E, 0x5216, 0x52A3, 0x5308, - 0x5321, 0x5320, 0x5370, 0x5371, 0x5409, 0x540F, 0x540C, 0x540A, - 0x5410, 0x5401, 0x540B, 0x5404, 0x5411, 0x540D, 0x5408, 0x5403, - 0x540E, 0x5406, 0x5412, 0x56E0, 0x56DE, 0x56DD, 0x5733, 0x5730, - 0x5728, 0x572D, 0x572C, 0x572F, 0x5729, 0x5919, 0x591A, 0x5937, - 0x5938, 0x5984, 0x5978, 0x5983, 0x597D, 0x5979, 0x5982, 0x5981, - 0x5B57, 0x5B58, 0x5B87, 0x5B88, 0x5B85, 0x5B89, 0x5BFA, 0x5C16, - 0x5C79, 0x5DDE, 0x5E06, 0x5E76, 0x5E74, 0x5276, 0x52D4, 0x53A0, - 0x53C4, 0x5558, 0x554C, 0x5568, 0x5549, 0x555D, 0x5529, 0x5554, - 0x5553, 0x555A, 0x553A, 0x553F, 0x552B, 0x57EA, 0x57EF, 0x57DD, - 0x57FE, 0x57DE, 0x57E6, 0x57E8, 0x57FF, 0x5803, 0x58F7, 0x68A6, - 0x591F, 0x595B, 0x595D, 0x595E, 0x5A2B, 0x5A3B, 0x5F0F, 0x5F1B, - 0x5FD9, 0x5FD6, 0x620E, 0x620C, 0x620D, 0x6210, 0x6263, 0x625B, - 0x6258, 0x6536, 0x65E9, 0x65E8, 0x65EC, 0x65ED, 0x66F2, 0x66F3, - 0x6709, 0x673D, 0x6734, 0x6731, 0x6735, 0x6B21, 0x6B64, 0x6B7B, - 0x6C16, 0x6C5D, 0x6C57, 0x6C59, 0x6C5F, 0x6C60, 0x6C50, 0x6C55, - 0x6C61, 0x6C5B, 0x6C4D, 0x6C4E, 0x7070, 0x725F, 0x725D, 0x767E, -plane 29 -at 0x00 - 0x7AF9, 0x7C73, 0x7CF8, 0x7F36, 0x7F8A, 0x7FBD, 0x8001, 0x8003, - 0x800C, 0x8012, 0x8033, 0x807F, 0x8089, 0x808B, 0x808C, 0x81E3, - 0x81EA, 0x81F3, 0x81FC, 0x820C, 0x821B, 0x821F, 0x826E, 0x8272, - 0x827E, 0x866B, 0x8840, 0x884C, 0x8863, 0x897F, 0x9621, 0x4E32, - 0x4EA8, 0x4F4D, 0x4F4F, 0x4F47, 0x4F57, 0x4F5E, 0x4F34, 0x4F5B, - 0x4F55, 0x4F30, 0x4F50, 0x4F51, 0x4F3D, 0x4F3A, 0x4F38, 0x4F43, - 0x4F54, 0x4F3C, 0x4F46, 0x4F63, 0x4F5C, 0x4F60, 0x4F2F, 0x4F4E, - 0x4F36, 0x4F59, 0x4F5D, 0x4F48, 0x4F5A, 0x514C, 0x514B, 0x514D, - 0x5175, 0x51B6, 0x51B7, 0x5225, 0x5224, 0x5229, 0x522A, 0x5228, - 0x52AB, 0x52A9, 0x52AA, 0x52AC, 0x5323, 0x5373, 0x5375, 0x541D, - 0x542D, 0x541E, 0x543E, 0x5426, 0x544E, 0x5427, 0x5446, 0x5443, - 0x5433, 0x5448, 0x5442, 0x541B, 0x5429, 0x544A, 0x5439, 0x543B, - 0x5438, 0x542E, 0x5435, 0x5436, 0x5420, 0x543C, 0x5440, 0x5431, - 0x542B, 0x541F, 0x542C, 0x56EA, 0x56F0, 0x56E4, 0x56EB, 0x574A, - 0x5751, 0x5740, 0x574D, 0x5A61, 0x5A3A, 0x5A6E, 0x5A4B, 0x5A6B, - 0x5A45, 0x5A4E, 0x5A68, 0x5A3D, 0x5A71, 0x5A3F, 0x5A6F, 0x5A75, - 0x5A73, 0x5A2C, 0x5A59, 0x5A54, 0x5A4F, 0x5A63, 0x5BC8, 0x5BC3, - 0x5C5B, 0x5C61, 0x5D21, 0x5D0A, 0x5D09, 0x5D2C, 0x5D08, 0x5D2A, - 0x5D15, 0x5D10, 0x5D13, 0x5D2F, 0x5747, 0x574E, 0x573E, 0x5750, - 0x574F, 0x573B, 0x58EF, 0x593E, 0x599D, 0x5992, 0x59A8, 0x599E, - 0x59A3, 0x5999, 0x5996, 0x598D, 0x59A4, 0x5993, 0x598A, 0x59A5, - 0x5B5D, 0x5B5C, 0x5B5A, 0x5B5B, 0x5B8C, 0x5B8B, 0x5B8F, 0x5C2C, - 0x5C40, 0x5C41, 0x5C3F, 0x5C3E, 0x5C90, 0x5C91, 0x5C94, 0x5C8C, - 0x5DEB, 0x5E0C, 0x5E8F, 0x5E87, 0x5E8A, 0x5EF7, 0x5F04, 0x5F1F, - 0x5F64, 0x5F62, 0x5F77, 0x5F79, 0x5FD8, 0x5FCC, 0x5FD7, 0x5FCD, - 0x5FF1, 0x5FEB, 0x5FF8, 0x5FEA, 0x6212, 0x6211, 0x6284, 0x6297, - 0x6296, 0x6280, 0x6276, 0x6289, 0x626D, 0x628A, 0x627C, 0x627E, - 0x6279, 0x6273, 0x6292, 0x626F, 0x6298, 0x626E, 0x6295, 0x6293, - 0x6291, 0x6286, 0x6539, 0x653B, 0x6538, 0x65F1, 0x66F4, 0x675F, - 0x674E, 0x674F, 0x6750, 0x6751, 0x675C, 0x6756, 0x675E, 0x6749, - 0x6746, 0x6760, 0x6753, 0x6757, 0x6B65, 0x6BCF, 0x6C42, 0x6C5E, - 0x6C99, 0x6C81, 0x6C88, 0x6C89, 0x6C85, 0x6C9B, 0x6C6A, 0x6C7A, -plane 30 -at 0x00 - 0x6C90, 0x6C70, 0x6C8C, 0x6C68, 0x6C96, 0x6C92, 0x6C7D, 0x6C83, - 0x6C72, 0x6C7E, 0x6C74, 0x6C86, 0x6C76, 0x6C8D, 0x6C94, 0x6C98, - 0x6C82, 0x7076, 0x707C, 0x707D, 0x7078, 0x7262, 0x7261, 0x7260, - 0x72C4, 0x72C2, 0x7396, 0x752C, 0x752B, 0x7537, 0x7538, 0x7682, - 0x76EF, 0x77E3, 0x79C1, 0x79C0, 0x79BF, 0x7A76, 0x7CFB, 0x7F55, - 0x8096, 0x8093, 0x809D, 0x8098, 0x809B, 0x809A, 0x80B2, 0x826F, - 0x8292, 0x5D18, 0x5DE3, 0x5E39, 0x5E35, 0x5E3A, 0x5E32, 0x5EBB, - 0x5EBA, 0x5F34, 0x5F39, 0x6098, 0x60D0, 0x60D7, 0x60AA, 0x60A1, - 0x60A4, 0x60EE, 0x60E7, 0x60E8, 0x60DE, 0x637E, 0x638B, 0x6379, - 0x6386, 0x6393, 0x6373, 0x636A, 0x636C, 0x637F, 0x63B2, 0x63BA, - 0x6366, 0x6374, 0x828B, 0x828D, 0x898B, 0x89D2, 0x8A00, 0x8C37, - 0x8C46, 0x8C55, 0x8C9D, 0x8D64, 0x8D70, 0x8DB3, 0x8EAB, 0x8ECA, - 0x8F9B, 0x8FB0, 0x8FC2, 0x8FC6, 0x8FC5, 0x8FC4, 0x5DE1, 0x9091, - 0x90A2, 0x90AA, 0x90A6, 0x90A3, 0x9149, 0x91C6, 0x91CC, 0x9632, - 0x962E, 0x9631, 0x962A, 0x962C, 0x4E26, 0x4E56, 0x4E73, 0x4E8B, - 0x4E9B, 0x4E9E, 0x4EAB, 0x4EAC, 0x4F6F, 0x4F9D, 0x4F8D, 0x4F73, - 0x4F7F, 0x4F6C, 0x4F9B, 0x4F8B, 0x4F86, 0x4F83, 0x4F70, 0x4F75, - 0x4F88, 0x4F69, 0x4F7B, 0x4F96, 0x4F7E, 0x4F8F, 0x4F91, 0x4F7A, - 0x5154, 0x5152, 0x5155, 0x5169, 0x5177, 0x5176, 0x5178, 0x51BD, - 0x51FD, 0x523B, 0x5238, 0x5237, 0x523A, 0x5230, 0x522E, 0x5236, - 0x5241, 0x52BE, 0x52BB, 0x5352, 0x5354, 0x5353, 0x5351, 0x5366, - 0x5377, 0x5378, 0x5379, 0x53D6, 0x53D4, 0x53D7, 0x5473, 0x5475, - 0x5496, 0x5478, 0x5495, 0x5480, 0x547B, 0x5477, 0x5484, 0x5492, - 0x5486, 0x547C, 0x5490, 0x5471, 0x5476, 0x548C, 0x549A, 0x5462, - 0x5468, 0x548B, 0x547D, 0x548E, 0x56FA, 0x5783, 0x5777, 0x576A, - 0x5769, 0x5761, 0x5766, 0x5764, 0x577C, 0x591C, 0x5949, 0x5947, - 0x5948, 0x5944, 0x5954, 0x59BE, 0x59BB, 0x59D4, 0x59B9, 0x59AE, - 0x59D1, 0x59C6, 0x59D0, 0x59CD, 0x59CB, 0x59D3, 0x59CA, 0x59AF, - 0x59B3, 0x59D2, 0x59C5, 0x5B5F, 0x5B64, 0x5B63, 0x5B97, 0x5B9A, - 0x5B98, 0x5B9C, 0x5B99, 0x5B9B, 0x5C1A, 0x5C48, 0x5C45, 0x655A, - 0x654E, 0x654D, 0x658D, 0x658E, 0x65AD, 0x65C7, 0x65CA, 0x65C9, - 0x65E3, 0x6657, 0x6663, 0x6667, 0x671A, 0x6719, 0x6716, 0x689E, -plane 31 -at 0x00 - 0x68B6, 0x6898, 0x6873, 0x689A, 0x688E, 0x68B7, 0x68DB, 0x68A5, - 0x686C, 0x68C1, 0x6884, 0x6895, 0x687A, 0x6899, 0x68B8, 0x68B9, - 0x5C46, 0x5CB7, 0x5CA1, 0x5CB8, 0x5CA9, 0x5CAB, 0x5CB1, 0x5CB3, - 0x5E18, 0x5E1A, 0x5E16, 0x5E15, 0x5E1B, 0x5E11, 0x5E78, 0x5E9A, - 0x5E97, 0x5E9C, 0x5E95, 0x5E96, 0x5EF6, 0x5F26, 0x5F27, 0x5F29, - 0x5F80, 0x5F81, 0x5F7F, 0x5F7C, 0x5FDD, 0x5FE0, 0x5FFD, 0x5FF5, - 0x5FFF, 0x600F, 0x6014, 0x602F, 0x6035, 0x6016, 0x602A, 0x6015, - 0x6021, 0x6027, 0x6029, 0x602B, 0x601B, 0x6216, 0x6215, 0x623F, - 0x623E, 0x6240, 0x627F, 0x62C9, 0x62CC, 0x62C4, 0x62BF, 0x62C2, - 0x62B9, 0x62D2, 0x62DB, 0x62AB, 0x62D3, 0x62D4, 0x62CB, 0x62C8, - 0x62A8, 0x62BD, 0x62BC, 0x62D0, 0x62D9, 0x62C7, 0x62CD, 0x62B5, - 0x62DA, 0x62B1, 0x62D8, 0x62D6, 0x62D7, 0x62C6, 0x62AC, 0x62CE, - 0x653E, 0x65A7, 0x65BC, 0x65FA, 0x6614, 0x6613, 0x660C, 0x6606, - 0x6602, 0x660E, 0x6600, 0x660F, 0x6615, 0x660A, 0x6607, 0x670D, - 0x670B, 0x676D, 0x678B, 0x6795, 0x6771, 0x679C, 0x6773, 0x6777, - 0x6787, 0x679D, 0x6797, 0x676F, 0x6770, 0x677F, 0x6789, 0x677E, - 0x6790, 0x6775, 0x679A, 0x6793, 0x677C, 0x676A, 0x6772, 0x6B23, - 0x6B66, 0x6B67, 0x6B7F, 0x6C13, 0x6C1B, 0x6CE3, 0x6CE8, 0x6CF3, - 0x6CB1, 0x6CCC, 0x6CE5, 0x6CB3, 0x6CBD, 0x6CBE, 0x6CBC, 0x6CE2, - 0x6CAB, 0x6CD5, 0x6CD3, 0x6CB8, 0x6CC4, 0x6CB9, 0x6CC1, 0x6CAE, - 0x6CD7, 0x6CC5, 0x6CF1, 0x6CBF, 0x6CBB, 0x6CE1, 0x6CDB, 0x6CCA, - 0x6CAC, 0x6CEF, 0x6CDC, 0x6CD6, 0x6CE0, 0x6870, 0x6B35, 0x6B90, - 0x6BBB, 0x6BED, 0x6DC1, 0x6DC3, 0x6DCE, 0x6DAD, 0x6E04, 0x6DB9, - 0x6DE7, 0x6E08, 0x6E06, 0x6E0A, 0x6DB0, 0x6DF8, 0x6E0C, 0x6DB1, - 0x6E02, 0x6E07, 0x6E09, 0x6E01, 0x6E17, 0x6DFF, 0x6E12, 0x7103, - 0x7107, 0x7101, 0x70F5, 0x70F1, 0x7108, 0x70F2, 0x7095, 0x708E, - 0x7092, 0x708A, 0x7099, 0x722C, 0x722D, 0x7238, 0x7248, 0x7267, - 0x7269, 0x72C0, 0x72CE, 0x72D9, 0x72D7, 0x72D0, 0x73A9, 0x73A8, - 0x739F, 0x73AB, 0x73A5, 0x753D, 0x759D, 0x7599, 0x759A, 0x7684, - 0x76C2, 0x76F2, 0x76F4, 0x77E5, 0x77FD, 0x793E, 0x7940, 0x7941, - 0x79C9, 0x79C8, 0x7A7A, 0x7A79, 0x7AFA, 0x7CFE, 0x7F54, 0x7F8C, - 0x7F8B, 0x8005, 0x80BA, 0x80A5, 0x80A2, 0x80B1, 0x80A1, 0x80AB, -plane 32 -at 0x00 - 0x80A9, 0x80B4, 0x80AA, 0x80AF, 0x81E5, 0x81FE, 0x820D, 0x82B3, - 0x829D, 0x8299, 0x82AD, 0x82BD, 0x829F, 0x82B9, 0x82B1, 0x82AC, - 0x82A5, 0x82AF, 0x82B8, 0x82A3, 0x82B0, 0x82BE, 0x82B7, 0x864E, - 0x8671, 0x521D, 0x8868, 0x8ECB, 0x8FCE, 0x8FD4, 0x8FD1, 0x90B5, - 0x90B8, 0x90B1, 0x90B6, 0x91C7, 0x91D1, 0x9577, 0x9580, 0x961C, - 0x9640, 0x963F, 0x963B, 0x9644, 0x9642, 0x96B9, 0x96E8, 0x9752, - 0x975E, 0x4E9F, 0x4EAD, 0x4EAE, 0x4FE1, 0x4FB5, 0x4FAF, 0x4FBF, - 0x4FE0, 0x4FD1, 0x4FCF, 0x4FDD, 0x4FC3, 0x4FB6, 0x4FD8, 0x4FDF, - 0x4FCA, 0x4FD7, 0x4FAE, 0x4FD0, 0x4FC4, 0x4FC2, 0x4FDA, 0x4FCE, - 0x4FDE, 0x4FB7, 0x5157, 0x5192, 0x5191, 0x51A0, 0x524E, 0x5243, - 0x524A, 0x524D, 0x524C, 0x524B, 0x5247, 0x52C7, 0x52C9, 0x52C3, - 0x52C1, 0x530D, 0x5357, 0x537B, 0x539A, 0x53DB, 0x54AC, 0x54C0, - 0x54A8, 0x54CE, 0x54C9, 0x54B8, 0x54A6, 0x54B3, 0x54C7, 0x54C2, - 0x54BD, 0x54AA, 0x54C1, 0x710F, 0x70FE, 0x731A, 0x7310, 0x730E, - 0x7402, 0x73F3, 0x73FB, 0x751B, 0x7523, 0x7561, 0x7568, 0x7567, - 0x75D3, 0x7690, 0x76D5, 0x76D7, 0x76D6, 0x7730, 0x7726, 0x7740, - 0x771E, 0x7847, 0x784B, 0x7851, 0x784F, 0x7842, 0x7846, 0x796E, - 0x796C, 0x79F2, 0x79F1, 0x79F5, 0x54C4, 0x54C8, 0x54AF, 0x54AB, - 0x54B1, 0x54BB, 0x54A9, 0x54A7, 0x54BF, 0x56FF, 0x5782, 0x578B, - 0x57A0, 0x57A3, 0x57A2, 0x57CE, 0x57AE, 0x5793, 0x5955, 0x5951, - 0x594F, 0x594E, 0x5950, 0x59DC, 0x59D8, 0x59FF, 0x59E3, 0x59E8, - 0x5A03, 0x59E5, 0x59EA, 0x59DA, 0x59E6, 0x5A01, 0x59FB, 0x5B69, - 0x5BA3, 0x5BA6, 0x5BA4, 0x5BA2, 0x5BA5, 0x5C01, 0x5C4E, 0x5C4F, - 0x5C4D, 0x5C4B, 0x5CD9, 0x5CD2, 0x5DF7, 0x5E1D, 0x5E25, 0x5E1F, - 0x5E7D, 0x5EA0, 0x5EA6, 0x5EFA, 0x5F08, 0x5F2D, 0x5F65, 0x5F88, - 0x5F85, 0x5F8A, 0x5F8B, 0x5F87, 0x5F8C, 0x5F89, 0x6012, 0x601D, - 0x6020, 0x6025, 0x600E, 0x6028, 0x604D, 0x6070, 0x6068, 0x6062, - 0x6046, 0x6043, 0x606C, 0x606B, 0x606A, 0x6064, 0x6241, 0x62DC, - 0x6316, 0x6309, 0x62FC, 0x62ED, 0x6301, 0x62EE, 0x62FD, 0x6307, - 0x62F1, 0x62F7, 0x62EF, 0x62EC, 0x62FE, 0x62F4, 0x6311, 0x6302, - 0x653F, 0x6545, 0x65AB, 0x65BD, 0x65E2, 0x6625, 0x662D, 0x6620, - 0x6627, 0x662F, 0x661F, 0x6628, 0x6631, 0x6624, 0x66F7, 0x67FF, -plane 33 -at 0x00 - 0x67D3, 0x67F1, 0x67D4, 0x67D0, 0x67EC, 0x67B6, 0x67AF, 0x67F5, - 0x67E9, 0x67EF, 0x67C4, 0x67D1, 0x67B4, 0x67DA, 0x67E5, 0x67B8, - 0x67CF, 0x67DE, 0x67F3, 0x67B0, 0x67D9, 0x67E2, 0x67DD, 0x67D2, - 0x6B6A, 0x6B83, 0x6B86, 0x6BB5, 0x6BD2, 0x6BD7, 0x6C1F, 0x6CC9, - 0x6D0B, 0x6D32, 0x6D2A, 0x6D41, 0x6D25, 0x6D0C, 0x6D31, 0x6D1E, - 0x6D17, 0x79F3, 0x79F9, 0x7A9A, 0x7A93, 0x7A91, 0x7AE1, 0x7B21, - 0x7B1C, 0x7B16, 0x7B17, 0x7B36, 0x7B1F, 0x7C93, 0x7C99, 0x7C9A, - 0x7C9C, 0x7D49, 0x7D34, 0x7D37, 0x7D2D, 0x7D4C, 0x7D48, 0x7F3B, - 0x8008, 0x801A, 0x801D, 0x8049, 0x8045, 0x8044, 0x7C9B, 0x812A, - 0x812E, 0x8131, 0x6D3B, 0x6D3D, 0x6D3E, 0x6D36, 0x6D1B, 0x6CF5, - 0x6D39, 0x6D27, 0x6D38, 0x6D29, 0x6D2E, 0x6D35, 0x6D0E, 0x6D2B, - 0x70AB, 0x70BA, 0x70B3, 0x70AC, 0x70AF, 0x70AD, 0x70B8, 0x70AE, - 0x70A4, 0x7230, 0x7272, 0x726F, 0x7274, 0x72E9, 0x72E0, 0x72E1, - 0x73B7, 0x73CA, 0x73BB, 0x73B2, 0x73CD, 0x73C0, 0x73B3, 0x751A, - 0x752D, 0x754F, 0x754C, 0x754E, 0x754B, 0x75AB, 0x75A4, 0x75A5, - 0x75A2, 0x75A3, 0x7678, 0x7686, 0x7687, 0x7688, 0x76C8, 0x76C6, - 0x76C3, 0x76C5, 0x7701, 0x76F9, 0x76F8, 0x7709, 0x770B, 0x76FE, - 0x76FC, 0x7707, 0x77DC, 0x7802, 0x7814, 0x780C, 0x780D, 0x7946, - 0x7949, 0x7948, 0x7947, 0x79B9, 0x79BA, 0x79D1, 0x79D2, 0x79CB, - 0x7A7F, 0x7A81, 0x7AFF, 0x7AFD, 0x7C7D, 0x7D02, 0x7D05, 0x7D00, - 0x7D09, 0x7D07, 0x7D04, 0x7D06, 0x7F38, 0x7F8E, 0x7FBF, 0x8004, - 0x8010, 0x800D, 0x8011, 0x8036, 0x80D6, 0x80E5, 0x80DA, 0x80C3, - 0x80C4, 0x80CC, 0x80E1, 0x80DB, 0x80CE, 0x80DE, 0x80E4, 0x80DD, - 0x81F4, 0x8222, 0x82E7, 0x8303, 0x8305, 0x82E3, 0x82DB, 0x82E6, - 0x8304, 0x82E5, 0x8302, 0x8309, 0x82D2, 0x82D7, 0x82F1, 0x8301, - 0x82DC, 0x82D4, 0x82D1, 0x82DE, 0x82D3, 0x82DF, 0x82EF, 0x8306, - 0x8650, 0x8679, 0x867B, 0x867A, 0x884D, 0x886B, 0x8981, 0x89D4, - 0x8A08, 0x8A02, 0x8A03, 0x8C9E, 0x8CA0, 0x8D74, 0x8D73, 0x8DB4, - 0x8ECD, 0x8ECC, 0x8FF0, 0x8FE6, 0x8FE2, 0x8FEA, 0x8FE5, 0x811A, - 0x8134, 0x8117, 0x831D, 0x8371, 0x8384, 0x8380, 0x8372, 0x83A1, - 0x8379, 0x8391, 0x839F, 0x83AD, 0x8323, 0x8385, 0x839C, 0x83B7, - 0x8658, 0x865A, 0x8657, 0x86B2, 0x86AE, 0x8845, 0x889C, 0x8894, -plane 34 -at 0x00 - 0x88A3, 0x888F, 0x88A5, 0x88A9, 0x88A6, 0x888A, 0x88A0, 0x8890, - 0x8FED, 0x8FEB, 0x8FE4, 0x8FE8, 0x90CA, 0x90CE, 0x90C1, 0x90C3, - 0x914B, 0x914A, 0x91CD, 0x9582, 0x9650, 0x964B, 0x964C, 0x964D, - 0x9762, 0x9769, 0x97CB, 0x97ED, 0x97F3, 0x9801, 0x98A8, 0x98DB, - 0x98DF, 0x9996, 0x9999, 0x4E58, 0x4EB3, 0x500C, 0x500D, 0x5023, - 0x4FEF, 0x5026, 0x5025, 0x4FF8, 0x5029, 0x5016, 0x5006, 0x503C, - 0x501F, 0x501A, 0x5012, 0x5011, 0x4FFA, 0x5000, 0x5014, 0x5028, - 0x4FF1, 0x5021, 0x500B, 0x5019, 0x5018, 0x4FF3, 0x4FEE, 0x502D, - 0x502A, 0x4FFE, 0x502B, 0x5009, 0x517C, 0x51A4, 0x51A5, 0x51A2, - 0x51CD, 0x51CC, 0x51C6, 0x51CB, 0x5256, 0x525C, 0x5254, 0x525B, - 0x525D, 0x532A, 0x537F, 0x539F, 0x539D, 0x53DF, 0x54E8, 0x5510, - 0x5501, 0x5537, 0x54FC, 0x54E5, 0x54F2, 0x5506, 0x54FA, 0x5514, - 0x54E9, 0x54ED, 0x54E1, 0x5509, 0x54EE, 0x54EA, 0x54E6, 0x5527, - 0x5507, 0x54FD, 0x550F, 0x5703, 0x5704, 0x57C2, 0x57D4, 0x57CB, - 0x57C3, 0x5809, 0x590F, 0x5957, 0x5958, 0x595A, 0x5A11, 0x5A18, - 0x5A1C, 0x5A1F, 0x5A1B, 0x5A13, 0x59EC, 0x5A20, 0x5A23, 0x5A29, - 0x5A25, 0x5A0C, 0x5A09, 0x5B6B, 0x5C58, 0x5BB0, 0x5BB3, 0x5BB6, - 0x5BB4, 0x5BAE, 0x5BB5, 0x5BB9, 0x5BB8, 0x5C04, 0x5C51, 0x5C55, - 0x5C50, 0x5CED, 0x5CFD, 0x5CFB, 0x5CEA, 0x5CE8, 0x5CF0, 0x5CF6, - 0x5D01, 0x5CF4, 0x5DEE, 0x5E2D, 0x5E2B, 0x5EAB, 0x5EAD, 0x5EA7, - 0x5F31, 0x5F92, 0x5F91, 0x5F90, 0x6059, 0x8992, 0x8991, 0x8994, - 0x8A26, 0x8A32, 0x8A28, 0x8A1C, 0x8A2B, 0x8A20, 0x8A29, 0x8A21, - 0x8C3A, 0x8C5B, 0x8C58, 0x8C7C, 0x8CA6, 0x8CAE, 0x8CAD, 0x8D65, - 0x8D7E, 0x8D7C, 0x8D7F, 0x8D7A, 0x8DBD, 0x8DC0, 0x8DBB, 0x8EAD, - 0x8EAF, 0x8ED6, 0x8ED9, 0x9012, 0x900E, 0x9025, 0x6063, 0x6065, - 0x6050, 0x6055, 0x606D, 0x6069, 0x606F, 0x6084, 0x609F, 0x609A, - 0x608D, 0x6094, 0x608C, 0x6085, 0x6096, 0x6247, 0x62F3, 0x6308, - 0x62FF, 0x634E, 0x633E, 0x632F, 0x6355, 0x6342, 0x6346, 0x634F, - 0x6349, 0x633A, 0x6350, 0x633D, 0x632A, 0x632B, 0x6328, 0x634D, - 0x634C, 0x6548, 0x6549, 0x6599, 0x65C1, 0x65C5, 0x6642, 0x6649, - 0x664F, 0x6643, 0x6652, 0x664C, 0x6645, 0x6641, 0x66F8, 0x6714, - 0x6715, 0x6717, 0x6821, 0x6838, 0x6848, 0x6846, 0x6853, 0x6839, -plane 35 -at 0x00 - 0x6842, 0x6854, 0x6829, 0x68B3, 0x6817, 0x684C, 0x6851, 0x683D, - 0x67F4, 0x6850, 0x6840, 0x683C, 0x6843, 0x682A, 0x6845, 0x6813, - 0x6818, 0x6841, 0x6B8A, 0x6B89, 0x6BB7, 0x6C23, 0x6C27, 0x6C28, - 0x6C26, 0x6C24, 0x6CF0, 0x6D6A, 0x6D95, 0x6D88, 0x6D87, 0x6D66, - 0x6D78, 0x6D77, 0x6D59, 0x6D93, 0x6D6C, 0x6D89, 0x6D6E, 0x6D5A, - 0x6D74, 0x6D69, 0x6D8C, 0x6D8A, 0x6D79, 0x6D85, 0x6D65, 0x6D94, - 0x70CA, 0x70D8, 0x70E4, 0x70D9, 0x70C8, 0x70CF, 0x7239, 0x7279, - 0x72FC, 0x72F9, 0x72FD, 0x72F8, 0x72F7, 0x7386, 0x73ED, 0x7409, - 0x73EE, 0x73E0, 0x73EA, 0x73DE, 0x7554, 0x755D, 0x755C, 0x755A, - 0x7559, 0x75BE, 0x75C5, 0x75C7, 0x75B2, 0x75B3, 0x75BD, 0x75BC, - 0x75B9, 0x75C2, 0x75B8, 0x768B, 0x76B0, 0x76CA, 0x76CD, 0x76CE, - 0x7729, 0x771F, 0x7720, 0x7728, 0x77E9, 0x7830, 0x7827, 0x7838, - 0x781D, 0x7834, 0x7837, 0x9013, 0x90EE, 0x90AB, 0x90F7, 0x9159, - 0x9154, 0x91F2, 0x91F0, 0x91E5, 0x91F6, 0x9587, 0x965A, 0x966E, - 0x9679, 0x98E1, 0x98E6, 0x9EC4, 0x9ED2, 0x4E80, 0x4E81, 0x508F, - 0x5097, 0x5088, 0x5089, 0x5081, 0x5160, 0x5E42, 0x51D3, 0x51D2, - 0x51D6, 0x5273, 0x5270, 0x53A8, 0x7825, 0x782D, 0x7820, 0x781F, - 0x7832, 0x7955, 0x7950, 0x7960, 0x795F, 0x7956, 0x795E, 0x795D, - 0x7957, 0x795A, 0x79E4, 0x79E3, 0x79E7, 0x79DF, 0x79E6, 0x79E9, - 0x79D8, 0x7A84, 0x7A88, 0x7AD9, 0x7B06, 0x7B11, 0x7C89, 0x7D21, - 0x7D17, 0x7D0B, 0x7D0A, 0x7D20, 0x7D22, 0x7D14, 0x7D10, 0x7D15, - 0x7D1A, 0x7D1C, 0x7D0D, 0x7D19, 0x7D1B, 0x7F3A, 0x7F5F, 0x7F94, - 0x7FC5, 0x7FC1, 0x8006, 0x8018, 0x8015, 0x8019, 0x8017, 0x803D, - 0x803F, 0x80F1, 0x8102, 0x80F0, 0x8105, 0x80ED, 0x80F4, 0x8106, - 0x80F8, 0x80F3, 0x8108, 0x80FD, 0x810A, 0x80FC, 0x80EF, 0x81ED, - 0x81EC, 0x8200, 0x8210, 0x822A, 0x822B, 0x8228, 0x822C, 0x82BB, - 0x832B, 0x8352, 0x8354, 0x834A, 0x8338, 0x8350, 0x8349, 0x8335, - 0x8334, 0x834F, 0x8332, 0x8339, 0x8336, 0x8317, 0x8340, 0x8331, - 0x8328, 0x8343, 0x8654, 0x868A, 0x86AA, 0x8693, 0x86A4, 0x86A9, - 0x868C, 0x86A3, 0x869C, 0x8870, 0x8877, 0x8881, 0x8882, 0x887D, - 0x8879, 0x8A18, 0x8A10, 0x8A0E, 0x8A0C, 0x8A15, 0x8A0A, 0x8A17, - 0x8A13, 0x8A16, 0x8A0F, 0x8A11, 0x8C48, 0x8C7A, 0x8C79, 0x8CA1, -plane 36 -at 0x00 - 0x8CA2, 0x8D77, 0x8EAC, 0x8ED2, 0x8ED4, 0x8ECF, 0x8FB1, 0x9001, - 0x9006, 0x8FF7, 0x9000, 0x8FFA, 0x8FF4, 0x9003, 0x8FFD, 0x9005, - 0x8FF8, 0x9095, 0x90E1, 0x90DD, 0x90E2, 0x9152, 0x914D, 0x914C, - 0x91D8, 0x91DD, 0x91D7, 0x91DC, 0x91D9, 0x9583, 0x9662, 0x9663, - 0x9661, 0x53A6, 0x53C5, 0x5597, 0x55DE, 0x5596, 0x55B4, 0x5585, - 0x559B, 0x55A0, 0x5559, 0x5586, 0x55AF, 0x557A, 0x559E, 0x55A9, - 0x570F, 0x570E, 0x581A, 0x581F, 0x583C, 0x5818, 0x583E, 0x5826, - 0x583A, 0x5822, 0x58FB, 0x5963, 0x5964, 0x5AA8, 0x5AA3, 0x5A82, - 0x5A88, 0x5AA1, 0x965B, 0x965D, 0x9664, 0x9658, 0x965E, 0x96BB, - 0x98E2, 0x99AC, 0x9AA8, 0x9AD8, 0x9B25, 0x9B32, 0x9B3C, 0x4E7E, - 0x507A, 0x507D, 0x505C, 0x5047, 0x5043, 0x504C, 0x505A, 0x5049, - 0x5065, 0x5076, 0x504E, 0x5055, 0x5075, 0x5074, 0x5077, 0x504F, - 0x500F, 0x506F, 0x506D, 0x515C, 0x5195, 0x51F0, 0x526A, 0x526F, - 0x52D2, 0x52D9, 0x52D8, 0x52D5, 0x5310, 0x530F, 0x5319, 0x533F, - 0x5340, 0x533E, 0x53C3, 0x66FC, 0x5546, 0x556A, 0x5566, 0x5544, - 0x555E, 0x5561, 0x5543, 0x554A, 0x5531, 0x5556, 0x554F, 0x5555, - 0x552F, 0x5564, 0x5538, 0x552E, 0x555C, 0x552C, 0x5563, 0x5533, - 0x5541, 0x5557, 0x5708, 0x570B, 0x5709, 0x57DF, 0x5805, 0x580A, - 0x5806, 0x57E0, 0x57E4, 0x57FA, 0x5802, 0x5835, 0x57F7, 0x57F9, - 0x5920, 0x5962, 0x5A36, 0x5A41, 0x5A49, 0x5A66, 0x5A6A, 0x5A40, - 0x5A3C, 0x5A62, 0x5A5A, 0x5A46, 0x5A4A, 0x5B70, 0x5BC7, 0x5BC5, - 0x5BC4, 0x5BC2, 0x5BBF, 0x5BC6, 0x5C09, 0x5C08, 0x5C07, 0x5C60, - 0x5C5C, 0x5C5D, 0x5D07, 0x5D06, 0x5D0E, 0x5D1B, 0x5D16, 0x5D22, - 0x5D11, 0x5D29, 0x5D14, 0x5D19, 0x5D24, 0x5D27, 0x5D17, 0x5DE2, - 0x5E38, 0x5E36, 0x5E33, 0x5E37, 0x5EB7, 0x5EB8, 0x5EB6, 0x5EB5, - 0x5EBE, 0x5F35, 0x5F37, 0x5F57, 0x5F6C, 0x5F69, 0x5F6B, 0x5F97, - 0x5F99, 0x5F9E, 0x5F98, 0x5FA1, 0x5FA0, 0x5F9C, 0x607F, 0x60A3, - 0x6089, 0x60A0, 0x60A8, 0x60CB, 0x60B4, 0x60E6, 0x60BD, 0x5A85, - 0x5A98, 0x5A99, 0x5A89, 0x5A81, 0x5A96, 0x5A80, 0x5A91, 0x5ACF, - 0x5A87, 0x5AA0, 0x5A79, 0x5A86, 0x5AAB, 0x5AAA, 0x5AA4, 0x5A8D, - 0x5A7E, 0x5BD5, 0x5C1E, 0x5C5F, 0x5C5E, 0x5D44, 0x5D3E, 0x5D48, - 0x5D1C, 0x5D5B, 0x5D4D, 0x5D57, 0x5D53, 0x5D4F, 0x5D3B, 0x5D46, -plane 37 -at 0x00 - 0x60C5, 0x60BB, 0x60B5, 0x60DC, 0x60BC, 0x60D8, 0x60D5, 0x60C6, - 0x60DF, 0x60B8, 0x60DA, 0x60C7, 0x621A, 0x621B, 0x6248, 0x63A0, - 0x63A7, 0x6372, 0x6396, 0x63A2, 0x63A5, 0x6377, 0x6367, 0x6398, - 0x63AA, 0x6371, 0x63A9, 0x6389, 0x6383, 0x639B, 0x636B, 0x63A8, - 0x6384, 0x6388, 0x6399, 0x63A1, 0x63AC, 0x6392, 0x638F, 0x6380, - 0x637B, 0x6369, 0x6368, 0x637A, 0x655D, 0x6556, 0x6551, 0x6559, - 0x6557, 0x555F, 0x654F, 0x6558, 0x6555, 0x6554, 0x659C, 0x659B, - 0x65AC, 0x65CF, 0x65CB, 0x65CC, 0x65CE, 0x665D, 0x665A, 0x6664, - 0x6668, 0x6666, 0x665E, 0x66F9, 0x52D7, 0x671B, 0x6881, 0x68AF, - 0x68A2, 0x6893, 0x68B5, 0x687F, 0x6876, 0x68B1, 0x68A7, 0x6897, - 0x68B0, 0x6883, 0x68C4, 0x68AD, 0x6886, 0x6885, 0x6894, 0x689D, - 0x68A8, 0x689F, 0x68A1, 0x6882, 0x6B32, 0x6BBA, 0x6BEB, 0x6BEC, - 0x6C2B, 0x6D8E, 0x6DBC, 0x6DF3, 0x6DD9, 0x6DB2, 0x6DE1, 0x6DCC, - 0x6DE4, 0x6DFB, 0x6DFA, 0x6E05, 0x6DC7, 0x6DCB, 0x6DAF, 0x6DD1, - 0x6DAE, 0x6DDE, 0x6DF9, 0x6DB8, 0x6DF7, 0x6DF5, 0x6DC5, 0x6DD2, - 0x6E1A, 0x6DB5, 0x6DDA, 0x6DEB, 0x6DD8, 0x6DEA, 0x6DF1, 0x6DEE, - 0x6DE8, 0x6DC6, 0x6DC4, 0x6DAA, 0x6DEC, 0x6DBF, 0x6DE6, 0x70F9, - 0x7109, 0x710A, 0x70FD, 0x70EF, 0x723D, 0x727D, 0x7281, 0x731C, - 0x731B, 0x7316, 0x7313, 0x7319, 0x7387, 0x7405, 0x740A, 0x7403, - 0x7406, 0x73FE, 0x740D, 0x74E0, 0x74F6, 0x5E46, 0x5E47, 0x5E48, - 0x5EC0, 0x5EBD, 0x5EBF, 0x5F11, 0x5F3E, 0x5F3B, 0x5F3A, 0x5FA7, - 0x60EA, 0x6107, 0x6122, 0x610C, 0x60B3, 0x60D6, 0x60D2, 0x60E3, - 0x60E5, 0x60E9, 0x6111, 0x60FD, 0x611E, 0x6120, 0x6121, 0x621E, - 0x63E2, 0x63DE, 0x63E6, 0x63F8, 0x63FE, 0x63C1, 0x74F7, 0x751C, - 0x7522, 0x7565, 0x7566, 0x7562, 0x7570, 0x758F, 0x75D4, 0x75D5, - 0x75B5, 0x75CA, 0x75CD, 0x768E, 0x76D4, 0x76D2, 0x76DB, 0x7737, - 0x773E, 0x773C, 0x7736, 0x7738, 0x773A, 0x786B, 0x7843, 0x784E, - 0x7965, 0x7968, 0x796D, 0x79FB, 0x7A92, 0x7A95, 0x7B20, 0x7B28, - 0x7B1B, 0x7B2C, 0x7B26, 0x7B19, 0x7B1E, 0x7B2E, 0x7C92, 0x7C97, - 0x7C95, 0x7D46, 0x7D43, 0x7D71, 0x7D2E, 0x7D39, 0x7D3C, 0x7D40, - 0x7D30, 0x7D33, 0x7D44, 0x7D2F, 0x7D42, 0x7D32, 0x7D31, 0x7F3D, - 0x7F9E, 0x7F9A, 0x7FCC, 0x7FCE, 0x7FD2, 0x801C, 0x804A, 0x8046, -plane 38 -at 0x00 - 0x812F, 0x8116, 0x8123, 0x812B, 0x8129, 0x8130, 0x8124, 0x8202, - 0x8235, 0x8237, 0x8236, 0x8239, 0x838E, 0x839E, 0x8398, 0x8378, - 0x83A2, 0x8396, 0x83BD, 0x83AB, 0x8392, 0x838A, 0x8393, 0x8389, - 0x83A0, 0x8377, 0x837B, 0x837C, 0x8386, 0x83A7, 0x8655, 0x5F6A, - 0x86C7, 0x86C0, 0x86B6, 0x86C4, 0x86B5, 0x86C6, 0x86CB, 0x86B1, - 0x86AF, 0x86C9, 0x8853, 0x889E, 0x8888, 0x88AB, 0x8892, 0x8896, - 0x888D, 0x888B, 0x8993, 0x898F, 0x8A2A, 0x8A1D, 0x8A23, 0x8A25, - 0x8A31, 0x8A2D, 0x8A1F, 0x8A1B, 0x8A22, 0x8C49, 0x8C5A, 0x8CA9, - 0x8CAC, 0x8CAB, 0x8CA8, 0x8CAA, 0x8CA7, 0x8D67, 0x8D66, 0x8DBE, - 0x8DBA, 0x8EDB, 0x8EDF, 0x9019, 0x900D, 0x901A, 0x9017, 0x9023, - 0x901F, 0x901D, 0x9010, 0x9015, 0x901E, 0x9020, 0x900F, 0x9022, - 0x9016, 0x901B, 0x9014, 0x63BF, 0x63F7, 0x63D1, 0x655F, 0x6560, - 0x6561, 0x65D1, 0x667D, 0x666B, 0x667F, 0x6673, 0x6681, 0x666D, - 0x6669, 0x671E, 0x68ED, 0x6903, 0x68FE, 0x68E5, 0x691E, 0x6902, - 0x6909, 0x68CA, 0x6900, 0x6901, 0x6918, 0x68E2, 0x68CF, 0x692E, - 0x68C5, 0x68FF, 0x691C, 0x68C3, 0x90E8, 0x90ED, 0x90FD, 0x9157, - 0x91CE, 0x91F5, 0x91E6, 0x91E3, 0x91E7, 0x91ED, 0x91E9, 0x9589, - 0x966A, 0x9675, 0x9673, 0x9678, 0x9670, 0x9674, 0x9676, 0x9677, - 0x966C, 0x96C0, 0x96EA, 0x96E9, 0x7AE0, 0x7ADF, 0x9802, 0x9803, - 0x9B5A, 0x9CE5, 0x9E75, 0x9E7F, 0x9EA5, 0x9EBB, 0x50A2, 0x508D, - 0x5085, 0x5099, 0x5091, 0x5080, 0x5096, 0x5098, 0x509A, 0x6700, - 0x51F1, 0x5272, 0x5274, 0x5275, 0x5269, 0x52DE, 0x52DD, 0x52DB, - 0x535A, 0x53A5, 0x557B, 0x5580, 0x55A7, 0x557C, 0x558A, 0x559D, - 0x5598, 0x5582, 0x559C, 0x55AA, 0x5594, 0x5587, 0x558B, 0x5583, - 0x55B3, 0x55AE, 0x559F, 0x553E, 0x55B2, 0x559A, 0x55BB, 0x55AC, - 0x55B1, 0x557E, 0x5589, 0x55AB, 0x5599, 0x570D, 0x582F, 0x582A, - 0x5834, 0x5824, 0x5830, 0x5831, 0x5821, 0x581D, 0x5820, 0x58F9, - 0x58FA, 0x5960, 0x5A77, 0x5A9A, 0x5A7F, 0x5A92, 0x5A9B, 0x5AA7, - 0x5B73, 0x5B71, 0x5BD2, 0x5BCC, 0x5BD3, 0x5BD0, 0x5C0A, 0x5C0B, - 0x5C31, 0x5D4C, 0x5D50, 0x5D34, 0x5D47, 0x5DFD, 0x5E45, 0x5E3D, - 0x5E40, 0x5E43, 0x5E7E, 0x5ECA, 0x5EC1, 0x5EC2, 0x5EC4, 0x5F3C, - 0x5F6D, 0x5FA9, 0x5FAA, 0x5FA8, 0x60D1, 0x60E1, 0x60B2, 0x60B6, -plane 39 -at 0x00 - 0x60E0, 0x611C, 0x6123, 0x60FA, 0x6115, 0x60F0, 0x60FB, 0x60F4, - 0x6168, 0x60F1, 0x610E, 0x60F6, 0x6109, 0x6100, 0x6112, 0x621F, - 0x6249, 0x63A3, 0x638C, 0x63CF, 0x63C0, 0x63E9, 0x63C9, 0x63C6, - 0x63CD, 0x6B6F, 0x6B6E, 0x6BBE, 0x6BF4, 0x6C2D, 0x6DB6, 0x6E75, - 0x6E1E, 0x6E18, 0x6E48, 0x6E4F, 0x6E42, 0x6E6A, 0x6E70, 0x6DFE, - 0x6E6D, 0x6E7B, 0x6E7E, 0x6E59, 0x6E57, 0x6E80, 0x6E50, 0x6E29, - 0x6E76, 0x6E2A, 0x6E4C, 0x712A, 0x7135, 0x712C, 0x7137, 0x711D, - 0x7138, 0x7134, 0x63D2, 0x63E3, 0x63D0, 0x63E1, 0x63D6, 0x63ED, - 0x63EE, 0x6376, 0x63F4, 0x63EA, 0x63DB, 0x6452, 0x63DA, 0x63F9, - 0x655E, 0x6566, 0x6562, 0x6563, 0x6591, 0x6590, 0x65AF, 0x666E, - 0x6670, 0x6674, 0x6676, 0x666F, 0x6691, 0x667A, 0x667E, 0x6677, - 0x66FE, 0x66FF, 0x671F, 0x671D, 0x68FA, 0x68D5, 0x68E0, 0x68D8, - 0x68D7, 0x6905, 0x68DF, 0x68F5, 0x68EE, 0x68E7, 0x68F9, 0x68D2, - 0x68F2, 0x68E3, 0x68CB, 0x68CD, 0x690D, 0x6912, 0x690E, 0x68C9, - 0x68DA, 0x696E, 0x68FB, 0x6B3E, 0x6B3A, 0x6B3D, 0x6B98, 0x6B96, - 0x6BBC, 0x6BEF, 0x6C2E, 0x6C2F, 0x6C2C, 0x6E2F, 0x6E38, 0x6E54, - 0x6E21, 0x6E32, 0x6E67, 0x6E4A, 0x6E20, 0x6E25, 0x6E23, 0x6E1B, - 0x6E5B, 0x6E58, 0x6E24, 0x6E56, 0x6E6E, 0x6E2D, 0x6E26, 0x6E6F, - 0x6E34, 0x6E4D, 0x6E3A, 0x6E2C, 0x6E43, 0x6E1D, 0x6E3E, 0x6ECB, - 0x6E89, 0x6E19, 0x6E4E, 0x6E63, 0x6E44, 0x6E72, 0x6E69, 0x6E5F, - 0x7119, 0x711A, 0x7126, 0x7130, 0x7121, 0x7136, 0x716E, 0x711C, - 0x724C, 0x7284, 0x7280, 0x7336, 0x7325, 0x7334, 0x7329, 0x743A, - 0x742A, 0x7433, 0x7422, 0x7425, 0x7435, 0x7436, 0x7434, 0x742F, - 0x741B, 0x7426, 0x7428, 0x7525, 0x7526, 0x756B, 0x756A, 0x75E2, - 0x75DB, 0x75E3, 0x75D9, 0x75D8, 0x75DE, 0x75E0, 0x767B, 0x767C, - 0x7696, 0x7693, 0x76B4, 0x76DC, 0x774F, 0x77ED, 0x785D, 0x786C, - 0x786F, 0x7A0D, 0x7A08, 0x7A0B, 0x7A05, 0x7A00, 0x7A98, 0x712B, - 0x7133, 0x7127, 0x7124, 0x712D, 0x7232, 0x7283, 0x7282, 0x7287, - 0x7306, 0x7324, 0x7338, 0x732A, 0x732C, 0x732B, 0x732F, 0x7328, - 0x7417, 0x7419, 0x7438, 0x741F, 0x7414, 0x743C, 0x73F7, 0x741C, - 0x7415, 0x7418, 0x7439, 0x74F9, 0x7524, 0x756E, 0x756D, 0x7571, - 0x7A97, 0x7A96, 0x7AE5, 0x7AE3, 0x7B49, 0x7B56, 0x7B46, 0x7B50, -plane 40 -at 0x00 - 0x7B52, 0x7B54, 0x7B4D, 0x7B4B, 0x7B4F, 0x7B51, 0x7C9F, 0x7CA5, - 0x7D5E, 0x7D50, 0x7D68, 0x7D55, 0x7D2B, 0x7D6E, 0x7D72, 0x7D61, - 0x7D66, 0x7D62, 0x7D70, 0x7D73, 0x5584, 0x7FD4, 0x7FD5, 0x800B, - 0x8052, 0x8085, 0x8155, 0x8154, 0x814B, 0x8151, 0x814E, 0x8139, - 0x8146, 0x813E, 0x814C, 0x8153, 0x8174, 0x8212, 0x821C, 0x83E9, - 0x8403, 0x83F8, 0x840D, 0x83E0, 0x83C5, 0x840B, 0x83C1, 0x83EF, - 0x83F1, 0x83F4, 0x8457, 0x840A, 0x83F0, 0x840C, 0x83CC, 0x83FD, - 0x83F2, 0x83CA, 0x8438, 0x840E, 0x8404, 0x83DC, 0x8407, 0x83D4, - 0x83DF, 0x865B, 0x86DF, 0x86D9, 0x86ED, 0x86D4, 0x86DB, 0x86E4, - 0x86D0, 0x86DE, 0x8857, 0x88C1, 0x88C2, 0x88B1, 0x8983, 0x8996, - 0x8A3B, 0x8A60, 0x8A55, 0x8A5E, 0x8A3C, 0x8A41, 0x8A54, 0x8A5B, - 0x8A50, 0x8A46, 0x8A34, 0x8A3A, 0x8A36, 0x8A56, 0x8C61, 0x8C82, - 0x8CAF, 0x8CBC, 0x8CB3, 0x8CBD, 0x8CC1, 0x8CBB, 0x8CC0, 0x8CB4, - 0x8CB7, 0x8CB6, 0x8CBF, 0x8CB8, 0x8D8A, 0x8D85, 0x8D81, 0x8DCE, - 0x8DDD, 0x8DCB, 0x8DDA, 0x8DD1, 0x8DCC, 0x8DDB, 0x8DC6, 0x8EFB, - 0x8EF8, 0x8EFC, 0x8F9C, 0x902E, 0x9035, 0x9031, 0x9038, 0x9032, - 0x9036, 0x9102, 0x90F5, 0x9109, 0x90FE, 0x9163, 0x9165, 0x91CF, - 0x9214, 0x9215, 0x9223, 0x9209, 0x921E, 0x920D, 0x9210, 0x9207, - 0x9211, 0x9594, 0x958F, 0x958B, 0x9591, 0x758E, 0x75E5, 0x7694, - 0x76B3, 0x76D9, 0x7748, 0x7749, 0x7743, 0x7742, 0x77DF, 0x7863, - 0x7876, 0x785F, 0x7866, 0x7966, 0x7971, 0x7976, 0x7984, 0x7975, - 0x79FF, 0x7A07, 0x7A0E, 0x7A09, 0x7AE7, 0x7AE2, 0x7B55, 0x7B43, - 0x7B57, 0x7B6C, 0x7B42, 0x7B53, 0x7B41, 0x7CA0, 0x9593, 0x9592, - 0x958E, 0x968A, 0x968E, 0x968B, 0x967D, 0x9685, 0x9686, 0x968D, - 0x9672, 0x9684, 0x96C1, 0x96C5, 0x96C4, 0x96C6, 0x96C7, 0x96EF, - 0x96F2, 0x97CC, 0x9805, 0x9806, 0x9808, 0x98E7, 0x98EA, 0x98EF, - 0x98E9, 0x98F2, 0x98ED, 0x99AE, 0x99AD, 0x9EC3, 0x9ECD, 0x9ED1, - 0x4E82, 0x50AD, 0x50B5, 0x50B2, 0x50B3, 0x50C5, 0x50BE, 0x50AC, - 0x50B7, 0x50BB, 0x50AF, 0x50C7, 0x527F, 0x5277, 0x527D, 0x52DF, - 0x52E6, 0x52E4, 0x52E2, 0x52E3, 0x532F, 0x55DF, 0x55E8, 0x55D3, - 0x55E6, 0x55CE, 0x55DC, 0x55C7, 0x55D1, 0x55E3, 0x55E4, 0x55EF, - 0x55DA, 0x55E1, 0x55C5, 0x55C6, 0x55E5, 0x55C9, 0x5712, 0x5713, -plane 41 -at 0x00 - 0x585E, 0x5851, 0x5858, 0x5857, 0x585A, 0x5854, 0x586B, 0x584C, - 0x586D, 0x584A, 0x5862, 0x5852, 0x584B, 0x5967, 0x5AC1, 0x5AC9, - 0x5ACC, 0x5ABE, 0x5ABD, 0x5ABC, 0x5AB3, 0x5AC2, 0x5AB2, 0x5D69, - 0x5D6F, 0x5E4C, 0x5E79, 0x5EC9, 0x5EC8, 0x5F12, 0x5F59, 0x5FAC, - 0x5FAE, 0x611A, 0x610F, 0x6148, 0x611F, 0x60F3, 0x611B, 0x60F9, - 0x6101, 0x6108, 0x614E, 0x614C, 0x6144, 0x614D, 0x613E, 0x6134, - 0x6127, 0x610D, 0x6106, 0x6137, 0x6221, 0x6222, 0x6413, 0x643E, - 0x641E, 0x642A, 0x642D, 0x643D, 0x642C, 0x640F, 0x641C, 0x6414, - 0x640D, 0x6436, 0x6416, 0x6417, 0x6406, 0x656C, 0x659F, 0x65B0, - 0x6697, 0x6689, 0x6687, 0x6688, 0x6696, 0x6684, 0x6698, 0x668D, - 0x6703, 0x6994, 0x696D, 0x7CA6, 0x7CA4, 0x7D74, 0x7D59, 0x7D60, - 0x7D57, 0x7D6C, 0x7D7E, 0x7D64, 0x7D5A, 0x7D5D, 0x7D76, 0x7D4D, - 0x7D75, 0x7FD3, 0x7FD6, 0x8060, 0x804E, 0x8145, 0x813B, 0x8148, - 0x8142, 0x8149, 0x8140, 0x8114, 0x8141, 0x81EF, 0x81F6, 0x8203, - 0x83ED, 0x83DA, 0x8418, 0x83D2, 0x695A, 0x6977, 0x6960, 0x6954, - 0x6975, 0x6930, 0x6982, 0x694A, 0x6968, 0x696B, 0x695E, 0x6953, - 0x6979, 0x6986, 0x695D, 0x6963, 0x695B, 0x6B47, 0x6B72, 0x6BC0, - 0x6BBF, 0x6BD3, 0x6BFD, 0x6EA2, 0x6EAF, 0x6ED3, 0x6EB6, 0x6EC2, - 0x6E90, 0x6E9D, 0x6EC7, 0x6EC5, 0x6EA5, 0x6E98, 0x6EBC, 0x6EBA, - 0x6EAB, 0x6ED1, 0x6E96, 0x6E9C, 0x6EC4, 0x6ED4, 0x6EAA, 0x6EA7, - 0x6EB4, 0x714E, 0x7159, 0x7169, 0x7164, 0x7149, 0x7167, 0x715C, - 0x716C, 0x7166, 0x714C, 0x7165, 0x715E, 0x7146, 0x7168, 0x7156, - 0x723A, 0x7252, 0x7337, 0x7345, 0x733F, 0x733E, 0x746F, 0x745A, - 0x7455, 0x745F, 0x745E, 0x7441, 0x743F, 0x7459, 0x745B, 0x745C, - 0x7576, 0x7578, 0x7600, 0x75F0, 0x7601, 0x75F2, 0x75F1, 0x75FA, - 0x75FF, 0x75F4, 0x75F3, 0x76DE, 0x76DF, 0x775B, 0x776B, 0x7766, - 0x775E, 0x7763, 0x7779, 0x776A, 0x776C, 0x775C, 0x7765, 0x7768, - 0x7762, 0x77EE, 0x788E, 0x78B0, 0x7897, 0x7898, 0x788C, 0x7889, - 0x787C, 0x7891, 0x7893, 0x787F, 0x797A, 0x797F, 0x7981, 0x842C, - 0x79BD, 0x7A1C, 0x7A1A, 0x7A20, 0x7A14, 0x7A1F, 0x7A1E, 0x7A9F, - 0x7AA0, 0x7B77, 0x7BC0, 0x7B60, 0x7B6E, 0x7B67, 0x7CB1, 0x7CB3, - 0x7CB5, 0x7D93, 0x7D79, 0x7D91, 0x7D81, 0x7D8F, 0x7D5B, 0x7F6E, -plane 42 -at 0x00 - 0x7F69, 0x7F6A, 0x7F72, 0x7FA9, 0x7FA8, 0x7FA4, 0x8056, 0x8058, - 0x8086, 0x8084, 0x8171, 0x8170, 0x8178, 0x8165, 0x816E, 0x8173, - 0x816B, 0x8408, 0x8400, 0x8417, 0x8346, 0x8414, 0x83D3, 0x8405, - 0x841F, 0x8402, 0x8416, 0x83CD, 0x83E6, 0x865D, 0x86D5, 0x86E1, - 0x86EE, 0x8847, 0x8846, 0x88BB, 0x88BF, 0x88B4, 0x88B5, 0x899A, - 0x8A43, 0x8A5A, 0x8A35, 0x8A38, 0x8A42, 0x8A49, 0x8A5D, 0x8A4B, - 0x8A3D, 0x8C60, 0x8179, 0x817A, 0x8166, 0x8205, 0x8247, 0x8482, - 0x8477, 0x843D, 0x8431, 0x8475, 0x8466, 0x846B, 0x8449, 0x846C, - 0x845B, 0x843C, 0x8435, 0x8461, 0x8463, 0x8469, 0x846D, 0x8446, - 0x865E, 0x865C, 0x865F, 0x86F9, 0x8713, 0x8708, 0x8707, 0x8700, - 0x86FE, 0x86FB, 0x8702, 0x8703, 0x8706, 0x870A, 0x8859, 0x88DF, - 0x88D4, 0x88D9, 0x88DC, 0x88D8, 0x88DD, 0x88E1, 0x88CA, 0x88D5, - 0x88D2, 0x899C, 0x89E3, 0x8A6B, 0x8A72, 0x8A73, 0x8A66, 0x8A69, - 0x8A70, 0x8A87, 0x8A7C, 0x8A63, 0x8AA0, 0x8A71, 0x8A85, 0x8A6D, - 0x8A62, 0x8A6E, 0x8A6C, 0x8A79, 0x8A7B, 0x8A3E, 0x8A68, 0x8C62, - 0x8C8A, 0x8C89, 0x8CCA, 0x8CC7, 0x8CC8, 0x8CC4, 0x8CB2, 0x8CC3, - 0x8CC2, 0x8CC5, 0x8DE1, 0x8DDF, 0x8DE8, 0x8DEF, 0x8DF3, 0x8DFA, - 0x8DEA, 0x8DE4, 0x8DE6, 0x8EB2, 0x8F03, 0x8F09, 0x8EFE, 0x8F0A, - 0x8F9F, 0x8FB2, 0x904B, 0x904A, 0x9053, 0x9042, 0x9054, 0x903C, - 0x9055, 0x9050, 0x9047, 0x904F, 0x904E, 0x904D, 0x9051, 0x903E, - 0x9041, 0x9112, 0x9117, 0x916C, 0x916A, 0x9169, 0x91C9, 0x9237, - 0x9257, 0x9238, 0x923D, 0x9240, 0x923E, 0x925B, 0x924B, 0x9264, - 0x9251, 0x9234, 0x9249, 0x924D, 0x9245, 0x9239, 0x923F, 0x925A, - 0x9598, 0x9698, 0x9694, 0x9695, 0x96CD, 0x96CB, 0x96C9, 0x96CA, - 0x96F7, 0x96FB, 0x96F9, 0x96F6, 0x9756, 0x9774, 0x9776, 0x9810, - 0x9811, 0x9813, 0x980A, 0x9812, 0x980C, 0x98FC, 0x98F4, 0x8C5E, - 0x8C7F, 0x8C7E, 0x8C83, 0x8CB1, 0x8D87, 0x8D88, 0x8D83, 0x8D86, - 0x8D8B, 0x8D82, 0x8DCA, 0x8DD2, 0x8DD4, 0x8DC9, 0x8EB0, 0x8EF2, - 0x8EE4, 0x8EF3, 0x8EEA, 0x8EFD, 0x8F9D, 0x902B, 0x902A, 0x9028, - 0x9029, 0x902C, 0x903A, 0x9030, 0x9037, 0x903B, 0x910A, 0x91FE, - 0x98FD, 0x98FE, 0x99B3, 0x99B1, 0x99B4, 0x9AE1, 0x9CE9, 0x9E82, - 0x9F0E, 0x9F13, 0x9F20, 0x50E7, 0x50EE, 0x50E5, 0x50D6, 0x50ED, -plane 43 -at 0x00 - 0x50DA, 0x50D5, 0x50CF, 0x50D1, 0x50F1, 0x50CE, 0x50E9, 0x5162, - 0x51F3, 0x5283, 0x5282, 0x5331, 0x53AD, 0x55FE, 0x5600, 0x561B, - 0x5617, 0x55FD, 0x5614, 0x5606, 0x5609, 0x560D, 0x560E, 0x55F7, - 0x5616, 0x561F, 0x5608, 0x5610, 0x55F6, 0x5718, 0x5716, 0x5875, - 0x587E, 0x5883, 0x5893, 0x588A, 0x5879, 0x5885, 0x587D, 0x58FD, - 0x5925, 0x5922, 0x5924, 0x596A, 0x5969, 0x5AE1, 0x5AE6, 0x5AE9, - 0x5AD7, 0x5AD6, 0x5AD8, 0x5AE3, 0x5B75, 0x5BDE, 0x5BE7, 0x5BE1, - 0x5BE5, 0x5BE6, 0x5BE8, 0x5BE2, 0x5BE4, 0x5BDF, 0x5C0D, 0x5C62, - 0x5D84, 0x5D87, 0x5E5B, 0x5E63, 0x5E55, 0x5E57, 0x5E54, 0x5ED3, - 0x5ED6, 0x5F0A, 0x5F46, 0x5F70, 0x5FB9, 0x6147, 0x613F, 0x614B, - 0x6177, 0x6162, 0x6163, 0x615F, 0x615A, 0x6158, 0x6175, 0x622A, - 0x6487, 0x6458, 0x6454, 0x64A4, 0x6478, 0x645F, 0x647A, 0x6451, - 0x6467, 0x6434, 0x646D, 0x647B, 0x6572, 0x65A1, 0x65D7, 0x65D6, - 0x66A2, 0x66A8, 0x669D, 0x699C, 0x69A8, 0x6995, 0x69C1, 0x69AE, - 0x69D3, 0x69CB, 0x699B, 0x69B7, 0x69BB, 0x69AB, 0x69B4, 0x69D0, - 0x69CD, 0x69AD, 0x69CC, 0x69A6, 0x69C3, 0x69A3, 0x6B49, 0x6B4C, - 0x6C33, 0x6F33, 0x6F14, 0x6EFE, 0x6F13, 0x6EF4, 0x6F29, 0x6F3E, - 0x6F20, 0x6F2C, 0x6F0F, 0x6F02, 0x6F22, 0x9220, 0x920B, 0x9218, - 0x9222, 0x921B, 0x9208, 0x920E, 0x9213, 0x9595, 0x968C, 0x967B, - 0x967F, 0x9681, 0x9682, 0x96EE, 0x96ED, 0x96EC, 0x975F, 0x976F, - 0x976D, 0x98F0, 0x9AA9, 0x9AE0, 0x4EB7, 0x50CC, 0x50BC, 0x50AA, - 0x50B9, 0x50AB, 0x50C3, 0x50CD, 0x517E, 0x527E, 0x6EFF, 0x6EEF, - 0x6F06, 0x6F31, 0x6F38, 0x6F32, 0x6F23, 0x6F15, 0x6F2B, 0x6F2F, - 0x6F88, 0x6F2A, 0x6EEC, 0x6F01, 0x6EF2, 0x6ECC, 0x6EF7, 0x7194, - 0x7199, 0x717D, 0x718A, 0x7184, 0x7192, 0x723E, 0x7292, 0x7296, - 0x7344, 0x7350, 0x7464, 0x7463, 0x746A, 0x7470, 0x746D, 0x7504, - 0x7591, 0x7627, 0x760D, 0x760B, 0x7609, 0x7613, 0x76E1, 0x76E3, - 0x7784, 0x777D, 0x777F, 0x7761, 0x78C1, 0x789F, 0x78A7, 0x78B3, - 0x78A9, 0x78A3, 0x798E, 0x798F, 0x798D, 0x7A2E, 0x7A31, 0x7AAA, - 0x7AA9, 0x7AED, 0x7AEF, 0x7BA1, 0x7B95, 0x7B8B, 0x7B75, 0x7B97, - 0x7B9D, 0x7B94, 0x7B8F, 0x7BB8, 0x7B87, 0x7B84, 0x7CB9, 0x7CBD, - 0x7CBE, 0x7DBB, 0x7DB0, 0x7D9C, 0x7DBD, 0x7DBE, 0x7DA0, 0x7DCA, -plane 44 -at 0x00 - 0x7DB4, 0x7DB2, 0x7DB1, 0x7DBA, 0x7DA2, 0x7DBF, 0x7DB5, 0x7DB8, - 0x7DAD, 0x7DD2, 0x7DC7, 0x7DAC, 0x7F70, 0x7FE0, 0x7FE1, 0x7FDF, - 0x805E, 0x805A, 0x8087, 0x8150, 0x8180, 0x818F, 0x8188, 0x818A, - 0x817F, 0x8182, 0x81E7, 0x81FA, 0x8207, 0x8214, 0x821E, 0x824B, - 0x84C9, 0x84BF, 0x84C6, 0x84C4, 0x8499, 0x849E, 0x84B2, 0x849C, - 0x84CB, 0x84B8, 0x84C0, 0x84D3, 0x8490, 0x84BC, 0x84D1, 0x84CA, - 0x873F, 0x871C, 0x873B, 0x8722, 0x8725, 0x8734, 0x8718, 0x8755, - 0x8737, 0x8729, 0x88F3, 0x8902, 0x88F4, 0x88F9, 0x88F8, 0x88FD, - 0x88E8, 0x891A, 0x88EF, 0x8AA6, 0x8A8C, 0x8A9E, 0x8AA3, 0x8A8D, - 0x8AA1, 0x8A93, 0x8AA4, 0x5279, 0x52E1, 0x52E0, 0x52E7, 0x5380, - 0x53AB, 0x53AA, 0x53A9, 0x53E0, 0x55EA, 0x55D7, 0x55C1, 0x5715, - 0x586C, 0x585C, 0x5850, 0x5861, 0x586A, 0x5869, 0x5856, 0x5860, - 0x5866, 0x585F, 0x5923, 0x5966, 0x5968, 0x5ACE, 0x5AC5, 0x5AC3, - 0x5AD0, 0x5B74, 0x5B76, 0x5BDC, 0x8AAA, 0x8AA5, 0x8AA8, 0x8A98, - 0x8A91, 0x8A9A, 0x8AA7, 0x8C6A, 0x8C8D, 0x8C8C, 0x8CD3, 0x8CD1, - 0x8CD2, 0x8D6B, 0x8D99, 0x8D95, 0x8DFC, 0x8F14, 0x8F12, 0x8F15, - 0x8F13, 0x8FA3, 0x9060, 0x9058, 0x905C, 0x9063, 0x9059, 0x905E, - 0x9062, 0x905D, 0x905B, 0x9119, 0x9118, 0x911E, 0x9175, 0x9178, - 0x9177, 0x9174, 0x9278, 0x9280, 0x9285, 0x9298, 0x9296, 0x927B, - 0x9293, 0x929C, 0x92A8, 0x927C, 0x9291, 0x95A1, 0x95A8, 0x95A9, - 0x95A3, 0x95A5, 0x95A4, 0x9699, 0x969C, 0x969B, 0x96CC, 0x96D2, - 0x9700, 0x977C, 0x9785, 0x97F6, 0x9817, 0x9818, 0x98AF, 0x98B1, - 0x9903, 0x9905, 0x990C, 0x9909, 0x99C1, 0x9AAF, 0x9AB0, 0x9AE6, - 0x9B41, 0x9B42, 0x9CF4, 0x9CF6, 0x9CF3, 0x9EBC, 0x9F3B, 0x9F4A, - 0x5104, 0x5100, 0x50FB, 0x50F5, 0x50F9, 0x5102, 0x5108, 0x5109, - 0x5105, 0x51DC, 0x5287, 0x5288, 0x5289, 0x528D, 0x528A, 0x52F0, - 0x53B2, 0x562E, 0x563B, 0x5639, 0x5632, 0x563F, 0x5634, 0x5629, - 0x5653, 0x564E, 0x5657, 0x5674, 0x5636, 0x562F, 0x5630, 0x5880, - 0x589F, 0x589E, 0x58B3, 0x589C, 0x58AE, 0x58A9, 0x58A6, 0x596D, - 0x5B09, 0x5AFB, 0x5B0B, 0x5AF5, 0x5B0C, 0x5B08, 0x5BEE, 0x5BEC, - 0x5BE9, 0x5BEB, 0x5C64, 0x5C65, 0x5D9D, 0x5D94, 0x5E62, 0x5E5F, - 0x5E61, 0x5EE2, 0x5EDA, 0x5EDF, 0x5EDD, 0x5EE3, 0x5EE0, 0x5F48, -plane 45 -at 0x00 - 0x5F71, 0x5FB7, 0x5FB5, 0x6176, 0x6167, 0x616E, 0x615D, 0x6155, - 0x6182, 0x5BD7, 0x5BDA, 0x5BDB, 0x5C20, 0x5D6D, 0x5D66, 0x5D64, - 0x5D6E, 0x5D60, 0x5F42, 0x5F5A, 0x5F6E, 0x6130, 0x613A, 0x612A, - 0x6143, 0x6119, 0x6131, 0x613D, 0x6408, 0x6432, 0x6438, 0x6431, - 0x6419, 0x6411, 0x6429, 0x641D, 0x643C, 0x6446, 0x6447, 0x643A, - 0x6407, 0x656B, 0x617C, 0x6170, 0x616B, 0x617E, 0x61A7, 0x6190, - 0x61AB, 0x618E, 0x61AC, 0x619A, 0x61A4, 0x6194, 0x61AE, 0x622E, - 0x6469, 0x646F, 0x6479, 0x649E, 0x64B2, 0x6488, 0x6490, 0x64B0, - 0x64A5, 0x6493, 0x6495, 0x64A9, 0x6492, 0x64AE, 0x64AD, 0x64AB, - 0x649A, 0x64AC, 0x6499, 0x64A2, 0x64B3, 0x6575, 0x6577, 0x6578, - 0x66AE, 0x66AB, 0x66B4, 0x66B1, 0x6A23, 0x6A1F, 0x69E8, 0x6A01, - 0x6A1E, 0x6A19, 0x69FD, 0x6A21, 0x6A13, 0x6A0A, 0x69F3, 0x6A02, - 0x6A05, 0x69ED, 0x6A11, 0x6B50, 0x6B4E, 0x6BA4, 0x6BC5, 0x6BC6, - 0x6F3F, 0x6F7C, 0x6F84, 0x6F51, 0x6F66, 0x6F54, 0x6F86, 0x6F6D, - 0x6F5B, 0x6F78, 0x6F6E, 0x6F8E, 0x6F7A, 0x6F70, 0x6F64, 0x6F97, - 0x6F58, 0x6ED5, 0x6F6F, 0x6F60, 0x6F5F, 0x719F, 0x71AC, 0x71B1, - 0x71A8, 0x7256, 0x729B, 0x734E, 0x7357, 0x7469, 0x748B, 0x7483, - 0x747E, 0x7480, 0x757F, 0x7620, 0x7629, 0x761F, 0x7624, 0x7626, - 0x7621, 0x7622, 0x769A, 0x76BA, 0x76E4, 0x778E, 0x7787, 0x778C, - 0x7791, 0x778B, 0x78CB, 0x78C5, 0x78BA, 0x78CA, 0x78BE, 0x78D5, - 0x78BC, 0x78D0, 0x7A3F, 0x7A3C, 0x7A40, 0x7A3D, 0x7A37, 0x7A3B, - 0x7AAF, 0x7AAE, 0x7BAD, 0x7BB1, 0x7BC4, 0x7BB4, 0x7BC6, 0x7BC7, - 0x7BC1, 0x7BA0, 0x7BCC, 0x7CCA, 0x7DE0, 0x7DF4, 0x7DEF, 0x7DFB, - 0x7DD8, 0x7DEC, 0x7DDD, 0x7DE8, 0x7DE3, 0x7DDA, 0x7DDE, 0x7DE9, - 0x7D9E, 0x7DD9, 0x7DF2, 0x7DF9, 0x7F75, 0x7F77, 0x7FAF, 0x6570, - 0x656D, 0x65E4, 0x6693, 0x668F, 0x6692, 0x668E, 0x6946, 0x6931, - 0x693E, 0x697C, 0x6943, 0x6973, 0x6955, 0x6985, 0x694D, 0x6950, - 0x6947, 0x6967, 0x6936, 0x6964, 0x6961, 0x697D, 0x6B44, 0x6B40, - 0x6B71, 0x6B73, 0x6B9C, 0x6BC1, 0x6BFA, 0x6C31, 0x6C32, 0x6EB8, - 0x7FE9, 0x8026, 0x819B, 0x819C, 0x819D, 0x81A0, 0x819A, 0x8198, - 0x8517, 0x853D, 0x851A, 0x84EE, 0x852C, 0x852D, 0x8513, 0x8511, - 0x8523, 0x8521, 0x8514, 0x84EC, 0x8525, 0x84FF, 0x8506, 0x8782, -plane 46 -at 0x00 - 0x8774, 0x8776, 0x8760, 0x8766, 0x8778, 0x8768, 0x8759, 0x8757, - 0x874C, 0x8753, 0x885B, 0x885D, 0x8910, 0x8907, 0x8912, 0x8913, - 0x8915, 0x890A, 0x8ABC, 0x8AD2, 0x8AC7, 0x8AC4, 0x8A95, 0x8ACB, - 0x8AF8, 0x8AB2, 0x8AC9, 0x8AC2, 0x8ABF, 0x8AB0, 0x8AD6, 0x8ACD, - 0x8AB6, 0x8AB9, 0x8ADB, 0x8C4C, 0x8C4E, 0x8C6C, 0x8CE0, 0x8CDE, - 0x8CE6, 0x8CE4, 0x8CEC, 0x8CED, 0x8CE2, 0x8CE3, 0x8CDC, 0x8CEA, - 0x8CE1, 0x8D6D, 0x8D9F, 0x8DA3, 0x8E2B, 0x8E10, 0x8E1D, 0x8E22, - 0x8E0F, 0x8E29, 0x8E1F, 0x8E21, 0x8E1E, 0x8EBA, 0x8F1D, 0x8F1B, - 0x8F1F, 0x8F29, 0x8F26, 0x8F2A, 0x8F1C, 0x8F1E, 0x8F25, 0x9069, - 0x906E, 0x9068, 0x906D, 0x9077, 0x9130, 0x912D, 0x9127, 0x9131, - 0x9187, 0x9189, 0x918B, 0x9183, 0x92C5, 0x92BB, 0x92B7, 0x92EA, - 0x92AC, 0x92E4, 0x92C1, 0x92B3, 0x92BC, 0x92D2, 0x92C7, 0x92F0, - 0x92B2, 0x95AD, 0x95B1, 0x9704, 0x9706, 0x9707, 0x9709, 0x9760, - 0x978D, 0x978B, 0x978F, 0x9821, 0x982B, 0x981C, 0x98B3, 0x990A, - 0x9913, 0x9912, 0x9918, 0x99DD, 0x99D0, 0x99DF, 0x99DB, 0x99D1, - 0x99D5, 0x99D2, 0x99D9, 0x9AB7, 0x9AEE, 0x9AEF, 0x9B27, 0x9B45, - 0x9B44, 0x9B77, 0x9B6F, 0x9D06, 0x9D09, 0x6EA8, 0x6E91, 0x6EBB, - 0x6E9A, 0x6EA9, 0x6EB5, 0x6E6C, 0x6EE8, 0x6EDD, 0x6EDA, 0x6EE6, - 0x6EAC, 0x6ED9, 0x6EE3, 0x6EE9, 0x6EDB, 0x716F, 0x7148, 0x714A, - 0x716B, 0x714F, 0x7157, 0x7174, 0x7145, 0x7151, 0x716D, 0x7251, - 0x7250, 0x724E, 0x7341, 0x732E, 0x7346, 0x7427, 0x9D03, 0x9EA9, - 0x9EBE, 0x9ECE, 0x58A8, 0x9F52, 0x5112, 0x5118, 0x5114, 0x5110, - 0x5115, 0x5180, 0x51AA, 0x51DD, 0x5291, 0x5293, 0x52F3, 0x5659, - 0x566B, 0x5679, 0x5669, 0x5664, 0x5678, 0x566A, 0x5668, 0x5665, - 0x5671, 0x566F, 0x566C, 0x5662, 0x5676, 0x58C1, 0x58BE, 0x58C7, - 0x58C5, 0x596E, 0x5B1D, 0x5B34, 0x5B78, 0x5BF0, 0x5C0E, 0x5F4A, - 0x61B2, 0x6191, 0x61A9, 0x618A, 0x61CD, 0x61B6, 0x61BE, 0x61CA, - 0x61C8, 0x6230, 0x64C5, 0x64C1, 0x64CB, 0x64BB, 0x64BC, 0x64DA, - 0x64C4, 0x64C7, 0x64C2, 0x64CD, 0x64BF, 0x64D2, 0x64D4, 0x64BE, - 0x6574, 0x66C6, 0x66C9, 0x66B9, 0x66C4, 0x66C7, 0x66B8, 0x6A3D, - 0x6A38, 0x6A3A, 0x6A59, 0x6A6B, 0x6A58, 0x6A39, 0x6A44, 0x6A62, - 0x6A61, 0x6A4B, 0x6A47, 0x6A35, 0x6A5F, 0x6A48, 0x6B59, 0x6B77, -plane 47 -at 0x00 - 0x6C05, 0x6FC2, 0x6FB1, 0x6FA1, 0x6FC3, 0x6FA4, 0x6FC1, 0x6FA7, - 0x6FB3, 0x6FC0, 0x6FB9, 0x6FB6, 0x6FA6, 0x6FA0, 0x6FB4, 0x71BE, - 0x71C9, 0x71D0, 0x71D2, 0x71C8, 0x71D5, 0x71B9, 0x71CE, 0x71D9, - 0x71DC, 0x71C3, 0x71C4, 0x7368, 0x749C, 0x74A3, 0x7498, 0x749F, - 0x749E, 0x74E2, 0x750C, 0x750D, 0x7634, 0x7638, 0x763A, 0x76E7, - 0x76E5, 0x77A0, 0x779E, 0x779F, 0x77A5, 0x78E8, 0x78DA, 0x78EC, - 0x78E7, 0x79A6, 0x7A4D, 0x7A4E, 0x7A46, 0x7A4C, 0x7A4B, 0x7ABA, - 0x7BD9, 0x7C11, 0x7BC9, 0x7BE4, 0x7BDB, 0x7BE1, 0x7BE9, 0x7BE6, - 0x7CD5, 0x7CD6, 0x7E0A, 0x7448, 0x7453, 0x743D, 0x745D, 0x7456, - 0x741E, 0x7447, 0x7443, 0x7458, 0x7449, 0x744C, 0x7445, 0x743E, - 0x7501, 0x751E, 0x757A, 0x75EE, 0x7602, 0x7697, 0x7698, 0x775D, - 0x7764, 0x7753, 0x7758, 0x7882, 0x7890, 0x788A, 0x787A, 0x787D, - 0x788B, 0x7878, 0x788D, 0x7888, 0x7E11, 0x7E08, 0x7E1B, 0x7E23, - 0x7E1E, 0x7E1D, 0x7E09, 0x7E10, 0x7F79, 0x7FB2, 0x7FF0, 0x7FF1, - 0x7FEE, 0x8028, 0x81B3, 0x81A9, 0x81A8, 0x81FB, 0x8208, 0x8258, - 0x8259, 0x854A, 0x8559, 0x8548, 0x8568, 0x8569, 0x8543, 0x8549, - 0x856D, 0x856A, 0x855E, 0x8783, 0x879F, 0x879E, 0x87A2, 0x878D, - 0x8861, 0x892A, 0x8932, 0x8925, 0x892B, 0x8921, 0x89AA, 0x89A6, - 0x8AE6, 0x8AFA, 0x8AEB, 0x8AF1, 0x8B00, 0x8ADC, 0x8AE7, 0x8AEE, - 0x8AFE, 0x8B01, 0x8B02, 0x8AF7, 0x8AED, 0x8AF3, 0x8AF6, 0x8AFC, - 0x8C6B, 0x8C6D, 0x8C93, 0x8CF4, 0x8E44, 0x8E31, 0x8E34, 0x8E42, - 0x8E39, 0x8E35, 0x8F3B, 0x8F2F, 0x8F38, 0x8F33, 0x8FA8, 0x8FA6, - 0x9075, 0x9074, 0x9078, 0x9072, 0x907C, 0x907A, 0x9134, 0x9192, - 0x9320, 0x9336, 0x92F8, 0x9333, 0x932F, 0x9322, 0x92FC, 0x932B, - 0x9304, 0x931A, 0x9310, 0x9326, 0x9321, 0x9315, 0x932E, 0x9319, - 0x95BB, 0x96A7, 0x96A8, 0x96AA, 0x96D5, 0x970E, 0x9711, 0x9716, - 0x970D, 0x9713, 0x970F, 0x975B, 0x975C, 0x9766, 0x9798, 0x9830, - 0x9838, 0x983B, 0x9837, 0x982D, 0x9839, 0x9824, 0x9910, 0x9928, - 0x991E, 0x991B, 0x9921, 0x991A, 0x99ED, 0x99E2, 0x99F1, 0x9AB8, - 0x9ABC, 0x9AFB, 0x9AED, 0x9B28, 0x9B91, 0x9D15, 0x9D23, 0x9D26, - 0x9D28, 0x9D12, 0x9D1B, 0x9ED8, 0x9ED4, 0x9F8D, 0x9F9C, 0x512A, - 0x511F, 0x5121, 0x5132, 0x52F5, 0x568E, 0x5680, 0x5690, 0x5685, -plane 48 -at 0x00 - 0x5687, 0x7892, 0x797E, 0x7983, 0x7980, 0x7A0F, 0x7A1D, 0x7AA1, - 0x7AA4, 0x7AE9, 0x7AEA, 0x7B62, 0x7B6B, 0x7B5E, 0x7B79, 0x7B6F, - 0x7B68, 0x7CAE, 0x7CB0, 0x7D90, 0x7D8A, 0x7D8B, 0x7D99, 0x7D95, - 0x7D87, 0x7D78, 0x7D97, 0x7D89, 0x7D98, 0x7FA3, 0x7FDD, 0x8057, - 0x8163, 0x816A, 0x568F, 0x58D5, 0x58D3, 0x58D1, 0x58CE, 0x5B30, - 0x5B2A, 0x5B24, 0x5B7A, 0x5C37, 0x5C68, 0x5DBC, 0x5DBA, 0x5DBD, - 0x5DB8, 0x5E6B, 0x5F4C, 0x5FBD, 0x61C9, 0x61C2, 0x61C7, 0x61E6, - 0x61CB, 0x6232, 0x6234, 0x64CE, 0x64CA, 0x64D8, 0x64E0, 0x64F0, - 0x64E6, 0x64EC, 0x64F1, 0x64E2, 0x64ED, 0x6582, 0x6583, 0x66D9, - 0x66D6, 0x6A80, 0x6A94, 0x6A84, 0x6AA2, 0x6A9C, 0x6ADB, 0x6AA3, - 0x6A7E, 0x6A97, 0x6A90, 0x6AA0, 0x6B5C, 0x6BAE, 0x6BDA, 0x6C08, - 0x6FD8, 0x6FF1, 0x6FDF, 0x6FE0, 0x6FDB, 0x6FE4, 0x6FEB, 0x6FEF, - 0x6F80, 0x6FEC, 0x6FE1, 0x6FE9, 0x6FD5, 0x6FEE, 0x6FF0, 0x71E7, - 0x71DF, 0x71EE, 0x71E6, 0x71E5, 0x71ED, 0x71EC, 0x71F4, 0x71E0, - 0x7235, 0x7246, 0x7370, 0x7372, 0x74A9, 0x74B0, 0x74A6, 0x74A8, - 0x7646, 0x7642, 0x764C, 0x76EA, 0x77B3, 0x77AA, 0x77B0, 0x77AC, - 0x77A7, 0x77AD, 0x77EF, 0x78F7, 0x78FA, 0x78F4, 0x78EF, 0x7901, - 0x79A7, 0x79AA, 0x7A57, 0x7ABF, 0x7C07, 0x7C0D, 0x7BFE, 0x7BF7, - 0x7C0C, 0x7BE0, 0x7CE0, 0x7CDC, 0x7CDE, 0x7CE2, 0x7CDF, 0x7CD9, - 0x7CDD, 0x7E2E, 0x7E3E, 0x7E46, 0x7E37, 0x7E32, 0x7E43, 0x7E2B, - 0x7E3D, 0x7E31, 0x7E45, 0x7E41, 0x7E34, 0x7E39, 0x7E48, 0x7E35, - 0x7E3F, 0x7E2F, 0x7F44, 0x7FF3, 0x7FFC, 0x8071, 0x8072, 0x8070, - 0x806F, 0x8073, 0x81C6, 0x81C3, 0x81BA, 0x81C2, 0x81C0, 0x81BF, - 0x81BD, 0x81C9, 0x81BE, 0x81E8, 0x8209, 0x8271, 0x85AA, 0x816C, - 0x815D, 0x8175, 0x815F, 0x817D, 0x816D, 0x8241, 0x844F, 0x8484, - 0x847F, 0x8448, 0x842A, 0x847B, 0x8472, 0x8464, 0x842E, 0x845C, - 0x8453, 0x8441, 0x84C8, 0x8462, 0x8480, 0x843E, 0x8483, 0x8471, - 0x844A, 0x8455, 0x8458, 0x86FC, 0x86FD, 0x8715, 0x8716, 0x86FF, - 0x8584, 0x857E, 0x859C, 0x8591, 0x8594, 0x85AF, 0x859B, 0x8587, - 0x85A8, 0x858A, 0x8667, 0x87C0, 0x87D1, 0x87B3, 0x87D2, 0x87C6, - 0x87AB, 0x87BB, 0x87BA, 0x87C8, 0x87CB, 0x893B, 0x8936, 0x8944, - 0x8938, 0x893D, 0x89AC, 0x8B0E, 0x8B17, 0x8B19, 0x8B1B, 0x8B0A, -plane 49 -at 0x00 - 0x8B20, 0x8B1D, 0x8B04, 0x8B10, 0x8C41, 0x8C3F, 0x8C73, 0x8CFA, - 0x8CFD, 0x8CFC, 0x8CF8, 0x8CFB, 0x8DA8, 0x8E49, 0x8E4B, 0x8E48, - 0x8E4A, 0x8F44, 0x8F3E, 0x8F42, 0x8F45, 0x8F3F, 0x907F, 0x907D, - 0x9084, 0x9081, 0x9082, 0x9080, 0x9139, 0x91A3, 0x919E, 0x919C, - 0x934D, 0x9382, 0x9328, 0x9375, 0x934A, 0x9365, 0x934B, 0x9318, - 0x937E, 0x936C, 0x935B, 0x9370, 0x935A, 0x9354, 0x95CA, 0x95CB, - 0x95CC, 0x95C8, 0x95C6, 0x96B1, 0x96B8, 0x96D6, 0x971C, 0x971E, - 0x97A0, 0x97D3, 0x9846, 0x98B6, 0x9935, 0x9A01, 0x99FF, 0x9BAE, - 0x9BAB, 0x9BAA, 0x9BAD, 0x9D3B, 0x9D3F, 0x9E8B, 0x9ECF, 0x9EDE, - 0x9EDC, 0x9EDD, 0x9EDB, 0x9F3E, 0x9F4B, 0x53E2, 0x5695, 0x56AE, - 0x58D9, 0x58D8, 0x5B38, 0x5F5E, 0x61E3, 0x6233, 0x64F4, 0x64F2, - 0x64FE, 0x6506, 0x64FA, 0x64FB, 0x64F7, 0x65B7, 0x66DC, 0x6726, - 0x6AB3, 0x6AAC, 0x6AC3, 0x6ABB, 0x6AB8, 0x6AC2, 0x6AAE, 0x6AAF, - 0x6B5F, 0x6B78, 0x6BAF, 0x7009, 0x700B, 0x6FFE, 0x7006, 0x6FFA, - 0x7011, 0x700F, 0x71FB, 0x71FC, 0x71FE, 0x71F8, 0x7377, 0x7375, - 0x74A7, 0x74BF, 0x7515, 0x7656, 0x7658, 0x8858, 0x88E0, 0x89E7, - 0x8A6A, 0x8A80, 0x8A6F, 0x8A65, 0x8A78, 0x8A7D, 0x8A88, 0x8A64, - 0x8A7E, 0x8A67, 0x8C63, 0x8C88, 0x8CCD, 0x8CC9, 0x8DED, 0x8EB1, - 0x8F04, 0x8F9E, 0x8FA0, 0x9043, 0x9046, 0x9048, 0x9045, 0x9040, - 0x904C, 0x910C, 0x9113, 0x9115, 0x916B, 0x9167, 0x7652, 0x77BD, - 0x77BF, 0x77BB, 0x77BC, 0x790E, 0x79AE, 0x7A61, 0x7A62, 0x7A60, - 0x7AC4, 0x7AC5, 0x7C2B, 0x7C27, 0x7C2A, 0x7C1E, 0x7C23, 0x7C21, - 0x7CE7, 0x7E54, 0x7E55, 0x7E5E, 0x7E5A, 0x7E61, 0x7E52, 0x7E59, - 0x7F48, 0x7FF9, 0x7FFB, 0x8077, 0x8076, 0x81CD, 0x81CF, 0x820A, - 0x85CF, 0x85A9, 0x85CD, 0x85D0, 0x85C9, 0x85B0, 0x85BA, 0x85B9, - 0x85A6, 0x87EF, 0x87EC, 0x87F2, 0x87E0, 0x8986, 0x89B2, 0x89F4, - 0x8B28, 0x8B39, 0x8B2C, 0x8B2B, 0x8C50, 0x8D05, 0x8E59, 0x8E63, - 0x8E66, 0x8E64, 0x8E5F, 0x8E55, 0x8EC0, 0x8F49, 0x8F4D, 0x9087, - 0x9083, 0x9088, 0x91AB, 0x91AC, 0x91D0, 0x9394, 0x938A, 0x9396, - 0x93A2, 0x93B3, 0x93AE, 0x93AC, 0x93B0, 0x9398, 0x939A, 0x9397, - 0x95D4, 0x95D6, 0x95D0, 0x95D5, 0x96E2, 0x96DC, 0x96D9, 0x96DB, - 0x96DE, 0x9724, 0x97A3, 0x97A6, 0x97AD, 0x97F9, 0x984D, 0x984F, -plane 50 -at 0x00 - 0x984C, 0x984E, 0x9853, 0x98BA, 0x993E, 0x993F, 0x993D, 0x992E, - 0x99A5, 0x9A0E, 0x9AC1, 0x9B03, 0x9B06, 0x9B4F, 0x9B4E, 0x9B4D, - 0x9BCA, 0x9BC9, 0x9BFD, 0x9BC8, 0x9BC0, 0x9D51, 0x9D5D, 0x9D60, - 0x9EE0, 0x9F15, 0x9F2C, 0x5133, 0x56A5, 0x58DE, 0x58DF, 0x58E2, - 0x5BF5, 0x9F90, 0x5EEC, 0x61F2, 0x61F7, 0x61F6, 0x61F5, 0x6500, - 0x650F, 0x66E0, 0x66DD, 0x6AE5, 0x6ADD, 0x6ADA, 0x6AD3, 0x701B, - 0x701F, 0x7028, 0x701A, 0x701D, 0x7015, 0x7018, 0x7206, 0x720D, - 0x7258, 0x72A2, 0x7378, 0x925D, 0x9255, 0x9235, 0x9259, 0x922F, - 0x923C, 0x928F, 0x925C, 0x926A, 0x9262, 0x925F, 0x926B, 0x926E, - 0x923B, 0x9244, 0x9241, 0x959A, 0x9599, 0x968F, 0x9696, 0x96F4, - 0x96FC, 0x9755, 0x9779, 0x97EE, 0x97F5, 0x980B, 0x98F3, 0x98F7, - 0x98FF, 0x98F5, 0x98EC, 0x98F1, 0x737A, 0x74BD, 0x74CA, 0x74E3, - 0x7587, 0x7586, 0x765F, 0x7661, 0x77C7, 0x7919, 0x79B1, 0x7A6B, - 0x7A69, 0x7C3E, 0x7C3F, 0x7C38, 0x7C3D, 0x7C37, 0x7C40, 0x7E6B, - 0x7E6D, 0x7E79, 0x7E69, 0x7E6A, 0x7F85, 0x7E73, 0x7FB6, 0x7FB9, - 0x7FB8, 0x81D8, 0x85E9, 0x85DD, 0x85EA, 0x85D5, 0x85E4, 0x85E5, - 0x85F7, 0x87FB, 0x8805, 0x880D, 0x87F9, 0x87FE, 0x8960, 0x895F, - 0x8956, 0x895E, 0x8B41, 0x8B5C, 0x8B58, 0x8B49, 0x8B5A, 0x8B4E, - 0x8B4F, 0x8B46, 0x8B59, 0x8D08, 0x8D0A, 0x8E7C, 0x8E72, 0x8E87, - 0x8E76, 0x8E6C, 0x8E7A, 0x8E74, 0x8F54, 0x8F4E, 0x8FAD, 0x908A, - 0x908B, 0x91B1, 0x91AE, 0x93E1, 0x93D1, 0x93DF, 0x93C3, 0x93C8, - 0x93DC, 0x93DD, 0x93D6, 0x93E2, 0x93CD, 0x93D8, 0x93E4, 0x93D7, - 0x93E8, 0x95DC, 0x96B4, 0x96E3, 0x972A, 0x9727, 0x9761, 0x97DC, - 0x97FB, 0x985E, 0x9858, 0x985B, 0x98BC, 0x9945, 0x9949, 0x9A16, - 0x9A19, 0x9B0D, 0x9BE8, 0x9BE7, 0x9BD6, 0x9BDB, 0x9D89, 0x9D61, - 0x9D72, 0x9D6A, 0x9D6C, 0x9E92, 0x9E97, 0x9E93, 0x9EB4, 0x52F8, - 0x56A8, 0x56B7, 0x56B6, 0x56B4, 0x56BC, 0x58E4, 0x5B40, 0x5B43, - 0x5B7D, 0x5BF6, 0x5DC9, 0x61F8, 0x61FA, 0x6518, 0x6514, 0x6519, - 0x66E6, 0x6727, 0x6AEC, 0x703E, 0x7030, 0x7032, 0x7210, 0x737B, - 0x74CF, 0x7662, 0x7665, 0x7926, 0x792A, 0x792C, 0x792B, 0x7AC7, - 0x7AF6, 0x7C4C, 0x7C43, 0x7C4D, 0x7CEF, 0x7CF0, 0x8FAE, 0x7E7D, - 0x7E7C, 0x999A, 0x9AE2, 0x9B3D, 0x9B5D, 0x9CE8, 0x9CEB, 0x9CEF, -plane 51 -at 0x00 - 0x9CEE, 0x9E81, 0x9F14, 0x50D0, 0x50D9, 0x50DC, 0x50D8, 0x50E1, - 0x50EB, 0x50F4, 0x50E2, 0x50DE, 0x51F4, 0x52ED, 0x52EA, 0x5332, - 0x53AE, 0x53B0, 0x55FB, 0x5603, 0x560B, 0x5607, 0x55F8, 0x5628, - 0x561E, 0x5618, 0x7E82, 0x7F4C, 0x8000, 0x81DA, 0x8266, 0x85FB, - 0x85F9, 0x8611, 0x85FA, 0x8606, 0x860B, 0x8607, 0x860A, 0x8814, - 0x8815, 0x8964, 0x89BA, 0x89F8, 0x8B70, 0x8B6C, 0x8B66, 0x8B6F, - 0x8B5F, 0x8B6B, 0x8D0F, 0x8D0D, 0x8E89, 0x8E81, 0x8E85, 0x8E82, - 0x91B4, 0x91CB, 0x9418, 0x9403, 0x93FD, 0x95E1, 0x9730, 0x98C4, - 0x9952, 0x9951, 0x99A8, 0x9A2B, 0x9A30, 0x9A37, 0x9A35, 0x9C13, - 0x9C0D, 0x9E79, 0x9EB5, 0x9EE8, 0x9F2F, 0x9F5F, 0x9F63, 0x9F61, - 0x5137, 0x5138, 0x56C1, 0x56C0, 0x56C2, 0x5914, 0x5C6C, 0x5DCD, - 0x61FC, 0x61FE, 0x651D, 0x651C, 0x6595, 0x66E9, 0x6AFB, 0x6B04, - 0x6AFA, 0x6BB2, 0x704C, 0x721B, 0x72A7, 0x74D6, 0x74D4, 0x7669, - 0x77D3, 0x7C50, 0x7E8F, 0x7E8C, 0x7FBC, 0x8617, 0x862D, 0x861A, - 0x8823, 0x8822, 0x8821, 0x881F, 0x896A, 0x896C, 0x89BD, 0x8B74, - 0x8B77, 0x8B7D, 0x8D13, 0x8E8A, 0x8E8D, 0x8E8B, 0x8F5F, 0x8FAF, - 0x91BA, 0x942E, 0x9433, 0x9435, 0x943A, 0x9438, 0x9432, 0x942B, - 0x95E2, 0x9738, 0x9739, 0x9732, 0x97FF, 0x9867, 0x9865, 0x9957, - 0x9A45, 0x9A43, 0x9A40, 0x9A3E, 0x9ACF, 0x9B54, 0x9B51, 0x9C2D, - 0x9C25, 0x9DAF, 0x9DB4, 0x9DC2, 0x9DB8, 0x9E9D, 0x9EEF, 0x9F19, - 0x9F5C, 0x9F66, 0x9F67, 0x513C, 0x513B, 0x56C8, 0x56CA, 0x56C9, - 0x5B7F, 0x5DD4, 0x5DD2, 0x5F4E, 0x61FF, 0x6524, 0x6B0A, 0x6B61, - 0x7051, 0x7058, 0x7380, 0x74E4, 0x758A, 0x766E, 0x766C, 0x5611, - 0x5651, 0x5605, 0x5717, 0x5892, 0x588C, 0x5878, 0x5884, 0x5873, - 0x58AD, 0x5897, 0x5895, 0x5877, 0x5872, 0x5896, 0x588D, 0x5910, - 0x596C, 0x5AE7, 0x5AE4, 0x5AEF, 0x5626, 0x5AF0, 0x5D7B, 0x5D83, - 0x5D8B, 0x5D8C, 0x5D78, 0x5E52, 0x5ED0, 0x5ECF, 0x5FB3, 0x5FB4, - 0x79B3, 0x7C60, 0x7C5F, 0x807E, 0x807D, 0x81DF, 0x8972, 0x896F, - 0x89FC, 0x8B80, 0x8D16, 0x8D17, 0x8E91, 0x8E93, 0x8F61, 0x9148, - 0x9444, 0x9451, 0x9452, 0x973D, 0x973E, 0x97C3, 0x97C1, 0x986B, - 0x9955, 0x9A55, 0x9A4D, 0x9AD2, 0x9B1A, 0x9C49, 0x9C31, 0x9C3E, - 0x9C3B, 0x9DD3, 0x9DD7, 0x9F34, 0x9F6C, 0x9F6A, 0x9F94, 0x56CC, -plane 52 -at 0x00 - 0x5DD6, 0x6200, 0x6523, 0x652B, 0x652A, 0x66EC, 0x6B10, 0x74DA, - 0x7ACA, 0x7C64, 0x7C63, 0x7C65, 0x7E93, 0x7E96, 0x7E94, 0x81E2, - 0x8638, 0x863F, 0x8831, 0x8B8A, 0x9090, 0x908F, 0x9463, 0x9460, - 0x9464, 0x9768, 0x986F, 0x995C, 0x9A5A, 0x9A5B, 0x9A57, 0x9AD3, - 0x9AD4, 0x9AD1, 0x9C54, 0x9C57, 0x9C56, 0x9DE5, 0x9E9F, 0x9EF4, - 0x56D1, 0x58E9, 0x652C, 0x705E, 0x7671, 0x7672, 0x77D7, 0x7F50, - 0x7F88, 0x8836, 0x8839, 0x8862, 0x8B93, 0x8B92, 0x8B96, 0x8277, - 0x8D1B, 0x91C0, 0x946A, 0x9742, 0x9748, 0x9744, 0x97C6, 0x9870, - 0x9A5F, 0x9B22, 0x9B58, 0x9C5F, 0x9DF9, 0x9DFA, 0x9E7C, 0x9E7D, - 0x9F07, 0x9F77, 0x9F72, 0x5EF3, 0x6B16, 0x7063, 0x7C6C, 0x7C6E, - 0x883B, 0x89C0, 0x8EA1, 0x91C1, 0x9472, 0x9470, 0x9871, 0x995E, - 0x9AD6, 0x9B23, 0x9ECC, 0x7064, 0x77DA, 0x8B9A, 0x9477, 0x97C9, - 0x9A62, 0x9A65, 0x7E9C, 0x8B9C, 0x8EAA, 0x91C5, 0x947D, 0x947E, - 0x947C, 0x9C77, 0x9C78, 0x9EF7, 0x8C54, 0x947F, 0x9E1A, 0x7228, - 0x9A6A, 0x9B31, 0x9E1B, 0x9E1E, 0x7C72, 0x617B, 0x616F, 0x6181, - 0x613C, 0x6142, 0x6138, 0x6133, 0x6160, 0x6169, 0x617D, 0x6186, - 0x622C, 0x6228, 0x644C, 0x6457, 0x647C, 0x6455, 0x6462, 0x6471, - 0x646A, 0x6456, 0x643B, 0x6481, 0x644F, 0x647E, 0x6464, 0x6571, - 0x66A5, 0x669A, 0x669C, 0x66A6, 0x66A4, 0x698F, 0x2460, 0x2461, - 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, - 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247A, 0x247B, - 0x247C, 0x247D, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, - 0x2176, 0x2177, 0x2178, 0x2179, 0x4E36, 0x4E3F, 0x4E85, 0x4EA0, - 0x5182, 0x5196, 0x51AB, 0x52F9, 0x5338, 0x5369, 0x53B6, 0x590A, - 0x5B80, 0x5DDB, 0x5E7A, 0x5E7F, 0x5EF4, 0x5F50, 0x5F61, 0x6534, - 0x65E0, 0x7592, 0x7676, 0x8FB5, 0x96B6, 0x5902, 0xFF3E, 0x30FD, - 0x30FE, 0x309D, 0x309E, 0xFF02, 0x309B, 0x309C, 0x30FB, 0x3007, - 0x30FC, 0xFF3B, 0xFF3D, 0x273D, 0x3041, 0x3042, 0x3043, 0x3044, - 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304A, 0x304B, 0x304C, - 0x304D, 0x304E, 0x304F, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, - 0x3055, 0x3056, 0x3057, 0x3058, 0x3059, 0x305A, 0x305B, 0x305C, - 0x305D, 0x305E, 0x305F, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, -plane 53 -at 0x00 - 0x3065, 0x3066, 0x3067, 0x3068, 0x3069, 0x306A, 0x306B, 0x306C, - 0x306D, 0x306E, 0x306F, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, - 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307A, 0x307B, 0x307C, - 0x307D, 0x307E, 0x307F, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, - 0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, - 0x308D, 0x308E, 0x308F, 0x3090, 0x3091, 0x3092, 0x3093, 0x30A1, - 0x30A2, 0x30A3, 0x30A4, 0x69C5, 0x69C8, 0x6992, 0x69B2, 0x69E3, - 0x69C0, 0x69D6, 0x69D1, 0x699F, 0x69A2, 0x69D2, 0x69E1, 0x69D5, - 0x699D, 0x6998, 0x6B74, 0x6BA1, 0x6EF0, 0x6EF3, 0x6F1B, 0x6F0C, - 0x6F1D, 0x6F34, 0x6F28, 0x6F17, 0x6F44, 0x6F42, 0x6F04, 0x6F11, - 0x6EFA, 0x6F4A, 0x7191, 0x718E, 0x30A5, 0x30A6, 0x30A7, 0x30A8, - 0x30A9, 0x30AA, 0x30AB, 0x30AC, 0x30AD, 0x30AE, 0x30AF, 0x30B0, - 0x30B1, 0x30B2, 0x30B3, 0x30B4, 0x30B5, 0x30B6, 0x30B7, 0x30B8, - 0x30B9, 0x30BA, 0x30BB, 0x30BC, 0x30BD, 0x30BE, 0x30BF, 0x30C0, - 0x30C1, 0x30C2, 0x30C3, 0x30C4, 0x30C5, 0x30C6, 0x30C7, 0x30C8, - 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D0, - 0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7, 0x30D8, - 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF, 0x30E0, - 0x30E1, 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7, 0x30E8, - 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF, 0x30F0, - 0x30F1, 0x30F2, 0x30F3, 0x30F4, 0x30F5, 0x30F6, 0x6BB9, 0x6E0B, - 0x7105, 0x7314, 0x7304, 0x7305, 0x7315, 0x730D, 0x772E, 0x7741, - 0x77EA, 0x7844, 0x7B29, 0x7B27, 0x7C9D, 0x7FC8, 0x8126, 0x811C, - 0x8128, 0x8370, 0x8382, 0x83AC, 0x86AD, 0x86CA, 0x8851, 0x889D, - 0x8990, 0x89D8, 0x89D7, 0x8A2E, 0x8C59, 0x8EDA, 0x9033, 0x9018, - 0x91EF, 0x9AD9, 0x4EB4, 0x50A0, 0x5090, 0x5086, 0x5084, 0x508A, - 0x509F, 0x50A1, 0x5093, 0x51D5, 0x5590, 0x5710, 0x5817, 0x5844, - 0x582B, 0x5845, 0x5965, 0x5BCF, 0x5D56, 0x5D54, 0x5F3D, 0x5FA4, - 0x63EC, 0x63FA, 0x63D4, 0x6675, 0x671C, 0x68D9, 0x6BF1, 0x6E37, - 0x6E7D, 0x6E86, 0x74FA, 0x7572, 0x75DC, 0x7867, 0x7977, 0x7A9B, - 0x7D2A, 0x718B, 0x718D, 0x717F, 0x718C, 0x717E, 0x717C, 0x7183, - 0x7188, 0x7294, 0x7355, 0x7353, 0x734F, 0x7354, 0x746C, 0x7465, -plane 54 -at 0x00 - 0x7466, 0x7461, 0x746B, 0x7468, 0x7476, 0x7460, 0x7474, 0x7506, - 0x760E, 0x7607, 0x76B9, 0x76B7, 0x76E2, 0x7774, 0x7777, 0x7776, - 0x7775, 0x7778, 0x7D65, 0x7F64, 0x8020, 0x8120, 0x813C, 0x813F, - 0x81F0, 0x81F5, 0x8415, 0x83BE, 0x86E5, 0x86D2, 0x86E0, 0x88B3, - 0x8A53, 0x8A37, 0x8A47, 0x8A5C, 0x8EF0, 0x921D, 0x976B, 0x50C0, - 0x52E5, 0x53AF, 0x55D8, 0x5711, 0x5867, 0x5843, 0x5BDD, 0x5D70, - 0x5D6A, 0x5D74, 0x5D5F, 0x5D61, 0x5D73, 0x5E50, 0x5F3F, 0x5FB0, - 0x6135, 0x612D, 0x6102, 0x6226, 0x656E, 0x65B1, 0x65D4, 0x6685, - 0x6972, 0x693A, 0x6EAD, 0x6E95, 0x7243, 0x728F, 0x7575, 0x75EC, - 0x7757, 0x797B, 0x7A21, 0x7A16, 0x7AE8, 0x7B6A, 0x7B5F, 0x7D82, - 0x8055, 0x8168, 0x8246, 0x8243, 0x8481, 0x847C, 0x846A, 0x9170, - 0x50D2, 0x9B62, 0x6F8A, 0x8772, 0x9AF0, 0x9EA8, 0x5292, 0x878C, - 0x9ABA, 0x9B81, 0x9384, 0x9AFF, 0x9BB3, 0x9BB0, 0x9EC7, 0x9721, - 0x7C36, 0x8B5E, 0x9401, 0x941D, 0x994A, 0x8B73, 0x9DD4, 0x77D6, - 0x4E42, 0x4E5C, 0x51F5, 0x531A, 0x5382, 0x4E07, 0x4E0C, 0x4E47, - 0x4E8D, 0x56D7, 0x5140, 0x5C6E, 0x5F73, 0x4E0F, 0x5187, 0x4E0E, - 0x4E2E, 0x4E93, 0x4EC2, 0x4EC9, 0x4EC8, 0x5198, 0x52FC, 0x536C, - 0x53B9, 0x5720, 0x5903, 0x592C, 0x5C10, 0x5DFF, 0x65E1, 0x6BB3, - 0x6BCC, 0x6C14, 0x723F, 0x4E31, 0x4E3C, 0x4EE8, 0x4EDC, 0x4EE9, - 0x4EE1, 0x4EDD, 0x4EDA, 0x520C, 0x531C, 0x534C, 0x5722, 0x5723, - 0x5917, 0x592F, 0x5B81, 0x5B84, 0x5C12, 0x5C3B, 0x5C74, 0x5C73, - 0x5E04, 0x5E80, 0x5E82, 0x5FC9, 0x6209, 0x6250, 0x6C15, 0x7771, - 0x777A, 0x715B, 0x777B, 0x78A6, 0x78AE, 0x78B8, 0x78B1, 0x78AF, - 0x7989, 0x7987, 0x7A29, 0x7A2A, 0x7A2D, 0x7A2C, 0x7A32, 0x7AEC, - 0x7AF0, 0x7B81, 0x7B9E, 0x7B83, 0x7B92, 0x7BA3, 0x7B9F, 0x7B93, - 0x7B86, 0x7CB8, 0x7CB7, 0x7DC8, 0x7DB6, 0x7DD1, 0x7DA8, 0x7DAB, - 0x6C36, 0x6C43, 0x6C3F, 0x6C3B, 0x72AE, 0x72B0, 0x738A, 0x79B8, - 0x808A, 0x961E, 0x4F0E, 0x4F18, 0x4F2C, 0x4EF5, 0x4F14, 0x4EF1, - 0x4F00, 0x4EF7, 0x4F08, 0x4F1D, 0x4F02, 0x4F05, 0x4F22, 0x4F13, - 0x4F04, 0x4EF4, 0x4F12, 0x51B1, 0x5213, 0x5209, 0x5210, 0x52A6, - 0x5322, 0x531F, 0x534D, 0x538A, 0x5407, 0x56E1, 0x56DF, 0x572E, - 0x572A, 0x5734, 0x593C, 0x5980, 0x597C, 0x5985, 0x597B, 0x597E, -plane 55 -at 0x00 - 0x5977, 0x597F, 0x5B56, 0x5C15, 0x5C25, 0x5C7C, 0x5C7A, 0x5C7B, - 0x5C7E, 0x5DDF, 0x5E75, 0x5E84, 0x5F02, 0x5F1A, 0x5F74, 0x5FD5, - 0x5FD4, 0x5FCF, 0x625C, 0x625E, 0x6264, 0x6261, 0x6266, 0x6262, - 0x6259, 0x6260, 0x625A, 0x6265, 0x65EF, 0x65EE, 0x673E, 0x6739, - 0x6738, 0x673B, 0x673A, 0x673F, 0x673C, 0x6733, 0x6C18, 0x6C46, - 0x6C52, 0x6C5C, 0x6C4F, 0x6C4A, 0x6C54, 0x6C4B, 0x6C4C, 0x7071, - 0x725E, 0x72B4, 0x72B5, 0x738E, 0x752A, 0x767F, 0x7A75, 0x7F51, - 0x8278, 0x827C, 0x8280, 0x827D, 0x827F, 0x864D, 0x897E, 0x9099, - 0x9097, 0x9098, 0x909B, 0x9094, 0x9622, 0x9624, 0x9620, 0x9623, - 0x4F56, 0x4F3B, 0x4F62, 0x4F49, 0x4F53, 0x4F64, 0x4F3E, 0x4F67, - 0x4F52, 0x4F5F, 0x4F41, 0x4F58, 0x4F2D, 0x4F33, 0x4F3F, 0x4F61, - 0x518F, 0x51B9, 0x521C, 0x521E, 0x5221, 0x52AD, 0x52AE, 0x5309, - 0x5363, 0x5372, 0x538E, 0x538F, 0x5430, 0x5437, 0x542A, 0x5454, - 0x5445, 0x5419, 0x541C, 0x5425, 0x5418, 0x7DB3, 0x7DCD, 0x7DCF, - 0x7DA4, 0x7F41, 0x7F6F, 0x7F71, 0x8023, 0x805B, 0x8061, 0x805F, - 0x8181, 0x8184, 0x8213, 0x824A, 0x824C, 0x84BD, 0x8495, 0x8492, - 0x84C3, 0x8496, 0x84A5, 0x84B5, 0x84B3, 0x84A3, 0x84E4, 0x84D8, - 0x84D5, 0x84B7, 0x84AD, 0x84DA, 0x8493, 0x8736, 0x543D, 0x544F, - 0x5441, 0x5428, 0x5424, 0x5447, 0x56EE, 0x56E7, 0x56E5, 0x5741, - 0x5745, 0x574C, 0x5749, 0x574B, 0x5752, 0x5906, 0x5940, 0x59A6, - 0x5998, 0x59A0, 0x5997, 0x598E, 0x59A2, 0x5990, 0x598F, 0x59A7, - 0x59A1, 0x5B8E, 0x5B92, 0x5C28, 0x5C2A, 0x5C8D, 0x5C8F, 0x5C88, - 0x5C8B, 0x5C89, 0x5C92, 0x5C8A, 0x5C86, 0x5C93, 0x5C95, 0x5DE0, - 0x5E0A, 0x5E0E, 0x5E8B, 0x5E89, 0x5E8C, 0x5E88, 0x5E8D, 0x5F05, - 0x5F1D, 0x5F78, 0x5F76, 0x5FD2, 0x5FD1, 0x5FD0, 0x5FED, 0x5FE8, - 0x5FEE, 0x5FF3, 0x5FE1, 0x5FE4, 0x5FE3, 0x5FFA, 0x5FEF, 0x5FF7, - 0x5FFB, 0x6000, 0x5FF4, 0x623A, 0x6283, 0x628C, 0x628E, 0x628F, - 0x6294, 0x6287, 0x6271, 0x627B, 0x627A, 0x6270, 0x6281, 0x6288, - 0x6277, 0x627D, 0x6272, 0x6274, 0x6537, 0x65F0, 0x65F4, 0x65F3, - 0x65F2, 0x65F5, 0x6745, 0x6747, 0x6759, 0x6755, 0x674C, 0x6748, - 0x675D, 0x674D, 0x675A, 0x674B, 0x6BD0, 0x6C19, 0x6C1A, 0x6C78, - 0x6C67, 0x6C6B, 0x6C84, 0x6C8B, 0x6C8F, 0x6C71, 0x6C6F, 0x6C69, -plane 56 -at 0x00 - 0x6C9A, 0x6C6D, 0x6C87, 0x6C95, 0x6C9C, 0x6C66, 0x6C73, 0x6C65, - 0x6C7B, 0x6C8E, 0x7074, 0x707A, 0x7263, 0x72BF, 0x72BD, 0x72C3, - 0x72C6, 0x72C1, 0x72BA, 0x72C5, 0x7395, 0x7397, 0x7393, 0x7394, - 0x7392, 0x753A, 0x7539, 0x7594, 0x7595, 0x7681, 0x793D, 0x8034, - 0x8095, 0x8099, 0x8090, 0x8092, 0x809C, 0x8290, 0x828F, 0x8285, - 0x828E, 0x8291, 0x8293, 0x873D, 0x872B, 0x8747, 0x8739, 0x8745, - 0x871D, 0x88FF, 0x88EA, 0x88F5, 0x8900, 0x88ED, 0x8903, 0x88E9, - 0x89EA, 0x8A9B, 0x8A8E, 0x8AA2, 0x8A9C, 0x8A94, 0x8A90, 0x8AA9, - 0x8AAC, 0x8A9F, 0x8A9D, 0x8C67, 0x8CD0, 0x8CD6, 0x8CD4, 0x8D98, - 0x8D9A, 0x8D97, 0x8E0B, 0x8E08, 0x828A, 0x8283, 0x8284, 0x8C78, - 0x8FC9, 0x8FBF, 0x909F, 0x90A1, 0x90A5, 0x909E, 0x90A7, 0x90A0, - 0x9630, 0x9628, 0x962F, 0x962D, 0x4E33, 0x4F98, 0x4F7C, 0x4F85, - 0x4F7D, 0x4F80, 0x4F87, 0x4F76, 0x4F74, 0x4F89, 0x4F84, 0x4F77, - 0x4F4C, 0x4F97, 0x4F6A, 0x4F9A, 0x4F79, 0x4F81, 0x4F78, 0x4F90, - 0x4F9C, 0x4F94, 0x4F9E, 0x4F92, 0x4F82, 0x4F95, 0x4F6B, 0x4F6E, - 0x519E, 0x51BC, 0x51BE, 0x5235, 0x5232, 0x5233, 0x5246, 0x5231, - 0x52BC, 0x530A, 0x530B, 0x533C, 0x5392, 0x5394, 0x5487, 0x547F, - 0x5481, 0x5491, 0x5482, 0x5488, 0x546B, 0x547A, 0x547E, 0x5465, - 0x546C, 0x5474, 0x5466, 0x548D, 0x546F, 0x5461, 0x5460, 0x5498, - 0x5463, 0x5467, 0x5464, 0x56F7, 0x56F9, 0x576F, 0x5772, 0x576D, - 0x576B, 0x5771, 0x5770, 0x5776, 0x5780, 0x5775, 0x577B, 0x5773, - 0x5774, 0x5762, 0x5768, 0x577D, 0x590C, 0x5945, 0x59B5, 0x59BA, - 0x59CF, 0x59CE, 0x59B2, 0x59CC, 0x59C1, 0x59B6, 0x59BC, 0x59C3, - 0x59D6, 0x59B1, 0x59BD, 0x59C0, 0x59C8, 0x59B4, 0x59C7, 0x5B62, - 0x5B65, 0x5B93, 0x5B95, 0x5C44, 0x5C47, 0x5CAE, 0x5CA4, 0x5CA0, - 0x5CB5, 0x5CAF, 0x5CA8, 0x5CAC, 0x5C9F, 0x5CA3, 0x5CAD, 0x5CA2, - 0x5CAA, 0x5CA7, 0x5C9D, 0x5CA5, 0x5CB6, 0x5CB0, 0x5CA6, 0x5E17, - 0x5E14, 0x5E19, 0x5F28, 0x5F22, 0x5F23, 0x5F24, 0x5F54, 0x5F82, - 0x5F7E, 0x5F7D, 0x5FDE, 0x5FE5, 0x602D, 0x6026, 0x6019, 0x6032, - 0x600B, 0x8E01, 0x8EB4, 0x8EB3, 0x8FA1, 0x8FA2, 0x905A, 0x9061, - 0x905F, 0x9125, 0x917B, 0x9176, 0x917C, 0x9289, 0x92F6, 0x92B1, - 0x92AD, 0x9292, 0x9281, 0x9284, 0x92AE, 0x9290, 0x929E, 0x95A2, -plane 57 -at 0x00 - 0x95A7, 0x96A0, 0x969D, 0x969F, 0x96D0, 0x96D1, 0x9759, 0x9764, - 0x9819, 0x9814, 0x6034, 0x600A, 0x6017, 0x6033, 0x601A, 0x601E, - 0x602C, 0x6022, 0x600D, 0x6010, 0x602E, 0x6013, 0x6011, 0x600C, - 0x6009, 0x601C, 0x6214, 0x623D, 0x62AD, 0x62B4, 0x62D1, 0x62BE, - 0x62AA, 0x62B6, 0x62CA, 0x62AE, 0x62B3, 0x62AF, 0x62BB, 0x62A9, - 0x62B0, 0x62B8, 0x653D, 0x65A8, 0x65BB, 0x6609, 0x65FC, 0x6604, - 0x6612, 0x6608, 0x65FB, 0x6603, 0x660B, 0x660D, 0x6605, 0x65FD, - 0x6611, 0x6610, 0x66F6, 0x670A, 0x6785, 0x676C, 0x678E, 0x6792, - 0x6776, 0x677B, 0x6798, 0x6786, 0x6784, 0x6774, 0x678D, 0x678C, - 0x677A, 0x679F, 0x6791, 0x6799, 0x6783, 0x677D, 0x6781, 0x6778, - 0x6779, 0x6794, 0x6B25, 0x6B80, 0x6B7E, 0x6BDE, 0x6C1D, 0x6C93, - 0x6CEC, 0x6CEB, 0x6CEE, 0x6CD9, 0x6CB6, 0x6CD4, 0x6CAD, 0x6CE7, - 0x6CB7, 0x6CD0, 0x6CC2, 0x6CBA, 0x6CC3, 0x6CC6, 0x6CED, 0x6CF2, - 0x6CD2, 0x6CDD, 0x6CB4, 0x6C8A, 0x6C9D, 0x6C80, 0x6CDE, 0x6CC0, - 0x6D30, 0x6CCD, 0x6CC7, 0x6CB0, 0x6CF9, 0x6CCF, 0x6CE9, 0x6CD1, - 0x7094, 0x7098, 0x7085, 0x7093, 0x7086, 0x7084, 0x7091, 0x7096, - 0x7082, 0x709A, 0x7083, 0x726A, 0x72D6, 0x72CB, 0x72D8, 0x72C9, - 0x72DC, 0x72D2, 0x72D4, 0x72DA, 0x72CC, 0x72D1, 0x73A4, 0x73A1, - 0x73AD, 0x73A6, 0x73A2, 0x73A0, 0x73AC, 0x739D, 0x74DD, 0x74E8, - 0x753F, 0x7540, 0x753E, 0x758C, 0x7598, 0x76AF, 0x76F3, 0x76F1, - 0x76F0, 0x76F5, 0x77F8, 0x77FC, 0x77F9, 0x77FB, 0x77FA, 0x9815, - 0x981A, 0x9906, 0x98F8, 0x9901, 0x99BE, 0x99BC, 0x99B7, 0x99B6, - 0x99C0, 0x99B8, 0x99C4, 0x99BF, 0x9ADA, 0x9AE4, 0x9AE9, 0x9AE8, - 0x9AEA, 0x9AE5, 0x9B26, 0x9B40, 0x9EBD, 0x510E, 0x50F7, 0x50FC, - 0x510D, 0x5101, 0x51DA, 0x51D9, 0x51DB, 0x5286, 0x528E, 0x52EE, - 0x77F7, 0x7942, 0x793F, 0x79C5, 0x7A78, 0x7A7B, 0x7AFB, 0x7C75, - 0x7CFD, 0x8035, 0x808F, 0x80AE, 0x80A3, 0x80B8, 0x80B5, 0x80AD, - 0x8220, 0x82A0, 0x82C0, 0x82AB, 0x829A, 0x8298, 0x829B, 0x82B5, - 0x82A7, 0x82AE, 0x82BC, 0x829E, 0x82BA, 0x82B4, 0x82A8, 0x82A1, - 0x82A9, 0x82C2, 0x82A4, 0x82C3, 0x82B6, 0x82A2, 0x8670, 0x866F, - 0x866D, 0x866E, 0x8C56, 0x8FD2, 0x8FCB, 0x8FD3, 0x8FCD, 0x8FD6, - 0x8FD5, 0x8FD7, 0x90B2, 0x90B4, 0x90AF, 0x90B3, 0x90B0, 0x9639, -plane 58 -at 0x00 - 0x963D, 0x963C, 0x963A, 0x9643, 0x4FCD, 0x4FC5, 0x4FD3, 0x4FB2, - 0x4FC9, 0x4FCB, 0x4FC1, 0x4FD4, 0x4FDC, 0x4FD9, 0x4FBB, 0x4FB3, - 0x4FDB, 0x4FC7, 0x4FD6, 0x4FBA, 0x4FC0, 0x4FB9, 0x4FEC, 0x5244, - 0x5249, 0x52C0, 0x52C2, 0x533D, 0x537C, 0x5397, 0x5396, 0x5399, - 0x5398, 0x54BA, 0x54A1, 0x54AD, 0x54A5, 0x54CF, 0x54C3, 0x830D, - 0x54B7, 0x54AE, 0x54D6, 0x54B6, 0x54C5, 0x54C6, 0x54A0, 0x5470, - 0x54BC, 0x54A2, 0x54BE, 0x5472, 0x54DE, 0x54B0, 0x57B5, 0x579E, - 0x579F, 0x57A4, 0x578C, 0x5797, 0x579D, 0x579B, 0x5794, 0x5798, - 0x578F, 0x5799, 0x57A5, 0x579A, 0x5795, 0x58F4, 0x590D, 0x5953, - 0x59E1, 0x59DE, 0x59EE, 0x5A00, 0x59F1, 0x59DD, 0x59FA, 0x59FD, - 0x59FC, 0x59F6, 0x59E4, 0x59F2, 0x59F7, 0x59DB, 0x59E9, 0x59F3, - 0x59F5, 0x59E0, 0x59FE, 0x59F4, 0x59ED, 0x5BA8, 0x5C4C, 0x5CD0, - 0x5CD8, 0x5CCC, 0x5CD7, 0x5CCB, 0x5CDB, 0x5333, 0x53B1, 0x5647, - 0x562D, 0x5654, 0x564B, 0x5652, 0x5631, 0x5644, 0x5656, 0x5650, - 0x562B, 0x564D, 0x5637, 0x564F, 0x58A2, 0x58B7, 0x58B2, 0x58AA, - 0x58B5, 0x58B0, 0x58B4, 0x58A4, 0x58A7, 0x5926, 0x5AFE, 0x5B04, - 0x5AFC, 0x5B06, 0x5B0A, 0x5B0D, 0x5B00, 0x5B0E, 0x5CDE, 0x5CDA, - 0x5CC9, 0x5CC7, 0x5CCA, 0x5CD6, 0x5CD3, 0x5CD4, 0x5CCF, 0x5CC8, - 0x5CC6, 0x5CCE, 0x5CDF, 0x5CF8, 0x5DF9, 0x5E21, 0x5E22, 0x5E23, - 0x5E20, 0x5E24, 0x5EB0, 0x5EA4, 0x5EA2, 0x5E9B, 0x5EA3, 0x5EA5, - 0x5F07, 0x5F2E, 0x5F56, 0x5F86, 0x6037, 0x6039, 0x6054, 0x6072, - 0x605E, 0x6045, 0x6053, 0x6047, 0x6049, 0x605B, 0x604C, 0x6040, - 0x6042, 0x605F, 0x6024, 0x6044, 0x6058, 0x6066, 0x606E, 0x6242, - 0x6243, 0x62CF, 0x630D, 0x630B, 0x62F5, 0x630E, 0x6303, 0x62EB, - 0x62F9, 0x630F, 0x630C, 0x62F8, 0x62F6, 0x6300, 0x6313, 0x6314, - 0x62FA, 0x6315, 0x62FB, 0x62F0, 0x6541, 0x6543, 0x65AA, 0x65BF, - 0x6636, 0x6621, 0x6632, 0x6635, 0x661C, 0x6626, 0x6622, 0x6633, - 0x662B, 0x663A, 0x661D, 0x6634, 0x6639, 0x662E, 0x670F, 0x6710, - 0x67C1, 0x67F2, 0x67C8, 0x67BA, 0x67DC, 0x67BB, 0x67F8, 0x67D8, - 0x67C0, 0x67B7, 0x67C5, 0x67EB, 0x67E4, 0x67DF, 0x67B5, 0x67CD, - 0x67B3, 0x67F7, 0x67F6, 0x67EE, 0x67E3, 0x67C2, 0x67B9, 0x67CE, - 0x67E7, 0x67F0, 0x67B2, 0x67FC, 0x67C6, 0x67ED, 0x67CC, 0x67AE, -plane 59 -at 0x00 - 0x67E6, 0x67DB, 0x67FA, 0x67C9, 0x67CA, 0x67C3, 0x67EA, 0x67CB, - 0x6B28, 0x6B82, 0x6B84, 0x6BB6, 0x6BD6, 0x6BD8, 0x6BE0, 0x6C20, - 0x6C21, 0x6D28, 0x6D34, 0x6D2D, 0x6D1F, 0x6D3C, 0x6D3F, 0x6D12, - 0x6D0A, 0x6CDA, 0x6D33, 0x6D04, 0x6D19, 0x6D3A, 0x6D1A, 0x6D11, - 0x6D00, 0x6D1D, 0x6D42, 0x5D91, 0x5D8F, 0x5D90, 0x5D98, 0x5DA4, - 0x5D9B, 0x5DA3, 0x5D96, 0x5DE4, 0x5E5A, 0x5E5E, 0x5FB8, 0x6157, - 0x615C, 0x61A6, 0x6195, 0x6188, 0x61A3, 0x618F, 0x6164, 0x6159, - 0x6178, 0x6185, 0x6187, 0x619E, 0x6198, 0x619C, 0x622F, 0x6480, - 0x649B, 0x648E, 0x648D, 0x6494, 0x6D01, 0x6D18, 0x6D37, 0x6D03, - 0x6D0F, 0x6D40, 0x6D07, 0x6D20, 0x6D2C, 0x6D08, 0x6D22, 0x6D09, - 0x6D10, 0x70B7, 0x709F, 0x70BE, 0x70B1, 0x70B0, 0x70A1, 0x70B4, - 0x70B5, 0x70A9, 0x7241, 0x7249, 0x724A, 0x726C, 0x7270, 0x7273, - 0x726E, 0x72CA, 0x72E4, 0x72E8, 0x72EB, 0x72DF, 0x72EA, 0x72E6, - 0x72E3, 0x7385, 0x73CC, 0x73C2, 0x73C8, 0x73C5, 0x73B9, 0x73B6, - 0x73B5, 0x73B4, 0x73EB, 0x73BF, 0x73C7, 0x73BE, 0x73C3, 0x73C6, - 0x73B8, 0x73CB, 0x74EC, 0x74EE, 0x752E, 0x7547, 0x7548, 0x75A7, - 0x75AA, 0x7679, 0x76C4, 0x7708, 0x7703, 0x7704, 0x7705, 0x770A, - 0x76F7, 0x76FB, 0x76FA, 0x77E7, 0x77E8, 0x7806, 0x7811, 0x7812, - 0x7805, 0x7810, 0x780F, 0x780E, 0x7809, 0x7803, 0x7813, 0x794A, - 0x794C, 0x794B, 0x7945, 0x7944, 0x79D5, 0x79CD, 0x79CF, 0x79D6, - 0x79CE, 0x7A80, 0x7A7E, 0x7AD1, 0x7B00, 0x7B01, 0x7C7A, 0x7C78, - 0x7C79, 0x7C7F, 0x7C80, 0x7C81, 0x7D03, 0x7D08, 0x7D01, 0x7F58, - 0x7F91, 0x7F8D, 0x7FBE, 0x8007, 0x800E, 0x800F, 0x8014, 0x8037, - 0x80D8, 0x80C7, 0x80E0, 0x80D1, 0x80C8, 0x80C2, 0x80D0, 0x80C5, - 0x80E3, 0x80D9, 0x80DC, 0x80CA, 0x80D5, 0x80C9, 0x80CF, 0x80D7, - 0x80E6, 0x80CD, 0x81FF, 0x8221, 0x8294, 0x82D9, 0x82FE, 0x82F9, - 0x8307, 0x82E8, 0x8300, 0x82D5, 0x833A, 0x82EB, 0x82D6, 0x82F4, - 0x82EC, 0x82E1, 0x82F2, 0x82F5, 0x830C, 0x82FB, 0x82F6, 0x82F0, - 0x82EA, 0x64C6, 0x64A8, 0x6483, 0x64B9, 0x6486, 0x64B4, 0x64AF, - 0x6491, 0x64AA, 0x64A1, 0x64A7, 0x66B6, 0x66B3, 0x66BC, 0x66AC, - 0x66AD, 0x6A0E, 0x6A1C, 0x6A1A, 0x6A0B, 0x69EF, 0x6A0C, 0x69F0, - 0x6A22, 0x69D8, 0x6A12, 0x69FA, 0x6A2A, 0x6A10, 0x6A29, 0x69F9, -plane 60 -at 0x00 - 0x69EA, 0x6A2C, 0x82E4, 0x82E0, 0x82FA, 0x82F3, 0x82ED, 0x8677, - 0x8674, 0x867C, 0x8673, 0x8841, 0x884E, 0x8867, 0x886A, 0x8869, - 0x89D3, 0x8A04, 0x8A07, 0x8D72, 0x8FE3, 0x8FE1, 0x8FEE, 0x8FE0, - 0x90F1, 0x90BD, 0x90BF, 0x90D5, 0x90C5, 0x90BE, 0x90C7, 0x90CB, - 0x90C8, 0x91D4, 0x91D3, 0x9654, 0x964F, 0x9651, 0x9653, 0x964A, - 0x964E, 0x501E, 0x5005, 0x5007, 0x5013, 0x5022, 0x5030, 0x501B, - 0x4FF5, 0x4FF4, 0x5033, 0x5037, 0x502C, 0x4FF6, 0x4FF7, 0x5017, - 0x501C, 0x5020, 0x5027, 0x5035, 0x502F, 0x5031, 0x500E, 0x515A, - 0x5194, 0x5193, 0x51CA, 0x51C4, 0x51C5, 0x51C8, 0x51CE, 0x5261, - 0x525A, 0x5252, 0x525E, 0x525F, 0x5255, 0x5262, 0x52CD, 0x530E, - 0x539E, 0x5526, 0x54E2, 0x5517, 0x5512, 0x54E7, 0x54F3, 0x54E4, - 0x551A, 0x54FF, 0x5504, 0x5508, 0x54EB, 0x5511, 0x5505, 0x54F1, - 0x550A, 0x54FB, 0x54F7, 0x54F8, 0x54E0, 0x550E, 0x5503, 0x550B, - 0x5701, 0x5702, 0x57CC, 0x5832, 0x57D5, 0x57D2, 0x57BA, 0x57C6, - 0x57BD, 0x57BC, 0x57B8, 0x57B6, 0x57BF, 0x57C7, 0x57D0, 0x57B9, - 0x57C1, 0x590E, 0x594A, 0x5A19, 0x5A16, 0x5A2D, 0x5A2E, 0x5A15, - 0x5A0F, 0x5A17, 0x5A0A, 0x5A1E, 0x5A33, 0x5B6C, 0x5BA7, 0x5BAD, - 0x5BAC, 0x5C03, 0x5C56, 0x5C54, 0x5CEC, 0x5CFF, 0x5CEE, 0x5CF1, - 0x5CF7, 0x5D00, 0x5CF9, 0x5E29, 0x5E28, 0x5EA8, 0x5EAE, 0x5EAA, - 0x5EAC, 0x5F33, 0x5F30, 0x5F67, 0x605D, 0x605A, 0x6067, 0x6A24, - 0x69E9, 0x6B52, 0x6B4F, 0x6B53, 0x6F10, 0x6F65, 0x6F75, 0x6FD0, - 0x6F5C, 0x6F3D, 0x6F71, 0x6F91, 0x6F0B, 0x6F79, 0x6F81, 0x6F8F, - 0x6F59, 0x6F74, 0x71AE, 0x71A3, 0x71AD, 0x71AB, 0x71A6, 0x71A2, - 0x52F2, 0x7257, 0x7255, 0x7299, 0x734B, 0x747A, 0x748C, 0x7484, - 0x6041, 0x60A2, 0x6088, 0x6080, 0x6092, 0x6081, 0x609D, 0x6083, - 0x6095, 0x609B, 0x6097, 0x6087, 0x609C, 0x608E, 0x6219, 0x6246, - 0x62F2, 0x6310, 0x6356, 0x632C, 0x6344, 0x6345, 0x6336, 0x6343, - 0x63E4, 0x6339, 0x634B, 0x634A, 0x633C, 0x6329, 0x6341, 0x6334, - 0x6358, 0x6354, 0x6359, 0x632D, 0x6347, 0x6333, 0x635A, 0x6351, - 0x6338, 0x6357, 0x6340, 0x6348, 0x654A, 0x6546, 0x65C6, 0x65C3, - 0x65C4, 0x65C2, 0x664A, 0x665F, 0x6647, 0x6651, 0x6712, 0x6713, - 0x681F, 0x681A, 0x6849, 0x6832, 0x6833, 0x683B, 0x684B, 0x684F, -plane 61 -at 0x00 - 0x6816, 0x6831, 0x681C, 0x6835, 0x682B, 0x682D, 0x682F, 0x684E, - 0x6844, 0x6834, 0x681D, 0x6812, 0x6814, 0x6826, 0x6828, 0x682E, - 0x684D, 0x683A, 0x6825, 0x6820, 0x6B2C, 0x6B2F, 0x6B2D, 0x6B31, - 0x6B34, 0x6B6D, 0x8082, 0x6B88, 0x6BE6, 0x6BE4, 0x6BE8, 0x6BE3, - 0x6BE2, 0x6BE7, 0x6C25, 0x6D7A, 0x6D63, 0x6D64, 0x6D76, 0x6D0D, - 0x6D61, 0x6D92, 0x6D58, 0x6D62, 0x6D6D, 0x6D6F, 0x6D91, 0x6D8D, - 0x6DEF, 0x6D7F, 0x6D86, 0x6D5E, 0x6D67, 0x6D60, 0x6D97, 0x6D70, - 0x6D7C, 0x6D5F, 0x6D82, 0x6D98, 0x6D2F, 0x6D68, 0x6D8B, 0x6D7E, - 0x6D80, 0x6D84, 0x6D16, 0x6D83, 0x6D7B, 0x6D7D, 0x6D75, 0x6D90, - 0x70DC, 0x70D3, 0x70D1, 0x70DD, 0x70CB, 0x7F39, 0x70E2, 0x70D7, - 0x70D2, 0x70DE, 0x70E0, 0x70D4, 0x70CD, 0x70C5, 0x70C6, 0x70C7, - 0x70DA, 0x70CE, 0x70E1, 0x7242, 0x7278, 0x7482, 0x7493, 0x747B, - 0x7509, 0x778A, 0x7790, 0x78C6, 0x78D3, 0x78C0, 0x78D2, 0x78C7, - 0x78C2, 0x799F, 0x799D, 0x799E, 0x7A41, 0x7A38, 0x7A3A, 0x7A42, - 0x7A3E, 0x7AB0, 0x7BAE, 0x7BB3, 0x7BBF, 0x7BCD, 0x7BB2, 0x7CC4, - 0x7CCD, 0x7CC2, 0x7CC6, 0x7CC3, 0x7CC9, 0x7CC7, 0x7277, 0x7276, - 0x7300, 0x72FA, 0x72F4, 0x72FE, 0x72F6, 0x72F3, 0x72FB, 0x7301, - 0x73D3, 0x73D9, 0x73E5, 0x73D6, 0x73BC, 0x73E7, 0x73E3, 0x73E9, - 0x73DC, 0x73D2, 0x73DB, 0x73D4, 0x73DD, 0x73DA, 0x73D7, 0x73D8, - 0x73E8, 0x74DE, 0x74DF, 0x74F4, 0x74F5, 0x7521, 0x755B, 0x755F, - 0x75B0, 0x75C1, 0x75BB, 0x75C4, 0x75C0, 0x75BF, 0x75B6, 0x75BA, - 0x768A, 0x76C9, 0x771D, 0x771B, 0x7710, 0x7713, 0x7712, 0x7723, - 0x7711, 0x7715, 0x7719, 0x771A, 0x7722, 0x7727, 0x7823, 0x782C, - 0x7822, 0x7835, 0x782F, 0x7828, 0x782E, 0x782B, 0x7821, 0x7829, - 0x7833, 0x782A, 0x7831, 0x7954, 0x795B, 0x794F, 0x795C, 0x7953, - 0x7952, 0x7951, 0x79EB, 0x79EC, 0x79E0, 0x79EE, 0x79ED, 0x79EA, - 0x79DC, 0x79DE, 0x79DD, 0x7A86, 0x7A89, 0x7A85, 0x7A8B, 0x7A8C, - 0x7A8A, 0x7A87, 0x7AD8, 0x7B10, 0x7B04, 0x7B13, 0x7B05, 0x7B0F, - 0x7B08, 0x7B0A, 0x7B0E, 0x7B09, 0x7B12, 0x7C84, 0x7C91, 0x7C8A, - 0x7C8C, 0x7C88, 0x7C8D, 0x7C85, 0x7D1E, 0x7D1D, 0x7D11, 0x7D0E, - 0x7D18, 0x7D16, 0x7D13, 0x7D1F, 0x7D12, 0x7D0F, 0x7D0C, 0x7F5C, - 0x7F61, 0x7F5E, 0x7F60, 0x7F5D, 0x7F5B, 0x7F96, 0x7F92, 0x7FC3, -plane 62 -at 0x00 - 0x7FC2, 0x7FC0, 0x8016, 0x803E, 0x8039, 0x80FA, 0x80F2, 0x80F9, - 0x80F5, 0x8101, 0x80FB, 0x8100, 0x8201, 0x822F, 0x8225, 0x8333, - 0x832D, 0x8344, 0x8319, 0x8351, 0x8325, 0x8356, 0x833F, 0x8341, - 0x8326, 0x831C, 0x8322, 0x7DF8, 0x7DED, 0x7DE2, 0x7DDC, 0x7E02, - 0x7E01, 0x7DD6, 0x7DE4, 0x7DFE, 0x7E00, 0x7DFC, 0x7DFD, 0x7DF5, - 0x7DFF, 0x7DEB, 0x7DE5, 0x7F78, 0x7FAE, 0x7FE7, 0x8065, 0x806A, - 0x8066, 0x8068, 0x806B, 0x8194, 0x81A1, 0x8192, 0x8196, 0x8193, - 0x8501, 0x84F8, 0x84F5, 0x8504, 0x8342, 0x834E, 0x831B, 0x832A, - 0x8308, 0x833C, 0x834D, 0x8316, 0x8324, 0x8320, 0x8337, 0x832F, - 0x8329, 0x8347, 0x8345, 0x834C, 0x8353, 0x831E, 0x832C, 0x834B, - 0x8327, 0x8348, 0x8653, 0x8652, 0x86A2, 0x86A8, 0x8696, 0x868D, - 0x8691, 0x869E, 0x8687, 0x8697, 0x8686, 0x868B, 0x869A, 0x8685, - 0x86A5, 0x8699, 0x86A1, 0x86A7, 0x8695, 0x8698, 0x868E, 0x869D, - 0x8690, 0x8694, 0x8843, 0x8844, 0x886D, 0x8875, 0x8876, 0x8872, - 0x8880, 0x8871, 0x887F, 0x886F, 0x8883, 0x887E, 0x8874, 0x887C, - 0x8A12, 0x8C47, 0x8C57, 0x8C7B, 0x8CA4, 0x8CA3, 0x8D76, 0x8D78, - 0x8DB5, 0x8DB7, 0x8DB6, 0x8ED1, 0x8ED3, 0x8FFE, 0x8FF5, 0x9002, - 0x8FFF, 0x8FFB, 0x9004, 0x8FFC, 0x8FF6, 0x90D6, 0x90E0, 0x90D9, - 0x90DA, 0x90E3, 0x90DF, 0x90E5, 0x90D8, 0x90DB, 0x90D7, 0x90DC, - 0x90E4, 0x9150, 0x914E, 0x914F, 0x91D5, 0x91E2, 0x91DA, 0x965C, - 0x965F, 0x96BC, 0x98E3, 0x9ADF, 0x9B2F, 0x4E7F, 0x5070, 0x506A, - 0x5061, 0x505E, 0x5060, 0x5053, 0x504B, 0x505D, 0x5072, 0x5048, - 0x504D, 0x5041, 0x505B, 0x504A, 0x5062, 0x5015, 0x5045, 0x505F, - 0x5069, 0x506B, 0x5063, 0x5064, 0x5046, 0x5040, 0x506E, 0x5073, - 0x5057, 0x5051, 0x51D0, 0x526B, 0x526D, 0x526C, 0x526E, 0x52D6, - 0x52D3, 0x532D, 0x539C, 0x5575, 0x5576, 0x553C, 0x554D, 0x5550, - 0x5534, 0x552A, 0x5551, 0x5562, 0x5536, 0x5535, 0x5530, 0x5552, - 0x5545, 0x851B, 0x8503, 0x8533, 0x8534, 0x84ED, 0x8535, 0x8505, - 0x877D, 0x8771, 0x885C, 0x88E6, 0x890F, 0x891B, 0x89A9, 0x89A5, - 0x89EE, 0x8AB1, 0x8ACC, 0x8ACE, 0x8AB7, 0x8AB5, 0x8AE9, 0x8AB4, - 0x8AB3, 0x8AC1, 0x8AAF, 0x8ACA, 0x8AD0, 0x8C8E, 0x8CE9, 0x8CDB, - 0x8CEB, 0x8DA4, 0x550C, 0x5532, 0x5565, 0x554E, 0x5539, 0x5548, -plane 63 -at 0x00 - 0x552D, 0x553B, 0x5540, 0x554B, 0x570A, 0x5707, 0x57FB, 0x5814, - 0x57E2, 0x57F6, 0x57DC, 0x57F4, 0x5800, 0x57ED, 0x57FD, 0x5808, - 0x57F8, 0x580B, 0x57F3, 0x57CF, 0x5807, 0x57EE, 0x57E3, 0x57F2, - 0x57E5, 0x57EC, 0x57E1, 0x580E, 0x57FC, 0x5810, 0x57E7, 0x5801, - 0x580C, 0x57F1, 0x57E9, 0x57F0, 0x580D, 0x5804, 0x595C, 0x5A60, - 0x5A58, 0x5A55, 0x5A67, 0x5A5E, 0x5A38, 0x5A35, 0x5A6D, 0x5A50, - 0x5A5F, 0x5A65, 0x5A6C, 0x5A53, 0x5A64, 0x5A57, 0x5A43, 0x5A5D, - 0x5A52, 0x5A44, 0x5A5B, 0x5A48, 0x5A8E, 0x5A3E, 0x5A4D, 0x5A39, - 0x5A4C, 0x5A70, 0x5A69, 0x5A47, 0x5A51, 0x5A56, 0x5A42, 0x5A5C, - 0x5B72, 0x5B6E, 0x5BC1, 0x5BC0, 0x5C59, 0x5D1E, 0x5D0B, 0x5D1D, - 0x5D1A, 0x5D20, 0x5D0C, 0x5D28, 0x5D0D, 0x5D26, 0x5D25, 0x5D0F, - 0x5D30, 0x5D12, 0x5D23, 0x5D1F, 0x5D2E, 0x5E3E, 0x5E34, 0x5EB1, - 0x5EB4, 0x5EB9, 0x5EB2, 0x5EB3, 0x5F36, 0x5F38, 0x5F9B, 0x5F96, - 0x5F9F, 0x608A, 0x6090, 0x6086, 0x60BE, 0x60B0, 0x60BA, 0x60D3, - 0x60D4, 0x60CF, 0x60E4, 0x60D9, 0x60DD, 0x60C8, 0x60B1, 0x60DB, - 0x60B7, 0x60CA, 0x60BF, 0x60C3, 0x60CD, 0x60C0, 0x6332, 0x6365, - 0x638A, 0x6382, 0x637D, 0x63BD, 0x639E, 0x63AD, 0x639D, 0x6397, - 0x63AB, 0x638E, 0x636F, 0x6387, 0x6390, 0x636E, 0x63AF, 0x6375, - 0x639C, 0x636D, 0x63AE, 0x637C, 0x63A4, 0x633B, 0x639F, 0x8DA2, - 0x8D9D, 0x8E2A, 0x8E28, 0x8EB8, 0x8EB6, 0x8EB9, 0x8EB7, 0x8F22, - 0x8F2B, 0x8F27, 0x8F19, 0x8FA4, 0x8FB3, 0x9071, 0x906A, 0x9188, - 0x918C, 0x92BF, 0x92B8, 0x92BE, 0x92DC, 0x92E5, 0x92D4, 0x92D6, - 0x92DA, 0x92ED, 0x92F3, 0x92DB, 0x92E2, 0x92EB, 0x95AF, 0x95B2, - 0x6378, 0x6385, 0x6381, 0x6391, 0x638D, 0x6370, 0x6553, 0x65CD, - 0x6665, 0x6661, 0x665B, 0x6659, 0x665C, 0x6662, 0x6718, 0x6879, - 0x6887, 0x6890, 0x689C, 0x686D, 0x686E, 0x68AE, 0x68AB, 0x6956, - 0x686F, 0x68A3, 0x68AC, 0x68A9, 0x6875, 0x6874, 0x68B2, 0x688F, - 0x6877, 0x6892, 0x687C, 0x686B, 0x6872, 0x68AA, 0x6880, 0x6871, - 0x687E, 0x689B, 0x6896, 0x688B, 0x68A0, 0x6889, 0x68A4, 0x6878, - 0x687B, 0x6891, 0x688C, 0x688A, 0x687D, 0x6B36, 0x6B33, 0x6B37, - 0x6B38, 0x6B91, 0x6B8F, 0x6B8D, 0x6B8E, 0x6B8C, 0x6C2A, 0x6DC0, - 0x6DAB, 0x6DB4, 0x6DB3, 0x6E74, 0x6DAC, 0x6DE9, 0x6DE2, 0x6DB7, -plane 64 -at 0x00 - 0x6DF6, 0x6DD4, 0x6E00, 0x6DC8, 0x6DE0, 0x6DDF, 0x6DD6, 0x6DBE, - 0x6DE5, 0x6DDC, 0x6DDD, 0x6DDB, 0x6DF4, 0x6DCA, 0x6DBD, 0x6DED, - 0x6DF0, 0x6DBA, 0x6DD5, 0x6DC2, 0x6DCF, 0x6DC9, 0x6DD0, 0x6DF2, - 0x6DD3, 0x6DFD, 0x6DD7, 0x6DCD, 0x6DE3, 0x6DBB, 0x70FA, 0x710D, - 0x70F7, 0x7117, 0x70F4, 0x710C, 0x70F0, 0x7104, 0x70F3, 0x7110, - 0x70FC, 0x70FF, 0x7106, 0x7113, 0x7100, 0x70F8, 0x70F6, 0x710B, - 0x7102, 0x710E, 0x727E, 0x727B, 0x727C, 0x727F, 0x731D, 0x7317, - 0x7307, 0x7311, 0x7318, 0x730A, 0x7308, 0x72FF, 0x730F, 0x731E, - 0x7388, 0x73F6, 0x73F8, 0x73F5, 0x7404, 0x7401, 0x73FD, 0x7407, - 0x7400, 0x73FA, 0x73FC, 0x73FF, 0x740C, 0x740B, 0x73F4, 0x7408, - 0x7564, 0x7563, 0x75CE, 0x75D2, 0x75CF, 0x95B3, 0x96A3, 0x96A5, - 0x970A, 0x9787, 0x9789, 0x978C, 0x97EF, 0x982A, 0x9822, 0x981F, - 0x9919, 0x99CA, 0x99DA, 0x99DE, 0x99C8, 0x99E0, 0x9AB6, 0x9AB5, - 0x9AF4, 0x9B6B, 0x9B69, 0x9B72, 0x9B63, 0x9D0D, 0x9D01, 0x9D0C, - 0x9CF8, 0x9CFE, 0x9D02, 0x9E84, 0x9EAB, 0x9EAA, 0x75CB, 0x75CC, - 0x75D1, 0x75D0, 0x768F, 0x7689, 0x76D3, 0x7739, 0x772F, 0x772D, - 0x7731, 0x7732, 0x7734, 0x7733, 0x773D, 0x7725, 0x773B, 0x7735, - 0x7848, 0x7852, 0x7849, 0x784D, 0x784A, 0x784C, 0x7826, 0x7845, - 0x7850, 0x7964, 0x7967, 0x7969, 0x796A, 0x7963, 0x796B, 0x7961, - 0x79BB, 0x79FA, 0x79F8, 0x79F6, 0x79F7, 0x7A8F, 0x7A94, 0x7A90, - 0x7B35, 0x7B47, 0x7B34, 0x7B25, 0x7B30, 0x7B22, 0x7B24, 0x7B33, - 0x7B18, 0x7B2A, 0x7B1D, 0x7B31, 0x7B2B, 0x7B2D, 0x7B2F, 0x7B32, - 0x7B38, 0x7B1A, 0x7B23, 0x7C94, 0x7C98, 0x7C96, 0x7CA3, 0x7D35, - 0x7D3D, 0x7D38, 0x7D36, 0x7D3A, 0x7D45, 0x7D2C, 0x7D29, 0x7D41, - 0x7D47, 0x7D3E, 0x7D3F, 0x7D4A, 0x7D3B, 0x7D28, 0x7F63, 0x7F95, - 0x7F9C, 0x7F9D, 0x7F9B, 0x7FCA, 0x7FCB, 0x7FCD, 0x7FD0, 0x7FD1, - 0x7FC7, 0x7FCF, 0x7FC9, 0x801F, 0x801E, 0x801B, 0x8047, 0x8043, - 0x8048, 0x8118, 0x8125, 0x8119, 0x811B, 0x812D, 0x811F, 0x812C, - 0x811E, 0x8121, 0x8115, 0x8127, 0x811D, 0x8122, 0x8211, 0x8238, - 0x8233, 0x823A, 0x8234, 0x8232, 0x8274, 0x8390, 0x83A3, 0x83A8, - 0x838D, 0x837A, 0x8373, 0x83A4, 0x8374, 0x838F, 0x8381, 0x8395, - 0x8399, 0x8375, 0x8394, 0x83A9, 0x837D, 0x8383, 0x838C, 0x839D, -plane 65 -at 0x00 - 0x839B, 0x83AA, 0x838B, 0x837E, 0x83A5, 0x83AF, 0x8388, 0x8397, - 0x83B0, 0x837F, 0x83A6, 0x8387, 0x83AE, 0x8376, 0x839A, 0x8659, - 0x8656, 0x86BF, 0x86B7, 0x511D, 0x5116, 0x512B, 0x511E, 0x511B, - 0x5290, 0x5294, 0x5314, 0x5667, 0x567B, 0x565F, 0x5661, 0x58C3, - 0x58CA, 0x58C0, 0x58C4, 0x5901, 0x5B1F, 0x5B18, 0x5B11, 0x5B15, - 0x5B12, 0x5B1C, 0x5B22, 0x5B79, 0x5DA6, 0x5DB3, 0x5DAB, 0x5EEA, - 0x5F5B, 0x61B7, 0x61CE, 0x61B9, 0x86C2, 0x86C1, 0x86C5, 0x86BA, - 0x86B0, 0x86C8, 0x86B9, 0x86B3, 0x86B8, 0x86CC, 0x86B4, 0x86BB, - 0x86BC, 0x86C3, 0x86BD, 0x86BE, 0x8852, 0x8889, 0x8895, 0x88A8, - 0x88A2, 0x88AA, 0x889A, 0x8891, 0x88A1, 0x889F, 0x8898, 0x88A7, - 0x8899, 0x889B, 0x8897, 0x88A4, 0x88AC, 0x888C, 0x8893, 0x888E, - 0x8982, 0x89D6, 0x89D9, 0x89D5, 0x8A30, 0x8A27, 0x8A2C, 0x8A1E, - 0x8C39, 0x8C3B, 0x8C5C, 0x8C5D, 0x8C7D, 0x8CA5, 0x8D7D, 0x8D7B, - 0x8D79, 0x8DBC, 0x8DC2, 0x8DB9, 0x8DBF, 0x8DC1, 0x8ED8, 0x8EDE, - 0x8EDD, 0x8EDC, 0x8ED7, 0x8EE0, 0x8EE1, 0x9024, 0x900B, 0x9011, - 0x901C, 0x900C, 0x9021, 0x90EF, 0x90EA, 0x90F0, 0x90F4, 0x90F2, - 0x90F3, 0x90D4, 0x90EB, 0x90EC, 0x90E9, 0x9156, 0x9158, 0x915A, - 0x9153, 0x9155, 0x91EC, 0x91F4, 0x91F1, 0x91F3, 0x91F8, 0x91E4, - 0x91F9, 0x91EA, 0x91EB, 0x91F7, 0x91E8, 0x91EE, 0x957A, 0x9586, - 0x9588, 0x967C, 0x966D, 0x966B, 0x9671, 0x966F, 0x96BF, 0x976A, - 0x9804, 0x98E5, 0x9997, 0x509B, 0x5095, 0x5094, 0x509E, 0x508B, - 0x50A3, 0x5083, 0x508C, 0x508E, 0x509D, 0x5068, 0x509C, 0x5092, - 0x5082, 0x5087, 0x515F, 0x51D4, 0x5312, 0x5311, 0x53A4, 0x53A7, - 0x5591, 0x55A8, 0x55A5, 0x55AD, 0x5577, 0x5645, 0x55A2, 0x5593, - 0x5588, 0x558F, 0x55B5, 0x5581, 0x55A3, 0x5592, 0x55A4, 0x557D, - 0x558C, 0x55A6, 0x557F, 0x5595, 0x55A1, 0x558E, 0x570C, 0x5829, - 0x5837, 0x61BD, 0x61CF, 0x61C0, 0x6199, 0x6197, 0x61BB, 0x61D0, - 0x61C4, 0x6231, 0x64D3, 0x64C0, 0x64DC, 0x64D1, 0x64C8, 0x64D5, - 0x66C3, 0x66BF, 0x66C5, 0x66CD, 0x66C1, 0x6706, 0x6724, 0x6A63, - 0x6A42, 0x6A52, 0x6A43, 0x6A33, 0x6A6C, 0x6A57, 0x6A4C, 0x6A6E, - 0x6A37, 0x6A71, 0x5819, 0x581E, 0x5827, 0x5823, 0x5828, 0x57F5, - 0x5848, 0x5825, 0x581C, 0x581B, 0x5833, 0x583F, 0x5836, 0x582E, -plane 66 -at 0x00 - 0x5839, 0x5838, 0x582D, 0x582C, 0x583B, 0x5961, 0x5AAF, 0x5A94, - 0x5A9F, 0x5A7A, 0x5AA2, 0x5A9E, 0x5A78, 0x5AA6, 0x5A7C, 0x5AA5, - 0x5AAC, 0x5A95, 0x5AAE, 0x5A37, 0x5A84, 0x5A8A, 0x5A97, 0x5A83, - 0x5A8B, 0x5AA9, 0x5A7B, 0x5A7D, 0x5A8C, 0x5A9C, 0x5A8F, 0x5A93, - 0x5A9D, 0x5BEA, 0x5BCD, 0x5BCB, 0x5BD4, 0x5BD1, 0x5BCA, 0x5BCE, - 0x5C0C, 0x5C30, 0x5D37, 0x5D43, 0x5D6B, 0x5D41, 0x5D4B, 0x5D3F, - 0x5D35, 0x5D51, 0x5D4E, 0x5D55, 0x5D33, 0x5D3A, 0x5D52, 0x5D3D, - 0x5D31, 0x5D59, 0x5D42, 0x5D39, 0x5D49, 0x5D38, 0x5D3C, 0x5D32, - 0x5D36, 0x5D40, 0x5D45, 0x5E44, 0x5E41, 0x5F58, 0x5FA6, 0x5FA5, - 0x5FAB, 0x60C9, 0x60B9, 0x60CC, 0x60E2, 0x60CE, 0x60C4, 0x6114, - 0x60F2, 0x610A, 0x6116, 0x6105, 0x60F5, 0x6113, 0x60F8, 0x60FC, - 0x60FE, 0x60C1, 0x6103, 0x6118, 0x611D, 0x6110, 0x60FF, 0x6104, - 0x610B, 0x624A, 0x6394, 0x63B1, 0x63B0, 0x63CE, 0x63E5, 0x63E8, - 0x63EF, 0x63C3, 0x649D, 0x63F3, 0x63CA, 0x63E0, 0x63F6, 0x63D5, - 0x63F2, 0x63F5, 0x6461, 0x63DF, 0x63BE, 0x63DD, 0x63DC, 0x63C4, - 0x63D8, 0x63D3, 0x63C2, 0x63C7, 0x63CC, 0x63CB, 0x63C8, 0x63F0, - 0x63D7, 0x63D9, 0x6532, 0x6567, 0x656A, 0x6564, 0x655C, 0x6568, - 0x6565, 0x658C, 0x659D, 0x659E, 0x65AE, 0x65D0, 0x65D2, 0x6A4A, - 0x6A36, 0x6A53, 0x6A45, 0x6A70, 0x6A5C, 0x6B58, 0x6B57, 0x6FBB, - 0x6FBE, 0x6FB5, 0x6FD3, 0x6F9F, 0x6FB7, 0x6FF5, 0x71B7, 0x71BB, - 0x71D1, 0x71BA, 0x71B6, 0x71CC, 0x71D3, 0x749B, 0x7496, 0x74A2, - 0x749D, 0x750A, 0x750E, 0x7581, 0x762C, 0x7637, 0x7636, 0x763B, - 0x667C, 0x666C, 0x667B, 0x6680, 0x6671, 0x6679, 0x666A, 0x6672, - 0x6701, 0x690C, 0x68D3, 0x6904, 0x68DC, 0x692A, 0x68EC, 0x68EA, - 0x68F1, 0x690F, 0x68D6, 0x68F7, 0x68EB, 0x68E4, 0x68F6, 0x6913, - 0x6910, 0x68F3, 0x68E1, 0x6907, 0x68CC, 0x6908, 0x6970, 0x68B4, - 0x6911, 0x68EF, 0x68C6, 0x6914, 0x68F8, 0x68D0, 0x68FD, 0x68FC, - 0x68E8, 0x690B, 0x690A, 0x6917, 0x68CE, 0x68C8, 0x68DD, 0x68DE, - 0x68E6, 0x68F4, 0x68D1, 0x6906, 0x68D4, 0x68E9, 0x6915, 0x6925, - 0x68C7, 0x6B39, 0x6B3B, 0x6B3F, 0x6B3C, 0x6B94, 0x6B97, 0x6B99, - 0x6B95, 0x6BBD, 0x6BF0, 0x6BF2, 0x6BF3, 0x6C30, 0x6DFC, 0x6E46, - 0x6E47, 0x6E1F, 0x6E49, 0x6E88, 0x6E3C, 0x6E3D, 0x6E45, 0x6E62, -plane 67 -at 0x00 - 0x6E2B, 0x6E3F, 0x6E41, 0x6E5D, 0x6E73, 0x6E1C, 0x6E33, 0x6E4B, - 0x6E40, 0x6E51, 0x6E3B, 0x6E03, 0x6E2E, 0x6E5E, 0x6E68, 0x6E5C, - 0x6E61, 0x6E31, 0x6E28, 0x6E60, 0x6E71, 0x6E6B, 0x6E39, 0x6E22, - 0x6E30, 0x6E53, 0x6E65, 0x6E27, 0x6E78, 0x6E64, 0x6E77, 0x6E55, - 0x6E79, 0x6E52, 0x6E66, 0x6E35, 0x6E36, 0x6E5A, 0x7120, 0x711E, - 0x712F, 0x70FB, 0x712E, 0x7131, 0x7123, 0x7125, 0x7122, 0x7132, - 0x711F, 0x7128, 0x713A, 0x711B, 0x724B, 0x725A, 0x7288, 0x7289, - 0x7286, 0x7285, 0x728B, 0x7312, 0x730B, 0x7330, 0x7322, 0x7331, - 0x7333, 0x7327, 0x7332, 0x732D, 0x7326, 0x7323, 0x7335, 0x730C, - 0x742E, 0x742C, 0x7430, 0x742B, 0x7416, 0x76A1, 0x7798, 0x7796, - 0x78D6, 0x78EB, 0x78DC, 0x79A5, 0x79A9, 0x9834, 0x7A53, 0x7A45, - 0x7A4F, 0x7ABD, 0x7ABB, 0x7AF1, 0x7BEC, 0x7BED, 0x7CD3, 0x7CE1, - 0x7E19, 0x7E27, 0x7E26, 0x806E, 0x81AF, 0x81AD, 0x81AA, 0x8218, - 0x856F, 0x854C, 0x8542, 0x855C, 0x8570, 0x855F, 0x741A, 0x7421, - 0x742D, 0x7431, 0x7424, 0x7423, 0x741D, 0x7429, 0x7420, 0x7432, - 0x74FB, 0x752F, 0x756F, 0x756C, 0x75E7, 0x75DA, 0x75E1, 0x75E6, - 0x75DD, 0x75DF, 0x75E4, 0x75D7, 0x7695, 0x7692, 0x76DA, 0x7746, - 0x7747, 0x7744, 0x774D, 0x7745, 0x774A, 0x774E, 0x774B, 0x774C, - 0x77DE, 0x77EC, 0x7860, 0x7864, 0x7865, 0x785C, 0x786D, 0x7871, - 0x786A, 0x786E, 0x7870, 0x7869, 0x7868, 0x785E, 0x7862, 0x7974, - 0x7973, 0x7972, 0x7970, 0x7A02, 0x7A0A, 0x7A03, 0x7A0C, 0x7A04, - 0x7A99, 0x7AE6, 0x7AE4, 0x7B4A, 0x7B3B, 0x7B44, 0x7B48, 0x7B4C, - 0x7B4E, 0x7B40, 0x7B58, 0x7B45, 0x7CA2, 0x7C9E, 0x7CA8, 0x7CA1, - 0x7D58, 0x7D6F, 0x7D63, 0x7D53, 0x7D56, 0x7D67, 0x7D6A, 0x7D4F, - 0x7D6D, 0x7D5C, 0x7D6B, 0x7D52, 0x7D54, 0x7D69, 0x7D51, 0x7D5F, - 0x7D4E, 0x7F3E, 0x7F3F, 0x7F65, 0x7F66, 0x7FA2, 0x7FA0, 0x7FA1, - 0x7FD7, 0x8051, 0x804F, 0x8050, 0x80FE, 0x80D4, 0x8143, 0x814A, - 0x8152, 0x814F, 0x8147, 0x813D, 0x814D, 0x813A, 0x81E6, 0x81EE, - 0x81F7, 0x81F8, 0x81F9, 0x8204, 0x823C, 0x823D, 0x823F, 0x8275, - 0x833B, 0x83CF, 0x83F9, 0x8423, 0x83C0, 0x83E8, 0x8412, 0x83E7, - 0x83E4, 0x83FC, 0x83F6, 0x8410, 0x83C6, 0x83C8, 0x83EB, 0x83E3, - 0x83BF, 0x8401, 0x83DD, 0x83E5, 0x83D8, 0x83FF, 0x83E1, 0x83CB, -plane 68 -at 0x00 - 0x83CE, 0x83D6, 0x83F5, 0x83C9, 0x8409, 0x840F, 0x83DE, 0x8411, - 0x8406, 0x83C2, 0x83F3, 0x855A, 0x854B, 0x853F, 0x878A, 0x878B, - 0x87A1, 0x878E, 0x8799, 0x885E, 0x885F, 0x8924, 0x89A7, 0x8AEA, - 0x8AFD, 0x8AF9, 0x8AE3, 0x8AE5, 0x8AEC, 0x8CF2, 0x8CEF, 0x8DA6, - 0x8E3B, 0x8E43, 0x8E32, 0x8F31, 0x8F30, 0x8F2D, 0x8F3C, 0x8FA7, - 0x8FA5, 0x9137, 0x9195, 0x918E, 0x83D5, 0x83FA, 0x83C7, 0x83D1, - 0x83EA, 0x8413, 0x83C3, 0x83EC, 0x83EE, 0x83C4, 0x83FB, 0x83D7, - 0x83E2, 0x841B, 0x83DB, 0x83FE, 0x86D8, 0x86E2, 0x86E6, 0x86D3, - 0x86E3, 0x86DA, 0x86EA, 0x86DD, 0x86EB, 0x86DC, 0x86EC, 0x86E9, - 0x86D7, 0x86E8, 0x86D1, 0x8848, 0x8856, 0x8855, 0x88BA, 0x88D7, - 0x88B9, 0x88B8, 0x88C0, 0x88BE, 0x88B6, 0x88BC, 0x88B7, 0x88BD, - 0x88B2, 0x8901, 0x88C9, 0x8995, 0x8998, 0x8997, 0x89DD, 0x89DA, - 0x89DB, 0x8A4E, 0x8A4D, 0x8A39, 0x8A59, 0x8A40, 0x8A57, 0x8A58, - 0x8A44, 0x8A45, 0x8A52, 0x8A48, 0x8A51, 0x8A4A, 0x8A4C, 0x8A4F, - 0x8C5F, 0x8C81, 0x8C80, 0x8CBA, 0x8CBE, 0x8CB0, 0x8CB9, 0x8CB5, - 0x8D84, 0x8D80, 0x8D89, 0x8DD8, 0x8DD3, 0x8DCD, 0x8DC7, 0x8DD6, - 0x8DDC, 0x8DCF, 0x8DD5, 0x8DD9, 0x8DC8, 0x8DD7, 0x8DC5, 0x8EEF, - 0x8EF7, 0x8EFA, 0x8EF9, 0x8EE6, 0x8EEE, 0x8EE5, 0x8EF5, 0x8EE7, - 0x8EE8, 0x8EF6, 0x8EEB, 0x8EF1, 0x8EEC, 0x8EF4, 0x8EE9, 0x902D, - 0x9034, 0x902F, 0x9106, 0x912C, 0x9104, 0x90FF, 0x90FC, 0x9108, - 0x90F9, 0x90FB, 0x9101, 0x9100, 0x9107, 0x9105, 0x9103, 0x9161, - 0x9164, 0x915F, 0x9162, 0x9160, 0x9201, 0x920A, 0x9225, 0x9203, - 0x921A, 0x9226, 0x920F, 0x920C, 0x9200, 0x9212, 0x91FF, 0x91FD, - 0x9206, 0x9204, 0x9227, 0x9202, 0x921C, 0x9224, 0x9219, 0x9217, - 0x9205, 0x9216, 0x957B, 0x958D, 0x958C, 0x9590, 0x9687, 0x967E, - 0x9688, 0x9196, 0x9345, 0x930A, 0x92FD, 0x9317, 0x931C, 0x9307, - 0x9331, 0x9332, 0x932C, 0x9330, 0x9303, 0x9305, 0x95C2, 0x95B8, - 0x95C1, 0x96AB, 0x96B7, 0x9715, 0x9714, 0x970C, 0x9717, 0x9793, - 0x97D2, 0x9836, 0x9831, 0x9833, 0x983C, 0x982E, 0x983A, 0x983D, - 0x98B5, 0x9922, 0x9689, 0x9683, 0x9680, 0x96C2, 0x96C8, 0x96C3, - 0x96F1, 0x96F0, 0x976C, 0x9770, 0x976E, 0x9807, 0x98A9, 0x98EB, - 0x9CE6, 0x9EF9, 0x4E83, 0x4E84, 0x4EB6, 0x50BD, 0x50BF, 0x50C6, -plane 69 -at 0x00 - 0x50AE, 0x50C4, 0x50CA, 0x50B4, 0x50C8, 0x50C2, 0x50B0, 0x50C1, - 0x50BA, 0x50B1, 0x50CB, 0x50C9, 0x50B6, 0x50B8, 0x51D7, 0x527A, - 0x5278, 0x527B, 0x527C, 0x55C3, 0x55DB, 0x55CC, 0x55D0, 0x55CB, - 0x55CA, 0x55DD, 0x55C0, 0x55D4, 0x55C4, 0x55E9, 0x55BF, 0x55D2, - 0x558D, 0x55CF, 0x55D5, 0x55E2, 0x55D6, 0x55C8, 0x55F2, 0x55CD, - 0x55D9, 0x55C2, 0x5714, 0x5853, 0x5868, 0x5864, 0x584F, 0x584D, - 0x5849, 0x586F, 0x5855, 0x584E, 0x585D, 0x5859, 0x5865, 0x585B, - 0x583D, 0x5863, 0x5871, 0x58FC, 0x5AC7, 0x5AC4, 0x5ACB, 0x5ABA, - 0x5AB8, 0x5AB1, 0x5AB5, 0x5AB0, 0x5ABF, 0x5AC8, 0x5ABB, 0x5AC6, - 0x5AB7, 0x5AC0, 0x5ACA, 0x5AB4, 0x5AB6, 0x5ACD, 0x5AB9, 0x5A90, - 0x5BD6, 0x5BD8, 0x5BD9, 0x5C1F, 0x5C33, 0x5D71, 0x5D63, 0x5D4A, - 0x5D65, 0x5D72, 0x5D6C, 0x5D5E, 0x5D68, 0x5D67, 0x5D62, 0x5DF0, - 0x5E4F, 0x5E4E, 0x5E4A, 0x5E4D, 0x5E4B, 0x5EC5, 0x5ECC, 0x5EC6, - 0x5ECB, 0x5EC7, 0x5F40, 0x5FAF, 0x5FAD, 0x60F7, 0x6149, 0x614A, - 0x612B, 0x6145, 0x6136, 0x6132, 0x612E, 0x6146, 0x612F, 0x614F, - 0x6129, 0x6140, 0x6220, 0x9168, 0x6223, 0x6225, 0x6224, 0x63C5, - 0x63F1, 0x63EB, 0x6410, 0x6412, 0x6409, 0x6420, 0x6424, 0x9923, - 0x9920, 0x991C, 0x991D, 0x99A0, 0x99EF, 0x99E8, 0x99EB, 0x99E1, - 0x99E6, 0x9AF8, 0x9AF5, 0x9B83, 0x9B94, 0x9B84, 0x9B8B, 0x9B8F, - 0x9B8C, 0x9B89, 0x9B8E, 0x9D24, 0x9D0F, 0x9D13, 0x9D0A, 0x9D2A, - 0x9D1A, 0x9D27, 0x9D16, 0x9D21, 0x9E85, 0x9EAC, 0x9EC6, 0x9EC5, - 0x6433, 0x6443, 0x641F, 0x6415, 0x6418, 0x6439, 0x6437, 0x6422, - 0x6423, 0x640C, 0x6426, 0x6430, 0x6428, 0x6441, 0x6435, 0x642F, - 0x640A, 0x641A, 0x6440, 0x6425, 0x6427, 0x640B, 0x63E7, 0x641B, - 0x642E, 0x6421, 0x640E, 0x656F, 0x6592, 0x65D3, 0x6686, 0x668C, - 0x6695, 0x6690, 0x668B, 0x668A, 0x6699, 0x6694, 0x6678, 0x6720, - 0x6966, 0x695F, 0x6938, 0x694E, 0x6962, 0x6971, 0x693F, 0x6945, - 0x696A, 0x6939, 0x6942, 0x6957, 0x6959, 0x697A, 0x6948, 0x6949, - 0x6935, 0x696C, 0x6933, 0x693D, 0x6965, 0x68F0, 0x6978, 0x6934, - 0x6969, 0x6940, 0x696F, 0x6944, 0x6976, 0x6958, 0x6941, 0x6974, - 0x694C, 0x693B, 0x694B, 0x6937, 0x695C, 0x694F, 0x6951, 0x6932, - 0x6952, 0x692F, 0x697B, 0x693C, 0x6B46, 0x6B45, 0x6B43, 0x6B42, -plane 70 -at 0x00 - 0x6B48, 0x6B41, 0x6B9B, 0x55C0, 0x6BFB, 0x6BFC, 0x6BF9, 0x6BF7, - 0x6BF8, 0x6E9B, 0x6ED6, 0x6EC8, 0x6E8F, 0x6EC0, 0x6E9F, 0x6E93, - 0x6E94, 0x6EA0, 0x6EB1, 0x6EB9, 0x6EC6, 0x6ED2, 0x6EBD, 0x6EC1, - 0x6E9E, 0x6EC9, 0x6EB7, 0x6EB0, 0x6ECD, 0x6EA6, 0x6ECF, 0x6EB2, - 0x6EBE, 0x6EC3, 0x6EDC, 0x6ED8, 0x6E99, 0x6E92, 0x6E8E, 0x6E8D, - 0x6EA4, 0x6EA1, 0x6EBF, 0x6EB3, 0x6ED0, 0x6ECA, 0x6E97, 0x6EAE, - 0x6EA3, 0x7147, 0x7154, 0x7152, 0x7163, 0x7160, 0x7141, 0x715D, - 0x7162, 0x7172, 0x7178, 0x716A, 0x7161, 0x7142, 0x7158, 0x7143, - 0x714B, 0x7170, 0x715F, 0x7150, 0x7153, 0x9ED7, 0x9F53, 0x5128, - 0x5127, 0x51DF, 0x5335, 0x53B3, 0x568A, 0x567D, 0x5689, 0x58CD, - 0x58D0, 0x5B2B, 0x5B33, 0x5B29, 0x5B35, 0x5B31, 0x5B37, 0x5C36, - 0x5DBE, 0x5DB9, 0x5DBB, 0x61E2, 0x61DB, 0x61DD, 0x61DC, 0x61DA, - 0x61D9, 0x64DF, 0x64E1, 0x64EE, 0x65B5, 0x66D4, 0x7144, 0x714D, - 0x715A, 0x724F, 0x728D, 0x728C, 0x7291, 0x7290, 0x728E, 0x733C, - 0x7342, 0x733B, 0x733A, 0x7340, 0x734A, 0x7349, 0x7444, 0x744A, - 0x744B, 0x7452, 0x7451, 0x7457, 0x7440, 0x744F, 0x7450, 0x744E, - 0x7442, 0x7446, 0x744D, 0x7454, 0x74E1, 0x74FF, 0x74FE, 0x74FD, - 0x751D, 0x7579, 0x7577, 0x6983, 0x75EF, 0x760F, 0x7603, 0x75F7, - 0x75FE, 0x75FC, 0x75F9, 0x75F8, 0x7610, 0x75FB, 0x75F6, 0x75ED, - 0x75F5, 0x75FD, 0x7699, 0x76B5, 0x76DD, 0x7755, 0x775F, 0x7760, - 0x7752, 0x7756, 0x775A, 0x7769, 0x7767, 0x7754, 0x7759, 0x776D, - 0x77E0, 0x7887, 0x789A, 0x7894, 0x788F, 0x7884, 0x7895, 0x7885, - 0x7886, 0x78A1, 0x7883, 0x7879, 0x7899, 0x7880, 0x7896, 0x787B, - 0x797C, 0x7982, 0x797D, 0x7979, 0x7A11, 0x7A18, 0x7A19, 0x7A12, - 0x7A17, 0x7A15, 0x7A22, 0x7A13, 0x7A1B, 0x7A10, 0x7AA3, 0x7AA2, - 0x7A9E, 0x7AEB, 0x7B66, 0x7B64, 0x7B6D, 0x7B74, 0x7B69, 0x7B72, - 0x7B65, 0x7B73, 0x7B71, 0x7B70, 0x7B61, 0x7B78, 0x7B76, 0x7B63, - 0x7CB2, 0x7CB4, 0x7CAF, 0x7D88, 0x7D86, 0x7D80, 0x7D8D, 0x7D7F, - 0x7D85, 0x7D7A, 0x7D8E, 0x7D7B, 0x7D83, 0x7D7C, 0x7D8C, 0x7D94, - 0x7D84, 0x7D7D, 0x7D92, 0x7F6D, 0x7F6B, 0x7F67, 0x7F68, 0x7F6C, - 0x7FA6, 0x7FA5, 0x7FA7, 0x7FDB, 0x7FDC, 0x8021, 0x8164, 0x8160, - 0x8177, 0x815C, 0x8169, 0x815B, 0x8162, 0x8172, 0x6721, 0x815E, -plane 71 -at 0x00 - 0x8176, 0x8167, 0x816F, 0x66D5, 0x66D0, 0x66D1, 0x66CE, 0x66D7, - 0x6A7D, 0x6A8A, 0x6AA7, 0x6A99, 0x6A82, 0x6A88, 0x6A86, 0x6A98, - 0x6A9D, 0x6A8F, 0x6AAA, 0x6B5D, 0x6C0A, 0x6FD7, 0x6FD6, 0x6FE5, - 0x6FD9, 0x6FDA, 0x6FEA, 0x6FF6, 0x71E3, 0x71E9, 0x71EB, 0x71EF, - 0x71F3, 0x71EA, 0x7371, 0x74AE, 0x8144, 0x8161, 0x821D, 0x8249, - 0x8244, 0x8240, 0x8242, 0x8245, 0x84F1, 0x843F, 0x8456, 0x8476, - 0x8479, 0x848F, 0x848D, 0x8465, 0x8451, 0x8440, 0x8486, 0x8467, - 0x8430, 0x844D, 0x847D, 0x845A, 0x8459, 0x8474, 0x8473, 0x845D, - 0x8507, 0x845E, 0x8437, 0x843A, 0x8434, 0x847A, 0x8443, 0x8478, - 0x8432, 0x8445, 0x8429, 0x83D9, 0x844B, 0x842F, 0x8442, 0x842D, - 0x845F, 0x8470, 0x8439, 0x844E, 0x844C, 0x8452, 0x846F, 0x84C5, - 0x848E, 0x843B, 0x8447, 0x8436, 0x8433, 0x8468, 0x847E, 0x8444, - 0x842B, 0x8460, 0x8454, 0x846E, 0x8450, 0x870B, 0x8704, 0x86F7, - 0x870C, 0x86FA, 0x86D6, 0x86F5, 0x874D, 0x86F8, 0x870E, 0x8709, - 0x8701, 0x86F6, 0x870D, 0x8705, 0x88D6, 0x88CB, 0x88CD, 0x88CE, - 0x88DE, 0x88DB, 0x88DA, 0x88CC, 0x88D0, 0x8985, 0x899B, 0x89DF, - 0x89E5, 0x89E4, 0x89E1, 0x89E0, 0x89E2, 0x89DC, 0x89E6, 0x8A76, - 0x8A86, 0x8A7F, 0x8A61, 0x8A3F, 0x8A77, 0x8A82, 0x8A84, 0x8A75, - 0x8A83, 0x8A81, 0x8A74, 0x8A7A, 0x8C3C, 0x8C4B, 0x8C4A, 0x8C65, - 0x8C64, 0x8C66, 0x8C86, 0x8C84, 0x8C85, 0x8CCC, 0x8D68, 0x8D69, - 0x8D91, 0x8D8C, 0x8D8E, 0x8D8F, 0x8D8D, 0x8D93, 0x8D94, 0x8D90, - 0x8D92, 0x8DF0, 0x8DE0, 0x8DEC, 0x8DF1, 0x8DEE, 0x8DD0, 0x8DE9, - 0x8DE3, 0x8DE2, 0x8DE7, 0x8DF2, 0x8DEB, 0x8DF4, 0x8F06, 0x8EFF, - 0x8F01, 0x8F00, 0x8F05, 0x8F07, 0x8F08, 0x8F02, 0x8F0B, 0x9052, - 0x903F, 0x74B3, 0x74AC, 0x7583, 0x7645, 0x764E, 0x7644, 0x76A3, - 0x76A5, 0x77A6, 0x77A4, 0x77A9, 0x77AF, 0x78F0, 0x78F8, 0x78F1, - 0x7A49, 0x7AC2, 0x7AF2, 0x7AF3, 0x7BFA, 0x7BF6, 0x7BFC, 0x7C18, - 0x7C08, 0x7C12, 0x7CDB, 0x7CDA, 0x7E2C, 0x7E4D, 0x7F46, 0x7FF6, - 0x802B, 0x8074, 0x9044, 0x9049, 0x903D, 0x9110, 0x910D, 0x910F, - 0x9111, 0x9116, 0x9114, 0x910B, 0x910E, 0x916E, 0x916F, 0x9248, - 0x9252, 0x9230, 0x923A, 0x9266, 0x9233, 0x9265, 0x925E, 0x9283, - 0x922E, 0x924A, 0x9246, 0x926D, 0x926C, 0x924F, 0x9260, 0x9267, -plane 72 -at 0x00 - 0x926F, 0x9236, 0x9261, 0x9270, 0x9231, 0x9254, 0x9263, 0x9250, - 0x9272, 0x924E, 0x9253, 0x924C, 0x9256, 0x9232, 0x959F, 0x959C, - 0x959E, 0x959B, 0x9692, 0x9693, 0x9691, 0x9697, 0x96CE, 0x96FA, - 0x96FD, 0x96F8, 0x96F5, 0x9773, 0x9777, 0x9778, 0x9772, 0x980F, - 0x980D, 0x980E, 0x98AC, 0x98F6, 0x98F9, 0x99AF, 0x99B2, 0x99B0, - 0x99B5, 0x9AAD, 0x9AAB, 0x9B5B, 0x9CEA, 0x9CED, 0x9CE7, 0x9E80, - 0x9EFD, 0x50E6, 0x50D4, 0x50D7, 0x50E8, 0x50F3, 0x50DB, 0x50EA, - 0x50DD, 0x50E4, 0x50D3, 0x50EC, 0x50F0, 0x50EF, 0x50E3, 0x50E0, - 0x51D8, 0x5280, 0x5281, 0x52E9, 0x52EB, 0x5330, 0x53AC, 0x5627, - 0x5615, 0x560C, 0x5612, 0x55FC, 0x560F, 0x561C, 0x5601, 0x5613, - 0x5602, 0x55FA, 0x561D, 0x5604, 0x55FF, 0x55F9, 0x5889, 0x587C, - 0x5890, 0x5898, 0x5886, 0x5881, 0x587F, 0x5874, 0x588B, 0x587A, - 0x5887, 0x5891, 0x588E, 0x5876, 0x5882, 0x5888, 0x587B, 0x5894, - 0x588F, 0x58FE, 0x596B, 0x5ADC, 0x5AEE, 0x5AE5, 0x5AD5, 0x5AEA, - 0x5ADA, 0x5AED, 0x5AEB, 0x5AF3, 0x5AE2, 0x5AE0, 0x5ADB, 0x5AEC, - 0x5ADE, 0x5ADD, 0x5AD9, 0x5AE8, 0x5ADF, 0x5B77, 0x5BE0, 0x81B8, - 0x81C8, 0x8592, 0x8593, 0x857F, 0x85AB, 0x8597, 0x85AC, 0x87CE, - 0x87CD, 0x87C1, 0x87B1, 0x87C7, 0x8940, 0x893F, 0x8939, 0x8943, - 0x89AB, 0x8B1F, 0x8B09, 0x8B0C, 0x8C40, 0x8C96, 0x8CF6, 0x8CF7, - 0x8E46, 0x8E4F, 0x8F3D, 0x8F41, 0x9366, 0x9378, 0x935D, 0x9369, - 0x5BE3, 0x5C63, 0x5D82, 0x5D80, 0x5D7D, 0x5D86, 0x5D7A, 0x5D81, - 0x5D77, 0x5D8A, 0x5D89, 0x5D88, 0x5D7E, 0x5D7C, 0x5D8D, 0x5D79, - 0x5D7F, 0x5E58, 0x5E59, 0x5E53, 0x5ED8, 0x5ED1, 0x5ED7, 0x5ECE, - 0x5EDC, 0x5ED5, 0x5ED9, 0x5ED2, 0x5ED4, 0x5F44, 0x5F43, 0x5F6F, - 0x5FB6, 0x612C, 0x6128, 0x6141, 0x615E, 0x6171, 0x6173, 0x6152, - 0x6153, 0x6172, 0x616C, 0x6180, 0x6174, 0x6154, 0x617A, 0x615B, - 0x6165, 0x613B, 0x616A, 0x6161, 0x6156, 0x6229, 0x6227, 0x622B, - 0x642B, 0x644D, 0x645B, 0x645D, 0x6474, 0x6476, 0x6472, 0x6473, - 0x647D, 0x6475, 0x6466, 0x64A6, 0x644E, 0x6482, 0x645E, 0x645C, - 0x644B, 0x6453, 0x6460, 0x6450, 0x647F, 0x643F, 0x646C, 0x646B, - 0x6459, 0x6465, 0x6477, 0x6573, 0x65A0, 0x66A1, 0x66A0, 0x669F, - 0x6705, 0x6704, 0x6722, 0x69B1, 0x69B6, 0x69C9, 0x69A0, 0x69CE, -plane 73 -at 0x00 - 0x6996, 0x69B0, 0x69AC, 0x69BC, 0x6991, 0x6999, 0x698E, 0x69A7, - 0x698D, 0x69A9, 0x69BE, 0x69AF, 0x69BF, 0x69C4, 0x69BD, 0x69A4, - 0x69D4, 0x69B9, 0x69CA, 0x699A, 0x69CF, 0x69B3, 0x6993, 0x69AA, - 0x69A1, 0x699E, 0x69D9, 0x6997, 0x6990, 0x69C2, 0x69B5, 0x69A5, - 0x69C6, 0x6B4A, 0x6B4D, 0x6B4B, 0x6B9E, 0x6B9F, 0x6BA0, 0x6BC3, - 0x6BC4, 0x6BFE, 0x6ECE, 0x6EF5, 0x6EF1, 0x6F03, 0x6F25, 0x6EF8, - 0x6F37, 0x6EFB, 0x6F2E, 0x6F09, 0x6F4E, 0x6F19, 0x6F1A, 0x6F27, - 0x6F18, 0x6F3B, 0x6F12, 0x6EED, 0x6F0A, 0x9374, 0x937D, 0x936E, - 0x9372, 0x9373, 0x9362, 0x9348, 0x9353, 0x935F, 0x9368, 0x937F, - 0x936B, 0x95C4, 0x96AF, 0x96AD, 0x96B2, 0x971A, 0x971B, 0x979B, - 0x979F, 0x9840, 0x9847, 0x98B7, 0x99A2, 0x9A00, 0x99F3, 0x99F5, - 0x9ABD, 0x9B00, 0x9B02, 0x9B34, 0x9B49, 0x9B9F, 0x6F36, 0x6F73, - 0x6EF9, 0x6EEE, 0x6F2D, 0x6F40, 0x6F30, 0x6F3C, 0x6F35, 0x6EEB, - 0x6F07, 0x6F0E, 0x6F43, 0x6F05, 0x6EFD, 0x6EF6, 0x6F39, 0x6F1C, - 0x6EFC, 0x6F3A, 0x6F1F, 0x6F0D, 0x6F1E, 0x6F08, 0x6F21, 0x7187, - 0x7190, 0x7189, 0x7180, 0x7185, 0x7182, 0x718F, 0x717B, 0x7186, - 0x7181, 0x7197, 0x7244, 0x7253, 0x7297, 0x7295, 0x7293, 0x7343, - 0x734D, 0x7351, 0x734C, 0x7462, 0x7473, 0x7471, 0x7475, 0x7472, - 0x7467, 0x746E, 0x7500, 0x7502, 0x7503, 0x757D, 0x7590, 0x7616, - 0x7608, 0x760C, 0x7615, 0x7611, 0x760A, 0x7614, 0x76B8, 0x7781, - 0x777C, 0x7785, 0x7782, 0x776E, 0x7780, 0x776F, 0x777E, 0x7783, - 0x78B2, 0x78AA, 0x78B4, 0x78AD, 0x78A8, 0x787E, 0x78AB, 0x789E, - 0x78A5, 0x78A0, 0x78AC, 0x78A2, 0x78A4, 0x7998, 0x798A, 0x798B, - 0x7996, 0x7995, 0x7994, 0x7993, 0x7997, 0x7988, 0x7992, 0x7990, - 0x7A2B, 0x7A4A, 0x7A30, 0x7A2F, 0x7A28, 0x7A26, 0x7AA8, 0x7AAB, - 0x7AAC, 0x7AEE, 0x7B88, 0x7B9C, 0x7B8A, 0x7B91, 0x7B90, 0x7B96, - 0x7B8D, 0x7B8C, 0x7B9B, 0x7B8E, 0x7B85, 0x7B98, 0x5284, 0x7B99, - 0x7BA4, 0x7B82, 0x7CBB, 0x7CBF, 0x7CBC, 0x7CBA, 0x7DA7, 0x7DB7, - 0x7DC2, 0x7DA3, 0x7DAA, 0x7DC1, 0x7DC0, 0x7DC5, 0x7D9D, 0x7DCE, - 0x7DC4, 0x7DC6, 0x7DCB, 0x7DCC, 0x7DAF, 0x7DB9, 0x7D96, 0x7DBC, - 0x7D9F, 0x7DA6, 0x7DAE, 0x7DA9, 0x7DA1, 0x7DC9, 0x7F73, 0x7FE2, - 0x7FE3, 0x7FE5, 0x7FDE, 0x9BA3, 0x9BCD, 0x9B99, 0x9B9D, 0x9D39, -plane 74 -at 0x00 - 0x9D44, 0x9D35, 0x9EAF, 0x512F, 0x9F8E, 0x569F, 0x569B, 0x569E, - 0x5696, 0x5694, 0x56A0, 0x5B3B, 0x5B3A, 0x5DC1, 0x5F4D, 0x5F5D, - 0x61F3, 0x64F6, 0x64E5, 0x64EA, 0x64E7, 0x6505, 0x64F9, 0x6AAB, - 0x6AED, 0x6AB2, 0x6AB0, 0x6AB5, 0x8024, 0x805D, 0x805C, 0x8189, - 0x8186, 0x8183, 0x8187, 0x818D, 0x818C, 0x818B, 0x8215, 0x8497, - 0x84A4, 0x84A1, 0x849F, 0x84BA, 0x84CE, 0x84C2, 0x84AC, 0x84AE, - 0x84AB, 0x84B9, 0x84B4, 0x84C1, 0x84CD, 0x84AA, 0x849A, 0x84B1, - 0x84D0, 0x849D, 0x84A7, 0x84BB, 0x84A2, 0x8494, 0x84C7, 0x84CC, - 0x849B, 0x84A9, 0x84AF, 0x84A8, 0x84D6, 0x8498, 0x84B6, 0x84CF, - 0x84A0, 0x84D7, 0x84D4, 0x84D2, 0x84DB, 0x84B0, 0x8491, 0x8661, - 0x8733, 0x8723, 0x8728, 0x876B, 0x8740, 0x872E, 0x871E, 0x8721, - 0x8719, 0x871B, 0x8743, 0x872C, 0x8741, 0x873E, 0x8746, 0x8720, - 0x8732, 0x872A, 0x872D, 0x873C, 0x8712, 0x873A, 0x8731, 0x8735, - 0x8742, 0x8726, 0x8727, 0x8738, 0x8724, 0x871A, 0x8730, 0x8711, - 0x88F7, 0x88E7, 0x88F1, 0x88F2, 0x88FA, 0x88FE, 0x88EE, 0x88FC, - 0x88F6, 0x88FB, 0x88F0, 0x88EC, 0x88EB, 0x899D, 0x89A1, 0x899F, - 0x899E, 0x89E9, 0x89EB, 0x89E8, 0x8AAB, 0x8A99, 0x8A8B, 0x8A92, - 0x8A8F, 0x8A96, 0x8C3D, 0x8C68, 0x8C69, 0x8CD5, 0x8CCF, 0x8CD7, - 0x8D96, 0x8E09, 0x8E02, 0x8DFF, 0x8E0D, 0x8DFD, 0x8E0A, 0x8E03, - 0x8E07, 0x8E06, 0x8E05, 0x8DFE, 0x8E00, 0x8E04, 0x8F10, 0x8F11, - 0x8F0E, 0x8F0D, 0x9123, 0x911C, 0x9120, 0x9122, 0x911F, 0x911D, - 0x911A, 0x9124, 0x9121, 0x911B, 0x917A, 0x9172, 0x9179, 0x9173, - 0x92A5, 0x92A4, 0x9276, 0x929B, 0x927A, 0x92A0, 0x9294, 0x92AA, - 0x928D, 0x6ABE, 0x6AC1, 0x6AC8, 0x6AC0, 0x6ABC, 0x6AB1, 0x6AC4, - 0x6ABF, 0x7008, 0x7003, 0x6FFD, 0x7010, 0x7002, 0x7013, 0x71FA, - 0x7200, 0x74B9, 0x74BC, 0x765B, 0x7651, 0x764F, 0x76EB, 0x77B8, - 0x77B9, 0x77C1, 0x77C0, 0x77BE, 0x790B, 0x7907, 0x790A, 0x7908, - 0x790D, 0x7906, 0x92A6, 0x929A, 0x92AB, 0x9279, 0x9297, 0x927F, - 0x92A3, 0x92EE, 0x928E, 0x9282, 0x9295, 0x92A2, 0x927D, 0x9288, - 0x92A1, 0x928A, 0x9286, 0x928C, 0x9299, 0x92A7, 0x927E, 0x9287, - 0x92A9, 0x929D, 0x928B, 0x922D, 0x969E, 0x96A1, 0x96FF, 0x9758, - 0x977D, 0x977A, 0x977E, 0x9783, 0x9780, 0x9782, 0x977B, 0x9784, -plane 75 -at 0x00 - 0x9781, 0x977F, 0x97CE, 0x97CD, 0x9816, 0x98AD, 0x98AE, 0x9902, - 0x9900, 0x9907, 0x999D, 0x999C, 0x99C3, 0x99B9, 0x99BB, 0x99BA, - 0x99C2, 0x99BD, 0x99C7, 0x9AB1, 0x9AE3, 0x9AE7, 0x9B3E, 0x9B3F, - 0x9B60, 0x9B61, 0x9B5F, 0x9CF1, 0x9CF2, 0x9CF5, 0x9EA7, 0x50FF, - 0x5103, 0x5130, 0x50F8, 0x5106, 0x5107, 0x50F6, 0x50FE, 0x510B, - 0x510C, 0x50FD, 0x510A, 0x528B, 0x528C, 0x52F1, 0x52EF, 0x5648, - 0x5642, 0x564C, 0x5635, 0x5641, 0x564A, 0x5649, 0x5646, 0x5658, - 0x565A, 0x5640, 0x5633, 0x563D, 0x562C, 0x563E, 0x5638, 0x562A, - 0x563A, 0x571A, 0x58AB, 0x589D, 0x58B1, 0x58A0, 0x58A3, 0x58AF, - 0x58AC, 0x58A5, 0x58A1, 0x58FF, 0x5AFF, 0x5AF4, 0x5AFD, 0x5AF7, - 0x5AF6, 0x5B03, 0x5AF8, 0x5B02, 0x5AF9, 0x5B01, 0x5B07, 0x5B05, - 0x5B0F, 0x5C67, 0x5D99, 0x5D97, 0x5D9F, 0x5D92, 0x5DA2, 0x5D93, - 0x5D95, 0x5DA0, 0x5D9C, 0x5DA1, 0x5D9A, 0x5D9E, 0x5E69, 0x5E5D, - 0x5E60, 0x5E5C, 0x7DF3, 0x5EDB, 0x5EDE, 0x5EE1, 0x5F49, 0x5FB2, - 0x618B, 0x6183, 0x6179, 0x61B1, 0x61B0, 0x61A2, 0x6189, 0x7915, - 0x79AF, 0x7AF5, 0x7C2E, 0x7C1B, 0x7C1A, 0x7C24, 0x7CE6, 0x7CE3, - 0x7E5D, 0x7E4F, 0x7E66, 0x7E5B, 0x7F47, 0x7FB4, 0x7FFA, 0x802E, - 0x81CE, 0x8219, 0x85CC, 0x85B2, 0x85BB, 0x85C1, 0x87E9, 0x87EE, - 0x87F0, 0x87D6, 0x880E, 0x87DA, 0x8948, 0x894A, 0x894E, 0x894D, - 0x619B, 0x6193, 0x61AF, 0x61AD, 0x619F, 0x6192, 0x61AA, 0x61A1, - 0x618D, 0x6166, 0x61B3, 0x622D, 0x646E, 0x6470, 0x6496, 0x64A0, - 0x6485, 0x6497, 0x649C, 0x648F, 0x648B, 0x648A, 0x648C, 0x64A3, - 0x649F, 0x6468, 0x64B1, 0x6498, 0x6576, 0x657A, 0x6579, 0x657B, - 0x65B2, 0x65B3, 0x66B5, 0x66B0, 0x66A9, 0x66B2, 0x66B7, 0x66AA, - 0x66AF, 0x6A00, 0x6A06, 0x6A17, 0x69E5, 0x69F8, 0x6A15, 0x69F1, - 0x69E4, 0x6A20, 0x69FF, 0x69EC, 0x69E2, 0x6A1B, 0x6A1D, 0x69FE, - 0x6A27, 0x69F2, 0x69EE, 0x6A14, 0x69F7, 0x69E7, 0x6A40, 0x6A08, - 0x69E6, 0x69FB, 0x6A0D, 0x69FC, 0x69EB, 0x6A09, 0x6A04, 0x6A18, - 0x6A25, 0x6A0F, 0x69F6, 0x6A26, 0x6A07, 0x69F4, 0x6A16, 0x6B51, - 0x6BA5, 0x6BA3, 0x6BA2, 0x6BA6, 0x6C01, 0x6C00, 0x6BFF, 0x6C02, - 0x6F41, 0x6F26, 0x6F7E, 0x6F87, 0x6FC6, 0x6F92, 0x6F8D, 0x6F89, - 0x6F8C, 0x6F62, 0x6F4F, 0x6F85, 0x6F5A, 0x6F96, 0x6F76, 0x6F6C, -plane 76 -at 0x00 - 0x6F82, 0x6F55, 0x6F72, 0x6F52, 0x6F50, 0x6F57, 0x6F94, 0x6F93, - 0x6F5D, 0x6F00, 0x6F61, 0x6F6B, 0x6F7D, 0x6F67, 0x6F90, 0x6F53, - 0x6F8B, 0x6F69, 0x6F7F, 0x6F95, 0x6F63, 0x6F77, 0x6F6A, 0x6F7B, - 0x71B2, 0x71AF, 0x719B, 0x71B0, 0x71A0, 0x719A, 0x71A9, 0x71B5, - 0x719D, 0x71A5, 0x719E, 0x71A4, 0x71A1, 0x71AA, 0x719C, 0x71A7, - 0x71B3, 0x7298, 0x729A, 0x7358, 0x7352, 0x735E, 0x735F, 0x7360, - 0x735D, 0x735B, 0x7361, 0x735A, 0x7359, 0x89B1, 0x89B0, 0x89B3, - 0x8B38, 0x8B32, 0x8B2D, 0x8B34, 0x8B29, 0x8C74, 0x8D03, 0x8DA9, - 0x8E58, 0x8EBF, 0x8EC1, 0x8F4A, 0x8FAC, 0x9089, 0x913D, 0x913C, - 0x91A9, 0x93A0, 0x9390, 0x9393, 0x938B, 0x93AD, 0x93BB, 0x93B8, - 0x939C, 0x95D8, 0x95D7, 0x975D, 0x97A9, 0x97DA, 0x7362, 0x7487, - 0x7489, 0x748A, 0x7486, 0x7481, 0x747D, 0x7485, 0x7488, 0x747C, - 0x7479, 0x7508, 0x7507, 0x757E, 0x7625, 0x761E, 0x7619, 0x761D, - 0x761C, 0x7623, 0x761A, 0x7628, 0x761B, 0x769C, 0x769D, 0x769E, - 0x769B, 0x778D, 0x778F, 0x7789, 0x7788, 0x78CD, 0x78BB, 0x78CF, - 0x78CC, 0x78D1, 0x78CE, 0x78D4, 0x78C8, 0x78C3, 0x78C4, 0x78C9, - 0x799A, 0x79A1, 0x79A0, 0x799C, 0x79A2, 0x799B, 0x6B76, 0x7A39, - 0x7AB2, 0x7AB4, 0x7AB3, 0x7BB7, 0x7BCB, 0x7BBE, 0x7BAC, 0x7BCE, - 0x7BAF, 0x7BB9, 0x7BCA, 0x7BB5, 0x7CC5, 0x7CC8, 0x7CCC, 0x7CCB, - 0x7DF7, 0x7DDB, 0x7DEA, 0x7DE7, 0x7DD7, 0x7DE1, 0x7E03, 0x7DFA, - 0x7DE6, 0x7DF6, 0x7DF1, 0x7DF0, 0x7DEE, 0x7DDF, 0x7F76, 0x7FAC, - 0x7FB0, 0x7FAD, 0x7FED, 0x7FEB, 0x7FEA, 0x7FEC, 0x7FE6, 0x7FE8, - 0x8064, 0x8067, 0x81A3, 0x819F, 0x819E, 0x8195, 0x81A2, 0x8199, - 0x8197, 0x8216, 0x824F, 0x8253, 0x8252, 0x8250, 0x824E, 0x8251, - 0x8524, 0x853B, 0x850F, 0x8500, 0x8529, 0x850E, 0x8509, 0x850D, - 0x851F, 0x850A, 0x8527, 0x851C, 0x84FB, 0x852B, 0x84FA, 0x8508, - 0x850C, 0x84F4, 0x852A, 0x84F2, 0x8515, 0x84F7, 0x84EB, 0x84F3, - 0x84FC, 0x8512, 0x84EA, 0x84E9, 0x8516, 0x84FE, 0x8528, 0x851D, - 0x852E, 0x8502, 0x84FD, 0x851E, 0x84F6, 0x8531, 0x8526, 0x84E7, - 0x84E8, 0x84F0, 0x84EF, 0x84F9, 0x8518, 0x8520, 0x8530, 0x850B, - 0x8519, 0x852F, 0x8662, 0x9854, 0x9855, 0x984B, 0x983F, 0x98B9, - 0x9938, 0x9936, 0x9940, 0x993B, 0x9939, 0x99A4, 0x9A08, 0x9A0C, -plane 77 -at 0x00 - 0x9A10, 0x9B07, 0x9BD2, 0x9BC2, 0x9BBB, 0x9BCC, 0x9BCB, 0x9D4D, - 0x9D63, 0x9D4E, 0x9D50, 0x9D55, 0x9D5E, 0x9E90, 0x9EB2, 0x9EB1, - 0x9ECA, 0x9F02, 0x9F27, 0x9F26, 0x8756, 0x8763, 0x8764, 0x8777, - 0x87E1, 0x8773, 0x8758, 0x8754, 0x875B, 0x8752, 0x8761, 0x875A, - 0x8751, 0x875E, 0x876D, 0x876A, 0x8750, 0x874E, 0x875F, 0x875D, - 0x876F, 0x876C, 0x877A, 0x876E, 0x875C, 0x8765, 0x874F, 0x877B, - 0x8775, 0x8762, 0x8767, 0x8769, 0x885A, 0x8905, 0x890C, 0x8914, - 0x890B, 0x8917, 0x8918, 0x8919, 0x8906, 0x8916, 0x8911, 0x890E, - 0x8909, 0x89A2, 0x89A4, 0x89A3, 0x89ED, 0x89F0, 0x89EC, 0x8ACF, - 0x8AC6, 0x8AB8, 0x8AD3, 0x8AD1, 0x8AD4, 0x8AD5, 0x8ABB, 0x8AD7, - 0x8ABE, 0x8AC0, 0x8AC5, 0x8AD8, 0x8AC3, 0x8ABA, 0x8ABD, 0x8AD9, - 0x8C3E, 0x8C4D, 0x8C8F, 0x8CE5, 0x8CDF, 0x8CD9, 0x8CE8, 0x8CDA, - 0x8CDD, 0x8CE7, 0x8DA0, 0x8D9C, 0x8DA1, 0x8D9B, 0x8E20, 0x8E23, - 0x8E25, 0x8E24, 0x8E2E, 0x8E15, 0x8E1B, 0x8E16, 0x8E11, 0x8E19, - 0x8E26, 0x8E27, 0x8E14, 0x8E12, 0x8E18, 0x8E13, 0x8E1C, 0x8E17, - 0x8E1A, 0x8F2C, 0x8F24, 0x8F18, 0x8F1A, 0x8F20, 0x8F23, 0x8F16, - 0x8F17, 0x9073, 0x9070, 0x906F, 0x9067, 0x906B, 0x912F, 0x912B, - 0x9129, 0x912A, 0x9132, 0x9126, 0x912E, 0x9185, 0x9186, 0x918A, - 0x9181, 0x9182, 0x9184, 0x9180, 0x92D0, 0x92C3, 0x92C4, 0x92C0, - 0x92D9, 0x92B6, 0x92CF, 0x92F1, 0x92DF, 0x92D8, 0x92E9, 0x92D7, - 0x92DD, 0x92CC, 0x92EF, 0x92C2, 0x92E8, 0x92CA, 0x92C8, 0x92CE, - 0x92E6, 0x92CD, 0x92D5, 0x92C9, 0x92E0, 0x92DE, 0x92E7, 0x92D1, - 0x92D3, 0x56AF, 0x58E0, 0x58DC, 0x5B39, 0x5B7C, 0x5BF3, 0x5C6B, - 0x5DC4, 0x650B, 0x6508, 0x650A, 0x65DC, 0x66E1, 0x66DF, 0x6ACE, - 0x6AD4, 0x6AE3, 0x6AD7, 0x6AE2, 0x6AD8, 0x6AD5, 0x6AD2, 0x701E, - 0x702C, 0x7025, 0x6FF3, 0x7204, 0x7208, 0x7215, 0x74C4, 0x74C9, - 0x74C7, 0x74C8, 0x92B5, 0x92E1, 0x92C6, 0x92B4, 0x957C, 0x95AC, - 0x95AB, 0x95AE, 0x95B0, 0x96A4, 0x96A2, 0x96D3, 0x9705, 0x9708, - 0x9702, 0x975A, 0x978A, 0x978E, 0x9788, 0x97D0, 0x97CF, 0x981E, - 0x981D, 0x9826, 0x9829, 0x9828, 0x9820, 0x981B, 0x9827, 0x98B2, - 0x9908, 0x98FA, 0x9911, 0x9914, 0x9916, 0x9917, 0x9915, 0x99DC, - 0x99CD, 0x99CF, 0x99D3, 0x99D4, 0x99CE, 0x99C9, 0x99D6, 0x99D8, -plane 78 -at 0x00 - 0x99CB, 0x99D7, 0x99CC, 0x9AB3, 0x9AEC, 0x9AEB, 0x9AF3, 0x9AF2, - 0x9AF1, 0x9B46, 0x9B43, 0x9B67, 0x9B74, 0x9B71, 0x9B66, 0x9B76, - 0x9B75, 0x9B70, 0x9B68, 0x9B64, 0x9B6C, 0x9CFC, 0x9CFA, 0x9CFD, - 0x9CFF, 0x9CF7, 0x9D07, 0x9D00, 0x9CF9, 0x9CFB, 0x9D08, 0x9D05, - 0x9D04, 0x9E83, 0x9ED3, 0x9F0F, 0x9F10, 0x511C, 0x5113, 0x5117, - 0x511A, 0x5111, 0x51DE, 0x5334, 0x53E1, 0x5670, 0x5660, 0x566E, - 0x5673, 0x5666, 0x5663, 0x566D, 0x5672, 0x565E, 0x5677, 0x571C, - 0x571B, 0x58C8, 0x58BD, 0x58C9, 0x58BF, 0x58BA, 0x58C2, 0x58BC, - 0x58C6, 0x5B17, 0x5B19, 0x5B1B, 0x5B21, 0x5B14, 0x5B13, 0x5B10, - 0x5B16, 0x5B28, 0x5B1A, 0x5B20, 0x5B1E, 0x5BEF, 0x5DAC, 0x5DB1, - 0x5DA9, 0x5DA7, 0x5DB5, 0x5DB0, 0x5DAE, 0x5DAA, 0x5DA8, 0x5DB2, - 0x5DAD, 0x5DAF, 0x5DB4, 0x5E67, 0x5E68, 0x5E66, 0x5E6F, 0x5EE9, - 0x5EE7, 0x5EE6, 0x5EE8, 0x5EE5, 0x5F4B, 0x5FBC, 0x619D, 0x61A8, - 0x6196, 0x61C5, 0x61B4, 0x61C6, 0x61C1, 0x61CC, 0x61BA, 0x76A9, - 0x77C6, 0x77C5, 0x7918, 0x791A, 0x7920, 0x7A66, 0x7A64, 0x7A6A, - 0x7C35, 0x7C34, 0x7E6C, 0x7E6E, 0x7E71, 0x81D4, 0x81D6, 0x821A, - 0x8262, 0x8265, 0x8276, 0x85DB, 0x85D6, 0x85E7, 0x85F4, 0x87FD, - 0x87D5, 0x8807, 0x880F, 0x87F8, 0x8987, 0x89B5, 0x89F5, 0x8B3F, - 0x61BF, 0x61B8, 0x618C, 0x64D7, 0x64D6, 0x64D0, 0x64CF, 0x64C9, - 0x64BD, 0x6489, 0x64C3, 0x64DB, 0x64F3, 0x64D9, 0x6533, 0x657F, - 0x657C, 0x65A2, 0x66C8, 0x66BE, 0x66C0, 0x66CA, 0x66CB, 0x66CF, - 0x66BD, 0x66BB, 0x66BA, 0x66CC, 0x6723, 0x6A34, 0x6A66, 0x6A49, - 0x6A67, 0x6A32, 0x6A68, 0x6A3E, 0x6A5D, 0x6A6D, 0x6A76, 0x6A5B, - 0x6A51, 0x6A28, 0x6A5A, 0x6A3B, 0x6A3F, 0x6A41, 0x6A6A, 0x6A64, - 0x6A50, 0x6A4F, 0x6A54, 0x6A6F, 0x6A69, 0x6A60, 0x6A3C, 0x6A5E, - 0x6A56, 0x6A55, 0x6A4D, 0x6A4E, 0x6A46, 0x6B55, 0x6B54, 0x6B56, - 0x6BA7, 0x6BAA, 0x6BAB, 0x6BC8, 0x6BC7, 0x6C04, 0x6C03, 0x6C06, - 0x6FAD, 0x6FCB, 0x6FA3, 0x6FC7, 0x6FBC, 0x6FCE, 0x6FC8, 0x6F5E, - 0x6FC4, 0x6FBD, 0x6F9E, 0x6FCA, 0x6FA8, 0x7004, 0x6FA5, 0x6FAE, - 0x6FBA, 0x6FAC, 0x6FAA, 0x6FCF, 0x6FBF, 0x6FB8, 0x6FA2, 0x6FC9, - 0x6FAB, 0x6FCD, 0x6FAF, 0x6FB2, 0x6FB0, 0x71C5, 0x71C2, 0x71BF, - 0x71B8, 0x71D6, 0x71C0, 0x71C1, 0x71CB, 0x71D4, 0x71CA, 0x71C7, -plane 79 -at 0x00 - 0x71CF, 0x71BD, 0x71D8, 0x71BC, 0x71C6, 0x71DA, 0x71DB, 0x729D, - 0x729E, 0x7369, 0x7366, 0x7367, 0x736C, 0x7365, 0x736B, 0x736A, - 0x747F, 0x749A, 0x74A0, 0x7494, 0x7492, 0x7495, 0x74A1, 0x750B, - 0x7580, 0x762F, 0x762D, 0x7631, 0x763D, 0x7633, 0x763C, 0x7635, - 0x7632, 0x7630, 0x76BB, 0x76E6, 0x779A, 0x779D, 0x77A1, 0x779C, - 0x779B, 0x77A2, 0x77A3, 0x7795, 0x7799, 0x8B43, 0x8B4C, 0x8D0B, - 0x8E6B, 0x8E68, 0x8E70, 0x8E75, 0x8E77, 0x8EC3, 0x93E9, 0x93EA, - 0x93CB, 0x93C5, 0x93C6, 0x93ED, 0x93D3, 0x93E5, 0x93DB, 0x93EB, - 0x93E0, 0x93C1, 0x95DD, 0x97B2, 0x97B4, 0x97B1, 0x97B5, 0x97F2, - 0x9856, 0x9944, 0x9A26, 0x9A1F, 0x9A18, 0x9A21, 0x7797, 0x78DD, - 0x78E9, 0x78E5, 0x78EA, 0x78DE, 0x78E3, 0x78DB, 0x78E1, 0x78E2, - 0x78ED, 0x78DF, 0x78E0, 0x79A4, 0x7A44, 0x7A48, 0x7A47, 0x7AB6, - 0x7AB8, 0x7AB5, 0x7AB1, 0x7AB7, 0x7BDE, 0x7BE3, 0x7BE7, 0x7BDD, - 0x7BD5, 0x7BE5, 0x7BDA, 0x7BE8, 0x7BF9, 0x7BD4, 0x7BEA, 0x7BE2, - 0x7BDC, 0x7BEB, 0x7BD8, 0x7BDF, 0x7CD2, 0x7CD4, 0x7CD7, 0x7CD0, - 0x7CD1, 0x7E12, 0x7E21, 0x7E17, 0x7E0C, 0x7E1F, 0x7E20, 0x7E13, - 0x7E0E, 0x7E1C, 0x7E15, 0x7E1A, 0x7E22, 0x7E0B, 0x7E0F, 0x7E16, - 0x7E0D, 0x7E14, 0x7E25, 0x7E24, 0x7F43, 0x7F7B, 0x7F7C, 0x7F7A, - 0x7FB1, 0x7FEF, 0x802A, 0x8029, 0x806C, 0x81B1, 0x81A6, 0x81AE, - 0x81B9, 0x81B5, 0x81AB, 0x81B0, 0x81AC, 0x81B4, 0x81B2, 0x81B7, - 0x81A7, 0x81F2, 0x8255, 0x8256, 0x8257, 0x8556, 0x8545, 0x856B, - 0x854D, 0x8553, 0x8561, 0x8558, 0x8540, 0x8546, 0x8564, 0x8541, - 0x8562, 0x8544, 0x8551, 0x8547, 0x8563, 0x853E, 0x855B, 0x8571, - 0x854E, 0x856E, 0x8575, 0x8555, 0x8567, 0x8560, 0x858C, 0x8566, - 0x855D, 0x8554, 0x8565, 0x856C, 0x8663, 0x8665, 0x8664, 0x879B, - 0x878F, 0x8797, 0x8793, 0x8792, 0x8788, 0x8781, 0x8796, 0x8798, - 0x8779, 0x8787, 0x87A3, 0x8785, 0x8790, 0x8791, 0x879D, 0x8784, - 0x8794, 0x879C, 0x879A, 0x8789, 0x891E, 0x8926, 0x8930, 0x892D, - 0x892E, 0x8927, 0x8931, 0x8922, 0x8929, 0x8923, 0x892F, 0x892C, - 0x891F, 0x89F1, 0x8AE0, 0x9A17, 0x9B09, 0x9BC5, 0x9BDF, 0x9BE3, - 0x9BE9, 0x9BEE, 0x9D66, 0x9D7A, 0x9D6E, 0x9D91, 0x9D83, 0x9D76, - 0x9D7E, 0x9D6D, 0x9E95, 0x9EE3, 0x9F03, 0x9F04, 0x9F17, 0x5136, -plane 80 -at 0x00 - 0x5336, 0x5B42, 0x5B44, 0x5B46, 0x5B7E, 0x5DCA, 0x5DC8, 0x5DCC, - 0x5EF0, 0x6585, 0x66E5, 0x66E7, 0x8AE2, 0x8AF2, 0x8AF4, 0x8AF5, - 0x8ADD, 0x8B14, 0x8AE4, 0x8ADF, 0x8AF0, 0x8AC8, 0x8ADE, 0x8AE1, - 0x8AE8, 0x8AFF, 0x8AEF, 0x8AFB, 0x8C91, 0x8C92, 0x8C90, 0x8CF5, - 0x8CEE, 0x8CF1, 0x8CF0, 0x8CF3, 0x8D6C, 0x8D6E, 0x8DA5, 0x8DA7, - 0x8E33, 0x8E3E, 0x8E38, 0x8E40, 0x8E45, 0x8E36, 0x8E3C, 0x8E3D, - 0x8E41, 0x8E30, 0x8E3F, 0x8EBD, 0x8F36, 0x8F2E, 0x8F35, 0x8F32, - 0x8F39, 0x8F37, 0x8F34, 0x9076, 0x9079, 0x907B, 0x9086, 0x90FA, - 0x9133, 0x9135, 0x9136, 0x9193, 0x9190, 0x9191, 0x918D, 0x918F, - 0x9327, 0x931E, 0x9308, 0x931F, 0x9306, 0x930F, 0x937A, 0x9338, - 0x933C, 0x931B, 0x9323, 0x9312, 0x9301, 0x9346, 0x932D, 0x930E, - 0x930D, 0x92CB, 0x931D, 0x92FA, 0x9325, 0x9313, 0x92F9, 0x92F7, - 0x9334, 0x9302, 0x9324, 0x92FF, 0x9329, 0x9339, 0x9335, 0x932A, - 0x9314, 0x930C, 0x930B, 0x92FE, 0x9309, 0x9300, 0x92FB, 0x9316, - 0x95BC, 0x95CD, 0x95BE, 0x95B9, 0x95BA, 0x95B6, 0x95BF, 0x95B5, - 0x95BD, 0x96A9, 0x96D4, 0x970B, 0x9712, 0x9710, 0x9799, 0x9797, - 0x9794, 0x97F0, 0x97F8, 0x9835, 0x982F, 0x9832, 0x9924, 0x991F, - 0x9927, 0x9929, 0x999E, 0x99EE, 0x99EC, 0x99E5, 0x99E4, 0x99F0, - 0x99E3, 0x99EA, 0x99E9, 0x99E7, 0x9AB9, 0x9ABF, 0x9AB4, 0x9ABB, - 0x9AF6, 0x9AFA, 0x9AF9, 0x9AF7, 0x9B33, 0x9B80, 0x9B85, 0x9B87, - 0x9B7C, 0x9B7E, 0x9B7B, 0x9B82, 0x9B93, 0x9B92, 0x9B90, 0x9B7A, - 0x9B95, 0x6AF4, 0x6AE9, 0x703D, 0x7036, 0x7216, 0x7212, 0x720F, - 0x7217, 0x7211, 0x720B, 0x74CD, 0x74D0, 0x74CC, 0x74CE, 0x74D1, - 0x7589, 0x7A6F, 0x7C4B, 0x7C44, 0x7C55, 0x7E7F, 0x8B71, 0x802F, - 0x807A, 0x807B, 0x807C, 0x85FC, 0x8610, 0x8602, 0x85EE, 0x8603, - 0x860D, 0x8613, 0x9B7D, 0x9B88, 0x9D25, 0x9D17, 0x9D20, 0x9D1E, - 0x9D14, 0x9D29, 0x9D1D, 0x9D18, 0x9D22, 0x9D10, 0x9D19, 0x9D1F, - 0x9E88, 0x9E86, 0x9E87, 0x9EAE, 0x9EAD, 0x9ED5, 0x9ED6, 0x9EFA, - 0x9F12, 0x9F3D, 0x5126, 0x5125, 0x5122, 0x5124, 0x5120, 0x5129, - 0x52F4, 0x5693, 0x568C, 0x568D, 0x5686, 0x5684, 0x5683, 0x567E, - 0x5682, 0x567F, 0x5681, 0x58D6, 0x58D4, 0x58CF, 0x58D2, 0x5B2D, - 0x5B25, 0x5B32, 0x5B23, 0x5B2C, 0x5B27, 0x5B26, 0x5B2F, 0x5B2E, -plane 81 -at 0x00 - 0x5B7B, 0x5BF1, 0x5BF2, 0x5DB7, 0x5E6C, 0x5E6A, 0x5FBE, 0x5FBB, - 0x61C3, 0x61B5, 0x61BC, 0x61E7, 0x61E0, 0x61E5, 0x61E4, 0x61E8, - 0x61DE, 0x64EF, 0x64E9, 0x64E3, 0x64EB, 0x64E4, 0x64E8, 0x6581, - 0x6580, 0x65B6, 0x65DA, 0x66D2, 0x6A8D, 0x6A96, 0x6A81, 0x6AA5, - 0x6A89, 0x6A9F, 0x6A9B, 0x6AA1, 0x6A9E, 0x6A87, 0x6A93, 0x6A8E, - 0x6A95, 0x6A83, 0x6AA8, 0x6AA4, 0x6A91, 0x6A7F, 0x6AA6, 0x6A9A, - 0x6A85, 0x6A8C, 0x6A92, 0x6B5B, 0x6BAD, 0x6C09, 0x6FCC, 0x6FA9, - 0x6FF4, 0x6FD4, 0x6FE3, 0x6FDC, 0x6FED, 0x6FE7, 0x6FE6, 0x6FDE, - 0x6FF2, 0x6FDD, 0x6FE2, 0x6FE8, 0x71E1, 0x71F1, 0x71E8, 0x71F2, - 0x71E4, 0x71F0, 0x71E2, 0x7373, 0x736E, 0x736F, 0x7497, 0x74B2, - 0x74AB, 0x7490, 0x74AA, 0x74AD, 0x74B1, 0x74A5, 0x74AF, 0x7510, - 0x7511, 0x7512, 0x750F, 0x7584, 0x7643, 0x7648, 0x7649, 0x7647, - 0x76A4, 0x76E9, 0x77B5, 0x77AB, 0x77B2, 0x77B7, 0x77B6, 0x8608, - 0x860F, 0x8818, 0x8812, 0x8967, 0x8965, 0x89BB, 0x8B69, 0x8B62, - 0x8B6E, 0x8B61, 0x8B64, 0x8B4D, 0x8C51, 0x8E83, 0x8EC6, 0x941F, - 0x9404, 0x9417, 0x9408, 0x9405, 0x93F3, 0x941E, 0x9402, 0x941A, - 0x941B, 0x9427, 0x941C, 0x96B5, 0x9733, 0x9734, 0x9731, 0x97B8, - 0x77B4, 0x77B1, 0x77A8, 0x77F0, 0x78F3, 0x78FD, 0x7902, 0x78FB, - 0x78FC, 0x78F2, 0x7905, 0x78F9, 0x78FE, 0x7904, 0x79AB, 0x79A8, - 0x7A5C, 0x7A5B, 0x7A56, 0x7A58, 0x7A54, 0x7A5A, 0x7ABE, 0x7AC0, - 0x7AC1, 0x7C05, 0x7C0F, 0x7BF2, 0x7C00, 0x7BFF, 0x7BFB, 0x7C0E, - 0x7BF4, 0x7C0B, 0x7BF3, 0x7C02, 0x7C09, 0x7C03, 0x7C01, 0x7BF8, - 0x7BFD, 0x7C06, 0x7BF0, 0x7BF1, 0x7C10, 0x7C0A, 0x7CE8, 0x7E2D, - 0x7E3C, 0x7E42, 0x7E33, 0x9848, 0x7E38, 0x7E2A, 0x7E49, 0x7E40, - 0x7E47, 0x7E29, 0x7E4C, 0x7E30, 0x7E3B, 0x7E36, 0x7E44, 0x7E3A, - 0x7F45, 0x7F7F, 0x7F7E, 0x7F7D, 0x7FF4, 0x7FF2, 0x802C, 0x81BB, - 0x81C4, 0x81CC, 0x81CA, 0x81C5, 0x81C7, 0x81BC, 0x81E9, 0x825B, - 0x825A, 0x825C, 0x8583, 0x8580, 0x858F, 0x85A7, 0x8595, 0x85A0, - 0x858B, 0x85A3, 0x857B, 0x85A4, 0x859A, 0x859E, 0x8577, 0x857C, - 0x8589, 0x85A1, 0x857A, 0x8578, 0x8557, 0x858E, 0x8596, 0x8586, - 0x858D, 0x8599, 0x859D, 0x8581, 0x85A2, 0x8582, 0x8588, 0x8585, - 0x8579, 0x8576, 0x8598, 0x8590, 0x859F, 0x8668, 0x87BE, 0x87AA, -plane 82 -at 0x00 - 0x87AD, 0x87C5, 0x87B0, 0x87AC, 0x87B9, 0x87B5, 0x87BC, 0x87AE, - 0x87C9, 0x87C3, 0x87C2, 0x87CC, 0x87B7, 0x87AF, 0x87C4, 0x87CA, - 0x87B4, 0x87B6, 0x87BF, 0x87B8, 0x87BD, 0x87DE, 0x87B2, 0x8935, - 0x8933, 0x893C, 0x893E, 0x8941, 0x8952, 0x8937, 0x8942, 0x89AD, - 0x89AF, 0x89AE, 0x89F2, 0x89F3, 0x8B1E, 0x97BA, 0x97FC, 0x98C3, - 0x994D, 0x9A2F, 0x9AC9, 0x9AC8, 0x9AC4, 0x9B2A, 0x9B38, 0x9B50, - 0x9C0A, 0x9BFB, 0x9C04, 0x9BFC, 0x9BFE, 0x9C02, 0x9BF6, 0x9C1B, - 0x9BF9, 0x9C15, 0x9C10, 0x9BFF, 0x9C00, 0x9C0C, 0x9D95, 0x9DA5, - 0x9E98, 0x9EC1, 0x9F5A, 0x5164, 0x56BB, 0x58E6, 0x8B18, 0x8B16, - 0x8B11, 0x8B05, 0x8B0B, 0x8B22, 0x8B0F, 0x8B12, 0x8B15, 0x8B07, - 0x8B0D, 0x8B08, 0x8B06, 0x8B1C, 0x8B13, 0x8B1A, 0x8C4F, 0x8C70, - 0x8C72, 0x8C71, 0x8C6F, 0x8C95, 0x8C94, 0x8CF9, 0x8D6F, 0x8E4E, - 0x8E4D, 0x8E53, 0x8E50, 0x8E4C, 0x8E47, 0x8F43, 0x8F40, 0x9085, - 0x907E, 0x9138, 0x919A, 0x91A2, 0x919B, 0x9199, 0x919F, 0x91A1, - 0x919D, 0x91A0, 0x93A1, 0x9383, 0x93AF, 0x9364, 0x9356, 0x9347, - 0x937C, 0x9358, 0x935C, 0x9376, 0x9349, 0x9350, 0x9351, 0x9360, - 0x936D, 0x938F, 0x934C, 0x936A, 0x9379, 0x9357, 0x9355, 0x9352, - 0x934F, 0x9371, 0x9377, 0x937B, 0x9361, 0x935E, 0x9363, 0x9367, - 0x9380, 0x934E, 0x9359, 0x95C7, 0x95C0, 0x95C9, 0x95C3, 0x95C5, - 0x95B7, 0x96AE, 0x96B0, 0x96AC, 0x9720, 0x971F, 0x9718, 0x971D, - 0x9719, 0x979A, 0x97A1, 0x979C, 0x979E, 0x979D, 0x97D5, 0x97D4, - 0x97F1, 0x9841, 0x9844, 0x984A, 0x9849, 0x9845, 0x9843, 0x9925, - 0x992B, 0x992C, 0x992A, 0x9933, 0x9932, 0x992F, 0x992D, 0x9931, - 0x9930, 0x9998, 0x99A3, 0x99A1, 0x9A02, 0x99FA, 0x99F4, 0x99F7, - 0x99F9, 0x99F8, 0x99F6, 0x99FB, 0x99FD, 0x99FE, 0x99FC, 0x9A03, - 0x9ABE, 0x9AFE, 0x9AFD, 0x9B01, 0x9AFC, 0x9B48, 0x9B9A, 0x9BA8, - 0x9B9E, 0x9B9B, 0x9BA6, 0x9BA1, 0x9BA5, 0x9BA4, 0x9B86, 0x9BA2, - 0x9BA0, 0x9BAF, 0x9D33, 0x9D41, 0x9D67, 0x9D36, 0x9D2E, 0x9D2F, - 0x9D31, 0x9D38, 0x9D30, 0x5B49, 0x5BF7, 0x5DD0, 0x5FC2, 0x6511, - 0x6AFF, 0x6AFE, 0x6AFD, 0x6B01, 0x704B, 0x704D, 0x7047, 0x74D3, - 0x7668, 0x7667, 0x77D1, 0x7930, 0x7932, 0x792E, 0x9F9D, 0x7AC9, - 0x7AC8, 0x7C56, 0x7C51, 0x7E85, 0x7E89, 0x7E8E, 0x7E84, 0x826A, -plane 83 -at 0x00 - 0x862B, 0x862F, 0x8628, 0x8616, 0x9D45, 0x9D42, 0x9D43, 0x9D3E, - 0x9D37, 0x9D40, 0x9D3D, 0x7FF5, 0x9D2D, 0x9E8A, 0x9E89, 0x9E8D, - 0x9EB0, 0x9EC8, 0x9EDA, 0x9EFB, 0x9EFF, 0x9F24, 0x9F23, 0x9F22, - 0x9F54, 0x9FA0, 0x5131, 0x512D, 0x512E, 0x5698, 0x569C, 0x5697, - 0x569A, 0x569D, 0x5699, 0x5970, 0x5B3C, 0x5C69, 0x5C6A, 0x5DC0, - 0x5E6D, 0x5E6E, 0x61D8, 0x61DF, 0x61ED, 0x61EE, 0x61F1, 0x61EA, - 0x61F0, 0x61EB, 0x61D6, 0x61E9, 0x64FF, 0x6504, 0x64FD, 0x64F8, - 0x6501, 0x6503, 0x64FC, 0x6594, 0x65DB, 0x66DA, 0x66DB, 0x66D8, - 0x6AC5, 0x6AB9, 0x6ABD, 0x6AE1, 0x6AC6, 0x6ABA, 0x6AB6, 0x6AB7, - 0x6AC7, 0x6AB4, 0x6AAD, 0x6B5E, 0x6BC9, 0x6C0B, 0x7007, 0x700C, - 0x700D, 0x7001, 0x7005, 0x7014, 0x700E, 0x6FFF, 0x7000, 0x6FFB, - 0x7026, 0x6FFC, 0x6FF7, 0x700A, 0x7201, 0x71FF, 0x71F9, 0x7203, - 0x71FD, 0x7376, 0x74B8, 0x74C0, 0x74B5, 0x74C1, 0x74BE, 0x74B6, - 0x74BB, 0x74C2, 0x7514, 0x7513, 0x765C, 0x7664, 0x7659, 0x7650, - 0x7653, 0x7657, 0x765A, 0x76A6, 0x76BD, 0x76EC, 0x77C2, 0x77BA, - 0x78FF, 0x790C, 0x7913, 0x7914, 0x7909, 0x7910, 0x7912, 0x7911, - 0x79AD, 0x79AC, 0x7A5F, 0x7C1C, 0x7C29, 0x7C19, 0x7C20, 0x7C1F, - 0x7C2D, 0x7C1D, 0x7C26, 0x7C28, 0x7C22, 0x7C25, 0x7C30, 0x7E5C, - 0x7E50, 0x7E56, 0x7E63, 0x7E58, 0x7E62, 0x7E5F, 0x7E51, 0x7E60, - 0x7E57, 0x7E53, 0x7FB5, 0x7FB3, 0x7FF7, 0x7FF8, 0x8075, 0x81D1, - 0x81D2, 0x8615, 0x861D, 0x881A, 0x89BC, 0x8B75, 0x8B7C, 0x8D11, - 0x8D12, 0x8F5C, 0x91BB, 0x93F4, 0x942D, 0x96E4, 0x9737, 0x9736, - 0x9767, 0x97BE, 0x97BD, 0x97E2, 0x9868, 0x9866, 0x98C8, 0x98CA, - 0x98C7, 0x98DC, 0x994F, 0x99A9, 0x9A3C, 0x9A3B, 0x9ACE, 0x9B14, - 0x9B53, 0x9C2E, 0x81D0, 0x825F, 0x825E, 0x85B4, 0x85C6, 0x85C0, - 0x85C3, 0x85C2, 0x85B3, 0x85B5, 0x85BD, 0x85C7, 0x85C4, 0x85BF, - 0x85CB, 0x85CE, 0x85C8, 0x85C5, 0x85B1, 0x85B6, 0x85D2, 0x8624, - 0x85B8, 0x85B7, 0x85BE, 0x8669, 0x87E7, 0x87E6, 0x87E2, 0x87DB, - 0x87EB, 0x87EA, 0x87E5, 0x87DF, 0x87F3, 0x87E4, 0x87D4, 0x87DC, - 0x87D3, 0x87ED, 0x87D8, 0x87E3, 0x87A4, 0x87D7, 0x87D9, 0x8801, - 0x87F4, 0x87E8, 0x87DD, 0x8953, 0x894B, 0x894F, 0x894C, 0x8946, - 0x8950, 0x8951, 0x8949, 0x8B2A, 0x8B27, 0x8B23, 0x8B33, 0x8B30, -plane 84 -at 0x00 - 0x8B35, 0x8B47, 0x8B2F, 0x8B3C, 0x8B3E, 0x8B31, 0x8B25, 0x8B37, - 0x8B26, 0x8B36, 0x8B2E, 0x8B24, 0x8B3B, 0x8B3D, 0x8B3A, 0x8C42, - 0x8C75, 0x8C99, 0x8C98, 0x8C97, 0x8CFE, 0x8D04, 0x8D02, 0x8D00, - 0x8E5C, 0x8E62, 0x8E60, 0x8E57, 0x8E56, 0x8E5E, 0x8E65, 0x8E67, - 0x8E5B, 0x8E5A, 0x8E61, 0x8E5D, 0x8E69, 0x8E54, 0x8F46, 0x8F47, - 0x8F48, 0x8F4B, 0x9128, 0x913A, 0x913B, 0x913E, 0x91A8, 0x91A5, - 0x91A7, 0x91AF, 0x91AA, 0x93B5, 0x938C, 0x9392, 0x93B7, 0x939B, - 0x939D, 0x9389, 0x93A7, 0x938E, 0x93AA, 0x939E, 0x93A6, 0x9395, - 0x9388, 0x9399, 0x939F, 0x938D, 0x93B1, 0x9391, 0x93B2, 0x93A4, - 0x93A8, 0x93B4, 0x93A3, 0x93A5, 0x95D2, 0x95D3, 0x95D1, 0x96B3, - 0x96D7, 0x96DA, 0x5DC2, 0x96DF, 0x96D8, 0x96DD, 0x9723, 0x9722, - 0x9725, 0x97AC, 0x97AE, 0x97A8, 0x97AB, 0x97A4, 0x97AA, 0x9C1F, - 0x9DB0, 0x9DBD, 0x9DAE, 0x9DC4, 0x9E7B, 0x9E9E, 0x9F05, 0x9F69, - 0x9FA1, 0x56C7, 0x571D, 0x5B4A, 0x5DD3, 0x5F72, 0x6202, 0x6235, - 0x6527, 0x651E, 0x651F, 0x6B07, 0x6B06, 0x7054, 0x721C, 0x7220, - 0x7AF8, 0x7C5D, 0x7C58, 0x7E92, 0x7F4E, 0x8827, 0x8B81, 0x8B83, - 0x97A2, 0x97A5, 0x97D7, 0x97D9, 0x97D6, 0x97D8, 0x97FA, 0x9850, - 0x9851, 0x9852, 0x98B8, 0x9941, 0x993C, 0x993A, 0x9A0F, 0x9A0B, - 0x9A09, 0x9A0D, 0x9A04, 0x9A11, 0x9A0A, 0x9A05, 0x9A07, 0x9A06, - 0x9AC0, 0x9ADC, 0x9B08, 0x9B04, 0x9B05, 0x9B29, 0x9B35, 0x9B4A, - 0x9B4C, 0x9B4B, 0x9BC7, 0x9BC6, 0x9BC3, 0x9BBF, 0x9BC1, 0x9BB5, - 0x9BB8, 0x9BD3, 0x9BB6, 0x9BC4, 0x9BB9, 0x9BBD, 0x9D5C, 0x9D53, - 0x9D4F, 0x9D4A, 0x9D5B, 0x9D4B, 0x9D59, 0x9D56, 0x9D4C, 0x9D57, - 0x9D52, 0x9D54, 0x9D5F, 0x9D58, 0x9D5A, 0x9E8E, 0x9E8C, 0x9EDF, - 0x9F01, 0x9F00, 0x9F16, 0x9F25, 0x9F2B, 0x9F2A, 0x9F29, 0x9F28, - 0x9F4C, 0x9F55, 0x5134, 0x5135, 0x5296, 0x52F7, 0x53B4, 0x56AB, - 0x56AD, 0x56A6, 0x56A7, 0x56AA, 0x56AC, 0x58DA, 0x58DD, 0x58DB, - 0x5912, 0x5B3D, 0x5B3E, 0x5B3F, 0x5DC3, 0x5E70, 0x5FBF, 0x61FB, - 0x6507, 0x6510, 0x650D, 0x6509, 0x650C, 0x650E, 0x6584, 0x65DE, - 0x65DD, 0x66DE, 0x6AE7, 0x6AE0, 0x6ACC, 0x6AD1, 0x6AD9, 0x6ACB, - 0x6ADF, 0x6ADC, 0x6AD0, 0x6AEB, 0x6ACF, 0x6ACD, 0x6ADE, 0x6B60, - 0x6BB0, 0x6C0C, 0x7019, 0x7027, 0x7020, 0x7016, 0x702B, 0x7021, -plane 85 -at 0x00 - 0x7022, 0x7023, 0x7029, 0x7017, 0x7024, 0x701C, 0x702A, 0x720C, - 0x720A, 0x7207, 0x7202, 0x7205, 0x72A5, 0x72A6, 0x72A4, 0x72A3, - 0x72A1, 0x74CB, 0x74C5, 0x74B7, 0x74C3, 0x7516, 0x7660, 0x77C9, - 0x77CA, 0x77C4, 0x77F1, 0x791D, 0x791B, 0x8C44, 0x9442, 0x944D, - 0x9454, 0x944E, 0x9443, 0x973C, 0x9740, 0x97C0, 0x995A, 0x9A51, - 0x9ADD, 0x9C38, 0x9C45, 0x9C3A, 0x9C35, 0x9EF1, 0x9F93, 0x529A, - 0x8641, 0x5DD7, 0x6528, 0x7053, 0x7059, 0x7221, 0x766F, 0x7937, - 0x79B5, 0x7C62, 0x7C5E, 0x7CF5, 0x863D, 0x882D, 0x7921, 0x791C, - 0x7917, 0x791E, 0x79B0, 0x7A67, 0x7A68, 0x7C33, 0x7C3C, 0x7C39, - 0x7C2C, 0x7C3B, 0x7CEC, 0x7CEA, 0x7E76, 0x7E75, 0x7E78, 0x7E70, - 0x7E77, 0x7E6F, 0x7E7A, 0x7E72, 0x7E74, 0x7E68, 0x7F4B, 0x7F4A, - 0x7F83, 0x7F86, 0x7FB7, 0x7FFD, 0x7FFE, 0x8078, 0x81D7, 0x81D5, - 0x8264, 0x8261, 0x8263, 0x85EB, 0x85F1, 0x85ED, 0x85D9, 0x85E1, - 0x85E8, 0x85DA, 0x85D7, 0x85EC, 0x85F2, 0x85F8, 0x85D8, 0x85DF, - 0x85E3, 0x85DC, 0x85D1, 0x85F0, 0x85E6, 0x85EF, 0x85DE, 0x85E2, - 0x8800, 0x87FA, 0x8803, 0x87F6, 0x87F7, 0x8809, 0x880C, 0x880B, - 0x8806, 0x87FC, 0x8808, 0x87FF, 0x880A, 0x8802, 0x8962, 0x895A, - 0x895B, 0x8957, 0x8961, 0x895C, 0x8958, 0x895D, 0x8959, 0x8988, - 0x89B7, 0x89B6, 0x89F6, 0x8B50, 0x8B48, 0x8B4A, 0x8B40, 0x8B53, - 0x8B56, 0x8B54, 0x8B4B, 0x8B55, 0x8B51, 0x8B42, 0x8B52, 0x8B57, - 0x8C43, 0x8C77, 0x8C76, 0x8C9A, 0x8D06, 0x8D07, 0x8D09, 0x8DAC, - 0x8DAA, 0x8DAD, 0x8DAB, 0x8E6D, 0x8E78, 0x8E73, 0x8E6A, 0x8E6F, - 0x8E7B, 0x8EC2, 0x8F52, 0x8F51, 0x8F4F, 0x8F50, 0x8F53, 0x8FB4, - 0x9140, 0x913F, 0x91B0, 0x91AD, 0x93DE, 0x93C7, 0x93CF, 0x93C2, - 0x93DA, 0x93D0, 0x93F9, 0x93EC, 0x93CC, 0x93D9, 0x93A9, 0x93E6, - 0x93CA, 0x93D4, 0x93EE, 0x93E3, 0x93D5, 0x93C4, 0x93CE, 0x93C0, - 0x93D2, 0x93E7, 0x957D, 0x95DA, 0x95DB, 0x96E1, 0x9729, 0x972B, - 0x972C, 0x9728, 0x9726, 0x8989, 0x8B8D, 0x8B87, 0x8B90, 0x8D1A, - 0x8E99, 0x945F, 0x9456, 0x9461, 0x945B, 0x945A, 0x945C, 0x9465, - 0x9741, 0x986E, 0x986C, 0x986D, 0x99AA, 0x9A5C, 0x9A58, 0x9ADE, - 0x9C4F, 0x9C51, 0x9C53, 0x9DFC, 0x9F39, 0x513E, 0x56D2, 0x5B4F, - 0x6B14, 0x7A72, 0x7A73, 0x8B91, 0x97B3, 0x97B7, 0x97B6, 0x97DD, -plane 86 -at 0x00 - 0x97DE, 0x97DF, 0x985C, 0x9859, 0x985D, 0x9857, 0x98BF, 0x98BD, - 0x98BB, 0x98BE, 0x9948, 0x9947, 0x9943, 0x99A6, 0x99A7, 0x9A1A, - 0x9A15, 0x9A25, 0x9A1D, 0x9A24, 0x9A1B, 0x9A22, 0x9A20, 0x9A27, - 0x9A23, 0x9A1E, 0x9A1C, 0x9A14, 0x9AC2, 0x9B0B, 0x9B0A, 0x9B0E, - 0x9B0C, 0x9B37, 0x9BEA, 0x9BEB, 0x9BE0, 0x9BDE, 0x9BE4, 0x9BE6, - 0x9BE2, 0x9BF0, 0x9BD4, 0x9BD7, 0x9BEC, 0x9BDC, 0x9BD9, 0x9BE5, - 0x9BD5, 0x9BE1, 0x9BDA, 0x9D77, 0x9D81, 0x9D8A, 0x9D84, 0x9D88, - 0x9D71, 0x9D80, 0x9D78, 0x9D86, 0x9D8B, 0x9D8C, 0x9D7D, 0x9D6B, - 0x9D74, 0x9D75, 0x9D70, 0x9D69, 0x9D85, 0x9D73, 0x9D7B, 0x9D82, - 0x9D6F, 0x9D79, 0x9D7F, 0x9D87, 0x9D68, 0x9E94, 0x9E91, 0x9EC0, - 0x9EFC, 0x9F2D, 0x9F40, 0x9F41, 0x9F4D, 0x9F56, 0x9F57, 0x9F58, - 0x5337, 0x56B2, 0x56B5, 0x56B3, 0x58E3, 0x5B45, 0x5DC6, 0x5DC7, - 0x5EEE, 0x5EEF, 0x5FC0, 0x5FC1, 0x61F9, 0x6517, 0x6516, 0x6515, - 0x6513, 0x65DF, 0x66E8, 0x66E3, 0x66E4, 0x6AF3, 0x6AF0, 0x6AEA, - 0x6AE8, 0x6AF9, 0x6AF1, 0x6AEE, 0x6AEF, 0x703C, 0x7035, 0x702F, - 0x7037, 0x7034, 0x7031, 0x7042, 0x7038, 0x703F, 0x703A, 0x7039, - 0x7040, 0x703B, 0x7033, 0x7041, 0x7213, 0x7214, 0x72A8, 0x737D, - 0x737C, 0x74BA, 0x76AB, 0x76AA, 0x76BE, 0x76ED, 0x77CC, 0x77CE, - 0x77CF, 0x77CD, 0x77F2, 0x7925, 0x7923, 0x7927, 0x7928, 0x7924, - 0x7929, 0x91BF, 0x946C, 0x96E6, 0x9745, 0x97C8, 0x97E4, 0x995D, - 0x9B21, 0x9B2C, 0x9B57, 0x9C5D, 0x9C61, 0x9C65, 0x9E08, 0x9F45, - 0x6205, 0x66EF, 0x6B1B, 0x6B1D, 0x7225, 0x7224, 0x7C6D, 0x8642, - 0x8649, 0x8978, 0x898A, 0x8B97, 0x8C9B, 0x8D1C, 0x8EA2, 0x9C6C, - 0x9C6F, 0x9E0E, 0x79B2, 0x7A6E, 0x7A6C, 0x7A6D, 0x7AF7, 0x7C49, - 0x7C48, 0x7C4A, 0x7C47, 0x7C45, 0x7CEE, 0x7E7B, 0x7E7E, 0x7E81, - 0x7E80, 0x7FBA, 0x7FFF, 0x8079, 0x81DB, 0x81D9, 0x820B, 0x8268, - 0x8269, 0x8622, 0x85FF, 0x8601, 0x85FE, 0x861B, 0x8600, 0x85F6, - 0x8604, 0x8609, 0x8605, 0x860C, 0x85FD, 0x8819, 0x8810, 0x8811, - 0x8817, 0x8813, 0x8816, 0x8963, 0x8966, 0x89B9, 0x89F7, 0x8B60, - 0x8B6A, 0x8B5D, 0x8B68, 0x8B63, 0x8B65, 0x8B67, 0x8B6D, 0x8DAE, - 0x8E86, 0x8E88, 0x8E84, 0x8F59, 0x8F56, 0x8F57, 0x8F55, 0x8F58, - 0x8F5A, 0x908D, 0x9143, 0x9141, 0x91B7, 0x91B5, 0x91B2, 0x91B3, -plane 87 -at 0x00 - 0x940B, 0x9413, 0x93FB, 0x9420, 0x940F, 0x9414, 0x93FE, 0x9415, - 0x9410, 0x9428, 0x9419, 0x940D, 0x93F5, 0x9400, 0x93F7, 0x9407, - 0x940E, 0x9416, 0x9412, 0x93FA, 0x9409, 0x93F8, 0x940A, 0x93FF, - 0x93FC, 0x940C, 0x93F6, 0x9411, 0x9406, 0x95DE, 0x95E0, 0x95DF, - 0x972E, 0x972F, 0x97B9, 0x97BB, 0x97FD, 0x97FE, 0x9860, 0x9862, - 0x9863, 0x985F, 0x98C1, 0x98C2, 0x9950, 0x994E, 0x9959, 0x994C, - 0x994B, 0x9953, 0x9A32, 0x9A34, 0x9A31, 0x9A2C, 0x9A2A, 0x9A36, - 0x9A29, 0x9A2E, 0x9A38, 0x9A2D, 0x9AC7, 0x9ACA, 0x9AC6, 0x9B10, - 0x9B12, 0x9B11, 0x9C0B, 0x9C08, 0x9BF7, 0x9C05, 0x9C12, 0x9BF8, - 0x9C40, 0x9C07, 0x9C0E, 0x9C06, 0x9C17, 0x9C14, 0x9C09, 0x9D9F, - 0x9D99, 0x9DA4, 0x9D9D, 0x9D92, 0x9D98, 0x9D90, 0x9D9B, 0x9F08, - 0x9F1D, 0x9FA3, 0x5F60, 0x6B1C, 0x7CF3, 0x8B9B, 0x8EA7, 0x91C4, - 0x947A, 0x9A61, 0x9A63, 0x9AD7, 0x9C76, 0x9FA5, 0x7067, 0x72AB, - 0x864A, 0x897D, 0x8B9D, 0x8C53, 0x8F65, 0x947B, 0x98CD, 0x98DD, - 0x9B30, 0x9E16, 0x96E7, 0x9E18, 0x9EA2, 0x9F7C, 0x7E9E, 0x9484, - 0x9DA0, 0x9D94, 0x9D9C, 0x9DAA, 0x9D97, 0x9DA1, 0x9D9A, 0x9DA2, - 0x9DA8, 0x9D9E, 0x9DA3, 0x9DBF, 0x9DA9, 0x9D96, 0x9DA6, 0x9DA7, - 0x9E99, 0x9E9B, 0x9E9A, 0x9EE5, 0x9EE4, 0x9EE7, 0x9EE6, 0x9F30, - 0x9F2E, 0x9F5B, 0x9F60, 0x9F5E, 0x9F5D, 0x9F59, 0x9F91, 0x513A, - 0x5139, 0x5298, 0x5297, 0x56C3, 0x56BD, 0x56BE, 0x5B48, 0x5B47, - 0x5DCB, 0x5DCF, 0x5EF1, 0x61FD, 0x651B, 0x6B02, 0x6AFC, 0x6B03, - 0x6AF8, 0x6B00, 0x7043, 0x7044, 0x704A, 0x7048, 0x7049, 0x7045, - 0x7046, 0x721D, 0x721A, 0x7219, 0x737E, 0x7517, 0x766A, 0x77D0, - 0x792D, 0x7931, 0x792F, 0x7C54, 0x7C53, 0x7CF2, 0x7E8A, 0x7E87, - 0x7E88, 0x7E8B, 0x7E86, 0x7E8D, 0x7F4D, 0x7FBB, 0x8030, 0x81DD, - 0x8618, 0x862A, 0x8626, 0x861F, 0x8623, 0x861C, 0x8619, 0x8627, - 0x862E, 0x8621, 0x8620, 0x8629, 0x861E, 0x8625, 0x8829, 0x881D, - 0x881B, 0x8820, 0x8824, 0x881C, 0x882B, 0x884A, 0x896D, 0x8969, - 0x896E, 0x896B, 0x89FA, 0x8B79, 0x8B78, 0x8B45, 0x8B7A, 0x8B7B, - 0x8D10, 0x8D14, 0x8DAF, 0x8E8E, 0x8E8C, 0x8F5E, 0x8F5B, 0x8F5D, - 0x9146, 0x9144, 0x9145, 0x91B9, 0x943F, 0x943B, 0x9436, 0x9429, - 0x943D, 0x943C, 0x9430, 0x9439, 0x942A, 0x9437, 0x942C, 0x9440, -plane 88 -at 0x00 - 0x9431, 0x95E5, 0x95E4, 0x95E3, 0x9735, 0x973A, 0x97BF, 0x97E1, - 0x9864, 0x98C9, 0x98C6, 0x98C0, 0x9958, 0x9956, 0x9A39, 0x9A3D, - 0x9A46, 0x9A44, 0x9A42, 0x9A41, 0x9A3A, 0x9E1C, 0x7C71, 0x97CA, - 0x9EA3, 0x9C7B, 0x9F97, 0x9750, 0x4E40, 0x4E41, 0x4E5A, 0x4E02, - 0x4E29, 0x5202, 0x5DDC, 0x5342, 0x536A, 0x5B52, 0x5FC4, 0x624C, - 0x72AD, 0x4E12, 0x4E2F, 0x4E96, 0x4ED0, 0x5142, 0x5183, 0x5383, - 0x53B8, 0x5928, 0x5C23, 0x5E01, 0x5F00, 0x706C, 0x9A3F, 0x9ACD, - 0x9B15, 0x9B17, 0x9B18, 0x9B16, 0x9B3A, 0x9B52, 0x9C2B, 0x9C1D, - 0x9C1C, 0x9C2C, 0x9C23, 0x9C28, 0x9C29, 0x9C24, 0x9C21, 0x9DB7, - 0x9DB6, 0x9DBC, 0x9DC1, 0x9DC7, 0x9DCA, 0x9DCF, 0x9DBE, 0x9DC5, - 0x9DC3, 0x9DBB, 0x9DB5, 0x9DCE, 0x9DB9, 0x9DBA, 0x9DAC, 0x9DC8, - 0x9DB1, 0x9DAD, 0x9DCC, 0x9DB3, 0x9DCD, 0x9DB2, 0x9E7A, 0x9E9C, - 0x9EEB, 0x9EEE, 0x9EED, 0x9F1B, 0x9F18, 0x9F1A, 0x9F31, 0x9F4E, - 0x9F65, 0x9F64, 0x9F92, 0x4EB9, 0x56C6, 0x56C5, 0x56CB, 0x5971, - 0x5B4B, 0x5B4C, 0x5DD5, 0x5DD1, 0x5EF2, 0x6521, 0x6520, 0x6526, - 0x6522, 0x6B0B, 0x6B08, 0x6B09, 0x6C0D, 0x7055, 0x7056, 0x7057, - 0x7052, 0x721E, 0x721F, 0x72A9, 0x737F, 0x74D8, 0x74D5, 0x74D9, - 0x74D7, 0x766D, 0x76AD, 0x7935, 0x79B4, 0x7A70, 0x7A71, 0x7C57, - 0x7C5C, 0x7C59, 0x7C5B, 0x7C5A, 0x7CF4, 0x7CF1, 0x7E91, 0x7F4F, - 0x7F87, 0x81DE, 0x826B, 0x8634, 0x8635, 0x8633, 0x862C, 0x8632, - 0x8636, 0x882C, 0x8828, 0x8826, 0x882A, 0x8825, 0x8971, 0x89BF, - 0x89BE, 0x89FB, 0x8B7E, 0x8B84, 0x8B82, 0x8B86, 0x8B85, 0x8B7F, - 0x8D15, 0x8E95, 0x8E94, 0x8E9A, 0x8E92, 0x8E90, 0x8E96, 0x8E97, - 0x8F60, 0x8F62, 0x9147, 0x944C, 0x9450, 0x944A, 0x944B, 0x944F, - 0x9447, 0x9445, 0x9448, 0x9449, 0x9446, 0x973F, 0x97E3, 0x986A, - 0x9869, 0x98CB, 0x9954, 0x995B, 0x9A4E, 0x9A53, 0x9A54, 0x9A4C, - 0x9A4F, 0x9A48, 0x9A4A, 0x722B, 0x5188, 0x8279, 0x8FB6, 0x4E17, - 0x4EE2, 0x4EDB, 0x51AD, 0x51F7, 0x531B, 0x5388, 0x5387, 0x53CF, - 0x53FD, 0x53E7, 0x56DC, 0x56D9, 0x5725, 0x5727, 0x5933, 0x5C13, - 0x5C75, 0x66F1, 0x7F52, 0x4E51, 0x4E6A, 0x4F0C, 0x4EFE, 0x4F1B, - 0x5173, 0x518E, 0x52A5, 0x52A7, 0x9A49, 0x9A52, 0x9A50, 0x9AD0, - 0x9B19, 0x9B2B, 0x9B3B, 0x9B56, 0x9B55, 0x9C46, 0x9C48, 0x9C3F, -plane 89 -at 0x00 - 0x9C44, 0x9C39, 0x9C33, 0x9C41, 0x9C3C, 0x9C37, 0x9C34, 0x9C32, - 0x9C3D, 0x9C36, 0x9DDB, 0x9DD2, 0x9DDE, 0x9DDA, 0x9DCB, 0x9DD0, - 0x9DDC, 0x9DD1, 0x9DDF, 0x9DE9, 0x9DD9, 0x9DD8, 0x9DD6, 0x9DF5, - 0x9DD5, 0x9DDD, 0x9EB6, 0x9EF0, 0x9F35, 0x9F33, 0x9F32, 0x9F42, - 0x9F6B, 0x9F95, 0x9FA2, 0x513D, 0x5299, 0x58E8, 0x58E7, 0x5972, - 0x5B4D, 0x5DD8, 0x882F, 0x5F4F, 0x6201, 0x6203, 0x6204, 0x6529, - 0x6525, 0x6596, 0x66EB, 0x6B11, 0x6B12, 0x6B0F, 0x6BCA, 0x705B, - 0x705A, 0x7222, 0x7382, 0x7381, 0x7383, 0x7670, 0x77D4, 0x7C67, - 0x7C66, 0x7E95, 0x826C, 0x863A, 0x8640, 0x8639, 0x863C, 0x8631, - 0x863B, 0x863E, 0x8830, 0x8832, 0x882E, 0x8833, 0x8976, 0x8974, - 0x8973, 0x89FE, 0x8B8C, 0x8B8E, 0x8B8B, 0x8B88, 0x8C45, 0x8D19, - 0x8E98, 0x8F64, 0x8F63, 0x91BC, 0x9462, 0x9455, 0x945D, 0x9457, - 0x945E, 0x97C4, 0x97C5, 0x9800, 0x9A56, 0x9A59, 0x9B1E, 0x9B1F, - 0x9B20, 0x9C52, 0x9C58, 0x9C50, 0x9C4A, 0x9C4D, 0x9C4B, 0x9C55, - 0x9C59, 0x9C4C, 0x9C4E, 0x9DFB, 0x9DF7, 0x9DEF, 0x9DE3, 0x9DEB, - 0x9DF8, 0x9DE4, 0x9DF6, 0x9DE1, 0x9DEE, 0x9DE6, 0x9DF2, 0x9DF0, - 0x9DE2, 0x9DEC, 0x9DF4, 0x9DF3, 0x9DE8, 0x9DED, 0x9EC2, 0x9ED0, - 0x9EF2, 0x9EF3, 0x9F06, 0x9F1C, 0x9F38, 0x9F37, 0x9F36, 0x9F43, - 0x9F4F, 0x52A4, 0x53BD, 0x5402, 0x572B, 0x591B, 0x5935, 0x5C17, - 0x5C70, 0x5C7D, 0x5DE9, 0x5F19, 0x5F1C, 0x5F75, 0x5FC8, 0x6C12, - 0x72B3, 0x7390, 0x7536, 0x8281, 0x8FB8, 0x4E23, 0x4F2E, 0x514F, - 0x51BA, 0x5222, 0x52AF, 0x52B0, 0x52B1, 0x5364, 0x53D3, 0x593F, - 0x598B, 0x5991, 0x9F71, 0x9F70, 0x9F6E, 0x9F6F, 0x56D3, 0x56CD, - 0x5B4E, 0x5C6D, 0x652D, 0x66ED, 0x66EE, 0x6B13, 0x705F, 0x7061, - 0x705D, 0x7060, 0x7223, 0x74DB, 0x74E5, 0x77D5, 0x7938, 0x79B7, - 0x79B6, 0x7C6A, 0x7E97, 0x7F89, 0x826D, 0x8643, 0x8838, 0x8837, - 0x8835, 0x884B, 0x8B94, 0x8B95, 0x8E9E, 0x8E9F, 0x8EA0, 0x8E9D, - 0x91BE, 0x91BD, 0x91C2, 0x946B, 0x9468, 0x9469, 0x96E5, 0x9746, - 0x9743, 0x9747, 0x97C7, 0x97E5, 0x9A5E, 0x9AD5, 0x9B59, 0x9C63, - 0x9C67, 0x9C66, 0x9C62, 0x9C5E, 0x9C60, 0x9E02, 0x9DFE, 0x9E07, - 0x9E03, 0x9E06, 0x9E05, 0x9E00, 0x9E01, 0x9E09, 0x9DFF, 0x9DFD, - 0x9E04, 0x9EA0, 0x9F1E, 0x9F46, 0x9F74, 0x9F75, 0x9F76, 0x56D4, -plane 90 -at 0x00 - 0x652E, 0x65B8, 0x6B18, 0x6B19, 0x6B17, 0x6B1A, 0x7062, 0x7226, - 0x72AA, 0x77D8, 0x77D9, 0x7939, 0x7C69, 0x7C6B, 0x7CF6, 0x7E9A, - 0x7E98, 0x7E9B, 0x7E99, 0x81E0, 0x81E1, 0x8646, 0x8647, 0x8648, - 0x8979, 0x897A, 0x897C, 0x897B, 0x89FF, 0x8B98, 0x8B99, 0x8EA5, - 0x8EA4, 0x8EA3, 0x946E, 0x946D, 0x946F, 0x9471, 0x9473, 0x9749, - 0x9872, 0x995F, 0x9C68, 0x9C6E, 0x9C6D, 0x9E0B, 0x9E0D, 0x9E10, - 0x9E0F, 0x9E12, 0x9E11, 0x9EA1, 0x9EF5, 0x9F09, 0x9F47, 0x9F78, - 0x9F7B, 0x9F7A, 0x9F79, 0x571E, 0x7066, 0x7C6F, 0x883C, 0x8DB2, - 0x8EA6, 0x91C3, 0x9474, 0x9478, 0x9476, 0x9475, 0x9A60, 0x9C74, - 0x9C73, 0x9C71, 0x9C75, 0x9E14, 0x9E13, 0x9EF6, 0x9F0A, 0x5995, - 0x5B8A, 0x5C87, 0x5E0D, 0x5E8E, 0x5F7A, 0x6290, 0x629A, 0x653C, - 0x653A, 0x6598, 0x6765, 0x79C2, 0x809E, 0x81EB, 0x8289, 0x8296, - 0x8287, 0x8FC0, 0x8FC3, 0x9578, 0x9625, 0x4E75, 0x4E74, 0x4F99, - 0x4F71, 0x5153, 0x51BF, 0x51C0, 0x51EE, 0x523D, 0x52BD, 0x530C, - 0x9FA4, 0x7068, 0x7065, 0x7CF7, 0x866A, 0x883E, 0x883D, 0x883F, - 0x8B9E, 0x8C9C, 0x8EA9, 0x8EC9, 0x974B, 0x9873, 0x9874, 0x98CC, - 0x9961, 0x99AB, 0x9A64, 0x9A66, 0x9A67, 0x9B24, 0x9E15, 0x9E17, - 0x9F48, 0x6207, 0x6B1E, 0x7227, 0x864C, 0x8EA8, 0x9482, 0x9480, - 0x9481, 0x9A69, 0x9A68, 0x9B2E, 0x9E19, 0x7229, 0x864B, 0x8B9F, - 0x9483, 0x9C79, 0x9EB7, 0x7675, 0x9A6B, 0x9C7A, 0x9E1D, 0x7069, - 0x706A, 0x9EA4, 0x9F7E, 0x9F49, 0x9F98, 0x7881, 0x92B9, 0x88CF, - 0x58BB, 0x6052, 0x7CA7, 0x5AFA, 0x2554, 0x2566, 0x2557, 0x2560, - 0x256C, 0x2563, 0x255A, 0x2569, 0x255D, 0x2552, 0x2564, 0x2555, - 0x255E, 0x256A, 0x2561, 0x2558, 0x2567, 0x255B, 0x2553, 0x2565, - 0x2556, 0x255F, 0x256B, 0x2562, 0x2559, 0x2568, 0x255C, 0x2551, - 0x2550, 0x2554, 0x2557, 0x255A, 0x255D, 0x2588, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane 91 -at 0x00 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0x7F37, 0x53C0, 0x546E, - 0x5483, 0x545E, 0x545D, 0x577E, 0x5779, 0x577A, 0x576C, 0x5787, - 0x591D, 0x5946, 0x5943, 0x5B61, 0x5B66, 0x5B90, 0x5C29, 0x5CB2, - 0x5CC0, 0x601F, 0x5FE2, 0x6616, 0x65F9, 0x6788, 0x679B, 0x676E, - 0x679E, 0x6B24, 0x6B7D, 0x6CE6, 0x6CCB, 0x6CB5, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0x7097, 0x709B, 0x726B, 0x72D5, 0x7543, - 0x759C, 0x77E4, 0x7ACE, 0x8013, 0x80B7, 0x80B9, 0x81E4, 0x81FD, - 0x820F, 0x82BF, 0x82CA, 0x82C1, 0x8FD0, 0x90AE, 0x9638, 0x4FBC, - 0x4FE9, 0x4FBD, 0x4FE2, 0x5158, 0x52C6, 0x52C8, 0x5328, 0x5329, - 0x57B4, 0x57A9, 0x5B68, 0x5F2B, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane 92 -at 0x00 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0x5F8D, 0x6018, 0x6057, 0x6048, 0x6038, 0x6071, 0x6312, - 0x630A, 0x6323, 0x662A, 0x67E0, 0x67BE, 0x6B29, 0x6D43, 0x70A6, - 0x70C0, 0x722F, 0x7271, 0x74EA, 0x7520, 0x75A9, 0x7685, 0x7706, - 0x76F6, 0x7700, 0x7702, 0x8009, 0x82DA, 0x830A, 0x9655, 0x9652, - 0x4E35, 0x5034, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane 93 -at 0x00 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0x5001, - 0x500A, 0x5258, 0x532B, 0x54EC, 0x5515, 0x54FE, 0x54E3, 0x5516, - 0x57D3, 0x5959, 0x5A27, 0x5A28, 0x5A10, 0x5A0E, 0x5BAF, 0x5BBA, - 0x5BB1, 0x5CFC, 0x5CF2, 0x5CFE, 0x5DF8, 0x5F2C, 0x6082, 0x6091, - 0x608F, 0x6547, 0x654C, 0x658A, 0x67E1, 0x684A, 0x683F, 0x67BD, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane 94 -at 0x00 - 0, 0, 0, 0, 0, 0x70C9, 0x73BA, 0x75C6, - 0x75B7, 0x768C, 0x768D, 0x7717, 0x771C, 0x7714, 0x7B0C, 0x7D23, - 0x7F98, 0x7F90, 0x803A, 0x8226, 0x832E, 0x8355, 0x831A, 0x833D, - 0x8330, 0x8651, 0x8688, 0x898E, 0x898D, 0x8A09, 0x8A14, 0x9007, - 0x9579, 0x9584, 0x9657, 0x96BA, 0x5067, 0x5318, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/maps/cubig5.map b/application/third_party/dompdf/lib/ttf2ufm/src/maps/cubig5.map deleted file mode 100644 index 5ff26d43..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/maps/cubig5.map +++ /dev/null @@ -1,1861 +0,0 @@ -# -# Creating compact CJK type1 fonts from Unicode -# Chinese Big5 encoding fonts. -# -plane 01 -at 0x00 - 0x3000, 0xFF0C, 0x3001, 0x3002, 0xFF0E, 0x2027, 0xFF1B, 0xFF1A, - 0xFF1F, 0xFF01, 0xFE30, 0x2026, 0x2025, 0xFE50, 0xFE51, 0xFE52, - 0x00B7, 0xFE54, 0xFE55, 0xFE56, 0xFE57, 0xFF5C, 0x2013, 0xFE31, - 0x2014, 0xFE33, 0x2574, 0xFE34, 0xFE4F, 0xFF08, 0xFF09, 0xFE35, - 0xFE36, 0xFF5B, 0xFF5D, 0xFE37, 0xFE38, 0x3014, 0x3015, 0xFE39, - 0xFE3A, 0x3010, 0x3011, 0xFE3B, 0xFE3C, 0x300A, 0x300B, 0xFE3D, - 0xFE3E, 0x3008, 0x3009, 0xFE3F, 0xFE40, 0x300C, 0x300D, 0xFE41, - 0xFE42, 0x300E, 0x300F, 0xFE43, 0xFE44, 0xFE59, 0xFE5A, 0xFE5B, - 0xFE5C, 0xFE5D, 0xFE5E, 0x2018, 0x2019, 0x201C, 0x201D, 0x301D, - 0x301E, 0x2035, 0x2032, 0xFF03, 0xFF06, 0xFF0A, 0x203B, 0x00A7, - 0x3003, 0x25CB, 0x25CF, 0x25B3, 0x25B2, 0x25CE, 0x2606, 0x2605, - 0x25C7, 0x25C6, 0x25A1, 0x25A0, 0x25BD, 0x25BC, 0x32A3, 0x2105, - 0x00AF, 0xFFE3, 0xFF3F, 0x02CD, 0xFE49, 0xFE4A, 0xFE4D, 0xFE4E, - 0xFE4B, 0xFE4C, 0xFE5F, 0xFE60, 0xFE61, 0xFF0B, 0xFF0D, 0x00D7, - 0x00F7, 0x00B1, 0x221A, 0xFF1C, 0xFF1E, 0xFF1D, 0x2266, 0x2267, - 0x2260, 0x221E, 0x2252, 0x2261, 0xFE62, 0xFE63, 0xFE64, 0xFE65, - 0xFE66, 0xFF5E, 0x2229, 0x222A, 0x22A5, 0x2220, 0x221F, 0x22BF, - 0x33D2, 0x33D1, 0x222B, 0x222E, 0x2235, 0x2234, 0x2640, 0x2642, - 0x2295, 0x2299, 0x2191, 0x2193, 0x2190, 0x2192, 0x2196, 0x2197, - 0x2199, 0x2198, 0x2225, 0x2223, 0xFF0F, 0xFF3C, 0x2215, 0xFE68, - 0xFF04, 0xFFE5, 0x3012, 0xFFE0, 0xFFE1, 0xFF05, 0xFF20, 0x2103, - 0x2109, 0xFE69, 0xFE6A, 0xFE6B, 0x33D5, 0x339C, 0x339D, 0x339E, - 0x33CE, 0x33A1, 0x338E, 0x338F, 0x33C4, 0x00B0, 0x5159, 0x515B, - 0x515E, 0x515D, 0x5161, 0x5163, 0x55E7, 0x74E9, 0x7CCE, 0x2581, - 0x2582, 0x2583, 0x2584, 0x2585, 0x2586, 0x2587, 0x2588, 0x258F, - 0x258E, 0x258D, 0x258C, 0x258B, 0x258A, 0x2589, 0x253C, 0x2534, - 0x252C, 0x2524, 0x251C, 0x2594, 0x2500, 0x2502, 0x2595, 0x250C, - 0x2510, 0x2514, 0x2518, 0x256D, 0x256E, 0x2570, 0x256F, 0x2550, - 0x255E, 0x256A, 0x2561, 0x25E2, 0x25E3, 0x25E5, 0x25E4, 0x2571, - 0x2572, 0x2573, 0xFF10, 0xFF11, 0xFF12, 0xFF13, 0xFF14, 0xFF15, - 0xFF16, 0xFF17, 0xFF18, 0xFF19, 0x2160, 0x2161, 0x2162, 0x2163, - 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x3021, 0x3022, -plane 02 -at 0x00 - 0x3023, 0x3024, 0x3025, 0x3026, 0x3027, 0x3028, 0x3029, 0x5341, - 0x5344, 0x5345, 0xFF21, 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, - 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, - 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36, - 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0xFF41, 0xFF42, 0xFF43, 0xFF44, - 0xFF45, 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, - 0xFF4D, 0xFF4E, 0xFF4F, 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, - 0xFF55, 0xFF56, 0xFF57, 0xFF58, 0xFF59, 0xFF5A, 0x0391, 0x0392, - 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039A, - 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, 0x03A0, 0x03A1, 0x03A3, - 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, 0x03B1, 0x03B2, - 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA, - 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3, - 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0x3105, 0x3106, - 0x3107, 0x3108, 0x3109, 0x310A, 0x310B, 0x310C, 0x310D, 0x310E, - 0x310F, 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, - 0x3117, 0x3118, 0x3119, 0x311A, 0x311B, 0x311C, 0x311D, 0x311E, - 0x311F, 0x3120, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, - 0x3127, 0x3128, 0x3129, 0x02D9, 0x02C9, 0x02CA, 0x02C7, 0x02CB, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0x20AC, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0x4E00, - 0x4E59, 0x4E01, 0x4E03, 0x4E43, 0x4E5D, 0x4E86, 0x4E8C, 0x4EBA, - 0x513F, 0x5165, 0x516B, 0x51E0, 0x5200, 0x5201, 0x529B, 0x5315, - 0x5341, 0x535C, 0x53C8, 0x4E09, 0x4E0B, 0x4E08, 0x4E0A, 0x4E2B, - 0x4E38, 0x51E1, 0x4E45, 0x4E48, 0x4E5F, 0x4E5E, 0x4E8E, 0x4EA1, - 0x5140, 0x5203, 0x52FA, 0x5343, 0x53C9, 0x53E3, 0x571F, 0x58EB, -plane 03 -at 0x00 - 0x5915, 0x5927, 0x5973, 0x5B50, 0x5B51, 0x5B53, 0x5BF8, 0x5C0F, - 0x5C22, 0x5C38, 0x5C71, 0x5DDD, 0x5DE5, 0x5DF1, 0x5DF2, 0x5DF3, - 0x5DFE, 0x5E72, 0x5EFE, 0x5F0B, 0x5F13, 0x624D, 0x4E11, 0x4E10, - 0x4E0D, 0x4E2D, 0x4E30, 0x4E39, 0x4E4B, 0x5C39, 0x4E88, 0x4E91, - 0x4E95, 0x4E92, 0x4E94, 0x4EA2, 0x4EC1, 0x4EC0, 0x4EC3, 0x4EC6, - 0x4EC7, 0x4ECD, 0x4ECA, 0x4ECB, 0x4EC4, 0x5143, 0x5141, 0x5167, - 0x516D, 0x516E, 0x516C, 0x5197, 0x51F6, 0x5206, 0x5207, 0x5208, - 0x52FB, 0x52FE, 0x52FF, 0x5316, 0x5339, 0x5348, 0x5347, 0x5345, - 0x535E, 0x5384, 0x53CB, 0x53CA, 0x53CD, 0x58EC, 0x5929, 0x592B, - 0x592A, 0x592D, 0x5B54, 0x5C11, 0x5C24, 0x5C3A, 0x5C6F, 0x5DF4, - 0x5E7B, 0x5EFF, 0x5F14, 0x5F15, 0x5FC3, 0x6208, 0x6236, 0x624B, - 0x624E, 0x652F, 0x6587, 0x6597, 0x65A4, 0x65B9, 0x65E5, 0x66F0, - 0x6708, 0x6728, 0x6B20, 0x6B62, 0x6B79, 0x6BCB, 0x6BD4, 0x6BDB, - 0x6C0F, 0x6C34, 0x706B, 0x722A, 0x7236, 0x723B, 0x7247, 0x7259, - 0x725B, 0x72AC, 0x738B, 0x4E19, 0x4E16, 0x4E15, 0x4E14, 0x4E18, - 0x4E3B, 0x4E4D, 0x4E4F, 0x4E4E, 0x4EE5, 0x4ED8, 0x4ED4, 0x4ED5, - 0x4ED6, 0x4ED7, 0x4EE3, 0x4EE4, 0x4ED9, 0x4EDE, 0x5145, 0x5144, - 0x5189, 0x518A, 0x51AC, 0x51F9, 0x51FA, 0x51F8, 0x520A, 0x52A0, - 0x529F, 0x5305, 0x5306, 0x5317, 0x531D, 0x4EDF, 0x534A, 0x5349, - 0x5361, 0x5360, 0x536F, 0x536E, 0x53BB, 0x53EF, 0x53E4, 0x53F3, - 0x53EC, 0x53EE, 0x53E9, 0x53E8, 0x53FC, 0x53F8, 0x53F5, 0x53EB, - 0x53E6, 0x53EA, 0x53F2, 0x53F1, 0x53F0, 0x53E5, 0x53ED, 0x53FB, - 0x56DB, 0x56DA, 0x5916, 0x592E, 0x5931, 0x5974, 0x5976, 0x5B55, - 0x5B83, 0x5C3C, 0x5DE8, 0x5DE7, 0x5DE6, 0x5E02, 0x5E03, 0x5E73, - 0x5E7C, 0x5F01, 0x5F18, 0x5F17, 0x5FC5, 0x620A, 0x6253, 0x6254, - 0x6252, 0x6251, 0x65A5, 0x65E6, 0x672E, 0x672C, 0x672A, 0x672B, - 0x672D, 0x6B63, 0x6BCD, 0x6C11, 0x6C10, 0x6C38, 0x6C41, 0x6C40, - 0x6C3E, 0x72AF, 0x7384, 0x7389, 0x74DC, 0x74E6, 0x7518, 0x751F, - 0x7528, 0x7529, 0x7530, 0x7531, 0x7532, 0x7533, 0x758B, 0x767D, - 0x76AE, 0x76BF, 0x76EE, 0x77DB, 0x77E2, 0x77F3, 0x793A, 0x79BE, - 0x7A74, 0x7ACB, 0x4E1E, 0x4E1F, 0x4E52, 0x4E53, 0x4E69, 0x4E99, - 0x4EA4, 0x4EA6, 0x4EA5, 0x4EFF, 0x4F09, 0x4F19, 0x4F0A, 0x4F15, -plane 04 -at 0x00 - 0x4F0D, 0x4F10, 0x4F11, 0x4F0F, 0x4EF2, 0x4EF6, 0x4EFB, 0x4EF0, - 0x4EF3, 0x4EFD, 0x4F01, 0x4F0B, 0x5149, 0x5147, 0x5146, 0x5148, - 0x5168, 0x5171, 0x518D, 0x51B0, 0x5217, 0x5211, 0x5212, 0x520E, - 0x5216, 0x52A3, 0x5308, 0x5321, 0x5320, 0x5370, 0x5371, 0x5409, - 0x540F, 0x540C, 0x540A, 0x5410, 0x5401, 0x540B, 0x5404, 0x5411, - 0x540D, 0x5408, 0x5403, 0x540E, 0x5406, 0x5412, 0x56E0, 0x56DE, - 0x56DD, 0x5733, 0x5730, 0x5728, 0x572D, 0x572C, 0x572F, 0x5729, - 0x5919, 0x591A, 0x5937, 0x5938, 0x5984, 0x5978, 0x5983, 0x597D, - 0x5979, 0x5982, 0x5981, 0x5B57, 0x5B58, 0x5B87, 0x5B88, 0x5B85, - 0x5B89, 0x5BFA, 0x5C16, 0x5C79, 0x5DDE, 0x5E06, 0x5E76, 0x5E74, - 0x5F0F, 0x5F1B, 0x5FD9, 0x5FD6, 0x620E, 0x620C, 0x620D, 0x6210, - 0x6263, 0x625B, 0x6258, 0x6536, 0x65E9, 0x65E8, 0x65EC, 0x65ED, - 0x66F2, 0x66F3, 0x6709, 0x673D, 0x6734, 0x6731, 0x6735, 0x6B21, - 0x6B64, 0x6B7B, 0x6C16, 0x6C5D, 0x6C57, 0x6C59, 0x6C5F, 0x6C60, - 0x6C50, 0x6C55, 0x6C61, 0x6C5B, 0x6C4D, 0x6C4E, 0x7070, 0x725F, - 0x725D, 0x767E, 0x7AF9, 0x7C73, 0x7CF8, 0x7F36, 0x7F8A, 0x7FBD, - 0x8001, 0x8003, 0x800C, 0x8012, 0x8033, 0x807F, 0x8089, 0x808B, - 0x808C, 0x81E3, 0x81EA, 0x81F3, 0x81FC, 0x820C, 0x821B, 0x821F, - 0x826E, 0x8272, 0x827E, 0x866B, 0x8840, 0x884C, 0x8863, 0x897F, - 0x9621, 0x4E32, 0x4EA8, 0x4F4D, 0x4F4F, 0x4F47, 0x4F57, 0x4F5E, - 0x4F34, 0x4F5B, 0x4F55, 0x4F30, 0x4F50, 0x4F51, 0x4F3D, 0x4F3A, - 0x4F38, 0x4F43, 0x4F54, 0x4F3C, 0x4F46, 0x4F63, 0x4F5C, 0x4F60, - 0x4F2F, 0x4F4E, 0x4F36, 0x4F59, 0x4F5D, 0x4F48, 0x4F5A, 0x514C, - 0x514B, 0x514D, 0x5175, 0x51B6, 0x51B7, 0x5225, 0x5224, 0x5229, - 0x522A, 0x5228, 0x52AB, 0x52A9, 0x52AA, 0x52AC, 0x5323, 0x5373, - 0x5375, 0x541D, 0x542D, 0x541E, 0x543E, 0x5426, 0x544E, 0x5427, - 0x5446, 0x5443, 0x5433, 0x5448, 0x5442, 0x541B, 0x5429, 0x544A, - 0x5439, 0x543B, 0x5438, 0x542E, 0x5435, 0x5436, 0x5420, 0x543C, - 0x5440, 0x5431, 0x542B, 0x541F, 0x542C, 0x56EA, 0x56F0, 0x56E4, - 0x56EB, 0x574A, 0x5751, 0x5740, 0x574D, 0x5747, 0x574E, 0x573E, - 0x5750, 0x574F, 0x573B, 0x58EF, 0x593E, 0x599D, 0x5992, 0x59A8, - 0x599E, 0x59A3, 0x5999, 0x5996, 0x598D, 0x59A4, 0x5993, 0x598A, -plane 05 -at 0x00 - 0x59A5, 0x5B5D, 0x5B5C, 0x5B5A, 0x5B5B, 0x5B8C, 0x5B8B, 0x5B8F, - 0x5C2C, 0x5C40, 0x5C41, 0x5C3F, 0x5C3E, 0x5C90, 0x5C91, 0x5C94, - 0x5C8C, 0x5DEB, 0x5E0C, 0x5E8F, 0x5E87, 0x5E8A, 0x5EF7, 0x5F04, - 0x5F1F, 0x5F64, 0x5F62, 0x5F77, 0x5F79, 0x5FD8, 0x5FCC, 0x5FD7, - 0x5FCD, 0x5FF1, 0x5FEB, 0x5FF8, 0x5FEA, 0x6212, 0x6211, 0x6284, - 0x6297, 0x6296, 0x6280, 0x6276, 0x6289, 0x626D, 0x628A, 0x627C, - 0x627E, 0x6279, 0x6273, 0x6292, 0x626F, 0x6298, 0x626E, 0x6295, - 0x6293, 0x6291, 0x6286, 0x6539, 0x653B, 0x6538, 0x65F1, 0x66F4, - 0x675F, 0x674E, 0x674F, 0x6750, 0x6751, 0x675C, 0x6756, 0x675E, - 0x6749, 0x6746, 0x6760, 0x6753, 0x6757, 0x6B65, 0x6BCF, 0x6C42, - 0x6C5E, 0x6C99, 0x6C81, 0x6C88, 0x6C89, 0x6C85, 0x6C9B, 0x6C6A, - 0x6C7A, 0x6C90, 0x6C70, 0x6C8C, 0x6C68, 0x6C96, 0x6C92, 0x6C7D, - 0x6C83, 0x6C72, 0x6C7E, 0x6C74, 0x6C86, 0x6C76, 0x6C8D, 0x6C94, - 0x6C98, 0x6C82, 0x7076, 0x707C, 0x707D, 0x7078, 0x7262, 0x7261, - 0x7260, 0x72C4, 0x72C2, 0x7396, 0x752C, 0x752B, 0x7537, 0x7538, - 0x7682, 0x76EF, 0x77E3, 0x79C1, 0x79C0, 0x79BF, 0x7A76, 0x7CFB, - 0x7F55, 0x8096, 0x8093, 0x809D, 0x8098, 0x809B, 0x809A, 0x80B2, - 0x826F, 0x8292, 0x828B, 0x828D, 0x898B, 0x89D2, 0x8A00, 0x8C37, - 0x8C46, 0x8C55, 0x8C9D, 0x8D64, 0x8D70, 0x8DB3, 0x8EAB, 0x8ECA, - 0x8F9B, 0x8FB0, 0x8FC2, 0x8FC6, 0x8FC5, 0x8FC4, 0x5DE1, 0x9091, - 0x90A2, 0x90AA, 0x90A6, 0x90A3, 0x9149, 0x91C6, 0x91CC, 0x9632, - 0x962E, 0x9631, 0x962A, 0x962C, 0x4E26, 0x4E56, 0x4E73, 0x4E8B, - 0x4E9B, 0x4E9E, 0x4EAB, 0x4EAC, 0x4F6F, 0x4F9D, 0x4F8D, 0x4F73, - 0x4F7F, 0x4F6C, 0x4F9B, 0x4F8B, 0x4F86, 0x4F83, 0x4F70, 0x4F75, - 0x4F88, 0x4F69, 0x4F7B, 0x4F96, 0x4F7E, 0x4F8F, 0x4F91, 0x4F7A, - 0x5154, 0x5152, 0x5155, 0x5169, 0x5177, 0x5176, 0x5178, 0x51BD, - 0x51FD, 0x523B, 0x5238, 0x5237, 0x523A, 0x5230, 0x522E, 0x5236, - 0x5241, 0x52BE, 0x52BB, 0x5352, 0x5354, 0x5353, 0x5351, 0x5366, - 0x5377, 0x5378, 0x5379, 0x53D6, 0x53D4, 0x53D7, 0x5473, 0x5475, - 0x5496, 0x5478, 0x5495, 0x5480, 0x547B, 0x5477, 0x5484, 0x5492, - 0x5486, 0x547C, 0x5490, 0x5471, 0x5476, 0x548C, 0x549A, 0x5462, - 0x5468, 0x548B, 0x547D, 0x548E, 0x56FA, 0x5783, 0x5777, 0x576A, -plane 06 -at 0x00 - 0x5769, 0x5761, 0x5766, 0x5764, 0x577C, 0x591C, 0x5949, 0x5947, - 0x5948, 0x5944, 0x5954, 0x59BE, 0x59BB, 0x59D4, 0x59B9, 0x59AE, - 0x59D1, 0x59C6, 0x59D0, 0x59CD, 0x59CB, 0x59D3, 0x59CA, 0x59AF, - 0x59B3, 0x59D2, 0x59C5, 0x5B5F, 0x5B64, 0x5B63, 0x5B97, 0x5B9A, - 0x5B98, 0x5B9C, 0x5B99, 0x5B9B, 0x5C1A, 0x5C48, 0x5C45, 0x5C46, - 0x5CB7, 0x5CA1, 0x5CB8, 0x5CA9, 0x5CAB, 0x5CB1, 0x5CB3, 0x5E18, - 0x5E1A, 0x5E16, 0x5E15, 0x5E1B, 0x5E11, 0x5E78, 0x5E9A, 0x5E97, - 0x5E9C, 0x5E95, 0x5E96, 0x5EF6, 0x5F26, 0x5F27, 0x5F29, 0x5F80, - 0x5F81, 0x5F7F, 0x5F7C, 0x5FDD, 0x5FE0, 0x5FFD, 0x5FF5, 0x5FFF, - 0x600F, 0x6014, 0x602F, 0x6035, 0x6016, 0x602A, 0x6015, 0x6021, - 0x6027, 0x6029, 0x602B, 0x601B, 0x6216, 0x6215, 0x623F, 0x623E, - 0x6240, 0x627F, 0x62C9, 0x62CC, 0x62C4, 0x62BF, 0x62C2, 0x62B9, - 0x62D2, 0x62DB, 0x62AB, 0x62D3, 0x62D4, 0x62CB, 0x62C8, 0x62A8, - 0x62BD, 0x62BC, 0x62D0, 0x62D9, 0x62C7, 0x62CD, 0x62B5, 0x62DA, - 0x62B1, 0x62D8, 0x62D6, 0x62D7, 0x62C6, 0x62AC, 0x62CE, 0x653E, - 0x65A7, 0x65BC, 0x65FA, 0x6614, 0x6613, 0x660C, 0x6606, 0x6602, - 0x660E, 0x6600, 0x660F, 0x6615, 0x660A, 0x6607, 0x670D, 0x670B, - 0x676D, 0x678B, 0x6795, 0x6771, 0x679C, 0x6773, 0x6777, 0x6787, - 0x679D, 0x6797, 0x676F, 0x6770, 0x677F, 0x6789, 0x677E, 0x6790, - 0x6775, 0x679A, 0x6793, 0x677C, 0x676A, 0x6772, 0x6B23, 0x6B66, - 0x6B67, 0x6B7F, 0x6C13, 0x6C1B, 0x6CE3, 0x6CE8, 0x6CF3, 0x6CB1, - 0x6CCC, 0x6CE5, 0x6CB3, 0x6CBD, 0x6CBE, 0x6CBC, 0x6CE2, 0x6CAB, - 0x6CD5, 0x6CD3, 0x6CB8, 0x6CC4, 0x6CB9, 0x6CC1, 0x6CAE, 0x6CD7, - 0x6CC5, 0x6CF1, 0x6CBF, 0x6CBB, 0x6CE1, 0x6CDB, 0x6CCA, 0x6CAC, - 0x6CEF, 0x6CDC, 0x6CD6, 0x6CE0, 0x7095, 0x708E, 0x7092, 0x708A, - 0x7099, 0x722C, 0x722D, 0x7238, 0x7248, 0x7267, 0x7269, 0x72C0, - 0x72CE, 0x72D9, 0x72D7, 0x72D0, 0x73A9, 0x73A8, 0x739F, 0x73AB, - 0x73A5, 0x753D, 0x759D, 0x7599, 0x759A, 0x7684, 0x76C2, 0x76F2, - 0x76F4, 0x77E5, 0x77FD, 0x793E, 0x7940, 0x7941, 0x79C9, 0x79C8, - 0x7A7A, 0x7A79, 0x7AFA, 0x7CFE, 0x7F54, 0x7F8C, 0x7F8B, 0x8005, - 0x80BA, 0x80A5, 0x80A2, 0x80B1, 0x80A1, 0x80AB, 0x80A9, 0x80B4, - 0x80AA, 0x80AF, 0x81E5, 0x81FE, 0x820D, 0x82B3, 0x829D, 0x8299, -plane 07 -at 0x00 - 0x82AD, 0x82BD, 0x829F, 0x82B9, 0x82B1, 0x82AC, 0x82A5, 0x82AF, - 0x82B8, 0x82A3, 0x82B0, 0x82BE, 0x82B7, 0x864E, 0x8671, 0x521D, - 0x8868, 0x8ECB, 0x8FCE, 0x8FD4, 0x8FD1, 0x90B5, 0x90B8, 0x90B1, - 0x90B6, 0x91C7, 0x91D1, 0x9577, 0x9580, 0x961C, 0x9640, 0x963F, - 0x963B, 0x9644, 0x9642, 0x96B9, 0x96E8, 0x9752, 0x975E, 0x4E9F, - 0x4EAD, 0x4EAE, 0x4FE1, 0x4FB5, 0x4FAF, 0x4FBF, 0x4FE0, 0x4FD1, - 0x4FCF, 0x4FDD, 0x4FC3, 0x4FB6, 0x4FD8, 0x4FDF, 0x4FCA, 0x4FD7, - 0x4FAE, 0x4FD0, 0x4FC4, 0x4FC2, 0x4FDA, 0x4FCE, 0x4FDE, 0x4FB7, - 0x5157, 0x5192, 0x5191, 0x51A0, 0x524E, 0x5243, 0x524A, 0x524D, - 0x524C, 0x524B, 0x5247, 0x52C7, 0x52C9, 0x52C3, 0x52C1, 0x530D, - 0x5357, 0x537B, 0x539A, 0x53DB, 0x54AC, 0x54C0, 0x54A8, 0x54CE, - 0x54C9, 0x54B8, 0x54A6, 0x54B3, 0x54C7, 0x54C2, 0x54BD, 0x54AA, - 0x54C1, 0x54C4, 0x54C8, 0x54AF, 0x54AB, 0x54B1, 0x54BB, 0x54A9, - 0x54A7, 0x54BF, 0x56FF, 0x5782, 0x578B, 0x57A0, 0x57A3, 0x57A2, - 0x57CE, 0x57AE, 0x5793, 0x5955, 0x5951, 0x594F, 0x594E, 0x5950, - 0x59DC, 0x59D8, 0x59FF, 0x59E3, 0x59E8, 0x5A03, 0x59E5, 0x59EA, - 0x59DA, 0x59E6, 0x5A01, 0x59FB, 0x5B69, 0x5BA3, 0x5BA6, 0x5BA4, - 0x5BA2, 0x5BA5, 0x5C01, 0x5C4E, 0x5C4F, 0x5C4D, 0x5C4B, 0x5CD9, - 0x5CD2, 0x5DF7, 0x5E1D, 0x5E25, 0x5E1F, 0x5E7D, 0x5EA0, 0x5EA6, - 0x5EFA, 0x5F08, 0x5F2D, 0x5F65, 0x5F88, 0x5F85, 0x5F8A, 0x5F8B, - 0x5F87, 0x5F8C, 0x5F89, 0x6012, 0x601D, 0x6020, 0x6025, 0x600E, - 0x6028, 0x604D, 0x6070, 0x6068, 0x6062, 0x6046, 0x6043, 0x606C, - 0x606B, 0x606A, 0x6064, 0x6241, 0x62DC, 0x6316, 0x6309, 0x62FC, - 0x62ED, 0x6301, 0x62EE, 0x62FD, 0x6307, 0x62F1, 0x62F7, 0x62EF, - 0x62EC, 0x62FE, 0x62F4, 0x6311, 0x6302, 0x653F, 0x6545, 0x65AB, - 0x65BD, 0x65E2, 0x6625, 0x662D, 0x6620, 0x6627, 0x662F, 0x661F, - 0x6628, 0x6631, 0x6624, 0x66F7, 0x67FF, 0x67D3, 0x67F1, 0x67D4, - 0x67D0, 0x67EC, 0x67B6, 0x67AF, 0x67F5, 0x67E9, 0x67EF, 0x67C4, - 0x67D1, 0x67B4, 0x67DA, 0x67E5, 0x67B8, 0x67CF, 0x67DE, 0x67F3, - 0x67B0, 0x67D9, 0x67E2, 0x67DD, 0x67D2, 0x6B6A, 0x6B83, 0x6B86, - 0x6BB5, 0x6BD2, 0x6BD7, 0x6C1F, 0x6CC9, 0x6D0B, 0x6D32, 0x6D2A, - 0x6D41, 0x6D25, 0x6D0C, 0x6D31, 0x6D1E, 0x6D17, 0x6D3B, 0x6D3D, -plane 08 -at 0x00 - 0x6D3E, 0x6D36, 0x6D1B, 0x6CF5, 0x6D39, 0x6D27, 0x6D38, 0x6D29, - 0x6D2E, 0x6D35, 0x6D0E, 0x6D2B, 0x70AB, 0x70BA, 0x70B3, 0x70AC, - 0x70AF, 0x70AD, 0x70B8, 0x70AE, 0x70A4, 0x7230, 0x7272, 0x726F, - 0x7274, 0x72E9, 0x72E0, 0x72E1, 0x73B7, 0x73CA, 0x73BB, 0x73B2, - 0x73CD, 0x73C0, 0x73B3, 0x751A, 0x752D, 0x754F, 0x754C, 0x754E, - 0x754B, 0x75AB, 0x75A4, 0x75A5, 0x75A2, 0x75A3, 0x7678, 0x7686, - 0x7687, 0x7688, 0x76C8, 0x76C6, 0x76C3, 0x76C5, 0x7701, 0x76F9, - 0x76F8, 0x7709, 0x770B, 0x76FE, 0x76FC, 0x7707, 0x77DC, 0x7802, - 0x7814, 0x780C, 0x780D, 0x7946, 0x7949, 0x7948, 0x7947, 0x79B9, - 0x79BA, 0x79D1, 0x79D2, 0x79CB, 0x7A7F, 0x7A81, 0x7AFF, 0x7AFD, - 0x7C7D, 0x7D02, 0x7D05, 0x7D00, 0x7D09, 0x7D07, 0x7D04, 0x7D06, - 0x7F38, 0x7F8E, 0x7FBF, 0x8004, 0x8010, 0x800D, 0x8011, 0x8036, - 0x80D6, 0x80E5, 0x80DA, 0x80C3, 0x80C4, 0x80CC, 0x80E1, 0x80DB, - 0x80CE, 0x80DE, 0x80E4, 0x80DD, 0x81F4, 0x8222, 0x82E7, 0x8303, - 0x8305, 0x82E3, 0x82DB, 0x82E6, 0x8304, 0x82E5, 0x8302, 0x8309, - 0x82D2, 0x82D7, 0x82F1, 0x8301, 0x82DC, 0x82D4, 0x82D1, 0x82DE, - 0x82D3, 0x82DF, 0x82EF, 0x8306, 0x8650, 0x8679, 0x867B, 0x867A, - 0x884D, 0x886B, 0x8981, 0x89D4, 0x8A08, 0x8A02, 0x8A03, 0x8C9E, - 0x8CA0, 0x8D74, 0x8D73, 0x8DB4, 0x8ECD, 0x8ECC, 0x8FF0, 0x8FE6, - 0x8FE2, 0x8FEA, 0x8FE5, 0x8FED, 0x8FEB, 0x8FE4, 0x8FE8, 0x90CA, - 0x90CE, 0x90C1, 0x90C3, 0x914B, 0x914A, 0x91CD, 0x9582, 0x9650, - 0x964B, 0x964C, 0x964D, 0x9762, 0x9769, 0x97CB, 0x97ED, 0x97F3, - 0x9801, 0x98A8, 0x98DB, 0x98DF, 0x9996, 0x9999, 0x4E58, 0x4EB3, - 0x500C, 0x500D, 0x5023, 0x4FEF, 0x5026, 0x5025, 0x4FF8, 0x5029, - 0x5016, 0x5006, 0x503C, 0x501F, 0x501A, 0x5012, 0x5011, 0x4FFA, - 0x5000, 0x5014, 0x5028, 0x4FF1, 0x5021, 0x500B, 0x5019, 0x5018, - 0x4FF3, 0x4FEE, 0x502D, 0x502A, 0x4FFE, 0x502B, 0x5009, 0x517C, - 0x51A4, 0x51A5, 0x51A2, 0x51CD, 0x51CC, 0x51C6, 0x51CB, 0x5256, - 0x525C, 0x5254, 0x525B, 0x525D, 0x532A, 0x537F, 0x539F, 0x539D, - 0x53DF, 0x54E8, 0x5510, 0x5501, 0x5537, 0x54FC, 0x54E5, 0x54F2, - 0x5506, 0x54FA, 0x5514, 0x54E9, 0x54ED, 0x54E1, 0x5509, 0x54EE, - 0x54EA, 0x54E6, 0x5527, 0x5507, 0x54FD, 0x550F, 0x5703, 0x5704, -plane 09 -at 0x00 - 0x57C2, 0x57D4, 0x57CB, 0x57C3, 0x5809, 0x590F, 0x5957, 0x5958, - 0x595A, 0x5A11, 0x5A18, 0x5A1C, 0x5A1F, 0x5A1B, 0x5A13, 0x59EC, - 0x5A20, 0x5A23, 0x5A29, 0x5A25, 0x5A0C, 0x5A09, 0x5B6B, 0x5C58, - 0x5BB0, 0x5BB3, 0x5BB6, 0x5BB4, 0x5BAE, 0x5BB5, 0x5BB9, 0x5BB8, - 0x5C04, 0x5C51, 0x5C55, 0x5C50, 0x5CED, 0x5CFD, 0x5CFB, 0x5CEA, - 0x5CE8, 0x5CF0, 0x5CF6, 0x5D01, 0x5CF4, 0x5DEE, 0x5E2D, 0x5E2B, - 0x5EAB, 0x5EAD, 0x5EA7, 0x5F31, 0x5F92, 0x5F91, 0x5F90, 0x6059, - 0x6063, 0x6065, 0x6050, 0x6055, 0x606D, 0x6069, 0x606F, 0x6084, - 0x609F, 0x609A, 0x608D, 0x6094, 0x608C, 0x6085, 0x6096, 0x6247, - 0x62F3, 0x6308, 0x62FF, 0x634E, 0x633E, 0x632F, 0x6355, 0x6342, - 0x6346, 0x634F, 0x6349, 0x633A, 0x6350, 0x633D, 0x632A, 0x632B, - 0x6328, 0x634D, 0x634C, 0x6548, 0x6549, 0x6599, 0x65C1, 0x65C5, - 0x6642, 0x6649, 0x664F, 0x6643, 0x6652, 0x664C, 0x6645, 0x6641, - 0x66F8, 0x6714, 0x6715, 0x6717, 0x6821, 0x6838, 0x6848, 0x6846, - 0x6853, 0x6839, 0x6842, 0x6854, 0x6829, 0x68B3, 0x6817, 0x684C, - 0x6851, 0x683D, 0x67F4, 0x6850, 0x6840, 0x683C, 0x6843, 0x682A, - 0x6845, 0x6813, 0x6818, 0x6841, 0x6B8A, 0x6B89, 0x6BB7, 0x6C23, - 0x6C27, 0x6C28, 0x6C26, 0x6C24, 0x6CF0, 0x6D6A, 0x6D95, 0x6D88, - 0x6D87, 0x6D66, 0x6D78, 0x6D77, 0x6D59, 0x6D93, 0x6D6C, 0x6D89, - 0x6D6E, 0x6D5A, 0x6D74, 0x6D69, 0x6D8C, 0x6D8A, 0x6D79, 0x6D85, - 0x6D65, 0x6D94, 0x70CA, 0x70D8, 0x70E4, 0x70D9, 0x70C8, 0x70CF, - 0x7239, 0x7279, 0x72FC, 0x72F9, 0x72FD, 0x72F8, 0x72F7, 0x7386, - 0x73ED, 0x7409, 0x73EE, 0x73E0, 0x73EA, 0x73DE, 0x7554, 0x755D, - 0x755C, 0x755A, 0x7559, 0x75BE, 0x75C5, 0x75C7, 0x75B2, 0x75B3, - 0x75BD, 0x75BC, 0x75B9, 0x75C2, 0x75B8, 0x768B, 0x76B0, 0x76CA, - 0x76CD, 0x76CE, 0x7729, 0x771F, 0x7720, 0x7728, 0x77E9, 0x7830, - 0x7827, 0x7838, 0x781D, 0x7834, 0x7837, 0x7825, 0x782D, 0x7820, - 0x781F, 0x7832, 0x7955, 0x7950, 0x7960, 0x795F, 0x7956, 0x795E, - 0x795D, 0x7957, 0x795A, 0x79E4, 0x79E3, 0x79E7, 0x79DF, 0x79E6, - 0x79E9, 0x79D8, 0x7A84, 0x7A88, 0x7AD9, 0x7B06, 0x7B11, 0x7C89, - 0x7D21, 0x7D17, 0x7D0B, 0x7D0A, 0x7D20, 0x7D22, 0x7D14, 0x7D10, - 0x7D15, 0x7D1A, 0x7D1C, 0x7D0D, 0x7D19, 0x7D1B, 0x7F3A, 0x7F5F, -plane 10 -at 0x00 - 0x7F94, 0x7FC5, 0x7FC1, 0x8006, 0x8018, 0x8015, 0x8019, 0x8017, - 0x803D, 0x803F, 0x80F1, 0x8102, 0x80F0, 0x8105, 0x80ED, 0x80F4, - 0x8106, 0x80F8, 0x80F3, 0x8108, 0x80FD, 0x810A, 0x80FC, 0x80EF, - 0x81ED, 0x81EC, 0x8200, 0x8210, 0x822A, 0x822B, 0x8228, 0x822C, - 0x82BB, 0x832B, 0x8352, 0x8354, 0x834A, 0x8338, 0x8350, 0x8349, - 0x8335, 0x8334, 0x834F, 0x8332, 0x8339, 0x8336, 0x8317, 0x8340, - 0x8331, 0x8328, 0x8343, 0x8654, 0x868A, 0x86AA, 0x8693, 0x86A4, - 0x86A9, 0x868C, 0x86A3, 0x869C, 0x8870, 0x8877, 0x8881, 0x8882, - 0x887D, 0x8879, 0x8A18, 0x8A10, 0x8A0E, 0x8A0C, 0x8A15, 0x8A0A, - 0x8A17, 0x8A13, 0x8A16, 0x8A0F, 0x8A11, 0x8C48, 0x8C7A, 0x8C79, - 0x8CA1, 0x8CA2, 0x8D77, 0x8EAC, 0x8ED2, 0x8ED4, 0x8ECF, 0x8FB1, - 0x9001, 0x9006, 0x8FF7, 0x9000, 0x8FFA, 0x8FF4, 0x9003, 0x8FFD, - 0x9005, 0x8FF8, 0x9095, 0x90E1, 0x90DD, 0x90E2, 0x9152, 0x914D, - 0x914C, 0x91D8, 0x91DD, 0x91D7, 0x91DC, 0x91D9, 0x9583, 0x9662, - 0x9663, 0x9661, 0x965B, 0x965D, 0x9664, 0x9658, 0x965E, 0x96BB, - 0x98E2, 0x99AC, 0x9AA8, 0x9AD8, 0x9B25, 0x9B32, 0x9B3C, 0x4E7E, - 0x507A, 0x507D, 0x505C, 0x5047, 0x5043, 0x504C, 0x505A, 0x5049, - 0x5065, 0x5076, 0x504E, 0x5055, 0x5075, 0x5074, 0x5077, 0x504F, - 0x500F, 0x506F, 0x506D, 0x515C, 0x5195, 0x51F0, 0x526A, 0x526F, - 0x52D2, 0x52D9, 0x52D8, 0x52D5, 0x5310, 0x530F, 0x5319, 0x533F, - 0x5340, 0x533E, 0x53C3, 0x66FC, 0x5546, 0x556A, 0x5566, 0x5544, - 0x555E, 0x5561, 0x5543, 0x554A, 0x5531, 0x5556, 0x554F, 0x5555, - 0x552F, 0x5564, 0x5538, 0x552E, 0x555C, 0x552C, 0x5563, 0x5533, - 0x5541, 0x5557, 0x5708, 0x570B, 0x5709, 0x57DF, 0x5805, 0x580A, - 0x5806, 0x57E0, 0x57E4, 0x57FA, 0x5802, 0x5835, 0x57F7, 0x57F9, - 0x5920, 0x5962, 0x5A36, 0x5A41, 0x5A49, 0x5A66, 0x5A6A, 0x5A40, - 0x5A3C, 0x5A62, 0x5A5A, 0x5A46, 0x5A4A, 0x5B70, 0x5BC7, 0x5BC5, - 0x5BC4, 0x5BC2, 0x5BBF, 0x5BC6, 0x5C09, 0x5C08, 0x5C07, 0x5C60, - 0x5C5C, 0x5C5D, 0x5D07, 0x5D06, 0x5D0E, 0x5D1B, 0x5D16, 0x5D22, - 0x5D11, 0x5D29, 0x5D14, 0x5D19, 0x5D24, 0x5D27, 0x5D17, 0x5DE2, - 0x5E38, 0x5E36, 0x5E33, 0x5E37, 0x5EB7, 0x5EB8, 0x5EB6, 0x5EB5, - 0x5EBE, 0x5F35, 0x5F37, 0x5F57, 0x5F6C, 0x5F69, 0x5F6B, 0x5F97, -plane 11 -at 0x00 - 0x5F99, 0x5F9E, 0x5F98, 0x5FA1, 0x5FA0, 0x5F9C, 0x607F, 0x60A3, - 0x6089, 0x60A0, 0x60A8, 0x60CB, 0x60B4, 0x60E6, 0x60BD, 0x60C5, - 0x60BB, 0x60B5, 0x60DC, 0x60BC, 0x60D8, 0x60D5, 0x60C6, 0x60DF, - 0x60B8, 0x60DA, 0x60C7, 0x621A, 0x621B, 0x6248, 0x63A0, 0x63A7, - 0x6372, 0x6396, 0x63A2, 0x63A5, 0x6377, 0x6367, 0x6398, 0x63AA, - 0x6371, 0x63A9, 0x6389, 0x6383, 0x639B, 0x636B, 0x63A8, 0x6384, - 0x6388, 0x6399, 0x63A1, 0x63AC, 0x6392, 0x638F, 0x6380, 0x637B, - 0x6369, 0x6368, 0x637A, 0x655D, 0x6556, 0x6551, 0x6559, 0x6557, - 0x555F, 0x654F, 0x6558, 0x6555, 0x6554, 0x659C, 0x659B, 0x65AC, - 0x65CF, 0x65CB, 0x65CC, 0x65CE, 0x665D, 0x665A, 0x6664, 0x6668, - 0x6666, 0x665E, 0x66F9, 0x52D7, 0x671B, 0x6881, 0x68AF, 0x68A2, - 0x6893, 0x68B5, 0x687F, 0x6876, 0x68B1, 0x68A7, 0x6897, 0x68B0, - 0x6883, 0x68C4, 0x68AD, 0x6886, 0x6885, 0x6894, 0x689D, 0x68A8, - 0x689F, 0x68A1, 0x6882, 0x6B32, 0x6BBA, 0x6BEB, 0x6BEC, 0x6C2B, - 0x6D8E, 0x6DBC, 0x6DF3, 0x6DD9, 0x6DB2, 0x6DE1, 0x6DCC, 0x6DE4, - 0x6DFB, 0x6DFA, 0x6E05, 0x6DC7, 0x6DCB, 0x6DAF, 0x6DD1, 0x6DAE, - 0x6DDE, 0x6DF9, 0x6DB8, 0x6DF7, 0x6DF5, 0x6DC5, 0x6DD2, 0x6E1A, - 0x6DB5, 0x6DDA, 0x6DEB, 0x6DD8, 0x6DEA, 0x6DF1, 0x6DEE, 0x6DE8, - 0x6DC6, 0x6DC4, 0x6DAA, 0x6DEC, 0x6DBF, 0x6DE6, 0x70F9, 0x7109, - 0x710A, 0x70FD, 0x70EF, 0x723D, 0x727D, 0x7281, 0x731C, 0x731B, - 0x7316, 0x7313, 0x7319, 0x7387, 0x7405, 0x740A, 0x7403, 0x7406, - 0x73FE, 0x740D, 0x74E0, 0x74F6, 0x74F7, 0x751C, 0x7522, 0x7565, - 0x7566, 0x7562, 0x7570, 0x758F, 0x75D4, 0x75D5, 0x75B5, 0x75CA, - 0x75CD, 0x768E, 0x76D4, 0x76D2, 0x76DB, 0x7737, 0x773E, 0x773C, - 0x7736, 0x7738, 0x773A, 0x786B, 0x7843, 0x784E, 0x7965, 0x7968, - 0x796D, 0x79FB, 0x7A92, 0x7A95, 0x7B20, 0x7B28, 0x7B1B, 0x7B2C, - 0x7B26, 0x7B19, 0x7B1E, 0x7B2E, 0x7C92, 0x7C97, 0x7C95, 0x7D46, - 0x7D43, 0x7D71, 0x7D2E, 0x7D39, 0x7D3C, 0x7D40, 0x7D30, 0x7D33, - 0x7D44, 0x7D2F, 0x7D42, 0x7D32, 0x7D31, 0x7F3D, 0x7F9E, 0x7F9A, - 0x7FCC, 0x7FCE, 0x7FD2, 0x801C, 0x804A, 0x8046, 0x812F, 0x8116, - 0x8123, 0x812B, 0x8129, 0x8130, 0x8124, 0x8202, 0x8235, 0x8237, - 0x8236, 0x8239, 0x838E, 0x839E, 0x8398, 0x8378, 0x83A2, 0x8396, -plane 12 -at 0x00 - 0x83BD, 0x83AB, 0x8392, 0x838A, 0x8393, 0x8389, 0x83A0, 0x8377, - 0x837B, 0x837C, 0x8386, 0x83A7, 0x8655, 0x5F6A, 0x86C7, 0x86C0, - 0x86B6, 0x86C4, 0x86B5, 0x86C6, 0x86CB, 0x86B1, 0x86AF, 0x86C9, - 0x8853, 0x889E, 0x8888, 0x88AB, 0x8892, 0x8896, 0x888D, 0x888B, - 0x8993, 0x898F, 0x8A2A, 0x8A1D, 0x8A23, 0x8A25, 0x8A31, 0x8A2D, - 0x8A1F, 0x8A1B, 0x8A22, 0x8C49, 0x8C5A, 0x8CA9, 0x8CAC, 0x8CAB, - 0x8CA8, 0x8CAA, 0x8CA7, 0x8D67, 0x8D66, 0x8DBE, 0x8DBA, 0x8EDB, - 0x8EDF, 0x9019, 0x900D, 0x901A, 0x9017, 0x9023, 0x901F, 0x901D, - 0x9010, 0x9015, 0x901E, 0x9020, 0x900F, 0x9022, 0x9016, 0x901B, - 0x9014, 0x90E8, 0x90ED, 0x90FD, 0x9157, 0x91CE, 0x91F5, 0x91E6, - 0x91E3, 0x91E7, 0x91ED, 0x91E9, 0x9589, 0x966A, 0x9675, 0x9673, - 0x9678, 0x9670, 0x9674, 0x9676, 0x9677, 0x966C, 0x96C0, 0x96EA, - 0x96E9, 0x7AE0, 0x7ADF, 0x9802, 0x9803, 0x9B5A, 0x9CE5, 0x9E75, - 0x9E7F, 0x9EA5, 0x9EBB, 0x50A2, 0x508D, 0x5085, 0x5099, 0x5091, - 0x5080, 0x5096, 0x5098, 0x509A, 0x6700, 0x51F1, 0x5272, 0x5274, - 0x5275, 0x5269, 0x52DE, 0x52DD, 0x52DB, 0x535A, 0x53A5, 0x557B, - 0x5580, 0x55A7, 0x557C, 0x558A, 0x559D, 0x5598, 0x5582, 0x559C, - 0x55AA, 0x5594, 0x5587, 0x558B, 0x5583, 0x55B3, 0x55AE, 0x559F, - 0x553E, 0x55B2, 0x559A, 0x55BB, 0x55AC, 0x55B1, 0x557E, 0x5589, - 0x55AB, 0x5599, 0x570D, 0x582F, 0x582A, 0x5834, 0x5824, 0x5830, - 0x5831, 0x5821, 0x581D, 0x5820, 0x58F9, 0x58FA, 0x5960, 0x5A77, - 0x5A9A, 0x5A7F, 0x5A92, 0x5A9B, 0x5AA7, 0x5B73, 0x5B71, 0x5BD2, - 0x5BCC, 0x5BD3, 0x5BD0, 0x5C0A, 0x5C0B, 0x5C31, 0x5D4C, 0x5D50, - 0x5D34, 0x5D47, 0x5DFD, 0x5E45, 0x5E3D, 0x5E40, 0x5E43, 0x5E7E, - 0x5ECA, 0x5EC1, 0x5EC2, 0x5EC4, 0x5F3C, 0x5F6D, 0x5FA9, 0x5FAA, - 0x5FA8, 0x60D1, 0x60E1, 0x60B2, 0x60B6, 0x60E0, 0x611C, 0x6123, - 0x60FA, 0x6115, 0x60F0, 0x60FB, 0x60F4, 0x6168, 0x60F1, 0x610E, - 0x60F6, 0x6109, 0x6100, 0x6112, 0x621F, 0x6249, 0x63A3, 0x638C, - 0x63CF, 0x63C0, 0x63E9, 0x63C9, 0x63C6, 0x63CD, 0x63D2, 0x63E3, - 0x63D0, 0x63E1, 0x63D6, 0x63ED, 0x63EE, 0x6376, 0x63F4, 0x63EA, - 0x63DB, 0x6452, 0x63DA, 0x63F9, 0x655E, 0x6566, 0x6562, 0x6563, - 0x6591, 0x6590, 0x65AF, 0x666E, 0x6670, 0x6674, 0x6676, 0x666F, -plane 13 -at 0x00 - 0x6691, 0x667A, 0x667E, 0x6677, 0x66FE, 0x66FF, 0x671F, 0x671D, - 0x68FA, 0x68D5, 0x68E0, 0x68D8, 0x68D7, 0x6905, 0x68DF, 0x68F5, - 0x68EE, 0x68E7, 0x68F9, 0x68D2, 0x68F2, 0x68E3, 0x68CB, 0x68CD, - 0x690D, 0x6912, 0x690E, 0x68C9, 0x68DA, 0x696E, 0x68FB, 0x6B3E, - 0x6B3A, 0x6B3D, 0x6B98, 0x6B96, 0x6BBC, 0x6BEF, 0x6C2E, 0x6C2F, - 0x6C2C, 0x6E2F, 0x6E38, 0x6E54, 0x6E21, 0x6E32, 0x6E67, 0x6E4A, - 0x6E20, 0x6E25, 0x6E23, 0x6E1B, 0x6E5B, 0x6E58, 0x6E24, 0x6E56, - 0x6E6E, 0x6E2D, 0x6E26, 0x6E6F, 0x6E34, 0x6E4D, 0x6E3A, 0x6E2C, - 0x6E43, 0x6E1D, 0x6E3E, 0x6ECB, 0x6E89, 0x6E19, 0x6E4E, 0x6E63, - 0x6E44, 0x6E72, 0x6E69, 0x6E5F, 0x7119, 0x711A, 0x7126, 0x7130, - 0x7121, 0x7136, 0x716E, 0x711C, 0x724C, 0x7284, 0x7280, 0x7336, - 0x7325, 0x7334, 0x7329, 0x743A, 0x742A, 0x7433, 0x7422, 0x7425, - 0x7435, 0x7436, 0x7434, 0x742F, 0x741B, 0x7426, 0x7428, 0x7525, - 0x7526, 0x756B, 0x756A, 0x75E2, 0x75DB, 0x75E3, 0x75D9, 0x75D8, - 0x75DE, 0x75E0, 0x767B, 0x767C, 0x7696, 0x7693, 0x76B4, 0x76DC, - 0x774F, 0x77ED, 0x785D, 0x786C, 0x786F, 0x7A0D, 0x7A08, 0x7A0B, - 0x7A05, 0x7A00, 0x7A98, 0x7A97, 0x7A96, 0x7AE5, 0x7AE3, 0x7B49, - 0x7B56, 0x7B46, 0x7B50, 0x7B52, 0x7B54, 0x7B4D, 0x7B4B, 0x7B4F, - 0x7B51, 0x7C9F, 0x7CA5, 0x7D5E, 0x7D50, 0x7D68, 0x7D55, 0x7D2B, - 0x7D6E, 0x7D72, 0x7D61, 0x7D66, 0x7D62, 0x7D70, 0x7D73, 0x5584, - 0x7FD4, 0x7FD5, 0x800B, 0x8052, 0x8085, 0x8155, 0x8154, 0x814B, - 0x8151, 0x814E, 0x8139, 0x8146, 0x813E, 0x814C, 0x8153, 0x8174, - 0x8212, 0x821C, 0x83E9, 0x8403, 0x83F8, 0x840D, 0x83E0, 0x83C5, - 0x840B, 0x83C1, 0x83EF, 0x83F1, 0x83F4, 0x8457, 0x840A, 0x83F0, - 0x840C, 0x83CC, 0x83FD, 0x83F2, 0x83CA, 0x8438, 0x840E, 0x8404, - 0x83DC, 0x8407, 0x83D4, 0x83DF, 0x865B, 0x86DF, 0x86D9, 0x86ED, - 0x86D4, 0x86DB, 0x86E4, 0x86D0, 0x86DE, 0x8857, 0x88C1, 0x88C2, - 0x88B1, 0x8983, 0x8996, 0x8A3B, 0x8A60, 0x8A55, 0x8A5E, 0x8A3C, - 0x8A41, 0x8A54, 0x8A5B, 0x8A50, 0x8A46, 0x8A34, 0x8A3A, 0x8A36, - 0x8A56, 0x8C61, 0x8C82, 0x8CAF, 0x8CBC, 0x8CB3, 0x8CBD, 0x8CC1, - 0x8CBB, 0x8CC0, 0x8CB4, 0x8CB7, 0x8CB6, 0x8CBF, 0x8CB8, 0x8D8A, - 0x8D85, 0x8D81, 0x8DCE, 0x8DDD, 0x8DCB, 0x8DDA, 0x8DD1, 0x8DCC, -plane 14 -at 0x00 - 0x8DDB, 0x8DC6, 0x8EFB, 0x8EF8, 0x8EFC, 0x8F9C, 0x902E, 0x9035, - 0x9031, 0x9038, 0x9032, 0x9036, 0x9102, 0x90F5, 0x9109, 0x90FE, - 0x9163, 0x9165, 0x91CF, 0x9214, 0x9215, 0x9223, 0x9209, 0x921E, - 0x920D, 0x9210, 0x9207, 0x9211, 0x9594, 0x958F, 0x958B, 0x9591, - 0x9593, 0x9592, 0x958E, 0x968A, 0x968E, 0x968B, 0x967D, 0x9685, - 0x9686, 0x968D, 0x9672, 0x9684, 0x96C1, 0x96C5, 0x96C4, 0x96C6, - 0x96C7, 0x96EF, 0x96F2, 0x97CC, 0x9805, 0x9806, 0x9808, 0x98E7, - 0x98EA, 0x98EF, 0x98E9, 0x98F2, 0x98ED, 0x99AE, 0x99AD, 0x9EC3, - 0x9ECD, 0x9ED1, 0x4E82, 0x50AD, 0x50B5, 0x50B2, 0x50B3, 0x50C5, - 0x50BE, 0x50AC, 0x50B7, 0x50BB, 0x50AF, 0x50C7, 0x527F, 0x5277, - 0x527D, 0x52DF, 0x52E6, 0x52E4, 0x52E2, 0x52E3, 0x532F, 0x55DF, - 0x55E8, 0x55D3, 0x55E6, 0x55CE, 0x55DC, 0x55C7, 0x55D1, 0x55E3, - 0x55E4, 0x55EF, 0x55DA, 0x55E1, 0x55C5, 0x55C6, 0x55E5, 0x55C9, - 0x5712, 0x5713, 0x585E, 0x5851, 0x5858, 0x5857, 0x585A, 0x5854, - 0x586B, 0x584C, 0x586D, 0x584A, 0x5862, 0x5852, 0x584B, 0x5967, - 0x5AC1, 0x5AC9, 0x5ACC, 0x5ABE, 0x5ABD, 0x5ABC, 0x5AB3, 0x5AC2, - 0x5AB2, 0x5D69, 0x5D6F, 0x5E4C, 0x5E79, 0x5EC9, 0x5EC8, 0x5F12, - 0x5F59, 0x5FAC, 0x5FAE, 0x611A, 0x610F, 0x6148, 0x611F, 0x60F3, - 0x611B, 0x60F9, 0x6101, 0x6108, 0x614E, 0x614C, 0x6144, 0x614D, - 0x613E, 0x6134, 0x6127, 0x610D, 0x6106, 0x6137, 0x6221, 0x6222, - 0x6413, 0x643E, 0x641E, 0x642A, 0x642D, 0x643D, 0x642C, 0x640F, - 0x641C, 0x6414, 0x640D, 0x6436, 0x6416, 0x6417, 0x6406, 0x656C, - 0x659F, 0x65B0, 0x6697, 0x6689, 0x6687, 0x6688, 0x6696, 0x6684, - 0x6698, 0x668D, 0x6703, 0x6994, 0x696D, 0x695A, 0x6977, 0x6960, - 0x6954, 0x6975, 0x6930, 0x6982, 0x694A, 0x6968, 0x696B, 0x695E, - 0x6953, 0x6979, 0x6986, 0x695D, 0x6963, 0x695B, 0x6B47, 0x6B72, - 0x6BC0, 0x6BBF, 0x6BD3, 0x6BFD, 0x6EA2, 0x6EAF, 0x6ED3, 0x6EB6, - 0x6EC2, 0x6E90, 0x6E9D, 0x6EC7, 0x6EC5, 0x6EA5, 0x6E98, 0x6EBC, - 0x6EBA, 0x6EAB, 0x6ED1, 0x6E96, 0x6E9C, 0x6EC4, 0x6ED4, 0x6EAA, - 0x6EA7, 0x6EB4, 0x714E, 0x7159, 0x7169, 0x7164, 0x7149, 0x7167, - 0x715C, 0x716C, 0x7166, 0x714C, 0x7165, 0x715E, 0x7146, 0x7168, - 0x7156, 0x723A, 0x7252, 0x7337, 0x7345, 0x733F, 0x733E, 0x746F, -plane 15 -at 0x00 - 0x745A, 0x7455, 0x745F, 0x745E, 0x7441, 0x743F, 0x7459, 0x745B, - 0x745C, 0x7576, 0x7578, 0x7600, 0x75F0, 0x7601, 0x75F2, 0x75F1, - 0x75FA, 0x75FF, 0x75F4, 0x75F3, 0x76DE, 0x76DF, 0x775B, 0x776B, - 0x7766, 0x775E, 0x7763, 0x7779, 0x776A, 0x776C, 0x775C, 0x7765, - 0x7768, 0x7762, 0x77EE, 0x788E, 0x78B0, 0x7897, 0x7898, 0x788C, - 0x7889, 0x787C, 0x7891, 0x7893, 0x787F, 0x797A, 0x797F, 0x7981, - 0x842C, 0x79BD, 0x7A1C, 0x7A1A, 0x7A20, 0x7A14, 0x7A1F, 0x7A1E, - 0x7A9F, 0x7AA0, 0x7B77, 0x7BC0, 0x7B60, 0x7B6E, 0x7B67, 0x7CB1, - 0x7CB3, 0x7CB5, 0x7D93, 0x7D79, 0x7D91, 0x7D81, 0x7D8F, 0x7D5B, - 0x7F6E, 0x7F69, 0x7F6A, 0x7F72, 0x7FA9, 0x7FA8, 0x7FA4, 0x8056, - 0x8058, 0x8086, 0x8084, 0x8171, 0x8170, 0x8178, 0x8165, 0x816E, - 0x8173, 0x816B, 0x8179, 0x817A, 0x8166, 0x8205, 0x8247, 0x8482, - 0x8477, 0x843D, 0x8431, 0x8475, 0x8466, 0x846B, 0x8449, 0x846C, - 0x845B, 0x843C, 0x8435, 0x8461, 0x8463, 0x8469, 0x846D, 0x8446, - 0x865E, 0x865C, 0x865F, 0x86F9, 0x8713, 0x8708, 0x8707, 0x8700, - 0x86FE, 0x86FB, 0x8702, 0x8703, 0x8706, 0x870A, 0x8859, 0x88DF, - 0x88D4, 0x88D9, 0x88DC, 0x88D8, 0x88DD, 0x88E1, 0x88CA, 0x88D5, - 0x88D2, 0x899C, 0x89E3, 0x8A6B, 0x8A72, 0x8A73, 0x8A66, 0x8A69, - 0x8A70, 0x8A87, 0x8A7C, 0x8A63, 0x8AA0, 0x8A71, 0x8A85, 0x8A6D, - 0x8A62, 0x8A6E, 0x8A6C, 0x8A79, 0x8A7B, 0x8A3E, 0x8A68, 0x8C62, - 0x8C8A, 0x8C89, 0x8CCA, 0x8CC7, 0x8CC8, 0x8CC4, 0x8CB2, 0x8CC3, - 0x8CC2, 0x8CC5, 0x8DE1, 0x8DDF, 0x8DE8, 0x8DEF, 0x8DF3, 0x8DFA, - 0x8DEA, 0x8DE4, 0x8DE6, 0x8EB2, 0x8F03, 0x8F09, 0x8EFE, 0x8F0A, - 0x8F9F, 0x8FB2, 0x904B, 0x904A, 0x9053, 0x9042, 0x9054, 0x903C, - 0x9055, 0x9050, 0x9047, 0x904F, 0x904E, 0x904D, 0x9051, 0x903E, - 0x9041, 0x9112, 0x9117, 0x916C, 0x916A, 0x9169, 0x91C9, 0x9237, - 0x9257, 0x9238, 0x923D, 0x9240, 0x923E, 0x925B, 0x924B, 0x9264, - 0x9251, 0x9234, 0x9249, 0x924D, 0x9245, 0x9239, 0x923F, 0x925A, - 0x9598, 0x9698, 0x9694, 0x9695, 0x96CD, 0x96CB, 0x96C9, 0x96CA, - 0x96F7, 0x96FB, 0x96F9, 0x96F6, 0x9756, 0x9774, 0x9776, 0x9810, - 0x9811, 0x9813, 0x980A, 0x9812, 0x980C, 0x98FC, 0x98F4, 0x98FD, - 0x98FE, 0x99B3, 0x99B1, 0x99B4, 0x9AE1, 0x9CE9, 0x9E82, 0x9F0E, -plane 16 -at 0x00 - 0x9F13, 0x9F20, 0x50E7, 0x50EE, 0x50E5, 0x50D6, 0x50ED, 0x50DA, - 0x50D5, 0x50CF, 0x50D1, 0x50F1, 0x50CE, 0x50E9, 0x5162, 0x51F3, - 0x5283, 0x5282, 0x5331, 0x53AD, 0x55FE, 0x5600, 0x561B, 0x5617, - 0x55FD, 0x5614, 0x5606, 0x5609, 0x560D, 0x560E, 0x55F7, 0x5616, - 0x561F, 0x5608, 0x5610, 0x55F6, 0x5718, 0x5716, 0x5875, 0x587E, - 0x5883, 0x5893, 0x588A, 0x5879, 0x5885, 0x587D, 0x58FD, 0x5925, - 0x5922, 0x5924, 0x596A, 0x5969, 0x5AE1, 0x5AE6, 0x5AE9, 0x5AD7, - 0x5AD6, 0x5AD8, 0x5AE3, 0x5B75, 0x5BDE, 0x5BE7, 0x5BE1, 0x5BE5, - 0x5BE6, 0x5BE8, 0x5BE2, 0x5BE4, 0x5BDF, 0x5C0D, 0x5C62, 0x5D84, - 0x5D87, 0x5E5B, 0x5E63, 0x5E55, 0x5E57, 0x5E54, 0x5ED3, 0x5ED6, - 0x5F0A, 0x5F46, 0x5F70, 0x5FB9, 0x6147, 0x613F, 0x614B, 0x6177, - 0x6162, 0x6163, 0x615F, 0x615A, 0x6158, 0x6175, 0x622A, 0x6487, - 0x6458, 0x6454, 0x64A4, 0x6478, 0x645F, 0x647A, 0x6451, 0x6467, - 0x6434, 0x646D, 0x647B, 0x6572, 0x65A1, 0x65D7, 0x65D6, 0x66A2, - 0x66A8, 0x669D, 0x699C, 0x69A8, 0x6995, 0x69C1, 0x69AE, 0x69D3, - 0x69CB, 0x699B, 0x69B7, 0x69BB, 0x69AB, 0x69B4, 0x69D0, 0x69CD, - 0x69AD, 0x69CC, 0x69A6, 0x69C3, 0x69A3, 0x6B49, 0x6B4C, 0x6C33, - 0x6F33, 0x6F14, 0x6EFE, 0x6F13, 0x6EF4, 0x6F29, 0x6F3E, 0x6F20, - 0x6F2C, 0x6F0F, 0x6F02, 0x6F22, 0x6EFF, 0x6EEF, 0x6F06, 0x6F31, - 0x6F38, 0x6F32, 0x6F23, 0x6F15, 0x6F2B, 0x6F2F, 0x6F88, 0x6F2A, - 0x6EEC, 0x6F01, 0x6EF2, 0x6ECC, 0x6EF7, 0x7194, 0x7199, 0x717D, - 0x718A, 0x7184, 0x7192, 0x723E, 0x7292, 0x7296, 0x7344, 0x7350, - 0x7464, 0x7463, 0x746A, 0x7470, 0x746D, 0x7504, 0x7591, 0x7627, - 0x760D, 0x760B, 0x7609, 0x7613, 0x76E1, 0x76E3, 0x7784, 0x777D, - 0x777F, 0x7761, 0x78C1, 0x789F, 0x78A7, 0x78B3, 0x78A9, 0x78A3, - 0x798E, 0x798F, 0x798D, 0x7A2E, 0x7A31, 0x7AAA, 0x7AA9, 0x7AED, - 0x7AEF, 0x7BA1, 0x7B95, 0x7B8B, 0x7B75, 0x7B97, 0x7B9D, 0x7B94, - 0x7B8F, 0x7BB8, 0x7B87, 0x7B84, 0x7CB9, 0x7CBD, 0x7CBE, 0x7DBB, - 0x7DB0, 0x7D9C, 0x7DBD, 0x7DBE, 0x7DA0, 0x7DCA, 0x7DB4, 0x7DB2, - 0x7DB1, 0x7DBA, 0x7DA2, 0x7DBF, 0x7DB5, 0x7DB8, 0x7DAD, 0x7DD2, - 0x7DC7, 0x7DAC, 0x7F70, 0x7FE0, 0x7FE1, 0x7FDF, 0x805E, 0x805A, - 0x8087, 0x8150, 0x8180, 0x818F, 0x8188, 0x818A, 0x817F, 0x8182, -plane 17 -at 0x00 - 0x81E7, 0x81FA, 0x8207, 0x8214, 0x821E, 0x824B, 0x84C9, 0x84BF, - 0x84C6, 0x84C4, 0x8499, 0x849E, 0x84B2, 0x849C, 0x84CB, 0x84B8, - 0x84C0, 0x84D3, 0x8490, 0x84BC, 0x84D1, 0x84CA, 0x873F, 0x871C, - 0x873B, 0x8722, 0x8725, 0x8734, 0x8718, 0x8755, 0x8737, 0x8729, - 0x88F3, 0x8902, 0x88F4, 0x88F9, 0x88F8, 0x88FD, 0x88E8, 0x891A, - 0x88EF, 0x8AA6, 0x8A8C, 0x8A9E, 0x8AA3, 0x8A8D, 0x8AA1, 0x8A93, - 0x8AA4, 0x8AAA, 0x8AA5, 0x8AA8, 0x8A98, 0x8A91, 0x8A9A, 0x8AA7, - 0x8C6A, 0x8C8D, 0x8C8C, 0x8CD3, 0x8CD1, 0x8CD2, 0x8D6B, 0x8D99, - 0x8D95, 0x8DFC, 0x8F14, 0x8F12, 0x8F15, 0x8F13, 0x8FA3, 0x9060, - 0x9058, 0x905C, 0x9063, 0x9059, 0x905E, 0x9062, 0x905D, 0x905B, - 0x9119, 0x9118, 0x911E, 0x9175, 0x9178, 0x9177, 0x9174, 0x9278, - 0x9280, 0x9285, 0x9298, 0x9296, 0x927B, 0x9293, 0x929C, 0x92A8, - 0x927C, 0x9291, 0x95A1, 0x95A8, 0x95A9, 0x95A3, 0x95A5, 0x95A4, - 0x9699, 0x969C, 0x969B, 0x96CC, 0x96D2, 0x9700, 0x977C, 0x9785, - 0x97F6, 0x9817, 0x9818, 0x98AF, 0x98B1, 0x9903, 0x9905, 0x990C, - 0x9909, 0x99C1, 0x9AAF, 0x9AB0, 0x9AE6, 0x9B41, 0x9B42, 0x9CF4, - 0x9CF6, 0x9CF3, 0x9EBC, 0x9F3B, 0x9F4A, 0x5104, 0x5100, 0x50FB, - 0x50F5, 0x50F9, 0x5102, 0x5108, 0x5109, 0x5105, 0x51DC, 0x5287, - 0x5288, 0x5289, 0x528D, 0x528A, 0x52F0, 0x53B2, 0x562E, 0x563B, - 0x5639, 0x5632, 0x563F, 0x5634, 0x5629, 0x5653, 0x564E, 0x5657, - 0x5674, 0x5636, 0x562F, 0x5630, 0x5880, 0x589F, 0x589E, 0x58B3, - 0x589C, 0x58AE, 0x58A9, 0x58A6, 0x596D, 0x5B09, 0x5AFB, 0x5B0B, - 0x5AF5, 0x5B0C, 0x5B08, 0x5BEE, 0x5BEC, 0x5BE9, 0x5BEB, 0x5C64, - 0x5C65, 0x5D9D, 0x5D94, 0x5E62, 0x5E5F, 0x5E61, 0x5EE2, 0x5EDA, - 0x5EDF, 0x5EDD, 0x5EE3, 0x5EE0, 0x5F48, 0x5F71, 0x5FB7, 0x5FB5, - 0x6176, 0x6167, 0x616E, 0x615D, 0x6155, 0x6182, 0x617C, 0x6170, - 0x616B, 0x617E, 0x61A7, 0x6190, 0x61AB, 0x618E, 0x61AC, 0x619A, - 0x61A4, 0x6194, 0x61AE, 0x622E, 0x6469, 0x646F, 0x6479, 0x649E, - 0x64B2, 0x6488, 0x6490, 0x64B0, 0x64A5, 0x6493, 0x6495, 0x64A9, - 0x6492, 0x64AE, 0x64AD, 0x64AB, 0x649A, 0x64AC, 0x6499, 0x64A2, - 0x64B3, 0x6575, 0x6577, 0x6578, 0x66AE, 0x66AB, 0x66B4, 0x66B1, - 0x6A23, 0x6A1F, 0x69E8, 0x6A01, 0x6A1E, 0x6A19, 0x69FD, 0x6A21, -plane 18 -at 0x00 - 0x6A13, 0x6A0A, 0x69F3, 0x6A02, 0x6A05, 0x69ED, 0x6A11, 0x6B50, - 0x6B4E, 0x6BA4, 0x6BC5, 0x6BC6, 0x6F3F, 0x6F7C, 0x6F84, 0x6F51, - 0x6F66, 0x6F54, 0x6F86, 0x6F6D, 0x6F5B, 0x6F78, 0x6F6E, 0x6F8E, - 0x6F7A, 0x6F70, 0x6F64, 0x6F97, 0x6F58, 0x6ED5, 0x6F6F, 0x6F60, - 0x6F5F, 0x719F, 0x71AC, 0x71B1, 0x71A8, 0x7256, 0x729B, 0x734E, - 0x7357, 0x7469, 0x748B, 0x7483, 0x747E, 0x7480, 0x757F, 0x7620, - 0x7629, 0x761F, 0x7624, 0x7626, 0x7621, 0x7622, 0x769A, 0x76BA, - 0x76E4, 0x778E, 0x7787, 0x778C, 0x7791, 0x778B, 0x78CB, 0x78C5, - 0x78BA, 0x78CA, 0x78BE, 0x78D5, 0x78BC, 0x78D0, 0x7A3F, 0x7A3C, - 0x7A40, 0x7A3D, 0x7A37, 0x7A3B, 0x7AAF, 0x7AAE, 0x7BAD, 0x7BB1, - 0x7BC4, 0x7BB4, 0x7BC6, 0x7BC7, 0x7BC1, 0x7BA0, 0x7BCC, 0x7CCA, - 0x7DE0, 0x7DF4, 0x7DEF, 0x7DFB, 0x7DD8, 0x7DEC, 0x7DDD, 0x7DE8, - 0x7DE3, 0x7DDA, 0x7DDE, 0x7DE9, 0x7D9E, 0x7DD9, 0x7DF2, 0x7DF9, - 0x7F75, 0x7F77, 0x7FAF, 0x7FE9, 0x8026, 0x819B, 0x819C, 0x819D, - 0x81A0, 0x819A, 0x8198, 0x8517, 0x853D, 0x851A, 0x84EE, 0x852C, - 0x852D, 0x8513, 0x8511, 0x8523, 0x8521, 0x8514, 0x84EC, 0x8525, - 0x84FF, 0x8506, 0x8782, 0x8774, 0x8776, 0x8760, 0x8766, 0x8778, - 0x8768, 0x8759, 0x8757, 0x874C, 0x8753, 0x885B, 0x885D, 0x8910, - 0x8907, 0x8912, 0x8913, 0x8915, 0x890A, 0x8ABC, 0x8AD2, 0x8AC7, - 0x8AC4, 0x8A95, 0x8ACB, 0x8AF8, 0x8AB2, 0x8AC9, 0x8AC2, 0x8ABF, - 0x8AB0, 0x8AD6, 0x8ACD, 0x8AB6, 0x8AB9, 0x8ADB, 0x8C4C, 0x8C4E, - 0x8C6C, 0x8CE0, 0x8CDE, 0x8CE6, 0x8CE4, 0x8CEC, 0x8CED, 0x8CE2, - 0x8CE3, 0x8CDC, 0x8CEA, 0x8CE1, 0x8D6D, 0x8D9F, 0x8DA3, 0x8E2B, - 0x8E10, 0x8E1D, 0x8E22, 0x8E0F, 0x8E29, 0x8E1F, 0x8E21, 0x8E1E, - 0x8EBA, 0x8F1D, 0x8F1B, 0x8F1F, 0x8F29, 0x8F26, 0x8F2A, 0x8F1C, - 0x8F1E, 0x8F25, 0x9069, 0x906E, 0x9068, 0x906D, 0x9077, 0x9130, - 0x912D, 0x9127, 0x9131, 0x9187, 0x9189, 0x918B, 0x9183, 0x92C5, - 0x92BB, 0x92B7, 0x92EA, 0x92AC, 0x92E4, 0x92C1, 0x92B3, 0x92BC, - 0x92D2, 0x92C7, 0x92F0, 0x92B2, 0x95AD, 0x95B1, 0x9704, 0x9706, - 0x9707, 0x9709, 0x9760, 0x978D, 0x978B, 0x978F, 0x9821, 0x982B, - 0x981C, 0x98B3, 0x990A, 0x9913, 0x9912, 0x9918, 0x99DD, 0x99D0, - 0x99DF, 0x99DB, 0x99D1, 0x99D5, 0x99D2, 0x99D9, 0x9AB7, 0x9AEE, -plane 19 -at 0x00 - 0x9AEF, 0x9B27, 0x9B45, 0x9B44, 0x9B77, 0x9B6F, 0x9D06, 0x9D09, - 0x9D03, 0x9EA9, 0x9EBE, 0x9ECE, 0x58A8, 0x9F52, 0x5112, 0x5118, - 0x5114, 0x5110, 0x5115, 0x5180, 0x51AA, 0x51DD, 0x5291, 0x5293, - 0x52F3, 0x5659, 0x566B, 0x5679, 0x5669, 0x5664, 0x5678, 0x566A, - 0x5668, 0x5665, 0x5671, 0x566F, 0x566C, 0x5662, 0x5676, 0x58C1, - 0x58BE, 0x58C7, 0x58C5, 0x596E, 0x5B1D, 0x5B34, 0x5B78, 0x5BF0, - 0x5C0E, 0x5F4A, 0x61B2, 0x6191, 0x61A9, 0x618A, 0x61CD, 0x61B6, - 0x61BE, 0x61CA, 0x61C8, 0x6230, 0x64C5, 0x64C1, 0x64CB, 0x64BB, - 0x64BC, 0x64DA, 0x64C4, 0x64C7, 0x64C2, 0x64CD, 0x64BF, 0x64D2, - 0x64D4, 0x64BE, 0x6574, 0x66C6, 0x66C9, 0x66B9, 0x66C4, 0x66C7, - 0x66B8, 0x6A3D, 0x6A38, 0x6A3A, 0x6A59, 0x6A6B, 0x6A58, 0x6A39, - 0x6A44, 0x6A62, 0x6A61, 0x6A4B, 0x6A47, 0x6A35, 0x6A5F, 0x6A48, - 0x6B59, 0x6B77, 0x6C05, 0x6FC2, 0x6FB1, 0x6FA1, 0x6FC3, 0x6FA4, - 0x6FC1, 0x6FA7, 0x6FB3, 0x6FC0, 0x6FB9, 0x6FB6, 0x6FA6, 0x6FA0, - 0x6FB4, 0x71BE, 0x71C9, 0x71D0, 0x71D2, 0x71C8, 0x71D5, 0x71B9, - 0x71CE, 0x71D9, 0x71DC, 0x71C3, 0x71C4, 0x7368, 0x749C, 0x74A3, - 0x7498, 0x749F, 0x749E, 0x74E2, 0x750C, 0x750D, 0x7634, 0x7638, - 0x763A, 0x76E7, 0x76E5, 0x77A0, 0x779E, 0x779F, 0x77A5, 0x78E8, - 0x78DA, 0x78EC, 0x78E7, 0x79A6, 0x7A4D, 0x7A4E, 0x7A46, 0x7A4C, - 0x7A4B, 0x7ABA, 0x7BD9, 0x7C11, 0x7BC9, 0x7BE4, 0x7BDB, 0x7BE1, - 0x7BE9, 0x7BE6, 0x7CD5, 0x7CD6, 0x7E0A, 0x7E11, 0x7E08, 0x7E1B, - 0x7E23, 0x7E1E, 0x7E1D, 0x7E09, 0x7E10, 0x7F79, 0x7FB2, 0x7FF0, - 0x7FF1, 0x7FEE, 0x8028, 0x81B3, 0x81A9, 0x81A8, 0x81FB, 0x8208, - 0x8258, 0x8259, 0x854A, 0x8559, 0x8548, 0x8568, 0x8569, 0x8543, - 0x8549, 0x856D, 0x856A, 0x855E, 0x8783, 0x879F, 0x879E, 0x87A2, - 0x878D, 0x8861, 0x892A, 0x8932, 0x8925, 0x892B, 0x8921, 0x89AA, - 0x89A6, 0x8AE6, 0x8AFA, 0x8AEB, 0x8AF1, 0x8B00, 0x8ADC, 0x8AE7, - 0x8AEE, 0x8AFE, 0x8B01, 0x8B02, 0x8AF7, 0x8AED, 0x8AF3, 0x8AF6, - 0x8AFC, 0x8C6B, 0x8C6D, 0x8C93, 0x8CF4, 0x8E44, 0x8E31, 0x8E34, - 0x8E42, 0x8E39, 0x8E35, 0x8F3B, 0x8F2F, 0x8F38, 0x8F33, 0x8FA8, - 0x8FA6, 0x9075, 0x9074, 0x9078, 0x9072, 0x907C, 0x907A, 0x9134, - 0x9192, 0x9320, 0x9336, 0x92F8, 0x9333, 0x932F, 0x9322, 0x92FC, -plane 20 -at 0x00 - 0x932B, 0x9304, 0x931A, 0x9310, 0x9326, 0x9321, 0x9315, 0x932E, - 0x9319, 0x95BB, 0x96A7, 0x96A8, 0x96AA, 0x96D5, 0x970E, 0x9711, - 0x9716, 0x970D, 0x9713, 0x970F, 0x975B, 0x975C, 0x9766, 0x9798, - 0x9830, 0x9838, 0x983B, 0x9837, 0x982D, 0x9839, 0x9824, 0x9910, - 0x9928, 0x991E, 0x991B, 0x9921, 0x991A, 0x99ED, 0x99E2, 0x99F1, - 0x9AB8, 0x9ABC, 0x9AFB, 0x9AED, 0x9B28, 0x9B91, 0x9D15, 0x9D23, - 0x9D26, 0x9D28, 0x9D12, 0x9D1B, 0x9ED8, 0x9ED4, 0x9F8D, 0x9F9C, - 0x512A, 0x511F, 0x5121, 0x5132, 0x52F5, 0x568E, 0x5680, 0x5690, - 0x5685, 0x5687, 0x568F, 0x58D5, 0x58D3, 0x58D1, 0x58CE, 0x5B30, - 0x5B2A, 0x5B24, 0x5B7A, 0x5C37, 0x5C68, 0x5DBC, 0x5DBA, 0x5DBD, - 0x5DB8, 0x5E6B, 0x5F4C, 0x5FBD, 0x61C9, 0x61C2, 0x61C7, 0x61E6, - 0x61CB, 0x6232, 0x6234, 0x64CE, 0x64CA, 0x64D8, 0x64E0, 0x64F0, - 0x64E6, 0x64EC, 0x64F1, 0x64E2, 0x64ED, 0x6582, 0x6583, 0x66D9, - 0x66D6, 0x6A80, 0x6A94, 0x6A84, 0x6AA2, 0x6A9C, 0x6ADB, 0x6AA3, - 0x6A7E, 0x6A97, 0x6A90, 0x6AA0, 0x6B5C, 0x6BAE, 0x6BDA, 0x6C08, - 0x6FD8, 0x6FF1, 0x6FDF, 0x6FE0, 0x6FDB, 0x6FE4, 0x6FEB, 0x6FEF, - 0x6F80, 0x6FEC, 0x6FE1, 0x6FE9, 0x6FD5, 0x6FEE, 0x6FF0, 0x71E7, - 0x71DF, 0x71EE, 0x71E6, 0x71E5, 0x71ED, 0x71EC, 0x71F4, 0x71E0, - 0x7235, 0x7246, 0x7370, 0x7372, 0x74A9, 0x74B0, 0x74A6, 0x74A8, - 0x7646, 0x7642, 0x764C, 0x76EA, 0x77B3, 0x77AA, 0x77B0, 0x77AC, - 0x77A7, 0x77AD, 0x77EF, 0x78F7, 0x78FA, 0x78F4, 0x78EF, 0x7901, - 0x79A7, 0x79AA, 0x7A57, 0x7ABF, 0x7C07, 0x7C0D, 0x7BFE, 0x7BF7, - 0x7C0C, 0x7BE0, 0x7CE0, 0x7CDC, 0x7CDE, 0x7CE2, 0x7CDF, 0x7CD9, - 0x7CDD, 0x7E2E, 0x7E3E, 0x7E46, 0x7E37, 0x7E32, 0x7E43, 0x7E2B, - 0x7E3D, 0x7E31, 0x7E45, 0x7E41, 0x7E34, 0x7E39, 0x7E48, 0x7E35, - 0x7E3F, 0x7E2F, 0x7F44, 0x7FF3, 0x7FFC, 0x8071, 0x8072, 0x8070, - 0x806F, 0x8073, 0x81C6, 0x81C3, 0x81BA, 0x81C2, 0x81C0, 0x81BF, - 0x81BD, 0x81C9, 0x81BE, 0x81E8, 0x8209, 0x8271, 0x85AA, 0x8584, - 0x857E, 0x859C, 0x8591, 0x8594, 0x85AF, 0x859B, 0x8587, 0x85A8, - 0x858A, 0x8667, 0x87C0, 0x87D1, 0x87B3, 0x87D2, 0x87C6, 0x87AB, - 0x87BB, 0x87BA, 0x87C8, 0x87CB, 0x893B, 0x8936, 0x8944, 0x8938, - 0x893D, 0x89AC, 0x8B0E, 0x8B17, 0x8B19, 0x8B1B, 0x8B0A, 0x8B20, -plane 21 -at 0x00 - 0x8B1D, 0x8B04, 0x8B10, 0x8C41, 0x8C3F, 0x8C73, 0x8CFA, 0x8CFD, - 0x8CFC, 0x8CF8, 0x8CFB, 0x8DA8, 0x8E49, 0x8E4B, 0x8E48, 0x8E4A, - 0x8F44, 0x8F3E, 0x8F42, 0x8F45, 0x8F3F, 0x907F, 0x907D, 0x9084, - 0x9081, 0x9082, 0x9080, 0x9139, 0x91A3, 0x919E, 0x919C, 0x934D, - 0x9382, 0x9328, 0x9375, 0x934A, 0x9365, 0x934B, 0x9318, 0x937E, - 0x936C, 0x935B, 0x9370, 0x935A, 0x9354, 0x95CA, 0x95CB, 0x95CC, - 0x95C8, 0x95C6, 0x96B1, 0x96B8, 0x96D6, 0x971C, 0x971E, 0x97A0, - 0x97D3, 0x9846, 0x98B6, 0x9935, 0x9A01, 0x99FF, 0x9BAE, 0x9BAB, - 0x9BAA, 0x9BAD, 0x9D3B, 0x9D3F, 0x9E8B, 0x9ECF, 0x9EDE, 0x9EDC, - 0x9EDD, 0x9EDB, 0x9F3E, 0x9F4B, 0x53E2, 0x5695, 0x56AE, 0x58D9, - 0x58D8, 0x5B38, 0x5F5D, 0x61E3, 0x6233, 0x64F4, 0x64F2, 0x64FE, - 0x6506, 0x64FA, 0x64FB, 0x64F7, 0x65B7, 0x66DC, 0x6726, 0x6AB3, - 0x6AAC, 0x6AC3, 0x6ABB, 0x6AB8, 0x6AC2, 0x6AAE, 0x6AAF, 0x6B5F, - 0x6B78, 0x6BAF, 0x7009, 0x700B, 0x6FFE, 0x7006, 0x6FFA, 0x7011, - 0x700F, 0x71FB, 0x71FC, 0x71FE, 0x71F8, 0x7377, 0x7375, 0x74A7, - 0x74BF, 0x7515, 0x7656, 0x7658, 0x7652, 0x77BD, 0x77BF, 0x77BB, - 0x77BC, 0x790E, 0x79AE, 0x7A61, 0x7A62, 0x7A60, 0x7AC4, 0x7AC5, - 0x7C2B, 0x7C27, 0x7C2A, 0x7C1E, 0x7C23, 0x7C21, 0x7CE7, 0x7E54, - 0x7E55, 0x7E5E, 0x7E5A, 0x7E61, 0x7E52, 0x7E59, 0x7F48, 0x7FF9, - 0x7FFB, 0x8077, 0x8076, 0x81CD, 0x81CF, 0x820A, 0x85CF, 0x85A9, - 0x85CD, 0x85D0, 0x85C9, 0x85B0, 0x85BA, 0x85B9, 0x85A6, 0x87EF, - 0x87EC, 0x87F2, 0x87E0, 0x8986, 0x89B2, 0x89F4, 0x8B28, 0x8B39, - 0x8B2C, 0x8B2B, 0x8C50, 0x8D05, 0x8E59, 0x8E63, 0x8E66, 0x8E64, - 0x8E5F, 0x8E55, 0x8EC0, 0x8F49, 0x8F4D, 0x9087, 0x9083, 0x9088, - 0x91AB, 0x91AC, 0x91D0, 0x9394, 0x938A, 0x9396, 0x93A2, 0x93B3, - 0x93AE, 0x93AC, 0x93B0, 0x9398, 0x939A, 0x9397, 0x95D4, 0x95D6, - 0x95D0, 0x95D5, 0x96E2, 0x96DC, 0x96D9, 0x96DB, 0x96DE, 0x9724, - 0x97A3, 0x97A6, 0x97AD, 0x97F9, 0x984D, 0x984F, 0x984C, 0x984E, - 0x9853, 0x98BA, 0x993E, 0x993F, 0x993D, 0x992E, 0x99A5, 0x9A0E, - 0x9AC1, 0x9B03, 0x9B06, 0x9B4F, 0x9B4E, 0x9B4D, 0x9BCA, 0x9BC9, - 0x9BFD, 0x9BC8, 0x9BC0, 0x9D51, 0x9D5D, 0x9D60, 0x9EE0, 0x9F15, - 0x9F2C, 0x5133, 0x56A5, 0x58DE, 0x58DF, 0x58E2, 0x5BF5, 0x9F90, -plane 22 -at 0x00 - 0x5EEC, 0x61F2, 0x61F7, 0x61F6, 0x61F5, 0x6500, 0x650F, 0x66E0, - 0x66DD, 0x6AE5, 0x6ADD, 0x6ADA, 0x6AD3, 0x701B, 0x701F, 0x7028, - 0x701A, 0x701D, 0x7015, 0x7018, 0x7206, 0x720D, 0x7258, 0x72A2, - 0x7378, 0x737A, 0x74BD, 0x74CA, 0x74E3, 0x7587, 0x7586, 0x765F, - 0x7661, 0x77C7, 0x7919, 0x79B1, 0x7A6B, 0x7A69, 0x7C3E, 0x7C3F, - 0x7C38, 0x7C3D, 0x7C37, 0x7C40, 0x7E6B, 0x7E6D, 0x7E79, 0x7E69, - 0x7E6A, 0x7F85, 0x7E73, 0x7FB6, 0x7FB9, 0x7FB8, 0x81D8, 0x85E9, - 0x85DD, 0x85EA, 0x85D5, 0x85E4, 0x85E5, 0x85F7, 0x87FB, 0x8805, - 0x880D, 0x87F9, 0x87FE, 0x8960, 0x895F, 0x8956, 0x895E, 0x8B41, - 0x8B5C, 0x8B58, 0x8B49, 0x8B5A, 0x8B4E, 0x8B4F, 0x8B46, 0x8B59, - 0x8D08, 0x8D0A, 0x8E7C, 0x8E72, 0x8E87, 0x8E76, 0x8E6C, 0x8E7A, - 0x8E74, 0x8F54, 0x8F4E, 0x8FAD, 0x908A, 0x908B, 0x91B1, 0x91AE, - 0x93E1, 0x93D1, 0x93DF, 0x93C3, 0x93C8, 0x93DC, 0x93DD, 0x93D6, - 0x93E2, 0x93CD, 0x93D8, 0x93E4, 0x93D7, 0x93E8, 0x95DC, 0x96B4, - 0x96E3, 0x972A, 0x9727, 0x9761, 0x97DC, 0x97FB, 0x985E, 0x9858, - 0x985B, 0x98BC, 0x9945, 0x9949, 0x9A16, 0x9A19, 0x9B0D, 0x9BE8, - 0x9BE7, 0x9BD6, 0x9BDB, 0x9D89, 0x9D61, 0x9D72, 0x9D6A, 0x9D6C, - 0x9E92, 0x9E97, 0x9E93, 0x9EB4, 0x52F8, 0x56A8, 0x56B7, 0x56B6, - 0x56B4, 0x56BC, 0x58E4, 0x5B40, 0x5B43, 0x5B7D, 0x5BF6, 0x5DC9, - 0x61F8, 0x61FA, 0x6518, 0x6514, 0x6519, 0x66E6, 0x6727, 0x6AEC, - 0x703E, 0x7030, 0x7032, 0x7210, 0x737B, 0x74CF, 0x7662, 0x7665, - 0x7926, 0x792A, 0x792C, 0x792B, 0x7AC7, 0x7AF6, 0x7C4C, 0x7C43, - 0x7C4D, 0x7CEF, 0x7CF0, 0x8FAE, 0x7E7D, 0x7E7C, 0x7E82, 0x7F4C, - 0x8000, 0x81DA, 0x8266, 0x85FB, 0x85F9, 0x8611, 0x85FA, 0x8606, - 0x860B, 0x8607, 0x860A, 0x8814, 0x8815, 0x8964, 0x89BA, 0x89F8, - 0x8B70, 0x8B6C, 0x8B66, 0x8B6F, 0x8B5F, 0x8B6B, 0x8D0F, 0x8D0D, - 0x8E89, 0x8E81, 0x8E85, 0x8E82, 0x91B4, 0x91CB, 0x9418, 0x9403, - 0x93FD, 0x95E1, 0x9730, 0x98C4, 0x9952, 0x9951, 0x99A8, 0x9A2B, - 0x9A30, 0x9A37, 0x9A35, 0x9C13, 0x9C0D, 0x9E79, 0x9EB5, 0x9EE8, - 0x9F2F, 0x9F5F, 0x9F63, 0x9F61, 0x5137, 0x5138, 0x56C1, 0x56C0, - 0x56C2, 0x5914, 0x5C6C, 0x5DCD, 0x61FC, 0x61FE, 0x651D, 0x651C, - 0x6595, 0x66E9, 0x6AFB, 0x6B04, 0x6AFA, 0x6BB2, 0x704C, 0x721B, -plane 23 -at 0x00 - 0x72A7, 0x74D6, 0x74D4, 0x7669, 0x77D3, 0x7C50, 0x7E8F, 0x7E8C, - 0x7FBC, 0x8617, 0x862D, 0x861A, 0x8823, 0x8822, 0x8821, 0x881F, - 0x896A, 0x896C, 0x89BD, 0x8B74, 0x8B77, 0x8B7D, 0x8D13, 0x8E8A, - 0x8E8D, 0x8E8B, 0x8F5F, 0x8FAF, 0x91BA, 0x942E, 0x9433, 0x9435, - 0x943A, 0x9438, 0x9432, 0x942B, 0x95E2, 0x9738, 0x9739, 0x9732, - 0x97FF, 0x9867, 0x9865, 0x9957, 0x9A45, 0x9A43, 0x9A40, 0x9A3E, - 0x9ACF, 0x9B54, 0x9B51, 0x9C2D, 0x9C25, 0x9DAF, 0x9DB4, 0x9DC2, - 0x9DB8, 0x9E9D, 0x9EEF, 0x9F19, 0x9F5C, 0x9F66, 0x9F67, 0x513C, - 0x513B, 0x56C8, 0x56CA, 0x56C9, 0x5B7F, 0x5DD4, 0x5DD2, 0x5F4E, - 0x61FF, 0x6524, 0x6B0A, 0x6B61, 0x7051, 0x7058, 0x7380, 0x74E4, - 0x758A, 0x766E, 0x766C, 0x79B3, 0x7C60, 0x7C5F, 0x807E, 0x807D, - 0x81DF, 0x8972, 0x896F, 0x89FC, 0x8B80, 0x8D16, 0x8D17, 0x8E91, - 0x8E93, 0x8F61, 0x9148, 0x9444, 0x9451, 0x9452, 0x973D, 0x973E, - 0x97C3, 0x97C1, 0x986B, 0x9955, 0x9A55, 0x9A4D, 0x9AD2, 0x9B1A, - 0x9C49, 0x9C31, 0x9C3E, 0x9C3B, 0x9DD3, 0x9DD7, 0x9F34, 0x9F6C, - 0x9F6A, 0x9F94, 0x56CC, 0x5DD6, 0x6200, 0x6523, 0x652B, 0x652A, - 0x66EC, 0x6B10, 0x74DA, 0x7ACA, 0x7C64, 0x7C63, 0x7C65, 0x7E93, - 0x7E96, 0x7E94, 0x81E2, 0x8638, 0x863F, 0x8831, 0x8B8A, 0x9090, - 0x908F, 0x9463, 0x9460, 0x9464, 0x9768, 0x986F, 0x995C, 0x9A5A, - 0x9A5B, 0x9A57, 0x9AD3, 0x9AD4, 0x9AD1, 0x9C54, 0x9C57, 0x9C56, - 0x9DE5, 0x9E9F, 0x9EF4, 0x56D1, 0x58E9, 0x652C, 0x705E, 0x7671, - 0x7672, 0x77D7, 0x7F50, 0x7F88, 0x8836, 0x8839, 0x8862, 0x8B93, - 0x8B92, 0x8B96, 0x8277, 0x8D1B, 0x91C0, 0x946A, 0x9742, 0x9748, - 0x9744, 0x97C6, 0x9870, 0x9A5F, 0x9B22, 0x9B58, 0x9C5F, 0x9DF9, - 0x9DFA, 0x9E7C, 0x9E7D, 0x9F07, 0x9F77, 0x9F72, 0x5EF3, 0x6B16, - 0x7063, 0x7C6C, 0x7C6E, 0x883B, 0x89C0, 0x8EA1, 0x91C1, 0x9472, - 0x9470, 0x9871, 0x995E, 0x9AD6, 0x9B23, 0x9ECC, 0x7064, 0x77DA, - 0x8B9A, 0x9477, 0x97C9, 0x9A62, 0x9A65, 0x7E9C, 0x8B9C, 0x8EAA, - 0x91C5, 0x947D, 0x947E, 0x947C, 0x9C77, 0x9C78, 0x9EF7, 0x8C54, - 0x947F, 0x9E1A, 0x7228, 0x9A6A, 0x9B31, 0x9E1B, 0x9E1E, 0x7C72, - 0xF6B1, 0xF6B2, 0xF6B3, 0xF6B4, 0xF6B5, 0xF6B6, 0xF6B7, 0xF6B8, - 0xF6B9, 0xF6BA, 0xF6BB, 0xF6BC, 0xF6BD, 0xF6BE, 0xF6BF, 0xF6C0, -plane 24 -at 0x00 - 0xF6C1, 0xF6C2, 0xF6C3, 0xF6C4, 0xF6C5, 0xF6C6, 0xF6C7, 0xF6C8, - 0xF6C9, 0xF6CA, 0xF6CB, 0xF6CC, 0xF6CD, 0xF6CE, 0xF6CF, 0xF6D0, - 0xF6D1, 0xF6D2, 0xF6D3, 0xF6D4, 0xF6D5, 0xF6D6, 0xF6D7, 0xF6D8, - 0xF6D9, 0xF6DA, 0xF6DB, 0xF6DC, 0xF6DD, 0xF6DE, 0xF6DF, 0xF6E0, - 0xF6E1, 0xF6E2, 0xF6E3, 0xF6E4, 0xF6E5, 0xF6E6, 0xF6E7, 0xF6E8, - 0xF6E9, 0xF6EA, 0xF6EB, 0xF6EC, 0xF6ED, 0xF6EE, 0xF6EF, 0xF6F0, - 0xF6F1, 0xF6F2, 0xF6F3, 0xF6F4, 0xF6F5, 0xF6F6, 0xF6F7, 0xF6F8, - 0xF6F9, 0xF6FA, 0xF6FB, 0xF6FC, 0xF6FD, 0xF6FE, 0xF6FF, 0xF700, - 0xF701, 0xF702, 0xF703, 0xF704, 0xF705, 0xF706, 0xF707, 0xF708, - 0xF709, 0xF70A, 0xF70B, 0xF70C, 0xF70D, 0xF70E, 0xF70F, 0xF710, - 0xF711, 0xF712, 0xF713, 0xF714, 0xF715, 0xF716, 0xF717, 0xF718, - 0xF719, 0xF71A, 0xF71B, 0xF71C, 0xF71D, 0xF71E, 0xF71F, 0xF720, - 0xF721, 0xF722, 0xF723, 0xF724, 0xF725, 0xF726, 0xF727, 0xF728, - 0xF729, 0xF72A, 0xF72B, 0xF72C, 0xF72D, 0xF72E, 0xF72F, 0xF730, - 0xF731, 0xF732, 0xF733, 0xF734, 0xF735, 0xF736, 0xF737, 0xF738, - 0xF739, 0xF73A, 0xF73B, 0xF73C, 0xF73D, 0xF73E, 0xF73F, 0xF740, - 0xF741, 0xF742, 0xF743, 0xF744, 0xF745, 0xF746, 0xF747, 0xF748, - 0xF749, 0xF74A, 0xF74B, 0xF74C, 0xF74D, 0xF74E, 0xF74F, 0xF750, - 0xF751, 0xF752, 0xF753, 0xF754, 0xF755, 0xF756, 0xF757, 0xF758, - 0xF759, 0xF75A, 0xF75B, 0xF75C, 0xF75D, 0xF75E, 0xF75F, 0xF760, - 0xF761, 0xF762, 0xF763, 0xF764, 0xF765, 0xF766, 0xF767, 0xF768, - 0xF769, 0xF76A, 0xF76B, 0xF76C, 0xF76D, 0xF76E, 0xF76F, 0xF770, - 0xF771, 0xF772, 0xF773, 0xF774, 0xF775, 0xF776, 0xF777, 0xF778, - 0xF779, 0xF77A, 0xF77B, 0xF77C, 0xF77D, 0xF77E, 0xF77F, 0xF780, - 0xF781, 0xF782, 0xF783, 0xF784, 0xF785, 0xF786, 0xF787, 0xF788, - 0xF789, 0xF78A, 0xF78B, 0xF78C, 0xF78D, 0xF78E, 0xF78F, 0xF790, - 0xF791, 0xF792, 0xF793, 0xF794, 0xF795, 0xF796, 0xF797, 0xF798, - 0xF799, 0xF79A, 0xF79B, 0xF79C, 0xF79D, 0xF79E, 0xF79F, 0xF7A0, - 0xF7A1, 0xF7A2, 0xF7A3, 0xF7A4, 0xF7A5, 0xF7A6, 0xF7A7, 0xF7A8, - 0xF7A9, 0xF7AA, 0xF7AB, 0xF7AC, 0xF7AD, 0xF7AE, 0xF7AF, 0xF7B0, - 0xF7B1, 0xF7B2, 0xF7B3, 0xF7B4, 0xF7B5, 0xF7B6, 0xF7B7, 0xF7B8, - 0xF7B9, 0xF7BA, 0xF7BB, 0xF7BC, 0xF7BD, 0xF7BE, 0xF7BF, 0xF7C0, -plane 25 -at 0x00 - 0xF7C1, 0xF7C2, 0xF7C3, 0xF7C4, 0xF7C5, 0xF7C6, 0xF7C7, 0xF7C8, - 0xF7C9, 0xF7CA, 0xF7CB, 0xF7CC, 0xF7CD, 0xF7CE, 0xF7CF, 0xF7D0, - 0xF7D1, 0xF7D2, 0xF7D3, 0xF7D4, 0xF7D5, 0xF7D6, 0xF7D7, 0xF7D8, - 0xF7D9, 0xF7DA, 0xF7DB, 0xF7DC, 0xF7DD, 0xF7DE, 0xF7DF, 0xF7E0, - 0xF7E1, 0xF7E2, 0xF7E3, 0xF7E4, 0xF7E5, 0xF7E6, 0xF7E7, 0xF7E8, - 0xF7E9, 0xF7EA, 0xF7EB, 0xF7EC, 0xF7ED, 0xF7EE, 0xF7EF, 0xF7F0, - 0xF7F1, 0xF7F2, 0xF7F3, 0xF7F4, 0xF7F5, 0xF7F6, 0xF7F7, 0xF7F8, - 0xF7F9, 0xF7FA, 0xF7FB, 0xF7FC, 0xF7FD, 0xF7FE, 0xF7FF, 0xF800, - 0xF801, 0xF802, 0xF803, 0xF804, 0xF805, 0xF806, 0xF807, 0xF808, - 0xF809, 0xF80A, 0xF80B, 0xF80C, 0xF80D, 0xF80E, 0xF80F, 0xF810, - 0xF811, 0xF812, 0xF813, 0xF814, 0xF815, 0xF816, 0xF817, 0xF818, - 0xF819, 0xF81A, 0xF81B, 0xF81C, 0xF81D, 0xF81E, 0xF81F, 0xF820, - 0xF821, 0xF822, 0xF823, 0xF824, 0xF825, 0xF826, 0xF827, 0xF828, - 0xF829, 0xF82A, 0xF82B, 0xF82C, 0xF82D, 0xF82E, 0xF82F, 0xF830, - 0xF831, 0xF832, 0xF833, 0xF834, 0xF835, 0xF836, 0xF837, 0xF838, - 0xF839, 0xF83A, 0xF83B, 0xF83C, 0xF83D, 0xF83E, 0xF83F, 0xF840, - 0xF841, 0xF842, 0xF843, 0xF844, 0xF845, 0xF846, 0xF847, 0xF848, - 0x4E42, 0x4E5C, 0x51F5, 0x531A, 0x5382, 0x4E07, 0x4E0C, 0x4E47, - 0x4E8D, 0x56D7, 0xFA0C, 0x5C6E, 0x5F73, 0x4E0F, 0x5187, 0x4E0E, - 0x4E2E, 0x4E93, 0x4EC2, 0x4EC9, 0x4EC8, 0x5198, 0x52FC, 0x536C, - 0x53B9, 0x5720, 0x5903, 0x592C, 0x5C10, 0x5DFF, 0x65E1, 0x6BB3, - 0x6BCC, 0x6C14, 0x723F, 0x4E31, 0x4E3C, 0x4EE8, 0x4EDC, 0x4EE9, - 0x4EE1, 0x4EDD, 0x4EDA, 0x520C, 0x531C, 0x534C, 0x5722, 0x5723, - 0x5917, 0x592F, 0x5B81, 0x5B84, 0x5C12, 0x5C3B, 0x5C74, 0x5C73, - 0x5E04, 0x5E80, 0x5E82, 0x5FC9, 0x6209, 0x6250, 0x6C15, 0x6C36, - 0x6C43, 0x6C3F, 0x6C3B, 0x72AE, 0x72B0, 0x738A, 0x79B8, 0x808A, - 0x961E, 0x4F0E, 0x4F18, 0x4F2C, 0x4EF5, 0x4F14, 0x4EF1, 0x4F00, - 0x4EF7, 0x4F08, 0x4F1D, 0x4F02, 0x4F05, 0x4F22, 0x4F13, 0x4F04, - 0x4EF4, 0x4F12, 0x51B1, 0x5213, 0x5209, 0x5210, 0x52A6, 0x5322, - 0x531F, 0x534D, 0x538A, 0x5407, 0x56E1, 0x56DF, 0x572E, 0x572A, - 0x5734, 0x593C, 0x5980, 0x597C, 0x5985, 0x597B, 0x597E, 0x5977, - 0x597F, 0x5B56, 0x5C15, 0x5C25, 0x5C7C, 0x5C7A, 0x5C7B, 0x5C7E, -plane 26 -at 0x00 - 0x5DDF, 0x5E75, 0x5E84, 0x5F02, 0x5F1A, 0x5F74, 0x5FD5, 0x5FD4, - 0x5FCF, 0x625C, 0x625E, 0x6264, 0x6261, 0x6266, 0x6262, 0x6259, - 0x6260, 0x625A, 0x6265, 0x65EF, 0x65EE, 0x673E, 0x6739, 0x6738, - 0x673B, 0x673A, 0x673F, 0x673C, 0x6733, 0x6C18, 0x6C46, 0x6C52, - 0x6C5C, 0x6C4F, 0x6C4A, 0x6C54, 0x6C4B, 0x6C4C, 0x7071, 0x725E, - 0x72B4, 0x72B5, 0x738E, 0x752A, 0x767F, 0x7A75, 0x7F51, 0x8278, - 0x827C, 0x8280, 0x827D, 0x827F, 0x864D, 0x897E, 0x9099, 0x9097, - 0x9098, 0x909B, 0x9094, 0x9622, 0x9624, 0x9620, 0x9623, 0x4F56, - 0x4F3B, 0x4F62, 0x4F49, 0x4F53, 0x4F64, 0x4F3E, 0x4F67, 0x4F52, - 0x4F5F, 0x4F41, 0x4F58, 0x4F2D, 0x4F33, 0x4F3F, 0x4F61, 0x518F, - 0x51B9, 0x521C, 0x521E, 0x5221, 0x52AD, 0x52AE, 0x5309, 0x5363, - 0x5372, 0x538E, 0x538F, 0x5430, 0x5437, 0x542A, 0x5454, 0x5445, - 0x5419, 0x541C, 0x5425, 0x5418, 0x543D, 0x544F, 0x5441, 0x5428, - 0x5424, 0x5447, 0x56EE, 0x56E7, 0x56E5, 0x5741, 0x5745, 0x574C, - 0x5749, 0x574B, 0x5752, 0x5906, 0x5940, 0x59A6, 0x5998, 0x59A0, - 0x5997, 0x598E, 0x59A2, 0x5990, 0x598F, 0x59A7, 0x59A1, 0x5B8E, - 0x5B92, 0x5C28, 0x5C2A, 0x5C8D, 0x5C8F, 0x5C88, 0x5C8B, 0x5C89, - 0x5C92, 0x5C8A, 0x5C86, 0x5C93, 0x5C95, 0x5DE0, 0x5E0A, 0x5E0E, - 0x5E8B, 0x5E89, 0x5E8C, 0x5E88, 0x5E8D, 0x5F05, 0x5F1D, 0x5F78, - 0x5F76, 0x5FD2, 0x5FD1, 0x5FD0, 0x5FED, 0x5FE8, 0x5FEE, 0x5FF3, - 0x5FE1, 0x5FE4, 0x5FE3, 0x5FFA, 0x5FEF, 0x5FF7, 0x5FFB, 0x6000, - 0x5FF4, 0x623A, 0x6283, 0x628C, 0x628E, 0x628F, 0x6294, 0x6287, - 0x6271, 0x627B, 0x627A, 0x6270, 0x6281, 0x6288, 0x6277, 0x627D, - 0x6272, 0x6274, 0x6537, 0x65F0, 0x65F4, 0x65F3, 0x65F2, 0x65F5, - 0x6745, 0x6747, 0x6759, 0x6755, 0x674C, 0x6748, 0x675D, 0x674D, - 0x675A, 0x674B, 0x6BD0, 0x6C19, 0x6C1A, 0x6C78, 0x6C67, 0x6C6B, - 0x6C84, 0x6C8B, 0x6C8F, 0x6C71, 0x6C6F, 0x6C69, 0x6C9A, 0x6C6D, - 0x6C87, 0x6C95, 0x6C9C, 0x6C66, 0x6C73, 0x6C65, 0x6C7B, 0x6C8E, - 0x7074, 0x707A, 0x7263, 0x72BF, 0x72BD, 0x72C3, 0x72C6, 0x72C1, - 0x72BA, 0x72C5, 0x7395, 0x7397, 0x7393, 0x7394, 0x7392, 0x753A, - 0x7539, 0x7594, 0x7595, 0x7681, 0x793D, 0x8034, 0x8095, 0x8099, - 0x8090, 0x8092, 0x809C, 0x8290, 0x828F, 0x8285, 0x828E, 0x8291, -plane 27 -at 0x00 - 0x8293, 0x828A, 0x8283, 0x8284, 0x8C78, 0x8FC9, 0x8FBF, 0x909F, - 0x90A1, 0x90A5, 0x909E, 0x90A7, 0x90A0, 0x9630, 0x9628, 0x962F, - 0x962D, 0x4E33, 0x4F98, 0x4F7C, 0x4F85, 0x4F7D, 0x4F80, 0x4F87, - 0x4F76, 0x4F74, 0x4F89, 0x4F84, 0x4F77, 0x4F4C, 0x4F97, 0x4F6A, - 0x4F9A, 0x4F79, 0x4F81, 0x4F78, 0x4F90, 0x4F9C, 0x4F94, 0x4F9E, - 0x4F92, 0x4F82, 0x4F95, 0x4F6B, 0x4F6E, 0x519E, 0x51BC, 0x51BE, - 0x5235, 0x5232, 0x5233, 0x5246, 0x5231, 0x52BC, 0x530A, 0x530B, - 0x533C, 0x5392, 0x5394, 0x5487, 0x547F, 0x5481, 0x5491, 0x5482, - 0x5488, 0x546B, 0x547A, 0x547E, 0x5465, 0x546C, 0x5474, 0x5466, - 0x548D, 0x546F, 0x5461, 0x5460, 0x5498, 0x5463, 0x5467, 0x5464, - 0x56F7, 0x56F9, 0x576F, 0x5772, 0x576D, 0x576B, 0x5771, 0x5770, - 0x5776, 0x5780, 0x5775, 0x577B, 0x5773, 0x5774, 0x5762, 0x5768, - 0x577D, 0x590C, 0x5945, 0x59B5, 0x59BA, 0x59CF, 0x59CE, 0x59B2, - 0x59CC, 0x59C1, 0x59B6, 0x59BC, 0x59C3, 0x59D6, 0x59B1, 0x59BD, - 0x59C0, 0x59C8, 0x59B4, 0x59C7, 0x5B62, 0x5B65, 0x5B93, 0x5B95, - 0x5C44, 0x5C47, 0x5CAE, 0x5CA4, 0x5CA0, 0x5CB5, 0x5CAF, 0x5CA8, - 0x5CAC, 0x5C9F, 0x5CA3, 0x5CAD, 0x5CA2, 0x5CAA, 0x5CA7, 0x5C9D, - 0x5CA5, 0x5CB6, 0x5CB0, 0x5CA6, 0x5E17, 0x5E14, 0x5E19, 0x5F28, - 0x5F22, 0x5F23, 0x5F24, 0x5F54, 0x5F82, 0x5F7E, 0x5F7D, 0x5FDE, - 0x5FE5, 0x602D, 0x6026, 0x6019, 0x6032, 0x600B, 0x6034, 0x600A, - 0x6017, 0x6033, 0x601A, 0x601E, 0x602C, 0x6022, 0x600D, 0x6010, - 0x602E, 0x6013, 0x6011, 0x600C, 0x6009, 0x601C, 0x6214, 0x623D, - 0x62AD, 0x62B4, 0x62D1, 0x62BE, 0x62AA, 0x62B6, 0x62CA, 0x62AE, - 0x62B3, 0x62AF, 0x62BB, 0x62A9, 0x62B0, 0x62B8, 0x653D, 0x65A8, - 0x65BB, 0x6609, 0x65FC, 0x6604, 0x6612, 0x6608, 0x65FB, 0x6603, - 0x660B, 0x660D, 0x6605, 0x65FD, 0x6611, 0x6610, 0x66F6, 0x670A, - 0x6785, 0x676C, 0x678E, 0x6792, 0x6776, 0x677B, 0x6798, 0x6786, - 0x6784, 0x6774, 0x678D, 0x678C, 0x677A, 0x679F, 0x6791, 0x6799, - 0x6783, 0x677D, 0x6781, 0x6778, 0x6779, 0x6794, 0x6B25, 0x6B80, - 0x6B7E, 0x6BDE, 0x6C1D, 0x6C93, 0x6CEC, 0x6CEB, 0x6CEE, 0x6CD9, - 0x6CB6, 0x6CD4, 0x6CAD, 0x6CE7, 0x6CB7, 0x6CD0, 0x6CC2, 0x6CBA, - 0x6CC3, 0x6CC6, 0x6CED, 0x6CF2, 0x6CD2, 0x6CDD, 0x6CB4, 0x6C8A, -plane 28 -at 0x00 - 0x6C9D, 0x6C80, 0x6CDE, 0x6CC0, 0x6D30, 0x6CCD, 0x6CC7, 0x6CB0, - 0x6CF9, 0x6CCF, 0x6CE9, 0x6CD1, 0x7094, 0x7098, 0x7085, 0x7093, - 0x7086, 0x7084, 0x7091, 0x7096, 0x7082, 0x709A, 0x7083, 0x726A, - 0x72D6, 0x72CB, 0x72D8, 0x72C9, 0x72DC, 0x72D2, 0x72D4, 0x72DA, - 0x72CC, 0x72D1, 0x73A4, 0x73A1, 0x73AD, 0x73A6, 0x73A2, 0x73A0, - 0x73AC, 0x739D, 0x74DD, 0x74E8, 0x753F, 0x7540, 0x753E, 0x758C, - 0x7598, 0x76AF, 0x76F3, 0x76F1, 0x76F0, 0x76F5, 0x77F8, 0x77FC, - 0x77F9, 0x77FB, 0x77FA, 0x77F7, 0x7942, 0x793F, 0x79C5, 0x7A78, - 0x7A7B, 0x7AFB, 0x7C75, 0x7CFD, 0x8035, 0x808F, 0x80AE, 0x80A3, - 0x80B8, 0x80B5, 0x80AD, 0x8220, 0x82A0, 0x82C0, 0x82AB, 0x829A, - 0x8298, 0x829B, 0x82B5, 0x82A7, 0x82AE, 0x82BC, 0x829E, 0x82BA, - 0x82B4, 0x82A8, 0x82A1, 0x82A9, 0x82C2, 0x82A4, 0x82C3, 0x82B6, - 0x82A2, 0x8670, 0x866F, 0x866D, 0x866E, 0x8C56, 0x8FD2, 0x8FCB, - 0x8FD3, 0x8FCD, 0x8FD6, 0x8FD5, 0x8FD7, 0x90B2, 0x90B4, 0x90AF, - 0x90B3, 0x90B0, 0x9639, 0x963D, 0x963C, 0x963A, 0x9643, 0x4FCD, - 0x4FC5, 0x4FD3, 0x4FB2, 0x4FC9, 0x4FCB, 0x4FC1, 0x4FD4, 0x4FDC, - 0x4FD9, 0x4FBB, 0x4FB3, 0x4FDB, 0x4FC7, 0x4FD6, 0x4FBA, 0x4FC0, - 0x4FB9, 0x4FEC, 0x5244, 0x5249, 0x52C0, 0x52C2, 0x533D, 0x537C, - 0x5397, 0x5396, 0x5399, 0x5398, 0x54BA, 0x54A1, 0x54AD, 0x54A5, - 0x54CF, 0x54C3, 0x830D, 0x54B7, 0x54AE, 0x54D6, 0x54B6, 0x54C5, - 0x54C6, 0x54A0, 0x5470, 0x54BC, 0x54A2, 0x54BE, 0x5472, 0x54DE, - 0x54B0, 0x57B5, 0x579E, 0x579F, 0x57A4, 0x578C, 0x5797, 0x579D, - 0x579B, 0x5794, 0x5798, 0x578F, 0x5799, 0x57A5, 0x579A, 0x5795, - 0x58F4, 0x590D, 0x5953, 0x59E1, 0x59DE, 0x59EE, 0x5A00, 0x59F1, - 0x59DD, 0x59FA, 0x59FD, 0x59FC, 0x59F6, 0x59E4, 0x59F2, 0x59F7, - 0x59DB, 0x59E9, 0x59F3, 0x59F5, 0x59E0, 0x59FE, 0x59F4, 0x59ED, - 0x5BA8, 0x5C4C, 0x5CD0, 0x5CD8, 0x5CCC, 0x5CD7, 0x5CCB, 0x5CDB, - 0x5CDE, 0x5CDA, 0x5CC9, 0x5CC7, 0x5CCA, 0x5CD6, 0x5CD3, 0x5CD4, - 0x5CCF, 0x5CC8, 0x5CC6, 0x5CCE, 0x5CDF, 0x5CF8, 0x5DF9, 0x5E21, - 0x5E22, 0x5E23, 0x5E20, 0x5E24, 0x5EB0, 0x5EA4, 0x5EA2, 0x5E9B, - 0x5EA3, 0x5EA5, 0x5F07, 0x5F2E, 0x5F56, 0x5F86, 0x6037, 0x6039, - 0x6054, 0x6072, 0x605E, 0x6045, 0x6053, 0x6047, 0x6049, 0x605B, -plane 29 -at 0x00 - 0x604C, 0x6040, 0x6042, 0x605F, 0x6024, 0x6044, 0x6058, 0x6066, - 0x606E, 0x6242, 0x6243, 0x62CF, 0x630D, 0x630B, 0x62F5, 0x630E, - 0x6303, 0x62EB, 0x62F9, 0x630F, 0x630C, 0x62F8, 0x62F6, 0x6300, - 0x6313, 0x6314, 0x62FA, 0x6315, 0x62FB, 0x62F0, 0x6541, 0x6543, - 0x65AA, 0x65BF, 0x6636, 0x6621, 0x6632, 0x6635, 0x661C, 0x6626, - 0x6622, 0x6633, 0x662B, 0x663A, 0x661D, 0x6634, 0x6639, 0x662E, - 0x670F, 0x6710, 0x67C1, 0x67F2, 0x67C8, 0x67BA, 0x67DC, 0x67BB, - 0x67F8, 0x67D8, 0x67C0, 0x67B7, 0x67C5, 0x67EB, 0x67E4, 0x67DF, - 0x67B5, 0x67CD, 0x67B3, 0x67F7, 0x67F6, 0x67EE, 0x67E3, 0x67C2, - 0x67B9, 0x67CE, 0x67E7, 0x67F0, 0x67B2, 0x67FC, 0x67C6, 0x67ED, - 0x67CC, 0x67AE, 0x67E6, 0x67DB, 0x67FA, 0x67C9, 0x67CA, 0x67C3, - 0x67EA, 0x67CB, 0x6B28, 0x6B82, 0x6B84, 0x6BB6, 0x6BD6, 0x6BD8, - 0x6BE0, 0x6C20, 0x6C21, 0x6D28, 0x6D34, 0x6D2D, 0x6D1F, 0x6D3C, - 0x6D3F, 0x6D12, 0x6D0A, 0x6CDA, 0x6D33, 0x6D04, 0x6D19, 0x6D3A, - 0x6D1A, 0x6D11, 0x6D00, 0x6D1D, 0x6D42, 0x6D01, 0x6D18, 0x6D37, - 0x6D03, 0x6D0F, 0x6D40, 0x6D07, 0x6D20, 0x6D2C, 0x6D08, 0x6D22, - 0x6D09, 0x6D10, 0x70B7, 0x709F, 0x70BE, 0x70B1, 0x70B0, 0x70A1, - 0x70B4, 0x70B5, 0x70A9, 0x7241, 0x7249, 0x724A, 0x726C, 0x7270, - 0x7273, 0x726E, 0x72CA, 0x72E4, 0x72E8, 0x72EB, 0x72DF, 0x72EA, - 0x72E6, 0x72E3, 0x7385, 0x73CC, 0x73C2, 0x73C8, 0x73C5, 0x73B9, - 0x73B6, 0x73B5, 0x73B4, 0x73EB, 0x73BF, 0x73C7, 0x73BE, 0x73C3, - 0x73C6, 0x73B8, 0x73CB, 0x74EC, 0x74EE, 0x752E, 0x7547, 0x7548, - 0x75A7, 0x75AA, 0x7679, 0x76C4, 0x7708, 0x7703, 0x7704, 0x7705, - 0x770A, 0x76F7, 0x76FB, 0x76FA, 0x77E7, 0x77E8, 0x7806, 0x7811, - 0x7812, 0x7805, 0x7810, 0x780F, 0x780E, 0x7809, 0x7803, 0x7813, - 0x794A, 0x794C, 0x794B, 0x7945, 0x7944, 0x79D5, 0x79CD, 0x79CF, - 0x79D6, 0x79CE, 0x7A80, 0x7A7E, 0x7AD1, 0x7B00, 0x7B01, 0x7C7A, - 0x7C78, 0x7C79, 0x7C7F, 0x7C80, 0x7C81, 0x7D03, 0x7D08, 0x7D01, - 0x7F58, 0x7F91, 0x7F8D, 0x7FBE, 0x8007, 0x800E, 0x800F, 0x8014, - 0x8037, 0x80D8, 0x80C7, 0x80E0, 0x80D1, 0x80C8, 0x80C2, 0x80D0, - 0x80C5, 0x80E3, 0x80D9, 0x80DC, 0x80CA, 0x80D5, 0x80C9, 0x80CF, - 0x80D7, 0x80E6, 0x80CD, 0x81FF, 0x8221, 0x8294, 0x82D9, 0x82FE, -plane 30 -at 0x00 - 0x82F9, 0x8307, 0x82E8, 0x8300, 0x82D5, 0x833A, 0x82EB, 0x82D6, - 0x82F4, 0x82EC, 0x82E1, 0x82F2, 0x82F5, 0x830C, 0x82FB, 0x82F6, - 0x82F0, 0x82EA, 0x82E4, 0x82E0, 0x82FA, 0x82F3, 0x82ED, 0x8677, - 0x8674, 0x867C, 0x8673, 0x8841, 0x884E, 0x8867, 0x886A, 0x8869, - 0x89D3, 0x8A04, 0x8A07, 0x8D72, 0x8FE3, 0x8FE1, 0x8FEE, 0x8FE0, - 0x90F1, 0x90BD, 0x90BF, 0x90D5, 0x90C5, 0x90BE, 0x90C7, 0x90CB, - 0x90C8, 0x91D4, 0x91D3, 0x9654, 0x964F, 0x9651, 0x9653, 0x964A, - 0x964E, 0x501E, 0x5005, 0x5007, 0x5013, 0x5022, 0x5030, 0x501B, - 0x4FF5, 0x4FF4, 0x5033, 0x5037, 0x502C, 0x4FF6, 0x4FF7, 0x5017, - 0x501C, 0x5020, 0x5027, 0x5035, 0x502F, 0x5031, 0x500E, 0x515A, - 0x5194, 0x5193, 0x51CA, 0x51C4, 0x51C5, 0x51C8, 0x51CE, 0x5261, - 0x525A, 0x5252, 0x525E, 0x525F, 0x5255, 0x5262, 0x52CD, 0x530E, - 0x539E, 0x5526, 0x54E2, 0x5517, 0x5512, 0x54E7, 0x54F3, 0x54E4, - 0x551A, 0x54FF, 0x5504, 0x5508, 0x54EB, 0x5511, 0x5505, 0x54F1, - 0x550A, 0x54FB, 0x54F7, 0x54F8, 0x54E0, 0x550E, 0x5503, 0x550B, - 0x5701, 0x5702, 0x57CC, 0x5832, 0x57D5, 0x57D2, 0x57BA, 0x57C6, - 0x57BD, 0x57BC, 0x57B8, 0x57B6, 0x57BF, 0x57C7, 0x57D0, 0x57B9, - 0x57C1, 0x590E, 0x594A, 0x5A19, 0x5A16, 0x5A2D, 0x5A2E, 0x5A15, - 0x5A0F, 0x5A17, 0x5A0A, 0x5A1E, 0x5A33, 0x5B6C, 0x5BA7, 0x5BAD, - 0x5BAC, 0x5C03, 0x5C56, 0x5C54, 0x5CEC, 0x5CFF, 0x5CEE, 0x5CF1, - 0x5CF7, 0x5D00, 0x5CF9, 0x5E29, 0x5E28, 0x5EA8, 0x5EAE, 0x5EAA, - 0x5EAC, 0x5F33, 0x5F30, 0x5F67, 0x605D, 0x605A, 0x6067, 0x6041, - 0x60A2, 0x6088, 0x6080, 0x6092, 0x6081, 0x609D, 0x6083, 0x6095, - 0x609B, 0x6097, 0x6087, 0x609C, 0x608E, 0x6219, 0x6246, 0x62F2, - 0x6310, 0x6356, 0x632C, 0x6344, 0x6345, 0x6336, 0x6343, 0x63E4, - 0x6339, 0x634B, 0x634A, 0x633C, 0x6329, 0x6341, 0x6334, 0x6358, - 0x6354, 0x6359, 0x632D, 0x6347, 0x6333, 0x635A, 0x6351, 0x6338, - 0x6357, 0x6340, 0x6348, 0x654A, 0x6546, 0x65C6, 0x65C3, 0x65C4, - 0x65C2, 0x664A, 0x665F, 0x6647, 0x6651, 0x6712, 0x6713, 0x681F, - 0x681A, 0x6849, 0x6832, 0x6833, 0x683B, 0x684B, 0x684F, 0x6816, - 0x6831, 0x681C, 0x6835, 0x682B, 0x682D, 0x682F, 0x684E, 0x6844, - 0x6834, 0x681D, 0x6812, 0x6814, 0x6826, 0x6828, 0x682E, 0x684D, -plane 31 -at 0x00 - 0x683A, 0x6825, 0x6820, 0x6B2C, 0x6B2F, 0x6B2D, 0x6B31, 0x6B34, - 0x6B6D, 0x8082, 0x6B88, 0x6BE6, 0x6BE4, 0x6BE8, 0x6BE3, 0x6BE2, - 0x6BE7, 0x6C25, 0x6D7A, 0x6D63, 0x6D64, 0x6D76, 0x6D0D, 0x6D61, - 0x6D92, 0x6D58, 0x6D62, 0x6D6D, 0x6D6F, 0x6D91, 0x6D8D, 0x6DEF, - 0x6D7F, 0x6D86, 0x6D5E, 0x6D67, 0x6D60, 0x6D97, 0x6D70, 0x6D7C, - 0x6D5F, 0x6D82, 0x6D98, 0x6D2F, 0x6D68, 0x6D8B, 0x6D7E, 0x6D80, - 0x6D84, 0x6D16, 0x6D83, 0x6D7B, 0x6D7D, 0x6D75, 0x6D90, 0x70DC, - 0x70D3, 0x70D1, 0x70DD, 0x70CB, 0x7F39, 0x70E2, 0x70D7, 0x70D2, - 0x70DE, 0x70E0, 0x70D4, 0x70CD, 0x70C5, 0x70C6, 0x70C7, 0x70DA, - 0x70CE, 0x70E1, 0x7242, 0x7278, 0x7277, 0x7276, 0x7300, 0x72FA, - 0x72F4, 0x72FE, 0x72F6, 0x72F3, 0x72FB, 0x7301, 0x73D3, 0x73D9, - 0x73E5, 0x73D6, 0x73BC, 0x73E7, 0x73E3, 0x73E9, 0x73DC, 0x73D2, - 0x73DB, 0x73D4, 0x73DD, 0x73DA, 0x73D7, 0x73D8, 0x73E8, 0x74DE, - 0x74DF, 0x74F4, 0x74F5, 0x7521, 0x755B, 0x755F, 0x75B0, 0x75C1, - 0x75BB, 0x75C4, 0x75C0, 0x75BF, 0x75B6, 0x75BA, 0x768A, 0x76C9, - 0x771D, 0x771B, 0x7710, 0x7713, 0x7712, 0x7723, 0x7711, 0x7715, - 0x7719, 0x771A, 0x7722, 0x7727, 0x7823, 0x782C, 0x7822, 0x7835, - 0x782F, 0x7828, 0x782E, 0x782B, 0x7821, 0x7829, 0x7833, 0x782A, - 0x7831, 0x7954, 0x795B, 0x794F, 0x795C, 0x7953, 0x7952, 0x7951, - 0x79EB, 0x79EC, 0x79E0, 0x79EE, 0x79ED, 0x79EA, 0x79DC, 0x79DE, - 0x79DD, 0x7A86, 0x7A89, 0x7A85, 0x7A8B, 0x7A8C, 0x7A8A, 0x7A87, - 0x7AD8, 0x7B10, 0x7B04, 0x7B13, 0x7B05, 0x7B0F, 0x7B08, 0x7B0A, - 0x7B0E, 0x7B09, 0x7B12, 0x7C84, 0x7C91, 0x7C8A, 0x7C8C, 0x7C88, - 0x7C8D, 0x7C85, 0x7D1E, 0x7D1D, 0x7D11, 0x7D0E, 0x7D18, 0x7D16, - 0x7D13, 0x7D1F, 0x7D12, 0x7D0F, 0x7D0C, 0x7F5C, 0x7F61, 0x7F5E, - 0x7F60, 0x7F5D, 0x7F5B, 0x7F96, 0x7F92, 0x7FC3, 0x7FC2, 0x7FC0, - 0x8016, 0x803E, 0x8039, 0x80FA, 0x80F2, 0x80F9, 0x80F5, 0x8101, - 0x80FB, 0x8100, 0x8201, 0x822F, 0x8225, 0x8333, 0x832D, 0x8344, - 0x8319, 0x8351, 0x8325, 0x8356, 0x833F, 0x8341, 0x8326, 0x831C, - 0x8322, 0x8342, 0x834E, 0x831B, 0x832A, 0x8308, 0x833C, 0x834D, - 0x8316, 0x8324, 0x8320, 0x8337, 0x832F, 0x8329, 0x8347, 0x8345, - 0x834C, 0x8353, 0x831E, 0x832C, 0x834B, 0x8327, 0x8348, 0x8653, -plane 32 -at 0x00 - 0x8652, 0x86A2, 0x86A8, 0x8696, 0x868D, 0x8691, 0x869E, 0x8687, - 0x8697, 0x8686, 0x868B, 0x869A, 0x8685, 0x86A5, 0x8699, 0x86A1, - 0x86A7, 0x8695, 0x8698, 0x868E, 0x869D, 0x8690, 0x8694, 0x8843, - 0x8844, 0x886D, 0x8875, 0x8876, 0x8872, 0x8880, 0x8871, 0x887F, - 0x886F, 0x8883, 0x887E, 0x8874, 0x887C, 0x8A12, 0x8C47, 0x8C57, - 0x8C7B, 0x8CA4, 0x8CA3, 0x8D76, 0x8D78, 0x8DB5, 0x8DB7, 0x8DB6, - 0x8ED1, 0x8ED3, 0x8FFE, 0x8FF5, 0x9002, 0x8FFF, 0x8FFB, 0x9004, - 0x8FFC, 0x8FF6, 0x90D6, 0x90E0, 0x90D9, 0x90DA, 0x90E3, 0x90DF, - 0x90E5, 0x90D8, 0x90DB, 0x90D7, 0x90DC, 0x90E4, 0x9150, 0x914E, - 0x914F, 0x91D5, 0x91E2, 0x91DA, 0x965C, 0x965F, 0x96BC, 0x98E3, - 0x9ADF, 0x9B2F, 0x4E7F, 0x5070, 0x506A, 0x5061, 0x505E, 0x5060, - 0x5053, 0x504B, 0x505D, 0x5072, 0x5048, 0x504D, 0x5041, 0x505B, - 0x504A, 0x5062, 0x5015, 0x5045, 0x505F, 0x5069, 0x506B, 0x5063, - 0x5064, 0x5046, 0x5040, 0x506E, 0x5073, 0x5057, 0x5051, 0x51D0, - 0x526B, 0x526D, 0x526C, 0x526E, 0x52D6, 0x52D3, 0x532D, 0x539C, - 0x5575, 0x5576, 0x553C, 0x554D, 0x5550, 0x5534, 0x552A, 0x5551, - 0x5562, 0x5536, 0x5535, 0x5530, 0x5552, 0x5545, 0x550C, 0x5532, - 0x5565, 0x554E, 0x5539, 0x5548, 0x552D, 0x553B, 0x5540, 0x554B, - 0x570A, 0x5707, 0x57FB, 0x5814, 0x57E2, 0x57F6, 0x57DC, 0x57F4, - 0x5800, 0x57ED, 0x57FD, 0x5808, 0x57F8, 0x580B, 0x57F3, 0x57CF, - 0x5807, 0x57EE, 0x57E3, 0x57F2, 0x57E5, 0x57EC, 0x57E1, 0x580E, - 0x57FC, 0x5810, 0x57E7, 0x5801, 0x580C, 0x57F1, 0x57E9, 0x57F0, - 0x580D, 0x5804, 0x595C, 0x5A60, 0x5A58, 0x5A55, 0x5A67, 0x5A5E, - 0x5A38, 0x5A35, 0x5A6D, 0x5A50, 0x5A5F, 0x5A65, 0x5A6C, 0x5A53, - 0x5A64, 0x5A57, 0x5A43, 0x5A5D, 0x5A52, 0x5A44, 0x5A5B, 0x5A48, - 0x5A8E, 0x5A3E, 0x5A4D, 0x5A39, 0x5A4C, 0x5A70, 0x5A69, 0x5A47, - 0x5A51, 0x5A56, 0x5A42, 0x5A5C, 0x5B72, 0x5B6E, 0x5BC1, 0x5BC0, - 0x5C59, 0x5D1E, 0x5D0B, 0x5D1D, 0x5D1A, 0x5D20, 0x5D0C, 0x5D28, - 0x5D0D, 0x5D26, 0x5D25, 0x5D0F, 0x5D30, 0x5D12, 0x5D23, 0x5D1F, - 0x5D2E, 0x5E3E, 0x5E34, 0x5EB1, 0x5EB4, 0x5EB9, 0x5EB2, 0x5EB3, - 0x5F36, 0x5F38, 0x5F9B, 0x5F96, 0x5F9F, 0x608A, 0x6090, 0x6086, - 0x60BE, 0x60B0, 0x60BA, 0x60D3, 0x60D4, 0x60CF, 0x60E4, 0x60D9, -plane 33 -at 0x00 - 0x60DD, 0x60C8, 0x60B1, 0x60DB, 0x60B7, 0x60CA, 0x60BF, 0x60C3, - 0x60CD, 0x60C0, 0x6332, 0x6365, 0x638A, 0x6382, 0x637D, 0x63BD, - 0x639E, 0x63AD, 0x639D, 0x6397, 0x63AB, 0x638E, 0x636F, 0x6387, - 0x6390, 0x636E, 0x63AF, 0x6375, 0x639C, 0x636D, 0x63AE, 0x637C, - 0x63A4, 0x633B, 0x639F, 0x6378, 0x6385, 0x6381, 0x6391, 0x638D, - 0x6370, 0x6553, 0x65CD, 0x6665, 0x6661, 0x665B, 0x6659, 0x665C, - 0x6662, 0x6718, 0x6879, 0x6887, 0x6890, 0x689C, 0x686D, 0x686E, - 0x68AE, 0x68AB, 0x6956, 0x686F, 0x68A3, 0x68AC, 0x68A9, 0x6875, - 0x6874, 0x68B2, 0x688F, 0x6877, 0x6892, 0x687C, 0x686B, 0x6872, - 0x68AA, 0x6880, 0x6871, 0x687E, 0x689B, 0x6896, 0x688B, 0x68A0, - 0x6889, 0x68A4, 0x6878, 0x687B, 0x6891, 0x688C, 0x688A, 0x687D, - 0x6B36, 0x6B33, 0x6B37, 0x6B38, 0x6B91, 0x6B8F, 0x6B8D, 0x6B8E, - 0x6B8C, 0x6C2A, 0x6DC0, 0x6DAB, 0x6DB4, 0x6DB3, 0x6E74, 0x6DAC, - 0x6DE9, 0x6DE2, 0x6DB7, 0x6DF6, 0x6DD4, 0x6E00, 0x6DC8, 0x6DE0, - 0x6DDF, 0x6DD6, 0x6DBE, 0x6DE5, 0x6DDC, 0x6DDD, 0x6DDB, 0x6DF4, - 0x6DCA, 0x6DBD, 0x6DED, 0x6DF0, 0x6DBA, 0x6DD5, 0x6DC2, 0x6DCF, - 0x6DC9, 0x6DD0, 0x6DF2, 0x6DD3, 0x6DFD, 0x6DD7, 0x6DCD, 0x6DE3, - 0x6DBB, 0x70FA, 0x710D, 0x70F7, 0x7117, 0x70F4, 0x710C, 0x70F0, - 0x7104, 0x70F3, 0x7110, 0x70FC, 0x70FF, 0x7106, 0x7113, 0x7100, - 0x70F8, 0x70F6, 0x710B, 0x7102, 0x710E, 0x727E, 0x727B, 0x727C, - 0x727F, 0x731D, 0x7317, 0x7307, 0x7311, 0x7318, 0x730A, 0x7308, - 0x72FF, 0x730F, 0x731E, 0x7388, 0x73F6, 0x73F8, 0x73F5, 0x7404, - 0x7401, 0x73FD, 0x7407, 0x7400, 0x73FA, 0x73FC, 0x73FF, 0x740C, - 0x740B, 0x73F4, 0x7408, 0x7564, 0x7563, 0x75CE, 0x75D2, 0x75CF, - 0x75CB, 0x75CC, 0x75D1, 0x75D0, 0x768F, 0x7689, 0x76D3, 0x7739, - 0x772F, 0x772D, 0x7731, 0x7732, 0x7734, 0x7733, 0x773D, 0x7725, - 0x773B, 0x7735, 0x7848, 0x7852, 0x7849, 0x784D, 0x784A, 0x784C, - 0x7826, 0x7845, 0x7850, 0x7964, 0x7967, 0x7969, 0x796A, 0x7963, - 0x796B, 0x7961, 0x79BB, 0x79FA, 0x79F8, 0x79F6, 0x79F7, 0x7A8F, - 0x7A94, 0x7A90, 0x7B35, 0x7B47, 0x7B34, 0x7B25, 0x7B30, 0x7B22, - 0x7B24, 0x7B33, 0x7B18, 0x7B2A, 0x7B1D, 0x7B31, 0x7B2B, 0x7B2D, - 0x7B2F, 0x7B32, 0x7B38, 0x7B1A, 0x7B23, 0x7C94, 0x7C98, 0x7C96, -plane 34 -at 0x00 - 0x7CA3, 0x7D35, 0x7D3D, 0x7D38, 0x7D36, 0x7D3A, 0x7D45, 0x7D2C, - 0x7D29, 0x7D41, 0x7D47, 0x7D3E, 0x7D3F, 0x7D4A, 0x7D3B, 0x7D28, - 0x7F63, 0x7F95, 0x7F9C, 0x7F9D, 0x7F9B, 0x7FCA, 0x7FCB, 0x7FCD, - 0x7FD0, 0x7FD1, 0x7FC7, 0x7FCF, 0x7FC9, 0x801F, 0x801E, 0x801B, - 0x8047, 0x8043, 0x8048, 0x8118, 0x8125, 0x8119, 0x811B, 0x812D, - 0x811F, 0x812C, 0x811E, 0x8121, 0x8115, 0x8127, 0x811D, 0x8122, - 0x8211, 0x8238, 0x8233, 0x823A, 0x8234, 0x8232, 0x8274, 0x8390, - 0x83A3, 0x83A8, 0x838D, 0x837A, 0x8373, 0x83A4, 0x8374, 0x838F, - 0x8381, 0x8395, 0x8399, 0x8375, 0x8394, 0x83A9, 0x837D, 0x8383, - 0x838C, 0x839D, 0x839B, 0x83AA, 0x838B, 0x837E, 0x83A5, 0x83AF, - 0x8388, 0x8397, 0x83B0, 0x837F, 0x83A6, 0x8387, 0x83AE, 0x8376, - 0x839A, 0x8659, 0x8656, 0x86BF, 0x86B7, 0x86C2, 0x86C1, 0x86C5, - 0x86BA, 0x86B0, 0x86C8, 0x86B9, 0x86B3, 0x86B8, 0x86CC, 0x86B4, - 0x86BB, 0x86BC, 0x86C3, 0x86BD, 0x86BE, 0x8852, 0x8889, 0x8895, - 0x88A8, 0x88A2, 0x88AA, 0x889A, 0x8891, 0x88A1, 0x889F, 0x8898, - 0x88A7, 0x8899, 0x889B, 0x8897, 0x88A4, 0x88AC, 0x888C, 0x8893, - 0x888E, 0x8982, 0x89D6, 0x89D9, 0x89D5, 0x8A30, 0x8A27, 0x8A2C, - 0x8A1E, 0x8C39, 0x8C3B, 0x8C5C, 0x8C5D, 0x8C7D, 0x8CA5, 0x8D7D, - 0x8D7B, 0x8D79, 0x8DBC, 0x8DC2, 0x8DB9, 0x8DBF, 0x8DC1, 0x8ED8, - 0x8EDE, 0x8EDD, 0x8EDC, 0x8ED7, 0x8EE0, 0x8EE1, 0x9024, 0x900B, - 0x9011, 0x901C, 0x900C, 0x9021, 0x90EF, 0x90EA, 0x90F0, 0x90F4, - 0x90F2, 0x90F3, 0x90D4, 0x90EB, 0x90EC, 0x90E9, 0x9156, 0x9158, - 0x915A, 0x9153, 0x9155, 0x91EC, 0x91F4, 0x91F1, 0x91F3, 0x91F8, - 0x91E4, 0x91F9, 0x91EA, 0x91EB, 0x91F7, 0x91E8, 0x91EE, 0x957A, - 0x9586, 0x9588, 0x967C, 0x966D, 0x966B, 0x9671, 0x966F, 0x96BF, - 0x976A, 0x9804, 0x98E5, 0x9997, 0x509B, 0x5095, 0x5094, 0x509E, - 0x508B, 0x50A3, 0x5083, 0x508C, 0x508E, 0x509D, 0x5068, 0x509C, - 0x5092, 0x5082, 0x5087, 0x515F, 0x51D4, 0x5312, 0x5311, 0x53A4, - 0x53A7, 0x5591, 0x55A8, 0x55A5, 0x55AD, 0x5577, 0x5645, 0x55A2, - 0x5593, 0x5588, 0x558F, 0x55B5, 0x5581, 0x55A3, 0x5592, 0x55A4, - 0x557D, 0x558C, 0x55A6, 0x557F, 0x5595, 0x55A1, 0x558E, 0x570C, - 0x5829, 0x5837, 0x5819, 0x581E, 0x5827, 0x5823, 0x5828, 0x57F5, -plane 35 -at 0x00 - 0x5848, 0x5825, 0x581C, 0x581B, 0x5833, 0x583F, 0x5836, 0x582E, - 0x5839, 0x5838, 0x582D, 0x582C, 0x583B, 0x5961, 0x5AAF, 0x5A94, - 0x5A9F, 0x5A7A, 0x5AA2, 0x5A9E, 0x5A78, 0x5AA6, 0x5A7C, 0x5AA5, - 0x5AAC, 0x5A95, 0x5AAE, 0x5A37, 0x5A84, 0x5A8A, 0x5A97, 0x5A83, - 0x5A8B, 0x5AA9, 0x5A7B, 0x5A7D, 0x5A8C, 0x5A9C, 0x5A8F, 0x5A93, - 0x5A9D, 0x5BEA, 0x5BCD, 0x5BCB, 0x5BD4, 0x5BD1, 0x5BCA, 0x5BCE, - 0x5C0C, 0x5C30, 0x5D37, 0x5D43, 0x5D6B, 0x5D41, 0x5D4B, 0x5D3F, - 0x5D35, 0x5D51, 0x5D4E, 0x5D55, 0x5D33, 0x5D3A, 0x5D52, 0x5D3D, - 0x5D31, 0x5D59, 0x5D42, 0x5D39, 0x5D49, 0x5D38, 0x5D3C, 0x5D32, - 0x5D36, 0x5D40, 0x5D45, 0x5E44, 0x5E41, 0x5F58, 0x5FA6, 0x5FA5, - 0x5FAB, 0x60C9, 0x60B9, 0x60CC, 0x60E2, 0x60CE, 0x60C4, 0x6114, - 0x60F2, 0x610A, 0x6116, 0x6105, 0x60F5, 0x6113, 0x60F8, 0x60FC, - 0x60FE, 0x60C1, 0x6103, 0x6118, 0x611D, 0x6110, 0x60FF, 0x6104, - 0x610B, 0x624A, 0x6394, 0x63B1, 0x63B0, 0x63CE, 0x63E5, 0x63E8, - 0x63EF, 0x63C3, 0x649D, 0x63F3, 0x63CA, 0x63E0, 0x63F6, 0x63D5, - 0x63F2, 0x63F5, 0x6461, 0x63DF, 0x63BE, 0x63DD, 0x63DC, 0x63C4, - 0x63D8, 0x63D3, 0x63C2, 0x63C7, 0x63CC, 0x63CB, 0x63C8, 0x63F0, - 0x63D7, 0x63D9, 0x6532, 0x6567, 0x656A, 0x6564, 0x655C, 0x6568, - 0x6565, 0x658C, 0x659D, 0x659E, 0x65AE, 0x65D0, 0x65D2, 0x667C, - 0x666C, 0x667B, 0x6680, 0x6671, 0x6679, 0x666A, 0x6672, 0x6701, - 0x690C, 0x68D3, 0x6904, 0x68DC, 0x692A, 0x68EC, 0x68EA, 0x68F1, - 0x690F, 0x68D6, 0x68F7, 0x68EB, 0x68E4, 0x68F6, 0x6913, 0x6910, - 0x68F3, 0x68E1, 0x6907, 0x68CC, 0x6908, 0x6970, 0x68B4, 0x6911, - 0x68EF, 0x68C6, 0x6914, 0x68F8, 0x68D0, 0x68FD, 0x68FC, 0x68E8, - 0x690B, 0x690A, 0x6917, 0x68CE, 0x68C8, 0x68DD, 0x68DE, 0x68E6, - 0x68F4, 0x68D1, 0x6906, 0x68D4, 0x68E9, 0x6915, 0x6925, 0x68C7, - 0x6B39, 0x6B3B, 0x6B3F, 0x6B3C, 0x6B94, 0x6B97, 0x6B99, 0x6B95, - 0x6BBD, 0x6BF0, 0x6BF2, 0x6BF3, 0x6C30, 0x6DFC, 0x6E46, 0x6E47, - 0x6E1F, 0x6E49, 0x6E88, 0x6E3C, 0x6E3D, 0x6E45, 0x6E62, 0x6E2B, - 0x6E3F, 0x6E41, 0x6E5D, 0x6E73, 0x6E1C, 0x6E33, 0x6E4B, 0x6E40, - 0x6E51, 0x6E3B, 0x6E03, 0x6E2E, 0x6E5E, 0x6E68, 0x6E5C, 0x6E61, - 0x6E31, 0x6E28, 0x6E60, 0x6E71, 0x6E6B, 0x6E39, 0x6E22, 0x6E30, -plane 36 -at 0x00 - 0x6E53, 0x6E65, 0x6E27, 0x6E78, 0x6E64, 0x6E77, 0x6E55, 0x6E79, - 0x6E52, 0x6E66, 0x6E35, 0x6E36, 0x6E5A, 0x7120, 0x711E, 0x712F, - 0x70FB, 0x712E, 0x7131, 0x7123, 0x7125, 0x7122, 0x7132, 0x711F, - 0x7128, 0x713A, 0x711B, 0x724B, 0x725A, 0x7288, 0x7289, 0x7286, - 0x7285, 0x728B, 0x7312, 0x730B, 0x7330, 0x7322, 0x7331, 0x7333, - 0x7327, 0x7332, 0x732D, 0x7326, 0x7323, 0x7335, 0x730C, 0x742E, - 0x742C, 0x7430, 0x742B, 0x7416, 0x741A, 0x7421, 0x742D, 0x7431, - 0x7424, 0x7423, 0x741D, 0x7429, 0x7420, 0x7432, 0x74FB, 0x752F, - 0x756F, 0x756C, 0x75E7, 0x75DA, 0x75E1, 0x75E6, 0x75DD, 0x75DF, - 0x75E4, 0x75D7, 0x7695, 0x7692, 0x76DA, 0x7746, 0x7747, 0x7744, - 0x774D, 0x7745, 0x774A, 0x774E, 0x774B, 0x774C, 0x77DE, 0x77EC, - 0x7860, 0x7864, 0x7865, 0x785C, 0x786D, 0x7871, 0x786A, 0x786E, - 0x7870, 0x7869, 0x7868, 0x785E, 0x7862, 0x7974, 0x7973, 0x7972, - 0x7970, 0x7A02, 0x7A0A, 0x7A03, 0x7A0C, 0x7A04, 0x7A99, 0x7AE6, - 0x7AE4, 0x7B4A, 0x7B3B, 0x7B44, 0x7B48, 0x7B4C, 0x7B4E, 0x7B40, - 0x7B58, 0x7B45, 0x7CA2, 0x7C9E, 0x7CA8, 0x7CA1, 0x7D58, 0x7D6F, - 0x7D63, 0x7D53, 0x7D56, 0x7D67, 0x7D6A, 0x7D4F, 0x7D6D, 0x7D5C, - 0x7D6B, 0x7D52, 0x7D54, 0x7D69, 0x7D51, 0x7D5F, 0x7D4E, 0x7F3E, - 0x7F3F, 0x7F65, 0x7F66, 0x7FA2, 0x7FA0, 0x7FA1, 0x7FD7, 0x8051, - 0x804F, 0x8050, 0x80FE, 0x80D4, 0x8143, 0x814A, 0x8152, 0x814F, - 0x8147, 0x813D, 0x814D, 0x813A, 0x81E6, 0x81EE, 0x81F7, 0x81F8, - 0x81F9, 0x8204, 0x823C, 0x823D, 0x823F, 0x8275, 0x833B, 0x83CF, - 0x83F9, 0x8423, 0x83C0, 0x83E8, 0x8412, 0x83E7, 0x83E4, 0x83FC, - 0x83F6, 0x8410, 0x83C6, 0x83C8, 0x83EB, 0x83E3, 0x83BF, 0x8401, - 0x83DD, 0x83E5, 0x83D8, 0x83FF, 0x83E1, 0x83CB, 0x83CE, 0x83D6, - 0x83F5, 0x83C9, 0x8409, 0x840F, 0x83DE, 0x8411, 0x8406, 0x83C2, - 0x83F3, 0x83D5, 0x83FA, 0x83C7, 0x83D1, 0x83EA, 0x8413, 0x83C3, - 0x83EC, 0x83EE, 0x83C4, 0x83FB, 0x83D7, 0x83E2, 0x841B, 0x83DB, - 0x83FE, 0x86D8, 0x86E2, 0x86E6, 0x86D3, 0x86E3, 0x86DA, 0x86EA, - 0x86DD, 0x86EB, 0x86DC, 0x86EC, 0x86E9, 0x86D7, 0x86E8, 0x86D1, - 0x8848, 0x8856, 0x8855, 0x88BA, 0x88D7, 0x88B9, 0x88B8, 0x88C0, - 0x88BE, 0x88B6, 0x88BC, 0x88B7, 0x88BD, 0x88B2, 0x8901, 0x88C9, -plane 37 -at 0x00 - 0x8995, 0x8998, 0x8997, 0x89DD, 0x89DA, 0x89DB, 0x8A4E, 0x8A4D, - 0x8A39, 0x8A59, 0x8A40, 0x8A57, 0x8A58, 0x8A44, 0x8A45, 0x8A52, - 0x8A48, 0x8A51, 0x8A4A, 0x8A4C, 0x8A4F, 0x8C5F, 0x8C81, 0x8C80, - 0x8CBA, 0x8CBE, 0x8CB0, 0x8CB9, 0x8CB5, 0x8D84, 0x8D80, 0x8D89, - 0x8DD8, 0x8DD3, 0x8DCD, 0x8DC7, 0x8DD6, 0x8DDC, 0x8DCF, 0x8DD5, - 0x8DD9, 0x8DC8, 0x8DD7, 0x8DC5, 0x8EEF, 0x8EF7, 0x8EFA, 0x8EF9, - 0x8EE6, 0x8EEE, 0x8EE5, 0x8EF5, 0x8EE7, 0x8EE8, 0x8EF6, 0x8EEB, - 0x8EF1, 0x8EEC, 0x8EF4, 0x8EE9, 0x902D, 0x9034, 0x902F, 0x9106, - 0x912C, 0x9104, 0x90FF, 0x90FC, 0x9108, 0x90F9, 0x90FB, 0x9101, - 0x9100, 0x9107, 0x9105, 0x9103, 0x9161, 0x9164, 0x915F, 0x9162, - 0x9160, 0x9201, 0x920A, 0x9225, 0x9203, 0x921A, 0x9226, 0x920F, - 0x920C, 0x9200, 0x9212, 0x91FF, 0x91FD, 0x9206, 0x9204, 0x9227, - 0x9202, 0x921C, 0x9224, 0x9219, 0x9217, 0x9205, 0x9216, 0x957B, - 0x958D, 0x958C, 0x9590, 0x9687, 0x967E, 0x9688, 0x9689, 0x9683, - 0x9680, 0x96C2, 0x96C8, 0x96C3, 0x96F1, 0x96F0, 0x976C, 0x9770, - 0x976E, 0x9807, 0x98A9, 0x98EB, 0x9CE6, 0x9EF9, 0x4E83, 0x4E84, - 0x4EB6, 0x50BD, 0x50BF, 0x50C6, 0x50AE, 0x50C4, 0x50CA, 0x50B4, - 0x50C8, 0x50C2, 0x50B0, 0x50C1, 0x50BA, 0x50B1, 0x50CB, 0x50C9, - 0x50B6, 0x50B8, 0x51D7, 0x527A, 0x5278, 0x527B, 0x527C, 0x55C3, - 0x55DB, 0x55CC, 0x55D0, 0x55CB, 0x55CA, 0x55DD, 0x55C0, 0x55D4, - 0x55C4, 0x55E9, 0x55BF, 0x55D2, 0x558D, 0x55CF, 0x55D5, 0x55E2, - 0x55D6, 0x55C8, 0x55F2, 0x55CD, 0x55D9, 0x55C2, 0x5714, 0x5853, - 0x5868, 0x5864, 0x584F, 0x584D, 0x5849, 0x586F, 0x5855, 0x584E, - 0x585D, 0x5859, 0x5865, 0x585B, 0x583D, 0x5863, 0x5871, 0x58FC, - 0x5AC7, 0x5AC4, 0x5ACB, 0x5ABA, 0x5AB8, 0x5AB1, 0x5AB5, 0x5AB0, - 0x5ABF, 0x5AC8, 0x5ABB, 0x5AC6, 0x5AB7, 0x5AC0, 0x5ACA, 0x5AB4, - 0x5AB6, 0x5ACD, 0x5AB9, 0x5A90, 0x5BD6, 0x5BD8, 0x5BD9, 0x5C1F, - 0x5C33, 0x5D71, 0x5D63, 0x5D4A, 0x5D65, 0x5D72, 0x5D6C, 0x5D5E, - 0x5D68, 0x5D67, 0x5D62, 0x5DF0, 0x5E4F, 0x5E4E, 0x5E4A, 0x5E4D, - 0x5E4B, 0x5EC5, 0x5ECC, 0x5EC6, 0x5ECB, 0x5EC7, 0x5F40, 0x5FAF, - 0x5FAD, 0x60F7, 0x6149, 0x614A, 0x612B, 0x6145, 0x6136, 0x6132, - 0x612E, 0x6146, 0x612F, 0x614F, 0x6129, 0x6140, 0x6220, 0x9168, -plane 38 -at 0x00 - 0x6223, 0x6225, 0x6224, 0x63C5, 0x63F1, 0x63EB, 0x6410, 0x6412, - 0x6409, 0x6420, 0x6424, 0x6433, 0x6443, 0x641F, 0x6415, 0x6418, - 0x6439, 0x6437, 0x6422, 0x6423, 0x640C, 0x6426, 0x6430, 0x6428, - 0x6441, 0x6435, 0x642F, 0x640A, 0x641A, 0x6440, 0x6425, 0x6427, - 0x640B, 0x63E7, 0x641B, 0x642E, 0x6421, 0x640E, 0x656F, 0x6592, - 0x65D3, 0x6686, 0x668C, 0x6695, 0x6690, 0x668B, 0x668A, 0x6699, - 0x6694, 0x6678, 0x6720, 0x6966, 0x695F, 0x6938, 0x694E, 0x6962, - 0x6971, 0x693F, 0x6945, 0x696A, 0x6939, 0x6942, 0x6957, 0x6959, - 0x697A, 0x6948, 0x6949, 0x6935, 0x696C, 0x6933, 0x693D, 0x6965, - 0x68F0, 0x6978, 0x6934, 0x6969, 0x6940, 0x696F, 0x6944, 0x6976, - 0x6958, 0x6941, 0x6974, 0x694C, 0x693B, 0x694B, 0x6937, 0x695C, - 0x694F, 0x6951, 0x6932, 0x6952, 0x692F, 0x697B, 0x693C, 0x6B46, - 0x6B45, 0x6B43, 0x6B42, 0x6B48, 0x6B41, 0x6B9B, 0xFA0D, 0x6BFB, - 0x6BFC, 0x6BF9, 0x6BF7, 0x6BF8, 0x6E9B, 0x6ED6, 0x6EC8, 0x6E8F, - 0x6EC0, 0x6E9F, 0x6E93, 0x6E94, 0x6EA0, 0x6EB1, 0x6EB9, 0x6EC6, - 0x6ED2, 0x6EBD, 0x6EC1, 0x6E9E, 0x6EC9, 0x6EB7, 0x6EB0, 0x6ECD, - 0x6EA6, 0x6ECF, 0x6EB2, 0x6EBE, 0x6EC3, 0x6EDC, 0x6ED8, 0x6E99, - 0x6E92, 0x6E8E, 0x6E8D, 0x6EA4, 0x6EA1, 0x6EBF, 0x6EB3, 0x6ED0, - 0x6ECA, 0x6E97, 0x6EAE, 0x6EA3, 0x7147, 0x7154, 0x7152, 0x7163, - 0x7160, 0x7141, 0x715D, 0x7162, 0x7172, 0x7178, 0x716A, 0x7161, - 0x7142, 0x7158, 0x7143, 0x714B, 0x7170, 0x715F, 0x7150, 0x7153, - 0x7144, 0x714D, 0x715A, 0x724F, 0x728D, 0x728C, 0x7291, 0x7290, - 0x728E, 0x733C, 0x7342, 0x733B, 0x733A, 0x7340, 0x734A, 0x7349, - 0x7444, 0x744A, 0x744B, 0x7452, 0x7451, 0x7457, 0x7440, 0x744F, - 0x7450, 0x744E, 0x7442, 0x7446, 0x744D, 0x7454, 0x74E1, 0x74FF, - 0x74FE, 0x74FD, 0x751D, 0x7579, 0x7577, 0x6983, 0x75EF, 0x760F, - 0x7603, 0x75F7, 0x75FE, 0x75FC, 0x75F9, 0x75F8, 0x7610, 0x75FB, - 0x75F6, 0x75ED, 0x75F5, 0x75FD, 0x7699, 0x76B5, 0x76DD, 0x7755, - 0x775F, 0x7760, 0x7752, 0x7756, 0x775A, 0x7769, 0x7767, 0x7754, - 0x7759, 0x776D, 0x77E0, 0x7887, 0x789A, 0x7894, 0x788F, 0x7884, - 0x7895, 0x7885, 0x7886, 0x78A1, 0x7883, 0x7879, 0x7899, 0x7880, - 0x7896, 0x787B, 0x797C, 0x7982, 0x797D, 0x7979, 0x7A11, 0x7A18, -plane 39 -at 0x00 - 0x7A19, 0x7A12, 0x7A17, 0x7A15, 0x7A22, 0x7A13, 0x7A1B, 0x7A10, - 0x7AA3, 0x7AA2, 0x7A9E, 0x7AEB, 0x7B66, 0x7B64, 0x7B6D, 0x7B74, - 0x7B69, 0x7B72, 0x7B65, 0x7B73, 0x7B71, 0x7B70, 0x7B61, 0x7B78, - 0x7B76, 0x7B63, 0x7CB2, 0x7CB4, 0x7CAF, 0x7D88, 0x7D86, 0x7D80, - 0x7D8D, 0x7D7F, 0x7D85, 0x7D7A, 0x7D8E, 0x7D7B, 0x7D83, 0x7D7C, - 0x7D8C, 0x7D94, 0x7D84, 0x7D7D, 0x7D92, 0x7F6D, 0x7F6B, 0x7F67, - 0x7F68, 0x7F6C, 0x7FA6, 0x7FA5, 0x7FA7, 0x7FDB, 0x7FDC, 0x8021, - 0x8164, 0x8160, 0x8177, 0x815C, 0x8169, 0x815B, 0x8162, 0x8172, - 0x6721, 0x815E, 0x8176, 0x8167, 0x816F, 0x8144, 0x8161, 0x821D, - 0x8249, 0x8244, 0x8240, 0x8242, 0x8245, 0x84F1, 0x843F, 0x8456, - 0x8476, 0x8479, 0x848F, 0x848D, 0x8465, 0x8451, 0x8440, 0x8486, - 0x8467, 0x8430, 0x844D, 0x847D, 0x845A, 0x8459, 0x8474, 0x8473, - 0x845D, 0x8507, 0x845E, 0x8437, 0x843A, 0x8434, 0x847A, 0x8443, - 0x8478, 0x8432, 0x8445, 0x8429, 0x83D9, 0x844B, 0x842F, 0x8442, - 0x842D, 0x845F, 0x8470, 0x8439, 0x844E, 0x844C, 0x8452, 0x846F, - 0x84C5, 0x848E, 0x843B, 0x8447, 0x8436, 0x8433, 0x8468, 0x847E, - 0x8444, 0x842B, 0x8460, 0x8454, 0x846E, 0x8450, 0x870B, 0x8704, - 0x86F7, 0x870C, 0x86FA, 0x86D6, 0x86F5, 0x874D, 0x86F8, 0x870E, - 0x8709, 0x8701, 0x86F6, 0x870D, 0x8705, 0x88D6, 0x88CB, 0x88CD, - 0x88CE, 0x88DE, 0x88DB, 0x88DA, 0x88CC, 0x88D0, 0x8985, 0x899B, - 0x89DF, 0x89E5, 0x89E4, 0x89E1, 0x89E0, 0x89E2, 0x89DC, 0x89E6, - 0x8A76, 0x8A86, 0x8A7F, 0x8A61, 0x8A3F, 0x8A77, 0x8A82, 0x8A84, - 0x8A75, 0x8A83, 0x8A81, 0x8A74, 0x8A7A, 0x8C3C, 0x8C4B, 0x8C4A, - 0x8C65, 0x8C64, 0x8C66, 0x8C86, 0x8C84, 0x8C85, 0x8CCC, 0x8D68, - 0x8D69, 0x8D91, 0x8D8C, 0x8D8E, 0x8D8F, 0x8D8D, 0x8D93, 0x8D94, - 0x8D90, 0x8D92, 0x8DF0, 0x8DE0, 0x8DEC, 0x8DF1, 0x8DEE, 0x8DD0, - 0x8DE9, 0x8DE3, 0x8DE2, 0x8DE7, 0x8DF2, 0x8DEB, 0x8DF4, 0x8F06, - 0x8EFF, 0x8F01, 0x8F00, 0x8F05, 0x8F07, 0x8F08, 0x8F02, 0x8F0B, - 0x9052, 0x903F, 0x9044, 0x9049, 0x903D, 0x9110, 0x910D, 0x910F, - 0x9111, 0x9116, 0x9114, 0x910B, 0x910E, 0x916E, 0x916F, 0x9248, - 0x9252, 0x9230, 0x923A, 0x9266, 0x9233, 0x9265, 0x925E, 0x9283, - 0x922E, 0x924A, 0x9246, 0x926D, 0x926C, 0x924F, 0x9260, 0x9267, -plane 40 -at 0x00 - 0x926F, 0x9236, 0x9261, 0x9270, 0x9231, 0x9254, 0x9263, 0x9250, - 0x9272, 0x924E, 0x9253, 0x924C, 0x9256, 0x9232, 0x959F, 0x959C, - 0x959E, 0x959B, 0x9692, 0x9693, 0x9691, 0x9697, 0x96CE, 0x96FA, - 0x96FD, 0x96F8, 0x96F5, 0x9773, 0x9777, 0x9778, 0x9772, 0x980F, - 0x980D, 0x980E, 0x98AC, 0x98F6, 0x98F9, 0x99AF, 0x99B2, 0x99B0, - 0x99B5, 0x9AAD, 0x9AAB, 0x9B5B, 0x9CEA, 0x9CED, 0x9CE7, 0x9E80, - 0x9EFD, 0x50E6, 0x50D4, 0x50D7, 0x50E8, 0x50F3, 0x50DB, 0x50EA, - 0x50DD, 0x50E4, 0x50D3, 0x50EC, 0x50F0, 0x50EF, 0x50E3, 0x50E0, - 0x51D8, 0x5280, 0x5281, 0x52E9, 0x52EB, 0x5330, 0x53AC, 0x5627, - 0x5615, 0x560C, 0x5612, 0x55FC, 0x560F, 0x561C, 0x5601, 0x5613, - 0x5602, 0x55FA, 0x561D, 0x5604, 0x55FF, 0x55F9, 0x5889, 0x587C, - 0x5890, 0x5898, 0x5886, 0x5881, 0x587F, 0x5874, 0x588B, 0x587A, - 0x5887, 0x5891, 0x588E, 0x5876, 0x5882, 0x5888, 0x587B, 0x5894, - 0x588F, 0x58FE, 0x596B, 0x5ADC, 0x5AEE, 0x5AE5, 0x5AD5, 0x5AEA, - 0x5ADA, 0x5AED, 0x5AEB, 0x5AF3, 0x5AE2, 0x5AE0, 0x5ADB, 0x5AEC, - 0x5ADE, 0x5ADD, 0x5AD9, 0x5AE8, 0x5ADF, 0x5B77, 0x5BE0, 0x5BE3, - 0x5C63, 0x5D82, 0x5D80, 0x5D7D, 0x5D86, 0x5D7A, 0x5D81, 0x5D77, - 0x5D8A, 0x5D89, 0x5D88, 0x5D7E, 0x5D7C, 0x5D8D, 0x5D79, 0x5D7F, - 0x5E58, 0x5E59, 0x5E53, 0x5ED8, 0x5ED1, 0x5ED7, 0x5ECE, 0x5EDC, - 0x5ED5, 0x5ED9, 0x5ED2, 0x5ED4, 0x5F44, 0x5F43, 0x5F6F, 0x5FB6, - 0x612C, 0x6128, 0x6141, 0x615E, 0x6171, 0x6173, 0x6152, 0x6153, - 0x6172, 0x616C, 0x6180, 0x6174, 0x6154, 0x617A, 0x615B, 0x6165, - 0x613B, 0x616A, 0x6161, 0x6156, 0x6229, 0x6227, 0x622B, 0x642B, - 0x644D, 0x645B, 0x645D, 0x6474, 0x6476, 0x6472, 0x6473, 0x647D, - 0x6475, 0x6466, 0x64A6, 0x644E, 0x6482, 0x645E, 0x645C, 0x644B, - 0x6453, 0x6460, 0x6450, 0x647F, 0x643F, 0x646C, 0x646B, 0x6459, - 0x6465, 0x6477, 0x6573, 0x65A0, 0x66A1, 0x66A0, 0x669F, 0x6705, - 0x6704, 0x6722, 0x69B1, 0x69B6, 0x69C9, 0x69A0, 0x69CE, 0x6996, - 0x69B0, 0x69AC, 0x69BC, 0x6991, 0x6999, 0x698E, 0x69A7, 0x698D, - 0x69A9, 0x69BE, 0x69AF, 0x69BF, 0x69C4, 0x69BD, 0x69A4, 0x69D4, - 0x69B9, 0x69CA, 0x699A, 0x69CF, 0x69B3, 0x6993, 0x69AA, 0x69A1, - 0x699E, 0x69D9, 0x6997, 0x6990, 0x69C2, 0x69B5, 0x69A5, 0x69C6, -plane 41 -at 0x00 - 0x6B4A, 0x6B4D, 0x6B4B, 0x6B9E, 0x6B9F, 0x6BA0, 0x6BC3, 0x6BC4, - 0x6BFE, 0x6ECE, 0x6EF5, 0x6EF1, 0x6F03, 0x6F25, 0x6EF8, 0x6F37, - 0x6EFB, 0x6F2E, 0x6F09, 0x6F4E, 0x6F19, 0x6F1A, 0x6F27, 0x6F18, - 0x6F3B, 0x6F12, 0x6EED, 0x6F0A, 0x6F36, 0x6F73, 0x6EF9, 0x6EEE, - 0x6F2D, 0x6F40, 0x6F30, 0x6F3C, 0x6F35, 0x6EEB, 0x6F07, 0x6F0E, - 0x6F43, 0x6F05, 0x6EFD, 0x6EF6, 0x6F39, 0x6F1C, 0x6EFC, 0x6F3A, - 0x6F1F, 0x6F0D, 0x6F1E, 0x6F08, 0x6F21, 0x7187, 0x7190, 0x7189, - 0x7180, 0x7185, 0x7182, 0x718F, 0x717B, 0x7186, 0x7181, 0x7197, - 0x7244, 0x7253, 0x7297, 0x7295, 0x7293, 0x7343, 0x734D, 0x7351, - 0x734C, 0x7462, 0x7473, 0x7471, 0x7475, 0x7472, 0x7467, 0x746E, - 0x7500, 0x7502, 0x7503, 0x757D, 0x7590, 0x7616, 0x7608, 0x760C, - 0x7615, 0x7611, 0x760A, 0x7614, 0x76B8, 0x7781, 0x777C, 0x7785, - 0x7782, 0x776E, 0x7780, 0x776F, 0x777E, 0x7783, 0x78B2, 0x78AA, - 0x78B4, 0x78AD, 0x78A8, 0x787E, 0x78AB, 0x789E, 0x78A5, 0x78A0, - 0x78AC, 0x78A2, 0x78A4, 0x7998, 0x798A, 0x798B, 0x7996, 0x7995, - 0x7994, 0x7993, 0x7997, 0x7988, 0x7992, 0x7990, 0x7A2B, 0x7A4A, - 0x7A30, 0x7A2F, 0x7A28, 0x7A26, 0x7AA8, 0x7AAB, 0x7AAC, 0x7AEE, - 0x7B88, 0x7B9C, 0x7B8A, 0x7B91, 0x7B90, 0x7B96, 0x7B8D, 0x7B8C, - 0x7B9B, 0x7B8E, 0x7B85, 0x7B98, 0x5284, 0x7B99, 0x7BA4, 0x7B82, - 0x7CBB, 0x7CBF, 0x7CBC, 0x7CBA, 0x7DA7, 0x7DB7, 0x7DC2, 0x7DA3, - 0x7DAA, 0x7DC1, 0x7DC0, 0x7DC5, 0x7D9D, 0x7DCE, 0x7DC4, 0x7DC6, - 0x7DCB, 0x7DCC, 0x7DAF, 0x7DB9, 0x7D96, 0x7DBC, 0x7D9F, 0x7DA6, - 0x7DAE, 0x7DA9, 0x7DA1, 0x7DC9, 0x7F73, 0x7FE2, 0x7FE3, 0x7FE5, - 0x7FDE, 0x8024, 0x805D, 0x805C, 0x8189, 0x8186, 0x8183, 0x8187, - 0x818D, 0x818C, 0x818B, 0x8215, 0x8497, 0x84A4, 0x84A1, 0x849F, - 0x84BA, 0x84CE, 0x84C2, 0x84AC, 0x84AE, 0x84AB, 0x84B9, 0x84B4, - 0x84C1, 0x84CD, 0x84AA, 0x849A, 0x84B1, 0x84D0, 0x849D, 0x84A7, - 0x84BB, 0x84A2, 0x8494, 0x84C7, 0x84CC, 0x849B, 0x84A9, 0x84AF, - 0x84A8, 0x84D6, 0x8498, 0x84B6, 0x84CF, 0x84A0, 0x84D7, 0x84D4, - 0x84D2, 0x84DB, 0x84B0, 0x8491, 0x8661, 0x8733, 0x8723, 0x8728, - 0x876B, 0x8740, 0x872E, 0x871E, 0x8721, 0x8719, 0x871B, 0x8743, - 0x872C, 0x8741, 0x873E, 0x8746, 0x8720, 0x8732, 0x872A, 0x872D, -plane 42 -at 0x00 - 0x873C, 0x8712, 0x873A, 0x8731, 0x8735, 0x8742, 0x8726, 0x8727, - 0x8738, 0x8724, 0x871A, 0x8730, 0x8711, 0x88F7, 0x88E7, 0x88F1, - 0x88F2, 0x88FA, 0x88FE, 0x88EE, 0x88FC, 0x88F6, 0x88FB, 0x88F0, - 0x88EC, 0x88EB, 0x899D, 0x89A1, 0x899F, 0x899E, 0x89E9, 0x89EB, - 0x89E8, 0x8AAB, 0x8A99, 0x8A8B, 0x8A92, 0x8A8F, 0x8A96, 0x8C3D, - 0x8C68, 0x8C69, 0x8CD5, 0x8CCF, 0x8CD7, 0x8D96, 0x8E09, 0x8E02, - 0x8DFF, 0x8E0D, 0x8DFD, 0x8E0A, 0x8E03, 0x8E07, 0x8E06, 0x8E05, - 0x8DFE, 0x8E00, 0x8E04, 0x8F10, 0x8F11, 0x8F0E, 0x8F0D, 0x9123, - 0x911C, 0x9120, 0x9122, 0x911F, 0x911D, 0x911A, 0x9124, 0x9121, - 0x911B, 0x917A, 0x9172, 0x9179, 0x9173, 0x92A5, 0x92A4, 0x9276, - 0x929B, 0x927A, 0x92A0, 0x9294, 0x92AA, 0x928D, 0x92A6, 0x929A, - 0x92AB, 0x9279, 0x9297, 0x927F, 0x92A3, 0x92EE, 0x928E, 0x9282, - 0x9295, 0x92A2, 0x927D, 0x9288, 0x92A1, 0x928A, 0x9286, 0x928C, - 0x9299, 0x92A7, 0x927E, 0x9287, 0x92A9, 0x929D, 0x928B, 0x922D, - 0x969E, 0x96A1, 0x96FF, 0x9758, 0x977D, 0x977A, 0x977E, 0x9783, - 0x9780, 0x9782, 0x977B, 0x9784, 0x9781, 0x977F, 0x97CE, 0x97CD, - 0x9816, 0x98AD, 0x98AE, 0x9902, 0x9900, 0x9907, 0x999D, 0x999C, - 0x99C3, 0x99B9, 0x99BB, 0x99BA, 0x99C2, 0x99BD, 0x99C7, 0x9AB1, - 0x9AE3, 0x9AE7, 0x9B3E, 0x9B3F, 0x9B60, 0x9B61, 0x9B5F, 0x9CF1, - 0x9CF2, 0x9CF5, 0x9EA7, 0x50FF, 0x5103, 0x5130, 0x50F8, 0x5106, - 0x5107, 0x50F6, 0x50FE, 0x510B, 0x510C, 0x50FD, 0x510A, 0x528B, - 0x528C, 0x52F1, 0x52EF, 0x5648, 0x5642, 0x564C, 0x5635, 0x5641, - 0x564A, 0x5649, 0x5646, 0x5658, 0x565A, 0x5640, 0x5633, 0x563D, - 0x562C, 0x563E, 0x5638, 0x562A, 0x563A, 0x571A, 0x58AB, 0x589D, - 0x58B1, 0x58A0, 0x58A3, 0x58AF, 0x58AC, 0x58A5, 0x58A1, 0x58FF, - 0x5AFF, 0x5AF4, 0x5AFD, 0x5AF7, 0x5AF6, 0x5B03, 0x5AF8, 0x5B02, - 0x5AF9, 0x5B01, 0x5B07, 0x5B05, 0x5B0F, 0x5C67, 0x5D99, 0x5D97, - 0x5D9F, 0x5D92, 0x5DA2, 0x5D93, 0x5D95, 0x5DA0, 0x5D9C, 0x5DA1, - 0x5D9A, 0x5D9E, 0x5E69, 0x5E5D, 0x5E60, 0x5E5C, 0x7DF3, 0x5EDB, - 0x5EDE, 0x5EE1, 0x5F49, 0x5FB2, 0x618B, 0x6183, 0x6179, 0x61B1, - 0x61B0, 0x61A2, 0x6189, 0x619B, 0x6193, 0x61AF, 0x61AD, 0x619F, - 0x6192, 0x61AA, 0x61A1, 0x618D, 0x6166, 0x61B3, 0x622D, 0x646E, -plane 43 -at 0x00 - 0x6470, 0x6496, 0x64A0, 0x6485, 0x6497, 0x649C, 0x648F, 0x648B, - 0x648A, 0x648C, 0x64A3, 0x649F, 0x6468, 0x64B1, 0x6498, 0x6576, - 0x657A, 0x6579, 0x657B, 0x65B2, 0x65B3, 0x66B5, 0x66B0, 0x66A9, - 0x66B2, 0x66B7, 0x66AA, 0x66AF, 0x6A00, 0x6A06, 0x6A17, 0x69E5, - 0x69F8, 0x6A15, 0x69F1, 0x69E4, 0x6A20, 0x69FF, 0x69EC, 0x69E2, - 0x6A1B, 0x6A1D, 0x69FE, 0x6A27, 0x69F2, 0x69EE, 0x6A14, 0x69F7, - 0x69E7, 0x6A40, 0x6A08, 0x69E6, 0x69FB, 0x6A0D, 0x69FC, 0x69EB, - 0x6A09, 0x6A04, 0x6A18, 0x6A25, 0x6A0F, 0x69F6, 0x6A26, 0x6A07, - 0x69F4, 0x6A16, 0x6B51, 0x6BA5, 0x6BA3, 0x6BA2, 0x6BA6, 0x6C01, - 0x6C00, 0x6BFF, 0x6C02, 0x6F41, 0x6F26, 0x6F7E, 0x6F87, 0x6FC6, - 0x6F92, 0x6F8D, 0x6F89, 0x6F8C, 0x6F62, 0x6F4F, 0x6F85, 0x6F5A, - 0x6F96, 0x6F76, 0x6F6C, 0x6F82, 0x6F55, 0x6F72, 0x6F52, 0x6F50, - 0x6F57, 0x6F94, 0x6F93, 0x6F5D, 0x6F00, 0x6F61, 0x6F6B, 0x6F7D, - 0x6F67, 0x6F90, 0x6F53, 0x6F8B, 0x6F69, 0x6F7F, 0x6F95, 0x6F63, - 0x6F77, 0x6F6A, 0x6F7B, 0x71B2, 0x71AF, 0x719B, 0x71B0, 0x71A0, - 0x719A, 0x71A9, 0x71B5, 0x719D, 0x71A5, 0x719E, 0x71A4, 0x71A1, - 0x71AA, 0x719C, 0x71A7, 0x71B3, 0x7298, 0x729A, 0x7358, 0x7352, - 0x735E, 0x735F, 0x7360, 0x735D, 0x735B, 0x7361, 0x735A, 0x7359, - 0x7362, 0x7487, 0x7489, 0x748A, 0x7486, 0x7481, 0x747D, 0x7485, - 0x7488, 0x747C, 0x7479, 0x7508, 0x7507, 0x757E, 0x7625, 0x761E, - 0x7619, 0x761D, 0x761C, 0x7623, 0x761A, 0x7628, 0x761B, 0x769C, - 0x769D, 0x769E, 0x769B, 0x778D, 0x778F, 0x7789, 0x7788, 0x78CD, - 0x78BB, 0x78CF, 0x78CC, 0x78D1, 0x78CE, 0x78D4, 0x78C8, 0x78C3, - 0x78C4, 0x78C9, 0x799A, 0x79A1, 0x79A0, 0x799C, 0x79A2, 0x799B, - 0x6B76, 0x7A39, 0x7AB2, 0x7AB4, 0x7AB3, 0x7BB7, 0x7BCB, 0x7BBE, - 0x7BAC, 0x7BCE, 0x7BAF, 0x7BB9, 0x7BCA, 0x7BB5, 0x7CC5, 0x7CC8, - 0x7CCC, 0x7CCB, 0x7DF7, 0x7DDB, 0x7DEA, 0x7DE7, 0x7DD7, 0x7DE1, - 0x7E03, 0x7DFA, 0x7DE6, 0x7DF6, 0x7DF1, 0x7DF0, 0x7DEE, 0x7DDF, - 0x7F76, 0x7FAC, 0x7FB0, 0x7FAD, 0x7FED, 0x7FEB, 0x7FEA, 0x7FEC, - 0x7FE6, 0x7FE8, 0x8064, 0x8067, 0x81A3, 0x819F, 0x819E, 0x8195, - 0x81A2, 0x8199, 0x8197, 0x8216, 0x824F, 0x8253, 0x8252, 0x8250, - 0x824E, 0x8251, 0x8524, 0x853B, 0x850F, 0x8500, 0x8529, 0x850E, -plane 44 -at 0x00 - 0x8509, 0x850D, 0x851F, 0x850A, 0x8527, 0x851C, 0x84FB, 0x852B, - 0x84FA, 0x8508, 0x850C, 0x84F4, 0x852A, 0x84F2, 0x8515, 0x84F7, - 0x84EB, 0x84F3, 0x84FC, 0x8512, 0x84EA, 0x84E9, 0x8516, 0x84FE, - 0x8528, 0x851D, 0x852E, 0x8502, 0x84FD, 0x851E, 0x84F6, 0x8531, - 0x8526, 0x84E7, 0x84E8, 0x84F0, 0x84EF, 0x84F9, 0x8518, 0x8520, - 0x8530, 0x850B, 0x8519, 0x852F, 0x8662, 0x8756, 0x8763, 0x8764, - 0x8777, 0x87E1, 0x8773, 0x8758, 0x8754, 0x875B, 0x8752, 0x8761, - 0x875A, 0x8751, 0x875E, 0x876D, 0x876A, 0x8750, 0x874E, 0x875F, - 0x875D, 0x876F, 0x876C, 0x877A, 0x876E, 0x875C, 0x8765, 0x874F, - 0x877B, 0x8775, 0x8762, 0x8767, 0x8769, 0x885A, 0x8905, 0x890C, - 0x8914, 0x890B, 0x8917, 0x8918, 0x8919, 0x8906, 0x8916, 0x8911, - 0x890E, 0x8909, 0x89A2, 0x89A4, 0x89A3, 0x89ED, 0x89F0, 0x89EC, - 0x8ACF, 0x8AC6, 0x8AB8, 0x8AD3, 0x8AD1, 0x8AD4, 0x8AD5, 0x8ABB, - 0x8AD7, 0x8ABE, 0x8AC0, 0x8AC5, 0x8AD8, 0x8AC3, 0x8ABA, 0x8ABD, - 0x8AD9, 0x8C3E, 0x8C4D, 0x8C8F, 0x8CE5, 0x8CDF, 0x8CD9, 0x8CE8, - 0x8CDA, 0x8CDD, 0x8CE7, 0x8DA0, 0x8D9C, 0x8DA1, 0x8D9B, 0x8E20, - 0x8E23, 0x8E25, 0x8E24, 0x8E2E, 0x8E15, 0x8E1B, 0x8E16, 0x8E11, - 0x8E19, 0x8E26, 0x8E27, 0x8E14, 0x8E12, 0x8E18, 0x8E13, 0x8E1C, - 0x8E17, 0x8E1A, 0x8F2C, 0x8F24, 0x8F18, 0x8F1A, 0x8F20, 0x8F23, - 0x8F16, 0x8F17, 0x9073, 0x9070, 0x906F, 0x9067, 0x906B, 0x912F, - 0x912B, 0x9129, 0x912A, 0x9132, 0x9126, 0x912E, 0x9185, 0x9186, - 0x918A, 0x9181, 0x9182, 0x9184, 0x9180, 0x92D0, 0x92C3, 0x92C4, - 0x92C0, 0x92D9, 0x92B6, 0x92CF, 0x92F1, 0x92DF, 0x92D8, 0x92E9, - 0x92D7, 0x92DD, 0x92CC, 0x92EF, 0x92C2, 0x92E8, 0x92CA, 0x92C8, - 0x92CE, 0x92E6, 0x92CD, 0x92D5, 0x92C9, 0x92E0, 0x92DE, 0x92E7, - 0x92D1, 0x92D3, 0x92B5, 0x92E1, 0x92C6, 0x92B4, 0x957C, 0x95AC, - 0x95AB, 0x95AE, 0x95B0, 0x96A4, 0x96A2, 0x96D3, 0x9705, 0x9708, - 0x9702, 0x975A, 0x978A, 0x978E, 0x9788, 0x97D0, 0x97CF, 0x981E, - 0x981D, 0x9826, 0x9829, 0x9828, 0x9820, 0x981B, 0x9827, 0x98B2, - 0x9908, 0x98FA, 0x9911, 0x9914, 0x9916, 0x9917, 0x9915, 0x99DC, - 0x99CD, 0x99CF, 0x99D3, 0x99D4, 0x99CE, 0x99C9, 0x99D6, 0x99D8, - 0x99CB, 0x99D7, 0x99CC, 0x9AB3, 0x9AEC, 0x9AEB, 0x9AF3, 0x9AF2, -plane 45 -at 0x00 - 0x9AF1, 0x9B46, 0x9B43, 0x9B67, 0x9B74, 0x9B71, 0x9B66, 0x9B76, - 0x9B75, 0x9B70, 0x9B68, 0x9B64, 0x9B6C, 0x9CFC, 0x9CFA, 0x9CFD, - 0x9CFF, 0x9CF7, 0x9D07, 0x9D00, 0x9CF9, 0x9CFB, 0x9D08, 0x9D05, - 0x9D04, 0x9E83, 0x9ED3, 0x9F0F, 0x9F10, 0x511C, 0x5113, 0x5117, - 0x511A, 0x5111, 0x51DE, 0x5334, 0x53E1, 0x5670, 0x5660, 0x566E, - 0x5673, 0x5666, 0x5663, 0x566D, 0x5672, 0x565E, 0x5677, 0x571C, - 0x571B, 0x58C8, 0x58BD, 0x58C9, 0x58BF, 0x58BA, 0x58C2, 0x58BC, - 0x58C6, 0x5B17, 0x5B19, 0x5B1B, 0x5B21, 0x5B14, 0x5B13, 0x5B10, - 0x5B16, 0x5B28, 0x5B1A, 0x5B20, 0x5B1E, 0x5BEF, 0x5DAC, 0x5DB1, - 0x5DA9, 0x5DA7, 0x5DB5, 0x5DB0, 0x5DAE, 0x5DAA, 0x5DA8, 0x5DB2, - 0x5DAD, 0x5DAF, 0x5DB4, 0x5E67, 0x5E68, 0x5E66, 0x5E6F, 0x5EE9, - 0x5EE7, 0x5EE6, 0x5EE8, 0x5EE5, 0x5F4B, 0x5FBC, 0x619D, 0x61A8, - 0x6196, 0x61C5, 0x61B4, 0x61C6, 0x61C1, 0x61CC, 0x61BA, 0x61BF, - 0x61B8, 0x618C, 0x64D7, 0x64D6, 0x64D0, 0x64CF, 0x64C9, 0x64BD, - 0x6489, 0x64C3, 0x64DB, 0x64F3, 0x64D9, 0x6533, 0x657F, 0x657C, - 0x65A2, 0x66C8, 0x66BE, 0x66C0, 0x66CA, 0x66CB, 0x66CF, 0x66BD, - 0x66BB, 0x66BA, 0x66CC, 0x6723, 0x6A34, 0x6A66, 0x6A49, 0x6A67, - 0x6A32, 0x6A68, 0x6A3E, 0x6A5D, 0x6A6D, 0x6A76, 0x6A5B, 0x6A51, - 0x6A28, 0x6A5A, 0x6A3B, 0x6A3F, 0x6A41, 0x6A6A, 0x6A64, 0x6A50, - 0x6A4F, 0x6A54, 0x6A6F, 0x6A69, 0x6A60, 0x6A3C, 0x6A5E, 0x6A56, - 0x6A55, 0x6A4D, 0x6A4E, 0x6A46, 0x6B55, 0x6B54, 0x6B56, 0x6BA7, - 0x6BAA, 0x6BAB, 0x6BC8, 0x6BC7, 0x6C04, 0x6C03, 0x6C06, 0x6FAD, - 0x6FCB, 0x6FA3, 0x6FC7, 0x6FBC, 0x6FCE, 0x6FC8, 0x6F5E, 0x6FC4, - 0x6FBD, 0x6F9E, 0x6FCA, 0x6FA8, 0x7004, 0x6FA5, 0x6FAE, 0x6FBA, - 0x6FAC, 0x6FAA, 0x6FCF, 0x6FBF, 0x6FB8, 0x6FA2, 0x6FC9, 0x6FAB, - 0x6FCD, 0x6FAF, 0x6FB2, 0x6FB0, 0x71C5, 0x71C2, 0x71BF, 0x71B8, - 0x71D6, 0x71C0, 0x71C1, 0x71CB, 0x71D4, 0x71CA, 0x71C7, 0x71CF, - 0x71BD, 0x71D8, 0x71BC, 0x71C6, 0x71DA, 0x71DB, 0x729D, 0x729E, - 0x7369, 0x7366, 0x7367, 0x736C, 0x7365, 0x736B, 0x736A, 0x747F, - 0x749A, 0x74A0, 0x7494, 0x7492, 0x7495, 0x74A1, 0x750B, 0x7580, - 0x762F, 0x762D, 0x7631, 0x763D, 0x7633, 0x763C, 0x7635, 0x7632, - 0x7630, 0x76BB, 0x76E6, 0x779A, 0x779D, 0x77A1, 0x779C, 0x779B, -plane 46 -at 0x00 - 0x77A2, 0x77A3, 0x7795, 0x7799, 0x7797, 0x78DD, 0x78E9, 0x78E5, - 0x78EA, 0x78DE, 0x78E3, 0x78DB, 0x78E1, 0x78E2, 0x78ED, 0x78DF, - 0x78E0, 0x79A4, 0x7A44, 0x7A48, 0x7A47, 0x7AB6, 0x7AB8, 0x7AB5, - 0x7AB1, 0x7AB7, 0x7BDE, 0x7BE3, 0x7BE7, 0x7BDD, 0x7BD5, 0x7BE5, - 0x7BDA, 0x7BE8, 0x7BF9, 0x7BD4, 0x7BEA, 0x7BE2, 0x7BDC, 0x7BEB, - 0x7BD8, 0x7BDF, 0x7CD2, 0x7CD4, 0x7CD7, 0x7CD0, 0x7CD1, 0x7E12, - 0x7E21, 0x7E17, 0x7E0C, 0x7E1F, 0x7E20, 0x7E13, 0x7E0E, 0x7E1C, - 0x7E15, 0x7E1A, 0x7E22, 0x7E0B, 0x7E0F, 0x7E16, 0x7E0D, 0x7E14, - 0x7E25, 0x7E24, 0x7F43, 0x7F7B, 0x7F7C, 0x7F7A, 0x7FB1, 0x7FEF, - 0x802A, 0x8029, 0x806C, 0x81B1, 0x81A6, 0x81AE, 0x81B9, 0x81B5, - 0x81AB, 0x81B0, 0x81AC, 0x81B4, 0x81B2, 0x81B7, 0x81A7, 0x81F2, - 0x8255, 0x8256, 0x8257, 0x8556, 0x8545, 0x856B, 0x854D, 0x8553, - 0x8561, 0x8558, 0x8540, 0x8546, 0x8564, 0x8541, 0x8562, 0x8544, - 0x8551, 0x8547, 0x8563, 0x853E, 0x855B, 0x8571, 0x854E, 0x856E, - 0x8575, 0x8555, 0x8567, 0x8560, 0x858C, 0x8566, 0x855D, 0x8554, - 0x8565, 0x856C, 0x8663, 0x8665, 0x8664, 0x879B, 0x878F, 0x8797, - 0x8793, 0x8792, 0x8788, 0x8781, 0x8796, 0x8798, 0x8779, 0x8787, - 0x87A3, 0x8785, 0x8790, 0x8791, 0x879D, 0x8784, 0x8794, 0x879C, - 0x879A, 0x8789, 0x891E, 0x8926, 0x8930, 0x892D, 0x892E, 0x8927, - 0x8931, 0x8922, 0x8929, 0x8923, 0x892F, 0x892C, 0x891F, 0x89F1, - 0x8AE0, 0x8AE2, 0x8AF2, 0x8AF4, 0x8AF5, 0x8ADD, 0x8B14, 0x8AE4, - 0x8ADF, 0x8AF0, 0x8AC8, 0x8ADE, 0x8AE1, 0x8AE8, 0x8AFF, 0x8AEF, - 0x8AFB, 0x8C91, 0x8C92, 0x8C90, 0x8CF5, 0x8CEE, 0x8CF1, 0x8CF0, - 0x8CF3, 0x8D6C, 0x8D6E, 0x8DA5, 0x8DA7, 0x8E33, 0x8E3E, 0x8E38, - 0x8E40, 0x8E45, 0x8E36, 0x8E3C, 0x8E3D, 0x8E41, 0x8E30, 0x8E3F, - 0x8EBD, 0x8F36, 0x8F2E, 0x8F35, 0x8F32, 0x8F39, 0x8F37, 0x8F34, - 0x9076, 0x9079, 0x907B, 0x9086, 0x90FA, 0x9133, 0x9135, 0x9136, - 0x9193, 0x9190, 0x9191, 0x918D, 0x918F, 0x9327, 0x931E, 0x9308, - 0x931F, 0x9306, 0x930F, 0x937A, 0x9338, 0x933C, 0x931B, 0x9323, - 0x9312, 0x9301, 0x9346, 0x932D, 0x930E, 0x930D, 0x92CB, 0x931D, - 0x92FA, 0x9325, 0x9313, 0x92F9, 0x92F7, 0x9334, 0x9302, 0x9324, - 0x92FF, 0x9329, 0x9339, 0x9335, 0x932A, 0x9314, 0x930C, 0x930B, -plane 47 -at 0x00 - 0x92FE, 0x9309, 0x9300, 0x92FB, 0x9316, 0x95BC, 0x95CD, 0x95BE, - 0x95B9, 0x95BA, 0x95B6, 0x95BF, 0x95B5, 0x95BD, 0x96A9, 0x96D4, - 0x970B, 0x9712, 0x9710, 0x9799, 0x9797, 0x9794, 0x97F0, 0x97F8, - 0x9835, 0x982F, 0x9832, 0x9924, 0x991F, 0x9927, 0x9929, 0x999E, - 0x99EE, 0x99EC, 0x99E5, 0x99E4, 0x99F0, 0x99E3, 0x99EA, 0x99E9, - 0x99E7, 0x9AB9, 0x9ABF, 0x9AB4, 0x9ABB, 0x9AF6, 0x9AFA, 0x9AF9, - 0x9AF7, 0x9B33, 0x9B80, 0x9B85, 0x9B87, 0x9B7C, 0x9B7E, 0x9B7B, - 0x9B82, 0x9B93, 0x9B92, 0x9B90, 0x9B7A, 0x9B95, 0x9B7D, 0x9B88, - 0x9D25, 0x9D17, 0x9D20, 0x9D1E, 0x9D14, 0x9D29, 0x9D1D, 0x9D18, - 0x9D22, 0x9D10, 0x9D19, 0x9D1F, 0x9E88, 0x9E86, 0x9E87, 0x9EAE, - 0x9EAD, 0x9ED5, 0x9ED6, 0x9EFA, 0x9F12, 0x9F3D, 0x5126, 0x5125, - 0x5122, 0x5124, 0x5120, 0x5129, 0x52F4, 0x5693, 0x568C, 0x568D, - 0x5686, 0x5684, 0x5683, 0x567E, 0x5682, 0x567F, 0x5681, 0x58D6, - 0x58D4, 0x58CF, 0x58D2, 0x5B2D, 0x5B25, 0x5B32, 0x5B23, 0x5B2C, - 0x5B27, 0x5B26, 0x5B2F, 0x5B2E, 0x5B7B, 0x5BF1, 0x5BF2, 0x5DB7, - 0x5E6C, 0x5E6A, 0x5FBE, 0x5FBB, 0x61C3, 0x61B5, 0x61BC, 0x61E7, - 0x61E0, 0x61E5, 0x61E4, 0x61E8, 0x61DE, 0x64EF, 0x64E9, 0x64E3, - 0x64EB, 0x64E4, 0x64E8, 0x6581, 0x6580, 0x65B6, 0x65DA, 0x66D2, - 0x6A8D, 0x6A96, 0x6A81, 0x6AA5, 0x6A89, 0x6A9F, 0x6A9B, 0x6AA1, - 0x6A9E, 0x6A87, 0x6A93, 0x6A8E, 0x6A95, 0x6A83, 0x6AA8, 0x6AA4, - 0x6A91, 0x6A7F, 0x6AA6, 0x6A9A, 0x6A85, 0x6A8C, 0x6A92, 0x6B5B, - 0x6BAD, 0x6C09, 0x6FCC, 0x6FA9, 0x6FF4, 0x6FD4, 0x6FE3, 0x6FDC, - 0x6FED, 0x6FE7, 0x6FE6, 0x6FDE, 0x6FF2, 0x6FDD, 0x6FE2, 0x6FE8, - 0x71E1, 0x71F1, 0x71E8, 0x71F2, 0x71E4, 0x71F0, 0x71E2, 0x7373, - 0x736E, 0x736F, 0x7497, 0x74B2, 0x74AB, 0x7490, 0x74AA, 0x74AD, - 0x74B1, 0x74A5, 0x74AF, 0x7510, 0x7511, 0x7512, 0x750F, 0x7584, - 0x7643, 0x7648, 0x7649, 0x7647, 0x76A4, 0x76E9, 0x77B5, 0x77AB, - 0x77B2, 0x77B7, 0x77B6, 0x77B4, 0x77B1, 0x77A8, 0x77F0, 0x78F3, - 0x78FD, 0x7902, 0x78FB, 0x78FC, 0x78F2, 0x7905, 0x78F9, 0x78FE, - 0x7904, 0x79AB, 0x79A8, 0x7A5C, 0x7A5B, 0x7A56, 0x7A58, 0x7A54, - 0x7A5A, 0x7ABE, 0x7AC0, 0x7AC1, 0x7C05, 0x7C0F, 0x7BF2, 0x7C00, - 0x7BFF, 0x7BFB, 0x7C0E, 0x7BF4, 0x7C0B, 0x7BF3, 0x7C02, 0x7C09, -plane 48 -at 0x00 - 0x7C03, 0x7C01, 0x7BF8, 0x7BFD, 0x7C06, 0x7BF0, 0x7BF1, 0x7C10, - 0x7C0A, 0x7CE8, 0x7E2D, 0x7E3C, 0x7E42, 0x7E33, 0x9848, 0x7E38, - 0x7E2A, 0x7E49, 0x7E40, 0x7E47, 0x7E29, 0x7E4C, 0x7E30, 0x7E3B, - 0x7E36, 0x7E44, 0x7E3A, 0x7F45, 0x7F7F, 0x7F7E, 0x7F7D, 0x7FF4, - 0x7FF2, 0x802C, 0x81BB, 0x81C4, 0x81CC, 0x81CA, 0x81C5, 0x81C7, - 0x81BC, 0x81E9, 0x825B, 0x825A, 0x825C, 0x8583, 0x8580, 0x858F, - 0x85A7, 0x8595, 0x85A0, 0x858B, 0x85A3, 0x857B, 0x85A4, 0x859A, - 0x859E, 0x8577, 0x857C, 0x8589, 0x85A1, 0x857A, 0x8578, 0x8557, - 0x858E, 0x8596, 0x8586, 0x858D, 0x8599, 0x859D, 0x8581, 0x85A2, - 0x8582, 0x8588, 0x8585, 0x8579, 0x8576, 0x8598, 0x8590, 0x859F, - 0x8668, 0x87BE, 0x87AA, 0x87AD, 0x87C5, 0x87B0, 0x87AC, 0x87B9, - 0x87B5, 0x87BC, 0x87AE, 0x87C9, 0x87C3, 0x87C2, 0x87CC, 0x87B7, - 0x87AF, 0x87C4, 0x87CA, 0x87B4, 0x87B6, 0x87BF, 0x87B8, 0x87BD, - 0x87DE, 0x87B2, 0x8935, 0x8933, 0x893C, 0x893E, 0x8941, 0x8952, - 0x8937, 0x8942, 0x89AD, 0x89AF, 0x89AE, 0x89F2, 0x89F3, 0x8B1E, - 0x8B18, 0x8B16, 0x8B11, 0x8B05, 0x8B0B, 0x8B22, 0x8B0F, 0x8B12, - 0x8B15, 0x8B07, 0x8B0D, 0x8B08, 0x8B06, 0x8B1C, 0x8B13, 0x8B1A, - 0x8C4F, 0x8C70, 0x8C72, 0x8C71, 0x8C6F, 0x8C95, 0x8C94, 0x8CF9, - 0x8D6F, 0x8E4E, 0x8E4D, 0x8E53, 0x8E50, 0x8E4C, 0x8E47, 0x8F43, - 0x8F40, 0x9085, 0x907E, 0x9138, 0x919A, 0x91A2, 0x919B, 0x9199, - 0x919F, 0x91A1, 0x919D, 0x91A0, 0x93A1, 0x9383, 0x93AF, 0x9364, - 0x9356, 0x9347, 0x937C, 0x9358, 0x935C, 0x9376, 0x9349, 0x9350, - 0x9351, 0x9360, 0x936D, 0x938F, 0x934C, 0x936A, 0x9379, 0x9357, - 0x9355, 0x9352, 0x934F, 0x9371, 0x9377, 0x937B, 0x9361, 0x935E, - 0x9363, 0x9367, 0x9380, 0x934E, 0x9359, 0x95C7, 0x95C0, 0x95C9, - 0x95C3, 0x95C5, 0x95B7, 0x96AE, 0x96B0, 0x96AC, 0x9720, 0x971F, - 0x9718, 0x971D, 0x9719, 0x979A, 0x97A1, 0x979C, 0x979E, 0x979D, - 0x97D5, 0x97D4, 0x97F1, 0x9841, 0x9844, 0x984A, 0x9849, 0x9845, - 0x9843, 0x9925, 0x992B, 0x992C, 0x992A, 0x9933, 0x9932, 0x992F, - 0x992D, 0x9931, 0x9930, 0x9998, 0x99A3, 0x99A1, 0x9A02, 0x99FA, - 0x99F4, 0x99F7, 0x99F9, 0x99F8, 0x99F6, 0x99FB, 0x99FD, 0x99FE, - 0x99FC, 0x9A03, 0x9ABE, 0x9AFE, 0x9AFD, 0x9B01, 0x9AFC, 0x9B48, -plane 49 -at 0x00 - 0x9B9A, 0x9BA8, 0x9B9E, 0x9B9B, 0x9BA6, 0x9BA1, 0x9BA5, 0x9BA4, - 0x9B86, 0x9BA2, 0x9BA0, 0x9BAF, 0x9D33, 0x9D41, 0x9D67, 0x9D36, - 0x9D2E, 0x9D2F, 0x9D31, 0x9D38, 0x9D30, 0x9D45, 0x9D42, 0x9D43, - 0x9D3E, 0x9D37, 0x9D40, 0x9D3D, 0x7FF5, 0x9D2D, 0x9E8A, 0x9E89, - 0x9E8D, 0x9EB0, 0x9EC8, 0x9EDA, 0x9EFB, 0x9EFF, 0x9F24, 0x9F23, - 0x9F22, 0x9F54, 0x9FA0, 0x5131, 0x512D, 0x512E, 0x5698, 0x569C, - 0x5697, 0x569A, 0x569D, 0x5699, 0x5970, 0x5B3C, 0x5C69, 0x5C6A, - 0x5DC0, 0x5E6D, 0x5E6E, 0x61D8, 0x61DF, 0x61ED, 0x61EE, 0x61F1, - 0x61EA, 0x61F0, 0x61EB, 0x61D6, 0x61E9, 0x64FF, 0x6504, 0x64FD, - 0x64F8, 0x6501, 0x6503, 0x64FC, 0x6594, 0x65DB, 0x66DA, 0x66DB, - 0x66D8, 0x6AC5, 0x6AB9, 0x6ABD, 0x6AE1, 0x6AC6, 0x6ABA, 0x6AB6, - 0x6AB7, 0x6AC7, 0x6AB4, 0x6AAD, 0x6B5E, 0x6BC9, 0x6C0B, 0x7007, - 0x700C, 0x700D, 0x7001, 0x7005, 0x7014, 0x700E, 0x6FFF, 0x7000, - 0x6FFB, 0x7026, 0x6FFC, 0x6FF7, 0x700A, 0x7201, 0x71FF, 0x71F9, - 0x7203, 0x71FD, 0x7376, 0x74B8, 0x74C0, 0x74B5, 0x74C1, 0x74BE, - 0x74B6, 0x74BB, 0x74C2, 0x7514, 0x7513, 0x765C, 0x7664, 0x7659, - 0x7650, 0x7653, 0x7657, 0x765A, 0x76A6, 0x76BD, 0x76EC, 0x77C2, - 0x77BA, 0x78FF, 0x790C, 0x7913, 0x7914, 0x7909, 0x7910, 0x7912, - 0x7911, 0x79AD, 0x79AC, 0x7A5F, 0x7C1C, 0x7C29, 0x7C19, 0x7C20, - 0x7C1F, 0x7C2D, 0x7C1D, 0x7C26, 0x7C28, 0x7C22, 0x7C25, 0x7C30, - 0x7E5C, 0x7E50, 0x7E56, 0x7E63, 0x7E58, 0x7E62, 0x7E5F, 0x7E51, - 0x7E60, 0x7E57, 0x7E53, 0x7FB5, 0x7FB3, 0x7FF7, 0x7FF8, 0x8075, - 0x81D1, 0x81D2, 0x81D0, 0x825F, 0x825E, 0x85B4, 0x85C6, 0x85C0, - 0x85C3, 0x85C2, 0x85B3, 0x85B5, 0x85BD, 0x85C7, 0x85C4, 0x85BF, - 0x85CB, 0x85CE, 0x85C8, 0x85C5, 0x85B1, 0x85B6, 0x85D2, 0x8624, - 0x85B8, 0x85B7, 0x85BE, 0x8669, 0x87E7, 0x87E6, 0x87E2, 0x87DB, - 0x87EB, 0x87EA, 0x87E5, 0x87DF, 0x87F3, 0x87E4, 0x87D4, 0x87DC, - 0x87D3, 0x87ED, 0x87D8, 0x87E3, 0x87A4, 0x87D7, 0x87D9, 0x8801, - 0x87F4, 0x87E8, 0x87DD, 0x8953, 0x894B, 0x894F, 0x894C, 0x8946, - 0x8950, 0x8951, 0x8949, 0x8B2A, 0x8B27, 0x8B23, 0x8B33, 0x8B30, - 0x8B35, 0x8B47, 0x8B2F, 0x8B3C, 0x8B3E, 0x8B31, 0x8B25, 0x8B37, - 0x8B26, 0x8B36, 0x8B2E, 0x8B24, 0x8B3B, 0x8B3D, 0x8B3A, 0x8C42, -plane 50 -at 0x00 - 0x8C75, 0x8C99, 0x8C98, 0x8C97, 0x8CFE, 0x8D04, 0x8D02, 0x8D00, - 0x8E5C, 0x8E62, 0x8E60, 0x8E57, 0x8E56, 0x8E5E, 0x8E65, 0x8E67, - 0x8E5B, 0x8E5A, 0x8E61, 0x8E5D, 0x8E69, 0x8E54, 0x8F46, 0x8F47, - 0x8F48, 0x8F4B, 0x9128, 0x913A, 0x913B, 0x913E, 0x91A8, 0x91A5, - 0x91A7, 0x91AF, 0x91AA, 0x93B5, 0x938C, 0x9392, 0x93B7, 0x939B, - 0x939D, 0x9389, 0x93A7, 0x938E, 0x93AA, 0x939E, 0x93A6, 0x9395, - 0x9388, 0x9399, 0x939F, 0x938D, 0x93B1, 0x9391, 0x93B2, 0x93A4, - 0x93A8, 0x93B4, 0x93A3, 0x93A5, 0x95D2, 0x95D3, 0x95D1, 0x96B3, - 0x96D7, 0x96DA, 0x5DC2, 0x96DF, 0x96D8, 0x96DD, 0x9723, 0x9722, - 0x9725, 0x97AC, 0x97AE, 0x97A8, 0x97AB, 0x97A4, 0x97AA, 0x97A2, - 0x97A5, 0x97D7, 0x97D9, 0x97D6, 0x97D8, 0x97FA, 0x9850, 0x9851, - 0x9852, 0x98B8, 0x9941, 0x993C, 0x993A, 0x9A0F, 0x9A0B, 0x9A09, - 0x9A0D, 0x9A04, 0x9A11, 0x9A0A, 0x9A05, 0x9A07, 0x9A06, 0x9AC0, - 0x9ADC, 0x9B08, 0x9B04, 0x9B05, 0x9B29, 0x9B35, 0x9B4A, 0x9B4C, - 0x9B4B, 0x9BC7, 0x9BC6, 0x9BC3, 0x9BBF, 0x9BC1, 0x9BB5, 0x9BB8, - 0x9BD3, 0x9BB6, 0x9BC4, 0x9BB9, 0x9BBD, 0x9D5C, 0x9D53, 0x9D4F, - 0x9D4A, 0x9D5B, 0x9D4B, 0x9D59, 0x9D56, 0x9D4C, 0x9D57, 0x9D52, - 0x9D54, 0x9D5F, 0x9D58, 0x9D5A, 0x9E8E, 0x9E8C, 0x9EDF, 0x9F01, - 0x9F00, 0x9F16, 0x9F25, 0x9F2B, 0x9F2A, 0x9F29, 0x9F28, 0x9F4C, - 0x9F55, 0x5134, 0x5135, 0x5296, 0x52F7, 0x53B4, 0x56AB, 0x56AD, - 0x56A6, 0x56A7, 0x56AA, 0x56AC, 0x58DA, 0x58DD, 0x58DB, 0x5912, - 0x5B3D, 0x5B3E, 0x5B3F, 0x5DC3, 0x5E70, 0x5FBF, 0x61FB, 0x6507, - 0x6510, 0x650D, 0x6509, 0x650C, 0x650E, 0x6584, 0x65DE, 0x65DD, - 0x66DE, 0x6AE7, 0x6AE0, 0x6ACC, 0x6AD1, 0x6AD9, 0x6ACB, 0x6ADF, - 0x6ADC, 0x6AD0, 0x6AEB, 0x6ACF, 0x6ACD, 0x6ADE, 0x6B60, 0x6BB0, - 0x6C0C, 0x7019, 0x7027, 0x7020, 0x7016, 0x702B, 0x7021, 0x7022, - 0x7023, 0x7029, 0x7017, 0x7024, 0x701C, 0x702A, 0x720C, 0x720A, - 0x7207, 0x7202, 0x7205, 0x72A5, 0x72A6, 0x72A4, 0x72A3, 0x72A1, - 0x74CB, 0x74C5, 0x74B7, 0x74C3, 0x7516, 0x7660, 0x77C9, 0x77CA, - 0x77C4, 0x77F1, 0x791D, 0x791B, 0x7921, 0x791C, 0x7917, 0x791E, - 0x79B0, 0x7A67, 0x7A68, 0x7C33, 0x7C3C, 0x7C39, 0x7C2C, 0x7C3B, - 0x7CEC, 0x7CEA, 0x7E76, 0x7E75, 0x7E78, 0x7E70, 0x7E77, 0x7E6F, -plane 51 -at 0x00 - 0x7E7A, 0x7E72, 0x7E74, 0x7E68, 0x7F4B, 0x7F4A, 0x7F83, 0x7F86, - 0x7FB7, 0x7FFD, 0x7FFE, 0x8078, 0x81D7, 0x81D5, 0x8264, 0x8261, - 0x8263, 0x85EB, 0x85F1, 0x85ED, 0x85D9, 0x85E1, 0x85E8, 0x85DA, - 0x85D7, 0x85EC, 0x85F2, 0x85F8, 0x85D8, 0x85DF, 0x85E3, 0x85DC, - 0x85D1, 0x85F0, 0x85E6, 0x85EF, 0x85DE, 0x85E2, 0x8800, 0x87FA, - 0x8803, 0x87F6, 0x87F7, 0x8809, 0x880C, 0x880B, 0x8806, 0x87FC, - 0x8808, 0x87FF, 0x880A, 0x8802, 0x8962, 0x895A, 0x895B, 0x8957, - 0x8961, 0x895C, 0x8958, 0x895D, 0x8959, 0x8988, 0x89B7, 0x89B6, - 0x89F6, 0x8B50, 0x8B48, 0x8B4A, 0x8B40, 0x8B53, 0x8B56, 0x8B54, - 0x8B4B, 0x8B55, 0x8B51, 0x8B42, 0x8B52, 0x8B57, 0x8C43, 0x8C77, - 0x8C76, 0x8C9A, 0x8D06, 0x8D07, 0x8D09, 0x8DAC, 0x8DAA, 0x8DAD, - 0x8DAB, 0x8E6D, 0x8E78, 0x8E73, 0x8E6A, 0x8E6F, 0x8E7B, 0x8EC2, - 0x8F52, 0x8F51, 0x8F4F, 0x8F50, 0x8F53, 0x8FB4, 0x9140, 0x913F, - 0x91B0, 0x91AD, 0x93DE, 0x93C7, 0x93CF, 0x93C2, 0x93DA, 0x93D0, - 0x93F9, 0x93EC, 0x93CC, 0x93D9, 0x93A9, 0x93E6, 0x93CA, 0x93D4, - 0x93EE, 0x93E3, 0x93D5, 0x93C4, 0x93CE, 0x93C0, 0x93D2, 0x93E7, - 0x957D, 0x95DA, 0x95DB, 0x96E1, 0x9729, 0x972B, 0x972C, 0x9728, - 0x9726, 0x97B3, 0x97B7, 0x97B6, 0x97DD, 0x97DE, 0x97DF, 0x985C, - 0x9859, 0x985D, 0x9857, 0x98BF, 0x98BD, 0x98BB, 0x98BE, 0x9948, - 0x9947, 0x9943, 0x99A6, 0x99A7, 0x9A1A, 0x9A15, 0x9A25, 0x9A1D, - 0x9A24, 0x9A1B, 0x9A22, 0x9A20, 0x9A27, 0x9A23, 0x9A1E, 0x9A1C, - 0x9A14, 0x9AC2, 0x9B0B, 0x9B0A, 0x9B0E, 0x9B0C, 0x9B37, 0x9BEA, - 0x9BEB, 0x9BE0, 0x9BDE, 0x9BE4, 0x9BE6, 0x9BE2, 0x9BF0, 0x9BD4, - 0x9BD7, 0x9BEC, 0x9BDC, 0x9BD9, 0x9BE5, 0x9BD5, 0x9BE1, 0x9BDA, - 0x9D77, 0x9D81, 0x9D8A, 0x9D84, 0x9D88, 0x9D71, 0x9D80, 0x9D78, - 0x9D86, 0x9D8B, 0x9D8C, 0x9D7D, 0x9D6B, 0x9D74, 0x9D75, 0x9D70, - 0x9D69, 0x9D85, 0x9D73, 0x9D7B, 0x9D82, 0x9D6F, 0x9D79, 0x9D7F, - 0x9D87, 0x9D68, 0x9E94, 0x9E91, 0x9EC0, 0x9EFC, 0x9F2D, 0x9F40, - 0x9F41, 0x9F4D, 0x9F56, 0x9F57, 0x9F58, 0x5337, 0x56B2, 0x56B5, - 0x56B3, 0x58E3, 0x5B45, 0x5DC6, 0x5DC7, 0x5EEE, 0x5EEF, 0x5FC0, - 0x5FC1, 0x61F9, 0x6517, 0x6516, 0x6515, 0x6513, 0x65DF, 0x66E8, - 0x66E3, 0x66E4, 0x6AF3, 0x6AF0, 0x6AEA, 0x6AE8, 0x6AF9, 0x6AF1, -plane 52 -at 0x00 - 0x6AEE, 0x6AEF, 0x703C, 0x7035, 0x702F, 0x7037, 0x7034, 0x7031, - 0x7042, 0x7038, 0x703F, 0x703A, 0x7039, 0x7040, 0x703B, 0x7033, - 0x7041, 0x7213, 0x7214, 0x72A8, 0x737D, 0x737C, 0x74BA, 0x76AB, - 0x76AA, 0x76BE, 0x76ED, 0x77CC, 0x77CE, 0x77CF, 0x77CD, 0x77F2, - 0x7925, 0x7923, 0x7927, 0x7928, 0x7924, 0x7929, 0x79B2, 0x7A6E, - 0x7A6C, 0x7A6D, 0x7AF7, 0x7C49, 0x7C48, 0x7C4A, 0x7C47, 0x7C45, - 0x7CEE, 0x7E7B, 0x7E7E, 0x7E81, 0x7E80, 0x7FBA, 0x7FFF, 0x8079, - 0x81DB, 0x81D9, 0x820B, 0x8268, 0x8269, 0x8622, 0x85FF, 0x8601, - 0x85FE, 0x861B, 0x8600, 0x85F6, 0x8604, 0x8609, 0x8605, 0x860C, - 0x85FD, 0x8819, 0x8810, 0x8811, 0x8817, 0x8813, 0x8816, 0x8963, - 0x8966, 0x89B9, 0x89F7, 0x8B60, 0x8B6A, 0x8B5D, 0x8B68, 0x8B63, - 0x8B65, 0x8B67, 0x8B6D, 0x8DAE, 0x8E86, 0x8E88, 0x8E84, 0x8F59, - 0x8F56, 0x8F57, 0x8F55, 0x8F58, 0x8F5A, 0x908D, 0x9143, 0x9141, - 0x91B7, 0x91B5, 0x91B2, 0x91B3, 0x940B, 0x9413, 0x93FB, 0x9420, - 0x940F, 0x9414, 0x93FE, 0x9415, 0x9410, 0x9428, 0x9419, 0x940D, - 0x93F5, 0x9400, 0x93F7, 0x9407, 0x940E, 0x9416, 0x9412, 0x93FA, - 0x9409, 0x93F8, 0x940A, 0x93FF, 0x93FC, 0x940C, 0x93F6, 0x9411, - 0x9406, 0x95DE, 0x95E0, 0x95DF, 0x972E, 0x972F, 0x97B9, 0x97BB, - 0x97FD, 0x97FE, 0x9860, 0x9862, 0x9863, 0x985F, 0x98C1, 0x98C2, - 0x9950, 0x994E, 0x9959, 0x994C, 0x994B, 0x9953, 0x9A32, 0x9A34, - 0x9A31, 0x9A2C, 0x9A2A, 0x9A36, 0x9A29, 0x9A2E, 0x9A38, 0x9A2D, - 0x9AC7, 0x9ACA, 0x9AC6, 0x9B10, 0x9B12, 0x9B11, 0x9C0B, 0x9C08, - 0x9BF7, 0x9C05, 0x9C12, 0x9BF8, 0x9C40, 0x9C07, 0x9C0E, 0x9C06, - 0x9C17, 0x9C14, 0x9C09, 0x9D9F, 0x9D99, 0x9DA4, 0x9D9D, 0x9D92, - 0x9D98, 0x9D90, 0x9D9B, 0x9DA0, 0x9D94, 0x9D9C, 0x9DAA, 0x9D97, - 0x9DA1, 0x9D9A, 0x9DA2, 0x9DA8, 0x9D9E, 0x9DA3, 0x9DBF, 0x9DA9, - 0x9D96, 0x9DA6, 0x9DA7, 0x9E99, 0x9E9B, 0x9E9A, 0x9EE5, 0x9EE4, - 0x9EE7, 0x9EE6, 0x9F30, 0x9F2E, 0x9F5B, 0x9F60, 0x9F5E, 0x9F5D, - 0x9F59, 0x9F91, 0x513A, 0x5139, 0x5298, 0x5297, 0x56C3, 0x56BD, - 0x56BE, 0x5B48, 0x5B47, 0x5DCB, 0x5DCF, 0x5EF1, 0x61FD, 0x651B, - 0x6B02, 0x6AFC, 0x6B03, 0x6AF8, 0x6B00, 0x7043, 0x7044, 0x704A, - 0x7048, 0x7049, 0x7045, 0x7046, 0x721D, 0x721A, 0x7219, 0x737E, -plane 53 -at 0x00 - 0x7517, 0x766A, 0x77D0, 0x792D, 0x7931, 0x792F, 0x7C54, 0x7C53, - 0x7CF2, 0x7E8A, 0x7E87, 0x7E88, 0x7E8B, 0x7E86, 0x7E8D, 0x7F4D, - 0x7FBB, 0x8030, 0x81DD, 0x8618, 0x862A, 0x8626, 0x861F, 0x8623, - 0x861C, 0x8619, 0x8627, 0x862E, 0x8621, 0x8620, 0x8629, 0x861E, - 0x8625, 0x8829, 0x881D, 0x881B, 0x8820, 0x8824, 0x881C, 0x882B, - 0x884A, 0x896D, 0x8969, 0x896E, 0x896B, 0x89FA, 0x8B79, 0x8B78, - 0x8B45, 0x8B7A, 0x8B7B, 0x8D10, 0x8D14, 0x8DAF, 0x8E8E, 0x8E8C, - 0x8F5E, 0x8F5B, 0x8F5D, 0x9146, 0x9144, 0x9145, 0x91B9, 0x943F, - 0x943B, 0x9436, 0x9429, 0x943D, 0x943C, 0x9430, 0x9439, 0x942A, - 0x9437, 0x942C, 0x9440, 0x9431, 0x95E5, 0x95E4, 0x95E3, 0x9735, - 0x973A, 0x97BF, 0x97E1, 0x9864, 0x98C9, 0x98C6, 0x98C0, 0x9958, - 0x9956, 0x9A39, 0x9A3D, 0x9A46, 0x9A44, 0x9A42, 0x9A41, 0x9A3A, - 0x9A3F, 0x9ACD, 0x9B15, 0x9B17, 0x9B18, 0x9B16, 0x9B3A, 0x9B52, - 0x9C2B, 0x9C1D, 0x9C1C, 0x9C2C, 0x9C23, 0x9C28, 0x9C29, 0x9C24, - 0x9C21, 0x9DB7, 0x9DB6, 0x9DBC, 0x9DC1, 0x9DC7, 0x9DCA, 0x9DCF, - 0x9DBE, 0x9DC5, 0x9DC3, 0x9DBB, 0x9DB5, 0x9DCE, 0x9DB9, 0x9DBA, - 0x9DAC, 0x9DC8, 0x9DB1, 0x9DAD, 0x9DCC, 0x9DB3, 0x9DCD, 0x9DB2, - 0x9E7A, 0x9E9C, 0x9EEB, 0x9EEE, 0x9EED, 0x9F1B, 0x9F18, 0x9F1A, - 0x9F31, 0x9F4E, 0x9F65, 0x9F64, 0x9F92, 0x4EB9, 0x56C6, 0x56C5, - 0x56CB, 0x5971, 0x5B4B, 0x5B4C, 0x5DD5, 0x5DD1, 0x5EF2, 0x6521, - 0x6520, 0x6526, 0x6522, 0x6B0B, 0x6B08, 0x6B09, 0x6C0D, 0x7055, - 0x7056, 0x7057, 0x7052, 0x721E, 0x721F, 0x72A9, 0x737F, 0x74D8, - 0x74D5, 0x74D9, 0x74D7, 0x766D, 0x76AD, 0x7935, 0x79B4, 0x7A70, - 0x7A71, 0x7C57, 0x7C5C, 0x7C59, 0x7C5B, 0x7C5A, 0x7CF4, 0x7CF1, - 0x7E91, 0x7F4F, 0x7F87, 0x81DE, 0x826B, 0x8634, 0x8635, 0x8633, - 0x862C, 0x8632, 0x8636, 0x882C, 0x8828, 0x8826, 0x882A, 0x8825, - 0x8971, 0x89BF, 0x89BE, 0x89FB, 0x8B7E, 0x8B84, 0x8B82, 0x8B86, - 0x8B85, 0x8B7F, 0x8D15, 0x8E95, 0x8E94, 0x8E9A, 0x8E92, 0x8E90, - 0x8E96, 0x8E97, 0x8F60, 0x8F62, 0x9147, 0x944C, 0x9450, 0x944A, - 0x944B, 0x944F, 0x9447, 0x9445, 0x9448, 0x9449, 0x9446, 0x973F, - 0x97E3, 0x986A, 0x9869, 0x98CB, 0x9954, 0x995B, 0x9A4E, 0x9A53, - 0x9A54, 0x9A4C, 0x9A4F, 0x9A48, 0x9A4A, 0x9A49, 0x9A52, 0x9A50, -plane 54 -at 0x00 - 0x9AD0, 0x9B19, 0x9B2B, 0x9B3B, 0x9B56, 0x9B55, 0x9C46, 0x9C48, - 0x9C3F, 0x9C44, 0x9C39, 0x9C33, 0x9C41, 0x9C3C, 0x9C37, 0x9C34, - 0x9C32, 0x9C3D, 0x9C36, 0x9DDB, 0x9DD2, 0x9DDE, 0x9DDA, 0x9DCB, - 0x9DD0, 0x9DDC, 0x9DD1, 0x9DDF, 0x9DE9, 0x9DD9, 0x9DD8, 0x9DD6, - 0x9DF5, 0x9DD5, 0x9DDD, 0x9EB6, 0x9EF0, 0x9F35, 0x9F33, 0x9F32, - 0x9F42, 0x9F6B, 0x9F95, 0x9FA2, 0x513D, 0x5299, 0x58E8, 0x58E7, - 0x5972, 0x5B4D, 0x5DD8, 0x882F, 0x5F4F, 0x6201, 0x6203, 0x6204, - 0x6529, 0x6525, 0x6596, 0x66EB, 0x6B11, 0x6B12, 0x6B0F, 0x6BCA, - 0x705B, 0x705A, 0x7222, 0x7382, 0x7381, 0x7383, 0x7670, 0x77D4, - 0x7C67, 0x7C66, 0x7E95, 0x826C, 0x863A, 0x8640, 0x8639, 0x863C, - 0x8631, 0x863B, 0x863E, 0x8830, 0x8832, 0x882E, 0x8833, 0x8976, - 0x8974, 0x8973, 0x89FE, 0x8B8C, 0x8B8E, 0x8B8B, 0x8B88, 0x8C45, - 0x8D19, 0x8E98, 0x8F64, 0x8F63, 0x91BC, 0x9462, 0x9455, 0x945D, - 0x9457, 0x945E, 0x97C4, 0x97C5, 0x9800, 0x9A56, 0x9A59, 0x9B1E, - 0x9B1F, 0x9B20, 0x9C52, 0x9C58, 0x9C50, 0x9C4A, 0x9C4D, 0x9C4B, - 0x9C55, 0x9C59, 0x9C4C, 0x9C4E, 0x9DFB, 0x9DF7, 0x9DEF, 0x9DE3, - 0x9DEB, 0x9DF8, 0x9DE4, 0x9DF6, 0x9DE1, 0x9DEE, 0x9DE6, 0x9DF2, - 0x9DF0, 0x9DE2, 0x9DEC, 0x9DF4, 0x9DF3, 0x9DE8, 0x9DED, 0x9EC2, - 0x9ED0, 0x9EF2, 0x9EF3, 0x9F06, 0x9F1C, 0x9F38, 0x9F37, 0x9F36, - 0x9F43, 0x9F4F, 0x9F71, 0x9F70, 0x9F6E, 0x9F6F, 0x56D3, 0x56CD, - 0x5B4E, 0x5C6D, 0x652D, 0x66ED, 0x66EE, 0x6B13, 0x705F, 0x7061, - 0x705D, 0x7060, 0x7223, 0x74DB, 0x74E5, 0x77D5, 0x7938, 0x79B7, - 0x79B6, 0x7C6A, 0x7E97, 0x7F89, 0x826D, 0x8643, 0x8838, 0x8837, - 0x8835, 0x884B, 0x8B94, 0x8B95, 0x8E9E, 0x8E9F, 0x8EA0, 0x8E9D, - 0x91BE, 0x91BD, 0x91C2, 0x946B, 0x9468, 0x9469, 0x96E5, 0x9746, - 0x9743, 0x9747, 0x97C7, 0x97E5, 0x9A5E, 0x9AD5, 0x9B59, 0x9C63, - 0x9C67, 0x9C66, 0x9C62, 0x9C5E, 0x9C60, 0x9E02, 0x9DFE, 0x9E07, - 0x9E03, 0x9E06, 0x9E05, 0x9E00, 0x9E01, 0x9E09, 0x9DFF, 0x9DFD, - 0x9E04, 0x9EA0, 0x9F1E, 0x9F46, 0x9F74, 0x9F75, 0x9F76, 0x56D4, - 0x652E, 0x65B8, 0x6B18, 0x6B19, 0x6B17, 0x6B1A, 0x7062, 0x7226, - 0x72AA, 0x77D8, 0x77D9, 0x7939, 0x7C69, 0x7C6B, 0x7CF6, 0x7E9A, - 0x7E98, 0x7E9B, 0x7E99, 0x81E0, 0x81E1, 0x8646, 0x8647, 0x8648, -plane 55 -at 0x00 - 0x8979, 0x897A, 0x897C, 0x897B, 0x89FF, 0x8B98, 0x8B99, 0x8EA5, - 0x8EA4, 0x8EA3, 0x946E, 0x946D, 0x946F, 0x9471, 0x9473, 0x9749, - 0x9872, 0x995F, 0x9C68, 0x9C6E, 0x9C6D, 0x9E0B, 0x9E0D, 0x9E10, - 0x9E0F, 0x9E12, 0x9E11, 0x9EA1, 0x9EF5, 0x9F09, 0x9F47, 0x9F78, - 0x9F7B, 0x9F7A, 0x9F79, 0x571E, 0x7066, 0x7C6F, 0x883C, 0x8DB2, - 0x8EA6, 0x91C3, 0x9474, 0x9478, 0x9476, 0x9475, 0x9A60, 0x9C74, - 0x9C73, 0x9C71, 0x9C75, 0x9E14, 0x9E13, 0x9EF6, 0x9F0A, 0x9FA4, - 0x7068, 0x7065, 0x7CF7, 0x866A, 0x883E, 0x883D, 0x883F, 0x8B9E, - 0x8C9C, 0x8EA9, 0x8EC9, 0x974B, 0x9873, 0x9874, 0x98CC, 0x9961, - 0x99AB, 0x9A64, 0x9A66, 0x9A67, 0x9B24, 0x9E15, 0x9E17, 0x9F48, - 0x6207, 0x6B1E, 0x7227, 0x864C, 0x8EA8, 0x9482, 0x9480, 0x9481, - 0x9A69, 0x9A68, 0x9B2E, 0x9E19, 0x7229, 0x864B, 0x8B9F, 0x9483, - 0x9C79, 0x9EB7, 0x7675, 0x9A6B, 0x9C7A, 0x9E1D, 0x7069, 0x706A, - 0x9EA4, 0x9F7E, 0x9F49, 0x9F98, 0x7881, 0x92B9, 0x88CF, 0x58BB, - 0x6052, 0x7CA7, 0x5AFA, 0x2554, 0x2566, 0x2557, 0x2560, 0x256C, - 0x2563, 0x255A, 0x2569, 0x255D, 0x2552, 0x2564, 0x2555, 0x255E, - 0x256A, 0x2561, 0x2558, 0x2567, 0x255B, 0x2553, 0x2565, 0x2556, - 0x255F, 0x256B, 0x2562, 0x2559, 0x2568, 0x255C, 0x2551, 0x2550, - 0x256D, 0x256E, 0x2570, 0x256F, 0x2593, 0, 0, 0, diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/maps/cugb.map b/application/third_party/dompdf/lib/ttf2ufm/src/maps/cugb.map deleted file mode 100644 index 46adc115..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/maps/cugb.map +++ /dev/null @@ -1,1181 +0,0 @@ -# -# For Unicode GB 2312-80 Chinese font to create compact -# CJK fonts Type1 fonts. -# -plane 01 -at 0x00 - 0x3000, 0x3001, 0x3002, 0x00B7, 0x02C9, 0x02C7, 0x00A8, 0x3003, - 0x3005, 0x2014, 0xFF5E, 0x2016, 0x2026, 0x2018, 0x2019, 0x201C, - 0x201D, 0x3014, 0x3015, 0x3008, 0x3009, 0x300A, 0x300B, 0x300C, - 0x300D, 0x300E, 0x300F, 0x3016, 0x3017, 0x3010, 0x3011, 0x00B1, - 0x00D7, 0x00F7, 0x2236, 0x2227, 0x2228, 0x2211, 0x220F, 0x222A, - 0x2229, 0x2208, 0x2237, 0x221A, 0x22A5, 0x2225, 0x2220, 0x2312, - 0x2299, 0x222B, 0x222E, 0x2261, 0x224C, 0x2248, 0x223D, 0x221D, - 0x2260, 0x226E, 0x226F, 0x2264, 0x2265, 0x221E, 0x2235, 0x2234, - 0x2642, 0x2640, 0x00B0, 0x2032, 0x2033, 0x2103, 0xFF04, 0x00A4, - 0xFFE0, 0xFFE1, 0x2030, 0x00A7, 0x2116, 0x2606, 0x2605, 0x25CB, - 0x25CF, 0x25CE, 0x25C7, 0x25C6, 0x25A1, 0x25A0, 0x25B3, 0x25B2, - 0x203B, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0x2488, 0x2489, - 0x248A, 0x248B, 0x248C, 0x248D, 0x248E, 0x248F, 0x2490, 0x2491, - 0x2492, 0x2493, 0x2494, 0x2495, 0x2496, 0x2497, 0x2498, 0x2499, - 0x249A, 0x249B, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, - 0x247A, 0x247B, 0x247C, 0x247D, 0x247E, 0x247F, 0x2480, 0x2481, - 0x2482, 0x2483, 0x2484, 0x2485, 0x2486, 0x2487, 0x2460, 0x2461, - 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, - 0, 0, 0x3220, 0x3221, 0x3222, 0x3223, 0x3224, 0x3225, - 0x3226, 0x3227, 0x3228, 0x3229, 0, 0, 0x2160, 0x2161, - 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, - 0x216A, 0x216B, 0, 0, 0xFF01, 0xFF02, 0xFF03, 0xFFE5, - 0xFF05, 0xFF06, 0xFF07, 0xFF08, 0xFF09, 0xFF0A, 0xFF0B, 0xFF0C, - 0xFF0D, 0xFF0E, 0xFF0F, 0xFF10, 0xFF11, 0xFF12, 0xFF13, 0xFF14, - 0xFF15, 0xFF16, 0xFF17, 0xFF18, 0xFF19, 0xFF1A, 0xFF1B, 0xFF1C, - 0xFF1D, 0xFF1E, 0xFF1F, 0xFF20, 0xFF21, 0xFF22, 0xFF23, 0xFF24, - 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, - 0xFF2D, 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, - 0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0xFF3B, 0xFF3C, - 0xFF3D, 0xFF3E, 0xFF3F, 0xFF40, 0xFF41, 0xFF42, 0xFF43, 0xFF44, -plane 02 -at 0x00 - 0xFF45, 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, - 0xFF4D, 0xFF4E, 0xFF4F, 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, - 0xFF55, 0xFF56, 0xFF57, 0xFF58, 0xFF59, 0xFF5A, 0xFF5B, 0xFF5C, - 0xFF5D, 0xFFE3, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, - 0x3047, 0x3048, 0x3049, 0x304A, 0x304B, 0x304C, 0x304D, 0x304E, - 0x304F, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, - 0x3057, 0x3058, 0x3059, 0x305A, 0x305B, 0x305C, 0x305D, 0x305E, - 0x305F, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, - 0x3067, 0x3068, 0x3069, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, - 0x306F, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, - 0x3077, 0x3078, 0x3079, 0x307A, 0x307B, 0x307C, 0x307D, 0x307E, - 0x307F, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, - 0x3087, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308E, - 0x308F, 0x3090, 0x3091, 0x3092, 0x3093, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0x30A1, 0x30A2, 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, 0x30A8, - 0x30A9, 0x30AA, 0x30AB, 0x30AC, 0x30AD, 0x30AE, 0x30AF, 0x30B0, - 0x30B1, 0x30B2, 0x30B3, 0x30B4, 0x30B5, 0x30B6, 0x30B7, 0x30B8, - 0x30B9, 0x30BA, 0x30BB, 0x30BC, 0x30BD, 0x30BE, 0x30BF, 0x30C0, - 0x30C1, 0x30C2, 0x30C3, 0x30C4, 0x30C5, 0x30C6, 0x30C7, 0x30C8, - 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D0, - 0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7, 0x30D8, - 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF, 0x30E0, - 0x30E1, 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7, 0x30E8, - 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF, 0x30F0, - 0x30F1, 0x30F2, 0x30F3, 0x30F4, 0x30F5, 0x30F6, 0, 0, - 0, 0, 0, 0, 0, 0, 0x0391, 0x0392, - 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039A, - 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, 0x03A0, 0x03A1, 0x03A3, - 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, 0, 0, - 0, 0, 0, 0, 0, 0, 0x03B1, 0x03B2, - 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA, -plane 03 -at 0x00 - 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3, - 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0x0410, 0x0411, 0x0412, 0x0413, - 0x0414, 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, - 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, 0x0420, 0x0421, 0x0422, - 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, - 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0x0430, 0x0431, 0x0432, 0x0433, - 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, - 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, 0x0440, 0x0441, 0x0442, - 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, - 0x044B, 0x044C, 0x044D, 0x044E, 0x044F, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0x0101, 0x00E1, 0x01CE, 0x00E0, 0x0113, 0x00E9, - 0x011B, 0x00E8, 0x012B, 0x00ED, 0x01D0, 0x00EC, 0x014D, 0x00F3, - 0x01D2, 0x00F2, 0x016B, 0x00FA, 0x01D4, 0x00F9, 0x01D6, 0x01D8, - 0x01DA, 0x01DC, 0x00FC, 0x00EA, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0x3105, 0x3106, - 0x3107, 0x3108, 0x3109, 0x310A, 0x310B, 0x310C, 0x310D, 0x310E, - 0x310F, 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, - 0x3117, 0x3118, 0x3119, 0x311A, 0x311B, 0x311C, 0x311D, 0x311E, - 0x311F, 0x3120, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, - 0x3127, 0x3128, 0x3129, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0x2500, 0x2501, 0x2502, 0x2503, 0x2504, - 0x2505, 0x2506, 0x2507, 0x2508, 0x2509, 0x250A, 0x250B, 0x250C, -plane 04 -at 0x00 - 0x250D, 0x250E, 0x250F, 0x2510, 0x2511, 0x2512, 0x2513, 0x2514, - 0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x251A, 0x251B, 0x251C, - 0x251D, 0x251E, 0x251F, 0x2520, 0x2521, 0x2522, 0x2523, 0x2524, - 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252A, 0x252B, 0x252C, - 0x252D, 0x252E, 0x252F, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, - 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253A, 0x253B, 0x253C, - 0x253D, 0x253E, 0x253F, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, - 0x2545, 0x2546, 0x2547, 0x2548, 0x2549, 0x254A, 0x254B, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane 05 -at 0x00 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane 06 -at 0x00 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0x554A, 0x963F, 0x57C3, 0x6328, 0x54CE, 0x5509, - 0x54C0, 0x7691, 0x764C, 0x853C, 0x77EE, 0x827E, 0x788D, 0x7231, - 0x9698, 0x978D, 0x6C28, 0x5B89, 0x4FFA, 0x6309, 0x6697, 0x5CB8, - 0x80FA, 0x6848, 0x80AE, 0x6602, 0x76CE, 0x51F9, 0x6556, 0x71AC, - 0x7FF1, 0x8884, 0x50B2, 0x5965, 0x61CA, 0x6FB3, 0x82AD, 0x634C, - 0x6252, 0x53ED, 0x5427, 0x7B06, 0x516B, 0x75A4, 0x5DF4, 0x62D4, - 0x8DCB, 0x9776, 0x628A, 0x8019, 0x575D, 0x9738, 0x7F62, 0x7238, - 0x767D, 0x67CF, 0x767E, 0x6446, 0x4F70, 0x8D25, 0x62DC, 0x7A17, - 0x6591, 0x73ED, 0x642C, 0x6273, 0x822C, 0x9881, 0x677F, 0x7248, - 0x626E, 0x62CC, 0x4F34, 0x74E3, 0x534A, 0x529E, 0x7ECA, 0x90A6, - 0x5E2E, 0x6886, 0x699C, 0x8180, 0x7ED1, 0x68D2, 0x78C5, 0x868C, - 0x9551, 0x508D, 0x8C24, 0x82DE, 0x80DE, 0x5305, 0x8912, 0x5265, - 0x8584, 0x96F9, 0x4FDD, 0x5821, 0x9971, 0x5B9D, 0x62B1, 0x62A5, - 0x66B4, 0x8C79, 0x9C8D, 0x7206, 0x676F, 0x7891, 0x60B2, 0x5351, - 0x5317, 0x8F88, 0x80CC, 0x8D1D, 0x94A1, 0x500D, 0x72C8, 0x5907, - 0x60EB, 0x7119, 0x88AB, 0x5954, 0x82EF, 0x672C, 0x7B28, 0x5D29, -plane 07 -at 0x00 - 0x7EF7, 0x752D, 0x6CF5, 0x8E66, 0x8FF8, 0x903C, 0x9F3B, 0x6BD4, - 0x9119, 0x7B14, 0x5F7C, 0x78A7, 0x84D6, 0x853D, 0x6BD5, 0x6BD9, - 0x6BD6, 0x5E01, 0x5E87, 0x75F9, 0x95ED, 0x655D, 0x5F0A, 0x5FC5, - 0x8F9F, 0x58C1, 0x81C2, 0x907F, 0x965B, 0x97AD, 0x8FB9, 0x7F16, - 0x8D2C, 0x6241, 0x4FBF, 0x53D8, 0x535E, 0x8FA8, 0x8FA9, 0x8FAB, - 0x904D, 0x6807, 0x5F6A, 0x8198, 0x8868, 0x9CD6, 0x618B, 0x522B, - 0x762A, 0x5F6C, 0x658C, 0x6FD2, 0x6EE8, 0x5BBE, 0x6448, 0x5175, - 0x51B0, 0x67C4, 0x4E19, 0x79C9, 0x997C, 0x70B3, 0x75C5, 0x5E76, - 0x73BB, 0x83E0, 0x64AD, 0x62E8, 0x94B5, 0x6CE2, 0x535A, 0x52C3, - 0x640F, 0x94C2, 0x7B94, 0x4F2F, 0x5E1B, 0x8236, 0x8116, 0x818A, - 0x6E24, 0x6CCA, 0x9A73, 0x6355, 0x535C, 0x54FA, 0x8865, 0x57E0, - 0x4E0D, 0x5E03, 0x6B65, 0x7C3F, 0x90E8, 0x6016, 0x64E6, 0x731C, - 0x88C1, 0x6750, 0x624D, 0x8D22, 0x776C, 0x8E29, 0x91C7, 0x5F69, - 0x83DC, 0x8521, 0x9910, 0x53C2, 0x8695, 0x6B8B, 0x60ED, 0x60E8, - 0x707F, 0x82CD, 0x8231, 0x4ED3, 0x6CA7, 0x85CF, 0x64CD, 0x7CD9, - 0x69FD, 0x66F9, 0x8349, 0x5395, 0x7B56, 0x4FA7, 0x518C, 0x6D4B, - 0x5C42, 0x8E6D, 0x63D2, 0x53C9, 0x832C, 0x8336, 0x67E5, 0x78B4, - 0x643D, 0x5BDF, 0x5C94, 0x5DEE, 0x8BE7, 0x62C6, 0x67F4, 0x8C7A, - 0x6400, 0x63BA, 0x8749, 0x998B, 0x8C17, 0x7F20, 0x94F2, 0x4EA7, - 0x9610, 0x98A4, 0x660C, 0x7316, 0x573A, 0x5C1D, 0x5E38, 0x957F, - 0x507F, 0x80A0, 0x5382, 0x655E, 0x7545, 0x5531, 0x5021, 0x8D85, - 0x6284, 0x949E, 0x671D, 0x5632, 0x6F6E, 0x5DE2, 0x5435, 0x7092, - 0x8F66, 0x626F, 0x64A4, 0x63A3, 0x5F7B, 0x6F88, 0x90F4, 0x81E3, - 0x8FB0, 0x5C18, 0x6668, 0x5FF1, 0x6C89, 0x9648, 0x8D81, 0x886C, - 0x6491, 0x79F0, 0x57CE, 0x6A59, 0x6210, 0x5448, 0x4E58, 0x7A0B, - 0x60E9, 0x6F84, 0x8BDA, 0x627F, 0x901E, 0x9A8B, 0x79E4, 0x5403, - 0x75F4, 0x6301, 0x5319, 0x6C60, 0x8FDF, 0x5F1B, 0x9A70, 0x803B, - 0x9F7F, 0x4F88, 0x5C3A, 0x8D64, 0x7FC5, 0x65A5, 0x70BD, 0x5145, - 0x51B2, 0x866B, 0x5D07, 0x5BA0, 0x62BD, 0x916C, 0x7574, 0x8E0C, - 0x7A20, 0x6101, 0x7B79, 0x4EC7, 0x7EF8, 0x7785, 0x4E11, 0x81ED, - 0x521D, 0x51FA, 0x6A71, 0x53A8, 0x8E87, 0x9504, 0x96CF, 0x6EC1, - 0x9664, 0x695A, 0x7840, 0x50A8, 0x77D7, 0x6410, 0x89E6, 0x5904, -plane 08 -at 0x00 - 0x63E3, 0x5DDD, 0x7A7F, 0x693D, 0x4F20, 0x8239, 0x5598, 0x4E32, - 0x75AE, 0x7A97, 0x5E62, 0x5E8A, 0x95EF, 0x521B, 0x5439, 0x708A, - 0x6376, 0x9524, 0x5782, 0x6625, 0x693F, 0x9187, 0x5507, 0x6DF3, - 0x7EAF, 0x8822, 0x6233, 0x7EF0, 0x75B5, 0x8328, 0x78C1, 0x96CC, - 0x8F9E, 0x6148, 0x74F7, 0x8BCD, 0x6B64, 0x523A, 0x8D50, 0x6B21, - 0x806A, 0x8471, 0x56F1, 0x5306, 0x4ECE, 0x4E1B, 0x51D1, 0x7C97, - 0x918B, 0x7C07, 0x4FC3, 0x8E7F, 0x7BE1, 0x7A9C, 0x6467, 0x5D14, - 0x50AC, 0x8106, 0x7601, 0x7CB9, 0x6DEC, 0x7FE0, 0x6751, 0x5B58, - 0x5BF8, 0x78CB, 0x64AE, 0x6413, 0x63AA, 0x632B, 0x9519, 0x642D, - 0x8FBE, 0x7B54, 0x7629, 0x6253, 0x5927, 0x5446, 0x6B79, 0x50A3, - 0x6234, 0x5E26, 0x6B86, 0x4EE3, 0x8D37, 0x888B, 0x5F85, 0x902E, - 0x6020, 0x803D, 0x62C5, 0x4E39, 0x5355, 0x90F8, 0x63B8, 0x80C6, - 0x65E6, 0x6C2E, 0x4F46, 0x60EE, 0x6DE1, 0x8BDE, 0x5F39, 0x86CB, - 0x5F53, 0x6321, 0x515A, 0x8361, 0x6863, 0x5200, 0x6363, 0x8E48, - 0x5012, 0x5C9B, 0x7977, 0x5BFC, 0x5230, 0x7A3B, 0x60BC, 0x9053, - 0x76D7, 0x5FB7, 0x5F97, 0x7684, 0x8E6C, 0x706F, 0x767B, 0x7B49, - 0x77AA, 0x51F3, 0x9093, 0x5824, 0x4F4E, 0x6EF4, 0x8FEA, 0x654C, - 0x7B1B, 0x72C4, 0x6DA4, 0x7FDF, 0x5AE1, 0x62B5, 0x5E95, 0x5730, - 0x8482, 0x7B2C, 0x5E1D, 0x5F1F, 0x9012, 0x7F14, 0x98A0, 0x6382, - 0x6EC7, 0x7898, 0x70B9, 0x5178, 0x975B, 0x57AB, 0x7535, 0x4F43, - 0x7538, 0x5E97, 0x60E6, 0x5960, 0x6DC0, 0x6BBF, 0x7889, 0x53FC, - 0x96D5, 0x51CB, 0x5201, 0x6389, 0x540A, 0x9493, 0x8C03, 0x8DCC, - 0x7239, 0x789F, 0x8776, 0x8FED, 0x8C0D, 0x53E0, 0x4E01, 0x76EF, - 0x53EE, 0x9489, 0x9876, 0x9F0E, 0x952D, 0x5B9A, 0x8BA2, 0x4E22, - 0x4E1C, 0x51AC, 0x8463, 0x61C2, 0x52A8, 0x680B, 0x4F97, 0x606B, - 0x51BB, 0x6D1E, 0x515C, 0x6296, 0x6597, 0x9661, 0x8C46, 0x9017, - 0x75D8, 0x90FD, 0x7763, 0x6BD2, 0x728A, 0x72EC, 0x8BFB, 0x5835, - 0x7779, 0x8D4C, 0x675C, 0x9540, 0x809A, 0x5EA6, 0x6E21, 0x5992, - 0x7AEF, 0x77ED, 0x953B, 0x6BB5, 0x65AD, 0x7F0E, 0x5806, 0x5151, - 0x961F, 0x5BF9, 0x58A9, 0x5428, 0x8E72, 0x6566, 0x987F, 0x56E4, - 0x949D, 0x76FE, 0x9041, 0x6387, 0x54C6, 0x591A, 0x593A, 0x579B, - 0x8EB2, 0x6735, 0x8DFA, 0x8235, 0x5241, 0x60F0, 0x5815, 0x86FE, -plane 09 -at 0x00 - 0x5CE8, 0x9E45, 0x4FC4, 0x989D, 0x8BB9, 0x5A25, 0x6076, 0x5384, - 0x627C, 0x904F, 0x9102, 0x997F, 0x6069, 0x800C, 0x513F, 0x8033, - 0x5C14, 0x9975, 0x6D31, 0x4E8C, 0x8D30, 0x53D1, 0x7F5A, 0x7B4F, - 0x4F10, 0x4E4F, 0x9600, 0x6CD5, 0x73D0, 0x85E9, 0x5E06, 0x756A, - 0x7FFB, 0x6A0A, 0x77FE, 0x9492, 0x7E41, 0x51E1, 0x70E6, 0x53CD, - 0x8FD4, 0x8303, 0x8D29, 0x72AF, 0x996D, 0x6CDB, 0x574A, 0x82B3, - 0x65B9, 0x80AA, 0x623F, 0x9632, 0x59A8, 0x4EFF, 0x8BBF, 0x7EBA, - 0x653E, 0x83F2, 0x975E, 0x5561, 0x98DE, 0x80A5, 0x532A, 0x8BFD, - 0x5420, 0x80BA, 0x5E9F, 0x6CB8, 0x8D39, 0x82AC, 0x915A, 0x5429, - 0x6C1B, 0x5206, 0x7EB7, 0x575F, 0x711A, 0x6C7E, 0x7C89, 0x594B, - 0x4EFD, 0x5FFF, 0x6124, 0x7CAA, 0x4E30, 0x5C01, 0x67AB, 0x8702, - 0x5CF0, 0x950B, 0x98CE, 0x75AF, 0x70FD, 0x9022, 0x51AF, 0x7F1D, - 0x8BBD, 0x5949, 0x51E4, 0x4F5B, 0x5426, 0x592B, 0x6577, 0x80A4, - 0x5B75, 0x6276, 0x62C2, 0x8F90, 0x5E45, 0x6C1F, 0x7B26, 0x4F0F, - 0x4FD8, 0x670D, 0x6D6E, 0x6DAA, 0x798F, 0x88B1, 0x5F17, 0x752B, - 0x629A, 0x8F85, 0x4FEF, 0x91DC, 0x65A7, 0x812F, 0x8151, 0x5E9C, - 0x8150, 0x8D74, 0x526F, 0x8986, 0x8D4B, 0x590D, 0x5085, 0x4ED8, - 0x961C, 0x7236, 0x8179, 0x8D1F, 0x5BCC, 0x8BA3, 0x9644, 0x5987, - 0x7F1A, 0x5490, 0x5676, 0x560E, 0x8BE5, 0x6539, 0x6982, 0x9499, - 0x76D6, 0x6E89, 0x5E72, 0x7518, 0x6746, 0x67D1, 0x7AFF, 0x809D, - 0x8D76, 0x611F, 0x79C6, 0x6562, 0x8D63, 0x5188, 0x521A, 0x94A2, - 0x7F38, 0x809B, 0x7EB2, 0x5C97, 0x6E2F, 0x6760, 0x7BD9, 0x768B, - 0x9AD8, 0x818F, 0x7F94, 0x7CD5, 0x641E, 0x9550, 0x7A3F, 0x544A, - 0x54E5, 0x6B4C, 0x6401, 0x6208, 0x9E3D, 0x80F3, 0x7599, 0x5272, - 0x9769, 0x845B, 0x683C, 0x86E4, 0x9601, 0x9694, 0x94EC, 0x4E2A, - 0x5404, 0x7ED9, 0x6839, 0x8DDF, 0x8015, 0x66F4, 0x5E9A, 0x7FB9, - 0x57C2, 0x803F, 0x6897, 0x5DE5, 0x653B, 0x529F, 0x606D, 0x9F9A, - 0x4F9B, 0x8EAC, 0x516C, 0x5BAB, 0x5F13, 0x5DE9, 0x6C5E, 0x62F1, - 0x8D21, 0x5171, 0x94A9, 0x52FE, 0x6C9F, 0x82DF, 0x72D7, 0x57A2, - 0x6784, 0x8D2D, 0x591F, 0x8F9C, 0x83C7, 0x5495, 0x7B8D, 0x4F30, - 0x6CBD, 0x5B64, 0x59D1, 0x9F13, 0x53E4, 0x86CA, 0x9AA8, 0x8C37, - 0x80A1, 0x6545, 0x987E, 0x56FA, 0x96C7, 0x522E, 0x74DC, 0x5250, -plane 10 -at 0x00 - 0x5BE1, 0x6302, 0x8902, 0x4E56, 0x62D0, 0x602A, 0x68FA, 0x5173, - 0x5B98, 0x51A0, 0x89C2, 0x7BA1, 0x9986, 0x7F50, 0x60EF, 0x704C, - 0x8D2F, 0x5149, 0x5E7F, 0x901B, 0x7470, 0x89C4, 0x572D, 0x7845, - 0x5F52, 0x9F9F, 0x95FA, 0x8F68, 0x9B3C, 0x8BE1, 0x7678, 0x6842, - 0x67DC, 0x8DEA, 0x8D35, 0x523D, 0x8F8A, 0x6EDA, 0x68CD, 0x9505, - 0x90ED, 0x56FD, 0x679C, 0x88F9, 0x8FC7, 0x54C8, 0x9AB8, 0x5B69, - 0x6D77, 0x6C26, 0x4EA5, 0x5BB3, 0x9A87, 0x9163, 0x61A8, 0x90AF, - 0x97E9, 0x542B, 0x6DB5, 0x5BD2, 0x51FD, 0x558A, 0x7F55, 0x7FF0, - 0x64BC, 0x634D, 0x65F1, 0x61BE, 0x608D, 0x710A, 0x6C57, 0x6C49, - 0x592F, 0x676D, 0x822A, 0x58D5, 0x568E, 0x8C6A, 0x6BEB, 0x90DD, - 0x597D, 0x8017, 0x53F7, 0x6D69, 0x5475, 0x559D, 0x8377, 0x83CF, - 0x6838, 0x79BE, 0x548C, 0x4F55, 0x5408, 0x76D2, 0x8C89, 0x9602, - 0x6CB3, 0x6DB8, 0x8D6B, 0x8910, 0x9E64, 0x8D3A, 0x563F, 0x9ED1, - 0x75D5, 0x5F88, 0x72E0, 0x6068, 0x54FC, 0x4EA8, 0x6A2A, 0x8861, - 0x6052, 0x8F70, 0x54C4, 0x70D8, 0x8679, 0x9E3F, 0x6D2A, 0x5B8F, - 0x5F18, 0x7EA2, 0x5589, 0x4FAF, 0x7334, 0x543C, 0x539A, 0x5019, - 0x540E, 0x547C, 0x4E4E, 0x5FFD, 0x745A, 0x58F6, 0x846B, 0x80E1, - 0x8774, 0x72D0, 0x7CCA, 0x6E56, 0x5F27, 0x864E, 0x552C, 0x62A4, - 0x4E92, 0x6CAA, 0x6237, 0x82B1, 0x54D7, 0x534E, 0x733E, 0x6ED1, - 0x753B, 0x5212, 0x5316, 0x8BDD, 0x69D0, 0x5F8A, 0x6000, 0x6DEE, - 0x574F, 0x6B22, 0x73AF, 0x6853, 0x8FD8, 0x7F13, 0x6362, 0x60A3, - 0x5524, 0x75EA, 0x8C62, 0x7115, 0x6DA3, 0x5BA6, 0x5E7B, 0x8352, - 0x614C, 0x9EC4, 0x78FA, 0x8757, 0x7C27, 0x7687, 0x51F0, 0x60F6, - 0x714C, 0x6643, 0x5E4C, 0x604D, 0x8C0E, 0x7070, 0x6325, 0x8F89, - 0x5FBD, 0x6062, 0x86D4, 0x56DE, 0x6BC1, 0x6094, 0x6167, 0x5349, - 0x60E0, 0x6666, 0x8D3F, 0x79FD, 0x4F1A, 0x70E9, 0x6C47, 0x8BB3, - 0x8BF2, 0x7ED8, 0x8364, 0x660F, 0x5A5A, 0x9B42, 0x6D51, 0x6DF7, - 0x8C41, 0x6D3B, 0x4F19, 0x706B, 0x83B7, 0x6216, 0x60D1, 0x970D, - 0x8D27, 0x7978, 0x51FB, 0x573E, 0x57FA, 0x673A, 0x7578, 0x7A3D, - 0x79EF, 0x7B95, 0x808C, 0x9965, 0x8FF9, 0x6FC0, 0x8BA5, 0x9E21, - 0x59EC, 0x7EE9, 0x7F09, 0x5409, 0x6781, 0x68D8, 0x8F91, 0x7C4D, - 0x96C6, 0x53CA, 0x6025, 0x75BE, 0x6C72, 0x5373, 0x5AC9, 0x7EA7, -plane 11 -at 0x00 - 0x6324, 0x51E0, 0x810A, 0x5DF1, 0x84DF, 0x6280, 0x5180, 0x5B63, - 0x4F0E, 0x796D, 0x5242, 0x60B8, 0x6D4E, 0x5BC4, 0x5BC2, 0x8BA1, - 0x8BB0, 0x65E2, 0x5FCC, 0x9645, 0x5993, 0x7EE7, 0x7EAA, 0x5609, - 0x67B7, 0x5939, 0x4F73, 0x5BB6, 0x52A0, 0x835A, 0x988A, 0x8D3E, - 0x7532, 0x94BE, 0x5047, 0x7A3C, 0x4EF7, 0x67B6, 0x9A7E, 0x5AC1, - 0x6B7C, 0x76D1, 0x575A, 0x5C16, 0x7B3A, 0x95F4, 0x714E, 0x517C, - 0x80A9, 0x8270, 0x5978, 0x7F04, 0x8327, 0x68C0, 0x67EC, 0x78B1, - 0x7877, 0x62E3, 0x6361, 0x7B80, 0x4FED, 0x526A, 0x51CF, 0x8350, - 0x69DB, 0x9274, 0x8DF5, 0x8D31, 0x89C1, 0x952E, 0x7BAD, 0x4EF6, - 0x5065, 0x8230, 0x5251, 0x996F, 0x6E10, 0x6E85, 0x6DA7, 0x5EFA, - 0x50F5, 0x59DC, 0x5C06, 0x6D46, 0x6C5F, 0x7586, 0x848B, 0x6868, - 0x5956, 0x8BB2, 0x5320, 0x9171, 0x964D, 0x8549, 0x6912, 0x7901, - 0x7126, 0x80F6, 0x4EA4, 0x90CA, 0x6D47, 0x9A84, 0x5A07, 0x56BC, - 0x6405, 0x94F0, 0x77EB, 0x4FA5, 0x811A, 0x72E1, 0x89D2, 0x997A, - 0x7F34, 0x7EDE, 0x527F, 0x6559, 0x9175, 0x8F7F, 0x8F83, 0x53EB, - 0x7A96, 0x63ED, 0x63A5, 0x7686, 0x79F8, 0x8857, 0x9636, 0x622A, - 0x52AB, 0x8282, 0x6854, 0x6770, 0x6377, 0x776B, 0x7AED, 0x6D01, - 0x7ED3, 0x89E3, 0x59D0, 0x6212, 0x85C9, 0x82A5, 0x754C, 0x501F, - 0x4ECB, 0x75A5, 0x8BEB, 0x5C4A, 0x5DFE, 0x7B4B, 0x65A4, 0x91D1, - 0x4ECA, 0x6D25, 0x895F, 0x7D27, 0x9526, 0x4EC5, 0x8C28, 0x8FDB, - 0x9773, 0x664B, 0x7981, 0x8FD1, 0x70EC, 0x6D78, 0x5C3D, 0x52B2, - 0x8346, 0x5162, 0x830E, 0x775B, 0x6676, 0x9CB8, 0x4EAC, 0x60CA, - 0x7CBE, 0x7CB3, 0x7ECF, 0x4E95, 0x8B66, 0x666F, 0x9888, 0x9759, - 0x5883, 0x656C, 0x955C, 0x5F84, 0x75C9, 0x9756, 0x7ADF, 0x7ADE, - 0x51C0, 0x70AF, 0x7A98, 0x63EA, 0x7A76, 0x7EA0, 0x7396, 0x97ED, - 0x4E45, 0x7078, 0x4E5D, 0x9152, 0x53A9, 0x6551, 0x65E7, 0x81FC, - 0x8205, 0x548E, 0x5C31, 0x759A, 0x97A0, 0x62D8, 0x72D9, 0x75BD, - 0x5C45, 0x9A79, 0x83CA, 0x5C40, 0x5480, 0x77E9, 0x4E3E, 0x6CAE, - 0x805A, 0x62D2, 0x636E, 0x5DE8, 0x5177, 0x8DDD, 0x8E1E, 0x952F, - 0x4FF1, 0x53E5, 0x60E7, 0x70AC, 0x5267, 0x6350, 0x9E43, 0x5A1F, - 0x5026, 0x7737, 0x5377, 0x7EE2, 0x6485, 0x652B, 0x6289, 0x6398, - 0x5014, 0x7235, 0x89C9, 0x51B3, 0x8BC0, 0x7EDD, 0x5747, 0x83CC, -plane 12 -at 0x00 - 0x94A7, 0x519B, 0x541B, 0x5CFB, 0x4FCA, 0x7AE3, 0x6D5A, 0x90E1, - 0x9A8F, 0x5580, 0x5496, 0x5361, 0x54AF, 0x5F00, 0x63E9, 0x6977, - 0x51EF, 0x6168, 0x520A, 0x582A, 0x52D8, 0x574E, 0x780D, 0x770B, - 0x5EB7, 0x6177, 0x7CE0, 0x625B, 0x6297, 0x4EA2, 0x7095, 0x8003, - 0x62F7, 0x70E4, 0x9760, 0x5777, 0x82DB, 0x67EF, 0x68F5, 0x78D5, - 0x9897, 0x79D1, 0x58F3, 0x54B3, 0x53EF, 0x6E34, 0x514B, 0x523B, - 0x5BA2, 0x8BFE, 0x80AF, 0x5543, 0x57A6, 0x6073, 0x5751, 0x542D, - 0x7A7A, 0x6050, 0x5B54, 0x63A7, 0x62A0, 0x53E3, 0x6263, 0x5BC7, - 0x67AF, 0x54ED, 0x7A9F, 0x82E6, 0x9177, 0x5E93, 0x88E4, 0x5938, - 0x57AE, 0x630E, 0x8DE8, 0x80EF, 0x5757, 0x7B77, 0x4FA9, 0x5FEB, - 0x5BBD, 0x6B3E, 0x5321, 0x7B50, 0x72C2, 0x6846, 0x77FF, 0x7736, - 0x65F7, 0x51B5, 0x4E8F, 0x76D4, 0x5CBF, 0x7AA5, 0x8475, 0x594E, - 0x9B41, 0x5080, 0x9988, 0x6127, 0x6E83, 0x5764, 0x6606, 0x6346, - 0x56F0, 0x62EC, 0x6269, 0x5ED3, 0x9614, 0x5783, 0x62C9, 0x5587, - 0x8721, 0x814A, 0x8FA3, 0x5566, 0x83B1, 0x6765, 0x8D56, 0x84DD, - 0x5A6A, 0x680F, 0x62E6, 0x7BEE, 0x9611, 0x5170, 0x6F9C, 0x8C30, - 0x63FD, 0x89C8, 0x61D2, 0x7F06, 0x70C2, 0x6EE5, 0x7405, 0x6994, - 0x72FC, 0x5ECA, 0x90CE, 0x6717, 0x6D6A, 0x635E, 0x52B3, 0x7262, - 0x8001, 0x4F6C, 0x59E5, 0x916A, 0x70D9, 0x6D9D, 0x52D2, 0x4E50, - 0x96F7, 0x956D, 0x857E, 0x78CA, 0x7D2F, 0x5121, 0x5792, 0x64C2, - 0x808B, 0x7C7B, 0x6CEA, 0x68F1, 0x695E, 0x51B7, 0x5398, 0x68A8, - 0x7281, 0x9ECE, 0x7BF1, 0x72F8, 0x79BB, 0x6F13, 0x7406, 0x674E, - 0x91CC, 0x9CA4, 0x793C, 0x8389, 0x8354, 0x540F, 0x6817, 0x4E3D, - 0x5389, 0x52B1, 0x783E, 0x5386, 0x5229, 0x5088, 0x4F8B, 0x4FD0, - 0x75E2, 0x7ACB, 0x7C92, 0x6CA5, 0x96B6, 0x529B, 0x7483, 0x54E9, - 0x4FE9, 0x8054, 0x83B2, 0x8FDE, 0x9570, 0x5EC9, 0x601C, 0x6D9F, - 0x5E18, 0x655B, 0x8138, 0x94FE, 0x604B, 0x70BC, 0x7EC3, 0x7CAE, - 0x51C9, 0x6881, 0x7CB1, 0x826F, 0x4E24, 0x8F86, 0x91CF, 0x667E, - 0x4EAE, 0x8C05, 0x64A9, 0x804A, 0x50DA, 0x7597, 0x71CE, 0x5BE5, - 0x8FBD, 0x6F66, 0x4E86, 0x6482, 0x9563, 0x5ED6, 0x6599, 0x5217, - 0x88C2, 0x70C8, 0x52A3, 0x730E, 0x7433, 0x6797, 0x78F7, 0x9716, - 0x4E34, 0x90BB, 0x9CDE, 0x6DCB, 0x51DB, 0x8D41, 0x541D, 0x62CE, -plane 13 -at 0x00 - 0x73B2, 0x83F1, 0x96F6, 0x9F84, 0x94C3, 0x4F36, 0x7F9A, 0x51CC, - 0x7075, 0x9675, 0x5CAD, 0x9886, 0x53E6, 0x4EE4, 0x6E9C, 0x7409, - 0x69B4, 0x786B, 0x998F, 0x7559, 0x5218, 0x7624, 0x6D41, 0x67F3, - 0x516D, 0x9F99, 0x804B, 0x5499, 0x7B3C, 0x7ABF, 0x9686, 0x5784, - 0x62E2, 0x9647, 0x697C, 0x5A04, 0x6402, 0x7BD3, 0x6F0F, 0x964B, - 0x82A6, 0x5362, 0x9885, 0x5E90, 0x7089, 0x63B3, 0x5364, 0x864F, - 0x9C81, 0x9E93, 0x788C, 0x9732, 0x8DEF, 0x8D42, 0x9E7F, 0x6F5E, - 0x7984, 0x5F55, 0x9646, 0x622E, 0x9A74, 0x5415, 0x94DD, 0x4FA3, - 0x65C5, 0x5C65, 0x5C61, 0x7F15, 0x8651, 0x6C2F, 0x5F8B, 0x7387, - 0x6EE4, 0x7EFF, 0x5CE6, 0x631B, 0x5B6A, 0x6EE6, 0x5375, 0x4E71, - 0x63A0, 0x7565, 0x62A1, 0x8F6E, 0x4F26, 0x4ED1, 0x6CA6, 0x7EB6, - 0x8BBA, 0x841D, 0x87BA, 0x7F57, 0x903B, 0x9523, 0x7BA9, 0x9AA1, - 0x88F8, 0x843D, 0x6D1B, 0x9A86, 0x7EDC, 0x5988, 0x9EBB, 0x739B, - 0x7801, 0x8682, 0x9A6C, 0x9A82, 0x561B, 0x5417, 0x57CB, 0x4E70, - 0x9EA6, 0x5356, 0x8FC8, 0x8109, 0x7792, 0x9992, 0x86EE, 0x6EE1, - 0x8513, 0x66FC, 0x6162, 0x6F2B, 0x8C29, 0x8292, 0x832B, 0x76F2, - 0x6C13, 0x5FD9, 0x83BD, 0x732B, 0x8305, 0x951A, 0x6BDB, 0x77DB, - 0x94C6, 0x536F, 0x8302, 0x5192, 0x5E3D, 0x8C8C, 0x8D38, 0x4E48, - 0x73AB, 0x679A, 0x6885, 0x9176, 0x9709, 0x7164, 0x6CA1, 0x7709, - 0x5A92, 0x9541, 0x6BCF, 0x7F8E, 0x6627, 0x5BD0, 0x59B9, 0x5A9A, - 0x95E8, 0x95F7, 0x4EEC, 0x840C, 0x8499, 0x6AAC, 0x76DF, 0x9530, - 0x731B, 0x68A6, 0x5B5F, 0x772F, 0x919A, 0x9761, 0x7CDC, 0x8FF7, - 0x8C1C, 0x5F25, 0x7C73, 0x79D8, 0x89C5, 0x6CCC, 0x871C, 0x5BC6, - 0x5E42, 0x68C9, 0x7720, 0x7EF5, 0x5195, 0x514D, 0x52C9, 0x5A29, - 0x7F05, 0x9762, 0x82D7, 0x63CF, 0x7784, 0x85D0, 0x79D2, 0x6E3A, - 0x5E99, 0x5999, 0x8511, 0x706D, 0x6C11, 0x62BF, 0x76BF, 0x654F, - 0x60AF, 0x95FD, 0x660E, 0x879F, 0x9E23, 0x94ED, 0x540D, 0x547D, - 0x8C2C, 0x6478, 0x6479, 0x8611, 0x6A21, 0x819C, 0x78E8, 0x6469, - 0x9B54, 0x62B9, 0x672B, 0x83AB, 0x58A8, 0x9ED8, 0x6CAB, 0x6F20, - 0x5BDE, 0x964C, 0x8C0B, 0x725F, 0x67D0, 0x62C7, 0x7261, 0x4EA9, - 0x59C6, 0x6BCD, 0x5893, 0x66AE, 0x5E55, 0x52DF, 0x6155, 0x6728, - 0x76EE, 0x7766, 0x7267, 0x7A46, 0x62FF, 0x54EA, 0x5450, 0x94A0, -plane 14 -at 0x00 - 0x90A3, 0x5A1C, 0x7EB3, 0x6C16, 0x4E43, 0x5976, 0x8010, 0x5948, - 0x5357, 0x7537, 0x96BE, 0x56CA, 0x6320, 0x8111, 0x607C, 0x95F9, - 0x6DD6, 0x5462, 0x9981, 0x5185, 0x5AE9, 0x80FD, 0x59AE, 0x9713, - 0x502A, 0x6CE5, 0x5C3C, 0x62DF, 0x4F60, 0x533F, 0x817B, 0x9006, - 0x6EBA, 0x852B, 0x62C8, 0x5E74, 0x78BE, 0x64B5, 0x637B, 0x5FF5, - 0x5A18, 0x917F, 0x9E1F, 0x5C3F, 0x634F, 0x8042, 0x5B7D, 0x556E, - 0x954A, 0x954D, 0x6D85, 0x60A8, 0x67E0, 0x72DE, 0x51DD, 0x5B81, - 0x62E7, 0x6CDE, 0x725B, 0x626D, 0x94AE, 0x7EBD, 0x8113, 0x6D53, - 0x519C, 0x5F04, 0x5974, 0x52AA, 0x6012, 0x5973, 0x6696, 0x8650, - 0x759F, 0x632A, 0x61E6, 0x7CEF, 0x8BFA, 0x54E6, 0x6B27, 0x9E25, - 0x6BB4, 0x85D5, 0x5455, 0x5076, 0x6CA4, 0x556A, 0x8DB4, 0x722C, - 0x5E15, 0x6015, 0x7436, 0x62CD, 0x6392, 0x724C, 0x5F98, 0x6E43, - 0x6D3E, 0x6500, 0x6F58, 0x76D8, 0x78D0, 0x76FC, 0x7554, 0x5224, - 0x53DB, 0x4E53, 0x5E9E, 0x65C1, 0x802A, 0x80D6, 0x629B, 0x5486, - 0x5228, 0x70AE, 0x888D, 0x8DD1, 0x6CE1, 0x5478, 0x80DA, 0x57F9, - 0x88F4, 0x8D54, 0x966A, 0x914D, 0x4F69, 0x6C9B, 0x55B7, 0x76C6, - 0x7830, 0x62A8, 0x70F9, 0x6F8E, 0x5F6D, 0x84EC, 0x68DA, 0x787C, - 0x7BF7, 0x81A8, 0x670B, 0x9E4F, 0x6367, 0x78B0, 0x576F, 0x7812, - 0x9739, 0x6279, 0x62AB, 0x5288, 0x7435, 0x6BD7, 0x5564, 0x813E, - 0x75B2, 0x76AE, 0x5339, 0x75DE, 0x50FB, 0x5C41, 0x8B6C, 0x7BC7, - 0x504F, 0x7247, 0x9A97, 0x98D8, 0x6F02, 0x74E2, 0x7968, 0x6487, - 0x77A5, 0x62FC, 0x9891, 0x8D2B, 0x54C1, 0x8058, 0x4E52, 0x576A, - 0x82F9, 0x840D, 0x5E73, 0x51ED, 0x74F6, 0x8BC4, 0x5C4F, 0x5761, - 0x6CFC, 0x9887, 0x5A46, 0x7834, 0x9B44, 0x8FEB, 0x7C95, 0x5256, - 0x6251, 0x94FA, 0x4EC6, 0x8386, 0x8461, 0x83E9, 0x84B2, 0x57D4, - 0x6734, 0x5703, 0x666E, 0x6D66, 0x8C31, 0x66DD, 0x7011, 0x671F, - 0x6B3A, 0x6816, 0x621A, 0x59BB, 0x4E03, 0x51C4, 0x6F06, 0x67D2, - 0x6C8F, 0x5176, 0x68CB, 0x5947, 0x6B67, 0x7566, 0x5D0E, 0x8110, - 0x9F50, 0x65D7, 0x7948, 0x7941, 0x9A91, 0x8D77, 0x5C82, 0x4E5E, - 0x4F01, 0x542F, 0x5951, 0x780C, 0x5668, 0x6C14, 0x8FC4, 0x5F03, - 0x6C7D, 0x6CE3, 0x8BAB, 0x6390, 0x6070, 0x6D3D, 0x7275, 0x6266, - 0x948E, 0x94C5, 0x5343, 0x8FC1, 0x7B7E, 0x4EDF, 0x8C26, 0x4E7E, -plane 15 -at 0x00 - 0x9ED4, 0x94B1, 0x94B3, 0x524D, 0x6F5C, 0x9063, 0x6D45, 0x8C34, - 0x5811, 0x5D4C, 0x6B20, 0x6B49, 0x67AA, 0x545B, 0x8154, 0x7F8C, - 0x5899, 0x8537, 0x5F3A, 0x62A2, 0x6A47, 0x9539, 0x6572, 0x6084, - 0x6865, 0x77A7, 0x4E54, 0x4FA8, 0x5DE7, 0x9798, 0x64AC, 0x7FD8, - 0x5CED, 0x4FCF, 0x7A8D, 0x5207, 0x8304, 0x4E14, 0x602F, 0x7A83, - 0x94A6, 0x4FB5, 0x4EB2, 0x79E6, 0x7434, 0x52E4, 0x82B9, 0x64D2, - 0x79BD, 0x5BDD, 0x6C81, 0x9752, 0x8F7B, 0x6C22, 0x503E, 0x537F, - 0x6E05, 0x64CE, 0x6674, 0x6C30, 0x60C5, 0x9877, 0x8BF7, 0x5E86, - 0x743C, 0x7A77, 0x79CB, 0x4E18, 0x90B1, 0x7403, 0x6C42, 0x56DA, - 0x914B, 0x6CC5, 0x8D8B, 0x533A, 0x86C6, 0x66F2, 0x8EAF, 0x5C48, - 0x9A71, 0x6E20, 0x53D6, 0x5A36, 0x9F8B, 0x8DA3, 0x53BB, 0x5708, - 0x98A7, 0x6743, 0x919B, 0x6CC9, 0x5168, 0x75CA, 0x62F3, 0x72AC, - 0x5238, 0x529D, 0x7F3A, 0x7094, 0x7638, 0x5374, 0x9E4A, 0x69B7, - 0x786E, 0x96C0, 0x88D9, 0x7FA4, 0x7136, 0x71C3, 0x5189, 0x67D3, - 0x74E4, 0x58E4, 0x6518, 0x56B7, 0x8BA9, 0x9976, 0x6270, 0x7ED5, - 0x60F9, 0x70ED, 0x58EC, 0x4EC1, 0x4EBA, 0x5FCD, 0x97E7, 0x4EFB, - 0x8BA4, 0x5203, 0x598A, 0x7EAB, 0x6254, 0x4ECD, 0x65E5, 0x620E, - 0x8338, 0x84C9, 0x8363, 0x878D, 0x7194, 0x6EB6, 0x5BB9, 0x7ED2, - 0x5197, 0x63C9, 0x67D4, 0x8089, 0x8339, 0x8815, 0x5112, 0x5B7A, - 0x5982, 0x8FB1, 0x4E73, 0x6C5D, 0x5165, 0x8925, 0x8F6F, 0x962E, - 0x854A, 0x745E, 0x9510, 0x95F0, 0x6DA6, 0x82E5, 0x5F31, 0x6492, - 0x6D12, 0x8428, 0x816E, 0x9CC3, 0x585E, 0x8D5B, 0x4E09, 0x53C1, - 0x4F1E, 0x6563, 0x6851, 0x55D3, 0x4E27, 0x6414, 0x9A9A, 0x626B, - 0x5AC2, 0x745F, 0x8272, 0x6DA9, 0x68EE, 0x50E7, 0x838E, 0x7802, - 0x6740, 0x5239, 0x6C99, 0x7EB1, 0x50BB, 0x5565, 0x715E, 0x7B5B, - 0x6652, 0x73CA, 0x82EB, 0x6749, 0x5C71, 0x5220, 0x717D, 0x886B, - 0x95EA, 0x9655, 0x64C5, 0x8D61, 0x81B3, 0x5584, 0x6C55, 0x6247, - 0x7F2E, 0x5892, 0x4F24, 0x5546, 0x8D4F, 0x664C, 0x4E0A, 0x5C1A, - 0x88F3, 0x68A2, 0x634E, 0x7A0D, 0x70E7, 0x828D, 0x52FA, 0x97F6, - 0x5C11, 0x54E8, 0x90B5, 0x7ECD, 0x5962, 0x8D4A, 0x86C7, 0x820C, - 0x820D, 0x8D66, 0x6444, 0x5C04, 0x6151, 0x6D89, 0x793E, 0x8BBE, - 0x7837, 0x7533, 0x547B, 0x4F38, 0x8EAB, 0x6DF1, 0x5A20, 0x7EC5, -plane 16 -at 0x00 - 0x795E, 0x6C88, 0x5BA1, 0x5A76, 0x751A, 0x80BE, 0x614E, 0x6E17, - 0x58F0, 0x751F, 0x7525, 0x7272, 0x5347, 0x7EF3, 0x7701, 0x76DB, - 0x5269, 0x80DC, 0x5723, 0x5E08, 0x5931, 0x72EE, 0x65BD, 0x6E7F, - 0x8BD7, 0x5C38, 0x8671, 0x5341, 0x77F3, 0x62FE, 0x65F6, 0x4EC0, - 0x98DF, 0x8680, 0x5B9E, 0x8BC6, 0x53F2, 0x77E2, 0x4F7F, 0x5C4E, - 0x9A76, 0x59CB, 0x5F0F, 0x793A, 0x58EB, 0x4E16, 0x67FF, 0x4E8B, - 0x62ED, 0x8A93, 0x901D, 0x52BF, 0x662F, 0x55DC, 0x566C, 0x9002, - 0x4ED5, 0x4F8D, 0x91CA, 0x9970, 0x6C0F, 0x5E02, 0x6043, 0x5BA4, - 0x89C6, 0x8BD5, 0x6536, 0x624B, 0x9996, 0x5B88, 0x5BFF, 0x6388, - 0x552E, 0x53D7, 0x7626, 0x517D, 0x852C, 0x67A2, 0x68B3, 0x6B8A, - 0x6292, 0x8F93, 0x53D4, 0x8212, 0x6DD1, 0x758F, 0x4E66, 0x8D4E, - 0x5B70, 0x719F, 0x85AF, 0x6691, 0x66D9, 0x7F72, 0x8700, 0x9ECD, - 0x9F20, 0x5C5E, 0x672F, 0x8FF0, 0x6811, 0x675F, 0x620D, 0x7AD6, - 0x5885, 0x5EB6, 0x6570, 0x6F31, 0x6055, 0x5237, 0x800D, 0x6454, - 0x8870, 0x7529, 0x5E05, 0x6813, 0x62F4, 0x971C, 0x53CC, 0x723D, - 0x8C01, 0x6C34, 0x7761, 0x7A0E, 0x542E, 0x77AC, 0x987A, 0x821C, - 0x8BF4, 0x7855, 0x6714, 0x70C1, 0x65AF, 0x6495, 0x5636, 0x601D, - 0x79C1, 0x53F8, 0x4E1D, 0x6B7B, 0x8086, 0x5BFA, 0x55E3, 0x56DB, - 0x4F3A, 0x4F3C, 0x9972, 0x5DF3, 0x677E, 0x8038, 0x6002, 0x9882, - 0x9001, 0x5B8B, 0x8BBC, 0x8BF5, 0x641C, 0x8258, 0x64DE, 0x55FD, - 0x82CF, 0x9165, 0x4FD7, 0x7D20, 0x901F, 0x7C9F, 0x50F3, 0x5851, - 0x6EAF, 0x5BBF, 0x8BC9, 0x8083, 0x9178, 0x849C, 0x7B97, 0x867D, - 0x968B, 0x968F, 0x7EE5, 0x9AD3, 0x788E, 0x5C81, 0x7A57, 0x9042, - 0x96A7, 0x795F, 0x5B59, 0x635F, 0x7B0B, 0x84D1, 0x68AD, 0x5506, - 0x7F29, 0x7410, 0x7D22, 0x9501, 0x6240, 0x584C, 0x4ED6, 0x5B83, - 0x5979, 0x5854, 0x736D, 0x631E, 0x8E4B, 0x8E0F, 0x80CE, 0x82D4, - 0x62AC, 0x53F0, 0x6CF0, 0x915E, 0x592A, 0x6001, 0x6C70, 0x574D, - 0x644A, 0x8D2A, 0x762B, 0x6EE9, 0x575B, 0x6A80, 0x75F0, 0x6F6D, - 0x8C2D, 0x8C08, 0x5766, 0x6BEF, 0x8892, 0x78B3, 0x63A2, 0x53F9, - 0x70AD, 0x6C64, 0x5858, 0x642A, 0x5802, 0x68E0, 0x819B, 0x5510, - 0x7CD6, 0x5018, 0x8EBA, 0x6DCC, 0x8D9F, 0x70EB, 0x638F, 0x6D9B, - 0x6ED4, 0x7EE6, 0x8404, 0x6843, 0x9003, 0x6DD8, 0x9676, 0x8BA8, -plane 17 -at 0x00 - 0x5957, 0x7279, 0x85E4, 0x817E, 0x75BC, 0x8A8A, 0x68AF, 0x5254, - 0x8E22, 0x9511, 0x63D0, 0x9898, 0x8E44, 0x557C, 0x4F53, 0x66FF, - 0x568F, 0x60D5, 0x6D95, 0x5243, 0x5C49, 0x5929, 0x6DFB, 0x586B, - 0x7530, 0x751C, 0x606C, 0x8214, 0x8146, 0x6311, 0x6761, 0x8FE2, - 0x773A, 0x8DF3, 0x8D34, 0x94C1, 0x5E16, 0x5385, 0x542C, 0x70C3, - 0x6C40, 0x5EF7, 0x505C, 0x4EAD, 0x5EAD, 0x633A, 0x8247, 0x901A, - 0x6850, 0x916E, 0x77B3, 0x540C, 0x94DC, 0x5F64, 0x7AE5, 0x6876, - 0x6345, 0x7B52, 0x7EDF, 0x75DB, 0x5077, 0x6295, 0x5934, 0x900F, - 0x51F8, 0x79C3, 0x7A81, 0x56FE, 0x5F92, 0x9014, 0x6D82, 0x5C60, - 0x571F, 0x5410, 0x5154, 0x6E4D, 0x56E2, 0x63A8, 0x9893, 0x817F, - 0x8715, 0x892A, 0x9000, 0x541E, 0x5C6F, 0x81C0, 0x62D6, 0x6258, - 0x8131, 0x9E35, 0x9640, 0x9A6E, 0x9A7C, 0x692D, 0x59A5, 0x62D3, - 0x553E, 0x6316, 0x54C7, 0x86D9, 0x6D3C, 0x5A03, 0x74E6, 0x889C, - 0x6B6A, 0x5916, 0x8C4C, 0x5F2F, 0x6E7E, 0x73A9, 0x987D, 0x4E38, - 0x70F7, 0x5B8C, 0x7897, 0x633D, 0x665A, 0x7696, 0x60CB, 0x5B9B, - 0x5A49, 0x4E07, 0x8155, 0x6C6A, 0x738B, 0x4EA1, 0x6789, 0x7F51, - 0x5F80, 0x65FA, 0x671B, 0x5FD8, 0x5984, 0x5A01, 0x5DCD, 0x5FAE, - 0x5371, 0x97E6, 0x8FDD, 0x6845, 0x56F4, 0x552F, 0x60DF, 0x4E3A, - 0x6F4D, 0x7EF4, 0x82C7, 0x840E, 0x59D4, 0x4F1F, 0x4F2A, 0x5C3E, - 0x7EAC, 0x672A, 0x851A, 0x5473, 0x754F, 0x80C3, 0x5582, 0x9B4F, - 0x4F4D, 0x6E2D, 0x8C13, 0x5C09, 0x6170, 0x536B, 0x761F, 0x6E29, - 0x868A, 0x6587, 0x95FB, 0x7EB9, 0x543B, 0x7A33, 0x7D0A, 0x95EE, - 0x55E1, 0x7FC1, 0x74EE, 0x631D, 0x8717, 0x6DA1, 0x7A9D, 0x6211, - 0x65A1, 0x5367, 0x63E1, 0x6C83, 0x5DEB, 0x545C, 0x94A8, 0x4E4C, - 0x6C61, 0x8BEC, 0x5C4B, 0x65E0, 0x829C, 0x68A7, 0x543E, 0x5434, - 0x6BCB, 0x6B66, 0x4E94, 0x6342, 0x5348, 0x821E, 0x4F0D, 0x4FAE, - 0x575E, 0x620A, 0x96FE, 0x6664, 0x7269, 0x52FF, 0x52A1, 0x609F, - 0x8BEF, 0x6614, 0x7199, 0x6790, 0x897F, 0x7852, 0x77FD, 0x6670, - 0x563B, 0x5438, 0x9521, 0x727A, 0x7A00, 0x606F, 0x5E0C, 0x6089, - 0x819D, 0x5915, 0x60DC, 0x7184, 0x70EF, 0x6EAA, 0x6C50, 0x7280, - 0x6A84, 0x88AD, 0x5E2D, 0x4E60, 0x5AB3, 0x559C, 0x94E3, 0x6D17, - 0x7CFB, 0x9699, 0x620F, 0x7EC6, 0x778E, 0x867E, 0x5323, 0x971E, -plane 18 -at 0x00 - 0x8F96, 0x6687, 0x5CE1, 0x4FA0, 0x72ED, 0x4E0B, 0x53A6, 0x590F, - 0x5413, 0x6380, 0x9528, 0x5148, 0x4ED9, 0x9C9C, 0x7EA4, 0x54B8, - 0x8D24, 0x8854, 0x8237, 0x95F2, 0x6D8E, 0x5F26, 0x5ACC, 0x663E, - 0x9669, 0x73B0, 0x732E, 0x53BF, 0x817A, 0x9985, 0x7FA1, 0x5BAA, - 0x9677, 0x9650, 0x7EBF, 0x76F8, 0x53A2, 0x9576, 0x9999, 0x7BB1, - 0x8944, 0x6E58, 0x4E61, 0x7FD4, 0x7965, 0x8BE6, 0x60F3, 0x54CD, - 0x4EAB, 0x9879, 0x5DF7, 0x6A61, 0x50CF, 0x5411, 0x8C61, 0x8427, - 0x785D, 0x9704, 0x524A, 0x54EE, 0x56A3, 0x9500, 0x6D88, 0x5BB5, - 0x6DC6, 0x6653, 0x5C0F, 0x5B5D, 0x6821, 0x8096, 0x5578, 0x7B11, - 0x6548, 0x6954, 0x4E9B, 0x6B47, 0x874E, 0x978B, 0x534F, 0x631F, - 0x643A, 0x90AA, 0x659C, 0x80C1, 0x8C10, 0x5199, 0x68B0, 0x5378, - 0x87F9, 0x61C8, 0x6CC4, 0x6CFB, 0x8C22, 0x5C51, 0x85AA, 0x82AF, - 0x950C, 0x6B23, 0x8F9B, 0x65B0, 0x5FFB, 0x5FC3, 0x4FE1, 0x8845, - 0x661F, 0x8165, 0x7329, 0x60FA, 0x5174, 0x5211, 0x578B, 0x5F62, - 0x90A2, 0x884C, 0x9192, 0x5E78, 0x674F, 0x6027, 0x59D3, 0x5144, - 0x51F6, 0x80F8, 0x5308, 0x6C79, 0x96C4, 0x718A, 0x4F11, 0x4FEE, - 0x7F9E, 0x673D, 0x55C5, 0x9508, 0x79C0, 0x8896, 0x7EE3, 0x589F, - 0x620C, 0x9700, 0x865A, 0x5618, 0x987B, 0x5F90, 0x8BB8, 0x84C4, - 0x9157, 0x53D9, 0x65ED, 0x5E8F, 0x755C, 0x6064, 0x7D6E, 0x5A7F, - 0x7EEA, 0x7EED, 0x8F69, 0x55A7, 0x5BA3, 0x60AC, 0x65CB, 0x7384, - 0x9009, 0x7663, 0x7729, 0x7EDA, 0x9774, 0x859B, 0x5B66, 0x7A74, - 0x96EA, 0x8840, 0x52CB, 0x718F, 0x5FAA, 0x65EC, 0x8BE2, 0x5BFB, - 0x9A6F, 0x5DE1, 0x6B89, 0x6C5B, 0x8BAD, 0x8BAF, 0x900A, 0x8FC5, - 0x538B, 0x62BC, 0x9E26, 0x9E2D, 0x5440, 0x4E2B, 0x82BD, 0x7259, - 0x869C, 0x5D16, 0x8859, 0x6DAF, 0x96C5, 0x54D1, 0x4E9A, 0x8BB6, - 0x7109, 0x54BD, 0x9609, 0x70DF, 0x6DF9, 0x76D0, 0x4E25, 0x7814, - 0x8712, 0x5CA9, 0x5EF6, 0x8A00, 0x989C, 0x960E, 0x708E, 0x6CBF, - 0x5944, 0x63A9, 0x773C, 0x884D, 0x6F14, 0x8273, 0x5830, 0x71D5, - 0x538C, 0x781A, 0x96C1, 0x5501, 0x5F66, 0x7130, 0x5BB4, 0x8C1A, - 0x9A8C, 0x6B83, 0x592E, 0x9E2F, 0x79E7, 0x6768, 0x626C, 0x4F6F, - 0x75A1, 0x7F8A, 0x6D0B, 0x9633, 0x6C27, 0x4EF0, 0x75D2, 0x517B, - 0x6837, 0x6F3E, 0x9080, 0x8170, 0x5996, 0x7476, 0x6447, 0x5C27, -plane 19 -at 0x00 - 0x9065, 0x7A91, 0x8C23, 0x59DA, 0x54AC, 0x8200, 0x836F, 0x8981, - 0x8000, 0x6930, 0x564E, 0x8036, 0x7237, 0x91CE, 0x51B6, 0x4E5F, - 0x9875, 0x6396, 0x4E1A, 0x53F6, 0x66F3, 0x814B, 0x591C, 0x6DB2, - 0x4E00, 0x58F9, 0x533B, 0x63D6, 0x94F1, 0x4F9D, 0x4F0A, 0x8863, - 0x9890, 0x5937, 0x9057, 0x79FB, 0x4EEA, 0x80F0, 0x7591, 0x6C82, - 0x5B9C, 0x59E8, 0x5F5D, 0x6905, 0x8681, 0x501A, 0x5DF2, 0x4E59, - 0x77E3, 0x4EE5, 0x827A, 0x6291, 0x6613, 0x9091, 0x5C79, 0x4EBF, - 0x5F79, 0x81C6, 0x9038, 0x8084, 0x75AB, 0x4EA6, 0x88D4, 0x610F, - 0x6BC5, 0x5FC6, 0x4E49, 0x76CA, 0x6EA2, 0x8BE3, 0x8BAE, 0x8C0A, - 0x8BD1, 0x5F02, 0x7FFC, 0x7FCC, 0x7ECE, 0x8335, 0x836B, 0x56E0, - 0x6BB7, 0x97F3, 0x9634, 0x59FB, 0x541F, 0x94F6, 0x6DEB, 0x5BC5, - 0x996E, 0x5C39, 0x5F15, 0x9690, 0x5370, 0x82F1, 0x6A31, 0x5A74, - 0x9E70, 0x5E94, 0x7F28, 0x83B9, 0x8424, 0x8425, 0x8367, 0x8747, - 0x8FCE, 0x8D62, 0x76C8, 0x5F71, 0x9896, 0x786C, 0x6620, 0x54DF, - 0x62E5, 0x4F63, 0x81C3, 0x75C8, 0x5EB8, 0x96CD, 0x8E0A, 0x86F9, - 0x548F, 0x6CF3, 0x6D8C, 0x6C38, 0x607F, 0x52C7, 0x7528, 0x5E7D, - 0x4F18, 0x60A0, 0x5FE7, 0x5C24, 0x7531, 0x90AE, 0x94C0, 0x72B9, - 0x6CB9, 0x6E38, 0x9149, 0x6709, 0x53CB, 0x53F3, 0x4F51, 0x91C9, - 0x8BF1, 0x53C8, 0x5E7C, 0x8FC2, 0x6DE4, 0x4E8E, 0x76C2, 0x6986, - 0x865E, 0x611A, 0x8206, 0x4F59, 0x4FDE, 0x903E, 0x9C7C, 0x6109, - 0x6E1D, 0x6E14, 0x9685, 0x4E88, 0x5A31, 0x96E8, 0x4E0E, 0x5C7F, - 0x79B9, 0x5B87, 0x8BED, 0x7FBD, 0x7389, 0x57DF, 0x828B, 0x90C1, - 0x5401, 0x9047, 0x55BB, 0x5CEA, 0x5FA1, 0x6108, 0x6B32, 0x72F1, - 0x80B2, 0x8A89, 0x6D74, 0x5BD3, 0x88D5, 0x9884, 0x8C6B, 0x9A6D, - 0x9E33, 0x6E0A, 0x51A4, 0x5143, 0x57A3, 0x8881, 0x539F, 0x63F4, - 0x8F95, 0x56ED, 0x5458, 0x5706, 0x733F, 0x6E90, 0x7F18, 0x8FDC, - 0x82D1, 0x613F, 0x6028, 0x9662, 0x66F0, 0x7EA6, 0x8D8A, 0x8DC3, - 0x94A5, 0x5CB3, 0x7CA4, 0x6708, 0x60A6, 0x9605, 0x8018, 0x4E91, - 0x90E7, 0x5300, 0x9668, 0x5141, 0x8FD0, 0x8574, 0x915D, 0x6655, - 0x97F5, 0x5B55, 0x531D, 0x7838, 0x6742, 0x683D, 0x54C9, 0x707E, - 0x5BB0, 0x8F7D, 0x518D, 0x5728, 0x54B1, 0x6512, 0x6682, 0x8D5E, - 0x8D43, 0x810F, 0x846C, 0x906D, 0x7CDF, 0x51FF, 0x85FB, 0x67A3, -plane 20 -at 0x00 - 0x65E9, 0x6FA1, 0x86A4, 0x8E81, 0x566A, 0x9020, 0x7682, 0x7076, - 0x71E5, 0x8D23, 0x62E9, 0x5219, 0x6CFD, 0x8D3C, 0x600E, 0x589E, - 0x618E, 0x66FE, 0x8D60, 0x624E, 0x55B3, 0x6E23, 0x672D, 0x8F67, - 0x94E1, 0x95F8, 0x7728, 0x6805, 0x69A8, 0x548B, 0x4E4D, 0x70B8, - 0x8BC8, 0x6458, 0x658B, 0x5B85, 0x7A84, 0x503A, 0x5BE8, 0x77BB, - 0x6BE1, 0x8A79, 0x7C98, 0x6CBE, 0x76CF, 0x65A9, 0x8F97, 0x5D2D, - 0x5C55, 0x8638, 0x6808, 0x5360, 0x6218, 0x7AD9, 0x6E5B, 0x7EFD, - 0x6A1F, 0x7AE0, 0x5F70, 0x6F33, 0x5F20, 0x638C, 0x6DA8, 0x6756, - 0x4E08, 0x5E10, 0x8D26, 0x4ED7, 0x80C0, 0x7634, 0x969C, 0x62DB, - 0x662D, 0x627E, 0x6CBC, 0x8D75, 0x7167, 0x7F69, 0x5146, 0x8087, - 0x53EC, 0x906E, 0x6298, 0x54F2, 0x86F0, 0x8F99, 0x8005, 0x9517, - 0x8517, 0x8FD9, 0x6D59, 0x73CD, 0x659F, 0x771F, 0x7504, 0x7827, - 0x81FB, 0x8D1E, 0x9488, 0x4FA6, 0x6795, 0x75B9, 0x8BCA, 0x9707, - 0x632F, 0x9547, 0x9635, 0x84B8, 0x6323, 0x7741, 0x5F81, 0x72F0, - 0x4E89, 0x6014, 0x6574, 0x62EF, 0x6B63, 0x653F, 0x5E27, 0x75C7, - 0x90D1, 0x8BC1, 0x829D, 0x679D, 0x652F, 0x5431, 0x8718, 0x77E5, - 0x80A2, 0x8102, 0x6C41, 0x4E4B, 0x7EC7, 0x804C, 0x76F4, 0x690D, - 0x6B96, 0x6267, 0x503C, 0x4F84, 0x5740, 0x6307, 0x6B62, 0x8DBE, - 0x53EA, 0x65E8, 0x7EB8, 0x5FD7, 0x631A, 0x63B7, 0x81F3, 0x81F4, - 0x7F6E, 0x5E1C, 0x5CD9, 0x5236, 0x667A, 0x79E9, 0x7A1A, 0x8D28, - 0x7099, 0x75D4, 0x6EDE, 0x6CBB, 0x7A92, 0x4E2D, 0x76C5, 0x5FE0, - 0x949F, 0x8877, 0x7EC8, 0x79CD, 0x80BF, 0x91CD, 0x4EF2, 0x4F17, - 0x821F, 0x5468, 0x5DDE, 0x6D32, 0x8BCC, 0x7CA5, 0x8F74, 0x8098, - 0x5E1A, 0x5492, 0x76B1, 0x5B99, 0x663C, 0x9AA4, 0x73E0, 0x682A, - 0x86DB, 0x6731, 0x732A, 0x8BF8, 0x8BDB, 0x9010, 0x7AF9, 0x70DB, - 0x716E, 0x62C4, 0x77A9, 0x5631, 0x4E3B, 0x8457, 0x67F1, 0x52A9, - 0x86C0, 0x8D2E, 0x94F8, 0x7B51, 0x4F4F, 0x6CE8, 0x795D, 0x9A7B, - 0x6293, 0x722A, 0x62FD, 0x4E13, 0x7816, 0x8F6C, 0x64B0, 0x8D5A, - 0x7BC6, 0x6869, 0x5E84, 0x88C5, 0x5986, 0x649E, 0x58EE, 0x72B6, - 0x690E, 0x9525, 0x8FFD, 0x8D58, 0x5760, 0x7F00, 0x8C06, 0x51C6, - 0x6349, 0x62D9, 0x5353, 0x684C, 0x7422, 0x8301, 0x914C, 0x5544, - 0x7740, 0x707C, 0x6D4A, 0x5179, 0x54A8, 0x8D44, 0x59FF, 0x6ECB, -plane 21 -at 0x00 - 0x6DC4, 0x5B5C, 0x7D2B, 0x4ED4, 0x7C7D, 0x6ED3, 0x5B50, 0x81EA, - 0x6E0D, 0x5B57, 0x9B03, 0x68D5, 0x8E2A, 0x5B97, 0x7EFC, 0x603B, - 0x7EB5, 0x90B9, 0x8D70, 0x594F, 0x63CD, 0x79DF, 0x8DB3, 0x5352, - 0x65CF, 0x7956, 0x8BC5, 0x963B, 0x7EC4, 0x94BB, 0x7E82, 0x5634, - 0x9189, 0x6700, 0x7F6A, 0x5C0A, 0x9075, 0x6628, 0x5DE6, 0x4F50, - 0x67DE, 0x505A, 0x4F5C, 0x5750, 0x5EA7, 0, 0, 0, - 0, 0, 0x4E8D, 0x4E0C, 0x5140, 0x4E10, 0x5EFF, 0x5345, - 0x4E15, 0x4E98, 0x4E1E, 0x9B32, 0x5B6C, 0x5669, 0x4E28, 0x79BA, - 0x4E3F, 0x5315, 0x4E47, 0x592D, 0x723B, 0x536E, 0x6C10, 0x56DF, - 0x80E4, 0x9997, 0x6BD3, 0x777E, 0x9F17, 0x4E36, 0x4E9F, 0x9F10, - 0x4E5C, 0x4E69, 0x4E93, 0x8288, 0x5B5B, 0x556C, 0x560F, 0x4EC4, - 0x538D, 0x539D, 0x53A3, 0x53A5, 0x53AE, 0x9765, 0x8D5D, 0x531A, - 0x53F5, 0x5326, 0x532E, 0x533E, 0x8D5C, 0x5366, 0x5363, 0x5202, - 0x5208, 0x520E, 0x522D, 0x5233, 0x523F, 0x5240, 0x524C, 0x525E, - 0x5261, 0x525C, 0x84AF, 0x527D, 0x5282, 0x5281, 0x5290, 0x5293, - 0x5182, 0x7F54, 0x4EBB, 0x4EC3, 0x4EC9, 0x4EC2, 0x4EE8, 0x4EE1, - 0x4EEB, 0x4EDE, 0x4F1B, 0x4EF3, 0x4F22, 0x4F64, 0x4EF5, 0x4F25, - 0x4F27, 0x4F09, 0x4F2B, 0x4F5E, 0x4F67, 0x6538, 0x4F5A, 0x4F5D, - 0x4F5F, 0x4F57, 0x4F32, 0x4F3D, 0x4F76, 0x4F74, 0x4F91, 0x4F89, - 0x4F83, 0x4F8F, 0x4F7E, 0x4F7B, 0x4FAA, 0x4F7C, 0x4FAC, 0x4F94, - 0x4FE6, 0x4FE8, 0x4FEA, 0x4FC5, 0x4FDA, 0x4FE3, 0x4FDC, 0x4FD1, - 0x4FDF, 0x4FF8, 0x5029, 0x504C, 0x4FF3, 0x502C, 0x500F, 0x502E, - 0x502D, 0x4FFE, 0x501C, 0x500C, 0x5025, 0x5028, 0x507E, 0x5043, - 0x5055, 0x5048, 0x504E, 0x506C, 0x507B, 0x50A5, 0x50A7, 0x50A9, - 0x50BA, 0x50D6, 0x5106, 0x50ED, 0x50EC, 0x50E6, 0x50EE, 0x5107, - 0x510B, 0x4EDD, 0x6C3D, 0x4F58, 0x4F65, 0x4FCE, 0x9FA0, 0x6C46, - 0x7C74, 0x516E, 0x5DFD, 0x9EC9, 0x9998, 0x5181, 0x5914, 0x52F9, - 0x530D, 0x8A07, 0x5310, 0x51EB, 0x5919, 0x5155, 0x4EA0, 0x5156, - 0x4EB3, 0x886E, 0x88A4, 0x4EB5, 0x8114, 0x88D2, 0x7980, 0x5B34, - 0x8803, 0x7FB8, 0x51AB, 0x51B1, 0x51BD, 0x51BC, 0x51C7, 0x5196, - 0x51A2, 0x51A5, 0x8BA0, 0x8BA6, 0x8BA7, 0x8BAA, 0x8BB4, 0x8BB5, - 0x8BB7, 0x8BC2, 0x8BC3, 0x8BCB, 0x8BCF, 0x8BCE, 0x8BD2, 0x8BD3, -plane 22 -at 0x00 - 0x8BD4, 0x8BD6, 0x8BD8, 0x8BD9, 0x8BDC, 0x8BDF, 0x8BE0, 0x8BE4, - 0x8BE8, 0x8BE9, 0x8BEE, 0x8BF0, 0x8BF3, 0x8BF6, 0x8BF9, 0x8BFC, - 0x8BFF, 0x8C00, 0x8C02, 0x8C04, 0x8C07, 0x8C0C, 0x8C0F, 0x8C11, - 0x8C12, 0x8C14, 0x8C15, 0x8C16, 0x8C19, 0x8C1B, 0x8C18, 0x8C1D, - 0x8C1F, 0x8C20, 0x8C21, 0x8C25, 0x8C27, 0x8C2A, 0x8C2B, 0x8C2E, - 0x8C2F, 0x8C32, 0x8C33, 0x8C35, 0x8C36, 0x5369, 0x537A, 0x961D, - 0x9622, 0x9621, 0x9631, 0x962A, 0x963D, 0x963C, 0x9642, 0x9649, - 0x9654, 0x965F, 0x9667, 0x966C, 0x9672, 0x9674, 0x9688, 0x968D, - 0x9697, 0x96B0, 0x9097, 0x909B, 0x909D, 0x9099, 0x90AC, 0x90A1, - 0x90B4, 0x90B3, 0x90B6, 0x90BA, 0x90B8, 0x90B0, 0x90CF, 0x90C5, - 0x90BE, 0x90D0, 0x90C4, 0x90C7, 0x90D3, 0x90E6, 0x90E2, 0x90DC, - 0x90D7, 0x90DB, 0x90EB, 0x90EF, 0x90FE, 0x9104, 0x9122, 0x911E, - 0x9123, 0x9131, 0x912F, 0x9139, 0x9143, 0x9146, 0x520D, 0x5942, - 0x52A2, 0x52AC, 0x52AD, 0x52BE, 0x54FF, 0x52D0, 0x52D6, 0x52F0, - 0x53DF, 0x71EE, 0x77CD, 0x5EF4, 0x51F5, 0x51FC, 0x9B2F, 0x53B6, - 0x5F01, 0x755A, 0x5DEF, 0x574C, 0x57A9, 0x57A1, 0x587E, 0x58BC, - 0x58C5, 0x58D1, 0x5729, 0x572C, 0x572A, 0x5733, 0x5739, 0x572E, - 0x572F, 0x575C, 0x573B, 0x5742, 0x5769, 0x5785, 0x576B, 0x5786, - 0x577C, 0x577B, 0x5768, 0x576D, 0x5776, 0x5773, 0x57AD, 0x57A4, - 0x578C, 0x57B2, 0x57CF, 0x57A7, 0x57B4, 0x5793, 0x57A0, 0x57D5, - 0x57D8, 0x57DA, 0x57D9, 0x57D2, 0x57B8, 0x57F4, 0x57EF, 0x57F8, - 0x57E4, 0x57DD, 0x580B, 0x580D, 0x57FD, 0x57ED, 0x5800, 0x581E, - 0x5819, 0x5844, 0x5820, 0x5865, 0x586C, 0x5881, 0x5889, 0x589A, - 0x5880, 0x99A8, 0x9F19, 0x61FF, 0x8279, 0x827D, 0x827F, 0x828F, - 0x828A, 0x82A8, 0x8284, 0x828E, 0x8291, 0x8297, 0x8299, 0x82AB, - 0x82B8, 0x82BE, 0x82B0, 0x82C8, 0x82CA, 0x82E3, 0x8298, 0x82B7, - 0x82AE, 0x82CB, 0x82CC, 0x82C1, 0x82A9, 0x82B4, 0x82A1, 0x82AA, - 0x829F, 0x82C4, 0x82CE, 0x82A4, 0x82E1, 0x8309, 0x82F7, 0x82E4, - 0x830F, 0x8307, 0x82DC, 0x82F4, 0x82D2, 0x82D8, 0x830C, 0x82FB, - 0x82D3, 0x8311, 0x831A, 0x8306, 0x8314, 0x8315, 0x82E0, 0x82D5, - 0x831C, 0x8351, 0x835B, 0x835C, 0x8308, 0x8392, 0x833C, 0x8334, - 0x8331, 0x839B, 0x835E, 0x832F, 0x834F, 0x8347, 0x8343, 0x835F, -plane 23 -at 0x00 - 0x8340, 0x8317, 0x8360, 0x832D, 0x833A, 0x8333, 0x8366, 0x8365, - 0x8368, 0x831B, 0x8369, 0x836C, 0x836A, 0x836D, 0x836E, 0x83B0, - 0x8378, 0x83B3, 0x83B4, 0x83A0, 0x83AA, 0x8393, 0x839C, 0x8385, - 0x837C, 0x83B6, 0x83A9, 0x837D, 0x83B8, 0x837B, 0x8398, 0x839E, - 0x83A8, 0x83BA, 0x83BC, 0x83C1, 0x8401, 0x83E5, 0x83D8, 0x5807, - 0x8418, 0x840B, 0x83DD, 0x83FD, 0x83D6, 0x841C, 0x8438, 0x8411, - 0x8406, 0x83D4, 0x83DF, 0x840F, 0x8403, 0x83F8, 0x83F9, 0x83EA, - 0x83C5, 0x83C0, 0x8426, 0x83F0, 0x83E1, 0x845C, 0x8451, 0x845A, - 0x8459, 0x8473, 0x8487, 0x8488, 0x847A, 0x8489, 0x8478, 0x843C, - 0x8446, 0x8469, 0x8476, 0x848C, 0x848E, 0x8431, 0x846D, 0x84C1, - 0x84CD, 0x84D0, 0x84E6, 0x84BD, 0x84D3, 0x84CA, 0x84BF, 0x84BA, - 0x84E0, 0x84A1, 0x84B9, 0x84B4, 0x8497, 0x84E5, 0x84E3, 0x850C, - 0x750D, 0x8538, 0x84F0, 0x8539, 0x851F, 0x853A, 0x8556, 0x853B, - 0x84FF, 0x84FC, 0x8559, 0x8548, 0x8568, 0x8564, 0x855E, 0x857A, - 0x77A2, 0x8543, 0x8572, 0x857B, 0x85A4, 0x85A8, 0x8587, 0x858F, - 0x8579, 0x85AE, 0x859C, 0x8585, 0x85B9, 0x85B7, 0x85B0, 0x85D3, - 0x85C1, 0x85DC, 0x85FF, 0x8627, 0x8605, 0x8629, 0x8616, 0x863C, - 0x5EFE, 0x5F08, 0x593C, 0x5941, 0x8037, 0x5955, 0x595A, 0x5958, - 0x530F, 0x5C22, 0x5C25, 0x5C2C, 0x5C34, 0x624C, 0x626A, 0x629F, - 0x62BB, 0x62CA, 0x62DA, 0x62D7, 0x62EE, 0x6322, 0x62F6, 0x6339, - 0x634B, 0x6343, 0x63AD, 0x63F6, 0x6371, 0x637A, 0x638E, 0x63B4, - 0x636D, 0x63AC, 0x638A, 0x6369, 0x63AE, 0x63BC, 0x63F2, 0x63F8, - 0x63E0, 0x63FF, 0x63C4, 0x63DE, 0x63CE, 0x6452, 0x63C6, 0x63BE, - 0x6445, 0x6441, 0x640B, 0x641B, 0x6420, 0x640C, 0x6426, 0x6421, - 0x645E, 0x6484, 0x646D, 0x6496, 0x647A, 0x64B7, 0x64B8, 0x6499, - 0x64BA, 0x64C0, 0x64D0, 0x64D7, 0x64E4, 0x64E2, 0x6509, 0x6525, - 0x652E, 0x5F0B, 0x5FD2, 0x7519, 0x5F11, 0x535F, 0x53F1, 0x53FD, - 0x53E9, 0x53E8, 0x53FB, 0x5412, 0x5416, 0x5406, 0x544B, 0x5452, - 0x5453, 0x5454, 0x5456, 0x5443, 0x5421, 0x5457, 0x5459, 0x5423, - 0x5432, 0x5482, 0x5494, 0x5477, 0x5471, 0x5464, 0x549A, 0x549B, - 0x5484, 0x5476, 0x5466, 0x549D, 0x54D0, 0x54AD, 0x54C2, 0x54B4, - 0x54D2, 0x54A7, 0x54A6, 0x54D3, 0x54D4, 0x5472, 0x54A3, 0x54D5, -plane 24 -at 0x00 - 0x54BB, 0x54BF, 0x54CC, 0x54D9, 0x54DA, 0x54DC, 0x54A9, 0x54AA, - 0x54A4, 0x54DD, 0x54CF, 0x54DE, 0x551B, 0x54E7, 0x5520, 0x54FD, - 0x5514, 0x54F3, 0x5522, 0x5523, 0x550F, 0x5511, 0x5527, 0x552A, - 0x5567, 0x558F, 0x55B5, 0x5549, 0x556D, 0x5541, 0x5555, 0x553F, - 0x5550, 0x553C, 0x5537, 0x5556, 0x5575, 0x5576, 0x5577, 0x5533, - 0x5530, 0x555C, 0x558B, 0x55D2, 0x5583, 0x55B1, 0x55B9, 0x5588, - 0x5581, 0x559F, 0x557E, 0x55D6, 0x5591, 0x557B, 0x55DF, 0x55BD, - 0x55BE, 0x5594, 0x5599, 0x55EA, 0x55F7, 0x55C9, 0x561F, 0x55D1, - 0x55EB, 0x55EC, 0x55D4, 0x55E6, 0x55DD, 0x55C4, 0x55EF, 0x55E5, - 0x55F2, 0x55F3, 0x55CC, 0x55CD, 0x55E8, 0x55F5, 0x55E4, 0x8F94, - 0x561E, 0x5608, 0x560C, 0x5601, 0x5624, 0x5623, 0x55FE, 0x5600, - 0x5627, 0x562D, 0x5658, 0x5639, 0x5657, 0x562C, 0x564D, 0x5662, - 0x5659, 0x565C, 0x564C, 0x5654, 0x5686, 0x5664, 0x5671, 0x566B, - 0x567B, 0x567C, 0x5685, 0x5693, 0x56AF, 0x56D4, 0x56D7, 0x56DD, - 0x56E1, 0x56F5, 0x56EB, 0x56F9, 0x56FF, 0x5704, 0x570A, 0x5709, - 0x571C, 0x5E0F, 0x5E19, 0x5E14, 0x5E11, 0x5E31, 0x5E3B, 0x5E3C, - 0x5E37, 0x5E44, 0x5E54, 0x5E5B, 0x5E5E, 0x5E61, 0x5C8C, 0x5C7A, - 0x5C8D, 0x5C90, 0x5C96, 0x5C88, 0x5C98, 0x5C99, 0x5C91, 0x5C9A, - 0x5C9C, 0x5CB5, 0x5CA2, 0x5CBD, 0x5CAC, 0x5CAB, 0x5CB1, 0x5CA3, - 0x5CC1, 0x5CB7, 0x5CC4, 0x5CD2, 0x5CE4, 0x5CCB, 0x5CE5, 0x5D02, - 0x5D03, 0x5D27, 0x5D26, 0x5D2E, 0x5D24, 0x5D1E, 0x5D06, 0x5D1B, - 0x5D58, 0x5D3E, 0x5D34, 0x5D3D, 0x5D6C, 0x5D5B, 0x5D6F, 0x5D5D, - 0x5D6B, 0x5D4B, 0x5D4A, 0x5D69, 0x5D74, 0x5D82, 0x5D99, 0x5D9D, - 0x8C73, 0x5DB7, 0x5DC5, 0x5F73, 0x5F77, 0x5F82, 0x5F87, 0x5F89, - 0x5F8C, 0x5F95, 0x5F99, 0x5F9C, 0x5FA8, 0x5FAD, 0x5FB5, 0x5FBC, - 0x8862, 0x5F61, 0x72AD, 0x72B0, 0x72B4, 0x72B7, 0x72B8, 0x72C3, - 0x72C1, 0x72CE, 0x72CD, 0x72D2, 0x72E8, 0x72EF, 0x72E9, 0x72F2, - 0x72F4, 0x72F7, 0x7301, 0x72F3, 0x7303, 0x72FA, 0x72FB, 0x7317, - 0x7313, 0x7321, 0x730A, 0x731E, 0x731D, 0x7315, 0x7322, 0x7339, - 0x7325, 0x732C, 0x7338, 0x7331, 0x7350, 0x734D, 0x7357, 0x7360, - 0x736C, 0x736F, 0x737E, 0x821B, 0x5925, 0x98E7, 0x5924, 0x5902, - 0x9963, 0x9967, 0x9968, 0x9969, 0x996A, 0x996B, 0x996C, 0x9974, -plane 25 -at 0x00 - 0x9977, 0x997D, 0x9980, 0x9984, 0x9987, 0x998A, 0x998D, 0x9990, - 0x9991, 0x9993, 0x9994, 0x9995, 0x5E80, 0x5E91, 0x5E8B, 0x5E96, - 0x5EA5, 0x5EA0, 0x5EB9, 0x5EB5, 0x5EBE, 0x5EB3, 0x8D53, 0x5ED2, - 0x5ED1, 0x5EDB, 0x5EE8, 0x5EEA, 0x81BA, 0x5FC4, 0x5FC9, 0x5FD6, - 0x5FCF, 0x6003, 0x5FEE, 0x6004, 0x5FE1, 0x5FE4, 0x5FFE, 0x6005, - 0x6006, 0x5FEA, 0x5FED, 0x5FF8, 0x6019, 0x6035, 0x6026, 0x601B, - 0x600F, 0x600D, 0x6029, 0x602B, 0x600A, 0x603F, 0x6021, 0x6078, - 0x6079, 0x607B, 0x607A, 0x6042, 0x606A, 0x607D, 0x6096, 0x609A, - 0x60AD, 0x609D, 0x6083, 0x6092, 0x608C, 0x609B, 0x60EC, 0x60BB, - 0x60B1, 0x60DD, 0x60D8, 0x60C6, 0x60DA, 0x60B4, 0x6120, 0x6126, - 0x6115, 0x6123, 0x60F4, 0x6100, 0x610E, 0x612B, 0x614A, 0x6175, - 0x61AC, 0x6194, 0x61A7, 0x61B7, 0x61D4, 0x61F5, 0x5FDD, 0x96B3, - 0x95E9, 0x95EB, 0x95F1, 0x95F3, 0x95F5, 0x95F6, 0x95FC, 0x95FE, - 0x9603, 0x9604, 0x9606, 0x9608, 0x960A, 0x960B, 0x960C, 0x960D, - 0x960F, 0x9612, 0x9615, 0x9616, 0x9617, 0x9619, 0x961A, 0x4E2C, - 0x723F, 0x6215, 0x6C35, 0x6C54, 0x6C5C, 0x6C4A, 0x6CA3, 0x6C85, - 0x6C90, 0x6C94, 0x6C8C, 0x6C68, 0x6C69, 0x6C74, 0x6C76, 0x6C86, - 0x6CA9, 0x6CD0, 0x6CD4, 0x6CAD, 0x6CF7, 0x6CF8, 0x6CF1, 0x6CD7, - 0x6CB2, 0x6CE0, 0x6CD6, 0x6CFA, 0x6CEB, 0x6CEE, 0x6CB1, 0x6CD3, - 0x6CEF, 0x6CFE, 0x6D39, 0x6D27, 0x6D0C, 0x6D43, 0x6D48, 0x6D07, - 0x6D04, 0x6D19, 0x6D0E, 0x6D2B, 0x6D4D, 0x6D2E, 0x6D35, 0x6D1A, - 0x6D4F, 0x6D52, 0x6D54, 0x6D33, 0x6D91, 0x6D6F, 0x6D9E, 0x6DA0, - 0x6D5E, 0x6D93, 0x6D94, 0x6D5C, 0x6D60, 0x6D7C, 0x6D63, 0x6E1A, - 0x6DC7, 0x6DC5, 0x6DDE, 0x6E0E, 0x6DBF, 0x6DE0, 0x6E11, 0x6DE6, - 0x6DDD, 0x6DD9, 0x6E16, 0x6DAB, 0x6E0C, 0x6DAE, 0x6E2B, 0x6E6E, - 0x6E4E, 0x6E6B, 0x6EB2, 0x6E5F, 0x6E86, 0x6E53, 0x6E54, 0x6E32, - 0x6E25, 0x6E44, 0x6EDF, 0x6EB1, 0x6E98, 0x6EE0, 0x6F2D, 0x6EE2, - 0x6EA5, 0x6EA7, 0x6EBD, 0x6EBB, 0x6EB7, 0x6ED7, 0x6EB4, 0x6ECF, - 0x6E8F, 0x6EC2, 0x6E9F, 0x6F62, 0x6F46, 0x6F47, 0x6F24, 0x6F15, - 0x6EF9, 0x6F2F, 0x6F36, 0x6F4B, 0x6F74, 0x6F2A, 0x6F09, 0x6F29, - 0x6F89, 0x6F8D, 0x6F8C, 0x6F78, 0x6F72, 0x6F7C, 0x6F7A, 0x6FD1, - 0x6FC9, 0x6FA7, 0x6FB9, 0x6FB6, 0x6FC2, 0x6FE1, 0x6FEE, 0x6FDE, -plane 26 -at 0x00 - 0x6FE0, 0x6FEF, 0x701A, 0x7023, 0x701B, 0x7039, 0x7035, 0x704F, - 0x705E, 0x5B80, 0x5B84, 0x5B95, 0x5B93, 0x5BA5, 0x5BB8, 0x752F, - 0x9A9E, 0x6434, 0x5BE4, 0x5BEE, 0x8930, 0x5BF0, 0x8E47, 0x8B07, - 0x8FB6, 0x8FD3, 0x8FD5, 0x8FE5, 0x8FEE, 0x8FE4, 0x8FE9, 0x8FE6, - 0x8FF3, 0x8FE8, 0x9005, 0x9004, 0x900B, 0x9026, 0x9011, 0x900D, - 0x9016, 0x9021, 0x9035, 0x9036, 0x902D, 0x902F, 0x9044, 0x9051, - 0x9052, 0x9050, 0x9068, 0x9058, 0x9062, 0x905B, 0x66B9, 0x9074, - 0x907D, 0x9082, 0x9088, 0x9083, 0x908B, 0x5F50, 0x5F57, 0x5F56, - 0x5F58, 0x5C3B, 0x54AB, 0x5C50, 0x5C59, 0x5B71, 0x5C63, 0x5C66, - 0x7FBC, 0x5F2A, 0x5F29, 0x5F2D, 0x8274, 0x5F3C, 0x9B3B, 0x5C6E, - 0x5981, 0x5983, 0x598D, 0x59A9, 0x59AA, 0x59A3, 0x5997, 0x59CA, - 0x59AB, 0x599E, 0x59A4, 0x59D2, 0x59B2, 0x59AF, 0x59D7, 0x59BE, - 0x5A05, 0x5A06, 0x59DD, 0x5A08, 0x59E3, 0x59D8, 0x59F9, 0x5A0C, - 0x5A09, 0x5A32, 0x5A34, 0x5A11, 0x5A23, 0x5A13, 0x5A40, 0x5A67, - 0x5A4A, 0x5A55, 0x5A3C, 0x5A62, 0x5A75, 0x80EC, 0x5AAA, 0x5A9B, - 0x5A77, 0x5A7A, 0x5ABE, 0x5AEB, 0x5AB2, 0x5AD2, 0x5AD4, 0x5AB8, - 0x5AE0, 0x5AE3, 0x5AF1, 0x5AD6, 0x5AE6, 0x5AD8, 0x5ADC, 0x5B09, - 0x5B17, 0x5B16, 0x5B32, 0x5B37, 0x5B40, 0x5C15, 0x5C1C, 0x5B5A, - 0x5B65, 0x5B73, 0x5B51, 0x5B53, 0x5B62, 0x9A75, 0x9A77, 0x9A78, - 0x9A7A, 0x9A7F, 0x9A7D, 0x9A80, 0x9A81, 0x9A85, 0x9A88, 0x9A8A, - 0x9A90, 0x9A92, 0x9A93, 0x9A96, 0x9A98, 0x9A9B, 0x9A9C, 0x9A9D, - 0x9A9F, 0x9AA0, 0x9AA2, 0x9AA3, 0x9AA5, 0x9AA7, 0x7E9F, 0x7EA1, - 0x7EA3, 0x7EA5, 0x7EA8, 0x7EA9, 0x7EAD, 0x7EB0, 0x7EBE, 0x7EC0, - 0x7EC1, 0x7EC2, 0x7EC9, 0x7ECB, 0x7ECC, 0x7ED0, 0x7ED4, 0x7ED7, - 0x7EDB, 0x7EE0, 0x7EE1, 0x7EE8, 0x7EEB, 0x7EEE, 0x7EEF, 0x7EF1, - 0x7EF2, 0x7F0D, 0x7EF6, 0x7EFA, 0x7EFB, 0x7EFE, 0x7F01, 0x7F02, - 0x7F03, 0x7F07, 0x7F08, 0x7F0B, 0x7F0C, 0x7F0F, 0x7F11, 0x7F12, - 0x7F17, 0x7F19, 0x7F1C, 0x7F1B, 0x7F1F, 0x7F21, 0x7F22, 0x7F23, - 0x7F24, 0x7F25, 0x7F26, 0x7F27, 0x7F2A, 0x7F2B, 0x7F2C, 0x7F2D, - 0x7F2F, 0x7F30, 0x7F31, 0x7F32, 0x7F33, 0x7F35, 0x5E7A, 0x757F, - 0x5DDB, 0x753E, 0x9095, 0x738E, 0x7391, 0x73AE, 0x73A2, 0x739F, - 0x73CF, 0x73C2, 0x73D1, 0x73B7, 0x73B3, 0x73C0, 0x73C9, 0x73C8, -plane 27 -at 0x00 - 0x73E5, 0x73D9, 0x987C, 0x740A, 0x73E9, 0x73E7, 0x73DE, 0x73BA, - 0x73F2, 0x740F, 0x742A, 0x745B, 0x7426, 0x7425, 0x7428, 0x7430, - 0x742E, 0x742C, 0x741B, 0x741A, 0x7441, 0x745C, 0x7457, 0x7455, - 0x7459, 0x7477, 0x746D, 0x747E, 0x749C, 0x748E, 0x7480, 0x7481, - 0x7487, 0x748B, 0x749E, 0x74A8, 0x74A9, 0x7490, 0x74A7, 0x74D2, - 0x74BA, 0x97EA, 0x97EB, 0x97EC, 0x674C, 0x6753, 0x675E, 0x6748, - 0x6769, 0x67A5, 0x6787, 0x676A, 0x6773, 0x6798, 0x67A7, 0x6775, - 0x67A8, 0x679E, 0x67AD, 0x678B, 0x6777, 0x677C, 0x67F0, 0x6809, - 0x67D8, 0x680A, 0x67E9, 0x67B0, 0x680C, 0x67D9, 0x67B5, 0x67DA, - 0x67B3, 0x67DD, 0x6800, 0x67C3, 0x67B8, 0x67E2, 0x680E, 0x67C1, - 0x67FD, 0x6832, 0x6833, 0x6860, 0x6861, 0x684E, 0x6862, 0x6844, - 0x6864, 0x6883, 0x681D, 0x6855, 0x6866, 0x6841, 0x6867, 0x6840, - 0x683E, 0x684A, 0x6849, 0x6829, 0x68B5, 0x688F, 0x6874, 0x6877, - 0x6893, 0x686B, 0x68C2, 0x696E, 0x68FC, 0x691F, 0x6920, 0x68F9, - 0x6924, 0x68F0, 0x690B, 0x6901, 0x6957, 0x68E3, 0x6910, 0x6971, - 0x6939, 0x6960, 0x6942, 0x695D, 0x6984, 0x696B, 0x6980, 0x6998, - 0x6978, 0x6934, 0x69CC, 0x6987, 0x6988, 0x69CE, 0x6989, 0x6966, - 0x6963, 0x6979, 0x699B, 0x69A7, 0x69BB, 0x69AB, 0x69AD, 0x69D4, - 0x69B1, 0x69C1, 0x69CA, 0x69DF, 0x6995, 0x69E0, 0x698D, 0x69FF, - 0x6A2F, 0x69ED, 0x6A17, 0x6A18, 0x6A65, 0x69F2, 0x6A44, 0x6A3E, - 0x6AA0, 0x6A50, 0x6A5B, 0x6A35, 0x6A8E, 0x6A79, 0x6A3D, 0x6A28, - 0x6A58, 0x6A7C, 0x6A91, 0x6A90, 0x6AA9, 0x6A97, 0x6AAB, 0x7337, - 0x7352, 0x6B81, 0x6B82, 0x6B87, 0x6B84, 0x6B92, 0x6B93, 0x6B8D, - 0x6B9A, 0x6B9B, 0x6BA1, 0x6BAA, 0x8F6B, 0x8F6D, 0x8F71, 0x8F72, - 0x8F73, 0x8F75, 0x8F76, 0x8F78, 0x8F77, 0x8F79, 0x8F7A, 0x8F7C, - 0x8F7E, 0x8F81, 0x8F82, 0x8F84, 0x8F87, 0x8F8B, 0x8F8D, 0x8F8E, - 0x8F8F, 0x8F98, 0x8F9A, 0x8ECE, 0x620B, 0x6217, 0x621B, 0x621F, - 0x6222, 0x6221, 0x6225, 0x6224, 0x622C, 0x81E7, 0x74EF, 0x74F4, - 0x74FF, 0x750F, 0x7511, 0x7513, 0x6534, 0x65EE, 0x65EF, 0x65F0, - 0x660A, 0x6619, 0x6772, 0x6603, 0x6615, 0x6600, 0x7085, 0x66F7, - 0x661D, 0x6634, 0x6631, 0x6636, 0x6635, 0x8006, 0x665F, 0x6654, - 0x6641, 0x664F, 0x6656, 0x6661, 0x6657, 0x6677, 0x6684, 0x668C, -plane 28 -at 0x00 - 0x66A7, 0x669D, 0x66BE, 0x66DB, 0x66DC, 0x66E6, 0x66E9, 0x8D32, - 0x8D33, 0x8D36, 0x8D3B, 0x8D3D, 0x8D40, 0x8D45, 0x8D46, 0x8D48, - 0x8D49, 0x8D47, 0x8D4D, 0x8D55, 0x8D59, 0x89C7, 0x89CA, 0x89CB, - 0x89CC, 0x89CE, 0x89CF, 0x89D0, 0x89D1, 0x726E, 0x729F, 0x725D, - 0x7266, 0x726F, 0x727E, 0x727F, 0x7284, 0x728B, 0x728D, 0x728F, - 0x7292, 0x6308, 0x6332, 0x63B0, 0x643F, 0x64D8, 0x8004, 0x6BEA, - 0x6BF3, 0x6BFD, 0x6BF5, 0x6BF9, 0x6C05, 0x6C07, 0x6C06, 0x6C0D, - 0x6C15, 0x6C18, 0x6C19, 0x6C1A, 0x6C21, 0x6C29, 0x6C24, 0x6C2A, - 0x6C32, 0x6535, 0x6555, 0x656B, 0x724D, 0x7252, 0x7256, 0x7230, - 0x8662, 0x5216, 0x809F, 0x809C, 0x8093, 0x80BC, 0x670A, 0x80BD, - 0x80B1, 0x80AB, 0x80AD, 0x80B4, 0x80B7, 0x80E7, 0x80E8, 0x80E9, - 0x80EA, 0x80DB, 0x80C2, 0x80C4, 0x80D9, 0x80CD, 0x80D7, 0x6710, - 0x80DD, 0x80EB, 0x80F1, 0x80F4, 0x80ED, 0x810D, 0x810E, 0x80F2, - 0x80FC, 0x6715, 0x8112, 0x8C5A, 0x8136, 0x811E, 0x812C, 0x8118, - 0x8132, 0x8148, 0x814C, 0x8153, 0x8174, 0x8159, 0x815A, 0x8171, - 0x8160, 0x8169, 0x817C, 0x817D, 0x816D, 0x8167, 0x584D, 0x5AB5, - 0x8188, 0x8182, 0x8191, 0x6ED5, 0x81A3, 0x81AA, 0x81CC, 0x6726, - 0x81CA, 0x81BB, 0x81C1, 0x81A6, 0x6B24, 0x6B37, 0x6B39, 0x6B43, - 0x6B46, 0x6B59, 0x98D1, 0x98D2, 0x98D3, 0x98D5, 0x98D9, 0x98DA, - 0x6BB3, 0x5F40, 0x6BC2, 0x89F3, 0x6590, 0x9F51, 0x6593, 0x65BC, - 0x65C6, 0x65C4, 0x65C3, 0x65CC, 0x65CE, 0x65D2, 0x65D6, 0x7080, - 0x709C, 0x7096, 0x709D, 0x70BB, 0x70C0, 0x70B7, 0x70AB, 0x70B1, - 0x70E8, 0x70CA, 0x7110, 0x7113, 0x7116, 0x712F, 0x7131, 0x7173, - 0x715C, 0x7168, 0x7145, 0x7172, 0x714A, 0x7178, 0x717A, 0x7198, - 0x71B3, 0x71B5, 0x71A8, 0x71A0, 0x71E0, 0x71D4, 0x71E7, 0x71F9, - 0x721D, 0x7228, 0x706C, 0x7118, 0x7166, 0x71B9, 0x623E, 0x623D, - 0x6243, 0x6248, 0x6249, 0x793B, 0x7940, 0x7946, 0x7949, 0x795B, - 0x795C, 0x7953, 0x795A, 0x7962, 0x7957, 0x7960, 0x796F, 0x7967, - 0x797A, 0x7985, 0x798A, 0x799A, 0x79A7, 0x79B3, 0x5FD1, 0x5FD0, - 0x603C, 0x605D, 0x605A, 0x6067, 0x6041, 0x6059, 0x6063, 0x60AB, - 0x6106, 0x610D, 0x615D, 0x61A9, 0x619D, 0x61CB, 0x61D1, 0x6206, - 0x8080, 0x807F, 0x6C93, 0x6CF6, 0x6DFC, 0x77F6, 0x77F8, 0x7800, -plane 29 -at 0x00 - 0x7809, 0x7817, 0x7818, 0x7811, 0x65AB, 0x782D, 0x781C, 0x781D, - 0x7839, 0x783A, 0x783B, 0x781F, 0x783C, 0x7825, 0x782C, 0x7823, - 0x7829, 0x784E, 0x786D, 0x7856, 0x7857, 0x7826, 0x7850, 0x7847, - 0x784C, 0x786A, 0x789B, 0x7893, 0x789A, 0x7887, 0x789C, 0x78A1, - 0x78A3, 0x78B2, 0x78B9, 0x78A5, 0x78D4, 0x78D9, 0x78C9, 0x78EC, - 0x78F2, 0x7905, 0x78F4, 0x7913, 0x7924, 0x791E, 0x7934, 0x9F9B, - 0x9EF9, 0x9EFB, 0x9EFC, 0x76F1, 0x7704, 0x770D, 0x76F9, 0x7707, - 0x7708, 0x771A, 0x7722, 0x7719, 0x772D, 0x7726, 0x7735, 0x7738, - 0x7750, 0x7751, 0x7747, 0x7743, 0x775A, 0x7768, 0x7762, 0x7765, - 0x777F, 0x778D, 0x777D, 0x7780, 0x778C, 0x7791, 0x779F, 0x77A0, - 0x77B0, 0x77B5, 0x77BD, 0x753A, 0x7540, 0x754E, 0x754B, 0x7548, - 0x755B, 0x7572, 0x7579, 0x7583, 0x7F58, 0x7F61, 0x7F5F, 0x8A48, - 0x7F68, 0x7F74, 0x7F71, 0x7F79, 0x7F81, 0x7F7E, 0x76CD, 0x76E5, - 0x8832, 0x9485, 0x9486, 0x9487, 0x948B, 0x948A, 0x948C, 0x948D, - 0x948F, 0x9490, 0x9494, 0x9497, 0x9495, 0x949A, 0x949B, 0x949C, - 0x94A3, 0x94A4, 0x94AB, 0x94AA, 0x94AD, 0x94AC, 0x94AF, 0x94B0, - 0x94B2, 0x94B4, 0x94B6, 0x94B7, 0x94B8, 0x94B9, 0x94BA, 0x94BC, - 0x94BD, 0x94BF, 0x94C4, 0x94C8, 0x94C9, 0x94CA, 0x94CB, 0x94CC, - 0x94CD, 0x94CE, 0x94D0, 0x94D1, 0x94D2, 0x94D5, 0x94D6, 0x94D7, - 0x94D9, 0x94D8, 0x94DB, 0x94DE, 0x94DF, 0x94E0, 0x94E2, 0x94E4, - 0x94E5, 0x94E7, 0x94E8, 0x94EA, 0x94E9, 0x94EB, 0x94EE, 0x94EF, - 0x94F3, 0x94F4, 0x94F5, 0x94F7, 0x94F9, 0x94FC, 0x94FD, 0x94FF, - 0x9503, 0x9502, 0x9506, 0x9507, 0x9509, 0x950A, 0x950D, 0x950E, - 0x950F, 0x9512, 0x9513, 0x9514, 0x9515, 0x9516, 0x9518, 0x951B, - 0x951D, 0x951E, 0x951F, 0x9522, 0x952A, 0x952B, 0x9529, 0x952C, - 0x9531, 0x9532, 0x9534, 0x9536, 0x9537, 0x9538, 0x953C, 0x953E, - 0x953F, 0x9542, 0x9535, 0x9544, 0x9545, 0x9546, 0x9549, 0x954C, - 0x954E, 0x954F, 0x9552, 0x9553, 0x9554, 0x9556, 0x9557, 0x9558, - 0x9559, 0x955B, 0x955E, 0x955F, 0x955D, 0x9561, 0x9562, 0x9564, - 0x9565, 0x9566, 0x9567, 0x9568, 0x9569, 0x956A, 0x956B, 0x956C, - 0x956F, 0x9571, 0x9572, 0x9573, 0x953A, 0x77E7, 0x77EC, 0x96C9, - 0x79D5, 0x79ED, 0x79E3, 0x79EB, 0x7A06, 0x5D47, 0x7A03, 0x7A02, -plane 30 -at 0x00 - 0x7A1E, 0x7A14, 0x7A39, 0x7A37, 0x7A51, 0x9ECF, 0x99A5, 0x7A70, - 0x7688, 0x768E, 0x7693, 0x7699, 0x76A4, 0x74DE, 0x74E0, 0x752C, - 0x9E20, 0x9E22, 0x9E28, 0x9E29, 0x9E2A, 0x9E2B, 0x9E2C, 0x9E32, - 0x9E31, 0x9E36, 0x9E38, 0x9E37, 0x9E39, 0x9E3A, 0x9E3E, 0x9E41, - 0x9E42, 0x9E44, 0x9E46, 0x9E47, 0x9E48, 0x9E49, 0x9E4B, 0x9E4C, - 0x9E4E, 0x9E51, 0x9E55, 0x9E57, 0x9E5A, 0x9E5B, 0x9E5C, 0x9E5E, - 0x9E63, 0x9E66, 0x9E67, 0x9E68, 0x9E69, 0x9E6A, 0x9E6B, 0x9E6C, - 0x9E71, 0x9E6D, 0x9E73, 0x7592, 0x7594, 0x7596, 0x75A0, 0x759D, - 0x75AC, 0x75A3, 0x75B3, 0x75B4, 0x75B8, 0x75C4, 0x75B1, 0x75B0, - 0x75C3, 0x75C2, 0x75D6, 0x75CD, 0x75E3, 0x75E8, 0x75E6, 0x75E4, - 0x75EB, 0x75E7, 0x7603, 0x75F1, 0x75FC, 0x75FF, 0x7610, 0x7600, - 0x7605, 0x760C, 0x7617, 0x760A, 0x7625, 0x7618, 0x7615, 0x7619, - 0x761B, 0x763C, 0x7622, 0x7620, 0x7640, 0x762D, 0x7630, 0x763F, - 0x7635, 0x7643, 0x763E, 0x7633, 0x764D, 0x765E, 0x7654, 0x765C, - 0x7656, 0x766B, 0x766F, 0x7FCA, 0x7AE6, 0x7A78, 0x7A79, 0x7A80, - 0x7A86, 0x7A88, 0x7A95, 0x7AA6, 0x7AA0, 0x7AAC, 0x7AA8, 0x7AAD, - 0x7AB3, 0x8864, 0x8869, 0x8872, 0x887D, 0x887F, 0x8882, 0x88A2, - 0x88C6, 0x88B7, 0x88BC, 0x88C9, 0x88E2, 0x88CE, 0x88E3, 0x88E5, - 0x88F1, 0x891A, 0x88FC, 0x88E8, 0x88FE, 0x88F0, 0x8921, 0x8919, - 0x8913, 0x891B, 0x890A, 0x8934, 0x892B, 0x8936, 0x8941, 0x8966, - 0x897B, 0x758B, 0x80E5, 0x76B2, 0x76B4, 0x77DC, 0x8012, 0x8014, - 0x8016, 0x801C, 0x8020, 0x8022, 0x8025, 0x8026, 0x8027, 0x8029, - 0x8028, 0x8031, 0x800B, 0x8035, 0x8043, 0x8046, 0x804D, 0x8052, - 0x8069, 0x8071, 0x8983, 0x9878, 0x9880, 0x9883, 0x9889, 0x988C, - 0x988D, 0x988F, 0x9894, 0x989A, 0x989B, 0x989E, 0x989F, 0x98A1, - 0x98A2, 0x98A5, 0x98A6, 0x864D, 0x8654, 0x866C, 0x866E, 0x867F, - 0x867A, 0x867C, 0x867B, 0x86A8, 0x868D, 0x868B, 0x86AC, 0x869D, - 0x86A7, 0x86A3, 0x86AA, 0x8693, 0x86A9, 0x86B6, 0x86C4, 0x86B5, - 0x86CE, 0x86B0, 0x86BA, 0x86B1, 0x86AF, 0x86C9, 0x86CF, 0x86B4, - 0x86E9, 0x86F1, 0x86F2, 0x86ED, 0x86F3, 0x86D0, 0x8713, 0x86DE, - 0x86F4, 0x86DF, 0x86D8, 0x86D1, 0x8703, 0x8707, 0x86F8, 0x8708, - 0x870A, 0x870D, 0x8709, 0x8723, 0x873B, 0x871E, 0x8725, 0x872E, -plane 31 -at 0x00 - 0x871A, 0x873E, 0x8748, 0x8734, 0x8731, 0x8729, 0x8737, 0x873F, - 0x8782, 0x8722, 0x877D, 0x877E, 0x877B, 0x8760, 0x8770, 0x874C, - 0x876E, 0x878B, 0x8753, 0x8763, 0x877C, 0x8764, 0x8759, 0x8765, - 0x8793, 0x87AF, 0x87A8, 0x87D2, 0x87C6, 0x8788, 0x8785, 0x87AD, - 0x8797, 0x8783, 0x87AB, 0x87E5, 0x87AC, 0x87B5, 0x87B3, 0x87CB, - 0x87D3, 0x87BD, 0x87D1, 0x87C0, 0x87CA, 0x87DB, 0x87EA, 0x87E0, - 0x87EE, 0x8816, 0x8813, 0x87FE, 0x880A, 0x881B, 0x8821, 0x8839, - 0x883C, 0x7F36, 0x7F42, 0x7F44, 0x7F45, 0x8210, 0x7AFA, 0x7AFD, - 0x7B08, 0x7B03, 0x7B04, 0x7B15, 0x7B0A, 0x7B2B, 0x7B0F, 0x7B47, - 0x7B38, 0x7B2A, 0x7B19, 0x7B2E, 0x7B31, 0x7B20, 0x7B25, 0x7B24, - 0x7B33, 0x7B3E, 0x7B1E, 0x7B58, 0x7B5A, 0x7B45, 0x7B75, 0x7B4C, - 0x7B5D, 0x7B60, 0x7B6E, 0x7B7B, 0x7B62, 0x7B72, 0x7B71, 0x7B90, - 0x7BA6, 0x7BA7, 0x7BB8, 0x7BAC, 0x7B9D, 0x7BA8, 0x7B85, 0x7BAA, - 0x7B9C, 0x7BA2, 0x7BAB, 0x7BB4, 0x7BD1, 0x7BC1, 0x7BCC, 0x7BDD, - 0x7BDA, 0x7BE5, 0x7BE6, 0x7BEA, 0x7C0C, 0x7BFE, 0x7BFC, 0x7C0F, - 0x7C16, 0x7C0B, 0x7C1F, 0x7C2A, 0x7C26, 0x7C38, 0x7C41, 0x7C40, - 0x81FE, 0x8201, 0x8202, 0x8204, 0x81EC, 0x8844, 0x8221, 0x8222, - 0x8223, 0x822D, 0x822F, 0x8228, 0x822B, 0x8238, 0x823B, 0x8233, - 0x8234, 0x823E, 0x8244, 0x8249, 0x824B, 0x824F, 0x825A, 0x825F, - 0x8268, 0x887E, 0x8885, 0x8888, 0x88D8, 0x88DF, 0x895E, 0x7F9D, - 0x7F9F, 0x7FA7, 0x7FAF, 0x7FB0, 0x7FB2, 0x7C7C, 0x6549, 0x7C91, - 0x7C9D, 0x7C9C, 0x7C9E, 0x7CA2, 0x7CB2, 0x7CBC, 0x7CBD, 0x7CC1, - 0x7CC7, 0x7CCC, 0x7CCD, 0x7CC8, 0x7CC5, 0x7CD7, 0x7CE8, 0x826E, - 0x66A8, 0x7FBF, 0x7FCE, 0x7FD5, 0x7FE5, 0x7FE1, 0x7FE6, 0x7FE9, - 0x7FEE, 0x7FF3, 0x7CF8, 0x7D77, 0x7DA6, 0x7DAE, 0x7E47, 0x7E9B, - 0x9EB8, 0x9EB4, 0x8D73, 0x8D84, 0x8D94, 0x8D91, 0x8DB1, 0x8D67, - 0x8D6D, 0x8C47, 0x8C49, 0x914A, 0x9150, 0x914E, 0x914F, 0x9164, - 0x9162, 0x9161, 0x9170, 0x9169, 0x916F, 0x917D, 0x917E, 0x9172, - 0x9174, 0x9179, 0x918C, 0x9185, 0x9190, 0x918D, 0x9191, 0x91A2, - 0x91A3, 0x91AA, 0x91AD, 0x91AE, 0x91AF, 0x91B5, 0x91B4, 0x91BA, - 0x8C55, 0x9E7E, 0x8DB8, 0x8DEB, 0x8E05, 0x8E59, 0x8E69, 0x8DB5, - 0x8DBF, 0x8DBC, 0x8DBA, 0x8DC4, 0x8DD6, 0x8DD7, 0x8DDA, 0x8DDE, -plane 32 -at 0x00 - 0x8DCE, 0x8DCF, 0x8DDB, 0x8DC6, 0x8DEC, 0x8DF7, 0x8DF8, 0x8DE3, - 0x8DF9, 0x8DFB, 0x8DE4, 0x8E09, 0x8DFD, 0x8E14, 0x8E1D, 0x8E1F, - 0x8E2C, 0x8E2E, 0x8E23, 0x8E2F, 0x8E3A, 0x8E40, 0x8E39, 0x8E35, - 0x8E3D, 0x8E31, 0x8E49, 0x8E41, 0x8E42, 0x8E51, 0x8E52, 0x8E4A, - 0x8E70, 0x8E76, 0x8E7C, 0x8E6F, 0x8E74, 0x8E85, 0x8E8F, 0x8E94, - 0x8E90, 0x8E9C, 0x8E9E, 0x8C78, 0x8C82, 0x8C8A, 0x8C85, 0x8C98, - 0x8C94, 0x659B, 0x89D6, 0x89DE, 0x89DA, 0x89DC, 0x89E5, 0x89EB, - 0x89EF, 0x8A3E, 0x8B26, 0x9753, 0x96E9, 0x96F3, 0x96EF, 0x9706, - 0x9701, 0x9708, 0x970F, 0x970E, 0x972A, 0x972D, 0x9730, 0x973E, - 0x9F80, 0x9F83, 0x9F85, 0x9F86, 0x9F87, 0x9F88, 0x9F89, 0x9F8A, - 0x9F8C, 0x9EFE, 0x9F0B, 0x9F0D, 0x96B9, 0x96BC, 0x96BD, 0x96CE, - 0x96D2, 0x77BF, 0x96E0, 0x928E, 0x92AE, 0x92C8, 0x933E, 0x936A, - 0x93CA, 0x938F, 0x943E, 0x946B, 0x9C7F, 0x9C82, 0x9C85, 0x9C86, - 0x9C87, 0x9C88, 0x7A23, 0x9C8B, 0x9C8E, 0x9C90, 0x9C91, 0x9C92, - 0x9C94, 0x9C95, 0x9C9A, 0x9C9B, 0x9C9E, 0x9C9F, 0x9CA0, 0x9CA1, - 0x9CA2, 0x9CA3, 0x9CA5, 0x9CA6, 0x9CA7, 0x9CA8, 0x9CA9, 0x9CAB, - 0x9CAD, 0x9CAE, 0x9CB0, 0x9CB1, 0x9CB2, 0x9CB3, 0x9CB4, 0x9CB5, - 0x9CB6, 0x9CB7, 0x9CBA, 0x9CBB, 0x9CBC, 0x9CBD, 0x9CC4, 0x9CC5, - 0x9CC6, 0x9CC7, 0x9CCA, 0x9CCB, 0x9CCC, 0x9CCD, 0x9CCE, 0x9CCF, - 0x9CD0, 0x9CD3, 0x9CD4, 0x9CD5, 0x9CD7, 0x9CD8, 0x9CD9, 0x9CDC, - 0x9CDD, 0x9CDF, 0x9CE2, 0x977C, 0x9785, 0x9791, 0x9792, 0x9794, - 0x97AF, 0x97AB, 0x97A3, 0x97B2, 0x97B4, 0x9AB1, 0x9AB0, 0x9AB7, - 0x9E58, 0x9AB6, 0x9ABA, 0x9ABC, 0x9AC1, 0x9AC0, 0x9AC5, 0x9AC2, - 0x9ACB, 0x9ACC, 0x9AD1, 0x9B45, 0x9B43, 0x9B47, 0x9B49, 0x9B48, - 0x9B4D, 0x9B51, 0x98E8, 0x990D, 0x992E, 0x9955, 0x9954, 0x9ADF, - 0x9AE1, 0x9AE6, 0x9AEF, 0x9AEB, 0x9AFB, 0x9AED, 0x9AF9, 0x9B08, - 0x9B0F, 0x9B13, 0x9B1F, 0x9B23, 0x9EBD, 0x9EBE, 0x7E3B, 0x9E82, - 0x9E87, 0x9E88, 0x9E8B, 0x9E92, 0x93D6, 0x9E9D, 0x9E9F, 0x9EDB, - 0x9EDC, 0x9EDD, 0x9EE0, 0x9EDF, 0x9EE2, 0x9EE9, 0x9EE7, 0x9EE5, - 0x9EEA, 0x9EEF, 0x9F22, 0x9F2C, 0x9F2F, 0x9F39, 0x9F37, 0x9F3D, - 0x9F3E, 0x9F44, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane 33 -at 0x00 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane 34 -at 0x00 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane 35 -at 0x00 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - -# # diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/maps/cugbk.map b/application/third_party/dompdf/lib/ttf2ufm/src/maps/cugbk.map deleted file mode 100644 index 34889ff5..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/maps/cugbk.map +++ /dev/null @@ -1,3185 +0,0 @@ -# -# For Creating Unicode GBK encoding Chinese Type1 -# compact CJK fonts. -# -plane 01 -at 0x00 - 0x4E02, 0x4E04, 0x4E05, 0x4E06, 0x4E0F, 0x4E12, 0x4E17, 0x4E1F, - 0x4E20, 0x4E21, 0x4E23, 0x4E26, 0x4E29, 0x4E2E, 0x4E2F, 0x4E31, - 0x4E33, 0x4E35, 0x4E37, 0x4E3C, 0x4E40, 0x4E41, 0x4E42, 0x4E44, - 0x4E46, 0x4E4A, 0x4E51, 0x4E55, 0x4E57, 0x4E5A, 0x4E5B, 0x4E62, - 0x4E63, 0x4E64, 0x4E65, 0x4E67, 0x4E68, 0x4E6A, 0x4E6B, 0x4E6C, - 0x4E6D, 0x4E6E, 0x4E6F, 0x4E72, 0x4E74, 0x4E75, 0x4E76, 0x4E77, - 0x4E78, 0x4E79, 0x4E7A, 0x4E7B, 0x4E7C, 0x4E7D, 0x4E7F, 0x4E80, - 0x4E81, 0x4E82, 0x4E83, 0x4E84, 0x4E85, 0x4E87, 0x4E8A, 0x4E90, - 0x4E96, 0x4E97, 0x4E99, 0x4E9C, 0x4E9D, 0x4E9E, 0x4EA3, 0x4EAA, - 0x4EAF, 0x4EB0, 0x4EB1, 0x4EB4, 0x4EB6, 0x4EB7, 0x4EB8, 0x4EB9, - 0x4EBC, 0x4EBD, 0x4EBE, 0x4EC8, 0x4ECC, 0x4ECF, 0x4ED0, 0x4ED2, - 0x4EDA, 0x4EDB, 0x4EDC, 0x4EE0, 0x4EE2, 0x4EE6, 0x4EE7, 0x4EE9, - 0x4EED, 0x4EEE, 0x4EEF, 0x4EF1, 0x4EF4, 0x4EF8, 0x4EF9, 0x4EFA, - 0x4EFC, 0x4EFE, 0x4F00, 0x4F02, 0x4F03, 0x4F04, 0x4F05, 0x4F06, - 0x4F07, 0x4F08, 0x4F0B, 0x4F0C, 0x4F12, 0x4F13, 0x4F14, 0x4F15, - 0x4F16, 0x4F1C, 0x4F1D, 0x4F21, 0x4F23, 0x4F28, 0x4F29, 0x4F2C, - 0x4F2D, 0x4F2E, 0x4F31, 0x4F33, 0x4F35, 0x4F37, 0x4F39, 0x4F3B, - 0x4F3E, 0x4F3F, 0x4F40, 0x4F41, 0x4F42, 0x4F44, 0x4F45, 0x4F47, - 0x4F48, 0x4F49, 0x4F4A, 0x4F4B, 0x4F4C, 0x4F52, 0x4F54, 0x4F56, - 0x4F61, 0x4F62, 0x4F66, 0x4F68, 0x4F6A, 0x4F6B, 0x4F6D, 0x4F6E, - 0x4F71, 0x4F72, 0x4F75, 0x4F77, 0x4F78, 0x4F79, 0x4F7A, 0x4F7D, - 0x4F80, 0x4F81, 0x4F82, 0x4F85, 0x4F86, 0x4F87, 0x4F8A, 0x4F8C, - 0x4F8E, 0x4F90, 0x4F92, 0x4F93, 0x4F95, 0x4F96, 0x4F98, 0x4F99, - 0x4F9A, 0x4F9C, 0x4F9E, 0x4F9F, 0x4FA1, 0x4FA2, 0x4FA4, 0x4FAB, - 0x4FAD, 0x4FB0, 0x4FB1, 0x4FB2, 0x4FB3, 0x4FB4, 0x4FB6, 0x4FB7, - 0x4FB8, 0x4FB9, 0x4FBA, 0x4FBB, 0x4FBC, 0x4FBD, 0x4FBE, 0x4FC0, - 0x4FC1, 0x4FC2, 0x4FC6, 0x4FC7, 0x4FC8, 0x4FC9, 0x4FCB, 0x4FCC, - 0x4FCD, 0x4FD2, 0x4FD3, 0x4FD4, 0x4FD5, 0x4FD6, 0x4FD9, 0x4FDB, - 0x4FE0, 0x4FE2, 0x4FE4, 0x4FE5, 0x4FE7, 0x4FEB, 0x4FEC, 0x4FF0, - 0x4FF2, 0x4FF4, 0x4FF5, 0x4FF6, 0x4FF7, 0x4FF9, 0x4FFB, 0x4FFC, - 0x4FFD, 0x4FFF, 0x5000, 0x5001, 0x5002, 0x5003, 0x5004, 0x5005, - 0x5006, 0x5007, 0x5008, 0x5009, 0x500A, 0x500B, 0x500E, 0x5010, -plane 02 -at 0x00 - 0x5011, 0x5013, 0x5015, 0x5016, 0x5017, 0x501B, 0x501D, 0x501E, - 0x5020, 0x5022, 0x5023, 0x5024, 0x5027, 0x502B, 0x502F, 0x5030, - 0x5031, 0x5032, 0x5033, 0x5034, 0x5035, 0x5036, 0x5037, 0x5038, - 0x5039, 0x503B, 0x503D, 0x503F, 0x5040, 0x5041, 0x5042, 0x5044, - 0x5045, 0x5046, 0x5049, 0x504A, 0x504B, 0x504D, 0x5050, 0x5051, - 0x5052, 0x5053, 0x5054, 0x5056, 0x5057, 0x5058, 0x5059, 0x505B, - 0x505D, 0x505E, 0x505F, 0x5060, 0x5061, 0x5062, 0x5063, 0x5064, - 0x5066, 0x5067, 0x5068, 0x5069, 0x506A, 0x506B, 0x506D, 0x506E, - 0x506F, 0x5070, 0x5071, 0x5072, 0x5073, 0x5074, 0x5075, 0x5078, - 0x5079, 0x507A, 0x507C, 0x507D, 0x5081, 0x5082, 0x5083, 0x5084, - 0x5086, 0x5087, 0x5089, 0x508A, 0x508B, 0x508C, 0x508E, 0x508F, - 0x5090, 0x5091, 0x5092, 0x5093, 0x5094, 0x5095, 0x5096, 0x5097, - 0x5098, 0x5099, 0x509A, 0x509B, 0x509C, 0x509D, 0x509E, 0x509F, - 0x50A0, 0x50A1, 0x50A2, 0x50A4, 0x50A6, 0x50AA, 0x50AB, 0x50AD, - 0x50AE, 0x50AF, 0x50B0, 0x50B1, 0x50B3, 0x50B4, 0x50B5, 0x50B6, - 0x50B7, 0x50B8, 0x50B9, 0x50BC, 0x50BD, 0x50BE, 0x50BF, 0x50C0, - 0x50C1, 0x50C2, 0x50C3, 0x50C4, 0x50C5, 0x50C6, 0x50C7, 0x50C8, - 0x50C9, 0x50CA, 0x50CB, 0x50CC, 0x50CD, 0x50CE, 0x50D0, 0x50D1, - 0x50D2, 0x50D3, 0x50D4, 0x50D5, 0x50D7, 0x50D8, 0x50D9, 0x50DB, - 0x50DC, 0x50DD, 0x50DE, 0x50DF, 0x50E0, 0x50E1, 0x50E2, 0x50E3, - 0x50E4, 0x50E5, 0x50E8, 0x50E9, 0x50EA, 0x50EB, 0x50EF, 0x50F0, - 0x50F1, 0x50F2, 0x50F4, 0x50F6, 0x50F7, 0x50F8, 0x50F9, 0x50FA, - 0x50FC, 0x50FD, 0x50FE, 0x50FF, 0x5100, 0x5101, 0x5102, 0x5103, - 0x5104, 0x5105, 0x5108, 0x5109, 0x510A, 0x510C, 0x510D, 0x510E, - 0x510F, 0x5110, 0x5111, 0x5113, 0x5114, 0x5115, 0x5116, 0x5117, - 0x5118, 0x5119, 0x511A, 0x511B, 0x511C, 0x511D, 0x511E, 0x511F, - 0x5120, 0x5122, 0x5123, 0x5124, 0x5125, 0x5126, 0x5127, 0x5128, - 0x5129, 0x512A, 0x512B, 0x512C, 0x512D, 0x512E, 0x512F, 0x5130, - 0x5131, 0x5132, 0x5133, 0x5134, 0x5135, 0x5136, 0x5137, 0x5138, - 0x5139, 0x513A, 0x513B, 0x513C, 0x513D, 0x513E, 0x5142, 0x5147, - 0x514A, 0x514C, 0x514E, 0x514F, 0x5150, 0x5152, 0x5153, 0x5157, - 0x5158, 0x5159, 0x515B, 0x515D, 0x515E, 0x515F, 0x5160, 0x5161, -plane 03 -at 0x00 - 0x5163, 0x5164, 0x5166, 0x5167, 0x5169, 0x516A, 0x516F, 0x5172, - 0x517A, 0x517E, 0x517F, 0x5183, 0x5184, 0x5186, 0x5187, 0x518A, - 0x518B, 0x518E, 0x518F, 0x5190, 0x5191, 0x5193, 0x5194, 0x5198, - 0x519A, 0x519D, 0x519E, 0x519F, 0x51A1, 0x51A3, 0x51A6, 0x51A7, - 0x51A8, 0x51A9, 0x51AA, 0x51AD, 0x51AE, 0x51B4, 0x51B8, 0x51B9, - 0x51BA, 0x51BE, 0x51BF, 0x51C1, 0x51C2, 0x51C3, 0x51C5, 0x51C8, - 0x51CA, 0x51CD, 0x51CE, 0x51D0, 0x51D2, 0x51D3, 0x51D4, 0x51D5, - 0x51D6, 0x51D7, 0x51D8, 0x51D9, 0x51DA, 0x51DC, 0x51DE, 0x51DF, - 0x51E2, 0x51E3, 0x51E5, 0x51E6, 0x51E7, 0x51E8, 0x51E9, 0x51EA, - 0x51EC, 0x51EE, 0x51F1, 0x51F2, 0x51F4, 0x51F7, 0x51FE, 0x5204, - 0x5205, 0x5209, 0x520B, 0x520C, 0x520F, 0x5210, 0x5213, 0x5214, - 0x5215, 0x521C, 0x521E, 0x521F, 0x5221, 0x5222, 0x5223, 0x5225, - 0x5226, 0x5227, 0x522A, 0x522C, 0x522F, 0x5231, 0x5232, 0x5234, - 0x5235, 0x523C, 0x523E, 0x5244, 0x5245, 0x5246, 0x5247, 0x5248, - 0x5249, 0x524B, 0x524E, 0x524F, 0x5252, 0x5253, 0x5255, 0x5257, - 0x5258, 0x5259, 0x525A, 0x525B, 0x525D, 0x525F, 0x5260, 0x5262, - 0x5263, 0x5264, 0x5266, 0x5268, 0x526B, 0x526C, 0x526D, 0x526E, - 0x5270, 0x5271, 0x5273, 0x5274, 0x5275, 0x5276, 0x5277, 0x5278, - 0x5279, 0x527A, 0x527B, 0x527C, 0x527E, 0x5280, 0x5283, 0x5284, - 0x5285, 0x5286, 0x5287, 0x5289, 0x528A, 0x528B, 0x528C, 0x528D, - 0x528E, 0x528F, 0x5291, 0x5292, 0x5294, 0x5295, 0x5296, 0x5297, - 0x5298, 0x5299, 0x529A, 0x529C, 0x52A4, 0x52A5, 0x52A6, 0x52A7, - 0x52AE, 0x52AF, 0x52B0, 0x52B4, 0x52B5, 0x52B6, 0x52B7, 0x52B8, - 0x52B9, 0x52BA, 0x52BB, 0x52BC, 0x52BD, 0x52C0, 0x52C1, 0x52C2, - 0x52C4, 0x52C5, 0x52C6, 0x52C8, 0x52CA, 0x52CC, 0x52CD, 0x52CE, - 0x52CF, 0x52D1, 0x52D3, 0x52D4, 0x52D5, 0x52D7, 0x52D9, 0x52DA, - 0x52DB, 0x52DC, 0x52DD, 0x52DE, 0x52E0, 0x52E1, 0x52E2, 0x52E3, - 0x52E5, 0x52E6, 0x52E7, 0x52E8, 0x52E9, 0x52EA, 0x52EB, 0x52EC, - 0x52ED, 0x52EE, 0x52EF, 0x52F1, 0x52F2, 0x52F3, 0x52F4, 0x52F5, - 0x52F6, 0x52F7, 0x52F8, 0x52FB, 0x52FC, 0x52FD, 0x5301, 0x5302, - 0x5303, 0x5304, 0x5307, 0x5309, 0x530A, 0x530B, 0x530C, 0x530E, - 0x5311, 0x5312, 0x5313, 0x5314, 0x5318, 0x531B, 0x531C, 0x531E, -plane 04 -at 0x00 - 0x531F, 0x5322, 0x5324, 0x5325, 0x5327, 0x5328, 0x5329, 0x532B, - 0x532C, 0x532D, 0x532F, 0x5330, 0x5331, 0x5332, 0x5333, 0x5334, - 0x5335, 0x5336, 0x5337, 0x5338, 0x533C, 0x533D, 0x5340, 0x5342, - 0x5344, 0x5346, 0x534B, 0x534C, 0x534D, 0x5350, 0x5354, 0x5358, - 0x5359, 0x535B, 0x535D, 0x5365, 0x5368, 0x536A, 0x536C, 0x536D, - 0x5372, 0x5376, 0x5379, 0x537B, 0x537C, 0x537D, 0x537E, 0x5380, - 0x5381, 0x5383, 0x5387, 0x5388, 0x538A, 0x538E, 0x538F, 0x5390, - 0x5391, 0x5392, 0x5393, 0x5394, 0x5396, 0x5397, 0x5399, 0x539B, - 0x539C, 0x539E, 0x53A0, 0x53A1, 0x53A4, 0x53A7, 0x53AA, 0x53AB, - 0x53AC, 0x53AD, 0x53AF, 0x53B0, 0x53B1, 0x53B2, 0x53B3, 0x53B4, - 0x53B5, 0x53B7, 0x53B8, 0x53B9, 0x53BA, 0x53BC, 0x53BD, 0x53BE, - 0x53C0, 0x53C3, 0x53C4, 0x53C5, 0x53C6, 0x53C7, 0x53CE, 0x53CF, - 0x53D0, 0x53D2, 0x53D3, 0x53D5, 0x53DA, 0x53DC, 0x53DD, 0x53DE, - 0x53E1, 0x53E2, 0x53E7, 0x53F4, 0x53FA, 0x53FE, 0x53FF, 0x5400, - 0x5402, 0x5405, 0x5407, 0x540B, 0x5414, 0x5418, 0x5419, 0x541A, - 0x541C, 0x5422, 0x5424, 0x5425, 0x542A, 0x5430, 0x5433, 0x5436, - 0x5437, 0x543A, 0x543D, 0x543F, 0x5441, 0x5442, 0x5444, 0x5445, - 0x5447, 0x5449, 0x544C, 0x544D, 0x544E, 0x544F, 0x5451, 0x545A, - 0x545D, 0x545E, 0x545F, 0x5460, 0x5461, 0x5463, 0x5465, 0x5467, - 0x5469, 0x546A, 0x546B, 0x546C, 0x546D, 0x546E, 0x546F, 0x5470, - 0x5474, 0x5479, 0x547A, 0x547E, 0x547F, 0x5481, 0x5483, 0x5485, - 0x5487, 0x5488, 0x5489, 0x548A, 0x548D, 0x5491, 0x5493, 0x5497, - 0x5498, 0x549C, 0x549E, 0x549F, 0x54A0, 0x54A1, 0x54A2, 0x54A5, - 0x54AE, 0x54B0, 0x54B2, 0x54B5, 0x54B6, 0x54B7, 0x54B9, 0x54BA, - 0x54BC, 0x54BE, 0x54C3, 0x54C5, 0x54CA, 0x54CB, 0x54D6, 0x54D8, - 0x54DB, 0x54E0, 0x54E1, 0x54E2, 0x54E3, 0x54E4, 0x54EB, 0x54EC, - 0x54EF, 0x54F0, 0x54F1, 0x54F4, 0x54F5, 0x54F6, 0x54F7, 0x54F8, - 0x54F9, 0x54FB, 0x54FE, 0x5500, 0x5502, 0x5503, 0x5504, 0x5505, - 0x5508, 0x550A, 0x550B, 0x550C, 0x550D, 0x550E, 0x5512, 0x5513, - 0x5515, 0x5516, 0x5517, 0x5518, 0x5519, 0x551A, 0x551C, 0x551D, - 0x551E, 0x551F, 0x5521, 0x5525, 0x5526, 0x5528, 0x5529, 0x552B, - 0x552D, 0x5532, 0x5534, 0x5535, 0x5536, 0x5538, 0x5539, 0x553A, -plane 05 -at 0x00 - 0x553B, 0x553D, 0x5540, 0x5542, 0x5545, 0x5547, 0x5548, 0x554B, - 0x554C, 0x554D, 0x554E, 0x554F, 0x5551, 0x5552, 0x5553, 0x5554, - 0x5557, 0x5558, 0x5559, 0x555A, 0x555B, 0x555D, 0x555E, 0x555F, - 0x5560, 0x5562, 0x5563, 0x5568, 0x5569, 0x556B, 0x556F, 0x5570, - 0x5571, 0x5572, 0x5573, 0x5574, 0x5579, 0x557A, 0x557D, 0x557F, - 0x5585, 0x5586, 0x558C, 0x558D, 0x558E, 0x5590, 0x5592, 0x5593, - 0x5595, 0x5596, 0x5597, 0x559A, 0x559B, 0x559E, 0x55A0, 0x55A1, - 0x55A2, 0x55A3, 0x55A4, 0x55A5, 0x55A6, 0x55A8, 0x55A9, 0x55AA, - 0x55AB, 0x55AC, 0x55AD, 0x55AE, 0x55AF, 0x55B0, 0x55B2, 0x55B4, - 0x55B6, 0x55B8, 0x55BA, 0x55BC, 0x55BF, 0x55C0, 0x55C1, 0x55C2, - 0x55C3, 0x55C6, 0x55C7, 0x55C8, 0x55CA, 0x55CB, 0x55CE, 0x55CF, - 0x55D0, 0x55D5, 0x55D7, 0x55D8, 0x55D9, 0x55DA, 0x55DB, 0x55DE, - 0x55E0, 0x55E2, 0x55E7, 0x55E9, 0x55ED, 0x55EE, 0x55F0, 0x55F1, - 0x55F4, 0x55F6, 0x55F8, 0x55F9, 0x55FA, 0x55FB, 0x55FC, 0x55FF, - 0x5602, 0x5603, 0x5604, 0x5605, 0x5606, 0x5607, 0x560A, 0x560B, - 0x560D, 0x5610, 0x5611, 0x5612, 0x5613, 0x5614, 0x5615, 0x5616, - 0x5617, 0x5619, 0x561A, 0x561C, 0x561D, 0x5620, 0x5621, 0x5622, - 0x5625, 0x5626, 0x5628, 0x5629, 0x562A, 0x562B, 0x562E, 0x562F, - 0x5630, 0x5633, 0x5635, 0x5637, 0x5638, 0x563A, 0x563C, 0x563D, - 0x563E, 0x5640, 0x5641, 0x5642, 0x5643, 0x5644, 0x5645, 0x5646, - 0x5647, 0x5648, 0x5649, 0x564A, 0x564B, 0x564F, 0x5650, 0x5651, - 0x5652, 0x5653, 0x5655, 0x5656, 0x565A, 0x565B, 0x565D, 0x565E, - 0x565F, 0x5660, 0x5661, 0x5663, 0x5665, 0x5666, 0x5667, 0x566D, - 0x566E, 0x566F, 0x5670, 0x5672, 0x5673, 0x5674, 0x5675, 0x5677, - 0x5678, 0x5679, 0x567A, 0x567D, 0x567E, 0x567F, 0x5680, 0x5681, - 0x5682, 0x5683, 0x5684, 0x5687, 0x5688, 0x5689, 0x568A, 0x568B, - 0x568C, 0x568D, 0x5690, 0x5691, 0x5692, 0x5694, 0x5695, 0x5696, - 0x5697, 0x5698, 0x5699, 0x569A, 0x569B, 0x569C, 0x569D, 0x569E, - 0x569F, 0x56A0, 0x56A1, 0x56A2, 0x56A4, 0x56A5, 0x56A6, 0x56A7, - 0x56A8, 0x56A9, 0x56AA, 0x56AB, 0x56AC, 0x56AD, 0x56AE, 0x56B0, - 0x56B1, 0x56B2, 0x56B3, 0x56B4, 0x56B5, 0x56B6, 0x56B8, 0x56B9, - 0x56BA, 0x56BB, 0x56BD, 0x56BE, 0x56BF, 0x56C0, 0x56C1, 0x56C2, -plane 06 -at 0x00 - 0x56C3, 0x56C4, 0x56C5, 0x56C6, 0x56C7, 0x56C8, 0x56C9, 0x56CB, - 0x56CC, 0x56CD, 0x56CE, 0x56CF, 0x56D0, 0x56D1, 0x56D2, 0x56D3, - 0x56D5, 0x56D6, 0x56D8, 0x56D9, 0x56DC, 0x56E3, 0x56E5, 0x56E6, - 0x56E7, 0x56E8, 0x56E9, 0x56EA, 0x56EC, 0x56EE, 0x56EF, 0x56F2, - 0x56F3, 0x56F6, 0x56F7, 0x56F8, 0x56FB, 0x56FC, 0x5700, 0x5701, - 0x5702, 0x5705, 0x5707, 0x570B, 0x570C, 0x570D, 0x570E, 0x570F, - 0x5710, 0x5711, 0x5712, 0x5713, 0x5714, 0x5715, 0x5716, 0x5717, - 0x5718, 0x5719, 0x571A, 0x571B, 0x571D, 0x571E, 0x5720, 0x5721, - 0x5722, 0x5724, 0x5725, 0x5726, 0x5727, 0x572B, 0x5731, 0x5732, - 0x5734, 0x5735, 0x5736, 0x5737, 0x5738, 0x573C, 0x573D, 0x573F, - 0x5741, 0x5743, 0x5744, 0x5745, 0x5746, 0x5748, 0x5749, 0x574B, - 0x5752, 0x5753, 0x5754, 0x5755, 0x5756, 0x5758, 0x5759, 0x5762, - 0x5763, 0x5765, 0x5767, 0x576C, 0x576E, 0x5770, 0x5771, 0x5772, - 0x5774, 0x5775, 0x5778, 0x5779, 0x577A, 0x577D, 0x577E, 0x577F, - 0x5780, 0x5781, 0x5787, 0x5788, 0x5789, 0x578A, 0x578D, 0x578E, - 0x578F, 0x5790, 0x5791, 0x5794, 0x5795, 0x5796, 0x5797, 0x5798, - 0x5799, 0x579A, 0x579C, 0x579D, 0x579E, 0x579F, 0x57A5, 0x57A8, - 0x57AA, 0x57AC, 0x57AF, 0x57B0, 0x57B1, 0x57B3, 0x57B5, 0x57B6, - 0x57B7, 0x57B9, 0x57BA, 0x57BB, 0x57BC, 0x57BD, 0x57BE, 0x57BF, - 0x57C0, 0x57C1, 0x57C4, 0x57C5, 0x57C6, 0x57C7, 0x57C8, 0x57C9, - 0x57CA, 0x57CC, 0x57CD, 0x57D0, 0x57D1, 0x57D3, 0x57D6, 0x57D7, - 0x57DB, 0x57DC, 0x57DE, 0x57E1, 0x57E2, 0x57E3, 0x57E5, 0x57E6, - 0x57E7, 0x57E8, 0x57E9, 0x57EA, 0x57EB, 0x57EC, 0x57EE, 0x57F0, - 0x57F1, 0x57F2, 0x57F3, 0x57F5, 0x57F6, 0x57F7, 0x57FB, 0x57FC, - 0x57FE, 0x57FF, 0x5801, 0x5803, 0x5804, 0x5805, 0x5808, 0x5809, - 0x580A, 0x580C, 0x580E, 0x580F, 0x5810, 0x5812, 0x5813, 0x5814, - 0x5816, 0x5817, 0x5818, 0x581A, 0x581B, 0x581C, 0x581D, 0x581F, - 0x5822, 0x5823, 0x5825, 0x5826, 0x5827, 0x5828, 0x5829, 0x582B, - 0x582C, 0x582D, 0x582E, 0x582F, 0x5831, 0x5832, 0x5833, 0x5834, - 0x5836, 0x5837, 0x5838, 0x5839, 0x583A, 0x583B, 0x583C, 0x583D, - 0x583E, 0x583F, 0x5840, 0x5841, 0x5842, 0x5843, 0x5845, 0x5846, - 0x5847, 0x5848, 0x5849, 0x584A, 0x584B, 0x584E, 0x584F, 0x5850, -plane 07 -at 0x00 - 0x5852, 0x5853, 0x5855, 0x5856, 0x5857, 0x5859, 0x585A, 0x585B, - 0x585C, 0x585D, 0x585F, 0x5860, 0x5861, 0x5862, 0x5863, 0x5864, - 0x5866, 0x5867, 0x5868, 0x5869, 0x586A, 0x586D, 0x586E, 0x586F, - 0x5870, 0x5871, 0x5872, 0x5873, 0x5874, 0x5875, 0x5876, 0x5877, - 0x5878, 0x5879, 0x587A, 0x587B, 0x587C, 0x587D, 0x587F, 0x5882, - 0x5884, 0x5886, 0x5887, 0x5888, 0x588A, 0x588B, 0x588C, 0x588D, - 0x588E, 0x588F, 0x5890, 0x5891, 0x5894, 0x5895, 0x5896, 0x5897, - 0x5898, 0x589B, 0x589C, 0x589D, 0x58A0, 0x58A1, 0x58A2, 0x58A3, - 0x58A4, 0x58A5, 0x58A6, 0x58A7, 0x58AA, 0x58AB, 0x58AC, 0x58AD, - 0x58AE, 0x58AF, 0x58B0, 0x58B1, 0x58B2, 0x58B3, 0x58B4, 0x58B5, - 0x58B6, 0x58B7, 0x58B8, 0x58B9, 0x58BA, 0x58BB, 0x58BD, 0x58BE, - 0x58BF, 0x58C0, 0x58C2, 0x58C3, 0x58C4, 0x58C6, 0x58C7, 0x58C8, - 0x58C9, 0x58CA, 0x58CB, 0x58CC, 0x58CD, 0x58CE, 0x58CF, 0x58D0, - 0x58D2, 0x58D3, 0x58D4, 0x58D6, 0x58D7, 0x58D8, 0x58D9, 0x58DA, - 0x58DB, 0x58DC, 0x58DD, 0x58DE, 0x58DF, 0x58E0, 0x58E1, 0x58E2, - 0x58E3, 0x58E5, 0x58E6, 0x58E7, 0x58E8, 0x58E9, 0x58EA, 0x58ED, - 0x58EF, 0x58F1, 0x58F2, 0x58F4, 0x58F5, 0x58F7, 0x58F8, 0x58FA, - 0x58FB, 0x58FC, 0x58FD, 0x58FE, 0x58FF, 0x5900, 0x5901, 0x5903, - 0x5905, 0x5906, 0x5908, 0x5909, 0x590A, 0x590B, 0x590C, 0x590E, - 0x5910, 0x5911, 0x5912, 0x5913, 0x5917, 0x5918, 0x591B, 0x591D, - 0x591E, 0x5920, 0x5921, 0x5922, 0x5923, 0x5926, 0x5928, 0x592C, - 0x5930, 0x5932, 0x5933, 0x5935, 0x5936, 0x593B, 0x593D, 0x593E, - 0x593F, 0x5940, 0x5943, 0x5945, 0x5946, 0x594A, 0x594C, 0x594D, - 0x5950, 0x5952, 0x5953, 0x5959, 0x595B, 0x595C, 0x595D, 0x595E, - 0x595F, 0x5961, 0x5963, 0x5964, 0x5966, 0x5967, 0x5968, 0x5969, - 0x596A, 0x596B, 0x596C, 0x596D, 0x596E, 0x596F, 0x5970, 0x5971, - 0x5972, 0x5975, 0x5977, 0x597A, 0x597B, 0x597C, 0x597E, 0x597F, - 0x5980, 0x5985, 0x5989, 0x598B, 0x598C, 0x598E, 0x598F, 0x5990, - 0x5991, 0x5994, 0x5995, 0x5998, 0x599A, 0x599B, 0x599C, 0x599D, - 0x599F, 0x59A0, 0x59A1, 0x59A2, 0x59A6, 0x59A7, 0x59AC, 0x59AD, - 0x59B0, 0x59B1, 0x59B3, 0x59B4, 0x59B5, 0x59B6, 0x59B7, 0x59B8, - 0x59BA, 0x59BC, 0x59BD, 0x59BF, 0x59C0, 0x59C1, 0x59C2, 0x59C3, -plane 08 -at 0x00 - 0x59C4, 0x59C5, 0x59C7, 0x59C8, 0x59C9, 0x59CC, 0x59CD, 0x59CE, - 0x59CF, 0x59D5, 0x59D6, 0x59D9, 0x59DB, 0x59DE, 0x59DF, 0x59E0, - 0x59E1, 0x59E2, 0x59E4, 0x59E6, 0x59E7, 0x59E9, 0x59EA, 0x59EB, - 0x59ED, 0x59EE, 0x59EF, 0x59F0, 0x59F1, 0x59F2, 0x59F3, 0x59F4, - 0x59F5, 0x59F6, 0x59F7, 0x59F8, 0x59FA, 0x59FC, 0x59FD, 0x59FE, - 0x5A00, 0x5A02, 0x5A0A, 0x5A0B, 0x5A0D, 0x5A0E, 0x5A0F, 0x5A10, - 0x5A12, 0x5A14, 0x5A15, 0x5A16, 0x5A17, 0x5A19, 0x5A1A, 0x5A1B, - 0x5A1D, 0x5A1E, 0x5A21, 0x5A22, 0x5A24, 0x5A26, 0x5A27, 0x5A28, - 0x5A2A, 0x5A2B, 0x5A2C, 0x5A2D, 0x5A2E, 0x5A2F, 0x5A30, 0x5A33, - 0x5A35, 0x5A37, 0x5A38, 0x5A39, 0x5A3A, 0x5A3B, 0x5A3D, 0x5A3E, - 0x5A3F, 0x5A41, 0x5A42, 0x5A43, 0x5A44, 0x5A45, 0x5A47, 0x5A48, - 0x5A4B, 0x5A4C, 0x5A4D, 0x5A4E, 0x5A4F, 0x5A50, 0x5A51, 0x5A52, - 0x5A53, 0x5A54, 0x5A56, 0x5A57, 0x5A58, 0x5A59, 0x5A5B, 0x5A5C, - 0x5A5D, 0x5A5E, 0x5A5F, 0x5A60, 0x5A61, 0x5A63, 0x5A64, 0x5A65, - 0x5A66, 0x5A68, 0x5A69, 0x5A6B, 0x5A6C, 0x5A6D, 0x5A6E, 0x5A6F, - 0x5A70, 0x5A71, 0x5A72, 0x5A73, 0x5A78, 0x5A79, 0x5A7B, 0x5A7C, - 0x5A7D, 0x5A7E, 0x5A80, 0x5A81, 0x5A82, 0x5A83, 0x5A84, 0x5A85, - 0x5A86, 0x5A87, 0x5A88, 0x5A89, 0x5A8A, 0x5A8B, 0x5A8C, 0x5A8D, - 0x5A8E, 0x5A8F, 0x5A90, 0x5A91, 0x5A93, 0x5A94, 0x5A95, 0x5A96, - 0x5A97, 0x5A98, 0x5A99, 0x5A9C, 0x5A9D, 0x5A9E, 0x5A9F, 0x5AA0, - 0x5AA1, 0x5AA2, 0x5AA3, 0x5AA4, 0x5AA5, 0x5AA6, 0x5AA7, 0x5AA8, - 0x5AA9, 0x5AAB, 0x5AAC, 0x5AAD, 0x5AAE, 0x5AAF, 0x5AB0, 0x5AB1, - 0x5AB4, 0x5AB6, 0x5AB7, 0x5AB9, 0x5ABA, 0x5ABB, 0x5ABC, 0x5ABD, - 0x5ABF, 0x5AC0, 0x5AC3, 0x5AC4, 0x5AC5, 0x5AC6, 0x5AC7, 0x5AC8, - 0x5ACA, 0x5ACB, 0x5ACD, 0x5ACE, 0x5ACF, 0x5AD0, 0x5AD1, 0x5AD3, - 0x5AD5, 0x5AD7, 0x5AD9, 0x5ADA, 0x5ADB, 0x5ADD, 0x5ADE, 0x5ADF, - 0x5AE2, 0x5AE4, 0x5AE5, 0x5AE7, 0x5AE8, 0x5AEA, 0x5AEC, 0x5AED, - 0x5AEE, 0x5AEF, 0x5AF0, 0x5AF2, 0x5AF3, 0x5AF4, 0x5AF5, 0x5AF6, - 0x5AF7, 0x5AF8, 0x5AF9, 0x5AFA, 0x5AFB, 0x5AFC, 0x5AFD, 0x5AFE, - 0x5AFF, 0x5B00, 0x5B01, 0x5B02, 0x5B03, 0x5B04, 0x5B05, 0x5B06, - 0x5B07, 0x5B08, 0x5B0A, 0x5B0B, 0x5B0C, 0x5B0D, 0x5B0E, 0x5B0F, - 0x5B10, 0x5B11, 0x5B12, 0x5B13, 0x5B14, 0x5B15, 0x5B18, 0x5B19, -plane 09 -at 0x00 - 0x5B1A, 0x5B1B, 0x5B1C, 0x5B1D, 0x5B1E, 0x5B1F, 0x5B20, 0x5B21, - 0x5B22, 0x5B23, 0x5B24, 0x5B25, 0x5B26, 0x5B27, 0x5B28, 0x5B29, - 0x5B2A, 0x5B2B, 0x5B2C, 0x5B2D, 0x5B2E, 0x5B2F, 0x5B30, 0x5B31, - 0x5B33, 0x5B35, 0x5B36, 0x5B38, 0x5B39, 0x5B3A, 0x5B3B, 0x5B3C, - 0x5B3D, 0x5B3E, 0x5B3F, 0x5B41, 0x5B42, 0x5B43, 0x5B44, 0x5B45, - 0x5B46, 0x5B47, 0x5B48, 0x5B49, 0x5B4A, 0x5B4B, 0x5B4C, 0x5B4D, - 0x5B4E, 0x5B4F, 0x5B52, 0x5B56, 0x5B5E, 0x5B60, 0x5B61, 0x5B67, - 0x5B68, 0x5B6B, 0x5B6D, 0x5B6E, 0x5B6F, 0x5B72, 0x5B74, 0x5B76, - 0x5B77, 0x5B78, 0x5B79, 0x5B7B, 0x5B7C, 0x5B7E, 0x5B7F, 0x5B82, - 0x5B86, 0x5B8A, 0x5B8D, 0x5B8E, 0x5B90, 0x5B91, 0x5B92, 0x5B94, - 0x5B96, 0x5B9F, 0x5BA7, 0x5BA8, 0x5BA9, 0x5BAC, 0x5BAD, 0x5BAE, - 0x5BAF, 0x5BB1, 0x5BB2, 0x5BB7, 0x5BBA, 0x5BBB, 0x5BBC, 0x5BC0, - 0x5BC1, 0x5BC3, 0x5BC8, 0x5BC9, 0x5BCA, 0x5BCB, 0x5BCD, 0x5BCE, - 0x5BCF, 0x5BD1, 0x5BD4, 0x5BD5, 0x5BD6, 0x5BD7, 0x5BD8, 0x5BD9, - 0x5BDA, 0x5BDB, 0x5BDC, 0x5BE0, 0x5BE2, 0x5BE3, 0x5BE6, 0x5BE7, - 0x5BE9, 0x5BEA, 0x5BEB, 0x5BEC, 0x5BED, 0x5BEF, 0x5BF1, 0x5BF2, - 0x5BF3, 0x5BF4, 0x5BF5, 0x5BF6, 0x5BF7, 0x5BFD, 0x5BFE, 0x5C00, - 0x5C02, 0x5C03, 0x5C05, 0x5C07, 0x5C08, 0x5C0B, 0x5C0C, 0x5C0D, - 0x5C0E, 0x5C10, 0x5C12, 0x5C13, 0x5C17, 0x5C19, 0x5C1B, 0x5C1E, - 0x5C1F, 0x5C20, 0x5C21, 0x5C23, 0x5C26, 0x5C28, 0x5C29, 0x5C2A, - 0x5C2B, 0x5C2D, 0x5C2E, 0x5C2F, 0x5C30, 0x5C32, 0x5C33, 0x5C35, - 0x5C36, 0x5C37, 0x5C43, 0x5C44, 0x5C46, 0x5C47, 0x5C4C, 0x5C4D, - 0x5C52, 0x5C53, 0x5C54, 0x5C56, 0x5C57, 0x5C58, 0x5C5A, 0x5C5B, - 0x5C5C, 0x5C5D, 0x5C5F, 0x5C62, 0x5C64, 0x5C67, 0x5C68, 0x5C69, - 0x5C6A, 0x5C6B, 0x5C6C, 0x5C6D, 0x5C70, 0x5C72, 0x5C73, 0x5C74, - 0x5C75, 0x5C76, 0x5C77, 0x5C78, 0x5C7B, 0x5C7C, 0x5C7D, 0x5C7E, - 0x5C80, 0x5C83, 0x5C84, 0x5C85, 0x5C86, 0x5C87, 0x5C89, 0x5C8A, - 0x5C8B, 0x5C8E, 0x5C8F, 0x5C92, 0x5C93, 0x5C95, 0x5C9D, 0x5C9E, - 0x5C9F, 0x5CA0, 0x5CA1, 0x5CA4, 0x5CA5, 0x5CA6, 0x5CA7, 0x5CA8, - 0x5CAA, 0x5CAE, 0x5CAF, 0x5CB0, 0x5CB2, 0x5CB4, 0x5CB6, 0x5CB9, - 0x5CBA, 0x5CBB, 0x5CBC, 0x5CBE, 0x5CC0, 0x5CC2, 0x5CC3, 0x5CC5, - 0x5CC6, 0x5CC7, 0x5CC8, 0x5CC9, 0x5CCA, 0x5CCC, 0x5CCD, 0x5CCE, -plane 10 -at 0x00 - 0x5CCF, 0x5CD0, 0x5CD1, 0x5CD3, 0x5CD4, 0x5CD5, 0x5CD6, 0x5CD7, - 0x5CD8, 0x5CDA, 0x5CDB, 0x5CDC, 0x5CDD, 0x5CDE, 0x5CDF, 0x5CE0, - 0x5CE2, 0x5CE3, 0x5CE7, 0x5CE9, 0x5CEB, 0x5CEC, 0x5CEE, 0x5CEF, - 0x5CF1, 0x5CF2, 0x5CF3, 0x5CF4, 0x5CF5, 0x5CF6, 0x5CF7, 0x5CF8, - 0x5CF9, 0x5CFA, 0x5CFC, 0x5CFD, 0x5CFE, 0x5CFF, 0x5D00, 0x5D01, - 0x5D04, 0x5D05, 0x5D08, 0x5D09, 0x5D0A, 0x5D0B, 0x5D0C, 0x5D0D, - 0x5D0F, 0x5D10, 0x5D11, 0x5D12, 0x5D13, 0x5D15, 0x5D17, 0x5D18, - 0x5D19, 0x5D1A, 0x5D1C, 0x5D1D, 0x5D1F, 0x5D20, 0x5D21, 0x5D22, - 0x5D23, 0x5D25, 0x5D28, 0x5D2A, 0x5D2B, 0x5D2C, 0x5D2F, 0x5D30, - 0x5D31, 0x5D32, 0x5D33, 0x5D35, 0x5D36, 0x5D37, 0x5D38, 0x5D39, - 0x5D3A, 0x5D3B, 0x5D3C, 0x5D3F, 0x5D40, 0x5D41, 0x5D42, 0x5D43, - 0x5D44, 0x5D45, 0x5D46, 0x5D48, 0x5D49, 0x5D4D, 0x5D4E, 0x5D4F, - 0x5D50, 0x5D51, 0x5D52, 0x5D53, 0x5D54, 0x5D55, 0x5D56, 0x5D57, - 0x5D59, 0x5D5A, 0x5D5C, 0x5D5E, 0x5D5F, 0x5D60, 0x5D61, 0x5D62, - 0x5D63, 0x5D64, 0x5D65, 0x5D66, 0x5D67, 0x5D68, 0x5D6A, 0x5D6D, - 0x5D6E, 0x5D70, 0x5D71, 0x5D72, 0x5D73, 0x5D75, 0x5D76, 0x5D77, - 0x5D78, 0x5D79, 0x5D7A, 0x5D7B, 0x5D7C, 0x5D7D, 0x5D7E, 0x5D7F, - 0x5D80, 0x5D81, 0x5D83, 0x5D84, 0x5D85, 0x5D86, 0x5D87, 0x5D88, - 0x5D89, 0x5D8A, 0x5D8B, 0x5D8C, 0x5D8D, 0x5D8E, 0x5D8F, 0x5D90, - 0x5D91, 0x5D92, 0x5D93, 0x5D94, 0x5D95, 0x5D96, 0x5D97, 0x5D98, - 0x5D9A, 0x5D9B, 0x5D9C, 0x5D9E, 0x5D9F, 0x5DA0, 0x5DA1, 0x5DA2, - 0x5DA3, 0x5DA4, 0x5DA5, 0x5DA6, 0x5DA7, 0x5DA8, 0x5DA9, 0x5DAA, - 0x5DAB, 0x5DAC, 0x5DAD, 0x5DAE, 0x5DAF, 0x5DB0, 0x5DB1, 0x5DB2, - 0x5DB3, 0x5DB4, 0x5DB5, 0x5DB6, 0x5DB8, 0x5DB9, 0x5DBA, 0x5DBB, - 0x5DBC, 0x5DBD, 0x5DBE, 0x5DBF, 0x5DC0, 0x5DC1, 0x5DC2, 0x5DC3, - 0x5DC4, 0x5DC6, 0x5DC7, 0x5DC8, 0x5DC9, 0x5DCA, 0x5DCB, 0x5DCC, - 0x5DCE, 0x5DCF, 0x5DD0, 0x5DD1, 0x5DD2, 0x5DD3, 0x5DD4, 0x5DD5, - 0x5DD6, 0x5DD7, 0x5DD8, 0x5DD9, 0x5DDA, 0x5DDC, 0x5DDF, 0x5DE0, - 0x5DE3, 0x5DE4, 0x5DEA, 0x5DEC, 0x5DED, 0x5DF0, 0x5DF5, 0x5DF6, - 0x5DF8, 0x5DF9, 0x5DFA, 0x5DFB, 0x5DFC, 0x5DFF, 0x5E00, 0x5E04, - 0x5E07, 0x5E09, 0x5E0A, 0x5E0B, 0x5E0D, 0x5E0E, 0x5E12, 0x5E13, - 0x5E17, 0x5E1E, 0x5E1F, 0x5E20, 0x5E21, 0x5E22, 0x5E23, 0x5E24, -plane 11 -at 0x00 - 0x5E25, 0x5E28, 0x5E29, 0x5E2A, 0x5E2B, 0x5E2C, 0x5E2F, 0x5E30, - 0x5E32, 0x5E33, 0x5E34, 0x5E35, 0x5E36, 0x5E39, 0x5E3A, 0x5E3E, - 0x5E3F, 0x5E40, 0x5E41, 0x5E43, 0x5E46, 0x5E47, 0x5E48, 0x5E49, - 0x5E4A, 0x5E4B, 0x5E4D, 0x5E4E, 0x5E4F, 0x5E50, 0x5E51, 0x5E52, - 0x5E53, 0x5E56, 0x5E57, 0x5E58, 0x5E59, 0x5E5A, 0x5E5C, 0x5E5D, - 0x5E5F, 0x5E60, 0x5E63, 0x5E64, 0x5E65, 0x5E66, 0x5E67, 0x5E68, - 0x5E69, 0x5E6A, 0x5E6B, 0x5E6C, 0x5E6D, 0x5E6E, 0x5E6F, 0x5E70, - 0x5E71, 0x5E75, 0x5E77, 0x5E79, 0x5E7E, 0x5E81, 0x5E82, 0x5E83, - 0x5E85, 0x5E88, 0x5E89, 0x5E8C, 0x5E8D, 0x5E8E, 0x5E92, 0x5E98, - 0x5E9B, 0x5E9D, 0x5EA1, 0x5EA2, 0x5EA3, 0x5EA4, 0x5EA8, 0x5EA9, - 0x5EAA, 0x5EAB, 0x5EAC, 0x5EAE, 0x5EAF, 0x5EB0, 0x5EB1, 0x5EB2, - 0x5EB4, 0x5EBA, 0x5EBB, 0x5EBC, 0x5EBD, 0x5EBF, 0x5EC0, 0x5EC1, - 0x5EC2, 0x5EC3, 0x5EC4, 0x5EC5, 0x5EC6, 0x5EC7, 0x5EC8, 0x5ECB, - 0x5ECC, 0x5ECD, 0x5ECE, 0x5ECF, 0x5ED0, 0x5ED4, 0x5ED5, 0x5ED7, - 0x5ED8, 0x5ED9, 0x5EDA, 0x5EDC, 0x5EDD, 0x5EDE, 0x5EDF, 0x5EE0, - 0x5EE1, 0x5EE2, 0x5EE3, 0x5EE4, 0x5EE5, 0x5EE6, 0x5EE7, 0x5EE9, - 0x5EEB, 0x5EEC, 0x5EED, 0x5EEE, 0x5EEF, 0x5EF0, 0x5EF1, 0x5EF2, - 0x5EF3, 0x5EF5, 0x5EF8, 0x5EF9, 0x5EFB, 0x5EFC, 0x5EFD, 0x5F05, - 0x5F06, 0x5F07, 0x5F09, 0x5F0C, 0x5F0D, 0x5F0E, 0x5F10, 0x5F12, - 0x5F14, 0x5F16, 0x5F19, 0x5F1A, 0x5F1C, 0x5F1D, 0x5F1E, 0x5F21, - 0x5F22, 0x5F23, 0x5F24, 0x5F28, 0x5F2B, 0x5F2C, 0x5F2E, 0x5F30, - 0x5F32, 0x5F33, 0x5F34, 0x5F35, 0x5F36, 0x5F37, 0x5F38, 0x5F3B, - 0x5F3D, 0x5F3E, 0x5F3F, 0x5F41, 0x5F42, 0x5F43, 0x5F44, 0x5F45, - 0x5F46, 0x5F47, 0x5F48, 0x5F49, 0x5F4A, 0x5F4B, 0x5F4C, 0x5F4D, - 0x5F4E, 0x5F4F, 0x5F51, 0x5F54, 0x5F59, 0x5F5A, 0x5F5B, 0x5F5C, - 0x5F5E, 0x5F5F, 0x5F60, 0x5F63, 0x5F65, 0x5F67, 0x5F68, 0x5F6B, - 0x5F6E, 0x5F6F, 0x5F72, 0x5F74, 0x5F75, 0x5F76, 0x5F78, 0x5F7A, - 0x5F7D, 0x5F7E, 0x5F7F, 0x5F83, 0x5F86, 0x5F8D, 0x5F8E, 0x5F8F, - 0x5F91, 0x5F93, 0x5F94, 0x5F96, 0x5F9A, 0x5F9B, 0x5F9D, 0x5F9E, - 0x5F9F, 0x5FA0, 0x5FA2, 0x5FA3, 0x5FA4, 0x5FA5, 0x5FA6, 0x5FA7, - 0x5FA9, 0x5FAB, 0x5FAC, 0x5FAF, 0x5FB0, 0x5FB1, 0x5FB2, 0x5FB3, - 0x5FB4, 0x5FB6, 0x5FB8, 0x5FB9, 0x5FBA, 0x5FBB, 0x5FBE, 0x5FBF, -plane 12 -at 0x00 - 0x5FC0, 0x5FC1, 0x5FC2, 0x5FC7, 0x5FC8, 0x5FCA, 0x5FCB, 0x5FCE, - 0x5FD3, 0x5FD4, 0x5FD5, 0x5FDA, 0x5FDB, 0x5FDC, 0x5FDE, 0x5FDF, - 0x5FE2, 0x5FE3, 0x5FE5, 0x5FE6, 0x5FE8, 0x5FE9, 0x5FEC, 0x5FEF, - 0x5FF0, 0x5FF2, 0x5FF3, 0x5FF4, 0x5FF6, 0x5FF7, 0x5FF9, 0x5FFA, - 0x5FFC, 0x6007, 0x6008, 0x6009, 0x600B, 0x600C, 0x6010, 0x6011, - 0x6013, 0x6017, 0x6018, 0x601A, 0x601E, 0x601F, 0x6022, 0x6023, - 0x6024, 0x602C, 0x602D, 0x602E, 0x6030, 0x6031, 0x6032, 0x6033, - 0x6034, 0x6036, 0x6037, 0x6038, 0x6039, 0x603A, 0x603D, 0x603E, - 0x6040, 0x6044, 0x6045, 0x6046, 0x6047, 0x6048, 0x6049, 0x604A, - 0x604C, 0x604E, 0x604F, 0x6051, 0x6053, 0x6054, 0x6056, 0x6057, - 0x6058, 0x605B, 0x605C, 0x605E, 0x605F, 0x6060, 0x6061, 0x6065, - 0x6066, 0x606E, 0x6071, 0x6072, 0x6074, 0x6075, 0x6077, 0x607E, - 0x6080, 0x6081, 0x6082, 0x6085, 0x6086, 0x6087, 0x6088, 0x608A, - 0x608B, 0x608E, 0x608F, 0x6090, 0x6091, 0x6093, 0x6095, 0x6097, - 0x6098, 0x6099, 0x609C, 0x609E, 0x60A1, 0x60A2, 0x60A4, 0x60A5, - 0x60A7, 0x60A9, 0x60AA, 0x60AE, 0x60B0, 0x60B3, 0x60B5, 0x60B6, - 0x60B7, 0x60B9, 0x60BA, 0x60BD, 0x60BE, 0x60BF, 0x60C0, 0x60C1, - 0x60C2, 0x60C3, 0x60C4, 0x60C7, 0x60C8, 0x60C9, 0x60CC, 0x60CD, - 0x60CE, 0x60CF, 0x60D0, 0x60D2, 0x60D3, 0x60D4, 0x60D6, 0x60D7, - 0x60D9, 0x60DB, 0x60DE, 0x60E1, 0x60E2, 0x60E3, 0x60E4, 0x60E5, - 0x60EA, 0x60F1, 0x60F2, 0x60F5, 0x60F7, 0x60F8, 0x60FB, 0x60FC, - 0x60FD, 0x60FE, 0x60FF, 0x6102, 0x6103, 0x6104, 0x6105, 0x6107, - 0x610A, 0x610B, 0x610C, 0x6110, 0x6111, 0x6112, 0x6113, 0x6114, - 0x6116, 0x6117, 0x6118, 0x6119, 0x611B, 0x611C, 0x611D, 0x611E, - 0x6121, 0x6122, 0x6125, 0x6128, 0x6129, 0x612A, 0x612C, 0x612D, - 0x612E, 0x612F, 0x6130, 0x6131, 0x6132, 0x6133, 0x6134, 0x6135, - 0x6136, 0x6137, 0x6138, 0x6139, 0x613A, 0x613B, 0x613C, 0x613D, - 0x613E, 0x6140, 0x6141, 0x6142, 0x6143, 0x6144, 0x6145, 0x6146, - 0x6147, 0x6149, 0x614B, 0x614D, 0x614F, 0x6150, 0x6152, 0x6153, - 0x6154, 0x6156, 0x6157, 0x6158, 0x6159, 0x615A, 0x615B, 0x615C, - 0x615E, 0x615F, 0x6160, 0x6161, 0x6163, 0x6164, 0x6165, 0x6166, - 0x6169, 0x616A, 0x616B, 0x616C, 0x616D, 0x616E, 0x616F, 0x6171, -plane 13 -at 0x00 - 0x6172, 0x6173, 0x6174, 0x6176, 0x6178, 0x6179, 0x617A, 0x617B, - 0x617C, 0x617D, 0x617E, 0x617F, 0x6180, 0x6181, 0x6182, 0x6183, - 0x6184, 0x6185, 0x6186, 0x6187, 0x6188, 0x6189, 0x618A, 0x618C, - 0x618D, 0x618F, 0x6190, 0x6191, 0x6192, 0x6193, 0x6195, 0x6196, - 0x6197, 0x6198, 0x6199, 0x619A, 0x619B, 0x619C, 0x619E, 0x619F, - 0x61A0, 0x61A1, 0x61A2, 0x61A3, 0x61A4, 0x61A5, 0x61A6, 0x61AA, - 0x61AB, 0x61AD, 0x61AE, 0x61AF, 0x61B0, 0x61B1, 0x61B2, 0x61B3, - 0x61B4, 0x61B5, 0x61B6, 0x61B8, 0x61B9, 0x61BA, 0x61BB, 0x61BC, - 0x61BD, 0x61BF, 0x61C0, 0x61C1, 0x61C3, 0x61C4, 0x61C5, 0x61C6, - 0x61C7, 0x61C9, 0x61CC, 0x61CD, 0x61CE, 0x61CF, 0x61D0, 0x61D3, - 0x61D5, 0x61D6, 0x61D7, 0x61D8, 0x61D9, 0x61DA, 0x61DB, 0x61DC, - 0x61DD, 0x61DE, 0x61DF, 0x61E0, 0x61E1, 0x61E2, 0x61E3, 0x61E4, - 0x61E5, 0x61E7, 0x61E8, 0x61E9, 0x61EA, 0x61EB, 0x61EC, 0x61ED, - 0x61EE, 0x61EF, 0x61F0, 0x61F1, 0x61F2, 0x61F3, 0x61F4, 0x61F6, - 0x61F7, 0x61F8, 0x61F9, 0x61FA, 0x61FB, 0x61FC, 0x61FD, 0x61FE, - 0x6200, 0x6201, 0x6202, 0x6203, 0x6204, 0x6205, 0x6207, 0x6209, - 0x6213, 0x6214, 0x6219, 0x621C, 0x621D, 0x621E, 0x6220, 0x6223, - 0x6226, 0x6227, 0x6228, 0x6229, 0x622B, 0x622D, 0x622F, 0x6230, - 0x6231, 0x6232, 0x6235, 0x6236, 0x6238, 0x6239, 0x623A, 0x623B, - 0x623C, 0x6242, 0x6244, 0x6245, 0x6246, 0x624A, 0x624F, 0x6250, - 0x6255, 0x6256, 0x6257, 0x6259, 0x625A, 0x625C, 0x625D, 0x625E, - 0x625F, 0x6260, 0x6261, 0x6262, 0x6264, 0x6265, 0x6268, 0x6271, - 0x6272, 0x6274, 0x6275, 0x6277, 0x6278, 0x627A, 0x627B, 0x627D, - 0x6281, 0x6282, 0x6283, 0x6285, 0x6286, 0x6287, 0x6288, 0x628B, - 0x628C, 0x628D, 0x628E, 0x628F, 0x6290, 0x6294, 0x6299, 0x629C, - 0x629D, 0x629E, 0x62A3, 0x62A6, 0x62A7, 0x62A9, 0x62AA, 0x62AD, - 0x62AE, 0x62AF, 0x62B0, 0x62B2, 0x62B3, 0x62B4, 0x62B6, 0x62B7, - 0x62B8, 0x62BA, 0x62BE, 0x62C0, 0x62C1, 0x62C3, 0x62CB, 0x62CF, - 0x62D1, 0x62D5, 0x62DD, 0x62DE, 0x62E0, 0x62E1, 0x62E4, 0x62EA, - 0x62EB, 0x62F0, 0x62F2, 0x62F5, 0x62F8, 0x62F9, 0x62FA, 0x62FB, - 0x6300, 0x6303, 0x6304, 0x6305, 0x6306, 0x630A, 0x630B, 0x630C, - 0x630D, 0x630F, 0x6310, 0x6312, 0x6313, 0x6314, 0x6315, 0x6317, -plane 14 -at 0x00 - 0x6318, 0x6319, 0x631C, 0x6326, 0x6327, 0x6329, 0x632C, 0x632D, - 0x632E, 0x6330, 0x6331, 0x6333, 0x6334, 0x6335, 0x6336, 0x6337, - 0x6338, 0x633B, 0x633C, 0x633E, 0x633F, 0x6340, 0x6341, 0x6344, - 0x6347, 0x6348, 0x634A, 0x6351, 0x6352, 0x6353, 0x6354, 0x6356, - 0x6357, 0x6358, 0x6359, 0x635A, 0x635B, 0x635C, 0x635D, 0x6360, - 0x6364, 0x6365, 0x6366, 0x6368, 0x636A, 0x636B, 0x636C, 0x636F, - 0x6370, 0x6372, 0x6373, 0x6374, 0x6375, 0x6378, 0x6379, 0x637C, - 0x637D, 0x637E, 0x637F, 0x6381, 0x6383, 0x6384, 0x6385, 0x6386, - 0x638B, 0x638D, 0x6391, 0x6393, 0x6394, 0x6395, 0x6397, 0x6399, - 0x639A, 0x639B, 0x639C, 0x639D, 0x639E, 0x639F, 0x63A1, 0x63A4, - 0x63A6, 0x63AB, 0x63AF, 0x63B1, 0x63B2, 0x63B5, 0x63B6, 0x63B9, - 0x63BB, 0x63BD, 0x63BF, 0x63C0, 0x63C1, 0x63C2, 0x63C3, 0x63C5, - 0x63C7, 0x63C8, 0x63CA, 0x63CB, 0x63CC, 0x63D1, 0x63D3, 0x63D4, - 0x63D5, 0x63D7, 0x63D8, 0x63D9, 0x63DA, 0x63DB, 0x63DC, 0x63DD, - 0x63DF, 0x63E2, 0x63E4, 0x63E5, 0x63E6, 0x63E7, 0x63E8, 0x63EB, - 0x63EC, 0x63EE, 0x63EF, 0x63F0, 0x63F1, 0x63F3, 0x63F5, 0x63F7, - 0x63F9, 0x63FA, 0x63FB, 0x63FC, 0x63FE, 0x6403, 0x6404, 0x6406, - 0x6407, 0x6408, 0x6409, 0x640A, 0x640D, 0x640E, 0x6411, 0x6412, - 0x6415, 0x6416, 0x6417, 0x6418, 0x6419, 0x641A, 0x641D, 0x641F, - 0x6422, 0x6423, 0x6424, 0x6425, 0x6427, 0x6428, 0x6429, 0x642B, - 0x642E, 0x642F, 0x6430, 0x6431, 0x6432, 0x6433, 0x6435, 0x6436, - 0x6437, 0x6438, 0x6439, 0x643B, 0x643C, 0x643E, 0x6440, 0x6442, - 0x6443, 0x6449, 0x644B, 0x644C, 0x644D, 0x644E, 0x644F, 0x6450, - 0x6451, 0x6453, 0x6455, 0x6456, 0x6457, 0x6459, 0x645A, 0x645B, - 0x645C, 0x645D, 0x645F, 0x6460, 0x6461, 0x6462, 0x6463, 0x6464, - 0x6465, 0x6466, 0x6468, 0x646A, 0x646B, 0x646C, 0x646E, 0x646F, - 0x6470, 0x6471, 0x6472, 0x6473, 0x6474, 0x6475, 0x6476, 0x6477, - 0x647B, 0x647C, 0x647D, 0x647E, 0x647F, 0x6480, 0x6481, 0x6483, - 0x6486, 0x6488, 0x6489, 0x648A, 0x648B, 0x648C, 0x648D, 0x648E, - 0x648F, 0x6490, 0x6493, 0x6494, 0x6497, 0x6498, 0x649A, 0x649B, - 0x649C, 0x649D, 0x649F, 0x64A0, 0x64A1, 0x64A2, 0x64A3, 0x64A5, - 0x64A6, 0x64A7, 0x64A8, 0x64AA, 0x64AB, 0x64AF, 0x64B1, 0x64B2, -plane 15 -at 0x00 - 0x64B3, 0x64B4, 0x64B6, 0x64B9, 0x64BB, 0x64BD, 0x64BE, 0x64BF, - 0x64C1, 0x64C3, 0x64C4, 0x64C6, 0x64C7, 0x64C8, 0x64C9, 0x64CA, - 0x64CB, 0x64CC, 0x64CF, 0x64D1, 0x64D3, 0x64D4, 0x64D5, 0x64D6, - 0x64D9, 0x64DA, 0x64DB, 0x64DC, 0x64DD, 0x64DF, 0x64E0, 0x64E1, - 0x64E3, 0x64E5, 0x64E7, 0x64E8, 0x64E9, 0x64EA, 0x64EB, 0x64EC, - 0x64ED, 0x64EE, 0x64EF, 0x64F0, 0x64F1, 0x64F2, 0x64F3, 0x64F4, - 0x64F5, 0x64F6, 0x64F7, 0x64F8, 0x64F9, 0x64FA, 0x64FB, 0x64FC, - 0x64FD, 0x64FE, 0x64FF, 0x6501, 0x6502, 0x6503, 0x6504, 0x6505, - 0x6506, 0x6507, 0x6508, 0x650A, 0x650B, 0x650C, 0x650D, 0x650E, - 0x650F, 0x6510, 0x6511, 0x6513, 0x6514, 0x6515, 0x6516, 0x6517, - 0x6519, 0x651A, 0x651B, 0x651C, 0x651D, 0x651E, 0x651F, 0x6520, - 0x6521, 0x6522, 0x6523, 0x6524, 0x6526, 0x6527, 0x6528, 0x6529, - 0x652A, 0x652C, 0x652D, 0x6530, 0x6531, 0x6532, 0x6533, 0x6537, - 0x653A, 0x653C, 0x653D, 0x6540, 0x6541, 0x6542, 0x6543, 0x6544, - 0x6546, 0x6547, 0x654A, 0x654B, 0x654D, 0x654E, 0x6550, 0x6552, - 0x6553, 0x6554, 0x6557, 0x6558, 0x655A, 0x655C, 0x655F, 0x6560, - 0x6561, 0x6564, 0x6565, 0x6567, 0x6568, 0x6569, 0x656A, 0x656D, - 0x656E, 0x656F, 0x6571, 0x6573, 0x6575, 0x6576, 0x6578, 0x6579, - 0x657A, 0x657B, 0x657C, 0x657D, 0x657E, 0x657F, 0x6580, 0x6581, - 0x6582, 0x6583, 0x6584, 0x6585, 0x6586, 0x6588, 0x6589, 0x658A, - 0x658D, 0x658E, 0x658F, 0x6592, 0x6594, 0x6595, 0x6596, 0x6598, - 0x659A, 0x659D, 0x659E, 0x65A0, 0x65A2, 0x65A3, 0x65A6, 0x65A8, - 0x65AA, 0x65AC, 0x65AE, 0x65B1, 0x65B2, 0x65B3, 0x65B4, 0x65B5, - 0x65B6, 0x65B7, 0x65B8, 0x65BA, 0x65BB, 0x65BE, 0x65BF, 0x65C0, - 0x65C2, 0x65C7, 0x65C8, 0x65C9, 0x65CA, 0x65CD, 0x65D0, 0x65D1, - 0x65D3, 0x65D4, 0x65D5, 0x65D8, 0x65D9, 0x65DA, 0x65DB, 0x65DC, - 0x65DD, 0x65DE, 0x65DF, 0x65E1, 0x65E3, 0x65E4, 0x65EA, 0x65EB, - 0x65F2, 0x65F3, 0x65F4, 0x65F5, 0x65F8, 0x65F9, 0x65FB, 0x65FC, - 0x65FD, 0x65FE, 0x65FF, 0x6601, 0x6604, 0x6605, 0x6607, 0x6608, - 0x6609, 0x660B, 0x660D, 0x6610, 0x6611, 0x6612, 0x6616, 0x6617, - 0x6618, 0x661A, 0x661B, 0x661C, 0x661E, 0x6621, 0x6622, 0x6623, - 0x6624, 0x6626, 0x6629, 0x662A, 0x662B, 0x662C, 0x662E, 0x6630, -plane 16 -at 0x00 - 0x6632, 0x6633, 0x6637, 0x6638, 0x6639, 0x663A, 0x663B, 0x663D, - 0x663F, 0x6640, 0x6642, 0x6644, 0x6645, 0x6646, 0x6647, 0x6648, - 0x6649, 0x664A, 0x664D, 0x664E, 0x6650, 0x6651, 0x6658, 0x6659, - 0x665B, 0x665C, 0x665D, 0x665E, 0x6660, 0x6662, 0x6663, 0x6665, - 0x6667, 0x6669, 0x666A, 0x666B, 0x666C, 0x666D, 0x6671, 0x6672, - 0x6673, 0x6675, 0x6678, 0x6679, 0x667B, 0x667C, 0x667D, 0x667F, - 0x6680, 0x6681, 0x6683, 0x6685, 0x6686, 0x6688, 0x6689, 0x668A, - 0x668B, 0x668D, 0x668E, 0x668F, 0x6690, 0x6692, 0x6693, 0x6694, - 0x6695, 0x6698, 0x6699, 0x669A, 0x669B, 0x669C, 0x669E, 0x669F, - 0x66A0, 0x66A1, 0x66A2, 0x66A3, 0x66A4, 0x66A5, 0x66A6, 0x66A9, - 0x66AA, 0x66AB, 0x66AC, 0x66AD, 0x66AF, 0x66B0, 0x66B1, 0x66B2, - 0x66B3, 0x66B5, 0x66B6, 0x66B7, 0x66B8, 0x66BA, 0x66BB, 0x66BC, - 0x66BD, 0x66BF, 0x66C0, 0x66C1, 0x66C2, 0x66C3, 0x66C4, 0x66C5, - 0x66C6, 0x66C7, 0x66C8, 0x66C9, 0x66CA, 0x66CB, 0x66CC, 0x66CD, - 0x66CE, 0x66CF, 0x66D0, 0x66D1, 0x66D2, 0x66D3, 0x66D4, 0x66D5, - 0x66D6, 0x66D7, 0x66D8, 0x66DA, 0x66DE, 0x66DF, 0x66E0, 0x66E1, - 0x66E2, 0x66E3, 0x66E4, 0x66E5, 0x66E7, 0x66E8, 0x66EA, 0x66EB, - 0x66EC, 0x66ED, 0x66EE, 0x66EF, 0x66F1, 0x66F5, 0x66F6, 0x66F8, - 0x66FA, 0x66FB, 0x66FD, 0x6701, 0x6702, 0x6703, 0x6704, 0x6705, - 0x6706, 0x6707, 0x670C, 0x670E, 0x670F, 0x6711, 0x6712, 0x6713, - 0x6716, 0x6718, 0x6719, 0x671A, 0x671C, 0x671E, 0x6720, 0x6721, - 0x6722, 0x6723, 0x6724, 0x6725, 0x6727, 0x6729, 0x672E, 0x6730, - 0x6732, 0x6733, 0x6736, 0x6737, 0x6738, 0x6739, 0x673B, 0x673C, - 0x673E, 0x673F, 0x6741, 0x6744, 0x6745, 0x6747, 0x674A, 0x674B, - 0x674D, 0x6752, 0x6754, 0x6755, 0x6757, 0x6758, 0x6759, 0x675A, - 0x675B, 0x675D, 0x6762, 0x6763, 0x6764, 0x6766, 0x6767, 0x676B, - 0x676C, 0x676E, 0x6771, 0x6774, 0x6776, 0x6778, 0x6779, 0x677A, - 0x677B, 0x677D, 0x6780, 0x6782, 0x6783, 0x6785, 0x6786, 0x6788, - 0x678A, 0x678C, 0x678D, 0x678E, 0x678F, 0x6791, 0x6792, 0x6793, - 0x6794, 0x6796, 0x6799, 0x679B, 0x679F, 0x67A0, 0x67A1, 0x67A4, - 0x67A6, 0x67A9, 0x67AC, 0x67AE, 0x67B1, 0x67B2, 0x67B4, 0x67B9, - 0x67BA, 0x67BB, 0x67BC, 0x67BD, 0x67BE, 0x67BF, 0x67C0, 0x67C2, -plane 17 -at 0x00 - 0x67C5, 0x67C6, 0x67C7, 0x67C8, 0x67C9, 0x67CA, 0x67CB, 0x67CC, - 0x67CD, 0x67CE, 0x67D5, 0x67D6, 0x67D7, 0x67DB, 0x67DF, 0x67E1, - 0x67E3, 0x67E4, 0x67E6, 0x67E7, 0x67E8, 0x67EA, 0x67EB, 0x67ED, - 0x67EE, 0x67F2, 0x67F5, 0x67F6, 0x67F7, 0x67F8, 0x67F9, 0x67FA, - 0x67FB, 0x67FC, 0x67FE, 0x6801, 0x6802, 0x6803, 0x6804, 0x6806, - 0x680D, 0x6810, 0x6812, 0x6814, 0x6815, 0x6818, 0x6819, 0x681A, - 0x681B, 0x681C, 0x681E, 0x681F, 0x6820, 0x6822, 0x6823, 0x6824, - 0x6825, 0x6826, 0x6827, 0x6828, 0x682B, 0x682C, 0x682D, 0x682E, - 0x682F, 0x6830, 0x6831, 0x6834, 0x6835, 0x6836, 0x683A, 0x683B, - 0x683F, 0x6847, 0x684B, 0x684D, 0x684F, 0x6852, 0x6856, 0x6857, - 0x6858, 0x6859, 0x685A, 0x685B, 0x685C, 0x685D, 0x685E, 0x685F, - 0x686A, 0x686C, 0x686D, 0x686E, 0x686F, 0x6870, 0x6871, 0x6872, - 0x6873, 0x6875, 0x6878, 0x6879, 0x687A, 0x687B, 0x687C, 0x687D, - 0x687E, 0x687F, 0x6880, 0x6882, 0x6884, 0x6887, 0x6888, 0x6889, - 0x688A, 0x688B, 0x688C, 0x688D, 0x688E, 0x6890, 0x6891, 0x6892, - 0x6894, 0x6895, 0x6896, 0x6898, 0x6899, 0x689A, 0x689B, 0x689C, - 0x689D, 0x689E, 0x689F, 0x68A0, 0x68A1, 0x68A3, 0x68A4, 0x68A5, - 0x68A9, 0x68AA, 0x68AB, 0x68AC, 0x68AE, 0x68B1, 0x68B2, 0x68B4, - 0x68B6, 0x68B7, 0x68B8, 0x68B9, 0x68BA, 0x68BB, 0x68BC, 0x68BD, - 0x68BE, 0x68BF, 0x68C1, 0x68C3, 0x68C4, 0x68C5, 0x68C6, 0x68C7, - 0x68C8, 0x68CA, 0x68CC, 0x68CE, 0x68CF, 0x68D0, 0x68D1, 0x68D3, - 0x68D4, 0x68D6, 0x68D7, 0x68D9, 0x68DB, 0x68DC, 0x68DD, 0x68DE, - 0x68DF, 0x68E1, 0x68E2, 0x68E4, 0x68E5, 0x68E6, 0x68E7, 0x68E8, - 0x68E9, 0x68EA, 0x68EB, 0x68EC, 0x68ED, 0x68EF, 0x68F2, 0x68F3, - 0x68F4, 0x68F6, 0x68F7, 0x68F8, 0x68FB, 0x68FD, 0x68FE, 0x68FF, - 0x6900, 0x6902, 0x6903, 0x6904, 0x6906, 0x6907, 0x6908, 0x6909, - 0x690A, 0x690C, 0x690F, 0x6911, 0x6913, 0x6914, 0x6915, 0x6916, - 0x6917, 0x6918, 0x6919, 0x691A, 0x691B, 0x691C, 0x691D, 0x691E, - 0x6921, 0x6922, 0x6923, 0x6925, 0x6926, 0x6927, 0x6928, 0x6929, - 0x692A, 0x692B, 0x692C, 0x692E, 0x692F, 0x6931, 0x6932, 0x6933, - 0x6935, 0x6936, 0x6937, 0x6938, 0x693A, 0x693B, 0x693C, 0x693E, - 0x6940, 0x6941, 0x6943, 0x6944, 0x6945, 0x6946, 0x6947, 0x6948, -plane 18 -at 0x00 - 0x6949, 0x694A, 0x694B, 0x694C, 0x694D, 0x694E, 0x694F, 0x6950, - 0x6951, 0x6952, 0x6953, 0x6955, 0x6956, 0x6958, 0x6959, 0x695B, - 0x695C, 0x695F, 0x6961, 0x6962, 0x6964, 0x6965, 0x6967, 0x6968, - 0x6969, 0x696A, 0x696C, 0x696D, 0x696F, 0x6970, 0x6972, 0x6973, - 0x6974, 0x6975, 0x6976, 0x697A, 0x697B, 0x697D, 0x697E, 0x697F, - 0x6981, 0x6983, 0x6985, 0x698A, 0x698B, 0x698C, 0x698E, 0x698F, - 0x6990, 0x6991, 0x6992, 0x6993, 0x6996, 0x6997, 0x6999, 0x699A, - 0x699D, 0x699E, 0x699F, 0x69A0, 0x69A1, 0x69A2, 0x69A3, 0x69A4, - 0x69A5, 0x69A6, 0x69A9, 0x69AA, 0x69AC, 0x69AE, 0x69AF, 0x69B0, - 0x69B2, 0x69B3, 0x69B5, 0x69B6, 0x69B8, 0x69B9, 0x69BA, 0x69BC, - 0x69BD, 0x69BE, 0x69BF, 0x69C0, 0x69C2, 0x69C3, 0x69C4, 0x69C5, - 0x69C6, 0x69C7, 0x69C8, 0x69C9, 0x69CB, 0x69CD, 0x69CF, 0x69D1, - 0x69D2, 0x69D3, 0x69D5, 0x69D6, 0x69D7, 0x69D8, 0x69D9, 0x69DA, - 0x69DC, 0x69DD, 0x69DE, 0x69E1, 0x69E2, 0x69E3, 0x69E4, 0x69E5, - 0x69E6, 0x69E7, 0x69E8, 0x69E9, 0x69EA, 0x69EB, 0x69EC, 0x69EE, - 0x69EF, 0x69F0, 0x69F1, 0x69F3, 0x69F4, 0x69F5, 0x69F6, 0x69F7, - 0x69F8, 0x69F9, 0x69FA, 0x69FB, 0x69FC, 0x69FE, 0x6A00, 0x6A01, - 0x6A02, 0x6A03, 0x6A04, 0x6A05, 0x6A06, 0x6A07, 0x6A08, 0x6A09, - 0x6A0B, 0x6A0C, 0x6A0D, 0x6A0E, 0x6A0F, 0x6A10, 0x6A11, 0x6A12, - 0x6A13, 0x6A14, 0x6A15, 0x6A16, 0x6A19, 0x6A1A, 0x6A1B, 0x6A1C, - 0x6A1D, 0x6A1E, 0x6A20, 0x6A22, 0x6A23, 0x6A24, 0x6A25, 0x6A26, - 0x6A27, 0x6A29, 0x6A2B, 0x6A2C, 0x6A2D, 0x6A2E, 0x6A30, 0x6A32, - 0x6A33, 0x6A34, 0x6A36, 0x6A37, 0x6A38, 0x6A39, 0x6A3A, 0x6A3B, - 0x6A3C, 0x6A3F, 0x6A40, 0x6A41, 0x6A42, 0x6A43, 0x6A45, 0x6A46, - 0x6A48, 0x6A49, 0x6A4A, 0x6A4B, 0x6A4C, 0x6A4D, 0x6A4E, 0x6A4F, - 0x6A51, 0x6A52, 0x6A53, 0x6A54, 0x6A55, 0x6A56, 0x6A57, 0x6A5A, - 0x6A5C, 0x6A5D, 0x6A5E, 0x6A5F, 0x6A60, 0x6A62, 0x6A63, 0x6A64, - 0x6A66, 0x6A67, 0x6A68, 0x6A69, 0x6A6A, 0x6A6B, 0x6A6C, 0x6A6D, - 0x6A6E, 0x6A6F, 0x6A70, 0x6A72, 0x6A73, 0x6A74, 0x6A75, 0x6A76, - 0x6A77, 0x6A78, 0x6A7A, 0x6A7B, 0x6A7D, 0x6A7E, 0x6A7F, 0x6A81, - 0x6A82, 0x6A83, 0x6A85, 0x6A86, 0x6A87, 0x6A88, 0x6A89, 0x6A8A, - 0x6A8B, 0x6A8C, 0x6A8D, 0x6A8F, 0x6A92, 0x6A93, 0x6A94, 0x6A95, -plane 19 -at 0x00 - 0x6A96, 0x6A98, 0x6A99, 0x6A9A, 0x6A9B, 0x6A9C, 0x6A9D, 0x6A9E, - 0x6A9F, 0x6AA1, 0x6AA2, 0x6AA3, 0x6AA4, 0x6AA5, 0x6AA6, 0x6AA7, - 0x6AA8, 0x6AAA, 0x6AAD, 0x6AAE, 0x6AAF, 0x6AB0, 0x6AB1, 0x6AB2, - 0x6AB3, 0x6AB4, 0x6AB5, 0x6AB6, 0x6AB7, 0x6AB8, 0x6AB9, 0x6ABA, - 0x6ABB, 0x6ABC, 0x6ABD, 0x6ABE, 0x6ABF, 0x6AC0, 0x6AC1, 0x6AC2, - 0x6AC3, 0x6AC4, 0x6AC5, 0x6AC6, 0x6AC7, 0x6AC8, 0x6AC9, 0x6ACA, - 0x6ACB, 0x6ACC, 0x6ACD, 0x6ACE, 0x6ACF, 0x6AD0, 0x6AD1, 0x6AD2, - 0x6AD3, 0x6AD4, 0x6AD5, 0x6AD6, 0x6AD7, 0x6AD8, 0x6AD9, 0x6ADA, - 0x6ADB, 0x6ADC, 0x6ADD, 0x6ADE, 0x6ADF, 0x6AE0, 0x6AE1, 0x6AE2, - 0x6AE3, 0x6AE4, 0x6AE5, 0x6AE6, 0x6AE7, 0x6AE8, 0x6AE9, 0x6AEA, - 0x6AEB, 0x6AEC, 0x6AED, 0x6AEE, 0x6AEF, 0x6AF0, 0x6AF1, 0x6AF2, - 0x6AF3, 0x6AF4, 0x6AF5, 0x6AF6, 0x6AF7, 0x6AF8, 0x6AF9, 0x6AFA, - 0x6AFB, 0x6AFC, 0x6AFD, 0x6AFE, 0x6AFF, 0x6B00, 0x6B01, 0x6B02, - 0x6B03, 0x6B04, 0x6B05, 0x6B06, 0x6B07, 0x6B08, 0x6B09, 0x6B0A, - 0x6B0B, 0x6B0C, 0x6B0D, 0x6B0E, 0x6B0F, 0x6B10, 0x6B11, 0x6B12, - 0x6B13, 0x6B14, 0x6B15, 0x6B16, 0x6B17, 0x6B18, 0x6B19, 0x6B1A, - 0x6B1B, 0x6B1C, 0x6B1D, 0x6B1E, 0x6B1F, 0x6B25, 0x6B26, 0x6B28, - 0x6B29, 0x6B2A, 0x6B2B, 0x6B2C, 0x6B2D, 0x6B2E, 0x6B2F, 0x6B30, - 0x6B31, 0x6B33, 0x6B34, 0x6B35, 0x6B36, 0x6B38, 0x6B3B, 0x6B3C, - 0x6B3D, 0x6B3F, 0x6B40, 0x6B41, 0x6B42, 0x6B44, 0x6B45, 0x6B48, - 0x6B4A, 0x6B4B, 0x6B4D, 0x6B4E, 0x6B4F, 0x6B50, 0x6B51, 0x6B52, - 0x6B53, 0x6B54, 0x6B55, 0x6B56, 0x6B57, 0x6B58, 0x6B5A, 0x6B5B, - 0x6B5C, 0x6B5D, 0x6B5E, 0x6B5F, 0x6B60, 0x6B61, 0x6B68, 0x6B69, - 0x6B6B, 0x6B6C, 0x6B6D, 0x6B6E, 0x6B6F, 0x6B70, 0x6B71, 0x6B72, - 0x6B73, 0x6B74, 0x6B75, 0x6B76, 0x6B77, 0x6B78, 0x6B7A, 0x6B7D, - 0x6B7E, 0x6B7F, 0x6B80, 0x6B85, 0x6B88, 0x6B8C, 0x6B8E, 0x6B8F, - 0x6B90, 0x6B91, 0x6B94, 0x6B95, 0x6B97, 0x6B98, 0x6B99, 0x6B9C, - 0x6B9D, 0x6B9E, 0x6B9F, 0x6BA0, 0x6BA2, 0x6BA3, 0x6BA4, 0x6BA5, - 0x6BA6, 0x6BA7, 0x6BA8, 0x6BA9, 0x6BAB, 0x6BAC, 0x6BAD, 0x6BAE, - 0x6BAF, 0x6BB0, 0x6BB1, 0x6BB2, 0x6BB6, 0x6BB8, 0x6BB9, 0x6BBA, - 0x6BBB, 0x6BBC, 0x6BBD, 0x6BBE, 0x6BC0, 0x6BC3, 0x6BC4, 0x6BC6, - 0x6BC7, 0x6BC8, 0x6BC9, 0x6BCA, 0x6BCC, 0x6BCE, 0x6BD0, 0x6BD1, -plane 20 -at 0x00 - 0x6BD8, 0x6BDA, 0x6BDC, 0x6BDD, 0x6BDE, 0x6BDF, 0x6BE0, 0x6BE2, - 0x6BE3, 0x6BE4, 0x6BE5, 0x6BE6, 0x6BE7, 0x6BE8, 0x6BE9, 0x6BEC, - 0x6BED, 0x6BEE, 0x6BF0, 0x6BF1, 0x6BF2, 0x6BF4, 0x6BF6, 0x6BF7, - 0x6BF8, 0x6BFA, 0x6BFB, 0x6BFC, 0x6BFE, 0x6BFF, 0x6C00, 0x6C01, - 0x6C02, 0x6C03, 0x6C04, 0x6C08, 0x6C09, 0x6C0A, 0x6C0B, 0x6C0C, - 0x6C0E, 0x6C12, 0x6C17, 0x6C1C, 0x6C1D, 0x6C1E, 0x6C20, 0x6C23, - 0x6C25, 0x6C2B, 0x6C2C, 0x6C2D, 0x6C31, 0x6C33, 0x6C36, 0x6C37, - 0x6C39, 0x6C3A, 0x6C3B, 0x6C3C, 0x6C3E, 0x6C3F, 0x6C43, 0x6C44, - 0x6C45, 0x6C48, 0x6C4B, 0x6C4C, 0x6C4D, 0x6C4E, 0x6C4F, 0x6C51, - 0x6C52, 0x6C53, 0x6C56, 0x6C58, 0x6C59, 0x6C5A, 0x6C62, 0x6C63, - 0x6C65, 0x6C66, 0x6C67, 0x6C6B, 0x6C6C, 0x6C6D, 0x6C6E, 0x6C6F, - 0x6C71, 0x6C73, 0x6C75, 0x6C77, 0x6C78, 0x6C7A, 0x6C7B, 0x6C7C, - 0x6C7F, 0x6C80, 0x6C84, 0x6C87, 0x6C8A, 0x6C8B, 0x6C8D, 0x6C8E, - 0x6C91, 0x6C92, 0x6C95, 0x6C96, 0x6C97, 0x6C98, 0x6C9A, 0x6C9C, - 0x6C9D, 0x6C9E, 0x6CA0, 0x6CA2, 0x6CA8, 0x6CAC, 0x6CAF, 0x6CB0, - 0x6CB4, 0x6CB5, 0x6CB6, 0x6CB7, 0x6CBA, 0x6CC0, 0x6CC1, 0x6CC2, - 0x6CC3, 0x6CC6, 0x6CC7, 0x6CC8, 0x6CCB, 0x6CCD, 0x6CCE, 0x6CCF, - 0x6CD1, 0x6CD2, 0x6CD8, 0x6CD9, 0x6CDA, 0x6CDC, 0x6CDD, 0x6CDF, - 0x6CE4, 0x6CE6, 0x6CE7, 0x6CE9, 0x6CEC, 0x6CED, 0x6CF2, 0x6CF4, - 0x6CF9, 0x6CFF, 0x6D00, 0x6D02, 0x6D03, 0x6D05, 0x6D06, 0x6D08, - 0x6D09, 0x6D0A, 0x6D0D, 0x6D0F, 0x6D10, 0x6D11, 0x6D13, 0x6D14, - 0x6D15, 0x6D16, 0x6D18, 0x6D1C, 0x6D1D, 0x6D1F, 0x6D20, 0x6D21, - 0x6D22, 0x6D23, 0x6D24, 0x6D26, 0x6D28, 0x6D29, 0x6D2C, 0x6D2D, - 0x6D2F, 0x6D30, 0x6D34, 0x6D36, 0x6D37, 0x6D38, 0x6D3A, 0x6D3F, - 0x6D40, 0x6D42, 0x6D44, 0x6D49, 0x6D4C, 0x6D50, 0x6D55, 0x6D56, - 0x6D57, 0x6D58, 0x6D5B, 0x6D5D, 0x6D5F, 0x6D61, 0x6D62, 0x6D64, - 0x6D65, 0x6D67, 0x6D68, 0x6D6B, 0x6D6C, 0x6D6D, 0x6D70, 0x6D71, - 0x6D72, 0x6D73, 0x6D75, 0x6D76, 0x6D79, 0x6D7A, 0x6D7B, 0x6D7D, - 0x6D7E, 0x6D7F, 0x6D80, 0x6D81, 0x6D83, 0x6D84, 0x6D86, 0x6D87, - 0x6D8A, 0x6D8B, 0x6D8D, 0x6D8F, 0x6D90, 0x6D92, 0x6D96, 0x6D97, - 0x6D98, 0x6D99, 0x6D9A, 0x6D9C, 0x6DA2, 0x6DA5, 0x6DAC, 0x6DAD, - 0x6DB0, 0x6DB1, 0x6DB3, 0x6DB4, 0x6DB6, 0x6DB7, 0x6DB9, 0x6DBA, -plane 21 -at 0x00 - 0x6DBB, 0x6DBC, 0x6DBD, 0x6DBE, 0x6DC1, 0x6DC2, 0x6DC3, 0x6DC8, - 0x6DC9, 0x6DCA, 0x6DCD, 0x6DCE, 0x6DCF, 0x6DD0, 0x6DD2, 0x6DD3, - 0x6DD4, 0x6DD5, 0x6DD7, 0x6DDA, 0x6DDB, 0x6DDC, 0x6DDF, 0x6DE2, - 0x6DE3, 0x6DE5, 0x6DE7, 0x6DE8, 0x6DE9, 0x6DEA, 0x6DED, 0x6DEF, - 0x6DF0, 0x6DF2, 0x6DF4, 0x6DF5, 0x6DF6, 0x6DF8, 0x6DFA, 0x6DFD, - 0x6DFE, 0x6DFF, 0x6E00, 0x6E01, 0x6E02, 0x6E03, 0x6E04, 0x6E06, - 0x6E07, 0x6E08, 0x6E09, 0x6E0B, 0x6E0F, 0x6E12, 0x6E13, 0x6E15, - 0x6E18, 0x6E19, 0x6E1B, 0x6E1C, 0x6E1E, 0x6E1F, 0x6E22, 0x6E26, - 0x6E27, 0x6E28, 0x6E2A, 0x6E2C, 0x6E2E, 0x6E30, 0x6E31, 0x6E33, - 0x6E35, 0x6E36, 0x6E37, 0x6E39, 0x6E3B, 0x6E3C, 0x6E3D, 0x6E3E, - 0x6E3F, 0x6E40, 0x6E41, 0x6E42, 0x6E45, 0x6E46, 0x6E47, 0x6E48, - 0x6E49, 0x6E4A, 0x6E4B, 0x6E4C, 0x6E4F, 0x6E50, 0x6E51, 0x6E52, - 0x6E55, 0x6E57, 0x6E59, 0x6E5A, 0x6E5C, 0x6E5D, 0x6E5E, 0x6E60, - 0x6E61, 0x6E62, 0x6E63, 0x6E64, 0x6E65, 0x6E66, 0x6E67, 0x6E68, - 0x6E69, 0x6E6A, 0x6E6C, 0x6E6D, 0x6E6F, 0x6E70, 0x6E71, 0x6E72, - 0x6E73, 0x6E74, 0x6E75, 0x6E76, 0x6E77, 0x6E78, 0x6E79, 0x6E7A, - 0x6E7B, 0x6E7C, 0x6E7D, 0x6E80, 0x6E81, 0x6E82, 0x6E84, 0x6E87, - 0x6E88, 0x6E8A, 0x6E8B, 0x6E8C, 0x6E8D, 0x6E8E, 0x6E91, 0x6E92, - 0x6E93, 0x6E94, 0x6E95, 0x6E96, 0x6E97, 0x6E99, 0x6E9A, 0x6E9B, - 0x6E9D, 0x6E9E, 0x6EA0, 0x6EA1, 0x6EA3, 0x6EA4, 0x6EA6, 0x6EA8, - 0x6EA9, 0x6EAB, 0x6EAC, 0x6EAD, 0x6EAE, 0x6EB0, 0x6EB3, 0x6EB5, - 0x6EB8, 0x6EB9, 0x6EBC, 0x6EBE, 0x6EBF, 0x6EC0, 0x6EC3, 0x6EC4, - 0x6EC5, 0x6EC6, 0x6EC8, 0x6EC9, 0x6ECA, 0x6ECC, 0x6ECD, 0x6ECE, - 0x6ED0, 0x6ED2, 0x6ED6, 0x6ED8, 0x6ED9, 0x6EDB, 0x6EDC, 0x6EDD, - 0x6EE3, 0x6EE7, 0x6EEA, 0x6EEB, 0x6EEC, 0x6EED, 0x6EEE, 0x6EEF, - 0x6EF0, 0x6EF1, 0x6EF2, 0x6EF3, 0x6EF5, 0x6EF6, 0x6EF7, 0x6EF8, - 0x6EFA, 0x6EFB, 0x6EFC, 0x6EFD, 0x6EFE, 0x6EFF, 0x6F00, 0x6F01, - 0x6F03, 0x6F04, 0x6F05, 0x6F07, 0x6F08, 0x6F0A, 0x6F0B, 0x6F0C, - 0x6F0D, 0x6F0E, 0x6F10, 0x6F11, 0x6F12, 0x6F16, 0x6F17, 0x6F18, - 0x6F19, 0x6F1A, 0x6F1B, 0x6F1C, 0x6F1D, 0x6F1E, 0x6F1F, 0x6F21, - 0x6F22, 0x6F23, 0x6F25, 0x6F26, 0x6F27, 0x6F28, 0x6F2C, 0x6F2E, - 0x6F30, 0x6F32, 0x6F34, 0x6F35, 0x6F37, 0x6F38, 0x6F39, 0x6F3A, -plane 22 -at 0x00 - 0x6F3B, 0x6F3C, 0x6F3D, 0x6F3F, 0x6F40, 0x6F41, 0x6F42, 0x6F43, - 0x6F44, 0x6F45, 0x6F48, 0x6F49, 0x6F4A, 0x6F4C, 0x6F4E, 0x6F4F, - 0x6F50, 0x6F51, 0x6F52, 0x6F53, 0x6F54, 0x6F55, 0x6F56, 0x6F57, - 0x6F59, 0x6F5A, 0x6F5B, 0x6F5D, 0x6F5F, 0x6F60, 0x6F61, 0x6F63, - 0x6F64, 0x6F65, 0x6F67, 0x6F68, 0x6F69, 0x6F6A, 0x6F6B, 0x6F6C, - 0x6F6F, 0x6F70, 0x6F71, 0x6F73, 0x6F75, 0x6F76, 0x6F77, 0x6F79, - 0x6F7B, 0x6F7D, 0x6F7E, 0x6F7F, 0x6F80, 0x6F81, 0x6F82, 0x6F83, - 0x6F85, 0x6F86, 0x6F87, 0x6F8A, 0x6F8B, 0x6F8F, 0x6F90, 0x6F91, - 0x6F92, 0x6F93, 0x6F94, 0x6F95, 0x6F96, 0x6F97, 0x6F98, 0x6F99, - 0x6F9A, 0x6F9B, 0x6F9D, 0x6F9E, 0x6F9F, 0x6FA0, 0x6FA2, 0x6FA3, - 0x6FA4, 0x6FA5, 0x6FA6, 0x6FA8, 0x6FA9, 0x6FAA, 0x6FAB, 0x6FAC, - 0x6FAD, 0x6FAE, 0x6FAF, 0x6FB0, 0x6FB1, 0x6FB2, 0x6FB4, 0x6FB5, - 0x6FB7, 0x6FB8, 0x6FBA, 0x6FBB, 0x6FBC, 0x6FBD, 0x6FBE, 0x6FBF, - 0x6FC1, 0x6FC3, 0x6FC4, 0x6FC5, 0x6FC6, 0x6FC7, 0x6FC8, 0x6FCA, - 0x6FCB, 0x6FCC, 0x6FCD, 0x6FCE, 0x6FCF, 0x6FD0, 0x6FD3, 0x6FD4, - 0x6FD5, 0x6FD6, 0x6FD7, 0x6FD8, 0x6FD9, 0x6FDA, 0x6FDB, 0x6FDC, - 0x6FDD, 0x6FDF, 0x6FE2, 0x6FE3, 0x6FE4, 0x6FE5, 0x6FE6, 0x6FE7, - 0x6FE8, 0x6FE9, 0x6FEA, 0x6FEB, 0x6FEC, 0x6FED, 0x6FF0, 0x6FF1, - 0x6FF2, 0x6FF3, 0x6FF4, 0x6FF5, 0x6FF6, 0x6FF7, 0x6FF8, 0x6FF9, - 0x6FFA, 0x6FFB, 0x6FFC, 0x6FFD, 0x6FFE, 0x6FFF, 0x7000, 0x7001, - 0x7002, 0x7003, 0x7004, 0x7005, 0x7006, 0x7007, 0x7008, 0x7009, - 0x700A, 0x700B, 0x700C, 0x700D, 0x700E, 0x700F, 0x7010, 0x7012, - 0x7013, 0x7014, 0x7015, 0x7016, 0x7017, 0x7018, 0x7019, 0x701C, - 0x701D, 0x701E, 0x701F, 0x7020, 0x7021, 0x7022, 0x7024, 0x7025, - 0x7026, 0x7027, 0x7028, 0x7029, 0x702A, 0x702B, 0x702C, 0x702D, - 0x702E, 0x702F, 0x7030, 0x7031, 0x7032, 0x7033, 0x7034, 0x7036, - 0x7037, 0x7038, 0x703A, 0x703B, 0x703C, 0x703D, 0x703E, 0x703F, - 0x7040, 0x7041, 0x7042, 0x7043, 0x7044, 0x7045, 0x7046, 0x7047, - 0x7048, 0x7049, 0x704A, 0x704B, 0x704D, 0x704E, 0x7050, 0x7051, - 0x7052, 0x7053, 0x7054, 0x7055, 0x7056, 0x7057, 0x7058, 0x7059, - 0x705A, 0x705B, 0x705C, 0x705D, 0x705F, 0x7060, 0x7061, 0x7062, - 0x7063, 0x7064, 0x7065, 0x7066, 0x7067, 0x7068, 0x7069, 0x706A, -plane 23 -at 0x00 - 0x706E, 0x7071, 0x7072, 0x7073, 0x7074, 0x7077, 0x7079, 0x707A, - 0x707B, 0x707D, 0x7081, 0x7082, 0x7083, 0x7084, 0x7086, 0x7087, - 0x7088, 0x708B, 0x708C, 0x708D, 0x708F, 0x7090, 0x7091, 0x7093, - 0x7097, 0x7098, 0x709A, 0x709B, 0x709E, 0x709F, 0x70A0, 0x70A1, - 0x70A2, 0x70A3, 0x70A4, 0x70A5, 0x70A6, 0x70A7, 0x70A8, 0x70A9, - 0x70AA, 0x70B0, 0x70B2, 0x70B4, 0x70B5, 0x70B6, 0x70BA, 0x70BE, - 0x70BF, 0x70C4, 0x70C5, 0x70C6, 0x70C7, 0x70C9, 0x70CB, 0x70CC, - 0x70CD, 0x70CE, 0x70CF, 0x70D0, 0x70D1, 0x70D2, 0x70D3, 0x70D4, - 0x70D5, 0x70D6, 0x70D7, 0x70DA, 0x70DC, 0x70DD, 0x70DE, 0x70E0, - 0x70E1, 0x70E2, 0x70E3, 0x70E5, 0x70EA, 0x70EE, 0x70F0, 0x70F1, - 0x70F2, 0x70F3, 0x70F4, 0x70F5, 0x70F6, 0x70F8, 0x70FA, 0x70FB, - 0x70FC, 0x70FE, 0x70FF, 0x7100, 0x7101, 0x7102, 0x7103, 0x7104, - 0x7105, 0x7106, 0x7107, 0x7108, 0x710B, 0x710C, 0x710D, 0x710E, - 0x710F, 0x7111, 0x7112, 0x7114, 0x7117, 0x711B, 0x711C, 0x711D, - 0x711E, 0x711F, 0x7120, 0x7121, 0x7122, 0x7123, 0x7124, 0x7125, - 0x7127, 0x7128, 0x7129, 0x712A, 0x712B, 0x712C, 0x712D, 0x712E, - 0x7132, 0x7133, 0x7134, 0x7135, 0x7137, 0x7138, 0x7139, 0x713A, - 0x713B, 0x713C, 0x713D, 0x713E, 0x713F, 0x7140, 0x7141, 0x7142, - 0x7143, 0x7144, 0x7146, 0x7147, 0x7148, 0x7149, 0x714B, 0x714D, - 0x714F, 0x7150, 0x7151, 0x7152, 0x7153, 0x7154, 0x7155, 0x7156, - 0x7157, 0x7158, 0x7159, 0x715A, 0x715B, 0x715D, 0x715F, 0x7160, - 0x7161, 0x7162, 0x7163, 0x7165, 0x7169, 0x716A, 0x716B, 0x716C, - 0x716D, 0x716F, 0x7170, 0x7171, 0x7174, 0x7175, 0x7176, 0x7177, - 0x7179, 0x717B, 0x717C, 0x717E, 0x717F, 0x7180, 0x7181, 0x7182, - 0x7183, 0x7185, 0x7186, 0x7187, 0x7188, 0x7189, 0x718B, 0x718C, - 0x718D, 0x718E, 0x7190, 0x7191, 0x7192, 0x7193, 0x7195, 0x7196, - 0x7197, 0x719A, 0x719B, 0x719C, 0x719D, 0x719E, 0x71A1, 0x71A2, - 0x71A3, 0x71A4, 0x71A5, 0x71A6, 0x71A7, 0x71A9, 0x71AA, 0x71AB, - 0x71AD, 0x71AE, 0x71AF, 0x71B0, 0x71B1, 0x71B2, 0x71B4, 0x71B6, - 0x71B7, 0x71B8, 0x71BA, 0x71BB, 0x71BC, 0x71BD, 0x71BE, 0x71BF, - 0x71C0, 0x71C1, 0x71C2, 0x71C4, 0x71C5, 0x71C6, 0x71C7, 0x71C8, - 0x71C9, 0x71CA, 0x71CB, 0x71CC, 0x71CD, 0x71CF, 0x71D0, 0x71D1, -plane 24 -at 0x00 - 0x71D2, 0x71D3, 0x71D6, 0x71D7, 0x71D8, 0x71D9, 0x71DA, 0x71DB, - 0x71DC, 0x71DD, 0x71DE, 0x71DF, 0x71E1, 0x71E2, 0x71E3, 0x71E4, - 0x71E6, 0x71E8, 0x71E9, 0x71EA, 0x71EB, 0x71EC, 0x71ED, 0x71EF, - 0x71F0, 0x71F1, 0x71F2, 0x71F3, 0x71F4, 0x71F5, 0x71F6, 0x71F7, - 0x71F8, 0x71FA, 0x71FB, 0x71FC, 0x71FD, 0x71FE, 0x71FF, 0x7200, - 0x7201, 0x7202, 0x7203, 0x7204, 0x7205, 0x7207, 0x7208, 0x7209, - 0x720A, 0x720B, 0x720C, 0x720D, 0x720E, 0x720F, 0x7210, 0x7211, - 0x7212, 0x7213, 0x7214, 0x7215, 0x7216, 0x7217, 0x7218, 0x7219, - 0x721A, 0x721B, 0x721C, 0x721E, 0x721F, 0x7220, 0x7221, 0x7222, - 0x7223, 0x7224, 0x7225, 0x7226, 0x7227, 0x7229, 0x722B, 0x722D, - 0x722E, 0x722F, 0x7232, 0x7233, 0x7234, 0x723A, 0x723C, 0x723E, - 0x7240, 0x7241, 0x7242, 0x7243, 0x7244, 0x7245, 0x7246, 0x7249, - 0x724A, 0x724B, 0x724E, 0x724F, 0x7250, 0x7251, 0x7253, 0x7254, - 0x7255, 0x7257, 0x7258, 0x725A, 0x725C, 0x725E, 0x7260, 0x7263, - 0x7264, 0x7265, 0x7268, 0x726A, 0x726B, 0x726C, 0x726D, 0x7270, - 0x7271, 0x7273, 0x7274, 0x7276, 0x7277, 0x7278, 0x727B, 0x727C, - 0x727D, 0x7282, 0x7283, 0x7285, 0x7286, 0x7287, 0x7288, 0x7289, - 0x728C, 0x728E, 0x7290, 0x7291, 0x7293, 0x7294, 0x7295, 0x7296, - 0x7297, 0x7298, 0x7299, 0x729A, 0x729B, 0x729C, 0x729D, 0x729E, - 0x72A0, 0x72A1, 0x72A2, 0x72A3, 0x72A4, 0x72A5, 0x72A6, 0x72A7, - 0x72A8, 0x72A9, 0x72AA, 0x72AB, 0x72AE, 0x72B1, 0x72B2, 0x72B3, - 0x72B5, 0x72BA, 0x72BB, 0x72BC, 0x72BD, 0x72BE, 0x72BF, 0x72C0, - 0x72C5, 0x72C6, 0x72C7, 0x72C9, 0x72CA, 0x72CB, 0x72CC, 0x72CF, - 0x72D1, 0x72D3, 0x72D4, 0x72D5, 0x72D6, 0x72D8, 0x72DA, 0x72DB, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane 25 -at 0x00 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0x3000, 0x3001, 0x3002, 0x00B7, 0x02C9, 0x02C7, 0x00A8, 0x3003, - 0x3005, 0x2014, 0xFF5E, 0x2016, 0x2026, 0x2018, 0x2019, 0x201C, - 0x201D, 0x3014, 0x3015, 0x3008, 0x3009, 0x300A, 0x300B, 0x300C, - 0x300D, 0x300E, 0x300F, 0x3016, 0x3017, 0x3010, 0x3011, 0x00B1, - 0x00D7, 0x00F7, 0x2236, 0x2227, 0x2228, 0x2211, 0x220F, 0x222A, - 0x2229, 0x2208, 0x2237, 0x221A, 0x22A5, 0x2225, 0x2220, 0x2312, - 0x2299, 0x222B, 0x222E, 0x2261, 0x224C, 0x2248, 0x223D, 0x221D, - 0x2260, 0x226E, 0x226F, 0x2264, 0x2265, 0x221E, 0x2235, 0x2234, - 0x2642, 0x2640, 0x00B0, 0x2032, 0x2033, 0x2103, 0xFF04, 0x00A4, - 0xFFE0, 0xFFE1, 0x2030, 0x00A7, 0x2116, 0x2606, 0x2605, 0x25CB, - 0x25CF, 0x25CE, 0x25C7, 0x25C6, 0x25A1, 0x25A0, 0x25B3, 0x25B2, - 0x203B, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0x2170, 0x2171, - 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, - 0, 0, 0, 0, 0, 0, 0x2488, 0x2489, - 0x248A, 0x248B, 0x248C, 0x248D, 0x248E, 0x248F, 0x2490, 0x2491, - 0x2492, 0x2493, 0x2494, 0x2495, 0x2496, 0x2497, 0x2498, 0x2499, -plane 26 -at 0x00 - 0x249A, 0x249B, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, - 0x247A, 0x247B, 0x247C, 0x247D, 0x247E, 0x247F, 0x2480, 0x2481, - 0x2482, 0x2483, 0x2484, 0x2485, 0x2486, 0x2487, 0x2460, 0x2461, - 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, - 0, 0, 0x3220, 0x3221, 0x3222, 0x3223, 0x3224, 0x3225, - 0x3226, 0x3227, 0x3228, 0x3229, 0, 0, 0x2160, 0x2161, - 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, - 0x216A, 0x216B, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0xFF01, 0xFF02, 0xFF03, 0xFFE5, - 0xFF05, 0xFF06, 0xFF07, 0xFF08, 0xFF09, 0xFF0A, 0xFF0B, 0xFF0C, - 0xFF0D, 0xFF0E, 0xFF0F, 0xFF10, 0xFF11, 0xFF12, 0xFF13, 0xFF14, - 0xFF15, 0xFF16, 0xFF17, 0xFF18, 0xFF19, 0xFF1A, 0xFF1B, 0xFF1C, - 0xFF1D, 0xFF1E, 0xFF1F, 0xFF20, 0xFF21, 0xFF22, 0xFF23, 0xFF24, - 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, - 0xFF2D, 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, - 0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0xFF3B, 0xFF3C, - 0xFF3D, 0xFF3E, 0xFF3F, 0xFF40, 0xFF41, 0xFF42, 0xFF43, 0xFF44, - 0xFF45, 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, - 0xFF4D, 0xFF4E, 0xFF4F, 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, - 0xFF55, 0xFF56, 0xFF57, 0xFF58, 0xFF59, 0xFF5A, 0xFF5B, 0xFF5C, - 0xFF5D, 0xFFE3, 0, 0, 0, 0, 0, 0, -plane 27 -at 0x00 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, - 0x3047, 0x3048, 0x3049, 0x304A, 0x304B, 0x304C, 0x304D, 0x304E, - 0x304F, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, - 0x3057, 0x3058, 0x3059, 0x305A, 0x305B, 0x305C, 0x305D, 0x305E, - 0x305F, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, - 0x3067, 0x3068, 0x3069, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, - 0x306F, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, - 0x3077, 0x3078, 0x3079, 0x307A, 0x307B, 0x307C, 0x307D, 0x307E, - 0x307F, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, - 0x3087, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308E, - 0x308F, 0x3090, 0x3091, 0x3092, 0x3093, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane 28 -at 0x00 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0x30A1, 0x30A2, 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, 0x30A8, - 0x30A9, 0x30AA, 0x30AB, 0x30AC, 0x30AD, 0x30AE, 0x30AF, 0x30B0, - 0x30B1, 0x30B2, 0x30B3, 0x30B4, 0x30B5, 0x30B6, 0x30B7, 0x30B8, - 0x30B9, 0x30BA, 0x30BB, 0x30BC, 0x30BD, 0x30BE, 0x30BF, 0x30C0, - 0x30C1, 0x30C2, 0x30C3, 0x30C4, 0x30C5, 0x30C6, 0x30C7, 0x30C8, - 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D0, - 0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7, 0x30D8, - 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF, 0x30E0, - 0x30E1, 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7, 0x30E8, - 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF, 0x30F0, - 0x30F1, 0x30F2, 0x30F3, 0x30F4, 0x30F5, 0x30F6, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0x0391, 0x0392, - 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039A, - 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, 0x03A0, 0x03A1, 0x03A3, - 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, 0, 0, - 0, 0, 0, 0, 0, 0, 0x03B1, 0x03B2, - 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA, -plane 29 -at 0x00 - 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3, - 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0, 0, - 0, 0, 0, 0, 0, 0xFE35, 0xFE36, 0xFE39, - 0xFE3A, 0xFE3F, 0xFE40, 0xFE3D, 0xFE3E, 0xFE41, 0xFE42, 0xFE43, - 0xFE44, 0, 0, 0xFE3B, 0xFE3C, 0xFE37, 0xFE38, 0xFE31, - 0, 0xFE33, 0xFE34, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0x0410, 0x0411, 0x0412, 0x0413, - 0x0414, 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, - 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, 0x0420, 0x0421, 0x0422, - 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, - 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0x0430, 0x0431, 0x0432, 0x0433, - 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, - 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, 0x0440, 0x0441, 0x0442, - 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, - 0x044B, 0x044C, 0x044D, 0x044E, 0x044F, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0x02CA, 0x02CB, 0x02D9, 0x2013, 0x2015, 0x2025, - 0x2035, 0x2105, 0x2109, 0x2196, 0x2197, 0x2198, 0x2199, 0x2215, -plane 30 -at 0x00 - 0x221F, 0x2223, 0x2252, 0x2266, 0x2267, 0x22BF, 0x2550, 0x2551, - 0x2552, 0x2553, 0x2554, 0x2555, 0x2556, 0x2557, 0x2558, 0x2559, - 0x255A, 0x255B, 0x255C, 0x255D, 0x255E, 0x255F, 0x2560, 0x2561, - 0x2562, 0x2563, 0x2564, 0x2565, 0x2566, 0x2567, 0x2568, 0x2569, - 0x256A, 0x256B, 0x256C, 0x256D, 0x256E, 0x256F, 0x2570, 0x2571, - 0x2572, 0x2573, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586, - 0x2587, 0x2588, 0x2589, 0x258A, 0x258B, 0x258C, 0x258D, 0x258E, - 0x258F, 0x2593, 0x2594, 0x2595, 0x25BC, 0x25BD, 0x25E2, 0x25E3, - 0x25E4, 0x25E5, 0x2609, 0x2295, 0x3012, 0x301D, 0x301E, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0x0101, 0x00E1, 0x01CE, 0x00E0, 0x0113, 0x00E9, - 0x011B, 0x00E8, 0x012B, 0x00ED, 0x01D0, 0x00EC, 0x014D, 0x00F3, - 0x01D2, 0x00F2, 0x016B, 0x00FA, 0x01D4, 0x00F9, 0x01D6, 0x01D8, - 0x01DA, 0x01DC, 0x00FC, 0x00EA, 0x0251, 0xE7C7, 0x0144, 0x0148, - 0xE7C8, 0x0261, 0, 0, 0, 0, 0x3105, 0x3106, - 0x3107, 0x3108, 0x3109, 0x310A, 0x310B, 0x310C, 0x310D, 0x310E, - 0x310F, 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, - 0x3117, 0x3118, 0x3119, 0x311A, 0x311B, 0x311C, 0x311D, 0x311E, - 0x311F, 0x3120, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, - 0x3127, 0x3128, 0x3129, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027, 0x3028, - 0x3029, 0x32A3, 0x338E, 0x338F, 0x339C, 0x339D, 0x339E, 0x33A1, - 0x33C4, 0x33CE, 0x33D1, 0x33D2, 0x33D5, 0xFE30, 0xFFE2, 0xFFE4, - 0, 0x2121, 0x3231, 0, 0x2010, 0, 0, 0, - 0x30FC, 0x309B, 0x309C, 0x30FD, 0x30FE, 0x3006, 0x309D, 0x309E, - 0xFE49, 0xFE4A, 0xFE4B, 0xFE4C, 0xFE4D, 0xFE4E, 0xFE4F, 0xFE50, - 0xFE51, 0xFE52, 0xFE54, 0xFE55, 0xFE56, 0xFE57, 0xFE59, 0xFE5A, - 0xFE5B, 0xFE5C, 0xFE5D, 0xFE5E, 0xFE5F, 0xFE60, 0xFE61, 0xFE62, - 0xFE63, 0xFE64, 0xFE65, 0xFE66, 0xFE68, 0xFE69, 0xFE6A, 0xFE6B, - 0xE7E7, 0xE7E8, 0xE7E9, 0xE7EA, 0xE7EB, 0xE7EC, 0xE7ED, 0xE7EE, -plane 31 -at 0x00 - 0xE7EF, 0xE7F0, 0xE7F1, 0xE7F2, 0xE7F3, 0x3007, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0x2500, 0x2501, 0x2502, 0x2503, 0x2504, - 0x2505, 0x2506, 0x2507, 0x2508, 0x2509, 0x250A, 0x250B, 0x250C, - 0x250D, 0x250E, 0x250F, 0x2510, 0x2511, 0x2512, 0x2513, 0x2514, - 0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x251A, 0x251B, 0x251C, - 0x251D, 0x251E, 0x251F, 0x2520, 0x2521, 0x2522, 0x2523, 0x2524, - 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252A, 0x252B, 0x252C, - 0x252D, 0x252E, 0x252F, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, - 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253A, 0x253B, 0x253C, - 0x253D, 0x253E, 0x253F, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, - 0x2545, 0x2546, 0x2547, 0x2548, 0x2549, 0x254A, 0x254B, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0x72DC, 0x72DD, - 0x72DF, 0x72E2, 0x72E3, 0x72E4, 0x72E5, 0x72E6, 0x72E7, 0x72EA, - 0x72EB, 0x72F5, 0x72F6, 0x72F9, 0x72FD, 0x72FE, 0x72FF, 0x7300, - 0x7302, 0x7304, 0x7305, 0x7306, 0x7307, 0x7308, 0x7309, 0x730B, - 0x730C, 0x730D, 0x730F, 0x7310, 0x7311, 0x7312, 0x7314, 0x7318, - 0x7319, 0x731A, 0x731F, 0x7320, 0x7323, 0x7324, 0x7326, 0x7327, - 0x7328, 0x732D, 0x732F, 0x7330, 0x7332, 0x7333, 0x7335, 0x7336, - 0x733A, 0x733B, 0x733C, 0x733D, 0x7340, 0x7341, 0x7342, 0x7343, - 0x7344, 0x7345, 0x7346, 0x7347, 0x7348, 0x7349, 0x734A, 0x734B, - 0x734C, 0x734E, 0x734F, 0x7351, 0x7353, 0x7354, 0x7355, 0x7356, - 0x7358, 0x7359, 0x735A, 0x735B, 0x735C, 0x735D, 0x735E, 0x735F, - 0x7361, 0x7362, 0x7363, 0x7364, 0x7365, 0x7366, 0x7367, 0x7368, - 0x7369, 0x736A, 0x736B, 0x736E, 0x7370, 0x7371, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane 32 -at 0x00 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0x7372, 0x7373, 0x7374, 0x7375, - 0x7376, 0x7377, 0x7378, 0x7379, 0x737A, 0x737B, 0x737C, 0x737D, - 0x737F, 0x7380, 0x7381, 0x7382, 0x7383, 0x7385, 0x7386, 0x7388, - 0x738A, 0x738C, 0x738D, 0x738F, 0x7390, 0x7392, 0x7393, 0x7394, - 0x7395, 0x7397, 0x7398, 0x7399, 0x739A, 0x739C, 0x739D, 0x739E, - 0x73A0, 0x73A1, 0x73A3, 0x73A4, 0x73A5, 0x73A6, 0x73A7, 0x73A8, - 0x73AA, 0x73AC, 0x73AD, 0x73B1, 0x73B4, 0x73B5, 0x73B6, 0x73B8, - 0x73B9, 0x73BC, 0x73BD, 0x73BE, 0x73BF, 0x73C1, 0x73C3, 0x73C4, - 0x73C5, 0x73C6, 0x73C7, 0x73CB, 0x73CC, 0x73CE, 0x73D2, 0x73D3, - 0x73D4, 0x73D5, 0x73D6, 0x73D7, 0x73D8, 0x73DA, 0x73DB, 0x73DC, - 0x73DD, 0x73DF, 0x73E1, 0x73E2, 0x73E3, 0x73E4, 0x73E6, 0x73E8, - 0x73EA, 0x73EB, 0x73EC, 0x73EE, 0x73EF, 0x73F0, 0x73F1, 0x73F3, - 0x73F4, 0x73F5, 0x73F6, 0x73F7, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0x73F8, 0x73F9, 0x73FA, 0x73FB, 0x73FC, 0x73FD, - 0x73FE, 0x73FF, 0x7400, 0x7401, 0x7402, 0x7404, 0x7407, 0x7408, - 0x740B, 0x740C, 0x740D, 0x740E, 0x7411, 0x7412, 0x7413, 0x7414, -plane 33 -at 0x00 - 0x7415, 0x7416, 0x7417, 0x7418, 0x7419, 0x741C, 0x741D, 0x741E, - 0x741F, 0x7420, 0x7421, 0x7423, 0x7424, 0x7427, 0x7429, 0x742B, - 0x742D, 0x742F, 0x7431, 0x7432, 0x7437, 0x7438, 0x7439, 0x743A, - 0x743B, 0x743D, 0x743E, 0x743F, 0x7440, 0x7442, 0x7443, 0x7444, - 0x7445, 0x7446, 0x7447, 0x7448, 0x7449, 0x744A, 0x744B, 0x744C, - 0x744D, 0x744E, 0x744F, 0x7450, 0x7451, 0x7452, 0x7453, 0x7454, - 0x7456, 0x7458, 0x745D, 0x7460, 0x7461, 0x7462, 0x7463, 0x7464, - 0x7465, 0x7466, 0x7467, 0x7468, 0x7469, 0x746A, 0x746B, 0x746C, - 0x746E, 0x746F, 0x7471, 0x7472, 0x7473, 0x7474, 0x7475, 0x7478, - 0x7479, 0x747A, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0x747B, 0x747C, 0x747D, 0x747F, 0x7482, 0x7484, 0x7485, 0x7486, - 0x7488, 0x7489, 0x748A, 0x748C, 0x748D, 0x748F, 0x7491, 0x7492, - 0x7493, 0x7494, 0x7495, 0x7496, 0x7497, 0x7498, 0x7499, 0x749A, - 0x749B, 0x749D, 0x749F, 0x74A0, 0x74A1, 0x74A2, 0x74A3, 0x74A4, - 0x74A5, 0x74A6, 0x74AA, 0x74AB, 0x74AC, 0x74AD, 0x74AE, 0x74AF, - 0x74B0, 0x74B1, 0x74B2, 0x74B3, 0x74B4, 0x74B5, 0x74B6, 0x74B7, - 0x74B8, 0x74B9, 0x74BB, 0x74BC, 0x74BD, 0x74BE, 0x74BF, 0x74C0, - 0x74C1, 0x74C2, 0x74C3, 0x74C4, 0x74C5, 0x74C6, 0x74C7, 0x74C8, - 0x74C9, 0x74CA, 0x74CB, 0x74CC, 0x74CD, 0x74CE, 0x74CF, 0x74D0, - 0x74D1, 0x74D3, 0x74D4, 0x74D5, 0x74D6, 0x74D7, 0x74D8, 0x74D9, - 0x74DA, 0x74DB, 0x74DD, 0x74DF, 0x74E1, 0x74E5, 0x74E7, 0x74E8, -plane 34 -at 0x00 - 0x74E9, 0x74EA, 0x74EB, 0x74EC, 0x74ED, 0x74F0, 0x74F1, 0x74F2, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0x74F3, 0x74F5, - 0x74F8, 0x74F9, 0x74FA, 0x74FB, 0x74FC, 0x74FD, 0x74FE, 0x7500, - 0x7501, 0x7502, 0x7503, 0x7505, 0x7506, 0x7507, 0x7508, 0x7509, - 0x750A, 0x750B, 0x750C, 0x750E, 0x7510, 0x7512, 0x7514, 0x7515, - 0x7516, 0x7517, 0x751B, 0x751D, 0x751E, 0x7520, 0x7521, 0x7522, - 0x7523, 0x7524, 0x7526, 0x7527, 0x752A, 0x752E, 0x7534, 0x7536, - 0x7539, 0x753C, 0x753D, 0x753F, 0x7541, 0x7542, 0x7543, 0x7544, - 0x7546, 0x7547, 0x7549, 0x754A, 0x754D, 0x7550, 0x7551, 0x7552, - 0x7553, 0x7555, 0x7556, 0x7557, 0x7558, 0x755D, 0x755E, 0x755F, - 0x7560, 0x7561, 0x7562, 0x7563, 0x7564, 0x7567, 0x7568, 0x7569, - 0x756B, 0x756C, 0x756D, 0x756E, 0x756F, 0x7570, 0x7571, 0x7573, - 0x7575, 0x7576, 0x7577, 0x757A, 0x757B, 0x757C, 0x757D, 0x757E, - 0x7580, 0x7581, 0x7582, 0x7584, 0x7585, 0x7587, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane 35 -at 0x00 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0x7588, 0x7589, 0x758A, 0x758C, - 0x758D, 0x758E, 0x7590, 0x7593, 0x7595, 0x7598, 0x759B, 0x759C, - 0x759E, 0x75A2, 0x75A6, 0x75A7, 0x75A8, 0x75A9, 0x75AA, 0x75AD, - 0x75B6, 0x75B7, 0x75BA, 0x75BB, 0x75BF, 0x75C0, 0x75C1, 0x75C6, - 0x75CB, 0x75CC, 0x75CE, 0x75CF, 0x75D0, 0x75D1, 0x75D3, 0x75D7, - 0x75D9, 0x75DA, 0x75DC, 0x75DD, 0x75DF, 0x75E0, 0x75E1, 0x75E5, - 0x75E9, 0x75EC, 0x75ED, 0x75EE, 0x75EF, 0x75F2, 0x75F3, 0x75F5, - 0x75F6, 0x75F7, 0x75F8, 0x75FA, 0x75FB, 0x75FD, 0x75FE, 0x7602, - 0x7604, 0x7606, 0x7607, 0x7608, 0x7609, 0x760B, 0x760D, 0x760E, - 0x760F, 0x7611, 0x7612, 0x7613, 0x7614, 0x7616, 0x761A, 0x761C, - 0x761D, 0x761E, 0x7621, 0x7623, 0x7627, 0x7628, 0x762C, 0x762E, - 0x762F, 0x7631, 0x7632, 0x7636, 0x7637, 0x7639, 0x763A, 0x763B, - 0x763D, 0x7641, 0x7642, 0x7644, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0x7645, 0x7646, 0x7647, 0x7648, 0x7649, 0x764A, - 0x764B, 0x764E, 0x764F, 0x7650, 0x7651, 0x7652, 0x7653, 0x7655, - 0x7657, 0x7658, 0x7659, 0x765A, 0x765B, 0x765D, 0x765F, 0x7660, - 0x7661, 0x7662, 0x7664, 0x7665, 0x7666, 0x7667, 0x7668, 0x7669, -plane 36 -at 0x00 - 0x766A, 0x766C, 0x766D, 0x766E, 0x7670, 0x7671, 0x7672, 0x7673, - 0x7674, 0x7675, 0x7676, 0x7677, 0x7679, 0x767A, 0x767C, 0x767F, - 0x7680, 0x7681, 0x7683, 0x7685, 0x7689, 0x768A, 0x768C, 0x768D, - 0x768F, 0x7690, 0x7692, 0x7694, 0x7695, 0x7697, 0x7698, 0x769A, - 0x769B, 0x769C, 0x769D, 0x769E, 0x769F, 0x76A0, 0x76A1, 0x76A2, - 0x76A3, 0x76A5, 0x76A6, 0x76A7, 0x76A8, 0x76A9, 0x76AA, 0x76AB, - 0x76AC, 0x76AD, 0x76AF, 0x76B0, 0x76B3, 0x76B5, 0x76B6, 0x76B7, - 0x76B8, 0x76B9, 0x76BA, 0x76BB, 0x76BC, 0x76BD, 0x76BE, 0x76C0, - 0x76C1, 0x76C3, 0x554A, 0x963F, 0x57C3, 0x6328, 0x54CE, 0x5509, - 0x54C0, 0x7691, 0x764C, 0x853C, 0x77EE, 0x827E, 0x788D, 0x7231, - 0x9698, 0x978D, 0x6C28, 0x5B89, 0x4FFA, 0x6309, 0x6697, 0x5CB8, - 0x80FA, 0x6848, 0x80AE, 0x6602, 0x76CE, 0x51F9, 0x6556, 0x71AC, - 0x7FF1, 0x8884, 0x50B2, 0x5965, 0x61CA, 0x6FB3, 0x82AD, 0x634C, - 0x6252, 0x53ED, 0x5427, 0x7B06, 0x516B, 0x75A4, 0x5DF4, 0x62D4, - 0x8DCB, 0x9776, 0x628A, 0x8019, 0x575D, 0x9738, 0x7F62, 0x7238, - 0x767D, 0x67CF, 0x767E, 0x6446, 0x4F70, 0x8D25, 0x62DC, 0x7A17, - 0x6591, 0x73ED, 0x642C, 0x6273, 0x822C, 0x9881, 0x677F, 0x7248, - 0x626E, 0x62CC, 0x4F34, 0x74E3, 0x534A, 0x529E, 0x7ECA, 0x90A6, - 0x5E2E, 0x6886, 0x699C, 0x8180, 0x7ED1, 0x68D2, 0x78C5, 0x868C, - 0x9551, 0x508D, 0x8C24, 0x82DE, 0x80DE, 0x5305, 0x8912, 0x5265, - 0x76C4, 0x76C7, 0x76C9, 0x76CB, 0x76CC, 0x76D3, 0x76D5, 0x76D9, - 0x76DA, 0x76DC, 0x76DD, 0x76DE, 0x76E0, 0x76E1, 0x76E2, 0x76E3, - 0x76E4, 0x76E6, 0x76E7, 0x76E8, 0x76E9, 0x76EA, 0x76EB, 0x76EC, - 0x76ED, 0x76F0, 0x76F3, 0x76F5, 0x76F6, 0x76F7, 0x76FA, 0x76FB, - 0x76FD, 0x76FF, 0x7700, 0x7702, 0x7703, 0x7705, 0x7706, 0x770A, - 0x770C, 0x770E, 0x770F, 0x7710, 0x7711, 0x7712, 0x7713, 0x7714, - 0x7715, 0x7716, 0x7717, 0x7718, 0x771B, 0x771C, 0x771D, 0x771E, - 0x7721, 0x7723, 0x7724, 0x7725, 0x7727, 0x772A, 0x772B, 0x772C, - 0x772E, 0x7730, 0x7731, 0x7732, 0x7733, 0x7734, 0x7739, 0x773B, - 0x773D, 0x773E, 0x773F, 0x7742, 0x7744, 0x7745, 0x7746, 0x7748, - 0x7749, 0x774A, 0x774B, 0x774C, 0x774D, 0x774E, 0x774F, 0x7752, - 0x7753, 0x7754, 0x7755, 0x7756, 0x7757, 0x7758, 0x7759, 0x775C, -plane 37 -at 0x00 - 0x8584, 0x96F9, 0x4FDD, 0x5821, 0x9971, 0x5B9D, 0x62B1, 0x62A5, - 0x66B4, 0x8C79, 0x9C8D, 0x7206, 0x676F, 0x7891, 0x60B2, 0x5351, - 0x5317, 0x8F88, 0x80CC, 0x8D1D, 0x94A1, 0x500D, 0x72C8, 0x5907, - 0x60EB, 0x7119, 0x88AB, 0x5954, 0x82EF, 0x672C, 0x7B28, 0x5D29, - 0x7EF7, 0x752D, 0x6CF5, 0x8E66, 0x8FF8, 0x903C, 0x9F3B, 0x6BD4, - 0x9119, 0x7B14, 0x5F7C, 0x78A7, 0x84D6, 0x853D, 0x6BD5, 0x6BD9, - 0x6BD6, 0x5E01, 0x5E87, 0x75F9, 0x95ED, 0x655D, 0x5F0A, 0x5FC5, - 0x8F9F, 0x58C1, 0x81C2, 0x907F, 0x965B, 0x97AD, 0x8FB9, 0x7F16, - 0x8D2C, 0x6241, 0x4FBF, 0x53D8, 0x535E, 0x8FA8, 0x8FA9, 0x8FAB, - 0x904D, 0x6807, 0x5F6A, 0x8198, 0x8868, 0x9CD6, 0x618B, 0x522B, - 0x762A, 0x5F6C, 0x658C, 0x6FD2, 0x6EE8, 0x5BBE, 0x6448, 0x5175, - 0x51B0, 0x67C4, 0x4E19, 0x79C9, 0x997C, 0x70B3, 0x775D, 0x775E, - 0x775F, 0x7760, 0x7764, 0x7767, 0x7769, 0x776A, 0x776D, 0x776E, - 0x776F, 0x7770, 0x7771, 0x7772, 0x7773, 0x7774, 0x7775, 0x7776, - 0x7777, 0x7778, 0x777A, 0x777B, 0x777C, 0x7781, 0x7782, 0x7783, - 0x7786, 0x7787, 0x7788, 0x7789, 0x778A, 0x778B, 0x778F, 0x7790, - 0x7793, 0x7794, 0x7795, 0x7796, 0x7797, 0x7798, 0x7799, 0x779A, - 0x779B, 0x779C, 0x779D, 0x779E, 0x77A1, 0x77A3, 0x77A4, 0x77A6, - 0x77A8, 0x77AB, 0x77AD, 0x77AE, 0x77AF, 0x77B1, 0x77B2, 0x77B4, - 0x77B6, 0x77B7, 0x77B8, 0x77B9, 0x77BA, 0x77BC, 0x77BE, 0x77C0, - 0x77C1, 0x77C2, 0x77C3, 0x77C4, 0x77C5, 0x77C6, 0x77C7, 0x77C8, - 0x77C9, 0x77CA, 0x77CB, 0x77CC, 0x77CE, 0x77CF, 0x77D0, 0x77D1, - 0x77D2, 0x77D3, 0x77D4, 0x77D5, 0x77D6, 0x77D8, 0x77D9, 0x77DA, - 0x77DD, 0x77DE, 0x77DF, 0x77E0, 0x77E1, 0x77E4, 0x75C5, 0x5E76, - 0x73BB, 0x83E0, 0x64AD, 0x62E8, 0x94B5, 0x6CE2, 0x535A, 0x52C3, - 0x640F, 0x94C2, 0x7B94, 0x4F2F, 0x5E1B, 0x8236, 0x8116, 0x818A, - 0x6E24, 0x6CCA, 0x9A73, 0x6355, 0x535C, 0x54FA, 0x8865, 0x57E0, - 0x4E0D, 0x5E03, 0x6B65, 0x7C3F, 0x90E8, 0x6016, 0x64E6, 0x731C, - 0x88C1, 0x6750, 0x624D, 0x8D22, 0x776C, 0x8E29, 0x91C7, 0x5F69, - 0x83DC, 0x8521, 0x9910, 0x53C2, 0x8695, 0x6B8B, 0x60ED, 0x60E8, - 0x707F, 0x82CD, 0x8231, 0x4ED3, 0x6CA7, 0x85CF, 0x64CD, 0x7CD9, - 0x69FD, 0x66F9, 0x8349, 0x5395, 0x7B56, 0x4FA7, 0x518C, 0x6D4B, -plane 38 -at 0x00 - 0x5C42, 0x8E6D, 0x63D2, 0x53C9, 0x832C, 0x8336, 0x67E5, 0x78B4, - 0x643D, 0x5BDF, 0x5C94, 0x5DEE, 0x8BE7, 0x62C6, 0x67F4, 0x8C7A, - 0x6400, 0x63BA, 0x8749, 0x998B, 0x8C17, 0x7F20, 0x94F2, 0x4EA7, - 0x9610, 0x98A4, 0x660C, 0x7316, 0x77E6, 0x77E8, 0x77EA, 0x77EF, - 0x77F0, 0x77F1, 0x77F2, 0x77F4, 0x77F5, 0x77F7, 0x77F9, 0x77FA, - 0x77FB, 0x77FC, 0x7803, 0x7804, 0x7805, 0x7806, 0x7807, 0x7808, - 0x780A, 0x780B, 0x780E, 0x780F, 0x7810, 0x7813, 0x7815, 0x7819, - 0x781B, 0x781E, 0x7820, 0x7821, 0x7822, 0x7824, 0x7828, 0x782A, - 0x782B, 0x782E, 0x782F, 0x7831, 0x7832, 0x7833, 0x7835, 0x7836, - 0x783D, 0x783F, 0x7841, 0x7842, 0x7843, 0x7844, 0x7846, 0x7848, - 0x7849, 0x784A, 0x784B, 0x784D, 0x784F, 0x7851, 0x7853, 0x7854, - 0x7858, 0x7859, 0x785A, 0x785B, 0x785C, 0x785E, 0x785F, 0x7860, - 0x7861, 0x7862, 0x7863, 0x7864, 0x7865, 0x7866, 0x7867, 0x7868, - 0x7869, 0x786F, 0x7870, 0x7871, 0x7872, 0x7873, 0x7874, 0x7875, - 0x7876, 0x7878, 0x7879, 0x787A, 0x787B, 0x787D, 0x787E, 0x787F, - 0x7880, 0x7881, 0x7882, 0x7883, 0x573A, 0x5C1D, 0x5E38, 0x957F, - 0x507F, 0x80A0, 0x5382, 0x655E, 0x7545, 0x5531, 0x5021, 0x8D85, - 0x6284, 0x949E, 0x671D, 0x5632, 0x6F6E, 0x5DE2, 0x5435, 0x7092, - 0x8F66, 0x626F, 0x64A4, 0x63A3, 0x5F7B, 0x6F88, 0x90F4, 0x81E3, - 0x8FB0, 0x5C18, 0x6668, 0x5FF1, 0x6C89, 0x9648, 0x8D81, 0x886C, - 0x6491, 0x79F0, 0x57CE, 0x6A59, 0x6210, 0x5448, 0x4E58, 0x7A0B, - 0x60E9, 0x6F84, 0x8BDA, 0x627F, 0x901E, 0x9A8B, 0x79E4, 0x5403, - 0x75F4, 0x6301, 0x5319, 0x6C60, 0x8FDF, 0x5F1B, 0x9A70, 0x803B, - 0x9F7F, 0x4F88, 0x5C3A, 0x8D64, 0x7FC5, 0x65A5, 0x70BD, 0x5145, - 0x51B2, 0x866B, 0x5D07, 0x5BA0, 0x62BD, 0x916C, 0x7574, 0x8E0C, - 0x7A20, 0x6101, 0x7B79, 0x4EC7, 0x7EF8, 0x7785, 0x4E11, 0x81ED, - 0x521D, 0x51FA, 0x6A71, 0x53A8, 0x8E87, 0x9504, 0x96CF, 0x6EC1, - 0x9664, 0x695A, 0x7884, 0x7885, 0x7886, 0x7888, 0x788A, 0x788B, - 0x788F, 0x7890, 0x7892, 0x7894, 0x7895, 0x7896, 0x7899, 0x789D, - 0x789E, 0x78A0, 0x78A2, 0x78A4, 0x78A6, 0x78A8, 0x78A9, 0x78AA, - 0x78AB, 0x78AC, 0x78AD, 0x78AE, 0x78AF, 0x78B5, 0x78B6, 0x78B7, - 0x78B8, 0x78BA, 0x78BB, 0x78BC, 0x78BD, 0x78BF, 0x78C0, 0x78C2, -plane 39 -at 0x00 - 0x78C3, 0x78C4, 0x78C6, 0x78C7, 0x78C8, 0x78CC, 0x78CD, 0x78CE, - 0x78CF, 0x78D1, 0x78D2, 0x78D3, 0x78D6, 0x78D7, 0x78D8, 0x78DA, - 0x78DB, 0x78DC, 0x78DD, 0x78DE, 0x78DF, 0x78E0, 0x78E1, 0x78E2, - 0x78E3, 0x78E4, 0x78E5, 0x78E6, 0x78E7, 0x78E9, 0x78EA, 0x78EB, - 0x78ED, 0x78EE, 0x78EF, 0x78F0, 0x78F1, 0x78F3, 0x78F5, 0x78F6, - 0x78F8, 0x78F9, 0x78FB, 0x78FC, 0x78FD, 0x78FE, 0x78FF, 0x7900, - 0x7902, 0x7903, 0x7904, 0x7906, 0x7907, 0x7908, 0x7909, 0x790A, - 0x790B, 0x790C, 0x7840, 0x50A8, 0x77D7, 0x6410, 0x89E6, 0x5904, - 0x63E3, 0x5DDD, 0x7A7F, 0x693D, 0x4F20, 0x8239, 0x5598, 0x4E32, - 0x75AE, 0x7A97, 0x5E62, 0x5E8A, 0x95EF, 0x521B, 0x5439, 0x708A, - 0x6376, 0x9524, 0x5782, 0x6625, 0x693F, 0x9187, 0x5507, 0x6DF3, - 0x7EAF, 0x8822, 0x6233, 0x7EF0, 0x75B5, 0x8328, 0x78C1, 0x96CC, - 0x8F9E, 0x6148, 0x74F7, 0x8BCD, 0x6B64, 0x523A, 0x8D50, 0x6B21, - 0x806A, 0x8471, 0x56F1, 0x5306, 0x4ECE, 0x4E1B, 0x51D1, 0x7C97, - 0x918B, 0x7C07, 0x4FC3, 0x8E7F, 0x7BE1, 0x7A9C, 0x6467, 0x5D14, - 0x50AC, 0x8106, 0x7601, 0x7CB9, 0x6DEC, 0x7FE0, 0x6751, 0x5B58, - 0x5BF8, 0x78CB, 0x64AE, 0x6413, 0x63AA, 0x632B, 0x9519, 0x642D, - 0x8FBE, 0x7B54, 0x7629, 0x6253, 0x5927, 0x5446, 0x6B79, 0x50A3, - 0x6234, 0x5E26, 0x6B86, 0x4EE3, 0x8D37, 0x888B, 0x5F85, 0x902E, - 0x790D, 0x790E, 0x790F, 0x7910, 0x7911, 0x7912, 0x7914, 0x7915, - 0x7916, 0x7917, 0x7918, 0x7919, 0x791A, 0x791B, 0x791C, 0x791D, - 0x791F, 0x7920, 0x7921, 0x7922, 0x7923, 0x7925, 0x7926, 0x7927, - 0x7928, 0x7929, 0x792A, 0x792B, 0x792C, 0x792D, 0x792E, 0x792F, - 0x7930, 0x7931, 0x7932, 0x7933, 0x7935, 0x7936, 0x7937, 0x7938, - 0x7939, 0x793D, 0x793F, 0x7942, 0x7943, 0x7944, 0x7945, 0x7947, - 0x794A, 0x794B, 0x794C, 0x794D, 0x794E, 0x794F, 0x7950, 0x7951, - 0x7952, 0x7954, 0x7955, 0x7958, 0x7959, 0x7961, 0x7963, 0x7964, - 0x7966, 0x7969, 0x796A, 0x796B, 0x796C, 0x796E, 0x7970, 0x7971, - 0x7972, 0x7973, 0x7974, 0x7975, 0x7976, 0x7979, 0x797B, 0x797C, - 0x797D, 0x797E, 0x797F, 0x7982, 0x7983, 0x7986, 0x7987, 0x7988, - 0x7989, 0x798B, 0x798C, 0x798D, 0x798E, 0x7990, 0x7991, 0x7992, - 0x6020, 0x803D, 0x62C5, 0x4E39, 0x5355, 0x90F8, 0x63B8, 0x80C6, -plane 40 -at 0x00 - 0x65E6, 0x6C2E, 0x4F46, 0x60EE, 0x6DE1, 0x8BDE, 0x5F39, 0x86CB, - 0x5F53, 0x6321, 0x515A, 0x8361, 0x6863, 0x5200, 0x6363, 0x8E48, - 0x5012, 0x5C9B, 0x7977, 0x5BFC, 0x5230, 0x7A3B, 0x60BC, 0x9053, - 0x76D7, 0x5FB7, 0x5F97, 0x7684, 0x8E6C, 0x706F, 0x767B, 0x7B49, - 0x77AA, 0x51F3, 0x9093, 0x5824, 0x4F4E, 0x6EF4, 0x8FEA, 0x654C, - 0x7B1B, 0x72C4, 0x6DA4, 0x7FDF, 0x5AE1, 0x62B5, 0x5E95, 0x5730, - 0x8482, 0x7B2C, 0x5E1D, 0x5F1F, 0x9012, 0x7F14, 0x98A0, 0x6382, - 0x6EC7, 0x7898, 0x70B9, 0x5178, 0x975B, 0x57AB, 0x7535, 0x4F43, - 0x7538, 0x5E97, 0x60E6, 0x5960, 0x6DC0, 0x6BBF, 0x7889, 0x53FC, - 0x96D5, 0x51CB, 0x5201, 0x6389, 0x540A, 0x9493, 0x8C03, 0x8DCC, - 0x7239, 0x789F, 0x8776, 0x8FED, 0x8C0D, 0x53E0, 0x7993, 0x7994, - 0x7995, 0x7996, 0x7997, 0x7998, 0x7999, 0x799B, 0x799C, 0x799D, - 0x799E, 0x799F, 0x79A0, 0x79A1, 0x79A2, 0x79A3, 0x79A4, 0x79A5, - 0x79A6, 0x79A8, 0x79A9, 0x79AA, 0x79AB, 0x79AC, 0x79AD, 0x79AE, - 0x79AF, 0x79B0, 0x79B1, 0x79B2, 0x79B4, 0x79B5, 0x79B6, 0x79B7, - 0x79B8, 0x79BC, 0x79BF, 0x79C2, 0x79C4, 0x79C5, 0x79C7, 0x79C8, - 0x79CA, 0x79CC, 0x79CE, 0x79CF, 0x79D0, 0x79D3, 0x79D4, 0x79D6, - 0x79D7, 0x79D9, 0x79DA, 0x79DB, 0x79DC, 0x79DD, 0x79DE, 0x79E0, - 0x79E1, 0x79E2, 0x79E5, 0x79E8, 0x79EA, 0x79EC, 0x79EE, 0x79F1, - 0x79F2, 0x79F3, 0x79F4, 0x79F5, 0x79F6, 0x79F7, 0x79F9, 0x79FA, - 0x79FC, 0x79FE, 0x79FF, 0x7A01, 0x7A04, 0x7A05, 0x7A07, 0x7A08, - 0x7A09, 0x7A0A, 0x7A0C, 0x7A0F, 0x7A10, 0x7A11, 0x7A12, 0x7A13, - 0x7A15, 0x7A16, 0x7A18, 0x7A19, 0x7A1B, 0x7A1C, 0x4E01, 0x76EF, - 0x53EE, 0x9489, 0x9876, 0x9F0E, 0x952D, 0x5B9A, 0x8BA2, 0x4E22, - 0x4E1C, 0x51AC, 0x8463, 0x61C2, 0x52A8, 0x680B, 0x4F97, 0x606B, - 0x51BB, 0x6D1E, 0x515C, 0x6296, 0x6597, 0x9661, 0x8C46, 0x9017, - 0x75D8, 0x90FD, 0x7763, 0x6BD2, 0x728A, 0x72EC, 0x8BFB, 0x5835, - 0x7779, 0x8D4C, 0x675C, 0x9540, 0x809A, 0x5EA6, 0x6E21, 0x5992, - 0x7AEF, 0x77ED, 0x953B, 0x6BB5, 0x65AD, 0x7F0E, 0x5806, 0x5151, - 0x961F, 0x5BF9, 0x58A9, 0x5428, 0x8E72, 0x6566, 0x987F, 0x56E4, - 0x949D, 0x76FE, 0x9041, 0x6387, 0x54C6, 0x591A, 0x593A, 0x579B, - 0x8EB2, 0x6735, 0x8DFA, 0x8235, 0x5241, 0x60F0, 0x5815, 0x86FE, -plane 41 -at 0x00 - 0x5CE8, 0x9E45, 0x4FC4, 0x989D, 0x8BB9, 0x5A25, 0x6076, 0x5384, - 0x627C, 0x904F, 0x9102, 0x997F, 0x6069, 0x800C, 0x513F, 0x8033, - 0x5C14, 0x9975, 0x6D31, 0x4E8C, 0x7A1D, 0x7A1F, 0x7A21, 0x7A22, - 0x7A24, 0x7A25, 0x7A26, 0x7A27, 0x7A28, 0x7A29, 0x7A2A, 0x7A2B, - 0x7A2C, 0x7A2D, 0x7A2E, 0x7A2F, 0x7A30, 0x7A31, 0x7A32, 0x7A34, - 0x7A35, 0x7A36, 0x7A38, 0x7A3A, 0x7A3E, 0x7A40, 0x7A41, 0x7A42, - 0x7A43, 0x7A44, 0x7A45, 0x7A47, 0x7A48, 0x7A49, 0x7A4A, 0x7A4B, - 0x7A4C, 0x7A4D, 0x7A4E, 0x7A4F, 0x7A50, 0x7A52, 0x7A53, 0x7A54, - 0x7A55, 0x7A56, 0x7A58, 0x7A59, 0x7A5A, 0x7A5B, 0x7A5C, 0x7A5D, - 0x7A5E, 0x7A5F, 0x7A60, 0x7A61, 0x7A62, 0x7A63, 0x7A64, 0x7A65, - 0x7A66, 0x7A67, 0x7A68, 0x7A69, 0x7A6A, 0x7A6B, 0x7A6C, 0x7A6D, - 0x7A6E, 0x7A6F, 0x7A71, 0x7A72, 0x7A73, 0x7A75, 0x7A7B, 0x7A7C, - 0x7A7D, 0x7A7E, 0x7A82, 0x7A85, 0x7A87, 0x7A89, 0x7A8A, 0x7A8B, - 0x7A8C, 0x7A8E, 0x7A8F, 0x7A90, 0x7A93, 0x7A94, 0x7A99, 0x7A9A, - 0x7A9B, 0x7A9E, 0x7AA1, 0x7AA2, 0x8D30, 0x53D1, 0x7F5A, 0x7B4F, - 0x4F10, 0x4E4F, 0x9600, 0x6CD5, 0x73D0, 0x85E9, 0x5E06, 0x756A, - 0x7FFB, 0x6A0A, 0x77FE, 0x9492, 0x7E41, 0x51E1, 0x70E6, 0x53CD, - 0x8FD4, 0x8303, 0x8D29, 0x72AF, 0x996D, 0x6CDB, 0x574A, 0x82B3, - 0x65B9, 0x80AA, 0x623F, 0x9632, 0x59A8, 0x4EFF, 0x8BBF, 0x7EBA, - 0x653E, 0x83F2, 0x975E, 0x5561, 0x98DE, 0x80A5, 0x532A, 0x8BFD, - 0x5420, 0x80BA, 0x5E9F, 0x6CB8, 0x8D39, 0x82AC, 0x915A, 0x5429, - 0x6C1B, 0x5206, 0x7EB7, 0x575F, 0x711A, 0x6C7E, 0x7C89, 0x594B, - 0x4EFD, 0x5FFF, 0x6124, 0x7CAA, 0x4E30, 0x5C01, 0x67AB, 0x8702, - 0x5CF0, 0x950B, 0x98CE, 0x75AF, 0x70FD, 0x9022, 0x51AF, 0x7F1D, - 0x8BBD, 0x5949, 0x51E4, 0x4F5B, 0x5426, 0x592B, 0x6577, 0x80A4, - 0x5B75, 0x6276, 0x62C2, 0x8F90, 0x5E45, 0x6C1F, 0x7B26, 0x4F0F, - 0x4FD8, 0x670D, 0x7AA3, 0x7AA4, 0x7AA7, 0x7AA9, 0x7AAA, 0x7AAB, - 0x7AAE, 0x7AAF, 0x7AB0, 0x7AB1, 0x7AB2, 0x7AB4, 0x7AB5, 0x7AB6, - 0x7AB7, 0x7AB8, 0x7AB9, 0x7ABA, 0x7ABB, 0x7ABC, 0x7ABD, 0x7ABE, - 0x7AC0, 0x7AC1, 0x7AC2, 0x7AC3, 0x7AC4, 0x7AC5, 0x7AC6, 0x7AC7, - 0x7AC8, 0x7AC9, 0x7ACA, 0x7ACC, 0x7ACD, 0x7ACE, 0x7ACF, 0x7AD0, - 0x7AD1, 0x7AD2, 0x7AD3, 0x7AD4, 0x7AD5, 0x7AD7, 0x7AD8, 0x7ADA, -plane 42 -at 0x00 - 0x7ADB, 0x7ADC, 0x7ADD, 0x7AE1, 0x7AE2, 0x7AE4, 0x7AE7, 0x7AE8, - 0x7AE9, 0x7AEA, 0x7AEB, 0x7AEC, 0x7AEE, 0x7AF0, 0x7AF1, 0x7AF2, - 0x7AF3, 0x7AF4, 0x7AF5, 0x7AF6, 0x7AF7, 0x7AF8, 0x7AFB, 0x7AFC, - 0x7AFE, 0x7B00, 0x7B01, 0x7B02, 0x7B05, 0x7B07, 0x7B09, 0x7B0C, - 0x7B0D, 0x7B0E, 0x7B10, 0x7B12, 0x7B13, 0x7B16, 0x7B17, 0x7B18, - 0x7B1A, 0x7B1C, 0x7B1D, 0x7B1F, 0x7B21, 0x7B22, 0x7B23, 0x7B27, - 0x7B29, 0x7B2D, 0x6D6E, 0x6DAA, 0x798F, 0x88B1, 0x5F17, 0x752B, - 0x629A, 0x8F85, 0x4FEF, 0x91DC, 0x65A7, 0x812F, 0x8151, 0x5E9C, - 0x8150, 0x8D74, 0x526F, 0x8986, 0x8D4B, 0x590D, 0x5085, 0x4ED8, - 0x961C, 0x7236, 0x8179, 0x8D1F, 0x5BCC, 0x8BA3, 0x9644, 0x5987, - 0x7F1A, 0x5490, 0x5676, 0x560E, 0x8BE5, 0x6539, 0x6982, 0x9499, - 0x76D6, 0x6E89, 0x5E72, 0x7518, 0x6746, 0x67D1, 0x7AFF, 0x809D, - 0x8D76, 0x611F, 0x79C6, 0x6562, 0x8D63, 0x5188, 0x521A, 0x94A2, - 0x7F38, 0x809B, 0x7EB2, 0x5C97, 0x6E2F, 0x6760, 0x7BD9, 0x768B, - 0x9AD8, 0x818F, 0x7F94, 0x7CD5, 0x641E, 0x9550, 0x7A3F, 0x544A, - 0x54E5, 0x6B4C, 0x6401, 0x6208, 0x9E3D, 0x80F3, 0x7599, 0x5272, - 0x9769, 0x845B, 0x683C, 0x86E4, 0x9601, 0x9694, 0x94EC, 0x4E2A, - 0x5404, 0x7ED9, 0x6839, 0x8DDF, 0x8015, 0x66F4, 0x5E9A, 0x7FB9, - 0x7B2F, 0x7B30, 0x7B32, 0x7B34, 0x7B35, 0x7B36, 0x7B37, 0x7B39, - 0x7B3B, 0x7B3D, 0x7B3F, 0x7B40, 0x7B41, 0x7B42, 0x7B43, 0x7B44, - 0x7B46, 0x7B48, 0x7B4A, 0x7B4D, 0x7B4E, 0x7B53, 0x7B55, 0x7B57, - 0x7B59, 0x7B5C, 0x7B5E, 0x7B5F, 0x7B61, 0x7B63, 0x7B64, 0x7B65, - 0x7B66, 0x7B67, 0x7B68, 0x7B69, 0x7B6A, 0x7B6B, 0x7B6C, 0x7B6D, - 0x7B6F, 0x7B70, 0x7B73, 0x7B74, 0x7B76, 0x7B78, 0x7B7A, 0x7B7C, - 0x7B7D, 0x7B7F, 0x7B81, 0x7B82, 0x7B83, 0x7B84, 0x7B86, 0x7B87, - 0x7B88, 0x7B89, 0x7B8A, 0x7B8B, 0x7B8C, 0x7B8E, 0x7B8F, 0x7B91, - 0x7B92, 0x7B93, 0x7B96, 0x7B98, 0x7B99, 0x7B9A, 0x7B9B, 0x7B9E, - 0x7B9F, 0x7BA0, 0x7BA3, 0x7BA4, 0x7BA5, 0x7BAE, 0x7BAF, 0x7BB0, - 0x7BB2, 0x7BB3, 0x7BB5, 0x7BB6, 0x7BB7, 0x7BB9, 0x7BBA, 0x7BBB, - 0x7BBC, 0x7BBD, 0x7BBE, 0x7BBF, 0x7BC0, 0x7BC2, 0x7BC3, 0x7BC4, - 0x57C2, 0x803F, 0x6897, 0x5DE5, 0x653B, 0x529F, 0x606D, 0x9F9A, - 0x4F9B, 0x8EAC, 0x516C, 0x5BAB, 0x5F13, 0x5DE9, 0x6C5E, 0x62F1, -plane 43 -at 0x00 - 0x8D21, 0x5171, 0x94A9, 0x52FE, 0x6C9F, 0x82DF, 0x72D7, 0x57A2, - 0x6784, 0x8D2D, 0x591F, 0x8F9C, 0x83C7, 0x5495, 0x7B8D, 0x4F30, - 0x6CBD, 0x5B64, 0x59D1, 0x9F13, 0x53E4, 0x86CA, 0x9AA8, 0x8C37, - 0x80A1, 0x6545, 0x987E, 0x56FA, 0x96C7, 0x522E, 0x74DC, 0x5250, - 0x5BE1, 0x6302, 0x8902, 0x4E56, 0x62D0, 0x602A, 0x68FA, 0x5173, - 0x5B98, 0x51A0, 0x89C2, 0x7BA1, 0x9986, 0x7F50, 0x60EF, 0x704C, - 0x8D2F, 0x5149, 0x5E7F, 0x901B, 0x7470, 0x89C4, 0x572D, 0x7845, - 0x5F52, 0x9F9F, 0x95FA, 0x8F68, 0x9B3C, 0x8BE1, 0x7678, 0x6842, - 0x67DC, 0x8DEA, 0x8D35, 0x523D, 0x8F8A, 0x6EDA, 0x68CD, 0x9505, - 0x90ED, 0x56FD, 0x679C, 0x88F9, 0x8FC7, 0x54C8, 0x7BC5, 0x7BC8, - 0x7BC9, 0x7BCA, 0x7BCB, 0x7BCD, 0x7BCE, 0x7BCF, 0x7BD0, 0x7BD2, - 0x7BD4, 0x7BD5, 0x7BD6, 0x7BD7, 0x7BD8, 0x7BDB, 0x7BDC, 0x7BDE, - 0x7BDF, 0x7BE0, 0x7BE2, 0x7BE3, 0x7BE4, 0x7BE7, 0x7BE8, 0x7BE9, - 0x7BEB, 0x7BEC, 0x7BED, 0x7BEF, 0x7BF0, 0x7BF2, 0x7BF3, 0x7BF4, - 0x7BF5, 0x7BF6, 0x7BF8, 0x7BF9, 0x7BFA, 0x7BFB, 0x7BFD, 0x7BFF, - 0x7C00, 0x7C01, 0x7C02, 0x7C03, 0x7C04, 0x7C05, 0x7C06, 0x7C08, - 0x7C09, 0x7C0A, 0x7C0D, 0x7C0E, 0x7C10, 0x7C11, 0x7C12, 0x7C13, - 0x7C14, 0x7C15, 0x7C17, 0x7C18, 0x7C19, 0x7C1A, 0x7C1B, 0x7C1C, - 0x7C1D, 0x7C1E, 0x7C20, 0x7C21, 0x7C22, 0x7C23, 0x7C24, 0x7C25, - 0x7C28, 0x7C29, 0x7C2B, 0x7C2C, 0x7C2D, 0x7C2E, 0x7C2F, 0x7C30, - 0x7C31, 0x7C32, 0x7C33, 0x7C34, 0x7C35, 0x7C36, 0x7C37, 0x7C39, - 0x7C3A, 0x7C3B, 0x7C3C, 0x7C3D, 0x7C3E, 0x7C42, 0x9AB8, 0x5B69, - 0x6D77, 0x6C26, 0x4EA5, 0x5BB3, 0x9A87, 0x9163, 0x61A8, 0x90AF, - 0x97E9, 0x542B, 0x6DB5, 0x5BD2, 0x51FD, 0x558A, 0x7F55, 0x7FF0, - 0x64BC, 0x634D, 0x65F1, 0x61BE, 0x608D, 0x710A, 0x6C57, 0x6C49, - 0x592F, 0x676D, 0x822A, 0x58D5, 0x568E, 0x8C6A, 0x6BEB, 0x90DD, - 0x597D, 0x8017, 0x53F7, 0x6D69, 0x5475, 0x559D, 0x8377, 0x83CF, - 0x6838, 0x79BE, 0x548C, 0x4F55, 0x5408, 0x76D2, 0x8C89, 0x9602, - 0x6CB3, 0x6DB8, 0x8D6B, 0x8910, 0x9E64, 0x8D3A, 0x563F, 0x9ED1, - 0x75D5, 0x5F88, 0x72E0, 0x6068, 0x54FC, 0x4EA8, 0x6A2A, 0x8861, - 0x6052, 0x8F70, 0x54C4, 0x70D8, 0x8679, 0x9E3F, 0x6D2A, 0x5B8F, - 0x5F18, 0x7EA2, 0x5589, 0x4FAF, 0x7334, 0x543C, 0x539A, 0x5019, -plane 44 -at 0x00 - 0x540E, 0x547C, 0x4E4E, 0x5FFD, 0x745A, 0x58F6, 0x846B, 0x80E1, - 0x8774, 0x72D0, 0x7CCA, 0x6E56, 0x7C43, 0x7C44, 0x7C45, 0x7C46, - 0x7C47, 0x7C48, 0x7C49, 0x7C4A, 0x7C4B, 0x7C4C, 0x7C4E, 0x7C4F, - 0x7C50, 0x7C51, 0x7C52, 0x7C53, 0x7C54, 0x7C55, 0x7C56, 0x7C57, - 0x7C58, 0x7C59, 0x7C5A, 0x7C5B, 0x7C5C, 0x7C5D, 0x7C5E, 0x7C5F, - 0x7C60, 0x7C61, 0x7C62, 0x7C63, 0x7C64, 0x7C65, 0x7C66, 0x7C67, - 0x7C68, 0x7C69, 0x7C6A, 0x7C6B, 0x7C6C, 0x7C6D, 0x7C6E, 0x7C6F, - 0x7C70, 0x7C71, 0x7C72, 0x7C75, 0x7C76, 0x7C77, 0x7C78, 0x7C79, - 0x7C7A, 0x7C7E, 0x7C7F, 0x7C80, 0x7C81, 0x7C82, 0x7C83, 0x7C84, - 0x7C85, 0x7C86, 0x7C87, 0x7C88, 0x7C8A, 0x7C8B, 0x7C8C, 0x7C8D, - 0x7C8E, 0x7C8F, 0x7C90, 0x7C93, 0x7C94, 0x7C96, 0x7C99, 0x7C9A, - 0x7C9B, 0x7CA0, 0x7CA1, 0x7CA3, 0x7CA6, 0x7CA7, 0x7CA8, 0x7CA9, - 0x7CAB, 0x7CAC, 0x7CAD, 0x7CAF, 0x7CB0, 0x7CB4, 0x7CB5, 0x7CB6, - 0x7CB7, 0x7CB8, 0x7CBA, 0x7CBB, 0x5F27, 0x864E, 0x552C, 0x62A4, - 0x4E92, 0x6CAA, 0x6237, 0x82B1, 0x54D7, 0x534E, 0x733E, 0x6ED1, - 0x753B, 0x5212, 0x5316, 0x8BDD, 0x69D0, 0x5F8A, 0x6000, 0x6DEE, - 0x574F, 0x6B22, 0x73AF, 0x6853, 0x8FD8, 0x7F13, 0x6362, 0x60A3, - 0x5524, 0x75EA, 0x8C62, 0x7115, 0x6DA3, 0x5BA6, 0x5E7B, 0x8352, - 0x614C, 0x9EC4, 0x78FA, 0x8757, 0x7C27, 0x7687, 0x51F0, 0x60F6, - 0x714C, 0x6643, 0x5E4C, 0x604D, 0x8C0E, 0x7070, 0x6325, 0x8F89, - 0x5FBD, 0x6062, 0x86D4, 0x56DE, 0x6BC1, 0x6094, 0x6167, 0x5349, - 0x60E0, 0x6666, 0x8D3F, 0x79FD, 0x4F1A, 0x70E9, 0x6C47, 0x8BB3, - 0x8BF2, 0x7ED8, 0x8364, 0x660F, 0x5A5A, 0x9B42, 0x6D51, 0x6DF7, - 0x8C41, 0x6D3B, 0x4F19, 0x706B, 0x83B7, 0x6216, 0x60D1, 0x970D, - 0x8D27, 0x7978, 0x51FB, 0x573E, 0x57FA, 0x673A, 0x7578, 0x7A3D, - 0x79EF, 0x7B95, 0x7CBF, 0x7CC0, 0x7CC2, 0x7CC3, 0x7CC4, 0x7CC6, - 0x7CC9, 0x7CCB, 0x7CCE, 0x7CCF, 0x7CD0, 0x7CD1, 0x7CD2, 0x7CD3, - 0x7CD4, 0x7CD8, 0x7CDA, 0x7CDB, 0x7CDD, 0x7CDE, 0x7CE1, 0x7CE2, - 0x7CE3, 0x7CE4, 0x7CE5, 0x7CE6, 0x7CE7, 0x7CE9, 0x7CEA, 0x7CEB, - 0x7CEC, 0x7CED, 0x7CEE, 0x7CF0, 0x7CF1, 0x7CF2, 0x7CF3, 0x7CF4, - 0x7CF5, 0x7CF6, 0x7CF7, 0x7CF9, 0x7CFA, 0x7CFC, 0x7CFD, 0x7CFE, - 0x7CFF, 0x7D00, 0x7D01, 0x7D02, 0x7D03, 0x7D04, 0x7D05, 0x7D06, -plane 45 -at 0x00 - 0x7D07, 0x7D08, 0x7D09, 0x7D0B, 0x7D0C, 0x7D0D, 0x7D0E, 0x7D0F, - 0x7D10, 0x7D11, 0x7D12, 0x7D13, 0x7D14, 0x7D15, 0x7D16, 0x7D17, - 0x7D18, 0x7D19, 0x7D1A, 0x7D1B, 0x7D1C, 0x7D1D, 0x7D1E, 0x7D1F, - 0x7D21, 0x7D23, 0x7D24, 0x7D25, 0x7D26, 0x7D28, 0x7D29, 0x7D2A, - 0x7D2C, 0x7D2D, 0x7D2E, 0x7D30, 0x7D31, 0x7D32, 0x7D33, 0x7D34, - 0x7D35, 0x7D36, 0x808C, 0x9965, 0x8FF9, 0x6FC0, 0x8BA5, 0x9E21, - 0x59EC, 0x7EE9, 0x7F09, 0x5409, 0x6781, 0x68D8, 0x8F91, 0x7C4D, - 0x96C6, 0x53CA, 0x6025, 0x75BE, 0x6C72, 0x5373, 0x5AC9, 0x7EA7, - 0x6324, 0x51E0, 0x810A, 0x5DF1, 0x84DF, 0x6280, 0x5180, 0x5B63, - 0x4F0E, 0x796D, 0x5242, 0x60B8, 0x6D4E, 0x5BC4, 0x5BC2, 0x8BA1, - 0x8BB0, 0x65E2, 0x5FCC, 0x9645, 0x5993, 0x7EE7, 0x7EAA, 0x5609, - 0x67B7, 0x5939, 0x4F73, 0x5BB6, 0x52A0, 0x835A, 0x988A, 0x8D3E, - 0x7532, 0x94BE, 0x5047, 0x7A3C, 0x4EF7, 0x67B6, 0x9A7E, 0x5AC1, - 0x6B7C, 0x76D1, 0x575A, 0x5C16, 0x7B3A, 0x95F4, 0x714E, 0x517C, - 0x80A9, 0x8270, 0x5978, 0x7F04, 0x8327, 0x68C0, 0x67EC, 0x78B1, - 0x7877, 0x62E3, 0x6361, 0x7B80, 0x4FED, 0x526A, 0x51CF, 0x8350, - 0x69DB, 0x9274, 0x8DF5, 0x8D31, 0x89C1, 0x952E, 0x7BAD, 0x4EF6, - 0x7D37, 0x7D38, 0x7D39, 0x7D3A, 0x7D3B, 0x7D3C, 0x7D3D, 0x7D3E, - 0x7D3F, 0x7D40, 0x7D41, 0x7D42, 0x7D43, 0x7D44, 0x7D45, 0x7D46, - 0x7D47, 0x7D48, 0x7D49, 0x7D4A, 0x7D4B, 0x7D4C, 0x7D4D, 0x7D4E, - 0x7D4F, 0x7D50, 0x7D51, 0x7D52, 0x7D53, 0x7D54, 0x7D55, 0x7D56, - 0x7D57, 0x7D58, 0x7D59, 0x7D5A, 0x7D5B, 0x7D5C, 0x7D5D, 0x7D5E, - 0x7D5F, 0x7D60, 0x7D61, 0x7D62, 0x7D63, 0x7D64, 0x7D65, 0x7D66, - 0x7D67, 0x7D68, 0x7D69, 0x7D6A, 0x7D6B, 0x7D6C, 0x7D6D, 0x7D6F, - 0x7D70, 0x7D71, 0x7D72, 0x7D73, 0x7D74, 0x7D75, 0x7D76, 0x7D78, - 0x7D79, 0x7D7A, 0x7D7B, 0x7D7C, 0x7D7D, 0x7D7E, 0x7D7F, 0x7D80, - 0x7D81, 0x7D82, 0x7D83, 0x7D84, 0x7D85, 0x7D86, 0x7D87, 0x7D88, - 0x7D89, 0x7D8A, 0x7D8B, 0x7D8C, 0x7D8D, 0x7D8E, 0x7D8F, 0x7D90, - 0x7D91, 0x7D92, 0x7D93, 0x7D94, 0x7D95, 0x7D96, 0x7D97, 0x7D98, - 0x5065, 0x8230, 0x5251, 0x996F, 0x6E10, 0x6E85, 0x6DA7, 0x5EFA, - 0x50F5, 0x59DC, 0x5C06, 0x6D46, 0x6C5F, 0x7586, 0x848B, 0x6868, - 0x5956, 0x8BB2, 0x5320, 0x9171, 0x964D, 0x8549, 0x6912, 0x7901, -plane 46 -at 0x00 - 0x7126, 0x80F6, 0x4EA4, 0x90CA, 0x6D47, 0x9A84, 0x5A07, 0x56BC, - 0x6405, 0x94F0, 0x77EB, 0x4FA5, 0x811A, 0x72E1, 0x89D2, 0x997A, - 0x7F34, 0x7EDE, 0x527F, 0x6559, 0x9175, 0x8F7F, 0x8F83, 0x53EB, - 0x7A96, 0x63ED, 0x63A5, 0x7686, 0x79F8, 0x8857, 0x9636, 0x622A, - 0x52AB, 0x8282, 0x6854, 0x6770, 0x6377, 0x776B, 0x7AED, 0x6D01, - 0x7ED3, 0x89E3, 0x59D0, 0x6212, 0x85C9, 0x82A5, 0x754C, 0x501F, - 0x4ECB, 0x75A5, 0x8BEB, 0x5C4A, 0x5DFE, 0x7B4B, 0x65A4, 0x91D1, - 0x4ECA, 0x6D25, 0x895F, 0x7D27, 0x9526, 0x4EC5, 0x8C28, 0x8FDB, - 0x9773, 0x664B, 0x7981, 0x8FD1, 0x70EC, 0x6D78, 0x7D99, 0x7D9A, - 0x7D9B, 0x7D9C, 0x7D9D, 0x7D9E, 0x7D9F, 0x7DA0, 0x7DA1, 0x7DA2, - 0x7DA3, 0x7DA4, 0x7DA5, 0x7DA7, 0x7DA8, 0x7DA9, 0x7DAA, 0x7DAB, - 0x7DAC, 0x7DAD, 0x7DAF, 0x7DB0, 0x7DB1, 0x7DB2, 0x7DB3, 0x7DB4, - 0x7DB5, 0x7DB6, 0x7DB7, 0x7DB8, 0x7DB9, 0x7DBA, 0x7DBB, 0x7DBC, - 0x7DBD, 0x7DBE, 0x7DBF, 0x7DC0, 0x7DC1, 0x7DC2, 0x7DC3, 0x7DC4, - 0x7DC5, 0x7DC6, 0x7DC7, 0x7DC8, 0x7DC9, 0x7DCA, 0x7DCB, 0x7DCC, - 0x7DCD, 0x7DCE, 0x7DCF, 0x7DD0, 0x7DD1, 0x7DD2, 0x7DD3, 0x7DD4, - 0x7DD5, 0x7DD6, 0x7DD7, 0x7DD8, 0x7DD9, 0x7DDA, 0x7DDB, 0x7DDC, - 0x7DDD, 0x7DDE, 0x7DDF, 0x7DE0, 0x7DE1, 0x7DE2, 0x7DE3, 0x7DE4, - 0x7DE5, 0x7DE6, 0x7DE7, 0x7DE8, 0x7DE9, 0x7DEA, 0x7DEB, 0x7DEC, - 0x7DED, 0x7DEE, 0x7DEF, 0x7DF0, 0x7DF1, 0x7DF2, 0x7DF3, 0x7DF4, - 0x7DF5, 0x7DF6, 0x7DF7, 0x7DF8, 0x7DF9, 0x7DFA, 0x5C3D, 0x52B2, - 0x8346, 0x5162, 0x830E, 0x775B, 0x6676, 0x9CB8, 0x4EAC, 0x60CA, - 0x7CBE, 0x7CB3, 0x7ECF, 0x4E95, 0x8B66, 0x666F, 0x9888, 0x9759, - 0x5883, 0x656C, 0x955C, 0x5F84, 0x75C9, 0x9756, 0x7ADF, 0x7ADE, - 0x51C0, 0x70AF, 0x7A98, 0x63EA, 0x7A76, 0x7EA0, 0x7396, 0x97ED, - 0x4E45, 0x7078, 0x4E5D, 0x9152, 0x53A9, 0x6551, 0x65E7, 0x81FC, - 0x8205, 0x548E, 0x5C31, 0x759A, 0x97A0, 0x62D8, 0x72D9, 0x75BD, - 0x5C45, 0x9A79, 0x83CA, 0x5C40, 0x5480, 0x77E9, 0x4E3E, 0x6CAE, - 0x805A, 0x62D2, 0x636E, 0x5DE8, 0x5177, 0x8DDD, 0x8E1E, 0x952F, - 0x4FF1, 0x53E5, 0x60E7, 0x70AC, 0x5267, 0x6350, 0x9E43, 0x5A1F, - 0x5026, 0x7737, 0x5377, 0x7EE2, 0x6485, 0x652B, 0x6289, 0x6398, - 0x5014, 0x7235, 0x89C9, 0x51B3, 0x8BC0, 0x7EDD, 0x5747, 0x83CC, -plane 47 -at 0x00 - 0x94A7, 0x519B, 0x541B, 0x5CFB, 0x7DFB, 0x7DFC, 0x7DFD, 0x7DFE, - 0x7DFF, 0x7E00, 0x7E01, 0x7E02, 0x7E03, 0x7E04, 0x7E05, 0x7E06, - 0x7E07, 0x7E08, 0x7E09, 0x7E0A, 0x7E0B, 0x7E0C, 0x7E0D, 0x7E0E, - 0x7E0F, 0x7E10, 0x7E11, 0x7E12, 0x7E13, 0x7E14, 0x7E15, 0x7E16, - 0x7E17, 0x7E18, 0x7E19, 0x7E1A, 0x7E1B, 0x7E1C, 0x7E1D, 0x7E1E, - 0x7E1F, 0x7E20, 0x7E21, 0x7E22, 0x7E23, 0x7E24, 0x7E25, 0x7E26, - 0x7E27, 0x7E28, 0x7E29, 0x7E2A, 0x7E2B, 0x7E2C, 0x7E2D, 0x7E2E, - 0x7E2F, 0x7E30, 0x7E31, 0x7E32, 0x7E33, 0x7E34, 0x7E35, 0x7E36, - 0x7E37, 0x7E38, 0x7E39, 0x7E3A, 0x7E3C, 0x7E3D, 0x7E3E, 0x7E3F, - 0x7E40, 0x7E42, 0x7E43, 0x7E44, 0x7E45, 0x7E46, 0x7E48, 0x7E49, - 0x7E4A, 0x7E4B, 0x7E4C, 0x7E4D, 0x7E4E, 0x7E4F, 0x7E50, 0x7E51, - 0x7E52, 0x7E53, 0x7E54, 0x7E55, 0x7E56, 0x7E57, 0x7E58, 0x7E59, - 0x7E5A, 0x7E5B, 0x7E5C, 0x7E5D, 0x4FCA, 0x7AE3, 0x6D5A, 0x90E1, - 0x9A8F, 0x5580, 0x5496, 0x5361, 0x54AF, 0x5F00, 0x63E9, 0x6977, - 0x51EF, 0x6168, 0x520A, 0x582A, 0x52D8, 0x574E, 0x780D, 0x770B, - 0x5EB7, 0x6177, 0x7CE0, 0x625B, 0x6297, 0x4EA2, 0x7095, 0x8003, - 0x62F7, 0x70E4, 0x9760, 0x5777, 0x82DB, 0x67EF, 0x68F5, 0x78D5, - 0x9897, 0x79D1, 0x58F3, 0x54B3, 0x53EF, 0x6E34, 0x514B, 0x523B, - 0x5BA2, 0x8BFE, 0x80AF, 0x5543, 0x57A6, 0x6073, 0x5751, 0x542D, - 0x7A7A, 0x6050, 0x5B54, 0x63A7, 0x62A0, 0x53E3, 0x6263, 0x5BC7, - 0x67AF, 0x54ED, 0x7A9F, 0x82E6, 0x9177, 0x5E93, 0x88E4, 0x5938, - 0x57AE, 0x630E, 0x8DE8, 0x80EF, 0x5757, 0x7B77, 0x4FA9, 0x5FEB, - 0x5BBD, 0x6B3E, 0x5321, 0x7B50, 0x72C2, 0x6846, 0x77FF, 0x7736, - 0x65F7, 0x51B5, 0x4E8F, 0x76D4, 0x5CBF, 0x7AA5, 0x8475, 0x594E, - 0x9B41, 0x5080, 0x7E5E, 0x7E5F, 0x7E60, 0x7E61, 0x7E62, 0x7E63, - 0x7E64, 0x7E65, 0x7E66, 0x7E67, 0x7E68, 0x7E69, 0x7E6A, 0x7E6B, - 0x7E6C, 0x7E6D, 0x7E6E, 0x7E6F, 0x7E70, 0x7E71, 0x7E72, 0x7E73, - 0x7E74, 0x7E75, 0x7E76, 0x7E77, 0x7E78, 0x7E79, 0x7E7A, 0x7E7B, - 0x7E7C, 0x7E7D, 0x7E7E, 0x7E7F, 0x7E80, 0x7E81, 0x7E83, 0x7E84, - 0x7E85, 0x7E86, 0x7E87, 0x7E88, 0x7E89, 0x7E8A, 0x7E8B, 0x7E8C, - 0x7E8D, 0x7E8E, 0x7E8F, 0x7E90, 0x7E91, 0x7E92, 0x7E93, 0x7E94, - 0x7E95, 0x7E96, 0x7E97, 0x7E98, 0x7E99, 0x7E9A, 0x7E9C, 0x7E9D, -plane 48 -at 0x00 - 0x7E9E, 0x7EAE, 0x7EB4, 0x7EBB, 0x7EBC, 0x7ED6, 0x7EE4, 0x7EEC, - 0x7EF9, 0x7F0A, 0x7F10, 0x7F1E, 0x7F37, 0x7F39, 0x7F3B, 0x7F3C, - 0x7F3D, 0x7F3E, 0x7F3F, 0x7F40, 0x7F41, 0x7F43, 0x7F46, 0x7F47, - 0x7F48, 0x7F49, 0x7F4A, 0x7F4B, 0x7F4C, 0x7F4D, 0x7F4E, 0x7F4F, - 0x7F52, 0x7F53, 0x9988, 0x6127, 0x6E83, 0x5764, 0x6606, 0x6346, - 0x56F0, 0x62EC, 0x6269, 0x5ED3, 0x9614, 0x5783, 0x62C9, 0x5587, - 0x8721, 0x814A, 0x8FA3, 0x5566, 0x83B1, 0x6765, 0x8D56, 0x84DD, - 0x5A6A, 0x680F, 0x62E6, 0x7BEE, 0x9611, 0x5170, 0x6F9C, 0x8C30, - 0x63FD, 0x89C8, 0x61D2, 0x7F06, 0x70C2, 0x6EE5, 0x7405, 0x6994, - 0x72FC, 0x5ECA, 0x90CE, 0x6717, 0x6D6A, 0x635E, 0x52B3, 0x7262, - 0x8001, 0x4F6C, 0x59E5, 0x916A, 0x70D9, 0x6D9D, 0x52D2, 0x4E50, - 0x96F7, 0x956D, 0x857E, 0x78CA, 0x7D2F, 0x5121, 0x5792, 0x64C2, - 0x808B, 0x7C7B, 0x6CEA, 0x68F1, 0x695E, 0x51B7, 0x5398, 0x68A8, - 0x7281, 0x9ECE, 0x7BF1, 0x72F8, 0x79BB, 0x6F13, 0x7406, 0x674E, - 0x91CC, 0x9CA4, 0x793C, 0x8389, 0x8354, 0x540F, 0x6817, 0x4E3D, - 0x5389, 0x52B1, 0x783E, 0x5386, 0x5229, 0x5088, 0x4F8B, 0x4FD0, - 0x7F56, 0x7F59, 0x7F5B, 0x7F5C, 0x7F5D, 0x7F5E, 0x7F60, 0x7F63, - 0x7F64, 0x7F65, 0x7F66, 0x7F67, 0x7F6B, 0x7F6C, 0x7F6D, 0x7F6F, - 0x7F70, 0x7F73, 0x7F75, 0x7F76, 0x7F77, 0x7F78, 0x7F7A, 0x7F7B, - 0x7F7C, 0x7F7D, 0x7F7F, 0x7F80, 0x7F82, 0x7F83, 0x7F84, 0x7F85, - 0x7F86, 0x7F87, 0x7F88, 0x7F89, 0x7F8B, 0x7F8D, 0x7F8F, 0x7F90, - 0x7F91, 0x7F92, 0x7F93, 0x7F95, 0x7F96, 0x7F97, 0x7F98, 0x7F99, - 0x7F9B, 0x7F9C, 0x7FA0, 0x7FA2, 0x7FA3, 0x7FA5, 0x7FA6, 0x7FA8, - 0x7FA9, 0x7FAA, 0x7FAB, 0x7FAC, 0x7FAD, 0x7FAE, 0x7FB1, 0x7FB3, - 0x7FB4, 0x7FB5, 0x7FB6, 0x7FB7, 0x7FBA, 0x7FBB, 0x7FBE, 0x7FC0, - 0x7FC2, 0x7FC3, 0x7FC4, 0x7FC6, 0x7FC7, 0x7FC8, 0x7FC9, 0x7FCB, - 0x7FCD, 0x7FCF, 0x7FD0, 0x7FD1, 0x7FD2, 0x7FD3, 0x7FD6, 0x7FD7, - 0x7FD9, 0x7FDA, 0x7FDB, 0x7FDC, 0x7FDD, 0x7FDE, 0x7FE2, 0x7FE3, - 0x75E2, 0x7ACB, 0x7C92, 0x6CA5, 0x96B6, 0x529B, 0x7483, 0x54E9, - 0x4FE9, 0x8054, 0x83B2, 0x8FDE, 0x9570, 0x5EC9, 0x601C, 0x6D9F, - 0x5E18, 0x655B, 0x8138, 0x94FE, 0x604B, 0x70BC, 0x7EC3, 0x7CAE, - 0x51C9, 0x6881, 0x7CB1, 0x826F, 0x4E24, 0x8F86, 0x91CF, 0x667E, -plane 49 -at 0x00 - 0x4EAE, 0x8C05, 0x64A9, 0x804A, 0x50DA, 0x7597, 0x71CE, 0x5BE5, - 0x8FBD, 0x6F66, 0x4E86, 0x6482, 0x9563, 0x5ED6, 0x6599, 0x5217, - 0x88C2, 0x70C8, 0x52A3, 0x730E, 0x7433, 0x6797, 0x78F7, 0x9716, - 0x4E34, 0x90BB, 0x9CDE, 0x6DCB, 0x51DB, 0x8D41, 0x541D, 0x62CE, - 0x73B2, 0x83F1, 0x96F6, 0x9F84, 0x94C3, 0x4F36, 0x7F9A, 0x51CC, - 0x7075, 0x9675, 0x5CAD, 0x9886, 0x53E6, 0x4EE4, 0x6E9C, 0x7409, - 0x69B4, 0x786B, 0x998F, 0x7559, 0x5218, 0x7624, 0x6D41, 0x67F3, - 0x516D, 0x9F99, 0x804B, 0x5499, 0x7B3C, 0x7ABF, 0x7FE4, 0x7FE7, - 0x7FE8, 0x7FEA, 0x7FEB, 0x7FEC, 0x7FED, 0x7FEF, 0x7FF2, 0x7FF4, - 0x7FF5, 0x7FF6, 0x7FF7, 0x7FF8, 0x7FF9, 0x7FFA, 0x7FFD, 0x7FFE, - 0x7FFF, 0x8002, 0x8007, 0x8008, 0x8009, 0x800A, 0x800E, 0x800F, - 0x8011, 0x8013, 0x801A, 0x801B, 0x801D, 0x801E, 0x801F, 0x8021, - 0x8023, 0x8024, 0x802B, 0x802C, 0x802D, 0x802E, 0x802F, 0x8030, - 0x8032, 0x8034, 0x8039, 0x803A, 0x803C, 0x803E, 0x8040, 0x8041, - 0x8044, 0x8045, 0x8047, 0x8048, 0x8049, 0x804E, 0x804F, 0x8050, - 0x8051, 0x8053, 0x8055, 0x8056, 0x8057, 0x8059, 0x805B, 0x805C, - 0x805D, 0x805E, 0x805F, 0x8060, 0x8061, 0x8062, 0x8063, 0x8064, - 0x8065, 0x8066, 0x8067, 0x8068, 0x806B, 0x806C, 0x806D, 0x806E, - 0x806F, 0x8070, 0x8072, 0x8073, 0x8074, 0x8075, 0x8076, 0x8077, - 0x8078, 0x8079, 0x807A, 0x807B, 0x807C, 0x807D, 0x9686, 0x5784, - 0x62E2, 0x9647, 0x697C, 0x5A04, 0x6402, 0x7BD3, 0x6F0F, 0x964B, - 0x82A6, 0x5362, 0x9885, 0x5E90, 0x7089, 0x63B3, 0x5364, 0x864F, - 0x9C81, 0x9E93, 0x788C, 0x9732, 0x8DEF, 0x8D42, 0x9E7F, 0x6F5E, - 0x7984, 0x5F55, 0x9646, 0x622E, 0x9A74, 0x5415, 0x94DD, 0x4FA3, - 0x65C5, 0x5C65, 0x5C61, 0x7F15, 0x8651, 0x6C2F, 0x5F8B, 0x7387, - 0x6EE4, 0x7EFF, 0x5CE6, 0x631B, 0x5B6A, 0x6EE6, 0x5375, 0x4E71, - 0x63A0, 0x7565, 0x62A1, 0x8F6E, 0x4F26, 0x4ED1, 0x6CA6, 0x7EB6, - 0x8BBA, 0x841D, 0x87BA, 0x7F57, 0x903B, 0x9523, 0x7BA9, 0x9AA1, - 0x88F8, 0x843D, 0x6D1B, 0x9A86, 0x7EDC, 0x5988, 0x9EBB, 0x739B, - 0x7801, 0x8682, 0x9A6C, 0x9A82, 0x561B, 0x5417, 0x57CB, 0x4E70, - 0x9EA6, 0x5356, 0x8FC8, 0x8109, 0x7792, 0x9992, 0x86EE, 0x6EE1, - 0x8513, 0x66FC, 0x6162, 0x6F2B, 0x807E, 0x8081, 0x8082, 0x8085, -plane 50 -at 0x00 - 0x8088, 0x808A, 0x808D, 0x808E, 0x808F, 0x8090, 0x8091, 0x8092, - 0x8094, 0x8095, 0x8097, 0x8099, 0x809E, 0x80A3, 0x80A6, 0x80A7, - 0x80A8, 0x80AC, 0x80B0, 0x80B3, 0x80B5, 0x80B6, 0x80B8, 0x80B9, - 0x80BB, 0x80C5, 0x80C7, 0x80C8, 0x80C9, 0x80CA, 0x80CB, 0x80CF, - 0x80D0, 0x80D1, 0x80D2, 0x80D3, 0x80D4, 0x80D5, 0x80D8, 0x80DF, - 0x80E0, 0x80E2, 0x80E3, 0x80E6, 0x80EE, 0x80F5, 0x80F7, 0x80F9, - 0x80FB, 0x80FE, 0x80FF, 0x8100, 0x8101, 0x8103, 0x8104, 0x8105, - 0x8107, 0x8108, 0x810B, 0x810C, 0x8115, 0x8117, 0x8119, 0x811B, - 0x811C, 0x811D, 0x811F, 0x8120, 0x8121, 0x8122, 0x8123, 0x8124, - 0x8125, 0x8126, 0x8127, 0x8128, 0x8129, 0x812A, 0x812B, 0x812D, - 0x812E, 0x8130, 0x8133, 0x8134, 0x8135, 0x8137, 0x8139, 0x813A, - 0x813B, 0x813C, 0x813D, 0x813F, 0x8C29, 0x8292, 0x832B, 0x76F2, - 0x6C13, 0x5FD9, 0x83BD, 0x732B, 0x8305, 0x951A, 0x6BDB, 0x77DB, - 0x94C6, 0x536F, 0x8302, 0x5192, 0x5E3D, 0x8C8C, 0x8D38, 0x4E48, - 0x73AB, 0x679A, 0x6885, 0x9176, 0x9709, 0x7164, 0x6CA1, 0x7709, - 0x5A92, 0x9541, 0x6BCF, 0x7F8E, 0x6627, 0x5BD0, 0x59B9, 0x5A9A, - 0x95E8, 0x95F7, 0x4EEC, 0x840C, 0x8499, 0x6AAC, 0x76DF, 0x9530, - 0x731B, 0x68A6, 0x5B5F, 0x772F, 0x919A, 0x9761, 0x7CDC, 0x8FF7, - 0x8C1C, 0x5F25, 0x7C73, 0x79D8, 0x89C5, 0x6CCC, 0x871C, 0x5BC6, - 0x5E42, 0x68C9, 0x7720, 0x7EF5, 0x5195, 0x514D, 0x52C9, 0x5A29, - 0x7F05, 0x9762, 0x82D7, 0x63CF, 0x7784, 0x85D0, 0x79D2, 0x6E3A, - 0x5E99, 0x5999, 0x8511, 0x706D, 0x6C11, 0x62BF, 0x76BF, 0x654F, - 0x60AF, 0x95FD, 0x660E, 0x879F, 0x9E23, 0x94ED, 0x540D, 0x547D, - 0x8C2C, 0x6478, 0x8140, 0x8141, 0x8142, 0x8143, 0x8144, 0x8145, - 0x8147, 0x8149, 0x814D, 0x814E, 0x814F, 0x8152, 0x8156, 0x8157, - 0x8158, 0x815B, 0x815C, 0x815D, 0x815E, 0x815F, 0x8161, 0x8162, - 0x8163, 0x8164, 0x8166, 0x8168, 0x816A, 0x816B, 0x816C, 0x816F, - 0x8172, 0x8173, 0x8175, 0x8176, 0x8177, 0x8178, 0x8181, 0x8183, - 0x8184, 0x8185, 0x8186, 0x8187, 0x8189, 0x818B, 0x818C, 0x818D, - 0x818E, 0x8190, 0x8192, 0x8193, 0x8194, 0x8195, 0x8196, 0x8197, - 0x8199, 0x819A, 0x819E, 0x819F, 0x81A0, 0x81A1, 0x81A2, 0x81A4, - 0x81A5, 0x81A7, 0x81A9, 0x81AB, 0x81AC, 0x81AD, 0x81AE, 0x81AF, -plane 51 -at 0x00 - 0x81B0, 0x81B1, 0x81B2, 0x81B4, 0x81B5, 0x81B6, 0x81B7, 0x81B8, - 0x81B9, 0x81BC, 0x81BD, 0x81BE, 0x81BF, 0x81C4, 0x81C5, 0x81C7, - 0x81C8, 0x81C9, 0x81CB, 0x81CD, 0x81CE, 0x81CF, 0x81D0, 0x81D1, - 0x81D2, 0x81D3, 0x6479, 0x8611, 0x6A21, 0x819C, 0x78E8, 0x6469, - 0x9B54, 0x62B9, 0x672B, 0x83AB, 0x58A8, 0x9ED8, 0x6CAB, 0x6F20, - 0x5BDE, 0x964C, 0x8C0B, 0x725F, 0x67D0, 0x62C7, 0x7261, 0x4EA9, - 0x59C6, 0x6BCD, 0x5893, 0x66AE, 0x5E55, 0x52DF, 0x6155, 0x6728, - 0x76EE, 0x7766, 0x7267, 0x7A46, 0x62FF, 0x54EA, 0x5450, 0x94A0, - 0x90A3, 0x5A1C, 0x7EB3, 0x6C16, 0x4E43, 0x5976, 0x8010, 0x5948, - 0x5357, 0x7537, 0x96BE, 0x56CA, 0x6320, 0x8111, 0x607C, 0x95F9, - 0x6DD6, 0x5462, 0x9981, 0x5185, 0x5AE9, 0x80FD, 0x59AE, 0x9713, - 0x502A, 0x6CE5, 0x5C3C, 0x62DF, 0x4F60, 0x533F, 0x817B, 0x9006, - 0x6EBA, 0x852B, 0x62C8, 0x5E74, 0x78BE, 0x64B5, 0x637B, 0x5FF5, - 0x5A18, 0x917F, 0x9E1F, 0x5C3F, 0x634F, 0x8042, 0x5B7D, 0x556E, - 0x954A, 0x954D, 0x6D85, 0x60A8, 0x67E0, 0x72DE, 0x51DD, 0x5B81, - 0x81D4, 0x81D5, 0x81D6, 0x81D7, 0x81D8, 0x81D9, 0x81DA, 0x81DB, - 0x81DC, 0x81DD, 0x81DE, 0x81DF, 0x81E0, 0x81E1, 0x81E2, 0x81E4, - 0x81E5, 0x81E6, 0x81E8, 0x81E9, 0x81EB, 0x81EE, 0x81EF, 0x81F0, - 0x81F1, 0x81F2, 0x81F5, 0x81F6, 0x81F7, 0x81F8, 0x81F9, 0x81FA, - 0x81FD, 0x81FF, 0x8203, 0x8207, 0x8208, 0x8209, 0x820A, 0x820B, - 0x820E, 0x820F, 0x8211, 0x8213, 0x8215, 0x8216, 0x8217, 0x8218, - 0x8219, 0x821A, 0x821D, 0x8220, 0x8224, 0x8225, 0x8226, 0x8227, - 0x8229, 0x822E, 0x8232, 0x823A, 0x823C, 0x823D, 0x823F, 0x8240, - 0x8241, 0x8242, 0x8243, 0x8245, 0x8246, 0x8248, 0x824A, 0x824C, - 0x824D, 0x824E, 0x8250, 0x8251, 0x8252, 0x8253, 0x8254, 0x8255, - 0x8256, 0x8257, 0x8259, 0x825B, 0x825C, 0x825D, 0x825E, 0x8260, - 0x8261, 0x8262, 0x8263, 0x8264, 0x8265, 0x8266, 0x8267, 0x8269, - 0x62E7, 0x6CDE, 0x725B, 0x626D, 0x94AE, 0x7EBD, 0x8113, 0x6D53, - 0x519C, 0x5F04, 0x5974, 0x52AA, 0x6012, 0x5973, 0x6696, 0x8650, - 0x759F, 0x632A, 0x61E6, 0x7CEF, 0x8BFA, 0x54E6, 0x6B27, 0x9E25, - 0x6BB4, 0x85D5, 0x5455, 0x5076, 0x6CA4, 0x556A, 0x8DB4, 0x722C, - 0x5E15, 0x6015, 0x7436, 0x62CD, 0x6392, 0x724C, 0x5F98, 0x6E43, -plane 52 -at 0x00 - 0x6D3E, 0x6500, 0x6F58, 0x76D8, 0x78D0, 0x76FC, 0x7554, 0x5224, - 0x53DB, 0x4E53, 0x5E9E, 0x65C1, 0x802A, 0x80D6, 0x629B, 0x5486, - 0x5228, 0x70AE, 0x888D, 0x8DD1, 0x6CE1, 0x5478, 0x80DA, 0x57F9, - 0x88F4, 0x8D54, 0x966A, 0x914D, 0x4F69, 0x6C9B, 0x55B7, 0x76C6, - 0x7830, 0x62A8, 0x70F9, 0x6F8E, 0x5F6D, 0x84EC, 0x68DA, 0x787C, - 0x7BF7, 0x81A8, 0x670B, 0x9E4F, 0x6367, 0x78B0, 0x576F, 0x7812, - 0x9739, 0x6279, 0x62AB, 0x5288, 0x7435, 0x6BD7, 0x826A, 0x826B, - 0x826C, 0x826D, 0x8271, 0x8275, 0x8276, 0x8277, 0x8278, 0x827B, - 0x827C, 0x8280, 0x8281, 0x8283, 0x8285, 0x8286, 0x8287, 0x8289, - 0x828C, 0x8290, 0x8293, 0x8294, 0x8295, 0x8296, 0x829A, 0x829B, - 0x829E, 0x82A0, 0x82A2, 0x82A3, 0x82A7, 0x82B2, 0x82B5, 0x82B6, - 0x82BA, 0x82BB, 0x82BC, 0x82BF, 0x82C0, 0x82C2, 0x82C3, 0x82C5, - 0x82C6, 0x82C9, 0x82D0, 0x82D6, 0x82D9, 0x82DA, 0x82DD, 0x82E2, - 0x82E7, 0x82E8, 0x82E9, 0x82EA, 0x82EC, 0x82ED, 0x82EE, 0x82F0, - 0x82F2, 0x82F3, 0x82F5, 0x82F6, 0x82F8, 0x82FA, 0x82FC, 0x82FD, - 0x82FE, 0x82FF, 0x8300, 0x830A, 0x830B, 0x830D, 0x8310, 0x8312, - 0x8313, 0x8316, 0x8318, 0x8319, 0x831D, 0x831E, 0x831F, 0x8320, - 0x8321, 0x8322, 0x8323, 0x8324, 0x8325, 0x8326, 0x8329, 0x832A, - 0x832E, 0x8330, 0x8332, 0x8337, 0x833B, 0x833D, 0x5564, 0x813E, - 0x75B2, 0x76AE, 0x5339, 0x75DE, 0x50FB, 0x5C41, 0x8B6C, 0x7BC7, - 0x504F, 0x7247, 0x9A97, 0x98D8, 0x6F02, 0x74E2, 0x7968, 0x6487, - 0x77A5, 0x62FC, 0x9891, 0x8D2B, 0x54C1, 0x8058, 0x4E52, 0x576A, - 0x82F9, 0x840D, 0x5E73, 0x51ED, 0x74F6, 0x8BC4, 0x5C4F, 0x5761, - 0x6CFC, 0x9887, 0x5A46, 0x7834, 0x9B44, 0x8FEB, 0x7C95, 0x5256, - 0x6251, 0x94FA, 0x4EC6, 0x8386, 0x8461, 0x83E9, 0x84B2, 0x57D4, - 0x6734, 0x5703, 0x666E, 0x6D66, 0x8C31, 0x66DD, 0x7011, 0x671F, - 0x6B3A, 0x6816, 0x621A, 0x59BB, 0x4E03, 0x51C4, 0x6F06, 0x67D2, - 0x6C8F, 0x5176, 0x68CB, 0x5947, 0x6B67, 0x7566, 0x5D0E, 0x8110, - 0x9F50, 0x65D7, 0x7948, 0x7941, 0x9A91, 0x8D77, 0x5C82, 0x4E5E, - 0x4F01, 0x542F, 0x5951, 0x780C, 0x5668, 0x6C14, 0x8FC4, 0x5F03, - 0x6C7D, 0x6CE3, 0x8BAB, 0x6390, 0x833E, 0x833F, 0x8341, 0x8342, - 0x8344, 0x8345, 0x8348, 0x834A, 0x834B, 0x834C, 0x834D, 0x834E, -plane 53 -at 0x00 - 0x8353, 0x8355, 0x8356, 0x8357, 0x8358, 0x8359, 0x835D, 0x8362, - 0x8370, 0x8371, 0x8372, 0x8373, 0x8374, 0x8375, 0x8376, 0x8379, - 0x837A, 0x837E, 0x837F, 0x8380, 0x8381, 0x8382, 0x8383, 0x8384, - 0x8387, 0x8388, 0x838A, 0x838B, 0x838C, 0x838D, 0x838F, 0x8390, - 0x8391, 0x8394, 0x8395, 0x8396, 0x8397, 0x8399, 0x839A, 0x839D, - 0x839F, 0x83A1, 0x83A2, 0x83A3, 0x83A4, 0x83A5, 0x83A6, 0x83A7, - 0x83AC, 0x83AD, 0x83AE, 0x83AF, 0x83B5, 0x83BB, 0x83BE, 0x83BF, - 0x83C2, 0x83C3, 0x83C4, 0x83C6, 0x83C8, 0x83C9, 0x83CB, 0x83CD, - 0x83CE, 0x83D0, 0x83D1, 0x83D2, 0x83D3, 0x83D5, 0x83D7, 0x83D9, - 0x83DA, 0x83DB, 0x83DE, 0x83E2, 0x83E3, 0x83E4, 0x83E6, 0x83E7, - 0x83E8, 0x83EB, 0x83EC, 0x83ED, 0x6070, 0x6D3D, 0x7275, 0x6266, - 0x948E, 0x94C5, 0x5343, 0x8FC1, 0x7B7E, 0x4EDF, 0x8C26, 0x4E7E, - 0x9ED4, 0x94B1, 0x94B3, 0x524D, 0x6F5C, 0x9063, 0x6D45, 0x8C34, - 0x5811, 0x5D4C, 0x6B20, 0x6B49, 0x67AA, 0x545B, 0x8154, 0x7F8C, - 0x5899, 0x8537, 0x5F3A, 0x62A2, 0x6A47, 0x9539, 0x6572, 0x6084, - 0x6865, 0x77A7, 0x4E54, 0x4FA8, 0x5DE7, 0x9798, 0x64AC, 0x7FD8, - 0x5CED, 0x4FCF, 0x7A8D, 0x5207, 0x8304, 0x4E14, 0x602F, 0x7A83, - 0x94A6, 0x4FB5, 0x4EB2, 0x79E6, 0x7434, 0x52E4, 0x82B9, 0x64D2, - 0x79BD, 0x5BDD, 0x6C81, 0x9752, 0x8F7B, 0x6C22, 0x503E, 0x537F, - 0x6E05, 0x64CE, 0x6674, 0x6C30, 0x60C5, 0x9877, 0x8BF7, 0x5E86, - 0x743C, 0x7A77, 0x79CB, 0x4E18, 0x90B1, 0x7403, 0x6C42, 0x56DA, - 0x914B, 0x6CC5, 0x8D8B, 0x533A, 0x86C6, 0x66F2, 0x8EAF, 0x5C48, - 0x9A71, 0x6E20, 0x83EE, 0x83EF, 0x83F3, 0x83F4, 0x83F5, 0x83F6, - 0x83F7, 0x83FA, 0x83FB, 0x83FC, 0x83FE, 0x83FF, 0x8400, 0x8402, - 0x8405, 0x8407, 0x8408, 0x8409, 0x840A, 0x8410, 0x8412, 0x8413, - 0x8414, 0x8415, 0x8416, 0x8417, 0x8419, 0x841A, 0x841B, 0x841E, - 0x841F, 0x8420, 0x8421, 0x8422, 0x8423, 0x8429, 0x842A, 0x842B, - 0x842C, 0x842D, 0x842E, 0x842F, 0x8430, 0x8432, 0x8433, 0x8434, - 0x8435, 0x8436, 0x8437, 0x8439, 0x843A, 0x843B, 0x843E, 0x843F, - 0x8440, 0x8441, 0x8442, 0x8443, 0x8444, 0x8445, 0x8447, 0x8448, - 0x8449, 0x844A, 0x844B, 0x844C, 0x844D, 0x844E, 0x844F, 0x8450, - 0x8452, 0x8453, 0x8454, 0x8455, 0x8456, 0x8458, 0x845D, 0x845E, -plane 54 -at 0x00 - 0x845F, 0x8460, 0x8462, 0x8464, 0x8465, 0x8466, 0x8467, 0x8468, - 0x846A, 0x846E, 0x846F, 0x8470, 0x8472, 0x8474, 0x8477, 0x8479, - 0x847B, 0x847C, 0x53D6, 0x5A36, 0x9F8B, 0x8DA3, 0x53BB, 0x5708, - 0x98A7, 0x6743, 0x919B, 0x6CC9, 0x5168, 0x75CA, 0x62F3, 0x72AC, - 0x5238, 0x529D, 0x7F3A, 0x7094, 0x7638, 0x5374, 0x9E4A, 0x69B7, - 0x786E, 0x96C0, 0x88D9, 0x7FA4, 0x7136, 0x71C3, 0x5189, 0x67D3, - 0x74E4, 0x58E4, 0x6518, 0x56B7, 0x8BA9, 0x9976, 0x6270, 0x7ED5, - 0x60F9, 0x70ED, 0x58EC, 0x4EC1, 0x4EBA, 0x5FCD, 0x97E7, 0x4EFB, - 0x8BA4, 0x5203, 0x598A, 0x7EAB, 0x6254, 0x4ECD, 0x65E5, 0x620E, - 0x8338, 0x84C9, 0x8363, 0x878D, 0x7194, 0x6EB6, 0x5BB9, 0x7ED2, - 0x5197, 0x63C9, 0x67D4, 0x8089, 0x8339, 0x8815, 0x5112, 0x5B7A, - 0x5982, 0x8FB1, 0x4E73, 0x6C5D, 0x5165, 0x8925, 0x8F6F, 0x962E, - 0x854A, 0x745E, 0x9510, 0x95F0, 0x6DA6, 0x82E5, 0x5F31, 0x6492, - 0x6D12, 0x8428, 0x816E, 0x9CC3, 0x585E, 0x8D5B, 0x4E09, 0x53C1, - 0x847D, 0x847E, 0x847F, 0x8480, 0x8481, 0x8483, 0x8484, 0x8485, - 0x8486, 0x848A, 0x848D, 0x848F, 0x8490, 0x8491, 0x8492, 0x8493, - 0x8494, 0x8495, 0x8496, 0x8498, 0x849A, 0x849B, 0x849D, 0x849E, - 0x849F, 0x84A0, 0x84A2, 0x84A3, 0x84A4, 0x84A5, 0x84A6, 0x84A7, - 0x84A8, 0x84A9, 0x84AA, 0x84AB, 0x84AC, 0x84AD, 0x84AE, 0x84B0, - 0x84B1, 0x84B3, 0x84B5, 0x84B6, 0x84B7, 0x84BB, 0x84BC, 0x84BE, - 0x84C0, 0x84C2, 0x84C3, 0x84C5, 0x84C6, 0x84C7, 0x84C8, 0x84CB, - 0x84CC, 0x84CE, 0x84CF, 0x84D2, 0x84D4, 0x84D5, 0x84D7, 0x84D8, - 0x84D9, 0x84DA, 0x84DB, 0x84DC, 0x84DE, 0x84E1, 0x84E2, 0x84E4, - 0x84E7, 0x84E8, 0x84E9, 0x84EA, 0x84EB, 0x84ED, 0x84EE, 0x84EF, - 0x84F1, 0x84F2, 0x84F3, 0x84F4, 0x84F5, 0x84F6, 0x84F7, 0x84F8, - 0x84F9, 0x84FA, 0x84FB, 0x84FD, 0x84FE, 0x8500, 0x8501, 0x8502, - 0x4F1E, 0x6563, 0x6851, 0x55D3, 0x4E27, 0x6414, 0x9A9A, 0x626B, - 0x5AC2, 0x745F, 0x8272, 0x6DA9, 0x68EE, 0x50E7, 0x838E, 0x7802, - 0x6740, 0x5239, 0x6C99, 0x7EB1, 0x50BB, 0x5565, 0x715E, 0x7B5B, - 0x6652, 0x73CA, 0x82EB, 0x6749, 0x5C71, 0x5220, 0x717D, 0x886B, - 0x95EA, 0x9655, 0x64C5, 0x8D61, 0x81B3, 0x5584, 0x6C55, 0x6247, - 0x7F2E, 0x5892, 0x4F24, 0x5546, 0x8D4F, 0x664C, 0x4E0A, 0x5C1A, -plane 55 -at 0x00 - 0x88F3, 0x68A2, 0x634E, 0x7A0D, 0x70E7, 0x828D, 0x52FA, 0x97F6, - 0x5C11, 0x54E8, 0x90B5, 0x7ECD, 0x5962, 0x8D4A, 0x86C7, 0x820C, - 0x820D, 0x8D66, 0x6444, 0x5C04, 0x6151, 0x6D89, 0x793E, 0x8BBE, - 0x7837, 0x7533, 0x547B, 0x4F38, 0x8EAB, 0x6DF1, 0x5A20, 0x7EC5, - 0x795E, 0x6C88, 0x5BA1, 0x5A76, 0x751A, 0x80BE, 0x614E, 0x6E17, - 0x58F0, 0x751F, 0x7525, 0x7272, 0x5347, 0x7EF3, 0x8503, 0x8504, - 0x8505, 0x8506, 0x8507, 0x8508, 0x8509, 0x850A, 0x850B, 0x850D, - 0x850E, 0x850F, 0x8510, 0x8512, 0x8514, 0x8515, 0x8516, 0x8518, - 0x8519, 0x851B, 0x851C, 0x851D, 0x851E, 0x8520, 0x8522, 0x8523, - 0x8524, 0x8525, 0x8526, 0x8527, 0x8528, 0x8529, 0x852A, 0x852D, - 0x852E, 0x852F, 0x8530, 0x8531, 0x8532, 0x8533, 0x8534, 0x8535, - 0x8536, 0x853E, 0x853F, 0x8540, 0x8541, 0x8542, 0x8544, 0x8545, - 0x8546, 0x8547, 0x854B, 0x854C, 0x854D, 0x854E, 0x854F, 0x8550, - 0x8551, 0x8552, 0x8553, 0x8554, 0x8555, 0x8557, 0x8558, 0x855A, - 0x855B, 0x855C, 0x855D, 0x855F, 0x8560, 0x8561, 0x8562, 0x8563, - 0x8565, 0x8566, 0x8567, 0x8569, 0x856A, 0x856B, 0x856C, 0x856D, - 0x856E, 0x856F, 0x8570, 0x8571, 0x8573, 0x8575, 0x8576, 0x8577, - 0x8578, 0x857C, 0x857D, 0x857F, 0x8580, 0x8581, 0x7701, 0x76DB, - 0x5269, 0x80DC, 0x5723, 0x5E08, 0x5931, 0x72EE, 0x65BD, 0x6E7F, - 0x8BD7, 0x5C38, 0x8671, 0x5341, 0x77F3, 0x62FE, 0x65F6, 0x4EC0, - 0x98DF, 0x8680, 0x5B9E, 0x8BC6, 0x53F2, 0x77E2, 0x4F7F, 0x5C4E, - 0x9A76, 0x59CB, 0x5F0F, 0x793A, 0x58EB, 0x4E16, 0x67FF, 0x4E8B, - 0x62ED, 0x8A93, 0x901D, 0x52BF, 0x662F, 0x55DC, 0x566C, 0x9002, - 0x4ED5, 0x4F8D, 0x91CA, 0x9970, 0x6C0F, 0x5E02, 0x6043, 0x5BA4, - 0x89C6, 0x8BD5, 0x6536, 0x624B, 0x9996, 0x5B88, 0x5BFF, 0x6388, - 0x552E, 0x53D7, 0x7626, 0x517D, 0x852C, 0x67A2, 0x68B3, 0x6B8A, - 0x6292, 0x8F93, 0x53D4, 0x8212, 0x6DD1, 0x758F, 0x4E66, 0x8D4E, - 0x5B70, 0x719F, 0x85AF, 0x6691, 0x66D9, 0x7F72, 0x8700, 0x9ECD, - 0x9F20, 0x5C5E, 0x672F, 0x8FF0, 0x6811, 0x675F, 0x620D, 0x7AD6, - 0x5885, 0x5EB6, 0x6570, 0x6F31, 0x8582, 0x8583, 0x8586, 0x8588, - 0x8589, 0x858A, 0x858B, 0x858C, 0x858D, 0x858E, 0x8590, 0x8591, - 0x8592, 0x8593, 0x8594, 0x8595, 0x8596, 0x8597, 0x8598, 0x8599, -plane 56 -at 0x00 - 0x859A, 0x859D, 0x859E, 0x859F, 0x85A0, 0x85A1, 0x85A2, 0x85A3, - 0x85A5, 0x85A6, 0x85A7, 0x85A9, 0x85AB, 0x85AC, 0x85AD, 0x85B1, - 0x85B2, 0x85B3, 0x85B4, 0x85B5, 0x85B6, 0x85B8, 0x85BA, 0x85BB, - 0x85BC, 0x85BD, 0x85BE, 0x85BF, 0x85C0, 0x85C2, 0x85C3, 0x85C4, - 0x85C5, 0x85C6, 0x85C7, 0x85C8, 0x85CA, 0x85CB, 0x85CC, 0x85CD, - 0x85CE, 0x85D1, 0x85D2, 0x85D4, 0x85D6, 0x85D7, 0x85D8, 0x85D9, - 0x85DA, 0x85DB, 0x85DD, 0x85DE, 0x85DF, 0x85E0, 0x85E1, 0x85E2, - 0x85E3, 0x85E5, 0x85E6, 0x85E7, 0x85E8, 0x85EA, 0x85EB, 0x85EC, - 0x85ED, 0x85EE, 0x85EF, 0x85F0, 0x85F1, 0x85F2, 0x85F3, 0x85F4, - 0x85F5, 0x85F6, 0x85F7, 0x85F8, 0x6055, 0x5237, 0x800D, 0x6454, - 0x8870, 0x7529, 0x5E05, 0x6813, 0x62F4, 0x971C, 0x53CC, 0x723D, - 0x8C01, 0x6C34, 0x7761, 0x7A0E, 0x542E, 0x77AC, 0x987A, 0x821C, - 0x8BF4, 0x7855, 0x6714, 0x70C1, 0x65AF, 0x6495, 0x5636, 0x601D, - 0x79C1, 0x53F8, 0x4E1D, 0x6B7B, 0x8086, 0x5BFA, 0x55E3, 0x56DB, - 0x4F3A, 0x4F3C, 0x9972, 0x5DF3, 0x677E, 0x8038, 0x6002, 0x9882, - 0x9001, 0x5B8B, 0x8BBC, 0x8BF5, 0x641C, 0x8258, 0x64DE, 0x55FD, - 0x82CF, 0x9165, 0x4FD7, 0x7D20, 0x901F, 0x7C9F, 0x50F3, 0x5851, - 0x6EAF, 0x5BBF, 0x8BC9, 0x8083, 0x9178, 0x849C, 0x7B97, 0x867D, - 0x968B, 0x968F, 0x7EE5, 0x9AD3, 0x788E, 0x5C81, 0x7A57, 0x9042, - 0x96A7, 0x795F, 0x5B59, 0x635F, 0x7B0B, 0x84D1, 0x68AD, 0x5506, - 0x7F29, 0x7410, 0x7D22, 0x9501, 0x6240, 0x584C, 0x4ED6, 0x5B83, - 0x5979, 0x5854, 0x85F9, 0x85FA, 0x85FC, 0x85FD, 0x85FE, 0x8600, - 0x8601, 0x8602, 0x8603, 0x8604, 0x8606, 0x8607, 0x8608, 0x8609, - 0x860A, 0x860B, 0x860C, 0x860D, 0x860E, 0x860F, 0x8610, 0x8612, - 0x8613, 0x8614, 0x8615, 0x8617, 0x8618, 0x8619, 0x861A, 0x861B, - 0x861C, 0x861D, 0x861E, 0x861F, 0x8620, 0x8621, 0x8622, 0x8623, - 0x8624, 0x8625, 0x8626, 0x8628, 0x862A, 0x862B, 0x862C, 0x862D, - 0x862E, 0x862F, 0x8630, 0x8631, 0x8632, 0x8633, 0x8634, 0x8635, - 0x8636, 0x8637, 0x8639, 0x863A, 0x863B, 0x863D, 0x863E, 0x863F, - 0x8640, 0x8641, 0x8642, 0x8643, 0x8644, 0x8645, 0x8646, 0x8647, - 0x8648, 0x8649, 0x864A, 0x864B, 0x864C, 0x8652, 0x8653, 0x8655, - 0x8656, 0x8657, 0x8658, 0x8659, 0x865B, 0x865C, 0x865D, 0x865F, -plane 57 -at 0x00 - 0x8660, 0x8661, 0x8663, 0x8664, 0x8665, 0x8666, 0x8667, 0x8668, - 0x8669, 0x866A, 0x736D, 0x631E, 0x8E4B, 0x8E0F, 0x80CE, 0x82D4, - 0x62AC, 0x53F0, 0x6CF0, 0x915E, 0x592A, 0x6001, 0x6C70, 0x574D, - 0x644A, 0x8D2A, 0x762B, 0x6EE9, 0x575B, 0x6A80, 0x75F0, 0x6F6D, - 0x8C2D, 0x8C08, 0x5766, 0x6BEF, 0x8892, 0x78B3, 0x63A2, 0x53F9, - 0x70AD, 0x6C64, 0x5858, 0x642A, 0x5802, 0x68E0, 0x819B, 0x5510, - 0x7CD6, 0x5018, 0x8EBA, 0x6DCC, 0x8D9F, 0x70EB, 0x638F, 0x6D9B, - 0x6ED4, 0x7EE6, 0x8404, 0x6843, 0x9003, 0x6DD8, 0x9676, 0x8BA8, - 0x5957, 0x7279, 0x85E4, 0x817E, 0x75BC, 0x8A8A, 0x68AF, 0x5254, - 0x8E22, 0x9511, 0x63D0, 0x9898, 0x8E44, 0x557C, 0x4F53, 0x66FF, - 0x568F, 0x60D5, 0x6D95, 0x5243, 0x5C49, 0x5929, 0x6DFB, 0x586B, - 0x7530, 0x751C, 0x606C, 0x8214, 0x8146, 0x6311, 0x6761, 0x8FE2, - 0x773A, 0x8DF3, 0x8D34, 0x94C1, 0x5E16, 0x5385, 0x542C, 0x70C3, - 0x866D, 0x866F, 0x8670, 0x8672, 0x8673, 0x8674, 0x8675, 0x8676, - 0x8677, 0x8678, 0x8683, 0x8684, 0x8685, 0x8686, 0x8687, 0x8688, - 0x8689, 0x868E, 0x868F, 0x8690, 0x8691, 0x8692, 0x8694, 0x8696, - 0x8697, 0x8698, 0x8699, 0x869A, 0x869B, 0x869E, 0x869F, 0x86A0, - 0x86A1, 0x86A2, 0x86A5, 0x86A6, 0x86AB, 0x86AD, 0x86AE, 0x86B2, - 0x86B3, 0x86B7, 0x86B8, 0x86B9, 0x86BB, 0x86BC, 0x86BD, 0x86BE, - 0x86BF, 0x86C1, 0x86C2, 0x86C3, 0x86C5, 0x86C8, 0x86CC, 0x86CD, - 0x86D2, 0x86D3, 0x86D5, 0x86D6, 0x86D7, 0x86DA, 0x86DC, 0x86DD, - 0x86E0, 0x86E1, 0x86E2, 0x86E3, 0x86E5, 0x86E6, 0x86E7, 0x86E8, - 0x86EA, 0x86EB, 0x86EC, 0x86EF, 0x86F5, 0x86F6, 0x86F7, 0x86FA, - 0x86FB, 0x86FC, 0x86FD, 0x86FF, 0x8701, 0x8704, 0x8705, 0x8706, - 0x870B, 0x870C, 0x870E, 0x870F, 0x8710, 0x8711, 0x8714, 0x8716, - 0x6C40, 0x5EF7, 0x505C, 0x4EAD, 0x5EAD, 0x633A, 0x8247, 0x901A, - 0x6850, 0x916E, 0x77B3, 0x540C, 0x94DC, 0x5F64, 0x7AE5, 0x6876, - 0x6345, 0x7B52, 0x7EDF, 0x75DB, 0x5077, 0x6295, 0x5934, 0x900F, - 0x51F8, 0x79C3, 0x7A81, 0x56FE, 0x5F92, 0x9014, 0x6D82, 0x5C60, - 0x571F, 0x5410, 0x5154, 0x6E4D, 0x56E2, 0x63A8, 0x9893, 0x817F, - 0x8715, 0x892A, 0x9000, 0x541E, 0x5C6F, 0x81C0, 0x62D6, 0x6258, - 0x8131, 0x9E35, 0x9640, 0x9A6E, 0x9A7C, 0x692D, 0x59A5, 0x62D3, -plane 58 -at 0x00 - 0x553E, 0x6316, 0x54C7, 0x86D9, 0x6D3C, 0x5A03, 0x74E6, 0x889C, - 0x6B6A, 0x5916, 0x8C4C, 0x5F2F, 0x6E7E, 0x73A9, 0x987D, 0x4E38, - 0x70F7, 0x5B8C, 0x7897, 0x633D, 0x665A, 0x7696, 0x60CB, 0x5B9B, - 0x5A49, 0x4E07, 0x8155, 0x6C6A, 0x738B, 0x4EA1, 0x6789, 0x7F51, - 0x5F80, 0x65FA, 0x671B, 0x5FD8, 0x5984, 0x5A01, 0x8719, 0x871B, - 0x871D, 0x871F, 0x8720, 0x8724, 0x8726, 0x8727, 0x8728, 0x872A, - 0x872B, 0x872C, 0x872D, 0x872F, 0x8730, 0x8732, 0x8733, 0x8735, - 0x8736, 0x8738, 0x8739, 0x873A, 0x873C, 0x873D, 0x8740, 0x8741, - 0x8742, 0x8743, 0x8744, 0x8745, 0x8746, 0x874A, 0x874B, 0x874D, - 0x874F, 0x8750, 0x8751, 0x8752, 0x8754, 0x8755, 0x8756, 0x8758, - 0x875A, 0x875B, 0x875C, 0x875D, 0x875E, 0x875F, 0x8761, 0x8762, - 0x8766, 0x8767, 0x8768, 0x8769, 0x876A, 0x876B, 0x876C, 0x876D, - 0x876F, 0x8771, 0x8772, 0x8773, 0x8775, 0x8777, 0x8778, 0x8779, - 0x877A, 0x877F, 0x8780, 0x8781, 0x8784, 0x8786, 0x8787, 0x8789, - 0x878A, 0x878C, 0x878E, 0x878F, 0x8790, 0x8791, 0x8792, 0x8794, - 0x8795, 0x8796, 0x8798, 0x8799, 0x879A, 0x879B, 0x879C, 0x879D, - 0x879E, 0x87A0, 0x87A1, 0x87A2, 0x87A3, 0x87A4, 0x5DCD, 0x5FAE, - 0x5371, 0x97E6, 0x8FDD, 0x6845, 0x56F4, 0x552F, 0x60DF, 0x4E3A, - 0x6F4D, 0x7EF4, 0x82C7, 0x840E, 0x59D4, 0x4F1F, 0x4F2A, 0x5C3E, - 0x7EAC, 0x672A, 0x851A, 0x5473, 0x754F, 0x80C3, 0x5582, 0x9B4F, - 0x4F4D, 0x6E2D, 0x8C13, 0x5C09, 0x6170, 0x536B, 0x761F, 0x6E29, - 0x868A, 0x6587, 0x95FB, 0x7EB9, 0x543B, 0x7A33, 0x7D0A, 0x95EE, - 0x55E1, 0x7FC1, 0x74EE, 0x631D, 0x8717, 0x6DA1, 0x7A9D, 0x6211, - 0x65A1, 0x5367, 0x63E1, 0x6C83, 0x5DEB, 0x545C, 0x94A8, 0x4E4C, - 0x6C61, 0x8BEC, 0x5C4B, 0x65E0, 0x829C, 0x68A7, 0x543E, 0x5434, - 0x6BCB, 0x6B66, 0x4E94, 0x6342, 0x5348, 0x821E, 0x4F0D, 0x4FAE, - 0x575E, 0x620A, 0x96FE, 0x6664, 0x7269, 0x52FF, 0x52A1, 0x609F, - 0x8BEF, 0x6614, 0x7199, 0x6790, 0x897F, 0x7852, 0x77FD, 0x6670, - 0x563B, 0x5438, 0x9521, 0x727A, 0x87A5, 0x87A6, 0x87A7, 0x87A9, - 0x87AA, 0x87AE, 0x87B0, 0x87B1, 0x87B2, 0x87B4, 0x87B6, 0x87B7, - 0x87B8, 0x87B9, 0x87BB, 0x87BC, 0x87BE, 0x87BF, 0x87C1, 0x87C2, - 0x87C3, 0x87C4, 0x87C5, 0x87C7, 0x87C8, 0x87C9, 0x87CC, 0x87CD, -plane 59 -at 0x00 - 0x87CE, 0x87CF, 0x87D0, 0x87D4, 0x87D5, 0x87D6, 0x87D7, 0x87D8, - 0x87D9, 0x87DA, 0x87DC, 0x87DD, 0x87DE, 0x87DF, 0x87E1, 0x87E2, - 0x87E3, 0x87E4, 0x87E6, 0x87E7, 0x87E8, 0x87E9, 0x87EB, 0x87EC, - 0x87ED, 0x87EF, 0x87F0, 0x87F1, 0x87F2, 0x87F3, 0x87F4, 0x87F5, - 0x87F6, 0x87F7, 0x87F8, 0x87FA, 0x87FB, 0x87FC, 0x87FD, 0x87FF, - 0x8800, 0x8801, 0x8802, 0x8804, 0x8805, 0x8806, 0x8807, 0x8808, - 0x8809, 0x880B, 0x880C, 0x880D, 0x880E, 0x880F, 0x8810, 0x8811, - 0x8812, 0x8814, 0x8817, 0x8818, 0x8819, 0x881A, 0x881C, 0x881D, - 0x881E, 0x881F, 0x8820, 0x8823, 0x7A00, 0x606F, 0x5E0C, 0x6089, - 0x819D, 0x5915, 0x60DC, 0x7184, 0x70EF, 0x6EAA, 0x6C50, 0x7280, - 0x6A84, 0x88AD, 0x5E2D, 0x4E60, 0x5AB3, 0x559C, 0x94E3, 0x6D17, - 0x7CFB, 0x9699, 0x620F, 0x7EC6, 0x778E, 0x867E, 0x5323, 0x971E, - 0x8F96, 0x6687, 0x5CE1, 0x4FA0, 0x72ED, 0x4E0B, 0x53A6, 0x590F, - 0x5413, 0x6380, 0x9528, 0x5148, 0x4ED9, 0x9C9C, 0x7EA4, 0x54B8, - 0x8D24, 0x8854, 0x8237, 0x95F2, 0x6D8E, 0x5F26, 0x5ACC, 0x663E, - 0x9669, 0x73B0, 0x732E, 0x53BF, 0x817A, 0x9985, 0x7FA1, 0x5BAA, - 0x9677, 0x9650, 0x7EBF, 0x76F8, 0x53A2, 0x9576, 0x9999, 0x7BB1, - 0x8944, 0x6E58, 0x4E61, 0x7FD4, 0x7965, 0x8BE6, 0x60F3, 0x54CD, - 0x4EAB, 0x9879, 0x5DF7, 0x6A61, 0x50CF, 0x5411, 0x8C61, 0x8427, - 0x785D, 0x9704, 0x524A, 0x54EE, 0x56A3, 0x9500, 0x6D88, 0x5BB5, - 0x6DC6, 0x6653, 0x8824, 0x8825, 0x8826, 0x8827, 0x8828, 0x8829, - 0x882A, 0x882B, 0x882C, 0x882D, 0x882E, 0x882F, 0x8830, 0x8831, - 0x8833, 0x8834, 0x8835, 0x8836, 0x8837, 0x8838, 0x883A, 0x883B, - 0x883D, 0x883E, 0x883F, 0x8841, 0x8842, 0x8843, 0x8846, 0x8847, - 0x8848, 0x8849, 0x884A, 0x884B, 0x884E, 0x884F, 0x8850, 0x8851, - 0x8852, 0x8853, 0x8855, 0x8856, 0x8858, 0x885A, 0x885B, 0x885C, - 0x885D, 0x885E, 0x885F, 0x8860, 0x8866, 0x8867, 0x886A, 0x886D, - 0x886F, 0x8871, 0x8873, 0x8874, 0x8875, 0x8876, 0x8878, 0x8879, - 0x887A, 0x887B, 0x887C, 0x8880, 0x8883, 0x8886, 0x8887, 0x8889, - 0x888A, 0x888C, 0x888E, 0x888F, 0x8890, 0x8891, 0x8893, 0x8894, - 0x8895, 0x8897, 0x8898, 0x8899, 0x889A, 0x889B, 0x889D, 0x889E, - 0x889F, 0x88A0, 0x88A1, 0x88A3, 0x88A5, 0x88A6, 0x88A7, 0x88A8, -plane 60 -at 0x00 - 0x88A9, 0x88AA, 0x5C0F, 0x5B5D, 0x6821, 0x8096, 0x5578, 0x7B11, - 0x6548, 0x6954, 0x4E9B, 0x6B47, 0x874E, 0x978B, 0x534F, 0x631F, - 0x643A, 0x90AA, 0x659C, 0x80C1, 0x8C10, 0x5199, 0x68B0, 0x5378, - 0x87F9, 0x61C8, 0x6CC4, 0x6CFB, 0x8C22, 0x5C51, 0x85AA, 0x82AF, - 0x950C, 0x6B23, 0x8F9B, 0x65B0, 0x5FFB, 0x5FC3, 0x4FE1, 0x8845, - 0x661F, 0x8165, 0x7329, 0x60FA, 0x5174, 0x5211, 0x578B, 0x5F62, - 0x90A2, 0x884C, 0x9192, 0x5E78, 0x674F, 0x6027, 0x59D3, 0x5144, - 0x51F6, 0x80F8, 0x5308, 0x6C79, 0x96C4, 0x718A, 0x4F11, 0x4FEE, - 0x7F9E, 0x673D, 0x55C5, 0x9508, 0x79C0, 0x8896, 0x7EE3, 0x589F, - 0x620C, 0x9700, 0x865A, 0x5618, 0x987B, 0x5F90, 0x8BB8, 0x84C4, - 0x9157, 0x53D9, 0x65ED, 0x5E8F, 0x755C, 0x6064, 0x7D6E, 0x5A7F, - 0x7EEA, 0x7EED, 0x8F69, 0x55A7, 0x5BA3, 0x60AC, 0x65CB, 0x7384, - 0x88AC, 0x88AE, 0x88AF, 0x88B0, 0x88B2, 0x88B3, 0x88B4, 0x88B5, - 0x88B6, 0x88B8, 0x88B9, 0x88BA, 0x88BB, 0x88BD, 0x88BE, 0x88BF, - 0x88C0, 0x88C3, 0x88C4, 0x88C7, 0x88C8, 0x88CA, 0x88CB, 0x88CC, - 0x88CD, 0x88CF, 0x88D0, 0x88D1, 0x88D3, 0x88D6, 0x88D7, 0x88DA, - 0x88DB, 0x88DC, 0x88DD, 0x88DE, 0x88E0, 0x88E1, 0x88E6, 0x88E7, - 0x88E9, 0x88EA, 0x88EB, 0x88EC, 0x88ED, 0x88EE, 0x88EF, 0x88F2, - 0x88F5, 0x88F6, 0x88F7, 0x88FA, 0x88FB, 0x88FD, 0x88FF, 0x8900, - 0x8901, 0x8903, 0x8904, 0x8905, 0x8906, 0x8907, 0x8908, 0x8909, - 0x890B, 0x890C, 0x890D, 0x890E, 0x890F, 0x8911, 0x8914, 0x8915, - 0x8916, 0x8917, 0x8918, 0x891C, 0x891D, 0x891E, 0x891F, 0x8920, - 0x8922, 0x8923, 0x8924, 0x8926, 0x8927, 0x8928, 0x8929, 0x892C, - 0x892D, 0x892E, 0x892F, 0x8931, 0x8932, 0x8933, 0x8935, 0x8937, - 0x9009, 0x7663, 0x7729, 0x7EDA, 0x9774, 0x859B, 0x5B66, 0x7A74, - 0x96EA, 0x8840, 0x52CB, 0x718F, 0x5FAA, 0x65EC, 0x8BE2, 0x5BFB, - 0x9A6F, 0x5DE1, 0x6B89, 0x6C5B, 0x8BAD, 0x8BAF, 0x900A, 0x8FC5, - 0x538B, 0x62BC, 0x9E26, 0x9E2D, 0x5440, 0x4E2B, 0x82BD, 0x7259, - 0x869C, 0x5D16, 0x8859, 0x6DAF, 0x96C5, 0x54D1, 0x4E9A, 0x8BB6, - 0x7109, 0x54BD, 0x9609, 0x70DF, 0x6DF9, 0x76D0, 0x4E25, 0x7814, - 0x8712, 0x5CA9, 0x5EF6, 0x8A00, 0x989C, 0x960E, 0x708E, 0x6CBF, - 0x5944, 0x63A9, 0x773C, 0x884D, 0x6F14, 0x8273, 0x5830, 0x71D5, -plane 61 -at 0x00 - 0x538C, 0x781A, 0x96C1, 0x5501, 0x5F66, 0x7130, 0x5BB4, 0x8C1A, - 0x9A8C, 0x6B83, 0x592E, 0x9E2F, 0x79E7, 0x6768, 0x626C, 0x4F6F, - 0x75A1, 0x7F8A, 0x6D0B, 0x9633, 0x6C27, 0x4EF0, 0x75D2, 0x517B, - 0x6837, 0x6F3E, 0x9080, 0x8170, 0x5996, 0x7476, 0x8938, 0x8939, - 0x893A, 0x893B, 0x893C, 0x893D, 0x893E, 0x893F, 0x8940, 0x8942, - 0x8943, 0x8945, 0x8946, 0x8947, 0x8948, 0x8949, 0x894A, 0x894B, - 0x894C, 0x894D, 0x894E, 0x894F, 0x8950, 0x8951, 0x8952, 0x8953, - 0x8954, 0x8955, 0x8956, 0x8957, 0x8958, 0x8959, 0x895A, 0x895B, - 0x895C, 0x895D, 0x8960, 0x8961, 0x8962, 0x8963, 0x8964, 0x8965, - 0x8967, 0x8968, 0x8969, 0x896A, 0x896B, 0x896C, 0x896D, 0x896E, - 0x896F, 0x8970, 0x8971, 0x8972, 0x8973, 0x8974, 0x8975, 0x8976, - 0x8977, 0x8978, 0x8979, 0x897A, 0x897C, 0x897D, 0x897E, 0x8980, - 0x8982, 0x8984, 0x8985, 0x8987, 0x8988, 0x8989, 0x898A, 0x898B, - 0x898C, 0x898D, 0x898E, 0x898F, 0x8990, 0x8991, 0x8992, 0x8993, - 0x8994, 0x8995, 0x8996, 0x8997, 0x8998, 0x8999, 0x899A, 0x899B, - 0x899C, 0x899D, 0x899E, 0x899F, 0x89A0, 0x89A1, 0x6447, 0x5C27, - 0x9065, 0x7A91, 0x8C23, 0x59DA, 0x54AC, 0x8200, 0x836F, 0x8981, - 0x8000, 0x6930, 0x564E, 0x8036, 0x7237, 0x91CE, 0x51B6, 0x4E5F, - 0x9875, 0x6396, 0x4E1A, 0x53F6, 0x66F3, 0x814B, 0x591C, 0x6DB2, - 0x4E00, 0x58F9, 0x533B, 0x63D6, 0x94F1, 0x4F9D, 0x4F0A, 0x8863, - 0x9890, 0x5937, 0x9057, 0x79FB, 0x4EEA, 0x80F0, 0x7591, 0x6C82, - 0x5B9C, 0x59E8, 0x5F5D, 0x6905, 0x8681, 0x501A, 0x5DF2, 0x4E59, - 0x77E3, 0x4EE5, 0x827A, 0x6291, 0x6613, 0x9091, 0x5C79, 0x4EBF, - 0x5F79, 0x81C6, 0x9038, 0x8084, 0x75AB, 0x4EA6, 0x88D4, 0x610F, - 0x6BC5, 0x5FC6, 0x4E49, 0x76CA, 0x6EA2, 0x8BE3, 0x8BAE, 0x8C0A, - 0x8BD1, 0x5F02, 0x7FFC, 0x7FCC, 0x7ECE, 0x8335, 0x836B, 0x56E0, - 0x6BB7, 0x97F3, 0x9634, 0x59FB, 0x541F, 0x94F6, 0x6DEB, 0x5BC5, - 0x996E, 0x5C39, 0x5F15, 0x9690, 0x89A2, 0x89A3, 0x89A4, 0x89A5, - 0x89A6, 0x89A7, 0x89A8, 0x89A9, 0x89AA, 0x89AB, 0x89AC, 0x89AD, - 0x89AE, 0x89AF, 0x89B0, 0x89B1, 0x89B2, 0x89B3, 0x89B4, 0x89B5, - 0x89B6, 0x89B7, 0x89B8, 0x89B9, 0x89BA, 0x89BB, 0x89BC, 0x89BD, - 0x89BE, 0x89BF, 0x89C0, 0x89C3, 0x89CD, 0x89D3, 0x89D4, 0x89D5, -plane 62 -at 0x00 - 0x89D7, 0x89D8, 0x89D9, 0x89DB, 0x89DD, 0x89DF, 0x89E0, 0x89E1, - 0x89E2, 0x89E4, 0x89E7, 0x89E8, 0x89E9, 0x89EA, 0x89EC, 0x89ED, - 0x89EE, 0x89F0, 0x89F1, 0x89F2, 0x89F4, 0x89F5, 0x89F6, 0x89F7, - 0x89F8, 0x89F9, 0x89FA, 0x89FB, 0x89FC, 0x89FD, 0x89FE, 0x89FF, - 0x8A01, 0x8A02, 0x8A03, 0x8A04, 0x8A05, 0x8A06, 0x8A08, 0x8A09, - 0x8A0A, 0x8A0B, 0x8A0C, 0x8A0D, 0x8A0E, 0x8A0F, 0x8A10, 0x8A11, - 0x8A12, 0x8A13, 0x8A14, 0x8A15, 0x8A16, 0x8A17, 0x8A18, 0x8A19, - 0x8A1A, 0x8A1B, 0x8A1C, 0x8A1D, 0x5370, 0x82F1, 0x6A31, 0x5A74, - 0x9E70, 0x5E94, 0x7F28, 0x83B9, 0x8424, 0x8425, 0x8367, 0x8747, - 0x8FCE, 0x8D62, 0x76C8, 0x5F71, 0x9896, 0x786C, 0x6620, 0x54DF, - 0x62E5, 0x4F63, 0x81C3, 0x75C8, 0x5EB8, 0x96CD, 0x8E0A, 0x86F9, - 0x548F, 0x6CF3, 0x6D8C, 0x6C38, 0x607F, 0x52C7, 0x7528, 0x5E7D, - 0x4F18, 0x60A0, 0x5FE7, 0x5C24, 0x7531, 0x90AE, 0x94C0, 0x72B9, - 0x6CB9, 0x6E38, 0x9149, 0x6709, 0x53CB, 0x53F3, 0x4F51, 0x91C9, - 0x8BF1, 0x53C8, 0x5E7C, 0x8FC2, 0x6DE4, 0x4E8E, 0x76C2, 0x6986, - 0x865E, 0x611A, 0x8206, 0x4F59, 0x4FDE, 0x903E, 0x9C7C, 0x6109, - 0x6E1D, 0x6E14, 0x9685, 0x4E88, 0x5A31, 0x96E8, 0x4E0E, 0x5C7F, - 0x79B9, 0x5B87, 0x8BED, 0x7FBD, 0x7389, 0x57DF, 0x828B, 0x90C1, - 0x5401, 0x9047, 0x55BB, 0x5CEA, 0x5FA1, 0x6108, 0x6B32, 0x72F1, - 0x80B2, 0x8A89, 0x8A1E, 0x8A1F, 0x8A20, 0x8A21, 0x8A22, 0x8A23, - 0x8A24, 0x8A25, 0x8A26, 0x8A27, 0x8A28, 0x8A29, 0x8A2A, 0x8A2B, - 0x8A2C, 0x8A2D, 0x8A2E, 0x8A2F, 0x8A30, 0x8A31, 0x8A32, 0x8A33, - 0x8A34, 0x8A35, 0x8A36, 0x8A37, 0x8A38, 0x8A39, 0x8A3A, 0x8A3B, - 0x8A3C, 0x8A3D, 0x8A3F, 0x8A40, 0x8A41, 0x8A42, 0x8A43, 0x8A44, - 0x8A45, 0x8A46, 0x8A47, 0x8A49, 0x8A4A, 0x8A4B, 0x8A4C, 0x8A4D, - 0x8A4E, 0x8A4F, 0x8A50, 0x8A51, 0x8A52, 0x8A53, 0x8A54, 0x8A55, - 0x8A56, 0x8A57, 0x8A58, 0x8A59, 0x8A5A, 0x8A5B, 0x8A5C, 0x8A5D, - 0x8A5E, 0x8A5F, 0x8A60, 0x8A61, 0x8A62, 0x8A63, 0x8A64, 0x8A65, - 0x8A66, 0x8A67, 0x8A68, 0x8A69, 0x8A6A, 0x8A6B, 0x8A6C, 0x8A6D, - 0x8A6E, 0x8A6F, 0x8A70, 0x8A71, 0x8A72, 0x8A73, 0x8A74, 0x8A75, - 0x8A76, 0x8A77, 0x8A78, 0x8A7A, 0x8A7B, 0x8A7C, 0x8A7D, 0x8A7E, - 0x8A7F, 0x8A80, 0x6D74, 0x5BD3, 0x88D5, 0x9884, 0x8C6B, 0x9A6D, -plane 63 -at 0x00 - 0x9E33, 0x6E0A, 0x51A4, 0x5143, 0x57A3, 0x8881, 0x539F, 0x63F4, - 0x8F95, 0x56ED, 0x5458, 0x5706, 0x733F, 0x6E90, 0x7F18, 0x8FDC, - 0x82D1, 0x613F, 0x6028, 0x9662, 0x66F0, 0x7EA6, 0x8D8A, 0x8DC3, - 0x94A5, 0x5CB3, 0x7CA4, 0x6708, 0x60A6, 0x9605, 0x8018, 0x4E91, - 0x90E7, 0x5300, 0x9668, 0x5141, 0x8FD0, 0x8574, 0x915D, 0x6655, - 0x97F5, 0x5B55, 0x531D, 0x7838, 0x6742, 0x683D, 0x54C9, 0x707E, - 0x5BB0, 0x8F7D, 0x518D, 0x5728, 0x54B1, 0x6512, 0x6682, 0x8D5E, - 0x8D43, 0x810F, 0x846C, 0x906D, 0x7CDF, 0x51FF, 0x85FB, 0x67A3, - 0x65E9, 0x6FA1, 0x86A4, 0x8E81, 0x566A, 0x9020, 0x7682, 0x7076, - 0x71E5, 0x8D23, 0x62E9, 0x5219, 0x6CFD, 0x8D3C, 0x600E, 0x589E, - 0x618E, 0x66FE, 0x8D60, 0x624E, 0x55B3, 0x6E23, 0x672D, 0x8F67, - 0x8A81, 0x8A82, 0x8A83, 0x8A84, 0x8A85, 0x8A86, 0x8A87, 0x8A88, - 0x8A8B, 0x8A8C, 0x8A8D, 0x8A8E, 0x8A8F, 0x8A90, 0x8A91, 0x8A92, - 0x8A94, 0x8A95, 0x8A96, 0x8A97, 0x8A98, 0x8A99, 0x8A9A, 0x8A9B, - 0x8A9C, 0x8A9D, 0x8A9E, 0x8A9F, 0x8AA0, 0x8AA1, 0x8AA2, 0x8AA3, - 0x8AA4, 0x8AA5, 0x8AA6, 0x8AA7, 0x8AA8, 0x8AA9, 0x8AAA, 0x8AAB, - 0x8AAC, 0x8AAD, 0x8AAE, 0x8AAF, 0x8AB0, 0x8AB1, 0x8AB2, 0x8AB3, - 0x8AB4, 0x8AB5, 0x8AB6, 0x8AB7, 0x8AB8, 0x8AB9, 0x8ABA, 0x8ABB, - 0x8ABC, 0x8ABD, 0x8ABE, 0x8ABF, 0x8AC0, 0x8AC1, 0x8AC2, 0x8AC3, - 0x8AC4, 0x8AC5, 0x8AC6, 0x8AC7, 0x8AC8, 0x8AC9, 0x8ACA, 0x8ACB, - 0x8ACC, 0x8ACD, 0x8ACE, 0x8ACF, 0x8AD0, 0x8AD1, 0x8AD2, 0x8AD3, - 0x8AD4, 0x8AD5, 0x8AD6, 0x8AD7, 0x8AD8, 0x8AD9, 0x8ADA, 0x8ADB, - 0x8ADC, 0x8ADD, 0x8ADE, 0x8ADF, 0x8AE0, 0x8AE1, 0x8AE2, 0x8AE3, - 0x94E1, 0x95F8, 0x7728, 0x6805, 0x69A8, 0x548B, 0x4E4D, 0x70B8, - 0x8BC8, 0x6458, 0x658B, 0x5B85, 0x7A84, 0x503A, 0x5BE8, 0x77BB, - 0x6BE1, 0x8A79, 0x7C98, 0x6CBE, 0x76CF, 0x65A9, 0x8F97, 0x5D2D, - 0x5C55, 0x8638, 0x6808, 0x5360, 0x6218, 0x7AD9, 0x6E5B, 0x7EFD, - 0x6A1F, 0x7AE0, 0x5F70, 0x6F33, 0x5F20, 0x638C, 0x6DA8, 0x6756, - 0x4E08, 0x5E10, 0x8D26, 0x4ED7, 0x80C0, 0x7634, 0x969C, 0x62DB, - 0x662D, 0x627E, 0x6CBC, 0x8D75, 0x7167, 0x7F69, 0x5146, 0x8087, - 0x53EC, 0x906E, 0x6298, 0x54F2, 0x86F0, 0x8F99, 0x8005, 0x9517, - 0x8517, 0x8FD9, 0x6D59, 0x73CD, 0x659F, 0x771F, 0x7504, 0x7827, -plane 64 -at 0x00 - 0x81FB, 0x8D1E, 0x9488, 0x4FA6, 0x6795, 0x75B9, 0x8BCA, 0x9707, - 0x632F, 0x9547, 0x9635, 0x84B8, 0x6323, 0x7741, 0x5F81, 0x72F0, - 0x4E89, 0x6014, 0x6574, 0x62EF, 0x6B63, 0x653F, 0x8AE4, 0x8AE5, - 0x8AE6, 0x8AE7, 0x8AE8, 0x8AE9, 0x8AEA, 0x8AEB, 0x8AEC, 0x8AED, - 0x8AEE, 0x8AEF, 0x8AF0, 0x8AF1, 0x8AF2, 0x8AF3, 0x8AF4, 0x8AF5, - 0x8AF6, 0x8AF7, 0x8AF8, 0x8AF9, 0x8AFA, 0x8AFB, 0x8AFC, 0x8AFD, - 0x8AFE, 0x8AFF, 0x8B00, 0x8B01, 0x8B02, 0x8B03, 0x8B04, 0x8B05, - 0x8B06, 0x8B08, 0x8B09, 0x8B0A, 0x8B0B, 0x8B0C, 0x8B0D, 0x8B0E, - 0x8B0F, 0x8B10, 0x8B11, 0x8B12, 0x8B13, 0x8B14, 0x8B15, 0x8B16, - 0x8B17, 0x8B18, 0x8B19, 0x8B1A, 0x8B1B, 0x8B1C, 0x8B1D, 0x8B1E, - 0x8B1F, 0x8B20, 0x8B21, 0x8B22, 0x8B23, 0x8B24, 0x8B25, 0x8B27, - 0x8B28, 0x8B29, 0x8B2A, 0x8B2B, 0x8B2C, 0x8B2D, 0x8B2E, 0x8B2F, - 0x8B30, 0x8B31, 0x8B32, 0x8B33, 0x8B34, 0x8B35, 0x8B36, 0x8B37, - 0x8B38, 0x8B39, 0x8B3A, 0x8B3B, 0x8B3C, 0x8B3D, 0x8B3E, 0x8B3F, - 0x8B40, 0x8B41, 0x8B42, 0x8B43, 0x8B44, 0x8B45, 0x5E27, 0x75C7, - 0x90D1, 0x8BC1, 0x829D, 0x679D, 0x652F, 0x5431, 0x8718, 0x77E5, - 0x80A2, 0x8102, 0x6C41, 0x4E4B, 0x7EC7, 0x804C, 0x76F4, 0x690D, - 0x6B96, 0x6267, 0x503C, 0x4F84, 0x5740, 0x6307, 0x6B62, 0x8DBE, - 0x53EA, 0x65E8, 0x7EB8, 0x5FD7, 0x631A, 0x63B7, 0x81F3, 0x81F4, - 0x7F6E, 0x5E1C, 0x5CD9, 0x5236, 0x667A, 0x79E9, 0x7A1A, 0x8D28, - 0x7099, 0x75D4, 0x6EDE, 0x6CBB, 0x7A92, 0x4E2D, 0x76C5, 0x5FE0, - 0x949F, 0x8877, 0x7EC8, 0x79CD, 0x80BF, 0x91CD, 0x4EF2, 0x4F17, - 0x821F, 0x5468, 0x5DDE, 0x6D32, 0x8BCC, 0x7CA5, 0x8F74, 0x8098, - 0x5E1A, 0x5492, 0x76B1, 0x5B99, 0x663C, 0x9AA4, 0x73E0, 0x682A, - 0x86DB, 0x6731, 0x732A, 0x8BF8, 0x8BDB, 0x9010, 0x7AF9, 0x70DB, - 0x716E, 0x62C4, 0x77A9, 0x5631, 0x4E3B, 0x8457, 0x67F1, 0x52A9, - 0x86C0, 0x8D2E, 0x94F8, 0x7B51, 0x8B46, 0x8B47, 0x8B48, 0x8B49, - 0x8B4A, 0x8B4B, 0x8B4C, 0x8B4D, 0x8B4E, 0x8B4F, 0x8B50, 0x8B51, - 0x8B52, 0x8B53, 0x8B54, 0x8B55, 0x8B56, 0x8B57, 0x8B58, 0x8B59, - 0x8B5A, 0x8B5B, 0x8B5C, 0x8B5D, 0x8B5E, 0x8B5F, 0x8B60, 0x8B61, - 0x8B62, 0x8B63, 0x8B64, 0x8B65, 0x8B67, 0x8B68, 0x8B69, 0x8B6A, - 0x8B6B, 0x8B6D, 0x8B6E, 0x8B6F, 0x8B70, 0x8B71, 0x8B72, 0x8B73, -plane 65 -at 0x00 - 0x8B74, 0x8B75, 0x8B76, 0x8B77, 0x8B78, 0x8B79, 0x8B7A, 0x8B7B, - 0x8B7C, 0x8B7D, 0x8B7E, 0x8B7F, 0x8B80, 0x8B81, 0x8B82, 0x8B83, - 0x8B84, 0x8B85, 0x8B86, 0x8B87, 0x8B88, 0x8B89, 0x8B8A, 0x8B8B, - 0x8B8C, 0x8B8D, 0x8B8E, 0x8B8F, 0x8B90, 0x8B91, 0x8B92, 0x8B93, - 0x8B94, 0x8B95, 0x8B96, 0x8B97, 0x8B98, 0x8B99, 0x8B9A, 0x8B9B, - 0x8B9C, 0x8B9D, 0x8B9E, 0x8B9F, 0x8BAC, 0x8BB1, 0x8BBB, 0x8BC7, - 0x8BD0, 0x8BEA, 0x8C09, 0x8C1E, 0x4F4F, 0x6CE8, 0x795D, 0x9A7B, - 0x6293, 0x722A, 0x62FD, 0x4E13, 0x7816, 0x8F6C, 0x64B0, 0x8D5A, - 0x7BC6, 0x6869, 0x5E84, 0x88C5, 0x5986, 0x649E, 0x58EE, 0x72B6, - 0x690E, 0x9525, 0x8FFD, 0x8D58, 0x5760, 0x7F00, 0x8C06, 0x51C6, - 0x6349, 0x62D9, 0x5353, 0x684C, 0x7422, 0x8301, 0x914C, 0x5544, - 0x7740, 0x707C, 0x6D4A, 0x5179, 0x54A8, 0x8D44, 0x59FF, 0x6ECB, - 0x6DC4, 0x5B5C, 0x7D2B, 0x4ED4, 0x7C7D, 0x6ED3, 0x5B50, 0x81EA, - 0x6E0D, 0x5B57, 0x9B03, 0x68D5, 0x8E2A, 0x5B97, 0x7EFC, 0x603B, - 0x7EB5, 0x90B9, 0x8D70, 0x594F, 0x63CD, 0x79DF, 0x8DB3, 0x5352, - 0x65CF, 0x7956, 0x8BC5, 0x963B, 0x7EC4, 0x94BB, 0x7E82, 0x5634, - 0x9189, 0x6700, 0x7F6A, 0x5C0A, 0x9075, 0x6628, 0x5DE6, 0x4F50, - 0x67DE, 0x505A, 0x4F5C, 0x5750, 0x5EA7, 0, 0, 0, - 0, 0, 0x8C38, 0x8C39, 0x8C3A, 0x8C3B, 0x8C3C, 0x8C3D, - 0x8C3E, 0x8C3F, 0x8C40, 0x8C42, 0x8C43, 0x8C44, 0x8C45, 0x8C48, - 0x8C4A, 0x8C4B, 0x8C4D, 0x8C4E, 0x8C4F, 0x8C50, 0x8C51, 0x8C52, - 0x8C53, 0x8C54, 0x8C56, 0x8C57, 0x8C58, 0x8C59, 0x8C5B, 0x8C5C, - 0x8C5D, 0x8C5E, 0x8C5F, 0x8C60, 0x8C63, 0x8C64, 0x8C65, 0x8C66, - 0x8C67, 0x8C68, 0x8C69, 0x8C6C, 0x8C6D, 0x8C6E, 0x8C6F, 0x8C70, - 0x8C71, 0x8C72, 0x8C74, 0x8C75, 0x8C76, 0x8C77, 0x8C7B, 0x8C7C, - 0x8C7D, 0x8C7E, 0x8C7F, 0x8C80, 0x8C81, 0x8C83, 0x8C84, 0x8C86, - 0x8C87, 0x8C88, 0x8C8B, 0x8C8D, 0x8C8E, 0x8C8F, 0x8C90, 0x8C91, - 0x8C92, 0x8C93, 0x8C95, 0x8C96, 0x8C97, 0x8C99, 0x8C9A, 0x8C9B, - 0x8C9C, 0x8C9D, 0x8C9E, 0x8C9F, 0x8CA0, 0x8CA1, 0x8CA2, 0x8CA3, - 0x8CA4, 0x8CA5, 0x8CA6, 0x8CA7, 0x8CA8, 0x8CA9, 0x8CAA, 0x8CAB, - 0x8CAC, 0x8CAD, 0x4E8D, 0x4E0C, 0x5140, 0x4E10, 0x5EFF, 0x5345, - 0x4E15, 0x4E98, 0x4E1E, 0x9B32, 0x5B6C, 0x5669, 0x4E28, 0x79BA, -plane 66 -at 0x00 - 0x4E3F, 0x5315, 0x4E47, 0x592D, 0x723B, 0x536E, 0x6C10, 0x56DF, - 0x80E4, 0x9997, 0x6BD3, 0x777E, 0x9F17, 0x4E36, 0x4E9F, 0x9F10, - 0x4E5C, 0x4E69, 0x4E93, 0x8288, 0x5B5B, 0x556C, 0x560F, 0x4EC4, - 0x538D, 0x539D, 0x53A3, 0x53A5, 0x53AE, 0x9765, 0x8D5D, 0x531A, - 0x53F5, 0x5326, 0x532E, 0x533E, 0x8D5C, 0x5366, 0x5363, 0x5202, - 0x5208, 0x520E, 0x522D, 0x5233, 0x523F, 0x5240, 0x524C, 0x525E, - 0x5261, 0x525C, 0x84AF, 0x527D, 0x5282, 0x5281, 0x5290, 0x5293, - 0x5182, 0x7F54, 0x4EBB, 0x4EC3, 0x4EC9, 0x4EC2, 0x4EE8, 0x4EE1, - 0x4EEB, 0x4EDE, 0x4F1B, 0x4EF3, 0x4F22, 0x4F64, 0x4EF5, 0x4F25, - 0x4F27, 0x4F09, 0x4F2B, 0x4F5E, 0x4F67, 0x6538, 0x4F5A, 0x4F5D, - 0x8CAE, 0x8CAF, 0x8CB0, 0x8CB1, 0x8CB2, 0x8CB3, 0x8CB4, 0x8CB5, - 0x8CB6, 0x8CB7, 0x8CB8, 0x8CB9, 0x8CBA, 0x8CBB, 0x8CBC, 0x8CBD, - 0x8CBE, 0x8CBF, 0x8CC0, 0x8CC1, 0x8CC2, 0x8CC3, 0x8CC4, 0x8CC5, - 0x8CC6, 0x8CC7, 0x8CC8, 0x8CC9, 0x8CCA, 0x8CCB, 0x8CCC, 0x8CCD, - 0x8CCE, 0x8CCF, 0x8CD0, 0x8CD1, 0x8CD2, 0x8CD3, 0x8CD4, 0x8CD5, - 0x8CD6, 0x8CD7, 0x8CD8, 0x8CD9, 0x8CDA, 0x8CDB, 0x8CDC, 0x8CDD, - 0x8CDE, 0x8CDF, 0x8CE0, 0x8CE1, 0x8CE2, 0x8CE3, 0x8CE4, 0x8CE5, - 0x8CE6, 0x8CE7, 0x8CE8, 0x8CE9, 0x8CEA, 0x8CEB, 0x8CEC, 0x8CED, - 0x8CEE, 0x8CEF, 0x8CF0, 0x8CF1, 0x8CF2, 0x8CF3, 0x8CF4, 0x8CF5, - 0x8CF6, 0x8CF7, 0x8CF8, 0x8CF9, 0x8CFA, 0x8CFB, 0x8CFC, 0x8CFD, - 0x8CFE, 0x8CFF, 0x8D00, 0x8D01, 0x8D02, 0x8D03, 0x8D04, 0x8D05, - 0x8D06, 0x8D07, 0x8D08, 0x8D09, 0x8D0A, 0x8D0B, 0x8D0C, 0x8D0D, - 0x4F5F, 0x4F57, 0x4F32, 0x4F3D, 0x4F76, 0x4F74, 0x4F91, 0x4F89, - 0x4F83, 0x4F8F, 0x4F7E, 0x4F7B, 0x4FAA, 0x4F7C, 0x4FAC, 0x4F94, - 0x4FE6, 0x4FE8, 0x4FEA, 0x4FC5, 0x4FDA, 0x4FE3, 0x4FDC, 0x4FD1, - 0x4FDF, 0x4FF8, 0x5029, 0x504C, 0x4FF3, 0x502C, 0x500F, 0x502E, - 0x502D, 0x4FFE, 0x501C, 0x500C, 0x5025, 0x5028, 0x507E, 0x5043, - 0x5055, 0x5048, 0x504E, 0x506C, 0x507B, 0x50A5, 0x50A7, 0x50A9, - 0x50BA, 0x50D6, 0x5106, 0x50ED, 0x50EC, 0x50E6, 0x50EE, 0x5107, - 0x510B, 0x4EDD, 0x6C3D, 0x4F58, 0x4F65, 0x4FCE, 0x9FA0, 0x6C46, - 0x7C74, 0x516E, 0x5DFD, 0x9EC9, 0x9998, 0x5181, 0x5914, 0x52F9, - 0x530D, 0x8A07, 0x5310, 0x51EB, 0x5919, 0x5155, 0x4EA0, 0x5156, -plane 67 -at 0x00 - 0x4EB3, 0x886E, 0x88A4, 0x4EB5, 0x8114, 0x88D2, 0x7980, 0x5B34, - 0x8803, 0x7FB8, 0x51AB, 0x51B1, 0x51BD, 0x51BC, 0x8D0E, 0x8D0F, - 0x8D10, 0x8D11, 0x8D12, 0x8D13, 0x8D14, 0x8D15, 0x8D16, 0x8D17, - 0x8D18, 0x8D19, 0x8D1A, 0x8D1B, 0x8D1C, 0x8D20, 0x8D51, 0x8D52, - 0x8D57, 0x8D5F, 0x8D65, 0x8D68, 0x8D69, 0x8D6A, 0x8D6C, 0x8D6E, - 0x8D6F, 0x8D71, 0x8D72, 0x8D78, 0x8D79, 0x8D7A, 0x8D7B, 0x8D7C, - 0x8D7D, 0x8D7E, 0x8D7F, 0x8D80, 0x8D82, 0x8D83, 0x8D86, 0x8D87, - 0x8D88, 0x8D89, 0x8D8C, 0x8D8D, 0x8D8E, 0x8D8F, 0x8D90, 0x8D92, - 0x8D93, 0x8D95, 0x8D96, 0x8D97, 0x8D98, 0x8D99, 0x8D9A, 0x8D9B, - 0x8D9C, 0x8D9D, 0x8D9E, 0x8DA0, 0x8DA1, 0x8DA2, 0x8DA4, 0x8DA5, - 0x8DA6, 0x8DA7, 0x8DA8, 0x8DA9, 0x8DAA, 0x8DAB, 0x8DAC, 0x8DAD, - 0x8DAE, 0x8DAF, 0x8DB0, 0x8DB2, 0x8DB6, 0x8DB7, 0x8DB9, 0x8DBB, - 0x8DBD, 0x8DC0, 0x8DC1, 0x8DC2, 0x8DC5, 0x8DC7, 0x8DC8, 0x8DC9, - 0x8DCA, 0x8DCD, 0x8DD0, 0x8DD2, 0x8DD3, 0x8DD4, 0x51C7, 0x5196, - 0x51A2, 0x51A5, 0x8BA0, 0x8BA6, 0x8BA7, 0x8BAA, 0x8BB4, 0x8BB5, - 0x8BB7, 0x8BC2, 0x8BC3, 0x8BCB, 0x8BCF, 0x8BCE, 0x8BD2, 0x8BD3, - 0x8BD4, 0x8BD6, 0x8BD8, 0x8BD9, 0x8BDC, 0x8BDF, 0x8BE0, 0x8BE4, - 0x8BE8, 0x8BE9, 0x8BEE, 0x8BF0, 0x8BF3, 0x8BF6, 0x8BF9, 0x8BFC, - 0x8BFF, 0x8C00, 0x8C02, 0x8C04, 0x8C07, 0x8C0C, 0x8C0F, 0x8C11, - 0x8C12, 0x8C14, 0x8C15, 0x8C16, 0x8C19, 0x8C1B, 0x8C18, 0x8C1D, - 0x8C1F, 0x8C20, 0x8C21, 0x8C25, 0x8C27, 0x8C2A, 0x8C2B, 0x8C2E, - 0x8C2F, 0x8C32, 0x8C33, 0x8C35, 0x8C36, 0x5369, 0x537A, 0x961D, - 0x9622, 0x9621, 0x9631, 0x962A, 0x963D, 0x963C, 0x9642, 0x9649, - 0x9654, 0x965F, 0x9667, 0x966C, 0x9672, 0x9674, 0x9688, 0x968D, - 0x9697, 0x96B0, 0x9097, 0x909B, 0x909D, 0x9099, 0x90AC, 0x90A1, - 0x90B4, 0x90B3, 0x90B6, 0x90BA, 0x8DD5, 0x8DD8, 0x8DD9, 0x8DDC, - 0x8DE0, 0x8DE1, 0x8DE2, 0x8DE5, 0x8DE6, 0x8DE7, 0x8DE9, 0x8DED, - 0x8DEE, 0x8DF0, 0x8DF1, 0x8DF2, 0x8DF4, 0x8DF6, 0x8DFC, 0x8DFE, - 0x8DFF, 0x8E00, 0x8E01, 0x8E02, 0x8E03, 0x8E04, 0x8E06, 0x8E07, - 0x8E08, 0x8E0B, 0x8E0D, 0x8E0E, 0x8E10, 0x8E11, 0x8E12, 0x8E13, - 0x8E15, 0x8E16, 0x8E17, 0x8E18, 0x8E19, 0x8E1A, 0x8E1B, 0x8E1C, - 0x8E20, 0x8E21, 0x8E24, 0x8E25, 0x8E26, 0x8E27, 0x8E28, 0x8E2B, -plane 68 -at 0x00 - 0x8E2D, 0x8E30, 0x8E32, 0x8E33, 0x8E34, 0x8E36, 0x8E37, 0x8E38, - 0x8E3B, 0x8E3C, 0x8E3E, 0x8E3F, 0x8E43, 0x8E45, 0x8E46, 0x8E4C, - 0x8E4D, 0x8E4E, 0x8E4F, 0x8E50, 0x8E53, 0x8E54, 0x8E55, 0x8E56, - 0x8E57, 0x8E58, 0x8E5A, 0x8E5B, 0x8E5C, 0x8E5D, 0x8E5E, 0x8E5F, - 0x8E60, 0x8E61, 0x8E62, 0x8E63, 0x8E64, 0x8E65, 0x8E67, 0x8E68, - 0x8E6A, 0x8E6B, 0x8E6E, 0x8E71, 0x90B8, 0x90B0, 0x90CF, 0x90C5, - 0x90BE, 0x90D0, 0x90C4, 0x90C7, 0x90D3, 0x90E6, 0x90E2, 0x90DC, - 0x90D7, 0x90DB, 0x90EB, 0x90EF, 0x90FE, 0x9104, 0x9122, 0x911E, - 0x9123, 0x9131, 0x912F, 0x9139, 0x9143, 0x9146, 0x520D, 0x5942, - 0x52A2, 0x52AC, 0x52AD, 0x52BE, 0x54FF, 0x52D0, 0x52D6, 0x52F0, - 0x53DF, 0x71EE, 0x77CD, 0x5EF4, 0x51F5, 0x51FC, 0x9B2F, 0x53B6, - 0x5F01, 0x755A, 0x5DEF, 0x574C, 0x57A9, 0x57A1, 0x587E, 0x58BC, - 0x58C5, 0x58D1, 0x5729, 0x572C, 0x572A, 0x5733, 0x5739, 0x572E, - 0x572F, 0x575C, 0x573B, 0x5742, 0x5769, 0x5785, 0x576B, 0x5786, - 0x577C, 0x577B, 0x5768, 0x576D, 0x5776, 0x5773, 0x57AD, 0x57A4, - 0x578C, 0x57B2, 0x57CF, 0x57A7, 0x57B4, 0x5793, 0x57A0, 0x57D5, - 0x57D8, 0x57DA, 0x57D9, 0x57D2, 0x57B8, 0x57F4, 0x57EF, 0x57F8, - 0x57E4, 0x57DD, 0x8E73, 0x8E75, 0x8E77, 0x8E78, 0x8E79, 0x8E7A, - 0x8E7B, 0x8E7D, 0x8E7E, 0x8E80, 0x8E82, 0x8E83, 0x8E84, 0x8E86, - 0x8E88, 0x8E89, 0x8E8A, 0x8E8B, 0x8E8C, 0x8E8D, 0x8E8E, 0x8E91, - 0x8E92, 0x8E93, 0x8E95, 0x8E96, 0x8E97, 0x8E98, 0x8E99, 0x8E9A, - 0x8E9B, 0x8E9D, 0x8E9F, 0x8EA0, 0x8EA1, 0x8EA2, 0x8EA3, 0x8EA4, - 0x8EA5, 0x8EA6, 0x8EA7, 0x8EA8, 0x8EA9, 0x8EAA, 0x8EAD, 0x8EAE, - 0x8EB0, 0x8EB1, 0x8EB3, 0x8EB4, 0x8EB5, 0x8EB6, 0x8EB7, 0x8EB8, - 0x8EB9, 0x8EBB, 0x8EBC, 0x8EBD, 0x8EBE, 0x8EBF, 0x8EC0, 0x8EC1, - 0x8EC2, 0x8EC3, 0x8EC4, 0x8EC5, 0x8EC6, 0x8EC7, 0x8EC8, 0x8EC9, - 0x8ECA, 0x8ECB, 0x8ECC, 0x8ECD, 0x8ECF, 0x8ED0, 0x8ED1, 0x8ED2, - 0x8ED3, 0x8ED4, 0x8ED5, 0x8ED6, 0x8ED7, 0x8ED8, 0x8ED9, 0x8EDA, - 0x8EDB, 0x8EDC, 0x8EDD, 0x8EDE, 0x8EDF, 0x8EE0, 0x8EE1, 0x8EE2, - 0x8EE3, 0x8EE4, 0x580B, 0x580D, 0x57FD, 0x57ED, 0x5800, 0x581E, - 0x5819, 0x5844, 0x5820, 0x5865, 0x586C, 0x5881, 0x5889, 0x589A, - 0x5880, 0x99A8, 0x9F19, 0x61FF, 0x8279, 0x827D, 0x827F, 0x828F, -plane 69 -at 0x00 - 0x828A, 0x82A8, 0x8284, 0x828E, 0x8291, 0x8297, 0x8299, 0x82AB, - 0x82B8, 0x82BE, 0x82B0, 0x82C8, 0x82CA, 0x82E3, 0x8298, 0x82B7, - 0x82AE, 0x82CB, 0x82CC, 0x82C1, 0x82A9, 0x82B4, 0x82A1, 0x82AA, - 0x829F, 0x82C4, 0x82CE, 0x82A4, 0x82E1, 0x8309, 0x82F7, 0x82E4, - 0x830F, 0x8307, 0x82DC, 0x82F4, 0x82D2, 0x82D8, 0x830C, 0x82FB, - 0x82D3, 0x8311, 0x831A, 0x8306, 0x8314, 0x8315, 0x82E0, 0x82D5, - 0x831C, 0x8351, 0x835B, 0x835C, 0x8308, 0x8392, 0x833C, 0x8334, - 0x8331, 0x839B, 0x835E, 0x832F, 0x834F, 0x8347, 0x8343, 0x835F, - 0x8340, 0x8317, 0x8360, 0x832D, 0x833A, 0x8333, 0x8366, 0x8365, - 0x8EE5, 0x8EE6, 0x8EE7, 0x8EE8, 0x8EE9, 0x8EEA, 0x8EEB, 0x8EEC, - 0x8EED, 0x8EEE, 0x8EEF, 0x8EF0, 0x8EF1, 0x8EF2, 0x8EF3, 0x8EF4, - 0x8EF5, 0x8EF6, 0x8EF7, 0x8EF8, 0x8EF9, 0x8EFA, 0x8EFB, 0x8EFC, - 0x8EFD, 0x8EFE, 0x8EFF, 0x8F00, 0x8F01, 0x8F02, 0x8F03, 0x8F04, - 0x8F05, 0x8F06, 0x8F07, 0x8F08, 0x8F09, 0x8F0A, 0x8F0B, 0x8F0C, - 0x8F0D, 0x8F0E, 0x8F0F, 0x8F10, 0x8F11, 0x8F12, 0x8F13, 0x8F14, - 0x8F15, 0x8F16, 0x8F17, 0x8F18, 0x8F19, 0x8F1A, 0x8F1B, 0x8F1C, - 0x8F1D, 0x8F1E, 0x8F1F, 0x8F20, 0x8F21, 0x8F22, 0x8F23, 0x8F24, - 0x8F25, 0x8F26, 0x8F27, 0x8F28, 0x8F29, 0x8F2A, 0x8F2B, 0x8F2C, - 0x8F2D, 0x8F2E, 0x8F2F, 0x8F30, 0x8F31, 0x8F32, 0x8F33, 0x8F34, - 0x8F35, 0x8F36, 0x8F37, 0x8F38, 0x8F39, 0x8F3A, 0x8F3B, 0x8F3C, - 0x8F3D, 0x8F3E, 0x8F3F, 0x8F40, 0x8F41, 0x8F42, 0x8F43, 0x8F44, - 0x8368, 0x831B, 0x8369, 0x836C, 0x836A, 0x836D, 0x836E, 0x83B0, - 0x8378, 0x83B3, 0x83B4, 0x83A0, 0x83AA, 0x8393, 0x839C, 0x8385, - 0x837C, 0x83B6, 0x83A9, 0x837D, 0x83B8, 0x837B, 0x8398, 0x839E, - 0x83A8, 0x83BA, 0x83BC, 0x83C1, 0x8401, 0x83E5, 0x83D8, 0x5807, - 0x8418, 0x840B, 0x83DD, 0x83FD, 0x83D6, 0x841C, 0x8438, 0x8411, - 0x8406, 0x83D4, 0x83DF, 0x840F, 0x8403, 0x83F8, 0x83F9, 0x83EA, - 0x83C5, 0x83C0, 0x8426, 0x83F0, 0x83E1, 0x845C, 0x8451, 0x845A, - 0x8459, 0x8473, 0x8487, 0x8488, 0x847A, 0x8489, 0x8478, 0x843C, - 0x8446, 0x8469, 0x8476, 0x848C, 0x848E, 0x8431, 0x846D, 0x84C1, - 0x84CD, 0x84D0, 0x84E6, 0x84BD, 0x84D3, 0x84CA, 0x84BF, 0x84BA, - 0x84E0, 0x84A1, 0x84B9, 0x84B4, 0x8497, 0x84E5, 0x84E3, 0x850C, -plane 70 -at 0x00 - 0x750D, 0x8538, 0x84F0, 0x8539, 0x851F, 0x853A, 0x8F45, 0x8F46, - 0x8F47, 0x8F48, 0x8F49, 0x8F4A, 0x8F4B, 0x8F4C, 0x8F4D, 0x8F4E, - 0x8F4F, 0x8F50, 0x8F51, 0x8F52, 0x8F53, 0x8F54, 0x8F55, 0x8F56, - 0x8F57, 0x8F58, 0x8F59, 0x8F5A, 0x8F5B, 0x8F5C, 0x8F5D, 0x8F5E, - 0x8F5F, 0x8F60, 0x8F61, 0x8F62, 0x8F63, 0x8F64, 0x8F65, 0x8F6A, - 0x8F80, 0x8F8C, 0x8F92, 0x8F9D, 0x8FA0, 0x8FA1, 0x8FA2, 0x8FA4, - 0x8FA5, 0x8FA6, 0x8FA7, 0x8FAA, 0x8FAC, 0x8FAD, 0x8FAE, 0x8FAF, - 0x8FB2, 0x8FB3, 0x8FB4, 0x8FB5, 0x8FB7, 0x8FB8, 0x8FBA, 0x8FBB, - 0x8FBC, 0x8FBF, 0x8FC0, 0x8FC3, 0x8FC6, 0x8FC9, 0x8FCA, 0x8FCB, - 0x8FCC, 0x8FCD, 0x8FCF, 0x8FD2, 0x8FD6, 0x8FD7, 0x8FDA, 0x8FE0, - 0x8FE1, 0x8FE3, 0x8FE7, 0x8FEC, 0x8FEF, 0x8FF1, 0x8FF2, 0x8FF4, - 0x8FF5, 0x8FF6, 0x8FFA, 0x8FFB, 0x8FFC, 0x8FFE, 0x8FFF, 0x9007, - 0x9008, 0x900C, 0x900E, 0x9013, 0x9015, 0x9018, 0x8556, 0x853B, - 0x84FF, 0x84FC, 0x8559, 0x8548, 0x8568, 0x8564, 0x855E, 0x857A, - 0x77A2, 0x8543, 0x8572, 0x857B, 0x85A4, 0x85A8, 0x8587, 0x858F, - 0x8579, 0x85AE, 0x859C, 0x8585, 0x85B9, 0x85B7, 0x85B0, 0x85D3, - 0x85C1, 0x85DC, 0x85FF, 0x8627, 0x8605, 0x8629, 0x8616, 0x863C, - 0x5EFE, 0x5F08, 0x593C, 0x5941, 0x8037, 0x5955, 0x595A, 0x5958, - 0x530F, 0x5C22, 0x5C25, 0x5C2C, 0x5C34, 0x624C, 0x626A, 0x629F, - 0x62BB, 0x62CA, 0x62DA, 0x62D7, 0x62EE, 0x6322, 0x62F6, 0x6339, - 0x634B, 0x6343, 0x63AD, 0x63F6, 0x6371, 0x637A, 0x638E, 0x63B4, - 0x636D, 0x63AC, 0x638A, 0x6369, 0x63AE, 0x63BC, 0x63F2, 0x63F8, - 0x63E0, 0x63FF, 0x63C4, 0x63DE, 0x63CE, 0x6452, 0x63C6, 0x63BE, - 0x6445, 0x6441, 0x640B, 0x641B, 0x6420, 0x640C, 0x6426, 0x6421, - 0x645E, 0x6484, 0x646D, 0x6496, 0x9019, 0x901C, 0x9023, 0x9024, - 0x9025, 0x9027, 0x9028, 0x9029, 0x902A, 0x902B, 0x902C, 0x9030, - 0x9031, 0x9032, 0x9033, 0x9034, 0x9037, 0x9039, 0x903A, 0x903D, - 0x903F, 0x9040, 0x9043, 0x9045, 0x9046, 0x9048, 0x9049, 0x904A, - 0x904B, 0x904C, 0x904E, 0x9054, 0x9055, 0x9056, 0x9059, 0x905A, - 0x905C, 0x905D, 0x905E, 0x905F, 0x9060, 0x9061, 0x9064, 0x9066, - 0x9067, 0x9069, 0x906A, 0x906B, 0x906C, 0x906F, 0x9070, 0x9071, - 0x9072, 0x9073, 0x9076, 0x9077, 0x9078, 0x9079, 0x907A, 0x907B, -plane 71 -at 0x00 - 0x907C, 0x907E, 0x9081, 0x9084, 0x9085, 0x9086, 0x9087, 0x9089, - 0x908A, 0x908C, 0x908D, 0x908E, 0x908F, 0x9090, 0x9092, 0x9094, - 0x9096, 0x9098, 0x909A, 0x909C, 0x909E, 0x909F, 0x90A0, 0x90A4, - 0x90A5, 0x90A7, 0x90A8, 0x90A9, 0x90AB, 0x90AD, 0x90B2, 0x90B7, - 0x90BC, 0x90BD, 0x90BF, 0x90C0, 0x647A, 0x64B7, 0x64B8, 0x6499, - 0x64BA, 0x64C0, 0x64D0, 0x64D7, 0x64E4, 0x64E2, 0x6509, 0x6525, - 0x652E, 0x5F0B, 0x5FD2, 0x7519, 0x5F11, 0x535F, 0x53F1, 0x53FD, - 0x53E9, 0x53E8, 0x53FB, 0x5412, 0x5416, 0x5406, 0x544B, 0x5452, - 0x5453, 0x5454, 0x5456, 0x5443, 0x5421, 0x5457, 0x5459, 0x5423, - 0x5432, 0x5482, 0x5494, 0x5477, 0x5471, 0x5464, 0x549A, 0x549B, - 0x5484, 0x5476, 0x5466, 0x549D, 0x54D0, 0x54AD, 0x54C2, 0x54B4, - 0x54D2, 0x54A7, 0x54A6, 0x54D3, 0x54D4, 0x5472, 0x54A3, 0x54D5, - 0x54BB, 0x54BF, 0x54CC, 0x54D9, 0x54DA, 0x54DC, 0x54A9, 0x54AA, - 0x54A4, 0x54DD, 0x54CF, 0x54DE, 0x551B, 0x54E7, 0x5520, 0x54FD, - 0x5514, 0x54F3, 0x5522, 0x5523, 0x550F, 0x5511, 0x5527, 0x552A, - 0x5567, 0x558F, 0x55B5, 0x5549, 0x556D, 0x5541, 0x5555, 0x553F, - 0x5550, 0x553C, 0x90C2, 0x90C3, 0x90C6, 0x90C8, 0x90C9, 0x90CB, - 0x90CC, 0x90CD, 0x90D2, 0x90D4, 0x90D5, 0x90D6, 0x90D8, 0x90D9, - 0x90DA, 0x90DE, 0x90DF, 0x90E0, 0x90E3, 0x90E4, 0x90E5, 0x90E9, - 0x90EA, 0x90EC, 0x90EE, 0x90F0, 0x90F1, 0x90F2, 0x90F3, 0x90F5, - 0x90F6, 0x90F7, 0x90F9, 0x90FA, 0x90FB, 0x90FC, 0x90FF, 0x9100, - 0x9101, 0x9103, 0x9105, 0x9106, 0x9107, 0x9108, 0x9109, 0x910A, - 0x910B, 0x910C, 0x910D, 0x910E, 0x910F, 0x9110, 0x9111, 0x9112, - 0x9113, 0x9114, 0x9115, 0x9116, 0x9117, 0x9118, 0x911A, 0x911B, - 0x911C, 0x911D, 0x911F, 0x9120, 0x9121, 0x9124, 0x9125, 0x9126, - 0x9127, 0x9128, 0x9129, 0x912A, 0x912B, 0x912C, 0x912D, 0x912E, - 0x9130, 0x9132, 0x9133, 0x9134, 0x9135, 0x9136, 0x9137, 0x9138, - 0x913A, 0x913B, 0x913C, 0x913D, 0x913E, 0x913F, 0x9140, 0x9141, - 0x9142, 0x9144, 0x5537, 0x5556, 0x5575, 0x5576, 0x5577, 0x5533, - 0x5530, 0x555C, 0x558B, 0x55D2, 0x5583, 0x55B1, 0x55B9, 0x5588, - 0x5581, 0x559F, 0x557E, 0x55D6, 0x5591, 0x557B, 0x55DF, 0x55BD, - 0x55BE, 0x5594, 0x5599, 0x55EA, 0x55F7, 0x55C9, 0x561F, 0x55D1, -plane 72 -at 0x00 - 0x55EB, 0x55EC, 0x55D4, 0x55E6, 0x55DD, 0x55C4, 0x55EF, 0x55E5, - 0x55F2, 0x55F3, 0x55CC, 0x55CD, 0x55E8, 0x55F5, 0x55E4, 0x8F94, - 0x561E, 0x5608, 0x560C, 0x5601, 0x5624, 0x5623, 0x55FE, 0x5600, - 0x5627, 0x562D, 0x5658, 0x5639, 0x5657, 0x562C, 0x564D, 0x5662, - 0x5659, 0x565C, 0x564C, 0x5654, 0x5686, 0x5664, 0x5671, 0x566B, - 0x567B, 0x567C, 0x5685, 0x5693, 0x56AF, 0x56D4, 0x56D7, 0x56DD, - 0x56E1, 0x56F5, 0x56EB, 0x56F9, 0x56FF, 0x5704, 0x570A, 0x5709, - 0x571C, 0x5E0F, 0x5E19, 0x5E14, 0x5E11, 0x5E31, 0x5E3B, 0x5E3C, - 0x9145, 0x9147, 0x9148, 0x9151, 0x9153, 0x9154, 0x9155, 0x9156, - 0x9158, 0x9159, 0x915B, 0x915C, 0x915F, 0x9160, 0x9166, 0x9167, - 0x9168, 0x916B, 0x916D, 0x9173, 0x917A, 0x917B, 0x917C, 0x9180, - 0x9181, 0x9182, 0x9183, 0x9184, 0x9186, 0x9188, 0x918A, 0x918E, - 0x918F, 0x9193, 0x9194, 0x9195, 0x9196, 0x9197, 0x9198, 0x9199, - 0x919C, 0x919D, 0x919E, 0x919F, 0x91A0, 0x91A1, 0x91A4, 0x91A5, - 0x91A6, 0x91A7, 0x91A8, 0x91A9, 0x91AB, 0x91AC, 0x91B0, 0x91B1, - 0x91B2, 0x91B3, 0x91B6, 0x91B7, 0x91B8, 0x91B9, 0x91BB, 0x91BC, - 0x91BD, 0x91BE, 0x91BF, 0x91C0, 0x91C1, 0x91C2, 0x91C3, 0x91C4, - 0x91C5, 0x91C6, 0x91C8, 0x91CB, 0x91D0, 0x91D2, 0x91D3, 0x91D4, - 0x91D5, 0x91D6, 0x91D7, 0x91D8, 0x91D9, 0x91DA, 0x91DB, 0x91DD, - 0x91DE, 0x91DF, 0x91E0, 0x91E1, 0x91E2, 0x91E3, 0x91E4, 0x91E5, - 0x5E37, 0x5E44, 0x5E54, 0x5E5B, 0x5E5E, 0x5E61, 0x5C8C, 0x5C7A, - 0x5C8D, 0x5C90, 0x5C96, 0x5C88, 0x5C98, 0x5C99, 0x5C91, 0x5C9A, - 0x5C9C, 0x5CB5, 0x5CA2, 0x5CBD, 0x5CAC, 0x5CAB, 0x5CB1, 0x5CA3, - 0x5CC1, 0x5CB7, 0x5CC4, 0x5CD2, 0x5CE4, 0x5CCB, 0x5CE5, 0x5D02, - 0x5D03, 0x5D27, 0x5D26, 0x5D2E, 0x5D24, 0x5D1E, 0x5D06, 0x5D1B, - 0x5D58, 0x5D3E, 0x5D34, 0x5D3D, 0x5D6C, 0x5D5B, 0x5D6F, 0x5D5D, - 0x5D6B, 0x5D4B, 0x5D4A, 0x5D69, 0x5D74, 0x5D82, 0x5D99, 0x5D9D, - 0x8C73, 0x5DB7, 0x5DC5, 0x5F73, 0x5F77, 0x5F82, 0x5F87, 0x5F89, - 0x5F8C, 0x5F95, 0x5F99, 0x5F9C, 0x5FA8, 0x5FAD, 0x5FB5, 0x5FBC, - 0x8862, 0x5F61, 0x72AD, 0x72B0, 0x72B4, 0x72B7, 0x72B8, 0x72C3, - 0x72C1, 0x72CE, 0x72CD, 0x72D2, 0x72E8, 0x72EF, 0x72E9, 0x72F2, - 0x72F4, 0x72F7, 0x7301, 0x72F3, 0x7303, 0x72FA, 0x91E6, 0x91E7, -plane 73 -at 0x00 - 0x91E8, 0x91E9, 0x91EA, 0x91EB, 0x91EC, 0x91ED, 0x91EE, 0x91EF, - 0x91F0, 0x91F1, 0x91F2, 0x91F3, 0x91F4, 0x91F5, 0x91F6, 0x91F7, - 0x91F8, 0x91F9, 0x91FA, 0x91FB, 0x91FC, 0x91FD, 0x91FE, 0x91FF, - 0x9200, 0x9201, 0x9202, 0x9203, 0x9204, 0x9205, 0x9206, 0x9207, - 0x9208, 0x9209, 0x920A, 0x920B, 0x920C, 0x920D, 0x920E, 0x920F, - 0x9210, 0x9211, 0x9212, 0x9213, 0x9214, 0x9215, 0x9216, 0x9217, - 0x9218, 0x9219, 0x921A, 0x921B, 0x921C, 0x921D, 0x921E, 0x921F, - 0x9220, 0x9221, 0x9222, 0x9223, 0x9224, 0x9225, 0x9226, 0x9227, - 0x9228, 0x9229, 0x922A, 0x922B, 0x922C, 0x922D, 0x922E, 0x922F, - 0x9230, 0x9231, 0x9232, 0x9233, 0x9234, 0x9235, 0x9236, 0x9237, - 0x9238, 0x9239, 0x923A, 0x923B, 0x923C, 0x923D, 0x923E, 0x923F, - 0x9240, 0x9241, 0x9242, 0x9243, 0x9244, 0x9245, 0x72FB, 0x7317, - 0x7313, 0x7321, 0x730A, 0x731E, 0x731D, 0x7315, 0x7322, 0x7339, - 0x7325, 0x732C, 0x7338, 0x7331, 0x7350, 0x734D, 0x7357, 0x7360, - 0x736C, 0x736F, 0x737E, 0x821B, 0x5925, 0x98E7, 0x5924, 0x5902, - 0x9963, 0x9967, 0x9968, 0x9969, 0x996A, 0x996B, 0x996C, 0x9974, - 0x9977, 0x997D, 0x9980, 0x9984, 0x9987, 0x998A, 0x998D, 0x9990, - 0x9991, 0x9993, 0x9994, 0x9995, 0x5E80, 0x5E91, 0x5E8B, 0x5E96, - 0x5EA5, 0x5EA0, 0x5EB9, 0x5EB5, 0x5EBE, 0x5EB3, 0x8D53, 0x5ED2, - 0x5ED1, 0x5EDB, 0x5EE8, 0x5EEA, 0x81BA, 0x5FC4, 0x5FC9, 0x5FD6, - 0x5FCF, 0x6003, 0x5FEE, 0x6004, 0x5FE1, 0x5FE4, 0x5FFE, 0x6005, - 0x6006, 0x5FEA, 0x5FED, 0x5FF8, 0x6019, 0x6035, 0x6026, 0x601B, - 0x600F, 0x600D, 0x6029, 0x602B, 0x600A, 0x603F, 0x6021, 0x6078, - 0x6079, 0x607B, 0x607A, 0x6042, 0x9246, 0x9247, 0x9248, 0x9249, - 0x924A, 0x924B, 0x924C, 0x924D, 0x924E, 0x924F, 0x9250, 0x9251, - 0x9252, 0x9253, 0x9254, 0x9255, 0x9256, 0x9257, 0x9258, 0x9259, - 0x925A, 0x925B, 0x925C, 0x925D, 0x925E, 0x925F, 0x9260, 0x9261, - 0x9262, 0x9263, 0x9264, 0x9265, 0x9266, 0x9267, 0x9268, 0x9269, - 0x926A, 0x926B, 0x926C, 0x926D, 0x926E, 0x926F, 0x9270, 0x9271, - 0x9272, 0x9273, 0x9275, 0x9276, 0x9277, 0x9278, 0x9279, 0x927A, - 0x927B, 0x927C, 0x927D, 0x927E, 0x927F, 0x9280, 0x9281, 0x9282, - 0x9283, 0x9284, 0x9285, 0x9286, 0x9287, 0x9288, 0x9289, 0x928A, -plane 74 -at 0x00 - 0x928B, 0x928C, 0x928D, 0x928F, 0x9290, 0x9291, 0x9292, 0x9293, - 0x9294, 0x9295, 0x9296, 0x9297, 0x9298, 0x9299, 0x929A, 0x929B, - 0x929C, 0x929D, 0x929E, 0x929F, 0x92A0, 0x92A1, 0x92A2, 0x92A3, - 0x92A4, 0x92A5, 0x92A6, 0x92A7, 0x606A, 0x607D, 0x6096, 0x609A, - 0x60AD, 0x609D, 0x6083, 0x6092, 0x608C, 0x609B, 0x60EC, 0x60BB, - 0x60B1, 0x60DD, 0x60D8, 0x60C6, 0x60DA, 0x60B4, 0x6120, 0x6126, - 0x6115, 0x6123, 0x60F4, 0x6100, 0x610E, 0x612B, 0x614A, 0x6175, - 0x61AC, 0x6194, 0x61A7, 0x61B7, 0x61D4, 0x61F5, 0x5FDD, 0x96B3, - 0x95E9, 0x95EB, 0x95F1, 0x95F3, 0x95F5, 0x95F6, 0x95FC, 0x95FE, - 0x9603, 0x9604, 0x9606, 0x9608, 0x960A, 0x960B, 0x960C, 0x960D, - 0x960F, 0x9612, 0x9615, 0x9616, 0x9617, 0x9619, 0x961A, 0x4E2C, - 0x723F, 0x6215, 0x6C35, 0x6C54, 0x6C5C, 0x6C4A, 0x6CA3, 0x6C85, - 0x6C90, 0x6C94, 0x6C8C, 0x6C68, 0x6C69, 0x6C74, 0x6C76, 0x6C86, - 0x6CA9, 0x6CD0, 0x6CD4, 0x6CAD, 0x6CF7, 0x6CF8, 0x6CF1, 0x6CD7, - 0x6CB2, 0x6CE0, 0x6CD6, 0x6CFA, 0x6CEB, 0x6CEE, 0x6CB1, 0x6CD3, - 0x6CEF, 0x6CFE, 0x92A8, 0x92A9, 0x92AA, 0x92AB, 0x92AC, 0x92AD, - 0x92AF, 0x92B0, 0x92B1, 0x92B2, 0x92B3, 0x92B4, 0x92B5, 0x92B6, - 0x92B7, 0x92B8, 0x92B9, 0x92BA, 0x92BB, 0x92BC, 0x92BD, 0x92BE, - 0x92BF, 0x92C0, 0x92C1, 0x92C2, 0x92C3, 0x92C4, 0x92C5, 0x92C6, - 0x92C7, 0x92C9, 0x92CA, 0x92CB, 0x92CC, 0x92CD, 0x92CE, 0x92CF, - 0x92D0, 0x92D1, 0x92D2, 0x92D3, 0x92D4, 0x92D5, 0x92D6, 0x92D7, - 0x92D8, 0x92D9, 0x92DA, 0x92DB, 0x92DC, 0x92DD, 0x92DE, 0x92DF, - 0x92E0, 0x92E1, 0x92E2, 0x92E3, 0x92E4, 0x92E5, 0x92E6, 0x92E7, - 0x92E8, 0x92E9, 0x92EA, 0x92EB, 0x92EC, 0x92ED, 0x92EE, 0x92EF, - 0x92F0, 0x92F1, 0x92F2, 0x92F3, 0x92F4, 0x92F5, 0x92F6, 0x92F7, - 0x92F8, 0x92F9, 0x92FA, 0x92FB, 0x92FC, 0x92FD, 0x92FE, 0x92FF, - 0x9300, 0x9301, 0x9302, 0x9303, 0x9304, 0x9305, 0x9306, 0x9307, - 0x9308, 0x9309, 0x6D39, 0x6D27, 0x6D0C, 0x6D43, 0x6D48, 0x6D07, - 0x6D04, 0x6D19, 0x6D0E, 0x6D2B, 0x6D4D, 0x6D2E, 0x6D35, 0x6D1A, - 0x6D4F, 0x6D52, 0x6D54, 0x6D33, 0x6D91, 0x6D6F, 0x6D9E, 0x6DA0, - 0x6D5E, 0x6D93, 0x6D94, 0x6D5C, 0x6D60, 0x6D7C, 0x6D63, 0x6E1A, - 0x6DC7, 0x6DC5, 0x6DDE, 0x6E0E, 0x6DBF, 0x6DE0, 0x6E11, 0x6DE6, -plane 75 -at 0x00 - 0x6DDD, 0x6DD9, 0x6E16, 0x6DAB, 0x6E0C, 0x6DAE, 0x6E2B, 0x6E6E, - 0x6E4E, 0x6E6B, 0x6EB2, 0x6E5F, 0x6E86, 0x6E53, 0x6E54, 0x6E32, - 0x6E25, 0x6E44, 0x6EDF, 0x6EB1, 0x6E98, 0x6EE0, 0x6F2D, 0x6EE2, - 0x6EA5, 0x6EA7, 0x6EBD, 0x6EBB, 0x6EB7, 0x6ED7, 0x6EB4, 0x6ECF, - 0x6E8F, 0x6EC2, 0x6E9F, 0x6F62, 0x6F46, 0x6F47, 0x6F24, 0x6F15, - 0x6EF9, 0x6F2F, 0x6F36, 0x6F4B, 0x6F74, 0x6F2A, 0x6F09, 0x6F29, - 0x6F89, 0x6F8D, 0x6F8C, 0x6F78, 0x6F72, 0x6F7C, 0x6F7A, 0x6FD1, - 0x930A, 0x930B, 0x930C, 0x930D, 0x930E, 0x930F, 0x9310, 0x9311, - 0x9312, 0x9313, 0x9314, 0x9315, 0x9316, 0x9317, 0x9318, 0x9319, - 0x931A, 0x931B, 0x931C, 0x931D, 0x931E, 0x931F, 0x9320, 0x9321, - 0x9322, 0x9323, 0x9324, 0x9325, 0x9326, 0x9327, 0x9328, 0x9329, - 0x932A, 0x932B, 0x932C, 0x932D, 0x932E, 0x932F, 0x9330, 0x9331, - 0x9332, 0x9333, 0x9334, 0x9335, 0x9336, 0x9337, 0x9338, 0x9339, - 0x933A, 0x933B, 0x933C, 0x933D, 0x933F, 0x9340, 0x9341, 0x9342, - 0x9343, 0x9344, 0x9345, 0x9346, 0x9347, 0x9348, 0x9349, 0x934A, - 0x934B, 0x934C, 0x934D, 0x934E, 0x934F, 0x9350, 0x9351, 0x9352, - 0x9353, 0x9354, 0x9355, 0x9356, 0x9357, 0x9358, 0x9359, 0x935A, - 0x935B, 0x935C, 0x935D, 0x935E, 0x935F, 0x9360, 0x9361, 0x9362, - 0x9363, 0x9364, 0x9365, 0x9366, 0x9367, 0x9368, 0x9369, 0x936B, - 0x6FC9, 0x6FA7, 0x6FB9, 0x6FB6, 0x6FC2, 0x6FE1, 0x6FEE, 0x6FDE, - 0x6FE0, 0x6FEF, 0x701A, 0x7023, 0x701B, 0x7039, 0x7035, 0x704F, - 0x705E, 0x5B80, 0x5B84, 0x5B95, 0x5B93, 0x5BA5, 0x5BB8, 0x752F, - 0x9A9E, 0x6434, 0x5BE4, 0x5BEE, 0x8930, 0x5BF0, 0x8E47, 0x8B07, - 0x8FB6, 0x8FD3, 0x8FD5, 0x8FE5, 0x8FEE, 0x8FE4, 0x8FE9, 0x8FE6, - 0x8FF3, 0x8FE8, 0x9005, 0x9004, 0x900B, 0x9026, 0x9011, 0x900D, - 0x9016, 0x9021, 0x9035, 0x9036, 0x902D, 0x902F, 0x9044, 0x9051, - 0x9052, 0x9050, 0x9068, 0x9058, 0x9062, 0x905B, 0x66B9, 0x9074, - 0x907D, 0x9082, 0x9088, 0x9083, 0x908B, 0x5F50, 0x5F57, 0x5F56, - 0x5F58, 0x5C3B, 0x54AB, 0x5C50, 0x5C59, 0x5B71, 0x5C63, 0x5C66, - 0x7FBC, 0x5F2A, 0x5F29, 0x5F2D, 0x8274, 0x5F3C, 0x9B3B, 0x5C6E, - 0x5981, 0x5983, 0x598D, 0x59A9, 0x59AA, 0x59A3, 0x936C, 0x936D, - 0x936E, 0x936F, 0x9370, 0x9371, 0x9372, 0x9373, 0x9374, 0x9375, -plane 76 -at 0x00 - 0x9376, 0x9377, 0x9378, 0x9379, 0x937A, 0x937B, 0x937C, 0x937D, - 0x937E, 0x937F, 0x9380, 0x9381, 0x9382, 0x9383, 0x9384, 0x9385, - 0x9386, 0x9387, 0x9388, 0x9389, 0x938A, 0x938B, 0x938C, 0x938D, - 0x938E, 0x9390, 0x9391, 0x9392, 0x9393, 0x9394, 0x9395, 0x9396, - 0x9397, 0x9398, 0x9399, 0x939A, 0x939B, 0x939C, 0x939D, 0x939E, - 0x939F, 0x93A0, 0x93A1, 0x93A2, 0x93A3, 0x93A4, 0x93A5, 0x93A6, - 0x93A7, 0x93A8, 0x93A9, 0x93AA, 0x93AB, 0x93AC, 0x93AD, 0x93AE, - 0x93AF, 0x93B0, 0x93B1, 0x93B2, 0x93B3, 0x93B4, 0x93B5, 0x93B6, - 0x93B7, 0x93B8, 0x93B9, 0x93BA, 0x93BB, 0x93BC, 0x93BD, 0x93BE, - 0x93BF, 0x93C0, 0x93C1, 0x93C2, 0x93C3, 0x93C4, 0x93C5, 0x93C6, - 0x93C7, 0x93C8, 0x93C9, 0x93CB, 0x93CC, 0x93CD, 0x5997, 0x59CA, - 0x59AB, 0x599E, 0x59A4, 0x59D2, 0x59B2, 0x59AF, 0x59D7, 0x59BE, - 0x5A05, 0x5A06, 0x59DD, 0x5A08, 0x59E3, 0x59D8, 0x59F9, 0x5A0C, - 0x5A09, 0x5A32, 0x5A34, 0x5A11, 0x5A23, 0x5A13, 0x5A40, 0x5A67, - 0x5A4A, 0x5A55, 0x5A3C, 0x5A62, 0x5A75, 0x80EC, 0x5AAA, 0x5A9B, - 0x5A77, 0x5A7A, 0x5ABE, 0x5AEB, 0x5AB2, 0x5AD2, 0x5AD4, 0x5AB8, - 0x5AE0, 0x5AE3, 0x5AF1, 0x5AD6, 0x5AE6, 0x5AD8, 0x5ADC, 0x5B09, - 0x5B17, 0x5B16, 0x5B32, 0x5B37, 0x5B40, 0x5C15, 0x5C1C, 0x5B5A, - 0x5B65, 0x5B73, 0x5B51, 0x5B53, 0x5B62, 0x9A75, 0x9A77, 0x9A78, - 0x9A7A, 0x9A7F, 0x9A7D, 0x9A80, 0x9A81, 0x9A85, 0x9A88, 0x9A8A, - 0x9A90, 0x9A92, 0x9A93, 0x9A96, 0x9A98, 0x9A9B, 0x9A9C, 0x9A9D, - 0x9A9F, 0x9AA0, 0x9AA2, 0x9AA3, 0x9AA5, 0x9AA7, 0x7E9F, 0x7EA1, - 0x7EA3, 0x7EA5, 0x7EA8, 0x7EA9, 0x93CE, 0x93CF, 0x93D0, 0x93D1, - 0x93D2, 0x93D3, 0x93D4, 0x93D5, 0x93D7, 0x93D8, 0x93D9, 0x93DA, - 0x93DB, 0x93DC, 0x93DD, 0x93DE, 0x93DF, 0x93E0, 0x93E1, 0x93E2, - 0x93E3, 0x93E4, 0x93E5, 0x93E6, 0x93E7, 0x93E8, 0x93E9, 0x93EA, - 0x93EB, 0x93EC, 0x93ED, 0x93EE, 0x93EF, 0x93F0, 0x93F1, 0x93F2, - 0x93F3, 0x93F4, 0x93F5, 0x93F6, 0x93F7, 0x93F8, 0x93F9, 0x93FA, - 0x93FB, 0x93FC, 0x93FD, 0x93FE, 0x93FF, 0x9400, 0x9401, 0x9402, - 0x9403, 0x9404, 0x9405, 0x9406, 0x9407, 0x9408, 0x9409, 0x940A, - 0x940B, 0x940C, 0x940D, 0x940E, 0x940F, 0x9410, 0x9411, 0x9412, - 0x9413, 0x9414, 0x9415, 0x9416, 0x9417, 0x9418, 0x9419, 0x941A, -plane 77 -at 0x00 - 0x941B, 0x941C, 0x941D, 0x941E, 0x941F, 0x9420, 0x9421, 0x9422, - 0x9423, 0x9424, 0x9425, 0x9426, 0x9427, 0x9428, 0x9429, 0x942A, - 0x942B, 0x942C, 0x942D, 0x942E, 0x7EAD, 0x7EB0, 0x7EBE, 0x7EC0, - 0x7EC1, 0x7EC2, 0x7EC9, 0x7ECB, 0x7ECC, 0x7ED0, 0x7ED4, 0x7ED7, - 0x7EDB, 0x7EE0, 0x7EE1, 0x7EE8, 0x7EEB, 0x7EEE, 0x7EEF, 0x7EF1, - 0x7EF2, 0x7F0D, 0x7EF6, 0x7EFA, 0x7EFB, 0x7EFE, 0x7F01, 0x7F02, - 0x7F03, 0x7F07, 0x7F08, 0x7F0B, 0x7F0C, 0x7F0F, 0x7F11, 0x7F12, - 0x7F17, 0x7F19, 0x7F1C, 0x7F1B, 0x7F1F, 0x7F21, 0x7F22, 0x7F23, - 0x7F24, 0x7F25, 0x7F26, 0x7F27, 0x7F2A, 0x7F2B, 0x7F2C, 0x7F2D, - 0x7F2F, 0x7F30, 0x7F31, 0x7F32, 0x7F33, 0x7F35, 0x5E7A, 0x757F, - 0x5DDB, 0x753E, 0x9095, 0x738E, 0x7391, 0x73AE, 0x73A2, 0x739F, - 0x73CF, 0x73C2, 0x73D1, 0x73B7, 0x73B3, 0x73C0, 0x73C9, 0x73C8, - 0x73E5, 0x73D9, 0x987C, 0x740A, 0x73E9, 0x73E7, 0x73DE, 0x73BA, - 0x73F2, 0x740F, 0x742A, 0x745B, 0x7426, 0x7425, 0x7428, 0x7430, - 0x742E, 0x742C, 0x942F, 0x9430, 0x9431, 0x9432, 0x9433, 0x9434, - 0x9435, 0x9436, 0x9437, 0x9438, 0x9439, 0x943A, 0x943B, 0x943C, - 0x943D, 0x943F, 0x9440, 0x9441, 0x9442, 0x9443, 0x9444, 0x9445, - 0x9446, 0x9447, 0x9448, 0x9449, 0x944A, 0x944B, 0x944C, 0x944D, - 0x944E, 0x944F, 0x9450, 0x9451, 0x9452, 0x9453, 0x9454, 0x9455, - 0x9456, 0x9457, 0x9458, 0x9459, 0x945A, 0x945B, 0x945C, 0x945D, - 0x945E, 0x945F, 0x9460, 0x9461, 0x9462, 0x9463, 0x9464, 0x9465, - 0x9466, 0x9467, 0x9468, 0x9469, 0x946A, 0x946C, 0x946D, 0x946E, - 0x946F, 0x9470, 0x9471, 0x9472, 0x9473, 0x9474, 0x9475, 0x9476, - 0x9477, 0x9478, 0x9479, 0x947A, 0x947B, 0x947C, 0x947D, 0x947E, - 0x947F, 0x9480, 0x9481, 0x9482, 0x9483, 0x9484, 0x9491, 0x9496, - 0x9498, 0x94C7, 0x94CF, 0x94D3, 0x94D4, 0x94DA, 0x94E6, 0x94FB, - 0x951C, 0x9520, 0x741B, 0x741A, 0x7441, 0x745C, 0x7457, 0x7455, - 0x7459, 0x7477, 0x746D, 0x747E, 0x749C, 0x748E, 0x7480, 0x7481, - 0x7487, 0x748B, 0x749E, 0x74A8, 0x74A9, 0x7490, 0x74A7, 0x74D2, - 0x74BA, 0x97EA, 0x97EB, 0x97EC, 0x674C, 0x6753, 0x675E, 0x6748, - 0x6769, 0x67A5, 0x6787, 0x676A, 0x6773, 0x6798, 0x67A7, 0x6775, - 0x67A8, 0x679E, 0x67AD, 0x678B, 0x6777, 0x677C, 0x67F0, 0x6809, -plane 78 -at 0x00 - 0x67D8, 0x680A, 0x67E9, 0x67B0, 0x680C, 0x67D9, 0x67B5, 0x67DA, - 0x67B3, 0x67DD, 0x6800, 0x67C3, 0x67B8, 0x67E2, 0x680E, 0x67C1, - 0x67FD, 0x6832, 0x6833, 0x6860, 0x6861, 0x684E, 0x6862, 0x6844, - 0x6864, 0x6883, 0x681D, 0x6855, 0x6866, 0x6841, 0x6867, 0x6840, - 0x683E, 0x684A, 0x6849, 0x6829, 0x68B5, 0x688F, 0x6874, 0x6877, - 0x6893, 0x686B, 0x68C2, 0x696E, 0x68FC, 0x691F, 0x6920, 0x68F9, - 0x9527, 0x9533, 0x953D, 0x9543, 0x9548, 0x954B, 0x9555, 0x955A, - 0x9560, 0x956E, 0x9574, 0x9575, 0x9577, 0x9578, 0x9579, 0x957A, - 0x957B, 0x957C, 0x957D, 0x957E, 0x9580, 0x9581, 0x9582, 0x9583, - 0x9584, 0x9585, 0x9586, 0x9587, 0x9588, 0x9589, 0x958A, 0x958B, - 0x958C, 0x958D, 0x958E, 0x958F, 0x9590, 0x9591, 0x9592, 0x9593, - 0x9594, 0x9595, 0x9596, 0x9597, 0x9598, 0x9599, 0x959A, 0x959B, - 0x959C, 0x959D, 0x959E, 0x959F, 0x95A0, 0x95A1, 0x95A2, 0x95A3, - 0x95A4, 0x95A5, 0x95A6, 0x95A7, 0x95A8, 0x95A9, 0x95AA, 0x95AB, - 0x95AC, 0x95AD, 0x95AE, 0x95AF, 0x95B0, 0x95B1, 0x95B2, 0x95B3, - 0x95B4, 0x95B5, 0x95B6, 0x95B7, 0x95B8, 0x95B9, 0x95BA, 0x95BB, - 0x95BC, 0x95BD, 0x95BE, 0x95BF, 0x95C0, 0x95C1, 0x95C2, 0x95C3, - 0x95C4, 0x95C5, 0x95C6, 0x95C7, 0x95C8, 0x95C9, 0x95CA, 0x95CB, - 0x6924, 0x68F0, 0x690B, 0x6901, 0x6957, 0x68E3, 0x6910, 0x6971, - 0x6939, 0x6960, 0x6942, 0x695D, 0x6984, 0x696B, 0x6980, 0x6998, - 0x6978, 0x6934, 0x69CC, 0x6987, 0x6988, 0x69CE, 0x6989, 0x6966, - 0x6963, 0x6979, 0x699B, 0x69A7, 0x69BB, 0x69AB, 0x69AD, 0x69D4, - 0x69B1, 0x69C1, 0x69CA, 0x69DF, 0x6995, 0x69E0, 0x698D, 0x69FF, - 0x6A2F, 0x69ED, 0x6A17, 0x6A18, 0x6A65, 0x69F2, 0x6A44, 0x6A3E, - 0x6AA0, 0x6A50, 0x6A5B, 0x6A35, 0x6A8E, 0x6A79, 0x6A3D, 0x6A28, - 0x6A58, 0x6A7C, 0x6A91, 0x6A90, 0x6AA9, 0x6A97, 0x6AAB, 0x7337, - 0x7352, 0x6B81, 0x6B82, 0x6B87, 0x6B84, 0x6B92, 0x6B93, 0x6B8D, - 0x6B9A, 0x6B9B, 0x6BA1, 0x6BAA, 0x8F6B, 0x8F6D, 0x8F71, 0x8F72, - 0x8F73, 0x8F75, 0x8F76, 0x8F78, 0x8F77, 0x8F79, 0x8F7A, 0x8F7C, - 0x8F7E, 0x8F81, 0x8F82, 0x8F84, 0x8F87, 0x8F8B, 0x95CC, 0x95CD, - 0x95CE, 0x95CF, 0x95D0, 0x95D1, 0x95D2, 0x95D3, 0x95D4, 0x95D5, - 0x95D6, 0x95D7, 0x95D8, 0x95D9, 0x95DA, 0x95DB, 0x95DC, 0x95DD, -plane 79 -at 0x00 - 0x95DE, 0x95DF, 0x95E0, 0x95E1, 0x95E2, 0x95E3, 0x95E4, 0x95E5, - 0x95E6, 0x95E7, 0x95EC, 0x95FF, 0x9607, 0x9613, 0x9618, 0x961B, - 0x961E, 0x9620, 0x9623, 0x9624, 0x9625, 0x9626, 0x9627, 0x9628, - 0x9629, 0x962B, 0x962C, 0x962D, 0x962F, 0x9630, 0x9637, 0x9638, - 0x9639, 0x963A, 0x963E, 0x9641, 0x9643, 0x964A, 0x964E, 0x964F, - 0x9651, 0x9652, 0x9653, 0x9656, 0x9657, 0x9658, 0x9659, 0x965A, - 0x965C, 0x965D, 0x965E, 0x9660, 0x9663, 0x9665, 0x9666, 0x966B, - 0x966D, 0x966E, 0x966F, 0x9670, 0x9671, 0x9673, 0x9678, 0x9679, - 0x967A, 0x967B, 0x967C, 0x967D, 0x967E, 0x967F, 0x9680, 0x9681, - 0x9682, 0x9683, 0x9684, 0x9687, 0x9689, 0x968A, 0x8F8D, 0x8F8E, - 0x8F8F, 0x8F98, 0x8F9A, 0x8ECE, 0x620B, 0x6217, 0x621B, 0x621F, - 0x6222, 0x6221, 0x6225, 0x6224, 0x622C, 0x81E7, 0x74EF, 0x74F4, - 0x74FF, 0x750F, 0x7511, 0x7513, 0x6534, 0x65EE, 0x65EF, 0x65F0, - 0x660A, 0x6619, 0x6772, 0x6603, 0x6615, 0x6600, 0x7085, 0x66F7, - 0x661D, 0x6634, 0x6631, 0x6636, 0x6635, 0x8006, 0x665F, 0x6654, - 0x6641, 0x664F, 0x6656, 0x6661, 0x6657, 0x6677, 0x6684, 0x668C, - 0x66A7, 0x669D, 0x66BE, 0x66DB, 0x66DC, 0x66E6, 0x66E9, 0x8D32, - 0x8D33, 0x8D36, 0x8D3B, 0x8D3D, 0x8D40, 0x8D45, 0x8D46, 0x8D48, - 0x8D49, 0x8D47, 0x8D4D, 0x8D55, 0x8D59, 0x89C7, 0x89CA, 0x89CB, - 0x89CC, 0x89CE, 0x89CF, 0x89D0, 0x89D1, 0x726E, 0x729F, 0x725D, - 0x7266, 0x726F, 0x727E, 0x727F, 0x7284, 0x728B, 0x728D, 0x728F, - 0x7292, 0x6308, 0x6332, 0x63B0, 0x968C, 0x968E, 0x9691, 0x9692, - 0x9693, 0x9695, 0x9696, 0x969A, 0x969B, 0x969D, 0x969E, 0x969F, - 0x96A0, 0x96A1, 0x96A2, 0x96A3, 0x96A4, 0x96A5, 0x96A6, 0x96A8, - 0x96A9, 0x96AA, 0x96AB, 0x96AC, 0x96AD, 0x96AE, 0x96AF, 0x96B1, - 0x96B2, 0x96B4, 0x96B5, 0x96B7, 0x96B8, 0x96BA, 0x96BB, 0x96BF, - 0x96C2, 0x96C3, 0x96C8, 0x96CA, 0x96CB, 0x96D0, 0x96D1, 0x96D3, - 0x96D4, 0x96D6, 0x96D7, 0x96D8, 0x96D9, 0x96DA, 0x96DB, 0x96DC, - 0x96DD, 0x96DE, 0x96DF, 0x96E1, 0x96E2, 0x96E3, 0x96E4, 0x96E5, - 0x96E6, 0x96E7, 0x96EB, 0x96EC, 0x96ED, 0x96EE, 0x96F0, 0x96F1, - 0x96F2, 0x96F4, 0x96F5, 0x96F8, 0x96FA, 0x96FB, 0x96FC, 0x96FD, - 0x96FF, 0x9702, 0x9703, 0x9705, 0x970A, 0x970B, 0x970C, 0x9710, -plane 80 -at 0x00 - 0x9711, 0x9712, 0x9714, 0x9715, 0x9717, 0x9718, 0x9719, 0x971A, - 0x971B, 0x971D, 0x971F, 0x9720, 0x643F, 0x64D8, 0x8004, 0x6BEA, - 0x6BF3, 0x6BFD, 0x6BF5, 0x6BF9, 0x6C05, 0x6C07, 0x6C06, 0x6C0D, - 0x6C15, 0x6C18, 0x6C19, 0x6C1A, 0x6C21, 0x6C29, 0x6C24, 0x6C2A, - 0x6C32, 0x6535, 0x6555, 0x656B, 0x724D, 0x7252, 0x7256, 0x7230, - 0x8662, 0x5216, 0x809F, 0x809C, 0x8093, 0x80BC, 0x670A, 0x80BD, - 0x80B1, 0x80AB, 0x80AD, 0x80B4, 0x80B7, 0x80E7, 0x80E8, 0x80E9, - 0x80EA, 0x80DB, 0x80C2, 0x80C4, 0x80D9, 0x80CD, 0x80D7, 0x6710, - 0x80DD, 0x80EB, 0x80F1, 0x80F4, 0x80ED, 0x810D, 0x810E, 0x80F2, - 0x80FC, 0x6715, 0x8112, 0x8C5A, 0x8136, 0x811E, 0x812C, 0x8118, - 0x8132, 0x8148, 0x814C, 0x8153, 0x8174, 0x8159, 0x815A, 0x8171, - 0x8160, 0x8169, 0x817C, 0x817D, 0x816D, 0x8167, 0x584D, 0x5AB5, - 0x8188, 0x8182, 0x8191, 0x6ED5, 0x81A3, 0x81AA, 0x81CC, 0x6726, - 0x81CA, 0x81BB, 0x9721, 0x9722, 0x9723, 0x9724, 0x9725, 0x9726, - 0x9727, 0x9728, 0x9729, 0x972B, 0x972C, 0x972E, 0x972F, 0x9731, - 0x9733, 0x9734, 0x9735, 0x9736, 0x9737, 0x973A, 0x973B, 0x973C, - 0x973D, 0x973F, 0x9740, 0x9741, 0x9742, 0x9743, 0x9744, 0x9745, - 0x9746, 0x9747, 0x9748, 0x9749, 0x974A, 0x974B, 0x974C, 0x974D, - 0x974E, 0x974F, 0x9750, 0x9751, 0x9754, 0x9755, 0x9757, 0x9758, - 0x975A, 0x975C, 0x975D, 0x975F, 0x9763, 0x9764, 0x9766, 0x9767, - 0x9768, 0x976A, 0x976B, 0x976C, 0x976D, 0x976E, 0x976F, 0x9770, - 0x9771, 0x9772, 0x9775, 0x9777, 0x9778, 0x9779, 0x977A, 0x977B, - 0x977D, 0x977E, 0x977F, 0x9780, 0x9781, 0x9782, 0x9783, 0x9784, - 0x9786, 0x9787, 0x9788, 0x9789, 0x978A, 0x978C, 0x978E, 0x978F, - 0x9790, 0x9793, 0x9795, 0x9796, 0x9797, 0x9799, 0x979A, 0x979B, - 0x979C, 0x979D, 0x81C1, 0x81A6, 0x6B24, 0x6B37, 0x6B39, 0x6B43, - 0x6B46, 0x6B59, 0x98D1, 0x98D2, 0x98D3, 0x98D5, 0x98D9, 0x98DA, - 0x6BB3, 0x5F40, 0x6BC2, 0x89F3, 0x6590, 0x9F51, 0x6593, 0x65BC, - 0x65C6, 0x65C4, 0x65C3, 0x65CC, 0x65CE, 0x65D2, 0x65D6, 0x7080, - 0x709C, 0x7096, 0x709D, 0x70BB, 0x70C0, 0x70B7, 0x70AB, 0x70B1, - 0x70E8, 0x70CA, 0x7110, 0x7113, 0x7116, 0x712F, 0x7131, 0x7173, - 0x715C, 0x7168, 0x7145, 0x7172, 0x714A, 0x7178, 0x717A, 0x7198, -plane 81 -at 0x00 - 0x71B3, 0x71B5, 0x71A8, 0x71A0, 0x71E0, 0x71D4, 0x71E7, 0x71F9, - 0x721D, 0x7228, 0x706C, 0x7118, 0x7166, 0x71B9, 0x623E, 0x623D, - 0x6243, 0x6248, 0x6249, 0x793B, 0x7940, 0x7946, 0x7949, 0x795B, - 0x795C, 0x7953, 0x795A, 0x7962, 0x7957, 0x7960, 0x796F, 0x7967, - 0x797A, 0x7985, 0x798A, 0x799A, 0x79A7, 0x79B3, 0x5FD1, 0x5FD0, - 0x979E, 0x979F, 0x97A1, 0x97A2, 0x97A4, 0x97A5, 0x97A6, 0x97A7, - 0x97A8, 0x97A9, 0x97AA, 0x97AC, 0x97AE, 0x97B0, 0x97B1, 0x97B3, - 0x97B5, 0x97B6, 0x97B7, 0x97B8, 0x97B9, 0x97BA, 0x97BB, 0x97BC, - 0x97BD, 0x97BE, 0x97BF, 0x97C0, 0x97C1, 0x97C2, 0x97C3, 0x97C4, - 0x97C5, 0x97C6, 0x97C7, 0x97C8, 0x97C9, 0x97CA, 0x97CB, 0x97CC, - 0x97CD, 0x97CE, 0x97CF, 0x97D0, 0x97D1, 0x97D2, 0x97D3, 0x97D4, - 0x97D5, 0x97D6, 0x97D7, 0x97D8, 0x97D9, 0x97DA, 0x97DB, 0x97DC, - 0x97DD, 0x97DE, 0x97DF, 0x97E0, 0x97E1, 0x97E2, 0x97E3, 0x97E4, - 0x97E5, 0x97E8, 0x97EE, 0x97EF, 0x97F0, 0x97F1, 0x97F2, 0x97F4, - 0x97F7, 0x97F8, 0x97F9, 0x97FA, 0x97FB, 0x97FC, 0x97FD, 0x97FE, - 0x97FF, 0x9800, 0x9801, 0x9802, 0x9803, 0x9804, 0x9805, 0x9806, - 0x9807, 0x9808, 0x9809, 0x980A, 0x980B, 0x980C, 0x980D, 0x980E, - 0x603C, 0x605D, 0x605A, 0x6067, 0x6041, 0x6059, 0x6063, 0x60AB, - 0x6106, 0x610D, 0x615D, 0x61A9, 0x619D, 0x61CB, 0x61D1, 0x6206, - 0x8080, 0x807F, 0x6C93, 0x6CF6, 0x6DFC, 0x77F6, 0x77F8, 0x7800, - 0x7809, 0x7817, 0x7818, 0x7811, 0x65AB, 0x782D, 0x781C, 0x781D, - 0x7839, 0x783A, 0x783B, 0x781F, 0x783C, 0x7825, 0x782C, 0x7823, - 0x7829, 0x784E, 0x786D, 0x7856, 0x7857, 0x7826, 0x7850, 0x7847, - 0x784C, 0x786A, 0x789B, 0x7893, 0x789A, 0x7887, 0x789C, 0x78A1, - 0x78A3, 0x78B2, 0x78B9, 0x78A5, 0x78D4, 0x78D9, 0x78C9, 0x78EC, - 0x78F2, 0x7905, 0x78F4, 0x7913, 0x7924, 0x791E, 0x7934, 0x9F9B, - 0x9EF9, 0x9EFB, 0x9EFC, 0x76F1, 0x7704, 0x770D, 0x76F9, 0x7707, - 0x7708, 0x771A, 0x7722, 0x7719, 0x772D, 0x7726, 0x7735, 0x7738, - 0x7750, 0x7751, 0x7747, 0x7743, 0x775A, 0x7768, 0x980F, 0x9810, - 0x9811, 0x9812, 0x9813, 0x9814, 0x9815, 0x9816, 0x9817, 0x9818, - 0x9819, 0x981A, 0x981B, 0x981C, 0x981D, 0x981E, 0x981F, 0x9820, - 0x9821, 0x9822, 0x9823, 0x9824, 0x9825, 0x9826, 0x9827, 0x9828, -plane 82 -at 0x00 - 0x9829, 0x982A, 0x982B, 0x982C, 0x982D, 0x982E, 0x982F, 0x9830, - 0x9831, 0x9832, 0x9833, 0x9834, 0x9835, 0x9836, 0x9837, 0x9838, - 0x9839, 0x983A, 0x983B, 0x983C, 0x983D, 0x983E, 0x983F, 0x9840, - 0x9841, 0x9842, 0x9843, 0x9844, 0x9845, 0x9846, 0x9847, 0x9848, - 0x9849, 0x984A, 0x984B, 0x984C, 0x984D, 0x984E, 0x984F, 0x9850, - 0x9851, 0x9852, 0x9853, 0x9854, 0x9855, 0x9856, 0x9857, 0x9858, - 0x9859, 0x985A, 0x985B, 0x985C, 0x985D, 0x985E, 0x985F, 0x9860, - 0x9861, 0x9862, 0x9863, 0x9864, 0x9865, 0x9866, 0x9867, 0x9868, - 0x9869, 0x986A, 0x986B, 0x986C, 0x986D, 0x986E, 0x7762, 0x7765, - 0x777F, 0x778D, 0x777D, 0x7780, 0x778C, 0x7791, 0x779F, 0x77A0, - 0x77B0, 0x77B5, 0x77BD, 0x753A, 0x7540, 0x754E, 0x754B, 0x7548, - 0x755B, 0x7572, 0x7579, 0x7583, 0x7F58, 0x7F61, 0x7F5F, 0x8A48, - 0x7F68, 0x7F74, 0x7F71, 0x7F79, 0x7F81, 0x7F7E, 0x76CD, 0x76E5, - 0x8832, 0x9485, 0x9486, 0x9487, 0x948B, 0x948A, 0x948C, 0x948D, - 0x948F, 0x9490, 0x9494, 0x9497, 0x9495, 0x949A, 0x949B, 0x949C, - 0x94A3, 0x94A4, 0x94AB, 0x94AA, 0x94AD, 0x94AC, 0x94AF, 0x94B0, - 0x94B2, 0x94B4, 0x94B6, 0x94B7, 0x94B8, 0x94B9, 0x94BA, 0x94BC, - 0x94BD, 0x94BF, 0x94C4, 0x94C8, 0x94C9, 0x94CA, 0x94CB, 0x94CC, - 0x94CD, 0x94CE, 0x94D0, 0x94D1, 0x94D2, 0x94D5, 0x94D6, 0x94D7, - 0x94D9, 0x94D8, 0x94DB, 0x94DE, 0x94DF, 0x94E0, 0x94E2, 0x94E4, - 0x94E5, 0x94E7, 0x94E8, 0x94EA, 0x986F, 0x9870, 0x9871, 0x9872, - 0x9873, 0x9874, 0x988B, 0x988E, 0x9892, 0x9895, 0x9899, 0x98A3, - 0x98A8, 0x98A9, 0x98AA, 0x98AB, 0x98AC, 0x98AD, 0x98AE, 0x98AF, - 0x98B0, 0x98B1, 0x98B2, 0x98B3, 0x98B4, 0x98B5, 0x98B6, 0x98B7, - 0x98B8, 0x98B9, 0x98BA, 0x98BB, 0x98BC, 0x98BD, 0x98BE, 0x98BF, - 0x98C0, 0x98C1, 0x98C2, 0x98C3, 0x98C4, 0x98C5, 0x98C6, 0x98C7, - 0x98C8, 0x98C9, 0x98CA, 0x98CB, 0x98CC, 0x98CD, 0x98CF, 0x98D0, - 0x98D4, 0x98D6, 0x98D7, 0x98DB, 0x98DC, 0x98DD, 0x98E0, 0x98E1, - 0x98E2, 0x98E3, 0x98E4, 0x98E5, 0x98E6, 0x98E9, 0x98EA, 0x98EB, - 0x98EC, 0x98ED, 0x98EE, 0x98EF, 0x98F0, 0x98F1, 0x98F2, 0x98F3, - 0x98F4, 0x98F5, 0x98F6, 0x98F7, 0x98F8, 0x98F9, 0x98FA, 0x98FB, - 0x98FC, 0x98FD, 0x98FE, 0x98FF, 0x9900, 0x9901, 0x9902, 0x9903, -plane 83 -at 0x00 - 0x9904, 0x9905, 0x9906, 0x9907, 0x94E9, 0x94EB, 0x94EE, 0x94EF, - 0x94F3, 0x94F4, 0x94F5, 0x94F7, 0x94F9, 0x94FC, 0x94FD, 0x94FF, - 0x9503, 0x9502, 0x9506, 0x9507, 0x9509, 0x950A, 0x950D, 0x950E, - 0x950F, 0x9512, 0x9513, 0x9514, 0x9515, 0x9516, 0x9518, 0x951B, - 0x951D, 0x951E, 0x951F, 0x9522, 0x952A, 0x952B, 0x9529, 0x952C, - 0x9531, 0x9532, 0x9534, 0x9536, 0x9537, 0x9538, 0x953C, 0x953E, - 0x953F, 0x9542, 0x9535, 0x9544, 0x9545, 0x9546, 0x9549, 0x954C, - 0x954E, 0x954F, 0x9552, 0x9553, 0x9554, 0x9556, 0x9557, 0x9558, - 0x9559, 0x955B, 0x955E, 0x955F, 0x955D, 0x9561, 0x9562, 0x9564, - 0x9565, 0x9566, 0x9567, 0x9568, 0x9569, 0x956A, 0x956B, 0x956C, - 0x956F, 0x9571, 0x9572, 0x9573, 0x953A, 0x77E7, 0x77EC, 0x96C9, - 0x79D5, 0x79ED, 0x79E3, 0x79EB, 0x7A06, 0x5D47, 0x7A03, 0x7A02, - 0x7A1E, 0x7A14, 0x9908, 0x9909, 0x990A, 0x990B, 0x990C, 0x990E, - 0x990F, 0x9911, 0x9912, 0x9913, 0x9914, 0x9915, 0x9916, 0x9917, - 0x9918, 0x9919, 0x991A, 0x991B, 0x991C, 0x991D, 0x991E, 0x991F, - 0x9920, 0x9921, 0x9922, 0x9923, 0x9924, 0x9925, 0x9926, 0x9927, - 0x9928, 0x9929, 0x992A, 0x992B, 0x992C, 0x992D, 0x992F, 0x9930, - 0x9931, 0x9932, 0x9933, 0x9934, 0x9935, 0x9936, 0x9937, 0x9938, - 0x9939, 0x993A, 0x993B, 0x993C, 0x993D, 0x993E, 0x993F, 0x9940, - 0x9941, 0x9942, 0x9943, 0x9944, 0x9945, 0x9946, 0x9947, 0x9948, - 0x9949, 0x994A, 0x994B, 0x994C, 0x994D, 0x994E, 0x994F, 0x9950, - 0x9951, 0x9952, 0x9953, 0x9956, 0x9957, 0x9958, 0x9959, 0x995A, - 0x995B, 0x995C, 0x995D, 0x995E, 0x995F, 0x9960, 0x9961, 0x9962, - 0x9964, 0x9966, 0x9973, 0x9978, 0x9979, 0x997B, 0x997E, 0x9982, - 0x9983, 0x9989, 0x7A39, 0x7A37, 0x7A51, 0x9ECF, 0x99A5, 0x7A70, - 0x7688, 0x768E, 0x7693, 0x7699, 0x76A4, 0x74DE, 0x74E0, 0x752C, - 0x9E20, 0x9E22, 0x9E28, 0x9E29, 0x9E2A, 0x9E2B, 0x9E2C, 0x9E32, - 0x9E31, 0x9E36, 0x9E38, 0x9E37, 0x9E39, 0x9E3A, 0x9E3E, 0x9E41, - 0x9E42, 0x9E44, 0x9E46, 0x9E47, 0x9E48, 0x9E49, 0x9E4B, 0x9E4C, - 0x9E4E, 0x9E51, 0x9E55, 0x9E57, 0x9E5A, 0x9E5B, 0x9E5C, 0x9E5E, - 0x9E63, 0x9E66, 0x9E67, 0x9E68, 0x9E69, 0x9E6A, 0x9E6B, 0x9E6C, - 0x9E71, 0x9E6D, 0x9E73, 0x7592, 0x7594, 0x7596, 0x75A0, 0x759D, -plane 84 -at 0x00 - 0x75AC, 0x75A3, 0x75B3, 0x75B4, 0x75B8, 0x75C4, 0x75B1, 0x75B0, - 0x75C3, 0x75C2, 0x75D6, 0x75CD, 0x75E3, 0x75E8, 0x75E6, 0x75E4, - 0x75EB, 0x75E7, 0x7603, 0x75F1, 0x75FC, 0x75FF, 0x7610, 0x7600, - 0x7605, 0x760C, 0x7617, 0x760A, 0x7625, 0x7618, 0x7615, 0x7619, - 0x998C, 0x998E, 0x999A, 0x999B, 0x999C, 0x999D, 0x999E, 0x999F, - 0x99A0, 0x99A1, 0x99A2, 0x99A3, 0x99A4, 0x99A6, 0x99A7, 0x99A9, - 0x99AA, 0x99AB, 0x99AC, 0x99AD, 0x99AE, 0x99AF, 0x99B0, 0x99B1, - 0x99B2, 0x99B3, 0x99B4, 0x99B5, 0x99B6, 0x99B7, 0x99B8, 0x99B9, - 0x99BA, 0x99BB, 0x99BC, 0x99BD, 0x99BE, 0x99BF, 0x99C0, 0x99C1, - 0x99C2, 0x99C3, 0x99C4, 0x99C5, 0x99C6, 0x99C7, 0x99C8, 0x99C9, - 0x99CA, 0x99CB, 0x99CC, 0x99CD, 0x99CE, 0x99CF, 0x99D0, 0x99D1, - 0x99D2, 0x99D3, 0x99D4, 0x99D5, 0x99D6, 0x99D7, 0x99D8, 0x99D9, - 0x99DA, 0x99DB, 0x99DC, 0x99DD, 0x99DE, 0x99DF, 0x99E0, 0x99E1, - 0x99E2, 0x99E3, 0x99E4, 0x99E5, 0x99E6, 0x99E7, 0x99E8, 0x99E9, - 0x99EA, 0x99EB, 0x99EC, 0x99ED, 0x99EE, 0x99EF, 0x99F0, 0x99F1, - 0x99F2, 0x99F3, 0x99F4, 0x99F5, 0x99F6, 0x99F7, 0x99F8, 0x99F9, - 0x761B, 0x763C, 0x7622, 0x7620, 0x7640, 0x762D, 0x7630, 0x763F, - 0x7635, 0x7643, 0x763E, 0x7633, 0x764D, 0x765E, 0x7654, 0x765C, - 0x7656, 0x766B, 0x766F, 0x7FCA, 0x7AE6, 0x7A78, 0x7A79, 0x7A80, - 0x7A86, 0x7A88, 0x7A95, 0x7AA6, 0x7AA0, 0x7AAC, 0x7AA8, 0x7AAD, - 0x7AB3, 0x8864, 0x8869, 0x8872, 0x887D, 0x887F, 0x8882, 0x88A2, - 0x88C6, 0x88B7, 0x88BC, 0x88C9, 0x88E2, 0x88CE, 0x88E3, 0x88E5, - 0x88F1, 0x891A, 0x88FC, 0x88E8, 0x88FE, 0x88F0, 0x8921, 0x8919, - 0x8913, 0x891B, 0x890A, 0x8934, 0x892B, 0x8936, 0x8941, 0x8966, - 0x897B, 0x758B, 0x80E5, 0x76B2, 0x76B4, 0x77DC, 0x8012, 0x8014, - 0x8016, 0x801C, 0x8020, 0x8022, 0x8025, 0x8026, 0x8027, 0x8029, - 0x8028, 0x8031, 0x800B, 0x8035, 0x8043, 0x8046, 0x804D, 0x8052, - 0x8069, 0x8071, 0x8983, 0x9878, 0x9880, 0x9883, 0x99FA, 0x99FB, - 0x99FC, 0x99FD, 0x99FE, 0x99FF, 0x9A00, 0x9A01, 0x9A02, 0x9A03, - 0x9A04, 0x9A05, 0x9A06, 0x9A07, 0x9A08, 0x9A09, 0x9A0A, 0x9A0B, - 0x9A0C, 0x9A0D, 0x9A0E, 0x9A0F, 0x9A10, 0x9A11, 0x9A12, 0x9A13, - 0x9A14, 0x9A15, 0x9A16, 0x9A17, 0x9A18, 0x9A19, 0x9A1A, 0x9A1B, -plane 85 -at 0x00 - 0x9A1C, 0x9A1D, 0x9A1E, 0x9A1F, 0x9A20, 0x9A21, 0x9A22, 0x9A23, - 0x9A24, 0x9A25, 0x9A26, 0x9A27, 0x9A28, 0x9A29, 0x9A2A, 0x9A2B, - 0x9A2C, 0x9A2D, 0x9A2E, 0x9A2F, 0x9A30, 0x9A31, 0x9A32, 0x9A33, - 0x9A34, 0x9A35, 0x9A36, 0x9A37, 0x9A38, 0x9A39, 0x9A3A, 0x9A3B, - 0x9A3C, 0x9A3D, 0x9A3E, 0x9A3F, 0x9A40, 0x9A41, 0x9A42, 0x9A43, - 0x9A44, 0x9A45, 0x9A46, 0x9A47, 0x9A48, 0x9A49, 0x9A4A, 0x9A4B, - 0x9A4C, 0x9A4D, 0x9A4E, 0x9A4F, 0x9A50, 0x9A51, 0x9A52, 0x9A53, - 0x9A54, 0x9A55, 0x9A56, 0x9A57, 0x9A58, 0x9A59, 0x9889, 0x988C, - 0x988D, 0x988F, 0x9894, 0x989A, 0x989B, 0x989E, 0x989F, 0x98A1, - 0x98A2, 0x98A5, 0x98A6, 0x864D, 0x8654, 0x866C, 0x866E, 0x867F, - 0x867A, 0x867C, 0x867B, 0x86A8, 0x868D, 0x868B, 0x86AC, 0x869D, - 0x86A7, 0x86A3, 0x86AA, 0x8693, 0x86A9, 0x86B6, 0x86C4, 0x86B5, - 0x86CE, 0x86B0, 0x86BA, 0x86B1, 0x86AF, 0x86C9, 0x86CF, 0x86B4, - 0x86E9, 0x86F1, 0x86F2, 0x86ED, 0x86F3, 0x86D0, 0x8713, 0x86DE, - 0x86F4, 0x86DF, 0x86D8, 0x86D1, 0x8703, 0x8707, 0x86F8, 0x8708, - 0x870A, 0x870D, 0x8709, 0x8723, 0x873B, 0x871E, 0x8725, 0x872E, - 0x871A, 0x873E, 0x8748, 0x8734, 0x8731, 0x8729, 0x8737, 0x873F, - 0x8782, 0x8722, 0x877D, 0x877E, 0x877B, 0x8760, 0x8770, 0x874C, - 0x876E, 0x878B, 0x8753, 0x8763, 0x877C, 0x8764, 0x8759, 0x8765, - 0x8793, 0x87AF, 0x87A8, 0x87D2, 0x9A5A, 0x9A5B, 0x9A5C, 0x9A5D, - 0x9A5E, 0x9A5F, 0x9A60, 0x9A61, 0x9A62, 0x9A63, 0x9A64, 0x9A65, - 0x9A66, 0x9A67, 0x9A68, 0x9A69, 0x9A6A, 0x9A6B, 0x9A72, 0x9A83, - 0x9A89, 0x9A8D, 0x9A8E, 0x9A94, 0x9A95, 0x9A99, 0x9AA6, 0x9AA9, - 0x9AAA, 0x9AAB, 0x9AAC, 0x9AAD, 0x9AAE, 0x9AAF, 0x9AB2, 0x9AB3, - 0x9AB4, 0x9AB5, 0x9AB9, 0x9ABB, 0x9ABD, 0x9ABE, 0x9ABF, 0x9AC3, - 0x9AC4, 0x9AC6, 0x9AC7, 0x9AC8, 0x9AC9, 0x9ACA, 0x9ACD, 0x9ACE, - 0x9ACF, 0x9AD0, 0x9AD2, 0x9AD4, 0x9AD5, 0x9AD6, 0x9AD7, 0x9AD9, - 0x9ADA, 0x9ADB, 0x9ADC, 0x9ADD, 0x9ADE, 0x9AE0, 0x9AE2, 0x9AE3, - 0x9AE4, 0x9AE5, 0x9AE7, 0x9AE8, 0x9AE9, 0x9AEA, 0x9AEC, 0x9AEE, - 0x9AF0, 0x9AF1, 0x9AF2, 0x9AF3, 0x9AF4, 0x9AF5, 0x9AF6, 0x9AF7, - 0x9AF8, 0x9AFA, 0x9AFC, 0x9AFD, 0x9AFE, 0x9AFF, 0x9B00, 0x9B01, - 0x9B02, 0x9B04, 0x9B05, 0x9B06, 0x87C6, 0x8788, 0x8785, 0x87AD, -plane 86 -at 0x00 - 0x8797, 0x8783, 0x87AB, 0x87E5, 0x87AC, 0x87B5, 0x87B3, 0x87CB, - 0x87D3, 0x87BD, 0x87D1, 0x87C0, 0x87CA, 0x87DB, 0x87EA, 0x87E0, - 0x87EE, 0x8816, 0x8813, 0x87FE, 0x880A, 0x881B, 0x8821, 0x8839, - 0x883C, 0x7F36, 0x7F42, 0x7F44, 0x7F45, 0x8210, 0x7AFA, 0x7AFD, - 0x7B08, 0x7B03, 0x7B04, 0x7B15, 0x7B0A, 0x7B2B, 0x7B0F, 0x7B47, - 0x7B38, 0x7B2A, 0x7B19, 0x7B2E, 0x7B31, 0x7B20, 0x7B25, 0x7B24, - 0x7B33, 0x7B3E, 0x7B1E, 0x7B58, 0x7B5A, 0x7B45, 0x7B75, 0x7B4C, - 0x7B5D, 0x7B60, 0x7B6E, 0x7B7B, 0x7B62, 0x7B72, 0x7B71, 0x7B90, - 0x7BA6, 0x7BA7, 0x7BB8, 0x7BAC, 0x7B9D, 0x7BA8, 0x7B85, 0x7BAA, - 0x7B9C, 0x7BA2, 0x7BAB, 0x7BB4, 0x7BD1, 0x7BC1, 0x7BCC, 0x7BDD, - 0x7BDA, 0x7BE5, 0x7BE6, 0x7BEA, 0x7C0C, 0x7BFE, 0x7BFC, 0x7C0F, - 0x7C16, 0x7C0B, 0x9B07, 0x9B09, 0x9B0A, 0x9B0B, 0x9B0C, 0x9B0D, - 0x9B0E, 0x9B10, 0x9B11, 0x9B12, 0x9B14, 0x9B15, 0x9B16, 0x9B17, - 0x9B18, 0x9B19, 0x9B1A, 0x9B1B, 0x9B1C, 0x9B1D, 0x9B1E, 0x9B20, - 0x9B21, 0x9B22, 0x9B24, 0x9B25, 0x9B26, 0x9B27, 0x9B28, 0x9B29, - 0x9B2A, 0x9B2B, 0x9B2C, 0x9B2D, 0x9B2E, 0x9B30, 0x9B31, 0x9B33, - 0x9B34, 0x9B35, 0x9B36, 0x9B37, 0x9B38, 0x9B39, 0x9B3A, 0x9B3D, - 0x9B3E, 0x9B3F, 0x9B40, 0x9B46, 0x9B4A, 0x9B4B, 0x9B4C, 0x9B4E, - 0x9B50, 0x9B52, 0x9B53, 0x9B55, 0x9B56, 0x9B57, 0x9B58, 0x9B59, - 0x9B5A, 0x9B5B, 0x9B5C, 0x9B5D, 0x9B5E, 0x9B5F, 0x9B60, 0x9B61, - 0x9B62, 0x9B63, 0x9B64, 0x9B65, 0x9B66, 0x9B67, 0x9B68, 0x9B69, - 0x9B6A, 0x9B6B, 0x9B6C, 0x9B6D, 0x9B6E, 0x9B6F, 0x9B70, 0x9B71, - 0x9B72, 0x9B73, 0x9B74, 0x9B75, 0x9B76, 0x9B77, 0x9B78, 0x9B79, - 0x9B7A, 0x9B7B, 0x7C1F, 0x7C2A, 0x7C26, 0x7C38, 0x7C41, 0x7C40, - 0x81FE, 0x8201, 0x8202, 0x8204, 0x81EC, 0x8844, 0x8221, 0x8222, - 0x8223, 0x822D, 0x822F, 0x8228, 0x822B, 0x8238, 0x823B, 0x8233, - 0x8234, 0x823E, 0x8244, 0x8249, 0x824B, 0x824F, 0x825A, 0x825F, - 0x8268, 0x887E, 0x8885, 0x8888, 0x88D8, 0x88DF, 0x895E, 0x7F9D, - 0x7F9F, 0x7FA7, 0x7FAF, 0x7FB0, 0x7FB2, 0x7C7C, 0x6549, 0x7C91, - 0x7C9D, 0x7C9C, 0x7C9E, 0x7CA2, 0x7CB2, 0x7CBC, 0x7CBD, 0x7CC1, - 0x7CC7, 0x7CCC, 0x7CCD, 0x7CC8, 0x7CC5, 0x7CD7, 0x7CE8, 0x826E, - 0x66A8, 0x7FBF, 0x7FCE, 0x7FD5, 0x7FE5, 0x7FE1, 0x7FE6, 0x7FE9, -plane 87 -at 0x00 - 0x7FEE, 0x7FF3, 0x7CF8, 0x7D77, 0x7DA6, 0x7DAE, 0x7E47, 0x7E9B, - 0x9EB8, 0x9EB4, 0x8D73, 0x8D84, 0x8D94, 0x8D91, 0x8DB1, 0x8D67, - 0x8D6D, 0x8C47, 0x8C49, 0x914A, 0x9150, 0x914E, 0x914F, 0x9164, - 0x9B7C, 0x9B7D, 0x9B7E, 0x9B7F, 0x9B80, 0x9B81, 0x9B82, 0x9B83, - 0x9B84, 0x9B85, 0x9B86, 0x9B87, 0x9B88, 0x9B89, 0x9B8A, 0x9B8B, - 0x9B8C, 0x9B8D, 0x9B8E, 0x9B8F, 0x9B90, 0x9B91, 0x9B92, 0x9B93, - 0x9B94, 0x9B95, 0x9B96, 0x9B97, 0x9B98, 0x9B99, 0x9B9A, 0x9B9B, - 0x9B9C, 0x9B9D, 0x9B9E, 0x9B9F, 0x9BA0, 0x9BA1, 0x9BA2, 0x9BA3, - 0x9BA4, 0x9BA5, 0x9BA6, 0x9BA7, 0x9BA8, 0x9BA9, 0x9BAA, 0x9BAB, - 0x9BAC, 0x9BAD, 0x9BAE, 0x9BAF, 0x9BB0, 0x9BB1, 0x9BB2, 0x9BB3, - 0x9BB4, 0x9BB5, 0x9BB6, 0x9BB7, 0x9BB8, 0x9BB9, 0x9BBA, 0x9BBB, - 0x9BBC, 0x9BBD, 0x9BBE, 0x9BBF, 0x9BC0, 0x9BC1, 0x9BC2, 0x9BC3, - 0x9BC4, 0x9BC5, 0x9BC6, 0x9BC7, 0x9BC8, 0x9BC9, 0x9BCA, 0x9BCB, - 0x9BCC, 0x9BCD, 0x9BCE, 0x9BCF, 0x9BD0, 0x9BD1, 0x9BD2, 0x9BD3, - 0x9BD4, 0x9BD5, 0x9BD6, 0x9BD7, 0x9BD8, 0x9BD9, 0x9BDA, 0x9BDB, - 0x9162, 0x9161, 0x9170, 0x9169, 0x916F, 0x917D, 0x917E, 0x9172, - 0x9174, 0x9179, 0x918C, 0x9185, 0x9190, 0x918D, 0x9191, 0x91A2, - 0x91A3, 0x91AA, 0x91AD, 0x91AE, 0x91AF, 0x91B5, 0x91B4, 0x91BA, - 0x8C55, 0x9E7E, 0x8DB8, 0x8DEB, 0x8E05, 0x8E59, 0x8E69, 0x8DB5, - 0x8DBF, 0x8DBC, 0x8DBA, 0x8DC4, 0x8DD6, 0x8DD7, 0x8DDA, 0x8DDE, - 0x8DCE, 0x8DCF, 0x8DDB, 0x8DC6, 0x8DEC, 0x8DF7, 0x8DF8, 0x8DE3, - 0x8DF9, 0x8DFB, 0x8DE4, 0x8E09, 0x8DFD, 0x8E14, 0x8E1D, 0x8E1F, - 0x8E2C, 0x8E2E, 0x8E23, 0x8E2F, 0x8E3A, 0x8E40, 0x8E39, 0x8E35, - 0x8E3D, 0x8E31, 0x8E49, 0x8E41, 0x8E42, 0x8E51, 0x8E52, 0x8E4A, - 0x8E70, 0x8E76, 0x8E7C, 0x8E6F, 0x8E74, 0x8E85, 0x8E8F, 0x8E94, - 0x8E90, 0x8E9C, 0x8E9E, 0x8C78, 0x8C82, 0x8C8A, 0x8C85, 0x8C98, - 0x8C94, 0x659B, 0x89D6, 0x89DE, 0x89DA, 0x89DC, 0x9BDC, 0x9BDD, - 0x9BDE, 0x9BDF, 0x9BE0, 0x9BE1, 0x9BE2, 0x9BE3, 0x9BE4, 0x9BE5, - 0x9BE6, 0x9BE7, 0x9BE8, 0x9BE9, 0x9BEA, 0x9BEB, 0x9BEC, 0x9BED, - 0x9BEE, 0x9BEF, 0x9BF0, 0x9BF1, 0x9BF2, 0x9BF3, 0x9BF4, 0x9BF5, - 0x9BF6, 0x9BF7, 0x9BF8, 0x9BF9, 0x9BFA, 0x9BFB, 0x9BFC, 0x9BFD, - 0x9BFE, 0x9BFF, 0x9C00, 0x9C01, 0x9C02, 0x9C03, 0x9C04, 0x9C05, -plane 88 -at 0x00 - 0x9C06, 0x9C07, 0x9C08, 0x9C09, 0x9C0A, 0x9C0B, 0x9C0C, 0x9C0D, - 0x9C0E, 0x9C0F, 0x9C10, 0x9C11, 0x9C12, 0x9C13, 0x9C14, 0x9C15, - 0x9C16, 0x9C17, 0x9C18, 0x9C19, 0x9C1A, 0x9C1B, 0x9C1C, 0x9C1D, - 0x9C1E, 0x9C1F, 0x9C20, 0x9C21, 0x9C22, 0x9C23, 0x9C24, 0x9C25, - 0x9C26, 0x9C27, 0x9C28, 0x9C29, 0x9C2A, 0x9C2B, 0x9C2C, 0x9C2D, - 0x9C2E, 0x9C2F, 0x9C30, 0x9C31, 0x9C32, 0x9C33, 0x9C34, 0x9C35, - 0x9C36, 0x9C37, 0x9C38, 0x9C39, 0x9C3A, 0x9C3B, 0x89E5, 0x89EB, - 0x89EF, 0x8A3E, 0x8B26, 0x9753, 0x96E9, 0x96F3, 0x96EF, 0x9706, - 0x9701, 0x9708, 0x970F, 0x970E, 0x972A, 0x972D, 0x9730, 0x973E, - 0x9F80, 0x9F83, 0x9F85, 0x9F86, 0x9F87, 0x9F88, 0x9F89, 0x9F8A, - 0x9F8C, 0x9EFE, 0x9F0B, 0x9F0D, 0x96B9, 0x96BC, 0x96BD, 0x96CE, - 0x96D2, 0x77BF, 0x96E0, 0x928E, 0x92AE, 0x92C8, 0x933E, 0x936A, - 0x93CA, 0x938F, 0x943E, 0x946B, 0x9C7F, 0x9C82, 0x9C85, 0x9C86, - 0x9C87, 0x9C88, 0x7A23, 0x9C8B, 0x9C8E, 0x9C90, 0x9C91, 0x9C92, - 0x9C94, 0x9C95, 0x9C9A, 0x9C9B, 0x9C9E, 0x9C9F, 0x9CA0, 0x9CA1, - 0x9CA2, 0x9CA3, 0x9CA5, 0x9CA6, 0x9CA7, 0x9CA8, 0x9CA9, 0x9CAB, - 0x9CAD, 0x9CAE, 0x9CB0, 0x9CB1, 0x9CB2, 0x9CB3, 0x9CB4, 0x9CB5, - 0x9CB6, 0x9CB7, 0x9CBA, 0x9CBB, 0x9CBC, 0x9CBD, 0x9CC4, 0x9CC5, - 0x9CC6, 0x9CC7, 0x9CCA, 0x9CCB, 0x9C3C, 0x9C3D, 0x9C3E, 0x9C3F, - 0x9C40, 0x9C41, 0x9C42, 0x9C43, 0x9C44, 0x9C45, 0x9C46, 0x9C47, - 0x9C48, 0x9C49, 0x9C4A, 0x9C4B, 0x9C4C, 0x9C4D, 0x9C4E, 0x9C4F, - 0x9C50, 0x9C51, 0x9C52, 0x9C53, 0x9C54, 0x9C55, 0x9C56, 0x9C57, - 0x9C58, 0x9C59, 0x9C5A, 0x9C5B, 0x9C5C, 0x9C5D, 0x9C5E, 0x9C5F, - 0x9C60, 0x9C61, 0x9C62, 0x9C63, 0x9C64, 0x9C65, 0x9C66, 0x9C67, - 0x9C68, 0x9C69, 0x9C6A, 0x9C6B, 0x9C6C, 0x9C6D, 0x9C6E, 0x9C6F, - 0x9C70, 0x9C71, 0x9C72, 0x9C73, 0x9C74, 0x9C75, 0x9C76, 0x9C77, - 0x9C78, 0x9C79, 0x9C7A, 0x9C7B, 0x9C7D, 0x9C7E, 0x9C80, 0x9C83, - 0x9C84, 0x9C89, 0x9C8A, 0x9C8C, 0x9C8F, 0x9C93, 0x9C96, 0x9C97, - 0x9C98, 0x9C99, 0x9C9D, 0x9CAA, 0x9CAC, 0x9CAF, 0x9CB9, 0x9CBE, - 0x9CBF, 0x9CC0, 0x9CC1, 0x9CC2, 0x9CC8, 0x9CC9, 0x9CD1, 0x9CD2, - 0x9CDA, 0x9CDB, 0x9CE0, 0x9CE1, 0x9CCC, 0x9CCD, 0x9CCE, 0x9CCF, - 0x9CD0, 0x9CD3, 0x9CD4, 0x9CD5, 0x9CD7, 0x9CD8, 0x9CD9, 0x9CDC, -plane 89 -at 0x00 - 0x9CDD, 0x9CDF, 0x9CE2, 0x977C, 0x9785, 0x9791, 0x9792, 0x9794, - 0x97AF, 0x97AB, 0x97A3, 0x97B2, 0x97B4, 0x9AB1, 0x9AB0, 0x9AB7, - 0x9E58, 0x9AB6, 0x9ABA, 0x9ABC, 0x9AC1, 0x9AC0, 0x9AC5, 0x9AC2, - 0x9ACB, 0x9ACC, 0x9AD1, 0x9B45, 0x9B43, 0x9B47, 0x9B49, 0x9B48, - 0x9B4D, 0x9B51, 0x98E8, 0x990D, 0x992E, 0x9955, 0x9954, 0x9ADF, - 0x9AE1, 0x9AE6, 0x9AEF, 0x9AEB, 0x9AFB, 0x9AED, 0x9AF9, 0x9B08, - 0x9B0F, 0x9B13, 0x9B1F, 0x9B23, 0x9EBD, 0x9EBE, 0x7E3B, 0x9E82, - 0x9E87, 0x9E88, 0x9E8B, 0x9E92, 0x93D6, 0x9E9D, 0x9E9F, 0x9EDB, - 0x9EDC, 0x9EDD, 0x9EE0, 0x9EDF, 0x9EE2, 0x9EE9, 0x9EE7, 0x9EE5, - 0x9EEA, 0x9EEF, 0x9F22, 0x9F2C, 0x9F2F, 0x9F39, 0x9F37, 0x9F3D, - 0x9F3E, 0x9F44, 0x9CE3, 0x9CE4, 0x9CE5, 0x9CE6, 0x9CE7, 0x9CE8, - 0x9CE9, 0x9CEA, 0x9CEB, 0x9CEC, 0x9CED, 0x9CEE, 0x9CEF, 0x9CF0, - 0x9CF1, 0x9CF2, 0x9CF3, 0x9CF4, 0x9CF5, 0x9CF6, 0x9CF7, 0x9CF8, - 0x9CF9, 0x9CFA, 0x9CFB, 0x9CFC, 0x9CFD, 0x9CFE, 0x9CFF, 0x9D00, - 0x9D01, 0x9D02, 0x9D03, 0x9D04, 0x9D05, 0x9D06, 0x9D07, 0x9D08, - 0x9D09, 0x9D0A, 0x9D0B, 0x9D0C, 0x9D0D, 0x9D0E, 0x9D0F, 0x9D10, - 0x9D11, 0x9D12, 0x9D13, 0x9D14, 0x9D15, 0x9D16, 0x9D17, 0x9D18, - 0x9D19, 0x9D1A, 0x9D1B, 0x9D1C, 0x9D1D, 0x9D1E, 0x9D1F, 0x9D20, - 0x9D21, 0x9D22, 0x9D23, 0x9D24, 0x9D25, 0x9D26, 0x9D27, 0x9D28, - 0x9D29, 0x9D2A, 0x9D2B, 0x9D2C, 0x9D2D, 0x9D2E, 0x9D2F, 0x9D30, - 0x9D31, 0x9D32, 0x9D33, 0x9D34, 0x9D35, 0x9D36, 0x9D37, 0x9D38, - 0x9D39, 0x9D3A, 0x9D3B, 0x9D3C, 0x9D3D, 0x9D3E, 0x9D3F, 0x9D40, - 0x9D41, 0x9D42, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane 90 -at 0x00 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0x9D43, 0x9D44, 0x9D45, 0x9D46, 0x9D47, 0x9D48, 0x9D49, 0x9D4A, - 0x9D4B, 0x9D4C, 0x9D4D, 0x9D4E, 0x9D4F, 0x9D50, 0x9D51, 0x9D52, - 0x9D53, 0x9D54, 0x9D55, 0x9D56, 0x9D57, 0x9D58, 0x9D59, 0x9D5A, - 0x9D5B, 0x9D5C, 0x9D5D, 0x9D5E, 0x9D5F, 0x9D60, 0x9D61, 0x9D62, - 0x9D63, 0x9D64, 0x9D65, 0x9D66, 0x9D67, 0x9D68, 0x9D69, 0x9D6A, - 0x9D6B, 0x9D6C, 0x9D6D, 0x9D6E, 0x9D6F, 0x9D70, 0x9D71, 0x9D72, - 0x9D73, 0x9D74, 0x9D75, 0x9D76, 0x9D77, 0x9D78, 0x9D79, 0x9D7A, - 0x9D7B, 0x9D7C, 0x9D7D, 0x9D7E, 0x9D7F, 0x9D80, 0x9D81, 0x9D82, - 0x9D83, 0x9D84, 0x9D85, 0x9D86, 0x9D87, 0x9D88, 0x9D89, 0x9D8A, - 0x9D8B, 0x9D8C, 0x9D8D, 0x9D8E, 0x9D8F, 0x9D90, 0x9D91, 0x9D92, - 0x9D93, 0x9D94, 0x9D95, 0x9D96, 0x9D97, 0x9D98, 0x9D99, 0x9D9A, - 0x9D9B, 0x9D9C, 0x9D9D, 0x9D9E, 0x9D9F, 0x9DA0, 0x9DA1, 0x9DA2, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0x9DA3, 0x9DA4, - 0x9DA5, 0x9DA6, 0x9DA7, 0x9DA8, 0x9DA9, 0x9DAA, 0x9DAB, 0x9DAC, - 0x9DAD, 0x9DAE, 0x9DAF, 0x9DB0, 0x9DB1, 0x9DB2, 0x9DB3, 0x9DB4, - 0x9DB5, 0x9DB6, 0x9DB7, 0x9DB8, 0x9DB9, 0x9DBA, 0x9DBB, 0x9DBC, - 0x9DBD, 0x9DBE, 0x9DBF, 0x9DC0, 0x9DC1, 0x9DC2, 0x9DC3, 0x9DC4, - 0x9DC5, 0x9DC6, 0x9DC7, 0x9DC8, 0x9DC9, 0x9DCA, 0x9DCB, 0x9DCC, - 0x9DCD, 0x9DCE, 0x9DCF, 0x9DD0, 0x9DD1, 0x9DD2, 0x9DD3, 0x9DD4, -plane 91 -at 0x00 - 0x9DD5, 0x9DD6, 0x9DD7, 0x9DD8, 0x9DD9, 0x9DDA, 0x9DDB, 0x9DDC, - 0x9DDD, 0x9DDE, 0x9DDF, 0x9DE0, 0x9DE1, 0x9DE2, 0x9DE3, 0x9DE4, - 0x9DE5, 0x9DE6, 0x9DE7, 0x9DE8, 0x9DE9, 0x9DEA, 0x9DEB, 0x9DEC, - 0x9DED, 0x9DEE, 0x9DEF, 0x9DF0, 0x9DF1, 0x9DF2, 0x9DF3, 0x9DF4, - 0x9DF5, 0x9DF6, 0x9DF7, 0x9DF8, 0x9DF9, 0x9DFA, 0x9DFB, 0x9DFC, - 0x9DFD, 0x9DFE, 0x9DFF, 0x9E00, 0x9E01, 0x9E02, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0x9E03, 0x9E04, 0x9E05, 0x9E06, - 0x9E07, 0x9E08, 0x9E09, 0x9E0A, 0x9E0B, 0x9E0C, 0x9E0D, 0x9E0E, - 0x9E0F, 0x9E10, 0x9E11, 0x9E12, 0x9E13, 0x9E14, 0x9E15, 0x9E16, - 0x9E17, 0x9E18, 0x9E19, 0x9E1A, 0x9E1B, 0x9E1C, 0x9E1D, 0x9E1E, - 0x9E24, 0x9E27, 0x9E2E, 0x9E30, 0x9E34, 0x9E3B, 0x9E3C, 0x9E40, - 0x9E4D, 0x9E50, 0x9E52, 0x9E53, 0x9E54, 0x9E56, 0x9E59, 0x9E5D, - 0x9E5F, 0x9E60, 0x9E61, 0x9E62, 0x9E65, 0x9E6E, 0x9E6F, 0x9E72, - 0x9E74, 0x9E75, 0x9E76, 0x9E77, 0x9E78, 0x9E79, 0x9E7A, 0x9E7B, - 0x9E7C, 0x9E7D, 0x9E80, 0x9E81, 0x9E83, 0x9E84, 0x9E85, 0x9E86, - 0x9E89, 0x9E8A, 0x9E8C, 0x9E8D, 0x9E8E, 0x9E8F, 0x9E90, 0x9E91, - 0x9E94, 0x9E95, 0x9E96, 0x9E97, 0x9E98, 0x9E99, 0x9E9A, 0x9E9B, - 0x9E9C, 0x9E9E, 0x9EA0, 0x9EA1, 0x9EA2, 0x9EA3, 0x9EA4, 0x9EA5, - 0x9EA7, 0x9EA8, 0x9EA9, 0x9EAA, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane 92 -at 0x00 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0x9EAB, 0x9EAC, 0x9EAD, 0x9EAE, 0x9EAF, 0x9EB0, - 0x9EB1, 0x9EB2, 0x9EB3, 0x9EB5, 0x9EB6, 0x9EB7, 0x9EB9, 0x9EBA, - 0x9EBC, 0x9EBF, 0x9EC0, 0x9EC1, 0x9EC2, 0x9EC3, 0x9EC5, 0x9EC6, - 0x9EC7, 0x9EC8, 0x9ECA, 0x9ECB, 0x9ECC, 0x9ED0, 0x9ED2, 0x9ED3, - 0x9ED5, 0x9ED6, 0x9ED7, 0x9ED9, 0x9EDA, 0x9EDE, 0x9EE1, 0x9EE3, - 0x9EE4, 0x9EE6, 0x9EE8, 0x9EEB, 0x9EEC, 0x9EED, 0x9EEE, 0x9EF0, - 0x9EF1, 0x9EF2, 0x9EF3, 0x9EF4, 0x9EF5, 0x9EF6, 0x9EF7, 0x9EF8, - 0x9EFA, 0x9EFD, 0x9EFF, 0x9F00, 0x9F01, 0x9F02, 0x9F03, 0x9F04, - 0x9F05, 0x9F06, 0x9F07, 0x9F08, 0x9F09, 0x9F0A, 0x9F0C, 0x9F0F, - 0x9F11, 0x9F12, 0x9F14, 0x9F15, 0x9F16, 0x9F18, 0x9F1A, 0x9F1B, - 0x9F1C, 0x9F1D, 0x9F1E, 0x9F1F, 0x9F21, 0x9F23, 0x9F24, 0x9F25, - 0x9F26, 0x9F27, 0x9F28, 0x9F29, 0x9F2A, 0x9F2B, 0x9F2D, 0x9F2E, - 0x9F30, 0x9F31, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane 93 -at 0x00 - 0, 0, 0, 0, 0, 0, 0, 0, - 0x9F32, 0x9F33, 0x9F34, 0x9F35, 0x9F36, 0x9F38, 0x9F3A, 0x9F3C, - 0x9F3F, 0x9F40, 0x9F41, 0x9F42, 0x9F43, 0x9F45, 0x9F46, 0x9F47, - 0x9F48, 0x9F49, 0x9F4A, 0x9F4B, 0x9F4C, 0x9F4D, 0x9F4E, 0x9F4F, - 0x9F52, 0x9F53, 0x9F54, 0x9F55, 0x9F56, 0x9F57, 0x9F58, 0x9F59, - 0x9F5A, 0x9F5B, 0x9F5C, 0x9F5D, 0x9F5E, 0x9F5F, 0x9F60, 0x9F61, - 0x9F62, 0x9F63, 0x9F64, 0x9F65, 0x9F66, 0x9F67, 0x9F68, 0x9F69, - 0x9F6A, 0x9F6B, 0x9F6C, 0x9F6D, 0x9F6E, 0x9F6F, 0x9F70, 0x9F71, - 0x9F72, 0x9F73, 0x9F74, 0x9F75, 0x9F76, 0x9F77, 0x9F78, 0x9F79, - 0x9F7A, 0x9F7B, 0x9F7C, 0x9F7D, 0x9F7E, 0x9F81, 0x9F82, 0x9F8D, - 0x9F8E, 0x9F8F, 0x9F90, 0x9F91, 0x9F92, 0x9F93, 0x9F94, 0x9F95, - 0x9F96, 0x9F97, 0x9F98, 0x9F9C, 0x9F9D, 0x9F9E, 0x9FA1, 0x9FA2, - 0x9FA3, 0x9FA4, 0x9FA5, 0xF92C, 0xF979, 0xF995, 0xF9E7, 0xF9F1, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0xFA0C, 0xFA0D, - 0xFA0E, 0xFA0F, 0xFA11, 0xFA13, 0xFA14, 0xFA18, 0xFA1F, 0xFA20, - 0xFA21, 0xFA23, 0xFA24, 0xFA27, 0xFA28, 0xFA29, 0xE815, 0xE816, - 0xE817, 0xE818, 0xE819, 0xE81A, 0xE81B, 0xE81C, 0xE81D, 0xE81E, - 0xE81F, 0xE820, 0xE821, 0xE822, 0xE823, 0xE824, 0xE825, 0xE826, - 0xE827, 0xE828, 0xE829, 0xE82A, 0xE82B, 0xE82C, 0xE82D, 0xE82E, - 0xE82F, 0xE830, 0xE831, 0xE832, 0xE833, 0xE834, 0xE835, 0xE836, - 0xE837, 0xE838, 0xE839, 0xE83A, 0xE83B, 0xE83C, 0xE83D, 0xE83E, -plane 94 -at 0x00 - 0xE83F, 0xE840, 0xE841, 0xE842, 0xE843, 0xE844, 0xE845, 0xE846, - 0xE847, 0xE848, 0xE849, 0xE84A, 0xE84B, 0xE84C, 0xE84D, 0xE84E, - 0xE84F, 0xE850, 0xE851, 0xE852, 0xE853, 0xE854, 0xE855, 0xE856, - 0xE857, 0xE858, 0xE859, 0xE85A, 0xE85B, 0xE85C, 0xE85D, 0xE85E, - 0xE85F, 0xE860, 0xE861, 0xE862, 0xE863, 0xE864, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/maps/ubig5.map b/application/third_party/dompdf/lib/ttf2ufm/src/maps/ubig5.map deleted file mode 100644 index bd656821..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/maps/ubig5.map +++ /dev/null @@ -1,2184 +0,0 @@ -# BIG5 --> Unicode conversion table: -# generated by Chen Xiangyang (chenxy@sun.ihep.ac.cn) -# -# it contains 13703 characters of BIG5 character set, it also contains -# some unused codes in order to make the array easy to use. -# Code range: first byte: 0xa1 -- 0xFE 94 -# second byte: 0x40 -- 0x7F 64 -# 0xA1 -- 0xFF 96 -# code points: 94 x 160 = 15040 -# -# Usage: -# -# unsigned short BIG5_code, unicode; -# int pos; -# if ((BIG5_code&0x00FF)<=0x7F) -# pos = ((BIG5_code>>8)-0xa1)*160 + ((BIG5_code&0x00FF)-0x40); -# else -# pos = ((BIG5_code>>8)-0xa1)*160 + ((BIG5_code&0x00FF)-0x60); -# unicode = big52uni[pos]; -# -# Converted to ttf2pt1 map format by Sergey Babkin -# -plane a1 -at 0x40 - 0x3000, 0xFF0C, 0x3001, 0x3002, 0xFF0E, 0x2022, 0xFF1B, 0xFF1A, - 0xFF1F, 0xFF01, 0xFE30, 0x2026, 0x2025, 0xFE50, 0xFF64, 0xFE52, - 0x00B7, 0xFE54, 0xFE55, 0xFE56, 0xFE57, 0xFF5C, 0x2013, 0xFE31, - 0x2014, 0xFE33, 0, 0xFE34, 0xFE4F, 0xFF08, 0xFF09, 0xFE35, - 0xFE36, 0xFF5B, 0xFF5D, 0xFE37, 0xFE38, 0x3014, 0x3015, 0xFE39, - 0xFE3A, 0x3010, 0x3011, 0xFE3B, 0xFE3C, 0x300A, 0x300B, 0xFE3D, - 0xFE3E, 0x3008, 0x3009, 0xFE3F, 0xFE40, 0x300C, 0x300D, 0xFE41, - 0xFE42, 0x300E, 0x300F, 0xFE43, 0xFE44, 0xFE59, 0xFE5A, 0, -at 0xA0 - 0, 0xFE5B, 0xFE5C, 0xFE5D, 0xFE5E, 0x2018, 0x2019, 0x201C, - 0x201D, 0x301D, 0x301E, 0x2035, 0x2032, 0xFF03, 0xFF06, 0xFF0A, - 0x203B, 0x00A7, 0x3003, 0x25CB, 0x25CF, 0x25B3, 0x25B2, 0x25CE, - 0x2606, 0x2605, 0x25C7, 0x25C6, 0x25A1, 0x25A0, 0x25BD, 0x25BC, - 0x32A3, 0x2105, 0x203E, 0, 0xFF3F, 0, 0xFE49, 0xFE4A, - 0xFE4D, 0xFE4E, 0xFE4B, 0xFE4C, 0xFE5F, 0xFE60, 0xFE61, 0xFF0B, - 0xFF0D, 0x00D7, 0x00F7, 0x00B1, 0x221A, 0xFF1C, 0xFF1E, 0xFF1D, - 0x2266, 0x2267, 0x2260, 0x221E, 0x2252, 0x2261, 0xFE62, 0xFE63, - 0xFE64, 0xFE65, 0xFE66, 0x223C, 0x2229, 0x222A, 0x22A5, 0x2220, - 0x221F, 0x22BF, 0x33D2, 0x33D1, 0x222B, 0x222E, 0x2235, 0x2234, - 0x2640, 0x2642, 0x2641, 0x2609, 0x2191, 0x2193, 0x2190, 0x2192, - 0x2196, 0x2197, 0x2199, 0x2198, 0x2225, 0x2223, 0, 0, -plane a2 -at 0x40 - 0, 0xFF0F, 0xFF3C, 0xFF04, 0x00A5, 0x3012, 0x00A2, 0x00A3, - 0xFF05, 0xFF20, 0x2103, 0x2109, 0xFE69, 0xFE6A, 0xFE6B, 0x33D5, - 0x339C, 0x339D, 0x339E, 0x33CE, 0x33A1, 0x338E, 0x338F, 0x33C4, - 0x00B0, 0x5159, 0x515B, 0x515E, 0x515D, 0x5161, 0x5163, 0x55E7, - 0x74E9, 0x7CCE, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586, - 0x2587, 0x2588, 0x258F, 0x258E, 0x258D, 0x258C, 0x258B, 0x258A, - 0x2589, 0x253C, 0x2534, 0x252C, 0x2524, 0x251C, 0x2594, 0x2500, - 0x2502, 0x2595, 0x250C, 0x2510, 0x2514, 0x2518, 0x256D, 0, -at 0xA0 - 0, 0x256E, 0x2570, 0x256F, 0x2550, 0x255E, 0x256A, 0x2561, - 0x25E2, 0x25E3, 0x25E5, 0x25E4, 0x2571, 0x2572, 0x2573, 0xFF10, - 0xFF11, 0xFF12, 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17, 0xFF18, - 0xFF19, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, - 0x2167, 0x2168, 0x2169, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, - 0x3026, 0x3027, 0x3028, 0x3029, 0, 0x5344, 0, 0xFF21, - 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, - 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, - 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF39, - 0xFF3A, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47, - 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F, - 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0, -plane a3 -at 0x40 - 0xFF57, 0xFF58, 0xFF59, 0xFF5A, 0x0391, 0x0392, 0x0393, 0x0394, - 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, - 0x039D, 0x039E, 0x039F, 0x03A0, 0x03A1, 0x03A3, 0x03A4, 0x03A5, - 0x03A6, 0x03A7, 0x03A8, 0x03A9, 0x03B1, 0x03B2, 0x03B3, 0x03B4, - 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, - 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3, 0x03C4, 0x03C5, - 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0x3105, 0x3106, 0x3107, 0x3108, - 0x3109, 0x310A, 0x310B, 0x310C, 0x310D, 0x310E, 0x310F, 0, -at 0xA0 - 0, 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, - 0x3117, 0x3118, 0x3119, 0x311A, 0x311B, 0x311C, 0x311D, 0x311E, - 0x311F, 0x3120, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, - 0x3127, 0x3128, 0x3129, 0x02D9, 0x02C9, 0x02CA, 0x02C7, 0x02CB, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane a4 -at 0x40 - 0x4E00, 0x4E59, 0x4E01, 0x4E03, 0x4E43, 0x4E5D, 0x4E86, 0x4E8C, - 0x4EBA, 0x513F, 0x5165, 0x516B, 0x51E0, 0x5200, 0x5201, 0x529B, - 0x5315, 0x5341, 0x535C, 0x53C8, 0x4E09, 0x4E0B, 0x4E08, 0x4E0A, - 0x4E2B, 0x4E38, 0x51E1, 0x4E45, 0x4E48, 0x4E5F, 0x4E5E, 0x4E8E, - 0x4EA1, 0x5140, 0x5203, 0x52FA, 0x5343, 0x53C9, 0x53E3, 0x571F, - 0x58EB, 0x5915, 0x5927, 0x5973, 0x5B50, 0x5B51, 0x5B53, 0x5BF8, - 0x5C0F, 0x5C22, 0x5C38, 0x5C71, 0x5DDD, 0x5DE5, 0x5DF1, 0x5DF2, - 0x5DF3, 0x5DFE, 0x5E72, 0x5EFE, 0x5F0B, 0x5F13, 0x624D, 0, -at 0xA0 - 0, 0x4E11, 0x4E10, 0x4E0D, 0x4E2D, 0x4E30, 0x4E39, 0x4E4B, - 0x5C39, 0x4E88, 0x4E91, 0x4E95, 0x4E92, 0x4E94, 0x4EA2, 0x4EC1, - 0x4EC0, 0x4EC3, 0x4EC6, 0x4EC7, 0x4ECD, 0x4ECA, 0x4ECB, 0x4EC4, - 0x5143, 0x5141, 0x5167, 0x516D, 0x516E, 0x516C, 0x5197, 0x51F6, - 0x5206, 0x5207, 0x5208, 0x52FB, 0x52FE, 0x52FF, 0x5316, 0x5339, - 0x5348, 0x5347, 0x5345, 0x535E, 0x5384, 0x53CB, 0x53CA, 0x53CD, - 0x58EC, 0x5929, 0x592B, 0x592A, 0x592D, 0x5B54, 0x5C11, 0x5C24, - 0x5C3A, 0x5C6F, 0x5DF4, 0x5E7B, 0x5EFF, 0x5F14, 0x5F15, 0x5FC3, - 0x6208, 0x6236, 0x624B, 0x624E, 0x652F, 0x6587, 0x6597, 0x65A4, - 0x65B9, 0x65E5, 0x66F0, 0x6708, 0x6728, 0x6B20, 0x6B62, 0x6B79, - 0x6BCB, 0x6BD4, 0x6BDB, 0x6C0F, 0x6C34, 0x706B, 0x722A, 0x7236, - 0x723B, 0x7247, 0x7259, 0x725B, 0x72AC, 0x738B, 0x4E19, 0, -plane a5 -at 0x40 - 0x4E16, 0x4E15, 0x4E14, 0x4E18, 0x4E3B, 0x4E4D, 0x4E4F, 0x4E4E, - 0x4EE5, 0x4ED8, 0x4ED4, 0x4ED5, 0x4ED6, 0x4ED7, 0x4EE3, 0x4EE4, - 0x4ED9, 0x4EDE, 0x5145, 0x5144, 0x5189, 0x518A, 0x51AC, 0x51F9, - 0x51FA, 0x51F8, 0x520A, 0x52A0, 0x529F, 0x5305, 0x5306, 0x5317, - 0x531D, 0x4EDF, 0x534A, 0x5349, 0x5361, 0x5360, 0x536F, 0x536E, - 0x53BB, 0x53EF, 0x53E4, 0x53F3, 0x53EC, 0x53EE, 0x53E9, 0x53E8, - 0x53FC, 0x53F8, 0x53F5, 0x53EB, 0x53E6, 0x53EA, 0x53F2, 0x53F1, - 0x53F0, 0x53E5, 0x53ED, 0x53FB, 0x56DB, 0x56DA, 0x5916, 0, -at 0xA0 - 0, 0x592E, 0x5931, 0x5974, 0x5976, 0x5B55, 0x5B83, 0x5C3C, - 0x5DE8, 0x5DE7, 0x5DE6, 0x5E02, 0x5E03, 0x5E73, 0x5E7C, 0x5F01, - 0x5F18, 0x5F17, 0x5FC5, 0x620A, 0x6253, 0x6254, 0x6252, 0x6251, - 0x65A5, 0x65E6, 0x672E, 0x672C, 0x672A, 0x672B, 0x672D, 0x6B63, - 0x6BCD, 0x6C11, 0x6C10, 0x6C38, 0x6C41, 0x6C40, 0x6C3E, 0x72AF, - 0x7384, 0x7389, 0x74DC, 0x74E6, 0x7518, 0x751F, 0x7528, 0x7529, - 0x7530, 0x7531, 0x7532, 0x7533, 0x758B, 0x767D, 0x76AE, 0x76BF, - 0x76EE, 0x77DB, 0x77E2, 0x77F3, 0x793A, 0x79BE, 0x7A74, 0x7ACB, - 0x4E1E, 0x4E1F, 0x4E52, 0x4E53, 0x4E69, 0x4E99, 0x4EA4, 0x4EA6, - 0x4EA5, 0x4EFF, 0x4F09, 0x4F19, 0x4F0A, 0x4F15, 0x4F0D, 0x4F10, - 0x4F11, 0x4F0F, 0x4EF2, 0x4EF6, 0x4EFB, 0x4EF0, 0x4EF3, 0x4EFD, - 0x4F01, 0x4F0B, 0x5149, 0x5147, 0x5146, 0x5148, 0x5168, 0, -plane a6 -at 0x40 - 0x5171, 0x518D, 0x51B0, 0x5217, 0x5211, 0x5212, 0x520E, 0x5216, - 0x52A3, 0x5308, 0x5321, 0x5320, 0x5370, 0x5371, 0x5409, 0x540F, - 0x540C, 0x540A, 0x5410, 0x5401, 0x540B, 0x5404, 0x5411, 0x540D, - 0x5408, 0x5403, 0x540E, 0x5406, 0x5412, 0x56E0, 0x56DE, 0x56DD, - 0x5733, 0x5730, 0x5728, 0x572D, 0x572C, 0x572F, 0x5729, 0x5919, - 0x591A, 0x5937, 0x5938, 0x5984, 0x5978, 0x5983, 0x597D, 0x5979, - 0x5982, 0x5981, 0x5B57, 0x5B58, 0x5B87, 0x5B88, 0x5B85, 0x5B89, - 0x5BFA, 0x5C16, 0x5C79, 0x5DDE, 0x5E06, 0x5E76, 0x5E74, 0, -at 0xA0 - 0, 0x5F0F, 0x5F1B, 0x5FD9, 0x5FD6, 0x620E, 0x620C, 0x620D, - 0x6210, 0x6263, 0x625B, 0x6258, 0x6536, 0x65E9, 0x65E8, 0x65EC, - 0x65ED, 0x66F2, 0x66F3, 0x6709, 0x673D, 0x6734, 0x6731, 0x6735, - 0x6B21, 0x6B64, 0x6B7B, 0x6C16, 0x6C5D, 0x6C57, 0x6C59, 0x6C5F, - 0x6C60, 0x6C50, 0x6C55, 0x6C61, 0x6C5B, 0x6C4D, 0x6C4E, 0x7070, - 0x725F, 0x725D, 0x767E, 0x7AF9, 0x7C73, 0x7CF8, 0x7F36, 0x7F8A, - 0x7FBD, 0x8001, 0x8003, 0x800C, 0x8012, 0x8033, 0x807F, 0x8089, - 0x808B, 0x808C, 0x81E3, 0x81EA, 0x81F3, 0x81FC, 0x820C, 0x821B, - 0x821F, 0x826E, 0x8272, 0x827E, 0x866B, 0x8840, 0x884C, 0x8863, - 0x897F, 0x9621, 0x4E32, 0x4EA8, 0x4F4D, 0x4F4F, 0x4F47, 0x4F57, - 0x4F5E, 0x4F34, 0x4F5B, 0x4F55, 0x4F30, 0x4F50, 0x4F51, 0x4F3D, - 0x4F3A, 0x4F38, 0x4F43, 0x4F54, 0x4F3C, 0x4F46, 0x4F63, 0, -plane a7 -at 0x40 - 0x4F5C, 0x4F60, 0x4F2F, 0x4F4E, 0x4F36, 0x4F59, 0x4F5D, 0x4F48, - 0x4F5A, 0x514C, 0x514B, 0x514D, 0x5175, 0x51B6, 0x51B7, 0x5225, - 0x5224, 0x5229, 0x522A, 0x5228, 0x52AB, 0x52A9, 0x52AA, 0x52AC, - 0x5323, 0x5373, 0x5375, 0x541D, 0x542D, 0x541E, 0x543E, 0x5426, - 0x544E, 0x5427, 0x5446, 0x5443, 0x5433, 0x5448, 0x5442, 0x541B, - 0x5429, 0x544A, 0x5439, 0x543B, 0x5438, 0x542E, 0x5435, 0x5436, - 0x5420, 0x543C, 0x5440, 0x5431, 0x542B, 0x541F, 0x542C, 0x56EA, - 0x56F0, 0x56E4, 0x56EB, 0x574A, 0x5751, 0x5740, 0x574D, 0, -at 0xA0 - 0, 0x5747, 0x574E, 0x573E, 0x5750, 0x574F, 0x573B, 0x58EF, - 0x593E, 0x599D, 0x5992, 0x59A8, 0x599E, 0x59A3, 0x5999, 0x5996, - 0x598D, 0x59A4, 0x5993, 0x598A, 0x59A5, 0x5B5D, 0x5B5C, 0x5B5A, - 0x5B5B, 0x5B8C, 0x5B8B, 0x5B8F, 0x5C2C, 0x5C40, 0x5C41, 0x5C3F, - 0x5C3E, 0x5C90, 0x5C91, 0x5C94, 0x5C8C, 0x5DEB, 0x5E0C, 0x5E8F, - 0x5E87, 0x5E8A, 0x5EF7, 0x5F04, 0x5F1F, 0x5F64, 0x5F62, 0x5F77, - 0x5F79, 0x5FD8, 0x5FCC, 0x5FD7, 0x5FCD, 0x5FF1, 0x5FEB, 0x5FF8, - 0x5FEA, 0x6212, 0x6211, 0x6284, 0x6297, 0x6296, 0x6280, 0x6276, - 0x6289, 0x626D, 0x628A, 0x627C, 0x627E, 0x6279, 0x6273, 0x6292, - 0x626F, 0x6298, 0x626E, 0x6295, 0x6293, 0x6291, 0x6286, 0x6539, - 0x653B, 0x6538, 0x65F1, 0x66F4, 0x675F, 0x674E, 0x674F, 0x6750, - 0x6751, 0x675C, 0x6756, 0x675E, 0x6749, 0x6746, 0x6760, 0, -plane a8 -at 0x40 - 0x6753, 0x6757, 0x6B65, 0x6BCF, 0x6C42, 0x6C5E, 0x6C99, 0x6C81, - 0x6C88, 0x6C89, 0x6C85, 0x6C9B, 0x6C6A, 0x6C7A, 0x6C90, 0x6C70, - 0x6C8C, 0x6C68, 0x6C96, 0x6C92, 0x6C7D, 0x6C83, 0x6C72, 0x6C7E, - 0x6C74, 0x6C86, 0x6C76, 0x6C8D, 0x6C94, 0x6C98, 0x6C82, 0x7076, - 0x707C, 0x707D, 0x7078, 0x7262, 0x7261, 0x7260, 0x72C4, 0x72C2, - 0x7396, 0x752C, 0x752B, 0x7537, 0x7538, 0x7682, 0x76EF, 0x77E3, - 0x79C1, 0x79C0, 0x79BF, 0x7A76, 0x7CFB, 0x7F55, 0x8096, 0x8093, - 0x809D, 0x8098, 0x809B, 0x809A, 0x80B2, 0x826F, 0x8292, 0, -at 0xA0 - 0, 0x828B, 0x828D, 0x898B, 0x89D2, 0x8A00, 0x8C37, 0x8C46, - 0x8C55, 0x8C9D, 0x8D64, 0x8D70, 0x8DB3, 0x8EAB, 0x8ECA, 0x8F9B, - 0x8FB0, 0x8FC2, 0x8FC6, 0x8FC5, 0x8FC4, 0x5DE1, 0x9091, 0x90A2, - 0x90AA, 0x90A6, 0x90A3, 0x9149, 0x91C6, 0x91CC, 0x9632, 0x962E, - 0x9631, 0x962A, 0x962C, 0x4E26, 0x4E56, 0x4E73, 0x4E8B, 0x4E9B, - 0x4E9E, 0x4EAB, 0x4EAC, 0x4F6F, 0x4F9D, 0x4F8D, 0x4F73, 0x4F7F, - 0x4F6C, 0x4F9B, 0x4F8B, 0x4F86, 0x4F83, 0x4F70, 0x4F75, 0x4F88, - 0x4F69, 0x4F7B, 0x4F96, 0x4F7E, 0x4F8F, 0x4F91, 0x4F7A, 0x5154, - 0x5152, 0x5155, 0x5169, 0x5177, 0x5176, 0x5178, 0x51BD, 0x51FD, - 0x523B, 0x5238, 0x5237, 0x523A, 0x5230, 0x522E, 0x5236, 0x5241, - 0x52BE, 0x52BB, 0x5352, 0x5354, 0x5353, 0x5351, 0x5366, 0x5377, - 0x5378, 0x5379, 0x53D6, 0x53D4, 0x53D7, 0x5473, 0x5475, 0, -plane a9 -at 0x40 - 0x5496, 0x5478, 0x5495, 0x5480, 0x547B, 0x5477, 0x5484, 0x5492, - 0x5486, 0x547C, 0x5490, 0x5471, 0x5476, 0x548C, 0x549A, 0x5462, - 0x5468, 0x548B, 0x547D, 0x548E, 0x56FA, 0x5783, 0x5777, 0x576A, - 0x5769, 0x5761, 0x5766, 0x5764, 0x577C, 0x591C, 0x5949, 0x5947, - 0x5948, 0x5944, 0x5954, 0x59BE, 0x59BB, 0x59D4, 0x59B9, 0x59AE, - 0x59D1, 0x59C6, 0x59D0, 0x59CD, 0x59CB, 0x59D3, 0x59CA, 0x59AF, - 0x59B3, 0x59D2, 0x59C5, 0x5B5F, 0x5B64, 0x5B63, 0x5B97, 0x5B9A, - 0x5B98, 0x5B9C, 0x5B99, 0x5B9B, 0x5C1A, 0x5C48, 0x5C45, 0, -at 0xA0 - 0, 0x5C46, 0x5CB7, 0x5CA1, 0x5CB8, 0x5CA9, 0x5CAB, 0x5CB1, - 0x5CB3, 0x5E18, 0x5E1A, 0x5E16, 0x5E15, 0x5E1B, 0x5E11, 0x5E78, - 0x5E9A, 0x5E97, 0x5E9C, 0x5E95, 0x5E96, 0x5EF6, 0x5F26, 0x5F27, - 0x5F29, 0x5F80, 0x5F81, 0x5F7F, 0x5F7C, 0x5FDD, 0x5FE0, 0x5FFD, - 0x5FF5, 0x5FFF, 0x600F, 0x6014, 0x602F, 0x6035, 0x6016, 0x602A, - 0x6015, 0x6021, 0x6027, 0x6029, 0x602B, 0x601B, 0x6216, 0x6215, - 0x623F, 0x623E, 0x6240, 0x627F, 0x62C9, 0x62CC, 0x62C4, 0x62BF, - 0x62C2, 0x62B9, 0x62D2, 0x62DB, 0x62AB, 0x62D3, 0x62D4, 0x62CB, - 0x62C8, 0x62A8, 0x62BD, 0x62BC, 0x62D0, 0x62D9, 0x62C7, 0x62CD, - 0x62B5, 0x62DA, 0x62B1, 0x62D8, 0x62D6, 0x62D7, 0x62C6, 0x62AC, - 0x62CE, 0x653E, 0x65A7, 0x65BC, 0x65FA, 0x6614, 0x6613, 0x660C, - 0x6606, 0x6602, 0x660E, 0x6600, 0x660F, 0x6615, 0x660A, 0, -plane aa -at 0x40 - 0x6607, 0x670D, 0x670B, 0x676D, 0x678B, 0x6795, 0x6771, 0x679C, - 0x6773, 0x6777, 0x6787, 0x679D, 0x6797, 0x676F, 0x6770, 0x677F, - 0x6789, 0x677E, 0x6790, 0x6775, 0x679A, 0x6793, 0x677C, 0x676A, - 0x6772, 0x6B23, 0x6B66, 0x6B67, 0x6B7F, 0x6C13, 0x6C1B, 0x6CE3, - 0x6CE8, 0x6CF3, 0x6CB1, 0x6CCC, 0x6CE5, 0x6CB3, 0x6CBD, 0x6CBE, - 0x6CBC, 0x6CE2, 0x6CAB, 0x6CD5, 0x6CD3, 0x6CB8, 0x6CC4, 0x6CB9, - 0x6CC1, 0x6CAE, 0x6CD7, 0x6CC5, 0x6CF1, 0x6CBF, 0x6CBB, 0x6CE1, - 0x6CDB, 0x6CCA, 0x6CAC, 0x6CEF, 0x6CDC, 0x6CD6, 0x6CE0, 0, -at 0xA0 - 0, 0x7095, 0x708E, 0x7092, 0x708A, 0x7099, 0x722C, 0x722D, - 0x7238, 0x7248, 0x7267, 0x7269, 0x72C0, 0x72CE, 0x72D9, 0x72D7, - 0x72D0, 0x73A9, 0x73A8, 0x739F, 0x73AB, 0x73A5, 0x753D, 0x759D, - 0x7599, 0x759A, 0x7684, 0x76C2, 0x76F2, 0x76F4, 0x77E5, 0x77FD, - 0x793E, 0x7940, 0x7941, 0x79C9, 0x79C8, 0x7A7A, 0x7A79, 0x7AFA, - 0x7CFE, 0x7F54, 0x7F8C, 0x7F8B, 0x8005, 0x80BA, 0x80A5, 0x80A2, - 0x80B1, 0x80A1, 0x80AB, 0x80A9, 0x80B4, 0x80AA, 0x80AF, 0x81E5, - 0x81FE, 0x820D, 0x82B3, 0x829D, 0x8299, 0x82AD, 0x82BD, 0x829F, - 0x82B9, 0x82B1, 0x82AC, 0x82A5, 0x82AF, 0x82B8, 0x82A3, 0x82B0, - 0x82BE, 0x82B7, 0x864E, 0x8671, 0x521D, 0x8868, 0x8ECB, 0x8FCE, - 0x8FD4, 0x8FD1, 0x90B5, 0x90B8, 0x90B1, 0x90B6, 0x91C7, 0x91D1, - 0x9577, 0x9580, 0x961C, 0x9640, 0x963F, 0x963B, 0x9644, 0, -plane ab -at 0x40 - 0x9642, 0x96B9, 0x96E8, 0x9752, 0x975E, 0x4E9F, 0x4EAD, 0x4EAE, - 0x4FE1, 0x4FB5, 0x4FAF, 0x4FBF, 0x4FE0, 0x4FD1, 0x4FCF, 0x4FDD, - 0x4FC3, 0x4FB6, 0x4FD8, 0x4FDF, 0x4FCA, 0x4FD7, 0x4FAE, 0x4FD0, - 0x4FC4, 0x4FC2, 0x4FDA, 0x4FCE, 0x4FDE, 0x4FB7, 0x5157, 0x5192, - 0x5191, 0x51A0, 0x524E, 0x5243, 0x524A, 0x524D, 0x524C, 0x524B, - 0x5247, 0x52C7, 0x52C9, 0x52C3, 0x52C1, 0x530D, 0x5357, 0x537B, - 0x539A, 0x53DB, 0x54AC, 0x54C0, 0x54A8, 0x54CE, 0x54C9, 0x54B8, - 0x54A6, 0x54B3, 0x54C7, 0x54C2, 0x54BD, 0x54AA, 0x54C1, 0, -at 0xA0 - 0, 0x54C4, 0x54C8, 0x54AF, 0x54AB, 0x54B1, 0x54BB, 0x54A9, - 0x54A7, 0x54BF, 0x56FF, 0x5782, 0x578B, 0x57A0, 0x57A3, 0x57A2, - 0x57CE, 0x57AE, 0x5793, 0x5955, 0x5951, 0x594F, 0x594E, 0x5950, - 0x59DC, 0x59D8, 0x59FF, 0x59E3, 0x59E8, 0x5A03, 0x59E5, 0x59EA, - 0x59DA, 0x59E6, 0x5A01, 0x59FB, 0x5B69, 0x5BA3, 0x5BA6, 0x5BA4, - 0x5BA2, 0x5BA5, 0x5C01, 0x5C4E, 0x5C4F, 0x5C4D, 0x5C4B, 0x5CD9, - 0x5CD2, 0x5DF7, 0x5E1D, 0x5E25, 0x5E1F, 0x5E7D, 0x5EA0, 0x5EA6, - 0x5EFA, 0x5F08, 0x5F2D, 0x5F65, 0x5F88, 0x5F85, 0x5F8A, 0x5F8B, - 0x5F87, 0x5F8C, 0x5F89, 0x6012, 0x601D, 0x6020, 0x6025, 0x600E, - 0x6028, 0x604D, 0x6070, 0x6068, 0x6062, 0x6046, 0x6043, 0x606C, - 0x606B, 0x606A, 0x6064, 0x6241, 0x62DC, 0x6316, 0x6309, 0x62FC, - 0x62ED, 0x6301, 0x62EE, 0x62FD, 0x6307, 0x62F1, 0x62F7, 0, -plane ac -at 0x40 - 0x62EF, 0x62EC, 0x62FE, 0x62F4, 0x6311, 0x6302, 0x653F, 0x6545, - 0x65AB, 0x65BD, 0x65E2, 0x6625, 0x662D, 0x6620, 0x6627, 0x662F, - 0x661F, 0x6628, 0x6631, 0x6624, 0x66F7, 0x67FF, 0x67D3, 0x67F1, - 0x67D4, 0x67D0, 0x67EC, 0x67B6, 0x67AF, 0x67F5, 0x67E9, 0x67EF, - 0x67C4, 0x67D1, 0x67B4, 0x67DA, 0x67E5, 0x67B8, 0x67CF, 0x67DE, - 0x67F3, 0x67B0, 0x67D9, 0x67E2, 0x67DD, 0x67D2, 0x6B6A, 0x6B83, - 0x6B86, 0x6BB5, 0x6BD2, 0x6BD7, 0x6C1F, 0x6CC9, 0x6D0B, 0x6D32, - 0x6D2A, 0x6D41, 0x6D25, 0x6D0C, 0x6D31, 0x6D1E, 0x6D17, 0, -at 0xA0 - 0, 0x6D3B, 0x6D3D, 0x6D3E, 0x6D36, 0x6D1B, 0x6CF5, 0x6D39, - 0x6D27, 0x6D38, 0x6D29, 0x6D2E, 0x6D35, 0x6D0E, 0x6D2B, 0x70AB, - 0x70BA, 0x70B3, 0x70AC, 0x70AF, 0x70AD, 0x70B8, 0x70AE, 0x70A4, - 0x7230, 0x7272, 0x726F, 0x7274, 0x72E9, 0x72E0, 0x72E1, 0x73B7, - 0x73CA, 0x73BB, 0x73B2, 0x73CD, 0x73C0, 0x73B3, 0x751A, 0x752D, - 0x754F, 0x754C, 0x754E, 0x754B, 0x75AB, 0x75A4, 0x75A5, 0x75A2, - 0x75A3, 0x7678, 0x7686, 0x7687, 0x7688, 0x76C8, 0x76C6, 0x76C3, - 0x76C5, 0x7701, 0x76F9, 0x76F8, 0x7709, 0x770B, 0x76FE, 0x76FC, - 0x7707, 0x77DC, 0x7802, 0x7814, 0x780C, 0x780D, 0x7946, 0x7949, - 0x7948, 0x7947, 0x79B9, 0x79BA, 0x79D1, 0x79D2, 0x79CB, 0x7A7F, - 0x7A81, 0x7AFF, 0x7AFD, 0x7C7D, 0x7D02, 0x7D05, 0x7D00, 0x7D09, - 0x7D07, 0x7D04, 0x7D06, 0x7F38, 0x7F8E, 0x7FBF, 0x8004, 0, -plane ad -at 0x40 - 0x8010, 0x800D, 0x8011, 0x8036, 0x80D6, 0x80E5, 0x80DA, 0x80C3, - 0x80C4, 0x80CC, 0x80E1, 0x80DB, 0x80CE, 0x80DE, 0x80E4, 0x80DD, - 0x81F4, 0x8222, 0x82E7, 0x8303, 0x8305, 0x82E3, 0x82DB, 0x82E6, - 0x8304, 0x82E5, 0x8302, 0x8309, 0x82D2, 0x82D7, 0x82F1, 0x8301, - 0x82DC, 0x82D4, 0x82D1, 0x82DE, 0x82D3, 0x82DF, 0x82EF, 0x8306, - 0x8650, 0x8679, 0x867B, 0x867A, 0x884D, 0x886B, 0x8981, 0x89D4, - 0x8A08, 0x8A02, 0x8A03, 0x8C9E, 0x8CA0, 0x8D74, 0x8D73, 0x8DB4, - 0x8ECD, 0x8ECC, 0x8FF0, 0x8FE6, 0x8FE2, 0x8FEA, 0x8FE5, 0, -at 0xA0 - 0, 0x8FED, 0x8FEB, 0x8FE4, 0x8FE8, 0x90CA, 0x90CE, 0x90C1, - 0x90C3, 0x914B, 0x914A, 0x91CD, 0x9582, 0x9650, 0x964B, 0x964C, - 0x964D, 0x9762, 0x9769, 0x97CB, 0x97ED, 0x97F3, 0x9801, 0x98A8, - 0x98DB, 0x98DF, 0x9996, 0x9999, 0x4E58, 0x4EB3, 0x500C, 0x500D, - 0x5023, 0x4FEF, 0x5026, 0x5025, 0x4FF8, 0x5029, 0x5016, 0x5006, - 0x503C, 0x501F, 0x501A, 0x5012, 0x5011, 0x4FFA, 0x5000, 0x5014, - 0x5028, 0x4FF1, 0x5021, 0x500B, 0x5019, 0x5018, 0x4FF3, 0x4FEE, - 0x502D, 0x502A, 0x4FFE, 0x502B, 0x5009, 0x517C, 0x51A4, 0x51A5, - 0x51A2, 0x51CD, 0x51CC, 0x51C6, 0x51CB, 0x5256, 0x525C, 0x5254, - 0x525B, 0x525D, 0x532A, 0x537F, 0x539F, 0x539D, 0x53DF, 0x54E8, - 0x5510, 0x5501, 0x5537, 0x54FC, 0x54E5, 0x54F2, 0x5506, 0x54FA, - 0x5514, 0x54E9, 0x54ED, 0x54E1, 0x5509, 0x54EE, 0x54EA, 0, -plane ae -at 0x40 - 0x54E6, 0x5527, 0x5507, 0x54FD, 0x550F, 0x5703, 0x5704, 0x57C2, - 0x57D4, 0x57CB, 0x57C3, 0x5809, 0x590F, 0x5957, 0x5958, 0x595A, - 0x5A11, 0x5A18, 0x5A1C, 0x5A1F, 0x5A1B, 0x5A13, 0x59EC, 0x5A20, - 0x5A23, 0x5A29, 0x5A25, 0x5A0C, 0x5A09, 0x5B6B, 0x5C58, 0x5BB0, - 0x5BB3, 0x5BB6, 0x5BB4, 0x5BAE, 0x5BB5, 0x5BB9, 0x5BB8, 0x5C04, - 0x5C51, 0x5C55, 0x5C50, 0x5CED, 0x5CFD, 0x5CFB, 0x5CEA, 0x5CE8, - 0x5CF0, 0x5CF6, 0x5D01, 0x5CF4, 0x5DEE, 0x5E2D, 0x5E2B, 0x5EAB, - 0x5EAD, 0x5EA7, 0x5F31, 0x5F92, 0x5F91, 0x5F90, 0x6059, 0, -at 0xA0 - 0, 0x6063, 0x6065, 0x6050, 0x6055, 0x606D, 0x6069, 0x606F, - 0x6084, 0x609F, 0x609A, 0x608D, 0x6094, 0x608C, 0x6085, 0x6096, - 0x6247, 0x62F3, 0x6308, 0x62FF, 0x634E, 0x633E, 0x632F, 0x6355, - 0x6342, 0x6346, 0x634F, 0x6349, 0x633A, 0x6350, 0x633D, 0x632A, - 0x632B, 0x6328, 0x634D, 0x634C, 0x6548, 0x6549, 0x6599, 0x65C1, - 0x65C5, 0x6642, 0x6649, 0x664F, 0x6643, 0x6652, 0x664C, 0x6645, - 0x6641, 0x66F8, 0x6714, 0x6715, 0x6717, 0x6821, 0x6838, 0x6848, - 0x6846, 0x6853, 0x6839, 0x6842, 0x6854, 0x6829, 0x68B3, 0x6817, - 0x684C, 0x6851, 0x683D, 0x67F4, 0x6850, 0x6840, 0x683C, 0x6843, - 0x682A, 0x6845, 0x6813, 0x6818, 0x6841, 0x6B8A, 0x6B89, 0x6BB7, - 0x6C23, 0x6C27, 0x6C28, 0x6C26, 0x6C24, 0x6CF0, 0x6D6A, 0x6D95, - 0x6D88, 0x6D87, 0x6D66, 0x6D78, 0x6D77, 0x6D59, 0x6D93, 0, -plane af -at 0x40 - 0x6D6C, 0x6D89, 0x6D6E, 0x6D5A, 0x6D74, 0x6D69, 0x6D8C, 0x6D8A, - 0x6D79, 0x6D85, 0x6D65, 0x6D94, 0x70CA, 0x70D8, 0x70E4, 0x70D9, - 0x70C8, 0x70CF, 0x7239, 0x7279, 0x72FC, 0x72F9, 0x72FD, 0x72F8, - 0x72F7, 0x7386, 0x73ED, 0x7409, 0x73EE, 0x73E0, 0x73EA, 0x73DE, - 0x7554, 0x755D, 0x755C, 0x755A, 0x7559, 0x75BE, 0x75C5, 0x75C7, - 0x75B2, 0x75B3, 0x75BD, 0x75BC, 0x75B9, 0x75C2, 0x75B8, 0x768B, - 0x76B0, 0x76CA, 0x76CD, 0x76CE, 0x7729, 0x771F, 0x7720, 0x7728, - 0x77E9, 0x7830, 0x7827, 0x7838, 0x781D, 0x7834, 0x7837, 0, -at 0xA0 - 0, 0x7825, 0x782D, 0x7820, 0x781F, 0x7832, 0x7955, 0x7950, - 0x7960, 0x795F, 0x7956, 0x795E, 0x795D, 0x7957, 0x795A, 0x79E4, - 0x79E3, 0x79E7, 0x79DF, 0x79E6, 0x79E9, 0x79D8, 0x7A84, 0x7A88, - 0x7AD9, 0x7B06, 0x7B11, 0x7C89, 0x7D21, 0x7D17, 0x7D0B, 0x7D0A, - 0x7D20, 0x7D22, 0x7D14, 0x7D10, 0x7D15, 0x7D1A, 0x7D1C, 0x7D0D, - 0x7D19, 0x7D1B, 0x7F3A, 0x7F5F, 0x7F94, 0x7FC5, 0x7FC1, 0x8006, - 0x8018, 0x8015, 0x8019, 0x8017, 0x803D, 0x803F, 0x80F1, 0x8102, - 0x80F0, 0x8105, 0x80ED, 0x80F4, 0x8106, 0x80F8, 0x80F3, 0x8108, - 0x80FD, 0x810A, 0x80FC, 0x80EF, 0x81ED, 0x81EC, 0x8200, 0x8210, - 0x822A, 0x822B, 0x8228, 0x822C, 0x82BB, 0x832B, 0x8352, 0x8354, - 0x834A, 0x8338, 0x8350, 0x8349, 0x8335, 0x8334, 0x834F, 0x8332, - 0x8339, 0x8336, 0x8317, 0x8340, 0x8331, 0x8328, 0x8343, 0, -plane b0 -at 0x40 - 0x8654, 0x868A, 0x86AA, 0x8693, 0x86A4, 0x86A9, 0x868C, 0x86A3, - 0x869C, 0x8870, 0x8877, 0x8881, 0x8882, 0x887D, 0x8879, 0x8A18, - 0x8A10, 0x8A0E, 0x8A0C, 0x8A15, 0x8A0A, 0x8A17, 0x8A13, 0x8A16, - 0x8A0F, 0x8A11, 0x8C48, 0x8C7A, 0x8C79, 0x8CA1, 0x8CA2, 0x8D77, - 0x8EAC, 0x8ED2, 0x8ED4, 0x8ECF, 0x8FB1, 0x9001, 0x9006, 0x8FF7, - 0x9000, 0x8FFA, 0x8FF4, 0x9003, 0x8FFD, 0x9005, 0x8FF8, 0x9095, - 0x90E1, 0x90DD, 0x90E2, 0x9152, 0x914D, 0x914C, 0x91D8, 0x91DD, - 0x91D7, 0x91DC, 0x91D9, 0x9583, 0x9662, 0x9663, 0x9661, 0, -at 0xA0 - 0, 0x965B, 0x965D, 0x9664, 0x9658, 0x965E, 0x96BB, 0x98E2, - 0x99AC, 0x9AA8, 0x9AD8, 0x9B25, 0x9B32, 0x9B3C, 0x4E7E, 0x507A, - 0x507D, 0x505C, 0x5047, 0x5043, 0x504C, 0x505A, 0x5049, 0x5065, - 0x5076, 0x504E, 0x5055, 0x5075, 0x5074, 0x5077, 0x504F, 0x500F, - 0x506F, 0x506D, 0x515C, 0x5195, 0x51F0, 0x526A, 0x526F, 0x52D2, - 0x52D9, 0x52D8, 0x52D5, 0x5310, 0x530F, 0x5319, 0x533F, 0x5340, - 0x533E, 0x53C3, 0x66FC, 0x5546, 0x556A, 0x5566, 0x5544, 0x555E, - 0x5561, 0x5543, 0x554A, 0x5531, 0x5556, 0x554F, 0x5555, 0x552F, - 0x5564, 0x5538, 0x552E, 0x555C, 0x552C, 0x5563, 0x5533, 0x5541, - 0x5557, 0x5708, 0x570B, 0x5709, 0x57DF, 0x5805, 0x580A, 0x5806, - 0x57E0, 0x57E4, 0x57FA, 0x5802, 0x5835, 0x57F7, 0x57F9, 0x5920, - 0x5962, 0x5A36, 0x5A41, 0x5A49, 0x5A66, 0x5A6A, 0x5A40, 0, -plane b1 -at 0x40 - 0x5A3C, 0x5A62, 0x5A5A, 0x5A46, 0x5A4A, 0x5B70, 0x5BC7, 0x5BC5, - 0x5BC4, 0x5BC2, 0x5BBF, 0x5BC6, 0x5C09, 0x5C08, 0x5C07, 0x5C60, - 0x5C5C, 0x5C5D, 0x5D07, 0x5D06, 0x5D0E, 0x5D1B, 0x5D16, 0x5D22, - 0x5D11, 0x5D29, 0x5D14, 0x5D19, 0x5D24, 0x5D27, 0x5D17, 0x5DE2, - 0x5E38, 0x5E36, 0x5E33, 0x5E37, 0x5EB7, 0x5EB8, 0x5EB6, 0x5EB5, - 0x5EBE, 0x5F35, 0x5F37, 0x5F57, 0x5F6C, 0x5F69, 0x5F6B, 0x5F97, - 0x5F99, 0x5F9E, 0x5F98, 0x5FA1, 0x5FA0, 0x5F9C, 0x607F, 0x60A3, - 0x6089, 0x60A0, 0x60A8, 0x60CB, 0x60B4, 0x60E6, 0x60BD, 0, -at 0xA0 - 0, 0x60C5, 0x60BB, 0x60B5, 0x60DC, 0x60BC, 0x60D8, 0x60D5, - 0x60C6, 0x60DF, 0x60B8, 0x60DA, 0x60C7, 0x621A, 0x621B, 0x6248, - 0x63A0, 0x63A7, 0x6372, 0x6396, 0x63A2, 0x63A5, 0x6377, 0x6367, - 0x6398, 0x63AA, 0x6371, 0x63A9, 0x6389, 0x6383, 0x639B, 0x636B, - 0x63A8, 0x6384, 0x6388, 0x6399, 0x63A1, 0x63AC, 0x6392, 0x638F, - 0x6380, 0x637B, 0x6369, 0x6368, 0x637A, 0x655D, 0x6556, 0x6551, - 0x6559, 0x6557, 0x555F, 0x654F, 0x6558, 0x6555, 0x6554, 0x659C, - 0x659B, 0x65AC, 0x65CF, 0x65CB, 0x65CC, 0x65CE, 0x665D, 0x665A, - 0x6664, 0x6668, 0x6666, 0x665E, 0x66F9, 0x52D7, 0x671B, 0x6881, - 0x68AF, 0x68A2, 0x6893, 0x68B5, 0x687F, 0x6876, 0x68B1, 0x68A7, - 0x6897, 0x68B0, 0x6883, 0x68C4, 0x68AD, 0x6886, 0x6885, 0x6894, - 0x689D, 0x68A8, 0x689F, 0x68A1, 0x6882, 0x6B32, 0x6BBA, 0, -plane b2 -at 0x40 - 0x6BEB, 0x6BEC, 0x6C2B, 0x6D8E, 0x6DBC, 0x6DF3, 0x6DD9, 0x6DB2, - 0x6DE1, 0x6DCC, 0x6DE4, 0x6DFB, 0x6DFA, 0x6E05, 0x6DC7, 0x6DCB, - 0x6DAF, 0x6DD1, 0x6DAE, 0x6DDE, 0x6DF9, 0x6DB8, 0x6DF7, 0x6DF5, - 0x6DC5, 0x6DD2, 0x6E1A, 0x6DB5, 0x6DDA, 0x6DEB, 0x6DD8, 0x6DEA, - 0x6DF1, 0x6DEE, 0x6DE8, 0x6DC6, 0x6DC4, 0x6DAA, 0x6DEC, 0x6DBF, - 0x6DE6, 0x70F9, 0x7109, 0x710A, 0x70FD, 0x70EF, 0x723D, 0x727D, - 0x7281, 0x731C, 0x731B, 0x7316, 0x7313, 0x7319, 0x7387, 0x7405, - 0x740A, 0x7403, 0x7406, 0x73FE, 0x740D, 0x74E0, 0x74F6, 0, -at 0xA0 - 0, 0x74F7, 0x751C, 0x7522, 0x7565, 0x7566, 0x7562, 0x7570, - 0x758F, 0x75D4, 0x75D5, 0x75B5, 0x75CA, 0x75CD, 0x768E, 0x76D4, - 0x76D2, 0x76DB, 0x7737, 0x773E, 0x773C, 0x7736, 0x7738, 0x773A, - 0x786B, 0x7843, 0x784E, 0x7965, 0x7968, 0x796D, 0x79FB, 0x7A92, - 0x7A95, 0x7B20, 0x7B28, 0x7B1B, 0x7B2C, 0x7B26, 0x7B19, 0x7B1E, - 0x7B2E, 0x7C92, 0x7C97, 0x7C95, 0x7D46, 0x7D43, 0x7D71, 0x7D2E, - 0x7D39, 0x7D3C, 0x7D40, 0x7D30, 0x7D33, 0x7D44, 0x7D2F, 0x7D42, - 0x7D32, 0x7D31, 0x7F3D, 0x7F9E, 0x7F9A, 0x7FCC, 0x7FCE, 0x7FD2, - 0x801C, 0x804A, 0x8046, 0x812F, 0x8116, 0x8123, 0x812B, 0x8129, - 0x8130, 0x8124, 0x8202, 0x8235, 0x8237, 0x8236, 0x8239, 0x838E, - 0x839E, 0x8398, 0x8378, 0x83A2, 0x8396, 0x83BD, 0x83AB, 0x8392, - 0x838A, 0x8393, 0x8389, 0x83A0, 0x8377, 0x837B, 0x837C, 0, -plane b3 -at 0x40 - 0x8386, 0x83A7, 0x8655, 0x5F6A, 0x86C7, 0x86C0, 0x86B6, 0x86C4, - 0x86B5, 0x86C6, 0x86CB, 0x86B1, 0x86AF, 0x86C9, 0x8853, 0x889E, - 0x8888, 0x88AB, 0x8892, 0x8896, 0x888D, 0x888B, 0x8993, 0x898F, - 0x8A2A, 0x8A1D, 0x8A23, 0x8A25, 0x8A31, 0x8A2D, 0x8A1F, 0x8A1B, - 0x8A22, 0x8C49, 0x8C5A, 0x8CA9, 0x8CAC, 0x8CAB, 0x8CA8, 0x8CAA, - 0x8CA7, 0x8D67, 0x8D66, 0x8DBE, 0x8DBA, 0x8EDB, 0x8EDF, 0x9019, - 0x900D, 0x901A, 0x9017, 0x9023, 0x901F, 0x901D, 0x9010, 0x9015, - 0x901E, 0x9020, 0x900F, 0x9022, 0x9016, 0x901B, 0x9014, 0, -at 0xA0 - 0, 0x90E8, 0x90ED, 0x90FD, 0x9157, 0x91CE, 0x91F5, 0x91E6, - 0x91E3, 0x91E7, 0x91ED, 0x91E9, 0x9589, 0x966A, 0x9675, 0x9673, - 0x9678, 0x9670, 0x9674, 0x9676, 0x9677, 0x966C, 0x96C0, 0x96EA, - 0x96E9, 0x7AE0, 0x7ADF, 0x9802, 0x9803, 0x9B5A, 0x9CE5, 0x9E75, - 0x9E7F, 0x9EA5, 0x9EBB, 0x50A2, 0x508D, 0x5085, 0x5099, 0x5091, - 0x5080, 0x5096, 0x5098, 0x509A, 0x6700, 0x51F1, 0x5272, 0x5274, - 0x5275, 0x5269, 0x52DE, 0x52DD, 0x52DB, 0x535A, 0x53A5, 0x557B, - 0x5580, 0x55A7, 0x557C, 0x558A, 0x559D, 0x5598, 0x5582, 0x559C, - 0x55AA, 0x5594, 0x5587, 0x558B, 0x5583, 0x55B3, 0x55AE, 0x559F, - 0x553E, 0x55B2, 0x559A, 0x55BB, 0x55AC, 0x55B1, 0x557E, 0x5589, - 0x55AB, 0x5599, 0x570D, 0x582F, 0x582A, 0x5834, 0x5824, 0x5830, - 0x5831, 0x5821, 0x581D, 0x5820, 0x58F9, 0x58FA, 0x5960, 0, -plane b4 -at 0x40 - 0x5A77, 0x5A9A, 0x5A7F, 0x5A92, 0x5A9B, 0x5AA7, 0x5B73, 0x5B71, - 0x5BD2, 0x5BCC, 0x5BD3, 0x5BD0, 0x5C0A, 0x5C0B, 0x5C31, 0x5D4C, - 0x5D50, 0x5D34, 0x5D47, 0x5DFD, 0x5E45, 0x5E3D, 0x5E40, 0x5E43, - 0x5E7E, 0x5ECA, 0x5EC1, 0x5EC2, 0x5EC4, 0x5F3C, 0x5F6D, 0x5FA9, - 0x5FAA, 0x5FA8, 0x60D1, 0x60E1, 0x60B2, 0x60B6, 0x60E0, 0x611C, - 0x6123, 0x60FA, 0x6115, 0x60F0, 0x60FB, 0x60F4, 0x6168, 0x60F1, - 0x610E, 0x60F6, 0x6109, 0x6100, 0x6112, 0x621F, 0x6249, 0x63A3, - 0x638C, 0x63CF, 0x63C0, 0x63E9, 0x63C9, 0x63C6, 0x63CD, 0, -at 0xA0 - 0, 0x63D2, 0x63E3, 0x63D0, 0x63E1, 0x63D6, 0x63ED, 0x63EE, - 0x6376, 0x63F4, 0x63EA, 0x63DB, 0x6452, 0x63DA, 0x63F9, 0x655E, - 0x6566, 0x6562, 0x6563, 0x6591, 0x6590, 0x65AF, 0x666E, 0x6670, - 0x6674, 0x6676, 0x666F, 0x6691, 0x667A, 0x667E, 0x6677, 0x66FE, - 0x66FF, 0x671F, 0x671D, 0x68FA, 0x68D5, 0x68E0, 0x68D8, 0x68D7, - 0x6905, 0x68DF, 0x68F5, 0x68EE, 0x68E7, 0x68F9, 0x68D2, 0x68F2, - 0x68E3, 0x68CB, 0x68CD, 0x690D, 0x6912, 0x690E, 0x68C9, 0x68DA, - 0x696E, 0x68FB, 0x6B3E, 0x6B3A, 0x6B3D, 0x6B98, 0x6B96, 0x6BBC, - 0x6BEF, 0x6C2E, 0x6C2F, 0x6C2C, 0x6E2F, 0x6E38, 0x6E54, 0x6E21, - 0x6E32, 0x6E67, 0x6E4A, 0x6E20, 0x6E25, 0x6E23, 0x6E1B, 0x6E5B, - 0x6E58, 0x6E24, 0x6E56, 0x6E6E, 0x6E2D, 0x6E26, 0x6E6F, 0x6E34, - 0x6E4D, 0x6E3A, 0x6E2C, 0x6E43, 0x6E1D, 0x6E3E, 0x6ECB, 0, -plane b5 -at 0x40 - 0x6E89, 0x6E19, 0x6E4E, 0x6E63, 0x6E44, 0x6E72, 0x6E69, 0x6E5F, - 0x7119, 0x711A, 0x7126, 0x7130, 0x7121, 0x7136, 0x716E, 0x711C, - 0x724C, 0x7284, 0x7280, 0x7336, 0x7325, 0x7334, 0x7329, 0x743A, - 0x742A, 0x7433, 0x7422, 0x7425, 0x7435, 0x7436, 0x7434, 0x742F, - 0x741B, 0x7426, 0x7428, 0x7525, 0x7526, 0x756B, 0x756A, 0x75E2, - 0x75DB, 0x75E3, 0x75D9, 0x75D8, 0x75DE, 0x75E0, 0x767B, 0x767C, - 0x7696, 0x7693, 0x76B4, 0x76DC, 0x774F, 0x77ED, 0x785D, 0x786C, - 0x786F, 0x7A0D, 0x7A08, 0x7A0B, 0x7A05, 0x7A00, 0x7A98, 0, -at 0xA0 - 0, 0x7A97, 0x7A96, 0x7AE5, 0x7AE3, 0x7B49, 0x7B56, 0x7B46, - 0x7B50, 0x7B52, 0x7B54, 0x7B4D, 0x7B4B, 0x7B4F, 0x7B51, 0x7C9F, - 0x7CA5, 0x7D5E, 0x7D50, 0x7D68, 0x7D55, 0x7D2B, 0x7D6E, 0x7D72, - 0x7D61, 0x7D66, 0x7D62, 0x7D70, 0x7D73, 0x5584, 0x7FD4, 0x7FD5, - 0x800B, 0x8052, 0x8085, 0x8155, 0x8154, 0x814B, 0x8151, 0x814E, - 0x8139, 0x8146, 0x813E, 0x814C, 0x8153, 0x8174, 0x8212, 0x821C, - 0x83E9, 0x8403, 0x83F8, 0x840D, 0x83E0, 0x83C5, 0x840B, 0x83C1, - 0x83EF, 0x83F1, 0x83F4, 0x8457, 0x840A, 0x83F0, 0x840C, 0x83CC, - 0x83FD, 0x83F2, 0x83CA, 0x8438, 0x840E, 0x8404, 0x83DC, 0x8407, - 0x83D4, 0x83DF, 0x865B, 0x86DF, 0x86D9, 0x86ED, 0x86D4, 0x86DB, - 0x86E4, 0x86D0, 0x86DE, 0x8857, 0x88C1, 0x88C2, 0x88B1, 0x8983, - 0x8996, 0x8A3B, 0x8A60, 0x8A55, 0x8A5E, 0x8A3C, 0x8A41, 0, -plane b6 -at 0x40 - 0x8A54, 0x8A5B, 0x8A50, 0x8A46, 0x8A34, 0x8A3A, 0x8A36, 0x8A56, - 0x8C61, 0x8C82, 0x8CAF, 0x8CBC, 0x8CB3, 0x8CBD, 0x8CC1, 0x8CBB, - 0x8CC0, 0x8CB4, 0x8CB7, 0x8CB6, 0x8CBF, 0x8CB8, 0x8D8A, 0x8D85, - 0x8D81, 0x8DCE, 0x8DDD, 0x8DCB, 0x8DDA, 0x8DD1, 0x8DCC, 0x8DDB, - 0x8DC6, 0x8EFB, 0x8EF8, 0x8EFC, 0x8F9C, 0x902E, 0x9035, 0x9031, - 0x9038, 0x9032, 0x9036, 0x9102, 0x90F5, 0x9109, 0x90FE, 0x9163, - 0x9165, 0x91CF, 0x9214, 0x9215, 0x9223, 0x9209, 0x921E, 0x920D, - 0x9210, 0x9207, 0x9211, 0x9594, 0x958F, 0x958B, 0x9591, 0, -at 0xA0 - 0, 0x9593, 0x9592, 0x958E, 0x968A, 0x968E, 0x968B, 0x967D, - 0x9685, 0x9686, 0x968D, 0x9672, 0x9684, 0x96C1, 0x96C5, 0x96C4, - 0x96C6, 0x96C7, 0x96EF, 0x96F2, 0x97CC, 0x9805, 0x9806, 0x9808, - 0x98E7, 0x98EA, 0x98EF, 0x98E9, 0x98F2, 0x98ED, 0x99AE, 0x99AD, - 0x9EC3, 0x9ECD, 0x9ED1, 0x4E82, 0x50AD, 0x50B5, 0x50B2, 0x50B3, - 0x50C5, 0x50BE, 0x50AC, 0x50B7, 0x50BB, 0x50AF, 0x50C7, 0x527F, - 0x5277, 0x527D, 0x52DF, 0x52E6, 0x52E4, 0x52E2, 0x52E3, 0x532F, - 0x55DF, 0x55E8, 0x55D3, 0x55E6, 0x55CE, 0x55DC, 0x55C7, 0x55D1, - 0x55E3, 0x55E4, 0x55EF, 0x55DA, 0x55E1, 0x55C5, 0x55C6, 0x55E5, - 0x55C9, 0x5712, 0x5713, 0x585E, 0x5851, 0x5858, 0x5857, 0x585A, - 0x5854, 0x586B, 0x584C, 0x586D, 0x584A, 0x5862, 0x5852, 0x584B, - 0x5967, 0x5AC1, 0x5AC9, 0x5ACC, 0x5ABE, 0x5ABD, 0x5ABC, 0, -plane b7 -at 0x40 - 0x5AB3, 0x5AC2, 0x5AB2, 0x5D69, 0x5D6F, 0x5E4C, 0x5E79, 0x5EC9, - 0x5EC8, 0x5F12, 0x5F59, 0x5FAC, 0x5FAE, 0x611A, 0x610F, 0x6148, - 0x611F, 0x60F3, 0x611B, 0x60F9, 0x6101, 0x6108, 0x614E, 0x614C, - 0x6144, 0x614D, 0x613E, 0x6134, 0x6127, 0x610D, 0x6106, 0x6137, - 0x6221, 0x6222, 0x6413, 0x643E, 0x641E, 0x642A, 0x642D, 0x643D, - 0x642C, 0x640F, 0x641C, 0x6414, 0x640D, 0x6436, 0x6416, 0x6417, - 0x6406, 0x656C, 0x659F, 0x65B0, 0x6697, 0x6689, 0x6687, 0x6688, - 0x6696, 0x6684, 0x6698, 0x668D, 0x6703, 0x6994, 0x696D, 0, -at 0xA0 - 0, 0x695A, 0x6977, 0x6960, 0x6954, 0x6975, 0x6930, 0x6982, - 0x694A, 0x6968, 0x696B, 0x695E, 0x6953, 0x6979, 0x6986, 0x695D, - 0x6963, 0x695B, 0x6B47, 0x6B72, 0x6BC0, 0x6BBF, 0x6BD3, 0x6BFD, - 0x6EA2, 0x6EAF, 0x6ED3, 0x6EB6, 0x6EC2, 0x6E90, 0x6E9D, 0x6EC7, - 0x6EC5, 0x6EA5, 0x6E98, 0x6EBC, 0x6EBA, 0x6EAB, 0x6ED1, 0x6E96, - 0x6E9C, 0x6EC4, 0x6ED4, 0x6EAA, 0x6EA7, 0x6EB4, 0x714E, 0x7159, - 0x7169, 0x7164, 0x7149, 0x7167, 0x715C, 0x716C, 0x7166, 0x714C, - 0x7165, 0x715E, 0x7146, 0x7168, 0x7156, 0x723A, 0x7252, 0x7337, - 0x7345, 0x733F, 0x733E, 0x746F, 0x745A, 0x7455, 0x745F, 0x745E, - 0x7441, 0x743F, 0x7459, 0x745B, 0x745C, 0x7576, 0x7578, 0x7600, - 0x75F0, 0x7601, 0x75F2, 0x75F1, 0x75FA, 0x75FF, 0x75F4, 0x75F3, - 0x76DE, 0x76DF, 0x775B, 0x776B, 0x7766, 0x775E, 0x7763, 0, -plane b8 -at 0x40 - 0x7779, 0x776A, 0x776C, 0x775C, 0x7765, 0x7768, 0x7762, 0x77EE, - 0x788E, 0x78B0, 0x7897, 0x7898, 0x788C, 0x7889, 0x787C, 0x7891, - 0x7893, 0x787F, 0x797A, 0x797F, 0x7981, 0x842C, 0x79BD, 0x7A1C, - 0x7A1A, 0x7A20, 0x7A14, 0x7A1F, 0x7A1E, 0x7A9F, 0x7AA0, 0x7B77, - 0x7BC0, 0x7B60, 0x7B6E, 0x7B67, 0x7CB1, 0x7CB3, 0x7CB5, 0x7D93, - 0x7D79, 0x7D91, 0x7D81, 0x7D8F, 0x7D5B, 0x7F6E, 0x7F69, 0x7F6A, - 0x7F72, 0x7FA9, 0x7FA8, 0x7FA4, 0x8056, 0x8058, 0x8086, 0x8084, - 0x8171, 0x8170, 0x8178, 0x8165, 0x816E, 0x8173, 0x816B, 0, -at 0xA0 - 0, 0x8179, 0x817A, 0x8166, 0x8205, 0x8247, 0x8482, 0x8477, - 0x843D, 0x8431, 0x8475, 0x8466, 0x846B, 0x8449, 0x846C, 0x845B, - 0x843C, 0x8435, 0x8461, 0x8463, 0x8469, 0x846D, 0x8446, 0x865E, - 0x865C, 0x865F, 0x86F9, 0x8713, 0x8708, 0x8707, 0x8700, 0x86FE, - 0x86FB, 0x8702, 0x8703, 0x8706, 0x870A, 0x8859, 0x88DF, 0x88D4, - 0x88D9, 0x88DC, 0x88D8, 0x88DD, 0x88E1, 0x88CA, 0x88D5, 0x88D2, - 0x899C, 0x89E3, 0x8A6B, 0x8A72, 0x8A73, 0x8A66, 0x8A69, 0x8A70, - 0x8A87, 0x8A7C, 0x8A63, 0x8AA0, 0x8A71, 0x8A85, 0x8A6D, 0x8A62, - 0x8A6E, 0x8A6C, 0x8A79, 0x8A7B, 0x8A3E, 0x8A68, 0x8C62, 0x8C8A, - 0x8C89, 0x8CCA, 0x8CC7, 0x8CC8, 0x8CC4, 0x8CB2, 0x8CC3, 0x8CC2, - 0x8CC5, 0x8DE1, 0x8DDF, 0x8DE8, 0x8DEF, 0x8DF3, 0x8DFA, 0x8DEA, - 0x8DE4, 0x8DE6, 0x8EB2, 0x8F03, 0x8F09, 0x8EFE, 0x8F0A, 0, -plane b9 -at 0x40 - 0x8F9F, 0x8FB2, 0x904B, 0x904A, 0x9053, 0x9042, 0x9054, 0x903C, - 0x9055, 0x9050, 0x9047, 0x904F, 0x904E, 0x904D, 0x9051, 0x903E, - 0x9041, 0x9112, 0x9117, 0x916C, 0x916A, 0x9169, 0x91C9, 0x9237, - 0x9257, 0x9238, 0x923D, 0x9240, 0x923E, 0x925B, 0x924B, 0x9264, - 0x9251, 0x9234, 0x9249, 0x924D, 0x9245, 0x9239, 0x923F, 0x925A, - 0x9598, 0x9698, 0x9694, 0x9695, 0x96CD, 0x96CB, 0x96C9, 0x96CA, - 0x96F7, 0x96FB, 0x96F9, 0x96F6, 0x9756, 0x9774, 0x9776, 0x9810, - 0x9811, 0x9813, 0x980A, 0x9812, 0x980C, 0x98FC, 0x98F4, 0, -at 0xA0 - 0, 0x98FD, 0x98FE, 0x99B3, 0x99B1, 0x99B4, 0x9AE1, 0x9CE9, - 0x9E82, 0x9F0E, 0x9F13, 0x9F20, 0x50E7, 0x50EE, 0x50E5, 0x50D6, - 0x50ED, 0x50DA, 0x50D5, 0x50CF, 0x50D1, 0x50F1, 0x50CE, 0x50E9, - 0x5162, 0x51F3, 0x5283, 0x5282, 0x5331, 0x53AD, 0x55FE, 0x5600, - 0x561B, 0x5617, 0x55FD, 0x5614, 0x5606, 0x5609, 0x560D, 0x560E, - 0x55F7, 0x5616, 0x561F, 0x5608, 0x5610, 0x55F6, 0x5718, 0x5716, - 0x5875, 0x587E, 0x5883, 0x5893, 0x588A, 0x5879, 0x5885, 0x587D, - 0x58FD, 0x5925, 0x5922, 0x5924, 0x596A, 0x5969, 0x5AE1, 0x5AE6, - 0x5AE9, 0x5AD7, 0x5AD6, 0x5AD8, 0x5AE3, 0x5B75, 0x5BDE, 0x5BE7, - 0x5BE1, 0x5BE5, 0x5BE6, 0x5BE8, 0x5BE2, 0x5BE4, 0x5BDF, 0x5C0D, - 0x5C62, 0x5D84, 0x5D87, 0x5E5B, 0x5E63, 0x5E55, 0x5E57, 0x5E54, - 0x5ED3, 0x5ED6, 0x5F0A, 0x5F46, 0x5F70, 0x5FB9, 0x6147, 0, -plane ba -at 0x40 - 0x613F, 0x614B, 0x6177, 0x6162, 0x6163, 0x615F, 0x615A, 0x6158, - 0x6175, 0x622A, 0x6487, 0x6458, 0x6454, 0x64A4, 0x6478, 0x645F, - 0x647A, 0x6451, 0x6467, 0x6434, 0x646D, 0x647B, 0x6572, 0x65A1, - 0x65D7, 0x65D6, 0x66A2, 0x66A8, 0x669D, 0x699C, 0x69A8, 0x6995, - 0x69C1, 0x69AE, 0x69D3, 0x69CB, 0x699B, 0x69B7, 0x69BB, 0x69AB, - 0x69B4, 0x69D0, 0x69CD, 0x69AD, 0x69CC, 0x69A6, 0x69C3, 0x69A3, - 0x6B49, 0x6B4C, 0x6C33, 0x6F33, 0x6F14, 0x6EFE, 0x6F13, 0x6EF4, - 0x6F29, 0x6F3E, 0x6F20, 0x6F2C, 0x6F0F, 0x6F02, 0x6F22, 0, -at 0xA0 - 0, 0x6EFF, 0x6EEF, 0x6F06, 0x6F31, 0x6F38, 0x6F32, 0x6F23, - 0x6F15, 0x6F2B, 0x6F2F, 0x6F88, 0x6F2A, 0x6EEC, 0x6F01, 0x6EF2, - 0x6ECC, 0x6EF7, 0x7194, 0x7199, 0x717D, 0x718A, 0x7184, 0x7192, - 0x723E, 0x7292, 0x7296, 0x7344, 0x7350, 0x7464, 0x7463, 0x746A, - 0x7470, 0x746D, 0x7504, 0x7591, 0x7627, 0x760D, 0x760B, 0x7609, - 0x7613, 0x76E1, 0x76E3, 0x7784, 0x777D, 0x777F, 0x7761, 0x78C1, - 0x789F, 0x78A7, 0x78B3, 0x78A9, 0x78A3, 0x798E, 0x798F, 0x798D, - 0x7A2E, 0x7A31, 0x7AAA, 0x7AA9, 0x7AED, 0x7AEF, 0x7BA1, 0x7B95, - 0x7B8B, 0x7B75, 0x7B97, 0x7B9D, 0x7B94, 0x7B8F, 0x7BB8, 0x7B87, - 0x7B84, 0x7CB9, 0x7CBD, 0x7CBE, 0x7DBB, 0x7DB0, 0x7D9C, 0x7DBD, - 0x7DBE, 0x7DA0, 0x7DCA, 0x7DB4, 0x7DB2, 0x7DB1, 0x7DBA, 0x7DA2, - 0x7DBF, 0x7DB5, 0x7DB8, 0x7DAD, 0x7DD2, 0x7DC7, 0x7DAC, 0, -plane bb -at 0x40 - 0x7F70, 0x7FE0, 0x7FE1, 0x7FDF, 0x805E, 0x805A, 0x8087, 0x8150, - 0x8180, 0x818F, 0x8188, 0x818A, 0x817F, 0x8182, 0x81E7, 0x81FA, - 0x8207, 0x8214, 0x821E, 0x824B, 0x84C9, 0x84BF, 0x84C6, 0x84C4, - 0x8499, 0x849E, 0x84B2, 0x849C, 0x84CB, 0x84B8, 0x84C0, 0x84D3, - 0x8490, 0x84BC, 0x84D1, 0x84CA, 0x873F, 0x871C, 0x873B, 0x8722, - 0x8725, 0x8734, 0x8718, 0x8755, 0x8737, 0x8729, 0x88F3, 0x8902, - 0x88F4, 0x88F9, 0x88F8, 0x88FD, 0x88E8, 0x891A, 0x88EF, 0x8AA6, - 0x8A8C, 0x8A9E, 0x8AA3, 0x8A8D, 0x8AA1, 0x8A93, 0x8AA4, 0, -at 0xA0 - 0, 0x8AAA, 0x8AA5, 0x8AA8, 0x8A98, 0x8A91, 0x8A9A, 0x8AA7, - 0x8C6A, 0x8C8D, 0x8C8C, 0x8CD3, 0x8CD1, 0x8CD2, 0x8D6B, 0x8D99, - 0x8D95, 0x8DFC, 0x8F14, 0x8F12, 0x8F15, 0x8F13, 0x8FA3, 0x9060, - 0x9058, 0x905C, 0x9063, 0x9059, 0x905E, 0x9062, 0x905D, 0x905B, - 0x9119, 0x9118, 0x911E, 0x9175, 0x9178, 0x9177, 0x9174, 0x9278, - 0x9280, 0x9285, 0x9298, 0x9296, 0x927B, 0x9293, 0x929C, 0x92A8, - 0x927C, 0x9291, 0x95A1, 0x95A8, 0x95A9, 0x95A3, 0x95A5, 0x95A4, - 0x9699, 0x969C, 0x969B, 0x96CC, 0x96D2, 0x9700, 0x977C, 0x9785, - 0x97F6, 0x9817, 0x9818, 0x98AF, 0x98B1, 0x9903, 0x9905, 0x990C, - 0x9909, 0x99C1, 0x9AAF, 0x9AB0, 0x9AE6, 0x9B41, 0x9B42, 0x9CF4, - 0x9CF6, 0x9CF3, 0x9EBC, 0x9F3B, 0x9F4A, 0x5104, 0x5100, 0x50FB, - 0x50F5, 0x50F9, 0x5102, 0x5108, 0x5109, 0x5105, 0x51DC, 0, -plane bc -at 0x40 - 0x5287, 0x5288, 0x5289, 0x528D, 0x528A, 0x52F0, 0x53B2, 0x562E, - 0x563B, 0x5639, 0x5632, 0x563F, 0x5634, 0x5629, 0x5653, 0x564E, - 0x5657, 0x5674, 0x5636, 0x562F, 0x5630, 0x5880, 0x589F, 0x589E, - 0x58B3, 0x589C, 0x58AE, 0x58A9, 0x58A6, 0x596D, 0x5B09, 0x5AFB, - 0x5B0B, 0x5AF5, 0x5B0C, 0x5B08, 0x5BEE, 0x5BEC, 0x5BE9, 0x5BEB, - 0x5C64, 0x5C65, 0x5D9D, 0x5D94, 0x5E62, 0x5E5F, 0x5E61, 0x5EE2, - 0x5EDA, 0x5EDF, 0x5EDD, 0x5EE3, 0x5EE0, 0x5F48, 0x5F71, 0x5FB7, - 0x5FB5, 0x6176, 0x6167, 0x616E, 0x615D, 0x6155, 0x6182, 0, -at 0xA0 - 0, 0x617C, 0x6170, 0x616B, 0x617E, 0x61A7, 0x6190, 0x61AB, - 0x618E, 0x61AC, 0x619A, 0x61A4, 0x6194, 0x61AE, 0x622E, 0x6469, - 0x646F, 0x6479, 0x649E, 0x64B2, 0x6488, 0x6490, 0x64B0, 0x64A5, - 0x6493, 0x6495, 0x64A9, 0x6492, 0x64AE, 0x64AD, 0x64AB, 0x649A, - 0x64AC, 0x6499, 0x64A2, 0x64B3, 0x6575, 0x6577, 0x6578, 0x66AE, - 0x66AB, 0x66B4, 0x66B1, 0x6A23, 0x6A1F, 0x69E8, 0x6A01, 0x6A1E, - 0x6A19, 0x69FD, 0x6A21, 0x6A13, 0x6A0A, 0x69F3, 0x6A02, 0x6A05, - 0x69ED, 0x6A11, 0x6B50, 0x6B4E, 0x6BA4, 0x6BC5, 0x6BC6, 0x6F3F, - 0x6F7C, 0x6F84, 0x6F51, 0x6F66, 0x6F54, 0x6F86, 0x6F6D, 0x6F5B, - 0x6F78, 0x6F6E, 0x6F8E, 0x6F7A, 0x6F70, 0x6F64, 0x6F97, 0x6F58, - 0x6ED5, 0x6F6F, 0x6F60, 0x6F5F, 0x719F, 0x71AC, 0x71B1, 0x71A8, - 0x7256, 0x729B, 0x734E, 0x7357, 0x7469, 0x748B, 0x7483, 0, -plane bd -at 0x40 - 0x747E, 0x7480, 0x757F, 0x7620, 0x7629, 0x761F, 0x7624, 0x7626, - 0x7621, 0x7622, 0x769A, 0x76BA, 0x76E4, 0x778E, 0x7787, 0x778C, - 0x7791, 0x778B, 0x78CB, 0x78C5, 0x78BA, 0x78CA, 0x78BE, 0x78D5, - 0x78BC, 0x78D0, 0x7A3F, 0x7A3C, 0x7A40, 0x7A3D, 0x7A37, 0x7A3B, - 0x7AAF, 0x7AAE, 0x7BAD, 0x7BB1, 0x7BC4, 0x7BB4, 0x7BC6, 0x7BC7, - 0x7BC1, 0x7BA0, 0x7BCC, 0x7CCA, 0x7DE0, 0x7DF4, 0x7DEF, 0x7DFB, - 0x7DD8, 0x7DEC, 0x7DDD, 0x7DE8, 0x7DE3, 0x7DDA, 0x7DDE, 0x7DE9, - 0x7D9E, 0x7DD9, 0x7DF2, 0x7DF9, 0x7F75, 0x7F77, 0x7FAF, 0, -at 0xA0 - 0, 0x7FE9, 0x8026, 0x819B, 0x819C, 0x819D, 0x81A0, 0x819A, - 0x8198, 0x8517, 0x853D, 0x851A, 0x84EE, 0x852C, 0x852D, 0x8513, - 0x8511, 0x8523, 0x8521, 0x8514, 0x84EC, 0x8525, 0x84FF, 0x8506, - 0x8782, 0x8774, 0x8776, 0x8760, 0x8766, 0x8778, 0x8768, 0x8759, - 0x8757, 0x874C, 0x8753, 0x885B, 0x885D, 0x8910, 0x8907, 0x8912, - 0x8913, 0x8915, 0x890A, 0x8ABC, 0x8AD2, 0x8AC7, 0x8AC4, 0x8A95, - 0x8ACB, 0x8AF8, 0x8AB2, 0x8AC9, 0x8AC2, 0x8ABF, 0x8AB0, 0x8AD6, - 0x8ACD, 0x8AB6, 0x8AB9, 0x8ADB, 0x8C4C, 0x8C4E, 0x8C6C, 0x8CE0, - 0x8CDE, 0x8CE6, 0x8CE4, 0x8CEC, 0x8CED, 0x8CE2, 0x8CE3, 0x8CDC, - 0x8CEA, 0x8CE1, 0x8D6D, 0x8D9F, 0x8DA3, 0x8E2B, 0x8E10, 0x8E1D, - 0x8E22, 0x8E0F, 0x8E29, 0x8E1F, 0x8E21, 0x8E1E, 0x8EBA, 0x8F1D, - 0x8F1B, 0x8F1F, 0x8F29, 0x8F26, 0x8F2A, 0x8F1C, 0x8F1E, 0, -plane be -at 0x40 - 0x8F25, 0x9069, 0x906E, 0x9068, 0x906D, 0x9077, 0x9130, 0x912D, - 0x9127, 0x9131, 0x9187, 0x9189, 0x918B, 0x9183, 0x92C5, 0x92BB, - 0x92B7, 0x92EA, 0x92AC, 0x92E4, 0x92C1, 0x92B3, 0x92BC, 0x92D2, - 0x92C7, 0x92F0, 0x92B2, 0x95AD, 0x95B1, 0x9704, 0x9706, 0x9707, - 0x9709, 0x9760, 0x978D, 0x978B, 0x978F, 0x9821, 0x982B, 0x981C, - 0x98B3, 0x990A, 0x9913, 0x9912, 0x9918, 0x99DD, 0x99D0, 0x99DF, - 0x99DB, 0x99D1, 0x99D5, 0x99D2, 0x99D9, 0x9AB7, 0x9AEE, 0x9AEF, - 0x9B27, 0x9B45, 0x9B44, 0x9B77, 0x9B6F, 0x9D06, 0x9D09, 0, -at 0xA0 - 0, 0x9D03, 0x9EA9, 0x9EBE, 0x9ECE, 0x58A8, 0x9F52, 0x5112, - 0x5118, 0x5114, 0x5110, 0x5115, 0x5180, 0x51AA, 0x51DD, 0x5291, - 0x5293, 0x52F3, 0x5659, 0x566B, 0x5679, 0x5669, 0x5664, 0x5678, - 0x566A, 0x5668, 0x5665, 0x5671, 0x566F, 0x566C, 0x5662, 0x5676, - 0x58C1, 0x58BE, 0x58C7, 0x58C5, 0x596E, 0x5B1D, 0x5B34, 0x5B78, - 0x5BF0, 0x5C0E, 0x5F4A, 0x61B2, 0x6191, 0x61A9, 0x618A, 0x61CD, - 0x61B6, 0x61BE, 0x61CA, 0x61C8, 0x6230, 0x64C5, 0x64C1, 0x64CB, - 0x64BB, 0x64BC, 0x64DA, 0x64C4, 0x64C7, 0x64C2, 0x64CD, 0x64BF, - 0x64D2, 0x64D4, 0x64BE, 0x6574, 0x66C6, 0x66C9, 0x66B9, 0x66C4, - 0x66C7, 0x66B8, 0x6A3D, 0x6A38, 0x6A3A, 0x6A59, 0x6A6B, 0x6A58, - 0x6A39, 0x6A44, 0x6A62, 0x6A61, 0x6A4B, 0x6A47, 0x6A35, 0x6A5F, - 0x6A48, 0x6B59, 0x6B77, 0x6C05, 0x6FC2, 0x6FB1, 0x6FA1, 0, -plane bf -at 0x40 - 0x6FC3, 0x6FA4, 0x6FC1, 0x6FA7, 0x6FB3, 0x6FC0, 0x6FB9, 0x6FB6, - 0x6FA6, 0x6FA0, 0x6FB4, 0x71BE, 0x71C9, 0x71D0, 0x71D2, 0x71C8, - 0x71D5, 0x71B9, 0x71CE, 0x71D9, 0x71DC, 0x71C3, 0x71C4, 0x7368, - 0x749C, 0x74A3, 0x7498, 0x749F, 0x749E, 0x74E2, 0x750C, 0x750D, - 0x7634, 0x7638, 0x763A, 0x76E7, 0x76E5, 0x77A0, 0x779E, 0x779F, - 0x77A5, 0x78E8, 0x78DA, 0x78EC, 0x78E7, 0x79A6, 0x7A4D, 0x7A4E, - 0x7A46, 0x7A4C, 0x7A4B, 0x7ABA, 0x7BD9, 0x7C11, 0x7BC9, 0x7BE4, - 0x7BDB, 0x7BE1, 0x7BE9, 0x7BE6, 0x7CD5, 0x7CD6, 0x7E0A, 0, -at 0xA0 - 0, 0x7E11, 0x7E08, 0x7E1B, 0x7E23, 0x7E1E, 0x7E1D, 0x7E09, - 0x7E10, 0x7F79, 0x7FB2, 0x7FF0, 0x7FF1, 0x7FEE, 0x8028, 0x81B3, - 0x81A9, 0x81A8, 0x81FB, 0x8208, 0x8258, 0x8259, 0x854A, 0x8559, - 0x8548, 0x8568, 0x8569, 0x8543, 0x8549, 0x856D, 0x856A, 0x855E, - 0x8783, 0x879F, 0x879E, 0x87A2, 0x878D, 0x8861, 0x892A, 0x8932, - 0x8925, 0x892B, 0x8921, 0x89AA, 0x89A6, 0x8AE6, 0x8AFA, 0x8AEB, - 0x8AF1, 0x8B00, 0x8ADC, 0x8AE7, 0x8AEE, 0x8AFE, 0x8B01, 0x8B02, - 0x8AF7, 0x8AED, 0x8AF3, 0x8AF6, 0x8AFC, 0x8C6B, 0x8C6D, 0x8C93, - 0x8CF4, 0x8E44, 0x8E31, 0x8E34, 0x8E42, 0x8E39, 0x8E35, 0x8F3B, - 0x8F2F, 0x8F38, 0x8F33, 0x8FA8, 0x8FA6, 0x9075, 0x9074, 0x9078, - 0x9072, 0x907C, 0x907A, 0x9134, 0x9192, 0x9320, 0x9336, 0x92F8, - 0x9333, 0x932F, 0x9322, 0x92FC, 0x932B, 0x9304, 0x931A, 0, -plane c0 -at 0x40 - 0x9310, 0x9326, 0x9321, 0x9315, 0x932E, 0x9319, 0x95BB, 0x96A7, - 0x96A8, 0x96AA, 0x96D5, 0x970E, 0x9711, 0x9716, 0x970D, 0x9713, - 0x970F, 0x975B, 0x975C, 0x9766, 0x9798, 0x9830, 0x9838, 0x983B, - 0x9837, 0x982D, 0x9839, 0x9824, 0x9910, 0x9928, 0x991E, 0x991B, - 0x9921, 0x991A, 0x99ED, 0x99E2, 0x99F1, 0x9AB8, 0x9ABC, 0x9AFB, - 0x9AED, 0x9B28, 0x9B91, 0x9D15, 0x9D23, 0x9D26, 0x9D28, 0x9D12, - 0x9D1B, 0x9ED8, 0x9ED4, 0x9F8D, 0x9F9C, 0x512A, 0x511F, 0x5121, - 0x5132, 0x52F5, 0x568E, 0x5680, 0x5690, 0x5685, 0x5687, 0, -at 0xA0 - 0, 0x568F, 0x58D5, 0x58D3, 0x58D1, 0x58CE, 0x5B30, 0x5B2A, - 0x5B24, 0x5B7A, 0x5C37, 0x5C68, 0x5DBC, 0x5DBA, 0x5DBD, 0x5DB8, - 0x5E6B, 0x5F4C, 0x5FBD, 0x61C9, 0x61C2, 0x61C7, 0x61E6, 0x61CB, - 0x6232, 0x6234, 0x64CE, 0x64CA, 0x64D8, 0x64E0, 0x64F0, 0x64E6, - 0x64EC, 0x64F1, 0x64E2, 0x64ED, 0x6582, 0x6583, 0x66D9, 0x66D6, - 0x6A80, 0x6A94, 0x6A84, 0x6AA2, 0x6A9C, 0x6ADB, 0x6AA3, 0x6A7E, - 0x6A97, 0x6A90, 0x6AA0, 0x6B5C, 0x6BAE, 0x6BDA, 0x6C08, 0x6FD8, - 0x6FF1, 0x6FDF, 0x6FE0, 0x6FDB, 0x6FE4, 0x6FEB, 0x6FEF, 0x6F80, - 0x6FEC, 0x6FE1, 0x6FE9, 0x6FD5, 0x6FEE, 0x6FF0, 0x71E7, 0x71DF, - 0x71EE, 0x71E6, 0x71E5, 0x71ED, 0x71EC, 0x71F4, 0x71E0, 0x7235, - 0x7246, 0x7370, 0x7372, 0x74A9, 0x74B0, 0x74A6, 0x74A8, 0x7646, - 0x7642, 0x764C, 0x76EA, 0x77B3, 0x77AA, 0x77B0, 0x77AC, 0, -plane c1 -at 0x40 - 0x77A7, 0x77AD, 0x77EF, 0x78F7, 0x78FA, 0x78F4, 0x78EF, 0x7901, - 0x79A7, 0x79AA, 0x7A57, 0x7ABF, 0x7C07, 0x7C0D, 0x7BFE, 0x7BF7, - 0x7C0C, 0x7BE0, 0x7CE0, 0x7CDC, 0x7CDE, 0x7CE2, 0x7CDF, 0x7CD9, - 0x7CDD, 0x7E2E, 0x7E3E, 0x7E46, 0x7E37, 0x7E32, 0x7E43, 0x7E2B, - 0x7E3D, 0x7E31, 0x7E45, 0x7E41, 0x7E34, 0x7E39, 0x7E48, 0x7E35, - 0x7E3F, 0x7E2F, 0x7F44, 0x7FF3, 0x7FFC, 0x8071, 0x8072, 0x8070, - 0x806F, 0x8073, 0x81C6, 0x81C3, 0x81BA, 0x81C2, 0x81C0, 0x81BF, - 0x81BD, 0x81C9, 0x81BE, 0x81E8, 0x8209, 0x8271, 0x85AA, 0, -at 0xA0 - 0, 0x8584, 0x857E, 0x859C, 0x8591, 0x8594, 0x85AF, 0x859B, - 0x8587, 0x85A8, 0x858A, 0x8667, 0x87C0, 0x87D1, 0x87B3, 0x87D2, - 0x87C6, 0x87AB, 0x87BB, 0x87BA, 0x87C8, 0x87CB, 0x893B, 0x8936, - 0x8944, 0x8938, 0x893D, 0x89AC, 0x8B0E, 0x8B17, 0x8B19, 0x8B1B, - 0x8B0A, 0x8B20, 0x8B1D, 0x8B04, 0x8B10, 0x8C41, 0x8C3F, 0x8C73, - 0x8CFA, 0x8CFD, 0x8CFC, 0x8CF8, 0x8CFB, 0x8DA8, 0x8E49, 0x8E4B, - 0x8E48, 0x8E4A, 0x8F44, 0x8F3E, 0x8F42, 0x8F45, 0x8F3F, 0x907F, - 0x907D, 0x9084, 0x9081, 0x9082, 0x9080, 0x9139, 0x91A3, 0x919E, - 0x919C, 0x934D, 0x9382, 0x9328, 0x9375, 0x934A, 0x9365, 0x934B, - 0x9318, 0x937E, 0x936C, 0x935B, 0x9370, 0x935A, 0x9354, 0x95CA, - 0x95CB, 0x95CC, 0x95C8, 0x95C6, 0x96B1, 0x96B8, 0x96D6, 0x971C, - 0x971E, 0x97A0, 0x97D3, 0x9846, 0x98B6, 0x9935, 0x9A01, 0, -plane c2 -at 0x40 - 0x99FF, 0x9BAE, 0x9BAB, 0x9BAA, 0x9BAD, 0x9D3B, 0x9D3F, 0x9E8B, - 0x9ECF, 0x9EDE, 0x9EDC, 0x9EDD, 0x9EDB, 0x9F3E, 0x9F4B, 0x53E2, - 0x5695, 0x56AE, 0x58D9, 0x58D8, 0x5B38, 0x5F5D, 0x61E3, 0x6233, - 0x64F4, 0x64F2, 0x64FE, 0x6506, 0x64FA, 0x64FB, 0x64F7, 0x65B7, - 0x66DC, 0x6726, 0x6AB3, 0x6AAC, 0x6AC3, 0x6ABB, 0x6AB8, 0x6AC2, - 0x6AAE, 0x6AAF, 0x6B5F, 0x6B78, 0x6BAF, 0x7009, 0x700B, 0x6FFE, - 0x7006, 0x6FFA, 0x7011, 0x700F, 0x71FB, 0x71FC, 0x71FE, 0x71F8, - 0x7377, 0x7375, 0x74A7, 0x74BF, 0x7515, 0x7656, 0x7658, 0, -at 0xA0 - 0, 0x7652, 0x77BD, 0x77BF, 0x77BB, 0x77BC, 0x790E, 0x79AE, - 0x7A61, 0x7A62, 0x7A60, 0x7AC4, 0x7AC5, 0x7C2B, 0x7C27, 0x7C2A, - 0x7C1E, 0x7C23, 0x7C21, 0x7CE7, 0x7E54, 0x7E55, 0x7E5E, 0x7E5A, - 0x7E61, 0x7E52, 0x7E59, 0x7F48, 0x7FF9, 0x7FFB, 0x8077, 0x8076, - 0x81CD, 0x81CF, 0x820A, 0x85CF, 0x85A9, 0x85CD, 0x85D0, 0x85C9, - 0x85B0, 0x85BA, 0x85B9, 0x85A6, 0x87EF, 0x87EC, 0x87F2, 0x87E0, - 0x8986, 0x89B2, 0x89F4, 0x8B28, 0x8B39, 0x8B2C, 0x8B2B, 0x8C50, - 0x8D05, 0x8E59, 0x8E63, 0x8E66, 0x8E64, 0x8E5F, 0x8E55, 0x8EC0, - 0x8F49, 0x8F4D, 0x9087, 0x9083, 0x9088, 0x91AB, 0x91AC, 0x91D0, - 0x9394, 0x938A, 0x9396, 0x93A2, 0x93B3, 0x93AE, 0x93AC, 0x93B0, - 0x9398, 0x939A, 0x9397, 0x95D4, 0x95D6, 0x95D0, 0x95D5, 0x96E2, - 0x96DC, 0x96D9, 0x96DB, 0x96DE, 0x9724, 0x97A3, 0x97A6, 0, -plane c3 -at 0x40 - 0x97AD, 0x97F9, 0x984D, 0x984F, 0x984C, 0x984E, 0x9853, 0x98BA, - 0x993E, 0x993F, 0x993D, 0x992E, 0x99A5, 0x9A0E, 0x9AC1, 0x9B03, - 0x9B06, 0x9B4F, 0x9B4E, 0x9B4D, 0x9BCA, 0x9BC9, 0x9BFD, 0x9BC8, - 0x9BC0, 0x9D51, 0x9D5D, 0x9D60, 0x9EE0, 0x9F15, 0x9F2C, 0x5133, - 0x56A5, 0x58DE, 0x58DF, 0x58E2, 0x5BF5, 0x9F90, 0x5EEC, 0x61F2, - 0x61F7, 0x61F6, 0x61F5, 0x6500, 0x650F, 0x66E0, 0x66DD, 0x6AE5, - 0x6ADD, 0x6ADA, 0x6AD3, 0x701B, 0x701F, 0x7028, 0x701A, 0x701D, - 0x7015, 0x7018, 0x7206, 0x720D, 0x7258, 0x72A2, 0x7378, 0, -at 0xA0 - 0, 0x737A, 0x74BD, 0x74CA, 0x74E3, 0x7587, 0x7586, 0x765F, - 0x7661, 0x77C7, 0x7919, 0x79B1, 0x7A6B, 0x7A69, 0x7C3E, 0x7C3F, - 0x7C38, 0x7C3D, 0x7C37, 0x7C40, 0x7E6B, 0x7E6D, 0x7E79, 0x7E69, - 0x7E6A, 0x7F85, 0x7E73, 0x7FB6, 0x7FB9, 0x7FB8, 0x81D8, 0x85E9, - 0x85DD, 0x85EA, 0x85D5, 0x85E4, 0x85E5, 0x85F7, 0x87FB, 0x8805, - 0x880D, 0x87F9, 0x87FE, 0x8960, 0x895F, 0x8956, 0x895E, 0x8B41, - 0x8B5C, 0x8B58, 0x8B49, 0x8B5A, 0x8B4E, 0x8B4F, 0x8B46, 0x8B59, - 0x8D08, 0x8D0A, 0x8E7C, 0x8E72, 0x8E87, 0x8E76, 0x8E6C, 0x8E7A, - 0x8E74, 0x8F54, 0x8F4E, 0x8FAD, 0x908A, 0x908B, 0x91B1, 0x91AE, - 0x93E1, 0x93D1, 0x93DF, 0x93C3, 0x93C8, 0x93DC, 0x93DD, 0x93D6, - 0x93E2, 0x93CD, 0x93D8, 0x93E4, 0x93D7, 0x93E8, 0x95DC, 0x96B4, - 0x96E3, 0x972A, 0x9727, 0x9761, 0x97DC, 0x97FB, 0x985E, 0, -plane c4 -at 0x40 - 0x9858, 0x985B, 0x98BC, 0x9945, 0x9949, 0x9A16, 0x9A19, 0x9B0D, - 0x9BE8, 0x9BE7, 0x9BD6, 0x9BDB, 0x9D89, 0x9D61, 0x9D72, 0x9D6A, - 0x9D6C, 0x9E92, 0x9E97, 0x9E93, 0x9EB4, 0x52F8, 0x56A8, 0x56B7, - 0x56B6, 0x56B4, 0x56BC, 0x58E4, 0x5B40, 0x5B43, 0x5B7D, 0x5BF6, - 0x5DC9, 0x61F8, 0x61FA, 0x6518, 0x6514, 0x6519, 0x66E6, 0x6727, - 0x6AEC, 0x703E, 0x7030, 0x7032, 0x7210, 0x737B, 0x74CF, 0x7662, - 0x7665, 0x7926, 0x792A, 0x792C, 0x792B, 0x7AC7, 0x7AF6, 0x7C4C, - 0x7C43, 0x7C4D, 0x7CEF, 0x7CF0, 0x8FAE, 0x7E7D, 0x7E7C, 0, -at 0xA0 - 0, 0x7E82, 0x7F4C, 0x8000, 0x81DA, 0x8266, 0x85FB, 0x85F9, - 0x8611, 0x85FA, 0x8606, 0x860B, 0x8607, 0x860A, 0x8814, 0x8815, - 0x8964, 0x89BA, 0x89F8, 0x8B70, 0x8B6C, 0x8B66, 0x8B6F, 0x8B5F, - 0x8B6B, 0x8D0F, 0x8D0D, 0x8E89, 0x8E81, 0x8E85, 0x8E82, 0x91B4, - 0x91CB, 0x9418, 0x9403, 0x93FD, 0x95E1, 0x9730, 0x98C4, 0x9952, - 0x9951, 0x99A8, 0x9A2B, 0x9A30, 0x9A37, 0x9A35, 0x9C13, 0x9C0D, - 0x9E79, 0x9EB5, 0x9EE8, 0x9F2F, 0x9F5F, 0x9F63, 0x9F61, 0x5137, - 0x5138, 0x56C1, 0x56C0, 0x56C2, 0x5914, 0x5C6C, 0x5DCD, 0x61FC, - 0x61FE, 0x651D, 0x651C, 0x6595, 0x66E9, 0x6AFB, 0x6B04, 0x6AFA, - 0x6BB2, 0x704C, 0x721B, 0x72A7, 0x74D6, 0x74D4, 0x7669, 0x77D3, - 0x7C50, 0x7E8F, 0x7E8C, 0x7FBC, 0x8617, 0x862D, 0x861A, 0x8823, - 0x8822, 0x8821, 0x881F, 0x896A, 0x896C, 0x89BD, 0x8B74, 0, -plane c5 -at 0x40 - 0x8B77, 0x8B7D, 0x8D13, 0x8E8A, 0x8E8D, 0x8E8B, 0x8F5F, 0x8FAF, - 0x91BA, 0x942E, 0x9433, 0x9435, 0x943A, 0x9438, 0x9432, 0x942B, - 0x95E2, 0x9738, 0x9739, 0x9732, 0x97FF, 0x9867, 0x9865, 0x9957, - 0x9A45, 0x9A43, 0x9A40, 0x9A3E, 0x9ACF, 0x9B54, 0x9B51, 0x9C2D, - 0x9C25, 0x9DAF, 0x9DB4, 0x9DC2, 0x9DB8, 0x9E9D, 0x9EEF, 0x9F19, - 0x9F5C, 0x9F66, 0x9F67, 0x513C, 0x513B, 0x56C8, 0x56CA, 0x56C9, - 0x5B7F, 0x5DD4, 0x5DD2, 0x5F4E, 0x61FF, 0x6524, 0x6B0A, 0x6B61, - 0x7051, 0x7058, 0x7380, 0x74E4, 0x758A, 0x766E, 0x766C, 0, -at 0xA0 - 0, 0x79B3, 0x7C60, 0x7C5F, 0x807E, 0x807D, 0x81DF, 0x8972, - 0x896F, 0x89FC, 0x8B80, 0x8D16, 0x8D17, 0x8E91, 0x8E93, 0x8F61, - 0x9148, 0x9444, 0x9451, 0x9452, 0x973D, 0x973E, 0x97C3, 0x97C1, - 0x986B, 0x9955, 0x9A55, 0x9A4D, 0x9AD2, 0x9B1A, 0x9C49, 0x9C31, - 0x9C3E, 0x9C3B, 0x9DD3, 0x9DD7, 0x9F34, 0x9F6C, 0x9F6A, 0x9F94, - 0x56CC, 0x5DD6, 0x6200, 0x6523, 0x652B, 0x652A, 0x66EC, 0x6B10, - 0x74DA, 0x7ACA, 0x7C64, 0x7C63, 0x7C65, 0x7E93, 0x7E96, 0x7E94, - 0x81E2, 0x8638, 0x863F, 0x8831, 0x8B8A, 0x9090, 0x908F, 0x9463, - 0x9460, 0x9464, 0x9768, 0x986F, 0x995C, 0x9A5A, 0x9A5B, 0x9A57, - 0x9AD3, 0x9AD4, 0x9AD1, 0x9C54, 0x9C57, 0x9C56, 0x9DE5, 0x9E9F, - 0x9EF4, 0x56D1, 0x58E9, 0x652C, 0x705E, 0x7671, 0x7672, 0x77D7, - 0x7F50, 0x7F88, 0x8836, 0x8839, 0x8862, 0x8B93, 0x8B92, 0, -plane c6 -at 0x40 - 0x8B96, 0x8277, 0x8D1B, 0x91C0, 0x946A, 0x9742, 0x9748, 0x9744, - 0x97C6, 0x9870, 0x9A5F, 0x9B22, 0x9B58, 0x9C5F, 0x9DF9, 0x9DFA, - 0x9E7C, 0x9E7D, 0x9F07, 0x9F77, 0x9F72, 0x5EF3, 0x6B16, 0x7063, - 0x7C6C, 0x7C6E, 0x883B, 0x89C0, 0x8EA1, 0x91C1, 0x9472, 0x9470, - 0x9871, 0x995E, 0x9AD6, 0x9B23, 0x9ECC, 0x7064, 0x77DA, 0x8B9A, - 0x9477, 0x97C9, 0x9A62, 0x9A65, 0x7E9C, 0x8B9C, 0x8EAA, 0x91C5, - 0x947D, 0x947E, 0x947C, 0x9C77, 0x9C78, 0x9EF7, 0x8C54, 0x947F, - 0x9E1A, 0x7228, 0x9A6A, 0x9B31, 0x9E1B, 0x9E1E, 0x7C72, 0, -at 0xA0 - 0, 0x30FE, 0x309D, 0x309E, 0x3005, 0x3041, 0x3042, 0x3043, - 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304A, 0x304B, - 0x304C, 0x304D, 0x304E, 0x304F, 0x3050, 0x3051, 0x3052, 0x3053, - 0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x3059, 0x305A, 0x305B, - 0x305C, 0x305D, 0x305E, 0x305F, 0x3060, 0x3061, 0x3062, 0x3063, - 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, 0x3069, 0x306A, 0x306B, - 0x306C, 0x306D, 0x306E, 0x306F, 0x3070, 0x3071, 0x3072, 0x3073, - 0x3074, 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307A, 0x307B, - 0x307C, 0x307D, 0x307E, 0x307F, 0x3080, 0x3081, 0x3082, 0x3083, - 0x3084, 0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x308A, 0x308B, - 0x308C, 0x308D, 0x308E, 0x308F, 0x3090, 0x3091, 0x3092, 0x3093, - 0x30A1, 0x30A2, 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, 0, -plane c7 -at 0x40 - 0x30A8, 0x30A9, 0x30AA, 0x30AB, 0x30AC, 0x30AD, 0x30AE, 0x30AF, - 0x30B0, 0x30B1, 0x30B2, 0x30B3, 0x30B4, 0x30B5, 0x30B6, 0x30B7, - 0x30B8, 0x30B9, 0x30BA, 0x30BB, 0x30BC, 0x30BD, 0x30BE, 0x30BF, - 0x30C0, 0x30C1, 0x30C2, 0x30C3, 0x30C4, 0x30C5, 0x30C6, 0x30C7, - 0x30C8, 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, - 0x30D0, 0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7, - 0x30D8, 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF, - 0x30E0, 0x30E1, 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0, -at 0xA0 - 0, 0x30E7, 0x30E8, 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, - 0x30EE, 0x30EF, 0x30F0, 0x30F1, 0x30F2, 0x30F3, 0x30F4, 0x30F5, - 0x30F6, 0x0414, 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, - 0x041A, 0x041B, 0x041C, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, - 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, - 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436, - 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, - 0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, - 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, - 0x044F, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, - 0x2467, 0x2468, 0x2469, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, - 0x2479, 0x247A, 0x247B, 0x247C, 0x247D, 0, 0, 0, -plane c8 -at 0x40 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -at 0xA0 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane c9 -at 0x40 - 0x4E42, 0x4E5C, 0x51F5, 0x531A, 0x5382, 0x4E07, 0x4E0C, 0x4E47, - 0x4E8D, 0x56D7, 0xFA0C, 0x5C6E, 0x5F73, 0x4E0F, 0x5187, 0x4E0E, - 0x4E2E, 0x4E93, 0x4EC2, 0x4EC9, 0x4EC8, 0x5198, 0x52FC, 0x536C, - 0x53B9, 0x5720, 0x5903, 0x592C, 0x5C10, 0x5DFF, 0x65E1, 0x6BB3, - 0x6BCC, 0x6C14, 0x723F, 0x4E31, 0x4E3C, 0x4EE8, 0x4EDC, 0x4EE9, - 0x4EE1, 0x4EDD, 0x4EDA, 0x520C, 0x531C, 0x534C, 0x5722, 0x5723, - 0x5917, 0x592F, 0x5B81, 0x5B84, 0x5C12, 0x5C3B, 0x5C74, 0x5C73, - 0x5E04, 0x5E80, 0x5E82, 0x5FC9, 0x6209, 0x6250, 0x6C15, 0, -at 0xA0 - 0, 0x6C36, 0x6C43, 0x6C3F, 0x6C3B, 0x72AE, 0x72B0, 0x738A, - 0x79B8, 0x808A, 0x961E, 0x4F0E, 0x4F18, 0x4F2C, 0x4EF5, 0x4F14, - 0x4EF1, 0x4F00, 0x4EF7, 0x4F08, 0x4F1D, 0x4F02, 0x4F05, 0x4F22, - 0x4F13, 0x4F04, 0x4EF4, 0x4F12, 0x51B1, 0x5213, 0x5209, 0x5210, - 0x52A6, 0x5322, 0x531F, 0x534D, 0x538A, 0x5407, 0x56E1, 0x56DF, - 0x572E, 0x572A, 0x5734, 0x593C, 0x5980, 0x597C, 0x5985, 0x597B, - 0x597E, 0x5977, 0x597F, 0x5B56, 0x5C15, 0x5C25, 0x5C7C, 0x5C7A, - 0x5C7B, 0x5C7E, 0x5DDF, 0x5E75, 0x5E84, 0x5F02, 0x5F1A, 0x5F74, - 0x5FD5, 0x5FD4, 0x5FCF, 0x625C, 0x625E, 0x6264, 0x6261, 0x6266, - 0x6262, 0x6259, 0x6260, 0x625A, 0x6265, 0x65EF, 0x65EE, 0x673E, - 0x6739, 0x6738, 0x673B, 0x673A, 0x673F, 0x673C, 0x6733, 0x6C18, - 0x6C46, 0x6C52, 0x6C5C, 0x6C4F, 0x6C4A, 0x6C54, 0x6C4B, 0, -plane ca -at 0x40 - 0x6C4C, 0x7071, 0x725E, 0x72B4, 0x72B5, 0x738E, 0x752A, 0x767F, - 0x7A75, 0x7F51, 0x8278, 0x827C, 0x8280, 0x827D, 0x827F, 0x864D, - 0x897E, 0x9099, 0x9097, 0x9098, 0x909B, 0x9094, 0x9622, 0x9624, - 0x9620, 0x9623, 0x4F56, 0x4F3B, 0x4F62, 0x4F49, 0x4F53, 0x4F64, - 0x4F3E, 0x4F67, 0x4F52, 0x4F5F, 0x4F41, 0x4F58, 0x4F2D, 0x4F33, - 0x4F3F, 0x4F61, 0x518F, 0x51B9, 0x521C, 0x521E, 0x5221, 0x52AD, - 0x52AE, 0x5309, 0x5363, 0x5372, 0x538E, 0x538F, 0x5430, 0x5437, - 0x542A, 0x5454, 0x5445, 0x5419, 0x541C, 0x5425, 0x5418, 0, -at 0xA0 - 0, 0x543D, 0x544F, 0x5441, 0x5428, 0x5424, 0x5447, 0x56EE, - 0x56E7, 0x56E5, 0x5741, 0x5745, 0x574C, 0x5749, 0x574B, 0x5752, - 0x5906, 0x5940, 0x59A6, 0x5998, 0x59A0, 0x5997, 0x598E, 0x59A2, - 0x5990, 0x598F, 0x59A7, 0x59A1, 0x5B8E, 0x5B92, 0x5C28, 0x5C2A, - 0x5C8D, 0x5C8F, 0x5C88, 0x5C8B, 0x5C89, 0x5C92, 0x5C8A, 0x5C86, - 0x5C93, 0x5C95, 0x5DE0, 0x5E0A, 0x5E0E, 0x5E8B, 0x5E89, 0x5E8C, - 0x5E88, 0x5E8D, 0x5F05, 0x5F1D, 0x5F78, 0x5F76, 0x5FD2, 0x5FD1, - 0x5FD0, 0x5FED, 0x5FE8, 0x5FEE, 0x5FF3, 0x5FE1, 0x5FE4, 0x5FE3, - 0x5FFA, 0x5FEF, 0x5FF7, 0x5FFB, 0x6000, 0x5FF4, 0x623A, 0x6283, - 0x628C, 0x628E, 0x628F, 0x6294, 0x6287, 0x6271, 0x627B, 0x627A, - 0x6270, 0x6281, 0x6288, 0x6277, 0x627D, 0x6272, 0x6274, 0x6537, - 0x65F0, 0x65F4, 0x65F3, 0x65F2, 0x65F5, 0x6745, 0x6747, 0, -plane cb -at 0x40 - 0x6759, 0x6755, 0x674C, 0x6748, 0x675D, 0x674D, 0x675A, 0x674B, - 0x6BD0, 0x6C19, 0x6C1A, 0x6C78, 0x6C67, 0x6C6B, 0x6C84, 0x6C8B, - 0x6C8F, 0x6C71, 0x6C6F, 0x6C69, 0x6C9A, 0x6C6D, 0x6C87, 0x6C95, - 0x6C9C, 0x6C66, 0x6C73, 0x6C65, 0x6C7B, 0x6C8E, 0x7074, 0x707A, - 0x7263, 0x72BF, 0x72BD, 0x72C3, 0x72C6, 0x72C1, 0x72BA, 0x72C5, - 0x7395, 0x7397, 0x7393, 0x7394, 0x7392, 0x753A, 0x7539, 0x7594, - 0x7595, 0x7681, 0x793D, 0x8034, 0x8095, 0x8099, 0x8090, 0x8092, - 0x809C, 0x8290, 0x828F, 0x8285, 0x828E, 0x8291, 0x8293, 0, -at 0xA0 - 0, 0x828A, 0x8283, 0x8284, 0x8C78, 0x8FC9, 0x8FBF, 0x909F, - 0x90A1, 0x90A5, 0x909E, 0x90A7, 0x90A0, 0x9630, 0x9628, 0x962F, - 0x962D, 0x4E33, 0x4F98, 0x4F7C, 0x4F85, 0x4F7D, 0x4F80, 0x4F87, - 0x4F76, 0x4F74, 0x4F89, 0x4F84, 0x4F77, 0x4F4C, 0x4F97, 0x4F6A, - 0x4F9A, 0x4F79, 0x4F81, 0x4F78, 0x4F90, 0x4F9C, 0x4F94, 0x4F9E, - 0x4F92, 0x4F82, 0x4F95, 0x4F6B, 0x4F6E, 0x519E, 0x51BC, 0x51BE, - 0x5235, 0x5232, 0x5233, 0x5246, 0x5231, 0x52BC, 0x530A, 0x530B, - 0x533C, 0x5392, 0x5394, 0x5487, 0x547F, 0x5481, 0x5491, 0x5482, - 0x5488, 0x546B, 0x547A, 0x547E, 0x5465, 0x546C, 0x5474, 0x5466, - 0x548D, 0x546F, 0x5461, 0x5460, 0x5498, 0x5463, 0x5467, 0x5464, - 0x56F7, 0x56F9, 0x576F, 0x5772, 0x576D, 0x576B, 0x5771, 0x5770, - 0x5776, 0x5780, 0x5775, 0x577B, 0x5773, 0x5774, 0x5762, 0, -plane cc -at 0x40 - 0x5768, 0x577D, 0x590C, 0x5945, 0x59B5, 0x59BA, 0x59CF, 0x59CE, - 0x59B2, 0x59CC, 0x59C1, 0x59B6, 0x59BC, 0x59C3, 0x59D6, 0x59B1, - 0x59BD, 0x59C0, 0x59C8, 0x59B4, 0x59C7, 0x5B62, 0x5B65, 0x5B93, - 0x5B95, 0x5C44, 0x5C47, 0x5CAE, 0x5CA4, 0x5CA0, 0x5CB5, 0x5CAF, - 0x5CA8, 0x5CAC, 0x5C9F, 0x5CA3, 0x5CAD, 0x5CA2, 0x5CAA, 0x5CA7, - 0x5C9D, 0x5CA5, 0x5CB6, 0x5CB0, 0x5CA6, 0x5E17, 0x5E14, 0x5E19, - 0x5F28, 0x5F22, 0x5F23, 0x5F24, 0x5F54, 0x5F82, 0x5F7E, 0x5F7D, - 0x5FDE, 0x5FE5, 0x602D, 0x6026, 0x6019, 0x6032, 0x600B, 0, -at 0xA0 - 0, 0x6034, 0x600A, 0x6017, 0x6033, 0x601A, 0x601E, 0x602C, - 0x6022, 0x600D, 0x6010, 0x602E, 0x6013, 0x6011, 0x600C, 0x6009, - 0x601C, 0x6214, 0x623D, 0x62AD, 0x62B4, 0x62D1, 0x62BE, 0x62AA, - 0x62B6, 0x62CA, 0x62AE, 0x62B3, 0x62AF, 0x62BB, 0x62A9, 0x62B0, - 0x62B8, 0x653D, 0x65A8, 0x65BB, 0x6609, 0x65FC, 0x6604, 0x6612, - 0x6608, 0x65FB, 0x6603, 0x660B, 0x660D, 0x6605, 0x65FD, 0x6611, - 0x6610, 0x66F6, 0x670A, 0x6785, 0x676C, 0x678E, 0x6792, 0x6776, - 0x677B, 0x6798, 0x6786, 0x6784, 0x6774, 0x678D, 0x678C, 0x677A, - 0x679F, 0x6791, 0x6799, 0x6783, 0x677D, 0x6781, 0x6778, 0x6779, - 0x6794, 0x6B25, 0x6B80, 0x6B7E, 0x6BDE, 0x6C1D, 0x6C93, 0x6CEC, - 0x6CEB, 0x6CEE, 0x6CD9, 0x6CB6, 0x6CD4, 0x6CAD, 0x6CE7, 0x6CB7, - 0x6CD0, 0x6CC2, 0x6CBA, 0x6CC3, 0x6CC6, 0x6CED, 0x6CF2, 0, -plane cd -at 0x40 - 0x6CD2, 0x6CDD, 0x6CB4, 0x6C8A, 0x6C9D, 0x6C80, 0x6CDE, 0x6CC0, - 0x6D30, 0x6CCD, 0x6CC7, 0x6CB0, 0x6CF9, 0x6CCF, 0x6CE9, 0x6CD1, - 0x7094, 0x7098, 0x7085, 0x7093, 0x7086, 0x7084, 0x7091, 0x7096, - 0x7082, 0x709A, 0x7083, 0x726A, 0x72D6, 0x72CB, 0x72D8, 0x72C9, - 0x72DC, 0x72D2, 0x72D4, 0x72DA, 0x72CC, 0x72D1, 0x73A4, 0x73A1, - 0x73AD, 0x73A6, 0x73A2, 0x73A0, 0x73AC, 0x739D, 0x74DD, 0x74E8, - 0x753F, 0x7540, 0x753E, 0x758C, 0x7598, 0x76AF, 0x76F3, 0x76F1, - 0x76F0, 0x76F5, 0x77F8, 0x77FC, 0x77F9, 0x77FB, 0x77FA, 0, -at 0xA0 - 0, 0x77F7, 0x7942, 0x793F, 0x79C5, 0x7A78, 0x7A7B, 0x7AFB, - 0x7C75, 0x7CFD, 0x8035, 0x808F, 0x80AE, 0x80A3, 0x80B8, 0x80B5, - 0x80AD, 0x8220, 0x82A0, 0x82C0, 0x82AB, 0x829A, 0x8298, 0x829B, - 0x82B5, 0x82A7, 0x82AE, 0x82BC, 0x829E, 0x82BA, 0x82B4, 0x82A8, - 0x82A1, 0x82A9, 0x82C2, 0x82A4, 0x82C3, 0x82B6, 0x82A2, 0x8670, - 0x866F, 0x866D, 0x866E, 0x8C56, 0x8FD2, 0x8FCB, 0x8FD3, 0x8FCD, - 0x8FD6, 0x8FD5, 0x8FD7, 0x90B2, 0x90B4, 0x90AF, 0x90B3, 0x90B0, - 0x9639, 0x963D, 0x963C, 0x963A, 0x9643, 0x4FCD, 0x4FC5, 0x4FD3, - 0x4FB2, 0x4FC9, 0x4FCB, 0x4FC1, 0x4FD4, 0x4FDC, 0x4FD9, 0x4FBB, - 0x4FB3, 0x4FDB, 0x4FC7, 0x4FD6, 0x4FBA, 0x4FC0, 0x4FB9, 0x4FEC, - 0x5244, 0x5249, 0x52C0, 0x52C2, 0x533D, 0x537C, 0x5397, 0x5396, - 0x5399, 0x5398, 0x54BA, 0x54A1, 0x54AD, 0x54A5, 0x54CF, 0, -plane ce -at 0x40 - 0x54C3, 0x830D, 0x54B7, 0x54AE, 0x54D6, 0x54B6, 0x54C5, 0x54C6, - 0x54A0, 0x5470, 0x54BC, 0x54A2, 0x54BE, 0x5472, 0x54DE, 0x54B0, - 0x57B5, 0x579E, 0x579F, 0x57A4, 0x578C, 0x5797, 0x579D, 0x579B, - 0x5794, 0x5798, 0x578F, 0x5799, 0x57A5, 0x579A, 0x5795, 0x58F4, - 0x590D, 0x5953, 0x59E1, 0x59DE, 0x59EE, 0x5A00, 0x59F1, 0x59DD, - 0x59FA, 0x59FD, 0x59FC, 0x59F6, 0x59E4, 0x59F2, 0x59F7, 0x59DB, - 0x59E9, 0x59F3, 0x59F5, 0x59E0, 0x59FE, 0x59F4, 0x59ED, 0x5BA8, - 0x5C4C, 0x5CD0, 0x5CD8, 0x5CCC, 0x5CD7, 0x5CCB, 0x5CDB, 0, -at 0xA0 - 0, 0x5CDE, 0x5CDA, 0x5CC9, 0x5CC7, 0x5CCA, 0x5CD6, 0x5CD3, - 0x5CD4, 0x5CCF, 0x5CC8, 0x5CC6, 0x5CCE, 0x5CDF, 0x5CF8, 0x5DF9, - 0x5E21, 0x5E22, 0x5E23, 0x5E20, 0x5E24, 0x5EB0, 0x5EA4, 0x5EA2, - 0x5E9B, 0x5EA3, 0x5EA5, 0x5F07, 0x5F2E, 0x5F56, 0x5F86, 0x6037, - 0x6039, 0x6054, 0x6072, 0x605E, 0x6045, 0x6053, 0x6047, 0x6049, - 0x605B, 0x604C, 0x6040, 0x6042, 0x605F, 0x6024, 0x6044, 0x6058, - 0x6066, 0x606E, 0x6242, 0x6243, 0x62CF, 0x630D, 0x630B, 0x62F5, - 0x630E, 0x6303, 0x62EB, 0x62F9, 0x630F, 0x630C, 0x62F8, 0x62F6, - 0x6300, 0x6313, 0x6314, 0x62FA, 0x6315, 0x62FB, 0x62F0, 0x6541, - 0x6543, 0x65AA, 0x65BF, 0x6636, 0x6621, 0x6632, 0x6635, 0x661C, - 0x6626, 0x6622, 0x6633, 0x662B, 0x663A, 0x661D, 0x6634, 0x6639, - 0x662E, 0x670F, 0x6710, 0x67C1, 0x67F2, 0x67C8, 0x67BA, 0, -plane cf -at 0x40 - 0x67DC, 0x67BB, 0x67F8, 0x67D8, 0x67C0, 0x67B7, 0x67C5, 0x67EB, - 0x67E4, 0x67DF, 0x67B5, 0x67CD, 0x67B3, 0x67F7, 0x67F6, 0x67EE, - 0x67E3, 0x67C2, 0x67B9, 0x67CE, 0x67E7, 0x67F0, 0x67B2, 0x67FC, - 0x67C6, 0x67ED, 0x67CC, 0x67AE, 0x67E6, 0x67DB, 0x67FA, 0x67C9, - 0x67CA, 0x67C3, 0x67EA, 0x67CB, 0x6B28, 0x6B82, 0x6B84, 0x6BB6, - 0x6BD6, 0x6BD8, 0x6BE0, 0x6C20, 0x6C21, 0x6D28, 0x6D34, 0x6D2D, - 0x6D1F, 0x6D3C, 0x6D3F, 0x6D12, 0x6D0A, 0x6CDA, 0x6D33, 0x6D04, - 0x6D19, 0x6D3A, 0x6D1A, 0x6D11, 0x6D00, 0x6D1D, 0x6D42, 0, -at 0xA0 - 0, 0x6D01, 0x6D18, 0x6D37, 0x6D03, 0x6D0F, 0x6D40, 0x6D07, - 0x6D20, 0x6D2C, 0x6D08, 0x6D22, 0x6D09, 0x6D10, 0x70B7, 0x709F, - 0x70BE, 0x70B1, 0x70B0, 0x70A1, 0x70B4, 0x70B5, 0x70A9, 0x7241, - 0x7249, 0x724A, 0x726C, 0x7270, 0x7273, 0x726E, 0x72CA, 0x72E4, - 0x72E8, 0x72EB, 0x72DF, 0x72EA, 0x72E6, 0x72E3, 0x7385, 0x73CC, - 0x73C2, 0x73C8, 0x73C5, 0x73B9, 0x73B6, 0x73B5, 0x73B4, 0x73EB, - 0x73BF, 0x73C7, 0x73BE, 0x73C3, 0x73C6, 0x73B8, 0x73CB, 0x74EC, - 0x74EE, 0x752E, 0x7547, 0x7548, 0x75A7, 0x75AA, 0x7679, 0x76C4, - 0x7708, 0x7703, 0x7704, 0x7705, 0x770A, 0x76F7, 0x76FB, 0x76FA, - 0x77E7, 0x77E8, 0x7806, 0x7811, 0x7812, 0x7805, 0x7810, 0x780F, - 0x780E, 0x7809, 0x7803, 0x7813, 0x794A, 0x794C, 0x794B, 0x7945, - 0x7944, 0x79D5, 0x79CD, 0x79CF, 0x79D6, 0x79CE, 0x7A80, 0, -plane d0 -at 0x40 - 0x7A7E, 0x7AD1, 0x7B00, 0x7B01, 0x7C7A, 0x7C78, 0x7C79, 0x7C7F, - 0x7C80, 0x7C81, 0x7D03, 0x7D08, 0x7D01, 0x7F58, 0x7F91, 0x7F8D, - 0x7FBE, 0x8007, 0x800E, 0x800F, 0x8014, 0x8037, 0x80D8, 0x80C7, - 0x80E0, 0x80D1, 0x80C8, 0x80C2, 0x80D0, 0x80C5, 0x80E3, 0x80D9, - 0x80DC, 0x80CA, 0x80D5, 0x80C9, 0x80CF, 0x80D7, 0x80E6, 0x80CD, - 0x81FF, 0x8221, 0x8294, 0x82D9, 0x82FE, 0x82F9, 0x8307, 0x82E8, - 0x8300, 0x82D5, 0x833A, 0x82EB, 0x82D6, 0x82F4, 0x82EC, 0x82E1, - 0x82F2, 0x82F5, 0x830C, 0x82FB, 0x82F6, 0x82F0, 0x82EA, 0, -at 0xA0 - 0, 0x82E4, 0x82E0, 0x82FA, 0x82F3, 0x82ED, 0x8677, 0x8674, - 0x867C, 0x8673, 0x8841, 0x884E, 0x8867, 0x886A, 0x8869, 0x89D3, - 0x8A04, 0x8A07, 0x8D72, 0x8FE3, 0x8FE1, 0x8FEE, 0x8FE0, 0x90F1, - 0x90BD, 0x90BF, 0x90D5, 0x90C5, 0x90BE, 0x90C7, 0x90CB, 0x90C8, - 0x91D4, 0x91D3, 0x9654, 0x964F, 0x9651, 0x9653, 0x964A, 0x964E, - 0x501E, 0x5005, 0x5007, 0x5013, 0x5022, 0x5030, 0x501B, 0x4FF5, - 0x4FF4, 0x5033, 0x5037, 0x502C, 0x4FF6, 0x4FF7, 0x5017, 0x501C, - 0x5020, 0x5027, 0x5035, 0x502F, 0x5031, 0x500E, 0x515A, 0x5194, - 0x5193, 0x51CA, 0x51C4, 0x51C5, 0x51C8, 0x51CE, 0x5261, 0x525A, - 0x5252, 0x525E, 0x525F, 0x5255, 0x5262, 0x52CD, 0x530E, 0x539E, - 0x5526, 0x54E2, 0x5517, 0x5512, 0x54E7, 0x54F3, 0x54E4, 0x551A, - 0x54FF, 0x5504, 0x5508, 0x54EB, 0x5511, 0x5505, 0x54F1, 0, -plane d1 -at 0x40 - 0x550A, 0x54FB, 0x54F7, 0x54F8, 0x54E0, 0x550E, 0x5503, 0x550B, - 0x5701, 0x5702, 0x57CC, 0x5832, 0x57D5, 0x57D2, 0x57BA, 0x57C6, - 0x57BD, 0x57BC, 0x57B8, 0x57B6, 0x57BF, 0x57C7, 0x57D0, 0x57B9, - 0x57C1, 0x590E, 0x594A, 0x5A19, 0x5A16, 0x5A2D, 0x5A2E, 0x5A15, - 0x5A0F, 0x5A17, 0x5A0A, 0x5A1E, 0x5A33, 0x5B6C, 0x5BA7, 0x5BAD, - 0x5BAC, 0x5C03, 0x5C56, 0x5C54, 0x5CEC, 0x5CFF, 0x5CEE, 0x5CF1, - 0x5CF7, 0x5D00, 0x5CF9, 0x5E29, 0x5E28, 0x5EA8, 0x5EAE, 0x5EAA, - 0x5EAC, 0x5F33, 0x5F30, 0x5F67, 0x605D, 0x605A, 0x6067, 0, -at 0xA0 - 0, 0x6041, 0x60A2, 0x6088, 0x6080, 0x6092, 0x6081, 0x609D, - 0x6083, 0x6095, 0x609B, 0x6097, 0x6087, 0x609C, 0x608E, 0x6219, - 0x6246, 0x62F2, 0x6310, 0x6356, 0x632C, 0x6344, 0x6345, 0x6336, - 0x6343, 0x63E4, 0x6339, 0x634B, 0x634A, 0x633C, 0x6329, 0x6341, - 0x6334, 0x6358, 0x6354, 0x6359, 0x632D, 0x6347, 0x6333, 0x635A, - 0x6351, 0x6338, 0x6357, 0x6340, 0x6348, 0x654A, 0x6546, 0x65C6, - 0x65C3, 0x65C4, 0x65C2, 0x664A, 0x665F, 0x6647, 0x6651, 0x6712, - 0x6713, 0x681F, 0x681A, 0x6849, 0x6832, 0x6833, 0x683B, 0x684B, - 0x684F, 0x6816, 0x6831, 0x681C, 0x6835, 0x682B, 0x682D, 0x682F, - 0x684E, 0x6844, 0x6834, 0x681D, 0x6812, 0x6814, 0x6826, 0x6828, - 0x682E, 0x684D, 0x683A, 0x6825, 0x6820, 0x6B2C, 0x6B2F, 0x6B2D, - 0x6B31, 0x6B34, 0x6B6D, 0x8082, 0x6B88, 0x6BE6, 0x6BE4, 0, -plane d2 -at 0x40 - 0x6BE8, 0x6BE3, 0x6BE2, 0x6BE7, 0x6C25, 0x6D7A, 0x6D63, 0x6D64, - 0x6D76, 0x6D0D, 0x6D61, 0x6D92, 0x6D58, 0x6D62, 0x6D6D, 0x6D6F, - 0x6D91, 0x6D8D, 0x6DEF, 0x6D7F, 0x6D86, 0x6D5E, 0x6D67, 0x6D60, - 0x6D97, 0x6D70, 0x6D7C, 0x6D5F, 0x6D82, 0x6D98, 0x6D2F, 0x6D68, - 0x6D8B, 0x6D7E, 0x6D80, 0x6D84, 0x6D16, 0x6D83, 0x6D7B, 0x6D7D, - 0x6D75, 0x6D90, 0x70DC, 0x70D3, 0x70D1, 0x70DD, 0x70CB, 0x7F39, - 0x70E2, 0x70D7, 0x70D2, 0x70DE, 0x70E0, 0x70D4, 0x70CD, 0x70C5, - 0x70C6, 0x70C7, 0x70DA, 0x70CE, 0x70E1, 0x7242, 0x7278, 0, -at 0xA0 - 0, 0x7277, 0x7276, 0x7300, 0x72FA, 0x72F4, 0x72FE, 0x72F6, - 0x72F3, 0x72FB, 0x7301, 0x73D3, 0x73D9, 0x73E5, 0x73D6, 0x73BC, - 0x73E7, 0x73E3, 0x73E9, 0x73DC, 0x73D2, 0x73DB, 0x73D4, 0x73DD, - 0x73DA, 0x73D7, 0x73D8, 0x73E8, 0x74DE, 0x74DF, 0x74F4, 0x74F5, - 0x7521, 0x755B, 0x755F, 0x75B0, 0x75C1, 0x75BB, 0x75C4, 0x75C0, - 0x75BF, 0x75B6, 0x75BA, 0x768A, 0x76C9, 0x771D, 0x771B, 0x7710, - 0x7713, 0x7712, 0x7723, 0x7711, 0x7715, 0x7719, 0x771A, 0x7722, - 0x7727, 0x7823, 0x782C, 0x7822, 0x7835, 0x782F, 0x7828, 0x782E, - 0x782B, 0x7821, 0x7829, 0x7833, 0x782A, 0x7831, 0x7954, 0x795B, - 0x794F, 0x795C, 0x7953, 0x7952, 0x7951, 0x79EB, 0x79EC, 0x79E0, - 0x79EE, 0x79ED, 0x79EA, 0x79DC, 0x79DE, 0x79DD, 0x7A86, 0x7A89, - 0x7A85, 0x7A8B, 0x7A8C, 0x7A8A, 0x7A87, 0x7AD8, 0x7B10, 0, -plane d3 -at 0x40 - 0x7B04, 0x7B13, 0x7B05, 0x7B0F, 0x7B08, 0x7B0A, 0x7B0E, 0x7B09, - 0x7B12, 0x7C84, 0x7C91, 0x7C8A, 0x7C8C, 0x7C88, 0x7C8D, 0x7C85, - 0x7D1E, 0x7D1D, 0x7D11, 0x7D0E, 0x7D18, 0x7D16, 0x7D13, 0x7D1F, - 0x7D12, 0x7D0F, 0x7D0C, 0x7F5C, 0x7F61, 0x7F5E, 0x7F60, 0x7F5D, - 0x7F5B, 0x7F96, 0x7F92, 0x7FC3, 0x7FC2, 0x7FC0, 0x8016, 0x803E, - 0x8039, 0x80FA, 0x80F2, 0x80F9, 0x80F5, 0x8101, 0x80FB, 0x8100, - 0x8201, 0x822F, 0x8225, 0x8333, 0x832D, 0x8344, 0x8319, 0x8351, - 0x8325, 0x8356, 0x833F, 0x8341, 0x8326, 0x831C, 0x8322, 0, -at 0xA0 - 0, 0x8342, 0x834E, 0x831B, 0x832A, 0x8308, 0x833C, 0x834D, - 0x8316, 0x8324, 0x8320, 0x8337, 0x832F, 0x8329, 0x8347, 0x8345, - 0x834C, 0x8353, 0x831E, 0x832C, 0x834B, 0x8327, 0x8348, 0x8653, - 0x8652, 0x86A2, 0x86A8, 0x8696, 0x868D, 0x8691, 0x869E, 0x8687, - 0x8697, 0x8686, 0x868B, 0x869A, 0x8685, 0x86A5, 0x8699, 0x86A1, - 0x86A7, 0x8695, 0x8698, 0x868E, 0x869D, 0x8690, 0x8694, 0x8843, - 0x8844, 0x886D, 0x8875, 0x8876, 0x8872, 0x8880, 0x8871, 0x887F, - 0x886F, 0x8883, 0x887E, 0x8874, 0x887C, 0x8A12, 0x8C47, 0x8C57, - 0x8C7B, 0x8CA4, 0x8CA3, 0x8D76, 0x8D78, 0x8DB5, 0x8DB7, 0x8DB6, - 0x8ED1, 0x8ED3, 0x8FFE, 0x8FF5, 0x9002, 0x8FFF, 0x8FFB, 0x9004, - 0x8FFC, 0x8FF6, 0x90D6, 0x90E0, 0x90D9, 0x90DA, 0x90E3, 0x90DF, - 0x90E5, 0x90D8, 0x90DB, 0x90D7, 0x90DC, 0x90E4, 0x9150, 0, -plane d4 -at 0x40 - 0x914E, 0x914F, 0x91D5, 0x91E2, 0x91DA, 0x965C, 0x965F, 0x96BC, - 0x98E3, 0x9ADF, 0x9B2F, 0x4E7F, 0x5070, 0x506A, 0x5061, 0x505E, - 0x5060, 0x5053, 0x504B, 0x505D, 0x5072, 0x5048, 0x504D, 0x5041, - 0x505B, 0x504A, 0x5062, 0x5015, 0x5045, 0x505F, 0x5069, 0x506B, - 0x5063, 0x5064, 0x5046, 0x5040, 0x506E, 0x5073, 0x5057, 0x5051, - 0x51D0, 0x526B, 0x526D, 0x526C, 0x526E, 0x52D6, 0x52D3, 0x532D, - 0x539C, 0x5575, 0x5576, 0x553C, 0x554D, 0x5550, 0x5534, 0x552A, - 0x5551, 0x5562, 0x5536, 0x5535, 0x5530, 0x5552, 0x5545, 0, -at 0xA0 - 0, 0x550C, 0x5532, 0x5565, 0x554E, 0x5539, 0x5548, 0x552D, - 0x553B, 0x5540, 0x554B, 0x570A, 0x5707, 0x57FB, 0x5814, 0x57E2, - 0x57F6, 0x57DC, 0x57F4, 0x5800, 0x57ED, 0x57FD, 0x5808, 0x57F8, - 0x580B, 0x57F3, 0x57CF, 0x5807, 0x57EE, 0x57E3, 0x57F2, 0x57E5, - 0x57EC, 0x57E1, 0x580E, 0x57FC, 0x5810, 0x57E7, 0x5801, 0x580C, - 0x57F1, 0x57E9, 0x57F0, 0x580D, 0x5804, 0x595C, 0x5A60, 0x5A58, - 0x5A55, 0x5A67, 0x5A5E, 0x5A38, 0x5A35, 0x5A6D, 0x5A50, 0x5A5F, - 0x5A65, 0x5A6C, 0x5A53, 0x5A64, 0x5A57, 0x5A43, 0x5A5D, 0x5A52, - 0x5A44, 0x5A5B, 0x5A48, 0x5A8E, 0x5A3E, 0x5A4D, 0x5A39, 0x5A4C, - 0x5A70, 0x5A69, 0x5A47, 0x5A51, 0x5A56, 0x5A42, 0x5A5C, 0x5B72, - 0x5B6E, 0x5BC1, 0x5BC0, 0x5C59, 0x5D1E, 0x5D0B, 0x5D1D, 0x5D1A, - 0x5D20, 0x5D0C, 0x5D28, 0x5D0D, 0x5D26, 0x5D25, 0x5D0F, 0, -plane d5 -at 0x40 - 0x5D30, 0x5D12, 0x5D23, 0x5D1F, 0x5D2E, 0x5E3E, 0x5E34, 0x5EB1, - 0x5EB4, 0x5EB9, 0x5EB2, 0x5EB3, 0x5F36, 0x5F38, 0x5F9B, 0x5F96, - 0x5F9F, 0x608A, 0x6090, 0x6086, 0x60BE, 0x60B0, 0x60BA, 0x60D3, - 0x60D4, 0x60CF, 0x60E4, 0x60D9, 0x60DD, 0x60C8, 0x60B1, 0x60DB, - 0x60B7, 0x60CA, 0x60BF, 0x60C3, 0x60CD, 0x60C0, 0x6332, 0x6365, - 0x638A, 0x6382, 0x637D, 0x63BD, 0x639E, 0x63AD, 0x639D, 0x6397, - 0x63AB, 0x638E, 0x636F, 0x6387, 0x6390, 0x636E, 0x63AF, 0x6375, - 0x639C, 0x636D, 0x63AE, 0x637C, 0x63A4, 0x633B, 0x639F, 0, -at 0xA0 - 0, 0x6378, 0x6385, 0x6381, 0x6391, 0x638D, 0x6370, 0x6553, - 0x65CD, 0x6665, 0x6661, 0x665B, 0x6659, 0x665C, 0x6662, 0x6718, - 0x6879, 0x6887, 0x6890, 0x689C, 0x686D, 0x686E, 0x68AE, 0x68AB, - 0x6956, 0x686F, 0x68A3, 0x68AC, 0x68A9, 0x6875, 0x6874, 0x68B2, - 0x688F, 0x6877, 0x6892, 0x687C, 0x686B, 0x6872, 0x68AA, 0x6880, - 0x6871, 0x687E, 0x689B, 0x6896, 0x688B, 0x68A0, 0x6889, 0x68A4, - 0x6878, 0x687B, 0x6891, 0x688C, 0x688A, 0x687D, 0x6B36, 0x6B33, - 0x6B37, 0x6B38, 0x6B91, 0x6B8F, 0x6B8D, 0x6B8E, 0x6B8C, 0x6C2A, - 0x6DC0, 0x6DAB, 0x6DB4, 0x6DB3, 0x6E74, 0x6DAC, 0x6DE9, 0x6DE2, - 0x6DB7, 0x6DF6, 0x6DD4, 0x6E00, 0x6DC8, 0x6DE0, 0x6DDF, 0x6DD6, - 0x6DBE, 0x6DE5, 0x6DDC, 0x6DDD, 0x6DDB, 0x6DF4, 0x6DCA, 0x6DBD, - 0x6DED, 0x6DF0, 0x6DBA, 0x6DD5, 0x6DC2, 0x6DCF, 0x6DC9, 0, -plane d6 -at 0x40 - 0x6DD0, 0x6DF2, 0x6DD3, 0x6DFD, 0x6DD7, 0x6DCD, 0x6DE3, 0x6DBB, - 0x70FA, 0x710D, 0x70F7, 0x7117, 0x70F4, 0x710C, 0x70F0, 0x7104, - 0x70F3, 0x7110, 0x70FC, 0x70FF, 0x7106, 0x7113, 0x7100, 0x70F8, - 0x70F6, 0x710B, 0x7102, 0x710E, 0x727E, 0x727B, 0x727C, 0x727F, - 0x731D, 0x7317, 0x7307, 0x7311, 0x7318, 0x730A, 0x7308, 0x72FF, - 0x730F, 0x731E, 0x7388, 0x73F6, 0x73F8, 0x73F5, 0x7404, 0x7401, - 0x73FD, 0x7407, 0x7400, 0x73FA, 0x73FC, 0x73FF, 0x740C, 0x740B, - 0x73F4, 0x7408, 0x7564, 0x7563, 0x75CE, 0x75D2, 0x75CF, 0, -at 0xA0 - 0, 0x75CB, 0x75CC, 0x75D1, 0x75D0, 0x768F, 0x7689, 0x76D3, - 0x7739, 0x772F, 0x772D, 0x7731, 0x7732, 0x7734, 0x7733, 0x773D, - 0x7725, 0x773B, 0x7735, 0x7848, 0x7852, 0x7849, 0x784D, 0x784A, - 0x784C, 0x7826, 0x7845, 0x7850, 0x7964, 0x7967, 0x7969, 0x796A, - 0x7963, 0x796B, 0x7961, 0x79BB, 0x79FA, 0x79F8, 0x79F6, 0x79F7, - 0x7A8F, 0x7A94, 0x7A90, 0x7B35, 0x7B47, 0x7B34, 0x7B25, 0x7B30, - 0x7B22, 0x7B24, 0x7B33, 0x7B18, 0x7B2A, 0x7B1D, 0x7B31, 0x7B2B, - 0x7B2D, 0x7B2F, 0x7B32, 0x7B38, 0x7B1A, 0x7B23, 0x7C94, 0x7C98, - 0x7C96, 0x7CA3, 0x7D35, 0x7D3D, 0x7D38, 0x7D36, 0x7D3A, 0x7D45, - 0x7D2C, 0x7D29, 0x7D41, 0x7D47, 0x7D3E, 0x7D3F, 0x7D4A, 0x7D3B, - 0x7D28, 0x7F63, 0x7F95, 0x7F9C, 0x7F9D, 0x7F9B, 0x7FCA, 0x7FCB, - 0x7FCD, 0x7FD0, 0x7FD1, 0x7FC7, 0x7FCF, 0x7FC9, 0x801F, 0, -plane d7 -at 0x40 - 0x801E, 0x801B, 0x8047, 0x8043, 0x8048, 0x8118, 0x8125, 0x8119, - 0x811B, 0x812D, 0x811F, 0x812C, 0x811E, 0x8121, 0x8115, 0x8127, - 0x811D, 0x8122, 0x8211, 0x8238, 0x8233, 0x823A, 0x8234, 0x8232, - 0x8274, 0x8390, 0x83A3, 0x83A8, 0x838D, 0x837A, 0x8373, 0x83A4, - 0x8374, 0x838F, 0x8381, 0x8395, 0x8399, 0x8375, 0x8394, 0x83A9, - 0x837D, 0x8383, 0x838C, 0x839D, 0x839B, 0x83AA, 0x838B, 0x837E, - 0x83A5, 0x83AF, 0x8388, 0x8397, 0x83B0, 0x837F, 0x83A6, 0x8387, - 0x83AE, 0x8376, 0x839A, 0x8659, 0x8656, 0x86BF, 0x86B7, 0, -at 0xA0 - 0, 0x86C2, 0x86C1, 0x86C5, 0x86BA, 0x86B0, 0x86C8, 0x86B9, - 0x86B3, 0x86B8, 0x86CC, 0x86B4, 0x86BB, 0x86BC, 0x86C3, 0x86BD, - 0x86BE, 0x8852, 0x8889, 0x8895, 0x88A8, 0x88A2, 0x88AA, 0x889A, - 0x8891, 0x88A1, 0x889F, 0x8898, 0x88A7, 0x8899, 0x889B, 0x8897, - 0x88A4, 0x88AC, 0x888C, 0x8893, 0x888E, 0x8982, 0x89D6, 0x89D9, - 0x89D5, 0x8A30, 0x8A27, 0x8A2C, 0x8A1E, 0x8C39, 0x8C3B, 0x8C5C, - 0x8C5D, 0x8C7D, 0x8CA5, 0x8D7D, 0x8D7B, 0x8D79, 0x8DBC, 0x8DC2, - 0x8DB9, 0x8DBF, 0x8DC1, 0x8ED8, 0x8EDE, 0x8EDD, 0x8EDC, 0x8ED7, - 0x8EE0, 0x8EE1, 0x9024, 0x900B, 0x9011, 0x901C, 0x900C, 0x9021, - 0x90EF, 0x90EA, 0x90F0, 0x90F4, 0x90F2, 0x90F3, 0x90D4, 0x90EB, - 0x90EC, 0x90E9, 0x9156, 0x9158, 0x915A, 0x9153, 0x9155, 0x91EC, - 0x91F4, 0x91F1, 0x91F3, 0x91F8, 0x91E4, 0x91F9, 0x91EA, 0, -plane d8 -at 0x40 - 0x91EB, 0x91F7, 0x91E8, 0x91EE, 0x957A, 0x9586, 0x9588, 0x967C, - 0x966D, 0x966B, 0x9671, 0x966F, 0x96BF, 0x976A, 0x9804, 0x98E5, - 0x9997, 0x509B, 0x5095, 0x5094, 0x509E, 0x508B, 0x50A3, 0x5083, - 0x508C, 0x508E, 0x509D, 0x5068, 0x509C, 0x5092, 0x5082, 0x5087, - 0x515F, 0x51D4, 0x5312, 0x5311, 0x53A4, 0x53A7, 0x5591, 0x55A8, - 0x55A5, 0x55AD, 0x5577, 0x5645, 0x55A2, 0x5593, 0x5588, 0x558F, - 0x55B5, 0x5581, 0x55A3, 0x5592, 0x55A4, 0x557D, 0x558C, 0x55A6, - 0x557F, 0x5595, 0x55A1, 0x558E, 0x570C, 0x5829, 0x5837, 0, -at 0xA0 - 0, 0x5819, 0x581E, 0x5827, 0x5823, 0x5828, 0x57F5, 0x5848, - 0x5825, 0x581C, 0x581B, 0x5833, 0x583F, 0x5836, 0x582E, 0x5839, - 0x5838, 0x582D, 0x582C, 0x583B, 0x5961, 0x5AAF, 0x5A94, 0x5A9F, - 0x5A7A, 0x5AA2, 0x5A9E, 0x5A78, 0x5AA6, 0x5A7C, 0x5AA5, 0x5AAC, - 0x5A95, 0x5AAE, 0x5A37, 0x5A84, 0x5A8A, 0x5A97, 0x5A83, 0x5A8B, - 0x5AA9, 0x5A7B, 0x5A7D, 0x5A8C, 0x5A9C, 0x5A8F, 0x5A93, 0x5A9D, - 0x5BEA, 0x5BCD, 0x5BCB, 0x5BD4, 0x5BD1, 0x5BCA, 0x5BCE, 0x5C0C, - 0x5C30, 0x5D37, 0x5D43, 0x5D6B, 0x5D41, 0x5D4B, 0x5D3F, 0x5D35, - 0x5D51, 0x5D4E, 0x5D55, 0x5D33, 0x5D3A, 0x5D52, 0x5D3D, 0x5D31, - 0x5D59, 0x5D42, 0x5D39, 0x5D49, 0x5D38, 0x5D3C, 0x5D32, 0x5D36, - 0x5D40, 0x5D45, 0x5E44, 0x5E41, 0x5F58, 0x5FA6, 0x5FA5, 0x5FAB, - 0x60C9, 0x60B9, 0x60CC, 0x60E2, 0x60CE, 0x60C4, 0x6114, 0, -plane d9 -at 0x40 - 0x60F2, 0x610A, 0x6116, 0x6105, 0x60F5, 0x6113, 0x60F8, 0x60FC, - 0x60FE, 0x60C1, 0x6103, 0x6118, 0x611D, 0x6110, 0x60FF, 0x6104, - 0x610B, 0x624A, 0x6394, 0x63B1, 0x63B0, 0x63CE, 0x63E5, 0x63E8, - 0x63EF, 0x63C3, 0x649D, 0x63F3, 0x63CA, 0x63E0, 0x63F6, 0x63D5, - 0x63F2, 0x63F5, 0x6461, 0x63DF, 0x63BE, 0x63DD, 0x63DC, 0x63C4, - 0x63D8, 0x63D3, 0x63C2, 0x63C7, 0x63CC, 0x63CB, 0x63C8, 0x63F0, - 0x63D7, 0x63D9, 0x6532, 0x6567, 0x656A, 0x6564, 0x655C, 0x6568, - 0x6565, 0x658C, 0x659D, 0x659E, 0x65AE, 0x65D0, 0x65D2, 0, -at 0xA0 - 0, 0x667C, 0x666C, 0x667B, 0x6680, 0x6671, 0x6679, 0x666A, - 0x6672, 0x6701, 0x690C, 0x68D3, 0x6904, 0x68DC, 0x692A, 0x68EC, - 0x68EA, 0x68F1, 0x690F, 0x68D6, 0x68F7, 0x68EB, 0x68E4, 0x68F6, - 0x6913, 0x6910, 0x68F3, 0x68E1, 0x6907, 0x68CC, 0x6908, 0x6970, - 0x68B4, 0x6911, 0x68EF, 0x68C6, 0x6914, 0x68F8, 0x68D0, 0x68FD, - 0x68FC, 0x68E8, 0x690B, 0x690A, 0x6917, 0x68CE, 0x68C8, 0x68DD, - 0x68DE, 0x68E6, 0x68F4, 0x68D1, 0x6906, 0x68D4, 0x68E9, 0x6915, - 0x6925, 0x68C7, 0x6B39, 0x6B3B, 0x6B3F, 0x6B3C, 0x6B94, 0x6B97, - 0x6B99, 0x6B95, 0x6BBD, 0x6BF0, 0x6BF2, 0x6BF3, 0x6C30, 0x6DFC, - 0x6E46, 0x6E47, 0x6E1F, 0x6E49, 0x6E88, 0x6E3C, 0x6E3D, 0x6E45, - 0x6E62, 0x6E2B, 0x6E3F, 0x6E41, 0x6E5D, 0x6E73, 0x6E1C, 0x6E33, - 0x6E4B, 0x6E40, 0x6E51, 0x6E3B, 0x6E03, 0x6E2E, 0x6E5E, 0, -plane da -at 0x40 - 0x6E68, 0x6E5C, 0x6E61, 0x6E31, 0x6E28, 0x6E60, 0x6E71, 0x6E6B, - 0x6E39, 0x6E22, 0x6E30, 0x6E53, 0x6E65, 0x6E27, 0x6E78, 0x6E64, - 0x6E77, 0x6E55, 0x6E79, 0x6E52, 0x6E66, 0x6E35, 0x6E36, 0x6E5A, - 0x7120, 0x711E, 0x712F, 0x70FB, 0x712E, 0x7131, 0x7123, 0x7125, - 0x7122, 0x7132, 0x711F, 0x7128, 0x713A, 0x711B, 0x724B, 0x725A, - 0x7288, 0x7289, 0x7286, 0x7285, 0x728B, 0x7312, 0x730B, 0x7330, - 0x7322, 0x7331, 0x7333, 0x7327, 0x7332, 0x732D, 0x7326, 0x7323, - 0x7335, 0x730C, 0x742E, 0x742C, 0x7430, 0x742B, 0x7416, 0, -at 0xA0 - 0, 0x741A, 0x7421, 0x742D, 0x7431, 0x7424, 0x7423, 0x741D, - 0x7429, 0x7420, 0x7432, 0x74FB, 0x752F, 0x756F, 0x756C, 0x75E7, - 0x75DA, 0x75E1, 0x75E6, 0x75DD, 0x75DF, 0x75E4, 0x75D7, 0x7695, - 0x7692, 0x76DA, 0x7746, 0x7747, 0x7744, 0x774D, 0x7745, 0x774A, - 0x774E, 0x774B, 0x774C, 0x77DE, 0x77EC, 0x7860, 0x7864, 0x7865, - 0x785C, 0x786D, 0x7871, 0x786A, 0x786E, 0x7870, 0x7869, 0x7868, - 0x785E, 0x7862, 0x7974, 0x7973, 0x7972, 0x7970, 0x7A02, 0x7A0A, - 0x7A03, 0x7A0C, 0x7A04, 0x7A99, 0x7AE6, 0x7AE4, 0x7B4A, 0x7B3B, - 0x7B44, 0x7B48, 0x7B4C, 0x7B4E, 0x7B40, 0x7B58, 0x7B45, 0x7CA2, - 0x7C9E, 0x7CA8, 0x7CA1, 0x7D58, 0x7D6F, 0x7D63, 0x7D53, 0x7D56, - 0x7D67, 0x7D6A, 0x7D4F, 0x7D6D, 0x7D5C, 0x7D6B, 0x7D52, 0x7D54, - 0x7D69, 0x7D51, 0x7D5F, 0x7D4E, 0x7F3E, 0x7F3F, 0x7F65, 0, -plane db -at 0x40 - 0x7F66, 0x7FA2, 0x7FA0, 0x7FA1, 0x7FD7, 0x8051, 0x804F, 0x8050, - 0x80FE, 0x80D4, 0x8143, 0x814A, 0x8152, 0x814F, 0x8147, 0x813D, - 0x814D, 0x813A, 0x81E6, 0x81EE, 0x81F7, 0x81F8, 0x81F9, 0x8204, - 0x823C, 0x823D, 0x823F, 0x8275, 0x833B, 0x83CF, 0x83F9, 0x8423, - 0x83C0, 0x83E8, 0x8412, 0x83E7, 0x83E4, 0x83FC, 0x83F6, 0x8410, - 0x83C6, 0x83C8, 0x83EB, 0x83E3, 0x83BF, 0x8401, 0x83DD, 0x83E5, - 0x83D8, 0x83FF, 0x83E1, 0x83CB, 0x83CE, 0x83D6, 0x83F5, 0x83C9, - 0x8409, 0x840F, 0x83DE, 0x8411, 0x8406, 0x83C2, 0x83F3, 0, -at 0xA0 - 0, 0x83D5, 0x83FA, 0x83C7, 0x83D1, 0x83EA, 0x8413, 0x83C3, - 0x83EC, 0x83EE, 0x83C4, 0x83FB, 0x83D7, 0x83E2, 0x841B, 0x83DB, - 0x83FE, 0x86D8, 0x86E2, 0x86E6, 0x86D3, 0x86E3, 0x86DA, 0x86EA, - 0x86DD, 0x86EB, 0x86DC, 0x86EC, 0x86E9, 0x86D7, 0x86E8, 0x86D1, - 0x8848, 0x8856, 0x8855, 0x88BA, 0x88D7, 0x88B9, 0x88B8, 0x88C0, - 0x88BE, 0x88B6, 0x88BC, 0x88B7, 0x88BD, 0x88B2, 0x8901, 0x88C9, - 0x8995, 0x8998, 0x8997, 0x89DD, 0x89DA, 0x89DB, 0x8A4E, 0x8A4D, - 0x8A39, 0x8A59, 0x8A40, 0x8A57, 0x8A58, 0x8A44, 0x8A45, 0x8A52, - 0x8A48, 0x8A51, 0x8A4A, 0x8A4C, 0x8A4F, 0x8C5F, 0x8C81, 0x8C80, - 0x8CBA, 0x8CBE, 0x8CB0, 0x8CB9, 0x8CB5, 0x8D84, 0x8D80, 0x8D89, - 0x8DD8, 0x8DD3, 0x8DCD, 0x8DC7, 0x8DD6, 0x8DDC, 0x8DCF, 0x8DD5, - 0x8DD9, 0x8DC8, 0x8DD7, 0x8DC5, 0x8EEF, 0x8EF7, 0x8EFA, 0, -plane dc -at 0x40 - 0x8EF9, 0x8EE6, 0x8EEE, 0x8EE5, 0x8EF5, 0x8EE7, 0x8EE8, 0x8EF6, - 0x8EEB, 0x8EF1, 0x8EEC, 0x8EF4, 0x8EE9, 0x902D, 0x9034, 0x902F, - 0x9106, 0x912C, 0x9104, 0x90FF, 0x90FC, 0x9108, 0x90F9, 0x90FB, - 0x9101, 0x9100, 0x9107, 0x9105, 0x9103, 0x9161, 0x9164, 0x915F, - 0x9162, 0x9160, 0x9201, 0x920A, 0x9225, 0x9203, 0x921A, 0x9226, - 0x920F, 0x920C, 0x9200, 0x9212, 0x91FF, 0x91FD, 0x9206, 0x9204, - 0x9227, 0x9202, 0x921C, 0x9224, 0x9219, 0x9217, 0x9205, 0x9216, - 0x957B, 0x958D, 0x958C, 0x9590, 0x9687, 0x967E, 0x9688, 0, -at 0xA0 - 0, 0x9689, 0x9683, 0x9680, 0x96C2, 0x96C8, 0x96C3, 0x96F1, - 0x96F0, 0x976C, 0x9770, 0x976E, 0x9807, 0x98A9, 0x98EB, 0x9CE6, - 0x9EF9, 0x4E83, 0x4E84, 0x4EB6, 0x50BD, 0x50BF, 0x50C6, 0x50AE, - 0x50C4, 0x50CA, 0x50B4, 0x50C8, 0x50C2, 0x50B0, 0x50C1, 0x50BA, - 0x50B1, 0x50CB, 0x50C9, 0x50B6, 0x50B8, 0x51D7, 0x527A, 0x5278, - 0x527B, 0x527C, 0x55C3, 0x55DB, 0x55CC, 0x55D0, 0x55CB, 0x55CA, - 0x55DD, 0x55C0, 0x55D4, 0x55C4, 0x55E9, 0x55BF, 0x55D2, 0x558D, - 0x55CF, 0x55D5, 0x55E2, 0x55D6, 0x55C8, 0x55F2, 0x55CD, 0x55D9, - 0x55C2, 0x5714, 0x5853, 0x5868, 0x5864, 0x584F, 0x584D, 0x5849, - 0x586F, 0x5855, 0x584E, 0x585D, 0x5859, 0x5865, 0x585B, 0x583D, - 0x5863, 0x5871, 0x58FC, 0x5AC7, 0x5AC4, 0x5ACB, 0x5ABA, 0x5AB8, - 0x5AB1, 0x5AB5, 0x5AB0, 0x5ABF, 0x5AC8, 0x5ABB, 0x5AC6, 0, -plane dd -at 0x40 - 0x5AB7, 0x5AC0, 0x5ACA, 0x5AB4, 0x5AB6, 0x5ACD, 0x5AB9, 0x5A90, - 0x5BD6, 0x5BD8, 0x5BD9, 0x5C1F, 0x5C33, 0x5D71, 0x5D63, 0x5D4A, - 0x5D65, 0x5D72, 0x5D6C, 0x5D5E, 0x5D68, 0x5D67, 0x5D62, 0x5DF0, - 0x5E4F, 0x5E4E, 0x5E4A, 0x5E4D, 0x5E4B, 0x5EC5, 0x5ECC, 0x5EC6, - 0x5ECB, 0x5EC7, 0x5F40, 0x5FAF, 0x5FAD, 0x60F7, 0x6149, 0x614A, - 0x612B, 0x6145, 0x6136, 0x6132, 0x612E, 0x6146, 0x612F, 0x614F, - 0x6129, 0x6140, 0x6220, 0x9168, 0x6223, 0x6225, 0x6224, 0x63C5, - 0x63F1, 0x63EB, 0x6410, 0x6412, 0x6409, 0x6420, 0x6424, 0, -at 0xA0 - 0, 0x6433, 0x6443, 0x641F, 0x6415, 0x6418, 0x6439, 0x6437, - 0x6422, 0x6423, 0x640C, 0x6426, 0x6430, 0x6428, 0x6441, 0x6435, - 0x642F, 0x640A, 0x641A, 0x6440, 0x6425, 0x6427, 0x640B, 0x63E7, - 0x641B, 0x642E, 0x6421, 0x640E, 0x656F, 0x6592, 0x65D3, 0x6686, - 0x668C, 0x6695, 0x6690, 0x668B, 0x668A, 0x6699, 0x6694, 0x6678, - 0x6720, 0x6966, 0x695F, 0x6938, 0x694E, 0x6962, 0x6971, 0x693F, - 0x6945, 0x696A, 0x6939, 0x6942, 0x6957, 0x6959, 0x697A, 0x6948, - 0x6949, 0x6935, 0x696C, 0x6933, 0x693D, 0x6965, 0x68F0, 0x6978, - 0x6934, 0x6969, 0x6940, 0x696F, 0x6944, 0x6976, 0x6958, 0x6941, - 0x6974, 0x694C, 0x693B, 0x694B, 0x6937, 0x695C, 0x694F, 0x6951, - 0x6932, 0x6952, 0x692F, 0x697B, 0x693C, 0x6B46, 0x6B45, 0x6B43, - 0x6B42, 0x6B48, 0x6B41, 0x6B9B, 0xFA0D, 0x6BFB, 0x6BFC, 0, -plane de -at 0x40 - 0x6BF9, 0x6BF7, 0x6BF8, 0x6E9B, 0x6ED6, 0x6EC8, 0x6E8F, 0x6EC0, - 0x6E9F, 0x6E93, 0x6E94, 0x6EA0, 0x6EB1, 0x6EB9, 0x6EC6, 0x6ED2, - 0x6EBD, 0x6EC1, 0x6E9E, 0x6EC9, 0x6EB7, 0x6EB0, 0x6ECD, 0x6EA6, - 0x6ECF, 0x6EB2, 0x6EBE, 0x6EC3, 0x6EDC, 0x6ED8, 0x6E99, 0x6E92, - 0x6E8E, 0x6E8D, 0x6EA4, 0x6EA1, 0x6EBF, 0x6EB3, 0x6ED0, 0x6ECA, - 0x6E97, 0x6EAE, 0x6EA3, 0x7147, 0x7154, 0x7152, 0x7163, 0x7160, - 0x7141, 0x715D, 0x7162, 0x7172, 0x7178, 0x716A, 0x7161, 0x7142, - 0x7158, 0x7143, 0x714B, 0x7170, 0x715F, 0x7150, 0x7153, 0, -at 0xA0 - 0, 0x7144, 0x714D, 0x715A, 0x724F, 0x728D, 0x728C, 0x7291, - 0x7290, 0x728E, 0x733C, 0x7342, 0x733B, 0x733A, 0x7340, 0x734A, - 0x7349, 0x7444, 0x744A, 0x744B, 0x7452, 0x7451, 0x7457, 0x7440, - 0x744F, 0x7450, 0x744E, 0x7442, 0x7446, 0x744D, 0x7454, 0x74E1, - 0x74FF, 0x74FE, 0x74FD, 0x751D, 0x7579, 0x7577, 0x6983, 0x75EF, - 0x760F, 0x7603, 0x75F7, 0x75FE, 0x75FC, 0x75F9, 0x75F8, 0x7610, - 0x75FB, 0x75F6, 0x75ED, 0x75F5, 0x75FD, 0x7699, 0x76B5, 0x76DD, - 0x7755, 0x775F, 0x7760, 0x7752, 0x7756, 0x775A, 0x7769, 0x7767, - 0x7754, 0x7759, 0x776D, 0x77E0, 0x7887, 0x789A, 0x7894, 0x788F, - 0x7884, 0x7895, 0x7885, 0x7886, 0x78A1, 0x7883, 0x7879, 0x7899, - 0x7880, 0x7896, 0x787B, 0x797C, 0x7982, 0x797D, 0x7979, 0x7A11, - 0x7A18, 0x7A19, 0x7A12, 0x7A17, 0x7A15, 0x7A22, 0x7A13, 0, -plane df -at 0x40 - 0x7A1B, 0x7A10, 0x7AA3, 0x7AA2, 0x7A9E, 0x7AEB, 0x7B66, 0x7B64, - 0x7B6D, 0x7B74, 0x7B69, 0x7B72, 0x7B65, 0x7B73, 0x7B71, 0x7B70, - 0x7B61, 0x7B78, 0x7B76, 0x7B63, 0x7CB2, 0x7CB4, 0x7CAF, 0x7D88, - 0x7D86, 0x7D80, 0x7D8D, 0x7D7F, 0x7D85, 0x7D7A, 0x7D8E, 0x7D7B, - 0x7D83, 0x7D7C, 0x7D8C, 0x7D94, 0x7D84, 0x7D7D, 0x7D92, 0x7F6D, - 0x7F6B, 0x7F67, 0x7F68, 0x7F6C, 0x7FA6, 0x7FA5, 0x7FA7, 0x7FDB, - 0x7FDC, 0x8021, 0x8164, 0x8160, 0x8177, 0x815C, 0x8169, 0x815B, - 0x8162, 0x8172, 0x6721, 0x815E, 0x8176, 0x8167, 0x816F, 0, -at 0xA0 - 0, 0x8144, 0x8161, 0x821D, 0x8249, 0x8244, 0x8240, 0x8242, - 0x8245, 0x84F1, 0x843F, 0x8456, 0x8476, 0x8479, 0x848F, 0x848D, - 0x8465, 0x8451, 0x8440, 0x8486, 0x8467, 0x8430, 0x844D, 0x847D, - 0x845A, 0x8459, 0x8474, 0x8473, 0x845D, 0x8507, 0x845E, 0x8437, - 0x843A, 0x8434, 0x847A, 0x8443, 0x8478, 0x8432, 0x8445, 0x8429, - 0x83D9, 0x844B, 0x842F, 0x8442, 0x842D, 0x845F, 0x8470, 0x8439, - 0x844E, 0x844C, 0x8452, 0x846F, 0x84C5, 0x848E, 0x843B, 0x8447, - 0x8436, 0x8433, 0x8468, 0x847E, 0x8444, 0x842B, 0x8460, 0x8454, - 0x846E, 0x8450, 0x870B, 0x8704, 0x86F7, 0x870C, 0x86FA, 0x86D6, - 0x86F5, 0x874D, 0x86F8, 0x870E, 0x8709, 0x8701, 0x86F6, 0x870D, - 0x8705, 0x88D6, 0x88CB, 0x88CD, 0x88CE, 0x88DE, 0x88DB, 0x88DA, - 0x88CC, 0x88D0, 0x8985, 0x899B, 0x89DF, 0x89E5, 0x89E4, 0, -plane e0 -at 0x40 - 0x89E1, 0x89E0, 0x89E2, 0x89DC, 0x89E6, 0x8A76, 0x8A86, 0x8A7F, - 0x8A61, 0x8A3F, 0x8A77, 0x8A82, 0x8A84, 0x8A75, 0x8A83, 0x8A81, - 0x8A74, 0x8A7A, 0x8C3C, 0x8C4B, 0x8C4A, 0x8C65, 0x8C64, 0x8C66, - 0x8C86, 0x8C84, 0x8C85, 0x8CCC, 0x8D68, 0x8D69, 0x8D91, 0x8D8C, - 0x8D8E, 0x8D8F, 0x8D8D, 0x8D93, 0x8D94, 0x8D90, 0x8D92, 0x8DF0, - 0x8DE0, 0x8DEC, 0x8DF1, 0x8DEE, 0x8DD0, 0x8DE9, 0x8DE3, 0x8DE2, - 0x8DE7, 0x8DF2, 0x8DEB, 0x8DF4, 0x8F06, 0x8EFF, 0x8F01, 0x8F00, - 0x8F05, 0x8F07, 0x8F08, 0x8F02, 0x8F0B, 0x9052, 0x903F, 0, -at 0xA0 - 0, 0x9044, 0x9049, 0x903D, 0x9110, 0x910D, 0x910F, 0x9111, - 0x9116, 0x9114, 0x910B, 0x910E, 0x916E, 0x916F, 0x9248, 0x9252, - 0x9230, 0x923A, 0x9266, 0x9233, 0x9265, 0x925E, 0x9283, 0x922E, - 0x924A, 0x9246, 0x926D, 0x926C, 0x924F, 0x9260, 0x9267, 0x926F, - 0x9236, 0x9261, 0x9270, 0x9231, 0x9254, 0x9263, 0x9250, 0x9272, - 0x924E, 0x9253, 0x924C, 0x9256, 0x9232, 0x959F, 0x959C, 0x959E, - 0x959B, 0x9692, 0x9693, 0x9691, 0x9697, 0x96CE, 0x96FA, 0x96FD, - 0x96F8, 0x96F5, 0x9773, 0x9777, 0x9778, 0x9772, 0x980F, 0x980D, - 0x980E, 0x98AC, 0x98F6, 0x98F9, 0x99AF, 0x99B2, 0x99B0, 0x99B5, - 0x9AAD, 0x9AAB, 0x9B5B, 0x9CEA, 0x9CED, 0x9CE7, 0x9E80, 0x9EFD, - 0x50E6, 0x50D4, 0x50D7, 0x50E8, 0x50F3, 0x50DB, 0x50EA, 0x50DD, - 0x50E4, 0x50D3, 0x50EC, 0x50F0, 0x50EF, 0x50E3, 0x50E0, 0, -plane e1 -at 0x40 - 0x51D8, 0x5280, 0x5281, 0x52E9, 0x52EB, 0x5330, 0x53AC, 0x5627, - 0x5615, 0x560C, 0x5612, 0x55FC, 0x560F, 0x561C, 0x5601, 0x5613, - 0x5602, 0x55FA, 0x561D, 0x5604, 0x55FF, 0x55F9, 0x5889, 0x587C, - 0x5890, 0x5898, 0x5886, 0x5881, 0x587F, 0x5874, 0x588B, 0x587A, - 0x5887, 0x5891, 0x588E, 0x5876, 0x5882, 0x5888, 0x587B, 0x5894, - 0x588F, 0x58FE, 0x596B, 0x5ADC, 0x5AEE, 0x5AE5, 0x5AD5, 0x5AEA, - 0x5ADA, 0x5AED, 0x5AEB, 0x5AF3, 0x5AE2, 0x5AE0, 0x5ADB, 0x5AEC, - 0x5ADE, 0x5ADD, 0x5AD9, 0x5AE8, 0x5ADF, 0x5B77, 0x5BE0, 0, -at 0xA0 - 0, 0x5BE3, 0x5C63, 0x5D82, 0x5D80, 0x5D7D, 0x5D86, 0x5D7A, - 0x5D81, 0x5D77, 0x5D8A, 0x5D89, 0x5D88, 0x5D7E, 0x5D7C, 0x5D8D, - 0x5D79, 0x5D7F, 0x5E58, 0x5E59, 0x5E53, 0x5ED8, 0x5ED1, 0x5ED7, - 0x5ECE, 0x5EDC, 0x5ED5, 0x5ED9, 0x5ED2, 0x5ED4, 0x5F44, 0x5F43, - 0x5F6F, 0x5FB6, 0x612C, 0x6128, 0x6141, 0x615E, 0x6171, 0x6173, - 0x6152, 0x6153, 0x6172, 0x616C, 0x6180, 0x6174, 0x6154, 0x617A, - 0x615B, 0x6165, 0x613B, 0x616A, 0x6161, 0x6156, 0x6229, 0x6227, - 0x622B, 0x642B, 0x644D, 0x645B, 0x645D, 0x6474, 0x6476, 0x6472, - 0x6473, 0x647D, 0x6475, 0x6466, 0x64A6, 0x644E, 0x6482, 0x645E, - 0x645C, 0x644B, 0x6453, 0x6460, 0x6450, 0x647F, 0x643F, 0x646C, - 0x646B, 0x6459, 0x6465, 0x6477, 0x6573, 0x65A0, 0x66A1, 0x66A0, - 0x669F, 0x6705, 0x6704, 0x6722, 0x69B1, 0x69B6, 0x69C9, 0, -plane e2 -at 0x40 - 0x69A0, 0x69CE, 0x6996, 0x69B0, 0x69AC, 0x69BC, 0x6991, 0x6999, - 0x698E, 0x69A7, 0x698D, 0x69A9, 0x69BE, 0x69AF, 0x69BF, 0x69C4, - 0x69BD, 0x69A4, 0x69D4, 0x69B9, 0x69CA, 0x699A, 0x69CF, 0x69B3, - 0x6993, 0x69AA, 0x69A1, 0x699E, 0x69D9, 0x6997, 0x6990, 0x69C2, - 0x69B5, 0x69A5, 0x69C6, 0x6B4A, 0x6B4D, 0x6B4B, 0x6B9E, 0x6B9F, - 0x6BA0, 0x6BC3, 0x6BC4, 0x6BFE, 0x6ECE, 0x6EF5, 0x6EF1, 0x6F03, - 0x6F25, 0x6EF8, 0x6F37, 0x6EFB, 0x6F2E, 0x6F09, 0x6F4E, 0x6F19, - 0x6F1A, 0x6F27, 0x6F18, 0x6F3B, 0x6F12, 0x6EED, 0x6F0A, 0, -at 0xA0 - 0, 0x6F36, 0x6F73, 0x6EF9, 0x6EEE, 0x6F2D, 0x6F40, 0x6F30, - 0x6F3C, 0x6F35, 0x6EEB, 0x6F07, 0x6F0E, 0x6F43, 0x6F05, 0x6EFD, - 0x6EF6, 0x6F39, 0x6F1C, 0x6EFC, 0x6F3A, 0x6F1F, 0x6F0D, 0x6F1E, - 0x6F08, 0x6F21, 0x7187, 0x7190, 0x7189, 0x7180, 0x7185, 0x7182, - 0x718F, 0x717B, 0x7186, 0x7181, 0x7197, 0x7244, 0x7253, 0x7297, - 0x7295, 0x7293, 0x7343, 0x734D, 0x7351, 0x734C, 0x7462, 0x7473, - 0x7471, 0x7475, 0x7472, 0x7467, 0x746E, 0x7500, 0x7502, 0x7503, - 0x757D, 0x7590, 0x7616, 0x7608, 0x760C, 0x7615, 0x7611, 0x760A, - 0x7614, 0x76B8, 0x7781, 0x777C, 0x7785, 0x7782, 0x776E, 0x7780, - 0x776F, 0x777E, 0x7783, 0x78B2, 0x78AA, 0x78B4, 0x78AD, 0x78A8, - 0x787E, 0x78AB, 0x789E, 0x78A5, 0x78A0, 0x78AC, 0x78A2, 0x78A4, - 0x7998, 0x798A, 0x798B, 0x7996, 0x7995, 0x7994, 0x7993, 0, -plane e3 -at 0x40 - 0x7997, 0x7988, 0x7992, 0x7990, 0x7A2B, 0x7A4A, 0x7A30, 0x7A2F, - 0x7A28, 0x7A26, 0x7AA8, 0x7AAB, 0x7AAC, 0x7AEE, 0x7B88, 0x7B9C, - 0x7B8A, 0x7B91, 0x7B90, 0x7B96, 0x7B8D, 0x7B8C, 0x7B9B, 0x7B8E, - 0x7B85, 0x7B98, 0x5284, 0x7B99, 0x7BA4, 0x7B82, 0x7CBB, 0x7CBF, - 0x7CBC, 0x7CBA, 0x7DA7, 0x7DB7, 0x7DC2, 0x7DA3, 0x7DAA, 0x7DC1, - 0x7DC0, 0x7DC5, 0x7D9D, 0x7DCE, 0x7DC4, 0x7DC6, 0x7DCB, 0x7DCC, - 0x7DAF, 0x7DB9, 0x7D96, 0x7DBC, 0x7D9F, 0x7DA6, 0x7DAE, 0x7DA9, - 0x7DA1, 0x7DC9, 0x7F73, 0x7FE2, 0x7FE3, 0x7FE5, 0x7FDE, 0, -at 0xA0 - 0, 0x8024, 0x805D, 0x805C, 0x8189, 0x8186, 0x8183, 0x8187, - 0x818D, 0x818C, 0x818B, 0x8215, 0x8497, 0x84A4, 0x84A1, 0x849F, - 0x84BA, 0x84CE, 0x84C2, 0x84AC, 0x84AE, 0x84AB, 0x84B9, 0x84B4, - 0x84C1, 0x84CD, 0x84AA, 0x849A, 0x84B1, 0x84D0, 0x849D, 0x84A7, - 0x84BB, 0x84A2, 0x8494, 0x84C7, 0x84CC, 0x849B, 0x84A9, 0x84AF, - 0x84A8, 0x84D6, 0x8498, 0x84B6, 0x84CF, 0x84A0, 0x84D7, 0x84D4, - 0x84D2, 0x84DB, 0x84B0, 0x8491, 0x8661, 0x8733, 0x8723, 0x8728, - 0x876B, 0x8740, 0x872E, 0x871E, 0x8721, 0x8719, 0x871B, 0x8743, - 0x872C, 0x8741, 0x873E, 0x8746, 0x8720, 0x8732, 0x872A, 0x872D, - 0x873C, 0x8712, 0x873A, 0x8731, 0x8735, 0x8742, 0x8726, 0x8727, - 0x8738, 0x8724, 0x871A, 0x8730, 0x8711, 0x88F7, 0x88E7, 0x88F1, - 0x88F2, 0x88FA, 0x88FE, 0x88EE, 0x88FC, 0x88F6, 0x88FB, 0, -plane e4 -at 0x40 - 0x88F0, 0x88EC, 0x88EB, 0x899D, 0x89A1, 0x899F, 0x899E, 0x89E9, - 0x89EB, 0x89E8, 0x8AAB, 0x8A99, 0x8A8B, 0x8A92, 0x8A8F, 0x8A96, - 0x8C3D, 0x8C68, 0x8C69, 0x8CD5, 0x8CCF, 0x8CD7, 0x8D96, 0x8E09, - 0x8E02, 0x8DFF, 0x8E0D, 0x8DFD, 0x8E0A, 0x8E03, 0x8E07, 0x8E06, - 0x8E05, 0x8DFE, 0x8E00, 0x8E04, 0x8F10, 0x8F11, 0x8F0E, 0x8F0D, - 0x9123, 0x911C, 0x9120, 0x9122, 0x911F, 0x911D, 0x911A, 0x9124, - 0x9121, 0x911B, 0x917A, 0x9172, 0x9179, 0x9173, 0x92A5, 0x92A4, - 0x9276, 0x929B, 0x927A, 0x92A0, 0x9294, 0x92AA, 0x928D, 0, -at 0xA0 - 0, 0x92A6, 0x929A, 0x92AB, 0x9279, 0x9297, 0x927F, 0x92A3, - 0x92EE, 0x928E, 0x9282, 0x9295, 0x92A2, 0x927D, 0x9288, 0x92A1, - 0x928A, 0x9286, 0x928C, 0x9299, 0x92A7, 0x927E, 0x9287, 0x92A9, - 0x929D, 0x928B, 0x922D, 0x969E, 0x96A1, 0x96FF, 0x9758, 0x977D, - 0x977A, 0x977E, 0x9783, 0x9780, 0x9782, 0x977B, 0x9784, 0x9781, - 0x977F, 0x97CE, 0x97CD, 0x9816, 0x98AD, 0x98AE, 0x9902, 0x9900, - 0x9907, 0x999D, 0x999C, 0x99C3, 0x99B9, 0x99BB, 0x99BA, 0x99C2, - 0x99BD, 0x99C7, 0x9AB1, 0x9AE3, 0x9AE7, 0x9B3E, 0x9B3F, 0x9B60, - 0x9B61, 0x9B5F, 0x9CF1, 0x9CF2, 0x9CF5, 0x9EA7, 0x50FF, 0x5103, - 0x5130, 0x50F8, 0x5106, 0x5107, 0x50F6, 0x50FE, 0x510B, 0x510C, - 0x50FD, 0x510A, 0x528B, 0x528C, 0x52F1, 0x52EF, 0x5648, 0x5642, - 0x564C, 0x5635, 0x5641, 0x564A, 0x5649, 0x5646, 0x5658, 0, -plane e5 -at 0x40 - 0x565A, 0x5640, 0x5633, 0x563D, 0x562C, 0x563E, 0x5638, 0x562A, - 0x563A, 0x571A, 0x58AB, 0x589D, 0x58B1, 0x58A0, 0x58A3, 0x58AF, - 0x58AC, 0x58A5, 0x58A1, 0x58FF, 0x5AFF, 0x5AF4, 0x5AFD, 0x5AF7, - 0x5AF6, 0x5B03, 0x5AF8, 0x5B02, 0x5AF9, 0x5B01, 0x5B07, 0x5B05, - 0x5B0F, 0x5C67, 0x5D99, 0x5D97, 0x5D9F, 0x5D92, 0x5DA2, 0x5D93, - 0x5D95, 0x5DA0, 0x5D9C, 0x5DA1, 0x5D9A, 0x5D9E, 0x5E69, 0x5E5D, - 0x5E60, 0x5E5C, 0x7DF3, 0x5EDB, 0x5EDE, 0x5EE1, 0x5F49, 0x5FB2, - 0x618B, 0x6183, 0x6179, 0x61B1, 0x61B0, 0x61A2, 0x6189, 0, -at 0xA0 - 0, 0x619B, 0x6193, 0x61AF, 0x61AD, 0x619F, 0x6192, 0x61AA, - 0x61A1, 0x618D, 0x6166, 0x61B3, 0x622D, 0x646E, 0x6470, 0x6496, - 0x64A0, 0x6485, 0x6497, 0x649C, 0x648F, 0x648B, 0x648A, 0x648C, - 0x64A3, 0x649F, 0x6468, 0x64B1, 0x6498, 0x6576, 0x657A, 0x6579, - 0x657B, 0x65B2, 0x65B3, 0x66B5, 0x66B0, 0x66A9, 0x66B2, 0x66B7, - 0x66AA, 0x66AF, 0x6A00, 0x6A06, 0x6A17, 0x69E5, 0x69F8, 0x6A15, - 0x69F1, 0x69E4, 0x6A20, 0x69FF, 0x69EC, 0x69E2, 0x6A1B, 0x6A1D, - 0x69FE, 0x6A27, 0x69F2, 0x69EE, 0x6A14, 0x69F7, 0x69E7, 0x6A40, - 0x6A08, 0x69E6, 0x69FB, 0x6A0D, 0x69FC, 0x69EB, 0x6A09, 0x6A04, - 0x6A18, 0x6A25, 0x6A0F, 0x69F6, 0x6A26, 0x6A07, 0x69F4, 0x6A16, - 0x6B51, 0x6BA5, 0x6BA3, 0x6BA2, 0x6BA6, 0x6C01, 0x6C00, 0x6BFF, - 0x6C02, 0x6F41, 0x6F26, 0x6F7E, 0x6F87, 0x6FC6, 0x6F92, 0, -plane e6 -at 0x40 - 0x6F8D, 0x6F89, 0x6F8C, 0x6F62, 0x6F4F, 0x6F85, 0x6F5A, 0x6F96, - 0x6F76, 0x6F6C, 0x6F82, 0x6F55, 0x6F72, 0x6F52, 0x6F50, 0x6F57, - 0x6F94, 0x6F93, 0x6F5D, 0x6F00, 0x6F61, 0x6F6B, 0x6F7D, 0x6F67, - 0x6F90, 0x6F53, 0x6F8B, 0x6F69, 0x6F7F, 0x6F95, 0x6F63, 0x6F77, - 0x6F6A, 0x6F7B, 0x71B2, 0x71AF, 0x719B, 0x71B0, 0x71A0, 0x719A, - 0x71A9, 0x71B5, 0x719D, 0x71A5, 0x719E, 0x71A4, 0x71A1, 0x71AA, - 0x719C, 0x71A7, 0x71B3, 0x7298, 0x729A, 0x7358, 0x7352, 0x735E, - 0x735F, 0x7360, 0x735D, 0x735B, 0x7361, 0x735A, 0x7359, 0, -at 0xA0 - 0, 0x7362, 0x7487, 0x7489, 0x748A, 0x7486, 0x7481, 0x747D, - 0x7485, 0x7488, 0x747C, 0x7479, 0x7508, 0x7507, 0x757E, 0x7625, - 0x761E, 0x7619, 0x761D, 0x761C, 0x7623, 0x761A, 0x7628, 0x761B, - 0x769C, 0x769D, 0x769E, 0x769B, 0x778D, 0x778F, 0x7789, 0x7788, - 0x78CD, 0x78BB, 0x78CF, 0x78CC, 0x78D1, 0x78CE, 0x78D4, 0x78C8, - 0x78C3, 0x78C4, 0x78C9, 0x799A, 0x79A1, 0x79A0, 0x799C, 0x79A2, - 0x799B, 0x6B76, 0x7A39, 0x7AB2, 0x7AB4, 0x7AB3, 0x7BB7, 0x7BCB, - 0x7BBE, 0x7BAC, 0x7BCE, 0x7BAF, 0x7BB9, 0x7BCA, 0x7BB5, 0x7CC5, - 0x7CC8, 0x7CCC, 0x7CCB, 0x7DF7, 0x7DDB, 0x7DEA, 0x7DE7, 0x7DD7, - 0x7DE1, 0x7E03, 0x7DFA, 0x7DE6, 0x7DF6, 0x7DF1, 0x7DF0, 0x7DEE, - 0x7DDF, 0x7F76, 0x7FAC, 0x7FB0, 0x7FAD, 0x7FED, 0x7FEB, 0x7FEA, - 0x7FEC, 0x7FE6, 0x7FE8, 0x8064, 0x8067, 0x81A3, 0x819F, 0, -plane e7 -at 0x40 - 0x819E, 0x8195, 0x81A2, 0x8199, 0x8197, 0x8216, 0x824F, 0x8253, - 0x8252, 0x8250, 0x824E, 0x8251, 0x8524, 0x853B, 0x850F, 0x8500, - 0x8529, 0x850E, 0x8509, 0x850D, 0x851F, 0x850A, 0x8527, 0x851C, - 0x84FB, 0x852B, 0x84FA, 0x8508, 0x850C, 0x84F4, 0x852A, 0x84F2, - 0x8515, 0x84F7, 0x84EB, 0x84F3, 0x84FC, 0x8512, 0x84EA, 0x84E9, - 0x8516, 0x84FE, 0x8528, 0x851D, 0x852E, 0x8502, 0x84FD, 0x851E, - 0x84F6, 0x8531, 0x8526, 0x84E7, 0x84E8, 0x84F0, 0x84EF, 0x84F9, - 0x8518, 0x8520, 0x8530, 0x850B, 0x8519, 0x852F, 0x8662, 0, -at 0xA0 - 0, 0x8756, 0x8763, 0x8764, 0x8777, 0x87E1, 0x8773, 0x8758, - 0x8754, 0x875B, 0x8752, 0x8761, 0x875A, 0x8751, 0x875E, 0x876D, - 0x876A, 0x8750, 0x874E, 0x875F, 0x875D, 0x876F, 0x876C, 0x877A, - 0x876E, 0x875C, 0x8765, 0x874F, 0x877B, 0x8775, 0x8762, 0x8767, - 0x8769, 0x885A, 0x8905, 0x890C, 0x8914, 0x890B, 0x8917, 0x8918, - 0x8919, 0x8906, 0x8916, 0x8911, 0x890E, 0x8909, 0x89A2, 0x89A4, - 0x89A3, 0x89ED, 0x89F0, 0x89EC, 0x8ACF, 0x8AC6, 0x8AB8, 0x8AD3, - 0x8AD1, 0x8AD4, 0x8AD5, 0x8ABB, 0x8AD7, 0x8ABE, 0x8AC0, 0x8AC5, - 0x8AD8, 0x8AC3, 0x8ABA, 0x8ABD, 0x8AD9, 0x8C3E, 0x8C4D, 0x8C8F, - 0x8CE5, 0x8CDF, 0x8CD9, 0x8CE8, 0x8CDA, 0x8CDD, 0x8CE7, 0x8DA0, - 0x8D9C, 0x8DA1, 0x8D9B, 0x8E20, 0x8E23, 0x8E25, 0x8E24, 0x8E2E, - 0x8E15, 0x8E1B, 0x8E16, 0x8E11, 0x8E19, 0x8E26, 0x8E27, 0, -plane e8 -at 0x40 - 0x8E14, 0x8E12, 0x8E18, 0x8E13, 0x8E1C, 0x8E17, 0x8E1A, 0x8F2C, - 0x8F24, 0x8F18, 0x8F1A, 0x8F20, 0x8F23, 0x8F16, 0x8F17, 0x9073, - 0x9070, 0x906F, 0x9067, 0x906B, 0x912F, 0x912B, 0x9129, 0x912A, - 0x9132, 0x9126, 0x912E, 0x9185, 0x9186, 0x918A, 0x9181, 0x9182, - 0x9184, 0x9180, 0x92D0, 0x92C3, 0x92C4, 0x92C0, 0x92D9, 0x92B6, - 0x92CF, 0x92F1, 0x92DF, 0x92D8, 0x92E9, 0x92D7, 0x92DD, 0x92CC, - 0x92EF, 0x92C2, 0x92E8, 0x92CA, 0x92C8, 0x92CE, 0x92E6, 0x92CD, - 0x92D5, 0x92C9, 0x92E0, 0x92DE, 0x92E7, 0x92D1, 0x92D3, 0, -at 0xA0 - 0, 0x92B5, 0x92E1, 0x92C6, 0x92B4, 0x957C, 0x95AC, 0x95AB, - 0x95AE, 0x95B0, 0x96A4, 0x96A2, 0x96D3, 0x9705, 0x9708, 0x9702, - 0x975A, 0x978A, 0x978E, 0x9788, 0x97D0, 0x97CF, 0x981E, 0x981D, - 0x9826, 0x9829, 0x9828, 0x9820, 0x981B, 0x9827, 0x98B2, 0x9908, - 0x98FA, 0x9911, 0x9914, 0x9916, 0x9917, 0x9915, 0x99DC, 0x99CD, - 0x99CF, 0x99D3, 0x99D4, 0x99CE, 0x99C9, 0x99D6, 0x99D8, 0x99CB, - 0x99D7, 0x99CC, 0x9AB3, 0x9AEC, 0x9AEB, 0x9AF3, 0x9AF2, 0x9AF1, - 0x9B46, 0x9B43, 0x9B67, 0x9B74, 0x9B71, 0x9B66, 0x9B76, 0x9B75, - 0x9B70, 0x9B68, 0x9B64, 0x9B6C, 0x9CFC, 0x9CFA, 0x9CFD, 0x9CFF, - 0x9CF7, 0x9D07, 0x9D00, 0x9CF9, 0x9CFB, 0x9D08, 0x9D05, 0x9D04, - 0x9E83, 0x9ED3, 0x9F0F, 0x9F10, 0x511C, 0x5113, 0x5117, 0x511A, - 0x5111, 0x51DE, 0x5334, 0x53E1, 0x5670, 0x5660, 0x566E, 0, -plane e9 -at 0x40 - 0x5673, 0x5666, 0x5663, 0x566D, 0x5672, 0x565E, 0x5677, 0x571C, - 0x571B, 0x58C8, 0x58BD, 0x58C9, 0x58BF, 0x58BA, 0x58C2, 0x58BC, - 0x58C6, 0x5B17, 0x5B19, 0x5B1B, 0x5B21, 0x5B14, 0x5B13, 0x5B10, - 0x5B16, 0x5B28, 0x5B1A, 0x5B20, 0x5B1E, 0x5BEF, 0x5DAC, 0x5DB1, - 0x5DA9, 0x5DA7, 0x5DB5, 0x5DB0, 0x5DAE, 0x5DAA, 0x5DA8, 0x5DB2, - 0x5DAD, 0x5DAF, 0x5DB4, 0x5E67, 0x5E68, 0x5E66, 0x5E6F, 0x5EE9, - 0x5EE7, 0x5EE6, 0x5EE8, 0x5EE5, 0x5F4B, 0x5FBC, 0x619D, 0x61A8, - 0x6196, 0x61C5, 0x61B4, 0x61C6, 0x61C1, 0x61CC, 0x61BA, 0, -at 0xA0 - 0, 0x61BF, 0x61B8, 0x618C, 0x64D7, 0x64D6, 0x64D0, 0x64CF, - 0x64C9, 0x64BD, 0x6489, 0x64C3, 0x64DB, 0x64F3, 0x64D9, 0x6533, - 0x657F, 0x657C, 0x65A2, 0x66C8, 0x66BE, 0x66C0, 0x66CA, 0x66CB, - 0x66CF, 0x66BD, 0x66BB, 0x66BA, 0x66CC, 0x6723, 0x6A34, 0x6A66, - 0x6A49, 0x6A67, 0x6A32, 0x6A68, 0x6A3E, 0x6A5D, 0x6A6D, 0x6A76, - 0x6A5B, 0x6A51, 0x6A28, 0x6A5A, 0x6A3B, 0x6A3F, 0x6A41, 0x6A6A, - 0x6A64, 0x6A50, 0x6A4F, 0x6A54, 0x6A6F, 0x6A69, 0x6A60, 0x6A3C, - 0x6A5E, 0x6A56, 0x6A55, 0x6A4D, 0x6A4E, 0x6A46, 0x6B55, 0x6B54, - 0x6B56, 0x6BA7, 0x6BAA, 0x6BAB, 0x6BC8, 0x6BC7, 0x6C04, 0x6C03, - 0x6C06, 0x6FAD, 0x6FCB, 0x6FA3, 0x6FC7, 0x6FBC, 0x6FCE, 0x6FC8, - 0x6F5E, 0x6FC4, 0x6FBD, 0x6F9E, 0x6FCA, 0x6FA8, 0x7004, 0x6FA5, - 0x6FAE, 0x6FBA, 0x6FAC, 0x6FAA, 0x6FCF, 0x6FBF, 0x6FB8, 0, -plane ea -at 0x40 - 0x6FA2, 0x6FC9, 0x6FAB, 0x6FCD, 0x6FAF, 0x6FB2, 0x6FB0, 0x71C5, - 0x71C2, 0x71BF, 0x71B8, 0x71D6, 0x71C0, 0x71C1, 0x71CB, 0x71D4, - 0x71CA, 0x71C7, 0x71CF, 0x71BD, 0x71D8, 0x71BC, 0x71C6, 0x71DA, - 0x71DB, 0x729D, 0x729E, 0x7369, 0x7366, 0x7367, 0x736C, 0x7365, - 0x736B, 0x736A, 0x747F, 0x749A, 0x74A0, 0x7494, 0x7492, 0x7495, - 0x74A1, 0x750B, 0x7580, 0x762F, 0x762D, 0x7631, 0x763D, 0x7633, - 0x763C, 0x7635, 0x7632, 0x7630, 0x76BB, 0x76E6, 0x779A, 0x779D, - 0x77A1, 0x779C, 0x779B, 0x77A2, 0x77A3, 0x7795, 0x7799, 0, -at 0xA0 - 0, 0x7797, 0x78DD, 0x78E9, 0x78E5, 0x78EA, 0x78DE, 0x78E3, - 0x78DB, 0x78E1, 0x78E2, 0x78ED, 0x78DF, 0x78E0, 0x79A4, 0x7A44, - 0x7A48, 0x7A47, 0x7AB6, 0x7AB8, 0x7AB5, 0x7AB1, 0x7AB7, 0x7BDE, - 0x7BE3, 0x7BE7, 0x7BDD, 0x7BD5, 0x7BE5, 0x7BDA, 0x7BE8, 0x7BF9, - 0x7BD4, 0x7BEA, 0x7BE2, 0x7BDC, 0x7BEB, 0x7BD8, 0x7BDF, 0x7CD2, - 0x7CD4, 0x7CD7, 0x7CD0, 0x7CD1, 0x7E12, 0x7E21, 0x7E17, 0x7E0C, - 0x7E1F, 0x7E20, 0x7E13, 0x7E0E, 0x7E1C, 0x7E15, 0x7E1A, 0x7E22, - 0x7E0B, 0x7E0F, 0x7E16, 0x7E0D, 0x7E14, 0x7E25, 0x7E24, 0x7F43, - 0x7F7B, 0x7F7C, 0x7F7A, 0x7FB1, 0x7FEF, 0x802A, 0x8029, 0x806C, - 0x81B1, 0x81A6, 0x81AE, 0x81B9, 0x81B5, 0x81AB, 0x81B0, 0x81AC, - 0x81B4, 0x81B2, 0x81B7, 0x81A7, 0x81F2, 0x8255, 0x8256, 0x8257, - 0x8556, 0x8545, 0x856B, 0x854D, 0x8553, 0x8561, 0x8558, 0, -plane eb -at 0x40 - 0x8540, 0x8546, 0x8564, 0x8541, 0x8562, 0x8544, 0x8551, 0x8547, - 0x8563, 0x853E, 0x855B, 0x8571, 0x854E, 0x856E, 0x8575, 0x8555, - 0x8567, 0x8560, 0x858C, 0x8566, 0x855D, 0x8554, 0x8565, 0x856C, - 0x8663, 0x8665, 0x8664, 0x879B, 0x878F, 0x8797, 0x8793, 0x8792, - 0x8788, 0x8781, 0x8796, 0x8798, 0x8779, 0x8787, 0x87A3, 0x8785, - 0x8790, 0x8791, 0x879D, 0x8784, 0x8794, 0x879C, 0x879A, 0x8789, - 0x891E, 0x8926, 0x8930, 0x892D, 0x892E, 0x8927, 0x8931, 0x8922, - 0x8929, 0x8923, 0x892F, 0x892C, 0x891F, 0x89F1, 0x8AE0, 0, -at 0xA0 - 0, 0x8AE2, 0x8AF2, 0x8AF4, 0x8AF5, 0x8ADD, 0x8B14, 0x8AE4, - 0x8ADF, 0x8AF0, 0x8AC8, 0x8ADE, 0x8AE1, 0x8AE8, 0x8AFF, 0x8AEF, - 0x8AFB, 0x8C91, 0x8C92, 0x8C90, 0x8CF5, 0x8CEE, 0x8CF1, 0x8CF0, - 0x8CF3, 0x8D6C, 0x8D6E, 0x8DA5, 0x8DA7, 0x8E33, 0x8E3E, 0x8E38, - 0x8E40, 0x8E45, 0x8E36, 0x8E3C, 0x8E3D, 0x8E41, 0x8E30, 0x8E3F, - 0x8EBD, 0x8F36, 0x8F2E, 0x8F35, 0x8F32, 0x8F39, 0x8F37, 0x8F34, - 0x9076, 0x9079, 0x907B, 0x9086, 0x90FA, 0x9133, 0x9135, 0x9136, - 0x9193, 0x9190, 0x9191, 0x918D, 0x918F, 0x9327, 0x931E, 0x9308, - 0x931F, 0x9306, 0x930F, 0x937A, 0x9338, 0x933C, 0x931B, 0x9323, - 0x9312, 0x9301, 0x9346, 0x932D, 0x930E, 0x930D, 0x92CB, 0x931D, - 0x92FA, 0x9325, 0x9313, 0x92F9, 0x92F7, 0x9334, 0x9302, 0x9324, - 0x92FF, 0x9329, 0x9339, 0x9335, 0x932A, 0x9314, 0x930C, 0, -plane ec -at 0x40 - 0x930B, 0x92FE, 0x9309, 0x9300, 0x92FB, 0x9316, 0x95BC, 0x95CD, - 0x95BE, 0x95B9, 0x95BA, 0x95B6, 0x95BF, 0x95B5, 0x95BD, 0x96A9, - 0x96D4, 0x970B, 0x9712, 0x9710, 0x9799, 0x9797, 0x9794, 0x97F0, - 0x97F8, 0x9835, 0x982F, 0x9832, 0x9924, 0x991F, 0x9927, 0x9929, - 0x999E, 0x99EE, 0x99EC, 0x99E5, 0x99E4, 0x99F0, 0x99E3, 0x99EA, - 0x99E9, 0x99E7, 0x9AB9, 0x9ABF, 0x9AB4, 0x9ABB, 0x9AF6, 0x9AFA, - 0x9AF9, 0x9AF7, 0x9B33, 0x9B80, 0x9B85, 0x9B87, 0x9B7C, 0x9B7E, - 0x9B7B, 0x9B82, 0x9B93, 0x9B92, 0x9B90, 0x9B7A, 0x9B95, 0, -at 0xA0 - 0, 0x9B7D, 0x9B88, 0x9D25, 0x9D17, 0x9D20, 0x9D1E, 0x9D14, - 0x9D29, 0x9D1D, 0x9D18, 0x9D22, 0x9D10, 0x9D19, 0x9D1F, 0x9E88, - 0x9E86, 0x9E87, 0x9EAE, 0x9EAD, 0x9ED5, 0x9ED6, 0x9EFA, 0x9F12, - 0x9F3D, 0x5126, 0x5125, 0x5122, 0x5124, 0x5120, 0x5129, 0x52F4, - 0x5693, 0x568C, 0x568D, 0x5686, 0x5684, 0x5683, 0x567E, 0x5682, - 0x567F, 0x5681, 0x58D6, 0x58D4, 0x58CF, 0x58D2, 0x5B2D, 0x5B25, - 0x5B32, 0x5B23, 0x5B2C, 0x5B27, 0x5B26, 0x5B2F, 0x5B2E, 0x5B7B, - 0x5BF1, 0x5BF2, 0x5DB7, 0x5E6C, 0x5E6A, 0x5FBE, 0x5FBB, 0x61C3, - 0x61B5, 0x61BC, 0x61E7, 0x61E0, 0x61E5, 0x61E4, 0x61E8, 0x61DE, - 0x64EF, 0x64E9, 0x64E3, 0x64EB, 0x64E4, 0x64E8, 0x6581, 0x6580, - 0x65B6, 0x65DA, 0x66D2, 0x6A8D, 0x6A96, 0x6A81, 0x6AA5, 0x6A89, - 0x6A9F, 0x6A9B, 0x6AA1, 0x6A9E, 0x6A87, 0x6A93, 0x6A8E, 0, -plane ed -at 0x40 - 0x6A95, 0x6A83, 0x6AA8, 0x6AA4, 0x6A91, 0x6A7F, 0x6AA6, 0x6A9A, - 0x6A85, 0x6A8C, 0x6A92, 0x6B5B, 0x6BAD, 0x6C09, 0x6FCC, 0x6FA9, - 0x6FF4, 0x6FD4, 0x6FE3, 0x6FDC, 0x6FED, 0x6FE7, 0x6FE6, 0x6FDE, - 0x6FF2, 0x6FDD, 0x6FE2, 0x6FE8, 0x71E1, 0x71F1, 0x71E8, 0x71F2, - 0x71E4, 0x71F0, 0x71E2, 0x7373, 0x736E, 0x736F, 0x7497, 0x74B2, - 0x74AB, 0x7490, 0x74AA, 0x74AD, 0x74B1, 0x74A5, 0x74AF, 0x7510, - 0x7511, 0x7512, 0x750F, 0x7584, 0x7643, 0x7648, 0x7649, 0x7647, - 0x76A4, 0x76E9, 0x77B5, 0x77AB, 0x77B2, 0x77B7, 0x77B6, 0, -at 0xA0 - 0, 0x77B4, 0x77B1, 0x77A8, 0x77F0, 0x78F3, 0x78FD, 0x7902, - 0x78FB, 0x78FC, 0x78F2, 0x7905, 0x78F9, 0x78FE, 0x7904, 0x79AB, - 0x79A8, 0x7A5C, 0x7A5B, 0x7A56, 0x7A58, 0x7A54, 0x7A5A, 0x7ABE, - 0x7AC0, 0x7AC1, 0x7C05, 0x7C0F, 0x7BF2, 0x7C00, 0x7BFF, 0x7BFB, - 0x7C0E, 0x7BF4, 0x7C0B, 0x7BF3, 0x7C02, 0x7C09, 0x7C03, 0x7C01, - 0x7BF8, 0x7BFD, 0x7C06, 0x7BF0, 0x7BF1, 0x7C10, 0x7C0A, 0x7CE8, - 0x7E2D, 0x7E3C, 0x7E42, 0x7E33, 0x9848, 0x7E38, 0x7E2A, 0x7E49, - 0x7E40, 0x7E47, 0x7E29, 0x7E4C, 0x7E30, 0x7E3B, 0x7E36, 0x7E44, - 0x7E3A, 0x7F45, 0x7F7F, 0x7F7E, 0x7F7D, 0x7FF4, 0x7FF2, 0x802C, - 0x81BB, 0x81C4, 0x81CC, 0x81CA, 0x81C5, 0x81C7, 0x81BC, 0x81E9, - 0x825B, 0x825A, 0x825C, 0x8583, 0x8580, 0x858F, 0x85A7, 0x8595, - 0x85A0, 0x858B, 0x85A3, 0x857B, 0x85A4, 0x859A, 0x859E, 0, -plane ee -at 0x40 - 0x8577, 0x857C, 0x8589, 0x85A1, 0x857A, 0x8578, 0x8557, 0x858E, - 0x8596, 0x8586, 0x858D, 0x8599, 0x859D, 0x8581, 0x85A2, 0x8582, - 0x8588, 0x8585, 0x8579, 0x8576, 0x8598, 0x8590, 0x859F, 0x8668, - 0x87BE, 0x87AA, 0x87AD, 0x87C5, 0x87B0, 0x87AC, 0x87B9, 0x87B5, - 0x87BC, 0x87AE, 0x87C9, 0x87C3, 0x87C2, 0x87CC, 0x87B7, 0x87AF, - 0x87C4, 0x87CA, 0x87B4, 0x87B6, 0x87BF, 0x87B8, 0x87BD, 0x87DE, - 0x87B2, 0x8935, 0x8933, 0x893C, 0x893E, 0x8941, 0x8952, 0x8937, - 0x8942, 0x89AD, 0x89AF, 0x89AE, 0x89F2, 0x89F3, 0x8B1E, 0, -at 0xA0 - 0, 0x8B18, 0x8B16, 0x8B11, 0x8B05, 0x8B0B, 0x8B22, 0x8B0F, - 0x8B12, 0x8B15, 0x8B07, 0x8B0D, 0x8B08, 0x8B06, 0x8B1C, 0x8B13, - 0x8B1A, 0x8C4F, 0x8C70, 0x8C72, 0x8C71, 0x8C6F, 0x8C95, 0x8C94, - 0x8CF9, 0x8D6F, 0x8E4E, 0x8E4D, 0x8E53, 0x8E50, 0x8E4C, 0x8E47, - 0x8F43, 0x8F40, 0x9085, 0x907E, 0x9138, 0x919A, 0x91A2, 0x919B, - 0x9199, 0x919F, 0x91A1, 0x919D, 0x91A0, 0x93A1, 0x9383, 0x93AF, - 0x9364, 0x9356, 0x9347, 0x937C, 0x9358, 0x935C, 0x9376, 0x9349, - 0x9350, 0x9351, 0x9360, 0x936D, 0x938F, 0x934C, 0x936A, 0x9379, - 0x9357, 0x9355, 0x9352, 0x934F, 0x9371, 0x9377, 0x937B, 0x9361, - 0x935E, 0x9363, 0x9367, 0x9380, 0x934E, 0x9359, 0x95C7, 0x95C0, - 0x95C9, 0x95C3, 0x95C5, 0x95B7, 0x96AE, 0x96B0, 0x96AC, 0x9720, - 0x971F, 0x9718, 0x971D, 0x9719, 0x979A, 0x97A1, 0x979C, 0, -plane ef -at 0x40 - 0x979E, 0x979D, 0x97D5, 0x97D4, 0x97F1, 0x9841, 0x9844, 0x984A, - 0x9849, 0x9845, 0x9843, 0x9925, 0x992B, 0x992C, 0x992A, 0x9933, - 0x9932, 0x992F, 0x992D, 0x9931, 0x9930, 0x9998, 0x99A3, 0x99A1, - 0x9A02, 0x99FA, 0x99F4, 0x99F7, 0x99F9, 0x99F8, 0x99F6, 0x99FB, - 0x99FD, 0x99FE, 0x99FC, 0x9A03, 0x9ABE, 0x9AFE, 0x9AFD, 0x9B01, - 0x9AFC, 0x9B48, 0x9B9A, 0x9BA8, 0x9B9E, 0x9B9B, 0x9BA6, 0x9BA1, - 0x9BA5, 0x9BA4, 0x9B86, 0x9BA2, 0x9BA0, 0x9BAF, 0x9D33, 0x9D41, - 0x9D67, 0x9D36, 0x9D2E, 0x9D2F, 0x9D31, 0x9D38, 0x9D30, 0, -at 0xA0 - 0, 0x9D45, 0x9D42, 0x9D43, 0x9D3E, 0x9D37, 0x9D40, 0x9D3D, - 0x7FF5, 0x9D2D, 0x9E8A, 0x9E89, 0x9E8D, 0x9EB0, 0x9EC8, 0x9EDA, - 0x9EFB, 0x9EFF, 0x9F24, 0x9F23, 0x9F22, 0x9F54, 0x9FA0, 0x5131, - 0x512D, 0x512E, 0x5698, 0x569C, 0x5697, 0x569A, 0x569D, 0x5699, - 0x5970, 0x5B3C, 0x5C69, 0x5C6A, 0x5DC0, 0x5E6D, 0x5E6E, 0x61D8, - 0x61DF, 0x61ED, 0x61EE, 0x61F1, 0x61EA, 0x61F0, 0x61EB, 0x61D6, - 0x61E9, 0x64FF, 0x6504, 0x64FD, 0x64F8, 0x6501, 0x6503, 0x64FC, - 0x6594, 0x65DB, 0x66DA, 0x66DB, 0x66D8, 0x6AC5, 0x6AB9, 0x6ABD, - 0x6AE1, 0x6AC6, 0x6ABA, 0x6AB6, 0x6AB7, 0x6AC7, 0x6AB4, 0x6AAD, - 0x6B5E, 0x6BC9, 0x6C0B, 0x7007, 0x700C, 0x700D, 0x7001, 0x7005, - 0x7014, 0x700E, 0x6FFF, 0x7000, 0x6FFB, 0x7026, 0x6FFC, 0x6FF7, - 0x700A, 0x7201, 0x71FF, 0x71F9, 0x7203, 0x71FD, 0x7376, 0, -plane f0 -at 0x40 - 0x74B8, 0x74C0, 0x74B5, 0x74C1, 0x74BE, 0x74B6, 0x74BB, 0x74C2, - 0x7514, 0x7513, 0x765C, 0x7664, 0x7659, 0x7650, 0x7653, 0x7657, - 0x765A, 0x76A6, 0x76BD, 0x76EC, 0x77C2, 0x77BA, 0x78FF, 0x790C, - 0x7913, 0x7914, 0x7909, 0x7910, 0x7912, 0x7911, 0x79AD, 0x79AC, - 0x7A5F, 0x7C1C, 0x7C29, 0x7C19, 0x7C20, 0x7C1F, 0x7C2D, 0x7C1D, - 0x7C26, 0x7C28, 0x7C22, 0x7C25, 0x7C30, 0x7E5C, 0x7E50, 0x7E56, - 0x7E63, 0x7E58, 0x7E62, 0x7E5F, 0x7E51, 0x7E60, 0x7E57, 0x7E53, - 0x7FB5, 0x7FB3, 0x7FF7, 0x7FF8, 0x8075, 0x81D1, 0x81D2, 0, -at 0xA0 - 0, 0x81D0, 0x825F, 0x825E, 0x85B4, 0x85C6, 0x85C0, 0x85C3, - 0x85C2, 0x85B3, 0x85B5, 0x85BD, 0x85C7, 0x85C4, 0x85BF, 0x85CB, - 0x85CE, 0x85C8, 0x85C5, 0x85B1, 0x85B6, 0x85D2, 0x8624, 0x85B8, - 0x85B7, 0x85BE, 0x8669, 0x87E7, 0x87E6, 0x87E2, 0x87DB, 0x87EB, - 0x87EA, 0x87E5, 0x87DF, 0x87F3, 0x87E4, 0x87D4, 0x87DC, 0x87D3, - 0x87ED, 0x87D8, 0x87E3, 0x87A4, 0x87D7, 0x87D9, 0x8801, 0x87F4, - 0x87E8, 0x87DD, 0x8953, 0x894B, 0x894F, 0x894C, 0x8946, 0x8950, - 0x8951, 0x8949, 0x8B2A, 0x8B27, 0x8B23, 0x8B33, 0x8B30, 0x8B35, - 0x8B47, 0x8B2F, 0x8B3C, 0x8B3E, 0x8B31, 0x8B25, 0x8B37, 0x8B26, - 0x8B36, 0x8B2E, 0x8B24, 0x8B3B, 0x8B3D, 0x8B3A, 0x8C42, 0x8C75, - 0x8C99, 0x8C98, 0x8C97, 0x8CFE, 0x8D04, 0x8D02, 0x8D00, 0x8E5C, - 0x8E62, 0x8E60, 0x8E57, 0x8E56, 0x8E5E, 0x8E65, 0x8E67, 0, -plane f1 -at 0x40 - 0x8E5B, 0x8E5A, 0x8E61, 0x8E5D, 0x8E69, 0x8E54, 0x8F46, 0x8F47, - 0x8F48, 0x8F4B, 0x9128, 0x913A, 0x913B, 0x913E, 0x91A8, 0x91A5, - 0x91A7, 0x91AF, 0x91AA, 0x93B5, 0x938C, 0x9392, 0x93B7, 0x939B, - 0x939D, 0x9389, 0x93A7, 0x938E, 0x93AA, 0x939E, 0x93A6, 0x9395, - 0x9388, 0x9399, 0x939F, 0x938D, 0x93B1, 0x9391, 0x93B2, 0x93A4, - 0x93A8, 0x93B4, 0x93A3, 0x93A5, 0x95D2, 0x95D3, 0x95D1, 0x96B3, - 0x96D7, 0x96DA, 0x5DC2, 0x96DF, 0x96D8, 0x96DD, 0x9723, 0x9722, - 0x9725, 0x97AC, 0x97AE, 0x97A8, 0x97AB, 0x97A4, 0x97AA, 0, -at 0xA0 - 0, 0x97A2, 0x97A5, 0x97D7, 0x97D9, 0x97D6, 0x97D8, 0x97FA, - 0x9850, 0x9851, 0x9852, 0x98B8, 0x9941, 0x993C, 0x993A, 0x9A0F, - 0x9A0B, 0x9A09, 0x9A0D, 0x9A04, 0x9A11, 0x9A0A, 0x9A05, 0x9A07, - 0x9A06, 0x9AC0, 0x9ADC, 0x9B08, 0x9B04, 0x9B05, 0x9B29, 0x9B35, - 0x9B4A, 0x9B4C, 0x9B4B, 0x9BC7, 0x9BC6, 0x9BC3, 0x9BBF, 0x9BC1, - 0x9BB5, 0x9BB8, 0x9BD3, 0x9BB6, 0x9BC4, 0x9BB9, 0x9BBD, 0x9D5C, - 0x9D53, 0x9D4F, 0x9D4A, 0x9D5B, 0x9D4B, 0x9D59, 0x9D56, 0x9D4C, - 0x9D57, 0x9D52, 0x9D54, 0x9D5F, 0x9D58, 0x9D5A, 0x9E8E, 0x9E8C, - 0x9EDF, 0x9F01, 0x9F00, 0x9F16, 0x9F25, 0x9F2B, 0x9F2A, 0x9F29, - 0x9F28, 0x9F4C, 0x9F55, 0x5134, 0x5135, 0x5296, 0x52F7, 0x53B4, - 0x56AB, 0x56AD, 0x56A6, 0x56A7, 0x56AA, 0x56AC, 0x58DA, 0x58DD, - 0x58DB, 0x5912, 0x5B3D, 0x5B3E, 0x5B3F, 0x5DC3, 0x5E70, 0, -plane f2 -at 0x40 - 0x5FBF, 0x61FB, 0x6507, 0x6510, 0x650D, 0x6509, 0x650C, 0x650E, - 0x6584, 0x65DE, 0x65DD, 0x66DE, 0x6AE7, 0x6AE0, 0x6ACC, 0x6AD1, - 0x6AD9, 0x6ACB, 0x6ADF, 0x6ADC, 0x6AD0, 0x6AEB, 0x6ACF, 0x6ACD, - 0x6ADE, 0x6B60, 0x6BB0, 0x6C0C, 0x7019, 0x7027, 0x7020, 0x7016, - 0x702B, 0x7021, 0x7022, 0x7023, 0x7029, 0x7017, 0x7024, 0x701C, - 0x702A, 0x720C, 0x720A, 0x7207, 0x7202, 0x7205, 0x72A5, 0x72A6, - 0x72A4, 0x72A3, 0x72A1, 0x74CB, 0x74C5, 0x74B7, 0x74C3, 0x7516, - 0x7660, 0x77C9, 0x77CA, 0x77C4, 0x77F1, 0x791D, 0x791B, 0, -at 0xA0 - 0, 0x7921, 0x791C, 0x7917, 0x791E, 0x79B0, 0x7A67, 0x7A68, - 0x7C33, 0x7C3C, 0x7C39, 0x7C2C, 0x7C3B, 0x7CEC, 0x7CEA, 0x7E76, - 0x7E75, 0x7E78, 0x7E70, 0x7E77, 0x7E6F, 0x7E7A, 0x7E72, 0x7E74, - 0x7E68, 0x7F4B, 0x7F4A, 0x7F83, 0x7F86, 0x7FB7, 0x7FFD, 0x7FFE, - 0x8078, 0x81D7, 0x81D5, 0x8264, 0x8261, 0x8263, 0x85EB, 0x85F1, - 0x85ED, 0x85D9, 0x85E1, 0x85E8, 0x85DA, 0x85D7, 0x85EC, 0x85F2, - 0x85F8, 0x85D8, 0x85DF, 0x85E3, 0x85DC, 0x85D1, 0x85F0, 0x85E6, - 0x85EF, 0x85DE, 0x85E2, 0x8800, 0x87FA, 0x8803, 0x87F6, 0x87F7, - 0x8809, 0x880C, 0x880B, 0x8806, 0x87FC, 0x8808, 0x87FF, 0x880A, - 0x8802, 0x8962, 0x895A, 0x895B, 0x8957, 0x8961, 0x895C, 0x8958, - 0x895D, 0x8959, 0x8988, 0x89B7, 0x89B6, 0x89F6, 0x8B50, 0x8B48, - 0x8B4A, 0x8B40, 0x8B53, 0x8B56, 0x8B54, 0x8B4B, 0x8B55, 0, -plane f3 -at 0x40 - 0x8B51, 0x8B42, 0x8B52, 0x8B57, 0x8C43, 0x8C77, 0x8C76, 0x8C9A, - 0x8D06, 0x8D07, 0x8D09, 0x8DAC, 0x8DAA, 0x8DAD, 0x8DAB, 0x8E6D, - 0x8E78, 0x8E73, 0x8E6A, 0x8E6F, 0x8E7B, 0x8EC2, 0x8F52, 0x8F51, - 0x8F4F, 0x8F50, 0x8F53, 0x8FB4, 0x9140, 0x913F, 0x91B0, 0x91AD, - 0x93DE, 0x93C7, 0x93CF, 0x93C2, 0x93DA, 0x93D0, 0x93F9, 0x93EC, - 0x93CC, 0x93D9, 0x93A9, 0x93E6, 0x93CA, 0x93D4, 0x93EE, 0x93E3, - 0x93D5, 0x93C4, 0x93CE, 0x93C0, 0x93D2, 0x93E7, 0x957D, 0x95DA, - 0x95DB, 0x96E1, 0x9729, 0x972B, 0x972C, 0x9728, 0x9726, 0, -at 0xA0 - 0, 0x97B3, 0x97B7, 0x97B6, 0x97DD, 0x97DE, 0x97DF, 0x985C, - 0x9859, 0x985D, 0x9857, 0x98BF, 0x98BD, 0x98BB, 0x98BE, 0x9948, - 0x9947, 0x9943, 0x99A6, 0x99A7, 0x9A1A, 0x9A15, 0x9A25, 0x9A1D, - 0x9A24, 0x9A1B, 0x9A22, 0x9A20, 0x9A27, 0x9A23, 0x9A1E, 0x9A1C, - 0x9A14, 0x9AC2, 0x9B0B, 0x9B0A, 0x9B0E, 0x9B0C, 0x9B37, 0x9BEA, - 0x9BEB, 0x9BE0, 0x9BDE, 0x9BE4, 0x9BE6, 0x9BE2, 0x9BF0, 0x9BD4, - 0x9BD7, 0x9BEC, 0x9BDC, 0x9BD9, 0x9BE5, 0x9BD5, 0x9BE1, 0x9BDA, - 0x9D77, 0x9D81, 0x9D8A, 0x9D84, 0x9D88, 0x9D71, 0x9D80, 0x9D78, - 0x9D86, 0x9D8B, 0x9D8C, 0x9D7D, 0x9D6B, 0x9D74, 0x9D75, 0x9D70, - 0x9D69, 0x9D85, 0x9D73, 0x9D7B, 0x9D82, 0x9D6F, 0x9D79, 0x9D7F, - 0x9D87, 0x9D68, 0x9E94, 0x9E91, 0x9EC0, 0x9EFC, 0x9F2D, 0x9F40, - 0x9F41, 0x9F4D, 0x9F56, 0x9F57, 0x9F58, 0x5337, 0x56B2, 0, -plane f4 -at 0x40 - 0x56B5, 0x56B3, 0x58E3, 0x5B45, 0x5DC6, 0x5DC7, 0x5EEE, 0x5EEF, - 0x5FC0, 0x5FC1, 0x61F9, 0x6517, 0x6516, 0x6515, 0x6513, 0x65DF, - 0x66E8, 0x66E3, 0x66E4, 0x6AF3, 0x6AF0, 0x6AEA, 0x6AE8, 0x6AF9, - 0x6AF1, 0x6AEE, 0x6AEF, 0x703C, 0x7035, 0x702F, 0x7037, 0x7034, - 0x7031, 0x7042, 0x7038, 0x703F, 0x703A, 0x7039, 0x7040, 0x703B, - 0x7033, 0x7041, 0x7213, 0x7214, 0x72A8, 0x737D, 0x737C, 0x74BA, - 0x76AB, 0x76AA, 0x76BE, 0x76ED, 0x77CC, 0x77CE, 0x77CF, 0x77CD, - 0x77F2, 0x7925, 0x7923, 0x7927, 0x7928, 0x7924, 0x7929, 0, -at 0xA0 - 0, 0x79B2, 0x7A6E, 0x7A6C, 0x7A6D, 0x7AF7, 0x7C49, 0x7C48, - 0x7C4A, 0x7C47, 0x7C45, 0x7CEE, 0x7E7B, 0x7E7E, 0x7E81, 0x7E80, - 0x7FBA, 0x7FFF, 0x8079, 0x81DB, 0x81D9, 0x820B, 0x8268, 0x8269, - 0x8622, 0x85FF, 0x8601, 0x85FE, 0x861B, 0x8600, 0x85F6, 0x8604, - 0x8609, 0x8605, 0x860C, 0x85FD, 0x8819, 0x8810, 0x8811, 0x8817, - 0x8813, 0x8816, 0x8963, 0x8966, 0x89B9, 0x89F7, 0x8B60, 0x8B6A, - 0x8B5D, 0x8B68, 0x8B63, 0x8B65, 0x8B67, 0x8B6D, 0x8DAE, 0x8E86, - 0x8E88, 0x8E84, 0x8F59, 0x8F56, 0x8F57, 0x8F55, 0x8F58, 0x8F5A, - 0x908D, 0x9143, 0x9141, 0x91B7, 0x91B5, 0x91B2, 0x91B3, 0x940B, - 0x9413, 0x93FB, 0x9420, 0x940F, 0x9414, 0x93FE, 0x9415, 0x9410, - 0x9428, 0x9419, 0x940D, 0x93F5, 0x9400, 0x93F7, 0x9407, 0x940E, - 0x9416, 0x9412, 0x93FA, 0x9409, 0x93F8, 0x940A, 0x93FF, 0, -plane f5 -at 0x40 - 0x93FC, 0x940C, 0x93F6, 0x9411, 0x9406, 0x95DE, 0x95E0, 0x95DF, - 0x972E, 0x972F, 0x97B9, 0x97BB, 0x97FD, 0x97FE, 0x9860, 0x9862, - 0x9863, 0x985F, 0x98C1, 0x98C2, 0x9950, 0x994E, 0x9959, 0x994C, - 0x994B, 0x9953, 0x9A32, 0x9A34, 0x9A31, 0x9A2C, 0x9A2A, 0x9A36, - 0x9A29, 0x9A2E, 0x9A38, 0x9A2D, 0x9AC7, 0x9ACA, 0x9AC6, 0x9B10, - 0x9B12, 0x9B11, 0x9C0B, 0x9C08, 0x9BF7, 0x9C05, 0x9C12, 0x9BF8, - 0x9C40, 0x9C07, 0x9C0E, 0x9C06, 0x9C17, 0x9C14, 0x9C09, 0x9D9F, - 0x9D99, 0x9DA4, 0x9D9D, 0x9D92, 0x9D98, 0x9D90, 0x9D9B, 0, -at 0xA0 - 0, 0x9DA0, 0x9D94, 0x9D9C, 0x9DAA, 0x9D97, 0x9DA1, 0x9D9A, - 0x9DA2, 0x9DA8, 0x9D9E, 0x9DA3, 0x9DBF, 0x9DA9, 0x9D96, 0x9DA6, - 0x9DA7, 0x9E99, 0x9E9B, 0x9E9A, 0x9EE5, 0x9EE4, 0x9EE7, 0x9EE6, - 0x9F30, 0x9F2E, 0x9F5B, 0x9F60, 0x9F5E, 0x9F5D, 0x9F59, 0x9F91, - 0x513A, 0x5139, 0x5298, 0x5297, 0x56C3, 0x56BD, 0x56BE, 0x5B48, - 0x5B47, 0x5DCB, 0x5DCF, 0x5EF1, 0x61FD, 0x651B, 0x6B02, 0x6AFC, - 0x6B03, 0x6AF8, 0x6B00, 0x7043, 0x7044, 0x704A, 0x7048, 0x7049, - 0x7045, 0x7046, 0x721D, 0x721A, 0x7219, 0x737E, 0x7517, 0x766A, - 0x77D0, 0x792D, 0x7931, 0x792F, 0x7C54, 0x7C53, 0x7CF2, 0x7E8A, - 0x7E87, 0x7E88, 0x7E8B, 0x7E86, 0x7E8D, 0x7F4D, 0x7FBB, 0x8030, - 0x81DD, 0x8618, 0x862A, 0x8626, 0x861F, 0x8623, 0x861C, 0x8619, - 0x8627, 0x862E, 0x8621, 0x8620, 0x8629, 0x861E, 0x8625, 0, -plane f6 -at 0x40 - 0x8829, 0x881D, 0x881B, 0x8820, 0x8824, 0x881C, 0x882B, 0x884A, - 0x896D, 0x8969, 0x896E, 0x896B, 0x89FA, 0x8B79, 0x8B78, 0x8B45, - 0x8B7A, 0x8B7B, 0x8D10, 0x8D14, 0x8DAF, 0x8E8E, 0x8E8C, 0x8F5E, - 0x8F5B, 0x8F5D, 0x9146, 0x9144, 0x9145, 0x91B9, 0x943F, 0x943B, - 0x9436, 0x9429, 0x943D, 0x943C, 0x9430, 0x9439, 0x942A, 0x9437, - 0x942C, 0x9440, 0x9431, 0x95E5, 0x95E4, 0x95E3, 0x9735, 0x973A, - 0x97BF, 0x97E1, 0x9864, 0x98C9, 0x98C6, 0x98C0, 0x9958, 0x9956, - 0x9A39, 0x9A3D, 0x9A46, 0x9A44, 0x9A42, 0x9A41, 0x9A3A, 0, -at 0xA0 - 0, 0x9A3F, 0x9ACD, 0x9B15, 0x9B17, 0x9B18, 0x9B16, 0x9B3A, - 0x9B52, 0x9C2B, 0x9C1D, 0x9C1C, 0x9C2C, 0x9C23, 0x9C28, 0x9C29, - 0x9C24, 0x9C21, 0x9DB7, 0x9DB6, 0x9DBC, 0x9DC1, 0x9DC7, 0x9DCA, - 0x9DCF, 0x9DBE, 0x9DC5, 0x9DC3, 0x9DBB, 0x9DB5, 0x9DCE, 0x9DB9, - 0x9DBA, 0x9DAC, 0x9DC8, 0x9DB1, 0x9DAD, 0x9DCC, 0x9DB3, 0x9DCD, - 0x9DB2, 0x9E7A, 0x9E9C, 0x9EEB, 0x9EEE, 0x9EED, 0x9F1B, 0x9F18, - 0x9F1A, 0x9F31, 0x9F4E, 0x9F65, 0x9F64, 0x9F92, 0x4EB9, 0x56C6, - 0x56C5, 0x56CB, 0x5971, 0x5B4B, 0x5B4C, 0x5DD5, 0x5DD1, 0x5EF2, - 0x6521, 0x6520, 0x6526, 0x6522, 0x6B0B, 0x6B08, 0x6B09, 0x6C0D, - 0x7055, 0x7056, 0x7057, 0x7052, 0x721E, 0x721F, 0x72A9, 0x737F, - 0x74D8, 0x74D5, 0x74D9, 0x74D7, 0x766D, 0x76AD, 0x7935, 0x79B4, - 0x7A70, 0x7A71, 0x7C57, 0x7C5C, 0x7C59, 0x7C5B, 0x7C5A, 0, -plane f7 -at 0x40 - 0x7CF4, 0x7CF1, 0x7E91, 0x7F4F, 0x7F87, 0x81DE, 0x826B, 0x8634, - 0x8635, 0x8633, 0x862C, 0x8632, 0x8636, 0x882C, 0x8828, 0x8826, - 0x882A, 0x8825, 0x8971, 0x89BF, 0x89BE, 0x89FB, 0x8B7E, 0x8B84, - 0x8B82, 0x8B86, 0x8B85, 0x8B7F, 0x8D15, 0x8E95, 0x8E94, 0x8E9A, - 0x8E92, 0x8E90, 0x8E96, 0x8E97, 0x8F60, 0x8F62, 0x9147, 0x944C, - 0x9450, 0x944A, 0x944B, 0x944F, 0x9447, 0x9445, 0x9448, 0x9449, - 0x9446, 0x973F, 0x97E3, 0x986A, 0x9869, 0x98CB, 0x9954, 0x995B, - 0x9A4E, 0x9A53, 0x9A54, 0x9A4C, 0x9A4F, 0x9A48, 0x9A4A, 0, -at 0xA0 - 0, 0x9A49, 0x9A52, 0x9A50, 0x9AD0, 0x9B19, 0x9B2B, 0x9B3B, - 0x9B56, 0x9B55, 0x9C46, 0x9C48, 0x9C3F, 0x9C44, 0x9C39, 0x9C33, - 0x9C41, 0x9C3C, 0x9C37, 0x9C34, 0x9C32, 0x9C3D, 0x9C36, 0x9DDB, - 0x9DD2, 0x9DDE, 0x9DDA, 0x9DCB, 0x9DD0, 0x9DDC, 0x9DD1, 0x9DDF, - 0x9DE9, 0x9DD9, 0x9DD8, 0x9DD6, 0x9DF5, 0x9DD5, 0x9DDD, 0x9EB6, - 0x9EF0, 0x9F35, 0x9F33, 0x9F32, 0x9F42, 0x9F6B, 0x9F95, 0x9FA2, - 0x513D, 0x5299, 0x58E8, 0x58E7, 0x5972, 0x5B4D, 0x5DD8, 0x882F, - 0x5F4F, 0x6201, 0x6203, 0x6204, 0x6529, 0x6525, 0x6596, 0x66EB, - 0x6B11, 0x6B12, 0x6B0F, 0x6BCA, 0x705B, 0x705A, 0x7222, 0x7382, - 0x7381, 0x7383, 0x7670, 0x77D4, 0x7C67, 0x7C66, 0x7E95, 0x826C, - 0x863A, 0x8640, 0x8639, 0x863C, 0x8631, 0x863B, 0x863E, 0x8830, - 0x8832, 0x882E, 0x8833, 0x8976, 0x8974, 0x8973, 0x89FE, 0, -plane f8 -at 0x40 - 0x8B8C, 0x8B8E, 0x8B8B, 0x8B88, 0x8C45, 0x8D19, 0x8E98, 0x8F64, - 0x8F63, 0x91BC, 0x9462, 0x9455, 0x945D, 0x9457, 0x945E, 0x97C4, - 0x97C5, 0x9800, 0x9A56, 0x9A59, 0x9B1E, 0x9B1F, 0x9B20, 0x9C52, - 0x9C58, 0x9C50, 0x9C4A, 0x9C4D, 0x9C4B, 0x9C55, 0x9C59, 0x9C4C, - 0x9C4E, 0x9DFB, 0x9DF7, 0x9DEF, 0x9DE3, 0x9DEB, 0x9DF8, 0x9DE4, - 0x9DF6, 0x9DE1, 0x9DEE, 0x9DE6, 0x9DF2, 0x9DF0, 0x9DE2, 0x9DEC, - 0x9DF4, 0x9DF3, 0x9DE8, 0x9DED, 0x9EC2, 0x9ED0, 0x9EF2, 0x9EF3, - 0x9F06, 0x9F1C, 0x9F38, 0x9F37, 0x9F36, 0x9F43, 0x9F4F, 0, -at 0xA0 - 0, 0x9F71, 0x9F70, 0x9F6E, 0x9F6F, 0x56D3, 0x56CD, 0x5B4E, - 0x5C6D, 0x652D, 0x66ED, 0x66EE, 0x6B13, 0x705F, 0x7061, 0x705D, - 0x7060, 0x7223, 0x74DB, 0x74E5, 0x77D5, 0x7938, 0x79B7, 0x79B6, - 0x7C6A, 0x7E97, 0x7F89, 0x826D, 0x8643, 0x8838, 0x8837, 0x8835, - 0x884B, 0x8B94, 0x8B95, 0x8E9E, 0x8E9F, 0x8EA0, 0x8E9D, 0x91BE, - 0x91BD, 0x91C2, 0x946B, 0x9468, 0x9469, 0x96E5, 0x9746, 0x9743, - 0x9747, 0x97C7, 0x97E5, 0x9A5E, 0x9AD5, 0x9B59, 0x9C63, 0x9C67, - 0x9C66, 0x9C62, 0x9C5E, 0x9C60, 0x9E02, 0x9DFE, 0x9E07, 0x9E03, - 0x9E06, 0x9E05, 0x9E00, 0x9E01, 0x9E09, 0x9DFF, 0x9DFD, 0x9E04, - 0x9EA0, 0x9F1E, 0x9F46, 0x9F74, 0x9F75, 0x9F76, 0x56D4, 0x652E, - 0x65B8, 0x6B18, 0x6B19, 0x6B17, 0x6B1A, 0x7062, 0x7226, 0x72AA, - 0x77D8, 0x77D9, 0x7939, 0x7C69, 0x7C6B, 0x7CF6, 0x7E9A, 0, -plane f9 -at 0x40 - 0x7E98, 0x7E9B, 0x7E99, 0x81E0, 0x81E1, 0x8646, 0x8647, 0x8648, - 0x8979, 0x897A, 0x897C, 0x897B, 0x89FF, 0x8B98, 0x8B99, 0x8EA5, - 0x8EA4, 0x8EA3, 0x946E, 0x946D, 0x946F, 0x9471, 0x9473, 0x9749, - 0x9872, 0x995F, 0x9C68, 0x9C6E, 0x9C6D, 0x9E0B, 0x9E0D, 0x9E10, - 0x9E0F, 0x9E12, 0x9E11, 0x9EA1, 0x9EF5, 0x9F09, 0x9F47, 0x9F78, - 0x9F7B, 0x9F7A, 0x9F79, 0x571E, 0x7066, 0x7C6F, 0x883C, 0x8DB2, - 0x8EA6, 0x91C3, 0x9474, 0x9478, 0x9476, 0x9475, 0x9A60, 0x9C74, - 0x9C73, 0x9C71, 0x9C75, 0x9E14, 0x9E13, 0x9EF6, 0x9F0A, 0, -at 0xA0 - 0, 0x9FA4, 0x7068, 0x7065, 0x7CF7, 0x866A, 0x883E, 0x883D, - 0x883F, 0x8B9E, 0x8C9C, 0x8EA9, 0x8EC9, 0x974B, 0x9873, 0x9874, - 0x98CC, 0x9961, 0x99AB, 0x9A64, 0x9A66, 0x9A67, 0x9B24, 0x9E15, - 0x9E17, 0x9F48, 0x6207, 0x6B1E, 0x7227, 0x864C, 0x8EA8, 0x9482, - 0x9480, 0x9481, 0x9A69, 0x9A68, 0x9B2E, 0x9E19, 0x7229, 0x864B, - 0x8B9F, 0x9483, 0x9C79, 0x9EB7, 0x7675, 0x9A6B, 0x9C7A, 0x9E1D, - 0x7069, 0x706A, 0x9EA4, 0x9F7E, 0x9F49, 0x9F98, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane fa -at 0x40 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -at 0xA0 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane fb -at 0x40 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -at 0xA0 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane fc -at 0x40 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -at 0xA0 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane fd -at 0x40 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -at 0xA0 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane fe -at 0x40 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -at 0xA0 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/maps/ugb.map b/application/third_party/dompdf/lib/ttf2ufm/src/maps/ugb.map deleted file mode 100644 index 2f59ac1e..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/maps/ugb.map +++ /dev/null @@ -1,1236 +0,0 @@ -# -# GB 2312-80 -# - -plane a1 -at 0xa0 - 0, 0x3000, 0x3001, 0x3002, 0x00B7, 0x02C9, 0x02C7, 0x00A8, - 0x3003, 0x3005, 0x2015, 0xFF5E, 0x2016, 0x2026, 0x2018, 0x2019, - 0x201C, 0x201D, 0x3014, 0x3015, 0x3008, 0x3009, 0x300A, 0x300B, - 0x300C, 0x300D, 0x300E, 0x300F, 0x3016, 0x3017, 0x3010, 0x3011, - 0x00B1, 0x00D7, 0x00F7, 0x2236, 0x2227, 0x2228, 0x2211, 0x220F, - 0x222A, 0x2229, 0x2208, 0x2237, 0x221A, 0x22A5, 0x2225, 0x2220, - 0x2312, 0x2299, 0x222B, 0x222E, 0x2261, 0x224C, 0x2248, 0x223D, - 0x221D, 0x2260, 0x226E, 0x226F, 0x2264, 0x2265, 0x221E, 0x2235, - 0x2234, 0x2642, 0x2640, 0x00B0, 0x2032, 0x2033, 0x2103, 0xFF04, - 0x00A4, 0xFFE0, 0xFFE1, 0x2030, 0x00A7, 0x2116, 0x2606, 0x2605, - 0x25CB, 0x25CF, 0x25CE, 0x25C7, 0x25C6, 0x25A1, 0x25A0, 0x25B3, - 0x25B2, 0x203B, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013, 0, -plane a2 -at 0xa0 - 0, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, - 0x2177, 0x2178, 0x2179, 0, 0, 0, 0, 0, - 0, 0x2488, 0x2489, 0x248A, 0x248B, 0x248C, 0x248D, 0x248E, - 0x248F, 0x2490, 0x2491, 0x2492, 0x2493, 0x2494, 0x2495, 0x2496, - 0x2497, 0x2498, 0x2499, 0x249A, 0x249B, 0x2474, 0x2475, 0x2476, - 0x2477, 0x2478, 0x2479, 0x247A, 0x247B, 0x247C, 0x247D, 0x247E, - 0x247F, 0x2480, 0x2481, 0x2482, 0x2483, 0x2484, 0x2485, 0x2486, - 0x2487, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, - 0x2467, 0x2468, 0x2469, 0, 0, 0x3220, 0x3221, 0x3222, - 0x3223, 0x3224, 0x3225, 0x3226, 0x3227, 0x3228, 0x3229, 0, - 0, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, - 0x2167, 0x2168, 0x2169, 0x216A, 0x216B, 0, 0, 0, -plane a3 -at 0xa0 - 0, 0xFF01, 0xFF02, 0xFF03, 0xFFE5, 0xFF05, 0xFF06, 0xFF07, - 0xFF08, 0xFF09, 0xFF0A, 0xFF0B, 0xFF0C, 0xFF0D, 0xFF0E, 0xFF0F, - 0xFF10, 0xFF11, 0xFF12, 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17, - 0xFF18, 0xFF19, 0xFF1A, 0xFF1B, 0xFF1C, 0xFF1D, 0xFF1E, 0xFF1F, - 0xFF20, 0xFF21, 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27, - 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F, - 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36, 0xFF37, - 0xFF38, 0xFF39, 0xFF3A, 0xFF3B, 0xFF3C, 0xFF3D, 0xFF3E, 0xFF3F, - 0xFF40, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47, - 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F, - 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57, - 0xFF58, 0xFF59, 0xFF5A, 0xFF5B, 0xFF5C, 0xFF5D, 0xFFE3, 0, -plane a4 -at 0xa0 - 0, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, - 0x3048, 0x3049, 0x304A, 0x304B, 0x304C, 0x304D, 0x304E, 0x304F, - 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, - 0x3058, 0x3059, 0x305A, 0x305B, 0x305C, 0x305D, 0x305E, 0x305F, - 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, - 0x3068, 0x3069, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F, - 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, - 0x3078, 0x3079, 0x307A, 0x307B, 0x307C, 0x307D, 0x307E, 0x307F, - 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, - 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308E, 0x308F, - 0x3090, 0x3091, 0x3092, 0x3093, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane a5 -at 0xa0 - 0, 0x30A1, 0x30A2, 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, - 0x30A8, 0x30A9, 0x30AA, 0x30AB, 0x30AC, 0x30AD, 0x30AE, 0x30AF, - 0x30B0, 0x30B1, 0x30B2, 0x30B3, 0x30B4, 0x30B5, 0x30B6, 0x30B7, - 0x30B8, 0x30B9, 0x30BA, 0x30BB, 0x30BC, 0x30BD, 0x30BE, 0x30BF, - 0x30C0, 0x30C1, 0x30C2, 0x30C3, 0x30C4, 0x30C5, 0x30C6, 0x30C7, - 0x30C8, 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, - 0x30D0, 0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7, - 0x30D8, 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF, - 0x30E0, 0x30E1, 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7, - 0x30E8, 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF, - 0x30F0, 0x30F1, 0x30F2, 0x30F3, 0x30F4, 0x30F5, 0x30F6, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane a6 -at 0xa0 - 0, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, - 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, - 0x03A0, 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, - 0x03A9, 0, 0, 0, 0, 0, 0, 0, - 0, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, - 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, - 0x03C0, 0x03C1, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, - 0x03C9, 0, 0, 0, 0, 0, 0, 0, - 0xFE35, 0xFE36, 0xFE39, 0xFE3A, 0xFE3F, 0xFE40, 0xFE3D, 0xFE3E, - 0xFE41, 0xFE42, 0xFE43, 0xFE44, 0, 0, 0xFE3B, 0xFE3C, - 0xFE37, 0xFE38, 0xFE31, 0, 0xFE33, 0xFE34, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane a7 -at 0xa0 - 0, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, - 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, - 0x041E, 0x041F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, - 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, - 0x042E, 0x042F, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, - 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, - 0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, - 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, - 0x044E, 0x044F, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane a8 -at 0xa0 - 0, 0x0101, 0x00E1, 0x01CE, 0x00E0, 0x0113, 0x00E9, 0x011B, - 0x00E8, 0x012B, 0x00ED, 0x01D0, 0x00EC, 0x014D, 0x00F3, 0x01D2, - 0x00F2, 0x016B, 0x00FA, 0x01D4, 0x00F9, 0x01D6, 0x01D8, 0x01DA, - 0x01DC, 0x00FC, 0x00EA, 0x0251, 0xE7C7, 0x0144, 0x0148, 0xE7C8, - 0x0261, 0, 0, 0, 0, 0x3105, 0x3106, 0x3107, - 0x3108, 0x3109, 0x310A, 0x310B, 0x310C, 0x310D, 0x310E, 0x310F, - 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, - 0x3118, 0x3119, 0x311A, 0x311B, 0x311C, 0x311D, 0x311E, 0x311F, - 0x3120, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, - 0x3128, 0x3129, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane a9 -at 0xa0 - 0, 0, 0, 0, 0x2500, 0x2501, 0x2502, 0x2503, - 0x2504, 0x2505, 0x2506, 0x2507, 0x2508, 0x2509, 0x250A, 0x250B, - 0x250C, 0x250D, 0x250E, 0x250F, 0x2510, 0x2511, 0x2512, 0x2513, - 0x2514, 0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x251A, 0x251B, - 0x251C, 0x251D, 0x251E, 0x251F, 0x2520, 0x2521, 0x2522, 0x2523, - 0x2524, 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252A, 0x252B, - 0x252C, 0x252D, 0x252E, 0x252F, 0x2530, 0x2531, 0x2532, 0x2533, - 0x2534, 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253A, 0x253B, - 0x253C, 0x253D, 0x253E, 0x253F, 0x2540, 0x2541, 0x2542, 0x2543, - 0x2544, 0x2545, 0x2546, 0x2547, 0x2548, 0x2549, 0x254A, 0x254B, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane b0 -at 0xa0 - 0, 0x554A, 0x963F, 0x57C3, 0x6328, 0x54CE, 0x5509, 0x54C0, - 0x7691, 0x764C, 0x853C, 0x77EE, 0x827E, 0x788D, 0x7231, 0x9698, - 0x978D, 0x6C28, 0x5B89, 0x4FFA, 0x6309, 0x6697, 0x5CB8, 0x80FA, - 0x6848, 0x80AE, 0x6602, 0x76CE, 0x51F9, 0x6556, 0x71AC, 0x7FF1, - 0x8884, 0x50B2, 0x5965, 0x61CA, 0x6FB3, 0x82AD, 0x634C, 0x6252, - 0x53ED, 0x5427, 0x7B06, 0x516B, 0x75A4, 0x5DF4, 0x62D4, 0x8DCB, - 0x9776, 0x628A, 0x8019, 0x575D, 0x9738, 0x7F62, 0x7238, 0x767D, - 0x67CF, 0x767E, 0x6446, 0x4F70, 0x8D25, 0x62DC, 0x7A17, 0x6591, - 0x73ED, 0x642C, 0x6273, 0x822C, 0x9881, 0x677F, 0x7248, 0x626E, - 0x62CC, 0x4F34, 0x74E3, 0x534A, 0x529E, 0x7ECA, 0x90A6, 0x5E2E, - 0x6886, 0x699C, 0x8180, 0x7ED1, 0x68D2, 0x78C5, 0x868C, 0x9551, - 0x508D, 0x8C24, 0x82DE, 0x80DE, 0x5305, 0x8912, 0x5265, 0, -plane b1 -at 0xa0 - 0x775C, 0x8584, 0x96F9, 0x4FDD, 0x5821, 0x9971, 0x5B9D, 0x62B1, - 0x62A5, 0x66B4, 0x8C79, 0x9C8D, 0x7206, 0x676F, 0x7891, 0x60B2, - 0x5351, 0x5317, 0x8F88, 0x80CC, 0x8D1D, 0x94A1, 0x500D, 0x72C8, - 0x5907, 0x60EB, 0x7119, 0x88AB, 0x5954, 0x82EF, 0x672C, 0x7B28, - 0x5D29, 0x7EF7, 0x752D, 0x6CF5, 0x8E66, 0x8FF8, 0x903C, 0x9F3B, - 0x6BD4, 0x9119, 0x7B14, 0x5F7C, 0x78A7, 0x84D6, 0x853D, 0x6BD5, - 0x6BD9, 0x6BD6, 0x5E01, 0x5E87, 0x75F9, 0x95ED, 0x655D, 0x5F0A, - 0x5FC5, 0x8F9F, 0x58C1, 0x81C2, 0x907F, 0x965B, 0x97AD, 0x8FB9, - 0x7F16, 0x8D2C, 0x6241, 0x4FBF, 0x53D8, 0x535E, 0x8FA8, 0x8FA9, - 0x8FAB, 0x904D, 0x6807, 0x5F6A, 0x8198, 0x8868, 0x9CD6, 0x618B, - 0x522B, 0x762A, 0x5F6C, 0x658C, 0x6FD2, 0x6EE8, 0x5BBE, 0x6448, - 0x5175, 0x51B0, 0x67C4, 0x4E19, 0x79C9, 0x997C, 0x70B3, 0, -plane b2 -at 0xa0 - 0x77E4, 0x75C5, 0x5E76, 0x73BB, 0x83E0, 0x64AD, 0x62E8, 0x94B5, - 0x6CE2, 0x535A, 0x52C3, 0x640F, 0x94C2, 0x7B94, 0x4F2F, 0x5E1B, - 0x8236, 0x8116, 0x818A, 0x6E24, 0x6CCA, 0x9A73, 0x6355, 0x535C, - 0x54FA, 0x8865, 0x57E0, 0x4E0D, 0x5E03, 0x6B65, 0x7C3F, 0x90E8, - 0x6016, 0x64E6, 0x731C, 0x88C1, 0x6750, 0x624D, 0x8D22, 0x776C, - 0x8E29, 0x91C7, 0x5F69, 0x83DC, 0x8521, 0x9910, 0x53C2, 0x8695, - 0x6B8B, 0x60ED, 0x60E8, 0x707F, 0x82CD, 0x8231, 0x4ED3, 0x6CA7, - 0x85CF, 0x64CD, 0x7CD9, 0x69FD, 0x66F9, 0x8349, 0x5395, 0x7B56, - 0x4FA7, 0x518C, 0x6D4B, 0x5C42, 0x8E6D, 0x63D2, 0x53C9, 0x832C, - 0x8336, 0x67E5, 0x78B4, 0x643D, 0x5BDF, 0x5C94, 0x5DEE, 0x8BE7, - 0x62C6, 0x67F4, 0x8C7A, 0x6400, 0x63BA, 0x8749, 0x998B, 0x8C17, - 0x7F20, 0x94F2, 0x4EA7, 0x9610, 0x98A4, 0x660C, 0x7316, 0, -plane b3 -at 0xa0 - 0x7883, 0x573A, 0x5C1D, 0x5E38, 0x957F, 0x507F, 0x80A0, 0x5382, - 0x655E, 0x7545, 0x5531, 0x5021, 0x8D85, 0x6284, 0x949E, 0x671D, - 0x5632, 0x6F6E, 0x5DE2, 0x5435, 0x7092, 0x8F66, 0x626F, 0x64A4, - 0x63A3, 0x5F7B, 0x6F88, 0x90F4, 0x81E3, 0x8FB0, 0x5C18, 0x6668, - 0x5FF1, 0x6C89, 0x9648, 0x8D81, 0x886C, 0x6491, 0x79F0, 0x57CE, - 0x6A59, 0x6210, 0x5448, 0x4E58, 0x7A0B, 0x60E9, 0x6F84, 0x8BDA, - 0x627F, 0x901E, 0x9A8B, 0x79E4, 0x5403, 0x75F4, 0x6301, 0x5319, - 0x6C60, 0x8FDF, 0x5F1B, 0x9A70, 0x803B, 0x9F7F, 0x4F88, 0x5C3A, - 0x8D64, 0x7FC5, 0x65A5, 0x70BD, 0x5145, 0x51B2, 0x866B, 0x5D07, - 0x5BA0, 0x62BD, 0x916C, 0x7574, 0x8E0C, 0x7A20, 0x6101, 0x7B79, - 0x4EC7, 0x7EF8, 0x7785, 0x4E11, 0x81ED, 0x521D, 0x51FA, 0x6A71, - 0x53A8, 0x8E87, 0x9504, 0x96CF, 0x6EC1, 0x9664, 0x695A, 0, -plane b4 -at 0xa0 - 0x790C, 0x7840, 0x50A8, 0x77D7, 0x6410, 0x89E6, 0x5904, 0x63E3, - 0x5DDD, 0x7A7F, 0x693D, 0x4F20, 0x8239, 0x5598, 0x4E32, 0x75AE, - 0x7A97, 0x5E62, 0x5E8A, 0x95EF, 0x521B, 0x5439, 0x708A, 0x6376, - 0x9524, 0x5782, 0x6625, 0x693F, 0x9187, 0x5507, 0x6DF3, 0x7EAF, - 0x8822, 0x6233, 0x7EF0, 0x75B5, 0x8328, 0x78C1, 0x96CC, 0x8F9E, - 0x6148, 0x74F7, 0x8BCD, 0x6B64, 0x523A, 0x8D50, 0x6B21, 0x806A, - 0x8471, 0x56F1, 0x5306, 0x4ECE, 0x4E1B, 0x51D1, 0x7C97, 0x918B, - 0x7C07, 0x4FC3, 0x8E7F, 0x7BE1, 0x7A9C, 0x6467, 0x5D14, 0x50AC, - 0x8106, 0x7601, 0x7CB9, 0x6DEC, 0x7FE0, 0x6751, 0x5B58, 0x5BF8, - 0x78CB, 0x64AE, 0x6413, 0x63AA, 0x632B, 0x9519, 0x642D, 0x8FBE, - 0x7B54, 0x7629, 0x6253, 0x5927, 0x5446, 0x6B79, 0x50A3, 0x6234, - 0x5E26, 0x6B86, 0x4EE3, 0x8D37, 0x888B, 0x5F85, 0x902E, 0, -plane b5 -at 0xa0 - 0x7992, 0x6020, 0x803D, 0x62C5, 0x4E39, 0x5355, 0x90F8, 0x63B8, - 0x80C6, 0x65E6, 0x6C2E, 0x4F46, 0x60EE, 0x6DE1, 0x8BDE, 0x5F39, - 0x86CB, 0x5F53, 0x6321, 0x515A, 0x8361, 0x6863, 0x5200, 0x6363, - 0x8E48, 0x5012, 0x5C9B, 0x7977, 0x5BFC, 0x5230, 0x7A3B, 0x60BC, - 0x9053, 0x76D7, 0x5FB7, 0x5F97, 0x7684, 0x8E6C, 0x706F, 0x767B, - 0x7B49, 0x77AA, 0x51F3, 0x9093, 0x5824, 0x4F4E, 0x6EF4, 0x8FEA, - 0x654C, 0x7B1B, 0x72C4, 0x6DA4, 0x7FDF, 0x5AE1, 0x62B5, 0x5E95, - 0x5730, 0x8482, 0x7B2C, 0x5E1D, 0x5F1F, 0x9012, 0x7F14, 0x98A0, - 0x6382, 0x6EC7, 0x7898, 0x70B9, 0x5178, 0x975B, 0x57AB, 0x7535, - 0x4F43, 0x7538, 0x5E97, 0x60E6, 0x5960, 0x6DC0, 0x6BBF, 0x7889, - 0x53FC, 0x96D5, 0x51CB, 0x5201, 0x6389, 0x540A, 0x9493, 0x8C03, - 0x8DCC, 0x7239, 0x789F, 0x8776, 0x8FED, 0x8C0D, 0x53E0, 0, -plane b6 -at 0xa0 - 0x7A1C, 0x4E01, 0x76EF, 0x53EE, 0x9489, 0x9876, 0x9F0E, 0x952D, - 0x5B9A, 0x8BA2, 0x4E22, 0x4E1C, 0x51AC, 0x8463, 0x61C2, 0x52A8, - 0x680B, 0x4F97, 0x606B, 0x51BB, 0x6D1E, 0x515C, 0x6296, 0x6597, - 0x9661, 0x8C46, 0x9017, 0x75D8, 0x90FD, 0x7763, 0x6BD2, 0x728A, - 0x72EC, 0x8BFB, 0x5835, 0x7779, 0x8D4C, 0x675C, 0x9540, 0x809A, - 0x5EA6, 0x6E21, 0x5992, 0x7AEF, 0x77ED, 0x953B, 0x6BB5, 0x65AD, - 0x7F0E, 0x5806, 0x5151, 0x961F, 0x5BF9, 0x58A9, 0x5428, 0x8E72, - 0x6566, 0x987F, 0x56E4, 0x949D, 0x76FE, 0x9041, 0x6387, 0x54C6, - 0x591A, 0x593A, 0x579B, 0x8EB2, 0x6735, 0x8DFA, 0x8235, 0x5241, - 0x60F0, 0x5815, 0x86FE, 0x5CE8, 0x9E45, 0x4FC4, 0x989D, 0x8BB9, - 0x5A25, 0x6076, 0x5384, 0x627C, 0x904F, 0x9102, 0x997F, 0x6069, - 0x800C, 0x513F, 0x8033, 0x5C14, 0x9975, 0x6D31, 0x4E8C, 0, -plane b7 -at 0xa0 - 0x7AA2, 0x8D30, 0x53D1, 0x7F5A, 0x7B4F, 0x4F10, 0x4E4F, 0x9600, - 0x6CD5, 0x73D0, 0x85E9, 0x5E06, 0x756A, 0x7FFB, 0x6A0A, 0x77FE, - 0x9492, 0x7E41, 0x51E1, 0x70E6, 0x53CD, 0x8FD4, 0x8303, 0x8D29, - 0x72AF, 0x996D, 0x6CDB, 0x574A, 0x82B3, 0x65B9, 0x80AA, 0x623F, - 0x9632, 0x59A8, 0x4EFF, 0x8BBF, 0x7EBA, 0x653E, 0x83F2, 0x975E, - 0x5561, 0x98DE, 0x80A5, 0x532A, 0x8BFD, 0x5420, 0x80BA, 0x5E9F, - 0x6CB8, 0x8D39, 0x82AC, 0x915A, 0x5429, 0x6C1B, 0x5206, 0x7EB7, - 0x575F, 0x711A, 0x6C7E, 0x7C89, 0x594B, 0x4EFD, 0x5FFF, 0x6124, - 0x7CAA, 0x4E30, 0x5C01, 0x67AB, 0x8702, 0x5CF0, 0x950B, 0x98CE, - 0x75AF, 0x70FD, 0x9022, 0x51AF, 0x7F1D, 0x8BBD, 0x5949, 0x51E4, - 0x4F5B, 0x5426, 0x592B, 0x6577, 0x80A4, 0x5B75, 0x6276, 0x62C2, - 0x8F90, 0x5E45, 0x6C1F, 0x7B26, 0x4F0F, 0x4FD8, 0x670D, 0, -plane b8 -at 0xa0 - 0x7B2D, 0x6D6E, 0x6DAA, 0x798F, 0x88B1, 0x5F17, 0x752B, 0x629A, - 0x8F85, 0x4FEF, 0x91DC, 0x65A7, 0x812F, 0x8151, 0x5E9C, 0x8150, - 0x8D74, 0x526F, 0x8986, 0x8D4B, 0x590D, 0x5085, 0x4ED8, 0x961C, - 0x7236, 0x8179, 0x8D1F, 0x5BCC, 0x8BA3, 0x9644, 0x5987, 0x7F1A, - 0x5490, 0x5676, 0x560E, 0x8BE5, 0x6539, 0x6982, 0x9499, 0x76D6, - 0x6E89, 0x5E72, 0x7518, 0x6746, 0x67D1, 0x7AFF, 0x809D, 0x8D76, - 0x611F, 0x79C6, 0x6562, 0x8D63, 0x5188, 0x521A, 0x94A2, 0x7F38, - 0x809B, 0x7EB2, 0x5C97, 0x6E2F, 0x6760, 0x7BD9, 0x768B, 0x9AD8, - 0x818F, 0x7F94, 0x7CD5, 0x641E, 0x9550, 0x7A3F, 0x544A, 0x54E5, - 0x6B4C, 0x6401, 0x6208, 0x9E3D, 0x80F3, 0x7599, 0x5272, 0x9769, - 0x845B, 0x683C, 0x86E4, 0x9601, 0x9694, 0x94EC, 0x4E2A, 0x5404, - 0x7ED9, 0x6839, 0x8DDF, 0x8015, 0x66F4, 0x5E9A, 0x7FB9, 0, -plane b9 -at 0xa0 - 0x7BC4, 0x57C2, 0x803F, 0x6897, 0x5DE5, 0x653B, 0x529F, 0x606D, - 0x9F9A, 0x4F9B, 0x8EAC, 0x516C, 0x5BAB, 0x5F13, 0x5DE9, 0x6C5E, - 0x62F1, 0x8D21, 0x5171, 0x94A9, 0x52FE, 0x6C9F, 0x82DF, 0x72D7, - 0x57A2, 0x6784, 0x8D2D, 0x591F, 0x8F9C, 0x83C7, 0x5495, 0x7B8D, - 0x4F30, 0x6CBD, 0x5B64, 0x59D1, 0x9F13, 0x53E4, 0x86CA, 0x9AA8, - 0x8C37, 0x80A1, 0x6545, 0x987E, 0x56FA, 0x96C7, 0x522E, 0x74DC, - 0x5250, 0x5BE1, 0x6302, 0x8902, 0x4E56, 0x62D0, 0x602A, 0x68FA, - 0x5173, 0x5B98, 0x51A0, 0x89C2, 0x7BA1, 0x9986, 0x7F50, 0x60EF, - 0x704C, 0x8D2F, 0x5149, 0x5E7F, 0x901B, 0x7470, 0x89C4, 0x572D, - 0x7845, 0x5F52, 0x9F9F, 0x95FA, 0x8F68, 0x9B3C, 0x8BE1, 0x7678, - 0x6842, 0x67DC, 0x8DEA, 0x8D35, 0x523D, 0x8F8A, 0x6EDA, 0x68CD, - 0x9505, 0x90ED, 0x56FD, 0x679C, 0x88F9, 0x8FC7, 0x54C8, 0, -plane ba -at 0xa0 - 0x7C42, 0x9AB8, 0x5B69, 0x6D77, 0x6C26, 0x4EA5, 0x5BB3, 0x9A87, - 0x9163, 0x61A8, 0x90AF, 0x97E9, 0x542B, 0x6DB5, 0x5BD2, 0x51FD, - 0x558A, 0x7F55, 0x7FF0, 0x64BC, 0x634D, 0x65F1, 0x61BE, 0x608D, - 0x710A, 0x6C57, 0x6C49, 0x592F, 0x676D, 0x822A, 0x58D5, 0x568E, - 0x8C6A, 0x6BEB, 0x90DD, 0x597D, 0x8017, 0x53F7, 0x6D69, 0x5475, - 0x559D, 0x8377, 0x83CF, 0x6838, 0x79BE, 0x548C, 0x4F55, 0x5408, - 0x76D2, 0x8C89, 0x9602, 0x6CB3, 0x6DB8, 0x8D6B, 0x8910, 0x9E64, - 0x8D3A, 0x563F, 0x9ED1, 0x75D5, 0x5F88, 0x72E0, 0x6068, 0x54FC, - 0x4EA8, 0x6A2A, 0x8861, 0x6052, 0x8F70, 0x54C4, 0x70D8, 0x8679, - 0x9E3F, 0x6D2A, 0x5B8F, 0x5F18, 0x7EA2, 0x5589, 0x4FAF, 0x7334, - 0x543C, 0x539A, 0x5019, 0x540E, 0x547C, 0x4E4E, 0x5FFD, 0x745A, - 0x58F6, 0x846B, 0x80E1, 0x8774, 0x72D0, 0x7CCA, 0x6E56, 0, -plane bb -at 0xa0 - 0x7CBB, 0x5F27, 0x864E, 0x552C, 0x62A4, 0x4E92, 0x6CAA, 0x6237, - 0x82B1, 0x54D7, 0x534E, 0x733E, 0x6ED1, 0x753B, 0x5212, 0x5316, - 0x8BDD, 0x69D0, 0x5F8A, 0x6000, 0x6DEE, 0x574F, 0x6B22, 0x73AF, - 0x6853, 0x8FD8, 0x7F13, 0x6362, 0x60A3, 0x5524, 0x75EA, 0x8C62, - 0x7115, 0x6DA3, 0x5BA6, 0x5E7B, 0x8352, 0x614C, 0x9EC4, 0x78FA, - 0x8757, 0x7C27, 0x7687, 0x51F0, 0x60F6, 0x714C, 0x6643, 0x5E4C, - 0x604D, 0x8C0E, 0x7070, 0x6325, 0x8F89, 0x5FBD, 0x6062, 0x86D4, - 0x56DE, 0x6BC1, 0x6094, 0x6167, 0x5349, 0x60E0, 0x6666, 0x8D3F, - 0x79FD, 0x4F1A, 0x70E9, 0x6C47, 0x8BB3, 0x8BF2, 0x7ED8, 0x8364, - 0x660F, 0x5A5A, 0x9B42, 0x6D51, 0x6DF7, 0x8C41, 0x6D3B, 0x4F19, - 0x706B, 0x83B7, 0x6216, 0x60D1, 0x970D, 0x8D27, 0x7978, 0x51FB, - 0x573E, 0x57FA, 0x673A, 0x7578, 0x7A3D, 0x79EF, 0x7B95, 0, -plane bc -at 0xa0 - 0x7D36, 0x808C, 0x9965, 0x8FF9, 0x6FC0, 0x8BA5, 0x9E21, 0x59EC, - 0x7EE9, 0x7F09, 0x5409, 0x6781, 0x68D8, 0x8F91, 0x7C4D, 0x96C6, - 0x53CA, 0x6025, 0x75BE, 0x6C72, 0x5373, 0x5AC9, 0x7EA7, 0x6324, - 0x51E0, 0x810A, 0x5DF1, 0x84DF, 0x6280, 0x5180, 0x5B63, 0x4F0E, - 0x796D, 0x5242, 0x60B8, 0x6D4E, 0x5BC4, 0x5BC2, 0x8BA1, 0x8BB0, - 0x65E2, 0x5FCC, 0x9645, 0x5993, 0x7EE7, 0x7EAA, 0x5609, 0x67B7, - 0x5939, 0x4F73, 0x5BB6, 0x52A0, 0x835A, 0x988A, 0x8D3E, 0x7532, - 0x94BE, 0x5047, 0x7A3C, 0x4EF7, 0x67B6, 0x9A7E, 0x5AC1, 0x6B7C, - 0x76D1, 0x575A, 0x5C16, 0x7B3A, 0x95F4, 0x714E, 0x517C, 0x80A9, - 0x8270, 0x5978, 0x7F04, 0x8327, 0x68C0, 0x67EC, 0x78B1, 0x7877, - 0x62E3, 0x6361, 0x7B80, 0x4FED, 0x526A, 0x51CF, 0x8350, 0x69DB, - 0x9274, 0x8DF5, 0x8D31, 0x89C1, 0x952E, 0x7BAD, 0x4EF6, 0, -plane bd -at 0xa0 - 0x7D98, 0x5065, 0x8230, 0x5251, 0x996F, 0x6E10, 0x6E85, 0x6DA7, - 0x5EFA, 0x50F5, 0x59DC, 0x5C06, 0x6D46, 0x6C5F, 0x7586, 0x848B, - 0x6868, 0x5956, 0x8BB2, 0x5320, 0x9171, 0x964D, 0x8549, 0x6912, - 0x7901, 0x7126, 0x80F6, 0x4EA4, 0x90CA, 0x6D47, 0x9A84, 0x5A07, - 0x56BC, 0x6405, 0x94F0, 0x77EB, 0x4FA5, 0x811A, 0x72E1, 0x89D2, - 0x997A, 0x7F34, 0x7EDE, 0x527F, 0x6559, 0x9175, 0x8F7F, 0x8F83, - 0x53EB, 0x7A96, 0x63ED, 0x63A5, 0x7686, 0x79F8, 0x8857, 0x9636, - 0x622A, 0x52AB, 0x8282, 0x6854, 0x6770, 0x6377, 0x776B, 0x7AED, - 0x6D01, 0x7ED3, 0x89E3, 0x59D0, 0x6212, 0x85C9, 0x82A5, 0x754C, - 0x501F, 0x4ECB, 0x75A5, 0x8BEB, 0x5C4A, 0x5DFE, 0x7B4B, 0x65A4, - 0x91D1, 0x4ECA, 0x6D25, 0x895F, 0x7D27, 0x9526, 0x4EC5, 0x8C28, - 0x8FDB, 0x9773, 0x664B, 0x7981, 0x8FD1, 0x70EC, 0x6D78, 0, -plane be -at 0xa0 - 0x7DFA, 0x5C3D, 0x52B2, 0x8346, 0x5162, 0x830E, 0x775B, 0x6676, - 0x9CB8, 0x4EAC, 0x60CA, 0x7CBE, 0x7CB3, 0x7ECF, 0x4E95, 0x8B66, - 0x666F, 0x9888, 0x9759, 0x5883, 0x656C, 0x955C, 0x5F84, 0x75C9, - 0x9756, 0x7ADF, 0x7ADE, 0x51C0, 0x70AF, 0x7A98, 0x63EA, 0x7A76, - 0x7EA0, 0x7396, 0x97ED, 0x4E45, 0x7078, 0x4E5D, 0x9152, 0x53A9, - 0x6551, 0x65E7, 0x81FC, 0x8205, 0x548E, 0x5C31, 0x759A, 0x97A0, - 0x62D8, 0x72D9, 0x75BD, 0x5C45, 0x9A79, 0x83CA, 0x5C40, 0x5480, - 0x77E9, 0x4E3E, 0x6CAE, 0x805A, 0x62D2, 0x636E, 0x5DE8, 0x5177, - 0x8DDD, 0x8E1E, 0x952F, 0x4FF1, 0x53E5, 0x60E7, 0x70AC, 0x5267, - 0x6350, 0x9E43, 0x5A1F, 0x5026, 0x7737, 0x5377, 0x7EE2, 0x6485, - 0x652B, 0x6289, 0x6398, 0x5014, 0x7235, 0x89C9, 0x51B3, 0x8BC0, - 0x7EDD, 0x5747, 0x83CC, 0x94A7, 0x519B, 0x541B, 0x5CFB, 0, -plane bf -at 0xa0 - 0x7E5D, 0x4FCA, 0x7AE3, 0x6D5A, 0x90E1, 0x9A8F, 0x5580, 0x5496, - 0x5361, 0x54AF, 0x5F00, 0x63E9, 0x6977, 0x51EF, 0x6168, 0x520A, - 0x582A, 0x52D8, 0x574E, 0x780D, 0x770B, 0x5EB7, 0x6177, 0x7CE0, - 0x625B, 0x6297, 0x4EA2, 0x7095, 0x8003, 0x62F7, 0x70E4, 0x9760, - 0x5777, 0x82DB, 0x67EF, 0x68F5, 0x78D5, 0x9897, 0x79D1, 0x58F3, - 0x54B3, 0x53EF, 0x6E34, 0x514B, 0x523B, 0x5BA2, 0x8BFE, 0x80AF, - 0x5543, 0x57A6, 0x6073, 0x5751, 0x542D, 0x7A7A, 0x6050, 0x5B54, - 0x63A7, 0x62A0, 0x53E3, 0x6263, 0x5BC7, 0x67AF, 0x54ED, 0x7A9F, - 0x82E6, 0x9177, 0x5E93, 0x88E4, 0x5938, 0x57AE, 0x630E, 0x8DE8, - 0x80EF, 0x5757, 0x7B77, 0x4FA9, 0x5FEB, 0x5BBD, 0x6B3E, 0x5321, - 0x7B50, 0x72C2, 0x6846, 0x77FF, 0x7736, 0x65F7, 0x51B5, 0x4E8F, - 0x76D4, 0x5CBF, 0x7AA5, 0x8475, 0x594E, 0x9B41, 0x5080, 0, -plane c0 -at 0xa0 - 0x7F53, 0x9988, 0x6127, 0x6E83, 0x5764, 0x6606, 0x6346, 0x56F0, - 0x62EC, 0x6269, 0x5ED3, 0x9614, 0x5783, 0x62C9, 0x5587, 0x8721, - 0x814A, 0x8FA3, 0x5566, 0x83B1, 0x6765, 0x8D56, 0x84DD, 0x5A6A, - 0x680F, 0x62E6, 0x7BEE, 0x9611, 0x5170, 0x6F9C, 0x8C30, 0x63FD, - 0x89C8, 0x61D2, 0x7F06, 0x70C2, 0x6EE5, 0x7405, 0x6994, 0x72FC, - 0x5ECA, 0x90CE, 0x6717, 0x6D6A, 0x635E, 0x52B3, 0x7262, 0x8001, - 0x4F6C, 0x59E5, 0x916A, 0x70D9, 0x6D9D, 0x52D2, 0x4E50, 0x96F7, - 0x956D, 0x857E, 0x78CA, 0x7D2F, 0x5121, 0x5792, 0x64C2, 0x808B, - 0x7C7B, 0x6CEA, 0x68F1, 0x695E, 0x51B7, 0x5398, 0x68A8, 0x7281, - 0x9ECE, 0x7BF1, 0x72F8, 0x79BB, 0x6F13, 0x7406, 0x674E, 0x91CC, - 0x9CA4, 0x793C, 0x8389, 0x8354, 0x540F, 0x6817, 0x4E3D, 0x5389, - 0x52B1, 0x783E, 0x5386, 0x5229, 0x5088, 0x4F8B, 0x4FD0, 0, -plane c1 -at 0xa0 - 0x7FE3, 0x75E2, 0x7ACB, 0x7C92, 0x6CA5, 0x96B6, 0x529B, 0x7483, - 0x54E9, 0x4FE9, 0x8054, 0x83B2, 0x8FDE, 0x9570, 0x5EC9, 0x601C, - 0x6D9F, 0x5E18, 0x655B, 0x8138, 0x94FE, 0x604B, 0x70BC, 0x7EC3, - 0x7CAE, 0x51C9, 0x6881, 0x7CB1, 0x826F, 0x4E24, 0x8F86, 0x91CF, - 0x667E, 0x4EAE, 0x8C05, 0x64A9, 0x804A, 0x50DA, 0x7597, 0x71CE, - 0x5BE5, 0x8FBD, 0x6F66, 0x4E86, 0x6482, 0x9563, 0x5ED6, 0x6599, - 0x5217, 0x88C2, 0x70C8, 0x52A3, 0x730E, 0x7433, 0x6797, 0x78F7, - 0x9716, 0x4E34, 0x90BB, 0x9CDE, 0x6DCB, 0x51DB, 0x8D41, 0x541D, - 0x62CE, 0x73B2, 0x83F1, 0x96F6, 0x9F84, 0x94C3, 0x4F36, 0x7F9A, - 0x51CC, 0x7075, 0x9675, 0x5CAD, 0x9886, 0x53E6, 0x4EE4, 0x6E9C, - 0x7409, 0x69B4, 0x786B, 0x998F, 0x7559, 0x5218, 0x7624, 0x6D41, - 0x67F3, 0x516D, 0x9F99, 0x804B, 0x5499, 0x7B3C, 0x7ABF, 0, -plane c2 -at 0xa0 - 0x807D, 0x9686, 0x5784, 0x62E2, 0x9647, 0x697C, 0x5A04, 0x6402, - 0x7BD3, 0x6F0F, 0x964B, 0x82A6, 0x5362, 0x9885, 0x5E90, 0x7089, - 0x63B3, 0x5364, 0x864F, 0x9C81, 0x9E93, 0x788C, 0x9732, 0x8DEF, - 0x8D42, 0x9E7F, 0x6F5E, 0x7984, 0x5F55, 0x9646, 0x622E, 0x9A74, - 0x5415, 0x94DD, 0x4FA3, 0x65C5, 0x5C65, 0x5C61, 0x7F15, 0x8651, - 0x6C2F, 0x5F8B, 0x7387, 0x6EE4, 0x7EFF, 0x5CE6, 0x631B, 0x5B6A, - 0x6EE6, 0x5375, 0x4E71, 0x63A0, 0x7565, 0x62A1, 0x8F6E, 0x4F26, - 0x4ED1, 0x6CA6, 0x7EB6, 0x8BBA, 0x841D, 0x87BA, 0x7F57, 0x903B, - 0x9523, 0x7BA9, 0x9AA1, 0x88F8, 0x843D, 0x6D1B, 0x9A86, 0x7EDC, - 0x5988, 0x9EBB, 0x739B, 0x7801, 0x8682, 0x9A6C, 0x9A82, 0x561B, - 0x5417, 0x57CB, 0x4E70, 0x9EA6, 0x5356, 0x8FC8, 0x8109, 0x7792, - 0x9992, 0x86EE, 0x6EE1, 0x8513, 0x66FC, 0x6162, 0x6F2B, 0, -plane c3 -at 0xa0 - 0x813F, 0x8C29, 0x8292, 0x832B, 0x76F2, 0x6C13, 0x5FD9, 0x83BD, - 0x732B, 0x8305, 0x951A, 0x6BDB, 0x77DB, 0x94C6, 0x536F, 0x8302, - 0x5192, 0x5E3D, 0x8C8C, 0x8D38, 0x4E48, 0x73AB, 0x679A, 0x6885, - 0x9176, 0x9709, 0x7164, 0x6CA1, 0x7709, 0x5A92, 0x9541, 0x6BCF, - 0x7F8E, 0x6627, 0x5BD0, 0x59B9, 0x5A9A, 0x95E8, 0x95F7, 0x4EEC, - 0x840C, 0x8499, 0x6AAC, 0x76DF, 0x9530, 0x731B, 0x68A6, 0x5B5F, - 0x772F, 0x919A, 0x9761, 0x7CDC, 0x8FF7, 0x8C1C, 0x5F25, 0x7C73, - 0x79D8, 0x89C5, 0x6CCC, 0x871C, 0x5BC6, 0x5E42, 0x68C9, 0x7720, - 0x7EF5, 0x5195, 0x514D, 0x52C9, 0x5A29, 0x7F05, 0x9762, 0x82D7, - 0x63CF, 0x7784, 0x85D0, 0x79D2, 0x6E3A, 0x5E99, 0x5999, 0x8511, - 0x706D, 0x6C11, 0x62BF, 0x76BF, 0x654F, 0x60AF, 0x95FD, 0x660E, - 0x879F, 0x9E23, 0x94ED, 0x540D, 0x547D, 0x8C2C, 0x6478, 0, -plane c4 -at 0xa0 - 0x81D3, 0x6479, 0x8611, 0x6A21, 0x819C, 0x78E8, 0x6469, 0x9B54, - 0x62B9, 0x672B, 0x83AB, 0x58A8, 0x9ED8, 0x6CAB, 0x6F20, 0x5BDE, - 0x964C, 0x8C0B, 0x725F, 0x67D0, 0x62C7, 0x7261, 0x4EA9, 0x59C6, - 0x6BCD, 0x5893, 0x66AE, 0x5E55, 0x52DF, 0x6155, 0x6728, 0x76EE, - 0x7766, 0x7267, 0x7A46, 0x62FF, 0x54EA, 0x5450, 0x94A0, 0x90A3, - 0x5A1C, 0x7EB3, 0x6C16, 0x4E43, 0x5976, 0x8010, 0x5948, 0x5357, - 0x7537, 0x96BE, 0x56CA, 0x6320, 0x8111, 0x607C, 0x95F9, 0x6DD6, - 0x5462, 0x9981, 0x5185, 0x5AE9, 0x80FD, 0x59AE, 0x9713, 0x502A, - 0x6CE5, 0x5C3C, 0x62DF, 0x4F60, 0x533F, 0x817B, 0x9006, 0x6EBA, - 0x852B, 0x62C8, 0x5E74, 0x78BE, 0x64B5, 0x637B, 0x5FF5, 0x5A18, - 0x917F, 0x9E1F, 0x5C3F, 0x634F, 0x8042, 0x5B7D, 0x556E, 0x954A, - 0x954D, 0x6D85, 0x60A8, 0x67E0, 0x72DE, 0x51DD, 0x5B81, 0, -plane c5 -at 0xa0 - 0x8269, 0x62E7, 0x6CDE, 0x725B, 0x626D, 0x94AE, 0x7EBD, 0x8113, - 0x6D53, 0x519C, 0x5F04, 0x5974, 0x52AA, 0x6012, 0x5973, 0x6696, - 0x8650, 0x759F, 0x632A, 0x61E6, 0x7CEF, 0x8BFA, 0x54E6, 0x6B27, - 0x9E25, 0x6BB4, 0x85D5, 0x5455, 0x5076, 0x6CA4, 0x556A, 0x8DB4, - 0x722C, 0x5E15, 0x6015, 0x7436, 0x62CD, 0x6392, 0x724C, 0x5F98, - 0x6E43, 0x6D3E, 0x6500, 0x6F58, 0x76D8, 0x78D0, 0x76FC, 0x7554, - 0x5224, 0x53DB, 0x4E53, 0x5E9E, 0x65C1, 0x802A, 0x80D6, 0x629B, - 0x5486, 0x5228, 0x70AE, 0x888D, 0x8DD1, 0x6CE1, 0x5478, 0x80DA, - 0x57F9, 0x88F4, 0x8D54, 0x966A, 0x914D, 0x4F69, 0x6C9B, 0x55B7, - 0x76C6, 0x7830, 0x62A8, 0x70F9, 0x6F8E, 0x5F6D, 0x84EC, 0x68DA, - 0x787C, 0x7BF7, 0x81A8, 0x670B, 0x9E4F, 0x6367, 0x78B0, 0x576F, - 0x7812, 0x9739, 0x6279, 0x62AB, 0x5288, 0x7435, 0x6BD7, 0, -plane c6 -at 0xa0 - 0x833D, 0x5564, 0x813E, 0x75B2, 0x76AE, 0x5339, 0x75DE, 0x50FB, - 0x5C41, 0x8B6C, 0x7BC7, 0x504F, 0x7247, 0x9A97, 0x98D8, 0x6F02, - 0x74E2, 0x7968, 0x6487, 0x77A5, 0x62FC, 0x9891, 0x8D2B, 0x54C1, - 0x8058, 0x4E52, 0x576A, 0x82F9, 0x840D, 0x5E73, 0x51ED, 0x74F6, - 0x8BC4, 0x5C4F, 0x5761, 0x6CFC, 0x9887, 0x5A46, 0x7834, 0x9B44, - 0x8FEB, 0x7C95, 0x5256, 0x6251, 0x94FA, 0x4EC6, 0x8386, 0x8461, - 0x83E9, 0x84B2, 0x57D4, 0x6734, 0x5703, 0x666E, 0x6D66, 0x8C31, - 0x66DD, 0x7011, 0x671F, 0x6B3A, 0x6816, 0x621A, 0x59BB, 0x4E03, - 0x51C4, 0x6F06, 0x67D2, 0x6C8F, 0x5176, 0x68CB, 0x5947, 0x6B67, - 0x7566, 0x5D0E, 0x8110, 0x9F50, 0x65D7, 0x7948, 0x7941, 0x9A91, - 0x8D77, 0x5C82, 0x4E5E, 0x4F01, 0x542F, 0x5951, 0x780C, 0x5668, - 0x6C14, 0x8FC4, 0x5F03, 0x6C7D, 0x6CE3, 0x8BAB, 0x6390, 0, -plane c7 -at 0xa0 - 0x83ED, 0x6070, 0x6D3D, 0x7275, 0x6266, 0x948E, 0x94C5, 0x5343, - 0x8FC1, 0x7B7E, 0x4EDF, 0x8C26, 0x4E7E, 0x9ED4, 0x94B1, 0x94B3, - 0x524D, 0x6F5C, 0x9063, 0x6D45, 0x8C34, 0x5811, 0x5D4C, 0x6B20, - 0x6B49, 0x67AA, 0x545B, 0x8154, 0x7F8C, 0x5899, 0x8537, 0x5F3A, - 0x62A2, 0x6A47, 0x9539, 0x6572, 0x6084, 0x6865, 0x77A7, 0x4E54, - 0x4FA8, 0x5DE7, 0x9798, 0x64AC, 0x7FD8, 0x5CED, 0x4FCF, 0x7A8D, - 0x5207, 0x8304, 0x4E14, 0x602F, 0x7A83, 0x94A6, 0x4FB5, 0x4EB2, - 0x79E6, 0x7434, 0x52E4, 0x82B9, 0x64D2, 0x79BD, 0x5BDD, 0x6C81, - 0x9752, 0x8F7B, 0x6C22, 0x503E, 0x537F, 0x6E05, 0x64CE, 0x6674, - 0x6C30, 0x60C5, 0x9877, 0x8BF7, 0x5E86, 0x743C, 0x7A77, 0x79CB, - 0x4E18, 0x90B1, 0x7403, 0x6C42, 0x56DA, 0x914B, 0x6CC5, 0x8D8B, - 0x533A, 0x86C6, 0x66F2, 0x8EAF, 0x5C48, 0x9A71, 0x6E20, 0, -plane c8 -at 0xa0 - 0x847C, 0x53D6, 0x5A36, 0x9F8B, 0x8DA3, 0x53BB, 0x5708, 0x98A7, - 0x6743, 0x919B, 0x6CC9, 0x5168, 0x75CA, 0x62F3, 0x72AC, 0x5238, - 0x529D, 0x7F3A, 0x7094, 0x7638, 0x5374, 0x9E4A, 0x69B7, 0x786E, - 0x96C0, 0x88D9, 0x7FA4, 0x7136, 0x71C3, 0x5189, 0x67D3, 0x74E4, - 0x58E4, 0x6518, 0x56B7, 0x8BA9, 0x9976, 0x6270, 0x7ED5, 0x60F9, - 0x70ED, 0x58EC, 0x4EC1, 0x4EBA, 0x5FCD, 0x97E7, 0x4EFB, 0x8BA4, - 0x5203, 0x598A, 0x7EAB, 0x6254, 0x4ECD, 0x65E5, 0x620E, 0x8338, - 0x84C9, 0x8363, 0x878D, 0x7194, 0x6EB6, 0x5BB9, 0x7ED2, 0x5197, - 0x63C9, 0x67D4, 0x8089, 0x8339, 0x8815, 0x5112, 0x5B7A, 0x5982, - 0x8FB1, 0x4E73, 0x6C5D, 0x5165, 0x8925, 0x8F6F, 0x962E, 0x854A, - 0x745E, 0x9510, 0x95F0, 0x6DA6, 0x82E5, 0x5F31, 0x6492, 0x6D12, - 0x8428, 0x816E, 0x9CC3, 0x585E, 0x8D5B, 0x4E09, 0x53C1, 0, -plane c9 -at 0xa0 - 0x8502, 0x4F1E, 0x6563, 0x6851, 0x55D3, 0x4E27, 0x6414, 0x9A9A, - 0x626B, 0x5AC2, 0x745F, 0x8272, 0x6DA9, 0x68EE, 0x50E7, 0x838E, - 0x7802, 0x6740, 0x5239, 0x6C99, 0x7EB1, 0x50BB, 0x5565, 0x715E, - 0x7B5B, 0x6652, 0x73CA, 0x82EB, 0x6749, 0x5C71, 0x5220, 0x717D, - 0x886B, 0x95EA, 0x9655, 0x64C5, 0x8D61, 0x81B3, 0x5584, 0x6C55, - 0x6247, 0x7F2E, 0x5892, 0x4F24, 0x5546, 0x8D4F, 0x664C, 0x4E0A, - 0x5C1A, 0x88F3, 0x68A2, 0x634E, 0x7A0D, 0x70E7, 0x828D, 0x52FA, - 0x97F6, 0x5C11, 0x54E8, 0x90B5, 0x7ECD, 0x5962, 0x8D4A, 0x86C7, - 0x820C, 0x820D, 0x8D66, 0x6444, 0x5C04, 0x6151, 0x6D89, 0x793E, - 0x8BBE, 0x7837, 0x7533, 0x547B, 0x4F38, 0x8EAB, 0x6DF1, 0x5A20, - 0x7EC5, 0x795E, 0x6C88, 0x5BA1, 0x5A76, 0x751A, 0x80BE, 0x614E, - 0x6E17, 0x58F0, 0x751F, 0x7525, 0x7272, 0x5347, 0x7EF3, 0, -plane ca -at 0xa0 - 0x8581, 0x7701, 0x76DB, 0x5269, 0x80DC, 0x5723, 0x5E08, 0x5931, - 0x72EE, 0x65BD, 0x6E7F, 0x8BD7, 0x5C38, 0x8671, 0x5341, 0x77F3, - 0x62FE, 0x65F6, 0x4EC0, 0x98DF, 0x8680, 0x5B9E, 0x8BC6, 0x53F2, - 0x77E2, 0x4F7F, 0x5C4E, 0x9A76, 0x59CB, 0x5F0F, 0x793A, 0x58EB, - 0x4E16, 0x67FF, 0x4E8B, 0x62ED, 0x8A93, 0x901D, 0x52BF, 0x662F, - 0x55DC, 0x566C, 0x9002, 0x4ED5, 0x4F8D, 0x91CA, 0x9970, 0x6C0F, - 0x5E02, 0x6043, 0x5BA4, 0x89C6, 0x8BD5, 0x6536, 0x624B, 0x9996, - 0x5B88, 0x5BFF, 0x6388, 0x552E, 0x53D7, 0x7626, 0x517D, 0x852C, - 0x67A2, 0x68B3, 0x6B8A, 0x6292, 0x8F93, 0x53D4, 0x8212, 0x6DD1, - 0x758F, 0x4E66, 0x8D4E, 0x5B70, 0x719F, 0x85AF, 0x6691, 0x66D9, - 0x7F72, 0x8700, 0x9ECD, 0x9F20, 0x5C5E, 0x672F, 0x8FF0, 0x6811, - 0x675F, 0x620D, 0x7AD6, 0x5885, 0x5EB6, 0x6570, 0x6F31, 0, -plane cb -at 0xa0 - 0x85F8, 0x6055, 0x5237, 0x800D, 0x6454, 0x8870, 0x7529, 0x5E05, - 0x6813, 0x62F4, 0x971C, 0x53CC, 0x723D, 0x8C01, 0x6C34, 0x7761, - 0x7A0E, 0x542E, 0x77AC, 0x987A, 0x821C, 0x8BF4, 0x7855, 0x6714, - 0x70C1, 0x65AF, 0x6495, 0x5636, 0x601D, 0x79C1, 0x53F8, 0x4E1D, - 0x6B7B, 0x8086, 0x5BFA, 0x55E3, 0x56DB, 0x4F3A, 0x4F3C, 0x9972, - 0x5DF3, 0x677E, 0x8038, 0x6002, 0x9882, 0x9001, 0x5B8B, 0x8BBC, - 0x8BF5, 0x641C, 0x8258, 0x64DE, 0x55FD, 0x82CF, 0x9165, 0x4FD7, - 0x7D20, 0x901F, 0x7C9F, 0x50F3, 0x5851, 0x6EAF, 0x5BBF, 0x8BC9, - 0x8083, 0x9178, 0x849C, 0x7B97, 0x867D, 0x968B, 0x968F, 0x7EE5, - 0x9AD3, 0x788E, 0x5C81, 0x7A57, 0x9042, 0x96A7, 0x795F, 0x5B59, - 0x635F, 0x7B0B, 0x84D1, 0x68AD, 0x5506, 0x7F29, 0x7410, 0x7D22, - 0x9501, 0x6240, 0x584C, 0x4ED6, 0x5B83, 0x5979, 0x5854, 0, -plane cc -at 0xa0 - 0x866A, 0x736D, 0x631E, 0x8E4B, 0x8E0F, 0x80CE, 0x82D4, 0x62AC, - 0x53F0, 0x6CF0, 0x915E, 0x592A, 0x6001, 0x6C70, 0x574D, 0x644A, - 0x8D2A, 0x762B, 0x6EE9, 0x575B, 0x6A80, 0x75F0, 0x6F6D, 0x8C2D, - 0x8C08, 0x5766, 0x6BEF, 0x8892, 0x78B3, 0x63A2, 0x53F9, 0x70AD, - 0x6C64, 0x5858, 0x642A, 0x5802, 0x68E0, 0x819B, 0x5510, 0x7CD6, - 0x5018, 0x8EBA, 0x6DCC, 0x8D9F, 0x70EB, 0x638F, 0x6D9B, 0x6ED4, - 0x7EE6, 0x8404, 0x6843, 0x9003, 0x6DD8, 0x9676, 0x8BA8, 0x5957, - 0x7279, 0x85E4, 0x817E, 0x75BC, 0x8A8A, 0x68AF, 0x5254, 0x8E22, - 0x9511, 0x63D0, 0x9898, 0x8E44, 0x557C, 0x4F53, 0x66FF, 0x568F, - 0x60D5, 0x6D95, 0x5243, 0x5C49, 0x5929, 0x6DFB, 0x586B, 0x7530, - 0x751C, 0x606C, 0x8214, 0x8146, 0x6311, 0x6761, 0x8FE2, 0x773A, - 0x8DF3, 0x8D34, 0x94C1, 0x5E16, 0x5385, 0x542C, 0x70C3, 0, -plane cd -at 0xa0 - 0x8716, 0x6C40, 0x5EF7, 0x505C, 0x4EAD, 0x5EAD, 0x633A, 0x8247, - 0x901A, 0x6850, 0x916E, 0x77B3, 0x540C, 0x94DC, 0x5F64, 0x7AE5, - 0x6876, 0x6345, 0x7B52, 0x7EDF, 0x75DB, 0x5077, 0x6295, 0x5934, - 0x900F, 0x51F8, 0x79C3, 0x7A81, 0x56FE, 0x5F92, 0x9014, 0x6D82, - 0x5C60, 0x571F, 0x5410, 0x5154, 0x6E4D, 0x56E2, 0x63A8, 0x9893, - 0x817F, 0x8715, 0x892A, 0x9000, 0x541E, 0x5C6F, 0x81C0, 0x62D6, - 0x6258, 0x8131, 0x9E35, 0x9640, 0x9A6E, 0x9A7C, 0x692D, 0x59A5, - 0x62D3, 0x553E, 0x6316, 0x54C7, 0x86D9, 0x6D3C, 0x5A03, 0x74E6, - 0x889C, 0x6B6A, 0x5916, 0x8C4C, 0x5F2F, 0x6E7E, 0x73A9, 0x987D, - 0x4E38, 0x70F7, 0x5B8C, 0x7897, 0x633D, 0x665A, 0x7696, 0x60CB, - 0x5B9B, 0x5A49, 0x4E07, 0x8155, 0x6C6A, 0x738B, 0x4EA1, 0x6789, - 0x7F51, 0x5F80, 0x65FA, 0x671B, 0x5FD8, 0x5984, 0x5A01, 0, -plane ce -at 0xa0 - 0x87A4, 0x5DCD, 0x5FAE, 0x5371, 0x97E6, 0x8FDD, 0x6845, 0x56F4, - 0x552F, 0x60DF, 0x4E3A, 0x6F4D, 0x7EF4, 0x82C7, 0x840E, 0x59D4, - 0x4F1F, 0x4F2A, 0x5C3E, 0x7EAC, 0x672A, 0x851A, 0x5473, 0x754F, - 0x80C3, 0x5582, 0x9B4F, 0x4F4D, 0x6E2D, 0x8C13, 0x5C09, 0x6170, - 0x536B, 0x761F, 0x6E29, 0x868A, 0x6587, 0x95FB, 0x7EB9, 0x543B, - 0x7A33, 0x7D0A, 0x95EE, 0x55E1, 0x7FC1, 0x74EE, 0x631D, 0x8717, - 0x6DA1, 0x7A9D, 0x6211, 0x65A1, 0x5367, 0x63E1, 0x6C83, 0x5DEB, - 0x545C, 0x94A8, 0x4E4C, 0x6C61, 0x8BEC, 0x5C4B, 0x65E0, 0x829C, - 0x68A7, 0x543E, 0x5434, 0x6BCB, 0x6B66, 0x4E94, 0x6342, 0x5348, - 0x821E, 0x4F0D, 0x4FAE, 0x575E, 0x620A, 0x96FE, 0x6664, 0x7269, - 0x52FF, 0x52A1, 0x609F, 0x8BEF, 0x6614, 0x7199, 0x6790, 0x897F, - 0x7852, 0x77FD, 0x6670, 0x563B, 0x5438, 0x9521, 0x727A, 0, -plane cf -at 0xa0 - 0x8823, 0x7A00, 0x606F, 0x5E0C, 0x6089, 0x819D, 0x5915, 0x60DC, - 0x7184, 0x70EF, 0x6EAA, 0x6C50, 0x7280, 0x6A84, 0x88AD, 0x5E2D, - 0x4E60, 0x5AB3, 0x559C, 0x94E3, 0x6D17, 0x7CFB, 0x9699, 0x620F, - 0x7EC6, 0x778E, 0x867E, 0x5323, 0x971E, 0x8F96, 0x6687, 0x5CE1, - 0x4FA0, 0x72ED, 0x4E0B, 0x53A6, 0x590F, 0x5413, 0x6380, 0x9528, - 0x5148, 0x4ED9, 0x9C9C, 0x7EA4, 0x54B8, 0x8D24, 0x8854, 0x8237, - 0x95F2, 0x6D8E, 0x5F26, 0x5ACC, 0x663E, 0x9669, 0x73B0, 0x732E, - 0x53BF, 0x817A, 0x9985, 0x7FA1, 0x5BAA, 0x9677, 0x9650, 0x7EBF, - 0x76F8, 0x53A2, 0x9576, 0x9999, 0x7BB1, 0x8944, 0x6E58, 0x4E61, - 0x7FD4, 0x7965, 0x8BE6, 0x60F3, 0x54CD, 0x4EAB, 0x9879, 0x5DF7, - 0x6A61, 0x50CF, 0x5411, 0x8C61, 0x8427, 0x785D, 0x9704, 0x524A, - 0x54EE, 0x56A3, 0x9500, 0x6D88, 0x5BB5, 0x6DC6, 0x6653, 0, -plane d0 -at 0xa0 - 0x88AA, 0x5C0F, 0x5B5D, 0x6821, 0x8096, 0x5578, 0x7B11, 0x6548, - 0x6954, 0x4E9B, 0x6B47, 0x874E, 0x978B, 0x534F, 0x631F, 0x643A, - 0x90AA, 0x659C, 0x80C1, 0x8C10, 0x5199, 0x68B0, 0x5378, 0x87F9, - 0x61C8, 0x6CC4, 0x6CFB, 0x8C22, 0x5C51, 0x85AA, 0x82AF, 0x950C, - 0x6B23, 0x8F9B, 0x65B0, 0x5FFB, 0x5FC3, 0x4FE1, 0x8845, 0x661F, - 0x8165, 0x7329, 0x60FA, 0x5174, 0x5211, 0x578B, 0x5F62, 0x90A2, - 0x884C, 0x9192, 0x5E78, 0x674F, 0x6027, 0x59D3, 0x5144, 0x51F6, - 0x80F8, 0x5308, 0x6C79, 0x96C4, 0x718A, 0x4F11, 0x4FEE, 0x7F9E, - 0x673D, 0x55C5, 0x9508, 0x79C0, 0x8896, 0x7EE3, 0x589F, 0x620C, - 0x9700, 0x865A, 0x5618, 0x987B, 0x5F90, 0x8BB8, 0x84C4, 0x9157, - 0x53D9, 0x65ED, 0x5E8F, 0x755C, 0x6064, 0x7D6E, 0x5A7F, 0x7EEA, - 0x7EED, 0x8F69, 0x55A7, 0x5BA3, 0x60AC, 0x65CB, 0x7384, 0, -plane d1 -at 0xa0 - 0x8937, 0x9009, 0x7663, 0x7729, 0x7EDA, 0x9774, 0x859B, 0x5B66, - 0x7A74, 0x96EA, 0x8840, 0x52CB, 0x718F, 0x5FAA, 0x65EC, 0x8BE2, - 0x5BFB, 0x9A6F, 0x5DE1, 0x6B89, 0x6C5B, 0x8BAD, 0x8BAF, 0x900A, - 0x8FC5, 0x538B, 0x62BC, 0x9E26, 0x9E2D, 0x5440, 0x4E2B, 0x82BD, - 0x7259, 0x869C, 0x5D16, 0x8859, 0x6DAF, 0x96C5, 0x54D1, 0x4E9A, - 0x8BB6, 0x7109, 0x54BD, 0x9609, 0x70DF, 0x6DF9, 0x76D0, 0x4E25, - 0x7814, 0x8712, 0x5CA9, 0x5EF6, 0x8A00, 0x989C, 0x960E, 0x708E, - 0x6CBF, 0x5944, 0x63A9, 0x773C, 0x884D, 0x6F14, 0x8273, 0x5830, - 0x71D5, 0x538C, 0x781A, 0x96C1, 0x5501, 0x5F66, 0x7130, 0x5BB4, - 0x8C1A, 0x9A8C, 0x6B83, 0x592E, 0x9E2F, 0x79E7, 0x6768, 0x626C, - 0x4F6F, 0x75A1, 0x7F8A, 0x6D0B, 0x9633, 0x6C27, 0x4EF0, 0x75D2, - 0x517B, 0x6837, 0x6F3E, 0x9080, 0x8170, 0x5996, 0x7476, 0, -plane d2 -at 0xa0 - 0x89A1, 0x6447, 0x5C27, 0x9065, 0x7A91, 0x8C23, 0x59DA, 0x54AC, - 0x8200, 0x836F, 0x8981, 0x8000, 0x6930, 0x564E, 0x8036, 0x7237, - 0x91CE, 0x51B6, 0x4E5F, 0x9875, 0x6396, 0x4E1A, 0x53F6, 0x66F3, - 0x814B, 0x591C, 0x6DB2, 0x4E00, 0x58F9, 0x533B, 0x63D6, 0x94F1, - 0x4F9D, 0x4F0A, 0x8863, 0x9890, 0x5937, 0x9057, 0x79FB, 0x4EEA, - 0x80F0, 0x7591, 0x6C82, 0x5B9C, 0x59E8, 0x5F5D, 0x6905, 0x8681, - 0x501A, 0x5DF2, 0x4E59, 0x77E3, 0x4EE5, 0x827A, 0x6291, 0x6613, - 0x9091, 0x5C79, 0x4EBF, 0x5F79, 0x81C6, 0x9038, 0x8084, 0x75AB, - 0x4EA6, 0x88D4, 0x610F, 0x6BC5, 0x5FC6, 0x4E49, 0x76CA, 0x6EA2, - 0x8BE3, 0x8BAE, 0x8C0A, 0x8BD1, 0x5F02, 0x7FFC, 0x7FCC, 0x7ECE, - 0x8335, 0x836B, 0x56E0, 0x6BB7, 0x97F3, 0x9634, 0x59FB, 0x541F, - 0x94F6, 0x6DEB, 0x5BC5, 0x996E, 0x5C39, 0x5F15, 0x9690, 0, -plane d3 -at 0xa0 - 0x8A1D, 0x5370, 0x82F1, 0x6A31, 0x5A74, 0x9E70, 0x5E94, 0x7F28, - 0x83B9, 0x8424, 0x8425, 0x8367, 0x8747, 0x8FCE, 0x8D62, 0x76C8, - 0x5F71, 0x9896, 0x786C, 0x6620, 0x54DF, 0x62E5, 0x4F63, 0x81C3, - 0x75C8, 0x5EB8, 0x96CD, 0x8E0A, 0x86F9, 0x548F, 0x6CF3, 0x6D8C, - 0x6C38, 0x607F, 0x52C7, 0x7528, 0x5E7D, 0x4F18, 0x60A0, 0x5FE7, - 0x5C24, 0x7531, 0x90AE, 0x94C0, 0x72B9, 0x6CB9, 0x6E38, 0x9149, - 0x6709, 0x53CB, 0x53F3, 0x4F51, 0x91C9, 0x8BF1, 0x53C8, 0x5E7C, - 0x8FC2, 0x6DE4, 0x4E8E, 0x76C2, 0x6986, 0x865E, 0x611A, 0x8206, - 0x4F59, 0x4FDE, 0x903E, 0x9C7C, 0x6109, 0x6E1D, 0x6E14, 0x9685, - 0x4E88, 0x5A31, 0x96E8, 0x4E0E, 0x5C7F, 0x79B9, 0x5B87, 0x8BED, - 0x7FBD, 0x7389, 0x57DF, 0x828B, 0x90C1, 0x5401, 0x9047, 0x55BB, - 0x5CEA, 0x5FA1, 0x6108, 0x6B32, 0x72F1, 0x80B2, 0x8A89, 0, -plane d4 -at 0xa0 - 0x8A80, 0x6D74, 0x5BD3, 0x88D5, 0x9884, 0x8C6B, 0x9A6D, 0x9E33, - 0x6E0A, 0x51A4, 0x5143, 0x57A3, 0x8881, 0x539F, 0x63F4, 0x8F95, - 0x56ED, 0x5458, 0x5706, 0x733F, 0x6E90, 0x7F18, 0x8FDC, 0x82D1, - 0x613F, 0x6028, 0x9662, 0x66F0, 0x7EA6, 0x8D8A, 0x8DC3, 0x94A5, - 0x5CB3, 0x7CA4, 0x6708, 0x60A6, 0x9605, 0x8018, 0x4E91, 0x90E7, - 0x5300, 0x9668, 0x5141, 0x8FD0, 0x8574, 0x915D, 0x6655, 0x97F5, - 0x5B55, 0x531D, 0x7838, 0x6742, 0x683D, 0x54C9, 0x707E, 0x5BB0, - 0x8F7D, 0x518D, 0x5728, 0x54B1, 0x6512, 0x6682, 0x8D5E, 0x8D43, - 0x810F, 0x846C, 0x906D, 0x7CDF, 0x51FF, 0x85FB, 0x67A3, 0x65E9, - 0x6FA1, 0x86A4, 0x8E81, 0x566A, 0x9020, 0x7682, 0x7076, 0x71E5, - 0x8D23, 0x62E9, 0x5219, 0x6CFD, 0x8D3C, 0x600E, 0x589E, 0x618E, - 0x66FE, 0x8D60, 0x624E, 0x55B3, 0x6E23, 0x672D, 0x8F67, 0, -plane d5 -at 0xa0 - 0x8AE3, 0x94E1, 0x95F8, 0x7728, 0x6805, 0x69A8, 0x548B, 0x4E4D, - 0x70B8, 0x8BC8, 0x6458, 0x658B, 0x5B85, 0x7A84, 0x503A, 0x5BE8, - 0x77BB, 0x6BE1, 0x8A79, 0x7C98, 0x6CBE, 0x76CF, 0x65A9, 0x8F97, - 0x5D2D, 0x5C55, 0x8638, 0x6808, 0x5360, 0x6218, 0x7AD9, 0x6E5B, - 0x7EFD, 0x6A1F, 0x7AE0, 0x5F70, 0x6F33, 0x5F20, 0x638C, 0x6DA8, - 0x6756, 0x4E08, 0x5E10, 0x8D26, 0x4ED7, 0x80C0, 0x7634, 0x969C, - 0x62DB, 0x662D, 0x627E, 0x6CBC, 0x8D75, 0x7167, 0x7F69, 0x5146, - 0x8087, 0x53EC, 0x906E, 0x6298, 0x54F2, 0x86F0, 0x8F99, 0x8005, - 0x9517, 0x8517, 0x8FD9, 0x6D59, 0x73CD, 0x659F, 0x771F, 0x7504, - 0x7827, 0x81FB, 0x8D1E, 0x9488, 0x4FA6, 0x6795, 0x75B9, 0x8BCA, - 0x9707, 0x632F, 0x9547, 0x9635, 0x84B8, 0x6323, 0x7741, 0x5F81, - 0x72F0, 0x4E89, 0x6014, 0x6574, 0x62EF, 0x6B63, 0x653F, 0, -plane d6 -at 0xa0 - 0x8B45, 0x5E27, 0x75C7, 0x90D1, 0x8BC1, 0x829D, 0x679D, 0x652F, - 0x5431, 0x8718, 0x77E5, 0x80A2, 0x8102, 0x6C41, 0x4E4B, 0x7EC7, - 0x804C, 0x76F4, 0x690D, 0x6B96, 0x6267, 0x503C, 0x4F84, 0x5740, - 0x6307, 0x6B62, 0x8DBE, 0x53EA, 0x65E8, 0x7EB8, 0x5FD7, 0x631A, - 0x63B7, 0x81F3, 0x81F4, 0x7F6E, 0x5E1C, 0x5CD9, 0x5236, 0x667A, - 0x79E9, 0x7A1A, 0x8D28, 0x7099, 0x75D4, 0x6EDE, 0x6CBB, 0x7A92, - 0x4E2D, 0x76C5, 0x5FE0, 0x949F, 0x8877, 0x7EC8, 0x79CD, 0x80BF, - 0x91CD, 0x4EF2, 0x4F17, 0x821F, 0x5468, 0x5DDE, 0x6D32, 0x8BCC, - 0x7CA5, 0x8F74, 0x8098, 0x5E1A, 0x5492, 0x76B1, 0x5B99, 0x663C, - 0x9AA4, 0x73E0, 0x682A, 0x86DB, 0x6731, 0x732A, 0x8BF8, 0x8BDB, - 0x9010, 0x7AF9, 0x70DB, 0x716E, 0x62C4, 0x77A9, 0x5631, 0x4E3B, - 0x8457, 0x67F1, 0x52A9, 0x86C0, 0x8D2E, 0x94F8, 0x7B51, 0, -plane d7 -at 0xa0 - 0x8C1E, 0x4F4F, 0x6CE8, 0x795D, 0x9A7B, 0x6293, 0x722A, 0x62FD, - 0x4E13, 0x7816, 0x8F6C, 0x64B0, 0x8D5A, 0x7BC6, 0x6869, 0x5E84, - 0x88C5, 0x5986, 0x649E, 0x58EE, 0x72B6, 0x690E, 0x9525, 0x8FFD, - 0x8D58, 0x5760, 0x7F00, 0x8C06, 0x51C6, 0x6349, 0x62D9, 0x5353, - 0x684C, 0x7422, 0x8301, 0x914C, 0x5544, 0x7740, 0x707C, 0x6D4A, - 0x5179, 0x54A8, 0x8D44, 0x59FF, 0x6ECB, 0x6DC4, 0x5B5C, 0x7D2B, - 0x4ED4, 0x7C7D, 0x6ED3, 0x5B50, 0x81EA, 0x6E0D, 0x5B57, 0x9B03, - 0x68D5, 0x8E2A, 0x5B97, 0x7EFC, 0x603B, 0x7EB5, 0x90B9, 0x8D70, - 0x594F, 0x63CD, 0x79DF, 0x8DB3, 0x5352, 0x65CF, 0x7956, 0x8BC5, - 0x963B, 0x7EC4, 0x94BB, 0x7E82, 0x5634, 0x9189, 0x6700, 0x7F6A, - 0x5C0A, 0x9075, 0x6628, 0x5DE6, 0x4F50, 0x67DE, 0x505A, 0x4F5C, - 0x5750, 0x5EA7, 0, 0, 0, 0, 0, 0, -plane d8 -at 0xa0 - 0x8CAD, 0x4E8D, 0x4E0C, 0x5140, 0x4E10, 0x5EFF, 0x5345, 0x4E15, - 0x4E98, 0x4E1E, 0x9B32, 0x5B6C, 0x5669, 0x4E28, 0x79BA, 0x4E3F, - 0x5315, 0x4E47, 0x592D, 0x723B, 0x536E, 0x6C10, 0x56DF, 0x80E4, - 0x9997, 0x6BD3, 0x777E, 0x9F17, 0x4E36, 0x4E9F, 0x9F10, 0x4E5C, - 0x4E69, 0x4E93, 0x8288, 0x5B5B, 0x556C, 0x560F, 0x4EC4, 0x538D, - 0x539D, 0x53A3, 0x53A5, 0x53AE, 0x9765, 0x8D5D, 0x531A, 0x53F5, - 0x5326, 0x532E, 0x533E, 0x8D5C, 0x5366, 0x5363, 0x5202, 0x5208, - 0x520E, 0x522D, 0x5233, 0x523F, 0x5240, 0x524C, 0x525E, 0x5261, - 0x525C, 0x84AF, 0x527D, 0x5282, 0x5281, 0x5290, 0x5293, 0x5182, - 0x7F54, 0x4EBB, 0x4EC3, 0x4EC9, 0x4EC2, 0x4EE8, 0x4EE1, 0x4EEB, - 0x4EDE, 0x4F1B, 0x4EF3, 0x4F22, 0x4F64, 0x4EF5, 0x4F25, 0x4F27, - 0x4F09, 0x4F2B, 0x4F5E, 0x4F67, 0x6538, 0x4F5A, 0x4F5D, 0, -plane d9 -at 0xa0 - 0x8D0D, 0x4F5F, 0x4F57, 0x4F32, 0x4F3D, 0x4F76, 0x4F74, 0x4F91, - 0x4F89, 0x4F83, 0x4F8F, 0x4F7E, 0x4F7B, 0x4FAA, 0x4F7C, 0x4FAC, - 0x4F94, 0x4FE6, 0x4FE8, 0x4FEA, 0x4FC5, 0x4FDA, 0x4FE3, 0x4FDC, - 0x4FD1, 0x4FDF, 0x4FF8, 0x5029, 0x504C, 0x4FF3, 0x502C, 0x500F, - 0x502E, 0x502D, 0x4FFE, 0x501C, 0x500C, 0x5025, 0x5028, 0x507E, - 0x5043, 0x5055, 0x5048, 0x504E, 0x506C, 0x507B, 0x50A5, 0x50A7, - 0x50A9, 0x50BA, 0x50D6, 0x5106, 0x50ED, 0x50EC, 0x50E6, 0x50EE, - 0x5107, 0x510B, 0x4EDD, 0x6C3D, 0x4F58, 0x4F65, 0x4FCE, 0x9FA0, - 0x6C46, 0x7C74, 0x516E, 0x5DFD, 0x9EC9, 0x9998, 0x5181, 0x5914, - 0x52F9, 0x530D, 0x8A07, 0x5310, 0x51EB, 0x5919, 0x5155, 0x4EA0, - 0x5156, 0x4EB3, 0x886E, 0x88A4, 0x4EB5, 0x8114, 0x88D2, 0x7980, - 0x5B34, 0x8803, 0x7FB8, 0x51AB, 0x51B1, 0x51BD, 0x51BC, 0, -plane da -at 0xa0 - 0x8DD4, 0x51C7, 0x5196, 0x51A2, 0x51A5, 0x8BA0, 0x8BA6, 0x8BA7, - 0x8BAA, 0x8BB4, 0x8BB5, 0x8BB7, 0x8BC2, 0x8BC3, 0x8BCB, 0x8BCF, - 0x8BCE, 0x8BD2, 0x8BD3, 0x8BD4, 0x8BD6, 0x8BD8, 0x8BD9, 0x8BDC, - 0x8BDF, 0x8BE0, 0x8BE4, 0x8BE8, 0x8BE9, 0x8BEE, 0x8BF0, 0x8BF3, - 0x8BF6, 0x8BF9, 0x8BFC, 0x8BFF, 0x8C00, 0x8C02, 0x8C04, 0x8C07, - 0x8C0C, 0x8C0F, 0x8C11, 0x8C12, 0x8C14, 0x8C15, 0x8C16, 0x8C19, - 0x8C1B, 0x8C18, 0x8C1D, 0x8C1F, 0x8C20, 0x8C21, 0x8C25, 0x8C27, - 0x8C2A, 0x8C2B, 0x8C2E, 0x8C2F, 0x8C32, 0x8C33, 0x8C35, 0x8C36, - 0x5369, 0x537A, 0x961D, 0x9622, 0x9621, 0x9631, 0x962A, 0x963D, - 0x963C, 0x9642, 0x9649, 0x9654, 0x965F, 0x9667, 0x966C, 0x9672, - 0x9674, 0x9688, 0x968D, 0x9697, 0x96B0, 0x9097, 0x909B, 0x909D, - 0x9099, 0x90AC, 0x90A1, 0x90B4, 0x90B3, 0x90B6, 0x90BA, 0, -plane db -at 0xa0 - 0x8E71, 0x90B8, 0x90B0, 0x90CF, 0x90C5, 0x90BE, 0x90D0, 0x90C4, - 0x90C7, 0x90D3, 0x90E6, 0x90E2, 0x90DC, 0x90D7, 0x90DB, 0x90EB, - 0x90EF, 0x90FE, 0x9104, 0x9122, 0x911E, 0x9123, 0x9131, 0x912F, - 0x9139, 0x9143, 0x9146, 0x520D, 0x5942, 0x52A2, 0x52AC, 0x52AD, - 0x52BE, 0x54FF, 0x52D0, 0x52D6, 0x52F0, 0x53DF, 0x71EE, 0x77CD, - 0x5EF4, 0x51F5, 0x51FC, 0x9B2F, 0x53B6, 0x5F01, 0x755A, 0x5DEF, - 0x574C, 0x57A9, 0x57A1, 0x587E, 0x58BC, 0x58C5, 0x58D1, 0x5729, - 0x572C, 0x572A, 0x5733, 0x5739, 0x572E, 0x572F, 0x575C, 0x573B, - 0x5742, 0x5769, 0x5785, 0x576B, 0x5786, 0x577C, 0x577B, 0x5768, - 0x576D, 0x5776, 0x5773, 0x57AD, 0x57A4, 0x578C, 0x57B2, 0x57CF, - 0x57A7, 0x57B4, 0x5793, 0x57A0, 0x57D5, 0x57D8, 0x57DA, 0x57D9, - 0x57D2, 0x57B8, 0x57F4, 0x57EF, 0x57F8, 0x57E4, 0x57DD, 0, -plane dc -at 0xa0 - 0x8EE4, 0x580B, 0x580D, 0x57FD, 0x57ED, 0x5800, 0x581E, 0x5819, - 0x5844, 0x5820, 0x5865, 0x586C, 0x5881, 0x5889, 0x589A, 0x5880, - 0x99A8, 0x9F19, 0x61FF, 0x8279, 0x827D, 0x827F, 0x828F, 0x828A, - 0x82A8, 0x8284, 0x828E, 0x8291, 0x8297, 0x8299, 0x82AB, 0x82B8, - 0x82BE, 0x82B0, 0x82C8, 0x82CA, 0x82E3, 0x8298, 0x82B7, 0x82AE, - 0x82CB, 0x82CC, 0x82C1, 0x82A9, 0x82B4, 0x82A1, 0x82AA, 0x829F, - 0x82C4, 0x82CE, 0x82A4, 0x82E1, 0x8309, 0x82F7, 0x82E4, 0x830F, - 0x8307, 0x82DC, 0x82F4, 0x82D2, 0x82D8, 0x830C, 0x82FB, 0x82D3, - 0x8311, 0x831A, 0x8306, 0x8314, 0x8315, 0x82E0, 0x82D5, 0x831C, - 0x8351, 0x835B, 0x835C, 0x8308, 0x8392, 0x833C, 0x8334, 0x8331, - 0x839B, 0x835E, 0x832F, 0x834F, 0x8347, 0x8343, 0x835F, 0x8340, - 0x8317, 0x8360, 0x832D, 0x833A, 0x8333, 0x8366, 0x8365, 0, -plane dd -at 0xa0 - 0x8F44, 0x8368, 0x831B, 0x8369, 0x836C, 0x836A, 0x836D, 0x836E, - 0x83B0, 0x8378, 0x83B3, 0x83B4, 0x83A0, 0x83AA, 0x8393, 0x839C, - 0x8385, 0x837C, 0x83B6, 0x83A9, 0x837D, 0x83B8, 0x837B, 0x8398, - 0x839E, 0x83A8, 0x83BA, 0x83BC, 0x83C1, 0x8401, 0x83E5, 0x83D8, - 0x5807, 0x8418, 0x840B, 0x83DD, 0x83FD, 0x83D6, 0x841C, 0x8438, - 0x8411, 0x8406, 0x83D4, 0x83DF, 0x840F, 0x8403, 0x83F8, 0x83F9, - 0x83EA, 0x83C5, 0x83C0, 0x8426, 0x83F0, 0x83E1, 0x845C, 0x8451, - 0x845A, 0x8459, 0x8473, 0x8487, 0x8488, 0x847A, 0x8489, 0x8478, - 0x843C, 0x8446, 0x8469, 0x8476, 0x848C, 0x848E, 0x8431, 0x846D, - 0x84C1, 0x84CD, 0x84D0, 0x84E6, 0x84BD, 0x84D3, 0x84CA, 0x84BF, - 0x84BA, 0x84E0, 0x84A1, 0x84B9, 0x84B4, 0x8497, 0x84E5, 0x84E3, - 0x850C, 0x750D, 0x8538, 0x84F0, 0x8539, 0x851F, 0x853A, 0, -plane de -at 0xa0 - 0x9018, 0x8556, 0x853B, 0x84FF, 0x84FC, 0x8559, 0x8548, 0x8568, - 0x8564, 0x855E, 0x857A, 0x77A2, 0x8543, 0x8572, 0x857B, 0x85A4, - 0x85A8, 0x8587, 0x858F, 0x8579, 0x85AE, 0x859C, 0x8585, 0x85B9, - 0x85B7, 0x85B0, 0x85D3, 0x85C1, 0x85DC, 0x85FF, 0x8627, 0x8605, - 0x8629, 0x8616, 0x863C, 0x5EFE, 0x5F08, 0x593C, 0x5941, 0x8037, - 0x5955, 0x595A, 0x5958, 0x530F, 0x5C22, 0x5C25, 0x5C2C, 0x5C34, - 0x624C, 0x626A, 0x629F, 0x62BB, 0x62CA, 0x62DA, 0x62D7, 0x62EE, - 0x6322, 0x62F6, 0x6339, 0x634B, 0x6343, 0x63AD, 0x63F6, 0x6371, - 0x637A, 0x638E, 0x63B4, 0x636D, 0x63AC, 0x638A, 0x6369, 0x63AE, - 0x63BC, 0x63F2, 0x63F8, 0x63E0, 0x63FF, 0x63C4, 0x63DE, 0x63CE, - 0x6452, 0x63C6, 0x63BE, 0x6445, 0x6441, 0x640B, 0x641B, 0x6420, - 0x640C, 0x6426, 0x6421, 0x645E, 0x6484, 0x646D, 0x6496, 0, -plane df -at 0xa0 - 0x90C0, 0x647A, 0x64B7, 0x64B8, 0x6499, 0x64BA, 0x64C0, 0x64D0, - 0x64D7, 0x64E4, 0x64E2, 0x6509, 0x6525, 0x652E, 0x5F0B, 0x5FD2, - 0x7519, 0x5F11, 0x535F, 0x53F1, 0x53FD, 0x53E9, 0x53E8, 0x53FB, - 0x5412, 0x5416, 0x5406, 0x544B, 0x5452, 0x5453, 0x5454, 0x5456, - 0x5443, 0x5421, 0x5457, 0x5459, 0x5423, 0x5432, 0x5482, 0x5494, - 0x5477, 0x5471, 0x5464, 0x549A, 0x549B, 0x5484, 0x5476, 0x5466, - 0x549D, 0x54D0, 0x54AD, 0x54C2, 0x54B4, 0x54D2, 0x54A7, 0x54A6, - 0x54D3, 0x54D4, 0x5472, 0x54A3, 0x54D5, 0x54BB, 0x54BF, 0x54CC, - 0x54D9, 0x54DA, 0x54DC, 0x54A9, 0x54AA, 0x54A4, 0x54DD, 0x54CF, - 0x54DE, 0x551B, 0x54E7, 0x5520, 0x54FD, 0x5514, 0x54F3, 0x5522, - 0x5523, 0x550F, 0x5511, 0x5527, 0x552A, 0x5567, 0x558F, 0x55B5, - 0x5549, 0x556D, 0x5541, 0x5555, 0x553F, 0x5550, 0x553C, 0, -plane e0 -at 0xa0 - 0x9144, 0x5537, 0x5556, 0x5575, 0x5576, 0x5577, 0x5533, 0x5530, - 0x555C, 0x558B, 0x55D2, 0x5583, 0x55B1, 0x55B9, 0x5588, 0x5581, - 0x559F, 0x557E, 0x55D6, 0x5591, 0x557B, 0x55DF, 0x55BD, 0x55BE, - 0x5594, 0x5599, 0x55EA, 0x55F7, 0x55C9, 0x561F, 0x55D1, 0x55EB, - 0x55EC, 0x55D4, 0x55E6, 0x55DD, 0x55C4, 0x55EF, 0x55E5, 0x55F2, - 0x55F3, 0x55CC, 0x55CD, 0x55E8, 0x55F5, 0x55E4, 0x8F94, 0x561E, - 0x5608, 0x560C, 0x5601, 0x5624, 0x5623, 0x55FE, 0x5600, 0x5627, - 0x562D, 0x5658, 0x5639, 0x5657, 0x562C, 0x564D, 0x5662, 0x5659, - 0x565C, 0x564C, 0x5654, 0x5686, 0x5664, 0x5671, 0x566B, 0x567B, - 0x567C, 0x5685, 0x5693, 0x56AF, 0x56D4, 0x56D7, 0x56DD, 0x56E1, - 0x56F5, 0x56EB, 0x56F9, 0x56FF, 0x5704, 0x570A, 0x5709, 0x571C, - 0x5E0F, 0x5E19, 0x5E14, 0x5E11, 0x5E31, 0x5E3B, 0x5E3C, 0, -plane e1 -at 0xa0 - 0x91E5, 0x5E37, 0x5E44, 0x5E54, 0x5E5B, 0x5E5E, 0x5E61, 0x5C8C, - 0x5C7A, 0x5C8D, 0x5C90, 0x5C96, 0x5C88, 0x5C98, 0x5C99, 0x5C91, - 0x5C9A, 0x5C9C, 0x5CB5, 0x5CA2, 0x5CBD, 0x5CAC, 0x5CAB, 0x5CB1, - 0x5CA3, 0x5CC1, 0x5CB7, 0x5CC4, 0x5CD2, 0x5CE4, 0x5CCB, 0x5CE5, - 0x5D02, 0x5D03, 0x5D27, 0x5D26, 0x5D2E, 0x5D24, 0x5D1E, 0x5D06, - 0x5D1B, 0x5D58, 0x5D3E, 0x5D34, 0x5D3D, 0x5D6C, 0x5D5B, 0x5D6F, - 0x5D5D, 0x5D6B, 0x5D4B, 0x5D4A, 0x5D69, 0x5D74, 0x5D82, 0x5D99, - 0x5D9D, 0x8C73, 0x5DB7, 0x5DC5, 0x5F73, 0x5F77, 0x5F82, 0x5F87, - 0x5F89, 0x5F8C, 0x5F95, 0x5F99, 0x5F9C, 0x5FA8, 0x5FAD, 0x5FB5, - 0x5FBC, 0x8862, 0x5F61, 0x72AD, 0x72B0, 0x72B4, 0x72B7, 0x72B8, - 0x72C3, 0x72C1, 0x72CE, 0x72CD, 0x72D2, 0x72E8, 0x72EF, 0x72E9, - 0x72F2, 0x72F4, 0x72F7, 0x7301, 0x72F3, 0x7303, 0x72FA, 0, -plane e2 -at 0xa0 - 0x9245, 0x72FB, 0x7317, 0x7313, 0x7321, 0x730A, 0x731E, 0x731D, - 0x7315, 0x7322, 0x7339, 0x7325, 0x732C, 0x7338, 0x7331, 0x7350, - 0x734D, 0x7357, 0x7360, 0x736C, 0x736F, 0x737E, 0x821B, 0x5925, - 0x98E7, 0x5924, 0x5902, 0x9963, 0x9967, 0x9968, 0x9969, 0x996A, - 0x996B, 0x996C, 0x9974, 0x9977, 0x997D, 0x9980, 0x9984, 0x9987, - 0x998A, 0x998D, 0x9990, 0x9991, 0x9993, 0x9994, 0x9995, 0x5E80, - 0x5E91, 0x5E8B, 0x5E96, 0x5EA5, 0x5EA0, 0x5EB9, 0x5EB5, 0x5EBE, - 0x5EB3, 0x8D53, 0x5ED2, 0x5ED1, 0x5EDB, 0x5EE8, 0x5EEA, 0x81BA, - 0x5FC4, 0x5FC9, 0x5FD6, 0x5FCF, 0x6003, 0x5FEE, 0x6004, 0x5FE1, - 0x5FE4, 0x5FFE, 0x6005, 0x6006, 0x5FEA, 0x5FED, 0x5FF8, 0x6019, - 0x6035, 0x6026, 0x601B, 0x600F, 0x600D, 0x6029, 0x602B, 0x600A, - 0x603F, 0x6021, 0x6078, 0x6079, 0x607B, 0x607A, 0x6042, 0, -plane e3 -at 0xa0 - 0x92A7, 0x606A, 0x607D, 0x6096, 0x609A, 0x60AD, 0x609D, 0x6083, - 0x6092, 0x608C, 0x609B, 0x60EC, 0x60BB, 0x60B1, 0x60DD, 0x60D8, - 0x60C6, 0x60DA, 0x60B4, 0x6120, 0x6126, 0x6115, 0x6123, 0x60F4, - 0x6100, 0x610E, 0x612B, 0x614A, 0x6175, 0x61AC, 0x6194, 0x61A7, - 0x61B7, 0x61D4, 0x61F5, 0x5FDD, 0x96B3, 0x95E9, 0x95EB, 0x95F1, - 0x95F3, 0x95F5, 0x95F6, 0x95FC, 0x95FE, 0x9603, 0x9604, 0x9606, - 0x9608, 0x960A, 0x960B, 0x960C, 0x960D, 0x960F, 0x9612, 0x9615, - 0x9616, 0x9617, 0x9619, 0x961A, 0x4E2C, 0x723F, 0x6215, 0x6C35, - 0x6C54, 0x6C5C, 0x6C4A, 0x6CA3, 0x6C85, 0x6C90, 0x6C94, 0x6C8C, - 0x6C68, 0x6C69, 0x6C74, 0x6C76, 0x6C86, 0x6CA9, 0x6CD0, 0x6CD4, - 0x6CAD, 0x6CF7, 0x6CF8, 0x6CF1, 0x6CD7, 0x6CB2, 0x6CE0, 0x6CD6, - 0x6CFA, 0x6CEB, 0x6CEE, 0x6CB1, 0x6CD3, 0x6CEF, 0x6CFE, 0, -plane e4 -at 0xa0 - 0x9309, 0x6D39, 0x6D27, 0x6D0C, 0x6D43, 0x6D48, 0x6D07, 0x6D04, - 0x6D19, 0x6D0E, 0x6D2B, 0x6D4D, 0x6D2E, 0x6D35, 0x6D1A, 0x6D4F, - 0x6D52, 0x6D54, 0x6D33, 0x6D91, 0x6D6F, 0x6D9E, 0x6DA0, 0x6D5E, - 0x6D93, 0x6D94, 0x6D5C, 0x6D60, 0x6D7C, 0x6D63, 0x6E1A, 0x6DC7, - 0x6DC5, 0x6DDE, 0x6E0E, 0x6DBF, 0x6DE0, 0x6E11, 0x6DE6, 0x6DDD, - 0x6DD9, 0x6E16, 0x6DAB, 0x6E0C, 0x6DAE, 0x6E2B, 0x6E6E, 0x6E4E, - 0x6E6B, 0x6EB2, 0x6E5F, 0x6E86, 0x6E53, 0x6E54, 0x6E32, 0x6E25, - 0x6E44, 0x6EDF, 0x6EB1, 0x6E98, 0x6EE0, 0x6F2D, 0x6EE2, 0x6EA5, - 0x6EA7, 0x6EBD, 0x6EBB, 0x6EB7, 0x6ED7, 0x6EB4, 0x6ECF, 0x6E8F, - 0x6EC2, 0x6E9F, 0x6F62, 0x6F46, 0x6F47, 0x6F24, 0x6F15, 0x6EF9, - 0x6F2F, 0x6F36, 0x6F4B, 0x6F74, 0x6F2A, 0x6F09, 0x6F29, 0x6F89, - 0x6F8D, 0x6F8C, 0x6F78, 0x6F72, 0x6F7C, 0x6F7A, 0x6FD1, 0, -plane e5 -at 0xa0 - 0x936B, 0x6FC9, 0x6FA7, 0x6FB9, 0x6FB6, 0x6FC2, 0x6FE1, 0x6FEE, - 0x6FDE, 0x6FE0, 0x6FEF, 0x701A, 0x7023, 0x701B, 0x7039, 0x7035, - 0x704F, 0x705E, 0x5B80, 0x5B84, 0x5B95, 0x5B93, 0x5BA5, 0x5BB8, - 0x752F, 0x9A9E, 0x6434, 0x5BE4, 0x5BEE, 0x8930, 0x5BF0, 0x8E47, - 0x8B07, 0x8FB6, 0x8FD3, 0x8FD5, 0x8FE5, 0x8FEE, 0x8FE4, 0x8FE9, - 0x8FE6, 0x8FF3, 0x8FE8, 0x9005, 0x9004, 0x900B, 0x9026, 0x9011, - 0x900D, 0x9016, 0x9021, 0x9035, 0x9036, 0x902D, 0x902F, 0x9044, - 0x9051, 0x9052, 0x9050, 0x9068, 0x9058, 0x9062, 0x905B, 0x66B9, - 0x9074, 0x907D, 0x9082, 0x9088, 0x9083, 0x908B, 0x5F50, 0x5F57, - 0x5F56, 0x5F58, 0x5C3B, 0x54AB, 0x5C50, 0x5C59, 0x5B71, 0x5C63, - 0x5C66, 0x7FBC, 0x5F2A, 0x5F29, 0x5F2D, 0x8274, 0x5F3C, 0x9B3B, - 0x5C6E, 0x5981, 0x5983, 0x598D, 0x59A9, 0x59AA, 0x59A3, 0, -plane e6 -at 0xa0 - 0x93CD, 0x5997, 0x59CA, 0x59AB, 0x599E, 0x59A4, 0x59D2, 0x59B2, - 0x59AF, 0x59D7, 0x59BE, 0x5A05, 0x5A06, 0x59DD, 0x5A08, 0x59E3, - 0x59D8, 0x59F9, 0x5A0C, 0x5A09, 0x5A32, 0x5A34, 0x5A11, 0x5A23, - 0x5A13, 0x5A40, 0x5A67, 0x5A4A, 0x5A55, 0x5A3C, 0x5A62, 0x5A75, - 0x80EC, 0x5AAA, 0x5A9B, 0x5A77, 0x5A7A, 0x5ABE, 0x5AEB, 0x5AB2, - 0x5AD2, 0x5AD4, 0x5AB8, 0x5AE0, 0x5AE3, 0x5AF1, 0x5AD6, 0x5AE6, - 0x5AD8, 0x5ADC, 0x5B09, 0x5B17, 0x5B16, 0x5B32, 0x5B37, 0x5B40, - 0x5C15, 0x5C1C, 0x5B5A, 0x5B65, 0x5B73, 0x5B51, 0x5B53, 0x5B62, - 0x9A75, 0x9A77, 0x9A78, 0x9A7A, 0x9A7F, 0x9A7D, 0x9A80, 0x9A81, - 0x9A85, 0x9A88, 0x9A8A, 0x9A90, 0x9A92, 0x9A93, 0x9A96, 0x9A98, - 0x9A9B, 0x9A9C, 0x9A9D, 0x9A9F, 0x9AA0, 0x9AA2, 0x9AA3, 0x9AA5, - 0x9AA7, 0x7E9F, 0x7EA1, 0x7EA3, 0x7EA5, 0x7EA8, 0x7EA9, 0, -plane e7 -at 0xa0 - 0x942E, 0x7EAD, 0x7EB0, 0x7EBE, 0x7EC0, 0x7EC1, 0x7EC2, 0x7EC9, - 0x7ECB, 0x7ECC, 0x7ED0, 0x7ED4, 0x7ED7, 0x7EDB, 0x7EE0, 0x7EE1, - 0x7EE8, 0x7EEB, 0x7EEE, 0x7EEF, 0x7EF1, 0x7EF2, 0x7F0D, 0x7EF6, - 0x7EFA, 0x7EFB, 0x7EFE, 0x7F01, 0x7F02, 0x7F03, 0x7F07, 0x7F08, - 0x7F0B, 0x7F0C, 0x7F0F, 0x7F11, 0x7F12, 0x7F17, 0x7F19, 0x7F1C, - 0x7F1B, 0x7F1F, 0x7F21, 0x7F22, 0x7F23, 0x7F24, 0x7F25, 0x7F26, - 0x7F27, 0x7F2A, 0x7F2B, 0x7F2C, 0x7F2D, 0x7F2F, 0x7F30, 0x7F31, - 0x7F32, 0x7F33, 0x7F35, 0x5E7A, 0x757F, 0x5DDB, 0x753E, 0x9095, - 0x738E, 0x7391, 0x73AE, 0x73A2, 0x739F, 0x73CF, 0x73C2, 0x73D1, - 0x73B7, 0x73B3, 0x73C0, 0x73C9, 0x73C8, 0x73E5, 0x73D9, 0x987C, - 0x740A, 0x73E9, 0x73E7, 0x73DE, 0x73BA, 0x73F2, 0x740F, 0x742A, - 0x745B, 0x7426, 0x7425, 0x7428, 0x7430, 0x742E, 0x742C, 0, -plane e8 -at 0xa0 - 0x9520, 0x741B, 0x741A, 0x7441, 0x745C, 0x7457, 0x7455, 0x7459, - 0x7477, 0x746D, 0x747E, 0x749C, 0x748E, 0x7480, 0x7481, 0x7487, - 0x748B, 0x749E, 0x74A8, 0x74A9, 0x7490, 0x74A7, 0x74D2, 0x74BA, - 0x97EA, 0x97EB, 0x97EC, 0x674C, 0x6753, 0x675E, 0x6748, 0x6769, - 0x67A5, 0x6787, 0x676A, 0x6773, 0x6798, 0x67A7, 0x6775, 0x67A8, - 0x679E, 0x67AD, 0x678B, 0x6777, 0x677C, 0x67F0, 0x6809, 0x67D8, - 0x680A, 0x67E9, 0x67B0, 0x680C, 0x67D9, 0x67B5, 0x67DA, 0x67B3, - 0x67DD, 0x6800, 0x67C3, 0x67B8, 0x67E2, 0x680E, 0x67C1, 0x67FD, - 0x6832, 0x6833, 0x6860, 0x6861, 0x684E, 0x6862, 0x6844, 0x6864, - 0x6883, 0x681D, 0x6855, 0x6866, 0x6841, 0x6867, 0x6840, 0x683E, - 0x684A, 0x6849, 0x6829, 0x68B5, 0x688F, 0x6874, 0x6877, 0x6893, - 0x686B, 0x68C2, 0x696E, 0x68FC, 0x691F, 0x6920, 0x68F9, 0, -plane e9 -at 0xa0 - 0x95CB, 0x6924, 0x68F0, 0x690B, 0x6901, 0x6957, 0x68E3, 0x6910, - 0x6971, 0x6939, 0x6960, 0x6942, 0x695D, 0x6984, 0x696B, 0x6980, - 0x6998, 0x6978, 0x6934, 0x69CC, 0x6987, 0x6988, 0x69CE, 0x6989, - 0x6966, 0x6963, 0x6979, 0x699B, 0x69A7, 0x69BB, 0x69AB, 0x69AD, - 0x69D4, 0x69B1, 0x69C1, 0x69CA, 0x69DF, 0x6995, 0x69E0, 0x698D, - 0x69FF, 0x6A2F, 0x69ED, 0x6A17, 0x6A18, 0x6A65, 0x69F2, 0x6A44, - 0x6A3E, 0x6AA0, 0x6A50, 0x6A5B, 0x6A35, 0x6A8E, 0x6A79, 0x6A3D, - 0x6A28, 0x6A58, 0x6A7C, 0x6A91, 0x6A90, 0x6AA9, 0x6A97, 0x6AAB, - 0x7337, 0x7352, 0x6B81, 0x6B82, 0x6B87, 0x6B84, 0x6B92, 0x6B93, - 0x6B8D, 0x6B9A, 0x6B9B, 0x6BA1, 0x6BAA, 0x8F6B, 0x8F6D, 0x8F71, - 0x8F72, 0x8F73, 0x8F75, 0x8F76, 0x8F78, 0x8F77, 0x8F79, 0x8F7A, - 0x8F7C, 0x8F7E, 0x8F81, 0x8F82, 0x8F84, 0x8F87, 0x8F8B, 0, -plane ea -at 0xa0 - 0x968A, 0x8F8D, 0x8F8E, 0x8F8F, 0x8F98, 0x8F9A, 0x8ECE, 0x620B, - 0x6217, 0x621B, 0x621F, 0x6222, 0x6221, 0x6225, 0x6224, 0x622C, - 0x81E7, 0x74EF, 0x74F4, 0x74FF, 0x750F, 0x7511, 0x7513, 0x6534, - 0x65EE, 0x65EF, 0x65F0, 0x660A, 0x6619, 0x6772, 0x6603, 0x6615, - 0x6600, 0x7085, 0x66F7, 0x661D, 0x6634, 0x6631, 0x6636, 0x6635, - 0x8006, 0x665F, 0x6654, 0x6641, 0x664F, 0x6656, 0x6661, 0x6657, - 0x6677, 0x6684, 0x668C, 0x66A7, 0x669D, 0x66BE, 0x66DB, 0x66DC, - 0x66E6, 0x66E9, 0x8D32, 0x8D33, 0x8D36, 0x8D3B, 0x8D3D, 0x8D40, - 0x8D45, 0x8D46, 0x8D48, 0x8D49, 0x8D47, 0x8D4D, 0x8D55, 0x8D59, - 0x89C7, 0x89CA, 0x89CB, 0x89CC, 0x89CE, 0x89CF, 0x89D0, 0x89D1, - 0x726E, 0x729F, 0x725D, 0x7266, 0x726F, 0x727E, 0x727F, 0x7284, - 0x728B, 0x728D, 0x728F, 0x7292, 0x6308, 0x6332, 0x63B0, 0, -plane eb -at 0xa0 - 0x9720, 0x643F, 0x64D8, 0x8004, 0x6BEA, 0x6BF3, 0x6BFD, 0x6BF5, - 0x6BF9, 0x6C05, 0x6C07, 0x6C06, 0x6C0D, 0x6C15, 0x6C18, 0x6C19, - 0x6C1A, 0x6C21, 0x6C29, 0x6C24, 0x6C2A, 0x6C32, 0x6535, 0x6555, - 0x656B, 0x724D, 0x7252, 0x7256, 0x7230, 0x8662, 0x5216, 0x809F, - 0x809C, 0x8093, 0x80BC, 0x670A, 0x80BD, 0x80B1, 0x80AB, 0x80AD, - 0x80B4, 0x80B7, 0x80E7, 0x80E8, 0x80E9, 0x80EA, 0x80DB, 0x80C2, - 0x80C4, 0x80D9, 0x80CD, 0x80D7, 0x6710, 0x80DD, 0x80EB, 0x80F1, - 0x80F4, 0x80ED, 0x810D, 0x810E, 0x80F2, 0x80FC, 0x6715, 0x8112, - 0x8C5A, 0x8136, 0x811E, 0x812C, 0x8118, 0x8132, 0x8148, 0x814C, - 0x8153, 0x8174, 0x8159, 0x815A, 0x8171, 0x8160, 0x8169, 0x817C, - 0x817D, 0x816D, 0x8167, 0x584D, 0x5AB5, 0x8188, 0x8182, 0x8191, - 0x6ED5, 0x81A3, 0x81AA, 0x81CC, 0x6726, 0x81CA, 0x81BB, 0, -plane ec -at 0xa0 - 0x979D, 0x81C1, 0x81A6, 0x6B24, 0x6B37, 0x6B39, 0x6B43, 0x6B46, - 0x6B59, 0x98D1, 0x98D2, 0x98D3, 0x98D5, 0x98D9, 0x98DA, 0x6BB3, - 0x5F40, 0x6BC2, 0x89F3, 0x6590, 0x9F51, 0x6593, 0x65BC, 0x65C6, - 0x65C4, 0x65C3, 0x65CC, 0x65CE, 0x65D2, 0x65D6, 0x7080, 0x709C, - 0x7096, 0x709D, 0x70BB, 0x70C0, 0x70B7, 0x70AB, 0x70B1, 0x70E8, - 0x70CA, 0x7110, 0x7113, 0x7116, 0x712F, 0x7131, 0x7173, 0x715C, - 0x7168, 0x7145, 0x7172, 0x714A, 0x7178, 0x717A, 0x7198, 0x71B3, - 0x71B5, 0x71A8, 0x71A0, 0x71E0, 0x71D4, 0x71E7, 0x71F9, 0x721D, - 0x7228, 0x706C, 0x7118, 0x7166, 0x71B9, 0x623E, 0x623D, 0x6243, - 0x6248, 0x6249, 0x793B, 0x7940, 0x7946, 0x7949, 0x795B, 0x795C, - 0x7953, 0x795A, 0x7962, 0x7957, 0x7960, 0x796F, 0x7967, 0x797A, - 0x7985, 0x798A, 0x799A, 0x79A7, 0x79B3, 0x5FD1, 0x5FD0, 0, -plane ed -at 0xa0 - 0x980E, 0x603C, 0x605D, 0x605A, 0x6067, 0x6041, 0x6059, 0x6063, - 0x60AB, 0x6106, 0x610D, 0x615D, 0x61A9, 0x619D, 0x61CB, 0x61D1, - 0x6206, 0x8080, 0x807F, 0x6C93, 0x6CF6, 0x6DFC, 0x77F6, 0x77F8, - 0x7800, 0x7809, 0x7817, 0x7818, 0x7811, 0x65AB, 0x782D, 0x781C, - 0x781D, 0x7839, 0x783A, 0x783B, 0x781F, 0x783C, 0x7825, 0x782C, - 0x7823, 0x7829, 0x784E, 0x786D, 0x7856, 0x7857, 0x7826, 0x7850, - 0x7847, 0x784C, 0x786A, 0x789B, 0x7893, 0x789A, 0x7887, 0x789C, - 0x78A1, 0x78A3, 0x78B2, 0x78B9, 0x78A5, 0x78D4, 0x78D9, 0x78C9, - 0x78EC, 0x78F2, 0x7905, 0x78F4, 0x7913, 0x7924, 0x791E, 0x7934, - 0x9F9B, 0x9EF9, 0x9EFB, 0x9EFC, 0x76F1, 0x7704, 0x770D, 0x76F9, - 0x7707, 0x7708, 0x771A, 0x7722, 0x7719, 0x772D, 0x7726, 0x7735, - 0x7738, 0x7750, 0x7751, 0x7747, 0x7743, 0x775A, 0x7768, 0, -plane ee -at 0xa0 - 0x986E, 0x7762, 0x7765, 0x777F, 0x778D, 0x777D, 0x7780, 0x778C, - 0x7791, 0x779F, 0x77A0, 0x77B0, 0x77B5, 0x77BD, 0x753A, 0x7540, - 0x754E, 0x754B, 0x7548, 0x755B, 0x7572, 0x7579, 0x7583, 0x7F58, - 0x7F61, 0x7F5F, 0x8A48, 0x7F68, 0x7F74, 0x7F71, 0x7F79, 0x7F81, - 0x7F7E, 0x76CD, 0x76E5, 0x8832, 0x9485, 0x9486, 0x9487, 0x948B, - 0x948A, 0x948C, 0x948D, 0x948F, 0x9490, 0x9494, 0x9497, 0x9495, - 0x949A, 0x949B, 0x949C, 0x94A3, 0x94A4, 0x94AB, 0x94AA, 0x94AD, - 0x94AC, 0x94AF, 0x94B0, 0x94B2, 0x94B4, 0x94B6, 0x94B7, 0x94B8, - 0x94B9, 0x94BA, 0x94BC, 0x94BD, 0x94BF, 0x94C4, 0x94C8, 0x94C9, - 0x94CA, 0x94CB, 0x94CC, 0x94CD, 0x94CE, 0x94D0, 0x94D1, 0x94D2, - 0x94D5, 0x94D6, 0x94D7, 0x94D9, 0x94D8, 0x94DB, 0x94DE, 0x94DF, - 0x94E0, 0x94E2, 0x94E4, 0x94E5, 0x94E7, 0x94E8, 0x94EA, 0, -plane ef -at 0xa0 - 0x9907, 0x94E9, 0x94EB, 0x94EE, 0x94EF, 0x94F3, 0x94F4, 0x94F5, - 0x94F7, 0x94F9, 0x94FC, 0x94FD, 0x94FF, 0x9503, 0x9502, 0x9506, - 0x9507, 0x9509, 0x950A, 0x950D, 0x950E, 0x950F, 0x9512, 0x9513, - 0x9514, 0x9515, 0x9516, 0x9518, 0x951B, 0x951D, 0x951E, 0x951F, - 0x9522, 0x952A, 0x952B, 0x9529, 0x952C, 0x9531, 0x9532, 0x9534, - 0x9536, 0x9537, 0x9538, 0x953C, 0x953E, 0x953F, 0x9542, 0x9535, - 0x9544, 0x9545, 0x9546, 0x9549, 0x954C, 0x954E, 0x954F, 0x9552, - 0x9553, 0x9554, 0x9556, 0x9557, 0x9558, 0x9559, 0x955B, 0x955E, - 0x955F, 0x955D, 0x9561, 0x9562, 0x9564, 0x9565, 0x9566, 0x9567, - 0x9568, 0x9569, 0x956A, 0x956B, 0x956C, 0x956F, 0x9571, 0x9572, - 0x9573, 0x953A, 0x77E7, 0x77EC, 0x96C9, 0x79D5, 0x79ED, 0x79E3, - 0x79EB, 0x7A06, 0x5D47, 0x7A03, 0x7A02, 0x7A1E, 0x7A14, 0, -plane f0 -at 0xa0 - 0x9989, 0x7A39, 0x7A37, 0x7A51, 0x9ECF, 0x99A5, 0x7A70, 0x7688, - 0x768E, 0x7693, 0x7699, 0x76A4, 0x74DE, 0x74E0, 0x752C, 0x9E20, - 0x9E22, 0x9E28, 0x9E29, 0x9E2A, 0x9E2B, 0x9E2C, 0x9E32, 0x9E31, - 0x9E36, 0x9E38, 0x9E37, 0x9E39, 0x9E3A, 0x9E3E, 0x9E41, 0x9E42, - 0x9E44, 0x9E46, 0x9E47, 0x9E48, 0x9E49, 0x9E4B, 0x9E4C, 0x9E4E, - 0x9E51, 0x9E55, 0x9E57, 0x9E5A, 0x9E5B, 0x9E5C, 0x9E5E, 0x9E63, - 0x9E66, 0x9E67, 0x9E68, 0x9E69, 0x9E6A, 0x9E6B, 0x9E6C, 0x9E71, - 0x9E6D, 0x9E73, 0x7592, 0x7594, 0x7596, 0x75A0, 0x759D, 0x75AC, - 0x75A3, 0x75B3, 0x75B4, 0x75B8, 0x75C4, 0x75B1, 0x75B0, 0x75C3, - 0x75C2, 0x75D6, 0x75CD, 0x75E3, 0x75E8, 0x75E6, 0x75E4, 0x75EB, - 0x75E7, 0x7603, 0x75F1, 0x75FC, 0x75FF, 0x7610, 0x7600, 0x7605, - 0x760C, 0x7617, 0x760A, 0x7625, 0x7618, 0x7615, 0x7619, 0, -plane f1 -at 0xa0 - 0x99F9, 0x761B, 0x763C, 0x7622, 0x7620, 0x7640, 0x762D, 0x7630, - 0x763F, 0x7635, 0x7643, 0x763E, 0x7633, 0x764D, 0x765E, 0x7654, - 0x765C, 0x7656, 0x766B, 0x766F, 0x7FCA, 0x7AE6, 0x7A78, 0x7A79, - 0x7A80, 0x7A86, 0x7A88, 0x7A95, 0x7AA6, 0x7AA0, 0x7AAC, 0x7AA8, - 0x7AAD, 0x7AB3, 0x8864, 0x8869, 0x8872, 0x887D, 0x887F, 0x8882, - 0x88A2, 0x88C6, 0x88B7, 0x88BC, 0x88C9, 0x88E2, 0x88CE, 0x88E3, - 0x88E5, 0x88F1, 0x891A, 0x88FC, 0x88E8, 0x88FE, 0x88F0, 0x8921, - 0x8919, 0x8913, 0x891B, 0x890A, 0x8934, 0x892B, 0x8936, 0x8941, - 0x8966, 0x897B, 0x758B, 0x80E5, 0x76B2, 0x76B4, 0x77DC, 0x8012, - 0x8014, 0x8016, 0x801C, 0x8020, 0x8022, 0x8025, 0x8026, 0x8027, - 0x8029, 0x8028, 0x8031, 0x800B, 0x8035, 0x8043, 0x8046, 0x804D, - 0x8052, 0x8069, 0x8071, 0x8983, 0x9878, 0x9880, 0x9883, 0, -plane f2 -at 0xa0 - 0x9A59, 0x9889, 0x988C, 0x988D, 0x988F, 0x9894, 0x989A, 0x989B, - 0x989E, 0x989F, 0x98A1, 0x98A2, 0x98A5, 0x98A6, 0x864D, 0x8654, - 0x866C, 0x866E, 0x867F, 0x867A, 0x867C, 0x867B, 0x86A8, 0x868D, - 0x868B, 0x86AC, 0x869D, 0x86A7, 0x86A3, 0x86AA, 0x8693, 0x86A9, - 0x86B6, 0x86C4, 0x86B5, 0x86CE, 0x86B0, 0x86BA, 0x86B1, 0x86AF, - 0x86C9, 0x86CF, 0x86B4, 0x86E9, 0x86F1, 0x86F2, 0x86ED, 0x86F3, - 0x86D0, 0x8713, 0x86DE, 0x86F4, 0x86DF, 0x86D8, 0x86D1, 0x8703, - 0x8707, 0x86F8, 0x8708, 0x870A, 0x870D, 0x8709, 0x8723, 0x873B, - 0x871E, 0x8725, 0x872E, 0x871A, 0x873E, 0x8748, 0x8734, 0x8731, - 0x8729, 0x8737, 0x873F, 0x8782, 0x8722, 0x877D, 0x877E, 0x877B, - 0x8760, 0x8770, 0x874C, 0x876E, 0x878B, 0x8753, 0x8763, 0x877C, - 0x8764, 0x8759, 0x8765, 0x8793, 0x87AF, 0x87A8, 0x87D2, 0, -plane f3 -at 0xa0 - 0x9B06, 0x87C6, 0x8788, 0x8785, 0x87AD, 0x8797, 0x8783, 0x87AB, - 0x87E5, 0x87AC, 0x87B5, 0x87B3, 0x87CB, 0x87D3, 0x87BD, 0x87D1, - 0x87C0, 0x87CA, 0x87DB, 0x87EA, 0x87E0, 0x87EE, 0x8816, 0x8813, - 0x87FE, 0x880A, 0x881B, 0x8821, 0x8839, 0x883C, 0x7F36, 0x7F42, - 0x7F44, 0x7F45, 0x8210, 0x7AFA, 0x7AFD, 0x7B08, 0x7B03, 0x7B04, - 0x7B15, 0x7B0A, 0x7B2B, 0x7B0F, 0x7B47, 0x7B38, 0x7B2A, 0x7B19, - 0x7B2E, 0x7B31, 0x7B20, 0x7B25, 0x7B24, 0x7B33, 0x7B3E, 0x7B1E, - 0x7B58, 0x7B5A, 0x7B45, 0x7B75, 0x7B4C, 0x7B5D, 0x7B60, 0x7B6E, - 0x7B7B, 0x7B62, 0x7B72, 0x7B71, 0x7B90, 0x7BA6, 0x7BA7, 0x7BB8, - 0x7BAC, 0x7B9D, 0x7BA8, 0x7B85, 0x7BAA, 0x7B9C, 0x7BA2, 0x7BAB, - 0x7BB4, 0x7BD1, 0x7BC1, 0x7BCC, 0x7BDD, 0x7BDA, 0x7BE5, 0x7BE6, - 0x7BEA, 0x7C0C, 0x7BFE, 0x7BFC, 0x7C0F, 0x7C16, 0x7C0B, 0, -plane f4 -at 0xa0 - 0x9B7B, 0x7C1F, 0x7C2A, 0x7C26, 0x7C38, 0x7C41, 0x7C40, 0x81FE, - 0x8201, 0x8202, 0x8204, 0x81EC, 0x8844, 0x8221, 0x8222, 0x8223, - 0x822D, 0x822F, 0x8228, 0x822B, 0x8238, 0x823B, 0x8233, 0x8234, - 0x823E, 0x8244, 0x8249, 0x824B, 0x824F, 0x825A, 0x825F, 0x8268, - 0x887E, 0x8885, 0x8888, 0x88D8, 0x88DF, 0x895E, 0x7F9D, 0x7F9F, - 0x7FA7, 0x7FAF, 0x7FB0, 0x7FB2, 0x7C7C, 0x6549, 0x7C91, 0x7C9D, - 0x7C9C, 0x7C9E, 0x7CA2, 0x7CB2, 0x7CBC, 0x7CBD, 0x7CC1, 0x7CC7, - 0x7CCC, 0x7CCD, 0x7CC8, 0x7CC5, 0x7CD7, 0x7CE8, 0x826E, 0x66A8, - 0x7FBF, 0x7FCE, 0x7FD5, 0x7FE5, 0x7FE1, 0x7FE6, 0x7FE9, 0x7FEE, - 0x7FF3, 0x7CF8, 0x7D77, 0x7DA6, 0x7DAE, 0x7E47, 0x7E9B, 0x9EB8, - 0x9EB4, 0x8D73, 0x8D84, 0x8D94, 0x8D91, 0x8DB1, 0x8D67, 0x8D6D, - 0x8C47, 0x8C49, 0x914A, 0x9150, 0x914E, 0x914F, 0x9164, 0, -plane f5 -at 0xa0 - 0x9BDB, 0x9162, 0x9161, 0x9170, 0x9169, 0x916F, 0x917D, 0x917E, - 0x9172, 0x9174, 0x9179, 0x918C, 0x9185, 0x9190, 0x918D, 0x9191, - 0x91A2, 0x91A3, 0x91AA, 0x91AD, 0x91AE, 0x91AF, 0x91B5, 0x91B4, - 0x91BA, 0x8C55, 0x9E7E, 0x8DB8, 0x8DEB, 0x8E05, 0x8E59, 0x8E69, - 0x8DB5, 0x8DBF, 0x8DBC, 0x8DBA, 0x8DC4, 0x8DD6, 0x8DD7, 0x8DDA, - 0x8DDE, 0x8DCE, 0x8DCF, 0x8DDB, 0x8DC6, 0x8DEC, 0x8DF7, 0x8DF8, - 0x8DE3, 0x8DF9, 0x8DFB, 0x8DE4, 0x8E09, 0x8DFD, 0x8E14, 0x8E1D, - 0x8E1F, 0x8E2C, 0x8E2E, 0x8E23, 0x8E2F, 0x8E3A, 0x8E40, 0x8E39, - 0x8E35, 0x8E3D, 0x8E31, 0x8E49, 0x8E41, 0x8E42, 0x8E51, 0x8E52, - 0x8E4A, 0x8E70, 0x8E76, 0x8E7C, 0x8E6F, 0x8E74, 0x8E85, 0x8E8F, - 0x8E94, 0x8E90, 0x8E9C, 0x8E9E, 0x8C78, 0x8C82, 0x8C8A, 0x8C85, - 0x8C98, 0x8C94, 0x659B, 0x89D6, 0x89DE, 0x89DA, 0x89DC, 0, -plane f6 -at 0xa0 - 0x9C3B, 0x89E5, 0x89EB, 0x89EF, 0x8A3E, 0x8B26, 0x9753, 0x96E9, - 0x96F3, 0x96EF, 0x9706, 0x9701, 0x9708, 0x970F, 0x970E, 0x972A, - 0x972D, 0x9730, 0x973E, 0x9F80, 0x9F83, 0x9F85, 0x9F86, 0x9F87, - 0x9F88, 0x9F89, 0x9F8A, 0x9F8C, 0x9EFE, 0x9F0B, 0x9F0D, 0x96B9, - 0x96BC, 0x96BD, 0x96CE, 0x96D2, 0x77BF, 0x96E0, 0x928E, 0x92AE, - 0x92C8, 0x933E, 0x936A, 0x93CA, 0x938F, 0x943E, 0x946B, 0x9C7F, - 0x9C82, 0x9C85, 0x9C86, 0x9C87, 0x9C88, 0x7A23, 0x9C8B, 0x9C8E, - 0x9C90, 0x9C91, 0x9C92, 0x9C94, 0x9C95, 0x9C9A, 0x9C9B, 0x9C9E, - 0x9C9F, 0x9CA0, 0x9CA1, 0x9CA2, 0x9CA3, 0x9CA5, 0x9CA6, 0x9CA7, - 0x9CA8, 0x9CA9, 0x9CAB, 0x9CAD, 0x9CAE, 0x9CB0, 0x9CB1, 0x9CB2, - 0x9CB3, 0x9CB4, 0x9CB5, 0x9CB6, 0x9CB7, 0x9CBA, 0x9CBB, 0x9CBC, - 0x9CBD, 0x9CC4, 0x9CC5, 0x9CC6, 0x9CC7, 0x9CCA, 0x9CCB, 0, -plane f7 -at 0xa0 - 0x9CE1, 0x9CCC, 0x9CCD, 0x9CCE, 0x9CCF, 0x9CD0, 0x9CD3, 0x9CD4, - 0x9CD5, 0x9CD7, 0x9CD8, 0x9CD9, 0x9CDC, 0x9CDD, 0x9CDF, 0x9CE2, - 0x977C, 0x9785, 0x9791, 0x9792, 0x9794, 0x97AF, 0x97AB, 0x97A3, - 0x97B2, 0x97B4, 0x9AB1, 0x9AB0, 0x9AB7, 0x9E58, 0x9AB6, 0x9ABA, - 0x9ABC, 0x9AC1, 0x9AC0, 0x9AC5, 0x9AC2, 0x9ACB, 0x9ACC, 0x9AD1, - 0x9B45, 0x9B43, 0x9B47, 0x9B49, 0x9B48, 0x9B4D, 0x9B51, 0x98E8, - 0x990D, 0x992E, 0x9955, 0x9954, 0x9ADF, 0x9AE1, 0x9AE6, 0x9AEF, - 0x9AEB, 0x9AFB, 0x9AED, 0x9AF9, 0x9B08, 0x9B0F, 0x9B13, 0x9B1F, - 0x9B23, 0x9EBD, 0x9EBE, 0x7E3B, 0x9E82, 0x9E87, 0x9E88, 0x9E8B, - 0x9E92, 0x93D6, 0x9E9D, 0x9E9F, 0x9EDB, 0x9EDC, 0x9EDD, 0x9EE0, - 0x9EDF, 0x9EE2, 0x9EE9, 0x9EE7, 0x9EE5, 0x9EEA, 0x9EEF, 0x9F22, - 0x9F2C, 0x9F2F, 0x9F39, 0x9F37, 0x9F3D, 0x9F3E, 0x9F44, 0, -plane f8 -at 0xa0 - 0x9D42, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane f9 -at 0xa0 - 0x9DA2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane fa -at 0xa0 - 0x9E02, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane fb -at 0xa0 - 0x9EAA, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane fc -at 0xa0 - 0x9F31, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane fd -at 0xa0 - 0xF9F1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane fe -at 0xa0 - 0xE864, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/maps/ugbk.map b/application/third_party/dompdf/lib/ttf2ufm/src/maps/ugbk.map deleted file mode 100644 index 3d4370e6..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/maps/ugbk.map +++ /dev/null @@ -1,3295 +0,0 @@ -# GBK --> Unicode conversion table: -# generated by Chen Xiangyang (chenxy@sun.ihep.ac.cn) -# -# it contains all 21886 characters of GBK character set, it also contains -# some unused codes in order to make the array easy to use. -# Code range: first byte: 0x81 -- 0xFE 126 -# second byte: 0x40 -- 0xFF 192 -# code points: 126 x 192 = 24192 -# -# Usage: -# -# unsigned short GBK_code, unicode; -# int pos; -# pos = ((GBK_code>>8)-0x81)*192 + ((GBK_Code&0x00FF)-0x40); -# unicode = gbk2uni[pos]; -# -# Converted to ttf2pt1 map format by Sergey Babkin -# - -plane 81 -at 0x40 - 0x4E02, 0x4E04, 0x4E05, 0x4E06, 0x4E0F, 0x4E12, 0x4E17, 0x4E1F, - 0x4E20, 0x4E21, 0x4E23, 0x4E26, 0x4E29, 0x4E2E, 0x4E2F, 0x4E31, - 0x4E33, 0x4E35, 0x4E37, 0x4E3C, 0x4E40, 0x4E41, 0x4E42, 0x4E44, - 0x4E46, 0x4E4A, 0x4E51, 0x4E55, 0x4E57, 0x4E5A, 0x4E5B, 0x4E62, - 0x4E63, 0x4E64, 0x4E65, 0x4E67, 0x4E68, 0x4E6A, 0x4E6B, 0x4E6C, - 0x4E6D, 0x4E6E, 0x4E6F, 0x4E72, 0x4E74, 0x4E75, 0x4E76, 0x4E77, - 0x4E78, 0x4E79, 0x4E7A, 0x4E7B, 0x4E7C, 0x4E7D, 0x4E7F, 0x4E80, - 0x4E81, 0x4E82, 0x4E83, 0x4E84, 0x4E85, 0x4E87, 0x4E8A, 0, - 0x4E90, 0x4E96, 0x4E97, 0x4E99, 0x4E9C, 0x4E9D, 0x4E9E, 0x4EA3, - 0x4EAA, 0x4EAF, 0x4EB0, 0x4EB1, 0x4EB4, 0x4EB6, 0x4EB7, 0x4EB8, - 0x4EB9, 0x4EBC, 0x4EBD, 0x4EBE, 0x4EC8, 0x4ECC, 0x4ECF, 0x4ED0, - 0x4ED2, 0x4EDA, 0x4EDB, 0x4EDC, 0x4EE0, 0x4EE2, 0x4EE6, 0x4EE7, - 0x4EE9, 0x4EED, 0x4EEE, 0x4EEF, 0x4EF1, 0x4EF4, 0x4EF8, 0x4EF9, - 0x4EFA, 0x4EFC, 0x4EFE, 0x4F00, 0x4F02, 0x4F03, 0x4F04, 0x4F05, - 0x4F06, 0x4F07, 0x4F08, 0x4F0B, 0x4F0C, 0x4F12, 0x4F13, 0x4F14, - 0x4F15, 0x4F16, 0x4F1C, 0x4F1D, 0x4F21, 0x4F23, 0x4F28, 0x4F29, - 0x4F2C, 0x4F2D, 0x4F2E, 0x4F31, 0x4F33, 0x4F35, 0x4F37, 0x4F39, - 0x4F3B, 0x4F3E, 0x4F3F, 0x4F40, 0x4F41, 0x4F42, 0x4F44, 0x4F45, - 0x4F47, 0x4F48, 0x4F49, 0x4F4A, 0x4F4B, 0x4F4C, 0x4F52, 0x4F54, - 0x4F56, 0x4F61, 0x4F62, 0x4F66, 0x4F68, 0x4F6A, 0x4F6B, 0x4F6D, - 0x4F6E, 0x4F71, 0x4F72, 0x4F75, 0x4F77, 0x4F78, 0x4F79, 0x4F7A, - 0x4F7D, 0x4F80, 0x4F81, 0x4F82, 0x4F85, 0x4F86, 0x4F87, 0x4F8A, - 0x4F8C, 0x4F8E, 0x4F90, 0x4F92, 0x4F93, 0x4F95, 0x4F96, 0x4F98, - 0x4F99, 0x4F9A, 0x4F9C, 0x4F9E, 0x4F9F, 0x4FA1, 0x4FA2, 0, -plane 82 -at 0x40 - 0x4FA4, 0x4FAB, 0x4FAD, 0x4FB0, 0x4FB1, 0x4FB2, 0x4FB3, 0x4FB4, - 0x4FB6, 0x4FB7, 0x4FB8, 0x4FB9, 0x4FBA, 0x4FBB, 0x4FBC, 0x4FBD, - 0x4FBE, 0x4FC0, 0x4FC1, 0x4FC2, 0x4FC6, 0x4FC7, 0x4FC8, 0x4FC9, - 0x4FCB, 0x4FCC, 0x4FCD, 0x4FD2, 0x4FD3, 0x4FD4, 0x4FD5, 0x4FD6, - 0x4FD9, 0x4FDB, 0x4FE0, 0x4FE2, 0x4FE4, 0x4FE5, 0x4FE7, 0x4FEB, - 0x4FEC, 0x4FF0, 0x4FF2, 0x4FF4, 0x4FF5, 0x4FF6, 0x4FF7, 0x4FF9, - 0x4FFB, 0x4FFC, 0x4FFD, 0x4FFF, 0x5000, 0x5001, 0x5002, 0x5003, - 0x5004, 0x5005, 0x5006, 0x5007, 0x5008, 0x5009, 0x500A, 0, - 0x500B, 0x500E, 0x5010, 0x5011, 0x5013, 0x5015, 0x5016, 0x5017, - 0x501B, 0x501D, 0x501E, 0x5020, 0x5022, 0x5023, 0x5024, 0x5027, - 0x502B, 0x502F, 0x5030, 0x5031, 0x5032, 0x5033, 0x5034, 0x5035, - 0x5036, 0x5037, 0x5038, 0x5039, 0x503B, 0x503D, 0x503F, 0x5040, - 0x5041, 0x5042, 0x5044, 0x5045, 0x5046, 0x5049, 0x504A, 0x504B, - 0x504D, 0x5050, 0x5051, 0x5052, 0x5053, 0x5054, 0x5056, 0x5057, - 0x5058, 0x5059, 0x505B, 0x505D, 0x505E, 0x505F, 0x5060, 0x5061, - 0x5062, 0x5063, 0x5064, 0x5066, 0x5067, 0x5068, 0x5069, 0x506A, - 0x506B, 0x506D, 0x506E, 0x506F, 0x5070, 0x5071, 0x5072, 0x5073, - 0x5074, 0x5075, 0x5078, 0x5079, 0x507A, 0x507C, 0x507D, 0x5081, - 0x5082, 0x5083, 0x5084, 0x5086, 0x5087, 0x5089, 0x508A, 0x508B, - 0x508C, 0x508E, 0x508F, 0x5090, 0x5091, 0x5092, 0x5093, 0x5094, - 0x5095, 0x5096, 0x5097, 0x5098, 0x5099, 0x509A, 0x509B, 0x509C, - 0x509D, 0x509E, 0x509F, 0x50A0, 0x50A1, 0x50A2, 0x50A4, 0x50A6, - 0x50AA, 0x50AB, 0x50AD, 0x50AE, 0x50AF, 0x50B0, 0x50B1, 0x50B3, - 0x50B4, 0x50B5, 0x50B6, 0x50B7, 0x50B8, 0x50B9, 0x50BC, 0, -plane 83 -at 0x40 - 0x50BD, 0x50BE, 0x50BF, 0x50C0, 0x50C1, 0x50C2, 0x50C3, 0x50C4, - 0x50C5, 0x50C6, 0x50C7, 0x50C8, 0x50C9, 0x50CA, 0x50CB, 0x50CC, - 0x50CD, 0x50CE, 0x50D0, 0x50D1, 0x50D2, 0x50D3, 0x50D4, 0x50D5, - 0x50D7, 0x50D8, 0x50D9, 0x50DB, 0x50DC, 0x50DD, 0x50DE, 0x50DF, - 0x50E0, 0x50E1, 0x50E2, 0x50E3, 0x50E4, 0x50E5, 0x50E8, 0x50E9, - 0x50EA, 0x50EB, 0x50EF, 0x50F0, 0x50F1, 0x50F2, 0x50F4, 0x50F6, - 0x50F7, 0x50F8, 0x50F9, 0x50FA, 0x50FC, 0x50FD, 0x50FE, 0x50FF, - 0x5100, 0x5101, 0x5102, 0x5103, 0x5104, 0x5105, 0x5108, 0, - 0x5109, 0x510A, 0x510C, 0x510D, 0x510E, 0x510F, 0x5110, 0x5111, - 0x5113, 0x5114, 0x5115, 0x5116, 0x5117, 0x5118, 0x5119, 0x511A, - 0x511B, 0x511C, 0x511D, 0x511E, 0x511F, 0x5120, 0x5122, 0x5123, - 0x5124, 0x5125, 0x5126, 0x5127, 0x5128, 0x5129, 0x512A, 0x512B, - 0x512C, 0x512D, 0x512E, 0x512F, 0x5130, 0x5131, 0x5132, 0x5133, - 0x5134, 0x5135, 0x5136, 0x5137, 0x5138, 0x5139, 0x513A, 0x513B, - 0x513C, 0x513D, 0x513E, 0x5142, 0x5147, 0x514A, 0x514C, 0x514E, - 0x514F, 0x5150, 0x5152, 0x5153, 0x5157, 0x5158, 0x5159, 0x515B, - 0x515D, 0x515E, 0x515F, 0x5160, 0x5161, 0x5163, 0x5164, 0x5166, - 0x5167, 0x5169, 0x516A, 0x516F, 0x5172, 0x517A, 0x517E, 0x517F, - 0x5183, 0x5184, 0x5186, 0x5187, 0x518A, 0x518B, 0x518E, 0x518F, - 0x5190, 0x5191, 0x5193, 0x5194, 0x5198, 0x519A, 0x519D, 0x519E, - 0x519F, 0x51A1, 0x51A3, 0x51A6, 0x51A7, 0x51A8, 0x51A9, 0x51AA, - 0x51AD, 0x51AE, 0x51B4, 0x51B8, 0x51B9, 0x51BA, 0x51BE, 0x51BF, - 0x51C1, 0x51C2, 0x51C3, 0x51C5, 0x51C8, 0x51CA, 0x51CD, 0x51CE, - 0x51D0, 0x51D2, 0x51D3, 0x51D4, 0x51D5, 0x51D6, 0x51D7, 0, -plane 84 -at 0x40 - 0x51D8, 0x51D9, 0x51DA, 0x51DC, 0x51DE, 0x51DF, 0x51E2, 0x51E3, - 0x51E5, 0x51E6, 0x51E7, 0x51E8, 0x51E9, 0x51EA, 0x51EC, 0x51EE, - 0x51F1, 0x51F2, 0x51F4, 0x51F7, 0x51FE, 0x5204, 0x5205, 0x5209, - 0x520B, 0x520C, 0x520F, 0x5210, 0x5213, 0x5214, 0x5215, 0x521C, - 0x521E, 0x521F, 0x5221, 0x5222, 0x5223, 0x5225, 0x5226, 0x5227, - 0x522A, 0x522C, 0x522F, 0x5231, 0x5232, 0x5234, 0x5235, 0x523C, - 0x523E, 0x5244, 0x5245, 0x5246, 0x5247, 0x5248, 0x5249, 0x524B, - 0x524E, 0x524F, 0x5252, 0x5253, 0x5255, 0x5257, 0x5258, 0, - 0x5259, 0x525A, 0x525B, 0x525D, 0x525F, 0x5260, 0x5262, 0x5263, - 0x5264, 0x5266, 0x5268, 0x526B, 0x526C, 0x526D, 0x526E, 0x5270, - 0x5271, 0x5273, 0x5274, 0x5275, 0x5276, 0x5277, 0x5278, 0x5279, - 0x527A, 0x527B, 0x527C, 0x527E, 0x5280, 0x5283, 0x5284, 0x5285, - 0x5286, 0x5287, 0x5289, 0x528A, 0x528B, 0x528C, 0x528D, 0x528E, - 0x528F, 0x5291, 0x5292, 0x5294, 0x5295, 0x5296, 0x5297, 0x5298, - 0x5299, 0x529A, 0x529C, 0x52A4, 0x52A5, 0x52A6, 0x52A7, 0x52AE, - 0x52AF, 0x52B0, 0x52B4, 0x52B5, 0x52B6, 0x52B7, 0x52B8, 0x52B9, - 0x52BA, 0x52BB, 0x52BC, 0x52BD, 0x52C0, 0x52C1, 0x52C2, 0x52C4, - 0x52C5, 0x52C6, 0x52C8, 0x52CA, 0x52CC, 0x52CD, 0x52CE, 0x52CF, - 0x52D1, 0x52D3, 0x52D4, 0x52D5, 0x52D7, 0x52D9, 0x52DA, 0x52DB, - 0x52DC, 0x52DD, 0x52DE, 0x52E0, 0x52E1, 0x52E2, 0x52E3, 0x52E5, - 0x52E6, 0x52E7, 0x52E8, 0x52E9, 0x52EA, 0x52EB, 0x52EC, 0x52ED, - 0x52EE, 0x52EF, 0x52F1, 0x52F2, 0x52F3, 0x52F4, 0x52F5, 0x52F6, - 0x52F7, 0x52F8, 0x52FB, 0x52FC, 0x52FD, 0x5301, 0x5302, 0x5303, - 0x5304, 0x5307, 0x5309, 0x530A, 0x530B, 0x530C, 0x530E, 0, -plane 85 -at 0x40 - 0x5311, 0x5312, 0x5313, 0x5314, 0x5318, 0x531B, 0x531C, 0x531E, - 0x531F, 0x5322, 0x5324, 0x5325, 0x5327, 0x5328, 0x5329, 0x532B, - 0x532C, 0x532D, 0x532F, 0x5330, 0x5331, 0x5332, 0x5333, 0x5334, - 0x5335, 0x5336, 0x5337, 0x5338, 0x533C, 0x533D, 0x5340, 0x5342, - 0x5344, 0x5346, 0x534B, 0x534C, 0x534D, 0x5350, 0x5354, 0x5358, - 0x5359, 0x535B, 0x535D, 0x5365, 0x5368, 0x536A, 0x536C, 0x536D, - 0x5372, 0x5376, 0x5379, 0x537B, 0x537C, 0x537D, 0x537E, 0x5380, - 0x5381, 0x5383, 0x5387, 0x5388, 0x538A, 0x538E, 0x538F, 0, - 0x5390, 0x5391, 0x5392, 0x5393, 0x5394, 0x5396, 0x5397, 0x5399, - 0x539B, 0x539C, 0x539E, 0x53A0, 0x53A1, 0x53A4, 0x53A7, 0x53AA, - 0x53AB, 0x53AC, 0x53AD, 0x53AF, 0x53B0, 0x53B1, 0x53B2, 0x53B3, - 0x53B4, 0x53B5, 0x53B7, 0x53B8, 0x53B9, 0x53BA, 0x53BC, 0x53BD, - 0x53BE, 0x53C0, 0x53C3, 0x53C4, 0x53C5, 0x53C6, 0x53C7, 0x53CE, - 0x53CF, 0x53D0, 0x53D2, 0x53D3, 0x53D5, 0x53DA, 0x53DC, 0x53DD, - 0x53DE, 0x53E1, 0x53E2, 0x53E7, 0x53F4, 0x53FA, 0x53FE, 0x53FF, - 0x5400, 0x5402, 0x5405, 0x5407, 0x540B, 0x5414, 0x5418, 0x5419, - 0x541A, 0x541C, 0x5422, 0x5424, 0x5425, 0x542A, 0x5430, 0x5433, - 0x5436, 0x5437, 0x543A, 0x543D, 0x543F, 0x5441, 0x5442, 0x5444, - 0x5445, 0x5447, 0x5449, 0x544C, 0x544D, 0x544E, 0x544F, 0x5451, - 0x545A, 0x545D, 0x545E, 0x545F, 0x5460, 0x5461, 0x5463, 0x5465, - 0x5467, 0x5469, 0x546A, 0x546B, 0x546C, 0x546D, 0x546E, 0x546F, - 0x5470, 0x5474, 0x5479, 0x547A, 0x547E, 0x547F, 0x5481, 0x5483, - 0x5485, 0x5487, 0x5488, 0x5489, 0x548A, 0x548D, 0x5491, 0x5493, - 0x5497, 0x5498, 0x549C, 0x549E, 0x549F, 0x54A0, 0x54A1, 0, -plane 86 -at 0x40 - 0x54A2, 0x54A5, 0x54AE, 0x54B0, 0x54B2, 0x54B5, 0x54B6, 0x54B7, - 0x54B9, 0x54BA, 0x54BC, 0x54BE, 0x54C3, 0x54C5, 0x54CA, 0x54CB, - 0x54D6, 0x54D8, 0x54DB, 0x54E0, 0x54E1, 0x54E2, 0x54E3, 0x54E4, - 0x54EB, 0x54EC, 0x54EF, 0x54F0, 0x54F1, 0x54F4, 0x54F5, 0x54F6, - 0x54F7, 0x54F8, 0x54F9, 0x54FB, 0x54FE, 0x5500, 0x5502, 0x5503, - 0x5504, 0x5505, 0x5508, 0x550A, 0x550B, 0x550C, 0x550D, 0x550E, - 0x5512, 0x5513, 0x5515, 0x5516, 0x5517, 0x5518, 0x5519, 0x551A, - 0x551C, 0x551D, 0x551E, 0x551F, 0x5521, 0x5525, 0x5526, 0, - 0x5528, 0x5529, 0x552B, 0x552D, 0x5532, 0x5534, 0x5535, 0x5536, - 0x5538, 0x5539, 0x553A, 0x553B, 0x553D, 0x5540, 0x5542, 0x5545, - 0x5547, 0x5548, 0x554B, 0x554C, 0x554D, 0x554E, 0x554F, 0x5551, - 0x5552, 0x5553, 0x5554, 0x5557, 0x5558, 0x5559, 0x555A, 0x555B, - 0x555D, 0x555E, 0x555F, 0x5560, 0x5562, 0x5563, 0x5568, 0x5569, - 0x556B, 0x556F, 0x5570, 0x5571, 0x5572, 0x5573, 0x5574, 0x5579, - 0x557A, 0x557D, 0x557F, 0x5585, 0x5586, 0x558C, 0x558D, 0x558E, - 0x5590, 0x5592, 0x5593, 0x5595, 0x5596, 0x5597, 0x559A, 0x559B, - 0x559E, 0x55A0, 0x55A1, 0x55A2, 0x55A3, 0x55A4, 0x55A5, 0x55A6, - 0x55A8, 0x55A9, 0x55AA, 0x55AB, 0x55AC, 0x55AD, 0x55AE, 0x55AF, - 0x55B0, 0x55B2, 0x55B4, 0x55B6, 0x55B8, 0x55BA, 0x55BC, 0x55BF, - 0x55C0, 0x55C1, 0x55C2, 0x55C3, 0x55C6, 0x55C7, 0x55C8, 0x55CA, - 0x55CB, 0x55CE, 0x55CF, 0x55D0, 0x55D5, 0x55D7, 0x55D8, 0x55D9, - 0x55DA, 0x55DB, 0x55DE, 0x55E0, 0x55E2, 0x55E7, 0x55E9, 0x55ED, - 0x55EE, 0x55F0, 0x55F1, 0x55F4, 0x55F6, 0x55F8, 0x55F9, 0x55FA, - 0x55FB, 0x55FC, 0x55FF, 0x5602, 0x5603, 0x5604, 0x5605, 0, -plane 87 -at 0x40 - 0x5606, 0x5607, 0x560A, 0x560B, 0x560D, 0x5610, 0x5611, 0x5612, - 0x5613, 0x5614, 0x5615, 0x5616, 0x5617, 0x5619, 0x561A, 0x561C, - 0x561D, 0x5620, 0x5621, 0x5622, 0x5625, 0x5626, 0x5628, 0x5629, - 0x562A, 0x562B, 0x562E, 0x562F, 0x5630, 0x5633, 0x5635, 0x5637, - 0x5638, 0x563A, 0x563C, 0x563D, 0x563E, 0x5640, 0x5641, 0x5642, - 0x5643, 0x5644, 0x5645, 0x5646, 0x5647, 0x5648, 0x5649, 0x564A, - 0x564B, 0x564F, 0x5650, 0x5651, 0x5652, 0x5653, 0x5655, 0x5656, - 0x565A, 0x565B, 0x565D, 0x565E, 0x565F, 0x5660, 0x5661, 0, - 0x5663, 0x5665, 0x5666, 0x5667, 0x566D, 0x566E, 0x566F, 0x5670, - 0x5672, 0x5673, 0x5674, 0x5675, 0x5677, 0x5678, 0x5679, 0x567A, - 0x567D, 0x567E, 0x567F, 0x5680, 0x5681, 0x5682, 0x5683, 0x5684, - 0x5687, 0x5688, 0x5689, 0x568A, 0x568B, 0x568C, 0x568D, 0x5690, - 0x5691, 0x5692, 0x5694, 0x5695, 0x5696, 0x5697, 0x5698, 0x5699, - 0x569A, 0x569B, 0x569C, 0x569D, 0x569E, 0x569F, 0x56A0, 0x56A1, - 0x56A2, 0x56A4, 0x56A5, 0x56A6, 0x56A7, 0x56A8, 0x56A9, 0x56AA, - 0x56AB, 0x56AC, 0x56AD, 0x56AE, 0x56B0, 0x56B1, 0x56B2, 0x56B3, - 0x56B4, 0x56B5, 0x56B6, 0x56B8, 0x56B9, 0x56BA, 0x56BB, 0x56BD, - 0x56BE, 0x56BF, 0x56C0, 0x56C1, 0x56C2, 0x56C3, 0x56C4, 0x56C5, - 0x56C6, 0x56C7, 0x56C8, 0x56C9, 0x56CB, 0x56CC, 0x56CD, 0x56CE, - 0x56CF, 0x56D0, 0x56D1, 0x56D2, 0x56D3, 0x56D5, 0x56D6, 0x56D8, - 0x56D9, 0x56DC, 0x56E3, 0x56E5, 0x56E6, 0x56E7, 0x56E8, 0x56E9, - 0x56EA, 0x56EC, 0x56EE, 0x56EF, 0x56F2, 0x56F3, 0x56F6, 0x56F7, - 0x56F8, 0x56FB, 0x56FC, 0x5700, 0x5701, 0x5702, 0x5705, 0x5707, - 0x570B, 0x570C, 0x570D, 0x570E, 0x570F, 0x5710, 0x5711, 0, -plane 88 -at 0x40 - 0x5712, 0x5713, 0x5714, 0x5715, 0x5716, 0x5717, 0x5718, 0x5719, - 0x571A, 0x571B, 0x571D, 0x571E, 0x5720, 0x5721, 0x5722, 0x5724, - 0x5725, 0x5726, 0x5727, 0x572B, 0x5731, 0x5732, 0x5734, 0x5735, - 0x5736, 0x5737, 0x5738, 0x573C, 0x573D, 0x573F, 0x5741, 0x5743, - 0x5744, 0x5745, 0x5746, 0x5748, 0x5749, 0x574B, 0x5752, 0x5753, - 0x5754, 0x5755, 0x5756, 0x5758, 0x5759, 0x5762, 0x5763, 0x5765, - 0x5767, 0x576C, 0x576E, 0x5770, 0x5771, 0x5772, 0x5774, 0x5775, - 0x5778, 0x5779, 0x577A, 0x577D, 0x577E, 0x577F, 0x5780, 0, - 0x5781, 0x5787, 0x5788, 0x5789, 0x578A, 0x578D, 0x578E, 0x578F, - 0x5790, 0x5791, 0x5794, 0x5795, 0x5796, 0x5797, 0x5798, 0x5799, - 0x579A, 0x579C, 0x579D, 0x579E, 0x579F, 0x57A5, 0x57A8, 0x57AA, - 0x57AC, 0x57AF, 0x57B0, 0x57B1, 0x57B3, 0x57B5, 0x57B6, 0x57B7, - 0x57B9, 0x57BA, 0x57BB, 0x57BC, 0x57BD, 0x57BE, 0x57BF, 0x57C0, - 0x57C1, 0x57C4, 0x57C5, 0x57C6, 0x57C7, 0x57C8, 0x57C9, 0x57CA, - 0x57CC, 0x57CD, 0x57D0, 0x57D1, 0x57D3, 0x57D6, 0x57D7, 0x57DB, - 0x57DC, 0x57DE, 0x57E1, 0x57E2, 0x57E3, 0x57E5, 0x57E6, 0x57E7, - 0x57E8, 0x57E9, 0x57EA, 0x57EB, 0x57EC, 0x57EE, 0x57F0, 0x57F1, - 0x57F2, 0x57F3, 0x57F5, 0x57F6, 0x57F7, 0x57FB, 0x57FC, 0x57FE, - 0x57FF, 0x5801, 0x5803, 0x5804, 0x5805, 0x5808, 0x5809, 0x580A, - 0x580C, 0x580E, 0x580F, 0x5810, 0x5812, 0x5813, 0x5814, 0x5816, - 0x5817, 0x5818, 0x581A, 0x581B, 0x581C, 0x581D, 0x581F, 0x5822, - 0x5823, 0x5825, 0x5826, 0x5827, 0x5828, 0x5829, 0x582B, 0x582C, - 0x582D, 0x582E, 0x582F, 0x5831, 0x5832, 0x5833, 0x5834, 0x5836, - 0x5837, 0x5838, 0x5839, 0x583A, 0x583B, 0x583C, 0x583D, 0, -plane 89 -at 0x40 - 0x583E, 0x583F, 0x5840, 0x5841, 0x5842, 0x5843, 0x5845, 0x5846, - 0x5847, 0x5848, 0x5849, 0x584A, 0x584B, 0x584E, 0x584F, 0x5850, - 0x5852, 0x5853, 0x5855, 0x5856, 0x5857, 0x5859, 0x585A, 0x585B, - 0x585C, 0x585D, 0x585F, 0x5860, 0x5861, 0x5862, 0x5863, 0x5864, - 0x5866, 0x5867, 0x5868, 0x5869, 0x586A, 0x586D, 0x586E, 0x586F, - 0x5870, 0x5871, 0x5872, 0x5873, 0x5874, 0x5875, 0x5876, 0x5877, - 0x5878, 0x5879, 0x587A, 0x587B, 0x587C, 0x587D, 0x587F, 0x5882, - 0x5884, 0x5886, 0x5887, 0x5888, 0x588A, 0x588B, 0x588C, 0, - 0x588D, 0x588E, 0x588F, 0x5890, 0x5891, 0x5894, 0x5895, 0x5896, - 0x5897, 0x5898, 0x589B, 0x589C, 0x589D, 0x58A0, 0x58A1, 0x58A2, - 0x58A3, 0x58A4, 0x58A5, 0x58A6, 0x58A7, 0x58AA, 0x58AB, 0x58AC, - 0x58AD, 0x58AE, 0x58AF, 0x58B0, 0x58B1, 0x58B2, 0x58B3, 0x58B4, - 0x58B5, 0x58B6, 0x58B7, 0x58B8, 0x58B9, 0x58BA, 0x58BB, 0x58BD, - 0x58BE, 0x58BF, 0x58C0, 0x58C2, 0x58C3, 0x58C4, 0x58C6, 0x58C7, - 0x58C8, 0x58C9, 0x58CA, 0x58CB, 0x58CC, 0x58CD, 0x58CE, 0x58CF, - 0x58D0, 0x58D2, 0x58D3, 0x58D4, 0x58D6, 0x58D7, 0x58D8, 0x58D9, - 0x58DA, 0x58DB, 0x58DC, 0x58DD, 0x58DE, 0x58DF, 0x58E0, 0x58E1, - 0x58E2, 0x58E3, 0x58E5, 0x58E6, 0x58E7, 0x58E8, 0x58E9, 0x58EA, - 0x58ED, 0x58EF, 0x58F1, 0x58F2, 0x58F4, 0x58F5, 0x58F7, 0x58F8, - 0x58FA, 0x58FB, 0x58FC, 0x58FD, 0x58FE, 0x58FF, 0x5900, 0x5901, - 0x5903, 0x5905, 0x5906, 0x5908, 0x5909, 0x590A, 0x590B, 0x590C, - 0x590E, 0x5910, 0x5911, 0x5912, 0x5913, 0x5917, 0x5918, 0x591B, - 0x591D, 0x591E, 0x5920, 0x5921, 0x5922, 0x5923, 0x5926, 0x5928, - 0x592C, 0x5930, 0x5932, 0x5933, 0x5935, 0x5936, 0x593B, 0, -plane 8a -at 0x40 - 0x593D, 0x593E, 0x593F, 0x5940, 0x5943, 0x5945, 0x5946, 0x594A, - 0x594C, 0x594D, 0x5950, 0x5952, 0x5953, 0x5959, 0x595B, 0x595C, - 0x595D, 0x595E, 0x595F, 0x5961, 0x5963, 0x5964, 0x5966, 0x5967, - 0x5968, 0x5969, 0x596A, 0x596B, 0x596C, 0x596D, 0x596E, 0x596F, - 0x5970, 0x5971, 0x5972, 0x5975, 0x5977, 0x597A, 0x597B, 0x597C, - 0x597E, 0x597F, 0x5980, 0x5985, 0x5989, 0x598B, 0x598C, 0x598E, - 0x598F, 0x5990, 0x5991, 0x5994, 0x5995, 0x5998, 0x599A, 0x599B, - 0x599C, 0x599D, 0x599F, 0x59A0, 0x59A1, 0x59A2, 0x59A6, 0, - 0x59A7, 0x59AC, 0x59AD, 0x59B0, 0x59B1, 0x59B3, 0x59B4, 0x59B5, - 0x59B6, 0x59B7, 0x59B8, 0x59BA, 0x59BC, 0x59BD, 0x59BF, 0x59C0, - 0x59C1, 0x59C2, 0x59C3, 0x59C4, 0x59C5, 0x59C7, 0x59C8, 0x59C9, - 0x59CC, 0x59CD, 0x59CE, 0x59CF, 0x59D5, 0x59D6, 0x59D9, 0x59DB, - 0x59DE, 0x59DF, 0x59E0, 0x59E1, 0x59E2, 0x59E4, 0x59E6, 0x59E7, - 0x59E9, 0x59EA, 0x59EB, 0x59ED, 0x59EE, 0x59EF, 0x59F0, 0x59F1, - 0x59F2, 0x59F3, 0x59F4, 0x59F5, 0x59F6, 0x59F7, 0x59F8, 0x59FA, - 0x59FC, 0x59FD, 0x59FE, 0x5A00, 0x5A02, 0x5A0A, 0x5A0B, 0x5A0D, - 0x5A0E, 0x5A0F, 0x5A10, 0x5A12, 0x5A14, 0x5A15, 0x5A16, 0x5A17, - 0x5A19, 0x5A1A, 0x5A1B, 0x5A1D, 0x5A1E, 0x5A21, 0x5A22, 0x5A24, - 0x5A26, 0x5A27, 0x5A28, 0x5A2A, 0x5A2B, 0x5A2C, 0x5A2D, 0x5A2E, - 0x5A2F, 0x5A30, 0x5A33, 0x5A35, 0x5A37, 0x5A38, 0x5A39, 0x5A3A, - 0x5A3B, 0x5A3D, 0x5A3E, 0x5A3F, 0x5A41, 0x5A42, 0x5A43, 0x5A44, - 0x5A45, 0x5A47, 0x5A48, 0x5A4B, 0x5A4C, 0x5A4D, 0x5A4E, 0x5A4F, - 0x5A50, 0x5A51, 0x5A52, 0x5A53, 0x5A54, 0x5A56, 0x5A57, 0x5A58, - 0x5A59, 0x5A5B, 0x5A5C, 0x5A5D, 0x5A5E, 0x5A5F, 0x5A60, 0, -plane 8b -at 0x40 - 0x5A61, 0x5A63, 0x5A64, 0x5A65, 0x5A66, 0x5A68, 0x5A69, 0x5A6B, - 0x5A6C, 0x5A6D, 0x5A6E, 0x5A6F, 0x5A70, 0x5A71, 0x5A72, 0x5A73, - 0x5A78, 0x5A79, 0x5A7B, 0x5A7C, 0x5A7D, 0x5A7E, 0x5A80, 0x5A81, - 0x5A82, 0x5A83, 0x5A84, 0x5A85, 0x5A86, 0x5A87, 0x5A88, 0x5A89, - 0x5A8A, 0x5A8B, 0x5A8C, 0x5A8D, 0x5A8E, 0x5A8F, 0x5A90, 0x5A91, - 0x5A93, 0x5A94, 0x5A95, 0x5A96, 0x5A97, 0x5A98, 0x5A99, 0x5A9C, - 0x5A9D, 0x5A9E, 0x5A9F, 0x5AA0, 0x5AA1, 0x5AA2, 0x5AA3, 0x5AA4, - 0x5AA5, 0x5AA6, 0x5AA7, 0x5AA8, 0x5AA9, 0x5AAB, 0x5AAC, 0, - 0x5AAD, 0x5AAE, 0x5AAF, 0x5AB0, 0x5AB1, 0x5AB4, 0x5AB6, 0x5AB7, - 0x5AB9, 0x5ABA, 0x5ABB, 0x5ABC, 0x5ABD, 0x5ABF, 0x5AC0, 0x5AC3, - 0x5AC4, 0x5AC5, 0x5AC6, 0x5AC7, 0x5AC8, 0x5ACA, 0x5ACB, 0x5ACD, - 0x5ACE, 0x5ACF, 0x5AD0, 0x5AD1, 0x5AD3, 0x5AD5, 0x5AD7, 0x5AD9, - 0x5ADA, 0x5ADB, 0x5ADD, 0x5ADE, 0x5ADF, 0x5AE2, 0x5AE4, 0x5AE5, - 0x5AE7, 0x5AE8, 0x5AEA, 0x5AEC, 0x5AED, 0x5AEE, 0x5AEF, 0x5AF0, - 0x5AF2, 0x5AF3, 0x5AF4, 0x5AF5, 0x5AF6, 0x5AF7, 0x5AF8, 0x5AF9, - 0x5AFA, 0x5AFB, 0x5AFC, 0x5AFD, 0x5AFE, 0x5AFF, 0x5B00, 0x5B01, - 0x5B02, 0x5B03, 0x5B04, 0x5B05, 0x5B06, 0x5B07, 0x5B08, 0x5B0A, - 0x5B0B, 0x5B0C, 0x5B0D, 0x5B0E, 0x5B0F, 0x5B10, 0x5B11, 0x5B12, - 0x5B13, 0x5B14, 0x5B15, 0x5B18, 0x5B19, 0x5B1A, 0x5B1B, 0x5B1C, - 0x5B1D, 0x5B1E, 0x5B1F, 0x5B20, 0x5B21, 0x5B22, 0x5B23, 0x5B24, - 0x5B25, 0x5B26, 0x5B27, 0x5B28, 0x5B29, 0x5B2A, 0x5B2B, 0x5B2C, - 0x5B2D, 0x5B2E, 0x5B2F, 0x5B30, 0x5B31, 0x5B33, 0x5B35, 0x5B36, - 0x5B38, 0x5B39, 0x5B3A, 0x5B3B, 0x5B3C, 0x5B3D, 0x5B3E, 0x5B3F, - 0x5B41, 0x5B42, 0x5B43, 0x5B44, 0x5B45, 0x5B46, 0x5B47, 0, -plane 8c -at 0x40 - 0x5B48, 0x5B49, 0x5B4A, 0x5B4B, 0x5B4C, 0x5B4D, 0x5B4E, 0x5B4F, - 0x5B52, 0x5B56, 0x5B5E, 0x5B60, 0x5B61, 0x5B67, 0x5B68, 0x5B6B, - 0x5B6D, 0x5B6E, 0x5B6F, 0x5B72, 0x5B74, 0x5B76, 0x5B77, 0x5B78, - 0x5B79, 0x5B7B, 0x5B7C, 0x5B7E, 0x5B7F, 0x5B82, 0x5B86, 0x5B8A, - 0x5B8D, 0x5B8E, 0x5B90, 0x5B91, 0x5B92, 0x5B94, 0x5B96, 0x5B9F, - 0x5BA7, 0x5BA8, 0x5BA9, 0x5BAC, 0x5BAD, 0x5BAE, 0x5BAF, 0x5BB1, - 0x5BB2, 0x5BB7, 0x5BBA, 0x5BBB, 0x5BBC, 0x5BC0, 0x5BC1, 0x5BC3, - 0x5BC8, 0x5BC9, 0x5BCA, 0x5BCB, 0x5BCD, 0x5BCE, 0x5BCF, 0, - 0x5BD1, 0x5BD4, 0x5BD5, 0x5BD6, 0x5BD7, 0x5BD8, 0x5BD9, 0x5BDA, - 0x5BDB, 0x5BDC, 0x5BE0, 0x5BE2, 0x5BE3, 0x5BE6, 0x5BE7, 0x5BE9, - 0x5BEA, 0x5BEB, 0x5BEC, 0x5BED, 0x5BEF, 0x5BF1, 0x5BF2, 0x5BF3, - 0x5BF4, 0x5BF5, 0x5BF6, 0x5BF7, 0x5BFD, 0x5BFE, 0x5C00, 0x5C02, - 0x5C03, 0x5C05, 0x5C07, 0x5C08, 0x5C0B, 0x5C0C, 0x5C0D, 0x5C0E, - 0x5C10, 0x5C12, 0x5C13, 0x5C17, 0x5C19, 0x5C1B, 0x5C1E, 0x5C1F, - 0x5C20, 0x5C21, 0x5C23, 0x5C26, 0x5C28, 0x5C29, 0x5C2A, 0x5C2B, - 0x5C2D, 0x5C2E, 0x5C2F, 0x5C30, 0x5C32, 0x5C33, 0x5C35, 0x5C36, - 0x5C37, 0x5C43, 0x5C44, 0x5C46, 0x5C47, 0x5C4C, 0x5C4D, 0x5C52, - 0x5C53, 0x5C54, 0x5C56, 0x5C57, 0x5C58, 0x5C5A, 0x5C5B, 0x5C5C, - 0x5C5D, 0x5C5F, 0x5C62, 0x5C64, 0x5C67, 0x5C68, 0x5C69, 0x5C6A, - 0x5C6B, 0x5C6C, 0x5C6D, 0x5C70, 0x5C72, 0x5C73, 0x5C74, 0x5C75, - 0x5C76, 0x5C77, 0x5C78, 0x5C7B, 0x5C7C, 0x5C7D, 0x5C7E, 0x5C80, - 0x5C83, 0x5C84, 0x5C85, 0x5C86, 0x5C87, 0x5C89, 0x5C8A, 0x5C8B, - 0x5C8E, 0x5C8F, 0x5C92, 0x5C93, 0x5C95, 0x5C9D, 0x5C9E, 0x5C9F, - 0x5CA0, 0x5CA1, 0x5CA4, 0x5CA5, 0x5CA6, 0x5CA7, 0x5CA8, 0, -plane 8d -at 0x40 - 0x5CAA, 0x5CAE, 0x5CAF, 0x5CB0, 0x5CB2, 0x5CB4, 0x5CB6, 0x5CB9, - 0x5CBA, 0x5CBB, 0x5CBC, 0x5CBE, 0x5CC0, 0x5CC2, 0x5CC3, 0x5CC5, - 0x5CC6, 0x5CC7, 0x5CC8, 0x5CC9, 0x5CCA, 0x5CCC, 0x5CCD, 0x5CCE, - 0x5CCF, 0x5CD0, 0x5CD1, 0x5CD3, 0x5CD4, 0x5CD5, 0x5CD6, 0x5CD7, - 0x5CD8, 0x5CDA, 0x5CDB, 0x5CDC, 0x5CDD, 0x5CDE, 0x5CDF, 0x5CE0, - 0x5CE2, 0x5CE3, 0x5CE7, 0x5CE9, 0x5CEB, 0x5CEC, 0x5CEE, 0x5CEF, - 0x5CF1, 0x5CF2, 0x5CF3, 0x5CF4, 0x5CF5, 0x5CF6, 0x5CF7, 0x5CF8, - 0x5CF9, 0x5CFA, 0x5CFC, 0x5CFD, 0x5CFE, 0x5CFF, 0x5D00, 0, - 0x5D01, 0x5D04, 0x5D05, 0x5D08, 0x5D09, 0x5D0A, 0x5D0B, 0x5D0C, - 0x5D0D, 0x5D0F, 0x5D10, 0x5D11, 0x5D12, 0x5D13, 0x5D15, 0x5D17, - 0x5D18, 0x5D19, 0x5D1A, 0x5D1C, 0x5D1D, 0x5D1F, 0x5D20, 0x5D21, - 0x5D22, 0x5D23, 0x5D25, 0x5D28, 0x5D2A, 0x5D2B, 0x5D2C, 0x5D2F, - 0x5D30, 0x5D31, 0x5D32, 0x5D33, 0x5D35, 0x5D36, 0x5D37, 0x5D38, - 0x5D39, 0x5D3A, 0x5D3B, 0x5D3C, 0x5D3F, 0x5D40, 0x5D41, 0x5D42, - 0x5D43, 0x5D44, 0x5D45, 0x5D46, 0x5D48, 0x5D49, 0x5D4D, 0x5D4E, - 0x5D4F, 0x5D50, 0x5D51, 0x5D52, 0x5D53, 0x5D54, 0x5D55, 0x5D56, - 0x5D57, 0x5D59, 0x5D5A, 0x5D5C, 0x5D5E, 0x5D5F, 0x5D60, 0x5D61, - 0x5D62, 0x5D63, 0x5D64, 0x5D65, 0x5D66, 0x5D67, 0x5D68, 0x5D6A, - 0x5D6D, 0x5D6E, 0x5D70, 0x5D71, 0x5D72, 0x5D73, 0x5D75, 0x5D76, - 0x5D77, 0x5D78, 0x5D79, 0x5D7A, 0x5D7B, 0x5D7C, 0x5D7D, 0x5D7E, - 0x5D7F, 0x5D80, 0x5D81, 0x5D83, 0x5D84, 0x5D85, 0x5D86, 0x5D87, - 0x5D88, 0x5D89, 0x5D8A, 0x5D8B, 0x5D8C, 0x5D8D, 0x5D8E, 0x5D8F, - 0x5D90, 0x5D91, 0x5D92, 0x5D93, 0x5D94, 0x5D95, 0x5D96, 0x5D97, - 0x5D98, 0x5D9A, 0x5D9B, 0x5D9C, 0x5D9E, 0x5D9F, 0x5DA0, 0, -plane 8e -at 0x40 - 0x5DA1, 0x5DA2, 0x5DA3, 0x5DA4, 0x5DA5, 0x5DA6, 0x5DA7, 0x5DA8, - 0x5DA9, 0x5DAA, 0x5DAB, 0x5DAC, 0x5DAD, 0x5DAE, 0x5DAF, 0x5DB0, - 0x5DB1, 0x5DB2, 0x5DB3, 0x5DB4, 0x5DB5, 0x5DB6, 0x5DB8, 0x5DB9, - 0x5DBA, 0x5DBB, 0x5DBC, 0x5DBD, 0x5DBE, 0x5DBF, 0x5DC0, 0x5DC1, - 0x5DC2, 0x5DC3, 0x5DC4, 0x5DC6, 0x5DC7, 0x5DC8, 0x5DC9, 0x5DCA, - 0x5DCB, 0x5DCC, 0x5DCE, 0x5DCF, 0x5DD0, 0x5DD1, 0x5DD2, 0x5DD3, - 0x5DD4, 0x5DD5, 0x5DD6, 0x5DD7, 0x5DD8, 0x5DD9, 0x5DDA, 0x5DDC, - 0x5DDF, 0x5DE0, 0x5DE3, 0x5DE4, 0x5DEA, 0x5DEC, 0x5DED, 0, - 0x5DF0, 0x5DF5, 0x5DF6, 0x5DF8, 0x5DF9, 0x5DFA, 0x5DFB, 0x5DFC, - 0x5DFF, 0x5E00, 0x5E04, 0x5E07, 0x5E09, 0x5E0A, 0x5E0B, 0x5E0D, - 0x5E0E, 0x5E12, 0x5E13, 0x5E17, 0x5E1E, 0x5E1F, 0x5E20, 0x5E21, - 0x5E22, 0x5E23, 0x5E24, 0x5E25, 0x5E28, 0x5E29, 0x5E2A, 0x5E2B, - 0x5E2C, 0x5E2F, 0x5E30, 0x5E32, 0x5E33, 0x5E34, 0x5E35, 0x5E36, - 0x5E39, 0x5E3A, 0x5E3E, 0x5E3F, 0x5E40, 0x5E41, 0x5E43, 0x5E46, - 0x5E47, 0x5E48, 0x5E49, 0x5E4A, 0x5E4B, 0x5E4D, 0x5E4E, 0x5E4F, - 0x5E50, 0x5E51, 0x5E52, 0x5E53, 0x5E56, 0x5E57, 0x5E58, 0x5E59, - 0x5E5A, 0x5E5C, 0x5E5D, 0x5E5F, 0x5E60, 0x5E63, 0x5E64, 0x5E65, - 0x5E66, 0x5E67, 0x5E68, 0x5E69, 0x5E6A, 0x5E6B, 0x5E6C, 0x5E6D, - 0x5E6E, 0x5E6F, 0x5E70, 0x5E71, 0x5E75, 0x5E77, 0x5E79, 0x5E7E, - 0x5E81, 0x5E82, 0x5E83, 0x5E85, 0x5E88, 0x5E89, 0x5E8C, 0x5E8D, - 0x5E8E, 0x5E92, 0x5E98, 0x5E9B, 0x5E9D, 0x5EA1, 0x5EA2, 0x5EA3, - 0x5EA4, 0x5EA8, 0x5EA9, 0x5EAA, 0x5EAB, 0x5EAC, 0x5EAE, 0x5EAF, - 0x5EB0, 0x5EB1, 0x5EB2, 0x5EB4, 0x5EBA, 0x5EBB, 0x5EBC, 0x5EBD, - 0x5EBF, 0x5EC0, 0x5EC1, 0x5EC2, 0x5EC3, 0x5EC4, 0x5EC5, 0, -plane 8f -at 0x40 - 0x5EC6, 0x5EC7, 0x5EC8, 0x5ECB, 0x5ECC, 0x5ECD, 0x5ECE, 0x5ECF, - 0x5ED0, 0x5ED4, 0x5ED5, 0x5ED7, 0x5ED8, 0x5ED9, 0x5EDA, 0x5EDC, - 0x5EDD, 0x5EDE, 0x5EDF, 0x5EE0, 0x5EE1, 0x5EE2, 0x5EE3, 0x5EE4, - 0x5EE5, 0x5EE6, 0x5EE7, 0x5EE9, 0x5EEB, 0x5EEC, 0x5EED, 0x5EEE, - 0x5EEF, 0x5EF0, 0x5EF1, 0x5EF2, 0x5EF3, 0x5EF5, 0x5EF8, 0x5EF9, - 0x5EFB, 0x5EFC, 0x5EFD, 0x5F05, 0x5F06, 0x5F07, 0x5F09, 0x5F0C, - 0x5F0D, 0x5F0E, 0x5F10, 0x5F12, 0x5F14, 0x5F16, 0x5F19, 0x5F1A, - 0x5F1C, 0x5F1D, 0x5F1E, 0x5F21, 0x5F22, 0x5F23, 0x5F24, 0, - 0x5F28, 0x5F2B, 0x5F2C, 0x5F2E, 0x5F30, 0x5F32, 0x5F33, 0x5F34, - 0x5F35, 0x5F36, 0x5F37, 0x5F38, 0x5F3B, 0x5F3D, 0x5F3E, 0x5F3F, - 0x5F41, 0x5F42, 0x5F43, 0x5F44, 0x5F45, 0x5F46, 0x5F47, 0x5F48, - 0x5F49, 0x5F4A, 0x5F4B, 0x5F4C, 0x5F4D, 0x5F4E, 0x5F4F, 0x5F51, - 0x5F54, 0x5F59, 0x5F5A, 0x5F5B, 0x5F5C, 0x5F5E, 0x5F5F, 0x5F60, - 0x5F63, 0x5F65, 0x5F67, 0x5F68, 0x5F6B, 0x5F6E, 0x5F6F, 0x5F72, - 0x5F74, 0x5F75, 0x5F76, 0x5F78, 0x5F7A, 0x5F7D, 0x5F7E, 0x5F7F, - 0x5F83, 0x5F86, 0x5F8D, 0x5F8E, 0x5F8F, 0x5F91, 0x5F93, 0x5F94, - 0x5F96, 0x5F9A, 0x5F9B, 0x5F9D, 0x5F9E, 0x5F9F, 0x5FA0, 0x5FA2, - 0x5FA3, 0x5FA4, 0x5FA5, 0x5FA6, 0x5FA7, 0x5FA9, 0x5FAB, 0x5FAC, - 0x5FAF, 0x5FB0, 0x5FB1, 0x5FB2, 0x5FB3, 0x5FB4, 0x5FB6, 0x5FB8, - 0x5FB9, 0x5FBA, 0x5FBB, 0x5FBE, 0x5FBF, 0x5FC0, 0x5FC1, 0x5FC2, - 0x5FC7, 0x5FC8, 0x5FCA, 0x5FCB, 0x5FCE, 0x5FD3, 0x5FD4, 0x5FD5, - 0x5FDA, 0x5FDB, 0x5FDC, 0x5FDE, 0x5FDF, 0x5FE2, 0x5FE3, 0x5FE5, - 0x5FE6, 0x5FE8, 0x5FE9, 0x5FEC, 0x5FEF, 0x5FF0, 0x5FF2, 0x5FF3, - 0x5FF4, 0x5FF6, 0x5FF7, 0x5FF9, 0x5FFA, 0x5FFC, 0x6007, 0, -plane 90 -at 0x40 - 0x6008, 0x6009, 0x600B, 0x600C, 0x6010, 0x6011, 0x6013, 0x6017, - 0x6018, 0x601A, 0x601E, 0x601F, 0x6022, 0x6023, 0x6024, 0x602C, - 0x602D, 0x602E, 0x6030, 0x6031, 0x6032, 0x6033, 0x6034, 0x6036, - 0x6037, 0x6038, 0x6039, 0x603A, 0x603D, 0x603E, 0x6040, 0x6044, - 0x6045, 0x6046, 0x6047, 0x6048, 0x6049, 0x604A, 0x604C, 0x604E, - 0x604F, 0x6051, 0x6053, 0x6054, 0x6056, 0x6057, 0x6058, 0x605B, - 0x605C, 0x605E, 0x605F, 0x6060, 0x6061, 0x6065, 0x6066, 0x606E, - 0x6071, 0x6072, 0x6074, 0x6075, 0x6077, 0x607E, 0x6080, 0, - 0x6081, 0x6082, 0x6085, 0x6086, 0x6087, 0x6088, 0x608A, 0x608B, - 0x608E, 0x608F, 0x6090, 0x6091, 0x6093, 0x6095, 0x6097, 0x6098, - 0x6099, 0x609C, 0x609E, 0x60A1, 0x60A2, 0x60A4, 0x60A5, 0x60A7, - 0x60A9, 0x60AA, 0x60AE, 0x60B0, 0x60B3, 0x60B5, 0x60B6, 0x60B7, - 0x60B9, 0x60BA, 0x60BD, 0x60BE, 0x60BF, 0x60C0, 0x60C1, 0x60C2, - 0x60C3, 0x60C4, 0x60C7, 0x60C8, 0x60C9, 0x60CC, 0x60CD, 0x60CE, - 0x60CF, 0x60D0, 0x60D2, 0x60D3, 0x60D4, 0x60D6, 0x60D7, 0x60D9, - 0x60DB, 0x60DE, 0x60E1, 0x60E2, 0x60E3, 0x60E4, 0x60E5, 0x60EA, - 0x60F1, 0x60F2, 0x60F5, 0x60F7, 0x60F8, 0x60FB, 0x60FC, 0x60FD, - 0x60FE, 0x60FF, 0x6102, 0x6103, 0x6104, 0x6105, 0x6107, 0x610A, - 0x610B, 0x610C, 0x6110, 0x6111, 0x6112, 0x6113, 0x6114, 0x6116, - 0x6117, 0x6118, 0x6119, 0x611B, 0x611C, 0x611D, 0x611E, 0x6121, - 0x6122, 0x6125, 0x6128, 0x6129, 0x612A, 0x612C, 0x612D, 0x612E, - 0x612F, 0x6130, 0x6131, 0x6132, 0x6133, 0x6134, 0x6135, 0x6136, - 0x6137, 0x6138, 0x6139, 0x613A, 0x613B, 0x613C, 0x613D, 0x613E, - 0x6140, 0x6141, 0x6142, 0x6143, 0x6144, 0x6145, 0x6146, 0, -plane 91 -at 0x40 - 0x6147, 0x6149, 0x614B, 0x614D, 0x614F, 0x6150, 0x6152, 0x6153, - 0x6154, 0x6156, 0x6157, 0x6158, 0x6159, 0x615A, 0x615B, 0x615C, - 0x615E, 0x615F, 0x6160, 0x6161, 0x6163, 0x6164, 0x6165, 0x6166, - 0x6169, 0x616A, 0x616B, 0x616C, 0x616D, 0x616E, 0x616F, 0x6171, - 0x6172, 0x6173, 0x6174, 0x6176, 0x6178, 0x6179, 0x617A, 0x617B, - 0x617C, 0x617D, 0x617E, 0x617F, 0x6180, 0x6181, 0x6182, 0x6183, - 0x6184, 0x6185, 0x6186, 0x6187, 0x6188, 0x6189, 0x618A, 0x618C, - 0x618D, 0x618F, 0x6190, 0x6191, 0x6192, 0x6193, 0x6195, 0, - 0x6196, 0x6197, 0x6198, 0x6199, 0x619A, 0x619B, 0x619C, 0x619E, - 0x619F, 0x61A0, 0x61A1, 0x61A2, 0x61A3, 0x61A4, 0x61A5, 0x61A6, - 0x61AA, 0x61AB, 0x61AD, 0x61AE, 0x61AF, 0x61B0, 0x61B1, 0x61B2, - 0x61B3, 0x61B4, 0x61B5, 0x61B6, 0x61B8, 0x61B9, 0x61BA, 0x61BB, - 0x61BC, 0x61BD, 0x61BF, 0x61C0, 0x61C1, 0x61C3, 0x61C4, 0x61C5, - 0x61C6, 0x61C7, 0x61C9, 0x61CC, 0x61CD, 0x61CE, 0x61CF, 0x61D0, - 0x61D3, 0x61D5, 0x61D6, 0x61D7, 0x61D8, 0x61D9, 0x61DA, 0x61DB, - 0x61DC, 0x61DD, 0x61DE, 0x61DF, 0x61E0, 0x61E1, 0x61E2, 0x61E3, - 0x61E4, 0x61E5, 0x61E7, 0x61E8, 0x61E9, 0x61EA, 0x61EB, 0x61EC, - 0x61ED, 0x61EE, 0x61EF, 0x61F0, 0x61F1, 0x61F2, 0x61F3, 0x61F4, - 0x61F6, 0x61F7, 0x61F8, 0x61F9, 0x61FA, 0x61FB, 0x61FC, 0x61FD, - 0x61FE, 0x6200, 0x6201, 0x6202, 0x6203, 0x6204, 0x6205, 0x6207, - 0x6209, 0x6213, 0x6214, 0x6219, 0x621C, 0x621D, 0x621E, 0x6220, - 0x6223, 0x6226, 0x6227, 0x6228, 0x6229, 0x622B, 0x622D, 0x622F, - 0x6230, 0x6231, 0x6232, 0x6235, 0x6236, 0x6238, 0x6239, 0x623A, - 0x623B, 0x623C, 0x6242, 0x6244, 0x6245, 0x6246, 0x624A, 0, -plane 92 -at 0x40 - 0x624F, 0x6250, 0x6255, 0x6256, 0x6257, 0x6259, 0x625A, 0x625C, - 0x625D, 0x625E, 0x625F, 0x6260, 0x6261, 0x6262, 0x6264, 0x6265, - 0x6268, 0x6271, 0x6272, 0x6274, 0x6275, 0x6277, 0x6278, 0x627A, - 0x627B, 0x627D, 0x6281, 0x6282, 0x6283, 0x6285, 0x6286, 0x6287, - 0x6288, 0x628B, 0x628C, 0x628D, 0x628E, 0x628F, 0x6290, 0x6294, - 0x6299, 0x629C, 0x629D, 0x629E, 0x62A3, 0x62A6, 0x62A7, 0x62A9, - 0x62AA, 0x62AD, 0x62AE, 0x62AF, 0x62B0, 0x62B2, 0x62B3, 0x62B4, - 0x62B6, 0x62B7, 0x62B8, 0x62BA, 0x62BE, 0x62C0, 0x62C1, 0, - 0x62C3, 0x62CB, 0x62CF, 0x62D1, 0x62D5, 0x62DD, 0x62DE, 0x62E0, - 0x62E1, 0x62E4, 0x62EA, 0x62EB, 0x62F0, 0x62F2, 0x62F5, 0x62F8, - 0x62F9, 0x62FA, 0x62FB, 0x6300, 0x6303, 0x6304, 0x6305, 0x6306, - 0x630A, 0x630B, 0x630C, 0x630D, 0x630F, 0x6310, 0x6312, 0x6313, - 0x6314, 0x6315, 0x6317, 0x6318, 0x6319, 0x631C, 0x6326, 0x6327, - 0x6329, 0x632C, 0x632D, 0x632E, 0x6330, 0x6331, 0x6333, 0x6334, - 0x6335, 0x6336, 0x6337, 0x6338, 0x633B, 0x633C, 0x633E, 0x633F, - 0x6340, 0x6341, 0x6344, 0x6347, 0x6348, 0x634A, 0x6351, 0x6352, - 0x6353, 0x6354, 0x6356, 0x6357, 0x6358, 0x6359, 0x635A, 0x635B, - 0x635C, 0x635D, 0x6360, 0x6364, 0x6365, 0x6366, 0x6368, 0x636A, - 0x636B, 0x636C, 0x636F, 0x6370, 0x6372, 0x6373, 0x6374, 0x6375, - 0x6378, 0x6379, 0x637C, 0x637D, 0x637E, 0x637F, 0x6381, 0x6383, - 0x6384, 0x6385, 0x6386, 0x638B, 0x638D, 0x6391, 0x6393, 0x6394, - 0x6395, 0x6397, 0x6399, 0x639A, 0x639B, 0x639C, 0x639D, 0x639E, - 0x639F, 0x63A1, 0x63A4, 0x63A6, 0x63AB, 0x63AF, 0x63B1, 0x63B2, - 0x63B5, 0x63B6, 0x63B9, 0x63BB, 0x63BD, 0x63BF, 0x63C0, 0, -plane 93 -at 0x40 - 0x63C1, 0x63C2, 0x63C3, 0x63C5, 0x63C7, 0x63C8, 0x63CA, 0x63CB, - 0x63CC, 0x63D1, 0x63D3, 0x63D4, 0x63D5, 0x63D7, 0x63D8, 0x63D9, - 0x63DA, 0x63DB, 0x63DC, 0x63DD, 0x63DF, 0x63E2, 0x63E4, 0x63E5, - 0x63E6, 0x63E7, 0x63E8, 0x63EB, 0x63EC, 0x63EE, 0x63EF, 0x63F0, - 0x63F1, 0x63F3, 0x63F5, 0x63F7, 0x63F9, 0x63FA, 0x63FB, 0x63FC, - 0x63FE, 0x6403, 0x6404, 0x6406, 0x6407, 0x6408, 0x6409, 0x640A, - 0x640D, 0x640E, 0x6411, 0x6412, 0x6415, 0x6416, 0x6417, 0x6418, - 0x6419, 0x641A, 0x641D, 0x641F, 0x6422, 0x6423, 0x6424, 0, - 0x6425, 0x6427, 0x6428, 0x6429, 0x642B, 0x642E, 0x642F, 0x6430, - 0x6431, 0x6432, 0x6433, 0x6435, 0x6436, 0x6437, 0x6438, 0x6439, - 0x643B, 0x643C, 0x643E, 0x6440, 0x6442, 0x6443, 0x6449, 0x644B, - 0x644C, 0x644D, 0x644E, 0x644F, 0x6450, 0x6451, 0x6453, 0x6455, - 0x6456, 0x6457, 0x6459, 0x645A, 0x645B, 0x645C, 0x645D, 0x645F, - 0x6460, 0x6461, 0x6462, 0x6463, 0x6464, 0x6465, 0x6466, 0x6468, - 0x646A, 0x646B, 0x646C, 0x646E, 0x646F, 0x6470, 0x6471, 0x6472, - 0x6473, 0x6474, 0x6475, 0x6476, 0x6477, 0x647B, 0x647C, 0x647D, - 0x647E, 0x647F, 0x6480, 0x6481, 0x6483, 0x6486, 0x6488, 0x6489, - 0x648A, 0x648B, 0x648C, 0x648D, 0x648E, 0x648F, 0x6490, 0x6493, - 0x6494, 0x6497, 0x6498, 0x649A, 0x649B, 0x649C, 0x649D, 0x649F, - 0x64A0, 0x64A1, 0x64A2, 0x64A3, 0x64A5, 0x64A6, 0x64A7, 0x64A8, - 0x64AA, 0x64AB, 0x64AF, 0x64B1, 0x64B2, 0x64B3, 0x64B4, 0x64B6, - 0x64B9, 0x64BB, 0x64BD, 0x64BE, 0x64BF, 0x64C1, 0x64C3, 0x64C4, - 0x64C6, 0x64C7, 0x64C8, 0x64C9, 0x64CA, 0x64CB, 0x64CC, 0x64CF, - 0x64D1, 0x64D3, 0x64D4, 0x64D5, 0x64D6, 0x64D9, 0x64DA, 0, -plane 94 -at 0x40 - 0x64DB, 0x64DC, 0x64DD, 0x64DF, 0x64E0, 0x64E1, 0x64E3, 0x64E5, - 0x64E7, 0x64E8, 0x64E9, 0x64EA, 0x64EB, 0x64EC, 0x64ED, 0x64EE, - 0x64EF, 0x64F0, 0x64F1, 0x64F2, 0x64F3, 0x64F4, 0x64F5, 0x64F6, - 0x64F7, 0x64F8, 0x64F9, 0x64FA, 0x64FB, 0x64FC, 0x64FD, 0x64FE, - 0x64FF, 0x6501, 0x6502, 0x6503, 0x6504, 0x6505, 0x6506, 0x6507, - 0x6508, 0x650A, 0x650B, 0x650C, 0x650D, 0x650E, 0x650F, 0x6510, - 0x6511, 0x6513, 0x6514, 0x6515, 0x6516, 0x6517, 0x6519, 0x651A, - 0x651B, 0x651C, 0x651D, 0x651E, 0x651F, 0x6520, 0x6521, 0, - 0x6522, 0x6523, 0x6524, 0x6526, 0x6527, 0x6528, 0x6529, 0x652A, - 0x652C, 0x652D, 0x6530, 0x6531, 0x6532, 0x6533, 0x6537, 0x653A, - 0x653C, 0x653D, 0x6540, 0x6541, 0x6542, 0x6543, 0x6544, 0x6546, - 0x6547, 0x654A, 0x654B, 0x654D, 0x654E, 0x6550, 0x6552, 0x6553, - 0x6554, 0x6557, 0x6558, 0x655A, 0x655C, 0x655F, 0x6560, 0x6561, - 0x6564, 0x6565, 0x6567, 0x6568, 0x6569, 0x656A, 0x656D, 0x656E, - 0x656F, 0x6571, 0x6573, 0x6575, 0x6576, 0x6578, 0x6579, 0x657A, - 0x657B, 0x657C, 0x657D, 0x657E, 0x657F, 0x6580, 0x6581, 0x6582, - 0x6583, 0x6584, 0x6585, 0x6586, 0x6588, 0x6589, 0x658A, 0x658D, - 0x658E, 0x658F, 0x6592, 0x6594, 0x6595, 0x6596, 0x6598, 0x659A, - 0x659D, 0x659E, 0x65A0, 0x65A2, 0x65A3, 0x65A6, 0x65A8, 0x65AA, - 0x65AC, 0x65AE, 0x65B1, 0x65B2, 0x65B3, 0x65B4, 0x65B5, 0x65B6, - 0x65B7, 0x65B8, 0x65BA, 0x65BB, 0x65BE, 0x65BF, 0x65C0, 0x65C2, - 0x65C7, 0x65C8, 0x65C9, 0x65CA, 0x65CD, 0x65D0, 0x65D1, 0x65D3, - 0x65D4, 0x65D5, 0x65D8, 0x65D9, 0x65DA, 0x65DB, 0x65DC, 0x65DD, - 0x65DE, 0x65DF, 0x65E1, 0x65E3, 0x65E4, 0x65EA, 0x65EB, 0, -plane 95 -at 0x40 - 0x65F2, 0x65F3, 0x65F4, 0x65F5, 0x65F8, 0x65F9, 0x65FB, 0x65FC, - 0x65FD, 0x65FE, 0x65FF, 0x6601, 0x6604, 0x6605, 0x6607, 0x6608, - 0x6609, 0x660B, 0x660D, 0x6610, 0x6611, 0x6612, 0x6616, 0x6617, - 0x6618, 0x661A, 0x661B, 0x661C, 0x661E, 0x6621, 0x6622, 0x6623, - 0x6624, 0x6626, 0x6629, 0x662A, 0x662B, 0x662C, 0x662E, 0x6630, - 0x6632, 0x6633, 0x6637, 0x6638, 0x6639, 0x663A, 0x663B, 0x663D, - 0x663F, 0x6640, 0x6642, 0x6644, 0x6645, 0x6646, 0x6647, 0x6648, - 0x6649, 0x664A, 0x664D, 0x664E, 0x6650, 0x6651, 0x6658, 0, - 0x6659, 0x665B, 0x665C, 0x665D, 0x665E, 0x6660, 0x6662, 0x6663, - 0x6665, 0x6667, 0x6669, 0x666A, 0x666B, 0x666C, 0x666D, 0x6671, - 0x6672, 0x6673, 0x6675, 0x6678, 0x6679, 0x667B, 0x667C, 0x667D, - 0x667F, 0x6680, 0x6681, 0x6683, 0x6685, 0x6686, 0x6688, 0x6689, - 0x668A, 0x668B, 0x668D, 0x668E, 0x668F, 0x6690, 0x6692, 0x6693, - 0x6694, 0x6695, 0x6698, 0x6699, 0x669A, 0x669B, 0x669C, 0x669E, - 0x669F, 0x66A0, 0x66A1, 0x66A2, 0x66A3, 0x66A4, 0x66A5, 0x66A6, - 0x66A9, 0x66AA, 0x66AB, 0x66AC, 0x66AD, 0x66AF, 0x66B0, 0x66B1, - 0x66B2, 0x66B3, 0x66B5, 0x66B6, 0x66B7, 0x66B8, 0x66BA, 0x66BB, - 0x66BC, 0x66BD, 0x66BF, 0x66C0, 0x66C1, 0x66C2, 0x66C3, 0x66C4, - 0x66C5, 0x66C6, 0x66C7, 0x66C8, 0x66C9, 0x66CA, 0x66CB, 0x66CC, - 0x66CD, 0x66CE, 0x66CF, 0x66D0, 0x66D1, 0x66D2, 0x66D3, 0x66D4, - 0x66D5, 0x66D6, 0x66D7, 0x66D8, 0x66DA, 0x66DE, 0x66DF, 0x66E0, - 0x66E1, 0x66E2, 0x66E3, 0x66E4, 0x66E5, 0x66E7, 0x66E8, 0x66EA, - 0x66EB, 0x66EC, 0x66ED, 0x66EE, 0x66EF, 0x66F1, 0x66F5, 0x66F6, - 0x66F8, 0x66FA, 0x66FB, 0x66FD, 0x6701, 0x6702, 0x6703, 0, -plane 96 -at 0x40 - 0x6704, 0x6705, 0x6706, 0x6707, 0x670C, 0x670E, 0x670F, 0x6711, - 0x6712, 0x6713, 0x6716, 0x6718, 0x6719, 0x671A, 0x671C, 0x671E, - 0x6720, 0x6721, 0x6722, 0x6723, 0x6724, 0x6725, 0x6727, 0x6729, - 0x672E, 0x6730, 0x6732, 0x6733, 0x6736, 0x6737, 0x6738, 0x6739, - 0x673B, 0x673C, 0x673E, 0x673F, 0x6741, 0x6744, 0x6745, 0x6747, - 0x674A, 0x674B, 0x674D, 0x6752, 0x6754, 0x6755, 0x6757, 0x6758, - 0x6759, 0x675A, 0x675B, 0x675D, 0x6762, 0x6763, 0x6764, 0x6766, - 0x6767, 0x676B, 0x676C, 0x676E, 0x6771, 0x6774, 0x6776, 0, - 0x6778, 0x6779, 0x677A, 0x677B, 0x677D, 0x6780, 0x6782, 0x6783, - 0x6785, 0x6786, 0x6788, 0x678A, 0x678C, 0x678D, 0x678E, 0x678F, - 0x6791, 0x6792, 0x6793, 0x6794, 0x6796, 0x6799, 0x679B, 0x679F, - 0x67A0, 0x67A1, 0x67A4, 0x67A6, 0x67A9, 0x67AC, 0x67AE, 0x67B1, - 0x67B2, 0x67B4, 0x67B9, 0x67BA, 0x67BB, 0x67BC, 0x67BD, 0x67BE, - 0x67BF, 0x67C0, 0x67C2, 0x67C5, 0x67C6, 0x67C7, 0x67C8, 0x67C9, - 0x67CA, 0x67CB, 0x67CC, 0x67CD, 0x67CE, 0x67D5, 0x67D6, 0x67D7, - 0x67DB, 0x67DF, 0x67E1, 0x67E3, 0x67E4, 0x67E6, 0x67E7, 0x67E8, - 0x67EA, 0x67EB, 0x67ED, 0x67EE, 0x67F2, 0x67F5, 0x67F6, 0x67F7, - 0x67F8, 0x67F9, 0x67FA, 0x67FB, 0x67FC, 0x67FE, 0x6801, 0x6802, - 0x6803, 0x6804, 0x6806, 0x680D, 0x6810, 0x6812, 0x6814, 0x6815, - 0x6818, 0x6819, 0x681A, 0x681B, 0x681C, 0x681E, 0x681F, 0x6820, - 0x6822, 0x6823, 0x6824, 0x6825, 0x6826, 0x6827, 0x6828, 0x682B, - 0x682C, 0x682D, 0x682E, 0x682F, 0x6830, 0x6831, 0x6834, 0x6835, - 0x6836, 0x683A, 0x683B, 0x683F, 0x6847, 0x684B, 0x684D, 0x684F, - 0x6852, 0x6856, 0x6857, 0x6858, 0x6859, 0x685A, 0x685B, 0, -plane 97 -at 0x40 - 0x685C, 0x685D, 0x685E, 0x685F, 0x686A, 0x686C, 0x686D, 0x686E, - 0x686F, 0x6870, 0x6871, 0x6872, 0x6873, 0x6875, 0x6878, 0x6879, - 0x687A, 0x687B, 0x687C, 0x687D, 0x687E, 0x687F, 0x6880, 0x6882, - 0x6884, 0x6887, 0x6888, 0x6889, 0x688A, 0x688B, 0x688C, 0x688D, - 0x688E, 0x6890, 0x6891, 0x6892, 0x6894, 0x6895, 0x6896, 0x6898, - 0x6899, 0x689A, 0x689B, 0x689C, 0x689D, 0x689E, 0x689F, 0x68A0, - 0x68A1, 0x68A3, 0x68A4, 0x68A5, 0x68A9, 0x68AA, 0x68AB, 0x68AC, - 0x68AE, 0x68B1, 0x68B2, 0x68B4, 0x68B6, 0x68B7, 0x68B8, 0, - 0x68B9, 0x68BA, 0x68BB, 0x68BC, 0x68BD, 0x68BE, 0x68BF, 0x68C1, - 0x68C3, 0x68C4, 0x68C5, 0x68C6, 0x68C7, 0x68C8, 0x68CA, 0x68CC, - 0x68CE, 0x68CF, 0x68D0, 0x68D1, 0x68D3, 0x68D4, 0x68D6, 0x68D7, - 0x68D9, 0x68DB, 0x68DC, 0x68DD, 0x68DE, 0x68DF, 0x68E1, 0x68E2, - 0x68E4, 0x68E5, 0x68E6, 0x68E7, 0x68E8, 0x68E9, 0x68EA, 0x68EB, - 0x68EC, 0x68ED, 0x68EF, 0x68F2, 0x68F3, 0x68F4, 0x68F6, 0x68F7, - 0x68F8, 0x68FB, 0x68FD, 0x68FE, 0x68FF, 0x6900, 0x6902, 0x6903, - 0x6904, 0x6906, 0x6907, 0x6908, 0x6909, 0x690A, 0x690C, 0x690F, - 0x6911, 0x6913, 0x6914, 0x6915, 0x6916, 0x6917, 0x6918, 0x6919, - 0x691A, 0x691B, 0x691C, 0x691D, 0x691E, 0x6921, 0x6922, 0x6923, - 0x6925, 0x6926, 0x6927, 0x6928, 0x6929, 0x692A, 0x692B, 0x692C, - 0x692E, 0x692F, 0x6931, 0x6932, 0x6933, 0x6935, 0x6936, 0x6937, - 0x6938, 0x693A, 0x693B, 0x693C, 0x693E, 0x6940, 0x6941, 0x6943, - 0x6944, 0x6945, 0x6946, 0x6947, 0x6948, 0x6949, 0x694A, 0x694B, - 0x694C, 0x694D, 0x694E, 0x694F, 0x6950, 0x6951, 0x6952, 0x6953, - 0x6955, 0x6956, 0x6958, 0x6959, 0x695B, 0x695C, 0x695F, 0, -plane 98 -at 0x40 - 0x6961, 0x6962, 0x6964, 0x6965, 0x6967, 0x6968, 0x6969, 0x696A, - 0x696C, 0x696D, 0x696F, 0x6970, 0x6972, 0x6973, 0x6974, 0x6975, - 0x6976, 0x697A, 0x697B, 0x697D, 0x697E, 0x697F, 0x6981, 0x6983, - 0x6985, 0x698A, 0x698B, 0x698C, 0x698E, 0x698F, 0x6990, 0x6991, - 0x6992, 0x6993, 0x6996, 0x6997, 0x6999, 0x699A, 0x699D, 0x699E, - 0x699F, 0x69A0, 0x69A1, 0x69A2, 0x69A3, 0x69A4, 0x69A5, 0x69A6, - 0x69A9, 0x69AA, 0x69AC, 0x69AE, 0x69AF, 0x69B0, 0x69B2, 0x69B3, - 0x69B5, 0x69B6, 0x69B8, 0x69B9, 0x69BA, 0x69BC, 0x69BD, 0, - 0x69BE, 0x69BF, 0x69C0, 0x69C2, 0x69C3, 0x69C4, 0x69C5, 0x69C6, - 0x69C7, 0x69C8, 0x69C9, 0x69CB, 0x69CD, 0x69CF, 0x69D1, 0x69D2, - 0x69D3, 0x69D5, 0x69D6, 0x69D7, 0x69D8, 0x69D9, 0x69DA, 0x69DC, - 0x69DD, 0x69DE, 0x69E1, 0x69E2, 0x69E3, 0x69E4, 0x69E5, 0x69E6, - 0x69E7, 0x69E8, 0x69E9, 0x69EA, 0x69EB, 0x69EC, 0x69EE, 0x69EF, - 0x69F0, 0x69F1, 0x69F3, 0x69F4, 0x69F5, 0x69F6, 0x69F7, 0x69F8, - 0x69F9, 0x69FA, 0x69FB, 0x69FC, 0x69FE, 0x6A00, 0x6A01, 0x6A02, - 0x6A03, 0x6A04, 0x6A05, 0x6A06, 0x6A07, 0x6A08, 0x6A09, 0x6A0B, - 0x6A0C, 0x6A0D, 0x6A0E, 0x6A0F, 0x6A10, 0x6A11, 0x6A12, 0x6A13, - 0x6A14, 0x6A15, 0x6A16, 0x6A19, 0x6A1A, 0x6A1B, 0x6A1C, 0x6A1D, - 0x6A1E, 0x6A20, 0x6A22, 0x6A23, 0x6A24, 0x6A25, 0x6A26, 0x6A27, - 0x6A29, 0x6A2B, 0x6A2C, 0x6A2D, 0x6A2E, 0x6A30, 0x6A32, 0x6A33, - 0x6A34, 0x6A36, 0x6A37, 0x6A38, 0x6A39, 0x6A3A, 0x6A3B, 0x6A3C, - 0x6A3F, 0x6A40, 0x6A41, 0x6A42, 0x6A43, 0x6A45, 0x6A46, 0x6A48, - 0x6A49, 0x6A4A, 0x6A4B, 0x6A4C, 0x6A4D, 0x6A4E, 0x6A4F, 0x6A51, - 0x6A52, 0x6A53, 0x6A54, 0x6A55, 0x6A56, 0x6A57, 0x6A5A, 0, -plane 99 -at 0x40 - 0x6A5C, 0x6A5D, 0x6A5E, 0x6A5F, 0x6A60, 0x6A62, 0x6A63, 0x6A64, - 0x6A66, 0x6A67, 0x6A68, 0x6A69, 0x6A6A, 0x6A6B, 0x6A6C, 0x6A6D, - 0x6A6E, 0x6A6F, 0x6A70, 0x6A72, 0x6A73, 0x6A74, 0x6A75, 0x6A76, - 0x6A77, 0x6A78, 0x6A7A, 0x6A7B, 0x6A7D, 0x6A7E, 0x6A7F, 0x6A81, - 0x6A82, 0x6A83, 0x6A85, 0x6A86, 0x6A87, 0x6A88, 0x6A89, 0x6A8A, - 0x6A8B, 0x6A8C, 0x6A8D, 0x6A8F, 0x6A92, 0x6A93, 0x6A94, 0x6A95, - 0x6A96, 0x6A98, 0x6A99, 0x6A9A, 0x6A9B, 0x6A9C, 0x6A9D, 0x6A9E, - 0x6A9F, 0x6AA1, 0x6AA2, 0x6AA3, 0x6AA4, 0x6AA5, 0x6AA6, 0, - 0x6AA7, 0x6AA8, 0x6AAA, 0x6AAD, 0x6AAE, 0x6AAF, 0x6AB0, 0x6AB1, - 0x6AB2, 0x6AB3, 0x6AB4, 0x6AB5, 0x6AB6, 0x6AB7, 0x6AB8, 0x6AB9, - 0x6ABA, 0x6ABB, 0x6ABC, 0x6ABD, 0x6ABE, 0x6ABF, 0x6AC0, 0x6AC1, - 0x6AC2, 0x6AC3, 0x6AC4, 0x6AC5, 0x6AC6, 0x6AC7, 0x6AC8, 0x6AC9, - 0x6ACA, 0x6ACB, 0x6ACC, 0x6ACD, 0x6ACE, 0x6ACF, 0x6AD0, 0x6AD1, - 0x6AD2, 0x6AD3, 0x6AD4, 0x6AD5, 0x6AD6, 0x6AD7, 0x6AD8, 0x6AD9, - 0x6ADA, 0x6ADB, 0x6ADC, 0x6ADD, 0x6ADE, 0x6ADF, 0x6AE0, 0x6AE1, - 0x6AE2, 0x6AE3, 0x6AE4, 0x6AE5, 0x6AE6, 0x6AE7, 0x6AE8, 0x6AE9, - 0x6AEA, 0x6AEB, 0x6AEC, 0x6AED, 0x6AEE, 0x6AEF, 0x6AF0, 0x6AF1, - 0x6AF2, 0x6AF3, 0x6AF4, 0x6AF5, 0x6AF6, 0x6AF7, 0x6AF8, 0x6AF9, - 0x6AFA, 0x6AFB, 0x6AFC, 0x6AFD, 0x6AFE, 0x6AFF, 0x6B00, 0x6B01, - 0x6B02, 0x6B03, 0x6B04, 0x6B05, 0x6B06, 0x6B07, 0x6B08, 0x6B09, - 0x6B0A, 0x6B0B, 0x6B0C, 0x6B0D, 0x6B0E, 0x6B0F, 0x6B10, 0x6B11, - 0x6B12, 0x6B13, 0x6B14, 0x6B15, 0x6B16, 0x6B17, 0x6B18, 0x6B19, - 0x6B1A, 0x6B1B, 0x6B1C, 0x6B1D, 0x6B1E, 0x6B1F, 0x6B25, 0x6B26, - 0x6B28, 0x6B29, 0x6B2A, 0x6B2B, 0x6B2C, 0x6B2D, 0x6B2E, 0, -plane 9a -at 0x40 - 0x6B2F, 0x6B30, 0x6B31, 0x6B33, 0x6B34, 0x6B35, 0x6B36, 0x6B38, - 0x6B3B, 0x6B3C, 0x6B3D, 0x6B3F, 0x6B40, 0x6B41, 0x6B42, 0x6B44, - 0x6B45, 0x6B48, 0x6B4A, 0x6B4B, 0x6B4D, 0x6B4E, 0x6B4F, 0x6B50, - 0x6B51, 0x6B52, 0x6B53, 0x6B54, 0x6B55, 0x6B56, 0x6B57, 0x6B58, - 0x6B5A, 0x6B5B, 0x6B5C, 0x6B5D, 0x6B5E, 0x6B5F, 0x6B60, 0x6B61, - 0x6B68, 0x6B69, 0x6B6B, 0x6B6C, 0x6B6D, 0x6B6E, 0x6B6F, 0x6B70, - 0x6B71, 0x6B72, 0x6B73, 0x6B74, 0x6B75, 0x6B76, 0x6B77, 0x6B78, - 0x6B7A, 0x6B7D, 0x6B7E, 0x6B7F, 0x6B80, 0x6B85, 0x6B88, 0, - 0x6B8C, 0x6B8E, 0x6B8F, 0x6B90, 0x6B91, 0x6B94, 0x6B95, 0x6B97, - 0x6B98, 0x6B99, 0x6B9C, 0x6B9D, 0x6B9E, 0x6B9F, 0x6BA0, 0x6BA2, - 0x6BA3, 0x6BA4, 0x6BA5, 0x6BA6, 0x6BA7, 0x6BA8, 0x6BA9, 0x6BAB, - 0x6BAC, 0x6BAD, 0x6BAE, 0x6BAF, 0x6BB0, 0x6BB1, 0x6BB2, 0x6BB6, - 0x6BB8, 0x6BB9, 0x6BBA, 0x6BBB, 0x6BBC, 0x6BBD, 0x6BBE, 0x6BC0, - 0x6BC3, 0x6BC4, 0x6BC6, 0x6BC7, 0x6BC8, 0x6BC9, 0x6BCA, 0x6BCC, - 0x6BCE, 0x6BD0, 0x6BD1, 0x6BD8, 0x6BDA, 0x6BDC, 0x6BDD, 0x6BDE, - 0x6BDF, 0x6BE0, 0x6BE2, 0x6BE3, 0x6BE4, 0x6BE5, 0x6BE6, 0x6BE7, - 0x6BE8, 0x6BE9, 0x6BEC, 0x6BED, 0x6BEE, 0x6BF0, 0x6BF1, 0x6BF2, - 0x6BF4, 0x6BF6, 0x6BF7, 0x6BF8, 0x6BFA, 0x6BFB, 0x6BFC, 0x6BFE, - 0x6BFF, 0x6C00, 0x6C01, 0x6C02, 0x6C03, 0x6C04, 0x6C08, 0x6C09, - 0x6C0A, 0x6C0B, 0x6C0C, 0x6C0E, 0x6C12, 0x6C17, 0x6C1C, 0x6C1D, - 0x6C1E, 0x6C20, 0x6C23, 0x6C25, 0x6C2B, 0x6C2C, 0x6C2D, 0x6C31, - 0x6C33, 0x6C36, 0x6C37, 0x6C39, 0x6C3A, 0x6C3B, 0x6C3C, 0x6C3E, - 0x6C3F, 0x6C43, 0x6C44, 0x6C45, 0x6C48, 0x6C4B, 0x6C4C, 0x6C4D, - 0x6C4E, 0x6C4F, 0x6C51, 0x6C52, 0x6C53, 0x6C56, 0x6C58, 0, -plane 9b -at 0x40 - 0x6C59, 0x6C5A, 0x6C62, 0x6C63, 0x6C65, 0x6C66, 0x6C67, 0x6C6B, - 0x6C6C, 0x6C6D, 0x6C6E, 0x6C6F, 0x6C71, 0x6C73, 0x6C75, 0x6C77, - 0x6C78, 0x6C7A, 0x6C7B, 0x6C7C, 0x6C7F, 0x6C80, 0x6C84, 0x6C87, - 0x6C8A, 0x6C8B, 0x6C8D, 0x6C8E, 0x6C91, 0x6C92, 0x6C95, 0x6C96, - 0x6C97, 0x6C98, 0x6C9A, 0x6C9C, 0x6C9D, 0x6C9E, 0x6CA0, 0x6CA2, - 0x6CA8, 0x6CAC, 0x6CAF, 0x6CB0, 0x6CB4, 0x6CB5, 0x6CB6, 0x6CB7, - 0x6CBA, 0x6CC0, 0x6CC1, 0x6CC2, 0x6CC3, 0x6CC6, 0x6CC7, 0x6CC8, - 0x6CCB, 0x6CCD, 0x6CCE, 0x6CCF, 0x6CD1, 0x6CD2, 0x6CD8, 0, - 0x6CD9, 0x6CDA, 0x6CDC, 0x6CDD, 0x6CDF, 0x6CE4, 0x6CE6, 0x6CE7, - 0x6CE9, 0x6CEC, 0x6CED, 0x6CF2, 0x6CF4, 0x6CF9, 0x6CFF, 0x6D00, - 0x6D02, 0x6D03, 0x6D05, 0x6D06, 0x6D08, 0x6D09, 0x6D0A, 0x6D0D, - 0x6D0F, 0x6D10, 0x6D11, 0x6D13, 0x6D14, 0x6D15, 0x6D16, 0x6D18, - 0x6D1C, 0x6D1D, 0x6D1F, 0x6D20, 0x6D21, 0x6D22, 0x6D23, 0x6D24, - 0x6D26, 0x6D28, 0x6D29, 0x6D2C, 0x6D2D, 0x6D2F, 0x6D30, 0x6D34, - 0x6D36, 0x6D37, 0x6D38, 0x6D3A, 0x6D3F, 0x6D40, 0x6D42, 0x6D44, - 0x6D49, 0x6D4C, 0x6D50, 0x6D55, 0x6D56, 0x6D57, 0x6D58, 0x6D5B, - 0x6D5D, 0x6D5F, 0x6D61, 0x6D62, 0x6D64, 0x6D65, 0x6D67, 0x6D68, - 0x6D6B, 0x6D6C, 0x6D6D, 0x6D70, 0x6D71, 0x6D72, 0x6D73, 0x6D75, - 0x6D76, 0x6D79, 0x6D7A, 0x6D7B, 0x6D7D, 0x6D7E, 0x6D7F, 0x6D80, - 0x6D81, 0x6D83, 0x6D84, 0x6D86, 0x6D87, 0x6D8A, 0x6D8B, 0x6D8D, - 0x6D8F, 0x6D90, 0x6D92, 0x6D96, 0x6D97, 0x6D98, 0x6D99, 0x6D9A, - 0x6D9C, 0x6DA2, 0x6DA5, 0x6DAC, 0x6DAD, 0x6DB0, 0x6DB1, 0x6DB3, - 0x6DB4, 0x6DB6, 0x6DB7, 0x6DB9, 0x6DBA, 0x6DBB, 0x6DBC, 0x6DBD, - 0x6DBE, 0x6DC1, 0x6DC2, 0x6DC3, 0x6DC8, 0x6DC9, 0x6DCA, 0, -plane 9c -at 0x40 - 0x6DCD, 0x6DCE, 0x6DCF, 0x6DD0, 0x6DD2, 0x6DD3, 0x6DD4, 0x6DD5, - 0x6DD7, 0x6DDA, 0x6DDB, 0x6DDC, 0x6DDF, 0x6DE2, 0x6DE3, 0x6DE5, - 0x6DE7, 0x6DE8, 0x6DE9, 0x6DEA, 0x6DED, 0x6DEF, 0x6DF0, 0x6DF2, - 0x6DF4, 0x6DF5, 0x6DF6, 0x6DF8, 0x6DFA, 0x6DFD, 0x6DFE, 0x6DFF, - 0x6E00, 0x6E01, 0x6E02, 0x6E03, 0x6E04, 0x6E06, 0x6E07, 0x6E08, - 0x6E09, 0x6E0B, 0x6E0F, 0x6E12, 0x6E13, 0x6E15, 0x6E18, 0x6E19, - 0x6E1B, 0x6E1C, 0x6E1E, 0x6E1F, 0x6E22, 0x6E26, 0x6E27, 0x6E28, - 0x6E2A, 0x6E2C, 0x6E2E, 0x6E30, 0x6E31, 0x6E33, 0x6E35, 0, - 0x6E36, 0x6E37, 0x6E39, 0x6E3B, 0x6E3C, 0x6E3D, 0x6E3E, 0x6E3F, - 0x6E40, 0x6E41, 0x6E42, 0x6E45, 0x6E46, 0x6E47, 0x6E48, 0x6E49, - 0x6E4A, 0x6E4B, 0x6E4C, 0x6E4F, 0x6E50, 0x6E51, 0x6E52, 0x6E55, - 0x6E57, 0x6E59, 0x6E5A, 0x6E5C, 0x6E5D, 0x6E5E, 0x6E60, 0x6E61, - 0x6E62, 0x6E63, 0x6E64, 0x6E65, 0x6E66, 0x6E67, 0x6E68, 0x6E69, - 0x6E6A, 0x6E6C, 0x6E6D, 0x6E6F, 0x6E70, 0x6E71, 0x6E72, 0x6E73, - 0x6E74, 0x6E75, 0x6E76, 0x6E77, 0x6E78, 0x6E79, 0x6E7A, 0x6E7B, - 0x6E7C, 0x6E7D, 0x6E80, 0x6E81, 0x6E82, 0x6E84, 0x6E87, 0x6E88, - 0x6E8A, 0x6E8B, 0x6E8C, 0x6E8D, 0x6E8E, 0x6E91, 0x6E92, 0x6E93, - 0x6E94, 0x6E95, 0x6E96, 0x6E97, 0x6E99, 0x6E9A, 0x6E9B, 0x6E9D, - 0x6E9E, 0x6EA0, 0x6EA1, 0x6EA3, 0x6EA4, 0x6EA6, 0x6EA8, 0x6EA9, - 0x6EAB, 0x6EAC, 0x6EAD, 0x6EAE, 0x6EB0, 0x6EB3, 0x6EB5, 0x6EB8, - 0x6EB9, 0x6EBC, 0x6EBE, 0x6EBF, 0x6EC0, 0x6EC3, 0x6EC4, 0x6EC5, - 0x6EC6, 0x6EC8, 0x6EC9, 0x6ECA, 0x6ECC, 0x6ECD, 0x6ECE, 0x6ED0, - 0x6ED2, 0x6ED6, 0x6ED8, 0x6ED9, 0x6EDB, 0x6EDC, 0x6EDD, 0x6EE3, - 0x6EE7, 0x6EEA, 0x6EEB, 0x6EEC, 0x6EED, 0x6EEE, 0x6EEF, 0, -plane 9d -at 0x40 - 0x6EF0, 0x6EF1, 0x6EF2, 0x6EF3, 0x6EF5, 0x6EF6, 0x6EF7, 0x6EF8, - 0x6EFA, 0x6EFB, 0x6EFC, 0x6EFD, 0x6EFE, 0x6EFF, 0x6F00, 0x6F01, - 0x6F03, 0x6F04, 0x6F05, 0x6F07, 0x6F08, 0x6F0A, 0x6F0B, 0x6F0C, - 0x6F0D, 0x6F0E, 0x6F10, 0x6F11, 0x6F12, 0x6F16, 0x6F17, 0x6F18, - 0x6F19, 0x6F1A, 0x6F1B, 0x6F1C, 0x6F1D, 0x6F1E, 0x6F1F, 0x6F21, - 0x6F22, 0x6F23, 0x6F25, 0x6F26, 0x6F27, 0x6F28, 0x6F2C, 0x6F2E, - 0x6F30, 0x6F32, 0x6F34, 0x6F35, 0x6F37, 0x6F38, 0x6F39, 0x6F3A, - 0x6F3B, 0x6F3C, 0x6F3D, 0x6F3F, 0x6F40, 0x6F41, 0x6F42, 0, - 0x6F43, 0x6F44, 0x6F45, 0x6F48, 0x6F49, 0x6F4A, 0x6F4C, 0x6F4E, - 0x6F4F, 0x6F50, 0x6F51, 0x6F52, 0x6F53, 0x6F54, 0x6F55, 0x6F56, - 0x6F57, 0x6F59, 0x6F5A, 0x6F5B, 0x6F5D, 0x6F5F, 0x6F60, 0x6F61, - 0x6F63, 0x6F64, 0x6F65, 0x6F67, 0x6F68, 0x6F69, 0x6F6A, 0x6F6B, - 0x6F6C, 0x6F6F, 0x6F70, 0x6F71, 0x6F73, 0x6F75, 0x6F76, 0x6F77, - 0x6F79, 0x6F7B, 0x6F7D, 0x6F7E, 0x6F7F, 0x6F80, 0x6F81, 0x6F82, - 0x6F83, 0x6F85, 0x6F86, 0x6F87, 0x6F8A, 0x6F8B, 0x6F8F, 0x6F90, - 0x6F91, 0x6F92, 0x6F93, 0x6F94, 0x6F95, 0x6F96, 0x6F97, 0x6F98, - 0x6F99, 0x6F9A, 0x6F9B, 0x6F9D, 0x6F9E, 0x6F9F, 0x6FA0, 0x6FA2, - 0x6FA3, 0x6FA4, 0x6FA5, 0x6FA6, 0x6FA8, 0x6FA9, 0x6FAA, 0x6FAB, - 0x6FAC, 0x6FAD, 0x6FAE, 0x6FAF, 0x6FB0, 0x6FB1, 0x6FB2, 0x6FB4, - 0x6FB5, 0x6FB7, 0x6FB8, 0x6FBA, 0x6FBB, 0x6FBC, 0x6FBD, 0x6FBE, - 0x6FBF, 0x6FC1, 0x6FC3, 0x6FC4, 0x6FC5, 0x6FC6, 0x6FC7, 0x6FC8, - 0x6FCA, 0x6FCB, 0x6FCC, 0x6FCD, 0x6FCE, 0x6FCF, 0x6FD0, 0x6FD3, - 0x6FD4, 0x6FD5, 0x6FD6, 0x6FD7, 0x6FD8, 0x6FD9, 0x6FDA, 0x6FDB, - 0x6FDC, 0x6FDD, 0x6FDF, 0x6FE2, 0x6FE3, 0x6FE4, 0x6FE5, 0, -plane 9e -at 0x40 - 0x6FE6, 0x6FE7, 0x6FE8, 0x6FE9, 0x6FEA, 0x6FEB, 0x6FEC, 0x6FED, - 0x6FF0, 0x6FF1, 0x6FF2, 0x6FF3, 0x6FF4, 0x6FF5, 0x6FF6, 0x6FF7, - 0x6FF8, 0x6FF9, 0x6FFA, 0x6FFB, 0x6FFC, 0x6FFD, 0x6FFE, 0x6FFF, - 0x7000, 0x7001, 0x7002, 0x7003, 0x7004, 0x7005, 0x7006, 0x7007, - 0x7008, 0x7009, 0x700A, 0x700B, 0x700C, 0x700D, 0x700E, 0x700F, - 0x7010, 0x7012, 0x7013, 0x7014, 0x7015, 0x7016, 0x7017, 0x7018, - 0x7019, 0x701C, 0x701D, 0x701E, 0x701F, 0x7020, 0x7021, 0x7022, - 0x7024, 0x7025, 0x7026, 0x7027, 0x7028, 0x7029, 0x702A, 0, - 0x702B, 0x702C, 0x702D, 0x702E, 0x702F, 0x7030, 0x7031, 0x7032, - 0x7033, 0x7034, 0x7036, 0x7037, 0x7038, 0x703A, 0x703B, 0x703C, - 0x703D, 0x703E, 0x703F, 0x7040, 0x7041, 0x7042, 0x7043, 0x7044, - 0x7045, 0x7046, 0x7047, 0x7048, 0x7049, 0x704A, 0x704B, 0x704D, - 0x704E, 0x7050, 0x7051, 0x7052, 0x7053, 0x7054, 0x7055, 0x7056, - 0x7057, 0x7058, 0x7059, 0x705A, 0x705B, 0x705C, 0x705D, 0x705F, - 0x7060, 0x7061, 0x7062, 0x7063, 0x7064, 0x7065, 0x7066, 0x7067, - 0x7068, 0x7069, 0x706A, 0x706E, 0x7071, 0x7072, 0x7073, 0x7074, - 0x7077, 0x7079, 0x707A, 0x707B, 0x707D, 0x7081, 0x7082, 0x7083, - 0x7084, 0x7086, 0x7087, 0x7088, 0x708B, 0x708C, 0x708D, 0x708F, - 0x7090, 0x7091, 0x7093, 0x7097, 0x7098, 0x709A, 0x709B, 0x709E, - 0x709F, 0x70A0, 0x70A1, 0x70A2, 0x70A3, 0x70A4, 0x70A5, 0x70A6, - 0x70A7, 0x70A8, 0x70A9, 0x70AA, 0x70B0, 0x70B2, 0x70B4, 0x70B5, - 0x70B6, 0x70BA, 0x70BE, 0x70BF, 0x70C4, 0x70C5, 0x70C6, 0x70C7, - 0x70C9, 0x70CB, 0x70CC, 0x70CD, 0x70CE, 0x70CF, 0x70D0, 0x70D1, - 0x70D2, 0x70D3, 0x70D4, 0x70D5, 0x70D6, 0x70D7, 0x70DA, 0, -plane 9f -at 0x40 - 0x70DC, 0x70DD, 0x70DE, 0x70E0, 0x70E1, 0x70E2, 0x70E3, 0x70E5, - 0x70EA, 0x70EE, 0x70F0, 0x70F1, 0x70F2, 0x70F3, 0x70F4, 0x70F5, - 0x70F6, 0x70F8, 0x70FA, 0x70FB, 0x70FC, 0x70FE, 0x70FF, 0x7100, - 0x7101, 0x7102, 0x7103, 0x7104, 0x7105, 0x7106, 0x7107, 0x7108, - 0x710B, 0x710C, 0x710D, 0x710E, 0x710F, 0x7111, 0x7112, 0x7114, - 0x7117, 0x711B, 0x711C, 0x711D, 0x711E, 0x711F, 0x7120, 0x7121, - 0x7122, 0x7123, 0x7124, 0x7125, 0x7127, 0x7128, 0x7129, 0x712A, - 0x712B, 0x712C, 0x712D, 0x712E, 0x7132, 0x7133, 0x7134, 0, - 0x7135, 0x7137, 0x7138, 0x7139, 0x713A, 0x713B, 0x713C, 0x713D, - 0x713E, 0x713F, 0x7140, 0x7141, 0x7142, 0x7143, 0x7144, 0x7146, - 0x7147, 0x7148, 0x7149, 0x714B, 0x714D, 0x714F, 0x7150, 0x7151, - 0x7152, 0x7153, 0x7154, 0x7155, 0x7156, 0x7157, 0x7158, 0x7159, - 0x715A, 0x715B, 0x715D, 0x715F, 0x7160, 0x7161, 0x7162, 0x7163, - 0x7165, 0x7169, 0x716A, 0x716B, 0x716C, 0x716D, 0x716F, 0x7170, - 0x7171, 0x7174, 0x7175, 0x7176, 0x7177, 0x7179, 0x717B, 0x717C, - 0x717E, 0x717F, 0x7180, 0x7181, 0x7182, 0x7183, 0x7185, 0x7186, - 0x7187, 0x7188, 0x7189, 0x718B, 0x718C, 0x718D, 0x718E, 0x7190, - 0x7191, 0x7192, 0x7193, 0x7195, 0x7196, 0x7197, 0x719A, 0x719B, - 0x719C, 0x719D, 0x719E, 0x71A1, 0x71A2, 0x71A3, 0x71A4, 0x71A5, - 0x71A6, 0x71A7, 0x71A9, 0x71AA, 0x71AB, 0x71AD, 0x71AE, 0x71AF, - 0x71B0, 0x71B1, 0x71B2, 0x71B4, 0x71B6, 0x71B7, 0x71B8, 0x71BA, - 0x71BB, 0x71BC, 0x71BD, 0x71BE, 0x71BF, 0x71C0, 0x71C1, 0x71C2, - 0x71C4, 0x71C5, 0x71C6, 0x71C7, 0x71C8, 0x71C9, 0x71CA, 0x71CB, - 0x71CC, 0x71CD, 0x71CF, 0x71D0, 0x71D1, 0x71D2, 0x71D3, 0, -plane a0 -at 0x40 - 0x71D6, 0x71D7, 0x71D8, 0x71D9, 0x71DA, 0x71DB, 0x71DC, 0x71DD, - 0x71DE, 0x71DF, 0x71E1, 0x71E2, 0x71E3, 0x71E4, 0x71E6, 0x71E8, - 0x71E9, 0x71EA, 0x71EB, 0x71EC, 0x71ED, 0x71EF, 0x71F0, 0x71F1, - 0x71F2, 0x71F3, 0x71F4, 0x71F5, 0x71F6, 0x71F7, 0x71F8, 0x71FA, - 0x71FB, 0x71FC, 0x71FD, 0x71FE, 0x71FF, 0x7200, 0x7201, 0x7202, - 0x7203, 0x7204, 0x7205, 0x7207, 0x7208, 0x7209, 0x720A, 0x720B, - 0x720C, 0x720D, 0x720E, 0x720F, 0x7210, 0x7211, 0x7212, 0x7213, - 0x7214, 0x7215, 0x7216, 0x7217, 0x7218, 0x7219, 0x721A, 0, - 0x721B, 0x721C, 0x721E, 0x721F, 0x7220, 0x7221, 0x7222, 0x7223, - 0x7224, 0x7225, 0x7226, 0x7227, 0x7229, 0x722B, 0x722D, 0x722E, - 0x722F, 0x7232, 0x7233, 0x7234, 0x723A, 0x723C, 0x723E, 0x7240, - 0x7241, 0x7242, 0x7243, 0x7244, 0x7245, 0x7246, 0x7249, 0x724A, - 0x724B, 0x724E, 0x724F, 0x7250, 0x7251, 0x7253, 0x7254, 0x7255, - 0x7257, 0x7258, 0x725A, 0x725C, 0x725E, 0x7260, 0x7263, 0x7264, - 0x7265, 0x7268, 0x726A, 0x726B, 0x726C, 0x726D, 0x7270, 0x7271, - 0x7273, 0x7274, 0x7276, 0x7277, 0x7278, 0x727B, 0x727C, 0x727D, - 0x7282, 0x7283, 0x7285, 0x7286, 0x7287, 0x7288, 0x7289, 0x728C, - 0x728E, 0x7290, 0x7291, 0x7293, 0x7294, 0x7295, 0x7296, 0x7297, - 0x7298, 0x7299, 0x729A, 0x729B, 0x729C, 0x729D, 0x729E, 0x72A0, - 0x72A1, 0x72A2, 0x72A3, 0x72A4, 0x72A5, 0x72A6, 0x72A7, 0x72A8, - 0x72A9, 0x72AA, 0x72AB, 0x72AE, 0x72B1, 0x72B2, 0x72B3, 0x72B5, - 0x72BA, 0x72BB, 0x72BC, 0x72BD, 0x72BE, 0x72BF, 0x72C0, 0x72C5, - 0x72C6, 0x72C7, 0x72C9, 0x72CA, 0x72CB, 0x72CC, 0x72CF, 0x72D1, - 0x72D3, 0x72D4, 0x72D5, 0x72D6, 0x72D8, 0x72DA, 0x72DB, 0, -plane a1 -at 0x40 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0x3000, 0x3001, 0x3002, 0x00B7, 0x02C9, 0x02C7, 0x00A8, - 0x3003, 0x3005, 0x2015, 0xFF5E, 0x2016, 0x2026, 0x2018, 0x2019, - 0x201C, 0x201D, 0x3014, 0x3015, 0x3008, 0x3009, 0x300A, 0x300B, - 0x300C, 0x300D, 0x300E, 0x300F, 0x3016, 0x3017, 0x3010, 0x3011, - 0x00B1, 0x00D7, 0x00F7, 0x2236, 0x2227, 0x2228, 0x2211, 0x220F, - 0x222A, 0x2229, 0x2208, 0x2237, 0x221A, 0x22A5, 0x2225, 0x2220, - 0x2312, 0x2299, 0x222B, 0x222E, 0x2261, 0x224C, 0x2248, 0x223D, - 0x221D, 0x2260, 0x226E, 0x226F, 0x2264, 0x2265, 0x221E, 0x2235, - 0x2234, 0x2642, 0x2640, 0x00B0, 0x2032, 0x2033, 0x2103, 0xFF04, - 0x00A4, 0xFFE0, 0xFFE1, 0x2030, 0x00A7, 0x2116, 0x2606, 0x2605, - 0x25CB, 0x25CF, 0x25CE, 0x25C7, 0x25C6, 0x25A1, 0x25A0, 0x25B3, - 0x25B2, 0x203B, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013, 0, -plane a2 -at 0x40 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, - 0x2177, 0x2178, 0x2179, 0, 0, 0, 0, 0, - 0, 0x2488, 0x2489, 0x248A, 0x248B, 0x248C, 0x248D, 0x248E, - 0x248F, 0x2490, 0x2491, 0x2492, 0x2493, 0x2494, 0x2495, 0x2496, - 0x2497, 0x2498, 0x2499, 0x249A, 0x249B, 0x2474, 0x2475, 0x2476, - 0x2477, 0x2478, 0x2479, 0x247A, 0x247B, 0x247C, 0x247D, 0x247E, - 0x247F, 0x2480, 0x2481, 0x2482, 0x2483, 0x2484, 0x2485, 0x2486, - 0x2487, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, - 0x2467, 0x2468, 0x2469, 0, 0, 0x3220, 0x3221, 0x3222, - 0x3223, 0x3224, 0x3225, 0x3226, 0x3227, 0x3228, 0x3229, 0, - 0, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, - 0x2167, 0x2168, 0x2169, 0x216A, 0x216B, 0, 0, 0, -plane a3 -at 0x40 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0xFF01, 0xFF02, 0xFF03, 0xFFE5, 0xFF05, 0xFF06, 0xFF07, - 0xFF08, 0xFF09, 0xFF0A, 0xFF0B, 0xFF0C, 0xFF0D, 0xFF0E, 0xFF0F, - 0xFF10, 0xFF11, 0xFF12, 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17, - 0xFF18, 0xFF19, 0xFF1A, 0xFF1B, 0xFF1C, 0xFF1D, 0xFF1E, 0xFF1F, - 0xFF20, 0xFF21, 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27, - 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F, - 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36, 0xFF37, - 0xFF38, 0xFF39, 0xFF3A, 0xFF3B, 0xFF3C, 0xFF3D, 0xFF3E, 0xFF3F, - 0xFF40, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47, - 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F, - 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57, - 0xFF58, 0xFF59, 0xFF5A, 0xFF5B, 0xFF5C, 0xFF5D, 0xFFE3, 0, -plane a4 -at 0x40 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, - 0x3048, 0x3049, 0x304A, 0x304B, 0x304C, 0x304D, 0x304E, 0x304F, - 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, - 0x3058, 0x3059, 0x305A, 0x305B, 0x305C, 0x305D, 0x305E, 0x305F, - 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, - 0x3068, 0x3069, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F, - 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, - 0x3078, 0x3079, 0x307A, 0x307B, 0x307C, 0x307D, 0x307E, 0x307F, - 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, - 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308E, 0x308F, - 0x3090, 0x3091, 0x3092, 0x3093, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane a5 -at 0x40 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0x30A1, 0x30A2, 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, - 0x30A8, 0x30A9, 0x30AA, 0x30AB, 0x30AC, 0x30AD, 0x30AE, 0x30AF, - 0x30B0, 0x30B1, 0x30B2, 0x30B3, 0x30B4, 0x30B5, 0x30B6, 0x30B7, - 0x30B8, 0x30B9, 0x30BA, 0x30BB, 0x30BC, 0x30BD, 0x30BE, 0x30BF, - 0x30C0, 0x30C1, 0x30C2, 0x30C3, 0x30C4, 0x30C5, 0x30C6, 0x30C7, - 0x30C8, 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, - 0x30D0, 0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7, - 0x30D8, 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF, - 0x30E0, 0x30E1, 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7, - 0x30E8, 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF, - 0x30F0, 0x30F1, 0x30F2, 0x30F3, 0x30F4, 0x30F5, 0x30F6, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane a6 -at 0x40 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, - 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, - 0x03A0, 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, - 0x03A9, 0, 0, 0, 0, 0, 0, 0, - 0, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, - 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, - 0x03C0, 0x03C1, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, - 0x03C9, 0, 0, 0, 0, 0, 0, 0, - 0xFE35, 0xFE36, 0xFE39, 0xFE3A, 0xFE3F, 0xFE40, 0xFE3D, 0xFE3E, - 0xFE41, 0xFE42, 0xFE43, 0xFE44, 0, 0, 0xFE3B, 0xFE3C, - 0xFE37, 0xFE38, 0xFE31, 0, 0xFE33, 0xFE34, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane a7 -at 0x40 - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, - 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, - 0x041E, 0x041F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, - 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, - 0x042E, 0x042F, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, - 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, - 0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, - 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, - 0x044E, 0x044F, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane a8 -at 0x40 - 0x02CA, 0x02CB, 0x02D9, 0x2013, 0x2014, 0x2025, 0x2035, 0x2105, - 0x2109, 0x2196, 0x2197, 0x2198, 0x2199, 0x2215, 0x221F, 0x2223, - 0x2252, 0x2266, 0x2267, 0x22BF, 0x2550, 0x2551, 0x2552, 0x2553, - 0x2554, 0x2555, 0x2556, 0x2557, 0x2558, 0x2559, 0x255A, 0x255B, - 0x255C, 0x255D, 0x255E, 0x255F, 0x2560, 0x2561, 0x2562, 0x2563, - 0x2564, 0x2565, 0x2566, 0x2567, 0x2568, 0x2569, 0x256A, 0x256B, - 0x256C, 0x256D, 0x256E, 0x256F, 0x2570, 0x2571, 0x2572, 0x2573, - 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586, 0x2587, 0, - 0x2588, 0x2589, 0x258A, 0x258B, 0x258C, 0x258D, 0x258E, 0x258F, - 0x2593, 0x2594, 0x2595, 0x25BC, 0x25BD, 0x25E2, 0x25E3, 0x25E4, - 0x25E5, 0x2609, 0x2295, 0x3012, 0x301D, 0x301E, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0x0101, 0x00E1, 0x01CE, 0x00E0, 0x0113, 0x00E9, 0x011B, - 0x00E8, 0x012B, 0x00ED, 0x01D0, 0x00EC, 0x014D, 0x00F3, 0x01D2, - 0x00F2, 0x016B, 0x00FA, 0x01D4, 0x00F9, 0x01D6, 0x01D8, 0x01DA, - 0x01DC, 0x00FC, 0x00EA, 0x0251, 0xE7C7, 0x0144, 0x0148, 0xE7C8, - 0x0261, 0, 0, 0, 0, 0x3105, 0x3106, 0x3107, - 0x3108, 0x3109, 0x310A, 0x310B, 0x310C, 0x310D, 0x310E, 0x310F, - 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, - 0x3118, 0x3119, 0x311A, 0x311B, 0x311C, 0x311D, 0x311E, 0x311F, - 0x3120, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, - 0x3128, 0x3129, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane a9 -at 0x40 - 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027, 0x3028, - 0x3029, 0x32A3, 0x338E, 0x338F, 0x339C, 0x339D, 0x339E, 0x33A1, - 0x33C4, 0x33CE, 0x33D1, 0x33D2, 0x33D5, 0xFE30, 0xFFE2, 0xFFE4, - 0, 0x2121, 0x3231, 0, 0x2010, 0, 0, 0, - 0x30FC, 0x309B, 0x309C, 0x30FD, 0x30FE, 0x3006, 0x309D, 0x309E, - 0xFE49, 0xFE4A, 0xFE4B, 0xFE4C, 0xFE4D, 0xFE4E, 0xFE4F, 0xFE50, - 0xFE51, 0xFE52, 0xFE54, 0xFE55, 0xFE56, 0xFE57, 0xFE59, 0xFE5A, - 0xFE5B, 0xFE5C, 0xFE5D, 0xFE5E, 0xFE5F, 0xFE60, 0xFE61, 0, - 0xFE62, 0xFE63, 0xFE64, 0xFE65, 0xFE66, 0xFE68, 0xFE69, 0xFE6A, - 0xFE6B, 0xE7E7, 0xE7E8, 0xE7E9, 0xE7EA, 0xE7EB, 0xE7EC, 0xE7ED, - 0xE7EE, 0xE7EF, 0xE7F0, 0xE7F1, 0xE7F2, 0xE7F3, 0x3007, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0x2500, 0x2501, 0x2502, 0x2503, - 0x2504, 0x2505, 0x2506, 0x2507, 0x2508, 0x2509, 0x250A, 0x250B, - 0x250C, 0x250D, 0x250E, 0x250F, 0x2510, 0x2511, 0x2512, 0x2513, - 0x2514, 0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x251A, 0x251B, - 0x251C, 0x251D, 0x251E, 0x251F, 0x2520, 0x2521, 0x2522, 0x2523, - 0x2524, 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252A, 0x252B, - 0x252C, 0x252D, 0x252E, 0x252F, 0x2530, 0x2531, 0x2532, 0x2533, - 0x2534, 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253A, 0x253B, - 0x253C, 0x253D, 0x253E, 0x253F, 0x2540, 0x2541, 0x2542, 0x2543, - 0x2544, 0x2545, 0x2546, 0x2547, 0x2548, 0x2549, 0x254A, 0x254B, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane aa -at 0x40 - 0x72DC, 0x72DD, 0x72DF, 0x72E2, 0x72E3, 0x72E4, 0x72E5, 0x72E6, - 0x72E7, 0x72EA, 0x72EB, 0x72F5, 0x72F6, 0x72F9, 0x72FD, 0x72FE, - 0x72FF, 0x7300, 0x7302, 0x7304, 0x7305, 0x7306, 0x7307, 0x7308, - 0x7309, 0x730B, 0x730C, 0x730D, 0x730F, 0x7310, 0x7311, 0x7312, - 0x7314, 0x7318, 0x7319, 0x731A, 0x731F, 0x7320, 0x7323, 0x7324, - 0x7326, 0x7327, 0x7328, 0x732D, 0x732F, 0x7330, 0x7332, 0x7333, - 0x7335, 0x7336, 0x733A, 0x733B, 0x733C, 0x733D, 0x7340, 0x7341, - 0x7342, 0x7343, 0x7344, 0x7345, 0x7346, 0x7347, 0x7348, 0, - 0x7349, 0x734A, 0x734B, 0x734C, 0x734E, 0x734F, 0x7351, 0x7353, - 0x7354, 0x7355, 0x7356, 0x7358, 0x7359, 0x735A, 0x735B, 0x735C, - 0x735D, 0x735E, 0x735F, 0x7361, 0x7362, 0x7363, 0x7364, 0x7365, - 0x7366, 0x7367, 0x7368, 0x7369, 0x736A, 0x736B, 0x736E, 0x7370, - 0x7371, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane ab -at 0x40 - 0x7372, 0x7373, 0x7374, 0x7375, 0x7376, 0x7377, 0x7378, 0x7379, - 0x737A, 0x737B, 0x737C, 0x737D, 0x737F, 0x7380, 0x7381, 0x7382, - 0x7383, 0x7385, 0x7386, 0x7388, 0x738A, 0x738C, 0x738D, 0x738F, - 0x7390, 0x7392, 0x7393, 0x7394, 0x7395, 0x7397, 0x7398, 0x7399, - 0x739A, 0x739C, 0x739D, 0x739E, 0x73A0, 0x73A1, 0x73A3, 0x73A4, - 0x73A5, 0x73A6, 0x73A7, 0x73A8, 0x73AA, 0x73AC, 0x73AD, 0x73B1, - 0x73B4, 0x73B5, 0x73B6, 0x73B8, 0x73B9, 0x73BC, 0x73BD, 0x73BE, - 0x73BF, 0x73C1, 0x73C3, 0x73C4, 0x73C5, 0x73C6, 0x73C7, 0, - 0x73CB, 0x73CC, 0x73CE, 0x73D2, 0x73D3, 0x73D4, 0x73D5, 0x73D6, - 0x73D7, 0x73D8, 0x73DA, 0x73DB, 0x73DC, 0x73DD, 0x73DF, 0x73E1, - 0x73E2, 0x73E3, 0x73E4, 0x73E6, 0x73E8, 0x73EA, 0x73EB, 0x73EC, - 0x73EE, 0x73EF, 0x73F0, 0x73F1, 0x73F3, 0x73F4, 0x73F5, 0x73F6, - 0x73F7, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane ac -at 0x40 - 0x73F8, 0x73F9, 0x73FA, 0x73FB, 0x73FC, 0x73FD, 0x73FE, 0x73FF, - 0x7400, 0x7401, 0x7402, 0x7404, 0x7407, 0x7408, 0x740B, 0x740C, - 0x740D, 0x740E, 0x7411, 0x7412, 0x7413, 0x7414, 0x7415, 0x7416, - 0x7417, 0x7418, 0x7419, 0x741C, 0x741D, 0x741E, 0x741F, 0x7420, - 0x7421, 0x7423, 0x7424, 0x7427, 0x7429, 0x742B, 0x742D, 0x742F, - 0x7431, 0x7432, 0x7437, 0x7438, 0x7439, 0x743A, 0x743B, 0x743D, - 0x743E, 0x743F, 0x7440, 0x7442, 0x7443, 0x7444, 0x7445, 0x7446, - 0x7447, 0x7448, 0x7449, 0x744A, 0x744B, 0x744C, 0x744D, 0, - 0x744E, 0x744F, 0x7450, 0x7451, 0x7452, 0x7453, 0x7454, 0x7456, - 0x7458, 0x745D, 0x7460, 0x7461, 0x7462, 0x7463, 0x7464, 0x7465, - 0x7466, 0x7467, 0x7468, 0x7469, 0x746A, 0x746B, 0x746C, 0x746E, - 0x746F, 0x7471, 0x7472, 0x7473, 0x7474, 0x7475, 0x7478, 0x7479, - 0x747A, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane ad -at 0x40 - 0x747B, 0x747C, 0x747D, 0x747F, 0x7482, 0x7484, 0x7485, 0x7486, - 0x7488, 0x7489, 0x748A, 0x748C, 0x748D, 0x748F, 0x7491, 0x7492, - 0x7493, 0x7494, 0x7495, 0x7496, 0x7497, 0x7498, 0x7499, 0x749A, - 0x749B, 0x749D, 0x749F, 0x74A0, 0x74A1, 0x74A2, 0x74A3, 0x74A4, - 0x74A5, 0x74A6, 0x74AA, 0x74AB, 0x74AC, 0x74AD, 0x74AE, 0x74AF, - 0x74B0, 0x74B1, 0x74B2, 0x74B3, 0x74B4, 0x74B5, 0x74B6, 0x74B7, - 0x74B8, 0x74B9, 0x74BB, 0x74BC, 0x74BD, 0x74BE, 0x74BF, 0x74C0, - 0x74C1, 0x74C2, 0x74C3, 0x74C4, 0x74C5, 0x74C6, 0x74C7, 0, - 0x74C8, 0x74C9, 0x74CA, 0x74CB, 0x74CC, 0x74CD, 0x74CE, 0x74CF, - 0x74D0, 0x74D1, 0x74D3, 0x74D4, 0x74D5, 0x74D6, 0x74D7, 0x74D8, - 0x74D9, 0x74DA, 0x74DB, 0x74DD, 0x74DF, 0x74E1, 0x74E5, 0x74E7, - 0x74E8, 0x74E9, 0x74EA, 0x74EB, 0x74EC, 0x74ED, 0x74F0, 0x74F1, - 0x74F2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane ae -at 0x40 - 0x74F3, 0x74F5, 0x74F8, 0x74F9, 0x74FA, 0x74FB, 0x74FC, 0x74FD, - 0x74FE, 0x7500, 0x7501, 0x7502, 0x7503, 0x7505, 0x7506, 0x7507, - 0x7508, 0x7509, 0x750A, 0x750B, 0x750C, 0x750E, 0x7510, 0x7512, - 0x7514, 0x7515, 0x7516, 0x7517, 0x751B, 0x751D, 0x751E, 0x7520, - 0x7521, 0x7522, 0x7523, 0x7524, 0x7526, 0x7527, 0x752A, 0x752E, - 0x7534, 0x7536, 0x7539, 0x753C, 0x753D, 0x753F, 0x7541, 0x7542, - 0x7543, 0x7544, 0x7546, 0x7547, 0x7549, 0x754A, 0x754D, 0x7550, - 0x7551, 0x7552, 0x7553, 0x7555, 0x7556, 0x7557, 0x7558, 0, - 0x755D, 0x755E, 0x755F, 0x7560, 0x7561, 0x7562, 0x7563, 0x7564, - 0x7567, 0x7568, 0x7569, 0x756B, 0x756C, 0x756D, 0x756E, 0x756F, - 0x7570, 0x7571, 0x7573, 0x7575, 0x7576, 0x7577, 0x757A, 0x757B, - 0x757C, 0x757D, 0x757E, 0x7580, 0x7581, 0x7582, 0x7584, 0x7585, - 0x7587, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane af -at 0x40 - 0x7588, 0x7589, 0x758A, 0x758C, 0x758D, 0x758E, 0x7590, 0x7593, - 0x7595, 0x7598, 0x759B, 0x759C, 0x759E, 0x75A2, 0x75A6, 0x75A7, - 0x75A8, 0x75A9, 0x75AA, 0x75AD, 0x75B6, 0x75B7, 0x75BA, 0x75BB, - 0x75BF, 0x75C0, 0x75C1, 0x75C6, 0x75CB, 0x75CC, 0x75CE, 0x75CF, - 0x75D0, 0x75D1, 0x75D3, 0x75D7, 0x75D9, 0x75DA, 0x75DC, 0x75DD, - 0x75DF, 0x75E0, 0x75E1, 0x75E5, 0x75E9, 0x75EC, 0x75ED, 0x75EE, - 0x75EF, 0x75F2, 0x75F3, 0x75F5, 0x75F6, 0x75F7, 0x75F8, 0x75FA, - 0x75FB, 0x75FD, 0x75FE, 0x7602, 0x7604, 0x7606, 0x7607, 0, - 0x7608, 0x7609, 0x760B, 0x760D, 0x760E, 0x760F, 0x7611, 0x7612, - 0x7613, 0x7614, 0x7616, 0x761A, 0x761C, 0x761D, 0x761E, 0x7621, - 0x7623, 0x7627, 0x7628, 0x762C, 0x762E, 0x762F, 0x7631, 0x7632, - 0x7636, 0x7637, 0x7639, 0x763A, 0x763B, 0x763D, 0x7641, 0x7642, - 0x7644, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane b0 -at 0x40 - 0x7645, 0x7646, 0x7647, 0x7648, 0x7649, 0x764A, 0x764B, 0x764E, - 0x764F, 0x7650, 0x7651, 0x7652, 0x7653, 0x7655, 0x7657, 0x7658, - 0x7659, 0x765A, 0x765B, 0x765D, 0x765F, 0x7660, 0x7661, 0x7662, - 0x7664, 0x7665, 0x7666, 0x7667, 0x7668, 0x7669, 0x766A, 0x766C, - 0x766D, 0x766E, 0x7670, 0x7671, 0x7672, 0x7673, 0x7674, 0x7675, - 0x7676, 0x7677, 0x7679, 0x767A, 0x767C, 0x767F, 0x7680, 0x7681, - 0x7683, 0x7685, 0x7689, 0x768A, 0x768C, 0x768D, 0x768F, 0x7690, - 0x7692, 0x7694, 0x7695, 0x7697, 0x7698, 0x769A, 0x769B, 0, - 0x769C, 0x769D, 0x769E, 0x769F, 0x76A0, 0x76A1, 0x76A2, 0x76A3, - 0x76A5, 0x76A6, 0x76A7, 0x76A8, 0x76A9, 0x76AA, 0x76AB, 0x76AC, - 0x76AD, 0x76AF, 0x76B0, 0x76B3, 0x76B5, 0x76B6, 0x76B7, 0x76B8, - 0x76B9, 0x76BA, 0x76BB, 0x76BC, 0x76BD, 0x76BE, 0x76C0, 0x76C1, - 0x76C3, 0x554A, 0x963F, 0x57C3, 0x6328, 0x54CE, 0x5509, 0x54C0, - 0x7691, 0x764C, 0x853C, 0x77EE, 0x827E, 0x788D, 0x7231, 0x9698, - 0x978D, 0x6C28, 0x5B89, 0x4FFA, 0x6309, 0x6697, 0x5CB8, 0x80FA, - 0x6848, 0x80AE, 0x6602, 0x76CE, 0x51F9, 0x6556, 0x71AC, 0x7FF1, - 0x8884, 0x50B2, 0x5965, 0x61CA, 0x6FB3, 0x82AD, 0x634C, 0x6252, - 0x53ED, 0x5427, 0x7B06, 0x516B, 0x75A4, 0x5DF4, 0x62D4, 0x8DCB, - 0x9776, 0x628A, 0x8019, 0x575D, 0x9738, 0x7F62, 0x7238, 0x767D, - 0x67CF, 0x767E, 0x6446, 0x4F70, 0x8D25, 0x62DC, 0x7A17, 0x6591, - 0x73ED, 0x642C, 0x6273, 0x822C, 0x9881, 0x677F, 0x7248, 0x626E, - 0x62CC, 0x4F34, 0x74E3, 0x534A, 0x529E, 0x7ECA, 0x90A6, 0x5E2E, - 0x6886, 0x699C, 0x8180, 0x7ED1, 0x68D2, 0x78C5, 0x868C, 0x9551, - 0x508D, 0x8C24, 0x82DE, 0x80DE, 0x5305, 0x8912, 0x5265, 0, -plane b1 -at 0x40 - 0x76C4, 0x76C7, 0x76C9, 0x76CB, 0x76CC, 0x76D3, 0x76D5, 0x76D9, - 0x76DA, 0x76DC, 0x76DD, 0x76DE, 0x76E0, 0x76E1, 0x76E2, 0x76E3, - 0x76E4, 0x76E6, 0x76E7, 0x76E8, 0x76E9, 0x76EA, 0x76EB, 0x76EC, - 0x76ED, 0x76F0, 0x76F3, 0x76F5, 0x76F6, 0x76F7, 0x76FA, 0x76FB, - 0x76FD, 0x76FF, 0x7700, 0x7702, 0x7703, 0x7705, 0x7706, 0x770A, - 0x770C, 0x770E, 0x770F, 0x7710, 0x7711, 0x7712, 0x7713, 0x7714, - 0x7715, 0x7716, 0x7717, 0x7718, 0x771B, 0x771C, 0x771D, 0x771E, - 0x7721, 0x7723, 0x7724, 0x7725, 0x7727, 0x772A, 0x772B, 0, - 0x772C, 0x772E, 0x7730, 0x7731, 0x7732, 0x7733, 0x7734, 0x7739, - 0x773B, 0x773D, 0x773E, 0x773F, 0x7742, 0x7744, 0x7745, 0x7746, - 0x7748, 0x7749, 0x774A, 0x774B, 0x774C, 0x774D, 0x774E, 0x774F, - 0x7752, 0x7753, 0x7754, 0x7755, 0x7756, 0x7757, 0x7758, 0x7759, - 0x775C, 0x8584, 0x96F9, 0x4FDD, 0x5821, 0x9971, 0x5B9D, 0x62B1, - 0x62A5, 0x66B4, 0x8C79, 0x9C8D, 0x7206, 0x676F, 0x7891, 0x60B2, - 0x5351, 0x5317, 0x8F88, 0x80CC, 0x8D1D, 0x94A1, 0x500D, 0x72C8, - 0x5907, 0x60EB, 0x7119, 0x88AB, 0x5954, 0x82EF, 0x672C, 0x7B28, - 0x5D29, 0x7EF7, 0x752D, 0x6CF5, 0x8E66, 0x8FF8, 0x903C, 0x9F3B, - 0x6BD4, 0x9119, 0x7B14, 0x5F7C, 0x78A7, 0x84D6, 0x853D, 0x6BD5, - 0x6BD9, 0x6BD6, 0x5E01, 0x5E87, 0x75F9, 0x95ED, 0x655D, 0x5F0A, - 0x5FC5, 0x8F9F, 0x58C1, 0x81C2, 0x907F, 0x965B, 0x97AD, 0x8FB9, - 0x7F16, 0x8D2C, 0x6241, 0x4FBF, 0x53D8, 0x535E, 0x8FA8, 0x8FA9, - 0x8FAB, 0x904D, 0x6807, 0x5F6A, 0x8198, 0x8868, 0x9CD6, 0x618B, - 0x522B, 0x762A, 0x5F6C, 0x658C, 0x6FD2, 0x6EE8, 0x5BBE, 0x6448, - 0x5175, 0x51B0, 0x67C4, 0x4E19, 0x79C9, 0x997C, 0x70B3, 0, -plane b2 -at 0x40 - 0x775D, 0x775E, 0x775F, 0x7760, 0x7764, 0x7767, 0x7769, 0x776A, - 0x776D, 0x776E, 0x776F, 0x7770, 0x7771, 0x7772, 0x7773, 0x7774, - 0x7775, 0x7776, 0x7777, 0x7778, 0x777A, 0x777B, 0x777C, 0x7781, - 0x7782, 0x7783, 0x7786, 0x7787, 0x7788, 0x7789, 0x778A, 0x778B, - 0x778F, 0x7790, 0x7793, 0x7794, 0x7795, 0x7796, 0x7797, 0x7798, - 0x7799, 0x779A, 0x779B, 0x779C, 0x779D, 0x779E, 0x77A1, 0x77A3, - 0x77A4, 0x77A6, 0x77A8, 0x77AB, 0x77AD, 0x77AE, 0x77AF, 0x77B1, - 0x77B2, 0x77B4, 0x77B6, 0x77B7, 0x77B8, 0x77B9, 0x77BA, 0, - 0x77BC, 0x77BE, 0x77C0, 0x77C1, 0x77C2, 0x77C3, 0x77C4, 0x77C5, - 0x77C6, 0x77C7, 0x77C8, 0x77C9, 0x77CA, 0x77CB, 0x77CC, 0x77CE, - 0x77CF, 0x77D0, 0x77D1, 0x77D2, 0x77D3, 0x77D4, 0x77D5, 0x77D6, - 0x77D8, 0x77D9, 0x77DA, 0x77DD, 0x77DE, 0x77DF, 0x77E0, 0x77E1, - 0x77E4, 0x75C5, 0x5E76, 0x73BB, 0x83E0, 0x64AD, 0x62E8, 0x94B5, - 0x6CE2, 0x535A, 0x52C3, 0x640F, 0x94C2, 0x7B94, 0x4F2F, 0x5E1B, - 0x8236, 0x8116, 0x818A, 0x6E24, 0x6CCA, 0x9A73, 0x6355, 0x535C, - 0x54FA, 0x8865, 0x57E0, 0x4E0D, 0x5E03, 0x6B65, 0x7C3F, 0x90E8, - 0x6016, 0x64E6, 0x731C, 0x88C1, 0x6750, 0x624D, 0x8D22, 0x776C, - 0x8E29, 0x91C7, 0x5F69, 0x83DC, 0x8521, 0x9910, 0x53C2, 0x8695, - 0x6B8B, 0x60ED, 0x60E8, 0x707F, 0x82CD, 0x8231, 0x4ED3, 0x6CA7, - 0x85CF, 0x64CD, 0x7CD9, 0x69FD, 0x66F9, 0x8349, 0x5395, 0x7B56, - 0x4FA7, 0x518C, 0x6D4B, 0x5C42, 0x8E6D, 0x63D2, 0x53C9, 0x832C, - 0x8336, 0x67E5, 0x78B4, 0x643D, 0x5BDF, 0x5C94, 0x5DEE, 0x8BE7, - 0x62C6, 0x67F4, 0x8C7A, 0x6400, 0x63BA, 0x8749, 0x998B, 0x8C17, - 0x7F20, 0x94F2, 0x4EA7, 0x9610, 0x98A4, 0x660C, 0x7316, 0, -plane b3 -at 0x40 - 0x77E6, 0x77E8, 0x77EA, 0x77EF, 0x77F0, 0x77F1, 0x77F2, 0x77F4, - 0x77F5, 0x77F7, 0x77F9, 0x77FA, 0x77FB, 0x77FC, 0x7803, 0x7804, - 0x7805, 0x7806, 0x7807, 0x7808, 0x780A, 0x780B, 0x780E, 0x780F, - 0x7810, 0x7813, 0x7815, 0x7819, 0x781B, 0x781E, 0x7820, 0x7821, - 0x7822, 0x7824, 0x7828, 0x782A, 0x782B, 0x782E, 0x782F, 0x7831, - 0x7832, 0x7833, 0x7835, 0x7836, 0x783D, 0x783F, 0x7841, 0x7842, - 0x7843, 0x7844, 0x7846, 0x7848, 0x7849, 0x784A, 0x784B, 0x784D, - 0x784F, 0x7851, 0x7853, 0x7854, 0x7858, 0x7859, 0x785A, 0, - 0x785B, 0x785C, 0x785E, 0x785F, 0x7860, 0x7861, 0x7862, 0x7863, - 0x7864, 0x7865, 0x7866, 0x7867, 0x7868, 0x7869, 0x786F, 0x7870, - 0x7871, 0x7872, 0x7873, 0x7874, 0x7875, 0x7876, 0x7878, 0x7879, - 0x787A, 0x787B, 0x787D, 0x787E, 0x787F, 0x7880, 0x7881, 0x7882, - 0x7883, 0x573A, 0x5C1D, 0x5E38, 0x957F, 0x507F, 0x80A0, 0x5382, - 0x655E, 0x7545, 0x5531, 0x5021, 0x8D85, 0x6284, 0x949E, 0x671D, - 0x5632, 0x6F6E, 0x5DE2, 0x5435, 0x7092, 0x8F66, 0x626F, 0x64A4, - 0x63A3, 0x5F7B, 0x6F88, 0x90F4, 0x81E3, 0x8FB0, 0x5C18, 0x6668, - 0x5FF1, 0x6C89, 0x9648, 0x8D81, 0x886C, 0x6491, 0x79F0, 0x57CE, - 0x6A59, 0x6210, 0x5448, 0x4E58, 0x7A0B, 0x60E9, 0x6F84, 0x8BDA, - 0x627F, 0x901E, 0x9A8B, 0x79E4, 0x5403, 0x75F4, 0x6301, 0x5319, - 0x6C60, 0x8FDF, 0x5F1B, 0x9A70, 0x803B, 0x9F7F, 0x4F88, 0x5C3A, - 0x8D64, 0x7FC5, 0x65A5, 0x70BD, 0x5145, 0x51B2, 0x866B, 0x5D07, - 0x5BA0, 0x62BD, 0x916C, 0x7574, 0x8E0C, 0x7A20, 0x6101, 0x7B79, - 0x4EC7, 0x7EF8, 0x7785, 0x4E11, 0x81ED, 0x521D, 0x51FA, 0x6A71, - 0x53A8, 0x8E87, 0x9504, 0x96CF, 0x6EC1, 0x9664, 0x695A, 0, -plane b4 -at 0x40 - 0x7884, 0x7885, 0x7886, 0x7888, 0x788A, 0x788B, 0x788F, 0x7890, - 0x7892, 0x7894, 0x7895, 0x7896, 0x7899, 0x789D, 0x789E, 0x78A0, - 0x78A2, 0x78A4, 0x78A6, 0x78A8, 0x78A9, 0x78AA, 0x78AB, 0x78AC, - 0x78AD, 0x78AE, 0x78AF, 0x78B5, 0x78B6, 0x78B7, 0x78B8, 0x78BA, - 0x78BB, 0x78BC, 0x78BD, 0x78BF, 0x78C0, 0x78C2, 0x78C3, 0x78C4, - 0x78C6, 0x78C7, 0x78C8, 0x78CC, 0x78CD, 0x78CE, 0x78CF, 0x78D1, - 0x78D2, 0x78D3, 0x78D6, 0x78D7, 0x78D8, 0x78DA, 0x78DB, 0x78DC, - 0x78DD, 0x78DE, 0x78DF, 0x78E0, 0x78E1, 0x78E2, 0x78E3, 0, - 0x78E4, 0x78E5, 0x78E6, 0x78E7, 0x78E9, 0x78EA, 0x78EB, 0x78ED, - 0x78EE, 0x78EF, 0x78F0, 0x78F1, 0x78F3, 0x78F5, 0x78F6, 0x78F8, - 0x78F9, 0x78FB, 0x78FC, 0x78FD, 0x78FE, 0x78FF, 0x7900, 0x7902, - 0x7903, 0x7904, 0x7906, 0x7907, 0x7908, 0x7909, 0x790A, 0x790B, - 0x790C, 0x7840, 0x50A8, 0x77D7, 0x6410, 0x89E6, 0x5904, 0x63E3, - 0x5DDD, 0x7A7F, 0x693D, 0x4F20, 0x8239, 0x5598, 0x4E32, 0x75AE, - 0x7A97, 0x5E62, 0x5E8A, 0x95EF, 0x521B, 0x5439, 0x708A, 0x6376, - 0x9524, 0x5782, 0x6625, 0x693F, 0x9187, 0x5507, 0x6DF3, 0x7EAF, - 0x8822, 0x6233, 0x7EF0, 0x75B5, 0x8328, 0x78C1, 0x96CC, 0x8F9E, - 0x6148, 0x74F7, 0x8BCD, 0x6B64, 0x523A, 0x8D50, 0x6B21, 0x806A, - 0x8471, 0x56F1, 0x5306, 0x4ECE, 0x4E1B, 0x51D1, 0x7C97, 0x918B, - 0x7C07, 0x4FC3, 0x8E7F, 0x7BE1, 0x7A9C, 0x6467, 0x5D14, 0x50AC, - 0x8106, 0x7601, 0x7CB9, 0x6DEC, 0x7FE0, 0x6751, 0x5B58, 0x5BF8, - 0x78CB, 0x64AE, 0x6413, 0x63AA, 0x632B, 0x9519, 0x642D, 0x8FBE, - 0x7B54, 0x7629, 0x6253, 0x5927, 0x5446, 0x6B79, 0x50A3, 0x6234, - 0x5E26, 0x6B86, 0x4EE3, 0x8D37, 0x888B, 0x5F85, 0x902E, 0, -plane b5 -at 0x40 - 0x790D, 0x790E, 0x790F, 0x7910, 0x7911, 0x7912, 0x7914, 0x7915, - 0x7916, 0x7917, 0x7918, 0x7919, 0x791A, 0x791B, 0x791C, 0x791D, - 0x791F, 0x7920, 0x7921, 0x7922, 0x7923, 0x7925, 0x7926, 0x7927, - 0x7928, 0x7929, 0x792A, 0x792B, 0x792C, 0x792D, 0x792E, 0x792F, - 0x7930, 0x7931, 0x7932, 0x7933, 0x7935, 0x7936, 0x7937, 0x7938, - 0x7939, 0x793D, 0x793F, 0x7942, 0x7943, 0x7944, 0x7945, 0x7947, - 0x794A, 0x794B, 0x794C, 0x794D, 0x794E, 0x794F, 0x7950, 0x7951, - 0x7952, 0x7954, 0x7955, 0x7958, 0x7959, 0x7961, 0x7963, 0, - 0x7964, 0x7966, 0x7969, 0x796A, 0x796B, 0x796C, 0x796E, 0x7970, - 0x7971, 0x7972, 0x7973, 0x7974, 0x7975, 0x7976, 0x7979, 0x797B, - 0x797C, 0x797D, 0x797E, 0x797F, 0x7982, 0x7983, 0x7986, 0x7987, - 0x7988, 0x7989, 0x798B, 0x798C, 0x798D, 0x798E, 0x7990, 0x7991, - 0x7992, 0x6020, 0x803D, 0x62C5, 0x4E39, 0x5355, 0x90F8, 0x63B8, - 0x80C6, 0x65E6, 0x6C2E, 0x4F46, 0x60EE, 0x6DE1, 0x8BDE, 0x5F39, - 0x86CB, 0x5F53, 0x6321, 0x515A, 0x8361, 0x6863, 0x5200, 0x6363, - 0x8E48, 0x5012, 0x5C9B, 0x7977, 0x5BFC, 0x5230, 0x7A3B, 0x60BC, - 0x9053, 0x76D7, 0x5FB7, 0x5F97, 0x7684, 0x8E6C, 0x706F, 0x767B, - 0x7B49, 0x77AA, 0x51F3, 0x9093, 0x5824, 0x4F4E, 0x6EF4, 0x8FEA, - 0x654C, 0x7B1B, 0x72C4, 0x6DA4, 0x7FDF, 0x5AE1, 0x62B5, 0x5E95, - 0x5730, 0x8482, 0x7B2C, 0x5E1D, 0x5F1F, 0x9012, 0x7F14, 0x98A0, - 0x6382, 0x6EC7, 0x7898, 0x70B9, 0x5178, 0x975B, 0x57AB, 0x7535, - 0x4F43, 0x7538, 0x5E97, 0x60E6, 0x5960, 0x6DC0, 0x6BBF, 0x7889, - 0x53FC, 0x96D5, 0x51CB, 0x5201, 0x6389, 0x540A, 0x9493, 0x8C03, - 0x8DCC, 0x7239, 0x789F, 0x8776, 0x8FED, 0x8C0D, 0x53E0, 0, -plane b6 -at 0x40 - 0x7993, 0x7994, 0x7995, 0x7996, 0x7997, 0x7998, 0x7999, 0x799B, - 0x799C, 0x799D, 0x799E, 0x799F, 0x79A0, 0x79A1, 0x79A2, 0x79A3, - 0x79A4, 0x79A5, 0x79A6, 0x79A8, 0x79A9, 0x79AA, 0x79AB, 0x79AC, - 0x79AD, 0x79AE, 0x79AF, 0x79B0, 0x79B1, 0x79B2, 0x79B4, 0x79B5, - 0x79B6, 0x79B7, 0x79B8, 0x79BC, 0x79BF, 0x79C2, 0x79C4, 0x79C5, - 0x79C7, 0x79C8, 0x79CA, 0x79CC, 0x79CE, 0x79CF, 0x79D0, 0x79D3, - 0x79D4, 0x79D6, 0x79D7, 0x79D9, 0x79DA, 0x79DB, 0x79DC, 0x79DD, - 0x79DE, 0x79E0, 0x79E1, 0x79E2, 0x79E5, 0x79E8, 0x79EA, 0, - 0x79EC, 0x79EE, 0x79F1, 0x79F2, 0x79F3, 0x79F4, 0x79F5, 0x79F6, - 0x79F7, 0x79F9, 0x79FA, 0x79FC, 0x79FE, 0x79FF, 0x7A01, 0x7A04, - 0x7A05, 0x7A07, 0x7A08, 0x7A09, 0x7A0A, 0x7A0C, 0x7A0F, 0x7A10, - 0x7A11, 0x7A12, 0x7A13, 0x7A15, 0x7A16, 0x7A18, 0x7A19, 0x7A1B, - 0x7A1C, 0x4E01, 0x76EF, 0x53EE, 0x9489, 0x9876, 0x9F0E, 0x952D, - 0x5B9A, 0x8BA2, 0x4E22, 0x4E1C, 0x51AC, 0x8463, 0x61C2, 0x52A8, - 0x680B, 0x4F97, 0x606B, 0x51BB, 0x6D1E, 0x515C, 0x6296, 0x6597, - 0x9661, 0x8C46, 0x9017, 0x75D8, 0x90FD, 0x7763, 0x6BD2, 0x728A, - 0x72EC, 0x8BFB, 0x5835, 0x7779, 0x8D4C, 0x675C, 0x9540, 0x809A, - 0x5EA6, 0x6E21, 0x5992, 0x7AEF, 0x77ED, 0x953B, 0x6BB5, 0x65AD, - 0x7F0E, 0x5806, 0x5151, 0x961F, 0x5BF9, 0x58A9, 0x5428, 0x8E72, - 0x6566, 0x987F, 0x56E4, 0x949D, 0x76FE, 0x9041, 0x6387, 0x54C6, - 0x591A, 0x593A, 0x579B, 0x8EB2, 0x6735, 0x8DFA, 0x8235, 0x5241, - 0x60F0, 0x5815, 0x86FE, 0x5CE8, 0x9E45, 0x4FC4, 0x989D, 0x8BB9, - 0x5A25, 0x6076, 0x5384, 0x627C, 0x904F, 0x9102, 0x997F, 0x6069, - 0x800C, 0x513F, 0x8033, 0x5C14, 0x9975, 0x6D31, 0x4E8C, 0, -plane b7 -at 0x40 - 0x7A1D, 0x7A1F, 0x7A21, 0x7A22, 0x7A24, 0x7A25, 0x7A26, 0x7A27, - 0x7A28, 0x7A29, 0x7A2A, 0x7A2B, 0x7A2C, 0x7A2D, 0x7A2E, 0x7A2F, - 0x7A30, 0x7A31, 0x7A32, 0x7A34, 0x7A35, 0x7A36, 0x7A38, 0x7A3A, - 0x7A3E, 0x7A40, 0x7A41, 0x7A42, 0x7A43, 0x7A44, 0x7A45, 0x7A47, - 0x7A48, 0x7A49, 0x7A4A, 0x7A4B, 0x7A4C, 0x7A4D, 0x7A4E, 0x7A4F, - 0x7A50, 0x7A52, 0x7A53, 0x7A54, 0x7A55, 0x7A56, 0x7A58, 0x7A59, - 0x7A5A, 0x7A5B, 0x7A5C, 0x7A5D, 0x7A5E, 0x7A5F, 0x7A60, 0x7A61, - 0x7A62, 0x7A63, 0x7A64, 0x7A65, 0x7A66, 0x7A67, 0x7A68, 0, - 0x7A69, 0x7A6A, 0x7A6B, 0x7A6C, 0x7A6D, 0x7A6E, 0x7A6F, 0x7A71, - 0x7A72, 0x7A73, 0x7A75, 0x7A7B, 0x7A7C, 0x7A7D, 0x7A7E, 0x7A82, - 0x7A85, 0x7A87, 0x7A89, 0x7A8A, 0x7A8B, 0x7A8C, 0x7A8E, 0x7A8F, - 0x7A90, 0x7A93, 0x7A94, 0x7A99, 0x7A9A, 0x7A9B, 0x7A9E, 0x7AA1, - 0x7AA2, 0x8D30, 0x53D1, 0x7F5A, 0x7B4F, 0x4F10, 0x4E4F, 0x9600, - 0x6CD5, 0x73D0, 0x85E9, 0x5E06, 0x756A, 0x7FFB, 0x6A0A, 0x77FE, - 0x9492, 0x7E41, 0x51E1, 0x70E6, 0x53CD, 0x8FD4, 0x8303, 0x8D29, - 0x72AF, 0x996D, 0x6CDB, 0x574A, 0x82B3, 0x65B9, 0x80AA, 0x623F, - 0x9632, 0x59A8, 0x4EFF, 0x8BBF, 0x7EBA, 0x653E, 0x83F2, 0x975E, - 0x5561, 0x98DE, 0x80A5, 0x532A, 0x8BFD, 0x5420, 0x80BA, 0x5E9F, - 0x6CB8, 0x8D39, 0x82AC, 0x915A, 0x5429, 0x6C1B, 0x5206, 0x7EB7, - 0x575F, 0x711A, 0x6C7E, 0x7C89, 0x594B, 0x4EFD, 0x5FFF, 0x6124, - 0x7CAA, 0x4E30, 0x5C01, 0x67AB, 0x8702, 0x5CF0, 0x950B, 0x98CE, - 0x75AF, 0x70FD, 0x9022, 0x51AF, 0x7F1D, 0x8BBD, 0x5949, 0x51E4, - 0x4F5B, 0x5426, 0x592B, 0x6577, 0x80A4, 0x5B75, 0x6276, 0x62C2, - 0x8F90, 0x5E45, 0x6C1F, 0x7B26, 0x4F0F, 0x4FD8, 0x670D, 0, -plane b8 -at 0x40 - 0x7AA3, 0x7AA4, 0x7AA7, 0x7AA9, 0x7AAA, 0x7AAB, 0x7AAE, 0x7AAF, - 0x7AB0, 0x7AB1, 0x7AB2, 0x7AB4, 0x7AB5, 0x7AB6, 0x7AB7, 0x7AB8, - 0x7AB9, 0x7ABA, 0x7ABB, 0x7ABC, 0x7ABD, 0x7ABE, 0x7AC0, 0x7AC1, - 0x7AC2, 0x7AC3, 0x7AC4, 0x7AC5, 0x7AC6, 0x7AC7, 0x7AC8, 0x7AC9, - 0x7ACA, 0x7ACC, 0x7ACD, 0x7ACE, 0x7ACF, 0x7AD0, 0x7AD1, 0x7AD2, - 0x7AD3, 0x7AD4, 0x7AD5, 0x7AD7, 0x7AD8, 0x7ADA, 0x7ADB, 0x7ADC, - 0x7ADD, 0x7AE1, 0x7AE2, 0x7AE4, 0x7AE7, 0x7AE8, 0x7AE9, 0x7AEA, - 0x7AEB, 0x7AEC, 0x7AEE, 0x7AF0, 0x7AF1, 0x7AF2, 0x7AF3, 0, - 0x7AF4, 0x7AF5, 0x7AF6, 0x7AF7, 0x7AF8, 0x7AFB, 0x7AFC, 0x7AFE, - 0x7B00, 0x7B01, 0x7B02, 0x7B05, 0x7B07, 0x7B09, 0x7B0C, 0x7B0D, - 0x7B0E, 0x7B10, 0x7B12, 0x7B13, 0x7B16, 0x7B17, 0x7B18, 0x7B1A, - 0x7B1C, 0x7B1D, 0x7B1F, 0x7B21, 0x7B22, 0x7B23, 0x7B27, 0x7B29, - 0x7B2D, 0x6D6E, 0x6DAA, 0x798F, 0x88B1, 0x5F17, 0x752B, 0x629A, - 0x8F85, 0x4FEF, 0x91DC, 0x65A7, 0x812F, 0x8151, 0x5E9C, 0x8150, - 0x8D74, 0x526F, 0x8986, 0x8D4B, 0x590D, 0x5085, 0x4ED8, 0x961C, - 0x7236, 0x8179, 0x8D1F, 0x5BCC, 0x8BA3, 0x9644, 0x5987, 0x7F1A, - 0x5490, 0x5676, 0x560E, 0x8BE5, 0x6539, 0x6982, 0x9499, 0x76D6, - 0x6E89, 0x5E72, 0x7518, 0x6746, 0x67D1, 0x7AFF, 0x809D, 0x8D76, - 0x611F, 0x79C6, 0x6562, 0x8D63, 0x5188, 0x521A, 0x94A2, 0x7F38, - 0x809B, 0x7EB2, 0x5C97, 0x6E2F, 0x6760, 0x7BD9, 0x768B, 0x9AD8, - 0x818F, 0x7F94, 0x7CD5, 0x641E, 0x9550, 0x7A3F, 0x544A, 0x54E5, - 0x6B4C, 0x6401, 0x6208, 0x9E3D, 0x80F3, 0x7599, 0x5272, 0x9769, - 0x845B, 0x683C, 0x86E4, 0x9601, 0x9694, 0x94EC, 0x4E2A, 0x5404, - 0x7ED9, 0x6839, 0x8DDF, 0x8015, 0x66F4, 0x5E9A, 0x7FB9, 0, -plane b9 -at 0x40 - 0x7B2F, 0x7B30, 0x7B32, 0x7B34, 0x7B35, 0x7B36, 0x7B37, 0x7B39, - 0x7B3B, 0x7B3D, 0x7B3F, 0x7B40, 0x7B41, 0x7B42, 0x7B43, 0x7B44, - 0x7B46, 0x7B48, 0x7B4A, 0x7B4D, 0x7B4E, 0x7B53, 0x7B55, 0x7B57, - 0x7B59, 0x7B5C, 0x7B5E, 0x7B5F, 0x7B61, 0x7B63, 0x7B64, 0x7B65, - 0x7B66, 0x7B67, 0x7B68, 0x7B69, 0x7B6A, 0x7B6B, 0x7B6C, 0x7B6D, - 0x7B6F, 0x7B70, 0x7B73, 0x7B74, 0x7B76, 0x7B78, 0x7B7A, 0x7B7C, - 0x7B7D, 0x7B7F, 0x7B81, 0x7B82, 0x7B83, 0x7B84, 0x7B86, 0x7B87, - 0x7B88, 0x7B89, 0x7B8A, 0x7B8B, 0x7B8C, 0x7B8E, 0x7B8F, 0, - 0x7B91, 0x7B92, 0x7B93, 0x7B96, 0x7B98, 0x7B99, 0x7B9A, 0x7B9B, - 0x7B9E, 0x7B9F, 0x7BA0, 0x7BA3, 0x7BA4, 0x7BA5, 0x7BAE, 0x7BAF, - 0x7BB0, 0x7BB2, 0x7BB3, 0x7BB5, 0x7BB6, 0x7BB7, 0x7BB9, 0x7BBA, - 0x7BBB, 0x7BBC, 0x7BBD, 0x7BBE, 0x7BBF, 0x7BC0, 0x7BC2, 0x7BC3, - 0x7BC4, 0x57C2, 0x803F, 0x6897, 0x5DE5, 0x653B, 0x529F, 0x606D, - 0x9F9A, 0x4F9B, 0x8EAC, 0x516C, 0x5BAB, 0x5F13, 0x5DE9, 0x6C5E, - 0x62F1, 0x8D21, 0x5171, 0x94A9, 0x52FE, 0x6C9F, 0x82DF, 0x72D7, - 0x57A2, 0x6784, 0x8D2D, 0x591F, 0x8F9C, 0x83C7, 0x5495, 0x7B8D, - 0x4F30, 0x6CBD, 0x5B64, 0x59D1, 0x9F13, 0x53E4, 0x86CA, 0x9AA8, - 0x8C37, 0x80A1, 0x6545, 0x987E, 0x56FA, 0x96C7, 0x522E, 0x74DC, - 0x5250, 0x5BE1, 0x6302, 0x8902, 0x4E56, 0x62D0, 0x602A, 0x68FA, - 0x5173, 0x5B98, 0x51A0, 0x89C2, 0x7BA1, 0x9986, 0x7F50, 0x60EF, - 0x704C, 0x8D2F, 0x5149, 0x5E7F, 0x901B, 0x7470, 0x89C4, 0x572D, - 0x7845, 0x5F52, 0x9F9F, 0x95FA, 0x8F68, 0x9B3C, 0x8BE1, 0x7678, - 0x6842, 0x67DC, 0x8DEA, 0x8D35, 0x523D, 0x8F8A, 0x6EDA, 0x68CD, - 0x9505, 0x90ED, 0x56FD, 0x679C, 0x88F9, 0x8FC7, 0x54C8, 0, -plane ba -at 0x40 - 0x7BC5, 0x7BC8, 0x7BC9, 0x7BCA, 0x7BCB, 0x7BCD, 0x7BCE, 0x7BCF, - 0x7BD0, 0x7BD2, 0x7BD4, 0x7BD5, 0x7BD6, 0x7BD7, 0x7BD8, 0x7BDB, - 0x7BDC, 0x7BDE, 0x7BDF, 0x7BE0, 0x7BE2, 0x7BE3, 0x7BE4, 0x7BE7, - 0x7BE8, 0x7BE9, 0x7BEB, 0x7BEC, 0x7BED, 0x7BEF, 0x7BF0, 0x7BF2, - 0x7BF3, 0x7BF4, 0x7BF5, 0x7BF6, 0x7BF8, 0x7BF9, 0x7BFA, 0x7BFB, - 0x7BFD, 0x7BFF, 0x7C00, 0x7C01, 0x7C02, 0x7C03, 0x7C04, 0x7C05, - 0x7C06, 0x7C08, 0x7C09, 0x7C0A, 0x7C0D, 0x7C0E, 0x7C10, 0x7C11, - 0x7C12, 0x7C13, 0x7C14, 0x7C15, 0x7C17, 0x7C18, 0x7C19, 0, - 0x7C1A, 0x7C1B, 0x7C1C, 0x7C1D, 0x7C1E, 0x7C20, 0x7C21, 0x7C22, - 0x7C23, 0x7C24, 0x7C25, 0x7C28, 0x7C29, 0x7C2B, 0x7C2C, 0x7C2D, - 0x7C2E, 0x7C2F, 0x7C30, 0x7C31, 0x7C32, 0x7C33, 0x7C34, 0x7C35, - 0x7C36, 0x7C37, 0x7C39, 0x7C3A, 0x7C3B, 0x7C3C, 0x7C3D, 0x7C3E, - 0x7C42, 0x9AB8, 0x5B69, 0x6D77, 0x6C26, 0x4EA5, 0x5BB3, 0x9A87, - 0x9163, 0x61A8, 0x90AF, 0x97E9, 0x542B, 0x6DB5, 0x5BD2, 0x51FD, - 0x558A, 0x7F55, 0x7FF0, 0x64BC, 0x634D, 0x65F1, 0x61BE, 0x608D, - 0x710A, 0x6C57, 0x6C49, 0x592F, 0x676D, 0x822A, 0x58D5, 0x568E, - 0x8C6A, 0x6BEB, 0x90DD, 0x597D, 0x8017, 0x53F7, 0x6D69, 0x5475, - 0x559D, 0x8377, 0x83CF, 0x6838, 0x79BE, 0x548C, 0x4F55, 0x5408, - 0x76D2, 0x8C89, 0x9602, 0x6CB3, 0x6DB8, 0x8D6B, 0x8910, 0x9E64, - 0x8D3A, 0x563F, 0x9ED1, 0x75D5, 0x5F88, 0x72E0, 0x6068, 0x54FC, - 0x4EA8, 0x6A2A, 0x8861, 0x6052, 0x8F70, 0x54C4, 0x70D8, 0x8679, - 0x9E3F, 0x6D2A, 0x5B8F, 0x5F18, 0x7EA2, 0x5589, 0x4FAF, 0x7334, - 0x543C, 0x539A, 0x5019, 0x540E, 0x547C, 0x4E4E, 0x5FFD, 0x745A, - 0x58F6, 0x846B, 0x80E1, 0x8774, 0x72D0, 0x7CCA, 0x6E56, 0, -plane bb -at 0x40 - 0x7C43, 0x7C44, 0x7C45, 0x7C46, 0x7C47, 0x7C48, 0x7C49, 0x7C4A, - 0x7C4B, 0x7C4C, 0x7C4E, 0x7C4F, 0x7C50, 0x7C51, 0x7C52, 0x7C53, - 0x7C54, 0x7C55, 0x7C56, 0x7C57, 0x7C58, 0x7C59, 0x7C5A, 0x7C5B, - 0x7C5C, 0x7C5D, 0x7C5E, 0x7C5F, 0x7C60, 0x7C61, 0x7C62, 0x7C63, - 0x7C64, 0x7C65, 0x7C66, 0x7C67, 0x7C68, 0x7C69, 0x7C6A, 0x7C6B, - 0x7C6C, 0x7C6D, 0x7C6E, 0x7C6F, 0x7C70, 0x7C71, 0x7C72, 0x7C75, - 0x7C76, 0x7C77, 0x7C78, 0x7C79, 0x7C7A, 0x7C7E, 0x7C7F, 0x7C80, - 0x7C81, 0x7C82, 0x7C83, 0x7C84, 0x7C85, 0x7C86, 0x7C87, 0, - 0x7C88, 0x7C8A, 0x7C8B, 0x7C8C, 0x7C8D, 0x7C8E, 0x7C8F, 0x7C90, - 0x7C93, 0x7C94, 0x7C96, 0x7C99, 0x7C9A, 0x7C9B, 0x7CA0, 0x7CA1, - 0x7CA3, 0x7CA6, 0x7CA7, 0x7CA8, 0x7CA9, 0x7CAB, 0x7CAC, 0x7CAD, - 0x7CAF, 0x7CB0, 0x7CB4, 0x7CB5, 0x7CB6, 0x7CB7, 0x7CB8, 0x7CBA, - 0x7CBB, 0x5F27, 0x864E, 0x552C, 0x62A4, 0x4E92, 0x6CAA, 0x6237, - 0x82B1, 0x54D7, 0x534E, 0x733E, 0x6ED1, 0x753B, 0x5212, 0x5316, - 0x8BDD, 0x69D0, 0x5F8A, 0x6000, 0x6DEE, 0x574F, 0x6B22, 0x73AF, - 0x6853, 0x8FD8, 0x7F13, 0x6362, 0x60A3, 0x5524, 0x75EA, 0x8C62, - 0x7115, 0x6DA3, 0x5BA6, 0x5E7B, 0x8352, 0x614C, 0x9EC4, 0x78FA, - 0x8757, 0x7C27, 0x7687, 0x51F0, 0x60F6, 0x714C, 0x6643, 0x5E4C, - 0x604D, 0x8C0E, 0x7070, 0x6325, 0x8F89, 0x5FBD, 0x6062, 0x86D4, - 0x56DE, 0x6BC1, 0x6094, 0x6167, 0x5349, 0x60E0, 0x6666, 0x8D3F, - 0x79FD, 0x4F1A, 0x70E9, 0x6C47, 0x8BB3, 0x8BF2, 0x7ED8, 0x8364, - 0x660F, 0x5A5A, 0x9B42, 0x6D51, 0x6DF7, 0x8C41, 0x6D3B, 0x4F19, - 0x706B, 0x83B7, 0x6216, 0x60D1, 0x970D, 0x8D27, 0x7978, 0x51FB, - 0x573E, 0x57FA, 0x673A, 0x7578, 0x7A3D, 0x79EF, 0x7B95, 0, -plane bc -at 0x40 - 0x7CBF, 0x7CC0, 0x7CC2, 0x7CC3, 0x7CC4, 0x7CC6, 0x7CC9, 0x7CCB, - 0x7CCE, 0x7CCF, 0x7CD0, 0x7CD1, 0x7CD2, 0x7CD3, 0x7CD4, 0x7CD8, - 0x7CDA, 0x7CDB, 0x7CDD, 0x7CDE, 0x7CE1, 0x7CE2, 0x7CE3, 0x7CE4, - 0x7CE5, 0x7CE6, 0x7CE7, 0x7CE9, 0x7CEA, 0x7CEB, 0x7CEC, 0x7CED, - 0x7CEE, 0x7CF0, 0x7CF1, 0x7CF2, 0x7CF3, 0x7CF4, 0x7CF5, 0x7CF6, - 0x7CF7, 0x7CF9, 0x7CFA, 0x7CFC, 0x7CFD, 0x7CFE, 0x7CFF, 0x7D00, - 0x7D01, 0x7D02, 0x7D03, 0x7D04, 0x7D05, 0x7D06, 0x7D07, 0x7D08, - 0x7D09, 0x7D0B, 0x7D0C, 0x7D0D, 0x7D0E, 0x7D0F, 0x7D10, 0, - 0x7D11, 0x7D12, 0x7D13, 0x7D14, 0x7D15, 0x7D16, 0x7D17, 0x7D18, - 0x7D19, 0x7D1A, 0x7D1B, 0x7D1C, 0x7D1D, 0x7D1E, 0x7D1F, 0x7D21, - 0x7D23, 0x7D24, 0x7D25, 0x7D26, 0x7D28, 0x7D29, 0x7D2A, 0x7D2C, - 0x7D2D, 0x7D2E, 0x7D30, 0x7D31, 0x7D32, 0x7D33, 0x7D34, 0x7D35, - 0x7D36, 0x808C, 0x9965, 0x8FF9, 0x6FC0, 0x8BA5, 0x9E21, 0x59EC, - 0x7EE9, 0x7F09, 0x5409, 0x6781, 0x68D8, 0x8F91, 0x7C4D, 0x96C6, - 0x53CA, 0x6025, 0x75BE, 0x6C72, 0x5373, 0x5AC9, 0x7EA7, 0x6324, - 0x51E0, 0x810A, 0x5DF1, 0x84DF, 0x6280, 0x5180, 0x5B63, 0x4F0E, - 0x796D, 0x5242, 0x60B8, 0x6D4E, 0x5BC4, 0x5BC2, 0x8BA1, 0x8BB0, - 0x65E2, 0x5FCC, 0x9645, 0x5993, 0x7EE7, 0x7EAA, 0x5609, 0x67B7, - 0x5939, 0x4F73, 0x5BB6, 0x52A0, 0x835A, 0x988A, 0x8D3E, 0x7532, - 0x94BE, 0x5047, 0x7A3C, 0x4EF7, 0x67B6, 0x9A7E, 0x5AC1, 0x6B7C, - 0x76D1, 0x575A, 0x5C16, 0x7B3A, 0x95F4, 0x714E, 0x517C, 0x80A9, - 0x8270, 0x5978, 0x7F04, 0x8327, 0x68C0, 0x67EC, 0x78B1, 0x7877, - 0x62E3, 0x6361, 0x7B80, 0x4FED, 0x526A, 0x51CF, 0x8350, 0x69DB, - 0x9274, 0x8DF5, 0x8D31, 0x89C1, 0x952E, 0x7BAD, 0x4EF6, 0, -plane bd -at 0x40 - 0x7D37, 0x7D38, 0x7D39, 0x7D3A, 0x7D3B, 0x7D3C, 0x7D3D, 0x7D3E, - 0x7D3F, 0x7D40, 0x7D41, 0x7D42, 0x7D43, 0x7D44, 0x7D45, 0x7D46, - 0x7D47, 0x7D48, 0x7D49, 0x7D4A, 0x7D4B, 0x7D4C, 0x7D4D, 0x7D4E, - 0x7D4F, 0x7D50, 0x7D51, 0x7D52, 0x7D53, 0x7D54, 0x7D55, 0x7D56, - 0x7D57, 0x7D58, 0x7D59, 0x7D5A, 0x7D5B, 0x7D5C, 0x7D5D, 0x7D5E, - 0x7D5F, 0x7D60, 0x7D61, 0x7D62, 0x7D63, 0x7D64, 0x7D65, 0x7D66, - 0x7D67, 0x7D68, 0x7D69, 0x7D6A, 0x7D6B, 0x7D6C, 0x7D6D, 0x7D6F, - 0x7D70, 0x7D71, 0x7D72, 0x7D73, 0x7D74, 0x7D75, 0x7D76, 0, - 0x7D78, 0x7D79, 0x7D7A, 0x7D7B, 0x7D7C, 0x7D7D, 0x7D7E, 0x7D7F, - 0x7D80, 0x7D81, 0x7D82, 0x7D83, 0x7D84, 0x7D85, 0x7D86, 0x7D87, - 0x7D88, 0x7D89, 0x7D8A, 0x7D8B, 0x7D8C, 0x7D8D, 0x7D8E, 0x7D8F, - 0x7D90, 0x7D91, 0x7D92, 0x7D93, 0x7D94, 0x7D95, 0x7D96, 0x7D97, - 0x7D98, 0x5065, 0x8230, 0x5251, 0x996F, 0x6E10, 0x6E85, 0x6DA7, - 0x5EFA, 0x50F5, 0x59DC, 0x5C06, 0x6D46, 0x6C5F, 0x7586, 0x848B, - 0x6868, 0x5956, 0x8BB2, 0x5320, 0x9171, 0x964D, 0x8549, 0x6912, - 0x7901, 0x7126, 0x80F6, 0x4EA4, 0x90CA, 0x6D47, 0x9A84, 0x5A07, - 0x56BC, 0x6405, 0x94F0, 0x77EB, 0x4FA5, 0x811A, 0x72E1, 0x89D2, - 0x997A, 0x7F34, 0x7EDE, 0x527F, 0x6559, 0x9175, 0x8F7F, 0x8F83, - 0x53EB, 0x7A96, 0x63ED, 0x63A5, 0x7686, 0x79F8, 0x8857, 0x9636, - 0x622A, 0x52AB, 0x8282, 0x6854, 0x6770, 0x6377, 0x776B, 0x7AED, - 0x6D01, 0x7ED3, 0x89E3, 0x59D0, 0x6212, 0x85C9, 0x82A5, 0x754C, - 0x501F, 0x4ECB, 0x75A5, 0x8BEB, 0x5C4A, 0x5DFE, 0x7B4B, 0x65A4, - 0x91D1, 0x4ECA, 0x6D25, 0x895F, 0x7D27, 0x9526, 0x4EC5, 0x8C28, - 0x8FDB, 0x9773, 0x664B, 0x7981, 0x8FD1, 0x70EC, 0x6D78, 0, -plane be -at 0x40 - 0x7D99, 0x7D9A, 0x7D9B, 0x7D9C, 0x7D9D, 0x7D9E, 0x7D9F, 0x7DA0, - 0x7DA1, 0x7DA2, 0x7DA3, 0x7DA4, 0x7DA5, 0x7DA7, 0x7DA8, 0x7DA9, - 0x7DAA, 0x7DAB, 0x7DAC, 0x7DAD, 0x7DAF, 0x7DB0, 0x7DB1, 0x7DB2, - 0x7DB3, 0x7DB4, 0x7DB5, 0x7DB6, 0x7DB7, 0x7DB8, 0x7DB9, 0x7DBA, - 0x7DBB, 0x7DBC, 0x7DBD, 0x7DBE, 0x7DBF, 0x7DC0, 0x7DC1, 0x7DC2, - 0x7DC3, 0x7DC4, 0x7DC5, 0x7DC6, 0x7DC7, 0x7DC8, 0x7DC9, 0x7DCA, - 0x7DCB, 0x7DCC, 0x7DCD, 0x7DCE, 0x7DCF, 0x7DD0, 0x7DD1, 0x7DD2, - 0x7DD3, 0x7DD4, 0x7DD5, 0x7DD6, 0x7DD7, 0x7DD8, 0x7DD9, 0, - 0x7DDA, 0x7DDB, 0x7DDC, 0x7DDD, 0x7DDE, 0x7DDF, 0x7DE0, 0x7DE1, - 0x7DE2, 0x7DE3, 0x7DE4, 0x7DE5, 0x7DE6, 0x7DE7, 0x7DE8, 0x7DE9, - 0x7DEA, 0x7DEB, 0x7DEC, 0x7DED, 0x7DEE, 0x7DEF, 0x7DF0, 0x7DF1, - 0x7DF2, 0x7DF3, 0x7DF4, 0x7DF5, 0x7DF6, 0x7DF7, 0x7DF8, 0x7DF9, - 0x7DFA, 0x5C3D, 0x52B2, 0x8346, 0x5162, 0x830E, 0x775B, 0x6676, - 0x9CB8, 0x4EAC, 0x60CA, 0x7CBE, 0x7CB3, 0x7ECF, 0x4E95, 0x8B66, - 0x666F, 0x9888, 0x9759, 0x5883, 0x656C, 0x955C, 0x5F84, 0x75C9, - 0x9756, 0x7ADF, 0x7ADE, 0x51C0, 0x70AF, 0x7A98, 0x63EA, 0x7A76, - 0x7EA0, 0x7396, 0x97ED, 0x4E45, 0x7078, 0x4E5D, 0x9152, 0x53A9, - 0x6551, 0x65E7, 0x81FC, 0x8205, 0x548E, 0x5C31, 0x759A, 0x97A0, - 0x62D8, 0x72D9, 0x75BD, 0x5C45, 0x9A79, 0x83CA, 0x5C40, 0x5480, - 0x77E9, 0x4E3E, 0x6CAE, 0x805A, 0x62D2, 0x636E, 0x5DE8, 0x5177, - 0x8DDD, 0x8E1E, 0x952F, 0x4FF1, 0x53E5, 0x60E7, 0x70AC, 0x5267, - 0x6350, 0x9E43, 0x5A1F, 0x5026, 0x7737, 0x5377, 0x7EE2, 0x6485, - 0x652B, 0x6289, 0x6398, 0x5014, 0x7235, 0x89C9, 0x51B3, 0x8BC0, - 0x7EDD, 0x5747, 0x83CC, 0x94A7, 0x519B, 0x541B, 0x5CFB, 0, -plane bf -at 0x40 - 0x7DFB, 0x7DFC, 0x7DFD, 0x7DFE, 0x7DFF, 0x7E00, 0x7E01, 0x7E02, - 0x7E03, 0x7E04, 0x7E05, 0x7E06, 0x7E07, 0x7E08, 0x7E09, 0x7E0A, - 0x7E0B, 0x7E0C, 0x7E0D, 0x7E0E, 0x7E0F, 0x7E10, 0x7E11, 0x7E12, - 0x7E13, 0x7E14, 0x7E15, 0x7E16, 0x7E17, 0x7E18, 0x7E19, 0x7E1A, - 0x7E1B, 0x7E1C, 0x7E1D, 0x7E1E, 0x7E1F, 0x7E20, 0x7E21, 0x7E22, - 0x7E23, 0x7E24, 0x7E25, 0x7E26, 0x7E27, 0x7E28, 0x7E29, 0x7E2A, - 0x7E2B, 0x7E2C, 0x7E2D, 0x7E2E, 0x7E2F, 0x7E30, 0x7E31, 0x7E32, - 0x7E33, 0x7E34, 0x7E35, 0x7E36, 0x7E37, 0x7E38, 0x7E39, 0, - 0x7E3A, 0x7E3C, 0x7E3D, 0x7E3E, 0x7E3F, 0x7E40, 0x7E42, 0x7E43, - 0x7E44, 0x7E45, 0x7E46, 0x7E48, 0x7E49, 0x7E4A, 0x7E4B, 0x7E4C, - 0x7E4D, 0x7E4E, 0x7E4F, 0x7E50, 0x7E51, 0x7E52, 0x7E53, 0x7E54, - 0x7E55, 0x7E56, 0x7E57, 0x7E58, 0x7E59, 0x7E5A, 0x7E5B, 0x7E5C, - 0x7E5D, 0x4FCA, 0x7AE3, 0x6D5A, 0x90E1, 0x9A8F, 0x5580, 0x5496, - 0x5361, 0x54AF, 0x5F00, 0x63E9, 0x6977, 0x51EF, 0x6168, 0x520A, - 0x582A, 0x52D8, 0x574E, 0x780D, 0x770B, 0x5EB7, 0x6177, 0x7CE0, - 0x625B, 0x6297, 0x4EA2, 0x7095, 0x8003, 0x62F7, 0x70E4, 0x9760, - 0x5777, 0x82DB, 0x67EF, 0x68F5, 0x78D5, 0x9897, 0x79D1, 0x58F3, - 0x54B3, 0x53EF, 0x6E34, 0x514B, 0x523B, 0x5BA2, 0x8BFE, 0x80AF, - 0x5543, 0x57A6, 0x6073, 0x5751, 0x542D, 0x7A7A, 0x6050, 0x5B54, - 0x63A7, 0x62A0, 0x53E3, 0x6263, 0x5BC7, 0x67AF, 0x54ED, 0x7A9F, - 0x82E6, 0x9177, 0x5E93, 0x88E4, 0x5938, 0x57AE, 0x630E, 0x8DE8, - 0x80EF, 0x5757, 0x7B77, 0x4FA9, 0x5FEB, 0x5BBD, 0x6B3E, 0x5321, - 0x7B50, 0x72C2, 0x6846, 0x77FF, 0x7736, 0x65F7, 0x51B5, 0x4E8F, - 0x76D4, 0x5CBF, 0x7AA5, 0x8475, 0x594E, 0x9B41, 0x5080, 0, -plane c0 -at 0x40 - 0x7E5E, 0x7E5F, 0x7E60, 0x7E61, 0x7E62, 0x7E63, 0x7E64, 0x7E65, - 0x7E66, 0x7E67, 0x7E68, 0x7E69, 0x7E6A, 0x7E6B, 0x7E6C, 0x7E6D, - 0x7E6E, 0x7E6F, 0x7E70, 0x7E71, 0x7E72, 0x7E73, 0x7E74, 0x7E75, - 0x7E76, 0x7E77, 0x7E78, 0x7E79, 0x7E7A, 0x7E7B, 0x7E7C, 0x7E7D, - 0x7E7E, 0x7E7F, 0x7E80, 0x7E81, 0x7E83, 0x7E84, 0x7E85, 0x7E86, - 0x7E87, 0x7E88, 0x7E89, 0x7E8A, 0x7E8B, 0x7E8C, 0x7E8D, 0x7E8E, - 0x7E8F, 0x7E90, 0x7E91, 0x7E92, 0x7E93, 0x7E94, 0x7E95, 0x7E96, - 0x7E97, 0x7E98, 0x7E99, 0x7E9A, 0x7E9C, 0x7E9D, 0x7E9E, 0, - 0x7EAE, 0x7EB4, 0x7EBB, 0x7EBC, 0x7ED6, 0x7EE4, 0x7EEC, 0x7EF9, - 0x7F0A, 0x7F10, 0x7F1E, 0x7F37, 0x7F39, 0x7F3B, 0x7F3C, 0x7F3D, - 0x7F3E, 0x7F3F, 0x7F40, 0x7F41, 0x7F43, 0x7F46, 0x7F47, 0x7F48, - 0x7F49, 0x7F4A, 0x7F4B, 0x7F4C, 0x7F4D, 0x7F4E, 0x7F4F, 0x7F52, - 0x7F53, 0x9988, 0x6127, 0x6E83, 0x5764, 0x6606, 0x6346, 0x56F0, - 0x62EC, 0x6269, 0x5ED3, 0x9614, 0x5783, 0x62C9, 0x5587, 0x8721, - 0x814A, 0x8FA3, 0x5566, 0x83B1, 0x6765, 0x8D56, 0x84DD, 0x5A6A, - 0x680F, 0x62E6, 0x7BEE, 0x9611, 0x5170, 0x6F9C, 0x8C30, 0x63FD, - 0x89C8, 0x61D2, 0x7F06, 0x70C2, 0x6EE5, 0x7405, 0x6994, 0x72FC, - 0x5ECA, 0x90CE, 0x6717, 0x6D6A, 0x635E, 0x52B3, 0x7262, 0x8001, - 0x4F6C, 0x59E5, 0x916A, 0x70D9, 0x6D9D, 0x52D2, 0x4E50, 0x96F7, - 0x956D, 0x857E, 0x78CA, 0x7D2F, 0x5121, 0x5792, 0x64C2, 0x808B, - 0x7C7B, 0x6CEA, 0x68F1, 0x695E, 0x51B7, 0x5398, 0x68A8, 0x7281, - 0x9ECE, 0x7BF1, 0x72F8, 0x79BB, 0x6F13, 0x7406, 0x674E, 0x91CC, - 0x9CA4, 0x793C, 0x8389, 0x8354, 0x540F, 0x6817, 0x4E3D, 0x5389, - 0x52B1, 0x783E, 0x5386, 0x5229, 0x5088, 0x4F8B, 0x4FD0, 0, -plane c1 -at 0x40 - 0x7F56, 0x7F59, 0x7F5B, 0x7F5C, 0x7F5D, 0x7F5E, 0x7F60, 0x7F63, - 0x7F64, 0x7F65, 0x7F66, 0x7F67, 0x7F6B, 0x7F6C, 0x7F6D, 0x7F6F, - 0x7F70, 0x7F73, 0x7F75, 0x7F76, 0x7F77, 0x7F78, 0x7F7A, 0x7F7B, - 0x7F7C, 0x7F7D, 0x7F7F, 0x7F80, 0x7F82, 0x7F83, 0x7F84, 0x7F85, - 0x7F86, 0x7F87, 0x7F88, 0x7F89, 0x7F8B, 0x7F8D, 0x7F8F, 0x7F90, - 0x7F91, 0x7F92, 0x7F93, 0x7F95, 0x7F96, 0x7F97, 0x7F98, 0x7F99, - 0x7F9B, 0x7F9C, 0x7FA0, 0x7FA2, 0x7FA3, 0x7FA5, 0x7FA6, 0x7FA8, - 0x7FA9, 0x7FAA, 0x7FAB, 0x7FAC, 0x7FAD, 0x7FAE, 0x7FB1, 0, - 0x7FB3, 0x7FB4, 0x7FB5, 0x7FB6, 0x7FB7, 0x7FBA, 0x7FBB, 0x7FBE, - 0x7FC0, 0x7FC2, 0x7FC3, 0x7FC4, 0x7FC6, 0x7FC7, 0x7FC8, 0x7FC9, - 0x7FCB, 0x7FCD, 0x7FCF, 0x7FD0, 0x7FD1, 0x7FD2, 0x7FD3, 0x7FD6, - 0x7FD7, 0x7FD9, 0x7FDA, 0x7FDB, 0x7FDC, 0x7FDD, 0x7FDE, 0x7FE2, - 0x7FE3, 0x75E2, 0x7ACB, 0x7C92, 0x6CA5, 0x96B6, 0x529B, 0x7483, - 0x54E9, 0x4FE9, 0x8054, 0x83B2, 0x8FDE, 0x9570, 0x5EC9, 0x601C, - 0x6D9F, 0x5E18, 0x655B, 0x8138, 0x94FE, 0x604B, 0x70BC, 0x7EC3, - 0x7CAE, 0x51C9, 0x6881, 0x7CB1, 0x826F, 0x4E24, 0x8F86, 0x91CF, - 0x667E, 0x4EAE, 0x8C05, 0x64A9, 0x804A, 0x50DA, 0x7597, 0x71CE, - 0x5BE5, 0x8FBD, 0x6F66, 0x4E86, 0x6482, 0x9563, 0x5ED6, 0x6599, - 0x5217, 0x88C2, 0x70C8, 0x52A3, 0x730E, 0x7433, 0x6797, 0x78F7, - 0x9716, 0x4E34, 0x90BB, 0x9CDE, 0x6DCB, 0x51DB, 0x8D41, 0x541D, - 0x62CE, 0x73B2, 0x83F1, 0x96F6, 0x9F84, 0x94C3, 0x4F36, 0x7F9A, - 0x51CC, 0x7075, 0x9675, 0x5CAD, 0x9886, 0x53E6, 0x4EE4, 0x6E9C, - 0x7409, 0x69B4, 0x786B, 0x998F, 0x7559, 0x5218, 0x7624, 0x6D41, - 0x67F3, 0x516D, 0x9F99, 0x804B, 0x5499, 0x7B3C, 0x7ABF, 0, -plane c2 -at 0x40 - 0x7FE4, 0x7FE7, 0x7FE8, 0x7FEA, 0x7FEB, 0x7FEC, 0x7FED, 0x7FEF, - 0x7FF2, 0x7FF4, 0x7FF5, 0x7FF6, 0x7FF7, 0x7FF8, 0x7FF9, 0x7FFA, - 0x7FFD, 0x7FFE, 0x7FFF, 0x8002, 0x8007, 0x8008, 0x8009, 0x800A, - 0x800E, 0x800F, 0x8011, 0x8013, 0x801A, 0x801B, 0x801D, 0x801E, - 0x801F, 0x8021, 0x8023, 0x8024, 0x802B, 0x802C, 0x802D, 0x802E, - 0x802F, 0x8030, 0x8032, 0x8034, 0x8039, 0x803A, 0x803C, 0x803E, - 0x8040, 0x8041, 0x8044, 0x8045, 0x8047, 0x8048, 0x8049, 0x804E, - 0x804F, 0x8050, 0x8051, 0x8053, 0x8055, 0x8056, 0x8057, 0, - 0x8059, 0x805B, 0x805C, 0x805D, 0x805E, 0x805F, 0x8060, 0x8061, - 0x8062, 0x8063, 0x8064, 0x8065, 0x8066, 0x8067, 0x8068, 0x806B, - 0x806C, 0x806D, 0x806E, 0x806F, 0x8070, 0x8072, 0x8073, 0x8074, - 0x8075, 0x8076, 0x8077, 0x8078, 0x8079, 0x807A, 0x807B, 0x807C, - 0x807D, 0x9686, 0x5784, 0x62E2, 0x9647, 0x697C, 0x5A04, 0x6402, - 0x7BD3, 0x6F0F, 0x964B, 0x82A6, 0x5362, 0x9885, 0x5E90, 0x7089, - 0x63B3, 0x5364, 0x864F, 0x9C81, 0x9E93, 0x788C, 0x9732, 0x8DEF, - 0x8D42, 0x9E7F, 0x6F5E, 0x7984, 0x5F55, 0x9646, 0x622E, 0x9A74, - 0x5415, 0x94DD, 0x4FA3, 0x65C5, 0x5C65, 0x5C61, 0x7F15, 0x8651, - 0x6C2F, 0x5F8B, 0x7387, 0x6EE4, 0x7EFF, 0x5CE6, 0x631B, 0x5B6A, - 0x6EE6, 0x5375, 0x4E71, 0x63A0, 0x7565, 0x62A1, 0x8F6E, 0x4F26, - 0x4ED1, 0x6CA6, 0x7EB6, 0x8BBA, 0x841D, 0x87BA, 0x7F57, 0x903B, - 0x9523, 0x7BA9, 0x9AA1, 0x88F8, 0x843D, 0x6D1B, 0x9A86, 0x7EDC, - 0x5988, 0x9EBB, 0x739B, 0x7801, 0x8682, 0x9A6C, 0x9A82, 0x561B, - 0x5417, 0x57CB, 0x4E70, 0x9EA6, 0x5356, 0x8FC8, 0x8109, 0x7792, - 0x9992, 0x86EE, 0x6EE1, 0x8513, 0x66FC, 0x6162, 0x6F2B, 0, -plane c3 -at 0x40 - 0x807E, 0x8081, 0x8082, 0x8085, 0x8088, 0x808A, 0x808D, 0x808E, - 0x808F, 0x8090, 0x8091, 0x8092, 0x8094, 0x8095, 0x8097, 0x8099, - 0x809E, 0x80A3, 0x80A6, 0x80A7, 0x80A8, 0x80AC, 0x80B0, 0x80B3, - 0x80B5, 0x80B6, 0x80B8, 0x80B9, 0x80BB, 0x80C5, 0x80C7, 0x80C8, - 0x80C9, 0x80CA, 0x80CB, 0x80CF, 0x80D0, 0x80D1, 0x80D2, 0x80D3, - 0x80D4, 0x80D5, 0x80D8, 0x80DF, 0x80E0, 0x80E2, 0x80E3, 0x80E6, - 0x80EE, 0x80F5, 0x80F7, 0x80F9, 0x80FB, 0x80FE, 0x80FF, 0x8100, - 0x8101, 0x8103, 0x8104, 0x8105, 0x8107, 0x8108, 0x810B, 0, - 0x810C, 0x8115, 0x8117, 0x8119, 0x811B, 0x811C, 0x811D, 0x811F, - 0x8120, 0x8121, 0x8122, 0x8123, 0x8124, 0x8125, 0x8126, 0x8127, - 0x8128, 0x8129, 0x812A, 0x812B, 0x812D, 0x812E, 0x8130, 0x8133, - 0x8134, 0x8135, 0x8137, 0x8139, 0x813A, 0x813B, 0x813C, 0x813D, - 0x813F, 0x8C29, 0x8292, 0x832B, 0x76F2, 0x6C13, 0x5FD9, 0x83BD, - 0x732B, 0x8305, 0x951A, 0x6BDB, 0x77DB, 0x94C6, 0x536F, 0x8302, - 0x5192, 0x5E3D, 0x8C8C, 0x8D38, 0x4E48, 0x73AB, 0x679A, 0x6885, - 0x9176, 0x9709, 0x7164, 0x6CA1, 0x7709, 0x5A92, 0x9541, 0x6BCF, - 0x7F8E, 0x6627, 0x5BD0, 0x59B9, 0x5A9A, 0x95E8, 0x95F7, 0x4EEC, - 0x840C, 0x8499, 0x6AAC, 0x76DF, 0x9530, 0x731B, 0x68A6, 0x5B5F, - 0x772F, 0x919A, 0x9761, 0x7CDC, 0x8FF7, 0x8C1C, 0x5F25, 0x7C73, - 0x79D8, 0x89C5, 0x6CCC, 0x871C, 0x5BC6, 0x5E42, 0x68C9, 0x7720, - 0x7EF5, 0x5195, 0x514D, 0x52C9, 0x5A29, 0x7F05, 0x9762, 0x82D7, - 0x63CF, 0x7784, 0x85D0, 0x79D2, 0x6E3A, 0x5E99, 0x5999, 0x8511, - 0x706D, 0x6C11, 0x62BF, 0x76BF, 0x654F, 0x60AF, 0x95FD, 0x660E, - 0x879F, 0x9E23, 0x94ED, 0x540D, 0x547D, 0x8C2C, 0x6478, 0, -plane c4 -at 0x40 - 0x8140, 0x8141, 0x8142, 0x8143, 0x8144, 0x8145, 0x8147, 0x8149, - 0x814D, 0x814E, 0x814F, 0x8152, 0x8156, 0x8157, 0x8158, 0x815B, - 0x815C, 0x815D, 0x815E, 0x815F, 0x8161, 0x8162, 0x8163, 0x8164, - 0x8166, 0x8168, 0x816A, 0x816B, 0x816C, 0x816F, 0x8172, 0x8173, - 0x8175, 0x8176, 0x8177, 0x8178, 0x8181, 0x8183, 0x8184, 0x8185, - 0x8186, 0x8187, 0x8189, 0x818B, 0x818C, 0x818D, 0x818E, 0x8190, - 0x8192, 0x8193, 0x8194, 0x8195, 0x8196, 0x8197, 0x8199, 0x819A, - 0x819E, 0x819F, 0x81A0, 0x81A1, 0x81A2, 0x81A4, 0x81A5, 0, - 0x81A7, 0x81A9, 0x81AB, 0x81AC, 0x81AD, 0x81AE, 0x81AF, 0x81B0, - 0x81B1, 0x81B2, 0x81B4, 0x81B5, 0x81B6, 0x81B7, 0x81B8, 0x81B9, - 0x81BC, 0x81BD, 0x81BE, 0x81BF, 0x81C4, 0x81C5, 0x81C7, 0x81C8, - 0x81C9, 0x81CB, 0x81CD, 0x81CE, 0x81CF, 0x81D0, 0x81D1, 0x81D2, - 0x81D3, 0x6479, 0x8611, 0x6A21, 0x819C, 0x78E8, 0x6469, 0x9B54, - 0x62B9, 0x672B, 0x83AB, 0x58A8, 0x9ED8, 0x6CAB, 0x6F20, 0x5BDE, - 0x964C, 0x8C0B, 0x725F, 0x67D0, 0x62C7, 0x7261, 0x4EA9, 0x59C6, - 0x6BCD, 0x5893, 0x66AE, 0x5E55, 0x52DF, 0x6155, 0x6728, 0x76EE, - 0x7766, 0x7267, 0x7A46, 0x62FF, 0x54EA, 0x5450, 0x94A0, 0x90A3, - 0x5A1C, 0x7EB3, 0x6C16, 0x4E43, 0x5976, 0x8010, 0x5948, 0x5357, - 0x7537, 0x96BE, 0x56CA, 0x6320, 0x8111, 0x607C, 0x95F9, 0x6DD6, - 0x5462, 0x9981, 0x5185, 0x5AE9, 0x80FD, 0x59AE, 0x9713, 0x502A, - 0x6CE5, 0x5C3C, 0x62DF, 0x4F60, 0x533F, 0x817B, 0x9006, 0x6EBA, - 0x852B, 0x62C8, 0x5E74, 0x78BE, 0x64B5, 0x637B, 0x5FF5, 0x5A18, - 0x917F, 0x9E1F, 0x5C3F, 0x634F, 0x8042, 0x5B7D, 0x556E, 0x954A, - 0x954D, 0x6D85, 0x60A8, 0x67E0, 0x72DE, 0x51DD, 0x5B81, 0, -plane c5 -at 0x40 - 0x81D4, 0x81D5, 0x81D6, 0x81D7, 0x81D8, 0x81D9, 0x81DA, 0x81DB, - 0x81DC, 0x81DD, 0x81DE, 0x81DF, 0x81E0, 0x81E1, 0x81E2, 0x81E4, - 0x81E5, 0x81E6, 0x81E8, 0x81E9, 0x81EB, 0x81EE, 0x81EF, 0x81F0, - 0x81F1, 0x81F2, 0x81F5, 0x81F6, 0x81F7, 0x81F8, 0x81F9, 0x81FA, - 0x81FD, 0x81FF, 0x8203, 0x8207, 0x8208, 0x8209, 0x820A, 0x820B, - 0x820E, 0x820F, 0x8211, 0x8213, 0x8215, 0x8216, 0x8217, 0x8218, - 0x8219, 0x821A, 0x821D, 0x8220, 0x8224, 0x8225, 0x8226, 0x8227, - 0x8229, 0x822E, 0x8232, 0x823A, 0x823C, 0x823D, 0x823F, 0, - 0x8240, 0x8241, 0x8242, 0x8243, 0x8245, 0x8246, 0x8248, 0x824A, - 0x824C, 0x824D, 0x824E, 0x8250, 0x8251, 0x8252, 0x8253, 0x8254, - 0x8255, 0x8256, 0x8257, 0x8259, 0x825B, 0x825C, 0x825D, 0x825E, - 0x8260, 0x8261, 0x8262, 0x8263, 0x8264, 0x8265, 0x8266, 0x8267, - 0x8269, 0x62E7, 0x6CDE, 0x725B, 0x626D, 0x94AE, 0x7EBD, 0x8113, - 0x6D53, 0x519C, 0x5F04, 0x5974, 0x52AA, 0x6012, 0x5973, 0x6696, - 0x8650, 0x759F, 0x632A, 0x61E6, 0x7CEF, 0x8BFA, 0x54E6, 0x6B27, - 0x9E25, 0x6BB4, 0x85D5, 0x5455, 0x5076, 0x6CA4, 0x556A, 0x8DB4, - 0x722C, 0x5E15, 0x6015, 0x7436, 0x62CD, 0x6392, 0x724C, 0x5F98, - 0x6E43, 0x6D3E, 0x6500, 0x6F58, 0x76D8, 0x78D0, 0x76FC, 0x7554, - 0x5224, 0x53DB, 0x4E53, 0x5E9E, 0x65C1, 0x802A, 0x80D6, 0x629B, - 0x5486, 0x5228, 0x70AE, 0x888D, 0x8DD1, 0x6CE1, 0x5478, 0x80DA, - 0x57F9, 0x88F4, 0x8D54, 0x966A, 0x914D, 0x4F69, 0x6C9B, 0x55B7, - 0x76C6, 0x7830, 0x62A8, 0x70F9, 0x6F8E, 0x5F6D, 0x84EC, 0x68DA, - 0x787C, 0x7BF7, 0x81A8, 0x670B, 0x9E4F, 0x6367, 0x78B0, 0x576F, - 0x7812, 0x9739, 0x6279, 0x62AB, 0x5288, 0x7435, 0x6BD7, 0, -plane c6 -at 0x40 - 0x826A, 0x826B, 0x826C, 0x826D, 0x8271, 0x8275, 0x8276, 0x8277, - 0x8278, 0x827B, 0x827C, 0x8280, 0x8281, 0x8283, 0x8285, 0x8286, - 0x8287, 0x8289, 0x828C, 0x8290, 0x8293, 0x8294, 0x8295, 0x8296, - 0x829A, 0x829B, 0x829E, 0x82A0, 0x82A2, 0x82A3, 0x82A7, 0x82B2, - 0x82B5, 0x82B6, 0x82BA, 0x82BB, 0x82BC, 0x82BF, 0x82C0, 0x82C2, - 0x82C3, 0x82C5, 0x82C6, 0x82C9, 0x82D0, 0x82D6, 0x82D9, 0x82DA, - 0x82DD, 0x82E2, 0x82E7, 0x82E8, 0x82E9, 0x82EA, 0x82EC, 0x82ED, - 0x82EE, 0x82F0, 0x82F2, 0x82F3, 0x82F5, 0x82F6, 0x82F8, 0, - 0x82FA, 0x82FC, 0x82FD, 0x82FE, 0x82FF, 0x8300, 0x830A, 0x830B, - 0x830D, 0x8310, 0x8312, 0x8313, 0x8316, 0x8318, 0x8319, 0x831D, - 0x831E, 0x831F, 0x8320, 0x8321, 0x8322, 0x8323, 0x8324, 0x8325, - 0x8326, 0x8329, 0x832A, 0x832E, 0x8330, 0x8332, 0x8337, 0x833B, - 0x833D, 0x5564, 0x813E, 0x75B2, 0x76AE, 0x5339, 0x75DE, 0x50FB, - 0x5C41, 0x8B6C, 0x7BC7, 0x504F, 0x7247, 0x9A97, 0x98D8, 0x6F02, - 0x74E2, 0x7968, 0x6487, 0x77A5, 0x62FC, 0x9891, 0x8D2B, 0x54C1, - 0x8058, 0x4E52, 0x576A, 0x82F9, 0x840D, 0x5E73, 0x51ED, 0x74F6, - 0x8BC4, 0x5C4F, 0x5761, 0x6CFC, 0x9887, 0x5A46, 0x7834, 0x9B44, - 0x8FEB, 0x7C95, 0x5256, 0x6251, 0x94FA, 0x4EC6, 0x8386, 0x8461, - 0x83E9, 0x84B2, 0x57D4, 0x6734, 0x5703, 0x666E, 0x6D66, 0x8C31, - 0x66DD, 0x7011, 0x671F, 0x6B3A, 0x6816, 0x621A, 0x59BB, 0x4E03, - 0x51C4, 0x6F06, 0x67D2, 0x6C8F, 0x5176, 0x68CB, 0x5947, 0x6B67, - 0x7566, 0x5D0E, 0x8110, 0x9F50, 0x65D7, 0x7948, 0x7941, 0x9A91, - 0x8D77, 0x5C82, 0x4E5E, 0x4F01, 0x542F, 0x5951, 0x780C, 0x5668, - 0x6C14, 0x8FC4, 0x5F03, 0x6C7D, 0x6CE3, 0x8BAB, 0x6390, 0, -plane c7 -at 0x40 - 0x833E, 0x833F, 0x8341, 0x8342, 0x8344, 0x8345, 0x8348, 0x834A, - 0x834B, 0x834C, 0x834D, 0x834E, 0x8353, 0x8355, 0x8356, 0x8357, - 0x8358, 0x8359, 0x835D, 0x8362, 0x8370, 0x8371, 0x8372, 0x8373, - 0x8374, 0x8375, 0x8376, 0x8379, 0x837A, 0x837E, 0x837F, 0x8380, - 0x8381, 0x8382, 0x8383, 0x8384, 0x8387, 0x8388, 0x838A, 0x838B, - 0x838C, 0x838D, 0x838F, 0x8390, 0x8391, 0x8394, 0x8395, 0x8396, - 0x8397, 0x8399, 0x839A, 0x839D, 0x839F, 0x83A1, 0x83A2, 0x83A3, - 0x83A4, 0x83A5, 0x83A6, 0x83A7, 0x83AC, 0x83AD, 0x83AE, 0, - 0x83AF, 0x83B5, 0x83BB, 0x83BE, 0x83BF, 0x83C2, 0x83C3, 0x83C4, - 0x83C6, 0x83C8, 0x83C9, 0x83CB, 0x83CD, 0x83CE, 0x83D0, 0x83D1, - 0x83D2, 0x83D3, 0x83D5, 0x83D7, 0x83D9, 0x83DA, 0x83DB, 0x83DE, - 0x83E2, 0x83E3, 0x83E4, 0x83E6, 0x83E7, 0x83E8, 0x83EB, 0x83EC, - 0x83ED, 0x6070, 0x6D3D, 0x7275, 0x6266, 0x948E, 0x94C5, 0x5343, - 0x8FC1, 0x7B7E, 0x4EDF, 0x8C26, 0x4E7E, 0x9ED4, 0x94B1, 0x94B3, - 0x524D, 0x6F5C, 0x9063, 0x6D45, 0x8C34, 0x5811, 0x5D4C, 0x6B20, - 0x6B49, 0x67AA, 0x545B, 0x8154, 0x7F8C, 0x5899, 0x8537, 0x5F3A, - 0x62A2, 0x6A47, 0x9539, 0x6572, 0x6084, 0x6865, 0x77A7, 0x4E54, - 0x4FA8, 0x5DE7, 0x9798, 0x64AC, 0x7FD8, 0x5CED, 0x4FCF, 0x7A8D, - 0x5207, 0x8304, 0x4E14, 0x602F, 0x7A83, 0x94A6, 0x4FB5, 0x4EB2, - 0x79E6, 0x7434, 0x52E4, 0x82B9, 0x64D2, 0x79BD, 0x5BDD, 0x6C81, - 0x9752, 0x8F7B, 0x6C22, 0x503E, 0x537F, 0x6E05, 0x64CE, 0x6674, - 0x6C30, 0x60C5, 0x9877, 0x8BF7, 0x5E86, 0x743C, 0x7A77, 0x79CB, - 0x4E18, 0x90B1, 0x7403, 0x6C42, 0x56DA, 0x914B, 0x6CC5, 0x8D8B, - 0x533A, 0x86C6, 0x66F2, 0x8EAF, 0x5C48, 0x9A71, 0x6E20, 0, -plane c8 -at 0x40 - 0x83EE, 0x83EF, 0x83F3, 0x83F4, 0x83F5, 0x83F6, 0x83F7, 0x83FA, - 0x83FB, 0x83FC, 0x83FE, 0x83FF, 0x8400, 0x8402, 0x8405, 0x8407, - 0x8408, 0x8409, 0x840A, 0x8410, 0x8412, 0x8413, 0x8414, 0x8415, - 0x8416, 0x8417, 0x8419, 0x841A, 0x841B, 0x841E, 0x841F, 0x8420, - 0x8421, 0x8422, 0x8423, 0x8429, 0x842A, 0x842B, 0x842C, 0x842D, - 0x842E, 0x842F, 0x8430, 0x8432, 0x8433, 0x8434, 0x8435, 0x8436, - 0x8437, 0x8439, 0x843A, 0x843B, 0x843E, 0x843F, 0x8440, 0x8441, - 0x8442, 0x8443, 0x8444, 0x8445, 0x8447, 0x8448, 0x8449, 0, - 0x844A, 0x844B, 0x844C, 0x844D, 0x844E, 0x844F, 0x8450, 0x8452, - 0x8453, 0x8454, 0x8455, 0x8456, 0x8458, 0x845D, 0x845E, 0x845F, - 0x8460, 0x8462, 0x8464, 0x8465, 0x8466, 0x8467, 0x8468, 0x846A, - 0x846E, 0x846F, 0x8470, 0x8472, 0x8474, 0x8477, 0x8479, 0x847B, - 0x847C, 0x53D6, 0x5A36, 0x9F8B, 0x8DA3, 0x53BB, 0x5708, 0x98A7, - 0x6743, 0x919B, 0x6CC9, 0x5168, 0x75CA, 0x62F3, 0x72AC, 0x5238, - 0x529D, 0x7F3A, 0x7094, 0x7638, 0x5374, 0x9E4A, 0x69B7, 0x786E, - 0x96C0, 0x88D9, 0x7FA4, 0x7136, 0x71C3, 0x5189, 0x67D3, 0x74E4, - 0x58E4, 0x6518, 0x56B7, 0x8BA9, 0x9976, 0x6270, 0x7ED5, 0x60F9, - 0x70ED, 0x58EC, 0x4EC1, 0x4EBA, 0x5FCD, 0x97E7, 0x4EFB, 0x8BA4, - 0x5203, 0x598A, 0x7EAB, 0x6254, 0x4ECD, 0x65E5, 0x620E, 0x8338, - 0x84C9, 0x8363, 0x878D, 0x7194, 0x6EB6, 0x5BB9, 0x7ED2, 0x5197, - 0x63C9, 0x67D4, 0x8089, 0x8339, 0x8815, 0x5112, 0x5B7A, 0x5982, - 0x8FB1, 0x4E73, 0x6C5D, 0x5165, 0x8925, 0x8F6F, 0x962E, 0x854A, - 0x745E, 0x9510, 0x95F0, 0x6DA6, 0x82E5, 0x5F31, 0x6492, 0x6D12, - 0x8428, 0x816E, 0x9CC3, 0x585E, 0x8D5B, 0x4E09, 0x53C1, 0, -plane c9 -at 0x40 - 0x847D, 0x847E, 0x847F, 0x8480, 0x8481, 0x8483, 0x8484, 0x8485, - 0x8486, 0x848A, 0x848D, 0x848F, 0x8490, 0x8491, 0x8492, 0x8493, - 0x8494, 0x8495, 0x8496, 0x8498, 0x849A, 0x849B, 0x849D, 0x849E, - 0x849F, 0x84A0, 0x84A2, 0x84A3, 0x84A4, 0x84A5, 0x84A6, 0x84A7, - 0x84A8, 0x84A9, 0x84AA, 0x84AB, 0x84AC, 0x84AD, 0x84AE, 0x84B0, - 0x84B1, 0x84B3, 0x84B5, 0x84B6, 0x84B7, 0x84BB, 0x84BC, 0x84BE, - 0x84C0, 0x84C2, 0x84C3, 0x84C5, 0x84C6, 0x84C7, 0x84C8, 0x84CB, - 0x84CC, 0x84CE, 0x84CF, 0x84D2, 0x84D4, 0x84D5, 0x84D7, 0, - 0x84D8, 0x84D9, 0x84DA, 0x84DB, 0x84DC, 0x84DE, 0x84E1, 0x84E2, - 0x84E4, 0x84E7, 0x84E8, 0x84E9, 0x84EA, 0x84EB, 0x84ED, 0x84EE, - 0x84EF, 0x84F1, 0x84F2, 0x84F3, 0x84F4, 0x84F5, 0x84F6, 0x84F7, - 0x84F8, 0x84F9, 0x84FA, 0x84FB, 0x84FD, 0x84FE, 0x8500, 0x8501, - 0x8502, 0x4F1E, 0x6563, 0x6851, 0x55D3, 0x4E27, 0x6414, 0x9A9A, - 0x626B, 0x5AC2, 0x745F, 0x8272, 0x6DA9, 0x68EE, 0x50E7, 0x838E, - 0x7802, 0x6740, 0x5239, 0x6C99, 0x7EB1, 0x50BB, 0x5565, 0x715E, - 0x7B5B, 0x6652, 0x73CA, 0x82EB, 0x6749, 0x5C71, 0x5220, 0x717D, - 0x886B, 0x95EA, 0x9655, 0x64C5, 0x8D61, 0x81B3, 0x5584, 0x6C55, - 0x6247, 0x7F2E, 0x5892, 0x4F24, 0x5546, 0x8D4F, 0x664C, 0x4E0A, - 0x5C1A, 0x88F3, 0x68A2, 0x634E, 0x7A0D, 0x70E7, 0x828D, 0x52FA, - 0x97F6, 0x5C11, 0x54E8, 0x90B5, 0x7ECD, 0x5962, 0x8D4A, 0x86C7, - 0x820C, 0x820D, 0x8D66, 0x6444, 0x5C04, 0x6151, 0x6D89, 0x793E, - 0x8BBE, 0x7837, 0x7533, 0x547B, 0x4F38, 0x8EAB, 0x6DF1, 0x5A20, - 0x7EC5, 0x795E, 0x6C88, 0x5BA1, 0x5A76, 0x751A, 0x80BE, 0x614E, - 0x6E17, 0x58F0, 0x751F, 0x7525, 0x7272, 0x5347, 0x7EF3, 0, -plane ca -at 0x40 - 0x8503, 0x8504, 0x8505, 0x8506, 0x8507, 0x8508, 0x8509, 0x850A, - 0x850B, 0x850D, 0x850E, 0x850F, 0x8510, 0x8512, 0x8514, 0x8515, - 0x8516, 0x8518, 0x8519, 0x851B, 0x851C, 0x851D, 0x851E, 0x8520, - 0x8522, 0x8523, 0x8524, 0x8525, 0x8526, 0x8527, 0x8528, 0x8529, - 0x852A, 0x852D, 0x852E, 0x852F, 0x8530, 0x8531, 0x8532, 0x8533, - 0x8534, 0x8535, 0x8536, 0x853E, 0x853F, 0x8540, 0x8541, 0x8542, - 0x8544, 0x8545, 0x8546, 0x8547, 0x854B, 0x854C, 0x854D, 0x854E, - 0x854F, 0x8550, 0x8551, 0x8552, 0x8553, 0x8554, 0x8555, 0, - 0x8557, 0x8558, 0x855A, 0x855B, 0x855C, 0x855D, 0x855F, 0x8560, - 0x8561, 0x8562, 0x8563, 0x8565, 0x8566, 0x8567, 0x8569, 0x856A, - 0x856B, 0x856C, 0x856D, 0x856E, 0x856F, 0x8570, 0x8571, 0x8573, - 0x8575, 0x8576, 0x8577, 0x8578, 0x857C, 0x857D, 0x857F, 0x8580, - 0x8581, 0x7701, 0x76DB, 0x5269, 0x80DC, 0x5723, 0x5E08, 0x5931, - 0x72EE, 0x65BD, 0x6E7F, 0x8BD7, 0x5C38, 0x8671, 0x5341, 0x77F3, - 0x62FE, 0x65F6, 0x4EC0, 0x98DF, 0x8680, 0x5B9E, 0x8BC6, 0x53F2, - 0x77E2, 0x4F7F, 0x5C4E, 0x9A76, 0x59CB, 0x5F0F, 0x793A, 0x58EB, - 0x4E16, 0x67FF, 0x4E8B, 0x62ED, 0x8A93, 0x901D, 0x52BF, 0x662F, - 0x55DC, 0x566C, 0x9002, 0x4ED5, 0x4F8D, 0x91CA, 0x9970, 0x6C0F, - 0x5E02, 0x6043, 0x5BA4, 0x89C6, 0x8BD5, 0x6536, 0x624B, 0x9996, - 0x5B88, 0x5BFF, 0x6388, 0x552E, 0x53D7, 0x7626, 0x517D, 0x852C, - 0x67A2, 0x68B3, 0x6B8A, 0x6292, 0x8F93, 0x53D4, 0x8212, 0x6DD1, - 0x758F, 0x4E66, 0x8D4E, 0x5B70, 0x719F, 0x85AF, 0x6691, 0x66D9, - 0x7F72, 0x8700, 0x9ECD, 0x9F20, 0x5C5E, 0x672F, 0x8FF0, 0x6811, - 0x675F, 0x620D, 0x7AD6, 0x5885, 0x5EB6, 0x6570, 0x6F31, 0, -plane cb -at 0x40 - 0x8582, 0x8583, 0x8586, 0x8588, 0x8589, 0x858A, 0x858B, 0x858C, - 0x858D, 0x858E, 0x8590, 0x8591, 0x8592, 0x8593, 0x8594, 0x8595, - 0x8596, 0x8597, 0x8598, 0x8599, 0x859A, 0x859D, 0x859E, 0x859F, - 0x85A0, 0x85A1, 0x85A2, 0x85A3, 0x85A5, 0x85A6, 0x85A7, 0x85A9, - 0x85AB, 0x85AC, 0x85AD, 0x85B1, 0x85B2, 0x85B3, 0x85B4, 0x85B5, - 0x85B6, 0x85B8, 0x85BA, 0x85BB, 0x85BC, 0x85BD, 0x85BE, 0x85BF, - 0x85C0, 0x85C2, 0x85C3, 0x85C4, 0x85C5, 0x85C6, 0x85C7, 0x85C8, - 0x85CA, 0x85CB, 0x85CC, 0x85CD, 0x85CE, 0x85D1, 0x85D2, 0, - 0x85D4, 0x85D6, 0x85D7, 0x85D8, 0x85D9, 0x85DA, 0x85DB, 0x85DD, - 0x85DE, 0x85DF, 0x85E0, 0x85E1, 0x85E2, 0x85E3, 0x85E5, 0x85E6, - 0x85E7, 0x85E8, 0x85EA, 0x85EB, 0x85EC, 0x85ED, 0x85EE, 0x85EF, - 0x85F0, 0x85F1, 0x85F2, 0x85F3, 0x85F4, 0x85F5, 0x85F6, 0x85F7, - 0x85F8, 0x6055, 0x5237, 0x800D, 0x6454, 0x8870, 0x7529, 0x5E05, - 0x6813, 0x62F4, 0x971C, 0x53CC, 0x723D, 0x8C01, 0x6C34, 0x7761, - 0x7A0E, 0x542E, 0x77AC, 0x987A, 0x821C, 0x8BF4, 0x7855, 0x6714, - 0x70C1, 0x65AF, 0x6495, 0x5636, 0x601D, 0x79C1, 0x53F8, 0x4E1D, - 0x6B7B, 0x8086, 0x5BFA, 0x55E3, 0x56DB, 0x4F3A, 0x4F3C, 0x9972, - 0x5DF3, 0x677E, 0x8038, 0x6002, 0x9882, 0x9001, 0x5B8B, 0x8BBC, - 0x8BF5, 0x641C, 0x8258, 0x64DE, 0x55FD, 0x82CF, 0x9165, 0x4FD7, - 0x7D20, 0x901F, 0x7C9F, 0x50F3, 0x5851, 0x6EAF, 0x5BBF, 0x8BC9, - 0x8083, 0x9178, 0x849C, 0x7B97, 0x867D, 0x968B, 0x968F, 0x7EE5, - 0x9AD3, 0x788E, 0x5C81, 0x7A57, 0x9042, 0x96A7, 0x795F, 0x5B59, - 0x635F, 0x7B0B, 0x84D1, 0x68AD, 0x5506, 0x7F29, 0x7410, 0x7D22, - 0x9501, 0x6240, 0x584C, 0x4ED6, 0x5B83, 0x5979, 0x5854, 0, -plane cc -at 0x40 - 0x85F9, 0x85FA, 0x85FC, 0x85FD, 0x85FE, 0x8600, 0x8601, 0x8602, - 0x8603, 0x8604, 0x8606, 0x8607, 0x8608, 0x8609, 0x860A, 0x860B, - 0x860C, 0x860D, 0x860E, 0x860F, 0x8610, 0x8612, 0x8613, 0x8614, - 0x8615, 0x8617, 0x8618, 0x8619, 0x861A, 0x861B, 0x861C, 0x861D, - 0x861E, 0x861F, 0x8620, 0x8621, 0x8622, 0x8623, 0x8624, 0x8625, - 0x8626, 0x8628, 0x862A, 0x862B, 0x862C, 0x862D, 0x862E, 0x862F, - 0x8630, 0x8631, 0x8632, 0x8633, 0x8634, 0x8635, 0x8636, 0x8637, - 0x8639, 0x863A, 0x863B, 0x863D, 0x863E, 0x863F, 0x8640, 0, - 0x8641, 0x8642, 0x8643, 0x8644, 0x8645, 0x8646, 0x8647, 0x8648, - 0x8649, 0x864A, 0x864B, 0x864C, 0x8652, 0x8653, 0x8655, 0x8656, - 0x8657, 0x8658, 0x8659, 0x865B, 0x865C, 0x865D, 0x865F, 0x8660, - 0x8661, 0x8663, 0x8664, 0x8665, 0x8666, 0x8667, 0x8668, 0x8669, - 0x866A, 0x736D, 0x631E, 0x8E4B, 0x8E0F, 0x80CE, 0x82D4, 0x62AC, - 0x53F0, 0x6CF0, 0x915E, 0x592A, 0x6001, 0x6C70, 0x574D, 0x644A, - 0x8D2A, 0x762B, 0x6EE9, 0x575B, 0x6A80, 0x75F0, 0x6F6D, 0x8C2D, - 0x8C08, 0x5766, 0x6BEF, 0x8892, 0x78B3, 0x63A2, 0x53F9, 0x70AD, - 0x6C64, 0x5858, 0x642A, 0x5802, 0x68E0, 0x819B, 0x5510, 0x7CD6, - 0x5018, 0x8EBA, 0x6DCC, 0x8D9F, 0x70EB, 0x638F, 0x6D9B, 0x6ED4, - 0x7EE6, 0x8404, 0x6843, 0x9003, 0x6DD8, 0x9676, 0x8BA8, 0x5957, - 0x7279, 0x85E4, 0x817E, 0x75BC, 0x8A8A, 0x68AF, 0x5254, 0x8E22, - 0x9511, 0x63D0, 0x9898, 0x8E44, 0x557C, 0x4F53, 0x66FF, 0x568F, - 0x60D5, 0x6D95, 0x5243, 0x5C49, 0x5929, 0x6DFB, 0x586B, 0x7530, - 0x751C, 0x606C, 0x8214, 0x8146, 0x6311, 0x6761, 0x8FE2, 0x773A, - 0x8DF3, 0x8D34, 0x94C1, 0x5E16, 0x5385, 0x542C, 0x70C3, 0, -plane cd -at 0x40 - 0x866D, 0x866F, 0x8670, 0x8672, 0x8673, 0x8674, 0x8675, 0x8676, - 0x8677, 0x8678, 0x8683, 0x8684, 0x8685, 0x8686, 0x8687, 0x8688, - 0x8689, 0x868E, 0x868F, 0x8690, 0x8691, 0x8692, 0x8694, 0x8696, - 0x8697, 0x8698, 0x8699, 0x869A, 0x869B, 0x869E, 0x869F, 0x86A0, - 0x86A1, 0x86A2, 0x86A5, 0x86A6, 0x86AB, 0x86AD, 0x86AE, 0x86B2, - 0x86B3, 0x86B7, 0x86B8, 0x86B9, 0x86BB, 0x86BC, 0x86BD, 0x86BE, - 0x86BF, 0x86C1, 0x86C2, 0x86C3, 0x86C5, 0x86C8, 0x86CC, 0x86CD, - 0x86D2, 0x86D3, 0x86D5, 0x86D6, 0x86D7, 0x86DA, 0x86DC, 0, - 0x86DD, 0x86E0, 0x86E1, 0x86E2, 0x86E3, 0x86E5, 0x86E6, 0x86E7, - 0x86E8, 0x86EA, 0x86EB, 0x86EC, 0x86EF, 0x86F5, 0x86F6, 0x86F7, - 0x86FA, 0x86FB, 0x86FC, 0x86FD, 0x86FF, 0x8701, 0x8704, 0x8705, - 0x8706, 0x870B, 0x870C, 0x870E, 0x870F, 0x8710, 0x8711, 0x8714, - 0x8716, 0x6C40, 0x5EF7, 0x505C, 0x4EAD, 0x5EAD, 0x633A, 0x8247, - 0x901A, 0x6850, 0x916E, 0x77B3, 0x540C, 0x94DC, 0x5F64, 0x7AE5, - 0x6876, 0x6345, 0x7B52, 0x7EDF, 0x75DB, 0x5077, 0x6295, 0x5934, - 0x900F, 0x51F8, 0x79C3, 0x7A81, 0x56FE, 0x5F92, 0x9014, 0x6D82, - 0x5C60, 0x571F, 0x5410, 0x5154, 0x6E4D, 0x56E2, 0x63A8, 0x9893, - 0x817F, 0x8715, 0x892A, 0x9000, 0x541E, 0x5C6F, 0x81C0, 0x62D6, - 0x6258, 0x8131, 0x9E35, 0x9640, 0x9A6E, 0x9A7C, 0x692D, 0x59A5, - 0x62D3, 0x553E, 0x6316, 0x54C7, 0x86D9, 0x6D3C, 0x5A03, 0x74E6, - 0x889C, 0x6B6A, 0x5916, 0x8C4C, 0x5F2F, 0x6E7E, 0x73A9, 0x987D, - 0x4E38, 0x70F7, 0x5B8C, 0x7897, 0x633D, 0x665A, 0x7696, 0x60CB, - 0x5B9B, 0x5A49, 0x4E07, 0x8155, 0x6C6A, 0x738B, 0x4EA1, 0x6789, - 0x7F51, 0x5F80, 0x65FA, 0x671B, 0x5FD8, 0x5984, 0x5A01, 0, -plane ce -at 0x40 - 0x8719, 0x871B, 0x871D, 0x871F, 0x8720, 0x8724, 0x8726, 0x8727, - 0x8728, 0x872A, 0x872B, 0x872C, 0x872D, 0x872F, 0x8730, 0x8732, - 0x8733, 0x8735, 0x8736, 0x8738, 0x8739, 0x873A, 0x873C, 0x873D, - 0x8740, 0x8741, 0x8742, 0x8743, 0x8744, 0x8745, 0x8746, 0x874A, - 0x874B, 0x874D, 0x874F, 0x8750, 0x8751, 0x8752, 0x8754, 0x8755, - 0x8756, 0x8758, 0x875A, 0x875B, 0x875C, 0x875D, 0x875E, 0x875F, - 0x8761, 0x8762, 0x8766, 0x8767, 0x8768, 0x8769, 0x876A, 0x876B, - 0x876C, 0x876D, 0x876F, 0x8771, 0x8772, 0x8773, 0x8775, 0, - 0x8777, 0x8778, 0x8779, 0x877A, 0x877F, 0x8780, 0x8781, 0x8784, - 0x8786, 0x8787, 0x8789, 0x878A, 0x878C, 0x878E, 0x878F, 0x8790, - 0x8791, 0x8792, 0x8794, 0x8795, 0x8796, 0x8798, 0x8799, 0x879A, - 0x879B, 0x879C, 0x879D, 0x879E, 0x87A0, 0x87A1, 0x87A2, 0x87A3, - 0x87A4, 0x5DCD, 0x5FAE, 0x5371, 0x97E6, 0x8FDD, 0x6845, 0x56F4, - 0x552F, 0x60DF, 0x4E3A, 0x6F4D, 0x7EF4, 0x82C7, 0x840E, 0x59D4, - 0x4F1F, 0x4F2A, 0x5C3E, 0x7EAC, 0x672A, 0x851A, 0x5473, 0x754F, - 0x80C3, 0x5582, 0x9B4F, 0x4F4D, 0x6E2D, 0x8C13, 0x5C09, 0x6170, - 0x536B, 0x761F, 0x6E29, 0x868A, 0x6587, 0x95FB, 0x7EB9, 0x543B, - 0x7A33, 0x7D0A, 0x95EE, 0x55E1, 0x7FC1, 0x74EE, 0x631D, 0x8717, - 0x6DA1, 0x7A9D, 0x6211, 0x65A1, 0x5367, 0x63E1, 0x6C83, 0x5DEB, - 0x545C, 0x94A8, 0x4E4C, 0x6C61, 0x8BEC, 0x5C4B, 0x65E0, 0x829C, - 0x68A7, 0x543E, 0x5434, 0x6BCB, 0x6B66, 0x4E94, 0x6342, 0x5348, - 0x821E, 0x4F0D, 0x4FAE, 0x575E, 0x620A, 0x96FE, 0x6664, 0x7269, - 0x52FF, 0x52A1, 0x609F, 0x8BEF, 0x6614, 0x7199, 0x6790, 0x897F, - 0x7852, 0x77FD, 0x6670, 0x563B, 0x5438, 0x9521, 0x727A, 0, -plane cf -at 0x40 - 0x87A5, 0x87A6, 0x87A7, 0x87A9, 0x87AA, 0x87AE, 0x87B0, 0x87B1, - 0x87B2, 0x87B4, 0x87B6, 0x87B7, 0x87B8, 0x87B9, 0x87BB, 0x87BC, - 0x87BE, 0x87BF, 0x87C1, 0x87C2, 0x87C3, 0x87C4, 0x87C5, 0x87C7, - 0x87C8, 0x87C9, 0x87CC, 0x87CD, 0x87CE, 0x87CF, 0x87D0, 0x87D4, - 0x87D5, 0x87D6, 0x87D7, 0x87D8, 0x87D9, 0x87DA, 0x87DC, 0x87DD, - 0x87DE, 0x87DF, 0x87E1, 0x87E2, 0x87E3, 0x87E4, 0x87E6, 0x87E7, - 0x87E8, 0x87E9, 0x87EB, 0x87EC, 0x87ED, 0x87EF, 0x87F0, 0x87F1, - 0x87F2, 0x87F3, 0x87F4, 0x87F5, 0x87F6, 0x87F7, 0x87F8, 0, - 0x87FA, 0x87FB, 0x87FC, 0x87FD, 0x87FF, 0x8800, 0x8801, 0x8802, - 0x8804, 0x8805, 0x8806, 0x8807, 0x8808, 0x8809, 0x880B, 0x880C, - 0x880D, 0x880E, 0x880F, 0x8810, 0x8811, 0x8812, 0x8814, 0x8817, - 0x8818, 0x8819, 0x881A, 0x881C, 0x881D, 0x881E, 0x881F, 0x8820, - 0x8823, 0x7A00, 0x606F, 0x5E0C, 0x6089, 0x819D, 0x5915, 0x60DC, - 0x7184, 0x70EF, 0x6EAA, 0x6C50, 0x7280, 0x6A84, 0x88AD, 0x5E2D, - 0x4E60, 0x5AB3, 0x559C, 0x94E3, 0x6D17, 0x7CFB, 0x9699, 0x620F, - 0x7EC6, 0x778E, 0x867E, 0x5323, 0x971E, 0x8F96, 0x6687, 0x5CE1, - 0x4FA0, 0x72ED, 0x4E0B, 0x53A6, 0x590F, 0x5413, 0x6380, 0x9528, - 0x5148, 0x4ED9, 0x9C9C, 0x7EA4, 0x54B8, 0x8D24, 0x8854, 0x8237, - 0x95F2, 0x6D8E, 0x5F26, 0x5ACC, 0x663E, 0x9669, 0x73B0, 0x732E, - 0x53BF, 0x817A, 0x9985, 0x7FA1, 0x5BAA, 0x9677, 0x9650, 0x7EBF, - 0x76F8, 0x53A2, 0x9576, 0x9999, 0x7BB1, 0x8944, 0x6E58, 0x4E61, - 0x7FD4, 0x7965, 0x8BE6, 0x60F3, 0x54CD, 0x4EAB, 0x9879, 0x5DF7, - 0x6A61, 0x50CF, 0x5411, 0x8C61, 0x8427, 0x785D, 0x9704, 0x524A, - 0x54EE, 0x56A3, 0x9500, 0x6D88, 0x5BB5, 0x6DC6, 0x6653, 0, -plane d0 -at 0x40 - 0x8824, 0x8825, 0x8826, 0x8827, 0x8828, 0x8829, 0x882A, 0x882B, - 0x882C, 0x882D, 0x882E, 0x882F, 0x8830, 0x8831, 0x8833, 0x8834, - 0x8835, 0x8836, 0x8837, 0x8838, 0x883A, 0x883B, 0x883D, 0x883E, - 0x883F, 0x8841, 0x8842, 0x8843, 0x8846, 0x8847, 0x8848, 0x8849, - 0x884A, 0x884B, 0x884E, 0x884F, 0x8850, 0x8851, 0x8852, 0x8853, - 0x8855, 0x8856, 0x8858, 0x885A, 0x885B, 0x885C, 0x885D, 0x885E, - 0x885F, 0x8860, 0x8866, 0x8867, 0x886A, 0x886D, 0x886F, 0x8871, - 0x8873, 0x8874, 0x8875, 0x8876, 0x8878, 0x8879, 0x887A, 0, - 0x887B, 0x887C, 0x8880, 0x8883, 0x8886, 0x8887, 0x8889, 0x888A, - 0x888C, 0x888E, 0x888F, 0x8890, 0x8891, 0x8893, 0x8894, 0x8895, - 0x8897, 0x8898, 0x8899, 0x889A, 0x889B, 0x889D, 0x889E, 0x889F, - 0x88A0, 0x88A1, 0x88A3, 0x88A5, 0x88A6, 0x88A7, 0x88A8, 0x88A9, - 0x88AA, 0x5C0F, 0x5B5D, 0x6821, 0x8096, 0x5578, 0x7B11, 0x6548, - 0x6954, 0x4E9B, 0x6B47, 0x874E, 0x978B, 0x534F, 0x631F, 0x643A, - 0x90AA, 0x659C, 0x80C1, 0x8C10, 0x5199, 0x68B0, 0x5378, 0x87F9, - 0x61C8, 0x6CC4, 0x6CFB, 0x8C22, 0x5C51, 0x85AA, 0x82AF, 0x950C, - 0x6B23, 0x8F9B, 0x65B0, 0x5FFB, 0x5FC3, 0x4FE1, 0x8845, 0x661F, - 0x8165, 0x7329, 0x60FA, 0x5174, 0x5211, 0x578B, 0x5F62, 0x90A2, - 0x884C, 0x9192, 0x5E78, 0x674F, 0x6027, 0x59D3, 0x5144, 0x51F6, - 0x80F8, 0x5308, 0x6C79, 0x96C4, 0x718A, 0x4F11, 0x4FEE, 0x7F9E, - 0x673D, 0x55C5, 0x9508, 0x79C0, 0x8896, 0x7EE3, 0x589F, 0x620C, - 0x9700, 0x865A, 0x5618, 0x987B, 0x5F90, 0x8BB8, 0x84C4, 0x9157, - 0x53D9, 0x65ED, 0x5E8F, 0x755C, 0x6064, 0x7D6E, 0x5A7F, 0x7EEA, - 0x7EED, 0x8F69, 0x55A7, 0x5BA3, 0x60AC, 0x65CB, 0x7384, 0, -plane d1 -at 0x40 - 0x88AC, 0x88AE, 0x88AF, 0x88B0, 0x88B2, 0x88B3, 0x88B4, 0x88B5, - 0x88B6, 0x88B8, 0x88B9, 0x88BA, 0x88BB, 0x88BD, 0x88BE, 0x88BF, - 0x88C0, 0x88C3, 0x88C4, 0x88C7, 0x88C8, 0x88CA, 0x88CB, 0x88CC, - 0x88CD, 0x88CF, 0x88D0, 0x88D1, 0x88D3, 0x88D6, 0x88D7, 0x88DA, - 0x88DB, 0x88DC, 0x88DD, 0x88DE, 0x88E0, 0x88E1, 0x88E6, 0x88E7, - 0x88E9, 0x88EA, 0x88EB, 0x88EC, 0x88ED, 0x88EE, 0x88EF, 0x88F2, - 0x88F5, 0x88F6, 0x88F7, 0x88FA, 0x88FB, 0x88FD, 0x88FF, 0x8900, - 0x8901, 0x8903, 0x8904, 0x8905, 0x8906, 0x8907, 0x8908, 0, - 0x8909, 0x890B, 0x890C, 0x890D, 0x890E, 0x890F, 0x8911, 0x8914, - 0x8915, 0x8916, 0x8917, 0x8918, 0x891C, 0x891D, 0x891E, 0x891F, - 0x8920, 0x8922, 0x8923, 0x8924, 0x8926, 0x8927, 0x8928, 0x8929, - 0x892C, 0x892D, 0x892E, 0x892F, 0x8931, 0x8932, 0x8933, 0x8935, - 0x8937, 0x9009, 0x7663, 0x7729, 0x7EDA, 0x9774, 0x859B, 0x5B66, - 0x7A74, 0x96EA, 0x8840, 0x52CB, 0x718F, 0x5FAA, 0x65EC, 0x8BE2, - 0x5BFB, 0x9A6F, 0x5DE1, 0x6B89, 0x6C5B, 0x8BAD, 0x8BAF, 0x900A, - 0x8FC5, 0x538B, 0x62BC, 0x9E26, 0x9E2D, 0x5440, 0x4E2B, 0x82BD, - 0x7259, 0x869C, 0x5D16, 0x8859, 0x6DAF, 0x96C5, 0x54D1, 0x4E9A, - 0x8BB6, 0x7109, 0x54BD, 0x9609, 0x70DF, 0x6DF9, 0x76D0, 0x4E25, - 0x7814, 0x8712, 0x5CA9, 0x5EF6, 0x8A00, 0x989C, 0x960E, 0x708E, - 0x6CBF, 0x5944, 0x63A9, 0x773C, 0x884D, 0x6F14, 0x8273, 0x5830, - 0x71D5, 0x538C, 0x781A, 0x96C1, 0x5501, 0x5F66, 0x7130, 0x5BB4, - 0x8C1A, 0x9A8C, 0x6B83, 0x592E, 0x9E2F, 0x79E7, 0x6768, 0x626C, - 0x4F6F, 0x75A1, 0x7F8A, 0x6D0B, 0x9633, 0x6C27, 0x4EF0, 0x75D2, - 0x517B, 0x6837, 0x6F3E, 0x9080, 0x8170, 0x5996, 0x7476, 0, -plane d2 -at 0x40 - 0x8938, 0x8939, 0x893A, 0x893B, 0x893C, 0x893D, 0x893E, 0x893F, - 0x8940, 0x8942, 0x8943, 0x8945, 0x8946, 0x8947, 0x8948, 0x8949, - 0x894A, 0x894B, 0x894C, 0x894D, 0x894E, 0x894F, 0x8950, 0x8951, - 0x8952, 0x8953, 0x8954, 0x8955, 0x8956, 0x8957, 0x8958, 0x8959, - 0x895A, 0x895B, 0x895C, 0x895D, 0x8960, 0x8961, 0x8962, 0x8963, - 0x8964, 0x8965, 0x8967, 0x8968, 0x8969, 0x896A, 0x896B, 0x896C, - 0x896D, 0x896E, 0x896F, 0x8970, 0x8971, 0x8972, 0x8973, 0x8974, - 0x8975, 0x8976, 0x8977, 0x8978, 0x8979, 0x897A, 0x897C, 0, - 0x897D, 0x897E, 0x8980, 0x8982, 0x8984, 0x8985, 0x8987, 0x8988, - 0x8989, 0x898A, 0x898B, 0x898C, 0x898D, 0x898E, 0x898F, 0x8990, - 0x8991, 0x8992, 0x8993, 0x8994, 0x8995, 0x8996, 0x8997, 0x8998, - 0x8999, 0x899A, 0x899B, 0x899C, 0x899D, 0x899E, 0x899F, 0x89A0, - 0x89A1, 0x6447, 0x5C27, 0x9065, 0x7A91, 0x8C23, 0x59DA, 0x54AC, - 0x8200, 0x836F, 0x8981, 0x8000, 0x6930, 0x564E, 0x8036, 0x7237, - 0x91CE, 0x51B6, 0x4E5F, 0x9875, 0x6396, 0x4E1A, 0x53F6, 0x66F3, - 0x814B, 0x591C, 0x6DB2, 0x4E00, 0x58F9, 0x533B, 0x63D6, 0x94F1, - 0x4F9D, 0x4F0A, 0x8863, 0x9890, 0x5937, 0x9057, 0x79FB, 0x4EEA, - 0x80F0, 0x7591, 0x6C82, 0x5B9C, 0x59E8, 0x5F5D, 0x6905, 0x8681, - 0x501A, 0x5DF2, 0x4E59, 0x77E3, 0x4EE5, 0x827A, 0x6291, 0x6613, - 0x9091, 0x5C79, 0x4EBF, 0x5F79, 0x81C6, 0x9038, 0x8084, 0x75AB, - 0x4EA6, 0x88D4, 0x610F, 0x6BC5, 0x5FC6, 0x4E49, 0x76CA, 0x6EA2, - 0x8BE3, 0x8BAE, 0x8C0A, 0x8BD1, 0x5F02, 0x7FFC, 0x7FCC, 0x7ECE, - 0x8335, 0x836B, 0x56E0, 0x6BB7, 0x97F3, 0x9634, 0x59FB, 0x541F, - 0x94F6, 0x6DEB, 0x5BC5, 0x996E, 0x5C39, 0x5F15, 0x9690, 0, -plane d3 -at 0x40 - 0x89A2, 0x89A3, 0x89A4, 0x89A5, 0x89A6, 0x89A7, 0x89A8, 0x89A9, - 0x89AA, 0x89AB, 0x89AC, 0x89AD, 0x89AE, 0x89AF, 0x89B0, 0x89B1, - 0x89B2, 0x89B3, 0x89B4, 0x89B5, 0x89B6, 0x89B7, 0x89B8, 0x89B9, - 0x89BA, 0x89BB, 0x89BC, 0x89BD, 0x89BE, 0x89BF, 0x89C0, 0x89C3, - 0x89CD, 0x89D3, 0x89D4, 0x89D5, 0x89D7, 0x89D8, 0x89D9, 0x89DB, - 0x89DD, 0x89DF, 0x89E0, 0x89E1, 0x89E2, 0x89E4, 0x89E7, 0x89E8, - 0x89E9, 0x89EA, 0x89EC, 0x89ED, 0x89EE, 0x89F0, 0x89F1, 0x89F2, - 0x89F4, 0x89F5, 0x89F6, 0x89F7, 0x89F8, 0x89F9, 0x89FA, 0, - 0x89FB, 0x89FC, 0x89FD, 0x89FE, 0x89FF, 0x8A01, 0x8A02, 0x8A03, - 0x8A04, 0x8A05, 0x8A06, 0x8A08, 0x8A09, 0x8A0A, 0x8A0B, 0x8A0C, - 0x8A0D, 0x8A0E, 0x8A0F, 0x8A10, 0x8A11, 0x8A12, 0x8A13, 0x8A14, - 0x8A15, 0x8A16, 0x8A17, 0x8A18, 0x8A19, 0x8A1A, 0x8A1B, 0x8A1C, - 0x8A1D, 0x5370, 0x82F1, 0x6A31, 0x5A74, 0x9E70, 0x5E94, 0x7F28, - 0x83B9, 0x8424, 0x8425, 0x8367, 0x8747, 0x8FCE, 0x8D62, 0x76C8, - 0x5F71, 0x9896, 0x786C, 0x6620, 0x54DF, 0x62E5, 0x4F63, 0x81C3, - 0x75C8, 0x5EB8, 0x96CD, 0x8E0A, 0x86F9, 0x548F, 0x6CF3, 0x6D8C, - 0x6C38, 0x607F, 0x52C7, 0x7528, 0x5E7D, 0x4F18, 0x60A0, 0x5FE7, - 0x5C24, 0x7531, 0x90AE, 0x94C0, 0x72B9, 0x6CB9, 0x6E38, 0x9149, - 0x6709, 0x53CB, 0x53F3, 0x4F51, 0x91C9, 0x8BF1, 0x53C8, 0x5E7C, - 0x8FC2, 0x6DE4, 0x4E8E, 0x76C2, 0x6986, 0x865E, 0x611A, 0x8206, - 0x4F59, 0x4FDE, 0x903E, 0x9C7C, 0x6109, 0x6E1D, 0x6E14, 0x9685, - 0x4E88, 0x5A31, 0x96E8, 0x4E0E, 0x5C7F, 0x79B9, 0x5B87, 0x8BED, - 0x7FBD, 0x7389, 0x57DF, 0x828B, 0x90C1, 0x5401, 0x9047, 0x55BB, - 0x5CEA, 0x5FA1, 0x6108, 0x6B32, 0x72F1, 0x80B2, 0x8A89, 0, -plane d4 -at 0x40 - 0x8A1E, 0x8A1F, 0x8A20, 0x8A21, 0x8A22, 0x8A23, 0x8A24, 0x8A25, - 0x8A26, 0x8A27, 0x8A28, 0x8A29, 0x8A2A, 0x8A2B, 0x8A2C, 0x8A2D, - 0x8A2E, 0x8A2F, 0x8A30, 0x8A31, 0x8A32, 0x8A33, 0x8A34, 0x8A35, - 0x8A36, 0x8A37, 0x8A38, 0x8A39, 0x8A3A, 0x8A3B, 0x8A3C, 0x8A3D, - 0x8A3F, 0x8A40, 0x8A41, 0x8A42, 0x8A43, 0x8A44, 0x8A45, 0x8A46, - 0x8A47, 0x8A49, 0x8A4A, 0x8A4B, 0x8A4C, 0x8A4D, 0x8A4E, 0x8A4F, - 0x8A50, 0x8A51, 0x8A52, 0x8A53, 0x8A54, 0x8A55, 0x8A56, 0x8A57, - 0x8A58, 0x8A59, 0x8A5A, 0x8A5B, 0x8A5C, 0x8A5D, 0x8A5E, 0, - 0x8A5F, 0x8A60, 0x8A61, 0x8A62, 0x8A63, 0x8A64, 0x8A65, 0x8A66, - 0x8A67, 0x8A68, 0x8A69, 0x8A6A, 0x8A6B, 0x8A6C, 0x8A6D, 0x8A6E, - 0x8A6F, 0x8A70, 0x8A71, 0x8A72, 0x8A73, 0x8A74, 0x8A75, 0x8A76, - 0x8A77, 0x8A78, 0x8A7A, 0x8A7B, 0x8A7C, 0x8A7D, 0x8A7E, 0x8A7F, - 0x8A80, 0x6D74, 0x5BD3, 0x88D5, 0x9884, 0x8C6B, 0x9A6D, 0x9E33, - 0x6E0A, 0x51A4, 0x5143, 0x57A3, 0x8881, 0x539F, 0x63F4, 0x8F95, - 0x56ED, 0x5458, 0x5706, 0x733F, 0x6E90, 0x7F18, 0x8FDC, 0x82D1, - 0x613F, 0x6028, 0x9662, 0x66F0, 0x7EA6, 0x8D8A, 0x8DC3, 0x94A5, - 0x5CB3, 0x7CA4, 0x6708, 0x60A6, 0x9605, 0x8018, 0x4E91, 0x90E7, - 0x5300, 0x9668, 0x5141, 0x8FD0, 0x8574, 0x915D, 0x6655, 0x97F5, - 0x5B55, 0x531D, 0x7838, 0x6742, 0x683D, 0x54C9, 0x707E, 0x5BB0, - 0x8F7D, 0x518D, 0x5728, 0x54B1, 0x6512, 0x6682, 0x8D5E, 0x8D43, - 0x810F, 0x846C, 0x906D, 0x7CDF, 0x51FF, 0x85FB, 0x67A3, 0x65E9, - 0x6FA1, 0x86A4, 0x8E81, 0x566A, 0x9020, 0x7682, 0x7076, 0x71E5, - 0x8D23, 0x62E9, 0x5219, 0x6CFD, 0x8D3C, 0x600E, 0x589E, 0x618E, - 0x66FE, 0x8D60, 0x624E, 0x55B3, 0x6E23, 0x672D, 0x8F67, 0, -plane d5 -at 0x40 - 0x8A81, 0x8A82, 0x8A83, 0x8A84, 0x8A85, 0x8A86, 0x8A87, 0x8A88, - 0x8A8B, 0x8A8C, 0x8A8D, 0x8A8E, 0x8A8F, 0x8A90, 0x8A91, 0x8A92, - 0x8A94, 0x8A95, 0x8A96, 0x8A97, 0x8A98, 0x8A99, 0x8A9A, 0x8A9B, - 0x8A9C, 0x8A9D, 0x8A9E, 0x8A9F, 0x8AA0, 0x8AA1, 0x8AA2, 0x8AA3, - 0x8AA4, 0x8AA5, 0x8AA6, 0x8AA7, 0x8AA8, 0x8AA9, 0x8AAA, 0x8AAB, - 0x8AAC, 0x8AAD, 0x8AAE, 0x8AAF, 0x8AB0, 0x8AB1, 0x8AB2, 0x8AB3, - 0x8AB4, 0x8AB5, 0x8AB6, 0x8AB7, 0x8AB8, 0x8AB9, 0x8ABA, 0x8ABB, - 0x8ABC, 0x8ABD, 0x8ABE, 0x8ABF, 0x8AC0, 0x8AC1, 0x8AC2, 0, - 0x8AC3, 0x8AC4, 0x8AC5, 0x8AC6, 0x8AC7, 0x8AC8, 0x8AC9, 0x8ACA, - 0x8ACB, 0x8ACC, 0x8ACD, 0x8ACE, 0x8ACF, 0x8AD0, 0x8AD1, 0x8AD2, - 0x8AD3, 0x8AD4, 0x8AD5, 0x8AD6, 0x8AD7, 0x8AD8, 0x8AD9, 0x8ADA, - 0x8ADB, 0x8ADC, 0x8ADD, 0x8ADE, 0x8ADF, 0x8AE0, 0x8AE1, 0x8AE2, - 0x8AE3, 0x94E1, 0x95F8, 0x7728, 0x6805, 0x69A8, 0x548B, 0x4E4D, - 0x70B8, 0x8BC8, 0x6458, 0x658B, 0x5B85, 0x7A84, 0x503A, 0x5BE8, - 0x77BB, 0x6BE1, 0x8A79, 0x7C98, 0x6CBE, 0x76CF, 0x65A9, 0x8F97, - 0x5D2D, 0x5C55, 0x8638, 0x6808, 0x5360, 0x6218, 0x7AD9, 0x6E5B, - 0x7EFD, 0x6A1F, 0x7AE0, 0x5F70, 0x6F33, 0x5F20, 0x638C, 0x6DA8, - 0x6756, 0x4E08, 0x5E10, 0x8D26, 0x4ED7, 0x80C0, 0x7634, 0x969C, - 0x62DB, 0x662D, 0x627E, 0x6CBC, 0x8D75, 0x7167, 0x7F69, 0x5146, - 0x8087, 0x53EC, 0x906E, 0x6298, 0x54F2, 0x86F0, 0x8F99, 0x8005, - 0x9517, 0x8517, 0x8FD9, 0x6D59, 0x73CD, 0x659F, 0x771F, 0x7504, - 0x7827, 0x81FB, 0x8D1E, 0x9488, 0x4FA6, 0x6795, 0x75B9, 0x8BCA, - 0x9707, 0x632F, 0x9547, 0x9635, 0x84B8, 0x6323, 0x7741, 0x5F81, - 0x72F0, 0x4E89, 0x6014, 0x6574, 0x62EF, 0x6B63, 0x653F, 0, -plane d6 -at 0x40 - 0x8AE4, 0x8AE5, 0x8AE6, 0x8AE7, 0x8AE8, 0x8AE9, 0x8AEA, 0x8AEB, - 0x8AEC, 0x8AED, 0x8AEE, 0x8AEF, 0x8AF0, 0x8AF1, 0x8AF2, 0x8AF3, - 0x8AF4, 0x8AF5, 0x8AF6, 0x8AF7, 0x8AF8, 0x8AF9, 0x8AFA, 0x8AFB, - 0x8AFC, 0x8AFD, 0x8AFE, 0x8AFF, 0x8B00, 0x8B01, 0x8B02, 0x8B03, - 0x8B04, 0x8B05, 0x8B06, 0x8B08, 0x8B09, 0x8B0A, 0x8B0B, 0x8B0C, - 0x8B0D, 0x8B0E, 0x8B0F, 0x8B10, 0x8B11, 0x8B12, 0x8B13, 0x8B14, - 0x8B15, 0x8B16, 0x8B17, 0x8B18, 0x8B19, 0x8B1A, 0x8B1B, 0x8B1C, - 0x8B1D, 0x8B1E, 0x8B1F, 0x8B20, 0x8B21, 0x8B22, 0x8B23, 0, - 0x8B24, 0x8B25, 0x8B27, 0x8B28, 0x8B29, 0x8B2A, 0x8B2B, 0x8B2C, - 0x8B2D, 0x8B2E, 0x8B2F, 0x8B30, 0x8B31, 0x8B32, 0x8B33, 0x8B34, - 0x8B35, 0x8B36, 0x8B37, 0x8B38, 0x8B39, 0x8B3A, 0x8B3B, 0x8B3C, - 0x8B3D, 0x8B3E, 0x8B3F, 0x8B40, 0x8B41, 0x8B42, 0x8B43, 0x8B44, - 0x8B45, 0x5E27, 0x75C7, 0x90D1, 0x8BC1, 0x829D, 0x679D, 0x652F, - 0x5431, 0x8718, 0x77E5, 0x80A2, 0x8102, 0x6C41, 0x4E4B, 0x7EC7, - 0x804C, 0x76F4, 0x690D, 0x6B96, 0x6267, 0x503C, 0x4F84, 0x5740, - 0x6307, 0x6B62, 0x8DBE, 0x53EA, 0x65E8, 0x7EB8, 0x5FD7, 0x631A, - 0x63B7, 0x81F3, 0x81F4, 0x7F6E, 0x5E1C, 0x5CD9, 0x5236, 0x667A, - 0x79E9, 0x7A1A, 0x8D28, 0x7099, 0x75D4, 0x6EDE, 0x6CBB, 0x7A92, - 0x4E2D, 0x76C5, 0x5FE0, 0x949F, 0x8877, 0x7EC8, 0x79CD, 0x80BF, - 0x91CD, 0x4EF2, 0x4F17, 0x821F, 0x5468, 0x5DDE, 0x6D32, 0x8BCC, - 0x7CA5, 0x8F74, 0x8098, 0x5E1A, 0x5492, 0x76B1, 0x5B99, 0x663C, - 0x9AA4, 0x73E0, 0x682A, 0x86DB, 0x6731, 0x732A, 0x8BF8, 0x8BDB, - 0x9010, 0x7AF9, 0x70DB, 0x716E, 0x62C4, 0x77A9, 0x5631, 0x4E3B, - 0x8457, 0x67F1, 0x52A9, 0x86C0, 0x8D2E, 0x94F8, 0x7B51, 0, -plane d7 -at 0x40 - 0x8B46, 0x8B47, 0x8B48, 0x8B49, 0x8B4A, 0x8B4B, 0x8B4C, 0x8B4D, - 0x8B4E, 0x8B4F, 0x8B50, 0x8B51, 0x8B52, 0x8B53, 0x8B54, 0x8B55, - 0x8B56, 0x8B57, 0x8B58, 0x8B59, 0x8B5A, 0x8B5B, 0x8B5C, 0x8B5D, - 0x8B5E, 0x8B5F, 0x8B60, 0x8B61, 0x8B62, 0x8B63, 0x8B64, 0x8B65, - 0x8B67, 0x8B68, 0x8B69, 0x8B6A, 0x8B6B, 0x8B6D, 0x8B6E, 0x8B6F, - 0x8B70, 0x8B71, 0x8B72, 0x8B73, 0x8B74, 0x8B75, 0x8B76, 0x8B77, - 0x8B78, 0x8B79, 0x8B7A, 0x8B7B, 0x8B7C, 0x8B7D, 0x8B7E, 0x8B7F, - 0x8B80, 0x8B81, 0x8B82, 0x8B83, 0x8B84, 0x8B85, 0x8B86, 0, - 0x8B87, 0x8B88, 0x8B89, 0x8B8A, 0x8B8B, 0x8B8C, 0x8B8D, 0x8B8E, - 0x8B8F, 0x8B90, 0x8B91, 0x8B92, 0x8B93, 0x8B94, 0x8B95, 0x8B96, - 0x8B97, 0x8B98, 0x8B99, 0x8B9A, 0x8B9B, 0x8B9C, 0x8B9D, 0x8B9E, - 0x8B9F, 0x8BAC, 0x8BB1, 0x8BBB, 0x8BC7, 0x8BD0, 0x8BEA, 0x8C09, - 0x8C1E, 0x4F4F, 0x6CE8, 0x795D, 0x9A7B, 0x6293, 0x722A, 0x62FD, - 0x4E13, 0x7816, 0x8F6C, 0x64B0, 0x8D5A, 0x7BC6, 0x6869, 0x5E84, - 0x88C5, 0x5986, 0x649E, 0x58EE, 0x72B6, 0x690E, 0x9525, 0x8FFD, - 0x8D58, 0x5760, 0x7F00, 0x8C06, 0x51C6, 0x6349, 0x62D9, 0x5353, - 0x684C, 0x7422, 0x8301, 0x914C, 0x5544, 0x7740, 0x707C, 0x6D4A, - 0x5179, 0x54A8, 0x8D44, 0x59FF, 0x6ECB, 0x6DC4, 0x5B5C, 0x7D2B, - 0x4ED4, 0x7C7D, 0x6ED3, 0x5B50, 0x81EA, 0x6E0D, 0x5B57, 0x9B03, - 0x68D5, 0x8E2A, 0x5B97, 0x7EFC, 0x603B, 0x7EB5, 0x90B9, 0x8D70, - 0x594F, 0x63CD, 0x79DF, 0x8DB3, 0x5352, 0x65CF, 0x7956, 0x8BC5, - 0x963B, 0x7EC4, 0x94BB, 0x7E82, 0x5634, 0x9189, 0x6700, 0x7F6A, - 0x5C0A, 0x9075, 0x6628, 0x5DE6, 0x4F50, 0x67DE, 0x505A, 0x4F5C, - 0x5750, 0x5EA7, 0, 0, 0, 0, 0, 0, -plane d8 -at 0x40 - 0x8C38, 0x8C39, 0x8C3A, 0x8C3B, 0x8C3C, 0x8C3D, 0x8C3E, 0x8C3F, - 0x8C40, 0x8C42, 0x8C43, 0x8C44, 0x8C45, 0x8C48, 0x8C4A, 0x8C4B, - 0x8C4D, 0x8C4E, 0x8C4F, 0x8C50, 0x8C51, 0x8C52, 0x8C53, 0x8C54, - 0x8C56, 0x8C57, 0x8C58, 0x8C59, 0x8C5B, 0x8C5C, 0x8C5D, 0x8C5E, - 0x8C5F, 0x8C60, 0x8C63, 0x8C64, 0x8C65, 0x8C66, 0x8C67, 0x8C68, - 0x8C69, 0x8C6C, 0x8C6D, 0x8C6E, 0x8C6F, 0x8C70, 0x8C71, 0x8C72, - 0x8C74, 0x8C75, 0x8C76, 0x8C77, 0x8C7B, 0x8C7C, 0x8C7D, 0x8C7E, - 0x8C7F, 0x8C80, 0x8C81, 0x8C83, 0x8C84, 0x8C86, 0x8C87, 0, - 0x8C88, 0x8C8B, 0x8C8D, 0x8C8E, 0x8C8F, 0x8C90, 0x8C91, 0x8C92, - 0x8C93, 0x8C95, 0x8C96, 0x8C97, 0x8C99, 0x8C9A, 0x8C9B, 0x8C9C, - 0x8C9D, 0x8C9E, 0x8C9F, 0x8CA0, 0x8CA1, 0x8CA2, 0x8CA3, 0x8CA4, - 0x8CA5, 0x8CA6, 0x8CA7, 0x8CA8, 0x8CA9, 0x8CAA, 0x8CAB, 0x8CAC, - 0x8CAD, 0x4E8D, 0x4E0C, 0x5140, 0x4E10, 0x5EFF, 0x5345, 0x4E15, - 0x4E98, 0x4E1E, 0x9B32, 0x5B6C, 0x5669, 0x4E28, 0x79BA, 0x4E3F, - 0x5315, 0x4E47, 0x592D, 0x723B, 0x536E, 0x6C10, 0x56DF, 0x80E4, - 0x9997, 0x6BD3, 0x777E, 0x9F17, 0x4E36, 0x4E9F, 0x9F10, 0x4E5C, - 0x4E69, 0x4E93, 0x8288, 0x5B5B, 0x556C, 0x560F, 0x4EC4, 0x538D, - 0x539D, 0x53A3, 0x53A5, 0x53AE, 0x9765, 0x8D5D, 0x531A, 0x53F5, - 0x5326, 0x532E, 0x533E, 0x8D5C, 0x5366, 0x5363, 0x5202, 0x5208, - 0x520E, 0x522D, 0x5233, 0x523F, 0x5240, 0x524C, 0x525E, 0x5261, - 0x525C, 0x84AF, 0x527D, 0x5282, 0x5281, 0x5290, 0x5293, 0x5182, - 0x7F54, 0x4EBB, 0x4EC3, 0x4EC9, 0x4EC2, 0x4EE8, 0x4EE1, 0x4EEB, - 0x4EDE, 0x4F1B, 0x4EF3, 0x4F22, 0x4F64, 0x4EF5, 0x4F25, 0x4F27, - 0x4F09, 0x4F2B, 0x4F5E, 0x4F67, 0x6538, 0x4F5A, 0x4F5D, 0, -plane d9 -at 0x40 - 0x8CAE, 0x8CAF, 0x8CB0, 0x8CB1, 0x8CB2, 0x8CB3, 0x8CB4, 0x8CB5, - 0x8CB6, 0x8CB7, 0x8CB8, 0x8CB9, 0x8CBA, 0x8CBB, 0x8CBC, 0x8CBD, - 0x8CBE, 0x8CBF, 0x8CC0, 0x8CC1, 0x8CC2, 0x8CC3, 0x8CC4, 0x8CC5, - 0x8CC6, 0x8CC7, 0x8CC8, 0x8CC9, 0x8CCA, 0x8CCB, 0x8CCC, 0x8CCD, - 0x8CCE, 0x8CCF, 0x8CD0, 0x8CD1, 0x8CD2, 0x8CD3, 0x8CD4, 0x8CD5, - 0x8CD6, 0x8CD7, 0x8CD8, 0x8CD9, 0x8CDA, 0x8CDB, 0x8CDC, 0x8CDD, - 0x8CDE, 0x8CDF, 0x8CE0, 0x8CE1, 0x8CE2, 0x8CE3, 0x8CE4, 0x8CE5, - 0x8CE6, 0x8CE7, 0x8CE8, 0x8CE9, 0x8CEA, 0x8CEB, 0x8CEC, 0, - 0x8CED, 0x8CEE, 0x8CEF, 0x8CF0, 0x8CF1, 0x8CF2, 0x8CF3, 0x8CF4, - 0x8CF5, 0x8CF6, 0x8CF7, 0x8CF8, 0x8CF9, 0x8CFA, 0x8CFB, 0x8CFC, - 0x8CFD, 0x8CFE, 0x8CFF, 0x8D00, 0x8D01, 0x8D02, 0x8D03, 0x8D04, - 0x8D05, 0x8D06, 0x8D07, 0x8D08, 0x8D09, 0x8D0A, 0x8D0B, 0x8D0C, - 0x8D0D, 0x4F5F, 0x4F57, 0x4F32, 0x4F3D, 0x4F76, 0x4F74, 0x4F91, - 0x4F89, 0x4F83, 0x4F8F, 0x4F7E, 0x4F7B, 0x4FAA, 0x4F7C, 0x4FAC, - 0x4F94, 0x4FE6, 0x4FE8, 0x4FEA, 0x4FC5, 0x4FDA, 0x4FE3, 0x4FDC, - 0x4FD1, 0x4FDF, 0x4FF8, 0x5029, 0x504C, 0x4FF3, 0x502C, 0x500F, - 0x502E, 0x502D, 0x4FFE, 0x501C, 0x500C, 0x5025, 0x5028, 0x507E, - 0x5043, 0x5055, 0x5048, 0x504E, 0x506C, 0x507B, 0x50A5, 0x50A7, - 0x50A9, 0x50BA, 0x50D6, 0x5106, 0x50ED, 0x50EC, 0x50E6, 0x50EE, - 0x5107, 0x510B, 0x4EDD, 0x6C3D, 0x4F58, 0x4F65, 0x4FCE, 0x9FA0, - 0x6C46, 0x7C74, 0x516E, 0x5DFD, 0x9EC9, 0x9998, 0x5181, 0x5914, - 0x52F9, 0x530D, 0x8A07, 0x5310, 0x51EB, 0x5919, 0x5155, 0x4EA0, - 0x5156, 0x4EB3, 0x886E, 0x88A4, 0x4EB5, 0x8114, 0x88D2, 0x7980, - 0x5B34, 0x8803, 0x7FB8, 0x51AB, 0x51B1, 0x51BD, 0x51BC, 0, -plane da -at 0x40 - 0x8D0E, 0x8D0F, 0x8D10, 0x8D11, 0x8D12, 0x8D13, 0x8D14, 0x8D15, - 0x8D16, 0x8D17, 0x8D18, 0x8D19, 0x8D1A, 0x8D1B, 0x8D1C, 0x8D20, - 0x8D51, 0x8D52, 0x8D57, 0x8D5F, 0x8D65, 0x8D68, 0x8D69, 0x8D6A, - 0x8D6C, 0x8D6E, 0x8D6F, 0x8D71, 0x8D72, 0x8D78, 0x8D79, 0x8D7A, - 0x8D7B, 0x8D7C, 0x8D7D, 0x8D7E, 0x8D7F, 0x8D80, 0x8D82, 0x8D83, - 0x8D86, 0x8D87, 0x8D88, 0x8D89, 0x8D8C, 0x8D8D, 0x8D8E, 0x8D8F, - 0x8D90, 0x8D92, 0x8D93, 0x8D95, 0x8D96, 0x8D97, 0x8D98, 0x8D99, - 0x8D9A, 0x8D9B, 0x8D9C, 0x8D9D, 0x8D9E, 0x8DA0, 0x8DA1, 0, - 0x8DA2, 0x8DA4, 0x8DA5, 0x8DA6, 0x8DA7, 0x8DA8, 0x8DA9, 0x8DAA, - 0x8DAB, 0x8DAC, 0x8DAD, 0x8DAE, 0x8DAF, 0x8DB0, 0x8DB2, 0x8DB6, - 0x8DB7, 0x8DB9, 0x8DBB, 0x8DBD, 0x8DC0, 0x8DC1, 0x8DC2, 0x8DC5, - 0x8DC7, 0x8DC8, 0x8DC9, 0x8DCA, 0x8DCD, 0x8DD0, 0x8DD2, 0x8DD3, - 0x8DD4, 0x51C7, 0x5196, 0x51A2, 0x51A5, 0x8BA0, 0x8BA6, 0x8BA7, - 0x8BAA, 0x8BB4, 0x8BB5, 0x8BB7, 0x8BC2, 0x8BC3, 0x8BCB, 0x8BCF, - 0x8BCE, 0x8BD2, 0x8BD3, 0x8BD4, 0x8BD6, 0x8BD8, 0x8BD9, 0x8BDC, - 0x8BDF, 0x8BE0, 0x8BE4, 0x8BE8, 0x8BE9, 0x8BEE, 0x8BF0, 0x8BF3, - 0x8BF6, 0x8BF9, 0x8BFC, 0x8BFF, 0x8C00, 0x8C02, 0x8C04, 0x8C07, - 0x8C0C, 0x8C0F, 0x8C11, 0x8C12, 0x8C14, 0x8C15, 0x8C16, 0x8C19, - 0x8C1B, 0x8C18, 0x8C1D, 0x8C1F, 0x8C20, 0x8C21, 0x8C25, 0x8C27, - 0x8C2A, 0x8C2B, 0x8C2E, 0x8C2F, 0x8C32, 0x8C33, 0x8C35, 0x8C36, - 0x5369, 0x537A, 0x961D, 0x9622, 0x9621, 0x9631, 0x962A, 0x963D, - 0x963C, 0x9642, 0x9649, 0x9654, 0x965F, 0x9667, 0x966C, 0x9672, - 0x9674, 0x9688, 0x968D, 0x9697, 0x96B0, 0x9097, 0x909B, 0x909D, - 0x9099, 0x90AC, 0x90A1, 0x90B4, 0x90B3, 0x90B6, 0x90BA, 0, -plane db -at 0x40 - 0x8DD5, 0x8DD8, 0x8DD9, 0x8DDC, 0x8DE0, 0x8DE1, 0x8DE2, 0x8DE5, - 0x8DE6, 0x8DE7, 0x8DE9, 0x8DED, 0x8DEE, 0x8DF0, 0x8DF1, 0x8DF2, - 0x8DF4, 0x8DF6, 0x8DFC, 0x8DFE, 0x8DFF, 0x8E00, 0x8E01, 0x8E02, - 0x8E03, 0x8E04, 0x8E06, 0x8E07, 0x8E08, 0x8E0B, 0x8E0D, 0x8E0E, - 0x8E10, 0x8E11, 0x8E12, 0x8E13, 0x8E15, 0x8E16, 0x8E17, 0x8E18, - 0x8E19, 0x8E1A, 0x8E1B, 0x8E1C, 0x8E20, 0x8E21, 0x8E24, 0x8E25, - 0x8E26, 0x8E27, 0x8E28, 0x8E2B, 0x8E2D, 0x8E30, 0x8E32, 0x8E33, - 0x8E34, 0x8E36, 0x8E37, 0x8E38, 0x8E3B, 0x8E3C, 0x8E3E, 0, - 0x8E3F, 0x8E43, 0x8E45, 0x8E46, 0x8E4C, 0x8E4D, 0x8E4E, 0x8E4F, - 0x8E50, 0x8E53, 0x8E54, 0x8E55, 0x8E56, 0x8E57, 0x8E58, 0x8E5A, - 0x8E5B, 0x8E5C, 0x8E5D, 0x8E5E, 0x8E5F, 0x8E60, 0x8E61, 0x8E62, - 0x8E63, 0x8E64, 0x8E65, 0x8E67, 0x8E68, 0x8E6A, 0x8E6B, 0x8E6E, - 0x8E71, 0x90B8, 0x90B0, 0x90CF, 0x90C5, 0x90BE, 0x90D0, 0x90C4, - 0x90C7, 0x90D3, 0x90E6, 0x90E2, 0x90DC, 0x90D7, 0x90DB, 0x90EB, - 0x90EF, 0x90FE, 0x9104, 0x9122, 0x911E, 0x9123, 0x9131, 0x912F, - 0x9139, 0x9143, 0x9146, 0x520D, 0x5942, 0x52A2, 0x52AC, 0x52AD, - 0x52BE, 0x54FF, 0x52D0, 0x52D6, 0x52F0, 0x53DF, 0x71EE, 0x77CD, - 0x5EF4, 0x51F5, 0x51FC, 0x9B2F, 0x53B6, 0x5F01, 0x755A, 0x5DEF, - 0x574C, 0x57A9, 0x57A1, 0x587E, 0x58BC, 0x58C5, 0x58D1, 0x5729, - 0x572C, 0x572A, 0x5733, 0x5739, 0x572E, 0x572F, 0x575C, 0x573B, - 0x5742, 0x5769, 0x5785, 0x576B, 0x5786, 0x577C, 0x577B, 0x5768, - 0x576D, 0x5776, 0x5773, 0x57AD, 0x57A4, 0x578C, 0x57B2, 0x57CF, - 0x57A7, 0x57B4, 0x5793, 0x57A0, 0x57D5, 0x57D8, 0x57DA, 0x57D9, - 0x57D2, 0x57B8, 0x57F4, 0x57EF, 0x57F8, 0x57E4, 0x57DD, 0, -plane dc -at 0x40 - 0x8E73, 0x8E75, 0x8E77, 0x8E78, 0x8E79, 0x8E7A, 0x8E7B, 0x8E7D, - 0x8E7E, 0x8E80, 0x8E82, 0x8E83, 0x8E84, 0x8E86, 0x8E88, 0x8E89, - 0x8E8A, 0x8E8B, 0x8E8C, 0x8E8D, 0x8E8E, 0x8E91, 0x8E92, 0x8E93, - 0x8E95, 0x8E96, 0x8E97, 0x8E98, 0x8E99, 0x8E9A, 0x8E9B, 0x8E9D, - 0x8E9F, 0x8EA0, 0x8EA1, 0x8EA2, 0x8EA3, 0x8EA4, 0x8EA5, 0x8EA6, - 0x8EA7, 0x8EA8, 0x8EA9, 0x8EAA, 0x8EAD, 0x8EAE, 0x8EB0, 0x8EB1, - 0x8EB3, 0x8EB4, 0x8EB5, 0x8EB6, 0x8EB7, 0x8EB8, 0x8EB9, 0x8EBB, - 0x8EBC, 0x8EBD, 0x8EBE, 0x8EBF, 0x8EC0, 0x8EC1, 0x8EC2, 0, - 0x8EC3, 0x8EC4, 0x8EC5, 0x8EC6, 0x8EC7, 0x8EC8, 0x8EC9, 0x8ECA, - 0x8ECB, 0x8ECC, 0x8ECD, 0x8ECF, 0x8ED0, 0x8ED1, 0x8ED2, 0x8ED3, - 0x8ED4, 0x8ED5, 0x8ED6, 0x8ED7, 0x8ED8, 0x8ED9, 0x8EDA, 0x8EDB, - 0x8EDC, 0x8EDD, 0x8EDE, 0x8EDF, 0x8EE0, 0x8EE1, 0x8EE2, 0x8EE3, - 0x8EE4, 0x580B, 0x580D, 0x57FD, 0x57ED, 0x5800, 0x581E, 0x5819, - 0x5844, 0x5820, 0x5865, 0x586C, 0x5881, 0x5889, 0x589A, 0x5880, - 0x99A8, 0x9F19, 0x61FF, 0x8279, 0x827D, 0x827F, 0x828F, 0x828A, - 0x82A8, 0x8284, 0x828E, 0x8291, 0x8297, 0x8299, 0x82AB, 0x82B8, - 0x82BE, 0x82B0, 0x82C8, 0x82CA, 0x82E3, 0x8298, 0x82B7, 0x82AE, - 0x82CB, 0x82CC, 0x82C1, 0x82A9, 0x82B4, 0x82A1, 0x82AA, 0x829F, - 0x82C4, 0x82CE, 0x82A4, 0x82E1, 0x8309, 0x82F7, 0x82E4, 0x830F, - 0x8307, 0x82DC, 0x82F4, 0x82D2, 0x82D8, 0x830C, 0x82FB, 0x82D3, - 0x8311, 0x831A, 0x8306, 0x8314, 0x8315, 0x82E0, 0x82D5, 0x831C, - 0x8351, 0x835B, 0x835C, 0x8308, 0x8392, 0x833C, 0x8334, 0x8331, - 0x839B, 0x835E, 0x832F, 0x834F, 0x8347, 0x8343, 0x835F, 0x8340, - 0x8317, 0x8360, 0x832D, 0x833A, 0x8333, 0x8366, 0x8365, 0, -plane dd -at 0x40 - 0x8EE5, 0x8EE6, 0x8EE7, 0x8EE8, 0x8EE9, 0x8EEA, 0x8EEB, 0x8EEC, - 0x8EED, 0x8EEE, 0x8EEF, 0x8EF0, 0x8EF1, 0x8EF2, 0x8EF3, 0x8EF4, - 0x8EF5, 0x8EF6, 0x8EF7, 0x8EF8, 0x8EF9, 0x8EFA, 0x8EFB, 0x8EFC, - 0x8EFD, 0x8EFE, 0x8EFF, 0x8F00, 0x8F01, 0x8F02, 0x8F03, 0x8F04, - 0x8F05, 0x8F06, 0x8F07, 0x8F08, 0x8F09, 0x8F0A, 0x8F0B, 0x8F0C, - 0x8F0D, 0x8F0E, 0x8F0F, 0x8F10, 0x8F11, 0x8F12, 0x8F13, 0x8F14, - 0x8F15, 0x8F16, 0x8F17, 0x8F18, 0x8F19, 0x8F1A, 0x8F1B, 0x8F1C, - 0x8F1D, 0x8F1E, 0x8F1F, 0x8F20, 0x8F21, 0x8F22, 0x8F23, 0, - 0x8F24, 0x8F25, 0x8F26, 0x8F27, 0x8F28, 0x8F29, 0x8F2A, 0x8F2B, - 0x8F2C, 0x8F2D, 0x8F2E, 0x8F2F, 0x8F30, 0x8F31, 0x8F32, 0x8F33, - 0x8F34, 0x8F35, 0x8F36, 0x8F37, 0x8F38, 0x8F39, 0x8F3A, 0x8F3B, - 0x8F3C, 0x8F3D, 0x8F3E, 0x8F3F, 0x8F40, 0x8F41, 0x8F42, 0x8F43, - 0x8F44, 0x8368, 0x831B, 0x8369, 0x836C, 0x836A, 0x836D, 0x836E, - 0x83B0, 0x8378, 0x83B3, 0x83B4, 0x83A0, 0x83AA, 0x8393, 0x839C, - 0x8385, 0x837C, 0x83B6, 0x83A9, 0x837D, 0x83B8, 0x837B, 0x8398, - 0x839E, 0x83A8, 0x83BA, 0x83BC, 0x83C1, 0x8401, 0x83E5, 0x83D8, - 0x5807, 0x8418, 0x840B, 0x83DD, 0x83FD, 0x83D6, 0x841C, 0x8438, - 0x8411, 0x8406, 0x83D4, 0x83DF, 0x840F, 0x8403, 0x83F8, 0x83F9, - 0x83EA, 0x83C5, 0x83C0, 0x8426, 0x83F0, 0x83E1, 0x845C, 0x8451, - 0x845A, 0x8459, 0x8473, 0x8487, 0x8488, 0x847A, 0x8489, 0x8478, - 0x843C, 0x8446, 0x8469, 0x8476, 0x848C, 0x848E, 0x8431, 0x846D, - 0x84C1, 0x84CD, 0x84D0, 0x84E6, 0x84BD, 0x84D3, 0x84CA, 0x84BF, - 0x84BA, 0x84E0, 0x84A1, 0x84B9, 0x84B4, 0x8497, 0x84E5, 0x84E3, - 0x850C, 0x750D, 0x8538, 0x84F0, 0x8539, 0x851F, 0x853A, 0, -plane de -at 0x40 - 0x8F45, 0x8F46, 0x8F47, 0x8F48, 0x8F49, 0x8F4A, 0x8F4B, 0x8F4C, - 0x8F4D, 0x8F4E, 0x8F4F, 0x8F50, 0x8F51, 0x8F52, 0x8F53, 0x8F54, - 0x8F55, 0x8F56, 0x8F57, 0x8F58, 0x8F59, 0x8F5A, 0x8F5B, 0x8F5C, - 0x8F5D, 0x8F5E, 0x8F5F, 0x8F60, 0x8F61, 0x8F62, 0x8F63, 0x8F64, - 0x8F65, 0x8F6A, 0x8F80, 0x8F8C, 0x8F92, 0x8F9D, 0x8FA0, 0x8FA1, - 0x8FA2, 0x8FA4, 0x8FA5, 0x8FA6, 0x8FA7, 0x8FAA, 0x8FAC, 0x8FAD, - 0x8FAE, 0x8FAF, 0x8FB2, 0x8FB3, 0x8FB4, 0x8FB5, 0x8FB7, 0x8FB8, - 0x8FBA, 0x8FBB, 0x8FBC, 0x8FBF, 0x8FC0, 0x8FC3, 0x8FC6, 0, - 0x8FC9, 0x8FCA, 0x8FCB, 0x8FCC, 0x8FCD, 0x8FCF, 0x8FD2, 0x8FD6, - 0x8FD7, 0x8FDA, 0x8FE0, 0x8FE1, 0x8FE3, 0x8FE7, 0x8FEC, 0x8FEF, - 0x8FF1, 0x8FF2, 0x8FF4, 0x8FF5, 0x8FF6, 0x8FFA, 0x8FFB, 0x8FFC, - 0x8FFE, 0x8FFF, 0x9007, 0x9008, 0x900C, 0x900E, 0x9013, 0x9015, - 0x9018, 0x8556, 0x853B, 0x84FF, 0x84FC, 0x8559, 0x8548, 0x8568, - 0x8564, 0x855E, 0x857A, 0x77A2, 0x8543, 0x8572, 0x857B, 0x85A4, - 0x85A8, 0x8587, 0x858F, 0x8579, 0x85AE, 0x859C, 0x8585, 0x85B9, - 0x85B7, 0x85B0, 0x85D3, 0x85C1, 0x85DC, 0x85FF, 0x8627, 0x8605, - 0x8629, 0x8616, 0x863C, 0x5EFE, 0x5F08, 0x593C, 0x5941, 0x8037, - 0x5955, 0x595A, 0x5958, 0x530F, 0x5C22, 0x5C25, 0x5C2C, 0x5C34, - 0x624C, 0x626A, 0x629F, 0x62BB, 0x62CA, 0x62DA, 0x62D7, 0x62EE, - 0x6322, 0x62F6, 0x6339, 0x634B, 0x6343, 0x63AD, 0x63F6, 0x6371, - 0x637A, 0x638E, 0x63B4, 0x636D, 0x63AC, 0x638A, 0x6369, 0x63AE, - 0x63BC, 0x63F2, 0x63F8, 0x63E0, 0x63FF, 0x63C4, 0x63DE, 0x63CE, - 0x6452, 0x63C6, 0x63BE, 0x6445, 0x6441, 0x640B, 0x641B, 0x6420, - 0x640C, 0x6426, 0x6421, 0x645E, 0x6484, 0x646D, 0x6496, 0, -plane df -at 0x40 - 0x9019, 0x901C, 0x9023, 0x9024, 0x9025, 0x9027, 0x9028, 0x9029, - 0x902A, 0x902B, 0x902C, 0x9030, 0x9031, 0x9032, 0x9033, 0x9034, - 0x9037, 0x9039, 0x903A, 0x903D, 0x903F, 0x9040, 0x9043, 0x9045, - 0x9046, 0x9048, 0x9049, 0x904A, 0x904B, 0x904C, 0x904E, 0x9054, - 0x9055, 0x9056, 0x9059, 0x905A, 0x905C, 0x905D, 0x905E, 0x905F, - 0x9060, 0x9061, 0x9064, 0x9066, 0x9067, 0x9069, 0x906A, 0x906B, - 0x906C, 0x906F, 0x9070, 0x9071, 0x9072, 0x9073, 0x9076, 0x9077, - 0x9078, 0x9079, 0x907A, 0x907B, 0x907C, 0x907E, 0x9081, 0, - 0x9084, 0x9085, 0x9086, 0x9087, 0x9089, 0x908A, 0x908C, 0x908D, - 0x908E, 0x908F, 0x9090, 0x9092, 0x9094, 0x9096, 0x9098, 0x909A, - 0x909C, 0x909E, 0x909F, 0x90A0, 0x90A4, 0x90A5, 0x90A7, 0x90A8, - 0x90A9, 0x90AB, 0x90AD, 0x90B2, 0x90B7, 0x90BC, 0x90BD, 0x90BF, - 0x90C0, 0x647A, 0x64B7, 0x64B8, 0x6499, 0x64BA, 0x64C0, 0x64D0, - 0x64D7, 0x64E4, 0x64E2, 0x6509, 0x6525, 0x652E, 0x5F0B, 0x5FD2, - 0x7519, 0x5F11, 0x535F, 0x53F1, 0x53FD, 0x53E9, 0x53E8, 0x53FB, - 0x5412, 0x5416, 0x5406, 0x544B, 0x5452, 0x5453, 0x5454, 0x5456, - 0x5443, 0x5421, 0x5457, 0x5459, 0x5423, 0x5432, 0x5482, 0x5494, - 0x5477, 0x5471, 0x5464, 0x549A, 0x549B, 0x5484, 0x5476, 0x5466, - 0x549D, 0x54D0, 0x54AD, 0x54C2, 0x54B4, 0x54D2, 0x54A7, 0x54A6, - 0x54D3, 0x54D4, 0x5472, 0x54A3, 0x54D5, 0x54BB, 0x54BF, 0x54CC, - 0x54D9, 0x54DA, 0x54DC, 0x54A9, 0x54AA, 0x54A4, 0x54DD, 0x54CF, - 0x54DE, 0x551B, 0x54E7, 0x5520, 0x54FD, 0x5514, 0x54F3, 0x5522, - 0x5523, 0x550F, 0x5511, 0x5527, 0x552A, 0x5567, 0x558F, 0x55B5, - 0x5549, 0x556D, 0x5541, 0x5555, 0x553F, 0x5550, 0x553C, 0, -plane e0 -at 0x40 - 0x90C2, 0x90C3, 0x90C6, 0x90C8, 0x90C9, 0x90CB, 0x90CC, 0x90CD, - 0x90D2, 0x90D4, 0x90D5, 0x90D6, 0x90D8, 0x90D9, 0x90DA, 0x90DE, - 0x90DF, 0x90E0, 0x90E3, 0x90E4, 0x90E5, 0x90E9, 0x90EA, 0x90EC, - 0x90EE, 0x90F0, 0x90F1, 0x90F2, 0x90F3, 0x90F5, 0x90F6, 0x90F7, - 0x90F9, 0x90FA, 0x90FB, 0x90FC, 0x90FF, 0x9100, 0x9101, 0x9103, - 0x9105, 0x9106, 0x9107, 0x9108, 0x9109, 0x910A, 0x910B, 0x910C, - 0x910D, 0x910E, 0x910F, 0x9110, 0x9111, 0x9112, 0x9113, 0x9114, - 0x9115, 0x9116, 0x9117, 0x9118, 0x911A, 0x911B, 0x911C, 0, - 0x911D, 0x911F, 0x9120, 0x9121, 0x9124, 0x9125, 0x9126, 0x9127, - 0x9128, 0x9129, 0x912A, 0x912B, 0x912C, 0x912D, 0x912E, 0x9130, - 0x9132, 0x9133, 0x9134, 0x9135, 0x9136, 0x9137, 0x9138, 0x913A, - 0x913B, 0x913C, 0x913D, 0x913E, 0x913F, 0x9140, 0x9141, 0x9142, - 0x9144, 0x5537, 0x5556, 0x5575, 0x5576, 0x5577, 0x5533, 0x5530, - 0x555C, 0x558B, 0x55D2, 0x5583, 0x55B1, 0x55B9, 0x5588, 0x5581, - 0x559F, 0x557E, 0x55D6, 0x5591, 0x557B, 0x55DF, 0x55BD, 0x55BE, - 0x5594, 0x5599, 0x55EA, 0x55F7, 0x55C9, 0x561F, 0x55D1, 0x55EB, - 0x55EC, 0x55D4, 0x55E6, 0x55DD, 0x55C4, 0x55EF, 0x55E5, 0x55F2, - 0x55F3, 0x55CC, 0x55CD, 0x55E8, 0x55F5, 0x55E4, 0x8F94, 0x561E, - 0x5608, 0x560C, 0x5601, 0x5624, 0x5623, 0x55FE, 0x5600, 0x5627, - 0x562D, 0x5658, 0x5639, 0x5657, 0x562C, 0x564D, 0x5662, 0x5659, - 0x565C, 0x564C, 0x5654, 0x5686, 0x5664, 0x5671, 0x566B, 0x567B, - 0x567C, 0x5685, 0x5693, 0x56AF, 0x56D4, 0x56D7, 0x56DD, 0x56E1, - 0x56F5, 0x56EB, 0x56F9, 0x56FF, 0x5704, 0x570A, 0x5709, 0x571C, - 0x5E0F, 0x5E19, 0x5E14, 0x5E11, 0x5E31, 0x5E3B, 0x5E3C, 0, -plane e1 -at 0x40 - 0x9145, 0x9147, 0x9148, 0x9151, 0x9153, 0x9154, 0x9155, 0x9156, - 0x9158, 0x9159, 0x915B, 0x915C, 0x915F, 0x9160, 0x9166, 0x9167, - 0x9168, 0x916B, 0x916D, 0x9173, 0x917A, 0x917B, 0x917C, 0x9180, - 0x9181, 0x9182, 0x9183, 0x9184, 0x9186, 0x9188, 0x918A, 0x918E, - 0x918F, 0x9193, 0x9194, 0x9195, 0x9196, 0x9197, 0x9198, 0x9199, - 0x919C, 0x919D, 0x919E, 0x919F, 0x91A0, 0x91A1, 0x91A4, 0x91A5, - 0x91A6, 0x91A7, 0x91A8, 0x91A9, 0x91AB, 0x91AC, 0x91B0, 0x91B1, - 0x91B2, 0x91B3, 0x91B6, 0x91B7, 0x91B8, 0x91B9, 0x91BB, 0, - 0x91BC, 0x91BD, 0x91BE, 0x91BF, 0x91C0, 0x91C1, 0x91C2, 0x91C3, - 0x91C4, 0x91C5, 0x91C6, 0x91C8, 0x91CB, 0x91D0, 0x91D2, 0x91D3, - 0x91D4, 0x91D5, 0x91D6, 0x91D7, 0x91D8, 0x91D9, 0x91DA, 0x91DB, - 0x91DD, 0x91DE, 0x91DF, 0x91E0, 0x91E1, 0x91E2, 0x91E3, 0x91E4, - 0x91E5, 0x5E37, 0x5E44, 0x5E54, 0x5E5B, 0x5E5E, 0x5E61, 0x5C8C, - 0x5C7A, 0x5C8D, 0x5C90, 0x5C96, 0x5C88, 0x5C98, 0x5C99, 0x5C91, - 0x5C9A, 0x5C9C, 0x5CB5, 0x5CA2, 0x5CBD, 0x5CAC, 0x5CAB, 0x5CB1, - 0x5CA3, 0x5CC1, 0x5CB7, 0x5CC4, 0x5CD2, 0x5CE4, 0x5CCB, 0x5CE5, - 0x5D02, 0x5D03, 0x5D27, 0x5D26, 0x5D2E, 0x5D24, 0x5D1E, 0x5D06, - 0x5D1B, 0x5D58, 0x5D3E, 0x5D34, 0x5D3D, 0x5D6C, 0x5D5B, 0x5D6F, - 0x5D5D, 0x5D6B, 0x5D4B, 0x5D4A, 0x5D69, 0x5D74, 0x5D82, 0x5D99, - 0x5D9D, 0x8C73, 0x5DB7, 0x5DC5, 0x5F73, 0x5F77, 0x5F82, 0x5F87, - 0x5F89, 0x5F8C, 0x5F95, 0x5F99, 0x5F9C, 0x5FA8, 0x5FAD, 0x5FB5, - 0x5FBC, 0x8862, 0x5F61, 0x72AD, 0x72B0, 0x72B4, 0x72B7, 0x72B8, - 0x72C3, 0x72C1, 0x72CE, 0x72CD, 0x72D2, 0x72E8, 0x72EF, 0x72E9, - 0x72F2, 0x72F4, 0x72F7, 0x7301, 0x72F3, 0x7303, 0x72FA, 0, -plane e2 -at 0x40 - 0x91E6, 0x91E7, 0x91E8, 0x91E9, 0x91EA, 0x91EB, 0x91EC, 0x91ED, - 0x91EE, 0x91EF, 0x91F0, 0x91F1, 0x91F2, 0x91F3, 0x91F4, 0x91F5, - 0x91F6, 0x91F7, 0x91F8, 0x91F9, 0x91FA, 0x91FB, 0x91FC, 0x91FD, - 0x91FE, 0x91FF, 0x9200, 0x9201, 0x9202, 0x9203, 0x9204, 0x9205, - 0x9206, 0x9207, 0x9208, 0x9209, 0x920A, 0x920B, 0x920C, 0x920D, - 0x920E, 0x920F, 0x9210, 0x9211, 0x9212, 0x9213, 0x9214, 0x9215, - 0x9216, 0x9217, 0x9218, 0x9219, 0x921A, 0x921B, 0x921C, 0x921D, - 0x921E, 0x921F, 0x9220, 0x9221, 0x9222, 0x9223, 0x9224, 0, - 0x9225, 0x9226, 0x9227, 0x9228, 0x9229, 0x922A, 0x922B, 0x922C, - 0x922D, 0x922E, 0x922F, 0x9230, 0x9231, 0x9232, 0x9233, 0x9234, - 0x9235, 0x9236, 0x9237, 0x9238, 0x9239, 0x923A, 0x923B, 0x923C, - 0x923D, 0x923E, 0x923F, 0x9240, 0x9241, 0x9242, 0x9243, 0x9244, - 0x9245, 0x72FB, 0x7317, 0x7313, 0x7321, 0x730A, 0x731E, 0x731D, - 0x7315, 0x7322, 0x7339, 0x7325, 0x732C, 0x7338, 0x7331, 0x7350, - 0x734D, 0x7357, 0x7360, 0x736C, 0x736F, 0x737E, 0x821B, 0x5925, - 0x98E7, 0x5924, 0x5902, 0x9963, 0x9967, 0x9968, 0x9969, 0x996A, - 0x996B, 0x996C, 0x9974, 0x9977, 0x997D, 0x9980, 0x9984, 0x9987, - 0x998A, 0x998D, 0x9990, 0x9991, 0x9993, 0x9994, 0x9995, 0x5E80, - 0x5E91, 0x5E8B, 0x5E96, 0x5EA5, 0x5EA0, 0x5EB9, 0x5EB5, 0x5EBE, - 0x5EB3, 0x8D53, 0x5ED2, 0x5ED1, 0x5EDB, 0x5EE8, 0x5EEA, 0x81BA, - 0x5FC4, 0x5FC9, 0x5FD6, 0x5FCF, 0x6003, 0x5FEE, 0x6004, 0x5FE1, - 0x5FE4, 0x5FFE, 0x6005, 0x6006, 0x5FEA, 0x5FED, 0x5FF8, 0x6019, - 0x6035, 0x6026, 0x601B, 0x600F, 0x600D, 0x6029, 0x602B, 0x600A, - 0x603F, 0x6021, 0x6078, 0x6079, 0x607B, 0x607A, 0x6042, 0, -plane e3 -at 0x40 - 0x9246, 0x9247, 0x9248, 0x9249, 0x924A, 0x924B, 0x924C, 0x924D, - 0x924E, 0x924F, 0x9250, 0x9251, 0x9252, 0x9253, 0x9254, 0x9255, - 0x9256, 0x9257, 0x9258, 0x9259, 0x925A, 0x925B, 0x925C, 0x925D, - 0x925E, 0x925F, 0x9260, 0x9261, 0x9262, 0x9263, 0x9264, 0x9265, - 0x9266, 0x9267, 0x9268, 0x9269, 0x926A, 0x926B, 0x926C, 0x926D, - 0x926E, 0x926F, 0x9270, 0x9271, 0x9272, 0x9273, 0x9275, 0x9276, - 0x9277, 0x9278, 0x9279, 0x927A, 0x927B, 0x927C, 0x927D, 0x927E, - 0x927F, 0x9280, 0x9281, 0x9282, 0x9283, 0x9284, 0x9285, 0, - 0x9286, 0x9287, 0x9288, 0x9289, 0x928A, 0x928B, 0x928C, 0x928D, - 0x928F, 0x9290, 0x9291, 0x9292, 0x9293, 0x9294, 0x9295, 0x9296, - 0x9297, 0x9298, 0x9299, 0x929A, 0x929B, 0x929C, 0x929D, 0x929E, - 0x929F, 0x92A0, 0x92A1, 0x92A2, 0x92A3, 0x92A4, 0x92A5, 0x92A6, - 0x92A7, 0x606A, 0x607D, 0x6096, 0x609A, 0x60AD, 0x609D, 0x6083, - 0x6092, 0x608C, 0x609B, 0x60EC, 0x60BB, 0x60B1, 0x60DD, 0x60D8, - 0x60C6, 0x60DA, 0x60B4, 0x6120, 0x6126, 0x6115, 0x6123, 0x60F4, - 0x6100, 0x610E, 0x612B, 0x614A, 0x6175, 0x61AC, 0x6194, 0x61A7, - 0x61B7, 0x61D4, 0x61F5, 0x5FDD, 0x96B3, 0x95E9, 0x95EB, 0x95F1, - 0x95F3, 0x95F5, 0x95F6, 0x95FC, 0x95FE, 0x9603, 0x9604, 0x9606, - 0x9608, 0x960A, 0x960B, 0x960C, 0x960D, 0x960F, 0x9612, 0x9615, - 0x9616, 0x9617, 0x9619, 0x961A, 0x4E2C, 0x723F, 0x6215, 0x6C35, - 0x6C54, 0x6C5C, 0x6C4A, 0x6CA3, 0x6C85, 0x6C90, 0x6C94, 0x6C8C, - 0x6C68, 0x6C69, 0x6C74, 0x6C76, 0x6C86, 0x6CA9, 0x6CD0, 0x6CD4, - 0x6CAD, 0x6CF7, 0x6CF8, 0x6CF1, 0x6CD7, 0x6CB2, 0x6CE0, 0x6CD6, - 0x6CFA, 0x6CEB, 0x6CEE, 0x6CB1, 0x6CD3, 0x6CEF, 0x6CFE, 0, -plane e4 -at 0x40 - 0x92A8, 0x92A9, 0x92AA, 0x92AB, 0x92AC, 0x92AD, 0x92AF, 0x92B0, - 0x92B1, 0x92B2, 0x92B3, 0x92B4, 0x92B5, 0x92B6, 0x92B7, 0x92B8, - 0x92B9, 0x92BA, 0x92BB, 0x92BC, 0x92BD, 0x92BE, 0x92BF, 0x92C0, - 0x92C1, 0x92C2, 0x92C3, 0x92C4, 0x92C5, 0x92C6, 0x92C7, 0x92C9, - 0x92CA, 0x92CB, 0x92CC, 0x92CD, 0x92CE, 0x92CF, 0x92D0, 0x92D1, - 0x92D2, 0x92D3, 0x92D4, 0x92D5, 0x92D6, 0x92D7, 0x92D8, 0x92D9, - 0x92DA, 0x92DB, 0x92DC, 0x92DD, 0x92DE, 0x92DF, 0x92E0, 0x92E1, - 0x92E2, 0x92E3, 0x92E4, 0x92E5, 0x92E6, 0x92E7, 0x92E8, 0, - 0x92E9, 0x92EA, 0x92EB, 0x92EC, 0x92ED, 0x92EE, 0x92EF, 0x92F0, - 0x92F1, 0x92F2, 0x92F3, 0x92F4, 0x92F5, 0x92F6, 0x92F7, 0x92F8, - 0x92F9, 0x92FA, 0x92FB, 0x92FC, 0x92FD, 0x92FE, 0x92FF, 0x9300, - 0x9301, 0x9302, 0x9303, 0x9304, 0x9305, 0x9306, 0x9307, 0x9308, - 0x9309, 0x6D39, 0x6D27, 0x6D0C, 0x6D43, 0x6D48, 0x6D07, 0x6D04, - 0x6D19, 0x6D0E, 0x6D2B, 0x6D4D, 0x6D2E, 0x6D35, 0x6D1A, 0x6D4F, - 0x6D52, 0x6D54, 0x6D33, 0x6D91, 0x6D6F, 0x6D9E, 0x6DA0, 0x6D5E, - 0x6D93, 0x6D94, 0x6D5C, 0x6D60, 0x6D7C, 0x6D63, 0x6E1A, 0x6DC7, - 0x6DC5, 0x6DDE, 0x6E0E, 0x6DBF, 0x6DE0, 0x6E11, 0x6DE6, 0x6DDD, - 0x6DD9, 0x6E16, 0x6DAB, 0x6E0C, 0x6DAE, 0x6E2B, 0x6E6E, 0x6E4E, - 0x6E6B, 0x6EB2, 0x6E5F, 0x6E86, 0x6E53, 0x6E54, 0x6E32, 0x6E25, - 0x6E44, 0x6EDF, 0x6EB1, 0x6E98, 0x6EE0, 0x6F2D, 0x6EE2, 0x6EA5, - 0x6EA7, 0x6EBD, 0x6EBB, 0x6EB7, 0x6ED7, 0x6EB4, 0x6ECF, 0x6E8F, - 0x6EC2, 0x6E9F, 0x6F62, 0x6F46, 0x6F47, 0x6F24, 0x6F15, 0x6EF9, - 0x6F2F, 0x6F36, 0x6F4B, 0x6F74, 0x6F2A, 0x6F09, 0x6F29, 0x6F89, - 0x6F8D, 0x6F8C, 0x6F78, 0x6F72, 0x6F7C, 0x6F7A, 0x6FD1, 0, -plane e5 -at 0x40 - 0x930A, 0x930B, 0x930C, 0x930D, 0x930E, 0x930F, 0x9310, 0x9311, - 0x9312, 0x9313, 0x9314, 0x9315, 0x9316, 0x9317, 0x9318, 0x9319, - 0x931A, 0x931B, 0x931C, 0x931D, 0x931E, 0x931F, 0x9320, 0x9321, - 0x9322, 0x9323, 0x9324, 0x9325, 0x9326, 0x9327, 0x9328, 0x9329, - 0x932A, 0x932B, 0x932C, 0x932D, 0x932E, 0x932F, 0x9330, 0x9331, - 0x9332, 0x9333, 0x9334, 0x9335, 0x9336, 0x9337, 0x9338, 0x9339, - 0x933A, 0x933B, 0x933C, 0x933D, 0x933F, 0x9340, 0x9341, 0x9342, - 0x9343, 0x9344, 0x9345, 0x9346, 0x9347, 0x9348, 0x9349, 0, - 0x934A, 0x934B, 0x934C, 0x934D, 0x934E, 0x934F, 0x9350, 0x9351, - 0x9352, 0x9353, 0x9354, 0x9355, 0x9356, 0x9357, 0x9358, 0x9359, - 0x935A, 0x935B, 0x935C, 0x935D, 0x935E, 0x935F, 0x9360, 0x9361, - 0x9362, 0x9363, 0x9364, 0x9365, 0x9366, 0x9367, 0x9368, 0x9369, - 0x936B, 0x6FC9, 0x6FA7, 0x6FB9, 0x6FB6, 0x6FC2, 0x6FE1, 0x6FEE, - 0x6FDE, 0x6FE0, 0x6FEF, 0x701A, 0x7023, 0x701B, 0x7039, 0x7035, - 0x704F, 0x705E, 0x5B80, 0x5B84, 0x5B95, 0x5B93, 0x5BA5, 0x5BB8, - 0x752F, 0x9A9E, 0x6434, 0x5BE4, 0x5BEE, 0x8930, 0x5BF0, 0x8E47, - 0x8B07, 0x8FB6, 0x8FD3, 0x8FD5, 0x8FE5, 0x8FEE, 0x8FE4, 0x8FE9, - 0x8FE6, 0x8FF3, 0x8FE8, 0x9005, 0x9004, 0x900B, 0x9026, 0x9011, - 0x900D, 0x9016, 0x9021, 0x9035, 0x9036, 0x902D, 0x902F, 0x9044, - 0x9051, 0x9052, 0x9050, 0x9068, 0x9058, 0x9062, 0x905B, 0x66B9, - 0x9074, 0x907D, 0x9082, 0x9088, 0x9083, 0x908B, 0x5F50, 0x5F57, - 0x5F56, 0x5F58, 0x5C3B, 0x54AB, 0x5C50, 0x5C59, 0x5B71, 0x5C63, - 0x5C66, 0x7FBC, 0x5F2A, 0x5F29, 0x5F2D, 0x8274, 0x5F3C, 0x9B3B, - 0x5C6E, 0x5981, 0x5983, 0x598D, 0x59A9, 0x59AA, 0x59A3, 0, -plane e6 -at 0x40 - 0x936C, 0x936D, 0x936E, 0x936F, 0x9370, 0x9371, 0x9372, 0x9373, - 0x9374, 0x9375, 0x9376, 0x9377, 0x9378, 0x9379, 0x937A, 0x937B, - 0x937C, 0x937D, 0x937E, 0x937F, 0x9380, 0x9381, 0x9382, 0x9383, - 0x9384, 0x9385, 0x9386, 0x9387, 0x9388, 0x9389, 0x938A, 0x938B, - 0x938C, 0x938D, 0x938E, 0x9390, 0x9391, 0x9392, 0x9393, 0x9394, - 0x9395, 0x9396, 0x9397, 0x9398, 0x9399, 0x939A, 0x939B, 0x939C, - 0x939D, 0x939E, 0x939F, 0x93A0, 0x93A1, 0x93A2, 0x93A3, 0x93A4, - 0x93A5, 0x93A6, 0x93A7, 0x93A8, 0x93A9, 0x93AA, 0x93AB, 0, - 0x93AC, 0x93AD, 0x93AE, 0x93AF, 0x93B0, 0x93B1, 0x93B2, 0x93B3, - 0x93B4, 0x93B5, 0x93B6, 0x93B7, 0x93B8, 0x93B9, 0x93BA, 0x93BB, - 0x93BC, 0x93BD, 0x93BE, 0x93BF, 0x93C0, 0x93C1, 0x93C2, 0x93C3, - 0x93C4, 0x93C5, 0x93C6, 0x93C7, 0x93C8, 0x93C9, 0x93CB, 0x93CC, - 0x93CD, 0x5997, 0x59CA, 0x59AB, 0x599E, 0x59A4, 0x59D2, 0x59B2, - 0x59AF, 0x59D7, 0x59BE, 0x5A05, 0x5A06, 0x59DD, 0x5A08, 0x59E3, - 0x59D8, 0x59F9, 0x5A0C, 0x5A09, 0x5A32, 0x5A34, 0x5A11, 0x5A23, - 0x5A13, 0x5A40, 0x5A67, 0x5A4A, 0x5A55, 0x5A3C, 0x5A62, 0x5A75, - 0x80EC, 0x5AAA, 0x5A9B, 0x5A77, 0x5A7A, 0x5ABE, 0x5AEB, 0x5AB2, - 0x5AD2, 0x5AD4, 0x5AB8, 0x5AE0, 0x5AE3, 0x5AF1, 0x5AD6, 0x5AE6, - 0x5AD8, 0x5ADC, 0x5B09, 0x5B17, 0x5B16, 0x5B32, 0x5B37, 0x5B40, - 0x5C15, 0x5C1C, 0x5B5A, 0x5B65, 0x5B73, 0x5B51, 0x5B53, 0x5B62, - 0x9A75, 0x9A77, 0x9A78, 0x9A7A, 0x9A7F, 0x9A7D, 0x9A80, 0x9A81, - 0x9A85, 0x9A88, 0x9A8A, 0x9A90, 0x9A92, 0x9A93, 0x9A96, 0x9A98, - 0x9A9B, 0x9A9C, 0x9A9D, 0x9A9F, 0x9AA0, 0x9AA2, 0x9AA3, 0x9AA5, - 0x9AA7, 0x7E9F, 0x7EA1, 0x7EA3, 0x7EA5, 0x7EA8, 0x7EA9, 0, -plane e7 -at 0x40 - 0x93CE, 0x93CF, 0x93D0, 0x93D1, 0x93D2, 0x93D3, 0x93D4, 0x93D5, - 0x93D7, 0x93D8, 0x93D9, 0x93DA, 0x93DB, 0x93DC, 0x93DD, 0x93DE, - 0x93DF, 0x93E0, 0x93E1, 0x93E2, 0x93E3, 0x93E4, 0x93E5, 0x93E6, - 0x93E7, 0x93E8, 0x93E9, 0x93EA, 0x93EB, 0x93EC, 0x93ED, 0x93EE, - 0x93EF, 0x93F0, 0x93F1, 0x93F2, 0x93F3, 0x93F4, 0x93F5, 0x93F6, - 0x93F7, 0x93F8, 0x93F9, 0x93FA, 0x93FB, 0x93FC, 0x93FD, 0x93FE, - 0x93FF, 0x9400, 0x9401, 0x9402, 0x9403, 0x9404, 0x9405, 0x9406, - 0x9407, 0x9408, 0x9409, 0x940A, 0x940B, 0x940C, 0x940D, 0, - 0x940E, 0x940F, 0x9410, 0x9411, 0x9412, 0x9413, 0x9414, 0x9415, - 0x9416, 0x9417, 0x9418, 0x9419, 0x941A, 0x941B, 0x941C, 0x941D, - 0x941E, 0x941F, 0x9420, 0x9421, 0x9422, 0x9423, 0x9424, 0x9425, - 0x9426, 0x9427, 0x9428, 0x9429, 0x942A, 0x942B, 0x942C, 0x942D, - 0x942E, 0x7EAD, 0x7EB0, 0x7EBE, 0x7EC0, 0x7EC1, 0x7EC2, 0x7EC9, - 0x7ECB, 0x7ECC, 0x7ED0, 0x7ED4, 0x7ED7, 0x7EDB, 0x7EE0, 0x7EE1, - 0x7EE8, 0x7EEB, 0x7EEE, 0x7EEF, 0x7EF1, 0x7EF2, 0x7F0D, 0x7EF6, - 0x7EFA, 0x7EFB, 0x7EFE, 0x7F01, 0x7F02, 0x7F03, 0x7F07, 0x7F08, - 0x7F0B, 0x7F0C, 0x7F0F, 0x7F11, 0x7F12, 0x7F17, 0x7F19, 0x7F1C, - 0x7F1B, 0x7F1F, 0x7F21, 0x7F22, 0x7F23, 0x7F24, 0x7F25, 0x7F26, - 0x7F27, 0x7F2A, 0x7F2B, 0x7F2C, 0x7F2D, 0x7F2F, 0x7F30, 0x7F31, - 0x7F32, 0x7F33, 0x7F35, 0x5E7A, 0x757F, 0x5DDB, 0x753E, 0x9095, - 0x738E, 0x7391, 0x73AE, 0x73A2, 0x739F, 0x73CF, 0x73C2, 0x73D1, - 0x73B7, 0x73B3, 0x73C0, 0x73C9, 0x73C8, 0x73E5, 0x73D9, 0x987C, - 0x740A, 0x73E9, 0x73E7, 0x73DE, 0x73BA, 0x73F2, 0x740F, 0x742A, - 0x745B, 0x7426, 0x7425, 0x7428, 0x7430, 0x742E, 0x742C, 0, -plane e8 -at 0x40 - 0x942F, 0x9430, 0x9431, 0x9432, 0x9433, 0x9434, 0x9435, 0x9436, - 0x9437, 0x9438, 0x9439, 0x943A, 0x943B, 0x943C, 0x943D, 0x943F, - 0x9440, 0x9441, 0x9442, 0x9443, 0x9444, 0x9445, 0x9446, 0x9447, - 0x9448, 0x9449, 0x944A, 0x944B, 0x944C, 0x944D, 0x944E, 0x944F, - 0x9450, 0x9451, 0x9452, 0x9453, 0x9454, 0x9455, 0x9456, 0x9457, - 0x9458, 0x9459, 0x945A, 0x945B, 0x945C, 0x945D, 0x945E, 0x945F, - 0x9460, 0x9461, 0x9462, 0x9463, 0x9464, 0x9465, 0x9466, 0x9467, - 0x9468, 0x9469, 0x946A, 0x946C, 0x946D, 0x946E, 0x946F, 0, - 0x9470, 0x9471, 0x9472, 0x9473, 0x9474, 0x9475, 0x9476, 0x9477, - 0x9478, 0x9479, 0x947A, 0x947B, 0x947C, 0x947D, 0x947E, 0x947F, - 0x9480, 0x9481, 0x9482, 0x9483, 0x9484, 0x9491, 0x9496, 0x9498, - 0x94C7, 0x94CF, 0x94D3, 0x94D4, 0x94DA, 0x94E6, 0x94FB, 0x951C, - 0x9520, 0x741B, 0x741A, 0x7441, 0x745C, 0x7457, 0x7455, 0x7459, - 0x7477, 0x746D, 0x747E, 0x749C, 0x748E, 0x7480, 0x7481, 0x7487, - 0x748B, 0x749E, 0x74A8, 0x74A9, 0x7490, 0x74A7, 0x74D2, 0x74BA, - 0x97EA, 0x97EB, 0x97EC, 0x674C, 0x6753, 0x675E, 0x6748, 0x6769, - 0x67A5, 0x6787, 0x676A, 0x6773, 0x6798, 0x67A7, 0x6775, 0x67A8, - 0x679E, 0x67AD, 0x678B, 0x6777, 0x677C, 0x67F0, 0x6809, 0x67D8, - 0x680A, 0x67E9, 0x67B0, 0x680C, 0x67D9, 0x67B5, 0x67DA, 0x67B3, - 0x67DD, 0x6800, 0x67C3, 0x67B8, 0x67E2, 0x680E, 0x67C1, 0x67FD, - 0x6832, 0x6833, 0x6860, 0x6861, 0x684E, 0x6862, 0x6844, 0x6864, - 0x6883, 0x681D, 0x6855, 0x6866, 0x6841, 0x6867, 0x6840, 0x683E, - 0x684A, 0x6849, 0x6829, 0x68B5, 0x688F, 0x6874, 0x6877, 0x6893, - 0x686B, 0x68C2, 0x696E, 0x68FC, 0x691F, 0x6920, 0x68F9, 0, -plane e9 -at 0x40 - 0x9527, 0x9533, 0x953D, 0x9543, 0x9548, 0x954B, 0x9555, 0x955A, - 0x9560, 0x956E, 0x9574, 0x9575, 0x9577, 0x9578, 0x9579, 0x957A, - 0x957B, 0x957C, 0x957D, 0x957E, 0x9580, 0x9581, 0x9582, 0x9583, - 0x9584, 0x9585, 0x9586, 0x9587, 0x9588, 0x9589, 0x958A, 0x958B, - 0x958C, 0x958D, 0x958E, 0x958F, 0x9590, 0x9591, 0x9592, 0x9593, - 0x9594, 0x9595, 0x9596, 0x9597, 0x9598, 0x9599, 0x959A, 0x959B, - 0x959C, 0x959D, 0x959E, 0x959F, 0x95A0, 0x95A1, 0x95A2, 0x95A3, - 0x95A4, 0x95A5, 0x95A6, 0x95A7, 0x95A8, 0x95A9, 0x95AA, 0, - 0x95AB, 0x95AC, 0x95AD, 0x95AE, 0x95AF, 0x95B0, 0x95B1, 0x95B2, - 0x95B3, 0x95B4, 0x95B5, 0x95B6, 0x95B7, 0x95B8, 0x95B9, 0x95BA, - 0x95BB, 0x95BC, 0x95BD, 0x95BE, 0x95BF, 0x95C0, 0x95C1, 0x95C2, - 0x95C3, 0x95C4, 0x95C5, 0x95C6, 0x95C7, 0x95C8, 0x95C9, 0x95CA, - 0x95CB, 0x6924, 0x68F0, 0x690B, 0x6901, 0x6957, 0x68E3, 0x6910, - 0x6971, 0x6939, 0x6960, 0x6942, 0x695D, 0x6984, 0x696B, 0x6980, - 0x6998, 0x6978, 0x6934, 0x69CC, 0x6987, 0x6988, 0x69CE, 0x6989, - 0x6966, 0x6963, 0x6979, 0x699B, 0x69A7, 0x69BB, 0x69AB, 0x69AD, - 0x69D4, 0x69B1, 0x69C1, 0x69CA, 0x69DF, 0x6995, 0x69E0, 0x698D, - 0x69FF, 0x6A2F, 0x69ED, 0x6A17, 0x6A18, 0x6A65, 0x69F2, 0x6A44, - 0x6A3E, 0x6AA0, 0x6A50, 0x6A5B, 0x6A35, 0x6A8E, 0x6A79, 0x6A3D, - 0x6A28, 0x6A58, 0x6A7C, 0x6A91, 0x6A90, 0x6AA9, 0x6A97, 0x6AAB, - 0x7337, 0x7352, 0x6B81, 0x6B82, 0x6B87, 0x6B84, 0x6B92, 0x6B93, - 0x6B8D, 0x6B9A, 0x6B9B, 0x6BA1, 0x6BAA, 0x8F6B, 0x8F6D, 0x8F71, - 0x8F72, 0x8F73, 0x8F75, 0x8F76, 0x8F78, 0x8F77, 0x8F79, 0x8F7A, - 0x8F7C, 0x8F7E, 0x8F81, 0x8F82, 0x8F84, 0x8F87, 0x8F8B, 0, -plane ea -at 0x40 - 0x95CC, 0x95CD, 0x95CE, 0x95CF, 0x95D0, 0x95D1, 0x95D2, 0x95D3, - 0x95D4, 0x95D5, 0x95D6, 0x95D7, 0x95D8, 0x95D9, 0x95DA, 0x95DB, - 0x95DC, 0x95DD, 0x95DE, 0x95DF, 0x95E0, 0x95E1, 0x95E2, 0x95E3, - 0x95E4, 0x95E5, 0x95E6, 0x95E7, 0x95EC, 0x95FF, 0x9607, 0x9613, - 0x9618, 0x961B, 0x961E, 0x9620, 0x9623, 0x9624, 0x9625, 0x9626, - 0x9627, 0x9628, 0x9629, 0x962B, 0x962C, 0x962D, 0x962F, 0x9630, - 0x9637, 0x9638, 0x9639, 0x963A, 0x963E, 0x9641, 0x9643, 0x964A, - 0x964E, 0x964F, 0x9651, 0x9652, 0x9653, 0x9656, 0x9657, 0, - 0x9658, 0x9659, 0x965A, 0x965C, 0x965D, 0x965E, 0x9660, 0x9663, - 0x9665, 0x9666, 0x966B, 0x966D, 0x966E, 0x966F, 0x9670, 0x9671, - 0x9673, 0x9678, 0x9679, 0x967A, 0x967B, 0x967C, 0x967D, 0x967E, - 0x967F, 0x9680, 0x9681, 0x9682, 0x9683, 0x9684, 0x9687, 0x9689, - 0x968A, 0x8F8D, 0x8F8E, 0x8F8F, 0x8F98, 0x8F9A, 0x8ECE, 0x620B, - 0x6217, 0x621B, 0x621F, 0x6222, 0x6221, 0x6225, 0x6224, 0x622C, - 0x81E7, 0x74EF, 0x74F4, 0x74FF, 0x750F, 0x7511, 0x7513, 0x6534, - 0x65EE, 0x65EF, 0x65F0, 0x660A, 0x6619, 0x6772, 0x6603, 0x6615, - 0x6600, 0x7085, 0x66F7, 0x661D, 0x6634, 0x6631, 0x6636, 0x6635, - 0x8006, 0x665F, 0x6654, 0x6641, 0x664F, 0x6656, 0x6661, 0x6657, - 0x6677, 0x6684, 0x668C, 0x66A7, 0x669D, 0x66BE, 0x66DB, 0x66DC, - 0x66E6, 0x66E9, 0x8D32, 0x8D33, 0x8D36, 0x8D3B, 0x8D3D, 0x8D40, - 0x8D45, 0x8D46, 0x8D48, 0x8D49, 0x8D47, 0x8D4D, 0x8D55, 0x8D59, - 0x89C7, 0x89CA, 0x89CB, 0x89CC, 0x89CE, 0x89CF, 0x89D0, 0x89D1, - 0x726E, 0x729F, 0x725D, 0x7266, 0x726F, 0x727E, 0x727F, 0x7284, - 0x728B, 0x728D, 0x728F, 0x7292, 0x6308, 0x6332, 0x63B0, 0, -plane eb -at 0x40 - 0x968C, 0x968E, 0x9691, 0x9692, 0x9693, 0x9695, 0x9696, 0x969A, - 0x969B, 0x969D, 0x969E, 0x969F, 0x96A0, 0x96A1, 0x96A2, 0x96A3, - 0x96A4, 0x96A5, 0x96A6, 0x96A8, 0x96A9, 0x96AA, 0x96AB, 0x96AC, - 0x96AD, 0x96AE, 0x96AF, 0x96B1, 0x96B2, 0x96B4, 0x96B5, 0x96B7, - 0x96B8, 0x96BA, 0x96BB, 0x96BF, 0x96C2, 0x96C3, 0x96C8, 0x96CA, - 0x96CB, 0x96D0, 0x96D1, 0x96D3, 0x96D4, 0x96D6, 0x96D7, 0x96D8, - 0x96D9, 0x96DA, 0x96DB, 0x96DC, 0x96DD, 0x96DE, 0x96DF, 0x96E1, - 0x96E2, 0x96E3, 0x96E4, 0x96E5, 0x96E6, 0x96E7, 0x96EB, 0, - 0x96EC, 0x96ED, 0x96EE, 0x96F0, 0x96F1, 0x96F2, 0x96F4, 0x96F5, - 0x96F8, 0x96FA, 0x96FB, 0x96FC, 0x96FD, 0x96FF, 0x9702, 0x9703, - 0x9705, 0x970A, 0x970B, 0x970C, 0x9710, 0x9711, 0x9712, 0x9714, - 0x9715, 0x9717, 0x9718, 0x9719, 0x971A, 0x971B, 0x971D, 0x971F, - 0x9720, 0x643F, 0x64D8, 0x8004, 0x6BEA, 0x6BF3, 0x6BFD, 0x6BF5, - 0x6BF9, 0x6C05, 0x6C07, 0x6C06, 0x6C0D, 0x6C15, 0x6C18, 0x6C19, - 0x6C1A, 0x6C21, 0x6C29, 0x6C24, 0x6C2A, 0x6C32, 0x6535, 0x6555, - 0x656B, 0x724D, 0x7252, 0x7256, 0x7230, 0x8662, 0x5216, 0x809F, - 0x809C, 0x8093, 0x80BC, 0x670A, 0x80BD, 0x80B1, 0x80AB, 0x80AD, - 0x80B4, 0x80B7, 0x80E7, 0x80E8, 0x80E9, 0x80EA, 0x80DB, 0x80C2, - 0x80C4, 0x80D9, 0x80CD, 0x80D7, 0x6710, 0x80DD, 0x80EB, 0x80F1, - 0x80F4, 0x80ED, 0x810D, 0x810E, 0x80F2, 0x80FC, 0x6715, 0x8112, - 0x8C5A, 0x8136, 0x811E, 0x812C, 0x8118, 0x8132, 0x8148, 0x814C, - 0x8153, 0x8174, 0x8159, 0x815A, 0x8171, 0x8160, 0x8169, 0x817C, - 0x817D, 0x816D, 0x8167, 0x584D, 0x5AB5, 0x8188, 0x8182, 0x8191, - 0x6ED5, 0x81A3, 0x81AA, 0x81CC, 0x6726, 0x81CA, 0x81BB, 0, -plane ec -at 0x40 - 0x9721, 0x9722, 0x9723, 0x9724, 0x9725, 0x9726, 0x9727, 0x9728, - 0x9729, 0x972B, 0x972C, 0x972E, 0x972F, 0x9731, 0x9733, 0x9734, - 0x9735, 0x9736, 0x9737, 0x973A, 0x973B, 0x973C, 0x973D, 0x973F, - 0x9740, 0x9741, 0x9742, 0x9743, 0x9744, 0x9745, 0x9746, 0x9747, - 0x9748, 0x9749, 0x974A, 0x974B, 0x974C, 0x974D, 0x974E, 0x974F, - 0x9750, 0x9751, 0x9754, 0x9755, 0x9757, 0x9758, 0x975A, 0x975C, - 0x975D, 0x975F, 0x9763, 0x9764, 0x9766, 0x9767, 0x9768, 0x976A, - 0x976B, 0x976C, 0x976D, 0x976E, 0x976F, 0x9770, 0x9771, 0, - 0x9772, 0x9775, 0x9777, 0x9778, 0x9779, 0x977A, 0x977B, 0x977D, - 0x977E, 0x977F, 0x9780, 0x9781, 0x9782, 0x9783, 0x9784, 0x9786, - 0x9787, 0x9788, 0x9789, 0x978A, 0x978C, 0x978E, 0x978F, 0x9790, - 0x9793, 0x9795, 0x9796, 0x9797, 0x9799, 0x979A, 0x979B, 0x979C, - 0x979D, 0x81C1, 0x81A6, 0x6B24, 0x6B37, 0x6B39, 0x6B43, 0x6B46, - 0x6B59, 0x98D1, 0x98D2, 0x98D3, 0x98D5, 0x98D9, 0x98DA, 0x6BB3, - 0x5F40, 0x6BC2, 0x89F3, 0x6590, 0x9F51, 0x6593, 0x65BC, 0x65C6, - 0x65C4, 0x65C3, 0x65CC, 0x65CE, 0x65D2, 0x65D6, 0x7080, 0x709C, - 0x7096, 0x709D, 0x70BB, 0x70C0, 0x70B7, 0x70AB, 0x70B1, 0x70E8, - 0x70CA, 0x7110, 0x7113, 0x7116, 0x712F, 0x7131, 0x7173, 0x715C, - 0x7168, 0x7145, 0x7172, 0x714A, 0x7178, 0x717A, 0x7198, 0x71B3, - 0x71B5, 0x71A8, 0x71A0, 0x71E0, 0x71D4, 0x71E7, 0x71F9, 0x721D, - 0x7228, 0x706C, 0x7118, 0x7166, 0x71B9, 0x623E, 0x623D, 0x6243, - 0x6248, 0x6249, 0x793B, 0x7940, 0x7946, 0x7949, 0x795B, 0x795C, - 0x7953, 0x795A, 0x7962, 0x7957, 0x7960, 0x796F, 0x7967, 0x797A, - 0x7985, 0x798A, 0x799A, 0x79A7, 0x79B3, 0x5FD1, 0x5FD0, 0, -plane ed -at 0x40 - 0x979E, 0x979F, 0x97A1, 0x97A2, 0x97A4, 0x97A5, 0x97A6, 0x97A7, - 0x97A8, 0x97A9, 0x97AA, 0x97AC, 0x97AE, 0x97B0, 0x97B1, 0x97B3, - 0x97B5, 0x97B6, 0x97B7, 0x97B8, 0x97B9, 0x97BA, 0x97BB, 0x97BC, - 0x97BD, 0x97BE, 0x97BF, 0x97C0, 0x97C1, 0x97C2, 0x97C3, 0x97C4, - 0x97C5, 0x97C6, 0x97C7, 0x97C8, 0x97C9, 0x97CA, 0x97CB, 0x97CC, - 0x97CD, 0x97CE, 0x97CF, 0x97D0, 0x97D1, 0x97D2, 0x97D3, 0x97D4, - 0x97D5, 0x97D6, 0x97D7, 0x97D8, 0x97D9, 0x97DA, 0x97DB, 0x97DC, - 0x97DD, 0x97DE, 0x97DF, 0x97E0, 0x97E1, 0x97E2, 0x97E3, 0, - 0x97E4, 0x97E5, 0x97E8, 0x97EE, 0x97EF, 0x97F0, 0x97F1, 0x97F2, - 0x97F4, 0x97F7, 0x97F8, 0x97F9, 0x97FA, 0x97FB, 0x97FC, 0x97FD, - 0x97FE, 0x97FF, 0x9800, 0x9801, 0x9802, 0x9803, 0x9804, 0x9805, - 0x9806, 0x9807, 0x9808, 0x9809, 0x980A, 0x980B, 0x980C, 0x980D, - 0x980E, 0x603C, 0x605D, 0x605A, 0x6067, 0x6041, 0x6059, 0x6063, - 0x60AB, 0x6106, 0x610D, 0x615D, 0x61A9, 0x619D, 0x61CB, 0x61D1, - 0x6206, 0x8080, 0x807F, 0x6C93, 0x6CF6, 0x6DFC, 0x77F6, 0x77F8, - 0x7800, 0x7809, 0x7817, 0x7818, 0x7811, 0x65AB, 0x782D, 0x781C, - 0x781D, 0x7839, 0x783A, 0x783B, 0x781F, 0x783C, 0x7825, 0x782C, - 0x7823, 0x7829, 0x784E, 0x786D, 0x7856, 0x7857, 0x7826, 0x7850, - 0x7847, 0x784C, 0x786A, 0x789B, 0x7893, 0x789A, 0x7887, 0x789C, - 0x78A1, 0x78A3, 0x78B2, 0x78B9, 0x78A5, 0x78D4, 0x78D9, 0x78C9, - 0x78EC, 0x78F2, 0x7905, 0x78F4, 0x7913, 0x7924, 0x791E, 0x7934, - 0x9F9B, 0x9EF9, 0x9EFB, 0x9EFC, 0x76F1, 0x7704, 0x770D, 0x76F9, - 0x7707, 0x7708, 0x771A, 0x7722, 0x7719, 0x772D, 0x7726, 0x7735, - 0x7738, 0x7750, 0x7751, 0x7747, 0x7743, 0x775A, 0x7768, 0, -plane ee -at 0x40 - 0x980F, 0x9810, 0x9811, 0x9812, 0x9813, 0x9814, 0x9815, 0x9816, - 0x9817, 0x9818, 0x9819, 0x981A, 0x981B, 0x981C, 0x981D, 0x981E, - 0x981F, 0x9820, 0x9821, 0x9822, 0x9823, 0x9824, 0x9825, 0x9826, - 0x9827, 0x9828, 0x9829, 0x982A, 0x982B, 0x982C, 0x982D, 0x982E, - 0x982F, 0x9830, 0x9831, 0x9832, 0x9833, 0x9834, 0x9835, 0x9836, - 0x9837, 0x9838, 0x9839, 0x983A, 0x983B, 0x983C, 0x983D, 0x983E, - 0x983F, 0x9840, 0x9841, 0x9842, 0x9843, 0x9844, 0x9845, 0x9846, - 0x9847, 0x9848, 0x9849, 0x984A, 0x984B, 0x984C, 0x984D, 0, - 0x984E, 0x984F, 0x9850, 0x9851, 0x9852, 0x9853, 0x9854, 0x9855, - 0x9856, 0x9857, 0x9858, 0x9859, 0x985A, 0x985B, 0x985C, 0x985D, - 0x985E, 0x985F, 0x9860, 0x9861, 0x9862, 0x9863, 0x9864, 0x9865, - 0x9866, 0x9867, 0x9868, 0x9869, 0x986A, 0x986B, 0x986C, 0x986D, - 0x986E, 0x7762, 0x7765, 0x777F, 0x778D, 0x777D, 0x7780, 0x778C, - 0x7791, 0x779F, 0x77A0, 0x77B0, 0x77B5, 0x77BD, 0x753A, 0x7540, - 0x754E, 0x754B, 0x7548, 0x755B, 0x7572, 0x7579, 0x7583, 0x7F58, - 0x7F61, 0x7F5F, 0x8A48, 0x7F68, 0x7F74, 0x7F71, 0x7F79, 0x7F81, - 0x7F7E, 0x76CD, 0x76E5, 0x8832, 0x9485, 0x9486, 0x9487, 0x948B, - 0x948A, 0x948C, 0x948D, 0x948F, 0x9490, 0x9494, 0x9497, 0x9495, - 0x949A, 0x949B, 0x949C, 0x94A3, 0x94A4, 0x94AB, 0x94AA, 0x94AD, - 0x94AC, 0x94AF, 0x94B0, 0x94B2, 0x94B4, 0x94B6, 0x94B7, 0x94B8, - 0x94B9, 0x94BA, 0x94BC, 0x94BD, 0x94BF, 0x94C4, 0x94C8, 0x94C9, - 0x94CA, 0x94CB, 0x94CC, 0x94CD, 0x94CE, 0x94D0, 0x94D1, 0x94D2, - 0x94D5, 0x94D6, 0x94D7, 0x94D9, 0x94D8, 0x94DB, 0x94DE, 0x94DF, - 0x94E0, 0x94E2, 0x94E4, 0x94E5, 0x94E7, 0x94E8, 0x94EA, 0, -plane ef -at 0x40 - 0x986F, 0x9870, 0x9871, 0x9872, 0x9873, 0x9874, 0x988B, 0x988E, - 0x9892, 0x9895, 0x9899, 0x98A3, 0x98A8, 0x98A9, 0x98AA, 0x98AB, - 0x98AC, 0x98AD, 0x98AE, 0x98AF, 0x98B0, 0x98B1, 0x98B2, 0x98B3, - 0x98B4, 0x98B5, 0x98B6, 0x98B7, 0x98B8, 0x98B9, 0x98BA, 0x98BB, - 0x98BC, 0x98BD, 0x98BE, 0x98BF, 0x98C0, 0x98C1, 0x98C2, 0x98C3, - 0x98C4, 0x98C5, 0x98C6, 0x98C7, 0x98C8, 0x98C9, 0x98CA, 0x98CB, - 0x98CC, 0x98CD, 0x98CF, 0x98D0, 0x98D4, 0x98D6, 0x98D7, 0x98DB, - 0x98DC, 0x98DD, 0x98E0, 0x98E1, 0x98E2, 0x98E3, 0x98E4, 0, - 0x98E5, 0x98E6, 0x98E9, 0x98EA, 0x98EB, 0x98EC, 0x98ED, 0x98EE, - 0x98EF, 0x98F0, 0x98F1, 0x98F2, 0x98F3, 0x98F4, 0x98F5, 0x98F6, - 0x98F7, 0x98F8, 0x98F9, 0x98FA, 0x98FB, 0x98FC, 0x98FD, 0x98FE, - 0x98FF, 0x9900, 0x9901, 0x9902, 0x9903, 0x9904, 0x9905, 0x9906, - 0x9907, 0x94E9, 0x94EB, 0x94EE, 0x94EF, 0x94F3, 0x94F4, 0x94F5, - 0x94F7, 0x94F9, 0x94FC, 0x94FD, 0x94FF, 0x9503, 0x9502, 0x9506, - 0x9507, 0x9509, 0x950A, 0x950D, 0x950E, 0x950F, 0x9512, 0x9513, - 0x9514, 0x9515, 0x9516, 0x9518, 0x951B, 0x951D, 0x951E, 0x951F, - 0x9522, 0x952A, 0x952B, 0x9529, 0x952C, 0x9531, 0x9532, 0x9534, - 0x9536, 0x9537, 0x9538, 0x953C, 0x953E, 0x953F, 0x9542, 0x9535, - 0x9544, 0x9545, 0x9546, 0x9549, 0x954C, 0x954E, 0x954F, 0x9552, - 0x9553, 0x9554, 0x9556, 0x9557, 0x9558, 0x9559, 0x955B, 0x955E, - 0x955F, 0x955D, 0x9561, 0x9562, 0x9564, 0x9565, 0x9566, 0x9567, - 0x9568, 0x9569, 0x956A, 0x956B, 0x956C, 0x956F, 0x9571, 0x9572, - 0x9573, 0x953A, 0x77E7, 0x77EC, 0x96C9, 0x79D5, 0x79ED, 0x79E3, - 0x79EB, 0x7A06, 0x5D47, 0x7A03, 0x7A02, 0x7A1E, 0x7A14, 0, -plane f0 -at 0x40 - 0x9908, 0x9909, 0x990A, 0x990B, 0x990C, 0x990E, 0x990F, 0x9911, - 0x9912, 0x9913, 0x9914, 0x9915, 0x9916, 0x9917, 0x9918, 0x9919, - 0x991A, 0x991B, 0x991C, 0x991D, 0x991E, 0x991F, 0x9920, 0x9921, - 0x9922, 0x9923, 0x9924, 0x9925, 0x9926, 0x9927, 0x9928, 0x9929, - 0x992A, 0x992B, 0x992C, 0x992D, 0x992F, 0x9930, 0x9931, 0x9932, - 0x9933, 0x9934, 0x9935, 0x9936, 0x9937, 0x9938, 0x9939, 0x993A, - 0x993B, 0x993C, 0x993D, 0x993E, 0x993F, 0x9940, 0x9941, 0x9942, - 0x9943, 0x9944, 0x9945, 0x9946, 0x9947, 0x9948, 0x9949, 0, - 0x994A, 0x994B, 0x994C, 0x994D, 0x994E, 0x994F, 0x9950, 0x9951, - 0x9952, 0x9953, 0x9956, 0x9957, 0x9958, 0x9959, 0x995A, 0x995B, - 0x995C, 0x995D, 0x995E, 0x995F, 0x9960, 0x9961, 0x9962, 0x9964, - 0x9966, 0x9973, 0x9978, 0x9979, 0x997B, 0x997E, 0x9982, 0x9983, - 0x9989, 0x7A39, 0x7A37, 0x7A51, 0x9ECF, 0x99A5, 0x7A70, 0x7688, - 0x768E, 0x7693, 0x7699, 0x76A4, 0x74DE, 0x74E0, 0x752C, 0x9E20, - 0x9E22, 0x9E28, 0x9E29, 0x9E2A, 0x9E2B, 0x9E2C, 0x9E32, 0x9E31, - 0x9E36, 0x9E38, 0x9E37, 0x9E39, 0x9E3A, 0x9E3E, 0x9E41, 0x9E42, - 0x9E44, 0x9E46, 0x9E47, 0x9E48, 0x9E49, 0x9E4B, 0x9E4C, 0x9E4E, - 0x9E51, 0x9E55, 0x9E57, 0x9E5A, 0x9E5B, 0x9E5C, 0x9E5E, 0x9E63, - 0x9E66, 0x9E67, 0x9E68, 0x9E69, 0x9E6A, 0x9E6B, 0x9E6C, 0x9E71, - 0x9E6D, 0x9E73, 0x7592, 0x7594, 0x7596, 0x75A0, 0x759D, 0x75AC, - 0x75A3, 0x75B3, 0x75B4, 0x75B8, 0x75C4, 0x75B1, 0x75B0, 0x75C3, - 0x75C2, 0x75D6, 0x75CD, 0x75E3, 0x75E8, 0x75E6, 0x75E4, 0x75EB, - 0x75E7, 0x7603, 0x75F1, 0x75FC, 0x75FF, 0x7610, 0x7600, 0x7605, - 0x760C, 0x7617, 0x760A, 0x7625, 0x7618, 0x7615, 0x7619, 0, -plane f1 -at 0x40 - 0x998C, 0x998E, 0x999A, 0x999B, 0x999C, 0x999D, 0x999E, 0x999F, - 0x99A0, 0x99A1, 0x99A2, 0x99A3, 0x99A4, 0x99A6, 0x99A7, 0x99A9, - 0x99AA, 0x99AB, 0x99AC, 0x99AD, 0x99AE, 0x99AF, 0x99B0, 0x99B1, - 0x99B2, 0x99B3, 0x99B4, 0x99B5, 0x99B6, 0x99B7, 0x99B8, 0x99B9, - 0x99BA, 0x99BB, 0x99BC, 0x99BD, 0x99BE, 0x99BF, 0x99C0, 0x99C1, - 0x99C2, 0x99C3, 0x99C4, 0x99C5, 0x99C6, 0x99C7, 0x99C8, 0x99C9, - 0x99CA, 0x99CB, 0x99CC, 0x99CD, 0x99CE, 0x99CF, 0x99D0, 0x99D1, - 0x99D2, 0x99D3, 0x99D4, 0x99D5, 0x99D6, 0x99D7, 0x99D8, 0, - 0x99D9, 0x99DA, 0x99DB, 0x99DC, 0x99DD, 0x99DE, 0x99DF, 0x99E0, - 0x99E1, 0x99E2, 0x99E3, 0x99E4, 0x99E5, 0x99E6, 0x99E7, 0x99E8, - 0x99E9, 0x99EA, 0x99EB, 0x99EC, 0x99ED, 0x99EE, 0x99EF, 0x99F0, - 0x99F1, 0x99F2, 0x99F3, 0x99F4, 0x99F5, 0x99F6, 0x99F7, 0x99F8, - 0x99F9, 0x761B, 0x763C, 0x7622, 0x7620, 0x7640, 0x762D, 0x7630, - 0x763F, 0x7635, 0x7643, 0x763E, 0x7633, 0x764D, 0x765E, 0x7654, - 0x765C, 0x7656, 0x766B, 0x766F, 0x7FCA, 0x7AE6, 0x7A78, 0x7A79, - 0x7A80, 0x7A86, 0x7A88, 0x7A95, 0x7AA6, 0x7AA0, 0x7AAC, 0x7AA8, - 0x7AAD, 0x7AB3, 0x8864, 0x8869, 0x8872, 0x887D, 0x887F, 0x8882, - 0x88A2, 0x88C6, 0x88B7, 0x88BC, 0x88C9, 0x88E2, 0x88CE, 0x88E3, - 0x88E5, 0x88F1, 0x891A, 0x88FC, 0x88E8, 0x88FE, 0x88F0, 0x8921, - 0x8919, 0x8913, 0x891B, 0x890A, 0x8934, 0x892B, 0x8936, 0x8941, - 0x8966, 0x897B, 0x758B, 0x80E5, 0x76B2, 0x76B4, 0x77DC, 0x8012, - 0x8014, 0x8016, 0x801C, 0x8020, 0x8022, 0x8025, 0x8026, 0x8027, - 0x8029, 0x8028, 0x8031, 0x800B, 0x8035, 0x8043, 0x8046, 0x804D, - 0x8052, 0x8069, 0x8071, 0x8983, 0x9878, 0x9880, 0x9883, 0, -plane f2 -at 0x40 - 0x99FA, 0x99FB, 0x99FC, 0x99FD, 0x99FE, 0x99FF, 0x9A00, 0x9A01, - 0x9A02, 0x9A03, 0x9A04, 0x9A05, 0x9A06, 0x9A07, 0x9A08, 0x9A09, - 0x9A0A, 0x9A0B, 0x9A0C, 0x9A0D, 0x9A0E, 0x9A0F, 0x9A10, 0x9A11, - 0x9A12, 0x9A13, 0x9A14, 0x9A15, 0x9A16, 0x9A17, 0x9A18, 0x9A19, - 0x9A1A, 0x9A1B, 0x9A1C, 0x9A1D, 0x9A1E, 0x9A1F, 0x9A20, 0x9A21, - 0x9A22, 0x9A23, 0x9A24, 0x9A25, 0x9A26, 0x9A27, 0x9A28, 0x9A29, - 0x9A2A, 0x9A2B, 0x9A2C, 0x9A2D, 0x9A2E, 0x9A2F, 0x9A30, 0x9A31, - 0x9A32, 0x9A33, 0x9A34, 0x9A35, 0x9A36, 0x9A37, 0x9A38, 0, - 0x9A39, 0x9A3A, 0x9A3B, 0x9A3C, 0x9A3D, 0x9A3E, 0x9A3F, 0x9A40, - 0x9A41, 0x9A42, 0x9A43, 0x9A44, 0x9A45, 0x9A46, 0x9A47, 0x9A48, - 0x9A49, 0x9A4A, 0x9A4B, 0x9A4C, 0x9A4D, 0x9A4E, 0x9A4F, 0x9A50, - 0x9A51, 0x9A52, 0x9A53, 0x9A54, 0x9A55, 0x9A56, 0x9A57, 0x9A58, - 0x9A59, 0x9889, 0x988C, 0x988D, 0x988F, 0x9894, 0x989A, 0x989B, - 0x989E, 0x989F, 0x98A1, 0x98A2, 0x98A5, 0x98A6, 0x864D, 0x8654, - 0x866C, 0x866E, 0x867F, 0x867A, 0x867C, 0x867B, 0x86A8, 0x868D, - 0x868B, 0x86AC, 0x869D, 0x86A7, 0x86A3, 0x86AA, 0x8693, 0x86A9, - 0x86B6, 0x86C4, 0x86B5, 0x86CE, 0x86B0, 0x86BA, 0x86B1, 0x86AF, - 0x86C9, 0x86CF, 0x86B4, 0x86E9, 0x86F1, 0x86F2, 0x86ED, 0x86F3, - 0x86D0, 0x8713, 0x86DE, 0x86F4, 0x86DF, 0x86D8, 0x86D1, 0x8703, - 0x8707, 0x86F8, 0x8708, 0x870A, 0x870D, 0x8709, 0x8723, 0x873B, - 0x871E, 0x8725, 0x872E, 0x871A, 0x873E, 0x8748, 0x8734, 0x8731, - 0x8729, 0x8737, 0x873F, 0x8782, 0x8722, 0x877D, 0x877E, 0x877B, - 0x8760, 0x8770, 0x874C, 0x876E, 0x878B, 0x8753, 0x8763, 0x877C, - 0x8764, 0x8759, 0x8765, 0x8793, 0x87AF, 0x87A8, 0x87D2, 0, -plane f3 -at 0x40 - 0x9A5A, 0x9A5B, 0x9A5C, 0x9A5D, 0x9A5E, 0x9A5F, 0x9A60, 0x9A61, - 0x9A62, 0x9A63, 0x9A64, 0x9A65, 0x9A66, 0x9A67, 0x9A68, 0x9A69, - 0x9A6A, 0x9A6B, 0x9A72, 0x9A83, 0x9A89, 0x9A8D, 0x9A8E, 0x9A94, - 0x9A95, 0x9A99, 0x9AA6, 0x9AA9, 0x9AAA, 0x9AAB, 0x9AAC, 0x9AAD, - 0x9AAE, 0x9AAF, 0x9AB2, 0x9AB3, 0x9AB4, 0x9AB5, 0x9AB9, 0x9ABB, - 0x9ABD, 0x9ABE, 0x9ABF, 0x9AC3, 0x9AC4, 0x9AC6, 0x9AC7, 0x9AC8, - 0x9AC9, 0x9ACA, 0x9ACD, 0x9ACE, 0x9ACF, 0x9AD0, 0x9AD2, 0x9AD4, - 0x9AD5, 0x9AD6, 0x9AD7, 0x9AD9, 0x9ADA, 0x9ADB, 0x9ADC, 0, - 0x9ADD, 0x9ADE, 0x9AE0, 0x9AE2, 0x9AE3, 0x9AE4, 0x9AE5, 0x9AE7, - 0x9AE8, 0x9AE9, 0x9AEA, 0x9AEC, 0x9AEE, 0x9AF0, 0x9AF1, 0x9AF2, - 0x9AF3, 0x9AF4, 0x9AF5, 0x9AF6, 0x9AF7, 0x9AF8, 0x9AFA, 0x9AFC, - 0x9AFD, 0x9AFE, 0x9AFF, 0x9B00, 0x9B01, 0x9B02, 0x9B04, 0x9B05, - 0x9B06, 0x87C6, 0x8788, 0x8785, 0x87AD, 0x8797, 0x8783, 0x87AB, - 0x87E5, 0x87AC, 0x87B5, 0x87B3, 0x87CB, 0x87D3, 0x87BD, 0x87D1, - 0x87C0, 0x87CA, 0x87DB, 0x87EA, 0x87E0, 0x87EE, 0x8816, 0x8813, - 0x87FE, 0x880A, 0x881B, 0x8821, 0x8839, 0x883C, 0x7F36, 0x7F42, - 0x7F44, 0x7F45, 0x8210, 0x7AFA, 0x7AFD, 0x7B08, 0x7B03, 0x7B04, - 0x7B15, 0x7B0A, 0x7B2B, 0x7B0F, 0x7B47, 0x7B38, 0x7B2A, 0x7B19, - 0x7B2E, 0x7B31, 0x7B20, 0x7B25, 0x7B24, 0x7B33, 0x7B3E, 0x7B1E, - 0x7B58, 0x7B5A, 0x7B45, 0x7B75, 0x7B4C, 0x7B5D, 0x7B60, 0x7B6E, - 0x7B7B, 0x7B62, 0x7B72, 0x7B71, 0x7B90, 0x7BA6, 0x7BA7, 0x7BB8, - 0x7BAC, 0x7B9D, 0x7BA8, 0x7B85, 0x7BAA, 0x7B9C, 0x7BA2, 0x7BAB, - 0x7BB4, 0x7BD1, 0x7BC1, 0x7BCC, 0x7BDD, 0x7BDA, 0x7BE5, 0x7BE6, - 0x7BEA, 0x7C0C, 0x7BFE, 0x7BFC, 0x7C0F, 0x7C16, 0x7C0B, 0, -plane f4 -at 0x40 - 0x9B07, 0x9B09, 0x9B0A, 0x9B0B, 0x9B0C, 0x9B0D, 0x9B0E, 0x9B10, - 0x9B11, 0x9B12, 0x9B14, 0x9B15, 0x9B16, 0x9B17, 0x9B18, 0x9B19, - 0x9B1A, 0x9B1B, 0x9B1C, 0x9B1D, 0x9B1E, 0x9B20, 0x9B21, 0x9B22, - 0x9B24, 0x9B25, 0x9B26, 0x9B27, 0x9B28, 0x9B29, 0x9B2A, 0x9B2B, - 0x9B2C, 0x9B2D, 0x9B2E, 0x9B30, 0x9B31, 0x9B33, 0x9B34, 0x9B35, - 0x9B36, 0x9B37, 0x9B38, 0x9B39, 0x9B3A, 0x9B3D, 0x9B3E, 0x9B3F, - 0x9B40, 0x9B46, 0x9B4A, 0x9B4B, 0x9B4C, 0x9B4E, 0x9B50, 0x9B52, - 0x9B53, 0x9B55, 0x9B56, 0x9B57, 0x9B58, 0x9B59, 0x9B5A, 0, - 0x9B5B, 0x9B5C, 0x9B5D, 0x9B5E, 0x9B5F, 0x9B60, 0x9B61, 0x9B62, - 0x9B63, 0x9B64, 0x9B65, 0x9B66, 0x9B67, 0x9B68, 0x9B69, 0x9B6A, - 0x9B6B, 0x9B6C, 0x9B6D, 0x9B6E, 0x9B6F, 0x9B70, 0x9B71, 0x9B72, - 0x9B73, 0x9B74, 0x9B75, 0x9B76, 0x9B77, 0x9B78, 0x9B79, 0x9B7A, - 0x9B7B, 0x7C1F, 0x7C2A, 0x7C26, 0x7C38, 0x7C41, 0x7C40, 0x81FE, - 0x8201, 0x8202, 0x8204, 0x81EC, 0x8844, 0x8221, 0x8222, 0x8223, - 0x822D, 0x822F, 0x8228, 0x822B, 0x8238, 0x823B, 0x8233, 0x8234, - 0x823E, 0x8244, 0x8249, 0x824B, 0x824F, 0x825A, 0x825F, 0x8268, - 0x887E, 0x8885, 0x8888, 0x88D8, 0x88DF, 0x895E, 0x7F9D, 0x7F9F, - 0x7FA7, 0x7FAF, 0x7FB0, 0x7FB2, 0x7C7C, 0x6549, 0x7C91, 0x7C9D, - 0x7C9C, 0x7C9E, 0x7CA2, 0x7CB2, 0x7CBC, 0x7CBD, 0x7CC1, 0x7CC7, - 0x7CCC, 0x7CCD, 0x7CC8, 0x7CC5, 0x7CD7, 0x7CE8, 0x826E, 0x66A8, - 0x7FBF, 0x7FCE, 0x7FD5, 0x7FE5, 0x7FE1, 0x7FE6, 0x7FE9, 0x7FEE, - 0x7FF3, 0x7CF8, 0x7D77, 0x7DA6, 0x7DAE, 0x7E47, 0x7E9B, 0x9EB8, - 0x9EB4, 0x8D73, 0x8D84, 0x8D94, 0x8D91, 0x8DB1, 0x8D67, 0x8D6D, - 0x8C47, 0x8C49, 0x914A, 0x9150, 0x914E, 0x914F, 0x9164, 0, -plane f5 -at 0x40 - 0x9B7C, 0x9B7D, 0x9B7E, 0x9B7F, 0x9B80, 0x9B81, 0x9B82, 0x9B83, - 0x9B84, 0x9B85, 0x9B86, 0x9B87, 0x9B88, 0x9B89, 0x9B8A, 0x9B8B, - 0x9B8C, 0x9B8D, 0x9B8E, 0x9B8F, 0x9B90, 0x9B91, 0x9B92, 0x9B93, - 0x9B94, 0x9B95, 0x9B96, 0x9B97, 0x9B98, 0x9B99, 0x9B9A, 0x9B9B, - 0x9B9C, 0x9B9D, 0x9B9E, 0x9B9F, 0x9BA0, 0x9BA1, 0x9BA2, 0x9BA3, - 0x9BA4, 0x9BA5, 0x9BA6, 0x9BA7, 0x9BA8, 0x9BA9, 0x9BAA, 0x9BAB, - 0x9BAC, 0x9BAD, 0x9BAE, 0x9BAF, 0x9BB0, 0x9BB1, 0x9BB2, 0x9BB3, - 0x9BB4, 0x9BB5, 0x9BB6, 0x9BB7, 0x9BB8, 0x9BB9, 0x9BBA, 0, - 0x9BBB, 0x9BBC, 0x9BBD, 0x9BBE, 0x9BBF, 0x9BC0, 0x9BC1, 0x9BC2, - 0x9BC3, 0x9BC4, 0x9BC5, 0x9BC6, 0x9BC7, 0x9BC8, 0x9BC9, 0x9BCA, - 0x9BCB, 0x9BCC, 0x9BCD, 0x9BCE, 0x9BCF, 0x9BD0, 0x9BD1, 0x9BD2, - 0x9BD3, 0x9BD4, 0x9BD5, 0x9BD6, 0x9BD7, 0x9BD8, 0x9BD9, 0x9BDA, - 0x9BDB, 0x9162, 0x9161, 0x9170, 0x9169, 0x916F, 0x917D, 0x917E, - 0x9172, 0x9174, 0x9179, 0x918C, 0x9185, 0x9190, 0x918D, 0x9191, - 0x91A2, 0x91A3, 0x91AA, 0x91AD, 0x91AE, 0x91AF, 0x91B5, 0x91B4, - 0x91BA, 0x8C55, 0x9E7E, 0x8DB8, 0x8DEB, 0x8E05, 0x8E59, 0x8E69, - 0x8DB5, 0x8DBF, 0x8DBC, 0x8DBA, 0x8DC4, 0x8DD6, 0x8DD7, 0x8DDA, - 0x8DDE, 0x8DCE, 0x8DCF, 0x8DDB, 0x8DC6, 0x8DEC, 0x8DF7, 0x8DF8, - 0x8DE3, 0x8DF9, 0x8DFB, 0x8DE4, 0x8E09, 0x8DFD, 0x8E14, 0x8E1D, - 0x8E1F, 0x8E2C, 0x8E2E, 0x8E23, 0x8E2F, 0x8E3A, 0x8E40, 0x8E39, - 0x8E35, 0x8E3D, 0x8E31, 0x8E49, 0x8E41, 0x8E42, 0x8E51, 0x8E52, - 0x8E4A, 0x8E70, 0x8E76, 0x8E7C, 0x8E6F, 0x8E74, 0x8E85, 0x8E8F, - 0x8E94, 0x8E90, 0x8E9C, 0x8E9E, 0x8C78, 0x8C82, 0x8C8A, 0x8C85, - 0x8C98, 0x8C94, 0x659B, 0x89D6, 0x89DE, 0x89DA, 0x89DC, 0, -plane f6 -at 0x40 - 0x9BDC, 0x9BDD, 0x9BDE, 0x9BDF, 0x9BE0, 0x9BE1, 0x9BE2, 0x9BE3, - 0x9BE4, 0x9BE5, 0x9BE6, 0x9BE7, 0x9BE8, 0x9BE9, 0x9BEA, 0x9BEB, - 0x9BEC, 0x9BED, 0x9BEE, 0x9BEF, 0x9BF0, 0x9BF1, 0x9BF2, 0x9BF3, - 0x9BF4, 0x9BF5, 0x9BF6, 0x9BF7, 0x9BF8, 0x9BF9, 0x9BFA, 0x9BFB, - 0x9BFC, 0x9BFD, 0x9BFE, 0x9BFF, 0x9C00, 0x9C01, 0x9C02, 0x9C03, - 0x9C04, 0x9C05, 0x9C06, 0x9C07, 0x9C08, 0x9C09, 0x9C0A, 0x9C0B, - 0x9C0C, 0x9C0D, 0x9C0E, 0x9C0F, 0x9C10, 0x9C11, 0x9C12, 0x9C13, - 0x9C14, 0x9C15, 0x9C16, 0x9C17, 0x9C18, 0x9C19, 0x9C1A, 0, - 0x9C1B, 0x9C1C, 0x9C1D, 0x9C1E, 0x9C1F, 0x9C20, 0x9C21, 0x9C22, - 0x9C23, 0x9C24, 0x9C25, 0x9C26, 0x9C27, 0x9C28, 0x9C29, 0x9C2A, - 0x9C2B, 0x9C2C, 0x9C2D, 0x9C2E, 0x9C2F, 0x9C30, 0x9C31, 0x9C32, - 0x9C33, 0x9C34, 0x9C35, 0x9C36, 0x9C37, 0x9C38, 0x9C39, 0x9C3A, - 0x9C3B, 0x89E5, 0x89EB, 0x89EF, 0x8A3E, 0x8B26, 0x9753, 0x96E9, - 0x96F3, 0x96EF, 0x9706, 0x9701, 0x9708, 0x970F, 0x970E, 0x972A, - 0x972D, 0x9730, 0x973E, 0x9F80, 0x9F83, 0x9F85, 0x9F86, 0x9F87, - 0x9F88, 0x9F89, 0x9F8A, 0x9F8C, 0x9EFE, 0x9F0B, 0x9F0D, 0x96B9, - 0x96BC, 0x96BD, 0x96CE, 0x96D2, 0x77BF, 0x96E0, 0x928E, 0x92AE, - 0x92C8, 0x933E, 0x936A, 0x93CA, 0x938F, 0x943E, 0x946B, 0x9C7F, - 0x9C82, 0x9C85, 0x9C86, 0x9C87, 0x9C88, 0x7A23, 0x9C8B, 0x9C8E, - 0x9C90, 0x9C91, 0x9C92, 0x9C94, 0x9C95, 0x9C9A, 0x9C9B, 0x9C9E, - 0x9C9F, 0x9CA0, 0x9CA1, 0x9CA2, 0x9CA3, 0x9CA5, 0x9CA6, 0x9CA7, - 0x9CA8, 0x9CA9, 0x9CAB, 0x9CAD, 0x9CAE, 0x9CB0, 0x9CB1, 0x9CB2, - 0x9CB3, 0x9CB4, 0x9CB5, 0x9CB6, 0x9CB7, 0x9CBA, 0x9CBB, 0x9CBC, - 0x9CBD, 0x9CC4, 0x9CC5, 0x9CC6, 0x9CC7, 0x9CCA, 0x9CCB, 0, -plane f7 -at 0x40 - 0x9C3C, 0x9C3D, 0x9C3E, 0x9C3F, 0x9C40, 0x9C41, 0x9C42, 0x9C43, - 0x9C44, 0x9C45, 0x9C46, 0x9C47, 0x9C48, 0x9C49, 0x9C4A, 0x9C4B, - 0x9C4C, 0x9C4D, 0x9C4E, 0x9C4F, 0x9C50, 0x9C51, 0x9C52, 0x9C53, - 0x9C54, 0x9C55, 0x9C56, 0x9C57, 0x9C58, 0x9C59, 0x9C5A, 0x9C5B, - 0x9C5C, 0x9C5D, 0x9C5E, 0x9C5F, 0x9C60, 0x9C61, 0x9C62, 0x9C63, - 0x9C64, 0x9C65, 0x9C66, 0x9C67, 0x9C68, 0x9C69, 0x9C6A, 0x9C6B, - 0x9C6C, 0x9C6D, 0x9C6E, 0x9C6F, 0x9C70, 0x9C71, 0x9C72, 0x9C73, - 0x9C74, 0x9C75, 0x9C76, 0x9C77, 0x9C78, 0x9C79, 0x9C7A, 0, - 0x9C7B, 0x9C7D, 0x9C7E, 0x9C80, 0x9C83, 0x9C84, 0x9C89, 0x9C8A, - 0x9C8C, 0x9C8F, 0x9C93, 0x9C96, 0x9C97, 0x9C98, 0x9C99, 0x9C9D, - 0x9CAA, 0x9CAC, 0x9CAF, 0x9CB9, 0x9CBE, 0x9CBF, 0x9CC0, 0x9CC1, - 0x9CC2, 0x9CC8, 0x9CC9, 0x9CD1, 0x9CD2, 0x9CDA, 0x9CDB, 0x9CE0, - 0x9CE1, 0x9CCC, 0x9CCD, 0x9CCE, 0x9CCF, 0x9CD0, 0x9CD3, 0x9CD4, - 0x9CD5, 0x9CD7, 0x9CD8, 0x9CD9, 0x9CDC, 0x9CDD, 0x9CDF, 0x9CE2, - 0x977C, 0x9785, 0x9791, 0x9792, 0x9794, 0x97AF, 0x97AB, 0x97A3, - 0x97B2, 0x97B4, 0x9AB1, 0x9AB0, 0x9AB7, 0x9E58, 0x9AB6, 0x9ABA, - 0x9ABC, 0x9AC1, 0x9AC0, 0x9AC5, 0x9AC2, 0x9ACB, 0x9ACC, 0x9AD1, - 0x9B45, 0x9B43, 0x9B47, 0x9B49, 0x9B48, 0x9B4D, 0x9B51, 0x98E8, - 0x990D, 0x992E, 0x9955, 0x9954, 0x9ADF, 0x9AE1, 0x9AE6, 0x9AEF, - 0x9AEB, 0x9AFB, 0x9AED, 0x9AF9, 0x9B08, 0x9B0F, 0x9B13, 0x9B1F, - 0x9B23, 0x9EBD, 0x9EBE, 0x7E3B, 0x9E82, 0x9E87, 0x9E88, 0x9E8B, - 0x9E92, 0x93D6, 0x9E9D, 0x9E9F, 0x9EDB, 0x9EDC, 0x9EDD, 0x9EE0, - 0x9EDF, 0x9EE2, 0x9EE9, 0x9EE7, 0x9EE5, 0x9EEA, 0x9EEF, 0x9F22, - 0x9F2C, 0x9F2F, 0x9F39, 0x9F37, 0x9F3D, 0x9F3E, 0x9F44, 0, -plane f8 -at 0x40 - 0x9CE3, 0x9CE4, 0x9CE5, 0x9CE6, 0x9CE7, 0x9CE8, 0x9CE9, 0x9CEA, - 0x9CEB, 0x9CEC, 0x9CED, 0x9CEE, 0x9CEF, 0x9CF0, 0x9CF1, 0x9CF2, - 0x9CF3, 0x9CF4, 0x9CF5, 0x9CF6, 0x9CF7, 0x9CF8, 0x9CF9, 0x9CFA, - 0x9CFB, 0x9CFC, 0x9CFD, 0x9CFE, 0x9CFF, 0x9D00, 0x9D01, 0x9D02, - 0x9D03, 0x9D04, 0x9D05, 0x9D06, 0x9D07, 0x9D08, 0x9D09, 0x9D0A, - 0x9D0B, 0x9D0C, 0x9D0D, 0x9D0E, 0x9D0F, 0x9D10, 0x9D11, 0x9D12, - 0x9D13, 0x9D14, 0x9D15, 0x9D16, 0x9D17, 0x9D18, 0x9D19, 0x9D1A, - 0x9D1B, 0x9D1C, 0x9D1D, 0x9D1E, 0x9D1F, 0x9D20, 0x9D21, 0, - 0x9D22, 0x9D23, 0x9D24, 0x9D25, 0x9D26, 0x9D27, 0x9D28, 0x9D29, - 0x9D2A, 0x9D2B, 0x9D2C, 0x9D2D, 0x9D2E, 0x9D2F, 0x9D30, 0x9D31, - 0x9D32, 0x9D33, 0x9D34, 0x9D35, 0x9D36, 0x9D37, 0x9D38, 0x9D39, - 0x9D3A, 0x9D3B, 0x9D3C, 0x9D3D, 0x9D3E, 0x9D3F, 0x9D40, 0x9D41, - 0x9D42, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane f9 -at 0x40 - 0x9D43, 0x9D44, 0x9D45, 0x9D46, 0x9D47, 0x9D48, 0x9D49, 0x9D4A, - 0x9D4B, 0x9D4C, 0x9D4D, 0x9D4E, 0x9D4F, 0x9D50, 0x9D51, 0x9D52, - 0x9D53, 0x9D54, 0x9D55, 0x9D56, 0x9D57, 0x9D58, 0x9D59, 0x9D5A, - 0x9D5B, 0x9D5C, 0x9D5D, 0x9D5E, 0x9D5F, 0x9D60, 0x9D61, 0x9D62, - 0x9D63, 0x9D64, 0x9D65, 0x9D66, 0x9D67, 0x9D68, 0x9D69, 0x9D6A, - 0x9D6B, 0x9D6C, 0x9D6D, 0x9D6E, 0x9D6F, 0x9D70, 0x9D71, 0x9D72, - 0x9D73, 0x9D74, 0x9D75, 0x9D76, 0x9D77, 0x9D78, 0x9D79, 0x9D7A, - 0x9D7B, 0x9D7C, 0x9D7D, 0x9D7E, 0x9D7F, 0x9D80, 0x9D81, 0, - 0x9D82, 0x9D83, 0x9D84, 0x9D85, 0x9D86, 0x9D87, 0x9D88, 0x9D89, - 0x9D8A, 0x9D8B, 0x9D8C, 0x9D8D, 0x9D8E, 0x9D8F, 0x9D90, 0x9D91, - 0x9D92, 0x9D93, 0x9D94, 0x9D95, 0x9D96, 0x9D97, 0x9D98, 0x9D99, - 0x9D9A, 0x9D9B, 0x9D9C, 0x9D9D, 0x9D9E, 0x9D9F, 0x9DA0, 0x9DA1, - 0x9DA2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane fa -at 0x40 - 0x9DA3, 0x9DA4, 0x9DA5, 0x9DA6, 0x9DA7, 0x9DA8, 0x9DA9, 0x9DAA, - 0x9DAB, 0x9DAC, 0x9DAD, 0x9DAE, 0x9DAF, 0x9DB0, 0x9DB1, 0x9DB2, - 0x9DB3, 0x9DB4, 0x9DB5, 0x9DB6, 0x9DB7, 0x9DB8, 0x9DB9, 0x9DBA, - 0x9DBB, 0x9DBC, 0x9DBD, 0x9DBE, 0x9DBF, 0x9DC0, 0x9DC1, 0x9DC2, - 0x9DC3, 0x9DC4, 0x9DC5, 0x9DC6, 0x9DC7, 0x9DC8, 0x9DC9, 0x9DCA, - 0x9DCB, 0x9DCC, 0x9DCD, 0x9DCE, 0x9DCF, 0x9DD0, 0x9DD1, 0x9DD2, - 0x9DD3, 0x9DD4, 0x9DD5, 0x9DD6, 0x9DD7, 0x9DD8, 0x9DD9, 0x9DDA, - 0x9DDB, 0x9DDC, 0x9DDD, 0x9DDE, 0x9DDF, 0x9DE0, 0x9DE1, 0, - 0x9DE2, 0x9DE3, 0x9DE4, 0x9DE5, 0x9DE6, 0x9DE7, 0x9DE8, 0x9DE9, - 0x9DEA, 0x9DEB, 0x9DEC, 0x9DED, 0x9DEE, 0x9DEF, 0x9DF0, 0x9DF1, - 0x9DF2, 0x9DF3, 0x9DF4, 0x9DF5, 0x9DF6, 0x9DF7, 0x9DF8, 0x9DF9, - 0x9DFA, 0x9DFB, 0x9DFC, 0x9DFD, 0x9DFE, 0x9DFF, 0x9E00, 0x9E01, - 0x9E02, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane fb -at 0x40 - 0x9E03, 0x9E04, 0x9E05, 0x9E06, 0x9E07, 0x9E08, 0x9E09, 0x9E0A, - 0x9E0B, 0x9E0C, 0x9E0D, 0x9E0E, 0x9E0F, 0x9E10, 0x9E11, 0x9E12, - 0x9E13, 0x9E14, 0x9E15, 0x9E16, 0x9E17, 0x9E18, 0x9E19, 0x9E1A, - 0x9E1B, 0x9E1C, 0x9E1D, 0x9E1E, 0x9E24, 0x9E27, 0x9E2E, 0x9E30, - 0x9E34, 0x9E3B, 0x9E3C, 0x9E40, 0x9E4D, 0x9E50, 0x9E52, 0x9E53, - 0x9E54, 0x9E56, 0x9E59, 0x9E5D, 0x9E5F, 0x9E60, 0x9E61, 0x9E62, - 0x9E65, 0x9E6E, 0x9E6F, 0x9E72, 0x9E74, 0x9E75, 0x9E76, 0x9E77, - 0x9E78, 0x9E79, 0x9E7A, 0x9E7B, 0x9E7C, 0x9E7D, 0x9E80, 0, - 0x9E81, 0x9E83, 0x9E84, 0x9E85, 0x9E86, 0x9E89, 0x9E8A, 0x9E8C, - 0x9E8D, 0x9E8E, 0x9E8F, 0x9E90, 0x9E91, 0x9E94, 0x9E95, 0x9E96, - 0x9E97, 0x9E98, 0x9E99, 0x9E9A, 0x9E9B, 0x9E9C, 0x9E9E, 0x9EA0, - 0x9EA1, 0x9EA2, 0x9EA3, 0x9EA4, 0x9EA5, 0x9EA7, 0x9EA8, 0x9EA9, - 0x9EAA, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane fc -at 0x40 - 0x9EAB, 0x9EAC, 0x9EAD, 0x9EAE, 0x9EAF, 0x9EB0, 0x9EB1, 0x9EB2, - 0x9EB3, 0x9EB5, 0x9EB6, 0x9EB7, 0x9EB9, 0x9EBA, 0x9EBC, 0x9EBF, - 0x9EC0, 0x9EC1, 0x9EC2, 0x9EC3, 0x9EC5, 0x9EC6, 0x9EC7, 0x9EC8, - 0x9ECA, 0x9ECB, 0x9ECC, 0x9ED0, 0x9ED2, 0x9ED3, 0x9ED5, 0x9ED6, - 0x9ED7, 0x9ED9, 0x9EDA, 0x9EDE, 0x9EE1, 0x9EE3, 0x9EE4, 0x9EE6, - 0x9EE8, 0x9EEB, 0x9EEC, 0x9EED, 0x9EEE, 0x9EF0, 0x9EF1, 0x9EF2, - 0x9EF3, 0x9EF4, 0x9EF5, 0x9EF6, 0x9EF7, 0x9EF8, 0x9EFA, 0x9EFD, - 0x9EFF, 0x9F00, 0x9F01, 0x9F02, 0x9F03, 0x9F04, 0x9F05, 0, - 0x9F06, 0x9F07, 0x9F08, 0x9F09, 0x9F0A, 0x9F0C, 0x9F0F, 0x9F11, - 0x9F12, 0x9F14, 0x9F15, 0x9F16, 0x9F18, 0x9F1A, 0x9F1B, 0x9F1C, - 0x9F1D, 0x9F1E, 0x9F1F, 0x9F21, 0x9F23, 0x9F24, 0x9F25, 0x9F26, - 0x9F27, 0x9F28, 0x9F29, 0x9F2A, 0x9F2B, 0x9F2D, 0x9F2E, 0x9F30, - 0x9F31, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane fd -at 0x40 - 0x9F32, 0x9F33, 0x9F34, 0x9F35, 0x9F36, 0x9F38, 0x9F3A, 0x9F3C, - 0x9F3F, 0x9F40, 0x9F41, 0x9F42, 0x9F43, 0x9F45, 0x9F46, 0x9F47, - 0x9F48, 0x9F49, 0x9F4A, 0x9F4B, 0x9F4C, 0x9F4D, 0x9F4E, 0x9F4F, - 0x9F52, 0x9F53, 0x9F54, 0x9F55, 0x9F56, 0x9F57, 0x9F58, 0x9F59, - 0x9F5A, 0x9F5B, 0x9F5C, 0x9F5D, 0x9F5E, 0x9F5F, 0x9F60, 0x9F61, - 0x9F62, 0x9F63, 0x9F64, 0x9F65, 0x9F66, 0x9F67, 0x9F68, 0x9F69, - 0x9F6A, 0x9F6B, 0x9F6C, 0x9F6D, 0x9F6E, 0x9F6F, 0x9F70, 0x9F71, - 0x9F72, 0x9F73, 0x9F74, 0x9F75, 0x9F76, 0x9F77, 0x9F78, 0, - 0x9F79, 0x9F7A, 0x9F7B, 0x9F7C, 0x9F7D, 0x9F7E, 0x9F81, 0x9F82, - 0x9F8D, 0x9F8E, 0x9F8F, 0x9F90, 0x9F91, 0x9F92, 0x9F93, 0x9F94, - 0x9F95, 0x9F96, 0x9F97, 0x9F98, 0x9F9C, 0x9F9D, 0x9F9E, 0x9FA1, - 0x9FA2, 0x9FA3, 0x9FA4, 0x9FA5, 0xF92C, 0xF979, 0xF995, 0xF9E7, - 0xF9F1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -plane fe -at 0x40 - 0xFA0C, 0xFA0D, 0xFA0E, 0xFA0F, 0xFA11, 0xFA13, 0xFA14, 0xFA18, - 0xFA1F, 0xFA20, 0xFA21, 0xFA23, 0xFA24, 0xFA27, 0xFA28, 0xFA29, - 0xE815, 0xE816, 0xE817, 0xE818, 0xE819, 0xE81A, 0xE81B, 0xE81C, - 0xE81D, 0xE81E, 0xE81F, 0xE820, 0xE821, 0xE822, 0xE823, 0xE824, - 0xE825, 0xE826, 0xE827, 0xE828, 0xE829, 0xE82A, 0xE82B, 0xE82C, - 0xE82D, 0xE82E, 0xE82F, 0xE830, 0xE831, 0xE832, 0xE833, 0xE834, - 0xE835, 0xE836, 0xE837, 0xE838, 0xE839, 0xE83A, 0xE83B, 0xE83C, - 0xE83D, 0xE83E, 0xE83F, 0xE840, 0xE841, 0xE842, 0xE843, 0, - 0xE844, 0xE845, 0xE846, 0xE847, 0xE848, 0xE849, 0xE84A, 0xE84B, - 0xE84C, 0xE84D, 0xE84E, 0xE84F, 0xE850, 0xE851, 0xE852, 0xE853, - 0xE854, 0xE855, 0xE856, 0xE857, 0xE858, 0xE859, 0xE85A, 0xE85B, - 0xE85C, 0xE85D, 0xE85E, 0xE85F, 0xE860, 0xE861, 0xE862, 0xE863, - 0xE864, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/maps/unicode-sample.map b/application/third_party/dompdf/lib/ttf2ufm/src/maps/unicode-sample.map deleted file mode 100644 index 0e57967c..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/maps/unicode-sample.map +++ /dev/null @@ -1,158 +0,0 @@ -# this file is a sample Unicode map description. -# It describes which glyphs are to be included in the font -# and at which character position they are to be put. - -# If the character position is greater than 255, the glyph is included, but -# does not appear in the encoding table (you must then use font reencoding -# to use this glyph). -# That makes it possible to have more than 256 glyphs in a font. -# Currently the maximum supported number of glyphs is 1024. - -# Use this file as the argument to ttf2pt1's -L option. - -# 1999-11-24 Thomas.Henlich@mailbox.tu-dresden.de -# 2000-03-01 Sergey Babkin: added 3rd format - -# comment lines start with '#' or '%' or '//' - -# The default source encoding table in the TTF file is Unicode (pid=3,eid=1). -# However a map may specify another source encoding with the "id <pid> <eid>" -# directive. If this directive is used at the beginning of the map file, -# it applies to the whole file. If it is used after a "plane" directive, -# then it sets the source encoding for this particular destination plane -# (possibly overriding the file-wide id directive). The user can also -# specify the source encoding explicitly at the comman line in the -# argument to the option -L. This used-specified source encoding overrides -# any id directives in the map file. - -# examples: - -# same as Unicode (default) -id 3 1 - -# One file may contain multiple actual translation tables. Each particular -# table within a file is named a plane. The primary use of planes is -# for multi-plane Eastern fonts with over 256 glyphs: for them one TTF -# file gets converted into multiple Type1 files, with each resulting file -# containing one plane of the original font. But they may also be used -# in other creative ways. Each plane may be specified in different format -# although this is not recommended for aesthetical reasons. If a map file -# contains any specifications of planes then the plane argument MUST -# be specified to the converter with that map file. If a map file -# contains no specifications of planes then the plane argument MUST NOT -# be specified to the converter with that map file. -# -# The plane maps start from the plane directive and continue to the next -# plane directive or end of file. The plane directive must be located -# at the very beginning of a separate string and contain the word "plane" -# followed by whitespace and the plane name. The whitespace characters -# are not allowed in the plane names. Non-alphanumeric characters are -# discouraged in the plane names as well. - -# examples: - -plane 81 -=27 U+0027 APOSTROPHE - -plane otherplane - 0, 1, 2 - - -% There is one code assignment per line. -// Three formats are recognized: -# 1. optional whitespace, followed by '=', followed by a hex number -# (character position), followed by optional whitespace, followed by -# 'U+', followed by a four-digit hex number (the Unicode of the glyph we want -# here), followed by any number of characters. - -// example: - -=20 U+0020 SPACE -=48 U+0021 EXCLAMATION MARK -=22 U+0022 QUOTATION MARK -=23 U+0023 NUMBER SIGN -=24 U+0024 DOLLAR SIGN -=25 U+0025 PERCENT SIGN -=26 U+0026 AMPERSAND -=27 U+0027 APOSTROPHE - -=E0 U+042E CYRILLIC CAPITAL LETTER YU -=E1 U+0410 CYRILLIC CAPITAL LETTER A -=E2 U+0411 CYRILLIC CAPITAL LETTER BE -=E3 U+0426 CYRILLIC CAPITAL LETTER TSE -=E4 U+0414 CYRILLIC CAPITAL LETTER DE -=E5 U+0415 CYRILLIC CAPITAL LETTER IE -=E6 U+0424 CYRILLIC CAPITAL LETTER EF -=E7 U+0413 CYRILLIC CAPITAL LETTER GHE - -% 2. optional whitespace, followed by '<', followed by one or more -% non-whitespace characters, -% followed by optional whitespace, followed by '/x', followed by -% a hex number (character position), followed by optional -% whitespace, followed by '<U', followed by a four-digit hex number -% (the Unicode of the glyph we want here), followed by '>' and any number -% of characters. - -# example: - -<I> /x40 <U0049> LATIN CAPITAL LETTER I -<t> /x41 <U0074> LATIN SMALL LETTER T -<r> /x43 <U0072> LATIN SMALL LETTER R -<o> /x44 <U006F> LATIN SMALL LETTER O -<c> /x45 <U0063> LATIN SMALL LETTER C -<k> /x46 <U006B> LATIN SMALL LETTER K -<s> /x47 <U0073> LATIN SMALL LETTER S - -<Eu> /xA4 <U20AC> EURO SIGN - -# 3. optional whitespace, followed by '!', followed by a hex number -# (character position), followed by optional whitespace, followed by -# 'U+', followed by a four-digit hex number (the Unicode of the glyph we want -# here), followed by the name of the glyph that will be used in the -# output file. - -# example: - -!20 U+0020 space -!21 U+0021 exclam -!22 U+0022 quotedbl -!23 U+0023 numbersign -!24 U+0024 dollar -!25 U+0025 percent - -# 4. compact format: just list of unicodes separated by commas or ranges -# denoted by a dash between unicodes. These unicodes are mapped to -# the output codes starting from 0 and continuously increasing. -# It is possible to reset the current code by using the "at" directive -# which must start at beginning of the line and give the new current -# output code (which will be assigned to the next occuring unicode) -# as decimal, hexadecimal or octal in C notation. The "at directive must -# take a separate line. The spaces around unicodes don't matter. - -# example: -# map unicodes 0x40, 0x400, 0x4000 to the output codes 0, 1, 2 and unicodes -# 0xf010 - 0xf020, 0xf030 to the output codes 0x11-0x22 - - 0, 1, 2 -at 0x11 - 0xf010- 0xf020, 0xf030 - - -# the first format is used by Roman Czyborra on his fine WWW pages: -# http://czyborra.com/charsets/iso8859.html - -# the second format is used in the Linux locale charmaps files: -# /usr/share/i18n/charmaps/* - -# we don't need those glyphs in the encoding table -=100 U+0030 DIGIT ZERO -=101 U+0031 DIGIT ONE -=102 U+0032 DIGIT TWO -=103 U+0033 DIGIT THREE -=104 U+0034 DIGIT FOUR -=105 U+0035 DIGIT FIVE -=106 U+0036 DIGIT SIX -=107 U+0037 DIGIT SEVEN -=108 U+0039 DIGIT NINE -=109 U+0038 DIGIT EIGHT - diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/other/Makefile b/application/third_party/dompdf/lib/ttf2ufm/src/other/Makefile deleted file mode 100644 index 87d17a90..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/other/Makefile +++ /dev/null @@ -1,20 +0,0 @@ - -PROGS= bz cmpf dmpf - -BZOBJS= bz.o bzscreen.o - -CFLAGS= -g - -all: $(PROGS) - -clean: - rm -f $(PROGS) *.o *.core core.* core - -bz: $(BZOBJS) - $(CC) $(CFLAGS) -o bz $(BZOBJS) - -cmpf: cmpf.c bmpfont.h - $(CC) $(CFLAGS) -o cmpf -I/usr/local/include -L/usr/local/lib cmpf.c -lt1 -lm - -dmpf: dmpf.c bmpfont.h - $(CC) $(CFLAGS) -o dmpf -I/usr/local/include -L/usr/local/lib dmpf.c -lt1 -lm diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/other/README b/application/third_party/dompdf/lib/ttf2ufm/src/other/README deleted file mode 100644 index 5e5ee756..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/other/README +++ /dev/null @@ -1,127 +0,0 @@ -Supplements for True Type to PostScript Type 1 Converter - -(Do not edit this file, it is generated from README.html!!!) - -bz --- - -A small program to draw the Bezier curves on an alphanumeric display. -The recommended way of uing it is to run it from xterm with "Tiny" -(if you want higher magnification) or "Unreadable" (if you want -higher resolution) font and as big window size as possible. The size -of the window can be obtained by running "stty -a". For everything else -just "Use the source, Luke!" - -cmpf ----- - -A small program to compare the rendering of two supposedly -nearly-identical fonts at low resolutions. It requires the -T1LIB library. This program may be used to compare the -effect of various options of the converter on the resulting -fonts. Create two .pfa files, one with one set of options, -another with another set of options, then use this program -to compare them. - -dmpf ----- - -A small program to dump the bitmaps of all glyphs of the font -at low pixel sizes, up to 20 pixels. It requires the -T1LIB library. This program may be used to compare the -effect of changes in the T1LIB rasterizer and just for visual -search for rendering anomalies. - -lst.pl ------- - -A simple PERL script that generates an HTML file -with the full list of all characters in all -possible styles of the Variable-width and Fixed-width -fonts. This file is quite convenient to look -at the converted fonts in Netscape (or other -graphical browser). - -cntstems.pl ------- - -A simple PERL script that counts the required hint stack in the -interpreter to rasterize the glyphs of the font. May be quite -useful in search for missing glyphs which may be aborted due to -insufficient stack depth. - -showg ------ - -A PERL script that draws the glyphs and their interesting -metrics (such as coordinates of the dots, hints and blue zones) -in PostScript. It works only with un-encoded font files generated -by ttf2pt1. The intended use is like: - - showg [-c <fontfile.t1a>]... <fontfile.t1a> <glyph-to-draw>... >file.ps - gv file.ps # start the Ghostscript viewer - -As you can see, multiple glyphs may be specified. The glyphs may be -specified in one of three ways: - - as a decimal code (for example, 43 ) - - as a glyph name preceded by a slash (for example, /plus ) - - as a literal character preceded by a dot (for example, .+ ) - -So for example the following command would draw the same glyph "left -parenthesis" three times: - - showg file.t1a 40 /parenleft .\( >/file.ps - -Don't forget that some characters have to be protected from the shell -by backslash as shown above, or else the shell would try to interpret -them before passing to the program. - -One file (given as the first argument) is considered the main file -but multiple files can be specified with option -c for visual comparison -of the outlines. The glyphs from the main file are drawn in black -and supplemented with coordinate grid and sidebars for hints. The -glyphs from the comparison files are drawn in slightly lighter colors -(red, cyan, brown) and no supplemental information is provided for them. -Each use of option -c adds one comparison file, this option may be used -multiple times. If there are more than 3 comparison files the colors -repeat cyclically. - -So for example the following command would draw the same glyph "left -parenthesis" from three files on the same page: - - showg -c fileA.t1a -c fileB.t1a file.t1a .\( >/file.ps - -This program is quite valuable it you want to take a close-up view at -the font. - -The outlines are drawn in black, the ends of the curves and -lines are marked as dots, the first dots of the outlines -are fatter. The Blue Zones are drawn in light blue. The -substituted hints are marked in red, the global hints are -marked in blue. The coordinate grid is drawn in green. -The stems and the values of coordinates are for convenience -marked twice, on each size of the picture. - -showdf ------- - -A Perl script to find a list of differing glyphs in two versions of a font -file (for example, converted with different versions of ttf2pt1 or -with different options given to ttf2pt1) and feed this list into the showg -program for display. The intended use is like: - - showdf <showg-location> <fontfile1.t1a> <fontfile2.t1a> >file.ps - gv file.ps # start the Ghostscript viewer - -If both showdf and showg scripts are located in the -same directory, the command would look like: - - ./showdf ./showg font1.t1a font2.t1a >file.ps - -For decent results both font files should be converted from the same original -font and contain the same glyphs with the same names in the same order. -Otherwise most probably all the glyphs will be included, or a failure may -happen if some glyph is not found in one of the files. It is also a good -idea to convert the fonts for comparison with hinting disabled, otherwise -the differences in hinting may trigger the otherwise equal glyphs to be shown. - diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/other/README.html b/application/third_party/dompdf/lib/ttf2ufm/src/other/README.html deleted file mode 100644 index 794a947d..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/other/README.html +++ /dev/null @@ -1,176 +0,0 @@ -<HTML> -<HEAD> -<TITLE> -Supplements for True Type to PostScript Type 1 Converter -</TITLE> -</HEAD> -<BODY> -<H2> -Supplements for True Type to PostScript Type 1 Converter -</H2> - -<! -(Do not edit this file, it is generated from README.html!!!) -> - -<h4><tt>bz</tt></h4> -<! --- -> - -A small program to draw the Bezier curves on an alphanumeric display. -The recommended way of uing it is to run it from xterm with "Tiny" -(if you want higher magnification) or "Unreadable" (if you want -higher resolution) font and as big window size as possible. The size -of the window can be obtained by running "<tt>stty -a</tt>". For everything else -just "Use the source, Luke!" -<p> - -<h4><tt>cmpf</tt></h4> -<! ----- -> - -A small program to compare the rendering of two supposedly -nearly-identical fonts at low resolutions. It requires the -T1LIB library. This program may be used to compare the -effect of various options of the converter on the resulting -fonts. Create two <tt>.pfa</tt> files, one with one set of options, -another with another set of options, then use this program -to compare them. -<p> - -<h4><tt>dmpf</tt></h4> -<! ----- -> - -A small program to dump the bitmaps of all glyphs of the font -at low pixel sizes, up to 20 pixels. It requires the -T1LIB library. This program may be used to compare the -effect of changes in the T1LIB rasterizer and just for visual -search for rendering anomalies. -<p> - -<h4><tt>lst.pl</tt></h4> -<! ------- -> - -A simple PERL script that generates an HTML file -with the full list of all characters in all -possible styles of the Variable-width and Fixed-width -fonts. This file is quite convenient to look -at the converted fonts in Netscape (or other -graphical browser). - -<h4><tt>cntstems.pl</tt></h4> -<! ------- -> - -A simple PERL script that counts the required hint stack in the -interpreter to rasterize the glyphs of the font. May be quite -useful in search for missing glyphs which may be aborted due to -insufficient stack depth. - -<h4><tt>showg</tt></h4> -<! ------ -> - -A PERL script that draws the glyphs and their interesting -metrics (such as coordinates of the dots, hints and blue zones) -in PostScript. It works only with un-encoded font files generated -by <tt>ttf2pt1</tt>. The intended use is like: -<p> - -&nbsp;&nbsp;<tt>showg [-c <i>&lt;fontfile.t1a&gt;</i>]... <i>&lt;fontfile.t1a&gt; &lt;glyph-to-draw&gt;</i>... &gt;file.ps</tt><br> -&nbsp;&nbsp;<tt>gv file.ps # start the Ghostscript viewer</tt> -<p> - -As you can see, multiple glyphs may be specified. The glyphs may be -specified in one of three ways: -<br> -&nbsp;&nbsp;- as a decimal code (for example, <tt>43</tt> ) -<br> -&nbsp;&nbsp;- as a glyph name preceded by a slash (for example, <tt>/plus</tt> ) -<br> -&nbsp;&nbsp;- as a literal character preceded by a dot (for example, <tt>.+</tt> ) -<p> - -So for example the following command would draw the same glyph "left -parenthesis" three times: -<p> - -&nbsp;&nbsp;<tt>showg file.t1a 40 /parenleft .\( >/file.ps</tt> -<p> - -Don't forget that some characters have to be protected from the shell -by backslash as shown above, or else the shell would try to interpret -them before passing to the program. -<p> - -One file (given as the first argument) is considered the main file -but multiple files can be specified with option <b>-c</b> for visual comparison -of the outlines. The glyphs from the main file are drawn in black -and supplemented with coordinate grid and sidebars for hints. The -glyphs from the comparison files are drawn in slightly lighter colors -(red, cyan, brown) and no supplemental information is provided for them. -Each use of option <b>-c</b> adds one comparison file, this option may be used -multiple times. If there are more than 3 comparison files the colors -repeat cyclically. -<p> - -So for example the following command would draw the same glyph "left -parenthesis" from three files on the same page: -<p> - -&nbsp;&nbsp;<tt>showg -c fileA.t1a -c fileB.t1a file.t1a .\( >/file.ps</tt> -<p> - -This program is quite valuable it you want to take a close-up view at -the font. -<p> - -The outlines are drawn in black, the ends of the curves and -lines are marked as dots, the first dots of the outlines -are fatter. The Blue Zones are drawn in light blue. The -substituted hints are marked in red, the global hints are -marked in blue. The coordinate grid is drawn in green. -The stems and the values of coordinates are for convenience -marked twice, on each size of the picture. -<p> - -<h4><tt>showdf</tt></h4> -<! ------- -> - -A Perl script to find a list of differing glyphs in two versions of a font -file (for example, converted with different versions of <tt>ttf2pt1</tt> or -with different options given to ttf2pt1) and feed this list into the <tt>showg</tt> -program for display. The intended use is like: -<p> - -&nbsp;&nbsp;<tt>showdf <i>&lt;showg-location&gt;</i> <i>&lt;fontfile1.t1a&gt;</i> <i>&lt;fontfile2.t1a&gt;</i> &gt;file.ps</tt><br> -&nbsp;&nbsp;<tt>gv file.ps # start the Ghostscript viewer</tt> -<p> - -If both <tt>showdf</tt> and <tt>showg</tt> scripts are located in the -same directory, the command would look like: -<p> - -&nbsp;&nbsp;<tt>./showdf ./showg font1.t1a font2.t1a &gt;file.ps</tt><br> -<p> - -For decent results both font files should be converted from the same original -font and contain the same glyphs with the same names in the same order. -Otherwise most probably all the glyphs will be included, or a failure may -happen if some glyph is not found in one of the files. It is also a good -idea to convert the fonts for comparison with hinting disabled, otherwise -the differences in hinting may trigger the otherwise equal glyphs to be shown. -<p> - -</BODY> -</HTML> diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/other/bmpfont.h b/application/third_party/dompdf/lib/ttf2ufm/src/other/bmpfont.h deleted file mode 100644 index 59c27372..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/other/bmpfont.h +++ /dev/null @@ -1,338 +0,0 @@ -/* - * see COPYRIGHT - */ - - -fchkneg(file, line, rc, cmd) - char *file; - int line; - int rc; - char *cmd; -{ - if(rc<0) { - fprintf(stderr,"%s: fatal error on line %d of %s: %d\n", - PROGNAME, line, file, rc); - fprintf(stderr,"%s\n", cmd); - exit(1); - } -} - -fchknull(file, line, rc, cmd) - char *file; - int line; - void *rc; - char *cmd; -{ - if(rc==NULL) { - fprintf(stderr,"%s: fatal error on line %d of %s: NULL\n", - PROGNAME, line, file); - fprintf(stderr,"%s\n", cmd); - exit(1); - } -} - -#define chkneg(f) fchkneg(__FILE__,__LINE__,(f),#f) -#define chknull(f) fchknull(__FILE__,__LINE__,(f),#f) - -#define MYPAD 8 - -#define CHRNONE ' ' -#define CHRBOTH '.' -#define CHRONE '1' -#define CHRTWO '2' - -#define MINSIZE 8 -#define MAXSIZE 20 - -#define LINEWIDTH 80 /* screen line width in chars */ -#define MAXLINES (MAXSIZE*(MAXSIZE-MINSIZE+1)) - -static char map[MAXLINES][LINEWIDTH+1]; -static char mbase, mx, mend; - -/* returns 0 if the same, -1 if different */ - -int -cmpglyphs(g1, g2) - GLYPH *g1, *g2; -{ - int wd1, wd2; - int ht1, ht2; - int i, j; - char *p1, *p2; - - wd1=g1->metrics.rightSideBearing - g1->metrics.leftSideBearing; - ht1=g1->metrics.ascent - g1->metrics.descent; - wd2=g2->metrics.rightSideBearing - g2->metrics.leftSideBearing; - ht2=g2->metrics.ascent - g2->metrics.descent; - - if(g1->bits==NULL && g2->bits!=NULL - || g1->bits!=NULL && g2->bits==NULL) - return -1; - - if(g1->metrics.ascent != g2->metrics.ascent) - return -1; - - if(g1->metrics.descent != g2->metrics.descent) - return -1; - - if( wd1 != wd2 ) - return -1; - - if( (p1=g1->bits) !=NULL && (p2=g2->bits) !=NULL ) - for(i=0; i<ht1; i++) { - for(j=0; j<wd1; j+=8) { - if( *p1++ != *p2++) - return -1; - } - } - return 0; -} - -void -resetmap() -{ - int i, j; - - for(i=0; i<MAXLINES; i++) - for(j=0; j<LINEWIDTH; j++) - map[i][j]=' '; - mbase=mx=mend=0; -} - -void -drawdot(row, col, val) - unsigned row, col, val; -{ - if(row < MAXLINES && col < LINEWIDTH-1) { - map[row][col]=val; - if(row > mend) - mend=row; - } -} - -void -drawdotg1(row, col, val) - unsigned row, col, val; -{ - if(row < MAXLINES && col < LINEWIDTH-1) { - if(val) - map[row][col]=CHRONE; - else - map[row][col]=CHRNONE; - if(row > mend) - mend=row; - } -} - -void -drawdotg2(row, col, val) - unsigned row, col, val; -{ - if(row < MAXLINES && col < LINEWIDTH-1) { - if(val) - if(map[row][col]==CHRONE) - map[row][col]=CHRBOTH; - else - map[row][col]=CHRTWO; - else if(map[row][col]!=CHRONE) - map[row][col]=CHRNONE; - if(row > mend) - mend=row; - } -} - -void -drawglyf(size, g1) - int size; - GLYPH *g1; -{ - int wd1, wd2, wdm; - int ht1, ht2, ascm, desm; - int i, j, k, val; - char *p; - int off1, off2; - - wd1=g1->metrics.rightSideBearing - g1->metrics.leftSideBearing; - ht1=g1->metrics.ascent - g1->metrics.descent; - - wdm=wd1; - - ascm=g1->metrics.ascent; - desm= -g1->metrics.descent; - - if(mbase==0) - mbase=ascm+1; - else if(LINEWIDTH-mx <= wdm+1) { - mx=0; mbase=mend+ascm+2; - } - - drawdot(mbase-ascm-1, mx, (size/10)%10+'0'); - drawdot(mbase-ascm-1, mx+1, size%10+'0'); - - if( (p=g1->bits) !=NULL) - for(i=0; i<ht1; i++) { - for(j=0; j<wd1; j+=8) { - val = *p++; - for(k=0; k<8 && j+k<wd1; k++, val>>=1) - drawdot(i+mbase-g1->metrics.ascent, mx+j+k, (val&1)?CHRBOTH:CHRNONE); - } - } - - wdm++; - if(wdm<3) - wdm=3; - mx+=wdm; - drawdot(mbase, mx-1, '-'); -} - -void -drawdiff(size, g1, g2) - int size; - GLYPH *g1, *g2; -{ - int wd1, wd2, wdm; - int ht1, ht2, ascm, desm; - int i, j, k, val; - char *p; - int off1, off2; - - wd1=g1->metrics.rightSideBearing - g1->metrics.leftSideBearing; - ht1=g1->metrics.ascent - g1->metrics.descent; - wd2=g2->metrics.rightSideBearing - g2->metrics.leftSideBearing; - ht2=g2->metrics.ascent - g2->metrics.descent; - - if(wd1>wd2) { - wdm=wd1; - off1=0; off2=wd1-wd2; - } else { - wdm=wd2; - off2=0; off1=wd2-wd1; - } - - if(g1->metrics.ascent > g2->metrics.ascent) - ascm=g1->metrics.ascent; - else - ascm=g2->metrics.ascent; - - if(g1->metrics.descent < g2->metrics.descent) - desm= -g1->metrics.descent; - else - desm= -g2->metrics.descent; - - if(mbase==0) - mbase=ascm+1; - else if(LINEWIDTH-mx <= wdm+1) { - mx=0; mbase=mend+ascm+2; - } - - drawdot(mbase-ascm-1, mx, (size/10)%10+'0'); - drawdot(mbase-ascm-1, mx+1, size%10+'0'); - - /* check which alignment is better */ - if(off1!=0 || off2!=0) { - int cntl,cntr; - int a1, a2, d1, d2; - int val1, val2; - int rstep1, rstep2; - - cntl=cntr=0; - rstep1=(wd1+7)/8; - rstep2=(wd2+7)/8; - a1=g1->metrics.ascent; - d1=g1->metrics.descent; - a2=g2->metrics.ascent; - d2=g2->metrics.descent; - -#ifdef dbgoff - printf("size: %d\n", size); -#endif - for(i=ascm; i>= -desm; i--) { - for(j=0; j<wdm; j++) { - /* first the left alignment */ - if(i>a1 || i<d1 || j>=wd1) - val1=0; - else - val1=( g1->bits[ (a1-i)*rstep1+j/8 ] >> (j%8) ) & 1; - if(i>a2 || i<d2 || j>=wd2) - val2=0; - else - val2=( g2->bits[ (a2-i)*rstep2+j/8 ] >> (j%8) ) & 1; - - cntl += (val1 ^ val2); - -#ifdef dbgoff - putchar(val1?'1':' '); - putchar(val2?'2':' '); - putchar('.'); -#endif - - /* now the right alignment */ - if(i>a1 || i<d1 || j-off1>=wd1 || j<off1) - val1=0; - else - val1=( g1->bits[ (a1-i)*rstep1+(j-off1)/8 ] >> ((j-off1)%8) ) & 1; - if(i>a2 || i<d2 || j-off2>=wd2) - val2=0; - else - val2=( g2->bits[ (a2-i)*rstep2+(j-off2)/8 ] >> ((j-off2)%8) ) & 1; - - cntr += (val1 ^ val2); - -#ifdef dbgoff - putchar(val1?'1':' '); - putchar(val2?'2':' '); - putchar('|'); -#endif - } -#ifdef dbgoff - putchar('\n'); -#endif - } - -#ifdef dbgoff - printf("size %d: left %d right %d\n",size, cntl, cntr); -#endif - if(cntl <= cntr) /* left is better or the same */ - off1=off2=0; - } - - if( (p=g1->bits) !=NULL) - for(i=0; i<ht1; i++) { - for(j=0; j<wd1; j+=8) { - val = *p++; - for(k=0; k<8 && j+k<wd1; k++, val>>=1) - drawdotg1(i+mbase-g1->metrics.ascent, mx+j+k+off1, val&1); - } - } - if( (p=g2->bits) !=NULL) - for(i=0; i<ht2; i++) { - for(j=0; j<wd2; j+=8) { - val = *p++; - for(k=0; k<8 && j+k<wd2; k++, val>>=1) - drawdotg2(i+mbase-g2->metrics.ascent, mx+j+k+off2, val&1); - } - } - - wdm++; - if(wdm<3) - wdm=3; - mx+=wdm; - drawdot(mbase, mx-1, '-'); -} - -void -printmap(f) - FILE *f; -{ - int i, j; - - for(i=0; i<=mend; i++) { - for(j=LINEWIDTH-1; j>=0 && map[i][j]==' '; j--) - {} - map[i][j+1]='\n'; - map[i][j+2]=0; - fputs(map[i], f); - } -} - diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/other/bz.c b/application/third_party/dompdf/lib/ttf2ufm/src/other/bz.c deleted file mode 100644 index 475d13fa..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/other/bz.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * see COPYRIGHT - */ - -#include <stdio.h> -#include <stdlib.h> -#include "bzscreen.h" - -/* size of the screen in "physical pixels" */ -#define PHYSX 980 -#define PHYSY 310 - -/* the bounding box of the drawing in "logical pixels" */ -/* the base point - set to 0, 0 for absolute coordinates */ -#define BASEX 19 -#define BASEY 122 -/* the maximal point */ -#define MAXX 450 -#define MAXY 481 - -main(argc,argv) - int argc; - char **argv; -{ - initscreen(PHYSX, PHYSY, PHYSX, PHYSY, 0, 0, BASEX, BASEY, MAXX, MAXY); - - /* - drawcurve('#', 0,0, 51,0, 1,49, 45,98); - drawcurve('1', 5,28, 8,37, 16,65, 45,98); - - drawcurve('3', 0,0, 0,24, 30,68, 80,72); - - drawcurve('1', 0,0, 0,5, 1,10, 2,15); - drawcurve('2', 2,15, 8,42, 30,68, 80,72); - - drawcurve('4', 0,0, 0,37, 22,67, 80,72); - */ - - /* final */ - /* - drawcurve('#', 324, 481, 390, 481, 448, 475, 448, 404 ); - drawcurve('#', 448, 404, 448, 404, 448, 324, 448, 324 ); - drawcurve('#', 448, 324, 402, 245, 19, 338, 19, 122 ); - */ - - /* 3 */ - /* - */ - drawcurve('*', 450, 404, 450, 397, 450, 390, 448, 384 ); - - drawcurve('*', 448, 384, 446, 378, 444, 370, 443, 360 ); - drawcurve('.', 443, 360, 309, 356, 206, 341, 132, 304 ); - drawcurve('.', 132, 304, 57, 266, 19, 208, 19, 122 ); - - /* 4 */ - drawcurve('#', 324, 481, 390, 481, 450, 475, 450, 404 ); - drawcurve('#', 450, 404, 450, 397, 450, 390, 448, 384 ); - - drawcurve('#', 448, 384, 402, 245, 19, 338, 19, 122 ); - - /* - drawcurve('.', 324, 481, 361, 481, 391, 478, 414, 466 ); - drawcurve('.', 414, 466, 436, 454, 450, 436, 450, 404 ); - - drawcurve('.', 450, 404, 450, 390, 447, 378, 443, 360 ); - drawcurve('.', 443, 360, 309, 356, 206, 341, 132, 304 ); - - drawcurve('.', 132, 304, 57, 266, 19, 208, 19, 122 ); - */ - - printscreen(stdout); -} - -sumcurves(dx11, dy11, dx12, dy12, dx13, dy13, - dx21, dy21, dx22, dy22, dx23, dy23) -{ -} - diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/other/bzscreen.c b/application/third_party/dompdf/lib/ttf2ufm/src/other/bzscreen.c deleted file mode 100644 index 0bb5ab6a..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/other/bzscreen.c +++ /dev/null @@ -1,220 +0,0 @@ -/* - * see COPYRIGHT - */ - -#include <stdio.h> -#include <stdlib.h> -#include "bzscreen.h" - -/* - * functions to draw the bezier curves in text mode - */ - -double -fmin(a,b) - double a, b; -{ - if(a<b) - return a; - else - return b; -} - -int -abs(x) - int x; -{ - if(x<0) - return -x; - else - return x; -} - -void -initscreen(physx, physy, cols, rows, xoff, yoff, minx, miny, maxx, maxy) - unsigned physx, physy, cols, rows, xoff, yoff, minx, miny, maxx, maxy; -{ - int i,j; - double yxscale; - - if(screen.dots != NULL) - free(screen.dots); - - if(physx==0 || physy==0 || rows==0 || cols==0) { - fprintf(stderr, "*** negative or zero screen size\n"); - exit(1); - } - - if(physx+xoff > cols || physy+yoff > rows) { - fprintf(stderr, "*** drawable area out of screen\n"); - exit(1); - } - - if(minx>maxx || miny>maxy) { - fprintf(stderr, "*** empty drawable area\n"); - exit(1); - } - - screen.physx = physx; - screen.physy = physy; - screen.rows = rows; - screen.cols = cols+2; /* for '\n\0' */ - screen.xoff = xoff; - screen.yoff = yoff; - screen.minx = minx; - screen.miny = miny; - - if(( screen.dots=malloc(screen.rows*screen.cols) )==NULL) { - perror("*** no memory for screen: "); - exit(1); - } - - j=screen.rows*screen.cols; - for(i=0; i<j; i++) - screen.dots[i]=' '; - - /* scale of Y to X on the screen, i.e. x=YXSCALE*y */ - /* 3/4 is the approx. ratio of Y/X sizes of the physical screen */ - yxscale = ((double)physx/(double)physy*3.0/4.0); - - /* scale of "logical" to "physical", i.e. physical=PHYSSCALE*logical */ - screen.yscale = fmin( ((double)physy-0.51)/(maxy+1-miny), - ((double)physx-0.51)/yxscale/(maxx+1-minx) ); - screen.xscale = yxscale * screen.yscale; -} - -void -drawcurve(mark, ax,ay, bx,by, cx,cy, dx,dy) - int mark, ax,ay, bx,by, cx,cy, dx,dy; -{ - int i,j,n,c; - int maxn=(screen.physx + screen.physy)*2; - - ax-=screen.minx; bx-=screen.minx; cx-=screen.minx; dx-=screen.minx; - ay-=screen.miny; by-=screen.miny; cy-=screen.miny; dy-=screen.miny; - - for(i=0; i<=maxn; i++) { - double t, t2, t3, nt, nt2, nt3; - - t=(double)i/(double)maxn; t2=t*t; t3=t2*t; - nt=1-t; nt2=nt*nt; nt3=nt2*nt; - - setfdot( - mark, - ( ax*t3 + bx*3*t2*nt + cx*3*t*nt2 + dx*nt3 ), - ( ay*t3 + by*3*t2*nt + cy*3*t*nt2 + dy*nt3 ) - ); - } -} - -/* draw curve and mark direction at the ends */ - -void -drawcurvedir(mark, ax,ay, bx,by, cx,cy, dx,dy) - int mark, ax,ay, bx,by, cx,cy, dx,dy; -{ - int i,j,n,c; - int maxn=(screen.physx + screen.physy)*2; - double t, t2, t3, nt, nt2, nt3; - int markb, marke; - - ax-=screen.minx; bx-=screen.minx; cx-=screen.minx; dx-=screen.minx; - ay-=screen.miny; by-=screen.miny; cy-=screen.miny; dy-=screen.miny; - - if(bx==ax && by==ay) { - markb=mark; - } else if( abs(by-ay) > abs(bx-ax) ) { - if(by>ay) - markb='^'; - else - markb='v'; - } else { - if(bx>ax) - markb='>'; - else - markb='<'; - } - - if(dx==cx && dy==cy) { - marke=mark; - } else if( abs(dy-cy) > abs(dx-cx) ) { - if(dy>cy) - marke='^'; - else - marke='v'; - } else { - if(dx>cx) - marke='>'; - else - marke='<'; - } - - for(i=1; i<maxn; i++) { - t=(double)i/(double)maxn; t2=t*t; t3=t2*t; - nt=1-t; nt2=nt*nt; nt3=nt2*nt; - - setfdot( - mark, - ( ax*t3 + bx*3*t2*nt + cx*3*t*nt2 + dx*nt3 ), - ( ay*t3 + by*3*t2*nt + cy*3*t*nt2 + dy*nt3 ) - ); - } - /* mark the ends */ - setfdot( markb, (double)ax, (double)ay ); - setfdot( marke, (double)dx, (double)dy ); -} - -void -drawdot(mark, x, y) - int mark; - int x, y; -{ - x=(int)((x-screen.minx)*screen.xscale+0.5); - y=(int)((y-screen.miny)*screen.yscale+0.5); - - if(y<0 || y>=screen.physy || x<0 || x>=screen.physx) - return; - screendot(x,y)=mark; -} - -void -setabsdot(mark, x, y) - int x, y, mark; -{ - if(y<0 || y>=screen.rows || x<0 || x>=screen.cols-2) - return; - screenabsdot(x,y)=mark; -} - -void -setfdot(mark, fx, fy) - int mark; - double fx, fy; -{ - int x, y; - - x=(int)(fx*screen.xscale+0.5); - y=(int)(fy*screen.yscale+0.5); - - if(y<0 || y>=screen.physy || x<0 || x>=screen.physx) - return; - screendot(x,y)=mark; -} - -/* destructive */ -void -printscreen(f) - FILE *f; -{ - int r; - char *pi, *pc; - - for(r=screen.rows-1; r>=0; r--) { - pc=&screenabsdot(0,r); - for(pi=&screenabsdot(-2,r+1); pi>=pc && *pi == ' '; pi--) - {} - pi[1]='\n'; - pi[2]=0; - fputs(pc, f); - } -} diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/other/bzscreen.h b/application/third_party/dompdf/lib/ttf2ufm/src/other/bzscreen.h deleted file mode 100644 index 290d5195..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/other/bzscreen.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * see COPYRIGHT - */ - - -/* - * Screen for drawing the Bezier curves in text mode - */ - -struct screen { - unsigned physx; - unsigned physy; - unsigned cols; - unsigned rows; - unsigned xoff; - unsigned yoff; - unsigned minx; - unsigned miny; - char *dots; - double xscale; - double yscale; -} screen; - -#define screenabsdot(x,y) (screen.dots[(y)*screen.cols+(x)]) -#define screendot(x,y) screenabsdot((x)+screen.xoff, (y)+screen.yoff) - -/* prototypes */ -double fmin(double a, double b); -int abs(int x); -void initscreen(unsigned physx, unsigned physy, - unsigned cols, unsigned rows, unsigned xoff, unsigned yoff, - unsigned minx, unsigned miny, unsigned maxx, unsigned maxy); -void drawcurve(int mark, int ax,int ay, - int bx,int by, int cx,int cy, int dx,int dy); -void drawcurvedir(int mark, int ax,int ay, - int bx,int by, int cx,int cy, int dx,int dy); -void drawdot(int mark, int x, int y); -void setabsdot(int mark, int x, int y); -void setfdot(int mark, double x, double y); -void printscreen(FILE *f); diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/other/cmpf.c b/application/third_party/dompdf/lib/ttf2ufm/src/other/cmpf.c deleted file mode 100644 index 37e6e98f..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/other/cmpf.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * see COPYRIGHT - */ - -#include <stdio.h> -#include <ctype.h> -#include "t1lib.h" - -/* - * compare two [ almost the same ] fonts - */ - -#define PROGNAME "cmpf" - -#include "bmpfont.h" - - -main(ac, av) - int ac; - char **av; -{ - int fontid1, fontid2; - GLYPH *g1, *g2; - int chr, size, diff, offset; - - if(ac!=3) { - fprintf(stderr,"Use: %s font1 font2\n", PROGNAME); - exit(1); - } - - chkneg(T1_SetBitmapPad(MYPAD)); - chkneg(T1_InitLib(NO_LOGFILE|IGNORE_CONFIGFILE|IGNORE_FONTDATABASE)); - chkneg(fontid1=T1_AddFont(av[1])); - chkneg(fontid2=T1_AddFont(av[2])); - - - resetmap(); - for(chr=0; chr<256; chr++) { - diff=0; - for(size=MAXSIZE; size>=MINSIZE; size--) { - chknull( g1=T1_CopyGlyph(T1_SetChar( fontid1, chr, (float)size, NULL)) ); - chknull( g2=T1_CopyGlyph(T1_SetChar( fontid2, chr, (float)size, NULL)) ); - - if( cmpglyphs(g1, g2) ) { - /* printf("%d %d - diff\n", chr, size); */ - diff=1; - drawdiff(size, g1, g2); - } - /* - else - fprintf(stderr, "%d %d - same\n", chr, size); - */ - - chkneg(T1_FreeGlyph(g1)); - chkneg(T1_FreeGlyph(g2)); - } - if(diff) { - printf("*** Difference for %d==0x%x %c\n", chr, chr, - isprint(chr) ? chr : ' '); - printmap(stdout); - diff=0; - resetmap(); - } - } - - printf("All done!\n"); -} diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/other/cntstems.pl b/application/third_party/dompdf/lib/ttf2ufm/src/other/cntstems.pl deleted file mode 100644 index 185c06c4..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/other/cntstems.pl +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/perl -# -# Copyright (c) 2000 by Sergey Babkin -# (see COPYRIGHT for full copyright notice) -# -# script to calculate the total number of stems used by the -# glyphs in case if stems are always pushed to the stack and -# never popped (as X11 does) - -$insubrs = 0; -$inchars = 0; - -while(<>) -{ - if(/\/Subrs/) { - $insubrs = 1; - } elsif(/\/CharStrings/) { - $insubrs = 0; - $inchars = 1; - } - if($insubrs && /^dup (\d+)/) { - $cursubr = $1; - $substems[$cursubr] = 0; - } elsif (/^dup (\d+) \/(\S+) put/) { - $codeof{$2} = $1; - } - if($inchars) { - if(/^\/(\S+)\s+\{/) { - $curchar = $1; - $charstems = 0; - } elsif( /endchar/ ) { - printf("%d:%s\t%d\n", $codeof{$curchar}, $curchar, $charstems); - } elsif( /(\d+)\s+4\s+callsubr/) { - $charstems += $substems[$1+0]; - } - } - if(/[hv]stem3/) { - if($insubrs) { - $substems[$cursubr] += 3; - } elsif($inchars) { - $charstems += 3; - } - } elsif( /[hv]stem/ ) { - if($insubrs) { - $substems[$cursubr]++; - } elsif($inchars) { - $charstems++; - } - } -} diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/other/dmpf.c b/application/third_party/dompdf/lib/ttf2ufm/src/other/dmpf.c deleted file mode 100644 index 1052a448..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/other/dmpf.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * see COPYRIGHT - */ - -#include <stdio.h> -#include <ctype.h> -#include "t1lib.h" - -/* - * Dump a rasterizarion of the font at small size - */ - -#define PROGNAME "dmpf" - -#include "bmpfont.h" - - -main(ac, av) - int ac; - char **av; -{ - int fontid1, fontid2; - GLYPH *g1, *g2; - int chr, size, diff, offset; - - if(ac!=2) { - fprintf(stderr,"Use: %s font\n", PROGNAME); - exit(1); - } - - chkneg(T1_SetBitmapPad(MYPAD)); - chkneg(T1_InitLib(NO_LOGFILE|IGNORE_CONFIGFILE|IGNORE_FONTDATABASE)); - chkneg(fontid1=T1_AddFont(av[1])); - - - resetmap(); - for(chr=0; chr<256; chr++) { - for(size=MAXSIZE; size>=MINSIZE; size--) { - chknull( g1=T1_CopyGlyph(T1_SetChar( fontid1, chr, (float)size, NULL)) ); - - drawglyf(size, g1); - - chkneg(T1_FreeGlyph(g1)); - } - - printf("*** Glyph %d==0x%x %c\n", chr, chr, - isprint(chr) ? chr : ' '); - printmap(stdout); - resetmap(); - } - - printf("All done!\n"); -} diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/other/lst.pl b/application/third_party/dompdf/lib/ttf2ufm/src/other/lst.pl deleted file mode 100644 index b5840b27..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/other/lst.pl +++ /dev/null @@ -1,65 +0,0 @@ -#!/usr/bin/perl -# -# script to create HTML file with character table -# in plain, italic, bold, bold-italic -# -# see COPYRIGHT -# - -# width of tables -$step=16; - -# commands to enable and disable the font modes -# (the fastest changing is first) -@matrix = ( - [ "Roman", "Italic", "</i>", "<i>" ], - [ "Medium", "Bold", "</b>", "<b>" ], - [ "Variable", "Fixed", "</tt>", "<tt>" ], -); - -sub printall -{ - local $i, $j; - - printf("<table border=\"0\" >\n"); - for($j=32; $j<256; $j+=$step) { - printf("<tr>\n"); - for $i ($j..$j+$step-1) { - $c=chr($i); - if($c eq "<") { - $c="&lt;"; - } elsif($c eq ">") { - $c="&gt;"; - } - printf("<td><font color=\"gray\">%03d</font></td><td>\n", $i); - printf("<font color=\"white\">%s%s%s</font>\n", $enmode, $c, $dismode); - printf("</td>\n"); - } - printf("</tr>\n"); - } - printf("</table><p>\n"); -} - -printf("<HTML><HEAD></HEAD><BODY bgcolor=\"black\">\n<font color=\"white\"><p>\n"); - -for $mask (0.. (1<<@matrix)-1) { - #printf("<table><tr>"); - $mode = $enmode = $dismode = ""; - for $bit (0.. $#matrix) { - $val = ($mask >> $bit) & 1; - $mode = $matrix[$bit]->[$val] . "<br>" . $mode; - if( $val ) { - $enmode = $matrix[$bit]->[3] . $enmode; - $dismode = $dismode . $matrix[$bit]->[2]; - } - #printf("=== %d %s %s %s\n", $val, $mode, $enmode, $dismode); - } - #printf("%x %s %s %s\n", $mask, $mode, $enmode, $dismode); - printf("<table border=\"0\"><tr><td>\n"); - &printall(); - printf("</td><td valign=top><font size=\"+1\" color=\"yellow\"><b>\n"); - printf("%s\n", $mode); - printf("</b></font></td></tr></table>\n"); -} - -printf("</font></BODY></HTML>\n"); diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/other/showdf b/application/third_party/dompdf/lib/ttf2ufm/src/other/showdf deleted file mode 100644 index 1706a814..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/other/showdf +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/perl - -if (@ARGV != 3) { - print STDERR "Use:\n"; - print STDERR " showdf <showg-script> <old-file> <new-file>\n"; - print STDERR "to create a showg diagram of glyphs differing in two files\n"; - exit 1; -} - -$cmd = shift @ARGV; -$oldf = shift @ARGV; -$newf = shift @ARGV; - -open(O, "<$oldf") or die "Unable to open '$oldf'\n"; -open(N, "<$newf") or die "Unable to open '$newf'\n"; - -while(<O>) { - last if(/CharStrings/); -} -while(<N>) { - last if(/CharStrings/); -} - -undef @symlist; -$sym = ''; -$inlist = 0; -$nstop = 0; - -while($so = <O>) { - if($so =~ m|^(/\S+)\s+\{|) { - $sym = $1; - $inlist = 0; - #printf STDERR "found sym $sym\n"; - if (!$nstop || $sn !~ m|^$sym\s+\{|) { - while($sn = <N>) { - #print STDERR "+$sn"; - last if($sn =~ m|^${sym}\s+\{|); - } - } - $nstop = 0; - } elsif(!$nstop) { - $sn = <N>; - #print STDERR "<$so>$sn\n"; - if($so ne $sn) { - if(!$inlist) { - $inlist = 1; - push(@symlist, $sym); - } - if($sn =~ m|^(/\S+)\s+\{|) { - $nstop = 1; - #printf STDERR "stop at $1\n"; - } - } - } -} -unshift(@symlist, $cmd, '-c', $oldf, $newf); -#printf("%s\n", join(' ', @symlist)); -exec @symlist; diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/other/showg b/application/third_party/dompdf/lib/ttf2ufm/src/other/showg deleted file mode 100644 index 437860d4..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/other/showg +++ /dev/null @@ -1,633 +0,0 @@ -#!/usr/bin/perl - -my @cmpfiles; - -while($ARGV[0] eq "-c") { - shift(@ARGV); - push(@cmpfiles, shift(@ARGV)); -} - -if( $#ARGV < 1) { - die("Usage: $0 [-c file]... file glyph-code...\n"); -} - -$fname=shift @ARGV; - -# storage for files -my %fontname; -my %fbbox; -my %fblues; -my %fenc; -my %frevenc; -my %fsubrs; -my %fchars; -my @cmnbbox; # common bounding box covering all files - -@cmnbbox = (100, 100, 100, 100); - -# read all files into memory -for $f (@cmpfiles, $fname) { - open(FILE, "<$f") or die("no such file $f"); - while(<FILE>) { - if(/FontBBox\s+\{\s*(.*)\s*}/) { - @bbox=split(/\s+/, $1); - push(@{$fbbox{$f}}, @bbox); - if($bbox[0] < $cmnbbox[0]) { - $cmnbbox[0] = $bbox[0]; - } - if($bbox[1] < $cmnbbox[1]) { - $cmnbbox[1] = $bbox[1]; - } - if($bbox[2] > $cmnbbox[2]) { - $cmnbbox[2] = $bbox[2]; - } - if($bbox[3] > $cmnbbox[3]) { - $cmnbbox[3] = $bbox[3]; - } - } elsif( /BlueValues\s+\[\s*(.*)\s*\]/ || /OtherBlues\s+\[\s*(.*)\s*\]/ ) { - @blues=split(/\s+/, $1); - push(@{$fblues{$f}}, @blues); - } elsif( /^dup\s+(\d+)\s+\/(\S+)\s+put/ ) { - $fenc{$f}{$1} = $2; - if( ! defined $frevenc{$f}{$2} ) { - $frevenc{$f}{$2} = $1; - } - } elsif( /^dup\s+(\d+)\s+\{\s*$/ ) { - $key = $1; - $bf = $_; - while(<FILE>) { - $bf .= $_; - if( /\}\s+NP/ ) { - last; - } - } - $fsubrs{$f}{$key} = $bf; - } elsif( /^\/(\S+)\s+\{\s*$/ ) { - $key = $1; - $bf = $_; - while(<FILE>) { - $bf .= $_; - if( /endchar/ ) { - last; - } - } - $fchars{$f}{$key} = $bf; - } elsif( /^\/FontName\s+(\S+)/ ) { - $fontname{$f} = $1; - } - } - close(FILE); -} - -######################## Prolog ################################### - -print("%%!PS-Adobe-1.0 -%%DocumentNeededResources: font Courier -%%Pages: (atend) -%%EndComments -%%BeginProlog -/cmpfcolorarray [ - [ 1 0.2 0.2 ] % slightly lighter red - [ 0 0.7 0.7 ] % cyan - [ 0.7 0.7 0 ] % brown-yellow -] def -/cmpfcolor { % number -> . - cmpfcolorarray length mod % get the subarray number - cmpfcolorarray exch get aload pop setrgbcolor -} bind def -/contourcolor { 0 0 0 setrgbcolor } bind def % black -/bluezonecolor { 0.95 0.95 1 setrgbcolor } bind def % very light blue -/coordcolor { 0 1 0 setrgbcolor } bind def % green -/textcolor { 0 0 0 setrgbcolor } bind def % black -/stemcolor { 1 0 0 setrgbcolor } bind def % red -/mainstemcolor { 0 0 1 setrgbcolor } bind def % blue - -% /fnt2pt { 72 5 mul 1000 div } bind def - -/linehor { % . font_y -> . - gsave - 0 72 translate - 72 fnt2pt scale - newpath - 0 exch moveto - 7 0 rlineto - stroke - grestore -} bind def - -/linevert { % . font_x -> . - gsave - 72 0 translate - fnt2pt 72 scale - newpath - 0 moveto - 0 7 rlineto - stroke - grestore -} bind def - -/bluezone { % . font_y_1 font_y_2 -> . - gsave - bluezonecolor - 0 72 translate - 72 fnt2pt scale - newpath - 0 exch moveto - 7 0 rlineto - 7 exch lineto - -7 0 rlineto - closepath - fill - grestore -} bind def - -/drawstem { % . xwidth ywidth x0 y0 -> . - gsave - 72 72 translate fnt2pt fnt2pt scale xorg yorg translate - newpath - moveto - dup 0 exch rlineto - exch 0 rlineto - neg 0 exch rlineto - closepath fill - grestore -} bind def - -/getlen { - dup stringwidth pop -} bind def - -/compressfont 0.8 def - -/label { % . string stringwd y -> . - dup lasty lt { - dup lasty fontsz sub le - } { - dup lasty fontsz add ge - } ifelse { - /curx 0 store - } if - dup /lasty exch store - 0 exch moveto - compressfont mul dup curx add maxx gt { - /curx 0 store - } if - curx 0 rmoveto - dup 0 rlineto - stroke - gsave - curx lasty moveto - curx add /curx exch store - compressfont 1 scale - show - grestore -} bind def -"); - -@bbox=@cmnbbox; - -$nx=$bbox[2]-$bbox[0]; -$ny=$bbox[3]-$bbox[1]; -$maxsz= ($nx>$ny) ? $nx : $ny; -$fnt2pt= 72*5/$maxsz; -printf("/fnt2pt 72 5 mul %d div def\n", $maxsz); -$xorg= -($bbox[0]-($maxsz-$nx)/2); -$yorg= -($bbox[1]-($maxsz-$ny)/2); -printf("/xorg %d def /yorg %d def\n", $xorg, $yorg); - -print(" -%%EndProlog -"); - -######################## Subroutines ############################## - -sub bluezone # from to -{ - my ($a, $b)=@_; - printf("%d %d bluezone\n",$a+$yorg, $b+$yorg); - $ycoord{$a+0}=1; - $ycoord{$b+0}=1; -} - -sub linehor # x -{ - my $a=$_[0]; - printf("%d linehor\n",$a+$yorg); - $ycoord{$a+0}=1; -} - -sub linevert # x -{ - my $a=$_[0]; - printf("%d linevert\n",$a+$xorg); - $xcoord{$a+0}=1; -} - -sub hstem # from width -{ - my ($from, $width)=@_; - $stemhused=1; - printf("%d %d %d %d drawstem %% %d %d h \n", -$stemwd, $width, - $bbox[0]-2-$stemhgrp*$stemwd, $from, - $from, $width); - printf("%d %d %d %d drawstem %% %d %d h \n", $stemwd, $width, - $bbox[2]+2+$stemhgrp*$stemwd, $from, - $from, $width); -} - -sub vstem # from width -{ - my ($from, $width)=@_; - $stemvused=1; - printf("%d %d %d %d drawstem %% %d %d v \n", $width, -$stemwd, - $from, $bbox[1]-2-$stemhgrp*$stemwd, - $from, $width); - printf("%d %d %d %d drawstem %% %d %d v \n", $width, $stemwd, - $from, $bbox[3]+2+$stemhgrp*$stemwd, - $from, $width); -} - -sub nextstemgrp -{ - if($stemhused || $stemvused) { - $stemhgrp++; - $stemhused=0; - $stemvgrp++; - $stemvused=0; - } -} - -sub substems # fname subrlist -{ - my $fname = shift; - my $i, $cmd, @vals; - - print("\nstemcolor\n"); - - for $i (@_) { - &nextstemgrp(); - for $_ (split(/\n/, $fsubrs{$fname}{$i})) { - s/^\s+//; - @vals=split(/\s+/, $_); - $cmd=$vals[$#vals]; - if($cmd eq "hstem") { - &hstem($vals[0], $vals[1]); - } elsif($cmd eq "vstem") { - &vstem($vals[0], $vals[1]); - } - } - } - print("\n"); -} - -sub drawcharwstems # charstring -{ - my($x,$y)=(0,0); - my @vals, $cmd, $i; - - print("\nmainstemcolor\n"); - &nextstemgrp(); - for $_ (split(/\n/, $_[0])) { - s/^\s+//; - @vals=split(/\s+/, $_); - $cmd=$vals[$#vals]; - - if($cmd eq "hsbw") { - $x=$vals[0]+0; - } elsif($cmd eq "hstem") { - &hstem($vals[0], $vals[1]); - } elsif($cmd eq "hstem3") { - &hstem($vals[0], $vals[1]); - &hstem($vals[2], $vals[3]); - &hstem($vals[4], $vals[5]); - } elsif($cmd eq "vstem") { - &vstem($vals[0], $vals[1]); - } elsif($cmd eq "vstem3") { - &vstem($vals[0], $vals[1]); - &vstem($vals[2], $vals[3]); - &vstem($vals[4], $vals[5]); - } elsif($cmd eq "rmoveto") { - # a shortcut - last; - } - } - &drawchar("drawchar", 1, "contourcolor", $_[0]); -} - -sub drawchar #procname wantgrid color charstring -{ - my($procname, $wantgrid, $color, $charstring) = @_; - my($x,$y)=(0,0); - my @vals, $cmd, $i; - my %xv=(); - my %yv=(); - - printf("\n/%s {\n",$procname); - printf("\ngsave 72 72 translate fnt2pt fnt2pt scale %d %d translate\n", $xorg, $yorg); - printf("%s 1 setlinewidth newpath\n", $color); - for $_ (split(/\n/, $charstring)) { - s/^\s+//; - @vals=split(/\s+/, $_); - $cmd=$vals[$#vals]; - - if($cmd eq "callsubr" && $vals[1] == 4) { - push(@subrlist, $vals[0]); - } elsif($cmd eq "amoveto") { - $x=$vals[0]+0; - $y=$vals[1]+0; - $xv{$x+0}=1; $yv{$y+0}=1; - printf("%d %d moveto\n", $x, $y); - printf("%d %d 5 0 360 arc %d %d moveto\n", $x, $y, $x, $y); - } elsif($cmd eq "rmoveto") { - $x+=$vals[0]; - $y+=$vals[1]; - $xv{$x+0}=1; $yv{$y+0}=1; - printf("%d %d moveto\n", $x, $y); - printf("%d %d 5 0 360 arc %d %d moveto\n", $x, $y, $x, $y); - } elsif($cmd eq "hmoveto") { - $x+=$vals[0]; - $xv{$x+0}=1; $yv{$y+0}=1; - printf("%d %d moveto\n", $x, $y); - printf("%d %d 5 0 360 arc %d %d moveto\n", $x, $y, $x, $y); - } elsif($cmd eq "vmoveto") { - $y+=$vals[0]; - $xv{$x+0}=1; $yv{$y+0}=1; - printf("%d %d moveto\n", $x, $y); - printf("%d %d 5 0 360 arc %d %d moveto\n", $x, $y, $x, $y); - } elsif($cmd eq "alineto") { - $x=$vals[0]+0; - $y=$vals[1]+0; - $xv{$x+0}=1; $yv{$y+0}=1; - printf("%d %d lineto\n", $x, $y); - printf("%d %d 3 0 360 arc %d %d moveto\n", $x, $y, $x, $y); - } elsif($cmd eq "rlineto") { - $x+=$vals[0]; - $y+=$vals[1]; - $xv{$x+0}=1; $yv{$y+0}=1; - printf("%d %d lineto\n", $x, $y); - printf("%d %d 3 0 360 arc %d %d moveto\n", $x, $y, $x, $y); - } elsif($cmd eq "hlineto") { - $x+=$vals[0]; - $xv{$x+0}=1; $yv{$y+0}=1; - printf("%d %d lineto\n", $x, $y); - printf("%d %d 3 0 360 arc %d %d moveto\n", $x, $y, $x, $y); - } elsif($cmd eq "vlineto") { - $y+=$vals[0]; - $xv{$x+0}=1; $yv{$y+0}=1; - printf("%d %d lineto\n", $x, $y); - printf("%d %d 3 0 360 arc %d %d moveto\n", $x, $y, $x, $y); - } elsif($cmd eq "arcurveto") { - for $i (0,2,4) { - $x=$vals[$i]+0; - $y=$vals[$i+1]+0; - printf("%d %d ", $x, $y); - } - $xv{$x+0}=1; $yv{$y+0}=1; - printf("curveto\n"); - printf("%d %d 3 0 360 arc %d %d moveto\n", $x, $y, $x, $y); - } elsif($cmd eq "rrcurveto") { - for $i (0,2,4) { - $x+=$vals[$i]; - $y+=$vals[$i+1]; - printf("%d %d \n", $x, $y); - } - $xv{$x+0}=1; $yv{$y+0}=1; - printf("curveto\n"); - printf("%d %d 3 0 360 arc %d %d moveto\n", $x, $y, $x, $y); - } elsif($cmd eq "hvcurveto") { - $x+=$vals[0]; - printf("%d %d \n", $x, $y); - $x+=$vals[1]; - $y+=$vals[2]; - printf("%d %d \n", $x, $y); - $y+=$vals[3]; - printf("%d %d \n", $x, $y); - $xv{$x+0}=1; $yv{$y+0}=1; - printf("curveto\n"); - printf("%d %d 3 0 360 arc %d %d moveto\n", $x, $y, $x, $y); - } elsif($cmd eq "vhcurveto") { - $y+=$vals[0]; - printf("%d %d \n", $x, $y); - $x+=$vals[1]; - $y+=$vals[2]; - printf("%d %d \n", $x, $y); - $x+=$vals[3]; - printf("%d %d \n", $x, $y); - $xv{$x+0}=1; $yv{$y+0}=1; - printf("curveto\n"); - printf("%d %d 3 0 360 arc %d %d moveto\n", $x, $y, $x, $y); - } elsif($cmd eq "closepath") { - printf("closepath stroke newpath\n"); - } - } - - printf("grestore } bind def\n"); - if($wantgrid) { - printf("coordcolor\n"); - for $x (keys %xv) { - &linevert($x); - } - for $y (keys %yv) { - &linehor($y); - } - } -} - -$pages=0; - -for $arg (@ARGV) { - undef $name, $code; - - if( $arg =~ /^\/(.*)/ ) { - $name=$1; - } elsif( $arg =~ /^\.(.)/ ) { - $code=ord($1); - } else { - $code=$arg; - } - - $pages++; - - $stemhgrp=0; - $stemhused=0; - $stemvgrp=0; - $stemvused=0; - $stemwd=10; - undef %xcoord; - undef %ycoord; - - if( defined $name ) { - $xname = $name; - $xcode = $frevenc{$fname}{$name}; - if( $xcode eq "" ) { - $xcode = "**UNKNOWN**"; - } - } else { - $xname = $fenc{$fname}{$code}; - if( $xname eq "" ) { - $xname = "**UNKNOWN**"; - } - $xcode = $code; - } - - printf("%%%%Page: %d %d\n", $pages, $pages); - printf("gsave - -0 setlinewidth -36 72 translate - -gsave -contourcolor -72 72 scale -newpath -0 0 moveto -7 0 rlineto -0 7 rlineto --7 0 rlineto -closepath -stroke -1 1 translate -newpath -0 0 moveto -5 0 rlineto -0 5 rlineto --5 0 rlineto -closepath -stroke -grestore - -"); - - undef @subrlist; - - - @bbox=@{$fbbox{$fname}}; - - print("coordcolor\n"); - printf("0 linehor %d linehor %d linehor\n", $bbox[1]+$yorg, $bbox[3]+$yorg); - printf("%d linevert %d linevert\n", $bbox[0]+$xorg, $bbox[2]+$xorg); - - %vals=@{$fblues{$fname}}; - for $i (keys %vals) { - &bluezone($i, $vals{$i}); - } - - $havechar = 1; - if( defined $fchars{$fname}{$xname} ) { - &drawcharwstems($fchars{$fname}{$xname}); - } else { - $havechar = 0; - if(defined $name) { - printf(STDERR "WARNING: %s nas no character with name \"%s\"\n", $fname, $name); - } else { - printf(STDERR "WARNING: %s nas no character with code \"%s\"\n", $fname, $code); - } - } - - &substems($fname, @subrlist); - - printf(STDERR "glyph name:%s code:%s (%d substituted stem groups)\n", $xname, $xcode, scalar @subrlist); - - $cmpfidx = 0; - for $cmpf(@cmpfiles) { - undef $cname, $ccode; - - if( defined $name ) { - if ( ! defined $fchars{$cmpf}{$name} && defined $fenc{$cmpf}{$xcode}) { - printf(STDERR " NOTE: %s nas no glyph with name \"%s\", guessed by code\n", $cmpf, $name); - $cname = $fenc{$cmpf}{$xcode}; - if( $cname eq "" ) { - $cname = "**UNKNOWN**"; - } - $ccode = $xcode; - } else { - $cname = $name; - $ccode = $frevenc{$cmpf}{$name}; - if( $ccode eq "" ) { - $ccode = "**UNKNOWN**"; - } - } - } else { - $cname = $fenc{$cmpf}{$code}; - if( $cname eq "" ) { - $cname = "**UNKNOWN**"; - } - $ccode = $code; - } - - if( defined $fchars{$cmpf}{$cname} ) { - &drawchar("drawcmpchar", 0, sprintf("%d cmpfcolor", $cmpfidx), - $fchars{$cmpf}{$cname}); - printf("drawcmpchar\n\n"); - printf(STDERR " in %s glyph name:%s code:%s\n", $cmpf, $cname, $ccode); - } else { - if(defined $name) { - printf(STDERR " WARNING: %s nas no character with name \"%s\"\n", $cmpf, $name); - } else { - printf(STDERR " WARNING: %s nas no character with code \"%s\"\n", $cmpf, $code); - } - } - $cmpfidx++; - } - - if($havechar) { - printf("drawchar\n\n"); - } - - # flush the last group - &nextstemgrp(); - - # the values of coordinates - printf("/fontsz 8 fnt2pt div def\n"); - printf("/Myfont /Courier findfont fontsz scalefont def\n\n"); - printf("contourcolor Myfont setfont\n"); - - for $org (0, $xorg+$bbox[2]+$stemwd*$stemhgrp+72/$fnt2pt) { - printf("gsave\n"); - printf("/maxx 72 fnt2pt div %d sub def /curx 0 def /lasty -10000 def\n", - 2+$stemhgrp*$stemwd-$xorg-$bbox[0]); - printf("0 72 translate fnt2pt fnt2pt scale %f yorg translate 1 setlinewidth\n", $org); - for $y (sort {$a <=> $b} keys %ycoord) { - printf("(%d) getlen %d label\n", $y, $y); - } - printf("grestore\n"); - } - - for $org (0, $yorg+$bbox[3]+$stemwd*$stemvgrp+72/$fnt2pt) { - printf("gsave\n"); - printf("/maxx 72 fnt2pt div %d sub def /curx 0 def /lasty -10000 def\n", - 2+$stemvgrp*$stemwd-$yorg-$bbox[1]); - printf("72 0 translate fnt2pt fnt2pt scale xorg %f translate 90 rotate 1 setlinewidth\n", $org); - for $x (sort {$a <=> $b} keys %xcoord) { - printf("(%d) getlen %d label\n", $x, -$x); - } - printf("grestore\n"); - } - - printf("gsave 0 %d translate\n", 7.5*72 ); - printf("contourcolor /Courier findfont 12 scalefont setfont\n"); - $line = 0; - - $cmpfidx = $#cmpfiles; - if( $cmpfidx > (2.5*72/15)-4 ) { - $cmpfidx = (2.5*72/15)-4; - } - for(; $cmpfidx>=0; $cmpfidx--) { - $cmpf = $cmpfiles[$cmpfidx]; - printf("%d cmpfcolor\n", $cmpfidx); - printf("newpath 20 %d moveto 0 10 rlineto 10 0 rlineto 0 -10 rlineto closepath fill\n", - 15*$line, $cmpf); - printf("contourcolor 40 %d moveto (%s %s) show\n", 15*$line, $cmpf, $fontname{$cmpf}); - $line++; - } - if( $#cmpfiles >=0 ) { - printf("0 %d moveto (Comparison files:) show\n", 15*$line++); - } - printf("0 %d moveto (code: %d name: %s) show\n", 15*$line++, $xcode, $xname); - printf("0 %d moveto (%s) show\n", 15*$line++, $fname); - printf("0 %d moveto (%s) show\n", 15*$line++, $fontname{$fname}); - printf("grestore\n\n"); - - printf("showpage grestore\n\n"); -} -printf("%%%%Pages: %d\n", $pages); diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/pt1.c b/application/third_party/dompdf/lib/ttf2ufm/src/pt1.c deleted file mode 100644 index 875608b5..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/pt1.c +++ /dev/null @@ -1,7390 +0,0 @@ -/* - * see COPYRIGHT - */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <time.h> -#include <ctype.h> -#include <math.h> - -#ifndef WINDOWS -# include <netinet/in.h> -# include <unistd.h> -#else -# include "windows.h" -#endif - -#include "ttf.h" -#include "pt1.h" -#include "global.h" - -/* big and small values for comparisons */ -#define FBIGVAL (1e20) -#define FEPS (100000./FBIGVAL) - -/* names of the axes */ -#define X 0 -#define Y 1 - -/* the GENTRY extension structure used in fforceconcise() */ - -struct gex_con { - double d[2 /*X, Y*/]; /* sizes of curve */ - double sin2; /* squared sinus of the angle to the next gentry */ - double len2; /* squared distance between the endpoints */ - -/* number of reference dots taken from each curve */ -#define NREFDOTS 3 - - double dots[NREFDOTS][2]; /* reference dots */ - - int flags; /* flags for gentry and tits joint to the next gentry */ -/* a vertical or horizontal line may be in 2 quadrants at once */ -#define GEXF_QUL 0x00000001 /* in up-left quadrant */ -#define GEXF_QUR 0x00000002 /* in up-right quadrant */ -#define GEXF_QDR 0x00000004 /* in down-right quadrant */ -#define GEXF_QDL 0x00000008 /* in down-left quadrant */ -#define GEXF_QMASK 0x0000000F /* quadrant mask */ - -/* if a line is nearly vertical or horizontal, we remember that idealized quartant too */ -#define GEXF_QTO_IDEAL(f) (((f)&0xF)<<4) -#define GEXF_QFROM_IDEAL(f) (((f)&0xF0)>>4) -#define GEXF_IDQ_L 0x00000090 /* left */ -#define GEXF_IDQ_R 0x00000060 /* right */ -#define GEXF_IDQ_U 0x00000030 /* up */ -#define GEXF_IDQ_D 0x000000C0 /* down */ - -/* possibly can be joined with conditions: - * (in order of increasing preference, the numeric order is important) - */ -#define GEXF_JLINE 0x00000100 /* into one line */ -#define GEXF_JIGN 0x00000200 /* if one entry's tangent angle is ignored */ -#define GEXF_JID 0x00000400 /* if one entry is idealized to hor/vert */ -#define GEXF_JFLAT 0x00000800 /* if one entry is flattened */ -#define GEXF_JGOOD 0x00001000 /* perfectly, no additional maodifications */ - -#define GEXF_JMASK 0x00001F00 /* the mask of all above */ -#define GEXF_JCVMASK 0x00001E00 /* the mask of all above except JLINE */ - -/* which entry needs to be modified for conditional joining */ -#define GEXF_JIGN1 0x00002000 -#define GEXF_JIGN2 0x00004000 -#define GEXF_JIGNDIR(dir) (GEXF_JIGN1<<(dir)) -#define GEXF_JID1 0x00008000 -#define GEXF_JID2 0x00010000 -#define GEXF_JIDDIR(dir) (GEXF_JID1<<(dir)) -#define GEXF_JFLAT1 0x00020000 -#define GEXF_JFLAT2 0x00040000 -#define GEXF_JFLATDIR(dir) (GEXF_JFLAT1<<(dir)) - -#define GEXF_VERT 0x00100000 /* is nearly vertical */ -#define GEXF_HOR 0x00200000 /* is nearly horizontal */ -#define GEXF_FLAT 0x00400000 /* is nearly flat */ - -#define GEXF_VDOTS 0x01000000 /* the dots are valid */ - - signed char isd[2 /*X,Y*/]; /* signs of the sizes */ -}; -typedef struct gex_con GEX_CON; - -/* convenience macros */ -#define X_CON(ge) ((GEX_CON *)((ge)->ext)) -#define X_CON_D(ge) (X_CON(ge)->d) -#define X_CON_DX(ge) (X_CON(ge)->d[0]) -#define X_CON_DY(ge) (X_CON(ge)->d[1]) -#define X_CON_ISD(ge) (X_CON(ge)->isd) -#define X_CON_ISDX(ge) (X_CON(ge)->isd[0]) -#define X_CON_ISDY(ge) (X_CON(ge)->isd[1]) -#define X_CON_SIN2(ge) (X_CON(ge)->sin2) -#define X_CON_LEN2(ge) (X_CON(ge)->len2) -#define X_CON_F(ge) (X_CON(ge)->flags) - -/* performance statistics about guessing the concise curves */ -static int ggoodcv=0, ggoodcvdots=0, gbadcv=0, gbadcvdots=0; - -int stdhw, stdvw; /* dominant stems widths */ -int stemsnaph[12], stemsnapv[12]; /* most typical stem width */ - -int bluevalues[14]; -int nblues; -int otherblues[10]; -int notherb; -int bbox[4]; /* the FontBBox array */ -double italic_angle; - -GLYPH *glyph_list; -int encoding[ENCTABSZ]; /* inverse of glyph[].char_no */ -int kerning_pairs = 0; - -/* prototypes */ -static void fixcvdir( GENTRY * ge, int dir); -static void fixcvends( GENTRY * ge); -static int fgetcvdir( GENTRY * ge); -static int igetcvdir( GENTRY * ge); -static int fiszigzag( GENTRY *ge); -static int iiszigzag( GENTRY *ge); -static GENTRY * freethisge( GENTRY *ge); -static void addgeafter( GENTRY *oge, GENTRY *nge ); -static GENTRY * newgentry( int flags); -static void debugstems( char *name, STEM * hstems, int nhs, STEM * vstems, int nvs); -static int addbluestems( STEM *s, int n); -static void sortstems( STEM * s, int n); -static int stemoverlap( STEM * s1, STEM * s2); -static int steminblue( STEM *s); -static void markbluestems( STEM *s, int nold); -static int joinmainstems( STEM * s, int nold, int useblues); -static void joinsubstems( STEM * s, short *pairs, int nold, int useblues); -static void fixendpath( GENTRY *ge); -static void fdelsmall( GLYPH *g, double minlen); -static void alloc_gex_con( GENTRY *ge); -static double fjointsin2( GENTRY *ge1, GENTRY *ge2); -static double fcvarea( GENTRY *ge); -static double fcvval( GENTRY *ge, int axis, double t); -static void fsampledots( GENTRY *ge, double dots[][2], int ndots); -static void fnormalizege( GENTRY *ge); -static void fanalyzege( GENTRY *ge); -static void fanalyzejoint( GENTRY *ge); -static void fconcisecontour( GLYPH *g, GENTRY *ge); -static double fclosegap( GENTRY *from, GENTRY *to, int axis, - double gap, double *ret); - -int -isign( - int x -) -{ - if (x > 0) - return 1; - else if (x < 0) - return -1; - else - return 0; -} - -int -fsign( - double x -) -{ - if (x > 0.0) - return 1; - else if (x < 0.0) - return -1; - else - return 0; -} - -static GENTRY * -newgentry( - int flags -) -{ - GENTRY *ge; - - ge = calloc(1, sizeof(GENTRY)); - - if (ge == 0) { - fprintf(stderr, "***** Memory allocation error *****\n"); - exit(255); - } - ge->stemid = -1; - ge->flags = flags; - /* the rest is set to 0 by calloc() */ - return ge; -} - -/* - * Routines to print out Postscript functions with optimization - */ - -void -rmoveto( - int dx, - int dy -) -{ - if (optimize && dx == 0) - fprintf(pfa_file, "%d vmoveto\n", dy); - else if (optimize && dy == 0) - fprintf(pfa_file, "%d hmoveto\n", dx); - else - fprintf(pfa_file, "%d %d rmoveto\n", dx, dy); -} - -void -rlineto( - int dx, - int dy -) -{ - if (optimize && dx == 0 && dy == 0) /* for special pathologic - * case */ - return; - else if (optimize && dx == 0) - fprintf(pfa_file, "%d vlineto\n", dy); - else if (optimize && dy == 0) - fprintf(pfa_file, "%d hlineto\n", dx); - else - fprintf(pfa_file, "%d %d rlineto\n", dx, dy); -} - -void -rrcurveto( - int dx1, - int dy1, - int dx2, - int dy2, - int dx3, - int dy3 -) -{ - /* first two ifs are for crazy cases that occur surprisingly often */ - if (optimize && dx1 == 0 && dx2 == 0 && dx3 == 0) - rlineto(0, dy1 + dy2 + dy3); - else if (optimize && dy1 == 0 && dy2 == 0 && dy3 == 0) - rlineto(dx1 + dx2 + dx3, 0); - else if (optimize && dy1 == 0 && dx3 == 0) - fprintf(pfa_file, "%d %d %d %d hvcurveto\n", - dx1, dx2, dy2, dy3); - else if (optimize && dx1 == 0 && dy3 == 0) - fprintf(pfa_file, "%d %d %d %d vhcurveto\n", - dy1, dx2, dy2, dx3); - else - fprintf(pfa_file, "%d %d %d %d %d %d rrcurveto\n", - dx1, dy1, dx2, dy2, dx3, dy3); -} - -void -closepath(void) -{ - fprintf(pfa_file, "closepath\n"); -} - -/* - * Many of the path processing routines exist (or will exist) in - * both floating-point and integer version. Fimally most of the - * processing will go in floating point and the integer processing - * will become legacy. - * The names of floating routines start with f, names of integer - * routines start with i, and those old routines existing in one - * version only have no such prefix at all. - */ - -/* -** Routine that checks integrity of the path, for debugging -*/ - -void -assertpath( - GENTRY * from, - char *file, - int line, - char *name -) -{ - GENTRY *first, *pe, *ge; - int isfloat; - - if(from==0) - return; - isfloat = (from->flags & GEF_FLOAT); - pe = from->prev; - for (ge = from; ge != 0; pe = ge, ge = ge->next) { - if( (ge->flags & GEF_FLOAT) ^ isfloat ) { - fprintf(stderr, "**! assertpath: called from %s line %d (%s) ****\n", file, line, name); - fprintf(stderr, "float flag changes from %s to %s at 0x%p (type %c, prev type %c)\n", - (isfloat ? "TRUE" : "FALSE"), (isfloat ? "FALSE" : "TRUE"), ge, ge->type, pe->type); - abort(); - } - if (pe != ge->prev) { - fprintf(stderr, "**! assertpath: called from %s line %d (%s) ****\n", file, line, name); - fprintf(stderr, "unidirectional chain 0x%x -next-> 0x%x -prev-> 0x%x \n", - pe, ge, ge->prev); - abort(); - } - - switch(ge->type) { - case GE_MOVE: - break; - case GE_PATH: - if (ge->prev == 0) { - fprintf(stderr, "**! assertpath: called from %s line %d (%s) ****\n", file, line, name); - fprintf(stderr, "empty path at 0x%x \n", ge); - abort(); - } - break; - case GE_LINE: - case GE_CURVE: - if(ge->frwd->bkwd != ge) { - fprintf(stderr, "**! assertpath: called from %s line %d (%s) ****\n", file, line, name); - fprintf(stderr, "unidirectional chain 0x%x -frwd-> 0x%x -bkwd-> 0x%x \n", - ge, ge->frwd, ge->frwd->bkwd); - abort(); - } - if(ge->prev->type == GE_MOVE) { - first = ge; - if(ge->bkwd->next->type != GE_PATH) { - fprintf(stderr, "**! assertpath: called from %s line %d (%s) ****\n", file, line, name); - fprintf(stderr, "broken first backlink 0x%x -bkwd-> 0x%x -next-> 0x%x \n", - ge, ge->bkwd, ge->bkwd->next); - abort(); - } - } - if(ge->next->type == GE_PATH) { - if(ge->frwd != first) { - fprintf(stderr, "**! assertpath: called from %s line %d (%s) ****\n", file, line, name); - fprintf(stderr, "broken loop 0x%x -...-> 0x%x -frwd-> 0x%x \n", - first, ge, ge->frwd); - abort(); - } - } - break; - } - - } -} - -void -assertisfloat( - GLYPH *g, - char *msg -) -{ - if( !(g->flags & GF_FLOAT) ) { - fprintf(stderr, "**! Glyph %s is not float: %s\n", g->name, msg); - abort(); - } - if(g->lastentry) { - if( !(g->lastentry->flags & GEF_FLOAT) ) { - fprintf(stderr, "**! Glyphs %s last entry is int: %s\n", g->name, msg); - abort(); - } - } -} - -void -assertisint( - GLYPH *g, - char *msg -) -{ - if( (g->flags & GF_FLOAT) ) { - fprintf(stderr, "**! Glyph %s is not int: %s\n", g->name, msg); - abort(); - } - if(g->lastentry) { - if( (g->lastentry->flags & GEF_FLOAT) ) { - fprintf(stderr, "**! Glyphs %s last entry is float: %s\n", g->name, msg); - abort(); - } - } -} - - -/* - * Routines to save the generated data about glyph - */ - -void -fg_rmoveto( - GLYPH * g, - double x, - double y) -{ - GENTRY *oge; - - if (ISDBG(BUILDG)) - fprintf(stderr, "%s: f rmoveto(%g, %g)\n", g->name, x, y); - - assertisfloat(g, "adding float MOVE"); - - if ((oge = g->lastentry) != 0) { - if (oge->type == GE_MOVE) { /* just eat up the first move */ - oge->fx3 = x; - oge->fy3 = y; - } else if (oge->type == GE_LINE || oge->type == GE_CURVE) { - fprintf(stderr, "Glyph %s: MOVE in middle of path\n", g->name); - } else { - GENTRY *nge; - - nge = newgentry(GEF_FLOAT); - nge->type = GE_MOVE; - nge->fx3 = x; - nge->fy3 = y; - - oge->next = nge; - nge->prev = oge; - g->lastentry = nge; - } - } else { - GENTRY *nge; - - nge = newgentry(GEF_FLOAT); - nge->type = GE_MOVE; - nge->fx3 = x; - nge->fy3 = y; - nge->bkwd = (GENTRY*)&g->entries; - g->entries = g->lastentry = nge; - } - - if (0 && ISDBG(BUILDG)) - dumppaths(g, NULL, NULL); -} - -void -ig_rmoveto( - GLYPH * g, - int x, - int y) -{ - GENTRY *oge; - - if (ISDBG(BUILDG)) - fprintf(stderr, "%s: i rmoveto(%d, %d)\n", g->name, x, y); - - assertisint(g, "adding int MOVE"); - - if ((oge = g->lastentry) != 0) { - if (oge->type == GE_MOVE) { /* just eat up the first move */ - oge->ix3 = x; - oge->iy3 = y; - } else if (oge->type == GE_LINE || oge->type == GE_CURVE) { - fprintf(stderr, "Glyph %s: MOVE in middle of path, ignored\n", g->name); - } else { - GENTRY *nge; - - nge = newgentry(0); - nge->type = GE_MOVE; - nge->ix3 = x; - nge->iy3 = y; - - oge->next = nge; - nge->prev = oge; - g->lastentry = nge; - } - } else { - GENTRY *nge; - - nge = newgentry(0); - nge->type = GE_MOVE; - nge->ix3 = x; - nge->iy3 = y; - nge->bkwd = (GENTRY*)&g->entries; - g->entries = g->lastentry = nge; - } - -} - -void -fg_rlineto( - GLYPH * g, - double x, - double y) -{ - GENTRY *oge, *nge; - - if (ISDBG(BUILDG)) - fprintf(stderr, "%s: f rlineto(%g, %g)\n", g->name, x, y); - - assertisfloat(g, "adding float LINE"); - - nge = newgentry(GEF_FLOAT); - nge->type = GE_LINE; - nge->fx3 = x; - nge->fy3 = y; - - if ((oge = g->lastentry) != 0) { - if (x == oge->fx3 && y == oge->fy3) { /* empty line */ - /* ignore it or we will get in troubles later */ - free(nge); - return; - } - if (g->path == 0) { - g->path = nge; - nge->bkwd = nge->frwd = nge; - } else { - oge->frwd = nge; - nge->bkwd = oge; - g->path->bkwd = nge; - nge->frwd = g->path; - } - - oge->next = nge; - nge->prev = oge; - g->lastentry = nge; - } else { - WARNING_1 fprintf(stderr, "Glyph %s: LINE outside of path\n", g->name); - free(nge); - } - - if (0 && ISDBG(BUILDG)) - dumppaths(g, NULL, NULL); -} - -void -ig_rlineto( - GLYPH * g, - int x, - int y) -{ - GENTRY *oge, *nge; - - if (ISDBG(BUILDG)) - fprintf(stderr, "%s: i rlineto(%d, %d)\n", g->name, x, y); - - assertisint(g, "adding int LINE"); - - nge = newgentry(0); - nge->type = GE_LINE; - nge->ix3 = x; - nge->iy3 = y; - - if ((oge = g->lastentry) != 0) { - if (x == oge->ix3 && y == oge->iy3) { /* empty line */ - /* ignore it or we will get in troubles later */ - free(nge); - return; - } - if (g->path == 0) { - g->path = nge; - nge->bkwd = nge->frwd = nge; - } else { - oge->frwd = nge; - nge->bkwd = oge; - g->path->bkwd = nge; - nge->frwd = g->path; - } - - oge->next = nge; - nge->prev = oge; - g->lastentry = nge; - } else { - WARNING_1 fprintf(stderr, "Glyph %s: LINE outside of path\n", g->name); - free(nge); - } - -} - -void -fg_rrcurveto( - GLYPH * g, - double x1, - double y1, - double x2, - double y2, - double x3, - double y3) -{ - GENTRY *oge, *nge; - - oge = g->lastentry; - - if (ISDBG(BUILDG)) - fprintf(stderr, "%s: f rrcurveto(%g, %g, %g, %g, %g, %g)\n" - ,g->name, x1, y1, x2, y2, x3, y3); - - assertisfloat(g, "adding float CURVE"); - - if (oge && oge->fx3 == x1 && x1 == x2 && x2 == x3) /* check if it's - * actually a line */ - fg_rlineto(g, x1, y3); - else if (oge && oge->fy3 == y1 && y1 == y2 && y2 == y3) - fg_rlineto(g, x3, y1); - else { - nge = newgentry(GEF_FLOAT); - nge->type = GE_CURVE; - nge->fx1 = x1; - nge->fy1 = y1; - nge->fx2 = x2; - nge->fy2 = y2; - nge->fx3 = x3; - nge->fy3 = y3; - - if (oge != 0) { - if (x3 == oge->fx3 && y3 == oge->fy3) { - free(nge); /* consider this curve empty */ - /* ignore it or we will get in troubles later */ - return; - } - if (g->path == 0) { - g->path = nge; - nge->bkwd = nge->frwd = nge; - } else { - oge->frwd = nge; - nge->bkwd = oge; - g->path->bkwd = nge; - nge->frwd = g->path; - } - - oge->next = nge; - nge->prev = oge; - g->lastentry = nge; - } else { - WARNING_1 fprintf(stderr, "Glyph %s: CURVE outside of path\n", g->name); - free(nge); - } - } - - if (0 && ISDBG(BUILDG)) - dumppaths(g, NULL, NULL); -} - -void -ig_rrcurveto( - GLYPH * g, - int x1, - int y1, - int x2, - int y2, - int x3, - int y3) -{ - GENTRY *oge, *nge; - - oge = g->lastentry; - - if (ISDBG(BUILDG)) - fprintf(stderr, "%s: i rrcurveto(%d, %d, %d, %d, %d, %d)\n" - ,g->name, x1, y1, x2, y2, x3, y3); - - assertisint(g, "adding int CURVE"); - - if (oge && oge->ix3 == x1 && x1 == x2 && x2 == x3) /* check if it's - * actually a line */ - ig_rlineto(g, x1, y3); - else if (oge && oge->iy3 == y1 && y1 == y2 && y2 == y3) - ig_rlineto(g, x3, y1); - else { - nge = newgentry(0); - nge->type = GE_CURVE; - nge->ix1 = x1; - nge->iy1 = y1; - nge->ix2 = x2; - nge->iy2 = y2; - nge->ix3 = x3; - nge->iy3 = y3; - - if (oge != 0) { - if (x3 == oge->ix3 && y3 == oge->iy3) { - free(nge); /* consider this curve empty */ - /* ignore it or we will get in troubles later */ - return; - } - if (g->path == 0) { - g->path = nge; - nge->bkwd = nge->frwd = nge; - } else { - oge->frwd = nge; - nge->bkwd = oge; - g->path->bkwd = nge; - nge->frwd = g->path; - } - - oge->next = nge; - nge->prev = oge; - g->lastentry = nge; - } else { - WARNING_1 fprintf(stderr, "Glyph %s: CURVE outside of path\n", g->name); - free(nge); - } - } -} - -void -g_closepath( - GLYPH * g -) -{ - GENTRY *oge, *nge; - - if (ISDBG(BUILDG)) - fprintf(stderr, "%s: closepath\n", g->name); - - oge = g->lastentry; - - if (g->path == 0) { - WARNING_1 fprintf(stderr, "Warning: **** closepath on empty path in glyph \"%s\" ****\n", - g->name); - if (oge == 0) { - WARNING_1 fprintf(stderr, "No previois entry\n"); - } else { - WARNING_1 fprintf(stderr, "Previous entry type: %c\n", oge->type); - if (oge->type == GE_MOVE) { - g->lastentry = oge->prev; - if (oge->prev == 0) - g->entries = 0; - else - g->lastentry->next = 0; - free(oge); - } - } - return; - } - - nge = newgentry(oge->flags & GEF_FLOAT); /* keep the same type */ - nge->type = GE_PATH; - - g->path = 0; - - oge->next = nge; - nge->prev = oge; - g->lastentry = nge; - - if (0 && ISDBG(BUILDG)) - dumppaths(g, NULL, NULL); -} - -/* - * * SB * Routines to smooth and fix the glyphs - */ - -/* -** we don't want to see the curves with coinciding middle and -** outer points -*/ - -static void -fixcvends( - GENTRY * ge -) -{ - int dx, dy; - int x0, y0, x1, y1, x2, y2, x3, y3; - - if (ge->type != GE_CURVE) - return; - - if(ge->flags & GEF_FLOAT) { - fprintf(stderr, "**! fixcvends(0x%x) on floating entry, ABORT\n", ge); - abort(); /* dump core */ - } - - x0 = ge->prev->ix3; - y0 = ge->prev->iy3; - x1 = ge->ix1; - y1 = ge->iy1; - x2 = ge->ix2; - y2 = ge->iy2; - x3 = ge->ix3; - y3 = ge->iy3; - - - /* look at the start of the curve */ - if (x1 == x0 && y1 == y0) { - dx = x2 - x1; - dy = y2 - y1; - - if (dx == 0 && dy == 0 - || x2 == x3 && y2 == y3) { - /* Oops, we actually have a straight line */ - /* - * if it's small, we hope that it will get optimized - * later - */ - if (abs(x3 - x0) <= 2 || abs(y3 - y0) <= 2) { - ge->ix1 = x3; - ge->iy1 = y3; - ge->ix2 = x0; - ge->iy2 = y0; - } else {/* just make it a line */ - ge->type = GE_LINE; - } - } else { - if (abs(dx) < 4 && abs(dy) < 4) { /* consider it very - * small */ - ge->ix1 = x2; - ge->iy1 = y2; - } else if (abs(dx) < 8 && abs(dy) < 8) { /* consider it small */ - ge->ix1 += dx / 2; - ge->iy1 += dy / 2; - } else { - ge->ix1 += dx / 4; - ge->iy1 += dy / 4; - } - /* make sure that it's still on the same side */ - if (abs(x3 - x0) * abs(dy) < abs(y3 - y0) * abs(dx)) { - if (abs(x3 - x0) * abs(ge->iy1 - y0) > abs(y3 - y0) * abs(ge->ix1 - x0)) - ge->ix1 += isign(dx); - } else { - if (abs(x3 - x0) * abs(ge->iy1 - y0) < abs(y3 - y0) * abs(ge->ix1 - x0)) - ge->iy1 += isign(dy); - } - - ge->ix2 += (x3 - x2) / 8; - ge->iy2 += (y3 - y2) / 8; - /* make sure that it's still on the same side */ - if (abs(x3 - x0) * abs(y3 - y2) < abs(y3 - y0) * abs(x3 - x2)) { - if (abs(x3 - x0) * abs(y3 - ge->iy2) > abs(y3 - y0) * abs(x3 - ge->ix2)) - ge->iy1 -= isign(y3 - y2); - } else { - if (abs(x3 - x0) * abs(y3 - ge->iy2) < abs(y3 - y0) * abs(x3 - ge->ix2)) - ge->ix1 -= isign(x3 - x2); - } - - } - } else if (x2 == x3 && y2 == y3) { - dx = x1 - x2; - dy = y1 - y2; - - if (dx == 0 && dy == 0) { - /* Oops, we actually have a straight line */ - /* - * if it's small, we hope that it will get optimized - * later - */ - if (abs(x3 - x0) <= 2 || abs(y3 - y0) <= 2) { - ge->ix1 = x3; - ge->iy1 = y3; - ge->ix2 = x0; - ge->iy2 = y0; - } else {/* just make it a line */ - ge->type = GE_LINE; - } - } else { - if (abs(dx) < 4 && abs(dy) < 4) { /* consider it very - * small */ - ge->ix2 = x1; - ge->iy2 = y1; - } else if (abs(dx) < 8 && abs(dy) < 8) { /* consider it small */ - ge->ix2 += dx / 2; - ge->iy2 += dy / 2; - } else { - ge->ix2 += dx / 4; - ge->iy2 += dy / 4; - } - /* make sure that it's still on the same side */ - if (abs(x3 - x0) * abs(dy) < abs(y3 - y0) * abs(dx)) { - if (abs(x3 - x0) * abs(ge->iy2 - y3) > abs(y3 - y0) * abs(ge->ix2 - x3)) - ge->ix2 += isign(dx); - } else { - if (abs(x3 - x0) * abs(ge->iy2 - y3) < abs(y3 - y0) * abs(ge->ix2 - x3)) - ge->iy2 += isign(dy); - } - - ge->ix1 += (x0 - x1) / 8; - ge->iy1 += (y0 - y1) / 8; - /* make sure that it's still on the same side */ - if (abs(x3 - x0) * abs(y0 - y1) < abs(y3 - y0) * abs(x0 - x1)) { - if (abs(x3 - x0) * abs(y0 - ge->iy1) > abs(y3 - y0) * abs(x0 - ge->ix1)) - ge->iy1 -= isign(y0 - y1); - } else { - if (abs(x3 - x0) * abs(y0 - ge->iy1) < abs(y3 - y0) * abs(x0 - ge->ix1)) - ge->ix1 -= isign(x0 - x1); - } - - } - } -} - -/* -** After transformations we want to make sure that the resulting -** curve is going in the same quadrant as the original one, -** because rounding errors introduced during transformations -** may make the result completeley wrong. -** -** `dir' argument describes the direction of the original curve, -** it is the superposition of two values for the front and -** rear ends of curve: -** -** >EQUAL - goes over the line connecting the ends -** =EQUAL - coincides with the line connecting the ends -** <EQUAL - goes under the line connecting the ends -** -** See CVDIR_* for exact definitions. -*/ - -static void -fixcvdir( - GENTRY * ge, - int dir -) -{ - int a, b, c, d; - double kk, kk1, kk2; - int changed; - int fdir, rdir; - - if(ge->flags & GEF_FLOAT) { - fprintf(stderr, "**! fixcvdir(0x%x) on floating entry, ABORT\n", ge); - abort(); /* dump core */ - } - - fdir = (dir & CVDIR_FRONT) - CVDIR_FEQUAL; - if ((dir & CVDIR_REAR) == CVDIR_RSAME) - rdir = fdir; /* we need only isign, exact value doesn't matter */ - else - rdir = (dir & CVDIR_REAR) - CVDIR_REQUAL; - - fixcvends(ge); - - c = isign(ge->ix3 - ge->prev->ix3); /* note the direction of - * curve */ - d = isign(ge->iy3 - ge->prev->iy3); - - a = ge->iy3 - ge->prev->iy3; - b = ge->ix3 - ge->prev->ix3; - kk = fabs(a == 0 ? (b == 0 ? 1. : 100000.) : ((double) b / (double) a)); - a = ge->iy1 - ge->prev->iy3; - b = ge->ix1 - ge->prev->ix3; - kk1 = fabs(a == 0 ? (b == 0 ? 1. : 100000.) : ((double) b / (double) a)); - a = ge->iy3 - ge->iy2; - b = ge->ix3 - ge->ix2; - kk2 = fabs(a == 0 ? (b == 0 ? 1. : 100000.) : ((double) b / (double) a)); - - changed = 1; - while (changed) { - if (ISDBG(FIXCVDIR)) { - /* for debugging */ - fprintf(stderr, "fixcvdir %d %d (%d %d %d %d %d %d) %f %f %f\n", - fdir, rdir, - ge->ix1 - ge->prev->ix3, - ge->iy1 - ge->prev->iy3, - ge->ix2 - ge->ix1, - ge->iy2 - ge->iy1, - ge->ix3 - ge->ix2, - ge->iy3 - ge->iy2, - kk1, kk, kk2); - } - changed = 0; - - if (fdir > 0) { - if (kk1 > kk) { /* the front end has problems */ - if (c * (ge->ix1 - ge->prev->ix3) > 0) { - ge->ix1 -= c; - changed = 1; - } if (d * (ge->iy2 - ge->iy1) > 0) { - ge->iy1 += d; - changed = 1; - } - /* recalculate the coefficients */ - a = ge->iy3 - ge->prev->iy3; - b = ge->ix3 - ge->prev->ix3; - kk = fabs(a == 0 ? (b == 0 ? 1. : 100000.) : ((double) b / (double) a)); - a = ge->iy1 - ge->prev->iy3; - b = ge->ix1 - ge->prev->ix3; - kk1 = fabs(a == 0 ? (b == 0 ? 1. : 100000.) : ((double) b / (double) a)); - } - } else if (fdir < 0) { - if (kk1 < kk) { /* the front end has problems */ - if (c * (ge->ix2 - ge->ix1) > 0) { - ge->ix1 += c; - changed = 1; - } if (d * (ge->iy1 - ge->prev->iy3) > 0) { - ge->iy1 -= d; - changed = 1; - } - /* recalculate the coefficients */ - a = ge->iy1 - ge->prev->iy3; - b = ge->ix1 - ge->prev->ix3; - kk1 = fabs(a == 0 ? (b == 0 ? 1. : 100000.) : ((double) b / (double) a)); - a = ge->iy3 - ge->prev->iy3; - b = ge->ix3 - ge->prev->ix3; - kk = fabs(a == 0 ? (b == 0 ? 1. : 100000.) : ((double) b / (double) a)); - } - } - if (rdir > 0) { - if (kk2 < kk) { /* the rear end has problems */ - if (c * (ge->ix2 - ge->ix1) > 0) { - ge->ix2 -= c; - changed = 1; - } if (d * (ge->iy3 - ge->iy2) > 0) { - ge->iy2 += d; - changed = 1; - } - /* recalculate the coefficients */ - a = ge->iy3 - ge->prev->iy3; - b = ge->ix3 - ge->prev->ix3; - kk = fabs(a == 0 ? (b == 0 ? 1. : 100000.) : ((double) b / (double) a)); - a = ge->iy3 - ge->iy2; - b = ge->ix3 - ge->ix2; - kk2 = fabs(a == 0 ? (b == 0 ? 1. : 100000.) : ((double) b / (double) a)); - } - } else if (rdir < 0) { - if (kk2 > kk) { /* the rear end has problems */ - if (c * (ge->ix3 - ge->ix2) > 0) { - ge->ix2 += c; - changed = 1; - } if (d * (ge->iy2 - ge->iy1) > 0) { - ge->iy2 -= d; - changed = 1; - } - /* recalculate the coefficients */ - a = ge->iy3 - ge->prev->iy3; - b = ge->ix3 - ge->prev->ix3; - kk = fabs(a == 0 ? (b == 0 ? 1. : 100000.) : ((double) b / (double) a)); - a = ge->iy3 - ge->iy2; - b = ge->ix3 - ge->ix2; - kk2 = fabs(a == 0 ? (b == 0 ? 1. : 100000.) : ((double) b / (double) a)); - } - } - } - fixcvends(ge); -} - -/* Get the directions of ends of curve for further usage */ - -/* expects that the previous element is also float */ - -static int -fgetcvdir( - GENTRY * ge -) -{ - double a, b; - double k, k1, k2; - int dir = 0; - - if( !(ge->flags & GEF_FLOAT) ) { - fprintf(stderr, "**! fgetcvdir(0x%x) on int entry, ABORT\n", ge); - abort(); /* dump core */ - } - - a = fabs(ge->fy3 - ge->prev->fy3); - b = fabs(ge->fx3 - ge->prev->fx3); - k = a < FEPS ? (b < FEPS ? 1. : 100000.) : ( b / a); - - a = fabs(ge->fy1 - ge->prev->fy3); - b = fabs(ge->fx1 - ge->prev->fx3); - if(a < FEPS) { - if(b < FEPS) { - a = fabs(ge->fy2 - ge->prev->fy3); - b = fabs(ge->fx2 - ge->prev->fx3); - k1 = a < FEPS ? (b < FEPS ? k : 100000.) : ( b / a); - } else - k1 = FBIGVAL; - } else - k1 = b / a; - - a = fabs(ge->fy3 - ge->fy2); - b = fabs(ge->fx3 - ge->fx2); - if(a < FEPS) { - if(b < FEPS) { - a = fabs(ge->fy3 - ge->fy1); - b = fabs(ge->fx3 - ge->fx1); - k2 = a < FEPS ? (b < FEPS ? k : 100000.) : ( b / a); - } else - k2 = FBIGVAL; - } else - k2 = b / a; - - if(fabs(k1-k) < 0.0001) - dir |= CVDIR_FEQUAL; - else if (k1 < k) - dir |= CVDIR_FUP; - else - dir |= CVDIR_FDOWN; - - if(fabs(k2-k) < 0.0001) - dir |= CVDIR_REQUAL; - else if (k2 > k) - dir |= CVDIR_RUP; - else - dir |= CVDIR_RDOWN; - - return dir; -} - - -/* expects that the previous element is also int */ - -static int -igetcvdir( - GENTRY * ge -) -{ - int a, b; - double k, k1, k2; - int dir = 0; - - if(ge->flags & GEF_FLOAT) { - fprintf(stderr, "**! igetcvdir(0x%x) on floating entry, ABORT\n", ge); - abort(); /* dump core */ - } - - a = ge->iy3 - ge->prev->iy3; - b = ge->ix3 - ge->prev->ix3; - k = (a == 0) ? (b == 0 ? 1. : 100000.) : fabs((double) b / (double) a); - - a = ge->iy1 - ge->prev->iy3; - b = ge->ix1 - ge->prev->ix3; - if(a == 0) { - if(b == 0) { - a = ge->iy2 - ge->prev->iy3; - b = ge->ix2 - ge->prev->ix3; - k1 = (a == 0) ? (b == 0 ? k : 100000.) : fabs((double) b / (double) a); - } else - k1 = FBIGVAL; - } else - k1 = fabs((double) b / (double) a); - - a = ge->iy3 - ge->iy2; - b = ge->ix3 - ge->ix2; - if(a == 0) { - if(b == 0) { - a = ge->iy3 - ge->iy1; - b = ge->ix3 - ge->ix1; - k2 = (a == 0) ? (b == 0 ? k : 100000.) : fabs((double) b / (double) a); - } else - k2 = FBIGVAL; - } else - k2 = fabs((double) b / (double) a); - - if(fabs(k1-k) < 0.0001) - dir |= CVDIR_FEQUAL; - else if (k1 < k) - dir |= CVDIR_FUP; - else - dir |= CVDIR_FDOWN; - - if(fabs(k2-k) < 0.0001) - dir |= CVDIR_REQUAL; - else if (k2 > k) - dir |= CVDIR_RUP; - else - dir |= CVDIR_RDOWN; - - return dir; -} - -#if 0 -/* a function just to test the work of fixcvdir() */ -static void -testfixcvdir( - GLYPH * g -) -{ - GENTRY *ge; - int dir; - - for (ge = g->entries; ge != 0; ge = ge->next) { - if (ge->type == GE_CURVE) { - dir = igetcvdir(ge); - fixcvdir(ge, dir); - } - } -} -#endif - -static int -iround( - double val -) -{ - return (int) (val > 0 ? val + 0.5 : val - 0.5); -} - -/* for debugging - dump the glyph - * mark with a star the entries from start to end inclusive - * (start == NULL means don't mark any, end == NULL means to the last) - */ - -void -dumppaths( - GLYPH *g, - GENTRY *start, - GENTRY *end -) -{ - GENTRY *ge; - int i; - char mark=' '; - - fprintf(stderr, "Glyph %s:\n", g->name); - - /* now do the conversion */ - for(ge = g->entries; ge != 0; ge = ge->next) { - if(ge == start) - mark = '*'; - fprintf(stderr, " %c %8x", mark, ge); - switch(ge->type) { - case GE_MOVE: - case GE_LINE: - if(ge->flags & GEF_FLOAT) - fprintf(stderr," %c float (%g, %g)\n", ge->type, ge->fx3, ge->fy3); - else - fprintf(stderr," %c int (%d, %d)\n", ge->type, ge->ix3, ge->iy3); - break; - case GE_CURVE: - if(ge->flags & GEF_FLOAT) { - fprintf(stderr," C float "); - for(i=0; i<3; i++) - fprintf(stderr,"(%g, %g) ", ge->fxn[i], ge->fyn[i]); - fprintf(stderr,"\n"); - } else { - fprintf(stderr," C int "); - for(i=0; i<3; i++) - fprintf(stderr,"(%d, %d) ", ge->ixn[i], ge->iyn[i]); - fprintf(stderr,"\n"); - } - break; - default: - fprintf(stderr, " %c\n", ge->type); - break; - } - if(ge == end) - mark = ' '; - } -} - -/* - * Routine that converts all entries in the path from float to int - */ - -void -pathtoint( - GLYPH *g -) -{ - GENTRY *ge; - int x[3], y[3]; - int i; - - - if(ISDBG(TOINT)) - fprintf(stderr, "TOINT: glyph %s\n", g->name); - assertisfloat(g, "converting path to int\n"); - - fdelsmall(g, 1.0); /* get rid of sub-pixel contours */ - assertpath(g->entries, __FILE__, __LINE__, g->name); - - /* 1st pass, collect the directions of the curves: have - * to do that in advance, while everyting is float - */ - for(ge = g->entries; ge != 0; ge = ge->next) { - if( !(ge->flags & GEF_FLOAT) ) { - fprintf(stderr, "**! glyphs %s has int entry, found in conversion to int\n", - g->name); - exit(1); - } - if(ge->type == GE_CURVE) { - ge->dir = fgetcvdir(ge); - } - } - - /* now do the conversion */ - for(ge = g->entries; ge != 0; ge = ge->next) { - switch(ge->type) { - case GE_MOVE: - case GE_LINE: - if(ISDBG(TOINT)) - fprintf(stderr," %c float x=%g y=%g\n", ge->type, ge->fx3, ge->fy3); - x[0] = iround(ge->fx3); - y[0] = iround(ge->fy3); - for(i=0; i<3; i++) { /* put some valid values everywhere, for convenience */ - ge->ixn[i] = x[0]; - ge->iyn[i] = y[0]; - } - if(ISDBG(TOINT)) - fprintf(stderr," int x=%d y=%d\n", ge->ix3, ge->iy3); - break; - case GE_CURVE: - if(ISDBG(TOINT)) - fprintf(stderr," %c float ", ge->type); - - for(i=0; i<3; i++) { - if(ISDBG(TOINT)) - fprintf(stderr,"(%g, %g) ", ge->fxn[i], ge->fyn[i]); - x[i] = iround(ge->fxn[i]); - y[i] = iround(ge->fyn[i]); - } - - if(ISDBG(TOINT)) - fprintf(stderr,"\n int "); - - for(i=0; i<3; i++) { - ge->ixn[i] = x[i]; - ge->iyn[i] = y[i]; - if(ISDBG(TOINT)) - fprintf(stderr,"(%d, %d) ", ge->ixn[i], ge->iyn[i]); - } - ge->flags &= ~GEF_FLOAT; /* for fixcvdir */ - fixcvdir(ge, ge->dir); - - if(ISDBG(TOINT)) { - fprintf(stderr,"\n fixed "); - for(i=0; i<3; i++) - fprintf(stderr,"(%d, %d) ", ge->ixn[i], ge->iyn[i]); - fprintf(stderr,"\n"); - } - - break; - } - ge->flags &= ~GEF_FLOAT; - } - g->flags &= ~GF_FLOAT; -} - - -/* check whether we can fix up the curve to change its size by (dx,dy) */ -/* 0 means NO, 1 means YES */ - -/* for float: if scaling would be under 10% */ - -int -fcheckcv( - GENTRY * ge, - double dx, - double dy -) -{ - if( !(ge->flags & GEF_FLOAT) ) { - fprintf(stderr, "**! fcheckcv(0x%x) on int entry, ABORT\n", ge); - abort(); /* dump core */ - } - - if (ge->type != GE_CURVE) - return 0; - - if( fabs(ge->fx3 - ge->prev->fx3) < fabs(dx) * 10 ) - return 0; - - if( fabs(ge->fy3 - ge->prev->fy3) < fabs(dy) * 10 ) - return 0; - - return 1; -} - -/* for int: if won't create new zigzags at the ends */ - -int -icheckcv( - GENTRY * ge, - int dx, - int dy -) -{ - int xdep, ydep; - - if(ge->flags & GEF_FLOAT) { - fprintf(stderr, "**! icheckcv(0x%x) on floating entry, ABORT\n", ge); - abort(); /* dump core */ - } - - if (ge->type != GE_CURVE) - return 0; - - xdep = ge->ix3 - ge->prev->ix3; - ydep = ge->iy3 - ge->prev->iy3; - - if (ge->type == GE_CURVE - && (xdep * (xdep + dx)) > 0 - && (ydep * (ydep + dy)) > 0) { - return 1; - } else - return 0; -} - -/* float connect the ends of open contours */ - -void -fclosepaths( - GLYPH * g -) -{ - GENTRY *ge, *fge, *xge, *nge; - int i; - - assertisfloat(g, "fclosepaths float\n"); - - for (xge = g->entries; xge != 0; xge = xge->next) { - if( xge->type != GE_PATH ) - continue; - - ge = xge->prev; - if(ge == 0 || ge->type != GE_LINE && ge->type!= GE_CURVE) { - fprintf(stderr, "**! Glyph %s got empty path\n", - g->name); - exit(1); - } - - fge = ge->frwd; - if (fge->prev == 0 || fge->prev->type != GE_MOVE) { - fprintf(stderr, "**! Glyph %s got strange beginning of path\n", - g->name); - exit(1); - } - fge = fge->prev; - if (fge->fx3 != ge->fx3 || fge->fy3 != ge->fy3) { - /* we have to fix this open path */ - - WARNING_4 fprintf(stderr, "Glyph %s got path open by dx=%g dy=%g\n", - g->name, fge->fx3 - ge->fx3, fge->fy3 - ge->fy3); - - - /* add a new line */ - nge = newgentry(GEF_FLOAT); - (*nge) = (*ge); - nge->fx3 = fge->fx3; - nge->fy3 = fge->fy3; - nge->type = GE_LINE; - - addgeafter(ge, nge); - - if (fabs(ge->fx3 - fge->fx3) <= 2 && fabs(ge->fy3 - fge->fy3) <= 2) { - /* - * small change, try to get rid of the new entry - */ - - double df[2]; - - for(i=0; i<2; i++) { - df[i] = ge->fpoints[i][2] - fge->fpoints[i][2]; - df[i] = fclosegap(nge, nge, i, df[i], NULL); - } - - if(df[0] == 0. && df[1] == 0.) { - /* closed gap successfully, remove the added entry */ - freethisge(nge); - } - } - } - } -} - -void -smoothjoints( - GLYPH * g -) -{ - GENTRY *ge, *ne; - int dx1, dy1, dx2, dy2, k; - int dir; - - return; /* this stuff seems to create problems */ - - assertisint(g, "smoothjoints int"); - - if (g->entries == 0) /* nothing to do */ - return; - - for (ge = g->entries->next; ge != 0; ge = ge->next) { - ne = ge->frwd; - - /* - * although there should be no one-line path * and any path - * must end with CLOSEPATH, * nobody can say for sure - */ - - if (ge == ne || ne == 0) - continue; - - /* now handle various joints */ - - if (ge->type == GE_LINE && ne->type == GE_LINE) { - dx1 = ge->ix3 - ge->prev->ix3; - dy1 = ge->iy3 - ge->prev->iy3; - dx2 = ne->ix3 - ge->ix3; - dy2 = ne->iy3 - ge->iy3; - - /* check whether they have the same direction */ - /* and the same slope */ - /* then we can join them into one line */ - - if (dx1 * dx2 >= 0 && dy1 * dy2 >= 0 && dx1 * dy2 == dy1 * dx2) { - /* extend the previous line */ - ge->ix3 = ne->ix3; - ge->iy3 = ne->iy3; - - /* and get rid of the next line */ - freethisge(ne); - } - } else if (ge->type == GE_LINE && ne->type == GE_CURVE) { - fixcvends(ne); - - dx1 = ge->ix3 - ge->prev->ix3; - dy1 = ge->iy3 - ge->prev->iy3; - dx2 = ne->ix1 - ge->ix3; - dy2 = ne->iy1 - ge->iy3; - - /* if the line is nearly horizontal and we can fix it */ - if (dx1 != 0 && 5 * abs(dy1) / abs(dx1) == 0 - && icheckcv(ne, 0, -dy1) - && abs(dy1) <= 4) { - dir = igetcvdir(ne); - ge->iy3 -= dy1; - ne->iy1 -= dy1; - fixcvdir(ne, dir); - if (ge->next != ne) - ne->prev->iy3 -= dy1; - dy1 = 0; - } else if (dy1 != 0 && 5 * abs(dx1) / abs(dy1) == 0 - && icheckcv(ne, -dx1, 0) - && abs(dx1) <= 4) { - /* the same but vertical */ - dir = igetcvdir(ne); - ge->ix3 -= dx1; - ne->ix1 -= dx1; - fixcvdir(ne, dir); - if (ge->next != ne) - ne->prev->ix3 -= dx1; - dx1 = 0; - } - /* - * if line is horizontal and curve begins nearly - * horizontally - */ - if (dy1 == 0 && dx2 != 0 && 5 * abs(dy2) / abs(dx2) == 0) { - dir = igetcvdir(ne); - ne->iy1 -= dy2; - fixcvdir(ne, dir); - dy2 = 0; - } else if (dx1 == 0 && dy2 != 0 && 5 * abs(dx2) / abs(dy2) == 0) { - /* the same but vertical */ - dir = igetcvdir(ne); - ne->ix1 -= dx2; - fixcvdir(ne, dir); - dx2 = 0; - } - } else if (ge->type == GE_CURVE && ne->type == GE_LINE) { - fixcvends(ge); - - dx1 = ge->ix3 - ge->ix2; - dy1 = ge->iy3 - ge->iy2; - dx2 = ne->ix3 - ge->ix3; - dy2 = ne->iy3 - ge->iy3; - - /* if the line is nearly horizontal and we can fix it */ - if (dx2 != 0 && 5 * abs(dy2) / abs(dx2) == 0 - && icheckcv(ge, 0, dy2) - && abs(dy2) <= 4) { - dir = igetcvdir(ge); - ge->iy3 += dy2; - ge->iy2 += dy2; - fixcvdir(ge, dir); - if (ge->next != ne) - ne->prev->iy3 += dy2; - dy2 = 0; - } else if (dy2 != 0 && 5 * abs(dx2) / abs(dy2) == 0 - && icheckcv(ge, dx2, 0) - && abs(dx2) <= 4) { - /* the same but vertical */ - dir = igetcvdir(ge); - ge->ix3 += dx2; - ge->ix2 += dx2; - fixcvdir(ge, dir); - if (ge->next != ne) - ne->prev->ix3 += dx2; - dx2 = 0; - } - /* - * if line is horizontal and curve ends nearly - * horizontally - */ - if (dy2 == 0 && dx1 != 0 && 5 * abs(dy1) / abs(dx1) == 0) { - dir = igetcvdir(ge); - ge->iy2 += dy1; - fixcvdir(ge, dir); - dy1 = 0; - } else if (dx2 == 0 && dy1 != 0 && 5 * abs(dx1) / abs(dy1) == 0) { - /* the same but vertical */ - dir = igetcvdir(ge); - ge->ix2 += dx1; - fixcvdir(ge, dir); - dx1 = 0; - } - } else if (ge->type == GE_CURVE && ne->type == GE_CURVE) { - fixcvends(ge); - fixcvends(ne); - - dx1 = ge->ix3 - ge->ix2; - dy1 = ge->iy3 - ge->iy2; - dx2 = ne->ix1 - ge->ix3; - dy2 = ne->iy1 - ge->iy3; - - /* - * check if we have a rather smooth joint at extremal - * point - */ - /* left or right extremal point */ - if (abs(dx1) <= 4 && abs(dx2) <= 4 - && dy1 != 0 && 5 * abs(dx1) / abs(dy1) == 0 - && dy2 != 0 && 5 * abs(dx2) / abs(dy2) == 0 - && (ge->iy3 < ge->prev->iy3 && ne->iy3 < ge->iy3 - || ge->iy3 > ge->prev->iy3 && ne->iy3 > ge->iy3) - && (ge->ix3 - ge->prev->ix3) * (ne->ix3 - ge->ix3) < 0 - ) { - dir = igetcvdir(ge); - ge->ix2 += dx1; - dx1 = 0; - fixcvdir(ge, dir); - dir = igetcvdir(ne); - ne->ix1 -= dx2; - dx2 = 0; - fixcvdir(ne, dir); - } - /* top or down extremal point */ - else if (abs(dy1) <= 4 && abs(dy2) <= 4 - && dx1 != 0 && 5 * abs(dy1) / abs(dx1) == 0 - && dx2 != 0 && 5 * abs(dy2) / abs(dx2) == 0 - && (ge->ix3 < ge->prev->ix3 && ne->ix3 < ge->ix3 - || ge->ix3 > ge->prev->ix3 && ne->ix3 > ge->ix3) - && (ge->iy3 - ge->prev->iy3) * (ne->iy3 - ge->iy3) < 0 - ) { - dir = igetcvdir(ge); - ge->iy2 += dy1; - dy1 = 0; - fixcvdir(ge, dir); - dir = igetcvdir(ne); - ne->iy1 -= dy2; - dy2 = 0; - fixcvdir(ne, dir); - } - /* or may be we just have a smooth junction */ - else if (dx1 * dx2 >= 0 && dy1 * dy2 >= 0 - && 10 * abs(k = abs(dx1 * dy2) - abs(dy1 * dx2)) < (abs(dx1 * dy2) + abs(dy1 * dx2))) { - int tries[6][4]; - int results[6]; - int i, b; - - /* build array of changes we are going to try */ - /* uninitalized entries are 0 */ - if (k > 0) { - static int t1[6][4] = { - {0, 0, 0, 0}, - {-1, 0, 1, 0}, - {-1, 0, 0, 1}, - {0, -1, 1, 0}, - {0, -1, 0, 1}, - {-1, -1, 1, 1}}; - memcpy(tries, t1, sizeof tries); - } else { - static int t1[6][4] = { - {0, 0, 0, 0}, - {1, 0, -1, 0}, - {1, 0, 0, -1}, - {0, 1, -1, 0}, - {0, 1, 0, -1}, - {1, 1, -1, -1}}; - memcpy(tries, t1, sizeof tries); - } - - /* now try the changes */ - results[0] = abs(k); - for (i = 1; i < 6; i++) { - results[i] = abs((abs(dx1) + tries[i][0]) * (abs(dy2) + tries[i][1]) - - (abs(dy1) + tries[i][2]) * (abs(dx2) + tries[i][3])); - } - - /* and find the best try */ - k = abs(k); - b = 0; - for (i = 1; i < 6; i++) - if (results[i] < k) { - k = results[i]; - b = i; - } - /* and finally apply it */ - if (dx1 < 0) - tries[b][0] = -tries[b][0]; - if (dy2 < 0) - tries[b][1] = -tries[b][1]; - if (dy1 < 0) - tries[b][2] = -tries[b][2]; - if (dx2 < 0) - tries[b][3] = -tries[b][3]; - - dir = igetcvdir(ge); - ge->ix2 -= tries[b][0]; - ge->iy2 -= tries[b][2]; - fixcvdir(ge, dir); - dir = igetcvdir(ne); - ne->ix1 += tries[b][3]; - ne->iy1 += tries[b][1]; - fixcvdir(ne, dir); - } - } - } -} - -/* debugging: print out stems of a glyph */ -static void -debugstems( - char *name, - STEM * hstems, - int nhs, - STEM * vstems, - int nvs -) -{ - int i; - - fprintf(pfa_file, "%% %s\n", name); - fprintf(pfa_file, "%% %d horizontal stems:\n", nhs); - for (i = 0; i < nhs; i++) - fprintf(pfa_file, "%% %3d %d (%d...%d) %c %c%c%c%c\n", i, hstems[i].value, - hstems[i].from, hstems[i].to, - ((hstems[i].flags & ST_UP) ? 'U' : 'D'), - ((hstems[i].flags & ST_END) ? 'E' : '-'), - ((hstems[i].flags & ST_FLAT) ? 'F' : '-'), - ((hstems[i].flags & ST_ZONE) ? 'Z' : ' '), - ((hstems[i].flags & ST_TOPZONE) ? 'T' : ' ')); - fprintf(pfa_file, "%% %d vertical stems:\n", nvs); - for (i = 0; i < nvs; i++) - fprintf(pfa_file, "%% %3d %d (%d...%d) %c %c%c\n", i, vstems[i].value, - vstems[i].from, vstems[i].to, - ((vstems[i].flags & ST_UP) ? 'U' : 'D'), - ((vstems[i].flags & ST_END) ? 'E' : '-'), - ((vstems[i].flags & ST_FLAT) ? 'F' : '-')); -} - -/* add pseudo-stems for the limits of the Blue zones to the stem array */ -static int -addbluestems( - STEM *s, - int n -) -{ - int i; - - for(i=0; i<nblues && i<2; i+=2) { /* baseline */ - s[n].value=bluevalues[i]; - s[n].flags=ST_UP|ST_ZONE; - /* don't overlap with anything */ - s[n].origin=s[n].from=s[n].to= -10000+i; - n++; - s[n].value=bluevalues[i+1]; - s[n].flags=ST_ZONE; - /* don't overlap with anything */ - s[n].origin=s[n].from=s[n].to= -10000+i+1; - n++; - } - for(i=2; i<nblues; i+=2) { /* top zones */ - s[n].value=bluevalues[i]; - s[n].flags=ST_UP|ST_ZONE|ST_TOPZONE; - /* don't overlap with anything */ - s[n].origin=s[n].from=s[n].to= -10000+i; - n++; - s[n].value=bluevalues[i+1]; - s[n].flags=ST_ZONE|ST_TOPZONE; - /* don't overlap with anything */ - s[n].origin=s[n].from=s[n].to= -10000+i+1; - n++; - } - for(i=0; i<notherb; i+=2) { /* bottom zones */ - s[n].value=otherblues[i]; - s[n].flags=ST_UP|ST_ZONE; - /* don't overlap with anything */ - s[n].origin=s[n].from=s[n].to= -10000+i+nblues; - n++; - s[n].value=otherblues[i+1]; - s[n].flags=ST_ZONE; - /* don't overlap with anything */ - s[n].origin=s[n].from=s[n].to= -10000+i+1+nblues; - n++; - } - return n; -} - -/* sort stems in array */ -static void -sortstems( - STEM * s, - int n -) -{ - int i, j; - STEM x; - - - /* a simple sorting */ - /* hm, the ordering criteria are not quite simple :-) - * if the values are tied - * ST_UP always goes under not ST_UP - * ST_ZONE goes on the most outer side - * ST_END goes towards inner side after ST_ZONE - * ST_FLAT goes on the inner side - */ - - for (i = 0; i < n; i++) - for (j = i + 1; j < n; j++) { - if(s[i].value < s[j].value) - continue; - if(s[i].value == s[j].value) { - if( (s[i].flags & ST_UP) < (s[j].flags & ST_UP) ) - continue; - if( (s[i].flags & ST_UP) == (s[j].flags & ST_UP) ) { - if( s[i].flags & ST_UP ) { - if( - (s[i].flags & (ST_ZONE|ST_FLAT|ST_END) ^ ST_FLAT) - > - (s[j].flags & (ST_ZONE|ST_FLAT|ST_END) ^ ST_FLAT) - ) - continue; - } else { - if( - (s[i].flags & (ST_ZONE|ST_FLAT|ST_END) ^ ST_FLAT) - < - (s[j].flags & (ST_ZONE|ST_FLAT|ST_END) ^ ST_FLAT) - ) - continue; - } - } - } - x = s[j]; - s[j] = s[i]; - s[i] = x; - } -} - -/* check whether two stem borders overlap */ - -static int -stemoverlap( - STEM * s1, - STEM * s2 -) -{ - int result; - - if (s1->from <= s2->from && s1->to >= s2->from - || s2->from <= s1->from && s2->to >= s1->from) - result = 1; - else - result = 0; - - if (ISDBG(STEMOVERLAP)) - fprintf(pfa_file, "%% overlap %d(%d..%d)x%d(%d..%d)=%d\n", - s1->value, s1->from, s1->to, s2->value, s2->from, s2->to, result); - return result; -} - -/* - * check if the stem [border] is in an appropriate blue zone - * (currently not used) - */ - -static int -steminblue( - STEM *s -) -{ - int i, val; - - val=s->value; - if(s->flags & ST_UP) { - /* painted size up, look at lower zones */ - if(nblues>=2 && val>=bluevalues[0] && val<=bluevalues[1] ) - return 1; - for(i=0; i<notherb; i++) { - if( val>=otherblues[i] && val<=otherblues[i+1] ) - return 1; - } - } else { - /* painted side down, look at upper zones */ - for(i=2; i<nblues; i++) { - if( val>=bluevalues[i] && val<=bluevalues[i+1] ) - return 1; - } - } - - return 0; -} - -/* mark the outermost stem [borders] in the blue zones */ - -static void -markbluestems( - STEM *s, - int nold -) -{ - int i, j, a, b, c; - /* - * traverse the list of Blue Values, mark the lowest upper - * stem in each bottom zone and the topmost lower stem in - * each top zone with ST_BLUE - */ - - /* top zones */ - for(i=2; i<nblues; i+=2) { - a=bluevalues[i]; b=bluevalues[i+1]; - if(ISDBG(BLUESTEMS)) - fprintf(pfa_file, "%% looking at blue zone %d...%d\n", a, b); - for(j=nold-1; j>=0; j--) { - if( s[j].flags & (ST_ZONE|ST_UP|ST_END) ) - continue; - c=s[j].value; - if(c<a) /* too low */ - break; - if(c<=b) { /* found the topmost stem border */ - /* mark all the stems with the same value */ - if(ISDBG(BLUESTEMS)) - fprintf(pfa_file, "%% found D BLUE at %d\n", s[j].value); - /* include ST_END values */ - while( s[j+1].value==c && (s[j+1].flags & ST_ZONE)==0 ) - j++; - s[j].flags |= ST_BLUE; - for(j--; j>=0 && s[j].value==c - && (s[j].flags & (ST_UP|ST_ZONE))==0 ; j--) - s[j].flags |= ST_BLUE; - break; - } - } - } - /* baseline */ - if(nblues>=2) { - a=bluevalues[0]; b=bluevalues[1]; - for(j=0; j<nold; j++) { - if( (s[j].flags & (ST_ZONE|ST_UP|ST_END))!=ST_UP ) - continue; - c=s[j].value; - if(c>b) /* too high */ - break; - if(c>=a) { /* found the lowest stem border */ - /* mark all the stems with the same value */ - if(ISDBG(BLUESTEMS)) - fprintf(pfa_file, "%% found U BLUE at %d\n", s[j].value); - /* include ST_END values */ - while( s[j-1].value==c && (s[j-1].flags & ST_ZONE)==0 ) - j--; - s[j].flags |= ST_BLUE; - for(j++; j<nold && s[j].value==c - && (s[j].flags & (ST_UP|ST_ZONE))==ST_UP ; j++) - s[j].flags |= ST_BLUE; - break; - } - } - } - /* bottom zones: the logic is the same as for baseline */ - for(i=0; i<notherb; i+=2) { - a=otherblues[i]; b=otherblues[i+1]; - for(j=0; j<nold; j++) { - if( (s[j].flags & (ST_UP|ST_ZONE|ST_END))!=ST_UP ) - continue; - c=s[j].value; - if(c>b) /* too high */ - break; - if(c>=a) { /* found the lowest stem border */ - /* mark all the stems with the same value */ - if(ISDBG(BLUESTEMS)) - fprintf(pfa_file, "%% found U BLUE at %d\n", s[j].value); - /* include ST_END values */ - while( s[j-1].value==c && (s[j-1].flags & ST_ZONE)==0 ) - j--; - s[j].flags |= ST_BLUE; - for(j++; j<nold && s[j].value==c - && (s[j].flags & (ST_UP|ST_ZONE))==ST_UP ; j++) - s[j].flags |= ST_BLUE; - break; - } - } - } -} - -/* Eliminate invalid stems, join equivalent lines and remove nested stems - * to build the main (non-substituted) set of stems. - * XXX add consideration of the italic angle - */ -static int -joinmainstems( - STEM * s, - int nold, - int useblues /* do we use the blue values ? */ -) -{ -#define MAX_STACK 1000 - STEM stack[MAX_STACK]; - int nstack = 0; - int sbottom = 0; - int nnew; - int i, j, k; - int a, b, c, w1, w2, w3; - int fw, fd; - /* - * priority of the last found stem: - * 0 - nothing found yet - * 1 - has ST_END in it (one or more) - * 2 - has no ST_END and no ST_FLAT, can override only one stem - * with priority 1 - * 3 - has no ST_END and at least one ST_FLAT, can override one - * stem with priority 2 or any number of stems with priority 1 - * 4 (handled separately) - has ST_BLUE, can override anything - */ - int readystem = 0; - int pri; - int nlps = 0; /* number of non-committed - * lowest-priority stems */ - - - for (i = 0, nnew = 0; i < nold; i++) { - if (s[i].flags & (ST_UP|ST_ZONE)) { - if(s[i].flags & ST_BLUE) { - /* we just HAVE to use this value */ - if (readystem) - nnew += 2; - readystem=0; - - /* remember the list of Blue zone stems with the same value */ - for(a=i, i++; i<nold && s[a].value==s[i].value - && (s[i].flags & ST_BLUE); i++) - {} - b=i; /* our range is a <= i < b */ - c= -1; /* index of our best guess up to now */ - pri=0; - /* try to find a match, don't cross blue zones */ - for(; i<nold && (s[i].flags & ST_BLUE)==0; i++) { - if(s[i].flags & ST_UP) { - if(s[i].flags & ST_TOPZONE) - break; - else - continue; - } - for(j=a; j<b; j++) { - if(!stemoverlap(&s[j], &s[i]) ) - continue; - /* consider priorities */ - if( ( (s[j].flags|s[i].flags) & (ST_FLAT|ST_END) )==ST_FLAT ) { - c=i; - goto bluematch; - } - if( ((s[j].flags|s[i].flags) & ST_END)==0 ) { - if(pri < 2) { - c=i; pri=2; - } - } else { - if(pri == 0) { - c=i; pri=1; - } - } - } - } - bluematch: - /* clean up the stack */ - nstack=sbottom=0; - readystem=0; - /* add this stem */ - s[nnew++]=s[a]; - if(c<0) { /* make one-dot-wide stem */ - if(nnew>=b) { /* have no free space */ - for(j=nold; j>=b; j--) /* make free space */ - s[j]=s[j-1]; - b++; - nold++; - } - s[nnew]=s[a]; - s[nnew].flags &= ~(ST_UP|ST_BLUE); - nnew++; - i=b-1; - } else { - s[nnew++]=s[c]; - i=c; /* skip up to this point */ - } - if (ISDBG(MAINSTEMS)) - fprintf(pfa_file, "%% +stem %d...%d U BLUE\n", - s[nnew-2].value, s[nnew-1].value); - } else { - if (nstack >= MAX_STACK) { - WARNING_1 fprintf(stderr, "Warning: **** converter's stem stack overflow ****\n"); - nstack = 0; - } - stack[nstack++] = s[i]; - } - } else if(s[i].flags & ST_BLUE) { - /* again, we just HAVE to use this value */ - if (readystem) - nnew += 2; - readystem=0; - - /* remember the list of Blue zone stems with the same value */ - for(a=i, i++; i<nold && s[a].value==s[i].value - && (s[i].flags & ST_BLUE); i++) - {} - b=i; /* our range is a <= i < b */ - c= -1; /* index of our best guess up to now */ - pri=0; - /* try to find a match */ - for (i = nstack - 1; i >= 0; i--) { - if( (stack[i].flags & ST_UP)==0 ) { - if( (stack[i].flags & (ST_ZONE|ST_TOPZONE))==ST_ZONE ) - break; - else - continue; - } - for(j=a; j<b; j++) { - if(!stemoverlap(&s[j], &stack[i]) ) - continue; - /* consider priorities */ - if( ( (s[j].flags|stack[i].flags) & (ST_FLAT|ST_END) )==ST_FLAT ) { - c=i; - goto bluedownmatch; - } - if( ((s[j].flags|stack[i].flags) & ST_END)==0 ) { - if(pri < 2) { - c=i; pri=2; - } - } else { - if(pri == 0) { - c=i; pri=1; - } - } - } - } - bluedownmatch: - /* if found no match make a one-dot-wide stem */ - if(c<0) { - c=0; - stack[0]=s[b-1]; - stack[0].flags |= ST_UP; - stack[0].flags &= ~ST_BLUE; - } - /* remove all the stems conflicting with this one */ - readystem=0; - for(j=nnew-2; j>=0; j-=2) { - if (ISDBG(MAINSTEMS)) - fprintf(pfa_file, "%% ?stem %d...%d -- %d\n", - s[j].value, s[j+1].value, stack[c].value); - if(s[j+1].value < stack[c].value) /* no conflict */ - break; - if(s[j].flags & ST_BLUE) { - /* oops, we don't want to spoil other blue zones */ - stack[c].value=s[j+1].value+1; - break; - } - if( (s[j].flags|s[j+1].flags) & ST_END ) { - if (ISDBG(MAINSTEMS)) - fprintf(pfa_file, "%% -stem %d...%d p=1\n", - s[j].value, s[j+1].value); - continue; /* pri==1, silently discard it */ - } - /* we want to discard no nore than 2 stems of pri>=2 */ - if( ++readystem > 2 ) { - /* change our stem to not conflict */ - stack[c].value=s[j+1].value+1; - break; - } else { - if (ISDBG(MAINSTEMS)) - fprintf(pfa_file, "%% -stem %d...%d p>=2\n", - s[j].value, s[j+1].value); - continue; - } - } - nnew=j+2; - /* add this stem */ - if(nnew>=b-1) { /* have no free space */ - for(j=nold; j>=b-1; j--) /* make free space */ - s[j]=s[j-1]; - b++; - nold++; - } - s[nnew++]=stack[c]; - s[nnew++]=s[b-1]; - /* clean up the stack */ - nstack=sbottom=0; - readystem=0; - /* set the next position to search */ - i=b-1; - if (ISDBG(MAINSTEMS)) - fprintf(pfa_file, "%% +stem %d...%d D BLUE\n", - s[nnew-2].value, s[nnew-1].value); - } else if (nstack > 0) { - - /* - * check whether our stem overlaps with anything in - * stack - */ - for (j = nstack - 1; j >= sbottom; j--) { - if (s[i].value <= stack[j].value) - break; - if (stack[j].flags & ST_ZONE) - continue; - - if ((s[i].flags & ST_END) - || (stack[j].flags & ST_END)) - pri = 1; - else if ((s[i].flags & ST_FLAT) - || (stack[j].flags & ST_FLAT)) - pri = 3; - else - pri = 2; - - if (pri < readystem && s[nnew + 1].value >= stack[j].value - || !stemoverlap(&stack[j], &s[i])) - continue; - - if (readystem > 1 && s[nnew + 1].value < stack[j].value) { - nnew += 2; - readystem = 0; - nlps = 0; - } - /* - * width of the previous stem (if it's - * present) - */ - w1 = s[nnew + 1].value - s[nnew].value; - - /* width of this stem */ - w2 = s[i].value - stack[j].value; - - if (readystem == 0) { - /* nothing yet, just add a new stem */ - s[nnew] = stack[j]; - s[nnew + 1] = s[i]; - readystem = pri; - if (pri == 1) - nlps = 1; - else if (pri == 2) - sbottom = j; - else { - sbottom = j + 1; - while (sbottom < nstack - && stack[sbottom].value <= stack[j].value) - sbottom++; - } - if (ISDBG(MAINSTEMS)) - fprintf(pfa_file, "%% +stem %d...%d p=%d n=%d\n", - stack[j].value, s[i].value, pri, nlps); - } else if (pri == 1) { - if (stack[j].value > s[nnew + 1].value) { - /* - * doesn't overlap with the - * previous one - */ - nnew += 2; - nlps++; - s[nnew] = stack[j]; - s[nnew + 1] = s[i]; - if (ISDBG(MAINSTEMS)) - fprintf(pfa_file, "%% +stem %d...%d p=%d n=%d\n", - stack[j].value, s[i].value, pri, nlps); - } else if (w2 < w1) { - /* is narrower */ - s[nnew] = stack[j]; - s[nnew + 1] = s[i]; - if (ISDBG(MAINSTEMS)) - fprintf(pfa_file, "%% /stem %d...%d p=%d n=%d %d->%d\n", - stack[j].value, s[i].value, pri, nlps, w1, w2); - } - } else if (pri == 2) { - if (readystem == 2) { - /* choose the narrower stem */ - if (w1 > w2) { - s[nnew] = stack[j]; - s[nnew + 1] = s[i]; - sbottom = j; - if (ISDBG(MAINSTEMS)) - fprintf(pfa_file, "%% /stem %d...%d p=%d n=%d\n", - stack[j].value, s[i].value, pri, nlps); - } - /* else readystem==1 */ - } else if (stack[j].value > s[nnew + 1].value) { - /* - * value doesn't overlap with - * the previous one - */ - nnew += 2; - nlps = 0; - s[nnew] = stack[j]; - s[nnew + 1] = s[i]; - sbottom = j; - readystem = pri; - if (ISDBG(MAINSTEMS)) - fprintf(pfa_file, "%% +stem %d...%d p=%d n=%d\n", - stack[j].value, s[i].value, pri, nlps); - } else if (nlps == 1 - || stack[j].value > s[nnew - 1].value) { - /* - * we can replace the top - * stem - */ - nlps = 0; - s[nnew] = stack[j]; - s[nnew + 1] = s[i]; - readystem = pri; - sbottom = j; - if (ISDBG(MAINSTEMS)) - fprintf(pfa_file, "%% /stem %d...%d p=%d n=%d\n", - stack[j].value, s[i].value, pri, nlps); - } - } else if (readystem == 3) { /* that means also - * pri==3 */ - /* choose the narrower stem */ - if (w1 > w2) { - s[nnew] = stack[j]; - s[nnew + 1] = s[i]; - sbottom = j + 1; - while (sbottom < nstack - && stack[sbottom].value <= stack[j].value) - sbottom++; - if (ISDBG(MAINSTEMS)) - fprintf(pfa_file, "%% /stem %d...%d p=%d n=%d\n", - stack[j].value, s[i].value, pri, nlps); - } - } else if (pri == 3) { - /* - * we can replace as many stems as - * neccessary - */ - nnew += 2; - while (nnew > 0 && s[nnew - 1].value >= stack[j].value) { - nnew -= 2; - if (ISDBG(MAINSTEMS)) - fprintf(pfa_file, "%% -stem %d..%d\n", - s[nnew].value, s[nnew + 1].value); - } - nlps = 0; - s[nnew] = stack[j]; - s[nnew + 1] = s[i]; - readystem = pri; - sbottom = j + 1; - while (sbottom < nstack - && stack[sbottom].value <= stack[j].value) - sbottom++; - if (ISDBG(MAINSTEMS)) - fprintf(pfa_file, "%% +stem %d...%d p=%d n=%d\n", - stack[j].value, s[i].value, pri, nlps); - } - } - } - } - if (readystem) - nnew += 2; - - /* change the 1-pixel-wide stems to 20-pixel-wide stems if possible - * the constant 20 is recommended in the Type1 manual - */ - if(useblues) { - for(i=0; i<nnew; i+=2) { - if(s[i].value != s[i+1].value) - continue; - if( ((s[i].flags ^ s[i+1].flags) & ST_BLUE)==0 ) - continue; - if( s[i].flags & ST_BLUE ) { - if(nnew>i+2 && s[i+2].value<s[i].value+22) - s[i+1].value=s[i+2].value-2; /* compensate for fuzziness */ - else - s[i+1].value+=20; - } else { - if(i>0 && s[i-1].value>s[i].value-22) - s[i].value=s[i-1].value+2; /* compensate for fuzziness */ - else - s[i].value-=20; - } - } - } - /* make sure that no stem it stretched between - * a top zone and a bottom zone - */ - if(useblues) { - for(i=0; i<nnew; i+=2) { - a=10000; /* lowest border of top zone crosing the stem */ - b= -10000; /* highest border of bottom zone crossing the stem */ - - for(j=2; j<nblues; j++) { - c=bluevalues[j]; - if( c>=s[i].value && c<=s[i+1].value && c<a ) - a=c; - } - if(nblues>=2) { - c=bluevalues[1]; - if( c>=s[i].value && c<=s[i+1].value && c>b ) - b=c; - } - for(j=1; j<notherb; j++) { - c=otherblues[j]; - if( c>=s[i].value && c<=s[i+1].value && c>b ) - b=c; - } - if( a!=10000 && b!= -10000 ) { /* it is stretched */ - /* split the stem into 2 ghost stems */ - for(j=nnew+1; j>i+1; j--) /* make free space */ - s[j]=s[j-2]; - nnew+=2; - - if(s[i].value+22 >= a) - s[i+1].value=a-2; /* leave space for fuzziness */ - else - s[i+1].value=s[i].value+20; - - if(s[i+3].value-22 <= b) - s[i+2].value=b+2; /* leave space for fuzziness */ - else - s[i+2].value=s[i+3].value-20; - - i+=2; - } - } - } - /* look for triple stems */ - for (i = 0; i < nnew; i += 2) { - if (nnew - i >= 6) { - a = s[i].value + s[i + 1].value; - b = s[i + 2].value + s[i + 3].value; - c = s[i + 4].value + s[i + 5].value; - - w1 = s[i + 1].value - s[i].value; - w2 = s[i + 3].value - s[i + 2].value; - w3 = s[i + 5].value - s[i + 4].value; - - fw = w3 - w1; /* fuzz in width */ - fd = ((c - b) - (b - a)); /* fuzz in distance - * (doubled) */ - - /* we are able to handle some fuzz */ - /* - * it doesn't hurt if the declared stem is a bit - * narrower than actual unless it's an edge in - * a blue zone - */ - if (abs(abs(fd) - abs(fw)) * 5 < w2 - && abs(fw) * 20 < (w1 + w3)) { /* width dirrerence <10% */ - - if(useblues) { /* check that we don't disturb any blue stems */ - j=c; k=a; - if (fw > 0) { - if (fd > 0) { - if( s[i+5].flags & ST_BLUE ) - continue; - j -= fw; - } else { - if( s[i+4].flags & ST_BLUE ) - continue; - j += fw; - } - } else if(fw < 0) { - if (fd > 0) { - if( s[i+1].flags & ST_BLUE ) - continue; - k -= fw; - } else { - if( s[i].flags & ST_BLUE ) - continue; - k += fw; - } - } - pri = ((j - b) - (b - k)); - - if (pri > 0) { - if( s[i+2].flags & ST_BLUE ) - continue; - } else if(pri < 0) { - if( s[i+3].flags & ST_BLUE ) - continue; - } - } - - /* - * first fix up the width of 1st and 3rd - * stems - */ - if (fw > 0) { - if (fd > 0) { - s[i + 5].value -= fw; - c -= fw; - } else { - s[i + 4].value += fw; - c += fw; - } - } else { - if (fd > 0) { - s[i + 1].value -= fw; - a -= fw; - } else { - s[i].value += fw; - a += fw; - } - } - fd = ((c - b) - (b - a)); - - if (fd > 0) { - s[i + 2].value += abs(fd) / 2; - } else { - s[i + 3].value -= abs(fd) / 2; - } - - s[i].flags |= ST_3; - i += 4; - } - } - } - - return (nnew & ~1); /* number of lines must be always even */ -} - -/* - * these macros and function allow to set the base stem, - * check that it's not empty and subtract another stem - * from the base stem (possibly dividing it into multiple parts) - */ - -/* pairs for pieces of the base stem */ -static short xbstem[MAX_STEMS*2]; -/* index of the last point */ -static int xblast= -1; - -#define setbasestem(from, to) \ - (xbstem[0]=from, xbstem[1]=to, xblast=1) -#define isbaseempty() (xblast<=0) - -/* returns 1 if was overlapping, 0 otherwise */ -static int -subfrombase( - int from, - int to -) -{ - int a, b; - int i, j; - - if(isbaseempty()) - return 0; - - /* handle the simple case simply */ - if(from > xbstem[xblast] || to < xbstem[0]) - return 0; - - /* the binary search may be more efficient */ - /* but for now the linear search is OK */ - for(b=1; from > xbstem[b]; b+=2) {} /* result: from <= xbstem[b] */ - for(a=xblast-1; to < xbstem[a]; a-=2) {} /* result: to >= xbstem[a] */ - - /* now the interesting examples are: - * (it was hard for me to understand, so I looked at the examples) - * 1 - * a|-----| |-----|b |-----| |-----| - * f|-----|t - * 2 - * a|-----|b |-----| |-----| |-----| - * f|--|t - * 3 - * a|-----|b |-----| |-----| |-----| - * f|-----|t - * 4 - * |-----|b a|-----| |-----| |-----| - * f|------------|t - * 5 - * |-----| |-----|b |-----| a|-----| - * f|-----------------------------|t - * 6 - * |-----|b |-----| |-----| a|-----| - * f|--------------------------------------------------|t - * 7 - * |-----|b |-----| a|-----| |-----| - * f|--------------------------|t - */ - - if(a < b-1) /* hits a gap - example 1 */ - return 0; - - /* now the subtraction itself */ - - if(a==b-1 && from > xbstem[a] && to < xbstem[b]) { - /* overlaps with only one subrange and splits it - example 2 */ - j=xblast; i=(xblast+=2); - while(j>=b) - xbstem[i--]=xbstem[j--]; - xbstem[b]=from-1; - xbstem[b+1]=to+1; - return 1; - /* becomes - * 2a - * a|b || |-----| |-----| |-----| - * f|--|t - */ - } - - if(xbstem[b-1] < from) { - /* cuts the back of this subrange - examples 3, 4, 7 */ - xbstem[b] = from-1; - b+=2; - /* becomes - * 3a - * a|----| |-----|b |-----| |-----| - * f|-----|t - * 4a - * |---| a|-----|b |-----| |-----| - * f|------------|t - * 7a - * |---| |-----|b a|-----| |-----| - * f|--------------------------|t - */ - } - - if(xbstem[a+1] > to) { - /* cuts the front of this subrange - examples 4a, 5, 7a */ - xbstem[a] = to+1; - a-=2; - /* becomes - * 4b - * a|---| |---|b |-----| |-----| - * f|------------|t - * 5b - * |-----| |-----|b a|-----| || - * f|-----------------------------|t - * 7b - * |---| a|-----|b || |-----| - * f|--------------------------|t - */ - } - - if(a < b-1) /* now after modification it hits a gap - examples 3a, 4b */ - return 1; /* because we have removed something */ - - /* now remove the subranges completely covered by the new stem */ - /* examples 5b, 6, 7b */ - i=b-1; j=a+2; - /* positioned as: - * 5b i j - * |-----| |-----|b a|-----| || - * f|-----------------------------|t - * 6 i xblast j - * |-----|b |-----| |-----| a|-----| - * f|--------------------------------------------------|t - * 7b i j - * |---| a|-----|b || |-----| - * f|--------------------------|t - */ - while(j <= xblast) - xbstem[i++]=xbstem[j++]; - xblast=i-1; - return 1; -} - -/* for debugging */ -static void -printbasestem(void) -{ - int i; - - printf("( "); - for(i=0; i<xblast; i+=2) - printf("%d-%d ", xbstem[i], xbstem[i+1]); - printf(") %d\n", xblast); -} - -/* - * Join the stem borders to build the sets of substituted stems - * XXX add consideration of the italic angle - */ -static void -joinsubstems( - STEM * s, - short *pairs, - int nold, - int useblues /* do we use the blue values ? */ -) -{ - int i, j, x; - static unsigned char mx[MAX_STEMS][MAX_STEMS]; - - /* we do the substituted groups of stems first - * and it looks like it's going to be REALLY SLOW - * AND PAINFUL but let's bother about it later - */ - - /* for the substituted stems we don't bother about [hv]stem3 - - * anyway the X11R6 rasterizer does not bother about hstem3 - * at all and is able to handle only one global vstem3 - * per glyph - */ - - /* clean the used part of matrix */ - for(i=0; i<nold; i++) - for(j=0; j<nold; j++) - mx[i][j]=0; - - /* build the matrix of stem pairs */ - for(i=0; i<nold; i++) { - if( s[i].flags & ST_ZONE ) - continue; - if(s[i].flags & ST_BLUE) - mx[i][i]=1; /* allow to pair with itself if no better pair */ - if(s[i].flags & ST_UP) { /* the down-stems are already matched */ - setbasestem(s[i].from, s[i].to); - for(j=i+1; j<nold; j++) { - if(s[i].value==s[j].value - || s[j].flags & ST_ZONE ) { - continue; - } - x=subfrombase(s[j].from, s[j].to); - - if(s[j].flags & ST_UP) /* match only up+down pairs */ - continue; - - mx[i][j]=mx[j][i]=x; - - if(isbaseempty()) /* nothing else to do */ - break; - } - } - } - - if(ISDBG(SUBSTEMS)) { - fprintf(pfa_file, "%% "); - for(j=0; j<nold; j++) - putc( j%10==0 ? '0'+(j/10)%10 : ' ', pfa_file); - fprintf(pfa_file, "\n%% "); - for(j=0; j<nold; j++) - putc('0'+j%10, pfa_file); - putc('\n', pfa_file); - for(i=0; i<nold; i++) { - fprintf(pfa_file, "%% %3d ",i); - for(j=0; j<nold; j++) - putc( mx[i][j] ? 'X' : '.', pfa_file); - putc('\n', pfa_file); - } - } - - /* now use the matrix to find the best pair for each stem */ - for(i=0; i<nold; i++) { - int pri, lastpri, v, f; - - x= -1; /* best pair: none */ - lastpri=0; - - v=s[i].value; - f=s[i].flags; - - if(f & ST_ZONE) { - pairs[i]= -1; - continue; - } - - if(f & ST_UP) { - for(j=i+1; j<nold; j++) { - if(mx[i][j]==0) - continue; - - if( (f | s[j].flags) & ST_END ) - pri=1; - else if( (f | s[j].flags) & ST_FLAT ) - pri=3; - else - pri=2; - - if(lastpri==0 - || pri > lastpri - && ( lastpri==1 || s[j].value-v<20 || (s[x].value-v)*2 >= s[j].value-v ) ) { - lastpri=pri; - x=j; - } - } - } else { - for(j=i-1; j>=0; j--) { - if(mx[i][j]==0) - continue; - - if( (f | s[j].flags) & ST_END ) - pri=1; - else if( (f | s[j].flags) & ST_FLAT ) - pri=3; - else - pri=2; - - if(lastpri==0 - || pri > lastpri - && ( lastpri==1 || v-s[j].value<20 || (v-s[x].value)*2 >= v-s[j].value ) ) { - lastpri=pri; - x=j; - } - } - } - if(x== -1 && mx[i][i]) - pairs[i]=i; /* a special case */ - else - pairs[i]=x; - } - - if(ISDBG(SUBSTEMS)) { - for(i=0; i<nold; i++) { - j=pairs[i]; - if(j>0) - fprintf(pfa_file, "%% %d...%d (%d x %d)\n", s[i].value, s[j].value, i, j); - } - } -} - -/* - * Make all the stems originating at the same value get the - * same width. Without this the rasterizer may move the dots - * randomly up or down by one pixel, and that looks bad. - * The prioritisation is the same as in findstemat(). - */ -static void -uniformstems( - STEM * s, - short *pairs, - int ns -) -{ - int i, j, from, to, val, dir; - int pri, prevpri[2], wd, prevwd[2], prevbest[2]; - - for(from=0; from<ns; from=to) { - prevpri[0] = prevpri[1] = 0; - prevwd[0] = prevwd[1] = 0; - prevbest[0] = prevbest[1] = -1; - val = s[from].value; - - for(to = from; to<ns && s[to].value == val; to++) { - dir = ((s[to].flags & ST_UP)!=0); - - i=pairs[to]; /* the other side of this stem */ - if(i<0 || i==to) - continue; /* oops, no other side */ - wd=abs(s[i].value-val); - if(wd == 0) - continue; - pri=1; - if( (s[to].flags | s[i].flags) & ST_END ) - pri=0; - if( prevbest[dir] == -1 || pri > prevpri[dir] || wd<prevwd[dir] ) { - prevbest[dir]=i; - prevpri[dir]=pri; - prevwd[dir]=wd; - } - } - - for(i=from; i<to; i++) { - dir = ((s[i].flags & ST_UP)!=0); - if(prevbest[dir] >= 0) { - if(ISDBG(SUBSTEMS)) { - fprintf(stderr, "at %d (%s %d) pair %d->%d(%d)\n", i, - (dir ? "UP":"DOWN"), s[i].value, pairs[i], prevbest[dir], - s[prevbest[dir]].value); - } - pairs[i] = prevbest[dir]; - } - } - } -} - -/* - * Find the best stem in the array at the specified (value, origin), - * related to the entry ge. - * Returns its index in the array sp, -1 means "none". - * prevbest is the result for the other end of the line, we must - * find something better than it or leave it as it is. - */ -static int -findstemat( - int value, - int origin, - GENTRY *ge, - STEM *sp, - short *pairs, - int ns, - int prevbest /* -1 means "none" */ -) -{ - int i, min, max; - int v, si; - int pri, prevpri; /* priority, 0 = has ST_END, 1 = no ST_END */ - int wd, prevwd; /* stem width */ - - si= -1; /* nothing yet */ - - /* stems are ordered by value, binary search */ - min=0; max=ns; /* min <= i < max */ - while( min < max ) { - i=(min+max)/2; - v=sp[i].value; - if(v<value) - min=i+1; - else if(v>value) - max=i; - else { - si=i; /* temporary value */ - break; - } - } - - if( si < 0 ) /* found nothing this time */ - return prevbest; - - /* find the priority of the prevbest */ - /* we expect that prevbest has a pair */ - if(prevbest>=0) { - i=pairs[prevbest]; - prevpri=1; - if( (sp[prevbest].flags | sp[i].flags) & ST_END ) - prevpri=0; - prevwd=abs(sp[i].value-value); - } - - /* stems are not ordered by origin, so now do the linear search */ - - while( si>0 && sp[si-1].value==value ) /* find the first one */ - si--; - - for(; si<ns && sp[si].value==value; si++) { - if(sp[si].origin != origin) - continue; - if(sp[si].ge != ge) { - if(ISDBG(SUBSTEMS)) { - fprintf(stderr, - "dbg: possible self-intersection at v=%d o=%d exp_ge=0x%x ge=0x%x\n", - value, origin, ge, sp[si].ge); - } - continue; - } - i=pairs[si]; /* the other side of this stem */ - if(i<0) - continue; /* oops, no other side */ - pri=1; - if( (sp[si].flags | sp[i].flags) & ST_END ) - pri=0; - wd=abs(sp[i].value-value); - if( prevbest == -1 || pri >prevpri - || pri==prevpri && prevwd==0 || wd!=0 && wd<prevwd ) { - prevbest=si; - prevpri=pri; - prevwd=wd; - continue; - } - } - - return prevbest; -} - -/* add the substems for one glyph entry - * (called from groupsubstems()) - * returns 0 if all OK, 1 if too many groups - */ - -static int gssentry_lastgrp=0; /* reset to 0 for each new glyph */ - -static int -gssentry( /* crazy number of parameters */ - GENTRY *ge, - STEM *hs, /* horizontal stems, sorted by value */ - short *hpairs, - int nhs, - STEM *vs, /* vertical stems, sorted by value */ - short *vpairs, - int nvs, - STEMBOUNDS *s, - short *egp, - int *nextvsi, - int *nexthsi /* -2 means "check by yourself" */ -) { - enum { - SI_VP, /* vertical primary */ - SI_HP, /* horizontal primary */ - SI_SIZE /* size of the array */ - }; - int si[SI_SIZE]; /* indexes of relevant stems */ - - /* the bounds of the existing relevant stems */ - STEMBOUNDS r[ sizeof(si) / sizeof(si[0]) * 2 ]; - char rexpand; /* by how much we need to expand the group */ - int nr; /* and the number of them */ - - /* yet more temporary storage */ - short lb, hb, isvert; - int conflict, grp; - int i, j, x, y; - - - /* for each line or curve we try to find a horizontal and - * a vertical stem corresponding to its first point - * (corresponding to the last point of the previous - * glyph entry), because the directions of the lines - * will be eventually reversed and it will then become the last - * point. And the T1 rasterizer applies the hints to - * the last point. - * - */ - - /* start with the common part, the first point */ - x=ge->prev->ix3; - y=ge->prev->iy3; - - if(*nextvsi == -2) - si[SI_VP]=findstemat(x, y, ge, vs, vpairs, nvs, -1); - else { - si[SI_VP]= *nextvsi; *nextvsi= -2; - } - if(*nexthsi == -2) - si[SI_HP]=findstemat(y, x, ge, hs, hpairs, nhs, -1); - else { - si[SI_HP]= *nexthsi; *nexthsi= -2; - } - - /* - * For the horizontal lines we make sure that both - * ends of the line have the same horizontal stem, - * and the same thing for vertical lines and stems. - * In both cases we enforce the stem for the next entry. - * Otherwise unpleasant effects may arise. - */ - - if(ge->type==GE_LINE) { - if(ge->ix3==x) { /* vertical line */ - *nextvsi=si[SI_VP]=findstemat(x, ge->iy3, ge->frwd, vs, vpairs, nvs, si[SI_VP]); - } else if(ge->iy3==y) { /* horizontal line */ - *nexthsi=si[SI_HP]=findstemat(y, ge->ix3, ge->frwd, hs, hpairs, nhs, si[SI_HP]); - } - } - - if(si[SI_VP]+si[SI_HP] == -2) /* no stems, leave it alone */ - return 0; - - /* build the array of relevant bounds */ - nr=0; - for(i=0; i< sizeof(si) / sizeof(si[0]); i++) { - STEM *sp; - short *pairs; - int step; - int f; - int nzones, firstzone, binzone, einzone; - int btype, etype; - - if(si[i] < 0) - continue; - - if(i<SI_HP) { - r[nr].isvert=1; sp=vs; pairs=vpairs; - } else { - r[nr].isvert=0; sp=hs; pairs=hpairs; - } - - r[nr].low=sp[ si[i] ].value; - r[nr].high=sp[ pairs[ si[i] ] ].value; - - if(r[nr].low > r[nr].high) { - j=r[nr].low; r[nr].low=r[nr].high; r[nr].high=j; - step= -1; - } else { - step=1; - } - - /* handle the interaction with Blue Zones */ - - if(i>=SI_HP) { /* only for horizontal stems */ - if(si[i]==pairs[si[i]]) { - /* special case, the outermost stem in the - * Blue Zone without a pair, simulate it to 20-pixel - */ - if(sp[ si[i] ].flags & ST_UP) { - r[nr].high+=20; - for(j=si[i]+1; j<nhs; j++) - if( (sp[j].flags & (ST_ZONE|ST_TOPZONE)) - == (ST_ZONE|ST_TOPZONE) ) { - if(r[nr].high > sp[j].value-2) - r[nr].high=sp[j].value-2; - break; - } - } else { - r[nr].low-=20; - for(j=si[i]-1; j>=0; j--) - if( (sp[j].flags & (ST_ZONE|ST_TOPZONE)) - == (ST_ZONE) ) { - if(r[nr].low < sp[j].value+2) - r[nr].low=sp[j].value+2; - break; - } - } - } - - /* check that the stem borders don't end up in - * different Blue Zones */ - f=sp[ si[i] ].flags; - nzones=0; einzone=binzone=0; - for(j=si[i]; j!=pairs[ si[i] ]; j+=step) { - if( (sp[j].flags & ST_ZONE)==0 ) - continue; - /* if see a zone border going in the same direction */ - if( ((f ^ sp[j].flags) & ST_UP)==0 ) { - if( ++nzones == 1 ) { - firstzone=sp[j].value; /* remember the first one */ - etype=sp[j].flags & ST_TOPZONE; - } - einzone=1; - - } else { /* the opposite direction */ - if(nzones==0) { /* beginning is in a blue zone */ - binzone=1; - btype=sp[j].flags & ST_TOPZONE; - } - einzone=0; - } - } - - /* beginning and end are in Blue Zones of different types */ - if( binzone && einzone && (btype ^ etype)!=0 ) { - if( sp[si[i]].flags & ST_UP ) { - if(firstzone > r[nr].low+22) - r[nr].high=r[nr].low+20; - else - r[nr].high=firstzone-2; - } else { - if(firstzone < r[nr].high-22) - r[nr].low=r[nr].high-20; - else - r[nr].low=firstzone+2; - } - } - } - - if(ISDBG(SUBSTEMS)) - fprintf(pfa_file, "%% at(%d,%d)[%d,%d] %d..%d %c (%d x %d)\n", x, y, i, nr, - r[nr].low, r[nr].high, r[nr].isvert ? 'v' : 'h', - si[i], pairs[si[i]]); - - nr++; - } - - /* now try to find a group */ - conflict=0; /* no conflicts found yet */ - for(j=0; j<nr; j++) - r[j].already=0; - - /* check if it fits into the last group */ - grp = gssentry_lastgrp; - i = (grp==0)? 0 : egp[grp-1]; - for(; i<egp[grp]; i++) { - lb=s[i].low; hb=s[i].high; isvert=s[i].isvert; - for(j=0; j<nr; j++) - if( r[j].isvert==isvert /* intersects */ - && r[j].low <= hb && r[j].high >= lb ) { - if( r[j].low == lb && r[j].high == hb ) /* coincides */ - r[j].already=1; - else - conflict=1; - } - - if(conflict) - break; - } - - if(conflict) { /* nope, check all the groups */ - for(j=0; j<nr; j++) - r[j].already=0; - - for(i=0, grp=0; i<egp[NSTEMGRP-1]; i++) { - if(i == egp[grp]) { /* checked all stems in a group */ - if(conflict) { - grp++; conflict=0; /* check the next group */ - for(j=0; j<nr; j++) - r[j].already=0; - } else - break; /* insert into this group */ - } - - lb=s[i].low; hb=s[i].high; isvert=s[i].isvert; - for(j=0; j<nr; j++) - if( r[j].isvert==isvert /* intersects */ - && r[j].low <= hb && r[j].high >= lb ) { - if( r[j].low == lb && r[j].high == hb ) /* coincides */ - r[j].already=1; - else - conflict=1; - } - - if(conflict) - i=egp[grp]-1; /* fast forward to the next group */ - } - } - - /* do we have any empty group ? */ - if(conflict && grp < NSTEMGRP-1) { - grp++; conflict=0; - for(j=0; j<nr; j++) - r[j].already=0; - } - - if(conflict) { /* oops, can't find any group to fit */ - return 1; - } - - /* OK, add stems to this group */ - - rexpand = nr; - for(j=0; j<nr; j++) - rexpand -= r[j].already; - - if(rexpand > 0) { - for(i=egp[NSTEMGRP-1]-1; i>=egp[grp]; i--) - s[i+rexpand]=s[i]; - for(i=0; i<nr; i++) - if(!r[i].already) - s[egp[grp]++]=r[i]; - for(i=grp+1; i<NSTEMGRP; i++) - egp[i]+=rexpand; - } - - ge->stemid = gssentry_lastgrp = grp; - return 0; -} - -/* - * Create the groups of substituted stems from the list. - * Each group will be represented by a subroutine in the Subs - * array. - */ - -static void -groupsubstems( - GLYPH *g, - STEM *hs, /* horizontal stems, sorted by value */ - short *hpairs, - int nhs, - STEM *vs, /* vertical stems, sorted by value */ - short *vpairs, - int nvs -) -{ - GENTRY *ge; - int i, j; - - /* temporary storage */ - STEMBOUNDS s[MAX_STEMS*2]; - /* indexes in there, pointing past the end each stem group */ - short egp[NSTEMGRP]; - - int nextvsi, nexthsi; /* -2 means "check by yourself" */ - - for(i=0; i<NSTEMGRP; i++) - egp[i]=0; - - nextvsi=nexthsi= -2; /* processed no horiz/vert line */ - - gssentry_lastgrp = 0; /* reset the last group for new glyph */ - - for (ge = g->entries; ge != 0; ge = ge->next) { - if(ge->type!=GE_LINE && ge->type!=GE_CURVE) { - nextvsi=nexthsi= -2; /* next path is independent */ - continue; - } - - if( gssentry(ge, hs, hpairs, nhs, vs, vpairs, nvs, s, egp, &nextvsi, &nexthsi) ) { - WARNING_2 fprintf(stderr, "*** glyph %s requires over %d hint subroutines, ignored them\n", - g->name, NSTEMGRP); - /* it's better to have no substituted hints at all than have only part */ - for (ge = g->entries; ge != 0; ge = ge->next) - ge->stemid= -1; - g->nsg=0; /* just to be safe, already is 0 by initialization */ - return; - } - - /* - * handle the last vert/horiz line of the path specially, - * correct the hint for the first entry of the path - */ - if(ge->frwd != ge->next && (nextvsi != -2 || nexthsi != -2) ) { - if( gssentry(ge->frwd, hs, hpairs, nhs, vs, vpairs, nvs, s, egp, &nextvsi, &nexthsi) ) { - WARNING_2 fprintf(stderr, "*** glyph %s requires over %d hint subroutines, ignored them\n", - g->name, NSTEMGRP); - /* it's better to have no substituted hints at all than have only part */ - for (ge = g->entries; ge != 0; ge = ge->next) - ge->stemid= -1; - g->nsg=0; /* just to be safe, already is 0 by initialization */ - return; - } - } - - } - - /* find the index of the first empty group - same as the number of groups */ - if(egp[0]>0) { - for(i=1; i<NSTEMGRP && egp[i]!=egp[i-1]; i++) - {} - g->nsg=i; - } else - g->nsg=0; - - if(ISDBG(SUBSTEMS)) { - fprintf(pfa_file, "%% %d substem groups (%d %d %d)\n", g->nsg, - g->nsg>1 ? egp[g->nsg-2] : -1, - g->nsg>0 ? egp[g->nsg-1] : -1, - g->nsg<NSTEMGRP ? egp[g->nsg] : -1 ); - j=0; - for(i=0; i<g->nsg; i++) { - fprintf(pfa_file, "%% grp %3d: ", i); - for(; j<egp[i]; j++) { - fprintf(pfa_file, " %4d...%-4d %c ", s[j].low, s[j].high, - s[j].isvert ? 'v' : 'h'); - } - fprintf(pfa_file, "\n"); - } - } - - if(g->nsg==1) { /* it would be the same as the main stems */ - /* so erase it */ - for (ge = g->entries; ge != 0; ge = ge->next) - ge->stemid= -1; - g->nsg=0; - } - - if(g->nsg>0) { - if( (g->nsbs=malloc(g->nsg * sizeof (egp[0]))) == 0 ) { - fprintf(stderr, "**** not enough memory for substituted hints ****\n"); - exit(255); - } - memmove(g->nsbs, egp, g->nsg * sizeof(short)); - if( (g->sbstems=malloc(egp[g->nsg-1] * sizeof (s[0]))) == 0 ) { - fprintf(stderr, "**** not enough memory for substituted hints ****\n"); - exit(255); - } - memmove(g->sbstems, s, egp[g->nsg-1] * sizeof(s[0])); - } -} - -void -buildstems( - GLYPH * g -) -{ - STEM hs[MAX_STEMS], vs[MAX_STEMS]; /* temporary working - * storage */ - short hs_pairs[MAX_STEMS], vs_pairs[MAX_STEMS]; /* best pairs for these stems */ - STEM *sp; - GENTRY *ge, *nge, *pge; - int nx, ny; - int ovalue; - int totals, grp, lastgrp; - - assertisint(g, "buildstems int"); - - g->nhs = g->nvs = 0; - memset(hs, 0, sizeof hs); - memset(vs, 0, sizeof vs); - - /* first search the whole character for possible stem points */ - - for (ge = g->entries; ge != 0; ge = ge->next) { - if (ge->type == GE_CURVE) { - - /* - * SURPRISE! - * We consider the stems bound by the - * H/V ends of the curves as flat ones. - * - * But we don't include the point on the - * other end into the range. - */ - - /* first check the beginning of curve */ - /* if it is horizontal, add a hstem */ - if (ge->iy1 == ge->prev->iy3) { - hs[g->nhs].value = ge->iy1; - - if (ge->ix1 < ge->prev->ix3) - hs[g->nhs].flags = ST_FLAT | ST_UP; - else - hs[g->nhs].flags = ST_FLAT; - - hs[g->nhs].origin = ge->prev->ix3; - hs[g->nhs].ge = ge; - - if (ge->ix1 < ge->prev->ix3) { - hs[g->nhs].from = ge->ix1+1; - hs[g->nhs].to = ge->prev->ix3; - if(hs[g->nhs].from > hs[g->nhs].to) - hs[g->nhs].from--; - } else { - hs[g->nhs].from = ge->prev->ix3; - hs[g->nhs].to = ge->ix1-1; - if(hs[g->nhs].from > hs[g->nhs].to) - hs[g->nhs].to++; - } - if (ge->ix1 != ge->prev->ix3) - g->nhs++; - } - /* if it is vertical, add a vstem */ - else if (ge->ix1 == ge->prev->ix3) { - vs[g->nvs].value = ge->ix1; - - if (ge->iy1 > ge->prev->iy3) - vs[g->nvs].flags = ST_FLAT | ST_UP; - else - vs[g->nvs].flags = ST_FLAT; - - vs[g->nvs].origin = ge->prev->iy3; - vs[g->nvs].ge = ge; - - if (ge->iy1 < ge->prev->iy3) { - vs[g->nvs].from = ge->iy1+1; - vs[g->nvs].to = ge->prev->iy3; - if(vs[g->nvs].from > vs[g->nvs].to) - vs[g->nvs].from--; - } else { - vs[g->nvs].from = ge->prev->iy3; - vs[g->nvs].to = ge->iy1-1; - if(vs[g->nvs].from > vs[g->nvs].to) - vs[g->nvs].to++; - } - - if (ge->iy1 != ge->prev->iy3) - g->nvs++; - } - /* then check the end of curve */ - /* if it is horizontal, add a hstem */ - if (ge->iy3 == ge->iy2) { - hs[g->nhs].value = ge->iy3; - - if (ge->ix3 < ge->ix2) - hs[g->nhs].flags = ST_FLAT | ST_UP; - else - hs[g->nhs].flags = ST_FLAT; - - hs[g->nhs].origin = ge->ix3; - hs[g->nhs].ge = ge->frwd; - - if (ge->ix3 < ge->ix2) { - hs[g->nhs].from = ge->ix3; - hs[g->nhs].to = ge->ix2-1; - if( hs[g->nhs].from > hs[g->nhs].to ) - hs[g->nhs].to++; - } else { - hs[g->nhs].from = ge->ix2+1; - hs[g->nhs].to = ge->ix3; - if( hs[g->nhs].from > hs[g->nhs].to ) - hs[g->nhs].from--; - } - - if (ge->ix3 != ge->ix2) - g->nhs++; - } - /* if it is vertical, add a vstem */ - else if (ge->ix3 == ge->ix2) { - vs[g->nvs].value = ge->ix3; - - if (ge->iy3 > ge->iy2) - vs[g->nvs].flags = ST_FLAT | ST_UP; - else - vs[g->nvs].flags = ST_FLAT; - - vs[g->nvs].origin = ge->iy3; - vs[g->nvs].ge = ge->frwd; - - if (ge->iy3 < ge->iy2) { - vs[g->nvs].from = ge->iy3; - vs[g->nvs].to = ge->iy2-1; - if( vs[g->nvs].from > vs[g->nvs].to ) - vs[g->nvs].to++; - } else { - vs[g->nvs].from = ge->iy2+1; - vs[g->nvs].to = ge->iy3; - if( vs[g->nvs].from > vs[g->nvs].to ) - vs[g->nvs].from--; - } - - if (ge->iy3 != ge->iy2) - g->nvs++; - } else { - - /* - * check the end of curve for a not smooth - * local extremum - */ - nge = ge->frwd; - - if (nge == 0) - continue; - else if (nge->type == GE_LINE) { - nx = nge->ix3; - ny = nge->iy3; - } else if (nge->type == GE_CURVE) { - nx = nge->ix1; - ny = nge->iy1; - } else - continue; - - /* check for vertical extremums */ - if (ge->iy3 > ge->iy2 && ge->iy3 > ny - || ge->iy3 < ge->iy2 && ge->iy3 < ny) { - hs[g->nhs].value = ge->iy3; - hs[g->nhs].from - = hs[g->nhs].to - = hs[g->nhs].origin = ge->ix3; - hs[g->nhs].ge = ge->frwd; - - if (ge->ix3 < ge->ix2 - || nx < ge->ix3) - hs[g->nhs].flags = ST_UP; - else - hs[g->nhs].flags = 0; - - if (ge->ix3 != ge->ix2 || nx != ge->ix3) - g->nhs++; - } - /* - * the same point may be both horizontal and - * vertical extremum - */ - /* check for horizontal extremums */ - if (ge->ix3 > ge->ix2 && ge->ix3 > nx - || ge->ix3 < ge->ix2 && ge->ix3 < nx) { - vs[g->nvs].value = ge->ix3; - vs[g->nvs].from - = vs[g->nvs].to - = vs[g->nvs].origin = ge->iy3; - vs[g->nvs].ge = ge->frwd; - - if (ge->iy3 > ge->iy2 - || ny > ge->iy3) - vs[g->nvs].flags = ST_UP; - else - vs[g->nvs].flags = 0; - - if (ge->iy3 != ge->iy2 || ny != ge->iy3) - g->nvs++; - } - } - - } else if (ge->type == GE_LINE) { - nge = ge->frwd; - - /* if it is horizontal, add a hstem */ - /* and the ends as vstems if they brace the line */ - if (ge->iy3 == ge->prev->iy3 - && ge->ix3 != ge->prev->ix3) { - hs[g->nhs].value = ge->iy3; - if (ge->ix3 < ge->prev->ix3) { - hs[g->nhs].flags = ST_FLAT | ST_UP; - hs[g->nhs].from = ge->ix3; - hs[g->nhs].to = ge->prev->ix3; - } else { - hs[g->nhs].flags = ST_FLAT; - hs[g->nhs].from = ge->prev->ix3; - hs[g->nhs].to = ge->ix3; - } - hs[g->nhs].origin = ge->ix3; - hs[g->nhs].ge = ge->frwd; - - pge = ge->bkwd; - - /* add beginning as vstem */ - vs[g->nvs].value = pge->ix3; - vs[g->nvs].origin - = vs[g->nvs].from - = vs[g->nvs].to = pge->iy3; - vs[g->nvs].ge = ge; - - if(pge->type==GE_CURVE) - ovalue=pge->iy2; - else - ovalue=pge->prev->iy3; - - if (pge->iy3 > ovalue) - vs[g->nvs].flags = ST_UP | ST_END; - else if (pge->iy3 < ovalue) - vs[g->nvs].flags = ST_END; - else - vs[g->nvs].flags = 0; - - if( vs[g->nvs].flags != 0 ) - g->nvs++; - - /* add end as vstem */ - vs[g->nvs].value = ge->ix3; - vs[g->nvs].origin - = vs[g->nvs].from - = vs[g->nvs].to = ge->iy3; - vs[g->nvs].ge = ge->frwd; - - if(nge->type==GE_CURVE) - ovalue=nge->iy1; - else - ovalue=nge->iy3; - - if (ovalue > ge->iy3) - vs[g->nvs].flags = ST_UP | ST_END; - else if (ovalue < ge->iy3) - vs[g->nvs].flags = ST_END; - else - vs[g->nvs].flags = 0; - - if( vs[g->nvs].flags != 0 ) - g->nvs++; - - g->nhs++; - } - /* if it is vertical, add a vstem */ - /* and the ends as hstems if they brace the line */ - else if (ge->ix3 == ge->prev->ix3 - && ge->iy3 != ge->prev->iy3) { - vs[g->nvs].value = ge->ix3; - if (ge->iy3 > ge->prev->iy3) { - vs[g->nvs].flags = ST_FLAT | ST_UP; - vs[g->nvs].from = ge->prev->iy3; - vs[g->nvs].to = ge->iy3; - } else { - vs[g->nvs].flags = ST_FLAT; - vs[g->nvs].from = ge->iy3; - vs[g->nvs].to = ge->prev->iy3; - } - vs[g->nvs].origin = ge->iy3; - vs[g->nvs].ge = ge->frwd; - - pge = ge->bkwd; - - /* add beginning as hstem */ - hs[g->nhs].value = pge->iy3; - hs[g->nhs].origin - = hs[g->nhs].from - = hs[g->nhs].to = pge->ix3; - hs[g->nhs].ge = ge; - - if(pge->type==GE_CURVE) - ovalue=pge->ix2; - else - ovalue=pge->prev->ix3; - - if (pge->ix3 < ovalue) - hs[g->nhs].flags = ST_UP | ST_END; - else if (pge->ix3 > ovalue) - hs[g->nhs].flags = ST_END; - else - hs[g->nhs].flags = 0; - - if( hs[g->nhs].flags != 0 ) - g->nhs++; - - /* add end as hstem */ - hs[g->nhs].value = ge->iy3; - hs[g->nhs].origin - = hs[g->nhs].from - = hs[g->nhs].to = ge->ix3; - hs[g->nhs].ge = ge->frwd; - - if(nge->type==GE_CURVE) - ovalue=nge->ix1; - else - ovalue=nge->ix3; - - if (ovalue < ge->ix3) - hs[g->nhs].flags = ST_UP | ST_END; - else if (ovalue > ge->ix3) - hs[g->nhs].flags = ST_END; - else - hs[g->nhs].flags = 0; - - if( hs[g->nhs].flags != 0 ) - g->nhs++; - - g->nvs++; - } - /* - * check the end of line for a not smooth local - * extremum - */ - nge = ge->frwd; - - if (nge == 0) - continue; - else if (nge->type == GE_LINE) { - nx = nge->ix3; - ny = nge->iy3; - } else if (nge->type == GE_CURVE) { - nx = nge->ix1; - ny = nge->iy1; - } else - continue; - - /* check for vertical extremums */ - if (ge->iy3 > ge->prev->iy3 && ge->iy3 > ny - || ge->iy3 < ge->prev->iy3 && ge->iy3 < ny) { - hs[g->nhs].value = ge->iy3; - hs[g->nhs].from - = hs[g->nhs].to - = hs[g->nhs].origin = ge->ix3; - hs[g->nhs].ge = ge->frwd; - - if (ge->ix3 < ge->prev->ix3 - || nx < ge->ix3) - hs[g->nhs].flags = ST_UP; - else - hs[g->nhs].flags = 0; - - if (ge->ix3 != ge->prev->ix3 || nx != ge->ix3) - g->nhs++; - } - /* - * the same point may be both horizontal and vertical - * extremum - */ - /* check for horizontal extremums */ - if (ge->ix3 > ge->prev->ix3 && ge->ix3 > nx - || ge->ix3 < ge->prev->ix3 && ge->ix3 < nx) { - vs[g->nvs].value = ge->ix3; - vs[g->nvs].from - = vs[g->nvs].to - = vs[g->nvs].origin = ge->iy3; - vs[g->nvs].ge = ge->frwd; - - if (ge->iy3 > ge->prev->iy3 - || ny > ge->iy3) - vs[g->nvs].flags = ST_UP; - else - vs[g->nvs].flags = 0; - - if (ge->iy3 != ge->prev->iy3 || ny != ge->iy3) - g->nvs++; - } - } - } - - g->nhs=addbluestems(hs, g->nhs); - sortstems(hs, g->nhs); - sortstems(vs, g->nvs); - - if (ISDBG(STEMS)) - debugstems(g->name, hs, g->nhs, vs, g->nvs); - - /* find the stems interacting with the Blue Zones */ - markbluestems(hs, g->nhs); - - if(subhints) { - if (ISDBG(SUBSTEMS)) - fprintf(pfa_file, "%% %s: joining subst horizontal stems\n", g->name); - joinsubstems(hs, hs_pairs, g->nhs, 1); - uniformstems(hs, hs_pairs, g->nhs); - - if (ISDBG(SUBSTEMS)) - fprintf(pfa_file, "%% %s: joining subst vertical stems\n", g->name); - joinsubstems(vs, vs_pairs, g->nvs, 0); - - groupsubstems(g, hs, hs_pairs, g->nhs, vs, vs_pairs, g->nvs); - } - - if (ISDBG(MAINSTEMS)) - fprintf(pfa_file, "%% %s: joining main horizontal stems\n", g->name); - g->nhs = joinmainstems(hs, g->nhs, 1); - if (ISDBG(MAINSTEMS)) - fprintf(pfa_file, "%% %s: joining main vertical stems\n", g->name); - g->nvs = joinmainstems(vs, g->nvs, 0); - - if (ISDBG(MAINSTEMS)) - debugstems(g->name, hs, g->nhs, vs, g->nvs); - - if(g->nhs > 0) { - if ((sp = malloc(sizeof(STEM) * g->nhs)) == 0) { - fprintf(stderr, "**** not enough memory for hints ****\n"); - exit(255); - } - g->hstems = sp; - memcpy(sp, hs, sizeof(STEM) * g->nhs); - } else - g->hstems = 0; - - if(g->nvs > 0) { - if ((sp = malloc(sizeof(STEM) * g->nvs)) == 0) { - fprintf(stderr, "**** not enough memory for hints ****\n"); - exit(255); - } - g->vstems = sp; - memcpy(sp, vs, sizeof(STEM) * g->nvs); - } else - g->vstems = 0; - - /* now check that the stems won't overflow the interpreter's stem stack: - * some interpreters (like X11) push the stems on each change into - * stack and pop them only after the whole glyphs is completed. - */ - - totals = (g->nhs+g->nvs) / 2; /* we count whole stems, not halves */ - lastgrp = -1; - - for (ge = g->entries; ge != 0; ge = ge->next) { - grp=ge->stemid; - if(grp >= 0 && grp != lastgrp) { - if(grp==0) - totals += g->nsbs[0]; - else - totals += g->nsbs[grp] - g->nsbs[grp-1]; - - lastgrp = grp; - } - } - - /* be on the safe side, check for >= , not > */ - if(totals >= max_stemdepth) { /* oops, too deep */ - WARNING_2 { - fprintf(stderr, "Warning: glyph %s needs hint stack depth %d\n", g->name, totals); - fprintf(stderr, " (limit %d): removed the substituted hints from it\n", max_stemdepth); - } - if(g->nsg > 0) { - for (ge = g->entries; ge != 0; ge = ge->next) - ge->stemid = -1; - free(g->sbstems); g->sbstems = 0; - free(g->nsbs); g->nsbs = 0; - g->nsg = 0; - } - } - - /* now check if there are too many main stems */ - totals = (g->nhs+g->nvs) / 2; /* we count whole stems, not halves */ - if(totals >= max_stemdepth) { - /* even worse, too much of non-substituted stems */ - WARNING_2 { - fprintf(stderr, "Warning: glyph %s has %d main hints\n", g->name, totals); - fprintf(stderr, " (limit %d): removed the hints from it\n", max_stemdepth); - } - if(g->vstems) { - free(g->vstems); g->vstems = 0; g->nvs = 0; - } - if(g->hstems) { - free(g->hstems); g->hstems = 0; g->nhs = 0; - } - } -} - -/* convert weird curves that are close to lines into lines. -*/ - -void -fstraighten( - GLYPH * g -) -{ - GENTRY *ge, *pge, *nge, *ige; - double df; - int dir; - double iln, oln; - int svdir, i, o; - - for (ige = g->entries; ige != 0; ige = ige->next) { - if (ige->type != GE_CURVE) - continue; - - ge = ige; - pge = ge->bkwd; - nge = ge->frwd; - - df = 0.; - - /* look for vertical then horizontal */ - for(i=0; i<2; i++) { - o = !i; /* other axis */ - - iln = fabs(ge->fpoints[i][2] - pge->fpoints[i][2]); - oln = fabs(ge->fpoints[o][2] - pge->fpoints[o][2]); - /* - * if current curve is almost a vertical line, and it - * doesn't begin or end horizontally (and the prev/next - * line doesn't join smoothly ?) - */ - if( oln < 1. - || ge->fpoints[o][2] == ge->fpoints[o][1] - || ge->fpoints[o][0] == pge->fpoints[o][2] - || iln > 2. - || iln > 1. && iln/oln > 0.1 ) - continue; - - - if(ISDBG(STRAIGHTEN)) - fprintf(stderr,"** straighten almost %s\n", (i? "horizontal":"vertical")); - - df = ge->fpoints[i][2] - pge->fpoints[i][2]; - dir = fsign(ge->fpoints[o][2] - pge->fpoints[o][2]); - ge->type = GE_LINE; - - /* - * suck in all the sequence of such almost lines - * going in the same direction but not deviating - * too far from vertical - */ - iln = fabs(nge->fpoints[i][2] - ge->fpoints[i][2]); - oln = nge->fpoints[o][2] - ge->fpoints[o][2]; - - while (fabs(df) <= 5 && nge->type == GE_CURVE - && dir == fsign(oln) /* that also gives oln != 0 */ - && iln <= 2. - && ( iln <= 1. || iln/fabs(oln) <= 0.1 ) ) { - ge->fx3 = nge->fx3; - ge->fy3 = nge->fy3; - - if(ISDBG(STRAIGHTEN)) - fprintf(stderr,"** straighten collapsing %s\n", (i? "horizontal":"vertical")); - freethisge(nge); - fixendpath(ge); - pge = ge->bkwd; - nge = ge->frwd; - - df = ge->fpoints[i][2] - pge->fpoints[i][2]; - - iln = fabs(nge->fpoints[i][2] - ge->fpoints[i][2]); - oln = nge->fpoints[o][2] - ge->fpoints[o][2]; - } - - /* now check what do we have as previous/next line */ - - if(ge != pge) { - if( pge->type == GE_LINE && pge->fpoints[i][2] == pge->prev->fpoints[i][2] - && fabs(pge->fpoints[o][2] != pge->prev->fpoints[o][2]) ) { - if(ISDBG(STRAIGHTEN)) fprintf(stderr,"** straighten join with previous 0x%x 0x%x\n", pge, ge); - /* join the previous line with current */ - pge->fx3 = ge->fx3; - pge->fy3 = ge->fy3; - - ige = freethisge(ge)->prev; /* keep the iterator valid */ - ge = pge; - fixendpath(ge); - pge = ge->bkwd; - } - } - - if(ge != nge) { - if (nge->type == GE_LINE && nge->fpoints[i][2] == ge->fpoints[i][2] - && fabs(nge->fpoints[o][2] != ge->fpoints[o][2]) ) { - if(ISDBG(STRAIGHTEN)) fprintf(stderr,"** straighten join with next 0x%x 0x%x\n", ge, nge); - /* join the next line with current */ - ge->fx3 = nge->fx3; - ge->fy3 = nge->fy3; - - freethisge(nge); - fixendpath(ge); - pge = ge->bkwd; - nge = ge->frwd; - - } - } - - if(ge != pge) { - /* try to align the lines if neccessary */ - if(df != 0.) - fclosegap(ge, ge, i, df, NULL); - } else { - /* contour consists of only one line, get rid of it */ - ige = freethisge(ge); /* keep the iterator valid */ - if(ige == 0) /* this was the last contour */ - return; - ige = ige->prev; - } - - break; /* don't bother looking at the other axis */ - } - } -} - -/* solve a square equation, - * returns the number of solutions found, the solutions - * are stored in res which should point to array of two doubles. - * min and max limit the area for solutions - */ - -static int -fsqequation( - double a, - double b, - double c, - double *res, - double min, - double max -) -{ - double D; - int n; - - if(ISDBG(SQEQ)) fprintf(stderr, "sqeq(%g,%g,%g) [%g;%g]\n", a, b, c, min, max); - - if(fabs(a) < 0.000001) { /* if a linear equation */ - n=0; - if(fabs(b) < 0.000001) /* not an equation at all */ - return 0; - res[0] = -c/b; - if(ISDBG(SQEQ)) fprintf(stderr, "sqeq: linear t=%g\n", res[0]); - if(res[0] >= min && res[0] <= max) - n++; - return n; - } - - D = b*b - 4.0*a*c; - if(ISDBG(SQEQ)) fprintf(stderr, "sqeq: D=%g\n", D); - if(D<0) - return 0; - - D = sqrt(D); - - n=0; - res[0] = (-b+D) / (2*a); - if(ISDBG(SQEQ)) fprintf(stderr, "sqeq: t1=%g\n", res[0]); - if(res[0] >= min && res[0] <= max) - n++; - - res[n] = (-b-D) / (2*a); - if(ISDBG(SQEQ)) fprintf(stderr, "sqeq: t2=%g\n", res[n]); - if(res[n] >= min && res[n] <= max) - n++; - - /* return 2nd solution only if it's different enough */ - if(n==2 && fabs(res[0]-res[1])<0.000001) - n=1; - - return n; -} - -/* check that the curves don't cross quadrant boundary */ -/* (float) */ - -/* - Here we make sure that the curve does not continue past - horizontal or vertical extremums. The horizontal points are - explained, vertical points are by analogy. - - The horizontal points are where the derivative - dy/dx is equal to 0. But the Bezier curves are defined by - parametric formulas - x=fx(t) - y=fy(t) - so finding this derivative is complicated. - Also even if we find some point (x,y) splitting at this point - is far not obvious. Fortunately we can use dy/dt = 0 instead, - this gets to a rather simple square equation and splitting - at a known value of t is simple. - - The formulas are: - - y = A*(1-t)^3 + 3*B*(1-t)^2*t + 3*C*(1-t)*t^2 + D*t^3 - y = (-A+3*B-3*C+D)*t^3 + (3*A-6*B+3*C)*t^2 + (-3*A+3*B)*t + A - dy/dt = 3*(-A+3*B-3*C+D)*t^2 + 2*(3*A-6*B+3*C)*t + (-3*A+3*B) - */ - -void -ffixquadrants( - GLYPH *g -) -{ - GENTRY *ge, *nge; - int i, j, np, oldnp; - double sp[5]; /* split points, last one empty */ - char dir[5]; /* for debugging, direction by which split happened */ - double a, b, *pts; /* points of a curve */ - - for (ge = g->entries; ge != 0; ge = ge->next) { - if (ge->type != GE_CURVE) - continue; - - doagain: - np = 0; /* no split points yet */ - if(ISDBG(QUAD)) { - fprintf(stderr, "%s: trying 0x%x (%g %g) (%g %g) (%g %g) (%g %g)\n ", g->name, - ge, ge->prev->fx3, ge->prev->fy3, ge->fx1, ge->fy1, ge->fx2, ge->fy2, - ge->fx3, ge->fy3); - } - for(i=0; i<2; i++) { /* first for x then for y */ - /* find the cooridnates of control points */ - a = ge->prev->fpoints[i][2]; - pts = &ge->fpoints[i][0]; - - oldnp = np; - np += fsqequation( - 3.0*(-a + 3.0*pts[0] - 3.0*pts[1] + pts[2]), - 6.0*(a - 2.0*pts[0] + pts[1]), - 3.0*(-a + pts[0]), - &sp[np], - 0.0, 1.0); /* XXX range is [0;1] */ - - if(np == oldnp) - continue; - - if(ISDBG(QUAD)) - fprintf(stderr, "%s: 0x%x: %d pts(%c): ", - g->name, ge, np-oldnp, i? 'y':'x'); - - /* remove points that are too close to the ends - * because hor/vert ends are permitted, also - * if the split point is VERY close to the ends - * but not exactly then just flatten it and check again. - */ - for(j = oldnp; j<np; j++) { - dir[j] = i; - if(ISDBG(QUAD)) - fprintf(stderr, "%g ", sp[j]); - if(sp[j] < 0.03) { /* front end of curve */ - if(ge->fpoints[i][0] != ge->prev->fpoints[i][2]) { - ge->fpoints[i][0] = ge->prev->fpoints[i][2]; - if(ISDBG(QUAD)) fprintf(stderr, "flattened at front\n"); - goto doagain; - } - if( ge->fpoints[i][1] != ge->fpoints[i][0] - && fsign(ge->fpoints[i][2] - ge->fpoints[i][1]) - != fsign(ge->fpoints[i][1] - ge->fpoints[i][0]) ) { - ge->fpoints[i][1] = ge->fpoints[i][0]; - if(ISDBG(QUAD)) fprintf(stderr, "flattened zigzag at front\n"); - goto doagain; - } - sp[j] = sp[j+1]; np--; j--; - if(ISDBG(QUAD)) fprintf(stderr, "(front flat) "); - } else if(sp[j] > 0.97) { /* rear end of curve */ - if(ge->fpoints[i][1] != ge->fpoints[i][2]) { - ge->fpoints[i][1] = ge->fpoints[i][2]; - if(ISDBG(QUAD)) fprintf(stderr, "flattened at rear\n"); - goto doagain; - } - if( ge->fpoints[i][0] != ge->fpoints[i][1] - && fsign(ge->prev->fpoints[i][2] - ge->fpoints[i][0]) - != fsign(ge->fpoints[i][0] - ge->fpoints[i][1]) ) { - ge->fpoints[i][0] = ge->fpoints[i][1]; - if(ISDBG(QUAD)) fprintf(stderr, "flattened zigzag at rear\n"); - goto doagain; - } - sp[j] = sp[j+1]; np--; j--; - if(ISDBG(QUAD)) fprintf(stderr, "(rear flat) "); - } - } - if(ISDBG(QUAD)) fprintf(stderr, "\n"); - } - - if(np==0) /* no split points, leave it alone */ - continue; - - if(ISDBG(QUAD)) { - fprintf(stderr, "%s: splitting 0x%x (%g %g) (%g %g) (%g %g) (%g %g) at %d points\n ", g->name, - ge, ge->prev->fx3, ge->prev->fy3, ge->fx1, ge->fy1, ge->fx2, ge->fy2, - ge->fx3, ge->fy3, np); - for(i=0; i<np; i++) - fprintf(stderr, "%g(%c) ", sp[i], dir[i] ? 'y':'x'); - fprintf(stderr, "\n"); - } - - /* sort the points ascending */ - for(i=0; i<np; i++) - for(j=i+1; j<np; j++) - if(sp[i] > sp[j]) { - a = sp[i]; sp[i] = sp[j]; sp[j] = a; - } - - /* now finally do the split on each point */ - for(j=0; j<np; j++) { - double k1, k2, c; - - k1 = sp[j]; - k2 = 1 - k1; - - if(ISDBG(QUAD)) fprintf(stderr, " 0x%x %g/%g\n", ge, k1, k2); - - nge = newgentry(GEF_FLOAT); - (*nge) = (*ge); - -#define SPLIT(pt1, pt2) ( (pt1) + k1*((pt2)-(pt1)) ) /* order is important! */ - for(i=0; i<2; i++) { /* for x and y */ - a = ge->fpoints[i][0]; /* get the middle points */ - b = ge->fpoints[i][1]; - - /* calculate new internal points */ - c = SPLIT(a, b); - - ge->fpoints[i][0] = SPLIT(ge->prev->fpoints[i][2], a); - ge->fpoints[i][1] = SPLIT(ge->fpoints[i][0], c); - - nge->fpoints[i][1] = SPLIT(b, nge->fpoints[i][2]); - nge->fpoints[i][0] = SPLIT(c, nge->fpoints[i][1]); - - ge->fpoints[i][2] = SPLIT(ge->fpoints[i][1], - + nge->fpoints[i][0]); - } -#undef SPLIT - - addgeafter(ge, nge); - - /* go to the next part, adjust remaining points */ - ge = nge; - for(i=j+1; i<np; i++) - sp[i] = (sp[i]-k1) / k2; - } - } - -} - -/* check if a curve is a zigzag */ - -static int -iiszigzag( - GENTRY *ge -) -{ - double k, k1, k2; - int a, b; - - if (ge->type != GE_CURVE) - return 0; - - a = ge->iy2 - ge->iy1; - b = ge->ix2 - ge->ix1; - if(a == 0) { - if(b == 0) { - return 0; - } else - k = FBIGVAL; - } else - k = fabs((double) b / (double) a); - - a = ge->iy1 - ge->prev->iy3; - b = ge->ix1 - ge->prev->ix3; - if(a == 0) { - if(b == 0) { - return 0; - } else - k1 = FBIGVAL; - } else - k1 = fabs((double) b / (double) a); - - a = ge->iy3 - ge->iy2; - b = ge->ix3 - ge->ix2; - if(a == 0) { - if(b == 0) { - return 0; - } else - k2 = FBIGVAL; - } else - k2 = fabs((double) b / (double) a); - - /* if the curve is not a zigzag */ - if (k1+0.0001 >= k && k2 <= k+0.0001 || k1 <= k+0.0001 && k2+0.0001 >= k) - return 0; - else - return 1; -} - -/* check if a curve is a zigzag - floating */ - -static int -fiszigzag( - GENTRY *ge -) -{ - double k, k1, k2; - double a, b; - - if (ge->type != GE_CURVE) - return 0; - - a = fabs(ge->fy2 - ge->fy1); - b = fabs(ge->fx2 - ge->fx1); - if(a < FEPS) { - if(b < FEPS) { - return 0; - } else - k = FBIGVAL; - } else - k = b / a; - - a = fabs(ge->fy1 - ge->prev->fy3); - b = fabs(ge->fx1 - ge->prev->fx3); - if(a < FEPS) { - if(b < FEPS) { - return 0; - } else - k1 = FBIGVAL; - } else - k1 = b / a; - - a = fabs(ge->fy3 - ge->fy2); - b = fabs(ge->fx3 - ge->fx2); - if(a < FEPS) { - if(b < FEPS) { - return 0; - } else - k2 = FBIGVAL; - } else - k2 = b / a; - - /* if the curve is not a zigzag */ - if (k1+0.0001 >= k && k2 <= k+0.0001 || k1 <= k+0.0001 && k2+0.0001 >= k) - return 0; - else - return 1; -} - -/* split the zigzag-like curves into two parts */ - -void -fsplitzigzags( - GLYPH * g -) -{ - GENTRY *ge, *nge; - double a, b, c, d; - - assertisfloat(g, "splitting zigzags"); - for (ge = g->entries; ge != 0; ge = ge->next) { - if (ge->type != GE_CURVE) - continue; - - /* if the curve is not a zigzag */ - if ( !fiszigzag(ge) ) { - continue; - } - - if(ISDBG(FCONCISE)) { - double maxsc1, maxsc2; - fprintf(stderr, "split a zigzag "); - fnormalizege(ge); - if( fcrossraysge(ge, ge, &maxsc1, &maxsc2, NULL) ) { - fprintf(stderr, "sc1=%g sc2=%g\n", maxsc1, maxsc2); - } else { - fprintf(stderr, "(rays don't cross)\n"); - } - } - /* split the curve by t=0.5 */ - nge = newgentry(GEF_FLOAT); - (*nge) = (*ge); - nge->type = GE_CURVE; - - a = ge->prev->fx3; - b = ge->fx1; - c = ge->fx2; - d = ge->fx3; - nge->fx3 = d; - nge->fx2 = (c + d) / 2.; - nge->fx1 = (b + 2. * c + d) / 4.; - ge->fx3 = (a + b * 3. + c * 3. + d) / 8.; - ge->fx2 = (a + 2. * b + c) / 4.; - ge->fx1 = (a + b) / 2.; - - a = ge->prev->fy3; - b = ge->fy1; - c = ge->fy2; - d = ge->fy3; - nge->fy3 = d; - nge->fy2 = (c + d) / 2.; - nge->fy1 = (b + 2. * c + d) / 4.; - ge->fy3 = (a + b * 3. + c * 3. + d) / 8.; - ge->fy2 = (a + 2. * b + c) / 4.; - ge->fy1 = (a + b) / 2.; - - addgeafter(ge, nge); - - if(ISDBG(FCONCISE)) { - dumppaths(g, ge, nge); - } - } -} - -/* free this GENTRY, returns what was ge->next - * (ge must be of type GE_LINE or GE_CURVE) - * works on both float and int entries - */ - -static GENTRY * -freethisge( - GENTRY *ge -) -{ - GENTRY *xge; - - if (ge->bkwd != ge->prev) { - /* at beginning of the contour */ - - xge = ge->bkwd; - if(xge == ge) { /* was the only line in contour */ - /* remove the contour completely */ - /* prev is GE_MOVE, next is GE_PATH, remove them all */ - - /* may be the first contour, then ->bkwd points to ge->entries */ - if(ge->prev->prev == 0) - *(GENTRY **)(ge->prev->bkwd) = ge->next->next; - else - ge->prev->prev->next = ge->next->next; - - if(ge->next->next) { - ge->next->next->prev = ge->prev->prev; - ge->next->next->bkwd = ge->prev->bkwd; - } - - xge = ge->next->next; - free(ge->prev); free(ge->next); free(ge); - return xge; - } - - /* move the start point of the contour */ - if(ge->flags & GEF_FLOAT) { - ge->prev->fx3 = xge->fx3; - ge->prev->fy3 = xge->fy3; - } else { - ge->prev->ix3 = xge->ix3; - ge->prev->iy3 = xge->iy3; - } - } else if(ge->frwd != ge->next) { - /* at end of the contour */ - - xge = ge->frwd->prev; - /* move the start point of the contour */ - if(ge->flags & GEF_FLOAT) { - xge->fx3 = ge->bkwd->fx3; - xge->fy3 = ge->bkwd->fy3; - } else { - xge->ix3 = ge->bkwd->ix3; - xge->iy3 = ge->bkwd->iy3; - } - } - - ge->prev->next = ge->next; - ge->next->prev = ge->prev; - ge->bkwd->frwd = ge->frwd; - ge->frwd->bkwd = ge->bkwd; - - xge = ge->next; - free(ge); - return xge; -} - -/* inserts a new gentry (LINE or CURVE) after another (MOVE - * or LINE or CURVE) - * corrects the first GE_MOVE if neccessary - */ - -static void -addgeafter( - GENTRY *oge, /* after this */ - GENTRY *nge /* insert this */ -) -{ - if(oge->type == GE_MOVE) { - /* insert before next */ - if(oge->next->type == GE_PATH) { - /* first and only GENTRY in path */ - nge->frwd = nge->bkwd = nge; - } else { - nge->frwd = oge->next; - nge->bkwd = oge->next->bkwd; - oge->next->bkwd->frwd = nge; - oge->next->bkwd = nge; - } - } else { - nge->frwd = oge->frwd; - nge->bkwd = oge; - oge->frwd->bkwd = nge; - oge->frwd = nge; - } - - nge->next = oge->next; - nge->prev = oge; - oge->next->prev = nge; - oge->next = nge; - - if(nge->frwd->prev->type == GE_MOVE) { - /* fix up the GE_MOVE entry */ - if(nge->flags & GEF_FLOAT) { - nge->frwd->prev->fx3 = nge->fx3; - nge->frwd->prev->fy3 = nge->fy3; - } else { - nge->frwd->prev->ix3 = nge->ix3; - nge->frwd->prev->iy3 = nge->iy3; - } - } -} - -/* - * Check if this GENTRY happens to be at the end of path - * and fix the first MOVETO accordingly - * handles both int and float - */ - -static void -fixendpath( - GENTRY *ge -) -{ - GENTRY *mge; - - mge = ge->frwd->prev; - if(mge->type == GE_MOVE) { - if(ge->flags & GEF_FLOAT) { - mge->fx3 = ge->fx3; - mge->fy3 = ge->fy3; - } else { - mge->ix3 = ge->ix3; - mge->iy3 = ge->iy3; - } - } -} - -/* - * This function adjusts the rest of path (the part from...to is NOT changed) - * to cover the specified gap by the specified axis (0 - X, 1 - Y). - * Gap is counted in direction (end_of_to - beginning_of_from). - * Returns by how much the gap was not closed (0.0 if it was fully closed). - * Ret contains by how much the first and last points of [from...to] - * were moved to bring them in consistence to the rest of the path. - * If ret==NULL then this info is not returned. - */ - -static double -fclosegap( - GENTRY *from, - GENTRY *to, - int axis, - double gap, - double *ret -) -{ -#define TIMESLARGER 10. /* how many times larger must be a curve to not change too much */ - double rm[2]; - double oldpos[2]; - double times, limit, df, dx; - int j, k; - GENTRY *xge, *pge, *nge, *bge[2]; - - /* remember the old points to calculate ret */ - oldpos[0] = from->prev->fpoints[axis][2]; - oldpos[1] = to->fpoints[axis][2]; - - rm[0] = rm[1] = gap / 2. ; - - bge[0] = from; /* this is convenient for iterations */ - bge[1] = to; - - /* first try to modify large curves but if have none then settle for small */ - for(times = (TIMESLARGER-1); times > 0.1; times /= 2. ) { - - if(rm[0]+rm[1] == 0.) - break; - - /* iterate in both directions, backwards then forwards */ - for(j = 0; j<2; j++) { - - if(rm[j] == 0.) /* if this direction is exhausted */ - continue; - - limit = fabs(rm[j]) * (1.+times); - - for(xge = bge[j]->cntr[j]; xge != bge[!j]; xge = xge->cntr[j]) { - dx = xge->fpoints[axis][2] - xge->prev->fpoints[axis][2]; - df = fabs(dx) - limit; - if( df <= FEPS ) /* curve is too small to change */ - continue; - - if( df >= fabs(rm[j]) ) - df = rm[j]; - else - df *= fsign(rm[j]); /* we may cover this part of rm */ - - rm[j] -= df; - limit = fabs(rm[j]) * (1.+times); - - if(xge->type == GE_CURVE) { /* correct internal points */ - double scale = ((dx+df) / dx) - 1.; - double base; - - if(j) - base = xge->fpoints[axis][2]; - else - base = xge->prev->fpoints[axis][2]; - - for(k = 0; k<2; k++) - xge->fpoints[axis][k] += scale * - (xge->fpoints[axis][k] - base); - } - - /* move all the intermediate lines */ - if(j) { - df = -df; /* absolute direction */ - pge = bge[1]->bkwd; - nge = xge->bkwd; - } else { - xge->fpoints[axis][2] += df; - pge = bge[0]; - nge = xge->frwd; - } - while(nge != pge) { - if(nge->type == GE_CURVE) { - nge->fpoints[axis][0] +=df; - nge->fpoints[axis][1] +=df; - } - nge->fpoints[axis][2] += df; - if(nge->next != nge->frwd) { /* last entry of contour */ - nge->frwd->prev->fpoints[axis][2] += df; - } - nge = nge->cntr[!j]; - } - - if(rm[j] == 0.) - break; - } - } - } - - /* find the difference */ - oldpos[0] -= from->prev->fpoints[axis][2]; - oldpos[1] -= to->fpoints[axis][2]; - - if(ret) { - ret[0] = oldpos[0] - from->prev->fpoints[axis][2]; - ret[1] = oldpos[1] - to->fpoints[axis][2]; - } - -#if 0 - if( rm[0]+rm[1] != gap - oldpos[1] + oldpos[0]) { - fprintf(stderr, "** gap=%g rm[0]=%g rm[1]=%g o[0]=%g o[1]=%g rg=%g og=%g\n", - gap, rm[0], rm[1], oldpos[0], oldpos[1], rm[0]+rm[1], - gap - oldpos[1] + oldpos[0]); - } -#endif - - return rm[0]+rm[1]; -#undef TIMESLARGER -} - -/* remove the lines or curves smaller or equal to the size limit */ - -static void -fdelsmall( - GLYPH *g, - double minlen -) -{ - GENTRY *ge, *nge, *pge, *xge, *next; - int i, k; - double dx, dy, d2, d2m; - double minlen2; -#define TIMESLARGER 10. /* how much larger must be a curve to not change too much */ - - minlen2 = minlen*minlen; - - for (ge = g->entries; ge != 0; ge = next) { - next = ge->next; - - if (ge->type != GE_CURVE && ge->type != GE_LINE) - continue; - - d2m = 0; - for(i= (ge->type==GE_CURVE? 0: 2); i<3; i++) { - dx = ge->fxn[i] - ge->prev->fx3; - dy = ge->fyn[i] - ge->prev->fy3; - d2 = dx*dx + dy*dy; - if(d2m < d2) - d2m = d2; - } - - if( d2m > minlen2 ) { /* line is not too small */ - /* XXX add more normalization here */ - continue; - } - - /* if the line is too small */ - - /* check forwards if we have a whole sequence of them */ - nge = ge; - for(xge = ge->frwd; xge != ge; xge = xge->frwd) { - d2m = 0; - for(i= (xge->type==GE_CURVE? 0: 2); i<3; i++) { - dx = xge->fxn[i] - xge->prev->fx3; - dy = xge->fyn[i] - xge->prev->fy3; - d2 = dx*dx + dy*dy; - if(d2m < d2) - d2m = d2; - } - if( d2m > minlen2 ) /* line is not too small */ - break; - nge = xge; - if(next == nge) /* move the next step past this sequence */ - next = next->next; - } - - /* check backwards if we have a whole sequence of them */ - pge = ge; - for(xge = ge->bkwd; xge != ge; xge = xge->bkwd) { - d2m = 0; - for(i= (xge->type==GE_CURVE? 0: 2); i<3; i++) { - dx = xge->fxn[i] - xge->prev->fx3; - dy = xge->fyn[i] - xge->prev->fy3; - d2 = dx*dx + dy*dy; - if(d2m < d2) - d2m = d2; - } - if( d2m > minlen2 ) /* line is not too small */ - break; - pge = xge; - } - - /* now we have a sequence of small fragments in pge...nge (inclusive) */ - - if(ISDBG(FCONCISE)) { - fprintf(stderr, "glyph %s has very small fragments(%x..%x..%x)\n", - g->name, pge, ge, nge); - dumppaths(g, pge, nge); - } - - /* reduce whole sequence to one part and remember the middle point */ - if(pge != nge) { - while(1) { - xge = pge->frwd; - if(xge == nge) { - pge->fx1 = pge->fx2 = pge->fx3; - pge->fx3 = nge->fx3; - pge->fy1 = pge->fy2 = pge->fy3; - pge->fy3 = nge->fy3; - pge->type = GE_CURVE; - freethisge(nge); - break; - } - if(xge == nge->bkwd) { - pge->fx1 = pge->fx2 = (pge->fx3+xge->fx3)/2.; - pge->fx3 = nge->fx3; - pge->fy1 = pge->fy2 = (pge->fy3+xge->fy3)/2.; - pge->fy3 = nge->fy3; - pge->type = GE_CURVE; - freethisge(nge); - freethisge(xge); - break; - } - freethisge(pge); pge = xge; - xge = nge->bkwd; freethisge(nge); nge = xge; - } - } - ge = pge; - - /* check if the whole sequence is small */ - dx = ge->fx3 - ge->prev->fx3; - dy = ge->fy3 - ge->prev->fy3; - d2 = dx*dx + dy*dy; - - if( d2 > minlen2 ) { /* no, it is not */ - double b, d; - - WARNING_3 fprintf(stderr, "glyph %s had a sequence of fragments < %g points each, reduced to one curve\n", - g->name, minlen); - - /* check that we did not create a monstrosity spanning quadrants */ - if(fsign(ge->fx1 - ge->prev->fx1) * fsign(ge->fx3 - ge->fx1) < 0 - || fsign(ge->fy1 - ge->prev->fy1) * fsign(ge->fy3 - ge->fy1) < 0 ) { - /* yes, we did; are both parts of this thing big enough ? */ - dx = ge->fx1 - ge->prev->fx3; - dy = ge->fy1 - ge->prev->fy3; - d2 = dx*dx + dy*dy; - - dx = ge->fx3 - ge->fx1; - dy = ge->fy3 - ge->fy1; - d2m = dx*dx + dy*dy; - - if(d2 > minlen2 && d2m > minlen2) { /* make two straights */ - nge = newgentry(GEF_FLOAT); - *nge = *ge; - - for(i=0; i<2; i++) { - ge->fpoints[i][2] = ge->fpoints[i][0]; - b = nge->fpoints[i][0]; - d = nge->fpoints[i][2] - b; - nge->fpoints[i][0] = b + 0.1*d; - nge->fpoints[i][1] = b + 0.9*d; - } - } - for(i=0; i<2; i++) { /* make one straight or first of two straights */ - b = ge->prev->fpoints[i][2]; - d = ge->fpoints[i][2] - b; - ge->fpoints[i][0] = b + 0.1*d; - ge->fpoints[i][1] = b + 0.9*d; - } - } - continue; - } - - if(ge->frwd == ge) { /* points to itself, just remove the path completely */ - WARNING_3 fprintf(stderr, "glyph %s had a path made of fragments < %g points each, removed\n", - g->name, minlen); - - next = freethisge(ge); - continue; - } - - /* now close the gap by x and y */ - for(i=0; i<2; i++) { - double gap; - - gap = ge->fpoints[i][2] - ge->prev->fpoints[i][2]; - if( fclosegap(ge, ge, i, gap, NULL) != 0.0 ) { - double scale, base; - - /* not good, as the last resort just scale the next line */ - gap = ge->fpoints[i][2] - ge->prev->fpoints[i][2]; - - if(ISDBG(FCONCISE)) - fprintf(stderr, " last resort on %c: closing next by %g\n", - (i==0 ? 'x' : 'y'), gap); - - nge = ge->frwd; - base = nge->fpoints[i][2]; - dx = ge->fpoints[i][2] - base; - if(fabs(dx) < FEPS) - continue; - - scale = ((dx-gap) / dx); - - if(nge->type == GE_CURVE) - for(k = 0; k<2; k++) - nge->fpoints[i][k] = base + - scale * (nge->fpoints[i][k] - base); - - ge->fpoints[i][2] -= gap; - } - } - - /* OK, the gap is closed - remove this useless GENTRY */ - freethisge(ge); - } -#undef TIMESLARGER -} - -/* find the point where two rays continuing vectors cross - * returns 1 if they cross, 0 if they don't - * If they cross optionally (if the pointers are not NULL) returns - * the maximal scales for both vectors and also optionally the point - * where the rays cross (twice). - * Expects that the curves are normalized. - * - * For convenience there are 2 front-end functions taking - * arguments in different formats - */ - -struct ray { - double x1, y1, x2, y2; - int isvert; - double k, b; /* lines are represented as y = k*x + b */ - double *maxp; -}; -static struct ray ray[3]; - -/* the back-end doing the actual work - * the rays are defined in the static array ray[] - */ - -static int -fcrossraysxx( - double crossdot[2][2] -) -{ - double x, y, max; - int i; - - for(i=0; i<2; i++) { - if(ray[i].x1 == ray[i].x2) - ray[i].isvert = 1; - else { - ray[i].isvert = 0; - ray[i].k = (ray[i].y2 - ray[i].y1) / (ray[i].x2 - ray[i].x1); - ray[i].b = ray[i].y2 - ray[i].k * ray[i].x2; - } - } - - if(ray[0].isvert && ray[1].isvert) { - if(ISDBG(FCONCISE)) fprintf(stderr, "crossrays: both vertical\n"); - return 0; /* both vertical, don't cross */ - } - - if(ray[1].isvert) { - ray[2] = ray[0]; /* exchange them */ - ray[0] = ray[1]; - ray[1] = ray[2]; - } - - if(ray[0].isvert) { - x = ray[0].x1; - } else { - if( fabs(ray[0].k - ray[1].k) < FEPS) { - if(ISDBG(FCONCISE)) fprintf(stderr, "crossrays: parallel lines, k = %g, %g\n", - ray[0].k, ray[1].k); - return 0; /* parallel lines */ - } - x = (ray[1].b - ray[0].b) / (ray[0].k - ray[1].k) ; - } - y = ray[1].k * x + ray[1].b; - - for(i=0; i<2; i++) { - if(ray[i].isvert) - max = (y - ray[i].y1) / (ray[i].y2 - ray[i].y1); - else - max = (x - ray[i].x1) / (ray[i].x2 - ray[i].x1); - /* check if wrong sides of rays cross */ - if( max < 0 ) { - if(ISDBG(FCONCISE)) fprintf(stderr, "crossrays: %c scale=%g @(%g,%g) (%g,%g)<-(%g,%g)\n", - (i?'Y':'X'), max, x, y, ray[i].x2, ray[i].y2, ray[i].x1, ray[i].y1); - return 0; - } - if(ray[i].maxp) - *ray[i].maxp = max; - } - if(crossdot != 0) { - crossdot[0][0] = crossdot[1][0] = x; - crossdot[0][1] = crossdot[1][1] = y; - } - return 1; -} - -/* the front-end getting the arguments from 4 dots defining - * a curve in the same format as for fapproxcurve(): - * rays are defined as beginning and end of the curve, - * the crossdot is inserted as the two middle dots of the curve - */ - -int -fcrossrayscv( - double curve[4][2 /*X,Y*/], - double *max1, - double *max2 -) -{ - ray[0].x1 = curve[0][X]; - ray[0].y1 = curve[0][Y]; - ray[0].x2 = curve[1][X]; - ray[0].y2 = curve[1][Y]; - ray[0].maxp = max1; - - ray[1].x1 = curve[2][X]; - ray[1].y1 = curve[2][Y]; - ray[1].x2 = curve[3][X]; - ray[1].y2 = curve[3][Y]; - ray[1].maxp = max2; - - return fcrossraysxx(&curve[1]); -} - -/* the front-end getting the arguments from gentries: - * rays are defined as beginning of curve1 and end of curve 2 - */ - -int -fcrossraysge( - GENTRY *ge1, - GENTRY *ge2, - double *max1, - double *max2, - double crossdot[2][2] -) -{ - ray[0].x1 = ge1->prev->fx3; - ray[0].y1 = ge1->prev->fy3; - ray[0].x2 = ge1->fpoints[X][ge1->ftg]; - ray[0].y2 = ge1->fpoints[Y][ge1->ftg]; - ray[0].maxp = max1; - - ray[1].x1 = ge2->fx3; - ray[1].y1 = ge2->fy3; - if(ge2->rtg < 0) { - ray[1].x2 = ge2->prev->fx3; - ray[1].y2 = ge2->prev->fy3; - } else { - ray[1].x2 = ge2->fpoints[X][ge2->rtg]; - ray[1].y2 = ge2->fpoints[Y][ge2->rtg]; - } - ray[1].maxp = max2; - - return fcrossraysxx(crossdot); -} - -/* debugging printout functions */ - -#if defined(DEBUG_DOTSEG) || defined(DEBUG_DOTCURVE) || defined(DEBUG_APPROXCV) - -/* for debugging */ -static -printdot( - double dot[2] -) -{ - fprintf(stderr, "(%g,%g)", dot[0], dot[1]); -} - -static -printseg( - double seg[2][2] -) -{ - putc('[', stderr); - printdot(seg[0]); - putc(' ', stderr); - printdot(seg[1]); - putc(']', stderr); -} - -#endif /* DEBUG_* */ - -/* - * Find squared distance from a dot to a line segment - */ - -double -fdotsegdist2( - double seg[2][2 /*X,Y*/], - double dot[2 /*X,Y*/] -) -{ -#define x1 seg[0][X] -#define y1 seg[0][Y] -#define x2 seg[1][X] -#define y2 seg[1][Y] -#define xdot dot[X] -#define ydot dot[Y] - - double dx, dy; /* segment dimensions */ - double kline, bline; /* segment line formula is y=k*x+b */ - double kperp, bperp; /* perpendicular from the dot to the line */ - double xcross, ycross; /* where the perpendicular crosses the segment */ - -/* handle the situation where the nearest point of the segment is its end */ -#define HANDLE_LIMITS(less12, lesscr1, lesscr2) \ - if( less12 ) { \ - if( lesscr1 ) { \ - xcross = x1; \ - ycross = y1; \ - } else if( !(lesscr2) ) { \ - xcross = x2; \ - ycross = y2; \ - } \ - } else { \ - if( !(lesscr1) ) { \ - xcross = x1; \ - ycross = y1; \ - } else if( lesscr2 ) { \ - xcross = x2; \ - ycross = y2; \ - } \ - } \ - /* end of macro */ - - - dx = x2 - x1; - dy = y2 - y1; - - if(fabs(dx) < FEPS) { - /* special case - vertical line */ -#ifdef DEBUG_DOTSEG - printf("vertical line!\n"); -#endif - xcross = x1; - ycross = ydot; - HANDLE_LIMITS( y1 < y2, ycross < y1, ycross < y2); - } else if(fabs(dy) < FEPS) { - /* special case - horizontal line */ -#ifdef DEBUG_DOTSEG - printf("horizontal line!\n"); -#endif - xcross = xdot; - ycross = y1; - HANDLE_LIMITS( x1 < x2, xcross < x1, xcross < x2) - } else { - kline = dy/dx; - bline = y1 - x1*kline; - kperp = -1./kline; - bperp = ydot - xdot*kperp; - - xcross = (bline-bperp) / (kperp-kline); - ycross = kline*xcross + bline; - - HANDLE_LIMITS( x1 < x2, xcross < x1, xcross < x2) - } -#ifdef DEBUG_DOTSEG - printf("crossover at (%g,%g)\n", xcross, ycross); -#endif - - dx = xdot-xcross; - dy = ydot-ycross; - return dx*dx+dy*dy; -#undef x1 -#undef y1 -#undef x2 -#undef y2 -#undef xdot -#undef ydot -#undef HANDLE_LIMITS -} - -/* find the weighted quadratic average for the distance of a set - * of dots from the curve; also fills out the individual distances - * for each dot; if maxp!=NULL then returns the maximal squared - * distance in there - */ - -double -fdotcurvdist2( - double curve[4][2 /*X,Y*/ ], - struct dot_dist *dots, - int ndots, /* number of entries in dots */ - double *maxp -) -{ - /* a curve is approximated by this many straight segments */ -#define NAPSECT 16 - /* a curve is divided into this many sections with equal weight each */ -#define NWSECT 4 - /* table of coefficients for finding the dots on the curve */ - /* tt[0] is left unused */ - static double tt[NAPSECT][4]; - static int havett = 0; /* flag: tt is initialized */ - /* dots on the curve */ - double cvd[NAPSECT+1][2 /*X,Y*/]; - /* sums by sections */ - double sum[NWSECT]; - /* counts by sections */ - double count[NWSECT]; - int d, i, j; - int id1, id2; - double dist1, dist2, dist3, dx, dy, x, y; - double max = 0.; - - if(!havett) { - double t, nt, t2, nt2, step; - - havett++; - step = 1. / NAPSECT; - t = 0; - for(i=1; i<NAPSECT; i++) { - t += step; - nt = 1 - t; - t2 = t*t; - nt2 = nt*nt; - tt[i][0] = nt2*nt; /* (1-t)^3 */ - tt[i][1] = 3*nt2*t; /* 3*(1-t)^2*t */ - tt[i][2] = 3*nt*t2; /* 3*(1-t)*t^2 */ - tt[i][3] = t2*t; /* t^3 */ - } - } - - for(i=0; i<NWSECT; i++) { - sum[i] = 0.; - count[i] = 0; - } - - /* split the curve into segments */ - for(d=0; d<2; d++) { /* X and Y */ - cvd[0][d] = curve[0][d]; /* endpoints */ - cvd[NAPSECT][d] = curve[3][d]; - for(i=1; i<NAPSECT; i++) { - cvd[i][d] = curve[0][d] * tt[i][0] - + curve[1][d] * tt[i][1] - + curve[2][d] * tt[i][2] - + curve[3][d] * tt[i][3]; - } - } - - for(d=0; d<ndots; d++) { -#ifdef DEBUG_DOTCURVE - printf("dot %d ", d); printdot(dots[d].p); printf(":\n"); - - /* for debugging */ - for(i=0; i< NAPSECT; i++) { - dist1 = fdotsegdist2(&cvd[i], dots[d].p); - printf(" seg %d ",i); printseg(&cvd[i]); printf(" dist=%g\n", sqrt(dist1)); - } -#endif - - x = dots[d].p[X]; - y = dots[d].p[Y]; - - /* find the nearest dot on the curve - * there may be up to 2 local minimums - so we start from the - * ends of curve and go to the center - */ - - id1 = 0; - dx = x - cvd[0][X]; - dy = y - cvd[0][Y]; - dist1 = dx*dx + dy*dy; -#ifdef DEBUG_DOTCURVE - printf(" dot 0 "); printdot(cvd[id1]); printf(" dist=%g\n", sqrt(dist1)); -#endif - for(i = 1; i<=NAPSECT; i++) { - dx = x - cvd[i][X]; - dy = y - cvd[i][Y]; - dist3 = dx*dx + dy*dy; -#ifdef DEBUG_DOTCURVE - printf(" dot %d ",i); printdot(cvd[i]); printf(" dist=%g\n", sqrt(dist3)); -#endif - if(dist3 < dist1) { - dist1 = dist3; - id1 = i; - } else - break; - } - - if(id1 < NAPSECT-1) { - id2 = NAPSECT; - dx = x - cvd[NAPSECT][X]; - dy = y - cvd[NAPSECT][Y]; - dist2 = dx*dx + dy*dy; -#ifdef DEBUG_DOTCURVE - printf(" +dot %d ", id2); printdot(cvd[id2]); printf(" dist=%g\n", sqrt(dist2)); -#endif - for(i = NAPSECT-1; i>id1+1; i--) { - dx = x - cvd[i][X]; - dy = y - cvd[i][Y]; - dist3 = dx*dx + dy*dy; -#ifdef DEBUG_DOTCURVE - printf(" dot %d ",i); printdot(cvd[i]); printf(" dist=%g\n", sqrt(dist3)); -#endif - if(dist3 < dist2) { - dist2 = dist3; - id2 = i; - } else - break; - } - - /* now find which of the local minimums is smaller */ - if(dist2 < dist1) { - id1 = id2; - } - } - - /* the nearest segment must include the nearest dot */ - if(id1==0) { - dots[d].seg = 0; - dots[d].dist2 = fdotsegdist2(&cvd[0], dots[d].p); - } else if(id1==NAPSECT) { - dots[d].seg = NAPSECT-1; - dots[d].dist2 = fdotsegdist2(&cvd[NAPSECT-1], dots[d].p); - } else { - dist1 = fdotsegdist2(&cvd[id1], dots[d].p); - dist2 = fdotsegdist2(&cvd[id1-1], dots[d].p); - if(dist2 < dist1) { - dots[d].seg = id1-1; - dots[d].dist2 = dist2; - } else { - dots[d].seg = id1; - dots[d].dist2 = dist1; - } - } - - i = dots[d].seg % NWSECT; - sum[i] += dots[d].dist2; - if(dots[d].dist2 > max) - max = dots[d].dist2; - count[i]++; -#ifdef DEBUG_DOTCURVE - printf(" best seg %d sect %d dist=%g\n", dots[d].seg, i, sqrt(dots[d].dist2)); -#endif - } - - /* calculate the weighted average */ - id1=0; - dist1=0.; - for(i=0; i<NWSECT; i++) { - if(count[i]==0) - continue; - id1++; - dist1 += sum[i]/count[i]; - } - if(maxp) - *maxp = max; - if(id1==0) /* no dots, strange */ - return 0.; - else - return dist1/id1; /* to get the average distance apply sqrt() */ -} - -/* - * Approximate a curve matching the giving set of points and with - * middle reference points going along the given segments (and no farther - * than these segments). - */ - -void -fapproxcurve( - double cv[4][2 /*X,Y*/ ], /* points 0-3 are passed in, points 1,2 - out */ - struct dot_dist *dots, /* the dots to approximate - distances returned - * there may be invalid */ - int ndots -) -{ - /* b and c are the middle control points */ -#define B 0 -#define C 1 - /* maximal number of sections on each axis - used for the first step */ -#define MAXSECT 2 - /* number of sections used for the other steps */ -#define NORMSECT 2 - /* when the steps become less than this many points, it's time to stop */ -#define STEPEPS 1. - double from[2 /*B,C*/], to[2 /*B,C*/]; - double middf[2 /*B,C*/][2 /*X,Y*/], df; - double coef[2 /*B,C*/][MAXSECT]; - double res[MAXSECT][MAXSECT], thisres, bestres, goodres; - int ncoef[2 /*B,C*/], best[2 /*B,C*/], good[2 /*B,C*/]; - int i, j, k, keepsym; - char bc[]="BC"; - char xy[]="XY"; - -#ifdef DEBUG_APPROXCV - fprintf(stderr, "Curve points:"); - for(i=0; i<4; i++) { - fprintf(stderr, " "); - printdot(cv[i]); - } - fprintf(stderr, "\nDots:"); - for(i=0; i<ndots; i++) { - fprintf(stderr, " "); - printdot(dots[i].p); - } - fprintf(stderr, "\n"); -#endif - - /* load the endpoints and calculate differences */ - for(i=0; i<2; i++) { - /* i is X, Y */ - middf[B][i] = cv[1][i]-cv[0][i]; - middf[C][i] = cv[2][i]-cv[3][i]; - - /* i is B, C */ - from[i] = 0.; - to[i] = 1.; - ncoef[i] = MAXSECT; - } - - while(ncoef[B] != 1 || ncoef[C] != 1) { - /* prepare the values of coefficients */ - for(i=0; i<2; i++) { /*B,C*/ -#ifdef DEBUG_APPROXCV - fprintf(stderr, "Coefficients by %c(%g,%g):", bc[i], from[i], to[i]); -#endif - df = (to[i]-from[i]) / (ncoef[i]*2); - for(j=0; j<ncoef[i]; j++) { - coef[i][j] = from[i] + df*(2*j+1); -#ifdef DEBUG_APPROXCV - fprintf(stderr, " %g", coef[i][j]); -#endif - } -#ifdef DEBUG_APPROXCV - fprintf(stderr, "\n"); -#endif - } - bestres = FBIGVAL; - best[B] = best[C] = 0; - /* i iterates by ncoef[B], j iterates by ncoef[C] */ - for(i=0; i<ncoef[B]; i++) { - for(j=0; j<ncoef[C]; j++) { - for(k=0; k<2; k++) { /*X, Y*/ - cv[1][k] = cv[0][k] + middf[B][k]*coef[B][i]; - cv[2][k] = cv[3][k] + middf[C][k]*coef[C][j]; - } - res[i][j] = thisres = fdotcurvdist2(cv, dots, ndots, NULL); - if(thisres < bestres) { - goodres = bestres; - good[B] = best[B]; - good[C] = best[C]; - bestres = thisres; - best[B] = i; - best[C] = j; - } else if(thisres < goodres) { - goodres = thisres; - good[B] = i; - good[C] = j; - } -#ifdef DEBUG_APPROXCV - fprintf(stderr, " at (%g,%g) dist=%g %s\n", coef[B][i], coef[C][j], sqrt(thisres), - (best[B]==i && best[C]==j)? "(BEST)":""); -#endif - } - } -#ifdef DEBUG_APPROXCV - fprintf(stderr, " best: at (%g, %g) dist=%g\n", - coef[B][best[B]], coef[C][best[C]], sqrt(bestres)); - fprintf(stderr, " B:%d,%d C:%d,%d -- 2nd best: at (%g, %g) dist=%g\n", - best[B], good[B], best[C], good[C], coef[B][good[B]], coef[C][good[C]], sqrt(goodres)); -#endif - - if(bestres < (0.1*0.1)) { /* consider it close enough */ - /* calculate the coordinates to return */ - for(k=0; k<2; k++) { /*X, Y*/ - cv[1][k] = cv[0][k] + middf[B][k]*coef[B][best[B]]; - cv[2][k] = cv[3][k] + middf[C][k]*coef[C][best[C]]; - } -#ifdef DEBUG_APPROXCV - fprintf(stderr, "quick approximated middle points "); printdot(cv[1]); - fprintf(stderr, " "); printdot(cv[2]); fprintf(stderr, "\n"); -#endif - return; - } - keepsym = 0; - if(best[B] != best[C] && best[B]-best[C] == good[C]-good[B]) { - keepsym = 1; -#ifdef DEBUG_APPROXCV - fprintf(stderr, "keeping symmetry!\n"); -#endif - } - for(i=0; i<2; i++) { /*B,C*/ - if(ncoef[i]==1) - continue; - if(keepsym) { - /* try to keep the symmetry */ - if(best[i] < good[i]) { - from[i] = coef[i][best[i]]; - to[i] = coef[i][good[i]]; - } else { - from[i] = coef[i][good[i]]; - to[i] = coef[i][best[i]]; - } - } else { - df = (to[i]-from[i]) / ncoef[i]; - from[i] += df*best[i]; - to[i] = from[i] + df; - } - if( fabs(df*middf[i][0]) < STEPEPS && fabs(df*middf[i][1]) < STEPEPS) { - /* this side has converged */ - from[i] = to[i] = (from[i]+to[i]) / 2.; - ncoef[i] = 1; - } else - ncoef[i] = NORMSECT; - } - - } - /* calculate the coordinates to return */ - for(k=0; k<2; k++) { /*X, Y*/ - cv[1][k] = cv[0][k] + middf[B][k]*from[B]; - cv[2][k] = cv[3][k] + middf[C][k]*from[C]; - } -#ifdef DEBUG_APPROXCV - fprintf(stderr, "approximated middle points "); printdot(cv[1]); - fprintf(stderr, " "); printdot(cv[2]); fprintf(stderr, "\n"); -#endif -#undef B -#undef C -#undef MAXSECT -#undef NORMSECT -#undef STEPEPS -} - -/* - * Find the squared value of the sinus of the angle between the - * end of ge1 and the beginning of ge2 - * The curve must be normalized. - */ - -static double -fjointsin2( - GENTRY *ge1, - GENTRY *ge2 -) -{ - double d[3][2 /*X,Y*/]; - double scale1, scale2, len1, len2; - int axis; - - if(ge1->rtg < 0) { - d[1][X] = ge1->fx3 - ge1->prev->fx3; - d[1][Y] = ge1->fy3 - ge1->prev->fy3; - } else { - d[1][X] = ge1->fx3 - ge1->fpoints[X][ge1->rtg]; - d[1][Y] = ge1->fy3 - ge1->fpoints[Y][ge1->rtg]; - } - d[2][X] = ge2->fpoints[X][ge2->ftg] - ge2->prev->fx3; - d[2][Y] = ge2->fpoints[Y][ge2->ftg] - ge2->prev->fy3; - - len1 = sqrt( d[1][X]*d[1][X] + d[1][Y]*d[1][Y] ); - len2 = sqrt( d[2][X]*d[2][X] + d[2][Y]*d[2][Y] ); - /* scale the 2nd segment to the length of 1 - * and to make sure that the 1st segment is longer scale it to - * the length of 2 and extend to the same distance backwards - */ - scale1 = 2./len1; - scale2 = 1./len2; - - for(axis=0; axis <2; axis++) { - d[0][axis] = -( d[1][axis] *= scale1 ); - d[2][axis] *= scale2; - } - return fdotsegdist2(d, d[2]); -} - -#if 0 -/* find the area covered by the curve - * (limited by the projections to the X axis) - */ - -static double -fcvarea( - GENTRY *ge -) -{ - double Ly, My, Ny, Py, Qx, Rx, Sx; - double area; - - /* y = Ly*t^3 + My*t^2 + Ny*t + Py */ - Ly = -ge->prev->fy3 + 3*(ge->fy1 - ge->fy2) + ge->fy3; - My = 3*ge->prev->fy3 - 6*ge->fy1 + 3*ge->fy2; - Ny = 3*(-ge->prev->fy3 + ge->fy1); - Py = ge->prev->fy3; - - /* dx/dt = Qx*t^2 + Rx*t + Sx */ - Qx = 3*(-ge->prev->fx3 + 3*(ge->fx1 - ge->fx2) + ge->fx3); - Rx = 6*(ge->prev->fx3 - 2*ge->fx1 + ge->fx2); - Sx = 3*(-ge->prev->fx3 + ge->fx1); - - /* area is integral[from 0 to 1]( y(t) * dx(t)/dt *dt) */ - area = 1./6.*(Ly*Qx) + 1./5.*(Ly*Rx + My*Qx) - + 1./4.*(Ly*Sx + My*Rx + Ny*Qx) + 1./3.*(My*Sx + Ny*Rx + Py*Qx) - + 1./2.*(Ny*Sx + Py*Rx) + Py*Sx; - - return area; -} -#endif - -/* find the value of point on the curve at the given parameter t, - * along the given axis (0 - X, 1 - Y). - */ - -static double -fcvval( - GENTRY *ge, - int axis, - double t -) -{ - double t2, mt, mt2; - - /* val = A*(1-t)^3 + 3*B*(1-t)^2*t + 3*C*(1-t)*t^2 + D*t^3 */ - t2 = t*t; - mt = 1-t; - mt2 = mt*mt; - - return ge->prev->fpoints[axis][2]*mt2*mt - + 3*(ge->fpoints[axis][0]*mt2*t + ge->fpoints[axis][1]*mt*t2) - + ge->fpoints[axis][2]*t*t2; -} - -/* - * Find ndots equally spaced dots on a curve or line and fill - * their coordinates into the dots array - */ - -static void -fsampledots( - GENTRY *ge, - double dots[][2], /* the dots to fill */ - int ndots -) -{ - int i, axis; - double t, nf, dx, d[2]; - - nf = ndots+1; - if(ge->type == GE_CURVE) { - for(i=0; i<ndots; i++) { - t = (i+1)/nf; - for(axis=0; axis<2; axis++) - dots[i][axis] = fcvval(ge, axis, t); - } - } else { /* line */ - d[0] = ge->fx3 - ge->prev->fx3; - d[1] = ge->fy3 - ge->prev->fy3; - for(i=0; i<ndots; i++) { - t = (i+1)/nf; - for(axis=0; axis<2; axis++) - dots[i][axis] = ge->prev->fpoints[axis][2] - + t*d[axis]; - } - } -} - -/* - * Allocate a structure gex_con - */ - -static void -alloc_gex_con( - GENTRY *ge -) -{ - ge->ext = (void*)calloc(1, sizeof(GEX_CON)); - if(ge->ext == 0) { - fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__); - exit(255); - } -} - -/* - * Normalize a gentry for fforceconcise() : find the points that - * can be used to calculate the tangents. - */ - -static void -fnormalizege( - GENTRY *ge -) -{ - int midsame, frontsame, rearsame; - - if(ge->type == GE_LINE) { - ge->ftg = 2; - ge->rtg = -1; - } else { /* assume it's a curve */ - midsame = (fabs(ge->fx1-ge->fx2)<FEPS && fabs(ge->fy1-ge->fy2)<FEPS); - frontsame = (fabs(ge->fx1-ge->prev->fx3)<FEPS && fabs(ge->fy1-ge->prev->fy3)<FEPS); - rearsame = (fabs(ge->fx3-ge->fx2)<FEPS && fabs(ge->fy3-ge->fy2)<FEPS); - - if(midsame && (frontsame || rearsame) ) { - /* essentially a line */ - ge->ftg = 2; - ge->rtg = -1; - } else { - if(frontsame) { - ge->ftg = 1; - } else { - ge->ftg = 0; - } - if(rearsame) { - ge->rtg = 0; - } else { - ge->rtg = 1; - } - } - } -} - -/* various definition for the processing of outlines */ - -/* maximal average quadratic distance from the original curve - * (in dots) to consider the joined curve good - */ -#define CVEPS 1.5 -#define CVEPS2 (CVEPS*CVEPS) -/* squared sinus of the maximal angle that we consider a smooth joint */ -#define SMOOTHSIN2 0.25 /* 0.25==sin(30 degrees)^2 */ -/* squared line length that we consider small */ -#define SMALL_LINE2 (15.*15.) -/* how many times a curve must be bigger than a line to join, squared */ -#define TIMES_LINE2 (3.*3.) - -/* - * Normalize and analyse a gentry for fforceconcise() and fill out the gex_con - * structure - */ - -static void -fanalyzege( - GENTRY *ge -) -{ - int i, ix, iy; - double avsd2, dots[3][2 /*X,Y*/]; - GEX_CON *gex; - - gex = X_CON(ge); - memset(gex, 0, sizeof *gex); - - gex->len2 = 0; - for(i=0; i<2; i++) { - avsd2 = gex->d[i] = ge->fpoints[i][2] - ge->prev->fpoints[i][2]; - gex->len2 += avsd2*avsd2; - } - gex->sin2 = fjointsin2(ge, ge->frwd); - if(ge->type == GE_CURVE) { - ge->dir = fgetcvdir(ge); - for(i=0; i<2; i++) { - dots[0][i] = ge->prev->fpoints[i][2]; - dots[1][i] = ge->fpoints[i][2]; - dots[2][i] = fcvval(ge, i, 0.5); - } - avsd2 = fdotsegdist2(dots, dots[2]); - if(avsd2 <= CVEPS2) { - gex->flags |= GEXF_FLAT; - } - } else { - ge->dir = CVDIR_FEQUAL|CVDIR_REQUAL; - gex->flags |= GEXF_FLAT; - } - if(gex->flags & GEXF_FLAT) { - if( fabs(gex->d[X]) > FEPS && fabs(gex->d[Y]) < 5. - && fabs(gex->d[Y] / gex->d[X]) < 0.2) - gex->flags |= GEXF_HOR; - else if( fabs(gex->d[Y]) > FEPS && fabs(gex->d[X]) < 5. - && fabs(gex->d[X] / gex->d[Y]) < 0.2) - gex->flags |= GEXF_VERT; - } - ix = gex->isd[X] = fsign(gex->d[X]); - iy = gex->isd[Y] = fsign(gex->d[Y]); - if(ix <= 0) { - if(iy <= 0) - gex->flags |= GEXF_QDL; - if(iy >= 0) - gex->flags |= GEXF_QUL; - if(gex->flags & GEXF_HOR) - gex->flags |= GEXF_IDQ_L; - } - if(ix >= 0) { - if(iy <= 0) - gex->flags |= GEXF_QDR; - if(iy >= 0) - gex->flags |= GEXF_QUR; - if(gex->flags & GEXF_HOR) - gex->flags |= GEXF_IDQ_R; - } - if(gex->flags & GEXF_VERT) { - if(iy <= 0) { - gex->flags |= GEXF_IDQ_U; - } else { /* supposedly there is no 0-sized entry */ - gex->flags |= GEXF_IDQ_D; - } - } -} - -/* - * Analyse a joint between this and following gentry for fforceconcise() - * and fill out the corresponding parts of the gex_con structure - * Bothe entries must be analyzed first. - */ - -static void -fanalyzejoint( - GENTRY *ge -) -{ - GENTRY *nge = ge->frwd; - GENTRY tge; - GEX_CON *gex, *ngex; - double avsd2, dots[3][2 /*X,Y*/]; - int i; - - gex = X_CON(ge); ngex = X_CON(nge); - - /* look if they can be joined honestly */ - - /* if any is flat, they should join smoothly */ - if( (gex->flags & GEXF_FLAT || ngex->flags & GEXF_FLAT) - && gex->sin2 > SMOOTHSIN2) - goto try_flatboth; - - if(ge->type == GE_LINE) { - if(nge->type == GE_LINE) { - if(gex->len2 > SMALL_LINE2 || ngex->len2 > SMALL_LINE2) - goto try_flatboth; - } else { - if(gex->len2*TIMES_LINE2 > ngex->len2) - goto try_flatboth; - } - } else if(nge->type == GE_LINE) { - if(ngex->len2*TIMES_LINE2 > gex->len2) - goto try_flatboth; - } - - /* if curve changes direction */ - if( gex->isd[X]*ngex->isd[X]<0 || gex->isd[Y]*ngex->isd[Y]<0) - goto try_idealone; - - /* if would create a zigzag */ - if( ((ge->dir&CVDIR_FRONT)-CVDIR_FEQUAL) * ((nge->dir&CVDIR_REAR)-CVDIR_REQUAL) < 0 ) - goto try_flatone; - - if( fcrossraysge(ge, nge, NULL, NULL, NULL) ) - gex->flags |= GEXF_JGOOD; - -try_flatone: - /* look if they can be joined by flatting out one of the entries */ - - /* at this point we know that the general direction of the - * gentries is OK - */ - - if( gex->flags & GEXF_FLAT ) { - tge = *ge; - tge.fx1 = tge.fx3; - tge.fy1 = tge.fy3; - fnormalizege(&tge); - if( fcrossraysge(&tge, nge, NULL, NULL, NULL) ) - gex->flags |= GEXF_JFLAT|GEXF_JFLAT1; - } - if( ngex->flags & GEXF_FLAT ) { - tge = *nge; - tge.fx2 = ge->fx3; - tge.fy2 = ge->fy3; - fnormalizege(&tge); - if( fcrossraysge(ge, &tge, NULL, NULL, NULL) ) - gex->flags |= GEXF_JFLAT|GEXF_JFLAT2; - } - -try_idealone: - /* look if one of the entries can be brought to an idealized - * horizontal or vertical position and then joined - */ - if( gex->flags & GEXF_HOR && gex->isd[X]*ngex->isd[X]>=0 ) { - tge = *ge; - tge.fx1 = tge.fx3; - tge.fy1 = ge->prev->fy3; /* force horizontal */ - fnormalizege(&tge); - if( fcrossraysge(&tge, nge, NULL, NULL, NULL) ) - gex->flags |= GEXF_JID|GEXF_JID1; - } else if( gex->flags & GEXF_VERT && gex->isd[Y]*ngex->isd[Y]>=0 ) { - tge = *ge; - tge.fx1 = ge->prev->fx3; /* force vertical */ - tge.fy1 = tge.fy3; - fnormalizege(&tge); - if( fcrossraysge(&tge, nge, NULL, NULL, NULL) ) - gex->flags |= GEXF_JID|GEXF_JID1; - } - if( ngex->flags & GEXF_HOR && gex->isd[X]*ngex->isd[X]>=0 ) { - tge = *nge; - tge.fx2 = ge->fx3; - tge.fy2 = nge->fy3; /* force horizontal */ - fnormalizege(&tge); - if( fcrossraysge(ge, &tge, NULL, NULL, NULL) ) - gex->flags |= GEXF_JID|GEXF_JID2; - } else if( ngex->flags & GEXF_VERT && gex->isd[Y]*ngex->isd[Y]>=0 ) { - tge = *nge; - tge.fx2 = nge->fx3; /* force vertical */ - tge.fy2 = ge->fy3; - fnormalizege(&tge); - if( fcrossraysge(ge, &tge, NULL, NULL, NULL) ) - gex->flags |= GEXF_JID|GEXF_JID2; - } - -try_flatboth: - /* look if we can change them to one line */ - if(gex->flags & GEXF_FLAT && ngex->flags & GEXF_FLAT) { - for(i=0; i<2; i++) { - dots[0][i] = ge->prev->fpoints[i][2]; - dots[1][i] = nge->fpoints[i][2]; - dots[2][i] = ge->fpoints[i][2]; - } - if( fdotsegdist2(dots, dots[2]) <= CVEPS2) - gex->flags |= GEXF_JLINE; - } -} - -/* - * Force conciseness of one contour in the glyph, - * the contour is indicated by one entry from it. - */ - -static void -fconcisecontour( - GLYPH *g, - GENTRY *startge -) -{ -/* initial maximal number of dots to be used as reference */ -#define MAXDOTS ((NREFDOTS+1)*12) - - GENTRY *ge, *pge, *nge, *ige; - GEX_CON *gex, *pgex, *ngex, *nngex; - GENTRY tpge, tnge; - int quad, qq, i, j, ndots, maxdots; - int found[2]; - int joinmask, pflag, nflag; - struct dot_dist *dots; - double avsd2, maxd2, eps2; - double apcv[4][2]; - - if(startge == 0) { - fprintf(stderr, "WARNING: assertion in %s line %d, please report it to the ttf2pt1 project\n", - __FILE__, __LINE__); - fprintf(stderr, "Strange contour in glyph %s\n", g->name); - dumppaths(g, NULL, NULL); - return; - } - - if(startge->type != GE_CURVE && startge->type != GE_LINE) - return; /* probably a degenerate contour */ - - if(ISDBG(FCONCISE)) - fprintf(stderr, "processing contour 0x%p of glyph %s\n", startge, g->name); - - maxdots = MAXDOTS; - dots = (struct dot_dist *)malloc(sizeof(*dots)*maxdots); - if(dots == NULL) { - fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__); - exit(255); - } - - ge = startge; - joinmask = GEXF_JGOOD; - while(1) { - restart: - gex = X_CON(ge); - if((gex->flags & GEXF_JMASK) > ((joinmask<<1)-1)) { - if(ISDBG(FCONCISE)) - fprintf(stderr, "found higher flag (%x>%x) at 0x%p\n", - gex->flags & GEXF_JMASK, ((joinmask<<1)-1), ge); - joinmask <<= 1; - startge = ge; /* have to redo the pass */ - continue; - } - if(( gex->flags & joinmask )==0) - goto next; - - /* if we happen to be in the middle of a string of - * joinable entries, find its beginning - */ - if( gex->flags & (GEXF_JCVMASK^GEXF_JID) ) - quad = gex->flags & X_CON_F(ge->frwd) & GEXF_QMASK; - else if( gex->flags & GEXF_JID2 ) - quad = gex->flags & GEXF_QFROM_IDEAL(X_CON_F(ge->frwd)) & GEXF_QMASK; - else /* must be GEXF_JID1 */ - quad = GEXF_QFROM_IDEAL(gex->flags) & X_CON_F(ge->frwd) & GEXF_QMASK; - - pge = ge; - pgex = X_CON(pge->bkwd); - - if(ISDBG(FCONCISE)) - fprintf(stderr, "ge %p prev -> 0x%p ", ge, pge); - - while(pgex->flags & GEXF_JCVMASK) { - if( !(pgex->flags & ((GEXF_JCVMASK^GEXF_JID)|GEXF_JID2)) ) - qq = GEXF_QFROM_IDEAL(pgex->flags); - else - qq = pgex->flags & GEXF_QMASK; - - if(ISDBG(FCONCISE)) - fprintf(stderr, "(%x?%x)", quad, qq); - - if( !(quad & qq) ) { - if( !(X_CON_F(pge) & (GEXF_JCVMASK^GEXF_JID)) - && pgex->flags & (GEXF_JCVMASK^GEXF_JID) ) { - /* the previos entry is definitely a better match */ - if(pge == ge) { - if(ISDBG(FCONCISE)) - fprintf(stderr, "\nprev is a better match at %p\n", pge); - startge = ge; - goto next; - } else - pge = pge->frwd; - } - break; - } - - quad &= qq; - pge = pge->bkwd; - pgex = X_CON(pge->bkwd); - if(ISDBG(FCONCISE)) - fprintf(stderr, "0x%p ", pge); - } - - /* collect as many entries for joining as possible */ - nge = ge->frwd; - ngex = X_CON(nge); - nngex = X_CON(nge->frwd); - - if(ISDBG(FCONCISE)) - fprintf(stderr, ": 0x%x\nnext -> 0x%p ", pge, nge); - - while(ngex->flags & GEXF_JCVMASK) { - if( !(ngex->flags & ((GEXF_JCVMASK^GEXF_JID)|GEXF_JID1)) ) - qq = GEXF_QFROM_IDEAL(nngex->flags); - else - qq = nngex->flags & GEXF_QMASK; - - if(ISDBG(FCONCISE)) - fprintf(stderr, "(%x?%x)", quad, qq); - if( !(quad & qq) ) { - if( !(X_CON_F(nge->bkwd) & (GEXF_JCVMASK^GEXF_JID)) - && ngex->flags & (GEXF_JCVMASK^GEXF_JID) ) { - /* the next-next entry is definitely a better match */ - if(nge == ge->frwd) { - if(ISDBG(FCONCISE)) - fprintf(stderr, "\nnext %x is a better match than %x at %p (jmask %x)\n", - ngex->flags & GEXF_JCVMASK, gex->flags & GEXF_JCVMASK, nge, joinmask); - goto next; - } else - nge = nge->bkwd; - } - break; - } - - quad &= qq; - nge = nge->frwd; - ngex = nngex; - nngex = X_CON(nge->frwd); - if(ISDBG(FCONCISE)) - fprintf(stderr, "0x%p ", nge); - } - - if(ISDBG(FCONCISE)) - fprintf(stderr, ": 0x%x\n", nge); - - /* XXX add splitting of last entries if neccessary */ - - /* make sure that all the reference dots are valid */ - for(ige = pge; ige != nge->frwd; ige = ige->frwd) { - nngex = X_CON(ige); - if( !(nngex->flags & GEXF_VDOTS) ) { - fsampledots(ige, nngex->dots, NREFDOTS); - nngex->flags |= GEXF_VDOTS; - } - } - - /* do the actual joining */ - while(1) { - pgex = X_CON(pge); - ngex = X_CON(nge->bkwd); - /* now the segments to be joined are pge...nge */ - - ndots = 0; - for(ige = pge; ige != nge->frwd; ige = ige->frwd) { - if(maxdots < ndots+(NREFDOTS+1)) { - maxdots += MAXDOTS; - dots = (struct dot_dist *)realloc((void *)dots, sizeof(*dots)*maxdots); - if(dots == NULL) { - fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__); - exit(255); - } - } - nngex = X_CON(ige); - for(i=0; i<NREFDOTS; i++) { - for(j=0; j<2; j++) - dots[ndots].p[j] = nngex->dots[i][j]; - ndots++; - } - for(j=0; j<2; j++) - dots[ndots].p[j] = ige->fpoints[j][2]; - ndots++; - } - ndots--; /* the last point is not interesting */ - - tpge = *pge; - pflag = pgex->flags; - if(pflag & (GEXF_JGOOD|GEXF_JFLAT2|GEXF_JID2)) { - /* nothing */ - } else if(pflag & GEXF_JFLAT) { - tpge.fx1 = tpge.fx3; - tpge.fy1 = tpge.fy3; - } else if(pflag & GEXF_JID) { - if(pflag & GEXF_HOR) - tpge.fy1 = tpge.bkwd->fy3; - else - tpge.fx1 = tpge.bkwd->fx3; - } - - tnge = *nge; - nflag = ngex->flags; - if(nflag & (GEXF_JGOOD|GEXF_JFLAT1|GEXF_JID) - && !(nflag & GEXF_JID2)) { - /* nothing */ - } else if(nflag & GEXF_JFLAT) { - tnge.fx2 = tnge.bkwd->fx3; - tnge.fy2 = tnge.bkwd->fy3; - } else if(nflag & GEXF_JID) { - if(X_CON_F(nge) & GEXF_HOR) - tnge.fy2 = tnge.fy3; - else - tnge.fx2 = tnge.fx3; - } - - fnormalizege(&tpge); - fnormalizege(&tnge); - if( fcrossraysge(&tpge, &tnge, NULL, NULL, &apcv[1]) ) { - apcv[0][X] = tpge.bkwd->fx3; - apcv[0][Y] = tpge.bkwd->fy3; - /* apcv[1] and apcv[2] were filled by fcrossraysge() */ - apcv[3][X] = tnge.fx3; - apcv[3][Y] = tnge.fy3; - - /* calculate the precision depending on the smaller dimension of the curve */ - maxd2 = apcv[3][X]-apcv[0][X]; - maxd2 *= maxd2; - eps2 = apcv[3][Y]-apcv[0][Y]; - eps2 *= eps2; - if(maxd2 < eps2) - eps2 = maxd2; - eps2 *= (CVEPS2*4.) / (400.*400.); - if(eps2 < CVEPS2) - eps2 = CVEPS2; - else if(eps2 > CVEPS2*4.) - eps2 = CVEPS2*4.; - - fapproxcurve(apcv, dots, ndots); - - avsd2 = fdotcurvdist2(apcv, dots, ndots, &maxd2); - if(ISDBG(FCONCISE)) - fprintf(stderr, "avsd = %g, maxd = %g, ", sqrt(avsd2), sqrt(maxd2)); - if(avsd2 <= eps2 && maxd2 <= eps2*2.) { - /* we've guessed a curve that is close enough */ - ggoodcv++; ggoodcvdots += ndots; - - if(ISDBG(FCONCISE)) { - fprintf(stderr, "in %s joined %p-%p to ", g->name, pge, nge); - for(i=0; i<4; i++) { - fprintf(stderr, " (%g, %g)", apcv[i][X], apcv[i][Y]); - } - fprintf(stderr, " from\n"); - dumppaths(g, pge, nge); - } - for(i=0; i<3; i++) { - pge->fxn[i] = apcv[i+1][X]; - pge->fyn[i] = apcv[i+1][Y]; - } - pge->type = GE_CURVE; - ge = pge; - for(ige = pge->frwd; ; ige = pge->frwd) { - if(ige == pge) { - fprintf(stderr, "WARNING: assertion in %s line %d, please report it to the ttf2pt1 project\n", - __FILE__, __LINE__); - free(dots); - return; - } - if(startge == ige) - startge = pge; - free(ige->ext); - freethisge(ige); - if(ige == nge) - break; - } - fnormalizege(ge); - if(ISDBG(FCONCISE)) { - fprintf(stderr, "normalized "); - for(i=0; i<3; i++) { - fprintf(stderr, " (%g, %g)", ge->fpoints[X][i], ge->fpoints[Y][i]); - } - fprintf(stderr, "\n"); - } - fanalyzege(ge); - fanalyzejoint(ge); - fanalyzege(ge->bkwd); - fanalyzejoint(ge->bkwd); - - /* the results of this join will have to be reconsidered */ - startge = ge = ge->frwd; - goto restart; - } else { - gbadcv++; gbadcvdots += ndots; - } - } - - /* if we're down to 2 entries then the join has failed */ - if(pge->frwd == nge) { - pgex->flags &= ~joinmask; - if(ISDBG(FCONCISE)) - fprintf(stderr, "no match\n"); - goto next; - } - - /* reduce the number of entries by dropping one at some end, - * should never drop the original ge from the range - */ - - if(nge->bkwd == ge - || pge != ge && (pgex->flags & GEXF_JCVMASK) <= (ngex->flags & GEXF_JCVMASK) ) { - pge = pge->frwd; - } else { - nge = nge->bkwd; - } - if(ISDBG(FCONCISE)) - fprintf(stderr, "next try: %p to %p\n", pge, nge); - } - -next: - ge = ge->frwd; - if(ge == startge) { - joinmask = (joinmask >> 1) & GEXF_JCVMASK; - if(joinmask == 0) - break; - } - } - - /* join flat segments into lines */ - /* here ge==startge */ - while(1) { - gex = X_CON(ge); - if( !(gex->flags & GEXF_JLINE) ) - goto next2; - - ndots = 0; - dots[ndots].p[X] = ge->fx3; - dots[ndots].p[Y] = ge->fy3; - ndots++; - - pge = ge->bkwd; - nge = ge->frwd; - - if(ISDBG(FCONCISE)) - fprintf(stderr, "joining LINE from %p-%p\n", ge, nge); - - while(pge!=nge) { - pgex = X_CON(pge); - ngex = X_CON(nge); - if(ISDBG(FCONCISE)) - fprintf(stderr, "(p=%p/%x n=0x%x/%x) ", pge, pgex->flags & GEXF_JLINE, - nge, ngex->flags & GEXF_JLINE); - if( !((pgex->flags | ngex->flags) & GEXF_JLINE) ) { - if(ISDBG(FCONCISE)) - fprintf(stderr, "(end p=%p n=%p) ", pge, nge); - break; - } - - if(maxdots < ndots+2) { - maxdots += MAXDOTS; - dots = (struct dot_dist *)realloc((void *)dots, sizeof(*dots)*maxdots); - if(dots == NULL) { - fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__); - exit(255); - } - } - if( pgex->flags & GEXF_JLINE ) { - for(i=0; i<2; i++) { - apcv[0][i] = pge->bkwd->fpoints[i][2]; - apcv[1][i] = nge->fpoints[i][2]; - dots[ndots].p[i] = pge->fpoints[i][2]; - } - ndots++; - for(i=0; i<ndots; i++) { - avsd2 = fdotsegdist2(apcv, dots[i].p); - if(avsd2 > CVEPS2) - break; - } - if(i<ndots) { /* failed to join */ - if(ISDBG(FCONCISE)) - fprintf(stderr, "failed to join prev %p ", pge); - ndots--; - pgex->flags &= ~GEXF_JLINE; - } else { - pge = pge->bkwd; - if(pge == nge) { - if(ISDBG(FCONCISE)) - fprintf(stderr, "intersected at prev %p ", pge); - break; /* oops, tried to self-intersect */ - } - } - } else if(ISDBG(FCONCISE)) - fprintf(stderr, "(p=%p) ", pge); - - if( ngex->flags & GEXF_JLINE ) { - for(i=0; i<2; i++) { - apcv[0][i] = pge->fpoints[i][2]; /* pge points before the 1st segment */ - apcv[1][i] = nge->frwd->fpoints[i][2]; - dots[ndots].p[i] = nge->fpoints[i][2]; - } - ndots++; - for(i=0; i<ndots; i++) { - avsd2 = fdotsegdist2(apcv, dots[i].p); - if(avsd2 > CVEPS2) - break; - } - if(i<ndots) { /* failed to join */ - if(ISDBG(FCONCISE)) - fprintf(stderr, "failed to join next %p ", nge->frwd); - ndots--; - ngex->flags &= ~GEXF_JLINE; - } else { - nge = nge->frwd; - } - } else if(ISDBG(FCONCISE)) - fprintf(stderr, "(n=%p) ", nge); - } - - pge = pge->frwd; /* now the limits are pge...nge inclusive */ - if(pge == nge) /* a deeply perversive contour */ - break; - - if(ISDBG(FCONCISE)) { - fprintf(stderr, "\nin %s joined LINE %p-%p from\n", g->name, pge, nge); - dumppaths(g, pge, nge); - } - pge->type = GE_LINE; - for(i=0; i<2; i++) { - pge->fpoints[i][2] = nge->fpoints[i][2]; - } - fnormalizege(pge); - X_CON_F(pge) &= ~GEXF_JLINE; - - ge = pge; - for(ige = pge->frwd; ; ige = pge->frwd) { - if(ige == pge) { - fprintf(stderr, "WARNING: assertion in %s line %d, please report it to the ttf2pt1 project\n", - __FILE__, __LINE__); - free(dots); - return; - } - if(startge == ige) - startge = pge; - free(ige->ext); - freethisge(ige); - if(ige == nge) - break; - } -next2: - ge = ge->frwd; - if(ge == startge) - break; - } - - free(dots); -} - -/* force conciseness: substitute 2 or more curves going in the -** same quadrant with one curve -** in floating point -*/ - -void -fforceconcise( - GLYPH * g -) -{ - - GENTRY *ge, *nge, *endge, *xge; - - assertisfloat(g, "enforcing conciseness"); - - fdelsmall(g, 0.05); - assertpath(g->entries, __FILE__, __LINE__, g->name); - - if(ISDBG(FCONCISE)) - dumppaths(g, NULL, NULL); - - /* collect more information about each gentry and their joints */ - for (ge = g->entries; ge != 0; ge = ge->next) - if (ge->type == GE_CURVE || ge->type == GE_LINE) - fnormalizege(ge); - - for (ge = g->entries; ge != 0; ge = ge->next) - if (ge->type == GE_CURVE || ge->type == GE_LINE) { - alloc_gex_con(ge); - fanalyzege(ge); - } - - /* see what we can do about joining */ - for (ge = g->entries; ge != 0; ge = ge->next) - if (ge->type == GE_CURVE || ge->type == GE_LINE) - fanalyzejoint(ge); - - /* now do the joining */ - for (ge = g->entries; ge != 0; ge = ge->next) - if(ge->type == GE_MOVE) - fconcisecontour(g, ge->next); - - for (ge = g->entries; ge != 0; ge = ge->next) - if (ge->type == GE_CURVE || ge->type == GE_LINE) - free(ge->ext); -} - -void -print_glyph( - int glyphno -) -{ - GLYPH *g; - GENTRY *ge; - int x = 0, y = 0; - int i; - int grp, lastgrp= -1; - - if(ISDBG(FCONCISE) && glyphno == 0) { - fprintf(stderr, "Guessed curves: bad %d/%d good %d/%d\n", - gbadcv, gbadcvdots, ggoodcv, ggoodcvdots); - } - - g = &glyph_list[glyphno]; - - fprintf(pfa_file, "/%s { \n", g->name); - - /* consider widths >MAXLEGALWIDTH as bugs */ - if( g->scaledwidth <= MAXLEGALWIDTH ) { - fprintf(pfa_file, "0 %d hsbw\n", g->scaledwidth); - } else { - fprintf(pfa_file, "0 1000 hsbw\n"); - WARNING_2 fprintf(stderr, "glyph %s: width %d seems to be buggy, set to 1000\n", - g->name, g->scaledwidth); - } - -#if 0 - fprintf(pfa_file, "%% contours: "); - for (i = 0; i < g->ncontours; i++) - fprintf(pfa_file, "%s(%d,%d) ", (g->contours[i].direction == DIR_OUTER ? "out" : "in"), - g->contours[i].xofmin, g->contours[i].ymin); - fprintf(pfa_file, "\n"); - - if (g->rymin < 5000) - fprintf(pfa_file, "%d lower%s\n", g->rymin, (g->flatymin ? "flat" : "curve")); - if (g->rymax > -5000) - fprintf(pfa_file, "%d upper%s\n", g->rymax, (g->flatymax ? "flat" : "curve")); -#endif - - if (g->hstems) - for (i = 0; i < g->nhs; i += 2) { - if (g->hstems[i].flags & ST_3) { - fprintf(pfa_file, "%d %d %d %d %d %d hstem3\n", - g->hstems[i].value, - g->hstems[i + 1].value - g->hstems[i].value, - g->hstems[i + 2].value, - g->hstems[i + 3].value - g->hstems[i + 2].value, - g->hstems[i + 4].value, - g->hstems[i + 5].value - g->hstems[i + 4].value - ); - i += 4; - } else { - fprintf(pfa_file, "%d %d hstem\n", g->hstems[i].value, - g->hstems[i + 1].value - g->hstems[i].value); - } - } - - if (g->vstems) - for (i = 0; i < g->nvs; i += 2) { - if (g->vstems[i].flags & ST_3) { - fprintf(pfa_file, "%d %d %d %d %d %d vstem3\n", - g->vstems[i].value, - g->vstems[i + 1].value - g->vstems[i].value, - g->vstems[i + 2].value, - g->vstems[i + 3].value - g->vstems[i + 2].value, - g->vstems[i + 4].value, - g->vstems[i + 5].value - g->vstems[i + 4].value - ); - i += 4; - } else { - fprintf(pfa_file, "%d %d vstem\n", g->vstems[i].value, - g->vstems[i + 1].value - g->vstems[i].value); - } - } - - for (ge = g->entries; ge != 0; ge = ge->next) { - if(g->nsg>0) { - grp=ge->stemid; - if(grp >= 0 && grp != lastgrp) { - fprintf(pfa_file, "%d 4 callsubr\n", grp+g->firstsubr); - lastgrp=grp; - } - } - - switch (ge->type) { - case GE_MOVE: - if (absolute) - fprintf(pfa_file, "%d %d amoveto\n", ge->ix3, ge->iy3); - else - rmoveto(ge->ix3 - x, ge->iy3 - y); - if (0) - fprintf(stderr, "Glyph %s: print moveto(%d, %d)\n", - g->name, ge->ix3, ge->iy3); - x = ge->ix3; - y = ge->iy3; - break; - case GE_LINE: - if (absolute) - fprintf(pfa_file, "%d %d alineto\n", ge->ix3, ge->iy3); - else - rlineto(ge->ix3 - x, ge->iy3 - y); - x = ge->ix3; - y = ge->iy3; - break; - case GE_CURVE: - if (absolute) - fprintf(pfa_file, "%d %d %d %d %d %d arcurveto\n", - ge->ix1, ge->iy1, ge->ix2, ge->iy2, ge->ix3, ge->iy3); - else - rrcurveto(ge->ix1 - x, ge->iy1 - y, - ge->ix2 - ge->ix1, ge->iy2 - ge->iy1, - ge->ix3 - ge->ix2, ge->iy3 - ge->iy2); - x = ge->ix3; - y = ge->iy3; - break; - case GE_PATH: - closepath(); - break; - default: - WARNING_1 fprintf(stderr, "**** Glyph %s: unknown entry type '%c'\n", - g->name, ge->type); - break; - } - } - - fprintf(pfa_file, "endchar } ND\n"); -} - -/* print the subroutines for this glyph, returns the number of them */ -int -print_glyph_subs( - int glyphno, - int startid /* start numbering subroutines from this id */ -) -{ - GLYPH *g; - int i, grp; - - g = &glyph_list[glyphno]; - - if(!hints || !subhints || g->nsg<1) - return 0; - - g->firstsubr=startid; - -#if 0 - fprintf(pfa_file, "%% %s %d\n", g->name, g->nsg); -#endif - for(grp=0; grp<g->nsg; grp++) { - fprintf(pfa_file, "dup %d {\n", startid++); - for(i= (grp==0)? 0 : g->nsbs[grp-1]; i<g->nsbs[grp]; i++) - fprintf(pfa_file, "\t%d %d %cstem\n", g->sbstems[i].low, - g->sbstems[i].high-g->sbstems[i].low, - g->sbstems[i].isvert ? 'v' : 'h'); - fprintf(pfa_file, "\treturn\n\t} NP\n"); - } - - return g->nsg; -} - -void -print_glyph_metrics( - FILE *afm_file, - int code, - int glyphno -) -{ - GLYPH *g; - - g = &glyph_list[glyphno]; - - if(transform) - fprintf(afm_file, "C %d ; WX %d ; N %s ; B %d %d %d %d ;\n", - code, g->scaledwidth, g->name, - iscale(g->xMin), iscale(g->yMin), iscale(g->xMax), iscale(g->yMax)); - else - fprintf(afm_file, "C %d ; WX %d ; N %s ; B %d %d %d %d ;\n", - code, g->scaledwidth, g->name, - g->xMin, g->yMin, g->xMax, g->yMax); - -} - -void -print_glyph_metrics_ufm( - FILE *ufm_file, - int code, - int glyphno -) -{ - GLYPH *g; - - g = &glyph_list[glyphno]; - - // OAR - added bounding box for Unicode glyphs - fprintf(ufm_file, "U %d ; WX %d ; N %s ; G %d ; B %d %d %d %d ;\n", - code, g->scaledwidth, g->name, glyphno, g->xMin, g->yMin, g->xMax, g->yMax); -} -/* - SB: - An important note about the BlueValues. - - The Adobe documentation says that the maximal width of a Blue zone - is connected to the value of BlueScale, which is by default 0.039625. - The BlueScale value defines, at which point size the overshoot - suppression be disabled. - - The formula for it that is given in the manual is: - - BlueScale=point_size/240, for a 300dpi device - - that makes us wonder what is this 240 standing for. Incidentally - 240=72*1000/300, where 72 is the relation between inches and points, - 1000 is the size of the glyph matrix, and 300dpi is the resolution of - the output device. Knowing that we can recalculate the formula for - the font size in pixels rather than points: - - BlueScale=pixel_size/1000 - - That looks a lot simpler than the original formula, does not it ? - And the limitation about the maximal width of zone also looks - a lot simpler after the transformation: - - max_width < 1000/pixel_size - - that ensures that even at the maximal pixel size when the overshoot - suppression is disabled the zone width will be less than one pixel. - This is important, failure to comply to this limit will result in - really ugly fonts (been there, done that). But knowing the formula - for the pixel width, we see that in fact we can use the maximal width - of 24, not 23 as specified in the manual. - -*/ - -#define MAXBLUEWIDTH (24) - -/* - * Find the indexes of the most frequent values - * in the hystogram, sort them in ascending order, and save which one - * was the best one (if asked). - * Returns the number of values found (may be less than maximal because - * we ignore the zero values) - */ - -#define MAXHYST (2000) /* size of the hystogram */ -#define HYSTBASE 500 - -static int -besthyst( - int *hyst, /* the hystogram */ - int base, /* the base point of the hystogram */ - int *best, /* the array for indexes of best values */ - int nbest, /* its allocated size */ - int width, /* minimal difference between indexes */ - int *bestindp /* returned top point */ -) -{ - unsigned char hused[MAXHYST / 8 + 1]; - int i, max, j, w, last = 0; - int nf = 0; - - width--; - - memset(hused, 0 , sizeof hused); - - max = 1; - for (i = 0; i < nbest && max != 0; i++) { - best[i] = 0; - max = 0; - for (j = 1; j < MAXHYST - 1; j++) { - w = hyst[j]; - - if (w > max && (hused[j>>3] & (1 << (j & 0x07))) == 0) { - best[i] = j; - max = w; - } - } - if (max != 0) { - if (max < last/2) { - /* do not pick the too low values */ - break; - } - for (j = best[i] - width; j <= best[i] + width; j++) { - if (j >= 0 && j < MAXHYST) - hused[j >> 3] |= (1 << (j & 0x07)); - } - last = max; - best[i] -= base; - nf = i + 1; - } - } - - if (bestindp) - *bestindp = best[0]; - - /* sort the indexes in ascending order */ - for (i = 0; i < nf; i++) { - for (j = i + 1; j < nf; j++) - if (best[j] < best[i]) { - w = best[i]; - best[i] = best[j]; - best[j] = w; - } - } - - return nf; -} - -/* - * Find the next best Blue zone in the hystogram. - * Return the weight of the found zone. - */ - -static int -bestblue( - short *zhyst, /* the zones hystogram */ - short *physt, /* the points hystogram */ - short *ozhyst, /* the other zones hystogram */ - int *bluetab /* where to put the found zone */ -) -{ - int i, j, w, max, ind, first, last; - - /* find the highest point in the zones hystogram */ - /* if we have a plateau, take its center */ - /* if we have multiple peaks, take the first one */ - - max = -1; - first = last = -10; - for (i = 0; i <= MAXHYST - MAXBLUEWIDTH; i++) { - w = zhyst[i]; - if (w > max) { - first = last = i; - max = w; - } else if (w == max) { - if (last == i - 1) - last = i; - } - } - ind = (first + last) / 2; - - if (max == 0) /* no zones left */ - return 0; - - /* now we reuse `first' and `last' as inclusive borders of the zone */ - first = ind; - last = ind + (MAXBLUEWIDTH - 1); - - /* our maximal width is far too big, so we try to make it narrower */ - w = max; - j = (w & 1); /* a pseudo-random bit */ - while (1) { - while (physt[first] == 0) - first++; - while (physt[last] == 0) - last--; - if (last - first < (MAXBLUEWIDTH * 2 / 3) || (max - w) * 10 > max) - break; - - if (physt[first] < physt[last] - || physt[first] == physt[last] && j) { - if (physt[first] * 20 > w) /* if weight is >5%, - * stop */ - break; - w -= physt[first]; - first++; - j = 0; - } else { - if (physt[last] * 20 > w) /* if weight is >5%, - * stop */ - break; - w -= physt[last]; - last--; - j = 1; - } - } - - /* save our zone */ - bluetab[0] = first - HYSTBASE; - bluetab[1] = last - HYSTBASE; - - /* invalidate all the zones overlapping with this one */ - /* the constant of 2 is determined by the default value of BlueFuzz */ - for (i = first - (MAXBLUEWIDTH - 1) - 2; i <= last + 2; i++) - if (i >= 0 && i < MAXHYST) { - zhyst[i] = 0; - ozhyst[i] = 0; - } - return w; -} - -/* - * Try to find the Blue Values, bounding box and italic angle - */ - -void -findblues(void) -{ - /* hystograms for upper and lower zones */ - short hystl[MAXHYST]; - short hystu[MAXHYST]; - short zuhyst[MAXHYST]; - short zlhyst[MAXHYST]; - int nchars; - int i, j, k, w, max; - GENTRY *ge; - GLYPH *g; - double ang; - - /* find the lowest and highest points of glyphs */ - /* and by the way build the values for FontBBox */ - /* and build the hystogram for the ItalicAngle */ - - /* re-use hystl for the hystogram of italic angle */ - - bbox[0] = bbox[1] = 5000; - bbox[2] = bbox[3] = -5000; - - for (i = 0; i < MAXHYST; i++) - hystl[i] = 0; - - nchars = 0; - - for (i = 0, g = glyph_list; i < numglyphs; i++, g++) { - if (g->flags & GF_USED) { - nchars++; - - g->rymin = 5000; - g->rymax = -5000; - for (ge = g->entries; ge != 0; ge = ge->next) { - if (ge->type == GE_LINE) { - - j = ge->iy3 - ge->prev->iy3; - k = ge->ix3 - ge->prev->ix3; - if (j > 0) - ang = atan2(-k, j) * 180.0 / M_PI; - else - ang = atan2(k, -j) * 180.0 / M_PI; - - k /= 100; - j /= 100; - if (ang > -45.0 && ang < 45.0) { - /* - * be careful to not overflow - * the counter - */ - hystl[HYSTBASE + (int) (ang * 10.0)] += (k * k + j * j) / 4; - } - if (ge->iy3 == ge->prev->iy3) { - if (ge->iy3 <= g->rymin) { - g->rymin = ge->iy3; - g->flatymin = 1; - } - if (ge->iy3 >= g->rymax) { - g->rymax = ge->iy3; - g->flatymax = 1; - } - } else { - if (ge->iy3 < g->rymin) { - g->rymin = ge->iy3; - g->flatymin = 0; - } - if (ge->iy3 > g->rymax) { - g->rymax = ge->iy3; - g->flatymax = 0; - } - } - } else if (ge->type == GE_CURVE) { - if (ge->iy3 < g->rymin) { - g->rymin = ge->iy3; - g->flatymin = 0; - } - if (ge->iy3 > g->rymax) { - g->rymax = ge->iy3; - g->flatymax = 0; - } - } - if (ge->type == GE_LINE || ge->type == GE_CURVE) { - if (ge->ix3 < bbox[0]) - bbox[0] = ge->ix3; - if (ge->ix3 > bbox[2]) - bbox[2] = ge->ix3; - if (ge->iy3 < bbox[1]) - bbox[1] = ge->iy3; - if (ge->iy3 > bbox[3]) - bbox[3] = ge->iy3; - } - } - } - } - - /* get the most popular angle */ - max = 0; - w = 0; - for (i = 0; i < MAXHYST; i++) { - if (hystl[i] > w) { - w = hystl[i]; - max = i; - } - } - ang = (double) (max - HYSTBASE) / 10.0; - WARNING_2 fprintf(stderr, "Guessed italic angle: %f\n", ang); - if (italic_angle == 0.0) - italic_angle = ang; - - /* build the hystogram of the lower points */ - for (i = 0; i < MAXHYST; i++) - hystl[i] = 0; - - for (i = 0, g = glyph_list; i < numglyphs; i++, g++) { - if ((g->flags & GF_USED) - && g->rymin + HYSTBASE >= 0 && g->rymin < MAXHYST - HYSTBASE) { - hystl[g->rymin + HYSTBASE]++; - } - } - - /* build the hystogram of the upper points */ - for (i = 0; i < MAXHYST; i++) - hystu[i] = 0; - - for (i = 0, g = glyph_list; i < numglyphs; i++, g++) { - if ((g->flags & GF_USED) - && g->rymax + HYSTBASE >= 0 && g->rymax < MAXHYST - HYSTBASE) { - hystu[g->rymax + HYSTBASE]++; - } - } - - /* build the hystogram of all the possible lower zones with max width */ - for (i = 0; i < MAXHYST; i++) - zlhyst[i] = 0; - - for (i = 0; i <= MAXHYST - MAXBLUEWIDTH; i++) { - for (j = 0; j < MAXBLUEWIDTH; j++) - zlhyst[i] += hystl[i + j]; - } - - /* build the hystogram of all the possible upper zones with max width */ - for (i = 0; i < MAXHYST; i++) - zuhyst[i] = 0; - - for (i = 0; i <= MAXHYST - MAXBLUEWIDTH; i++) { - for (j = 0; j < MAXBLUEWIDTH; j++) - zuhyst[i] += hystu[i + j]; - } - - /* find the baseline */ - w = bestblue(zlhyst, hystl, zuhyst, &bluevalues[0]); - if (0) - fprintf(stderr, "BaselineBlue zone %d%% %d...%d\n", w * 100 / nchars, - bluevalues[0], bluevalues[1]); - - if (w == 0) /* no baseline, something weird */ - return; - - /* find the upper zones */ - for (nblues = 2; nblues < 14; nblues += 2) { - w = bestblue(zuhyst, hystu, zlhyst, &bluevalues[nblues]); - - if (0) - fprintf(stderr, "Blue zone %d%% %d...%d\n", w * 100 / nchars, - bluevalues[nblues], bluevalues[nblues+1]); - - if (w * 20 < nchars) - break; /* don't save this zone */ - } - - /* find the lower zones */ - for (notherb = 0; notherb < 10; notherb += 2) { - w = bestblue(zlhyst, hystl, zuhyst, &otherblues[notherb]); - - if (0) - fprintf(stderr, "OtherBlue zone %d%% %d...%d\n", w * 100 / nchars, - otherblues[notherb], otherblues[notherb+1]); - - - if (w * 20 < nchars) - break; /* don't save this zone */ - } - -} - -/* - * Find the actual width of the glyph and modify the - * description to reflect it. Not guaranteed to do - * any good, may make character spacing too wide. - */ - -void -docorrectwidth(void) -{ - int i; - GENTRY *ge; - GLYPH *g; - int xmin, xmax; - int maxwidth, minsp; - - /* enforce this minimal spacing, - * we limit the amount of the enforced spacing to avoid - * spacing the bold wonts too widely - */ - minsp = (stdhw>60 || stdhw<10)? 60 : stdhw; - - for (i = 0, g = glyph_list; i < numglyphs; i++, g++) { - g->oldwidth=g->scaledwidth; /* save the old width, will need for AFM */ - - if (correctwidth && g->flags & GF_USED) { - xmin = 5000; - xmax = -5000; - for (ge = g->entries; ge != 0; ge = ge->next) { - if (ge->type != GE_LINE && ge->type != GE_CURVE) - continue; - - if (ge->ix3 <= xmin) { - xmin = ge->ix3; - } - if (ge->ix3 >= xmax) { - xmax = ge->ix3; - } - } - - maxwidth=xmax+minsp; - if( g->scaledwidth < maxwidth ) { - g->scaledwidth = maxwidth; - WARNING_3 fprintf(stderr, "glyph %s: extended from %d to %d\n", - g->name, g->oldwidth, g->scaledwidth ); - } - } - } - -} - -/* - * Try to find the typical stem widths - */ - -void -stemstatistics(void) -{ -#define MINDIST 10 /* minimal distance between the widths */ - int hyst[MAXHYST+MINDIST*2]; - int best[12]; - int i, j, k, w; - int nchars; - int ns; - STEM *s; - GLYPH *g; - - /* start with typical stem width */ - - nchars=0; - - /* build the hystogram of horizontal stem widths */ - memset(hyst, 0, sizeof hyst); - - for (i = 0, g = glyph_list; i < numglyphs; i++, g++) { - if (g->flags & GF_USED) { - nchars++; - s = g->hstems; - for (j = 0; j < g->nhs; j += 2) { - if ((s[j].flags | s[j + 1].flags) & ST_END) - continue; - w = s[j + 1].value - s[j].value+1; - if(w==20) /* split stems should not be counted */ - continue; - if (w > 0 && w < MAXHYST - 1) { - /* - * handle some fuzz present in - * converted fonts - */ - hyst[w+MINDIST] += MINDIST-1; - for(k=1; k<MINDIST-1; k++) { - hyst[w+MINDIST + k] += MINDIST-1-k; - hyst[w+MINDIST - k] += MINDIST-1-k; - } - } - } - } - } - - /* find 12 most frequent values */ - ns = besthyst(hyst+MINDIST, 0, best, 12, MINDIST, &stdhw); - - /* store data in stemsnaph */ - for (i = 0; i < ns; i++) - stemsnaph[i] = best[i]; - if (ns < 12) - stemsnaph[ns] = 0; - - /* build the hystogram of vertical stem widths */ - memset(hyst, 0, sizeof hyst); - - for (i = 0, g = glyph_list; i < numglyphs; i++, g++) { - if (g->flags & GF_USED) { - s = g->vstems; - for (j = 0; j < g->nvs; j += 2) { - if ((s[j].flags | s[j + 1].flags) & ST_END) - continue; - w = s[j + 1].value - s[j].value+1; - if (w > 0 && w < MAXHYST - 1) { - /* - * handle some fuzz present in - * converted fonts - */ - hyst[w+MINDIST] += MINDIST-1; - for(k=1; k<MINDIST-1; k++) { - hyst[w+MINDIST + k] += MINDIST-1-k; - hyst[w+MINDIST - k] += MINDIST-1-k; - } - } - } - } - } - - /* find 12 most frequent values */ - ns = besthyst(hyst+MINDIST, 0, best, 12, MINDIST, &stdvw); - - /* store data in stemsnaph */ - for (i = 0; i < ns; i++) - stemsnapv[i] = best[i]; - if (ns < 12) - stemsnapv[ns] = 0; - -#undef MINDIST -} - -/* - * SB - * A funny thing: TTF paths are going in reverse direction compared - * to Type1. So after all (because the rest of logic uses TTF - * path directions) we have to reverse the paths. - * - * It was a big headache to discover that. - */ - -/* works on both int and float paths */ - -void -reversepathsfromto( - GENTRY * from, - GENTRY * to -) -{ - GENTRY *ge, *nge, *pge; - GENTRY *cur, *next; - int i, n, ilast[2]; - double flast[2], f; - - for (ge = from; ge != 0 && ge != to; ge = ge->next) { - if(ge->type == GE_LINE || ge->type == GE_CURVE) { - if (ISDBG(REVERSAL)) - fprintf(stderr, "reverse path 0x%x <- 0x%x, 0x%x\n", ge, ge->prev, ge->bkwd); - - /* cut out the path itself */ - pge = ge->prev; /* GE_MOVE */ - if (pge == 0) { - fprintf(stderr, "**! No MOVE before line !!! Fatal. ****\n"); - exit(1); - } - nge = ge->bkwd->next; /* GE_PATH */ - pge->next = nge; - nge->prev = pge; - ge->bkwd->next = 0; /* mark end of chain */ - - /* remember the starting point */ - if(ge->flags & GEF_FLOAT) { - flast[0] = pge->fx3; - flast[1] = pge->fy3; - } else { - ilast[0] = pge->ix3; - ilast[1] = pge->iy3; - } - - /* then reinsert them in backwards order */ - for(cur = ge; cur != 0; cur = next ) { - next = cur->next; /* or addgeafter() will screw it up */ - if(cur->flags & GEF_FLOAT) { - for(i=0; i<2; i++) { - /* reverse the direction of path element */ - f = cur->fpoints[i][0]; - cur->fpoints[i][0] = cur->fpoints[i][1]; - cur->fpoints[i][1] = f; - f = flast[i]; - flast[i] = cur->fpoints[i][2]; - cur->fpoints[i][2] = f; - } - } else { - for(i=0; i<2; i++) { - /* reverse the direction of path element */ - n = cur->ipoints[i][0]; - cur->ipoints[i][0] = cur->ipoints[i][1]; - cur->ipoints[i][1] = n; - n = ilast[i]; - ilast[i] = cur->ipoints[i][2]; - cur->ipoints[i][2] = n; - } - } - addgeafter(pge, cur); - } - - /* restore the starting point */ - if(ge->flags & GEF_FLOAT) { - pge->fx3 = flast[0]; - pge->fy3 = flast[1]; - } else { - pge->ix3 = ilast[0]; - pge->iy3 = ilast[1]; - } - - ge = nge; - } - - } -} - -void -reversepaths( - GLYPH * g -) -{ - reversepathsfromto(g->entries, NULL); -} - -/* add a kerning pair information, scales the value */ - -void -addkernpair( - unsigned id1, - unsigned id2, - int unscval -) -{ - static unsigned char *bits = 0; - static int lastid; - GLYPH *g = &glyph_list[id1]; - int i, n; - struct kern *p; - - if(unscval == 0 || id1 >= numglyphs || id2 >= numglyphs) - return; - - if( (glyph_list[id1].flags & GF_USED)==0 - || (glyph_list[id2].flags & GF_USED)==0 ) - return; - - if(bits == 0) { - bits = calloc( BITMAP_BYTES(numglyphs), 1); - if (bits == NULL) { - fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__); - exit(255); - } - lastid = id1; - } - - if(lastid != id1) { - /* refill the bitmap cache */ - memset(bits, 0,BITMAP_BYTES(numglyphs)); - p = g->kern; - for(i=g->kerncount; i>0; i--) { - n = (p++)->id; - SET_BITMAP(bits, n); - } - lastid = id1; - } - - if(IS_BITMAP(bits, id2)) - return; /* duplicate */ - - if(g->kerncount <= g->kernalloc) { - g->kernalloc += 8; - p = realloc(g->kern, sizeof(struct kern) * g->kernalloc); - if(p == 0) { - fprintf (stderr, "** realloc failed, kerning data will be incomplete\n"); - } - g->kern = p; - } - - SET_BITMAP(bits, id2); - p = &g->kern[g->kerncount]; - p->id = id2; - p->val = iscale(unscval) - (g->scaledwidth - g->oldwidth); - g->kerncount++; - kerning_pairs++; -} - -/* print out the kerning information */ - -void -print_kerning( - FILE *afm_file -) -{ - int i, j, n; - GLYPH *g; - struct kern *p; - - if( kerning_pairs == 0 ) - return; - - fprintf(afm_file, "StartKernData\n"); - fprintf(afm_file, "StartKernPairs %hd\n", kerning_pairs); - - for(i=0; i<numglyphs; i++) { - g = &glyph_list[i]; - if( (g->flags & GF_USED) ==0) - continue; - p = g->kern; - for(j=g->kerncount; j>0; j--, p++) { - fprintf(afm_file, "KPX %s %s %d\n", g->name, - glyph_list[ p->id ].name, p->val ); - } - } - - fprintf(afm_file, "EndKernPairs\n"); - fprintf(afm_file, "EndKernData\n"); -} - - -#if 0 - -/* -** This function is commented out because the information -** collected by it is not used anywhere else yet. Now -** it only collects the directions of contours. And the -** direction of contours gets fixed already in draw_glyf(). -** -*********************************************** -** -** Here we expect that the paths are already closed. -** We also expect that the contours do not intersect -** and that curves doesn't cross any border of quadrant. -** -** Find which contours go inside which and what is -** their proper direction. Then fix the direction -** to make it right. -** -*/ - -#define MAXCONT 1000 - -void -fixcontours( - GLYPH * g -) -{ - CONTOUR cont[MAXCONT]; - short ymax[MAXCONT]; /* the highest point */ - short xofmax[MAXCONT]; /* X-coordinate of any point - * at ymax */ - short ymin[MAXCONT]; /* the lowest point */ - short xofmin[MAXCONT]; /* X-coordinate of any point - * at ymin */ - short count[MAXCONT]; /* count of lines */ - char dir[MAXCONT]; /* in which direction they must go */ - GENTRY *start[MAXCONT], *minptr[MAXCONT], *maxptr[MAXCONT]; - int ncont; - int i; - int dx1, dy1, dx2, dy2; - GENTRY *ge, *nge; - - /* find the contours and their most upper/lower points */ - ncont = 0; - ymax[0] = -5000; - ymin[0] = 5000; - for (ge = g->entries; ge != 0; ge = ge->next) { - if (ge->type == GE_LINE || ge->type == GE_CURVE) { - if (ge->iy3 > ymax[ncont]) { - ymax[ncont] = ge->iy3; - xofmax[ncont] = ge->ix3; - maxptr[ncont] = ge; - } - if (ge->iy3 < ymin[ncont]) { - ymin[ncont] = ge->iy3; - xofmin[ncont] = ge->ix3; - minptr[ncont] = ge; - } - } - if (ge->frwd != ge->next) { - start[ncont++] = ge->frwd; - ymax[ncont] = -5000; - ymin[ncont] = 5000; - } - } - - /* determine the directions of contours */ - for (i = 0; i < ncont; i++) { - ge = minptr[i]; - nge = ge->frwd; - - if (ge->type == GE_CURVE) { - dx1 = ge->ix3 - ge->ix2; - dy1 = ge->iy3 - ge->iy2; - - if (dx1 == 0 && dy1 == 0) { /* a pathological case */ - dx1 = ge->ix3 - ge->ix1; - dy1 = ge->iy3 - ge->iy1; - } - if (dx1 == 0 && dy1 == 0) { /* a more pathological - * case */ - dx1 = ge->ix3 - ge->prev->ix3; - dy1 = ge->iy3 - ge->prev->iy3; - } - } else { - dx1 = ge->ix3 - ge->prev->ix3; - dy1 = ge->iy3 - ge->prev->iy3; - } - if (nge->type == GE_CURVE) { - dx2 = ge->ix3 - nge->ix1; - dy2 = ge->iy3 - nge->iy1; - if (dx1 == 0 && dy1 == 0) { /* a pathological case */ - dx2 = ge->ix3 - nge->ix2; - dy2 = ge->iy3 - nge->iy2; - } - if (dx1 == 0 && dy1 == 0) { /* a more pathological - * case */ - dx2 = ge->ix3 - nge->ix3; - dy2 = ge->iy3 - nge->iy3; - } - } else { - dx2 = ge->ix3 - nge->ix3; - dy2 = ge->iy3 - nge->iy3; - } - - /* compare angles */ - cont[i].direction = DIR_INNER; - if (dy1 == 0) { - if (dx1 < 0) - cont[i].direction = DIR_OUTER; - } else if (dy2 == 0) { - if (dx2 > 0) - cont[i].direction = DIR_OUTER; - } else if (dx2 * dy1 < dx1 * dy2) - cont[i].direction = DIR_OUTER; - - cont[i].ymin = ymin[i]; - cont[i].xofmin = xofmin[i]; - } - - /* save the information that may be needed further */ - g->ncontours = ncont; - if (ncont > 0) { - g->contours = malloc(sizeof(CONTOUR) * ncont); - if (g->contours == 0) { - fprintf(stderr, "***** Memory allocation error *****\n"); - exit(255); - } - memcpy(g->contours, cont, sizeof(CONTOUR) * ncont); - } -} - -#endif - -/* - * - */ - diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/pt1.h b/application/third_party/dompdf/lib/ttf2ufm/src/pt1.h deleted file mode 100644 index a1d3af33..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/pt1.h +++ /dev/null @@ -1,262 +0,0 @@ -/* - * see COPYRIGHT - */ - - -/* glyph entry, one drawing command */ -typedef struct gentry { - /* this list links all GENTRYs of a GLYPH sequentially */ - struct gentry *next; /* double linked list */ - struct gentry *prev; - - /* this list links all GENTRYs of one contour - - * of types GE_LINE and GE_CURVE only - * bkwd is also reused: in the very first entry (normally - * of type GE_MOVE) it points to g->entries - */ - struct gentry *cntr[2]; /* double-linked circular list */ -/* convenience handles */ -#define bkwd cntr[0] -#define frwd cntr[1] - - /* various extended structures used at some stage of transformation */ - void *ext; - - union { - struct { - int val[2][3]; /* integer values */ - } i; - struct { - double val[2][3]; /* floating values */ - } f; - } points; /* absolute values, NOT deltas */ -/* convenience handles */ -#define ipoints points.i.val -#define fpoints points.f.val -#define ixn ipoints[0] -#define iyn ipoints[1] -#define fxn fpoints[0] -#define fyn fpoints[1] -#define ix1 ixn[0] -#define ix2 ixn[1] -#define ix3 ixn[2] -#define iy1 iyn[0] -#define iy2 iyn[1] -#define iy3 iyn[2] -#define fx1 fxn[0] -#define fx2 fxn[1] -#define fx3 fxn[2] -#define fy1 fyn[0] -#define fy2 fyn[1] -#define fy3 fyn[2] - - char flags; -#define GEF_FLOAT 0x02 /* entry contains floating point data */ -#define GEF_LINE 0x04 /* entry looks like a line even if it's a curve */ - - unsigned char dir; /* used to temporarily store the values for - * the directions of the ends of curves */ -/* front end */ -#define CVDIR_FUP 0x02 /* goes over the line connecting the ends */ -#define CVDIR_FEQUAL 0x01 /* coincides with the line connecting the - * ends */ -#define CVDIR_FDOWN 0x00 /* goes under the line connecting the ends */ -#define CVDIR_FRONT 0x0F /* mask of all front directions */ -/* rear end */ -#define CVDIR_RSAME 0x30 /* is the same as for the front end */ -#define CVDIR_RUP 0x20 /* goes over the line connecting the ends */ -#define CVDIR_REQUAL 0x10 /* coincides with the line connecting the - * ends */ -#define CVDIR_RDOWN 0x00 /* goes under the line connecting the ends */ -#define CVDIR_REAR 0xF0 /* mask of all rear directions */ - - signed char stemid; /* connection to the substituted stem group */ - char type; -#define GE_HSBW 'B' -#define GE_MOVE 'M' -#define GE_LINE 'L' -#define GE_CURVE 'C' -#define GE_PATH 'P' - - /* indexes of the points to be used for calculation of the tangents */ - signed char ftg; /* front tangent */ - signed char rtg; /* rear tangent, -1 means "idx 2 of the previous entry" */ -} GENTRY; - -/* stem structure, describes one [hv]stem */ -/* acually, it describes one border of a stem */ -/* the whole stem is a pair of these structures */ - -typedef struct stem { - short value; /* value of X or Y coordinate */ - short origin; /* point of origin for curve stems */ - GENTRY *ge; /* entry that has (value, origin) as its first dot */ - /* also for all the stems the couple (value, origin) - * is used to determine whether a stem is relevant for a - * line, it's considered revelant if this tuple is - * equal to any of the ends of the line. - * ge is also used to resolve ambiguity if there is more than - * one line going through certain pointi, it is used to - * distinguish these lines. - */ - - short from, to; /* values of other coordinate between - * which this stem is valid */ - - short flags; - /* ordering of ST_END, ST_FLAT, ST_ZONE is IMPORTANT for sorting */ -#define ST_END 0x01 /* end of line, lowest priority */ -#define ST_FLAT 0x02 /* stem is defined by a flat line, not a - * curve */ -#define ST_ZONE 0x04 /* pseudo-stem, the limit of a blue zone */ -#define ST_UP 0x08 /* the black area is to up or right from - * value */ -#define ST_3 0x20 /* first stem of [hv]stem3 */ -#define ST_BLUE 0x40 /* stem is in blue zone */ -#define ST_TOPZONE 0x80 /* 1 - top zone, 0 - bottom zone */ -#define ST_VERT 0x100 /* vertical stem (used in substitutions) */ -} STEM; - -#define MAX_STEMS 2000 /* we can't have more stems than path - * elements (or hope so) */ -#define NSTEMGRP 50 /* maximal number of the substituted stem groups */ - -/* structure for economical representation of the - * substituted stems - */ - -typedef struct stembounds { - short low; /* low bound */ - short high; /* high bound */ - char isvert; /* 1 - vertical, 0 - horizontal */ - char already; /* temp. flag: is aleready included */ -} STEMBOUNDS; - -struct kern { - unsigned id; /* ID of the second glyph */ - int val; /* kerning value */ -}; - -typedef struct contour { - short ymin, xofmin; - short inside; /* inside which contour */ - char direction; -#define DIR_OUTER 1 -#define DIR_INNER 0 -} CONTOUR; - -/* becnjcarson: allow glyphs to have multiple character codes. This isn't 100% - perfect, but should be enough for most normal fonts. */ -#define GLYPH_MAX_ENCODINGS (4) - -typedef struct glyph { - int char_no;/* Encoding of glyph */ - int orig_code[GLYPH_MAX_ENCODINGS]; /* code(s) of glyph in the font's original encoding */ - char *name; /* Postscript name of glyph */ - int xMin, yMin, xMax, yMax; /* values from TTF dictionary */ - int lsb; /* left sidebearing */ - int ttf_pathlen; /* total length of TTF paths */ - short width; - short flags; -#define GF_USED 0x0001 /* whether is this glyph used in T1 font */ -#define GF_FLOAT 0x0002 /* thys glyph contains floating point entries */ - - GENTRY *entries;/* doube linked list of entries */ - GENTRY *lastentry; /* the last inserted entry */ - GENTRY *path; /* beggining of the last path */ - int oldwidth; /* actually also scaled */ - int scaledwidth; -#define MAXLEGALWIDTH 10000 - - struct kern *kern; /* kerning data */ - int kerncount; /* number of kerning pairs */ - int kernalloc; /* for how many pairs we have space */ - - STEM *hstems; /* global horiz. and vert. stems */ - STEM *vstems; - int nhs, nvs; /* numbers of stems */ - - STEMBOUNDS *sbstems; /* substituted stems for all the groups */ - short *nsbs; /* indexes of the group ends in the common array */ - int nsg; /* actual number of the stem groups */ - int firstsubr; /* first substistuted stems subroutine number */ - - CONTOUR *contours; /* it is not used now */ - int ncontours; - - int rymin, rymax; /* real values */ - /* do we have flat surfaces on top/bottom */ - char flatymin, flatymax; - -} GLYPH; - -/* description of a dot for calculation of its distance to a curve */ - -struct dot_dist { - double p[2 /*X,Y*/]; /* coordinates of a dot */ - double dist2; /* squared distance from the dot to the curve */ - short seg; /* the closest segment of the curve */ -}; - -extern int stdhw, stdvw; /* dominant stems widths */ -extern int stemsnaph[12], stemsnapv[12]; /* most typical stem width */ - -extern int bluevalues[14]; -extern int nblues; -extern int otherblues[10]; -extern int notherb; -extern int bbox[4]; /* the FontBBox array */ -extern double italic_angle; - -extern GLYPH *glyph_list; -extern int encoding[]; /* inverse of glyph[].char_no */ - -/* prototypes of functions */ -void rmoveto( int dx, int dy); -void rlineto( int dx, int dy); -void rrcurveto( int dx1, int dy1, int dx2, int dy2, int dx3, int dy3); -void assertpath( GENTRY * from, char *file, int line, char *name); - -void fg_rmoveto( GLYPH * g, double x, double y); -void ig_rmoveto( GLYPH * g, int x, int y); -void fg_rlineto( GLYPH * g, double x, double y); -void ig_rlineto( GLYPH * g, int x, int y); -void fg_rrcurveto( GLYPH * g, double x1, double y1, - double x2, double y2, double x3, double y3); -void ig_rrcurveto( GLYPH * g, int x1, int y1, - int x2, int y2, int x3, int y3); -void g_closepath( GLYPH * g); - -void pathtoint( GLYPH *g); -void ffixquadrants( GLYPH *g); -void flattencurves( GLYPH * g); -int checkcv( GENTRY * ge, int dx, int dy); -void iclosepaths( GLYPH * g); -void fclosepaths( GLYPH * g); -void smoothjoints( GLYPH * g); -void buildstems( GLYPH * g); -void fstraighten( GLYPH * g); -void istraighten( GLYPH * g, int zigonly); -void isplitzigzags( GLYPH * g); -void fsplitzigzags( GLYPH * g); -void fforceconcise( GLYPH * g); -void iforceconcise( GLYPH * g); -void reversepathsfromto( GENTRY * from, GENTRY * to); -void reversepaths( GLYPH * g); -void dumppaths( GLYPH * g, GENTRY *start, GENTRY *end); -void print_glyph( int glyphno); -int print_glyph_subs( int glyphno, int startid); -void print_glyph_metrics( FILE *afm_file, int code, int glyphno); -void print_glyph_metrics_ufm( FILE *ufm_file, int code, int glyphno); -void findblues(void); -void stemstatistics(void); -void docorrectwidth(void); -void addkernpair( unsigned id1, unsigned id2, int unscval); -void print_kerning( FILE *afm_file); - -int fcrossrayscv( double curve[4][2], double *max1, double *max2); -int fcrossraysge( GENTRY *ge1, GENTRY *ge2, double *max1, double *max2, - double crossdot[2][2]); -double fdotsegdist2( double seg[2][2], double dot[2]); -double fdotcurvdist2( double curve[4][2], struct dot_dist *dots, int ndots, double *maxp); -void fapproxcurve( double cv[4][2], struct dot_dist *dots, int ndots); diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/runt1asm.c b/application/third_party/dompdf/lib/ttf2ufm/src/runt1asm.c deleted file mode 100644 index 58c4cad8..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/runt1asm.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Wrap-around code to either compile in t1asm or call it externally - * - * Copyright (C) 2000 by Sergey Babkin - * Copyright (C) 2000 by The TTF2PT1 Project - * - * See COPYRIGHT for full license - */ - -#ifdef EXTERNAL_T1ASM - -#include <stdio.h> -#include <errno.h> - -FILE *ifp; -FILE *ofp; - -int -runt1asm( - int pfbflag -) -{ - char *cmd; - int id, od; - int error; - - /* first make a copy in case some of then is already stdin/stdout */ - if(( id = dup(fileno(ifp)) )<0) { - perror("** Re-opening input file for t1asm"); - exit(1); - } - if(( od = dup(fileno(ofp)) )<0) { - perror("** Re-opening output file for t1asm"); - exit(1); - } - fclose(ifp); fclose(ofp); - close(0); - if(( dup(id) )!=0) { - perror("** Re-directing input file for t1asm"); - exit(1); - } - close(1); - if(( dup(od) )!=1) { - perror("** Re-directing output file for t1asm"); - exit(1); - } - close(id); close(od); - - if(pfbflag) - error = execlp("t1asm", "t1asm", "-b", NULL); - else - error = execlp("t1asm", "t1asm", NULL); - - perror("** Calling t1asm"); - - exit(1); -} - -#else -# include "t1asm.c" -#endif diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/scripts/convert b/application/third_party/dompdf/lib/ttf2ufm/src/scripts/convert deleted file mode 100644 index 35b00cfb..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/scripts/convert +++ /dev/null @@ -1,367 +0,0 @@ -#!/bin/sh -# -# Copyright (c) 1998-2000 -# Sergey A. Babkin. All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED -# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -# -# Sergey A. Babkin (sab123@hotmail.com, babkin@bellatlantic.net) -# - -# Use : convert [cfgfile] - -# Convert TTF fonts from source directory to Type1 fonts in the destination -# directory, converted to the specified encodings. Also generate the -# fonts.scale, fonts.dir and fonts.alias files in the destination directory. - -# clean some variables so that they won't be inherited from environment - -ENCDIR= -MAPDIR= - -# path to the configuration file - -if [ $# -eq 1 ] -then - CFGFILE=$1 -else - CFGFILE=`pwd`/convert.cfg -fi - -# these setting would be edited during installation - -TTF2PT1_BINDIR= -TTF2PT1_LIBXDIR= -TTF2PT1_SHAREDIR= - -[ -z "$TTF2PT1_BINDIR" ] && { - TTF2PT1_BINDIR=`pwd`/.. -} -[ -z "$TTF2PT1_LIBXDIR" ] && { - TTF2PT1_LIBXDIR=`pwd`/.. -} -[ -z "$TTF2PT1_SHAREDIR" ] && { - TTF2PT1_SHAREDIR=`pwd`/.. -} - -# directory from where we are started - -RUNDIR=`pwd` - -# paths to various utilities - -T1ASM=$TTF2PT1_LIBXDIR/t1asm -[ -f $T1ASM -a -x $T1ASM ] || { - # if it's not in libxdir, use whatever t1asm the system provides - T1ASM=t1asm -} -TTF2PT1=$TTF2PT1_BINDIR/ttf2pt1 -TRANS=$TTF2PT1_SHAREDIR/scripts/trans -T1FDIR=$TTF2PT1_SHAREDIR/scripts/t1fdir -FORCEISO=$TTF2PT1_SHAREDIR/scripts/forceiso -X2GS=$TTF2PT1_SHAREDIR/scripts/x2gs -SUFFIX="pfa" - -MYSELF=convert - -# include the configuration - -if [ -r $CFGFILE ] -then { - . $CFGFILE -} else { - echo " -Can't find the configuration file - $CFGFILE -Please look at the sample file convert.cfg.sample, -copy it to convert.cfg and modify for -you actual configuration." >&2 - exit 1 -} fi - -# path to the directory with descriptions of encodings -[ -z "$ENCDIR" ] && { - ENCDIR=$TTF2PT1_SHAREDIR/encodings -} - -# directory with the external Unicode maps -[ -z "$MAPDIR" ] && { - MAPDIR=$TTF2PT1_SHAREDIR/maps -} - -LOG=$DSTDIR/convert.log - -# configure the ttf2pt1 options from our options - -# artefact of backwards-compatibility with .cfg -[ -z "$CORRECTWIDTH" -a YES != "$DONTCORRECTWIDTH" ] && { - TTF2PT1="$TTF2PT1 -OW" -} -[ YES = "$CORRECTWIDTH" ] && { - TTF2PT1="$TTF2PT1 -OW" -} - -[ YES != "$HINTSUBST" ] && { - TTF2PT1="$TTF2PT1 -Ou" # meaning changed past 3.22 -} - -[ YES = "$ALLGLYPHS" -a YES = "$ENFORCEISO" ] && { - echo "$MYSELF: options ALLGLYPHS and ENFORCEISO are mutually exclusive" >&2 - exit 1 -} - -[ YES = "$ALLGLYPHS" ] && { - TTF2PT1="$TTF2PT1 -a" -} - -[ YES = "$GENUID" ] && { - TTF2PT1="$TTF2PT1 -uA" -} - -[ YES != "$ENFORCEISO" ] && { - FORCEISO=cat -} - -[ YES = "$CREATEPFB" ] && { - T1ASM="$T1ASM -b" - SUFFIX="pfb" -} - -# parse the information about the source files - -eval "`echo \"$SRCDIRS\" | awk ' - BEGIN { n=0; } - /^ *$/ { next; } - { - if(n>9) { - printf(\"echo \\\"Only 9 encodings are supported at once!\\\" >&2\n\"); - printf(\"exit 1\\n\"); - } else { - printf(\"SRCDIR%d=%s\n\",n,$1); - printf(\"SRCLANG%d=%s\n\",n,$2); - printf(\"SRCENC%d=%s\n\",n,$3); - printf(\"SRCMAP%d=%s\n\",n,$4); - n++; - } - }'`" - -# check whether we have the directories - -mkdir $DSTDIR 2>/dev/null >/dev/null -[ -d $DSTDIR -a -r $DSTDIR -a -w $DSTDIR -a -x $DSTDIR ] || { - echo "$MYSELF: can't access the directory $DSTDIR" >&2 - exit 1 -} - -# go to our destination directory - -cd $DSTDIR || { - echo "$MYSELF: can't chdir to $DSTDIR" >&2 - exit 1 -} - -rm -f ./* 2>/dev/null ->$LOG - -for dirno in 0 1 2 3 4 5 6 7 8 9 -do { - - SRCDIR=`eval "echo \\\$SRCDIR$dirno"` - SRCLANG=`eval "echo \\\$SRCLANG$dirno"` - SRCENC=`eval "echo \\\$SRCENC$dirno"` - SRCMAP=`eval "echo \\\$SRCMAP$dirno"` - DSTENC=`eval "echo \\\$DSTENC$SRCLANG"` - - echo $SRCDIR - echo $SRCENC - - [ -z "$SRCDIR" ] && break; - - [ "`ls $SRCDIR/*.[tT][tT][fF] 2>/dev/null |wc -l`" -gt 0 ] || { - echo "$MYSELF: no TTF files in $SRCDIR" >&2 - exit 1 - } - - # check whether we have the encoding tables - - [ -n "$SRCENC" ] || { - echo "$MYSELF: you must specify some source encoding" >&2 - exit 1 - } - - [ unknown = "$SRCLANG" -o -n "$DSTENC" ] || { - echo "$MYSELF: you must specify some destination encodings" >&2 - exit 1 - } - - # handle aliases of the destination encodings - - XDSTENC= - DSTALIAS= - - [ -r $ENCDIR/$SRCLANG/encodings.alias ] && { - for i in $DSTENC - do { - TO=`awk '$1=="'$i'" { print $2; }' <$ENCDIR/$SRCLANG/encodings.alias` - if [ -n "$TO" ] - then { - [ -f $ENCDIR/$SRCLANG/$i.tbl -a -r $ENCDIR/$SRCLANG/$i.tbl ] && { - echo "WARNING: $SRCLANG encoding $i found as both table and alias" >&2 - echo "WARNING: The alias takes precedence" >&2 - } - DSTALIAS="$TO $i -$DSTALIAS" - XDSTENC="$TO -$XDSTENC" - } else { - XDSTENC="$i -$XDSTENC" - } fi - } done - DSTENC=`echo "$XDSTENC" | sort -u | tr ' -' ' '` - } - - [ unknown != "$SRCLANG" ] && { - for i in $SRCENC $DSTENC - do { - [ -f $ENCDIR/$SRCLANG/$i.tbl -a -r $ENCDIR/$SRCLANG/$i.tbl ] || { - echo "$MYSELF: can't read $ENCDIR/$SRCLANG/$i.tbl" >&2 - exit 1 - } - } done - } - - # OK convert the files - - for file in $SRCDIR/*.[tT][tT][fF] - do { - name=`echo $file | tr A-Z a-z` - name=`basename $name .ttf` - - echo "Converting $name" - - # generate the assembler code - - echo "******* $name -> t1a ************" >>$LOG - - if [ -n "$SRCMAP" ] - then { - $TTF2PT1 -L $MAPDIR/$SRCMAP $file ./$name.$SRCENC 2>>$LOG - } else { - $TTF2PT1 -l $SRCLANG $file ./$name.$SRCENC 2>>$LOG - } fi - - [ -s ./$name.$SRCENC.t1a ] || { - echo "$MYSELF: can't generate Type1 assembler code for $name" >&2 - continue; - } - - [ -s ./$name.$SRCENC.afm ] || { - echo "$MYSELF: can't generate AFM metrics file for $name" >&2 - continue; - } - - mv ./$name.$SRCENC.afm ./$name.$SRCENC.xafm - - psname=`$T1FDIR -g $FOUNDRY " " -f ./$name.$SRCENC.t1a \ - | awk '{print substr($1,2);}'` - - # now for each destination encoding generate a .pfa/b file - # and record for fonts.scale - - if [ unknown != "$SRCLANG" ] - then { - for enc in $DSTENC - do { - echo "******* $name -> $enc ************" >>$LOG - - sed 's|^\/FontName.*$|/FontName /'$psname$enc' def|' <./$name.$SRCENC.t1a \ - | $TRANS $ENCDIR/$SRCLANG/$SRCENC.tbl $ENCDIR/$SRCLANG/$enc.tbl \ - | $FORCEISO | $T1ASM >./$name.$enc.$SUFFIX - [ -s ./$name.$enc.$SUFFIX ] || { - echo "$MYSELF: can't convert/assemble Type1 file for $name.$enc" >&2 - continue; - } - - sed 's|^FontName.*$|FontName '$psname$enc'|' <./$name.$SRCENC.xafm \ - | $TRANS $ENCDIR/$SRCLANG/$SRCENC.tbl $ENCDIR/$SRCLANG/$enc.tbl \ - | uniq | $FORCEISO >./$name.$enc.afm - [ -s ./$name.$enc.afm ] || { - echo "$MYSELF: can't convert AFM file for $name.$enc" >&2 - } - - aliases=`echo "$DSTALIAS" | grep "^$enc" | cut -d\ -f2` - echo "******* aliases: $aliases" >>$LOG - - $T1FDIR -d fonts.ttf fonts.alias $FOUNDRY $enc $aliases -f ./$name.$enc.$SUFFIX - echo "/$psname$enc ($name.$enc.$SUFFIX) ;" >>Fontmap.ttf - } done - } else { - enc="$SRCENC" - echo "******* $name -> $enc ************" >>$LOG - - sed 's|^\/FontName.*$|/FontName /'$psname$enc' def|' <./$name.$SRCENC.t1a \ - | $FORCEISO | $T1ASM >./$name.$enc.$SUFFIX - [ -s ./$name.$enc.$SUFFIX ] || { - echo "$MYSELF: can't convert/assemble Type1 file for $name.$enc" >&2 - continue; - } - - sed 's|^FontName.*$|FontName '$psname$enc'|' <./$name.$SRCENC.xafm \ - | uniq | $FORCEISO >./$name.$enc.afm - [ -s ./$name.$enc.afm ] || { - echo "$MYSELF: can't convert AFM file for $name.$enc" >&2 - } - - $T1FDIR -d fonts.ttf fonts.alias $FOUNDRY $enc -f ./$name.$enc.$SUFFIX - echo "/$psname$enc ($name.$enc.$SUFFIX) ;" >>Fontmap.ttf - } fi - - [ YES = "$REMOVET1A" ] && { - rm -f ./$name.$SRCENC.t1a - rm -f ./$name.$SRCENC.xafm - } - - } done -} done - -wc -l <fonts.ttf >fonts.scale -cat fonts.ttf >>fonts.scale -mkfontdir - -[ YES = "$GENUID" ] && { - echo "Checking for duplicate UniqueIDs..." - for id in `find . -name "*.$SUFFIX" -exec grep UniqueID {} \; \ - | cut -d" " -f2 | sort | uniq -d` - do { - echo "Warning: duplicate UniqueID $id in files:" | tee -a $LOG - find . -name "*.$SUFFIX" -exec grep -l "UniqueID $id " {} \; 2>&1 | tee -a $LOG - } done -} - -[ -n "$GSDIR" ] || { - echo "$MYSELF: The Ghostscript base directory is not specified.\n" >&2 - echo "$MYSELF: Installation of the Ghostscript fonts is deferred.\n" >&2 - echo "$MYSELF: You can do it later by running x2gs\n" >&2 - exit 0 -} - -echo "Installing the Ghostscript fonts" -cd $RUNDIR -$X2GS $CFGFILE || { - echo "$MYSELF: Installation of the Ghostscript fonts has failed.\n" >&2 - echo "$MYSELF: You can correct the problem and run x2gs to repeat\n" >&2 - exit 0 -} diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/scripts/convert.cfg.sample b/application/third_party/dompdf/lib/ttf2ufm/src/scripts/convert.cfg.sample deleted file mode 100644 index 4adf8e0d..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/scripts/convert.cfg.sample +++ /dev/null @@ -1,192 +0,0 @@ -#!/bin/sh -# -# Copyright (c) 1998, 1999 -# Sergey A. Babkin. All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED -# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -# -# Sergey A. Babkin (sab123@hotmail.com, babkin@bellatlantic.net) -# - -# Configuration file for the conversion script. -# Convert TTF fonts from source directory to Type1 fonts in the destination -# directory, converted to the specified encodings. Also generate the -# fonts.scale, fonts.dir and fonts.alias files in the destination -# directory. - -# This file is an example of configuration. It contains -# the examples of settings for all the supported languages. -# Please check the settings and change them for -# your needs. - -# The directories with source TTF files. -# The lines are formatted in 3 columns: -# - directory path -# - language name -# - encoding of the fonts in this directory -# - optional Unicode map file name -# There should be a separate directory for each input encoding. -# No more than 10 encodings are supported now for -# one conversion. -# -# If the Unicode map file name is specified then this -# external map file will be used to encode the resulting -# font. Otherwise the built-in table for this language -# will be used. If you have some special encoding map that -# does not conform to any of the defined languages, set the -# language name to 'unknown' and encoding name to whatever -# you want to see in the X11 logical font description. -# -# NOTES: -# For Russian, Bulgarian and English (as a subset of -# Western) languages you may pile together the Unicode -# fonts and the fonts in the Windows encoding into the same -# directory, they will be sorted out automatically. For -# the Russian and Bulgarian Unicode fonts set the -# source encoding to ibm-1251. -# -# For Turkish, Baltic, Central European and other Western -# European languages the resulting fonts will be in -# a proper iso8859 encoding only if the source fonts -# are in Unicode. -# -# AdobeStd encoding will work only -# for the source font in Unicode encoding which -# either have proper character names or map the -# Adobe character extensions to the expected codes -# (or both). -# -# The external maps work only if the source fonts -# are in Unicode, otherwise the original font's -# encoding will be preserved. -# -# Better don't use the map adobe-standard-encoding.map, -# unless you really need it, it's very incomplete. -# -# The map planes are not supported in the scripts yet. - -SRCDIRS=" -/SOME_DIR_WITH_cyrillic_windows_TTF_FONTS cyrillic ibm-1251 -/SOME_DIR_WITH_cyrillic_koi_TTF_FONTS cyrillic koi8-r -/SOME_DIR_WITH_unicode_TTF_FONTS latin4 iso8859-4 -/SOME_DIR_WITH_unicode_TTF_FONTS latin5 iso8859-9 -/SOME_DIR_WITH_unicode_TTF_FONTS latin2 iso8859-2 -/SOME_DIR_WITH_western_TTF_FONTS latin1 iso8859-1 -/SOME_DIR_WITH_unicode_TTF_FONTS adobestd adobe-std -/SOME_DIR_WITH_weird_unicode_TTF_FONTS adobestd adobe-std adobe-standard-encoding.map -/SOME_DIR_WITH_unicode_TTF_FONTS unknown my-special some-very-special.map -" - -# the directory for converted X11 fonts -DSTDIR=/usr/X11R6/lib/X11/fonts/fromttf - -# The base directory of Ghostscript; -# set it to empty space if you don't want the Ghostscript fonts installed. -# For some systems the directory is /usr/share/ghostscript. -GSDIR=/usr/local/share/ghostscript - -# The font directory of Ghostscript; -# should work for all the versions of Ghostscript. Except (as always) the one -# packaged with Red Hat Linux 6.0. For RH6.0 it should be set to either -# /usr/share/fonts/default/ghostscript or /usr/share/fonts/default/Type1. -GSFONTDIR=$GSDIR/fonts - -# The configuration directory of Ghostscript where the Fontmap file is stored; -# the example is for Ghostscript 6.0, change for the version you actually -# have. This directory is used only to reach the Fontmap file, so if your -# installation stores the Fontmap files in the same directory as fonts -# (like Debian Linux does - isn't Linux wonderful in its differences?) -# then set it to the same value as GSFONTDIR. -GSCONFDIR=$GSDIR/6.0 - -# The encodings of generated files by languages -# (see the whole list of possible encodings for each -# language in the directories encoding/<language> ) -# -# Here prefer windows-1251 over ibm-1251: it aliases -# to the same thing but is the name expected by -# Netscape Navigator. For the same reason prefer -# cp-866 over ibm-866. - -DSTENCcyrillic="koi8-r windows-1251 iso8859-1" -DSTENClatin1="iso8859-1" -DSTENClatin2="iso8859-2" -DSTENClatin4="iso8859-4" -DSTENClatin5="iso8859-9" -DSTENCadobestd="adobe-std" - -# name of foundry for generated fonts -# (for HP-UX or if you just want to use an -# honest name change to "misc") -FOUNDRY=fromttf - -# If you want to use non-standard directories with encoding -# maps and tables then set these values - -MAPDIR= -ENCDIR= - -# Options: -# set the value to YES to enable, NO (or anything else) to disable - -# CORRECTWIDTH - use the option "-w" of converter. Set this -# option to NO if your fonts are well-designed. At least some -# freeware fonts have the width metrics broken and the letters -# look smashed into each other. If this option is set to "YES" -# the converter tries to correct this defect but this may have slight -# side effects on the well-designed fonts: the characters that -# are designed to be close to each other will get wider spacing. -# REMOVET1A - remove the un-encoded .t1a files after they are converted -# and assembled if this option set to YES -# INSTALLFONTMAP - if set to YES install the entries for the converted -# fonts right into the Ghostscript Fontmap file. Otherwise just -# symlink the font files and copy Fontmap.ttf to the Ghostscript -# directories. -# HINTSUBST - enable the hint substitution (option "-H" of -# converter). You may want to compare the looks of the fonts with and -# without this option and decide what is better (see the discussion in -# the README file). If the fonts with this option set to YES look -# completely empty in X11 then set this option to NO or install -# the supplied patches. -# ENFORCEISO - try to disguise the character names according to -# the ISOLatin1 encoding table. Set it to YES if some program -# expects strictly the ISO names but the fonts have different -# character names (this is not the case for X11 any more). -# Options ENFORCEISO and ALLGLYPHS can't be both set to YES. -# ALLGLYPHS - include all the glyphs (characters) from the source -# fonts into the resulting fonts, even if those are not -# included into the encoding tables. If the supplied X11 -# patches are not installed this may cause font size overflow -# in X11. So if you are not sure better leave it as NO. -# For more details see the discussion of the option "-a". -# GENUID - automatically generate UniqueID for all the fonts. -# Setting it to YES may be useful only for the fonts to -# be loaded the fonts into a printer with hard disk. Be -# advised that although unlikely the generated UniqueIDs -# for two fonts may coincide, then the consequences will -# be unpredictable. -# CREATEPFB - if set to YES create .pfb font files, otherwise -# .pfa font files. The .pfb files take somewhat less disk -# space but contain 8-bit binary data. - -CORRECTWIDTH=YES -REMOVET1A=YES -INSTALLFONTMAP=YES -HINTSUBST=NO -ENFORCEISO=NO -ALLGLYPHS=NO -GENUID=NO -CREATEPFB=YES - -# End of the configuration file diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/scripts/forceiso b/application/third_party/dompdf/lib/ttf2ufm/src/scripts/forceiso deleted file mode 100644 index 34f925e8..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/scripts/forceiso +++ /dev/null @@ -1,450 +0,0 @@ -#!/usr/bin/perl -# -# Copyright (c) 1998 -# Sergey A. Babkin. All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED -# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -# -# Sergey A. Babkin (sab123@hotmail.com, babkin@bellatlantic.net) -# - -# -# Force the font to use the encoding as close to ISO Latin-1 as possible -# -# Use: -# forceiso [format] <file1.t1a >file2.t1a -# where format is a printf-type format used to select names for the -# glyphs without standard Latin-1 names. It must expect one argument, -# the character code. The default format is "_%d". - -%latin1=( - 0, "", - 1, "", - 2, "", - 3, "", - 4, "", - 5, "", - 6, "", - 7, "", - 8, "", - 9, "", - 10, "", - 11, "", - 12, "", - 13, "", - 14, "", - 15, "", - 16, "", - 17, "", - 18, "", - 19, "", - 20, "", - 21, "", - 22, "", - 23, "", - 24, "", - 25, "", - 26, "", - 27, "", - 28, "", - 29, "", - 30, "", - 31, "", - 32, "space", - 33, "exclam", - 34, "quotedbl", - 35, "numbersign", - 36, "dollar", - 37, "percent", - 38, "ampersand", - 39, "quoteright", - 40, "parenleft", - 41, "parenright", - 42, "asterisk", - 43, "plus", - 44, "comma", - 45, "hyphen", - 46, "period", - 47, "slash", - 48, "zero", - 49, "one", - 50, "two", - 51, "three", - 52, "four", - 53, "five", - 54, "six", - 55, "seven", - 56, "eight", - 57, "nine", - 58, "colon", - 59, "semicolon", - 60, "less", - 61, "equal", - 62, "greater", - 63, "question", - 64, "at", - 65, "A", - 66, "B", - 67, "C", - 68, "D", - 69, "E", - 70, "F", - 71, "G", - 72, "H", - 73, "I", - 74, "J", - 75, "K", - 76, "L", - 77, "M", - 78, "N", - 79, "O", - 80, "P", - 81, "Q", - 82, "R", - 83, "S", - 84, "T", - 85, "U", - 86, "V", - 87, "W", - 88, "X", - 89, "Y", - 90, "Z", - 91, "bracketleft", - 92, "backslash", - 93, "bracketright", - 94, "asciicircum", - 95, "underscore", - 96, "grave", - 97, "a", - 98, "b", - 99, "c", - 100, "d", - 101, "e", - 102, "f", - 103, "g", - 104, "h", - 105, "i", - 106, "j", - 107, "k", - 108, "l", - 109, "m", - 110, "n", - 111, "o", - 112, "p", - 113, "q", - 114, "r", - 115, "s", - 116, "t", - 117, "u", - 118, "v", - 119, "w", - 120, "x", - 121, "y", - 122, "z", - 123, "braceleft", - 124, "bar", - 125, "braceright", - 126, "asciitilde", - 127, "", - 128, "", - 129, "", - 130, "", - 131, "", - 132, "", - 133, "", - 134, "", - 135, "", - 136, "", - 137, "", - 138, "", - 139, "", - 140, "", - 141, "", - 142, "", - 143, "", - 144, "", - 145, "", - 146, "", - 147, "", - 148, "", - 149, "", - 150, "", - 151, "", - 152, "", - 153, "", - 154, "", - 155, "", - 156, "", - 157, "", - 158, "", - 159, "", - 160, "", - 161, "exclamdown", - 162, "cent", - 163, "sterling", - 164, "currency", - 165, "yen", - 166, "brokenbar", - 167, "section", - 168, "dieresis", - 169, "copyright", - 170, "ordfeminine", - 171, "guillemotleft", - 172, "logicalnot", - 173, "minus", - 174, "registered", - 175, "macron", - 176, "degree", - 177, "plusminus", - 178, "twosuperior", - 179, "threesuperior", - 180, "acute", - 181, "mu", - 182, "paragraph", - 183, "periodcentered", - 184, "cedilla", - 185, "onesuperior", - 186, "ordmasculine", - 187, "guillemotright", - 188, "onequarter", - 189, "onehalf", - 190, "threequarters", - 191, "questiondown", - 192, "Agrave", - 193, "Aacute", - 194, "Acircumflex", - 195, "Atilde", - 196, "Adieresis", - 197, "Aring", - 198, "AE", - 199, "Ccedilla", - 200, "Egrave", - 201, "Eacute", - 202, "Ecircumflex", - 203, "Edieresis", - 204, "Igrave", - 205, "Iacute", - 206, "Icircumflex", - 207, "Idieresis", - 208, "Eth", - 209, "Ntilde", - 210, "Ograve", - 211, "Oacute", - 212, "Ocircumflex", - 213, "Otilde", - 214, "Odieresis", - 215, "multiply", - 216, "Oslash", - 217, "Ugrave", - 218, "Uacute", - 219, "Ucircumflex", - 220, "Udieresis", - 221, "Yacute", - 222, "Thorn", - 223, "germandbls", - 224, "agrave", - 225, "aacute", - 226, "acircumflex", - 227, "atilde", - 228, "adieresis", - 229, "aring", - 230, "ae", - 231, "ccedilla", - 232, "egrave", - 233, "eacute", - 234, "ecircumflex", - 235, "edieresis", - 236, "igrave", - 237, "iacute", - 238, "icircumflex", - 239, "idieresis", - 240, "eth", - 241, "ntilde", - 242, "ograve", - 243, "oacute", - 244, "ocircumflex", - 245, "otilde", - 246, "odieresis", - 247, "divide", - 248, "oslash", - 249, "ugrave", - 250, "uacute", - 251, "ucircumflex", - 252, "udieresis", - 253, "yacute", - 254, "thorn", - 255, "ydieresis" -); - -# how to treat the unknown characters -$unk = "_%d"; - -if($#ARGV >= 0) { - $unk = $ARGV[0]; -} - -# fill in the unnamed characters -if( sprintf($unk, 0) eq sprintf($unk, 1) ) { - die "The format for unnamed characters must not be a constant" -} -for($i=0; $i < 256; $i++) { - if($latin1{$i} eq "") { - $latin1{$i} = sprintf($unk, $i); - } -} - -while(<STDIN>) { - print $_; - if(/^\/Encoding\s+.*\s+array/) { - $fontfile=1; - last; - } - if(/^StartCharMetrics\s+/) { - $fontfile=0; - last; - } -} - -$ndups=0; - -if($fontfile) { # .t1a file - while(<STDIN>) { - if($_ !~ /^dup\s+(\d+)\s+\/(\S+)\s+put/) { - print $_; - last; - } - $code=$1+0; - $name=$2; - if($name eq ".notdef") { - print $_; - } else { - printf("dup %d /%s put\n",$code,$latin1{$code}); - if($trans{$name}) { # two or more references to the same glyph - $ndups++; - #printf(STDERR "forceiso: %d dups\n", $ndups); - if($copies{$name} eq "") { - $copies{$name} = $latin1{$code}; - } else { - $copies{$name} .= "|" . $latin1{$code}; - } - } else { - $trans{$name}=$latin1{$code}; - } - } - - } - - while(<STDIN>) { - if( /\/CharStrings\s+(\d+)\s/) { - $nchars=$1+$ndups; - #printf(STDERR "forceiso: %d dups %d chars\n", $ndups, $nchars); - $_ =~ s|/CharStrings\s+\d+\s|/CharStrings $nchars |; - print $_; - last; - } - print $_; - } - - while(<STDIN>) { - if(/^\/(\S+)/) { - $name=$1; - $to=$trans{$name}; - - $header=$_; - $body=""; - - if($to ne "") { - $_ =~ s/^\/\S+/\/$to/; - } - print $_; - } elsif(/endchar/) { - print $_; - if($copies{$name}) { - for $to (split(/\|/,$copies{$name})) { - $header =~ s/^\/\S+/\/$to/; - print($header, $body, $_); - } - } - } else { - print $_; - $body .= $_; - } - } -} else { # .afm file - while(<STDIN>) { - if($_ !~ /^C\s+(\d+)(\s*;.*N\s+)(\S+)(\s*;.*)\n/) { - print $_; - last; - } - $code=$1+0; - $name=$3; - $part2=$2; - $part4=$4; - if($name eq ".notdef") { - print $_; - } else { - printf("C %d%s%s%s\n",$code,$part2,$latin1{$code},$part4); - if($copies{$name} eq "") { - $copies{$name} = $latin1{$code}; - } else { - $copies{$name} .= "|" . $latin1{$code}; - $ndups++; - #printf(STDERR "forceiso: %d dups\n", $ndups); - } - } - - } - - while(<STDIN>) { - if(/^StartKernPairs\s+(\d+)/) { - last; - } - print $_; - } - - $npairs=0; - $kps=""; - while(<STDIN>) { - if(/^KPX\s+(\S+)\s+(\S+)\s+(.*)\n/) { - $name1=$1; - $name2=$2; - $metric=$3; - - $cp1=$copies{$name1}; - if($cp1 eq "") { - $cp1=$name1; - } - - $cp2=$copies{$name2}; - if($cp2 eq "") { - $cp2=$name2; - } - - for $to1 (split(/\|/,$cp1)) { - for $to2 (split(/\|/,$cp2)) { - $kps .= sprintf("KPX %s %s %s\n", $to1, $to2, $metric); - $npairs++; - } - } - } else { - if($npairs!=0) { - printf("StartKernPairs %d\n", $npairs); - printf("%s", $kps); - $npairs=0; - $kps=""; - } - print $_; - } - } -} diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/scripts/frommap b/application/third_party/dompdf/lib/ttf2ufm/src/scripts/frommap deleted file mode 100644 index f32280c2..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/scripts/frommap +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/perl -# -# A script to convert a Unicode character map to -# the C code -# - -sub fromhex -{ - return eval "0x".$_[0]; -} - -$inmap=0; - -while(<>) -{ - if(/^CHARMAP/) { - $inmap=1; - } elsif(/^END CHARMAP/) { - $inmap=0; - } elsif($inmap - && /^\s*\S+\s+\/x([0-9a-fA-F][0-9a-fA-F])\s+\<U([0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])/) { - $map[fromhex($1)]=fromhex($2); - } -} diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/scripts/html2man b/application/third_party/dompdf/lib/ttf2ufm/src/scripts/html2man deleted file mode 100644 index 072dc393..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/scripts/html2man +++ /dev/null @@ -1,231 +0,0 @@ -#!/usr/bin/perl -# -# See COPYRIGHT -# -# Script to generate a pod file from an html source (the same one as for text files too) -# and later this pod file it passed through pod2man -# -# Use: -# html2man [ <man-dir> [<version-dir>] ] <file.html -# -# <Man-dir> is the directory where the man pages will be created -# (current directory by default). If a file name is given instead of -# directory then the directory of that file is used. -# <Version-dir> is the directory containing the ttf2pt1 files version.h -# and CHANGES.html which are used to generate the release name and date -# for the man page (by default looks in current directory and then in up to -# 5 ancestor directories). -# If the version files can not be found then the release defaults to -# "current" and the date defaults to today. -# -# Special formatting in the html file is: -# All controls are hidden within HTML comments that must occupy a whole separate line -# Such a line looks like: -# <!-- =<html2man_directive> <arguments> --> -# <!-- ==<pod_directive> <arguments> --> -# Any sort of directive must be followed by a space. The pod directives are -# automatically surrounded by empty lines in the output file. -# The html2man directives are: -# -# <!-- =defdoc <docid> <file> <section> --> -# Define a man page. Multiple man pages can be defined in the same HTML -# file. <Docid> is a short name by which this man page will be referred in the -# other directives. <File> is the name of the man page, and <section> is the -# section of the manual (do not confuse with sections within a man page). -# -# <!-- =section <docid> <page_section_name> --> -# All the text following this directive is copied (with translation) -# into the specified section of the specified man page. The sections -# may appear in arbitrary order, they will be rearranged to the standard -# order before output. Only standard section names are permitted (see @stdsect -# below). The pod directives which occur outside of man sections are ignored, -# just like the common text. The translation of HTML tags is: -# -# <br> - to paragraph break -# <b> - to B<> -# <i> - to I<> -# <tt> - to C<> -# <a href> - to F<> -# <ul>, <li>, </ul> - to =over 2, =item *, =back -# &nbsp;, &amp;, &lt;, &gt - to their symbols, appropriately encoded -# -# The rest of HTML tags is removed -# -# If the same section is started more than once, the text from the -# second appearance will be added to the first, etc. -# -# <!-- =stop --> -# Stop copying text to the man page. -# -# <!-- =cont --> -# Continue copying text to the man page, same section as before. -# -# <!-- =text <text> --> -# Insert this <text> into the man page (works only when copying is enabled). -# Characters &lt;, &gt;, &amp; are converted as usual. - -@mons = qw(January February March April May June July August September October November December); - -$dir = $ARGV[0]; -$maindir = $ARGV[1]; - -if($dir eq "") { - $dir = "."; -} elsif( ! -d $dir ) { - if( ! ($dir =~ s|\/[^/]*$||) ) { - $dir = "."; - } -} -if($maindir eq "") { - $maindir = "."; - for($i=0; $i<5; $i++) { - if(-f "$maindir/version.h") { - last; - } - $maindir = "../$maindir"; - } -} - -if( open(VERFILE, "<$maindir/version.h") ) { - while(<VERFILE>) { - if( /^\s*\#define\s+TTF2PT1_VERSION\s+\"(.*)\"/ ) { - $release = "version $1"; - } - } - close(VERFILE); - if( $release =~ /SNAP-([0-9][0-9])([0-9][0-9])([0-9][0-9])/ ) { - $date = sprintf("%s %d, 20%02d", $mons[$2-1], $3, $1); - } elsif( open(CFILE, "<$maindir/CHANGES.html") ) { - while(<CFILE>) { - if( /\<H4\>/) { - last; - } - } - $_ = <CFILE>; - chomp; - if( $_ =~ s/^.*?-- // ) { - $date = $_; - } - close(CFILE); - } -} - -if($release eq "") { - $release = "current"; -} -if($date eq "") { - @lt = localtime(time); - $date = sprintf("%s %d, %d", $mons[$lt[4]], $lt[3], 1900+$lt[5]); -} - -#printf(STDERR "date=%s release=%s\n", $date, $release); - -$writemode = 0; - -while(<STDIN>) { - if( s/^\<\!\-\- \=(\S+)\s+//) { - $cmd = $1; - s/\s*--\>\s*$//; - #printf(STDERR "cmd=%s args=%s\n", $cmd, $_); - if($cmd =~ /^=/) { - if($writemode) { - $text{$tosect} .= "\n\n$cmd $_\n\n"; - } - } elsif($cmd eq "defdoc") { - @sl = split; - push(@allids, $sl[0]); - $file{$sl[0]} = $sl[1]; - $mansect{$sl[0]} = $sl[2]; - } elsif($cmd eq "section") { - # tosect includes the file id - $tosect = $_; - $text{$tosect} .= "\n\n"; - $writemode = 1; - } elsif($cmd eq "stop") { - $writemode = 0; - $text{$tosect} .= "\n"; - } elsif($cmd eq "cont") { - $writemode = 1; - } elsif($cmd eq "text") { - if($writemode) { - s/\&lt\;/</gi; - s/\&gt\;/>/gi; - s/\&amp\;/\&/gi; - $text{$tosect} .= "$_\n"; - } - } - } elsif($writemode) { - s/^\s+//; - - s/\{/\&lbr;/g; - s/\}/\&rbr;/g; - - s/\<br\>/\n\n/gi; - #s/\<blockquote\>/\n\n=over 4\n\n/gi; - #s/\<\/blockquote\>/\n\n=back\n\n/gi; - s/\<ul\>/\n\n=over 4\n\n/gi; - s/\<\/ul\>/\n\n=back\n\n/gi; - s/\<li\>\s*/\n\n=item \*\n\n/gi; - s/\<i\>(.*?)\<\/i\>/I\{\1\}/gi; - s/\<b\>(.*?)\<\/b\>/B\{\1\}/gi; - s/\<tt\>(.*?)\<\/tt\>/C\{\1\}/gi; - s/\<a href\=\.*?\>(.*?)\<\/a\>/F\{\1\}/gi; - s/\<.*?\>//g; - s/\{/\</g; - s/\}/\>/g; - - s/\&nbsp\;/S< >/gi; - s/\&amp\;/\&/gi; - s/\&lt\;/E<lt>/gi; - s/\&gt\;/E<gt>/gi; - #s/\|/E<verbar>/g; - #s/\//E<sol>/g; - s/\&lbr\;/\{/g; - s/\&rbr\;/\}/g; - - #printf(STDERR "section=%s add=%s", $tosect, $_); - $text{$tosect} .= $_; - } -} - -@stdsect = ( - "NAME", - "SYNOPSIS", - "DESCRIPTION", - "OPTIONS", - "RETURN VALUE", - "ERRORS", - "EXAMPLES", - "ENVIRONMENT", - "FILES", - "SEE ALSO", - "NOTES", - "CAVEATS", - "DIAGNOSTICS", - "BUGS", - "RESTRICTIONS", - "AUTHOR", - "HISTORY" ); - -#printf(STDERR "allids= @allids\n"); -for $id (@allids) { - #print(STDERR "creating man page $id $file{$id} $mansect{$id}\n\n"); - die "Unable to create pod file $dir/$file{$id}.pod" - unless open(PODF, ">$dir/$file{$id}.pod"); - print(PODF "=pod\n\n"); - for $sect (@stdsect) { - $sid = "$id $sect"; - #printf(STDERR "trying %s\n", $sid); - if(defined $text{$sid}) { - print(PODF "=head1 $sect\n\n$text{$sid}\n\n"); - } - } - print(PODF "=cut\n"); - close(PODF); - die "Unable to generate the man page $dir/$file{$id}.1" - if system("pod2man --section=\"$mansect{$id}\" --release=\"$release\" " - . "--center=\"TTF2PT1 Font Converter\" --date=\"$date\" " - . "$dir/$file{$id}.pod >$dir/$file{$id}.1"); - - unlink("$dir/$file{$id}.pod"); -} diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/scripts/inst_dir b/application/third_party/dompdf/lib/ttf2ufm/src/scripts/inst_dir deleted file mode 100644 index 7bc10f4c..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/scripts/inst_dir +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/perl -# -# Script to create a directory for installation -# -# (c) 2000 by The TTF2PT1 Project -# See COPYRIGHT for full license -# - -if( $#ARGV!=0 && $#ARGV !=3) { - die "Use: $0 dir-name [owner group mode]\n" -} - -if( $#ARGV==3 ) { - $owner = $ARGV[1]; - $group = $ARGV[2]; - eval "\$mode = 0$ARGV[3];"; -} else { - $owner = "root"; - $group = "bin"; - $mode = 0755; -} - -@sl = split(/\//, $ARGV[0]); -$prefix = shift(@sl); -if($prefix eq "") { - $prefix = "/" . shift(@sl); -} - -while(1) { - if( ! -d "$prefix" ) { - die "Unable to create directory $prefix:\n$!\n" - unless mkdir($prefix, $mode); - die "Unable to change owner of $prefix to $owner\n" - if system("chown $owner $prefix"); - die "Unable to change group of $prefix to $group\n" - if system("chgrp $group $prefix"); - } - if($#sl < 0) { - last; - } - $prefix .= "/" . shift(@sl); -} -exit(0); diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/scripts/inst_file b/application/third_party/dompdf/lib/ttf2ufm/src/scripts/inst_file deleted file mode 100644 index d3758671..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/scripts/inst_file +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh -# -# Script to install a file (for portability reasons) -# -# (c) 2000 by The TTF2PT1 Project -# See COPYRIGHT for full license -# - -[ $# != 5 ] && { - echo "Use: $0 file-from file-to owner group mode" >&2 - exit 1 -} - -cp -f $1 $2 \ -&& chown $3 $2 \ -&& chgrp $4 $2 \ -&& chmod 0$5 $2 diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/scripts/mkrel b/application/third_party/dompdf/lib/ttf2ufm/src/scripts/mkrel deleted file mode 100644 index e4ac93de..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/scripts/mkrel +++ /dev/null @@ -1,104 +0,0 @@ -#!/bin/sh -# -# See COPYRIGHT -# -# Script to create a release or shapshot archive. -# Also checks for very basic inconsistences. -# Expects that it would be run from the current directory of ttf2pt1, -# and that the parent directory is the place to create archives. -# Expects that the CVS environment variables are set properly. - -VER=`grep TTF2PT1_VERSION version.h | cut -d\" -f2` - -case "$1" in -snapshot) - echo "$VER" | egrep '^[0-9][0-9]*\.[0-9].*-CURRENT$' || { - echo "mkrel: version.h must contain *-CURRENT to create a snapshot" >&2 - exit 1 - } - grep "^current$" CHANGES.html >/dev/null || { - echo "mkrel: CHANGES.html must list 'current' to create a snapshot" >&2 - exit 1 - } - snapdate=`date "+ %y %m %d " | sed 's/ \([0-9]\) / 0& /g;s/ //g'` - NEWVER=`echo "$VER" | sed "s/-CURRENT/-SNAP-$snapdate/"` - TAG="-D tomorrow" - ;; -release) - echo "$VER" | egrep '^[0-9][0-9]*\.[0-9][.0-9]*$' || { - echo "mkrel: version.h must not be -CURRENT to create a release" >&2 - exit 1 - } - grep "^$VER -- " CHANGES.html >/dev/null || { - echo "mkrel: CHANGES.html must list the same version as version.h" >&2 - exit 1 - } - NEWVER="$VER" - TAG=`echo "-r ttf2pt1-$VER" | sed \ - 's/\(-[0-9][0-9]*\.[0-9]\)$/&.0/;s/\./-/g'` - ;; -*) - echo "use: mkrel [snapshot|release]" >&2 - exit 1 - ;; -esac - -cd .. || { - echo "mkrel: can't cd to .." >&2 - exit 1 -} - -rm -f ttf2pt1-$NEWVER.tgz ttf2pt1-$NEWVER.zip -rm -rf ttf2pt1-$NEWVER - -echo "cvs -z9 export $TAG -d ttf2pt1-$NEWVER ttf2pt1" -cvs -z9 export $TAG -d ttf2pt1-$NEWVER ttf2pt1 || { - echo "mkrel: unable to export from CVS" >&2 - echo "mkrel: check that the CVS tree is properly tagged" >&2 - exit 1 -} - - -# a little bit more for snapshot: correct the version -( -case "$1" in -snapshot) - cd ttf2pt1-$NEWVER || { - echo "mkrel: can't cd to ../ttf2pt1-$NEWVER" >&2 - exit 1 - } - - sed "s/^current\$/$NEWVER/" <CHANGES.html >CHANGES.html.new \ - && mv CHANGES.html.new CHANGES.html || { - echo "mkrel: can't update CHANGES.html" >&2 - exit 1 - } - - sed "s/\".*-CURRENT\"/\"$NEWVER\"/" <version.h >version.h.new \ - && mv version.h.new version.h || { - echo "mkrel: can't update version.h" >&2 - exit 1 - } - ;; -esac -) - -# generate the man pages - in case if the users would have no pod2man -( - cd ttf2pt1-$NEWVER || { - echo "mkrel: can't cd to ../ttf2pt1-$NEWVER" >&2 - exit 1 - } - - make mans -) - -tar czvf ttf2pt1-$NEWVER.tgz ttf2pt1-$NEWVER || { - echo "mkrel: can't create .tgz archive" >&2 - exit 1 -} - -zip -u -r ttf2pt1-$NEWVER.zip ttf2pt1-$NEWVER || { - echo "mkrel: can't create .zip archive" >&2 - exit 1 -} diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/scripts/t1fdir b/application/third_party/dompdf/lib/ttf2ufm/src/scripts/t1fdir deleted file mode 100644 index 16c86530..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/scripts/t1fdir +++ /dev/null @@ -1,227 +0,0 @@ -#!/usr/bin/perl -# -# Copyright (c) 1998 -# Sergey A. Babkin. All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED -# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -# -# Sergey A. Babkin (sab123@hotmail.com, babkin@bellatlantic.net) -# - -# -# Script that reads the Type1 font files and prints out the fonts.scale -# lines for them -# - -# other substrings (regexps) that are considered irrelevant -# and sould be removed from the font names: -@wrongstr= ( - "koi8r", - "koi8", - "cp1251", - "ibm1251", - "win1251", - "cp866", - "ibm866", - "iso8859[1-9]", - "iso8859", - "isolatin[0-9]", - "isolatin", - "latin[0-9]", - "^ER ", - "^K8 ", -); - -sub usage -{ - print STDERR "Use: \n"; - print STDERR " t1fdir [-g] <foundry> <encoding>... [ -f <file>...]\n"; - print STDERR "or\n"; - print STDERR " t1fdir -d fonts.scale fonts.alias <foundry> <encoding>... [ -f <file>...]\n"; -} - -$ghost=0; -if( $ARGV[0] eq "-g" ) { - shift @ARGV; - $ghost=1; -} elsif( $ARGV[0] eq "-d" ) { - shift @ARGV; - $files=1; - $scalef=shift @ARGV; - $aliasf=shift @ARGV; -} - -if($#ARGV<2) { - &usage(); - exit 1; -} - -$foundry=$ARGV[0]; -shift @ARGV; - -while($#ARGV>=0) { - if($ARGV[0] eq "-f") { - shift @ARGV; - last; - } - push(@encodings,$ARGV[0]); - shift @ARGV; -} - -if($files) { - open(SCALEF, ">>$scalef") || die "Can't write to $scalef"; - open(ALIASF, ">>$aliasf") || die "Can't write to $aliasf"; -} -for $name (@ARGV) { - - $familyname=""; - $fullname=""; - $fontname=""; - $weight=""; - $angle=0; - - open(FILE,"<$name") || die "Unable to open file $name\n"; - - $type="p"; # by default - - while(<FILE>) { - if(/eexec/) { last; } - if(/^\/FamilyName.*\((.+)\)/ ) { $familyname= $1; } - if(/^\/FullName.*\((.+)\)/ ) { $fullname= $1; } - if(/^\/FontName.*\((.+)\)/ ) { $fontname= $1; } - if(/^\/Weight.*\((.+)\)/ ) { $weight= $1; } - if(/^\/ItalicAngle.*(\d+)/ ) { $angle= $1+0; } - if(/^\/isFixedPitch/) { - if(/true/) { - $type="m"; - } else { - $type="p"; - } - } - } - - # now try to interpret this information - - $allinfo= $familyname ." ". $fullname ." ". $fontname ." ". $weight; - $lcallinfo=$allinfo; - $lcallinfo=~tr[A-Z][a-z]; - - $familyname.="_"; # just a delimiter for substitutions - $familyname=~s/Bold([^a-z])/$1/g; - $familyname=~s/Italic([^a-z])/$1/g; - $familyname=~s/Oblique([^a-z])/$1/g; - $familyname=~s/Roman([^a-z])/$1/g; - - for $i (@wrongstr) { # for uppercase- and space- sensitive strings - $familyname =~ s/$i//g; - } - - $familyname=~tr[A-Z][a-z]; - $familyname=~tr[A-Za-z0-9][]cd; - - for $i (@wrongstr) { # for case-insensitive strings - $familyname =~ s/$i//g; - } - - if( $familyname eq "") { - $familyname="unknown"; - } - - $fn=$name; - $fn=~ s/.*\///g; - - $n=0; - for $encoding (@encodings) { - $n++; - if($ghost) { - printf("/%s-", uc(substr($familyname,0,1)).substr($familyname,1)); - - $r=1; - - if( $allinfo =~ /Bold[^a-z]/ - || $lcallinfo =~ /\bbold\b/ ) { - printf("Bold"); - $r=0; - } - if( $allinfo =~ /Italic[^a-z]/ - || $lcallinfo =~ /\bitalic\b/ - || $angle>0 ) { - printf("Italic"); - $r=0; - } elsif( $allinfo =~ /Oblique[^a-z]/ - || $lcallinfo =~ /\boblique\b/ - || $angle<0 ) { - printf("Oblique"); - $r=0; - } - - if($r) { - printf("Roman"); - } - - printf("-%s\t (%s) ;\n",$encoding,$fn); - } else { - $xenc=$encoding; - $xenc =~ s/\-/_/g; - - $srec = sprintf("-%s-%s_%s-",$foundry,$familyname,$xenc); - $arec = sprintf("-%s-%s-",$foundry,$familyname); - - if( $allinfo =~ /Bold[^a-z]/ - || $lcallinfo =~ /\bbold\b/ ) { - $srec .= "bold-"; - $arec .= "bold-"; - } else { - $srec .= "medium-"; - $arec .= "medium-"; - } - - if( $allinfo =~ /Italic[^a-z]/ - || $lcallinfo =~ /\bitalic\b/ - || $angle>0 ) { - $srec .= "i-"; - $arec .= "i-"; - } elsif( $allinfo =~ /Oblique[^a-z]/ - || $lcallinfo =~ /\boblique\b/ - || $angle<0 ) { - $srec .= "o-"; - $arec .= "o-"; - } else { - $srec .= "r-"; - $arec .= "r-"; - } - - $srec .= sprintf("normal--0-0-0-0-%s-0-adobe-fontspecific",$type,$encoding); - $arec .= sprintf("normal--0-0-0-0-%s-0-%s",$type,$encoding); - - if($files) { - if($n==1) { - printf(SCALEF "%s %s\n",$fn,$srec); - printf(ALIASF "%s %s\n",$arec,$srec); - $srec1=$srec; - } else { - printf(ALIASF "%s %s\n",$arec,$srec1); - } - } else { - printf("%s %s\n",$fn,$arec); - } - } - } - - close(FILE); -} -if($files) { - close(SCALEF); - close(ALIASF); -} diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/scripts/trans b/application/third_party/dompdf/lib/ttf2ufm/src/scripts/trans deleted file mode 100644 index d52760e6..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/scripts/trans +++ /dev/null @@ -1,164 +0,0 @@ -#!/usr/bin/perl -# -# Copyright (c) 1998-2000 -# Sergey A. Babkin. All rights reserved. -# -# See the full text of the license in the COPYRIGHT file. -# -# Sergey A. Babkin (sab123@hotmail.com, babkin@users.sourceforge.net) -# - -# -# Script to transcode the Type1 disassembled font to other encoding -# - -# calculation of UniqueID from old UID and encoding name -# we don't have unsigned integer arithmetic in Perl -# so we try to do at least something -sub newuid -{ - use integer; - my ($u,$enc)=@_; - my $i, $uid; - - $uid=substr($u, -6, 6); - $u=substr($u, 0, 4); - - $uid+=0; - for $i (split(//,$enc)) { - $uid*=37; - $uid+=ord($i); - $uid+=($uid>>16) & 0xff; - $uid&=0xffffff; - } - - ($uid % 1000000) + 4000000; - #$u . substr(sprintf("%d",$uid), 0, 5); -} - -if($#ARGV != 1) { - printf(STDERR "Use: trans src-table dst-table <src-font >dst-font\n"); - exit 1; -} - -# tables are formatted in two columns, one row per character -# name decimal-code - -# Read the destination table - -open(FILE,"<".$ARGV[1]) - or die "Unable to read $ARGV[2]\n"; -while(<FILE>) { - @sl=split(/\s+/); - $dst{$sl[0]}=$sl[1]; -} -close(FILE); - -#read the source table and build the translation table - -open(FILE,"<".$ARGV[0]) - or die "Unable to read $ARGV[0]\n"; -while(<FILE>) { - @sl=split(/\s+/); - $trans{$sl[1]}=$dst{$sl[0]}; -} -close(FILE); - -# name of the encoding, for UniqueID -$encname=$ARGV[1]; -$encname =~ s|^.*\/||g; -$encname =~ s|\..*$||g; - -# now read the font file, skip everything upto the encoding table -# we suppose that the file was autogenerated by ttf2pt1 with my patches - -while(<STDIN>) { - if( /^\/FontName\s+(\S+)/) { - $fontname=$1; - } - if( /^\/UniqueID\s+(\S+)/) { - use integer; - my $uid=$1; - $_=sprintf("/UniqueID %u def\n", &newuid($uid, $encname)); - } - print $_; - if(/^\/Encoding/) { - $fontfile=1; - last; - } - if(/^StartCharMetrics/) { - $fontfile=0; - last; - } -} - -# read the old encoding table and build the new encoding table - -if($fontfile) { # .t1a - while($row=<STDIN>) { - if( $row !~ /^dup/) { - last; - } - - @sl=split(/\s+/,$row); - - $new=$trans{$sl[1]}; - if($new eq "") { - $new=$sl[1]; - if($enc{$new} eq "") { - $enc{$new}=$sl[2]; - } - } else { - $enc{$new}=$sl[2]; - } - } - - # print new encoding table - - for $i (0..255) { - if($enc{$i}) { - printf("dup %d %s put\n",$i,$enc{$i}); - } else { - printf("dup %d /.notdef put\n",$i); - } - } -} else { # .afm - while($row=<STDIN>) { - if($row !~ /^C\s+(\d+)(\s*;.*)\n/) { - last; - } - $code=$1; - $part2=$2; - - $new=$trans{$code}; - if($new eq "") { - $new=$code; - if($enc{$new} eq "") { - $enc{$new}=$part2; - } - } else { - $enc{$new}=$part2; - } - } - - # print new encoding table - - for $i (0..255) { - if($enc{$i}) { - printf("C %d%s\n",$i,$enc{$i}); - } - } -} - -print $row; - -# now copy the rest of file - -while(<STDIN>) { - if( /^\/UniqueID\s+(\S+)/) { - use integer; - my $uid=$1; - $_=sprintf("/UniqueID %u def\n", &newuid($uid, $encname)); - } - print; -} diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/scripts/unhtml b/application/third_party/dompdf/lib/ttf2ufm/src/scripts/unhtml deleted file mode 100644 index 1e660f54..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/scripts/unhtml +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh -# -# This script removes the HTML formatting from a file. If the file was designed -# with such use in mind and was properly formatted besides HTML (such as the README -# file for ttf2pt1) it will look good as a plain text file. -# -# This script supports a very limited set of HTML formatting. Everything that -# goes before <BODY> is removed. Any lines that -# contain only the HTML formatting or start with "<!" or contain only ">" -# are completely removed. Then all the in-line formatting is removed. -# Then "&nbsp;", "&lt;", "&gt;" are changed to " ", "<", ">". - -sed '1,/<[bB][oO][dD][yY]>/d; -/^<!/d; -s/<[lL][iI]>/-/g; -s/^</< </; -s/> *$/>>/; -s/<[^<>]*>//g; -/^< *>$/d; -/^>>$/d;s/^< //; -s/>$//; -s/&[nN][bB][sS][pP];/ /g;s/&[lL][tT];/</g;s/&[gG][tT];/>/g;s/&[aA][mM][pP];/\&/g;' diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/scripts/x2gs b/application/third_party/dompdf/lib/ttf2ufm/src/scripts/x2gs deleted file mode 100644 index 558ef3df..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/scripts/x2gs +++ /dev/null @@ -1,118 +0,0 @@ -#!/bin/sh -# -# Copyright (c) 1998-2000 -# Sergey A. Babkin. All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED -# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -# -# Sergey A. Babkin (sab123@hotmail.com, babkin@bellatlantic.net) -# - -# Use : x2gs [cfgfile] - -# path to the configuration file - -if [ $# -eq 1 ] -then - CFGFILE=$1 -else - CFGFILE=`pwd`/convert.cfg -fi - -MYSELF=x2gs - -# include the configuration - -if [ -r $CFGFILE ] -then { - . $CFGFILE -} else { - echo " -Can't find the configuration file - $CFGFILE -Please look at the sample file convert.cfg.sample, -copy it to convert.cfg and modify for -you actual configuration." >&2 - exit 1 -} fi - -LOG=$DSTDIR/convert.log - -[ -n "$GSDIR" ] || { - echo "$MYSELF: The Ghostscript base directory is not specified." >&2 - echo "$MYSELF: Installation of the Ghostscript fonts is deferred." >&2 - exit 0 -} - -[ -n "$GSCONFDIR" -a -d "$GSCONFDIR" ] || { - echo "$MYSELF: The Ghostscript configuration directory does not exist." >&2 - echo "$MYSELF: Installation of the Ghostscript fonts is aborted." >&2 - exit 1 -} - -[ -r "$GSCONFDIR/Fontmap" ] || { - echo "$MYSELF: Can't find Fontmap in the GS configuration directory." >&2 - echo "$MYSELF: Installation of the Ghostscript fonts is aborted." >&2 - exit 1 -} - -[ -n "$GSFONTDIR" -a -d "$GSFONTDIR" ] || { - echo "$MYSELF: The Ghostscript font directory does not exist." >&2 - echo "$MYSELF: Installation of the Ghostscript fonts is aborted." >&2 - exit 1 -} - -# link the fonts to $GSFONTDIR - -rm -f $GSCONFDIR/Fontmap.ttf - -# historically x2gs supported multiple X11 directories -for d in $DSTDIR -do { - for i in $d/*.pfa $d/*.afm - do { - [ -f $i ] || break; - - n=`basename $i` - - rm -f $GSFONTDIR/$n - - ln -s $i $GSFONTDIR/$n || { - echo "$MYSELF: Unable to link $n to GS font directory">&2 - } - } done - - cat $d/Fontmap.ttf >>$GSCONFDIR/Fontmap.ttf -} done - -if [ YES = "$INSTALLFONTMAP" ] -then { - mv $GSCONFDIR/Fontmap $GSCONFDIR/Fontmap.old || { - echo "$MYSELF: can't save Fontmap.old" >&2 - exit 1 - } - - sed "\\|^% begin fonts from $DSTDIR|,\\|^% end fonts from $DSTDIR|d" \ - <$GSCONFDIR/Fontmap.old >$GSCONFDIR/Fontmap || { - echo "$MYSELF: Can't create the new Fontmap file" >&2 - echo "$MYSELF: Trying to restore the old Fontmap file" >&2 - cp $GSCONFDIR/Fontmap.old $GSCONFDIR/Fontmap - exit 1 - } - echo "% begin fonts from $DSTDIR" >>$GSCONFDIR/Fontmap - echo "" >>$GSCONFDIR/Fontmap - cat $GSCONFDIR/Fontmap.ttf >>$GSCONFDIR/Fontmap - echo "" >>$GSCONFDIR/Fontmap - echo "% end fonts from $DSTDIR" >>$GSCONFDIR/Fontmap -} fi diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/t1asm.c b/application/third_party/dompdf/lib/ttf2ufm/src/t1asm.c deleted file mode 100644 index d9c3061c..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/t1asm.c +++ /dev/null @@ -1,604 +0,0 @@ -/* t1asm - * - * This program `assembles' Adobe Type-1 font programs in pseudo-PostScript - * form into either PFB or PFA format. The human readable/editable input is - * charstring- and eexec-encrypted as specified in the `Adobe Type 1 Font - * Format' version 1.1 (the `black book'). There is a companion program, - * t1disasm, which `disassembles' PFB and PFA files into a pseudo-PostScript - * file. - * - * Copyright (c) 1992 by I. Lee Hetherington, all rights reserved. - * - * Permission is hereby granted to use, modify, and distribute this program - * for any purpose provided this copyright notice and the one below remain - * intact. - * - * I. Lee Hetherington (ilh@lcs.mit.edu) - * - * Revision 1.2 92/05/22 11:54:45 ilh - * Fixed bug where integers larger than 32000 could not be encoded in - * charstrings. Now integer range is correct for four-byte - * twos-complement integers: -(1<<31) <= i <= (1<<31)-1. Bug detected by - * Piet Tutelaers (rcpt@urc.tue.nl). - * - * Revision 1.1 92/05/22 11:48:46 ilh - * initial version - * - * Ported to Microsoft C/C++ Compiler and MS-DOS operating system by - * Kai-Uwe Herbing (herbing@netmbx.netmbx.de) on June 12, 1992. Code - * specific to the MS-DOS version is encapsulated with #ifdef _MSDOS - * ... #endif, where _MSDOS is an identifier, which is automatically - * defined, if you compile with the Microsoft C/C++ Compiler. - * - */ - -#ifndef lint -static char copyright[] = - "@(#) Copyright (c) 1992 by I. Lee Hetherington, all rights reserved."; -#ifdef _MSDOS -static char portnotice[] = - "@(#) Ported to MS-DOS by Kai-Uwe Herbing (herbing@netmbx.netmbx.de)."; -#endif -#endif - -/* Note: this is ANSI C. */ - -#ifdef _MSDOS - #include <fcntl.h> - #include <getopt.h> - #include <io.h> -#endif -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <ctype.h> -#include <limits.h> - -#ifdef WINDOWS -# ifdef STANDALONE -# define WINDOWS_FUNCTIONS -# include "windows.h" -# endif -#endif - -/* int32 must be at least 32-bit and uint16 must be at least 16-bit */ -#if INT_MAX >= 0x7FFFFFFFUL -typedef int int32; -#else -typedef long int32; -#endif -#if USHRT_MAX >= 0xFFFFUL -typedef unsigned short uint16; -#else -typedef unsigned int uint16; -#endif - -#define LINESIZE 256 - -#define MAXBLOCKLEN ((1L<<17)-6) -#define MINBLOCKLEN ((1L<<8)-6) - -#define MARKER 128 -#define ASCII 1 -#define BINARY 2 -#define DONE 3 - -typedef unsigned char byte; - -/* must be visible from outside */ -FILE *ifp; -FILE *ofp; - -/* flags */ -static int pfb = 0; -static int active = 0; -static int start_charstring = 0; -static int in_eexec = 0; - -static char line[LINESIZE]; - -/* lenIV and charstring start command */ -static int lenIV = 4; -static char cs_start[10]; - -/* for charstring buffering */ -static byte charstring_buf[65535]; -static byte *charstring_bp; - -/* for PFB block buffering */ -static byte blockbuf[MAXBLOCKLEN]; -static int32 blocklen = MAXBLOCKLEN; -static int32 blockpos = -1; -static int blocktyp = ASCII; - -/* decryption stuff */ -static uint16 er, cr; -static uint16 c1 = 52845, c2 = 22719; - -/* table of charstring commands */ -static struct command { - char *name; - int one, two; -} command_table[] = { - { "callothersubr", 12, 16 }, - { "callsubr", 10, -1 }, - { "closepath", 9, -1 }, - { "div", 12, 12 }, - { "dotsection", 12, 0 }, - { "endchar", 14, -1 }, - { "hlineto", 6, -1 }, - { "hmoveto", 22, -1 }, - { "hsbw", 13, -1 }, - { "hstem", 1, -1 }, - { "hstem3", 12, 2 }, - { "hvcurveto", 31, -1 }, - { "pop", 12, 17 }, - { "return", 11, -1 }, - { "rlineto", 5, -1 }, - { "rmoveto", 21, -1 }, - { "rrcurveto", 8, -1 }, - { "sbw", 12, 7 }, - { "seac", 12, 6 }, - { "setcurrentpoint", 12, 33 }, - { "vhcurveto", 30, -1 }, - { "vlineto", 7, -1 }, - { "vmoveto", 4, -1 }, - { "vstem", 3, -1 }, - { "vstem3", 12, 1 }, -}; /* alphabetical */ - -/* Two separate encryption functions because eexec and charstring encryption - must proceed in parallel. */ - -static byte eencrypt(byte plain) -{ - byte cipher; - - cipher = (byte) (plain ^ (er >> 8)); - er = (uint16) ((cipher + er) * c1 + c2); - return cipher; -} - -static byte cencrypt(byte plain) -{ - byte cipher; - - cipher = (byte) (plain ^ (cr >> 8)); - cr = (uint16) ((cipher + cr) * c1 + c2); - return cipher; -} - -/* This function flushes a buffered PFB block. */ - -static void output_block() -{ - int32 i; - - /* output four-byte block length */ - fputc((int) (blockpos & 0xff), ofp); - fputc((int) ((blockpos >> 8) & 0xff), ofp); - fputc((int) ((blockpos >> 16) & 0xff), ofp); - fputc((int) ((blockpos >> 24) & 0xff), ofp); - - /* output block data */ - for (i = 0; i < blockpos; i++) - fputc(blockbuf[i], ofp); - - /* mark block buffer empty and uninitialized */ - blockpos = -1; -} - -/* This function outputs a single byte. If output is in PFB format then output - is buffered through blockbuf[]. If output is in PFA format, then output - will be hexadecimal if in_eexec is set, ASCII otherwise. */ - -static void output_byte(byte b) -{ - static char *hexchar = "0123456789ABCDEF"; - static int hexcol = 0; - - if (pfb) { - /* PFB */ - if (blockpos < 0) { - fputc(MARKER, ofp); - fputc(blocktyp, ofp); - blockpos = 0; - } - blockbuf[blockpos++] = b; - if (blockpos == blocklen) - output_block(); - } else { - /* PFA */ - if (in_eexec) { - /* trim hexadecimal lines to 64 columns */ - if (hexcol >= 64) { - fputc('\n', ofp); - hexcol = 0; - } - fputc(hexchar[(b >> 4) & 0xf], ofp); - fputc(hexchar[b & 0xf], ofp); - hexcol += 2; - } else { - fputc(b, ofp); - } - } -} - -/* This function outputs a byte through possible eexec encryption. */ - -static void eexec_byte(byte b) -{ - if (in_eexec) - output_byte(eencrypt(b)); - else - output_byte(b); -} - -/* This function outputs a null-terminated string through possible eexec - encryption. */ - -static void eexec_string(char *string) -{ - while (*string) - eexec_byte((byte) *string++); -} - -/* This function gets ready for the eexec-encrypted data. If output is in - PFB format then flush current ASCII block and get ready for binary block. - We start encryption with four random (zero) bytes. */ - -static void eexec_start() -{ - eexec_string(line); - if (pfb) { - output_block(); - blocktyp = BINARY; - } - - in_eexec = 1; - er = 55665; - eexec_byte(0); - eexec_byte(0); - eexec_byte(0); - eexec_byte(0); -} - -/* This function wraps-up the eexec-encrypted data. - If output is in PFB format then this entails flushing binary block and - starting an ASCII block. */ - -static void eexec_end() -{ - int i, j; - - if (pfb) { - output_block(); - blocktyp = ASCII; - } else { - fputc('\n', ofp); - } - in_eexec = 0; - for (i = 0; i < 8; i++) { - for (j = 0; j < 64; j++) - eexec_byte('0'); - eexec_byte('\n'); - } -#if 0 - eexec_string("cleartomark\n"); -#endif -} - -/* This function writes ASCII trailer. - If output is in PFB format then this entails flushing binary block and - starting an ASCII block. */ - -static void file_end() -{ - if (pfb) { - output_block(); - fputc(MARKER, ofp); - fputc(DONE, ofp); - } -} -/* This function returns an input line of characters. A line is terminated by - length (including terminating null) greater than LINESIZE, a newline \n, or - when active (looking for charstrings) by '{'. When terminated by a newline - the newline is put into line[]. When terminated by '{', the '{' is not put - into line[], and the flag start_charstring is set to 1. */ - -static void t1asm_getline() -{ - int c; - char *p = line; - int comment = 0; - - start_charstring = 0; - while (p < line + LINESIZE) { - c = fgetc(ifp); - if (c == EOF) - break; - if (c == '%') - comment = 1; - if (active && !comment && c == '{') { - start_charstring = 1; - break; - } - *p++ = (char) c; - if (c == '\n') - break; - } - *p = '\0'; -} - -/* This function is used by the binary search, bsearch(), for command names in - the command table. */ - -static int command_compare(const void *key, const void *item) -{ - return strcmp((char *) key, ((struct command *) item)->name); -} - -/* This function returns 1 if the string is an integer and 0 otherwise. */ - -static int is_integer(char *string) -{ - if (isdigit(string[0]) || string[0] == '-' || string[0] == '+') { - while (*++string && isdigit(*string)) - ; /* deliberately empty */ - if (!*string) - return 1; - } - return 0; -} - -/* This function initializes charstring encryption. Note that this is called - at the beginning of every charstring. */ - -static void charstring_start() -{ - int i; - - charstring_bp = charstring_buf; - cr = 4330; - for (i = 0; i < lenIV; i++) - *charstring_bp++ = cencrypt((byte) 0); -} - -/* This function encrypts and buffers a single byte of charstring data. */ - -static void charstring_byte(int v) -{ - byte b = (byte) (v & 0xff); - - if (charstring_bp - charstring_buf > sizeof(charstring_buf)) { - fprintf(stderr, "error: charstring_buf full (%d bytes)\n", - sizeof(charstring_buf)); - exit(1); - } - *charstring_bp++ = cencrypt(b); -} - -/* This function outputs buffered, encrypted charstring data through possible - eexec encryption. */ - -static void charstring_end() -{ - byte *bp; - - sprintf(line, "%d ", charstring_bp - charstring_buf); - eexec_string(line); - sprintf(line, "%s ", cs_start); - eexec_string(line); - for (bp = charstring_buf; bp < charstring_bp; bp++) - eexec_byte(*bp); -} - -/* This function generates the charstring representation of an integer. */ - -static void charstring_int(int num) -{ - int x; - - if (num >= -107 && num <= 107) { - charstring_byte(num + 139); - } else if (num >= 108 && num <= 1131) { - x = num - 108; - charstring_byte(x / 256 + 247); - charstring_byte(x % 256); - } else if (num >= -1131 && num <= -108) { - x = abs(num) - 108; - charstring_byte(x / 256 + 251); - charstring_byte(x % 256); - } else if (num >= (-2147483647-1) && num <= 2147483647) { - charstring_byte(255); - charstring_byte(num >> 24); - charstring_byte(num >> 16); - charstring_byte(num >> 8); - charstring_byte(num); - } else { - fprintf(stderr, - "error: cannot format the integer %d, too large\n", num); - exit(1); - } -} - -/* This function parses an entire charstring into integers and commands, - outputting bytes through the charstring buffer. */ - -static void parse_charstring() -{ - struct command *cp; - - charstring_start(); - while (fscanf(ifp, "%s", line) == 1) { - if (line[0] == '%') { - /* eat comment to end of line */ - while (fgetc(ifp) != '\n' && !feof(ifp)) - ; /* deliberately empty */ - continue; - } - if (line[0] == '}') - break; - if (is_integer(line)) { - charstring_int(atoi(line)); - } else { - cp = (struct command *) - bsearch((void *) line, (void *) command_table, - sizeof(command_table) / sizeof(struct command), - sizeof(struct command), - command_compare); - if (cp) { - charstring_byte(cp->one); - if (cp->two >= 0) - charstring_byte(cp->two); - } else { - fprintf(stderr, "error: cannot use `%s' in charstring\n",line); - exit(1); - } - } - } - charstring_end(); -} - -static void usage() -{ - fprintf(stderr, - "usage: t1asm [-b] [-l block-length] [input [output]]\n"); - fprintf(stderr, - "\n-b means output in PFB format, otherwise PFA format.\n"); - fprintf(stderr, - "The block length applies to the length of blocks in the\n"); - fprintf(stderr, - "PFB output file; the default is to use the largest possible.\n"); - exit(1); -} - -static void print_banner() -{ - static char rcs_revision[] = ""; /* removed RCS */ - static char revision[20]; - - if (sscanf(rcs_revision, "$Revision: %19s", revision) != 1) - revision[0] = '\0'; - fprintf(stderr, "This is t1asm %s.\n", revision); -} - -#ifdef STANDALONE -int main(int argc, char **argv) -{ - char *p, *q, *r; - int c; - - extern char *optarg; - extern int optind; - - ifp = stdin; - ofp = stdout; - - print_banner(); - - /* interpret command line arguments using getopt */ - while ((c = getopt(argc, argv, "bl:")) != -1) - switch (c) { - case 'b': - pfb = 1; - break; - case 'l': - blocklen = atoi(optarg); - if (blocklen < MINBLOCKLEN) { - blocklen = MINBLOCKLEN; - fprintf(stderr, - "warning: using minimum block length of %d\n", - blocklen); - } else if (blocklen > MAXBLOCKLEN) { - blocklen = MAXBLOCKLEN; - fprintf(stderr, - "warning: using maximum block length of %d\n", - blocklen); - } - break; - default: - usage(); - break; - } - if (argc - optind > 2) - usage(); - - /* possibly open input & output files */ - if (argc - optind >= 1) { - ifp = fopen(argv[optind], "r"); - if (!ifp) { - fprintf(stderr, "error: cannot open %s for reading\n", argv[1]); - exit(1); - } - } - if (argc - optind >= 2) { - ofp = fopen(argv[optind + 1], "w"); - if (!ofp) { - fprintf(stderr, "error: cannot open %s for writing\n", argv[2]); - exit(1); - } - } - -#else -int runt1asm(int pfbflag) -{ - char *p, *q, *r; - - pfb = pfbflag; -#endif - - #ifdef _MSDOS - /* If we are processing a PFB (binary) output */ - /* file, we must set its file mode to binary. */ - if (pfb) - _setmode(_fileno(ofp), _O_BINARY); - #endif - - /* Finally, we loop until no more input. Some special things to look for - are the `currentfile eexec' line, the beginning of the `/Subrs' - definition, the definition of `/lenIV', and the definition of the - charstring start command which has `...string currentfile...' in it. */ - - while (!feof(ifp) && !ferror(ifp)) { - t1asm_getline(); - if (strcmp(line, "currentfile eexec\n") == 0) { - eexec_start(); - continue; - } else if (strstr(line, "/Subrs") && isspace(line[6])) { - active = 1; - } else if ((p = strstr(line, "/lenIV"))) { - sscanf(p, "%*s %d", &lenIV); - } else if ((p = strstr(line, "string currentfile"))) { - /* locate the name of the charstring start command */ - *p = '\0'; /* damage line[] */ - q = strrchr(line, '/'); - if (q) { - r = cs_start; - ++q; - while (!isspace(*q) && *q != '{') - *r++ = *q++; - *r = '\0'; - } - *p = 's'; /* repair line[] */ - } - /* output line data */ - eexec_string(line); - if ((p = strstr(line, "currentfile closefile"))) { - eexec_end(); - } - if (start_charstring) { - if (!cs_start[0]) { - fprintf(stderr, "error: couldn't find charstring start command\n"); - exit(1); - } - parse_charstring(); - } - } - file_end(); - - fclose(ifp); - fclose(ofp); - - return 0; -} diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/ttf.c b/application/third_party/dompdf/lib/ttf2ufm/src/ttf.c deleted file mode 100644 index 761eb995..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/ttf.c +++ /dev/null @@ -1,1502 +0,0 @@ -/* - * True Type Font to Adobe Type 1 font converter - * By Mark Heath <mheath@netspace.net.au> - * Based on ttf2pfa by Andrew Weeks <ccsaw@bath.ac.uk> - * With help from Frank M. Siegert <fms@this.net> - * - * see COPYRIGHT - * - */ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <time.h> -#include <ctype.h> -#include <math.h> - -#ifndef WINDOWS -# include <unistd.h> -# include <netinet/in.h> -#else -# include "windows.h" -#endif - -#include "ttf.h" -#include "pt1.h" -#include "global.h" - -/* prototypes of call entries */ -static void openfont(char *fname, char *arg); -static void closefont( void); -static int getnglyphs ( void); -static int glnames( GLYPH *glyph_list); -static void glmetrics( GLYPH *glyph_list); -static int glenc( GLYPH *glyph_list, int *encoding, int *unimap); -static void fnmetrics( struct font_metrics *fm); -static void glpath( int glyphno, GLYPH *glyph_list); -static void kerning( GLYPH *glyph_list); - -/* globals */ - -/* front-end descriptor */ -struct frontsw ttf_sw = { - /*name*/ "ttf", - /*descr*/ "built-in TTF support", - /*suffix*/ { "ttf" }, - /*open*/ openfont, - /*close*/ closefont, - /*nglyphs*/ getnglyphs, - /*glnames*/ glnames, - /*glmetrics*/ glmetrics, - /*glenc*/ glenc, - /*fnmetrics*/ fnmetrics, - /*glpath*/ glpath, - /*kerning*/ kerning, -}; - -/* statics */ - -static FILE *ttf_file; -static int ttf_nglyphs, long_offsets; - -static TTF_DIRECTORY *directory; -static TTF_DIR_ENTRY *dir_entry; -static char *filebuffer; -static char *filebuffer_end; -static TTF_NAME *name_table = NULL; -static TTF_NAME_REC *name_record; -static TTF_HEAD *head_table = NULL; -static TTF_HHEA *hhea_table = NULL; -static TTF_KERN *kern_table = NULL; -static TTF_CMAP *cmap_table = NULL; -static LONGHORMETRIC *hmtx_table = NULL; -static TTF_GLYF *glyf_table; -static BYTE *glyf_start = NULL; -static TTF_MAXP *maxp_table = NULL; -static TTF_POST_HEAD *post_table = NULL; -static union { - USHORT *sp; - ULONG *lp; -} loca_table; -#define short_loca_table loca_table.sp -#define long_loca_table loca_table.lp - -static short cmap_n_segs; -static USHORT *cmap_seg_start, *cmap_seg_end; -static short *cmap_idDelta, *cmap_idRangeOffset; -static TTF_CMAP_FMT0 *encoding0; -static int enc_type; - -static char *name_fields[8]; - -static int enc_found_ms, enc_found_mac; - -static char *mac_glyph_names[258] = { - ".notdef", ".null", "CR", - "space", "exclam", "quotedbl", "numbersign", - "dollar", "percent", "ampersand", "quotesingle", - "parenleft", "parenright", "asterisk", "plus", - "comma", "hyphen", "period", "slash", - "zero", "one", "two", "three", - "four", "five", "six", "seven", - "eight", "nine", "colon", "semicolon", - "less", "equal", "greater", "question", - "at", "A", "B", "C", - "D", "E", "F", "G", - "H", "I", "J", "K", - "L", "M", "N", "O", - "P", "Q", "R", "S", - "T", "U", "V", "W", - "X", "Y", "Z", "bracketleft", - "backslash", "bracketright", "asciicircum", "underscore", - "grave", "a", "b", "c", - "d", "e", "f", "g", - "h", "i", "j", "k", - "l", "m", "n", "o", - "p", "q", "r", "s", - "t", "u", "v", "w", - "x", "y", "z", "braceleft", - "bar", "braceright", "asciitilde", "Adieresis", - "Aring", "Ccedilla", "Eacute", "Ntilde", - "Odieresis", "Udieresis", "aacute", "agrave", - "acircumflex", "adieresis", "atilde", "aring", - "ccedilla", "eacute", "egrave", "ecircumflex", - "edieresis", "iacute", "igrave", "icircumflex", - "idieresis", "ntilde", "oacute", "ograve", - "ocircumflex", "odieresis", "otilde", "uacute", - "ugrave", "ucircumflex", "udieresis", "dagger", - "degree", "cent", "sterling", "section", - "bullet", "paragraph", "germandbls", "registered", - "copyright", "trademark", "acute", "dieresis", - "notequal", "AE", "Oslash", "infinity", - "plusminus", "lessequal", "greaterequal", "yen", - "mu", "partialdiff", "summation", "product", - "pi", "integral", "ordfeminine", "ordmasculine", - "Omega", "ae", "oslash", "questiondown", - "exclamdown", "logicalnot", "radical", "florin", - "approxequal", "increment", "guillemotleft", "guillemotright", - "ellipsis", "nbspace", "Agrave", "Atilde", - "Otilde", "OE", "oe", "endash", - "emdash", "quotedblleft", "quotedblright", "quoteleft", - "quoteright", "divide", "lozenge", "ydieresis", - "Ydieresis", "fraction", "currency", "guilsinglleft", - "guilsinglright", "fi", "fl", "daggerdbl", - "periodcentered", "quotesinglbase", "quotedblbase", "perthousand", - "Acircumflex", "Ecircumflex", "Aacute", "Edieresis", - "Egrave", "Iacute", "Icircumflex", "Idieresis", - "Igrave", "Oacute", "Ocircumflex", "applelogo", - "Ograve", "Uacute", "Ucircumflex", "Ugrave", - "dotlessi", "circumflex", "tilde", "macron", - "breve", "dotaccent", "ring", "cedilla", - "hungarumlaut", "ogonek", "caron", "Lslash", - "lslash", "Scaron", "scaron", "Zcaron", - "zcaron", "brokenbar", "Eth", "eth", - "Yacute", "yacute", "Thorn", "thorn", - "minus", "multiply", "onesuperior", "twosuperior", - "threesuperior", "onehalf", "onequarter", "threequarters", - "franc", "Gbreve", "gbreve", "Idot", - "Scedilla", "scedilla", "Cacute", "cacute", - "Ccaron", "ccaron", "dmacron" -}; - -/* other prototypes */ -static void draw_composite_glyf( GLYPH *g, GLYPH *glyph_list, int glyphno, - double *matrix, int level); -static void draw_simple_glyf( GLYPH *g, GLYPH *glyph_list, int glyphno, - double *matrix); -static double f2dot14( short x); - -/* get the TTF description table address and length for this index */ - -static void -get_glyf_table( - int glyphno, - TTF_GLYF **tab, - int *len -) -{ - if(tab!=NULL) { - if (long_offsets) { - *tab = (TTF_GLYF *) (glyf_start + ntohl(long_loca_table[glyphno])); - } else { - *tab = (TTF_GLYF *) (glyf_start + (ntohs(short_loca_table[glyphno]) << 1)); - } - } - if(len!=NULL) { - if (long_offsets) { - *len = ntohl(long_loca_table[glyphno + 1]) - ntohl(long_loca_table[glyphno]); - } else { - *len = (ntohs(short_loca_table[glyphno + 1]) - ntohs(short_loca_table[glyphno])) << 1; - } - } -} - -static void -handle_name(void) -{ - int j, k, lang, len, platform; - char *p, *string_area; - int found3 = 0; - - string_area = (char *) name_table + ntohs(name_table->offset); - name_record = &(name_table->nameRecords); - - for (j = 0; j < 8; j++) { - name_fields[j] = ""; - } - - for (j = 0; j < ntohs(name_table->numberOfNameRecords); j++) { - - platform = ntohs(name_record->platformID); - - if (platform == 3) { - - found3 = 1; - lang = ntohs(name_record->languageID) & 0xff; - len = ntohs(name_record->stringLength); - if (lang == 0 || lang == 9) { - k = ntohs(name_record->nameID); - if (k < 8) { - p = string_area + ntohs(name_record->stringOffset); - name_fields[k] = dupcnstring(p, len); - } - } - } - name_record++; - } - - string_area = (char *) name_table + ntohs(name_table->offset); - name_record = &(name_table->nameRecords); - - if (!found3) { - for (j = 0; j < ntohs(name_table->numberOfNameRecords); j++) { - - platform = ntohs(name_record->platformID); - - if (platform == 1) { - - found3 = 1; - lang = ntohs(name_record->languageID) & 0xff; - len = ntohs(name_record->stringLength); - if (lang == 0 || lang == 9) { - k = ntohs(name_record->nameID); - if (k < 8) { - p = string_area + ntohs(name_record->stringOffset); - name_fields[k] = dupcnstring(p, len); - } - } - } - name_record++; - } - } - if (!found3) { - fprintf(stderr, "**** Cannot decode font name fields ****\n"); - exit(1); - } - if (name_fields[4][0] == 0) { /* Full Name empty, use Family Name */ - name_fields[4] = name_fields[1]; - } - if (name_fields[6][0] == 0) { /* Font Name empty, use Full Name */ - name_fields[6] = name_fields[4]; - if (name_fields[6][0] == 0) { /* oops, empty again */ - WARNING_1 fprintf(stderr, "Font name is unknown, setting to \"Unknown\"\n"); - name_fields[6] = "Unknown"; - } - } - p = name_fields[6]; - /* must not start with a digit */ - if(isdigit(*p)) - *p+= 'A'-'0'; /* change to a letter */ - while (*p != '\0') { - if (!isalnum(*p) || *p=='_') { - *p = '-'; - } - p++; - } -} - -static void -handle_head(void) -{ - long_offsets = ntohs(head_table->indexToLocFormat); - if (long_offsets != 0 && long_offsets != 1) { - fprintf(stderr, "**** indexToLocFormat wrong ****\n"); - exit(1); - } -} - -/* limit the recursion level to avoid cycles */ -#define MAX_COMPOSITE_LEVEL 20 - -static void -draw_composite_glyf( - GLYPH *g, - GLYPH *glyph_list, - int glyphno, - double *orgmatrix, - int level -) -{ - int len; - short ncontours; - USHORT flagbyte, glyphindex; - double arg1, arg2; - BYTE *ptr; - char *bptr; - SHORT *sptr; - double matrix[6], newmatrix[6]; - - get_glyf_table(glyphno, &glyf_table, &len); - - if(len<=0) /* nothing to do */ - return; - - ncontours = ntohs(glyf_table->numberOfContours); - if (ncontours >= 0) { /* simple case */ - draw_simple_glyf(g, glyph_list, glyphno, orgmatrix); - return; - } - - if(ISDBG(COMPOSITE) && level ==0) - fprintf(stderr, "* %s [ %.2f %.2f %.2f %.2f %.2f %.2f ]\n", g->name, - orgmatrix[0], orgmatrix[1], orgmatrix[2], orgmatrix[3], - orgmatrix[4], orgmatrix[5]); - - /* complex case */ - if(level >= MAX_COMPOSITE_LEVEL) { - WARNING_1 fprintf(stderr, - "*** Glyph %s: stopped (possibly infinite) recursion at depth %d\n", - g->name, level); - return; - } - - ptr = ((BYTE *) glyf_table + sizeof(TTF_GLYF)); - sptr = (SHORT *) ptr; - do { - flagbyte = ntohs(*sptr); - sptr++; - glyphindex = ntohs(*sptr); - sptr++; - - if (flagbyte & ARG_1_AND_2_ARE_WORDS) { - arg1 = (short)ntohs(*sptr); - sptr++; - arg2 = (short)ntohs(*sptr); - sptr++; - } else { - bptr = (char *) sptr; - arg1 = (signed char) bptr[0]; - arg2 = (signed char) bptr[1]; - sptr++; - } - matrix[1] = matrix[2] = 0.0; - - if (flagbyte & WE_HAVE_A_SCALE) { - matrix[0] = matrix[3] = f2dot14(*sptr); - sptr++; - } else if (flagbyte & WE_HAVE_AN_X_AND_Y_SCALE) { - matrix[0] = f2dot14(*sptr); - sptr++; - matrix[3] = f2dot14(*sptr); - sptr++; - } else if (flagbyte & WE_HAVE_A_TWO_BY_TWO) { - matrix[0] = f2dot14(*sptr); - sptr++; - matrix[2] = f2dot14(*sptr); - sptr++; - matrix[1] = f2dot14(*sptr); - sptr++; - matrix[3] = f2dot14(*sptr); - sptr++; - } else { - matrix[0] = matrix[3] = 1.0; - } - - /* - * See * - * http://fonts.apple.com/TTRefMan/RM06/Chap6g - * lyf.html * matrix[0,1,2,3,4,5]=a,b,c,d,m,n - */ - - if (fabs(matrix[0]) > fabs(matrix[1])) - matrix[4] = fabs(matrix[0]); - else - matrix[4] = fabs(matrix[1]); - if (fabs(fabs(matrix[0]) - fabs(matrix[2])) <= 33. / 65536.) - matrix[4] *= 2.0; - - if (fabs(matrix[2]) > fabs(matrix[3])) - matrix[5] = fabs(matrix[2]); - else - matrix[5] = fabs(matrix[3]); - if (fabs(fabs(matrix[2]) - fabs(matrix[3])) <= 33. / 65536.) - matrix[5] *= 2.0; - - /* - * fprintf (stderr,"Matrix Opp %hd - * %hd\n",arg1,arg2); - */ -#if 0 - fprintf(stderr, "Matrix: %f %f %f %f %f %f\n", - matrix[0], matrix[1], matrix[2], matrix[3], - matrix[4], matrix[5]); - fprintf(stderr, "Offset: %f %f (%s)\n", - arg1, arg2, - ((flagbyte & ARGS_ARE_XY_VALUES) ? "XY" : "index")); -#endif - - if (flagbyte & ARGS_ARE_XY_VALUES) { - matrix[4] *= arg1; - matrix[5] *= arg2; - } else { - WARNING_1 fprintf(stderr, - "*** Glyph %s: reusing scale from another glyph is unsupported\n", - g->name); - /* - * must extract values from a glyph - * but it seems to be too much pain - * and it's not clear now that it - * would be really used in any - * interesting font - */ - } - - /* at this point arg1,arg2 contain what logically should be matrix[4,5] */ - - /* combine matrices */ - - newmatrix[0] = orgmatrix[0]*matrix[0] + orgmatrix[2]*matrix[1]; - newmatrix[1] = orgmatrix[0]*matrix[2] + orgmatrix[2]*matrix[3]; - - newmatrix[2] = orgmatrix[1]*matrix[0] + orgmatrix[3]*matrix[1]; - newmatrix[3] = orgmatrix[1]*matrix[2] + orgmatrix[3]*matrix[3]; - - newmatrix[4] = orgmatrix[0]*matrix[4] + orgmatrix[2]*matrix[5] + orgmatrix[4]; - newmatrix[5] = orgmatrix[1]*matrix[4] + orgmatrix[3]*matrix[5] + orgmatrix[5]; - - if(ISDBG(COMPOSITE)) { - fprintf(stderr, "%*c+-> %2d %s [ %.2f %.2f %.2f %.2f %.2f %.2f ]\n", - level+1, ' ', level, glyph_list[glyphindex].name, - matrix[0], matrix[1], matrix[2], matrix[3], - matrix[4], matrix[5]); - fprintf(stderr, "%*c = [ %.2f %.2f %.2f %.2f %.2f %.2f ]\n", - level+1, ' ', - newmatrix[0], newmatrix[1], newmatrix[2], newmatrix[3], - newmatrix[4], newmatrix[5]); - } - draw_composite_glyf(g, glyph_list, glyphindex, newmatrix, level+1); - - } while (flagbyte & MORE_COMPONENTS); -} - -static void -draw_simple_glyf( - GLYPH *g, - GLYPH *glyph_list, - int glyphno, - double *matrix -) -{ - int i, j, k, k1, len, first, cs, ce; - /* We assume that hsbw always sets to(0, 0) */ - double xlast = 0, ylast = 0; - int finished, nguide, contour_start, contour_end; - short ncontours, n_inst, last_point; - USHORT *contour_end_pt; - BYTE *ptr; -#define GLYFSZ 2000 - short xabs[GLYFSZ], yabs[GLYFSZ], xrel[GLYFSZ], yrel[GLYFSZ]; - double xcoord[GLYFSZ], ycoord[GLYFSZ]; - BYTE flags[GLYFSZ]; - double tx, ty; - int needreverse = 0; /* transformation may require - * that */ - GENTRY *lge; - - lge = g->lastentry; - - get_glyf_table(glyphno, &glyf_table, &len); - - if (len <= 0) { - WARNING_1 fprintf(stderr, - "**** Composite glyph %s refers to non-existent glyph %s, ignored\n", - g->name, - glyph_list[glyphno].name); - return; - } - ncontours = ntohs(glyf_table->numberOfContours); - if (ncontours < 0) { - WARNING_1 fprintf(stderr, - "**** Composite glyph %s refers to composite glyph %s, ignored\n", - g->name, - glyph_list[glyphno].name); - return; - } - contour_end_pt = (USHORT *) ((char *) glyf_table + sizeof(TTF_GLYF)); - - last_point = ntohs(contour_end_pt[ncontours - 1]); - n_inst = ntohs(contour_end_pt[ncontours]); - - ptr = ((BYTE *) contour_end_pt) + (ncontours << 1) + n_inst + 2; - j = k = 0; - while (k <= last_point) { - flags[k] = ptr[j]; - - if (ptr[j] & REPEAT) { - for (k1 = 0; k1 < ptr[j + 1]; k1++) { - k++; - flags[k] = ptr[j]; - } - j++; - } - j++; - k++; - } - - for (k = 0; k <= last_point; k++) { - if (flags[k] & XSHORT) { - if (flags[k] & XSAME) { - xrel[k] = ptr[j]; - } else { - xrel[k] = -ptr[j]; - } - j++; - } else if (flags[k] & XSAME) { - xrel[k] = 0.0; - } else { - xrel[k] = (short)( ptr[j] * 256 + ptr[j + 1] ); - j += 2; - } - if (k == 0) { - xabs[k] = xrel[k]; - } else { - xabs[k] = xrel[k] + xabs[k - 1]; - } - - } - - for (k = 0; k <= last_point; k++) { - if (flags[k] & YSHORT) { - if (flags[k] & YSAME) { - yrel[k] = ptr[j]; - } else { - yrel[k] = -ptr[j]; - } - j++; - } else if (flags[k] & YSAME) { - yrel[k] = 0; - } else { - yrel[k] = ptr[j] * 256 + ptr[j + 1]; - j += 2; - } - if (k == 0) { - yabs[k] = yrel[k]; - } else { - yabs[k] = yrel[k] + yabs[k - 1]; - } - } - - if (matrix) { - for (i = 0; i <= last_point; i++) { - tx = xabs[i]; - ty = yabs[i]; - xcoord[i] = fscale(matrix[0] * tx + matrix[2] * ty + matrix[4]); - ycoord[i] = fscale(matrix[1] * tx + matrix[3] * ty + matrix[5]); - } - } else { - for (i = 0; i <= last_point; i++) { - xcoord[i] = fscale(xabs[i]); - ycoord[i] = fscale(yabs[i]); - } - } - - i = j = 0; - first = 1; - - while (i <= ntohs(contour_end_pt[ncontours - 1])) { - contour_end = ntohs(contour_end_pt[j]); - - if (first) { - fg_rmoveto(g, xcoord[i], ycoord[i]); - xlast = xcoord[i]; - ylast = ycoord[i]; - contour_start = i; - first = 0; - } else if (flags[i] & ONOROFF) { - fg_rlineto(g, xcoord[i], ycoord[i]); - xlast = xcoord[i]; - ylast = ycoord[i]; - } else { - cs = i - 1; - finished = nguide = 0; - while (!finished) { - if (i == contour_end + 1) { - ce = contour_start; - finished = 1; - } else if (flags[i] & ONOROFF) { - ce = i; - finished = 1; - } else { - i++; - nguide++; - } - } - - switch (nguide) { - case 0: - fg_rlineto(g, xcoord[ce], ycoord[ce]); - xlast = xcoord[ce]; - ylast = ycoord[ce]; - break; - - case 1: - fg_rrcurveto(g, - (xcoord[cs] + 2.0 * xcoord[cs + 1]) / 3.0, - (ycoord[cs] + 2.0 * ycoord[cs + 1]) / 3.0, - (2.0 * xcoord[cs + 1] + xcoord[ce]) / 3.0, - (2.0 * ycoord[cs + 1] + ycoord[ce]) / 3.0, - xcoord[ce], - ycoord[ce] - ); - xlast = xcoord[ce]; - ylast = ycoord[ce]; - - break; - - case 2: - fg_rrcurveto(g, - (-xcoord[cs] + 4.0 * xcoord[cs + 1]) / 3.0, - (-ycoord[cs] + 4.0 * ycoord[cs + 1]) / 3.0, - (4.0 * xcoord[cs + 2] - xcoord[ce]) / 3.0, - (4.0 * ycoord[cs + 2] - ycoord[ce]) / 3.0, - xcoord[ce], - ycoord[ce] - ); - xlast = xcoord[ce]; - ylast = ycoord[ce]; - break; - - case 3: - fg_rrcurveto(g, - (xcoord[cs] + 2.0 * xcoord[cs + 1]) / 3.0, - (ycoord[cs] + 2.0 * ycoord[cs + 1]) / 3.0, - (5.0 * xcoord[cs + 1] + xcoord[cs + 2]) / 6.0, - (5.0 * ycoord[cs + 1] + ycoord[cs + 2]) / 6.0, - (xcoord[cs + 1] + xcoord[cs + 2]) / 2.0, - (ycoord[cs + 1] + ycoord[cs + 2]) / 2.0 - ); - - fg_rrcurveto(g, - (xcoord[cs + 1] + 5.0 * xcoord[cs + 2]) / 6.0, - (ycoord[cs + 1] + 5.0 * ycoord[cs + 2]) / 6.0, - (5.0 * xcoord[cs + 2] + xcoord[cs + 3]) / 6.0, - (5.0 * ycoord[cs + 2] + ycoord[cs + 3]) / 6.0, - (xcoord[cs + 3] + xcoord[cs + 2]) / 2.0, - (ycoord[cs + 3] + ycoord[cs + 2]) / 2.0 - ); - - fg_rrcurveto(g, - (xcoord[cs + 2] + 5.0 * xcoord[cs + 3]) / 6.0, - (ycoord[cs + 2] + 5.0 * ycoord[cs + 3]) / 6.0, - (2.0 * xcoord[cs + 3] + xcoord[ce]) / 3.0, - (2.0 * ycoord[cs + 3] + ycoord[ce]) / 3.0, - xcoord[ce], - ycoord[ce] - ); - ylast = ycoord[ce]; - xlast = xcoord[ce]; - - break; - - default: - k1 = cs + nguide; - fg_rrcurveto(g, - (xcoord[cs] + 2.0 * xcoord[cs + 1]) / 3.0, - (ycoord[cs] + 2.0 * ycoord[cs + 1]) / 3.0, - (5.0 * xcoord[cs + 1] + xcoord[cs + 2]) / 6.0, - (5.0 * ycoord[cs + 1] + ycoord[cs + 2]) / 6.0, - (xcoord[cs + 1] + xcoord[cs + 2]) / 2.0, - (ycoord[cs + 1] + ycoord[cs + 2]) / 2.0 - ); - - for (k = cs + 2; k <= k1 - 1; k++) { - fg_rrcurveto(g, - (xcoord[k - 1] + 5.0 * xcoord[k]) / 6.0, - (ycoord[k - 1] + 5.0 * ycoord[k]) / 6.0, - (5.0 * xcoord[k] + xcoord[k + 1]) / 6.0, - (5.0 * ycoord[k] + ycoord[k + 1]) / 6.0, - (xcoord[k] + xcoord[k + 1]) / 2.0, - (ycoord[k] + ycoord[k + 1]) / 2.0 - ); - - } - - fg_rrcurveto(g, - (xcoord[k1 - 1] + 5.0 * xcoord[k1]) / 6.0, - (ycoord[k1 - 1] + 5.0 * ycoord[k1]) / 6.0, - (2.0 * xcoord[k1] + xcoord[ce]) / 3.0, - (2.0 * ycoord[k1] + ycoord[ce]) / 3.0, - xcoord[ce], - ycoord[ce] - ); - xlast = xcoord[ce]; - ylast = ycoord[ce]; - - break; - } - } - if (i >= contour_end) { - g_closepath(g); - first = 1; - i = contour_end + 1; - j++; - } else { - i++; - } - } - - if (matrix) { - /* guess whether do we need to reverse the results */ - - double x[3], y[3]; - int max = 0, from, to; - - /* transform a triangle going in proper direction */ - /* - * the origin of triangle is in (0,0) so we know it in - * advance - */ - - x[0] = y[0] = 0; - x[1] = matrix[0] * 0 + matrix[2] * 300; - y[1] = matrix[1] * 0 + matrix[3] * 300; - x[2] = matrix[0] * 300 + matrix[2] * 0; - y[2] = matrix[1] * 300 + matrix[3] * 0; - - /* then find the topmost point */ - for (i = 0; i < 3; i++) - if (y[i] > y[max]) - max = i; - from = (max + 3 - 1) % 3; - to = (max + 1) % 3; - - needreverse = 0; - - /* special cases for horizontal lines */ - if (y[max] == y[from]) { - if (x[max] < y[from]) - needreverse = 1; - } else if (y[to] == y[from]) { - if (x[to] < x[max]) - needreverse = 1; - } else { /* generic case */ - if ((x[to] - x[max]) * (y[max] - y[from]) - > (x[max] - x[from]) * (y[to] - y[max])) - needreverse = 1; - } - - if (needreverse) { - if (lge) { - assertpath(lge->next, __FILE__, __LINE__, g->name); - reversepathsfromto(lge->next, NULL); - } else { - assertpath(g->entries, __FILE__, __LINE__, g->name); - reversepaths(g); - } - } - } -} - -static double -f2dot14( - short x -) -{ - short y = ntohs(x); - return (y >> 14) + ((y & 0x3fff) / 16384.0); -} - - -/* check that the pointer points within the file */ -/* returns 0 if pointer is good, 1 if bad */ -static int -badpointer( - void *ptr -) -{ - return (ptr < (void *)filebuffer || ptr >= (void *)filebuffer_end); -} - -/* - * Externally accessible methods - */ - -/* - * Open font and prepare to return information to the main driver. - * May print error and warning messages. - * Exit on error. - */ - -static void -openfont( - char *fname, - char *arg /* unused now */ -) -{ - int i, j; - struct stat statbuf; - static struct { - void **tbpp; /* pointer to pointer to the table */ - char name[5]; /* table name */ - char optional; /* flag: table may be missing */ - } tables[] = { - { (void **)&name_table, "name", 0 }, - { (void **)&head_table, "head", 0 }, - { (void **)&hhea_table, "hhea", 0 }, - { (void **)&post_table, "post", 0 }, - { (void **)&glyf_start, "glyf", 0 }, - { (void **)&cmap_table, "cmap", 0 }, - { (void **)&kern_table, "kern", 1 }, - { (void **)&maxp_table, "maxp", 0 }, - { (void **)&hmtx_table, "hmtx", 0 }, - { (void **)&long_loca_table, "loca", 0 }, - { NULL, "", 0 } /* end of table */ - }; - - if (stat(fname, &statbuf) == -1) { - fprintf(stderr, "**** Cannot access %s ****\n", fname); - exit(1); - } - if ((filebuffer = malloc(statbuf.st_size)) == NULL) { - fprintf(stderr, "**** Cannot malloc space for file ****\n"); - exit(1); - } - - filebuffer_end = filebuffer + statbuf.st_size; - - if ((ttf_file = fopen(fname, "rb")) == NULL) { - fprintf(stderr, "**** Cannot open file '%s'\n", fname); - exit(1); - } else { - WARNING_2 fprintf(stderr, "Processing file %s\n", fname); - } - - if (fread(filebuffer, 1, statbuf.st_size, ttf_file) != statbuf.st_size) { - fprintf(stderr, "**** Could not read whole file \n"); - exit(1); - } - fclose(ttf_file); - - directory = (TTF_DIRECTORY *) filebuffer; - - if (ntohl(directory->sfntVersion) != 0x00010000) { - fprintf(stderr, - "**** Unknown File Version number [%x], or not a TrueType file\n", - directory->sfntVersion); - exit(1); - } - - /* clear the tables */ - for(j=0; tables[j].tbpp != NULL; j++) - *(tables[j].tbpp) = NULL; - - dir_entry = &(directory->list); - - for (i = 0; i < ntohs(directory->numTables); i++) { - - for(j=0; tables[j].tbpp != NULL; j++) - if (memcmp(dir_entry->tag, tables[j].name, 4) == 0) { - *(tables[j].tbpp) = (void *) (filebuffer + ntohl(dir_entry->offset)); - break; - } - - if (memcmp(dir_entry->tag, "EBDT", 4) == 0 || - memcmp(dir_entry->tag, "EBLC", 4) == 0 || - memcmp(dir_entry->tag, "EBSC", 4) == 0) { - WARNING_1 fprintf(stderr, "Font contains bitmaps\n"); - } - dir_entry++; - } - - for(j=0; tables[j].tbpp != NULL; j++) - if(!tables[j].optional && badpointer( *(tables[j].tbpp) )) { - fprintf(stderr, "**** File contains no required table '%s'\n", tables[j].name); - exit(1); - } - - handle_name(); - - handle_head(); - - ttf_nglyphs = ntohs(maxp_table->numGlyphs); - - enc_found_ms = enc_found_mac = 0; -} - -/* - * Close font. - * Exit on error. - */ - -static void -closefont( - void -) -{ - return; /* empty operation */ -} - -/* - * Get the number of glyphs in font. - */ - -static int -getnglyphs ( - void -) -{ - return ttf_nglyphs; -} - -/* - * Get the names of the glyphs. - * Returns 0 if the names were assigned, non-zero if the font - * provides no glyph names. - */ - -static int -glnames( - GLYPH *glyph_list -) -{ - int i, len, n, npost; - unsigned int format; - USHORT *name_index; - char *ptr, *p; - char **ps_name_ptr = (char **) malloc(ttf_nglyphs * sizeof(char *)); - int n_ps_names; - int ps_fmt_3 = 0; - - format = ntohl(post_table->formatType); - - if (format == 0x00010000) { - for (i = 0; i < 258 && i < ttf_nglyphs; i++) { - glyph_list[i].name = mac_glyph_names[i]; - } - } else if (format == 0x00020000) { - npost = ntohs(post_table->numGlyphs); - if (ttf_nglyphs != npost) { - /* This is an error in the font, but we can now cope */ - WARNING_1 fprintf(stderr, "**** Postscript table size mismatch %d/%d ****\n", - npost, ttf_nglyphs); - } - n_ps_names = 0; - name_index = &(post_table->glyphNameIndex); - - /* This checks the integrity of the post table */ - for (i=0; i<npost; i++) { - n = ntohs(name_index[i]); - if (n > n_ps_names + 257) { - n_ps_names = n - 257; - } - } - - ptr = (char *) post_table + 34 + (ttf_nglyphs << 1); - i = 0; - while (*ptr > 0 && i < n_ps_names) { - len = *ptr; - /* previously the program wrote nulls into the table. If the table - was corrupt, this could put zeroes anywhere, leading to obscure bugs, - so now I malloc space for the names. Yes it is much less efficient */ - - if ((p = malloc(len+1)) == NULL) { - fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__); - exit(255); - } - - ps_name_ptr[i] = p; - strncpy(p, ptr+1, len); - p[len] = '\0'; - i ++; - ptr += len + 1; - } - - if (i != n_ps_names) - { - WARNING_2 fprintf (stderr, "** Postscript Name mismatch %d != %d **\n", - i, n_ps_names); - n_ps_names = i; - } - - /* - * for (i=0; i<n_ps_names; i++) { fprintf(stderr, "i=%d, - * len=%d, name=%s\n", i, ps_name_len[i], ps_name_ptr[i]); } - */ - - for (i = 0; i < npost; i++) { - n = ntohs(name_index[i]); - if (n < 258) { - glyph_list[i].name = mac_glyph_names[n]; - } else if (n < 258 + n_ps_names) { - glyph_list[i].name = ps_name_ptr[n - 258]; - } else { - glyph_list[i].name = malloc(16); - sprintf(glyph_list[i].name, "_g_%d", i); - WARNING_2 fprintf(stderr, - "Glyph No. %d has no postscript name, becomes %s\n", - i, glyph_list[i].name); - } - } - /* Now fake postscript names for all those beyond the end of the table */ - if (npost < ttf_nglyphs) { - for (i=npost; i<ttf_nglyphs; i++) { - if ((glyph_list[i].name = malloc(16)) == NULL) - { - fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__); - exit(255); - } - sprintf(glyph_list[i].name, "_g_%d", i); - WARNING_2 fprintf(stderr, - "Glyph No. %d has no postscript name, becomes %s\n", - i, glyph_list[i].name); - } - } - } else if (format == 0x00030000) { - WARNING_3 fputs("No postscript table, using default\n", stderr); - ps_fmt_3 = 1; - } else if (format == 0x00028000) { - ptr = (char *) &(post_table->numGlyphs); - for (i = 0; i < ttf_nglyphs; i++) { - glyph_list[i].name = mac_glyph_names[i + ptr[i]]; - } - } else { - fprintf(stderr, - "**** Postscript table in wrong format %x ****\n", - format); - exit(1); - } - - return ps_fmt_3; -} - -/* - * Get the metrics of the glyphs. - */ - -static void -glmetrics( - GLYPH *glyph_list -) -{ - int i; - int n_hmetrics = ntohs(hhea_table->numberOfHMetrics); - GLYPH *g; - LONGHORMETRIC *hmtx_entry = hmtx_table; - FWORD *lsblist; - - for (i = 0; i < n_hmetrics; i++) { - g = &(glyph_list[i]); - g->width = ntohs(hmtx_entry->advanceWidth); - g->lsb = ntohs(hmtx_entry->lsb); - hmtx_entry++; - } - - lsblist = (FWORD *) hmtx_entry; - hmtx_entry--; - - for (i = n_hmetrics; i < ttf_nglyphs; i++) { - g = &(glyph_list[i]); - g->width = ntohs(hmtx_entry->advanceWidth); - g->lsb = ntohs(lsblist[i - n_hmetrics]); - } - - for (i = 0; i < ttf_nglyphs; i++) { - g = &(glyph_list[i]); - get_glyf_table(i, &glyf_table, &g->ttf_pathlen); - - g->xMin = (short)ntohs(glyf_table->xMin); - g->xMax = (short)ntohs(glyf_table->xMax); - g->yMin = (short)ntohs(glyf_table->yMin); - g->yMax = (short)ntohs(glyf_table->yMax); - } - -} - - -static void -handle_ms_encoding( - GLYPH *glyph_list, - int *encoding, - int *unimap -) -{ - int i, j, k, kk, set_ok; - USHORT start, end, ro; - short delta, n; - - for (j = 0; j < cmap_n_segs - 1; j++) { - start = ntohs(cmap_seg_start[j]); - end = ntohs(cmap_seg_end[j]); - delta = ntohs(cmap_idDelta[j]); - ro = ntohs(cmap_idRangeOffset[j]); - - for (k = start; k <= end; k++) { - if (ro == 0) { - n = k + delta; - } else { - n = ntohs(*((ro >> 1) + (k - start) + - &(cmap_idRangeOffset[j]))); - if (delta != 0) - { - /* Not exactly sure how to deal with this circumstance, - I suspect it never occurs */ - n += delta; - fprintf (stderr, - "rangeoffset and delta both non-zero - %d/%d", - ro, delta); - } - } - if(n<0 || n>=ttf_nglyphs) { - WARNING_1 fprintf(stderr, "Font contains a broken glyph code mapping, ignored\n"); - continue; - } - - // Find the first available orig_code slot - for (i = 0; i < GLYPH_MAX_ENCODINGS; i++ ) { - - if ( glyph_list[n].orig_code[i] == -1 ) - break; - - } - - if ( i == GLYPH_MAX_ENCODINGS ) { - //#if 0 - if (strcmp(glyph_list[n].name, ".notdef") != 0) { - WARNING_2 fprintf(stderr, - "Glyph %s has >= %d encodings (A), %4.4x & %4.4x\n", - glyph_list[n].name, - GLYPH_MAX_ENCODINGS, - glyph_list[n].orig_code[0], - k); - } - //#endif - set_ok = 0; - break; - } else { - set_ok = 1; - } - if (enc_type==1 || forcemap) { - kk = unicode_rev_lookup(k); - if(ISDBG(UNICODE)) - fprintf(stderr, "Unicode %s - 0x%04x\n",glyph_list[n].name,k); - if (set_ok) { - glyph_list[n].orig_code[i] = k; - /* glyph_list[n].char_no = kk; */ - } - if (kk >= 0 && kk < ENCTABSZ && encoding[kk] == -1) - encoding[kk] = n; - } else { - if ((k & 0xff00) == 0xf000) { - if( encoding[k & 0x00ff] == -1 ) { - encoding[k & 0x00ff] = n; - if (set_ok) { - /* glyph_list[n].char_no = k & 0x00ff; */ - glyph_list[n].orig_code[i] = k; - } - } - } else { - if (set_ok) { - /* glyph_list[n].char_no = k; */ - glyph_list[n].orig_code[i] = k; - } - WARNING_2 fprintf(stderr, - "Glyph %s has non-symbol encoding %4.4x\n", - glyph_list[n].name, - k & 0xffff); - /* - * just use the code - * as it is - */ - if ((k & ~0xff) == 0 && encoding[k] == -1 ) - encoding[k] = n; - } - } - } - } -} - -static void -handle_mac_encoding( - GLYPH *glyph_list, - int *encoding, - int *unimap -) -{ - short n; - int j, size; - - size = ntohs(encoding0->length) - 6; - for (j = 0; j < size; j++) { - n = encoding0->glyphIdArray[j]; - if (glyph_list[n].char_no != -1) { - WARNING_2 fprintf(stderr, - "Glyph %s has >= two encodings (B), %4.4x & %4.4x\n", - glyph_list[n].name, - glyph_list[n].char_no, - j); - } else { - if (j < ENCTABSZ) { - if(encoding[j] == -1) { - glyph_list[n].char_no = j; - encoding[j] = n; - } - } - } - } -} - -/* - * Get the original encoding of the font. - * Returns 1 for if the original encoding is Unicode, 2 if the - * original encoding is other 16-bit, 0 if 8-bit. - */ - -static int -glenc( - GLYPH *glyph_list, - int *encoding, - int *unimap -) -{ - int num_tables = ntohs(cmap_table->numberOfEncodingTables); - BYTE *ptr; - int i, format, offset, seg_c2, found; - int platform, encoding_id; - TTF_CMAP_ENTRY *table_entry; - TTF_CMAP_FMT4 *encoding4; - - if(enc_found_ms) { - handle_ms_encoding(glyph_list, encoding, unimap); - return enc_type; - } else if(enc_found_mac) { - handle_mac_encoding(glyph_list, encoding, unimap); - return 0; - } - - enc_type = 0; - found = 0; - - for (i = 0; i < num_tables && !found; i++) { - table_entry = &(cmap_table->encodingTable[i]); - offset = ntohl(table_entry->offset); - encoding4 = (TTF_CMAP_FMT4 *) ((BYTE *) cmap_table + offset); - format = ntohs(encoding4->format); - platform = ntohs(table_entry->platformID); - encoding_id = ntohs(table_entry->encodingID); - - if (format != 4) - continue; - - if(force_pid != -1) { - if(force_pid != platform || encoding_id != force_eid) - continue; - WARNING_1 fprintf(stderr, "Found Encoding PID=%d/EID=%d\n", - force_pid, force_eid); - enc_type = 1; - } else { - if (platform == 3 ) { - switch (encoding_id) { - case 0: - WARNING_1 fputs("Found Symbol Encoding\n", stderr); - break; - case 1: - WARNING_1 fputs("Found Unicode Encoding\n", stderr); - enc_type = 1; - break; - default: - WARNING_1 { - fprintf(stderr, - "****MS Encoding ID %d not supported****\n", - encoding_id); - fputs("Treating it like Symbol encoding\n", stderr); - } - break; - } - } else - continue; - } - - found = 1; - seg_c2 = ntohs(encoding4->segCountX2); - cmap_n_segs = seg_c2 >> 1; - ptr = (BYTE *) encoding4 + 14; - cmap_seg_end = (USHORT *) ptr; - cmap_seg_start = (USHORT *) (ptr + seg_c2 + 2); - cmap_idDelta = (short *) (ptr + (seg_c2 * 2) + 2); - cmap_idRangeOffset = (short *) (ptr + (seg_c2 * 3) + 2); - enc_found_ms = 1; - - handle_ms_encoding(glyph_list, encoding, unimap); - } - - if (!found && force_pid == -1) { - WARNING_1 fputs("No Microsoft encoding, looking for MAC encoding\n", stderr); - for (i = 0; i < num_tables && !found; i++) { - table_entry = &(cmap_table->encodingTable[i]); - offset = ntohl(table_entry->offset); - encoding0 = (TTF_CMAP_FMT0 *) ((BYTE *) cmap_table + offset); - format = ntohs(encoding0->format); - platform = ntohs(table_entry->platformID); - encoding_id = ntohs(table_entry->encodingID); - - if (format == 0) { - found = 1; - enc_found_mac = 1; - - handle_mac_encoding(glyph_list, encoding, unimap); - } - } - } - - if (!found && force_pid == -1) { - WARNING_1 fputs("No MAC encoding either, looking for any format 4 encoding\n", stderr); - for (i = 0; i < num_tables && !found; i++) { - table_entry = &(cmap_table->encodingTable[i]); - offset = ntohl(table_entry->offset); - encoding4 = (TTF_CMAP_FMT4 *) ((BYTE *) cmap_table + offset); - format = ntohs(encoding4->format); - platform = ntohs(table_entry->platformID); - encoding_id = ntohs(table_entry->encodingID); - - if (format != 4) - continue; - - WARNING_1 fprintf(stderr, "Found a last ditch encoding PID=%d/EID=%d, treating it as Unicode.\n", - platform, encoding_id); - found = 1; - enc_type = 1; - seg_c2 = ntohs(encoding4->segCountX2); - cmap_n_segs = seg_c2 >> 1; - ptr = (BYTE *) encoding4 + 14; - cmap_seg_end = (USHORT *) ptr; - cmap_seg_start = (USHORT *) (ptr + seg_c2 + 2); - cmap_idDelta = (short *) (ptr + (seg_c2 * 2) + 2); - cmap_idRangeOffset = (short *) (ptr + (seg_c2 * 3) + 2); - enc_found_ms = 1; - - handle_ms_encoding(glyph_list, encoding, unimap); - - } - } - - if (!found) { - if(force_pid != -1) { - fprintf(stderr, "*** TTF encoding table PID=%d/EID=%d not found\n", - force_pid, force_eid); - } - fprintf(stderr, "**** No Recognised Encoding Table ****\n"); - if(warnlevel >= 2) { - fprintf(stderr, "Font contains the following unsupported encoding tables:\n"); - for (i = 0; i < num_tables && !found; i++) { - table_entry = &(cmap_table->encodingTable[i]); - offset = ntohl(table_entry->offset); - encoding0 = (TTF_CMAP_FMT0 *) ((BYTE *) cmap_table + offset); - format = ntohs(encoding0->format); - platform = ntohs(table_entry->platformID); - encoding_id = ntohs(table_entry->encodingID); - - fprintf(stderr, " format=%d platform=%d encoding_id=%d\n", - format, platform, encoding_id); - } - } - exit(1); - } - - return enc_type; -} - -/* - * Get the font metrics - */ -static void -fnmetrics( - struct font_metrics *fm -) -{ - char *str; - static int fieldstocheck[]= {2,4,6}; - int i, j, len; - - fm->italic_angle = (short) (ntohs(post_table->italicAngle.upper)) + - ((short) ntohs(post_table->italicAngle.lower) / 65536.0); - fm->underline_position = (short) ntohs(post_table->underlinePosition); - fm->underline_thickness = (short) ntohs(post_table->underlineThickness); - fm->is_fixed_pitch = ntohl(post_table->isFixedPitch); - - fm->ascender = (short)ntohs(hhea_table->ascender); - fm->descender = (short)ntohs(hhea_table->descender); - - fm->units_per_em = ntohs(head_table->unitsPerEm); - - fm->bbox[0] = (short) ntohs(head_table->xMin); - fm->bbox[1] = (short) ntohs(head_table->yMin); - fm->bbox[2] = (short) ntohs(head_table->xMax); - fm->bbox[3] = (short) ntohs(head_table->yMax); - - fm->name_copyright = name_fields[0]; - fm->name_family = name_fields[1]; - fm->name_style = name_fields[2]; - fm->name_full = name_fields[4]; - fm->name_version = name_fields[5]; - fm->name_ps = name_fields[6]; - - /* guess the boldness from the font names */ - fm->force_bold=0; - - for(i=0; !fm->force_bold && i<sizeof fieldstocheck /sizeof(int); i++) { - str = name_fields[fieldstocheck[i]]; - len = strlen(str); - for(j=0; j<len; j++) { - if( (str[j]=='B' - || str[j]=='b' - && ( j==0 || !isalpha(str[j-1]) ) - ) - && !strncmp("old",&str[j+1],3) - && (j+4 >= len || !islower(str[j+4])) - ) { - fm->force_bold=1; - break; - } - } - } -} - -/* - * Get the path of contrours for a glyph. - */ - -static void -glpath( - int glyphno, - GLYPH *glyf_list -) -{ - double matrix[6]; - GLYPH *g; - - g = &glyph_list[glyphno]; - - matrix[0] = matrix[3] = 1.0; - matrix[1] = matrix[2] = matrix[4] = matrix[5] = 0.0; - draw_composite_glyf(g, glyf_list, glyphno, matrix, 0 /*level*/); -} - -/* - * Get the kerning data. - */ - -static void -kerning( - GLYPH *glyph_list -) -{ - TTF_KERN_SUB *subtable; - TTF_KERN_ENTRY *kern_entry; - int i, j; - int ntables; - int npairs; - char *ptr; - - if(kern_table == NULL) { - WARNING_1 fputs("No Kerning data\n", stderr); - return; - } - if(badpointer(kern_table)) { - fputs("**** Defective Kerning table, ignored\n", stderr); - return; - } - - ntables = ntohs(kern_table->nTables); - ptr = (char *) kern_table + 4; - - for (i = 0; i < ntables; i++) { - subtable = (TTF_KERN_SUB *) ptr; - if ((ntohs(subtable->coverage) & 0xff00) == 0) { - npairs = (short) ntohs(subtable->nPairs); - kern_entry = (TTF_KERN_ENTRY *) (ptr + sizeof(TTF_KERN_SUB)); - - kern_entry = (TTF_KERN_ENTRY *) (ptr + sizeof(TTF_KERN_SUB)); - for (j = 0; j < npairs; j++) { - if( kern_entry->value != 0) - addkernpair(ntohs(kern_entry->left), - ntohs(kern_entry->right), (short)ntohs(kern_entry->value)); - kern_entry++; - } - } - ptr += subtable->length; - } -} - diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/ttf.h b/application/third_party/dompdf/lib/ttf2ufm/src/ttf.h deleted file mode 100644 index 8c38808d..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/ttf.h +++ /dev/null @@ -1,172 +0,0 @@ -/* - * see COPYRIGHT - */ - -/* these definitions are mostly taken from Microsoft's True Type - documentation. -*/ - -#define BYTE unsigned char -#define CHAR signed char -#define USHORT unsigned short -#define SHORT signed short -#define ULONG unsigned int -#define LONG signed int -#define FWORD SHORT -#define UFWORD USHORT - -#define ONOROFF 0x01 -#define XSHORT 0x02 -#define YSHORT 0x04 -#define REPEAT 0x08 -#define XSAME 0x10 -#define YSAME 0x20 - -#define ARG_1_AND_2_ARE_WORDS 0x0001 -#define ARGS_ARE_XY_VALUES 0x0002 -#define XY_BOUND_TO_GRID 0x0004 -#define WE_HAVE_A_SCALE 0x0008 -#define MORE_COMPONENTS 0x0020 -#define WE_HAVE_AN_X_AND_Y_SCALE 0x0040 -#define WE_HAVE_A_TWO_BY_TWO 0x0080 -#define WE_HAVE_INSTRUCTIONS 0x0100 -#define USE_MY_METRICS 0x0200 - -typedef struct short_2 { - SHORT upper; - USHORT lower; -} FIXED ; - -typedef struct longhormetric { - UFWORD advanceWidth; - FWORD lsb; -} LONGHORMETRIC; - -typedef struct ttf_hhea { - BYTE version[4]; - SHORT ascender, descender, lineGap; - USHORT advnaceWidthMax; - SHORT minLSB, minRSB, xMaxExtent; - SHORT caretSlopeRise, caretSlopeRun; - SHORT reserved[5]; - SHORT metricDataFormat; - USHORT numberOfHMetrics; -} TTF_HHEA; - -typedef struct ttf_dir_entry { - char tag[4]; - ULONG checksum; - ULONG offset; - ULONG length; -} TTF_DIR_ENTRY ; - -typedef struct ttf_directory { - ULONG sfntVersion; - USHORT numTables; - USHORT searchRange; - USHORT entrySelector; - USHORT rangeShift; - TTF_DIR_ENTRY list; -} TTF_DIRECTORY ; - -typedef struct ttf_name_rec { - USHORT platformID; - USHORT encodingID; - USHORT languageID; - USHORT nameID; - USHORT stringLength; - USHORT stringOffset; -} TTF_NAME_REC; - -typedef struct ttf_name { - USHORT format; - USHORT numberOfNameRecords; - USHORT offset; - TTF_NAME_REC nameRecords; -} TTF_NAME ; - -typedef struct ttf_head { - ULONG version; - ULONG fontRevision; - ULONG checksumAdjust; - ULONG magicNo; - USHORT flags; - USHORT unitsPerEm; - BYTE created[8]; - BYTE modified[8]; - FWORD xMin, yMin, xMax, yMax; - USHORT macStyle, lowestRecPPEM; - SHORT fontDirection, indexToLocFormat, glyphDataFormat; -} TTF_HEAD ; - -typedef struct ttf_kern { - USHORT version, nTables; -} TTF_KERN ; - -typedef struct ttf_kern_sub { - USHORT version, length, coverage; - USHORT nPairs, searchRange, entrySelector, rangeShift; -} TTF_KERN_SUB; - -typedef struct ttf_kern_entry { - USHORT left, right; - FWORD value; -} TTF_KERN_ENTRY; - -typedef struct ttf_cmap_fmt0 { - USHORT format; - USHORT length; - USHORT version; - BYTE glyphIdArray[256]; -} TTF_CMAP_FMT0; - -typedef struct ttf_cmap_fmt4 { - USHORT format; - USHORT length; - USHORT version; - USHORT segCountX2; - USHORT searchRange; - USHORT entrySelector; - USHORT rangeShift; -} TTF_CMAP_FMT4; - -typedef struct ttf_cmap_entry { - USHORT platformID; - USHORT encodingID; - ULONG offset; -} TTF_CMAP_ENTRY; - -typedef struct ttf_cmap { - USHORT version; - USHORT numberOfEncodingTables; - TTF_CMAP_ENTRY encodingTable[1]; -} TTF_CMAP ; - -typedef struct ttf_glyf { - SHORT numberOfContours; - FWORD xMin, yMin, xMax, yMax; -} TTF_GLYF ; - -typedef struct ttf_maxp { - ULONG version; - USHORT numGlyphs, maxPoints, maxContours; - USHORT maxCompositePoints, maxCompositeContours; - USHORT maxZones, maxTwilightPoints, maxStorage; - USHORT maxFunctionDefs, maxInstructionsDefs; - USHORT maxSizeOfInstructions, maxComponentElements; - USHORT maxComponentDepth; -} TTF_MAXP ; - -typedef struct ttf_post_head { - ULONG formatType; - FIXED italicAngle; - FWORD underlinePosition; - FWORD underlineThickness; - ULONG isFixedPitch; - ULONG minMemType42; - ULONG maxMemType42; - ULONG minMemType1; - ULONG maxMemType1; - USHORT numGlyphs; - USHORT glyphNameIndex; -} TTF_POST_HEAD ; diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/ttf2pt1.1 b/application/third_party/dompdf/lib/ttf2ufm/src/ttf2pt1.1 deleted file mode 100644 index b5a416a1..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/ttf2pt1.1 +++ /dev/null @@ -1,822 +0,0 @@ -.rn '' }` -''' $RCSfile: ttf2pt1.1,v $$Revision: 1.1 $$Date: 2008-03-12 06:35:44 $ -''' -''' $Log: not supported by cvs2svn $ -''' -.de Sh -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. -.de Sp -.if t .sp .5v -.if n .sp -.. -.de Ip -.br -.ie \\n(.$>=3 .ne \\$3 -.el .ne 3 -.IP "\\$1" \\$2 -.. -.de Vb -.ft CW -.nf -.ne \\$1 -.. -.de Ve -.ft R - -.fi -.. -''' -''' -''' Set up \*(-- to give an unbreakable dash; -''' string Tr holds user defined translation string. -''' Bell System Logo is used as a dummy character. -''' -.tr \(*W-|\(bv\*(Tr -.ie n \{\ -.ds -- \(*W- -.ds PI pi -.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch -.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch -.ds L" "" -.ds R" "" -''' \*(M", \*(S", \*(N" and \*(T" are the equivalent of -''' \*(L" and \*(R", except that they are used on ".xx" lines, -''' such as .IP and .SH, which do another additional levels of -''' double-quote interpretation -.ds M" """ -.ds S" """ -.ds N" """"" -.ds T" """"" -.ds L' ' -.ds R' ' -.ds M' ' -.ds S' ' -.ds N' ' -.ds T' ' -'br\} -.el\{\ -.ds -- \(em\| -.tr \*(Tr -.ds L" `` -.ds R" '' -.ds M" `` -.ds S" '' -.ds N" `` -.ds T" '' -.ds L' ` -.ds R' ' -.ds M' ` -.ds S' ' -.ds N' ` -.ds T' ' -.ds PI \(*p -'br\} -.\" If the F register is turned on, we'll generate -.\" index entries out stderr for the following things: -.\" TH Title -.\" SH Header -.\" Sh Subsection -.\" Ip Item -.\" X<> Xref (embedded -.\" Of course, you have to process the output yourself -.\" in some meaninful fashion. -.if \nF \{ -.de IX -.tm Index:\\$1\t\\n%\t"\\$2" -.. -.nr % 0 -.rr F -.\} -.TH TTF2PT1 1 "version 3.4.4" "December 31, 2003" "TTF2PT1 Font Converter" -.UC -.if n .hy 0 -.if n .na -.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' -.de CQ \" put $1 in typewriter font -.ft CW -'if n "\c -'if t \\&\\$1\c -'if n \\&\\$1\c -'if n \&" -\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7 -'.ft R -.. -.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2 -. \" AM - accent mark definitions -.bd B 3 -. \" fudge factors for nroff and troff -.if n \{\ -. ds #H 0 -. ds #V .8m -. ds #F .3m -. ds #[ \f1 -. ds #] \fP -.\} -.if t \{\ -. ds #H ((1u-(\\\\n(.fu%2u))*.13m) -. ds #V .6m -. ds #F 0 -. ds #[ \& -. ds #] \& -.\} -. \" simple accents for nroff and troff -.if n \{\ -. ds ' \& -. ds ` \& -. ds ^ \& -. ds , \& -. ds ~ ~ -. ds ? ? -. ds ! ! -. ds / -. ds q -.\} -.if t \{\ -. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" -. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' -. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' -. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' -. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' -. ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10' -. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m' -. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' -. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10' -.\} -. \" troff and (daisy-wheel) nroff accents -.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' -.ds 8 \h'\*(#H'\(*b\h'-\*(#H' -.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#] -.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u' -.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u' -.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#] -.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] -.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' -.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' -.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] -.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] -.ds ae a\h'-(\w'a'u*4/10)'e -.ds Ae A\h'-(\w'A'u*4/10)'E -.ds oe o\h'-(\w'o'u*4/10)'e -.ds Oe O\h'-(\w'O'u*4/10)'E -. \" corrections for vroff -.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' -.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' -. \" for low resolution devices (crt and lpr) -.if \n(.H>23 .if \n(.V>19 \ -\{\ -. ds : e -. ds 8 ss -. ds v \h'-1'\o'\(aa\(ga' -. ds _ \h'-1'^ -. ds . \h'-1'. -. ds 3 3 -. ds o a -. ds d- d\h'-1'\(ga -. ds D- D\h'-1'\(hy -. ds th \o'bp' -. ds Th \o'LP' -. ds ae ae -. ds Ae AE -. ds oe oe -. ds Oe OE -.\} -.rm #[ #] #H #V #F C -.SH "NAME" -TTF2PT1 \- A True Type to PostScript Type 1 Font Converter -.SH "SYNOPSIS" -\f(CWttf2pt1 \fI[-options] ttffont.ttf [Fontname]\fR\fR -.PP -or -.PP -\f(CWttf2pt1 \fI[-options] ttffont.ttf -\fR\fR -.SH "DESCRIPTION" -Ttf2pt1 is a font converter from the True Type format (and some other formats -supported by the FreeType library as well) to the Adobe Type1 format. -.PP -The versions 3.0 and later got rather extensive post-processing algorithm that -brings the converted fonts to the requirements of the Type1 standard, tries to -correct the rounding errors introduced during conversions and some simple -kinds of bugs that are typical for the public domain TTF fonts. It -also generates the hints that enable much better rendering of fonts in -small sizes that are typical for the computer displays. But everything -has its price, and some of the optimizations may not work well for certain -fonts. That's why the options were added to the converter, to control -the performed optimizations. -.SH "OPTIONS" -The first variant creates the file \f(CWFontname.pfa\fR (or \f(CWFontname.pfb\fR if the -option \*(L'\fB\-b\fR\*(R' was used) with the converted font and \f(CWFontname.afm\fR with the -font metrics, the second one prints the font or another file (if the option -\&\*(R'\fB\-G\fR\*(R' was used) on the standard output from where it can be immediately -piped through some filter. If no \f(CWFontname\fR is specified for the first -variant, the name is generated from \f(CWttffont\fR by replacing the \f(CW.ttf\fR -filename suffix. -.PP -Most of the time no options are neccessary (with a possible exception -of \*(L'\fB\-e\fR'). But if there are some troubles with the resulting font, they -may be used to control the conversion. -The \fBoptions\fR are: -.Ip "\(bu" 2 -\f(CW\fB-a\fR\fR \- Include all the glyphs from the source file into the converted -file. If this option is not specified then only the glyphs that have -been assigned some encoding are included, because the rest of glyphs -would be inaccessible anyway and would only consume the disk space. -But some applications are clever enough to change the encoding on -the fly and thus use the other glyphs, in this case they could -benefit from using this option. But there is a catch: the X11 library -has rather low limit for the font size. Including more glyphs increases -the file size and thus increases the chance of hitting this limit. -See \f(CWapp/X11/README\fR for the description of a -patch to X11 which fixes this problem. -.Ip "\(bu" 2 -\f(CW\fB-b\fR\fR \- Encode the resulting font to produce a ready \f(CW.pfb\fR file. -.Ip "\(bu" 2 -\f(CW\fB-d \fIsuboptions\fR\fR\fR \- Debugging options. The suboptions are: -.Sp -\f(CW\fBa\fR\fR \- Print out the absolute coordinates of dots in outlines. Such -a font can not be used by any program (that's why this option is -incompatible with \*(L'\fB\-e\fR') but it has proven to be a valuable debuging -information. -.Sp -\f(CW\fBr\fR\fR \- Do not reverse the direction of outlines. The \s-1TTF\s0 fonts have -the standard direction of outlines opposite to the Type1 fonts. So -they should be reversed during proper conversion. This option -may be used for debugging or to handle a \s-1TTF\s0 font with wrong -direction of outlines (possibly, converted in a broken way from -a Type1 font). The first signs of the wrong direction are the -letters like \*(L"P\*(R" or \*(L"B\*(R" without the unpainted \*(L"holes\*(R" inside. -.Ip "\(bu" 2 -\f(CW\fB-e\fR\fR \- Assemble the resulting font to produce a ready \f(CW.pfa\fR file. -.Sp -[ S.B.: Personally I don't think that this option is particularly useful. -The same result may be achieved by piping the unassembled data -through t1asm, the Type 1 assembler. And, anyways, it's good to -have the t1utils package handy. But Mark and many users think that -this functionality is good and it took not much time to add this option. ] -.Ip "\(bu" 2 -\f(CW\fB-F\fR\fR \- Force the Unicode encoding: any type of \s-1MS\s0 encoding specified -in the font is ignored and the font is treated like it has Unicode -encoding. \fB\s-1WARNING\s0:\fR this option is intended for buggy fonts -which actually are in Unicode but are marked as something else. The -effect on the other fonts is unpredictable. -.Ip "\(bu" 2 -\f(CW\fB-G \fIsuboptions\fR\fR\fR \- File generation options. The suboptions may be lowercase -or uppercase, the lowercase ones disable the generation of particular -files, the corresponding uppercase suboptions enable the generation of the -same kind of files. If the result of ttf2pt1 is requested to be printed on -the standard output, the last enabling suboption of \fB\-G\fR determines -which file will be written to the standard output and the rest of files -will be discarded. For example, \fB\-G A\fR will request the \s-1AFM\s0 file. -The suboptions to disable/enable the generation of the files are: -.Sp -\f(CW\fBf/F\fR\fR \- The font file. Depending on the other options this file -will have one of the suffixes \f(CW.t1a\fR, \f(CW.pfa\fR or \f(CW.pfb\fR. If the conversion result -is requested on the standard output ('\f(CW-\fR\*(R' is used as the output file name) -then the font file will also be written there by default, if not overwritten -by another suboption of \fB\-G\fR. -\fBDefault: enabled\fR -.Sp -\f(CW\fBa/A\fR\fR \- The Adobe font metrics file (\f(CW.afm\fR). -\fBDefault: enabled\fR -.Sp -\f(CW\fBe/E\fR\fR \- The dvips encoding file (\f(CW.enc\fR). -\fBDefault: disabled\fR -.Ip "\(bu" 2 -\f(CW\fB-l \fIlanguage\fR[+\fIargument\fR]\fR\fR \- Extract the fonts for the specified language from a -multi-language Unicode font. If this option is not used the converter -tries to guess the language by the values of the shell variable \s-1LANG\s0. -If it is not able to guess the language by \s-1LANG\s0 it tries all the -languages in the order they are listed. -.Sp -After the plus sign an optional argument for the language extractor -may be specified. The format of the argument is absolutely up to -the particular language converter. The primary purpose of the -argument is to support selection of planes for the multi-plane -Eastern encodings but it can also be used in any other way. The -language extractor may decide to add the plane name in some form -to the name of the resulting font. None of the currently supported -languages make any use of the argument yet. -.Sp -As of now the following languages are supported: -.Sp -\ \ \f(CWlatin1\fR \- for all the languages using the Latin-1 encoding -.Sp -\ \ \f(CWlatin2\fR \- for the Central European languages -.Sp -\ \ \f(CWlatin4\fR \- for the Baltic languages -.Sp -\ \ \f(CWlatin5\fR \- for the Turkish language -.Sp -\ \ \f(CWcyrillic\fR \- for the languages with Cyrillic alphabet -.Sp -\ \ \f(CWrussian\fR \- historic synonym for cyrillic -.Sp -\ \ \f(CWbulgarian\fR \- historic synonym for cyrillic -.Sp -\ \ \f(CWadobestd\fR \- for the AdobeStandard encoding used by TeX -.Sp -\ \ \f(CWplane+\fIargument\fR\fR \- to select one plane from a multi-byte encoding -.Sp -The argument of the \*(L"\f(CWplane\fR\*(R" language may be in one of three forms: -.Sp -\ \ \f(CWplane+\fBpid=\fR\fI<pid>\fR\fB,eid=\fR\fI<eid>\fR\fR -.Sp -\ \ \f(CWplane+\fBpid=\fR\fI<pid>\fR\fB,eid=\fR\fI<eid>\fR\fB,\fR\fI<plane_number>\fR\fR -.Sp -\ \ \f(CWplane+\fI<plane_number>\fR\fR -.Sp -Pid (\s-1TTF\s0 platform id) and eid (\s-1TTF\s0 encoding id) select a particular -\s-1TTF\s0 encoding table in the original font. They are specified as decimal -numbers. If this particular encoding table is not present in the font -file then the conversion fails. The native ("ttf") front-end parser supports -only pid=3 (Windows platform), the FreeType-based ("ft") front-end supports -any platform. If pid/eid is not specified then the \s-1TTF\s0 encoding table is -determined as usual: Unicode encoding if it's first or an 8-bit encoding -if not (and for an 8-bit encoding the plane number is silently ignored). -To prevent the converter from falling back to an 8-bit encoding, specify -the Unicode pid/eid value explicitly. -.Sp -Plane_number is a hexadecimal (if starts with \*(L"\fB0x\fR") or decimal number. -It gives the values of upper bytes for which 256 characters will be -selected. If not specified, defaults to 0. It is also used as a font -name suffix (the leading \*(L"0x\*(R" is not included into the suffix). -.Sp -\fB\s-1NOTE\s0:\fR -You may notice that the language names are not uniform: some are the -names of particular languages and some are names of encodings. This -is because of the different approaches. The original idea was to -implement a conversion from Unicode to the appropriate Windows -encoding for a given language. And then use the translation tables -to generate the fonts in whatever final encodings are needed. This -would allow to pile together the Unicode fonts and the non-Unicode -Windows fonts for that language and let the program to sort them out -automatically. And then generate fonts in all the possible encodings -for that language. An example of this approach is the Russian language -support. But if there is no multiplicity of encodings used for some -languages and if the non-Unicode fonts are not considered important -by the users, another way would be simpler to implement: just provide -only one table for extraction of the target encoding from Unicode -and don't bother with the translation tables. The latin* \*(L"languages\*(R" -are examples of this approach. If somebody feels that he needs the -Type1 fonts both in Latin-* and Windows encodings he or she is absolutely -welcome to submit the code to implement it. -.Sp -\fB\s-1WARNING\s0:\fR -Some of the glyphs included into the AdobeStandard encoding are not -included into the Unicode standard. The most typical examples of such -glyphs are ligatures like \*(L'fi\*(R', \*(L'fl\*(R' etc. Because of this the font -designers may place them at various places. The converter tries to -do its best, if the glyphs have honest Adobe names and/or are -placed at the same codes as in the Microsoft fonts they will be -picked up. Otherwise a possible solution is to use the option \*(L'\fB\-L\fR\*(R' -with an external map. -.Ip "\(bu" 2 -\f(CW\fB-L \fIfile\fR[+[pid=\fI<pid>\fR,eid=\fI<eid>\fR,][\fIplane\fR]]\fR\fR \- Extract the fonts for the specified -language from a multi-language font using the map from this file. This is -rather like the option \*(L'\fB\-l\fR\*(R' but the encoding map is not -compiled into the program, it's taken from that file, so it's -easy to edit. Examples of such files are provided in -\f(CWmaps/adobe-standard-encoding.map\fR, \f(CWCP1250.map\fR. (\fB\s-1NOTE\s0:\fR -the \*(L'standard encoding\*(R' map does not include all the glyphs of the -AdobeStandard encoding, it's provided only as an example.) The -description of the supported map formats is in the file -\f(CWmaps/unicode-sample.map\fR. -.Sp -Likewise to \*(L'\fB\-l\fR\*(R', an argument may be specified after the map file -name. But in this case the argument has fixed meaning: it selects the -original \s-1TTF\s0 encoding table (the syntax is the same as in \*(L'\fB\-l plane\fR') -and/or a plane of the map file. The plane name also gets added after dash -to the font name. The plane is a concept used in the Eastern fonts with big -number of glyphs: one \s-1TTF\s0 font gets divided into multiple Type1 fonts, -each containing one plane of up to 256 glyphs. But with a little -creativity this concept may be used for other purposes of combining -multiple translation maps into one file. To extract multiple planes -from a \s-1TTF\s0 font \f(CWttf2pt1\fR must be run multiple times, each time with -a different plane name specified. -.Sp -The default original \s-1TTF\s0 encoding table used for the option \*(L'\fB\-L\fR\*(R' is -Unicode. The map files may include directives to specify different original -\s-1TTF\s0 encodings. However if the pid/eid pair is specified with -it overrides any original encoding specified in the map file. -.Ip "\(bu" 2 -\f(CW\fB-m \fItype\fR=\fIvalue\fR\fR\fR \- Set maximal or minimal limits of resources. -These limits control the the font generation by limiting the resources -that the font is permitted to require from the PostScript interpreter. -The currently supported types of limits are: -.Sp -\f(CW\fBh\fR\fR \- the maximal hint stack depth for the substituted hints. -The default value is 128, according to the limitation in X11. This seems to -be the lowest (and thus the safest) widespread value. To display the -hint stack depth required by each glyph in a \f(CW.t1a\fR file use the script -\f(CWscripts/cntstems.pl\fR. -.Ip "\(bu" 2 -\f(CW\fB-O \fIsuboptions\fR\fR\fR \- Outline processing options. The suboptions -may be lowercase or uppercase, the lowercase ones disable the features, -the corresponding uppercase suboptions enable the same features. -The suboptions to disable/enable features are: -.Sp -\f(CW\fBb/B\fR\fR \- Guessing of the ForceBold parameter. This parameter helps -the Type1 engine to rasterize the bold fonts properly at small sizes. -But the algorithm used to guess the proper value of this flag makes -that guess based solely on the font name. In rare cases that may cause -errors, in these cases you may want to disable this guessing. -\fBDefault: enabled\fR -.Sp -\f(CW\fBh/H\fR\fR \- Autogeneration of hints. The really complex outlines -may confuse the algorithm, so theoretically it may be useful -sometimes to disable them. Although up to now it seems that -even bad hints are better than no hints at all. -\fBDefault: enabled\fR -.Sp -\f(CW\fBu/U\fR\fR \- Hint substitution. Hint substitution is a technique -permitting generation of more detailed hints for the rasterizer. It allows -to use different sets of hints for different parts of a glyph and change -these sets as neccessary during rasterization (that's why \*(L"substituted"). -So it should improve the quality of the fonts rendered at small sizes. -But there are two catches: First, the X11 library has rather low limit for -the font size. More detailed hints increase the file size and thus increase -the chance of hitting this limit (that does not mean that you shall hit it -but you may if your fonts are particularly big). This is especially -probable for Unicode fonts converted with option \*(L'\fB\-a\fR\*(R', so you may want to -use \*(L'\fB\-a\fR\*(R' together with \*(L'\fB\-Ou\fR\*(R'. See \f(CWapp/X11/README\fR for the description of -a patch to X11 which fixes this problem. Second, some rasterizers (again, -X11 is the typical example) have a limitation for total number of hints -used when drawing a glyph (also known as the hint stack depth). If that -stack overflows the glyph is ignored. Starting from version 3.22 \f(CWttf2pt1\fR -uses algorithms to minimizing this depth, with the trade-off of slightly -bigger font files. The glyphs which still exceed the limit set by option -\&\*(R'\fB\-mh\fR\*(R' have all the substituted hints removed and only base hints left. -The algorithms seem to have been refined far enough to make the fonts with -substituted hints look better than the fonts without them or at least the -same. Still if the original fonts are not well-designed the detailed -hinting may emphasize the defects of the design, such as non-even thickness -of lines. So provided that you are not afraid of the X11 bug the best idea -would be to generate a font with this feature and without it, then compare -the results using the program \f(CWother/cmpf\fR (see the description -in \f(CWother/README\fR) and decide which one looks better. -\fBDefault: enabled\fR -.Sp -\f(CW\fBo/O\fR\fR \- Space optimization of the outlines\*(R' code. This kind of optimization -never hurts, and the only reason to disable this feature is for comparison -of the generated fonts with the fonts generated by the previous versions of -converter. Well, it _almost_ never hurts. As it turned out there exist -some brain-damaged printers which don't understand it. Actually this -feature does not change the outlines at all. The Type 1 font manual -provides a set of redundant operators that make font description shorter, -such as \*(L'10 hlineto\*(R' instead of \*(L'0 10 rlineto\*(R' to describe a horizontal -line. This feature enables use of these operators. -\fBDefault: enabled\fR -.Sp -\f(CW\fBs/S\fR\fR \- Smoothing of outlines. If the font is broken in some -way (even the ones that are not easily noticeable), such smoothing -may break it further. So disabling this feature is the first thing to be -tried if some font looks odd. But with smoothing off the hint generation -algorithms may not work properly too. -\fBDefault: enabled\fR -.Sp -\f(CW\fBt/T\fR\fR \- Auto-scaling to the 1000x1000 Type1 standard matrix. The -\s-1TTF\s0 fonts are described in terms of an arbitrary matrix up to -4000x4000. The converted fonts must be scaled to conform to -the Type1 standard. But the scaling introduces additional rounding -errors, so it may be curious sometimes to look at the font in its -original scale. -\fBDefault: enabled\fR -.Sp -\f(CW\fBv/V\fR\fR \- Do vectorization on the bitmap fonts. Functionally -\*(L"vectorization\*(R" is the same thing as \*(L"autotracing\*(R", a different word is -used purely to differentiate it from the Autotrace library. It tries to -produce nice smooth outlines from bitmaps. This feature is still a work -in progress though the results are already mostly decent. -\fBDefault: disabled\fR -.Sp -\f(CW\fBw/W\fR\fR \- Glyphs\*(R' width corection. This option is designed to be -used on broken fonts which specify too narrow widths for the -letters. You can tell that a font can benefit from this option -if you see that the characters are smashed together without -any whitespace between them. This option causes the converter -to set the character widths to the actual width of this character -plus the width of a typical vertical stem. But on the other hand -the well-designed fonts may have characters that look better if -their widths are set slightly narrower. Such well-designed fonts -will benefit from disabling this feature. You may want to convert -a font with and without this feature, compare the results and -select the better one. This feature may be used only on proportional -fonts, it has no effect on the fixed-width fonts. -\fBDefault: disabled\fR -.Sp -\f(CW\fBz/Z\fR\fR \- Use the Autotrace library on the bitmap fonts. The results -are horrible and \fBthe use of this option is not recommended\fR. This option is -present for experimental purposes. It may change or be removed in the -future. The working tracing can be achieved with option \f(CW\fB-OV\fR\fR. -\fBDefault: disabled\fR -.Ip "\(bu" 2 -\f(CW\fB-p \fIparser_name\fR\fR\fR \- Use the specified front-end parser to read the font file. -If this option is not used, ttf2pt1 selects the parser automatically based -on the suffix of the font file name, it uses the first parser in its -list that supports this font type. Now two parsers are supported: -.Sp -\ \ \f(CWttf\fR \- built-in parser for the ttf files (suffix \f(CW.ttf\fR) -.Sp -\ \ \f(CWbdf\fR \- built-in parser for the \s-1BDF\s0 files (suffix \f(CW.bdf\fR) -.Sp -\ \ \f(CWft\fR \- parser based on the FreeType-2 library (suffixes \f(CW.ttf\fR, -\&\f(CW.otf\fR, \f(CW.pfa\fR, \f(CW.pfb\fR) -.Sp -The parser \f(CWft\fR is \fB\s-1NOT\s0\fR linked in by default. See \f(CWMakefile\fR -for instructions how to enable it. We do no support this parser on -Windows: probably it will work but nobody tried and nobody knows how -to build it. -.Sp -The conversion of the bitmap fonts (such as \s-1BDF\s0) is simplistic yet, -producing jagged outlines. When converting such fonts, it might be -a good idea to turn off the hint substitution (using option \fB\-Ou\fR) -because the hints produced will be huge but not adding much to the -quality of the fonts. -.Ip "\(bu" 2 -\f(CW\fB-u \fInumber\fR\fR\fR \- Mark the font with this value as its -UniqueID. The UniqueID is used by the printers with the hard disks -to cache the rasterized characters and thus significantly -speed-up the printing. Some of those printers just can't -store the fonts without UniqueID on their disk.The problem -is that the \s-1ID\s0 is supposed to be unique, as it name says. And -there is no easy way to create a guaranteed unique \s-1ID\s0. Adobe specifies -the range 4000000-4999999 for private IDs but still it's difficult -to guarantee the uniqueness within it. So if you don't really need the -UniqueID don't use it, it's optional. Luckily there are a few millions of -possible IDs, so the chances of collision are rather low. -If instead of the number a special value \*(L'\f(CW\fBA\fR\fR\*(R' is given -then the converter generates the value of UniqueID automatically, -as a hash of the font name. (\fB\s-1NOTE\s0:\fR in the version 3.22 the -algorithm for autogeneration of UniqueID was changed to fit the values -into the Adobe-spacified range. This means that if UniqueIDs were used -then the printer's cache may need to be flushed before replacing the -fonts converted by an old version with fonts converted by a newer version). -A simple way to find if any of the fonts in a given directory have -duplicated UniqueIDs is to use the command: -.Sp -\f(CW\ \ cat *.pf[ab] | grep UniqueID | sort | uniq -c | grep -v ' 1 '\fR -.Sp -Or if you use \f(CWscripts/convert\fR it will do that for you automatically -plus it will also give the exact list of files with duplicate UIDs. -.Ip "\(bu" 2 -\f(CW\fB-v \fIsize\fR\fR\fR \- Re-scale the font to get the size of a typical uppercase -letter somewhere around the specified size. Actually, it re-scales -the whole font to get the size of one language-dependent letter to be -at least of the specified size. Now this letter is \*(L"A\*(R" in all the -supported languages. The size is specified in the points of the -Type 1 coordinate grids, the maximal value is 1000. This is an -experimental option and should be used with caution. It tries to -increase the visible font size for a given point size and thus make -the font more readable. But if overused it may cause the fonts to -look out of scale. As of now the interesting values of size for -this option seem to be located mostly between 600 and 850. This -re-scaling may be quite useful but needs more experience to -understand the balance of its effects. -.Ip "\(bu" 2 -\f(CW\fB-W \fIlevel\fR\fR\fR \- Select the verbosity level of the warnings. -Currently the levels from 0 to 4 are supported. Level 0 means no warnings -at all, level 4 means all the possible warnings. The default level is 3. -Other levels may be added in the future, so using the level number 99 is -recommended to get all the possible warnings. Going below level 2 is -not generally recommended because you may miss valuable information about -the problems with the fonts being converted. -.Ip "\(bu" 2 -\fBObsolete option:\fR -\f(CW\fB-A\fR\fR \- Print the font metrics (.afm file) instead of the font on \s-1STDOUT\s0. -Use \fB\-\s-1GA\s0\fR instead. -.Ip "\(bu" 2 -\fBVery obsolete option:\fR -.Sp -The algorithm that implemented the forced fixed width had major -flaws, so it was disabled. The code is still in the program and -some day it will be refined and returned back. Meanwhile the -option name \*(L'\fB\-f\fR\*(R' was reused for another option. The old version was: -.Sp -\f(CW\fB-f\fR\fR \- Don't try to force the fixed width of font. Normally the converter -considers the fonts in which the glyph width deviates by not more -than 5% as buggy fixed width fonts and forces them to have really -fixed width. If this is undesirable, it can be disabled by this option. -.PP -The \f(CW.pfa\fR font format supposes that the description of the characters -is binary encoded and encrypted. This converter does not encode or -encrypt the data by default, you have to specify the option \*(L'\fB\-e\fR\*(R' -or use the \f(CWt1asm\fR program to assemble (that means, encode and -encrypt) the font program. The \f(CWt1asm\fR program that is included with -the converter is actually a part of the \f(CWt1utils\fR package, rather old -version of which may be obtained from -.PP -http://ttf2pt1.sourceforge.net/t1utils.tar.gz -.PP -Note that \f(CWt1asm\fR from the old version of that package won't work properly -with the files generated by \f(CWttf2pt1\fR version 3.20 and later. Please use -\f(CWt1asm\fR packaged with \f(CWttf2pt1\fR or from the new version \f(CWt1utils\fR -instead. For a newer version of \f(CWt1utils\fR please look at -.PP -http://www.lcdf.org/~eddietwo/type/ -.SH "EXAMPLES" -So, the following command lines: -.PP -\f(CWttf2pt1 -e ttffont.ttf t1font\fR -.PP -\f(CWttf2pt1 ttffont.ttf - | t1asm >t1font.pfa\fR -.PP -represent two ways to get a working font. The benefit of the second form -is that other filters may be applied to the font between the converter -and assembler. -.SH "FILES" -.Ip "\(bu" 2 -\s-1TTF2PT1_LIBXDIR/\s0t1asm -.Ip "\(bu" 2 -\s-1TTF2PT1_SHAREDIR\s0/* -.Ip "\(bu" 2 -\s-1TTF2PT1_SHAREDIR/\s0scripts/* -.Ip "\(bu" 2 -\s-1TTF2PT1_SHAREDIR/\s0other/* -.Ip "\(bu" 2 -\s-1TTF2PT1_SHAREDIR/README\s0 -.Ip "\(bu" 2 -\s-1TTF2PT1_SHAREDIR/FONTS\s0 -.SH "SEE ALSO" -.Ip "\(bu" 4 -the \fIttf2pt1_convert(1)\fR manpage -.Ip "\(bu" 4 -the \fIttf2pt1_x2gs(1)\fR manpage -.Ip "\(bu" 4 -the \fIt1asm(1)\fR manpage -.Ip "\(bu" 4 -ttf2pt1-announce@lists.sourceforge.net -.Sp -The mailing list with announcements about ttf2pt1. It is a moderated mailing -with extremely low traffic. Everyone is encouraged to subscribe to keep in -touch with the current status of project. To subscribe use the Web interface -at http://lists.sourceforge.net/mailman/listinfo/ttf2pt1-announce. -If you have only e-mail access to the Net then send a subscribe request to -the development mailing list ttf2pt1-devel@lists.sourceforge.net and somebody -will help you with subscription. -.Ip "\(bu" 4 -ttf2pt1-devel@lists.sourceforge.net -.Sp -ttf2pt1-users@lists.sourceforge.net -.Sp -The ttf2pt1 mailing lists for development and users issues. They have not -that much traffic either. To subscribe use the Web interface at -http://lists.sourceforge.net/mailman/listinfo/ttf2pt1-devel -and http://lists.sourceforge.net/mailman/listinfo/ttf2pt1-users. -If you have only e-mail access to the Net then send a subscribe request to -the development mailing list ttf2pt1-devel@lists.sourceforge.net and somebody -will help you with subscription. -.Ip "\(bu" 4 -http://ttf2pt1.sourceforge.net -.Sp -The main page of the project. -.Sp -http://www.netspace.net.au/~mheath/ttf2pt1/ -.Sp -The old main page of the project. -.SH "BUGS" -It seems that many Eastern fonts use features of the TTF format that are -not supported by the ttf2pt1's built-in front-end parser. Because of -this for now we recommend using the FreeType-based parser (option -\&\*(R'\fB\-p ft\fR') with the \*(L"\f(CWplane\fR\*(R" language. -.Sh "Troubleshooting and bug reports" -Have problems with conversion of some font ? The converter dumps core ? Or your -printer refuses to understand the converted fonts ? Or some characters are -missing ? Or some characters look strange ? -.PP -Send the bug reports to the ttf2pt1 development mailing list at -ttf2pt1-devel@lists.sourceforge.net. -.PP -Try to collect more information about the problem and include it into -the bug report. (Of course, even better if you would provide a ready -fix, but just a detailed bug report is also good). Provide detailed -information about your problem, this will speed up the response greatly. -Don't just write \*(L"this font looks strange after conversion\*(R" but describe -what's exactly wrong with it: for example, what characters look wrong -and what exactly is wrong about their look. Providing a link to the -original font file would be also a good idea. Try to do a little -troublehooting and report its result. This not only would help with -the fix but may also give you a temporary work-around for the bug. -.PP -First, enable full warnings with option \*(L'\fB\-W99\fR\*(R', save them to -a file and read carefully. Sometimes the prolem is with a not implemented -feature which is reported in the warnings. Still, reporting about such -problems may be a good idea: some features were missed to cut corners, -in hope that no real font is using them. So a report about a font using -such a feature may motivate someone to implement it. Of course, you -may be the most motivated person: after all, you are the one wishing -to convert that font. ;\-) Seriously, the philosophy \*(L"scrath your own itch\*(R" -seems to be the strongest moving force behind the Open Source software. -.PP -The next step is playing with the options. This serves a dual purpose: -on one hand, it helps to localize the bug, on the other hand you may be -able to get a working version of the font for the meantime while the -bug is being fixed. The typical options to try out are: first \*(L'\fB\-Ou\fR\*(R', if -it does not help then \*(L'\fB\-Os\fR\*(R', then \*(L'\fB\-Oh\fR\*(R', then \*(L'\fB\-Oo\fR\*(R'. -They are described in a bit more detail above. Try them one by one -and in combinations. See if with them the resulting fonts look better. -.PP -On some fonts ttf2pt1 just crashes. Commonly that happens because the -font being converted is highly defective (although sometimes the bug -is in ttf2pt1 itself). In any case it should not crash, so the reports -about such cases will help to handle these defects properly in future. -.PP -We try to respond to the bug reports in a timely fashion but alas, this -may not always be possible, especially if the problem is complex. -This is a volunteer project and its resources are limited. Because -of this we would appreciate bug reports as detailed as possible, -and we would appreciate the ready fixes and contributions even more. -.SH "HISTORY" -Based on ttf2pfa by Andrew Weeks, and help from Frank Siegert. -.PP -Modification by Mark Heath. -.PP -Further modification by Sergey Babkin. -.PP -The Type1 assembler by I. Lee Hetherington with modifications by -Kai-Uwe Herbing. - -.rn }` '' -.IX Title "TTF2PT1 1" -.IX Name "TTF2PT1 - A True Type to PostScript Type 1 Font Converter" - -.IX Header "NAME" - -.IX Header "SYNOPSIS" - -.IX Header "DESCRIPTION" - -.IX Header "OPTIONS" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Header "EXAMPLES" - -.IX Header "FILES" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Header "SEE ALSO" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Header "BUGS" - -.IX Subsection "Troubleshooting and bug reports" - -.IX Header "HISTORY" - diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/ttf2pt1.c b/application/third_party/dompdf/lib/ttf2ufm/src/ttf2pt1.c deleted file mode 100644 index 5e7b9c8f..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/ttf2pt1.c +++ /dev/null @@ -1,2694 +0,0 @@ -/* - * True Type Font to Adobe Type 1 font converter - * By Mark Heath <mheath@netspace.net.au> - * Based on ttf2pfa by Andrew Weeks <ccsaw@bath.ac.uk> - * With help from Frank M. Siegert <fms@this.net> - * - * see COPYRIGHT for full copyright notice - * -*********************************************************************** - * - * Orion Richardson <orionr@yahoo.com> - * - * Added bounding box calculations for Unicode glyphs in the .ufm file - * -*********************************************************************** - * - * Steven Wittens <steven@acko.net> - * - * Added generation of .ufm file - * -*********************************************************************** - * - * Sergey Babkin <babkin@users.sourceforge.net>, <sab123@hotmail.com> - * - * Added post-processing of resulting outline to correct the errors - * both introduced during conversion and present in the original font, - * autogeneration of hints (has yet to be improved though) and BlueValues, - * scaling to 1000x1000 matrix, option to print the result on STDOUT, - * support of Unicode to CP1251 conversion, optimization of the - * resulting font code by space (that improves the speed too). Excluded - * the glyphs that are unaccessible through the encoding table from - * the output file. Added the built-in Type1 assembler (taken from - * the `t1utils' package). - * -*********************************************************************** - * - * Thomas Henlich <thenlich@rcs.urz.tu-dresden.de> - * - * Added generation of .afm file (font metrics) - * Read encoding information from encoding description file - * Fixed bug in error message about unknown language ('-l' option) - * Added `:' after %%!PS-AdobeFont-1.0 - * changed unused entries in ISOLatin1Encoding[] from .notdef to c127,c128... - * -*********************************************************************** - * - * Thomas Henlich <thenlich@rcs.urz.tu-dresden.de> - * - * Added generation of .afm file (font metrics) - * -*********************************************************************** - * - * Bug Fixes: -************************************************************************ - * - * Sun, 21 Jun 1998 Thomas Henlich <thenlich@Rcs1.urz.tu-dresden.de> - * 1. "width" should be "short int" because otherwise: - * characters with negative widths (e.g. -4) become *very* wide (65532) - * 2. the number of /CharStrings is numglyphs and not numglyphs+1 - * -*********************************************************************** - * - * - * - * The resultant font file produced by this program still needs to be ran - * through t1asm (from the t1utils archive) to produce a completely valid - * font. - * - */ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <time.h> -#include <ctype.h> -#include <math.h> - -#ifdef _GNU_SOURCE -#include <getopt.h> -#endif - -#ifndef WINDOWS -# include <unistd.h> -# include <netinet/in.h> -# define BITBUCKET "/dev/null" -# include <sys/wait.h> -#else -# define WINDOWS_FUNCTIONS /* ask to define functions - in one file only */ -# include "windows.h" -# define BITBUCKET "NUL" -# define snprintf _snprintf -#endif - -#include "pt1.h" -#include "global.h" -#include "version.h" - -/* globals */ - -/* table of front-ends */ - -extern struct frontsw ttf_sw; -extern struct frontsw bdf_sw; -#if defined(USE_FREETYPE) - extern struct frontsw freetype_sw; -#endif - -struct frontsw *frontswtab[] = { - &bdf_sw, -#if defined(USE_FREETYPE) && defined(PREFER_FREETYPE) - &freetype_sw, -#endif - &ttf_sw, -#if defined(USE_FREETYPE) && !defined(PREFER_FREETYPE) - &freetype_sw, -#endif - NULL /* end of table */ -}; - -struct frontsw *cursw=0; /* the active front end */ -char *front_arg=""; /* optional argument */ - -/* options */ -int encode = 0; /* encode the resulting file */ -int pfbflag = 0; /* produce compressed file */ -int wantafm=0; /* want to see .afm instead of .t1a on stdout */ -int correctvsize=0; /* try to correct the vertical size of characters */ -int wantuid = 0; /* user wants UniqueID entry in the font */ -int allglyphs = 0; /* convert all glyphs, not only 256 of them */ -int warnlevel = 3; /* the level of permitted warnings */ -int forcemap = 0; /* do mapping even on non-Unicode fonts */ -/* options - maximal limits */ -int max_stemdepth = 128; /* maximal depth of stem stack in interpreter (128 - limit from X11) */ -/* options - debugging */ -int absolute = 0; /* print out in absolute values */ -int reverse = 1; /* reverse font to Type1 path directions */ -/* options - suboptions of Outline Processing, defaults are set in table */ -int optimize; /* enables space optimization */ -int smooth; /* enable smoothing of outlines */ -int transform; /* enables transformation to 1000x1000 matrix */ -int hints; /* enables autogeneration of hints */ -int subhints; /* enables autogeneration of substituted hints */ -int trybold; /* try to guess whether the font is bold */ -int correctwidth; /* try to correct the character width */ -int vectorize; /* vectorize the bitmaps */ -int use_autotrace; /* use the autotrace library on bitmap */ -/* options - suboptions of File Generation, defaults are set in table */ -int gen_pfa; /* generate the font file */ -int gen_afm; /* generate the metrics file */ -int gen_ufm; /* generate the unicode metrics file */ -int gen_dvienc; /* generate the dvips encoding file */ - -/* not quite options to select a particular source encoding */ -int force_pid = -1; /* specific platform id */ -int force_eid = -1; /* specific encoding id */ - -/* structure to define the sub-option lists controlled by the - * case: uppercase enables them, lowercase disables - */ -struct subo_case { - char disbl; /* character to disable - enforced lowercase */ - char enbl; /* character to enable - auto-set as toupper(disbl) */ - int *valp; /* pointer to the actual variable containing value */ - int dflt; /* default value */ - char *descr; /* description */ -}; - -int debug = DEBUG; /* debugging flag */ - -FILE *null_file, *pfa_file, *afm_file, *ufm_file, *dvienc_file; -int numglyphs; -struct font_metrics fontm; - -/* non-globals */ -static char *strUID = 0; /* user-supplied UniqueID */ -static unsigned long numUID; /* auto-generated UniqueID */ - -static int ps_fmt_3 = 0; -static double scale_factor, original_scale_factor; - -static char *glyph_rename[ENCTABSZ]; - -/* the names assigned if the original font - * does not specify any - */ - -static char *Fmt3Encoding[256] = { - "c0", "c1", "c2", "c3", - "c4", "c5", "c6", "c7", - "c8", "c9", "c10", "c11", - "c12", "CR", "c14", "c15", - "c16", "c17", "c18", "c19", - "c20", "c21", "c22", "c23", - "c24", "c25", "c26", "c27", - "c28", "c29", "c30", "c31", - "space", "exclam", "quotedbl", "numbersign", - "dollar", "percent", "ampersand", "quotesingle", - "parenleft", "parenright", "asterisk", "plus", - "comma", "hyphen", "period", "slash", - "zero", "one", "two", "three", - "four", "five", "six", "seven", - "eight", "nine", "colon", "semicolon", - "less", "equal", "greater", "question", - "at", "A", "B", "C", - "D", "E", "F", "G", - "H", "I", "J", "K", - "L", "M", "N", "O", - "P", "Q", "R", "S", - "T", "U", "V", "W", - "X", "Y", "Z", "bracketleft", - "backslash", "bracketright", "asciicircum", "underscore", - "grave", "a", "b", "c", - "d", "e", "f", "g", - "h", "i", "j", "k", - "l", "m", "n", "o", - "p", "q", "r", "s", - "t", "u", "v", "w", - "x", "y", "z", "braceleft", - "bar", "braceright", "asciitilde", "c127", - "c128", "c129", "quotesinglbase", "florin", - "quotedblbase", "ellipsis", "dagger", "daggerdbl", - "circumflex", "perthousand", "Scaron", "guilsinglleft", - "OE", "c141", "c142", "c143", - "c144", "quoteleft", "quoteright", "quotedblleft", - "quotedblright", "bullet", "endash", "emdash", - "tilde", "trademark", "scaron", "guilsinglright", - "oe", "c157", "c158", "Ydieresis", - "nbspace", "exclamdown", "cent", "sterling", - "currency", "yen", "brokenbar", "section", - "dieresis", "copyright", "ordfeminine", "guillemotleft", - "logicalnot", "sfthyphen", "registered", "macron", - "degree", "plusminus", "twosuperior", "threesuperior", - "acute", "mu", "paragraph", "periodcentered", - "cedilla", "onesuperior", "ordmasculine", "guillemotright", - "onequarter", "onehalf", "threequarters", "questiondown", - "Agrave", "Aacute", "Acircumflex", "Atilde", - "Adieresis", "Aring", "AE", "Ccedilla", - "Egrave", "Eacute", "Ecircumflex", "Edieresis", - "Igrave", "Iacute", "Icircumflex", "Idieresis", - "Eth", "Ntilde", "Ograve", "Oacute", - "Ocircumflex", "Otilde", "Odieresis", "multiply", - "Oslash", "Ugrave", "Uacute", "Ucircumflex", - "Udieresis", "Yacute", "Thorn", "germandbls", - "agrave", "aacute", "acircumflex", "atilde", - "adieresis", "aring", "ae", "ccedilla", - "egrave", "eacute", "ecircumflex", "edieresis", - "igrave", "iacute", "icircumflex", "idieresis", - "eth", "ntilde", "ograve", "oacute", - "ocircumflex", "otilde", "odieresis", "divide", - "oslash", "ugrave", "uacute", "ucircumflex", - "udieresis", "yacute", "thorn", "ydieresis" -}; - -#ifdef notdef /* { */ -/* This table is not used anywhere in the code - * so it's ifdef-ed out by default but left in - * the source code for reference purposes (and - * possibly for future use) - */ - -static char *ISOLatin1Encoding[256] = { - ".null", ".notdef", ".notdef", ".notdef", - ".notdef", ".notdef", ".notdef", ".notdef", - ".notdef", ".notdef", ".notdef", ".notdef", - ".notdef", "CR", ".notdef", ".notdef", - ".notdef", ".notdef", ".notdef", ".notdef", - ".notdef", ".notdef", ".notdef", ".notdef", - ".notdef", ".notdef", ".notdef", ".notdef", - ".notdef", ".notdef", ".notdef", ".notdef", - "space", "exclam", "quotedbl", "numbersign", - "dollar", "percent", "ampersand", "quoteright", - "parenleft", "parenright", "asterisk", "plus", - "comma", "hyphen", "period", "slash", - "zero", "one", "two", "three", - "four", "five", "six", "seven", - "eight", "nine", "colon", "semicolon", - "less", "equal", "greater", "question", - "at", "A", "B", "C", - "D", "E", "F", "G", - "H", "I", "J", "K", - "L", "M", "N", "O", - "P", "Q", "R", "S", - "T", "U", "V", "W", - "X", "Y", "Z", "bracketleft", - "backslash", "bracketright", "asciicircum", "underscore", - "grave", "a", "b", "c", - "d", "e", "f", "g", - "h", "i", "j", "k", - "l", "m", "n", "o", - "p", "q", "r", "s", - "t", "u", "v", "w", - "x", "y", "z", "braceleft", - "bar", "braceright", "asciitilde", "c127", - "c128", "c129", "quotesinglbase", "florin", - "quotedblbase", "ellipsis", "dagger", "daggerdbl", - "circumflex", "perthousand", "Scaron", "guilsinglleft", - "OE", "c141", "c142", "c143", - "c144", "quoteleft", "quoteright", "quotedblleft", - "quotedblright", "bullet", "endash", "emdash", - "tilde", "trademark", "scaron", "guilsinglright", - "oe", "c157", "c158", "Ydieresis", - "nbspace", "exclamdown", "cent", "sterling", - "currency", "yen", "brokenbar", "section", - "dieresis", "copyright", "ordfeminine", "guillemotleft", - "logicalnot", "sfthyphen", "registered", "macron", - "degree", "plusminus", "twosuperior", "threesuperior", - "acute", "mu", "paragraph", "periodcentered", - "cedilla", "onesuperior", "ordmasculine", "guillemotright", - "onequarter", "onehalf", "threequarters", "questiondown", - "Agrave", "Aacute", "Acircumflex", "Atilde", - "Adieresis", "Aring", "AE", "Ccedilla", - "Egrave", "Eacute", "Ecircumflex", "Edieresis", - "Igrave", "Iacute", "Icircumflex", "Idieresis", - "Eth", "Ntilde", "Ograve", "Oacute", - "Ocircumflex", "Otilde", "Odieresis", "multiply", - "Oslash", "Ugrave", "Uacute", "Ucircumflex", - "Udieresis", "Yacute", "Thorn", "germandbls", - "agrave", "aacute", "acircumflex", "atilde", - "adieresis", "aring", "ae", "ccedilla", - "egrave", "eacute", "ecircumflex", "edieresis", - "igrave", "iacute", "icircumflex", "idieresis", - "eth", "ntilde", "ograve", "oacute", - "ocircumflex", "otilde", "odieresis", "divide", - "oslash", "ugrave", "uacute", "ucircumflex", - "udieresis", "yacute", "thorn", "ydieresis" -}; - -#endif /* } notdef */ - -static char *adobe_StandardEncoding[256] = { - ".notdef", ".notdef", ".notdef", ".notdef", - ".notdef", ".notdef", ".notdef", ".notdef", - ".notdef", ".notdef", ".notdef", ".notdef", - ".notdef", ".notdef", ".notdef", ".notdef", - ".notdef", ".notdef", ".notdef", ".notdef", - ".notdef", ".notdef", ".notdef", ".notdef", - ".notdef", ".notdef", ".notdef", ".notdef", - ".notdef", ".notdef", ".notdef", ".notdef", - "space", "exclam", "quotedbl", "numbersign", - "dollar", "percent", "ampersand", "quoteright", - "parenleft", "parenright", "asterisk", "plus", - "comma", "hyphen", "period", "slash", - "zero", "one", "two", "three", - "four", "five", "six", "seven", - "eight", "nine", "colon", "semicolon", - "less", "equal", "greater", "question", - "at", "A", "B", "C", "D", "E", "F", "G", - "H", "I", "J", "K", "L", "M", "N", "O", - "P", "Q", "R", "S", "T", "U", "V", "W", - "X", "Y", "Z", "bracketleft", - "backslash", "bracketright", "asciicircum", "underscore", - "quoteleft", "a", "b", "c", "d", "e", "f", "g", - "h", "i", "j", "k", "l", "m", "n", "o", - "p", "q", "r", "s", "t", "u", "v", "w", - "x", "y", "z", "braceleft", - "bar", "braceright", "asciitilde", ".notdef", - ".notdef", ".notdef", ".notdef", ".notdef", - ".notdef", ".notdef", ".notdef", ".notdef", - ".notdef", ".notdef", ".notdef", ".notdef", - ".notdef", ".notdef", ".notdef", ".notdef", - ".notdef", ".notdef", ".notdef", ".notdef", - ".notdef", ".notdef", ".notdef", ".notdef", - ".notdef", ".notdef", ".notdef", ".notdef", - ".notdef", ".notdef", ".notdef", ".notdef", - ".notdef", "exclamdown", "cent", "sterling", - "fraction", "yen", "florin", "section", - "currency", "quotesingle", "quotedblleft", "guillemotleft", - "guilsinglleft", "guilsinglright", "fi", "fl", - ".notdef", "endash", "dagger", "daggerdbl", - "periodcentered", ".notdef", "paragraph", "bullet", - "quotesinglbase", "quotedblbase", "quotedblright", "guillemotright", - "ellipsis", "perthousand", ".notdef", "questiondown", - ".notdef", "grave", "acute", "circumflex", - "tilde", "macron", "breve", "dotaccent", - "dieresis", ".notdef", "ring", "cedilla", - ".notdef", "hungarumlaut", "ogonek", "caron", - "emdash", ".notdef", ".notdef", ".notdef", - ".notdef", ".notdef", ".notdef", ".notdef", - ".notdef", ".notdef", ".notdef", ".notdef", - ".notdef", ".notdef", ".notdef", ".notdef", - ".notdef", "AE", ".notdef", "ordfeminine", - ".notdef", ".notdef", ".notdef", ".notdef", - "Lslash", "Oslash", "OE", "ordmasculine", - ".notdef", ".notdef", ".notdef", ".notdef", - ".notdef", "ae", ".notdef", ".notdef", - ".notdef", "dotlessi", ".notdef", ".notdef", - "lslash", "oslash", "oe", "germandbls", - ".notdef", ".notdef", ".notdef", ".notdef" -}; - -/* - * Decription of the supported conversions from Unicode - * - * SB - * Yes, I know that the compiled-in conversion is stupid but - * it is simple to implement and allows not to worry about the - * filesystem context. After all, the source is always available - * and adding another language to it is easy. - * - * The language name is expected to be the same as the subdirectory name - * in the `encodings' directory (for possible future extensions). - * The primary use of the aliases is for guessing based on the current - * locale. - */ - -#define MAXUNIALIAS 10 -#define MAXUNITABLES 3 - -/* the character used as the language argument separator */ -#define LANG_ARG_SEP '+' - - -/* - * Types of language-related routines. Arguments are: - * name is the glyph name - * arg is the user-specified language-dependent argument - * which can for example select the subfont plane for Eastern fonts. - * If none is supplied by user then an empty string ("") is passed. - * If no language is specified by user and auto-guessing happens - * then NULL is passed. - * when shows if the conversion by name was called before conversion by - * map or after (it's called twice) - */ - -/* type of the Unicode map initialization routine */ -typedef void uni_init_t(char *arg); - -/* type of Unicode converter-by-name function - * it's called for each glyph twice: one time for each glyph - * before doing conversion by map and one time after - */ -typedef int uni_conv_t(char *name, char *arg, int when); -#define UNICONV_BYNAME_BEFORE 0 -#define UNICONV_BYNAME_AFTER 1 - -struct uni_language { - uni_init_t *init[MAXUNITABLES]; /* map initialization routines */ - uni_conv_t *convbyname; /* the name-based conversion function */ - char *name; /* the language name */ - char *descr; /* description */ - char *alias[MAXUNIALIAS]; /* aliases of the language name */ - int sample_upper; /* code of some uppercase character for correctvsize() */ -}; - -/* the converter routines have an option of adding this suffix to the font name */ -static char *uni_font_name_suffix = ""; /* empty by default */ -/* this buffer may be used to store the suffix */ -#define UNI_MAX_SUFFIX_LEN 100 -static char uni_suffix_buf[UNI_MAX_SUFFIX_LEN+1]; - -/* - * Prototypes of the conversion routines - */ - -static uni_init_t unicode_latin1; -static uni_init_t unicode_latin2; -static uni_init_t unicode_latin4; -static uni_init_t unicode_latin5; -static uni_init_t unicode_cyrillic; -static uni_init_t unicode_adobestd; -static uni_init_t unicode_plane; -static uni_conv_t unicode_adobestd_byname; - -static uni_init_t unicode_init_user; - -/* - * The order of descriptions is important: if we can't guess the - * language we just call all the conversion routines in order until - * we find one that understands this glyph. - */ -static struct uni_language uni_lang[]= { - /* pseudo-language for all the languages using Latin1 */ - { - { unicode_latin1 }, - 0, /* no name-based mapping */ - "latin1", - "works for most of the Western languages", - { "en_", "de_", "fr_", "nl_", "no_", "da_", "it_" }, - 'A' - }, - { /* by Szalay Tamas <tomek@elender.hu> */ - { unicode_latin2 }, - 0, /* no name-based mapping */ - "latin2", - "works for Central European languages", - { "hu_","pl_","cz_","si_","sk_" }, - 'A' - }, - { /* by Riardas epas <rch@WriteMe.Com> */ - { unicode_latin4 }, - 0, /* no name-based mapping */ - "latin4", - "works for Baltic languages", - { "lt_", "lv_" }, /* doubt about ee_ */ - 'A' - }, - { /* by Turgut Uyar <uyar@cs.itu.edu.tr> */ - { unicode_latin5 }, - 0, /* no name-based mapping */ - "latin5", - "for Turkish", - { "tr_" }, - 'A' - }, - { /* by Zvezdan Petkovic <z.petkovic@computer.org> */ - { unicode_cyrillic, unicode_latin1 }, - 0, /* no name-based mapping */ - "cyrillic", - "in Windows encoding", - { "bg_", "be_", "mk_", "ru_", "sr_", "su_", "uk_" }, - 'A' - }, - { - { unicode_cyrillic, unicode_latin1 }, - 0, /* no name-based mapping */ - "russian", - "obsolete, use cyrillic instead", - { 0 }, - 'A' - }, - { - { unicode_cyrillic, unicode_latin1 }, - 0, /* no name-based mapping */ - "bulgarian", - "obsolete, use cyrillic instead", - { 0 }, - 'A' - }, - { - { unicode_adobestd }, - unicode_adobestd_byname, - "adobestd", - "Adobe Standard, expected by TeX", - { NULL }, - 'A' - }, - { - { unicode_plane }, - 0, /* no name-based mapping */ - "plane", - "one plane of Unicode or other multi-byte encoding as is", - { NULL }, - 0 /* no easy way to predict the capital letters */ - }, -}; - -static struct uni_language uni_lang_user = { - { unicode_init_user }, - 0, /* no name-based mapping */ - 0, /* no name */ - 0, /* no description */ - { 0 }, - 0 /* no sample */ -}; - -static struct uni_language *uni_lang_selected=0; /* 0 means "unknown, try all" */ -static int uni_sample='A'; /* sample of an uppercase character */ -static char *uni_lang_arg=""; /* user-supplied language-dependent argument */ - -extern int runt1asm(int); - -/* - * user-defined loadable maps - */ - - -/* The idea begind buckets is to avoid comparing every code with all ENCTABSZ codes in table. - * All the 16-bit unicode space is divided between a number of equal-sized buckets. - * Initially all the buckets are marked with 0. Then if any code in the bucket is - * used it's marked with 1. Later during translation we check the code's bucket first - * and it it's 0 then return failure right away. This may be useful for - * Chinese fonts with many thousands of glyphs. - */ - -#define BUCKET_ID_BITS 11 -#define MARK_UNI_BUCKET(unicode) SET_BITMAP(uni_user_buckets, (unicode)>>(16-BUCKET_ID_BITS)) -#define IS_UNI_BUCKET(unicode) IS_BITMAP(uni_user_buckets, (unicode)>>(16-BUCKET_ID_BITS)) - -static DEF_BITMAP(uni_user_buckets, 1<<BUCKET_ID_BITS); - -static unsigned int unicode_map[ENCTABSZ]; /* font-encoding to unicode map */ -static int enctabsz = 256; /* actual number of codes used */ - -static void -unicode_init_user( - char *path -) -{ - FILE *unicode_map_file; -#define UNIBFSZ 256 - char buffer[UNIBFSZ]; - unsigned code, unicode, curpos, unicode2; - char *arg, *p; - int enabled, found, sawplane; - int lineno, cnt, n, nchars; - char next; - int pid, eid, overid=0; - - /* check if we have an argument (plane name) */ - arg = strrchr(path, LANG_ARG_SEP); - if(arg != 0) { - *arg++ = 0; - if( sscanf(arg, "pid=%d,eid=%d%n", &pid, &eid, &nchars) == 2 ) { - force_pid = pid; force_eid = eid; overid = 1; - WARNING_1 fprintf(stderr, "User override of the source encoding: pid=%d eid=%d\n", pid, eid); - forcemap = 1; - arg += nchars; - if(*arg == ',') - arg++; - } - if( *arg == 0 || strlen(arg) > UNI_MAX_SUFFIX_LEN-1) - arg = NULL; - else { - sprintf(uni_suffix_buf, "-%s", arg); - uni_font_name_suffix = uni_suffix_buf; - } - } - - /* now read in the encoding description file, if requested */ - if ((unicode_map_file = fopen(path, "r")) == NULL) { - fprintf(stderr, "**** Cannot access map file '%s' ****\n", path); - exit(1); - } - - sawplane = 0; - if(arg==NULL) - enabled = found = 1; - else - enabled = found = 0; - - lineno=0; curpos=0; - while (fgets (buffer, UNIBFSZ, unicode_map_file) != NULL) { - char name[UNIBFSZ]; - - lineno++; - - if(sscanf(buffer, "plane %s", name)==1) { - sawplane = 1; - if(arg == 0) { - fprintf(stderr, "**** map file '%s' requires plane name\n", path); - fprintf(stderr, "for example:\n"); - fprintf(stderr, " ttf2pt1 -L %s%c[pid=N,eid=N,]%s ...\n", - path, LANG_ARG_SEP, name); - fprintf(stderr, "to select plane '%s'\n", name); - exit(1); - } - if( !strcmp(arg, name) ) { - enabled = found = 1; - curpos = 0; - } else { - enabled = 0; - if(found) /* no need to read further */ - break; - } - continue; - } - - if(sscanf(buffer, "id %d %d", pid, eid)==2) { - if( !overid /* only if the user has not overriden */ - && (enabled || !sawplane) ) { - force_pid = pid; force_eid = eid; - forcemap = 1; - } - continue; - } - - if( !enabled ) - continue; /* skip to the next plane */ - - if( sscanf(buffer, "at %i", &curpos) == 1 ) { - if(curpos > 255) { - fprintf(stderr, "**** map file '%s' line %d: code over 255\n", path, lineno); - exit(1); - } - if(ISDBG(EXTMAP)) fprintf(stderr, "=== at 0x%x\n", curpos); - continue; - } - - /* try the format of Roman Czyborra's files */ - if ( sscanf (buffer, " =%x U+%4x", &code, &unicode) == 2 - /* try the format of Linux locale charmap file */ - || sscanf (buffer, " <%*s /x%x <U%4x>", &code, &unicode) == 2 ) { - if (code < ENCTABSZ) { - if(code >= enctabsz) enctabsz=code+1; - unicode_map[code] = unicode; - glyph_rename[code] = NULL; - } - } - /* try the format with glyph renaming */ - else if (sscanf (buffer, " !%x U+%4x %128s", &code, - &unicode, name) == 3) { - if (code < ENCTABSZ) { - if(code >= enctabsz) enctabsz=code+1; - unicode_map[code] = unicode; - glyph_rename[code] = strdup(name); - } - } - /* try the compact sequence format */ - else if( (n=sscanf(buffer, " %i%n", &unicode, &cnt)) == 1 ) { - p = buffer; - do { - if(curpos > 255) { - fprintf(stderr, "**** map file '%s' line %d: code over 255 for unicode 0x%x\n", - path, lineno, unicode); - exit(1); - } - if(ISDBG(EXTMAP)) fprintf(stderr, "=== 0x%d -> 0x%x\n", curpos, unicode); - unicode_map[curpos++] = unicode; - p += cnt; - if( sscanf(p, " %[,-]%n", &next,&cnt) == 1 ) { - if(ISDBG(EXTMAP)) fprintf(stderr, "=== next: '%c'\n", next); - p += cnt; - if( next == '-' ) { /* range */ - if ( sscanf(p, " %i%n", &unicode2, &cnt) != 1 ) { - fprintf(stderr, "**** map file '%s' line %d: missing end of range\n", path, lineno); - exit(1); - } - p += cnt; - if(ISDBG(EXTMAP)) fprintf(stderr, "=== range 0x%x to 0x%x\n", unicode, unicode2); - for(unicode++; unicode <= unicode2; unicode++) { - if(curpos > 255) { - fprintf(stderr, "**** map file '%s' line %d: code over 255 in unicode range ...-0x%x\n", - path, lineno, unicode2); - exit(1); - } - if(ISDBG(EXTMAP)) fprintf(stderr, "=== 0x%x -> 0x%x\n", curpos, unicode); - unicode_map[curpos++] = unicode; - } - } - } - } while ( sscanf(p, " %i%n", &unicode, &cnt) == 1 ); - } - - } - - fclose (unicode_map_file); - - if( !found ) { - fprintf(stderr, "**** map file '%s' has no plane '%s'\n", path, arg); - exit(1); - } - - if(unicode_map['A'] == 'A') - uni_sample = 'A'; /* seems to be compatible with Latin */ - else - uni_sample = 0; /* don't make any assumptions */ -} - -/* - * by Zvezdan Petkovic <z.petkovic@computer.org> - */ -static void -unicode_cyrillic( - char *arg -) -{ - int i; - static unsigned int cyrillic_unicode_map[] = { - 0x0402, 0x0403, 0x201a, 0x0453, 0x201e, 0x2026, 0x2020, 0x2021, /* 80 */ - 0x20ac, 0x2030, 0x0409, 0x2039, 0x040a, 0x040c, 0x040b, 0x040f, /* 88 */ - 0x0452, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, /* 90 */ - 0x02dc, 0x2122, 0x0459, 0x203a, 0x045a, 0x045c, 0x045b, 0x045f, /* 98 */ - 0x00a0, 0x040e, 0x045e, 0x0408, 0x00a4, 0x0490, 0x00a6, 0x00a7, /* A0 */ - 0x0401, 0x00a9, 0x0404, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x0407, /* A8 */ - 0x00b0, 0x00b1, 0x0406, 0x0456, 0x0491, 0x00b5, 0x00b6, 0x00b7, /* B0 */ - 0x0451, 0x2116, 0x0454, 0x00bb, 0x0458, 0x0405, 0x0455, 0x0457, /* B8 */ - }; - - for(i=0; i<=0x7F; i++) - unicode_map[i] = i; - - for(i=0x80; i<=0xBF; i++) - unicode_map[i] = cyrillic_unicode_map[i-0x80]; - - for(i=0xC0; i<=0xFF; i++) - unicode_map[i] = i+0x350; - -} - -static void -unicode_latin1( - char *arg -) -{ - int i; - static unsigned int latin1_unicode_map[] = { - 0x20ac, -1, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, /* 80 */ - 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008d, 0x017d, 0x008f, /* 88 */ - 0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, /* 90 */ - 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x009d, 0x017e, 0x0178, /* 98 */ - }; - - for(i=0; i<=0x7F; i++) - unicode_map[i] = i; - - for(i=0x80; i<=0x9F; i++) - unicode_map[i] = latin1_unicode_map[i-0x80]; - - for(i=0xA0; i<=0xFF; i++) - unicode_map[i] = i; -} - -static void -unicode_adobestd( - char *arg -) -{ - int i; - static unsigned int adobestd_unicode_map[] = { - -1, 0x00a1, 0x00a2, 0x00a3, 0x2215, 0x00a5, 0x0192, 0x00a7, /* A0 */ - 0x00a4, 0x0027, 0x201c, 0x00ab, 0x2039, 0x203a, 0xfb01, 0xfb02, /* A8 */ - -1, 0x2013, 0x2020, 0x2021, 0x2219, -1, 0x00b6, 0x2022, /* B0 */ - 0x201a, 0x201e, 0x201d, 0x00bb, 0x2026, 0x2030, -1, 0x00bf, /* B8 */ - -1, 0x0060, 0x00b4, 0x02c6, 0x02dc, 0x02c9, 0x02d8, 0x02d9, /* C0 */ - 0x00a8, -1, 0x02da, 0x00b8, -1, 0x02dd, 0x02db, 0x02c7, /* C8 */ - 0x2014, -1, -1, -1, -1, -1, -1, -1, /* D0 */ - -1, -1, -1, -1, -1, -1, -1, -1, /* D8 */ - -1, 0x00c6, -1, 0x00aa, -1, -1, -1, -1, /* E0 */ - 0x0141, 0x00d8, 0x0152, 0x00ba, -1, -1, -1, -1, /* E8 */ - -1, 0x00e6, -1, -1, -1, 0x0131, -1, -1, /* F0 */ - 0x0142, 0x00f8, 0x0153, 0x00df, -1, -1, -1, -1, /* F8 */ - }; - - for(i=0; i<=0x7F; i++) - unicode_map[i] = i; - - unicode_map[0x27] = 0x2019; - unicode_map[0x60] = -1; - - /* 0x80 to 0x9F is a hole */ - - for(i=0xA0; i<=0xFF; i++) - unicode_map[i] = adobestd_unicode_map[i-0xA0]; -} - -/* - * Not all of the Adobe glyphs are in the Unicode - * standard maps, so the font creators have - * different ideas about their codes. Because - * of this we try to map based on the glyph - * names instead of Unicode codes. If there are - * no glyph names (ps_fmt_3!=0) we fall back - * to the code-based scheme. - */ - -static int -unicode_adobestd_byname( - char *name, - char *arg, - int where -) -{ - int i; - - /* names always take precedence over codes */ - if(where == UNICONV_BYNAME_AFTER) - return -1; - - for(i=32; i<256; i++) { - if(!strcmp(name, adobe_StandardEncoding[i])) - return i; - } - return -1; - -} - -static void -unicode_latin2( - char *arg -) -{ - int i; - static unsigned int latin2_unicode_map[] = { - 0x00a0, 0x0104, 0x02d8, 0x0141, 0x00a4, 0x013d, 0x015a, 0x00a7, /* A0 */ - 0x00a8, 0x0160, 0x015e, 0x0164, 0x0179, 0x00ad, 0x017d, 0x017b, /* A8 */ - 0x00b0, 0x0105, 0x02db, 0x0142, 0x00b4, 0x013e, 0x015b, 0x02c7, /* B0 */ - 0x00b8, 0x0161, 0x015f, 0x0165, 0x017a, 0x02dd, 0x017e, 0x017c, /* B8 */ - 0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7, /* C0 */ - 0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e, /* C8 */ - 0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7, /* D0 */ - 0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df, /* D8 */ - 0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7, /* E0 */ - 0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f, /* E8 */ - 0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7, /* F0 */ - 0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9, /* F8 */ - }; - - for(i=0; i<=0x7E; i++) - unicode_map[i] = i; - - /* 7F-9F are unused */ - - for(i=0xA0; i<=0xFF; i++) - unicode_map[i] = latin2_unicode_map[i-0xA0]; -} - -static void -unicode_latin4( - char *arg -) -{ - int i; - static unsigned int latin4_unicode_map[] = { - 0x0080, 0x0081, 0x201a, 0x0192, -1, 0x2026, 0x2020, 0x2021, /* 80 */ - 0x02c6, 0x2030, -1, 0x2039, 0x0152, 0x008d, 0x008e, 0x008f, /* 88 */ - 0x201e, 0x201c, 0x2019, -1, 0x201d, 0x2022, 0x2013, 0x2014, /* 90 */ - 0x02dc, 0x2122, -1, 0x203a, 0x0153, 0x009d, 0x009e, 0x0178, /* 98 */ - 0x00a0, 0x0104, 0x0138, 0x0156, 0x00a4, 0x0128, 0x013b, 0x00a7, /* A0 */ - 0x00a8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00ad, 0x017d, 0x00af, /* A8 */ - 0x00b0, 0x0105, 0x02db, 0x0157, 0x00b4, 0x0129, 0x013c, 0x02c7, /* B0 */ - 0x00b8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014a, 0x017e, 0x014b, /* B8 */ - 0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e, /* C0 */ - 0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x012a, /* C8 */ - 0x0110, 0x0145, 0x014c, 0x0136, 0x00d4, 0x00d5, 0x00d6, 0x00d7, /* D0 */ - 0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x0168, 0x016a, 0x00df, /* D8 */ - 0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f, /* E0 */ - 0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x012b, /* E8 */ - 0x0111, 0x0146, 0x014d, 0x0137, 0x00f4, 0x00f5, 0x00f6, 0x00f7, /* F0 */ - 0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x0169, 0x016b, 0x02d9, /* F8 */ - }; - - for(i=0; i<=0x7F; i++) - unicode_map[i] = i; - - for(i=0x80; i<=0xFF; i++) - unicode_map[i] = latin4_unicode_map[i-0x80]; - -#if 0 /* for documentation purposes only */ - case 0x201e: return 0x90; /* these two quotes are a hack only */ - case 0x201c: return 0x91; /* these two quotes are a hack only */ - case 0x00A0: return 0xA0; /* NO-BREAK SPACE */ - case 0x0104: return 0xA1; /* LATIN CAPITAL LETTER A WITH OGONEK */ - case 0x0138: return 0xA2; /* LATIN SMALL LETTER KRA */ - case 0x0156: return 0xA3; /* LATIN CAPITAL LETTER R WITH CEDILLA */ - case 0x00A4: return 0xA4; /* CURRENCY SIGN */ - case 0x0128: return 0xA5; /* LATIN CAPITAL LETTER I WITH TILDE */ - case 0x013B: return 0xA6; /* LATIN CAPITAL LETTER L WITH CEDILLA */ - case 0x00A7: return 0xA7; /* SECTION SIGN */ - case 0x00A8: return 0xA8; /* DIAERESIS */ - case 0x0160: return 0xA9; /* LATIN CAPITAL LETTER S WITH CARON */ - case 0x0112: return 0xAA; /* LATIN CAPITAL LETTER E WITH MACRON */ - case 0x0122: return 0xAB; /* LATIN CAPITAL LETTER G WITH CEDILLA */ - case 0x0166: return 0xAC; /* LATIN CAPITAL LETTER T WITH STROKE */ - case 0x00AD: return 0xAD; /* SOFT HYPHEN */ - case 0x017D: return 0xAE; /* LATIN CAPITAL LETTER Z WITH CARON */ - case 0x00AF: return 0xAF; /* MACRON */ - case 0x00B0: return 0xB0; /* DEGREE SIGN */ - case 0x0105: return 0xB1; /* LATIN SMALL LETTER A WITH OGONEK */ - case 0x02DB: return 0xB2; /* OGONEK */ - case 0x0157: return 0xB3; /* LATIN SMALL LETTER R WITH CEDILLA */ - case 0x00B4: return 0xB4; /* ACUTE ACCENT */ - case 0x0129: return 0xB5; /* LATIN SMALL LETTER I WITH TILDE */ - case 0x013C: return 0xB6; /* LATIN SMALL LETTER L WITH CEDILLA */ - case 0x02C7: return 0xB7; /* CARON */ - case 0x00B8: return 0xB8; /* CEDILLA */ - case 0x0161: return 0xB9; /* LATIN SMALL LETTER S WITH CARON */ - case 0x0113: return 0xBA; /* LATIN SMALL LETTER E WITH MACRON */ - case 0x0123: return 0xBB; /* LATIN SMALL LETTER G WITH CEDILLA */ - case 0x0167: return 0xBC; /* LATIN SMALL LETTER T WITH STROKE */ - case 0x014A: return 0xBD; /* LATIN CAPITAL LETTER ENG */ - case 0x017E: return 0xBE; /* LATIN SMALL LETTER Z WITH CARON */ - case 0x014B: return 0xBF; /* LATIN SMALL LETTER ENG */ - case 0x0100: return 0xC0; /* LATIN CAPITAL LETTER A WITH MACRON */ - case 0x00C1: return 0xC1; /* LATIN CAPITAL LETTER A WITH ACUTE */ - case 0x00C2: return 0xC2; /* LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ - case 0x00C3: return 0xC3; /* LATIN CAPITAL LETTER A WITH TILDE */ - case 0x00C4: return 0xC4; /* LATIN CAPITAL LETTER A WITH DIAERESIS */ - case 0x00C5: return 0xC5; /* LATIN CAPITAL LETTER A WITH RING ABOVE */ - case 0x00C6: return 0xC6; /* LATIN CAPITAL LIGATURE AE */ - case 0x012E: return 0xC7; /* LATIN CAPITAL LETTER I WITH OGONEK */ - case 0x010C: return 0xC8; /* LATIN CAPITAL LETTER C WITH CARON */ - case 0x00C9: return 0xC9; /* LATIN CAPITAL LETTER E WITH ACUTE */ - case 0x0118: return 0xCA; /* LATIN CAPITAL LETTER E WITH OGONEK */ - case 0x00CB: return 0xCB; /* LATIN CAPITAL LETTER E WITH DIAERESIS */ - case 0x0116: return 0xCC; /* LATIN CAPITAL LETTER E WITH DOT ABOVE */ - case 0x00CD: return 0xCD; /* LATIN CAPITAL LETTER I WITH ACUTE */ - case 0x00CE: return 0xCE; /* LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ - case 0x012A: return 0xCF; /* LATIN CAPITAL LETTER I WITH MACRON */ - case 0x0110: return 0xD0; /* LATIN CAPITAL LETTER D WITH STROKE */ - case 0x0145: return 0xD1; /* LATIN CAPITAL LETTER N WITH CEDILLA */ - case 0x014C: return 0xD2; /* LATIN CAPITAL LETTER O WITH MACRON */ - case 0x0136: return 0xD3; /* LATIN CAPITAL LETTER K WITH CEDILLA */ - case 0x00D4: return 0xD4; /* LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ - case 0x00D5: return 0xD5; /* LATIN CAPITAL LETTER O WITH TILDE */ - case 0x00D6: return 0xD6; /* LATIN CAPITAL LETTER O WITH DIAERESIS */ - case 0x00D7: return 0xD7; /* MULTIPLICATION SIGN */ - case 0x00D8: return 0xD8; /* LATIN CAPITAL LETTER O WITH STROKE */ - case 0x0172: return 0xD9; /* LATIN CAPITAL LETTER U WITH OGONEK */ - case 0x00DA: return 0xDA; /* LATIN CAPITAL LETTER U WITH ACUTE */ - case 0x00DB: return 0xDB; /* LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ - case 0x00DC: return 0xDC; /* LATIN CAPITAL LETTER U WITH DIAERESIS */ - case 0x0168: return 0xDD; /* LATIN CAPITAL LETTER U WITH TILDE */ - case 0x016A: return 0xDE; /* LATIN CAPITAL LETTER U WITH MACRON */ - case 0x00DF: return 0xDF; /* LATIN SMALL LETTER SHARP S */ - case 0x0101: return 0xE0; /* LATIN SMALL LETTER A WITH MACRON */ - case 0x00E1: return 0xE1; /* LATIN SMALL LETTER A WITH ACUTE */ - case 0x00E2: return 0xE2; /* LATIN SMALL LETTER A WITH CIRCUMFLEX */ - case 0x00E3: return 0xE3; /* LATIN SMALL LETTER A WITH TILDE */ - case 0x00E4: return 0xE4; /* LATIN SMALL LETTER A WITH DIAERESIS */ - case 0x00E5: return 0xE5; /* LATIN SMALL LETTER A WITH RING ABOVE */ - case 0x00E6: return 0xE6; /* LATIN SMALL LIGATURE AE */ - case 0x012F: return 0xE7; /* LATIN SMALL LETTER I WITH OGONEK */ - case 0x010D: return 0xE8; /* LATIN SMALL LETTER C WITH CARON */ - case 0x00E9: return 0xE9; /* LATIN SMALL LETTER E WITH ACUTE */ - case 0x0119: return 0xEA; /* LATIN SMALL LETTER E WITH OGONEK */ - case 0x00EB: return 0xEB; /* LATIN SMALL LETTER E WITH DIAERESIS */ - case 0x0117: return 0xEC; /* LATIN SMALL LETTER E WITH DOT ABOVE */ - case 0x00ED: return 0xED; /* LATIN SMALL LETTER I WITH ACUTE */ - case 0x00EE: return 0xEE; /* LATIN SMALL LETTER I WITH CIRCUMFLEX */ - case 0x012B: return 0xEF; /* LATIN SMALL LETTER I WITH MACRON */ - case 0x0111: return 0xF0; /* LATIN SMALL LETTER D WITH STROKE */ - case 0x0146: return 0xF1; /* LATIN SMALL LETTER N WITH CEDILLA */ - case 0x014D: return 0xF2; /* LATIN SMALL LETTER O WITH MACRON */ - case 0x0137: return 0xF3; /* LATIN SMALL LETTER K WITH CEDILLA */ - case 0x00F4: return 0xF4; /* LATIN SMALL LETTER O WITH CIRCUMFLEX */ - case 0x00F5: return 0xF5; /* LATIN SMALL LETTER O WITH TILDE */ - case 0x00F6: return 0xF6; /* LATIN SMALL LETTER O WITH DIAERESIS */ - case 0x00F7: return 0xF7; /* DIVISION SIGN */ - case 0x00F8: return 0xF8; /* LATIN SMALL LETTER O WITH STROKE */ - case 0x0173: return 0xF9; /* LATIN SMALL LETTER U WITH OGONEK */ - case 0x00FA: return 0xFA; /* LATIN SMALL LETTER U WITH ACUTE */ - case 0x00FB: return 0xFB; /* LATIN SMALL LETTER U WITH CIRCUMFLEX */ - case 0x00FC: return 0xFC; /* LATIN SMALL LETTER U WITH DIAERESIS */ - case 0x0169: return 0xFD; /* LATIN SMALL LETTER U WITH TILDE */ - case 0x016B: return 0xFE; /* LATIN SMALL LETTER U WITH MACRON */ - case 0x02D9: return 0xFF; /* DOT ABOVE */ -#endif -} - -static void -unicode_latin5( - char *arg -) -{ - int i; - static unsigned int latin5_unicode_map1[] = { - 0x0080, 0x0081, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, /* 80 */ - 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008d, 0x008e, 0x008f, /* 88 */ - 0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, /* 90 */ - 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x009d, 0x009e, 0x0178, /* 98 */ - }; - static unsigned int latin5_unicode_map2[] = { - 0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, /* D0 */ - 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df, /* D8 */ - 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, /* E0 direct */ - 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, /* E8 direct */ - 0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, /* F0 */ - 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff, /* F8 */ - }; - - for(i=0; i<=0x7F; i++) - unicode_map[i] = i; - - for(i=0x80; i<=0x9F; i++) - unicode_map[i] = latin5_unicode_map1[i-0x80]; - - for(i=0xA0; i<=0xCF; i++) - unicode_map[i] = i; - - for(i=0xD0; i<=0xFF; i++) - unicode_map[i] = latin5_unicode_map2[i-0xD0]; -} - -/* a way to select one 256-character plane from Unicode - * or other multi-byte encoding - */ - -static void -unicode_plane( - char *arg -) -{ - static unsigned plane; - int nchars; - int c1, c2, i; - - if(uni_lang_selected == 0) - return; /* don't participate in auto-guessing */ - - plane = 0; force_pid = force_eid = -1; - - c1 = sscanf(arg, "pid=%d,eid=%d%n", &force_pid, &force_eid, &nchars); - if(c1 == 2) { - arg += nchars; - if(*arg == ',') - arg++; - } - if(arg[0] == '0' && (arg[1]=='x' || arg[1]=='X') ) { - arg += 2; - c2 = sscanf(arg, "%x", &plane); - } else { - c2 = sscanf(arg, "%d", &plane); - } - - if( (c1!=2 && c1!=0) || (c1==0 && c2==0) ) { - fprintf(stderr, "**** option -l plane expects one of the following formats:\n"); - fprintf(stderr, " -l plane+0xNN - select hexadecimal number of plane of Unicode\n"); - fprintf(stderr, " -l plane+NN - select decimal number of plane of Unicode\n"); - fprintf(stderr, " -l plane+pid=N,eid=N - select plane 0 of specified encoding\n"); - fprintf(stderr, " -l plane+pid=N,eid=N,0xNN - select hex plane of TTF encoding with this PID/EID\n"); - fprintf(stderr, " -l plane+pid=N,eid=N,NN - select decimal plane of TTF encoding with this PID/EID\n"); - exit(1); - } - - if(c2!=0) { - if(strlen(arg) > sizeof(uni_suffix_buf)-2) { - fprintf(stderr, "**** plane number is too large\n"); - } - - sprintf(uni_suffix_buf, "-%s", arg); - uni_font_name_suffix = uni_suffix_buf; - } else { - uni_font_name_suffix = ""; - } - - plane <<= 8; - for(i=0; i<=0xFF; i++) - unicode_map[i] = plane | i; -} - -/* look up the 8-bit code by unicode */ - -int -unicode_rev_lookup( - int unival -) -{ - int res; - - if( ! IS_UNI_BUCKET(unival) ) - return -1; - - for (res = 0; res < enctabsz; res++) - if (unicode_map[res] == unival) - return res; - return -1; -} - -/* mark the buckets for quick lookup */ - -static void -unicode_prepare_buckets( - void -) -{ - int i; - - memset(uni_user_buckets, 0, sizeof uni_user_buckets); - for(i=0; i<enctabsz; i++) { - if(unicode_map[i] != (unsigned) -1) - MARK_UNI_BUCKET(unicode_map[i]); - } -} - -/* - * When we print errors about bad names we want to print these names in - * some decent-looking form - */ - -static char * -nametoprint( - unsigned char *s -) -{ - static char res[50]; - int c, i; - - for(i=0; ( c =* s )!=0 && i<sizeof(res)-8; s++) { - if(c < ' ' || c > 126) { - sprintf(res+i, "\\x%02X", c); - i+=4; - } else { - res[i++] = c; - } - } - if(*s != 0) { - res[i++] = '.'; - res[i++] = '.'; - res[i++] = '.'; - } - res[i++] = 0; - return res; -} - -/* - * Scale the values according to the scale_factor - */ - -double -fscale( - double val -) -{ - return scale_factor * val; -} - -int -iscale( - int val -) -{ - return (int) (val > 0 ? scale_factor * val + 0.5 - : scale_factor * val - 0.5); -} - -/* - * Try to force fixed width of characters - */ - -static void -alignwidths(void) -{ - int i; - int n = 0, avg, max = 0, min = 3000, sum = 0, x; - - for (i = 0; i < numglyphs; i++) { - if (glyph_list[i].flags & GF_USED) { - x = glyph_list[i].width; - - if (x != 0) { - if (x < min) - min = x; - if (x > max) - max = x; - - sum += x; - n++; - } - } - } - - if (n == 0) - return; - - avg = sum / n; - - WARNING_3 fprintf(stderr, "widths: max=%d avg=%d min=%d\n", max, avg, min); - - /* if less than 5% variation from average */ - /* force fixed width */ - if (20 * (avg - min) < avg && 20 * (max - avg) < avg) { - for (i = 0; i < numglyphs; i++) { - if (glyph_list[i].flags & GF_USED) - glyph_list[i].width = avg; - } - fontm.is_fixed_pitch = 1; - } -} - -static void -convert_glyf( - int glyphno -) -{ - GLYPH *g; - int ncurves; - - g = &glyph_list[glyphno]; - - - g->scaledwidth = iscale(g->width); - - g->entries = 0; - g->lastentry = 0; - g->path = 0; - if (g->ttf_pathlen != 0) { - cursw->glpath(glyphno, glyph_list); - g->lastentry = 0; - - if(ISDBG(BUILDG)) - dumppaths(g, NULL, NULL); - - assertpath(g->entries, __FILE__, __LINE__, g->name); - - fclosepaths(g); - assertpath(g->entries, __FILE__, __LINE__, g->name); - - /* float processing */ - if(smooth) { - ffixquadrants(g); - assertpath(g->entries, __FILE__, __LINE__, g->name); - - fsplitzigzags(g); - assertpath(g->entries, __FILE__, __LINE__, g->name); - - fforceconcise(g); - assertpath(g->entries, __FILE__, __LINE__, g->name); - - fstraighten(g); - assertpath(g->entries, __FILE__, __LINE__, g->name); - } - - pathtoint(g); - /* all processing past this point expects integer path */ - assertpath(g->entries, __FILE__, __LINE__, g->name); - -#if 0 - fixcontours(g); - testfixcvdir(g); -#endif - - /* int processing */ - if (smooth) { - smoothjoints(g); - assertpath(g->entries, __FILE__, __LINE__, g->name); - } - - ncurves = 0; - { - GENTRY *ge; - for(ge = g->entries; ge; ge = ge->next) - ncurves++; - } - if (ncurves > 200) { - WARNING_3 fprintf(stderr, - "** Glyph %s is too long, may display incorrectly\n", - g->name); - } - } else { - /* for buildstems */ - g->flags &= ~GF_FLOAT; - } -} - -static void -handle_gnames(void) -{ - int i, n, found, c, type; - - /* get the names from the font file */ - ps_fmt_3 = cursw->glnames(glyph_list); - - /* check for names with wrong characters */ - for (n = 0; n < numglyphs; n++) { - int c; - for (i = 0; (c = glyph_list[n].name[i]) != 0; i++) { - if (!(isalnum(c) || c == '.' || c == '_' || c == '-') - || i==0 && isdigit(c)) { /* must not start with a digit */ - WARNING_3 fprintf(stderr, "Glyph %d %s (%s), ", - n, isdigit(c) ? "name starts with a digit" : - "has bad characters in name", - nametoprint(glyph_list[n].name)); - glyph_list[n].name = malloc(16); - sprintf(glyph_list[n].name, "_b_%d", n); - WARNING_3 fprintf(stderr, "changing to %s\n", glyph_list[n].name); - break; - } - } - } - - if( !ps_fmt_3 ) { - /* check for duplicate names */ - for (n = 0; n < numglyphs; n++) { - found = 0; - for (i = 0; i < n && !found; i++) { - if (strcmp(glyph_list[i].name, glyph_list[n].name) == 0) { - if (( glyph_list[n].name = malloc(16) )==0) { - fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__); - exit(255); - } - sprintf(glyph_list[n].name, "_d_%d", n); - - /* if the font has no names in it (what the native parser - * recognises as ps_fmt_3), FreeType returns all the - * names as .notdef, so don't complain in this case - */ - if(strcmp(glyph_list[i].name, ".notdef")) { - WARNING_3 fprintf(stderr, - "Glyph %d has the same name as %d: (%s), changing to %s\n", - n, i, - glyph_list[i].name, - glyph_list[n].name); - } - found = 1; - } - } - } - - } - - /* start the encoding stuff */ - for (i = 0; i < ENCTABSZ; i++) { - encoding[i] = -1; - } - - /* do the 1st round of encoding by name */ - if(!ps_fmt_3 && uni_lang_selected && uni_lang_selected->convbyname) { - for (n = 0; n < numglyphs; n++) { - c = uni_lang_selected->convbyname(glyph_list[n].name, - uni_lang_arg, UNICONV_BYNAME_BEFORE); - if(c>=0 && c<ENCTABSZ && encoding[c] == -1) - encoding[c] = n; - } - } - - /* now do the encoding by table */ - if(uni_lang_selected) { - for(i=0; i < MAXUNITABLES && uni_lang_selected->init[i]; i++) { - for (n = 0; n < ENCTABSZ; n++) - unicode_map[n] = -1; - uni_lang_selected->init[i](uni_lang_arg); - unicode_prepare_buckets(); - type = cursw->glenc(glyph_list, encoding, unicode_map); - if( type == 0 ) - /* if we have an 8-bit encoding we don't need more tries */ - break; - } - } else { - /* language is unknown, try the first table of each */ - for(i=0; i < sizeof uni_lang/(sizeof uni_lang[0]); i++) { - if(uni_lang[i].init[0] == NULL) - continue; - for (n = 0; n < ENCTABSZ; n++) - unicode_map[n] = -1; - uni_lang[i].init[0](uni_lang_arg); - unicode_prepare_buckets(); - type = cursw->glenc(glyph_list, encoding, unicode_map); - if( type == 0 ) - /* if we have an 8-bit encoding we don't need more tries */ - break; - } - } - - if (ps_fmt_3) { - /* get rid of the old names, they are all "UNKNOWN" anyawy */ - for (i = 0; i < numglyphs; i++) { - glyph_list[i].name = 0; - } - if(type == 0) { - /* 8-bit - give 8859/1 names to the first 256 glyphs */ - for (i = 0; i < 256; i++) { /* here 256, not ENCTABSZ */ - if (encoding[i] > 0) { - glyph_list[encoding[i]].name = Fmt3Encoding[i]; - } - } - } else if(type == 1) { - /* Unicode - give 8859/1 names to the first 256 glyphs of Unicode */ - for (n = 0; n < 256; n++) { /* here 256, not ENCTABSZ */ - i = unicode_rev_lookup(n); - if (i>=0 && encoding[i] > 0) { - glyph_list[encoding[i]].name = Fmt3Encoding[i]; - } - } - } /* for other types of encodings just give generated names */ - /* assign unique names to the rest of the glyphs */ - for (i = 0; i < numglyphs; i++) { - if (glyph_list[i].name == 0) { - if (( glyph_list[i].name = malloc(16) )==0) { - fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__); - exit(255); - } - sprintf(glyph_list[i].name, "_d_%d", i); - } - } - } - - /* do the 2nd round of encoding by name */ - if(uni_lang_selected && uni_lang_selected->convbyname) { - for (n = 0; n < numglyphs; n++) { - c = uni_lang_selected->convbyname(glyph_list[n].name, - uni_lang_arg, UNICONV_BYNAME_AFTER); - if(c>=0 && c<ENCTABSZ && encoding[c] == -1) - encoding[c] = n; - } - } - /* all the encoding things are done */ - - for (i = 0; i < ENCTABSZ; i++) - if(encoding[i] == -1) { - /* check whether this character might be a duplicate - * (in which case it would be missed by unicode_rev_lookup()) - */ - c = unicode_map[i]; - if((type != 0 || forcemap) && c != -1) { - for(n = 0; n < i; n++) { - if(unicode_map[n] == c) { - encoding[i] = encoding[n]; - } - } - } - if(encoding[i] == -1) /* still not found, defaults to .notdef */ - encoding[i] = 0; - } - - for (i = 0; i < 256; i++) /* here 256, not ENCTABSZ */ - glyph_list[encoding[i]].char_no = i; - - /* enforce two special cases defined in TTF manual */ - if(numglyphs > 0) - glyph_list[0].name = ".notdef"; - if(numglyphs > 1) - glyph_list[1].name = ".null"; - - for (i = 0; i < ENCTABSZ; i++) { - if ((encoding[i] != 0) && glyph_rename[i]) { - glyph_list[encoding[i]].name = glyph_rename[i]; - } - } - -} - -/* duplicate a string with counter to a 0-terminated string, - * and by the way filter out the characters that won't look good - * in the Postscript strings or comments; limit the length - * to a reasonable amount. - */ - -char * -dupcnstring( - unsigned char *s, - int len -) -{ - char *res, *out; - int i, c; - static int warned=0; - - if(len > 255) { - WARNING_1 fprintf(stderr, "Some font name strings are longer than 255 characters, cut down\n"); - len = 255; - } - - if(( res = malloc(len+1) )==NULL) { - fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__); - exit(255); - } - - out = res; - for(i=0; i<len; i++) { - c = s[i]; - if( c>=' ' && c!=127) { - /* translate the inconvenient chacracters */ - if( c== '(' ) - c = '['; - else if( c== ')' ) - c = ']'; - *out++ = c; - } else if( c=='\n' || c=='\r' ) { - WARNING_1 fprintf(stderr, "Some font name strings contain end of line or Unicode, cut down\n"); - *out = 0; - return res; - } else if(!warned) { - warned=1; - WARNING_1 fprintf(stderr, "Some font name strings are in Unicode, may not show properly\n"); - } - } - *out = 0; - return res; -} - -static void -usage(void) -{ - -#ifdef _GNU_SOURCE -# define fplop(txt) fputs(txt, stderr); -#else -# define fplop(txt) -#endif - - fputs("Use:\n", stderr); - fputs("ttf2pt1 [-<opts>] [-l language | -L file] <ttf-file> [<fontname>]\n", stderr); - fputs(" or\n", stderr); - fputs("ttf2pt1 [-<opts>] [-l language | -L file] <ttf-file> -\n", stderr); - fputs(" or\n", stderr); - fputs("ttf2pt1 [-<opts>] [-l language | -L file] <ttf-file> - | t1asm > <pfa-file>\n", stderr); - - fplop("\n"); - fplop("This build supports both short and long option names,\n"); - fplop("the long options are listed before corresponding short ones\n"); - - fplop(" --all-glyphs\n"); - fputs(" -a - include all glyphs, even those not in the encoding table\n", stderr); - fplop(" --pfb\n"); - fputs(" -b - produce a compressed .pfb file\n", stderr); - fplop(" --debug dbg_suboptions\n"); - fputs(" -d dbg_suboptions - debugging options, run ttf2pt1 -d? for help\n", stderr); - fplop(" --encode\n"); - fputs(" -e - produce a fully encoded .pfa file\n", stderr); - fplop(" --force-unicode\n"); - fputs(" -F - force use of Unicode encoding even if other MS encoding detected\n", stderr); - fplop(" --generate suboptions\n"); - fputs(" -G suboptions - control the file generation, run ttf2pt1 -G? for help\n", stderr); - fplop(" --language language\n"); - fputs(" -l language - convert Unicode to specified language, run ttf2pt1 -l? for list\n", stderr); - fplop(" --language-map file\n"); - fputs(" -L file - convert Unicode according to encoding description file\n", stderr); - fplop(" --limit <type>=<value>\n"); - fputs(" -m <type>=<value> - set maximal limit of given type to value, types:\n", stderr); - fputs(" h - maximal hint stack depth in the PostScript interpreter\n", stderr); - fplop(" --processing suboptions\n"); - fputs(" -O suboptions - control outline processing, run ttf2pt1 -O? for help\n", stderr); - fplop(" --parser name\n"); - fputs(" -p name - use specific front-end parser, run ttf2pt1 -p? for list\n", stderr); - fplop(" --uid id\n"); - fputs(" -u id - use this UniqueID, -u A means autogeneration\n", stderr); - fplop(" --vertical-autoscale size\n"); - fputs(" -v size - scale the font to make uppercase letters >size/1000 high\n", stderr); - fplop(" --version\n"); - fputs(" -V - print ttf2pt1 version number\n", stderr); - fplop(" --warning number\n"); - fputs(" -W number - set the level of permitted warnings (0 - disable)\n", stderr); - fputs("Obsolete options (will be removed in future releases):\n", stderr); - fplop(" --afm\n"); - fputs(" -A - write the .afm file to STDOUT instead of the font, now -GA\n", stderr); - fputs(" -f - don't try to guess the value of the ForceBold hint, now -Ob\n", stderr); - fputs(" -h - disable autogeneration of hints, now -Oh\n", stderr); - fputs(" -H - disable hint substitution, now -Ou\n", stderr); - fputs(" -o - disable outline optimization, now -Oo\n", stderr); - fputs(" -s - disable outline smoothing, now -Os\n", stderr); - fputs(" -t - disable auto-scaling to 1000x1000 standard matrix, now -Ot\n", stderr); - fputs(" -w - correct the glyph widths (use only for buggy fonts), now -OW\n", stderr); - fputs("With no <fontname>, write to <ttf-file> with suffix replaced.\n", stderr); - fputs("The last '-' means 'use STDOUT'.\n", stderr); - -#undef fplop - -} - -static void -printversion(void) -{ - fprintf(stderr, "ttf2pt1 %s\n", TTF2PT1_VERSION); -} - -/* initialize a table of suboptions */ -static void -init_subo_tbl( - struct subo_case *tbl -) -{ - int i; - - for(i=0; tbl[i].disbl != 0; i++) { - tbl[i].disbl = tolower(tbl[i].disbl); - tbl[i].enbl = toupper(tbl[i].disbl); - *(tbl[i].valp) = tbl[i].dflt; - } -} - -/* print the default value of the suboptions */ -static void -print_subo_dflt( - FILE *f, - struct subo_case *tbl -) -{ - int i; - - for(i=0; tbl[i].disbl != 0; i++) { - if(tbl[i].dflt) - putc(tbl[i].enbl, f); - else - putc(tbl[i].disbl, f); - } -} - -/* print the usage message for the suboptions */ -static void -print_subo_usage( - FILE *f, - struct subo_case *tbl -) -{ - int i; - - fprintf(f,"The lowercase suboptions disable features, corresponding\n"); - fprintf(f,"uppercase suboptions enable them. The supported suboptions,\n"); - fprintf(f,"their default states and the features they control are:\n"); - for(i=0; tbl[i].disbl != 0; i++) { - fprintf(f," %c/%c - [%s] %s\n", tbl[i].disbl, tbl[i].enbl, - tbl[i].dflt ? "enabled" : "disabled", tbl[i].descr); - } -} - -/* find and set the entry according to suboption, - * return the found entry (or if not found return NULL) - */ -struct subo_case * -set_subo( - struct subo_case *tbl, - int subopt -) -{ - int i; - - for(i=0; tbl[i].disbl != 0; i++) { - if(subopt == tbl[i].disbl) { - *(tbl[i].valp) = 0; - return &tbl[i]; - } else if(subopt == tbl[i].enbl) { - *(tbl[i].valp) = 1; - return &tbl[i]; - } - } - return NULL; -} - - -int -main( - int argc, - char **argv -) -{ - int i, j; - time_t now; - char filename[4096]; - int c,nchars,nmetrics; - int ws; - int forcebold= -1; /* -1 means "don't know" */ - char *lang; - int oc; - int subid; - char *cmdline; -#ifdef _GNU_SOURCE -# define ttf2pt1_getopt(a, b, c, d, e) getopt_long(a, b, c, d, e) - static struct option longopts[] = { - { "afm", 0, NULL, 'A' }, - { "all-glyphs", 0, NULL, 'a' }, - { "pfb", 0, NULL, 'b' }, - { "debug", 1, NULL, 'd' }, - { "encode", 0, NULL, 'e' }, - { "force-unicode", 0, NULL, 'F' }, - { "generate", 1, NULL, 'G' }, - { "language", 1, NULL, 'l' }, - { "language-map", 1, NULL, 'L' }, - { "limit", 1, NULL, 'm' }, - { "processing", 1, NULL, 'O' }, - { "parser", 1, NULL, 'p' }, - { "uid", 1, NULL, 'u' }, - { "vertical-autoscale", 1, NULL, 'v' }, - { "version", 0, NULL, 'V' }, - { "warning", 1, NULL, 'W' }, - { NULL, 0, NULL, 0 } - }; -#else -# define ttf2pt1_getopt(a, b, c, d, e) getopt(a, b, c) -#endif - /* table of Outline Processing (may think also as Optimization) options */ - static struct subo_case opotbl[] = { - { 'b', 0/*auto-set*/, &trybold, 1, "guessing of the ForceBold hint" }, - { 'h', 0/*auto-set*/, &hints, 1, "autogeneration of hints" }, - { 'u', 0/*auto-set*/, &subhints, 1, "hint substitution technique" }, - { 'o', 0/*auto-set*/, &optimize, 1, "space optimization of font files" }, - { 's', 0/*auto-set*/, &smooth, 1, "smoothing and repair of outlines" }, - { 't', 0/*auto-set*/, &transform, 1, "auto-scaling to the standard matrix 1000x1000" }, - { 'w', 0/*auto-set*/, &correctwidth, 0, "correct the glyph widths (use only for buggy fonts)" }, - { 'v', 0/*auto-set*/, &vectorize, 0, "vectorize (trace) the bitmaps" }, -#ifdef USE_AUTOTRACE - { 'z', 0/*auto-set*/, &use_autotrace, 0, "use the autotrace library on bitmaps (works badly)" }, -#endif /*USE_AUTOTRACE*/ - { 0, 0, 0, 0, 0} /* terminator */ - }; - /* table of the File Generation options */ - static struct subo_case fgotbl[] = { - { 'f', 0/*auto-set*/, &gen_pfa, 1, "generate the font file (.t1a, .pfa or .pfb)" }, - { 'a', 0/*auto-set*/, &gen_afm, 1, "generate the Adobe metrics file (.afm)" }, - { 'u', 0/*auto-set*/, &gen_ufm, 1, "generate the Unicode metrics file (.ufm)" }, - { 'e', 0/*auto-set*/, &gen_dvienc, 0, "generate the dvips encoding file (.enc)" }, - { 0, 0, 0, 0, 0} /* terminator */ - }; - int *genlast = NULL; - - - init_subo_tbl(opotbl); /* initialize sub-options of -O */ - init_subo_tbl(fgotbl); /* initialize sub-options of -G */ - - /* save the command line for the record - * (we don't bother about escaping the shell special characters) - */ - - j = 0; - for(i=1; i<argc; i++) { - j += strlen(argv[i])+1; - } - if ((cmdline = malloc(j+1)) == NULL) { - fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__); - exit(255); - } - cmdline[0] = 0; - for(i=1; i<argc; i++) { - strcat(cmdline, argv[i]); - strcat(cmdline, " "); - } - for(i=0; (j=cmdline[i])!=0; i++) - if(j == '\n') - cmdline[i] = ' '; - - - while(( oc=ttf2pt1_getopt(argc, argv, "FaoebAsthHfwVv:p:l:d:u:L:m:W:O:G:", - longopts, NULL) )!= -1) { - switch(oc) { - case 'W': - if(sscanf(optarg, "%d", &warnlevel) < 1 || warnlevel < 0) { - fprintf(stderr, "**** warning level must be a positive number\n"); - exit(1); - } - break; - case 'F': - forcemap = 1; - break; - case 'o': - fputs("Warning: option -o is obsolete, use -Oo instead\n", stderr); - optimize = 0; - break; - case 'e': - encode = 1; - break; - case 'b': - encode = pfbflag = 1; - break; - case 'A': - fputs("Warning: option -A is obsolete, use -GA instead\n", stderr); - wantafm = 1; - break; - case 'a': - allglyphs = 1; - break; - case 's': - fputs("Warning: option -s is obsolete, use -Os instead\n", stderr); - smooth = 0; - break; - case 't': - fputs("Warning: option -t is obsolete, use -Ot instead\n", stderr); - transform = 0; - break; - case 'd': - for(i=0; optarg[i]!=0; i++) - switch(optarg[i]) { - case 'a': - absolute = 1; - break; - case 'r': - reverse = 0; - break; - default: - if (optarg[i] != '?') - fprintf(stderr, "**** Unknown debugging option '%c' ****\n", optarg[i]); - fputs("The recognized debugging options are:\n", stderr); - fputs(" a - enable absolute coordinates\n", stderr); - fputs(" r - do not reverse font outlines directions\n", stderr); - exit(1); - break; - }; - break; - case 'm': - { - char subopt; - int val; - - if(sscanf(optarg, "%c=%d", &subopt, &val) !=2) { - fprintf(stderr, "**** Misformatted maximal limit ****\n"); - fprintf(stderr, "spaces around the equal sign are not allowed\n"); - fprintf(stderr, "good examples: -mh=100 -m h=100\n"); - fprintf(stderr, "bad examples: -mh = 100 -mh= 100\n"); - exit(1); - break; - } - switch(subopt) { - case 'h': - max_stemdepth = val; - break; - default: - if (subopt != '?') - fprintf(stderr, "**** Unknown limit type '%c' ****\n", subopt); - fputs("The recognized limit types are:\n", stderr); - fputs(" h - maximal hint stack depth in the PostScript interpreter\n", stderr); - exit(1); - break; - } - break; - } - case 'O': - { - char *p; - for(p=optarg; *p != 0; p++) { - if(set_subo(opotbl, *p) == NULL) { /* found no match */ - if (*p != '?') - fprintf(stderr, "**** Unknown outline processing suboption '%c' ****\n", *p); - fprintf(stderr,"The general form of the outline processing option is:\n"); - fprintf(stderr," -O suboptions\n"); - fprintf(stderr,"(To remember easily -O may be also thought of as \"optimization\").\n"); - print_subo_usage(stderr, opotbl); - fprintf(stderr, "The default state corresponds to the option -O "); - print_subo_dflt(stderr, opotbl); - fprintf(stderr, "\n"); - exit(1); - } - } - break; - } - case 'G': - { - char *p; - struct subo_case *s; - - for(p=optarg; *p != 0; p++) { - if(( s = set_subo(fgotbl, *p) )==NULL) { /* found no match */ - if (*p != '?') - fprintf(stderr, "**** Unknown outline processing suboption '%c' ****\n", *p); - fprintf(stderr,"The general form of the file generation option is:\n"); - fprintf(stderr," -G suboptions\n"); - print_subo_usage(stderr, fgotbl); - fprintf(stderr, "The default state corresponds to the option -G "); - print_subo_dflt(stderr, fgotbl); - fprintf(stderr, "\n"); - fprintf(stderr, "If the result is written to STDOUT, the last specified enabling suboption of -G\n"); - fprintf(stderr, "selects the file to be written to STDOUT (the font file by default).\n"); - exit(1); - } - if( *(s->valp) ) - genlast = s->valp; - } - break; - } - case 'h': - fputs("Warning: option -h is obsolete, use -Oh instead\n", stderr); - hints = 0; - break; - case 'H': - fputs("Warning: meaning of option -H has been changed to its opposite\n", stderr); - fputs("Warning: option -H is obsolete, use -Ou instead\n", stderr); - subhints = 0; - break; - case 'f': - fputs("Warning: option -f is obsolete, use -Ob instead\n", stderr); - trybold = 0; - break; - case 'w': - fputs("Warning: option -w is obsolete, use -OW instead\n", stderr); - correctwidth = 1; - break; - case 'u': - if(wantuid) { - fprintf(stderr, "**** UniqueID may be specified only once ****\n"); - exit(1); - } - wantuid = 1; - if(optarg[0]=='A' && optarg[1]==0) - strUID=0; /* will be generated automatically */ - else { - strUID=optarg; - for(i=0; optarg[i]!=0; i++) - if( !isdigit(optarg[i]) ) { - fprintf(stderr, "**** UniqueID must be numeric or A for automatic ****\n"); - exit(1); - } - } - break; - case 'v': - correctvsize = atoi(optarg); - if(correctvsize <= 0 && correctvsize > 1000) { - fprintf(stderr, "**** wrong vsize '%d', ignored ****\n", correctvsize); - correctvsize=0; - } - break; - case 'p': - if(cursw!=0) { - fprintf(stderr, "**** only one front-end parser be used ****\n"); - exit(1); - } - - { /* separate parser from parser-specific argument */ - char *p = strchr(optarg, LANG_ARG_SEP); - if(p != 0) { - *p = 0; - front_arg = p+1; - } else - front_arg = ""; - } - for(i=0; frontswtab[i] != NULL; i++) - if( !strcmp(frontswtab[i]->name, optarg) ) { - cursw = frontswtab[i]; - break; - } - - if(cursw==0) { - if (strcmp(optarg, "?")) - fprintf(stderr, "**** unknown front-end parser '%s' ****\n", optarg); - fputs("the following front-ends are supported now:\n", stderr); - for(i=0; frontswtab[i] != NULL; i++) { - fprintf(stderr," %s (%s)\n file suffixes: ", - frontswtab[i]->name, - frontswtab[i]->descr ? frontswtab[i]->descr : "no description" - ); - for(j=0; j<MAXSUFFIX; j++) - if(frontswtab[i]->suffix[j]) - fprintf(stderr, "%s ", frontswtab[i]->suffix[j]); - fprintf(stderr, "\n"); - } - exit(1); - } - break; - case 'l': - if(uni_lang_selected!=0) { - fprintf(stderr, "**** only one language option may be used ****\n"); - exit(1); - } - - { /* separate language from language-specific argument */ - char *p = strchr(optarg, LANG_ARG_SEP); - if(p != 0) { - *p = 0; - uni_lang_arg = p+1; - } else - uni_lang_arg = ""; - } - for(i=0; i < sizeof uni_lang/(sizeof uni_lang[0]); i++) - if( !strcmp(uni_lang[i].name, optarg) ) { - uni_lang_selected = &uni_lang[i]; - uni_sample = uni_lang[i].sample_upper; - break; - } - - if(uni_lang_selected==0) { - if (strcmp(optarg, "?")) - fprintf(stderr, "**** unknown language '%s' ****\n", optarg); - fputs(" the following languages are supported now:\n", stderr); - for(i=0; i < sizeof uni_lang/(sizeof uni_lang[0]); i++) - fprintf(stderr," %s (%s)\n", - uni_lang[i].name, - uni_lang[i].descr ? uni_lang[i].descr : "no description" - ); - exit(1); - } - break; - case 'L': - if(uni_lang_selected!=0) { - fprintf(stderr, "**** only one language option may be used ****\n"); - exit(1); - } - uni_lang_selected = &uni_lang_user; - uni_lang_arg = optarg; - break; - case 'V': - printversion(); - exit(0); - break; - default: - usage(); - exit(1); - break; - } - } - argc-=optind-1; /* the rest of code counts from argv[0] */ - argv+=optind-1; - - if (absolute && encode) { - fprintf(stderr, "**** options -a and -e are incompatible ****\n"); - exit(1); - } - if ((argc != 2) && (argc != 3)) { - usage(); - exit(1); - } - - /* try to guess the language by the locale used */ - if(uni_lang_selected==0 && (lang=getenv("LANG"))!=0 ) { - for(i=0; i < sizeof uni_lang/sizeof(struct uni_language); i++) { - if( !strncmp(uni_lang[i].name, lang, strlen(uni_lang[i].name)) ) { - uni_lang_selected = &uni_lang[i]; - goto got_a_language; - } - } - /* no full name ? try aliases */ - for(i=0; i < sizeof uni_lang/sizeof(struct uni_language); i++) { - for(c=0; c<MAXUNIALIAS; c++) - if( uni_lang[i].alias[c]!=0 - && !strncmp(uni_lang[i].alias[c], lang, strlen(uni_lang[i].alias[c])) ) { - uni_lang_selected = &uni_lang[i]; - goto got_a_language; - } - } - got_a_language: - if(uni_lang_selected!=0) { - WARNING_1 fprintf(stderr, "Using language '%s' for Unicode fonts\n", uni_lang[i].name); - uni_sample = uni_lang[i].sample_upper; - } - } - - /* try to guess the front-end parser by the file name suffix */ - if(cursw==0) { - char *p = strrchr(argv[1], '.'); - char *s; - - if(p!=0 && (s = strdup(p+1))!=0) { - for(p=s; *p; p++) - *p = tolower(*p); - p = s; - - for(i=0; frontswtab[i] != 0 && cursw == 0; i++) { - for(j=0; j<MAXSUFFIX; j++) - if(frontswtab[i]->suffix[j] - && !strcmp(p, frontswtab[i]->suffix[j]) ) { - cursw = frontswtab[i]; - WARNING_1 fprintf(stderr, "Auto-detected front-end parser '%s'\n", - cursw->name); - WARNING_1 fprintf(stderr, " (use ttf2pt1 -p? to get the full list of available front-ends)\n"); - break; - } - } - free(s); - } - - if(cursw==0) { - cursw = frontswtab[0]; - WARNING_1 fprintf(stderr, "Can't detect front-end parser, using '%s' by default\n", - cursw->name); - WARNING_1 fprintf(stderr, " (use ttf2pt1 -p? to get the full list of available front-ends)\n"); - } - } - - /* open the input file */ - cursw->open(argv[1], front_arg); - - /* Get base name of output file (if not specified) - * by removing (known) suffixes - */ - if (argc == 2) { - char *p; - argv[2] = strdup (argv[1]); - p = strrchr(argv[2], '.'); - if (p != NULL) - for (j = 0; (j < MAXSUFFIX) && (cursw->suffix[j]); j++) - if (!strcmp(p+1, cursw->suffix[j])) { - *p = '\0'; - break; - } - } - - if ((null_file = fopen(BITBUCKET, "w")) == NULL) { - fprintf(stderr, "**** Cannot open %s ****\n", - BITBUCKET); - exit(1); - } - - if (argv[2][0] == '-' && argv[2][1] == 0) { -#ifdef WINDOWS - if(encode) { - fprintf(stderr, "**** can't write encoded file to stdout ***\n"); - exit(1); - } -#endif /* WINDOWS */ - pfa_file = ufm_file = afm_file = dvienc_file = null_file; - - if(wantafm || genlast == &gen_afm) { /* print .afm instead of .pfa */ - afm_file=stdout; - } else if(genlast == &gen_dvienc) { /* print .enc instead of .pfa */ - dvienc_file=stdout; - } else { - pfa_file=stdout; - } - } else { -#ifndef WINDOWS - snprintf(filename, sizeof filename, "%s.%s", argv[2], encode ? (pfbflag ? "pfb" : "pfa") : "t1a" ); -#else /* WINDOWS */ - snprintf(filename, sizeof filename, "%s.t1a", argv[2]); -#endif /* WINDOWS */ - if(gen_pfa) { - if ((pfa_file = fopen(filename, "w+b")) == NULL) { - fprintf(stderr, "**** Cannot create %s ****\n", filename); - exit(1); - } else { - WARNING_2 fprintf(stderr, "Creating file %s\n", filename); - } - } else - pfa_file = null_file; - - if(gen_ufm) { - snprintf(filename, sizeof filename, "%s.ufm", argv[2]) ; - if ((ufm_file = fopen(filename, "w+")) == NULL) { - fprintf(stderr, "**** Cannot create %s ****\n", filename); - exit(1); - } - } else - ufm_file = null_file; - - if(gen_afm) { - snprintf(filename, sizeof filename, "%s.afm", argv[2]) ; - if ((afm_file = fopen(filename, "w+")) == NULL) { - fprintf(stderr, "**** Cannot create %s ****\n", filename); - exit(1); - } - } else - afm_file = null_file; - - if(gen_dvienc) { - snprintf(filename, sizeof filename, "%s.enc", argv[2]) ; - if ((dvienc_file = fopen(filename, "w+")) == NULL) { - fprintf(stderr, "**** Cannot create %s ****\n", filename); - exit(1); - } - } else - dvienc_file = null_file; - } - - /* - * Now check whether we want a fully encoded .pfa file - */ -#ifndef WINDOWS - if (encode && pfa_file != null_file) { - int p[2]; - extern FILE *ifp, *ofp; /* from t1asm.c */ - - ifp=stdin; - ofp=stdout; - - if (pipe(p) < 0) { - perror("**** Cannot create pipe ****\n"); - exit(1); - } - ofp = pfa_file; - ifp = fdopen(p[0], "r"); - if (ifp == NULL) { - perror("**** Cannot use pipe for reading ****\n"); - exit(1); - } - pfa_file = fdopen(p[1], "w"); - if (pfa_file == NULL) { - perror("**** Cannot use pipe for writing ****\n"); - exit(1); - } - switch (fork()) { - case -1: - perror("**** Cannot fork the assembler process ****\n"); - exit(1); - case 0: /* child */ - fclose(pfa_file); - exit(runt1asm(pfbflag)); - default: /* parent */ - fclose(ifp); fclose(ofp); - } - } -#endif /* WINDOWS */ - - numglyphs = cursw->nglyphs(); - - WARNING_3 fprintf(stderr, "numglyphs = %d\n", numglyphs); - - glyph_list = (GLYPH *) calloc(numglyphs, sizeof(GLYPH)); - - /* initialize non-0 fields */ - for (i = 0; i < numglyphs; i++) { - int j; - GLYPH *g; - - g = &glyph_list[i]; - g->char_no = -1; - for (j = 0; j < GLYPH_MAX_ENCODINGS; j++ ) { - g->orig_code[j] = -1; - } - g->name = "UNKNOWN"; - g->flags = GF_FLOAT; /* we start with float representation */ - } - - handle_gnames(); - - cursw->glmetrics(glyph_list); - cursw->fnmetrics(&fontm); - - original_scale_factor = 1000.0 / (double) fontm.units_per_em; - - if(transform == 0) - scale_factor = 1.0; /* don't transform */ - else - scale_factor = original_scale_factor; - - if(correctvsize && uni_sample!=0) { /* only for known languages */ - /* try to adjust the scale factor to make a typical - * uppercase character of hight at least (correctvsize), this - * may improve the appearance of the font but also - * make it weird, use with caution - */ - int ysz; - - ysz = iscale(glyph_list[encoding[uni_sample]].yMax); - if( ysz<correctvsize ) { - scale_factor *= (double)correctvsize / ysz; - } - } - - if(allglyphs) { - for (i = 0; i < numglyphs; i++) { - glyph_list[i].flags |= GF_USED; - } - } else { - for (i = 0; i < ENCTABSZ; i++) { - glyph_list[encoding[i]].flags |= GF_USED; - } - - /* also always include .notdef */ - for (i = 0; i < numglyphs; i++) - if(!strcmp(glyph_list[i].name, ".notdef")) { - glyph_list[i].flags |= GF_USED; - break; - } - } - - for (i = 0; i < numglyphs; i++) { - if (glyph_list[i].flags & GF_USED) { - DBG_TO_GLYPH(&glyph_list[i]); - convert_glyf(i); - DBG_FROM_GLYPH(&glyph_list[i]); - } - } - - italic_angle = fontm.italic_angle; - - if (italic_angle > 45.0 || italic_angle < -45.0) - italic_angle = 0.0; /* consider buggy */ - - if (hints) { - findblues(); - for (i = 0; i < numglyphs; i++) { - if (glyph_list[i].flags & GF_USED) { - DBG_TO_GLYPH(&glyph_list[i]); - buildstems(&glyph_list[i]); - assertpath(glyph_list[i].entries, __FILE__, __LINE__, glyph_list[i].name); - DBG_FROM_GLYPH(&glyph_list[i]); - } - } - stemstatistics(); - } else { - for(i=0; i<4; i++) - bbox[i] = iscale(fontm.bbox[i]); - } - /* don't touch the width of fixed width fonts */ - if( fontm.is_fixed_pitch ) - correctwidth=0; - docorrectwidth(); /* checks correctwidth inside */ - if (reverse) - for (i = 0; i < numglyphs; i++) { - if (glyph_list[i].flags & GF_USED) { - DBG_TO_GLYPH(&glyph_list[i]); - reversepaths(&glyph_list[i]); - assertpath(glyph_list[i].entries, __FILE__, __LINE__, glyph_list[i].name); - DBG_FROM_GLYPH(&glyph_list[i]); - } - } - - -#if 0 - /* - ** It seems to bring troubles. The problem is that some - ** styles of the font may be recognized as fixed-width - ** while other styles of the same font as proportional. - ** So it's better to be commented out yet. - */ - if (tryfixed) - alignwidths(); -#endif - - if(trybold) { - forcebold = fontm.force_bold; - } - - fprintf(pfa_file, "%%!PS-AdobeFont-1.0: %s %s\n", fontm.name_ps, fontm.name_copyright); - time(&now); - fprintf(pfa_file, "%%%%CreationDate: %s", ctime(&now)); - fprintf(pfa_file, "%% Converted by ttf2pt1 %s/%s\n", TTF2PT1_VERSION, cursw->name); - fprintf(pfa_file, "%% Args: %s\n", cmdline); - fprintf(pfa_file, "%%%%EndComments\n"); - fprintf(pfa_file, "12 dict begin\n/FontInfo 9 dict dup begin\n"); - - WARNING_3 fprintf(stderr, "FontName %s%s\n", fontm.name_ps, uni_font_name_suffix); - - - fprintf(pfa_file, "/version (%s) readonly def\n", fontm.name_version); - - fprintf(pfa_file, "/Notice (%s) readonly def\n", fontm.name_copyright); - - fprintf(pfa_file, "/FullName (%s) readonly def\n", fontm.name_full); - fprintf(pfa_file, "/FamilyName (%s) readonly def\n", fontm.name_family); - - if(wantuid) { - if(strUID) - fprintf(pfa_file, "/UniqueID %s def\n", strUID); - else { - numUID=0; - for(i=0; fontm.name_full[i]!=0; i++) { - numUID *= 37; /* magic number, good for hash */ - numUID += fontm.name_full[i]-' '; - /* if the name is long the first chars - * may be lost forever, so re-insert - * them thus making kind of CRC - */ - numUID += (numUID>>24) & 0xFF; - } - /* the range for private UIDs is 4 000 000 - 4 999 999 */ - fprintf(pfa_file, "/UniqueID %lu def\n", numUID%1000000+4000000); - } - } - - fprintf(pfa_file, "/Weight (%s) readonly def\n", fontm.name_style); - - fprintf(pfa_file, "/ItalicAngle %f def\n", italic_angle); - fprintf(pfa_file, "/isFixedPitch %s def\n", - fontm.is_fixed_pitch ? "true" : "false"); - - /* we don't print out the unused glyphs */ - nchars = 0; - for (i = 0; i < numglyphs; i++) { - if (glyph_list[i].flags & GF_USED) { - nchars++; - } - } - - fprintf(afm_file, "StartFontMetrics 4.1\n"); - fprintf(afm_file, "FontName %s%s\n", fontm.name_ps, uni_font_name_suffix); - fprintf(afm_file, "FullName %s\n", fontm.name_full); - fprintf(afm_file, "Notice %s\n", fontm.name_copyright); - fprintf(afm_file, "EncodingScheme FontSpecific\n"); - fprintf(afm_file, "FamilyName %s\n", fontm.name_family); - fprintf(afm_file, "Weight %s\n", fontm.name_style); - fprintf(afm_file, "Version %s\n", fontm.name_version); - fprintf(afm_file, "Characters %d\n", nchars); - fprintf(afm_file, "ItalicAngle %.1f\n", italic_angle); - - fprintf(afm_file, "Ascender %d\n", iscale(fontm.ascender)); - fprintf(afm_file, "Descender %d\n", iscale(fontm.descender)); - - fprintf(ufm_file, "StartFontMetrics 4.1\n"); - fprintf(ufm_file, "FontName %s%s\n", fontm.name_ps, uni_font_name_suffix); - fprintf(ufm_file, "FullName %s\n", fontm.name_full); - fprintf(ufm_file, "Notice %s\n", fontm.name_copyright); - fprintf(ufm_file, "EncodingScheme FontSpecific\n"); - fprintf(ufm_file, "FamilyName %s\n", fontm.name_family); - fprintf(ufm_file, "Weight %s\n", fontm.name_style); - fprintf(ufm_file, "Version %s\n", fontm.name_version); - fprintf(ufm_file, "Characters %d\n", nchars); - fprintf(ufm_file, "ItalicAngle %.1f\n", italic_angle); - - fprintf(ufm_file, "Ascender %d\n", iscale(fontm.ascender)); - fprintf(ufm_file, "Descender %d\n", iscale(fontm.descender)); - - fprintf(pfa_file, "/UnderlinePosition %d def\n", - iscale(fontm.underline_position)); - - fprintf(pfa_file, "/UnderlineThickness %hd def\nend readonly def\n", - iscale(fontm.underline_thickness)); - - fprintf(afm_file, "UnderlineThickness %d\n", - iscale(fontm.underline_thickness)); - - fprintf(afm_file, "UnderlinePosition %d\n", - iscale(fontm.underline_position)); - - fprintf(afm_file, "IsFixedPitch %s\n", - fontm.is_fixed_pitch ? "true" : "false"); - fprintf(afm_file, "FontBBox %d %d %d %d\n", - bbox[0], bbox[1], bbox[2], bbox[3]); - - fprintf(ufm_file, "UnderlineThickness %d\n", - iscale(fontm.underline_thickness)); - - fprintf(ufm_file, "UnderlinePosition %d\n", - iscale(fontm.underline_position)); - - fprintf(ufm_file, "IsFixedPitch %s\n", - fontm.is_fixed_pitch ? "true" : "false"); - fprintf(ufm_file, "FontBBox %d %d %d %d\n", - bbox[0], bbox[1], bbox[2], bbox[3]); - - fprintf(pfa_file, "/FontName /%s%s def\n", fontm.name_ps, uni_font_name_suffix); - fprintf(pfa_file, "/PaintType 0 def\n/StrokeWidth 0 def\n"); - /* I'm not sure if these are fixed */ - fprintf(pfa_file, "/FontType 1 def\n"); - - if (transform) { - fprintf(pfa_file, "/FontMatrix [0.001 0 0 0.001 0 0] def\n"); - } else { - fprintf(pfa_file, "/FontMatrix [%9.7f 0 0 %9.7f 0 0] def\n", - original_scale_factor / 1000.0, original_scale_factor / 1000.0); - } - - fprintf(pfa_file, "/FontBBox {%d %d %d %d} readonly def\n", - bbox[0], bbox[1], bbox[2], bbox[3]); - - fprintf(pfa_file, "/Encoding 256 array\n"); - /* determine number of elements for metrics table */ - nmetrics = 256; - for (i = 0; i < numglyphs; i++) { - if( glyph_list[i].flags & GF_USED - && glyph_list[i].char_no == -1 ) { - nmetrics++; - } - } - fprintf(afm_file, "StartCharMetrics %d\n", nmetrics); - fprintf(ufm_file, "StartCharMetrics %d\n", nmetrics); - - fprintf(dvienc_file, "/%s%sEncoding [\n", - fontm.name_ps, uni_font_name_suffix); - - for (i = 0; i < 256; i++) { /* here 256, not ENCTABSZ */ - fprintf(pfa_file, - "dup %d /%s put\n", i, glyph_list[encoding[i]].name); - if( glyph_list[encoding[i]].flags & GF_USED ) { - int j = 0; - print_glyph_metrics(afm_file, i, encoding[i]); - while ( glyph_list[encoding[i]].orig_code[j] != -1 ) { - //print_glyph_metrics_ufm(ufm_file, glyph_list[encoding[i]].orig_code, encoding[i]); - //print_glyph_metrics_ufm(ufm_file, i, encoding[i]); - print_glyph_metrics_ufm(ufm_file, glyph_list[encoding[i]].orig_code[j], encoding[i]); - j++; - } - } - if (encoding[i]) - fprintf (dvienc_file, "/index0x%04X\n", encoding[i]); - else - fprintf (dvienc_file, "/.notdef\n"); - } - - /* print the metrics for glyphs not in encoding table */ - for(i=0; i<numglyphs; i++) { - if( (glyph_list[i].flags & GF_USED) - && glyph_list[i].char_no == -1 ) { - int j = 0; - print_glyph_metrics(afm_file, -1, i); - while ( glyph_list[i].orig_code[j] != -1 ) { - //print_glyph_metrics_ufm(ufm_file, glyph_list[i].orig_code, i); - print_glyph_metrics_ufm(ufm_file, glyph_list[i].orig_code[j], i); - j++; - } - } - } - -/* for (i=0; i < ENCTABSZ; i++) { */ -/* print_glyph_metrics_ufm(ufm_file, i, encoding[i]); */ -/* } */ - - fprintf(pfa_file, "readonly def\ncurrentdict end\ncurrentfile eexec\n"); - fprintf(pfa_file, "dup /Private 16 dict dup begin\n"); - - fprintf(pfa_file, "/RD{string currentfile exch readstring pop}executeonly def\n"); - fprintf(pfa_file, "/ND{noaccess def}executeonly def\n"); - fprintf(pfa_file, "/NP{noaccess put}executeonly def\n"); - - /* UniqueID must be shown twice, in both font and Private dictionary */ - if(wantuid) { - if(strUID) - fprintf(pfa_file, "/UniqueID %s def\n", strUID); - else - /* the range for private UIDs is 4 000 000 - 4 999 999 */ - fprintf(pfa_file, "/UniqueID %lu def\n", numUID%1000000+4000000); - } - - if(forcebold==0) - fprintf(pfa_file, "/ForceBold false def\n"); - else if(forcebold==1) - fprintf(pfa_file, "/ForceBold true def\n"); - - fprintf(pfa_file, "/BlueValues [ "); - for (i = 0; i < nblues; i++) - fprintf(pfa_file, "%d ", bluevalues[i]); - fprintf(pfa_file, "] def\n"); - - fprintf(pfa_file, "/OtherBlues [ "); - for (i = 0; i < notherb; i++) - fprintf(pfa_file, "%d ", otherblues[i]); - fprintf(pfa_file, "] def\n"); - - if (stdhw != 0) - fprintf(pfa_file, "/StdHW [ %d ] def\n", stdhw); - if (stdvw != 0) - fprintf(pfa_file, "/StdVW [ %d ] def\n", stdvw); - fprintf(pfa_file, "/StemSnapH [ "); - for (i = 0; i < 12 && stemsnaph[i] != 0; i++) - fprintf(pfa_file, "%d ", stemsnaph[i]); - fprintf(pfa_file, "] def\n"); - fprintf(pfa_file, "/StemSnapV [ "); - for (i = 0; i < 12 && stemsnapv[i] != 0; i++) - fprintf(pfa_file, "%d ", stemsnapv[i]); - fprintf(pfa_file, "] def\n"); - - fprintf(pfa_file, "/MinFeature {16 16} def\n"); - /* Are these fixed also ? */ - fprintf(pfa_file, "/password 5839 def\n"); - - /* calculate the number of subroutines */ - - subid=5; - for (i = 0; i < numglyphs; i++) { - if (glyph_list[i].flags & GF_USED) { - subid+=glyph_list[i].nsg; - } - } - - fprintf(pfa_file, "/Subrs %d array\n", subid); - /* standard subroutines */ - fprintf(pfa_file, "dup 0 {\n\t3 0 callothersubr pop pop setcurrentpoint return\n\t} NP\n"); - fprintf(pfa_file, "dup 1 {\n\t0 1 callothersubr return\n\t} NP\n"); - fprintf(pfa_file, "dup 2 {\n\t0 2 callothersubr return\n\t} NP\n"); - fprintf(pfa_file, "dup 3 {\n\treturn\n\t} NP\n"); - /* our sub to make the hint substitution code shorter */ - fprintf(pfa_file, "dup 4 {\n\t1 3 callothersubr pop callsubr return\n\t} NP\n"); - - if(pfa_file != null_file) { /* save time if the output would be wasted */ - /* print the hinting subroutines */ - subid=5; - for (i = 0; i < numglyphs; i++) { - if (glyph_list[i].flags & GF_USED) { - subid+=print_glyph_subs(i, subid); - } - } - - fprintf(pfa_file, "ND\n"); - - fprintf(pfa_file, "2 index /CharStrings %d dict dup begin\n", nchars); - - for (i = 0; i < numglyphs; i++) { - if (glyph_list[i].flags & GF_USED) { - print_glyph(i); - } - } - } - - - fprintf(pfa_file, "end\nend\nreadonly put\n"); - fprintf(pfa_file, "noaccess put\n"); - fprintf(pfa_file, "dup/FontName get exch definefont pop\n"); - fprintf(pfa_file, "mark currentfile closefile\n"); - fprintf(pfa_file, "cleartomark\n"); - if(pfa_file != null_file) - fclose(pfa_file); - - fprintf(afm_file, "EndCharMetrics\n"); - fprintf(ufm_file, "EndCharMetrics\n"); - - if(afm_file != null_file) { /* save time if the output would be wasted */ - /* print the kerning data if present */ - cursw->kerning(glyph_list); - print_kerning(afm_file); - } - if(ufm_file != null_file) { /* save time if the output would be wasted */ - /* print the kerning data if present */ - cursw->kerning(glyph_list); - print_kerning(ufm_file); - } - - fprintf(afm_file, "EndFontMetrics\n"); - if(afm_file != null_file) - fclose(afm_file); - - fprintf(ufm_file, "EndFontMetrics\n"); - if(ufm_file != null_file) - fclose(ufm_file); - - fprintf(dvienc_file, "] def\n"); - if(dvienc_file != null_file) - fclose(dvienc_file); - - WARNING_1 fprintf(stderr, "Finished - font files created\n"); - - cursw->close(); - -#ifndef WINDOWS - while (wait(&ws) > 0) { - } -#else - if (encode && pfa_file != null_file) { - extern FILE *ifp, *ofp; /* from t1asm.c */ - - snprintf(filename, sizeof filename, "%s.%s", argv[2], pfbflag ? "pfb" : "pfa" ); - - if ((ofp = fopen(filename, "w+b")) == NULL) { - fprintf(stderr, "**** Cannot create %s ****\n", filename); - exit(1); - } else { - WARNING_2 fprintf(stderr, "Creating file %s\n", filename); - } - - snprintf(filename, sizeof filename, "%s.t1a", argv[2]); - - if ((ifp = fopen(filename, "rb")) == NULL) { - fprintf(stderr, "**** Cannot read %s ****\n", filename); - exit(1); - } else { - WARNING_2 fprintf(stderr, "Converting file %s\n", filename); - } - - runt1asm(pfbflag); - - WARNING_2 fprintf(stderr, "Removing file %s\n", filename); - if(unlink(filename) < 0) - WARNING_1 fprintf(stderr, "Unable to remove file %s\n", filename); - } -#endif /* WINDOWS */ - - fclose(null_file); - return 0; -} diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/ttf2pt1_convert.1 b/application/third_party/dompdf/lib/ttf2ufm/src/ttf2pt1_convert.1 deleted file mode 100644 index beada4fc..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/ttf2pt1_convert.1 +++ /dev/null @@ -1,506 +0,0 @@ -.rn '' }` -''' $RCSfile: ttf2pt1_convert.1,v $$Revision: 1.1 $$Date: 2008-03-12 06:35:44 $ -''' -''' $Log: not supported by cvs2svn $ -''' -.de Sh -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. -.de Sp -.if t .sp .5v -.if n .sp -.. -.de Ip -.br -.ie \\n(.$>=3 .ne \\$3 -.el .ne 3 -.IP "\\$1" \\$2 -.. -.de Vb -.ft CW -.nf -.ne \\$1 -.. -.de Ve -.ft R - -.fi -.. -''' -''' -''' Set up \*(-- to give an unbreakable dash; -''' string Tr holds user defined translation string. -''' Bell System Logo is used as a dummy character. -''' -.tr \(*W-|\(bv\*(Tr -.ie n \{\ -.ds -- \(*W- -.ds PI pi -.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch -.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch -.ds L" "" -.ds R" "" -''' \*(M", \*(S", \*(N" and \*(T" are the equivalent of -''' \*(L" and \*(R", except that they are used on ".xx" lines, -''' such as .IP and .SH, which do another additional levels of -''' double-quote interpretation -.ds M" """ -.ds S" """ -.ds N" """"" -.ds T" """"" -.ds L' ' -.ds R' ' -.ds M' ' -.ds S' ' -.ds N' ' -.ds T' ' -'br\} -.el\{\ -.ds -- \(em\| -.tr \*(Tr -.ds L" `` -.ds R" '' -.ds M" `` -.ds S" '' -.ds N" `` -.ds T" '' -.ds L' ` -.ds R' ' -.ds M' ` -.ds S' ' -.ds N' ` -.ds T' ' -.ds PI \(*p -'br\} -.\" If the F register is turned on, we'll generate -.\" index entries out stderr for the following things: -.\" TH Title -.\" SH Header -.\" Sh Subsection -.\" Ip Item -.\" X<> Xref (embedded -.\" Of course, you have to process the output yourself -.\" in some meaninful fashion. -.if \nF \{ -.de IX -.tm Index:\\$1\t\\n%\t"\\$2" -.. -.nr % 0 -.rr F -.\} -.TH TTF2PT1_CONVERT 1 "version 3.4.4" "December 31, 2003" "TTF2PT1 Font Converter" -.UC -.if n .hy 0 -.if n .na -.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' -.de CQ \" put $1 in typewriter font -.ft CW -'if n "\c -'if t \\&\\$1\c -'if n \\&\\$1\c -'if n \&" -\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7 -'.ft R -.. -.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2 -. \" AM - accent mark definitions -.bd B 3 -. \" fudge factors for nroff and troff -.if n \{\ -. ds #H 0 -. ds #V .8m -. ds #F .3m -. ds #[ \f1 -. ds #] \fP -.\} -.if t \{\ -. ds #H ((1u-(\\\\n(.fu%2u))*.13m) -. ds #V .6m -. ds #F 0 -. ds #[ \& -. ds #] \& -.\} -. \" simple accents for nroff and troff -.if n \{\ -. ds ' \& -. ds ` \& -. ds ^ \& -. ds , \& -. ds ~ ~ -. ds ? ? -. ds ! ! -. ds / -. ds q -.\} -.if t \{\ -. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" -. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' -. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' -. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' -. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' -. ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10' -. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m' -. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' -. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10' -.\} -. \" troff and (daisy-wheel) nroff accents -.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' -.ds 8 \h'\*(#H'\(*b\h'-\*(#H' -.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#] -.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u' -.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u' -.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#] -.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] -.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' -.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' -.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] -.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] -.ds ae a\h'-(\w'a'u*4/10)'e -.ds Ae A\h'-(\w'A'u*4/10)'E -.ds oe o\h'-(\w'o'u*4/10)'e -.ds Oe O\h'-(\w'O'u*4/10)'E -. \" corrections for vroff -.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' -.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' -. \" for low resolution devices (crt and lpr) -.if \n(.H>23 .if \n(.V>19 \ -\{\ -. ds : e -. ds 8 ss -. ds v \h'-1'\o'\(aa\(ga' -. ds _ \h'-1'^ -. ds . \h'-1'. -. ds 3 3 -. ds o a -. ds d- d\h'-1'\(ga -. ds D- D\h'-1'\(hy -. ds th \o'bp' -. ds Th \o'LP' -. ds ae ae -. ds Ae AE -. ds oe oe -. ds Oe OE -.\} -.rm #[ #] #H #V #F C -.SH "NAME" -\fBttf2pt1_convert\fR \- convenience font conversion script -.SH "SYNOPSIS" -ttf2pt1_convert \fB[config-file]\fR -.SH "DESCRIPTION" -`\fBConvert\fR\*(R' is the master conversion script provided with ttf2pt1. -When installed into a public directory it's named `\fBttf2pt1_convert\fR\*(R' -to avoid name collisions with the other programs. -.PP -If the configuration file is not specified as an argument then the file -`\f(CWconvert.cfg\fR\*(R' in the current directory is used. This file contains -a set of configuration variables. The distribution contains a sample file -file `\f(CWconvert.cfg.sample\fR\*(R'. Please copy it to `\f(CWconvert.cfg\fR\*(R', -look inside it and change the configuration variables. The more stable -configuration variables, such as the path names of the scripts and -encoding files are located in `\f(CWconvert\fR\*(R' itself, they are -automatically updated when installing \fBttf2pt1\fR. -.PP -Put all the TTF fonts you want to convert into some directory (this -may be just the directory that already contains all the Windows -fonts on a mounted FAT filesystem). If you have fonts in different -source encoding then put the fonts in each of the encodings -into a separate directory. Up to 10 source directories are -supported. If you (in a rather unlikely case) have more source -directories then you can make two separate runs of the converter, -converting up to 10 directories at a time. -.PP -The variables in the configuration file are: -.Ip "\(bu" 2 -\fB\f(CWSRCDIRS\fR\fR \- the list of directories (with absolute paths) with -\s-1TTF\s0 fonts. Each line contains at least 3 fields: the name of the directory, -the language of the fonts in it (if you have fonts for different -languages you have to put them into the separate directories) and the -encoding of the fonts. Again, if you have some of the \s-1TTF\s0 typefaces in -one encoding, and some in another (say, \s-1CP\s0\-1251 and \s-1KOI\s0\-8), you have -to put them into the separate source directories. Some lines may contain -4 fields. Then the fourth field is the name of the external map to -convert the Unicode fonts into the desirable encoding. This map is -used instead of the built-in map for the specified language. -.Sp -*8* -An interesting thing is that some languages have more than one -widely used character encodings. For example, the widely used -encodings for Russian are \s-1IBM\s0 \s-1CP\s0\-866 (\s-1MS\s0\-\s-1DOS\s0 and Unix), \s-1KOI\s0\-8 -(Unix and \s-1VAX\s0, also the standard Internet encoding), \s-1IBM\s0 \s-1CP\s0\-1251 (\s-1MS\s0 Windows). -That's why I have provided the means to generate the converted fonts -in more than one encoding. See the file encodings/\s-1README\s0 for -details about the encoding tables. Actually, if you plan to use -these fonts with Netscape Navigator better use the aliases -cp-866 instead of ibm-866 and windows-1251 instead of ibm-1251 -because that's what Netscape wants. -.Ip "\(bu" 2 -\fB\f(CWDSTDIR\fR\fR \- directory for the resulting Type1 fonts. Be careful! -This directory gets completely wiped out before conversion, -so don't use any already existing directory for this purpose. -.Ip "\(bu" 2 -\fB\f(CWDSTENC\fI{language}\fR\fR\fR \- the list of encodings in which the destination -fonts will be generated for each language. Each font of that -language will be generated in each of the specified -encodings. If you don't want any translation, just specify both -\f(CWSRCENC\fR and \f(CWDSTENC\fR as iso8859-1 (or if you want any other encoding -specified in the fonts.dir, copy the description of 8859-1 with -new name and use this new name for \f(CWSRCENC\fR and \f(CWDSTENC\fR). -.Ip "\(bu" 2 -\fB\f(CWFOUNDRY\fR\fR \- the foundry name to be used in the fonts.dir file. I have -set it to `fromttf\*(R' to avoid name conflicts with any existing font for -sure. But this foundry name is not registered in X11 standards and -if you want to get the full standard compliance or have a font server -that enforces such a compliance, use `misc\*(R'. -.PP -The next few parameters control the general behavior of the converter. -They default values are set to something reasonable. -.Ip "\(bu" 2 -\fB\f(CWCORRECTWIDTH\fR\fR \- if the value is set to \fB\f(CWYES\fR\fR then use the -converter option \f(CW\fB-w\fR\fR, otherwise don't use it. See the description of -this option in the \s-1README\s0 file. -.Ip "\(bu" 2 -\fB\f(CWREMOVET1A\fR\fR \- if the value is set to \fB\f(CWYES\fR\fR then after -conversion remove the un-encoded \f(CW.t1a\fR font files and the -intermediate \f(CW.xpfa\fR font metric files. -.Ip "\(bu" 2 -\fB\f(CWINSTALLFONTMAP\fR\fR \- a Ghostscript parameter, if the value is set to -\fB\f(CWYES\fR\fR then install the entries for the new fonts -right into the main \f(CWFontmap\fR file. Otherwise just leave -the file \f(CWFontmap.ttf\fR in the Ghostscript configuration -directory. -.Ip "\(bu" 2 -\fB\f(CWHINTSUBST\fR\fR \- if the value is set to \fB\f(CWYES\fR\fR use the option -\f(CW\fB-H\fR\fR, otherwise don't use it. This option enables the -hint substitution technique. If you have not installed the X11 patch -described above, use this option with great caution. See further -description of this option in the \s-1README\s0 file. -.Ip "\(bu" 2 -\fB\f(CWENFORCEISO\fR\fR \- if the value is set to \fB\f(CWYES\fR\fR then -disguise the resulting fonts as the fonts in ISOLatin1 encoding. Historically -this was neccessary due to the way the installer scripts created the -X11 font configuration files. It is not neccessary any more for this -purpose. But if you plan to use these fonts with some other application -that expects ISOLatin1 encoding then better enable this option. -.Ip "\(bu" 2 -\fB\f(CWALLGLYPHS\fR\fR \- if the value is set to \fB\f(CWYES\fR\fR then -include all the glyphs from the source fonts into the resulting fonts, even -if these glyphs are inaccessible. If it's set to \fB\f(CWNO\fR\fR then -include only the glyphs which have codes assigned to them. The glyphs -without codes can not be used directly. But some clever programs, -such as the Type 1 library from XFree86 3.9 and higher can change -the encoding on the fly and use another set of glyphs. If you have not -installed the X11 patch described above, use this option with great -caution. See further description of the option option \f(CW\fB-a\fR\fR in the -\s-1README\s0 file. -.Ip "\(bu" 2 -\fB\f(CWGENUID\fR\fR \- if the value is set to \fB\f(CWYES\fR\fR then use -the option \f(CW\fB-uA\fR\fR of the converter to generate UniqueIDs for -the converted fonts. The standard X11 Type 1 library does not use -this \s-1ID\s0, so it may only be neccessary for the other applications. -The script is clever enough to generate different UniqueID for the -same font converted to multiple encodings. Also after conversion it -checks all the fonts generacted during the session for duplicated -UniqueID and shows those. Still, this does not quarantee that these -UniqueIDs won't overlap with some other fonts. The UniqueIDs are -generated as hash values from the font names, so it's guaranteed -that if the `\f(CWconvert\fR\*(R' script runs multiple times it will -generate the same UniqueIDs during each run. See further description -of this option in the \s-1README\s0 file. -.Ip "\(bu" 2 -\fB\f(CWGENUID\fR\fR \- if the value is set to \fB\f(CWYES\fR\fR then create -the \f(CW.pfb\fR files, otherwise the \f(CW.pfa\fR files. The \f(CW.pfb\fR -files are more compact but contain binary data, so you may experience some -troubles when transferring them through the network. -.PP -The following parameters are used to locate the other scripts and -configuration files. By default the scripts do a bit of guessing for them: -they search in the \fBttf2pt1\fR installation directory if \fBttf2pt1\fR -was installed or otherwise suppose that you are running `\f(CWconvert\fR\*(R' with -`\f(CWscripts\fR\*(R' subdirectory being the current directory. -.Ip "\(bu" 2 -\fB\f(CWENCDIR\fR\fR \- directory containing the descriptions of encodings -.Ip "\(bu" 2 -\fB\f(CWMAPDIR\fR\fR \- directory containing the external map files -.PP -Besides that a few parameters are built into the `\f(CWconvert\fR\*(R' script itself. -You probably won't need to change them: -.Ip "\(bu" 2 -\f(CW\fBT1ASM\fR\fR, \f(CW\fBTTF2PT1\fR\fR, \f(CW\fBTRANS\fR\fR, \f(CW\fBT1FDIR\fR\fR, \f(CW\fBFORCEISO\fR\fR \- paths to the other script -.PP -Also there are a few parameters controlling the installation of -fonts for Ghostscript. Please look at their description in the -Ghostscript section of documentation or in the \fBttf2pt1_x2gs(1)\fR -manual page before running `\f(CWconvert\fR\*(R'. If these parameters are -set, `\f(CWconvert\fR\*(R' will call the `\f(CWx2gs\fR\*(R' script automatically -to install the newly converted fonts in Ghostscript. -.PP -After creating the configuration file run the `\f(CWconvert\fR\*(R' script. Look at -the result and the log file in \f(CWDSTDIR\fR. -.PP -Add the directory with newly converted fonts to the configuration -of X server or font server. For most of the systems this step is -very straightforward. For \s-1HP\s0\-\s-1UX\s0 it's rather tricky and poorly -documented, so the file \s-1FONTS\s0.hpux gives a short description. -.PP -If you don't have the privileges of the root user, you still can -configure your private font server. Just use some non-standard -port number (see \s-1FONTS\s0.hpux for an example, exept that you won't -need all the \s-1HP\s0\-related stuff on any other system). -.SH "FILES" -.Ip "\(bu" 2 -\s-1TTF2PT1_SHAREDIR/\s0scripts/convert.cfg.sample -.Ip "\(bu" 2 -\s-1TTF2PT1_SHAREDIR/\s0scripts/* -.Ip "\(bu" 2 -\s-1TTF2PT1_SHAREDIR/README\s0 -.Ip "\(bu" 2 -\s-1TTF2PT1_SHAREDIR/FONTS\s0 -.Ip "\(bu" 2 -\s-1TTF2PT1_SHAREDIR\s0/* -.Ip "\(bu" 2 -\s-1TTF2PT1_BINDIR/\s0ttf2pt1 -.SH "SEE ALSO" -.Ip "\(bu" 4 -the \fIttf2pt1(1)\fR manpage -.Ip "\(bu" 4 -the \fIttf2pt1_x2gs(1)\fR manpage -.Ip "\(bu" 4 -the \fIt1asm(1)\fR manpage -.SH "BUGS" -.Sh "Known problems" -.Ip "\(bu" 4 -One catch is that the X11 Type 1 font library has a rather low limit -on the font size. Because of this the fonts with more complicated -outlines and the enabled hint substitution may not fit into -this limit. The same applies to the fonts with very complicated -outlines or with very many glyphs (especially the fonts with -over 256 glyphs). So you will need to excercise caution with -these options if you plan using these fonts with X11. Some vendors -such as \s-1HP\s0 provide the Type 1 implementation licensed from Adobe -which should have no such problem. -.Sp -But there is a solution even for the generic X11. A patch located -in the subdirectory `\f(CWapp/X11\fR\*(R' fixes this problem as well -as some other minor problems. Its description is provided in -app/X11/\s-1README\s0. -.Sp -To fix the X11 font library, you have to get the X11 sources. I -can recommend the ftp sites of the XFree86 project ftp://ftp.xfree86.org -or of the Open Group ftp://ftp.x.org. This patch was made on the sources -of XFree86 so you may have better success with applying it to the -XFree86 distribution. After you have got the sources, make sure -that you can compile them. Then apply the patch as described. -Make sure that it was applied properly. Compile the sources again -(actually, you need only the fonts library, the fonts server, and -possibly the X server). It would be prudent now to save your old -font library, font server and, possibly, X server. Then install -the new recently compiled versions of these files. Of course, -if you know someone who already has compiled these files for the -same \s-1OS\s0 as yours, you can just copy the binary fles from him. -.Sp -Alas, building the X11 system from the source code is not the -easiest thing in the world and if you have no experience it -can be quite difficult. In this case just avoid the aforementioned -features or check each converted font to make sure that it -works properly. -.Ip "\(bu" 4 -The Type1 font library from the standard X11 distribution -does not work on \s-1HP\s0\-\s-1UX\s0 (at least, up to 10.01). The font server -supplied with \s-1HP\s0\-\s-1UX\s0 up to 10.01 is also broken. Starting from -\s-1HP\s0\-\s-1UX\s0 10.20 (I don't know about 10.10) they supply a proprietary font -library and the converted fonts work fine with it, provided that -they are configured properly (see the file \s-1FONTS\s0.hpux). -.Ip "\(bu" 4 -The \f(CWfonts.scale\fR files created by the older versions of the -\f(CWttf2pt1\fR installation program (up to release 3.1) have conflicted -with the language definitions of the \f(CWXfsft\fR font server and -parts of it included into XFree86. To overcome this incompatibility -the never versions creats the \f(CWfonts.scale\fR file describing all the -fonts as belonging to the \f(CWadobe-fontspecific\fR encoding and -the \f(CWfonts.alias\fR file with the proper names. The drawback of -this solution is that \f(CWxlsfonts\fR gives the list of twice more -fonts. But as a side effect the option \f(CW\fBENFORCEISO\fR\fR in -`\f(CWconvert.cfg\fR\*(R' is not required for X11 any more. -.Ip "\(bu" 4 -The conversion script has no support for Eastern multi-plane fonts. -Contribution of such a support would be welcome. - -.rn }` '' -.IX Title "TTF2PT1_CONVERT 1" -.IX Name "B<ttf2pt1_convert> - convenience font conversion script" - -.IX Header "NAME" - -.IX Header "SYNOPSIS" - -.IX Header "DESCRIPTION" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Header "FILES" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Header "SEE ALSO" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Header "BUGS" - -.IX Subsection "Known problems" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/ttf2pt1_x2gs.1 b/application/third_party/dompdf/lib/ttf2ufm/src/ttf2pt1_x2gs.1 deleted file mode 100644 index b8fc998e..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/ttf2pt1_x2gs.1 +++ /dev/null @@ -1,313 +0,0 @@ -.rn '' }` -''' $RCSfile: ttf2pt1_x2gs.1,v $$Revision: 1.1 $$Date: 2008-03-12 06:35:44 $ -''' -''' $Log: not supported by cvs2svn $ -''' -.de Sh -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. -.de Sp -.if t .sp .5v -.if n .sp -.. -.de Ip -.br -.ie \\n(.$>=3 .ne \\$3 -.el .ne 3 -.IP "\\$1" \\$2 -.. -.de Vb -.ft CW -.nf -.ne \\$1 -.. -.de Ve -.ft R - -.fi -.. -''' -''' -''' Set up \*(-- to give an unbreakable dash; -''' string Tr holds user defined translation string. -''' Bell System Logo is used as a dummy character. -''' -.tr \(*W-|\(bv\*(Tr -.ie n \{\ -.ds -- \(*W- -.ds PI pi -.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch -.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch -.ds L" "" -.ds R" "" -''' \*(M", \*(S", \*(N" and \*(T" are the equivalent of -''' \*(L" and \*(R", except that they are used on ".xx" lines, -''' such as .IP and .SH, which do another additional levels of -''' double-quote interpretation -.ds M" """ -.ds S" """ -.ds N" """"" -.ds T" """"" -.ds L' ' -.ds R' ' -.ds M' ' -.ds S' ' -.ds N' ' -.ds T' ' -'br\} -.el\{\ -.ds -- \(em\| -.tr \*(Tr -.ds L" `` -.ds R" '' -.ds M" `` -.ds S" '' -.ds N" `` -.ds T" '' -.ds L' ` -.ds R' ' -.ds M' ` -.ds S' ' -.ds N' ` -.ds T' ' -.ds PI \(*p -'br\} -.\" If the F register is turned on, we'll generate -.\" index entries out stderr for the following things: -.\" TH Title -.\" SH Header -.\" Sh Subsection -.\" Ip Item -.\" X<> Xref (embedded -.\" Of course, you have to process the output yourself -.\" in some meaninful fashion. -.if \nF \{ -.de IX -.tm Index:\\$1\t\\n%\t"\\$2" -.. -.nr % 0 -.rr F -.\} -.TH TTF2PT1_X2GS 1 "version 3.4.4" "December 31, 2003" "TTF2PT1 Font Converter" -.UC -.if n .hy 0 -.if n .na -.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' -.de CQ \" put $1 in typewriter font -.ft CW -'if n "\c -'if t \\&\\$1\c -'if n \\&\\$1\c -'if n \&" -\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7 -'.ft R -.. -.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2 -. \" AM - accent mark definitions -.bd B 3 -. \" fudge factors for nroff and troff -.if n \{\ -. ds #H 0 -. ds #V .8m -. ds #F .3m -. ds #[ \f1 -. ds #] \fP -.\} -.if t \{\ -. ds #H ((1u-(\\\\n(.fu%2u))*.13m) -. ds #V .6m -. ds #F 0 -. ds #[ \& -. ds #] \& -.\} -. \" simple accents for nroff and troff -.if n \{\ -. ds ' \& -. ds ` \& -. ds ^ \& -. ds , \& -. ds ~ ~ -. ds ? ? -. ds ! ! -. ds / -. ds q -.\} -.if t \{\ -. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" -. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' -. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' -. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' -. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' -. ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10' -. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m' -. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' -. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10' -.\} -. \" troff and (daisy-wheel) nroff accents -.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' -.ds 8 \h'\*(#H'\(*b\h'-\*(#H' -.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#] -.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u' -.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u' -.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#] -.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] -.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' -.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' -.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] -.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] -.ds ae a\h'-(\w'a'u*4/10)'e -.ds Ae A\h'-(\w'A'u*4/10)'E -.ds oe o\h'-(\w'o'u*4/10)'e -.ds Oe O\h'-(\w'O'u*4/10)'E -. \" corrections for vroff -.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' -.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' -. \" for low resolution devices (crt and lpr) -.if \n(.H>23 .if \n(.V>19 \ -\{\ -. ds : e -. ds 8 ss -. ds v \h'-1'\o'\(aa\(ga' -. ds _ \h'-1'^ -. ds . \h'-1'. -. ds 3 3 -. ds o a -. ds d- d\h'-1'\(ga -. ds D- D\h'-1'\(hy -. ds th \o'bp' -. ds Th \o'LP' -. ds ae ae -. ds Ae AE -. ds oe oe -. ds Oe OE -.\} -.rm #[ #] #H #V #F C -.SH "NAME" -\fBttf2pt1_x2gs\fR \- font installer for Ghostscript -.SH "SYNOPSIS" -ttf2pt1_x2gs \fB[config-file]\fR -.SH "DESCRIPTION" -The fonts generated with \fBttf2pt1\fR work fine with Ghostscript by -themselves. The script `\fBx2gs\fR\*(R' (or `\fBttf2pt1_x2gs\fR\*(R' when installed -into a public directory, to avoid name conflicts with other -programs) links the font files from the X11 direcotry into the Ghostscript -directory and automatically creates the description file (\f(CWFontmap\fR) -in Ghostscript format. -.PP -If the configuration file is not specified as an argument then the file -`\f(CWconvert.cfg\fR\*(R' in the current directory is used, just like the -`\f(CWconvert\fR\*(R' script does. Indeed, this configuration file is used for -both scripts. -.PP -The Ghostscript-related parameters in the configuration file are: -.PP -\fB\f(CWDSTDIR\fR\fR \- the X11 font directory used by `\f(CWx2gs\fR\*(R' as the -source of the fonts. This parameter is common with the X11 -configuration. -.PP -\fB\f(CWGSDIR\fR\fR \- the base directory of Ghostsript. If this -parameter is set to an empty string then `\f(CWconvert\fR\*(R' won't -call `\f(CWx2gs\fR\*(R'. So if you want to get only the X11 fonts -installed then set this parameter to an empty string. This -directory may vary on various system, so please check your -system and set this value accordingly before running the script. -.PP -\fB\f(CWGSFONTDIR\fR\fR \- the font directory of Ghostscript. In the standard -Ghostscript installation it's a subdirectory of \f(CWGSDIR\fR -but some systems may use completely different directories. -.PP -\fB\f(CWGSCONFDIR\fR\fR \- the configuration subdirectory of Ghostscript -that contains the \f(CWFontmap\fR file. -.PP -\fB\f(CWINSTALLFONTMAP\fR\fR \- if the value is set to \fB\f(CWYES\fR\fR then -install the entries for the new fonts right into the main -\f(CWFontmap\fR file. Otherwise just leave the file \f(CWFontmap.ttf\fR -in the Ghostscript configuration directory. -.PP -After preparing the configuration file run the script. It symbolicaly links -all the font files and creates the description file \f(CWFontmap.ttf\fR in -\f(CWGSCONDFIR\fR. After that there are two choices. -.PP -If the option \f(CWINSTALLFONTMAP\fR was set to \f(CWYES\fR then -the font descriptions are also automatically installed into the -master \f(CWFontmap\fR file. The script is clever enough to -detect if it was run multiple times with the same directories -and if so it replaces the old \f(CWFontmap\fR entries with -the new ones instead of just accumulating all of them. You -may also run it multiple times for multiple X11 directories -and all the results will be properly collected in the \f(CWFontmap\fR. -But it's your responsibility to watch that the names of the -font files don't overlap. If the X11 font directory gets -renamed then you have to remove its font entries from the -\f(CWFontmap\fR and only after that re-run `\f(CWx2gs\fR\*(R' -for the new directory. -.PP -On the other hand if the option \f(CWINSTALLFONTMAP\fR was set to -\f(CWNO\fR then go to the \f(CWGSCONFDIR\fR directory and insert the -contents of \f(CWFontmap.ttf\fR into the \f(CWFontmap\fR file -manually. This step may be left manual to make the installation -a little bit more safe. -.PP -After that you may also want to redefine some of the aliases in -\f(CWFontmap\fR to refer to the newly installed fonts. -But the redefinition of the aliases may be dangerous if the width of -characters in the new font will be different from the old font. -Alas, there is no visible solution of this problem yet. -.SH "FILES" -.Ip "\(bu" 2 -\s-1TTF2PT1_SHAREDIR/\s0scripts/convert.cfg.sample -.Ip "\(bu" 2 -\s-1TTF2PT1_SHAREDIR/\s0scripts/* -.Ip "\(bu" 2 -\s-1TTF2PT1_SHAREDIR/README\s0 -.Ip "\(bu" 2 -\s-1TTF2PT1_SHAREDIR/FONTS\s0 -.Ip "\(bu" 2 -\s-1TTF2PT1_SHAREDIR\s0/* -.Ip "\(bu" 2 -\s-1TTF2PT1_BINDIR/\s0ttf2pt1 -.SH "SEE ALSO" -.Ip "\(bu" 4 -the \fIttf2pt1(1)\fR manpage -.Ip "\(bu" 4 -the \fIttf2pt1_convert(1)\fR manpage -.Ip "\(bu" 4 -the \fIt1asm(1)\fR manpage - -.rn }` '' -.IX Title "TTF2PT1_X2GS 1" -.IX Name "B<ttf2pt1_x2gs> - font installer for Ghostscript" - -.IX Header "NAME" - -.IX Header "SYNOPSIS" - -.IX Header "DESCRIPTION" - -.IX Header "FILES" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Header "SEE ALSO" - -.IX Item "\(bu" - -.IX Item "\(bu" - -.IX Item "\(bu" - diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/ttf2ufm b/application/third_party/dompdf/lib/ttf2ufm/src/ttf2ufm deleted file mode 100644 index 5b6b3173..00000000 Binary files a/application/third_party/dompdf/lib/ttf2ufm/src/ttf2ufm and /dev/null differ diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/version.h b/application/third_party/dompdf/lib/ttf2ufm/src/version.h deleted file mode 100644 index d13c4c46..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/version.h +++ /dev/null @@ -1,7 +0,0 @@ -/* - * see COPYRIGHT - */ - - -/* version number */ -#define TTF2PT1_VERSION "3.4.4" diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/winbuild.bat b/application/third_party/dompdf/lib/ttf2ufm/src/winbuild.bat deleted file mode 100644 index 59a157ca..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/winbuild.bat +++ /dev/null @@ -1,11 +0,0 @@ -rem file to build ttf2pt1 with Visual C++ - -cl -DWINDOWS -c bdf.c -cl -DWINDOWS -c ttf2pt1.c -cl -DWINDOWS -c pt1.c -cl -DWINDOWS -c ttf.c -cl -DWINDOWS -c t1asm.c -cl -DWINDOWS -c bitmap.c -cl -o ttf2ufm ttf2pt1.obj pt1.obj t1asm.obj ttf.obj bdf.obj bitmap.obj -cl -o t1asm -DWINDOWS -DSTANDALONE t1asm.c - diff --git a/application/third_party/dompdf/lib/ttf2ufm/src/windows.h b/application/third_party/dompdf/lib/ttf2ufm/src/windows.h deleted file mode 100644 index a90ecf7e..00000000 --- a/application/third_party/dompdf/lib/ttf2ufm/src/windows.h +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Implementation of things missing in Windows - */ - -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -#undef ntohs -#undef ntohl -#undef htonl - -#ifdef WINDOWS_FUNCTIONS -/* byte order */ - -static unsigned short StoM(unsigned short inv) { - union iconv { - unsigned short ui; - unsigned char uc[2]; - } *inp, outv; - - inp = (union iconv *)&inv; - - outv.uc[0] = inp->uc[1]; - outv.uc[1] = inp->uc[0]; - - return (outv.ui); -} - -static unsigned int ItoM(unsigned int inv) { - union iconv { - unsigned int ui; - unsigned char uc[4]; - } *inp, outv; - - inp = (union iconv *)&inv; - - outv.uc[0] = inp->uc[3]; - outv.uc[1] = inp->uc[2]; - outv.uc[2] = inp->uc[1]; - outv.uc[3] = inp->uc[0]; - - return (outv.ui); -} - -unsigned short ntohs(unsigned short inv) { return StoM(inv); } -unsigned long ntohl(unsigned long inv) { return ItoM(inv); } -unsigned long htonl(unsigned long inv) { return ItoM(inv); } - -char *optarg; -int optind=1; - -char getopt(int argc, char **argv, char *args) { - int n,nlen=strlen(args),nLen=0; - char nCmd; - - if (argv[optind] && *argv[optind]=='-') { - nCmd=*((argv[optind]+1)); - - for (n=0;n<nlen;n++) { - if (args[n] == ':') continue; - if (args[n] == nCmd) { - if (args[n+1]==':') { - char retVal; - retVal=*(argv[optind]+1); - optarg=argv[optind+1]; - if (!optarg) optarg=""; - optind+=2; - return retVal; - } else { - char retVal; - retVal=*(argv[optind]+1); - optarg=NULL; - optind+=1; - return retVal; - } - } - } - } - return -1; -} - -#else - -unsigned short ntohs(unsigned short inv); -unsigned long ntohl(unsigned long inv); -unsigned long htonl(unsigned long inv); - -extern char *optarg; -extern int optind; - -char getopt(int argc, char **argv, char *args); -#endif diff --git a/application/third_party/dompdf/load_font.php b/application/third_party/dompdf/load_font.php deleted file mode 100644 index a145f2fe..00000000 --- a/application/third_party/dompdf/load_font.php +++ /dev/null @@ -1,227 +0,0 @@ -#!/usr/bin/php -<?php -/** - * DOMPDF - PHP5 HTML to PDF renderer - * - * File: $RCSfile: load_font.php,v $ - * Created on: 2004-06-23 - * - * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library in the file LICENSE.LGPL; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - * Alternatively, you may distribute this software under the terms of the - * PHP License, version 3.0 or later. A copy of this license should have - * been distributed with this file in the file LICENSE.PHP . If this is not - * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. - * - * The latest version of DOMPDF might be available at: - * http://www.dompdf.com/ - * - * @link http://www.dompdf.com/ - * @copyright 2004 Benj Carson - * @author Benj Carson <benjcarson@digitaljunkies.ca> - * @package dompdf - - */ - -require_once("dompdf_config.inc.php"); - -/** - * @access private - */ -define("_TTF2AFM", escapeshellarg(TTF2AFM) . " -a -GAef -OW "); - -if ( !file_exists(TTF2AFM) ) { - die("Unable to locate the ttf2afm / ttf2pt1 executable (checked " . TTF2AFM . ").\n"); -} - - -/** - * Display command line usage - * - */ -function usage() { - - echo <<<EOD - -Usage: {$_SERVER["argv"][0]} font_family [n_file [b_file] [i_file] [bi_file]] - -font_family: the name of the font, e.g. Verdana, 'Times New Roman', - monospace, sans-serif. If it equals to "system_fonts", - all the system fonts will be installed. - -n_file: the .pfb or .ttf file for the normal, non-bold, non-italic - face of the font. - -{b|i|bi}_file: the files for each of the respective (bold, italic, - bold-italic) faces. - -If the optional b|i|bi files are not specified, load_font.php will search -the directory containing normal font file (n_file) for additional files that -it thinks might be the correct ones (e.g. that end in _Bold or b or B). If -it finds the files they will also be processed. All files will be -automatically copied to the DOMPDF font directory, and afm files will be -generated using ttf2afm. - -Examples: - -./load_font.php silkscreen /usr/share/fonts/truetype/slkscr.ttf -./load_font.php 'Times New Roman' /mnt/c_drive/WINDOWS/Fonts/times.ttf - -EOD; - -} - -if ( $_SERVER["argc"] < 3 && $_SERVER["argv"][1] != "system_fonts" ) { - usage(); - die(); -} - -/** - * Installs a new font family - * - * This function maps a font-family name to a font. It tries to locate the - * bold, italic, and bold italic versions of the font as well. Once the - * files are located, ttf versions of the font are copied to the fonts - * directory. Changes to the font lookup table are saved to the cache. - * - * @param string $fontname the font-family name - * @param string $normal the filename of the normal face font subtype - * @param string $bold the filename of the bold face font subtype - * @param string $italic the filename of the italic face font subtype - * @param string $bold_italic the filename of the bold italic face font subtype - */ -function install_font_family($fontname, $normal, $bold = null, $italic = null, $bold_italic = null) { - - // Check if the base filename is readable - if ( !is_readable($normal) ) - throw new DOMPDF_Exception("Unable to read '$normal'."); - - $dir = dirname($normal); - $basename = basename($normal); - $last_dot = strrpos($basename, '.'); - if ($last_dot !== false) { - $file = substr($basename, 0, $last_dot); - $ext = strtolower(substr($basename, $last_dot)); - } else { - $file = $basename; - $ext = ''; - } - - // Try $file_Bold.$ext etc. - $path = "$dir/$file"; - - $patterns = array( - "bold" => array("_Bold", "b", "B", "bd", "BD"), - "italic" => array("_Italic", "i", "I"), - "bold_italic" => array("_Bold_Italic", "bi", "BI", "ib", "IB"), - ); - - foreach ($patterns as $type => $_patterns) { - if ( !isset($$type) || !is_readable($$type) ) { - foreach($_patterns as $_pattern) { - if ( is_readable("$path$_pattern$ext") ) { - $$type = "$path$_pattern$ext"; - break; - } - } - if ( is_null($$type) ) - echo ("Unable to find $type face file.\n"); - } - } - - $fonts = compact("normal", "bold", "italic", "bold_italic"); - $entry = array(); - - if ( $ext === ".pfb" || $ext === ".ttf" || $ext === ".otf" ) { - - // Copy the files to the font directory. - foreach ($fonts as $var => $src) { - if ( is_null($src) ) { - $entry[$var] = DOMPDF_FONT_DIR . basename($normal); - continue; - } - - // Verify that the fonts exist and are readable - if ( !is_readable($src) ) - throw new DOMPDF_Exception("Requested font '$pathname' is not readable"); - - $dest = DOMPDF_FONT_DIR . basename($src); - if ( !is_writeable(dirname($dest)) ) - throw new DOMPDF_Exception("Unable to write to destination '$dest'."); - - echo "Copying $src to $dest...\n"; - - if ( !copy($src, $dest) ) - throw new DOMPDF_Exception("Unable to copy '$src' to '" . DOMPDF_FONT_DIR . "$dest'."); - - $entry[$var] = $dest; - } - - } else - throw new DOMPDF_Exception("Unable to process fonts of type '$ext'."); - - - // If the extension is a ttf, try and convert the fonts to afm too - if ( $ext === ".ttf" || $ext === ".otf" ) { - foreach ($fonts as $var => $font) { - if ( is_null($font) ) { - $entry[$var] = DOMPDF_FONT_DIR . mb_substr(basename($normal), 0, -4); - continue; - } - - $dest = DOMPDF_FONT_DIR . mb_substr(basename($font), 0 , -4); - $stdout = ( ( strpos(PHP_OS, "WIN") === false ) ? " >/dev/null" : " 2>&1" ); - $command = _TTF2AFM . " " . escapeshellarg($font) . " " . escapeshellarg($dest) . $stdout; - echo "Generating .afm for $font...\n"; - //echo $command . "\n"; - exec( $command, $output, $ret ); - - $entry[$var] = $dest; - } - } - - // FIXME: how to generate afms from pfb? - - // Store the fonts in the lookup table - Font_Metrics::set_font_family($fontname, $entry); - - // Save the changes - Font_Metrics::save_font_families(); -} - -// If installing system fonts (may take a long time) -if ( $_SERVER["argv"][1] === "system_fonts" ) { - $fonts = Font_Metrics::get_system_fonts(); - var_dump($fonts); - foreach ( $fonts as $family => $files ) { - echo " >> Installing '$family'... \n"; - - if ( !isset($files["normal"]) ) { - echo "No 'normal' style font file\n"; - } - else { - install_font_family( $family, @$files["normal"], @$files["bold"], @$files["italic"], @$files["bold_italic"]); - echo "Done !\n"; - } - - echo "\n"; - } -} -else { - call_user_func_array("install_font_family", array_slice($_SERVER["argv"], 1)); -} \ No newline at end of file diff --git a/application/third_party/dompdf/www/controller.php b/application/third_party/dompdf/www/controller.php deleted file mode 100644 index 289aca01..00000000 --- a/application/third_party/dompdf/www/controller.php +++ /dev/null @@ -1,15 +0,0 @@ -<?php - -$cmd = isset($_GET["cmd"]) ? $_GET["cmd"] : null; - -include "../dompdf_config.inc.php"; - -switch ($cmd) { - case "clear-font-cache": - $files = glob(DOMPDF_FONT_DIR."*.{ufm,afm}.php", GLOB_BRACE); - foreach($files as $file) { - unlink($file); - } - echo count($files)." cache files removed. Refresh page.<br />"; - break; -} \ No newline at end of file diff --git a/application/third_party/dompdf/www/cssSandpaper/css/reset.css b/application/third_party/dompdf/www/cssSandpaper/css/reset.css deleted file mode 100644 index 93463b4e..00000000 --- a/application/third_party/dompdf/www/cssSandpaper/css/reset.css +++ /dev/null @@ -1,71 +0,0 @@ -/* - * CSS Reset based on code from - * http://meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/ - * - * Earlier copy stated: - * "If you want to use my reset styles, then feel free! It's all - * explicitly in the public domain (I have to formally say that - * or else people ask me about licensing)." - */ - -html, body, div, span, applet, object, iframe, -h1, h2, h3, h4, h5, h6, p, blockquote, pre, -a, abbr, acronym, address, big, cite, code, -del, dfn, em, font, img, ins, kbd, q, s, samp, -small, strike, strong, sub, sup, tt, var, -dl, dt, dd, ol, ul, li, -fieldset, form, label, legend, -table, caption, tbody, tfoot, thead, tr, th, td { - margin: 0; - padding: 0; - border: 0; - outline: 0; - font-weight: inherit; - font-style: inherit; - font-size: 100%; - font-family: inherit; - vertical-align: baseline; -} -/* remember to define focus styles! */ -:focus { - outline: 0; -} -body { - line-height: 1; - color: black; - background: white; -} -ol, ul { - list-style: none; -} -/* tables still need 'cellspacing="0"' in the markup */ -table { - border-collapse: separate; - border-spacing: 0; -} -caption, th, td { - text-align: left; - font-weight: normal; -} -blockquote:before, blockquote:after, -q:before, q:after { - content: ""; -} -blockquote, q { - quotes: "" ""; -} - -/* - * Added 2009/02/04 to fix IE7's issue with interpolated - * scaling not turned on by default. Based on an idea from - * http://acidmartin.wordpress.com/2009/01/05/better-image-scaling-and-resampling-in-internet-explorer/ - */ -img -{ - -ms-interpolation-mode: bicubic; -} -/*! - * Bootstrap v3.3.4 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date],input[type=time],input[type=datetime-local],input[type=month]{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px \9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.form-group-sm .form-control{height:30px;line-height:30px}select[multiple].form-group-sm .form-control,textarea.form-group-sm .form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:5px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.form-group-lg .form-control{height:46px;line-height:46px}select[multiple].form-group-lg .form-control,textarea.form-group-lg .form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:10px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.33px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.active,.btn-default.focus,.btn-default:active,.btn-default:focus,.btn-default:hover,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.active,.btn-primary.focus,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.active,.btn-success.focus,.btn-success:active,.btn-success:focus,.btn-success:hover,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.active,.btn-info.focus,.btn-info:active,.btn-info:focus,.btn-info:hover,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.active,.btn-warning.focus,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.active,.btn-danger.focus,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px)and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding:48px 0}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:400;line-height:1.4;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:400;line-height:1.42857143;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;perspective:1000}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px)and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px)and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px)and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px)and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px)and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px)and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px)and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px)and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px)and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px)and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} \ No newline at end of file diff --git a/application/third_party/dompdf/www/cssSandpaper/js/EventHelpers.js b/application/third_party/dompdf/www/cssSandpaper/js/EventHelpers.js deleted file mode 100644 index 52fe7e67..00000000 --- a/application/third_party/dompdf/www/cssSandpaper/js/EventHelpers.js +++ /dev/null @@ -1,441 +0,0 @@ -/******************************************************************************* - * This notice must be untouched at all times. - * - * This javascript library contains helper routines to assist with event - * handling consinstently among browsers - * - * EventHelpers.js v.1.3 available at http://www.useragentman.com/ - * - * released under the MIT License: - * http://www.opensource.org/licenses/mit-license.php - * - *******************************************************************************/ -var EventHelpers = new function(){ - var me = this; - - var safariTimer; - var isSafari = /WebKit/i.test(navigator.userAgent); - var globalEvent; - - me.init = function () { - if (me.hasPageLoadHappened(arguments)) { - return; - } - - if (document.createEventObject){ - // dispatch for IE - globalEvent = document.createEventObject(); - } else if (document.createEvent) { - globalEvent = document.createEvent("HTMLEvents"); - } - - me.docIsLoaded = true; - } - - /** - * Adds an event to the document. Examples of usage: - * me.addEvent(window, "load", myFunction); - * me.addEvent(docunent, "keydown", keyPressedFunc); - * me.addEvent(document, "keyup", keyPressFunc); - * - * @author Scott Andrew - http://www.scottandrew.com/weblog/articles/cbs-events - * @author John Resig - http://ejohn.org/projects/flexible-javascript-events/ - * @param {Object} obj - a javascript object. - * @param {String} evType - an event to attach to the object. - * @param {Function} fn - the function that is attached to the event. - */ - me.addEvent = function(obj, evType, fn){ - - if (obj.addEventListener) { - obj.addEventListener(evType, fn, false); - } else if (obj.attachEvent) { - obj['e' + evType + fn] = fn; - obj[evType + fn] = function(){ - obj["e" + evType + fn](self.event); - } - obj.attachEvent("on" + evType, obj[evType + fn]); - } - } - - - /** - * Removes an event that is attached to a javascript object. - * - * @author Scott Andrew - http://www.scottandrew.com/weblog/articles/cbs-events - * @author John Resig - http://ejohn.org/projects/flexible-javascript-events/ * @param {Object} obj - a javascript object. - * @param {String} evType - an event attached to the object. - * @param {Function} fn - the function that is called when the event fires. - */ - me.removeEvent = function(obj, evType, fn){ - - if (obj.removeEventListener) { - obj.removeEventListener(evType, fn, false); - } else if (obj.detachEvent) { - try { - obj.detachEvent("on" + evType, obj[evType + fn]); - obj[evType + fn] = null; - obj["e" + evType + fn] = null; - } - catch (ex) { - // do nothing; - } - } - } - - function removeEventAttribute(obj, beginName){ - var attributes = obj.attributes; - for (var i = 0; i < attributes.length; i++) { - var attribute = attributes[i] - var name = attribute.name - if (name.indexOf(beginName) == 0) { - //obj.removeAttributeNode(attribute); - attribute.specified = false; - } - } - } - - me.addScrollWheelEvent = function(obj, fn){ - if (obj.addEventListener) { - /** DOMMouseScroll is for mozilla. */ - obj.addEventListener('DOMMouseScroll', fn, true); - } - - /** IE/Opera. */ - if (obj.attachEvent) { - obj.attachEvent("onmousewheel", fn); - } - - } - - me.removeScrollWheelEvent = function(obj, fn){ - if (obj.removeEventListener) { - /** DOMMouseScroll is for mozilla. */ - obj.removeEventListener('DOMMouseScroll', fn, true); - } - - /** IE/Opera. */ - if (obj.detachEvent) { - obj.detatchEvent("onmousewheel", fn); - } - - } - - /** - * Given a mouse event, get the mouse pointer's x-coordinate. - * - * @param {Object} e - a DOM Event object. - * @return {int} - the mouse pointer's x-coordinate. - */ - me.getMouseX = function(e){ - if (!e) { - return; - } - // NS4 - if (e.pageX != null) { - return e.pageX; - // IE - } else if (window.event != null && window.event.clientX != null && - document.body != null && - document.body.scrollLeft != null) - return window.event.clientX + document.body.scrollLeft; - // W3C - else if (e.clientX != null) - return e.clientX; - else - return null; - } - - /** - * Given a mouse event, get the mouse pointer's y-coordinate. - * @param {Object} e - a DOM Event Object. - * @return {int} - the mouse pointer's y-coordinate. - */ - me.getMouseY = function(e){ - // NS4 - if (e.pageY != null) - return e.pageY; - // IE - else if (window.event != null && window.event.clientY != null && - document.body != null && - document.body.scrollTop != null) - return window.event.clientY + document.body.scrollTop; - // W3C - else if (e.clientY != null) { - return e.clientY; - } - } - /** - * Given a mouse scroll wheel event, get the "delta" of how fast it moved. - * @param {Object} e - a DOM Event Object. - * @return {int} - the mouse wheel's delta. It is greater than 0, the - * scroll wheel was spun upwards; if less than 0, downwards. - */ - me.getScrollWheelDelta = function(e){ - var delta = 0; - if (!e) /* For IE. */ - e = window.event; - if (e.wheelDelta) { /* IE/Opera. */ - delta = e.wheelDelta / 120; - /** In Opera 9, delta differs in sign as compared to IE. - */ - if (window.opera) { - delta = -delta; - } - } else if (e.detail) { /** Mozilla case. */ - /** In Mozilla, sign of delta is different than in IE. - * Also, delta is multiple of 3. - */ - delta = -e.detail / 3; - } - return delta - } - - /** - * Sets a mouse move event of a document. - * - * @deprecated - use only if compatibility with IE4 and NS4 is necessary. Otherwise, just - * use EventHelpers.addEvent(window, 'mousemove', func) instead. Cannot be used to add - * multiple mouse move event handlers. - * - * @param {Function} func - the function that you want a mouse event to fire. - */ - me.addMouseEvent = function(func){ - - if (document.captureEvents) { - document.captureEvents(Event.MOUSEMOVE); - } - - document.onmousemove = func; - window.onmousemove = func; - window.onmouseover = func; - - } - - - - /** - * Find the HTML object that fired an Event. - * - * @param {Object} e - an HTML object - * @return {Object} - the HTML object that fired the event. - */ - me.getEventTarget = function(e){ - // first, IE method for mouse events(also supported by Safari and Opera) - if (e.toElement) { - return e.toElement; - // W3C - } else if (e.currentTarget) { - return e.currentTarget; - - // MS way - } else if (e.srcElement) { - return e.srcElement; - } else { - return null; - } - } - - - - - /** - * Given an event fired by the keyboard, find the key associated with that event. - * - * @param {Object} e - an event object. - * @return {String} - the ASCII character code representing the key associated with the event. - */ - me.getKey = function(e){ - if (e.keyCode) { - return e.keyCode; - } else if (e.event && e.event.keyCode) { - return window.event.keyCode; - } else if (e.which) { - return e.which; - } - } - - - /** - * Will execute a function when the page's DOM has fully loaded (and before all attached images, iframes, - * etc., are). - * - * Usage: - * - * EventHelpers.addPageLoadEvent('init'); - * - * where the function init() has this code at the beginning: - * - * function init() { - * - * if (EventHelpers.hasPageLoadHappened(arguments)) return; - * - * // rest of code - * .... - * } - * - * @author This code is based off of code from http://dean.edwards.name/weblog/2005/09/busted/ by Dean - * Edwards, with a modification by me. - * - * @param {String} funcName - a string containing the function to be called. - */ - me.addPageLoadEvent = function(funcName){ - - var func = eval(funcName); - - // for Internet Explorer (using conditional comments) - /*@cc_on @*/ - /*@if (@_win32) - pageLoadEventArray.push(func); - return; - /*@end @*/ - if (isSafari) { // sniff - pageLoadEventArray.push(func); - - if (!safariTimer) { - - safariTimer = setInterval(function(){ - if (/loaded|complete/.test(document.readyState)) { - clearInterval(safariTimer); - - /* - * call the onload handler - * func(); - */ - me.runPageLoadEvents(); - return; - } - set = true; - }, 10); - } - /* for Mozilla */ - } else if (document.addEventListener) { - var x = document.addEventListener("DOMContentLoaded", func, null); - - /* Others */ - } else { - me.addEvent(window, 'load', func); - } - } - - var pageLoadEventArray = new Array(); - - me.runPageLoadEvents = function(e){ - if (isSafari || e.srcElement.readyState == "complete") { - - for (var i = 0; i < pageLoadEventArray.length; i++) { - pageLoadEventArray[i](); - } - } - } - /** - * Determines if either addPageLoadEvent('funcName') or addEvent(window, 'load', funcName) - * has been executed. - * - * @see addPageLoadEvent - * @param {Function} funcArgs - the arguments of the containing. function - */ - me.hasPageLoadHappened = function(funcArgs){ - // If the function already been called, return true; - if (funcArgs.callee.done) - return true; - - // flag this function so we don't do the same thing twice - funcArgs.callee.done = true; - } - - - - /** - * Used in an event method/function to indicate that the default behaviour of the event - * should *not* happen. - * - * @param {Object} e - an event object. - * @return {Boolean} - always false - */ - me.preventDefault = function(e){ - - if (e.preventDefault) { - e.preventDefault(); - } - - try { - e.returnValue = false; - } - catch (ex) { - // do nothing - } - - } - - me.cancelBubble = function(e){ - if (e.stopPropagation) { - e.stopPropagation(); - } - - try { - e.cancelBubble = true; - } - catch (ex) { - // do nothing - } - } - - /* - * Fires an event manually. - * @author Scott Andrew - http://www.scottandrew.com/weblog/articles/cbs-events - * @author John Resig - http://ejohn.org/projects/flexible-javascript-events/ * @param {Object} obj - a javascript object. - * @param {String} evType - an event attached to the object. - * @param {Function} fn - the function that is called when the event fires. - * - */ - me.fireEvent = function (element,event, options){ - - if(!element) { - return; - } - - if (document.createEventObject){ - /* - var stack = DebugHelpers.getStackTrace(); - var s = stack.toString(); - jslog.debug(s); - if (s.indexOf('fireEvent') >= 0) { - return; - } - */ - return element.fireEvent('on' + event, globalEvent) - jslog.debug('ss'); - - } - else{ - // dispatch for firefox + others - globalEvent.initEvent(event, true, true); // event type,bubbling,cancelable - return !element.dispatchEvent(globalEvent); - } -} - - /* EventHelpers.init () */ - function init(){ - // Conditional comment alert: Do not remove comments. Leave intact. - // The detection if the page is secure or not is important. If - // this logic is removed, Internet Explorer will give security - // alerts. - /*@cc_on @*/ - /*@if (@_win32) - - document.write('<script id="__ie_onload" defer src="' + - - ((location.protocol == 'https:') ? '//0' : 'javascript:void(0)') + '"><\/script>'); - - var script = document.getElementById("__ie_onload"); - - me.addEvent(script, 'readystatechange', me.runPageLoadEvents); - - /*@end @*/ - - } - - init(); -} - -EventHelpers.addPageLoadEvent('EventHelpers.init'); \ No newline at end of file diff --git a/application/third_party/dompdf/www/cssSandpaper/js/cssQuery-p.js b/application/third_party/dompdf/www/cssSandpaper/js/cssQuery-p.js deleted file mode 100644 index 00e43a42..00000000 --- a/application/third_party/dompdf/www/cssSandpaper/js/cssQuery-p.js +++ /dev/null @@ -1,6 +0,0 @@ -/* - cssQuery, version 2.0.2 (2005-08-19) - Copyright: 2004-2005, Dean Edwards (http://dean.edwards.name/) - License: http://creativecommons.org/licenses/LGPL/2.1/ -*/ -eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('7 x=6(){7 1D="2.0.2";7 C=/\\s*,\\s*/;7 x=6(s,A){33{7 m=[];7 u=1z.32.2c&&!A;7 b=(A)?(A.31==22)?A:[A]:[1g];7 1E=18(s).1l(C),i;9(i=0;i<1E.y;i++){s=1y(1E[i]);8(U&&s.Z(0,3).2b("")==" *#"){s=s.Z(2);A=24([],b,s[1])}1A A=b;7 j=0,t,f,a,c="";H(j<s.y){t=s[j++];f=s[j++];c+=t+f;a="";8(s[j]=="("){H(s[j++]!=")")a+=s[j];a=a.Z(0,-1);c+="("+a+")"}A=(u&&V[c])?V[c]:21(A,t,f,a);8(u)V[c]=A}m=m.30(A)}2a x.2d;5 m}2Z(e){x.2d=e;5[]}};x.1Z=6(){5"6 x() {\\n [1D "+1D+"]\\n}"};7 V={};x.2c=L;x.2Y=6(s){8(s){s=1y(s).2b("");2a V[s]}1A V={}};7 29={};7 19=L;x.15=6(n,s){8(19)1i("s="+1U(s));29[n]=12 s()};x.2X=6(c){5 c?1i(c):o};7 D={};7 h={};7 q={P:/\\[([\\w-]+(\\|[\\w-]+)?)\\s*(\\W?=)?\\s*([^\\]]*)\\]/};7 T=[];D[" "]=6(r,f,t,n){7 e,i,j;9(i=0;i<f.y;i++){7 s=X(f[i],t,n);9(j=0;(e=s[j]);j++){8(M(e)&&14(e,n))r.z(e)}}};D["#"]=6(r,f,i){7 e,j;9(j=0;(e=f[j]);j++)8(e.B==i)r.z(e)};D["."]=6(r,f,c){c=12 1t("(^|\\\\s)"+c+"(\\\\s|$)");7 e,i;9(i=0;(e=f[i]);i++)8(c.l(e.1V))r.z(e)};D[":"]=6(r,f,p,a){7 t=h[p],e,i;8(t)9(i=0;(e=f[i]);i++)8(t(e,a))r.z(e)};h["2W"]=6(e){7 d=Q(e);8(d.1C)9(7 i=0;i<d.1C.y;i++){8(d.1C[i]==e)5 K}};h["2V"]=6(e){};7 M=6(e){5(e&&e.1c==1&&e.1f!="!")?e:23};7 16=6(e){H(e&&(e=e.2U)&&!M(e))28;5 e};7 G=6(e){H(e&&(e=e.2T)&&!M(e))28;5 e};7 1r=6(e){5 M(e.27)||G(e.27)};7 1P=6(e){5 M(e.26)||16(e.26)};7 1o=6(e){7 c=[];e=1r(e);H(e){c.z(e);e=G(e)}5 c};7 U=K;7 1h=6(e){7 d=Q(e);5(2S d.25=="2R")?/\\.1J$/i.l(d.2Q):2P(d.25=="2O 2N")};7 Q=6(e){5 e.2M||e.1g};7 X=6(e,t){5(t=="*"&&e.1B)?e.1B:e.X(t)};7 17=6(e,t,n){8(t=="*")5 M(e);8(!14(e,n))5 L;8(!1h(e))t=t.2L();5 e.1f==t};7 14=6(e,n){5!n||(n=="*")||(e.2K==n)};7 1e=6(e){5 e.1G};6 24(r,f,B){7 m,i,j;9(i=0;i<f.y;i++){8(m=f[i].1B.2J(B)){8(m.B==B)r.z(m);1A 8(m.y!=23){9(j=0;j<m.y;j++){8(m[j].B==B)r.z(m[j])}}}}5 r};8(![].z)22.2I.z=6(){9(7 i=0;i<1z.y;i++){o[o.y]=1z[i]}5 o.y};7 N=/\\|/;6 21(A,t,f,a){8(N.l(f)){f=f.1l(N);a=f[0];f=f[1]}7 r=[];8(D[t]){D[t](r,A,f,a)}5 r};7 S=/^[^\\s>+~]/;7 20=/[\\s#.:>+~()@]|[^\\s#.:>+~()@]+/g;6 1y(s){8(S.l(s))s=" "+s;5 s.P(20)||[]};7 W=/\\s*([\\s>+~(),]|^|$)\\s*/g;7 I=/([\\s>+~,]|[^(]\\+|^)([#.:@])/g;7 18=6(s){5 s.O(W,"$1").O(I,"$1*$2")};7 1u={1Z:6(){5"\'"},P:/^(\'[^\']*\')|("[^"]*")$/,l:6(s){5 o.P.l(s)},1S:6(s){5 o.l(s)?s:o+s+o},1Y:6(s){5 o.l(s)?s.Z(1,-1):s}};7 1s=6(t){5 1u.1Y(t)};7 E=/([\\/()[\\]?{}|*+-])/g;6 R(s){5 s.O(E,"\\\\$1")};x.15("1j-2H",6(){D[">"]=6(r,f,t,n){7 e,i,j;9(i=0;i<f.y;i++){7 s=1o(f[i]);9(j=0;(e=s[j]);j++)8(17(e,t,n))r.z(e)}};D["+"]=6(r,f,t,n){9(7 i=0;i<f.y;i++){7 e=G(f[i]);8(e&&17(e,t,n))r.z(e)}};D["@"]=6(r,f,a){7 t=T[a].l;7 e,i;9(i=0;(e=f[i]);i++)8(t(e))r.z(e)};h["2G-10"]=6(e){5!16(e)};h["1x"]=6(e,c){c=12 1t("^"+c,"i");H(e&&!e.13("1x"))e=e.1n;5 e&&c.l(e.13("1x"))};q.1X=/\\\\:/g;q.1w="@";q.J={};q.O=6(m,a,n,c,v){7 k=o.1w+m;8(!T[k]){a=o.1W(a,c||"",v||"");T[k]=a;T.z(a)}5 T[k].B};q.1Q=6(s){s=s.O(o.1X,"|");7 m;H(m=s.P(o.P)){7 r=o.O(m[0],m[1],m[2],m[3],m[4]);s=s.O(o.P,r)}5 s};q.1W=6(p,t,v){7 a={};a.B=o.1w+T.y;a.2F=p;t=o.J[t];t=t?t(o.13(p),1s(v)):L;a.l=12 2E("e","5 "+t);5 a};q.13=6(n){1d(n.2D()){F"B":5"e.B";F"2C":5"e.1V";F"9":5"e.2B";F"1T":8(U){5"1U((e.2A.P(/1T=\\\\1v?([^\\\\s\\\\1v]*)\\\\1v?/)||[])[1]||\'\')"}}5"e.13(\'"+n.O(N,":")+"\')"};q.J[""]=6(a){5 a};q.J["="]=6(a,v){5 a+"=="+1u.1S(v)};q.J["~="]=6(a,v){5"/(^| )"+R(v)+"( |$)/.l("+a+")"};q.J["|="]=6(a,v){5"/^"+R(v)+"(-|$)/.l("+a+")"};7 1R=18;18=6(s){5 1R(q.1Q(s))}});x.15("1j-2z",6(){D["~"]=6(r,f,t,n){7 e,i;9(i=0;(e=f[i]);i++){H(e=G(e)){8(17(e,t,n))r.z(e)}}};h["2y"]=6(e,t){t=12 1t(R(1s(t)));5 t.l(1e(e))};h["2x"]=6(e){5 e==Q(e).1H};h["2w"]=6(e){7 n,i;9(i=0;(n=e.1F[i]);i++){8(M(n)||n.1c==3)5 L}5 K};h["1N-10"]=6(e){5!G(e)};h["2v-10"]=6(e){e=e.1n;5 1r(e)==1P(e)};h["2u"]=6(e,s){7 n=x(s,Q(e));9(7 i=0;i<n.y;i++){8(n[i]==e)5 L}5 K};h["1O-10"]=6(e,a){5 1p(e,a,16)};h["1O-1N-10"]=6(e,a){5 1p(e,a,G)};h["2t"]=6(e){5 e.B==2s.2r.Z(1)};h["1M"]=6(e){5 e.1M};h["2q"]=6(e){5 e.1q===L};h["1q"]=6(e){5 e.1q};h["1L"]=6(e){5 e.1L};q.J["^="]=6(a,v){5"/^"+R(v)+"/.l("+a+")"};q.J["$="]=6(a,v){5"/"+R(v)+"$/.l("+a+")"};q.J["*="]=6(a,v){5"/"+R(v)+"/.l("+a+")"};6 1p(e,a,t){1d(a){F"n":5 K;F"2p":a="2n";1a;F"2o":a="2n+1"}7 1m=1o(e.1n);6 1k(i){7 i=(t==G)?1m.y-i:i-1;5 1m[i]==e};8(!Y(a))5 1k(a);a=a.1l("n");7 m=1K(a[0]);7 s=1K(a[1]);8((Y(m)||m==1)&&s==0)5 K;8(m==0&&!Y(s))5 1k(s);8(Y(s))s=0;7 c=1;H(e=t(e))c++;8(Y(m)||m==1)5(t==G)?(c<=s):(s>=c);5(c%m)==s}});x.15("1j-2m",6(){U=1i("L;/*@2l@8(@\\2k)U=K@2j@*/");8(!U){X=6(e,t,n){5 n?e.2i("*",t):e.X(t)};14=6(e,n){5!n||(n=="*")||(e.2h==n)};1h=1g.1I?6(e){5/1J/i.l(Q(e).1I)}:6(e){5 Q(e).1H.1f!="2g"};1e=6(e){5 e.2f||e.1G||1b(e)};6 1b(e){7 t="",n,i;9(i=0;(n=e.1F[i]);i++){1d(n.1c){F 11:F 1:t+=1b(n);1a;F 3:t+=n.2e;1a}}5 t}}});19=K;5 x}();',62,190,'|||||return|function|var|if|for||||||||pseudoClasses||||test|||this||AttributeSelector|||||||cssQuery|length|push|fr|id||selectors||case|nextElementSibling|while||tests|true|false|thisElement||replace|match|getDocument|regEscape||attributeSelectors|isMSIE|cache||getElementsByTagName|isNaN|slice|child||new|getAttribute|compareNamespace|addModule|previousElementSibling|compareTagName|parseSelector|loaded|break|_0|nodeType|switch|getTextContent|tagName|document|isXML|eval|css|_1|split|ch|parentNode|childElements|nthChild|disabled|firstElementChild|getText|RegExp|Quote|x22|PREFIX|lang|_2|arguments|else|all|links|version|se|childNodes|innerText|documentElement|contentType|xml|parseInt|indeterminate|checked|last|nth|lastElementChild|parse|_3|add|href|String|className|create|NS_IE|remove|toString|ST|select|Array|null|_4|mimeType|lastChild|firstChild|continue|modules|delete|join|caching|error|nodeValue|textContent|HTML|prefix|getElementsByTagNameNS|end|x5fwin32|cc_on|standard||odd|even|enabled|hash|location|target|not|only|empty|root|contains|level3|outerHTML|htmlFor|class|toLowerCase|Function|name|first|level2|prototype|item|scopeName|toUpperCase|ownerDocument|Document|XML|Boolean|URL|unknown|typeof|nextSibling|previousSibling|visited|link|valueOf|clearCache|catch|concat|constructor|callee|try'.split('|'),0,{})) diff --git a/application/third_party/dompdf/www/cssSandpaper/js/cssSandpaper.js b/application/third_party/dompdf/www/cssSandpaper/js/cssSandpaper.js deleted file mode 100644 index 7f465e0b..00000000 --- a/application/third_party/dompdf/www/cssSandpaper/js/cssSandpaper.js +++ /dev/null @@ -1,2395 +0,0 @@ - -/******************************************************************************* - * This notice must be untouched at all times. - * - * CSS Sandpaper: smooths out differences between CSS implementations. - * - * This javascript library contains routines to implement the CSS transform, - * box-shadow and gradient in IE. It also provides a common syntax for other - * browsers that support vendor-specific methods. - * - * Written by: Zoltan Hawryluk. Version 1.0 beta 1 completed on March 8, 2010. - * - * Some routines are based on code from CSS Gradients via Canvas v1.2 - * by Weston Ruter <http://weston.ruter.net/projects/css-gradients-via-canvas/> - * - * Requires sylvester.js by James Coglan http://sylvester.jcoglan.com/ - * - * cssSandpaper.js v.1.0 beta 1 available at http://www.useragentman.com/ - * - * released under the MIT License: - * http://www.opensource.org/licenses/mit-license.php - * - ******************************************************************************/ -if (!document.querySelectorAll) { - document.querySelectorAll = cssQuery; -} - -var cssSandpaper = new function(){ - var me = this; - - var styleNodes, styleSheets = new Array(); - - var ruleSetRe = /[^\{]*{[^\}]*}/g; - var ruleSplitRe = /[\{\}]/g; - - var reGradient = /gradient\([\s\S]*\)/g; - var reHSL = /hsl\([\s\S]*\)/g; - - // This regexp from the article - // http://james.padolsey.com/javascript/javascript-comment-removal-revisted/ - var reMultiLineComment = /\/\/.+?(?=\n|\r|$)|\/\*[\s\S]+?\*\//g; - - var reAtRule = /@[^\{\};]*;|@[^\{\};]*\{[^\}]*\}/g; - - var reFunctionSpaces = /\(\s*/g - - - var ruleLists = new Array(); - var styleNode; - - var tempObj; - var body; - - - me.init = function(reinit){ - - if (EventHelpers.hasPageLoadHappened(arguments) && !reinit) { - return; - } - - body = document.body; - - tempObj = document.createElement('div'); - - getStyleSheets(); - - indexRules(); - - - fixTransforms(); - fixBoxShadow(); - fixLinearGradients(); - - fixBackgrounds(); - fixColors(); - fixOpacity(); - setClasses(); - //fixBorderRadius(); - - } - - me.setOpacity = function(obj, value){ - var property = CSS3Helpers.findProperty(document.body, 'opacity'); - - if (property == "filter") { - // IE must have layout, see - // http://jszen.blogspot.com/2005/04/ie6-opacity-filter-caveat.html - // for details. - obj.style.zoom = "100%"; - - var filter = CSS3Helpers.addFilter(obj, 'DXImageTransform.Microsoft.Alpha', StringHelpers.sprintf("opacity=%d", ((value) * 100))); - - filter.opacity = value * 100; - - - } else if (obj.style[property] != null) { - obj.style[property] = value; - } - } - - - function fixOpacity(){ - - var transformRules = getRuleList('opacity').values; - - for (var i in transformRules) { - var rule = transformRules[i]; - var nodes = document.querySelectorAll(rule.selector); - - for (var j = 0; j < nodes.length; j++) { - me.setOpacity(nodes[j], rule.value) - } - - } - - } - - - - me.setTransform = function(obj, transformString){ - var property = CSS3Helpers.findProperty(obj, 'transform'); - - if (property == "filter") { - var matrix = CSS3Helpers.getTransformationMatrix(transformString); - CSS3Helpers.setMatrixFilter(obj, matrix) - } else if (obj.style[property] != null) { - obj.style[property] = transformString; - } - } - - function fixTransforms(){ - - var transformRules = getRuleList('-sand-transform').values; - var property = CSS3Helpers.findProperty(document.body, 'transform'); - - - for (var i in transformRules) { - var rule = transformRules[i]; - var nodes = document.querySelectorAll(rule.selector); - - for (var j = 0; j < nodes.length; j++) { - me.setTransform(nodes[j], rule.value) - } - - } - - } - - me.setBoxShadow = function(obj, value){ - var property = CSS3Helpers.findProperty(obj, 'boxShadow'); - - var values = CSS3Helpers.getBoxShadowValues(value); - - if (property == "filter") { - var filter = CSS3Helpers.addFilter(obj, 'DXImageTransform.Microsoft.DropShadow', StringHelpers.sprintf("color=%s,offX=%d,offY=%d", values.color, values.offsetX, values.offsetY)); - filter.color = values.color; - filter.offX = values.offsetX; - filter.offY = values.offsetY; - - } else if (obj.style[property] != null) { - obj.style[property] = value; - } - } - - function fixBoxShadow(){ - - var transformRules = getRuleList('-sand-box-shadow').values; - - //var matrices = new Array(); - - - for (var i in transformRules) { - var rule = transformRules[i]; - - var nodes = document.querySelectorAll(rule.selector); - - - - for (var j = 0; j < nodes.length; j++) { - me.setBoxShadow(nodes[j], rule.value) - - } - - } - - } - - function setGradientFilter(node, values){ - - if (values.colorStops.length == 2 && - values.colorStops[0].stop == 0.0 && - values.colorStops[1].stop == 1.0) { - var startColor = new RGBColor(values.colorStops[0].color); - var endColor = new RGBColor(values.colorStops[1].color); - - startColor = startColor.toHex(); - endColor = endColor.toHex(); - - var filter = CSS3Helpers.addFilter(node, 'DXImageTransform.Microsoft.Gradient', StringHelpers.sprintf("GradientType = %s, StartColorStr = '%s', EndColorStr = '%s'", values.IEdir, startColor, endColor)); - - filter.GradientType = values.IEdir; - filter.StartColorStr = startColor; - filter.EndColorStr = endColor; - node.style.zoom = 1; - } - } - - me.setGradient = function(node, value){ - - var support = CSS3Helpers.reportGradientSupport(); - - var values = CSS3Helpers.getGradient(value); - - if (values == null) { - return; - } - - if (node.filters) { - setGradientFilter(node, values); - } else if (support == implementation.MOZILLA) { - - node.style.backgroundImage = StringHelpers.sprintf('-moz-gradient( %s, %s, from(%s), to(%s))', values.dirBegin, values.dirEnd, values.colorStops[0].color, values.colorStops[1].color); - } else if (support == implementation.WEBKIT) { - var tmp = StringHelpers.sprintf('-webkit-gradient(%s, %s, %s %s, %s %s)', values.type, values.dirBegin, values.r0 ? values.r0 + ", " : "", values.dirEnd, values.r1 ? values.r1 + ", " : "", listColorStops(values.colorStops)); - node.style.backgroundImage = tmp; - } else if (support == implementation.CANVAS_WORKAROUND) { - try { - CSS3Helpers.applyCanvasGradient(node, values); - } - catch (ex) { - // do nothing (for now). - } - } - } - - me.setRGBABackground = function(node, value){ - - var support = CSS3Helpers.reportColorSpaceSupport('RGBA', colorType.BACKGROUND); - - switch (support) { - case implementation.NATIVE: - node.style.value = value; - break; - case implementation.FILTER_WORKAROUND: - setGradientFilter(node, { - IEdir: 0, - colorStops: [{ - stop: 0.0, - color: value - }, { - stop: 1.0, - color: value - }] - }); - - break; - } - - } - - me.setHSLABackground = function(node, value) { - var support = CSS3Helpers.reportColorSpaceSupport('HSLA', colorType.BACKGROUND); - - switch (support) { - case implementation.NATIVE: - /* node.style.value = value; - break; */ - case implementation.FILTER_WORKAROUND: - var rgbColor = new RGBColor(value); - - if (rgbColor.a == 1) { - node.style.backgroundColor = rgbColor.toHex(); - } else { - var rgba = rgbColor.toRGBA(); - setGradientFilter(node, { - IEdir: 0, - colorStops: [{ - stop: 0.0, - color: rgba - }, { - stop: 1.0, - color: rgba - }] - }); - } - break; - } - } - - /** - * Convert a hyphenated string to camelized text. For example, the string "font-type" will be converted - * to "fontType". - * - * @param {Object} s - the string that needs to be camelized. - * @return {String} - the camelized text. - */ - me.camelize = function (s) { - var r=""; - - for (var i=0; i<s.length; i++) { - if (s.substring(i, i+1) == '-') { - i++; - r+= s.substring(i, i+1).toUpperCase(); - } else { - r+= s.substring(i, i+1); - } - } - - return r; - } - - me.setHSLColor = function (node, property, value) { - var support = CSS3Helpers.reportColorSpaceSupport('HSL', colorType.FOREGROUND); - - switch (support) { - case implementation.NATIVE: - /* node.style.value = value; - break; */ - case implementation.HEX_WORKAROUND: - - var hslColor = value.match(reHSL)[0]; - var hexColor = new RGBColor(hslColor).toHex() - var newPropertyValue = value.replace(reHSL, hexColor); - - - - node.style[me.camelize(property)] = newPropertyValue; - - break; - } - - } - - - function fixLinearGradients(){ - - var backgroundRules = getRuleList('background').values.concat(getRuleList('background-image').values); - - for (var i in backgroundRules) { - var rule = backgroundRules[i]; - var nodes = document.querySelectorAll(rule.selector); - for (var j = 0; j < nodes.length; j++) { - me.setGradient(nodes[j], rule.value) - } - } - } - - function fixBackgrounds(){ - - var support = CSS3Helpers.reportColorSpaceSupport('RGBA', colorType.BACKGROUND); - if (support == implementation.NATIVE) { - return; - } - - - var backgroundRules = getRuleList('background').values.concat(getRuleList('background-color').values); - - for (var i in backgroundRules) { - var rule = backgroundRules[i]; - var nodes = document.querySelectorAll(rule.selector); - for (var j = 0; j < nodes.length; j++) { - if (rule.value.indexOf('rgba(') == 0) { - me.setRGBABackground(nodes[j], rule.value); - } else if (rule.value.indexOf('hsla(') == 0 || rule.value.indexOf('hsl(') == 0) { - - me.setHSLABackground(nodes[j], rule.value); - } - } - } - } - - me.getProperties = function (obj, objName) - { - var result = "" - - if (!obj) { - return result; - } - - for (var i in obj) - { - try { - result += objName + "." + i.toString() + " = " + obj[i] + ", "; - } catch (ex) { - // nothing - } - } - return result - } - - function fixColors() { - var support = CSS3Helpers.reportColorSpaceSupport('HSL', colorType.FOREGROUND); - if (support == implementation.NATIVE) { - return; - } - - var colorRules = getRuleList('color').values; - - var properties = ['color', 'border', - 'border-left', 'border-right', 'border-bottom', 'border-top', - 'border-left-color', 'border-right-color', 'border-bottom-color', 'border-top-color']; - - for (var i=0; i<properties.length; i++) { - var rules = getRuleList(properties[i]).values; - colorRules = colorRules.concat(rules); - } - - for (var i in colorRules) { - var rule = colorRules[i]; - - var nodes = document.querySelectorAll(rule.selector); - for (var j = 0; j < nodes.length; j++) { - var isBorder = (rule.name.indexOf('border') == 0); - var ruleMatch = rule.value.match(reHSL); - - - if (ruleMatch) { - - var cssProperty; - if (isBorder && rule.name.indexOf('-color') < 0) { - cssProperty = rule.name; - } else { - cssProperty = rule.name; - } - - me.setHSLColor(nodes[j], cssProperty, rule.value); - - } - } - } - } - - - - function listColorStops(colorStops){ - var sb = new StringBuffer(); - - for (var i = 0; i < colorStops.length; i++) { - sb.append(StringHelpers.sprintf("color-stop(%s, %s)", colorStops[i].stop, colorStops[i].color)); - if (i < colorStops.length - 1) { - sb.append(', '); - } - } - - return sb.toString(); - } - - - function getStyleSheet(node){ - var sheetCssText; - switch (node.nodeName.toLowerCase()) { - case 'style': - sheetCssText = StringHelpers.uncommentHTML(node.innerHTML); //does not work with inline styles because IE doesn't allow you to get the text content of a STYLE element - break; - case 'link': - - var xhr = XMLHelpers.getXMLHttpRequest(node.href, null, "GET", null, false); - sheetCssText = xhr.responseText; - - break; - } - - sheetCssText = sheetCssText.replace(reMultiLineComment, '').replace(reAtRule, ''); - - return sheetCssText; - } - - function getStyleSheets(){ - - styleNodes = document.querySelectorAll('style, link[rel="stylesheet"]'); - - for (var i = 0; i < styleNodes.length; i++) { - if (!CSSHelpers.isMemberOfClass(styleNodes[i], 'cssSandpaper-noIndex')) { - styleSheets.push(getStyleSheet(styleNodes[i])) - } - } - } - - function indexRules(){ - - for (var i = 0; i < styleSheets.length; i++) { - var sheet = styleSheets[i]; - - rules = sheet.match(ruleSetRe); - if (rules) { - for (var j = 0; j < rules.length; j++) { - var parsedRule = rules[j].split(ruleSplitRe); - var selector = parsedRule[0].trim(); - var propertiesStr = parsedRule[1]; - var properties = propertiesStr.split(';'); - for (var k = 0; k < properties.length; k++) { - if (properties[k].trim() != '') { - var splitProperty = properties[k].split(':') - var name = splitProperty[0].trim().toLowerCase(); - var value = splitProperty[1]; - if (!ruleLists[name]) { - ruleLists[name] = new RuleList(name); - } - - if (value && typeof(ruleLists[name]) == 'object') { - ruleLists[name].add(selector, value.trim()); - } - } - } - } - } - } - - } - - function getRuleList(name){ - var list = ruleLists[name]; - if (!list) { - list = new RuleList(name); - } - return list; - } - - function setClasses(){ - - - var htmlNode = document.getElementsByTagName('html')[0]; - var properties = ['transform', 'opacity']; - - for (var i = 0; i < properties.length; i++) { - var prop = properties[i]; - if (CSS3Helpers.supports(prop)) { - CSSHelpers.addClass(htmlNode, 'cssSandpaper-' + prop); - } - } - - // Now .. remove the initially hidden classes - var hiddenNodes = CSSHelpers.getElementsByClassName(document, 'cssSandpaper-initiallyHidden'); - - for (var i=0; i<hiddenNodes.length; i++){ - CSSHelpers.removeClass(hiddenNodes[i], 'cssSandpaper-initiallyHidden'); - } - } -} - -function RuleList(propertyName){ - var me = this; - me.values = new Array(); - me.propertyName = propertyName; - me.add = function(selector, value){ - me.values.push(new CSSRule(selector, me.propertyName, value)); - } -} - -function CSSRule(selector, name, value){ - var me = this; - me.selector = selector; - me.name = name; - me.value = value; - - me.toString = function(){ - return StringHelpers.sprintf("%s { %s: %s}", me.selector, me.name, me.value); - } -} - -var MatrixGenerator = new function(){ - var me = this; - var reUnit = /[a-z]+$/; - me.identity = $M([[1, 0, 0], [0, 1, 0], [0, 0, 1]]); - - - function degreesToRadians(degrees){ - return (degrees - 360) * Math.PI / 180; - } - - function getRadianScalar(angleStr){ - - var num = parseFloat(angleStr); - var unit = angleStr.match(reUnit); - - - if (angleStr.trim() == '0') { - num = 0; - unit = 'rad'; - } - - if (unit.length != 1 || num == 0) { - return 0; - } - - - unit = unit[0]; - - - var rad; - switch (unit) { - case "deg": - rad = degreesToRadians(num); - break; - case "rad": - rad = num; - break; - default: - throw "Not an angle: " + angleStr; - } - return rad; - } - - me.prettyPrint = function(m){ - return StringHelpers.sprintf('| %s %s %s | - | %s %s %s | - |%s %s %s|', m.e(1, 1), m.e(1, 2), m.e(1, 3), m.e(2, 1), m.e(2, 2), m.e(2, 3), m.e(3, 1), m.e(3, 2), m.e(3, 3)) - } - - me.rotate = function(angleStr){ - var num = getRadianScalar(angleStr); - return Matrix.RotationZ(num); - } - - me.scale = function(sx, sy){ - sx = parseFloat(sx) - - if (!sy) { - sy = sx; - } else { - sy = parseFloat(sy) - } - - - return $M([[sx, 0, 0], [0, sy, 0], [0, 0, 1]]); - } - - me.scaleX = function(sx){ - return me.scale(sx, 1); - } - - me.scaleY = function(sy){ - return me.scale(1, sy); - } - - me.skew = function(ax, ay){ - var xRad = getRadianScalar(ax); - var yRad; - - if (ay != null) { - yRad = getRadianScalar(ay) - } else { - yRad = xRad - } - - if (xRad != null && yRad != null) { - - return $M([[1, Math.tan(xRad), 0], [Math.tan(yRad), 1, 0], [0, 0, 1]]); - } else { - return null; - } - } - - me.skewX = function(ax){ - - return me.skew(ax, "0"); - } - - me.skewY = function(ay){ - return me.skew("0", ay); - } - - me.translate = function(tx, ty){ - - var TX = parseInt(tx); - var TY = parseInt(ty) - - //jslog.debug(StringHelpers.sprintf('translate %f %f', TX, TY)); - - return $M([[1, 0, TX], [0, 1, TY], [0, 0, 1]]); - } - - me.translateX = function(tx){ - return me.translate(tx, 0); - } - - me.translateY = function(ty){ - return me.translate(0, ty); - } - - - me.matrix = function(a, b, c, d, e, f){ - - // for now, e and f are ignored - return $M([[a, c, parseInt(e)], [b, d, parseInt(f)], [0, 0, 1]]) - } -} - -var CSS3Helpers = new function(){ - var me = this; - - - var reTransformListSplitter = /[a-zA-Z]+\([^\)]*\)\s*/g; - - var reLeftBracket = /\(/g; - var reRightBracket = /\)/g; - var reComma = /,/g; - - var reSpaces = /\s+/g - - var reFilterNameSplitter = /progid:([^\(]*)/g; - - var reLinearGradient - - var canvas; - - var cache = new Array(); - - - me.supports = function(cssProperty){ - if (CSS3Helpers.findProperty(document.body, cssProperty) != null) { - return true; - } else { - return false; - } - } - - me.getCanvas = function(){ - - if (canvas) { - return canvas; - } else { - canvas = document.createElement('canvas'); - return canvas; - } - } - - me.getTransformationMatrix = function(CSS3TransformProperty, doThrowIfError){ - - var transforms = CSS3TransformProperty.match(reTransformListSplitter); - - /* - * Do a check here to see if there is anything in the transformation - * besides legit transforms - */ - if (doThrowIfError) { - var checkString = transforms.join(" ").replace(/\s*/g, ' '); - var normalizedCSSProp = CSS3TransformProperty.replace(/\s*/g, ' '); - - if (checkString != normalizedCSSProp) { - throw ("An invalid transform was given.") - } - } - - - var resultantMatrix = MatrixGenerator.identity; - - for (var j = 0; j < transforms.length; j++) { - - var transform = transforms[j]; - - transform = transform.replace(reLeftBracket, '("').replace(reComma, '", "').replace(reRightBracket, '")'); - - - try { - var matrix = eval('MatrixGenerator.' + transform); - - - //jslog.debug( transform + ': ' + MatrixGenerator.prettyPrint(matrix)) - resultantMatrix = resultantMatrix.x(matrix); - } - catch (ex) { - - if (doThrowIfError) { - var method = transform.split('(')[0]; - - var funcCall = transform.replace(/\"/g, ''); - - if (MatrixGenerator[method] == undefined) { - throw "Error: invalid tranform function: " + funcCall; - } else { - throw "Error: Invalid or missing parameters in function call: " + funcCall; - - } - } - // do nothing; - } - } - - return resultantMatrix; - - } - - me.getBoxShadowValues = function(propertyValue){ - var r = new Object(); - - var values = propertyValue.split(reSpaces); - - if (values[0] == 'inset') { - r.inset = true; - values = values.reverse().pop().reverse(); - } else { - r.inset = false; - } - - r.offsetX = parseInt(values[0]); - r.offsetY = parseInt(values[1]); - - if (values.length > 3) { - r.blurRadius = values[2]; - - if (values.length > 4) { - r.spreadRadius = values[3] - } - } - - r.color = values[values.length - 1]; - - return r; - } - - me.getGradient = function(propertyValue){ - var r = new Object(); - r.colorStops = new Array(); - - - var substring = me.getBracketedSubstring(propertyValue, '-sand-gradient'); - if (substring == undefined) { - return null; - } - var parameters = substring.match(/[^\(,]+(\([^\)]*\))?[^,]*/g); //substring.split(reComma); - r.type = parameters[0].trim(); - - if (r.type == 'linear') { - r.dirBegin = parameters[1].trim(); - r.dirEnd = parameters[2].trim(); - var beginCoord = r.dirBegin.split(reSpaces); - var endCoord = r.dirEnd.split(reSpaces); - - for (var i = 3; i < parameters.length; i++) { - r.colorStops.push(parseColorStop(parameters[i].trim(), i - 3)); - } - - - - - /* The following logic only applies to IE */ - if (document.body.filters) { - if (r.x0 == r.x1) { - /* IE only supports "center top", "center bottom", "top left" and "top right" */ - - switch (beginCoord[1]) { - case 'top': - r.IEdir = 0; - break; - case 'bottom': - swapIndices(r.colorStops, 0, 1); - r.IEdir = 0; - /* r.from = parameters[4].trim(); - r.to = parameters[3].trim(); */ - break; - } - } - - if (r.y0 == r.y1) { - switch (beginCoord[0]) { - case 'left': - r.IEdir = 1; - break; - case 'right': - r.IEdir = 1; - swapIndices(r.colorStops, 0, 1); - - break; - } - } - } - } else { - - // don't even bother with IE - if (document.body.filters) { - return null; - } - - - r.dirBegin = parameters[1].trim(); - r.r0 = parameters[2].trim(); - - r.dirEnd = parameters[3].trim(); - r.r1 = parameters[4].trim(); - - var beginCoord = r.dirBegin.split(reSpaces); - var endCoord = r.dirEnd.split(reSpaces); - - for (var i = 5; i < parameters.length; i++) { - r.colorStops.push(parseColorStop(parameters[i].trim(), i - 5)); - } - - } - - - r.x0 = beginCoord[0]; - r.y0 = beginCoord[1]; - - r.x1 = endCoord[0]; - r.y1 = endCoord[1]; - - return r; - } - - function swapIndices(array, index1, index2){ - var tmp = array[index1]; - array[index1] = array[index2]; - array[index2] = tmp; - } - - function parseColorStop(colorStop, index){ - var r = new Object(); - var substring = me.getBracketedSubstring(colorStop, 'color-stop'); - var from = me.getBracketedSubstring(colorStop, 'from'); - var to = me.getBracketedSubstring(colorStop, 'to'); - - - if (substring) { - //color-stop - var parameters = substring.split(',') - r.stop = normalizePercentage(parameters[0].trim()); - r.color = parameters[1].trim(); - } else if (from) { - r.stop = 0.0; - r.color = from.trim(); - } else if (to) { - r.stop = 1.0; - r.color = to.trim(); - } else { - if (index <= 1) { - r.color = colorStop; - if (index == 0) { - r.stop = 0.0; - } else { - r.stop = 1.0; - } - } else { - throw (StringHelpers.sprintf('invalid argument "%s"', colorStop)); - } - } - return r; - } - - function normalizePercentage(s){ - if (s.substring(s.length - 1, s.length) == '%') { - return parseFloat(s) / 100 + ""; - } else { - return s; - } - - } - - me.reportGradientSupport = function(){ - - if (!cache["gradientSupport"]) { - var r; - var div = document.createElement('div'); - div.style.cssText = "background-image:-webkit-gradient(linear, 0% 0%, 0% 100%, from(red), to(blue));"; - - if (div.style.backgroundImage) { - r = implementation.WEBKIT; - - } else { - - /* div.style.cssText = "background-image:-moz-linear-gradient(top, blue, white 80%, orange);"; - - if (div.style.backgroundImage) { - - r = implementation.MOZILLA; - - } else { */ - var canvas = CSS3Helpers.getCanvas(); - if (canvas.getContext && canvas.toDataURL) { - r = implementation.CANVAS_WORKAROUND; - - } else { - r = implementation.NONE; - } - /* } */ - } - - cache["gradientSupport"] = r; - } - return cache["gradientSupport"]; - } - - me.reportColorSpaceSupport = function(colorSpace, type){ - - if (!cache[colorSpace + type]) { - var r; - var div = document.createElement('div'); - - switch (type) { - - case colorType.BACKGROUND: - - switch(colorSpace) { - case 'RGBA': - div.style.cssText = "background-color: rgba(255, 32, 34, 0.5)"; - break; - case 'HSL': - div.style.cssText = "background-color: hsl(0,0%,100%)"; - break; - case 'HSLA': - div.style.cssText = "background-color: hsla(0,0%,100%,.5)"; - break; - - default: - break; - } - - - - var body = document.body; - - - if (div.style.backgroundColor) { - r = implementation.NATIVE; - - } else if (body.filters && body.filters != undefined) { - r = implementation.FILTER_WORKAROUND; - } else { - r = implementation.NONE; - } - break; - case colorType.FOREGROUND: - switch(colorSpace) { - case 'RGBA': - div.style.cssText = "color: rgba(255, 32, 34, 0.5)"; - break; - case 'HSL': - div.style.cssText = "color: hsl(0,0%,100%)"; - break; - case 'HSLA': - div.style.cssText = "color: hsla(0,0%,100%,.5)"; - break; - - default: - break; - } - - if (div.style.color) { - r = implementation.NATIVE; - } else if (colorSpace == 'HSL') { - - r = implementation.HEX_WORKAROUND; - } else { - r = implementation.NONE; - } - break - } - - - cache[colorSpace] = r; - } - return cache[colorSpace]; - } - - - - me.getBracketedSubstring = function(s, header){ - var gradientIndex = s.indexOf(header + '(') - - if (gradientIndex != -1) { - var substring = s.substring(gradientIndex); - - var openBrackets = 1; - for (var i = header.length + 1; i < 100 || i < substring.length; i++) { - var c = substring.substring(i, i + 1); - switch (c) { - case "(": - openBrackets++; - break; - case ")": - openBrackets--; - break; - } - - if (openBrackets == 0) { - break; - } - - } - - return substring.substring(gradientIndex + header.length + 1, i); - } - - - } - - - me.setMatrixFilter = function(obj, matrix){ - - - if (!hasIETransformWorkaround(obj)) { - addIETransformWorkaround(obj) - } - - var container = obj.parentNode; - //container.xTransform = degrees; - - - filter = obj.filters.item('DXImageTransform.Microsoft.Matrix'); - //jslog.debug(MatrixGenerator.prettyPrint(matrix)) - filter.M11 = matrix.e(1, 1); - filter.M12 = matrix.e(1, 2); - filter.M21 = matrix.e(2, 1); - filter.M22 = matrix.e(2, 2); - - - // Now, adjust the margins of the parent object - var offsets = me.getIEMatrixOffsets(obj, matrix, container.xOriginalWidth, container.xOriginalHeight); - container.style.marginLeft = offsets.x; - container.style.marginTop = offsets.y; - container.style.marginRight = 0; - container.style.marginBottom = 0; - } - - me.getTransformedDimensions = function (obj, matrix) { - var r = {}; - - if (hasIETransformWorkaround(obj)) { - r.width = obj.offsetWidth; - r.height = obj.offsetHeight; - } else { - var pts = [ - matrix.x($V([0, 0, 1])) , - matrix.x($V([0, obj.offsetHeight, 1])), - matrix.x($V([obj.offsetWidth, 0, 1])), - matrix.x($V([obj.offsetWidth, obj.offsetHeight, 1])) - ]; - var maxX = 0, maxY =0, minX=0, minY=0; - - for (var i = 0; i < pts.length; i++) { - var pt = pts[i]; - var x = pt.e(1), y = pt.e(2); - var minX = Math.min(minX, x); - var maxX = Math.max(maxX, x); - var minY = Math.min(minY, y); - var maxY = Math.max(maxY, y); - } - - - r.width = maxX - minX; - r.height = maxY - minY; - - } - - return r; - } - - me.getIEMatrixOffsets = function (obj, matrix, width, height) { - var r = {}; - - var originalWidth = parseFloat(width); - var originalHeight = parseFloat(height); - - - var offset; - if (CSSHelpers.getComputedStyle(obj, 'display') == 'inline') { - offset = 0; - } else { - offset = 13; // This works ... don't know why. - } - var transformedDimensions = me.getTransformedDimensions(obj, matrix); - - r.x = (((originalWidth - transformedDimensions.width) / 2) - offset + matrix.e(1, 3)) + 'px'; - r.y = (((originalHeight - transformedDimensions.height) / 2) - offset + matrix.e(2, 3)) + 'px'; - - return r; - } - - function hasIETransformWorkaround(obj){ - - return CSSHelpers.isMemberOfClass(obj.parentNode, 'IETransformContainer'); - } - - function addIETransformWorkaround(obj){ - if (!hasIETransformWorkaround(obj)) { - var parentNode = obj.parentNode; - var filter; - - // This is the container to offset the strange rotation behavior - var container = document.createElement('div'); - CSSHelpers.addClass(container, 'IETransformContainer'); - - - container.style.width = obj.offsetWidth + 'px'; - container.style.height = obj.offsetHeight + 'px'; - - container.xOriginalWidth = obj.offsetWidth; - container.xOriginalHeight = obj.offsetHeight; - container.style.position = 'absolute' - container.style.zIndex = obj.currentStyle.zIndex; - - - var horizPaddingFactor = 0; //parseInt(obj.currentStyle.paddingLeft); - var vertPaddingFactor = 0; //parseInt(obj.currentStyle.paddingTop); - if (obj.currentStyle.display == 'block') { - container.style.left = obj.offsetLeft + 13 - horizPaddingFactor + "px"; - container.style.top = obj.offsetTop + 13 + -vertPaddingFactor + 'px'; - } else { - container.style.left = obj.offsetLeft + "px"; - container.style.top = obj.offsetTop + 'px'; - - } - //container.style.float = obj.currentStyle.float; - - - obj.style.top = "auto"; - obj.style.left = "auto" - obj.style.bottom = "auto"; - obj.style.right = "auto"; - // This is what we need in order to insert to keep the document - // flow ok - var replacement = obj.cloneNode(true); - replacement.style.visibility = 'hidden'; - - obj.replaceNode(replacement); - - // now, wrap container around the original node ... - - obj.style.position = 'absolute'; - container.appendChild(obj); - parentNode.insertBefore(container, replacement); - container.style.backgroundColor = 'transparent'; - - container.style.padding = '0'; - - filter = me.addFilter(obj, 'DXImageTransform.Microsoft.Matrix', "M11=1, M12=0, M21=0, M22=1, sizingMethod='auto expand'") - var bgImage = obj.currentStyle.backgroundImage.split("\"")[1]; - /* - - - - if (bgImage) { - - - - var alphaFilter = me.addFilter(obj, "DXImageTransform.Microsoft.AlphaImageLoader", "src='" + bgImage + "', sizingMethod='scale'"); - - - - alert(bgImage) - - - - alphaFilter.src = bgImage; - - - - sizingMethod = 'scale'; - - - - obj.style.background = 'none'; - - - - obj.style.backgroundImage = 'none'; - - - - } - - - - */ - - } - - } - - me.addFilter = function(obj, filterName, filterValue){ - // now ... insert the filter so we can exploit its wonders - - var filter; - try { - filter = obj.filters.item(filterName); - } - catch (ex) { - // dang! We have to go through all of them and make sure filter - // is set right before we add the new one. - - - var filterList = new MSFilterList(obj) - - filterList.fixFilterStyle(); - - var comma = ", "; - - if (obj.filters.length == 0) { - comma = ""; - } - - obj.style.filter += StringHelpers.sprintf("%sprogid:%s(%s)", comma, filterName, filterValue); - - filter = obj.filters.item(filterName); - - } - - return filter; - } - - - function degreesToRadians(degrees){ - return (degrees - 360) * Math.PI / 180; - } - - me.findProperty = function(obj, type){ - capType = type.capitalize(); - - var r = cache[type] - if (!r) { - - - var style = obj.style; - - - var properties = [type, 'Moz' + capType, 'Webkit' + capType, 'O' + capType, 'filter']; - for (var i = 0; i < properties.length; i++) { - if (style[properties[i]] != null) { - r = properties[i]; - break; - } - } - - if (r == 'filter' && document.body.filters == undefined) { - r = null; - } - cache[type] = r; - } - return r; - } - - /* - * "A point is a pair of space-separated values. The syntax supports numbers, - * percentages or the keywords top, bottom, left and right for point values." - * This keywords and percentages into pixel equivalents - */ - me.parseCoordinate = function(value, max){ - //Convert keywords - switch (value) { - case 'top': - case 'left': - return 0; - case 'bottom': - case 'right': - return max; - case 'center': - return max / 2; - } - - //Convert percentage - if (value.indexOf('%') != -1) - value = parseFloat(value.substr(0, value.length - 1)) / 100 * max; - //Convert bare number (a pixel value) - else - value = parseFloat(value); - if (isNaN(value)) - throw Error("Unable to parse coordinate: " + value); - return value; - } - - me.applyCanvasGradient = function(el, gradient){ - - var canvas = me.getCanvas(); - var computedStyle = document.defaultView.getComputedStyle(el, null); - - canvas.width = parseInt(computedStyle.width) + parseInt(computedStyle.paddingLeft) + parseInt(computedStyle.paddingRight) + 1; // inserted by Zoltan - canvas.height = parseInt(computedStyle.height) + parseInt(computedStyle.paddingTop) + parseInt(computedStyle.paddingBottom) + 2; // 1 inserted by Zoltan - var ctx = canvas.getContext('2d'); - - //Iterate over the gradients and build them up - - var canvasGradient; - // Linear gradient - if (gradient.type == 'linear') { - - - canvasGradient = ctx.createLinearGradient(me.parseCoordinate(gradient.x0, canvas.width), me.parseCoordinate(gradient.y0, canvas.height), me.parseCoordinate(gradient.x1, canvas.width), me.parseCoordinate(gradient.y1, canvas.height)); - } // Radial gradient - else /*if(gradient.type == 'radial')*/ { - canvasGradient = ctx.createRadialGradient(me.parseCoordinate(gradient.x0, canvas.width), me.parseCoordinate(gradient.y0, canvas.height), gradient.r0, me.parseCoordinate(gradient.x1, canvas.width), me.parseCoordinate(gradient.y1, canvas.height), gradient.r1); - } - - //Add each of the color stops to the gradient - for (var i = 0; i < gradient.colorStops.length; i++) { - var cs = gradient.colorStops[i]; - - canvasGradient.addColorStop(cs.stop, cs.color); - }; - - //Paint the gradient - ctx.fillStyle = canvasGradient; - ctx.fillRect(0, 0, canvas.width, canvas.height); - - - //Apply the gradient to the selectedElement - el.style.backgroundImage = "url('" + canvas.toDataURL() + "')"; - - } - -} - -function MSFilterList(node){ - var me = this; - - me.list = new Array(); - me.node = node; - - var reFilterListSplitter = /[\s\S]*\([\s\S]*\)/g; - - var styleAttr = node.style; - - function init(){ - - var filterCalls = styleAttr.filter.match(reFilterListSplitter); - - if (filterCalls != null) { - - for (var i = 0; i < filterCalls.length; i++) { - var call = filterCalls[i]; - - me.list.push(new MSFilter(node, call)); - - } - } - - - } - - me.toString = function(){ - var sb = new StringBuffer(); - - for (var i = 0; i < me.list.length; i++) { - - sb.append(me.list[i].toString()); - if (i < me.list.length - 1) { - sb.append(',') - } - } - return sb.toString(); - } - - - me.fixFilterStyle = function(){ - - try { - me.node.style.filter = me.toString(); - } - catch (ex) { - // do nothing. - } - - } - - init(); -} - -function MSFilter(node, filterCall){ - var me = this; - - me.node = node; - me.filterCall = filterCall; - - var reFilterNameSplitter = /progid:([^\(]*)/g; - var reParameterName = /([a-zA-Z0-9]+\s*)=/g; - - - function init(){ - me.name = me.filterCall.match(reFilterNameSplitter)[0].replace('progid:', ''); - - //This may not be the best way to do this. - var parameterString = filterCall.split('(')[1].replace(')', ''); - me.parameters = parameterString.match(reParameterName); - - for (var i = 0; i < me.parameters.length; i++) { - me.parameters[i] = me.parameters[i].replace('=', ''); - } - - } - - me.toString = function(){ - - var sb = new StringBuffer(); - - sb.append(StringHelpers.sprintf('progid:%s(', me.name)); - - for (var i = 0; i < me.parameters.length; i++) { - var param = me.parameters[i]; - var filterObj = me.node.filters.item(me.name); - var paramValue = filterObj[param]; - if (typeof(paramValue) == 'string') { - sb.append(StringHelpers.sprintf('%s="%s"', param, filterObj[param])); - } else { - sb.append(StringHelpers.sprintf('%s=%s', param, filterObj[param])); - } - - if (i != me.parameters.length - 1) { - sb.append(', ') - } - } - sb.append(')'); - - return sb.toString(); - } - - - - init(); -} - -var implementation = new function(){ - this.NONE = 0; - - // Native Support. - this.NATIVE = 1; - - // Vendor specific prefix implementations - this.MOZILLA = 2; - this.WEBKIT = 3; - this.IE = 4; - this.OPERA = 5; - - // Non CSS3 Workarounds - this.CANVAS_WORKAROUND = 6; - this.FILTER_WORKAROUND = 7; - this.HEX_WORKAROUND = 8; -} - -var colorType = new function () { - this.BACKGROUND = 0; - this.FOREGROUND = 1; -} - -/* - * Extra helper routines - */ -if (!window.StringHelpers) { -StringHelpers = new function(){ - var me = this; - - // used by the String.prototype.trim() - me.initWhitespaceRe = /^\s\s*/; - me.endWhitespaceRe = /\s\s*$/; - me.whitespaceRe = /\s/; - - /******************************************************************************* - * Function sprintf(format_string,arguments...) Javascript emulation of the C - * printf function (modifiers and argument types "p" and "n" are not supported - * due to language restrictions) - * - * Copyright 2003 K&L Productions. All rights reserved - * http://www.klproductions.com - * - * Terms of use: This function can be used free of charge IF this header is not - * modified and remains with the function code. - * - * Legal: Use this code at your own risk. K&L Productions assumes NO - * resposibility for anything. - ******************************************************************************/ - me.sprintf = function(fstring){ - var pad = function(str, ch, len){ - var ps = ''; - for (var i = 0; i < Math.abs(len); i++) - ps += ch; - return len > 0 ? str + ps : ps + str; - } - var processFlags = function(flags, width, rs, arg){ - var pn = function(flags, arg, rs){ - if (arg >= 0) { - if (flags.indexOf(' ') >= 0) - rs = ' ' + rs; - else if (flags.indexOf('+') >= 0) - rs = '+' + rs; - } else - rs = '-' + rs; - return rs; - } - var iWidth = parseInt(width, 10); - if (width.charAt(0) == '0') { - var ec = 0; - if (flags.indexOf(' ') >= 0 || flags.indexOf('+') >= 0) - ec++; - if (rs.length < (iWidth - ec)) - rs = pad(rs, '0', rs.length - (iWidth - ec)); - return pn(flags, arg, rs); - } - rs = pn(flags, arg, rs); - if (rs.length < iWidth) { - if (flags.indexOf('-') < 0) - rs = pad(rs, ' ', rs.length - iWidth); - else - rs = pad(rs, ' ', iWidth - rs.length); - } - return rs; - } - var converters = new Array(); - converters['c'] = function(flags, width, precision, arg){ - if (typeof(arg) == 'number') - return String.fromCharCode(arg); - if (typeof(arg) == 'string') - return arg.charAt(0); - return ''; - } - converters['d'] = function(flags, width, precision, arg){ - return converters['i'](flags, width, precision, arg); - } - converters['u'] = function(flags, width, precision, arg){ - return converters['i'](flags, width, precision, Math.abs(arg)); - } - converters['i'] = function(flags, width, precision, arg){ - var iPrecision = parseInt(precision); - var rs = ((Math.abs(arg)).toString().split('.'))[0]; - if (rs.length < iPrecision) - rs = pad(rs, ' ', iPrecision - rs.length); - return processFlags(flags, width, rs, arg); - } - converters['E'] = function(flags, width, precision, arg){ - return (converters['e'](flags, width, precision, arg)).toUpperCase(); - } - converters['e'] = function(flags, width, precision, arg){ - iPrecision = parseInt(precision); - if (isNaN(iPrecision)) - iPrecision = 6; - rs = (Math.abs(arg)).toExponential(iPrecision); - if (rs.indexOf('.') < 0 && flags.indexOf('#') >= 0) - rs = rs.replace(/^(.*)(e.*)$/, '$1.$2'); - return processFlags(flags, width, rs, arg); - } - converters['f'] = function(flags, width, precision, arg){ - iPrecision = parseInt(precision); - if (isNaN(iPrecision)) - iPrecision = 6; - rs = (Math.abs(arg)).toFixed(iPrecision); - if (rs.indexOf('.') < 0 && flags.indexOf('#') >= 0) - rs = rs + '.'; - return processFlags(flags, width, rs, arg); - } - converters['G'] = function(flags, width, precision, arg){ - return (converters['g'](flags, width, precision, arg)).toUpperCase(); - } - converters['g'] = function(flags, width, precision, arg){ - iPrecision = parseInt(precision); - absArg = Math.abs(arg); - rse = absArg.toExponential(); - rsf = absArg.toFixed(6); - if (!isNaN(iPrecision)) { - rsep = absArg.toExponential(iPrecision); - rse = rsep.length < rse.length ? rsep : rse; - rsfp = absArg.toFixed(iPrecision); - rsf = rsfp.length < rsf.length ? rsfp : rsf; - } - if (rse.indexOf('.') < 0 && flags.indexOf('#') >= 0) - rse = rse.replace(/^(.*)(e.*)$/, '$1.$2'); - if (rsf.indexOf('.') < 0 && flags.indexOf('#') >= 0) - rsf = rsf + '.'; - rs = rse.length < rsf.length ? rse : rsf; - return processFlags(flags, width, rs, arg); - } - converters['o'] = function(flags, width, precision, arg){ - var iPrecision = parseInt(precision); - var rs = Math.round(Math.abs(arg)).toString(8); - if (rs.length < iPrecision) - rs = pad(rs, ' ', iPrecision - rs.length); - if (flags.indexOf('#') >= 0) - rs = '0' + rs; - return processFlags(flags, width, rs, arg); - } - converters['X'] = function(flags, width, precision, arg){ - return (converters['x'](flags, width, precision, arg)).toUpperCase(); - } - converters['x'] = function(flags, width, precision, arg){ - var iPrecision = parseInt(precision); - arg = Math.abs(arg); - var rs = Math.round(arg).toString(16); - if (rs.length < iPrecision) - rs = pad(rs, ' ', iPrecision - rs.length); - if (flags.indexOf('#') >= 0) - rs = '0x' + rs; - return processFlags(flags, width, rs, arg); - } - converters['s'] = function(flags, width, precision, arg){ - var iPrecision = parseInt(precision); - var rs = arg; - if (rs.length > iPrecision) - rs = rs.substring(0, iPrecision); - return processFlags(flags, width, rs, 0); - } - farr = fstring.split('%'); - retstr = farr[0]; - fpRE = /^([-+ #]*)(\d*)\.?(\d*)([cdieEfFgGosuxX])(.*)$/; - for (var i = 1; i < farr.length; i++) { - fps = fpRE.exec(farr[i]); - if (!fps) - continue; - if (arguments[i] != null) - retstr += converters[fps[4]](fps[1], fps[2], fps[3], arguments[i]); - retstr += fps[5]; - } - return retstr; - } - - /** - * Take out the first comment inside a block of HTML - * - * @param {String} s - an HTML block - * @return {String} s - the HTML block uncommented. - */ - me.uncommentHTML = function(s){ - if (s.indexOf('-->') != -1 && s.indexOf('<!--') != -1) { - return s.replace("<!--", "").replace("-->", ""); - } else { - return s; - } - } -} -} - -if (!window.XMLHelpers) { - -XMLHelpers = new function(){ - - var me = this; - - /** - * Wrapper for XMLHttpRequest Object. Grabbing data (XML and/or text) from a URL. - * Grabbing data from a URL. Input is one parameter, url. It returns a request - * object. Based on code from - * http://www.xml.com/pub/a/2005/02/09/xml-http-request.html. IE caching problem - * fix from Wikipedia article http://en.wikipedia.org/wiki/XMLHttpRequest - * - * @param {String} url - the URL to retrieve - * @param {Function} processReqChange - the function/method to call at key events of the URL retrieval. - * @param {String} method - (optional) "GET" or "POST" (default "GET") - * @param {String} data - (optional) the CGI data to pass. Default null. - * @param {boolean} isAsync - (optional) is this call asyncronous. Default true. - * - * @return {Object} a XML request object. - */ - me.getXMLHttpRequest = function(url, processReqChange) //, method, data, isAsync) - { - var argv = me.getXMLHttpRequest.arguments; - var argc = me.getXMLHttpRequest.arguments.length; - var httpMethod = (argc > 2) ? argv[2] : 'GET'; - var data = (argc > 3) ? argv[3] : ""; - var isAsync = (argc > 4) ? argv[4] : true; - - var req; - // branch for native XMLHttpRequest object - if (window.XMLHttpRequest) { - req = new XMLHttpRequest(); - // branch for IE/Windows ActiveX version - } else if (window.ActiveXObject) { - try { - req = new ActiveXObject('Msxml2.XMLHTTP'); - } - catch (ex) { - req = new ActiveXObject("Microsoft.XMLHTTP"); - } - // the browser doesn't support XML HttpRequest. Return null; - } else { - return null; - } - - if (isAsync) { - req.onreadystatechange = processReqChange; - } - - if (httpMethod == "GET" && data != "") { - url += "?" + data; - } - - req.open(httpMethod, url, isAsync); - - //Fixes IE Caching problem - req.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"); - req.send(data); - - return req; - } -} -} - - -if (!window.CSSHelpers) { -CSSHelpers = new function(){ - var me = this; - - var blankRe = new RegExp('\\s'); - - /* - * getComputedStyle: code from http://blog.stchur.com/2006/06/21/css-computed-style/ - */ - me.getComputedStyle = function(elem, style) - { - var computedStyle; - if (typeof elem.currentStyle != 'undefined') - { computedStyle = elem.currentStyle; } - else - { computedStyle = document.defaultView.getComputedStyle(elem, null); } - - return computedStyle[style]; - } - - - /** - * Determines if an HTML object is a member of a specific class. - * @param {Object} obj - an HTML object. - * @param {Object} className - the CSS class name. - */ - me.isMemberOfClass = function(obj, className){ - - if (blankRe.test(className)) - return false; - - var re = new RegExp(getClassReString(className), "g"); - - return (re.test(obj.className)); - - - } - - /** - * Make an HTML object be a member of a certain class. - * - * @param {Object} obj - an HTML object - * @param {String} className - a CSS class name. - */ - me.addClass = function(obj, className){ - if (blankRe.test(className)) { - return; - } - - // only add class if the object is not a member of it yet. - if (!me.isMemberOfClass(obj, className)) { - obj.className += " " + className; - } - } - - /** - * Make an HTML object *not* be a member of a certain class. - * - * @param {Object} obj - an HTML object - * @param {Object} className - a CSS class name. - */ - me.removeClass = function(obj, className){ - - if (blankRe.test(className)) { - return; - } - - - var re = new RegExp(getClassReString(className), "g"); - - var oldClassName = obj.className; - - - if (obj.className) { - obj.className = oldClassName.replace(re, ''); - } - - - } - - function getClassReString(className) { - return '\\s'+className+'\\s|^' + className + '\\s|\\s' + className + '$|' + '^' + className +'$'; - } - - /** - * Given an HTML element, find all child nodes of a specific class. - * - * With ideas from Jonathan Snook - * (http://snook.ca/archives/javascript/your_favourite_1/) - * Since this was presented within a post on this site, it is for the - * public domain according to the site's copyright statement. - * - * @param {Object} obj - an HTML element. If you want to search a whole document, set - * this to the document object. - * @param {String} className - the class name of the objects to return - * @return {Array} - the list of objects of class cls. - */ - me.getElementsByClassName = function (obj, className) - { - if (obj.getElementsByClassName) { - return DOMHelpers.nodeListToArray(obj.getElementsByClassName(className)) - } - else { - var a = []; - var re = new RegExp(getClassReString(className)); - var els = DOMHelpers.getAllDescendants(obj); - for (var i = 0, j = els.length; i < j; i++) { - if (re.test(els[i].className)) { - a.push(els[i]); - - } - } - return a; - } - } - - /** - * Generates a regular expression string that can be used to detect a class name - * in a tag's class attribute. It is used by a few methods, so I - * centralized it. - * - * @param {String} className - a name of a CSS class. - */ - function getClassReString(className){ - return '\\s' + className + '\\s|^' + className + '\\s|\\s' + className + '$|' + '^' + className + '$'; - } - - -} -} - - -/* - * Adding trim method to String Object. Ideas from - * http://www.faqts.com/knowledge_base/view.phtml/aid/1678/fid/1 and - * http://blog.stevenlevithan.com/archives/faster-trim-javascript - */ -String.prototype.trim = function(){ - var str = this; - - // The first method is faster on long strings than the second and - // vice-versa. - if (this.length > 6000) { - str = this.replace(StringHelpers.initWhitespaceRe, ''); - var i = str.length; - while (StringHelpers.whitespaceRe.test(str.charAt(--i))) - ; - return str.slice(0, i + 1); - } else { - return this.replace(StringHelpers.initWhitespaceRe, '').replace(StringHelpers.endWhitespaceRe, ''); - } - - -}; - -if (!window.DOMHelpers) { - -DOMHelpers = new function () { - var me = this; - - /** - * Returns all children of an element. Needed if it is necessary to do - * the equivalent of getElementsByTagName('*') for IE5 for Windows. - * - * @param {Object} e - an HTML object. - */ - me.getAllDescendants = function(obj) { - return obj.all ? obj.all : obj.getElementsByTagName('*'); - } - - /****** - * Converts a DOM live node list to a static/dead array. Good when you don't - * want the thing you are iterating in a for loop changing as the DOM changes. - * - * @param {Object} nodeList - a node list (like one returned by document.getElementsByTagName) - * @return {Array} - an array of nodes. - * - *******/ - me.nodeListToArray = function (nodeList) - { - var ary = []; - for(var i=0, len = nodeList.length; i < len; i++) - { - ary.push(nodeList[i]); - } - return ary; - } -} -} - -//+ Jonas Raoni Soares Silva -//@ http://jsfromhell.com/string/capitalize [v1.0] - -String.prototype.capitalize = function(){ //v1.0 - return this.charAt(0).toUpperCase() + this.substr(1); - -}; - - -/* - * stringBuffer.js - ideas from - * http://www.multitask.com.au/people/dion/archives/000354.html - */ -function StringBuffer(){ - var me = this; - - var buffer = []; - - - me.append = function(string){ - buffer.push(string); - return me; - } - - me.appendBuffer = function(bufferToAppend){ - buffer = buffer.concat(bufferToAppend); - } - - me.toString = function(){ - return buffer.join(""); - } - - me.getLength = function(){ - return buffer.length; - } - - me.flush = function(){ - buffer.length = 0; - } - -} - -/** - * A class to parse color values - * @author Stoyan Stefanov <sstoo@gmail.com> (with modifications) - * @link http://www.phpied.com/rgb-color-parser-in-javascript/ - * @license Use it if you like it - */ -function RGBColor(color_string){ - - var me = this; - - - - me.ok = false; - - // strip any leading # - if (color_string.charAt(0) == '#') { // remove # if any - color_string = color_string.substr(1, 6); - } - - color_string = color_string.replace(/ /g, ''); - color_string = color_string.toLowerCase(); - - // before getting into regexps, try simple matches - // and overwrite the input - var simple_colors = { - aliceblue: 'f0f8ff', - antiquewhite: 'faebd7', - aqua: '00ffff', - aquamarine: '7fffd4', - azure: 'f0ffff', - beige: 'f5f5dc', - bisque: 'ffe4c4', - black: '000000', - blanchedalmond: 'ffebcd', - blue: '0000ff', - blueviolet: '8a2be2', - brown: 'a52a2a', - burlywood: 'deb887', - cadetblue: '5f9ea0', - chartreuse: '7fff00', - chocolate: 'd2691e', - coral: 'ff7f50', - cornflowerblue: '6495ed', - cornsilk: 'fff8dc', - crimson: 'dc143c', - cyan: '00ffff', - darkblue: '00008b', - darkcyan: '008b8b', - darkgoldenrod: 'b8860b', - darkgray: 'a9a9a9', - darkgreen: '006400', - darkkhaki: 'bdb76b', - darkmagenta: '8b008b', - darkolivegreen: '556b2f', - darkorange: 'ff8c00', - darkorchid: '9932cc', - darkred: '8b0000', - darksalmon: 'e9967a', - darkseagreen: '8fbc8f', - darkslateblue: '483d8b', - darkslategray: '2f4f4f', - darkturquoise: '00ced1', - darkviolet: '9400d3', - deeppink: 'ff1493', - deepskyblue: '00bfff', - dimgray: '696969', - dodgerblue: '1e90ff', - feldspar: 'd19275', - firebrick: 'b22222', - floralwhite: 'fffaf0', - forestgreen: '228b22', - fuchsia: 'ff00ff', - gainsboro: 'dcdcdc', - ghostwhite: 'f8f8ff', - gold: 'ffd700', - goldenrod: 'daa520', - gray: '808080', - green: '008000', - greenyellow: 'adff2f', - honeydew: 'f0fff0', - hotpink: 'ff69b4', - indianred: 'cd5c5c', - indigo: '4b0082', - ivory: 'fffff0', - khaki: 'f0e68c', - lavender: 'e6e6fa', - lavenderblush: 'fff0f5', - lawngreen: '7cfc00', - lemonchiffon: 'fffacd', - lightblue: 'add8e6', - lightcoral: 'f08080', - lightcyan: 'e0ffff', - lightgoldenrodyellow: 'fafad2', - lightgrey: 'd3d3d3', - lightgreen: '90ee90', - lightpink: 'ffb6c1', - lightsalmon: 'ffa07a', - lightseagreen: '20b2aa', - lightskyblue: '87cefa', - lightslateblue: '8470ff', - lightslategray: '778899', - lightsteelblue: 'b0c4de', - lightyellow: 'ffffe0', - lime: '00ff00', - limegreen: '32cd32', - linen: 'faf0e6', - magenta: 'ff00ff', - maroon: '800000', - mediumaquamarine: '66cdaa', - mediumblue: '0000cd', - mediumorchid: 'ba55d3', - mediumpurple: '9370d8', - mediumseagreen: '3cb371', - mediumslateblue: '7b68ee', - mediumspringgreen: '00fa9a', - mediumturquoise: '48d1cc', - mediumvioletred: 'c71585', - midnightblue: '191970', - mintcream: 'f5fffa', - mistyrose: 'ffe4e1', - moccasin: 'ffe4b5', - navajowhite: 'ffdead', - navy: '000080', - oldlace: 'fdf5e6', - olive: '808000', - olivedrab: '6b8e23', - orange: 'ffa500', - orangered: 'ff4500', - orchid: 'da70d6', - palegoldenrod: 'eee8aa', - palegreen: '98fb98', - paleturquoise: 'afeeee', - palevioletred: 'd87093', - papayawhip: 'ffefd5', - peachpuff: 'ffdab9', - peru: 'cd853f', - pink: 'ffc0cb', - plum: 'dda0dd', - powderblue: 'b0e0e6', - purple: '800080', - red: 'ff0000', - rosybrown: 'bc8f8f', - royalblue: '4169e1', - saddlebrown: '8b4513', - salmon: 'fa8072', - sandybrown: 'f4a460', - seagreen: '2e8b57', - seashell: 'fff5ee', - sienna: 'a0522d', - silver: 'c0c0c0', - skyblue: '87ceeb', - slateblue: '6a5acd', - slategray: '708090', - snow: 'fffafa', - springgreen: '00ff7f', - steelblue: '4682b4', - tan: 'd2b48c', - teal: '008080', - metle: 'd8bfd8', - tomato: 'ff6347', - turquoise: '40e0d0', - violet: 'ee82ee', - violetred: 'd02090', - wheat: 'f5deb3', - white: 'ffffff', - whitesmoke: 'f5f5f5', - yellow: 'ffff00', - yellowgreen: '9acd32' - }; - for (var key in simple_colors) { - if (color_string == key) { - color_string = simple_colors[key]; - } - } - // emd of simple type-in colors - - // array of color definition objects - var color_defs = [{ - re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/, - example: ['rgb(123, 234, 45)', 'rgb(255,234,245)'], - process: function(bits){ - return [parseInt(bits[1]), parseInt(bits[2]), parseInt(bits[3])]; - } - }, { - re: /^(\w{2})(\w{2})(\w{2})$/, - example: ['#00ff00', '336699'], - process: function(bits){ - return [parseInt(bits[1], 16), parseInt(bits[2], 16), parseInt(bits[3], 16)]; - } - }, { - re: /^(\w{1})(\w{1})(\w{1})$/, - example: ['#fb0', 'f0f'], - process: function(bits){ - return [parseInt(bits[1] + bits[1], 16), parseInt(bits[2] + bits[2], 16), parseInt(bits[3] + bits[3], 16)]; - } - }, { - re: /^rgba\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3}),\s*(0{0,1}\.\d{1,}|0\.{0,}0*|1\.{0,}0*)\)$/, - example: ['rgba(123, 234, 45, 22)', 'rgba(255, 234,245, 34)'], - process: function(bits){ - return [parseInt(bits[1]), parseInt(bits[2]), parseInt(bits[3]), parseFloat(bits[4])]; - } - }, { - re: /^hsla\((\d{1,3}),\s*(\d{1,3}%),\s*(\d{1,3}%),\s*(0{0,1}\.\d{1,}|0\.{0,}0*|1\.{0,}0*)\)$/, - example: ['hsla(0,100%,50%,0.2)'], - process: function(bits){ - var result = hsl2rgb(parseInt(bits[1]), parseInt(bits[2]), parseInt(bits[3]), parseFloat(bits[4])); - - return [result.r, result.g, result.b, parseFloat(bits[4])]; - - } - }, { - re: /^hsl\((\d{1,3}),\s*(\d{1,3}%),\s*(\d{1,3}%)\)$/, - example: ['hsl(0,100%,50%)'], - process: function(bits){ - var result = hsl2rgb(parseInt(bits[1]), parseInt(bits[2]), parseInt(bits[3]), 1); - - return [result.r, result.g, result.b, 1]; - - } - }]; - - // search through the definitions to find a match - for (var i = 0; i < color_defs.length; i++) { - var re = color_defs[i].re; - var processor = color_defs[i].process; - var bits = re.exec(color_string); - if (bits) { - channels = processor(bits); - me.r = channels[0]; - me.g = channels[1]; - me.b = channels[2]; - me.a = channels[3]; - me.ok = true; - } - - } - - // validate/cleanup values - me.r = (me.r < 0 || isNaN(me.r)) ? 0 : ((me.r > 255) ? 255 : me.r); - me.g = (me.g < 0 || isNaN(me.g)) ? 0 : ((me.g > 255) ? 255 : me.g); - me.b = (me.b < 0 || isNaN(me.b)) ? 0 : ((me.b > 255) ? 255 : me.b); - - - - me.a = (isNaN(me.a)) ? 1 : ((me.a > 255) ? 255 : (me.a < 0) ? 0 : me.a); - - - - // some getters - me.toRGB = function(){ - return 'rgb(' + me.r + ', ' + me.g + ', ' + me.b + ')'; - } - - // some getters - me.toRGBA = function(){ - return 'rgba(' + me.r + ', ' + me.g + ', ' + me.b + ', ' + me.a + ')'; - } - - /** - * Converts an RGB color value to HSV. Conversion formula - * adapted from http://en.wikipedia.org/wiki/HSV_color_space. - * Assumes r, g, and b are contained in the set [0, 255] and - * returns h, s, and v in the set [0, 1]. - * - * This routine by Michael Jackson (not *that* one), - * from http://www.mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript - * - * @param Number r The red color value - * @param Number g The green color value - * @param Number b The blue color value - * @return Array The HSV representation - */ - me.toHSV = function(){ - var r = me.r / 255, g = me.g / 255, b = me.b / 255; - var max = Math.max(r, g, b), min = Math.min(r, g, b); - var h, s, v = max; - - var d = max - min; - s = max == 0 ? 0 : d / max; - - if (max == min) { - h = 0; // achromatic - } else { - switch (max) { - case r: - h = (g - b) / d + (g < b ? 6 : 0); - break; - case g: - h = (b - r) / d + 2; - break; - case b: - h = (r - g) / d + 4; - break; - } - h /= 6; - } - - return { - h: h, - s: s, - v: v - }; - } - - /* - * hsl2rgb from http://codingforums.com/showthread.php?t=11156 - * code by Jason Karl Davis (http://www.jasonkarldavis.com) - */ - function hsl2rgb(h, s, l) { - var m1, m2, hue; - var r, g, b - s /=100; - l /= 100; - if (s == 0) - r = g = b = (l * 255); - else { - if (l <= 0.5) - m2 = l * (s + 1); - else - m2 = l + s - l * s; - m1 = l * 2 - m2; - hue = h / 360; - r = HueToRgb(m1, m2, hue + 1/3); - g = HueToRgb(m1, m2, hue); - b = HueToRgb(m1, m2, hue - 1/3); - } - return {r: Math.round(r), g: Math.round(g), b: Math.round(b)}; - } - - function HueToRgb(m1, m2, hue) { - var v; - if (hue < 0) - hue += 1; - else if (hue > 1) - hue -= 1; - - if (6 * hue < 1) - v = m1 + (m2 - m1) * hue * 6; - else if (2 * hue < 1) - v = m2; - else if (3 * hue < 2) - v = m1 + (m2 - m1) * (2/3 - hue) * 6; - else - v = m1; - - return 255 * v; - } - - - - me.toHex = function(){ - var r = me.r.toString(16); - var g = me.g.toString(16); - var b = me.b.toString(16); - - var a = Math.floor((me.a * 255)).toString(16); - - if (r.length == 1) - r = '0' + r; - if (g.length == 1) - g = '0' + g; - if (b.length == 1) - b = '0' + b; - - - if (a == 'ff') { - a = ''; - } else if (a.length == 1) { - a = '0' + a; - } - return '#' + a + r + g + b; - } - - - -} - -document.write('<style type="text/css">.cssSandpaper-initiallyHidden { visibility: hidden;} </style>'); - - - -EventHelpers.addPageLoadEvent('cssSandpaper.init') - diff --git a/application/third_party/dompdf/www/cssSandpaper/js/jcoglan.com/sylvester.js b/application/third_party/dompdf/www/cssSandpaper/js/jcoglan.com/sylvester.js deleted file mode 100644 index 3e83bee1..00000000 --- a/application/third_party/dompdf/www/cssSandpaper/js/jcoglan.com/sylvester.js +++ /dev/null @@ -1 +0,0 @@ -eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('9 17={3i:\'0.1.3\',16:1e-6};l v(){}v.23={e:l(i){8(i<1||i>7.4.q)?w:7.4[i-1]},2R:l(){8 7.4.q},1u:l(){8 F.1x(7.2u(7))},24:l(a){9 n=7.4.q;9 V=a.4||a;o(n!=V.q){8 1L}J{o(F.13(7.4[n-1]-V[n-1])>17.16){8 1L}}H(--n);8 2x},1q:l(){8 v.u(7.4)},1b:l(a){9 b=[];7.28(l(x,i){b.19(a(x,i))});8 v.u(b)},28:l(a){9 n=7.4.q,k=n,i;J{i=k-n;a(7.4[i],i+1)}H(--n)},2q:l(){9 r=7.1u();o(r===0){8 7.1q()}8 7.1b(l(x){8 x/r})},1C:l(a){9 V=a.4||a;9 n=7.4.q,k=n,i;o(n!=V.q){8 w}9 b=0,1D=0,1F=0;7.28(l(x,i){b+=x*V[i-1];1D+=x*x;1F+=V[i-1]*V[i-1]});1D=F.1x(1D);1F=F.1x(1F);o(1D*1F===0){8 w}9 c=b/(1D*1F);o(c<-1){c=-1}o(c>1){c=1}8 F.37(c)},1m:l(a){9 b=7.1C(a);8(b===w)?w:(b<=17.16)},34:l(a){9 b=7.1C(a);8(b===w)?w:(F.13(b-F.1A)<=17.16)},2k:l(a){9 b=7.2u(a);8(b===w)?w:(F.13(b)<=17.16)},2j:l(a){9 V=a.4||a;o(7.4.q!=V.q){8 w}8 7.1b(l(x,i){8 x+V[i-1]})},2C:l(a){9 V=a.4||a;o(7.4.q!=V.q){8 w}8 7.1b(l(x,i){8 x-V[i-1]})},22:l(k){8 7.1b(l(x){8 x*k})},x:l(k){8 7.22(k)},2u:l(a){9 V=a.4||a;9 i,2g=0,n=7.4.q;o(n!=V.q){8 w}J{2g+=7.4[n-1]*V[n-1]}H(--n);8 2g},2f:l(a){9 B=a.4||a;o(7.4.q!=3||B.q!=3){8 w}9 A=7.4;8 v.u([(A[1]*B[2])-(A[2]*B[1]),(A[2]*B[0])-(A[0]*B[2]),(A[0]*B[1])-(A[1]*B[0])])},2A:l(){9 m=0,n=7.4.q,k=n,i;J{i=k-n;o(F.13(7.4[i])>F.13(m)){m=7.4[i]}}H(--n);8 m},2Z:l(x){9 a=w,n=7.4.q,k=n,i;J{i=k-n;o(a===w&&7.4[i]==x){a=i+1}}H(--n);8 a},3g:l(){8 S.2X(7.4)},2d:l(){8 7.1b(l(x){8 F.2d(x)})},2V:l(x){8 7.1b(l(y){8(F.13(y-x)<=17.16)?x:y})},1o:l(a){o(a.K){8 a.1o(7)}9 V=a.4||a;o(V.q!=7.4.q){8 w}9 b=0,2b;7.28(l(x,i){2b=x-V[i-1];b+=2b*2b});8 F.1x(b)},3a:l(a){8 a.1h(7)},2T:l(a){8 a.1h(7)},1V:l(t,a){9 V,R,x,y,z;2S(7.4.q){27 2:V=a.4||a;o(V.q!=2){8 w}R=S.1R(t).4;x=7.4[0]-V[0];y=7.4[1]-V[1];8 v.u([V[0]+R[0][0]*x+R[0][1]*y,V[1]+R[1][0]*x+R[1][1]*y]);1I;27 3:o(!a.U){8 w}9 C=a.1r(7).4;R=S.1R(t,a.U).4;x=7.4[0]-C[0];y=7.4[1]-C[1];z=7.4[2]-C[2];8 v.u([C[0]+R[0][0]*x+R[0][1]*y+R[0][2]*z,C[1]+R[1][0]*x+R[1][1]*y+R[1][2]*z,C[2]+R[2][0]*x+R[2][1]*y+R[2][2]*z]);1I;2P:8 w}},1t:l(a){o(a.K){9 P=7.4.2O();9 C=a.1r(P).4;8 v.u([C[0]+(C[0]-P[0]),C[1]+(C[1]-P[1]),C[2]+(C[2]-(P[2]||0))])}1d{9 Q=a.4||a;o(7.4.q!=Q.q){8 w}8 7.1b(l(x,i){8 Q[i-1]+(Q[i-1]-x)})}},1N:l(){9 V=7.1q();2S(V.4.q){27 3:1I;27 2:V.4.19(0);1I;2P:8 w}8 V},2n:l(){8\'[\'+7.4.2K(\', \')+\']\'},26:l(a){7.4=(a.4||a).2O();8 7}};v.u=l(a){9 V=25 v();8 V.26(a)};v.i=v.u([1,0,0]);v.j=v.u([0,1,0]);v.k=v.u([0,0,1]);v.2J=l(n){9 a=[];J{a.19(F.2F())}H(--n);8 v.u(a)};v.1j=l(n){9 a=[];J{a.19(0)}H(--n);8 v.u(a)};l S(){}S.23={e:l(i,j){o(i<1||i>7.4.q||j<1||j>7.4[0].q){8 w}8 7.4[i-1][j-1]},33:l(i){o(i>7.4.q){8 w}8 v.u(7.4[i-1])},2E:l(j){o(j>7.4[0].q){8 w}9 a=[],n=7.4.q,k=n,i;J{i=k-n;a.19(7.4[i][j-1])}H(--n);8 v.u(a)},2R:l(){8{2D:7.4.q,1p:7.4[0].q}},2D:l(){8 7.4.q},1p:l(){8 7.4[0].q},24:l(a){9 M=a.4||a;o(1g(M[0][0])==\'1f\'){M=S.u(M).4}o(7.4.q!=M.q||7.4[0].q!=M[0].q){8 1L}9 b=7.4.q,15=b,i,G,10=7.4[0].q,j;J{i=15-b;G=10;J{j=10-G;o(F.13(7.4[i][j]-M[i][j])>17.16){8 1L}}H(--G)}H(--b);8 2x},1q:l(){8 S.u(7.4)},1b:l(a){9 b=[],12=7.4.q,15=12,i,G,10=7.4[0].q,j;J{i=15-12;G=10;b[i]=[];J{j=10-G;b[i][j]=a(7.4[i][j],i+1,j+1)}H(--G)}H(--12);8 S.u(b)},2i:l(a){9 M=a.4||a;o(1g(M[0][0])==\'1f\'){M=S.u(M).4}8(7.4.q==M.q&&7.4[0].q==M[0].q)},2j:l(a){9 M=a.4||a;o(1g(M[0][0])==\'1f\'){M=S.u(M).4}o(!7.2i(M)){8 w}8 7.1b(l(x,i,j){8 x+M[i-1][j-1]})},2C:l(a){9 M=a.4||a;o(1g(M[0][0])==\'1f\'){M=S.u(M).4}o(!7.2i(M)){8 w}8 7.1b(l(x,i,j){8 x-M[i-1][j-1]})},2B:l(a){9 M=a.4||a;o(1g(M[0][0])==\'1f\'){M=S.u(M).4}8(7.4[0].q==M.q)},22:l(a){o(!a.4){8 7.1b(l(x){8 x*a})}9 b=a.1u?2x:1L;9 M=a.4||a;o(1g(M[0][0])==\'1f\'){M=S.u(M).4}o(!7.2B(M)){8 w}9 d=7.4.q,15=d,i,G,10=M[0].q,j;9 e=7.4[0].q,4=[],21,20,c;J{i=15-d;4[i]=[];G=10;J{j=10-G;21=0;20=e;J{c=e-20;21+=7.4[i][c]*M[c][j]}H(--20);4[i][j]=21}H(--G)}H(--d);9 M=S.u(4);8 b?M.2E(1):M},x:l(a){8 7.22(a)},32:l(a,b,c,d){9 e=[],12=c,i,G,j;9 f=7.4.q,1p=7.4[0].q;J{i=c-12;e[i]=[];G=d;J{j=d-G;e[i][j]=7.4[(a+i-1)%f][(b+j-1)%1p]}H(--G)}H(--12);8 S.u(e)},31:l(){9 a=7.4.q,1p=7.4[0].q;9 b=[],12=1p,i,G,j;J{i=1p-12;b[i]=[];G=a;J{j=a-G;b[i][j]=7.4[j][i]}H(--G)}H(--12);8 S.u(b)},1y:l(){8(7.4.q==7.4[0].q)},2A:l(){9 m=0,12=7.4.q,15=12,i,G,10=7.4[0].q,j;J{i=15-12;G=10;J{j=10-G;o(F.13(7.4[i][j])>F.13(m)){m=7.4[i][j]}}H(--G)}H(--12);8 m},2Z:l(x){9 a=w,12=7.4.q,15=12,i,G,10=7.4[0].q,j;J{i=15-12;G=10;J{j=10-G;o(7.4[i][j]==x){8{i:i+1,j:j+1}}}H(--G)}H(--12);8 w},30:l(){o(!7.1y){8 w}9 a=[],n=7.4.q,k=n,i;J{i=k-n;a.19(7.4[i][i])}H(--n);8 v.u(a)},1K:l(){9 M=7.1q(),1c;9 n=7.4.q,k=n,i,1s,1n=7.4[0].q,p;J{i=k-n;o(M.4[i][i]==0){2e(j=i+1;j<k;j++){o(M.4[j][i]!=0){1c=[];1s=1n;J{p=1n-1s;1c.19(M.4[i][p]+M.4[j][p])}H(--1s);M.4[i]=1c;1I}}}o(M.4[i][i]!=0){2e(j=i+1;j<k;j++){9 a=M.4[j][i]/M.4[i][i];1c=[];1s=1n;J{p=1n-1s;1c.19(p<=i?0:M.4[j][p]-M.4[i][p]*a)}H(--1s);M.4[j]=1c}}}H(--n);8 M},3h:l(){8 7.1K()},2z:l(){o(!7.1y()){8 w}9 M=7.1K();9 a=M.4[0][0],n=M.4.q-1,k=n,i;J{i=k-n+1;a=a*M.4[i][i]}H(--n);8 a},3f:l(){8 7.2z()},2y:l(){8(7.1y()&&7.2z()===0)},2Y:l(){o(!7.1y()){8 w}9 a=7.4[0][0],n=7.4.q-1,k=n,i;J{i=k-n+1;a+=7.4[i][i]}H(--n);8 a},3e:l(){8 7.2Y()},1Y:l(){9 M=7.1K(),1Y=0;9 a=7.4.q,15=a,i,G,10=7.4[0].q,j;J{i=15-a;G=10;J{j=10-G;o(F.13(M.4[i][j])>17.16){1Y++;1I}}H(--G)}H(--a);8 1Y},3d:l(){8 7.1Y()},2W:l(a){9 M=a.4||a;o(1g(M[0][0])==\'1f\'){M=S.u(M).4}9 T=7.1q(),1p=T.4[0].q;9 b=T.4.q,15=b,i,G,10=M[0].q,j;o(b!=M.q){8 w}J{i=15-b;G=10;J{j=10-G;T.4[i][1p+j]=M[i][j]}H(--G)}H(--b);8 T},2w:l(){o(!7.1y()||7.2y()){8 w}9 a=7.4.q,15=a,i,j;9 M=7.2W(S.I(a)).1K();9 b,1n=M.4[0].q,p,1c,2v;9 c=[],2c;J{i=a-1;1c=[];b=1n;c[i]=[];2v=M.4[i][i];J{p=1n-b;2c=M.4[i][p]/2v;1c.19(2c);o(p>=15){c[i].19(2c)}}H(--b);M.4[i]=1c;2e(j=0;j<i;j++){1c=[];b=1n;J{p=1n-b;1c.19(M.4[j][p]-M.4[i][p]*M.4[j][i])}H(--b);M.4[j]=1c}}H(--a);8 S.u(c)},3c:l(){8 7.2w()},2d:l(){8 7.1b(l(x){8 F.2d(x)})},2V:l(x){8 7.1b(l(p){8(F.13(p-x)<=17.16)?x:p})},2n:l(){9 a=[];9 n=7.4.q,k=n,i;J{i=k-n;a.19(v.u(7.4[i]).2n())}H(--n);8 a.2K(\'\\n\')},26:l(a){9 i,4=a.4||a;o(1g(4[0][0])!=\'1f\'){9 b=4.q,15=b,G,10,j;7.4=[];J{i=15-b;G=4[i].q;10=G;7.4[i]=[];J{j=10-G;7.4[i][j]=4[i][j]}H(--G)}H(--b);8 7}9 n=4.q,k=n;7.4=[];J{i=k-n;7.4.19([4[i]])}H(--n);8 7}};S.u=l(a){9 M=25 S();8 M.26(a)};S.I=l(n){9 a=[],k=n,i,G,j;J{i=k-n;a[i]=[];G=k;J{j=k-G;a[i][j]=(i==j)?1:0}H(--G)}H(--n);8 S.u(a)};S.2X=l(a){9 n=a.q,k=n,i;9 M=S.I(n);J{i=k-n;M.4[i][i]=a[i]}H(--n);8 M};S.1R=l(b,a){o(!a){8 S.u([[F.1H(b),-F.1G(b)],[F.1G(b),F.1H(b)]])}9 d=a.1q();o(d.4.q!=3){8 w}9 e=d.1u();9 x=d.4[0]/e,y=d.4[1]/e,z=d.4[2]/e;9 s=F.1G(b),c=F.1H(b),t=1-c;8 S.u([[t*x*x+c,t*x*y-s*z,t*x*z+s*y],[t*x*y+s*z,t*y*y+c,t*y*z-s*x],[t*x*z-s*y,t*y*z+s*x,t*z*z+c]])};S.3b=l(t){9 c=F.1H(t),s=F.1G(t);8 S.u([[1,0,0],[0,c,-s],[0,s,c]])};S.39=l(t){9 c=F.1H(t),s=F.1G(t);8 S.u([[c,0,s],[0,1,0],[-s,0,c]])};S.38=l(t){9 c=F.1H(t),s=F.1G(t);8 S.u([[c,-s,0],[s,c,0],[0,0,1]])};S.2J=l(n,m){8 S.1j(n,m).1b(l(){8 F.2F()})};S.1j=l(n,m){9 a=[],12=n,i,G,j;J{i=n-12;a[i]=[];G=m;J{j=m-G;a[i][j]=0}H(--G)}H(--12);8 S.u(a)};l 14(){}14.23={24:l(a){8(7.1m(a)&&7.1h(a.K))},1q:l(){8 14.u(7.K,7.U)},2U:l(a){9 V=a.4||a;8 14.u([7.K.4[0]+V[0],7.K.4[1]+V[1],7.K.4[2]+(V[2]||0)],7.U)},1m:l(a){o(a.W){8 a.1m(7)}9 b=7.U.1C(a.U);8(F.13(b)<=17.16||F.13(b-F.1A)<=17.16)},1o:l(a){o(a.W){8 a.1o(7)}o(a.U){o(7.1m(a)){8 7.1o(a.K)}9 N=7.U.2f(a.U).2q().4;9 A=7.K.4,B=a.K.4;8 F.13((A[0]-B[0])*N[0]+(A[1]-B[1])*N[1]+(A[2]-B[2])*N[2])}1d{9 P=a.4||a;9 A=7.K.4,D=7.U.4;9 b=P[0]-A[0],2a=P[1]-A[1],29=(P[2]||0)-A[2];9 c=F.1x(b*b+2a*2a+29*29);o(c===0)8 0;9 d=(b*D[0]+2a*D[1]+29*D[2])/c;9 e=1-d*d;8 F.13(c*F.1x(e<0?0:e))}},1h:l(a){9 b=7.1o(a);8(b!==w&&b<=17.16)},2T:l(a){8 a.1h(7)},1v:l(a){o(a.W){8 a.1v(7)}8(!7.1m(a)&&7.1o(a)<=17.16)},1U:l(a){o(a.W){8 a.1U(7)}o(!7.1v(a)){8 w}9 P=7.K.4,X=7.U.4,Q=a.K.4,Y=a.U.4;9 b=X[0],1z=X[1],1B=X[2],1T=Y[0],1S=Y[1],1M=Y[2];9 c=P[0]-Q[0],2s=P[1]-Q[1],2r=P[2]-Q[2];9 d=-b*c-1z*2s-1B*2r;9 e=1T*c+1S*2s+1M*2r;9 f=b*b+1z*1z+1B*1B;9 g=1T*1T+1S*1S+1M*1M;9 h=b*1T+1z*1S+1B*1M;9 k=(d*g/f+h*e)/(g-h*h);8 v.u([P[0]+k*b,P[1]+k*1z,P[2]+k*1B])},1r:l(a){o(a.U){o(7.1v(a)){8 7.1U(a)}o(7.1m(a)){8 w}9 D=7.U.4,E=a.U.4;9 b=D[0],1l=D[1],1k=D[2],1P=E[0],1O=E[1],1Q=E[2];9 x=(1k*1P-b*1Q),y=(b*1O-1l*1P),z=(1l*1Q-1k*1O);9 N=v.u([x*1Q-y*1O,y*1P-z*1Q,z*1O-x*1P]);9 P=11.u(a.K,N);8 P.1U(7)}1d{9 P=a.4||a;o(7.1h(P)){8 v.u(P)}9 A=7.K.4,D=7.U.4;9 b=D[0],1l=D[1],1k=D[2],1w=A[0],18=A[1],1a=A[2];9 x=b*(P[1]-18)-1l*(P[0]-1w),y=1l*((P[2]||0)-1a)-1k*(P[1]-18),z=1k*(P[0]-1w)-b*((P[2]||0)-1a);9 V=v.u([1l*x-1k*z,1k*y-b*x,b*z-1l*y]);9 k=7.1o(P)/V.1u();8 v.u([P[0]+V.4[0]*k,P[1]+V.4[1]*k,(P[2]||0)+V.4[2]*k])}},1V:l(t,a){o(1g(a.U)==\'1f\'){a=14.u(a.1N(),v.k)}9 R=S.1R(t,a.U).4;9 C=a.1r(7.K).4;9 A=7.K.4,D=7.U.4;9 b=C[0],1E=C[1],1J=C[2],1w=A[0],18=A[1],1a=A[2];9 x=1w-b,y=18-1E,z=1a-1J;8 14.u([b+R[0][0]*x+R[0][1]*y+R[0][2]*z,1E+R[1][0]*x+R[1][1]*y+R[1][2]*z,1J+R[2][0]*x+R[2][1]*y+R[2][2]*z],[R[0][0]*D[0]+R[0][1]*D[1]+R[0][2]*D[2],R[1][0]*D[0]+R[1][1]*D[1]+R[1][2]*D[2],R[2][0]*D[0]+R[2][1]*D[1]+R[2][2]*D[2]])},1t:l(a){o(a.W){9 A=7.K.4,D=7.U.4;9 b=A[0],18=A[1],1a=A[2],2N=D[0],1l=D[1],1k=D[2];9 c=7.K.1t(a).4;9 d=b+2N,2h=18+1l,2o=1a+1k;9 Q=a.1r([d,2h,2o]).4;9 e=[Q[0]+(Q[0]-d)-c[0],Q[1]+(Q[1]-2h)-c[1],Q[2]+(Q[2]-2o)-c[2]];8 14.u(c,e)}1d o(a.U){8 7.1V(F.1A,a)}1d{9 P=a.4||a;8 14.u(7.K.1t([P[0],P[1],(P[2]||0)]),7.U)}},1Z:l(a,b){a=v.u(a);b=v.u(b);o(a.4.q==2){a.4.19(0)}o(b.4.q==2){b.4.19(0)}o(a.4.q>3||b.4.q>3){8 w}9 c=b.1u();o(c===0){8 w}7.K=a;7.U=v.u([b.4[0]/c,b.4[1]/c,b.4[2]/c]);8 7}};14.u=l(a,b){9 L=25 14();8 L.1Z(a,b)};14.X=14.u(v.1j(3),v.i);14.Y=14.u(v.1j(3),v.j);14.Z=14.u(v.1j(3),v.k);l 11(){}11.23={24:l(a){8(7.1h(a.K)&&7.1m(a))},1q:l(){8 11.u(7.K,7.W)},2U:l(a){9 V=a.4||a;8 11.u([7.K.4[0]+V[0],7.K.4[1]+V[1],7.K.4[2]+(V[2]||0)],7.W)},1m:l(a){9 b;o(a.W){b=7.W.1C(a.W);8(F.13(b)<=17.16||F.13(F.1A-b)<=17.16)}1d o(a.U){8 7.W.2k(a.U)}8 w},2k:l(a){9 b=7.W.1C(a.W);8(F.13(F.1A/2-b)<=17.16)},1o:l(a){o(7.1v(a)||7.1h(a)){8 0}o(a.K){9 A=7.K.4,B=a.K.4,N=7.W.4;8 F.13((A[0]-B[0])*N[0]+(A[1]-B[1])*N[1]+(A[2]-B[2])*N[2])}1d{9 P=a.4||a;9 A=7.K.4,N=7.W.4;8 F.13((A[0]-P[0])*N[0]+(A[1]-P[1])*N[1]+(A[2]-(P[2]||0))*N[2])}},1h:l(a){o(a.W){8 w}o(a.U){8(7.1h(a.K)&&7.1h(a.K.2j(a.U)))}1d{9 P=a.4||a;9 A=7.K.4,N=7.W.4;9 b=F.13(N[0]*(A[0]-P[0])+N[1]*(A[1]-P[1])+N[2]*(A[2]-(P[2]||0)));8(b<=17.16)}},1v:l(a){o(1g(a.U)==\'1f\'&&1g(a.W)==\'1f\'){8 w}8!7.1m(a)},1U:l(a){o(!7.1v(a)){8 w}o(a.U){9 A=a.K.4,D=a.U.4,P=7.K.4,N=7.W.4;9 b=(N[0]*(P[0]-A[0])+N[1]*(P[1]-A[1])+N[2]*(P[2]-A[2]))/(N[0]*D[0]+N[1]*D[1]+N[2]*D[2]);8 v.u([A[0]+D[0]*b,A[1]+D[1]*b,A[2]+D[2]*b])}1d o(a.W){9 c=7.W.2f(a.W).2q();9 N=7.W.4,A=7.K.4,O=a.W.4,B=a.K.4;9 d=S.1j(2,2),i=0;H(d.2y()){i++;d=S.u([[N[i%3],N[(i+1)%3]],[O[i%3],O[(i+1)%3]]])}9 e=d.2w().4;9 x=N[0]*A[0]+N[1]*A[1]+N[2]*A[2];9 y=O[0]*B[0]+O[1]*B[1]+O[2]*B[2];9 f=[e[0][0]*x+e[0][1]*y,e[1][0]*x+e[1][1]*y];9 g=[];2e(9 j=1;j<=3;j++){g.19((i==j)?0:f[(j+(5-i)%3)%3])}8 14.u(g,c)}},1r:l(a){9 P=a.4||a;9 A=7.K.4,N=7.W.4;9 b=(A[0]-P[0])*N[0]+(A[1]-P[1])*N[1]+(A[2]-(P[2]||0))*N[2];8 v.u([P[0]+N[0]*b,P[1]+N[1]*b,(P[2]||0)+N[2]*b])},1V:l(t,a){9 R=S.1R(t,a.U).4;9 C=a.1r(7.K).4;9 A=7.K.4,N=7.W.4;9 b=C[0],1E=C[1],1J=C[2],1w=A[0],18=A[1],1a=A[2];9 x=1w-b,y=18-1E,z=1a-1J;8 11.u([b+R[0][0]*x+R[0][1]*y+R[0][2]*z,1E+R[1][0]*x+R[1][1]*y+R[1][2]*z,1J+R[2][0]*x+R[2][1]*y+R[2][2]*z],[R[0][0]*N[0]+R[0][1]*N[1]+R[0][2]*N[2],R[1][0]*N[0]+R[1][1]*N[1]+R[1][2]*N[2],R[2][0]*N[0]+R[2][1]*N[1]+R[2][2]*N[2]])},1t:l(a){o(a.W){9 A=7.K.4,N=7.W.4;9 b=A[0],18=A[1],1a=A[2],2M=N[0],2L=N[1],2Q=N[2];9 c=7.K.1t(a).4;9 d=b+2M,2p=18+2L,2m=1a+2Q;9 Q=a.1r([d,2p,2m]).4;9 e=[Q[0]+(Q[0]-d)-c[0],Q[1]+(Q[1]-2p)-c[1],Q[2]+(Q[2]-2m)-c[2]];8 11.u(c,e)}1d o(a.U){8 7.1V(F.1A,a)}1d{9 P=a.4||a;8 11.u(7.K.1t([P[0],P[1],(P[2]||0)]),7.W)}},1Z:l(a,b,c){a=v.u(a);a=a.1N();o(a===w){8 w}b=v.u(b);b=b.1N();o(b===w){8 w}o(1g(c)==\'1f\'){c=w}1d{c=v.u(c);c=c.1N();o(c===w){8 w}}9 d=a.4[0],18=a.4[1],1a=a.4[2];9 e=b.4[0],1W=b.4[1],1X=b.4[2];9 f,1i;o(c!==w){9 g=c.4[0],2l=c.4[1],2t=c.4[2];f=v.u([(1W-18)*(2t-1a)-(1X-1a)*(2l-18),(1X-1a)*(g-d)-(e-d)*(2t-1a),(e-d)*(2l-18)-(1W-18)*(g-d)]);1i=f.1u();o(1i===0){8 w}f=v.u([f.4[0]/1i,f.4[1]/1i,f.4[2]/1i])}1d{1i=F.1x(e*e+1W*1W+1X*1X);o(1i===0){8 w}f=v.u([b.4[0]/1i,b.4[1]/1i,b.4[2]/1i])}7.K=a;7.W=f;8 7}};11.u=l(a,b,c){9 P=25 11();8 P.1Z(a,b,c)};11.2I=11.u(v.1j(3),v.k);11.2H=11.u(v.1j(3),v.i);11.2G=11.u(v.1j(3),v.j);11.36=11.2I;11.35=11.2H;11.3j=11.2G;9 $V=v.u;9 $M=S.u;9 $L=14.u;9 $P=11.u;',62,206,'||||elements|||this|return|var||||||||||||function|||if||length||||create|Vector|null|||||||||Math|nj|while||do|anchor||||||||Matrix||direction||normal||||kj|Plane|ni|abs|Line|ki|precision|Sylvester|A2|push|A3|map|els|else||undefined|typeof|contains|mod|Zero|D3|D2|isParallelTo|kp|distanceFrom|cols|dup|pointClosestTo|np|reflectionIn|modulus|intersects|A1|sqrt|isSquare|X2|PI|X3|angleFrom|mod1|C2|mod2|sin|cos|break|C3|toRightTriangular|false|Y3|to3D|E2|E1|E3|Rotation|Y2|Y1|intersectionWith|rotate|v12|v13|rank|setVectors|nc|sum|multiply|prototype|eql|new|setElements|case|each|PA3|PA2|part|new_element|round|for|cross|product|AD2|isSameSizeAs|add|isPerpendicularTo|v22|AN3|inspect|AD3|AN2|toUnitVector|PsubQ3|PsubQ2|v23|dot|divisor|inverse|true|isSingular|determinant|max|canMultiplyFromLeft|subtract|rows|col|random|ZX|YZ|XY|Random|join|N2|N1|D1|slice|default|N3|dimensions|switch|liesIn|translate|snapTo|augment|Diagonal|trace|indexOf|diagonal|transpose|minor|row|isAntiparallelTo|ZY|YX|acos|RotationZ|RotationY|liesOn|RotationX|inv|rk|tr|det|toDiagonalMatrix|toUpperTriangular|version|XZ'.split('|'),0,{})) \ No newline at end of file diff --git a/application/third_party/dompdf/www/debugger.php b/application/third_party/dompdf/www/debugger.php deleted file mode 100644 index 54417f75..00000000 --- a/application/third_party/dompdf/www/debugger.php +++ /dev/null @@ -1,167 +0,0 @@ -<?php -$files = glob("test/*.{html,htm,php}", GLOB_BRACE); -?> - -<!DOCTYPE html> -<html lang="en"> -<head> - <title>dompdf debugger</title> - <script type="text/javascript" src="jquery-1.4.2.js"></script> - - <script type="text/javascript"> - function updateAddress(){ - var addressbar = $('#addressbar'), - preview = $('#preview'), - preview_html = $('#preview_html'), - address = encodeURI(addressbar.val()), - addressHTML = address, - addressPDF = address, - basePath = ""; - - if ( !/[a-z]+:\/\//.test(address) ) { - addressHTML = "test/"+address+"?"+(new Date).getTime(); - basePath = "www/test/"; - } - - // HTML file - preview_html.attr("src", "about:blank"); - preview_html.attr("src", addressHTML); - - // PDF file - preview.attr("src", "about:blank"); - - setTimeout(function(){ - address = "../dompdf.php?base_path="+basePath+"&options[Attachment]=0&input_file="+addressPDF+"#toolbar=0&view=FitH&statusbar=0&messages=0&navpanes=0"; - preview.attr('src', address); - }, 0.1); - } - - function log(str){ - var console = $("#console"); - str = str || "(nothing)"; - console.html(console.html() + str + "<hr />"); - console.scrollTop(console[0].scrollHeight); - } - - function resizePage(){ - var page = $("#page"); - var height = $(window).height() - page.offset().top - 40; - $("iframe, #console").height(height); - } - - function navigateExamples(way) { - var select = $('#examples')[0], - n = select.options.length; - - if (way == "previous") - select.selectedIndex = (select.selectedIndex - 1) % n; - else - select.selectedIndex = (select.selectedIndex + 1) % n; - - $('#addressbar').val($("#examples").val()); - updateAddress(); - } - - $(function(){ - resizePage(); - $(window).resize(resizePage); - - $('#preview').load(function(){ - if (this.src == "about:blank") return; - - $.ajax({ - url: '../lib/fonts/log.htm', - success: log - }); - }); - - $('#addressbar').val($("#examples").val()); - - // Catch F5 to reload the iframes, not the page itself - $(document).keydown(function(event) { - if (event.which == 116) { - event.preventDefault(); - updateAddress(); - } - }); - }); - </script> - - <style type="text/css"> - html, body { - margin: 0; - padding: 0; - } - - td { - padding: 0; - } - - #page { - width: 100%; - border: none; - border-spacing: 0; - border-collapse: collapse; - } - - iframe { - width: 100%; - } - - #output td { - border: 1px solid #999; - } - - #console-container { - vertical-align: top; - } - - #console { - background: #eee; - overflow: scroll; - padding: 4px; - } - - #console pre { - margin: 2px 0; - } - - #console, #console pre { - font-size: 11px; - font-family: Courier, "Courier new", monospace; - white-space: pre-wrap; - } - </style> -</head> - -<body> - -<table id="page"> - <tr> - <td colspan="3"> - <button onclick="$('#console').html('')" style="float: right;">Reset</button> - - <button onclick="navigateExamples('previous')">&lt;</button> - <select onchange="$('#addressbar').val($(this).val()); updateAddress()" id="examples"> - <?php foreach($files as $file) { ?> - <option value="<?php echo basename($file); ?>"><?php echo basename($file); ?></option> - <?php } ?> - </select> - <button onclick="navigateExamples('next')">&gt;</button> - - <input id="addressbar" type="text" size="100" value="" /> - <button onclick="updateAddress()">Go</button> - </td> - </tr> - <tr id="output"> - <td style="width: 40%;"> - <iframe id="preview_html" name="preview_html" src="about:blank" frameborder="0" marginheight="0" marginwidth="0"></iframe> - </td> - <td style="width: 40%;"> - <iframe id="preview" name="preview" src="about:blank" frameborder="0" marginheight="0" marginwidth="0"></iframe> - </td> - <td style="min-width: 400px; width: 20%;" id="console-container"> - <div id="console"></div> - </td> - </tr> -</table> diff --git a/application/third_party/dompdf/www/demo.php b/application/third_party/dompdf/www/demo.php deleted file mode 100644 index 6d07acc2..00000000 --- a/application/third_party/dompdf/www/demo.php +++ /dev/null @@ -1,84 +0,0 @@ -<?php - -require_once("../dompdf_config.inc.php"); - -// We check wether the user is accessing the demo locally -$local = array("::1", "127.0.0.1"); -$is_local = in_array($_SERVER['REMOTE_ADDR'], $local); - -if ( isset( $_POST["html"] ) && $is_local ) { - - if ( get_magic_quotes_gpc() ) - $_POST["html"] = stripslashes($_POST["html"]); - - $dompdf = new DOMPDF(); - $dompdf->load_html($_POST["html"]); - $dompdf->set_paper($_POST["paper"], $_POST["orientation"]); - $dompdf->render(); - - $dompdf->stream("dompdf_out.pdf", array("Attachment" => false)); - - exit(0); -} - -?> -<?php include("head.inc"); ?> - -<a name="demo"> </a> -<h2>Demo</h2> - -<?php if ($is_local) { ?> - -<p>Enter your html snippet in the text box below to see it rendered as a -PDF: (Note by default, remote stylesheets, images &amp; inline PHP are disabled.)</p> - -<form action="<?php echo $_SERVER["PHP_SELF"];?>" method="post"> -<p>Paper size and orientation: -<select name="paper"> -<?php -foreach ( array_keys(CPDF_Adapter::$PAPER_SIZES) as $size ) - echo "<option ". ($size == "letter" ? "selected " : "" ) . "value=\"$size\">$size</option>\n"; -?> -</select> -<select name="orientation"> - <option value="portrait">portrait</option> - <option value="landscape">landscape</option> -</select> -</p> - -<textarea name="html" cols="60" rows="20"> -&lt;html&gt; -&lt;head&gt; -&lt;style&gt; - -/* Type some style rules here */ - -&lt;/style&gt; -&lt;/head&gt; - -&lt;body&gt; - -&lt;!-- Type some HTML here --&gt; - -&lt;/body&gt; -&lt;/html&gt; -</textarea> - -<div style="text-align: center; margin-top: 1em;"> - <button type="submit">Download</button> -</div> - -</form> -<p style="font-size: 0.65em; text-align: center;">(Note: if you use a KHTML -based browser and are having difficulties loading the sample output, try -saving it to a file first.)</p> - -<?php } else { ?> - - <p style="color: red;"> - User input has been disabled for remote connections. - </p> - -<?php } ?> - -<?php include("foot.inc"); ?> \ No newline at end of file diff --git a/application/third_party/dompdf/www/examples.php b/application/third_party/dompdf/www/examples.php deleted file mode 100644 index 06a541c2..00000000 --- a/application/third_party/dompdf/www/examples.php +++ /dev/null @@ -1,96 +0,0 @@ -<?php - -require_once("../dompdf_config.inc.php"); - -?> -<?php include("head.inc"); ?> - -<script type="text/javascript"> -function resizePreview(){ - var preview = $("#preview"); - preview.height($(window).height() - preview.offset().top - 2); -} - -$(function(){ - var preview = $("#preview"); - resizePreview(); - - $(window).scroll(function() { - var scrollTop = Math.min($(this).scrollTop(), preview.height()+preview.parent().offset().top) - 2; - preview.css("margin-top", scrollTop + "px"); - }); - - $(window).resize(resizePreview); -}); -</script> -<iframe id="preview" name="preview" src="about:blank" frameborder="0" marginheight="0" marginwidth="0"></iframe> - -<a name="samples"> </a> -<h2>Samples</h2> - -<p>Below are some sample files. The PDF version is generated on the fly by dompdf. (The source HTML &amp; CSS for -these files is included in the test/ directory of the distribution -package.)</p> - -<?php - -$extensions = array("html"); -if ( DOMPDF_ENABLE_PHP ) { - $extensions[] = "php"; -} - -$test_files = glob("test/*.{".implode(",", $extensions)."}", GLOB_BRACE); -$sections = array( - "css" => array(), - "dom" => array(), - "image" => array(), - "page" => array(), - "encoding" => array(), - "script" => array(), - "quirks" => array(), - "other" => array(), -); - -//if dompdf.php runs in virtual server root, dirname does not return empty folder but '/' or '\' (windows). -//This leads to a duplicate separator in unix etc. and an error in Windows. Therefore strip off. - -$dompdf = dirname(dirname($_SERVER["PHP_SELF"])); -if ( $dompdf == '/' || $dompdf == '\\') { - $dompdf = ''; -} - -$dompdf .= "/dompdf.php?base_path=" . rawurlencode("www/test/"); - - -foreach ( $test_files as $file ) { - preg_match("@[\\/](([^_]+)_?(.*))\.(".implode("|", $extensions).")$@i", $file, $matches); - $prefix = $matches[2]; - - if ( array_key_exists($prefix, $sections) ) { - $sections[$prefix][] = array($file, $matches[3]); - } - else { - $sections["other"][] = array($file, $matches[1]); - } -} - -foreach ( $sections as $section => $files ) { - echo "<h3>$section</h3>"; - - echo "<ul class=\"samples\">"; - foreach ( $files as $file ) { - $filename = basename($file[0]); - $title = $file[1]; - $arrow = "images/arrow_0" . rand(1, 6) . ".gif"; - echo "<li style=\"list-style-image: url('$arrow');\">\n"; - echo " - [<a class=\"button\" target=\"preview\" href=\"test/$filename\">HTML</a>] - [<a class=\"button\" target=\"preview\" href=\"$dompdf&amp;options[Attachment]=0&amp;input_file=" . rawurlencode($filename) . "#toolbar=0&amp;view=FitH&amp;statusbar=0&amp;messages=0&amp;navpanes=0\">PDF</a>] "; - echo $title; - echo "</li>\n"; - } - echo "</ul>"; -} -?> - -<?php include("foot.inc"); ?> \ No newline at end of file diff --git a/application/third_party/dompdf/www/foot.inc b/application/third_party/dompdf/www/foot.inc deleted file mode 100644 index 81b1819f..00000000 --- a/application/third_party/dompdf/www/foot.inc +++ /dev/null @@ -1,10 +0,0 @@ -</div> - -<div id="footer"> -<div class="badges"> -<a href="http://www.php.net"><img src="images/php5-power-micro.png" alt="php5 logo"/></a> -<a href="http://validator.w3.org"><img src="images/xhtml10.png" alt="valid xhtml"/></a> -<a href="http://jigsaw.w3.org/css-validator"><img src="images/css2.png" alt="valid css2"/></a> -</div> -</div> -</body> </html> diff --git a/application/third_party/dompdf/www/head.inc b/application/third_party/dompdf/www/head.inc deleted file mode 100644 index 8eb0213b..00000000 --- a/application/third_party/dompdf/www/head.inc +++ /dev/null @@ -1,37 +0,0 @@ -<?php -function li_arrow() { - return '<li style="list-style-image: url(\'images/arrow_0' . rand(1,6) . '.gif\');">'; -} -function li_star() { - return '<li style="list-style-image: url(\'images/star_0' . rand(1,5) . '.gif\');">'; -} -?> -<!DOCTYPE html> -<html lang="en"> -<head> - <title>dompdf - The PHP 5 HTML to PDF Converter</title> - <link rel="stylesheet" href="style.css" type="text/css"/> - <link rel="SHORTCUT ICON" href="images/favicon.ico"/> - <script type="text/javascript" src="jquery-1.4.2.js"></script> -</head> - -<body> - -<div id="header" class="bar"> - <a href="index.php"><img id="logo" src="images/title.gif" alt="dompdf"/></a> - <a href="http://www.dompdf.com/" target="_blank">www.dompdf.com</a> - &mdash; - Send bug reports to <a href="http://code.google.com/p/dompdf/issues/list">the bug tracker</a> - &amp; support questions to <a href="http://groups.google.com/group/dompdf">Google Groups</a>. -</div> - -<div id="left_col"> - <ul> - <li style="list-style-image: url('images/star_02.gif');"><a href="index.php">Overview</a></li> - <li style="list-style-image: url('images/star_02.gif');"><a href="examples.php">Examples</a></li> - <li style="list-style-image: url('images/star_02.gif');"><a href="demo.php">Demo</a></li> - <li style="list-style-image: url('images/star_02.gif');"><a href="setup.php">Setup / Config</a></li> - </ul> -</div> - -<div id="content"> \ No newline at end of file diff --git a/application/third_party/dompdf/www/images/arrow_01.gif b/application/third_party/dompdf/www/images/arrow_01.gif deleted file mode 100644 index 0a49fe88..00000000 Binary files a/application/third_party/dompdf/www/images/arrow_01.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/images/arrow_02.gif b/application/third_party/dompdf/www/images/arrow_02.gif deleted file mode 100644 index d5f3c378..00000000 Binary files a/application/third_party/dompdf/www/images/arrow_02.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/images/arrow_03.gif b/application/third_party/dompdf/www/images/arrow_03.gif deleted file mode 100644 index 66ce13e8..00000000 Binary files a/application/third_party/dompdf/www/images/arrow_03.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/images/arrow_04.gif b/application/third_party/dompdf/www/images/arrow_04.gif deleted file mode 100644 index a4898407..00000000 Binary files a/application/third_party/dompdf/www/images/arrow_04.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/images/arrow_05.gif b/application/third_party/dompdf/www/images/arrow_05.gif deleted file mode 100644 index f5a62cf0..00000000 Binary files a/application/third_party/dompdf/www/images/arrow_05.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/images/arrow_06.gif b/application/third_party/dompdf/www/images/arrow_06.gif deleted file mode 100644 index 7ccdf5ce..00000000 Binary files a/application/third_party/dompdf/www/images/arrow_06.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/images/css2.png b/application/third_party/dompdf/www/images/css2.png deleted file mode 100644 index 9fcaead5..00000000 Binary files a/application/third_party/dompdf/www/images/css2.png and /dev/null differ diff --git a/application/third_party/dompdf/www/images/dompdf_simple.png b/application/third_party/dompdf/www/images/dompdf_simple.png deleted file mode 100644 index 1362ba0e..00000000 Binary files a/application/third_party/dompdf/www/images/dompdf_simple.png and /dev/null differ diff --git a/application/third_party/dompdf/www/images/favicon.ico b/application/third_party/dompdf/www/images/favicon.ico deleted file mode 100644 index 4c4c7c29..00000000 Binary files a/application/third_party/dompdf/www/images/favicon.ico and /dev/null differ diff --git a/application/third_party/dompdf/www/images/favicon.png b/application/third_party/dompdf/www/images/favicon.png deleted file mode 100644 index a6de7bdb..00000000 Binary files a/application/third_party/dompdf/www/images/favicon.png and /dev/null differ diff --git a/application/third_party/dompdf/www/images/h_bar.gif b/application/third_party/dompdf/www/images/h_bar.gif deleted file mode 100644 index a55e2f1c..00000000 Binary files a/application/third_party/dompdf/www/images/h_bar.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/images/left_arrow.gif b/application/third_party/dompdf/www/images/left_arrow.gif deleted file mode 100644 index ecfae80f..00000000 Binary files a/application/third_party/dompdf/www/images/left_arrow.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/images/logo.png b/application/third_party/dompdf/www/images/logo.png deleted file mode 100644 index 3fb7ad67..00000000 Binary files a/application/third_party/dompdf/www/images/logo.png and /dev/null differ diff --git a/application/third_party/dompdf/www/images/logo.xcf b/application/third_party/dompdf/www/images/logo.xcf deleted file mode 100644 index f78f35fc..00000000 Binary files a/application/third_party/dompdf/www/images/logo.xcf and /dev/null differ diff --git a/application/third_party/dompdf/www/images/php5-power-micro.png b/application/third_party/dompdf/www/images/php5-power-micro.png deleted file mode 100644 index 19c4953b..00000000 Binary files a/application/third_party/dompdf/www/images/php5-power-micro.png and /dev/null differ diff --git a/application/third_party/dompdf/www/images/small_logo.png b/application/third_party/dompdf/www/images/small_logo.png deleted file mode 100644 index 0b8517dc..00000000 Binary files a/application/third_party/dompdf/www/images/small_logo.png and /dev/null differ diff --git a/application/third_party/dompdf/www/images/star_01.gif b/application/third_party/dompdf/www/images/star_01.gif deleted file mode 100644 index e110f505..00000000 Binary files a/application/third_party/dompdf/www/images/star_01.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/images/star_02.gif b/application/third_party/dompdf/www/images/star_02.gif deleted file mode 100644 index 75de4600..00000000 Binary files a/application/third_party/dompdf/www/images/star_02.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/images/star_03.gif b/application/third_party/dompdf/www/images/star_03.gif deleted file mode 100644 index b3733cd8..00000000 Binary files a/application/third_party/dompdf/www/images/star_03.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/images/star_04.gif b/application/third_party/dompdf/www/images/star_04.gif deleted file mode 100644 index 3735525c..00000000 Binary files a/application/third_party/dompdf/www/images/star_04.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/images/star_05.gif b/application/third_party/dompdf/www/images/star_05.gif deleted file mode 100644 index 4983634d..00000000 Binary files a/application/third_party/dompdf/www/images/star_05.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/images/title.gif b/application/third_party/dompdf/www/images/title.gif deleted file mode 100644 index 9d2574e8..00000000 Binary files a/application/third_party/dompdf/www/images/title.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/images/v_bar.gif b/application/third_party/dompdf/www/images/v_bar.gif deleted file mode 100644 index ccbc3fe3..00000000 Binary files a/application/third_party/dompdf/www/images/v_bar.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/images/xhtml10.png b/application/third_party/dompdf/www/images/xhtml10.png deleted file mode 100644 index 30f1e8e6..00000000 Binary files a/application/third_party/dompdf/www/images/xhtml10.png and /dev/null differ diff --git a/application/third_party/dompdf/www/index.php b/application/third_party/dompdf/www/index.php deleted file mode 100644 index 7e787f33..00000000 --- a/application/third_party/dompdf/www/index.php +++ /dev/null @@ -1,28 +0,0 @@ -<?php include("head.inc"); ?> - -<a name="overview"> </a> -<h2>Overview</h2> - -<p>dompdf is an HTML to PDF converter. At its heart, dompdf is (mostly) -CSS2.1 compliant HTML layout and rendering engine written in PHP. It is -a style-driven renderer: it will download and read external stylesheets, -inline style tags, and the style attributes of individual HTML elements. It -also supports most presentational HTML attributes.</p> - -<p>PDF rendering is currently provided either by PDFLib (<a -href="http://www.pdflib.com">www.pdflib.com</a>) or by a bundled -version the R&amp;OS CPDF class written by Wayne Munro (<a -href="http://www.ros.co.nz/pdf/">www.ros.co.nz/pdf</a>). (Some -performance related changes have been made to the R&amp;OS class, -however). In order to use PDFLib with dompdf, the PDFLib PECL -extension is required. Using PDFLib improves performance and reduces -the memory requirements of dompdf somewhat, while the R&amp;OS CPDF class, -though slightly slower, eliminates any dependencies on external PDF -libraries.</p> - -<p>Please note that dompdf works only with PHP 5. There are no plans for -a PHP 4 port. If your web host does not offer PHP 4, I suggest either pestering -them, or setting up your own PHP 5 box and using it to run dompdf. Your scripts -on your web host can redirect PDF requests to your PHP 5 box.</p> - -<?php include("foot.inc"); ?> diff --git a/application/third_party/dompdf/www/jquery-1.4.2.js b/application/third_party/dompdf/www/jquery-1.4.2.js deleted file mode 100644 index 48a88b8f..00000000 --- a/application/third_party/dompdf/www/jquery-1.4.2.js +++ /dev/null @@ -1,154 +0,0 @@ -/*! - * jQuery JavaScript Library v1.4.2 - * http://jquery.com/ - * - * Copyright 2010, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2010, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Sat Feb 13 22:33:48 2010 -0500 - */ -(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i? -e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r= -j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g, -"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e= -true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, -Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& -(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, -a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== -"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, -function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)|| -c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded", -L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype, -"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+ -a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f], -d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]=== -a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&& -!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari= -true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>"; -var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, -parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= -false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= -s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, -applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; -else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, -a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== -w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, -cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ", -i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ", -" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className= -this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i= -e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= -c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); -a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, -function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); -k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), -C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!= -null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type= -e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&& -f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; -if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "), -fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop|| -d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this, -"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent= -a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y, -isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit= -{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}}; -if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", -e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, -"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a, -d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&& -!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}}, -toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector, -u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "), -function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q]; -if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, -e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); -t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| -g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[]; -for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length- -1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/, -CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}}, -relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]= -l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[]; -h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()}, -CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, -g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)}, -text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}}, -setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= -h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m= -m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== -"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, -h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition|| -!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m= -h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& -q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>"; -if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); -(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: -function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/, -gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length; -c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= -{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a=== -"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode", -d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")? -a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType=== -1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)? -a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= -c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, -wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, -prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, -this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); -return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, -""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&& -this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]|| -u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length=== -1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); -return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", -""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= -c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? -c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= -function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter= -Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a, -"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f= -a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b= -a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== -"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this}, -serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), -function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href, -global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&& -e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)? -"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== -false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= -false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", -c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| -d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); -g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status=== -1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b=== -"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; -if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay"); -this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a], -"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)}, -animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing= -j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]); -this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration=== -"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|| -c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start; -this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now= -this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem, -e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length|| -c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement? -function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b= -this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle; -k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&& -f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>"; -a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); -c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, -d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- -f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": -"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in -e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); \ No newline at end of file diff --git a/application/third_party/dompdf/www/setup.php b/application/third_party/dompdf/www/setup.php deleted file mode 100644 index 6bc64daa..00000000 --- a/application/third_party/dompdf/www/setup.php +++ /dev/null @@ -1,325 +0,0 @@ -<?php include("head.inc"); ?> - -<a name="setup"> </a> -<h2>Setup</h2> - -<h3>System Configuration</h3> - -<?php -require_once("../dompdf_config.inc.php"); - -$server_configs = array( - "PHP Version" => array( - "required" => "5.0", - "value" => phpversion(), - "result" => version_compare(phpversion(), "5.0"), - ), - "DOMDocument extension" => array( - "required" => true, - "value" => phpversion("DOM"), - "result" => class_exists("DOMDocument"), - ), - "PCRE" => array( - "required" => true, - "value" => phpversion("pcre"), - "result" => function_exists("preg_match"), - ), - "Zlib" => array( - "required" => true, - "value" => phpversion("zlib"), - "result" => function_exists("gzcompress"), - "fallback" => "Recommended to compress PDF documents", - ), - "MBString extension" => array( - "required" => true, - "value" => phpversion("mbstring"), - "result" => function_exists("mb_send_mail"), // Should never be reimplemented in dompdf - "fallback" => "Recommended, will use fallback functions", - ), - "GD" => array( - "required" => true, - "value" => phpversion("gd"), - "result" => function_exists("imagecreate"), - "fallback" => "Required if you have images in your documents", - ), - "APC" => array( - "required" => true, - "value" => phpversion("apc"), - "result" => function_exists("apc_fetch"), - "fallback" => "Recommended for better performances", - ), -); - -?> - -<table class="setup"> - <tr> - <th></th> - <th>Required</th> - <th>Present</th> - </tr> - - <?php foreach($server_configs as $label => $server_config) { ?> - <tr> - <td class="title"><?php echo $label; ?></td> - <td><?php echo ($server_config["required"] === true ? "Yes" : $server_config["required"]); ?></td> - <td class="<?php echo ($server_config["result"] ? "ok" : (isset($server_config["fallback"]) ? "warning" : "failed")); ?>"> - <?php - echo $server_config["value"]; - if ($server_config["result"] && !$server_config["value"]) echo "Yes"; - if (!$server_config["result"] && isset($server_config["fallback"])) { - echo "<div>No. ".$server_config["fallback"]."</div>"; - } - ?> - </td> - </tr> - <?php } ?> - -</table> - -<h3>DOMPDF Configuration</h3> - -<?php -$dompdf_constants = array(); -$defined_constants = get_defined_constants(true); - -$constants = array( - "DOMPDF_DIR" => array( - "desc" => "Root directory of DOMPDF", - "success" => "read", - ), - "DOMPDF_INC_DIR" => array( - "desc" => "Include directory of DOMPDF", - "success" => "read", - ), - "DOMPDF_LIB_DIR" => array( - "desc" => "Third-party libraries directory of DOMPDF", - "success" => "read", - ), - "DOMPDF_FONT_DIR" => array( - "desc" => "Additional fonts directory", - "success" => "read", - ), - "DOMPDF_FONT_CACHE" => array( - "desc" => "Font metrics cache", - "success" => "write", - ), - "DOMPDF_TEMP_DIR" => array( - "desc" => "Temporary folder", - "success" => "write", - ), - "DOMPDF_CHROOT" => array( - "desc" => "Restricted path", - "success" => "read", - ), - "DOMPDF_UNICODE_ENABLED" => array( - "desc" => "Unicode support (thanks to additionnal fonts)", - ), - "TTF2AFM" => array( - "desc" => "Path to the ttf2afm executable", - "success" => "read", - ), - "DOMPDF_PDF_BACKEND" => array( - "desc" => "Backend library that makes the outputted file (PDF, image)", - "success" => "backend", - ), - "DOMPDF_DEFAULT_MEDIA_TYPE" => array( - "desc" => "Default media type (print, screen, ...)", - ), - "DOMPDF_DEFAULT_PAPER_SIZE" => array( - "desc" => "Default paper size (A4, letter, ...)", - ), - "DOMPDF_DEFAULT_FONT" => array( - "desc" => "Default font, used if the specified font in the CSS stylesheet was not found", - ), - "DOMPDF_DPI" => array( - "desc" => "DPI scale of the document", - ), - "DOMPDF_ENABLE_PHP" => array( - "desc" => "Inline PHP support", - ), - "DOMPDF_ENABLE_JAVASCRIPT" => array( - "desc" => "Inline JavaScript support", - ), - "DOMPDF_ENABLE_REMOTE" => array( - "desc" => "Allow remote stylesheets and images", - "success" => "remote", - ), - "DEBUGPNG" => array( - "desc" => "Debug PNG images", - ), - "DEBUGKEEPTEMP" => array( - "desc" => "Keep temporary image files", - ), - "DEBUGCSS" => array( - "desc" => "Debug CSS", - ), - "DEBUG_LAYOUT" => array( - "desc" => "Debug layout", - ), - "DEBUG_LAYOUT_LINES" => array( - "desc" => "Debug text lines layout", - ), - "DEBUG_LAYOUT_BLOCKS" => array( - "desc" => "Debug block elements layout", - ), - "DEBUG_LAYOUT_INLINE" => array( - "desc" => "Debug inline elements layout", - ), - "DEBUG_LAYOUT_PADDINGBOX" => array( - "desc" => "Debug padding boxes layout", - ), - "DOMPDF_LOG_OUTPUT_FILE" => array( - "desc" => "The file in which dompdf will write warnings and messages", - "success" => "write", - ), - "DOMPDF_FONT_HEIGHT_RATIO" => array( - "desc" => "The line height ratio to apply to get a render like web browsers", - ), - "DOMPDF_ENABLE_CSS_FLOAT" => array( - "desc" => "Enable CSS float support (experimental)", - ), -); -?> - -<table class="setup"> - <tr> - <th>Config name</th> - <th>Value</th> - <th>Description</th> - <th>Status</th> - </tr> - - <?php foreach($defined_constants["user"] as $const => $value) { ?> - <tr> - <td class="title"><?php echo $const; ?></td> - <td><?php var_export($value); ?></td> - <td><?php if (isset($constants[$const]["desc"])) echo $constants[$const]["desc"]; ?></td> - <td <?php - $message = ""; - if (isset($constants[$const]["success"])) { - switch($constants[$const]["success"]) { - case "read": - $success = is_readable($value); - $message = ($success ? "Readable" : "Not readable"); - break; - case "write": - $success = is_writable($value); - $message = ($success ? "Writable" : "Not writable"); - break; - case "remote": - $success = ini_get("allow_url_fopen"); - $message = ($success ? "allow_url_fopen enabled" : "allow_url_fopen disabled"); - break; - case "backend": - switch (strtolower($value)) { - case "cpdf": - $success = true; - break; - case "pdflib": - $success = function_exists("PDF_begin_document"); - $message = "The PDFLib backend needs the PDF PECL extension"; - break; - case "gd": - $success = function_exists("imagecreate"); - $message = "The GD backend requires GD2"; - break; - } - break; - } - echo 'class="' . ($success ? "ok" : "failed") . '"'; - } - ?>><?php echo $message; ?></td> - </tr> - <?php } ?> - -</table> - -<h3>Installed fonts for the Cpdf Backend</h3> - -<?php -$fonts = Font_Metrics::get_font_families(); -$extensions = array("ttf", "afm", "afm.php", "ufm", "ufm.php"); -?> - -<button onclick="$('#clear-font-cache-message').load('controller.php?cmd=clear-font-cache')">Clear font cache</button> -<span id="clear-font-cache-message"></span> - -<table class="setup"> - <tr> - <th rowspan="2">Font family</th> - <th rowspan="2">Variants</th> - <th colspan="6">File versions</th> - </tr> - <tr> - <th>TTF</th> - <th>AFM</th> - <th>AFM cache</th> - <th>UFM</th> - <th>UFM cache</th> - </tr> - <?php foreach($fonts as $family => $variants) { ?> - <tr> - <td class="title" rowspan="<?php echo count($variants); ?>"> - <?php - echo $family; - if ($family == DOMPDF_DEFAULT_FONT) echo ' <strong>(default)</strong>'; - ?> - </td> - <?php - $i = 0; - foreach($variants as $name => $path) { - if ($i > 0) { - echo "<tr>"; - } - - echo " - <td> - <strong style='width: 10em;'>$name</strong> : $path<br /> - </td>"; - - foreach ($extensions as $ext) { - $v = ""; - $class = ""; - - if (is_readable("$path.$ext")) { - // if not cache file - if (strpos($ext, ".php") === false) { - $class = "ok"; - $v = $ext; - } - - // cache file - else { - // check if old cache format - $content = file_get_contents("$path.$ext", null, null, null, 50); - if (strpos($content, '$this->')) { - $v = "DEPREC."; - } - else { - ob_start(); - $d = include("$path.$ext"); - ob_end_clean(); - - if ($d == 1) - $v = "DEPREC."; - else { - $class = "ok"; - $v = $d["_version_"]; - } - } - } - } - - echo "<td style='width: 2em; text-align: center;' class='$class'>$v</td>"; - } - - echo "</tr>"; - $i++; - } - ?> - <?php } ?> - -</table> - -<?php include("foot.inc"); ?> \ No newline at end of file diff --git a/application/third_party/dompdf/www/style.css b/application/third_party/dompdf/www/style.css deleted file mode 100644 index a86a0468..00000000 --- a/application/third_party/dompdf/www/style.css +++ /dev/null @@ -1,251 +0,0 @@ -body, select { - color: #7d7a7a; - font-family: 'trebuchet ms', verdana, sans-serif; - font-size: 13px; -} - -a:link, a:visited, a:active { - color: #5F83BA; - text-decoration: none; -} - -a:hover { - color: #5f83ba; - text-decoration: underline; -} - -img { - border: none; -} - -pre, -code { - font-size: 0.8em; - font-family: "lucida console", monospace; -} - -pre { - background-color: #f8f8f8; - padding: 10px; -} - -select { - font-weight: bold; -} - -h2 { - margin: 0.3em 0; -} - -.bar { - background-image: url('images/h_bar.gif'); - background-repeat: repeat-x; - background-position: bottom right; -} - -#header { - height: 50px; - line-height: 30px; -} - -#footer { - font-size: 0.75em; - padding-top: 12px; - background-image: url('images/h_bar.gif'); - background-repeat: repeat-x; - background-position: top left; - height: 35px; - vertical-align: middle; - clear: both; -} - -#logo { - position: absolute; - top: 0px; - right: 0px; - border: none; -} - -.badges { - float: right; -} - -#left_col, #content { - vertical-align: top; -} -/* -#left_col { - padding: 3px 3px 2em 3px; - margin-top: 2px; - width: 210px; - padding-right: 10px; - background-image: url('images/v_bar.gif'); - background-repeat: repeat-y; - background-position: top right; -} -*/ - -#left_col { - padding: 3px 3px 3em 3px; - margin-top: 2px; - width: 120px; - padding-right: 10px; - float: left; -} - -#left_col h2 { - font-size: 1.0em; - margin-top: 0.5em; - margin-bottom: 0.25em; -} - -#left_col ul { - margin-top: 0.25em; - padding-left: 0px; - margin-left: 0px; - position: fixed; -} - -#left_col ul li { list-style-position: inside; } - -#left_col iframe { margin-left: 40px; margin-top: 10px; } - -#content { - margin-left: 120px; - padding: 1em 1em 1em 2em; - min-width: 800px; - background-image: url('images/v_bar.gif'); - background-repeat: repeat-y; - background-position: top left; -} - -.message { - margin-top: 1em; - border: 1px dashed #5E83BA; -} - -#content li { - margin-top: 0.3em; - vertical-align: top; -} - -#content>*>li { - margin-right: 40px; /* keep things in line */ -} - -#content h2 { - text-align: left; - color: #4A9166; -} - -#content h3 { - margin-top: 2em; -} - -#content p { - text-align: justify; -} - -#content table td, -#content table th { - padding: 0.3em; -} - -#content table td.input { - white-space: nowrap; - font-family: "lucida console", monospace; - font-size: 0.8em; -} - -#content textarea { - padding: 4px; - width: 100%; - border: 1px dashed #5F83BA; - -moz-box-shadow: inset 3px 3px 3px rgba(0,0,0,0.1); - -webkit-box-shadow: inset 3px 3px 3px rgba(0,0,0,0.1); - box-shadow: inset 3px 3px 3px rgba(0,0,0,0.1); -} - -#content button { - color: #6d6a6a; - font-family: 'trebuchet ms', verdana, sans-serif; -} - -#preview { - float: right; - height: 800px; - min-width: 400px; - width: 60%; - border: 1px solid #666; - margin-left: 1em; - -moz-box-shadow: 0px 0px 6px rgba(0,0,0,0.5); - -webkit-box-shadow: 0px 0px 6px rgba(0,0,0,0.5); - box-shadow: 0px 0px 6px rgba(0,0,0,0.5); -} - -table.setup { - border: 1px solid #ccc; - border-collapse: collapse; -} - -table.setup td, -table.setup th { - border: 1px solid #ccc; -} - -table.setup th { - background-color: #ddd; -} - -table.setup td.title { - background-color: #f6f6f6; -} - -table.setup td.ok, -table.setup tr:hover td.ok { - background-color: #9e4; -} - -table.setup td.failed, -table.setup tr:hover td.failed { - background-color: #f43; - color: white; -} - -table.setup td.warning, -table.setup tr:hover td.warning { - background-color: #FCC612; -} - -table.setup tr:hover td { - background-color: #EBF1F7; -} - -table.setup tr:hover td.title { - background-color: #D0E0F2; -} - -/* Method definitions from phpdoc */ -.method-definition { - background-image: url('images/h_bar.gif'); - background-position: bottom center; - background-repeat: repeat-x; - padding: 10px 10px 20px 10px; - margin-bottom: 1em; -} - -.method-title { - color: #5F83BA; -} - -.var-name, -.method-name, -.method-title { - font-weight: bold; -} - -.var-type, -.method-result { - color: #4A9166; - font-style: italic; -} diff --git a/application/third_party/dompdf/www/test/backgroundcolor_fontdecoration_pageborder.html b/application/third_party/dompdf/www/test/backgroundcolor_fontdecoration_pageborder.html deleted file mode 100644 index 3b8dfd64..00000000 --- a/application/third_party/dompdf/www/test/backgroundcolor_fontdecoration_pageborder.html +++ /dev/null @@ -1,139 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"> -<style> -* { padding: 0; margin: 0; } - -body { - /*color: #7d7a7a;*/ - /*font-family: 'trebuchet ms', verdana, sans-serif;*/ - font-family: sans-serif; -} - -div.page { - margin:10mm; - padding:10mm; - border:0.5pt solid gray; -} -div.bgcolor { - background-color:#e0e0e0; - line-height:170%; -} -</style> -</head> - -<body> -<div class="page"> -<h2><a name="bgimages">Background color, text decoration, page border</a></h2> -<p>see more testcases with background images in <a href="image_variants.html">image_variants.html</a></p> - -<div class="bgcolor"> -</div> - -<p>&nbsp;<p> - -<p style="background:yellow; line-height:170%;">Text</p> -<p><a href="bgimages" style="background:yellow; line-height:170%;">Link</a></p> - -<p>&nbsp;<p> - -<div style="background-color:#e0e0e0;"> -block -<span style="background-color:yellow;">inline</span> -block -_<u style="background-color:yellow;">underline</u><span style="background-color:yellow;">x</span> -block -_<span style="background-color:yellow;text-decoration:underline;">underline style</span><span style="background-color:yellow;">x</span> -block -_<span style="background-color:yellow;text-decoration:line-through;">line-through style</span><span style="background-color:yellow;">x</span> -block -_<span style="background-color:yellow;text-decoration:overline;">overline style</span><span style="background-color:yellow;">x</span> -block -</div> - -<p>&nbsp;<p> - -<div style="font-size:200%; background-color:#e0e0e0;"> -block -<span style="background-color:yellow;">inline</span> -block -_<u style="background-color:yellow;">underline</u><span style="background-color:yellow;">x</span> -block -_<span style="background-color:yellow;text-decoration:underline;">underline style</span><span style="background-color:yellow;">x</span> -block -_<span style="background-color:yellow;text-decoration:line-through;">line-through style</span><span style="background-color:yellow;">x</span> -block -_<span style="background-color:yellow;text-decoration:overline;">overline style</span><span style="background-color:yellow;">x</span> -block -</div> - -<p>&nbsp;<p> - -<div style="font-family:times; background-color:#e0e0e0;"> -block -<span style="background-color:yellow;">inline</span> -block -_<u style="background-color:yellow;">underline</u><span style="background-color:yellow;">x</span> -block -_<span style="background-color:yellow;text-decoration:underline;">underline style</span><span style="background-color:yellow;">x</span> -block -_<span style="background-color:yellow;text-decoration:line-through;">line-through style</span><span style="background-color:yellow;">x</span> -block -_<span style="background-color:yellow;text-decoration:overline;">overline style</span><span style="background-color:yellow;">x</span> -block -</div> - -<p>&nbsp;<p> - -<div style="font-family:times; font-size:200%; background-color:#e0e0e0;"> -block -<span style="background-color:yellow;">inline</span> -block -_<u style="background-color:yellow;">underline</u><span style="background-color:yellow;">x</span> -block -_<span style="background-color:yellow;text-decoration:underline;">underline style</span><span style="background-color:yellow;">x</span> -block -_<span style="background-color:yellow;text-decoration:line-through;">line-through style</span><span style="background-color:yellow;">x</span> -block -_<span style="background-color:yellow;text-decoration:overline;">overline style</span><span style="background-color:yellow;">x</span> -block -</div> -<p>&nbsp;<p> - -<div style="background-color:#e0e0e0;"> -block -<span style="background-color:yellow;">inline</span> -<span style="background-color:yellow;text-decoration:underline;"> -underline sdfjsfh sdfs sfd sf sf sdfsdfasf asdfasdfa asdfasdf asdf asdfas dfasdf afsafasf asdfasdasdf adfasfasdf -</span> -block -</div> - -<p>&nbsp;<p> - -<div style="background-color:#e0e0e0;font-family:serif;"> -block -<span style="background-color:yellow;">inline</span> -block -<u style="background-color:yellow;">underline</u> -block -<span style="background-color:yellow;text-decoration:underline;">underline style</span> -block -</div> - -<p>&nbsp;<p> - -<p> -<span>The PHP 5 HTML to PDF converter</span> -</p> - -<p>Fill fill fill fill fill fill fill fill</p> -<p>Fill fill fill fill fill fill fill fill</p> -<p>Fill fill fill fill fill fill fill fill</p> -<p>Fill fill fill fill fill fill fill fill</p> -<p>Fill fill fill fill fill fill fill fill</p> -<p>Fill fill fill fill fill fill fill fill</p> -<p>Fill fill fill fill fill fill fill fill</p> -<div> -</body> </html> diff --git a/application/third_party/dompdf/www/test/css/common.css b/application/third_party/dompdf/www/test/css/common.css deleted file mode 100644 index eb8c732b..00000000 --- a/application/third_party/dompdf/www/test/css/common.css +++ /dev/null @@ -1,128 +0,0 @@ -/* Notes ------------------------------------------------------------------------*/ -.note_form { - display: none; -} - - -/* Page ------------------------------------------------------------------------*/ -.page { - background-color: white; - padding: 20px; - font-size: 0.7em; - margin-bottom: 15px; - margin-right: 5px; -} - -.page table.header td h1 { - margin: 0px; -} - -.page table.header { - border-bottom: 1px solid black; -} - -.page h1 { - text-align: center; - color: black; - font-style: normal; - font-size: 2em; -} - -.page h2 { - text-align: center; - color: black; -} - -.page h3 { - color: black; - font-size: 1em; -} - -.page p { - text-align: justify; - font-size: 1em; -} - -.page em { - font-weight: bold; - font-style: normal; - text-decoration: underline; - margin-left: 1%; - margin-right: 1%; - -} - -.money_table { - width: 85%; - margin-left: auto; - margin-right: auto; -} - -.money { - text-align: right; - padding-right: 20px; -} - -.money_field { - text-align: right; - padding: 0px 15px 5px 15px; - font-weight: bold; -} - -.total_label { - border-top: 2px double black; - font-weight: bold; -} - -.total_field { - border-top: 2px double black; - text-align: right; - padding: 0px 15px 5px 15px; - font-weight: bold; -} - -.written_field { - border-bottom: 0.1pt solid black; -} - -.page .indent * { margin-left: 4em; } - -.checkbox { - border: 1px solid black; - padding: 1px 2px; - font-size: 7px; - font-weight: bold; -} - -table.fax_head { - width: 100%; - font-weight: bold; - font-size: 1.1em; - border-bottom: 1px solid black; -} - -/* Sales-agreement specific ------------------------------------------------------------------------*/ -table.sa_signature_box { - margin: 2em auto 2em auto; -} - -table.sa_signature_box tr td { - padding-top: 1.5em; - vertical-align: top; - white-space: nowrap; -} - -.special_conditions { - font-style: italic; - margin-left: 2em; - white-space: pre; - font-weight: bold; -} - -.page h2 { - text-align: left; -} - diff --git a/application/third_party/dompdf/www/test/css/importabs.css b/application/third_party/dompdf/www/test/css/importabs.css deleted file mode 100644 index d6cbfb9c..00000000 --- a/application/third_party/dompdf/www/test/css/importabs.css +++ /dev/null @@ -1,2 +0,0 @@ -p.importabs {background-color:#ffffc0;} - diff --git a/application/third_party/dompdf/www/test/css/importall.css b/application/third_party/dompdf/www/test/css/importall.css deleted file mode 100644 index 89f4379b..00000000 --- a/application/third_party/dompdf/www/test/css/importall.css +++ /dev/null @@ -1,2 +0,0 @@ -li.import {background-color:#ffffc0;} - diff --git a/application/third_party/dompdf/www/test/css/importdisplay.css b/application/third_party/dompdf/www/test/css/importdisplay.css deleted file mode 100644 index 7610d901..00000000 --- a/application/third_party/dompdf/www/test/css/importdisplay.css +++ /dev/null @@ -1,2 +0,0 @@ -p.import {background-color:#c0c0ff;} - diff --git a/application/third_party/dompdf/www/test/css/importprint.css b/application/third_party/dompdf/www/test/css/importprint.css deleted file mode 100644 index cc9e8c5f..00000000 --- a/application/third_party/dompdf/www/test/css/importprint.css +++ /dev/null @@ -1,2 +0,0 @@ -p.import {background-color:#eeeeee;} - diff --git a/application/third_party/dompdf/www/test/css/importsub.css b/application/third_party/dompdf/www/test/css/importsub.css deleted file mode 100644 index 96b5338f..00000000 --- a/application/third_party/dompdf/www/test/css/importsub.css +++ /dev/null @@ -1,2 +0,0 @@ -p.importsub {background-color:#ffffc0;} - diff --git a/application/third_party/dompdf/www/test/css/linkall.css b/application/third_party/dompdf/www/test/css/linkall.css deleted file mode 100644 index d3668cfc..00000000 --- a/application/third_party/dompdf/www/test/css/linkall.css +++ /dev/null @@ -1,2 +0,0 @@ -li.link {background-color:#ffffc0;} - diff --git a/application/third_party/dompdf/www/test/css/linkdefault.css b/application/third_party/dompdf/www/test/css/linkdefault.css deleted file mode 100644 index 06115010..00000000 --- a/application/third_party/dompdf/www/test/css/linkdefault.css +++ /dev/null @@ -1,2 +0,0 @@ -li.link {color:#ff0000;} - diff --git a/application/third_party/dompdf/www/test/css/linkdisplay.css b/application/third_party/dompdf/www/test/css/linkdisplay.css deleted file mode 100644 index 77f3d191..00000000 --- a/application/third_party/dompdf/www/test/css/linkdisplay.css +++ /dev/null @@ -1,2 +0,0 @@ -p.link {background-color:#c0c0ff;} - diff --git a/application/third_party/dompdf/www/test/css/linkprint.css b/application/third_party/dompdf/www/test/css/linkprint.css deleted file mode 100644 index dd3f3ca5..00000000 --- a/application/third_party/dompdf/www/test/css/linkprint.css +++ /dev/null @@ -1,2 +0,0 @@ -p.link {background-color:#eeeeee;} - diff --git a/application/third_party/dompdf/www/test/css/print_static.css b/application/third_party/dompdf/www/test/css/print_static.css deleted file mode 100644 index 2acd05d6..00000000 --- a/application/third_party/dompdf/www/test/css/print_static.css +++ /dev/null @@ -1,701 +0,0 @@ -/* Default style definitions */ - -@import url(common.css); - -@page { - margin: 0.25in; -} - -/* General ------------------------------------------------------------------------*/ -body { - background-color: transparent; - color: black; - font-family: "verdana", "sans-serif"; - margin: 0px; - padding-top: 0px; - font-size: 1em; -} - -@media print { - p { margin: 2px; } -} - -h1 { - font-size: 1.1em; - font-style: italic; -} - -h2 { - font-size: 1.05em; -} - -img { - border: none; -} - -pre { - font-family: "verdana", "sans-serif"; - font-size: 0.7em; -} - -ul { - list-style-type: circle; - list-style-position: inside; - margin: 0px; - padding: 3px; -} - -li.alpha { - list-style-type: lower-alpha; - margin-left: 15px; -} - -p { - font-size: 0.8em; -} - -a:link, -a:visited { - /* font-weight: bold; */ - text-decoration: none; - color: black; -} - -a:hover { - text-decoration: underline; -} - -#body { - padding-bottom: 2em; - padding-top: 5px; -} - -#body pre { -} - -.center { - text-align: center; -} - -.right { - text-align: right; -} - -#money { - text-align: right; - padding-right: 20px; -} - -/* Footer ------------------------------------------------------------------------*/ -#footer { - color: black; -} - -#copyright { - padding: 5px; - font-size: 0.6em; - background-color: white; -} - -#footer_spacer_row { - width: 100%; -} - -#footer_spacer_row td { - padding: 0px; - border-bottom: 1px solid #000033; - background-color: #F7CF07; - height: 2px; - font-size: 2px; - line-height: 2px; -} - -#logos { - padding: 5px; - float: right; -} - -/* Section Header ------------------------------------------------------------------------*/ -#section_header { - text-align: center; -} - -#job_header { - text-align: left; - background-color: white; - margin-left: 5px; - padding: 5px; - border: 1px dashed black; -} - -#job_info { - font-weight: bold; -} - -.header_details td { - font-size: 0.6em; -} - -.header_label { - padding-left: 20px; -} - -.header_field { - padding-left: 5px; - font-weight: bold; -} - -/* Content ------------------------------------------------------------------------*/ -#content { - padding: 0.2em 1% 0.2em 1%; - min-height: 15em; -} - -.page_buttons { - text-align: center; - margin: 3px; - font-size: 0.7em; - white-space: nowrap; - font-weight: bold; - width: 74%; -} - -.link_bar { - font-size: 0.7em; - text-align: center; - margin: auto; -/* white-space: nowrap; */ -} - -.link_bar a { - white-space: nowrap; - font-weight: bold; -} - -.page_menu li { - margin: 5px; - font-size: 0.8em; -} - -/* Detail ------------------------------------------------------------------------*/ -.detail_table { - border-top: 1px solid black; - border-bottom: 1px solid black; - padding: 3px; - margin: 15px; -} - -.detail_head td { - background-color: #ddd; - color: black; - font-weight: bold; - padding: 3px; - font-size: 0.75em; - text-align: center; -} - -.detail_label { - padding: 3px; - font-size: 0.75em; - width: 16%; - border-top: 1px solid #fff; - border-bottom: 1px solid #fff; - background-color: #ddd; -} - -.detail_field { - width: 33%; - font-size: 0.8em; - color: ; - text-align: center; - padding: 3px; -} - -.detail_sub_table { - font-size: 1em; -} - -.detail_spacer_row td { - border-top: 1px solid white; - border-bottom: 1px solid white; - background-color: #999; - font-size: 2px; - line-height: 2px; -} - -#narrow { - width: 50%; -} - -.operation { - width: 1%; -} - -.summary_spacer_row { - font-size: 0.1em; -} - -.bar { - border-top: 1px solid black; -} - -/* Forms ------------------------------------------------------------------------*/ -.form { - border-top: 1px solid black; - border-bottom: 1px solid black; - margin-top: 10px; -} - -.form td { - padding: 3px; -} - -.form th, .form_head td { - background-color: #ddd - border-bottom: 1px solid black; - color: black; - padding: 3px; - text-align: center; - font-size: 0.65em; - font-weight: bold; -} - -.form_head a:link, -.form_head a:visited { - color: black; -} - -.form_head a:hover { -} - -.sub_form_head td { - border: none; - font-size: 0.9em; - white-space: nowrap; -} - -.form input { - color: black; - background-color: white; - border: 1px solid black; - padding: 1px 2px 1px 2px; - text-decoration: none; - font-size: 1em; -} - -.form textarea { - color: black; - background-color: white; - border: 1px solid black; - font-size: 1em; -} - -.form select { - color: black; - background-color: white; - font-size: 1em; -} - -.button, a.button { - color: black; - background-color: white; - border: 1px solid black; - font-weight: normal; - white-space: nowrap; - text-decoration: none; -} - -a.button { - display: inline-block; - text-align: center; - padding: 2px; -} - -a.button:hover { - text-decoration: none; - color: black; -} - -.form_field { - color: black; - background-color: white; - font-size: 0.7em; -} - -.form_label { - color: black; - background-color: #ddd; - font-size: 0.7em; - padding: 3px; -} - -/* -.form_foot { - background-color: #E5D9C3; - font-size: 0.6em; -} -*/ - -.form_foot td { - background-color: #ddd - border-bottom: 1px solid black; - color: black; - padding: 3px; - text-align: center; - font-size: 0.65em; - font-weight: bold; -} - -.form_foot a:link, -.form_foot a:visited { - color: black; -} - -.form_foot a:hover { - color: black; -} - -.no_border_input input { - border: none; -} - -.no_wrap { - white-space: nowrap; -} - -tr.row_form td { - white-space: nowrap; -} - -/* Wizards ------------------------------------------------------------------------*/ -.wizard { - font-size: 0.8em; - border-top: 1px solid black; -} - -#no_border { - border: none; -} - -.wizard p { - text-indent: 2%; -} - -.wizard td { - padding: 3px; -/* padding-left: 3px; - padding-right: 3px; - padding-bottom: 3px;*/ -} - -.wizard input { - color: black; - background-color: white; - border: 1px solid black; - padding: 1px 2px 1px 2px; - text-decoration: none; -} - -.wizard textarea { - color: black; - background-color: white; - border: 1px solid black; -} - -.wizard select { - color: black; - background-color: white; - border: 1px solid black; -} - -.wizard_head { - color: black; - font-weight: bold; -} - -.wizard_buttons { - border-top: 1px solid black; - padding-top: 3px; -} - -.wizard_buttons a { - background-color: white; - border: 1px solid black; - padding: 2px 3px 2px 3px; -} - -/* List ------------------------------------------------------------------------*/ -.list_table, -.notif_list_table { - color: black; - padding-bottom: 4px; - background-color: white; -} - -.list_table td, -.notif_list_table td { - padding: 3px 5px 3px 5px; -} - -.list_table input { - color: black; - background-color: white; - border: 1px solid black; - padding: 1px 2px 1px 2px; - text-decoration: none; -} - -.list_head, -.notif_list_head { - font-weight: bold; - background-color: #ddd; - font-size: 0.65em; -} - -.list_head td, -.notif_list_head td { - border-top: 1px solid black; - border-bottom: 1px solid black; - color: black; - text-align: center; - white-space: nowrap; -} - -.list_head a:link, -.list_head a:visited, -.notif_list_head a:link, -.notif_list_head a:visited { - color: black; -} - -.list_head a:hover, -.notif_list_head a:hover { -} - -.list_foot { - font-weight: bold; - background-color: #ddd; - font-size: 0.65em; -} - -.list_foot td { - border-top: 1px solid black; - border-bottom: 1px solid black; - color: black; - text-align: right; - white-space: nowrap; -} - -.sub_list_head td { - border: none; - font-size: 0.7em; -} - -.odd_row td { -/* background-color: #EDF2F7; - border-top: 2px solid #FFFFff;*/ - background-color: transparent; - border-bottom: 0.9px solid #ddd; /* 0.9 so table borders take precedence */ -} - -.even_row td { -/* background-color: #F8EEE4; - border-top: 3px solid #FFFFff;*/ - background-color: #f6f6f6; - border-bottom: 0.9px solid #ddd; -} - -.spacer_row td { - line-height: 2px; - font-size: 2px; -} - -.phone_table td { - border: none; - font-size: 0.8em; -} - -div.notif_list_text { - margin-bottom: 1px; - font-size: 1.1em; -} - -.notif_list_row td.notif_list_job { - text-align: center; - font-weight: bold; - font-size: 0.65em; -} - -.notif_list_row td.notif_list_dismiss table td { - text-align: center; - font-size: 1em; - border: none; - padding: 0px 2px 0px 2px; -} - -.notif_list_row td { - padding: 5px 5px 7px 5px; - border-bottom: 1px dotted #ddd; - background-color: white; - font-size: 0.6em; -} - -.notif_list_row:hover td { - background-color: #ddd; -} - -/* Page ------------------------------------------------------------------------*/ -.page { - border: none; - padding: 0in; - margin-right: 0.1in; - margin-left: 0.1in; - /*margin: 0.33in 0.33in 0.4in 0.33in; */ - background-color: transparent; -} - -.page table.header h1{ - font-size: 12pt; -} - -.page>h2, -.page>p { - margin-top: 2pt; - margin-bottom: 2pt; -} - -.page h2 { - page-break-after: avoid; -} - -.money_table { - border-collapse: collapse; - font-size: 6pt; -} - -/* Tree ------------------------------------------------------------------------*/ -.tree_div { - display: none; - background-color: #ddd; - border: 1px solid #333; -} - -.tree_div .tree_step_bottom_border { - border-bottom: 1px dashed #8B9DBE; -} - -.tree_div .button, .tree_row_table .button, -.tree_div .no_button { - width: 110px; - font-size: 0.7em; - padding: 3px; - text-align: center; -} - -/* -.tree_div .button a, .tree_row_table .button a { - text-decoration: none; - color: #114C8D; -} -*/ - -.tree_row_desc { - font-weight: bold; - font-size: 0.7em; - text-indent: -10px; -} - -.tree_row_info { - font-size: 0.7em; - width: 200px; -} - -.tree_div_head a, -.tree_row_desc a { - color: #000033; - text-decoration: none; -} - -.tree_div_head { - font-weight: bold; - font-size: 0.7em; -} - -/* Summaries ------------------------------------------------------------------------*/ -.summary { - border: 1px solid black; - background-color: white; - padding: 1%; - font-size: 0.8em; -} - -.summary h1 { - color: black; - font-style: normal; -} - -/* Sales-agreement specific ------------------------------------------------------------------------*/ -table.sa_signature_box { - margin: 2em auto 2em auto; -} - -table.sa_signature_box tr td { - padding-top: 1.25em; - vertical-align: top; - white-space: nowrap; -} - -.special_conditions { - font-style: italic; - margin-left: 2em; - white-space: pre; -} - -.sa_head * { - font-size: 7pt; -} - -/* Change order specific ------------------------------------------------------------------------*/ -table.change_order_items { - font-size: 8pt; - width: 100%; - border-collapse: collapse; - margin-top: 2em; - margin-bottom: 2em; -} - -table.change_order_items>tbody { - border: 1px solid black; -} - -table.change_order_items>tbody>tr>th { - border-bottom: 1px solid black; -} - -table.change_order_items>tbody>tr>td { - border-right: 1px solid black; - padding: 0.5em; -} - -td.change_order_total_col { - padding-right: 4pt; - text-align: right; -} - -td.change_order_unit_col { - padding-left: 2pt; - text-align: left; -} \ No newline at end of file diff --git a/application/third_party/dompdf/www/test/css_2d_transforms.html b/application/third_party/dompdf/www/test/css_2d_transforms.html deleted file mode 100644 index c0820cbe..00000000 --- a/application/third_party/dompdf/www/test/css_2d_transforms.html +++ /dev/null @@ -1,87 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head> -<title></title> - - -<style> - body { - font-family: sans-serif; - font-size: 11px; - } - div.transformed { - border: 1px solid red; - -webkit-transform-origin: 50% 50%; - -moz-transform-origin: 50% 50%; - -ms-transform-origin: 50% 50%; - } - div.transformed:after { - content: attr(style); - } - - div.grid { - border: 1px dotted grey; - margin: 0; - padding: 1em; - margin-bottom: -1px; - } -</style> - -<!--[if IE]> -<script type="text/javascript" src="../cssSandpaper/js/EventHelpers.js"></script> -<script type="text/javascript" src="../cssSandpaper/js/cssQuery-p.js"></script> -<script type="text/javascript" src="../cssSandpaper/js/jcoglan.com/sylvester.js"></script> -<script type="text/javascript" src="../cssSandpaper/js/cssSandpaper.js"></script> - -<script type="text/javascript"> - if (!document.documentMode || document.documentMode < 9) - - window.onload = function(){ - var nodes = document.querySelectorAll("*[style]"); - - for (var i = 0; i < nodes.length; i++) { - var style = nodes[i].getAttribute("style"); - var trans = /-ms-transform\s*:\s*([^;]+)/i.exec(style); - - try { - if (trans && trans[1] !== "none") { - cssSandpaper.setTransform(nodes[i], trans[1]); - } - } catch(e) {} - } - } -</script> -<![endif]--> - -</head> -<body> - -<h3>none</h3> -<div class="grid"><div class="transformed" style="-webkit-transform: none; -moz-transform: none; -ms-transform: none;">&nbsp; </div></div> - -<h3>rotate</h3> -<div class="grid"><div class="transformed" style="-webkit-transform: rotate(0.1rad); -moz-transform: rotate(0.1rad); -ms-transform: rotate(0.1rad);">&nbsp; </div></div> - -<h3>scale</h3> -<div class="grid"><div class="transformed" style="-webkit-transform: scale(0.5, 1.5); -moz-transform: scale(0.5, 1.5); -ms-transform: scale(0.5, 1.5);">&nbsp; </div></div> -<div class="grid"><div class="transformed" style="-webkit-transform: scale(0.5); -moz-transform: scale(0.5); -ms-transform: scale(0.5);">&nbsp; </div></div> -<div class="grid"><div class="transformed" style="-webkit-transform: scaleX(0.5); -moz-transform: scaleX(0.5); -ms-transform: scaleX(0.5);">&nbsp; </div></div> -<div class="grid"><div class="transformed" style="-webkit-transform: scaleY(0.5); -moz-transform: scaleY(0.5); -ms-transform: scaleY(0.5);">&nbsp; </div></div> - -<h3>translate</h3> -<div class="grid"><div class="transformed" style="-webkit-transform: translate(10px, 10px); -moz-transform: translate(10px, 10px); -ms-transform: translate(10px, 10px);">&nbsp; </div></div> -<div class="grid"><div class="transformed" style="-webkit-transform: translate(20px); -moz-transform: translate(20px); -ms-transform: translate(20px);">&nbsp; </div></div> -<div class="grid"><div class="transformed" style="-webkit-transform: translateX(20%); -moz-transform: translateX(20%); -ms-transform: translateX(20%);">&nbsp; </div></div> -<div class="grid"><div class="transformed" style="-webkit-transform: translateY(30%); -moz-transform: translateY(30%); -ms-transform: translateY(30%);">&nbsp; </div></div> - -<h3>skew</h3> -<div class="grid"><div class="transformed" style="-webkit-transform: skew(30deg, -4deg); -moz-transform: skew(30deg, -4deg); -ms-transform: skew(30deg, -4deg);">&nbsp; </div></div> -<div class="grid"><div class="transformed" style="-webkit-transform: skew(-4deg); -moz-transform: skew(-4deg); -ms-transform: skew(-4deg);">&nbsp; </div></div> -<div class="grid"><div class="transformed" style="-webkit-transform: skewX(20deg); -moz-transform: skewX(20deg); -ms-transform: skewX(20deg);">&nbsp; </div></div> -<div class="grid"><div class="transformed" style="-webkit-transform: skewY(-4deg); -moz-transform: skewY(-4deg); -ms-transform: skewY(-4deg);">&nbsp; </div></div> - -<h3>mixed</h3> -<div class="grid"><div class="transformed" style="-webkit-transform: rotate(10deg) scale(0.5, 1.5); -moz-transform: rotate(10deg) scale(0.5, 1.5); -ms-transform: rotate(10deg) scale(0.5, 1.5);">&nbsp; </div></div> - -</body> -</html> diff --git a/application/third_party/dompdf/www/test/css_baseline.html b/application/third_party/dompdf/www/test/css_baseline.html deleted file mode 100644 index 198260ad..00000000 --- a/application/third_party/dompdf/www/test/css_baseline.html +++ /dev/null @@ -1,16 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head> -<title></title> -</head> -<body style='text-decoration: underline;'> - -<span style="font-size: 30px;">(enter </span><span style="font-family: -Arial; font-size: 12px; font-weight: bold; color: rgb(255, 66, 0); -font-style: italic;">your </span><span style="font-size: 20px; -font-weight: bold; color: rgb(255, 66, 0); font-style: -italic;">text</span><span style="font-family: Arial; font-size: -12px;"> here)</span> - -</body> -</html> diff --git a/application/third_party/dompdf/www/test/css_block_height.html b/application/third_party/dompdf/www/test/css_block_height.html deleted file mode 100644 index c42ba0c1..00000000 --- a/application/third_party/dompdf/www/test/css_block_height.html +++ /dev/null @@ -1,14 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<title></title> -</head> -<body> - -<div style="height: 100%; width: 30%; background-color: #D3D7D8"> -&nbsp; -</div> - -</body> -</html> diff --git a/application/third_party/dompdf/www/test/css_border.html b/application/third_party/dompdf/www/test/css_border.html deleted file mode 100644 index f793c677..00000000 --- a/application/third_party/dompdf/www/test/css_border.html +++ /dev/null @@ -1,124 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"> -<style> -table { - border-spacing: 5px; - margin: 2em auto; -} -td { - border-width: 5px; - padding: 1em; -} - -td.dotted { border-style: dotted; color: maroon;} -td.dashed { border-style: dashed; color: orange; } -td.solid { border-style: solid; color: yellow; } -td.double { border-style: double; color: olive; } -td.groove { border-style: groove; color: green; } -td.ridge { border-style: ridge; color: lime; } -td.inset { border-style: inset; color: teal; } -td.outset { border-style: outset; color: blue; } - -div.full { border:thin blue solid; margin:2pt;} - -div.partialthinsolid, -div.partial1, -div.partial2 { border:thin solid; margin:2pt;} - -div.partial1 { border-color:green; } -div.partial2 { border:blue;} - -div.partial3 { border-style:dashed; } -div.partial4 { border-width:thick; } -div.partial5 { border-width:medium; } -div.partial6 { border-width:3pt; } - -div.partial1top, -div.partial2top { border-top:thin solid; margin:2pt;} - -div.partial1top {border-top-color:green; } -div.partial2top {border-top:blue;} - - -</style> -</head> - -<body> -<table> - <tr> - <td class="dotted">dotted</td> - <td class="dashed">dashed</td> - <td class="solid">solid</td> - <td class="double">double</td> - </tr> - <tr> - <td class="groove">groove</td> - <td class="ridge">ridge</td> - <td class="inset">inset</td> - <td class="outset">outset</td> - </tr> -</table> - -<h2>partial attributes merged</h2> - -<div style="border:thin solid red;">border:thin solid red;</div> -<div style="border:red thin solid;">border:red thin solid;</div> -<div class="partialthinsolid partial2">{ border:thin solid; }{border:blue; } (merged, reset all - color has no effect)</div> -<div class="partialthinsolid partial1">{ border:thin solid; }{border-color:green; } (merged, overwrite only color)</div> -<div class="partial2">{ border:thin solid; }{border:blue; } (merged, reset all - color has no effect)</div> -<div class="partial1">{ border:thin solid; }{border-color:green; } (merged, overwrite only color)</div> -<div class="full partial1">{ border:thin blue solid; }{border-color:green; } (merged, overwrite only color)</div> -<div class="full partial3">{ border:thin blue solid; }{border-style:dashed; } (merged, overwrite only style)</div> -<div class="full partial4">{ border:thin blue solid; }{border-width:thick; } (merged, overwrite only width)</div> -<div class="full partial5">{ border:thin blue solid; }{border-width:medium; } (merged, overwrite only width)</div> -<div class="full partial6">{ border:thin blue solid; }{border-width:3pt; } (merged, overwrite only width)</div> - -<h2>top:</h2> - -<div style="border-top:thin solid red;">border-top:thin solid red;</div> -<div style="border-top:red thin solid;">border-top:red thin solid;</div> -<div class="partial1top">{ border-top:thin solid; }{border-top-color:green; } (merged, overwrite only color)</div> -<div class="partial2top">{ border-top:thin solid; }{border-top:blue; } (merged, reset all - color has no effect)</div> - -<h2>right left bottom:</h2> - -<div style="border-right:thin solid red;">border-right:thin solid red;</div> -<div style="border-left:thin solid red;">border-left:thin solid red;</div> -<div style="border-bottom:thin solid red;">border-bottom:thin solid red;</div> - -<h2>Individual Attributes</h2> -<div class="full" style="border-top-color:red;">{border:thin blue solid;}{border-top-color:red;}</div> -<div class="full" style="border-right-color:red;">{border:thin blue solid;}{border-right-color:red;}</div> -<div class="full" style="border-bottom-color:red;">{border:thin blue solid;}{border-bottom-color:red;}</div> -<div class="full" style="border-left-color:red;">{border:thin blue solid;}{border-left-color:red;}</div> - -<div class="full" style="border-top-style:dashed;">{border:thin blue solid;}{border-top-style:dashed;}</div> -<div class="full" style="border-right-style:dashed;">{border:thin blue solid;}{border-right-style:dashed;}</div> -<div class="full" style="border-bottom-style:dashed;">{border:thin blue solid;}{border-bottom-style:dashed;}</div> -<div class="full" style="border-left-style:dashed;">{border:thin blue solid;}{border-left-style:dashed;}</div> - -<div class="full" style="border-top-width:medium;">{border:thin blue solid;}{border-top-width:medium;}</div> -<div class="full" style="border-right-width:medium;">{border:thin blue solid;}{border-right-width:medium;}</div> -<div class="full" style="border-bottom-width:medium;">{border:thin blue solid;}{border-bottom-width:medium;}</div> -<div class="full" style="border-left-width:medium;">{border:thin blue solid;}{border-left-width:medium;}</div> - -<h2>Individual side specific Attributes</h2> - -<div class="full" style="border-color:red;">{border:thin blue solid;}{border-color:red;}</div> -<div class="full" style="border-color:red green;">{border:thin blue solid;}{border-color:red green;}</div> -<div class="full" style="border-color:red green blue;">{border:thin blue solid;}{border-color:red green blue;}</div> -<div class="full" style="border-color:red green blue gray;">{border:thin blue solid;}{border-color:red green blue gray;}</div> - -<div class="full" style="border-style:dashed;">{border:thin blue solid;}{border-style:dashed;}</div> -<div class="full" style="border-style:dashed dotted;">{border:thin blue solid;}{border-style:dashed dotted;}</div> -<div class="full" style="border-style:dashed dotted double;">{border:thin blue solid;}{border-style:dashed dotted double;}</div> -<div class="full" style="border-style:dashed dotted double groove;">{border:thin blue solid;}{border-style:dashed dotted double groove;}</div> - -<div class="full" style="border-width:1pt;">{border:thin blue solid;}{border-width:1pt;}</div> -<div class="full" style="border-width:1pt 2pt;">{border:thin blue solid;}{border-width:1pt 2pt;}</div> -<div class="full" style="border-width:1pt 2pt 3pt;">{border:thin blue solid;}{border-width:1pt 2pt 3pt;}</div> -<div class="full" style="border-width:1pt 2pt 3pt 4pt;">{border:thin blue solid;}{border-width:1pt 2pt 3pt 4pt;}</div> - -</body> </html> diff --git a/application/third_party/dompdf/www/test/css_border_values.html b/application/third_party/dompdf/www/test/css_border_values.html deleted file mode 100644 index 99a6c6b6..00000000 --- a/application/third_party/dompdf/www/test/css_border_values.html +++ /dev/null @@ -1,41 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<style> -.d { width: 1in; height: 1in; margin: 5pt; } - -.b1 { - border: 1px solid red; -} - -.b2 { - border: solid thick blue; -} - -.b3 { - border: #369 thin dashed; -} - -.b4 { - border: dotted green 2px; -} - -.b5 { - border: 0.1em #0033DD solid; -} - -.b6 { - border: orange inset 4pt; -} -</style> -</head> -<body> -<div class="d b1"> </div> -<div class="d b2"> </div> -<div class="d b3"> </div> -<div class="d b4"> </div> -<div class="d b5"> </div> -<div class="d b6"> </div> -</body> -</html> diff --git a/application/third_party/dompdf/www/test/css_color_cmyk.html b/application/third_party/dompdf/www/test/css_color_cmyk.html deleted file mode 100644 index 46a719e6..00000000 --- a/application/third_party/dompdf/www/test/css_color_cmyk.html +++ /dev/null @@ -1,51 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"> - -<style type="text/css"> -body { - color: cmyk(0,0,0,1); -} -div { - margin: 2px; -} -div:before { - content: attr(style); -} -</style> - -</head> - -<body> -All these rectangles should look red: - -<div style="background-color: red;"></div> - -<div style="background-color: #FF0000;"></div> - -<div style="background-color: #F00;"></div> - -<div style="background-color: rgb(255, 0, 0);"></div> - -<div style="background-color: rgb(100%, 0%, 0%);"></div> - -<div style="background-color: cmyk(0, 1, 1, 0);"></div> -<br /> -<br /> - -CMYK JPEG: <br /> -<img src="images/cmyk_test2.jpg" /> - -<br /><br /> -CMYK: -<div style="background-color: cmyk(1,0,0,0);"></div> - -<div style="background-color: cmyk(0,1,0,0);"></div> - -<div style="background-color: cmyk(0,0,1,0);"></div> - -<div style="background-color: cmyk(0,0,0,1);"></div> - - -</body> </html> diff --git a/application/third_party/dompdf/www/test/css_content.html b/application/third_party/dompdf/www/test/css_content.html deleted file mode 100644 index 4558df51..00000000 --- a/application/third_party/dompdf/www/test/css_content.html +++ /dev/null @@ -1,47 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"> -<style> - -p { - border: 1px dotted grey; -} - -p.image:before { - content: url(images/html.png); -} -p.image:after { - content: url(images/pdf.png); -} - -p.counter { - page-break-after: always; -} -p.counter:before { - content: "Page number " counter(page, upper-roman); -} - -body:after { - content: "The End"; - display: block; - margin-top: 2em; - text-align: center; -} - -</style> -</head> - -<body> - Look at the HTML source ! - - <p><q>quote &lt;q&gt;</q></p> - <p class="image"> to </p> - - <p class="counter"></p> - <p class="counter"></p> - <p class="counter"></p> - -</body> - -</html> diff --git a/application/third_party/dompdf/www/test/css_float.html b/application/third_party/dompdf/www/test/css_float.html deleted file mode 100644 index 5e422351..00000000 --- a/application/third_party/dompdf/www/test/css_float.html +++ /dev/null @@ -1,55 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"> -<style> - -.left { - float: left; - border: 1px solid green; -} - -.right { - float: right; - border: 1px solid blue; -} - -.block { - float: left; - border: 1px solid red; -} -</style> -</head> - -<body> - -<div style="border: 1px solid black; width: 600px; padding: 1em; text-align: justify;"> - <img src="images/dompdf_simple.png" style="float: left; margin-right: 0.5em; margin-bottom: 0.5em;" /> - Lorem ipsum dolor sit amet, consectetuer <strong>adipiscing</strong> elit. Sed non risus. Suspendisse lectus <strong>tortor</strong>, dignissim sit amet, adipiscing nec, ultricies sed, dolor. - Cras elementum <em>ultrices</em> diam. Maecenas ligula massa, varius a, semper congue, euismod non, mi. - - <img src="images/goldengate.jpg" style="float: right; margin-left: 0.5em; margin-bottom: 0.5em;" width="220" /> - Proin porttitor, orci nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl sit amet erat. - Duis semper. Duis arcu massa, scelerisque vitae, <strong>consequat</strong> in, pretium a, enim. Pellentesque congue. - Ut in risus volutpat <em>libero</em> pharetra tempor. Cras vestibulum bibendum augue. - Praesent egestas leo in pede. Praesent blandit odio eu enim. Pellentesque sed dui ut augue blandit sodales. - Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aliquam nibh. - Mauris ac mauris sed pede pellentesque fermentum. - -</div> -<!-- -<div style="border: 1px solid black; height: 400px; width: 200px; padding: 1em;"> - <div class="left">left</div> - <div class="right">rmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmght</div> - before block - <div class="block" style="height: 30px;">block</div> - after block - <div class="left" style="height: 30px;">left2</div> - - text - - <div class="left">left3</div> - <div class="block">block2</div> -</div> ---> -</body> </html> diff --git a/application/third_party/dompdf/www/test/css_font_selection.html b/application/third_party/dompdf/www/test/css_font_selection.html deleted file mode 100644 index 68059ff1..00000000 --- a/application/third_party/dompdf/www/test/css_font_selection.html +++ /dev/null @@ -1,116 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"> -</head> -<body> - -<h1>Font Selection</h1> - -<p>Available font-family:</p> -<ul> -<li>serif (default) (Aliases: times, times-roman)</li> -<li>sans-serif (Aliases: helvetica)</li> -<li>monospace (Aliases: fixed, courier)</li> -</ul> -<p>Available font-style:</p> -<ul> -<li>normal (default)</li> -<li>italic</li> -</ul> -<p>Available font-weight:</p> -<ul> -<li>normal (default)</li> -<li>bold</li> -</ul> -<p>Other variations are falling back to a combination of the above</p> -<p>Special fonts</p> -<ul> -<li>symbol</li> -<li>zapfdingbats</li> -</ul> - -<h2>Font selection</h2> - -<p style="font-family:sans-serif;">abcdefghijk ABCDEFGHIJK - (Helvetica) - (sans-serif) - sans-serif</p> -<p style="font-family:helvetica;">abcdefghijk ABCDEFGHIJK - (Helvetica) - (sans-serif) - helvetica</p> -<p style="font-family:serif;">abcdefghijk ABCDEFGHIJK - (Times-Roman) - (serif) - serif</p> -<p style="font-family:times;">abcdefghijk ABCDEFGHIJK - (Times-Roman) - (serif) - times</p> -<p style="font-family:times-roman;">abcdefghijk ABCDEFGHIJK - (Times-Roman) - (serif) - times-roman</p> -<p style="font-family:monospace;">abcdefghijk ABCDEFGHIJK - (Courier)- (monospace) - mononospace</p> -<p style="font-family:fixed;">abcdefghijk ABCDEFGHIJK - (Courier)- (monospace) - fixed</p> -<p style="font-family:courier;">abcdefghijk ABCDEFGHIJK - (Courier)- (monospace) - courier</p> - -<h2>Font search path</h2> - -<p style="font-family:dummy1,dummy2;">abcdefghijk ABCDEFGHIJK - serif - "font-family:dummy1,dummy2;"</p> -<p style="font-family:dummy1,dummy2,sans-serif;">abcdefghijk ABCDEFGHIJK - sans-serif - "font-family:dummy1,dummy2,sans-serif;"</p> -<p style="font-family:sans-serif,dummy1,dummy2;">abcdefghijk ABCDEFGHIJK - sans-serif - "font-family:sans-serif,dummy1,dummy2;"</p> -<p style="font-family:sans-serif,courier;">abcdefghijk ABCDEFGHIJK - sans-serif - "font-family:sans-serif,courier;"</p> - -<h2>Font variations</h2> - -<p style="font-style:normal; font-weight:normal;">abcdefghijk ABCDEFGHIJK - serif - normal - "font-style:normal; font-weight:normal;"</p> -<p style="font-style:normal; font-weight:lighter;">abcdefghijk ABCDEFGHIJK - serif - normal - "font-style:normal; font-weight:lighter;"</p> -<p style="font-style:normal; font-weight:100;">abcdefghijk ABCDEFGHIJK - serif - normal - "font-style:normal; font-weight:100;"</p> -<p style="font-style:normal; font-weight:200;">abcdefghijk ABCDEFGHIJK - serif - normal - "font-style:normal; font-weight:200;"</p> -<p style="font-style:normal; font-weight:300;">abcdefghijk ABCDEFGHIJK - serif - normal - "font-style:normal; font-weight:300;"</p> -<p style="font-style:normal; font-weight:400;">abcdefghijk ABCDEFGHIJK - serif - normal - "font-style:normal; font-weight:400;"</p> -<p style="font-style:normal; font-weight:500;">abcdefghijk ABCDEFGHIJK - serif - normal - "font-style:normal; font-weight:500;"</p> -<p style="font-style:normal; font-weight:600;">abcdefghijk ABCDEFGHIJK - serif - bold - "font-style:normal; font-weight:600;"</p> -<p style="font-style:normal; font-weight:700;">abcdefghijk ABCDEFGHIJK - serif - bold - "font-style:normal; font-weight:700;"</p> -<p style="font-style:normal; font-weight:800;">abcdefghijk ABCDEFGHIJK - serif - bold - "font-style:normal; font-weight:800;"</p> -<p style="font-style:normal; font-weight:900;">abcdefghijk ABCDEFGHIJK - serif - bold - "font-style:normal; font-weight:900;"</p> -<p style="font-style:normal; font-weight:bold;">abcdefghijk ABCDEFGHIJK - serif - bold - "font-style:normal; font-weight:bold;"</p> -<p style="font-style:normal; font-weight:bolder;">abcdefghijk ABCDEFGHIJK - serif - bold - "font-style:normal; font-weight:bolder;"</p> -<p style="font-style:italic; font-weight:normal;">abcdefghijk ABCDEFGHIJK - serif - italic - "font-style:italic; font-weight:normal;"</p> -<p style="font-style:oblique; font-weight:normal;">abcdefghijk ABCDEFGHIJK - serif - italic - "font-style:oblique; font-weight:normal;"</p> -<p style="font-style:italic; font-weight:bold;">abcdefghijk ABCDEFGHIJK - serif - bold_italic - "font-style:italic; font-weight:bold;"</p> -<p style="font-variant:small-caps; font-style:normal; font-weight:normal;">abcdefghijk ABCDEFGHIJK - serif - normal - "font-variant:small-caps; font-style:normal; font-weight:normal;"</p>small-caps - -<h2>Font size</h2> - -<p style="font-size:xx-small">abcdefghijk ABCDEFGHIJK - xx-small</p> -<p style="font-size:x-small">abcdefghijk ABCDEFGHIJK - x-small</p> -<p style="font-size:small">abcdefghijk ABCDEFGHIJK - small</p> -<p style="font-size:medium">abcdefghijk ABCDEFGHIJK - medium</p> -<p style="font-size:large">abcdefghijk ABCDEFGHIJK - large</p> -<p style="font-size:x-large">abcdefghijk ABCDEFGHIJK - x-large</p> -<p style="font-size:xx-large">abcdefghijk ABCDEFGHIJK - xx-large</p> -<p style="font-size:10pt">abcdefghijk ABCDEFGHIJK - 10pt</p> -<p style="font-size:12pt">abcdefghijk ABCDEFGHIJK - 12pt</p> -<p style="font-size:14pt">abcdefghijk ABCDEFGHIJK - l4pt</p> -<p style="font-size:smaller">abcdefghijk ABCDEFGHIJK - smaller</p> -<p style="font-size:larger">abcdefghijk ABCDEFGHIJK - larger</p> - -<h2>Line height</h2> -<p style="line-height:100%">abcdefghijk ABCDEFGHIJK<br>abcdefghijk ABCDEFGHIJK 100%</p> -<p style="line-height:120%">abcdefghijk ABCDEFGHIJK<br>abcdefghijk ABCDEFGHIJK 120%</p> -<p style="line-height:140%">abcdefghijk ABCDEFGHIJK<br>abcdefghijk ABCDEFGHIJK 140%</p> -<p style="font-size:xx-large;line-height:100%">abcdefghijk ABCDEFGHIJK<br>abcdefghijk ABCDEFGHIJK 100%</p> -<p style="font-size:xx-large;line-height:120%">abcdefghijk ABCDEFGHIJK<br>abcdefghijk ABCDEFGHIJK 120%</p> -<p style="font-size:xx-large;line-height:140%">abcdefghijk ABCDEFGHIJK<br>abcdefghijk ABCDEFGHIJK 140%</p> - -<h2>Font combined setting</h2> -<p style="font:italic small-caps bold 14pt/160% sans-serif;">style="font:italic small-caps bold 14pt/160% sans-serif;"<br>(all attributes)</p> -<p style="font:normal 10pt/160% sans-serif;">style="font:normal 10pt/160% sans-serif;"<br>(partial attributes)</p> -<p style="font:700 10pt/160% sans-serif;">style="font:700 10pt/160% sans-serif;"<br>(partial attributes)</p> -<p style="font:small sans-serif;">style="font:small sans-serif;"<br>(partial attributes)</p> -<div style="font:italic small-caps bold 14pt/160% sans-serif;"> - -<p>inherit style="font:italic small-caps bold 14pt/160% sans-serif;" :</p> - -<p style="font:small sans-serif;"> -style="font:small sans-serif;"<br> -(partial attributes - reset inherited)<br> -<span style="font-weight:bold;">style="font-weight:bold;"<br> -(partial overwrite)</span><br> -(resume partial attributes) -</p> - -<p>continue inherited</p> - -</div> - -</body> -</html> diff --git a/application/third_party/dompdf/www/test/css_important_flag.html b/application/third_party/dompdf/www/test/css_important_flag.html deleted file mode 100644 index 76751f13..00000000 --- a/application/third_party/dompdf/www/test/css_important_flag.html +++ /dev/null @@ -1,54 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"> -<style> -ul { line-height:160% } -a { - border-bottom:dashed 1pt red !important; - text-decoration:none !important; -} -.monospace { font-family:monospace !important; } - -</style> -</head> -<body> - -<h1>Handling of "!important" property flag</h1> -<p> -Normally later css style properties defined later are overriding earlier ones.<br> -Except if they are marked with the flag "!important".<br> -Those can only be overridden by style properties which are also marked "!important". -</p> - -<p>There are two classes of property overriding</p> -<ul> -<li>inherit (nested html tags)</li> -<li>merging (more css properties to the same html tag)</li> -</ul> -<p>This is handled similarly for all styles, so we check only examples here</p> - -<p>ul { line-height:160% }<p> - -<h2>merge a { border-bottom:dashed 1pt red !important; text-decoration:none !important; }</h2> - -<p>dummy links, text decoration/border bottom:</p> - -<ul> -<li><a href="">(default)</a></li> -<li><a href="" style="border-bottom-style:none;">border-bottom-style:none; (ignore)</a></li> -<li><a href="" style="border:1pt solid blue;">border:1pt solid blue; (ignore)</a></li> -<li><a href="" style="border-bottom-style:none!important;">border-bottom-style:none!important; (override)</a></li> -<li><a href="" style="border:1pt solid blue!important;">border:1pt solid blue!important; (override)</a></li> -</ul> - -<h2>Inherit .monospace { font-family:monospace !important; }</h2> -<p>font family selection:</p> -<ul class="monospace"> -<li>(default)</li> -<li class="font-family:sans-serif;">font-family:sans-serif; (ignored)</li> -<li style="font-family:sans-serif!important;">font-family:sans-serif!important; (override)</li> -</ul> - -</body> -</html> diff --git a/application/third_party/dompdf/www/test/css_letter_spacing.html b/application/third_party/dompdf/www/test/css_letter_spacing.html deleted file mode 100644 index fb813cbb..00000000 --- a/application/third_party/dompdf/www/test/css_letter_spacing.html +++ /dev/null @@ -1,102 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"> -<style> -p { - font-size: 150%; -} -div { - page-break-after: always; -} -.example5 { - letter-spacing: 5px; -} -.example4 { - letter-spacing: 4px; -} -.example3 { - letter-spacing: 3px; -} -.example2 { - letter-spacing: 2px; -} -.example1 { - letter-spacing: 1px; -} -.example_1 { - letter-spacing: -1px; -} -.example_2 { - letter-spacing: -2px; -} -.example_3 { - letter-spacing: -3px; -} -.example_4 { - letter-spacing: -4px; -} -.example_5 { - letter-spacing: -5px; -} -</style> -</head> -<body> - -<div style="text-align: left;"> -<p class="example5">This has <strong>letter spacing</strong> of 5px</p> -<p class="example4">This has <strong>letter spacing</strong> of 4px</p> -<p class="example3">This has <strong>letter spacing</strong> of 3px</p> -<p class="example2">This has <strong>letter spacing</strong> of 2px</p> -<p class="example1">This has <strong>letter spacing</strong> of 1px</p> -<p>This has <strong>normal letter</strong> spacing</p> -<p class="example_1">This has <strong>letter spacing</strong> of -1px</p> -<p class="example_2">This has <strong>letter spacing</strong> of -2px</p> -<p class="example_3">This has <strong>letter spacing</strong> of -3px</p> -<p class="example_4">This has <strong>letter spacing</strong> of -4px</p> -<p class="example_5">This has <strong>letter spacing</strong> of -5px</p> -</div> - -<div style="text-align: right;"> -<p class="example5">This has <strong>letter spacing</strong> of 5px</p> -<p class="example4">This has <strong>letter spacing</strong> of 4px</p> -<p class="example3">This has <strong>letter spacing</strong> of 3px</p> -<p class="example2">This has <strong>letter spacing</strong> of 2px</p> -<p class="example1">This has <strong>letter spacing</strong> of 1px</p> -<p>This has <strong>normal letter</strong> spacing</p> -<p class="example_1">This has <strong>letter spacing</strong> of -1px</p> -<p class="example_2">This has <strong>letter spacing</strong> of -2px</p> -<p class="example_3">This has <strong>letter spacing</strong> of -3px</p> -<p class="example_4">This has <strong>letter spacing</strong> of -4px</p> -<p class="example_5">This has <strong>letter spacing</strong> of -5px</p> -</div> - -<div style="text-align: center;"> -<p class="example5">This has <strong>letter spacing</strong> of 5px</p> -<p class="example4">This has <strong>letter spacing</strong> of 4px</p> -<p class="example3">This has <strong>letter spacing</strong> of 3px</p> -<p class="example2">This has <strong>letter spacing</strong> of 2px</p> -<p class="example1">This has <strong>letter spacing</strong> of 1px</p> -<p>This has <strong>normal letter</strong> spacing</p> -<p class="example_1">This has <strong>letter spacing</strong> of -1px</p> -<p class="example_2">This has <strong>letter spacing</strong> of -2px</p> -<p class="example_3">This has <strong>letter spacing</strong> of -3px</p> -<p class="example_4">This has <strong>letter spacing</strong> of -4px</p> -<p class="example_5">This has <strong>letter spacing</strong> of -5px</p> -</div> - -<div style="text-align: justify;"> -<p class="example5">This has <strong>letter spacing</strong> of 5px. This has <strong>letter spacing</strong> of 5px. This has <strong>letter spacing</strong> of 5px. </p> -<p class="example4">This has <strong>letter spacing</strong> of 4px. This has <strong>letter spacing</strong> of 4px. This has <strong>letter spacing</strong> of 4px. </p> -<p class="example3">This has <strong>letter spacing</strong> of 3px. This has <strong>letter spacing</strong> of 3px. This has <strong>letter spacing</strong> of 3px. </p> -<p class="example2">This has <strong>letter spacing</strong> of 2px. This has <strong>letter spacing</strong> of 2px. This has <strong>letter spacing</strong> of 2px. </p> -<p class="example1">This has <strong>letter spacing</strong> of 1px. This has <strong>letter spacing</strong> of 1px. This has <strong>letter spacing</strong> of 1px. </p> -<p>This has <strong>normal letter</strong> spacing. This has <strong>normal letter</strong> spacing. This has <strong>normal letter</strong> spacing. </p> -<p class="example_1">This has <strong>letter spacing</strong> of -1px. This has <strong>letter spacing</strong> of -1px. This has <strong>letter spacing</strong> of -1px. </p> -<p class="example_2">This has <strong>letter spacing</strong> of -2px. This has <strong>letter spacing</strong> of -2px. This has <strong>letter spacing</strong> of -2px. </p> -<p class="example_3">This has <strong>letter spacing</strong> of -3px. This has <strong>letter spacing</strong> of -3px. This has <strong>letter spacing</strong> of -3px. </p> -<p class="example_4">This has <strong>letter spacing</strong> of -4px. This has <strong>letter spacing</strong> of -4px. This has <strong>letter spacing</strong> of -4px. </p> -<p class="example_5">This has <strong>letter spacing</strong> of -5px. This has <strong>letter spacing</strong> of -5px. This has <strong>letter spacing</strong> of -5px. </p> -</div> - -</body> </html> diff --git a/application/third_party/dompdf/www/test/css_line_height.html b/application/third_party/dompdf/www/test/css_line_height.html deleted file mode 100644 index 7589b795..00000000 --- a/application/third_party/dompdf/www/test/css_line_height.html +++ /dev/null @@ -1,63 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> -<html LANG="en"> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> -<title>CSS Line Height Inheritance</title> -<style type="text/css"> -<!-- -h1 {margin-top: 0; margin-bottom: 0;} -h2 {font-size: 125%; margin-top: 0;} -h3 {font-size: medium; margin-bottom: .5ex;} -div {border: 1px solid red;} -div div {border: 1px solid blue;} -a:link img, a:visited img { border-style: none;} -.admin { - background-color: #E0E0FF; - width: 15ex; - margin: 2ex; - padding: 1ex; - text-align: center; - font-size: .85em; - border: 0; - z-index: 10; -} ---> -</style> -</head> -<body> -<h1>Use only &lt;number&gt; for line-height</h1> -<h2>unless you like solving inexplicable inheritance problems or setting an explicit line-height on every element</h2> -<h3>div {line-height: 1}; div div {font-size: 200%}</h3> -<div style="line-height: 1;">The quick brown fox<br>jumps over the crazy -<div style="font-size: 200%;">The quick brown fox<br>jumps over the crazy</div></div> -<h3>div {line-height: 1em}; div div {font-size: 200%}</h3> -<div style="line-height: 1em;">The quick brown fox<br>jumps over the crazy -<div style="font-size: 200%;">The quick brown fox<br>jumps over the crazy</div></div> -<h3>div {line-height: 100%}; div div {font-size: 200%}</h3> -<div style="line-height: 100%;">The quick brown fox<br>jumps over the crazy -<div style="font-size: 200%;">The quick brown fox<br>jumps over the crazy</div></div> -<div class="updir" style="border: 0; margin-top: 2ex;"> -<p>When rendered according to the -<a href="http://www.w3.org/TR/CSS21/visudet.html#propdef-line-height">css 2.1 spec</a>, -the 200% text in the second two div divs, those for which line-height of the parent -are specified in em or %, will overlap, the child divs being 1/2 the height of their containing -divs; while the first div div will be 2/3 the height of its containing div, -and its text won't overlap. The overlapping text in the latter div divs is because the spec requires the calculated -line-height specified in em or % be inherited by the children. In contrast, it is &lt;number&gt; itself that is inherited by -the children, which allows the line-height specified to be applied in reference to the font-size of the child div instead of -the ancestor.</p> -<hr> -<a href="http://fm.no-ip.com/Auth/IE/line-heightIE.html">IE has an additional problem with line-height.</a> -<hr> -</div> - -<div class="admin"> -<a href="http://validator.w3.org/check/referer"> -<img src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!" height="31" width="88"></a> -<br> -Last Modified<br>2005.11.29<br>&#169; Felix Miata<br> -<A HREF="http://fm.no-ip.com/Auth/">Felix's Home</A> -</div> - -</body> -</html> \ No newline at end of file diff --git a/application/third_party/dompdf/www/test/css_margin.html b/application/third_party/dompdf/www/test/css_margin.html deleted file mode 100644 index 0efdc932..00000000 --- a/application/third_party/dompdf/www/test/css_margin.html +++ /dev/null @@ -1,38 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"> -<style> -p { width: 50%; text-align: justify; } -</style> -</head> -<body> - -<p style="margin: 1em;"><strong>(margin: 1em;)</strong> The PHP Development -Team would like to announce the immediate availability of PHP 5.0.1. This is -a maintenance release that in addition to many non-critical bug fixes also -includes new UNIX and Windows installation docs which are now auto-generated -from the PHP Manual.</p> - -<p style="margin: 1em 1em 1em 50%;"><strong>(margin: 1em 1em 1em -50%;)</strong> PHP 4.3.9RC1 has been released for testing. This is the first -release candidate and should have a very low number of problems and/or -bugs. Nevertheless, please download and test it as much as possible on -real-life applications to uncover any remaining issues.</p> - -<p style="margin: 4em 1em 4em 4em;"><strong>(margin: 4em 1em 4em -1em;)</strong> PHP Tunisie has just released the second issue of its monthly -french PHP Magazine. In this issue you'll find a large plan on PostgreSQL, -Databases abstractions with PHP, your mini template engine, an article on -images generation with PHP, the migration towards PHP5 with -EasyPHP1.7... And many other articles and latests PHP news.</p> - -<p style="margin: 1em auto 1em auto;"><strong>(margin: 1em auto 1em -auto;)</strong> The traditional International PHP Conference 2004 will be -taking place from 7th November to 10th November in Frankfurt (FFM). The Call -for Papers has been issued, so if you have an interesting talk, the -organizers would love to hear about it! You can expect a gathering of PHP -experts and core developers.</P> - - -</body> </html> diff --git a/application/third_party/dompdf/www/test/css_media.html b/application/third_party/dompdf/www/test/css_media.html deleted file mode 100644 index d01cd732..00000000 --- a/application/third_party/dompdf/www/test/css_media.html +++ /dev/null @@ -1,150 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head> -<link rel="stylesheet" media="screen, projection" href="css/linkdisplay.css"> -<link rel="stylesheet" media="print" href="css/linkprint.css"> -<link rel="stylesheet" media="all" href="css/linkall.css"> -<link rel="stylesheet" href="css/linkdefault.css"> -<style> -@page { margin:1cm; color:#0000ff; font-family:sans-serif;} - -@media print { - p.media {background-color:#eeeeee;} -} -@media screen { - p.media {background-color:#c0c0ff;} -} -@media projection { - p.media {background-color:#ffffc0;} -} - -@import url(css/importall.css); -@import url(css/importprint.css) print; -@import url(css/importdisplay.css) projection, screen; - -@import url(css/importsub.css); - -@import url(/absimagetest/importabs.css); - -body { background-color:#eeeeee; margin:0pt; padding:1cm; border:0.5pt solid red; } -</style> -<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"> -</head> -<body> -<h1>css @media media types</h1> -<p class="media"> -Depending on dompdf_config.inc.php setting DOMPDF_DEFAULT_MEDIA_TYPE here the -background color appeares different: -</p> -<ul> -<li>print: light gray</li> -<li>screen: light blue</li> -<li>projection: light yellow</li> -</ul> - -<h1>css @import media types</h1> -<p class="import"> -Depending on dompdf_config.inc.php setting DOMPDF_DEFAULT_MEDIA_TYPE here the -background color appeares different: -</p> -<ul> -<li>print: light gray</li> -<li>screen or projection: light blue</li> -<li class="import">all: this line yellow</li> -</ul> - -<p class="importsub">yellow by import css from subfolder</p> - -<p class="importabs">yellow by import css from absolute local folder. -Note: Only works if www\test\images/importabs.css was copied to /absimagetest/importabs.css -</p> - - -<h1>css link media types</h1> -<p class="link"> -Depending on dompdf_config.inc.php setting DOMPDF_DEFAULT_MEDIA_TYPE here the -background color appeares different: -</p> -<ul> -<li>print: light gray</li> -<li>screen or projection: light blue</li> -<li class="link">all: this line yellow background with red color</li> -</ul> - - -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -<p>x</p> -</html> diff --git a/application/third_party/dompdf/www/test/css_multiple_class.html b/application/third_party/dompdf/www/test/css_multiple_class.html deleted file mode 100644 index c4f68d5d..00000000 --- a/application/third_party/dompdf/www/test/css_multiple_class.html +++ /dev/null @@ -1,18 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<style> -.a { font-style: italic; } -.b { font-weight: bold; } -.c { color: red; } -</style> -</head> -<body> -<p class="a">class="a"</p> -<p class="b">class="b"</p> -<p class="c">class="c"</p> -<p class="a b">class="a b"</p> -<p class="a b c">class="a b c"</p> -</body> -</html> diff --git a/application/third_party/dompdf/www/test/css_opacity.html b/application/third_party/dompdf/www/test/css_opacity.html deleted file mode 100644 index 733e568a..00000000 --- a/application/third_party/dompdf/www/test/css_opacity.html +++ /dev/null @@ -1,107 +0,0 @@ -<!DOCTYPE html - PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<style> -div { - border: 2px solid #000; - width: 50px; - height: 50px; - margin: 10px; - background: green; -} -</style> -</head> -<body> - -<h1>Nested block elements</h1> - -<div style="opacity: 0.8;"> - <div style="opacity: 0.8;"> - <div style="opacity: 0.8;"> - <div style="opacity: 0.8;"> - <div style="opacity: 0.8;"> - <div style="opacity: 0.8;"> - <div style="opacity: 0.8;"> - <div style="opacity: 0.8;"> - <div style="opacity: 0.8;"> - <div style="opacity: 0.8;"> - <div style="opacity: 0.8;"> - <div style="opacity: 0.8;"> - </div> - </div> - </div> - </div> - </div> - </div> - </div> - </div> - </div> - </div> - </div> -</div> - -<br /> -<br /> -<br /> -<br /> -<br /> -<br /> -<br /> -<br /> -<br /> - -<h1>Inline elements</h1> - -<span style="width: 100%;"> - <span style="opacity: 0.1">ab</span> - <span style="opacity: 0.2">cb</span> - <span style="opacity: 0.3">ef</span> - <span style="opacity: 0.4">gh</span> - <span style="opacity: 0.5">ij</span> - <span style="opacity: 0.6">kl</span> - <span style="opacity: 0.7">mn</span> - <span style="opacity: 0.8">op</span> - <span style="opacity: 0.9">qr</span> - <span style="opacity: 1.0">st</span> -</span> - -<br/> - -<span style="width: 100%; opacity: 0.5;"> - <span style="opacity: 0.1">ab</span> - <span style="opacity: 0.2">cb</span> - <span style="opacity: 0.3">ef</span> - <span style="opacity: 0.4">gh</span> - <span style="opacity: 0.5">ij</span> - <span style="opacity: 0.6">kl</span> - <span style="opacity: 0.7">mn</span> - <span style="opacity: 0.8">op</span> - <span style="opacity: 0.9">qr</span> - <span style="opacity: 1.0">st</span> -</span> - -<div style="opacity: 0.1;">0.1</div> -<div style="opacity: 0.2;">0.2</div> -<div style="opacity: 0.3;">0.3</div> -<div style="opacity: 0.4;">0.4</div> -<div style="opacity: 0.5;">0.5</div> -<div style="opacity: 0.6;">0.6</div> -<div style="opacity: 0.7;">0.7</div> -<div style="opacity: 0.8;">0.8</div> -<div style="opacity: 0.9;">0.9</div> -<div style="opacity: 1.0;">1.0</div> - -<div style="opacity: 1.0;">1.0 opacity</div> -<div>No opacity</div> - -<div style="opacity: 0.5; height: auto;"> - <div style="opacity: 0.5;"> - <div style="opacity: 1.0;"></div> - <div style="opacity: 0.5;"></div> - </div> - <div style="opacity: 0.5;"></div> -</div> - -</body> </html> diff --git a/application/third_party/dompdf/www/test/css_outline.html b/application/third_party/dompdf/www/test/css_outline.html deleted file mode 100644 index 00ce313e..00000000 --- a/application/third_party/dompdf/www/test/css_outline.html +++ /dev/null @@ -1,77 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"> -<style> -table { - border-spacing: 15px; - margin: 2em auto; -} -td { - outline-width: 5px; - border: thin dotted gray; - padding: 1em; -} - -td.dotted { outline-style: dotted; color: maroon;} -td.dashed { outline-style: dashed; color: orange; } -td.solid { outline-style: solid; color: yellow; } -td.double { outline-style: double; color: olive; } -td.groove { outline-style: groove; color: green; } -td.ridge { outline-style: ridge; color: lime; } -td.inset { outline-style: inset; color: teal; } -td.outset { outline-style: outset; color: blue; } - -div { margin: 5pt; } - -div.full { outline:thin blue solid;} - -div.partialthinsolid, -div.partial1, -div.partial2 { outline:thin solid;} - -div.partial1 { outline-color:green; } -div.partial2 { outline:blue;} - -div.partial3 { outline-style:dashed; } -div.partial4 { outline-width:thick; } -div.partial5 { outline-width:medium; } -div.partial6 { outline-width:3pt; } - -</style> -</head> - -<body> -<table> - <tr> - <th colspan="4">The dotted gray line is the border box</th> - </tr> - <tr> - <td class="dotted">dotted</td> - <td class="dashed">dashed</td> - <td class="solid">solid</td> - <td class="double">double</td> - </tr> - <tr> - <td class="groove">groove</td> - <td class="ridge">ridge</td> - <td class="inset">inset</td> - <td class="outset">outset</td> - </tr> -</table> - -<h2>partial attributes merged</h2> - -<div style="outline:thin solid red;">outline:thin solid red;</div> -<div style="outline:red thin solid;">outline:red thin solid;</div> -<div class="partialthinsolid partial2">{ outline:thin solid; }{outline:blue; } (merged, reset all - color has no effect)</div> -<div class="partialthinsolid partial1">{ outline:thin solid; }{outline-color:green; } (merged, overwrite only color)</div> -<div class="partial2">{ outline:thin solid; }{outline:blue; } (merged, reset all - color has no effect)</div> -<div class="partial1">{ outline:thin solid; }{outline-color:green; } (merged, overwrite only color)</div> -<div class="full partial1">{ outline:thin blue solid; }{outline-color:green; } (merged, overwrite only color)</div> -<div class="full partial3">{ outline:thin blue solid; }{outline-style:dashed; } (merged, overwrite only style)</div> -<div class="full partial4">{ outline:thin blue solid; }{outline-width:thick; } (merged, overwrite only width)</div> -<div class="full partial5">{ outline:thin blue solid; }{outline-width:medium; } (merged, overwrite only width)</div> -<div class="full partial6">{ outline:thin blue solid; }{outline-width:3pt; } (merged, overwrite only width)</div> - -</body> </html> diff --git a/application/third_party/dompdf/www/test/css_overflow_hidden.html b/application/third_party/dompdf/www/test/css_overflow_hidden.html deleted file mode 100644 index a2bd2915..00000000 --- a/application/third_party/dompdf/www/test/css_overflow_hidden.html +++ /dev/null @@ -1,38 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<style> -body { - font-family: sans-serif; -} -div { - margin: 0.5em; - width: 50pt; - height: 200pt; - border: 1pt dotted; - padding: 10px; -} -img { - border: 1pt dotted red; -} -</style> -</head> -<body> - -<h3>overflow: hidden</h3> -<div style="overflow: hidden;"> - <img src="images/dompdf_simple.png" /> - Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed non risus. - Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor. -</div> - -<h3>overflow: visible</h3> -<div style="overflow: visible;"> - <img src="images/dompdf_simple.png" /> - Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed non risus. - Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor. -</div> - -</body> -</html> diff --git a/application/third_party/dompdf/www/test/css_position_all.html b/application/third_party/dompdf/www/test/css_position_all.html deleted file mode 100644 index 0007c6d7..00000000 --- a/application/third_party/dompdf/www/test/css_position_all.html +++ /dev/null @@ -1,379 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml" lang="en"> -<head> -<meta http-equiv="content-type" content="text/html; charset=UTF-8" /> - -<title>Printed document</title> - -<style type="text/css"> - -body { - font-family: sans-serif; - font-size: 10pt; -} - -/* These inline styles will always be active even if an alternate stylesheet is selected with the stylesheet swticher */ - -.example { - width: 400px; - page-break-after: always; - margin-bottom: 10em; -} - -.div-before, .div-after { - background-color: #88d; - color: #000; -} - -.div-1 { - background-color: #000; - color: #fff; -} - -.div-1-padding { - padding: 10px; -} - -.div-1a { - background-color: #d33; - color: #fff; -} - -.div-1b { - background-color: #3d3; - color: #fff; -} - -.div-1c { - background-color: #33d; - color: #fff; -} - -.example div p { - margin: 0 .25em; - padding: .25em 0; -} - - - -#example-1 .div-1 { - position: static; -} - -#example-2 .div-1 { - position: relative; - top:20px; - left:-40px; -} - -#example-3 .div-1a { - position:absolute; - top:0; - right:0; - width:200px; -} - -#example-4 .div-1 { - position:relative; -} -#example-4 .div-1a { - position:absolute; - top:0; - right:0; - width:200px; -} - -#example-5 .div-1 { - position:relative; -} -#example-5 .div-1a { - position:absolute; - top:0; - right:0; - width:200px; -} -#example-5 .div-1b { - position:absolute; - top:0; - left:0; - width:200px; -} - -#example-6 .div-1 { - position:relative; - height:250px; -} -#example-6 .div-1a { - position:absolute; - top:0; - right:0; - width:200px; -} -#example-6 .div-1b { - position:absolute; - top:0; - left:0; - width:200px; -} - -#example-7 .div-1a { - float:left; - width:200px; -} - -#example-8 .div-1a { - float:left; - width:150px; -} -#example-8 .div-1b { - float:left; - width:150px; -} - -#example-9 .div-1a { - float:left; - width:190px; -} -#example-9 .div-1b { - float:left; - width:190px; -} -#example-9 .div-1c { - clear:both; -} -</style> - -</head> - -<body> - -<h3>Examples from <br />http://www.barelyfitz.com/screencast/html-training/css/positioning/</h3> - -position: static -<div id="example-1" class="example"> - <div class="div-before"><p>div-before</p></div> - - <div class="div-1"> - <div class="div-1-padding"> - <p>div-1</p> - - <div class="div-1a"> - <p>div-1a</p> - <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit.</p> - </div> - - <div class="div-1b"> - <p>div-1b</p> - <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit. Nam mattis, arcu ut bibendum commodo, magna nisi tincidunt tortor, quis accumsan augue ipsum id lorem.</p> - </div> - - <div class="div-1c"><p>div-1c</p></div> - </div> - </div> - - <div class="div-after"><p>div-after</p></div> -</div> - -position: relative -<div id="example-2" class="example"> - <div class="div-before"><p>div-before</p></div> - - <div class="div-1"> - <div class="div-1-padding"> - <p>div-1</p> - - <div class="div-1a"> - <p>div-1a</p> - <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit.</p> - </div> - - <div class="div-1b"> - <p>div-1b</p> - <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit. Nam mattis, arcu ut bibendum commodo, magna nisi tincidunt tortor, quis accumsan augue ipsum id lorem.</p> - </div> - - <div class="div-1c"><p>div-1c</p></div> - </div> - </div> - - <div class="div-after"><p>div-after</p></div> -</div> - -position: absolute -<div id="example-3" class="example"> - <div class="div-before"><p>div-before</p></div> - - <div class="div-1"> - <div class="div-1-padding"> - <p>div-1</p> - - <div class="div-1a"> - <p>div-1a</p> - <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit.</p> - </div> - - <div class="div-1b"> - <p>div-1b</p> - <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit. Nam mattis, arcu ut bibendum commodo, magna nisi tincidunt tortor, quis accumsan augue ipsum id lorem.</p> - </div> - - <div class="div-1c"><p>div-1c</p></div> - </div> - </div> - - <div class="div-after"><p>div-after</p></div> -</div> - -position: relative + position: absolute -<div id="example-4" class="example"> - <div class="div-before"><p>div-before</p></div> - - <div class="div-1"> - <div class="div-1-padding"> - <p>div-1</p> - - <div class="div-1a"> - <p>div-1a</p> - <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit.</p> - </div> - - <div class="div-1b"> - <p>div-1b</p> - <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit. Nam mattis, arcu ut bibendum commodo, magna nisi tincidunt tortor, quis accumsan augue ipsum id lorem.</p> - </div> - - <div class="div-1c"><p>div-1c</p></div> - </div> - </div> - - <div class="div-after"><p>div-after</p></div> -</div> - -two column absolute -<div id="example-5" class="example"> - <div class="div-before"><p>div-before</p></div> - - <div class="div-1"> - <div class="div-1-padding"> - <p>div-1</p> - - <div class="div-1a"> - <p>div-1a</p> - <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit.</p> - </div> - - <div class="div-1b"> - <p>div-1b</p> - <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit. Nam mattis, arcu ut bibendum commodo, magna nisi tincidunt tortor, quis accumsan augue ipsum id lorem.</p> - </div> - - <div class="div-1c"><p>div-1c</p></div> - </div> - </div> - - <div class="div-after"><p>div-after</p></div> -</div> - -two column absolute height -<div id="example-6" class="example"> - <div class="div-before"><p>div-before</p></div> - - <div class="div-1"> - <div class="div-1-padding"> - <p>div-1</p> - - <div class="div-1a"> - <p>div-1a</p> - <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit.</p> - </div> - - <div class="div-1b"> - <p>div-1b</p> - <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit. Nam mattis, arcu ut bibendum commodo, magna nisi tincidunt tortor, quis accumsan augue ipsum id lorem.</p> - </div> - - <div class="div-1c"><p>div-1c</p></div> - </div> - </div> - - <div class="div-after"><p>div-after</p></div> -</div> - -float -<div id="example-7" class="example"> - <div class="div-before"><p>div-before</p></div> - - <div class="div-1"> - <div class="div-1-padding"> - <p>div-1</p> - - <div class="div-1a"> - <p>div-1a</p> - <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit.</p> - </div> - - <div class="div-1b"> - <p>div-1b</p> - <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit. Nam mattis, arcu ut bibendum commodo, magna nisi tincidunt tortor, quis accumsan augue ipsum id lorem.</p> - </div> - - <div class="div-1c"><p>div-1c</p></div> - </div> - </div> - - <div class="div-after"><p>div-after</p></div> -</div> - -float columns -<div id="example-8" class="example"> - <div class="div-before"><p>div-before</p></div> - - <div class="div-1"> - <div class="div-1-padding"> - <p>div-1</p> - - <div class="div-1a"> - <p>div-1a</p> - <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit.</p> - </div> - - <div class="div-1b"> - <p>div-1b</p> - <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit. Nam mattis, arcu ut bibendum commodo, magna nisi tincidunt tortor, quis accumsan augue ipsum id lorem.</p> - </div> - - <div class="div-1c"><p>div-1c</p></div> - </div> - </div> - - <div class="div-after"><p>div-after</p></div> -</div> - -float columns with clear -<div id="example-9" class="example"> - <div class="div-before"><p>div-before</p></div> - - <div class="div-1"> - <div class="div-1-padding"> - <p>div-1</p> - - <div class="div-1a"> - <p>div-1a</p> - <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit.</p> - </div> - - <div class="div-1b"> - <p>div-1b</p> - <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit. Nam mattis, arcu ut bibendum commodo, magna nisi tincidunt tortor, quis accumsan augue ipsum id lorem.</p> - </div> - - <div class="div-1c"><p>div-1c</p></div> - </div> - </div> - - <div class="div-after"><p>div-after</p></div> -</div> - -</body> - -</html> diff --git a/application/third_party/dompdf/www/test/css_position_fixed.html b/application/third_party/dompdf/www/test/css_position_fixed.html deleted file mode 100644 index e5d1a3cd..00000000 --- a/application/third_party/dompdf/www/test/css_position_fixed.html +++ /dev/null @@ -1,215 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml" lang="en"> -<head> -<meta http-equiv="content-type" content="text/html; charset=UTF-8" /> - -<title>Printed document</title> -<style type="text/css"> -@page { - margin: 0; -} - -body { - margin-top: 3.5cm; - margin-bottom: 1cm; - margin-left: 3.5cm; - font-family: sans-serif; - text-align: justify; -} - -div.header, -div.footer { - position: fixed; - background: #ddd; - width: 100%; - border: 0px solid #888; - overflow: hidden; - padding: 0.1cm; -} - -div.leftpane { - position: fixed; - background: #ddd; - width: 3cm; - border-right: 1px solid #888; - top: 0cm; - left: 0cm; - height: 30cm; -} - -div.header { - top: 0cm; - left: 0cm; - border-bottom-width: 1px; - height: 3cm; -} - -div.footer { - bottom: 0cm; - left: 0cm; - border-top-width: 1px; - height: 1cm; -} - -div.footer table { - width: 100%; - text-align: center; -} - -hr { - page-break-after: always; - border: 0; -} - -</style> - -</head> - -<body> - -<div class="header"> - <div style="text-align: right;"> - Header line 1<br/> - Header line 2<br/> - Header line 3<br/> - Header line 4<br/> - </div> -</div> - -<div class="footer"> - <div style="text-align: right;">On line footer content aligned to the right. <a href="http://fr.selfhtml.org/css/proprietes/printlayouts.htm">More info on print layouts</a></div> -</div> - -<div class="leftpane"> - <div style="text-align: center;"> - <img src="images/dompdf_simple.png" width="80" style="margin: 1cm;" /> - </div> -</div> - -<h2>Section 1</h2> - -<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed non -risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, -ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula -massa, varius a, semper congue, euismod non, mi. Proin porttitor, orci -nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl sit -amet erat. Duis semper. Duis arcu massa, scelerisque vitae, consequat -in, pretium a, enim. Pellentesque congue. Ut in risus volutpat libero -pharetra tempor. Cras vestibulum bibendum augue. Praesent egestas leo -in pede. Praesent blandit odio eu enim. Pellentesque sed dui ut augue -blandit sodales. Vestibulum ante ipsum primis in faucibus orci luctus -et ultrices posuere cubilia Curae; Aliquam nibh. Mauris ac mauris sed -pede pellentesque fermentum. Maecenas adipiscing ante non diam sodales -hendrerit.</p> - -<hr/> - -<h2>Section 2</h2> - -<p>Ut velit mauris, egestas sed, gravida nec, ornare ut, mi. Aenean ut -orci vel massa suscipit pulvinar. Nulla sollicitudin. Fusce varius, -ligula non tempus aliquam, nunc turpis ullamcorper nibh, in tempus -sapien eros vitae ligula. Pellentesque rhoncus nunc et augue. Integer -id felis. Curabitur aliquet pellentesque diam. Integer quis metus vitae -elit lobortis egestas. Lorem ipsum dolor sit amet, consectetuer -adipiscing elit. Morbi vel erat non mauris convallis vehicula. Nulla et -sapien. Integer tortor tellus, aliquam faucibus, convallis id, congue -eu, quam. Mauris ullamcorper felis vitae erat. Proin feugiat, augue non -elementum posuere, metus purus iaculis lectus, et tristique ligula -justo vitae magna.</p> - -<hr/> - -<h2>Section 3</h2> - -<p>Aliquam convallis sollicitudin purus. Praesent aliquam, enim at -fermentum mollis, ligula massa adipiscing nisl, ac euismod nibh nisl eu -lectus. Fusce vulputate sem at sapien. Vivamus leo. Aliquam euismod -libero eu enim. Nulla nec felis sed leo placerat imperdiet. Aenean -suscipit nulla in justo. Suspendisse cursus rutrum augue. Nulla -tincidunt tincidunt mi. Curabitur iaculis, lorem vel rhoncus faucibus, -felis magna fermentum augue, et ultricies lacus lorem varius purus. -Curabitur eu amet.</p> - -<p>Aliquam convallis sollicitudin purus. Praesent aliquam, enim at -fermentum mollis, ligula massa adipiscing nisl, ac euismod nibh nisl eu -lectus. Fusce vulputate sem at sapien. Vivamus leo. Aliquam euismod -libero eu enim. Nulla nec felis sed leo placerat imperdiet. Aenean -suscipit nulla in justo. Suspendisse cursus rutrum augue. Nulla -tincidunt tincidunt mi. Curabitur iaculis, lorem vel rhoncus faucibus, -felis magna fermentum augue, et ultricies lacus lorem varius purus. -Curabitur eu amet.</p> - -<p>Aliquam convallis sollicitudin purus. Praesent aliquam, enim at -fermentum mollis, ligula massa adipiscing nisl, ac euismod nibh nisl eu -lectus. Fusce vulputate sem at sapien. Vivamus leo. Aliquam euismod -libero eu enim. Nulla nec felis sed leo placerat imperdiet. Aenean -suscipit nulla in justo. Suspendisse cursus rutrum augue. Nulla -tincidunt tincidunt mi. Curabitur iaculis, lorem vel rhoncus faucibus, -felis magna fermentum augue, et ultricies lacus lorem varius purus. -Curabitur eu amet.</p> - -<p>Aliquam convallis sollicitudin purus. Praesent aliquam, enim at -fermentum mollis, ligula massa adipiscing nisl, ac euismod nibh nisl eu -lectus. Fusce vulputate sem at sapien. Vivamus leo. Aliquam euismod -libero eu enim. Nulla nec felis sed leo placerat imperdiet. Aenean -suscipit nulla in justo. Suspendisse cursus rutrum augue. Nulla -tincidunt tincidunt mi. Curabitur iaculis, lorem vel rhoncus faucibus, -felis magna fermentum augue, et ultricies lacus lorem varius purus. -Curabitur eu amet.</p> - -<p>Aliquam convallis sollicitudin purus. Praesent aliquam, enim at -fermentum mollis, ligula massa adipiscing nisl, ac euismod nibh nisl eu -lectus. Fusce vulputate sem at sapien. Vivamus leo. Aliquam euismod -libero eu enim. Nulla nec felis sed leo placerat imperdiet. Aenean -suscipit nulla in justo. Suspendisse cursus rutrum augue. Nulla -tincidunt tincidunt mi. Curabitur iaculis, lorem vel rhoncus faucibus, -felis magna fermentum augue, et ultricies lacus lorem varius purus. -Curabitur eu amet.</p> - -<p>Aliquam convallis sollicitudin purus. Praesent aliquam, enim at -fermentum mollis, ligula massa adipiscing nisl, ac euismod nibh nisl eu -lectus. Fusce vulputate sem at sapien. Vivamus leo. Aliquam euismod -libero eu enim. Nulla nec felis sed leo placerat imperdiet. Aenean -suscipit nulla in justo. Suspendisse cursus rutrum augue. Nulla -tincidunt tincidunt mi. Curabitur iaculis, lorem vel rhoncus faucibus, -felis magna fermentum augue, et ultricies lacus lorem varius purus. -Curabitur eu amet.</p> - -<p>Aliquam convallis sollicitudin purus. Praesent aliquam, enim at -fermentum mollis, ligula massa adipiscing nisl, ac euismod nibh nisl eu -lectus. Fusce vulputate sem at sapien. Vivamus leo. Aliquam euismod -libero eu enim. Nulla nec felis sed leo placerat imperdiet. Aenean -suscipit nulla in justo. Suspendisse cursus rutrum augue. Nulla -tincidunt tincidunt mi. Curabitur iaculis, lorem vel rhoncus faucibus, -felis magna fermentum augue, et ultricies lacus lorem varius purus. -Curabitur eu amet.</p> - -<p>Aliquam convallis sollicitudin purus. Praesent aliquam, enim at -fermentum mollis, ligula massa adipiscing nisl, ac euismod nibh nisl eu -lectus. Fusce vulputate sem at sapien. Vivamus leo. Aliquam euismod -libero eu enim. Nulla nec felis sed leo placerat imperdiet. Aenean -suscipit nulla in justo. Suspendisse cursus rutrum augue. Nulla -tincidunt tincidunt mi. Curabitur iaculis, lorem vel rhoncus faucibus, -felis magna fermentum augue, et ultricies lacus lorem varius purus. -Curabitur eu amet.</p> - -<p>Aliquam convallis sollicitudin purus. Praesent aliquam, enim at -fermentum mollis, ligula massa adipiscing nisl, ac euismod nibh nisl eu -lectus. Fusce vulputate sem at sapien. Vivamus leo. Aliquam euismod -libero eu enim. Nulla nec felis sed leo placerat imperdiet. Aenean -suscipit nulla in justo. Suspendisse cursus rutrum augue. Nulla -tincidunt tincidunt mi. Curabitur iaculis, lorem vel rhoncus faucibus, -felis magna fermentum augue, et ultricies lacus lorem varius purus. -Curabitur eu amet.</p> - -<p>Aliquam convallis sollicitudin purus. Praesent aliquam, enim at -fermentum mollis, ligula massa adipiscing nisl, ac euismod nibh nisl eu -lectus. Fusce vulputate sem at sapien. Vivamus leo. Aliquam euismod -libero eu enim. Nulla nec felis sed leo placerat imperdiet. Aenean -suscipit nulla in justo. Suspendisse cursus rutrum augue. Nulla -tincidunt tincidunt mi. Curabitur iaculis, lorem vel rhoncus faucibus, -felis magna fermentum augue, et ultricies lacus lorem varius purus. -Curabitur eu amet.</p> - -</body></html> diff --git a/application/third_party/dompdf/www/test/css_selectors.html b/application/third_party/dompdf/www/test/css_selectors.html deleted file mode 100644 index baa7b8fe..00000000 --- a/application/third_party/dompdf/www/test/css_selectors.html +++ /dev/null @@ -1,53 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<style> -body { - color: red; -} - -a { - display: block; -} - -a[href$=ends_1] {color: green;} -a[href$='ends_2'] {color: green;} -a[href$="ends_3"] {color: green;} - -a[href^=starts_1] {color: green;} -a[href^='starts_2'] {color: green;} -a[href^="starts_3"] {color: green;} - -a[href*=contains_1] {color: green;} -a[href*='contains_2'] {color: green;} -a[href*="contains_3"] {color: green;} - -a[target=equal_1] {color: green;} -a[target='equal_2'] {color: green;} -a[target="equal_3"] {color: green;} - -</style> -</head> -<body> - -<a href="#" target="equal_1">a[target=equal_1]</a> -<a href="#" target="equal_2">a[target='equal_2']</a> -<a href="#" target="equal_3">a[target="equal_3"]</a> - -<a href="test/ends_1">a[href$=ends_1]</a> -<a href="test/ends_2">a[href$='ends_2']</a> -<a href="test/ends_3">a[href$="ends_3"]</a> - -<p> -<a href="test/contains_1/test">a[href*=contains_1]</a> -<a href="test/contains_2/test">a[href*='contains_2']</a> -<a href="test/contains_3/test">a[href*="contains_3"]</a> -</p> - -<a href="starts_1/test">a[href^=starts_1]</a> -<a href="starts_2/test">a[href^='starts_2']</a> -<a href="starts_3/test">a[href^="starts_3"]</a> - -</body> -</html> diff --git a/application/third_party/dompdf/www/test/css_table_height.html b/application/third_party/dompdf/www/test/css_table_height.html deleted file mode 100644 index ec638b0a..00000000 --- a/application/third_party/dompdf/www/test/css_table_height.html +++ /dev/null @@ -1,15 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -</head> -<body> -<table style="height: 50%; border: 0.5pt solid black;"> -<tbody> -<tr> -<td>Some text</td> -</tr> -</tbody> -</table> -</body> -</html> diff --git a/application/third_party/dompdf/www/test/css_text_align.html b/application/third_party/dompdf/www/test/css_text_align.html deleted file mode 100644 index c795af25..00000000 --- a/application/third_party/dompdf/www/test/css_text_align.html +++ /dev/null @@ -1,61 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"> -</head> -<body> - -<h1>text-align: left</h1> -<div style="text-align: left;"> -Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec at odio vitae libero tempus -convallis. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus -mus. Vestibulum purus mauris, dapibus eu, sagittis quis, sagittis quis, mi. Morbi fringilla -massa quis velit. Curabitur metus massa, semper mollis, molestie vel, adipiscing nec, massa. -<br /> -Phasellus vitae felis sed lectus dapibus facilisis. In ultrices sagittis ipsum. In at est. Integer -iaculis turpis vel magna. Cras eu est. Integer porttitor ligula a tellus. Curabitur accumsan ipsum -a velit. Sed laoreet lectus quis leo. Nulla pellentesque molestie ante. Quisque vestibulum est id -justo. Ut pellentesque ante in neque. -</div> - -<h1>text-align: center</h1> -<div style="text-align: center;"> -Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec at odio vitae libero tempus -convallis. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus -mus. Vestibulum purus mauris, dapibus eu, sagittis quis, sagittis quis, mi. Morbi fringilla -massa quis velit. Curabitur metus massa, semper mollis, molestie vel, adipiscing nec, massa. -<br /> -Phasellus vitae felis sed lectus dapibus facilisis. In ultrices sagittis ipsum. In at est. Integer -iaculis turpis vel magna. Cras eu est. Integer porttitor ligula a tellus. Curabitur accumsan ipsum -a velit. Sed laoreet lectus quis leo. Nulla pellentesque molestie ante. Quisque vestibulum est id -justo. Ut pellentesque ante in neque. -</div> - -<h1>text-align: right</h1> -<div style="text-align: right;"> -Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec at odio vitae libero tempus -convallis. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus -mus. Vestibulum purus mauris, dapibus eu, sagittis quis, sagittis quis, mi. Morbi fringilla -massa quis velit. Curabitur metus massa, semper mollis, molestie vel, adipiscing nec, massa. -<br /> -Phasellus vitae felis sed lectus dapibus facilisis. In ultrices sagittis ipsum. In at est. Integer -iaculis turpis vel magna. Cras eu est. Integer porttitor ligula a tellus. Curabitur accumsan ipsum -a velit. Sed laoreet lectus quis leo. Nulla pellentesque molestie ante. Quisque vestibulum est id -justo. Ut pellentesque ante in neque. -</div> - -<h1>text-align: justify</h1> -<div style="text-align: justify;"> -Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec at odio vitae libero tempus -convallis. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus -mus. Vestibulum purus mauris, dapibus eu, sagittis quis, sagittis quis, mi. Morbi fringilla -massa quis velit. Curabitur metus massa, semper mollis, molestie vel, adipiscing nec, massa. -<br /> -Phasellus vitae felis sed lectus dapibus facilisis. In ultrices sagittis ipsum. In at est. Integer -iaculis turpis vel magna. Cras eu est. Integer porttitor ligula a tellus. Curabitur accumsan ipsum -a velit. Sed laoreet lectus quis leo. Nulla pellentesque molestie ante. Quisque vestibulum est id -justo. Ut pellentesque ante in neque. -</div> - -</body> -</html> diff --git a/application/third_party/dompdf/www/test/css_z_index.html b/application/third_party/dompdf/www/test/css_z_index.html deleted file mode 100644 index 0c097ae0..00000000 --- a/application/third_party/dompdf/www/test/css_z_index.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> - <head> - <title>z-index</title> - <style type="text/css"> - div { - position: absolute; - } - </style> - </head> - <body> - - <div style="background: #fff; opacity: 0.8; border: 6px solid red; z-index: 3; padding: 3em; top: 3em; left: 2em; width: 6em;"> - z-index: 3, order: 1 - </div> - - <div style="background: #fff; opacity: 0.8; border: 6px solid green; z-index: 2; padding: 3em; top: 6em; left: 6em; width: 6em;"> - z-index: 2, order: 2 - </div> - - <div style="background: #fff; opacity: 0.8; border: 6px solid blue; z-index: 1; padding: 3em; top: 1em; left: 4em; width: 6em;"> - z-index: 1, order: 3 - </div> - - <div style="background: #fff; opacity: 0.8; border: 6px solid red; z-index: auto; padding: 3em; top: 23em; left: 2em; width: 6em;"> - z-index: auto, order: 1 - </div> - - <div style="background: #fff; opacity: 0.8; border: 6px solid green; z-index: auto; padding: 3em; top: 26em; left: 6em; width: 6em;"> - z-index: auto, order: 2 - </div> - - <div style="background: #fff; opacity: 0.8; border: 6px solid blue; z-index: auto; padding: 3em; top: 21em; left: 4em; width: 6em;"> - z-index: auto, order: 3 - </div> - - </body> -</html> \ No newline at end of file diff --git a/application/third_party/dompdf/www/test/demo_01.html b/application/third_party/dompdf/www/test/demo_01.html deleted file mode 100644 index d4696381..00000000 --- a/application/third_party/dompdf/www/test/demo_01.html +++ /dev/null @@ -1,214 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<link rel="STYLESHEET" href="css/print_static.css" type="text/css" /> -</head> - -<body> - -<div id="body"> - -<div id="section_header"> -</div> - -<div id="content"> - -<div class="page" style="font-size: 7pt"> -<table style="width: 100%;" class="header"> -<tr> -<td><h1 style="text-align: left">SCHEDULE A</h1></td> -<td><h1 style="text-align: right">Job: 132-003</h1></td> -</tr> -</table> - -<table style="width: 100%; font-size: 8pt;"> -<tr> -<td>Job: <strong>132-003</strong></td> -<td>Purchasers(s): <strong>Palmer</strong></td> -</tr> - -<tr> -<td>Created: <strong>2004-08-13</strong></td> -<td>Last Change: <strong>2004-08-16 9:28 AM</strong></td> -</tr> - -<tr> -<td>Address: <strong>667 Pine Lodge Dr.</strong></td> -<td>Legal: <strong>N/A</strong></td> -</tr> -</table> - -<table style="width: 100%; border-top: 1px solid black; border-bottom: 1px solid black; font-size: 8pt;"> - -<tr> -<td>Model: <strong>Franklin</strong></td> -<td>Elevation: <strong>B</strong></td> -<td>Size: <strong>1160 Cu. Ft.</strong></td> -<td>Style: <strong>Reciprocating</strong></td> -</tr> - -</table> - -<table class="change_order_items"> - -<tr><td colspan="6"><h2>Standard Items:</h2></td></tr> - -<tbody> -<tr> -<th>Item</th> -<th>Description</th> -<th>Quantity</th> -<th colspan="2">Unit Cost</th> -<th>Total</th> -</tr> - -<tr class="even_row"> -<td style="text-align: center">1</td> -<td>Sprockets (13 tooth)</td> -<td style="text-align: center">50</td> -<td style="text-align: right; border-right-style: none;">$10.00</td> -<td class="change_order_unit_col" style="border-left-style: none;">Ea.</td> -<td class="change_order_total_col">$5,000.00</td> -</tr> - - -<tr class="odd_row"> -<td style="text-align: center">2</td> -<td>Cogs (Cylindrical)</td> -<td style="text-align: center">45</td> -<td style="text-align: right; border-right-style: none;">$25.00</td> -<td class="change_order_unit_col" style="border-left-style: none;">Ea.</td> -<td class="change_order_total_col">$1125.00</td> -</tr> - -<tr class="even_row"> -<td style="text-align: center">3</td> -<td>Gears (15 tooth)</td> -<td style="text-align: center">32</td> -<td style="text-align: right; border-right-style: none;">$19.00</td> -<td class="change_order_unit_col" style="border-left-style: none;">Ea.</td> -<td class="change_order_total_col">$608.00</td> -</tr> - -<tr class="odd_row"> -<td style="text-align: center">4</td> -<td>Leaf springs (13 N/m)</td> -<td style="text-align: center">6</td> -<td style="text-align: right; border-right-style: none;">$125.00</td> -<td class="change_order_unit_col" style="border-left-style: none;">Ea.</td> -<td class="change_order_total_col">$750.00</td> -</tr> - -<tr class="even_row"> -<td style="text-align: center">5</td> -<td>Coil springs (6 N/deg)</td> -<td style="text-align: center">7</td> -<td style="text-align: right; border-right-style: none;">$11.00</td> -<td class="change_order_unit_col" style="border-left-style: none;">Ea.</td> -<td class="change_order_total_col">$77.00</td> -</tr> - -</tbody> - - - - -<tr> -<td colspan="3" style="text-align: right;">(Tax is not included; it will be collected on closing.)</td> -<td colspan="2" style="text-align: right;"><strong>GRAND TOTAL:</strong></td> -<td class="change_order_total_col"><strong>$7560.00</strong></td></tr> -</table> - -<table class="sa_signature_box" style="border-top: 1px solid black; padding-top: 2em; margin-top: 2em;"> - - <tr> - <td>WITNESS:</td><td class="written_field" style="padding-left: 2.5in">&nbsp;</td> - <td style="padding-left: 1em">PURCHASER:</td><td class="written_field" style="padding-left: 2.5in; text-align: right;">X</td> - </tr> - <tr> - <td colspan="3" style="padding-top: 0em">&nbsp;</td> - <td style="text-align: center; padding-top: 0em;">Mr. Leland Palmer</td> - </tr> - -<tr><td colspan="4" style="white-space: normal"> -This change order shall have no force or effect until approved and signed -by an authorizing signing officer of the supplier. Any change or special -request not noted on this document is not contractual. -</td> -</tr> - -<tr> -<td colspan="2">ACCEPTED THIS -<span class="written_field" style="padding-left: 4em">&nbsp;</span> -DAY OF <span class="written_field" style="padding-left: 8em;">&nbsp;</span>, -20<span class="written_field" style="padding-left: 4em">&nbsp;</span>. -</td> - -<td colspan="2" style="padding-left: 1em;">TWIN PEAKS SUPPLY LTD.<br/><br/> -PER: -<span class="written_field" style="padding-left: 2.5in">&nbsp;</span> -</td> -</tr> -</table> - -</div> - -</div> -</div> - -<script type="text/php"> - -if ( isset($pdf) ) { - - $font = Font_Metrics::get_font("verdana"); - // If verdana isn't available, we'll use sans-serif. - if (!isset($font)) { Font_Metrics::get_font("sans-serif"); } - $size = 6; - $color = array(0,0,0); - $text_height = Font_Metrics::get_font_height($font, $size); - - $foot = $pdf->open_object(); - - $w = $pdf->get_width(); - $h = $pdf->get_height(); - - // Draw a line along the bottom - $y = $h - 2 * $text_height - 24; - $pdf->line(16, $y, $w - 16, $y, $color, 1); - - $y += $text_height; - - $text = "Job: 132-003"; - $pdf->text(16, $y, $text, $font, $size, $color); - - $pdf->close_object(); - $pdf->add_object($foot, "all"); - - global $initials; - $initials = $pdf->open_object(); - - // Add an initals box - $text = "Initials:"; - $width = Font_Metrics::get_text_width($text, $font, $size); - $pdf->text($w - 16 - $width - 38, $y, $text, $font, $size, $color); - $pdf->rectangle($w - 16 - 36, $y - 2, 36, $text_height + 4, array(0.5,0.5,0.5), 0.5); - - - $pdf->close_object(); - $pdf->add_object($initials); - - // Mark the document as a duplicate - $pdf->text(110, $h - 240, "DUPLICATE", Font_Metrics::get_font("verdana", "bold"), - 110, array(0.85, 0.85, 0.85), 0, 0, -52); - - $text = "Page {PAGE_NUM} of {PAGE_COUNT}"; - - // Center the text - $width = Font_Metrics::get_text_width("Page 1 of 2", $font, $size); - $pdf->page_text($w / 2 - $width / 2, $y, $text, $font, $size, $color); - -} -</script> - -</body> -</html> \ No newline at end of file diff --git a/application/third_party/dompdf/www/test/dom_anchor_link.html b/application/third_party/dompdf/www/test/dom_anchor_link.html deleted file mode 100644 index 851f2323..00000000 --- a/application/third_party/dompdf/www/test/dom_anchor_link.html +++ /dev/null @@ -1,210 +0,0 @@ -<!DOCTYPE html - PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<style> -body { - margin: 18pt 18pt 24pt 18pt; -} - -* { - font-family: georgia,serif; - font-weight: bold; -} - -p { - text-align: justify; - font-size: 1em; - margin: 0.5em; - padding: 10px; -} -</style> -</head> -<body> - -<script type="text/php"> - -if ( isset($pdf) ) { - - $font = Font_Metrics::get_font("verdana");; - $size = 6; - $color = array(0,0,0); - $text_height = Font_Metrics::get_font_height($font, $size); - - $foot = $pdf->open_object(); - - $w = $pdf->get_width(); - $h = $pdf->get_height(); - - // Draw a line along the bottom - $y = $h - $text_height - 24; - $pdf->line(16, $y, $w - 16, $y, $color, 0.5); - - $pdf->close_object(); - $pdf->add_object($foot, "all"); - - $text = "Page {PAGE_NUM} of {PAGE_COUNT}"; - - // Center the text - $width = Font_Metrics::get_text_width("Page 1 of 2", $font, $size); - $pdf->page_text($w / 2 - $width / 2, $y, $text, $font, $size, $color); - -} -</script> - -<h1>Lorem ipsum dolor sit amet</h1> -<h2><a name="anchor1">Anchor 1</a></h2> - -<p><a href="#anchor3">link to anchor3</a></p> -<p><a href="http://www.dompdf.com//">www.dompdf.com</a></p> -<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec at -odio vitae libero tempus convallis. Cum sociis natoque penatibus et -magnis dis parturient montes, nascetur ridiculus mus. Vestibulum purus -mauris, dapibus eu, sagittis quis, sagittis quis, mi. Morbi fringilla -massa quis velit. Curabitur metus massa, semper mollis, molestie vel, -adipiscing nec, massa. Phasellus vitae felis sed lectus dapibus -facilisis. In ultrices sagittis ipsum. In at est. Integer iaculis -turpis vel magna. Cras eu est. Integer porttitor ligula a -tellus. Curabitur accumsan ipsum a velit. Sed laoreet lectus quis -leo. Nulla pellentesque molestie ante. Quisque vestibulum est id -justo. Ut pellentesque ante in neque.</p> - -<p>Curabitur ut diam eu dui vestibulum pharetra. Nam pellentesque, justo -non hendrerit venenatis, mi orci pretium mi, et vehicula leo arcu quis -diam. Nullam mattis laoreet quam. Morbi mollis sem ut tellus. Nam mi -massa, lobortis eu, sollicitudin et, iaculis et, massa. Maecenas purus -mauris, luctus sit amet, pharetra in, facilisis sit amet, elit. Nullam -vel erat tempus purus molestie suscipit. Vestibulum odio lorem, -sollicitudin non, volutpat sit amet, tincidunt vel, nunc. Nulla quis -ante vestibulum odio feugiat facilisis. Proin lorem nisl, viverra at, -rhoncus quis, semper nec, mi. Donec euismod enim vitae velit. Nulla -sed lectus. Vivamus placerat, lacus sed vehicula sagittis, arcu massa -adipiscing lorem, bibendum luctus nisl tortor vitae leo.</p> - -<p>Etiam a mauris. Proin justo elit, accumsan sit amet, tempus et, -blandit id, tellus. Morbi varius, nisi id iaculis aliquam, lacus -ligula facilisis velit, ac pharetra ipsum augue a massa. Etiam rhoncus -commodo orci. Mauris ullamcorper sagittis turpis. Nullam magna libero, -sagittis sed, auctor faucibus, accumsan vitae, urna. Pellentesque -volutpat. Aliquam sapien ipsum, eleifend nec, imperdiet vitae, -consectetuer id, quam. Donec a urna. Suspendisse sit amet -velit. Curabitur quis nisi id dui viverra ornare. Sed condimentum enim -quis tortor. Ut condimentum, magna non tempus tincidunt, leo nibh -molestie tellus, vitae convallis dolor ante sed ante. Nunc et -metus. Phasellus ultricies. Fusce faucibus tortor sit amet mauris.</p> - -<p>Aliquam enim. Duis et diam. Praesent porta, mauris quis pellentesque -volutpat, erat elit vulputate eros, vitae pulvinar augue velit sit -amet sem. Fusce eu urna eu nisi condimentum posuere. Vivamus sed -felis. Duis eget urna vitae eros interdum dignissim. Proin justo eros, -eleifend in, porttitor in, malesuada non, neque. Etiam sed -augue. Nulla sit amet magna. Lorem ipsum dolor sit amet, consectetuer -adipiscing elit. Mauris facilisis. Curabitur massa magna, pulvinar a, -nonummy eget, egestas vitae, mauris. Quisque vel elit sit amet lorem -malesuada facilisis. Vestibulum porta, metus sit amet egestas -interdum, urna justo euismod erat, id tristique urna leo quis -nibh. Morbi non erat.</p> - -<p>Cras fringilla, nulla id egestas elementum, augue nunc iaculis nibh, -ac adipiscing nibh justo id tortor. Donec vel orci a nisi ultricies -aliquet. Nunc urna quam, adipiscing molestie, vehicula non, -condimentum non, magna. Integer magna. Donec quam metus, pulvinar id, -suscipit eget, euismod ac, orci. Nulla facilisi. Nullam nec -mauris. Morbi in mi. Etiam urna lectus, pulvinar ac, sollicitudin eu, -euismod ac, lectus. Fusce elit. Sed ultricies odio ac felis.</p> - -<h1>Cras iaculis. Nulla facilisi.</h1> -<h2><a name="anchor2">Anchor 2</a></h2> -<p><a href="#anchor1">link to anchor1</a></p> -<p>Cras iaculis. Nulla facilisi. Fusce vitae arcu. Integer lectus mauris, -ornare vel, accumsan eget, scelerisque vel, nunc. Maecenas justo urna, -volutpat vel, vehicula vel, ullamcorper nec, odio. Suspendisse laoreet -nisi sed erat. Cras convallis sollicitudin sapien. Phasellus ac erat -eu mi rutrum rhoncus. Morbi et velit. Morbi odio nisi, pharetra eget, -sollicitudin sed, aliquam at, nisl. Quisque euismod diam in -sapien. Integer accumsan urna in risus.</p> - -<p>Proin sit amet nisl. Phasellus dui ipsum, laoreet a, pulvinar id, -fringilla ut, libero. In hac habitasse platea dictumst. Maecenas mi -magna, cursus sed, rutrum eget, molestie nec, dui. Suspendisse -lacus. Vivamus nibh urna, accumsan sit amet, gravida sed, convallis a, -leo. Cras sollicitudin orci sit amet eros. Pellentesque eu odio et -velit tempor dignissim. Morbi vehicula malesuada enim. Pellentesque -tincidunt, tellus ac fringilla tempor, justo libero interdum nunc, eu -sollicitudin tortor augue nec tellus. Nullam eget leo quis tellus -gravida faucibus. Nam gravida. Curabitur rhoncus egestas -nunc. Curabitur mollis, nisi sed suscipit gravida, enim felis interdum -justo, vel accumsan magna nunc ut libero. Ut fermentum. Fusce luctus, -est sit amet feugiat lobortis, nisl eros bibendum libero, ut suscipit -felis ligula in massa. Proin congue elit et nisi. Cras ac nisl. Nunc -ullamcorper neque vel diam.</p> - -<h1>Ut pellentesque arcu ac lectus.</h1> -<p>Sed ac lorem. Ut pellentesque arcu ac lectus. Cum sociis natoque -penatibus et magnis dis parturient montes, nascetur ridiculus -mus. Pellentesque ultrices metus sollicitudin pede. Donec fermentum -est a velit fringilla mollis. Duis ligula. Fusce viverra laoreet -odio. Suspendisse sit amet ligula. Maecenas nunc velit, sagittis eu, -bibendum eu, placerat at, nibh. Praesent ut erat eget nisi gravida -imperdiet. Quisque vitae sapien. Ut eros.</p> - -<p>Donec eros ligula, dignissim vel, ultricies id, mattis in, massa. Duis -lobortis dui nec orci. Sed ullamcorper metus non massa. Aliquam eget -mauris ac nulla elementum posuere. Sed porta, augue vitae rhoncus -aliquet, felis quam eleifend est, vitae rutrum metus arcu vel -lorem. Proin laoreet, mauris sit amet aliquet eleifend, nisl sem -molestie nisi, eu varius eros ligula non erat. Integer ac -sem. Suspendisse lectus. Aliquam erat volutpat. Fusce sit amet leo -faucibus erat molestie ultrices. Maecenas lacinia lectus eget -dui. Etiam porta porttitor ante. Phasellus sit amet lacus adipiscing -enim mollis iaculis. Fusce congue, nulla a commodo aliquam, erat dui -fermentum dui, pellentesque faucibus orci enim at mauris. Pellentesque -a diam porta magna tempor posuere. Donec lorem.</p> - -<p>Sed viverra aliquam turpis. Aliquam lacus. Duis id massa. Nullam -ante. Suspendisse condimentum. Donec adipiscing, felis vel semper -sollicitudin, lacus justo pretium est, sed blandit pede risus eu -ante. Praesent ante nulla, fringilla id, ultrices et, feugiat a, -metus. Proin ac velit a metus suscipit fermentum. Integer aliquet. Sed -sapien nulla, placerat at, rutrum at, condimentum quis, libero. In -accumsan, tellus nec tincidunt malesuada, pede arcu commodo ipsum, ac -mattis tortor urna vitae enim. Aenean nonummy, mauris eget commodo -bibendum, augue sem ultrices nunc, eget rhoncus metus erat placerat -lectus. Aliquam mollis lectus in justo. Vivamus iaculis lacus sit amet -ligula. Etiam consectetuer convallis diam. Curabitur sollicitudin, -felis eu vehicula scelerisque, nisl urna aliquam orci, sit amet -laoreet mi turpis id ligula. Donec at enim non nulla adipiscing -dapibus. Aenean nisl.</p> - -<p>Ut in lacus nec enim volutpat pellentesque. Integer euismod. In odio -eros, malesuada in, mattis vel, tempor nec, sem. In libero tellus, -varius vitae, bibendum in, elementum quis, nisl. Duis tortor. Etiam at -justo. Pellentesque facilisis mauris non nunc. Praesent eros mi, -dapibus eget, placerat ac, lobortis quis, sem. Nulla rhoncus -turpis. Nulla vitae mi. Proin id massa. Nunc eros.</p> - -<h1>Aliquam molestie pulvinar ligula.</h1> -<h2><a name="anchor3">Anchor 3</a></h2> -<p><a href="#anchor2">link to anchor2</a></p> -<p>Vestibulum dui risus, varius ut, semper et, consequat ultrices, -felis. Pellentesque iaculis urna in velit. Ut pharetra. Nunc -fringilla, nisi vitae fringilla placerat, enim justo semper erat, -mollis feugiat leo neque eu sem. Vestibulum orci urna, suscipit a, -accumsan nec, fringilla in, risus. Nullam ante. Nullam nec -eros. Nullam varius. Nulla facilisi. In auctor libero in -metus. Aliquam porttitor congue eros. Nulla facilisi. Mauris euismod -turpis ut felis. Ut nunc nisl, cursus quis, eleifend at, viverra -bibendum, lacus. Donec consequat lacus eu sapien. Fusce pulvinar -lectus quis nunc. In hac habitasse platea dictumst.</p> - -<p>Aliquam molestie pulvinar ligula. Maecenas imperdiet, urna eget -ultrices adipiscing, nibh ante elementum neque, id molestie massa quam -ut nunc. Nullam porta. Phasellus a magna in sem volutpat -viverra. Quisque aliquet nunc ac turpis. Mauris dolor enim, viverra -rutrum, placerat et, laoreet et, justo. In id nulla. Donec -erat. Phasellus nec mi sed velit mollis cursus. Vestibulum -tincidunt. Praesent dui libero, facilisis eu, vulputate eget, aliquet -nec, ipsum. Pellentesque in nisl in mauris pretium euismod.</p> - -</body> </html> diff --git a/application/third_party/dompdf/www/test/dom_br.html b/application/third_party/dompdf/www/test/dom_br.html deleted file mode 100644 index 2402bf85..00000000 --- a/application/third_party/dompdf/www/test/dom_br.html +++ /dev/null @@ -1,46 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head> -<title></title> -</head> -<body> -<h1>Line break test</h1> -<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec at -odio vitae libero tempus convallis. Cum sociis natoque penatibus et -magnis dis parturient montes, nascetur ridiculus mus. Vestibulum purus -mauris, dapibus eu, sagittis quis, sagittis quis, mi. Morbi fringilla -massa quis velit. Curabitur metus massa, semper mollis, molestie vel,<br/> -adipiscing nec, massa. Phasellus vitae felis sed lectus dapibus -facilisis. In ultrices sagittis ipsum. In at est. Integer iaculis -turpis vel magna. Cras eu est. Integer porttitor ligula a -<br/> -<br/> -tellus. Curabitur accumsan ipsum a velit. Sed laoreet lectus quis -leo. Nulla pellentesque molestie ante. Quisque vestibulum est id -justo. Ut pellentesque ante in neque.</p> - -<p>Line break at beginning of next paragraph:</p> -<p style="border: 0.5pt solid blue"><br/> -Line 2</p> - -<p>Line break within a font tag: -<font face="Trebuchet MS,Arial,Helvetica,sans-serif">ABCDE<br/>FGHIJK</font></p> - -<p>Line break within two nested spans: <span>span 1 <span>2<br/>break</span></span></p> - -<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec at -odio vitae libero tempus convallis. Cum sociis natoque penatibus et -magnis dis parturient montes, nascetur ridiculus mus. Vestibulum purus -mauris, dapibus eu, sagittis quis, sagittis quis, mi. Morbi fringilla -massa quis velit. Curabitur metus massa, semper mollis, molestie vel,<br/> -adipiscing nec, massa. Phasellus vitae felis sed lectus dapibus -facilisis. In ultrices sagittis ipsum. In at est. Integer iaculis -turpis vel magna. Cras eu est. Integer porttitor ligula a -<br/> -<br/> -tellus. Curabitur accumsan ipsum a velit. Sed laoreet lectus quis -leo. Nulla pellentesque molestie ante. Quisque vestibulum est id -justo. Ut pellentesque ante in neque.</p> - -</body> -</html> diff --git a/application/third_party/dompdf/www/test/dom_large_table.html b/application/third_party/dompdf/www/test/dom_large_table.html deleted file mode 100644 index 0bf54497..00000000 --- a/application/third_party/dompdf/www/test/dom_large_table.html +++ /dev/null @@ -1,2198 +0,0 @@ -<!DOCTYPE html - PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<style> -/* Style definitions for pdfs */ - -/**********************************************************************/ -/* Default style definitions -/**********************************************************************/ - -/* General ------------------------------------------------------------------------*/ -body { - background-color: #114C8D; - color: #000033; - font-family: "verdana", "sans-serif"; - margin: 0px; - padding-top: 0px; - font-size: 1em; -} - -h1 { - font-size: 1.1em; - color: #114C8D; - font-style: italic; -} - -h2 { - font-size: 1.05em; - color: #114C8D; -} - -h3 { - font-size: 1em; - color: #114C8D; -} - -img { - border: none; -} - -img.border { - border: 1px solid #114C8D; -} - -pre { - font-family: "verdana", "sans-serif"; - color: #FFFFff; - font-size: 0.7em; -} - -ul { - color: #BEAC8B; - list-style-type: circle; - list-style-position: inside; - margin: 0px; - padding: 3px; -} - -li { - color: #000033; -} - -li.alpha { - list-style-type: lower-alpha; - margin-left: 15px; -} - -p { - font-size: 0.8em; -} - -a:link, -a:visited { - text-decoration: none; - color: #114C8D; -} - -a:hover { - text-decoration: underline; - color: #860000; -} - -hr { - border: 0; -} - -#page_header { - position: relative; /* required to make the z-index work */ - z-index: 2; -} - -#body { - background-color: #F9F0E9; - padding: 12px 0.5% 2em 3px; - min-height: 20em; - margin: 0px; - width: 100%; -} - -#body pre { - color: #000033; -} - -#left_column { - width: 84%; - height: auto; - padding-right: 8px; - padding-bottom: 30px; -} - -#right_column { -/* position: absolute; - right: 0.5%;*/ - padding-left: 16px; - width: 15%; - min-width: 160px; -} - - -/* Inputs ------------------------------------------------------------------------*/ -input { - color: #114C8D; - border: 1px solid #114C8D; - background-color: #FFFFff; - font-family: "verdana", "sans-serif"; - font-size: 1em; - padding-left: 3px; -} - -select { - color: #114C8D; - border: 1px solid #114C8D; - background-color: #FFFFff; - font-family: "verdana", "sans-serif"; - font-size: 1em; -} - -textarea { - color: #114C8D; - border: 1px solid #114C8D; - background-color: #FFFFff; - font-family: "verdana", "sans-serif"; - font-size: 1em; -} - -a.button { - color: #114C8D; - border: 1px solid #114C8D; - background-color: #FFFFff; - font-size: 11px; - font-weight: normal; -/* font-size: 0.75em; */ - -moz-border-radius: 4px; - padding: 1px 6px 1px 6px; - cursor: pointer; - white-space: nowrap; - text-align: center; -} - -a.button:hover { - text-decoration: none; -} - -a.block_button { - color: #114C8D; - border: 1px solid #114C8D; - background-color: #FFFFff; - font-size: 11px; - -moz-border-radius: 4px; - padding: 1px 6px 1px 6px; - cursor: pointer; - white-space: nowrap; - text-align: center; - display: block; -} - -a.block_button:hover { - text-decoration: none; -} - -input[type=button], -input[type=submit], -input[type=reset] { - -moz-border-radius: 4px; - cursor: pointer; - font-size: 11px; -/* font-size: 0.75em; */ - padding: 0px 3px 0px 3px; -} - -input[type=checkbox] { - border: none; -} - -input[disabled], -input[readonly] { - background-color: #dddddd; -} - -input.ok { - padding-left: 12px; - background-image: url(/images/check.png); - background-repeat: no-repeat; - background-position: 3px center; -} - -input.cancel { - padding-left: 12px; - background-image: url(/images/small_cancel.png); - background-repeat: no-repeat; - background-position: 3px center; -} - -/* Footer ------------------------------------------------------------------------*/ -#footer { - color: #FFFFff; - border-top: 1px solid #000033; -} - -#copyright { - padding: 5px; - font-size: 0.6em; - background-color: #114C8D; -} - -#footer_spacer_row { - border-spacing: 0; - width: 100%; -} - -#footer_spacer_row td { - padding: 0px; - border-bottom: 1px solid #000033; - background-color: #F7CF07; - height: 2px; - font-size: 2px; - line-height: 2px; -} - -#logos { - padding: 5px; - float: right; -} - - -/* Plugins ------------------------------------------------------------------------*/ -#plugin_box { - width: 100%; - min-width: 160px; - padding: 0px; - float: right; - background-color: #EDF2F7; - border: 1px solid #114C8D; - margin: 0px 0px 2em 0px; -} - -.plugin_header { - font-size: 0.7em; - font-weight: bold; - padding: 2px; - background-color: #114C8D; - color: #FFFFff; -} - -ul.side_menu_list>li { - color: #BEAC8B; -} - -ul.side_menu_list>li { - font-size: 0.7em; - font-weight: bold; - margin-left: 0.5%; - list-style-type: none; -} - -ul.side_menu_sublist>li { - font-size: 0.7em; - color: black; - font-weight: normal; - margin-left: 10%; - list-style-position: outside; -} - - -.plugin_shade { - float: right; -} - - -#plugin_box p { - font-size: 0.7em; - margin: 0px 0px 3px 5%; -} - -.plugin { - border-spacing: 0px; - width: 98%; - margin: 3px auto 3px auto; -} - -.plugin td { - font-size: 0.7em; -} - -.plugin td.field { - background-color: #EDF2F7; -} - -.plugin td.field_center { - background-color: #EDF2F7; -} - -.plugin td.label { - background-color: #EDF2F7; -} - -.plugin tr.foot td { - text-align: center; - font-size: 0.7em; -} - -/* Menu ------------------------------------------------------------------------*/ -#main_menu { - width: 100%; - position: absolute; - margin: 0px; - font-size: 0.7em; - background-color: #F9F0E9; - z-index: 1; -} - -#menu_group_head { - margin: 0px; - position: relative; - background-color: #EDF2F7; - white-space: nowrap; - font-weight: bold; - border-bottom: 1px solid #114C8D; - padding: 3px 3px 2px 3px; - color: #114C8D; -} - -#menu_group_head>a { - padding: 4px 6px 2px 6px; -} - -#menu_group_head>a:hover { - text-decoration: none; - cursor: pointer; - color: #FFFFff; - background-color: #114C8D; -} - -ul.menu_group { - z-index: 2; - position: absolute; - display: none; - background-color: #EDF2F7; - border: 1px solid #114C8D; - border-top: none; - padding: 2px 0px 4px 0px; -} - -ul.menu_group li { - color: #114C8D; - list-style: none; - margin-top: 4px; - margin-bottom: 4px; - padding: 2px 12px 2px 12px; - font-size: 1.05em; -} - -ul.menu_group>a:hover, -ul.menu_group>a:hover>li, -ul.menu_group>a>li:hover { - text-decoration: none; - color: #114C8D; - background-color: #DDE1E6; -} - -/* Message area ------------------------------------------------------------------------*/ -#message_area { - background-color: #EDF2F7; - color: #000033; - margin-left: 0.5%; -/* margin-right: 19.5%; */ - margin-bottom: 1em; - padding: 0.2em 1% 0.5em 1%; - border: 1px solid #114C8D; -} - -#message_area h2 { - margin: 0px 0px 0.5em 0px; - font-size: 1em; - font-style: italic; -} - -.message { - font-size: 0.8em; -} - -/* Tooltips ------------------------------------------------------------------------*/ -.tooltip { - display: none; - position: absolute; - font-size: 10px; - line-height: 12px; - width: 20em; - background-color: #EDF2F7; - border: 1px solid #114C8D; - color: #114C8D; - padding: 5px; - z-index: 3; -} - -/* Section Header ------------------------------------------------------------------------*/ -#section_header { -/* margin-right: 19.5%; */ - background-color: #BEAC8B; - padding: 5px; - margin-right: 8px; - border: 1px solid #8B7958; -} - -#job_info { - font-weight: bold; -} - -#job_buttons a.button { - background-color: #E5D9C3; -} - -.header_details { - border-spacing: 0px; -} - -.header_details td { - font-size: 0.6em; -} - -.header_label { - padding-left: 20px; - font-weight: bold; -} - -.header_field { - padding-left: 5px; -} - - -/* Content ------------------------------------------------------------------------*/ -.page_buttons { - text-align: center; - margin: 3px; - font-size: 0.7em; - white-space: nowrap; - font-weight: bold; - width: 74%; -} - -.link_bar { - white-space: nowrap; - padding: 3px 0px 0px 0px; - margin: -1px 8px 2em 0px; - font-size: 0.7em; - text-align: center; -} - -.link_bar a { - background-color: #E5D9C3; - border: 1px solid #8B7958; - -moz-border-radius-bottomleft: 4px; - -moz-border-radius-bottomright: 4px; - border-top: none; - padding: 2px 3px 3px 3px; - margin-right: 2px; - white-space: nowrap; -} - -.link_bar a.selected, -.link_bar a:hover { - background-color: #BEAC8B; - color: #114C8D; - padding-top: 3px; - border: 1px solid #8B7958; - border-top: none; - text-decoration: none; -} - -.page_menu li { - margin: 5px; - font-size: 0.8em; -} - - -/* Pop-Up ------------------------------------------------------------------------*/ -#popup_header { - padding: 3px; - text-align: center; -} - -#popup_body { - background-color: #F9F0E9; - padding-bottom: 5px; - padding-top: 5px; -} - -#popup_content { - padding: 0.2em 1% 0px 1%; -} - - -/* Tables ------------------------------------------------------------------------*/ -table { - empty-cells: show; -} - -.head td { - color: #8B7958; - background-color: #E5D9C3; - font-weight: bold; - font-size: 0.7em; - padding: 3px; -} - -.head input { - font-weight: normal; -} - -.sub_head td { - border: none; - white-space: nowrap; - font-size: 10px; -} - -.foot td { - color: #8B7958; - background-color: #E5D9C3; - font-size: 0.8em; -} - -.label { - color: #8B7958; - background-color: #F8F5F2; - padding: 3px; - font-size: 0.75em; -} - -.label_right { - color: #8B7958; - background-color: #F8F5F2; - padding: 3px; - font-size: 0.75em; - text-align: right; - padding-right: 1em; -} - -.sublabel { - color: #8B7958; - font-size: 0.6em; - padding: 0px; - text-align: center; -} - -.field { - color: #000033; - background-color: #F9F0E9; - padding: 3px; - font-size: 0.75em; -} - -.field_center { - color: #000033; - background-color: #F9F0E9; - padding: 3px; - font-size: 0.75em; - text-align: center; -} - -.field_nw { - color: #000033; - background-color: #F9F0E9; - padding: 3px; - font-size: 0.75em; - white-space: nowrap; -} - -.field_money { - color: #000033; - background-color: #F9F0E9; - padding: 3px; - font-size: 0.75em; - white-space: nowrap; - text-align: right; -} - -.field_total { - color: #000033; - background-color: #F9F0E9; - padding: 3px; - font-size: 0.75em; - white-space: nowrap; - text-align: right; - font-weight: bold; - border-top: 1px solid black; -} - -/* Table Data ------------------------------------------------------------------------*/ -.h_scrollable { - overflow: -moz-scrollbars-horizontal; -} - -.v_scrollable { - overflow: -moz-scrollbars-vertical; -} - -.scrollable { - overflow: auto;/*-moz-scrollbars-horizontal;*/ -} - -tr.head>td.center, -tr.list_row>td.center, -.center { - text-align: center; -} - -.left, -tr.head>td.left, -tr.list_row>td.left { - text-align: left; - padding-left: 2em; -} - -.total, -.right, -.list tr.head td.right, -tr.list_row td.right, -tr.foot td.right, -tr.foot td.total { - text-align: right; - padding-right: 2em; -} - -.list tr.foot td { - font-weight: bold; -} - -.no_wrap { - white-space: nowrap; -} - -.bar { - border-top: 1px solid black; -} - -.total { - font-weight: bold; -} - -.summary_spacer_row { - line-height: 2px; -} - -.light { - color: #999999; -} - -/* Detail ------------------------------------------------------------------------*/ -.fax_head, -.narrow, -.detail { - border-spacing: 1px; - border-top: 1px solid #8B7958; - border-bottom: 1px solid #8B7958; - width: 99%; - padding: 3px; - margin-bottom: 10px; -} - -.detail td.label { - width: 16%; - background-color: #F9F0E9; -} - -.detail td.field { - width: 33%; - text-align: center; - background-color: #F8F5F2; -} - -.detail_spacer_row td { - background-color: #BEAC8B; - font-size: 2px; - line-height: 2px; - padding: 0px; - border-top: 1px solid #F9F0E9; - border-bottom: 1px solid #F9F0E9; -} - -.detail td.field_money { - width: 33%; - background-color: #F8F5F2; -} - -.narrow { - width: 60%; -} - -.narrow td.label { - width: 50%; - background-color: #F9F0E9; -} - -.narrow td.field_money, -.narrow td.field_total, -.narrow td.field { - width: 49%; -} - -.narrow td.field_money, -.narrow td.field { - background-color: #F8F5F2; -} - -.narrow td.field_total, -.narrow td.field_money { - padding-right: 4em; -} - -.detail td.field { - text-align: center; - background-color: #F8F5F2; -} - -.fax_head td.label { - width: 7%; -} - -.fax_head td.field { - width: 26%; -} - -.operation { - width: 1%; -} - -/* Wizards ------------------------------------------------------------------------*/ -.wizard { -/* border-spacing: 0px; */ - border-top: 1px solid #8B7958; - border-bottom: 1px solid #8B7958; -} - -.wizard_buttons { - font-size: 0.75em; - margin: 3px; -} - -/* Forms ------------------------------------------------------------------------*/ -.form { -/* border-spacing: 0px; */ - border-top: 1px solid #8B7958; - border-bottom: 1px solid #8B7958; - padding: 1px; -} - -.form tr.head input { - font-weight: normal; -} - -.form tr.head td { - padding: 2px; -} - -.form tr.foot td { - text-align: center; - padding: 2px; -} - - -/* Lists ------------------------------------------------------------------------*/ -.list { - border-collapse: collapse; - border-spacing: 0px; - border-top: 1px solid #8B7958; - border-bottom: 1px solid #8B7958; - width: 99%; - margin-top: 3px; -} - -.list tr.head td { - font-size: 0.7em; - white-space: nowrap; - padding-right: 0.65em; - border-bottom: 1px solid #8B7958; -} - -.list table.sub_head td { - border: none; - white-space: nowrap; - font-size: 10px; -} - -.list tr.foot td { - border-top: 1px solid #8B7958; - font-size: 0.7em; -} - -tr.list_row>td { - background-color: #EDF2F7; - border-bottom: 1px dotted #8B7958; - font-size: 0.65em; - padding: 3px; -} - -tr.list_row:hover td { - background-color: #F8EEE4; -} - -tr.problem_row>td { - background-color: #FDCCCC; - border-bottom: 1px dotted #8B7958; - font-size: 0.65em; - padding: 3px; -} - -tr.problem_row:hover td { - background-color: #F8EEE4; -} - -.row_form td { - font-size: 0.7em; - padding: 3px; - white-space: nowrap; -/* text-align: center; */ -} - -.row_form td.label { - text-align: left; - white-space: normal; -} - -.inline_header td { - color: #8B7958; - font-size: 0.6em; - white-space: nowrap; - text-align: center; -} - -/* Sub-Tables ------------------------------------------------------------------------*/ -.sub_table { - border-spacing: 0px; -} - -.sub_table tr.head td { - font-size: 11px; - padding: 3px; - background-color: #F9F0E9; -} - -.sub_table td { - padding: 3px; -} - -/* Reports ------------------------------------------------------------------------*/ -.report { - border-collapse: collapse; - border-spacing: 0px; - border-top: 1px solid #8B7958; - border-bottom: 1px solid #8B7958; - width: 80%; - margin-top: 3px; -} - -.report tr td { - padding: 4px 6px; -} - -.report tr.head td { - font-size: 0.7em; - white-space: nowrap; - text-align: center; - border-bottom: 1px solid #8B7958; -} - -.report tr.foot td { - font-size: 0.7em; - border-top: 1px solid #8B7958; -} - -.report tr.list_row>td { - background-color: #EDF2F7; - border-bottom: 1px dotted #8B7958; - font-size: 0.65em; -} - -.report tr.list_row:hover td { - background-color: #F8EEE4; -} - -.report td.total_col { - font-weight: bold; - border-left: 1px dotted #8B7958; - text-align: center; - width: 10%; -} - -.report tr.head td.group_col { - text-align: left; -} - -.report td.group_col { - font-weight: bold; - text-align: left; - border-right: 1px dotted #8B7958; - width: 12%; -} - -.graph { - width: 80%; - margin-top: 2em; - margin-bottom: 3em; - text-align: center; -} - - -/* Notifications ------------------------------------------------------------------------*/ -.notification_list { - border-collapse: collapse; - border-spacing: 0px; - border-top: 1px solid #8B7958; - border-bottom: 1px solid #8B7958; - width: 99%; -} - -.notification_list tr.head td { - font-size: 0.65em; - white-space: nowrap; - text-align: center; - border-bottom: 1px solid #8B7958; -} - -.notification_list tr.foot td { - border-top: 1px solid #8B7958; -} - -.notification_list tr.list_row td { - padding: 7px; -} - -div.notif_list_text { - margin-bottom: 1px; - font-size: 1.1em; -} - -.list_row>td.notif_list_job { - white-space: nowrap; - text-align: center; - font-weight: bold; - font-size: 0.65em; - white-space: nowrap; -} - -/* Some of the system messages are long and look bad with a highlighted -background... */ -#system_notif_table tr.list_row:hover > td { - background-color: #EDF2F7; -} - -.notif_select_column { - width: 2%; - padding: 0px; - text-align: center; -} - -.notif_job_column { - width: 8%; - white-space: nowrap; - padding-left: 0px; - font-weight: bold; - text-align: center; -} - -.notif_notif_column { - width: auto; -} - -.notif_date_column { - width: 15%; - text-align: center; - white-space: nowrap; - padding-right: 3px; -} - - - -/* Notes ------------------------------------------------------------------------*/ -/* Note Table */ -table#topic_list { - border-bottom: 1px solid #E5D9C3; - border-collapse: separate; -} - -/* Note Form */ -.note_form { - background-color: #F9F0E9; - position: absolute; - left: 20%; - display: none; - border: 2px solid #114C8D; -} - -.note_form table.form { - margin-top: 2em; -} - -.handle { - background-color: #114C8D; - color: #FFFFff; - margin-bottom: 3px; - height: 16px; -} - -.note_form_close { - font-weight: bold; - font-size: 9px; - padding: 0px 2px 0px 2px; - margin-right: 2px; - position: absolute; - right: 0%; - border: 1px solid #114C8D; -} - -a.note_form_close:hover { - text-decoration: none; -} - -.list_row:hover>td table.add_note tr.add_note_foot td, -.list_row:hover>td table.add_note tr.add_note_head td { background-color: #E5D9C3; } -.list_row:hover>td table.add_note tr td { background-color: #F9F0E9; } - -.add_note td { - border: none; - padding: 3px; - background-color: #F9F0E9; - font-size: 9px; -} - -.add_note_head td { - background-color: #E5D9C3; - border-top: 1px solid #8B7958; - border-bottom: 1px solid #8B7958; - color: #8B7958; - padding: 3px; - text-align: center; - font-weight: bold; - font-size: 9px; -} - -.add_note input { - color: #114C8D; - background-color: #FFFFff; - border: 1px solid #114C8D; - padding: 1px 2px 1px 2px; - text-decoration: none; - font-size: 9px; -} - -.add_note textarea { - color: #114C8D; - background-color: #FFFFff; - border: 1px solid #114C8D; - padding: 1px 2px 1px 2px; - font-family: "verdana", "sans-serif"; - font-size: 9px; -} - -.add_note select { - color: #114C8D; - background-color: #FFFFff; - font-size: 9px; -} - -.add_note_foot td { - background-color: #E5D9C3; - border-bottom: 1px solid #8B7958; - color: #8B7958; - padding: 3px; - text-align: center; - font-weight: bold; - font-size: 9px; -} - -/* Note List */ -.note>td { - background-color: #EDF2F7; - padding-left: 10px; - border-bottom: 1px dotted #E5D9C3; -} - -.note:hover>td, -.note:hover>td>p { - background-color: #EDF2F7; -} - -.note_author { - font-size: 0.65em; - text-align: center; - border-right: 1px dotted #E5D9C3; -} - -.note p { - margin-left: 3%; - font-size: 0.75em; - background-color: #EDF2F7; -} - -.topic_spacer td { - border-bottom: 1px solid #8B7958; - line-height: 2px; -} - -td.note_indent { - background-color: #F9F0E9; - width: 2%; - border-bottom: none; -} - -.note_control td { - padding-left: 2%; - padding-bottom: 1%; - font-weight: normal; - font-size: 0.6em; - background-color: #EDF2F7; - border-bottom: 1px dotted #E5D9C3; -} - -.topic_title { - font-size: 0.8em; - font-weight: bold; -} - -.note_title { - font-size: 0.8em; -} - -.problem .topic_title { - color: #860000; -} - -.thread>tr { display: none; } - -/* Summaries ------------------------------------------------------------------------*/ -.summary { - border: 1px solid black; - background-color: white; - padding: 1%; - font-size: 0.8em; -} - -.summary h1 { - color: black; - font-style: normal; -} - -/* Print preview ------------------------------------------------------------------------*/ -.page { - background-color: white; - padding: 0px; - border: 1px solid black; -/* font-size: 0.7em; */ - width: 95%; - margin-bottom: 15px; - margin-right: 5px; - padding: 20px; -} - -.page table.header td { - padding: 0px; -} - -.page table.header td h1 { - padding: 0px; - margin: 0px; -} - -.page h1 { - color: black; - font-style: normal; - font-size: 1.3em; -} - -.page h2 { - color: black; -} - -.page h3 { - color: black; - font-size: 1em; -} - -.page p { - text-align: justify; - font-size: 0.8em; -} - -.page table { - font-size: 0.8em; -} - -.page em { - font-weight: bold; - font-style: normal; - text-decoration: underline; - margin-left: 1%; - margin-right: 1%; -} - -.page table.money_table { - font-size: 1.1em; - border-collapse: collapse; - width: 85%; - margin-left: auto; - margin-right: auto; -} - -.page table.money_table tr.foot td { - font-size: 1em; - border-top: 0.4pt solid black; - font-weight: bold; - background-color: white; - color: black; -} - -.page table.money_table tr.foot td.right { - padding-right: 1px; -} - -.written_field { - border-bottom: 1px solid black; -} - -.page .written_field { - border-bottom: 0.4pt solid black; -} - -.page .indent * { margin-left: 4em; } - -.checkbox { - border: 1px solid black; - padding: 1px 2px; - font-size: 7px; - font-weight: bold; -} - - -table.signature_table { - width: 80%; - font-size: 0.7em; - margin: 2em auto 2em auto; -} - -table.signature_table tr td { - padding-top: 1.5em; - vertical-align: top; - white-space: nowrap; -} - -#special_conditions { - font-size: 1.3em; - font-style: italic; - margin-left: 2em; - font-weight: bold; -} - -.sa_head p { - font-size: 1em; -} - - -.page hr { - border-bottom: 1px solid black; -} - -.page table.detail, -.page table.fax_head { - margin-left: auto; - margin-right: auto; -} - -.page .narrow, -.page .fax_head { - border: none; -} - -.page tr.head td { - color: black; - background-color: #eee; -} - -.page td.label { - color: black; - background-color: white; - width: 20%; -} - -.page td.label_right { - color: black; - background-color: white; -} - -.page td.field { - background-color: white; - font-weight: bold; -} - -.page td.field_money { - background-color: white; -} - -.page td.field_total { - font-weight: bold; - background-color: white; -} - -.page tr.detail_spacer_row td { - background-color: white; - border-top: 1px solid black; -} - -.page .header { - border-spacing: 0px; - border-collapse: collapse; - padding: 0px; -} - -.page .header tr td { - border-top: 1px solid black; - border-bottom: 1px solid black; - background-color: #eee; -} -/* Style definitions for printable pages */ - - -/* Hide non-printing stuff ------------------------------------------------------------------------*/ -#page_header, -#main_menu, -#right_column, -#footer { - display: none; -} - -/* General ------------------------------------------------------------------------*/ -@page { - margin: 0.25in; -} - -body { - background-color: white; - color: black; -} - -h1 { - color: black; -} - -h2 { - color: black; -} - -pre { - color: black; -} - -ul { - color: black; -} - -a:link, -a:visited { - color: black; -} - -a:hover { - text-decoration: none; - color: black; -} - -p a { - display: none; -} - -#body { - background-color: white; -} - -#body pre { - color: black; -} - -/* Inputs ------------------------------------------------------------------------*/ -input { - color: black; - border: 1px solid black; - background-color: white; -} - -select { - color: black; - border: 1px solid black; - background-color: white; -} - -textarea { - color: black; - border: 1px solid black; - background-color: white; -} - -a.button { - display: none; -} - -a.block_button { - display: none; -} - -input[type=button], -input[type=submit], -input[type=reset] { - display: none; -} - -/* Tooltips ------------------------------------------------------------------------*/ -.tooltip { - display: none; -} - -/* Message area ------------------------------------------------------------------------*/ -#message_area { - display: none; -} - -/* Section Header ------------------------------------------------------------------------*/ -#section_header { - background-color: #ddd; - border: 1px dashed #666; -} - -/* Content ------------------------------------------------------------------------*/ -.page_buttons { - display: none; -} - -.link_bar { - display: none; -} - -/* Tables ------------------------------------------------------------------------*/ -.head td { - color: black; - background-color: white; -} - -.head input { -} - -.foot td { - color: black; - background-color: white; -} - -.label { - color: black; - background-color: white; -} - -.sublabel { - color: black; -} - -.field { - color: black; - background-color: white; -} - -.field_center { - color: black; - background-color: white; -} - -.field_nw { - color: black; - background-color: white; -} - -.field_money { - color: black; - background-color: white; -} - -.field_total { - color: black; - background-color: white; -} - -/* Detail ------------------------------------------------------------------------*/ -.detail { - border-top: 1px solid black; - border-bottom: 1px solid black; -} - -.detail td.label { - background-color: white; -} - -.detail td.field_total, -.detail td.field { - font-weight: bold; - background-color: #eee; -} - -.detail td.field_money { - background-color: #eee; -} - -.detail_spacer_row td { - background-color: white; - border-top: 1px solid black; - border-bottom: 1px solid black; -} - -.narrow td.label { - background-color: white; -} - -.narrow td.field { - background-color: #eee; -} - -/* Wizards ------------------------------------------------------------------------*/ -.wizard { - border-top: 1px solid black; - border-bottom: 1px solid black; -} - -/* Forms ------------------------------------------------------------------------*/ -.form { - border-top: 1px solid black; - border-bottom: 1px solid black; -} - -/* Lists ------------------------------------------------------------------------*/ -.list { - border-top: 1px solid black; - border-bottom: 1px solid black; -} - -.list tr.head>td { - border-bottom: 1px solid black; -} -.list tr.foot td { - border-top: 1px solid black; -} - -tr.list_row>td { - background-color: white; - border-bottom: 1px dotted #666; -} - -tr.list_row:hover td { - background-color: white; -} - -/* Notifications ------------------------------------------------------------------------*/ -.notification_list { - border-top: 1px solid black; - border-bottom: 1px solid black; -} - -.notification_list tr.head td { - border-bottom: 1px solid black; -} - -.notification_list tr.foot td { - border-top: 1px solid black; -} - -#system_notif_table tr.list_row:hover > td { - background-color: white; -} - -/* Notes ------------------------------------------------------------------------*/ -/* Note Table */ -table#topic_list { - border-bottom: 1px solid #eee; -} - -/* Note Form */ -.note_form { - display: none; -} - -/* Note List */ -.note>td { - background-color: white - border-bottom: 1px dotted #eee; -} - -.note:hover>td, -.note:hover>td>p { - background-color: white; -} - -.note_author { - border-right: 1px dotted #eee; -} - -.note td { - background-color: white; -} - -.note p { - background-color: white; -} - -.topic_spacer td { - border-bottom: 1px solid black; -} - -td.note_indent { - background-color: white; -} - -.note_control td { - background-color: white; - border-bottom: 1px dotted #eee; -} - -.problem .topic_title { - color: black; -} - -/* Summaries ------------------------------------------------------------------------*/ -.summary { - border: 1px solid black; - background-color: white; -} - -.summary h1 { - color: black; -} - -/* Pages ------------------------------------------------------------------------*/ -.page>*>p, .page>p { - font-size: 1.5em; -} - -.written_field { - font-size: 1em; - border-bottom: 1px solid black; -} - -.page h1 { - font-size: 1em; -} - -.page h2 { - font-size: 0.9em; -} - -@page { - margin-bottom: 0.75in; -} -/* General ------------------------------------------------------------------------*/ -body { background-color: white; } - -/* Detail ------------------------------------------------------------------------*/ - -.narrow td.field, -.detail td.field { - text-align: left; - padding-left: 1em; - background-color: white; -} - -/* Lists ------------------------------------------------------------------------*/ -.list tr.head td { - background-color: #eee; -} - -tr.list_row>td { - background-color: white; - border-bottom: 0.7pt dotted #666; -} - -.list tr.foot td { - background-color: #eee; -} - -/* Pages ------------------------------------------------------------------------*/ -.page { - font-size: 1em; - border: none; - margin: none; - width: auto; - padding: 0px; -} - -.foot td { - font-size: 1em; -} - - -.page>*>p, .page>p { - font-size: 0.8em; -} - - -table.signature_table { - width: 88%; - font-size: 0.6em; -} - -#special_conditions { - font-size: 1.5em; -} - -.header h1 { - font-size: 0.8em; -} - -p.small { - font-size: 0.8em; -} - -.page td { - padding: 1px; -} - -td.label { - font-size: 0.7em; -} - -td.field { - font-size: 0.7em; -} - -td.field_money { - font-size: 0.7em; -}</style> -</head> -<body class="page"> - -<script type="text/php"> - -if ( isset($pdf) ) { - - $font = Font_Metrics::get_font("sans-serif"); - $size = 6; - $color = array(0,0,0); - $text_height = Font_Metrics::get_font_height($font, $size); - - $foot = $pdf->open_object(); - - $w = $pdf->get_width(); - $h = $pdf->get_height(); - - // Draw a line along the bottom - $y = $h - 2.5 * $text_height - 24; - $pdf->line(16, $y, $w - 16, $y, array(0,0,0), 1); - - $y += $text_height; - - // Add the job number - $text = "Job: 404-135"; - $pdf->text(16, $y, $text, $font, $size, $color); - - $pdf->close_object(); - $pdf->add_object($foot, "all"); - - - if ( !"2004-11-18 17:19:38" ) { - // Add an initals box if the document has not already been approved - - global $initials; - $initials = $pdf->open_object(); - - $text = "Initials:"; - $width = Font_Metrics::get_text_width($text, $font, $size); - $pdf->text($w - 16 - $width - 38, $y, $text, $font, $size, $color); - $pdf->rectangle($w - 16 - 36, $y - 2, 36, $text_height + 4, array(0.5,0.5,0.5), 0.5); - - $pdf->close_object(); - $pdf->add_object($initials); - - } else { - - // Mark the document as a duplicate if has been approved - $watermark = $pdf->open_object(); - $pdf->text(110, $h - 240, "DUPLICATE", Font_Metrics::get_font("verdana", "bold"), - 110, array(0.5, 0.5, 0.5), 0, 0, -52); - - $text = "Approved: 2004-11-18"; - $width = Font_Metrics::get_text_width($text, $font, $size); - $pdf->text($w - 16 - $width, $y, $text, $font, $size, $color); - - $pdf->close_object(); - $pdf->add_object($watermark, "all"); - } - - $text = "Page {PAGE_NUM} of {PAGE_COUNT}"; - $width = Font_Metrics::get_text_width("Page 1 of 2", $font, $size); - - $pdf->page_text($w / 2 - $width / 2, $y, $text, $font, $size, $color); - -} -</script> -<table style="width: 100%" class="header"> -<tr> -<td style="width: 50%; vertical-align: middle;"> -<h1 style="text-align: left">SCHEDULE A</h1> -</td> - -<td style="width: 50%; text-align: right;"> -<h1 style="text-align: right">404-135 - Schedule A</h1> -<span style="font-weight: bold; font-size: 0.7em;">APPROVED: 2004-11-18</span> -</td> -</tr> - -</table> - -<table class="detail" style="margin: 0px; border-top: none;"> - -<tr> -<td class="label">Job:</td> -<td class="field">404-135</td> -<td class="label">Purchasers:</td> -<td class="field"> -Komant</td> -</tr> - -<tr> -<td class="label">Created:</td> -<td class="field">2004-09-28</td> -<td class="label">Last change:</td> -<td class="field">2004-11-18</td> - -</tr> - -<tr> -<td class="label">Job address:</td> -<td class="field">2904-26 Street</td> -<td class="label">Legal:</td> -<td class="field">28B/22/032-5210</td> -</tr> -</table> - -<table class="detail" style="border-top: none; margin: 0px 0px 1.5em 0px;"> -<tr> -<td class="label" style="width: 8.25%">Model:</td> -<td class="field" style="width: 16.5%"></td> -<td class="label" style="width: 8.25%">Elevation:</td> -<td class="field" style="width: 16.5%"></td> -<td class="label" style="width: 8.25%">Size:</td> -<td class="field" style="width: 16.5%"></td> -<td class="label" style="width: 8.25%">Style:</td> -<td class="field" style="width: 16.5%"></td> -</tr> - -</table> - - -<table class="list" style="width: 99%; margin-top: 1em;"> - -<tr class="head"> -<td class="center" style="width: 15%">Item</td> -<td style="width: 30%">Description</td> -<td class="center" style="width: 10%">Quantity</td> -<td class="center" colspan="2" style="width: 15%">Unit Cost</td> -<td class="right" style="width: 15%;">Total</td> -</tr> - - -<tr class="list_row"> -<td style="font-weight: bold" colspan="6">Standard items:</td> - </tr> - -<tr class="list_row"><td class="center">1</td> -<td>add bank of drawers - to bathroom vanity</td> -<td class="center">2</td> -<td style="text-align: right">$125.00</td> -<td>Ea.</td> -<td class="right">$250.00</td> -</tr><tr class="list_row"><td class="center">2</td> -<td>add sweep outlet - central vac</td> -<td class="center">1</td> -<td style="text-align: right">$100.00</td> -<td>Ea.</td> -<td class="right">$100.00</td> -</tr><tr class="list_row"><td class="center">3</td> -<td>run central vac rough in to attached garage c/w separate circuit</td> -<td class="center">1</td> -<td style="text-align: right">$120.00</td> -<td>Ea.</td> -<td class="right">$120.00</td> -</tr><tr class="list_row"><td class="center">4</td> -<td>add fan to FIREPLACE</td> -<td class="center">1</td> -<td style="text-align: right">$195.00</td> -<td>Ea.</td> -<td class="right">$195.00</td> -</tr><tr class="list_row"><td class="center">5</td> -<td>upgrade to laminate flooring - Entire Main Floor</td> -<td class="center">1</td> -<td style="text-align: right">$2,400.00</td> -<td>Ea.</td> -<td class="right">$2,400.00</td> -</tr><tr class="list_row"><td class="center">6</td> -<td>upgrade oh door to insulated (9ft)</td> -<td class="center">1</td> -<td style="text-align: right">$95.00</td> -<td>Ea.</td> -<td class="right">$95.00</td> -</tr><tr class="list_row"><td class="center">7</td> -<td>change upper stairwell ledge to painted MDF</td> -<td class="center">1</td> -<td style="text-align: right">$45.00</td> -<td>Ea.</td> -<td class="right">$45.00</td> -</tr><tr class="list_row"><td class="center">8</td> -<td>upgrade standard door to pocket door</td> -<td class="center">1</td> -<td style="text-align: right">$145.00</td> -<td>Ea.</td> -<td class="right">$145.00</td> -</tr><tr class="list_row"><td class="center">9</td> -<td>add RIDP</td> -<td class="center">1</td> -<td style="text-align: right">$400.00</td> -<td>Ea.</td> -<td class="right">$400.00</td> -</tr> - -<tr class="list_row"> -<td style="font-weight: bold" colspan="6">Standard items:</td> - </tr> - -<tr class="list_row"><td class="center">1</td> -<td>add bank of drawers - to bathroom vanity</td> -<td class="center">2</td> -<td style="text-align: right">$125.00</td> -<td>Ea.</td> -<td class="right">$250.00</td> -</tr><tr class="list_row"><td class="center">2</td> -<td>add sweep outlet - central vac</td> -<td class="center">1</td> -<td style="text-align: right">$100.00</td> -<td>Ea.</td> -<td class="right">$100.00</td> -</tr><tr class="list_row"><td class="center">3</td> -<td>run central vac rough in to attached garage c/w separate circuit</td> -<td class="center">1</td> -<td style="text-align: right">$120.00</td> -<td>Ea.</td> -<td class="right">$120.00</td> -</tr><tr class="list_row"><td class="center">4</td> -<td>add fan to FIREPLACE</td> -<td class="center">1</td> -<td style="text-align: right">$195.00</td> -<td>Ea.</td> -<td class="right">$195.00</td> -</tr><tr class="list_row"><td class="center">5</td> -<td>upgrade to laminate flooring - Entire Main Floor</td> -<td class="center">1</td> -<td style="text-align: right">$2,400.00</td> -<td>Ea.</td> -<td class="right">$2,400.00</td> -</tr><tr class="list_row"><td class="center">6</td> -<td>upgrade oh door to insulated (9ft)</td> -<td class="center">1</td> -<td style="text-align: right">$95.00</td> -<td>Ea.</td> -<td class="right">$95.00</td> -</tr><tr class="list_row"><td class="center">7</td> -<td>change upper stairwell ledge to painted MDF</td> -<td class="center">1</td> -<td style="text-align: right">$45.00</td> -<td>Ea.</td> -<td class="right">$45.00</td> -</tr><tr class="list_row"><td class="center">8</td> -<td>upgrade standard door to pocket door</td> -<td class="center">1</td> -<td style="text-align: right">$145.00</td> -<td>Ea.</td> -<td class="right">$145.00</td> -</tr><tr class="list_row"><td class="center">9</td> -<td>add RIDP</td> -<td class="center">1</td> -<td style="text-align: right">$400.00</td> -<td>Ea.</td> -<td class="right">$400.00</td> -</tr> - -<tr class="list_row"> -<td style="font-weight: bold" colspan="6">Custom items:</td> -</tr> - - <tr class="list_row"> - <td class="center">1</td> -<td>upgrade to brushed chrome hardware </td> -<td class="center">1</td> -<td style="text-align: right">$195.00</td> -<td>Ea.</td> -<td class="right">$195.00</td> - </tr> - <tr class="list_row"> - <td class="center">2</td> -<td>box out FIREPLACE as per plan attached</td> -<td class="center">1</td> -<td style="text-align: right">$250.00</td> -<td>Ea.</td> -<td class="right">$250.00</td> - </tr> - <tr class="list_row"> - <td class="center">3</td> -<td>reduce WIC size by 6&quot; to 8&quot; to allow for large vanity ensuite</td> -<td class="center">1</td> -<td style="text-align: right">$0.00</td> -<td>Ea.</td> -<td class="right">$0.00</td> - </tr> - <tr class="list_row"> - <td class="center">4</td> -<td>add gas line to basement for future gas FP</td> -<td class="center">1</td> -<td style="text-align: right">$300.00</td> -<td>Ea.</td> -<td class="right">$300.00</td> - </tr> - <tr class="list_row"> - <td class="center">5</td> -<td>add pocket dorr to ensuite joining WIC and Ensuite. Delete 2 existing doors</td> -<td class="center">1</td> -<td style="text-align: right">$0.00</td> -<td>Ea.</td> -<td class="right">$0.00</td> - </tr> - <tr class="list_row"> - <td class="center">6</td> -<td>Main floor to be ISLAND Kitchen design</td> -<td class="center">1</td> -<td style="text-align: right">$0.00</td> -<td>Ea.</td> -<td class="right">$0.00</td> - </tr> - <tr class="list_row"> - <td class="center">7</td> -<td>price adjustment</td> -<td class="center">1</td> -<td style="text-align: right">($0.37)</td> -<td>Ea.</td> -<td class="right">($0.37)</td> - </tr> - -<tr class="list_row"> -<td style="font-weight: bold" colspan="6">Custom items:</td> -</tr> - - <tr class="list_row"> - <td class="center">1</td> -<td>upgrade to brushed chrome hardware </td> -<td class="center">1</td> -<td style="text-align: right">$195.00</td> -<td>Ea.</td> -<td class="right">$195.00</td> - </tr> - <tr class="list_row"> - <td class="center">2</td> -<td>box out FIREPLACE as per plan attached</td> -<td class="center">1</td> -<td style="text-align: right">$250.00</td> -<td>Ea.</td> -<td class="right">$250.00</td> - </tr> - <tr class="list_row"> - <td class="center">3</td> -<td>reduce WIC size by 6&quot; to 8&quot; to allow for large vanity ensuite</td> -<td class="center">1</td> -<td style="text-align: right">$0.00</td> -<td>Ea.</td> -<td class="right">$0.00</td> - </tr> - <tr class="list_row"> - <td class="center">4</td> -<td>add gas line to basement for future gas FP</td> -<td class="center">1</td> -<td style="text-align: right">$300.00</td> -<td>Ea.</td> -<td class="right">$300.00</td> - </tr> - <tr class="list_row"> - <td class="center">5</td> -<td>add pocket dorr to ensuite joining WIC and Ensuite. Delete 2 existing doors</td> -<td class="center">1</td> -<td style="text-align: right">$0.00</td> -<td>Ea.</td> -<td class="right">$0.00</td> - </tr> - - - - -<tr class="foot"> -<td colspan="5" class="right">(GST is not included)&nbsp;&nbsp; -<strong>Grand total:</strong></td> -<td class="right" style="font-weight: bold">$4,494.63</td> -</tr> - - -</table><div style="font-size: 0.8em"> -<table class="signature_table"> - - <tr> - <td>WITNESS:</td><td class="written_field" style="width: 38%">&nbsp;</td> - <td style="padding-left: 1em">PURCHASER:</td> - <td class="written_field" style="width: 39%; text-align: right;">X</td> - </tr> - <tr> - <td colspan="3" style="padding-top: 0em">&nbsp;</td> - <td style="text-align: center; padding-top: 0em;"> - Tammy Komant</td> - </tr> -</table> -<p style="font-size: 0.65em">This change order shall have no force or effect until approved and signed -by an authorizing signing officer of the Builder. Any change or special -request not noted on this document is not contractual.</p> - -<table class="signature_table"> -<tr> -<td>ACCEPTED THIS -<em>18 DAY OF NOVEMBER, 2004</em> -</td> - -<td style="padding-left: 1em;">LINCOLNBERG COMMUNITIES<br/><br/> -PER: -<em>Keith Jansen</em> -</td> -</tr> - -</table> -</div> -</body> -</html> \ No newline at end of file diff --git a/application/third_party/dompdf/www/test/dom_long_table.php b/application/third_party/dompdf/www/test/dom_long_table.php deleted file mode 100644 index 86cf2391..00000000 --- a/application/third_party/dompdf/www/test/dom_long_table.php +++ /dev/null @@ -1,43 +0,0 @@ -<html> -<style> -table { margin: auto; } -td { - font-size: 0.8em; - padding: 4pt; - text-align: center; - font-family: sans-serif; -} -</style> -<body> -<table> -<thead> -<tr> -<td colspan="20">Header</td> -</tr> -</thead> -<tfoot> -<tr> -<td colspan="20">Footer</td> -</tr> -</tfoot> -<?php -$i_max = 40; -$j_max = 20; - -for ( $i = 1; $i <= $i_max; $i++): ?> -<tr> -<?php -for ( $j = 1; $j <= $j_max; $j++) { - $r = (int)(255*$i / $i_max); - $b = (int)(255*$j / $j_max); - $g = (int)(255*($i + $j)/($i_max + $j_max)); - $c = "black;"; - $bg = "rgb($r,$g,$b)"; - echo "<td style=\"color: $c; background-color: $bg;\">" . ($i * $j) . "</td>\n"; -} -?> -</tr> -<?php endfor; ?> -</table> -</body> -</html> \ No newline at end of file diff --git a/application/third_party/dompdf/www/test/dom_nbsp.html b/application/third_party/dompdf/www/test/dom_nbsp.html deleted file mode 100644 index c49d040f..00000000 --- a/application/third_party/dompdf/www/test/dom_nbsp.html +++ /dev/null @@ -1,6 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head> -<title></title> -</head> -<body><p style="font-family: verdana">a&#xA0;b&nbsp;c&nbsp;</p></body></html> diff --git a/application/third_party/dompdf/www/test/dom_nested_table.html b/application/third_party/dompdf/www/test/dom_nested_table.html deleted file mode 100644 index c141ad28..00000000 --- a/application/third_party/dompdf/www/test/dom_nested_table.html +++ /dev/null @@ -1,62 +0,0 @@ -<!DOCTYPE html - PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<style> -table { border-collapse: separate; border-spacing: 5px; margin: 1px; border: 1px solid black; } -td { border: 1px solid grey; width: 10px; height: 10px; padding: 2px;} -td td { border: 1px solid green; } -td td td { border: 1px solid red; } -</style> -</head> -<body> - -<table> -<tr> -<td> - <table> - <tr> - <td>foo</td> - </tr> - <tr> - <td>bar</td> - </tr> - </table> -</td> -</tr> -</table> - -<table style="margin-top: 1em; width: 300px;"> -<tr> -<td> - <table> - <tr> - <td> - <table> - <tr> - <td colspan="2">a</td> - </tr> - <tr> - <td>b</td> - <td>c</td> - </tr> - </table> - </td> - <td rowspan="2">d</td> - </tr> - <tr> - <td>e</td> - </tr> - </table> -</td> -<td>f</td> -</tr> -<tr> -<td>g</td> -<td>h</td> -</tr> -</table> - -</body> -</html> \ No newline at end of file diff --git a/application/third_party/dompdf/www/test/dom_ol.html b/application/third_party/dompdf/www/test/dom_ol.html deleted file mode 100644 index e13b0fa2..00000000 --- a/application/third_party/dompdf/www/test/dom_ol.html +++ /dev/null @@ -1,148 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"> -<style> -body { - color: #7d7a7a; - font-family: 'trebuchet ms', verdana, sans-serif; - font-size: 12px; -} -.none li { list-style-type: none; } -.decimal li { list-style-type: decimal; } -.lower-alpha li { list-style-type: lower-alpha; } -.lower-latin li { list-style-type: lower-latin; } -.lower-roman li { list-style-type: lower-roman; } -.lower-greek li { list-style-type: lower-greek; } - -.upper-alpha li { list-style-type: upper-alpha; } -.upper-latin li { list-style-type: upper-latin; } -.upper-roman li { list-style-type: upper-roman; } -.upper-greek li { list-style-type: upper-greek; } - -.decimal-leading-zero li { list-style-type: decimal-leading-zero; } -</style> -</head> - -<body> - -<h3>none</h3> -<ol class="none"> -<li>Item 1</li> -<li>Item 2</li> -<li>Item 3</li> -</ol> - -<h3>decimal</h3> -<ol class="decimal"> -<li>Item 1</li> -<li>Item 2</li> -<li>Item 3</li> -</ol> - -<h3>lower-alpha</h3> -<ol class="lower-alpha"> -<li>Item 1</li> -<li>Item 2</li> -<li>Item 3</li> -</ol> - -<h3>lower-latin</h3> -<ol class="lower-latin"> -<li>Item 1</li> -<li>Item 2</li> -<li>Item 3</li> -</ol> - -<h3>lower-roman</h3> -<ol class="lower-roman"> -<li>Item 1</li> -<li>Item 2</li> -<li>Item 3</li> -</ol> - -<h3>lower-greek</h3> -<ol class="lower-greek"> -<li>Item 1</li> -<li>Item 2</li> -<li>Item 3</li> -</ol> - -<h3>upper-alpha</h3> -<ol class="upper-alpha"> -<li>Item 1</li> -<li>Item 2</li> -<li>Item 3</li> -</ol> - -<h3>upper-latin</h3> -<ol class="upper-latin"> -<li>Item 1</li> -<li>Item 2</li> -<li>Item 3</li> -</ol> - -<h3>upper-roman</h3> -<ol class="upper-roman"> -<li>Item 1</li> -<li>Item 2</li> -<li>Item 3</li> -</ol> - -<h3 style="page-break-before: always;">Advanced</h3> -<ol class="decimal"> -<li>Item 1</li> -<li>Item 2 - <ol class="lower-roman"> - <li>Item 1 - <ol class="upper-roman"> - <li>Item 1</li> - <li>Item 2</li> - <li>Item 3</li> - </ol> - </li> - <li>Item 2</li> - <li>Item 3 - <ol class="decimal-leading-zero"> - <li>Item 1</li> - <li>Item 2</li> - <li>Item 3</li> - </ol> - </li> - </ol> -</li> -<li>Item 3</li> -</ol> - -<h3>decimal-leading-zero</h3> -<ol class="decimal-leading-zero"> -<li>Item #</li> -<li>Item #</li> -<li>Item #</li> -<li>Item #</li> -<li>Item #</li> -<li>Item #</li> -<li>Item #</li> -<li>Item #</li> -<li>Item #</li> -<li>Item #</li> -<li>Item #</li> -<li>Item #</li> -<li>Item #</li> -<li>Item #</li> -<li>Item #</li> -<li>Item #</li> -<li>Item #</li> -<li>Item #</li> -<li>Item #</li> -<li>Item #</li> -<li>Item #</li> -<li>Item #</li> -<li>Item #</li> -<li>Item #</li> -<li>Item #</li> -<li>Item #</li> -</ol> - - -</body> </html> diff --git a/application/third_party/dompdf/www/test/dom_simple_ul.html b/application/third_party/dompdf/www/test/dom_simple_ul.html deleted file mode 100644 index 1d6bd959..00000000 --- a/application/third_party/dompdf/www/test/dom_simple_ul.html +++ /dev/null @@ -1,39 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"> - -</head> - -<body> -<p>Here's a simple list from my favourite website:</p> - -<ul> - <li>The Zend Engine II with a new object model and dozens of new features.</li> - - <li>XML support has been completely redone in PHP 5, all extensions are - now focused around the excellent libxml2 library - (http://www.xmlsoft.org/).</li> - - <li>A new SimpleXML extension for easily accessing and manipulating XML - as PHP objects. It can also interface with the DOM extension and - vice-versa.</li> - - <li>A brand new built-in SOAP extension for interoperability with Web Services.</li> - - <li>A new MySQL extension named MySQLi for developers using MySQL 4.1 and - later. This new extension includes an object-oriented interface in - addition to a traditional interface; as well as support for many of - MySQL's new features, such as prepared statements.</li> - - <li>SQLite has been bundled with PHP. For more information on SQLite, - please visit their website. </li> - - <li>Streams have been greatly improved, including the ability to access low-level socket operations on streams.</li> - - <li>And lots more...</li> - - <ul><li>Sublists</li><li>work</li><li>too!</li></ul> -</ul> - -</body> </html> diff --git a/application/third_party/dompdf/www/test/dom_table.html b/application/third_party/dompdf/www/test/dom_table.html deleted file mode 100644 index e74af607..00000000 --- a/application/third_party/dompdf/www/test/dom_table.html +++ /dev/null @@ -1,106 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"> -<style> -body { font-family: verdana;} -table { - margin-top: 2em; -} - -thead { - background-color: #eeeeee; -} - -tbody { - background-color: #ffffee; -} - -th,td { - padding: 3pt; -} - -table.separate { - border-collapse: separate; - border-spacing: 5pt; - border: 3pt solid #33d; -} - -table.separate td { - border: 2pt solid #33d; -} - -table.collapse { - border-collapse: collapse; - border: 1pt solid black; -} - -table.collapse td { - border: 1pt solid black; -} -</style> - -</head> - -<body> - -<table class="separate"> -<thead> - <tr> - <th>head 1</th> - <th>head 2</th> - <th>head 3</th> - <th>head 4</th> - </tr> -</thead> - <tr> - <td rowspan="2">cell 1</td> - <td>cell 2</td> - <td colspan="2">cell 3</td> - </tr> - <tr> - <td style="border: 4px double black" colspan="2">cell 4</td> - <td rowspan="2">cell 5</td> - </tr> - <tr> - <td colspan="3">cell 6</td> - </tr> - <tr> - <td colspan="4">cell 7</td> - </tr> -</table> - -<table class="collapse"> -<thead> - <tr> - <th>head 1</th> - <th>head 2</th> - <th>head 3</th> - <th>head 4</th> - </tr> -</thead> - <tbody> - <tr> - <td>cell 1</td> - <td>cell 2</td> - <td>cell 3</td> - <td>cell 4</td> - </tr> - <tr> - <td colspan="2">cell 5</td> - <td>cell 6</td> - <td>cell 7</td> - </tr> - <tr> - <td>cell 8</td> - <td>cell 9</td> - <td colspan="2">cell 10</td> - </tr> - </tbody> - <tr> - <td colspan="4">cell 11</td> - </tr> -</table> - - -</body> </html> diff --git a/application/third_party/dompdf/www/test/dom_table_01.html b/application/third_party/dompdf/www/test/dom_table_01.html deleted file mode 100644 index 99bd9c8d..00000000 --- a/application/third_party/dompdf/www/test/dom_table_01.html +++ /dev/null @@ -1,24 +0,0 @@ -<html> -<head> -<style> - -TABLE { -border: 3px, solid, #eeeeee; -} - -</style> -</head> - -<body> -<table border="3"> - <tr> - <td colspan="2">Title</td> - </tr> - <tr> - <td>Kaire</td> - <td>Desine</td> - </tr> -</table> - -</body> -</html> diff --git a/application/third_party/dompdf/www/test/dom_table_image.html b/application/third_party/dompdf/www/test/dom_table_image.html deleted file mode 100644 index f563a380..00000000 --- a/application/third_party/dompdf/www/test/dom_table_image.html +++ /dev/null @@ -1,19 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head> -<title></title> -</head> -<body> -<table> -<tr> -<td><img src="images/dompdf_simple.png"/></td> -<td>Some Text</td> -</tr> -<tr> -<td>More Text</td> -<td>Blah</td> -</tr> -</table> - -</body> -</html> diff --git a/application/third_party/dompdf/www/test/dom_ul.html b/application/third_party/dompdf/www/test/dom_ul.html deleted file mode 100644 index 7d64ec73..00000000 --- a/application/third_party/dompdf/www/test/dom_ul.html +++ /dev/null @@ -1,312 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"> -<style> -.disc li { list-style-type: disc; } -.circle li { list-style-type: circle; } -.square li { list-style-type: square; } -.image li { list-style-type: square; list-style-image:url(images/png.png)} -.missing li { list-style-type: square; list-style-image:url(dummy.png)} -.nobullet li { list-style-type: none;} -.noimage li { list-style-type: none; list-style-image:url(dummy.png)} -.bigimage li { list-style-type: square; list-style-image:url(images/dokuwiki-128.png)} -.mindentimage li { list-style-type: square; list-style-image:url(images/png.png); margin-left:50px;} -.mindentimage2 li { list-style-type: square; list-style-image:url(images/png.png); margin-left:100px;} -.pindentimage li { list-style-type: square; list-style-image:url(images/png.png); padding-left:50px;} -.pindentimage2 li { list-style-type: square; list-style-image:url(images/png.png); padding-left:100px;} -.mindentsquare li { list-style-type: square; margin-left:50px;} -.mindentsquare2 li { list-style-type: square; margin-left:100px;} -.pindentsquare li { list-style-type: square; padding-left:50px;} -.pindentsquare2 li { list-style-type: square; padding-left:100px;} -</style> -</head> - -<body> -<ul> -<li>Item 1</li> -<li>Item 2</li> -<li>Item 3</li> -<ul><li>Sub 1</li> - <li>Sub 2</li> - <li>Sub 3</li> -</ul> -</ul> - -<ul class="circle"> -<li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec at -odio vitae libero tempus convallis. Cum sociis natoque penatibus et -magnis dis parturient montes, nascetur ridiculus mus. Vestibulum purus -mauris, dapibus eu, sagittis quis, sagittis quis, mi. Morbi fringilla -massa quis velit. Curabitur metus massa, semper mollis, molestie vel, -adipiscing nec, massa. Phasellus vitae felis sed lectus dapibus -facilisis. In ultrices sagittis ipsum. In at est. Integer iaculis -turpis vel magna. Cras eu est. Integer porttitor ligula a -tellus. Curabitur accumsan ipsum a velit. Sed laoreet lectus quis -leo. Nulla pellentesque molestie ante. Quisque vestibulum est id -justo. Ut pellentesque ante in neque.</li> -<li>Curabitur ut diam eu dui vestibulum pharetra. Nam pellentesque, justo -non hendrerit venenatis, mi orci pretium mi, et vehicula leo arcu quis -diam. Nullam mattis laoreet quam. Morbi mollis sem ut tellus. Nam mi -massa, lobortis eu, sollicitudin et, iaculis et, massa. Maecenas purus -mauris, luctus sit amet, pharetra in, facilisis sit amet, elit. Nullam -vel erat tempus purus molestie suscipit. Vestibulum odio lorem, -sollicitudin non, volutpat sit amet, tincidunt vel, nunc. Nulla quis -ante vestibulum odio feugiat facilisis. Proin lorem nisl, viverra at, -rhoncus quis, semper nec, mi. Donec euismod enim vitae velit. Nulla -sed lectus. Vivamus placerat, lacus sed vehicula sagittis, arcu massa -adipiscing lorem, bibendum luctus nisl tortor vitae leo.</li> -<li style="list-style-position: inside">Inside. Aliquam enim. Duis et diam. Praesent porta, mauris quis pellentesque -volutpat, erat elit vulputate eros, vitae pulvinar augue velit sit -amet sem. Fusce eu urna eu nisi condimentum posuere. Vivamus sed -felis. Duis eget urna vitae eros interdum dignissim. Proin justo eros, -eleifend in, porttitor in, malesuada non, neque. Etiam sed -augue. Nulla sit amet magna. Lorem ipsum dolor sit amet, consectetuer -adipiscing elit. Mauris facilisis. Curabitur massa magna, pulvinar a, -nonummy eget, egestas vitae, mauris. Quisque vel elit sit amet lorem -malesuada facilisis. Vestibulum porta, metus sit amet egestas -interdum, urna justo euismod erat, id tristique urna leo quis -nibh. Morbi non erat.</li> -</ul> - -<ul class="disc"> -<li>Item 1 disc</li> -<li>Item 2 disc</li> -<li>Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, -sed diam nonumy eirmod tempor invidunt ut labore et dolore magna -aliquyam erat, sed diam voluptua. At vero eos et accusam et justo -duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata -sanctus est Lorem ipsum dolor sit amet.</li> -<li>Item 4 disc</li> -</ul> - -<ul class="circle"> -<li>Item 1 circle</li> -<li>Item 2 circle</li> -<li>Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, -sed diam nonumy eirmod tempor invidunt ut labore et dolore magna -aliquyam erat, sed diam voluptua. At vero eos et accusam et justo -duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata -sanctus est Lorem ipsum dolor sit amet.</li> -<li>Item 4 circle</li> -</ul> - -<ul class="square"> -<li>Item 1 square</li> -<li>Item 2 square</li> -<li>Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, -sed diam nonumy eirmod tempor invidunt ut labore et dolore magna -aliquyam erat, sed diam voluptua. At vero eos et accusam et justo -duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata -sanctus est Lorem ipsum dolor sit amet.</li> -<li>Item 4 square </li> -</ul> - -<ul class="image"> -<li>Item 1 image</li> -<li>Item 2 image</li> -<li>Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, -sed diam nonumy eirmod tempor invidunt ut labore et dolore magna -aliquyam erat, sed diam voluptua. At vero eos et accusam et justo -duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata -sanctus est Lorem ipsum dolor sit amet.</li> -<li>Item 4 image</li> -<li style="list-style-position: inside">Inside. Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, -sed diam nonumy eirmod tempor invidunt ut labore et dolore magna -aliquyam erat, sed diam voluptua. At vero eos et accusam et justo -duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata -sanctus est Lorem ipsum dolor sit amet.</li> -<li style="list-style-position: outside">Outside. Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, -sed diam nonumy eirmod tempor invidunt ut labore et dolore magna -aliquyam erat, sed diam voluptua. At vero eos et accusam et justo -duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata -sanctus est Lorem ipsum dolor sit amet.</li> -<li style="list-style-image:none">Item 7 noimage</li> - -<ul> -<li>sub Item 1 image</li> -<li>sub Item 2 image</li> -<li style="list-style-position: inside">Inside. Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, -sed diam nonumy eirmod tempor invidunt ut labore et dolore magna -aliquyam erat, sed diam voluptua. At vero eos et accusam et justo -duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata -sanctus est Lorem ipsum dolor sit amet.</li> -<li style="list-style-position: outside">Outside. Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, -sed diam nonumy eirmod tempor invidunt ut labore et dolore magna -aliquyam erat, sed diam voluptua. At vero eos et accusam et justo -duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata -sanctus est Lorem ipsum dolor sit amet.</li> -<li style="list-style-image:none">sub Item 5 noimage</li> -</ul> - -</ul> - -<ul class="missing"> -<li>Item 1 missing image - fallback square</li> -<li>Item 2 missing image - fallback square</li> -<li>Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, -sed diam nonumy eirmod tempor invidunt ut labore et dolore magna -aliquyam erat, sed diam voluptua. At vero eos et accusam et justo -duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata -sanctus est Lorem ipsum dolor sit amet.</li> -<li style="list-style-position: inside">Inside. Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, -sed diam nonumy eirmod tempor invidunt ut labore et dolore magna -aliquyam erat, sed diam voluptua. At vero eos et accusam et justo -duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata -sanctus est Lorem ipsum dolor sit amet.</li> -<li>Item 4 missing image - fallback square</li> -</ul> - -<ul class="nobullet"> -<li>Item 1 nobullet</li> -<li>Item 2 nobullet</li> -<li>Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, -sed diam nonumy eirmod tempor invidunt ut labore et dolore magna -aliquyam erat, sed diam voluptua. At vero eos et accusam et justo -duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata -sanctus est Lorem ipsum dolor sit amet.</li> -<li style="list-style-position: inside">Inside. Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, -sed diam nonumy eirmod tempor invidunt ut labore et dolore magna -aliquyam erat, sed diam voluptua. At vero eos et accusam et justo -duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata -sanctus est Lorem ipsum dolor sit amet.</li> -<li>Item 4 nobullet</li> -</ul> - -<ul class="noimage"> -<li>Item 1 missing image - fallback none</li> -<li>Item 2 missing image - fallback none</li> -<li>Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, -sed diam nonumy eirmod tempor invidunt ut labore et dolore magna -aliquyam erat, sed diam voluptua. At vero eos et accusam et justo -duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata -sanctus est Lorem ipsum dolor sit amet.</li> -<li style="list-style-position: inside">Inside. Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, -sed diam nonumy eirmod tempor invidunt ut labore et dolore magna -aliquyam erat, sed diam voluptua. At vero eos et accusam et justo -duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata -sanctus est Lorem ipsum dolor sit amet.</li> -<li>Item 4 missing image - fallback none</li> -</ul> - -<ul class="bigimage"> -<li>Item 1 bigimage</li> -<li>Item 2 bigimage</li> -<li>Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, -sed diam nonumy eirmod tempor invidunt ut labore et dolore magna -aliquyam erat, sed diam voluptua. At vero eos et accusam et justo -duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata -sanctus est Lorem ipsum dolor sit amet.</li> -<li style="list-style-position: inside">Inside. Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, -sed diam nonumy eirmod tempor invidunt ut labore et dolore magna -aliquyam erat, sed diam voluptua. At vero eos et accusam et justo -duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata -sanctus est Lorem ipsum dolor sit amet.</li> -<li>Item 4 bigimage</li> -</ul> - -<ul class="mindentimage"> -<li>margin Item 1 image</li> -<li>margin Item 2 image</li> -<li>Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, -sed diam nonumy eirmod tempor invidunt ut labore et dolore magna -aliquyam erat, sed diam voluptua. At vero eos et accusam et justo -duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata -sanctus est Lorem ipsum dolor sit amet.</li> -<li>margin Item 4 image</li> -<li style="list-style-position: inside">Inside. Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, -sed diam nonumy eirmod tempor invidunt ut labore et dolore magna -aliquyam erat, sed diam voluptua. At vero eos et accusam et justo -duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata -sanctus est Lorem ipsum dolor sit amet.</li> -<li style="list-style-position: outside">Outside. Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, -sed diam nonumy eirmod tempor invidunt ut labore et dolore magna -aliquyam erat, sed diam voluptua. At vero eos et accusam et justo -duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata -sanctus est Lorem ipsum dolor sit amet.</li> -<li style="list-style-image:none">margin Item 7 noimage</li> - -<ul class="mindentimage2"> -<li>margin sub Item 1 image</li> -<li>margin sub Item 2 image</li> -<li style="list-style-position: inside">Inside. Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, -sed diam nonumy eirmod tempor invidunt ut labore et dolore magna -aliquyam erat, sed diam voluptua. At vero eos et accusam et justo -duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata -sanctus est Lorem ipsum dolor sit amet.</li> -<li style="list-style-position: outside">Outside. Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, -sed diam nonumy eirmod tempor invidunt ut labore et dolore magna -aliquyam erat, sed diam voluptua. At vero eos et accusam et justo -duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata -sanctus est Lorem ipsum dolor sit amet.</li> -<li style="list-style-image:none">margin sub Item 5 noimage</li> -</ul> - -</ul> - -<ul class="pindentimage"> -<li>padding Item 1 image</li> -<li style="list-style-position: inside">Inside. Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, -sed diam nonumy eirmod tempor invidunt ut labore et dolore magna -aliquyam erat, sed diam voluptua. At vero eos et accusam et justo -duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata -sanctus est Lorem ipsum dolor sit amet.</li> -<ul class="pindentimage2"> -<li>padding sub Item 1 image</li> -<li style="list-style-position: inside">Inside. Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, -sed diam nonumy eirmod tempor invidunt ut labore et dolore magna -aliquyam erat, sed diam voluptua. At vero eos et accusam et justo -duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata -sanctus est Lorem ipsum dolor sit amet.</li> -</ul> -</ul> - -<ul class="mindentsquare"> -<li>margin Item 1 square</li> -<li style="list-style-position: inside">Inside. Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, -sed diam nonumy eirmod tempor invidunt ut labore et dolore magna -aliquyam erat, sed diam voluptua. At vero eos et accusam et justo -duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata -sanctus est Lorem ipsum dolor sit amet.</li> -<ul class="mindentsquare2"> -<li>margin sub Item 1 square</li> -<li style="list-style-position: inside">Inside. Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, -sed diam nonumy eirmod tempor invidunt ut labore et dolore magna -aliquyam erat, sed diam voluptua. At vero eos et accusam et justo -duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata -sanctus est Lorem ipsum dolor sit amet.</li> -</ul> -</ul> - -<ul class="pindentsquare"> -<li>padding Item 1 square</li> -<li style="list-style-position: inside">Inside. Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, -sed diam nonumy eirmod tempor invidunt ut labore et dolore magna -aliquyam erat, sed diam voluptua. At vero eos et accusam et justo -duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata -sanctus est Lorem ipsum dolor sit amet.</li> -<ul class="pindentsquare2"> -<li>padding sub Item 1 square</li> -<li style="list-style-position: inside">Inside. Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, -sed diam nonumy eirmod tempor invidunt ut labore et dolore magna -aliquyam erat, sed diam voluptua. At vero eos et accusam et justo -duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata -sanctus est Lorem ipsum dolor sit amet.</li> -</ul> -</ul> - -<h1>combined list attributes list-style</h1> - -<ul style="list-style:square inside url(dummy.png);"> - <li>list-style:square inside url(dummy.png);</li> - <li style="list-style-position:outside;">list-style:outside;[overwrites only position]</li> -</ul> -<ul style="list-style:square inside url(images/png.png);"> - <li>list-style:square inside url(images/png.png);</li> - <li style="list-style-position:outside;">list-style-position:outside;[overwrites only position]</li> - <li style="list-style:outside;">list-style-position:outside;[overwrite attributes - firefox3: all; dompdf, internet explorer 8: only position]</li> - <li style="list-style:none;">list-style:none; [resets both, bullet and image]</li> -</ul> - - -</body> </html> diff --git a/application/third_party/dompdf/www/test/encoding_entities.html b/application/third_party/dompdf/www/test/encoding_entities.html deleted file mode 100644 index 79c66bfd..00000000 --- a/application/third_party/dompdf/www/test/encoding_entities.html +++ /dev/null @@ -1,14 +0,0 @@ -<!DOCTYPE html - PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<style> -p.serif { font-family: serif; } -p.sans-serif { font-family: arial, sans-serif; } -</style> -</head> -<body> -<p class="serif">&eacute; &copy; &laquo; avoir et &ecirc;tre &alpha; &beta;</p> -<p class="sans-serif">&eacute; &copy; &laquo; avoir et &ecirc;tre &alpha; &beta;</p> -</body> </html> \ No newline at end of file diff --git a/application/third_party/dompdf/www/test/encoding_latin1.html b/application/third_party/dompdf/www/test/encoding_latin1.html deleted file mode 100644 index 9a8b05e0..00000000 --- a/application/third_party/dompdf/www/test/encoding_latin1.html +++ /dev/null @@ -1,1162 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" - "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html lang=en> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> -<title>HTML 4.0 Latin-1 Entities</title> -<link rev=Made href="mailto:liam@htmlhelp.com"> -<style> -body { - background: white; - color: black; - font-family: verdana,sans-serif; -} - -h1 { - color: #c33; - background: none; - font-weight: bold; - text-align: center -} - -h2 { - color: #00008b; - background: none; - font-weight: bold -} - -h3 { - color: #006400; - background: none; - margin-left: 4%; - margin-right: 4%; - font-weight: bold -} - -h4 { - margin-left: 6%; - margin-right: 6%; - font-weight: bold -} - -h5 { - margin-left: 6%; - margin-right: 6%; - font-weight: bold -} - -ul, ol, dl, p { - margin-left: 6%; - margin-right: 6% -} - -ul ul, table ol, table ul, dl ol, dl ul { - margin-left: 1.2em; - margin-right: 1%; - padding-left: 0 -} - -pre { - margin-left: 10%; - white-space: pre -} - -table caption { - font-size: larger; - font-weight: bolder -} - -table p, table dl, ol p, ul p, dl p, blockquote p, .note p, .note ul, .note ol, .note dl, li pre, dd pre { - margin-left: 0; - margin-right: 0 -} - -p.top { - margin-left: 1%; - margin-right: 1% -} - -blockquote { - margin-left: 8%; - margin-right: 8%; - border: thin ridge #dc143c -} - -blockquote pre { - margin-left: 1%; - margin-right: 1% -} - -dt a { - font-weight: bold; - margin-top: .8em -} - -a:link { - color: #00f; - background: none; -} - -a:visited { - color: #800080; - background: none; -} - -a:active { - color: green; - background: #FFD700 -} - -.html { - color: #000080; - background: none -} - -.css { - color: #800000; - background: none -} - -.javascript { - color: #008000; - background: none -} - -.example { margin-left: 10% } - -dfn { - font-style: normal; - font-weight: bolder -} - -var sub { font-style: normal } - -.note { - font-size: 85%; - margin-left: 10% -} - -.SMA { - color: fuchsia; - background: none; - font-family: Kids, "Comic Sans MS", Jester, sans-serif -} - -.oops { - font-family: Jester, "Comic Sans MS", sans-serif -} - -.author { - font-style: italic -} - -.copyright { - font-size: smaller; - text-align: right; - clear: right -} - -.toolbar { - text-align: center -} - -.toolbar IMG { - float: right -} - -.error { - color: #DC143C; - background: none; - text-decoration: none -} - -.warning { - color: #FF4500; - background: none; - text-decoration: none -} - -.error strong { - color: #DC143C; - background: #FFD700; - text-decoration: none -} - -.warning strong { - color: #FF4500; - background: #FFD700; - text-decoration: none -} - -.warning a:link, .warning a:visited, .warning a:active { - color: #FF4500; - background: none; - text-decoration: underline -} - -.error a:link, .error a:visited, .error a:active { - color: #DC143C; - background: none; - text-decoration: underline -} - -.error strong a:link, .error strong a:visited, .error strong a:active { - color: #DC143C; - background: #FFD700 -} - -.warning strong a:link, .warning strong a:visited, .warning strong a:active { - color: #FF4500; - background: #FFD700 -} - -colgroup.entity { text-align: center } - -.default { text-decoration: underline; font-style: normal } -.required { font-weight: bold } -td li.transitional, .elements li.transitional { - font-weight: lighter; - color: #696969; - background: none -} -td li.frameset, .elements li.frameset { - font-weight: lighter; - color: #808080; - background: none -} - -.footer, .checkedDocument { - margin-top: 2em; - padding-top: 1em; - border-top: solid thin black -} - -strong.legal { - font-weight: normal; - text-transform: uppercase -} - -@media print { - input#toggler, .toolbar { display: none } -} - -table { border-collapse: collapse; width: 100%; } -td { border: 0.5pt solid black; } - -</style> -<meta name="author" content="Liam Quinn"> -<meta name="description" content="A table of the HTML 4.0 entities for Latin-1 (ISO 8859-1) characters."> -<meta name="keywords" content="Latin-1, ISO-8859-1, entities, characters, character set, accents, accent, accented, HTML, HyperText Markup Language, HTML 4.0, character entity reference, decimal, hexadecimal, hex, browser test, WDG, Web Design Group"> -<body> -<h1>Latin-1 Entities</h1> - -<p>The following table gives the character entity reference, decimal -character reference, and hexadecimal character reference for 8-bit -characters in the Latin-1 (ISO-8859-1) character set, as well as the -rendering of each in your browser. <a -href="http://www.unicode.org/charts/">Glyphs</a> of the characters are -available at the <a href="http://www.unicode.org/">Unicode -Consortium</a>.</p> - -<p>Browser support is generally best for the decimal character -references, except for the accented characters (decimal 192-214, -216-246, 248-255), where the character entity references hold a slight -edge.</p> - -<p>Note that most Mac browsers will render fourteen Latin-1 characters -incorrectly. These characters are decimal 166, 178, 179, 185, 188, -189, 190, 208, 215, 221, 222, 240, 253, and 254. See <a -href="http://ppewww.ph.gla.ac.uk/%7Eflavell/iso8859/iso8859-mac.html">ISO-8859-1 -and the Mac platform</a> for more information.</p> - -<table style="border: none"> - <thead> - <tr> - <th rowspan=2>Character</th> - <th rowspan=2>Entity</th> - <th rowspan=2>Decimal</th> - <th rowspan=2>Hex</th> - <th colspan=3>Rendering in Your Browser</th> - </tr> - <tr> - <th>Entity</th> - <th>Decimal</th> - <th>Hex</th> - </tr> - </thead> - <tbody> - <tr> - <td scope=row>no-break space = non-breaking space</td> - <td>&amp;nbsp;</td> - <td>&amp;#160;</td> - <td>&amp;#xA0;</td> - <td>&nbsp;</td> - <td>&#160;</td> - <td>&#xA0;</td> - </tr> - <tr> - <td scope=row>inverted exclamation mark</td> - <td>&amp;iexcl;</td> - <td>&amp;#161;</td> - <td>&amp;#xA1;</td> - <td>&iexcl;</td> - <td>&#161;</td> - <td>&#xA1;</td> - </tr> - <tr> - <td scope=row>cent sign</td> - <td>&amp;cent;</td> - <td>&amp;#162;</td> - <td>&amp;#xA2;</td> - <td>&cent;</td> - <td>&#162;</td> - <td>&#xA2;</td> - </tr> - <tr> - <td scope=row>pound sign</td> - <td>&amp;pound;</td> - <td>&amp;#163;</td> - <td>&amp;#xA3;</td> - <td>&pound;</td> - <td>&#163;</td> - <td>&#xA3;</td> - </tr> - <tr> - <td scope=row>currency sign</td> - <td>&amp;curren;</td> - <td>&amp;#164;</td> - <td>&amp;#xA4;</td> - <td>&curren;</td> - <td>&#164;</td> - <td>&#xA4;</td> - </tr> - <tr> - <td scope=row>yen sign = yuan sign</td> - <td>&amp;yen;</td> - <td>&amp;#165;</td> - <td>&amp;#xA5;</td> - <td>&yen;</td> - <td>&#165;</td> - <td>&#xA5;</td> - </tr> - <tr> - <td scope=row>broken bar = broken vertical bar</td> - <td>&amp;brvbar;</td> - <td>&amp;#166;</td> - <td>&amp;#xA6;</td> - <td>&brvbar;</td> - <td>&#166;</td> - <td>&#xA6;</td> - </tr> - <tr> - <td scope=row>section sign</td> - <td>&amp;sect;</td> - <td>&amp;#167;</td> - <td>&amp;#xA7;</td> - <td>&sect;</td> - <td>&#167;</td> - <td>&#xA7;</td> - </tr> - <tr> - <td scope=row>diaeresis = spacing diaeresis</td> - <td>&amp;uml;</td> - <td>&amp;#168;</td> - <td>&amp;#xA8;</td> - <td>&uml;</td> - <td>&#168;</td> - <td>&#xA8;</td> - </tr> - <tr> - <td scope=row>copyright sign</td> - <td>&amp;copy;</td> - <td>&amp;#169;</td> - <td>&amp;#xA9;</td> - <td>&copy;</td> - <td>&#169;</td> - <td>&#xA9;</td> - </tr> - <tr> - <td scope=row>feminine ordinal indicator</td> - <td>&amp;ordf;</td> - <td>&amp;#170;</td> - <td>&amp;#xAA;</td> - <td>&ordf;</td> - <td>&#170;</td> - <td>&#xAA;</td> - </tr> - <tr> - <td scope=row>left-pointing double angle quotation mark = left pointing guillemet</td> - <td>&amp;laquo;</td> - <td>&amp;#171;</td> - <td>&amp;#xAB;</td> - <td>&laquo;</td> - <td>&#171;</td> - <td>&#xAB;</td> - </tr> - <tr> - <td scope=row>not sign</td> - <td>&amp;not;</td> - <td>&amp;#172;</td> - <td>&amp;#xAC;</td> - <td>&not;</td> - <td>&#172;</td> - <td>&#xAC;</td> - </tr> - <tr> - <td scope=row>soft hyphen = discretionary hyphen</td> - <td>&amp;shy;</td> - <td>&amp;#173;</td> - <td>&amp;#xAD;</td> - <td>&shy;</td> - <td>&#173;</td> - <td>&#xAD;</td> - </tr> - <tr> - <td scope=row>registered sign = registered trade mark sign</td> - <td>&amp;reg;</td> - <td>&amp;#174;</td> - <td>&amp;#xAE;</td> - <td>&reg;</td> - <td>&#174;</td> - <td>&#xAE;</td> - </tr> - <tr> - <td scope=row>macron = spacing macron = overline = APL overbar</td> - <td>&amp;macr;</td> - <td>&amp;#175;</td> - <td>&amp;#xAF;</td> - <td>&macr;</td> - <td>&#175;</td> - <td>&#xAF;</td> - </tr> - <tr> - <td scope=row>degree sign</td> - <td>&amp;deg;</td> - <td>&amp;#176;</td> - <td>&amp;#xB0;</td> - <td>&deg;</td> - <td>&#176;</td> - <td>&#xB0;</td> - </tr> - <tr> - <td scope=row>plus-minus sign = plus-or-minus sign</td> - <td>&amp;plusmn;</td> - <td>&amp;#177;</td> - <td>&amp;#xB1;</td> - <td>&plusmn;</td> - <td>&#177;</td> - <td>&#xB1;</td> - </tr> - <tr> - <td scope=row>superscript two = superscript digit two = squared</td> - <td>&amp;sup2;</td> - <td>&amp;#178;</td> - <td>&amp;#xB2;</td> - <td>&sup2;</td> - <td>&#178;</td> - <td>&#xB2;</td> - </tr> - <tr> - <td scope=row>superscript three = superscript digit three = cubed</td> - <td>&amp;sup3;</td> - <td>&amp;#179;</td> - <td>&amp;#xB3;</td> - <td>&sup3;</td> - <td>&#179;</td> - <td>&#xB3;</td> - </tr> - <tr> - <td scope=row>acute accent = spacing acute</td> - <td>&amp;acute;</td> - <td>&amp;#180;</td> - <td>&amp;#xB4;</td> - <td>&acute;</td> - <td>&#180;</td> - <td>&#xB4;</td> - </tr> - <tr> - <td scope=row>micro sign</td> - <td>&amp;micro;</td> - <td>&amp;#181;</td> - <td>&amp;#xB5;</td> - <td>&micro;</td> - <td>&#181;</td> - <td>&#xB5;</td> - </tr> - <tr> - <td scope=row>pilcrow sign = paragraph sign</td> - <td>&amp;para;</td> - <td>&amp;#182;</td> - <td>&amp;#xB6;</td> - <td>&para;</td> - <td>&#182;</td> - <td>&#xB6;</td> - </tr> - <tr> - <td scope=row>middle dot = Georgian comma = Greek middle dot</td> - <td>&amp;middot;</td> - <td>&amp;#183;</td> - <td>&amp;#xB7;</td> - <td>&middot;</td> - <td>&#183;</td> - <td>&#xB7;</td> - </tr> - <tr> - <td scope=row>cedilla = spacing cedilla</td> - <td>&amp;cedil;</td> - <td>&amp;#184;</td> - <td>&amp;#xB8;</td> - <td>&cedil;</td> - <td>&#184;</td> - <td>&#xB8;</td> - </tr> - <tr> - <td scope=row>superscript one = superscript digit one</td> - <td>&amp;sup1;</td> - <td>&amp;#185;</td> - <td>&amp;#xB9;</td> - <td>&sup1;</td> - <td>&#185;</td> - <td>&#xB9;</td> - </tr> - <tr> - <td scope=row>masculine ordinal indicator</td> - <td>&amp;ordm;</td> - <td>&amp;#186;</td> - <td>&amp;#xBA;</td> - <td>&ordm;</td> - <td>&#186;</td> - <td>&#xBA;</td> - </tr> - <tr> - <td scope=row>right-pointing double angle quotation mark = right pointing guillemet</td> - <td>&amp;raquo;</td> - <td>&amp;#187;</td> - <td>&amp;#xBB;</td> - <td>&raquo;</td> - <td>&#187;</td> - <td>&#xBB;</td> - </tr> - <tr> - <td scope=row>vulgar fraction one quarter = fraction one quarter</td> - <td>&amp;frac14;</td> - <td>&amp;#188;</td> - <td>&amp;#xBC;</td> - <td>&frac14;</td> - <td>&#188;</td> - <td>&#xBC;</td> - </tr> - <tr> - <td scope=row>vulgar fraction one half = fraction one half</td> - <td>&amp;frac12;</td> - <td>&amp;#189;</td> - <td>&amp;#xBD;</td> - <td>&frac12;</td> - <td>&#189;</td> - <td>&#xBD;</td> - </tr> - <tr> - <td scope=row>vulgar fraction three quarters = fraction three quarters</td> - <td>&amp;frac34;</td> - <td>&amp;#190;</td> - <td>&amp;#xBE;</td> - <td>&frac34;</td> - <td>&#190;</td> - <td>&#xBE;</td> - </tr> - <tr> - <td scope=row>inverted question mark = turned question mark</td> - <td>&amp;iquest;</td> - <td>&amp;#191;</td> - <td>&amp;#xBF;</td> - <td>&iquest;</td> - <td>&#191;</td> - <td>&#xBF;</td> - </tr> - <tr> - <td scope=row>Latin capital letter A with grave = Latin capital letter A grave</td> - <td>&amp;Agrave;</td> - <td>&amp;#192;</td> - <td>&amp;#xC0;</td> - <td>&Agrave;</td> - <td>&#192;</td> - <td>&#xC0;</td> - </tr> - <tr> - <td scope=row>Latin capital letter A with acute</td> - <td>&amp;Aacute;</td> - <td>&amp;#193;</td> - <td>&amp;#xC1;</td> - <td>&Aacute;</td> - <td>&#193;</td> - <td>&#xC1;</td> - </tr> - <tr> - <td scope=row>Latin capital letter A with circumflex</td> - <td>&amp;Acirc;</td> - <td>&amp;#194;</td> - <td>&amp;#xC2;</td> - <td>&Acirc;</td> - <td>&#194;</td> - <td>&#xC2;</td> - </tr> - <tr> - <td scope=row>Latin capital letter A with tilde</td> - <td>&amp;Atilde;</td> - <td>&amp;#195;</td> - <td>&amp;#xC3;</td> - <td>&Atilde;</td> - <td>&#195;</td> - <td>&#xC3;</td> - </tr> - <tr> - <td scope=row>Latin capital letter A with diaeresis</td> - <td>&amp;Auml;</td> - <td>&amp;#196;</td> - <td>&amp;#xC4;</td> - <td>&Auml;</td> - <td>&#196;</td> - <td>&#xC4;</td> - </tr> - <tr> - <td scope=row>Latin capital letter A with ring above = Latin capital letter A ring</td> - <td>&amp;Aring;</td> - <td>&amp;#197;</td> - <td>&amp;#xC5;</td> - <td>&Aring;</td> - <td>&#197;</td> - <td>&#xC5;</td> - </tr> - <tr> - <td scope=row>Latin capital letter AE = Latin capital ligature AE</td> - <td>&amp;AElig;</td> - <td>&amp;#198;</td> - <td>&amp;#xC6;</td> - <td>&AElig;</td> - <td>&#198;</td> - <td>&#xC6;</td> - </tr> - <tr> - <td scope=row>Latin capital letter C with cedilla</td> - <td>&amp;Ccedil;</td> - <td>&amp;#199;</td> - <td>&amp;#xC7;</td> - <td>&Ccedil;</td> - <td>&#199;</td> - <td>&#xC7;</td> - </tr> - <tr> - <td scope=row>Latin capital letter E with grave</td> - <td>&amp;Egrave;</td> - <td>&amp;#200;</td> - <td>&amp;#xC8;</td> - <td>&Egrave;</td> - <td>&#200;</td> - <td>&#xC8;</td> - </tr> - <tr> - <td scope=row>Latin capital letter E with acute</td> - <td>&amp;Eacute;</td> - <td>&amp;#201;</td> - <td>&amp;#xC9;</td> - <td>&Eacute;</td> - <td>&#201;</td> - <td>&#xC9;</td> - </tr> - <tr> - <td scope=row>Latin capital letter E with circumflex</td> - <td>&amp;Ecirc;</td> - <td>&amp;#202;</td> - <td>&amp;#xCA;</td> - <td>&Ecirc;</td> - <td>&#202;</td> - <td>&#xCA;</td> - </tr> - <tr> - <td scope=row>Latin capital letter E with diaeresis</td> - <td>&amp;Euml;</td> - <td>&amp;#203;</td> - <td>&amp;#xCB;</td> - <td>&Euml;</td> - <td>&#203;</td> - <td>&#xCB;</td> - </tr> - <tr> - <td scope=row>Latin capital letter I with grave</td> - <td>&amp;Igrave;</td> - <td>&amp;#204;</td> - <td>&amp;#xCC;</td> - <td>&Igrave;</td> - <td>&#204;</td> - <td>&#xCC;</td> - </tr> - <tr> - <td scope=row>Latin capital letter I with acute</td> - <td>&amp;Iacute;</td> - <td>&amp;#205;</td> - <td>&amp;#xCD;</td> - <td>&Iacute;</td> - <td>&#205;</td> - <td>&#xCD;</td> - </tr> - <tr> - <td scope=row>Latin capital letter I with circumflex</td> - <td>&amp;Icirc;</td> - <td>&amp;#206;</td> - <td>&amp;#xCE;</td> - <td>&Icirc;</td> - <td>&#206;</td> - <td>&#xCE;</td> - </tr> - <tr> - <td scope=row>Latin capital letter I with diaeresis</td> - <td>&amp;Iuml;</td> - <td>&amp;#207;</td> - <td>&amp;#xCF;</td> - <td>&Iuml;</td> - <td>&#207;</td> - <td>&#xCF;</td> - </tr> - <tr> - <td scope=row>Latin capital letter ETH</td> - <td>&amp;ETH;</td> - <td>&amp;#208;</td> - <td>&amp;#xD0;</td> - <td>&ETH;</td> - <td>&#208;</td> - <td>&#xD0;</td> - </tr> - <tr> - <td scope=row>Latin capital letter N with tilde</td> - <td>&amp;Ntilde;</td> - <td>&amp;#209;</td> - <td>&amp;#xD1;</td> - <td>&Ntilde;</td> - <td>&#209;</td> - <td>&#xD1;</td> - </tr> - <tr> - <td scope=row>Latin capital letter O with grave</td> - <td>&amp;Ograve;</td> - <td>&amp;#210;</td> - <td>&amp;#xD2;</td> - <td>&Ograve;</td> - <td>&#210;</td> - <td>&#xD2;</td> - </tr> - <tr> - <td scope=row>Latin capital letter O with acute</td> - <td>&amp;Oacute;</td> - <td>&amp;#211;</td> - <td>&amp;#xD3;</td> - <td>&Oacute;</td> - <td>&#211;</td> - <td>&#xD3;</td> - </tr> - <tr> - <td scope=row>Latin capital letter O with circumflex</td> - <td>&amp;Ocirc;</td> - <td>&amp;#212;</td> - <td>&amp;#xD4;</td> - <td>&Ocirc;</td> - <td>&#212;</td> - <td>&#xD4;</td> - </tr> - <tr> - <td scope=row>Latin capital letter O with tilde</td> - <td>&amp;Otilde;</td> - <td>&amp;#213;</td> - <td>&amp;#xD5;</td> - <td>&Otilde;</td> - <td>&#213;</td> - <td>&#xD5;</td> - </tr> - <tr> - <td scope=row>Latin capital letter O with diaeresis</td> - <td>&amp;Ouml;</td> - <td>&amp;#214;</td> - <td>&amp;#xD6;</td> - <td>&Ouml;</td> - <td>&#214;</td> - <td>&#xD6;</td> - </tr> - <tr> - <td scope=row>multiplication sign</td> - <td>&amp;times;</td> - <td>&amp;#215;</td> - <td>&amp;#xD7;</td> - <td>&times;</td> - <td>&#215;</td> - <td>&#xD7;</td> - </tr> - <tr> - <td scope=row>Latin capital letter O with stroke = Latin capital letter O slash</td> - <td>&amp;Oslash;</td> - <td>&amp;#216;</td> - <td>&amp;#xD8;</td> - <td>&Oslash;</td> - <td>&#216;</td> - <td>&#xD8;</td> - </tr> - <tr> - <td scope=row>Latin capital letter U with grave</td> - <td>&amp;Ugrave;</td> - <td>&amp;#217;</td> - <td>&amp;#xD9;</td> - <td>&Ugrave;</td> - <td>&#217;</td> - <td>&#xD9;</td> - </tr> - <tr> - <td scope=row>Latin capital letter U with acute</td> - <td>&amp;Uacute;</td> - <td>&amp;#218;</td> - <td>&amp;#xDA;</td> - <td>&Uacute;</td> - <td>&#218;</td> - <td>&#xDA;</td> - </tr> - <tr> - <td scope=row>Latin capital letter U with circumflex</td> - <td>&amp;Ucirc;</td> - <td>&amp;#219;</td> - <td>&amp;#xDB;</td> - <td>&Ucirc;</td> - <td>&#219;</td> - <td>&#xDB;</td> - </tr> - <tr> - <td scope=row>Latin capital letter U with diaeresis</td> - <td>&amp;Uuml;</td> - <td>&amp;#220;</td> - <td>&amp;#xDC;</td> - <td>&Uuml;</td> - <td>&#220;</td> - <td>&#xDC;</td> - </tr> - <tr> - <td scope=row>Latin capital letter Y with acute</td> - <td>&amp;Yacute;</td> - <td>&amp;#221;</td> - <td>&amp;#xDD;</td> - <td>&Yacute;</td> - <td>&#221;</td> - <td>&#xDD;</td> - </tr> - <tr> - <td scope=row>Latin capital letter THORN</td> - <td>&amp;THORN;</td> - <td>&amp;#222;</td> - <td>&amp;#xDE;</td> - <td>&THORN;</td> - <td>&#222;</td> - <td>&#xDE;</td> - </tr> - <tr> - <td scope=row>Latin small letter sharp s = ess-zed</td> - <td>&amp;szlig;</td> - <td>&amp;#223;</td> - <td>&amp;#xDF;</td> - <td>&szlig;</td> - <td>&#223;</td> - <td>&#xDF;</td> - </tr> - <tr> - <td scope=row>Latin small letter a with grave = Latin small letter a grave</td> - <td>&amp;agrave;</td> - <td>&amp;#224;</td> - <td>&amp;#xE0;</td> - <td>&agrave;</td> - <td>&#224;</td> - <td>&#xE0;</td> - </tr> - <tr> - <td scope=row>Latin small letter a with acute</td> - <td>&amp;aacute;</td> - <td>&amp;#225;</td> - <td>&amp;#xE1;</td> - <td>&aacute;</td> - <td>&#225;</td> - <td>&#xE1;</td> - </tr> - <tr> - <td scope=row>Latin small letter a with circumflex</td> - <td>&amp;acirc;</td> - <td>&amp;#226;</td> - <td>&amp;#xE2;</td> - <td>&acirc;</td> - <td>&#226;</td> - <td>&#xE2;</td> - </tr> - <tr> - <td scope=row>Latin small letter a with tilde</td> - <td>&amp;atilde;</td> - <td>&amp;#227;</td> - <td>&amp;#xE3;</td> - <td>&atilde;</td> - <td>&#227;</td> - <td>&#xE3;</td> - </tr> - <tr> - <td scope=row>Latin small letter a with diaeresis</td> - <td>&amp;auml;</td> - <td>&amp;#228;</td> - <td>&amp;#xE4;</td> - <td>&auml;</td> - <td>&#228;</td> - <td>&#xE4;</td> - </tr> - <tr> - <td scope=row>Latin small letter a with ring above = Latin small letter a ring</td> - <td>&amp;aring;</td> - <td>&amp;#229;</td> - <td>&amp;#xE5;</td> - <td>&aring;</td> - <td>&#229;</td> - <td>&#xE5;</td> - </tr> - <tr> - <td scope=row>Latin small letter ae = Latin small ligature ae</td> - <td>&amp;aelig;</td> - <td>&amp;#230;</td> - <td>&amp;#xE6;</td> - <td>&aelig;</td> - <td>&#230;</td> - <td>&#xE6;</td> - </tr> - <tr> - <td scope=row>Latin small letter c with cedilla</td> - <td>&amp;ccedil;</td> - <td>&amp;#231;</td> - <td>&amp;#xE7;</td> - <td>&ccedil;</td> - <td>&#231;</td> - <td>&#xE7;</td> - </tr> - <tr> - <td scope=row>Latin small letter e with grave</td> - <td>&amp;egrave;</td> - <td>&amp;#232;</td> - <td>&amp;#xE8;</td> - <td>&egrave;</td> - <td>&#232;</td> - <td>&#xE8;</td> - </tr> - <tr> - <td scope=row>Latin small letter e with acute</td> - <td>&amp;eacute;</td> - <td>&amp;#233;</td> - <td>&amp;#xE9;</td> - <td>&eacute;</td> - <td>&#233;</td> - <td>&#xE9;</td> - </tr> - <tr> - <td scope=row>Latin small letter e with circumflex</td> - <td>&amp;ecirc;</td> - <td>&amp;#234;</td> - <td>&amp;#xEA;</td> - <td>&ecirc;</td> - <td>&#234;</td> - <td>&#xEA;</td> - </tr> - <tr> - <td scope=row>Latin small letter e with diaeresis</td> - <td>&amp;euml;</td> - <td>&amp;#235;</td> - <td>&amp;#xEB;</td> - <td>&euml;</td> - <td>&#235;</td> - <td>&#xEB;</td> - </tr> - <tr> - <td scope=row>Latin small letter i with grave</td> - <td>&amp;igrave;</td> - <td>&amp;#236;</td> - <td>&amp;#xEC;</td> - <td>&igrave;</td> - <td>&#236;</td> - <td>&#xEC;</td> - </tr> - <tr> - <td scope=row>Latin small letter i with acute</td> - <td>&amp;iacute;</td> - <td>&amp;#237;</td> - <td>&amp;#xED;</td> - <td>&iacute;</td> - <td>&#237;</td> - <td>&#xED;</td> - </tr> - <tr> - <td scope=row>Latin small letter i with circumflex</td> - <td>&amp;icirc;</td> - <td>&amp;#238;</td> - <td>&amp;#xEE;</td> - <td>&icirc;</td> - <td>&#238;</td> - <td>&#xEE;</td> - </tr> - <tr> - <td scope=row>Latin small letter i with diaeresis</td> - <td>&amp;iuml;</td> - <td>&amp;#239;</td> - <td>&amp;#xEF;</td> - <td>&iuml;</td> - <td>&#239;</td> - <td>&#xEF;</td> - </tr> - <tr> - <td scope=row>Latin small letter eth</td> - <td>&amp;eth;</td> - <td>&amp;#240;</td> - <td>&amp;#xF0;</td> - <td>&eth;</td> - <td>&#240;</td> - <td>&#xF0;</td> - </tr> - <tr> - <td scope=row>Latin small letter n with tilde</td> - <td>&amp;ntilde;</td> - <td>&amp;#241;</td> - <td>&amp;#xF1;</td> - <td>&ntilde;</td> - <td>&#241;</td> - <td>&#xF1;</td> - </tr> - <tr> - <td scope=row>Latin small letter o with grave</td> - <td>&amp;ograve;</td> - <td>&amp;#242;</td> - <td>&amp;#xF2;</td> - <td>&ograve;</td> - <td>&#242;</td> - <td>&#xF2;</td> - </tr> - <tr> - <td scope=row>Latin small letter o with acute</td> - <td>&amp;oacute;</td> - <td>&amp;#243;</td> - <td>&amp;#xF3;</td> - <td>&oacute;</td> - <td>&#243;</td> - <td>&#xF3;</td> - </tr> - <tr> - <td scope=row>Latin small letter o with circumflex</td> - <td>&amp;ocirc;</td> - <td>&amp;#244;</td> - <td>&amp;#xF4;</td> - <td>&ocirc;</td> - <td>&#244;</td> - <td>&#xF4;</td> - </tr> - <tr> - <td scope=row>Latin small letter o with tilde</td> - <td>&amp;otilde;</td> - <td>&amp;#245;</td> - <td>&amp;#xF5;</td> - <td>&otilde;</td> - <td>&#245;</td> - <td>&#xF5;</td> - </tr> - <tr> - <td scope=row>Latin small letter o with diaeresis</td> - <td>&amp;ouml;</td> - <td>&amp;#246;</td> - <td>&amp;#xF6;</td> - <td>&ouml;</td> - <td>&#246;</td> - <td>&#xF6;</td> - </tr> - <tr> - <td scope=row>division sign</td> - <td>&amp;divide;</td> - <td>&amp;#247;</td> - <td>&amp;#xF7;</td> - <td>&divide;</td> - <td>&#247;</td> - <td>&#xF7;</td> - </tr> - <tr> - <td scope=row>Latin small letter o with stroke = Latin small letter o slash</td> - <td>&amp;oslash;</td> - <td>&amp;#248;</td> - <td>&amp;#xF8;</td> - <td>&oslash;</td> - <td>&#248;</td> - <td>&#xF8;</td> - </tr> - <tr> - <td scope=row>Latin small letter u with grave</td> - <td>&amp;ugrave;</td> - <td>&amp;#249;</td> - <td>&amp;#xF9;</td> - <td>&ugrave;</td> - <td>&#249;</td> - <td>&#xF9;</td> - </tr> - <tr> - <td scope=row>Latin small letter u with acute</td> - <td>&amp;uacute;</td> - <td>&amp;#250;</td> - <td>&amp;#xFA;</td> - <td>&uacute;</td> - <td>&#250;</td> - <td>&#xFA;</td> - </tr> - <tr> - <td scope=row>Latin small letter u with circumflex</td> - <td>&amp;ucirc;</td> - <td>&amp;#251;</td> - <td>&amp;#xFB;</td> - <td>&ucirc;</td> - <td>&#251;</td> - <td>&#xFB;</td> - </tr> - <tr> - <td scope=row>Latin small letter u with diaeresis</td> - <td>&amp;uuml;</td> - <td>&amp;#252;</td> - <td>&amp;#xFC;</td> - <td>&uuml;</td> - <td>&#252;</td> - <td>&#xFC;</td> - </tr> - <tr> - <td scope=row>Latin small letter y with acute</td> - <td>&amp;yacute;</td> - <td>&amp;#253;</td> - <td>&amp;#xFD;</td> - <td>&yacute;</td> - <td>&#253;</td> - <td>&#xFD;</td> - </tr> - <tr> - <td scope=row>Latin small letter thorn</td> - <td>&amp;thorn;</td> - <td>&amp;#254;</td> - <td>&amp;#xFE;</td> - <td>&thorn;</td> - <td>&#254;</td> - <td>&#xFE;</td> - </tr> - <tr> - <td scope=row>Latin small letter y with diaeresis</td> - <td>&amp;yuml;</td> - <td>&amp;#255;</td> - <td>&amp;#xFF;</td> - <td>&yuml;</td> - <td>&#255;</td> - <td>&#xFF;</td> - </tr> - </tbody> -</table> - -<div class=footer> -<address>Maintained by <a href="http://www.htmlhelp.com/%7Eliam/">Liam Quinn</a> &lt;<a href="mailto:liam@htmlhelp.com">liam@htmlhelp.com</a>&gt;</address> -<p class=toolbar><a href="../index.html" rel=Start>HTML4.0Reference</a>~ <a href="symbols.html" rel=Next>SymbolsandGreekLetters</a>~ <a href="special.html">OtherSpecialCharacters</a></p> -<p class=copyright>Copyright &copy; 1998 by <a href="http://www.htmlhelp.com/%7Eliam/">Liam Quinn</a>. This material may be distributed only subject to the terms and conditions set forth in the Open Publication License, v1.0 or later (the latest version is presently available at <a href="http://www.opencontent.org/openpub/">http://www.opencontent.org/openpub/</a>).</p> -<p class=copyright>Modfications made by Benj Carson <a>benjcarson@digitaljunkies.ca</a> for dompdf, Jan 5, 2006.</p> -</div> -</body> -</html> diff --git a/application/third_party/dompdf/www/test/encoding_special.html b/application/third_party/dompdf/www/test/encoding_special.html deleted file mode 100644 index 5f9b42d1..00000000 --- a/application/third_party/dompdf/www/test/encoding_special.html +++ /dev/null @@ -1,570 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" - "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html lang=en> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> -<title>HTML 4.0 Special Entities</title> -<link rev=Made href="mailto:liam@htmlhelp.com"> -<link rel=Start href="../index.html"> -<link rel=Prev href="symbols.html"> -<style> -body { - background: white; - color: black; - font-family: sans-serif; -} - -h1 { - color: #c33; - background: none; - font-weight: bold; - text-align: center -} - -h2 { - color: #00008b; - background: none; - font-weight: bold -} - -h3 { - color: #006400; - background: none; - margin-left: 4%; - margin-right: 4%; - font-weight: bold -} - -h4 { - margin-left: 6%; - margin-right: 6%; - font-weight: bold -} - -h5 { - margin-left: 6%; - margin-right: 6%; - font-weight: bold -} - -ul, ol, dl, p { - margin-left: 6%; - margin-right: 6% -} - -ul ul, table ol, table ul, dl ol, dl ul { - margin-left: 1.2em; - margin-right: 1%; - padding-left: 0 -} - -pre { - margin-left: 10%; - white-space: pre -} - -table caption { - font-size: larger; - font-weight: bolder -} - -table p, table dl, ol p, ul p, dl p, blockquote p, .note p, .note ul, .note ol, .note dl, li pre, dd pre { - margin-left: 0; - margin-right: 0 -} - -p.top { - margin-left: 1%; - margin-right: 1% -} - -blockquote { - margin-left: 8%; - margin-right: 8%; - border: thin ridge #dc143c -} - -blockquote pre { - margin-left: 1%; - margin-right: 1% -} - -dt a { - font-weight: bold; - margin-top: .8em -} - -a:link { - color: #00f; - background: none; -} - -a:visited { - color: #800080; - background: none; -} - -a:active { - color: green; - background: #FFD700 -} - -.html { - color: #000080; - background: none -} - -.css { - color: #800000; - background: none -} - -.javascript { - color: #008000; - background: none -} - -.example { margin-left: 10% } - -dfn { - font-style: normal; - font-weight: bolder -} - -var sub { font-style: normal } - -.note { - font-size: 85%; - margin-left: 10% -} - -.SMA { - color: fuchsia; - background: none; - font-family: Kids, "Comic Sans MS", Jester -} - -.oops { - font-family: Jester, "Comic Sans MS" -} - -.author { - font-style: italic -} - -.copyright { - font-size: smaller; - text-align: right; - clear: right -} - -.toolbar { - text-align: center -} - -.toolbar IMG { - float: right -} - -.error { - color: #DC143C; - background: none; - text-decoration: none -} - -.warning { - color: #FF4500; - background: none; - text-decoration: none -} - -.error strong { - color: #DC143C; - background: #FFD700; - text-decoration: none -} - -.warning strong { - color: #FF4500; - background: #FFD700; - text-decoration: none -} - -.warning a:link, .warning a:visited, .warning a:active { - color: #FF4500; - background: none; - text-decoration: underline -} - -.error a:link, .error a:visited, .error a:active { - color: #DC143C; - background: none; - text-decoration: underline -} - -.error strong a:link, .error strong a:visited, .error strong a:active { - color: #DC143C; - background: #FFD700 -} - -.warning strong a:link, .warning strong a:visited, .warning strong a:active { - color: #FF4500; - background: #FFD700 -} - -colgroup.entity { text-align: center } - -.default { text-decoration: underline; font-style: normal } -.required { font-weight: bold } -td li.transitional, .elements li.transitional { - font-weight: lighter; - color: #696969; - background: none -} -td li.frameset, .elements li.frameset { - font-weight: lighter; - color: #808080; - background: none -} - -.footer, .checkedDocument { - margin-top: 2em; - padding-top: 1em; - border-top: solid thin black -} - -strong.legal { - font-weight: normal; - text-transform: uppercase -} - -@media print { - input#toggler, .toolbar { display: none } -} - -table { border-collapse: collapse; width: 100%; } -td { border: 0.5pt solid black; } - -</style> -<meta name="author" content="Liam Quinn"> -<meta name="description" content="A table of the HTML 4.0 entities for markup-significant and internationalization characters."> -<meta name="keywords" content="internationalization, internationalisation, i18n, I18N, entities, characters, character set, HTML, HyperText Markup Language, HTML 4.0, HTML4, character entity reference, decimal, hexadecimal, hex, browser test, WDG, Web Design Group"> -<body> -<h1>Special Entities</h1> -<p>The following table gives the character entity reference, decimal character reference, and hexadecimal character reference for markup-significant and internationalization characters, as well as the rendering of each in your browser. <a href="http://www.unicode.org/charts/">Glyphs</a> of the characters are available at the <a href="http://www.unicode.org/">Unicode Consortium</a>.</p> -<p>With the exception of <a href="http://www.w3.org/MarkUp/html-spec/">HTML 2.0</a>'s <strong class=html>&amp;quot;</strong>, <strong class=html>&amp;amp;</strong>, <strong class=html>&amp;lt;</strong>, and <strong class=html>&amp;gt;</strong>, browser support for these entities is generally quite poor, but recent browsers support some of the character entity references and decimal character references.</p> -<table> - <thead> - <tr> - <th scope=col rowspan=2>Character</th> - <th scope=col rowspan=2>Entity</th> - <th scope=col rowspan=2>Decimal</th> - <th scope=col rowspan=2>Hex</th> - <th scope=colgroup colspan=3>Rendering in Your Browser</th> - </tr> - <tr> - <th scope=col>Entity</th> - <th scope=col>Decimal</th> - <th scope=col>Hex</th> - </tr> - </thead> - <tbody> - <tr> - <td scope=row>quotation mark = APL quote</td> - <td>&amp;quot;</td> - <td>&amp;#34;</td> - <td>&amp;#x22;</td> - <td>&quot;</td> - <td>&#34;</td> - <td>&#x22;</td> - </tr> - <tr> - <td scope=row>ampersand</td> - <td>&amp;amp;</td> - <td>&amp;#38;</td> - <td>&amp;#x26;</td> - <td>&amp;</td> - <td>&#38;</td> - <td>&#x26;</td> - </tr> - <tr> - <td scope=row>less-than sign</td> - <td>&amp;lt;</td> - <td>&amp;#60;</td> - <td>&amp;#x3C;</td> - <td>&lt;</td> - <td>&#60;</td> - <td>&#x3C;</td> - </tr> - <tr> - <td scope=row>greater-than sign</td> - <td>&amp;gt;</td> - <td>&amp;#62;</td> - <td>&amp;#x3E;</td> - <td>&gt;</td> - <td>&#62;</td> - <td>&#x3E;</td> - </tr> - <tr> - <td scope=row>Latin capital ligature OE</td> - <td>&amp;OElig;</td> - <td>&amp;#338;</td> - <td>&amp;#x152;</td> - <td>&OElig;</td> - <td>&#338;</td> - <td>&#x152;</td> - </tr> - <tr> - <td scope=row>Latin small ligature oe</td> - <td>&amp;oelig;</td> - <td>&amp;#339;</td> - <td>&amp;#x153;</td> - <td>&oelig;</td> - <td>&#339;</td> - <td>&#x153;</td> - </tr> - <tr> - <td scope=row>Latin capital letter S with caron</td> - <td>&amp;Scaron;</td> - <td>&amp;#352;</td> - <td>&amp;#x160;</td> - <td>&Scaron;</td> - <td>&#352;</td> - <td>&#x160;</td> - </tr> - <tr> - <td scope=row>Latin small letter s with caron</td> - <td>&amp;scaron;</td> - <td>&amp;#353;</td> - <td>&amp;#x161;</td> - <td>&scaron;</td> - <td>&#353;</td> - <td>&#x161;</td> - </tr> - <tr> - <td scope=row>Latin capital letter Y with diaeresis</td> - <td>&amp;Yuml;</td> - <td>&amp;#376;</td> - <td>&amp;#x178;</td> - <td>&Yuml;</td> - <td>&#376;</td> - <td>&#x178;</td> - </tr> - <tr> - <td scope=row>modifier letter circumflex accent</td> - <td>&amp;circ;</td> - <td>&amp;#710;</td> - <td>&amp;#x2C6;</td> - <td>&circ;</td> - <td>&#710;</td> - <td>&#x2C6;</td> - </tr> - <tr> - <td scope=row>small tilde</td> - <td>&amp;tilde;</td> - <td>&amp;#732;</td> - <td>&amp;#x2DC;</td> - <td>&tilde;</td> - <td>&#732;</td> - <td>&#x2DC;</td> - </tr> - <tr> - <td scope=row>en space</td> - <td>&amp;ensp;</td> - <td>&amp;#8194;</td> - <td>&amp;#x2002;</td> - <td>&ensp;</td> - <td>&#8194;</td> - <td>&#x2002;</td> - </tr> - <tr> - <td scope=row>em space</td> - <td>&amp;emsp;</td> - <td>&amp;#8195;</td> - <td>&amp;#x2003;</td> - <td>&emsp;</td> - <td>&#8195;</td> - <td>&#x2003;</td> - </tr> - <tr> - <td scope=row>thin space</td> - <td>&amp;thinsp;</td> - <td>&amp;#8201;</td> - <td>&amp;#x2009;</td> - <td>&thinsp;</td> - <td>&#8201;</td> - <td>&#x2009;</td> - </tr> - <tr> - <td scope=row>zero width non-joiner</td> - <td>&amp;zwnj;</td> - <td>&amp;#8204;</td> - <td>&amp;#x200C;</td> - <td>&zwnj;</td> - <td>&#8204;</td> - <td>&#x200C;</td> - </tr> - <tr> - <td scope=row>zero width joiner</td> - <td>&amp;zwj;</td> - <td>&amp;#8205;</td> - <td>&amp;#x200D;</td> - <td>&zwj;</td> - <td>&#8205;</td> - <td>&#x200D;</td> - </tr> - <tr> - <td scope=row>left-to-right mark</td> - <td>&amp;lrm;</td> - <td>&amp;#8206;</td> - <td>&amp;#x200E;</td> - <td>&lrm;</td> - <td>&#8206;</td> - <td>&#x200E;</td> - </tr> - <tr> - <td scope=row>right-to-left mark</td> - <td>&amp;rlm;</td> - <td>&amp;#8207;</td> - <td>&amp;#x200F;</td> - <td>&rlm;</td> - <td>&#8207;</td> - <td>&#x200F;</td> - </tr> - <tr> - <td scope=row>en dash</td> - <td>&amp;ndash;</td> - <td>&amp;#8211;</td> - <td>&amp;#x2013;</td> - <td>&ndash;</td> - <td>&#8211;</td> - <td>&#x2013;</td> - </tr> - <tr> - <td scope=row>em dash</td> - <td>&amp;mdash;</td> - <td>&amp;#8212;</td> - <td>&amp;#x2014;</td> - <td>&mdash;</td> - <td>&#8212;</td> - <td>&#x2014;</td> - </tr> - <tr> - <td scope=row>left single quotation mark</td> - <td>&amp;lsquo;</td> - <td>&amp;#8216;</td> - <td>&amp;#x2018;</td> - <td>&lsquo;</td> - <td>&#8216;</td> - <td>&#x2018;</td> - </tr> - <tr> - <td scope=row>right single quotation mark</td> - <td>&amp;rsquo;</td> - <td>&amp;#8217;</td> - <td>&amp;#x2019;</td> - <td>&rsquo;</td> - <td>&#8217;</td> - <td>&#x2019;</td> - </tr> - <tr> - <td scope=row>single low-9 quotation mark</td> - <td>&amp;sbquo;</td> - <td>&amp;#8218;</td> - <td>&amp;#x201A;</td> - <td>&sbquo;</td> - <td>&#8218;</td> - <td>&#x201A;</td> - </tr> - <tr> - <td scope=row>left double quotation mark</td> - <td>&amp;ldquo;</td> - <td>&amp;#8220;</td> - <td>&amp;#x201C;</td> - <td>&ldquo;</td> - <td>&#8220;</td> - <td>&#x201C;</td> - </tr> - <tr> - <td scope=row>right double quotation mark</td> - <td>&amp;rdquo;</td> - <td>&amp;#8221;</td> - <td>&amp;#x201D;</td> - <td>&rdquo;</td> - <td>&#8221;</td> - <td>&#x201D;</td> - </tr> - <tr> - <td scope=row>double low-9 quotation mark</td> - <td>&amp;bdquo;</td> - <td>&amp;#8222;</td> - <td>&amp;#x201E;</td> - <td>&bdquo;</td> - <td>&#8222;</td> - <td>&#x201E;</td> - </tr> - <tr> - <td scope=row>dagger</td> - <td>&amp;dagger;</td> - <td>&amp;#8224;</td> - <td>&amp;#x2020;</td> - <td>&dagger;</td> - <td>&#8224;</td> - <td>&#x2020;</td> - </tr> - <tr> - <td scope=row>double dagger</td> - <td>&amp;Dagger;</td> - <td>&amp;#8225;</td> - <td>&amp;#x2021;</td> - <td>&Dagger;</td> - <td>&#8225;</td> - <td>&#x2021;</td> - </tr> - <tr> - <td scope=row>per mille sign</td> - <td>&amp;permil;</td> - <td>&amp;#8240;</td> - <td>&amp;#x2030;</td> - <td>&permil;</td> - <td>&#8240;</td> - <td>&#x2030;</td> - </tr> - <tr> - <td scope=row>single left-pointing angle quotation mark</td> - <td>&amp;lsaquo;</td> - <td>&amp;#8249;</td> - <td>&amp;#x2039;</td> - <td>&lsaquo;</td> - <td>&#8249;</td> - <td>&#x2039;</td> - </tr> - <tr> - <td scope=row>single right-pointing angle quotation mark</td> - <td>&amp;rsaquo;</td> - <td>&amp;#8250;</td> - <td>&amp;#x203A;</td> - <td>&rsaquo;</td> - <td>&#8250;</td> - <td>&#x203A;</td> - </tr> - <tr> - <td scope=row>euro sign</td> - <td>&amp;euro;</td> - <td>&amp;#8364;</td> - <td>&amp;#x20AC;</td> - <td>&euro;</td> - <td>&#8364;</td> - <td>&#x20AC;</td> - </tr> - </tbody> -</table> - -<div class=footer> -<address>Maintained by <a href="http://www.htmlhelp.com/%7Eliam/">Liam Quinn</a> &lt;<a href="mailto:liam@htmlhelp.com">liam@htmlhelp.com</a>&gt;</address> -<p class=toolbar><a href="../index.html" rel=Start>HTML&#160;4.0&#160;Reference</a>&#160;~ <a href="latin1.html">Latin-1&#160;Characters</a>&#160;~ <a href="symbols.html" rel=Prev>Symbols&#160;and&#160;Greek&#160;Letters</a></p> -<p class=copyright>Copyright &copy; 1998 by <a href="http://www.htmlhelp.com/%7Eliam/">Liam Quinn</a>. This material may be distributed only subject to the terms and conditions set forth in the Open Publication License, v1.0 or later (the latest version is presently available at <a href="http://www.opencontent.org/openpub/">http://www.opencontent.org/openpub/</a>).</p> -<p class=copyright>Modfications made by Benj Carson <a>benjcarson@digitaljunkies.ca</a> for dompdf, Jan 5, 2006.</p> -</div> -</body> -</html> diff --git a/application/third_party/dompdf/www/test/encoding_symbols.html b/application/third_party/dompdf/www/test/encoding_symbols.html deleted file mode 100644 index c487bd4b..00000000 --- a/application/third_party/dompdf/www/test/encoding_symbols.html +++ /dev/null @@ -1,1400 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" - "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html lang=en> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> -<title>HTML 4.0 Entities for Symbols and Greek Letters</title> -<link rev=Made href="mailto:liam@htmlhelp.com"> -<link rel=Start href="../index.html"> -<link rel=Prev href="latin1.html"> -<link rel=Next href="special.html"> -<style> -body { - background: white; - color: black; - font-family: verdana; -} - -h1 { - color: #c33; - background: none; - font-weight: bold; - text-align: center; -} - -h2 { - color: #00008b; - background: none; - font-weight: bold; -} - -h3 { - color: #006400; - background: none; - margin-left: 4%; - margin-right: 4%; - font-weight: bold; -} - -h4 { - margin-left: 6%; - margin-right: 6%; - font-weight: bold; -} - -h5 { - margin-left: 6%; - margin-right: 6%; - font-weight: bold; -} - -ul, ol, dl, p { - margin-left: 6%; - margin-right: 6%; -} - -ul ul, table ol, table ul, dl ol, dl ul { - margin-left: 1.2em; - margin-right: 1%; - padding-left: 0; -} - -pre { - margin-left: 10%; - white-space: pre; -} - -table caption { - font-size: larger; - font-weight: bolder; -} - -table p, table dl, ol p, ul p, dl p, blockquote p, .note p, .note ul, .note ol, .note dl, li pre, dd pre { - margin-left: 0; - margin-right: 0; -} - -p.top { - margin-left: 1%; - margin-right: 1%; -} - -blockquote { - margin-left: 8%; - margin-right: 8%; - border: thin ridge #dc143c; -} - -blockquote pre { - margin-left: 1%; - margin-right: 1%; -} - -dt a { - font-weight: bold; - margin-top: .8em; -} - -a:link { - color: #00f; - background: none;; -} - -a:visited { - color: #800080; - background: none;; -} - -a:active { - color: green; - background: #FFD700; -} - -.html { - color: #000080; - background: none; -} - -.css { - color: #800000; - background: none; -} - -.javascript { - color: #008000; - background: none; -} - -.example { margin-left: 10% } - -dfn { - font-style: normal; - font-weight: bolder; -} - -var sub { font-style: normal } - -.note { - font-size: 85%; - margin-left: 10%; -} - -.SMA { - color: fuchsia; - background: none; - font-family: Kids, "Comic Sans MS", Jester; -} - -.oops { - font-family: Jester, "Comic Sans MS"; -} - -.author { - font-style: italic; -} - -.copyright { - font-size: smaller; - text-align: right; - clear: right; -} - -.toolbar { - text-align: center; -} - -.toolbar IMG { - float: right; -} - -.error { - color: #DC143C; - background: none; - text-decoration: none; -} - -.warning { - color: #FF4500; - background: none; - text-decoration: none; -} - -.error strong { - color: #DC143C; - background: #FFD700; - text-decoration: none; -} - -.warning strong { - color: #FF4500; - background: #FFD700; - text-decoration: none; -} - -.warning a:link, .warning a:visited, .warning a:active { - color: #FF4500; - background: none; - text-decoration: underline; -} - -.error a:link, .error a:visited, .error a:active { - color: #DC143C; - background: none; - text-decoration: underline; -} - -.error strong a:link, .error strong a:visited, .error strong a:active { - color: #DC143C; - background: #FFD700; -} - -.warning strong a:link, .warning strong a:visited, .warning strong a:active { - color: #FF4500; - background: #FFD700; -} - -colgroup.entity { text-align: center } - -.default { text-decoration: underline; font-style: normal } -.required { font-weight: bold } -td li.transitional, .elements li.transitional { - font-weight: lighter; - color: #696969; - background: none; -} -td li.frameset, .elements li.frameset { - font-weight: lighter; - color: #808080; - background: none; -} - -.footer, .checkedDocument { - margin-top: 2em; - padding-top: 1em; - border-top: solid thin black; -} - -strong.legal { - font-weight: normal; - text-transform: uppercase; -} - -@media print { - input#toggler, .toolbar { display: none } -} - - -table { border-collapse: collapse; width: 100%; } -td { border: 0.5pt solid black; } - -</style> -<meta name="author" content="Liam Quinn"> -<meta name="description" content="A table of the HTML 4.0 entities for symbols and Greek letters."> -<meta name="keywords" content="symbols, mathematical symbols, math, Greek letters, alpha, beta, Unicode, entities, characters, character set, HTML, HyperText Markup Language, HTML 4.0, HTML4, character entity reference, decimal, hexadecimal, hex, browser test, WDG, Web Design Group"> -<body> -<h1>Entities for Symbols and Greek Letters</h1> -<p>The following table gives the character entity reference, decimal character reference, and hexadecimal character reference for symbols and Greek letters, as well as the rendering of each in your browser. <a href="http://www.unicode.org/charts/">Glyphs</a> of the characters are available at the <a href="http://www.unicode.org/">Unicode Consortium</a>.</p> -<p>Browser support for these entities is generally quite poor, but recent browsers support some of the character entity references and decimal character references.</p> -<table> - <thead> - <tr> - <th scope=col rowspan=2>Character</th> - <th scope=col rowspan=2>Entity</th> - <th scope=col rowspan=2>Decimal</th> - <th scope=col rowspan=2>Hex</th> - <th scope=colgroup colspan=3>Rendering in Your Browser</th> - </tr> - <tr> - <th scope=col>Entity</th> - <th scope=col>Decimal</th> - <th scope=col>Hex</th> - </tr> - </thead> - <tbody> - <tr> - <td scope=row>Latin small f with hook = function = florin</td> - <td>&amp;fnof;</td> - <td>&amp;#402;</td> - <td>&amp;#x192;</td> - <td>&fnof;</td> - <td>&#402;</td> - <td>&#x192;</td> - </tr> - <tr> - <td scope=row>Greek capital letter alpha</td> - <td>&amp;Alpha;</td> - <td>&amp;#913;</td> - <td>&amp;#x391;</td> - <td>&Alpha;</td> - <td>&#913;</td> - <td>&#x391;</td> - </tr> - <tr> - <td scope=row>Greek capital letter beta</td> - <td>&amp;Beta;</td> - <td>&amp;#914;</td> - <td>&amp;#x392;</td> - <td>&Beta;</td> - <td>&#914;</td> - <td>&#x392;</td> - </tr> - <tr> - <td scope=row>Greek capital letter gamma</td> - <td>&amp;Gamma;</td> - <td>&amp;#915;</td> - <td>&amp;#x393;</td> - <td>&Gamma;</td> - <td>&#915;</td> - <td>&#x393;</td> - </tr> - <tr> - <td scope=row>Greek capital letter delta</td> - <td>&amp;Delta;</td> - <td>&amp;#916;</td> - <td>&amp;#x394;</td> - <td>&Delta;</td> - <td>&#916;</td> - <td>&#x394;</td> - </tr> - <tr> - <td scope=row>Greek capital letter epsilon</td> - <td>&amp;Epsilon;</td> - <td>&amp;#917;</td> - <td>&amp;#x395;</td> - <td>&Epsilon;</td> - <td>&#917;</td> - <td>&#x395;</td> - </tr> - <tr> - <td scope=row>Greek capital letter zeta</td> - <td>&amp;Zeta;</td> - <td>&amp;#918;</td> - <td>&amp;#x396;</td> - <td>&Zeta;</td> - <td>&#918;</td> - <td>&#x396;</td> - </tr> - <tr> - <td scope=row>Greek capital letter eta</td> - <td>&amp;Eta;</td> - <td>&amp;#919;</td> - <td>&amp;#x397;</td> - <td>&Eta;</td> - <td>&#919;</td> - <td>&#x397;</td> - </tr> - <tr> - <td scope=row>Greek capital letter theta</td> - <td>&amp;Theta;</td> - <td>&amp;#920;</td> - <td>&amp;#x398;</td> - <td>&Theta;</td> - <td>&#920;</td> - <td>&#x398;</td> - </tr> - <tr> - <td scope=row>Greek capital letter iota</td> - <td>&amp;Iota;</td> - <td>&amp;#921;</td> - <td>&amp;#x399;</td> - <td>&Iota;</td> - <td>&#921;</td> - <td>&#x399;</td> - </tr> - <tr> - <td scope=row>Greek capital letter kappa</td> - <td>&amp;Kappa;</td> - <td>&amp;#922;</td> - <td>&amp;#x39A;</td> - <td>&Kappa;</td> - <td>&#922;</td> - <td>&#x39A;</td> - </tr> - <tr> - <td scope=row>Greek capital letter lambda</td> - <td>&amp;Lambda;</td> - <td>&amp;#923;</td> - <td>&amp;#x39B;</td> - <td>&Lambda;</td> - <td>&#923;</td> - <td>&#x39B;</td> - </tr> - <tr> - <td scope=row>Greek capital letter mu</td> - <td>&amp;Mu;</td> - <td>&amp;#924;</td> - <td>&amp;#x39C;</td> - <td>&Mu;</td> - <td>&#924;</td> - <td>&#x39C;</td> - </tr> - <tr> - <td scope=row>Greek capital letter nu</td> - <td>&amp;Nu;</td> - <td>&amp;#925;</td> - <td>&amp;#x39D;</td> - <td>&Nu;</td> - <td>&#925;</td> - <td>&#x39D;</td> - </tr> - <tr> - <td scope=row>Greek capital letter xi</td> - <td>&amp;Xi;</td> - <td>&amp;#926;</td> - <td>&amp;#x39E;</td> - <td>&Xi;</td> - <td>&#926;</td> - <td>&#x39E;</td> - </tr> - <tr> - <td scope=row>Greek capital letter omicron</td> - <td>&amp;Omicron;</td> - <td>&amp;#927;</td> - <td>&amp;#x39F;</td> - <td>&Omicron;</td> - <td>&#927;</td> - <td>&#x39F;</td> - </tr> - <tr> - <td scope=row>Greek capital letter pi</td> - <td>&amp;Pi;</td> - <td>&amp;#928;</td> - <td>&amp;#x3A0;</td> - <td>&Pi;</td> - <td>&#928;</td> - <td>&#x3A0;</td> - </tr> - <tr> - <td scope=row>Greek capital letter rho</td> - <td>&amp;Rho;</td> - <td>&amp;#929;</td> - <td>&amp;#x3A1;</td> - <td>&Rho;</td> - <td>&#929;</td> - <td>&#x3A1;</td> - </tr> - <tr> - <td scope=row>Greek capital letter sigma</td> - <td>&amp;Sigma;</td> - <td>&amp;#931;</td> - <td>&amp;#x3A3;</td> - <td>&Sigma;</td> - <td>&#931;</td> - <td>&#x3A3;</td> - </tr> - <tr> - <td scope=row>Greek capital letter tau</td> - <td>&amp;Tau;</td> - <td>&amp;#932;</td> - <td>&amp;#x3A4;</td> - <td>&Tau;</td> - <td>&#932;</td> - <td>&#x3A4;</td> - </tr> - <tr> - <td scope=row>Greek capital letter upsilon</td> - <td>&amp;Upsilon;</td> - <td>&amp;#933;</td> - <td>&amp;#x3A5;</td> - <td>&Upsilon;</td> - <td>&#933;</td> - <td>&#x3A5;</td> - </tr> - <tr> - <td scope=row>Greek capital letter phi</td> - <td>&amp;Phi;</td> - <td>&amp;#934;</td> - <td>&amp;#x3A6;</td> - <td>&Phi;</td> - <td>&#934;</td> - <td>&#x3A6;</td> - </tr> - <tr> - <td scope=row>Greek capital letter chi</td> - <td>&amp;Chi;</td> - <td>&amp;#935;</td> - <td>&amp;#x3A7;</td> - <td>&Chi;</td> - <td>&#935;</td> - <td>&#x3A7;</td> - </tr> - <tr> - <td scope=row>Greek capital letter psi</td> - <td>&amp;Psi;</td> - <td>&amp;#936;</td> - <td>&amp;#x3A8;</td> - <td>&Psi;</td> - <td>&#936;</td> - <td>&#x3A8;</td> - </tr> - <tr> - <td scope=row>Greek capital letter omega</td> - <td>&amp;Omega;</td> - <td>&amp;#937;</td> - <td>&amp;#x3A9;</td> - <td>&Omega;</td> - <td>&#937;</td> - <td>&#x3A9;</td> - </tr> - <tr> - <td scope=row>Greek small letter alpha</td> - <td>&amp;alpha;</td> - <td>&amp;#945;</td> - <td>&amp;#x3B1;</td> - <td>&alpha;</td> - <td>&#945;</td> - <td>&#x3B1;</td> - </tr> - <tr> - <td scope=row>Greek small letter beta</td> - <td>&amp;beta;</td> - <td>&amp;#946;</td> - <td>&amp;#x3B2;</td> - <td>&beta;</td> - <td>&#946;</td> - <td>&#x3B2;</td> - </tr> - <tr> - <td scope=row>Greek small letter gamma</td> - <td>&amp;gamma;</td> - <td>&amp;#947;</td> - <td>&amp;#x3B3;</td> - <td>&gamma;</td> - <td>&#947;</td> - <td>&#x3B3;</td> - </tr> - <tr> - <td scope=row>Greek small letter delta</td> - <td>&amp;delta;</td> - <td>&amp;#948;</td> - <td>&amp;#x3B4;</td> - <td>&delta;</td> - <td>&#948;</td> - <td>&#x3B4;</td> - </tr> - <tr> - <td scope=row>Greek small letter epsilon</td> - <td>&amp;epsilon;</td> - <td>&amp;#949;</td> - <td>&amp;#x3B5;</td> - <td>&epsilon;</td> - <td>&#949;</td> - <td>&#x3B5;</td> - </tr> - <tr> - <td scope=row>Greek small letter zeta</td> - <td>&amp;zeta;</td> - <td>&amp;#950;</td> - <td>&amp;#x3B6;</td> - <td>&zeta;</td> - <td>&#950;</td> - <td>&#x3B6;</td> - </tr> - <tr> - <td scope=row>Greek small letter eta</td> - <td>&amp;eta;</td> - <td>&amp;#951;</td> - <td>&amp;#x3B7;</td> - <td>&eta;</td> - <td>&#951;</td> - <td>&#x3B7;</td> - </tr> - <tr> - <td scope=row>Greek small letter theta</td> - <td>&amp;theta;</td> - <td>&amp;#952;</td> - <td>&amp;#x3B8;</td> - <td>&theta;</td> - <td>&#952;</td> - <td>&#x3B8;</td> - </tr> - <tr> - <td scope=row>Greek small letter iota</td> - <td>&amp;iota;</td> - <td>&amp;#953;</td> - <td>&amp;#x3B9;</td> - <td>&iota;</td> - <td>&#953;</td> - <td>&#x3B9;</td> - </tr> - <tr> - <td scope=row>Greek small letter kappa</td> - <td>&amp;kappa;</td> - <td>&amp;#954;</td> - <td>&amp;#x3BA;</td> - <td>&kappa;</td> - <td>&#954;</td> - <td>&#x3BA;</td> - </tr> - <tr> - <td scope=row>Greek small letter lambda</td> - <td>&amp;lambda;</td> - <td>&amp;#955;</td> - <td>&amp;#x3BB;</td> - <td>&lambda;</td> - <td>&#955;</td> - <td>&#x3BB;</td> - </tr> - <tr> - <td scope=row>Greek small letter mu</td> - <td>&amp;mu;</td> - <td>&amp;#956;</td> - <td>&amp;#x3BC;</td> - <td>&mu;</td> - <td>&#956;</td> - <td>&#x3BC;</td> - </tr> - <tr> - <td scope=row>Greek small letter nu</td> - <td>&amp;nu;</td> - <td>&amp;#957;</td> - <td>&amp;#x3BD;</td> - <td>&nu;</td> - <td>&#957;</td> - <td>&#x3BD;</td> - </tr> - <tr> - <td scope=row>Greek small letter xi</td> - <td>&amp;xi;</td> - <td>&amp;#958;</td> - <td>&amp;#x3BE;</td> - <td>&xi;</td> - <td>&#958;</td> - <td>&#x3BE;</td> - </tr> - <tr> - <td scope=row>Greek small letter omicron</td> - <td>&amp;omicron;</td> - <td>&amp;#959;</td> - <td>&amp;#x3BF;</td> - <td>&omicron;</td> - <td>&#959;</td> - <td>&#x3BF;</td> - </tr> - <tr> - <td scope=row>Greek small letter pi</td> - <td>&amp;pi;</td> - <td>&amp;#960;</td> - <td>&amp;#x3C0;</td> - <td>&pi;</td> - <td>&#960;</td> - <td>&#x3C0;</td> - </tr> - <tr> - <td scope=row>Greek small letter rho</td> - <td>&amp;rho;</td> - <td>&amp;#961;</td> - <td>&amp;#x3C1;</td> - <td>&rho;</td> - <td>&#961;</td> - <td>&#x3C1;</td> - </tr> - <tr> - <td scope=row>Greek small letter final sigma</td> - <td>&amp;sigmaf;</td> - <td>&amp;#962;</td> - <td>&amp;#x3C2;</td> - <td>&sigmaf;</td> - <td>&#962;</td> - <td>&#x3C2;</td> - </tr> - <tr> - <td scope=row>Greek small letter sigma</td> - <td>&amp;sigma;</td> - <td>&amp;#963;</td> - <td>&amp;#x3C3;</td> - <td>&sigma;</td> - <td>&#963;</td> - <td>&#x3C3;</td> - </tr> - <tr> - <td scope=row>Greek small letter tau</td> - <td>&amp;tau;</td> - <td>&amp;#964;</td> - <td>&amp;#x3C4;</td> - <td>&tau;</td> - <td>&#964;</td> - <td>&#x3C4;</td> - </tr> - <tr> - <td scope=row>Greek small letter upsilon</td> - <td>&amp;upsilon;</td> - <td>&amp;#965;</td> - <td>&amp;#x3C5;</td> - <td>&upsilon;</td> - <td>&#965;</td> - <td>&#x3C5;</td> - </tr> - <tr> - <td scope=row>Greek small letter phi</td> - <td>&amp;phi;</td> - <td>&amp;#966;</td> - <td>&amp;#x3C6;</td> - <td>&phi;</td> - <td>&#966;</td> - <td>&#x3C6;</td> - </tr> - <tr> - <td scope=row>Greek small letter chi</td> - <td>&amp;chi;</td> - <td>&amp;#967;</td> - <td>&amp;#x3C7;</td> - <td>&chi;</td> - <td>&#967;</td> - <td>&#x3C7;</td> - </tr> - <tr> - <td scope=row>Greek small letter psi</td> - <td>&amp;psi;</td> - <td>&amp;#968;</td> - <td>&amp;#x3C8;</td> - <td>&psi;</td> - <td>&#968;</td> - <td>&#x3C8;</td> - </tr> - <tr> - <td scope=row>Greek small letter omega</td> - <td>&amp;omega;</td> - <td>&amp;#969;</td> - <td>&amp;#x3C9;</td> - <td>&omega;</td> - <td>&#969;</td> - <td>&#x3C9;</td> - </tr> - <tr> - <td scope=row>Greek small letter theta symbol</td> - <td>&amp;thetasym;</td> - <td>&amp;#977;</td> - <td>&amp;#x3D1;</td> - <td>&thetasym;</td> - <td>&#977;</td> - <td>&#x3D1;</td> - </tr> - <tr> - <td scope=row>Greek upsilon with hook symbol</td> - <td>&amp;upsih;</td> - <td>&amp;#978;</td> - <td>&amp;#x3D2;</td> - <td>&upsih;</td> - <td>&#978;</td> - <td>&#x3D2;</td> - </tr> - <tr> - <td scope=row>Greek pi symbol</td> - <td>&amp;piv;</td> - <td>&amp;#982;</td> - <td>&amp;#x3D6;</td> - <td>&piv;</td> - <td>&#982;</td> - <td>&#x3D6;</td> - </tr> - <tr> - <td scope=row>bullet = black small circle</td> - <td>&amp;bull;</td> - <td>&amp;#8226;</td> - <td>&amp;#x2022;</td> - <td>&bull;</td> - <td>&#8226;</td> - <td>&#x2022;</td> - </tr> - <tr> - <td scope=row>horizontal ellipsis = three dot leader</td> - <td>&amp;hellip;</td> - <td>&amp;#8230;</td> - <td>&amp;#x2026;</td> - <td>&hellip;</td> - <td>&#8230;</td> - <td>&#x2026;</td> - </tr> - <tr> - <td scope=row>prime = minutes = feet</td> - <td>&amp;prime;</td> - <td>&amp;#8242;</td> - <td>&amp;#x2032;</td> - <td>&prime;</td> - <td>&#8242;</td> - <td>&#x2032;</td> - </tr> - <tr> - <td scope=row>double prime = seconds = inches</td> - <td>&amp;Prime;</td> - <td>&amp;#8243;</td> - <td>&amp;#x2033;</td> - <td>&Prime;</td> - <td>&#8243;</td> - <td>&#x2033;</td> - </tr> - <tr> - <td scope=row>overline = spacing overscore</td> - <td>&amp;oline;</td> - <td>&amp;#8254;</td> - <td>&amp;#x203E;</td> - <td>&oline;</td> - <td>&#8254;</td> - <td>&#x203E;</td> - </tr> - <tr> - <td scope=row>fraction slash</td> - <td>&amp;frasl;</td> - <td>&amp;#8260;</td> - <td>&amp;#x2044;</td> - <td>&frasl;</td> - <td>&#8260;</td> - <td>&#x2044;</td> - </tr> - <tr> - <td scope=row>script capital P = power set = Weierstrass p</td> - <td>&amp;weierp;</td> - <td>&amp;#8472;</td> - <td>&amp;#x2118;</td> - <td>&weierp;</td> - <td>&#8472;</td> - <td>&#x2118;</td> - </tr> - <tr> - <td scope=row>blackletter capital I = imaginary part</td> - <td>&amp;image;</td> - <td>&amp;#8465;</td> - <td>&amp;#x2111;</td> - <td>&image;</td> - <td>&#8465;</td> - <td>&#x2111;</td> - </tr> - <tr> - <td scope=row>blackletter capital R = real part symbol</td> - <td>&amp;real;</td> - <td>&amp;#8476;</td> - <td>&amp;#x211C;</td> - <td>&real;</td> - <td>&#8476;</td> - <td>&#x211C;</td> - </tr> - <tr> - <td scope=row>trade mark sign</td> - <td>&amp;trade;</td> - <td>&amp;#8482;</td> - <td>&amp;#x2122;</td> - <td>&trade;</td> - <td>&#8482;</td> - <td>&#x2122;</td> - </tr> - <tr> - <td scope=row>alef symbol = first transfinite cardinal</td> - <td>&amp;alefsym;</td> - <td>&amp;#8501;</td> - <td>&amp;#x2135;</td> - <td>&alefsym;</td> - <td>&#8501;</td> - <td>&#x2135;</td> - </tr> - <tr> - <td scope=row>leftwards arrow</td> - <td>&amp;larr;</td> - <td>&amp;#8592;</td> - <td>&amp;#x2190;</td> - <td>&larr;</td> - <td>&#8592;</td> - <td>&#x2190;</td> - </tr> - <tr> - <td scope=row>upwards arrow</td> - <td>&amp;uarr;</td> - <td>&amp;#8593;</td> - <td>&amp;#x2191;</td> - <td>&uarr;</td> - <td>&#8593;</td> - <td>&#x2191;</td> - </tr> - <tr> - <td scope=row>rightwards arrow</td> - <td>&amp;rarr;</td> - <td>&amp;#8594;</td> - <td>&amp;#x2192;</td> - <td>&rarr;</td> - <td>&#8594;</td> - <td>&#x2192;</td> - </tr> - <tr> - <td scope=row>downwards arrow</td> - <td>&amp;darr;</td> - <td>&amp;#8595;</td> - <td>&amp;#x2193;</td> - <td>&darr;</td> - <td>&#8595;</td> - <td>&#x2193;</td> - </tr> - <tr> - <td scope=row>left right arrow</td> - <td>&amp;harr;</td> - <td>&amp;#8596;</td> - <td>&amp;#x2194;</td> - <td>&harr;</td> - <td>&#8596;</td> - <td>&#x2194;</td> - </tr> - <tr> - <td scope=row>downwards arrow with corner leftwards = carriage return</td> - <td>&amp;crarr;</td> - <td>&amp;#8629;</td> - <td>&amp;#x21B5;</td> - <td>&crarr;</td> - <td>&#8629;</td> - <td>&#x21B5;</td> - </tr> - <tr> - <td scope=row>leftwards double arrow</td> - <td>&amp;lArr;</td> - <td>&amp;#8656;</td> - <td>&amp;#x21D0;</td> - <td>&lArr;</td> - <td>&#8656;</td> - <td>&#x21D0;</td> - </tr> - <tr> - <td scope=row>upwards double arrow</td> - <td>&amp;uArr;</td> - <td>&amp;#8657;</td> - <td>&amp;#x21D1;</td> - <td>&uArr;</td> - <td>&#8657;</td> - <td>&#x21D1;</td> - </tr> - <tr> - <td scope=row>rightwards double arrow</td> - <td>&amp;rArr;</td> - <td>&amp;#8658;</td> - <td>&amp;#x21D2;</td> - <td>&rArr;</td> - <td>&#8658;</td> - <td>&#x21D2;</td> - </tr> - <tr> - <td scope=row>downwards double arrow</td> - <td>&amp;dArr;</td> - <td>&amp;#8659;</td> - <td>&amp;#x21D3;</td> - <td>&dArr;</td> - <td>&#8659;</td> - <td>&#x21D3;</td> - </tr> - <tr> - <td scope=row>left right double arrow</td> - <td>&amp;hArr;</td> - <td>&amp;#8660;</td> - <td>&amp;#x21D4;</td> - <td>&hArr;</td> - <td>&#8660;</td> - <td>&#x21D4;</td> - </tr> - <tr> - <td scope=row>for all</td> - <td>&amp;forall;</td> - <td>&amp;#8704;</td> - <td>&amp;#x2200;</td> - <td>&forall;</td> - <td>&#8704;</td> - <td>&#x2200;</td> - </tr> - <tr> - <td scope=row>partial differential</td> - <td>&amp;part;</td> - <td>&amp;#8706;</td> - <td>&amp;#x2202;</td> - <td>&part;</td> - <td>&#8706;</td> - <td>&#x2202;</td> - </tr> - <tr> - <td scope=row>there exists</td> - <td>&amp;exist;</td> - <td>&amp;#8707;</td> - <td>&amp;#x2203;</td> - <td>&exist;</td> - <td>&#8707;</td> - <td>&#x2203;</td> - </tr> - <tr> - <td scope=row>empty set = null set = diameter</td> - <td>&amp;empty;</td> - <td>&amp;#8709;</td> - <td>&amp;#x2205;</td> - <td>&empty;</td> - <td>&#8709;</td> - <td>&#x2205;</td> - </tr> - <tr> - <td scope=row>nabla = backward difference</td> - <td>&amp;nabla;</td> - <td>&amp;#8711;</td> - <td>&amp;#x2207;</td> - <td>&nabla;</td> - <td>&#8711;</td> - <td>&#x2207;</td> - </tr> - <tr> - <td scope=row>element of</td> - <td>&amp;isin;</td> - <td>&amp;#8712;</td> - <td>&amp;#x2208;</td> - <td>&isin;</td> - <td>&#8712;</td> - <td>&#x2208;</td> - </tr> - <tr> - <td scope=row>not an element of</td> - <td>&amp;notin;</td> - <td>&amp;#8713;</td> - <td>&amp;#x2209;</td> - <td>&notin;</td> - <td>&#8713;</td> - <td>&#x2209;</td> - </tr> - <tr> - <td scope=row>contains as member</td> - <td>&amp;ni;</td> - <td>&amp;#8715;</td> - <td>&amp;#x220B;</td> - <td>&ni;</td> - <td>&#8715;</td> - <td>&#x220B;</td> - </tr> - <tr> - <td scope=row>n-ary product = product sign</td> - <td>&amp;prod;</td> - <td>&amp;#8719;</td> - <td>&amp;#x220F;</td> - <td>&prod;</td> - <td>&#8719;</td> - <td>&#x220F;</td> - </tr> - <tr> - <td scope=row>n-ary sumation</td> - <td>&amp;sum;</td> - <td>&amp;#8721;</td> - <td>&amp;#x2211;</td> - <td>&sum;</td> - <td>&#8721;</td> - <td>&#x2211;</td> - </tr> - <tr> - <td scope=row>minus sign</td> - <td>&amp;minus;</td> - <td>&amp;#8722;</td> - <td>&amp;#x2212;</td> - <td>&minus;</td> - <td>&#8722;</td> - <td>&#x2212;</td> - </tr> - <tr> - <td scope=row>asterisk operator</td> - <td>&amp;lowast;</td> - <td>&amp;#8727;</td> - <td>&amp;#x2217;</td> - <td>&lowast;</td> - <td>&#8727;</td> - <td>&#x2217;</td> - </tr> - <tr> - <td scope=row>square root = radical sign</td> - <td>&amp;radic;</td> - <td>&amp;#8730;</td> - <td>&amp;#x221A;</td> - <td>&radic;</td> - <td>&#8730;</td> - <td>&#x221A;</td> - </tr> - <tr> - <td scope=row>proportional to</td> - <td>&amp;prop;</td> - <td>&amp;#8733;</td> - <td>&amp;#x221D;</td> - <td>&prop;</td> - <td>&#8733;</td> - <td>&#x221D;</td> - </tr> - <tr> - <td scope=row>infinity</td> - <td>&amp;infin;</td> - <td>&amp;#8734;</td> - <td>&amp;#x221E;</td> - <td>&infin;</td> - <td>&#8734;</td> - <td>&#x221E;</td> - </tr> - <tr> - <td scope=row>angle</td> - <td>&amp;ang;</td> - <td>&amp;#8736;</td> - <td>&amp;#x2220;</td> - <td>&ang;</td> - <td>&#8736;</td> - <td>&#x2220;</td> - </tr> - <tr> - <td scope=row>logical and = wedge</td> - <td>&amp;and;</td> - <td>&amp;#8743;</td> - <td>&amp;#x2227;</td> - <td>&and;</td> - <td>&#8743;</td> - <td>&#x2227;</td> - </tr> - <tr> - <td scope=row>logical or = vee</td> - <td>&amp;or;</td> - <td>&amp;#8744;</td> - <td>&amp;#x2228;</td> - <td>&or;</td> - <td>&#8744;</td> - <td>&#x2228;</td> - </tr> - <tr> - <td scope=row>intersection = cap</td> - <td>&amp;cap;</td> - <td>&amp;#8745;</td> - <td>&amp;#x2229;</td> - <td>&cap;</td> - <td>&#8745;</td> - <td>&#x2229;</td> - </tr> - <tr> - <td scope=row>union = cup</td> - <td>&amp;cup;</td> - <td>&amp;#8746;</td> - <td>&amp;#x222A;</td> - <td>&cup;</td> - <td>&#8746;</td> - <td>&#x222A;</td> - </tr> - <tr> - <td scope=row>integral</td> - <td>&amp;int;</td> - <td>&amp;#8747;</td> - <td>&amp;#x222B;</td> - <td>&int;</td> - <td>&#8747;</td> - <td>&#x222B;</td> - </tr> - <tr> - <td scope=row>therefore</td> - <td>&amp;there4;</td> - <td>&amp;#8756;</td> - <td>&amp;#x2234;</td> - <td>&there4;</td> - <td>&#8756;</td> - <td>&#x2234;</td> - </tr> - <tr> - <td scope=row>tilde operator = varies with = similar to</td> - <td>&amp;sim;</td> - <td>&amp;#8764;</td> - <td>&amp;#x223C;</td> - <td>&sim;</td> - <td>&#8764;</td> - <td>&#x223C;</td> - </tr> - <tr> - <td scope=row>approximately equal to</td> - <td>&amp;cong;</td> - <td>&amp;#8773;</td> - <td>&amp;#x2245;</td> - <td>&cong;</td> - <td>&#8773;</td> - <td>&#x2245;</td> - </tr> - <tr> - <td scope=row>almost equal to = asymptotic to</td> - <td>&amp;asymp;</td> - <td>&amp;#8776;</td> - <td>&amp;#x2248;</td> - <td>&asymp;</td> - <td>&#8776;</td> - <td>&#x2248;</td> - </tr> - <tr> - <td scope=row>not equal to</td> - <td>&amp;ne;</td> - <td>&amp;#8800;</td> - <td>&amp;#x2260;</td> - <td>&ne;</td> - <td>&#8800;</td> - <td>&#x2260;</td> - </tr> - <tr> - <td scope=row>identical to</td> - <td>&amp;equiv;</td> - <td>&amp;#8801;</td> - <td>&amp;#x2261;</td> - <td>&equiv;</td> - <td>&#8801;</td> - <td>&#x2261;</td> - </tr> - <tr> - <td scope=row>less-than or equal to</td> - <td>&amp;le;</td> - <td>&amp;#8804;</td> - <td>&amp;#x2264;</td> - <td>&le;</td> - <td>&#8804;</td> - <td>&#x2264;</td> - </tr> - <tr> - <td scope=row>greater-than or equal to</td> - <td>&amp;ge;</td> - <td>&amp;#8805;</td> - <td>&amp;#x2265;</td> - <td>&ge;</td> - <td>&#8805;</td> - <td>&#x2265;</td> - </tr> - <tr> - <td scope=row>subset of</td> - <td>&amp;sub;</td> - <td>&amp;#8834;</td> - <td>&amp;#x2282;</td> - <td>&sub;</td> - <td>&#8834;</td> - <td>&#x2282;</td> - </tr> - <tr> - <td scope=row>superset of</td> - <td>&amp;sup;</td> - <td>&amp;#8835;</td> - <td>&amp;#x2283;</td> - <td>&sup;</td> - <td>&#8835;</td> - <td>&#x2283;</td> - </tr> - <tr> - <td scope=row>not a subset of</td> - <td>&amp;nsub;</td> - <td>&amp;#8836;</td> - <td>&amp;#x2284;</td> - <td>&nsub;</td> - <td>&#8836;</td> - <td>&#x2284;</td> - </tr> - <tr> - <td scope=row>subset of or equal to</td> - <td>&amp;sube;</td> - <td>&amp;#8838;</td> - <td>&amp;#x2286;</td> - <td>&sube;</td> - <td>&#8838;</td> - <td>&#x2286;</td> - </tr> - <tr> - <td scope=row>superset of or equal to</td> - <td>&amp;supe;</td> - <td>&amp;#8839;</td> - <td>&amp;#x2287;</td> - <td>&supe;</td> - <td>&#8839;</td> - <td>&#x2287;</td> - </tr> - <tr> - <td scope=row>circled plus = direct sum</td> - <td>&amp;oplus;</td> - <td>&amp;#8853;</td> - <td>&amp;#x2295;</td> - <td>&oplus;</td> - <td>&#8853;</td> - <td>&#x2295;</td> - </tr> - <tr> - <td scope=row>circled times = vector product</td> - <td>&amp;otimes;</td> - <td>&amp;#8855;</td> - <td>&amp;#x2297;</td> - <td>&otimes;</td> - <td>&#8855;</td> - <td>&#x2297;</td> - </tr> - <tr> - <td scope=row>up tack = orthogonal to = perpendicular</td> - <td>&amp;perp;</td> - <td>&amp;#8869;</td> - <td>&amp;#x22A5;</td> - <td>&perp;</td> - <td>&#8869;</td> - <td>&#x22A5;</td> - </tr> - <tr> - <td scope=row>dot operator</td> - <td>&amp;sdot;</td> - <td>&amp;#8901;</td> - <td>&amp;#x22C5;</td> - <td>&sdot;</td> - <td>&#8901;</td> - <td>&#x22C5;</td> - </tr> - <tr> - <td scope=row>left ceiling = APL upstile</td> - <td>&amp;lceil;</td> - <td>&amp;#8968;</td> - <td>&amp;#x2308;</td> - <td>&lceil;</td> - <td>&#8968;</td> - <td>&#x2308;</td> - </tr> - <tr> - <td scope=row>right ceiling</td> - <td>&amp;rceil;</td> - <td>&amp;#8969;</td> - <td>&amp;#x2309;</td> - <td>&rceil;</td> - <td>&#8969;</td> - <td>&#x2309;</td> - </tr> - <tr> - <td scope=row>left floor = APL downstile</td> - <td>&amp;lfloor;</td> - <td>&amp;#8970;</td> - <td>&amp;#x230A;</td> - <td>&lfloor;</td> - <td>&#8970;</td> - <td>&#x230A;</td> - </tr> - <tr> - <td scope=row>right floor</td> - <td>&amp;rfloor;</td> - <td>&amp;#8971;</td> - <td>&amp;#x230B;</td> - <td>&rfloor;</td> - <td>&#8971;</td> - <td>&#x230B;</td> - </tr> - <tr> - <td scope=row>left-pointing angle bracket = bra</td> - <td>&amp;lang;</td> - <td>&amp;#9001;</td> - <td>&amp;#x2329;</td> - <td>&lang;</td> - <td>&#9001;</td> - <td>&#x2329;</td> - </tr> - <tr> - <td scope=row>right-pointing angle bracket = ket</td> - <td>&amp;rang;</td> - <td>&amp;#9002;</td> - <td>&amp;#x232A;</td> - <td>&rang;</td> - <td>&#9002;</td> - <td>&#x232A;</td> - </tr> - <tr> - <td scope=row>lozenge</td> - <td>&amp;loz;</td> - <td>&amp;#9674;</td> - <td>&amp;#x25CA;</td> - <td>&loz;</td> - <td>&#9674;</td> - <td>&#x25CA;</td> - </tr> - <tr> - <td scope=row>black spade suit</td> - <td>&amp;spades;</td> - <td>&amp;#9824;</td> - <td>&amp;#x2660;</td> - <td>&spades;</td> - <td>&#9824;</td> - <td>&#x2660;</td> - </tr> - <tr> - <td scope=row>black club suit = shamrock</td> - <td>&amp;clubs;</td> - <td>&amp;#9827;</td> - <td>&amp;#x2663;</td> - <td>&clubs;</td> - <td>&#9827;</td> - <td>&#x2663;</td> - </tr> - <tr> - <td scope=row>black heart suit = valentine</td> - <td>&amp;hearts;</td> - <td>&amp;#9829;</td> - <td>&amp;#x2665;</td> - <td>&hearts;</td> - <td>&#9829;</td> - <td>&#x2665;</td> - </tr> - <tr> - <td scope=row>black diamond suit</td> - <td>&amp;diams;</td> - <td>&amp;#9830;</td> - <td>&amp;#x2666;</td> - <td>&diams;</td> - <td>&#9830;</td> - <td>&#x2666;</td> - </tr> - </tbody> -</table> - -<div class=footer> -<address>Maintained by <a href="http://www.htmlhelp.com/%7Eliam/">Liam Quinn</a> &lt;<a href="mailto:liam@htmlhelp.com">liam@htmlhelp.com</a>&gt;</address> -<p class=toolbar><a href="../index.html" rel=Start>HTML&#160;4.0&#160;Reference</a>&#160;~ <a href="latin1.html" rel=Prev>Latin-1&#160;Characters</a>&#160;~ <a href="special.html" rel=Next>Other&#160;Special&#160;Characters</a></p> -<p class=copyright>Copyright &copy; 1998 by <a href="http://www.htmlhelp.com/%7Eliam/">Liam Quinn</a>. This material may be distributed only subject to the terms and conditions set forth in the Open Publication License, v1.0 or later (the latest version is presently available at <a href="http://www.opencontent.org/openpub/">http://www.opencontent.org/openpub/</a>).</p> -<p class=copyright>Modfications made by Benj Carson <a>benjcarson@digitaljunkies.ca</a> for dompdf, Jan 5, 2006.</p> -</div> -</body> -</html> diff --git a/application/third_party/dompdf/www/test/encoding_unicode.html b/application/third_party/dompdf/www/test/encoding_unicode.html deleted file mode 100644 index 90c21044..00000000 --- a/application/third_party/dompdf/www/test/encoding_unicode.html +++ /dev/null @@ -1,8 +0,0 @@ -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> -</head> -<body style="font-size: 8pt; font-family: verdana, sans-serif;"> -献给母亲的爱 -</body> -</html> \ No newline at end of file diff --git a/application/third_party/dompdf/www/test/encoding_unicode_wrapping.html b/application/third_party/dompdf/www/test/encoding_unicode_wrapping.html deleted file mode 100644 index 8c964d32..00000000 --- a/application/third_party/dompdf/www/test/encoding_unicode_wrapping.html +++ /dev/null @@ -1,13 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>Wrapping of non-ANSI characters</title> -</head> - -<body> -No se tendrá en cuenta el hecho de que las partes tengan sus establecimientos en Estados diferentes -cuando ello no resulte del contrato, ni de los tratos entre ellas, ni de información revelada por -las partes en cualquier momento antes de la celebración del contrato o en el momento de su celebración. -</body> -</html> diff --git a/application/third_party/dompdf/www/test/encoding_utf-8.html b/application/third_party/dompdf/www/test/encoding_utf-8.html deleted file mode 100644 index 21a1f2fa..00000000 --- a/application/third_party/dompdf/www/test/encoding_utf-8.html +++ /dev/null @@ -1,793 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> -<meta http-equiv="Content-Type" content="charset=utf-8" /> - <style type="text/css"> - * { - font-family: DejaVuSansMono, monospace; - } - </style> -<title>Unicode (UTF-8) Test</title> -</head> - -<body dir="ltr"> - -<h1 lang="en"><small>Unicode (UTF-8) test</small></h1> - -<p lang="en">You can use this document to check if your browser and your installed fonts display multilingual HTML documents in <a href="http://www.unicode.org/unicode/faq/utf_bom.html#UTF8" title=" FAQ - UTF and BOM ">Unicode (UTF-8)</a> correctly.</p> - -<hr id="latin" class="noprint"> - -<h2 lang="en" class="newpage"><small>Latin extended</small></h2> - -<dl> -<dt lang="en">Letters with <strong>acute</strong></dt> -<dd>AÁ aá &nbsp; CĆ cć &nbsp; EÉ eé &nbsp; IÍ ií &nbsp; LĹ lĺ &nbsp; NŃ nń &nbsp; OÓ oó &nbsp; RŔ rŕ &nbsp; SŚ sś &nbsp; UÚ uú &nbsp; YÝ yý &nbsp; ZŹ zź</dd> - -<dt lang="en">Letters with <strong>apostrophe</strong> (<strong>hacek</strong>)</dt> -<dd>dď &nbsp; LĽ lľ &nbsp; tť</dd> - -<dt lang="en">Letters with <strong>breve</strong></dt> -<dd>AĂ aă &nbsp; GĞ gğ &nbsp; UŬ uŭ</dd> - -<dt lang="en">Letters with <strong>caron</strong> (<strong>hacek</strong>)</dt> -<dd>CČ cč &nbsp; DĎ &nbsp; EĚ eě &nbsp; NŇ nň &nbsp; RŘ rř &nbsp; SŠ sš &nbsp; TŤ &nbsp; ZŽ zž</dd> - -<dt lang="en">Letters with <strong>cedilla</strong> (<strong>comma</strong>)</dt> -<dd>CÇ cç &nbsp; GĢ gģ &nbsp; KĶ kķ &nbsp; LĻ lļ &nbsp; NŅ nņ &nbsp; RŖ rŗ &nbsp; SŞ sş &nbsp; TŢ tţ</dd> - -<dt lang="en">Letters with <strong>circumflex</strong></dt> -<dd>A aâ &nbsp; CĈ cĉ &nbsp; EÊ eê &nbsp; GĜ gĝ &nbsp; HĤ hĥ &nbsp; IÎ iî &nbsp; JĴ jĵ &nbsp; OÔ oô &nbsp; SŜ sŝ &nbsp; UÛ uû &nbsp; WŴ wŵ &nbsp; YŶ yŷ</dd> - -<dt lang="en">Letters with <strong>diaeresis</strong> (<strong>umlaut</strong>)</dt> -<dd>AÄ aä &nbsp; EË eë &nbsp; IÏ iï &nbsp; OÖ oö &nbsp; UÜ uü &nbsp; YŸ yÿ</dd> - -<dt lang="en">Letters with/without <strong>dot above</strong></dt> -<dd>CĊ cċ &nbsp; EĖ eė &nbsp; GĠ gġ &nbsp; Iİ iı &nbsp; ZŻ zż</dd> - -<dt lang="en">Letters with <strong>double acute</strong></dt> -<dd>OŐ oő &nbsp; UŰ uű</dd> - -<dt lang="en">Letters with <strong>grave</strong></dt> -<dd>AÀ aà &nbsp; EÈ eè &nbsp; IÌ iì &nbsp; OÒ oò &nbsp; UÙ uù</dd> - -<dt lang="en">Letters with <strong>horn</strong></dt> -<dd>OƠ oơ &nbsp; UƯ uư</dd> - -<dt lang="en">Letters with <strong>macron</strong></dt> -<dd>AĀ aā &nbsp; EĒ eē &nbsp; IĪ iī &nbsp; OŌ oō &nbsp; UŪ uū</dd> - -<dt lang="en">Letters with <strong>ogonek</strong></dt> -<dd>AĄ aą &nbsp; EĘ eę &nbsp; IĮ iį &nbsp; UŲ uų</dd> - -<dt lang="en">Letters with <strong>ring above</strong></dt> -<dd>AÅ aå &nbsp; UŮ uů</dd> - -<dt lang="en">Letters with <strong>stroke</strong></dt> -<dd>DĐ dđ &nbsp; HĦ hħ &nbsp; LŁ lł &nbsp; OØ oø</dd> - -<dt lang="en">Letters with <strong>tilde</strong></dt> -<dd>Aà aã &nbsp; NÑ nñ &nbsp; OÕ oõ</dd> - -<dt lang="en"><strong>Ligatures</strong></dt> -<dd>AEÆ aeæ &nbsp; OEŒ oeœ</dd> - -<dt lang="en"><strong>Eth</strong> &amp; <strong>Thorn</strong></dt> -<dd>DÐ dð &nbsp; THÞ thþ</dd> - -<dt lang="en">German <strong>sharp s</strong> &amp; <strong>long s</strong></dt> -<dd>ß &nbsp; ſ</dd> -</dl> - -<h3 lang="en" class="noprint"><small><a href="combining-marks.html">Combining diacritical marks</a><br>&nbsp;</small></h3> - -<hr id="greek" class="noprint"> - -<h2 lang="en" class="newpage"><small><a href="greek-alphabet.html">Greek</a></small></h2> - -<dl> -<dt lang="en"><strong>Capital</strong> letters</dt> -<dd>Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω</dd> - -<dt lang="en"><strong>Capital</strong> letters with <strong>tonos</strong></dt> -<dd>Ά &nbsp; Έ &nbsp; Ή &nbsp; Ί &nbsp; Ό &nbsp; Ύ &nbsp; Ώ</dd> - -<dt lang="en"><strong>Capital</strong> letters with <strong>dialytika</strong></dt> -<dd>Ϊ &nbsp; Ϋ</dd> - -<dt lang="en"><strong>Small</strong> letters</dt> -<dd>α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σς τ υ φ χ ψ ω</dd> - -<dt lang="en"><strong>Small</strong> letters with <strong>tonos</strong></dt> -<dd>ά &nbsp; έ &nbsp; ή &nbsp; ί &nbsp; ό &nbsp; ύ &nbsp; ώ</dd> - -<dt lang="en"><strong>Small</strong> letters with <strong>dialytika</strong></dt> -<dd>ϊ &nbsp; ϋ</dd> - -<dt lang="en"><strong>Small</strong> letters with <strong>dialytika and tonos</strong></dt> -<dd>ΐ &nbsp; ΰ</dd> -</dl> - -<hr id="cyrillic" class="noprint"> - -<h2 lang="en"><small><a href="cyrillic-script.html">Cyrillic</a></small></h2> - -<dl> -<dt lang="en"><strong>Russian</strong> alphabet</dt> - -<dd>А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я -<br>а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я</dd> - -<dt lang="en"><strong>Belarussian</strong> alphabet</dt> - -<dd>А Б В Г Д Е Ё Ж З І Й К Л М Н О П Р С Т У Ў Ф Х Ц Ч Ш Ы Ь Э Ю Я -<br>а б в г д е ё ж з і й к л м н о п р с т у ў ф х ц ч ш ы ь э ю я</dd> - -<dt lang="en"><strong>Ukrainian</strong> alphabet</dt> - -<dd>А Б В Г Ґ Д Е Є Ж З И І Ї Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ю Я -<br>а б в г ґ д е є ж з и і ї й к л м н о п р с т у ф х ц ч ш щ ь ю я</dd> - -<dt lang="en"><strong>Bulgarian</strong> alphabet</dt> - -<dd>А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ь Ю Я -<br>а б в г д е ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ь ю я</dd> - -<dt lang="en"><strong>Macedonian</strong> alphabet</dt> - -<dd>А Б В Г Д Ѓ Е Ж З Ѕ И Ј К Л Љ М Н Њ О П Р С Т Ќ У Ф Х Ц Ч Џ Ш -<br>а б в г д ѓ е ж з ѕ и ј к л љ м н њ о п р с т ќ у ф х ц ч џ ш</dd> - -<dt lang="en"><strong>Serbian</strong> alphabet</dt> - -<dd>А Б В Г Д Ђ Е Ж З И Ј К Л Љ М Н Њ О П Р С Т Ћ У Ф Х Ц Ч Џ Ш -<br>а б в г д ђ е ж з и ј к л љ м н њ о п р с т ћ у ф х ц ч џ ш</dd> - -<dt lang="en"><strong>Mongolian</strong> alphabet</dt> - -<dd class="translit"> -A B V G D E &#203; Zh Z I J K L M N O &#214; P R S T U &#220; F X C Ch Sh Shh " Y ' E Ju Ja</dd> -<dd>А Б В Г Д Е Ё Ж З И Й К Л М Н О Ө П Р С Т У Ү Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я -<br>а б в г д е ё ж з и й к л м н о ө п р с т у ү ф х ц ч ш щ ъ ы ь э ю я</dd> -</dl> - -<hr id="armenian" class="noprint"> - -<h2 lang="en" class="newpage"><small><a href="armenian-alphabet.html">Armenian</a></small></h2> - -<dl> -<dt lang="en"><strong>Capital</strong> letters</dt> - -<dd class="translit">a b g d e z &#234; &#259; th -&nbsp; &#382; i l x c&#8217; k&#8217; h dz &#287; -&nbsp; &#269;&#8217; m j n &#353; o &#269; p&#8217; d&#382; -&nbsp; rr s v t&#8217; r c w ph kh -&nbsp; &#244; f</dd> -<dd> -<dfn title=" ajb " >Ա</dfn> -<dfn title=" ben " >Բ</dfn> -<dfn title=" gim " >Գ</dfn> -<dfn title=" da " >Դ</dfn> -<dfn title=" eC " >Ե</dfn> -<dfn title=" za " >Զ</dfn> -<dfn title=" &#234; ">Է</dfn> -<dfn title=" ath " >Ը</dfn> -<dfn title=" tho " >Թ</dfn> &nbsp; -<dfn title=" Ze " >Ժ</dfn> -<dfn title=" ini " >Ի</dfn> -<dfn title=" ljun ">Լ</dfn> -<dfn title=" xe " >Խ</dfn> -<dfn title=" c'a " >Ծ</dfn> -<dfn title=" k'en ">Կ</dfn> -<dfn title=" ho " >Հ</dfn> -<dfn title=" dza " >Ձ</dfn> -<dfn title=" Gat' ">Ղ</dfn> &nbsp; -<dfn title=" C'e " >Ճ</dfn> -<dfn title=" men " >Մ</dfn> -<dfn title=" ji " >Յ</dfn> -<dfn title=" nu " >Ն</dfn> -<dfn title=" Sa " >Շ</dfn> -<dfn title=" vo " >Ո</dfn> -<dfn title=" Ca " >Չ</dfn> -<dfn title=" p'e " >Պ</dfn> -<dfn title=" dZe " >Ջ</dfn> &nbsp; -<dfn title=" rra " >Ռ</dfn> -<dfn title=" se " >Ս</dfn> -<dfn title=" vev " >Վ</dfn> -<dfn title=" t'jun ">Տ</dfn> -<dfn title=" re " >Ր</dfn> -<dfn title=" co " >Ց</dfn> -<dfn title=" vjun " >Ւ</dfn> -<dfn title=" phjur ">Փ</dfn> -<dfn title=" khe " >Ք</dfn> &nbsp; -<dfn title=" o " >Օ</dfn> -<dfn title=" fe " >Ֆ</dfn> -</dd> - -<dt lang="en"><strong>Small</strong> letters</dt> - -<dd class="translit">a b g d e z &#234; &#259; th -&nbsp; &#382; i l x c&#8217; k&#8217; h dz &#287; -&nbsp; &#269;&#8217; m j n &#353; o &#269; p&#8217; d&#382; -&nbsp; rr s v t&#8217; r c w ph kh -&nbsp; ew &#244; f</dd> -<dd> -<dfn title=" ajb " >ա</dfn> -<dfn title=" ben " >բ</dfn> -<dfn title=" gim " >գ</dfn> -<dfn title=" da " >դ</dfn> -<dfn title=" eC " >ե</dfn> -<dfn title=" za " >զ</dfn> -<dfn title=" &#234; ">է</dfn> -<dfn title=" ath " >ը</dfn> -<dfn title=" tho " >թ</dfn> &nbsp; -<dfn title=" Ze " >ժ</dfn> -<dfn title=" ini " >ի</dfn> -<dfn title=" ljun ">լ</dfn> -<dfn title=" xe " >խ</dfn> -<dfn title=" c'a " >ծ</dfn> -<dfn title=" k'en ">կ</dfn> -<dfn title=" ho " >հ</dfn> -<dfn title=" dza " >ձ</dfn> -<dfn title=" Gat' ">ղ</dfn> &nbsp; -<dfn title=" C'e " >ճ</dfn> -<dfn title=" men " >մ</dfn> -<dfn title=" ji " >յ</dfn> -<dfn title=" nu " >ն</dfn> -<dfn title=" Sa " >շ</dfn> -<dfn title=" vo " >ո</dfn> -<dfn title=" Ca " >չ</dfn> -<dfn title=" p'e " >պ</dfn> -<dfn title=" dZe " >ջ</dfn> &nbsp; -<dfn title=" rra " >ռ</dfn> -<dfn title=" se " >ս</dfn> -<dfn title=" vev " >վ</dfn> -<dfn title=" t'jun ">տ</dfn> -<dfn title=" re " >ր</dfn> -<dfn title=" co " >ց</dfn> -<dfn title=" vjun " >ւ</dfn> -<dfn title=" phjur ">փ</dfn> -<dfn title=" khe " >ք</dfn> &nbsp; -<dfn title=" ew " >և</dfn> -<dfn title=" o " >օ</dfn> -<dfn title=" fe " >ֆ</dfn> -</dd> -</dl> - -<hr id="georgian" class="noprint"> - -<h2 lang="en"><small><a href="georgian-alphabet.html">Georgian</a></small></h2> - -<dl> -<dt lang="en"><strong>Mxedruli</strong> (<strong>Mkhedruli</strong>) script</dt> - -<dd class="translit">a b g d e v z th -&nbsp; i k&#8217; l m n o p&#8217; &#382; -&nbsp; r s t&#8217; u ph kh &#287; q&#8217; &#353; -&nbsp; &#269; c dz c&#8217; &#269;&#8217; x d&#382; h</dd> -<dd> -<dfn title=" ani " >ა</dfn> -<dfn title=" bani " >ბ</dfn> -<dfn title=" gani " >გ</dfn> -<dfn title=" doni " >დ</dfn> -<dfn title=" eni " >ე</dfn> -<dfn title=" vini " >ვ</dfn> -<dfn title=" zeni " >ზ</dfn> -<dfn title=" thani ">თ</dfn> &nbsp; -<dfn title=" ini " >ი</dfn> -<dfn title=" k'ani ">კ</dfn> -<dfn title=" lasi " >ლ</dfn> -<dfn title=" mani " >მ</dfn> -<dfn title=" nari " >ნ</dfn> -<dfn title=" oni " >ო</dfn> -<dfn title=" p'ari ">პ</dfn> -<dfn title=" Zani " >ჟ</dfn> &nbsp; -<dfn title=" rae " >რ</dfn> -<dfn title=" sani " >ს</dfn> -<dfn title=" t'ari ">ტ</dfn> -<dfn title=" uni " >უ</dfn> -<dfn title=" phari ">ფ</dfn> -<dfn title=" khani ">ქ</dfn> -<dfn title=" Gani " >ღ</dfn> -<dfn title=" q'ari ">ყ</dfn> -<dfn title=" Sini " >შ</dfn> &nbsp; -<dfn title=" Cini " >ჩ</dfn> -<dfn title=" cani " >ც</dfn> -<dfn title=" dzili ">ძ</dfn> -<dfn title=" c'ili ">წ</dfn> -<dfn title=" C'ari ">ჭ</dfn> -<dfn title=" xani " >ხ</dfn> -<dfn title=" dZani ">ჯ</dfn> -<dfn title=" hae " >ჰ</dfn> -</dd> -</dl> - -<hr id="hebrew" class="noprint"> - -<h2 lang="en"><small>Hebrew</small></h2> - -<dl> -<dt lang="en"><strong>Hebrew</strong> alphabet</dt> - -<dd class="translit">&#8217; v g d h w z H T y xx l mm nn s &#8216; ff cc q r S (&nbsp;&#353; &#347;&nbsp;) t</dd> -<dd dir="rtl" class="rightalign">&nbsp; -א ב ג ד ה ו ז ח ט י כך ל מם נן ס ע פף צץ ק ר ש ( שׁ שׂ ) ת -</dd> - -<dt lang="en">Letters with <strong>dagesh</strong> (<strong>mappiq</strong>)</dt> - -<dd class="translit">&#8217; b g d h w z &nbsp; T y kk l m&nbsp; n&nbsp; s &nbsp; pp c&nbsp; q r S (&nbsp;&#353; &#347;&nbsp;) t</dd> -<dd dir="rtl" class="rightalign">&nbsp; -אּ בּ גּ דּ הּ וּ זּ טּ יּ כּךּ לּ מּ נּ סּ פּףּ צּ קּ רּ שּ ( שּׁ שּׂ ) תּ -</dd> - -<dt lang="en"><strong>Yiddish</strong> digraphs</dt> - -<dd class="translit">ww &nbsp; wy &nbsp; yy</dd> -<dd dir="rtl" class="rightalign">&nbsp; -װ ױ ײ -</dd> - -<dt lang="en">Letters with <strong>rafe</strong></dt> - -<dd class="translit">v &nbsp; x &nbsp; f</dd> -<dd dir="rtl" class="rightalign">&nbsp; -<dfn title=" bet with rafe ">בֿ</dfn> &nbsp; -<dfn title=" kaf with rafe ">כֿ</dfn> &nbsp; -<dfn title=" pe with rafe " >פֿ</dfn></dd> - -<dt lang="en">Vowels with <strong>points</strong></dt> - -<dd class="translit">a &nbsp; &#229; &nbsp; o &nbsp; u &nbsp; i &nbsp; ai</dd> -<dd dir="rtl" class="rightalign">&nbsp; -<dfn title=" alef with pataH ">אַ</dfn> &nbsp; -<dfn title=" alef with qamac ">אָ</dfn> &nbsp; -<dfn title=" waw with Holam " >וֹ </dfn>&nbsp; -<dfn title=" waw with shuruq ">וּ </dfn>&nbsp; -<dfn title=" yod with Hiriq " >יִ </dfn>&nbsp; -<dfn title=" yodyod with pataH ">ײַ</dfn></dd> -</dl> - -<hr id="arabic" class="noprint"> - -<h2 lang="en" class="newpage"><small>Arabic</small></h2> - -<dl> -<dt lang="en"><a href="arabic-alphabet.html"><strong>Arabic</strong> alphabet</a></dt> - -<dd class="translit">&#8217;a a b t &#254; j H x d &#240; r z s &#353; S D T Z &#8216; &#287; f v q k l m n h -t w &#255; y -a</dd> -<dd dir="rtl" class="rightalign"><big> -&nbsp;<dfn title=" alif maddah ">ـآ آ</dfn>&nbsp; -&nbsp;<dfn title=" alif " >ـا ا</dfn>&nbsp; -&nbsp;<dfn title=" ba " >بـبـب ب</dfn>&nbsp; -&nbsp;<dfn title=" ta " >تـتـت ت</dfn>&nbsp; -&nbsp;<dfn title=" tha " >ثـثـث ث</dfn>&nbsp; -&nbsp;<dfn title=" jim " >جـجـج ج</dfn>&nbsp; -&nbsp;<dfn title=" Ha " >حـحـح ح</dfn>&nbsp; -&nbsp;<dfn title=" xa " >خـخـخ خ</dfn>&nbsp; -&nbsp;<dfn title=" dal " >ـد د</dfn>&nbsp; -&nbsp;<dfn title=" dhal " >ـذ ذ</dfn>&nbsp; -&nbsp;<dfn title=" ra " >ـر ر</dfn>&nbsp; -&nbsp;<dfn title=" zay " >ـز ز</dfn>&nbsp; -&nbsp;<dfn title=" sin " >سـسـس س</dfn>&nbsp; -&nbsp;<dfn title=" shin " >شـشـش ش</dfn>&nbsp; -&nbsp;<dfn title=" Sad " >صـصـص ص</dfn>&nbsp; -&nbsp;<dfn title=" Dad " >ضـضـض ض</dfn>&nbsp; -&nbsp;<dfn title=" Ta " >طـطـط ط</dfn>&nbsp; -&nbsp;<dfn title=" Za " >ظـظـظ ظ</dfn>&nbsp; -&nbsp;<dfn title=" ayn " >عـعـع ع</dfn>&nbsp; -&nbsp;<dfn title=" ghayn " >غـغـغ غ</dfn>&nbsp; -&nbsp;<dfn title=" fa " >فـفـف ف</dfn>&nbsp; -&nbsp;<dfn title=" va " >ڤـڤـڤ ڤ</dfn>&nbsp; -&nbsp;<dfn title=" qaf " >قـقـق ق</dfn>&nbsp; -&nbsp;<dfn title=" kaf " >كـكـك ك</dfn>&nbsp; -&nbsp;<dfn title=" lam " >لـلـل ل</dfn>&nbsp; -&nbsp;<dfn title=" mim " >مـمـم م</dfn>&nbsp; -&nbsp;<dfn title=" nun " >نـنـن ن</dfn>&nbsp; -&nbsp;<dfn title=" ha " >هـهـه ه</dfn>&nbsp; -&nbsp;<dfn title=" ta marbuTah ">ـة ة</dfn>&nbsp; -&nbsp;<dfn title=" waw " >ـو و</dfn>&nbsp; -&nbsp;<dfn title=" ya with dots ">يـيـي ي</dfn>&nbsp; -&nbsp;<dfn title=" ya " >یـیـی ی</dfn>&nbsp; -&nbsp;<dfn title=" alif maqSurah ">ـى ى</dfn>&nbsp; -</big></dd> - -<dt lang="en">Letters with <strong>hamzah</strong> <big>&nbsp;</big></dt> - -<dd dir="rtl" class="rightalign"><big> -&nbsp;<dfn title=" hamzah ">ء</dfn>&nbsp; -&nbsp;<dfn title=" alif with hamzah below ">ـإ إ</dfn>&nbsp; -&nbsp;<dfn title=" alif with hamzah above ">ـأ أ</dfn>&nbsp; -&nbsp;<dfn title=" waw with hamzah ">ـؤ ؤ</dfn>&nbsp; -&nbsp;<dfn title=" ya with hamzah " >ئـئـئ ئ</dfn>&nbsp; -</big></dd> - -<dt lang="en"><a href="persian-alphabet.html"><strong>Persian</strong> alphabet</a> <big>&nbsp;</big></dt> - -<dd class="translit">&#8217;a a b p t <u>s</u> j c H x d <u>z</u> r z &#382; s &#353; S Z T Z &#8216; &#287; f q k g l m n v h y</dd> -<dd dir="rtl" class="rightalign"><big> -&nbsp;<dfn title=" alef-e maddi ">ـآ آ</dfn>&nbsp; -&nbsp;<dfn title=" alef " >ـا ا</dfn>&nbsp; -&nbsp;<dfn title=" be " >بـبـب ب</dfn>&nbsp; -&nbsp;<dfn title=" pe " >پـپـپ پ</dfn>&nbsp; -&nbsp;<dfn title=" te " >تـتـت ت</dfn>&nbsp; -&nbsp;<dfn title=" se " >ثـثـث ث</dfn>&nbsp; -&nbsp;<dfn title=" jim " >جـجـج ج</dfn>&nbsp; -&nbsp;<dfn title=" ce " >چـچـچ چ</dfn>&nbsp; -&nbsp;<dfn title=" He " >حـحـح ح</dfn>&nbsp; -&nbsp;<dfn title=" xe " >خـخـخ خ</dfn>&nbsp; -&nbsp;<dfn title=" dal " >ـد د</dfn>&nbsp; -&nbsp;<dfn title=" zal " >ـذ ذ</dfn>&nbsp; -&nbsp;<dfn title=" re " >ـر ر</dfn>&nbsp; -&nbsp;<dfn title=" ze " >ـز ز</dfn>&nbsp; -&nbsp;<dfn title=" zhe " >ـژ ژ</dfn>&nbsp; -&nbsp;<dfn title=" sin " >سـسـس س</dfn>&nbsp; -&nbsp;<dfn title=" shin " >شـشـش ش</dfn>&nbsp; -&nbsp;<dfn title=" Sad " >صـصـص ص</dfn>&nbsp; -&nbsp;<dfn title=" Zad " >ضـضـض ض</dfn>&nbsp; -&nbsp;<dfn title=" Ta " >طـطـط ط</dfn>&nbsp; -&nbsp;<dfn title=" Za " >ظـظـظ ظ</dfn>&nbsp; -&nbsp;<dfn title=" ayn " >عـعـع ع</dfn>&nbsp; -&nbsp;<dfn title=" ghayn " >غـغـغ غ</dfn>&nbsp; -&nbsp;<dfn title=" fe " >فـفـف ف</dfn>&nbsp; -&nbsp;<dfn title=" qaf " >قـقـق ق</dfn>&nbsp; -&nbsp;<dfn title=" kaf " >کـکـک ک</dfn>&nbsp; -&nbsp;<dfn title=" gaf " >گـگـگ گ</dfn>&nbsp; -&nbsp;<dfn title=" lam " >لـلـل ل</dfn>&nbsp; -&nbsp;<dfn title=" mim " >مـمـم م</dfn>&nbsp; -&nbsp;<dfn title=" nun " >نـنـن ن</dfn>&nbsp; -&nbsp;<dfn title=" vav " >ـو و</dfn>&nbsp; -&nbsp;<dfn title=" he " >هـهـه ه</dfn>&nbsp; -&nbsp;<dfn title=" ye " >یـیـی ی</dfn>&nbsp; -</big></dd> - -<dt lang="en" id="urdu"><a href="urdu-alphabet.html"><strong>Urdu</strong> alphabet</a> <big>&nbsp;</big></dt> - -<dd class="translit">&#8217;a a b p t t. <u>s</u> j c H x d d. <u>z</u> r r. z &#382; s &#353; S Z T Z &#8216; &#287; f q k g l m n -n v h h y -e</dd> -<dd dir="rtl" class="rightalign"><big> -&nbsp;<dfn title=" alif madd " >ـآ آ</dfn>&nbsp; -&nbsp;<dfn title=" alif " >ـا ا</dfn>&nbsp; -&nbsp;<dfn title=" be " >بـبـب ب</dfn>&nbsp; -&nbsp;<dfn title=" pe " >پـپـپ پ</dfn>&nbsp; -&nbsp;<dfn title=" te " >تـتـت ت</dfn>&nbsp; -&nbsp;<dfn title=" t.e " >ٹـٹـٹ ٹ</dfn>&nbsp; -&nbsp;<dfn title=" se " >ثـثـث ث</dfn>&nbsp; -&nbsp;<dfn title=" jim " >جـجـج ج</dfn>&nbsp; -&nbsp;<dfn title=" ce " >چـچـچ چ</dfn>&nbsp; -&nbsp;<dfn title=" bar.i He " >حـحـح ح</dfn>&nbsp; -&nbsp;<dfn title=" xe " >خـخـخ خ</dfn>&nbsp; -&nbsp;<dfn title=" dal " >ـد د</dfn>&nbsp; -&nbsp;<dfn title=" d.al " >ـڈ ڈ</dfn>&nbsp; -&nbsp;<dfn title=" zal " >ـذ ذ</dfn>&nbsp; -&nbsp;<dfn title=" re " >ـر ر</dfn>&nbsp; -&nbsp;<dfn title=" r.e " >ـڑ ڑ</dfn>&nbsp; -&nbsp;<dfn title=" ze " >ـز ز</dfn>&nbsp; -&nbsp;<dfn title=" zhe " >ـژ ژ</dfn>&nbsp; -&nbsp;<dfn title=" sin " >سـسـس س</dfn>&nbsp; -&nbsp;<dfn title=" shin " >شـشـش ش</dfn>&nbsp; -&nbsp;<dfn title=" Swad " >صـصـص ص</dfn>&nbsp; -&nbsp;<dfn title=" Zwad " >ضـضـض ض</dfn>&nbsp; -&nbsp;<dfn title=" Toe " >طـطـط ط</dfn>&nbsp; -&nbsp;<dfn title=" Zoe " >ظـظـظ ظ</dfn>&nbsp; -&nbsp;<dfn title=" ain " >عـعـع ع</dfn>&nbsp; -&nbsp;<dfn title=" Gain " >غـغـغ غ</dfn>&nbsp; -&nbsp;<dfn title=" fe " >فـفـف ف</dfn>&nbsp; -&nbsp;<dfn title=" qaf " >قـقـق ق</dfn>&nbsp; -&nbsp;<dfn title=" kaf " >کـکـک ک</dfn>&nbsp; -&nbsp;<dfn title=" gaf " >گـگـگ گ</dfn>&nbsp; -&nbsp;<dfn title=" lam " >لـلـل ل</dfn>&nbsp; -&nbsp;<dfn title=" mim " >مـمـم م</dfn>&nbsp; -&nbsp;<dfn title=" nun " >نـنـن ن</dfn>&nbsp; -&nbsp;<dfn title=" nun-e Gunnah ">ـں ں</dfn>&nbsp; -&nbsp;<dfn title=" vao " >ـو و</dfn>&nbsp; -&nbsp;<dfn title=" chot.i he " >ہـہـہ ہ</dfn>&nbsp; -&nbsp;<dfn title=" do-cashmi he ">ھـھـھ ھ</dfn>&nbsp; -&nbsp;<dfn title=" chot.i ye " >یـیـی ی</dfn>&nbsp; -&nbsp;<dfn title=" bar.i ye " >ـے ے</dfn>&nbsp; -</big></dd> - -<dt lang="en">Arabic-Indic <strong>digits</strong> <big>&nbsp;</big></dt> - -<dd lang="en" class="translit"> -0 1 2 3 4 5 6 7 8 9 10 11 12</dd> -<dd dir="rtl" class="rightalign"> - 0 1 2 3 4 5 6 7 8 9 10 11 12 <br> - ٠ ١ ٢ ٣ ٤ ٥ ٦ ٧ ٨ ٩ ١٠ ١١ ١٢ <br> - ۰ ۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ -</dd> -</dl> - -<hr id="nagari" class="noprint"> - -<h2 lang="en" class="newpage"><small>Devanagari</small></h2> - -<dl> -<dt lang="en"><a href="sanskrit-alphabet.html"><strong>Sanskrit</strong> alphabet</a></dt> - -<dd class="translit">a aa i ii u uu &nbsp; r rr l &nbsp; e ai o au</dd> -<dd> -<dfn title=" a aa i ii u uu ">अ&nbsp;आ&nbsp;इ&nbsp;ई&nbsp;उ&nbsp;ऊ</dfn> &nbsp; -<dfn title=" r rr l ">ऋ&nbsp;ॠ&nbsp;ऌ</dfn> &nbsp; -<dfn title=" e ai o au ">ए&nbsp;ऐ&nbsp;ओ&nbsp;औ</dfn> -</dd> - -<dd class="translit">kaa ki kii ku kuu&nbsp;&nbsp; kr krr kl&nbsp;&nbsp; ke kai ko kau</dd> -<dd> -<dfn title=" kaa ki kii ku kuu ">का कि की कु कू</dfn> &nbsp; -<dfn title=" kr krr kl ">कृ&nbsp;कॄ&nbsp;कॢ</dfn> &nbsp; -<dfn title=" ke kai ko kau ">के कै को कौ</dfn> -</dd> - -<dd class="translit">k kh g gh ng&nbsp;&nbsp; -c&nbsp;ch&nbsp;j&nbsp;jh&nbsp;&#241;&nbsp;&nbsp; -t.&nbsp;t.h&nbsp;d.&nbsp;d.h&nbsp;n.&nbsp;&nbsp; -t&nbsp;th&nbsp;d&nbsp;dh&nbsp;n&nbsp;&nbsp; -p&nbsp;ph&nbsp;b&nbsp;bh&nbsp;m&nbsp;&nbsp; -y&nbsp;r&nbsp;l.&nbsp;l&nbsp;v&nbsp;&nbsp; -&#347;&nbsp;s.&nbsp;s&nbsp;h</dd> -<dd> -<dfn title=" ka kha ga gha nga " >क&nbsp;ख&nbsp;ग&nbsp;घ&nbsp;ङ</dfn>&nbsp;&nbsp; -<dfn title=" ca cha ja jha &#241;a ">च&nbsp;छ&nbsp;ज&nbsp;झ&nbsp;ञ</dfn>&nbsp;&nbsp; -<dfn title=" t.a t.ha d.a d.ha n.a ">ट&nbsp;ठ&nbsp;ड&nbsp;ढ&nbsp;ण</dfn>&nbsp;&nbsp; -<dfn title=" ta tha da dha na " >त&nbsp;थ&nbsp;द&nbsp;ध&nbsp;न</dfn>&nbsp;&nbsp; -<dfn title=" pa pha ba bha ma " >प&nbsp;फ&nbsp;ब&nbsp;भ&nbsp;म</dfn>&nbsp;&nbsp; -<dfn title=" ya ra l.a la va " >य&nbsp;र&nbsp;ळ&nbsp;ल&nbsp;व</dfn>&nbsp;&nbsp; -<dfn title=" sha s.a sa ha " >श&nbsp;ष&nbsp;स&nbsp;ह</dfn> -</dd> - -<dt lang="en"><strong>Hindi/Urdu</strong> letters with <strong>nuqta</strong></dt> - -<dd class="translit">q x &#287; z r. r.h f</dd> -<dd> -<dfn title=" qa xa Ga za ">क़ ख़ ग़ ज़</dfn> -<dfn title=" r.a r.ha fa " >ड़ ढ़ फ़</dfn> -</dd> - -<dt lang="en">Sample <strong>conjuncts</strong></dt> - -<dd class="translit">ks. j&#241; tt tr rt</dd> -<dd> -<dfn title=" ks.a j&#241;a tta tra rta ">क्ष ज्ञ त्त त्र र्त</dfn> -</dd> - -<dt lang="en">Devanagari <strong>digits</strong></dt> - -<dd class="translit"> -0 1 2 3 4 5 6 7 8 9 10</dd> -<dd> -० १ २ ३ ४ ५ ६ ७ ८ ९ १०</dd> -</dl> - -<hr id="gujarati" class="noprint"> - -<h2 lang="en"><small>Gujarati</small></h2> - -<dl> -<dt lang="en"><a href="sanskrit-alphabet.html"><strong>Sanskrit</strong> alphabet</a></dt> - -<dd class="translit">a aa i ii u uu &nbsp; r rr &nbsp; e ai o au</dd> -<dd> -<dfn title=" a aa i ii u uu ">અ&nbsp;આ&nbsp;ઇ&nbsp;ઈ&nbsp;ઉ&nbsp;ઊ</dfn> &nbsp; -<dfn title=" r rr ">ઋ&nbsp;ૠ</dfn> &nbsp; -<dfn title=" e ai o au ">એ&nbsp;ઐ&nbsp;ઓ&nbsp;ઔ</dfn> -</dd> - -<dd class="translit">kaa ki kii ku kuu &nbsp; kr krr &nbsp; ke kai ko kau</dd> -<dd> -<dfn title=" kaa ki kii ku kuu ">કા કિ કી કુ કૂ</dfn> &nbsp; -<dfn title=" kr krr ">કૃ&nbsp;કૄ</dfn> &nbsp; -<dfn title=" ke kai ko kau ">કે કૈ કો કૌ</dfn> -</dd> - -<dd class="translit">k kh g gh ng&nbsp;&nbsp; -c&nbsp;ch&nbsp;j&nbsp;jh&nbsp;&#241;&nbsp;&nbsp; -t.&nbsp;t.h&nbsp;d.&nbsp;d.h&nbsp;n.&nbsp;&nbsp; -t&nbsp;th&nbsp;d&nbsp;dh&nbsp;n&nbsp;&nbsp; -p&nbsp;ph&nbsp;b&nbsp;bh&nbsp;m&nbsp;&nbsp; -y&nbsp;r&nbsp;l.&nbsp;l&nbsp;v&nbsp;&nbsp; -&#347;&nbsp;s.&nbsp;s&nbsp;h</dd> -<dd> -<dfn title=" ka kha ga gha nga " >ક&nbsp;ખ&nbsp;ગ&nbsp;ઘ&nbsp;ઙ</dfn>&nbsp;&nbsp; -<dfn title=" ca cha ja jha &#241;a ">ચ&nbsp;છ&nbsp;જ&nbsp;ઝ&nbsp;ઞ</dfn>&nbsp;&nbsp; -<dfn title=" t.a t.ha d.a d.ha n.a ">ટ&nbsp;ઠ&nbsp;ડ&nbsp;ઢ&nbsp;ણ</dfn>&nbsp;&nbsp; -<dfn title=" ta tha da dha na " >ત&nbsp;થ&nbsp;દ&nbsp;ધ&nbsp;ન</dfn>&nbsp;&nbsp; -<dfn title=" pa pha ba bha ma " >પ&nbsp;ફ&nbsp;બ&nbsp;ભ&nbsp;મ</dfn>&nbsp;&nbsp; -<dfn title=" ya ra l.a la va " >ય&nbsp;ર&nbsp;ળ&nbsp;લ&nbsp;વ</dfn>&nbsp;&nbsp; -<dfn title=" sha s.a sa ha " >શ&nbsp;ષ&nbsp;સ&nbsp;હ</dfn> -</dd> - -<dt lang="en">Sample <strong>conjuncts</strong></dt> - -<dd class="translit">ks. j&#241; tt tr rt</dd> -<dd> -<dfn title=" ks.a j&#241;a tta tra rta ">ક્ષ જ્ઞ ત્ત ત્ર ર્ત</dfn> -</dd> - -<dt lang="en">Gujarati <strong>digits</strong></dt> - -<dd class="translit"> -0 1 2 3 4 5 6 7 8 9 10</dd> -<dd> -૦ ૧ ૨ ૩ ૪ ૫ ૬ ૭ ૮ ૯ ૧૦</dd> -</dl> - -<hr id="bengali" class="noprint"> - -<h2 lang="en" class="newpage"><small>Bengali</small></h2> - -<dl> -<dt lang="en"><a href="sanskrit-alphabet.html"><strong>Sanskrit</strong> alphabet</a></dt> - -<dd class="translit">a aa i ii u uu &nbsp; r rr l &nbsp; e ai o au</dd> -<dd> -<dfn title=" a aa i ii u uu ">অ&nbsp;আ&nbsp;ই&nbsp;ঈ&nbsp;উ&nbsp;ঊ</dfn> &nbsp; -<dfn title=" r rr l ">ঋ&nbsp;ৠ&nbsp;ঌ</dfn> &nbsp; -<dfn title=" e ai o au ">এ&nbsp;ঐ&nbsp;ও&nbsp;ঔ</dfn> -</dd> - -<dd class="translit">kaa ki kii ku kuu&nbsp;&nbsp; kr krr kl&nbsp;&nbsp; ke kai ko kau</dd> -<dd> -<dfn title=" kaa ki kii ku kuu ">কা কি কী কু কূ</dfn> &nbsp; -<dfn title=" kr krr kl ">কৃ&nbsp;কৄ&nbsp;কৢ</dfn> &nbsp; -<dfn title=" ke kai ko kau ">কে কৈ কো কো</dfn> -</dd> - -<dd class="translit">k kh g gh ng&nbsp;&nbsp; -c&nbsp;ch&nbsp;j&nbsp;jh&nbsp;&#241;&nbsp;&nbsp; -t.&nbsp;t.h&nbsp;d.&nbsp;d.h&nbsp;n.&nbsp;&nbsp; -t&nbsp;th&nbsp;d&nbsp;dh&nbsp;n&nbsp;&nbsp; -p&nbsp;ph&nbsp;b&nbsp;bh&nbsp;m&nbsp;&nbsp; -y&nbsp;r&nbsp;l&nbsp;v&nbsp;&nbsp; -&#347;&nbsp;s.&nbsp;s&nbsp;h</dd> -<dd> -<dfn title=" ka kha ga gha nga " >ক&nbsp;খ&nbsp;গ&nbsp;ঘ&nbsp;ঙ</dfn>&nbsp;&nbsp; -<dfn title=" ca cha ja jha &#241;a ">চ&nbsp;ছ&nbsp;জ&nbsp;ঝ&nbsp;ঞ</dfn>&nbsp;&nbsp; -<dfn title=" t.a t.ha d.a d.ha n.a ">ট&nbsp;ঠ&nbsp;ড&nbsp;ঢ&nbsp;ণ</dfn>&nbsp;&nbsp; -<dfn title=" ta tha da dha na " >ত&nbsp;থ&nbsp;দ&nbsp;ধ&nbsp;ন</dfn>&nbsp;&nbsp; -<dfn title=" pa pha ba bha ma " >প&nbsp;ফ&nbsp;ব&nbsp;ভ&nbsp;ম</dfn>&nbsp;&nbsp; -<dfn title=" ya ra la va " >য&nbsp;র&nbsp;ল&nbsp;ব</dfn>&nbsp;&nbsp; -<dfn title=" sha s.a sa ha " >শ&nbsp;ষ&nbsp;স&nbsp;হ</dfn> -</dd> - -<dt lang="en">Letters with <strong>nukta</strong> &amp; <strong>Assamese</strong> letters</dt> - -<dd class="translit">r. r.h y. &nbsp; r v</dd> -<dd> -<dfn title=" r.a r.ha y.a " >ড় ঢ় য়</dfn> &nbsp; -<dfn title=" ra va ">ৰ ৱ</dfn> -</dd> - -<dt lang="en">Sample <strong>conjuncts</strong></dt> - -<dd class="translit">ks. j&#241; tt tr rt</dd> -<dd> -<dfn title=" ks.a j&#241;a tta tra rta ">ক্ষ জ্ঞ ত্ত ত্র র্ত</dfn> -</dd> - -<dt lang="en">Bengali <strong>digits</strong></dt> - -<dd class="translit"> -0 1 2 3 4 5 6 7 8 9 10</dd> -<dd> -০ ১ ২ ৩ ৪ ৫ ৬ ৭ ৮ ৯ ১০</dd> -</dl> - -<hr id="gurmukhi" class="noprint"> - -<h2 lang="en"><small>Gurmukhi</small></h2> - -<dl> -<dt lang="en"><a href="western-panjabi-alphabet.html"><strong>Panjabi</strong> alphabet</a></dt> - -<dd class="translit">a aa i ii u uu &nbsp; e ai o au</dd> -<dd> -<dfn title=" a aa i ii u uu ">ਅ ਆ ਇ ਈ ਉ ਊ</dfn> &nbsp; -<dfn title=" e ai o au ">ਏ ਐ ਓ ਔ</dfn> -</dd> - -<dd class="translit">kaa ki kii ku kuu &nbsp; ke kai ko kau</dd> -<dd> -<dfn title=" kaa ki kii ku kuu ">ਕਾ ਕਿ ਕੀ ਕੁ ਕੂ</dfn> &nbsp; -<dfn title=" ke kai ko kau ">ਕੇ ਕੈ ਕੋ ਕੌ</dfn> -</dd> - -<dd class="translit">k kh g gh ng&nbsp;&nbsp; -c&nbsp;ch&nbsp;j&nbsp;jh&nbsp;&#241;&nbsp;&nbsp; -t.&nbsp;t.h&nbsp;d.&nbsp;d.h&nbsp;n.&nbsp;&nbsp; -t&nbsp;th&nbsp;d&nbsp;dh&nbsp;n&nbsp;&nbsp; -p&nbsp;ph&nbsp;b&nbsp;bh&nbsp;m&nbsp;&nbsp; -y&nbsp;r&nbsp;l&nbsp;v&nbsp;r.&nbsp;&nbsp; -s&nbsp;h</dd> -<dd> -<dfn title=" ka kha ga gha nga " >ਕ&nbsp;ਖ&nbsp;ਗ&nbsp;ਘ&nbsp;ਙ</dfn>&nbsp;&nbsp; -<dfn title=" ca cha ja jha &#241;a ">ਚ&nbsp;ਛ&nbsp;ਜ&nbsp;ਝ&nbsp;ਞ</dfn>&nbsp;&nbsp; -<dfn title=" t.a t.ha d.a d.ha n.a ">ਟ&nbsp;ਠ&nbsp;ਡ&nbsp;ਢ&nbsp;ਣ</dfn>&nbsp;&nbsp; -<dfn title=" ta tha da dha na " >ਤ&nbsp;ਥ&nbsp;ਦ&nbsp;ਧ&nbsp;ਨ</dfn>&nbsp;&nbsp; -<dfn title=" pa pha ba bha ma " >ਪ&nbsp;ਫ&nbsp;ਬ&nbsp;ਭ&nbsp;ਮ</dfn>&nbsp;&nbsp; -<dfn title=" ya ra la va r.a " >ਯ&nbsp;ਰ&nbsp;ਲ&nbsp;ਵ&nbsp;ੜ</dfn>&nbsp;&nbsp; -<dfn title=" sa ha " >ਸ&nbsp;ਹ</dfn> -</dd> - -<dt lang="en">Letters with <strong>nukta</strong></dt> - -<dd class="translit">x &#287; z f l. &#353;</dd> -<dd> -<dfn title=" xa Ga za " >ਖ਼ ਗ਼ ਜ਼</dfn> -<dfn title=" fa l.a sha ">ਫ਼ ਲ਼ ਸ਼</dfn> -</dd> - -<dt lang="en">Gurmukhi <strong>digits</strong></dt> - -<dd class="translit"> -0 1 2 3 4 5 6 7 8 9 10</dd> -<dd> -੦ ੧ ੨ ੩ ੪ ੫ ੬ ੭ ੮ ੯ ੧੦</dd> -</dl> - -<hr id="symbols" class="noprint"> - -<h2 lang="en" class="newpage"><small>Symbols</small></h2> - -<table class="symbols"> -<col><col> -<tbody> -<tr><td>•</td><td>bullet</td></tr> -<tr><td>¢</td><td>cent sign</td></tr> -<tr><td>©</td><td>copyright sign</td></tr> -<tr><td>¤</td><td>currency sign</td></tr> -<tr><td>†</td><td>dagger</td></tr> -<tr><td>°</td><td>degree sign</td></tr> -<tr><td>÷</td><td>division sign</td></tr> -<tr><td>«</td><td>double angle quotation mark (guillemet) &lt;&lt;</td></tr> -<tr><td>»</td><td>double angle quotation mark (guillemet) &gt;&gt;</td></tr> -<tr><td>“</td><td>double quotation mark 66</td></tr> -<tr><td>”</td><td>double quotation mark 99</td></tr> -<tr><td>„</td><td>double quotation mark low-99</td></tr> -<tr><td>…</td><td>ellipsis</td></tr> -<tr><td>—</td><td>em dash</td></tr> -<tr><td>–</td><td>en dash</td></tr> -<tr><td>€</td><td>euro sign</td></tr> -<tr><td>―</td><td>horizontal bar (quotation dash)</td></tr> -<tr><td>µ</td><td>micro sign</td></tr> -<tr><td>·</td><td>middle dot (centered period)</td></tr> -<tr><td>·</td><td>middle dot (centered period, Greek ano teleia)</td></tr> -<tr><td>×</td><td>multiplication sign</td></tr> -<tr><td>¬</td><td>not sign</td></tr> -<tr><td>№</td><td>numero sign</td></tr> -<tr><td>‰</td><td>per mille (per thousand) sign</td></tr> -<tr><td>¶</td><td>pilcrow (paragraph) sign</td></tr> -<tr><td>±</td><td>plus-minus sign</td></tr> -<tr><td>£</td><td>pound sterling sign</td></tr> -<tr><td>®</td><td>registered sign</td></tr> -<tr><td>§</td><td>section sign</td></tr> -<tr><td>₪</td><td>sheqel sign</td></tr> -<tr><td>‹</td><td>single angle quotation mark (guillemet) &lt;</td></tr> -<tr><td>›</td><td>single angle quotation mark (guillemet) &gt;</td></tr> -<tr><td>‘</td><td>single quotation mark 6</td></tr> -<tr><td>’</td><td>single quotation mark 9 (<a href="http://www.cl.cam.ac.uk/~mgk25/ucs/apostrophe.html" title="Apostrophe and acute accent confusion">apostrophe</a>)</td></tr> -<tr><td>¹</td><td>superscript 1</td></tr> -<tr><td>²</td><td>superscript 2</td></tr> -<tr><td>³</td><td>superscript 3</td></tr> -<tr><td>™</td><td>trademark sign</td></tr> -<tr><td>¥</td><td>yen sign</td></tr> -<tr><td>،</td><td>Arabic comma</td></tr> -<tr><td>٫</td><td>Arabic decimal separator</td></tr> -<tr><td>٪</td><td>Arabic percent sign</td></tr> -<tr><td>؟</td><td>Arabic question mark</td></tr> -<tr><td>؛</td><td>Arabic semicolon</td></tr> -<tr><td>۔</td><td>Arabic-Urdu full stop (Arabic-Urdu period)</td></tr> -<tr><td>־</td><td>Hebrew hyphen (maqaf)</td></tr> -<tr><td>׳</td><td>Hebrew prime (geresh)</td></tr> -<tr><td>״</td><td>Hebrew double prime (gershayim)</td></tr> -<tr><td>॰</td><td>Indic abbreviation sign</td></tr> -<tr><td>।</td><td>Indic danda</td></tr> -<tr><td>॥</td><td>Indic double danda</td></tr> -</tbody> -</table> - -<hr class="noprint"> - -<p lang="en"><br>19 February 2010</p> - -</body> -</html> \ No newline at end of file diff --git a/application/third_party/dompdf/www/test/encoding_utf-8_w3.html b/application/third_party/dompdf/www/test/encoding_utf-8_w3.html deleted file mode 100644 index 9a10ffce..00000000 --- a/application/third_party/dompdf/www/test/encoding_utf-8_w3.html +++ /dev/null @@ -1,220 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> - <head> - <title>UTF-8 test file</title> - <style type="text/css"> - pre { - font-family: DejaVuSansMono, monospace; - } - </style> - </head> - <body> - <p>Original by Markus Kuhn, adapted for HTML by Martin D&uuml;rst.</p> -<pre> -UTF-8 encoded sample plain-text file -‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ - -Markus Kuhn [ˈmaʳkʊs kuːn] &lt;mkuhn@acm.org> — 1999-08-20 - - -The ASCII compatible UTF-8 encoding of ISO 10646 and Unicode -plain-text files is defined in RFC 2279 and in ISO 10646-1 Annex R. - - -Using Unicode/UTF-8, you can write in emails and source code things such as - -Mathematics and Sciences: - - ∮ E⋅da = Q, n → ∞, ∑ f(i) = ∏ g(i), ∀x∈ℝ: ⌈x⌉ = −⌊−x⌋, α ∧ ¬β = ¬(¬α ∨ β), - - ℕ ⊆ ℕ₀ ⊂ ℤ ⊂ ℚ ⊂ ℝ ⊂ ℂ, ⊥ &lt; a ≠ b ≡ c ≤ d ≪ ⊤ ⇒ (A ⇔ B), - - 2H₂ + O₂ ⇌ 2H₂O, R = 4.7 kΩ, ⌀ 200 mm - -Linguistics and dictionaries: - - ði ıntəˈnæʃənəl fəˈnɛtık əsoʊsiˈeıʃn - Y [ˈʏpsilɔn], Yen [jɛn], Yoga [ˈjoːgɑ] - -APL: - - ((V⍳V)=⍳⍴V)/V←,V ⌷←⍳→⍴∆∇⊃‾⍎⍕⌈ - -Nicer typography in plain text files: - - ╔══════════════════════════════════════════╗ - ║ ║ - ║ • ‘single’ and “double” quotes ║ - ║ ║ - ║ • Curly apostrophes: “We’ve been here” ║ - ║ ║ - ║ • Latin-1 apostrophe and accents: '´` ║ - ║ ║ - ║ • ‚deutsche‘ „Anführungszeichen“ ║ - ║ ║ - ║ • †, ‡, ‰, •, 3–4, —, −5/+5, ™, … ║ - ║ ║ - ║ • ASCII safety test: 1lI|, 0OD, 8B ║ - ║ ╭─────────╮ ║ - ║ • the euro symbol: │ 14.95 € │ ║ - ║ ╰─────────╯ ║ - ╚══════════════════════════════════════════╝ - -Greek (in Polytonic): - - The Greek anthem: - - Σὲ γνωρίζω ἀπὸ τὴν κόψη - τοῦ σπαθιοῦ τὴν τρομερή, - σὲ γνωρίζω ἀπὸ τὴν ὄψη - ποὺ μὲ βία μετράει τὴ γῆ. - - ᾿Απ᾿ τὰ κόκκαλα βγαλμένη - τῶν ῾Ελλήνων τὰ ἱερά - καὶ σὰν πρῶτα ἀνδρειωμένη - χαῖρε, ὦ χαῖρε, ᾿Ελευθεριά! - - From a speech of Demosthenes in the 4th century BC: - - Οὐχὶ ταὐτὰ παρίσταταί μοι γιγνώσκειν, ὦ ἄνδρες ᾿Αθηναῖοι, - ὅταν τ᾿ εἰς τὰ πράγματα ἀποβλέψω καὶ ὅταν πρὸς τοὺς - λόγους οὓς ἀκούω· τοὺς μὲν γὰρ λόγους περὶ τοῦ - τιμωρήσασθαι Φίλιππον ὁρῶ γιγνομένους, τὰ δὲ πράγματ᾿ - εἰς τοῦτο προήκοντα, ὥσθ᾿ ὅπως μὴ πεισόμεθ᾿ αὐτοὶ - πρότερον κακῶς σκέψασθαι δέον. οὐδέν οὖν ἄλλο μοι δοκοῦσιν - οἱ τὰ τοιαῦτα λέγοντες ἢ τὴν ὑπόθεσιν, περὶ ἧς βουλεύεσθαι, - οὐχὶ τὴν οὖσαν παριστάντες ὑμῖν ἁμαρτάνειν. ἐγὼ δέ, ὅτι μέν - ποτ᾿ ἐξῆν τῇ πόλει καὶ τὰ αὑτῆς ἔχειν ἀσφαλῶς καὶ Φίλιππον - τιμωρήσασθαι, καὶ μάλ᾿ ἀκριβῶς οἶδα· ἐπ᾿ ἐμοῦ γάρ, οὐ πάλαι - γέγονεν ταῦτ᾿ ἀμφότερα· νῦν μέντοι πέπεισμαι τοῦθ᾿ ἱκανὸν - προλαβεῖν ἡμῖν εἶναι τὴν πρώτην, ὅπως τοὺς συμμάχους - σώσομεν. ἐὰν γὰρ τοῦτο βεβαίως ὑπάρξῃ, τότε καὶ περὶ τοῦ - τίνα τιμωρήσεταί τις καὶ ὃν τρόπον ἐξέσται σκοπεῖν· πρὶν δὲ - τὴν ἀρχὴν ὀρθῶς ὑποθέσθαι, μάταιον ἡγοῦμαι περὶ τῆς - τελευτῆς ὁντινοῦν ποιεῖσθαι λόγον. - - Δημοσθένους, Γ´ ᾿Ολυνθιακὸς - -Georgian: - - From a Unicode conference invitation: - - გთხოვთ ახლავე გაიაროთ რეგისტრაცია Unicode-ის მეათე საერთაშორისო - კონფერენციაზე დასასწრებად, რომელიც გაიმართება 10-12 მარტს, - ქ. მაინცში, გერმანიაში. კონფერენცია შეჰკრებს ერთად მსოფლიოს - ექსპერტებს ისეთ დარგებში როგორიცაა ინტერნეტი და Unicode-ი, - ინტერნაციონალიზაცია და ლოკალიზაცია, Unicode-ის გამოყენება - ოპერაციულ სისტემებსა, და გამოყენებით პროგრამებში, შრიფტებში, - ტექსტების დამუშავებასა და მრავალენოვან კომპიუტერულ სისტემებში. - -Russian: - - From a Unicode conference invitation: - - Зарегистрируйтесь сейчас на Десятую Международную Конференцию по - Unicode, которая состоится 10-12 марта 1997 года в Майнце в Германии. - Конференция соберет широкий круг экспертов по вопросам глобального - Интернета и Unicode, локализации и интернационализации, воплощению и - применению Unicode в различных операционных системах и программных - приложениях, шрифтах, верстке и многоязычных компьютерных системах. - -Thai (UCS Level 2): - - Excerpt from a poetry on The Romance of The Three Kingdoms (a Chinese - classic 'San Gua'): - - [----------------------------|------------------------] - ๏ แผ่นดินฮั่นเสื่อมโทรมแสนสังเวช พระปกเกศกองบู๊กู้ขึ้นใหม่ - สิบสองกษัตริย์ก่อนหน้าแลถัดไป สององค์ไซร้โง่เขลาเบาปัญญา - ทรงนับถือขันทีเป็นที่พึ่ง บ้านเมืองจึงวิปริตเป็นนักหนา - โฮจิ๋นเรียกทัพทั่วหัวเมืองมา หมายจะฆ่ามดชั่วตัวสำคัญ - เหมือนขับไสไล่เสือจากเคหา รับหมาป่าเข้ามาเลยอาสัญ - ฝ่ายอ้องอุ้นยุแยกให้แตกกัน ใช้สาวนั้นเป็นชนวนชื่นชวนใจ - พลันลิฉุยกุยกีกลับก่อเหตุ ช่างอาเพศจริงหนาฟ้าร้องไห้ - ต้องรบราฆ่าฟันจนบรรลัย ฤๅหาใครค้ำชูกู้บรรลังก์ ฯ - - (The above is a two-column text. If combining characters are handled - correctly, the lines of the second column should be aligned with the - | character above.) - -Ethiopian: - - Proverbs in the Amharic language: - - ሰማይ አይታረስ ንጉሥ አይከሰስ። - ብላ ካለኝ እንደአባቴ በቆመጠኝ። - ጌጥ ያለቤቱ ቁምጥና ነው። - ደሀ በሕልሙ ቅቤ ባይጠጣ ንጣት በገደለው። - የአፍ ወለምታ በቅቤ አይታሽም። - አይጥ በበላ ዳዋ ተመታ። - ሲተረጉሙ ይደረግሙ። - ቀስ በቀስ፥ ዕንቁላል በእግሩ ይሄዳል። - ድር ቢያብር አንበሳ ያስር። - ሰው እንደቤቱ እንጅ እንደ ጉረቤቱ አይተዳደርም። - እግዜር የከፈተውን ጉሮሮ ሳይዘጋው አይድርም። - የጎረቤት ሌባ፥ ቢያዩት ይስቅ ባያዩት ያጠልቅ። - ሥራ ከመፍታት ልጄን ላፋታት። - ዓባይ ማደሪያ የለው፥ ግንድ ይዞ ይዞራል። - የእስላም አገሩ መካ የአሞራ አገሩ ዋርካ። - ተንጋሎ ቢተፉ ተመልሶ ባፉ። - ወዳጅህ ማር ቢሆን ጨርስህ አትላሰው። - እግርህን በፍራሽህ ልክ ዘርጋ። - -Runes: - - ᚻᛖ ᚳᚹᚫᚦ ᚦᚫᛏ ᚻᛖ ᛒᚢᛞᛖ ᚩᚾ ᚦᚫᛗ ᛚᚪᚾᛞᛖ ᚾᚩᚱᚦᚹᛖᚪᚱᛞᚢᛗ ᚹᛁᚦ ᚦᚪ ᚹᛖᛥᚫ - - (Old English, which transcribed into Latin reads 'He cwaeth that he - bude thaem lande northweardum with tha Westsae.' and means 'He said - that he lived in the northern land near the Western Sea.') - -Braille: - - ⡌⠁⠧⠑ ⠼⠁⠒ ⡍⠜⠇⠑⠹⠰⠎ ⡣⠕⠌ - - ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠙⠑⠁⠙⠒ ⠞⠕ ⠃⠑⠛⠔ ⠺⠊⠹⠲ ⡹⠻⠑ ⠊⠎ ⠝⠕ ⠙⠳⠃⠞ - ⠱⠁⠞⠑⠧⠻ ⠁⠃⠳⠞ ⠹⠁⠞⠲ ⡹⠑ ⠗⠑⠛⠊⠌⠻ ⠕⠋ ⠙⠊⠎ ⠃⠥⠗⠊⠁⠇ ⠺⠁⠎ - ⠎⠊⠛⠝⠫ ⠃⠹ ⠹⠑ ⠊⠇⠻⠛⠹⠍⠁⠝⠂ ⠹⠑ ⠊⠇⠻⠅⠂ ⠹⠑ ⠥⠝⠙⠻⠞⠁⠅⠻⠂ - ⠁⠝⠙ ⠹⠑ ⠡⠊⠑⠋ ⠍⠳⠗⠝⠻⠲ ⡎⠊⠗⠕⠕⠛⠑ ⠎⠊⠛⠝⠫ ⠊⠞⠲ ⡁⠝⠙ - ⡎⠊⠗⠕⠕⠛⠑⠰⠎ ⠝⠁⠍⠑ ⠺⠁⠎ ⠛⠕⠕⠙ ⠥⠏⠕⠝ ⠰⡡⠁⠝⠛⠑⠂ ⠋⠕⠗ ⠁⠝⠹⠹⠔⠛ ⠙⠑ - ⠡⠕⠎⠑ ⠞⠕ ⠏⠥⠞ ⠙⠊⠎ ⠙⠁⠝⠙ ⠞⠕⠲ - - ⡕⠇⠙ ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠁⠎ ⠙⠑⠁⠙ ⠁⠎ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ - - ⡍⠔⠙⠖ ⡊ ⠙⠕⠝⠰⠞ ⠍⠑⠁⠝ ⠞⠕ ⠎⠁⠹ ⠹⠁⠞ ⡊ ⠅⠝⠪⠂ ⠕⠋ ⠍⠹ - ⠪⠝ ⠅⠝⠪⠇⠫⠛⠑⠂ ⠱⠁⠞ ⠹⠻⠑ ⠊⠎ ⠏⠜⠞⠊⠊⠥⠇⠜⠇⠹ ⠙⠑⠁⠙ ⠁⠃⠳⠞ - ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ ⡊ ⠍⠊⠣⠞ ⠙⠁⠧⠑ ⠃⠑⠲ ⠔⠊⠇⠔⠫⠂ ⠍⠹⠎⠑⠇⠋⠂ ⠞⠕ - ⠗⠑⠛⠜⠙ ⠁ ⠊⠕⠋⠋⠔⠤⠝⠁⠊⠇ ⠁⠎ ⠹⠑ ⠙⠑⠁⠙⠑⠌ ⠏⠊⠑⠊⠑ ⠕⠋ ⠊⠗⠕⠝⠍⠕⠝⠛⠻⠹ - ⠔ ⠹⠑ ⠞⠗⠁⠙⠑⠲ ⡃⠥⠞ ⠹⠑ ⠺⠊⠎⠙⠕⠍ ⠕⠋ ⠳⠗ ⠁⠝⠊⠑⠌⠕⠗⠎ - ⠊⠎ ⠔ ⠹⠑ ⠎⠊⠍⠊⠇⠑⠆ ⠁⠝⠙ ⠍⠹ ⠥⠝⠙⠁⠇⠇⠪⠫ ⠙⠁⠝⠙⠎ - ⠩⠁⠇⠇ ⠝⠕⠞ ⠙⠊⠌⠥⠗⠃ ⠊⠞⠂ ⠕⠗ ⠹⠑ ⡊⠳⠝⠞⠗⠹⠰⠎ ⠙⠕⠝⠑ ⠋⠕⠗⠲ ⡹⠳ - ⠺⠊⠇⠇ ⠹⠻⠑⠋⠕⠗⠑ ⠏⠻⠍⠊⠞ ⠍⠑ ⠞⠕ ⠗⠑⠏⠑⠁⠞⠂ ⠑⠍⠏⠙⠁⠞⠊⠊⠁⠇⠇⠹⠂ ⠹⠁⠞ - ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠁⠎ ⠙⠑⠁⠙ ⠁⠎ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ - - (The first couple of paragraphs of "A Christmas Carol" by Dickens) - -Compact font selection example text: - - ABCDEFGHIJKLMNOPQRSTUVWXYZ /0123456789 - abcdefghijklmnopqrstuvwxyz £©µÀÆÖÞßéöÿ - –—‘“”„†•…‰™œŠŸž€ ΑΒΓΔΩαβγδω АБВГДабвгд - ∀∂∈ℝ∧∪≡∞ ↑↗↨↻⇣ ┐┼╔╘░►☺♀ fi�⑀₂ἠḂӥẄɐː⍎אԱა - -Greetings in various languages: - - Hello world, Καλημέρα κόσμε, コンニチハ - -Box drawing alignment tests: █ - ▉ - ╔══╦══╗ ┌──┬──┐ ╭──┬──╮ ╭──┬──╮ ┏━━┳━━┓ ┎┒┏┑ ╷ ╻ ┏┯┓ ┌┰┐ ▊ ╱╲╱╲╳╳╳ - ║┌─╨─┐║ │╔═╧═╗│ │╒═╪═╕│ │╓─╁─╖│ ┃┌─╂─┐┃ ┗╃╄┙ ╶┼╴╺╋╸┠┼┨ ┝╋┥ ▋ ╲╱╲╱╳╳╳ - ║│╲ ╱│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ ╿ │┃ ┍╅╆┓ ╵ ╹ ┗┷┛ └┸┘ ▌ ╱╲╱╲╳╳╳ - ╠╡ ╳ ╞╣ ├╢ ╟┤ ├┼─┼─┼┤ ├╫─╂─╫┤ ┣┿╾┼╼┿┫ ┕┛┖┚ ┌┄┄┐ ╎ ┏┅┅┓ ┋ ▍ ╲╱╲╱╳╳╳ - ║│╱ ╲│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ ╽ │┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╏ ┇ ┋ ▎ - ║└─╥─┘║ │╚═╤═╝│ │╘═╪═╛│ │╙─╀─╜│ ┃└─╂─┘┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╏ ┇ ┋ ▏ - ╚══╩══╝ └──┴──┘ ╰──┴──╯ ╰──┴──╯ ┗━━┻━━┛ └╌╌┘ ╎ ┗╍╍┛ ┋ ▁▂▃▄▅▆▇█ - -</pre> -</body> -</html> \ No newline at end of file diff --git a/application/third_party/dompdf/www/test/image_background.html b/application/third_party/dompdf/www/test/image_background.html deleted file mode 100644 index 15b2efd8..00000000 --- a/application/third_party/dompdf/www/test/image_background.html +++ /dev/null @@ -1,68 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head> -<style> -p.c1 { background-image: url(images/dompdf_simple.png); background-repeat: repeat-x; background-position: 100px 50%; } -p.c2 { background-image: url(images/php.gif); background-position: bottom center; background-repeat: repeat-y; } -</style> -</head> -<body> -<h1>Lorem ipsum dolor sit amet</h1> -<p class="c1">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec at -odio vitae libero tempus convallis. Cum sociis natoque penatibus et -magnis dis parturient montes, nascetur ridiculus mus. Vestibulum purus -mauris, dapibus eu, sagittis quis, sagittis quis, mi. Morbi fringilla -massa quis velit. Curabitur metus massa, semper mollis, molestie vel, -adipiscing nec, massa. Phasellus vitae felis sed lectus dapibus -facilisis. In ultrices sagittis ipsum. In at est. Integer iaculis -turpis vel magna. Cras eu est. Integer porttitor ligula a -tellus. Curabitur accumsan ipsum a velit. Sed laoreet lectus quis -leo. Nulla pellentesque molestie ante. Quisque vestibulum est id -justo. Ut pellentesque ante in neque.</p> - -<p class="c2">Curabitur ut diam eu dui vestibulum pharetra. Nam pellentesque, justo -non hendrerit venenatis, mi orci pretium mi, et vehicula leo arcu quis -diam. Nullam mattis laoreet quam. Morbi mollis sem ut tellus. Nam mi -massa, lobortis eu, sollicitudin et, iaculis et, massa. Maecenas purus -mauris, luctus sit amet, pharetra in, facilisis sit amet, elit. Nullam -vel erat tempus purus molestie suscipit. <span>Vestibulum odio lorem, -sollicitudin non, volutpat sit amet, tincidunt vel, nunc. Nulla quis -ante vestibulum odio feugiat facilisis. Proin lorem nisl, viverra at, -rhoncus quis, semper nec, mi. Donec euismod enim vitae velit</span>. Nulla -sed lectus. Vivamus placerat, lacus sed vehicula sagittis, arcu massa -adipiscing lorem, bibendum luctus nisl tortor vitae leo.</p> - -<p class="c1">Etiam a mauris. Proin justo elit, accumsan sit amet, tempus et, -blandit id, tellus. Morbi varius, nisi id iaculis aliquam, lacus -ligula facilisis velit, ac pharetra ipsum augue a massa. Etiam rhoncus -commodo orci. Mauris ullamcorper sagittis turpis. Nullam magna libero, -sagittis sed, auctor faucibus, accumsan vitae, urna. Pellentesque -volutpat. Aliquam sapien ipsum, eleifend nec, imperdiet vitae, -consectetuer id, quam. Donec a urna. Suspendisse sit amet -velit. Curabitur quis nisi id dui viverra ornare. Sed condimentum enim -quis tortor. Ut condimentum, magna non tempus tincidunt, leo nibh -molestie tellus, vitae convallis dolor ante sed ante. Nunc et -metus. Phasellus ultricies. Fusce faucibus tortor sit amet mauris.</p> - -<p class="c2">Aliquam enim. Duis et diam. Praesent porta, mauris quis pellentesque -volutpat, erat elit vulputate eros, vitae pulvinar augue velit sit -amet sem. Fusce eu urna eu nisi condimentum posuere. Vivamus sed -felis. Duis eget urna vitae eros interdum dignissim. Proin justo eros, -eleifend in, porttitor in, malesuada non, neque. Etiam sed -augue. Nulla sit amet magna. Lorem ipsum dolor sit amet, consectetuer -adipiscing elit. Mauris facilisis. Curabitur massa magna, pulvinar a, -nonummy eget, egestas vitae, mauris. Quisque vel elit sit amet lorem -malesuada facilisis. Vestibulum porta, metus sit amet egestas -interdum, urna justo euismod erat, id tristique urna leo quis -nibh. Morbi non erat.</p> - -<p class="c1">Cras fringilla, nulla id egestas elementum, augue nunc iaculis nibh, -ac adipiscing nibh justo id tortor. Donec vel orci a nisi ultricies -aliquet. Nunc urna quam, adipiscing molestie, vehicula non, -condimentum non, magna. Integer magna. Donec quam metus, pulvinar id, -suscipit eget, euismod ac, orci. Nulla facilisi. Nullam nec -mauris. Morbi in mi. Etiam urna lectus, pulvinar ac, sollicitudin eu, -euismod ac, lectus. Fusce elit. Sed ultricies odio ac felis.</p> - -</body> -</html> diff --git a/application/third_party/dompdf/www/test/image_basic.html b/application/third_party/dompdf/www/test/image_basic.html deleted file mode 100644 index 30b071b9..00000000 --- a/application/third_party/dompdf/www/test/image_basic.html +++ /dev/null @@ -1,20 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"> -<style> -body { - color: #7d7a7a; - font-family: 'trebuchet ms', verdana, sans-serif; -} -</style> -</head> - -<body> -<div style="text-align: center; margin-top: 40%;"> -<img style="width: 75%;" src="images/dompdf_simple.png"/> -<br/> -<span>The PHP 5 HTML to PDF converter</span> -</div> - -</body> </html> diff --git a/application/third_party/dompdf/www/test/image_bmp.html b/application/third_party/dompdf/www/test/image_bmp.html deleted file mode 100644 index 2a574720..00000000 --- a/application/third_party/dompdf/www/test/image_bmp.html +++ /dev/null @@ -1,130 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> - <title>BMP image test suite</title> - - <style type="text/css"> - body { - font-family: 'trebuchet ms', verdana, sans-serif; - font-size: 12px; - } - table { - border-collapse: collapse; - } - td { - border: 1px solid #999; - text-align: center; - } - </style> -</head> -<body> - -<p> - This test suite was grabbed from <a href="http://wvnvaxa.wvnet.edu/vmswww/bmp.html">http://wvnvaxa.wvnet.edu/vmswww/bmp.html</a>. -</p> - -<p>Not every BMP format is supported but the most used is the 24 bit format</p> - -<table> - <tr> - <th></th> - <th>BMP</th> - <th>PNG</th> - </tr> - <tr> - <td>1 bit (2 color)</td> - <td><img src="images/bmp/test1.bmp" /></td> - <td><img src="images/bmp/test1.png" /></td> - </tr> - <tr> - <td>4 bit</td> - <td><img src="images/bmp/test4.bmp" /></td> - <td><img src="images/bmp/test4.png" /></td> - </tr> - <tr> - <td>8 bit</td> - <td><img src="images/bmp/test8.bmp" /></td> - <td><img src="images/bmp/test8.png" /></td> - </tr> - <tr> - <td>16 bit</td> - <td><img src="images/bmp/test16.bmp" /></td> - <td><img src="images/bmp/test16.png" /></td> - </tr> - <tr> - <td>24 bit</td> - <td><img src="images/bmp/test24.bmp" /></td> - <td><img src="images/bmp/test24.png" /></td> - </tr> - <tr> - <td>32 bit</td> - <td><img src="images/bmp/test32.bmp" /></td> - <td><img src="images/bmp/test32.png" /></td> - </tr> - <tr> - <td>4 bit compressed</td> - <td><img src="images/bmp/testcompress4.bmp" /></td> - <td><img src="images/bmp/testcompress4.png" /></td> - </tr> - - <tr> - <td>8 bit compressed</td> - <td><img src="images/bmp/testcompress8.bmp" /></td> - <td><img src="images/bmp/testcompress8.png" /></td> - </tr> - <!-- The two bitmap formats below make an fatal error --> - <!--<tr> - <td>8 bit OS/2 version 1</td> - <td><img src="images/bmp/test8os2.bmp" /></td> - <td><img src="images/bmp/test8os2.png" /></td> - </tr> - <tr> - <td>4 bit OS/2 version 2</td> - <td><img src="images/bmp/test4os2v2.bmp" /></td> - <td><img src="images/bmp/test4os2v2.png" /></td> - </tr>--> - <tr> - <td>16 bit 555 bitfield</td> - <td><img src="images/bmp/test16bf555.bmp" /></td> - <td><img src="images/bmp/test16bf555.png" /></td> - </tr> - <tr> - <td>16 bit 565 bitfield</td> - <td><img src="images/bmp/test16bf565.bmp" /></td> - <td><img src="images/bmp/test16bf565.png" /></td> - </tr> - <tr> - <td>32 bit 888 bitfield</td> - <td><img src="images/bmp/test32bf.bmp" /></td> - <td><img src="images/bmp/test32bf.png" /></td> - </tr> - <tr> - <td>32 bit 888 bitfield version 4</td> - <td><img src="images/bmp/test32bfv4.bmp" width="300" /></td> - <td><img src="images/bmp/test32bfv4.png" width="300" /></td> - </tr> - <tr> - <td>32 bit version 5</td> - <td><img src="images/bmp/test32v5.bmp" width="300" /></td> - <td><img src="images/bmp/test32v5.png" width="300" /></td> - </tr> - <tr> - <td>32 bit transparent version 4</td> - <td><img src="images/bmp/trans.bmp" width="300" /></td> - <td><img src="images/bmp/trans.png" width="300" /></td> - </tr> -</table> - -<p> -Note that as of December 2005, Mozilla and Internet Explorer -do not support transparent BMP images. -</p> - -<p> -The images (except for the last three and the OS/2 version 2 image) -are from Jason Summer's <a href="http://entropymine.com/jason/bmpsuite/">BMP Suite</a>. -</p> -</body> -</html> \ No newline at end of file diff --git a/application/third_party/dompdf/www/test/image_datauri.html b/application/third_party/dompdf/www/test/image_datauri.html deleted file mode 100644 index 513c4e1d..00000000 --- a/application/third_party/dompdf/www/test/image_datauri.html +++ /dev/null @@ -1,35 +0,0 @@ -<!DOCTYPE html - PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<style> -body { - color: #7d7a7a; - font-family: 'trebuchet ms', verdana, sans-serif; -} -</style> -</head> -<body> - -<p> - Embedded &lt;img&gt; : <br /> - <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAABMCAIAAACnG28HAAAABmJLR0QA/wD/AP%2BgvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1AgeBS42B7vBqgAAEhBJREFUeNrtnd%2BPHEcVhfcfBoknxAOIh0g88EsIIqKI1UprObYVe23FwQmskO0EYSskkCgkEo5MCMgoGBABhBDkIXzV3%2Byh6Onu6ZnZ2Zm1u1Qa9fb0VFfdOvfcW7du9%2B59NpWpbKDsTSKYygSsqUzAmsoErKlMZQLWVDZeHj3%2B67vvf/DSjZcODy/%2B9N5bH374O85MwJrKWpACT/vPfe%2B5Z5/97re/8cxXv/L1rz3DwcEPngdhS8FrAtZUZgWWuvHiJcBkBVugivrlL30RbB0eHLx5784ErKksUWCj6zd/DHqAEZD6wuc/x8GNo6uvvnLLPwGZZnEC1lSWsH1CSnKyiq3LV657Ust45dLFCVhTGVXACoiJOyWe8LHEmSdfu3NbK7krphBtgDzp0zR/uynSt3/xJl65AKLKVaDq4YN3WQny%2Bdrxy5cv7MNb1KXs4AaBRc/UhqX4cyrDnhCOjjhgptfHKI3IVVR569Wb1/78x0f1ZWCL88BrKbraFLAgT/CkNkzAOi2uCqqs6/AWremtp7Log8D%2B/emnrSvhLSC1LKo2AixFoD8ItQIv2GtCxvp0VTvXiHcdqbLcC6RwzJkjUTUPLI1Pi8a2Ayw6gaMXKbBqBfUTMtYsPzq%2BG08IF3sdYIFRHCmNIKjieAVC2gKwGLBeocCi6whlQsb6RkBPKLGAldUV10qMGlXHi9pEn08fWFAUfhXunr0HYRDYClw6lRpYiLQ2hQh22WVaC6OGFZisDU3N6QMLDaC7ki0uIeZ8ijisDyzE6GIo2GKFtEJT%2BOz8lnZ0rTbnpZw%2BsDDYAAvG0n%2BffKz1S4lPHl3Vu8AOruy8S1dx/7Ekm%2BvzBhjrzu2oFxXSegrtIFNo8slptebGi8DSxwJYnYu44RWAnKd3hSt8noDFgI3YylhQ7kYHsGvUgutDRbtgbkTBGfVqHe0CWDAWKiosXBsuuySiJ86IaTBM0EYVfm8Twi2kdfOaw8DZWs0bOHcFGDHZKBKONkNGnUAYxyCM84hFyawWJsAIACwhlbSWpRKkErsCVTS1ocXgqQELYSFBPiMvIEXFfkvd5og9DVwFaJgwgcUB3gxjRxRMP9gqJw8vMrsYtWUTMrkeaBp5j/PO8XjKYXYuX7lOf6iJiO4osPQhkKYsTeVPrD49dksnOWJPPGMxcGadITNnVNDDkJMj4CauAikr5cOLLM24YAy83B%2BkmsHilk4ChOPJL0FRezhgB51WWrZ6Jp/1ZacMLG9MR8ETyocmISM6ypgRKF3hJFUfa6nxOxJNhgdb9LuXWqww8abzFhAcHMBS2kGEAHPzybclntdooJeBswHOkKLkmGRyBlL672XP%2BJVb4912usHd458AbmuSF6ia8mxH6iLzSTf4oV2iemD/6Wrn/O6toJ2aOW42k2YjShMZEFlR2ZvXSip%2B42xyfgxEVPE4Afyc1pbNs14fUnT14YN3A%2B5RJubCPl1ljvkEOoh7ngw4w/lco6D6RqdyImQFIra0X5wxpZPKwch4AQ26Tk%2BSTNDZqn3n/cpbJ0Ir9eqxzQ95OWDRxYLxkxVftgXMkPFYgDsGBIFAF4JDolYvNRY2qM%2B7vp1a2AEukGPMduKTP8cAy0cP6HCBQoOqgYsLtnBAGzeLWl9cBw6iVCYg6E4IMs4HWMhqpHAYSCDVh5sxNZAKn4FsRsQ6YHVgaafqXAvgRaOCLGk9iQ4HeXDmwhminYAy9IsetKS/Ylzt%2BGUmfrgPBggcnQZoTGobfXOMdBgRj4kDF5f0xUsynG6WOQUCywi7Bitg0k%2BP255pljMWylbrNkBFnYyV9UFCskJKh0fLiCIxlr4O7I20EfRP60brrf1wBCq8vHEQrX5wfnjxwvSE8OpURj3NdRx/WgYfwEUPuk8E6gw3MrPbboxZc%2Bity1gjyYMuCSyxVQMr6Ubqlaprl2orlulX2n3oT%2BxjmH4SFcs%2BT3ysaHgsieRE/0NRAzO7N9Ka6HUiRK1bJ%2Bu4qVlvaTEA/hy4vaE/fbUAK7lc8lbfnA0YOL9i8kLdzGIf%2Bem0mk4pT4iVYcZKvNHJGOkL0gfDEGipZldUgQOjCXmmTzAhVfQWAcZbiGAV1HwnvUWfI1VvCgliJOyQuZ0ROHBDhTtoiurBsvtyeyPpKls0A7k76mISHR0DEhzYeWC%2BXf3q9TMeBpDgqiOHctTs1rwCBaQwj1o1lftGv3XXOkPVZpGrM67gCsM3JC%2Bj9PWc66P3/HykuPWf4u%2B7LcNYolc6UjTeyhLWSuq81wZrHlj0vH7YZp6iTGwPdBC4Se6nG4jfGxWaO7H6w8sQembcIT4BUkBMfTYIgSrEJFwLIG1riQ438TANTQ0soVPWI4cXW0B3kW/QSAIID80nSZs6xmQbfNLvKUGBJm7E%2Bb6eM1K9n9Dh2AX10VUDyPGxuIU%2BUFZCfQnmDM2u1gvDeXut6aj99NrpLl7Bhf0zSAtYzFiJrTGRCy9m%2BhlqGMsVYqezopSpSopZj8YgVnEgjZkqGF%2BEmYhj28pTM28JROpdImLuwidnuFErJmlwAQCpNgafjAWI2oGlg3ZwZqxHeNAWqJfGaZYBIlVm1ycaYvcl74GbcnHNQ/M7hsgQgegDBHy6xdK/wD2D2M3eMF0Z%2BdXej0lgldjVmFnc%2BcJ%2BJ7CQiHbdAbccqZJ700TLbIc%2BIDKBRZc8qRaGROP8JhjGDHEXLqDyFcdxlrkdf7oE0wjSfon33LwmNAV93xzbtxmLH10dE84w5KPCcGujMHw6Rs3TcNRUz8Gn/5KhAExb14BXuuQ1RmWZAsMis0SmTWbLjAKWCyUty8g9y%2BL6Nb/SXTDKPG8p9FXjqM5fYOK8sFPiwUSdsl2LyTBB%2BEb3qzAWNq4Ji3ClJpW7a%2B9KmKBZOkiW5mX4fJGbfX3%2BuxbfaOcYYKlsVCOfCTQUvT04CLWDieFMGDPfW4v/vvCNN9KdUM7zHL8FYM3oCt1F40cn67nPkzBptjJi5lrgKM9Ddpn8YlKPX3YdpDjyGEnCE9ISkhVAQiE7/16vz6TLrGlzf9OMA7uXuxsf575uJIubedAYbRf0C/dVwlXJpzXBQUPM%2BcT/Mt8D2DL/s14YdmYlMZCEA9x%2BVoddIpzN1u3egGuFFAqRsvgah3F3LeQS5WgkpvafamA5VC7rbM0ncd3ZqJdIkpCkqF4ar6LGC6bb3ggACQK7YdTbQRkkaw2Nm2o15C1JrtUx2oz2c%2BVAVMLN6YQP1KJoiLLStVqouuq5tJegA8clTD2IbLfgEhJDOGeTHrc3HCPWYI3xrspyrPFD9cQ17fEW494qU9lCJ4wr%2B1ZeXIaO8ll7x3r9%2BkbaIykhe5dBYRaYTqr%2BU1ntN6gquwJzm/wGO0r/T%2BLjncAKgnXd%2BhxtWVkfDgRrlAWWK2i9BaNHC%2BOIrhaTOaLrSUUaA6sH7b6rb0e9ZWDp9srhC7tiKpIKoVK6wgqw9B7qELPIkDY6H5XkJ1HomhXcUpXJZslPjc8emqxVX7eJani9cFvjHrlQ6iQJJs98Ms1Wa6u4LLuaZW/SBFrus8sCjY6m1uWLNSrqKwjUDUfR56gZ8TGU6Ps53EuVvdSBAdbUjMSdXee5sdMBFjSQVdsAY%2BmySFEGymfT2Tg38YSCnpnvfLKtUczcyc5Gi64Uh3vSLaGL2gA3gdAS15kzbcWkNvgwwm7OxfyVLRNsCqjOQEhLdPpkW%2BJkIs8tFLXFITt2ac90j1o/pcawKVci8M5sC8677SEEdf%2BL2jdRXBclA7FcA3XZh90ysLTojFzvpLZl2Ycya0Kzkuf/Y1nqxUhc7HjfmhsbT4ZgeEtcZs9h3lYmcFrvznaaNt%2BaYgJnsppokzN9gWaBZbw0mTBJLEYstY8l6MNhMTeJoRfao7Vml62tkM2TATOfr0GYgdmkScnrehQ2aMTcZY2LviTh9FlDlbAG1jZNoeKT0rPg15thwFKFU5X95pbgijfQCE49Q76xhrNlQWPLdD%2BNMKn3Sjy8zQXzInNhmFBWNs46sWJ%2BFX3OLiRtDguFn8y8sWaHx/18408mQWjCXM0Z6w%2BHJS1OMvaNGvMkobdk1fKaEpP9YF0ILZ0%2BiUEfV3yCVehnd6jTTy2W/YT7Hf42gaWW64zXxF7vtCdVpnMDUV9EWjLiYAacjCWN%2B21B6ouXCi9euY4IkpI6sHuvnxGuEit99lr%2By17nsGWv49euSSWtbPjotImA2YMJTQA5cTW9LgMcbn32EYlEWGxis1Zl4EJZUIokCYnPFsVKq2aBa4s7TaGzEGLTnm7Zx8quZ5IY67fehPMHNp7UlfrJVYGl7chDrUJqFoY9ySM1ublvIS1jOZ3GlwcCImptYuUjQycMKhPPb%2BlPFm609r9XvjZ%2BNOThOlHJFG%2B9mfWBbV3xBJhMBcvuoV6dPCSk%2Bp6oCefp2psU2eItlcoFPkNQu7a8KtQqaQVmWUcnK/zZY/%2BL3h0oM%2Bmc%2BvM6yCn/S/KumRNechEwMH4DV/bBXaPhnXlR4n7%2ByD18hu/mvxsv9DZzxu2yVhBJySQ2rDCSEvQWXCrWXp0UyHmaNW1maJHRtFCEeXQVbLUuFlh5Rmj7prAm0iAgzwUMjLaTWuoHDF0AhrRUUF14HVWnanjwyqt4xE2Ec2RnVkgL6Uxniyl0R8V8qQS7l21/9lLGhqv09JMOZcvDChMfrk9t3PBOFslOAKveHzBfZ1nZmTCZJz2SgWToUt/CBZGU5kpnx1/URs/jC%2BPIn8rTRAh2IYwG%2BtM3NbNNqsbZjU%2B8ibdhrQKsNeXlO0KCmzqyYMRSnVstTXGLwNLp3PG3f81sTpPEoU%2B88mtqdgtYWWGZI%2BourJ6m/6Tls3NYDN9nM3TH30yBxuq2J8D2JDBW7cW7gNLY%2ByjiOX0LjY5jWf1duT7m2bKt9zbeyCzi%2BGQwVgxicjtdBJ3Tl2aVvaYmJd8IPmSw46%2BVE1h5%2Bqi8FXbriX6nji3reX%2BJcr1d2PmczA7yax58op7NC9Knf3myuo8lsOY3j7dV/vaX33eqgYHuAGv7Oe%2BbLv9pyjmC1L/%2B8fizk3wBfWEfpdTN%2BvV7b3gZB1QvbhXO//bhr6he/M5br99//ZiDV2/d%2BuFLR9Y7xzdblZNewDHXW/ktP/T47u2fcMy3nrHlAEsfK9aQP89A7Htno0ZKWYkzZgSBmC6/UNwuKsdKCol//OjhhvQ4srYznPcr7uhNc96Tdphf%2BUOmzQ7X%2BfjuRzF53/nWN1t1//nvOzqrZ6jzV/pV5/lTqebz5Mk8jsWroIxknJ3UWv9XARaT6nTWRNqpbZ18GwWKxuSgFmuT13dQiy9S7pQp1zuLN66%2BoAjqe1Gjzd6OUXBlKj8cnsXWtxx7uzETbHCIAZl6kMwCSOXo2g3asTJeqs36Z0TBZV55fHzbevfuz/ikEQ6ohRffef/%2BvfvUN37%2BNn%2B%2B994DD7wsLdgsB/xJB%2BoGvSxvXM7CsESk9/9vUjpHna9ovJatxCnXRlfn6WCvT3y06KS2MMTJ8WrnADJmRqt0WgWp/eajj5WmIuYnSyklN6qPlbhC8e7MEI1zd9oXAV7g9NfVn1jpCT9Jn%2Bkk1ciccSwfIm2FsmLic/DJ3/9JzQUcO941WYFf1c32LTWSXG%2B4QR/rwQcfRfKP//TJoz885jjIZuCZMpCEKLQwHMi%2BfVUuoBZgpRO0wgTQHE0MTyRTwj1UC7tIz2yEA8/U8lrTqNMglQkGHAqCT44Ljf/yHaXDBc5WLeu%2B%2B7bmtXVmeLZkLJPJ9F12/JWFyZrMI0wLF%2Ba13BR%2BJhdBCUFORlelTzVWftlbKHd/Xxjr3n0xvlD0T3zx8cPkbox/GHpry9iT51zM7dloEFHkTeGG1UNZeQ7Ct07sbG/zTpe8nOgMgroTsFYpeSWOby7Z8ZCvGbnZK5yAtdPAmqV9jk5N22LxscRkZpfHIauHhH0v5gSsXSlmUJ2L7Skjunn/Vt447MtRzKKegDWVVTzCkpJ1eDGvfjRb32f4NmTKJ2A9FcWnhvKWnrwrS4RtYh99AtZTUcqLSU8eAa/fpy17TYw1ldWtoW5W3ouc9yX3vZRlAtZUFhcfi8q/PMlrz/2/hxOwprKWNfTB2sTfh9%2BBPQFrKmOtoU/x5%2BVQG32qYgLW00Va/vcb/z3nRu81AevpKr5tYPi9EhOwprK7ZQLWVCZgTeX8lP8CuDenorrKqfIAAAAASUVORK5CYII%3D" /> -</p> - -<p> - Normal &lt;img&gt; : <br /> - <img src="images/dompdf_simple.png" /> -</p> - -<p style="height: 76px; background: no-repeat url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAABMCAIAAACnG28HAAAABmJLR0QA/wD/AP%2BgvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1AgeBS42B7vBqgAAEhBJREFUeNrtnd%2BPHEcVhfcfBoknxAOIh0g88EsIIqKI1UprObYVe23FwQmskO0EYSskkCgkEo5MCMgoGBABhBDkIXzV3%2Byh6Onu6ZnZ2Zm1u1Qa9fb0VFfdOvfcW7du9%2B59NpWpbKDsTSKYygSsqUzAmsoErKlMZQLWVDZeHj3%2B67vvf/DSjZcODy/%2B9N5bH374O85MwJrKWpACT/vPfe%2B5Z5/97re/8cxXv/L1rz3DwcEPngdhS8FrAtZUZgWWuvHiJcBkBVugivrlL30RbB0eHLx5784ErKksUWCj6zd/DHqAEZD6wuc/x8GNo6uvvnLLPwGZZnEC1lSWsH1CSnKyiq3LV657Ust45dLFCVhTGVXACoiJOyWe8LHEmSdfu3NbK7krphBtgDzp0zR/uynSt3/xJl65AKLKVaDq4YN3WQny%2Bdrxy5cv7MNb1KXs4AaBRc/UhqX4cyrDnhCOjjhgptfHKI3IVVR569Wb1/78x0f1ZWCL88BrKbraFLAgT/CkNkzAOi2uCqqs6/AWremtp7Log8D%2B/emnrSvhLSC1LKo2AixFoD8ItQIv2GtCxvp0VTvXiHcdqbLcC6RwzJkjUTUPLI1Pi8a2Ayw6gaMXKbBqBfUTMtYsPzq%2BG08IF3sdYIFRHCmNIKjieAVC2gKwGLBeocCi6whlQsb6RkBPKLGAldUV10qMGlXHi9pEn08fWFAUfhXunr0HYRDYClw6lRpYiLQ2hQh22WVaC6OGFZisDU3N6QMLDaC7ki0uIeZ8ijisDyzE6GIo2GKFtEJT%2BOz8lnZ0rTbnpZw%2BsDDYAAvG0n%2BffKz1S4lPHl3Vu8AOruy8S1dx/7Ekm%2BvzBhjrzu2oFxXSegrtIFNo8slptebGi8DSxwJYnYu44RWAnKd3hSt8noDFgI3YylhQ7kYHsGvUgutDRbtgbkTBGfVqHe0CWDAWKiosXBsuuySiJ86IaTBM0EYVfm8Twi2kdfOaw8DZWs0bOHcFGDHZKBKONkNGnUAYxyCM84hFyawWJsAIACwhlbSWpRKkErsCVTS1ocXgqQELYSFBPiMvIEXFfkvd5og9DVwFaJgwgcUB3gxjRxRMP9gqJw8vMrsYtWUTMrkeaBp5j/PO8XjKYXYuX7lOf6iJiO4osPQhkKYsTeVPrD49dksnOWJPPGMxcGadITNnVNDDkJMj4CauAikr5cOLLM24YAy83B%2BkmsHilk4ChOPJL0FRezhgB51WWrZ6Jp/1ZacMLG9MR8ETyocmISM6ypgRKF3hJFUfa6nxOxJNhgdb9LuXWqww8abzFhAcHMBS2kGEAHPzybclntdooJeBswHOkKLkmGRyBlL672XP%2BJVb4912usHd458AbmuSF6ia8mxH6iLzSTf4oV2iemD/6Wrn/O6toJ2aOW42k2YjShMZEFlR2ZvXSip%2B42xyfgxEVPE4Afyc1pbNs14fUnT14YN3A%2B5RJubCPl1ljvkEOoh7ngw4w/lco6D6RqdyImQFIra0X5wxpZPKwch4AQ26Tk%2BSTNDZqn3n/cpbJ0Ir9eqxzQ95OWDRxYLxkxVftgXMkPFYgDsGBIFAF4JDolYvNRY2qM%2B7vp1a2AEukGPMduKTP8cAy0cP6HCBQoOqgYsLtnBAGzeLWl9cBw6iVCYg6E4IMs4HWMhqpHAYSCDVh5sxNZAKn4FsRsQ6YHVgaafqXAvgRaOCLGk9iQ4HeXDmwhminYAy9IsetKS/Ylzt%2BGUmfrgPBggcnQZoTGobfXOMdBgRj4kDF5f0xUsynG6WOQUCywi7Bitg0k%2BP255pljMWylbrNkBFnYyV9UFCskJKh0fLiCIxlr4O7I20EfRP60brrf1wBCq8vHEQrX5wfnjxwvSE8OpURj3NdRx/WgYfwEUPuk8E6gw3MrPbboxZc%2Bity1gjyYMuCSyxVQMr6Ubqlaprl2orlulX2n3oT%2BxjmH4SFcs%2BT3ysaHgsieRE/0NRAzO7N9Ka6HUiRK1bJ%2Bu4qVlvaTEA/hy4vaE/fbUAK7lc8lbfnA0YOL9i8kLdzGIf%2Bem0mk4pT4iVYcZKvNHJGOkL0gfDEGipZldUgQOjCXmmTzAhVfQWAcZbiGAV1HwnvUWfI1VvCgliJOyQuZ0ROHBDhTtoiurBsvtyeyPpKls0A7k76mISHR0DEhzYeWC%2BXf3q9TMeBpDgqiOHctTs1rwCBaQwj1o1lftGv3XXOkPVZpGrM67gCsM3JC%2Bj9PWc66P3/HykuPWf4u%2B7LcNYolc6UjTeyhLWSuq81wZrHlj0vH7YZp6iTGwPdBC4Se6nG4jfGxWaO7H6w8sQembcIT4BUkBMfTYIgSrEJFwLIG1riQ438TANTQ0soVPWI4cXW0B3kW/QSAIID80nSZs6xmQbfNLvKUGBJm7E%2Bb6eM1K9n9Dh2AX10VUDyPGxuIU%2BUFZCfQnmDM2u1gvDeXut6aj99NrpLl7Bhf0zSAtYzFiJrTGRCy9m%2BhlqGMsVYqezopSpSopZj8YgVnEgjZkqGF%2BEmYhj28pTM28JROpdImLuwidnuFErJmlwAQCpNgafjAWI2oGlg3ZwZqxHeNAWqJfGaZYBIlVm1ycaYvcl74GbcnHNQ/M7hsgQgegDBHy6xdK/wD2D2M3eMF0Z%2BdXej0lgldjVmFnc%2BcJ%2BJ7CQiHbdAbccqZJ700TLbIc%2BIDKBRZc8qRaGROP8JhjGDHEXLqDyFcdxlrkdf7oE0wjSfon33LwmNAV93xzbtxmLH10dE84w5KPCcGujMHw6Rs3TcNRUz8Gn/5KhAExb14BXuuQ1RmWZAsMis0SmTWbLjAKWCyUty8g9y%2BL6Nb/SXTDKPG8p9FXjqM5fYOK8sFPiwUSdsl2LyTBB%2BEb3qzAWNq4Ji3ClJpW7a%2B9KmKBZOkiW5mX4fJGbfX3%2BuxbfaOcYYKlsVCOfCTQUvT04CLWDieFMGDPfW4v/vvCNN9KdUM7zHL8FYM3oCt1F40cn67nPkzBptjJi5lrgKM9Ddpn8YlKPX3YdpDjyGEnCE9ISkhVAQiE7/16vz6TLrGlzf9OMA7uXuxsf575uJIubedAYbRf0C/dVwlXJpzXBQUPM%2BcT/Mt8D2DL/s14YdmYlMZCEA9x%2BVoddIpzN1u3egGuFFAqRsvgah3F3LeQS5WgkpvafamA5VC7rbM0ncd3ZqJdIkpCkqF4ar6LGC6bb3ggACQK7YdTbQRkkaw2Nm2o15C1JrtUx2oz2c%2BVAVMLN6YQP1KJoiLLStVqouuq5tJegA8clTD2IbLfgEhJDOGeTHrc3HCPWYI3xrspyrPFD9cQ17fEW494qU9lCJ4wr%2B1ZeXIaO8ll7x3r9%2BkbaIykhe5dBYRaYTqr%2BU1ntN6gquwJzm/wGO0r/T%2BLjncAKgnXd%2BhxtWVkfDgRrlAWWK2i9BaNHC%2BOIrhaTOaLrSUUaA6sH7b6rb0e9ZWDp9srhC7tiKpIKoVK6wgqw9B7qELPIkDY6H5XkJ1HomhXcUpXJZslPjc8emqxVX7eJani9cFvjHrlQ6iQJJs98Ms1Wa6u4LLuaZW/SBFrus8sCjY6m1uWLNSrqKwjUDUfR56gZ8TGU6Ps53EuVvdSBAdbUjMSdXee5sdMBFjSQVdsAY%2BmySFEGymfT2Tg38YSCnpnvfLKtUczcyc5Gi64Uh3vSLaGL2gA3gdAS15kzbcWkNvgwwm7OxfyVLRNsCqjOQEhLdPpkW%2BJkIs8tFLXFITt2ac90j1o/pcawKVci8M5sC8677SEEdf%2BL2jdRXBclA7FcA3XZh90ysLTojFzvpLZl2Ycya0Kzkuf/Y1nqxUhc7HjfmhsbT4ZgeEtcZs9h3lYmcFrvznaaNt%2BaYgJnsppokzN9gWaBZbw0mTBJLEYstY8l6MNhMTeJoRfao7Vml62tkM2TATOfr0GYgdmkScnrehQ2aMTcZY2LviTh9FlDlbAG1jZNoeKT0rPg15thwFKFU5X95pbgijfQCE49Q76xhrNlQWPLdD%2BNMKn3Sjy8zQXzInNhmFBWNs46sWJ%2BFX3OLiRtDguFn8y8sWaHx/18408mQWjCXM0Z6w%2BHJS1OMvaNGvMkobdk1fKaEpP9YF0ILZ0%2BiUEfV3yCVehnd6jTTy2W/YT7Hf42gaWW64zXxF7vtCdVpnMDUV9EWjLiYAacjCWN%2B21B6ouXCi9euY4IkpI6sHuvnxGuEit99lr%2By17nsGWv49euSSWtbPjotImA2YMJTQA5cTW9LgMcbn32EYlEWGxis1Zl4EJZUIokCYnPFsVKq2aBa4s7TaGzEGLTnm7Zx8quZ5IY67fehPMHNp7UlfrJVYGl7chDrUJqFoY9ySM1ublvIS1jOZ3GlwcCImptYuUjQycMKhPPb%2BlPFm609r9XvjZ%2BNOThOlHJFG%2B9mfWBbV3xBJhMBcvuoV6dPCSk%2Bp6oCefp2psU2eItlcoFPkNQu7a8KtQqaQVmWUcnK/zZY/%2BL3h0oM%2Bmc%2BvM6yCn/S/KumRNechEwMH4DV/bBXaPhnXlR4n7%2ByD18hu/mvxsv9DZzxu2yVhBJySQ2rDCSEvQWXCrWXp0UyHmaNW1maJHRtFCEeXQVbLUuFlh5Rmj7prAm0iAgzwUMjLaTWuoHDF0AhrRUUF14HVWnanjwyqt4xE2Ec2RnVkgL6Uxniyl0R8V8qQS7l21/9lLGhqv09JMOZcvDChMfrk9t3PBOFslOAKveHzBfZ1nZmTCZJz2SgWToUt/CBZGU5kpnx1/URs/jC%2BPIn8rTRAh2IYwG%2BtM3NbNNqsbZjU%2B8ibdhrQKsNeXlO0KCmzqyYMRSnVstTXGLwNLp3PG3f81sTpPEoU%2B88mtqdgtYWWGZI%2BourJ6m/6Tls3NYDN9nM3TH30yBxuq2J8D2JDBW7cW7gNLY%2ByjiOX0LjY5jWf1duT7m2bKt9zbeyCzi%2BGQwVgxicjtdBJ3Tl2aVvaYmJd8IPmSw46%2BVE1h5%2Bqi8FXbriX6nji3reX%2BJcr1d2PmczA7yax58op7NC9Knf3myuo8lsOY3j7dV/vaX33eqgYHuAGv7Oe%2BbLv9pyjmC1L/%2B8fizk3wBfWEfpdTN%2BvV7b3gZB1QvbhXO//bhr6he/M5br99//ZiDV2/d%2BuFLR9Y7xzdblZNewDHXW/ktP/T47u2fcMy3nrHlAEsfK9aQP89A7Htno0ZKWYkzZgSBmC6/UNwuKsdKCol//OjhhvQ4srYznPcr7uhNc96Tdphf%2BUOmzQ7X%2BfjuRzF53/nWN1t1//nvOzqrZ6jzV/pV5/lTqebz5Mk8jsWroIxknJ3UWv9XARaT6nTWRNqpbZ18GwWKxuSgFmuT13dQiy9S7pQp1zuLN66%2BoAjqe1Gjzd6OUXBlKj8cnsXWtxx7uzETbHCIAZl6kMwCSOXo2g3asTJeqs36Z0TBZV55fHzbevfuz/ikEQ6ohRffef/%2BvfvUN37%2BNn%2B%2B994DD7wsLdgsB/xJB%2BoGvSxvXM7CsESk9/9vUjpHna9ovJatxCnXRlfn6WCvT3y06KS2MMTJ8WrnADJmRqt0WgWp/eajj5WmIuYnSyklN6qPlbhC8e7MEI1zd9oXAV7g9NfVn1jpCT9Jn%2Bkk1ciccSwfIm2FsmLic/DJ3/9JzQUcO941WYFf1c32LTWSXG%2B4QR/rwQcfRfKP//TJoz885jjIZuCZMpCEKLQwHMi%2BfVUuoBZgpRO0wgTQHE0MTyRTwj1UC7tIz2yEA8/U8lrTqNMglQkGHAqCT44Ljf/yHaXDBc5WLeu%2B%2B7bmtXVmeLZkLJPJ9F12/JWFyZrMI0wLF%2Ba13BR%2BJhdBCUFORlelTzVWftlbKHd/Xxjr3n0xvlD0T3zx8cPkbox/GHpry9iT51zM7dloEFHkTeGG1UNZeQ7Ct07sbG/zTpe8nOgMgroTsFYpeSWOby7Z8ZCvGbnZK5yAtdPAmqV9jk5N22LxscRkZpfHIauHhH0v5gSsXSlmUJ2L7Skjunn/Vt447MtRzKKegDWVVTzCkpJ1eDGvfjRb32f4NmTKJ2A9FcWnhvKWnrwrS4RtYh99AtZTUcqLSU8eAa/fpy17TYw1ldWtoW5W3ouc9yX3vZRlAtZUFhcfi8q/PMlrz/2/hxOwprKWNfTB2sTfh9%2BBPQFrKmOtoU/x5%2BVQG32qYgLW00Va/vcb/z3nRu81AevpKr5tYPi9EhOwprK7ZQLWVCZgTeX8lP8CuDenorrKqfIAAAAASUVORK5CYII%3D)"> - Embedded background image -</p> - -<p style="height: 76px; background: no-repeat url(images/dompdf_simple.png)"> - Normal background image -</p> - -</body> - -</html> diff --git a/application/third_party/dompdf/www/test/image_gif.html b/application/third_party/dompdf/www/test/image_gif.html deleted file mode 100644 index 52845b7a..00000000 --- a/application/third_party/dompdf/www/test/image_gif.html +++ /dev/null @@ -1,9 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"> -</head> - -<body> -<p><img src="images/php.gif"/></p> -</body> </html> diff --git a/application/third_party/dompdf/www/test/image_remote.html b/application/third_party/dompdf/www/test/image_remote.html deleted file mode 100644 index c3ac5f72..00000000 --- a/application/third_party/dompdf/www/test/image_remote.html +++ /dev/null @@ -1,21 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<link rel="stylesheet" href="http://dompdf.googlecode.com/svn/trunk/dompdf/www/style.css" type="text/css"/> -<style> -#content { - margin: 0.25in; - width: 100%; -} -</style> -</head> -<body> -<div id="content"> -<h2>Remote CSS &amp; Image Test</h2> -<h3>CSS: <a href="http://dompdf.googlecode.com/svn/trunk/dompdf/www/style.css">http://dompdf.googlecode.com/svn/trunk/dompdf/www/style.css</a></h3> -<p>Testing remote image: <img src="http://dompdf.googlecode.com/svn/trunk/dompdf/www/images/title.gif"/></p> -<p>Note: DOMPDF_ENABLE_REMOTE must be enabled for this test to work.</p> -</div> -</body> -</html> diff --git a/application/third_party/dompdf/www/test/image_transparent_gif.html b/application/third_party/dompdf/www/test/image_transparent_gif.html deleted file mode 100644 index 145d687b..00000000 --- a/application/third_party/dompdf/www/test/image_transparent_gif.html +++ /dev/null @@ -1,23 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"> -<style> -body { - color: #7d7a7a; - font-family: 'trebuchet ms', verdana, sans-serif; -} -</style> -</head> - -<body> - -<div style="text-align: center; background: none;"> -<img src="images/green.gif" width="50"/> -</div> - -<div style="text-align: center; background: black;"> -<img src="images/green.gif" width="50"/> -</div> - -</body> </html> diff --git a/application/third_party/dompdf/www/test/image_transparent_png.html b/application/third_party/dompdf/www/test/image_transparent_png.html deleted file mode 100644 index 686f5548..00000000 --- a/application/third_party/dompdf/www/test/image_transparent_png.html +++ /dev/null @@ -1,189 +0,0 @@ -<html> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> - <title>PNG transparency test</title> - <style type="text/css"> - body { - font-size: 11px; - font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; - padding: 2em; - } - - p { - background: #C6C6FF; - } - - img[width="85"] { - margin: 8px; - } - - @page { - margin: 0; - } - </style> -</head> - -<body> - -<h1>PNG transparency test</h1> - -Examples from <a href="http://entropymine.com/jason/testbed/pngtrans/">http://entropymine.com/jason/testbed/pngtrans/</a> - -<p> -Not all possible results are shown; there are too many combinations -of background colors and shapes of the opaque region. However, I -intend to include every result that actually occurs in a mainstream -browser. If I am missing any, please -<a href="mailto:jason1@pobox.com">let me know</a>. - -</p><p>It's come to my attention that my images which show how -alpha transparency should look are not quite perfect -in regard to precisely how transparent they are at various points. -Rather than try to modify this page to test gamma -correction issues as well, I've created a -<a href="http://entropymine.com/jason/testbed/alphagamma/">separate test page</a> for that. - -</p><p> -This test page was constructed by -<a href="http://pobox.com/~jason1/">Jason Summers</a>. -Comments may be emailed to <a href="mailto:jason1@pobox.com">jason1@pobox.com</a>.<br> -There are -<a href="http://www.libpng.org/pub/png/pngmisc.html#images">other test -pages</a> listed at the PNG web site. - -<!-- <p> -There's a -<a href="http://www.petitiononline.com/msiepng/petition.html">petition</a> -(at PetitionOnline) for proper PNG support in IE for Windows. --> - -<!-- -<p>I am aware that MSIE 5.5+ for Windows supports an -"AlphaImageLoader" filter that -<a href="http://webfx.eae.net/dhtml/pngbehavior/pngbehavior.html">can be -used</a> to display PNG images with transparency. Personally, I don't consider -it to -be an acceptable replacement for standard PNG support, though it does mostly -work, with some caveats (requires the site author to modify each web page; -requires scripting to be turned on; requires extra documents to be loaded -from the server; prevents visitors from easily saving the image to disk; -slows down processing of non-transparent images; -seems to fail once in a while for no apparent reason). I don't intend to -hack this page to support it, but maybe I'll put up a separate test page -sometime. ---> - -</p> - -<h3>Alpha and palette transparency</h3> - -<p>Expected result:<br> -<img width="95" height="72" src="./images/png/result_ok.gif" alt="[Test image]"> -</p> - -<p><b>(T1)</b> 8-bit palette, includes background color:<br> -<img width="85" height="62" src="./images/png/pal_bk.png" alt="[Test image]"> -</p> - -<p><b>(T2)</b> 8-bit palette, no background color:<br> -<img width="85" height="62" src="./images/png/pal.png" alt="[Test image]"> -</p> - -<p><b>(T3)</b> 32-bit RGBA, includes background color:<br> -<img width="85" height="62" src="./images/png/rgba8_bk.png" alt="[Test image]"> -</p> - -<p><b>(T4)</b> 32-bit RGBA, no background color:<br> -<img width="85" height="62" src="./images/png/rgba8.png" alt="[Test image]"> -</p> - -<p><b>(T5)</b> 64-bit RGBA, includes background color:<br> -<img width="85" height="62" src="./images/png/rgba16_bk.png" alt="[Test image]"> -</p> - -<p><b>(T6)</b> 64-bit RGBA, no background color:<br> -<img width="85" height="62" src="./images/png/rgba16.png" alt="[Test image]"> -</p> - -<h3>RGB binary transparency</h3> - -<p>Expected result:<br> -<img width="95" height="72" src="./images/png/resultb_ok.gif" alt="[Test image]"> -</p> - -<p><b>(T7)</b> 24-bit RGB, binary transparency, includes background color:<br> -<img width="85" height="62" src="./images/png/rgb8_t_bk.png" alt="[Test image]"> -</p> - -<p><b>(T8)</b> 24-bit RGB, binary transparency, no background color:<br> -<img width="85" height="62" src="./images/png/rgb8_t.png" alt="[Test image]"> -</p> - -<p><b>(T9)</b> 48-bit RGB, binary transparency, includes background color:<br> -<img width="85" height="62" src="./images/png/rgb16_t_bk.png" alt="[Test image]"> -</p> - -<p><b>(T10)</b> 48-bit RGB, binary transparency, no background color:<br> -<img width="85" height="62" src="./images/png/rgb16_t.png" alt="[Test image]"> -</p> - - -<h3>Grayscale alpha transparency</h3> - -<p>Expected result:<br> -<img width="95" height="72" src="./images/png/resultga.gif" alt="[Test image]"> -</p> - -<p><b>(G1)</b> 16 bpp grayscale (8 gray + 8 alpha), includes background color:<br> -<img width="85" height="62" src="./images/png/gray8a_bk.png" alt="[Test image]"> -</p> - -<p><b>(G2)</b> 16 bpp grayscale (8 gray + 8 alpha), no background color:<br> -<img width="85" height="62" src="./images/png/gray8a.png" alt="[Test image]"> -</p> - -<p><b>(G3)</b> 32 bpp grayscale (16 gray + 16 alpha), includes background color:<br> -<img width="85" height="62" src="./images/png/gray16a_bk.png" alt="[Test image]"> -</p> - -<p><b>(G4)</b> 32 bpp grayscale (16 gray + 16 alpha), no background color:<br> -<img width="85" height="62" src="./images/png/gray16a.png" alt="[Test image]"> - - -<h3>Grayscale binary transparency</h3> - -<p>Expected result:<br> -<img width="95" height="72" src="./images/png/resultgb.gif" alt="[Test image]"> -</p> - -<p><b>(G5)</b> 8 bpp grayscale (8 gray), includes background color:<br> -<img width="85" height="62" src="./images/png/gray8b_bk.png" alt="[Test image]"> -</p> - -<p><b>(G6)</b> 8 bpp grayscale (8 gray), no background color:<br> -<img width="85" height="62" src="./images/png/gray8b.png" alt="[Test image]"> -</p> - -<p><b>(G7)</b> 16 bpp grayscale (16 gray), includes background color:<br> -<img width="85" height="62" src="./images/png/gray16b_bk.png" alt="[Test image]"> -</p> - -<p><b>(G8)</b> 16 bpp grayscale (16 gray), no background color:<br> -<img width="85" height="62" src="./images/png/gray16b.png" alt="[Test image]"> - -<h3>Miscellaneous</h3> - -<p><b>(M1)</b> 8-bit palette, no transparency, includes background color:<br> -Expected result:<br> -<img width="95" height="72" src="./images/png/result_no.gif" alt="[Test image]"><br> -<img width="85" height="62" src="./images/png/pal_bk_notrns.png" alt="[Test image]"> -</p> - -<p><b>(M2)</b> (4-bit) palette, binary transparency only, no background color:<br> -Expected result:<br> -<img width="95" height="72" src="./images/png/resultb_ok.gif" alt="[Test image]"><br> -<img width="85" height="62" src="./images/png/palb.png" alt="[Test image]"><br> -(This tests a few things that may have slipped through the cracks.) -</p> - -</body></html> \ No newline at end of file diff --git a/application/third_party/dompdf/www/test/image_variants.html b/application/third_party/dompdf/www/test/image_variants.html deleted file mode 100644 index 04ecc492..00000000 --- a/application/third_party/dompdf/www/test/image_variants.html +++ /dev/null @@ -1,149 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"> -<style> -body { - color: #7d7a7a; - font-family: sans-serif; -} -div.bgimages a { - padding-left:20px; - background:url(images/pdf.png) no-repeat yellow; -} -div.bgimages ul { - text-align: left; - line-height:170%; -} -</style> -</head> - -<body> -<div style="text-align: center;"> - -<h2> 40% of box width:</h2> -<div style="width:360pt; border:1pt solid #7d7a7a"> -<img style="width:40%;" src="images/dompdf_simple.png"/> -</div> - -<h2>multiple identical images jpg:</h2> -<img src="images/goldengate.jpg" width="204" height="272"/> -<img src="images/goldengate.jpg" width="204" height="272"/> -<img src="images/goldengate.jpg" width="204" height="272"/> - -<h2>multiple identical images gif (will be recoded to png by dompdf):</h2> -<img src="images/what_ordered.gif" width="560" height="272"/> -<img src="images/what_ordered.gif" width="560" height="272"/> -<img src="images/what_ordered.gif" width="560" height="272"/> - -<h2>multiple identical images png:</h2> -<img src="images/dompdf_simple.png" width="200" height="76"/> -<img src="images/dompdf_simple.png" width="200" height="76"/> -<img src="images/dompdf_simple.png" width="200" height="76"/> - -<h2>local png image with alpha channel:</h2> -<img src="images/dokuwiki-128.png" width="128" height="128"/> - -<h2 style="color:red;">Attention!</h2> - -<p style="color:red;">For external images to work, the following configuration is required:</p> -<pre style="color:red;">dompdf_config.inc.php :</pre> - -<pre style="color:red;">define("DOMPDF_ENABLE_REMOTE", true);</pre> - -<h2>external png Image with alpha channel:</h2> -<img src="http://www.dokuwiki.org/lib/exe/fetch.php?media=wiki:dokuwiki-128.png" width="128" height="128" /> - -<h2>external image, dynamically created with id in url parameter at end of parameter(.jpg):</h2> -<img src="http://www.dokuwiki.org/lib/exe/fetch.php?media=example:sunset.jpg" width="500" height="375" /> - -<h2>external image, dynamically created with id in url parameter not at end of parameter (.jpg):</h2> -<img src="http://www.dokuwiki.org/lib/exe/fetch.php?media=example:sunset.jpg&amp;w=100" width="100" height="75" /> - -<h2>external Image without file extension (.gif):</h2> -<img width="82" height="233" src="http://www.taz.de/fileadmin/templates/neu/images/logo" /> - -<h2><a name="bgimages">Background images</a></h2> -<div class="bgimages"> -<ul> -<li><a href="bgimages">no-repeat position:default</a></li> -<li><a href="bgimages" style="background-position:left center;">no-repeat position:left-center</a></li> -<li><a href="bgimages" style="background-position:left bottom;">no-repeat position:left-bottom</a></li> -<li><a href="bgimages" style="background-position:right bottom;">no-repeat position:right-bottom</a></li> -<li><a href="bgimages" style="background-position:center center;">no-repeat position:center-center</a></li> -<li><a href="bgimages" style="background-position:50% 50%;">no-repeat position:50%-50%</a></li> -<li><a href="bgimages" style="background-position:4px 8px;">no-repeat position:4px-8px</a></li> -<li><a href="bgimages" style="background-position:-4px -8px;">no-repeat position:-4px--8px</a></li> -<li><a href="bgimages" style="background-position:32px 0px;">no-repeat position:32px-0px</a></li> -<li><a href="bgimages" style="background-position:0px 8px;">no-repeat position:0px-8px</a></li> -</ul> -<ul> -<li><a href="bgimages" style="background-repeat:repeat-y;">repeat-y position:default</a></li> -<li><a href="bgimages" style="background-repeat:repeat-y; background-position:left center;">repeat-y position:left-center</a></li> -<li><a href="bgimages" style="background-repeat:repeat-y; background-position:left bottom;">repeat-y position:left-bottom</a></li> -<li><a href="bgimages" style="background-repeat:repeat-y; background-position:right bottom;">repeat-y position:right-bottom</a></li> -<li><a href="bgimages" style="background-repeat:repeat-y; background-position:center center;">repeat-y position:center-center</a></li> -<li><a href="bgimages" style="background-repeat:repeat-y; background-position:50% 50%;">repeat-y position:50%-50%</a></li> -<li><a href="bgimages" style="background-repeat:repeat-y; background-position:4px 8px;">repeat-y position:4px-8px</a></li> -<li><a href="bgimages" style="background-repeat:repeat-y; background-position:-4px -8px;">repeat-y position:-4px--8px</a></li> -<li><a href="bgimages" style="background-repeat:repeat-y; background-position:32px 0px;">repeat-y position:32px-0px</a></li> -<li><a href="bgimages" style="background-repeat:repeat-y; background-position:0px 8px;">repeat-y position:0px-8px</a></li> -</ul> -<ul> -<li><a href="bgimages" style="background-repeat:repeat-x;">repeat-x position:default</a></li> -<li><a href="bgimages" style="background-repeat:repeat-x; background-position:left center;">repeat-x position:left-center</a></li> -<li><a href="bgimages" style="background-repeat:repeat-x; background-position:left bottom;">repeat-x position:left-bottom</a></li> -<li><a href="bgimages" style="background-repeat:repeat-x; background-position:right bottom;">repeat-x position:right-bottom</a></li> -<li><a href="bgimages" style="background-repeat:repeat-x; background-position:center center;">repeat-x position:center-center</a></li> -<li><a href="bgimages" style="background-repeat:repeat-x; background-position:50% 50%;">repeat-x position:50%-50%</a></li> -<li><a href="bgimages" style="background-repeat:repeat-x; background-position:4px 8px;">repeat-x position:4px-8px</a></li> -<li><a href="bgimages" style="background-repeat:repeat-x; background-position:-4px -8px;">repeat-x position:-4px--8px</a></li> -<li><a href="bgimages" style="background-repeat:repeat-x; background-position:32px 0px;">repeat-x position:32px-0px</a></li> -<li><a href="bgimages" style="background-repeat:repeat-x; background-position:0px 8px;">repeat-x position:0px-8px</a></li> -</ul> -<ul> -<li><a href="bgimages" style="background-repeat:repeat;">repeat position:default</a></li> -<li><a href="bgimages" style="background-repeat:repeat; background-position:left center;">repeat position:left-center</a></li> -<li><a href="bgimages" style="background-repeat:repeat; background-position:left bottom;">repeat position:left-bottom</a></li> -<li><a href="bgimages" style="background-repeat:repeat; background-position:right bottom;">repeat position:right-bottom</a></li> -<li><a href="bgimages" style="background-repeat:repeat; background-position:center center;">repeat position:center-center</a></li> -<li><a href="bgimages" style="background-repeat:repeat; background-position:50% 50%;">repeat position:50%-50%</a></li> -<li><a href="bgimages" style="background-repeat:repeat; background-position:4px 8px;">repeat position:4px-8px</a></li> -<li><a href="bgimages" style="background-repeat:repeat; background-position:-4px -8px;">repeat position:-4px--8px</a></li> -<li><a href="bgimages" style="background-repeat:repeat; background-position:32px 0px;">repeat position:32px-0px</a></li> -<li><a href="bgimages" style="background-repeat:repeat; background-position:0px 8px;">repeat position:0px-8px</a></li> -</ul> -<ul> -<li><a href="bgimages" style="background-position:32px 8px;">no-repeat position:32px-8px</a></li> -<li><a href="bgimages" style="background-position:32pt 8pt;">no-repeat position:32pt-8pt</a></li> -<li><a href="bgimages" style="background-position:32px 32px;">no-repeat position:32px-32px</a></li> -<li><a href="bgimages" style="background-position:-16px -16px;">no-repeat position:-16px--16px</a></li> -</ul> -<ul> -<li><a href="bgimages" style="background-image:url(http://www.dokuwiki.org/lib/images/fileicons/html.png);">no-repeat position:default image:url(http://www.dokuwiki.org/lib/images/fileicons/html.png) [image remote]</a></li> -<li><a href="bgimages" style="background-image:url(images/png.png);">no-repeat position:default image:url(images/png.png) [image in subfolder]</a></li> -<li><a href="bgimages" style="background-image:url(images/html.png);">no-repeat position:default image:url(html.png) [image in same folder]</a></li> - -<li><a href="bgimages" style="background-image:url(images/html.png);">no-repeat position:default image:url(html.png) [image in same folder] -Added very long description, to see if non repeating background image is repeated after a line break. -blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, -blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, -... -</a></li> - - -<h2 style="color:red;">Attention!</h2> -<p style="color:red;">For absolute image references to work, the file (dompdf)/www/test/images/smiley.png must be copyied exactly to (virtual web server root)/absimagetest/smiley.png</p> -<li><a href="bgimages" style="background-image:url(/absimagetest/smiley.png);">no-repeat position:default image:url(/absimagetest/smiley.png) [abs image ]</a></li> -</ul> -</div> -<p><a href="bgimages" style="line-height:170%;padding-left:20px;background:url(images/pdf.png) no-repeat yellow;background-position:left top;">paragraph link no-repeat position:default</a></p> -<p style="text-align:left;line-height:170%;padding-left:20px;background:url(images/pdf.png) no-repeat yellow;background-position:left top;">paragraph text no-repeat position:left-top; more text text more text text bla bla sdfjkhs sdfsjksdfks sdfkjsfsf skjfh ksjdfhsd </p> -<p style="text-align:left;line-height:170%;padding-left:20px;background:url(images/pdf.png) no-repeat yellow;background-position:left center;">paragraph text no-repeat position:left-center; more text text more text text bla bla sdfjkhs sdfsjksdfks sdfkjsfsf skjfh ksjdfhsd </p> -<p> -<span>The PHP 5 HTML to PDF converter</span> -</p> - -</div> - -</body> </html> diff --git a/application/third_party/dompdf/www/test/images/bmp/test1.bmp b/application/third_party/dompdf/www/test/images/bmp/test1.bmp deleted file mode 100644 index a7203476..00000000 Binary files a/application/third_party/dompdf/www/test/images/bmp/test1.bmp and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/bmp/test1.png b/application/third_party/dompdf/www/test/images/bmp/test1.png deleted file mode 100644 index 3cdc4981..00000000 Binary files a/application/third_party/dompdf/www/test/images/bmp/test1.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/bmp/test16.bmp b/application/third_party/dompdf/www/test/images/bmp/test16.bmp deleted file mode 100644 index a5a3195c..00000000 Binary files a/application/third_party/dompdf/www/test/images/bmp/test16.bmp and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/bmp/test16.png b/application/third_party/dompdf/www/test/images/bmp/test16.png deleted file mode 100644 index 32a1cb30..00000000 Binary files a/application/third_party/dompdf/www/test/images/bmp/test16.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/bmp/test16bf555.bmp b/application/third_party/dompdf/www/test/images/bmp/test16bf555.bmp deleted file mode 100644 index 639a57f8..00000000 Binary files a/application/third_party/dompdf/www/test/images/bmp/test16bf555.bmp and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/bmp/test16bf555.png b/application/third_party/dompdf/www/test/images/bmp/test16bf555.png deleted file mode 100644 index 32a1cb30..00000000 Binary files a/application/third_party/dompdf/www/test/images/bmp/test16bf555.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/bmp/test16bf565.bmp b/application/third_party/dompdf/www/test/images/bmp/test16bf565.bmp deleted file mode 100644 index cb0ea24f..00000000 Binary files a/application/third_party/dompdf/www/test/images/bmp/test16bf565.bmp and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/bmp/test16bf565.png b/application/third_party/dompdf/www/test/images/bmp/test16bf565.png deleted file mode 100644 index 62237907..00000000 Binary files a/application/third_party/dompdf/www/test/images/bmp/test16bf565.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/bmp/test24.bmp b/application/third_party/dompdf/www/test/images/bmp/test24.bmp deleted file mode 100644 index d6d9e6af..00000000 Binary files a/application/third_party/dompdf/www/test/images/bmp/test24.bmp and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/bmp/test24.png b/application/third_party/dompdf/www/test/images/bmp/test24.png deleted file mode 100644 index 46211a8c..00000000 Binary files a/application/third_party/dompdf/www/test/images/bmp/test24.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/bmp/test32.bmp b/application/third_party/dompdf/www/test/images/bmp/test32.bmp deleted file mode 100644 index 9524f765..00000000 Binary files a/application/third_party/dompdf/www/test/images/bmp/test32.bmp and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/bmp/test32.png b/application/third_party/dompdf/www/test/images/bmp/test32.png deleted file mode 100644 index 46211a8c..00000000 Binary files a/application/third_party/dompdf/www/test/images/bmp/test32.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/bmp/test32bf.bmp b/application/third_party/dompdf/www/test/images/bmp/test32bf.bmp deleted file mode 100644 index 0f41534e..00000000 Binary files a/application/third_party/dompdf/www/test/images/bmp/test32bf.bmp and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/bmp/test32bf.png b/application/third_party/dompdf/www/test/images/bmp/test32bf.png deleted file mode 100644 index 46211a8c..00000000 Binary files a/application/third_party/dompdf/www/test/images/bmp/test32bf.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/bmp/test32bfv4.bmp b/application/third_party/dompdf/www/test/images/bmp/test32bfv4.bmp deleted file mode 100644 index 37060373..00000000 Binary files a/application/third_party/dompdf/www/test/images/bmp/test32bfv4.bmp and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/bmp/test32bfv4.png b/application/third_party/dompdf/www/test/images/bmp/test32bfv4.png deleted file mode 100644 index 0525bc74..00000000 Binary files a/application/third_party/dompdf/www/test/images/bmp/test32bfv4.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/bmp/test32v5.bmp b/application/third_party/dompdf/www/test/images/bmp/test32v5.bmp deleted file mode 100644 index 8ad3cfa6..00000000 Binary files a/application/third_party/dompdf/www/test/images/bmp/test32v5.bmp and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/bmp/test32v5.png b/application/third_party/dompdf/www/test/images/bmp/test32v5.png deleted file mode 100644 index 659164e8..00000000 Binary files a/application/third_party/dompdf/www/test/images/bmp/test32v5.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/bmp/test4.bmp b/application/third_party/dompdf/www/test/images/bmp/test4.bmp deleted file mode 100644 index a064f66a..00000000 Binary files a/application/third_party/dompdf/www/test/images/bmp/test4.bmp and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/bmp/test4.png b/application/third_party/dompdf/www/test/images/bmp/test4.png deleted file mode 100644 index 29f1c343..00000000 Binary files a/application/third_party/dompdf/www/test/images/bmp/test4.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/bmp/test4os2v2.bmp b/application/third_party/dompdf/www/test/images/bmp/test4os2v2.bmp deleted file mode 100644 index 874a277f..00000000 Binary files a/application/third_party/dompdf/www/test/images/bmp/test4os2v2.bmp and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/bmp/test4os2v2.png b/application/third_party/dompdf/www/test/images/bmp/test4os2v2.png deleted file mode 100644 index a939a515..00000000 Binary files a/application/third_party/dompdf/www/test/images/bmp/test4os2v2.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/bmp/test8.bmp b/application/third_party/dompdf/www/test/images/bmp/test8.bmp deleted file mode 100644 index 3be9a206..00000000 Binary files a/application/third_party/dompdf/www/test/images/bmp/test8.bmp and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/bmp/test8.png b/application/third_party/dompdf/www/test/images/bmp/test8.png deleted file mode 100644 index 47870313..00000000 Binary files a/application/third_party/dompdf/www/test/images/bmp/test8.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/bmp/test8os2.bmp b/application/third_party/dompdf/www/test/images/bmp/test8os2.bmp deleted file mode 100644 index f7f9f579..00000000 Binary files a/application/third_party/dompdf/www/test/images/bmp/test8os2.bmp and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/bmp/test8os2.png b/application/third_party/dompdf/www/test/images/bmp/test8os2.png deleted file mode 100644 index 47870313..00000000 Binary files a/application/third_party/dompdf/www/test/images/bmp/test8os2.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/bmp/testcompress4.bmp b/application/third_party/dompdf/www/test/images/bmp/testcompress4.bmp deleted file mode 100644 index 7239fa66..00000000 Binary files a/application/third_party/dompdf/www/test/images/bmp/testcompress4.bmp and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/bmp/testcompress4.png b/application/third_party/dompdf/www/test/images/bmp/testcompress4.png deleted file mode 100644 index 29f1c343..00000000 Binary files a/application/third_party/dompdf/www/test/images/bmp/testcompress4.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/bmp/testcompress8.bmp b/application/third_party/dompdf/www/test/images/bmp/testcompress8.bmp deleted file mode 100644 index 082f7f48..00000000 Binary files a/application/third_party/dompdf/www/test/images/bmp/testcompress8.bmp and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/bmp/testcompress8.png b/application/third_party/dompdf/www/test/images/bmp/testcompress8.png deleted file mode 100644 index 47870313..00000000 Binary files a/application/third_party/dompdf/www/test/images/bmp/testcompress8.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/bmp/trans.bmp b/application/third_party/dompdf/www/test/images/bmp/trans.bmp deleted file mode 100644 index edd5ed81..00000000 Binary files a/application/third_party/dompdf/www/test/images/bmp/trans.bmp and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/bmp/trans.png b/application/third_party/dompdf/www/test/images/bmp/trans.png deleted file mode 100644 index 653d44af..00000000 Binary files a/application/third_party/dompdf/www/test/images/bmp/trans.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/cmyk_test2.jpg b/application/third_party/dompdf/www/test/images/cmyk_test2.jpg deleted file mode 100644 index 9b982295..00000000 Binary files a/application/third_party/dompdf/www/test/images/cmyk_test2.jpg and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/dokuwiki-128.png b/application/third_party/dompdf/www/test/images/dokuwiki-128.png deleted file mode 100644 index b2306ac9..00000000 Binary files a/application/third_party/dompdf/www/test/images/dokuwiki-128.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/dompdf_simple.png b/application/third_party/dompdf/www/test/images/dompdf_simple.png deleted file mode 100644 index fd3265e5..00000000 Binary files a/application/third_party/dompdf/www/test/images/dompdf_simple.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/goldengate.jpg b/application/third_party/dompdf/www/test/images/goldengate.jpg deleted file mode 100644 index 42802744..00000000 Binary files a/application/third_party/dompdf/www/test/images/goldengate.jpg and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/green.gif b/application/third_party/dompdf/www/test/images/green.gif deleted file mode 100644 index 151a83c0..00000000 Binary files a/application/third_party/dompdf/www/test/images/green.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/html.png b/application/third_party/dompdf/www/test/images/html.png deleted file mode 100644 index 672cbce4..00000000 Binary files a/application/third_party/dompdf/www/test/images/html.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/pdf.png b/application/third_party/dompdf/www/test/images/pdf.png deleted file mode 100644 index 638066de..00000000 Binary files a/application/third_party/dompdf/www/test/images/pdf.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/php.gif b/application/third_party/dompdf/www/test/images/php.gif deleted file mode 100644 index f352c730..00000000 Binary files a/application/third_party/dompdf/www/test/images/php.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png.png b/application/third_party/dompdf/www/test/images/png.png deleted file mode 100644 index f0b5b00e..00000000 Binary files a/application/third_party/dompdf/www/test/images/png.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/gray16a.png b/application/third_party/dompdf/www/test/images/png/gray16a.png deleted file mode 100644 index 946006b1..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/gray16a.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/gray16a_bk.png b/application/third_party/dompdf/www/test/images/png/gray16a_bk.png deleted file mode 100644 index afbb9c86..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/gray16a_bk.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/gray16b.png b/application/third_party/dompdf/www/test/images/png/gray16b.png deleted file mode 100644 index 46aca9ce..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/gray16b.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/gray16b_bk.png b/application/third_party/dompdf/www/test/images/png/gray16b_bk.png deleted file mode 100644 index 67977083..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/gray16b_bk.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/gray8a.png b/application/third_party/dompdf/www/test/images/png/gray8a.png deleted file mode 100644 index df7cefcd..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/gray8a.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/gray8a_bk.png b/application/third_party/dompdf/www/test/images/png/gray8a_bk.png deleted file mode 100644 index fcb8483a..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/gray8a_bk.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/gray8b.png b/application/third_party/dompdf/www/test/images/png/gray8b.png deleted file mode 100644 index 9ad1ab25..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/gray8b.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/gray8b_bk.png b/application/third_party/dompdf/www/test/images/png/gray8b_bk.png deleted file mode 100644 index ca246e81..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/gray8b_bk.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/pal.png b/application/third_party/dompdf/www/test/images/png/pal.png deleted file mode 100644 index 7fec549c..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/pal.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/pal_bk.png b/application/third_party/dompdf/www/test/images/png/pal_bk.png deleted file mode 100644 index 1923b038..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/pal_bk.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/pal_bk_notrns.png b/application/third_party/dompdf/www/test/images/png/pal_bk_notrns.png deleted file mode 100644 index b89efae6..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/pal_bk_notrns.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/palb.png b/application/third_party/dompdf/www/test/images/png/palb.png deleted file mode 100644 index 65a8351c..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/palb.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/result_16ns.gif b/application/third_party/dompdf/www/test/images/png/result_16ns.gif deleted file mode 100644 index 55c4a396..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/result_16ns.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/result_1trns.gif b/application/third_party/dompdf/www/test/images/png/result_1trns.gif deleted file mode 100644 index 8a981309..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/result_1trns.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/result_bla.gif b/application/third_party/dompdf/www/test/images/png/result_bla.gif deleted file mode 100644 index c29b13f5..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/result_bla.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/result_dith.gif b/application/third_party/dompdf/www/test/images/png/result_dith.gif deleted file mode 100644 index b76f4847..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/result_dith.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/result_gra.gif b/application/third_party/dompdf/www/test/images/png/result_gra.gif deleted file mode 100644 index fb348ff9..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/result_gra.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/result_mag.gif b/application/third_party/dompdf/www/test/images/png/result_mag.gif deleted file mode 100644 index fa72b527..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/result_mag.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/result_magthr1.gif b/application/third_party/dompdf/www/test/images/png/result_magthr1.gif deleted file mode 100644 index 478250fd..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/result_magthr1.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/result_no.gif b/application/third_party/dompdf/www/test/images/png/result_no.gif deleted file mode 100644 index e64739a4..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/result_no.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/result_nsbug.gif b/application/third_party/dompdf/www/test/images/png/result_nsbug.gif deleted file mode 100644 index 52a87b3f..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/result_nsbug.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/result_ok.gif b/application/third_party/dompdf/www/test/images/png/result_ok.gif deleted file mode 100644 index f8699883..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/result_ok.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/result_oprbug.gif b/application/third_party/dompdf/www/test/images/png/result_oprbug.gif deleted file mode 100644 index 5fac687a..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/result_oprbug.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/result_thr1.gif b/application/third_party/dompdf/www/test/images/png/result_thr1.gif deleted file mode 100644 index 66ee0f62..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/result_thr1.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/result_thr128.gif b/application/third_party/dompdf/www/test/images/png/result_thr128.gif deleted file mode 100644 index 998fb74e..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/result_thr128.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/result_thr255.gif b/application/third_party/dompdf/www/test/images/png/result_thr255.gif deleted file mode 100644 index a7b719ce..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/result_thr255.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/result_whi.gif b/application/third_party/dompdf/www/test/images/png/result_whi.gif deleted file mode 100644 index 74ddabc0..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/result_whi.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/result_yel.gif b/application/third_party/dompdf/www/test/images/png/result_yel.gif deleted file mode 100644 index 681d0883..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/result_yel.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/result_yelthr1.gif b/application/third_party/dompdf/www/test/images/png/result_yelthr1.gif deleted file mode 100644 index 6049157b..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/result_yelthr1.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/resultb_bla.gif b/application/third_party/dompdf/www/test/images/png/resultb_bla.gif deleted file mode 100644 index bcbd4d96..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/resultb_bla.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/resultb_bug.gif b/application/third_party/dompdf/www/test/images/png/resultb_bug.gif deleted file mode 100644 index 3789f2b0..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/resultb_bug.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/resultb_mag.gif b/application/third_party/dompdf/www/test/images/png/resultb_mag.gif deleted file mode 100644 index f051aa46..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/resultb_mag.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/resultb_moz2.gif b/application/third_party/dompdf/www/test/images/png/resultb_moz2.gif deleted file mode 100644 index 312f7345..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/resultb_moz2.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/resultb_no.gif b/application/third_party/dompdf/www/test/images/png/resultb_no.gif deleted file mode 100644 index 9cb7801e..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/resultb_no.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/resultb_ok.gif b/application/third_party/dompdf/www/test/images/png/resultb_ok.gif deleted file mode 100644 index 23981255..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/resultb_ok.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/resultb_whi.gif b/application/third_party/dompdf/www/test/images/png/resultb_whi.gif deleted file mode 100644 index a21af08b..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/resultb_whi.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/resultb_yel.gif b/application/third_party/dompdf/www/test/images/png/resultb_yel.gif deleted file mode 100644 index 969db3d1..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/resultb_yel.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/resultg_bla.gif b/application/third_party/dompdf/www/test/images/png/resultg_bla.gif deleted file mode 100644 index c4ecc4e0..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/resultg_bla.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/resultg_dgr.gif b/application/third_party/dompdf/www/test/images/png/resultg_dgr.gif deleted file mode 100644 index 17fbb6c8..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/resultg_dgr.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/resultg_lgr.gif b/application/third_party/dompdf/www/test/images/png/resultg_lgr.gif deleted file mode 100644 index 68914a2f..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/resultg_lgr.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/resultg_no.gif b/application/third_party/dompdf/www/test/images/png/resultg_no.gif deleted file mode 100644 index 3e3619a0..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/resultg_no.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/resultga.gif b/application/third_party/dompdf/www/test/images/png/resultga.gif deleted file mode 100644 index 33ce2f88..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/resultga.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/resultgb.gif b/application/third_party/dompdf/www/test/images/png/resultgb.gif deleted file mode 100644 index 76ecb545..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/resultgb.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/resultgb_dgr.gif b/application/third_party/dompdf/www/test/images/png/resultgb_dgr.gif deleted file mode 100644 index 06413c53..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/resultgb_dgr.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/resultgb_no.gif b/application/third_party/dompdf/www/test/images/png/resultgb_no.gif deleted file mode 100644 index a2453e42..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/resultgb_no.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/resultpb_no.gif b/application/third_party/dompdf/www/test/images/png/resultpb_no.gif deleted file mode 100644 index 72e61f8c..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/resultpb_no.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/rgb16_t.png b/application/third_party/dompdf/www/test/images/png/rgb16_t.png deleted file mode 100644 index 37682e9b..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/rgb16_t.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/rgb16_t_bk.png b/application/third_party/dompdf/www/test/images/png/rgb16_t_bk.png deleted file mode 100644 index 0505b2f6..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/rgb16_t_bk.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/rgb8_t.png b/application/third_party/dompdf/www/test/images/png/rgb8_t.png deleted file mode 100644 index 3fd10c85..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/rgb8_t.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/rgb8_t_bk.png b/application/third_party/dompdf/www/test/images/png/rgb8_t_bk.png deleted file mode 100644 index 89ce912b..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/rgb8_t_bk.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/rgba16.png b/application/third_party/dompdf/www/test/images/png/rgba16.png deleted file mode 100644 index 8a10587c..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/rgba16.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/rgba16_bk.png b/application/third_party/dompdf/www/test/images/png/rgba16_bk.png deleted file mode 100644 index 05a6db1e..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/rgba16_bk.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/rgba8.png b/application/third_party/dompdf/www/test/images/png/rgba8.png deleted file mode 100644 index 495d8c32..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/rgba8.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/rgba8_bk.png b/application/third_party/dompdf/www/test/images/png/rgba8_bk.png deleted file mode 100644 index 10a1ee50..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/rgba8_bk.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/png/stripe.gif b/application/third_party/dompdf/www/test/images/png/stripe.gif deleted file mode 100644 index e3fa3b33..00000000 Binary files a/application/third_party/dompdf/www/test/images/png/stripe.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/smiley.png b/application/third_party/dompdf/www/test/images/smiley.png deleted file mode 100644 index f5d3a0a9..00000000 Binary files a/application/third_party/dompdf/www/test/images/smiley.png and /dev/null differ diff --git a/application/third_party/dompdf/www/test/images/what_ordered.gif b/application/third_party/dompdf/www/test/images/what_ordered.gif deleted file mode 100644 index 63de445a..00000000 Binary files a/application/third_party/dompdf/www/test/images/what_ordered.gif and /dev/null differ diff --git a/application/third_party/dompdf/www/test/page_pages.html b/application/third_party/dompdf/www/test/page_pages.html deleted file mode 100644 index a9f2fe02..00000000 --- a/application/third_party/dompdf/www/test/page_pages.html +++ /dev/null @@ -1,201 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<style> -body { - margin: 18pt 18pt 24pt 18pt; -} - -* { - font-family: helvetica,georgia,serif; - font-weight: bold; -} - -p { - text-align: justify; - font-size: 1em; - margin: 0.5em; - padding: 10px; -} -</style> -</head> -<body> - -<script type="text/php"> - -if ( isset($pdf) ) { - - $font = Font_Metrics::get_font("verdana");; - $size = 6; - $color = array(0,0,0); - $text_height = Font_Metrics::get_font_height($font, $size); - - $foot = $pdf->open_object(); - - $w = $pdf->get_width(); - $h = $pdf->get_height(); - - // Draw a line along the bottom - $y = $h - $text_height - 24; - $pdf->line(16, $y, $w - 16, $y, $color, 0.5); - - $pdf->close_object(); - $pdf->add_object($foot, "all"); - - $text = "Page {PAGE_NUM} of {PAGE_COUNT}"; - - // Center the text - $width = Font_Metrics::get_text_width("Page 1 of 2", $font, $size); - $pdf->page_text($w / 2 - $width / 2, $y, $text, $font, $size, $color); - -} -</script> - -<h1>Lorem ipsum dolor sit amet</h1> -<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec at -odio vitae libero tempus convallis. Cum sociis natoque penatibus et -magnis dis parturient montes, nascetur ridiculus mus. Vestibulum purus -mauris, dapibus eu, sagittis quis, sagittis quis, mi. Morbi fringilla -massa quis velit. Curabitur metus massa, semper mollis, molestie vel, -adipiscing nec, massa. Phasellus vitae felis sed lectus dapibus -facilisis. In ultrices sagittis ipsum. In at est. Integer iaculis -turpis vel magna. Cras eu est. Integer porttitor ligula a -tellus. Curabitur accumsan ipsum a velit. Sed laoreet lectus quis -leo. Nulla pellentesque molestie ante. Quisque vestibulum est id -justo. Ut pellentesque ante in neque.</p> - -<p>Curabitur ut diam eu dui vestibulum pharetra. Nam pellentesque, justo -non hendrerit venenatis, mi orci pretium mi, et vehicula leo arcu quis -diam. Nullam mattis laoreet quam. Morbi mollis sem ut tellus. Nam mi -massa, lobortis eu, sollicitudin et, iaculis et, massa. Maecenas purus -mauris, luctus sit amet, pharetra in, facilisis sit amet, elit. Nullam -vel erat tempus purus molestie suscipit. Vestibulum odio lorem, -sollicitudin non, volutpat sit amet, tincidunt vel, nunc. Nulla quis -ante vestibulum odio feugiat facilisis. Proin lorem nisl, viverra at, -rhoncus quis, semper nec, mi. Donec euismod enim vitae velit. Nulla -sed lectus. Vivamus placerat, lacus sed vehicula sagittis, arcu massa -adipiscing lorem, bibendum luctus nisl tortor vitae leo.</p> - -<p>Etiam a mauris. Proin justo elit, accumsan sit amet, tempus et, -blandit id, tellus. Morbi varius, nisi id iaculis aliquam, lacus -ligula facilisis velit, ac pharetra ipsum augue a massa. Etiam rhoncus -commodo orci. Mauris ullamcorper sagittis turpis. Nullam magna libero, -sagittis sed, auctor faucibus, accumsan vitae, urna. Pellentesque -volutpat. Aliquam sapien ipsum, eleifend nec, imperdiet vitae, -consectetuer id, quam. Donec a urna. Suspendisse sit amet -velit. Curabitur quis nisi id dui viverra ornare. Sed condimentum enim -quis tortor. Ut condimentum, magna non tempus tincidunt, leo nibh -molestie tellus, vitae convallis dolor ante sed ante. Nunc et -metus. Phasellus ultricies. Fusce faucibus tortor sit amet mauris.</p> - -<p>Aliquam enim. Duis et diam. Praesent porta, mauris quis pellentesque -volutpat, erat elit vulputate eros, vitae pulvinar augue velit sit -amet sem. Fusce eu urna eu nisi condimentum posuere. Vivamus sed -felis. Duis eget urna vitae eros interdum dignissim. Proin justo eros, -eleifend in, porttitor in, malesuada non, neque. Etiam sed -augue. Nulla sit amet magna. Lorem ipsum dolor sit amet, consectetuer -adipiscing elit. Mauris facilisis. Curabitur massa magna, pulvinar a, -nonummy eget, egestas vitae, mauris. Quisque vel elit sit amet lorem -malesuada facilisis. Vestibulum porta, metus sit amet egestas -interdum, urna justo euismod erat, id tristique urna leo quis -nibh. Morbi non erat.</p> - -<p>Cras fringilla, nulla id egestas elementum, augue nunc iaculis nibh, -ac adipiscing nibh justo id tortor. Donec vel orci a nisi ultricies -aliquet. Nunc urna quam, adipiscing molestie, vehicula non, -condimentum non, magna. Integer magna. Donec quam metus, pulvinar id, -suscipit eget, euismod ac, orci. Nulla facilisi. Nullam nec -mauris. Morbi in mi. Etiam urna lectus, pulvinar ac, sollicitudin eu, -euismod ac, lectus. Fusce elit. Sed ultricies odio ac felis.</p> - -<h1>Cras iaculis. Nulla facilisi.</h1> -<p>Cras iaculis. Nulla facilisi. Fusce vitae arcu. Integer lectus mauris, -ornare vel, accumsan eget, scelerisque vel, nunc. Maecenas justo urna, -volutpat vel, vehicula vel, ullamcorper nec, odio. Suspendisse laoreet -nisi sed erat. Cras convallis sollicitudin sapien. Phasellus ac erat -eu mi rutrum rhoncus. Morbi et velit. Morbi odio nisi, pharetra eget, -sollicitudin sed, aliquam at, nisl. Quisque euismod diam in -sapien. Integer accumsan urna in risus.</p> - -<p>Proin sit amet nisl. Phasellus dui ipsum, laoreet a, pulvinar id, -fringilla ut, libero. In hac habitasse platea dictumst. Maecenas mi -magna, cursus sed, rutrum eget, molestie nec, dui. Suspendisse -lacus. Vivamus nibh urna, accumsan sit amet, gravida sed, convallis a, -leo. Cras sollicitudin orci sit amet eros. Pellentesque eu odio et -velit tempor dignissim. Morbi vehicula malesuada enim. Pellentesque -tincidunt, tellus ac fringilla tempor, justo libero interdum nunc, eu -sollicitudin tortor augue nec tellus. Nullam eget leo quis tellus -gravida faucibus. Nam gravida. Curabitur rhoncus egestas -nunc. Curabitur mollis, nisi sed suscipit gravida, enim felis interdum -justo, vel accumsan magna nunc ut libero. Ut fermentum. Fusce luctus, -est sit amet feugiat lobortis, nisl eros bibendum libero, ut suscipit -felis ligula in massa. Proin congue elit et nisi. Cras ac nisl. Nunc -ullamcorper neque vel diam.</p> - -<h1>Ut pellentesque arcu ac lectus.</h1> -<p>Sed ac lorem. Ut pellentesque arcu ac lectus. Cum sociis natoque -penatibus et magnis dis parturient montes, nascetur ridiculus -mus. Pellentesque ultrices metus sollicitudin pede. Donec fermentum -est a velit fringilla mollis. Duis ligula. Fusce viverra laoreet -odio. Suspendisse sit amet ligula. Maecenas nunc velit, sagittis eu, -bibendum eu, placerat at, nibh. Praesent ut erat eget nisi gravida -imperdiet. Quisque vitae sapien. Ut eros.</p> - -<p>Donec eros ligula, dignissim vel, ultricies id, mattis in, massa. Duis -lobortis dui nec orci. Sed ullamcorper metus non massa. Aliquam eget -mauris ac nulla elementum posuere. Sed porta, augue vitae rhoncus -aliquet, felis quam eleifend est, vitae rutrum metus arcu vel -lorem. Proin laoreet, mauris sit amet aliquet eleifend, nisl sem -molestie nisi, eu varius eros ligula non erat. Integer ac -sem. Suspendisse lectus. Aliquam erat volutpat. Fusce sit amet leo -faucibus erat molestie ultrices. Maecenas lacinia lectus eget -dui. Etiam porta porttitor ante. Phasellus sit amet lacus adipiscing -enim mollis iaculis. Fusce congue, nulla a commodo aliquam, erat dui -fermentum dui, pellentesque faucibus orci enim at mauris. Pellentesque -a diam porta magna tempor posuere. Donec lorem.</p> - -<p>Sed viverra aliquam turpis. Aliquam lacus. Duis id massa. Nullam -ante. Suspendisse condimentum. Donec adipiscing, felis vel semper -sollicitudin, lacus justo pretium est, sed blandit pede risus eu -ante. Praesent ante nulla, fringilla id, ultrices et, feugiat a, -metus. Proin ac velit a metus suscipit fermentum. Integer aliquet. Sed -sapien nulla, placerat at, rutrum at, condimentum quis, libero. In -accumsan, tellus nec tincidunt malesuada, pede arcu commodo ipsum, ac -mattis tortor urna vitae enim. Aenean nonummy, mauris eget commodo -bibendum, augue sem ultrices nunc, eget rhoncus metus erat placerat -lectus. Aliquam mollis lectus in justo. Vivamus iaculis lacus sit amet -ligula. Etiam consectetuer convallis diam. Curabitur sollicitudin, -felis eu vehicula scelerisque, nisl urna aliquam orci, sit amet -laoreet mi turpis id ligula. Donec at enim non nulla adipiscing -dapibus. Aenean nisl.</p> - -<p>Ut in lacus nec enim volutpat pellentesque. Integer euismod. In odio -eros, malesuada in, mattis vel, tempor nec, sem. In libero tellus, -varius vitae, bibendum in, elementum quis, nisl. Duis tortor. Etiam at -justo. Pellentesque facilisis mauris non nunc. Praesent eros mi, -dapibus eget, placerat ac, lobortis quis, sem. Nulla rhoncus -turpis. Nulla vitae mi. Proin id massa. Nunc eros.</p> - -<h1>Aliquam molestie pulvinar ligula.</h1> -<p>Vestibulum dui risus, varius ut, semper et, consequat ultrices, -felis. Pellentesque iaculis urna in velit. Ut pharetra. Nunc -fringilla, nisi vitae fringilla placerat, enim justo semper erat, -mollis feugiat leo neque eu sem. Vestibulum orci urna, suscipit a, -accumsan nec, fringilla in, risus. Nullam ante. Nullam nec -eros. Nullam varius. Nulla facilisi. In auctor libero in -metus. Aliquam porttitor congue eros. Nulla facilisi. Mauris euismod -turpis ut felis. Ut nunc nisl, cursus quis, eleifend at, viverra -bibendum, lacus. Donec consequat lacus eu sapien. Fusce pulvinar -lectus quis nunc. In hac habitasse platea dictumst.</p> - -<p>Aliquam molestie pulvinar ligula. Maecenas imperdiet, urna eget -ultrices adipiscing, nibh ante elementum neque, id molestie massa quam -ut nunc. Nullam porta. Phasellus a magna in sem volutpat -viverra. Quisque aliquet nunc ac turpis. Mauris dolor enim, viverra -rutrum, placerat et, laoreet et, justo. In id nulla. Donec -erat. Phasellus nec mi sed velit mollis cursus. Vestibulum -tincidunt. Praesent dui libero, facilisis eu, vulputate eget, aliquet -nec, ipsum. Pellentesque in nisl in mauris pretium euismod.</p> - -</body> </html> diff --git a/application/third_party/dompdf/www/test/quirks_center_table.html b/application/third_party/dompdf/www/test/quirks_center_table.html deleted file mode 100644 index d0a45366..00000000 --- a/application/third_party/dompdf/www/test/quirks_center_table.html +++ /dev/null @@ -1,19 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -</head> -<body> -<table align="center"> -<tr> -<td>a</td> -<td>b</td> -</tr> -<tr> -<td>c</td> -<td>d</td> -</tr> -</table> - -</body> -</html> diff --git a/application/third_party/dompdf/www/test/quirks_font_tag.html b/application/third_party/dompdf/www/test/quirks_font_tag.html deleted file mode 100644 index 6b0812f7..00000000 --- a/application/third_party/dompdf/www/test/quirks_font_tag.html +++ /dev/null @@ -1,70 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"> -</head> -<body> - -<h1>Font tags with absolute size</h1> - -<font size="1">size=1</font> -<font size="2">size=2</font> -<font size="3">size=3</font> -<font size="4">size=4</font> -<font size="5">size=5</font> -<font size="6">size=6</font> -<font size="7">size=7</font> - -<h1>Span tags with absolute CSS size</h1> - -<span style="font-size: 8pt;">size=1</span> -<span style="font-size: 10pt;">size=2</span> -<span style="font-size: 12pt;">size=3</span> -<span style="font-size: 14pt;">size=4</span> -<span style="font-size: 18pt;">size=5</span> -<span style="font-size: 24pt;">size=6</span> -<span style="font-size: 34pt;">size=7</span> - -<h1>Font tags with relative size</h1> - -<font size="-4">size=-4</font> -<font size="-3">size=-3</font> -<font size="-2">size=-2</font> -<font size="-1">size=-1</font> -<font size="+1">size=+1</font> -<font size="+2">size=+2</font> -<font size="+3">size=+3</font> -<font size="+4">size=+4</font> - -<h1>Span tags with relative CSS size</h1> - -<span style="font-size: 0.5em;">size=-4</span> -<span style="font-size: 0.6em;">size=-3</span> -<span style="font-size: 0.7em;">size=-2</span> -<span style="font-size: 0.9em;">size=-1</span> -<span style="font-size: 1.2em;">size=+1</span> -<span style="font-size: 1.6em;">size=+2</span> -<span style="font-size: 2.0em;">size=+3</span> -<span style="font-size: 2.8em;">size=+4</span> - -<h1>Nested font tags</h1> - -<font size="2">size=2 - <font size="4">size=4 - <font size="2">size=2 - <font size="4">size=4 - <font size="2">size=2 - <font size="4">size=4 - <font size="2">size=2 - <font size="4">size=4 - </font> - </font> - </font> - </font> - </font> - </font> - </font> -</font> - -</body> -</html> diff --git a/application/third_party/dompdf/www/test/quirks_html_attributes.html b/application/third_party/dompdf/www/test/quirks_html_attributes.html deleted file mode 100644 index efb6b264..00000000 --- a/application/third_party/dompdf/www/test/quirks_html_attributes.html +++ /dev/null @@ -1,55 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"> -</head> -<body> -<div align="center"> - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet -doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit -amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt -ut laoreet dolore magna aliquam erat volutpat.<br/> -Ut wisi enim ad minim veniam, -quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex -ea commodo consequat. - -</div> -<hr size="3" noshade align="center" width="50%"/> - -<table border="2" cellspacing="3" cellpadding="5" rules="rows" bgcolor="#eeeeee"> - <tr bgcolor="#ddddff" valign="top"> - <td>Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper - suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem - vel eum iriure dolor in hendrerit in vulputate velit esse molestie - consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et - accumsan et iusto odio dignissim qui blandit praesent luptatum zzril - delenit augue duis dolore te feugait nulla facilisi.</td> - <td>table test</td> - <td width="25%">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, - sed diam nonumy eirmod tempor invidunt ut labore et dolore magna - aliquyam erat, sed diam voluptua.</td> - <td width="200">Duis autem vel eum iriure dolor in hendrerit in - vulputate velit esse molestie consequat, vel illum dolore eu feugiat - nulla facilisis at vero eros et accumsan et iusto odio dignissim qui - blandit praesent luptatum zzril delenit augue duis dolore te feugait - nulla facilisi.</td> - </tr> - <tr align="right"> - <td bgcolor="#ddffdd" valign="bottom">table test</td> - <td>Nam liber tempor cum soluta nobis eleifend option congue nihil - imperdiet doming id quod mazim placerat facer possim assum.<br/> - Lorem ipsum dolor sit amet.</td> - <td>table test</td> - <td>table test</td> - </tr> - <tr align="center"> - <td>table test</td> - <td bgcolor="#ffdddd">table test</td> - <td>table test</td> - <td>table test</td> - </tr> -</table> - - -</body> </html> diff --git a/application/third_party/dompdf/www/test/script_javascript.html b/application/third_party/dompdf/www/test/script_javascript.html deleted file mode 100644 index 84efb467..00000000 --- a/application/third_party/dompdf/www/test/script_javascript.html +++ /dev/null @@ -1,24 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>Javascript test</title> -</head> - -<body> - -This page will be printed automatically - -<h1>A title</h1> - -<script type="text/javascript"> - try { - this.print(); - } - catch(e) { - window.onload = window.print; - } -</script> - -</body> -</html> diff --git a/application/third_party/dompdf/www/test/script_php.php b/application/third_party/dompdf/www/test/script_php.php deleted file mode 100644 index ad75b6ed..00000000 --- a/application/third_party/dompdf/www/test/script_php.php +++ /dev/null @@ -1,28 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"> -<title></title> -</head> - -<body> - -<?php -echo "<p>Here's some dynamically generated text and some random circles...</p>"; -?> - -<script type="text/php"> -$max_x = $pdf->get_width() - 50; -$max_y = $pdf->get_height() - 50; -for ( $i = 0; $i < 30; $i++) { - $pdf->circle(rand(50, $max_x), rand(50, $max_y), rand(10, 70), - array(rand()/getrandmax(), rand()/getrandmax(), rand()/getrandmax()), - rand(1,40)); -} -</script> -<?php -echo "<p>Current PHP version: " . phpversion() . ". "; -echo "Today is " . strftime("%A") . " the " . strftime("%e").date("S").strftime(" of %B, %Y %T") . "</p>"; - -?> -</body> </html> diff --git a/application/third_party/index.html b/application/third_party/index.html deleted file mode 100644 index c942a79c..00000000 --- a/application/third_party/index.html +++ /dev/null @@ -1,10 +0,0 @@ -<html> -<head> - <title>403 Forbidden</title> -</head> -<body> - -<p>Directory access is forbidden.</p> - -</body> -</html> \ No newline at end of file diff --git a/application/views/404.php b/application/views/404.php deleted file mode 100644 index 19faf453..00000000 --- a/application/views/404.php +++ /dev/null @@ -1,15 +0,0 @@ -<div class="content-wrapper"> - <section class="content-header"> - <h1> - 404 - <small>This is not the page you are looking for</small> - </h1> - </section> - <section class="content"> - <div class="row"> - <div class="col-xs-12 text-center"> - <img src="<?php echo base_url() ?>assets/images/404.png" alt="Page Not Found Image" /> - </div> - </div> - </section> -</div> \ No newline at end of file diff --git a/application/views/AddPOLineItem.php b/application/views/AddPOLineItem.php deleted file mode 100644 index 1f19c7ad..00000000 --- a/application/views/AddPOLineItem.php +++ /dev/null @@ -1,145 +0,0 @@ - - -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - Add Purchase order Line Item - </h1> - </section> - - <section class="content"> - - <div class="row"> - <!-- left column --> - <div class="col-md-6"> - <!-- general form elements --> - <div class="box box-primary"> - <div class="box-header"> - <h3 class="box-title">Enter PO Line Item</h3> - </div><!-- /.box-header --> - <!-- form start --> - - <form role="form" action="<?php echo base_url() ?>purchaseorder/addNewPOLineItem" method="post" id="AddPOLineItem" role="form"> - <div class="box-body"> - <div class="row"> - <div class="col-md-6"> - - <div class="form-group"> - <label for="ProductDescription">Product Description</label> - <select class="form-control" name="ProductDescription" required> - <option value="null">Select Product Description</option> - <?php - if(!empty($RawMaterials)) - { - foreach ($RawMaterials as $RID) - { - ?> - <option value="<?php echo $RID->MaterialCode ?>"><?php echo $RID->MaterialCode ?> - <?php echo $RID->MaterialName ?></option> - <?php - } - } - ?> - </select> - </div> - </div> - - </div> - <div class="row"> - <div class="col-md-6"> - <div class="form-group"> - <label for="UOM">UOM</label> - <select class="form-control required" id="UOM" name="UOM"> - <option value="null">Select UOM</option> - <?php - if(!empty($UOM)) - { - foreach ($UOM as $UID) - { - ?> - <option value="<?php echo $UID->ConfigValue ?>"><?php echo $UID->ConfigValue ?></option> - <?php - } - } - ?> - </select> - </div> - </div> - </div> - - <div class="row"> - <div class="col-md-6"> - <div class="form-group"> - <label for="Quantity">Quantity</label> - <input type="text" class="form-control required digits" id="Quantity" name="Quantity" > - </div> - </div> - </div> - - <div class="row"> - <div class="col-md-6"> - <div class="form-group"> - <label for="UnitPrice">Unit Price</label> - <input type="text" class="form-control required digits" id="UnitPrice" name="UnitPrice" onchange="change()" > - </div> - </div> - </div> - <div class="row"> - <div class="col-md-6"> - <div class="form-group"> - <label for="ProductPrice">Product Price</label> - <input type="text" class="form-control required digits" id="ProductPrice" name="ProductPrice" disabled > - </div> - </div> - </div> - - <div class="box-footer"> - <input type="submit" class="btn btn-primary" value="Submit" /> - <input type="reset" class="btn btn-default" value="Reset" /> - </div> - </form> - </div> - </div> - <div class="col-md-4"> - <?php - $this->load->helper('form'); - $error = $this->session->flashdata('error'); - if($error) - { - ?> - <div class="alert alert-danger alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('error'); ?> - </div> - <?php } ?> - <?php - $success = $this->session->flashdata('success'); - if($success) - { - ?> - <div class="alert alert-success alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('success'); ?> - </div> - <?php } ?> - - <div class="row"> - <div class="col-md-12"> - <?php echo validation_errors('<div class="alert alert-danger alert-dismissable">', ' <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button></div>'); ?> - </div> - </div> - </div> - </div> - </section> -</div> -<script> -function change(){ - - var txtQuantity = document.getElementById('Quantity').value; - var txtUnitPrice = document.getElementById('UnitPrice').value; - var Tot = txtQuantity * txtUnitPrice - document.getElementById('ProductPrice').value = Tot; - // Do Something -} -</script> -<script src="<?php echo base_url(); ?>assets/js/editUser.js" type="text/javascript"></script> \ No newline at end of file diff --git a/application/views/EditPurchaseOrder.php b/application/views/EditPurchaseOrder.php deleted file mode 100644 index 8f1d6f17..00000000 --- a/application/views/EditPurchaseOrder.php +++ /dev/null @@ -1,456 +0,0 @@ -<?php - -$PONO = ''; -$POType = ''; -$PODate= ''; -$SupplierName = ''; -$Address = ''; -$SpecialOrder = ''; -$Username = ''; -$RequesterEmail = ''; -$RequesterPh = ''; -$RequestedDate = ''; -$BudgetManager = ''; -$BudgetManagerDepartment = ''; -$PurchasingCategory = ''; -$PurchasingJustification = ''; -$OrderValue = ''; -$DiscountType = ''; -$DiscountValue = ''; -$PackagingType = ''; -$PackagingValue = ''; -$ExciseDuty = ''; -$Vat = ''; -$Freight = ''; -$SupplierName = ''; -$Address = ''; -$BasicValue = ''; -$AfterDiscount = ''; -$AfterPackaging = ''; -$AferExciseduty = ''; -$txtAfterVat = ''; - -if(!empty($PODetail)) -{ - foreach ($PODetail as $PO) - { - $PONO = $PO->PONO; - $POType = $PO->POType; - $PODate = $PO->PODate; - $SupplierName = $PO->SupplierName; - $SpecialOrder = $PO->SpecialOrder; - $Username = $PO->usrName; - $RequesterEmail =$PO->RequesterEmail; - $RequesterPh = $PO->RequesterPh; - $RequestedDate = $PO->RequestedDate; - $BudgetManager= $PO->BudgetManager; - $BudgetManagerDepartment = $PO->BudgetManagerDepartment; - $PurchasingCategory = $PO->PurchasingCategory; - $PurchasingJustification = $PO->PurchasingJustification; - $OrderValue = $PO->OrderValue; - $DiscountType= $PO->DiscountType; - $DiscountValue= $PO->DiscountValue; - $PackagingType = $PO->PackagingType; - $PackagingValue= $PO->PackagingValue; - $ExciseDuty= $PO->ExciseDuty; - $Vat = $PO->Vat; - $Freight = $PO->Freight; - $Address = $PO->Address; - $BasicValue = $PO->basicvalue; - $AfterDiscount = $PO->AfterDiscount; - $AfterPackaging = $PO->AfterPackaging; - $AferExciseduty = $PO->AfterExciseduty; - $txtAfterVat = $PO->AfterVat; - } -} - - -?> -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <center> - <h1><b>Purchase Order - <?php echo $PONO ?> </b> </h1> - </center> - - </section> - - <section class="content"> - - <div style="text-align: right;"> - - <a href="<?php echo base_url().'C_test/create_pdf/?PO='.$PONO; ?>" target="_blank"/><button type="button" class="btn btn-info">Print</button></a> - <a href="<?php echo base_url(); ?>purchaseorderListing" > <button class="btn btn-info">Back</button></a> - </div> - <br/> - <div class="row"> - <!-- left column --> - <div class="col-md-12"> - <!-- general form elements --> - <div class="box box-primary"> - <div class="box-header"> - - <form role="form" id="addUser" action="" name="addUser" method="post" role="form"> - <div class="box-body"> - <div class="row"> - <div class="col-md-6"> - <div class="form-group"> - <label for="PO_Type">PO Type</label> - <select readonly class="form-control" name="PO_Type" required> - <option value="<?php echo $POType;?>"><?php echo $POType; ?> </option> - </select> - </div> - </div> - <div class="col-md-6"> - <div class="form-group"> - <label for="PO_Date">PO Date</label> - <input type="input" name="PO_Date" readonly value="<?php echo $PODate; ?>" class="form-control" placeholder="" /> - </div> - </div> - - </div> - <div class="row"> - <div class="col-md-6"> - <div class="form-group"> - <label for="SupplierID">Supplier Name</label> - <select class="form-control required" id="SupplierID" readonly name="SupplierID"> - <option value="<?php echo $SupplierName; ?>" ><?php echo $SupplierName; ?> </option> - - </select> - </div> - </div> - <div class="col-md-6"> - <div class="form-group"> - <label for="SupplierAddress">Supplier's Address</label> - <textarea name="comment" id="SupplierAddress" form="addUser" value="<?php echo $Address; ?>" class="form-control required" readonly ></textarea> - </div> - </div> - - </div> - <div class="row"> - <div class="col-md-6"> - <div class="form-group"> - <label for="role">Requested By</label> - <select class="form-control required" id="role" name="role" readonly> - <option value="<?php echo $Username;?>" ><?php echo $Username; ?></option> - - </select> - </div> - </div> - - <div class="col-md-6 "> - <div class="form-group"> - <label for="re_email">Requester Email</label> - <input type="text" class="form-control required" readonly value="<?php echo $RequesterEmail; ?>" id="re_email" name="re_email"> - </div> - </div> - - </div> - <div class="row"> - <div class="col-md-6 "> - <div class="form-group"> - <label for="re_phone">Requesters Phone</label> - <input type="text" class="form-control required digits" readonly id="re_phone" maxlength="12" value="<?php echo $RequesterPh;?>" name="re_phone"> - </div> - </div> - <div class="col-md-6"> - <div class="form-group"> - <label for="re_Date">Requested Date</label> - <input type="input" name="re_Date" readonly value="<?php echo $RequestedDate; ?>" class="form-control" placeholder="" /> - </div> - </div> - </div> - <div class="row"> - <div class="col-md-6"> - <div class="form-group"> - <label for="bud_manager">Budget Manager</label> - <select class="form-control" id="BudgetManager" readonly name="bud_manager" required onchange="SelectedDepartment()" > - <option value="<?php echo $BudgetManager; ?>" ><?php echo $BudgetManager; ?> </option> - - - </select> - </div> - - </div> - - <div class="col-md-6"> - <div class="form-group"> - <label for="bud_manager_de">Budget Manager Department</label> - <input type="text" readonly id="BudgetManagerDepartment" value="<?php echo $BudgetManagerDepartment; ?>" class="form-control required" name="BudgetManagerDepartment" readonly> - </div> - </div> - - </div> - <div class="row"> - <div class="col-md-6"> - <div class="form-group"> - <label for="Pur_category">Purchasing Category</label> - <select readonly class="form-control" id="Pur_category" name="Pur_category" required> - <option value="<?php echo $PurchasingCategory; ?>" ><?php echo $PurchasingCategory; ?></option> - - - </select> - </div> - - </div> - <div class="col-md-6"> - <div class="form-group"> - <label for="SpecialOrder">Special Requirement of order</label> - <input type="text" readonly class="form-control required" value="<?php echo $SpecialOrder; ?>" id="SpecialOrder" name="SpecialOrder" maxlength="500"> - </div> - </div> - </div> - <div > - <div> - <label for="Justification">Justification for the Purchase</label> - <textarea name="comment" readonly id="Justification" value="<?php echo $PurchasingJustification; ?>" form="addUser" class="form-control required" ></textarea> - - </div> - </div> - - </div> - </div> - - <div> - - <div class="col-md-12" ><b><u>Purchase Order Line Item : </u><b> </div> - <div class="col-xs-12 text-right"> - <div > - - - </div> - </div> - <div class="col-md-12" style="border:1px solid #000"> - - <table id="POLineItem" class="table table-hover" cellpadding="10" > - <tr style="background-color:powderblue;"> - <th text-align="center" nowrap >Product Description</th> - <th text-align="center" nowrap>UOM</th> - <th text-align="center" nowrap >Quantity</th> - <th text-align="center" nowrap >Unit Price</th> - <th text-align="center" nowrap>Product Amount</th> - - </tr> - <tbody id="tempAppend"> - <?php $TotalAmount = 0.00; - - if(!empty($POLineItem)) - { - - foreach ($POLineItem as $us) - { - ?> - <tr border="1"> - <td align="left"><?php echo $us->materialName?></td> - <td align="left"><?php echo $us->UOM ?></td> - <td align="left"><?php echo $us->Quantity ?></td> - <td align="left"><?php echo $us->UnitPrice ?></td> - <td align="left"><?php echo $us->ProductPrice ?></td> - - </tr> - <?php - } - } - ?> - </tbody> - - </table> - <div class="col-md-12" style="border:1px solid #000"> - - <div class="col-md-6 "> - <label for="Basic_Value">Basic Value : </label> - </div> - <div class="col-md-3 ">&nbsp;</div> - <div class="col-md-3 "> - <div class="form-group"> - <input type="text" class="form-control required digits" style="float:left; text-align:left" value= "<?php echo $BasicValue ?>" id="BasicValue" readonly name="BasicValue"> - </div> - </div> - - <div class="col-md-6 "> - <label for="Discount_Value">Discount : </label> - </div> - <div class="col-md-3 "> - <div class="form-group"> - <input type="text" class="form-control required digits" style="float:left; text-align:left" value= "<?php echo $DiscountType ?>" id="Discountype" readonly name="Discountype"> - </div> - </div> - <div class="col-md-3 "> - <div class="form-group"> - <input type="number" class="form-control required digits" id="txtDiscount" value= "<?php echo $DiscountValue; ?>" style="float:left; text-align:left" name="txtDiscount"> - </div> - </div> - - <div class="col-md-6 "> - <label for="AfterDiscount_Value">After Discount : </label> - </div> - <div class="col-md-3 ">&nbsp;</div> - <div class="col-md-3 "> - <div class="form-group"> - <input type="text" class="form-control required digits" value= "<?php echo $AfterDiscount ?>" id="AfterDiscount" maxlength="12" readonly name="AfterDiscount"> - </div> - </div> - - <div class="col-md-6 "> - <label for="Packaging">Packaging : </label> - </div> - <div class="col-md-3 "> - <div class="form-group"> - <input type="text" class="form-control required digits" style="float:left; text-align:left" value= "<?php echo $PackagingType ?>" id="Discountype" readonly name="Discountype"> - </div> - </div> - <div class="col-md-3 "> - <div class="form-group"> - <input type="number" class="form-control required digits" value= "<?php echo $PackagingValue; ?>" id="txtPackaging" style="float:left; text-align:left" name="txtPackaging"> - </div> - </div> - - <div class="col-md-6 "> - <label for="AfterPackaging">After Packaging : </label> - </div> - <div class="col-md-3 ">&nbsp;</div> - <div class="col-md-3 "> - <div class="form-group"> - <input type="input" class="form-control required digits" readonly id="AfterPackaging" style="float:left; text-align:left" value= "<?php echo $AfterPackaging; ?>" name="AfterPackaging"> - </div> - </div> - - <div class="col-md-6 "> - <label for="ExciseDuty">Excise duty @ 12.5% : </label> - </div> - <div class="col-md-3 ">&nbsp;</div> - <div class="col-md-3 "> - <div class="form-group"> - <input type="number" value= "<?php echo $ExciseDuty; ?>" class="form-control required digits" id="Exciseduty" style="float:left; text-align:left" name="Exciseduty"> - </div> - </div> - - <div class="col-md-6 "> - <label for="AfterExciseDuty">After Excise duty : </label> - </div> - <div class="col-md-3 ">&nbsp;</div> - <div class="col-md-3 "> - <div class="form-group"> - <input type="input" class="form-control required digits" id="AferExciseduty" readonly style="float:left; text-align:left" value= "<?php echo $AferExciseduty; ?>" name="AferExciseduty"> - </div> - </div> - - <div class="col-md-6 "> - <label for="Vat">Vat : </label> - </div> - <div class="col-md-3 ">&nbsp;</div> - <div class="col-md-3 "> - <div class="form-group"> - <input type="number" value= "<?php echo $Vat; ?>" class="form-control required digits" id="txtVat" style="float:left; text-align:left" name="txtVat"> - </div> - </div> - - <div class="col-md-6 "> - <label for="AfterVat">After Vat : </label> - </div> - <div class="col-md-3 ">&nbsp;</div> - <div class="col-md-3"> - <div class="form-group"> - <input type="input" class="form-control required digits" readonly id="txtAfterVat" style="float:left; text-align:left" name="txtAfterVat" value= "<?php echo $txtAfterVat; ?>" > - </div> - </div> - - <div class="col-md-6 "> - <label for="Freight">Freight : </label> - </div> - <div class="col-md-3 ">&nbsp;</div> - <div class="col-md-3 "> - <div class="form-group"> - <input type="number" value= "<?php echo $Freight; ?>" class="form-control required digits" id="txtFreight" style="float:left; text-align:left" name="txtFreight"> - </div> - </div> - - <div class="col-md-6 "> - <label for="Total_Order_Value ">Total Order Value : </label> - </div> - <div class="col-md-3 ">&nbsp;</div> - <div class="col-md-3 "> - <div class="form-group"> - <input type="number" class="form-control required digits" style="float:left; text-align:left" id="txtOrderValue" readonly name="txtOrderValue" value= "<?php echo $OrderValue; ?>"> - </div> - </div> - </div> - </div><!-- /.box-body --> - - - <div class="box-footer" align="right" style="padding-top:17%;"> - <input type="hidden" name="PONO" id="PONO" /> - <input type="submit" id="btnSubmit" class="btn btn-primary" value="OK" /> - </div> - </form> - - </div> - <div class="col-md-4"> - <?php - $this->load->helper('form'); - $error = $this->session->flashdata('error'); - if($error) - { - ?> - <div class="alert alert-danger alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('error'); ?> - </div> - <?php } ?> - <?php - $success = $this->session->flashdata('success'); - if($success) - { - ?> - <div class="alert alert-success alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('success'); ?> - </div> - <?php } ?> - - <div class="row"> - <div class="col-md-12"> - <?php echo validation_errors('<div class="alert alert-danger alert-dismissable">', ' <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button></div>'); ?> - </div> - </div> - </div> - </div> - </section> -</div> - - -</div> -<script> -function SelectDiscountType(){ - var selValue = $("option:selected", $("#DiscountType")).text() - //alert(selValue); - if (selValue =='Nil') - { - //alert('Inside if'); - document.getElementById('txtDiscount').disabled = true; - document.getElementById('txtDiscount').value = '0.00'; - } - else - { - //alert('Inside else if'); - document.getElementById('txtDiscount').disabled = false; - } -} - -function SelectPackagingType(){ - var selValue = $("option:selected", $("#PackagingType")).text() - - if (selValue =='Nil') - { - - document.getElementById('txtPackaging').disabled = true; - document.getElementById('txtPackaging').value = '0.00'; - } - else - { - - document.getElementById('txtPackaging').disabled = false; - } -} -</script> -<script src="<?php echo base_url(); ?>assets/js/addUser.js" type="text/javascript"></script> \ No newline at end of file diff --git a/application/views/EditservicePurchaseorder.php b/application/views/EditservicePurchaseorder.php deleted file mode 100644 index aa5babbb..00000000 --- a/application/views/EditservicePurchaseorder.php +++ /dev/null @@ -1,2112 +0,0 @@ -<?php - -$DeliverOption=''; - $SupId = ''; - $SupName = ''; - $Address = ''; - $PODate = ''; - - $DeliveryAddress =''; - $POStatus = ''; - $PONO = ''; - $TotalServiceTax = 0; - $TotalEducessTax = 0.0; - $TotalSecHigherEducessTax = 0.0; - $TotalKrishiKalyantax = 0.0; - $TotalSwachhBharattax = 0.0; - $TotalSummary = 0.0; - $TotalBasicAmount = 0.0; - $ServiceDescription = ''; - -$Deliverydt=''; -$DeliverSchedule=''; -$MaxPoDate = ''; -$AvlAmount = 0; -if(!empty($MaxPODate)) -{ - foreach ($MaxPODate as $date) - { - $MaxPoDate = $date->PODate; - - } -} -if(!empty($POMaster)) -{ - foreach ($POMaster as $Req) - { - - $SupId = $Req->SupplierID; - $SupName = $Req->SupplierName; - $Address = $Req->Address; - $pdt = new DateTime($Req->PODate); - $PODate = $pdt->format('Y-m-d'); - $DeliverOption = $Req->DeliveryOption; - $DeliverSchedule = $Req->DeliverySchedule; - $Ddt = new DateTime($Req->DeliveryDate); - $Deliverydt = $Ddt->format('Y-m-d'); - - $DeliveryAddress =$Req->DeliveryAddress; - $POStatus = $Req->StatusCode; - $PONO = $Req->PONO; - $ServiceDescription = $Req->ServiceDescription; - } -} - -if(!empty($AvlBudAmt)) -{ - - $AvlAmount = $AvlBudAmt; - -} -?> - -<script src="<?php echo base_url(); ?>assets/js/CreatePOValidation.js" type="text/javascript"></script> - -<script type="text/javascript"> - var DelOpt = '<?php echo $DeliverOption; ?>'; - var SchName = '<?php echo $DeliverSchedule; ?>'; -var DelDt = '<?php echo $Deliverydt; ?>'; -$(document).ready(function () { - if(DelOpt=="0"){ - $('#Deliverydtdiv').show(); - $('#Schedulediv').hide(); -$('#Deliverydt').val(DelDt); - } - - else if(DelOpt=="1"){ - $('#Deliverydtdiv').hide(); - $('#Schedulediv').show(); -$('#Deliverydt').val(''); - -$('#Scheduleby').val(SchName); -} -}); -</script> -<script> - - -var RequistQuantity = ''; -var AvilBudAmt = ''; - var POMaxDate = '<?php echo $MaxPoDate;?>'; - var d = new Date(POMaxDate); - var SelectedMaterialList = { - Mat: [] -}; - $(function() { -$("#PODate").datepicker({ - minDate : d, - maxDate : 'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true,yearRange: '-100:+0' -}); - $("#Deliverydt").datepicker({ - minDate : 'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true,yearRange: '0:+10' -}); - -$('#drpSupplier').change(function() { - - var id = $('#drpSupplier').val(); - - $("#SupAddress").val(''); - - if(id != '0') - { - var y = <?php echo json_encode($Suplist, JSON_PRETTY_PRINT) ?>; - - - $.each(y, function(idx, obj) { - if(obj.SupplierID === id) - { - $("#SupAddress").val(obj.Address); - - } - - }); - - } - else - { - alert('Please select the SupplierID'); - return false; - } - -}); - -$('#ReqNo').change(function() { - - var id = $('#ReqNo').val(); - $("#AvlBudAmt").val(''); - $("#CostCenter").val(''); - $("#MaterialCode").empty(); - $("#deptName").val(''); - $("#UOM").val(''); -$("#Quantity").val(''); -$("#ItemName").val(''); -$("#Rate").val(''); -$("#txtBasicValue").val(''); - clearTaxField(); - if(id != '0') - { - var y = <?php echo json_encode($RequistionDetails, JSON_PRETTY_PRINT) ?>; - - var Material = <?php echo json_encode($MaterialList, JSON_PRETTY_PRINT) ?>; - var AvlBudAmt = '<?php echo $AvlAmount ?>'; - //ServiceTable - var rows = document.getElementById('ServiceTable').rows.length; - -if(DeletedMaterialCode!=undefined && DeletedMaterialCode!=''){ - - $("#MaterialCode").append( $('<option></option>').val(DeletedMaterialCode).html(DeletedMaterialCode + "-" + DeletedMaterialName)); - -} - -for(i=2;i<=rows;i++){ - -//var j=1; - $.each(Material[i], function(idx, obj) { - - // j=j+1; - var materialCode = $('#materialCode'+i); - - - - - if(obj.materialCode == materialCode ) - { - $("#MaterialCode").val(''); - } - - - - else{ - $("#MaterialCode").append( $('<option></option>').val(obj.MaterialCode).html(obj.MaterialCode + "-" + obj.MaterialName)); - - } - - - }); - - - - -} // For Binding DepartmentName - $.each(y, function(idx, obj) { - if(obj.ReqNo === id) - { - $("#deptName").val(obj.DepartmentName); - $("#CostCenter").val(obj.CostCenterCode); - } - }); - $("#AvlBudAmt").val(AvlBudAmt); - // For Binding Material list center for the selected Requistion Number - $("#MaterialCode").append( $('<option></option>').val("0").html("Select Material Code") ); - var isAdded = "0"; - for(i=0;i<Material.length;i++) - { - $.each(Material[i], function(idx, obj) { - - if(obj.ReqNo === id ) - { - - $.each(SelectedMaterialList.Mat, function(idx1, el){ - if (id == el.ReqNo ) - { - - if(el.materialCode == obj.MaterialCode) - { - isAdded = "1"; - return false; - } - else - { - isAdded = "0"; - } - - } - }); - - - if(isAdded == "0") - { - - - $("#MaterialCode").append( $('<option></option>').val(obj.MaterialCode).html(obj.MaterialCode + "-" + obj.MaterialName)); - } - - } - - - }); - } - } - else - { - alert('Please select the Requisition Number'); - return false; - } - id = ''; - -}); - -$('#MaterialCode').change(function() { - - var id = $('#MaterialCode').val(); - RequistQuantity = ''; - clearTaxField(); - if(id != '0') - { - var y = <?php echo json_encode($MaterialList, JSON_PRETTY_PRINT) ?>; - - for(i=0;i<y.length;i++) - { - $.each(y[i], function(idx, obj) { - - if(obj.MaterialCode == id) - { - - - $("#ItemName").val(obj.MaterialName); - $("#UOM").val(obj.UOM); - $("#Quantity").val(obj.Quantity); - RequistQuantity = obj.Quantity; - } - }); - } - } - else - { - alert('Please select the MaterialCode'); - return false; - } - -}); - - -}); -function Ratechange(){ - - if($('#ReqNo').val() == "0") - { - alert('Please select the Requisition Number'); - $('#ReqNo').focus(); - return false; - } - else if($('#MaterialCode').val() == "0") - { - alert('Please select the Material Code'); - $('#MaterialCode').focus(); - return false; - } - else if($('#CostCenter').val() == "0") - { - alert('Please select the CostCenterCode'); - $('#CostCenter').focus(); - return false; - } - ExceedQuantityCheck(); - - if($('#Quantity').val() != '' && $('#Rate').val() != '') - { - var txtQuantity = parseFloat( $('#Quantity').val()); - var txtUnitPrice = parseFloat($('#Rate').val()); - var Tot = txtQuantity * txtUnitPrice - $('#txtBasicValue').val(Tot); - - //Service Tax calculation - $('#AfterServiceTax').val(calculateServiceTax($('#txtBasicValue').val())); // calculateServiceTax(); - - //Edu. cess @2% on service Tax - $('#AfterEduCess').val( calculateEduess($('#AfterServiceTax').val())); - - //Sec. & Higher Edu. cess @1 % on service Tax - - $('#AfterSecHighTax').val(calculateHigherEdu($('#AfterServiceTax').val())); - //Krishi Kalyan tax - - $('#AfterKrishiTax').val(calculateKrishiKalyantax($('#txtBasicValue').val())); - //Swachh Bharat tax - - $('#AfterSwachhTax').val(calculateSwachhBharattax($('#txtBasicValue').val())); - - calculateTotalOrdervalue(); - - var res = ExceedBudget($('#TotalOrderValue').val(), $('#AvlBudAmt').val()); - if(!res) - { - $('#Rate').focus(); - return false; - } - } - -} - -function EditRatechange(){ - - if($('#EditCostCenter').val() == "0") - { - alert('Please select the CostCenterCode'); - $('#EditCostCenter').focus(); - return false; - } - EditExceedQuantityCheck(); - - if($('#EditQuantity').val() != '' && $('#EditRate').val() != '') - { - var txtQuantity = parseFloat( $('#EditQuantity').val()); - var txtUnitPrice = parseFloat($('#EditRate').val()); - var Tot = txtQuantity * txtUnitPrice - $('#txtEditBasicValue').val(Tot); - ExceedBudget(Tot, $('#EditAvlBudAmt').val()); - - //Service Tax calculation - $('#EditAfterServiceTax').val(calculateServiceTax($('#txtEditBasicValue').val())); // calculateServiceTax(); - - //Edu. cess @2% on service Tax - $('#EditAfterEduCess').val( calculateEduess($('#EditAfterServiceTax').val())); - - //Sec. & Higher Edu. cess @1 % on service Tax - - $('#EditAfterSecHighTax').val(calculateHigherEdu($('#EditAfterServiceTax').val())); - //Krishi Kalyan tax - - $('#EditAfterKrishiTax').val(calculateKrishiKalyantax($('#txtEditBasicValue').val())); - //Swachh Bharat tax - - $('#EditAfterSwachhTax').val(calculateSwachhBharattax($('#txtEditBasicValue').val())); - - calculateTotalEditOrdervalue(); - } - -} - -function ExceedQuantityCheck() - { - var EnterQuantity = $("#Quantity").val()== '' ? "0.00" : parseFloat($("#Quantity").val()); - var ReqQuantity = parseFloat(RequistQuantity); - if(EnterQuantity > ReqQuantity) - { - alert('Your exceeding the Quantity from the Requisition Quantity:'+ RequistQuantity +'.Please adjust the Quantity to proceed further.'); - - $('#Quantity').focus(); - return false; - } - else { - return true; - } - } - function EditExceedQuantityCheck() - { - // RequistQuantity - var EnterQuantity = $("#EditQuantity").val()== '' ? "0.00" : parseFloat($("#EditQuantity").val()); - var ReqQuantity = parseFloat(RequistQuantity); - //alert(ReqQuantity); - if(EnterQuantity > ReqQuantity) - { - alert('Your exceeding the Quantity from the Requisition Quantity:'+ RequistQuantity +'.Please adjust the Quantity to proceed further.'); - - $('#EditQuantity').focus(); - return false; - } - } - - function ExceedBudget(ValuetoCheck,budgetAmount) - { - var ReqAmount = parseFloat(ValuetoCheck); - var BudAmount = parseFloat(budgetAmount); - - if(ReqAmount > BudAmount ) - { - alert('Your exceeding the Avaiable Budget :'+ AvilBudAmt +'.Please adjust the Product to proceed further.'); - return false; - } - else - { - return true; - } - } - function calculateServiceTax(varBasicValue) - { - - var basicValue = parseFloat(varBasicValue); - - var ServiceTaxValue = 0.0; - - ServiceTaxValue = <?php echo SERVICETAX_SERVICETAX_14PERCENT; ?>; - - var TAXval = parseFloat(ServiceTaxValue).toFixed(2); - - return TAXval;// $('#AfterServiceTax').val(TAXval); - - } - function calculateEduess(varAfterServiceTax) - { - var ServiceTaxAmount = parseFloat(varAfterServiceTax); - - var ServiceTaxValue = 0.0; - - ServiceTaxValue = <?php echo SERVICETAX_EDUCESS_2PERCENT; ?>; - - var TAXval = parseFloat(ServiceTaxValue).toFixed(2); - - return TAXval;// $('#AfterEduCess').val(TAXval); - } - function calculateHigherEdu(varAfterServiceTax) - { - var ServiceTaxAmount = parseFloat(varAfterServiceTax); - - var ServiceTaxValue = 0.0; - - ServiceTaxValue = <?php echo SERVICETAX_HIGHEREDUCESS_1PERCENT; ?>; - - var TAXval = parseFloat(ServiceTaxValue).toFixed(2); - - return TAXval;//$('#AfterSecHighTax').val(TAXval); - } - function calculateKrishiKalyantax(varBasicValue) - { - var basicValue = parseFloat(varBasicValue); - - var ServiceTaxValue = 0.0; - - ServiceTaxValue = <?php echo SERVICETAX_KRISHIKALYAN; ?>; - - var TAXval = parseFloat(ServiceTaxValue).toFixed(2); - - return TAXval;//$('#AfterKrishiTax').val(TAXval); - } - function calculateSwachhBharattax(varBasicValue) - { - var basicValue = parseFloat(varBasicValue); - - var ServiceTaxValue = 0.0; - - ServiceTaxValue = <?php echo SERVICETAX_SWACHHBHARAT; ?>; - - var TAXval = parseFloat(ServiceTaxValue).toFixed(2); - - return TAXval; //$('#AfterSwachhTax').val(TAXval); - } - - function calculateTotalOrdervalue() - { - var basicValue = parseFloat($('#txtBasicValue').val()); - var ServiceTaxAmount = parseFloat($('#AfterServiceTax').val()); - var EduCessTaxAmount = parseFloat($('#AfterEduCess').val()); - var SecHighTaxAmount = parseFloat($('#AfterSecHighTax').val()); - var KrishiTaxAmount = parseFloat($('#AfterKrishiTax').val()); - var SwachhTaxAmount = parseFloat($('#AfterSwachhTax').val()); - - var TotAmt = basicValue + ServiceTaxAmount+ EduCessTaxAmount + SecHighTaxAmount+ KrishiTaxAmount + SwachhTaxAmount; - - $('#TotalOrderValue').val( parseFloat(TotAmt).toFixed(2)); - - } - function calculateTotalEditOrdervalue() - { - var basicValue = parseFloat($('#txtEditBasicValue').val()); - var ServiceTaxAmount = parseFloat($('#EditAfterServiceTax').val()); - var EduCessTaxAmount = parseFloat($('#EditAfterEduCess').val()); - var SecHighTaxAmount = parseFloat($('#EditAfterSecHighTax').val()); - var KrishiTaxAmount = parseFloat($('#EditAfterKrishiTax').val()); - var SwachhTaxAmount = parseFloat($('#EditAfterSwachhTax').val()); - - var TotAmt = basicValue + ServiceTaxAmount+ EduCessTaxAmount + SecHighTaxAmount+ KrishiTaxAmount + SwachhTaxAmount; - - $('#EditTotalOrderValue').val( parseFloat(TotAmt).toFixed(2)); - - } - - function calculateTaxValue() - { - var ServiceTaxAmount = parseFloat($('#AfterServiceTax').val()); - var EduCessTaxAmount = parseFloat($('#AfterEduCess').val()); - var SecHighTaxAmount = parseFloat($('#AfterSecHighTax').val()); - var KrishiTaxAmount = parseFloat($('#AfterKrishiTax').val()); - var SwachhTaxAmount = parseFloat($('#AfterSwachhTax').val()); - - var TottaxAmt = ServiceTaxAmount+ EduCessTaxAmount + SecHighTaxAmount+ KrishiTaxAmount + SwachhTaxAmount; - return parseFloat(TottaxAmt.toFixed(2)); - } - -function clearTaxField() -{ - $('#txtBasicValue').val(''); - $('#AfterServiceTax').val(''); - $('#AfterEduCess').val(''); - $('#AfterSecHighTax').val(''); - $('#AfterKrishiTax').val(''); - $('#AfterSwachhTax').val(''); - $('#TotalOrderValue ').val(''); - $('#Rate').val(''); - - $("#ItemName").val(''); - $("#UOM").val(''); - $("#Quantity").val(''); - RequistQuantity = ''; - -} -function clearEditTaxField() -{ - $('#txtEditBasicValue').val(''); - $('#EditAfterEduCess').val(''); - $('#EditAfterSecHighTax').val(''); - $('#EditAfterServiceTax').val(''); - $('#EditAfterKrishiTax').val(''); - $('#EditAfterSwachhTax').val(''); - $('#EditTotalOrderValue ').val(''); - $('#EditRate').val(''); - - $("#EditItemName").val(''); - $("#EditUOM").val(''); - $("#EditQuantity").val(''); - RequistQuantity = ''; - -} -$(document).ready(function () { - $('#Date').click(function () { - //for Date range selection - $('#Schedulediv').hide(); - $('#Deliverydtdiv').show(); - }); - $('#Schedule').click(function () { - //for schedule range selection - $('#Deliverydtdiv').hide(); - $('#Schedulediv').show(); - }); - }); -</script> -<style> -.modal -{ - padding-right:25% ! important; -} -.num { - text-align:right; -} -</style> -<div class="content-wrapper"> - <?php - $attributes = array('class' => 'form-label-left ServicePO ','name' => 'ServicePO','id' => 'ServicePO'); - - echo form_open($this->config->base_url().'/purchaseorder/addPO/',$attributes); ?> - - <section class="content"> - <div style="border:2px solid #333"> - <div id="content"></div> - <div> - <center><b><h2>Siddharth Industries - Edit Service Purchase Order - <?php echo $PONO;?></h2></b></center></div> - <div class="container-fluid"> - - <div class="row"> - <div class="col-md-12"> - <div class="col-md-3"> - <div class="col-md-12"> - <label>Requistion No</label> - - - <?php - - $options = array("0"=>'Selected Requisition Numbers'); - if(!empty($ReqList)) - { - foreach ($ReqList as $SID): - - $options[$SID->ReqNo] = $SID->ReqNo ; - endforeach; - } - echo form_multiselect('RequistionNo', $options,set_value('RequistionNo'),'id="RequistionNo"' , 'required="true"'); - - ?> - </div> - <div class="col-md-12"> - <label>Purchase Order Date</label> - <div class="form-group"> - <?php - $data = array('name' => 'PODate','value' => set_value('PODate',$PODate),'id'=>'PODate', 'class' => 'form-control num' ,'required' => 'true','onkeypress'=>'return false;'); - echo form_input($data); - ?> - </div> - </div> - - </div> - <div class="col-md-9"> - <div class="col-md-4"> - <div class="col-md-12"> - <label>Supplier</label> - <?php - $options = array("0"=>'Select Supplier'); - //print_r( $options); - - if(!empty($Suplist)) - { - foreach ($Suplist as $SID): - - - $options[$SID->SupplierID] = $SID->SupplierID.' '.' - '.' '.$SID->SupplierName; - - endforeach; - } - - echo form_dropdown('drpSupplier', $options,set_value('drpSupplier',$SupId ),'id="drpSupplier"' ,'required="true"' ,'class="form-control select2'); - - ?> - - </div> - <div class="col-md-12"><br/> - <label>Address</label> - <div class="form-group"> - <?php - $data = array('name' => 'SupAddress','value' => set_value('SupAddress',$Address),'id'=>'SupAddress', 'class' => 'form-control' ,'readonly' => 'true','rows' => '3', 'cols' => '40'); - echo Form_textarea($data); - ?> - </div> - </div> - </div> - <div class="col-md-4"> - <div class="col-md-12"> - <label>Purchase Order Type</label> - <div class="form-group"> - - <?php - $data = array('name' => 'POType','value' => set_value('POType',SERVICE),'id'=>'POType', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-12"> - <label>Delivery Address</label> - <div class="form-group"> - <?php - $data = array('name' => 'DeliveryAddr','value' => set_value('DeliveryAddr',$DeliveryAddress),'id'=>'DeliveryAddr', 'class' => 'form-control' ,'required' => 'true', 'rows' => '3', 'cols' => '40'); - echo Form_textarea($data); - ?><input type="hidden" name="txtDeliveryAddress" id="txtDeliveryAddress" value="<?php echo $DeliveryAddress;?>"> - - </div> - </div> - </div> - <div class="col-md-4"> - <div class="col-md-12"> - <b><u>Select Delivery By</u></b><br/> - <tr> - <td> - <?php echo form_label('Date', 'Date') . "&nbsp;&nbsp;". form_radio(array('name' => 'DateRange', 'value' => '0', 'checked' => ('0' == $DeliverOption) ? TRUE : FALSE, 'id' => 'Date')); ?> - -<td> - <?php echo form_label('Schedule', 'Schedule') . form_radio(array('name' => 'DateRange', 'value' => '1', 'checked' => ('1' == $DeliverOption) ? TRUE : FALSE, 'id' => 'Schedule')); ?> - - -</td> - - </tr> - </div> - <div class="col-md-12" id="Deliverydtdiv"><br/> - <label>Delivery Date</label> - <div class="form-group"> - <?php - $data = array('name' => 'Deliverydt','value' => set_value('Deliverydt',$Deliverydt),'id'=>'Deliverydt', 'class' => 'form-control num' ,'required' => 'true', 'onkeypress'=>'return false;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-12" id="Schedulediv" style="display:none;"><br/> - <label >Schedule :</label> - <?php - $data = array('name' => 'Scheduleby','value' => set_value('Scheduleby'),'id'=>'Scheduleby', 'class' => 'form-control' ,'required' => 'true' ,'rows' => '3', 'cols' => '40'); - echo Form_textarea($data); - ?> - - </div> - </div> - - </div> - </div> - </div> - - <div class="container-fluid"> - -<div style="padding-right:10px"> -<div align="right"> - <a data-toggle="modal" ><button type="submit" onclick="myFunction();" class="btn btn-primary" id="abcd" >Select Line Item</button> </a> - - - -<!-- Model for servicepo --> - <div class="modal fade" id="SERVICE" role="dialog"> - <div class="modal-dialog"> - <!-- Modal content--> - <form> - <div class="modal-content" style="width:900px;"> - <div class="modal-header" style="background-color: #3c8dbc;color:#fff;"> - <center><h4>Add Service Purchase Order Item </h4></center> - </div> - <div align="left"> - - <div class="col-md-12"> - <div class="col-md-3"> - <label>Req No</label> - <div> - <?php - $RL = array("0"=>'Select Req No'); - if(!empty($RequistionDetails)) - { - foreach ($RequistionDetails as $SID): - $RL[$SID->ReqNo] = $SID->ReqNo.' '.' - '.' '.$SID->DepartmentName; - endforeach; - } - - echo form_dropdown('ReqNo', $RL,set_value('ReqNo'),'id="ReqNo"' ,'class="form-control"'); - - ?> - </div> - </div> - - <div class="col-md-3"> - <label>Department Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'deptName','value' => set_value('deptName'),'id'=>'deptName', 'class' => 'form-control'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-3"> - <label>Cost Center Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'CostCenter','value' => set_value('CostCenter'),'id'=>'CostCenter', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - - ?> - </div> - </div> - <div class="col-md-3"> - <label>Available Budget Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'AvlBudAmt','value' => set_value('AvlBudAmt'),'id'=>'AvlBudAmt', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-2"> - <label>Item Code</label> - <div> - <?php - $options = array("0"=>'Item Code'); - //print_r( $options); - - - - echo form_dropdown('MaterialCode', $options,set_value('MaterialCode'),'id="MaterialCode"' ,'class="form-control"'); - - ?> - </div> - </div> - - <div class="col-md-2"> - <label>Item Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'ItemName','value' => set_value('ItemName'),'id'=>'ItemName', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>UOM</label> - <div class="form-group"> - <?php - $data = array('name' => 'UOM','value' => set_value('UOM'),'id'=>'UOM', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Quantity</label> - <div class="form-group"> - <?php - $data = array('name' => 'Quantity','value' => set_value('Quantity'),'id'=>'Quantity', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'Ratechange()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Rate</label> - <div class="form-group"> - <?php - $data = array('name' => 'Rate','value' => set_value('Rate'),'id'=>'Rate', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);' ,'onchange'=>'Ratechange()' ); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Basic Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtBasicValue','value' => set_value('txtBasicValue'),'id'=>'txtBasicValue', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-12"> - <div class="col-md-5 col-md-offset-4" align="right"> - - Service Tax @14% : - </div> - - <div class="col-md-3"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterServiceTax','value' => set_value('AfterServiceTax'),'id'=>'AfterServiceTax', 'class' => 'form-control num' ,'placeholder' => 'After Service Tax','readonly' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - - </div> - <div class="col-md-12"> - <div class="col-md-5 col-md-offset-4" align="right"> - Edu. cess @2% on service Tax : - - </div> - - <div class="col-md-3"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterEduCess','value' => set_value('AfterEduCess'),'id'=>'AfterEduCess', 'class' => 'form-control num' ,'placeholder' => 'After Edu.','readonly' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - - </div> - <div class="col-md-12"> - - <div class="col-md-5 col-md-offset-4" align="right"> - Sec. & Higher Edu. cess @1 % on service Tax : - - </div> - - <div class="col-md-3"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterSecHighTax','value' => set_value('AfterSecHighTax'),'id'=>'AfterSecHighTax', 'class' => 'form-control num' ,'placeholder' => 'After High Edu.','readonly' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - </div> - <div class="col-md-12"> - - <div class="col-md-5 col-md-offset-4" align="right"> - Krishi Kalyan tax @.5 % on Basic Amount: - - </div> - - <div class="col-md-3"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterKrishiTax','value' => set_value('AfterKrishiTax'),'id'=>'AfterKrishiTax', 'class' => 'form-control num' ,'placeholder' => 'After Krishi Kalyan tax.','readonly' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - </div> - <div class="col-md-12"> - - <div class="col-md-5 col-md-offset-4" align="right"> - Swachh Bharat tax @.5 % on Basic Amount: - - </div> - - <div class="col-md-3"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterSwachhTax','value' => set_value('AfterSwachhTax'),'id'=>'AfterSwachhTax', 'class' => 'form-control num' ,'placeholder' => 'After High Edu.','readonly' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - </div> - - <div class="col-md-12"> - <div class="col-md-5 col-md-offset-4" align="right"> - Total Order value : - </div> - <div class="col-md-3"> - <div class="form-group"> - <?php - $data = array('name' => 'TotalOrderValue','value' => set_value('TotalOrderValue'),'id'=>'TotalOrderValue', 'class' => 'form-control num' ,'placeholder' => 'Total value','readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - - </div> - - - <br/> - <br/> - <div class="modal-footer"> - <a class="btn btn-primary font AddService" ID="AddService" ><i class="fa fa-plus"></i>&nbsp;&nbsp;<span class="bold">Add Service</span></a> - <a class="btn btn-primary" data-dismiss="modal" value="Cancel">Cancel</a> - - </div> - </div> - </form> - - </div> - </div> - </div> - <!-- Edit Modal content--> - <div class="modal fade" id="EDITSERVICE" role="dialog"> - <div class="modal-dialog"> - <!-- Modal content--> - <form> - <div class="modal-content" style="width:900px;"> - <div class="modal-header" style="background-color: #3c8dbc;color:#fff;"> - <center><h4>Edit Service Purchase Order Item </h4></center> - </div> - <div align="left"> - - <div class="col-md-12"> - <div class="col-md-3"> - <label>Req No</label> - <div> - <?php - - $data = array('name' => 'EditReqNo','value' => set_value('EditReqNo'),'id'=>'EditReqNo', 'class' => 'form-control','readonly'=>'true'); - echo form_input($data); - ?> - - </div> - </div> - - <div class="col-md-3"> - <label>Department Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditdeptName','value' => set_value('EditdeptName'),'id'=>'EditdeptName', 'class' => 'form-control','readonly'=>'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-3"> - <label>Cost Center Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditCostCenter','value' => set_value('EditCostCenter'),'id'=>'EditCostCenter', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - - ?> - </div> - </div> - <div class="col-md-3"> - <label>Available Budget Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditAvlBudAmt','value' => set_value('EditAvlBudAmt'),'id'=>'EditAvlBudAmt', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-2"> - <label>Item Code</label> - <div> - <?php - $options = array("0"=>'Item Code'); - //print_r( $options); - - echo form_dropdown('EditMaterialCode', $options,set_value('EditMaterialCode'),'id="EditMaterialCode"' ,'class="form-control"'); - - ?> - </div> - </div> - - <div class="col-md-2"> - <label>Item Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditItemName','value' => set_value('EditItemName'),'id'=>'EditItemName', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>UOM</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditUOM','value' => set_value('EditUOM'),'id'=>'EditUOM', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Quantity</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditQuantity','value' => set_value('EditQuantity'),'id'=>'EditQuantity', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'EditRatechange()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Rate</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditRate','value' => set_value('EditRate'),'id'=>'EditRate', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);' ,'onchange'=>'EditRatechange()' ); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Basic Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditBasicValue','value' => set_value('txtEditBasicValue'),'id'=>'txtEditBasicValue', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-12"> - <div class="col-md-5 col-md-offset-4" align="right"> - - Service Tax @14% : - </div> - - <div class="col-md-3"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAfterServiceTax','value' => set_value('EditAfterServiceTax'),'id'=>'EditAfterServiceTax', 'class' => 'form-control num','readonly' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - - </div> - <div class="col-md-12"> - <div class="col-md-5 col-md-offset-4" align="right"> - Edu. cess @2% on service Tax : - - </div> - - <div class="col-md-3"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAfterEduCess','value' => set_value('EditAfterEduCess'),'id'=>'EditAfterEduCess', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - - </div> - <div class="col-md-12"> - - <div class="col-md-5 col-md-offset-4" align="right"> - Sec. & Higher Edu. cess @1 % on service Tax : - - </div> - - <div class="col-md-3"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAfterSecHighTax','value' => set_value('EditAfterSecHighTax'),'id'=>'EditAfterSecHighTax', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - </div> - <div class="col-md-12"> - - <div class="col-md-5 col-md-offset-4" align="right"> - Krishi Kalyan tax @.5 % on Basic Amount: - - </div> - - <div class="col-md-3"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAfterKrishiTax','value' => set_value('EditAfterKrishiTax'),'id'=>'EditAfterKrishiTax', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - </div> - <div class="col-md-12"> - - <div class="col-md-5 col-md-offset-4" align="right"> - Swachh Bharat tax @.5 % on Basic Amount: - - </div> - - <div class="col-md-3"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAfterSwachhTax','value' => set_value('EditAfterSwachhTax'),'id'=>'EditAfterSwachhTax', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - </div> - - <div class="col-md-12"> - <div class="col-md-5 col-md-offset-4" align="right"> - Total Order value : - </div> - <div class="col-md-3"> - <div class="form-group"> - <?php - $data = array('name' => 'EditTotalOrderValue','value' => set_value('EditTotalOrderValue'),'id'=>'EditTotalOrderValue', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - - </div> - - - <br/> - <br/> - <div class="modal-footer"> - <a class="btn btn-primary font EditService" ID="Edit" style="margin-top: -24px;">&nbsp;&nbsp;<span class="bold">Update Service</span></a> - <a class="btn btn-primary" data-dismiss="modal" value="Cancel">Cancel</a> - - </div> - </div> - </form> - - </div> - </div> - </div> - -</div> - - - - <br/> - <div class="box-body" style="margin-top: -2%;"> - <table id="ServiceTable" class="table table-bordered table-hover" style="background-color:#fff;font-size:12px;"> - <thead style="background-color:#ddf"> - <tr> - <th>SNo</th> - <th>Requisition No</th> - <th>Item Name</th> - <th>Quantity</th> - <th>UOM</th> - <th>Rate</th> - <th>Basic Amount</th> - <th>Tax Amount</th> - <th>Total Order Amount</th> - <th>Action</th> - </tr> - </thead> - - <tbody id='ServiceAppend'> - <?php - if(!empty($POItem)) - { - $index = 0; - - foreach($POItem as $record) - { - $index = $index + 1; - ?> - <tr id="<?php echo $index ; ?>"> - <td align="left"><?php echo $index ; ?></td> - <td><?php echo $record->ReqNo ?></td> - <td><?php echo $record->MaterialName ?></td> - <td align="right"><?php echo $record->Quantity ?></td> - <td><?php echo $record->UOM ?></td> - <td align="right"><?php echo $record->Rate ?></td> - - <td align="right"><?php echo $record->BasicValue ?></td> - - <td align="right"><?php echo $record->Taxamount ?></td> - <td align="right"><?php echo $record->TotalValue ?></td> - <input type="hidden" name="<?php echo 'Reqnumber'.$index ?>" id="<?php echo 'Reqnumber'.$index ?>" value="<?php echo $record->ReqNo ; ?>" /> - <input type="hidden" name="<?php echo 'departmentName'.$index ?>" id="<?php echo 'departmentName'.$index ?>" value="<?php echo $record->ReqNo ; ?>" /> - <input type="hidden" name="<?php echo 'AvilBudget'.$index ?>" id="<?php echo 'AvilBudget'.$index ?>" value="<?php echo $record->ReqNo ; ?>" /> - <input type="hidden" name="<?php echo 'LineItemNo'.$index ?>" id="<?php echo 'LineItemNo'.$index ?>" value="<?php echo $record->LineItemNo ; ?>" /> - <input type="hidden" name="<?php echo 'costCode'.$index ?>" id="<?php echo 'costCode'.$index ?>" value="<?php echo $record->CostCenterCode ; ?>" /> - <input type="hidden" name="<?php echo 'materialCode'.$index ?>" id="<?php echo 'materialCode'.$index ?>" value="<?php echo $record->MaterialCode ; ?>" /> - <input type="hidden" name="<?php echo 'materialName'.$index ?>" id="<?php echo 'materialName'.$index ?>" value="<?php echo $record->MaterialName ; ?>" /> - <input type="hidden" name="<?php echo 'uom'.$index ?>" id="<?php echo 'uom'.$index ?>" value="<?php echo $record->UOM ; ?>" /> - <input type="hidden" name="<?php echo 'quantity'.$index ?>" id="<?php echo 'quantity'.$index ?>" value="<?php echo $record->Quantity ; ?>" /> - - <input type="hidden" name="<?php echo 'itemRate'.$index ?>" id="<?php echo 'itemRate'.$index ?>" value="<?php echo $record->Rate ; ?>" /> - <input type="hidden" name="<?php echo 'ServiceTax'.$index ?>" id="<?php echo 'ServiceTax'.$index ?>" value="<?php echo $record->ServiceTax ; ?>" /> - <input type="hidden" name="<?php echo 'EduCess'.$index ?>" id="<?php echo 'EduCess'.$index ?>" value="<?php echo $record->EducessTax ; ?>" /> - <input type="hidden" name="<?php echo 'SecHighTax'.$index ?>" id="<?php echo 'SecHighTax'.$index ?>" value="<?php echo $record->SecHigherEducessTax ; ?>" /> - <input type="hidden" name="<?php echo 'KrishiTax'.$index ?>" id="<?php echo 'KrishiTax'.$index ?>" value="<?php echo $record->KrishiKalyantax ; ?>" /> - <input type="hidden" name="<?php echo 'SwachhTax'.$index ?>" id="<?php echo 'SwachhTax'.$index ?>" value="<?php echo $record->SwachhBharattax ; ?>" /> - <input type="hidden" name="<?php echo 'TotalOrderValue'.$index ?>" id="<?php echo 'TotalOrderValue'.$index ?>" value="<?php echo $record->TotalValue ; ?>" /> - <?php - - if($POStatus == PO_DRAFT) - {?> - <td> <a data-target='#EDITSERVICE' data-id="<?php echo $index ; ?>" data-userid="<?php echo $index ; ?>" data-toggle="modal" href="#EDITSERVICE"><i class="fa fa-pencil" data-toggle="tooltip" title="Click here to view/Edit the <?php echo $record->ReqNo ; ?> Requisition details"></i>&nbsp;&nbsp;&nbsp;</a> <a href='#' onclick = "DeleteRow(<?php echo $index ; ?>)" class="link" data-id="<?php echo $index ; ?>" data-userid="<?php echo $index ; ?>" id="Del" ><span class="glyphicon glyphicon-trash"></span></a> - <?php - } else {?> - <td> <a data-toggle="tooltip" href="#"><i class="fa fa-eye" data-toggle="tooltip" title="<?php echo $record->ReqNo; ?> - Click here to view Requistion details"></i>&nbsp;&nbsp;&nbsp;</a> </td> - <?php - }?> - </tr> - <?php - $TotalServiceTax = $TotalServiceTax + $record->ServiceTax; - $TotalEducessTax = $TotalEducessTax + $record->EducessTax; - $TotalSecHigherEducessTax = $TotalSecHigherEducessTax + $record->SecHigherEducessTax; - $TotalKrishiKalyantax = $TotalKrishiKalyantax + $record->KrishiKalyantax; - $TotalSwachhBharattax = $TotalSwachhBharattax + $record->SwachhBharattax; - $TotalSummary = $TotalSummary + $record->TotalValue; - - - $TotalBasicAmount = $TotalBasicAmount + $record->BasicValue; - - } - ?> <input type="hidden" name="txtRowCount" id="txtRowCount" value="<?php echo $index;?>"> - <?php - - } - ?> - </tbody> - </table> - </div> - - - <div class="row" style="border: 1px solid"> - <div class="col-md-12"> - <div class="col-md-4"> - <label>Basic Amount :</label> - <?php - $data = array('name' => 'txtTotBasicAmount','value' => set_value('txtTotBasicAmount',number_format($TotalBasicAmount,2)),'id'=>'txtTotBasicAmount', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - <div class="col-md-4"> - <label>Total Service Tax @14% :</label> - <?php - $data = array('name' => 'txtTotalServiceTax','value' => set_value('txtTotalServiceTax',$TotalServiceTax),'id'=>'txtTotalServiceTax', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - <div class="col-md-4"> - <label >Total Edu. cess @2% on service Tax :</label> - <?php - $data = array('name' => 'txtTotalEducess','value' => set_value('txtTotalEducess',$TotalEducessTax),'id'=>'txtTotalEducess', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - <label >Total Sec. & Higher Edu. cess @1 % on service Tax :</label> - <?php - $data = array('name' => 'txtTotHigherEdu','value' => set_value('txtTotHigherEdu',$TotalSecHigherEducessTax),'id'=>'txtTotHigherEdu', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - <div class="col-md-4"> - <label >Total Krishi Kalyan tax @.5 % on Basic Amount :</label> - <?php - $data = array('name' => 'txtTotalKrishiKalyan','value' => set_value('txtTotalKrishiKalyan',$TotalKrishiKalyantax),'id'=>'txtTotalKrishiKalyan', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - <div class="col-md-4"> - <label >Total Swachh Bharat tax @.5 % on Basic Amount:</label> - <?php - $data = array('name' => 'txtTotSwachhBharat','value' => set_value('txtTotSwachhBharat',$TotalSwachhBharattax),'id'=>'txtTotSwachhBharat', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-6 col-md-offset-6"> - <br/> - <div class="col-md-6" align="right"> <label >Total Order Value :</label></div> - <div class="col-md-6"> - <?php - $data = array('name' => 'txtTotalOrderValueSummary','value' => set_value('txtTotalOrderValueSummary',$TotalSummary),'id'=>'txtTotalOrderValueSummary', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - - </div> - </div> - <div class="col-md-12"> - <div class="col-md-12"> - <label>Comments Of Special Instructions :</label> <?php - $data = array('name' => 'txtSpcialInstruction','value' => set_value('txtSpcialInstruction',$ServiceDescription),'id'=>'txtSpcialInstruction', 'class' => 'form-control', 'rows' => '4', 'cols' => '40' ); - echo form_textarea($data); - ?> <input type="hidden" name="SpcialInstruction" id="SpcialInstruction" value="<?php echo $ServiceDescription;?>"> - </div> - </div> - <div class="col-md-12"> - <div class="row"><br/> - <div align="right" style="padding-right:10px"> - <input type="hidden" name="txtPONO" id="txtPONO" value="<?php echo $PONO; ?>"/> - <input type="hidden" name="txtStatus" id="txtStatus" /> - <input type="hidden" name="txtDeletedRow" id="txtDeletedRow" /> - <?php if($POStatus == PO_DRAFT) {?> - <a class="btn btn-primary Save" ID="Save" onclick="Save(0)" >&nbsp;&nbsp;<span class="bold">Save</span></a> - <a class="btn btn-primary Save" ID="Submit" onclick="Save(1)" >&nbsp;&nbsp;<span class="bold">Submit</span></a> - <input type="reset" class="btn btn-primary" value="Reset"> - <?php }else {?> - <input type="reset" class="btn btn-primary" value = "OK"> <?php } ?> - </div><br/> - </div> - </div> - <br/> - </div><br/> -</div> - -</div> - -</div> -</div></section></div> -<script type="text/html" id="ServiceList"> -<tr id="<%=index%>"> -<td align="left"><%=index%></td> - <td align="left"><%=ReqNo%></td> - - <td align="left"><%=MaterialName%></td> - <td align="left"><%=Quantity%></td> - <td align="left"><%=UOM%></td> - <td align="left"><%=Rate%></td> - <td align="left"><%=BasicAmount%></td> - <td align="left"><%=Taxvalue%></td> - <td align="left"><%=TotalValue%></td> - - <td> - <a data-target='#EDITSERVICE' data-id="<%=index%>" data-userid="<%=index%>" data-toggle="modal" href="#EDITSERVICE"><i class="fa fa-pencil" data-toggle="tooltip" title="Click here to view/Edit the <%=ReqNo%> Requisition details"></i>&nbsp;&nbsp;&nbsp;</a> <a href='#' onclick = "DeleteRow(<%=index%>)" class="link" data-id="<%=index%>" data-userid="<%=index%>" id="Del" ><span class="glyphicon glyphicon-trash"></span></a> - - - </td> -</tr> - -</script> -<script> -var index = $('#txtRowCount').val();; -var userid = ''; - var SelectedMaterialCode = []; - var CollIndex = 0; - var SelectedMaterialList = { - Mat: [] -}; - -$("#EDITSERVICE").on("shown.bs.modal", function(e) { - userid = $(e.relatedTarget).data('userid'); - - var tr= document.getElementById(userid); - var cellval = tr.cells; - var id= $('#Reqnumber'+userid).val(); - - $('#EditReqNo').val($('#Reqnumber'+userid).val()); - $('#EditdeptName').val($('#departmentName'+userid).val()); - $("#EditCostCenter").val($('#costCode'+userid).val()); - $('#EditAvlBudAmt').val($('#AvilBudget'+userid).val()); - - $('#EditItemName').val($('#materialName'+userid).val()); - $('#EditUOM').val($('#uom'+userid).val()); - $('#EditQuantity').val($('#quantity'+userid).val()); - RequistQuantity = $('#quantity'+userid).val(); - $('#EditRate').val($('#itemRate'+userid).val()); - $('#txtEditBasicValue').val(cellval[6].innerHTML); - $('#EditAfterServiceTax').val($('#ServiceTax'+userid).val()); - $('#EditAfterEduCess').val($('#EduCess'+userid).val()); - $('#EditAfterSecHighTax').val($('#SecHighTax'+userid).val()); - $('#EditAfterKrishiTax').val($('#KrishiTax'+userid).val()); - $('#EditAfterSwachhTax').val($('#SwachhTax'+userid).val()); - $('#EditTotalOrderValue').val(cellval[8].innerHTML); - - RequistQuantity = $('#quantity'+userid).val(); - - - - $("#EditMaterialCode").empty(); - var Material = <?php echo json_encode($MaterialList, JSON_PRETTY_PRINT) ?>; - // For Binding Material list center for the selected Requistion Number - - $("#EditMaterialCode").append( $('<option></option>').val($('#materialCode'+userid).val()).html($('#materialCode'+userid).val() + "-" + $('#materialName'+userid).val() ) ); - - var isAdded = "0"; - for(i=0;i<Material.length;i++) - { - $.each(Material[i], function(idx, obj) { - - if(obj.ReqNo === id ) - { - - $.each(SelectedMaterialList.Mat, function(idx1, el){ - if (id == el.ReqNo ) - { - - if(el.materialCode == obj.MaterialCode) - { - - isAdded = "1"; - return false; - } - else - { - isAdded = "0"; - } - - } - - - }); - - - if(isAdded == "0") - { - - $("#EditMaterialCode").append( $('<option></option>').val(obj.MaterialCode).html(obj.MaterialCode + "-" + obj.MaterialName)); - } - - } - - - }); - } - -}); - -$('.AddService').click(function(){ - - - if(validateServiceTax()) - { - // alert('inside Addservice'); - var temp = parseInt(index) + 1; - var Reqnumber = $('#ReqNo').val(); - var departmentName = $('#deptName').val(); - var AvilBudget = $('#AvlBudAmt').val(); - var costCode = $('#CostCenter').val(); - var materialCode =$('#MaterialCode').val(); - var materialName = $("#ItemName").val(); - var uom = $("#UOM").val(); - var quantity = $("#Quantity").val(); - var itemRate = $("#Rate").val(); - - - var AfterServiceTax = $("#AfterServiceTax").val(); - - - var AfterEduCess = $("#AfterEduCess").val(); - - - var AfterSecHighTax = $("#AfterSecHighTax").val(); - - - var AfterKrishiTax = $("#AfterKrishiTax").val(); - - - var AfterSwachhTax = $("#AfterSwachhTax").val(); - - var TotalOrderValue = $("#TotalOrderValue ").val(); - - - var basicval = $("#txtBasicValue").val(); - - - var TotalTaxValue = calculateTaxValue(); - - $('#MaterialCode option[value='+materialCode+']').remove(); - SelectedMaterialCode[CollIndex] = materialCode; - CollIndex = CollIndex + 1; - - SelectedMaterialList.Mat.push({ - "materialCode" : materialCode, - "ReqNo" : Reqnumber, - - }); - populateValueMainFormForServiceTax(); - - - index = parseInt(index)+1; - - var template = jQuery("#ServiceList").html(); - - - $('#ServiceAppend').append(_.template(template,{index:temp,ReqNo:Reqnumber,MaterialName:materialName,Quantity:quantity,UOM:uom,Rate:itemRate,BasicAmount:basicval,Taxvalue:TotalTaxValue,TotalValue:TotalOrderValue})); - - - - var theForm = $(".ServicePO"); - - addHidden(theForm,"Reqnumber"+temp,Reqnumber ); - addHidden(theForm,"departmentName"+temp,departmentName ); - addHidden(theForm,"AvilBudget"+temp,AvilBudget ); - addHidden(theForm,"costCode"+temp,costCode ); - addHidden(theForm,"materialCode"+temp,materialCode ); - addHidden(theForm,"materialName"+temp,materialName ); - addHidden(theForm,"uom"+temp,uom); - addHidden(theForm,"quantity"+temp,quantity); - addHidden(theForm,"itemRate"+temp,itemRate); - - addHidden(theForm,"ServiceTax"+temp,AfterServiceTax); - addHidden(theForm,"EduCess"+temp,AfterEduCess); - addHidden(theForm,"SecHighTax"+temp,AfterSecHighTax); - addHidden(theForm,"KrishiTax"+temp,AfterKrishiTax); - addHidden(theForm,"SwachhTax"+temp,AfterSwachhTax); - - addHidden(theForm,"TotalOrderValue"+temp,TotalOrderValue); - - $('#txtRowCount').val(temp); - clearServiceModalFields(); - } - - }); - - $('.EditService').click(function(){ - - - if( validateEditServiceTax()) - { - // alert('inside Add'); - var CostCode = $("#EditCostCenter").val(); - var AvilBudget = $('#EditAvlBudAmt').val(); - var editMaterialCode = $("#EditMaterialCode").val(); - var editDescription = $("#EditItemName").val(); - var editUOM = $('#EditUOM').val(); - var editQuantity = $('#EditQuantity').val(); - - var itemRate = $("#EditRate").val(); - - - var AfterServiceTax = $("#EditAfterServiceTax").val(); - - - var AfterEduCess = $("#EditAfterEduCess").val(); - - - var AfterSecHighTax = $("#EditAfterSecHighTax").val(); - - - var AfterKrishiTax = $("#EditAfterKrishiTax").val(); - - - var AfterSwachhTax = $("#EditAfterSwachhTax").val(); - - var TotalOrderValue = $("#EditTotalOrderValue ").val(); - - - var basicval = $("#txtEditBasicValue").val(); - - var TotalTaxValue = calculateEditTaxValue(); - - - - var tr= document.getElementById(userid); - var cellval = tr.cells; - - cellval[2].innerHTML = editDescription; - cellval[3].innerHTML = editQuantity; - cellval[4].innerHTML =editUOM; - cellval[5].innerHTML =itemRate; - cellval[6].innerHTML =basicval; - cellval[7].innerHTML =TotalTaxValue; - cellval[8].innerHTML =TotalOrderValue; - - - $('#materialCode'+userid).val(editMaterialCode); - $('#materialName'+userid).val(editDescription); - $('#uom'+userid).val(editUOM); - $('#CostCode'+userid).val(CostCode); - $('#quantity'+userid).val(editQuantity); - $('#itemRate'+userid).val(itemRate); - $('#ServiceTax'+userid).val(AfterServiceTax); - $('#EduCess'+userid).val(AfterEduCess); - $('#SecHighTax'+userid).val(AfterSecHighTax); - $('#KrishiTax'+userid).val(AfterKrishiTax); - $('#SwachhTax'+userid).val(AfterSwachhTax); - $('#TotalOrderValue'+userid).val(TotalOrderValue); - populateValueMainFormForEditServiceTax(); - } - - }); - function addHidden(theForm, key, value) { - // Create a hidden input element, and append it to the form: - var input = document.createElement('input'); - input.type = 'hidden'; - input.name = key;'name-as-seen-at-the-server'; - input.id = key;'name-as-seen-at-the-server'; - input.value = value; - theForm.append(input); -} - -function populateValueMainFormForServiceTax() -{ - var AfterServiceTax = $('#AfterServiceTax').val() == '' ? '0.00' : $('#AfterServiceTax').val(); - var AfterEduCess = $('#AfterEduCess').val() == '' ? '0.00' : $('#AfterEduCess').val(); - var AfterSecHighTax = $('#AfterSecHighTax').val() == '' ? '0.00' : $('#AfterSecHighTax').val(); - var AfterKrishiTax = $('#AfterKrishiTax').val() == '' ? '0.00' : $('#AfterKrishiTax').val(); - var AfterSwachhTax = $('#AfterSwachhTax').val() == '' ? '0.00' : $('#AfterSwachhTax').val(); - var TotalVal = $('#TotalOrderValue ').val() == '' ? '0.00' : $('#TotalOrderValue').val(); - - var BasicVal = $('#txtBasicValue').val() == '' ? '0.00' : $('#txtBasicValue').val(); - - - var TotalOrderValueSummary = $('#txtTotalOrderValueSummary').val() == '' ? '0.00' : $('#txtTotalOrderValueSummary').val(); - - var totBasicAmt = $('#txtTotBasicAmount').val() == '' ? '0.00' : $('#txtTotBasicAmount').val(); - totBasicAmt = Number(totBasicAmt.replace(/[^0-9\.]+/g,"")); - - var TotalServiceTax = $('#txtTotalServiceTax').val() == '' ? '0.00' : $('#txtTotalServiceTax').val(); - var TotHigherEdu = $('#txtTotHigherEdu').val() == '' ? '0.00' : $('#txtTotHigherEdu').val(); - var TotalEducess = $('#txtTotalEducess').val() == '' ? '0.00' : $('#txtTotalEducess').val(); - var TotalKrishiKalyan = $('#txtTotalKrishiKalyan').val() == '' ? '0.00' : $('#txtTotalKrishiKalyan').val(); - var TotSwachhBharat = $('#txtTotSwachhBharat').val() == '' ? '0.00' : $('#txtTotSwachhBharat').val(); - - - $('#txtTotBasicAmount').val((parseFloat(totBasicAmt) + parseFloat(BasicVal)).toFixed(2) ); - $('#txtTotalServiceTax').val((parseFloat(TotalServiceTax) + parseFloat(AfterServiceTax)).toFixed(2) ); - $('#txtTotHigherEdu').val((parseFloat(TotHigherEdu) + parseFloat(AfterSecHighTax)).toFixed(2) ); - $('#txtTotalEducess').val((parseFloat(TotalEducess) + parseFloat(AfterEduCess)).toFixed(2) ); - $('#txtTotalKrishiKalyan').val((parseFloat(TotalKrishiKalyan) + parseFloat(AfterKrishiTax)).toFixed(2) ); - $('#txtTotSwachhBharat').val((parseFloat(TotSwachhBharat) + parseFloat(AfterSwachhTax)).toFixed(2) ); - $('#txtTotalOrderValueSummary').val((parseFloat(TotalOrderValueSummary) + parseFloat(TotalVal)).toFixed(2) ); - -} -function populateValueMainFormForEditServiceTax() -{ - - var rows = document.getElementById('serviceTax').rows.length; - - var TotServiceTax = 0; - var TotEduCess = 0; - var TotSecHighTax = 0; - var TotKrishiTax = 0; - var TotSwachhTax = 0; - var TotSummary = 0; - var TotBasicAmout = 0; - var i = 0; - do { - i += 1; - var tr= document.getElementById(i); - //alert(tr); - if(tr != null) - { - cells = tr.getElementsByTagName('td'); - - - var rowid = cells[0].innerHTML; - - var AfterServiceTax = $('#ServiceTax'+rowid).val() == '' ? '0.00' : $('#ServiceTax'+rowid).val(); - var AfterEduCess = $('#EduCess'+rowid).val() == '' ? '0.00' : $('#EduCess'+rowid).val(); - var AfterSecHighTax = $('#SecHighTax'+rowid).val() == '' ? '0.00' : $('#SecHighTax'+rowid).val(); - var AfterKrishiTax =$('#KrishiTax'+rowid).val() == '' ? '0.00' : $('#KrishiTax'+rowid).val(); - var AfterSwachhTax = $('#SwachhTax'+rowid).val() == '' ? '0.00' : $('#SwachhTax'+rowid).val(); - var TotalVal =$('#TotalOrderValue'+rowid).val() == '' ? '0.00' : $('#TotalOrderValue'+rowid).val(); - - var Quantity = $('#quantity'+rowid).val() == '' ? '0.00' : $('#quantity'+rowid).val(); - var ItemRate = $('#itemRate'+rowid).val() == '' ? '0.00' : $('#itemRate'+rowid).val(); - var BasicVal = parseFloat(Quantity) * parseFloat(ItemRate); - - TotServiceTax = parseFloat(TotServiceTax) + parseFloat(AfterServiceTax); - TotEduCess = parseFloat(TotEduCess) + parseFloat(AfterEduCess); - TotSecHighTax = parseFloat(TotSecHighTax) + parseFloat(AfterSecHighTax); - TotKrishiTax = parseFloat(TotKrishiTax) + parseFloat(AfterKrishiTax); - TotSwachhTax = parseFloat(TotSwachhTax) + parseFloat(AfterSwachhTax); - TotSummary = parseFloat(TotSummary) + parseFloat(TotalVal); - TotBasicAmout = parseFloat(TotBasicAmout) + parseFloat(BasicVal); - - } - - - } while (i < rows); - - $('#txtTotBasicAmount').val(parseFloat(TotBasicAmout).toFixed(2) ); - $('#txtTotalServiceTax').val(parseFloat(TotServiceTax).toFixed(2) ); - $('#txtTotHigherEdu').val(parseFloat(TotSecHighTax).toFixed(2) ); - $('#txtTotalEducess').val(parseFloat(TotEduCess).toFixed(2) ); - $('#txtTotalKrishiKalyan').val(parseFloat(TotKrishiTax).toFixed(2) ); - $('#txtTotSwachhBharat').val(parseFloat(TotSwachhTax).toFixed(2) ); - $('#txtTotalOrderValueSummary').val(parseFloat(TotSummary).toFixed(2) ); - -} -function calculateEditTaxValue() - { - var ServiceTaxAmount = parseFloat($('#EditAfterServiceTax').val()); - var EduCessTaxAmount = parseFloat($('#EditAfterEduCess').val()); - var SecHighTaxAmount = parseFloat($('#EditAfterSecHighTax').val()); - var KrishiTaxAmount = parseFloat($('#EditAfterKrishiTax').val()); - var SwachhTaxAmount = parseFloat($('#EditAfterSwachhTax').val()); - - var TottaxAmt = ServiceTaxAmount+ EduCessTaxAmount + SecHighTaxAmount+ KrishiTaxAmount + SwachhTaxAmount; - return parseFloat(TottaxAmt.toFixed(2)); - } -function clearServiceModalFields() -{ - // To reset the Modal controls - $('#ReqNo').val('0'); - $('#deptName').val(''); - $('#CostCenter').val("0"); - $('#AvlBudAmt').val(''); - $('#MaterialCode').val("0") ; - $("#ItemName").val(''); - $('#UOM').val(''); - $('#Quantity').val(''); - $("#Rate").val(''); - - $("#txtBasicValue").val(''); - $("#AfterServiceTax").val(''); - $("#AfterEduCess").val(''); - $("#AfterSecHighTax").val(''); - $("#AfterKrishiTax").val(''); - $("#AfterSwachhTax").val(''); - $("#TotalOrderValue ").val(''); -} -var DeletedMaterialCode=''; -var DeletedMaterialName=''; -function DeleteRow(rowid) -{ - var id = []; - var DelRows = $('#txtDeletedRow').val(); - - var tr = document.getElementById(rowid); - - var MaterialCode = $('#materialCode'+rowid).val(); - var LineItemNo =$('#LineItemNo'+rowid).val(); - var ReqNo =$('#Reqnumber'+rowid).val(); - var POType ='<?php echo SERVICE ?>'; - id[0]= LineItemNo; - id[1]= ReqNo; - id[2]= MaterialCode; - id[3]= POType; - - var answer = confirm(" Do you want to delete the Item from the List?") - if (answer) - { - - tr.parentNode.removeChild(tr); - - var removeItem = $('#materialCode'+rowid).val(); - - var materialCode = $('#materialCode'+rowid).val(); - - - var removeItem = $('#materialCode'+rowid).val(); - var Material = <?php echo json_encode($MaterialList, JSON_PRETTY_PRINT) ?>; - for(i=0;i<Material.length;i++) - { - $.each(Material[i], function (index, value) { - - - if (value.MaterialCode==materialCode) { - - - // $("#MaterialCode").append( $('<option></option>').val(value.MaterialCode).html(value.MaterialCode + "-" + value.MaterialName) ); - DeletedMaterialCode = $('#materialCode'+rowid).val(); - DeletedMaterialName = $('#materialName'+rowid).val(); - } -}); -} - - - SelectedMaterialCode.splice( SelectedMaterialCode.indexOf('removeItem'), 1 ); - var x = <?php echo json_encode($POItem, JSON_PRETTY_PRINT) ?>; - - var result = '0'; - $.each(x, function(idx, obj) { - - if(obj.LineItemNo === LineItemNo) - { - result = '1'; - return false; - } - - }); - - // alert(result); - if(result == '0') - { - var DelRows = $('#txtDeletedRow').val(); - //tr.parentNode.removeChild(tr); - if(DelRows != '') - { - DelRows = DelRows + ":" + rowid; - } - else - { - DelRows= "0" + ":" + rowid; - } - $('#txtDeletedRow').val(DelRows); - } - // To delete the value from Tables - else if(result == '1') - { - var DelRows = $('#txtDeletedRow').val(); - //tr.parentNode.removeChild(tr); - if(DelRows != '') - { - DelRows = DelRows + ":" + rowid; - } - else - { - DelRows= "0" + ":" + rowid; - } - $('#txtDeletedRow').val(DelRows); - - $.ajax({ - data:{id:id}, - type:"POST", - url:"<?php echo base_url() ?>purchaseorder/DeletePODetails", - success:function(data) { - if(data) - { - $('#content').loader('hide'); - alert(data); - } - else - { - alert("Error"); - } - - }}); - } - - populateValueMainFormForDeleteItem(rowid); - - } - -} -function populateValueMainFormForDeleteItem(rowid) -{ - - - //alert(rowid); - var TotServiceTax = $('#txtTotalServiceTax').val(); - var TotEduCess = $('#txtTotalEducess').val(); - var TotSecHighTax = $('#txtTotHigherEdu').val(); - var TotKrishiTax = $('#txtTotalKrishiKalyan').val(); - var TotSwachhTax = $('#txtTotSwachhBharat').val(); - var TotSummary = $('#TotalOrderValue').val(); - var TotBasicAmout = $('#txtTotBasicAmount').val(); - - - - var AfterServiceTax = $('#ServiceTax'+rowid).val() == '' ? '0.00' : $('#ServiceTax'+rowid).val(); - var AfterEduCess = $('#EduCess'+rowid).val() == '' ? '0.00' : $('#EduCess'+rowid).val(); - var AfterSecHighTax = $('#SecHighTax'+rowid).val() == '' ? '0.00' : $('#SecHighTax'+rowid).val(); - var AfterKrishiTax =$('#KrishiTax'+rowid).val() == '' ? '0.00' : $('#KrishiTax'+rowid).val(); - var AfterSwachhTax = $('#SwachhTax'+rowid).val() == '' ? '0.00' : $('#SwachhTax'+rowid).val(); - var TotalVal =$('#TotalOrderValue'+rowid).val() == '' ? '0.00' : $('#TotalOrderValue'+rowid).val(); - - var Quantity = $('#quantity'+rowid).val() == '' ? '0.00' : $('#quantity'+rowid).val(); - var ItemRate = $('#itemRate'+rowid).val() == '' ? '0.00' : $('#itemRate'+rowid).val(); - var BasicVal = parseFloat(Quantity) * parseFloat(ItemRate); - // alert(BasicVal); - //alert(TotalVal); - - - TotServiceTax = parseFloat(TotServiceTax) - parseFloat(AfterServiceTax); - TotEduCess = parseFloat(TotEduCess) - parseFloat(AfterEduCess); - TotSecHighTax = parseFloat(TotSecHighTax) - parseFloat(AfterSecHighTax); - TotKrishiTax = parseFloat(TotKrishiTax) - parseFloat(AfterKrishiTax); - TotSwachhTax = parseFloat(TotSwachhTax) - parseFloat(AfterSwachhTax); - TotSummary = parseFloat(TotBasicAmout) - parseFloat(TotalVal); - TotBasicAmout = parseFloat(TotBasicAmout) - parseFloat(BasicVal); - - - - $('#txtTotBasicAmount').val(parseFloat(TotBasicAmout).toFixed(2) ); - $('#txtTotalServiceTax').val(parseFloat(TotServiceTax).toFixed(2) ); - $('#txtTotHigherEdu').val(parseFloat(TotSecHighTax).toFixed(2) ); - $('#txtTotalEducess').val(parseFloat(TotEduCess).toFixed(2) ); - $('#txtTotalKrishiKalyan').val(parseFloat(TotKrishiTax).toFixed(2) ); - $('#txtTotSwachhBharat').val(parseFloat(TotSwachhTax).toFixed(2) ); - $('#txtTotalOrderValueSummary').val(parseFloat(TotSummary).toFixed(2) ); - - - -} -function validateServiceTax() - { - - if($('#ReqNo').val() == "0") - { - alert('Please select the Requisition Number'); - $('#ReqNo').focus(); - return false; - } - else if($('#CostCenter').val() == "0") - { - alert('Please select the Cost center'); - $('#CostCenter').focus(); - return false; - } - else if($('#MaterialCode').val() == "0") - { - alert('Please select the Material Code'); - $('#MaterialCode').focus(); - return false; - } - else if($('#Quantity').val() == '') - { - alert('Please Enter the Quantity value'); - $('#Quantity').focus(); - return false; - } - else if($('#Rate').val() == '') - { - alert('Please Enter the Rate of the Item'); - $('#Rate').focus(); - return false; - } - else if(ExceedQuantityCheck() == false) - { - return false; - } - else if(ExceedBudget($('#TotalOrderValue').val(),$('#AvlBudAmt').val()) == false) - { - $('#Rate').focus(); - return false; - } - else - { - return true; - } - - } - function validateEditServiceTax() - { - - if($('#EditCostCenter').val() == "0") - { - alert('Please select the Cost center'); - $('#EditCostCenter').focus(); - return false; - } - else if($('#EditMaterialCode').val() == "0") - { - alert('Please select the Material Code'); - $('#EditMaterialCode').focus(); - return false; - } - else if($('#EditQuantity').val() == '') - { - alert('Please Enter the Quantity value'); - $('#EditQuantity').focus(); - return false; - } - else if($('#EditRate').val() == '') - { - alert('Please Enter the Rate of the Item'); - $('#EditRate').focus(); - return false; - } - else if(EditExceedQuantityCheck() == false) - { - return false; - } - else if(ExceedBudget($('#EditTotalOrderValue').val(),$('#EditAvlBudAmt').val()) == false) - { - $('#EditRate').focus(); - return false; - } - else - { - return true; - } - - } -// -</script> -<script> - -function Save(status) -{ -if(status == '0') -{ - stat = '<?php echo PO_DRAFT; ?>'; -} -else -{ - stat = '<?php echo PO_CREATED; ?>'; -} -var splinstr = $('#txtSpcialInstruction').val(); -var deladd = $('#DeliveryAddr').val(); -$('#txtStatus').val(stat); - - -$('#SpcialInstruction').val(splinstr); -$('#txtDeliveryAddress').val(deladd); - - if(validate()) - { - if(document.getElementById('ServiceTable').rows.length < 2) - { - alert('Please Select Line item to Create PO'); - $('#Deliverydt').focus(); - return false; - } - else - { - $('#content').loader('show'); - $.ajax({ - data:$('.ServicePO').serialize(), - type:"POST", - url:"<?php echo base_url() ?>servicepurchaseorder/UpdateServicePurchaseOrder", - success:function(data) { - if(data) - { - $('#content').loader('hide'); - alert(data); - $('#txtRowCount').val(''); - $('#txtDeletedRow').val(''); - $('#txtStatus').val(''); - $('#SpcialInstruction').val(''); - $('#txtDeliveryAddress').val('') - window.location = "purchaseorderListing"; - - } - else - { - $('#content').loader('hide'); - alert("Error"); - } - - } - -}); - } - -} -} -// this function is used to clear data changing schedule option -$('#Scheduleby').change(function(){ - - $("#Deliverydt").datepicker({ - minDate : 'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true,yearRange: '0:+10' - }); - - }); - $('#Deliverydt').change(function(){ - - $('#Scheduleby').val(''); - - }); - - -</script> diff --git a/application/views/Mainpage.php b/application/views/Mainpage.php deleted file mode 100644 index 421e6518..00000000 --- a/application/views/Mainpage.php +++ /dev/null @@ -1,27 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <?php - foreach($css_files as $file): ?> - <link type="text/css" rel="stylesheet" href="<?php echo $file; ?>" /> - <?php endforeach; ?> - <?php foreach($js_files as $file): ?> - <script src="<?php echo $file; ?>"></script> - <?php endforeach; ?> - -</head> - -<body> - - <div id="wrapper"> - <div class="col-md-10 col-md-offset-2" > - <!--<?php echo $output; ?>--> - </div> - </div> - -</body> - -</html> - diff --git a/application/views/POlist.php b/application/views/POlist.php deleted file mode 100644 index db4b9681..00000000 --- a/application/views/POlist.php +++ /dev/null @@ -1,113 +0,0 @@ -<!-- In this purchase order listing , datatable is used for sorting , pagination and etc.. , new design is used for table fro the theme--> - -<style> - .pagination { - margin:0px !important; - } - -</style> - <div class="content-wrapper"> - <!-- Content Header (Page header) --> - - <!-- Main content --> - <section class="content"> - <div class="row"> - <div class="col-xs-12"> - <div class="box"> - <div class="box-header"> - <center><h3 class="box-title">Siddharth Industries - Purchase Order List</h3></center> - </div> - <!-- /.box-header --> - <div class="box-body"> - <table id="example1" class="table table-bordered table-hover editableTable"> - <thead> - <tr bgcolor="LightSlateGray "> - <th>#</th> - <th>PONO#</th> - <th>PO Type</th> - <th>PO Date</th> - <th>Supplier Name</th> - <th>Total Order Value</th> - <th>PO Status</th> - <th>Delivery Option</th> - <th>Delivery Date</th> - <th>Delivery Schedule</th> - <th>Action</th> - </tr> - </thead> - <tbody><?php - if(!empty($POData)) - { - $index = 0; - foreach($POData as $record) - { - $index = $index + 1; - ?> - <tr id="<?php echo $index ; ?>"> - <td align="left"><?php echo $index ; ?></td> - <td><?php echo $record->PONO ?></td> - <td><?php echo $record->ReqType ?></td> - <td align="right"><?php $Pdt = new DateTime($record->PODate); - $PODate = $Pdt->format('d-m-Y'); - echo $PODate - ?></td> - <td><?php echo $record->SupplierName ?></td> - <td align="right"><?php echo $record->TotalOrderValue ?></td> - - <td><?php echo $record->StatusName ?></td> - <td><?php $option = 'By Deliver Date'; - if($record->DeliveryOption == 1){ - $option = "By Schedule" ; } - echo $option ?></td> - <td align="right"><?php - $Ddt = new DateTime($record->DeliveryDate); - $Deliverydt = $Ddt->format('d-m-Y'); - - if($record->DeliveryOption == 1){$Deliverydt = '';} - echo $Deliverydt ?></td> - <td><?php echo $record->DeliverySchedule ?></td> - - <?php $statusCode = $record->StatusCode; - - if($statusCode == PO_DRAFT) - {?> - <td> <a data-toggle="tooltip" href="<?php echo base_url().'EditPO?PONO='.$record->PONO.'&ReqType='.$record->ReqType; ?>" ><i class="fa fa-pencil" data-toggle="tooltip" title="<?php echo $record->PONO; ?> - Click here to Edit Purchase Order details"></i>&nbsp;&nbsp;&nbsp;</a> </td> - <?php - } else {?> - <td> <a data-toggle="tooltip" href="<?php echo base_url().'EditPO?PONO='.$record->PONO.'&ReqType='.$record->ReqType; ?>"><i class="fa fa-eye" data-toggle="tooltip" title="<?php echo $record->PONO; ?> - Click here to view Purchase Order details"></i>&nbsp;&nbsp;&nbsp;</a> &nbsp;&nbsp;&nbsp; <a data-toggle="tooltip" href="<?php echo base_url().'purchaseorder/CreatePOPrint?PONO='.$record->PONO.'&ReqType='.$record->ReqType; ?>"><i class="fa fa-print" data-toggle="tooltip" title="<?php echo $record->PONO; ?> - Click here to Print the Purchase Order details"></i>&nbsp;&nbsp;&nbsp;</a> </td> -<?php - }?> - </tr> - <?php - } - } - ?> - </tbody> - - </table> - </div> - <!-- /.box-body --> - </div> - <!-- /.box --> - - </div> - <!-- /.col --> - </div> - <!-- /.row --> - </section> - <!-- /.content --> - </div> - <!-- /.content-wrapper --> - <script> - $(function () { - - $('#example1').DataTable({ - "paging": true, - "lengthChange": true, - "searching": true, - "ordering": true, - "info": true, - "autoWidth": false - }); - }); -</script> \ No newline at end of file diff --git a/application/views/ViewPurchaseOrder.php b/application/views/ViewPurchaseOrder.php deleted file mode 100644 index e69de29b..00000000 diff --git a/application/views/access.php b/application/views/access.php deleted file mode 100644 index ea49534b..00000000 --- a/application/views/access.php +++ /dev/null @@ -1,15 +0,0 @@ -<div class="content-wrapper"> - <section class="content-header"> - <h1> - Access Denied - <small>You are not authorize user to use this</small> - </h1> - </section> - <section class="content"> - <div class="row"> - <div class="col-xs-12 text-center"> - <img src="<?php echo base_url() ?>assets/images/access.png" alt="Access Denied Image" /> - </div> - </div> - </section> -</div> \ No newline at end of file diff --git a/application/views/addCostCenter.php b/application/views/addCostCenter.php deleted file mode 100644 index 14bc59e3..00000000 --- a/application/views/addCostCenter.php +++ /dev/null @@ -1,774 +0,0 @@ -<script> -$(function() { - var d = new Date(); - - var month = d.getMonth(); - var day = d.getDate(); - var year = d.getFullYear() ; - var SIAStartYear = year - 2015; - var mindt = year-70; - var maxdt = year-15; - - - $("#AddYear").datepicker({ - minDate : new Date(year-SIAStartYear,1,1), - maxDate :new Date(year+3,1,1), - dateFormat: 'yy', changeYear: true, - -}); - $("#EditYear").datepicker({ - minDate : new Date(year-SIAStartYear,1,1), - maxDate :new Date(year+3,1,1), - dateFormat: 'yy', changeYear: true, - - -}); - - //$('#selectDistriList').multiSelect(); -}); -</script> -<style> -.ui-datepicker-month { - display: none; - } - .ui-datepicker-prev{ - display: none; - } - .ui-datepicker-next{ - display: none; - } -</style> -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - <center>Siddharth Industries - Add Cost List</center> - </h1> - </section> - <section class="content"> - <div style="text-align:right;"> - <a href="<?php echo base_url() ?>costListing" class="btn btn-info" value="Back">Back</a> - </div> - <br> - <div class="row"> - <!-- left column --> - <div class="col-md-12"> - <div class="box box-primary"> - - <!-- form start --> - <?php - $attributes = array('class' => 'form-label-left addCost ','name' => 'addCost','id' => 'addCost'); - - echo form_open($this->config->base_url().'addNewcost/',$attributes); ?> - - <div class="box-body"> - <div class="row"> - <div class="col-md-12"> - <div class="col-md-6"> - <div class="form-group"> - <label for="CostName">Cost Center Code:</label><font color="Red">*</font> - - <div class="form-group"> - <?php - $data = array('name' => 'CostCode','value' => set_value('CostCode'),'id'=>'CostCode', 'class' => 'form-control' ,'required' => 'true','style'=>'text-transform:uppercase;','maxlength'=>'5' ); - echo form_input($data); - ?> - </div> - </div> - </div> - - - <div class="col-md-6"> - <div class="form-group"> - <label for="Description">Cost Center Name:</label><font color="Red">*</font> - <div class="form-group"> - <?php - $data = array('name' => 'CostName','value' => set_value('CostName'),'id'=>'CostName', 'class' => 'form-control' ,'required' => 'true','style'=>'text-transform:uppercase;','maxlength'=>'20'); - echo form_input($data); - ?> - </div> - </div> - </div> - </div> - <div class="row"> - <div class="col-md-12"> - <div class="col-md-6"> - <div class="col-md-4"> - <label>Department</label> - <div> - <?php - - $options = array("0"=>'Select Department'); - //print_r( $options); - - if(!empty($Department)) - { - foreach ($Department as $SID): - - - $options[$SID->DEPCode] = $SID->DEPCode.' '.' - '.' '.$SID->DepartmentName; - - endforeach; - } - echo form_multiselect('distriList', $options,set_value('distriList'),'id="distriList"' ,'class="form-control required"','required="true"'); - - ?> - </div> - </div> - <div class="col-md-4"> - <center> - <a style="color:white" href="javascript:void(0);" id="addPop"><button type="button" style="margin: 30px 0px 0px 15px;" class="btn btn-info">Add</button></a><br> - <a style="color:white" href="javascript:void(0);" id="removePop"><button type="button" style="margin: 10px 0px 0px 15px;" class="btn btn-info">Remove</button></a><br> - - </center> - </div> - <div class="col-md-4"> - <b>&nbsp;</b> - - <?php - $option["0"] = 'Selected Department'; - echo form_multiselect('selectDistriList[]', $option,set_value('selectDistriList[]'),'id="selectDistriList"','size="10"'); - - ?> - </div> - </div> - <div class="col-md-6" style=" padding-right: 31px;"> - - <div class="form-group"> - <label for="CostName">Approved By:</label><font color="Red">*</font> - - <div class="form-group"> - <?php - - $options = array("-1"=>'Select Approver'); - //print_r( $options); - - if(!empty($Approver)) - { - foreach ($Approver as $SID): - - - $options[$SID->EmpID] = $SID->EmpID . " - " . $SID->FirstName . " - " . $SID->Designation; - - endforeach; - } - - echo form_dropdown('ApprovedBy',$options,set_value('ApprovedBy'),'id="ApprovedBy"', 'class = "form-control "'); ?> - - - </div> - </div> - </div> - </div> - - </div> - </div> - <br> -<div col="row"> - <div style="text-align:right"> - <a data-toggle="modal" href="#addbudgetmodel" style="margin-right: 10px;" class="btn btn-info"><i class="fa fa-plus"></i>&nbsp;&nbsp;Add Budget</a> - - - <!-- Modal --> - <div class="modal fade" id="addbudgetmodel" tabindex="-1" role="dialog" - aria-labelledby="myModalLabel" aria-hidden="true"> - <div class="modal-dialog"> - <div class="modal-content"> - <!-- Modal Header --> - <div class="modal-header"> - <button type="button" class="close" - data-dismiss="modal"> - <span aria-hidden="true">&times;</span> - <span class="sr-only">Close</span> - </button> - <h4 class="modal-title" id="myModalLabel"> - <center> Add Budget</center> - </h4> - </div> - - <!-- Modal Body --> - <div class="modal-body"> - - <form class="form-horizontal" role="form"> - <div class="form-group"> - <div class="row"> - <div class="col-md-3 col-md-offset-2"> - Budget Type : - </div> - <div class="col-md-5"> - - <?php - - $options = array("-1"=>'Select Budget Type'); - //print_r( $options); - - if(!empty($BudgetType)) - { - foreach ($BudgetType as $SID): - - - $options[$SID->ConfigValue] = $SID->ConfigValue; - - endforeach; - } - - echo form_dropdown('Addbudget',$options,set_value('Addbudget'),'id="Addbudget"', 'class = "form-control "'); ?> - - </div> - </div> - </div> - - <div class="form-group"> - <div class="row"> - <div class="col-md-3 col-md-offset-2"> - Budget Year : - </div> - <div class="col-md-5"> - - <input class="form-control" name="AddYear" class="form-control datepicker" id="AddYear" onkeypress="return false;" type="text"> - - </div> - </div> - </div> - <div class="form-group"> - <div class="row"> - <div class="col-md-3 col-md-offset-2"> - Budget Amount : - </div> - <div class="col-md-5"> - - <input class="form-control" onkeypress="return isNumberKey(event);" name="AddAmout" class="form-control" id="AddAmout" type="text"> - - </div> - </div> - </div> - <div class="form-group"> - <div class="row"> - <div class="col-md-3 col-md-offset-2"> - Remarks : - </div> - <div class="col-md-5"> - - <input class="form-control" name="AddRemarks" class="form-control" id="AddRemarks" type="text"> - </div> - </div> - </div> - </form> - </div> - - <!-- Modal Footer --> - <div class="modal-footer"> - <a class="btn btn-info font tempClick" ID="tempClick" style="margin-top: -24px;"><i class="fa fa-plus"></i>&nbsp;&nbsp;<span class="bold">Add</span></a> - <a class="btn btn-info" data-dismiss="modal" style="margin-top: -24px;" value="Cancel">cancel</a> - </div> - </div> - </div> - </div> - </div> -</div><br> - - <div class="row"> - <div class="col-md-12"> - <div class="table-responsive"> - <table id="BudgetTable" class="table table-striped responsive-utilities jambo_table" > - <thead style="background-color: #CFCFCF;"> - - <th>Budget Type</th> - <th>Budget Year</th> - <th>Budget Amount</th> - <th>Remarks</th> - <th>Action</th> - </thead> - <tbody id="tempAppend"> - </tbody> - - </table> - - <!-- Modal For edit --> - <div class="modal fade" id="Edit" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> - <div class="modal-dialog"> - <div class="modal-content"> - <!-- Modal Header --> - <div class="modal-header"> - <button type="button" class="close" - data-dismiss="modal"> - <span aria-hidden="true">&times;</span> - <span class="sr-only">Close</span> - </button> - <h4 class="modal-title" id="myModalLabel"> - <center> Edit Budget</center> - </h4> - </div> - <!-- Modal Body --> - <div class="modal-body"> - - <form class="form-horizontal" role="form"> - <div class="form-group"> - <div class="row"> - <div class="col-md-3 col-md-offset-2"> - Budget Type : - </div> - <div class="col-md-5"> - <?php - $data = array('name' => 'Editbudget', 'value' => set_value('Editbudget'),'id'=>'Editbudget', 'class' => 'form-control','readonly'=>'true'); - echo form_input($data); - ?> - - - </div> - </div> - </div> - - <div class="form-group"> - <div class="row"> - <div class="col-md-3 col-md-offset-2"> - Budget Year : - </div> - <div class="col-md-5"> - <?php - $data = array('name' => 'EditYear', 'value' => set_value('EditYear'),'id'=>'EditYear', 'class' => 'form-control','onkeypress'=>'return isNumberKey(event);','onkeypress'=>'return false;'); - echo form_input($data); - ?> - - - </div> - </div> - </div> - <div class="form-group"> - <div class="row"> - <div class="col-md-3 col-md-offset-2"> - Budget Amount : - </div> - <div class="col-md-5"> - <?php - $data = array('name' => 'EditAmout', 'value' => set_value('EditAmout'),'id'=>'EditAmout', 'class' => 'form-control','onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - - - </div> - </div> - </div> - <div class="form-group"> - <div class="row"> - <div class="col-md-3 col-md-offset-2"> - Remarks : - </div> - <div class="col-md-5"> - <?php - $data = array('name' => 'EditRemarks', 'value' => set_value('EditRemarks'),'id'=>'EditRemarks', 'class' => 'form-control'); - echo form_input($data); - ?> - - </div> - </div> - </div> - </form> - </div> - <!-- Modal Footer --> - <div class="modal-footer"> - <a class="btn btn-info font tempClickEdit" ID="tempClickEdit" style="margin-top: -24px;"><i class="fa fa-plus"></i>&nbsp;&nbsp;<span class="bold">Edit</span></a> - <a class="btn btn-info" data-dismiss="modal" style="margin-top: -24px;" value="Cancel">cancel</a> - </div> - </div> - </div> - </div> - </div> - </div> - </div> - - <div id="content"></div> - <div class="box-footer" style="text-align:right"> - <input type="hidden" name="txtSelectedDepartment" id="txtSelectedDepartment" /> - <input type="hidden" name="txtRowCount" id="txtRowCount" /> - <input type="submit" class="btn btn-info" value="Submit" /> - <!-- <input type="reset" class="btn btn-info" value="Cancel" />--> - <a href="<?php echo base_url() ?>costListing" class="btn btn-info" id="cancel" value="Cancel">Cancel</a> - </div> - - - </div> - </form> - </div> - </div> - <div class="col-md-4"> - <?php - $this->load->helper('form'); - $error = $this->session->flashdata('error'); - if($error) - { - ?> - <div class="alert alert-danger alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('error'); ?> - </div> - <?php } ?> - <?php - $success = $this->session->flashdata('success'); - if($success) - { - ?> - <div class="alert alert-success alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('success'); ?> - </div> - <?php } ?> - - <div class="row"> - <div class="col-md-12"> - <?php echo validation_errors('<div class="alert alert-danger alert-dismissable">', ' <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button></div>'); ?> - </div> - </div> - </div> - </div> - </section> - -</div> -<script type="text/html" id="tempList"> -<tr id="<%=index%>"> - -<?php - $data = array('name' => '"Budget[<%=index%>][index]"', 'value' => set_value('<%=index%>'),'id'=>'"Budget[<%=index%>][index]"', 'class' => 'form-control','type'=>'hidden'); - echo form_input($data); - ?> - - <td align="left"><%=BudgetType%></td> - - <td align="left"><%=BudgetYear%></td> - - <td align="left"><%=BudgetAmount%></td> - - <td align="left"><%=Remarks%></td> - <td> - <a data-target='#Edit' data-id="<%=index%>" data-userid="<%=index%>" data-toggle="modal" href="#Edit"><i class="fa fa-pencil" data-toggle="tooltip" title="Click here to view/Edit the <%=BudgetType%> Budget details"></i>&nbsp;&nbsp;&nbsp;</a> - - - </td> -</tr> -</script> -<script> -var index = '1'; -var numbers = /^[0-9]+$/; -var userid = ''; - -$("#Edit").on("shown.bs.modal", function(e) { - userid = $(e.relatedTarget).data('userid'); - - $('#Editbudget').val($('#BudgetTable tr:eq('+ userid +') td:eq(0)').text()); - $('#EditYear').val($('#BudgetTable tr:eq('+ userid +') td:eq(1)').text()); - $('#EditAmout').val($('#BudgetTable tr:eq('+ userid +') td:eq(2)').text()); - $('#EditRemarks').val($('#BudgetTable tr:eq('+ userid +') td:eq(3)').text()); -}); - - - $('.tempClick').click(function(){ - - if ($("#Addbudget option:selected").val() =='-1' ) - { - alert('Please Select the Budget Type '); - //return; - } - - if(document.getElementById('AddYear').value == '' ) - { - alert('Please Enter the Budget Year'); - //return; - } - if(document.getElementById('AddAmout').value == '' ) - { - alert('Please Enter the Budget Amount'); - // return; - } - - - if ($("#Addbudget option:selected").val() !='-1' && $('#AddYear').val() && $('#AddAmout').val() ) - { - - $('#BudgetTable').show(); - var temp = index; - var BudType = $("#Addbudget option:selected").val(); - var BudYear = $("#AddYear").val(); - var BudAmount = $("#AddAmout").val(); - $('#Addbudget option[value='+BudType+']').remove(); - var BudRemarks = $('#AddRemarks').val(); - $('#AddYear').val(''); - $('#AddAmout').val(''); - $('#AddRemarks').val(''); - - - index = parseInt(index)+1; - - - - var template = jQuery("#tempList").html(); - - - $('#tempAppend').append(_.template(template,{index:temp,BudgetType:BudType,BudgetYear:BudYear,BudgetAmount:BudAmount,Remarks:BudRemarks})); - - - var theForm = $(".addCost"); - - addHidden(theForm,"BudgetType"+temp,BudType); - addHidden(theForm,"BudgetYear"+temp,BudYear); - addHidden(theForm,"BudgetAmount"+temp,BudAmount); - addHidden(theForm,"Remarks"+temp,BudRemarks); - - $('#txtRowCount').val(temp); - - CountRows(); - } - else - { - alert('Please enter all the values'); - - } - - }); - - function addHidden(theForm, key, value) { - // Create a hidden input element, and append it to the form: - var input = document.createElement('input'); - input.type = 'hidden'; - input.name = key;'name-as-seen-at-the-server'; - input.value = value; - theForm.append(input); -} - - -$('.tempClickEdit').click(function(){ - - - - if(document.getElementById('EditYear').value == '' ) - { - alert('Please Enter the Budget Year'); - //return; - } - if(document.getElementById('EditAmout').value == '' ) - { - alert('Please Enter the Budget Amount'); - // return; - } - - - if ( $('#EditAmout').val() != '' && $('#EditYear').val() != '' ) - { - - var temp = index; - var BudYear = $("#EditYear").val(); - var BudAmount = $("#EditAmout").val(); - - var BudRemarks = $('#EditRemarks').val(); - - - $('#BudgetTable tr:eq('+ userid +') td:eq(1)').text(BudYear); - $('#BudgetTable tr:eq('+ userid +') td:eq(2)').text(BudAmount); - $('#BudgetTable tr:eq('+ userid +') td:eq(3)').text(BudRemarks); - - $('#BudgetYear'+userid).val(BudYear); - $('#BudgetAmount'+userid).val(BudAmount); - $('#Remarks'+userid).val(BudRemarks); - - - - } - else - { - alert('Please enter all the values'); - - } - - }); - - - - function ConfirmDelete() -{ - var x = confirm("Are you sure you want to delete?"); - if (x) - return true; - else - return false; -} - - function isNumberKey(evt) - { - var charCode = (evt.which) ? evt.which : evt.keyCode; - if (charCode != 46 && charCode > 31 - && (charCode < 48 || charCode > 57)) - return false; - - return true; - } - - - function Rowcount() - { - var rowCount = $('#BudgetTable').length; - if(rowCount=='4') - { - $("#addbudgetmodel").modal('hide'); - - } - else - { - - $("#addbudgetmodel").modal('show'); - } - - } - - - var totalRowCount = 0; - var rowCount = 0; - var table = document.getElementById("BudgetTable"); - var rows = table.getElementsByTagName("tr"); - -function CountRows() { - totalRowCount = 0; - rowCount = 0; - table = document.getElementById("BudgetTable"); - rows = table.getElementsByTagName("tr") - for (var i = 0; i < rows.length; i++) { - totalRowCount++; - if (rows[i].getElementsByTagName("td").length > 0) { - rowCount++; - } - } - - - var message = "Total Row Count: " + totalRowCount; - message += "\nRow Count: " + rowCount; - //alert(message); - if(totalRowCount>"4") - { - $("#addbudgetmodel").modal('hide'); - } - else - { - return false; - } - - } - - - -</script> - - <script> - - $('#addPop').click(function () { - if ($('#distriList option:selected').val() != null) { - var tempSelect = $('#distriList option:selected').val(); - var tempText = $('#distriList option:selected').text(); - - var o = new Option(tempText,tempSelect); - var hidval = tempSelect; - var orgVal = $('#txtSelectedDepartment').val(); - var Selectedval = '' - - if(orgVal != '') - { - Selectedval = orgVal + ':' + hidval; - } - else - { - Selectedval = hidval - } - $('#txtSelectedDepartment').val(Selectedval); - - $(o).html(tempText); - $("#selectDistriList").append(o); - - - $('#distriList option:selected').remove(); - $("#distriList").attr('selectedIndex', '-1').find("option:selected").removeAttr("selected"); - $("#selectDistriList").attr('selectedIndex', '-1').find("option:selected").removeAttr("selected"); - - tempSelect = ''; - tempText = ''; - Selectedval = ''; - } else { - alert("Before add please select any position."); - } - }); - - $('#removePop').click(function () { - if ($('#selectDistriList option:selected').val() != null) { - - Selectedval =''; - $('#txtSelectedDepartment').val(Selectedval); - - var tempSelect = $('#selectDistriList option:selected').val(); - $('#selectDistriList option:selected').remove().appendTo('#distriList'); - $("#selectDistriList").attr('selectedIndex', '-1').find("option:selected").removeAttr("selected"); - $("#distriList").attr('selectedIndex', '-1').find("option:selected").removeAttr("selected"); - - $("#distriList").val(tempSelect); - tempSelect = ''; - } else { - alert("Before remove please select any position."); - } - }); - - var baseurl = "<?php print base_url(); ?>"; - $(".addCost").submit(function(e) { - - e.preventDefault(); - if(validate()) - { - $('#content').loader('show'); - $.ajax({ - data:$('.addCost').serialize(), - type:"POST", - url:"<?php echo base_url() ?>CostCenter/addNewcost", - success:function(data) { - if(data) - { - $('#content').loader('hide'); - alert(data); - $('#txtSelectedDepartment').val(''); - $('#txtRowCount').val(''); - - window.location = baseurl + 'CostCenter/CostListing'; - - } - else - { - alert("Error"); - } - - } - }); - } - - }); - - -function validate() -{ - - - if($("#txtSelectedDepartment").val().length < 1) - { - alert('Please Select Department'); - return false; - } - else if($("#txtRowCount").val().length < 1) - { - alert('Please Add Budget'); - return false; - } - else if($("option:selected", $("#ApprovedBy")).val() == '-1') - { - alert('Please Select Approver Names'); - return false; - } - else - { - return true; - } - - -} - </script> \ No newline at end of file diff --git a/application/views/addMontly.php b/application/views/addMontly.php deleted file mode 100644 index 5a0665e7..00000000 --- a/application/views/addMontly.php +++ /dev/null @@ -1,178 +0,0 @@ -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - <center>Employee Monthly payment</center> - - </h1> - - </section> - - <section class="content"> - <div style="text-align:right;"> - <a href="<?php echo base_url() ?>" class="btn btn-info" value="Back">Back</a> - </div> - <br> - - <div class="row"> - <!-- left column --> - <div class="col-md-12"> - - - <div class="box box-primary"> - - <!-- form start --> - <form role="form" id="addemployee" action="<?php echo base_url() ?>monthlypay/AddNewmonthly" method="post" enctype="multipart/form-data"> - - - <div class="box-body"> - <div class="row"> - - <div class="col-md-6"> - <div class="form-group"> - <label for="month_year">Month Year:</label><font color="Red">*</font> - - <div class="form-group"> - <?php - $data = array('name' => 'month_year','value' => set_value('month_year'), 'class' => 'form-control' ,'required' => 'true'); - - echo form_input($data); - - - ?> - </div> - </div> - </div> - - - <div class="col-md-6"> - <div class="form-group"> - <label for="emp_id">Employee ID</label><font color="Red">*</font> - - <div class="form-group"> - <?php - - $options = array("-1"=>'Select Employee'); - //print_r( $options); - - if(!empty($emp_id)) - { - foreach ($Approver as $SID): - - - $options[$SID->EmpID] = $SID->EmpID . " - " . $SID->FirstName . " - " . $SID->Designation; - - endforeach; - } - - echo form_dropdown('emp_id',$options,set_value('emp_id'),'id="emp_id"', 'class = "form-control "'); ?> - - - </div> - </div> - </div> - - <div class="col-md-6"> - <div class="form-group"> - <label for="LOP_days">LOP Days</label><font color="Red">*</font> - <div class="form-group"> - <?php - $data = array('name' => 'LOP_days','value' => set_value('LOP_days'), 'class' => 'form-control' ,'required' => 'true'); - echo form_input($data); - ?> - </div> - </div> - - </div> - - - - <div class="col-md-6"> - <div class="form-group"> - <label for="OT_Hrs_Worked">OT Hrs Worked:</label><font color="Red">*</font> - - <div class="form-group"> - <?php - $data = array('name' => 'OT_Hrs_Worked','value' => set_value('OT_Hrs_Worked'), 'class' => 'form-control' ,'required' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - </div> - <div class="row"> - - <div class="col-md-6"> - <div class="form-group"> - <label for="Loan_Recovered">Loan Recovered:</label> - <div class="form-group"> - <?php - $data = array('name' => 'Loan_Recovered','value' => set_value('Loan_Recovered'), 'class' => 'form-control' ); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-6"> - <div class="form-group"> - <label for="Loan_Balance">Loan Balance:</label> - <div class="form-group"> - <?php - $data = array('name' => 'Loan_Balance','value' => set_value('Loan_Balance'), 'class' => 'form-control'); - echo form_input($data); - ?> - </div> - </div> - </div> - </div> - - - <div class="row"> - - <div class="col-md-6"> - <div class="form-group"> - <label for="Incentives">Incentives:</label><font color="Red">*</font> - - <div class="form-group"> - <?php - $data = array('name' => 'Incentives','value' => set_value('Incentives'), 'class' => 'form-control' ,'required' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - - - <div class="col-md-6"> - <div class="form-group"> - <label for="Other_Deductions">Other Deductions:</label><font color="Red">*</font> - <div class="form-group"> - <?php - $data = array('name' => 'Other_Deductions','value' => set_value('Other_Deductions'), 'class' => 'form-control' ,'required' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - - </div> - - - - - <div id="content"> - <div class="box-footer" style="text-align:right"> - - - <input type="submit" class="btn btn-info" value="Submit" /> - <input type="reset" class="btn btn-info" value="Cancel" /> - </div> - - - - - </div> - - - </section> - </div> diff --git a/application/views/addNew.php b/application/views/addNew.php deleted file mode 100644 index 173ab00c..00000000 --- a/application/views/addNew.php +++ /dev/null @@ -1,232 +0,0 @@ -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - <center>User Management</center> - - </h1> - - </section> - - <section class="content"> - <div style="text-align:right;"> - <a href="<?php echo base_url() ?>userListing" class="btn btn-info" value="Back"/>Back</a> - </div> - <br/> - <div class="row"> - <!-- left column --> - <div class="col-md-12"> - <!-- general form elements --> - - - - <div class="box box-primary"> - <div class="box-header"> - <center><h3 class="box-title">Siddharth Industries - Add New User</h3></center> - </div><!-- /.box-header --> - <!-- form start --> - - <form role="form" id="addUser" action="<?php echo base_url() ?>addNewUser" method="post" role="form"> - <div class="box-body"> - <div class="row"> - <div class="col-md-3"> - <div class="form-group"> - <label for="fname">Emp ID</label> - <select class="form-control required select" id="EmpList" name="EmpList"> - <option value="0">Select Emp ID</option> - - <?php - if(!empty($EmpList)) - { - foreach ($EmpList as $EID) - { - - $EmpID = $EID->EmpID; - - if ($_POST['EmpList'] == $EmpID) - { - - echo "<option value=\"".$EmpID."\" selected=\"selected\">".$EmpID.' - '. $EID->FirstName."</option>"; - } - else - { - echo "<option value=\"".$EmpID."\">".$EmpID.' - '. $EID->FirstName ."</option>"; - } - } - } - ?> - </select> - </div> - - </div> - <div class="col-md-3"> - <div class="form-group"> - <label for="fname">First Name</label> - <input type="text" class="form-control required" readonly id="FirstName" name="FirstName" maxlength="128"> - </div> - - </div> - <div class="col-md-3"> - <div class="form-group"> - <label for="fname">Last Name</label> - <input type="text" class="form-control required" readonly id="LastName" name="LastName" maxlength="128"> - </div> - - </div> - <div class="col-md-3"> - <div class="form-group"> - <label for="email">Designation</label> - <input type="text" class="form-control required " readonly id="Designation" name="Designation" maxlength="128"> - </div> - </div> - </div> - - <div class="row"> - - <div class="col-md-3"> - <div class="form-group"> - <label for="mobile">Department</label> - <input type="text" class="form-control required " readonly id="Department" name="Department" minlength="10"maxlength="10"> - </div> - </div> - <div class="col-md-3"> - <div class="form-group"> - <label for="email">Email address</label> - <input type="text" class="form-control required " readonly id="MailID" name="MailID" maxlength="128"> - </div> - </div> - <div class="col-md-3"> - <div class="form-group"> - <label for="mobile">Contact Number</label> - <input type="text" class="form-control required digits" readonly id="ContactNo" name="ContactNo" minlength="10"maxlength="10"> - </div> - </div> - - - </div> - <div class="row"> - - - </div> - - <div class="row"> - <div class="col-md-3"> - <div class="form-group"> - <label for="role">Role</label> - <select class="form-control required" id="role" name="role"> - <option value="0">Select Role</option> - <?php - if(!empty($roles)) - { - foreach ($roles as $rl) - { - ?> - <option value="<?php echo $rl->roleId ?>"><?php echo $rl->role ?></option> - <?php - } - } - ?> - </select> - </div> - </div> - <div class="col-md-3"> - <div class="form-group"> - <label for="password">Password</label> - <input type="password" class="form-control required" id="password" required name="password" maxlength="10"> - </div> - </div> - <div class="col-md-3"> - <div class="form-group"> - <label for="cpassword">Confirm Password</label> - <input type="password" class="form-control required equalTo" required id="cpassword" name="cpassword" maxlength="10"> - </div> - </div> - </div> - - </div><!-- /.box-body --> - - <div class="box-footer" style="text-align:right"> - <input type="submit" class="btn btn-info" value="Submit" /> - <input type="reset" class="btn btn-info" value="Cancel" /> - </div> - </form> - </div> - </div> - <div class="col-md-4"> - <?php - $this->load->helper('form'); - $error = $this->session->flashdata('error'); - if($error) - { - ?> - <div class="alert alert-danger alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('error'); ?> - </div> - <?php } ?> - <?php - $success = $this->session->flashdata('success'); - if($success) - { - ?> - <div class="alert alert-success alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('success'); ?> - </div> - <?php } ?> - - <div class="row"> - <div class="col-md-12"> - <?php echo validation_errors('<div class="alert alert-danger alert-dismissable">', ' <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button></div>'); ?> - </div> - </div> - </div> - </div> - </section> - -</div> -<script src="<?php echo base_url(); ?>assets/js/addUser.js" type="text/javascript"></script> - -<script> -$('#EmpList').select2(); -$('#EmpList').change(function() { - - var id = $('#EmpList').val(); - - var y = <?php echo json_encode($EmpList, JSON_PRETTY_PRINT) ?>; - - - - if(id != "0") - { - - - $.each(y, function(idx, obj) { - if(obj.EmpID === id) - { - $("#FirstName").val(obj.FirstName); - $("#LastName").val(obj.LastName); - - $("#Designation").val(obj.Designation); - $("#Department").val(obj.DepartmentName); - $("#MailID").val(obj.EmailId); - $("#ContactNo").val(obj.ContactNumber); - } - - }); - } -else -{ - alert('Please select Employee Details'); - $("#FirstName").val(''); - $("#LastName").val(''); - - $("#Designation").val(''); - $("#Department").val(''); - $("#MailID").val(''); - $("#ContactNo").val(''); - return false; -} - -}); -</script> \ No newline at end of file diff --git a/application/views/addPO.php b/application/views/addPO.php deleted file mode 100644 index cd6291e7..00000000 --- a/application/views/addPO.php +++ /dev/null @@ -1,1184 +0,0 @@ - - -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <center> - <h1><b>Purchase Order</b> </h1> - </center> - - - </section> - - <section class="content"> - <div style="text-align:right;"> - <a href="<?php echo base_url() ?>purchaseorderListing" class="btn btn-info" value="Back"/>Back</a> - </div> - <br/> - <div class="row"> - <!-- left column --> - <div class="col-md-12"> - <!-- general form elements --> - - - - <div class="box box-primary"> - <div class="box-header"> - <!--<center> - <h3 class="box-title">Purchase Order</h3> - </center> - </div><!-- /.box-header --> - <!-- form start --> - <?php - $attributes = array('class' => 'form-label-left addPO ','name' => 'addPO','id' => 'addPO'); - - echo form_open($this->config->base_url().'/purchaseorder/addPO/',$attributes); ?> - - <div class="box-body"> - <div class="row"> - <div class="col-md-6"> - <div class="form-group"> - <label for="PO_Type">Purchase Order Type</label>&nbsp;&nbsp;<font color="Red">*</font> - </div> - <div class="form-control"> - <?php - $options = array("0"=>'Select Purchase Order Type'); - //print_r( $options); - - if(!empty($POType)) - { - foreach ($POType as $PO): - - $options[$PO->ConfigValue] = $PO->ConfigValue; - - endforeach; - } - - echo form_dropdown('PO_Type', $options,set_value('PO_Type'),'id="PO_Type"' ,'class="form-control"','required="true"'); - - ?> - - </div> - - - - - - </div> - <div class="col-md-6"> - <div class="form-group"> - <label for="Departure_Date"> Purchase Order Date</label> - </div> - <div class="form-group"> - <?php - $data = array('name' => 'PO_Date', 'value' => set_value('PO_Date'),'id'=>'PO_Date', 'class' => 'form-control datePicker','required'=>'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="row"> - <div class="col-md-6"> - <div class="form-group"> - <label for="SupplierID">Supplier Name</label> &nbsp;&nbsp;<font color="Red">*</font> - <div class="form-control"> - <?php - $options = array("0"=>'Select Supplier'); - //print_r( $options); - - if(!empty($POType)) - { - foreach ($SupplierName as $SID): - - - $options[$SID->SupplierID] = $SID->SupplierID.' '.' - '.' '.$SID->SupplierName; - - endforeach; - } - - echo form_dropdown('SupplierID', $options,set_value('SupplierID'),'id="SupplierID"' ,'class = "form-control required"','required="true"'); - - ?> - - </div> - </div> - </div> - <div class="col-md-6"> - <div class="form-group"> - <label for="SupplierAddress">Supplier's Address</label> - </div> - <div class="form-group"> - <?php - $data = array('name' => 'SupplierAddress','value' => set_value('SupplierAddress'),'id'=>'SupplierAddress', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - </div> - - </div> - <div class="row"> - <div class="col-md-6"> - <div class="form-group"> - <label for="role">Requested By</label> &nbsp;&nbsp;<font color="Red">*</font> - </div> - <div class="form-control"> - <?php - $options = array("0"=>'Select Requested By'); - //print_r( $options); - - if(!empty($users)) - { - foreach ($users as $UID): - - - $options[$UID->userId] = $UID->userId.' '.'-'.' '.$UID->name; - - endforeach; - } - - echo form_dropdown('role', $options,set_value('role'),'id="role"','class = "form-control "','required="true"'); - - ?> - - </div> - </div> - - <div class="col-md-6 "> - <div class="form-group"> - <label for="re_email" >Requester Email</label> - </div> - <div class="form-group"> -<?php - $data = array('name' => 're_email', 'value' => set_value('re_email'),'id'=>'re_email', 'class' => 'form-control email', 'onchange'=>'validateEmail()'); - echo form_input($data); - ?> - - - </div> - </div> - - </div> - <div class="row"> - <div class="col-md-6 "> - <div class="form-group"> - <label for="re_phone">Requesters Phone</label> &nbsp;&nbsp;<font color="Red">*</font> - </div> - <div class="form-group"> - <?php - $data = array('name' => 're_phone','value' => set_value('re_phone'), 'class' => 'form-control required re_phone','onkeypress'=>'return event.charCode >= 48 && event.charCode <= 57', 'maxlength' => '12', 'id'=>'re_phone','required'=>'true'); - echo form_input($data); - ?> - - - - </div> - </div> - <div class="col-md-6"> - <div class="form-group"> - <label for="Departure_Date"> Requested Date</label> <font color="Red">*</font> - </div> - <div class="form-group"> - <?php - $data = array('name' => 're_Date', 'value' => set_value('re_Date'),'id'=>'re_Date', 'class' => 'form-control datePicker chechDate re_Date','required'=>'true'); - echo form_input($data); - ?> </div> - </div> - - </div> - <div class="row"> - <div class="col-md-6"> - <div class="form-group"> - <label for="bud_manager">Budget Manager</label> &nbsp;&nbsp;<font color="Red">*</font> - </div> - <div class="form-control"> - <?php - $options = array("0"=>'Select Budget Manager'); - //print_r( $options); - - if(!empty($EmpList)) - { - foreach ($EmpList as $EID): - - $options[$EID->EmpID] = $EID->EmpID .' - '.$EID->FirstName.' '.','.' '.$EID->LastName; - - endforeach; - } - - echo form_dropdown('BudgetManager', $options,set_value('BudgetManager'),'id="BudgetManager"','class = "form-control "','required="true"','onchange="SelectedDepartment()"'); - - - - ?> - - </div> - </div> - - <div class="col-md-6"> - <div class="form-group"> - <label for="bud_manager_de">Budget Manager Department</label> - </div> - <div class="form-group"> - <?php - $data = array('name' => 'BudgetManagerDepartment', 'value' => set_value('BudgetManagerDepartment'),'id'=>'BudgetManagerDepartment','class' => 'form-control ', 'readonly'=>'true'); - echo form_input($data); - ?> - - </div> - </div> - - </div> - <div class="row"> - <div class="col-md-6"> - <div class="form-group"> - <label for="Pur_category">Purchasing Category</label></div> - <div class="form-control"> - <?php - $options = array("0"=>'Select Purchase Order Type'); - //print_r( $options); - - if(!empty($PurchasingCategory)) - { - foreach ($PurchasingCategory as $PC): - - $options[$PC->ConfigValue] = $PC->ConfigValue; - - endforeach; - } - - echo form_dropdown('Pur_category',$options,set_value('Pur_category'),'id="Pur_category"', 'class = "form-control "'); - - ?> - - </div> - - </div> - <div class="col-md-6"> - <div class="form-group"> - <label for="SpecialOrder">Special Requirement of order</label> - </div> - <div class="form-group"> - <?php - $data = array('name' => 'SpecialOrder','value' => set_value('SpecialOrder'),'id'=>'SpecialOrder', 'class' => 'form-control ', 'required'=>'true','maxlength'=>'500'); - echo form_input($data); - ?> - - - </div> - </div> - </div> - <div > - <div class="form-group"> - <label for="Justification">Justification for the Purchase</label> - </div> - <div class="form-group"> - <?php - $data = array('name' => 'Justification', 'value' => set_value('Justification'),'id'=>'Justification', 'class' => 'form-control ', 'required'=>'false','maxlength'=>'4000'); - echo form_input($data); - ?> - - </div> - </div> - - </div> - </div> - - <div> - - <div class="col-md-12" ><b><u>Purchase Order Line Item : </u><b> </div> - <div class="col-xs-10 col-md-12"> - <div > - - <div class="col-md-2 col-md-offset-10" style="padding-bottom:1%"> - <a data-toggle="modal" href="#myModal1" class="btn btn-primary"><i class="fa fa-plus"></i>Add PO Line Item</a> - </div> - <div class="modal fade" id="myModal1" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> - <div class="modal-dialog"> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> - <h4 class="modal-title" align="Center"><b>Add Purchase Order Line Item</b></h4> - </div> - <div class="modal-body"> - <!--<form role="form" action="<?php echo base_url() ?>purchaseorder/addNewPOLineItem" method="post" id="AddPOLineItem" role="form"> --> - <div class="box-body"> - <div class="row"> - <div > - - <div class="form-group"> - <label for="ProductDescription" text-align="right">Product Description</label><font color="Red">*</font> - </div> - <div class="form-group"> - <?php - $options = array("1"=>'Select Product Description'); - //print_r( $options); - - if(!empty($RawMaterials)) - { - foreach ($RawMaterials as $RID): - $options[$RID->MaterialCode] = $RID->MaterialCode.' '.'-'.' '.$RID->MaterialName; - - - endforeach; - } - echo form_dropdown('ProductDescription',$options,set_value('ProductDescription'),'id="ProductDescription"', 'class = "form-control "'); - - - ?> - - </div> - </div> - - </div> - <div class="row"> - <div > - <div class="form-group"> - <label for="UOM">UOM</label> <font color="Red">*</font> </div> - <div class="form-group"> - <?php - $options = array("1"=>'Select UOM'); - //print_r( $options); - - if(!empty($UOM)) - { - foreach ($UOM as $UID): - $options[$UID->ConfigValue] = $UID->ConfigValue; - - - endforeach; - } - echo form_dropdown('UOM',$options,set_value('UOM'),'id="UOM"', 'class = "form-control "'); - - - ?> - - </div> - </div> - </div> - - <div class="row"> - <div > -<div class="form-group"> - <label for="Quantity">Quantity</label> <font color="Red">*</font> - </div> - <div class="form-group"> - <?php - $data = array('name' => 'Quantity', 'value' => set_value('Quantity'),'id'=>'Quantity', 'class' => 'form-control required digits', 'onchange'=>'change()','required'=>'true','onkeypress'=>'return isNumberKey(event)'); - echo form_input($data); - ?> - - - </div> - </div> - </div> - - <div class="row"> - <div > - <div class="form-group"> - <label for="UnitPrice">Unit Price</label> <font color="Red">*</font> - </div> - <div class="form-group"> - <?php - $data = array('name' => 'UnitPrice', 'value' => set_value('UnitPrice'),'id'=>'UnitPrice', 'class' => 'form-control required digits', 'onchange'=>'change()','required'=>'true','onkeypress'=>'return isNumberKey(event)'); - echo form_input($data); - ?> - - - </div> - - </div> - </div> - <div class="row"> - <div > - <div > - <div class="form-group"> - <label for="ProductPrice">Product Price</label> - </div> - <div class="form-group"> - <?php - $data = array('name' => 'ProductPrice', 'value' => set_value('ProductPrice'),'id'=>'ProductPrice', 'class' => 'form-control required digits','disabled'=>'true'); - echo form_input($data); - ?> - - - </div> - - </div> - </div> - - - <!-- </form>--> - </div> - <div class="modal-footer"> - - <a class="btn btn-primary font tempClick" ID="tempClick" style="margin-top: -24px;"><i class="fa fa-plus"></i>&nbsp;&nbsp;<span class="bold">Add</span></a> - - </div> - </div><!-- /.modal-content --> - </div><!-- /.modal-dialog --> - </div><!-- /.modal --> - </div> - </div> - <div class="x_content ajaxList"> - <!-- accepted payments column --> - - <!-- /.col --> - <div class="col-xs-12"> - - <div class="table-responsive"> - <table id="POList" class="table table-striped responsive-utilities jambo_table" style="display:none;"> - <thead> - <tr> - <th>SNo</th> - <th>ProductDescription</th> - <th>UOM</th> - <th>Quantity</th> - <th>UnitPrice</th> - <th>ProductPrice</th> - </tr> - </thead> - <tbody id="tempAppend"> - - </tbody> - - </table> - </div> - </div> - <!-- /.col --> - - - </div> - </div> - </div> - </div> - - - <div class="col-md-12" style="border:1px solid #000"> - <br/> - <div class="row"> - <div class="col-md-6 "> - <label for="Basic_Value">Basic Value : </label> <font color="Red">*</font> - </div> - <div class="col-md-3 ">&nbsp;</div> - - <div class="col-md-3 "> - - <?php - $data = array('name' => 'BasicValue', 'value' => set_value('BasicValue'), 'id'=>'BasicValue', 'class' => 'form-control required digits','readonly'=>'true'); - echo form_input($data); - ?> - - </div> - </div> - <br/> - <div class="row"> - <div class="col-md-6 "> - <label for="Discount_Value">Discount : </label> &nbsp;&nbsp;<font color="Red">*</font> - </div> - - - <div class="col-md-3 "> - <?php - $options = array("1"=>'Select Discount Type',"Percentage"=>'Percentage',"Lump some"=>'Lump some',"Nil"=>'Nil'); - //print_r( $options); - - - echo form_dropdown('DiscountType',$options,set_value('DiscountType'),'id="DiscountType"', 'class = "form-control "'); - - - ?> - - </div> - <div class="col-md-3 "> - <?php - $data = array('name' => 'txtDiscount','value' => set_value('txtDiscount'), 'id'=>'txtDiscount', 'class' => 'form-control required digits','onkeypress'=>'return isNumberKey(event)','onchange'=>'calculateDiscount()'); - echo form_input($data); - ?> - - - </div> - </div> - <br/> - <div class="row"> - <div class="col-md-6 "> - <label for="AfterDiscount_Value">After Discount : </label> - </div> - <div class="col-md-3 ">&nbsp;</div> - <div class="col-md-3 "> - <div class="form-group"> -<?php - $data = array('name' => 'AfterDiscount','value' => set_value('AfterDiscount'), 'id'=>'AfterDiscount', 'class' => 'form-control required digits','readonly'=>'true'); - echo form_input($data); - ?> - - </div> - </div> - </div> - <br/> - <div class="row"> - - <div class="col-md-6 "> - <label for="Packaging">Packaging : </label> &nbsp;&nbsp;<font color="Red">*</font> - </div> - <div class="col-md-3 "> - -<?php - $options = array("1"=>'Select Packaging Type',"Percentage"=>'Percentage',"Lump some"=>'Lump some',"Nil"=>'Nil'); - //print_r( $options); - - - echo form_dropdown('PackagingType',$options,set_value('PackagingType'),'id="PackagingType"', 'class = "form-control "','onchange="SelectPackagingType()"'); - - - ?> - - - </div> - <div class="col-md-3 "> - -<?php - $data = array('name' => 'txtPackaging','value' => set_value('txtPackaging'), 'id'=>'txtPackaging', 'class' => 'form-control required digits','onkeypress'=>'return isNumberKey(event)','onchange'=>'calculatePackaging()'); - echo form_input($data); - ?> - - </div> - - </div> -<br/> - <div class="row"> - <div class="col-md-6 "> - <label for="AfterPackaging">After Packaging : </label> - </div> - <div class="col-md-3 ">&nbsp;</div> - <div class="col-md-3 "> - <div class="form-group"> - <?php - $data = array('name' => 'AfterPackaging','value' => set_value('AfterPackaging'), 'id'=>'AfterPackaging', 'class' => 'form-control required digits','readonly'=>'true'); - echo form_input($data); - ?> - - </div> - </div> - </div> - <br/> - <div class="row"> - <div class="col-md-6 "> - <label for="ExciseDuty">Excise duty @ 12.5% : </label> - </div> - <div class="col-md-3 ">&nbsp;</div> - <div class="col-md-3 "> - <div class="form-group"> - <?php - $data = array('name' => 'Exciseduty','value' => set_value('Exciseduty'), 'id'=>'Exciseduty', 'class' => 'form-control required digits','onkeypress'=>'return isNumberKey(event)','onchange'=>'calculateExeciseDuty()'); - echo form_input($data); - ?> - - </div> - </div> - </div> - <br/> - <div class="row"> - <div class="col-md-6 "> - <label for="AfterExciseDuty">After Excise duty : </label> - </div> - <div class="col-md-3 ">&nbsp;</div> - <div class="col-md-3 "> - <div class="form-group"> -<?php - $data = array('name' => 'AferExciseduty', 'value' => set_value('AferExciseduty'),'id'=>'AferExciseduty', 'class' => 'form-control required digits','readonly'=>'true'); - echo form_input($data); - ?> - - </div> - </div> - </div> - <br/> - <div class="row"> - <div class="col-md-6 "> - <label for="Vat">Vat : </label> <font color="Red">*</font> - </div> - <div class="col-md-3 ">&nbsp;</div> - <div class="col-md-3 "> - <div class="form-group"> -<?php - $data = array('name' => 'txtVat','value' => set_value('txtVat'), 'id'=>'txtVat', 'class' => 'form-control required digits','onkeypress'=>'return isNumberKey(event)','onchange'=>'calculateVat()'); - echo form_input($data); - ?> - - </div> - </div> - </div> - <br/> - <div class="row"> - <div class="col-md-6 "> - <label for="AfterVat">After Vat : </label> - </div> - <div class="col-md-3 ">&nbsp;</div> - <div class="col-md-3"> - <div class="form-group"> -<?php - $data = array('name' => 'txtAfterVat', 'value' => set_value('txtAfterVat'),'id'=>'txtAfterVat', 'class' => 'form-control required digits','readonly'=>'true'); - echo form_input($data); - ?> - - </div> - </div> - </div> - <br/> - <div class="row"> - <div class="col-md-6 "> - <label for="Freight">Freight : </label> - </div> - <div class="col-md-3 ">&nbsp;</div> - <div class="col-md-3 "> - <div class="form-group"> -<?php - $data = array('name' => 'txtFreight', 'value' => set_value('txtFreight'),'id'=>'txtFreight', 'class' => 'form-control required digits','onkeypress'=>'return isNumberKey(event)','onchange'=>'calculateFreight()'); - echo form_input($data); - ?> - - </div> - </div> - </div> - <br/> - <div class="row"> - <div class="col-md-6 "> - <label for="Total_Order_Value ">Total Order Value : </label> - </div> - <div class="col-md-3 ">&nbsp;</div> - <div class="col-md-3 "> - <div class="form-group"> -<?php - $data = array('name' => 'txtOrderValue','value' => set_value('txtOrderValue'), 'id'=>'txtOrderValue', 'class' => 'form-control required digits','readonly'=>'true'); - echo form_input($data); - ?> - - </div> - </div> - </div> - </div> - </div><!-- /.box-body --> - - <div class="box-footer" align="right"> - - <input type="hidden" name="txtRowCount" id="txtRowCount" /> - <input type="submit" class="btn btn-info" id="btnSubmit" onclick=" Validate()" value = "Submit"/> - <input type="reset" id="reset" class="btn btn-info" value="Reset" /> - </div> - - - </div> - <div class="col-md-4"> - <?php - $this->load->helper('form'); - $error = $this->session->flashdata('error'); - if($error) - { - ?> - <div class="alert alert-danger alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('error'); ?> - </div> - <?php } ?> - <?php - $success = $this->session->flashdata('success'); - if($success) - { - ?> - <div class="alert alert-success alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('success'); ?> - </div> - <?php } ?> - - <div class="row"> - <div class="col-md-12"> - <?php echo validation_errors('<div class="alert alert-danger alert-dismissable">', ' <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button></div>'); ?> - </div> - </div> - </div> - </div> - </section> -</div> - - -</div> - - -<script> -var baseurl = "<?php print base_url(); ?>"; - $(".addPO").submit(function(e) { - - e.preventDefault(); - -$.ajax({ - data:$('.addPO').serialize(), - type:"POST", - url:"<?php echo base_url() ?>purchaseorder/addNewPO", - success:function(data) { - if(data) - { - - alert('Purchase Order has been Successfully Generated : '+ data); - window.location = baseurl +'purchaseorder/ViewPurchaseOrder/?PONo='+ data; - //purchaseorder/ViewPurchaseOrder/?PONo='.$record->PONO; - } - else - { - alert("Error"); - } - - - } - }); - - }); - - - $(function() { - $( ".datePicker" ).datepicker({ - dateFormat: 'dd/mm/yy' - - - }); - }); - - - - - - $('#SupplierID').change(function() { - - - - var id = $('#SupplierID').val(); - - $.ajax({ - data:{id:id}, - - type:"POST", - url:"<?php echo base_url();?>purchaseorder/GetSupplier", - success:function(data) { - if(data) - { - - $('#SupplierAddress').val(data); - } - else - { - alert("Error"); - } - - } - - }); - -}); - - $('#BudgetManager').change(function() { - - var id = $('#BudgetManager').val(); - - $.ajax({ - data:{id:id}, - - type:"POST", - url:"<?php echo base_url();?>purchaseorder/GetBudgetManagerDepartment", - success:function(data) { - if(data) - { - - $('#BudgetManagerDepartment').val(data); - } - else - { - alert("Error"); - } - - } - - }); - -}); - -</script> -<script type="text/html" id="tempList"> -<tr id="<%=index%>"> -<td align="left"><%=index%></td> -<?php - $data = array('name' => '"POItem[<%=index%>][index]"', 'value' => set_value('<%=index%>'),'id'=>'"POItem[<%=index%>][index]"', 'class' => 'form-control','type'=>'hidden'); - echo form_input($data); - ?> - - <td align="left"><%=ProductDescription%></td> - - <td align="left"><%=UOM%></td> - - <td align="left"><%=Quantity%></td> - - <td align="left"><%=UnitPrice%></td> - - <td align="left"><%=ProductPrice%></td> - - -</tr> -</script> -<script> -var index = '1'; -var numbers = /^[0-9]+$/; - $('.tempClick').click(function(){ - - if ($("#ProductDescription option:selected").text() =='Select Product Description' ) - { - alert('Please Select the ProductDescription '); - return; - } - if($("#UOM option:selected").text() == 'Select UOM' ) - { - alert('Please Select the UOM '); - return; - } - if(document.getElementById('Quantity').value == '' ) - { - alert('Please Enter the Quantity of the Product'); - return; - } - if(document.getElementById('UnitPrice').value == '' ) - { - alert('Please Enter the Unit Price of the Product'); - return; - } - - - if ($("#ProductDescription option:selected").text() !='' && $("#UOM option:selected").text() && $('#Quantity').val() && $('#UnitPrice').val() ) - { - - $('#POList').show(); - var temp = index; - var ProductDescription = $("#ProductDescription option:selected").val(); - var UOM = $("#UOM option:selected").text(); - var Quantity = $("#Quantity").val(); - - var UnitPrice = $('#UnitPrice').val(); - var ProductPrice = parseFloat(Quantity) * parseFloat(UnitPrice); - index = parseInt(index)+1; - - if($('#BasicValue').val() != '') - { - $('#BasicValue').val( parseFloat($('#BasicValue').val()) + ProductPrice); - } - else - { - $('#BasicValue').val(ProductPrice); - } - - var template = jQuery("#tempList").html(); - - - $('#tempAppend').append(_.template(template,{index:temp,ProductDescription:ProductDescription,UOM:UOM,Quantity:Quantity,UnitPrice:UnitPrice,ProductPrice:ProductPrice})); - - - var theForm = $(".addPO"); - - - - - - // alert(ProductCode); - addHidden(theForm,"ProductDescription"+temp,ProductDescription); - addHidden(theForm,"UOM"+temp,UOM); - addHidden(theForm,"Quantity"+temp,Quantity); - addHidden(theForm,"UnitPrice"+temp,UnitPrice); - addHidden(theForm,"ProductPrice"+temp,ProductPrice); - - $('#txtRowCount').val(temp); - - //$('#ProductDescription').val('1'); - //$('#UOM').val('1'); - //$('#Quantity').val(''); - //$('#UnitPrice').val(''); - //$('#ProductPrice').val(''); - - } - else - { - alert('Please enter all the values'); - - } - - }); - - function addHidden(theForm, key, value) { - // Create a hidden input element, and append it to the form: - var input = document.createElement('input'); - input.type = 'hidden'; - input.name = key;'name-as-seen-at-the-server'; - input.value = value; - theForm.append(input); -} - -$('#DiscountType').change(function() { - selValue = $("option:selected", $("#DiscountType")).text() - - if (selValue =='Nil') - { - - $('#txtDiscount').attr('readonly', 'true'); - $('#txtDiscount').val('0.00'); - calculateDiscount(); - - } - else - { - $('#txtDiscount').removeAttr( 'readonly','true' ); - $('#txtDiscount').val(''); - calculateDiscount(); - } - -}); - -$('#PackagingType').change(function() { - selValue = $("option:selected", $("#PackagingType")).text() - - - if (selValue =='Nil') - { - - $('#txtPackaging').attr('readonly', 'true'); - $('#txtPackaging').val('0.00'); - calculatePackaging(); - } - else - { - $('#txtPackaging').removeAttr( 'readonly','true' ); - $('#txtPackaging').val(''); - calculatePackaging(); - } - -}); - - - - - -function change(){ - - - if(document.getElementById('Quantity').value != '' && document.getElementById('UnitPrice').value != '') - { - var txtQuantity = parseFloat( document.getElementById('Quantity').value); - var txtUnitPrice = parseFloat(document.getElementById('UnitPrice').value); - var Tot = txtQuantity * txtUnitPrice - document.getElementById('ProductPrice').value = Tot; - } -} - - function calculateDiscount() - { - var basicValue = parseFloat(document.getElementById('BasicValue').value); - var DiscountType =$("option:selected", $("#DiscountType")).text(); - var DiscountText = parseFloat(document.getElementById('txtDiscount').value); - - var AfterDiscount = 0.0; - if(DiscountType == 'Percentage') - { - AfterDiscount = (basicValue - ((DiscountText/100) * basicValue)); - - } - else if(DiscountType == 'Nil' ) - { - AfterDiscount = basicValue; - - } - else - { - AfterDiscount = basicValue - DiscountText; - } - - var discount = AfterDiscount.toFixed(2); - - $('#AfterDiscount').val(discount); - - } - - function calculatePackaging() - { - var AfterDiscount =parseFloat(document.getElementById('AfterDiscount').value); - - var PackagingType =$("option:selected", $("#PackagingType")).text(); - var PackagingText = parseFloat(document.getElementById('txtPackaging').value); - - var AfterPackaging = 0.0; - - if(PackagingType == 'Percentage') - { - - AfterPackaging = AfterDiscount + ((PackagingText/100) * AfterDiscount); - - } - else if(PackagingType == 'Nil' ) - { - AfterPackaging = AfterDiscount; - } - else - { - AfterPackaging = AfterDiscount + PackagingText; - } - var Packaging = AfterPackaging.toFixed(2); - $('#AfterPackaging').val(Packaging); - - } - function calculateExeciseDuty() - { - var AfterPackaging =parseFloat(document.getElementById('AfterPackaging').value); - - - var ExciseDuty = parseFloat(document.getElementById('Exciseduty').value); - - var AfterExciseDuty = 0.0; - - if(ExciseDuty == '') - { - - AfterExciseDuty = AfterPackaging;; - } - - - else - { - AfterExciseDuty = AfterPackaging + ((ExciseDuty/100) * AfterPackaging); - } - CalExciseDuty = AfterExciseDuty.toFixed(2); - $('#AferExciseduty').val(CalExciseDuty); - - } - - function calculateVat() - { - var AfterExeciseDuty =parseFloat(document.getElementById('AferExciseduty').value); - - - var Vat = parseFloat(document.getElementById('txtVat').value); - - var AfterVat = 0.0; - - if(Vat == '') - { - - AfterVat = AfterExeciseDuty;; - } - - - else - { - AfterVat = AfterExeciseDuty + ((Vat/100) * AfterExeciseDuty); - } - calAfterVat = AfterVat.toFixed(2); - $('#txtAfterVat').val(calAfterVat); - - } - - function calculateFreight() - { - var AfterVat =parseFloat(document.getElementById('txtAfterVat').value); - - - var Freight = parseFloat(document.getElementById('txtFreight').value); - - var AfterFreight = 0.0; - - if(Freight == '') - { - - AfterFreight = AfterVat; - } - - else - { - AfterFreight = AfterVat + Freight; - } - calAfterFreight = AfterFreight.toFixed(2); - $('#txtOrderValue').val(calAfterFreight); - - } - - - <!-- - function isNumberKey(evt) - { - var charCode = (evt.which) ? evt.which : evt.keyCode; - if (charCode != 46 && charCode > 31 - && (charCode < 48 || charCode > 57)) - return false; - - return true; - } - - - -function Validate() -{ - - if($("option:selected", $("#PO_Type")).val() == '0') - { - alert('Please Select Purchase Order Type'); - return; - } - - if($("option:selected", $("#SupplierID")).val() == "0") - { - alert('Please Select Supplier ID'); - return; - } - - if($("option:selected", $("#role")).val() == "0") - { - alert('Please Select Requested By '); - return; - } - if($("option:selected", $("#BudgetManager")).val() == "0") - { - alert('Please Select Budget Manager '); - return; - } - if($("option:selected", $("#Pur_category")).val() == "0") - { - alert('Please Select Purchasing Category'); - return; - } - if(!validateEmail()) - { - alert('Please Enter Valid Email Address'); - return ; - } - - - - -} - function validateEmail() { - var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; - - var email = $('#re_email').val(); - if(email != "") - { - if (reg.test(email) == false) - { - alert('Please Enter Valid Email Address'); - return (false); - } - else - { - return true; - } - } -} - -</script> - - -<script> - -</script> -<script src="<?php echo base_url(); ?>assets/js/addUser.js" type="text/javascript"></script> \ No newline at end of file diff --git a/application/views/addRawMaterial.php b/application/views/addRawMaterial.php deleted file mode 100644 index 4bdd0fec..00000000 --- a/application/views/addRawMaterial.php +++ /dev/null @@ -1,151 +0,0 @@ -<script> -function BlockSpecial(evt) { - var charCode; - if (window.event) - charCode = window.event.keyCode; //for IE - else - charCode = evt.which; //for firefox - - if (charCode >= 91 && charCode <= 96) - return false; - if (charCode >= 123 && charCode <= 126) - return false; - if (charCode >= 33 && charCode <= 47) - return false; - if (charCode >= 58&& charCode <= 64) - return false; - - else - { - return true; - } - } -</script> -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - <center>Siddharth Industries - Add New Material </center> - - </h1> - - </section> - - <section class="content"> - <div style="text-align:right;"> - <a href="<?php echo base_url() ?>rawmaterialdetails/rawmaterialListing" class="btn btn-info" value="Back"/>Back</a> - </div> - <br/> - <div class="row"> - <!-- left column --> - <div class="col-md-12"> - <!-- general form elements --> - - - - <div class="box box-primary"> - - <!-- form start --> - - <form id="addUser" action="<?php echo base_url() ?>rawmaterialdetails/addNewRawMaterial" method="post" role="form"> - <div class="box-body"> - <div class="row"> - - <div class="col-md-3"> - <div class="form-group"> - <span for="MaterialName">Material Name</span> - <input type="text" class="form-control required " onkeypress="return BlockSpecial(event);" required id="MaterialName" name="MaterialName" maxlength="255"> - </div> - </div> - <div class="col-md-3"> - <div class="form-group"> - <span for="MaterialType">Material Type</span> - <select class="form-control required" id="MaterialType" name="MaterialType"> - <option value="-1" required>Select Material Type</option> - <?php - if(!empty($material)) - { - foreach ($material as $SID) - { - ?> - <option value="<?php echo $SID->ConfigValue ?>"><?php echo $SID->ConfigValue ?></option> - <?php - } - } - ?> - </select> - </div> - </div> - <div class="col-md-3"> - <div class="form-group"> - <span for="UOM">Unit of Measurement</span> - <select class="form-control required" id="UOM" name="UOM"> - <option value="-1" required>Select UOM</option> - <?php - if(!empty($UOM)) - { - foreach ($UOM as $SID) - { - ?> - <option value="<?php echo $SID->ConfigValue; ?>"><?php echo $SID->ConfigValue ?> - <?php - } - } - ?> - </select> - </div> - </div> - <div class="col-md-3"> - <div class="form-group"> - <span for="Active">IsActive</span> <br> - <input type="checkbox" id="isactive" name="isactive" > - </div> - </div> - - </div> - - - - </div><!-- /.box-body --> - - <div class="box-footer" style="text-align:right"> - <input type="submit" class="btn btn-info" value="Submit" /> - <input type="reset" class="btn btn-info" value="Cancel" /> - </div> - </form> - </div> - </div> - <div class="col-md-4"> - <?php - $this->load->helper('form'); - $error = $this->session->flashdata('error'); - if($error) - { - ?> - <div class="alert alert-danger alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('error'); ?> - </div> - <?php } ?> - <?php - $success = $this->session->flashdata('success'); - if($success) - { - ?> - <div class="alert alert-success alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('success'); ?> - </div> - <?php } ?> - - <div class="row"> - <div class="col-md-12"> - <?php echo validation_errors('<div class="alert alert-danger alert-dismissable">', ' <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button></div>'); ?> - </div> - </div> - </div> - </div> - </section> - -</div> -<script src="<?php echo base_url(); ?>assets/js/addUser.js" type="text/javascript"></script> \ No newline at end of file diff --git a/application/views/addasset.php b/application/views/addasset.php deleted file mode 100644 index d45b4e47..00000000 --- a/application/views/addasset.php +++ /dev/null @@ -1,281 +0,0 @@ -<script> - -$(function() { - var d = new Date(); - - var month = d.getMonth(); - var day = d.getDate(); - var year = d.getFullYear() ; - var SIAStartYear = year - 2015; - var mindt = year-70; - var maxdt = year-15; - - - $("#DateOfCommission").datepicker({ - minDate : new Date(year-SIAStartYear,1,1), - maxDate :'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true, - - - -}); - $("#DateOfPurchase").datepicker({ - minDate : new Date(year-SIAStartYear,1,1), - maxDate :'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true, - - - -}); - - -}); - - function isNumberKey(evt) - { - var charCode = (evt.which) ? evt.which : evt.keyCode; - if (charCode != 46 && charCode > 31 - && (charCode < 48 || charCode > 57)) - return false; - - return true; - } - -</script> - -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - <center>Siddharth Industries - Add Asset Details</center> - - </h1> - </section> - - <section class="content"> - <div style="text-align:right;"> - <a href="<?php base_url() ?>assetListing" class="btn btn-info" value="Back"/>Back</a> - </div> - <br> - <div class="row"> - <!-- left column --> - <div class="col-md-12"> - <!-- general form elements --> - - <div class="box box-primary"> - - <!-- form start --> - - <form role="form" id="addAsset" action="<?php echo base_url() ?>addNewasset" method="post"> - - <div class="box-body"> - <div class="row"> - <div class="col-md-3"> - <div class="form-group"> - <div class="form-group"> - <span for="Asset_Name">Asset Name</span> - <input type="text" class="form-control required" required style="text-transform:uppercase;" id="AssetName" name="AssetName" value="<?php echo isset($_POST['AssetName']) ? $_POST['AssetName'] : '' ?>"> - </div> - </div> - - </div> - - - <div class="col-md-3"> - <div class="form-group"> - <div class="form-group"> - <span for="Description">Description</span> - <input type="text" class="form-control required" id="Description" required name="Description" value="<?php echo isset($_POST['Description']) ? $_POST['Description'] : '' ?>"> - </div> - </div> - - </div> - <div class="col-md-3"> - <div class="form-group"> - <div class="form-group"> - <span for="Department">Department</span> - <select class="form-control required" id="Department" name="Department" > - <option value="-1" >Select Department</option> - <?php - if(!empty($DepartmentList)) - { - foreach ($DepartmentList as $DEP) - { - $DepartmentId = $DEP->DEPCode; - - if ($_POST['Department'] == $DepartmentId) - { - - echo "<option value=\"".$DepartmentId."\" selected=\"selected\">".$DepartmentId.' - '. $DEP->DepartmentName."</option>"; - } - else - { - echo "<option value=\"".$DepartmentId."\">".$DepartmentId.' - '. $DEP->DepartmentName ."</option>"; - } - - - } - } - ?> - </select> - </div> - </div> - - </div> - <div class="col-md-3"> - <div class="form-group"> - <div class="form-group"> - <span for="Location">Location</span> - <input type="text" class="form-control required" required id="Location" name="Location" value= "<?php echo isset($_POST['Location']) ? $_POST['Location'] : '' ?>"> - </div> - </div> - - </div> - <div class="col-md-3"> - <div class="form-group"> - <div class="form-group"> - <span for="AssetOwner">Asset User</span> - <input type="text" class="form-control required" required id="User" name="User" value= "<?php echo isset($_POST['User']) ? $_POST['User'] : '' ?>"> - </div> - </div> - - </div> - <div class="col-md-3"> - <div class="form-group"> - <span for="SupplierName">Supplier Name</span> - - <select class="form-control required" id="SupplierName" name="SupplierName"> - <option value="-1">Select Supplier Name</option> - <?php - if(!empty($SupplierList)) - { - foreach ($SupplierList as $SID) - { - - $SupplierId = $SID->SupplierID; - - if ($_POST['SupplierName'] == $SupplierId) - { - - echo "<option value=\"".$SupplierId."\" selected=\"selected\">".$SupplierId.' - '. $SID->SupplierName."</option>"; - } - else - { - echo "<option value=\"".$SupplierId."\">".$SupplierId.' - '. $SID->SupplierName ."</option>"; - } - } - } - ?> - </select> - </div> - </div> - <div class="col-md-3"> - - <div class="form-group"> - <span for="DateOfPurchase">Date Of Purchase</span> - <input id="DateOfPurchase" required name="DateOfPurchase" onkeypress="return false;" maxlength="10" class="form-control" value= "<?php echo isset($_POST['DateOfPurchase']) ? $_POST['DateOfPurchase'] : '' ?>"> - </div> - </div> - - <div class="col-md-3"> - <div class="form-group"> - <span for="DateOfCommission">Date Of Commission</span> - <input id="DateOfCommission" required name="DateOfCommission" onkeypress="return false;" maxlength="10" class="form-control" value= "<?php echo isset($_POST['DateOfCommission']) ? $_POST['DateOfCommission'] : '' ?>"> - - </div> - </div> - - - <div class="col-md-3"> - <div class="form-group"> - <span for="Assetvalue">Asset Value</span> - <input type="text" class="form-control required" id="Assetvalue" name="Assetvalue" required onkeypress="return isNumberKey(event)" title="Please Enter currency value" maxlength="255" value= "<?php echo isset($_POST['Assetvalue']) ? $_POST['Assetvalue'] : '' ?>"> - - </div> - - </div> - - <div class="col-md-3"> - <div class="form-group"> - <span for="AssetStatus">Asset Status</span> - <select class="form-control required" id="AssetStatus" name="AssetStatus"> - <option value="-1" >Select Asset Status</option> - <?php - if(!empty($AssetStatus)) - { - foreach ($AssetStatus as $SID) - { - $AssetValue = $SID->ConfigValue; - - if ($_POST['AssetStatus'] == $AssetValue) - { - - echo "<option value=\"".$AssetValue."\" selected=\"selected\">".$AssetValue."</option>"; - } - else - { - echo "<option value=\"".$AssetValue."\">".$AssetValue."</option>"; - } - } - } - - ?> - </select> - </div> - </div> - - <div class="col-md-6"> - <div class="form-group"> - <span for="Remarks">Remarks</span> - - <input type="text" class="form-control required" id="Remarks" name="Remarks" maxlength="500" value= "<?php echo isset($_POST['Remarks']) ? $_POST['Remarks'] : '' ?>"> - </div> - - </div> - <div class="col-md-3"> - <input type="checkbox" id="isactive" name="isactive" <?php echo (isset($_POST['isactive']) ? 'checked' : '') ?>> IsActive - </div> - </div><!-- /.box-body --> - - <div class="box-footer" style="text-align:right"> - <input type="submit" class="btn btn-info" value="Submit" /> - <input type="reset" class="btn btn-info" value="Reset" /> - </div> - </form> - </div> - </div> - <div class="col-md-4"> - <?php - $this->load->helper('form'); - $error = $this->session->flashdata('error'); - if($error) - { - ?> - <div class="alert alert-danger alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('error'); ?> - </div> - <?php } ?> - <?php - $success = $this->session->flashdata('success'); - if($success) - { - ?> - <div class="alert alert-success alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('success'); ?> - </div> - <?php } ?> - - <div class="row"> - <div class="col-md-12"> - <?php echo validation_errors('<div class="alert alert-danger alert-dismissable">', ' <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button></div>'); ?> - </div> - </div> - </div> - </div> - </section> - -</div> -<script src="<?php echo base_url(); ?>assets/js/addUser.js" type="text/javascript"></script> - \ No newline at end of file diff --git a/application/views/addcost.php b/application/views/addcost.php deleted file mode 100644 index 9cd17188..00000000 --- a/application/views/addcost.php +++ /dev/null @@ -1,99 +0,0 @@ -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - <center>Cost List</center> - - </h1> - - </section> - - <section class="content"> - <div style="text-align:right;"> - <a href="<?php echo base_url() ?>costListing" class="btn btn-info" value="Back"/>Back</a> - </div> - <br> - - <div class="row"> - <!-- left column --> - <div class="col-md-12"> - <!-- general form elements --> - - - - <div class="box box-primary"> - <div class="box-header"> - <center><h3 class="box-title">Add Cost Details</h3></center> - </div><!-- /.box-header --> - <!-- form start --> - - <form role="form" id="addUser" action="<?php echo base_url() ?>addNewcost" method="post" role="form"> - <div class="box-body"> - <div class="row"> - <!--<div class="col-md-6"> - <div class="form-group"> - <label for="CostCentreID">Cost Center ID</label> - <input type="text" class="form-control required" id="CostCentreID" name="CostCentreID" maxlength="128"> - </div> - - </div>--> - <div class="col-md-6"> - <div class="form-group"> - <label for="CostName">Cost Name</label> - <input type="text" class="form-control required" id="CostName" name="CostName" maxlength="128"> - </div> - </div> - - - <div class="col-md-6"> - <div class="form-group"> - <label for="Description">Description</label> - <input type="text" class="form-control required " id="Description" name="Description" maxlength="255"> - </div> - </div> - - - </div> - </div><!-- /.box-body --> - - <div class="box-footer" style="text-align:right"> - <input type="submit" class="btn btn-info" value="Submit" /> - <input type="reset" class="btn btn-info" value="Cancel" /> - </div> - </form> - </div> - </div> - <div class="col-md-4"> - <?php - $this->load->helper('form'); - $error = $this->session->flashdata('error'); - if($error) - { - ?> - <div class="alert alert-danger alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('error'); ?> - </div> - <?php } ?> - <?php - $success = $this->session->flashdata('success'); - if($success) - { - ?> - <div class="alert alert-success alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('success'); ?> - </div> - <?php } ?> - - <div class="row"> - <div class="col-md-12"> - <?php echo validation_errors('<div class="alert alert-danger alert-dismissable">', ' <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button></div>'); ?> - </div> - </div> - </div> - </div> - </section> - -</div> -<script src="<?php echo base_url(); ?>assets/js/addUser.js" type="text/javascript"></script> \ No newline at end of file diff --git a/application/views/addemployee.php b/application/views/addemployee.php deleted file mode 100644 index b4bc5bf4..00000000 --- a/application/views/addemployee.php +++ /dev/null @@ -1,720 +0,0 @@ -<script> - function readURL(input) { - if (input.files && input.files[0]) { - var reader = new FileReader(); - - reader.onload = function (e) { - $('#profilepicture') - .attr('src', e.target.result) - .width(166) - .height(166); - }; - - reader.readAsDataURL(input.files[0]); - } - } - -$(function(){ - $('#checksame').click(function(){ - if ($('#checksame').prop('checked')) - - { - - $('#permanentaddress').val($('#currentaddress').val()); - - } - else - { - $('#permanentaddress').val(''); - } - - }); -}); - - - - function blockKeyPress(evt) -{ - var charCode = (evt.which) ? evt.which : evt.keyCode; - alert(charCode); - if(charCode == 8 || charCode == 46 ) - - { - return false; - } - else - { - return false; - } -} - - function isNumberKey(evt) - { - var charCode = (evt.which) ? evt.which : evt.keyCode; - if (charCode != 46 && charCode > 31 - && (charCode < 48 || charCode > 57)) - return false; - - return true; - } - -//PAN Validate -function validatePAN() { - var reg = /(?=.*[A-Za-z]).{5,}(?=.*[0-9]).{4,}(?=.*[A-Za-z]).{1,}$/; - - var PAN = $('#panno').val(); - - if(PAN != '') - { - if (reg.test(PAN) == false) - { - alert('Please Enter Valid PAN Number'); - return (false); - } - else - { - return true; - } - } - -} - -function getMobileValidation() { - var contactNumber = $('#ContactNumber').val().length; - if(contactNumber < 10) - { - alert('Please Enter valid Contact Number'); - return false; - } - else - { - return true; - } -} -function getValidEmergencyNumber() { - var contactNumber = $('#emergencycontactnumber').val().length; - if(contactNumber < 10) - { - alert('Please Enter valid Emergency Contact Number'); - return false; - } - else - { - return true; - } -} -function getValidReferNumber() { - var contactNumber = $('#referrercontno').val().length; - if(contactNumber > 0 && contactNumber < 10) - { - alert('Please Enter valid Refernce Contact Number'); - return false; - } - else - { - return true; - } -} -function validateEmail() { - var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; - - var email = $('#emailid').val(); - - if(email != '') - { - if (reg.test(email) == false) - { - alert('Please Enter Valid Email Address'); - return (false); - } - else - { - return true; - } - } - else - { - alert('Please Enter email id'); - } - -} -function getAge() { - - var dateString = $("#DateofBirth").val(); - - var today = new Date(); - var birthDate = new Date(dateString); - - var age = today.getFullYear() - birthDate.getFullYear(); - var m = today.getMonth() - birthDate.getMonth(); - if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) { - age--; - } - $("#age").val(age); - -} - -$(function() { - var d = new Date(); - - var month = d.getMonth(); - var day = d.getDate(); - var year = d.getFullYear() ; - var SIAStartYear = year - 2015; - var mindt = year-70; - var maxdt = year-15; - - $("#DateofBirth").datepicker({ - minDate : new Date(mindt,1,1), - maxDate : new Date(maxdt,1,1), - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true,yearRange: '-100:+0' - - -}); - $("#dateofjoining").datepicker({ - minDate : new Date(year-SIAStartYear,1,1), - maxDate :'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true, - - - -}); - $("#ValidTill").datepicker({dateFormat: 'mm/dd/yy',minDate :'now',changeMonth: true, changeYear: true,yearRange: '-0:+100' -}); - -}); - -function resetphoto() -{ - $("#photo").src(""); -} - -function ValidatePassport() -{ - var regsaid = /^[A-PR-WY][1-9]\d\s?\d{4}[1-9]$/ig; - var passport = $("#passportno").val(); - //alert(passport); - if(regsaid.test(passport) == false) - { - alert('You have entered invalid Passport.'); - return; - } - -} - -function onlyAlphabets(evt) { - var charCode; - if (window.event) - charCode = window.event.keyCode; //for IE - else - charCode = evt.which; //for firefox - if (charCode == 32) //for &lt;space&gt; symbol - return true; - if (charCode > 31 && charCode < 65) //for characters before 'A' in ASCII Table - return false; - if (charCode > 90 && charCode < 97) //for characters between 'Z' and 'a' in ASCII Table - return false; - if (charCode > 122) //for characters beyond 'z' in ASCII Table - return false; - return true; - } -</script> - <style> - legend{ - color:#00c0ef ! important; - } - .form-group - { - padding-bottom:4%; - } - .pad{ - padding-bottom:1%; - } - .badge - { - color:red; background-color:#fff; - } - </style> - -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - <CENTER>Siddharth Industries Employee Profile</CENTER> - - </h1> - - </section> - - <section class="content"> - <div style="text-align:right;"> - <a href="<?php echo base_url() ?>employeeListing" class="btn btn-info" value="Back">Back</a> - </div> - <br/> - <div class="row"> - <!-- left column --> - <div class="col-md-12"> - <!-- general form elements --> - - <div class="box box-primary"> - <!-- /.box-header --> - <!-- form start --> - - -<form role="form" id="addemployee" action="<?php echo base_url() ?>employeedetails/AddNewEmployee" method="post" enctype="multipart/form-data"> - - <div class="row"> - <div class="col-md-10 col-md-offset-1" style="border:3px solid #3c8dbc;"> - <form class="form-horizontal" role="form" > - <fieldset> - - <!-- Form Name --> - <legend>Personal Information</legend> - - <div class="col-md-12"> - <div class="col-md-3"> - <div class="box-header"> - <img id="profilepicture" src="<?php echo base_url(); ?>assets/dist/img/avatar.png" alt="your image" style="width: 139px;"/><br/> - <input type='file' onchange="readURL(this);" id="photo" name="photo"/> - <label for="photo">Select profile picture<br/><small>(only .jpg or .png)</small></label> - - </div> - </div> - <div class="col-md-9"> - - <div class="col-md-6 pad"> - <span>First Name</span><span class="badge">*</span> - <input type="text" name="FirstName" onkeypress="return onlyAlphabets(event);" maxlength="100" id="FirstName" class="form-control" required> - </div> - - <div class="col-md-6 pad"><span>Last Name</span><span class="badge">*</span> - <input type="text" name="LastName" onkeypress="return onlyAlphabets(event);" maxlength="100" id="LastName" class="form-control" required> - </div> - <div class="col-md-6 pad"><span>Father / Husband Name</span><span class="badge">*</span> - <input type="text" name="FatherName" onkeypress="return onlyAlphabets(event);" id="FatherName" maxlength="200" - class="form-control" required> - </div> - <div class="col-md-6 pad"><span>Date Of Birth</span><span class="badge">*</span> - <input id="DateofBirth" required name="DateofBirth" onkeypress="return false;" maxlength="10" onchange="getAge();" class="form-control"> - </div> - - <div class="col-md-6 pad"><span>Age</span> - <input type="text" name="age" id="age" class="form-control" readonly> - </div> - <div class="col-md-6 pad"><span>Contact Number</span><span class="badge">*</span> - <input type="text" name="ContactNumber" onchange="return getMobileValidation();" onkeypress="return event.charCode >= 48 && event.charCode <= 57" id="ContactNumber" required pattern="(.){10,10}" maxlength="10" class="form-control"> - </div> - <div class="col-md-6 pad"><span>Email ID</span><span class="badge">*</span> - <input type="email" name="emailid" id="emailid" required maxlength="100" class="form-control"> - </div> - - <div class="col-md-6 pad"><span>Gender</span><span class="badge">*</span> - <select id="gender" name="gender" type="text" required class="form-control"> - <option value="-1">Select Gender</option> - <?php - if(!empty($Gender)) - { - foreach ($Gender as $rl) - { - ?> - <option value="<?php echo $rl->ConfigValue ?>"><?php echo $rl->ConfigValue ?></option> - <?php - } - } - ?> - </select> - </div> - - <div class="col-md-6 pad"><span>Marital Status</span><span class="badge">*</span> - <select id="MartialStatus" name="MartialStatus" type="text" required placeholder="Marital status" class="form-control"> - <option value="-1">Select Marital Status</option> - <?php - if(!empty($Martial)) - { - foreach ($Martial as $rl) - { - ?> - <option value="<?php echo $rl->ConfigValue ?>"><?php echo $rl->ConfigValue ?></option> - <?php - } - } - ?> - </select> - </div> - - - <div class="col-md-6 pad"><span>Blood group</span><span class="badge">*</span> - <select id="bloodgroup" name="bloodgroup" required class="form-control"> - <option value="-1">Select Blood group</option> - <?php - if(!empty($BloodGroup)) - { - foreach ($BloodGroup as $rl) - { - ?> - <option value="<?php echo $rl->ConfigValue ?>"><?php echo $rl->ConfigValue ?></option> - <?php - } - } - ?> - </select> - </div> - </div> -</div> - - - -<!-- Address Section --> - <!-- Form Name --> - <legend>Address Details</legend> - <!-- Text input--> - <div class="form-group"> - <div class="col-md-12"><span>Current Address</span><span class="badge">*</span> - <input type="text" id="currentaddress" required name="currentaddress" maxlength="500" class="form-control"> - </div> - </div> - <div class="form-group"> - <div class="col-md-10"> - <input type="checkbox" id="checksame" name="sameaddress" onclick="CheckClick"> Current address same as permanent address - </div> - </div> - <!-- Text input--> - <div class="form-group"> - <div class="col-md-12"><span>Permanent Address</span><span class="badge">*</span> - <input type="text" id="permanentaddress" required name="permanentaddress" maxlength="500" class="form-control"> - </div> - </div> - <!-- Text input--> - - - -<!-- Emergency Contact Section --> - <!-- Form Name --> - <legend>Emergency Contact Information</legend> - <!-- Text input--> - <div class="form-group"> - <div class="col-md-6"><span>Emergency Contact Name</span><span class="badge">*</span> - <input type="text" id="emergencycontactname" onkeypress="return onlyAlphabets(event);" maxlength="100" required name="emergencycontactname" class="form-control"> - </div> - <div class="col-md-6"><span>Emergency Contact Number</span><span class="badge">*</span> - <input type="text" id="emergencycontactnumber" min_length="5" required name="emergencycontactnumber" onchange="return getValidEmergencyNumber();" onkeypress="return event.charCode >= 48 && event.charCode <= 57" maxlength="10" class="form-control"> - </div> - - </div> - - -<!-- profile Section --> - <!-- Form Name --> - <legend>Work Profile</legend> - <!-- Text input--> - - <div class="form-group"> - <div class="col-md-3"><span>Designation</span> - <select type="text" id="desigination" name="desigination" required class="form-control"> - <option value="-1">Select Designation</option> - <?php - if(!empty($Designation)) - { - foreach ($Designation as $rl) - { - ?> - <option value="<?php echo $rl->ConfigValue ?>"><?php echo $rl->ConfigValue ?></option> - <?php - } - } - ?> - </select> - - </div> - <div class="col-md-3"><span>Department</span><span class="badge">*</span> - <select type="text" id="departmentname" name="departmentname" required class="form-control"> - <option value="-1">Select Department</option> - <?php - if(!empty($Department)) - { - foreach ($Department as $rl) - { - ?> - <option value="<?php echo $rl->DEPCode ?>"><?php echo $rl->DEPCode." - " .$rl->DepartmentName ?></option> - <?php - } - } - ?> - </select> - - </div> - <div class="col-md-3"><span>Date Of Joining</span><span class="badge">*</span> - <input id="dateofjoining" name="dateofjoining" onkeypress="return false;" maxlength="10" required class="form-control"> - </div> - <div class="col-md-3"><span>Previous Years of Experience</span> - <input type="text" id="Previousexperience" name="Previousexperience" maxlength="4" onkeypress="return isNumberKey(event)" class="form-control"> - </div> - </div> - - <div class="form-group"> - <div class="col-md-3"><span>Qualification</span><span class="badge">*</span> - <select type="text" id="eduqualifaction" name="eduqualifaction" required class="form-control"> - <option value="-1">Select Qualification</option> - <?php - if(!empty($Qualification)) - { - foreach ($Qualification as $rl) - { - ?> - <option value="<?php echo $rl->ConfigValue ?>"><?php echo $rl->ConfigValue ?></option> - <?php - } - } - ?> - </select> - - </div> - <div class="col-md-3"><span>Additional Qualification</span> - <input type="text" id="addqualification" name="addqualification" maxlength="100" class="form-control"> - </div> - <div class="col-md-3"><span>Referred By</span> - <input type="text" id="referredby" onkeypress="return onlyAlphabets(event);" name="referredby" maxlength="100" class="form-control"> - </div> - <div class="col-md-3"><span>Referrer Contact Number</span> - <input type="text" id="referrercontno" name="referrercontno" onchange=" return getValidReferNumber();" - maxlength="10" onkeypress="return event.charCode >= 48 && event.charCode <= 57" class="form-control"> - </div> - </div> - - <legend>Bank Details</legend> - <!-- Text input--> - - <div class="form-group"> - <div class="col-md-3"><span>Account Number</span> - <input type="text" id="accountno" onkeypress="return event.charCode >= 48 && event.charCode <= 57" maxlength="20" name="accountno" class="form-control"> - </div> - <div class="col-md-3"><span>IFSC Code</span> - <input type="text" id="ifsccode" name="ifsccode" maxlength="12" class="form-control"> - </div> - <div class="col-md-3"><span>Bank Branch Name</span> - <input type="text" id="bankbranchname" maxlength="200" name="bankbranchname" class="form-control"> - </div> - <div class="col-md-3"><span>Bank Address</span> - <input type="text" id="bankaddress" maxlength="200" name="bankaddress" class="form-control"> - </div> - </div> - - <legend>ID Proof</legend> - <!-- Text input--> - - <div class="form-group"> - <div class="col-md-3"><span>Aadhar Number</span> - <input type="text" id="aadharno" name="aadharno" maxlength="12" class="form-control"> - </div> - <div class="col-md-3"><span>PAN Number</span> - <input type="text" id="panno" maxlength="10" name="panno" onchange="validatePAN();" class="form-control"> - </div> - <div class="col-md-3"><span>Passport Number</span> - <input type="text" id="passportno" maxlength="8" onchange="ValidatePassport();" name="passportno" class="form-control"> - </div> - <div class="col-md-3"><span>Valid Till</span> - <input id="ValidTill" name="ValidTill" onkeypress="return false;" maxlength="10" class="form-control"> - </div> - </div> - - - <!-- Command --> - - <div class="form-group"> - <div class="col-md-3 col-md-offset-9"> - <div class="pull-right"> - <input type="reset" id="reset" onclick="resetphoto();" class="btn btn-info" value="Reset" /> - <input type="submit" onclick="validate();" class="btn btn-primary"> - </div> - </div> - </div> - </fieldset> - </form> - </div><!-- /.col-lg-12 --> -</div><!-- /.row --> - - </form> - </div> - </div> - <div class="col-md-4"> - <?php - $this->load->helper('form'); - $error = $this->session->flashdata('error'); - if($error) - { - ?> - <div class="alert alert-danger alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('error'); ?> - </div> - <?php } ?> - <?php - $success = $this->session->flashdata('success'); - if($success) - { - ?> - <div class="alert alert-success alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('success'); ?> - </div> - <?php } ?> - - <div class="row"> - <div class="col-md-12"> - <?php echo validation_errors('<div class="alert alert-danger alert-dismissable">', ' <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button></div>'); ?> - </div> - </div> - </div> - </div> - </section> - -</div> - -<script src="<?php echo base_url(); ?>assets/js/addUser.js" type="text/javascript"></script> -<script> -function Validate() -{ - if($("#FirstName").val().length < 1) - { - alert('Please Enter FirstName'); - return false; - } - if($("#LastName").val().length < 1) - { - alert('Please Enter LastName'); - return false; - } - if($("#FatherName").val().length < 1) - { - alert('Please Enter FatherName'); - return false; - } - if($("#DateofBirth").val().length < 1) - { - alert('Please Enter Date of Birth'); - return false; - } - if ( $('#ContactNumber').val().length < 1 ) - { - alert('Please Enter Contact Number'); - return false; - } - else if(!getMobileValidation()) - { return false; } - - - - - if($("#emailid").val().length < 1) - { - alert('Please Enter Email ID'); - return false; - } - else if(!validateEmail()) - { - return false; - } - - - if($("option:selected", $("#gender")).val() == '-1') - { - alert('Please Select Gender'); - return false; - } - - if($("option:selected", $("#MartialStatus")).val() == "-1") - { - alert('Please Select Martial Status'); - return false; - } - - if($("option:selected", $("#bloodgroup")).val() == "-1") - { - alert('Please Select Blood group '); - return false; - } - if($("#currentaddress").val().length < 1) - { - alert('Please Enter Current Address'); - return false; - } - if($("#permanentaddress").val().length < 1) - { - alert('Please Enter Permanent Address'); - return false; - } - if($("#emergencycontactname").val().length < 1) - { - alert('Please Enter Emergency Contact Name'); - return false; - } - if($("#emergencycontactnumber").val().length < 1) - { - alert('Please Enter Emergency Contact Number'); - return false; - } - else if(!getValidEmergencyNumber()) - { return false;} - - - if($("option:selected", $("#desigination")).val() == "-1") - { - alert('Please Select Desigination '); - return false; - } - if($("option:selected", $("#departmentname")).val() == "-1") - { - alert('Please Select Department name'); - return false; - } - if($("option:selected", $("#eduqualifaction")).val() == "-1") - { - alert('Please Select Qualification'); - return false; - } - - if($("#referrercontno").val().length > 0) - { - getValidReferNumber(); - } - - if($("#passportno").val().length > 1) - { - ValidatePassport(); - - } - -} - $("#emailid").change(function () { - - var id = $('#emailid').val(); - if(validateEmail()) - { - $.ajax({ - data:{id:id}, - - type:"POST", - url:"<?php echo base_url();?>employeedetails/CheckEmail", - success:function(data) { - if(data) - { - - var answer = confirm(data+""+" Employee already exists in the database.Do you want to change the Email id ?") - if (answer) { - $('#emailid').val(''); - $('#emailid').focus(); - } - else - { - window.location = 'employeedetails/employeeListing'; - } - - } - - } - - }); - } - -}); -</script> \ No newline at end of file diff --git a/application/views/addemppaydate.php b/application/views/addemppaydate.php deleted file mode 100644 index 1da2bfb3..00000000 --- a/application/views/addemppaydate.php +++ /dev/null @@ -1,235 +0,0 @@ - - - - - -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - <center>Employee Salary Payment Details</center> - - </h1> - </section> - - <section class="content"> - <div style="text-align:right;"> - <a href="<?php echo base_url() ?>emppayListings" class="btn btn-info" value="Back"/>Back</a> - </div> - <br> - <div class="row"> - <!-- left column --> - <div class="col-md-12"> - <!-- general form elements --> - - <div class="box box-primary"> - - <!-- form start --> - - <form role="form" id="addemppaydate" action="<?php echo base_url() ?>emppaydate/addNewemppay" method="post" name="addform" > - - - <div class="box-body"> - <div class="row"> - - <!--<div class="col-md-4"> - <div class="form-group"> - <label for="Pay_Data_ID">Pay Data ID:</label><font color="Red">*</font> - - <div class="form-group"> - <?php - $data = array('name' => 'Pay_Data_ID','value' => set_value('Pay_Data_ID'), 'class' => 'form-control' ,'style'=>'text-transform:uppercase;'); - echo form_input($data); - ?> - </div> - </div> - </div>--> - - - - - <div class="col-md-4"> - <div class="form-group"> - <label for="EmpID">Employee ID:</label><font color="Red">*</font> - <div class="form-group"> - - <?php - $Employee = array("-1"=>'Select Employee'); - - if(!empty($empdetails)){ - - foreach($empdetails as $emp){ - $EmpID=$emp->EmpID; - $Employee+= array($EmpID => $emp->EmpID . "-" . $emp->FirstName . "-" . $emp->LastName); - // $Employee = array_merge($Employee,$Employee1); - } - } - //$data=array('name'=>'EmpID','value'=>$Employee,'id'=>'EmpID','class' => 'form-control'); - echo form_dropdown('EmpID', $Employee,set_value('EmpID'),'class="form-control",id="xxx"'); - //echo form_dropdown($data); - - ?> - </div> - </div> - </div> - - <div class="col-md-4"> - <div class="form-group"> - <label for="Basic_Pay">Basic Pay:</label><font color="Red">*</font> - <div class="form-group"> - <?php - - $data = array('name' => 'Basic_Pay','id' => 'Basic_Pay','value' => set_value('Basic_Pay'),'pattern' => '[0-9]{4,6}', 'class' => 'form-control', 'style'=>'text-transform:uppercase;','title' => 'Enter Valid Basic Pay Amount,Minimum Four Digit Positive Number'); - echo form_input($data); - ?> - </div> - </div> - </div> - - - - - - - <div class="col-md-4"> - <div class="form-group"> - <label for="HRA_Rate">HRA Rate(%):</label><font color="Red">*</font> - - <div class="form-group"> - <?php - - $data = array('name' => 'HRA_Rate','id'=>'HRA_Rate','value' => set_value('HRA_Rate'), 'class' => 'form-control','style'=>'text-transform:uppercase;','pattern'=>'([0-9]{1,2}([.][0-9]{1,2})?)', 'title'=>'Enter the Valid HRA Rate,Minimum 1 digit,Maximum 2 digit','onfocusout'=>'validateHRA();'); - echo form_input($data); - ?> - </div> - </div> - </div> - </div><!--row completed div--> - - <div class="row"> - <div class="col-md-4"> - <div class="form-group"> - <label for="OT_Rate">OT Rate:</label><font color="Red">*</font> - <div class="form-group"> - <?php - - $data = array('name' => 'OT_Rate','value' => set_value('OT_Rate'), 'class' => 'form-control' ,'style'=>'text-transform:uppercase;','pattern'=>'[0-9]{1,4}' ,'title'=>'Enter the Valid OT Rate, Minimum 1 digit, Maximum 4 digit'); - echo form_input($data); - - ?> - </div> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <label for="Allowances">Allowances:</label><font color="Red">*</font> - <div class="form-group"> - <?php - - $data = array('name' => 'Allowances','value' => set_value('Allowances'), 'class' => 'form-control' ,'style'=>'text-transform:uppercase;','pattern'=>'[0-9]{1,4}','title'=>'Enter the Valid Allowances,Minimum 1 digit , Maximum 4 digit '); - echo form_input($data); - ?> - </div> - </div> - </div> - - - - - <div class="col-md-4"> - <div class="form-group"> - <label for="PF_Rate">PF Rate(%):</label><font color="Red">*</font> - - <div class="form-group"> - <?php - - $data = array('name' => 'PF_Rate','value' => set_value('PF_Rate'),'class' => 'form-control' ,'style'=>'text-transform:uppercase;','pattern'=>'([0-9]{1,2}([.][0-9]{1,2})?)', 'title'=>'Enter the valid PF Rate,Minimum 1 digit,Maximum 2 digit'); - echo form_input($data); - ?> - </div> - </div> - </div> - </div><!--row completed div--> - - <div class="row"> - <div class="col-md-4"> - <div class="form-group"> - <label for="ESI_Rate">ESI Rate(%):</label><font color="Red">*</font> - <div class="form-group"> - <?php - - $data = array('name' => 'ESI_Rate','value' => set_value('ESI_Rate'), 'class' => 'form-control' ,'style'=>'text-transform:uppercase;','pattern'=>'([0-9]{1,2}([.][0-9]{1,2})?)','title'=>'Enter the Valid ESI Rate,Minimum 1 digit,Maximum 2 digit'); - echo form_input($data); - ?> - </div> - </div> - </div> - <!--for food allowances--> - <div class="col-md-4"> - <div class="form-group"> - <label for="Food_Allowances">Food Allowances:</label><font color="Red">*</font> - <div class="form-group"> - <?php - - $data = array('name' => 'Food_Allowances','value' => set_value('Food_Allowances'), 'class' => 'form-control','pattern'=>'[0-9]{1,4}','onfocusout'=>'validateFood();', 'title'=>'Enter the Valid Food Allowances,Minimun 1 Digit,Maximum 4 Digit'); - echo form_input($data); - ?> - </div> - </div> - </div> - </div><!--row completed div--> - - - <div class="box-footer" style="text-align:right"> - <input type="submit" class="btn btn-info" value="Submit" onmouseover="empcheck();" /> - <input type="reset" class="btn btn-info" value="Reset" /> - </div> - - - </div><!-- /.box-body --> - - - </form><!-- form closed --> - - - </div><!-- --> - </div><!-- --> - <div class="col-md-4"> - <?php - $this->load->helper('form'); - $error = $this->session->flashdata('error'); - if($error) - { - ?> - <div class="alert alert-danger alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('error'); ?> - </div> - <?php } ?> - <?php - $success = $this->session->flashdata('success'); - if($success) - { - ?> - <div class="alert alert-success alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('success'); ?> - </div> - <?php } ?> - - <div class="row"> - <div class="col-md-12"> - <?php echo validation_errors('<div class="alert alert-danger alert-dismissable">', ' <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button></div>'); ?> - </div> - </div> - </div> - </div> <!-- first row closed--> - </section> - -</div><!--content-wrapper closed--> -<script src="<?php echo base_url(); ?>assets/js/addUser.js" type="text/javascript"></script> - - - - - diff --git a/application/views/addsupplier.php b/application/views/addsupplier.php deleted file mode 100644 index 8eaa0a91..00000000 --- a/application/views/addsupplier.php +++ /dev/null @@ -1,462 +0,0 @@ - <script> - -//Email Validate -function validateEmail() { - var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; - - var email = $('#EmailAddress').val(); - if(email != "") - { - if (reg.test(email) == false) - { - alert('Please Enter Valid Email Address'); - return (false); - } - else - { - return true; - } - } -} - - - - - - - function blockKeyPress(evt) -{ - var charCode = (evt.which) ? evt.which : evt.keyCode; - alert(charCode); - if(charCode == 8 || charCode == 46 ) - - { - return false; - } - else - { - return false; - } -} - - function isNumberKey(evt) - { - var charCode = (evt.which) ? evt.which : evt.keyCode; - if (charCode != 46 && charCode > 31 - && (charCode < 48 || charCode > 57)) - return false; - - return true; - } - -//PAN Validate -function validatePAN() { - var reg = /(?=.*[A-Za-z]).{5,}(?=.*[0-9]).{4,}(?=.*[A-Za-z]).{1,}$/; - - var PAN = $('#panno').val(); - - if(PAN != '') - { - if (reg.test(PAN) == false) - { - alert('Please Enter Valid PAN Number'); - return (false); - } - else - { - return true; - } - } - else - { - alert('Please Enter PAN Number'); - return (false); - } - -} -function validateECCNumber() { - var reg = /(?=.*[A-Za-z]).{5,}(?=.*[0-9]).{4,}(?=.*[A-Za-z]).{1,}(?=.*[A-Za-z]).{2,}(?=.*[0-9]).{3,}$/; - - var ECC = $('#Exciseregistration').val(); - - if(ECC != '') - { - if (reg.test(ECC) == false) - { - alert('Please Enter Valid Excise Control Code Number'); - return (false); - } - else - { - return true; - } - } - -} -function getContactNumberValidation() { - var contactNumber = $('#ContactNumber').val().length; - if(contactNumber < 10) - { - alert('Please Enter valid Contact Number'); - return false; - } - else - { - return true; - } -} -function getValidAlternateNumber() -{ - var contactNumber = $('#AlternateContactNumber').val().length; - if(!empty($('#AlternateContactNumber').val())) - { - if(contactNumber < 10) - { - alert('Please Enter valid Alternate Contact Number'); - return false; - } - else - { - return true; - } - } -} - -function validateEmail() { - var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; - - var email = $('#emailid').val(); - - if(email != '') - { - if (reg.test(email) == false) - { - alert('Please Enter Valid Email Address'); - return (false); - } - else - { - return true; - } - } - else - { - alert('Please Enter email id'); - } - -} - - - - -function onlyAlphabets(evt) { - var charCode; - if (window.event) - charCode = window.event.keyCode; //for IE - else - charCode = evt.which; //for firefox - if (charCode == 32) //for &lt;space&gt; symbol - return true; - if (charCode > 31 && charCode < 65) //for characters before 'A' in ASCII Table - return false; - if (charCode > 90 && charCode < 97) //for characters between 'Z' and 'a' in ASCII Table - return false; - if (charCode > 122) //for characters beyond 'z' in ASCII Table - return false; - return true; - } - -$(function() { - var d = new Date(); - - var month = d.getMonth(); - var day = d.getDate(); - var year = d.getFullYear() ; - var SIAStartYear = year - 2015; - var mindt = year-70; - var maxdt = year-15; - - $("#dateofCST").datepicker({ - //minDate : new Date(year-30,1,1), - maxDate :'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true,yearRange: '-100:+0' - -}); -}); -</script> - - <style> - legend{ - color:#00c0ef ! important; - } - - .pad{ - padding-bottom:1%; - } - .badge - { - color:red; background-color:#fff; - } - </style> -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - <center> Siddharth Industries - New Supplier Details</center> - - </h1> - - </section> - - <section class="content"> - <div style="text-align:right;"> - <a href="<?php echo base_url() ?>supplierListing" class="btn btn-primary" value="Back"/>Back</a> - </div> - <br/> - <div class="row"> - <!-- left column --> - <div class="col-md-12"> - <!-- general form elements --> - - - <div class="box box-primary"> - - <!-- form start --> - - - <div class="row"> - <div class="col-md-10 col-md-offset-1" style="border:3px solid #3c8dbc;"> - <form class="form-horizontal" role="form" id="addsupplier" action="<?php echo base_url() ?>addNewsupplier" method="post" role="form"> - <fieldset> - - <!-- Form Name --> - <legend>Supplier Information</legend> - - <div class="col-md-3 pad"> - <span for="SupplierName">Supplier Name</span><span class="badge">*</span> - <input type="text" name="SupplierName" onkeypress="return onlyAlphabets(event);" maxlength="100" id="supplierName" class="form-control" required> - - </div> - - <div class="col-md-3 pad"> - <span for="ContactNumber">Contact Number</span><span class="badge">*</span> - <input type="text" name="ContactNumber" onchange="return getContactNumberValidation();" onkeypress="return event.charCode >= 48 && event.charCode <= 57" id="ContactNumber" required pattern="(.){10,10}" maxlength="10" class="form-control" title="Please Enter 10 digit Number"> - </div> - - <div class="col-md-3 pad"> - <span for="AlternateContactNumber">Alternate Contact Number</span> - <input type="text" name="AlternateContactNumber" onchange="return getValidAlternateNumber();" onkeypress="return event.charCode >= 48 && event.charCode <= 57" id="AlternateContactNumber" pattern="(.){10,10}" maxlength="10" class="form-control" title="Please Enter 10 digit Number"> - </div> - - <div class="col-md-3 pad"> - <span for="EmailAddress">Email ID</span><span class="badge">*</span> - <input type="email" name="emailid" id="emailid" required maxlength="100" class="form-control"> - </div> - - -<!-- Address Section --> - <!-- Form Name --> - <legend>Address Details</legend> - <!-- Text input--> - - <div class="col-md-12"><span for="Address2">Address</span><span class="badge">*</span> - <input type="text" class="form-control required" id="Address" name="Address" maxlength="500" required> - </div> - - - - - - <legend>Tax Related Data</legend> - <!-- Text input--> - - <div class="col-md-3 pad"> - <span for="PAN">PAN</span> <span class="badge">*</span> - <input type="text" id="panno" maxlength="10" pattern="(?=.*[A-Za-z]).{5,}(?=.*[0-9]).{4,}(?=.*[A-Za-z]).{1,}" style="text-transform:uppercase;" name="panno" required onchange="validatePAN();" class="form-control" title="Please Enter 5 Character and 4 digit numbers and 1 Character format"> - </div> - <div class="col-md-3 pad"> - <span for="TIN">TIN</span><span class="badge">*</span> - <input type="text" class="form-control required" pattern="(.){11,11}" id="TIN" name="TIN" minlength="11" maxlength="11" onkeypress="return event.charCode >= 48 && event.charCode <= 57" required title="Please Enter 11 digit Number"> - </div> - <div class="col-md-3 pad"> - <span for="UANumber">UA Number</span> - <input type="text" class="form-control" pattern="^\d{12}$" id="UANumber" name="UANumber" maxlength="12" title="Please Enter 12 digit Number" > - </div> - - <div class="col-md-3 pad"> - <span for="Exciseregistration">Excise Registration</span> - <input type="text" class="form-control required" onchange="validateECCNumber();" id="Exciseregistration" name="Exciseregistration" minlength="15" maxlength="15" pattern="(?=.*[A-Za-z]).{5,}(?=.*[0-9]).{4,}(?=.*[A-Za-z]).{1,}(?=.*[A-Za-z]).{2,}(?=.*[0-9]).{3,}" title="Please enter PAN Number and EM/ED option and 3 digit Numbers format" style="text-transform:uppercase;"> - </div> - - - <div class="col-md-3 pad"> - <span for="GSTNo">CST Number</span> - <input type="text" class="form-control " id="CSTNo" name="CSTNo" maxlength="15"> - </div> - <div class="col-md-3 pad"><span>CST Registration Date</span> - <input id="dateofCST" name="dateofCST" onkeypress="return false;" maxlength="10" class="form-control"> - </div> - - - <div class="col-md-3 pad"> - <span for="GSTNo">GST Number</span> - <input type="text" class="form-control " id="GSTNo" name="GSTNo" maxlength="10"> - </div> - - <div class="col-md-3 pad"> - <span for="Range">GST Range</span> - <input type="text" class="form-control " id="GSTRange" name="GSTRange" maxlength="10"> - </div> - <!-- Text input--> - - <div class="col-md-6 pad"><span for="CollectrateAddress">Collectrate Address</span> - <input type="text" class="form-control " id="CollectrateAddress" name="CollectrateAddress" maxlength="500" > - </div> - - <!-- Text input--> - - - <legend>Payment Details</legend> - <!-- Text input--> - - - <div class="col-md-3"> - <span for="payablefrom">Payable Terms</span> - <select class="form-control required" id="PaymentTerms" name="PaymentTerms"> - <option value="Date of invoice" >Select Payment method</option> - <?php - if(!empty($payment)) - { - foreach ($payment as $rl) - { - ?> - <option value="<?php echo $rl->ConfigValue ?>"><?php echo $rl->ConfigValue ?></option> - <?php - } - } - ?> - </select> - </div> - - <div class="col-md-3"> - <span for="PayableAT">Payable AT</span> - <input type="text" class="form-control required" id="PayableAT" name="PayableAT"> - </div> - - <div class="col-md-3"><span>Payment Date</span><br/> - <label class="radio-inline"><input type="radio" name="Payment" value="Before">Before</label> - <label class="radio-inline"><input type="radio" name="Payment" value="After">After</label> - </div> - - - - - <div class="form-group"> - <div class="col-md-3 col-md-offset-9"> - <div class="pull-right"> - <input type="reset" id="reset" class="btn btn-info" value="Reset" /> - <input type="submit" onclick="return Validate();" class="btn btn-primary"> - </div> - </div> - </div> - </fieldset> - </form> - </div><!-- /.col-lg-12 --> -</div><!-- /.row --> - - - - </div> - </div> - <div class="col-md-4"> - <?php - $this->load->helper('form'); - $error = $this->session->flashdata('error'); - if($error) - { - ?> - <div class="alert alert-danger alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('error'); ?> - </div> - <?php } ?> - <?php - $success = $this->session->flashdata('success'); - if($success) - { - ?> - <div class="alert alert-success alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('success'); ?> - </div> - <?php } ?> - - <div class="row"> - <div class="col-md-12"> - <?php echo validation_errors('<div class="alert alert-danger alert-dismissable">', ' <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button></div>'); ?> - </div> - </div> - </div> - </div> - </section> - -</div> -<script> -function Validate() -{ - if(!validatePAN()) - { - - $('#panno').focus(); - return false; - } -if(!validateEmail()) -{ - $('#emailid').focus(); - return false; -} -} - -//Call to ajax existing PAN - $('#panno').change(function() { - - var id = $('#panno').val(); - if(id != '') - { - $.ajax({ - data:{id:id}, - - type:"POST", - url:"<?php echo base_url();?>supplier/checkPAN", - success:function(data) { - if(data) - { - - var answer = confirm(data + " " +" supplier details is already exists in the database.Do you want to change the SUPPLIER details?") - if (answer) -{ - $('#panno').val(''); - - $('#panno').focus(); - return false; - } - else - { - alert('Please edit the supplier details in the Edit screen and change the supplier status to Active'); - window.location = 'supplier/supplierListing'; - } - - } - } - - }); - } - else - { - alert('Please enter the PAN Number'); - $('#panno').focus(); - return false; - } - -}); -</script> diff --git a/application/views/alterpurchaseorder.php b/application/views/alterpurchaseorder.php deleted file mode 100644 index 94aca0ea..00000000 --- a/application/views/alterpurchaseorder.php +++ /dev/null @@ -1,6438 +0,0 @@ -<?php $ReqType =''; ?> -<?php $ReqType =''; -$CompanyAddress = ''; -$testVar=''; -$dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); -$CurrentDate = $dt->format('Y-m-d'); -$MaxPoDate = ''; -if(!empty($MaxPODate)) -{ - foreach ($MaxPODate as $date) - { - $MaxPoDate = $date->PODate; - } -} -if(!empty($CompanyDetails)) -{ - foreach ($CompanyDetails as $Req) - { - $CompanyAddress = $Req->Address; - } -} -?> -<style> - - #packagingcalmodel { - margin-top:200px; - z-index: 1080 !important; - } - #ExciseDutyCalModel { - margin-top:200px; - z-index: 1080 !important; - } - #VatCalModel { - margin-top:200px; - z-index: 1080 !important; - } - #CSTCalModel { - margin-top:200px; - z-index: 1080 !important; - } - .modal - { - padding-right:30% ! important; - } - .form-control - { - text-align:left; - } - -</style> -<script type="text/html" id="ServiceList"> - <tr id="<%=index%>"> - <td align="left"><%=index%></td> - <td align="left"><%=ReqNo%></td> - - <td align="left"><%=MaterialName%></td> - <td align="left"><%=Quantity%></td> - <td align="left"><%=UOM%></td> - <td align="left"><%=Rate%></td> - <td align="left"><%=BasicAmount%></td> - <td align="left"><%=Taxvalue%></td> - <td align="left"><%=TotalValue%></td> - - <td> - <a data-target='#EDITSERVICE' data-id="<%=index%>" data-userid="<%=index%>" data-toggle="modal" href="#EDITSERVICE"><i class="fa fa-pencil" data-toggle="tooltip" title="Click here to view/Edit the <%=ReqNo%> Requisition details"></i>&nbsp;&nbsp;&nbsp;</a> <a href='#' onclick = "DeleteRow(<%=index%>)" class="link" data-id="<%=index%>" data-userid="<%=index%>" id="Del" ><span class="glyphicon glyphicon-trash"></span></a> - - - </td> - </tr> -</script> -<script src="<?php echo base_url(); ?>assets/js/CreatePOValidation.js" type="text/javascript"></script> -<script> - var NilType = '<?php echo NILTYPE;?>'; - var PercentageType = '<?php echo PERCENTAGE;?>'; - var POMaxDate = '<?php echo $MaxPoDate;?>'; - var PackagingCalculation = ''; - var ExciseCalculation = ''; - var StateTaxCheck = ''; - var VatCalculation = ''; - var CSTCalculation = ''; - var RequistQuantity = ''; - var IsEdit = '0'; - - $(function() { - - - $("#PODate").datepicker({ - minDate : 'now', - maxDate : 'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true,yearRange: '-100:+0' - }); - $("#Deliverydt").datepicker({ - minDate : 'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true,yearRange: '0:+10' - }); - - -var SelectedMaterialList = { - Mat: [] -}; - - /* $('#drpSupplier').change(function() { - - var id = $('#drpSupplier').val(); - $("#SupAddress").val(''); - - if(id != '0') - { - var y = <?php echo json_encode($Suplist, JSON_PRETTY_PRINT) ?>; - - - $.each(y, function(idx, obj) { - if(obj.SupplierID === id) - { - $("#SupAddress").val(obj.Address); - - } - - }); - - } - else - { - alert('Please select the SupplierID'); - return false; - } - - }); - - $('#ReqNo').change(function() { - - var id = $('#ReqNo').val(); - $("#deptName").val(''); - $("#CostCenter").empty(); - $("#MaterialCode").empty(); - resetTaxField(); - if(id != '0') - { - var y = <?php echo json_encode($RequistionDetails, JSON_PRETTY_PRINT) ?>; - var cost = <?php echo json_encode($CostList, JSON_PRETTY_PRINT) ?>; - var Material = <?php echo json_encode($MaterialList, JSON_PRETTY_PRINT) ?>; - - // For Binding DepartmentName - $.each(y, function(idx, obj) { - if(obj.ReqNo === id) - { - $("#deptName").val(obj.DepartmentName); - - } - }); - // For Binding Cost center for the selected department - $("#CostCenter").append( $('<option></option>').val("0").html("Select Cost Center") ); - $.each(cost, function(idx, obj) { - if(obj.ReqNo === id) - { - $("#CostCenter").append( $('<option></option>').val(obj.CostCenterCode).html(obj.CostCenterCode + "-" + obj.CostCenterName) ); - - } - - }); - // For Binding Material list center for the selected Requistion Number - $("#MaterialCode").append( $('<option></option>').val("0").html("Select Material Code") ); - $.each(Material, function(idx, obj) { - if(obj.ReqNo === id) - { - $("#MaterialCode").append( $('<option></option>').val(obj.MaterialCode).html(obj.MaterialCode + "-" + obj.MaterialName) ); - - } - - }); - - } - else - { - alert('Please select the Requisition Number'); - return false; - } - - }); - $('#MaterialCode').change(function() { - - var id = $('#MaterialCode').val(); - RequistQuantity = ''; - resetTaxField(); - if(id != '0') - { - var y = <?php echo json_encode($MaterialList, JSON_PRETTY_PRINT) ?>; - - - $.each(y, function(idx, obj) { - if(obj.MaterialCode === id) - { - $("#ItemName").val(obj.MaterialName); - $("#UOM").val(obj.UOM); - $("#Quantity").val(obj.Quantity); - RequistQuantity = obj.Quantity; - } - }); - } - else - { - alert('Please select the MaterialCode'); - return false; - } - - }); - - $('#CostCenter').change(function() { - - var id = $('#CostCenter').val(); - $("#AvlBudAmt").val(''); - - if(id != '0') - { - var cost = <?php echo json_encode($CostList, JSON_PRETTY_PRINT) ?>; - - $.each(cost, function(idx, obj) { - if(obj.CostCenterCode === id) - { - $("#AvlBudAmt").val(obj.BudgetAmount); - } - - }); - } - else - { - alert('Please select the MaterialCode'); - return false; - } - - }); */ - /* Revenue Tax calcualation */ - - $('#DiscountType').change(function() { - selValue = $("#DiscountType").val(); - $('#txtDiscount').val(''); - $('#txtAfterDiscount').val(''); - if (selValue == NilType) - { - - $('#txtDiscount').attr('readonly', 'true'); - $('#txtDiscount').val('0.00'); - $('#txtAfterDiscount').val('0.00'); - - } - else - { - $('#txtDiscount').removeAttr( 'readonly','true' ); - $('#txtDiscount').val(''); - $('#txtAfterDiscount').val(''); - } - - }); - - $('#PackagingType').change(function() { - $('#txtPackaging').val(''); - $('#txtAfterPackaging').val(''); - selValue = $("#PackagingType").val() ; - if(selValue == PercentageType) - { - var PackagingCalculation = ''; - $('#packagingcalmodel').modal('show'); - $('#txtPackaging').removeAttr( 'readonly','true' ); - } - else - { - if (selValue == NilType) - { - - $('#txtPackaging').attr('readonly', 'true'); - $('#txtPackaging').val('0.00'); - } - else - { - $('#txtPackaging').removeAttr( 'readonly','true' ); - } - } - - }); - $('#txtExciseDuty').change(function() { - - if(ExciseCalculation == '') - { - $('#ExciseDutyCalModel').modal('show'); - } - - }); - $('#txtVat').change(function() { - - /* if(VatCalculation == '') - { - $('#VatCalModel').modal('show'); - } - */ - - }); - $('#txtCST').change(function() { - - if(CSTCalculation == '') - { - $('#CSTCalModel').modal('hide'); - } - - }); - $('#drpFreight').change(function() { - - - selValue = $("#drpFreight").val() ; - - if (selValue == NilType) - { - - $('#txtFreight').attr('readonly', 'true'); - $('#txtFreight').val('0.00'); - - } - else - { - $('#txtFreight').removeAttr( 'readonly','true' ); - $('#txtFreight').val(''); - - - } - - }); - }); - - /* - * To calcuate the Discount */ -function calculateDiscount(isEdit) - { - if(isEdit == '0') - { - if($('#MaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#MaterialCode').focus(); - $('#txtDiscount').val(''); - return false; - } - else if($('#Rate').val() == '') - { - alert('Please Enter the Rate value'); - $('#Rate').focus(); - $('#txtDiscount').val(''); - return false; - } - if($('#Rate').val() != '' && $('#MaterialCode').val() != "0" ) - { - - var basicValue = parseFloat($('#txtBasicValue').val()); - var DiscountType =$("#DiscountType").val(); - - if(DiscountType == "0") - { - alert('Please Select the discount Type'); - $('#txtDiscount').val(''); - $("#DiscountType").focus(); - } - else if ($('#txtDiscount').val() != '' && $('#txtDiscount').val() != '0') - { - var AfterDiscount = 0.0; - var Discountval = parseFloat($('#txtDiscount').val()); - if(DiscountType == PercentageType) - { - - AfterDiscount = <?php echo DIS_PERCENTAGE;?>; - - } - else if(DiscountType == NilType ) - { - AfterDiscount = "0.00"; - } - else - { - AfterDiscount = <?php echo DIS_LUMPSUM;?>; - } - var discount = parseFloat(AfterDiscount).toFixed(2); - $('#txtAfterDiscount').val(discount); - } - else - { - $('#txtAfterDiscount').val("0.00"); - } - } - calculateVat(0); - calculateCST(0); - calculateTotalValue(); - } - else - { - if($('#EditRevenueMaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#EditRevenueMaterialCode').focus(); - $('#txtEditDiscount').val(''); - return false; - } - else if($('#EditRevenueRate').val() == '') - { - alert('Please Enter the Rate value'); - $('#EditRevenueRate').focus(); - $('#txtEditDiscount').val(''); - return false; - } - if($('#EditRevenueRate').val() != '' && $('#EditRevenueMaterialCode').val() != "0" ) - { - - var basicValue = parseFloat($('#txtEditRevenueBasicValue').val()); - var DiscountType =$("#EditDiscountType").val(); - - if(DiscountType == "0") - { - alert('Please Select the discount Type'); - $('#txtEditDiscount').val(''); - $("#EditDiscountType").focus(); - } - else if ($('#txtEditDiscount').val() != '' && $('#txtEditDiscount').val() != '0') - { - var AfterDiscount = 0.0; - var Discountval = parseFloat($('#txtEditDiscount').val()); - if(DiscountType == PercentageType) - { - - AfterDiscount = <?php echo DIS_PERCENTAGE;?>; - - } - else if(DiscountType == NilType ) - { - AfterDiscount = "0.00"; - } - else - { - AfterDiscount = <?php echo DIS_LUMPSUM;?>; - } - var discount = parseFloat(AfterDiscount).toFixed(2); - - $('#txtEditAfterDiscount').val(discount); - } - else - { - $('#txtEditAfterDiscount').val("0.00"); - } - } - calculateEditVatValue(); - calculateEditTotalValue(); - } - } - /* - * To calcuate the Packaging */ -function calculatePackaging(isEdit) - { - if(isEdit == '0') - { - if($('#MaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#MaterialCode').focus(); - $('#txtPackaging').val(''); - return false; - } - else if($('#Rate').val() == '') - { - alert('Please Enter the Rate value'); - $('#Rate').focus(); - $('#txtPackaging').val(''); - return false; - } - else - { - - var basicValue = parseFloat($('#txtBasicValue').val()); - - var PackagingType =$("#PackagingType").val(); - - if(PackagingType == "0") - { - alert('Please select the Packaging Type'); - $('#txtPackaging').val(''); - $("#PackagingType").focus(); - } - - else if($('#txtPackaging').val() != '' && $('#txtPackaging').val() !='0') - { - var Packagingvalue = parseFloat($('#txtPackaging').val()); - var AfterPackaging = 0.0; - - if(PackagingType == PercentageType) - { - if($(PackagingCalculation != 0 && '#txtAfterDiscount').val() == '') - { - alert('Please Enter the Discount value'); - $('#txtPackaging').val(''); - $('#DiscountType').focus(); - - return false; - } - else - { - var AfterDiscount =parseFloat($('#txtAfterDiscount').val()); - AfterPackaging = PackagingCalculation == 0 ? <?php echo PACKAGING_PERCENTAGE_BYBASICVALUE ;?> : <?php echo PACKAGING_PERCENTAGE_BYDISCOUNTVALUE;?> ; - } - - } - else if(PackagingType == NilType ) - { - AfterPackaging = "0.00"; - - } - else - { - - - AfterPackaging = PackagingCalculation == 0 ? <?php echo PACKAGING_LUMPSUM_BYBASICVALUE ;?>:<?php echo PACKAGING_LUMPSUM_BYDISCOUNTVALUE;?> ; - - } - var Packaging = parseFloat(AfterPackaging).toFixed(2); - - $('#txtAfterPackaging').val(Packaging); - } - else - { - $('#txtAfterPackaging').val("0.00"); - } - } - calculateVat(0); - calculateCST(0); - calculateTotalValue(); - } - else - { - if($('#EditRevenueMaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#EditRevenueMaterialCode').focus(); - $('#txtEditPackaging').val(''); - return false; - } - else if($('#EditRevenueRate').val() == '') - { - alert('Please Enter the Rate value'); - $('#EditRate').focus(); - $('#txtEditPackaging').val(''); - return false; - } - - else - { - - var basicValue = parseFloat($('#txtEditRevenueBasicValue').val()); - - var PackagingType =$("#EditPackagingType").val(); - - if(PackagingType == "0") - { - alert('Please select the Packaging Type'); - $('#txtEditPackaging').val(''); - $("#EditPackagingType").focus(); - } - - else if($('#txtEditPackaging').val() != '' && $('#txtEditPackaging').val() !='0') - { - var Packagingvalue = parseFloat($('#txtEditPackaging').val()); - var AfterPackaging = 0.0; - - if(PackagingType == PercentageType) - { - if(PackagingCalculation != 0 &&$('#txtEditAfterDiscount').val() == '') - { - alert('Please Enter the Discount value'); - $('#EditDiscountType').focus(); - $('#txtEditPackaging').val(''); - return false; - } - else - { - var AfterDiscount =parseFloat($('#txtEditAfterDiscount').val()); - AfterPackaging = PackagingCalculation == 0 ? <?php echo PACKAGING_PERCENTAGE_BYBASICVALUE ;?> : <?php echo PACKAGING_PERCENTAGE_BYDISCOUNTVALUE;?> ; - } - - } - else if(PackagingType == NilType ) - { - AfterPackaging = "0.00"; - } - else - { - - AfterPackaging = PackagingCalculation == 0 ? <?php echo PACKAGING_LUMPSUM_BYBASICVALUE ;?>:<?php echo PACKAGING_LUMPSUM_BYDISCOUNTVALUE;?> ; - - } - var Packaging = parseFloat(AfterPackaging).toFixed(2); - - $('#txtEditAfterPackaging').val(Packaging); - } - else - { - $('#txtEditAfterPackaging').val("0.00"); - } - } - calculateEditVatValue(); - calculateEditTotalValue(); - } - } - - function calculateExcise(isEdit) - { - - - if(isEdit == '0') - { - - - if($('#MaterialCode').val() == "0") - { - - alert('Please Select the Material Code'); - $('#MaterialCode').focus(); - $('#txtExciseDuty').val(''); - return false; - } - else if($('#Rate').val() == '') - { - alert('Please Enter the Rate value'); - $('#txtExciseDuty').val(''); - $('#Rate').focus(); - return false; - } - - else - { - - var basicValue = parseFloat($('#txtBasicValue').val()); - - - if($('#txtExciseDuty').val() != '' && $('#txtExciseDuty').val() != '0') - { - var AfterExciseDuty = 0.0; - var ExciseDuty = parseFloat($('#txtExciseDuty').val()); - - if(ExciseCalculation == '0') - { - AfterExciseDuty = <?php echo EXCISE_ONBASICVALUE; ?>; - } - else if(ExciseCalculation == '1') - { - if($('#txtAfterDiscount').val() == '') - { - alert('Please Enter the Discount value'); - $('#DiscountType').focus(); - $('#txtExciseDuty').val(''); - return false; - } - else - { - var AfterDiscount =parseFloat($('#txtAfterDiscount').val()); - AfterExciseDuty = <?php echo EXCISE_ONBASIC_DISCOUNT; ?>; - } - } - else if(ExciseCalculation == '2') - { - if($('#txtAfterDiscount').val() == '') - { - alert('Please Enter the Discount value'); - $('#DiscountType').focus(); - $('#txtExciseDuty').val(''); - return false; - } - else if($('#txtAfterPackaging').val() == '') - { - alert('Please Enter the Packaging value'); - $('#PackagingType').focus(); - $('#txtExciseDuty').val(''); - return false; - - } - else - { - var AfterDiscount =parseFloat($('#txtAfterDiscount').val()); - var AfterPackaging = parseFloat($('#txtAfterPackaging').val()); - AfterExciseDuty = <?php echo EXCISE_ONBASIC_DISCOUNT_PACKAGING; ?>; - } - } - else - { - if($('#txtAfterPackaging').val() == '') - { - alert('Please Enter the Packaging value'); - $('#PackagingType').focus(); - $('#txtExciseDuty').val(''); - return false; - } - else - { - AfterExciseDuty = <?php echo EXCISE_ONBASIC_PACKAGING; ?>; - var AfterPackaging = parseFloat($('#txtAfterPackaging').val()); - } - } - var ExciseVal = parseFloat(AfterExciseDuty).toFixed(2); - - $('#txtAfterExciseDuty').val(ExciseVal); - } - else - { - $('#txtAfterExciseDuty').val("0.00"); - } - - } - calculateVat(0); - calculateCST(0); - calculateTotalValue(); - } - else - { - if($('#EditRevenueMaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#EditRevenueMaterialCode').focus(); - return false; - } - else if($('#EditRevenueRate').val() == '') - { - alert('Please Enter the Rate value'); - $('#EditRevenueRate').focus(); - return false; - } - - else - { - - var basicValue = parseFloat($('#txtEditRevenueBasicValue').val()); - - - - if($('#txtEditExciseDuty').val() != '' && $('#txtEditExciseDuty').val() != '0') - { - var AfterExciseDuty = 0.0; - var ExciseDuty = parseFloat($('#txtEditExciseDuty').val()); - if(ExciseCalculation == '0') - { - AfterExciseDuty = <?php echo EXCISE_ONBASICVALUE; ?>; - } - else if(ExciseCalculation == '1') - { - if($('#txtEditAfterDiscount').val() == '') - { - alert('Please Enter the Discount value'); - $('#EditDiscountType').focus(); - $('#txtEditExciseDuty').val(''); - return false; - } - else - { - var AfterDiscount =parseFloat($('#txtEditAfterDiscount').val()); - AfterExciseDuty = <?php echo EXCISE_ONBASIC_DISCOUNT; ?>; - } - } - else if(ExciseCalculation == '2') - { - if($('#txtEditAfterDiscount').val() == '') - { - alert('Please Enter the Discount value'); - $('#EditDiscountType').focus(); - $('#txtEditExciseDuty').val(''); - return false; - } - else if($('#txtEditAfterPackaging').val() == '') - { - alert('Please Enter the Packaging value'); - $('#EditPackagingType').focus(); - $('#txtEditExciseDuty').val(''); - return false; - } - else - { - var AfterDiscount =parseFloat($('#txtEditAfterDiscount').val()); - var AfterPackaging = parseFloat($('#txtEditAfterPackaging').val()); - AfterExciseDuty = <?php echo EXCISE_ONBASIC_DISCOUNT_PACKAGING; ?>; - } - } - else - { - if($('#txtEditAfterPackaging').val() == '') - { - alert('Please Enter the Packaging value'); - $('#EditPackagingType').focus(); - $('#txtEditExciseDuty').val(''); - return false; - } - else - { - var AfterPackaging = parseFloat($('#txtEditAfterPackaging').val()); - AfterExciseDuty = <?php echo EXCISE_ONBASIC_PACKAGING; ?>; - } - } - var ExciseVal = parseFloat(AfterExciseDuty).toFixed(2); - - $('#txtEditAfterExciseDuty').val(ExciseVal); - } - else - { - $('#txtEditAfterExciseDuty').val("0.00"); - } - - } - calculateEditVatValue(); - calculateEditTotalValue(); - } - - } - - function calculateVat(isEdit) - { - if(isEdit == '0') - { - if($('#MaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#MaterialCode').focus(); - $('#txtVat').val(''); - return false; - } - else if($('#Rate').val() == '') - { - - alert('Please Enter the Rate value'); - $('#Rate').focus(); - $('#txtVat').val(''); - return false; - } - - else - { - - var basicValue = parseFloat($('#txtBasicValue').val()); - var AfterVat = 0.0; - - if(VatCalculation != 0 && $('#txtVat').val() != '' ) - { - - if($('#txtAfterExciseDuty').val() == '') - { - - alert('Please Enter the Excise value'); - $('#txtExciseDuty').focus(); - $('#txtVat').val(''); - return false; - } - else - { - - var ExciseDuty = parseFloat($('#txtAfterExciseDuty').val()); - vatValue = parseFloat($('#txtVat').val()); - - var discountValue = parseFloat($('#txtAfterDiscount').val()); - var packageValue = parseFloat($('#txtAfterPackaging').val()); - AfterVat = <?php echo VAT_ONEXICSEVALUE; ?>; - - var Vatval = parseFloat(AfterVat).toFixed(2); - - $('#txtAfterVat').val(Vatval); - } - } - else if(VatCalculation == 0 && $('#txtVat').val() != '') - { - - var ExciseDuty = parseFloat($('#txtAfterExciseDuty').val()); - vatValue = parseFloat($('#txtVat').val()); - - var discountValue = parseFloat($('#txtAfterDiscount').val()); - var packageValue = parseFloat($('#txtAfterPackaging').val()); - - AfterVat = <?php echo VAT_ONEXICSEVALUE; ?>; - - - var Vatval = parseFloat(AfterVat).toFixed(2); - - $('#txtAfterVat').val(Vatval); - } - - else - { - - $('#txtAfterVat').val("0.00"); - } - - calculateTotalValue(); - } - - } - else - { - if($('#EditRevenueMaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#EditRevenueMaterialCode').focus(); - $('#txtEditVat').val(''); - return false; - } - else if($('#EditRevenueRate').val() == '') - { - alert('Please Enter the Rate value'); - $('#EditRevenueRate').focus(); - $('#txtEditVat').val(''); - return false; - } - - else - { - var basicValue = parseFloat($('#txtEditRevenueBasicValue').val()); - - var discountValue = parseFloat($('#txtEditAfterDiscount').val()); - var packageValue = parseFloat($('#txtEditAfterPackaging').val()); - - var AfterVat = 0.0; - if(VatCalculation != 0 && $('#txtEditVat').val() != '' ) - { - - if($('#txtEditAfterExciseDuty').val() == '') - { - alert('Please Enter the Excise value'); - $('#txtEditAfterExciseDuty').focus(); - $('#txtEditVat').val(''); - return false; - } - else - { - var ExciseDuty = parseFloat($('#txtEditAfterExciseDuty').val()); - vatValue = parseFloat($('#txtEditVat').val()); - AfterVat = <?php echo VAT_ONEXICSEVALUE; ?>; - var Vatval = parseFloat(AfterVat).toFixed(2); - - $('#txtEditAfterVat').val(Vatval); - } - } - else if(VatCalculation == 0 && $('#txtEditVat').val() != '') - { - var ExciseDuty = parseFloat($('#txtEditAfterExciseDuty').val()); - vatValue = parseFloat($('#txtEditVat').val()); - AfterVat = <?php echo VAT_ONEXICSEVALUE; ?>; - var Vatval = parseFloat(AfterVat).toFixed(2); - - $('#txtEditAfterVat').val(Vatval); - } - - else - { - $('#txtEditAfterVat').val("0.00"); - } - - calculateEditTotalValue(); - } - - } - } - function calculateCST(isEdit) - { - if(isEdit == '0') - { - - if($('#MaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#MaterialCode').focus(); - $('#txtCST').val(''); - return false; - } - else if($('#Rate').val() == '') - { - alert('Please Enter the Rate value'); - $('#Rate').focus(); - $('#txtCST').val(''); - return false; - } - - else - { - var basicValue = parseFloat($('#txtBasicValue').val()); - var discountValue = parseFloat($('#txtAfterDiscount').val()); - var packageValue = parseFloat($('#txtAfterPackaging').val()); - var AfterCST = 0.0; - if(CSTCalculation != 0 && $('#txtCST').val() != '' ) - { - - if($('#txtAfterExciseDuty').val() == '') - { - alert('Please Enter the Excise value'); - $('#txtExciseDuty').focus(); - $('#txtAfterCST').val(''); - return false; - } - else - { - var ExciseDuty = parseFloat($('#txtAfterExciseDuty').val()); - var CSTValue= parseFloat($('#txtCST').val()); - AfterCST = <?php echo CST_ONEXICSEVALUE; ?>; - - var Vatval = parseFloat(AfterCST).toFixed(2); - - $('#txtAfterCST').val(Vatval); - } - } - else if(CSTCalculation == 0 && $('#txtCST').val() != '') - { - - var ExciseDuty = parseFloat($('#txtAfterExciseDuty').val()); - var CSTValue= parseFloat($('#txtCST').val()); - - AfterCST = <?php echo CST_ONEXICSEVALUE; ?>; - var Vatval = parseFloat(AfterCST).toFixed(2); - - $('#txtAfterCST').val(Vatval); - } - - else - { - $('#txtAfterCST').val("0.00"); - } - calculateTotalValue(); - } - - } - else - { - if($('#EditRevenueMaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#EditRevenueMaterialCode').focus(); - $('#txtEditCST').val(''); - return false; - } - else if($('#EditRevenueRate').val() == '') - { - alert('Please Enter the Rate value'); - $('#EditRevenueRate').focus(); - $('#txtEditCST').val(''); - return false; - } - - else - { - - var basicValue = parseFloat($('#txtEditRevenueBasicValue').val()); - var discountValue = parseFloat($('#txtEditAfterDiscount').val()); - var packageValue = parseFloat($('#txtEditAfterPackaging').val()); - var AfterCST = 0.0; - if(CSTCalculation != 0 && $('#txtEditCST').val() != '' ) - { - - if($('#txtEditAfterExciseDuty').val() == '') - { - alert('Please Enter the Excise value'); - $('#txtEditAfterExciseDuty').focus(); - $('#txtEditCST').val(''); - return false; - } - else - { - var ExciseDuty = parseFloat($('#txtEditAfterExciseDuty').val()); - var CSTValue= parseFloat($('#txtEditCST').val()); - AfterCST = <?php echo CST_ONEXICSEVALUE; ?>; - var Vatval = parseFloat(AfterCST).toFixed(2); - - $('#txtEditAfterCST').val(Vatval); - } - } - else if(CSTCalculation == 0 && $('#txtEditCST').val() != '') - { - var ExciseDuty = parseFloat($('#txtEditAfterExciseDuty').val()); - var CSTValue= parseFloat($('#txtEditCST').val()); - AfterCST = <?php echo CST_ONEXICSEVALUE; ?>; - var Vatval = parseFloat(AfterCST).toFixed(2); - - $('#txtEditAfterCST').val(Vatval); - } - - else - { - $('#txtEditAfterCST').val("0.00"); - } - - calculateEditTotalValue(); - } - - } - } - function calculateGST(isEdit) - { - if(isEdit == '0') - { - if($('#MaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#MaterialCode').focus(); - $('#txtGST').val(''); - return false; - } - else if($('#Rate').val() == '') - { - alert('Please Enter the Rate value'); - $('#Rate').focus(); - $('#txtGST').val(''); - return false; - } - else - { - var basicValue = parseFloat($('#txtBasicValue').val()); - - if($('#txtGST').val() != "0" && $('#txtGST').val() != '') - { - var GSTValue = parseFloat($('#txtGST').val()); - - var AfterGST = 0.0; - AfterGST = <?php echo GSTTAX; ?>; - - var GSTval = parseFloat(AfterGST).toFixed(2); - - $('#txtAfterGST').val(GSTval); - } - else - { - $('#txtAfterGST').val("0.00"); - } - - } - calculateTotalValue(); - } - else - { - if($('#EditRevenueMaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#EditRevenueMaterialCode').focus(); - $('#txtEditGST').val(''); - return false; - } - else if($('#EditRevenueRate').val() == '') - { - alert('Please Enter the Rate value'); - $('#EditRevenueRate').focus(); - $('#txtEditGST').val(''); - return false; - } - else - { - var basicValue = parseFloat($('#txtEditRevenueBasicValue').val()); - - if($('#txtEditGST').val() != "0" && $('#txtEditGST').val() != '') - { - var GSTValue = parseFloat($('#txtEditGST').val()); - - var AfterGST = 0.0; - AfterGST = <?php echo GSTTAX; ?>; - - var GSTval = parseFloat(AfterGST).toFixed(2); - - $('#txtEditAfterGST').val(GSTval); - } - else - { - $('#txtEditAfterGST').val("0.00"); - } - - } - calculateEditTotalValue(); - - } - } - function calculateOtherTaxes(isEdit) - { - if(isEdit == '0') - { - if($('#MaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#MaterialCode').focus(); - $('#txtOtherTax').val(''); - return false; - } - else if($('#Rate').val() == '') - { - alert('Please Enter the Rate value'); - $('#Rate').focus(); - $('#txtOtherTax').val(''); - return false; - } - else - { - var basicValue = parseFloat($('#txtBasicValue').val()); - - - if($('#txtOtherTax').val() != "0" && $('#txtOtherTax').val() != '') - { - var OtherTaxValue = parseFloat($('#txtOtherTax').val()); - - var AfterOtherTaxes = 0.0; - AfterOtherTaxes = <?php echo OTHERTAX; ?>; - - var Otherval = parseFloat(AfterOtherTaxes).toFixed(2); - - $('#txtAfterOtherTax').val(Otherval); - } - else - { - $('#txtAfterOtherTax').val("0.00"); - } - calculateTotalValue(); - - } - } - else - { - if($('#EditRevenueMaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#EditRevenueMaterialCode').focus(); - $('#txtEditOtherTax').val(''); - return false; - } - else if($('#EditRevenueRate').val() == '') - { - alert('Please Enter the Rate value'); - $('#EditRevenueRate').focus(); - $('#txtEditOtherTax').val(''); - return false; - } - else - { - var basicValue = parseFloat($('#txtEditRevenueBasicValue').val()); - - - if($('#txtEditOtherTax').val() != "0" && $('#txtEditOtherTax').val() != '') - { - var OtherTaxValue = parseFloat($('#txtEditOtherTax').val()); - - var AfterOtherTaxes = 0.0; - AfterOtherTaxes = <?php echo OTHERTAX; ?>; - - var Otherval = parseFloat(AfterOtherTaxes).toFixed(2); - - $('#txtEditAfterOtherTax').val(Otherval); - } - else - { - $('#txtEditAfterOtherTax').val("0.00"); - } - calculateEditTotalValue(); - - } - - } - } - - function calculateFreight(isEdit) - { - if(isEdit == '0') - { - if($('#MaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#MaterialCode').focus(); - $('#txtFreight').val('') ; - return false; - } - else if($('#Rate').val() == '') - { - alert('Please Enter the Rate value'); - $('#Rate').focus(); - $('#txtFreight').val('') ; - return false; - } - else - { - var basicValue = parseFloat($('#txtBasicValue').val()); - var FreightType =$("#drpFreight").val(); - - if(FreightType == "0") - { - alert('Please select Freight Type'); - $('#txtFreight').val(''); - $("#drpFreight").focus(); - } - else if( $('#txtFreight').val() != "0" && $('#txtFreight').val() != '') - { - var FreightValue = parseFloat($('#txtFreight').val()); - var UOM = parseFloat($('#UOM').val()); - var Quantity = parseFloat($('#Quantity').val()); - //alert(FreightType); - var AfterFreight = 0.0; - if(FreightType == PercentageType) - { - AfterFreight = <?php echo FREIGHT_PERCENTAGE;?>; - } - else if(FreightType == NilType) - { - AfterFreight = 0.0; - } - else if(FreightType == '<?php echo LUMPSUM;?>') - { - AfterFreight = <?php echo FREIGHT_LUMPSUM;?>; - } - else if(FreightType == '<?php echo PERUOM;?>') - { - AfterFreight = <?php echo FREIGHT_PERUOM;?>; - } - else if(FreightType == '<?php echo PERTRIP;?>') - { - AfterFreight = <?php echo FREIGHT_PERTRIP;?>; - } - else { - AfterFreight = $("#txtFreight").val(); - } - var AfterFreightval = parseFloat(AfterFreight).toFixed(2); - - $('#txtAfterFreight').val(AfterFreightval); - } - else - { - $('#txtAfterFreight').val("0.00"); - } - - } - calculateTotalValue(); - } - else - { - if($('#EditRevenueMaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#EditRevenueMaterialCode').focus(); - $('#txtEditFreight').val(''); - return false; - } - else if($('#EditRevenueRate').val() == '') - { - alert('Please Enter the Rate value'); - $('#EditRevenueRate').focus(); - $('#txtEditFreight').val(''); - return false; - } - else - { - var basicValue = parseFloat($('#txtEditRevenueBasicValue').val()); - var FreightType =$("#drpEditFreight").val(); - if(FreightType == "0") - { - alert('Please select Freight Type'); - $('#txtEditFreight').val(''); - $("#drpEditFreight").focus(); - } - else if( $('#txtEditFreight').val() != "0" && $('#txtEditFreight').val() != '') - { - var FreightValue = parseFloat($('#txtEditFreight').val()); - var UOM = parseFloat($('#EditRevenueUOM').val()); - var Quantity = parseFloat($('#EditRevenueQuantity').val()); - //alert(FreightType); - var AfterFreight = 0.0; - if(FreightType == PercentageType) - { - AfterFreight = <?php echo FREIGHT_PERCENTAGE;?>; - } - else if(FreightType == NilType) - { - AfterFreight = 0.0; - } - else if(FreightType == '<?php echo LUMPSUM;?>') - { - AfterFreight = <?php echo FREIGHT_LUMPSUM;?>; - } - else if(FreightType == '<?php echo PERUOM;?>') - { - AfterFreight = <?php echo FREIGHT_PERUOM;?>; - } - else if(FreightType == '<?php echo PERTRIP;?>') - { - AfterFreight = <?php echo FREIGHT_PERTRIP;?>; - } - else { - AfterFreight = $("#txtEditFreight").val(); - } - var AfterFreightval = parseFloat(AfterFreight).toFixed(2); - - $('#txtEditAfterFreight').val(AfterFreightval); - } - else - { - $('#txtEditAfterFreight').val("0.00"); - } - - } - calculateEditTotalValue(); - - } - } - - /* Set the Packaging calculation option for calculating Packaging */ - function SetPackagingOption() - { - PackagingCalculation = $("input:radio[name='optPackaging']:checked").val(); - $('#packagingcalmodel').modal('hide'); - } - /* Set the Packaging calculation option for calculating Packaging */ - function SetExciseCalculation() - { - ExciseCalculation = $("input:radio[name='optExcise']:checked").val(); - $('#ExciseDutyCalModel').modal('hide'); - calculateExcise($('#isEdit').val()); - } - /* Set the Packaging calculation option for calculating Packaging */ - function SetVatorCST() - { - StateTaxCheck = $("input:radio[name='Range']:checked").val(); - $('#txtPoRange').val(StateTaxCheck) ; - //alert('Radio clicke:'+StateTaxCheck); - if(StateTaxCheck == "0") - { - // style="display:none;" - $('#Vat').removeAttr("style"); - $('#TotVat').removeAttr("style"); - $('#CST').attr("style","display:none;"); - $('#TotCST').attr("style","display:none;"); - - } - else - { - $('#CST').removeAttr("style"); - $('#TotCST').removeAttr("style"); - $('#Vat').attr("style","display:none;"); - $('#TotVat').attr("style","display:none;"); - - } - } - - function SetVatCalculation() - { - VatCalculation = $("input:radio[name='optVat']:checked").val(); - $('#VatCalModel').modal('hide'); - calculateVat($('#isEdit').val()); - } - function SetCSTCalculation() - { - CSTCalculation = $("input:radio[name='optCST']:checked").val(); - $('#CSTCalModel').modal('hide'); - calculateCST($('#isEdit').val()); - } - function Editchange(){ - var isEdit=1; - // ExceedEditQuantityCheck(); - if($('#EditRevenueQuantity').val() != '' && $('#EditRevenueRate').val() != '') - { - var txtQuantity = parseFloat( $('#EditRevenueQuantity').val()); - var txtUnitPrice = parseFloat($('#EditRevenueRate').val()); - var Tot = txtQuantity * txtUnitPrice - $('#txtEditRevenueBasicValue').val(Tot); - calculateDiscount(isEdit); - calculatePackaging(isEdit); - calculateExcise(isEdit); - calculateCST(isEdit); - calculateGST(isEdit); - calculateOtherTaxes(isEdit); - calculateFreight(isEdit) - calculateEditVatValue(); - calculateEditTotalValue(); - - } - -} - function change(){ - var isEdit=0; - // ExceedEditQuantityCheck(); - if($('#Quantity').val() != '' && $('#Rate').val() != '') - { - var txtQuantity = parseFloat( $('#Quantity').val()); - var txtUnitPrice = parseFloat($('#Rate').val()); - var Tot = txtQuantity * txtUnitPrice - $('#txtBasicValue').val(Tot); - - if ($("#DiscountType").val()!=0) { - calculateDiscount(isEdit); - } - if ($("#PackagingType").val()!=0) { - calculatePackaging(isEdit); - } - - if($("#txtVat").val()!=''){ - calculateVat(isEdit); - } - if($("#txtCST").val()!=''){ - - calculateCST(isEdit); - } - if($("#txtExciseDuty").val()!=''){ - calculateExcise(isEdit); - - } - if($("#txtGST").val()!=''){ - calculateGST(isEdit); - - } - if($("#txtOtherTax").val()!=''){ - calculateOtherTaxes(isEdit); - - } - - if($("#drpFreight").val()!=0){ - calculateFreight(isEdit); - - } - - - - - - - calculateTotalValue($('#isEdit').val()); - - } - -} - - - function ExceedQuantityCheck() - { - // RequistQuantity - var EnterQuantity = $("#Quantity").val()== '' ? "0.00" : parseFloat($("#Quantity").val()); - var ReqQuantity = parseFloat(RequistQuantity); - if(EnterQuantity > ReqQuantity) - { - alert('Your exceeding the Quantity from the Requisition Quantity:'+ RequistQuantity +'.Please adjust the Quantity to proceed further.'); - //$('#Quantity').val(RequistQuantity); - $('#Quantity').focus(); - return false; - } - } - - function calculateEditTotalValue() - { - var Packaging = $('#txtEditAfterPackaging').val() == '' ? '0.00' : $('#txtEditAfterPackaging').val(); - var ExciseDuty = $('#txtEditAfterExciseDuty').val() == '' ? '0.00' : $('#txtEditAfterExciseDuty').val(); - var Vat = $('#txtEditAfterVat').val() == '' ? '0.00' : $('#txtEditAfterVat').val(); - var CST = $('#txtEditAfterCST').val() == '' ? '0.00' : $('#txtEditAfterCST').val(); - var GST = $('#txtEditAfterGST').val() == '' ? '0.00' : $('#txtEditAfterGST').val(); - var OtherTax = $('#txtEditAfterOtherTax').val() == '' ? '0.00' : $('#txtEditAfterOtherTax').val(); - var Freight = $('#txtEditAfterFreight').val() == '' ? '0.00' : $('#txtEditAfterFreight').val(); - var Insurance = $('#txtEditInsurance').val() == '' ? '0.00' : $('#txtEditInsurance').val(); - var Discount = $('#txtEditAfterDiscount').val() == '' ? '0.00' : $('#txtEditAfterDiscount').val(); - var BasicVal = $('#txtEditRevenueBasicValue').val() == '' ? '0.00' : $('#txtEditRevenueBasicValue').val(); - - var totvalue = ( parseFloat(BasicVal) + parseFloat(Packaging)+ parseFloat(ExciseDuty)+ parseFloat(Vat) + parseFloat(CST)+ parseFloat(GST) + parseFloat(OtherTax) + parseFloat(Freight) + parseFloat(Insurance)) - parseFloat(Discount); - - var tot = parseFloat(totvalue).toFixed(2); - - $('#txtEditRevenueTotalOrderValue').val(tot); - validateEditExceedLimit(); - } - // calculate vat rate - - function calculateEditVatValue() - { - var basicValue = parseFloat($('#txtEditRevenueBasicValue').val()); - - var discountValue = parseFloat($('#txtEditAfterDiscount').val()); - var packageValue = parseFloat($('#txtEditAfterPackaging').val()); - - - var ExciseDuty = parseFloat($('#txtEditAfterExciseDuty').val()); - vatValue = parseFloat($('#txtEditVat').val()); - AfterVat = <?php echo VAT_ONEXICSEVALUE; ?>; - var Vatval = parseFloat(AfterVat).toFixed(2); - - $('#txtEditAfterVat').val(Vatval); - - - } - // To Reset the Tax calculation - function resetTaxField() - { - - $("#ItemName").val(''); - $("#UOM").val(''); - $("#Quantity").val(''); - $("#Rate").val(''); - $("#DiscountType").val("0"); - $("#txtDiscount").val(''); - $('#txtAfterDiscount').val(''); - $("#PackagingType").val("0") - $("#txtPackaging").val(''); - $('#txtAfterPackaging').val(''); - $("#txtExciseDuty").val(''); - $('#txtAfterExciseDuty').val(''); - $("#txtVat").val(''); - $('#txtAfterVat').val(''); - $("#txtCST").val(''); - $('#txtAfterCST').val(''); - $("#txtGST").val(''); - $('#txtAfterGST').val(''); - $("#txtOtherTax").val(''); - $('#txtAfterOtherTax').val(''); - $("#drpFreight").val("0") - $("#txtFreight").val(''); - $('#txtAfterFreight').val(''); - $('#txtInsurance').val(''); - $('#txtTotalOrderValue').val(''); - ExciseCalculation = ''; - PackagingCalculation = ''; - VatCalculation = ''; - CSTCalculation = ''; - } - function showmodel() { - - - var input = document.getElementById('purpose').value; - var avaBud=document.getElementById('AvalBuget').value; - var getLocal = document.getElementById('Local').value; - StateTaxCheck = $("input:radio[name='Range']:checked").val(); - - // $('#txtPoRange').val(StateTaxCheck) ; - //alert('Radio clicke:'+StateTaxCheck); - - if (input == -1) - { - alert ("Select Request Type"); - } - else if(avaBud==''){ - alert ("Select Cost Center Name"); - } - else - { - $("#" + input ).modal('show'); - $('#isEdit').val(0); - if(StateTaxCheck == "0") - { - // style="display:none;" - // $('#Vat').removeAttr("style"); - // $('#TotVat').removeAttr("style"); - // $('#CST').attr("style","display:none;"); - // $('#TotCST').attr("style","display:none;"); - $('#Vat').show(); - $('#CST').hide(); - - } - else - { - // $('#CST').removeAttr("style"); - // $('#TotCST').removeAttr("style"); - // $('#Vat').attr("style","display:none;"); - // $('#TotVat').attr("style","display:none;"); - $('#Vat').hide(); - $('#CST').show(); - - } - } - } - $(document).ready(function(){ - - //Initialize Select2 Elements - $("#purpose").select2(); - $("#DepartmentName").select2(); - $("#CostCenterName").select2(); - }); - function DeleteRevenueRow(rowid) -{ - var DelRows = $('#txtDeletedRow1').val(); - - //alertMaterialListrowid); - - var answer = confirm(" Do you want to delete the Item from the List?") - if (answer) - { - var td = document.getElementById(rowid); - td.parentNode.removeChild(td); - var materialCode = $('#materialCode'+rowid).val(); - var removeItem = $('#materialCode'+rowid).val(); - - - //This function is used to add material list after delete - $.each(JSON.parse(materialData), function (index, value) { - if (value.MaterialCode==materialCode) { - $("#MaterialCode").append( $('<option></option>').val(value.MaterialCode).html(value.MaterialCode + "-" + value.MaterialName) ); - } - }); - - SelectedMaterialCode.splice( SelectedMaterialCode.indexOf('removeItem'), 1 ); - - - if(DelRows != '') - { - DelRows = DelRows + ":" + rowid; - } - else - { - DelRows= "0" + ":" + rowid; - } - - $('#txtDeletedRow1').val(DelRows); - populateValueMainFormForDeleteItem(rowid); - - } - -} - -function populateValueMainFormForDeleteItem(rowid) -{ - - - // alert(rows); - var totBasicAmt = $('#txtTotBasicAmountRevenue').val(); - var totDiscountAmt = $('#txtTotalDiscount').val();; - var totPackagingAmt = $('#txtTotalPackaing').val();; - var totExciseAmt = $('#txtTotExciseDuty').val();; - var totVATAmt = $('#txtTotalVat').val();; - var totCSTAmt = $('#txtTotCST').val();; - var totGSTAmt = $('#txtTotalGST').val();; - var totOtherTaxAmt = $('#txtTotalOtherTaxes').val();; - var totFreightAmt = $('#txtTotalFreight').val();; - var totInsuranceAmt = $('#txtTotalInsurance').val();; - var totOrderSummaryAmt = $('#txtTotalOrderValueSummary').val(); - - - var Packaging = $('#AfterPackVal'+rowid).val() == '' ? '0.00' : $('#AfterPackVal'+rowid).val(); - var ExciseDuty = $('#AfterExciseVal'+rowid).val() == '' ? '0.00' : $('#AfterExciseVal'+rowid).val(); - var Vat = $('#AfterVatVal'+rowid).val() == '' ? '0.00' : $('#AfterVatVal'+rowid).val(); - var CST =$('#AfterCSTVal'+rowid).val() == '' ? '0.00' : $('#AfterCSTVal'+rowid).val(); - var GST = $('#AfterGSTVal'+rowid).val() == '' ? '0.00' : $('#AfterGSTVal'+rowid).val(); - var OtherTax = $('#AfterOtherTaxVal'+rowid).val() == '' ? '0.00' : $('#AfterOtherTaxVal'+rowid).val(); - var Freight = $('#AfterFreightVal'+rowid).val() == '' ? '0.00' : $('#AfterFreightVal'+rowid).val(); - var Insurance = $('#Insval'+rowid).val() == '' ? '0.00' : $('#Insval'+rowid).val(); - var Discount =$('#AfterDisVal'+rowid).val() == '' ? '0.00' : $('#AfterDisVal'+rowid).val(); - var BasicVal = $('#basicval'+rowid).val() == '' ? '0.00' : $('#basicval'+rowid).val(); - var TotalVal =$('#TotalOrderValue'+rowid).val() == '' ? '0.00' : $('#TotalOrderValue'+rowid).val(); - //alert(TotalVal); - - - totBasicAmt = parseFloat(totBasicAmt ) - parseFloat(BasicVal); - totDiscountAmt = parseFloat(totDiscountAmt ) - parseFloat(Discount); - totPackagingAmt = parseFloat(totPackagingAmt) - parseFloat(Packaging); - totExciseAmt = parseFloat(totExciseAmt) - parseFloat(ExciseDuty); - totVATAmt = parseFloat(totVATAmt ) - parseFloat(Vat); - totCSTAmt = parseFloat(totCSTAmt ) - parseFloat(CST); - totGSTAmt = parseFloat(totGSTAmt ) - parseFloat(GST); - totOtherTaxAmt = parseFloat(totOtherTaxAmt ) - parseFloat(OtherTax); - totFreightAmt = parseFloat(totFreightAmt ) - parseFloat(Freight); - totInsuranceAmt = parseFloat(totInsuranceAmt ) - parseFloat(Insurance); - totOrderSummaryAmt = parseFloat(totOrderSummaryAmt ) - parseFloat(TotalVal); - - - - - $('#txtTotBasicAmountRevenue').val(parseFloat(totBasicAmt).toFixed(2) ); - $('#txtTotalDiscount').val(parseFloat(totDiscountAmt).toFixed(2) ); - $('#txtTotalPackaing').val(parseFloat(totPackagingAmt).toFixed(2) ); - $('#txtTotExciseDuty').val(parseFloat(totExciseAmt).toFixed(2) ); - $('#txtTotalVat').val(parseFloat(totVATAmt).toFixed(2) ); - $('#txtTotCST').val(parseFloat(totCSTAmt).toFixed(2) ); - $('#txtTotalGST').val(parseFloat(totGSTAmt).toFixed(2) ); - $('#txtTotalOtherTaxes').val(parseFloat(totOtherTaxAmt).toFixed(2) ); - $('#txtTotalFreight').val(parseFloat(totFreightAmt).toFixed(2) ); - $('#txtTotalInsurance').val(parseFloat(totInsuranceAmt).toFixed(2) ); - $('#txtTotalOrderValueSummary').val(parseFloat(totOrderSummaryAmt).toFixed(2) ); - -} -</script> -<style> -.num{ - text-align:right; -} -</style> -<div class="content-wrapper"> - <?php - $attributes = array('class' => 'form-label-left CreatealterPO ','name' => 'CreatealterPO','id' => 'CreatealterPO'); - - echo form_open($this->config->base_url().'/purchaseorder/addalterPO/',$attributes); ?> - - <section class="content"> - <div id="content"></div> - <div> - <center><b><h2>Siddharth Industries - Emergency Purchase Order</h2></b></center></div> - <div class="container-fluid"> - - <div class="row"> - <div class="col-md-12"> - <div class="row"> - <div class="col-md-3"> - <label>Request Type </label> - <?php - $options = array("-1"=>'Select Request Type'); - - if(!empty($RequestType)) - { - foreach ($RequestType as $RID): - - - $options[$RID->ConfigValue] = $RID->ConfigValue; - - endforeach; - } - - echo form_dropdown('RequestType', $options,set_value('ConfigValue'),'id="purpose"' ,'class = "form-control select2"','required="true"'); - - ?> - - </div> - <div class="col-md-3"> - <label>Purchase Order Date</label> - <div class="form-group"> - <?php - $data = array('name' => 'PODate','value' => set_value('PODate'),'id'=>'PODate', 'class' => 'form-control num' ,'required' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-3"> - <label>Purchase Order Type</label> - <div class="form-group"> - - <?php - $data = array('name' => 'POType','value' => set_value('POType',$ReqType),'id'=>'POType', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - - - <div class="col-md-3"> - - <b><u>Select Delivery By</u></b><br/> - <tr> - <td> - <?php echo form_label('Date', 'Date') ."&nbsp;&nbsp;". form_radio(array("name"=>"DateRange", "id"=>"Date", "value"=>"0", 'checked'=>set_radio('DateRange', '0', TRUE))); ?>&nbsp;&nbsp;&nbsp;&nbsp;</td> - <td> - <?php echo form_label('Schedule', 'Schedule') ."&nbsp;&nbsp;". form_radio(array("name"=>"DateRange", "id"=>"Schedule", "value"=>"1", 'checked'=>set_radio('DateRange', '1', FALSE))); ?> - - </td> - </tr> - </div> - - - </div> - <div class="row"> - <div class="col-md-3"> - <label>Supplier</label> - <div > - <?php - $options = array("0"=>'Select Supplier'); - //print_r( $options); - - if(!empty($Suplist)) - { - foreach ($Suplist as $SID): - - - $options[$SID->SupplierID] = $SID->SupplierID.' '.' - '.' '.$SID->SupplierName; - - endforeach; - } - - echo form_dropdown('drpSupplier', $options,set_value('drpSupplier'),'id="drpSupplier"' ,'required="true"' ,'class="form-control select2"'); - - ?> - </div> - </div> - - <div class="col-md-3"> - <label>Address</label> - <div class="form-group"> - <?php - $data = array('name' => 'SupAddress','value' => set_value('SupAddress'),'id'=>'SupAddress', 'class' => 'form-control' ,'readonly' => 'true' ,'rows' => '3', 'cols' => '40'); - echo Form_textarea($data); - ?> - </div> - </div> - <div class="col-md-3"> - <label>Delivery Address</label> - <div class="form-group"> - <?php - $data = array('name' => 'DeliveryAddr','value' => set_value('DeliveryAddr',$CompanyAddress),'id'=>'DeliveryAddr', 'class' => 'form-control' ,'required' => 'true' ,'rows' => '3', 'cols' => '40'); - echo Form_textarea($data); - ?> - - </div> - </div> - <div class="col-md-3"> - - <div class="col-md-12" id="Schedulediv" style="display:none;"> - <label >Schedule :</label> - - <?php - $data = array('name' => 'Scheduleby','value' => set_value('Scheduleby'),'id'=>'Scheduleby', 'class' => 'form-control' ,'required' => 'true' ,'rows' => '3', 'cols' => '40'); - echo Form_textarea($data); - ?> - - </div> - <div class="col-md-12" id="Deliverydtdiv"> - <label>Delivery Date</label> - - <?php - $data = array('name' => 'Deliverydt','value' => set_value('Deliverydt'),'id'=>'Deliverydt', 'class' => 'form-control num' ,'required' => 'true'); - echo form_input($data); - ?> - - </div> - - </div> - - </div> - <div class="row"> - <div class="col-md-3"> - <label>Department Name</label> - <div > - <?php - $options = array("0"=>'Select Department Name'); - - if(!empty($DeptList)) - { - foreach ($DeptList as $DID): - - - $options[$DID->DEPCode] = $DID->DEPCode.' '.' - '.' '.$DID->DepartmentName; - - endforeach; - } - - echo form_dropdown('drpDepartment', $options,set_value('drpDepartment'),'id="DepartmentName"' ,'class = "form-control select2"','required="true"'); - - ?> - - </div> - </div> - <div class="col-md-3"> - <label>Cost Center Name</label> - <div > - <?php - $options = array("0"=>'Cost Center Name'); - //print_r( $options); - - if(!empty($POType)) - { - foreach ($SupplierName as $SID): - - - $options[$SID->SupplierID] = $SID->SupplierID.' '.' - '.' '.$SID->SupplierName; - - endforeach; - } - - echo form_dropdown('CostCenterName', $options,set_value('CostCenterName'),'id="CostCenterName"','class="form-control select2"' , 'required="true"' ,'multiple="true"'); - - ?> - </div> - </div> - <div class="col-md-3"> - <label>Available Budget</label><img id="AlertImg" src="<?php echo base_url(); ?>assets/dist/img/red.png" alt="your image" width="25px" style="display:none;"/> - <div class="form-group"> - <?php - $data = array('name' => 'AvalBuget','value' => set_value('AvalBuget'),'id'=>'AvalBuget', 'class' => 'form-control num' ,'required' => 'true' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - - <div class="col-md-3" style='display:none;' id='txtPoRange'> - - <b><u>Select Tax Range</u></b><br/> - <tr> - <td> - <?php echo form_label('Local', 'Local') ."&nbsp;&nbsp;". form_radio(array("name"=>"Range", "id"=>"Local", "value"=>"0", 'checked'=>set_radio('Range', '0', TRUE))); ?>&nbsp;&nbsp;&nbsp;&nbsp;</td> - <td> - <?php echo form_label('Inter state', 'Inter state') ."&nbsp;&nbsp;". form_radio(array("name"=>"Range", "id"=>"Inter_state", "value"=>"1", 'checked'=>set_radio('Range', '1', FALSE))); ?> - - </td> - </tr> - - - </div> - <div class="col-md-3" id="currencyexchange" style='display:none;'> - <div class="col-md-6"> - <label>Currency Type</label> - - <?php - $data = array('name' => 'txtcurrencytype','value' => set_value('txtcurrencytype'),'id'=>'txtcurrencytype', 'class' => 'form-control' ,'required' => 'true'); - echo form_input($data); - ?> - - </div> - <div class="col-md-6"> - <label>Exchange Rate</label> - - <?php - $data = array('name' => 'txtexachangerate','value' => set_value('txtexachangerate'),'id'=>'txtexachangerate', 'class' => 'form-control' ,'required' => 'true'); - echo form_input($data); - ?> - - </div> - <div class="col-md-12"> - <a href="http://www.xe.com/" target="_blank"><u>To check Today's Foreign Exchange value</u></a> - </div> - </div> - - - </div> - </div> - <div class="col-md-12"> - <div class="col-md-1 col-md-offset-11" align="right" > - <a data-toggle="modal" onclick="showmodel();" class=" btn btn-primary"> Add Line Item </a> - </div> - </div> - </div> - <!-- Modal for Packing Calculation --> - <div id="packagingcalmodel" class="modal fade" data-backdrop-limit="1" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" > - <div class="modal-dialog"> - - <!-- Modal content--> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal">&times;</button> - <h4 class="modal-title">Packing Calculation On</h4> - </div> - <div class="modal-body"> - <form> - - <div class="radio"> - <label><input type="radio" name="optPackaging" checked="checked" value='0' id="optPackaging"> Basic Amount</label> - </div> - <div class="radio"> - <label><input type="radio" name="optPackaging" id="optPackaging" value='1' > After Discount Amount</label> - </div> - </form> - </div> - <div class="modal-footer"> - - <a class="btn btn-primary" ID="PackagingOption" onclick="SetPackagingOption();" style="margin-top: -24px;">&nbsp;&nbsp;<span class="bold">Ok</span></a> - <a class="btn btn-primary" data-dismiss="modal" style="margin-top: -24px;" value="Cancel">Cancel</a> - </div> - </div> - - </div> - </div> - - <!-- Modal for Excise Duty Calculation--> - <div class="modal fade" id="ExciseDutyCalModel" role="dialog"> - <div class="modal-dialog"> - - <!-- Modal content--> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal">&times;</button> - <h4 class="modal-title">Excise Duty Calculation On</h4> - </div> - <div class="modal-body"> - <form> - <div class="radio"> - <label><input type="radio" name="optExcise" checked="checked" value="0" id="optExcise">From Basic Amount</label> - </div> - <div class="radio"> - <label><input type="radio" name="optExcise" value="1" id="optExcise">Basic Amount - Discount Amount</label> - </div> - <div class="radio"> - <label><input type="radio" name="optExcise" value="2" id="optExcise">(Basic Amount - Discount Amount ) + Packing Cost</label> - </div> - <div class="radio"> - <label><input type="radio" name="optExcise" value="3" id="optExcise">Basic Amount + Packing Cost</label> - </div> - - </form> - </div> - <div class="modal-footer"> - <a class="btn btn-primary" ID="ExciseOption" onclick="SetExciseCalculation();" style="margin-top: -24px;">&nbsp;&nbsp;<span class="bold">Ok</span></a> - <a class="btn btn-primary" data-dismiss="modal" style="margin-top: -24px;" value="Cancel">Cancel</a> - </div> - </div> - - </div> - </div> - - - <!-- Modal for Vat Calculation --> - <div class="modal fade" id="VatCalModel" role="dialog"> - <div class="modal-dialog"> - - <!-- Modal content--> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal">&times;</button> - <h4 class="modal-title">Vat Calculation On</h4> - </div> - <div class="modal-body"> - <form> - - <div class="radio"> - <label><input type="radio" name="optVat" checked="checked" value="0" id="optVat">Basic Amount</label> - </div> - <div class="radio"> - <label><input type="radio" name="optVat" value="1" id="optVat">Excise Duty</label> - </div> - </form> - </div> - <div class="modal-footer"> - <a class="btn btn-primary" ID="VatOption" onclick="SetVatCalculation();" style="margin-top: -24px;">&nbsp;&nbsp;<span class="bold">Ok</span></a> - <a class="btn btn-primary" data-dismiss="modal" style="margin-top: -24px;" value="Cancel">Cancel</a> - </div> - </div> - - </div> - </div> - <!-- Modal for CST Calculation --> - <div class="modal fade" id="CSTCalModel" role="dialog"> - <div class="modal-dialog"> - - <!-- Modal for CST Calculation--> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal">&times;</button> - <h4 class="modal-title">CST Calculation On</h4> - </div> - <div class="modal-body"> - <form> - - <div class="radio"> - <label><input type="radio" name="optCST" checked="checked" value="0" id="optCST">Basic Amount</label> - </div> - <div class="radio"> - <label><input type="radio" name="optCST" value="1" id="optCST">Excise Duty</label> - </div> - </form> - </div> - <div class="modal-footer"> - <a class="btn btn-primary" ID="CSTOption" onclick="SetCSTCalculation();" style="margin-top: -24px;">&nbsp;&nbsp;<span class="bold">Ok</span></a> - <a class="btn btn-primary" data-dismiss="modal" style="margin-top: -24px;" value="Cancel">Cancel</a> - </div> - </div> - - </div> - </div> - <!-- Edit Modal content--> - <div class="modal fade" id="EDITSERVICE" role="dialog"> - <div class="modal-dialog"> - <!-- Modal content--> - <form> - <div class="modal-content" style="width:900px;"> - <div class="modal-header" style="background-color: #3c8dbc;color:#fff;"> - <button type="button" class="close" data-dismiss="modal">&times;</button> - <center><h4>Edit Service Purchase Order Item </h4></center> - </div> - <div align="left"> - - <div class="col-md-12"> - <div class="col-md-3"> - <label>Req No</label> - <div> - <?php - - $data = array('name' => 'EditReqNo','value' => set_value('EditReqNo'),'id'=>'EditReqNo', 'class' => 'form-control','readonly'=>'true'); - echo form_input($data); - ?> - - </div> - </div> - - <div class="col-md-3"> - <label>Department Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditdeptName','value' => set_value('EditdeptName'),'id'=>'EditdeptName', 'class' => 'form-control','readonly'=>'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-3"> - <label>Cost Center Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditCostCenter','value' => set_value('EditCostCenter'),'id'=>'EditCostCenter', 'class' => 'form-control','readonly'=>'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-3"> - <label>Available Budget Amount</label><img id="AlertImg" src="<?php echo base_url(); ?>assets/dist/img/red.png" alt="your image" width="25px" style="display:none;"/> - <div class="form-group"> - <?php - $data = array('name' => 'EditAvlBudAmt','value' => set_value('EditAvlBudAmt'),'id'=>'EditAvlBudAmt', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-2"> - <label>Item Code</label> - <div> - <?php - $options = array("0"=>'Item Code'); - //print_r( $options); - - echo form_dropdown('EditMaterialCode', $options,set_value('EditMaterialCode'),'id="EditMaterialCode"' ,'class="form-control"'); - - ?> - </div> - </div> - - <div class="col-md-2"> - <label>Item Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditItemName','value' => set_value('EditItemName'),'id'=>'EditItemName', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>UOM</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditUOM','value' => set_value('EditUOM'),'id'=>'EditUOM', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Quantity</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditQuantity','value' => set_value('EditQuantity'),'id'=>'EditQuantity', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'EditRatechange()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Rate</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditRate','value' => set_value('EditRate'),'id'=>'EditRate', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);' ,'onchange'=>'EditRatechange()' ); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Basic Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditBasicValue','value' => set_value('txtEditBasicValue'),'id'=>'txtEditBasicValue', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12" style="border:1px solid"> - <br/> - <div class="col-md-12"> - <div class="col-md-5 col-md-offset-4" align="right"> - - Service Tax @14% : - </div> - - <div class="col-md-3"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAfterServiceTax','value' => set_value('EditAfterServiceTax'),'id'=>'EditAfterServiceTax', 'class' => 'form-control num','readonly' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - - </div> - <div class="col-md-12"> - <div class="col-md-5 col-md-offset-4" align="right"> - Edu. cess @2% on service Tax : - - </div> - - <div class="col-md-3"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAfterEduCess','value' => set_value('EditAfterEduCess'),'id'=>'EditAfterEduCess', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - - </div> - <div class="col-md-12"> - - <div class="col-md-5 col-md-offset-4" align="right"> - Sec. & Higher Edu. cess @1 % on service Tax : - - </div> - - <div class="col-md-3"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAfterSecHighTax','value' => set_value('EditAfterSecHighTax'),'id'=>'EditAfterSecHighTax', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - </div> - <div class="col-md-12"> - - <div class="col-md-5 col-md-offset-4" align="right"> - Krishi Kalyan tax @.5 % on Basic Amount: - - </div> - - <div class="col-md-3"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAfterKrishiTax','value' => set_value('EditAfterKrishiTax'),'id'=>'EditAfterKrishiTax', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - </div> - <div class="col-md-12"> - - <div class="col-md-5 col-md-offset-4" align="right"> - Swachh Bharat tax @.5 % on Basic Amount: - - </div> - - <div class="col-md-3"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAfterSwachhTax','value' => set_value('EditAfterSwachhTax'),'id'=>'EditAfterSwachhTax', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - </div> - - <div class="col-md-12"> - <div class="col-md-5 col-md-offset-4" align="right"> - Total Order value : - </div> - <div class="col-md-3"> - <div class="form-group"> - <?php - $data = array('name' => 'EditTotalOrderValue','value' => set_value('EditTotalOrderValue'),'id'=>'EditTotalOrderValue', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - - </div> - - - <br/> - <br/> - <div class="modal-footer"> - <a class="btn btn-primary font EditService" ID="Edit" style="margin-top: -24px;">&nbsp;&nbsp;<span class="bold">Update Service</span></a> - <a class="btn btn-primary" data-dismiss="modal" style="margin-top: -24px;" value="Cancel">Cancel</a> - - </div> - </div> - </form> - - </div> - </div> - </div> - - - - - <div class="container-fluid"> - <table class="table table-bordered" style="border:1px solid #333"> - <div align="right" style="padding-right:10px"> - - <!-- Model for revenue PO --> - <div id="REVENUE" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> - <div class="modal-dialog"> - <!-- Modal content--> - <form> - <div class="modal-content" style="width:1000px;"> - <div class="modal-header" style="background-color: #3c8dbc;color:#fff;"> - <center><h4>Select Revenue Purchase Order Line Item </h4></center> - </div> - <div align="left"> - <div> - - <div class="col-md-12"> - <div class="col-md-2"> - <label>Item Code</label> - <div > - <?php - $options = array("0"=>'Item Code'); - - - echo form_dropdown('MaterialCode', $options,set_value('MaterialCode'),'id="MaterialCode"' ,'class="form-control"'); - - ?> - </div> - </div> - - <div class="col-md-2"> - <label>Item Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'ItemName','value' => set_value('ItemName'),'id'=>'ItemName', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>UOM</label> - <div class="form-group"> - <?php - $data = array('name' => 'UOM','value' => set_value('UOM'),'id'=>'UOM', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Quantity</label> - <div class="form-group"> - <?php - $data = array('name' => 'Quantity','value' => set_value('Quantity'),'id'=>'Quantity', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'change()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Rate</label> - <div class="form-group"> - <?php - $data = array('name' => 'Rate','value' => set_value('Rate'),'id'=>'Rate', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'change()' ); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Basic Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtBasicValue','value' => set_value('txtBasicValue'),'id'=>'txtBasicValue', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - </div><br/> - <div class="col-md-12" style="border : 1px solid"> - <div class="row"> - <div class="col-md-12"> - <div class="col-md-4"> - <label>Discount Type </label> - <div> - <?php - $options = array("0"=>'Select Discount Type'); - //print_r( $options); - - if(!empty($TaxType)) - { - foreach ($TaxType as $SID): - - - $options[$SID->ConfigValue] = $SID->ConfigValue; - - endforeach; - } - - echo form_dropdown('DiscountType', $options,set_value('DiscountType'),'id="DiscountType"' ,'class="form-control"'); - - ?> - </div> - </div> - <div class="col-md-2"> - <label>Discount Rate </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtDiscount','value' => set_value('txtDiscount'),'id'=>'txtDiscount', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);' ,'onchange'=>'calculateDiscount(0);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Discounted Amount </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtAfterDiscount','value' => set_value('txtAfterDiscount'),'id'=>'txtAfterDiscount', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div id="Vat" > - <div class="col-md-2" > - <label>Vat in %</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtVat','value' => set_value('txtVat'),'id'=>'txtVat', 'class' => 'form-control num','onchange'=>'calculateVat(0);' ); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2" > - <label>Vat Amount </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtAfterVat','value' => set_value('txtAfterVat'),'id'=>'txtAfterVat', 'class' => 'form-control num' ,'readonly' => 'true','onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div id="CST"> - <div class="col-md-2" > - <label>CST in %</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtCST','value' => set_value('txtCST'),'id'=>'txtCST', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'calculateCST(0);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2" > - <label>CST Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtAfterCST','value' => set_value('txtAfterCST'),'id'=>'txtAfterCST', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - </div> - </div> - <div class="row"> - <div class="col-md-12" style="text-align:left;"> - <div class="col-md-4"> - <label>Packaging Type </label> - <div> - <?php - $options = array("0"=>'Select Packaging Type'); - //print_r( $options); - - if(!empty($TaxType)) - { - foreach ($TaxType as $SID): - - - $options[$SID->ConfigValue] = $SID->ConfigValue; - - endforeach; - } - - echo form_dropdown('PackagingType', $options,set_value('PackagingType'),'id="PackagingType"' ,'class="form-control "'); - - ?> - </div> - </div> - <div class="col-md-2"> - <label>Packaging Rate </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtPackaging','value' => set_value('txtPackaging'),'id'=>'txtPackaging', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'calculatePackaging(0);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Packaging Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtAfterPackaging','value' => set_value('txtAfterPackaging'),'id'=>'txtAfterPackaging', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>GST in %</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtGST','value' => set_value('txtGST'),'id'=>'txtGST', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>' calculateGST(0);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>GST Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtAfterGST','value' => set_value('txtAfterGST'),'id'=>'txtAfterGST', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - - </div> - </div> - <div class="row"> - <div class="col-md-12 " > - <div class="col-md-2 col-md-offset-4"> - <label>Excise Duty in % </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtExciseDuty','value' => set_value('txtExciseDuty'),'id'=>'txtExciseDuty', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'calculateExcise(0);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label> Excise Duty Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtAfterExciseDuty','value' => set_value('txtAfterExciseDuty'),'id'=>'txtAfterExciseDuty', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Other Taxes in %</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtOtherTax','value' => set_value('txtOtherTax'),'id'=>'txtOtherTax', 'class' => 'form-control num','onkeypress'=>'return isNumberKey(event);','onchange'=>'calculateOtherTaxes(0);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Other Taxes Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtAfterOtherTax','value' => set_value('txtAfterOtherTax'),'id'=>'txtAfterOtherTax', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - - </div> - </div> - <div class="row"> - <div class="col-md-12" > - <div class="col-md-4"> - <label>Freight Type </label> - <div> - <?php - $options = array("0"=>'Select Freight Type'); - //print_r( $options); - - if(!empty($FreightType)) - { - foreach ($FreightType as $SID): - - - $options[$SID->ConfigValue] = $SID->ConfigValue; - - endforeach; - } - - echo form_dropdown('drpFreight', $options,set_value('drpFreight'),'id="drpFreight"' ,'class="form-control "'); - - ?> - </div> - </div> - <div class="col-md-2"> - <label>Freight Rate </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtFreight','value' => set_value('txtFreight'),'id'=>'txtFreight', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'calculateFreight(0);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Freight Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtAfterFreight','value' => set_value('txtAfterFreight'),'id'=>'txtAfterFreight', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <label> Insurance if Any</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtInsurance','value' => set_value('txtInsurance'),'id'=>'txtInsurance', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'calculateTotalValue(0);'); - echo form_input($data); - ?> - </div> - </div> - - - </div> - </div><hr/> - <div class="row"> - <div class="col-md-12" > - - <div class="col-md-4" align="right"> <label>Total Order Amount :</label></div> - <div class="col-md-4 "> - <div class="form-group"> - <?php - $data = array('name' => 'txtTotalOrderValue','value' => set_value('txtTotalOrderValue'),'id'=>'txtTotalOrderValue', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4 "> - - <a class="btn btn-primary font AddRevenue" ID="AddRevenue"><i class="fa fa-plus"></i>&nbsp;&nbsp;<span class="bold">Add Revenue</span></a> - <a class="btn btn-primary" data-dismiss="modal" value="Cancel">Cancel</a> - </div> - </div> - </div> - </div> - <br/><br/> - <!-- footer for revenue po --> - <div class="modal-footer"> - - </div> - </div> - - </div> - </form> - </div> - </div> - - <!-- Model for service PO --> - <div class="modal fade" id="SERVICE" role="dialog"> - <div class="modal-dialog"> - <!-- Modal content--> - <form> - <div class="modal-content" style="width:900px;"> - <div class="modal-header" style="background-color: #3c8dbc;color:#fff;"> - <center><h4>Add Service Purchase Order Item </h4></center> - </div> - <div align="left"> - - <div class="col-md-12"> - <div class="col-md-2"> - <label>Item Code</label> - <div> - <?php - $options = array("0"=>'Item Code'); - //print_r( $options); - - if(!empty($MaterialList)) - { - foreach ($MaterialList as $SID): - - - $options[$SID->MaterialCode] = $SID->MaterialCode.' '.' - '.' '.$SID->MaterialName; - - endforeach; - } - - echo form_dropdown('ServiceMaterialCode', $options,set_value('ServiceMaterialCode'),'id="ServiceMaterialCode"' ,'class="form-control"'); - - ?> - </div> - </div> - - <div class="col-md-2"> - <label>Item Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'ServiceDescription','value' => set_value('ServiceDescription'),'id'=>'ServiceDescription', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>UOM</label> - <div class="form-group"> - <?php - $data = array('name' => 'ServiceUOM','value' => set_value('ServiceUOM'),'id'=>'ServiceUOM', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Quantity</label> - <div class="form-group"> - <?php - $data = array('name' => 'ServiceQuantity','value' => set_value('ServiceQuantity'),'id'=>'ServiceQuantity', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Rate</label> - <div class="form-group"> - <?php - $data = array('name' => 'ServiceRate','value' => set_value('ServiceRate'),'id'=>'ServiceRate', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);' ,'onchange'=>'Ratechange()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Basic Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'ServiceBasAmt','value' => set_value('ServiceBasAmt'),'id'=>'ServiceBasAmt', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-12"> - <div class="col-md-4" align="right"> - - - </div> - <div class="col-md-4" align="right"> - - Service Tax @14% : - </div> - - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterServiceTax','value' => set_value('AfterServiceTax'),'id'=>'AfterServiceTax', 'class' => 'form-control num' ,'placeholder' => 'After Service Tax','readonly' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - - </div> - <div class="col-md-12"> - <div class="col-md-4" align="right"> - - - </div> - <div class="col-md-4" align="right"> - Edu. cess @2% on service Tax : - - </div> - - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterEduCess','value' => set_value('AfterEduCess'),'id'=>'AfterEduCess', 'class' => 'form-control num' ,'placeholder' => 'After Edu.','readonly' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - - </div> - <div class="col-md-12"> - <div class="col-md-4" align="right"> - - - </div> - - <div class="col-md-4" align="right"> - Sec. & Higher Edu. cess @1 % on service Tax : - - </div> - - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterSecHighTax','value' => set_value('AfterSecHighTax'),'id'=>'AfterSecHighTax', 'class' => 'form-control num' ,'placeholder' => 'After High Edu.','required' => 'true','readonly' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4" align="right"> - - - </div> - - <div class="col-md-4" align="right"> - Krishi Kalyan tax : - - </div> - - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterKrishiTax','value' => set_value('AfterKrishiTax'),'id'=>'AfterKrishiTax', 'class' => 'form-control num' ,'placeholder' => 'After Krishi Kalyan tax.','required' => 'true','readonly' => 'true'); - echo form_input($data); - ?> - - </div> - - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4" align="right"> - - - </div> - - <div class="col-md-4" align="right"> - Swachh Bharat tax : - - </div> - - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterSwachhTax','value' => set_value('AfterSwachhTax'),'id'=>'AfterSwachhTax', 'class' => 'form-control num' ,'placeholder' => 'After High Edu.','readonly' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - </div> - - <div class="col-md-6 col-md-offset-6" > - <label>Total Order value</label> - <div class="form-group"> - <?php - $data = array('name' => 'TotalOrderValue','value' => set_value('TotalOrderValue'),'id'=>'TotalOrderValue', 'class' => 'form-control num' ,'placeholder' => 'Total value','readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - - </div> - <br/> - <div class="modal-footer"> - <a class="btn btn-info font AddService" ID="AddService" style="margin-top: -1%;"><i class="fa fa-plus"></i>&nbsp;&nbsp;<span class="bold">Add Service</span></a> - <a class="btn btn-info" data-dismiss="modal" style="margin-top: -1%;" value="Cancel">Cancel</a> - - </div> - </div> - </form> - - </div> - </div> - - - <!-- model for import PO --> - - <div class="modal fade" id="IMPORT" role="dialog"> - <div class="modal-dialog"> - <!-- Modal content--> - <form> - <div class="modal-content" style="width:900px;"> - <div class="modal-header" style="background-color: #3c8dbc;color:#fff;"> - <button type="button" class="close" data-dismiss="modal">&times;</button> - <center><h4>Add Import Purchase Order Item </h4></center> - </div> - <div align="left"> - - <div class="col-md-12"> - <div class="col-md-3"> - <label>Req No</label> - <div> - <?php - $options = array("0"=>'Req No'); - echo form_dropdown('ImportMaterialCode', $options,set_value('ImportMaterialCode'),'id="ImportMaterialCode"' ,'class="form-control required"'); - - ?> - </div> - </div> - - <div class="col-md-3"> - <label>Department Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'ImportDepartmentName','value' => set_value('ImportDepartmentName'),'id'=>'ImportDepartmentName', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-3"> - <label>Cost Center Name</label> - <div class="form-group"> - <?php - $options = array("0"=>'Select Cost Center'); - - echo form_dropdown('ImportCostCenter', $options,set_value('ImportCostCenter'),'id="ImportCostCenter"' ,'class="form-control"'); - - ?> - </div> - </div> - <div class="col-md-3"> - <label>Available Budget Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'importbudAmt','value' => set_value('importbudAmt'),'id'=>'importbudAmt', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-2"> - <label>Item Code</label> - <div> - <?php - $options = array("0"=>'Item Code'); - - if(!empty($MaterialList)) - { - foreach ($MaterialList as $SID): - - - $options[$SID->MaterialCode] = $SID->MaterialCode.' '.' - '.' '.$SID->MaterialName; - - endforeach; - } - - echo form_dropdown('ImportMaterialCode', $options,set_value('ImportMaterialCode'),'id="ImportMaterialCode"' ,'class="form-control"'); - - ?> - </div> - </div> - - <div class="col-md-2"> - <label>Item Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'ImportItemName','value' => set_value('ImportItemName'),'id'=>'ImportItemName', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>UOM</label> - <div class="form-group"> - <?php - $data = array('name' => 'ImUOM','value' => set_value('ImUOM'),'id'=>'ImUOM', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Quantity</label> - <div class="form-group"> - <?php - $data = array('name' => 'imQuantity','value' => set_value('imQuantity'),'id'=>'imQuantity', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Rate </label> - <div class="form-group"> - <?php - $data = array('name' => 'imRate','value' => set_value('imRate'),'id'=>'imRate', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);' ); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Basic Amount </label> - <div class="form-group"> - <?php - $data = array('name' => 'imTotalAmount','value' => set_value('imTotalAmount'),'id'=>'imTotalAmount', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - - <div class="col-md-3"> - - Basic Price in US $ per Ton : - - - <div class="form-group"> - <?php - $data = array('name' => 'imBasicPrice','value' => set_value('imBasicPrice'),'id'=>'imBasicPrice', 'class' => 'form-control num' ,'placeholder '=>'basic price','onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - - <div class="col-md-3"> - - Exchange Rate : - - - <div class="form-group"> - <?php - $data = array('name' => 'ExchangeRt','value' => set_value('ExchangeRt'),'id'=>'ExchangeRt', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - - </div> - - <div class="col-md-3"> - - Basic value in INR : - - - - <div class="form-group"> - <?php - $data = array('name' => 'INRBasicvalue','value' => set_value('INRBasicvalue'),'id'=>'INRBasicvalue', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <!--<div class="col-md-3"> - <a href="http://www.xe.com/" target="_blank"><u>Click nere to check Today's Foreign Exchange value</u></a> - </div>--> - - <div class="col-md-12" style="border:1px solid #000;padding:0px;"> - <br/> - <div class="col-md-6" style="padding:0px;"> - <div class="col-md-12"> - <div class="col-md-4" > - Basic Price: - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'BasicPriceTax','value' => set_value('BasicPriceTax'),'id'=>'BasicPriceTax', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterBasicPriceTax','value' => set_value('AfterBasicPriceTax'),'id'=>'AfterBasicPriceTax', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Landing charge - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'LandingCharge','value' => set_value('LandingCharge'),'id'=>'LandingCharge', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterLandingCharge','value' => set_value('AfterLandingCharge'),'id'=>'AfterLandingCharge', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - High seas sales charge - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'Highseas ','value' => set_value('Highseas'),'id'=>'Highseas', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterHighseas','value' => set_value('AfterHighseas'),'id'=>'AfterHighseas', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Custom duty : (a) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'Customduty','value' => set_value('Customduty'),'id'=>'Customduty', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterCustomduty','value' => set_value('AfterCustomduty'),'id'=>'AfterCustomduty', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Excise duty : (b) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'ExcisedutyTax','value' => set_value('ExcisedutyTax'),'id'=>'ExcisedutyTax', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterExcisedutyTax','value' => set_value('AfterExcisedutyTax'),'id'=>'AfterExcisedutyTax', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Excise duty ED_cess : (C) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'ExcisedutyEDcess','value' => set_value('ExcisedutyEDcess'),'id'=>'ExcisedutyEDcess', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterExcisedutyEDcess','value' => set_value('AfterExcisedutyEDcess'),'id'=>'AfterExcisedutyEDcess', 'class' => 'form-control num','readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Excise duty S & H cess :(d) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'ExcisedutySHcess','value' => set_value('ExcisedutySHcess'),'id'=>'ExcisedutySHcess', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterExcisedutySHcess','value' => set_value('AfterExcisedutySHcess'),'id'=>'AfterExcisedutySHcess', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Custom ED_cess : (e) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'CustomEDcess','value' => set_value('CustomEDcess'),'id'=>'CustomEDcess', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterCustomEDcess','value' => set_value('AfterCustomEDcess'),'id'=>'AfterCustomEDcess', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Custom S & H cess : (f) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'CustomSHcess','value' => set_value('CustomSHcess'),'id'=>'CustomSHcess', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterCustomSHcess','value' => set_value('AfterCustomSHcess'),'id'=>'AfterCustomSHcess', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - </div> - <div class="col-md-6" style="padding:0px;"> - <div class="col-md-12"> - <div class="col-md-4"> - Additional Excise duty : (g) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AdditionalExciseduty ','value' => set_value('AdditionalExciseduty'),'id'=>'AdditionalExciseduty', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterAdditionalExciseduty','value' => set_value('AfterAdditionalExciseduty'),'id'=>'AfterAdditionalExciseduty', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-8"> - Gross duty payable - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'Grossdutypayable ','value' => set_value('Grossdutypayable'),'id'=>'Grossdutypayable', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-8"> - Available Modvat set-off on import : - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AvailableModvat','value' => set_value('AvailableModvat'),'id'=>'AvailableModvat', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> (b + c + d + g) - </div> - </div> - - </div> - <div class="col-md-12"> - - <div class="col-md-8"> - Gross expenses due to custom duty: - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'Grossexpenses','value' => set_value('Grossexpenses'),'id'=>'Grossexpenses', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - </div> - - <div class="col-md-12"> - <center> <label>Cost of the product Per KG</label></center> - <hr/> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - purchase rate [Basic] - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'purchaserate','value' => set_value('purchaserate'),'id'=>'purchaserate', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4" style="margin-top: -4.8%"> - <span>Quantity</span> - <div class="form-group"> - <?php - $data = array('name' => 'PurQuantity','value' => set_value('PurQuantity'),'id'=>'PurQuantity', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - - </div> - <div class="col-md-12"> - - <div class="col-md-4"> - Custom Duty Expenses - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'CustomDutyExpenses ','value' => set_value('CustomDutyExpenses'),'id'=>'CustomDutyExpenses', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - - </div> - <div class="col-md-12"> - <div class="col-md-4"> - RMC Including Customers - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'RMCIncludingCustomers','value' => set_value('RMCIncludingCustomers'),'id'=>'RMCIncludingCustomers', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - - - </div> - - - </div> - </div> - </div> - - </div> - <div class="modal-footer"> - <a class="btn btn-info font AddImport" ID="AddImport" ><i class="fa fa-plus"></i>&nbsp;&nbsp;<span class="bold">Add Import</span></a> - <a class="btn btn-info" data-dismiss="modal" value="Cancel">Cancel</a> - - </div> - </div> - </form> - - </div> - </div> - - <!-- Model for Capital PO --> - <div class="modal fade" id="CAPITAL" role="dialog"> - <div class="modal-dialog"> - <!-- Modal content--> - <form> - <div class="modal-content" style="width:900px;"> - <div class="modal-header" style="background-color: #3c8dbc;color:#fff;"> - <button type="button" class="close" data-dismiss="modal">&times;</button> - <center><h4>Add Capital Purchase Order Item </h4></center> - </div> - <div align="left"> - - <div class="col-md-12"> - <div class="col-md-2"> - <label>Item Code</label> - <div> - <?php - $options = array("0"=>'Item Code'); - - if(!empty($MaterialList)) - { - foreach ($MaterialList as $SID): - - - $options[$SID->MaterialCode] = $SID->MaterialCode.' '.' - '.' '.$SID->MaterialName; - - endforeach; - } - - echo form_dropdown('ImportMaterialCode', $options,set_value('ImportMaterialCode'),'id="ImportMaterialCode"' ,'class="form-control"'); - - ?> - </div> - </div> - - <div class="col-md-2"> - <label>Item Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'ImportItemName','value' => set_value('ImportItemName'),'id'=>'ImportItemName', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>UOM</label> - <div class="form-group"> - <?php - $data = array('name' => 'ImUOM','value' => set_value('ImUOM'),'id'=>'ImUOM', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Quantity</label> - <div class="form-group"> - <?php - $data = array('name' => 'imQuantity','value' => set_value('imQuantity'),'id'=>'imQuantity', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Rate </label> - <div class="form-group"> - <?php - $data = array('name' => 'imRate','value' => set_value('imRate'),'id'=>'imRate', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);' ); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Basic Amount </label> - <div class="form-group"> - <?php - $data = array('name' => 'imTotalAmount','value' => set_value('imTotalAmount'),'id'=>'imTotalAmount', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - - <div class="col-md-3"> - - Basic Price in US $ per Ton : - - - <div class="form-group"> - <?php - $data = array('name' => 'imBasicPrice','value' => set_value('imBasicPrice'),'id'=>'imBasicPrice', 'class' => 'form-control' ,'placeholder '=>'basic price','onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - - <div class="col-md-3"> - - Exchange Rate : - - - <div class="form-group"> - <?php - $data = array('name' => 'ExchangeRt','value' => set_value('ExchangeRt'),'id'=>'ExchangeRt', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - - </div> - - <div class="col-md-3"> - - Basic value in INR : - - - - <div class="form-group"> - <?php - $data = array('name' => 'INRBasicvalue','value' => set_value('INRBasicvalue'),'id'=>'INRBasicvalue', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <!--<div class="col-md-3"> - <a href="http://www.xe.com/" target="_blank"><u>Click nere to check Today's Foreign Exchange value</u></a> - </div>--> - - <div class="col-md-12" style="border:1px solid #000;padding:0px;"> - <br/> - <div class="col-md-6" style="padding:0px;"> - <div class="col-md-12"> - <div class="col-md-4" > - Basic Price: - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'BasicPriceTax','value' => set_value('BasicPriceTax'),'id'=>'BasicPriceTax', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterBasicPriceTax','value' => set_value('AfterBasicPriceTax'),'id'=>'AfterBasicPriceTax', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Landing charge - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'LandingCharge','value' => set_value('LandingCharge'),'id'=>'LandingCharge', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterLandingCharge','value' => set_value('AfterLandingCharge'),'id'=>'AfterLandingCharge', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - High seas sales charge - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'Highseas ','value' => set_value('Highseas'),'id'=>'Highseas', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterHighseas','value' => set_value('AfterHighseas'),'id'=>'AfterHighseas', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Custom duty : (a) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'Customduty','value' => set_value('Customduty'),'id'=>'Customduty', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterCustomduty','value' => set_value('AfterCustomduty'),'id'=>'AfterCustomduty', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Excise duty : (b) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'ExcisedutyTax','value' => set_value('ExcisedutyTax'),'id'=>'ExcisedutyTax', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterExcisedutyTax','value' => set_value('AfterExcisedutyTax'),'id'=>'AfterExcisedutyTax', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Excise duty ED_cess : (C) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'ExcisedutyEDcess','value' => set_value('ExcisedutyEDcess'),'id'=>'ExcisedutyEDcess', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterExcisedutyEDcess','value' => set_value('AfterExcisedutyEDcess'),'id'=>'AfterExcisedutyEDcess', 'class' => 'form-control','readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Excise duty S & H cess :(d) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'ExcisedutySHcess','value' => set_value('ExcisedutySHcess'),'id'=>'ExcisedutySHcess', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterExcisedutySHcess','value' => set_value('AfterExcisedutySHcess'),'id'=>'AfterExcisedutySHcess', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Custom ED_cess : (e) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'CustomEDcess','value' => set_value('CustomEDcess'),'id'=>'CustomEDcess', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterCustomEDcess','value' => set_value('AfterCustomEDcess'),'id'=>'AfterCustomEDcess', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Custom S & H cess : (f) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'CustomSHcess','value' => set_value('CustomSHcess'),'id'=>'CustomSHcess', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterCustomSHcess','value' => set_value('AfterCustomSHcess'),'id'=>'AfterCustomSHcess', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - </div> - <div class="col-md-6" style="padding:0px;"> - <div class="col-md-12"> - <div class="col-md-4"> - Additional Excise duty : (g) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AdditionalExciseduty ','value' => set_value('AdditionalExciseduty'),'id'=>'AdditionalExciseduty', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterAdditionalExciseduty','value' => set_value('AfterAdditionalExciseduty'),'id'=>'AfterAdditionalExciseduty', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-8"> - Gross duty payable - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'Grossdutypayable ','value' => set_value('Grossdutypayable'),'id'=>'Grossdutypayable', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-8"> - Available Modvat set-off on import : - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AvailableModvat','value' => set_value('AvailableModvat'),'id'=>'AvailableModvat', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> (b + c + d + g) - </div> - </div> - - </div> - <div class="col-md-12"> - - <div class="col-md-8"> - Gross expenses due to custom duty: - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'Grossexpenses','value' => set_value('Grossexpenses'),'id'=>'Grossexpenses', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - </div> - - <div class="col-md-12"> - <center> <label>Cost of the product Per KG</label></center> - <hr/> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - purchase rate [Basic] - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'purchaserate','value' => set_value('purchaserate'),'id'=>'purchaserate', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4" style="margin-top: -4.8%"> - <span>Quantity</span> - <div class="form-group"> - <?php - $data = array('name' => 'PurQuantity','value' => set_value('PurQuantity'),'id'=>'PurQuantity', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - - </div> - <div class="col-md-12"> - - <div class="col-md-4"> - Custom Duty Expenses - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'CustomDutyExpenses ','value' => set_value('CustomDutyExpenses'),'id'=>'CustomDutyExpenses', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - - </div> - <div class="col-md-12"> - <div class="col-md-4"> - RMC Including Customers - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'RMCIncludingCustomers','value' => set_value('RMCIncludingCustomers'),'id'=>'RMCIncludingCustomers', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - - - </div> - - - </div> - </div> - </div> - - </div> - <div class="modal-footer"> - <a class="btn btn-info font AddImport" ID="AddImport" ><i class="fa fa-plus"></i>&nbsp;&nbsp;<span class="bold">Add Capital</span></a> - <a class="btn btn-info" data-dismiss="modal" value="Cancel">Cancel</a> - - </div> - </div> - </form> - - </div> - </div> - - <br/> - <div id="EDITREVENUE" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> - <div class="modal-dialog"> - <!-- Modal content--> - <form> - <div class="modal-content" style="width:1000px;"> - <div class="modal-header" style="background-color: #3c8dbc;color:#fff;"> - <center><h4>Edit Revenue Purchase Order Line Item </h4></center> - </div> - <div align="left"> - <div> - <div class="col-md-12" > - <div class="col-md-3"> - <label>Req No</label> - <div > - <?php - - $data = array('name' => 'EditRevenueReqNo','value' => set_value('EditReqNo'),'id'=>'EditRevenueReqNo', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - - ?> - </div> - </div> - - <div class="col-md-3"> - <label>Department Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditRevenuedeptName','value' => set_value('EditdeptName'),'id'=>'EditRevenuedeptName', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-3"> - <label>Cost Center Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditRevenueCostCenter','value' => set_value('EditCostCenter'),'id'=>'EditRevenueCostCenter', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Avl Bud Amt</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditRevenueAvlBudAmt','value' => set_value('EditAvlBudAmt'),'id'=>'EditRevenueAvlBudAmt', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-2"> - <label>Item Code</label> - <div > - <?php - $options = array("0"=>'Item Code'); - - - echo form_dropdown('EditRevenueMaterialCode', $options,set_value('EditMaterialCode'),'id="EditRevenueMaterialCode"' ,'class="form-control"'); - - ?> - </div> - </div> - - <div class="col-md-2"> - <label>Item Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditRevenueItemName','value' => set_value('EditItemName'),'id'=>'EditRevenueItemName', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>UOM</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditRevenueUOM','value' => set_value('EditUOM'),'id'=>'EditRevenueUOM', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Quantity</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditRevenueQuantity','value' => set_value('EditQuantity'),'id'=>'EditRevenueQuantity', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'Editchange()','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Rate</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditRevenueRate','value' => set_value('EditRate'),'id'=>'EditRevenueRate', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'Editchange()','style'=>'text-align:right;' ); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Basic Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditRevenueBasicValue','value' => set_value('txtEditBasicValue'),'id'=>'txtEditRevenueBasicValue', 'class' => 'form-control num' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - </div> - </div><br/> - <div class="col-md-12" style="border : 1px solid"> - <div class="row"> - <div class="col-md-12"> - <div class="col-md-4"> - <label>Discount Type </label> - <div> - <?php - $options = array("0"=>'Select Discount Type'); - //print_r( $options); - - if(!empty($TaxType)) - { - foreach ($TaxType as $SID): - - - $options[$SID->ConfigValue] = $SID->ConfigValue; - - endforeach; - } - - echo form_dropdown('EditDiscountType', $options,set_value('EditDiscountType'),'id="EditDiscountType"' ,'class="form-control"'); - - ?> - </div> - </div> - <div class="col-md-2"> - <label>Discount Rate </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditDiscount','value' => set_value('txtEditDiscount'),'id'=>'txtEditDiscount', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);' ,'onchange'=>'calculateDiscount(1);','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Discounted Amount </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditAfterDiscount','value' => set_value('txtEditAfterDiscount'),'id'=>'txtEditAfterDiscount', 'class' => 'form-control num' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div id="EditVat" > - <div class="col-md-2" > - <label>Vat in %</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditVat','value' => set_value('txtEditVat'),'id'=>'txtEditVat', 'class' => 'form-control num','onchange'=>'calculateVat(1);' ,'style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - </div> - <div class="col-md-2" > - <label>Vat Amount </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditAfterVat','value' => set_value('txtEditAfterVat'),'id'=>'txtEditAfterVat', 'class' => 'form-control num' ,'readonly' => 'true','onkeypress'=>'return isNumberKey(event);','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - </div> - </div> - <div style="display:none;" id="EditCST"> - <div class="col-md-2" > - <label>CST in %</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditCST','value' => set_value('txtEditCST'),'id'=>'txtEditCST', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'calculateCST(1);','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2" > - <label>CST Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditAfterCST','value' => set_value('txtEditAfterCST'),'id'=>'txtEditAfterCST', 'class' => 'form-control num' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - </div> - </div> - </div> - </div> - </div> - <div class="row"> - <div class="col-md-12" style="text-align:left;"> - <div class="col-md-4"> - <label>Packaging Type </label> - <div> - <?php - $options = array("0"=>'Select Packaging Type'); - //print_r( $options); - - if(!empty($TaxType)) - { - foreach ($TaxType as $SID): - - - $options[$SID->ConfigValue] = $SID->ConfigValue; - - endforeach; - } - - echo form_dropdown('EditPackagingType', $options,set_value('EditPackagingType'),'id="EditPackagingType"' ,'class="form-control "'); - - ?> - </div> - </div> - <div class="col-md-2"> - <label>Packaging Rate </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditPackaging','value' => set_value('txtEditPackaging'),'id'=>'txtEditPackaging', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'calculatePackaging(1);','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Packaging Amount </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditAfterPackaging','value' => set_value('txtEditAfterPackaging'),'id'=>'txtEditAfterPackaging', 'class' => 'form-control num' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>GST in %</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditGST','value' => set_value('txtEditGST'),'id'=>'txtEditGST', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>' calculateGST(1);','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>GST Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditAfterGST','value' => set_value('txtEditAfterGST'),'id'=>'txtEditAfterGST', 'class' => 'form-control num' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - - </div> - </div> - <div class="row"> - <div class="col-md-12 " > - <div class="col-md-2 col-md-offset-4"> - <label>Excise Duty in % </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditExciseDuty','value' => set_value('txtEditExciseDuty'),'id'=>'txtEditExciseDuty', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'calculateExcise(1);','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label> Excise Duty Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditAfterExciseDuty','value' => set_value('txtEditAfterExciseDuty'),'id'=>'txtEditAfterExciseDuty', 'class' => 'form-control num' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Other Taxes in %</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditOtherTax','value' => set_value('txtEditOtherTax'),'id'=>'txtEditOtherTax', 'class' => 'form-control num','onkeypress'=>'return isNumberKey(event);','onchange'=>'calculateOtherTaxes(1);','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Other Taxes Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditAfterOtherTax','value' => set_value('txtEditAfterOtherTax'),'id'=>'txtEditAfterOtherTax', 'class' => 'form-control num' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - </div> - - </div> - </div> - <div class="row"> - <div class="col-md-12" > - <div class="col-md-4"> - <label>Freight Type </label> - <div> - <?php - $options = array("0"=>'Select Freight Type'); - //print_r( $options); - - if(!empty($FreightType)) - { - foreach ($FreightType as $SID): - - - $options[$SID->ConfigValue] = $SID->ConfigValue; - - endforeach; - } - - echo form_dropdown('drpEditFreight', $options,set_value('drpEditFreight'),'id="drpEditFreight"' ,'class="form-control "'); - - ?> - </div> - </div> - <div class="col-md-2"> - <label>Freight Rate </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditFreight','value' => set_value('txtEditFreight'),'id'=>'txtEditFreight', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'calculateFreight(1);','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Freight Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditAfterFreight','value' => set_value('txtEditAfterFreight'),'id'=>'txtEditAfterFreight', 'class' => 'form-control num' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <label> Insurance if Any</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditInsurance','value' => set_value('txtEditInsurance'),'id'=>'txtEditInsurance', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'calculateEditTotalValue(1);','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - - - </div> - </div><hr/> - <div class="row"> - <div class="col-md-12" > - - <div class="col-md-4" align="right"> <label>Total Order Amount :</label></div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditRevenueTotalOrderValue','value' => set_value('txtEditTotalOrderValue'),'id'=>'txtEditRevenueTotalOrderValue', 'class' => 'form-control num' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <a class="btn btn-primary EditRevenue" ID="EditRevenue"><i class="fa fa-plus"></i>&nbsp;&nbsp;<span class="bold">Edit Revenue</span></a> - <a class="btn btn-primary" data-dismiss="modal" value="Cancel">Cancel</a> - </div> - </div> - </div> - </div> - <br/><br/> - <!-- footer for revenue po --> - <div class="modal-footer"> - - </div> - </div> - - </div> - </form> - </div> - </div> - - - <div class="box-body" style="margin-top:-5%;"> - <table id="serviceTax" class="table table-bordered table-hover" style="background-color:#fff;font-size:12px"> - <thead> - <tr> - <th>SNo</th> - <th>Requisition No</th> - <th>Item Name</th> - <th>Quantity</th> - <th>UOM</th> - <th>Rate</th> - <th>Basic Amount</th> - <th>Tax Amount</th> - <th>Total Order Amount</th> - <th>Action</th> - </tr> - </thead> - <tbody id="ServiceAppend"> - - </tbody> - <tbody id="RevenueAppend"> - - </tbody> - - </table> - </div> - - <!-- /.box-body --> - - - - - </div> - </table> - <div class="row"> - <!-- Revenue po taxes --> - <div class="col-md-12" style='border : 1px solid; display:none;' id="revenuepotaxes"> - <br/> - <div class="col-md-12"> - <div class="col-md-3"> - <label >Basic Amount :</label> - <?php - $data = array('name' => 'txtTotBasicAmountRevenue','value' => set_value('txtTotBasicAmountRevenue'),'id'=>'txtTotBasicAmountRevenue', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - - </div> - <div class="col-md-3"> - <label >Total Discount :</label> - <?php - $data = array('name' => 'txtTotalDiscount','value' => set_value('txtTotalDiscount'),'id'=>'txtTotalDiscount', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - - <div class="col-md-3" id="TotVat"> - <label >Total Vat :</label> - <?php - $data = array('name' => 'txtTotalVat','value' => set_value('txtTotalVat'),'id'=>'txtTotalVat', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - <div class="col-md-3" id="TotCST" style="display:none;"> - <label >Total CST :</label> - <?php - $data = array('name' => 'txtTotCST','value' => set_value('txtTotCST'),'id'=>'txtTotCST', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - - </div> - <div class="col-md-3"> - <label >Total Excise Duty :</label> - <?php - $data = array('name' => 'txtTotExciseDuty','value' => set_value('txtTotExciseDuty'),'id'=>'txtTotExciseDuty', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-3"> - <label >Total GST :</label> - <?php - $data = array('name' => 'txtTotalGST','value' => set_value('txtTotalGST'),'id'=>'txtTotalGST', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - - <div class="col-md-3"> - <label >Total Packaging :</label> - <?php - $data = array('name' => 'txtTotalPackaing','value' => set_value('txtTotalPackaing'),'id'=>'txtTotalPackaing', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - - <div class="col-md-3"> - <label >Total Insurance :</label> - <?php - $data = array('name' => 'txtTotalInsurance','value' => set_value('txtTotalInsurance'),'id'=>'txtTotalInsurance', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - <div class="col-md-3"> - <label >Other Taxes :</label> - <?php - $data = array('name' => 'txtTotalOtherTaxes','value' => set_value('txtTotalOtherTaxes'),'id'=>'txtTotalOtherTaxes', 'class' => 'form-control num','readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-12"> - - <div class="col-md-3"> - <label >Total Freight :</label> - <?php - $data = array('name' => 'txtTotalFreight','value' => set_value('txtTotalFreight'),'id'=>'txtTotalFreight', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - - <div class="col-md-3"> - <label >Total Order Value :</label> - <?php - $data = array('name' => 'txtTotalOrderValueSummary','value' => set_value('txtTotalOrderValueSummary'),'id'=>'txtTotalOrderValueSummary', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-12"> - <label>Comments Of Special Instructions :</label> - <?php - $data = array('name' => 'txtSpcialInstruction','value' => set_value('txtSpcialInstruction'),'id'=>'txtSpcialInstruction', 'class' => 'form-control','rows' => '4', 'cols' => '40' ); - echo form_textarea($data); - ?> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-3 col-md-offset-9"><br/> - <input type="hidden" name="txtPoRange" id="txtPoRange" /> - <input type="hidden" name="isEdit" id="isEdit" value="0" /> - <input type="hidden" name="txtStatus1" id="txtStatus1" /> - <input type="hidden" name="txtRowCount1" id="txtRowCount1" /> - <input type="hidden" name="txtDeletedRow1" id="txtDeletedRow1" /> - <input type="hidden" name="CheckLocalInter" id="CheckLocalInter" /> - <!-- <a class="btn btn-primary Save" ID="Save" onclick="Save()" >&nbsp;&nbsp;<span class="bold">Save</span></a> --> - - <a class="btn btn-primary Submit" ID="Submit" onclick="RevenueSave(1)" >&nbsp;&nbsp;<span class="bold">Submit</span></a> - <input type="reset" class="btn btn-primary"> - - - </div> - </div> - <div class="col-md-12" style="padding:0px;"><br/> - </div> - </div> - - <!-- Service po taxes --> - <div class="col-md-12 " style='border : 1px solid; display:none;' id="servicepotaxes"> - <div class="col-md-12"> - <div class="col-md-4"> - <label>Basic Amount :</label> - <?php - $data = array('name' => 'txtTotBasicAmount','value' => set_value('txtTotBasicAmount'),'id'=>'txtTotBasicAmount', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - <div class="col-md-4"> - <label>Total Service Tax @14% :</label> - <?php - $data = array('name' => 'txtTotalServiceTax','value' => set_value('txtTotalServiceTax'),'id'=>'txtTotalServiceTax', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - <div class="col-md-4"> - <label >Total Edu. cess @2% on service Tax :</label> - <?php - $data = array('name' => 'txtTotalEducess','value' => set_value('txtTotalEducess'),'id'=>'txtTotalEducess', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - <label >Total Sec. & Higher Edu. cess @1 % on service Tax :</label> - <?php - $data = array('name' => 'txtTotHigherEdu','value' => set_value('txtTotHigherEdu'),'id'=>'txtTotHigherEdu', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - <div class="col-md-4"> - <label >Total Krishi Kalyan tax @.5 % on Basic Amount :</label> - <?php - $data = array('name' => 'txtTotalKrishiKalyan','value' => set_value('txtTotalKrishiKalyan'),'id'=>'txtTotalKrishiKalyan', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - <div class="col-md-4"> - <label >Total Swachh Bharat tax @.5 % on Basic Amount:</label> - <?php - $data = array('name' => 'txtTotSwachhBharat','value' => set_value('txtTotSwachhBharat'),'id'=>'txtTotSwachhBharat', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-6 col-md-offset-6"> - <br/> - <div class="col-md-6" align="right"> <label >Total Order Value :</label></div> - <div class="col-md-6"> - <?php - $data = array('name' => 'txtTotalOrderValueSummaryService','value' => set_value('txtTotalOrderValueSummaryService'),'id'=>'txtTotalOrderValueSummaryService', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - - </div> - </div> - <div class="col-md-12"> - <div class="col-md-12"> - <label>Comments Of Special Instructions :</label> <?php - $data = array('name' => 'txtSpcialInstruction','value' => set_value('txtSpcialInstruction'),'id'=>'txtSpcialInstruction', 'class' => 'form-control num' ,'rows' => '4', 'cols' => '40' ); - echo form_textarea($data); ?> - </div> - </div> - <div class="col-md-12"> - <div class="row"> - <br/> - <div align="right" style="padding-right:10px"> - <input type="hidden" name="txtStatus" id="txtStatus" /> - <input type="hidden" name="txtRowCount" id="txtRowCount" /> - <input type="hidden" name="txtDeletedRow" id="txtDeletedRow" /> - <input type="hidden" name="SpcialInstruction" id="SpcialInstruction" > - <input type="hidden" name="txtDeliveryAddress" id="txtDeliveryAddress" > - - <a class="btn btn-primary Submit" ID="Submit" onclick="Save(1)" >&nbsp;&nbsp;<span class="bold">Submit</span></a> - <input type="reset" class="btn btn-primary"> - </div><br/> - </div> - </div> - <br/> - </div> - </div> - </div> </div> - - </div> - <script type="text/html" id="RevenueList"> - <tr id="<%=index%>"> - <td align="left"><%=index%></td> - <td align="left"><%=ReqNo%></td> - - <td align="left"><%=MaterialName%></td> - <td align="left"><%=Quantity%></td> - <td align="left"><%=UOM%></td> - <td align="left"><%=Rate%></td> - <td align="left"><%=BasicAmount%></td> - <td align="left"><%=Taxvalue%></td> - <td align="left"><%=TotalValue%></td> - - <td> - <a data-target='#EDITREVENUE' data-id="<%=index%>" data-userid="<%=index%>" data-toggle="modal" href="#EDITREVENUE"><i class="fa fa-pencil" data-toggle="tooltip" title="Click here to view/Edit the <%=ReqNo%> Requisition details"></i>&nbsp;&nbsp;&nbsp;</a> <a href='#' onclick = "DeleteRevenueRow(<%=index%>)" class="link" data-id="<%=index%>" data-userid="<%=index%>" id="Del" ><span class="glyphicon glyphicon-trash"></span></a> - - - </td> - </tr> - </script> - <script> - var index = '1'; - var userid = ''; - $('.AddRevenue').click(function(){ - - if(validateRevenueTax() && validateExceedLimit()) - { - - - var temp = index; - var Reqnumber = $('#purpose').val(); - var departmentName = $('#DepartmentName').val(); - var AvilBudget = $('#AvalBuget').val(); - var costCode = $('#CostCenterName').val(); - var materialCode =$('#MaterialCode').val(); - var materialName = $("#ItemName").val(); - var uom = $("#UOM").val(); - var quantity = $("#Quantity").val(); - var itemRate = $("#Rate").val(); - - var DisType = $("#DiscountType").val(); - var DisVal = $("#txtDiscount").val(); - var AfterDisVal = $("#txtAfterDiscount").val(); - - var PackOption = PackagingCalculation ; - var PackType = $("#PackagingType").val(); - var PackVal = $("#txtPackaging").val(); - var AfterPackVal = $("#txtAfterPackaging").val(); - - var ExciseOption = ExciseCalculation ; - var ExciseVal = $("#txtExciseDuty").val(); - var AfterExciseVal = $("#txtAfterExciseDuty").val(); - - var VatOption = VatCalculation ; - var VatVal = $("#txtVat").val(); - var AfterVatVal = $("#txtAfterVat").val(); - - var CSTOption = CSTCalculation ; - var CSTVal = $("#txtCST").val(); - var AfterCSTVal = $("#txtAfterCST").val(); - - var GSTVal = $("#txtGST").val(); - var AfterGSTVal = $("#txtAfterGST").val(); - - var OtherTaxVal = $("#txtOtherTax").val(); - var AfterOtherTaxVal = $("#txtAfterOtherTax").val(); - - var FreightType = $("#drpFreight").val(); - var FreightVal = $("#txtFreight").val(); - var AfterFreightVal = $("#txtAfterFreight").val(); - - var basicval = $("#txtBasicValue").val(); - var Insval = $("#txtInsurance").val(); - var TotalOrderValue = $("#txtTotalOrderValue").val(); - var CheckLocalInter = $("input:radio[name='Range']:checked").val(); - - - var TotalTaxValue = AfterOtherTaxVal; - - // $('#ReqNo').val(Reqnumber).remove(); - // $('#ReqNo option[value='+Reqnumber+']').remove(); - $('#MaterialCode option[value='+materialCode+']').remove(); - - - populateValueMainFormForRevenue(); - - - - index = parseInt(index)+1; - - var template = jQuery("#RevenueList").html(); - - - $('#RevenueAppend').append(_.template(template,{index:temp,ReqNo:Reqnumber,MaterialName:materialName,Quantity:quantity,UOM:uom,Rate:itemRate,BasicAmount:basicval,Taxvalue:TotalTaxValue,TotalValue:TotalOrderValue})); - - clearRevenueModalFields(); - var theForm = $(".CreatealterPO"); - - addHidden(theForm,"Reqnumber"+temp,Reqnumber ); - addHidden(theForm,"departmentName"+temp,departmentName ); - addHidden(theForm,"AvilBudget"+temp,AvilBudget ); - addHidden(theForm,"costCode"+temp,costCode ); - addHidden(theForm,"materialCode"+temp,materialCode ); - addHidden(theForm,"materialName"+temp,materialName ); - addHidden(theForm,"uom"+temp,uom); - addHidden(theForm,"quantity"+temp,quantity); - addHidden(theForm,"itemRate"+temp,itemRate); - addHidden(theForm,"DisType"+temp,DisType); - addHidden(theForm,"DisVal"+temp,DisVal); - addHidden(theForm,"AfterDisVal"+temp,AfterDisVal); - addHidden(theForm,"PackOption"+temp,PackOption); - addHidden(theForm,"PackType"+temp,PackType); - addHidden(theForm,"PackVal"+temp,PackVal); - addHidden(theForm,"AfterPackVal"+temp,AfterPackVal); - addHidden(theForm,"ExciseOption"+temp,ExciseOption); - addHidden(theForm,"ExciseVal"+temp,ExciseVal); - addHidden(theForm,"AfterExciseVal"+temp,AfterExciseVal); - addHidden(theForm,"VatOption"+temp,VatOption); - addHidden(theForm,"VatVal"+temp,VatVal); - addHidden(theForm,"AfterVatVal"+temp,AfterVatVal); - addHidden(theForm,"CSTOption"+temp,CSTOption); - addHidden(theForm,"CSTVal"+temp,CSTVal); - addHidden(theForm,"AfterCSTVal"+temp,AfterCSTVal); - addHidden(theForm,"GSTVal"+temp,GSTVal); - addHidden(theForm,"AfterGSTVal"+temp,AfterGSTVal); - addHidden(theForm,"OtherTaxVal"+temp,OtherTaxVal); - addHidden(theForm,"AfterOtherTaxVal"+temp,AfterOtherTaxVal); - addHidden(theForm,"FreightType"+temp,FreightType); - addHidden(theForm,"FreightVal"+temp,FreightVal); - addHidden(theForm,"AfterFreightVal"+temp,AfterFreightVal); - addHidden(theForm,"basicval"+temp,basicval); - addHidden(theForm,"Insval"+temp,Insval); - addHidden(theForm,"TotalOrderValue"+temp,TotalOrderValue); - addHidden(theForm,"CheckLocalInter"+temp,CheckLocalInter); - - $('#txtRowCount1').val(temp); - - // $('#REVENUE').modal('hide'); - - } - - }); - function addHidden(theForm, key, value) { - // Create a hidden input element, and append it to the form: - var input = document.createElement('input'); - input.type = 'hidden'; - input.name = key;'name-as-seen-at-the-server'; - input.id = key;'name-as-seen-at-the-server'; - input.value = value; - theForm.append(input); - } - function populateValueMainFormForRevenue() - { - var Packaging = $('#txtAfterPackaging').val() == '' ? '0.00' : $('#txtAfterPackaging').val(); - var ExciseDuty = $('#txtAfterExciseDuty').val() == '' ? '0.00' : $('#txtAfterExciseDuty').val(); - var Vat = $('#txtAfterVat').val() == '' ? '0.00' : $('#txtAfterVat').val(); - var CST = $('#txtAfterCST').val() == '' ? '0.00' : $('#txtAfterCST').val(); - var GST = $('#txtAfterGST').val() == '' ? '0.00' : $('#txtAfterGST').val(); - var OtherTax = $('#txtAfterOtherTax').val() == '' ? '0.00' : $('#txtAfterOtherTax').val(); - var Freight = $('#txtAfterFreight').val() == '' ? '0.00' : $('#txtAfterFreight').val(); - var Insurance = $('#txtInsurance').val() == '' ? '0.00' : $('#txtInsurance').val(); - var Discount = $('#txtAfterDiscount').val() == '' ? '0.00' : $('#txtAfterDiscount').val(); - var BasicVal = $('#txtBasicValue').val() == '' ? '0.00' : $('#txtBasicValue').val(); - var TotalVal = $('#txtTotalOrderValue').val() == '' ? '0.00' : $('#txtTotalOrderValue').val(); - var TotalOrderValueSummary = $('#txtTotalOrderValueSummary').val() == '' ? '0.00' : $('#txtTotalOrderValueSummary').val(); - var totBasicAmt = $('#txtTotBasicAmountRevenue').val() == '' ? '0.00' : $('#txtTotBasicAmountRevenue').val(); - var totDiscountAmt = $('#txtTotalDiscount').val() == '' ? '0.00' : $('#txtTotalDiscount').val(); - var totPackagingAmt = $('#txtTotalPackaing').val() == '' ? '0.00' : $('#txtTotalPackaing').val(); - var totExciseAmt = $('#txtTotExciseDuty').val() == '' ? '0.00' : $('#txtTotExciseDuty').val(); - var totVATAmt = $('#txtTotalVat').val() == '' ? '0.00' : $('#txtTotalVat').val(); - var totCSTAmt = $('#txtTotCST').val() == '' ? '0.00' : $('#txtTotCST').val(); - var totGSTAmt = $('#txtTotalGST').val() == '' ? '0.00' : $('#txtTotalGST').val(); - var totOtherTaxAmt = $('#txtTotalOtherTaxes').val() == '' ? '0.00' : $('#txtTotalOtherTaxes').val(); - var totFreightAmt = $('#txtTotalFreight').val() == '' ? '0.00' : $('#txtTotalFreight').val(); - var totInsuranceAmt = $('#txtTotalInsurance').val() == '' ? '0.00' : $('#txtTotalInsurance').val(); - var totOrderSummaryAmt = $('#txtTotalOrderValueSummary').val() == '' ? '0.00' : $('#txtTotalOrderValueSummary').val(); - $('#txtTotBasicAmountRevenue').val(parseFloat(totBasicAmt) + parseFloat(BasicVal) ); - $('#txtTotalDiscount').val(parseFloat(totDiscountAmt) + parseFloat(Discount) ); - $('#txtTotalPackaing').val(parseFloat(totPackagingAmt) + parseFloat(Packaging) ); - $('#txtTotExciseDuty').val(parseFloat(totExciseAmt) + parseFloat(ExciseDuty) ); - $('#txtTotalVat').val(parseFloat(totVATAmt) + parseFloat(Vat) ); - $('#txtTotCST').val(parseFloat(totCSTAmt) + parseFloat(CST) ); - $('#txtTotalGST').val(parseFloat(totGSTAmt) + parseFloat(GST) ); - $('#txtTotalOtherTaxes').val(parseFloat(totOtherTaxAmt) + parseFloat(OtherTax) ); - $('#txtTotalFreight').val(parseFloat(totFreightAmt) + parseFloat(Freight) ); - $('#txtTotalInsurance').val(parseFloat(totInsuranceAmt) + parseFloat(Insurance) ); - $('#txtTotalOrderValueSummary').val(parseFloat(totOrderSummaryAmt) + parseFloat(TotalVal) ); - - } - function clearRevenueModalFields() - { - // To reset the Modal controls - $('#ReqNo').val('0'); - $('#deptName').val(''); - $('#CostCenter').val("0"); - $('#AvlBudAmt').val(''); - $('#MaterialCode').val("0") ; - $("#ItemName").val(''); - $('#UOM').val(''); - $('#Quantity').val(''); - $("#Rate").val(''); - - $("#DiscountType").val('0'); - $("#txtDiscount").val(''); - $("#txtAfterDiscount").val(''); - - - $("#PackagingType").val('0'); - $("#txtPackaging").val(''); - $("#txtAfterPackaging").val(''); - - - $("#txtExciseDuty").val(''); - $("#txtAfterExciseDuty").val(''); - - - $("#txtVat").val(''); - $("#txtAfterVat").val(''); - - - $("#txtCST").val(''); - $("#txtAfterCST").val(''); - - $("#txtGST").val(''); - $("#txtAfterGST").val(''); - - $("#txtOtherTax").val(''); - $("#txtAfterOtherTax").val(''); - - $("#drpFreight").val('0'); - $("#txtFreight").val(''); - $("#txtAfterFreight").val(''); - - $("#txtBasicValue").val(''); - $("#txtInsurance").val(''); - $("#txtTotalOrderValue").val(''); - } - </script> - <script> - var SelectedMaterialCode = []; - var CollIndex = 0; - function Save() - { - $('#txtStatus').val('<?php echo PO_DRAFT;?>'); - if(validate()) - { - $('#content').loader('show'); - $.ajax({ - data:$('.CreatePO').serialize(), - type:"POST", - url:"<?php echo base_url() ?>purchaseorder/addNewPurchaseOrder", - success:function(data) { - if(data) - { - $('#content').loader('hide'); - alert(data); - //$('#txtRowCount').val(''); - //$('#txtDeletedRow').val(''); - - //window.location = "Requisition"; - - } - else - { - alert("Error"); - } - - } - - }); - - } - } - - $(function () { - - $('#TaxesTabel').DataTable({ - "paging": false, - "lengthChange": false, - "searching": false, - "ordering": false, - "info": false, - "autoWidth": false - }); - }); - $(document).ready(function(){ - $('#purpose').on('change', function() { - if ( this.value == 'REVENUE') //Revenue po - { - $("#txtPoRange").show(); - $("#revenuepotaxes").show(); - $("#currencyexchange").hide(); - $("#servicepotaxes").hide(); - } - else if ( this.value == 'SERVICE') // Service po - { - $("#servicepotaxes").show(); - $("#currencyexchange").hide(); - $("#txtPoRange").hide(); - $("#revenuepotaxes").hide(); - } - else if ( this.value == 'IMPORT') // Import pop - { - $("#currencyexchange").show(); - $("#txtPoRange").hide(); - $("#revenuepotaxes").hide(); - $("#servicepotaxes").hide(); - } - else if ( this.value == 'CAPITAL') // Capital po - { - $("#currencyexchange").show(); - $("#txtPoRange").hide(); - $("#revenuepotaxes").hide(); - $("#servicepotaxes").hide(); - } - else // Default - { - $("#currencyexchange").hide(); - $("#txtPoRange").hide(); - $("#revenuepotaxes").hide(); - $("#servicepotaxes").hide(); - } - }); - }); - $(document).ready(function () { - $('#Local').click(function () { - //for local tax range selection - $('#TotCST').hide(); - $('#TotVat').show(); - }); - $('#Inter_state').click(function () { - //for inter state tax range selection - $('#TotVat').hide(); - $('#TotCST').show(); - }); - }); - $(document).ready(function () { - $('#Date').click(function () { - //for Date range selection - $('#Schedulediv').hide(); - $('#Deliverydtdiv').show(); - }); - $('#Schedule').click(function () { - //for schedule range selection - $('#Deliverydtdiv').hide(); - $('#Schedulediv').show(); - }); - }); - - $('#drpSupplier').change(function() { - - var id = $('#drpSupplier').val(); - $("#SupAddress").val(''); - - if(id != '0') - { - var y = <?php echo json_encode($Suplist, JSON_PRETTY_PRINT) ?>; - - $.each(y, function(idx, obj) { - if(obj.SupplierID === id) - { - $("#SupAddress").val(obj.Address); - - } - - }); - - } - else - { - alert('Please select the SupplierID'); - return false; - } - - }); - /*get cost center name using department*/ - var CostArray=''; - $('#DepartmentName').change(function() { - $("#AvalBuget").val(''); - $('#AlertImg').attr("style","display:none;"); - CostArray=''; - var id = $('#DepartmentName').val(); - if(id != '0') - { - $('#content').loader('show'); - - - $.ajax({ - data:{id:id}, - type:"POST", - url:"<?php echo base_url() ?>emergencypurchaseorder/getCostCenterName", - success:function(data) { - if(data) - { - CostArray=data; - $('#CostCenterName').empty(); - $("#CostCenterName").append( $('<option></option>').val("0").html("Select Cost Center") ); - - $.each(JSON.parse(data), function (index, value) { - - $("#CostCenterName").append( $('<option></option>').val(value.CostCenterCode).html(value.CostCenterCode + "-" + value.CostCenterName) ); - - - }); - $('#content').loader('hide'); - - - } - else - { - alert("Error"); - } - - } - - }); - - - - - } - else - { - alert('Please select the Department'); - return false; - } - - }); - /** - * update available budget calculation using regNo and cost center - */ - $('#CostCenterName').change(function() { - - var id = $('#CostCenterName').val(); - $("#AvlBudAmt").val(''); - var ReqType =$('#purpose').val(); - if(id != '0') - { - $('#content').loader('show'); - $.ajax({ - data:{id:id}, - type:"POST", - url:"<?php echo base_url() ?>servicepurchaseorder/AvilBudgetAmount?ReqType="+ReqType, - success:function(data) { - if(data) - { - $('#content').loader('hide'); - $("#AvalBuget").val(data); - if(parseFloat($("#AvalBuget").val()) <= 0) - { - $('#AlertImg').removeAttr("style"); - isExceed = 1; - } - else - { - $('#AlertImg').attr("style","display:none;"); - isExceed =0; - } - } - else - { - $('#content').loader('hide'); - alert("Error"); - } - - } - }); - } - else - { - alert('Please select the MaterialCode'); - return false; - } - - }); - /** - * getting item name and uom using global variable materialData each change - */ - $('#ServiceMaterialCode').change(function(){ - var selectedMaterialCode=''; - selectedMaterialCode=$("#ServiceMaterialCode").val(); - $.each(JSON.parse(materialData), function (index, value) { - if(selectedMaterialCode==value.MaterialCode){ - $("#ServiceDescription").val(value.MaterialName); - $("#ServiceUOM").val(value.UOM); - - } - - }); - - }); - /** - * getting item name and uom using global variable materialData each change in revenue - */ - $('#MaterialCode').change(function(){ - var selectedRevenueMaterialCode=''; - selectedRevenueMaterialCode=$("#MaterialCode").val(); - $.each(JSON.parse(materialData), function (index, value) { - if(selectedRevenueMaterialCode==value.MaterialCode){ - $("#ItemName").val(value.MaterialName); - $("#UOM").val(value.UOM); - - } - - }); - - }); - - /** - * get material list when selecting the request type - */ - var materialData; - - $('#purpose').change(function(){ - var input=''; - input=$("#purpose").val(); -if(input == -1){ - $("#POType").val(''); - -} - else { - $("#POType").val(input); - // $('#content').loader('show'); - $.ajax({ - data:{input:input}, - type:"POST", - url:"<?php echo base_url() ?>emergencypurchaseorder/getMaterialCode?input="+input, - success:function(data) { - - if(data) - { - materialData=data; - if (input=='SERVICE') { - - $('#ServiceMaterialCode').empty(); - $("#ServiceMaterialCode").append( $('<option></option>').val("0").html("Select Item Code") ); - - $.each(JSON.parse(data), function (index, value) { - $("#ServiceMaterialCode").append( $('<option></option>').val(value.MaterialCode).html(value.MaterialCode + "-" + value.MaterialName) ); - - - }); - } - else if (input=='REVENUE') { - $('#MaterialCode').empty(); - $("#MaterialCode").append( $('<option></option>').val("0").html("Select Item Code") ); - - $.each(JSON.parse(data), function (index, value) { - $("#MaterialCode").append( $('<option></option>').val(value.MaterialCode).html(value.MaterialCode + "-" + value.MaterialName) ); - - - }); - } - else { - - } - - $('#content').loader('hide'); - - } - - } - }); - - } - - }); - /** - * calculating taxes using quanty and rate - */ - function Ratechange(){ - if($('#ServiceMaterialCode').val() == "0") - { - alert('Please Select Item Code '); - $('#ServiceMaterialCode').focus(); - return false; - } - - - - if($('#ServiceQuantity').val() != '' && $('#ServiceRate').val() != '') - { - var txtQuantity = parseFloat( $('#ServiceQuantity').val()); - var txtUnitPrice = parseFloat($('#ServiceRate').val()); - var Tot = txtQuantity * txtUnitPrice - $('#ServiceBasAmt').val(Tot); - - //Service Tax calculation - $('#AfterServiceTax').val(calculateServiceTax($('#ServiceBasAmt').val())); // calculateServiceTax(); - - //Edu. cess @2% on service Tax - $('#AfterEduCess').val( calculateEduess($('#AfterServiceTax').val())); - - //Sec. & Higher Edu. cess @1 % on service Tax - - $('#AfterSecHighTax').val(calculateHigherEdu($('#AfterServiceTax').val())); - //Krishi Kalyan tax - $('#AfterKrishiTax').val(calculateKrishiKalyantax($('#ServiceBasAmt').val())); - - //Swachh Bharat tax - - $('#AfterSwachhTax').val(calculateSwachhBharattax($('#ServiceBasAmt').val())); - calculateTotalOrdervalue(); - - var res = ExceedBudget($('#TotalOrderValue').val(), $('#AvalBuget').val()); - if(!res) - { - $('#ServiceRate').focus(); - return false; - } - } - - } - function calculateServiceTax(varBasicValue) - { - - var basicValue = parseFloat(varBasicValue); - - var ServiceTaxValue = 0.0; - - ServiceTaxValue = <?php echo SERVICETAX_SERVICETAX_14PERCENT; ?>; - - var TAXval = parseFloat(ServiceTaxValue).toFixed(2); - - return TAXval;// $('#AfterServiceTax').val(TAXval); - - } - function calculateEduess(varAfterServiceTax) - { - var ServiceTaxAmount = parseFloat(varAfterServiceTax); - - var ServiceTaxValue = 0.0; - - ServiceTaxValue = <?php echo SERVICETAX_EDUCESS_2PERCENT; ?>; - - var TAXval = parseFloat(ServiceTaxValue).toFixed(2); - - return TAXval;// $('#AfterEduCess').val(TAXval); - } - function calculateHigherEdu(varAfterServiceTax) - { - var ServiceTaxAmount = parseFloat(varAfterServiceTax); - - var ServiceTaxValue = 0.0; - - ServiceTaxValue = <?php echo SERVICETAX_HIGHEREDUCESS_1PERCENT; ?>; - - var TAXval = parseFloat(ServiceTaxValue).toFixed(2); - - return TAXval;//$('#AfterSecHighTax').val(TAXval); - } - function calculateKrishiKalyantax(varBasicValue) - { - var basicValue = parseFloat(varBasicValue); - - var ServiceTaxValue = 0.0; - - ServiceTaxValue = <?php echo SERVICETAX_KRISHIKALYAN; ?>; - - var TAXval = parseFloat(ServiceTaxValue).toFixed(2); - return TAXval;//$('#AfterKrishiTax').val(TAXval); - } - function calculateSwachhBharattax(varBasicValue) - { - var basicValue = parseFloat(varBasicValue); - - var ServiceTaxValue = 0.0; - - ServiceTaxValue = <?php echo SERVICETAX_SWACHHBHARAT; ?>; - - var TAXval = parseFloat(ServiceTaxValue).toFixed(2); - - return TAXval; //$('#AfterSwachhTax').val(TAXval); - } - - function calculateTotalOrdervalue() - { - var basicValue = parseFloat($('#ServiceBasAmt').val()); - var ServiceTaxAmount = parseFloat($('#AfterServiceTax').val()); - var EduCessTaxAmount = parseFloat($('#AfterEduCess').val()); - var SecHighTaxAmount = parseFloat($('#AfterSecHighTax').val()); - var KrishiTaxAmount = parseFloat($('#AfterKrishiTax').val()); - var SwachhTaxAmount = parseFloat($('#AfterSwachhTax').val()); - - var TotAmt = basicValue + ServiceTaxAmount+ EduCessTaxAmount + SecHighTaxAmount+ KrishiTaxAmount + SwachhTaxAmount; - - $('#TotalOrderValue').val( parseFloat(TotAmt).toFixed(2)); - - } - function ExceedBudget(ValuetoCheck,budgetAmount) - { - var ReqAmount = parseFloat(ValuetoCheck); - var BudAmount = parseFloat(budgetAmount); - - if(ReqAmount > BudAmount ) - { - alert('Your exceeding the Avaiable Budget :'+ budgetAmount +'.Please adjust the Product to proceed further.'); - return false; - } - else - { - return true; - } - } - /** - * This function is used when clicking add service button that time store the info for submit - */ - - $('.AddService').click(function(){ - if(validateServiceTax()) - { - // alert('inside Addservice'); - var temp = index; - var Reqnumber = $('#purpose').val(); - var departmentName = $('#DepartmentName').val(); - var AvilBudget = $('#AvalBuget').val(); - var costCode = $('#CostCenterName').val(); - var materialCode =$('#ServiceMaterialCode').val(); - var materialName = $("#ServiceDescription").val(); - var uom = $("#ServiceUOM").val(); - var quantity = $("#ServiceQuantity").val(); - var itemRate = $("#ServiceRate").val(); - - - var AfterServiceTax = $("#AfterServiceTax").val(); - - - var AfterEduCess = $("#AfterEduCess").val(); - - - var AfterSecHighTax = $("#AfterSecHighTax").val(); - - - var AfterKrishiTax = $("#AfterKrishiTax").val(); - - - var AfterSwachhTax = $("#AfterSwachhTax").val(); - - var TotalOrderValue = $("#TotalOrderValue ").val(); - - - var basicval = $("#ServiceBasAmt").val(); - - - var TotalTaxValue = calculateTaxValue(); - - $('#ServiceMaterialCode option[value='+materialCode+']').remove(); - - SelectedMaterialCode[CollIndex] = materialCode; - CollIndex = CollIndex + 1; - - populateValueMainFormForServiceTax(); - - - index = parseInt(index)+1; - - var template = jQuery("#ServiceList").html(); - - - $('#ServiceAppend').append(_.template(template,{index:temp,ReqNo:Reqnumber,MaterialName:materialName,Quantity:quantity,UOM:uom,Rate:itemRate,BasicAmount:basicval,Taxvalue:TotalTaxValue,TotalValue:TotalOrderValue})); - - clearServiceModalFields(); - - var theForm = $(".CreatealterPO"); - - addHidden(theForm,"Reqnumber"+temp,Reqnumber ); - addHidden(theForm,"departmentName"+temp,departmentName ); - addHidden(theForm,"AvilBudget"+temp,AvilBudget ); - addHidden(theForm,"costCode"+temp,costCode ); - addHidden(theForm,"materialCode"+temp,materialCode ); - addHidden(theForm,"materialName"+temp,materialName ); - addHidden(theForm,"uom"+temp,uom); - addHidden(theForm,"quantity"+temp,quantity); - addHidden(theForm,"itemRate"+temp,itemRate); - addHidden(theForm,"ServiceTax"+temp,AfterServiceTax); - addHidden(theForm,"EduCess"+temp,AfterEduCess); - addHidden(theForm,"SecHighTax"+temp,AfterSecHighTax); - addHidden(theForm,"KrishiTax"+temp,AfterKrishiTax); - addHidden(theForm,"SwachhTax"+temp,AfterSwachhTax); - addHidden(theForm,"TotalOrderValue"+temp,TotalOrderValue); - - $('#txtRowCount').val(temp); - - } - - }); - /** - * validate fields when clicking add service button - */ - function validateServiceTax() - { - - if($('#ServiceMaterialCode').val() == "0") - { - alert('Please select the Material Code'); - $('#ServiceMaterialCode').focus(); - return false; - } - else if($('#ServiceQuantity').val() == '') - { - alert('Please Enter the Quantity value'); - $('#ServiceQuantity').focus(); - return false; - } - else if($('#ServiceRate').val() == '') - { - alert('Please Enter the Rate of the Item'); - $('#ServiceRate').focus(); - return false; - } - - else if(ExceedBudget($('#TotalOrderValue').val(),$('#AvalBuget').val()) == false) - { - $('#ServiceRate').focus(); - return false; - } - else - { - return true; - } - - } - function populateValueMainFormForServiceTax() - { - var AfterServiceTax = $('#AfterServiceTax').val() == '' ? '0.00' : $('#AfterServiceTax').val(); - var AfterEduCess = $('#AfterEduCess').val() == '' ? '0.00' : $('#AfterEduCess').val(); - var AfterSecHighTax = $('#AfterSecHighTax').val() == '' ? '0.00' : $('#AfterSecHighTax').val(); - var AfterKrishiTax = $('#AfterKrishiTax').val() == '' ? '0.00' : $('#AfterKrishiTax').val(); - var AfterSwachhTax = $('#AfterSwachhTax').val() == '' ? '0.00' : $('#AfterSwachhTax').val(); - var TotalVal = $('#TotalOrderValue ').val() == '' ? '0.00' : $('#TotalOrderValue').val(); - var BasicVal = $('#ServiceBasAmt').val() == '' ? '0.00' : $('#ServiceBasAmt').val(); - - var TotalOrderValueSummary = $('#txtTotalOrderValueSummaryService').val() == '' ? '0.00' : $('#txtTotalOrderValueSummaryService').val(); - - var totBasicAmt = $('#txtTotBasicAmount').val() == '' ? '0.00' : $('#txtTotBasicAmount').val(); - var TotalServiceTax = $('#txtTotalServiceTax').val() == '' ? '0.00' : $('#txtTotalServiceTax').val(); - var TotHigherEdu = $('#txtTotHigherEdu').val() == '' ? '0.00' : $('#txtTotHigherEdu').val(); - var TotalEducess = $('#txtTotalEducess').val() == '' ? '0.00' : $('#txtTotalEducess').val(); - var TotalKrishiKalyan = $('#txtTotalKrishiKalyan').val() == '' ? '0.00' : $('#txtTotalKrishiKalyan').val(); - var TotSwachhBharat = $('#txtTotSwachhBharat').val() == '' ? '0.00' : $('#txtTotSwachhBharat').val(); - $('#txtTotBasicAmount').val((parseFloat(totBasicAmt) + parseFloat(BasicVal)).toFixed(2) ); - $('#txtTotalServiceTax').val((parseFloat(TotalServiceTax) + parseFloat(AfterServiceTax)).toFixed(2) ); - $('#txtTotHigherEdu').val((parseFloat(TotHigherEdu) + parseFloat(AfterSecHighTax)).toFixed(2) ); - $('#txtTotalEducess').val((parseFloat(TotalEducess) + parseFloat(AfterEduCess)).toFixed(2) ); - $('#txtTotalKrishiKalyan').val((parseFloat(TotalKrishiKalyan) + parseFloat(AfterKrishiTax)).toFixed(2) ); - $('#txtTotSwachhBharat').val((parseFloat(TotSwachhBharat) + parseFloat(AfterSwachhTax)).toFixed(2) ); - $('#txtTotalOrderValueSummaryService').val((parseFloat(TotalOrderValueSummary) + parseFloat(TotalVal)).toFixed(2) ); - - } - function calculateTaxValue() - { - var ServiceTaxAmount = parseFloat($('#AfterServiceTax').val()); - var EduCessTaxAmount = parseFloat($('#AfterEduCess').val()); - var SecHighTaxAmount = parseFloat($('#AfterSecHighTax').val()); - var KrishiTaxAmount = parseFloat($('#AfterKrishiTax').val()); - var SwachhTaxAmount = parseFloat($('#AfterSwachhTax').val()); - - var TottaxAmt = ServiceTaxAmount+ EduCessTaxAmount + SecHighTaxAmount+ KrishiTaxAmount + SwachhTaxAmount; - return parseFloat(TottaxAmt.toFixed(2)); - } - /* - $(function () { - $('#serviceTax').DataTable({ - "paging": true, - "lengthChange": true, - "searching": false, - //"ordering": true, - // "info": true, - "autoWidth": true - - }); - }); - - * clear the seleted fields after clicking add service - */ - function clearServiceModalFields() - { - // To reset the Modal controls - - $('#ServiceMaterialCode').val("0") ; - $("#ServiceDescription").val(''); - $('#ServiceUOM').val(''); - $('#ServiceQuantity').val(''); - $("#ServiceRate").val(''); - - $("#ServiceBasAmt").val(''); - $("#AfterServiceTax").val(''); - $("#AfterEduCess").val(''); - $("#AfterSecHighTax").val(''); - $("#AfterKrishiTax").val(''); - $("#AfterSwachhTax").val(''); - $("#TotalOrderValue ").val(''); - - } - /** - * This function is used to edit the service seleted po - */ - var EditGetMaterialData; - - $("#EDITSERVICE").on("shown.bs.modal", function(e) { - - EditGetMaterialData=''; - - userid = $(e.relatedTarget).data('userid'); - var tr= document.getElementById(userid); - var cellval = tr.cells; - var id= $('#Reqnumber'+userid).val(); - $('#EditReqNo').val($('#Reqnumber'+userid).val()); - $('#EditdeptName').val($('#departmentName'+userid).val()); - - - $('#EditAvlBudAmt').val($('#AvilBudget'+userid).val()); - - $('#EditItemName').val($('#materialName'+userid).val()); - $('#EditUOM').val($('#uom'+userid).val()); - $('#EditQuantity').val($('#quantity'+userid).val()); - $('#EditRate').val($('#itemRate'+userid).val()); - $('#txtEditBasicValue').val(cellval[6].innerHTML); - $('#EditAfterServiceTax').val($('#ServiceTax'+userid).val()); - $('#EditAfterEduCess').val($('#EduCess'+userid).val()); - $('#EditAfterSecHighTax').val($('#SecHighTax'+userid).val()); - $('#EditAfterKrishiTax').val($('#KrishiTax'+userid).val()); - $('#EditAfterSwachhTax').val($('#SwachhTax'+userid).val()); - $('#EditTotalOrderValue').val(cellval[8].innerHTML); - - - - - - $.each(JSON.parse(CostArray), function (index, value) { - if ($('#costCode'+userid).val()==value.CostCenterCode) { - $('#EditCostCenter').val($('#costCode'+userid).val() + '-'+ value.CostCenterName); - - } - - - $("#EditMaterialCode").empty(); - - $("#EditMaterialCode").append( $('<option></option>').val($('#materialCode'+userid).val()).html($('#materialCode'+userid).val() + "-" + $('#materialName'+userid).val()) ); - $.each(JSON.parse(materialData), function (index, value) { - - - if($('#materialCode'+userid).val() != value.MaterialCode) - { - - $("#EditMaterialCode").append( $('<option></option>').val(value.MaterialCode).html(value.MaterialCode + "-" + value.MaterialName) ); - - } - - - - }); - - - - - }); - - /*get Material list while editing - - var EditPoType=$('#Reqnumber'+userid).val(); - - $.ajax({ - data:{input:EditPoType}, - type:"POST", - url:"<?php echo base_url() ?>emergencypurchaseorder/getMaterialCode?input="+EditPoType, - success:function(data) { -$('#content').loader('hide'); - if(data) - { - EditGetMaterialData=data; - - $("#EditMaterialCode").empty(); - - $("#EditMaterialCode").append( $('<option></option>').val($('#materialCode'+userid).val()).html($('#materialCode'+userid).val() + "-" + $('#materialName'+userid).val()) ); - $.each(JSON.parse(data), function (index, value) { - - - if($('#materialCode'+userid).val() != value.MaterialCode) - { - - $("#EditMaterialCode").append( $('<option></option>').val(value.MaterialCode).html(value.MaterialCode + "-" + value.MaterialName) ); - - } - - - - }); - - - } - - } - });*/ - - - - - - - - }); - - /** - * edit emenergency service po validations - */ - - function EditRatechange(){ - - - if($('#EditQuantity').val() != '' && $('#EditRate').val() != '') - { - var txtQuantity = parseFloat( $('#EditQuantity').val()); - var txtUnitPrice = parseFloat($('#EditRate').val()); - var Tot = txtQuantity * txtUnitPrice - $('#txtEditBasicValue').val(Tot); - ExceedBudget(Tot, $('#EditAvlBudAmt').val()); - - //Service Tax calculation - $('#EditAfterServiceTax').val(calculateServiceTax($('#txtEditBasicValue').val())); // calculateServiceTax(); - - //Edu. cess @2% on service Tax - $('#EditAfterEduCess').val( calculateEduess($('#EditAfterServiceTax').val())); - - //Sec. & Higher Edu. cess @1 % on service Tax - - $('#EditAfterSecHighTax').val(calculateHigherEdu($('#EditAfterServiceTax').val())); - //Krishi Kalyan tax - - $('#EditAfterKrishiTax').val(calculateKrishiKalyantax($('#txtEditBasicValue').val())); - //Swachh Bharat tax - - $('#EditAfterSwachhTax').val(calculateSwachhBharattax($('#txtEditBasicValue').val())); - - calculateTotalEditOrdervalue(); - } - - } - /** - * calculate total edit order value - */ - function calculateTotalEditOrdervalue() - { - var basicValue = parseFloat($('#txtEditBasicValue').val()); - var ServiceTaxAmount = parseFloat($('#EditAfterServiceTax').val()); - var EduCessTaxAmount = parseFloat($('#EditAfterEduCess').val()); - var SecHighTaxAmount = parseFloat($('#EditAfterSecHighTax').val()); - var KrishiTaxAmount = parseFloat($('#EditAfterKrishiTax').val()); - var SwachhTaxAmount = parseFloat($('#EditAfterSwachhTax').val()); - - var TotAmt = basicValue + ServiceTaxAmount+ EduCessTaxAmount + SecHighTaxAmount+ KrishiTaxAmount + SwachhTaxAmount; - - $('#EditTotalOrderValue').val( parseFloat(TotAmt).toFixed(2)); - - } - /** - * This function is used for update service - */ - $('.EditService').click(function(){ - - if( validateEditServiceTax()) - { - - var CostCode = $("#EditCostCenter").val(); - var AvilBudget = $('#EditAvlBudAmt').val(); - var editMaterialCode = $("#EditMaterialCode").val(); - - var editDescription = $("#EditItemName").val(); - var editUOM = $('#EditUOM').val(); - var editQuantity = $('#EditQuantity').val(); - - var itemRate = $("#EditRate").val(); - - - var AfterServiceTax = $("#EditAfterServiceTax").val(); - - - var AfterEduCess = $("#EditAfterEduCess").val(); - - - var AfterSecHighTax = $("#EditAfterSecHighTax").val(); - - - var AfterKrishiTax = $("#EditAfterKrishiTax").val(); - - - var AfterSwachhTax = $("#EditAfterSwachhTax").val(); - - var TotalOrderValue = $("#EditTotalOrderValue ").val(); - - - var basicval = $("#txtEditBasicValue").val(); - - var TotalTaxValue = calculateEditTaxValue(); - - - - var tr= document.getElementById(userid); - var cellval = tr.cells; - - cellval[2].innerHTML = editDescription; - cellval[3].innerHTML = editQuantity; - cellval[4].innerHTML =editUOM; - cellval[5].innerHTML =itemRate; - cellval[6].innerHTML =basicval; - cellval[7].innerHTML =TotalTaxValue; - cellval[8].innerHTML =TotalOrderValue; - - - $('#materialCode'+userid).val(editMaterialCode); - $('#materialName'+userid).val(editDescription); - $('#uom'+userid).val(editUOM); - $('#quantity'+userid).val(editQuantity); - $('#itemRate'+userid).val(itemRate); - $('#ServiceTax'+userid).val(AfterServiceTax); - $('#EduCess'+userid).val(AfterEduCess); - $('#SecHighTax'+userid).val(AfterSecHighTax); - $('#KrishiTax'+userid).val(AfterKrishiTax); - $('#SwachhTax'+userid).val(AfterSwachhTax); - $('#TotalOrderValue'+userid).val(TotalOrderValue); - - populateValueMainFormForEditServiceTax(); - - } - - }); - /** - * This function is used for validate while update - */ - function validateEditServiceTax() - { - - if($('#EditQuantity').val() == '') - { - alert('Please Enter the Quantity value'); - $('#EditQuantity').focus(); - return false; - } - else if($('#EditRate').val() == '') - { - alert('Please Enter the Rate of the Item'); - $('#EditRate').focus(); - return false; - } - - else if(ExceedBudget($('#EditTotalOrderValue').val(),$('#EditAvlBudAmt').val()) == false) - { - $('#EditRate').focus(); - return false; - } - else - { - return true; - } - - } - function calculateEditTaxValue() - { - var ServiceTaxAmount = parseFloat($('#EditAfterServiceTax').val()); - var EduCessTaxAmount = parseFloat($('#EditAfterEduCess').val()); - var SecHighTaxAmount = parseFloat($('#EditAfterSecHighTax').val()); - var KrishiTaxAmount = parseFloat($('#EditAfterKrishiTax').val()); - var SwachhTaxAmount = parseFloat($('#EditAfterSwachhTax').val()); - - var TottaxAmt = ServiceTaxAmount+ EduCessTaxAmount + SecHighTaxAmount+ KrishiTaxAmount + SwachhTaxAmount; - return parseFloat(TottaxAmt.toFixed(2)); - } - function populateValueMainFormForEditServiceTax() - { - - var rows = document.getElementById('serviceTax').rows.length; - var TotServiceTax = 0; - var TotEduCess = 0; - var TotSecHighTax = 0; - var TotKrishiTax = 0; - var TotSwachhTax = 0; - var TotSummary = 0; - var TotBasicAmout = 0; - for (i = 1; i < rows-1; i++) { - - var AfterServiceTax = $('#ServiceTax'+i).val() == '' ? '0.00' : $('#ServiceTax'+i).val(); - var AfterEduCess = $('#EduCess'+i).val() == '' ? '0.00' : $('#EduCess'+i).val(); - var AfterSecHighTax = $('#SecHighTax'+i).val() == '' ? '0.00' : $('#SecHighTax'+i).val(); - var AfterKrishiTax =$('#KrishiTax'+i).val() == '' ? '0.00' : $('#KrishiTax'+i).val(); - var AfterSwachhTax = $('#SwachhTax'+i).val() == '' ? '0.00' : $('#SwachhTax'+i).val(); - var TotalVal =$('#TotalOrderValue'+i).val() == '' ? '0.00' : $('#TotalOrderValue'+i).val(); - var Quantity = $('#quantity'+i).val() == '' ? '0.00' : $('#quantity'+i).val(); - var ItemRate = $('#itemRate'+i).val() == '' ? '0.00' : $('#itemRate'+i).val(); - var BasicVal = parseFloat(Quantity) * parseFloat(ItemRate); - - TotServiceTax = parseFloat(TotServiceTax) + parseFloat(AfterServiceTax); - TotEduCess = parseFloat(TotEduCess) + parseFloat(AfterEduCess); - TotSecHighTax = parseFloat(TotSecHighTax) + parseFloat(AfterSecHighTax); - TotKrishiTax = parseFloat(TotKrishiTax) + parseFloat(AfterKrishiTax); - TotSwachhTax = parseFloat(TotSwachhTax) + parseFloat(AfterSwachhTax); - TotSummary = parseFloat(TotSummary) + parseFloat(TotalVal); - TotBasicAmout = parseFloat(TotBasicAmout) + parseFloat(BasicVal); - - } - - - $('#txtTotBasicAmount').val(parseFloat(TotBasicAmout).toFixed(2) ); - $('#txtTotalServiceTax').val(parseFloat(TotServiceTax).toFixed(2) ); - $('#txtTotHigherEdu').val(parseFloat(TotSecHighTax).toFixed(2) ); - $('#txtTotalEducess').val(parseFloat(TotEduCess).toFixed(2) ); - $('#txtTotalKrishiKalyan').val(parseFloat(TotKrishiTax).toFixed(2) ); - $('#txtTotSwachhBharat').val(parseFloat(TotSwachhTax).toFixed(2) ); - $('#txtTotalOrderValueSummaryService').val(parseFloat(TotSummary).toFixed(2) ); - - - } - /** - * This function is used for delete list of tem from selected list - */ - function DeleteRow(rowid) - { - var DelRows = $('#txtDeletedRow').val(); - - var answer = confirm(" Do you want to delete the Item from the List?") - if (answer) - { - var td = document.getElementById(rowid); - td.parentNode.removeChild(td); - - var materialCode = $('#materialCode'+rowid).val(); - - var removeItem = $('#materialCode'+rowid).val(); - - - $.each(JSON.parse(materialData), function (index, value) { - if (value.MaterialCode==materialCode) { - $("#ServiceMaterialCode").append( $('<option></option>').val(value.MaterialCode).html(value.MaterialCode + "-" + value.MaterialName) ); - } - - - - }); - SelectedMaterialCode.splice( SelectedMaterialCode.indexOf('removeItem'), 1 ); - - if(DelRows != '') - { - DelRows = DelRows + ":" + rowid; - populateValueMainFormForDeleteServiceTax(rowid); - } - else - { - DelRows= "0" + ":" + rowid; - populateValueMainFormForDeleteServiceTax(rowid); - - } - $('#txtDeletedRow').val(DelRows); - } - - } - /** - * This function is used to submit and save the emergency service Po list - */ - function Save(status) - { - if(status == '0') - { - stat = '<?php echo PO_DRAFT; ?>'; - } - else - { - stat = '<?php echo REQITEM_Emergency_PO_CREATED; ?>'; - } - - - var splinstr = $('#txtSpcialInstruction').val(); - var deladd = $('#DeliveryAddr').val(); - $('#SpcialInstruction').val(splinstr); - $('#txtDeliveryAddress').val(deladd); - $('#txtStatus').val(stat); - var TextRowCount = $('#txtRowCount').val(); - var TextDeletedRowCount = $('#txtDeletedRow').val(); - var TextTotalOrderValueSummaryService = $('#txtTotalOrderValueSummaryService').val(); - var TextSpcialInstruction = $('#txtSpcialInstruction').val(); - var TextStatus = stat; - - if(validate()) - { - - if(document.getElementById('serviceTax').rows.length < 3) - { - alert('Please Select Line item to Create PO'); - $('#Deliverydt').focus(); - return false; - } - else - { - $('#content').loader('show'); - $.ajax({ - data:$('.CreatealterPO').serialize()+"&TextRowCount="+TextRowCount+"&TextDeletedRowCount="+TextDeletedRowCount+"&TextTotalOrderValueSummaryService="+TextTotalOrderValueSummaryService+"&TextSpcialInstruction="+TextSpcialInstruction+"&TextStatus="+TextStatus, - type:"POST", - url:"<?php echo base_url() ?>emergencypurchaseorder/addNewServicePurchaseOrder", - success:function(data) { - if(data) - { - $('#content').loader('hide'); - alert(data); - $('#txtRowCount').val(''); - $('#txtDeletedRow').val(''); - $('#SpcialInstruction').val(''); - $('#txtDeliveryAddress').val(''); - window.location = "purchaseorderListing"; - - } - else - { - $('#content').loader('hide'); - alert("Error"); - } - - } - - }); - } - - } - } - - - /** - * This function is used to submit and save the emergency Revenue Po list - */ - function RevenueSave(status) - { - if(status == '0') - { - stat = '<?php echo PO_DRAFT; ?>'; - } - else - { - stat = '<?php echo REQITEM_Emergency_PO_CREATED; ?>'; - } - - - var splinstr = $('#txtSpcialInstruction').val(); - var deladd = $('#DeliveryAddr').val(); - $('#SpcialInstruction').val(splinstr); - $('#txtDeliveryAddress').val(deladd); - $('#txtStatus1').val(stat); - var TextRowCount = $('#txtRowCount1').val(); - var TextDeletedRowCount = $('#txtDeletedRow1').val(); - var txtTotalOrderValueSummary = $('#txtTotalOrderValueSummary').val(); - var TextSpcialInstruction = $('#txtSpcialInstruction').val(); - var TextStatus = stat; - - if(validate()) - { - if(document.getElementById('serviceTax').rows.length < 3) - { - alert('Please Select Line item to Create PO'); - $('#Deliverydt').focus(); - return false; - } - else - { - $('#content').loader('show'); - $.ajax({ - data:$('.CreatealterPO').serialize()+"&TextRowCount="+TextRowCount+"&TextDeletedRowCount="+TextDeletedRowCount+"&txtTotalOrderValueSummary="+txtTotalOrderValueSummary+"&TextSpcialInstruction="+TextSpcialInstruction+"&TextStatus="+TextStatus, - type:"POST", - url:"<?php echo base_url() ?>emergencypurchaseorder/addNewRevenuePurchaseOrder", - success:function(data) { - if(data) - { - $('#content').loader('hide'); - alert(data); - $('#txtRowCount').val(''); - $('#txtDeletedRow').val(''); - $('#SpcialInstruction').val(''); - $('#txtDeliveryAddress').val(''); - window.location = "purchaseorderListing"; - - } - else - { - $('#content').loader('hide'); - alert("Error"); - } - - } - - }); - } - - } - } - /** - * This function is used to calculate the total amounts after delete the row - */ - function populateValueMainFormForDeleteServiceTax(deletedRow) - { - var rows = document.getElementById('serviceTax').rows.length+1; - var TotServiceTax = 0; - var TotEduCess = 0; - var TotSecHighTax = 0; - var TotKrishiTax = 0; - var TotSwachhTax = 0; - var TotSummary = 0; - var TotBasicAmout = 0; - for (var i = 1; i < rows; i++) { - if(deletedRow==i){ - $('#ServiceTax'+i).val(''); - $('#EduCess'+i).val(''); - $('#SecHighTax'+i).val(''); - $('#KrishiTax'+i).val(''); - $('#SwachhTax'+i).val(''); - $('#ServiceTax'+i).val(''); - $('#TotalOrderValue'+i).val(''); - $('#quantity'+i).val(''); - $('#itemRate'+i).val(''); - - var AfterServiceTax = $('#ServiceTax'+i).val() == '' ? '0.00' : $('#ServiceTax'+i).val(); - var AfterEduCess = $('#EduCess'+i).val() == '' ? '0.00' : $('#EduCess'+i).val(); - var AfterSecHighTax = $('#SecHighTax'+i).val() == '' ? '0.00' : $('#SecHighTax'+i).val(); - var AfterKrishiTax =$('#KrishiTax'+i).val() == '' ? '0.00' : $('#KrishiTax'+i).val(); - var AfterSwachhTax = $('#SwachhTax'+i).val() == '' ? '0.00' : $('#SwachhTax'+i).val(); - var TotalVal =$('#TotalOrderValue'+i).val() == '' ? '0.00' : $('#TotalOrderValue'+i).val(); - - var Quantity = $('#quantity'+i).val() == '' ? '0.00' : $('#quantity'+i).val(); - var ItemRate = $('#itemRate'+i).val() == '' ? '0.00' : $('#itemRate'+i).val(); - var BasicVal = parseFloat(Quantity) * parseFloat(ItemRate); - - TotServiceTax = parseFloat(TotServiceTax) + parseFloat(AfterServiceTax); - TotEduCess = parseFloat(TotEduCess) + parseFloat(AfterEduCess); - TotSecHighTax = parseFloat(TotSecHighTax) + parseFloat(AfterSecHighTax); - TotKrishiTax = parseFloat(TotKrishiTax) + parseFloat(AfterKrishiTax); - TotSwachhTax = parseFloat(TotSwachhTax) + parseFloat(AfterSwachhTax); - TotSummary = parseFloat(TotSummary) + parseFloat(TotalVal); - TotBasicAmout = parseFloat(TotBasicAmout) + parseFloat(BasicVal); - } - else if(deletedRow!=i){ - var AfterServiceTax = $('#ServiceTax'+i).val() == '' ? '0.00' : $('#ServiceTax'+i).val(); - var AfterEduCess = $('#EduCess'+i).val() == '' ? '0.00' : $('#EduCess'+i).val(); - var AfterSecHighTax = $('#SecHighTax'+i).val() == '' ? '0.00' : $('#SecHighTax'+i).val(); - var AfterKrishiTax =$('#KrishiTax'+i).val() == '' ? '0.00' : $('#KrishiTax'+i).val(); - var AfterSwachhTax = $('#SwachhTax'+i).val() == '' ? '0.00' : $('#SwachhTax'+i).val(); - var TotalVal =$('#TotalOrderValue'+i).val() == '' ? '0.00' : $('#TotalOrderValue'+i).val(); - - var Quantity = $('#quantity'+i).val() == '' ? '0.00' : $('#quantity'+i).val(); - var ItemRate = $('#itemRate'+i).val() == '' ? '0.00' : $('#itemRate'+i).val(); - var BasicVal = parseFloat(Quantity) * parseFloat(ItemRate); - if(AfterServiceTax!=undefined){ - TotServiceTax = parseFloat(TotServiceTax) + parseFloat(AfterServiceTax); - TotEduCess = parseFloat(TotEduCess) + parseFloat(AfterEduCess); - TotSecHighTax = parseFloat(TotSecHighTax) + parseFloat(AfterSecHighTax); - TotKrishiTax = parseFloat(TotKrishiTax) + parseFloat(AfterKrishiTax); - TotSwachhTax = parseFloat(TotSwachhTax) + parseFloat(AfterSwachhTax); - TotSummary = parseFloat(TotSummary) + parseFloat(TotalVal); - TotBasicAmout = parseFloat(TotBasicAmout) + parseFloat(BasicVal); - } - - } - else{ - - } - - - } - - - $('#txtTotBasicAmount').val(parseFloat(TotBasicAmout).toFixed(2) ); - $('#txtTotalServiceTax').val(parseFloat(TotServiceTax).toFixed(2) ); - $('#txtTotHigherEdu').val(parseFloat(TotSecHighTax).toFixed(2) ); - $('#txtTotalEducess').val(parseFloat(TotEduCess).toFixed(2) ); - $('#txtTotalKrishiKalyan').val(parseFloat(TotKrishiTax).toFixed(2) ); - $('#txtTotSwachhBharat').val(parseFloat(TotSwachhTax).toFixed(2) ); - $('#txtTotalOrderValueSummaryService').val(parseFloat(TotSummary).toFixed(2) ); - - - } - /** - * update available budget calculation using regNo and cost center while editing - */ - $('#EditCostCenter').change(function() { - - var getCostId = $('#EditCostCenter').val(); - $("#EditAvlBudAmt").val(''); - var EditReqType =$('#EditReqNo').val(); - if(getCostId != '0') - { - - $('#content').loader('show'); - $.ajax({ - data:{id:getCostId}, - type:"POST", - url:"<?php echo base_url() ?>servicepurchaseorder/AvilBudgetAmount?ReqType="+EditReqType, - success:function(data) { - if(data) - { - $('#content').loader('hide'); - $("#EditAvlBudAmt").val(data); - if(parseFloat($("#EditAvlBudAmt").val()) <= 0) - { - $('#AlertImg').removeAttr("style"); - isExceed = 1; - } - else - { - $('#AlertImg').attr("style","display:none;"); - isExceed =0; - } - } - else - { - $('#content').loader('hide'); - alert("Error"); - } - - } - }); - } - else - { - alert('Please select the MaterialCode'); - return false; - } - - }); - /** - * getting item name and uom using global variable materialData each change ehile editing - */ - $('#EditMaterialCode').change(function(){ - - var editselectedMaterialCode=''; - editselectedMaterialCode=$("#EditMaterialCode").val(); - - $.each(JSON.parse(materialData), function (index, value) { - if(editselectedMaterialCode==value.MaterialCode){ - $("#EditMaterialCode").val(value.MaterialCode); - $("#EditItemName").val(value.MaterialName); - $("#EditItemUOM").val(value.UOM); - - } - - }); - - }); - $("#EDITREVENUE").on("shown.bs.modal", function(e) { - - - - userid = $(e.relatedTarget).data('userid'); - - var CheckLocalInter = $('#CheckLocalInter'+userid).val(); - if(CheckLocalInter == "0") - { - // style="display:none;" - // $('#Vat').removeAttr("style"); - // $('#TotVat').removeAttr("style"); - // $('#CST').attr("style","display:none;"); - // $('#TotCST').attr("style","display:none;"); - $('#EditVat').show(); - $('#EditCST').hide(); - - } - else - { - // $('#CST').removeAttr("style"); - // $('#TotCST').removeAttr("style"); - // $('#Vat').attr("style","display:none;"); - // $('#TotVat').attr("style","display:none;"); - $('#EditVat').hide(); - $('#EditCST').show(); - - } - - $('#isEdit').val(1); - //alert(userid); - var tr= document.getElementById(userid); - - var cellval = tr.cells; - - var id= $('#Reqnumber'+userid).val(); - - $('#EditRevenueReqNo').val($('#Reqnumber'+userid).val()); - $('#EditRevenuedeptName').val($('#departmentName'+userid).val()); - //$("#EditRevenueCostCenter").val($('#costCode'+userid).val()); - $('#EditRevenueAvlBudAmt').val($('#AvilBudget'+userid).val()); - - $('#EditRevenueItemName').val($('#materialName'+userid).val()); - $('#EditRevenueUOM').val($('#uom'+userid).val()); - $('#EditRevenueQuantity').val($('#quantity'+userid).val()); - $('#EditRevenueRate').val($('#itemRate'+userid).val()); - $('#txtEditRevenueBasicValue').val(cellval[6].innerHTML); - RequistQuantity = $('#quantity'+userid).val(); - $('#txtEditDiscount').val($('#DisVal'+userid).val()); - $('#txtEditAfterDiscount').val($('#AfterDisVal'+userid).val()); - $('#txtEditVat').val($('#VatVal'+userid).val()); - $('#txtEditAfterVat').val($('#AfterVatVal'+userid).val()); - $('#txtEditCST').val($('#CSTVal'+userid).val()); - $('#txtEditAfterCST').val($('#AfterCSTVal'+userid).val()); - - $('#txtEditPackaging').val($('#PackVal'+userid).val()); - $('#txtEditAfterPackaging').val($('#AfterPackVal'+userid).val()); - $('#txtEditGST').val($('#GSTVal'+userid).val()); - $('#txtEditAfterGST').val($('#AfterGSTVal'+userid).val()); - $('#txtEditExciseDuty').val($('#ExciseVal'+userid).val()); - $('#txtEditAfterExciseDuty').val($('#AfterExciseVal'+userid).val()); - $('#txtEditOtherTax').val($('#OtherTaxVal'+userid).val()); - $('#txtEditAfterOtherTax').val($('#AfterOtherTaxVal'+userid).val()); - $('#txtEditFreight').val($('#FreightVal'+userid).val()); - $('#txtEditAfterFreight').val($('#AfterFreightVal'+userid).val()); - $('#txtEditInsurance').val($('#Insval'+userid).val()); - - $('#txtEditRevenueTotalOrderValue').val($('#TotalOrderValue'+userid).val()); - - - $.each(JSON.parse(CostArray), function (index, value) { - if ($('#costCode'+userid).val()==value.CostCenterCode) { - $('#EditRevenueCostCenter').val($('#costCode'+userid).val() + '-'+ value.CostCenterName); - - } - - - $("#EditRevenueMaterialCode").empty(); - - $("#EditRevenueMaterialCode").append( $('<option></option>').val($('#materialCode'+userid).val()).html($('#materialCode'+userid).val() + "-" + $('#materialName'+userid).val()) ); - $.each(JSON.parse(materialData), function (index, value) { - - - if($('#materialCode'+userid).val() != value.MaterialCode) - { - - $("#EditRevenueMaterialCode").append( $('<option></option>').val(value.MaterialCode).html(value.MaterialCode + "-" + value.MaterialName) ); - - } - - - - }); - - - - - }); - $("#EditDiscountType").val($('#DisType'+userid).val()); - $("#drpEditFreight").val($('#FreightType'+userid).val()); - $("#EditPackagingType").val($('#PackType'+userid).val()) - - - - -}); - $('#EditRevenueMaterialCode').change(function(){ - - var editselectedMaterialCode=''; - editselectedMaterialCode=$("#EditRevenueMaterialCode").val(); - - $.each(JSON.parse(materialData), function (index, value) { - if(editselectedMaterialCode==value.MaterialCode){ - $("#EditRevenueMaterialCode").val(value.MaterialCode); - $("#EditRevenueItemName").val(value.MaterialName); - $("#EditRevenueUOM").val(value.UOM); - - } - - }); - - }); -$('.EditRevenue').click(function(){ - - - if(validateEditRevenueTax() && validateEditExceedLimit()) - { - //alert('inside Add'); - var CostCode = $("#EditRevenueCostCenter").val(); - var AvilBudget = $('#EditRevenueAvlBudAmt').val(); - var editMaterialCode = $("#EditRevenueMaterialCode").val(); - var editDescription = $("#EditRevenueItemName").val(); - var editUOM = $('#EditRevenueUOM').val(); - var editQuantity = $('#EditRevenueQuantity').val(); - - var itemRate = $("#EditRevenueRate").val(); - - - var DisType = $("#EditDiscountType").val(); - var DisVal = $("#txtEditDiscount").val(); - var AfterDisVal = $("#txtEditAfterDiscount").val(); - - var PackOption = PackagingCalculation ; - var PackType = $("#EditPackagingType").val(); - var PackVal = $("#txtEditPackaging").val(); - var AfterPackVal = $("#txtEditAfterPackaging").val(); - - var ExciseOption = ExciseCalculation ; - var ExciseVal = $("#txtEditExciseDuty").val(); - var AfterExciseVal = $("#txtEditAfterExciseDuty").val(); - - var VatOption = VatCalculation ; - var VatVal = $("#txtEditVat").val(); - var AfterVatVal = $("#txtEditAfterVat").val(); - - var CSTOption = CSTCalculation ; - var CSTVal = $("#txtCST").val(); - var AfterCSTVal = $("#txtEditAfterCST").val(); - - var GSTVal = $("#txtEditGST").val(); - var AfterGSTVal = $("#txtEditAfterGST").val(); - - - var OtherTaxVal = $("#txtEditOtherTax").val(); - var AfterOtherTaxVal = $("#txtEditAfterOtherTax").val(); - - var FreightType = $("#drpEditFreight").val(); - var FreightVal = $("#txtEditFreight").val(); - var AfterFreightVal = $("#txtEditAfterFreight").val(); - - var basicval = $("#txtEditRevenueBasicValue").val(); - var Insval = $("#txtEditInsurance").val(); - var TotalOrderValue = $("#txtEditRevenueTotalOrderValue").val(); - - var TotalTaxValue = calculateEditTaxValue(); - - - var tr= document.getElementById(userid); - var cellval = tr.cells; - - cellval[2].innerHTML = editDescription; - cellval[3].innerHTML = editQuantity; - cellval[4].innerHTML =editUOM; - cellval[5].innerHTML =itemRate; - cellval[6].innerHTML =basicval; - cellval[7].innerHTML =AfterOtherTaxVal; - cellval[8].innerHTML =TotalOrderValue; - - - $('#materialCode'+userid).val(editMaterialCode); - $('#materialName'+userid).val(editDescription); - $('#uom'+userid).val(editUOM); - $('#quantity'+userid).val(editQuantity); - $('#itemRate'+userid).val(itemRate); - $('#DisType'+userid).val(DisType); - $('#DisVal'+userid).val(DisVal); - $('#AfterDisVal'+userid).val(AfterDisVal); - $('#PackOption'+userid).val(PackOption); - $('#PackType'+userid).val(PackType); - $('#PackVal'+userid).val(PackVal); - $('#AfterPackVal'+userid).val(AfterPackVal); - $('#ExciseOption'+userid).val(ExciseOption); - $('#ExciseVal'+userid).val(ExciseVal); - $('#AfterExciseVal'+userid).val(AfterExciseVal); - $('#VatOption'+userid).val(VatOption); - $('#VatVal'+userid).val(VatVal); - $('#AfterVatVal'+userid).val(AfterVatVal); - $('#CSTOption'+userid).val(CSTOption); - $('#CSTVal'+userid).val(CSTVal); - $('#AfterCSTVal'+userid).val(AfterCSTVal); - $('#GSTVal'+userid).val(GSTVal); - $('#AfterGSTVal'+userid).val(AfterGSTVal); - $('#OtherTaxVal'+userid).val(OtherTaxVal); - $('#AfterOtherTaxVal'+userid).val(AfterOtherTaxVal); - $('#FreightType'+userid).val(FreightType); - $('#FreightVal'+userid).val(FreightVal); - $('#AfterFreightVal'+userid).val(AfterFreightVal); - $('#basicval'+userid).val(basicval); - $('#Insval'+userid).val(Insval); - $('#TotalOrderValue'+userid).val(TotalOrderValue); - populateValueMainFormForEditRevenueTax(); - } - - }); - function validateEditRevenueTax() - { - if($('#EditRevenueCostCenter').val() == "0") - { - alert('Please select the Cost center'); - $('#EditRevenueCostCenter').focus(); - return false; - } - else if($('#EditRevenueMaterialCode').val() == "0") - { - alert('Please select the Material Code'); - $('#EditRevenueMaterialCode').focus(); - return false; - } - else if($('#EditRevenueQuantity').val() == '') - { - alert('Please Enter the Quantity value'); - $('#EditRevenueQuantity').focus(); - return false; - } - else if($('#EditRevenueRate').val() == '') - { - alert('Please Enter the Rate of the Item'); - $('#EditRevenueRate').focus(); - return false; - } - else - { - return true; - } - } - function validateEditExceedLimit() - { - var avalbudAmt = parseFloat($('#EditRevenueAvlBudAmt').val()); - var basicAmountRate = parseFloat($('#txtEditRevenueBasicValue').val()); - var totalAmount = parseFloat($('#txtEditRevenueTotalOrderValue').val()); - - if(basicAmountRate > avalbudAmt || totalAmount > avalbudAmt) - { - alert('Basic amount is exceeding the Budget Limit.Please adjust the product value.'); - $('#EditRevenueRate').focus(); - return false; - } - else - { - return true; - } - - } - function populateValueMainFormForEditRevenueTax() -{ - - var rows = document.getElementById('serviceTax').rows.length; - //alert(rows); - var totBasicAmt = 0; - var totDiscountAmt = 0; - var totPackagingAmt = 0; - var totExciseAmt = 0; - var totVATAmt = 0; - var totCSTAmt = 0; - var totGSTAmt = 0; - var totOtherTaxAmt = 0; - var totFreightAmt = 0; - var totInsuranceAmt = 0; - var totOrderSummaryAmt = 0; - var i = 0; - do { - i += 1; - - - var tr= document.getElementById(i); - //alert(tr); - if(tr != null) - { - cells = tr.getElementsByTagName('td'); - - - var rowid = cells[0].innerHTML; - // alert(rowid); - var Packaging = $('#AfterPackVal'+rowid).val() == '' ? '0.00' : $('#AfterPackVal'+rowid).val(); - var ExciseDuty = $('#AfterExciseVal'+rowid).val() == '' ? '0.00' : $('#AfterExciseVal'+rowid).val(); - var Vat = $('#AfterVatVal'+rowid).val() == '' ? '0.00' : $('#AfterVatVal'+rowid).val(); - var CST =$('#AfterCSTVal'+rowid).val() == '' ? '0.00' : $('#AfterCSTVal'+rowid).val(); - var GST = $('#AfterGSTVal'+rowid).val() == '' ? '0.00' : $('#AfterGSTVal'+rowid).val(); - var OtherTax = $('#AfterOtherTaxVal'+rowid).val() == '' ? '0.00' : $('#AfterOtherTaxVal'+rowid).val(); - var Freight = $('#AfterFreightVal'+rowid).val() == '' ? '0.00' : $('#AfterFreightVal'+rowid).val(); - var Insurance = $('#Insval'+rowid).val() == '' ? '0.00' : $('#Insval'+rowid).val(); - var Discount =$('#AfterDisVal'+rowid).val() == '' ? '0.00' : $('#AfterDisVal'+rowid).val(); - var BasicVal = $('#basicval'+rowid).val() == '' ? '0.00' : $('#basicval'+rowid).val(); - var TotalVal =$('#TotalOrderValue'+rowid).val() == '' ? '0.00' : $('#TotalOrderValue'+rowid).val(); - //alert(TotalVal); - - - totBasicAmt = parseFloat(totBasicAmt ) + parseFloat(BasicVal); - totDiscountAmt = parseFloat(totDiscountAmt ) + parseFloat(Discount); - totPackagingAmt = parseFloat(totPackagingAmt) + parseFloat(Packaging); - totExciseAmt = parseFloat(totExciseAmt) + parseFloat(ExciseDuty); - totVATAmt = parseFloat(totVATAmt ) + parseFloat(Vat); - totCSTAmt = parseFloat(totCSTAmt ) + parseFloat(CST); - totGSTAmt = parseFloat(totGSTAmt ) + parseFloat(GST); - totOtherTaxAmt = parseFloat(totOtherTaxAmt ) + parseFloat(OtherTax); - totFreightAmt = parseFloat(totFreightAmt ) + parseFloat(Freight); - totInsuranceAmt = parseFloat(totInsuranceAmt ) + parseFloat(Insurance); - totOrderSummaryAmt = parseFloat(totOrderSummaryAmt ) + parseFloat(TotalVal); - } - - } while (i < rows); - - - $('#txtTotBasicAmount').val(parseFloat(totBasicAmt).toFixed(2) ); - $('#txtTotalDiscount').val(parseFloat(totDiscountAmt).toFixed(2) ); - $('#txtTotalPackaing').val(parseFloat(totPackagingAmt).toFixed(2) ); - $('#txtTotExciseDuty').val(parseFloat(totExciseAmt).toFixed(2) ); - $('#txtTotalVat').val(parseFloat(totVATAmt).toFixed(2) ); - $('#txtTotCST').val(parseFloat(totCSTAmt).toFixed(2) ); - $('#txtTotalGST').val(parseFloat(totGSTAmt).toFixed(2) ); - $('#txtTotalOtherTaxes').val(parseFloat(totOtherTaxAmt).toFixed(2) ); - $('#txtTotalFreight').val(parseFloat(totFreightAmt).toFixed(2) ); - $('#txtTotalInsurance').val(parseFloat(totInsuranceAmt).toFixed(2) ); - $('#txtTotalOrderValueSummary').val(parseFloat(totOrderSummaryAmt).toFixed(2) ); - -} -// this function is used to clear data changing schedule option -$('#Scheduleby').change(function(){ - - $("#Deliverydt").datepicker({ - minDate : 'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true,yearRange: '0:+10' - }); - - }); - $('#Deliverydt').change(function(){ - - $('#Scheduleby').val(''); - - }); - - - </script> - diff --git a/application/views/alterpurchaseorderprint.php b/application/views/alterpurchaseorderprint.php deleted file mode 100644 index 07f2536d..00000000 --- a/application/views/alterpurchaseorderprint.php +++ /dev/null @@ -1,67 +0,0 @@ -<div> - - -<div align="right"> -<h1>PURCHASE ORDER</h1><br/> -<a style="color:#515151">#PO0001</a> -</div> -</div> -<p> -<img width="80" height="80" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA11JREFUeNrsnT9IHEEYxWfFw8rgpUhlo5URi2gTbIUUSrq1ui4oRLRIY9JIKrGKTQrBgJLuuutEi4CtSSOpPIuATdIEcid2YpN9C3sc8c6bf7uZmX0P7k7ultm7337zzXxvZjGaiaIfQoiqoHTUHk6eniSPUbLQUmUoebojB23dDZGBmQiQAAmQAAmQIkACJEACpAiweA3bbvDV5mb6+iKOxfTc3MDjf15dicbBQfr3591d7wBGM1H0J3l9bNLI84UFsby6mkIzFWACJMCafJ9PJyfSx29vbHQuoqJaxl34zc5O+mVtwIPi5EIcXV52IjnoLvx+by/9wXkIF8aHbq0dgYi4vOB1Q7QV2c4BXM4Z3r+RGBTAR9VqmqhVBoZnIyOdx9taTXqQGJ+YUDqXFwBV4WGU69aXRkNsr69LtyEzHfIKIKJCVl9PT3u+/63P+6bnC64SuWm3jdsYn5xkKcdamCJAAiwjQJcHAC8ATs/OBg1Qy0y4ub6WPhb1cuPwUFycn9/77OPWlvXzeQGw2QPGQ9o/PhZrS0v3IPpooFrpwgChYniidq6fnTnvrBSaA3Uc3A/1uvPuSmEA0f0uFLsyBKcZDjaisvSj8DsFW6pbcHPQpV12WQoBCHhri4taEOGwhJAXjeeBgFebn1eyp0LKi1Ym0rCsXieRqLk06HVetFqJwHmWnRz3yotHzabT9n0hpRxGZ0SjjpGKCEQkxgUtWDlbCyMfIi/qTHMgrDf7srCem5mQDS5YQNKRD2vCuQLMhCVM3bwIiK4PLIUYqrp5EXPFeGWFALO8CEdGddId7NYOHWFQUa1cUO4Fty78/fZW6tFrjx7gqfqAT0PbmWAqVCwq+bDUOxMeyokh6L8B1J1kE2BgIkACJMDyAbSx56/cACV3CoyOjfX9rNSrcrI7E/qVYYCnYhKY3LXkJECVOdx+Us51m6Nwm7HVQyUCf4UGEJuFZPMgIhC+XlYfw21WWQ/GxXJ50q09iBS1MSjYW73ww3SXMVXOobsk4MU80GQZc5DQbl5tOzWRRpS8nJqy1tUAzWZ7ecvKDdfdggWfTV0GbdnA4JB1UdhbHjo0LesAS6YWa2GaCQRIgARIESABEiABUgRIgARYRoAVYtBWBfcL/xb8hwS6av8VYADVjF2M5sTWJAAAAABJRU5ErkJggg=="><br/> -<b style="color:#3c8dbc">Siddharth Industries</b><br/> Survey No: 168/1C3,Pennalur Pet Road,<br/>Goonipalyam village,Uthukottai Taluk,<br/>Tiruvallur Dist, Chennai,Tamilnadu,Pin code : 602026.</p> -<p><a style="color:#3c8dbc">Vendor Address</a> <br/> DR Enterprices <br/>Uthukottai Taluk,Tiruvallur Dist, Chennai,Tamilnadu,Pin code : 602026.</p> -<p><a style="color:#3c8dbc">Delivery To</a><br/> Siddharth Industries<br/> Survey No: 168/1C3,Pennalur Pet Road,<br/>Goonipalyam village, Uthukottai Taluk,Tiruvallur Dist,<br/> Chennai,Tamilnadu,Pin code : 602026. - -<div align="right"><?php echo "Date : " . date("d/m/y"); ?><br/><?php echo "Delivery Date : " . date("d/m/y"); ?></div></p> - - -<table style="border-collapse: collapse;" cellpadding="0" cellspacing="0" border="1" width="105%"> -<tr style="background:#000;color:#fff;"> -<th>#</th> -<th>Item and Description</th> -<th>Qty</th> -<th>Rate per unit</th> -<th>Excide Duty</th> -<th>Vat</th> -<th>GST</th> -<th>CST</th> -<th>Other Taxes</th> -<th>Amount (Rs)</th> -</tr> -<tr> -<td>1</td> -<td>Resin - (A grade)</td> -<td align="right">100</td> -<td align="right">120</td> -<td align="right">500</td> -<td align="right">1000</td> -<td align="right">1300</td> -<td align="right">700</td> -<td align="right">200</td> -<td align="right">1,23,800</td> -</tr> -<tr> -<td>2</td> -<td>Dry Sand - (A grade)</td> -<td align="right">1000</td> -<td align="right">1200</td> -<td align="right">5000</td> -<td align="right">10000</td> -<td align="right">13000</td> -<td align="right">7000</td> -<td align="right">2000</td> -<td align="right">12,38,000</td> -</tr> -</table> -<div align="right"> - -<p>Sub Total (Rs):13,61,800</p> -<hr/> -<p>Excise Duty (Rs):5500</p> -<p>Vat (Rs):11000</p> -<p>GST (Rs):14300</p> -<p>CST (Rs) :7700</p> -<p>Other Taxes (Rs) :2200</p> -<hr/> -<p>Total Amount (Rs):13,61,800 </p> -</div> \ No newline at end of file diff --git a/application/views/assetListing.php b/application/views/assetListing.php deleted file mode 100644 index c8f4ec3f..00000000 --- a/application/views/assetListing.php +++ /dev/null @@ -1,89 +0,0 @@ - -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - <center>Siddharth industries - Asset Details</center> - - </h1> - </section> - <section class="content"> - <div class="row"> - <div class="col-xs-12 text-right"> - <div class="form-group"> - <a class="btn btn-primary" href="<?php echo base_url(); ?>addasset">Add New Asset</a> - <a class="btn btn-primary" href="<?php echo base_url(); ?>assetdetails/export_asset">Export Asset Details <i class="fa fa-download"aira-hidden="true"></i></a> - </div> - </div> - </div> - <div class="row"> - <div class="col-xs-12"> - - <table class="table table-bordered table-hover" id="datatable" style="background-color:#fff;font-size:12px;" > - <thead> - <tr> - <th>Asset Code</th> - <th>Asset Name</th> - <th>Description</th> - <th>Department Code</th> - <th>Location</th> - <th>Asset User</th> - <th>Supplier ID</th> - <th>Date Of Purchase</th> - <th>Asset Value</th> - <th>Asset Status</th> - - - </tr> - </thead> - <tbody> - <?php - if(!empty($userRecords)) - { - foreach($userRecords as $record) - { - ?> - <tr> - <td><u><a href="<?php echo base_url().'assetdetails/editOldasset/?AssetID='.$record->AssetCode; ?>" data-toggle="tooltip" title="<?php echo $record->AssetCode; ?> - Click here to view Asset details"><?php echo $record->AssetCode ?> - <td><?php echo $record->AssetName ?></td> - <td><?php echo $record->Description ?></td> - <td><?php echo $record->DEPCode ?></td> - <td><?php echo $record->Location ?></td> - <td><?php echo $record->UserName ?></td> - <td><?php echo $record->SupplierCode ?></td> - <td><?php - $dtpurchase = new DateTime($record->DateOfPurchase); - $DOPurchase = $dtpurchase ->format('Y-m-d'); - echo $DOPurchase ?></td> - <td><?php echo number_format($record->AssetValue, 2); ?></td> - <td><?php echo $record->AssetStatus ?></td> - - </tr> - <?php - } - } - ?> - </tbody> - </table> - - </div> - </div> - </section> -</div> -<script type="text/javascript" src="<?php echo base_url(); ?>assets/js/common.js" charset="utf-8"></script> - <script type="text/javascript"> - - $(function () { - - $('#datatable').DataTable({ - "paging": true, - "lengthChange": true, - "searching": true, - "ordering": true, - "info": true, - "autoWidth": true - - }); - }); - -</script> diff --git a/application/views/capitalpopdf.php b/application/views/capitalpopdf.php deleted file mode 100644 index 0e87ef12..00000000 --- a/application/views/capitalpopdf.php +++ /dev/null @@ -1,121 +0,0 @@ - -<div><center> -<h2>CAPITAL PURCHASE ORDER</h2> -<a style="color:#515151">#PO0001</a></center> -</div> - -<p> -<b style="color:#3c8dbc">Siddharth Industries</b><br/> Survey No: 168/1C3,Pennalur Pet Road,<br/>Goonipalyam village,Uthukottai Taluk,<br/>Tiruvallur Dist, Chennai,Tamilnadu,Pin code : 602026.</p> -<table style="border-collapse: collapse;" cellpadding="0" cellspacing="0" border="1" width="100%"> -<tr> -<td> -<p><a style="color:#3c8dbc">Vendor Address</a> <br/> DR Enterprices <br/>Uthukottai Taluk,Tiruvallur Dist,<br/> Chennai,Tamilnadu,Pin code : 602026.</p></td> -<td> -<p><a style="color:#3c8dbc">Delivery To</a><br/> Siddharth Industries<br/> Survey No: 168/1C3,Pennalur Pet Road, Goonipalyam village, <br/> Uthukottai Taluk,Tiruvallur Dist, Chennai,Tamilnadu,Pin code : 602026.<p></td> -<td><div align="right">Purchase Order Date :2/5/2017 , Delivery Date :10/5/2017</div></td> -</tr> -</table> - <table style="border-collapse: collapse;" cellpadding="0" cellspacing="0" border="1" width="100%"> -<tr style="background:#000;color:#fff;"> -<th>Service Tax</th> -<th>Educess Tax</th> -<th>Sec Higher Educess Tax</th> -<th>Krishi Kalyan tax</th> -<th>Swachh Bharat tax</th> - </tr> - <tr> - <td align="right">100</td> -<td align="right">120</td> -<td align="right">500</td> -<td align="right">200</td> -<td align="right">100</td> -</tr> -</table> -<table style="border-collapse: collapse;" cellpadding="0" cellspacing="0" border="1" width="100%"> -<tr style="background:#000;color:#fff;"> -<th>#</th> -<th>Item and Description</th> -<th>Qty</th> -<th>Rate per unit</th> -<th>Landing Charge</th> -<th>High Seas Sales charge</th> -<th>Custom duty</th> -<th>Custom duty- Edu.cess</th> -<th>Custom duty-Sec & Hig Edu cess</th> -<th>Excise duty</th> -<th>Excise duty- Edu.cess</th> -<th>Excise duty-Sec & Hig Edu cess</th> -<th>Additional Excise duty</th> -<th>Gross duty payable</th> -<th>Available Modvat -set-off on import</th> -<th>Gross expenses due to custom duty</th> -<th>Total Amount(INR)</th> -</tr> -<tr> -<td>1</td> -<td>Resin - (A grade)</td> -<td align="right">100</td> -<td align="right">120</td> -<td align="right">500</td> -<td align="right">1000</td> -<td align="right">1300</td> -<td align="right">100</td> -<td align="right">120</td> -<td align="right">500</td> -<td align="right">1000</td> -<td align="right">1300</td> -<td align="right">700</td> -<td align="right">1300</td> -<td align="right">7000</td> -<td align="right">200</td> -<td align="right">1,23,800</td> -</tr> -<tr> -<td>2</td> -<td>Dry Sand - (A grade)</td> -<td align="right">1000</td> -<td align="right">1200</td> -<td align="right">5000</td> -<td align="right">10000</td> -<td align="right">13000</td> -<td align="right">100</td> -<td align="right">120</td> -<td align="right">500</td> -<td align="right">1000</td> -<td align="right">1300</td> -<td align="right">7000</td> -<td align="right">1300</td> -<td align="right">7000</td> -<td align="right">2000</td> -<td align="right">12,38,000</td> -</tr> -</table> - -<table style="border-collapse: collapse;" cellpadding="0" cellspacing="0" border="1" width="100%"> -<tr> - <td align="center"><p>Landing Charge (Rs):5500</p></td> - <td align="center"><p>High Seas Sales charge (Rs):11000</p></td> - <td align="center"><p>Custom duty (Rs):14300</p></td> - <td align="center"><p>Custom duty- Edu.cess (Rs):14300</p></td> -</tr> -<tr> - <td align="center"><p>Custom duty-Sec & Hig Edu cess (Rs) :7700</p></td> - <td align="center"><p>Excise duty (Rs) :2200</p></td> - <td align="center"><p>Excise duty- Edu.cess (Rs):1300 </p></td> - <td align="center"><p>Excise duty-Sec & Hig Edu cess (Rs):14300</p></td> -</tr> -<tr> - <td align="center"><p>Additional Excise duty (Rs) :7700</p></td> - <td align="center"><p>Gross duty payable (Rs) :2200</p></td> - <td align="center"><p>Available Modvat -set-off on import (Rs):1300 </p></td> - <td align="center"><p>Gross expenses due to custom duty (Rs):14300</p></td> -</tr> -</table> -<br> -<br> -<div align="right"> -<hr/> -<p>Sub Total (INR):13,61,800</p> -<hr/> - -</div> \ No newline at end of file diff --git a/application/views/capitalpurchaseorder.php b/application/views/capitalpurchaseorder.php deleted file mode 100644 index 47878727..00000000 --- a/application/views/capitalpurchaseorder.php +++ /dev/null @@ -1,2390 +0,0 @@ - <?php $ReqType =''; - $CompanyAddress = ''; - $dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); - $CurrentDate = $dt->format('Y-m-d'); - $MaxPoDate = ''; - $AvlAmount = 0; - if(!empty($MaxPODate)) - { - foreach ($MaxPODate as $date) - { - $MaxPoDate = $date->PODate; - } - } - if(!empty($CompanyDetails)) - { - foreach ($CompanyDetails as $Req) - { - $CompanyAddress = $Req->Address; - } - } - if(!empty($AvlBudAmt)) - { - - $AvlAmount = $AvlBudAmt; - - } - ?> - <style> - .modal - { - padding-right:25% ! important; - } - .dataTables_paginate - { - margin-top: -5%; - } - .dataTables_wrapper { - padding-bottom: 0px; - } - .select2{ - width:100% ! important; - } - </style> - - <script> - $(document).ready(function(){ - - //Initialize Select2 Elements - $("#drpSupplier").select2(); - $("#Reqnumber").select2(); - $("#CapitalCostCenter").select2(); - $("#MaterialCode").select2(); - $("#currencytype").select2(); - - $("#PODate").datepicker({ - //minDate : d, - maxDate : 'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true,yearRange: '-100:+0' - }); - $("#Deliverydt").datepicker({ - minDate : 'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true,yearRange: '0:+10' - }); - $('#Date').click(function () { - //for Date range selection - $('#Schedulediv').hide(); - $('#Deliverydtdiv').show(); - }); - $('#Schedule').click(function () { - //for schedule range selection - $('#Deliverydtdiv').hide(); - $('#Schedulediv').show(); - }); - - }); - </script> - <div class="content-wrapper"> - <?php - $attributes = array('class' => 'form-label-left CapitalPO ','name' => 'CapitalPO','id' => 'ImportPO'); - - echo form_open($this->config->base_url().'/purchaseorder/addPO/',$attributes); ?> - - - <section class="content"> - - <div style="border:2px solid #333"> - <div class="col-md-12"> - - <center><b><h2>Siddharth Industries - Capital Purchase Order</h2></b></center> - - <!-- <div class="col-md-1"><br/> - <a class="btn btn-info" href="<?php echo base_url(); ?>purchaseorder/CreatecapitalPOPrint" target="_blank">Print</a> - </div> --> - </div> - <div class="container-fluid"> - <div class="row"> - <div class="col-md-12"> - <div class="col-md-3"> - <div class="col-md-12"> - <label>Requistion No</label> - <?php - - $options = array("0"=>'Selected Requisition Numbers'); - if(!empty($ReqList)) - { - foreach ($ReqList as $SID): - - // print_r($SID->ReqNo); - $options[$SID->ReqNo] = $SID->ReqNo ."-". $SID->ReqBy; - $ReqType = $SID->ReqType; - endforeach; - } - echo form_multiselect('RequistionNo', $options,set_value('RequistionNo'),'id="RequistionNo"' , 'required="true"'); - - ?> - </div> - <div class="col-md-12"> - <label>Currency Type</label> - <div class="form-group"> - - - - <?php - $options = array("0"=>'Select Currency Type '); - //print_r( $options); - - if(!empty($Currency)) - { - - foreach ($Currency as $Cur): - - $options[$Cur->CurrencyCode] = $Cur->CurrencyCode.' '.' - '.' '.$Cur->CurrencyName; - - endforeach; - } - - echo form_dropdown('currencytype', $options,set_value('currencytype'),'id="currencytype"','class="form-control select2"' , 'required="true"'); - - ?> - - </div> - </div> - <div class="col-md-12"> - <a href="http://www.xe.com/" target="_blank"><u>Click here to check Today's Foreign Exchange value</u></a> - </div> - </div> - <div class="col-md-9"> - <div class="col-md-4"> - <div class="col-md-12"> - <label>Supplier</label> - - <?php - $options = array("0"=>'Select Supplier'); - //print_r( $options); - - if(!empty($Suplist)) - { - foreach ($Suplist as $SID): - - - $options[$SID->SupplierID] = $SID->SupplierID.' '.' - '.' '.$SID->SupplierName; - - endforeach; - } - - echo form_dropdown('drpSupplier', $options,set_value('drpSupplier'),'id="drpSupplier"' ,'required="true"' ,'class="form-control select2'); - - ?> - - </div> - <div class="col-md-12"><br/> - <label>Address</label> - <div class="form-group"> - <?php - $data = array('name' => 'SupAddress','value' => set_value('SupAddress'),'id'=>'SupAddress', 'class' => 'form-control' ,'readonly' => 'true','rows' => '3', 'cols' => '40'); - echo Form_textarea($data); - ?> - </div> - </div> - <div class="col-md-12"> - <label>Exchange Rate </label> - <div class="form-group"> - <?php - $data = array('name' => 'ExchangeRt','value' => set_value('ExchangeRt'),'id'=>'ExchangeRt', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - - </div> - </div> - <div class="col-md-4"> - <div class="col-md-12"> - <label>Purchase Order Type</label> - <div class="form-group"> - - <?php - $data = array('name' => 'POType','value' => set_value('POType',CAPITAL),'id'=>'POType', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-12"> - <label>Delivery Address</label> - <div class="form-group"> - <?php - $data = array('name' => 'DeliveryAddr','value' => set_value('DeliveryAddr',$CompanyAddress),'id'=>'DeliveryAddr', 'class' => 'form-control' ,'required' => 'true', 'rows' => '3', 'cols' => '40'); - echo Form_textarea($data); - ?> - </div> - </div> - <div class="col-md-12"> - <label>Purchase Order Date</label> - <div class="form-group"> - <?php - $data = array('name' => 'PODate','value' => set_value('PODate',$CurrentDate),'id'=>'PODate', 'class' => 'form-control' ,'required' => 'true', 'onkeypress'=>'return false;'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-4"> - <div class="col-md-12"> - - <b><u>Select Delivery By</u></b><br/> - <tr> - <td> - <?php echo form_label('Date', 'Date') ."&nbsp;&nbsp;". form_radio(array("name"=>"DateRange", "id"=>"Date", "value"=>"0", 'checked'=>set_radio('DateRange', '0', TRUE))); ?>&nbsp;&nbsp;&nbsp;&nbsp;</td> - <td> - <?php echo form_label('Schedule', 'Schedule') ."&nbsp;&nbsp;". form_radio(array("name"=>"DateRange", "id"=>"Schedule", "value"=>"1", 'checked'=>set_radio('DateRange', '1', FALSE))); ?> - - </td> - </tr> - </div> - - <div class="col-md-12" id="Schedulediv" style="display:none;"><br/> - <label >Schedule :</label> - - <?php - $data = array('name' => 'Scheduleby','value' => set_value('Scheduleby'),'id'=>'Scheduleby', 'class' => 'form-control' ,'required' => 'true' ,'rows' => '3', 'cols' => '40'); - echo Form_textarea($data); - ?> - - </div> - <div class="col-md-12" id="Deliverydtdiv"><br/> - <label>Delivery Date</label> - - <?php - $data = array('name' => 'Deliverydt','value' => set_value('Deliverydt',$CurrentDate),'id'=>'Deliverydt', 'class' => 'form-control' ,'required' => 'true'); - echo form_input($data); - ?> - - </div> - - </div> - - </div> - </div> - </div> - </div> - <div class="col-md-12"> - <div align="right"> - <a data-toggle="modal" ><button type="submit" onclick="myFunction();" class="btn btn-primary" id="abcd" >Select Line Item</button> </a> - </div> - <br> - </div> - <div class="box-body"> - <table id="serviceTax" class="table table-bordered table-hover" style="background-color:#fff;font-size:12px;"> - <thead style="background-color:#ddf"> - <tr> - <th>SNo</th> - <th>Requisition No</th> - <th>Item Name</th> - <th>Quantity</th> - <th>UOM</th> - <th>Rate</th> - <th>Basic Amount</th> - <th>Tax Amount</th> - <th>Total Order Amount</th> - <th>Action</th> - </tr> - </thead> - - <tbody id='capitalAppend'> - - </tbody> - </table> - </div> - <div class="container-fluid"> - <table class="table table-bordered" style="border:1px solid #333"> - <div align="right" style="padding-right:10px"> - <div align="right"> - - - <div class="modal fade" id="CAPITAL" role="dialog"> - <div class="modal-dialog"> - <!-- Modal content--> - <form> - <div class="modal-content" style="width:900px;"> - <div class="modal-header" style="background-color: #3c8dbc;color:#fff;"> - <button type="button" class="close" data-dismiss="modal">&times;</button> - <center><h4>Add Capital Purchase Order Item </h4></center> - </div> - <div align="left"> - <div class="col-md-12"> - <div class="col-md-12"> - <div class="col-md-5"> - <div class="col-md-6"> - <label>Req No</label> - <div> - - <?php - $RL = array("0"=>'Select Req No'); - if(!empty($RequistionDetails)) - { - foreach ($RequistionDetails as $SID): - $RL[$SID->ReqNo] = $SID->ReqNo.' '.' - '.' '.$SID->DepartmentName; - endforeach; - } - - echo form_dropdown('Reqnumber', $RL,set_value('Reqnumber'),'id="Reqnumber"' ,'class="form-control select2 required"'); - - ?> - - - - </div> - </div> - <div class="col-md-6"> - <label>Department Name</label> - <div> - <?php - $data = array('name' => 'CapitalDepartmentName','value' => set_value('CapitalDepartmentName'),'id'=>'CapitalDepartmentName', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-5"> - <div class="col-md-6"> - <label>Cost Center Name</label> - <div> - <?php - - $data = array('name' => 'CostCenter','value' => set_value('CostCenter'),'id'=>'CostCenter', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - - ?> - </div> - </div> - <div class="col-md-6"> - <label>Avail Bud Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'CapitalbudAmt','value' => set_value('CapitalbudAmt'),'id'=>'CapitalbudAmt', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-2"> - <label> Exchange Rate</label> - <div class="form-group"> - <?php - $data = array('name' => 'ExchangeRtModal','value' => set_value('ExchangeRtModal'),'id'=>'ExchangeRtModal', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-12"> - <div class="col-md-2"> - <label>Item Code</label> - <div> - <?php - $options = array("0"=>'Item Code'); - echo form_dropdown('MaterialCode', $options,set_value('MaterialCode'),'id="MaterialCode"' ,'class="form-control select2"'); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Item Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'CapitalItemName','value' => set_value('ICapitalItemName'),'id'=>'CapitalItemName', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>UOM</label> - <div class="form-group"> - <?php - $data = array('name' => 'CPUOM','value' => set_value('CPUOM'),'id'=>'CPUOM', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Quantity</label> - <div class="form-group"> - <?php - $data = array('name' => 'CPQuantity','value' => set_value('CPQuantity'),'id'=>'CPQuantity', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'Ratechange();'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Rate(in US $ /Ton)</label> - <div class="form-group"> - <?php - $data = array('name' => 'CPRate','value' => set_value('CPRate'),'id'=>'CPRate', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'Ratechange();' ); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Basic value in INR</label> - <div class="form-group"> - <?php - $data = array('name' => 'CPTotalAmount','value' => set_value('CPTotalAmount'),'id'=>'CPTotalAmount', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-12" style="border:1px solid #000;padding:0px;"> - <div class="col-md-5"> - <div class="col-md-6"> - Service Tax ( ST ) @ 14% : - <div class="form-group"> - <?php - $data = array('name' => 'AfterServiceTax','value' => set_value('AfterServiceTax'),'id'=>'AfterServiceTax', 'class' => 'form-control' ,'placeholder' => 'After Service Tax','readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-6"> - Education cess @2% on ST : - <div class="form-group"> - <?php - $data = array('name' => 'AfterEduCess','value' => set_value('AfterEduCess'),'id'=>'AfterEduCess', 'class' => 'form-control' ,'placeholder' => 'After Edu. cess','readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-5"> - <div class="col-md-6"> - Sec. & Higher Edu. cess @1 % on ST : - <div class="form-group"> - <?php - $data = array('name' => 'AfterSecHighTax','value' => set_value('AfterSecHighTax'),'id'=>'AfterSecHighTax', 'class' => 'form-control' ,'placeholder' => 'After High Edu. cess','readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-6"> - Krishi Kalyan tax @.5 % on Basic Account(BA): - <div class="form-group"> - <?php - $data = array('name' => 'AfterKrishiTax','value' => set_value('AfterKrishiTax'),'id'=>'AfterKrishiTax', 'class' => 'form-control' ,'placeholder' => 'After Krishi Kalyan tax.','readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-2"> - Swachh Bharat tax @.5 % on BA: - <div class="form-group"> - <?php - $data = array('name' => 'AfterSwachhTax','value' => set_value('AfterSwachhTax'),'id'=>'AfterSwachhTax', 'class' => 'form-control' ,'placeholder' => 'After Swatchh Bhart Tax.','readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12" style="padding:1%;" ></div> - <div class="col-md-12" style="border:1px solid #000;padding:0px;"> - <br/> - <div class="col-md-6" style="padding:0px;"> - <div class="col-md-12"> - <div class="col-md-4" > - Basic Price: - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'BasicPriceTax','value' => set_value('BasicPriceTax'),'id'=>'BasicPriceTax', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterBasicPriceTax','value' => set_value('AfterBasicPriceTax'),'id'=>'AfterBasicPriceTax', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Landing charge - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'LandingCharge','value' => set_value('LandingCharge'),'id'=>'LandingCharge', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);' ,'onchange'=>'Ratechange();'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterLandingCharge','value' => set_value('AfterLandingCharge'),'id'=>'AfterLandingCharge', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - High seas sales charge - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'Highseas ','value' => set_value('Highseas'),'id'=>'Highseas', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);' , 'onchange'=>'Ratechange();'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterHighseas','value' => set_value('AfterHighseas'),'id'=>'AfterHighseas', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Custom duty : (a) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'Customduty','value' => set_value('Customduty'),'id'=>'Customduty', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);' ,'onchange'=>'Ratechange();'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterCustomduty','value' => set_value('AfterCustomduty'),'id'=>'AfterCustomduty', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Excise duty : (b) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'ExcisedutyTax','value' => set_value('ExcisedutyTax'),'id'=>'ExcisedutyTax', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);' ,'onchange'=>'Ratechange();'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterExcisedutyTax','value' => set_value('AfterExcisedutyTax'),'id'=>'AfterExcisedutyTax', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Excise duty ED_cess : (C) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'ExcisedutyEDcess','value' => set_value('ExcisedutyEDcess'),'id'=>'ExcisedutyEDcess', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);' ,'onchange'=>'Ratechange();'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterExcisedutyEDcess','value' => set_value('AfterExcisedutyEDcess'),'id'=>'AfterExcisedutyEDcess', 'class' => 'form-control','readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Excise duty S & H cess :(d) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'ExcisedutySHcess','value' => set_value('ExcisedutySHcess'),'id'=>'ExcisedutySHcess', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'Ratechange();'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterExcisedutySHcess','value' => set_value('AfterExcisedutySHcess'),'id'=>'AfterExcisedutySHcess', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Custom ED_cess : (e) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'CustomEDcess','value' => set_value('CustomEDcess'),'id'=>'CustomEDcess', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'Ratechange();'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterCustomEDcess','value' => set_value('AfterCustomEDcess'),'id'=>'AfterCustomEDcess', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Custom S & H cess : (f) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'CustomSHcess','value' => set_value('CustomSHcess'),'id'=>'CustomSHcess', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'Ratechange();'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterCustomSHcess','value' => set_value('AfterCustomSHcess'),'id'=>'AfterCustomSHcess', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - </div> - <div class="col-md-6" style="padding:0px;"> - <div class="col-md-12"> - <div class="col-md-4"> - Additional Excise duty : (g) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AdditionalExciseduty ','value' => set_value('AdditionalExciseduty'),'id'=>'AdditionalExciseduty', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'Ratechange();'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterAdditionalExciseduty','value' => set_value('AfterAdditionalExciseduty'),'id'=>'AfterAdditionalExciseduty', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-8"> - Gross duty payable - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'Grossdutypayable ','value' => set_value('Grossdutypayable'),'id'=>'Grossdutypayable', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'Ratechange();','readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-8"> - Available Modvat set-off on import : - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AvailableModvat','value' => set_value('AvailableModvat'),'id'=>'AvailableModvat', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> (b + c + d + g) - </div> - </div> - - </div> - <div class="col-md-12"> - - <div class="col-md-8"> - Gross expenses due to custom duty: - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'Grossexpenses','value' => set_value('Grossexpenses'),'id'=>'Grossexpenses', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'Ratechange();','readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - - <div class="col-md-12"> - <center> <label>Cost of the product Per KG</label></center> - <hr/> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - purchase rate [Basic] - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'purchaserate','value' => set_value('purchaserate'),'id'=>'purchaserate', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'Ratechange();','readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4" style="margin-top: -4.8%"> - <span>Quantity</span> - <div class="form-group"> - <?php - $data = array('name' => 'PurQuantity','value' => set_value('PurQuantity'),'id'=>'PurQuantity', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'Ratechange();'); - echo form_input($data); - ?> - </div> - </div> - - </div> - <div class="col-md-12"> - - <div class="col-md-4"> - Custom Duty Expenses - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'CustomDutyExpenses ','value' => set_value('CustomDutyExpenses'),'id'=>'CustomDutyExpenses', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'Ratechange();','readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - - </div> - <div class="col-md-12"> - <div class="col-md-4"> - RMC Including Customers - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'RMCIncludingCustomers','value' => set_value('RMCIncludingCustomers'),'id'=>'RMCIncludingCustomers', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'Ratechange();','readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - - - </div> - - <div class="col-md-6" align="right"> <label>Total Order Amount :</label></div> - <div class="col-md-6"> - <div class="form-group"> - <?php - $data = array('name' => 'txtTotalOrderValue','value' => set_value('txtTotalOrderValue'),'id'=>'txtTotalOrderValue', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - - </div> - - </div> - - - </div> - - - - - - <div class="modal-footer"> - <a class="btn btn-info font AddCapital" ID="AddCapital" ><i class="fa fa-plus"></i>&nbsp;&nbsp;<span class="bold">Add Capital</span></a> - <a class="btn btn-info" data-dismiss="modal" value="Cancel">Cancel</a> - - </div> - </div> - </form> - - </div> - </div> - </div> - </div> - - - <br/> - - - </table> - - <div class="col-md-12" style="border: 1px solid;"> - <div class="col-md-4"> - Service Tax @14% : - <div class="form-group"> - <?php - $data = array('name' => 'TotalAfterServiceTax','value' => set_value('TotalAfterServiceTax'),'id'=>'TotalAfterServiceTax', 'class' => 'form-control' ,'placeholder' => 'After Service Tax','readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - Education cess @2% on service Tax : - <div class="form-group"> - <?php - $data = array('name' => 'TotalAfterEduCess','value' => set_value('TotalAfterEduCess'),'id'=>'TotalAfterEduCess', 'class' => 'form-control' ,'placeholder' => 'After Edu. cess','readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - Sec. & Higher Edu. cess @1 % on service Tax : - <div class="form-group"> - <?php - $data = array('name' => 'TotalAfterSecHighTax','value' => set_value('TotalAfterSecHighTax'),'id'=>'TotalAfterSecHighTax', 'class' => 'form-control' ,'placeholder' => 'After High Edu. cess','readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - Krishi Kalyan tax @.5 % on Basic Amount: - <div class="form-group"> - <?php - $data = array('name' => 'TotalAfterKrishiTax','value' => set_value('TotalAfterKrishiTax'),'id'=>'TotalAfterKrishiTax', 'class' => 'form-control' ,'placeholder' => 'After Krishi Kalyan tax.','readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - Swachh Bharat tax @.5 % on Basic Amount: - <div class="form-group"> - <?php - $data = array('name' => 'TotalAfterSwachhTax','value' => set_value('TotalAfterSwachhTax'),'id'=>'TotalAfterSwachhTax', 'class' => 'form-control' ,'placeholder' => 'After Swatchh Bhart Tax.','readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - Service Total Order Value: - <div class="form-group"> - <?php - $data = array('name' => 'txtToatlOrder','value' => set_value('txtToatlOrder'),'id'=>'txtToatlOrder', 'class' => 'form-control' ,'required' => 'true','readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - </div> - - <div class="col-md-12" style="padding:1%;" ></div> - <div class="col-md-12" style="border: 1px solid;padding:1% 0%;"> - - <div class="col-md-4"> - <label >Total Landing Charge :</label> - - <?php - $data = array('name' => 'txttotallanding','value' => set_value('txttotallanding'),'id'=>'txttotallanding', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - <div class="col-md-4"> - <label >Total High seas sales Charge :</label> - - <?php - $data = array('name' => 'txttotalhighseas','value' => set_value('txttotalhighseas'),'id'=>'txttotalhighseas', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - <div class="col-md-4"> - <label >Total Custom Duty Charge :</label> - - <?php - $data = array('name' => 'txttotalcustom','value' => set_value('txttotalcustom'),'id'=>'txttotalcustom', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - <div class="col-md-4"> - <label >Total Excise duty Charge :</label> - - <?php - $data = array('name' => 'txttotalexcise','value' => set_value('txttotalexcise'),'id'=>'txttotalexcise', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - <div class="col-md-4"> - <label >Total Excise duty ED_cess Charge :</label> - - <?php - $data = array('name' => 'txttotalexciseED','value' => set_value('txttotalexciseED'),'id'=>'txttotalexciseED', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - - <div class="col-md-4"> - <label >Total Excise duty S & H cess Charge :</label> - - <?php - $data = array('name' => 'txttotalexciseSH','value' => set_value('txttotalexciseSH'),'id'=>'txttotalexciseSH', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - <div class="col-md-4"> - <label >Total Custom ED_cess Charge :</label> - - <?php - $data = array('name' => 'txttotalcustomED','value' => set_value('txttotalcustomED'),'id'=>'txttotalcustomED', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - <div class="col-md-4"> - <label >Total Custom S & H cess Charge :</label> - - <?php - $data = array('name' => 'txttotalcustomSH','value' => set_value('txttotalcustomSH'),'id'=>'txttotalcustomSH', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - <div class="col-md-4"> - <label >Total Additional Excise duty Charge :</label> - - <?php - $data = array('name' => 'txttotalAdditionalExciseduty','value' => set_value('txttotalAdditionalExciseduty'),'id'=>'txttotalAdditionalExciseduty', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - - <div class="col-md-4"> - <label >Total Gross duty payable Charge :</label> - - <?php - $data = array('name' => 'txttotalgrossduty','value' => set_value('txttotalgrossduty'),'id'=>'txttotalgrossduty', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - <div class="col-md-4"> - <label >Total Available Modvat set-off on import Charge :</label> - - <?php - $data = array('name' => 'txttotalavlmodvat','value' => set_value('txttotalavlmodvat'),'id'=>'txttotalavlmodvat', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - - <div class="col-md-4"> - <label >Total Gross expenses due to custom duty Charge :</label> - - <?php - $data = array('name' => 'txttotalgrossexpense','value' => set_value('txttotalgrossexpense'),'id'=>'txttotalgrossexpense', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - - - - - - <div class="col-md-12"> - <label>Comments for Special Instructions :</label> <?php - $data = array('name' => 'txtSpcialInstruction','value' => set_value('txtSpcialInstruction'),'id'=>'txtSpcialInstruction', 'class' => 'form-control','rows' => '3', 'cols' => '40' ); - echo form_textarea($data); - ?> - </div> - - <!-- <div align="right" style="padding-right:10px"> - - <div class="col-md-3 col-md-offset-9"><br/> - <input type="hidden" name="txtPoRange" id="txtPoRange" /> - <input type="hidden" name="isEdit" id="isEdit" value="0" /> - <input type="hidden" name="txtStatus" id="txtStatus" /> - <input type="hidden" name="txtRowCount" id="txtRowCount" /> - <input type="hidden" name="txtDeletedRow" id="txtDeletedRow" /> - <a class="btn btn-primary Save" ID="Save" onclick="Save(0)" >&nbsp;&nbsp;<span class="bold">Save</span></a> - <a class="btn btn-primary Submit" ID="Submit" onclick="Save(1)" >&nbsp;&nbsp;<span class="bold">Submit</span></a> - <input type="reset" class="btn btn-primary" value="Reset"> - - </div> - </div> --> - - - </div> - - - <div align="right" style="padding:1% 0%;"> - <a class="btn btn-primary Save" ID="Save" >&nbsp;&nbsp;<span class="bold">Save</span></a> - <a class="btn btn-primary Submit" ID="Submit" >&nbsp;&nbsp;<span class="bold">Submit</span></a> - <input type="reset" class="btn btn-primary" value="Reset"> - - </div> - <br/> - </div> - </div> - </section> - </div> - <script src="<?php echo base_url(); ?>assets/js/CreatePOValidation.js" type="text/javascript"></script> - <script type="text/html" id="CapitalList"> - <tr id="<%=index%>"> - <td align="left"><%=index%></td> - <td align="left"><%=ReqNo%></td> - - <td align="left"><%=MaterialName%></td> - <td align="left"><%=Quantity%></td> - <td align="left"><%=UOM%></td> - <td align="left"><%=Rate%></td> - <td align="left"><%=BasicAmount%></td> - <td align="left"><%=Taxvalue%></td> - <td align="left"><%=TotalValue%></td> - - <td> - <a data-target='#EDITREVENUE' data-id="<%=index%>" data-userid="<%=index%>" data-toggle="modal" href="#EDITREVENUE"><i class="fa fa-pencil" data-toggle="tooltip" title="Click here to view/Edit the <%=ReqNo%> Requisition details"></i>&nbsp;&nbsp;&nbsp;</a> <a href='#' onclick = "DeleteRow(<%=index%>)" class="link" data-id="<%=index%>" data-userid="<%=index%>" id="Del" ><span class="glyphicon glyphicon-trash"></span></a> - - - </td> - </tr> - </script> - <script> - var RequistQuantity = ''; - var AvilBudAmt = ''; - var POMaxDate = '<?php echo $MaxPoDate;?>'; - var d = new Date(POMaxDate); - var SelectedMaterialCode = []; - var CollIndex = 0; - var SelectedMaterialList = { - Mat: [] - }; - $(function() { - - $("#PODate").datepicker({ - minDate : d, - maxDate : 'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true,yearRange: '-100:+0' - }); - $("#Deliverydt").datepicker({ - minDate : 'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true,yearRange: '0:+10' - }); - - $('#drpSupplier').change(function() { - - var id = $('#drpSupplier').val(); - - $("#SupAddress").val(''); - - if(id != '0') - { - var y = <?php echo json_encode($Suplist, JSON_PRETTY_PRINT) ?>; - - - $.each(y, function(idx, obj) { - if(obj.SupplierID === id) - { - $("#SupAddress").val(obj.Address); - - } - - }); - - } - else - { - alert('Please select the SupplierID'); - return false; - } - - }); - - $('#Reqnumber').change(function() { - var ExchangeRate=''; - var ExchangeRate = $('#ExchangeRt').val(); - var id = $('#Reqnumber').val(); - - $("#CapitalbudAmt").val(''); - $("#ExchangeRtModal").val(ExchangeRate); - - $("#MaterialCode").empty(); - $("#CapitalDepartmentName").val(''); - $("#CPUOM").val(''); - $("#CPQuantity").val(''); - $("#CapitalItemName").val(''); - $("#CPTotalAmount").val(''); - $("#txtBasicValue").val(''); - $("#CostCenter").val(''); - clearTaxField(); - if(id != '0') - { - - var y = <?php echo json_encode($RequistionDetails, JSON_PRETTY_PRINT) ?>; - - var Material = <?php echo json_encode($MaterialList, JSON_PRETTY_PRINT) ?>; - var AvlBudAmt = '<?php echo $AvlAmount ?>'; - - // For Binding DepartmentName - $.each(y, function(idx, obj) { - if(obj.ReqNo === id) - { - $("#CapitalDepartmentName").val(obj.DepartmentName); - $("#CostCenter").val(obj.CostCenterCode); - - } - }); - $("#CapitalbudAmt").val(AvlBudAmt); - - - // For Binding Material list center for the selected Requistion Number - $("#MaterialCode").append( $('<option></option>').val("0").html("Select Material Code") ); - var isAdded = "0"; - for(i=0;i<Material.length;i++) - { - $.each(Material[i], function(idx, obj) { - - if(obj.ReqNo === id ) - { - - $.each(SelectedMaterialList.Mat, function(idx1, el){ - if (id == el.ReqNo ) - { - - if(el.materialCode == obj.MaterialCode) - { - isAdded = "1"; - return false; - } - else - { - isAdded = "0"; - } - - } - }); - - - if(isAdded == "0") - { - - $("#MaterialCode").append( $('<option></option>').val(obj.MaterialCode).html(obj.MaterialCode + "-" + obj.MaterialName)); - } - - } - - - }); - } - } - else - { - alert('Please select the Requisition Number'); - return false; - } - id = ''; - - }); - $('#MaterialCode').change(function() { - - var id = $('#MaterialCode').val(); - $("#CapitalItemName").val(''); - $("#CPUOM").val(''); - $("#CPQuantity").val(''); - $("#CPTotalAmount").val(''); - RequistQuantity = ''; - clearTaxField(); - if(id != '0') - { - var Material = <?php echo json_encode($MaterialList, JSON_PRETTY_PRINT) ?>; - - for(i=0;i<Material.length;i++) - { - $.each(Material[i], function(idx, obj) { - if(obj.MaterialCode === id) - { - $("#CapitalItemName").val(obj.MaterialName); - $("#CPUOM").val(obj.UOM); - $("#CPQuantity").val(obj.Quantity); - RequistQuantity = obj.Quantity; - } - }); - } - } - else - { - alert('Please select the MaterialCode'); - return false; - } - - }); - - - $('#EditMaterialCode').change(function() { - - - var id = $('#EditMaterialCode').val(); - $("#EditItemName").val(''); - $("#EditUOM").val(''); - $("#EditQuantity").val(''); - $("#EditRate").val(''); - $("#txtEditBasicValue").val(''); - RequistQuantity = ''; - clearEditTaxField(); - if(id != '0') - { - var Material = <?php echo json_encode($MaterialList, JSON_PRETTY_PRINT) ?>; - - for(i=0;i<Material.length;i++) - { - $.each(Material[i], function(idx, obj) { - if(obj.MaterialCode === id) - { - $("#EditItemName").val(obj.MaterialName); - $("#EditUOM").val(obj.UOM); - $("#EditQuantity").val(obj.Quantity); - RequistQuantity = obj.Quantity; - } - }); - } - - } - else - { - alert('Please select the MaterialCode'); - return false; - } - - }); - - - }); - function clearTaxField() - { - $('#CPTotalAmount').val(''); - $('#AfterServiceTax').val(''); - $('#AfterEduCess').val(''); - $('#AfterSecHighTax').val(''); - $('#AfterKrishiTax').val(''); - $('#AfterSwachhTax').val(''); - $('#BasicPriceTax ').val(''); - $('#AfterBasicPriceTax').val(''); - - $("#LandingCharge").val(''); - $("#AfterLandingCharge").val(''); - $("#Highseas").val(''); - $("#AfterHighseas").val(''); - $("#Customduty").val(''); - $("#AfterCustomduty").val(''); - $("#ExcisedutyTax").val(''); - $("#AfterExcisedutyTax").val(''); - $("#ExcisedutyEDcess").val(''); - $("#AfterExcisedutyEDcess").val(''); - $("#ExcisedutySHcess").val(''); - $("#AfterExcisedutySHcess").val(''); - $("#CustomEDcess").val(''); - $("#AfterCustomEDcess").val(''); - $("#CustomSHcess").val(''); - $("#AfterCustomSHcess").val(''); - $("#AdditionalExciseduty").val(''); - $("#AfterAdditionalExciseduty").val(''); - $("#Grossdutypayable").val(''); - $("#AvailableModvat").val(''); - $("#Grossexpenses").val(''); - $("#purchaserate").val(''); - $("#CustomDutyExpenses").val(''); - $("#RMCIncludingCustomers").val(''); - $("#PurQuantity").val(''); - - RequistQuantity = ''; - - } - /* - - This function is used to validate all field - - */ - function Ratechange(){ - - if($('#Reqnumber').val() == "0") - { - alert('Please select the Requisition Number'); - $('#Reqnumber').focus(); - return false; - } - else if($('#MaterialCode').val() == "0") - { - alert('Please select the Material Code'); - $('#MaterialCode').focus(); - return false; - } - else if($('#CostCenter').val() == "0") - { - alert('Please select the CostCenterCode'); - $('#CostCenter').focus(); - return false; - } - ExceedQuantityCheck(); - - if(ExceedQuantityCheck()){ - - - if($('#CPQuantity').val() != '' && $('#CPRate').val() != '' && $('#ExchangeRtModal').val() != '') - { - - var txtQuantity = parseFloat( $('#CPQuantity').val()); - var txtExchangeRate = parseFloat( $('#ExchangeRtModal').val()); - var RatePerTon = parseFloat( $('#CPRate').val()); - //var txtUnitPrice = parseFloat($('#Rate').val()); - var Tot = txtQuantity * txtExchangeRate * RatePerTon - $('#CPTotalAmount').val(Tot); - - //ExceedBudget($('#CPTotalAmount').val(),$('#CapitalbudAmt').val()); - - if(ExceedBudget($('#CPTotalAmount').val(),$('#CapitalbudAmt').val())){ - //Service Tax calculation - - - $('#AfterServiceTax').val(calculateServiceTax($('#CPTotalAmount').val())); - - //Edu. cess @2% on service Tax - $('#AfterEduCess').val( calculateEduess($('#AfterServiceTax').val())); - - //Sec. & Higher Edu. cess @1 % on service Tax - - $('#AfterSecHighTax').val(calculateHigherEdu($('#AfterServiceTax').val())); - //Krishi Kalyan tax - - $('#AfterKrishiTax').val(calculateKrishiKalyantax($('#CPTotalAmount').val())); - //Swachh Bharat tax - - $('#AfterSwachhTax').val(calculateSwachhBharattax($('#CPTotalAmount').val())); - - // This is for import basic price - - $('#AfterBasicPriceTax').val(Math.round($('#CPTotalAmount').val())); - - if($('#LandingCharge').val()!='' && $('#AfterBasicPriceTax').val()!=''){ - $('#AfterLandingCharge').val(calculateLandingCharge($('#LandingCharge').val(),$('#AfterBasicPriceTax').val())); - - - if($('#Highseas').val()!='' && $('#AfterLandingCharge').val()!=''){ - $('#AfterHighseas').val(calculateHighseasCharge($('#AfterLandingCharge').val(),$('#AfterBasicPriceTax').val(),$('#Highseas').val())); - - if($('#Customduty').val()!='' && $('#AfterHighseas').val()!=''){ - $('#AfterCustomduty').val(calculateCustomdutyCharge($('#AfterLandingCharge').val(),$('#AfterBasicPriceTax').val(),$('#AfterHighseas').val(),$('#Customduty').val())); - if($('#AfterCustomduty').val()!='' && $('#ExcisedutyTax').val()!=''){ - $('#AfterExcisedutyTax').val(calculateExciseCharge($('#AfterLandingCharge').val(),$('#AfterBasicPriceTax').val(),$('#AfterHighseas').val(),$('#AfterCustomduty').val(),$('#ExcisedutyTax').val())); - - if($('#AfterExcisedutyTax').val()!='' && $('#ExcisedutyEDcess').val()!=''){ - $('#AfterExcisedutyEDcess').val(calculateExciseEDcessCharge($('#AfterExcisedutyTax').val(),$('#ExcisedutyEDcess').val())); - - if($('#AfterExcisedutyTax').val()!='' && $('#ExcisedutySHcess').val()!=''){ - $('#AfterExcisedutySHcess').val(calculateExciseSHcessCharge($('#AfterExcisedutyTax').val(),$('#ExcisedutySHcess').val())); - if($('#AfterExcisedutySHcess').val()!='' && $('#CustomEDcess').val()!=''){ - $('#AfterCustomEDcess').val(calculateCustomEDcessCharge($('#AfterLandingCharge').val(),$('#AfterHighseas').val(),$('#AfterCustomduty').val(),$('#AfterExcisedutyTax').val(),$('#AfterExcisedutyEDcess').val(),$('#AfterExcisedutySHcess').val(),$('#CustomEDcess').val())); - - } - if($('#AfterExcisedutySHcess').val()!='' && $('#CustomSHcess').val()!=''){ - $('#AfterCustomSHcess').val(calculateCustomSHcessCharge($('#AfterLandingCharge').val(),$('#AfterHighseas').val(),$('#AfterCustomduty').val(),$('#AfterExcisedutyTax').val(),$('#AfterExcisedutyEDcess').val(),$('#AfterExcisedutySHcess').val(),$('#CustomSHcess').val())); - - if($('#AfterCustomSHcess').val()!='' && $('#AdditionalExciseduty').val()!=''){ - $('#AfterAdditionalExciseduty').val(calculateAdditionalExciseDutyCharge($('#AfterBasicPriceTax').val(),$('#AfterLandingCharge').val(),$('#AfterHighseas').val(),$('#AfterCustomduty').val(),$('#AfterExcisedutyTax').val(),$('#AfterExcisedutyEDcess').val(),$('#AfterExcisedutySHcess').val(),$('#AfterCustomEDcess').val(),$('#AfterCustomSHcess').val(),$('#AdditionalExciseduty').val())); - - - $('#Grossdutypayable').val(calculateGrossdutypayableCharge($('#AfterLandingCharge').val(),$('#AfterHighseas').val(),$('#AfterCustomduty').val(),$('#AfterExcisedutyTax').val(),$('#AfterExcisedutyEDcess').val(),$('#AfterExcisedutySHcess').val(),$('#AfterCustomEDcess').val(),$('#AfterCustomSHcess').val(),$('#AfterAdditionalExciseduty').val())); - - $('#AvailableModvat').val(calculateAvailableModvatCharge($('#AfterExcisedutyTax').val(),$('#AfterExcisedutyEDcess').val(),$('#AfterExcisedutySHcess').val(),$('#AfterAdditionalExciseduty').val())); - $('#Grossexpenses').val(calculateGrossexpensesCharge($('#Grossdutypayable').val(),$('#AvailableModvat').val())); - if($('#PurQuantity').val()!=''){ - $('#purchaserate').val(calculatepurchaserate($('#AfterBasicPriceTax').val(),$('#PurQuantity').val())); - $('#CustomDutyExpenses').val(calculateCustomDutyExpenses($('#Grossexpenses').val(),$('#PurQuantity').val())); - $('#RMCIncludingCustomers').val(calculateRMCIncludingCustomers($('#purchaserate').val(),$('#CustomDutyExpenses').val())); - - } - } - - } - } - else{ - //alert('Please Enter Excise duty S & H cess'); - } - } - else{ - //alert('Please Enter Excise Duty ED_cess'); - - } - } - else{ - //alert('Please Enter Excise Duty'); - } - } - else{ - //alert('Please Enter Custom Duty'); - } - - } - - - } - else{ - //alert('Please Enter Landing Charge ') - } - - - - - - calculateTotalValue(); - - // var res = ExceedBudget($('#TotalOrderValue').val(), $('#CapitalbudAmt').val()); - //if(!res) - // { - // $('#CPRate').focus(); - // return false; - // } - } - } - - - else{ - $('CPRate').focus(); - } - - } - else{ - clearTaxField(); - } - - } - - - /* This function used to check quantity exceeding or not */ - - function ExceedQuantityCheck() - { - var EnterQuantity = $("#CPQuantity").val()== '' ? "0.00" : parseFloat($("#CPQuantity").val()); - var ReqQuantity = parseFloat(RequistQuantity); - //alert(ReqQuantity); - if(EnterQuantity > ReqQuantity) - { - alert('Your exceeding the Quantity from the Requisition Quantity:'+ RequistQuantity +'.Please adjust the Quantity to proceed further.'); - - $('#Quantity').focus(); - return false; - } - else { - return true; - } - } - /* - This function is used to calculate tax - */ - function calculateServiceTax(varBasicValue) - { - - - var basicValue = parseFloat(varBasicValue); - - var ServiceTaxValue = 0.0; - - ServiceTaxValue = <?php echo SERVICETAX_SERVICETAX_14PERCENT; ?>; - - var TAXval = parseFloat(ServiceTaxValue).toFixed(2); - - return TAXval;// $('#AfterServiceTax').val(TAXval); - - } - function calculateEduess(varAfterServiceTax) - { - var ServiceTaxAmount = parseFloat(varAfterServiceTax); - - var ServiceTaxValue = 0.0; - - ServiceTaxValue = <?php echo SERVICETAX_EDUCESS_2PERCENT; ?>; - - var TAXval = parseFloat(ServiceTaxValue).toFixed(2); - - return TAXval;// $('#AfterEduCess').val(TAXval); - } - function calculateHigherEdu(varAfterServiceTax) - { - var ServiceTaxAmount = parseFloat(varAfterServiceTax); - - var ServiceTaxValue = 0.0; - - ServiceTaxValue = <?php echo SERVICETAX_HIGHEREDUCESS_1PERCENT; ?>; - - var TAXval = parseFloat(ServiceTaxValue).toFixed(2); - - return TAXval;//$('#AfterSecHighTax').val(TAXval); - } - function calculateKrishiKalyantax(varBasicValue) - { - var basicValue = parseFloat(varBasicValue); - - var ServiceTaxValue = 0.0; - - ServiceTaxValue = <?php echo SERVICETAX_KRISHIKALYAN; ?>; - - var TAXval = parseFloat(ServiceTaxValue).toFixed(2); - - return TAXval;//$('#AfterKrishiTax').val(TAXval); - } - function calculateSwachhBharattax(varBasicValue) - { - var basicValue = parseFloat(varBasicValue); - - var ServiceTaxValue = 0.0; - - ServiceTaxValue = <?php echo SERVICETAX_SWACHHBHARAT; ?>; - - var TAXval = parseFloat(ServiceTaxValue).toFixed(2); - - return TAXval; //$('#AfterSwachhTax').val(TAXval); - } - - /* - Calculate Landing charge - */ - - function calculateLandingCharge(landingCharge,basicValue){ - var landCharge = landingCharge; - var basicPrice = parseFloat(basicValue); - afterLandingCharge = <?php echo Capital_Landing_Charge; ?>; - - return parseFloat(afterLandingCharge).toFixed(2); - - - } - /*Calculate Highseas Charge*/ - function calculateHighseasCharge(AfterLanding,basicPrices,Highseass){ - var afterLandingCharge = parseFloat(AfterLanding); - var basicPrice = parseFloat(basicPrices); - var highSeas = Highseass; - afterHighseasCharge = <?php echo Capital_Highseas_Charge; ?>; - - return parseFloat(afterHighseasCharge).toFixed(2); - - } - /*Calculate calculate Customduty Charge */ - function calculateCustomdutyCharge(AfterLanding,basicPrices,afterHighseass,Customduty){ - var afterLandingCharge = parseFloat(AfterLanding); - var basicPrice = parseFloat(basicPrices); - var afterHighseas = parseFloat(afterHighseass); - var Customduty = Customduty; - - - afterCustomdutyCharge = <?php echo Capital_Customduty_Charge; ?>; - - return parseFloat(afterCustomdutyCharge).toFixed(2); - - } - - /* - calculate Excise Charge - */ - function calculateExciseCharge(AfterLanding,basicPrices,afterHighseass,afterCustomduty,Excise){ - var afterLandingCharge = parseFloat(AfterLanding); - var basicPrice = parseFloat(basicPrices); - var afterHighseas = parseFloat(afterHighseass); - var afterCustomduty = parseFloat(afterCustomduty); - var Excise = Excise; - - - afterExciseCharge = <?php echo Capital_Excise_Charge; ?>; - - return parseFloat(afterExciseCharge).toFixed(2); - - } - /* calculateExciseEDcessCharge*/ - function calculateExciseEDcessCharge(ExciseDuty,ExciseEDcessCharge){ - - var ExciseDuty = parseFloat(ExciseDuty); - var ExciseEDcessCharge = ExciseEDcessCharge; - afterExciseEDcessCharge = <?php echo Capital_ExciseEDcess_Charge; ?>; - - return parseFloat(afterExciseEDcessCharge).toFixed(2); - } - - /* calculate Excise duty S & H cess :(d) */ - function calculateExciseSHcessCharge(ExciseDuty,ExciseSHcessCharge){ - - var ExciseDuty = parseFloat(ExciseDuty); - var ExciseSHcessCharge = ExciseSHcessCharge; - afterExciseSHcessCharge = <?php echo Capital_ExciseSHcess_Charge; ?>; - - return parseFloat(afterExciseSHcessCharge).toFixed(2); - } - /* - calculate CustomEDcess Charge - */ - function calculateCustomEDcessCharge(AfterLanding,AfterHighseas,AfterCustomduty,AfterExcisedutyTax,AfterExcisedutyEDcess,AfterExcisedutySHcess,CustomEDcess){ - var afterLandingCharge = parseFloat(AfterLanding); - var AfterHighseas = parseFloat(AfterHighseas); - var AfterCustomduty = parseFloat(AfterCustomduty); - var AfterExcisedutyTax = parseFloat(AfterExcisedutyTax); - var AfterExcisedutyEDcess = parseFloat(AfterExcisedutyEDcess); - var AfterExcisedutySHcess = parseFloat(AfterExcisedutySHcess); - var CustomEDcess = CustomEDcess; - - - afterCustomEDcessCharge = <?php echo Capital_CustomEDcess_Charge; ?>; - - return parseFloat(afterCustomEDcessCharge).toFixed(2); - - } - /* - calculate custom S & H cess - */ - function calculateCustomSHcessCharge(AfterLanding,AfterHighseas,AfterCustomduty,AfterExcisedutyTax,AfterExcisedutyEDcess,AfterExcisedutySHcess,CustomSHcess){ - var afterLandingCharge = parseFloat(AfterLanding); - var AfterHighseas = parseFloat(AfterHighseas); - var AfterCustomduty = parseFloat(AfterCustomduty); - var AfterExcisedutyTax = parseFloat(AfterExcisedutyTax); - var AfterExcisedutyEDcess = parseFloat(AfterExcisedutyEDcess); - var AfterExcisedutySHcess = parseFloat(AfterExcisedutySHcess); - var CustomSHcess = CustomSHcess; - - - afterCustomCustomSHcessCharge = <?php echo Capital_CustomSHcess_Charge; ?>; - - return parseFloat(afterCustomCustomSHcessCharge).toFixed(2); - - } - /* - calculate Additional ExciseDuty Charge - */ - function calculateAdditionalExciseDutyCharge(basicPrices,AfterLanding,AfterHighseas,AfterCustomduty,AfterExcisedutyTax,AfterExcisedutyEDcess,AfterExcisedutySHcess,AfterCustomEDcess,AfterCustomSHcess,AdditionalExciseduty){ - var basicPrices = parseFloat(basicPrices); - var afterLandingCharge = parseFloat(AfterLanding); - var AfterHighseas = parseFloat(AfterHighseas); - var AfterCustomduty = parseFloat(AfterCustomduty); - var AfterExcisedutyTax = parseFloat(AfterExcisedutyTax); - var AfterExcisedutyEDcess = parseFloat(AfterExcisedutyEDcess); - var AfterExcisedutySHcess = parseFloat(AfterExcisedutySHcess); - - var AfterCustomEDcess = parseFloat(AfterCustomEDcess); - var AfterCustomSHcess = parseFloat(AfterCustomSHcess); - var AdditionalExciseduty = AdditionalExciseduty; - - - afterAdditionalExcisedutyCharge = <?php echo Capital_AdditionalExciseduty_Charge; ?>; - - return parseFloat(afterAdditionalExcisedutyCharge).toFixed(2); - - } - /* - calculate Additional Grossdutypayable Charge - */ - function calculateGrossdutypayableCharge(AfterLanding,AfterHighseas,AfterCustomduty,AfterExcisedutyTax,AfterExcisedutyEDcess,AfterExcisedutySHcess,AfterCustomEDcess,AfterCustomSHcess,AfterAdditionalExciseduty){ - var AfterAdditionalExciseduty = parseFloat(AfterAdditionalExciseduty); - var afterLandingCharge = parseFloat(AfterLanding); - var AfterHighseas = parseFloat(AfterHighseas); - var AfterCustomduty = parseFloat(AfterCustomduty); - var AfterExcisedutyTax = parseFloat(AfterExcisedutyTax); - var AfterExcisedutyEDcess = parseFloat(AfterExcisedutyEDcess); - var AfterExcisedutySHcess = parseFloat(AfterExcisedutySHcess); - - var AfterCustomEDcess = parseFloat(AfterCustomEDcess); - var AfterCustomSHcess = parseFloat(AfterCustomSHcess); - - - GrossdutypayableCharge = <?php echo Capital_Grossdutypayable_Charge; ?>; - - return parseFloat(GrossdutypayableCharge).toFixed(2); - - } - /* - calculate ModvatCharge Charge - */ - function calculateAvailableModvatCharge(AfterExcisedutyTax,AfterExcisedutyEDcess,AfterExcisedutySHcess,AfterAdditionalExciseduty){ - var AfterExcisedutyTax = parseFloat(AfterExcisedutyTax); - var AfterExcisedutyEDcess = parseFloat(AfterExcisedutyEDcess); - var AfterExcisedutySHcess = parseFloat(AfterExcisedutySHcess); - var AfterAdditionalExciseduty = parseFloat(AfterAdditionalExciseduty); - - - - ModvatCharge = <?php echo Capital_ModvatCharge_Charge; ?>; - - return parseFloat(ModvatCharge).toFixed(2); - - } - /* - calculate Grossexpenses Charge - */ - function calculateGrossexpensesCharge(Grossdutypayable,AvailableModvat){ - var Grossdutypayable = parseFloat(Grossdutypayable); - var AvailableModvat = parseFloat(AvailableModvat); - - - - - Grossexpenses = <?php echo Capital_Grossexpenses_Charge; ?>; - - return parseFloat(Grossexpenses).toFixed(2); - - } - /* - calculate purchaserate - */ - function calculatepurchaserate(AfterBasicPriceTax,PurQuantity){ - var AfterBasicPriceTax = parseFloat(AfterBasicPriceTax); - var PurQuantity = parseFloat(PurQuantity); - - - - - purchaserate = <?php echo Capital_purchaserate_Charge; ?>; - - return parseFloat(purchaserate).toFixed(2); - - } - /* - calculateCustomDutyExpenses - */ - function calculateCustomDutyExpenses(Grossexpenses,PurQuantity){ - var Grossexpenses = parseFloat(Grossexpenses); - var PurQuantity = parseFloat(PurQuantity); - - - - - CustomDutyExpenses = <?php echo Capital_CustomDutyExpenses_Charge; ?>; - - return parseFloat(CustomDutyExpenses).toFixed(2); - - } - /* - calculateRMCIncludingCustomers - */ - function calculateRMCIncludingCustomers(purchaserate,CustomDutyExpenses){ - var purchaserate = parseFloat(purchaserate); - var CustomDutyExpenses = parseFloat(CustomDutyExpenses); - - - - - RMCIncludingCustomers = <?php echo Capital_RMCIncludingCustomers_Charge; ?>; - - return parseFloat(RMCIncludingCustomers).toFixed(2); - - } - - - - - /* - This is used to calculate Total order value - */ - function calculateTotalOrdervalue() - { - var basicValue = parseFloat($('#CPTotalAmount').val()); - var ServiceTaxAmount = parseFloat($('#AfterServiceTax').val()); - var EduCessTaxAmount = parseFloat($('#AfterEduCess').val()); - var SecHighTaxAmount = parseFloat($('#AfterSecHighTax').val()); - var KrishiTaxAmount = parseFloat($('#AfterKrishiTax').val()); - var SwachhTaxAmount = parseFloat($('#AfterSwachhTax').val()); - - var TotAmt = basicValue + ServiceTaxAmount+ EduCessTaxAmount + SecHighTaxAmount+ KrishiTaxAmount + SwachhTaxAmount; - - // $('#TotalOrderValue').val( parseFloat(TotAmt).toFixed(2)); - - } - /* - Used to check the exceed budget - */ - function ExceedBudget(ValuetoCheck,budgetAmount) - { - var ReqAmount = parseFloat(ValuetoCheck); - var BudAmount = parseFloat(budgetAmount); - - if(ReqAmount > BudAmount ) - { - alert('Your exceeding the Avaiable Budget :'+ BudAmount +'.Please adjust the Product to proceed further.'); - - return false; - } - else - { - return true; - } - } - var index=1; - /* This is used add capital po line item */ - $('.AddCapital').click(function(){ - - - if(validateRevenueTax() && validateExceedLimit() && ExceedQuantityCheck()) - { - var temp = index; - var Reqnumber = $('#Reqnumber').val(); - var departmentName = $('#CapitalDepartmentName').val(); - var AvilBudget = $('#CapitalbudAmt').val(); - var costCode = $('#CostCenter').val(); - var materialCode =$('#MaterialCode').val(); - var materialName = $("#CapitalItemName").val(); - var uom = $("#CPUOM").val(); - var exchangeRate = $("#ExchangeRtModal").val(); - var quantity = $("#CPQuantity").val(); - var convertRate = $("#CPRate").val(); - var itemRate = convertRate * exchangeRate; - var basicval = $("#CPTotalAmount").val(); - var AfterServiceTax = $("#AfterServiceTax").val(); - var AfterEduCess = $("#AfterEduCess").val(); - var AfterSecHighTax = $("#AfterSecHighTax").val(); - - var AfterKrishiTax = $("#AfterKrishiTax").val(); - var AfterSwachhTax = $("#AfterSwachhTax").val(); - - - - var landingCharge = $('#AfterLandingCharge').val(); - var HighSeasSalesCharge = $('#AfterHighseas').val(); - var CustomDuty = $('#AfterCustomduty').val(); - var ExciseDuty = $('#AfterExcisedutyTax').val(); - var ExciseDutyEDCess = $('#AfterExcisedutyEDcess').val(); - var ExciseDutySHCess = $('#AfterExcisedutySHcess').val(); - var CustomEDCess = $('#AfterCustomEDcess').val(); - var CustomSHCess = $('#AfterCustomSHcess').val(); - var AdditionalExciseDuty = $('#AfterAdditionalExciseduty').val(); - var GrossDutyPayable = $('#Grossdutypayable').val(); - var AvailableModvat = $('#AvailableModvat').val(); - var GrossExpensesDuetoCustom = $('#Grossexpenses').val(); - var purchaseRate = $('#purchaserate').val(); - var CustomDutyExpenses = $('#CustomDutyExpenses').val(); - var RMCIncludingCustomers = $('#RMCIncludingCustomers').val(); - var TotalOrderValue = $("#txtTotalOrderValue").val(); - - var TotalTaxValue = calculateTaxValue(); - - - $('#MaterialCode option[value='+materialCode+']').remove(); - - SelectedMaterialCode[CollIndex] = materialCode; - CollIndex = CollIndex + 1; - - SelectedMaterialList.Mat.push({ - "materialCode" : materialCode, - "ReqNo" : Reqnumber, - - }); - - populateValueMainFormForCapital(); - - - - index = parseInt(index)+1; - - var template = jQuery("#CapitalList").html(); - - - $('#capitalAppend').append(_.template(template,{index:temp,ReqNo:Reqnumber,MaterialName:materialName,Quantity:quantity,UOM:uom,Rate:itemRate,BasicAmount:basicval,Taxvalue:TotalTaxValue,TotalValue:TotalOrderValue})); - - //clearCapitalModalFields(); - var theForm = $(".CapitalPO"); - - addHidden(theForm,"Reqnumber"+temp,Reqnumber ); - addHidden(theForm,"departmentName"+temp,departmentName ); - addHidden(theForm,"AvilBudget"+temp,AvilBudget ); - addHidden(theForm,"costCode"+temp,costCode ); - addHidden(theForm,"materialCode"+temp,materialCode ); - addHidden(theForm,"materialName"+temp,materialName ); - addHidden(theForm,"uom"+temp,uom); - addHidden(theForm,"quantity"+temp,quantity); - addHidden(theForm,"itemRate"+temp,itemRate); - addHidden(theForm,"AfterServiceTax"+temp,AfterServiceTax); - addHidden(theForm,"AfterEduCess"+temp,AfterEduCess); - addHidden(theForm,"AfterSecHighTax"+temp,AfterSecHighTax); - addHidden(theForm,"AfterKrishiTax"+temp,AfterKrishiTax); - addHidden(theForm,"AfterSwachhTax"+temp,AfterSwachhTax); - addHidden(theForm,"landingCharge"+temp,landingCharge); - addHidden(theForm,"HighSeasSalesCharge"+temp,HighSeasSalesCharge); - addHidden(theForm,"CustomDuty"+temp,CustomDuty); - addHidden(theForm,"ExciseDuty"+temp,ExciseDuty); - addHidden(theForm,"ExciseDutyEDCess"+temp,ExciseDutyEDCess); - addHidden(theForm,"ExciseDutySHCess"+temp,ExciseDutySHCess); - addHidden(theForm,"CustomEDCess"+temp,CustomEDCess); - addHidden(theForm,"CustomSHCess"+temp,CustomSHCess); - addHidden(theForm,"AdditionalExciseDuty"+temp,AdditionalExciseDuty); - addHidden(theForm,"GrossDutyPayable"+temp,GrossDutyPayable); - addHidden(theForm,"AvailableModvat"+temp,AvailableModvat); - addHidden(theForm,"GrossExpensesDuetoCustom"+temp,GrossExpensesDuetoCustom); - addHidden(theForm,"purchaseRate"+temp,purchaseRate); - addHidden(theForm,"CustomDutyExpenses"+temp,CustomDutyExpenses); - addHidden(theForm,"RMCIncludingCustomers"+temp,RMCIncludingCustomers); - addHidden(theForm,"TotalOrderValue"+temp,TotalOrderValue); - - $('#txtRowCount').val(temp); - - clearCapitalModalFields(); - } - - }); - - /* used to validateExceedLimit */ - function validateExceedLimit() - { - - var avalbudAmt = parseFloat($('#CapitalbudAmt').val()); - var basicAmountRate = parseFloat($('#CPTotalAmount').val()); - var totalAmount = parseFloat($('#txtTotalOrderValue').val()); - - if(basicAmountRate > avalbudAmt || totalAmount > avalbudAmt) - { - alert('Basic amount is exceeding the Budget Limit.Please adjust the product value.'); - $('#CPRate').focus(); - return false; - } - else - { - return true; - } - - } - function validateRevenueTax() - { - if($('#Reqnumber').val() == "0") - { - alert('Please select the Requisition Number'); - $('#Reqnumber').focus(); - return false; - } - else if($('#CostCenter').val() == "0") - { - alert('Please select the Cost center'); - $('#CostCenter').focus(); - return false; - } - else if($('#MaterialCode').val() == "0") - { - alert('Please select the Material Code'); - $('#MaterialCode').focus(); - return false; - } - else if($('#Quantity').val() == '') - { - alert('Please Enter the Quantity value'); - $('#Quantity').focus(); - return false; - } - else if($('#Rate').val() == '') - { - alert('Please Enter the Rate of the Item'); - $('#Rate').focus(); - return false; - } - else - { - return true; - } - } - function calculateTotalValue() - { - var BasicVal = $('#CPTotalAmount').val() == '' ? '0.00' : $('#CPTotalAmount').val(); - var ServiceTaxAmount = $('#AfterServiceTax').val() == '' ? '0.00' : $('#AfterServiceTax').val(); - var EduCessTaxAmount = $('#AfterEduCess').val() == '' ? '0.00' : $('#AfterEduCess').val(); - var SecHighTaxAmount = $('#AfterSecHighTax').val() == '' ? '0.00' : $('#AfterSecHighTax').val(); - var KrishiTaxAmount = $('#AfterKrishiTax').val() == '' ? '0.00' : $('#AfterKrishiTax').val(); - var SwachhTaxAmount = $('#AfterSwachhTax').val() == '' ? '0.00' : $('#AfterSwachhTax').val(); - var landingCharge = $('#AfterLandingCharge').val() == '' ? '0.00' : $('#AfterLandingCharge').val(); - var HighSeasSalesCharge = $('#AfterHighseas').val() == '' ? '0.00' : $('#AfterHighseas').val(); - var CustomDuty = $('#AfterCustomduty').val() == '' ? '0.00' : $('#AfterCustomduty').val(); - var ExciseDuty = $('#AfterExcisedutyTax').val() == '' ? '0.00' : $('#AfterExcisedutyTax').val(); - var ExciseDutyEDCess = $('#AfterExcisedutyEDcess').val() == '' ? '0.00' : $('#AfterExcisedutyEDcess').val(); - var ExciseDutySHCess = $('#AfterExcisedutySHcess').val() == '' ? '0.00' : $('#AfterExcisedutySHcess').val(); - var CustomEDCess = $('#AfterCustomEDcess').val() == '' ? '0.00' : $('#AfterCustomEDcess').val(); - var CustomSHCess = $('#AfterCustomSHcess').val() == '' ? '0.00' : $('#AfterCustomSHcess').val(); - var AdditionalExciseDuty = $('#AfterAdditionalExciseduty').val() == '' ? '0.00' : $('#AfterAdditionalExciseduty').val(); - var GrossDutyPayable = $('#Grossdutypayable').val() == '' ? '0.00' : $('#Grossdutypayable').val(); - var AvailableModvat = $('#AvailableModvat').val() == '' ? '0.00' : $('#AvailableModvat').val(); - var GrossExpensesDuetoCustom = $('#Grossexpenses').val() == '' ? '0.00' : $('#Grossexpenses').val(); - var purchaseRate = $('#purchaserate').val() == '' ? '0.00' : $('#purchaserate').val(); - var CustomDutyExpenses = $('#CustomDutyExpenses').val() == '' ? '0.00' : $('#CustomDutyExpenses').val(); - var RMCIncludingCustomers = $('#RMCIncludingCustomers').val() == '' ? '0.00' : $('#RMCIncludingCustomers').val(); - var totvalue = (parseFloat(BasicVal) + parseFloat(ServiceTaxAmount)+ parseFloat(EduCessTaxAmount)+ parseFloat(SecHighTaxAmount) + parseFloat(KrishiTaxAmount)+ parseFloat(SwachhTaxAmount)); -//+parseFloat(landingCharge)+parseFloat(HighSeasSalesCharge)+parseFloat(CustomDuty)+parseFloat(ExciseDuty)+parseFloat(ExciseDutyEDCess)+parseFloat(ExciseDutySHCess)+parseFloat(CustomEDCess)+parseFloat(CustomSHCess)+parseFloat(AdditionalExciseDuty)+parseFloat(GrossDutyPayable)+parseFloat(AvailableModvat)+parseFloat(GrossExpensesDuetoCustom)+parseFloat(purchaseRate)+parseFloat(CustomDutyExpenses)+parseFloat(RMCIncludingCustomers) - var tot = parseFloat(totvalue).toFixed(2); - - $('#txtTotalOrderValue').val(tot); - - validateExceedLimit(); - ExceedQuantityCheck(); - } - /* calculate tax value*/ - function calculateTaxValue(){ - var ServiceTaxAmount = $('#AfterServiceTax').val() == '' ? '0.00' : $('#AfterServiceTax').val(); - var EduCessTaxAmount = $('#AfterEduCess').val() == '' ? '0.00' : $('#AfterEduCess').val(); - var SecHighTaxAmount = $('#AfterSecHighTax').val() == '' ? '0.00' : $('#AfterSecHighTax').val(); - var KrishiTaxAmount = $('#AfterKrishiTax').val() == '' ? '0.00' : $('#AfterKrishiTax').val(); - var SwachhTaxAmount = $('#AfterSwachhTax').val() == '' ? '0.00' : $('#AfterSwachhTax').val(); - var landingCharge = $('#AfterLandingCharge').val() == '' ? '0.00' : $('#AfterLandingCharge').val(); - var HighSeasSalesCharge = $('#AfterHighseas').val() == '' ? '0.00' : $('#AfterHighseas').val(); - var CustomDuty = $('#AfterCustomduty').val() == '' ? '0.00' : $('#AfterCustomduty').val(); - var ExciseDuty = $('#AfterExcisedutyTax').val() == '' ? '0.00' : $('#AfterExcisedutyTax').val(); - var ExciseDutyEDCess = $('#AfterExcisedutyEDcess').val() == '' ? '0.00' : $('#AfterExcisedutyEDcess').val(); - var ExciseDutySHCess = $('#AfterExcisedutySHcess').val() == '' ? '0.00' : $('#AfterExcisedutySHcess').val(); - var CustomEDCess = $('#AfterCustomEDcess').val() == '' ? '0.00' : $('#AfterCustomEDcess').val(); - var CustomSHCess = $('#AfterCustomSHcess').val() == '' ? '0.00' : $('#AfterCustomSHcess').val(); - var AdditionalExciseDuty = $('#AfterAdditionalExciseduty').val() == '' ? '0.00' : $('#AfterAdditionalExciseduty').val(); - var GrossDutyPayable = $('#Grossdutypayable').val() == '' ? '0.00' : $('#Grossdutypayable').val(); - var AvailableModvat = $('#AvailableModvat').val() == '' ? '0.00' : $('#AvailableModvat').val(); - var GrossExpensesDuetoCustom = $('#Grossexpenses').val() == '' ? '0.00' : $('#Grossexpenses').val(); - var purchaseRate = $('#purchaserate').val() == '' ? '0.00' : $('#purchaserate').val(); - var CustomDutyExpenses = $('#CustomDutyExpenses').val() == '' ? '0.00' : $('#CustomDutyExpenses').val(); - var RMCIncludingCustomers = $('#RMCIncludingCustomers').val() == '' ? '0.00' : $('#RMCIncludingCustomers').val(); - var totTaxvalue = (parseFloat(ServiceTaxAmount)+ parseFloat(EduCessTaxAmount)+ parseFloat(SecHighTaxAmount) + parseFloat(KrishiTaxAmount)+ parseFloat(SwachhTaxAmount)); -//+parseFloat(landingCharge)+parseFloat(HighSeasSalesCharge)+parseFloat(CustomDuty)+parseFloat(ExciseDuty)+parseFloat(ExciseDutyEDCess)+parseFloat(ExciseDutySHCess)+parseFloat(CustomEDCess)+parseFloat(CustomSHCess)+parseFloat(AdditionalExciseDuty)+parseFloat(GrossDutyPayable)+parseFloat(AvailableModvat)+parseFloat(GrossExpensesDuetoCustom)+parseFloat(purchaseRate)+parseFloat(CustomDutyExpenses)+parseFloat(RMCIncludingCustomers) - - var totTax = parseFloat(totTaxvalue).toFixed(2); - return totTax; - } - - function populateValueMainFormForCapital() - { - var BasicVal = $('#CPTotalAmount').val() == '' ? '0.00' : $('#CPTotalAmount').val(); - var ServiceTaxAmount = $('#AfterServiceTax').val() == '' ? '0.00' : $('#AfterServiceTax').val(); - var EduCessTaxAmount = $('#AfterEduCess').val() == '' ? '0.00' : $('#AfterEduCess').val(); - var SecHighTaxAmount = $('#AfterSecHighTax').val() == '' ? '0.00' : $('#AfterSecHighTax').val(); - var KrishiTaxAmount = $('#AfterKrishiTax').val() == '' ? '0.00' : $('#AfterKrishiTax').val(); - var SwachhTaxAmount = $('#AfterSwachhTax').val() == '' ? '0.00' : $('#AfterSwachhTax').val(); - var landingCharge = $('#AfterLandingCharge').val() == '' ? '0.00' : $('#AfterLandingCharge').val(); - var HighSeasSalesCharge = $('#AfterHighseas').val() == '' ? '0.00' : $('#AfterHighseas').val(); - var CustomDuty = $('#AfterCustomduty').val() == '' ? '0.00' : $('#AfterCustomduty').val(); - var ExciseDuty = $('#AfterExcisedutyTax').val() == '' ? '0.00' : $('#AfterExcisedutyTax').val(); - var ExciseDutyEDCess = $('#AfterExcisedutyEDcess').val() == '' ? '0.00' : $('#AfterExcisedutyEDcess').val(); - var ExciseDutySHCess = $('#AfterExcisedutySHcess').val() == '' ? '0.00' : $('#AfterExcisedutySHcess').val(); - var CustomEDCess = $('#AfterCustomEDcess').val() == '' ? '0.00' : $('#AfterCustomEDcess').val(); - var CustomSHCess = $('#AfterCustomSHcess').val() == '' ? '0.00' : $('#AfterCustomSHcess').val(); - var AdditionalExciseDuty = $('#AfterAdditionalExciseduty').val() == '' ? '0.00' : $('#AfterAdditionalExciseduty').val(); - var GrossDutyPayable = $('#Grossdutypayable').val() == '' ? '0.00' : $('#Grossdutypayable').val(); - var AvailableModvat = $('#AvailableModvat').val() == '' ? '0.00' : $('#AvailableModvat').val(); - var GrossExpensesDuetoCustom = $('#Grossexpenses').val() == '' ? '0.00' : $('#Grossexpenses').val(); - var purchaseRate = $('#purchaserate').val() == '' ? '0.00' : $('#purchaserate').val(); - var CustomDutyExpenses = $('#CustomDutyExpenses').val() == '' ? '0.00' : $('#CustomDutyExpenses').val(); - var RMCIncludingCustomers = $('#RMCIncludingCustomers').val() == '' ? '0.00' : $('#RMCIncludingCustomers').val(); - var totvalue = $('#txtTotalOrderValue').val() == '' ? '0.00' : $('#txtTotalOrderValue').val(); - - - var TotalOrderValueSummary = $('#txtToatlOrder').val() == '' ? '0.00' : $('#txtToatlOrder').val(); - - var TotalServiceTax = $('#TotalAfterServiceTax').val() == '' ? '0.00' : $('#TotalAfterServiceTax').val(); - var TotalEducess = $('#TotalAfterEduCess').val() == '' ? '0.00' : $('#TotalAfterEduCess').val(); - var TotHigherEdu = $('#TotalAfterSecHighTax').val() == '' ? '0.00' : $('#TotalAfterSecHighTax').val(); - - var TotalKrishiKalyan = $('#TotalAfterKrishiTax').val() == '' ? '0.00' : $('#TotalAfterKrishiTax').val(); - var TotSwachhBharat = $('#TotalAfterSwachhTax').val() == '' ? '0.00' : $('#TotalAfterSwachhTax').val(); - - var TotLanding = $('#txttotallanding').val() == '' ? '0.00' : $('#txttotallanding').val(); - var TotHighseas = $('#txttotalhighseas').val() == '' ? '0.00' : $('#txttotalhighseas').val(); - var TotCustom = $('#txttotalcustom').val() == '' ? '0.00' : $('#txttotalcustom').val(); - var TotExcise = $('#txttotalexcise').val() == '' ? '0.00' : $('#txttotalexcise').val(); - var TotExciseED = $('#txttotalexciseED').val() == '' ? '0.00' : $('#txttotalexciseED').val(); - var TotExciseSH = $('#txttotalexciseSH').val() == '' ? '0.00' : $('#txttotalexciseSH').val(); - var TotCustomED = $('#txttotalcustomED').val() == '' ? '0.00' : $('#txttotalcustomED').val(); - var TotCustomSH = $('#txttotalcustomSH').val() == '' ? '0.00' : $('#txttotalcustomSH').val(); - var TotAdditionalExciseduty = $('#txttotalAdditionalExciseduty').val() == '' ? '0.00' : $('#txttotalAdditionalExciseduty').val(); - var TotGrossduty = $('#txttotalgrossduty').val() == '' ? '0.00' : $('#txttotalgrossduty').val(); - var TotAvlmodvat = $('#txttotalavlmodvat').val() == '' ? '0.00' : $('#txttotalavlmodvat').val(); - - var TotGrossexpense = $('#txttotalgrossexpense').val() == '' ? '0.00' : $('#txttotalgrossexpense').val(); - - - $('#TotalAfterServiceTax').val((parseFloat(TotalServiceTax) + parseFloat(ServiceTaxAmount)).toFixed(2) ); - $('#TotalAfterEduCess').val((parseFloat(TotalEducess) + parseFloat(EduCessTaxAmount)).toFixed(2) ); - $('#TotalAfterSecHighTax').val((parseFloat(TotHigherEdu) + parseFloat(SecHighTaxAmount)).toFixed(2) ); - - $('#TotalAfterKrishiTax').val((parseFloat(TotalKrishiKalyan) + parseFloat(KrishiTaxAmount)).toFixed(2) ); - $('#TotalAfterSwachhTax').val((parseFloat(TotSwachhBharat) + parseFloat(SwachhTaxAmount)).toFixed(2) ); - - $('#txttotallanding').val((parseFloat(TotLanding) + parseFloat(landingCharge)).toFixed(2) ); - $('#txttotalhighseas').val((parseFloat(TotHighseas) + parseFloat(HighSeasSalesCharge)).toFixed(2) ); - $('#txttotalcustom').val((parseFloat(TotCustom) + parseFloat(CustomDuty)).toFixed(2) ); - $('#txttotalexcise').val((parseFloat(TotExcise) + parseFloat(ExciseDuty)).toFixed(2) ); - $('#txttotalexciseED').val((parseFloat(TotExciseED) + parseFloat(ExciseDutyEDCess)).toFixed(2) ); - $('#txttotalexciseSH').val((parseFloat(TotExciseSH) + parseFloat(ExciseDutySHCess)).toFixed(2) ); - $('#txttotalcustomED').val((parseFloat(TotCustomED) + parseFloat(CustomEDCess)).toFixed(2) ); - $('#txttotalcustomSH').val((parseFloat(TotCustomSH) + parseFloat(CustomSHCess)).toFixed(2) ); - $('#txttotalAdditionalExciseduty').val((parseFloat(TotAdditionalExciseduty) + parseFloat(AdditionalExciseDuty)).toFixed(2) ); - $('#txttotalgrossduty').val((parseFloat(TotGrossduty) + parseFloat(GrossDutyPayable)).toFixed(2) ); - $('#txttotalavlmodvat').val((parseFloat(TotAvlmodvat) + parseFloat(AvailableModvat)).toFixed(2) ); - $('#txttotalgrossexpense').val((parseFloat(TotGrossexpense) + parseFloat(GrossExpensesDuetoCustom)).toFixed(2) ); - - $('#txtToatlOrder').val((parseFloat(TotalOrderValueSummary) + parseFloat(totvalue)).toFixed(2) ); - - - } - function clearCapitalModalFields() - { - - - $('#Reqnumber').val('0'); - $('#CapitalDepartmentName').val(''); - $('#CapitalbudAmt').val(''); - $('#CostCenter').val('0'); - $('#MaterialCode').val('0'); - $("#CapitalItemName").val(''); - $("#CPUOM").val(''); - //var exchangeRate = $("#ExchangeRtModal").val(); - $("#CPQuantity").val(''); - $("#CPRate").val(''); - - $("#CPTotalAmount").val(''); - $("#AfterServiceTax").val(''); - $("#AfterEduCess").val(''); - $("#AfterSecHighTax").val(''); - - $("#AfterKrishiTax").val(''); - $("#AfterSwachhTax").val(''); -$('#AfterBasicPriceTax').val(''); - $('#LandingCharge').val(''); - $('#AfterLandingCharge').val(''); -$('#Highseas').val(''); - $('#AfterHighseas').val(''); -$('#Customduty').val(''); - - $('#AfterCustomduty').val(''); -$('#ExcisedutyTax').val(''); - $('#AfterExcisedutyTax').val(''); - $('#ExcisedutyEDcess').val(''); - $('#AfterExcisedutyEDcess').val(''); - $('#ExcisedutySHcess').val(''); - $('#AfterExcisedutySHcess').val(''); -$('#CustomEDcess').val(''); - $('#AfterCustomEDcess').val(''); -$('#CustomSHcess').val(''); - $('#AfterCustomSHcess').val(''); -$('#AdditionalExciseduty').val(''); - $('#AfterAdditionalExciseduty').val(''); - $('#Grossdutypayable').val(''); - $('#AvailableModvat').val(''); - $('#Grossexpenses').val(''); -$('#PurQuantity').val(''); - $('#purchaserate').val(''); - $('#CustomDutyExpenses').val(''); - $('#RMCIncludingCustomers').val(''); - $("#txtTotalOrderValue").val(''); - - - } - function addHidden(theForm, key, value) { - // Create a hidden input element, and append it to the form: - var input = document.createElement('input'); - input.type = 'hidden'; - input.name = key;'name-as-seen-at-the-server'; - input.id = key;'name-as-seen-at-the-server'; - input.value = value; - theForm.append(input); -} - -function DeleteRow(rowid) -{ - - var DelRows = $('#txtDeletedRow').val(); - //alertMaterialListrowid); - - var answer = confirm(" Do you want to delete the Item from the List?") - if (answer) - { - var td = document.getElementById(rowid); - td.parentNode.removeChild(td); - var materialCode = $('#materialCode'+rowid).val(); - var removeItem = $('#materialCode'+rowid).val(); - var Material = <?php echo json_encode($MaterialList, JSON_PRETTY_PRINT) ?>; - for(i=0;i<Material.length;i++) - { - $.each(Material[i], function (index, value) { - - - if (value.MaterialCode==materialCode) { - - $("#MaterialCode").append( $('<option></option>').val(value.MaterialCode).html(value.MaterialCode + "-" + value.MaterialName) ); - } - - - - }); -} - - SelectedMaterialCode.splice( SelectedMaterialCode.indexOf('removeItem'), 1 ); - $.each(SelectedMaterialList.Mat, function(i, el){ - - if (this.materialCode == removeItem){//Type = ''; - SelectedMaterialList.Mat.splice(i, 1); - } - }); - // alert(SelectedMaterialCode); - if(DelRows != '') - { - DelRows = DelRows + ":" + rowid; - } - else - { - DelRows= "0" + ":" + rowid; - } - $('#txtDeletedRow').val(DelRows); - //populateValueMainFormForDeleteItem(rowid); - } - -} - - - /** - * This function is used to calculate the total amounts after delete the row - */ - function populateValueMainFormForDeleteServiceTax(deletedRow) - { - var rows = document.getElementById('serviceTax').rows.length+1; - var TotalOrderValueSummary = 0; - - var TotalServiceTax = 0; - var TotalEducess = 0; - var TotHigherEdu = 0; - - var TotalKrishiKalyan = 0; - var TotSwachhBharat = 0; - - var TotLanding = 0; - var TotHighseas = 0; - var TotCustom = 0; - var TotExcise = 0; - var TotExciseED = 0; - var TotExciseSH = 0; - var TotCustomED = 0; - var TotCustomSH = 0; - var TotAdditionalExciseduty = 0; - var TotGrossduty = 0; - var TotAvlmodvat = 0; - - var TotGrossexpense = 0; - - for (var i = 1; i < rows; i++) { - if(deletedRow==i){ - $('#TotalAfterServiceTax'+i).val(''); - $('#TotalAfterEduCess'+i).val(''); - $('#TotalAfterSecHighTax'+i).val(''); - - $('#TotalAfterKrishiTax'+i).val(''); - $('#TotalAfterSwachhTax'+i).val(''); - - $('#txttotallanding'+i).val(''); - $('#txttotalhighseas'+i).val(''); - $('#txttotalcustom'+i).val(''); - $('#txttotalexcise'+i).val(''); - $('#txttotalexciseED'+i).val(''); - $('#txttotalexciseSH'+i).val(''); - $('#txttotalcustomED'+i).val(''); - $('#txttotalcustomSH'+i).val(''); - $('#txttotalAdditionalExciseduty'+i).val(''); - $('#txttotalgrossduty'+i).val(''); - $('#txttotalavlmodvat'+i).val(''); - $('#txttotalgrossexpense'+i).val(''); - - $('#txtToatlOrder'+i).val(''); - - - var TotalOrderValueSummary = $('#txtToatlOrder'+i).val() == '' ? '0.00' : $('#txtToatlOrder'+i).val(); - - var TotalServiceTax = $('#TotalAfterServiceTax'+i).val() == '' ? '0.00' : $('#TotalAfterServiceTax'+i).val(); - var TotalEducess = $('#TotalAfterEduCess'+i).val() == '' ? '0.00' : $('#TotalAfterEduCess'+i).val(); - var TotHigherEdu = $('#TotalAfterSecHighTax'+i).val() == '' ? '0.00' : $('#TotalAfterSecHighTax'+i).val(); - - var TotalKrishiKalyan = $('#TotalAfterKrishiTax'+i).val() == '' ? '0.00' : $('#TotalAfterKrishiTax'+i).val(); - var TotSwachhBharat = $('#TotalAfterSwachhTax'+i).val() == '' ? '0.00' : $('#TotalAfterSwachhTax'+i).val(); - - var TotLanding = $('#txttotallanding'+i).val() == '' ? '0.00' : $('#txttotallanding'+i).val(); - var TotHighseas = $('#txttotalhighseas'+i).val() == '' ? '0.00' : $('#txttotalhighseas'+i).val(); - var TotCustom = $('#txttotalcustom'+i).val() == '' ? '0.00' : $('#txttotalcustom'+i).val(); - var TotExcise = $('#txttotalexcise'+i).val() == '' ? '0.00' : $('#txttotalexcise'+i).val(); - var TotExciseED = $('#txttotalexciseED'+i).val() == '' ? '0.00' : $('#txttotalexciseED'+i).val(); - var TotExciseSH = $('#txttotalexciseSH'+i).val() == '' ? '0.00' : $('#txttotalexciseSH'+i).val(); - var TotCustomED = $('#txttotalcustomED'+i).val() == '' ? '0.00' : $('#txttotalcustomED'+i).val(); - var TotCustomSH = $('#txttotalcustomSH'+i).val() == '' ? '0.00' : $('#txttotalcustomSH'+i).val(); - var TotAdditionalExciseduty = $('#txttotalAdditionalExciseduty'+i).val() == '' ? '0.00' : $('#txttotalAdditionalExciseduty'+i).val(); - var TotGrossduty = $('#txttotalgrossduty'+i).val() == '' ? '0.00' : $('#txttotalgrossduty'+i).val(); - var TotAvlmodvat = $('#txttotalavlmodvat'+i).val() == '' ? '0.00' : $('#txttotalavlmodvat'+i).val(); - - var TotGrossexpense = $('#txttotalgrossexpense'+i).val() == '' ? '0.00' : $('#txttotalgrossexpense'+i).val(); - } - else if(deletedRow!=i){ - - var TotalOrderValueSummary = $('#txtToatlOrder').val() == '' ? '0.00' : $('#txtToatlOrder').val(); - - var TotalServiceTax = $('#TotalAfterServiceTax').val() == '' ? '0.00' : $('#TotalAfterServiceTax').val(); - var TotalEducess = $('#TotalAfterEduCess').val() == '' ? '0.00' : $('#TotalAfterEduCess').val(); - var TotHigherEdu = $('#TotalAfterSecHighTax').val() == '' ? '0.00' : $('#TotalAfterSecHighTax').val(); - - var TotalKrishiKalyan = $('#TotalAfterKrishiTax').val() == '' ? '0.00' : $('#TotalAfterKrishiTax').val(); - var TotSwachhBharat = $('#TotalAfterSwachhTax').val() == '' ? '0.00' : $('#TotalAfterSwachhTax').val(); - - var TotLanding = $('#txttotallanding').val() == '' ? '0.00' : $('#txttotallanding').val(); - var TotHighseas = $('#txttotalhighseas').val() == '' ? '0.00' : $('#txttotalhighseas').val(); - var TotCustom = $('#txttotalcustom').val() == '' ? '0.00' : $('#txttotalcustom').val(); - var TotExcise = $('#txttotalexcise').val() == '' ? '0.00' : $('#txttotalexcise').val(); - var TotExciseED = $('#txttotalexciseED').val() == '' ? '0.00' : $('#txttotalexciseED').val(); - var TotExciseSH = $('#txttotalexciseSH').val() == '' ? '0.00' : $('#txttotalexciseSH').val(); - var TotCustomED = $('#txttotalcustomED').val() == '' ? '0.00' : $('#txttotalcustomED').val(); - var TotCustomSH = $('#txttotalcustomSH').val() == '' ? '0.00' : $('#txttotalcustomSH').val(); - var TotAdditionalExciseduty = $('#txttotalAdditionalExciseduty').val() == '' ? '0.00' : $('#txttotalAdditionalExciseduty').val(); - var TotGrossduty = $('#txttotalgrossduty').val() == '' ? '0.00' : $('#txttotalgrossduty').val(); - var TotAvlmodvat = $('#txttotalavlmodvat').val() == '' ? '0.00' : $('#txttotalavlmodvat').val(); - - var TotGrossexpense = $('#txttotalgrossexpense').val() == '' ? '0.00' : $('#txttotalgrossexpense').val(); - } - - } - else{ - - } - - - } - - - $('#TotalAfterServiceTax').val((parseFloat(TotalServiceTax) + parseFloat(ServiceTaxAmount)).toFixed(2) ); - $('#TotalAfterEduCess').val((parseFloat(TotalEducess) + parseFloat(EduCessTaxAmount)).toFixed(2) ); - $('#TotalAfterSecHighTax').val((parseFloat(TotHigherEdu) + parseFloat(SecHighTaxAmount)).toFixed(2) ); - - $('#TotalAfterKrishiTax').val((parseFloat(TotalKrishiKalyan) + parseFloat(KrishiTaxAmount)).toFixed(2) ); - $('#TotalAfterSwachhTax').val((parseFloat(TotSwachhBharat) + parseFloat(SwachhTaxAmount)).toFixed(2) ); - - $('#txttotallanding').val((parseFloat(TotLanding) + parseFloat(landingCharge)).toFixed(2) ); - $('#txttotalhighseas').val((parseFloat(TotHighseas) + parseFloat(HighSeasSalesCharge)).toFixed(2) ); - $('#txttotalcustom').val((parseFloat(TotCustom) + parseFloat(CustomDuty)).toFixed(2) ); - $('#txttotalexcise').val((parseFloat(TotExcise) + parseFloat(ExciseDuty)).toFixed(2) ); - $('#txttotalexciseED').val((parseFloat(TotExciseED) + parseFloat(ExciseDutyEDCess)).toFixed(2) ); - $('#txttotalexciseSH').val((parseFloat(TotExciseSH) + parseFloat(ExciseDutySHCess)).toFixed(2) ); - $('#txttotalcustomED').val((parseFloat(TotCustomED) + parseFloat(CustomEDCess)).toFixed(2) ); - $('#txttotalcustomSH').val((parseFloat(TotCustomSH) + parseFloat(CustomSHCess)).toFixed(2) ); - $('#txttotalAdditionalExciseduty').val((parseFloat(TotAdditionalExciseduty) + parseFloat(AdditionalExciseDuty)).toFixed(2) ); - $('#txttotalgrossduty').val((parseFloat(TotGrossduty) + parseFloat(GrossDutyPayable)).toFixed(2) ); - $('#txttotalavlmodvat').val((parseFloat(TotAvlmodvat) + parseFloat(AvailableModvat)).toFixed(2) ); - $('#txttotalgrossexpense').val((parseFloat(TotGrossexpense) + parseFloat(GrossExpensesDuetoCustom)).toFixed(2) ); - - $('#txtToatlOrder').val((parseFloat(TotalOrderValueSummary) + parseFloat(totvalue)).toFixed(2) ); - - - } - </script> \ No newline at end of file diff --git a/application/views/changePassword.php b/application/views/changePassword.php deleted file mode 100644 index 1a143392..00000000 --- a/application/views/changePassword.php +++ /dev/null @@ -1,96 +0,0 @@ -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - Change Password - <small>Set new password for your account</small> - </h1> - </section> - <section class="content"> - <div class="row"> - <div class="col-md-4"> - <!-- general form elements --> - <div class="box box-primary"> - <div class="box-header"> - <h3 class="box-title">Enter Details</h3> - </div><!-- /.box-header --> - <!-- form start --> - <form role="form" action="<?php echo base_url() ?>changePassword" method="post"> - <div class="box-body"> - <div class="row"> - <div class="col-md-12"> - <div class="form-group"> - <label for="inputPassword1">Old Password</label> - <input type="password" class="form-control" id="inputOldPassword" placeholder="Old password" name="oldPassword" maxlength="10" required> - </div> - </div> - </div> - <hr> - <div class="row"> - <div class="col-md-12"> - <div class="form-group"> - <label for="inputPassword1">New Password</label> - <input type="password" class="form-control" id="inputPassword1" placeholder="New password" name="newPassword" maxlength="10" required> - </div> - </div> - </div> - <div class="row"> - <div class="col-md-12"> - <div class="form-group"> - <label for="inputPassword2">Confirm New Password</label> - <input type="password" class="form-control" id="inputPassword2" placeholder="Confirm new password" name="cNewPassword" maxlength="10" required> - </div> - </div> - </div> - </div><!-- /.box-body --> - - <div class="box-footer"> - <input type="submit" class="btn btn-primary" value="Submit" /> - <input type="reset" class="btn btn-default" value="Reset" /> - </div> - </form> - </div> - </div> - <div class="col-md-4"> - <?php - $this->load->helper('form'); - $error = $this->session->flashdata('error'); - if($error) - { - ?> - <div class="alert alert-danger alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('error'); ?> - </div> - <?php } ?> - <?php - $success = $this->session->flashdata('success'); - if($success) - { - ?> - <div class="alert alert-success alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('success'); ?> - </div> - <?php } ?> - - <?php - $noMatch = $this->session->flashdata('nomatch'); - if($noMatch) - { - ?> - <div class="alert alert-warning alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('nomatch'); ?> - </div> - <?php } ?> - - <div class="row"> - <div class="col-md-12"> - <?php echo validation_errors('<div class="alert alert-danger alert-dismissable">', ' <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button></div>'); ?> - </div> - </div> - </div> - </div> - </section> -</div> \ No newline at end of file diff --git a/application/views/costListing.php b/application/views/costListing.php deleted file mode 100644 index 9ddfa32a..00000000 --- a/application/views/costListing.php +++ /dev/null @@ -1,79 +0,0 @@ - -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - <center>Siddharth Industries - Cost Details</center> - </h1> - </section> - <section class="content"> - <div class="row"> - <div class="col-xs-12 text-right"> - <div class="form-group"> - <a class="btn btn-primary" href="<?php echo base_url(); ?>CostCenter/addCostCenter">Add New Cost List</a> - <a class="btn btn-primary" href="<?php echo base_url(); ?>costcenter/export_cost">Export Cost Details <i class="fa fa-download"aira-hidden="true"></i></a> - </div> - </div> - </div> - <div class="row"> - <div class="col-xs-12"> - <table id="datatable" class="table table-bordered table-hover" style="background-color:#fff;font-size:12px;" > - <thead> - <tr> - <th>Cost Center ID</th> - <th>Cost Name</th> - <th>Description</th> - <th>Create Date</th> - <th>Action</th> - </tr> - </thead> - <tbody> - <?php - if(!empty($userRecords)) - { - foreach($userRecords as $record) - { - ?> - <tr> - <td><?php echo $record->code ?></td> - <td><?php echo $record->CostCenterName ?></td> - <td><?php echo $record->ApprovedBy ?></td> - <td><?php echo $record->FirstName ?></td> - - - <td> - <a href="<?php echo base_url().'CostCenter/editOldcost?CostCode='.$record->code; ?>"><i class="fa fa-pencil"></i>&nbsp;&nbsp;&nbsp;</a> - <a href="<?php echo base_url().'CostCenter/viewcost?CostCode='.$record->code; ?>"><i class="fa fa-eye"></i>&nbsp;&nbsp;&nbsp;</a> - - - </td> - </tr> - <?php - } - } - ?> - </tbody> - </table> - - - </div> - </div> - </section> -</div> -<script type="text/javascript" src="<?php echo base_url(); ?>assets/js/common.js" charset="utf-8"></script> - <script type="text/javascript"> - - $(function () { - - $('#datatable').DataTable({ - "paging": true, - "lengthChange": true, - "searching": true, - "ordering": true, - "info": true, - "autoWidth": true - - }); - }); - -</script> diff --git a/application/views/createPOfromRequistion.php b/application/views/createPOfromRequistion.php deleted file mode 100644 index b52059f0..00000000 --- a/application/views/createPOfromRequistion.php +++ /dev/null @@ -1,553 +0,0 @@ -<?php $defaultDate =''; ?> -<script> - -</script> - <style> - .dataTables_paginate - { - margin-top: -5%; - } - .dataTables_wrapper - { - padding-bottom: 0px; - margin-top: -3%; - } - .content-wrapper - { - min-height: 733px; - } - </style> -<div class="content-wrapper"> - <?php - $attributes = array('class' => 'form-label-left CreatePO ','name' => 'CreatePO','id' => 'CreatePO','method' => 'post','role' => 'form' ); - - echo form_open($this->config->base_url().'PurchaseOrder',$attributes); ?> - - <section class="content"> - - <div> - <center><b><h2> Siddharth Industries - Create Purchase Order from Requistion </h2></b></center><br/><br/> - <div class="container-fluid"> - <div id="content"></div> - <div class="row"> - <div class="col-md-12"> - <div class="col-md-3"> - <label>Select Department Name</label> - <div> - <?php - $options = array("0"=>'Select Department Name'); - //print_r( $options); - - if(!empty($DeptList)) - { - foreach ($DeptList as $DID): - - - $options[$DID->DEPCode] = $DID->DEPCode.' '.' - '.' '.$DID->DepartmentName; - - endforeach; - } - - echo form_dropdown('drpDepartment', $options,set_value('drpDepartment'),'id="drpDepartment"' ,'class = "form-control required"','required="true"'); - - ?> - - </div> - </div> - <div class="col-md-3"> - <label>Requested Status</label> - <div> - <?php - $StList = array("0"=>'Select Requistion Status'); - //print_r( $options); - - if(!empty($stList)) - { - foreach ($stList as $SID): - $StList[$SID->StatusCode] = $SID->StatusCode.' '.' - '.' '.$SID->StatusName; - endforeach; - } - - echo form_dropdown('drpstatus', $StList,set_value('drpstatus'),'id="drpstatus"' ,'class = "form-control required"','required="true"'); - - ?> - - </div> - </div> - - <div class="col-md-3"> - <!-- Date range --> - <div class="form-group"> - <label>Requested Date range:</label> - - <div class="input-group"> - <div class="input-group-addon"> - <i class="fa fa-calendar"></i> - </div> - <input type="text" class="form-control pull-right" id="ReqDate" name="ReqDate" > - </div> - <!-- /.input group --> - </div> - </div> - <div class="col-md-3" > - <br/> - <a class="btn btn-primary" onclick="Search()" >Search</a> - <a class="btn btn-primary" onclick="Reset()" >Clear</a> - <p> - <div align="right" style="padding-right:10px"> - <!--<a href="<?php echo base_url(); ?>purchaseorderform/purchaseorder"> - <button type="button" class="btn btn-primary">Create PO</button></a> --> -<input type="submit" class="btn btn-primary" onclick="return Validate();" value="Create Purchase Order"> - <input type="hidden" name="txtReqNo" id="txtReqNo" /> - - </div></p> - </div> - </div> - </div> - </div> - - <div class="container-fluid"> - - - - <div class="modal fade" id="myModal" role="dialog"> - <div class="modal-dialog"> - <!-- Modal content--> - <form> - <div class="modal-content"> - <div class="modal-header" style="background-color: #3c8dbc;color:#fff;"> - <button type="button" class="close" data-dismiss="modal">&times;</button> - <center><h4> Requisition Details - <label id="SelReqNo" name="SelReqNo"></label> </h4></center> - </div> - <div align="left"> - - <div class="col-md-12"> - <div class="col-md-4"> - <label>Request Type</label> - <div class="form-group"> - <?php - $data = array('name' => 'ReqType','value' => set_value('ReqType'),'id'=>'ReqType', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - - <div class="col-md-4"> - <label>Requested By</label> - <div class="form-group"> - <?php - $data = array('name' => 'ReqBy','value' => set_value('ReqBy'),'id'=>'ReqBy', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <label>Designation</label> - <div class="form-group"> - <?php - $data = array('name' => 'Desigination','value' => set_value('Desigination'),'id'=>'Desigination', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - - </div> - <div class="col-md-12"> - <div class="col-md-4"> - <label>Requested Date</label> - <div class="form-group"> - <?php - $data = array('name' => 'RequistionDate','value' => set_value('RequistionDate'),'id'=>'RequistionDate', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - - <div class="col-md-4"> - <label>Cost Center Name</label> - <div class="form-group"> - - <?php - $data = array('name' => 'CostCenter','value' => set_value('CostCenter'),'id'=>'CostCenter', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data);?> - </div> - </div> - <div class="col-md-4"> - <label>Avl Budget Amt</label>&nbsp;<img id="AlertImg" src="<?php echo base_url(); ?>assets/dist/img/red.png" alt="your image" width="25px" style="display:none"/> - <div class="form-group"> - <?php - $data = array('name' => 'AvlBudgetAmount','value' => set_value('AvlBudgetAmount'),'id'=>'AvlBudgetAmount', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - - </div> - <div class="col-md-12"> - <table class="table table-bordered editableTable" style="border:1px solid #333"> - <div align="right" style="padding-right:10px"> - - <div class="modal fade" role="dialog"> - - <thead style="background-color:#fff"> - <tr> - - <th>SNo</th> - <th>Item Code</th> - <th>Item Description</th> - <th>UOM</th> - <th>Requested Quantity</th> - <th>Ordered Quantity</th> - - <th>Status</th> - - - </tr> - </thead> - <tbody id="tbleAppend"> - - - </tbody> - - </table> - - </div> - - </div> - <div class="modal-footer"> <div class="col-md-12"> - - <a class="btn btn-info" data-dismiss="modal" value="Cancel">Ok</a> - </div> - </div> - </div> - </form> - - </div> - </div> - - - <table id="REQLIST" class="table table-bordered table-hover" style="background-color:#fff;font-size:12px;"> - - <div align="right" style="padding-right:10px"> - - <div class="modal fade" role="dialog"> - - <thead style="background-color:#ddf"> - <tr> - <th>Select</th> - <th>Requistion Number</th> - <th>Requistion Type </th> - <th>Requested By</th> - <th>Requested Date</th> - <th>Tot. No. Of Line Items</th> - <th>Po Created Line Items</th> - <th>Partial PO Created Line Items</th> - <th>New Line Items</th> - <th>Status</th> - <th>Department</th> - <th>Designation</th> - </tr> - </thead> - <tbody id="AppendReqList"> - <?php - if(!empty($ReqList)) - { //alert($ReqList); - $index = 1; - foreach($ReqList as $record) - { - ?> - <tr id="<?php echo $index; ?>"> - <td><input type="checkbox" name="chk<?php echo $index; ?>" id="chk<?php echo $index; ?>" onclick="selectReqNo(<?php echo $index; ?>)" />&nbsp;</td> - <td><a data-toggle="modal" data-target="#myModal" data-id="<%=index%>" data-userid="<?php echo $record->ReqNo ?>"><u><?php echo $record->ReqNo; ?> </u></a></td> - <td><?php echo $record->ReqType; ?></td> - <td><?php echo $record->FirstName; ?></td> - <td><?php - $dt = new DateTime($record->ReqDate); - $RequestedDate = $dt->format('d-m-Y'); - echo $RequestedDate; - ?></td> - <td><?php echo $record->TotalNoofLineItems; ?></td> - <td><?php echo $record->PolineItems; ?></td> - <td><?php echo $record->PartilallyLineItems; ?></td> - <td><?php echo $record->newLineItem; ?></td> - <td><?php echo $record->StatusName; ?></td> - <td><?php echo $record->DepartmentName; ?></td> - <td><?php echo $record->Designation; ?></td> - </tr> - <?php $index = $index + 1; - } - - } - ?> - </tbody> - - </table> - - - <div align="right" > - - <!-- <input type="submit" class="btn btn-primary" onclick="return Validate();" value="Create Purchase Order"> --> - - - </div> - - </div> - </div> - - </section> -</div> -<script> -$('#ReqDate').val(''); -var Fromdt = ''; -var Todt = ''; -var baseurl = "<?php print base_url(); ?>"; - $(".RequisitionList").submit(function(e) { - - - e.preventDefault(); - - var id = ''; - var chk1 = $('#chk1').val(); - var chk2 = $('#chk2').val(); - var chk3 = $('#chk3').val(); - if( $('#chk1').is(":checked")) - { - id = ''; - } - else if($('#chk2').is(":checked")) - { - id = ''; - } - else if($('#chk3').is(":checked")) - { - id = ''; - } - // alert(chk1); - // alert(chk2); - // alert(chk3); - - window.location = baseurl +'purchaseorderform/purchaseorder'; - - - }); - //Date range picker - $('#ReqDate').daterangepicker({ - locale: { - format: 'YYYY/MM/DD' - } - }); - - $('#drpDepartment').change(function() { - - var id = $('#drpDepartment').val(); - - if(id != '-1') - { - $('#content').loader('show'); - - $.ajax({ - data:{id:id}, - dataType: 'json', - type:"POST", - url:"<?php echo base_url();?>purchaseorder/getStatusByDepartment", - success:function(json) { - - $('#content').loader('hide'); - - $("#drpstatus").empty(); - $("#drpstatus").append(json.depStaus); - - } - - }); - - } - else - { - alert('Please select the Employee details'); - return false; - } - -}); - -function Search() -{ - var dept = ''; - var status =''; - //st = ''; - var val = $('#ReqDate').val(); - if($('#drpDepartment').val() != 0) - { - dept= $('#drpDepartment').val() - } - if($('#drpstatus').val() != 0) - { - status= $('#drpstatus').val() - } - var daterng = $('#ReqDate').val(); - DataColl = []; - DataColl[0] = dept; - DataColl[1] = status; - DataColl[2] = daterng; - - $('#content').loader('show'); - $.ajax({ - data:{id:DataColl}, - type:"POST", - dataType: 'json', - url:"<?php echo base_url() ?>purchaseorder/SearchListofRequistion", - success:function(json) { - // success:function(data) { - $('#content').loader('hide'); - - $("#AppendReqList").empty(); - $("#AppendReqList").append(json.ReqList); - - } - -}); - -} - -function Reset() -{ - $('#drpDepartment').val("0"); - $('#drpstatus').val("0"); - $('#ReqDate').val(''); -} -var coll = []; -var RequistionList = { - Req: [] -}; - -var Type =''; -var i=0; - - -function selectReqNo(rowId) -{ - - ckb = $('#chk'+rowId).is(':checked'); - var tr = document.getElementById(rowId); - var cellval = tr.cells; - //coo/kie_value_add = {}; - if(!ckb ) - { - - var removeItem = cellval[1].innerText; - - - $.each(RequistionList.Req, function(i, el){ - - if (this.ReqNo == removeItem){//Type = ''; - RequistionList.Req.splice(i, 1); - } - }); - - - - } - else - { - - var tr = document.getElementById(rowId); - var cellval = tr.cells; - //alert(RequistionList.Req.length); - if(RequistionList.Req.length > 0) - { - - if(Type == cellval[2].innerText ) - { - - RequistionList.Req.push({ - "ReqNo" : cellval[1].innerText, - "ReqType" : cellval[2].innerText, - "ReqBy" : cellval[3].innerText, - - }); - - } - - else - { - alert('Same type of Requistion only can be together.') - $('#chk'+rowId).attr('checked', false); - } - - } - else - { - - - RequistionList.Req.push({ - "ReqNo" : cellval[1].innerText, - "ReqType" : cellval[2].innerText, - "ReqBy" : cellval[3].innerText, - }); - Type =cellval[2].innerText; - - } - - i= i +1; - } - - $('#txtReqNo').val(JSON.stringify(RequistionList)); - -} -$("#myModal").on("shown.bs.modal", function(e) { - var ReqId = $(e.relatedTarget).data('userid'); - $('#SelReqNo').html(ReqId); - //alert(ReqId); - $('#content').loader('show'); - $.ajax({ - data:{id:ReqId}, - type:"POST", - dataType: 'json', - url:"<?php echo base_url() ?>requisitionform/ViewRequest", - success:function(json) { - $('#content').loader('hide'); - //alert(json.Requist[0]['ReqDate']); - $("#ReqType").val(json.Requist[0]['ReqType']); - $("#ReqBy").val(json.Requist[0]['FirstName']); - $("#RequistionDate").val(json.Requist[0]['ReqDate']); - $("#Desigination").val(json.Requist[0]['Designation']); - $("#CostCenter").val(json.Requist[0]['CostCenterCode']); - $("#AvlBudgetAmount").val(json.AvilBudAmount); - - $("#tbleAppend").empty(); - $("#tbleAppend").append(json.Items); - - } - -}); - -}); - -function Validate() -{ - var ReqNo = $('#txtReqNo').val(); - if(ReqNo.length <=0 ) - { - alert('Please select the Requisition Number to Create Purchase Order' ); - return false; - } - else - { - return true; - } -} -$(function () { - //$("#revenueTax").DataTable(); - $('#REQLIST').DataTable({ - "paging": true, - "lengthChange": true, - "searching": true, - "ordering": true, - "info": true, - "autoWidth": true - - }); - }); - - </script> - \ No newline at end of file diff --git a/application/views/create_pdf.php b/application/views/create_pdf.php deleted file mode 100644 index 27cedb3f..00000000 --- a/application/views/create_pdf.php +++ /dev/null @@ -1,324 +0,0 @@ -<?php - -$PONO = ''; -$POType = ''; -$PODate= ''; -$SupplierName = ''; -$Address = ''; -$SpecialOrder = ''; -$Username = ''; -$RequesterEmail = ''; -$RequesterPh = ''; -$RequestedDate = ''; -$BudgetManager = ''; -$BudgetManagerDepartment = ''; -$PurchasingCategory = ''; -$PurchasingJustification = ''; -$OrderValue = ''; -$DiscountType = ''; -$DiscountValue = ''; -$PackagingType = ''; -$PackagingValue = ''; -$ExciseDuty = ''; -$Vat = ''; -$Freight = ''; -$SupplierName = ''; -$Address = ''; - - -if(!empty($PODetail)) -{ - foreach ($PODetail as $PO) - { - $PONO = $PO->PONO; - $POType = $PO->POType; - $PODate = $PO->PODate; - $SupplierName = $PO->SupplierName; - $SpecialOrder = $PO->SpecialOrder; - $Username = $PO->name; - $RequesterEmail =$PO->RequesterEmail; - $RequesterPh = $PO->RequesterPh; - $RequestedDate = $PO->RequestedDate; - $BudgetManager= $PO->BudgetManager; - $BudgetManagerDepartment = $PO->BudgetManagerDepartment; - $PurchasingCategory = $PO->PurchasingCategory; - $PurchasingJustification = $PO->PurchasingJustification; - $OrderValue = $PO->OrderValue; - $DiscountType= $PO->DiscountType; - $DiscountValue= $PO->DiscountValue; - $PackagingType = $PO->PackagingType; - $PackagingValue= $PO->PackagingValue; - $ExciseDuty= $PO->ExciseDuty; - $Vat = $PO->Vat; - $Freight = $PO->Freight; - $Address = $PO->Address; - } -} - - -?> - - <div class="content-wrapper"> - <!-- Content Header (Page header) --> - <div> - <h4> - <h3> Siddharth Industries</h3><br/> - Survey NO: 168/1C3,<br/> - Pennalur Pet Road, - Goonipalyam village,<br/> - Uthukottai Taluk, - Tiruvallur Dist,<br/> - Tamilnadu,Pin code : 602026.<br/> - Email: customersupport@sidharthindustries.com - </h4> - </div> - - <section class="content-header"> - <center> - <h1><b>Purchase Order - <?php echo $PONO ?> </b> </h1> - </center> - </section> - <section class="content"> - - <div class="row"> - <!-- left column --> - <div class="col-md-12"> - <!-- general form elements --> - <div class="box box-primary"> - <div class="box-header"> - <form role="form" id="addUser" action="" name="addUser" method="post" role="form"> - <div class="box-body"> - <div class="row"> - <div class="col-md-6"> - <div class="form-group"> - <label for="PO_Type">PO Type : </label> - <?php echo $POType;?> - </div> - </div> - <div class="col-md-6"> - <div class="form-group"> - <label for="PO_Date">PO Date : </label> - <?php echo $PODate; ?> - </div> - </div> - - </div> - <div class="row"> - <div class="col-md-6"> - <div class="form-group"> - <label for="SupplierID">Supplier Name : </label> - <select class="form-control required" id="SupplierID" readonly name="SupplierID"> - <?php echo $SupplierName; ?> - - </div> - </div> - <div class="col-md-6"> - <div class="form-group"> - <label for="SupplierAddress">Supplier's Address :</label> - <?php echo $Address; ?> - </div> - </div> - - </div> - <div class="row"> - <div class="col-md-6"> - <div class="form-group"> - <label for="role">Requested By :</label> - <?php echo $Username;?> - - </select> - </div> - </div> - - <div class="col-md-6 "> - <div class="form-group"> - <label for="re_email">Requester Email :</label> - <?php echo $RequesterEmail; ?> - </div> - </div> - - </div> - <div class="row"> - <div class="col-md-6 "> - <div class="form-group"> - <label for="re_phone">Requesters Phone :</label> - <?php echo $RequesterPh;?> - </div> - </div> - <div class="col-md-6"> - <div class="form-group"> - <label for="re_Date">Requested Date :</label> - <?php echo $RequestedDate; ?> - </div> - </div> - </div> - <div class="row"> - <div class="col-md-6"> - <div class="form-group"> - <label for="bud_manager">Budget Manager : </label> - <?php echo $BudgetManager; ?> - </div> - </div> - <div class="col-md-6"> - <div class="form-group"> - <label for="bud_manager_de">Budget Manager Department : </label> - <?php echo $BudgetManagerDepartment; ?> - </div> - </div> - </div> - <div class="row"> - <div class="col-md-6"> - <div class="form-group"> - <label for="Pur_category">Purchasing Category : </label> - <?php echo $PurchasingCategory; ?> - </div> - </div> - <div class="col-md-6"> - <div class="form-group"> - <label for="SpecialOrder">Special Requirement of order : </label> - <?php echo $SpecialOrder; ?> - </div> - </div> - </div> - <div class="row"> - <label for="Justification">Justification for the Purchase : </label> - <?php echo $PurchasingJustification; ?> - </div> - </div> - - - <div class="col-md-12" > - <div><b><u>Purchase Order Line Item : </u><b> </div> - <div class="col-md-12 col-xs-12" style="border:1px solid #000"> - <table id="POLineItem" class="table table-hover" cellpadding="10" > - <tr style="background-color:powderblue;"> - <th text-align="center" nowrap >Product Description</th> - <th text-align="center" nowrap>UOM</th> - <th text-align="center" nowrap >Quantity</th> - <th text-align="center" nowrap >Unit Price</th> - <th text-align="center" nowrap>Product Amount</th> - </tr> - <tbody id="tempAppend"> - <?php $TotalAmount = 0.00; - - if(!empty($POLineItem)) - { - - foreach ($POLineItem as $us) - { - ?> - <tr border="1"> - <td align="left"><?php echo $us->materialName?></td> - <td align="left"><?php echo $us->UOM ?></td> - <td align="left"><?php echo $us->Quantity ?></td> - <td align="left"><?php echo $us->UnitPrice ?></td> - <td align="left"><?php echo $us->ProductPrice ?></td> - - </tr> - <?php $TotalAmount = $TotalAmount + $us->ProductPrice; - } - } - ?> - </tbody> - - </table> - <div class="col-md-12" style="border:1px solid #000"> - <div class="row"> - <div class="col-md-offset-3 col-md-3"> - <label for="Basic_Value">Basic Value : </label> - <?php echo $TotalAmount ?> - </div> - </div> - <br> - <div class="row"> - <div class="col-md-offset-3 col-md-3"> - <label for="Discount_Value">Discount : </label> - <?php echo $DiscountType; ?> -- - <?php echo $DiscountValue; ?> - </div> - </div> - <br> - <div class ="col-md-offset-6 col-md-6" style="border-bottom:1px solid black"></div> - <br> - <div class="row"> - <div class="col-md-offset-3 col-md-3"> - <label for="AfterDiscount_Value">After Discount : </label> - <input type="text" class="form-control required digits" id="AfterDiscount" maxlength="12" readonly name="AfterDiscount"> - </div> - </div> - <br> - <div class="row"> - <div class="col-md-offset-3 col-md-3"> - <label for="Packaging">Packaging : </label> - <?php echo $PackagingType; ?> -- - <?php echo $PackagingValue; ?> - </div> - </div> - <br> - <div class ="col-md-offset-6 col-md-6" style="border-bottom:1px solid black"></div> - <br> - <div class="row"> - <div class="col-md-offset-3 col-md-3"> - <label for="AfterPackaging">After Packaging : </label> - <input type="input" class="form-control required digits" readonly id="AfterPackaging" style="float:left; text-align:left" name="AfterPackaging"> - </div> - </div> - <br> - <div class="row"> - <div class="col-md-offset-3 col-md-3"> - <label for="ExciseDuty">Excise duty @ 12.5% : </label> - <?php echo $ExciseDuty; ?> - </div> - </div> - <br> - <div class="row"> - <div class="col-md-offset-3 col-md-3"> - <label for="AfterExciseDuty">After Excise duty : </label> - <input type="input" class="form-control required digits" id="AferExciseduty" readonly style="float:left; text-align:left" name="AferExciseduty"> - </div> - </div> - <br> - <div class="row"> - <div class="col-md-offset-3 col-md-3"> - <label for="Vat">Vat : </label> - <?php echo $Vat; ?> - </div> - </div> - <br> - <div class ="col-md-offset-6 col-md-6" style="border-bottom:1px solid black"></div> - <br> - <div class="row"> - <div class="col-md-offset-3 col-md-3"> - <label for="AfterVat">After Vat : </label> - <input type="input" class="form-control required digits" readonly id="txtAfterVat" style="float:left; text-align:left" name="txtAfterVat"> - </div> - </div> - <br> - <div class="row"> - <div class="col-md-offset-3 col-md-3"> - <label for="Freight">Freight : </label> - <?php echo $Freight; ?> - </div> - </div> - <br> - <div class ="col-md-offset-6 col-md-6" style="border-bottom:1px solid black"></div> - <br> - <div class="row"> - <div class="col-md-offset-3 col-md-3"> - <label for="Total_Order_Value ">Total Order Value : </label> - <input type="number" class="form-control required digits" style="float:left; text-align:left" id="txtOrderValue" readonly name="txtOrderValue"> - </div> - </div> - </div> - </div><!-- /.box-body --> - </div> - </form> - - </div> - </div> - </div> - </div> - </section> -</div> - - diff --git a/application/views/dashboard.php b/application/views/dashboard.php deleted file mode 100644 index bef767b1..00000000 --- a/application/views/dashboard.php +++ /dev/null @@ -1,138 +0,0 @@ -<?php -$Empcnt = ''; -//echo $DEPCode; -//echo ROLE_MANAGER; -if(!empty($EmpCount)) -{ - foreach ($EmpCount as $Emp) - { - $Empcnt = $Emp->EmpCount; - } - - -} -?> -<div class="content-wrapper"> - <section class="content"> - <!-- Dashboard for Account department--> - <?php - if($DEPCode == FINANCE) - { - ?> - <div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <center><h1> Accounts Department Dashboard</h1> </center> - </section> - <!-- Main content --> - <section class="content"> - <!-- Info boxes --> - <center> - <div class="row"> - <!-- fix for small devices only --> - <div class="clearfix visible-sm-block"></div> - <div class="col-md-4 col-md-offset-4 col-sm-6 col-xs-12"> - <div class="info-box"> - <span class="info-box-icon bg-yellow"><i class="ion ion-ios-people-outline"></i></span> - <div class="info-box-content"> - <span class="info-box-text">Employees</span> - <span class="info-box-number"><?php echo $Empcnt ?></span> - </div> - </div> - </div> - </div> - </center> - <div> - <marquee direction="up" scrollamount="2" height="150px;"> <font color="Brown"> <h1><b>Guidelines:</b></h1><h3> # PaySlip menu in header has two sub menu ( 1.Upload Salary , 2.PaySlip Generator)<br/><br/> - # Upload salary menu is used to upload the Salary Excel file into the database<br/><br/> - # Payslip generator menu is to generate the salary slip for individual Employess or All Employees</h3> - </center> </font></marquee> - </div> - </section> - </div> - - <?php - } - ?> - <!-- Dashboard for admin--> - <?php - if($role == ROLE_ADMIN) - { - ?> - <div class="content"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> Admin Dashboard </h1> - </section> - <!-- Main content --> - <section class="content"> - <div class="row"> - - - <!-- ./col --> - <div class=" col-xs-12 col-md-4 col-md-offset-4"> - <!-- small box --> - <div class="small-box bg-yellow"> - <div class="inner"> - <h3>44</h3> - - <p>User Registrations</p> - </div> - <div class="icon"> - <i class="ion ion-person-add"></i> - </div> - <a href="<?php echo base_url(); ?>userListing" class="small-box-footer">More info <i class="fa fa-arrow-circle-right"></i></a> - </div> - </div> - - <!-- ./col --> - </div> - </section> - <!-- /.content --> - </div> - - - <?php - } - ?> - - <!-- Dashboard for Manager department--> - <?php - if($role == ROLE_MANAGER) - { - ?> - <div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <center><h1> Manager Department Dashboard</h1> </center> - </section> - <!-- Main content --> - <section class="content"> - <!-- Info boxes --> - <center> - <div class="row"> - <!-- fix for small devices only --> - <div class="clearfix visible-sm-block"></div> - <div class="col-md-4 col-md-offset-4 col-sm-6 col-xs-12"> - <div class="info-box"> - <span class="info-box-icon bg-yellow"><i class="ion ion-ios-people-outline"></i></span> - <div class="info-box-content"> - <span class="info-box-text">Employees</span> - <span class="info-box-number"><?php echo $Empcnt ?></span> - </div> - </div> - </div> - </div> - </center> - <div> - <marquee direction="up" scrollamount="2" height="150px;">Hi This Is Manager Login </marquee> - </div> - </section> - </div> - - <?php - } - ?> - - </section> -</div> \ No newline at end of file diff --git a/application/views/editEmployee.php b/application/views/editEmployee.php deleted file mode 100644 index 88646dec..00000000 --- a/application/views/editEmployee.php +++ /dev/null @@ -1,762 +0,0 @@ -<?php - - $EmpID = ''; - $FirstName = ''; - $LastName = ''; - $FatherName =''; - $Gender =''; - $DateofBirth = ''; - $ContactNumber =''; - $EmailId = ''; - $BloodGroup =''; - $MartialStatus= ''; - $DateofJoining = ''; - $PreviousYearsOfExp = ''; - $Designation = ''; - $Departmentcode = ''; - $PresentAddress =''; - $PermanentAddress = ''; - $EmergencyContactName = ''; - $EmergencyContactNumber = ''; - $Edu_Qualification = ''; - $Additional_Qualification = ''; - $AadharNo = ''; - $PANNo = ''; - $BankAccountNo = ''; - $IFSCCode =''; - $BankBranchName = ''; - $BankAddress = ''; - $PassportNo = ''; - $Passport_Valid_till = ''; - $IsActive = ''; - $ProfilePic = ''; - $Reference_Name = ''; - $Reference_ContactNumber = ''; - $Remarks = ''; - $DepartmentName = ''; - $DOPassport = ''; - $Age = ''; - $DOB = ''; - $DOJ = ''; -if(!empty($EmpDetails)) -{ - foreach ($EmpDetails as $Emp) - { - $EmpID = $Emp->EmpID; - $FirstName = $Emp->FirstName; - $LastName = $Emp->LastName; - $FatherName = $Emp->FatherName; - $Gender = $Emp->Gender; - $DateofBirth = $Emp->DateofBirth; - $from = new DateTime($DateofBirth); - $to = new DateTime('today'); - $Age = $from->diff($to)->y; - $DOB = $from ->format('Y-m-d'); - $ContactNumber = $Emp->ContactNumber; - $EmailId = $Emp->EmailId; - $BloodGroup = $Emp->BloodGroup; - $MartialStatus =$Emp->MartialStatus; - $DateofJoining = $Emp->DateofJoining; - $dtDOJ = new DateTime($DateofJoining); - $DOJ = $dtDOJ ->format('Y-m-d'); - $PreviousYearsOfExp = $Emp->PreviousYearsOfExp; - $Designation = $Emp->Designation; - $Departmentcode = $Emp->Departmentcode; - $DepartmentName = $Emp->DepartmentName; - $PresentAddress = $Emp->PresentAddress; - $PermanentAddress = $Emp->PermanentAddress; - $EmergencyContactName = $Emp->EmergencyContactName; - $EmergencyContactNumber = $Emp->EmergencyContactNumber; - $Edu_Qualification = $Emp->Edu_Qualification; - $Additional_Qualification = $Emp->Additional_Qualification; - $AadharNo = $Emp->AadharNo; - $PANNo = $Emp->PANNo; - $BankAccountNo = $Emp->BankAccountNo; - $IFSCCode = $Emp->IFSCCode; - $BankBranchName = $Emp->BankBranchName; - $BankAddress = $Emp->BankAddress; - $PassportNo = $Emp->PassportNo; - $Passport_Valid_till = $Emp->Passport_Valid_till; - if($Passport_Valid_till != '') - { - $dtpassport = new DateTime($Passport_Valid_till); - $DOPassport = $dtpassport ->format('Y-m-d'); - } - $IsActive = $Emp->IsActive; - $ProfilePic = $Emp->ProfilePic; - $Reference_Name = $Emp->Reference_Name; - $Reference_ContactNumber = $Emp->Reference_ContactNumber; - $Remarks = $Emp->Remarks; - - } -} - - -?> - -<script> - function readURL(input) { - if (input.files && input.files[0]) { - var reader = new FileReader(); - - reader.onload = function (e) { - $('#profilepicture') - .attr('src', e.target.result) - .width(166) - .height(166); - }; - - reader.readAsDataURL(input.files[0]); - } - } - -$(function(){ - $('#checksame').click(function(){ - if ($('#checksame').prop('checked')) - - { - - $('#permanentaddress').val($('#currentaddress').val()); - - } - else - { - $('#permanentaddress').val(''); - } - - }); -}); - - - - function isNumberKey(evt) - { - var charCode = (evt.which) ? evt.which : evt.keyCode; - if (charCode != 46 && charCode > 31 - && (charCode < 48 || charCode > 57)) - return false; - - return true; - } - -//PAN Validate -function validatePAN() { - var reg = /(?=.*[A-Za-z]).{5,}(?=.*[0-9]).{4,}(?=.*[A-Za-z]).{1,}$/; - - var PAN = $('#panno').val(); - - if(PAN != '') - { - if (reg.test(PAN) == false) - { - alert('Please Enter Valid PAN Number'); - return (false); - } - else - { - return true; - } - } - -} -function Validate() -{ - if($("#FirstName").val().length < 1) - { - alert('Please Enter FirstName'); - return; - } - if($("#LastName").val().length < 1) - { - alert('Please Enter LastName'); - return; - } - if($("#FatherName").val().length < 1) - { - alert('Please Enter FatherName'); - return; - } - if($("#DateofBirth").val().length < 1) - { - alert('Please Enter Date of Birth'); - return; - } - if ( $('#ContactNumber').val().length < 1 ) - { - alert('Please Enter Contact Number'); - return; - } - else if(!getMobileValidation()) - { return;} - - - if($("#emailid").val().length < 1) - { - alert('Please Enter Email ID'); - return; - } - else if(!validateEmail()) - { - return; - } - - - if($("option:selected", $("#gender")).val() == '-1') - { - alert('Please Select Gender'); - return; - } - - if($("option:selected", $("#MartialStatus")).val() == "-1") - { - alert('Please Select Martial Status'); - return; - } - - if($("option:selected", $("#bloodgroup")).val() == "-1") - { - alert('Please Select Blood group '); - return; - } - if($("#currentaddress").val().length < 1) - { - alert('Please Enter Current Address'); - return; - } - if($("#permanentaddress").val().length < 1) - { - alert('Please Enter Permanent Address'); - return; - } - if($("#emergencycontactname").val().length < 1) - { - alert('Please Enter Emergency Contact Name'); - return; - } - if($("#emergencycontactnumber").val().length < 1) - { - alert('Please Enter Emergency Contact Number'); - return; - } - else if(!getValidEmergencyNumber()) - { return;} - - - - - if($("#referrercontno").val().length > 0) - { - getValidReferNumber(); - } - - if($("#passportno").val().length > 1) - { - ValidatePassport(); - - } - -} -function getMobileValidation() { - var contactNumber = $('#ContactNumber').val().length; - if(contactNumber < 10) - { - alert('Please Enter valid Contact Number'); - return false; - } - else - { - return true; - } -} -function getValidEmergencyNumber() { - var contactNumber = $('#emergencycontactnumber').val().length; - if(contactNumber < 10) - { - alert('Please Enter valid Emergency Contact Number'); - return false; - } - else - { - return true; - } -} -function getValidReferNumber() { - var contactNumber = $('#referrercontno').val().length; - if(contactNumber > 0 && contactNumber < 10) - { - alert('Please Enter valid Refernce Contact Number'); - return false; - } - else - { - return true; - } -} -function validateEmail() { - var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; - - var email = $('#emailid').val(); - - if(email != '') - { - if (reg.test(email) == false) - { - alert('Please Enter Valid Email Address'); - return (false); - } - else - { - return true; - } - } - -} -function getAge() { - - var dateString = $("#DateofBirth").val(); - - var today = new Date(); - var birthDate = new Date(dateString); - - - var age = today.getFullYear() - birthDate.getFullYear(); - var m = today.getMonth() - birthDate.getMonth(); - if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) { - age--; - } - $("#age").val(age); - -} - -$(function() { - var d = new Date(); - - var month = d.getMonth(); - var day = d.getDate(); - var year = d.getFullYear() ; - var SIAStartYear = year - 2015; - var mindt = year-70; - var maxdt = year-15; - - $("#DateofBirth").datepicker({ - minDate : new Date(mindt,1,1), - maxDate : new Date(maxdt,1,1), - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true,yearRange: '-100:+0' - - -}); - $("#dateofjoining").datepicker({ - minDate : new Date(year-SIAStartYear,1,1), - maxDate :'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true, - - -}); - $("#ValidTill").datepicker({dateFormat: 'mm/dd/yy',minDate :'now',changeMonth: true, changeYear: true,yearRange: '-0:+100' -}); - -}); - -function resetphoto() -{ - - $("#photo").src(""); -} - -function ValidatePassport() -{ - var regsaid = /^[A-PR-WY][1-9]\d\s?\d{4}[1-9]$/ig; - var passport = $("#passportno").val(); - //alert(passport); - if(regsaid.test(passport) == false) - { - alert('You have entered invalid Passport.'); - return; - } - -} - -</script> - <style> - legend{ - color:#00c0ef ! important; - } - .form-group - { - padding-bottom:4%; - } - .pad{ - padding-bottom:1%; - } - .badge - { - color:red; background-color:#fff; - } - </style> - -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - <CENTER>Siddharth Industries Employee Profile</CENTER> - - </h1> - - </section> - - <section class="content"> - <div style="text-align:right;"> - <a href="<?php echo base_url() ?>employeeListing" class="btn btn-info" value="Back">Back</a> - </div> - <br/> - <div class="row"> - <!-- left column --> - <div class="col-md-12"> - <!-- general form elements --> - - <div class="box box-primary"> - <!-- /.box-header --> - <!-- form start --> - - -<form role="form" id="addemployee" action="<?php echo base_url() ?>employeedetails/UpdateEmployee" method="post" enctype="multipart/form-data"> - - <div class="row"> - <div class="col-md-10 col-md-offset-1" style="border:3px solid #3c8dbc;"> - <form class="form-horizontal" role="form" > - <fieldset> - - <!-- Form Name --> - <legend>Personal Information</legend> - - <div class="col-md-12"> - <div class="col-md-3"> - <div class="box-header"> - <img id="profilepicture" src="<?php echo base_url().'uploads/images/'.$ProfilePic ; ?>" alt="your image" style="width: 139px;"/><br/> - <input type='file' onchange="readURL(this);" id="photo" name="photo"/> - <label for="photo">Select profile picture<br/><small>(only .jpg or .png)</small></label> - - <input type="hidden" name="Image" id="Image" value="<?php echo $ProfilePic ; ?>" class="form-control" readonly> - <input type="text" name="employeeid" id="employeeid" value="<?php echo $EmpID ; ?>" placeholder="Employee ID" class="form-control" readonly> - <br/><input type="checkbox" id="isactive" value="<?php echo $IsActive ; ?>" name="isactive" onclick="checkactive"> IsActive - </div> - </div> - <div class="col-md-9"> - - <div class="col-md-6 pad"> - <span>First Name</span><span class="badge">*</span> - <input type="text" name="FirstName" maxlength="100" value="<?php echo $FirstName ; ?>" id="FirstName" placeholder="First Name" class="form-control" required> - </div> - - <div class="col-md-6 pad"><span>Last Name</span><span class="badge">*</span> - <input type="text" name="LastName" maxlength="100" id="LastName" value="<?php echo $LastName ; ?>" placeholder="Last Name" class="form-control" required> - </div> - <div class="col-md-6 pad"><span>Father / Husband Name</span><span class="badge">*</span> - <input type="text" name="FatherName" id="FatherName" maxlength="200" value="<?php echo $FatherName ; ?>" placeholder="Father / Husband Name" class="form-control" required> - </div> - <div class="col-md-6 pad"><span>Date Of Birth</span><span class="badge">*</span> - <input id="DateofBirth" required name="DateofBirth" value="<?php echo $DOB ; ?>" maxlength="10" placeholder="Date Of Birth" onchange="getAge();" class="form-control"> - </div> - - <div class="col-md-6 pad"><span>Age</span><span class="badge">*</span> - <input type="text" name="age" placeholder="Age" id="age" value="<?php echo $Age ; ?>" class="form-control" readonly> - </div> - <div class="col-md-6 pad"><span>Contact Number</span><span class="badge">*</span> - <input type="text" name="ContactNumber" value="<?php echo $ContactNumber ; ?>" onchange="getMobileValidation();" onkeypress="return event.charCode >= 48 && event.charCode <= 57" id="ContactNumber" required placeholder="Contact Number" maxlength="10" class="form-control"> - </div> - <div class="col-md-6 pad"><span>Email ID</span><span class="badge">*</span> - <input type="mail" name="emailid" value="<?php echo $EmailId ; ?>" id="emailid" placeholder="Email ID" maxlength="100" class="form-control"> - </div> - - <div class="col-md-6 pad"><span>Gender</span><span class="badge">*</span> - <select id="gender" name="gender" type="text" placeholder="Gender" required class="form-control"> - <option value="<?php echo $Gender ; ?>"><?php echo $Gender; ?></option> - <?php - if(!empty($GenderList)) - { - foreach ($GenderList as $rl) - { - ?> - <option value="<?php echo $rl->ConfigValue ?>"><?php echo $rl->ConfigValue ?></option> - <?php - } - } - ?> - </select> - </div> - - <div class="col-md-6 pad"><span>Marital Status</span><span class="badge">*</span> - <select id="MartialStatus" name="MartialStatus" type="text" required placeholder="Marital status" class="form-control"> - <option value="<?php echo $MartialStatus?>"><?php echo $MartialStatus; ?></option> - <?php - if(!empty($MartialList)) - { - foreach ($MartialList as $rl) - { - ?> - <option value="<?php echo $rl->ConfigValue ?>"><?php echo $rl->ConfigValue ?></option> - <?php - } - } - ?> - </select> - </div> - - - <div class="col-md-6 pad"><span>Blood group</span><span class="badge">*</span> - <select id="bloodgroup" name="bloodgroup" required class="form-control"> - <option value="<?php echo $BloodGroup ; ?>"><?php echo $BloodGroup ?></option> - <?php - if(!empty($BloodGroupList)) - { - foreach ($BloodGroupList as $rl) - { - ?> - <option value="<?php echo $rl->ConfigValue ?>"><?php echo $rl->ConfigValue ?></option> - <?php - } - } - ?> - </select> - </div> - </div> -</div> - - - -<!-- Address Section --> - <!-- Form Name --> - <legend>Address Details</legend> - <!-- Text input--> - <div class="form-group"> - <div class="col-md-12"><span>Current Address</span><span class="badge">*</span> - <input type="text" id="currentaddress" required name="currentaddress" value="<?php echo $PresentAddress ; ?>" maxlength="500" placeholder="Current Address" class="form-control"> - </div> - </div> - <div class="form-group"> - <div class="col-md-10"> - <input type="checkbox" id="checksame" name="sameaddress" onclick="CheckClick"> Current address same as permanent address - </div> - </div> - <!-- Text input--> - <div class="form-group"> - <div class="col-md-12"><span>Permanent Address</span><span class="badge">*</span> - <input type="text" id="permanentaddress" required name="permanentaddress" value="<?php echo $PermanentAddress; ?>" maxlength="500" placeholder="Permanent Address " class="form-control"> - </div> - </div> - <!-- Text input--> - - - -<!-- Emergency Contact Section --> - <!-- Form Name --> - <legend>Emergency Contact Information</legend> - <!-- Text input--> - <div class="form-group"> - <div class="col-md-6"><span>Emergency Contact Name</span><span class="badge">*</span> - <input type="text" id="emergencycontactname" maxlength="100" required name="emergencycontactname" value="<?php echo $EmergencyContactName ; ?>" placeholder="Emergency Contact Name" class="form-control"> - </div> - <div class="col-md-6"><span>Emergency Contact Number</span><span class="badge">*</span> - <input type="text" id="emergencycontactnumber" required name="emergencycontactnumber" onchange="getValidEmergencyNumber();" onkeypress="return event.charCode >= 48 && event.charCode <= 57" maxlength="10" value="<?php echo $EmergencyContactNumber; ?>" placeholder="Emergency Contact Number" class="form-control"> - </div> - - </div> - - -<!-- profile Section --> - <!-- Form Name --> - <legend>Work Profile</legend> - <!-- Text input--> - - <div class="form-group"> - <div class="col-md-3"><span>Designation</span><span class="badge">*</span> - <select type="text" id="desigination" name="desigination" required class="form-control"> - <option value="<?php echo $Designation ; ?>"><?php echo $Designation; ?></option> - <?php - if(!empty($DesignationList)) - { - foreach ($DesignationList as $rl) - { - ?> - <option value="<?php echo $rl->ConfigValue ?>"><?php echo $rl->ConfigValue ?></option> - <?php - } - } - ?> - </select> - - </div> - <div class="col-md-3"><span>Department</span><span class="badge">*</span> - <select type="text" id="departmentname" name="departmentname" required class="form-control"> - <option value="<?php echo $Departmentcode; ?>"><?php echo $Departmentcode." - ".$DepartmentName ;?></option> - <?php - if(!empty($DepartmentList)) - { - foreach ($DepartmentList as $rl) - { - ?> - <option value="<?php echo $rl->DEPCode ?>"><?php echo $rl->DEPCode." - " .$rl->DepartmentName ?></option> - <?php - } - } - ?> - </select> - - </div> - <div class="col-md-3"><span>Date Of Joining</span><span class="badge">*</span> - <input id="dateofjoining" name="dateofjoining" value="<?php echo $DOJ; ?>" maxlength="10" required placeholder="Date Of Joining" class="form-control"> - </div> - <div class="col-md-3"><span>Previous Years of Experience</span> - <input type="text" id="Previousexperience" value="<?php echo $PreviousYearsOfExp ; ?>" name="Previousexperience" maxlength="4" onkeypress="return isNumberKey(event)" placeholder="Previous Years of Experience" class="form-control"> - </div> - </div> - - <div class="form-group"> - <div class="col-md-3"><span>Qualification</span><span class="badge">*</span> - <select type="text" id="eduqualifaction" name="eduqualifaction" required class="form-control"> - <option value="<?php echo $Edu_Qualification; ?>"><?php echo $Edu_Qualification ; ?></option> - <?php - if(!empty($QualificationList)) - { - foreach ($QualificationList as $rl) - { - ?> - <option value="<?php echo $rl->ConfigValue ?>"><?php echo $rl->ConfigValue ?></option> - <?php - } - } - ?> - </select> - - </div> - <div class="col-md-3"><span>Additional Qualification</span> - <input type="text" id="addqualification" name="addqualification" value="<?php echo $Additional_Qualification ; ?>" maxlength="100" placeholder="Additional Qualification" class="form-control"> - </div> - <div class="col-md-3"><span>Referred By</span> - <input type="text" id="referredby" name="referredby" value="<?php echo $Reference_Name ; ?>" placeholder="Referred By" maxlength="100" class="form-control"> - </div> - <div class="col-md-3"><span>Referrer Contact Number</span> - <input type="text" id="referrercontno" name="referrercontno" value="<?php echo $Reference_ContactNumber ; ?>" onchange="getValidReferNumber();" maxlength="10" onkeypress="return event.charCode >= 48 && event.charCode <= 57" placeholder="Referrer Contact Number" class="form-control"> - </div> - </div> - - <legend>Bank Details</legend> - <!-- Text input--> - - <div class="form-group"> - <div class="col-md-3"><span>Account Number</span> - <input type="text" id="accountno" onkeypress="return event.charCode >= 48 && event.charCode <= 57" maxlength="20" name="accountno" placeholder="Account Number" class="form-control" value="<?php echo $BankAccountNo ; ?>"> - </div> - <div class="col-md-3"><span>IFSC Code</span> - <input type="text" id="ifsccode" name="ifsccode" placeholder="IFSC Code" maxlength="12" class="form-control" value="<?php echo $IFSCCode ; ?>"> - </div> - <div class="col-md-3"><span>Bank Branch Name</span> - <input type="text" id="bankbranchname" maxlength="200" name="bankbranchname" placeholder="Bank Branch Name" class="form-control" value="<?php echo $BankBranchName ; ?>"> - </div> - <div class="col-md-3"><span>Bank Address</span> - <input type="text" id="bankaddress" maxlength="200" name="bankaddress" placeholder="Bank Address" class="form-control" value="<?php echo $BankAddress ; ?>"> - </div> - </div> - - <legend>ID Proof</legend> - <!-- Text input--> - - <div class="form-group"> - <div class="col-md-3"><span>Aadhar Number</span> - <input type="text" id="aadharno" name="aadharno" maxlength="12" placeholder="Aadhar Number" class="form-control" value="<?php echo $AadharNo ; ?>"> - </div> - <div class="col-md-3"><span>PAN Number</span> - <input type="text" id="panno" maxlength="10" name="panno" placeholder="PAN Number" onchange="validatePAN();" class="form-control" value="<?php echo $PANNo ; ?>"> - </div> - <div class="col-md-3"><span>Passport Number</span> - <input type="text" id="passportno" maxlength="8" onchange="ValidatePassport();" name="passportno" placeholder="Passport Number" class="form-control" value="<?php echo $PassportNo ; ?>"> - </div> - <div class="col-md-3"><span>Valid Till</span> - <input id="ValidTill" name="ValidTill" maxlength="10" placeholder="ValidTill" class="form-control" value="<?php echo $DOPassport ; ?>"> - </div> - </div> - - - - - <!-- Command --> - - <div class="form-group"> - <div class="col-md-3 col-md-offset-9"> - <div class="pull-right"> - <a href="<?php echo base_url() ?>employeeListing" class="btn btn-info" id="cancel" value="Cancel">Cancel</a> - - <input type="submit" onclick="Validate();" class="btn btn-primary"> - </div> - </div> - </div> - </fieldset> - </form> - </div><!-- /.col-lg-12 --> -</div><!-- /.row --> - - </form> - </div> - </div> - <div class="col-md-4"> - <?php - $this->load->helper('form'); - $error = $this->session->flashdata('error'); - if($error) - { - ?> - <div class="alert alert-danger alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('error'); ?> - </div> - <?php } ?> - <?php - $success = $this->session->flashdata('success'); - if($success) - { - ?> - <div class="alert alert-success alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('success'); ?> - </div> - <?php } ?> - - <div class="row"> - <div class="col-md-12"> - <?php echo validation_errors('<div class="alert alert-danger alert-dismissable">', ' <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button></div>'); ?> - </div> - </div> - </div> - </div> - </section> - -</div> - -<script src="<?php echo base_url(); ?>assets/js/addUser.js" type="text/javascript"></script> -<script> - - $("#emailid").change(function () { - - var id = $('#emailid').val(); - if(validateEmail()) - { - $.ajax({ - data:{id:id}, - - type:"POST", - url:"<?php echo base_url();?>employeedetails/CheckEmail", - success:function(data) { - if(data) - { - alert( data+""+" Employee already exists in the database.Please Change the mail id"); - return false; - //window.location = 'Employeedetails/employeeListing'; - } - - } - - }); - } - -}); -</script> \ No newline at end of file diff --git a/application/views/editOld.php b/application/views/editOld.php deleted file mode 100644 index c11a3add..00000000 --- a/application/views/editOld.php +++ /dev/null @@ -1,208 +0,0 @@ - - -<?php - -$EmpId = ''; -$FirstName = ''; -$LastName = ''; -$ContactNo = ''; -$EmailId = ''; -$Role = ''; -$Department = ''; -$Designation = ''; - $RoleName = ''; -if(!empty($EmpRole)) -{ - foreach ($EmpRole as $Er) - { - $Role = $Er->roleId; - $RoleName = $Er->role; - } -} - -if(!empty($EmpList)) -{ - foreach ($EmpList as $Emp) - { - $EmpId = $Emp->EmpID; - $FirstName = $Emp->FirstName; - $LastName = $Emp->LastName; - $ContactNo = $Emp->ContactNumber; - $EmailId = $Emp->EmailId; - - $Department = $Emp->DepartmentName; - $Designation = $Emp->Designation; - - } -} - - - -?> - -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - <center>User Management</center> - - </h1> - - </section> - - <section class="content"> - <div style="text-align:right;"> - <a href="<?php echo base_url() ?>userListing" class="btn btn-info" value="Back">Back</a> - </div> - <br/> - <div class="row"> - <!-- left column --> - <div class="col-md-12"> - <!-- general form elements --> - - - - <div class="box box-primary"> - <div class="box-header"> - <center><h3 class="box-title">Edit User Details</h3></center> - </div><!-- /.box-header --> - <!-- form start --> - - <form role="form" action="<?php echo base_url() ?>editUser" method="post" id="editUser" role="form"> - <div class="box-body"> - <div class="row"> - <div class="col-md-3"> - <div class="form-group"> - <label for="fname">Emp ID</label> - <input type="text" class="form-control required" value="<?php echo $EmpId ?>" readonly id="EmpList" name="EmpList" maxlength="128"> - </div> - - </div> - <div class="col-md-3"> - <div class="form-group"> - <label for="fname">First Name</label> - <input type="text" class="form-control required" value="<?php echo $FirstName ?>" readonly id="FirstName" name="FirstName" maxlength="128"> - </div> - - </div> - <div class="col-md-3"> - <div class="form-group"> - <label for="fname">Last Name</label> - <input type="text" class="form-control required" value="<?php echo $LastName ?>" readonly id="LastName" name="LastName" maxlength="128"> - </div> - - </div> - <div class="col-md-3"> - <div class="form-group"> - <label for="email">Designation</label> - <input type="text" class="form-control required " value="<?php echo $Designation ?>" readonly id="Designation" name="Designation" maxlength="128"> - </div> - </div> - </div> - - <div class="row"> - - <div class="col-md-3"> - <div class="form-group"> - <label for="mobile">Department</label> - <input type="text" class="form-control required" value="<?php echo $Department ?>" readonly id="Department" name="Department" minlength="10"maxlength="10"> - </div> - </div> - <div class="col-md-3"> - <div class="form-group"> - <label for="email">Email address</label> - <input type="text" class="form-control required email" value="<?php echo $EmailId ?>" readonly id="MailID" name="MailID" maxlength="128"> - </div> - </div> - <div class="col-md-3"> - <div class="form-group"> - <label for="mobile">Contact Number</label> - <input type="text" class="form-control required digits" value="<?php echo $ContactNo ?>" readonly id="ContactNo" name="ContactNo" minlength="10"maxlength="10"> - </div> - </div> - - - </div> - <div class="row"> - - - </div> - - <div class="row"> - <div class="col-md-3"> - <div class="form-group"> - <label for="role">Role</label> - <select class="form-control required" id="role" name="role"> - <option value="<?php echo $Role ?>"><?php echo $RoleName ?></option> - <?php - if(!empty($roles)) - { - foreach ($roles as $rl) - { - ?> - <option value="<?php echo $rl->roleId ?>"><?php echo $rl->role ?></option> - <?php - } - } - ?> - </select> - </div> - </div> - <div class="col-md-3"> - <div class="form-group"> - <label for="password">Password</label> - <input type="password" class="form-control" id="password" required name="password" maxlength="10"> - </div> - </div> - <div class="col-md-3"> - <div class="form-group"> - <label for="cpassword">Confirm Password</label> - <input type="password" class="form-control equalTo" id="cpassword" name="cpassword" maxlength="10"> - </div> - </div> - </div> - - </div><!-- /.box-body --> - - <div class="box-footer" style="text-align:right"> - <input type="submit" class="btn btn-info" value="Submit" /> - <input type="reset" class="btn btn-info" value="Cancel" /> - </div> - </form> - </div> - </div> - </div> - <div class="col-md-4"> - <?php - $this->load->helper('form'); - $error = $this->session->flashdata('error'); - if($error) - { - ?> - <div class="alert alert-danger alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('error'); ?> - </div> - <?php } ?> - <?php - $success = $this->session->flashdata('success'); - if($success) - { - ?> - <div class="alert alert-success alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('success'); ?> - </div> - <?php } ?> - - <div class="row"> - <div class="col-md-12"> - <?php echo validation_errors('<div class="alert alert-danger alert-dismissable">', ' <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button></div>'); ?> - </div> - </div> - </div> - - </section> -</div> - -<script src="<?php echo base_url(); ?>assets/js/editUser.js" type="text/javascript"></script> diff --git a/application/views/editOldPO.php b/application/views/editOldPO.php deleted file mode 100644 index 41f5fd92..00000000 --- a/application/views/editOldPO.php +++ /dev/null @@ -1,260 +0,0 @@ -<?php - - -$POType = ''; -$PODate = ''; -$SupplierID = ''; -$SpecialOrder = ''; -$UserID = ''; -$RequesterEmail = ''; -$RequesterPh = ''; -$RequestedDate = ''; -$BudgetManager = ''; -$BudgetManagerDepartment = ''; -$PurchasingCategory = ''; - - -if(!empty($POInfo)) -{ - foreach ($POInfo as $PO) - { - $POType = $PO->POType; - $PODate = $PO->PODate; - $SupplierID = $PO->SupplierID; - $SpecialOrder = $PO->SpecialOrder; - $UserID = $PO->role; - $RequesterEmail = $PO->reemail; - $RequesterPh = $PO->RequesterPh; - $RequestedDate = $PO->RequestedDate; - $BudgetManager = $PO->BudgetManager; - $BudgetManagerDepartment = $PO->BudgetManagerDepartment; - $PurchasingCategory = $PO->PurchasingCategory; - } -} - - -?> - -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - <center> Purchase Order</center> - - </h1> - </section> - - <section class="content"> - <div style="text-align:right;"> - <a href="<?php echo base_url() ?>purchaseorderListing" class="btn btn-info" value="Back"/>Back</a> - </div> - <br/> - <div class="row"> - <!-- left column --> - <div class="col-md-12"> - <!-- general form elements --> - - - - <div class="box box-primary"> - <div class="box-header"> - <h3 class="box-title">Edit Purchase Order Details</h3> - </div><!-- /.box-header --> - <!-- form start --> - - <form role="form" action="<?php echo base_url() ?>purchaseorder/editPO" method="post" id="editUser" role="form"> - <div class="box-body"> - <div class="row"> - <div class="col-md-6"> - - <div class="form-group"> - <label for="POType">PO Type</label> - <select class="form-control" name="POType" value="<?php echo $POType; ?>" required> - <option value=""></option> - <option value="Daily">Daily</option> - <option value="Weekly">Weekly</option> - <option value="Monthly">Monthly</option> - <option value="Yearly">Yearly</option> - <option value="Others">Others</option> - - </select> - </div> - - </div> - - - <div class="col-md-6"> - <div class="form-group"> - <label for="PODate">PO Date</label> - <input type="date" name="PODate" min=<?php $week = date("Y-m-d",mktime(0, 0, 0, date("m"), date("d")-7,date("Y")));echo $week;?> max=<?php echo date('Y-m-d'); ?> value="<?php echo $PODate; ?>" class="form-control" placeholder="" /> - </div> - </div> - </div> - <div class="row"> - <div class="col-md-6"> - <div class="form-group"> - <label for="SupplierID">SupplierID</label> - <select class="form-control required" id="SupplierID" name="SupplierID"> - <option value="<?php echo $SupplierID; ?>">SupplierList</option> - <?php - if(!empty($SupplierName)) - { - foreach ($SupplierName as $SID) - { - ?> - <option value="<?php echo $SID->SupplierID; ?>"><?php echo $SID->SupplierID; ?> <?php echo $SID->SupplierName; ?></option> - <?php - } - } - ?> - </select> - </div> - </div> - <div class="col-md-6"> - <div class="form-group"> - <label for="SpecialOrder">Special Requirement of order</label> - <input type="text" class="form-control required" id="SpecialOrder" name="SpecialOrder" maxlength="255" value="<?php echo $SpecialOrder; ?>"> - </div> - </div> - <div class="col-md-6"> - <div class="form-group"> - <label for="createdby">Created By</label> - <input type="text" class="form-control required" id="Special" name="Special" maxlength="255" value="<?php echo $name; ?>"readonly> - </div> - </div> - </div> - - <div class="row well"> - - <div class="col-md-6"> - <div class="form-group"> - <label for="role">UserID</label> - <select class="form-control required" id="role" name="role"> - <option value="<?php echo $role; ?>">Select Role</option> - <?php - if(!empty($users)) - { - foreach ($users as $us) - { - ?> - <option value="<?php echo $us->userId ?>"><?php echo $us->userId ?> <?php echo $us->name ?></option> - <?php - } - } - ?> - </select> - </div> - </div> - - <div class="col-md-6 "> - <div class="form-group"> - <label for="re_email">Requester Email</label> - <input type="text" class="form-control required" id="reemail" name="RequesterEmail" value="<?php echo $RequesterEmail;?>"> - </div> - </div> - - - - <div class="col-md-6 "> - <div class="form-group"> - <label for="rephone">Requesters Ph</label> - <input type="text" class="form-control required digits" id="re_phone" name="rephone" value="<?php echo $RequesterPh; ?>"> - </div> - </div> - <div class="col-md-6"> - <div class="form-group"> - <label for="re_Date">Requested Date</label> - <input type="date" name="reDate" min=<?php $week = date("Y-m-d",mktime(0, 0, 0, date("m"), date("d")-7,date("Y")));echo $week;?> max=<?php echo date('Y-m-d'); ?> value="<?php echo date('Y-m-d'); ?>" class="form-control" placeholder="" /> - </div> - </div> - - <div class="col-md-6"> - <div class="form-group"> - <label for="bud_manager">Budget Manager</label> - <select class="form-control" name="bugmanager"required> - <option value="<?php echo $BudgetManager; ?>"></option> - <option value="Daily">Daily</option> - <option value="Weekly">Weekly</option> - <option value="Monthly">Monthly</option> - <option value="Yearly">Yearly</option> - <option value="Others">Others</option> - - </select> - </div> - - </div> - <div class="col-md-6"> - <div class="form-group"> - <label for="bud_manager_de">Budget Manager Department</label> - <select class="form-control" name="budmanagerde" value=""required> - <option value="<?php echo $BudgetManagerDepartment; ?>"></option> - <option value="Daily">Daily</option> - <option value="Weekly">Weekly</option> - <option value="Monthly">Monthly</option> - <option value="Yearly">Yearly</option> - <option value="Others">Others</option> - - </select> - </div> - - </div> - <div class="col-md-6"> - <div class="form-group"> - <label for="Pur_category">Purchasing Category</label> - <select class="form-control" name="Purcategory"> - <option value="<?php echo $PurchasingCategory; ?>"></option> - <option value="Daily">Daily</option> - <option value="Weekly">Weekly</option> - <option value="Monthly">Monthly</option> - <option value="Yearly">Yearly</option> - <option value="Others">Others</option> - - </select> - </div> - - </div> - </div> - </div><!-- /.box-body --> - - <div class="box-footer" align="right"> - <input type="submit" class="btn btn-primary" value="Submit" /> - <input type="reset" class="btn btn-default" value="Reset" /> - </div> - </form> - </div> - </div> - <div class="col-md-4"> - <?php - $this->load->helper('form'); - $error = $this->session->flashdata('error'); - if($error) - { - ?> - <div class="alert alert-danger alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('error'); ?> - </div> - <?php } ?> - <?php - $success = $this->session->flashdata('success'); - if($success) - { - ?> - <div class="alert alert-success alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('success'); ?> - </div> - <?php } ?> - - <div class="row"> - <div class="col-md-12"> - <?php echo validation_errors('<div class="alert alert-danger alert-dismissable">', ' <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button></div>'); ?> - </div> - </div> - </div> - </div> -</div> - </section> -</div> - -<script src="<?php echo base_url(); ?>assets/js/editUser.js" type="text/javascript"></script> \ No newline at end of file diff --git a/application/views/editOldRawmaterial.php b/application/views/editOldRawmaterial.php deleted file mode 100644 index e029a92e..00000000 --- a/application/views/editOldRawmaterial.php +++ /dev/null @@ -1,159 +0,0 @@ -<?php - -$MaterialCode = ''; -$MaterialName = ''; -$MaterialType = ''; -$UOM = ''; -$IsActive = ''; - -if(!empty($materialDetails)) -{ - foreach ($materialDetails as $MD) - { - $MaterialCode = $MD->MaterialCode; - $MaterialName = $MD->MaterialName; - $MaterialType = $MD->MaterialType; - $UOM = $MD->UOM; - $chk = $MD->IsActive; - - if($chk == 1) - { - $IsActive = 'checked'; - } - else - { - $IsActive = ''; - } - } -} - - -?> - -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - <center>Siddharth Industries - Edit Material -<?php echo $MaterialCode; ?> </center> - - </h1> - </section> - - <section class="content"> - <div style="text-align:right;"> - <a href="<?php echo base_url() ?>rawmaterialdetails/rawmaterialListing" class="btn btn-info" value="Back"/>Back</a> - </div> - <br/> - <div class="row"> - <!-- left column --> - <div class="col-md-12"> - <!-- general form elements --> - - - - <div class="box box-primary"> - <div class="box-header"> - <center> <h3 class="box-title"></h3></center> - </div><!-- /.box-header --> - <!-- form start --> - - <form role="form" action="<?php echo base_url() ?>rawmaterialdetails/editRawmaterial" method="post" id="editRawmaterial" role="form"> - <div class="box-body"> - <div class="row"> - <div class="col-md-6"> - <div class="form-group"> - <label for="MaterialName">Material Name</label> - <input type="text" class="form-control required " id="MaterialName" name="MaterialName" maxlength="255" value="<?php echo $MaterialName;?>"> - <input type="hidden" class="form-control required " id="MaterialCode" value="<?php echo $MaterialCode;?>"name="MaterialCode" maxlength="255"> - </div> - </div> - <div class="col-md-6"> - <div class="form-group"> - <label for="MaterialType">Material Type</label> - <select class="form-control required" id="MaterialType" name="MaterialType"> - <option value="<?php echo $MaterialType;?> "><?php echo $MaterialType;?></option> - <?php - if(!empty($materialType)) - { - foreach ($materialType as $MID) - { - ?> - <option value="<?php echo $MID->ConfigValue ?>"><?php echo $MID->ConfigValue ?></option> - <?php - } - } - ?> - </select> - </div> - </div> - <div class="col-md-6"> - <div class="form-group"> - <label for="UOM">Unit of Measurement</label> - <select class="form-control required" id="UOM" name="UOM"> - <option value="<?php echo $UOM;?>" ><?php echo $UOM;?></option> - <?php - if(!empty($UOMList)) - { - foreach ($UOMList as $UM) - { - ?> - <option value="<?php echo $UM->ConfigValue; ?>"><?php echo $UM->ConfigValue ?> - <?php - } - } - ?> - </select> - </div> - </div> - <div class="col-md-3"> - <div class="form-group"> - <span for="Active">IsActive</span> <br> - <input type="checkbox" id="isactive" name="isactive" <?php echo $IsActive; ?> > - </div> - - - - </div> - </div><!-- /.box-body --> - - <div class="box-footer" style="text-align:right"> - <input type="submit" class="btn btn-info" value="Submit" /> - <!-- <input type="reset" class="btn btn-default" value="Reset" />--> - </div> - </form> - </div> - </div> - <div class="col-md-4"> - <?php - $this->load->helper('form'); - $error = $this->session->flashdata('error'); - if($error) - { - ?> - <div class="alert alert-danger alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('error'); ?> - </div> - <?php } ?> - <?php - $success = $this->session->flashdata('success'); - if($success) - { - ?> - <div class="alert alert-success alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('success'); ?> - </div> - <?php } ?> - - <div class="row"> - <div class="col-md-12"> - <?php echo validation_errors('<div class="alert alert-danger alert-dismissable">', ' <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button></div>'); ?> - </div> - </div> - </div> - </div> - </section> -</div> - -<script src="<?php echo base_url(); ?>assets/js/editUser.js" type="text/javascript"></script> \ No newline at end of file diff --git a/application/views/editOldasset.php b/application/views/editOldasset.php deleted file mode 100644 index 1502fa58..00000000 --- a/application/views/editOldasset.php +++ /dev/null @@ -1,282 +0,0 @@ -<?php - -$AssetCode = ''; -$AssetName = ''; -$Description = ''; -$Department = ''; -$Location = ''; -$User = ''; -$SupplierName = ''; -$DOPurchase = ''; -$DOCommission = ''; -$AssetValue = ''; -$AssetStatus = ''; -$IsActive =''; -$Remarks = ''; -$DepartmentName =''; -$SupplierCode = ''; -if(!empty($assetList)) -{ - foreach ($assetList as $Asset) - { - $AssetCode = $Asset->AssetCode; - $AssetName = $Asset->AssetName; - $Description = $Asset->Description; - $Department = $Asset->DEPCode ; - $DepartmentName = $Asset->DepartmentName; - $Location = $Asset->Location; - $User = $Asset->UserName; - $SupplierName = $Asset->SupplierName; - $SupplierCode = $Asset->SupplierCode; - $DateOfPurchase = $Asset->DateOfPurchase; - $DateOfCommission = $Asset->DateOfCommison; - $AssetValue = $Asset->AssetValue; - $AssetStatus = $Asset->AssetStatus; - - $Remarks = $Asset->Remarks; - $chk = $Asset->IsActive; - - if($chk == 1) - { - $IsActive = 'checked'; - } - else - { - $IsActive = ''; - } - - if($DateOfPurchase != '') - { - $dtpurchase = new DateTime($DateOfPurchase); - $DOPurchase = $dtpurchase ->format('Y-m-d'); - } - if($DateOfCommission != '') - { - $dtCommission = new DateTime($DateOfCommission); - $DOCommission = $dtCommission ->format('Y-m-d'); - } - } -} - - -?> -<script> - -$(function() { - var d = new Date(); - - var month = d.getMonth(); - var day = d.getDate(); - var year = d.getFullYear() ; - var SIAStartYear = year - 2015; - var mindt = year-70; - var maxdt = year-15; - - - $("#DateOfCommission").datepicker({ - minDate : new Date(year-SIAStartYear,1,1), - maxDate :'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true, - - - -}); - $("#DateOfPurchase").datepicker({ - minDate : new Date(year-SIAStartYear,1,1), - maxDate :'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true - - -}); - - -}); - - function isNumberKey(evt) - { - var charCode = (evt.which) ? evt.which : evt.keyCode; - if (charCode != 46 && charCode > 31 - && (charCode < 48 || charCode > 57)) - return false; - - return true; - } -</script> -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - <center>Edit Asset Details</center> - - </h1> - </section> - - <section class="content"> - <div style="text-align:right;"> - <a href="<?php echo base_url() ?>assetListing" class="btn btn-info" value="Back"/>Back</a> - </div> - <br/> - <div class="row"> - <!-- left column --> - <div class="col-md-12"> - <!-- general form elements --> - <div class="box box-primary"> - - <!-- form start --> - - <form role="form" id="addUser" action="<?php echo base_url() ?>editasset" method="post"> - - <div class="box-body"> - <div class="row"> - <div class="col-md-3"> - <div class="form-group"> - <div class="form-group"> - <span for="Asset_Name">Asset Name</span> - - <input type="text" class="form-control required" id="AssetName" name="AssetName" value="<?php echo $AssetName;?>" style="text-transform:uppercase;"> - <input type="hidden" name="AssetCode" id="AssetCode" class="form-control" readonly value="<?php echo $AssetCode;?>"> - </div> - </div> - - </div> - - - - <div class="col-md-3"> - <div class="form-group"> - <div class="form-group"> - <span for="Description">Description</span> - <input type="text" class="form-control required" id="Description" name="Description" - value="<?php echo $Description; ?>"> - </div> - </div> - - </div> - <div class="col-md-3"> - <div class="form-group"> - <div class="form-group"> - <span for="Department">Department</span> - <select class="form-control required" id="Department" name="Department"> - <option value="<?php echo $Department; ?>"><?php echo $Department.' - '.$DepartmentName; ?></option> - <?php - if(!empty($DepartmentList)) - { - foreach ($DepartmentList as $SID) - { - ?> - <option value="<?php echo $SID->DEPCode ?>"><?php echo $SID->DEPCode.' - '. $SID->DepartmentName;?></option> - <?php - } - } - ?> - </select> - </div> - </div> - - </div> - <div class="col-md-3"> - <div class="form-group"> - <div class="form-group"> - <span for="Location">Location</span> - <input type="text" class="form-control required" id="Location" name="Location" - value="<?php echo $Location;?>"> - </div> - </div> - - </div> - <div class="col-md-3"> - <div class="form-group"> - <div class="form-group"> - <span for="AssetOwner">Asset User Name</span> - <input type="text" class="form-control required" id="User" name="User" value="<?php echo $User;?>"> - </div> - </div> - - </div> - <div class="col-md-3"> - <div class="form-group"> - <span for="SupplierName">Supplier Name</span> - <select class="form-control required" id="SupplierName" name="SupplierName"> - <option value="<?php echo $SupplierCode;?>"><?php echo $SupplierCode.' - '.$SupplierName;?></option> - <?php - if(!empty($SupplierList)) - { - foreach ($SupplierList as $SID) - { - ?> - <option value="<?php echo $SID->SupplierID; ?>"><?php echo $SID->SupplierID.' - '.$SID->SupplierName ;?></option> - <?php - } - } - ?> - </select> - </div> - </div> - <div class="col-md-3"> - - <div class="form-group"> - <span for="DateOfPurchase">Date Of Purchase</span> - <input id="DateOfPurchase" required name="DateOfPurchase" onkeypress="return false;" maxlength="10" class="form-control" value="<?php echo $DOPurchase; ?>"> - </div> - </div> - - <div class="col-md-3"> - <div class="form-group"> - <span for="DateOfCommission">Date Of Commission</span> - <input id="DateOfCommission" required name="DateOfCommission" onkeypress="return false;" maxlength="10" class="form-control" value="<?php echo $DOCommission;?>"> - - </div> - </div> - - - <div class="col-md-3"> - <div class="form-group"> - <span for="Assetvalue">Asset Value</span> - <input type="text" class="form-control required" id="Assetvalue" name="Assetvalue" onkeypress="return isNumberKey(event)" maxlength="255" value="<?php echo $AssetValue;?>"> - - </div> - - </div> - - <div class="col-md-3"> - <div class="form-group"> - <span for="AssetStatus">Asset Status</span> - <select class="form-control required" id="AssetStatus" name="AssetStatus"> - <option value="<?php echo $AssetStatus; ?>"><?php echo $AssetStatus; ?></option> - <?php - if(!empty($AssetStatusList)) - { - foreach ($AssetStatusList as $SID) - { - ?> - <option value="<?php echo $SID->ConfigValue; ?>"> <?php echo $SID->ConfigValue ?></option> - <?php - } - } - ?> - </select> - </div> - </div> - - <div class="col-md-6"> - <div class="form-group"> - <span for="Remarks">Remarks</span> - - <input type="text" class="form-control required" id="Remarks" name="Remarks" maxlength="500" value="<?php echo $Remarks; ?>"> - </div> - - </div> - <div class="col-md-3"> - <input type="checkbox" id="isactive" name="isactive" <?php echo $IsActive ?> > IsActive - </div> - </div><!-- /.box-body --> - - <div class="box-footer" style="text-align:right"> - <input type="submit" class="btn btn-info" value="Submit" /> - <input type="reset" class="btn btn-info" value="Reset" /> - </div> - </form> - </div> - </div> - - diff --git a/application/views/editOldcost.php b/application/views/editOldcost.php deleted file mode 100644 index 97df7f4d..00000000 --- a/application/views/editOldcost.php +++ /dev/null @@ -1,848 +0,0 @@ -<?php - - $CostCenterCode = ''; - $CostCenterName = ''; - $ApprovedBy = ''; - $FirstName =''; - $Designation =''; - $BudYr = ''; - -if(!empty($CostMaster)) -{ - foreach ($CostMaster as $Cost) - { - - $CostCenterCode = $Cost->CostCenterCode; - - $CostCenterName = $Cost->CostCenterName; - $ApprovedBy = $Cost->ApprovedBy; - //echo $ApprovedBy; - $FirstName =$Cost->FirstName; - $Designation =$Cost->Designation; - $BudYr = $Cost->BudYear;; - } -} - - -?> - - -<script> -$(function() { - var d = new Date(); - - var month = d.getMonth(); - var day = d.getDate(); - var year = d.getFullYear() ; - var SIAStartYear = year - 2015; - var mindt = year-70; - var maxdt = year-15; - - - $("#AddYear").datepicker({ - minDate : new Date(year-SIAStartYear,1,1), - maxDate :new Date(year+3,1,1), - dateFormat: 'yy', changeYear: true, - - - -}); - $("#EditYear").datepicker({ - minDate : new Date(year-SIAStartYear,1,1), - maxDate :new Date(year+3,1,1), - dateFormat: 'yy', changeYear: true, - - - -}); - - $('#drpBudget').change(function() { - - var id = $('#drpBudget').val(); - var code = $('#CostCode').val(); - if(id != '-1') - { - $('#content').loader('show'); - - $.ajax({ - //data:{id:id}, - dataType: 'json', - type:"POST", - url:"<?php echo base_url();?>CostCenter/GetBudgetForYear?BudYear="+id+"&CostCode="+code, - success:function(json) { - //alert('success'); - //alert(json); - //alert(json.BudYear); - $("#tempAppend").empty(); - $('#tempAppend').append(json.Html); - $("#Addbudget").empty(); - $("#Addbudget").append(json.BudYear); - //$("#Addbudget").append(json.BudYear); - $('#content').loader('hide'); - //$("#Employee").append(result); - } - - }); - //$('#content').loader('hide'); - } - else - { - alert('Please select the PayOn'); - return false; - } - -}); -}); -</script> -<style> - - .ui-datepicker-month { - display: none; - } - .ui-datepicker-prev{ - display: none; - } - .ui-datepicker-next{ - display: none; - } -</style> -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - <center>Siddharth Industries - Edit Cost List</center> - - </h1> - - </section> - - <section class="content"> - <div style="text-align:right;"> - <a href="<?php echo base_url() ?>costListing" class="btn btn-info" value="Back">Back</a> - </div> - <br> - - <div class="row"> - <!-- left column --> - <div class="col-md-12"> - - - - <div class="box box-primary"> - - <!-- form start --> - <?php - $attributes = array('class' => 'form-label-left EditCost ','name' => 'EditCost','id' => 'EditCost'); - - echo form_open($this->config->base_url().'addNewcost/',$attributes); ?> - - <div class="box-body"> - <div class="row"> - <div class="col-md-12"> - <div class="col-md-3"> - <div class="form-group"> - <label for="CostName">Cost Center Code:</label><font color="Red">*</font> - - <div class="form-group"> - <?php - $data = array('name' => 'CostCode','value' => set_value( 'CostCode',$CostCenterCode ),'id'=>'c', 'class' => 'form-control' ,'readonly' => 'true' ); - echo form_input($data); - ?> - </div> - </div> - </div> - - - <div class="col-md-3"> - <div class="form-group"> - <label for="Description">Cost Center Name:</label><font color="Red">*</font> - <div class="form-group"> - <?php - $data = array('name' => 'CostName','value' => set_value('CostName',$CostCenterName),'id'=>'CostName', 'class' => 'form-control' ,'required' => 'true','style'=>'text-transform:uppercase;','maxlength'=>'20'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-3 > - <label for="CostName">Budget Year:</label><font color="Red">*</font> - - <div class="form-group"> - <?php - - $Budget[$BudYr] = $BudYr; - - - if(!empty($BudYear)) - { - foreach($BudYear as $record) - { - $Budget[$record->BudgetYear] = $record->BudgetYear ; - } - } - - echo form_dropdown('drpBudget',$Budget,set_value('drpBudget'),'id="drpBudget"', 'class = "form-control "'); ?> - - - - </div> </div> - <div class="col-md-3 > - <label for="CostName">Approved By:</label><font color="Red">*</font> - - <div class="form-group"> - <?php - - $Approved[$ApprovedBy] = $ApprovedBy . " - " . $FirstName . " - " . $Designation; - - - if(!empty($Approver)) - { - foreach ($Approver as $SID): - - - $Approved[$SID->EmpID] = $SID->EmpID . " - " . $SID->FirstName . " - " . $SID->Designation; - - endforeach; - } - - echo form_dropdown('ApprovedBy',$Approved ,set_value('ApprovedBy'),'id="ApprovedBy"', 'class = "form-control "'); ?> - - - - </div> </div> - </div> - <div class="row"> - <div class="col-md-12"> - <div class="col-md-6"> - <div class="col-md-4"> - <label>Department</label> - <div> - <?php - - $opt = array("0"=>'Select Department'); - //print_r( $options); - - if(!empty($DeptList)) - { - foreach ($DeptList as $SID): - - $opt[$SID->DEPCode] = $SID->DEPCode.' '.' - '.' '.$SID->DepartmentName; - - endforeach; - } - echo form_multiselect('distriList', $opt,set_value('distriList'),'id="distriList"' ,'class="form-control required"','required="true"'); - - ?> - </div> - </div> - <div class="col-md-4"> - <center> - <a style="color:white" href="javascript:void(0);" id="addPop"><button type="button" style="margin: 30px 0px 0px 15px;" class="btn btn-info">Add</button></a><br> - <a style="color:white" href="javascript:void(0);" id="removePop"><button type="button" style="margin: 10px 0px 0px 15px;" class="btn btn-info">Remove</button></a><br> - - </center> - </div> - <div class="col-md-4"> - <b>&nbsp;</b> - - <?php - $options["0"] = 'Selected Department'; - if(!empty($CostDepts)) - { - foreach ($CostDepts as $SID): - - $options[$SID->DEPCode] = $SID->DEPCode.' '.' - '.' '.$SID->DepartmentName; - - endforeach; - } - echo form_multiselect('selectDistriList[]', $options,set_value('selectDistriList[]'),'id="selectDistriList"','size="10"'); - - ?> - </div> - </div> - <div class="col-md-6"> - - <br/> - <input class="IsApproved" type="checkbox" name="IsApproved" id="IsApproved" > IsApproved<br> - </div> - - - </div> - </div> - <br> -<div col="row"> - <div class="col-md-12"> - <div style="text-align:right"> - - <a data-toggle="modal" href="#addbudgetmodel" class="btn btn-info"><i class="fa fa-plus"></i>&nbsp;&nbsp;Add Budget</a> - </div> - </div> - <!-- Modal --> - <div class="modal fade" id="addbudgetmodel" tabindex="-1" role="dialog" - aria-labelledby="myModalLabel" aria-hidden="true"> - <div class="modal-dialog"> - <div class="modal-content"> - <!-- Modal Header --> - <div class="modal-header"> - <button type="button" class="close" - data-dismiss="modal"> - <span aria-hidden="true">&times;</span> - <span class="sr-only">Close</span> - </button> - <h4 class="modal-title" id="myModalLabel"> - <center> Add Budget</center> - </h4> - </div> - - <!-- Modal Body --> - <div class="modal-body"> - - <form class="form-horizontal" role="form"> - <div class="form-group"> - <div class="row"> - <div class="col-md-3 col-md-offset-2"> - Budget Type : - </div> - <div class="col-md-5"> - - <?php - - $Budget = array("-1"=>'Select Budget Type'); - //print_r( $options); - - if(!empty($BudType)) - { - foreach ($BudType as $SID): - // echo $SID->ConfigValue; - $Budget[$SID->ConfigValue] = $SID->ConfigValue; - - endforeach; - } - - echo form_dropdown('Addbudget',$Budget ,set_value('Addbudget'),'id="Addbudget"', 'class = "form-control "'); ?> - - </div> - </div> - </div> - - <div class="form-group"> - <div class="row"> - <div class="col-md-3 col-md-offset-2"> - Budget Year : - </div> - <div class="col-md-5"> - - <input class="form-control" name="AddYear" class="form-control datepicker" id="AddYear" onkeypress="return false;" type="text"> - - </div> - </div> - </div> - <div class="form-group"> - <div class="row"> - <div class="col-md-3 col-md-offset-2"> - Budget Amount : - </div> - <div class="col-md-5"> - - <input class="form-control" onkeypress="return isNumberKey(event);" name="AddAmout" class="form-control" id="AddAmout" type="text"> - - </div> - </div> - </div> - <div class="form-group"> - <div class="row"> - <div class="col-md-3 col-md-offset-2"> - Remarks : - </div> - <div class="col-md-5"> - - <input class="form-control" name="AddRemarks" class="form-control" id="AddRemarks" type="text"> - </div> - </div> - </div> - </form> - </div> - - <!-- Modal Footer --> - <div class="modal-footer"> - <a class="btn btn-info font tempClick" ID="tempClick" style="margin-top: -24px;"><i class="fa fa-plus"></i>&nbsp;&nbsp;<span class="bold">Add</span></a> - <a class="btn btn-info" data-dismiss="modal" style="margin-top: -24px;" value="Cancel">cancel</a> - </div> - </div> - </div> - </div> - </div> -</div><br> - - <div class="row"> - <div class="col-md-12"> - <div class="table-responsive"> - <table id="BudgetTable" class="table table-striped responsive-utilities jambo_table" > - <thead style="background-color: #CFCFCF;"> - - <th>Budget Type</th> - <th>Budget Year</th> - <th>Budget Amount</th> - <th>Remarks</th> - <th>Action</th> - </thead> - <tbody id="tempAppend"> - <?php - $index = 0; - if(!empty($CostBudget)) - { - foreach($CostBudget as $record) - { - $index =$index + 1; - ?> - <tr id="<?php echo $index ?>"> - - <td align="left"><?php echo $record->BudgetType ?></td> - <input type="hidden" name="<?php echo 'BudgetType'.$index ?>" id="<?php echo 'BudgetType'.$index ?>" /> - <input type="hidden" name="<?php echo 'BudgetYear'.$index ?>" id="<?php echo 'BudgetYear'.$index ?>" /> - <input type="hidden" name="<?php echo 'BudgetAmount'.$index ?>" id="<?php echo 'BudgetAmount'.$index ?>" /> - <input type="hidden" name="<?php echo 'Remarks'.$index ?>" id="<?php echo 'Remarks'.$index ?>" /> - - <td align="left"><?php echo $record->BudgetYear ?></td> - - <td align="left"><?php echo $record->BudgetAmount ?></td> - - <td align="left"><?php echo $record->Remarks ?></td> - <td> - <a data-target='#Edit' data-id="<?php echo $index ?>" data-userid="<?php echo $index ?>" data-toggle="modal" href="#Edit"><i class="fa fa-pencil" data-toggle="tooltip" title="Click here to view/Edit the <?php echo $record->BudgetType ?> Budget details"></i>&nbsp;&nbsp;&nbsp;</a> - - - </td> -</tr> - <?php - } - } - - ?> - <input type="hidden" name="txtRowCount" id="txtRowCount" value="<?php echo $index ?>" /> - </tbody> - - </table> - - <!-- Modal For edit --> - <div class="modal fade" id="Edit" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> - <div class="modal-dialog"> - <div class="modal-content"> - <!-- Modal Header --> - <div class="modal-header"> - <button type="button" class="close" - data-dismiss="modal"> - <span aria-hidden="true">&times;</span> - <span class="sr-only">Close</span> - </button> - <h4 class="modal-title" id="myModalLabel"> - <center> Edit Budget</center> - </h4> - </div> - <!-- Modal Body --> - <div class="modal-body"> - - <form class="form-horizontal" role="form"> - <div class="form-group"> - <div class="row"> - <div class="col-md-3 col-md-offset-2"> - Budget Type : - </div> - <div class="col-md-5"> - <?php - $data = array('name' => 'Editbudget', 'value' => set_value('Editbudget'),'id'=>'Editbudget', 'class' => 'form-control','readonly'=>'true'); - echo form_input($data); - ?> - - - </div> - </div> - </div> - - <div class="form-group"> - <div class="row"> - <div class="col-md-3 col-md-offset-2"> - Budget Year : - </div> - <div class="col-md-5"> - <?php - $data = array('name' => 'EditYear', 'value' => set_value('EditYear'),'id'=>'EditYear', 'class' => 'form-control','onkeypress'=>'return isNumberKey(event);','onkeypress'=>'return false;'); - echo form_input($data); - ?> - - - </div> - </div> - </div> - <div class="form-group"> - <div class="row"> - <div class="col-md-3 col-md-offset-2"> - Budget Amount : - </div> - <div class="col-md-5"> - <?php - $data = array('name' => 'EditAmout', 'value' => set_value('EditAmout'),'id'=>'EditAmout', 'class' => 'form-control','onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - - - </div> - </div> - </div> - <div class="form-group"> - <div class="row"> - <div class="col-md-3 col-md-offset-2"> - Remarks : - </div> - <div class="col-md-5"> - <?php - $data = array('name' => 'EditRemarks', 'value' => set_value('EditRemarks'),'id'=>'EditRemarks', 'class' => 'form-control'); - echo form_input($data); - ?> - - </div> - </div> - </div> - </form> - </div> - <!-- Modal Footer --> - <div class="modal-footer"> - <a class="btn btn-info font tempClickEdit" ID="tempClickEdit" style="margin-top: -24px;"><i class="fa fa-plus"></i>&nbsp;&nbsp;<span class="bold">Edit</span></a> - <a class="btn btn-info" data-dismiss="modal" style="margin-top: -24px;" value="Cancel">cancel</a> - </div> - </div> - </div> - </div> - </div> - </div> - </div> - - <div id="content"></div> - <div class="box-footer" style="text-align:right"> - <input type="hidden" name="txtSelectedDepartment" id="txtSelectedDepartment" /> - <input type="submit" class="btn btn-info" value="Update" /> - <a href="<?php echo base_url() ?>costListing" class="btn btn-info" id="cancel" value="Cancel">Cancel</a> - </div> - - - </div> - </form> - </div> - </div> - <div class="col-md-4"> - <?php - $this->load->helper('form'); - $error = $this->session->flashdata('error'); - if($error) - { - ?> - <div class="alert alert-danger alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('error'); ?> - </div> - <?php } ?> - <?php - $success = $this->session->flashdata('success'); - if($success) - { - ?> - <div class="alert alert-success alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('success'); ?> - </div> - <?php } ?> - - <div class="row"> - <div class="col-md-12"> - <?php echo validation_errors('<div class="alert alert-danger alert-dismissable">', ' <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button></div>'); ?> - </div> - </div> - </div> - </div> - </section> - -</div> -<script type="text/html" id="tempList"> -<tr id="<%=index%>"> - <input type="hidden" name="BudgetType<%=index%>" id="BudgetType<%=index%>" value="<%=BudgetType%>" /> - <input type="hidden" name="BudgetYear<%=index%>" id="BudgetYear<%=index%>" value="<%=BudgetYear%>" /> -<input type="hidden" name="BudgetAmount<%=index%>" id="BudgetAmount<%=index%>" value="<%=BudgetAmount%>" /> -<input type="hidden" name="Remarks<%=index%>" id="Remarks<%=index%>" value="<%=Remarks%>" /> - <td align="left"><%=BudgetType%></td> - - <td align="left"><%=BudgetYear%></td> - - <td align="left"><%=BudgetAmount%></td> - - <td align="left"><%=Remarks%></td> - <td> - <a data-target='#Edit' data-id="<%=index%>" data-userid="<%=index%>" data-toggle="modal" href="#Edit"><i class="fa fa-pencil" data-toggle="tooltip" title="Click here to view/Edit the <%=BudgetType%> Budget details"></i>&nbsp;&nbsp;&nbsp;</a> - - - </td> -</tr> -</script> -<script> -var index = $('#txtRowCount').val(); -var numbers = /^[0-9]+$/; -var userid = ''; - -$("#Edit").on("shown.bs.modal", function(e) { - userid = $(e.relatedTarget).data('userid'); - - $('#Editbudget').val($('#BudgetTable tr:eq('+ userid +') td:eq(0)').text()); - $('#EditYear').val($('#BudgetTable tr:eq('+ userid +') td:eq(1)').text()); - $('#EditAmout').val($('#BudgetTable tr:eq('+ userid +') td:eq(2)').text()); - $('#EditRemarks').val($('#BudgetTable tr:eq('+ userid +') td:eq(3)').text()); -}); - - $("#addbudgetmodel").on("shown.bs.modal", function() { - //userid = $(e.relatedTarget).data('userid'); - - $('#AddYear').val($('#drpBudget').val()); - -}); - - $('.tempClick').click(function(){ - - if ($("#Addbudget option:selected").val() =='-1' ) - { - alert('Please Select the Budget Type '); - //return; - } - - if(document.getElementById('AddYear').value == '' ) - { - alert('Please Enter the Budget Year'); - //return; - } - if(document.getElementById('AddAmout').value == '' ) - { - alert('Please Enter the Budget Amount'); - // return; - } - - - if ($("#Addbudget option:selected").val() !='-1' && $('#AddYear').val() && $('#AddAmout').val() ) - { - - // $('#BudgetTable').show(); - - var BudType = $("#Addbudget option:selected").val(); - var BudYear = $("#AddYear").val(); - var BudAmount = $("#AddAmout").val(); - $('#Addbudget option[value='+BudType+']').remove(); - var BudRemarks = $('#AddRemarks').val(); - $('#AddYear').val(''); - $('#AddAmout').val(''); - $('#AddRemarks').val(''); - - - index = parseInt(index)+1; - var temp = index; - - - var template = jQuery("#tempList").html(); - - - $('#tempAppend').append(_.template(template,{index:temp,BudgetType:BudType,BudgetYear:BudYear,BudgetAmount:BudAmount,Remarks:BudRemarks})); - - //alert($('#txtRowCount').val()); - - //var theForm = $(".addCost"); - - // addHidden(theForm,"BudgetType"+temp,BudType); - //addHidden(theForm,"BudgetYear"+temp,BudYear); - // addHidden(theForm,"BudgetAmount"+temp,BudAmount); - //addHidden(theForm,"Remarks"+temp,BudRemarks); - - $('#txtRowCount').val(temp); - - } - else - { - alert('Please enter all the values'); - } - - }); - - function addHidden(theForm, key, value) { - // Create a hidden input element, and append it to the form: - var input = document.createElement('input'); - input.type = 'hidden'; - input.name = key;'name-as-seen-at-the-server'; - input.value = value; - theForm.append(input); -} - - -$('.tempClickEdit').click(function(){ - - - if(document.getElementById('EditYear').value == '' ) - { - alert('Please Enter the Budget Year'); - //return; - } - if(document.getElementById('EditAmout').value == '' ) - { - alert('Please Enter the Budget Amount'); - // return; - } - - - if ( $('#EditAmout').val() != '' && $('#EditYear').val() != '' ) - { - - //var temp = index; - var BudYear = $("#EditYear").val(); - var BudAmount = $("#EditAmout").val(); - - var BudRemarks = $('#EditRemarks').val(); - var BudType = $('#Editbudget').val(); - - $('#BudgetTable tr:eq('+ userid +') td:eq(1)').text(BudYear); - $('#BudgetTable tr:eq('+ userid +') td:eq(2)').text(BudAmount); - $('#BudgetTable tr:eq('+ userid +') td:eq(3)').text(BudRemarks); - - $('#BudgetType'+userid).val(BudType); - $('#BudgetYear'+userid).val(BudYear); - $('#BudgetAmount'+userid).val(BudAmount); - $('#Remarks'+userid).val(BudRemarks); } - else - { - alert('Please enter all the values'); - - } - - }); - - - - function ConfirmDelete() -{ - var x = confirm("Are you sure you want to delete?"); - if (x) - return true; - else - return false; -} - - function isNumberKey(evt) - { - var charCode = (evt.which) ? evt.which : evt.keyCode; - if (charCode != 46 && charCode > 31 - && (charCode < 48 || charCode > 57)) - return false; - - return true; - } -</script> - - <script> - $('#addPop').click(function () { - if ($('#distriList option:selected').val() != null) { - var tempSelect = $('#distriList option:selected').val(); - var tempText = $('#distriList option:selected').text(); - - var o = new Option(tempText,tempSelect); - var hidval = tempSelect; - var orgVal = $('#txtSelectedDepartment').val(); - var Selectedval = '' - - if(orgVal != '') - { - Selectedval = orgVal + ':' + hidval; - } - else - { - Selectedval = hidval - } - $('#txtSelectedDepartment').val(Selectedval); - - $(o).html(tempText); - $("#selectDistriList").append(o); - - - $('#distriList option:selected').remove(); - $("#distriList").attr('selectedIndex', '-1').find("option:selected").removeAttr("selected"); - $("#selectDistriList").attr('selectedIndex', '-1').find("option:selected").removeAttr("selected"); - - tempSelect = ''; - tempText = ''; - Selectedval = ''; - } else { - alert("Before add please select any position."); - } - }); - - $('#removePop').click(function () { - if ($('#selectDistriList option:selected').val() != null) { - var tempSelect = $('#selectDistriList option:selected').val(); - $('#selectDistriList option:selected').remove().appendTo('#distriList'); - $("#selectDistriList").attr('selectedIndex', '-1').find("option:selected").removeAttr("selected"); - $("#distriList").attr('selectedIndex', '-1').find("option:selected").removeAttr("selected"); - - $("#distriList").val(tempSelect); - tempSelect = ''; - } else { - alert("Before remove please select any position."); - } - }); - - var baseurl = "<?php print base_url(); ?>"; - $(".EditCost").submit(function(e) { - - e.preventDefault(); - if(validate()) - { - $('#content').loader('show'); - $.ajax({ - data:$('.EditCost').serialize(), - type:"POST", - url:"<?php echo base_url() ?>CostCenter/editcost", - success:function(data) { - if(data) - { - $('#content').loader('hide'); - alert(data); - $('#txtSelectedDepartment').val(''); - $('#txtRowCount').val(''); - - window.location = baseurl + 'CostCenter/CostListing'; - - } - - } - }); - //$('#content').loader('hide'); - } - - }); - - -function validate() -{ - /* if($("#txtSelectedDepartment").val().length < 1) - { - alert('Please Select Department'); - return false; - } - else if($("#txtRowCount").val().length < 1) - { - alert('Please Add Budget'); - return false; - } - else */ if($("option:selected", $("#ApprovedBy")).val() == '-1') - { - alert('Please Select Approver Names'); - return false; - } - else - { - return true; - } - -} - </script> - \ No newline at end of file diff --git a/application/views/editOldemployee.php b/application/views/editOldemployee.php deleted file mode 100644 index d265ae2b..00000000 --- a/application/views/editOldemployee.php +++ /dev/null @@ -1,245 +0,0 @@ -<?php - -$EmpID = ''; -$FirstName= ''; -$LastName = ''; -$DateofBirth = ''; -$ContactNumber = ''; -$EmailId = ''; -$DateofJoining = ''; -$Role = ''; -$Address1 = ''; -$Address2 = ''; -$Place = ''; -$City = ''; -$State = ''; -$Pin = ''; -$DepartmentName = ''; -$User_Comments = ''; -if(!empty($userRecords)) -{ - foreach ($userRecords as $uf) - { - $EmpID = $uf->EmpID; - $FirstName = $uf->FirstName; - $LastName = $uf->LastName; - $DateofBirth = $uf->DateofBirth; - $ContactNumber = $uf->ContactNumber; - $EmailId = $uf->EmailId; - $DateofJoining = $uf->DateofJoining; - $Role = $uf->Role; - $Address1 = $uf->Address1; - $Address2 = $uf->Address2; - $Place = $uf->Place; - $City = $uf->City; - $State = $uf->State; - $Pin = $uf->Pin; - $DepartmentName = $uf->DepartmentName; - $User_Comments = $uf->User_Comments; - } -} - - -?> - -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - <center>Employee details</center> - - - </h1> - - </section> - - <section class="content"> - <div style="text-align:right;"> - <a href="<?php echo base_url() ?>employeeListing" class="btn btn-info" value="Back"/>Back</a> - </div> - <br/> - <div class="row"> - <!-- left column --> - <div class="col-md-12"> - <!-- general form elements --> - - - - <div class="box box-primary"> - <div class="box-header"> - <center> <h3 class="box-title">Edit Employee Details</h3></center> - </div><!-- /.box-header --> - <!-- form start --> - - <form role="form" action="<?php echo base_url() ?>Employeedetails/editemployee" method="post" id="editemployee" role="form"> - <div class="box-body"> - <div class="row"> - <div class="col-md-6"> - <div class="form-group"> - <label for="FirstName">First Name</label> - <input type="text" class="form-control required" id="FirstName" name="FirstName" maxlength="128"value="<?php echo $FirstName;?>"> - <input type="hidden" class="form-control" id="EmpID" name="EmpID" value="<?php echo $EmpID;?>"> - </div> - </div> - - - <div class="col-md-6"> - <div class="form-group"> - <label for="LastName">Last Name</label> - <input type="text" class="form-control required " id="LastName" name="LastName" maxlength="255"value="<?php echo $LastName;?>"> - </div> - </div> - <div class="col-md-6"> - <div class="form-group"> - <label for="DateofBirth">Date of Birth</label> - <input type="Date" name="DateofBirth" class="form-control"value="<?php echo $DateofBirth;?>" > - </div> - </div> - - <div class="col-md-6"> - <div class="form-group"> - <label for="ContactNumber">Contact Number</label> - <input type="text" class="form-control digit required " id="ContactNumber" name="ContactNumber" maxlength="255" value="<?php echo $ContactNumber;?>"> - </div> - </div> - - <div class="col-md-6"> - <div class="form-group"> - <label for="EmailId">Email ID</label> - <input type="email" class="form-control email required " id="EmailId" name="EmailId" maxlength="255" value="<?php echo $EmailId;?>"> - </div> - </div> - - - - - <div class="col-md-6"> - <div class="form-group"> - <label for="DateofJoining">Date of Joining</label> - <input type="Date" name="DateofBirth" class="form-control" value="<?php echo $DateofJoining;?>" /> - </div> - </div> - - <div class="col-md-6"> - <div class="form-group"> - <label for="role">Role</label> - <select class="form-control " id="role" name="role"> - <option value="0">Select Role</option> - <?php - if(!empty($roles)) - { - foreach ($roles as $rl) - { - ?> - <option value="<?php echo $rl->role ?>"><?php echo $rl->role ?></option> - <?php - } - } - ?> - </select> - </div> - </div> - - <div class="col-md-6"> - <div class="form-group"> - <label for="Address1">Address1</label> - <textarea rows="3" cols="10" wrap="hard" input type="text" class="form-control required" id="Address1" name="Address1" maxlength="250" value="<?php echo $Address1;?>"></textarea> - </div> - </div> - - <div class="col-md-6"> - <div class="form-group"> - <label for="Address2">Address2</label> - <textarea rows="3" cols="10" wrap="hard" input type="text" class="form-control required" id="Address2" name="Address2" maxlength="250" value="<?php echo $Address2;?>"></textarea> - </div> - </div> - - <div class="col-md-6"> - <div class="form-group"> - <label for="Place">Place</label> - <input type="text" class="form-control required " id="Place" name="Place" maxlength="255" value="<?php echo $Place;?>"> - </div> - </div> - - <div class="col-md-6"> - <div class="form-group"> - <label for="City">City</label> - <input type="text" class="form-control required " id="City" name="City" maxlength="255" value="<?php echo $City;?>"> - </div> - </div> - - <div class="col-md-6"> - <div class="form-group"> - <label for="State">State</label> - <input type="text" class="form-control required " id="State" name="State" maxlength="255" value="<?php echo $State;?>"> - </div> - </div> - - - <div class="col-md-6"> - <div class="form-group"> - <label for="Pin">Pin</label> - <input type="text" class="form-control digit required " id="Pin" name="Pin" maxlength="255" value="<?php echo $Pin;?>"> - </div> - </div> - <div class="col-md-6"> - <div class="form-group"> - <label for="DepartmentName">Department Name</label> - <input type="text" class="form-control required " id="DepartmentName" name="DepartmentName" maxlength="255"value="<?php echo $DepartmentName;?>"> - </div> - </div> - <div class="col-md-6"> - <div class="form-group"> - <label for="User_Comments">User Comments</label> - <input type="text" class="form-control required " id="User_Comments" name="User_Comments" maxlength="255" value="<?php echo $User_Comments;?>"> - </div> - </div> - - </div> - </div> - - - </div><!-- /.box-body --> - - <div class="box-footer" style="text-align:right"> - <input type="submit" class="btn btn-info" value="Submit" /> - <input type="reset" class="btn btn-info" value="Cancel" /> - </div> - </div> - </form> - </div> - </div> - <div class="col-md-4"> - <?php - $this->load->helper('form'); - $error = $this->session->flashdata('error'); - if($error) - { - ?> - <div class="alert alert-danger alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('error'); ?> - </div> - <?php } ?> - <?php - $success = $this->session->flashdata('success'); - if($success) - { - ?> - <div class="alert alert-success alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('success'); ?> - </div> - <?php } ?> - - <div class="row"> - <div class="col-md-12"> - <?php echo validation_errors('<div class="alert alert-danger alert-dismissable">', ' <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button></div>'); ?> - </div> - </div> - </div> - </div> - </section> -</div> - -<script src="<?php echo base_url(); ?>assets/js/editUser.js" type="text/javascript"></script> \ No newline at end of file diff --git a/application/views/editOldemppay.php b/application/views/editOldemppay.php deleted file mode 100644 index 2fe2c208..00000000 --- a/application/views/editOldemppay.php +++ /dev/null @@ -1,297 +0,0 @@ - - - <?php - - - $Pay_Data_ID=''; - $EmpID=''; - $Basic_Pay=''; - $HRA_Rate=''; - $OT_Rate=''; - $Allowances=''; - $PF_Rate=''; - $ESI_Rate=''; - $is_Active=''; - $Food_Allowances=''; - $Created_By=''; - $Created_Time=''; - $Last_Mod_By=''; - $Last_Mod_Time=''; - - -if(!empty($emppay)) -{ - - foreach ($emppay as $ep) - { - - - - $Pay_Data_ID=$ep->Pay_Data_ID; - $EmpID=$ep->EmpID; - $Basic_Pay=$ep->Basic_Pay; - $HRA_Rate=$ep->HRA_Rate; - $OT_Rate=$ep->OT_Rate; - $Allowances=$ep->Allowances; - $PF_Rate=$ep->PF_Rate; - $ESI_Rate=$ep->ESI_Rate; - $is_Active=$ep->is_Active; - $Food_Allowances=$ep->Food_Allowances; - $Created_By=$ep->Created_By; - $Created_Time=$ep->Created_Time; - $Last_Mod_By=$ep->Last_Mod_By; - $Last_Mod_Time=$ep->Last_Mod_Time; - - - } -} - - -?> - - -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - <!--title--> - <center>Edit Salary Payment Details</center> - - </h1> - </section> - - <section class="content"> - <div style="text-align:right;"> - <a href="<?php echo base_url() ?>emppayListings" class="btn btn-info" value="Back">Back</a> - </div> - <br/> - <div class="row"> - <!-- left column --> - <div class="col-md-12"> - <!-- general form elements --> - <div class="box box-primary"> - - <!-- form start--> - - <form role="form" id="edit" action="<?php echo base_url() ?>emppaydate/editemppay" method="post"> - <div class="box-body"> - <div class="row"> - - <div class="col-md-4"> - <div class="form-group"> - <div class="form-group"> - - - <span for="Pay_Data_ID">Pay Data ID</span> - <input type="text" class="form-control" readonly id="Pay_Data_ID" name="Pay_Data_ID" value="<?php echo $Pay_Data_ID; ?>"> - </div> - </div> - </div> - - - - - <div class="col-md-4"> - <div class="form-group"> - <div class="form-group"> - <span for="EmpID">Employee ID:</span> - <input type="text" class="form-control" readonly id="EmployeeID" name="EmpID" value="<?php echo $EmpID; ?>"> - </div> - </div> - </div> - - - <div class="col-md-4"> - <div class="form-group"> - <div class="form-group"> - <span for="Basic_Pay">Basic Pay:</span><font color="Red">*</font> - <input type="text" class="form-control requried" id="Basic_Pay" name="Basic_Pay" value="<?php echo $Basic_Pay; ?>" pattern="[0-9]{4,6}" title="Minimum 4 digit,Maximum 6 Digit"> - </div> - </div> - </div> - </div> - - - <div class="row"> - - <div class="col-md-4"> - <div class="form-group"> - <div class="form-group"> - <span for="HRA_Rate">HRA_Rate(%):</span><font color="Red">*</font> - <input type="text" class="form-control required" id="HRA_Rate" name="HRA_Rate" value="<?php echo $HRA_Rate; ?>" pattern="([0-9]{1,2}([.][0-9]{1,2})?)" title="Minimum 1 digit,Maximum 2 Digit"> - </div> - </div> - </div> - - - <div class="col-md-4"> - <div class="form-group"> - <div class="form-group"> - <span for="OT_Rate">OT_Rate:</span><font color="Red">*</font> - <input type="text" class="form-control required" id="OT_Rate" name="OT_Rate" value="<?php echo $OT_Rate; ?>" pattern="[0-9]{1,4}"title="Minimum 1 digit,Maximum 4 Digit"> - </div> - </div> - </div> - - - <div class="col-md-4"> - <div class="form-group"> - <div class="form-group"> - <span for="Allowances">Allowances:</span><font color="Red">*</font> - <input type="text" class="form-control required" id="Allowances" name="Allowances" value="<?php echo $Allowances; ?>" pattern="[0-9]{1,4}" title="Minimum 1 digit,Maximum 4 Digit"> - </div> - </div> - </div> - </div> - - - - - <div class="row"> - <div class="col-md-4"> - <div class="form-group"> - <div class="form-group"> - <span for="PF_Rate">PF_Rate(%):</span><font color="Red">*</font> - <input type="text" class="form-control required" id="PF_Rate" name="PF_Rate" value="<?php echo $PF_Rate; ?>" pattern="([0-9]{1,2}([.][0-9]{1,2})?)" title="Minimum 1 digit,Maximum 2 Digit"> - </div> - </div> - </div> - - - <div class="col-md-4"> - <div class="form-group"> - <div class="form-group"> - <span for="ESI_Rate">ESI_Rate(%):</span><font color="Red">*</font> - <input type="text" class="form-control required" id="ESI_Rate" name="ESI_Rate" value="<?php echo $ESI_Rate; ?>" pattern="([0-9]{1,2}([.][0-9]{1,2})?)" title="Minimum 1 digit,Maximum 2 Digit"> - </div> - </div> - </div> - - <div class="col-md-4"> - <div class="form-group"> - <div class="form-group"> - <span for ="Food_Allowances">Food Allowances:</span><font color="Red">*</font> - <input type="text" class="form-control" id="Food_Allowances" name="Food_Allowances" value="<?php echo $Food_Allowances; ?>" pattern="[0-9]{1,4}" title="Minimum 1 digit,Maximum 4 Digit"> - </div> - </div> - </div> - </div> - - - - - - - - - <div class="row"> - <div class="col-md-6"> - <div class="form-group"> - <div class="form-group"> - <!--<span for ="CreatedBy">Created By:</span>--> - <input type="hidden" class="form-control required" id="CreatedBy" name="CreatedBy" value="<?php echo $Created_By; ?>"> - </div> - </div> - </div> - - - <div class="col-md-6"> - <div class="form-group"> - <div class="form-group"> - <!--<span for ="Created_Time">Created Time:</span>--> - <input type="hidden" class="form-control required" id="Created_Time" name="Created_Time" value="<?php echo $Created_Time; ?>"> - </div> - </div> - </div> - </div> - - - <div class="row"> - <div class="col-md-6"> - <div class="form-group"> - <div class="form-group"> - <!--<span for ="Last_Mod_By">Last Modified By:</span>--> - <input type="hidden" class="form-control required" id="LastModifiedBy" name="LastModifiedBy" value="<?php echo $name; ?>"> - </div> - </div> - </div> - - - <div class="col-md-6"> - <div class="form-group"> - <div class="form-group"> - <!--<span for ="Last_Mod_Time">Last Modified Time:</span>--> - <input type="hidden" class="form-control required" id="Last Modified Time" name="Last Modified Time" value="<?php echo $Last_Mod_Time; ?>"> - </div> - </div> - </div> - </div> - - - <div class="row"> - <div class="offset col-md-7"> - <div class="form-group"> - <input type="checkbox" name="is_Active" />Active state<br> - </div> - </div> - </div> - - - </div><!--row completed div--> - - <div id="content"> - <div class="box-footer" style="text-align:right"> - <input type="submit" class="btn btn-info" value="Submit"/> - <input type="reset" class="btn btn-info" value="Reset" /> - </div> - - </div> - - - - </div> - </div> - </div> - - - - - - </div> - - </form> - -<div class="col-md-4"> - <?php - $this->load->helper('form'); - $error = $this->session->flashdata('error'); - if($error) - { - ?> - <div class="alert alert-danger alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('error'); ?> - </div> - <?php } ?> - <?php - $success = $this->session->flashdata('success'); - if($success) - { - ?> - <div class="alert alert-success alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('success'); ?> - </div> - <?php } ?> - - <div class="row"> - <div class="col-md-12"> - <?php echo validation_errors('<div class="alert alert-danger alert-dismissable">', ' <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button></div>'); ?> - </div> - </div> - </div> - - </section> -</div> - -<script src="<?php echo base_url(); ?>assets/js/editUser.js" type="text/javascript"></script> \ No newline at end of file diff --git a/application/views/editOldmonthly.php b/application/views/editOldmonthly.php deleted file mode 100644 index 36dc2c88..00000000 --- a/application/views/editOldmonthly.php +++ /dev/null @@ -1,370 +0,0 @@ - - - <?php - - $Month_Year=''; - $EmpID=''; - $LOP_Days=''; - $OT_Hrs_Worked=''; - $Loan_Recovered=''; - $Loan_Balance=''; - $Incentives=''; - $Other_Deductions=''; - $Created_By=''; - $Created_Time=''; - $Last_Mod_By=''; - $Last_Mod_Time=''; - - -if(!empty($monthly)) -{ - foreach ($monthly as $mpi) - { - - $Month_Year=$mpi->Month_Year; - $EmpID= $mpi->EmpID; - $LOP_Days=$mpi->LOP_Days; - $OT_Hrs_Worked=$mpi->OT_Hrs_Worked; - $Loan_Recovered=$mpi->Loan_Recovered; - $Loan_Balance=$mpi->Loan_Balance; - $Incentives=$mpi->Incentives; - $Other_Deductions=$mpi->Other_Deductions; - $Created_By=$mpi->Created_By; - $Created_Time=$mpi->Created_Time; - $Last_Mod_By=$mpi->Last_Mod_By; - $Last_Mod_Time=$mpi->Last_Mod_Time; - - } -} - - -?> -<script> - - - - -function validateLOP(){ - var x = $("#LOPDays").val(); - - var ck_lopdays = /^[0-9 ]{1,2}$/; - if(!(ck_lopdays.test(x) && x<=31)){ - - $("#LOPDays").css({"border-style":"dotted","border-color":"#ff8080","border-width":"2px","background-color":"#ffe6e6"}); - - $("#LOPDays").attr("title","0 to 31 Days Only"); - } -else{ - $("#LOPDays").css({"border-style":"","border-color":"","border-width":"","background-color":""}); - } -} - -function validateOTHRS(){ -var x = $("#OT_Hrs_Worked").val(); - - var ck_lopdays = /^[0-9 ]{1,3}$/; - if(!(ck_lopdays.test(x) && x<=150)){ - - $("#OT_Hrs_Worked").css({"border-style":"dotted","border-color":"#ff8080","border-width":"2px","background-color":"#ffe6e6"}); - $("#OT_Hrs_Worked").attr("title","Three Digits, not more then 150hrs"); - } -else{ - $("#OT_Hrs_Worked").css({"border-style":"","border-color":"","border-width":"","background-color":""}); - } -} - -function validateLR(){ -var x = $("#Loan_Recovered").val(); - - var ck_lopdays = /^[0-9 ]{1,6}$/; - if(!(ck_lopdays.test(x) && x<=100000)){ - - $("#Loan_Recovered").css({"border-style":"dotted","border-color":"#ff8080","border-width":"2px","background-color":"#ffe6e6"}); - $("#Loan_Recovered").attr("title","Positive Nos Only,Maximun Six Digits"); - } -else{ - $("#Loan_Recovered").css({"border-style":"","border-color":"","border-width":"","background-color":""}); - } -} - -function validateLB(){ -var x = $("#Loan_Balance").val(); - - var ck_lopdays = /^[0-9 ]{1,6}$/; - if(!(ck_lopdays.test(x) && x<=100000)){ - - $("#Loan_Balance").css({"border-style":"dotted","border-color":"#ff8080","border-width":"2px","background-color":"#ffe6e6"}); - $("#Loan_Balance").attr("title","Positive Nos Only,Maximun Six Digitss"); - } -else{ - $("#Loan_Balance").css({"border-style":"","border-color":"","border-width":"","background-color":""}); - } -} - - -function validateLB(){ -var x = $("#Loan_Balance").val(); - - var ck_lopdays = /^[0-9 ]{1,6}$/; - if(!(ck_lopdays.test(x) && x<=100000)){ - - $("#Loan_Balance").css({"border-style":"dotted","border-color":"#ff8080","border-width":"2px","background-color":"#ffe6e6"}); - $("#Loan_Balance").attr("title","Positive Nos Only,Maximun Six Digits"); - } -else{ - $("#Loan_Balance").css({"border-style":"","border-color":"","border-width":"","background-color":""}); - } -} - - -function validateINC(){ -var x = $("#Incentives").val(); - - var ck_lopdays = /^[0-9 ]{1,6}$/; - if(!(ck_lopdays.test(x))){ - - $("#Incentives").css({"border-style":"dotted","border-color":"#ff8080","border-width":"2px","background-color":"#ffe6e6"}); - $("#Incentives").attr("title","Positive Nos Only,Maximun Six Digits"); - } -else{ - $("#Incentives").css({"border-style":"","border-color":"","border-width":"","background-color":""}); - } -} - -function validateODD(){ -var x = $("#Other_Deductions").val(); - - var ck_lopdays = /^[0-9 ]{1,6}$/; - if(!(ck_lopdays.test(x))){ - - $("#Other_Deductions").css({"border-style":"dotted","border-color":"#ff8080","border-width":"2px","background-color":"#ffe6e6"}); - $("#Other_Deductions").attr("title","Positive Nos Only,Maximun Six Digits"); - } -else{ - $("#Other_Deductions").css({"border-style":"","border-color":"","border-width":"","background-color":""}); - } -} - -function validateAll(){ - - - -} - -</script> - -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - <!--title--> - <center>Edit Monthly Payment Details</center> - - </h1> - </section> - - <section class="content"> - <div style="text-align:right;"> - <a href="<?php echo base_url() ?>monthlyListings" class="btn btn-info" value="Back">Back</a> - </div> - <br/> - <div class="row"> - <!-- left column --> - <div class="col-md-12"> - <!-- general form elements --> - <div class="box box-primary"> - - <!-- form start--> - - <form role="form" id="edit" action="<?php echo base_url() ?>monthlypay/editmonthly" method="post"> - <div class="box-body"> - <div class="row"> - <div class="col-md-6"> - <div class="form-group"> - <div class="form-group"> - <span for="month_year">Month Year:</span> - - <input type="text" class="form-control" readonly id="MonthYear" name="Month_Year" value="<?php echo $Month_Year;?>"> - </div> - </div> - </div> - - - - - <div class="col-md-6"> - <div class="form-group"> - <div class="form-group"> - <span for="EmpID">Employee ID:</span> - <input type="text" class="form-control" readonly id="EmployeeID" name="EmpID" value="<?php echo $EmpID; ?>"> - </div> - </div> - </div> - </div> - - <div class="row"> - - <div class="col-md-6"> - <div class="form-group"> - <div class="form-group"> - <span for="LOP_Days">LOP Days:</span> - <input type="text" class="form-control requried" id="LOPDays" onfocusout="validateLOP();" title="lopdays" name="LOP_Days" pattern="[0-9]{1,2}" value="<?php echo $LOP_Days; ?>"> - </div> - </div> - </div> - - - - - <div class="col-md-6"> - <div class="form-group"> - <div class="form-group"> - <span for="OT_Hrs_Worked">OverTime Hours Worked:</span> - <input type="text" class="form-control required" id="OT_Hrs_Worked" name="OT_Hrs_Worked" onfocusout="validateOTHRS();" pattern="[0-9 ]{1,3}" value="<?php echo $OT_Hrs_Worked; ?>"> - </div> - </div> - </div> - </div> - - - - - - <div class="row"> - <div class="col-md-6"> - <div class="form-group"> - <div class="form-group"> - <span for="Loan_Recovered">Loan Recovered:</span> - <input type="text" class="form-control required" id="Loan_Recovered" name="Loan_Recovered" onfocusout="validateLR();" pattern="[0-9 ]{1,6}" value="<?php echo $Loan_Recovered; ?>"> - </div> - </div> - </div> - - - <div class="col-md-6"> - <div class="form-group"> - <div class="form-group"> - <span for="Loan_Balance">Loan Balance:</span> - <input type="text" class="form-control required" id="Loan_Balance" name="Loan_Balance" onfocusout="validateLB();"pattern="[0-9 ]{1,6}" value="<?php echo $Loan_Balance; ?>"> - </div> - </div> - </div> - </div> - - - - - <div class="row"> - <div class="col-md-6"> - <div class="form-group"> - <div class="form-group"> - <span for="Incentives">Incentives:</span> - <input type="text" class="form-control required" id="Incentives" onfocusout="validateINC();" name="Incentives" pattern="[0-9 ]{1,6}" value="<?php echo $Incentives; ?>"> - </div> - </div> - </div> - - - <div class="col-md-6"> - <div class="form-group"> - <div class="form-group"> - <span for="Other_Deductions">Other Deductions:</span> - <input type="text" class="form-control required" id="Other_Deductions" onfocusout="validateODD();" name="Other_Deductions" pattern="[0-9 ]{1,6}" value="<?php echo $Other_Deductions; ?>"> - </div> - </div> - </div> - </div> - - - - <div class="row"> - <div class="col-md-6"> - <div class="form-group"> - <div class="form-group"> - - <input type="hidden" class="form-control required" id="CreatedBy" name="CreatedBy" value="<?php echo $Created_By; ?>"> - </div> - </div> - </div> - - - <div class="col-md-6"> - <div class="form-group"> - <div class="form-group"> - - <input type="hidden" class="form-control required" id="Created_Time" name="Created_Time" value="<?php echo $Created_Time; ?>"> - </div> - </div> - </div> - </div> - - - <div class="row"> - <div class="col-md-6"> - <div class="form-group"> - <div class="form-group"> - - <!--<input type="hidden" class="form-control required" id="LastModifiedBy" name="LastModifiedBy" value="<?php echo $name; ?>">--> - </div> - </div> - </div> - - - <div class="col-md-6"> - <div class="form-group"> - <div class="form-group"> - - <input type="hidden" class="form-control required" id="Last Modified Time" name="Last Modified Time" value="<?php echo $Last_Mod_Time; ?>"> - </div> - </div> - </div> - </div> - <div id="content"> - <div class="box-footer" style="text-align:right"> - <input type="submit" class="btn btn-info" value="Submit" onclick="validateAll();"/> - <input type="reset" class="btn btn-info" value="Reset" /> - </div> - - </div> - </div> - </form> - </div> - </div> - - </div> - - -<div class="col-md-4"> - <?php - $this->load->helper('form'); - $error = $this->session->flashdata('error'); - if($error) - { - ?> - <div class="alert alert-danger alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('error'); ?> - </div> - <?php } ?> - <?php - $success = $this->session->flashdata('success'); - if($success) - { - ?> - <div class="alert alert-success alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('success'); ?> - </div> - <?php } ?> - - <div class="row"> - <div class="col-md-12"> - <?php echo validation_errors('<div class="alert alert-danger alert-dismissable">', ' <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button></div>'); ?> - </div> - </div> - </div> - - </section> -</div> - -<script src="<?php echo base_url(); ?>assets/js/editUser.js" type="text/javascript"></script> \ No newline at end of file diff --git a/application/views/editOldsupplier.php b/application/views/editOldsupplier.php deleted file mode 100644 index 5bfa5b76..00000000 --- a/application/views/editOldsupplier.php +++ /dev/null @@ -1,389 +0,0 @@ -<?php - -$SupplierID = ''; -$SupplierName = ''; -$Address = ''; -$ContactNumber = ''; -$AlternateContactNumber = ''; -$EmailAddress = ''; -$TIN = ''; -$PAN = ''; -$GSTNO = ''; -$GSTRange = ''; -$CollectrateAddress = ''; -$UANumber = ''; -$PaymentTerms = ''; -$PaymentDays = ''; -$PayableAT = ''; - - - -if(!empty($supplier)) -{ - foreach ($supplier as $uf) - { - $SupplierID = $uf->SupplierID; - $SupplierName = $uf->SupplierName; - $Address = $uf->Address; - $ContactNumber = $uf->ContactNumber; - $AlternateContactNumber = $uf->AlternateContactNumber; - $EmailAddress = $uf->EmailAddress; - $Exiseregistration = $uf->Exiseregistration; - $TIN = $uf->TIN; - $PAN = $uf->PAN; - $GSTNO = $uf->GSTNO; - $GSTRange = $uf->GSTRange; - $CollectrateAddress = $uf->CollectrateAddress; - $UANumber = $uf->UANumber; - $PaymentTerms = $uf->PaymentTerms; - $PaymentDays = $uf->PaymentDays; - $PayableAT = $uf->PayableAT; - - - } -} - - -?> -<script> -function demo(){ - alert("Update this records"); - -} - -</script> -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - <center> ADD SUPPLIER </center> - - </h1> - - </section> - - <section class="content"> - <div style="text-align:left;"> - <a href="<?php echo base_url() ?>supplierListing" class="btn btn-primary" value="Back"/>Back</a> - </div> - <br/> - <div class="row"> - <!-- left column --> - <div class="col-md-12"> - <!-- general form elements --> - - - - <div class="box box-primary"> - <div class="box-header"> - <center> <h3 class="box-title">Add Supplier Details</h3></center> - </div><!-- /.box-header --> - <!-- form start --> - - <form role="form" id="editsupplier" action="<?php echo base_url() ?>editsupplier" method="post" role="form"> - <div class="box-body"> - <div class="row"> - <div class="col-md-6 col-xs-6"> - <div class="form"> - <label for="PAN">PAN</label> - <input type="text" class="form-control" id="PAN" name="PAN"style="text-transform:uppercase" onchange="validatePAN()"title="please correct enter the pan number"maxlength="10" value="<?php echo $PAN;?>"> - </div> - </div> - <div class="col-md-6 col-xs-6"> - <div class="form-group"> - <label for="SupplierName">Supplier Name</label> - <input type="hidden" class="form control" name="SupplierID" value="<?php echo $SupplierID;?>"> - <input type="text" class="form-control " id="SupplierName" onchange="validatesuppliername()"name="SupplierName" maxlength="128" value="<?php echo $SupplierName;?>"value="<?php echo $SupplierName;?>" > - </div> - - </div> - - <div class="col-md-6 col-xs-6"> - <div class="form-group"> - <label for="Address">Address</label> - <input type="text" class="form-control required" id="Address" name="Address" value="<?php echo $Address;?>"maxlength="250"></textarea> - </div> - </div> - - - - - <div class="col-md-6 col-xs-6"> - <div class="form-group"> - <label for="ContactNumber">Contact Number</label> - <input type="text" class="form-control" pattern="^\d{10}$""onchange="validatenumbers()" id="number" title="please enter valid phone number" name="ContactNumber" value="<?php echo $ContactNumber;?>"> - </div> - </div> - <div class="col-md-6 col-xs-6"> - <div class="form-group"> - <label for="AlternateContactNumber">Alternate Contact Number</label> - <input type="tel" class="form-control" pattern="^\d{10}$"value="<?php echo $AlternateContactNumber;?>" id="Number" name="AlternateContactNumber" minlength="10" maxlength="11"> - </div> - </div> - - - - <div class="col-md-6 col-xs-6"> - <div class="form-group"> - <label for="EmailAddress">Email Address</label> - <input type="email" class="form-control required email" value="<?php echo $EmailAddress;?>"id="EmailAddress" onchange="validateEmail()"name="EmailAddress" maxlength="128"> - </div> - </div> - <div class="col-md-6 col-xs-6"> - <div class="form-group"> - <label for="Exiseregistration">Exise Registration</label> - <input type="text" class="form-control required"value="<?php echo $Exiseregistration;?>" id="Exiseregistration" name="Exiseregistration" minlength="10" maxlength="10"> - </div> - </div> - <div class="col-md-6 col-xs-6"> - <div class="form-group"> - <label for="TIN">TIN</label> - <input type="text" class="form-control required" pattern="^\d{2}-\d{7}$"value="<?php echo $TIN;?>" onchange="validateTIN"id="TIN" title="ex:xx-xxxxxxx"name="TIN" minlength="10" maxlength="10"> - </div> - </div> - - </div> - <div class="row"> - <div class="col-md-6 col-xs-6"> - <div class="form"> - <label for="GSTNO">GST No</label> - <input type="text" class="form-control " value="<?php echo $GSTNO;?>"id="GSTNo" name="GSTNo" maxlength="10"> - </div> - </div> - - - - <div class="col-md-6 col-xs-6"> - <div class="form"> - <label for="Range">Range</label> - <input type="text" class="form-control " value="<?php echo $GSTRange;?>"id="Range" name="GSTRange" "maxlength="10"> - </div> - </div> - <div class="col-md-6 col-xs-6"> - <div class="form"> - <label for="CollectrateAddress">Colletrate Address</label> - <input type="text" class="form-control " value="<?php echo $CollectrateAddress;?>"id="CollectrateAddress" name="CollectrateAddress" maxlength="255"> - </div> - </div> - <div class="col-md-6 col-xs-6"> - <div class="form"> - <label for="UANumber">UA Number</label> - <input type="text" class="form-control " pattern="^\d{12}$"value="<?php echo $UANumber;?>" id="UANumber" name="UANumber" maxlength="12"> - </div> - </div> - - <br/> - <div class="row"> - <div class="col-md-offset-5 col-md-3 col-xs-offset-5 col-xs-3"> - <h4><u>Payment terms </u></h4> - </div> - </div> - - <div class="col-md-6 col-xs-6"> - <label for="payablefrom">Payable From</label> - <select class="form-control required" id="PaymentTerms" name="PaymentTerms"> - <option value="<?php echo $PaymentTerms;?>"><?php echo $PaymentTerms;?></option> - <?php - if(!empty($payment)) - { - foreach ($payment as $rl) - { - ?> - <option value="<?php echo $rl->ConfigValue ?>"><?php echo $rl->ConfigValue ?></option> - <?php - } - } - ?> - </select> - </div> - - <div class="col-md-3 col-xs-6"> - <div class="form"> - <label for="PaymentDays" >Payment Date</label><br/> - <span> Before</span> - <input type="radio" <?php echo($PaymentDays?'checked="checked"':''); ?> name="PaymentDays" value="before"/> - </div> - </div> - <div class="col-md-6 col-xs-6"> - <div class="form"> - - <span> After</span> - <input type="radio" <?php echo($PaymentDays?'checked="checked"':''); ?> name="PaymentDays" value="after"/> - </div> - </div> - - <div class="col-md-6 col-xs-6"> - <div class="form"> - <label for="PayableAT">Payable AT</label> - <input type="text" value="<?php echo $PayableAT;?>"class="form-control required" id="PayableAT" name="PayableAT" > - <input type="hidden" value="<?php echo $name;?>"class="form-control required" id="UpdatedBy" name="UpdatedBy" > - - </div> - </div> - </div> - - - </div><!-- /.box-body --> - - <div class="box-footer" style="text-align:right"> - <input type="submit" class="btn btn-primary" value="Submit" /> - <input type="reset" class="btn btn-primary" value="Reset" /> - </div> - </form> - </div> - </div> - <div class="col-md-4"> - <?php - $this->load->helper('form'); - $error = $this->session->flashdata('error'); - if($error) - { - ?> - <div class="alert alert-danger alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('error'); ?> - </div> - <?php } ?> - <?php - $success = $this->session->flashdata('success'); - if($success) - { - ?> - <div class="alert alert-success alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('success'); ?> - </div> - <?php } ?> - - <div class="row"> - <div class="col-md-12"> - <?php echo validation_errors('<div class="alert alert-danger alert-dismissable">', ' <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button></div>'); ?> - </div> - </div> - </div> - </div> - </section> - -</div> - -<script> - - -//Call to ajax existing PAN - $('#PAN').change(function() { - - var id = $('#PAN').val(); - - $.ajax({ - data:{id:id}, - - type:"POST", - url:"<?php echo base_url();?>supplier/checkPAN", - success:function(data) { - if(data) - { - alert( data+""+" already supplier existing change Status"); - window.location = 'supplier/supplierListing'; - - //$('#PAN').val(data); - } - - - } - - }); - -}); -//Email Validate -function validateEmail() { - var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; - - var email = $('#EmailAddress').val(); - if(email != "") - { - if (reg.test(email) == false) - { - alert('Please Enter Valid Email Address'); - return (false); - } - else - { - return true; - } - } -} -//PAN Validate -function validatePAN() { - var reg = /(?=.*[A-Za-z]).{5,}(?=.*[0-9]).{4,}(?=.*[A-Za-z]).{1,}$/; - - var PAN = $('#PAN').val(); - if(PAN != "") - { - if (reg.test(PAN) == false) - { - alert('Please Enter Valid PAN Number'); - return (false); - } - else - { - return true; - } - } -} -//Validate Supplier Name -function validatesuppliername() { - var reg = /^[A-Za-z ]{3,30}$/; - - var suppliername = $('#SupplierName').val(); - if(suppliername != "") - { - if (reg.test(suppliername) == false) - { - alert('Please Enter Valid Supplier Name'); - return (false); - } - else - { - return true; - } - } -} - function validatenumbers() { - var reg = /^(?=.*?[0-9])$/; - - var number = $('#number').val(); - if(number != "") - { - if (reg.test(number) == false) - { - alert('Please Enter Valid Number'); - return (false); - } - else - { - return true; - } - } - - } - - function validateTIN() { - var reg = /^d{2}-\d{7}$/; - - var TIN = $('#TIN').val(); - if(TIN != "") - { - if (reg.test(TIN) == false) - { - alert('Please Enter Valid Number'); - return (false); - } - else - { - return true; - } - } - - } - -</script> diff --git a/application/views/editRevenuepurchaseorder.php b/application/views/editRevenuepurchaseorder.php deleted file mode 100644 index 02c62d7d..00000000 --- a/application/views/editRevenuepurchaseorder.php +++ /dev/null @@ -1,3882 +0,0 @@ - -<?php $ReqType =''; -$CompanyAddress = ''; -$dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); -$CurrentDate = $dt->format('Y-m-d'); -$MaxPoDate = ''; -$AvlAmount = 0; -$DeliverSchedule=''; -$DeliverOption=''; - -if(!empty($MaxPODate)) -{ - foreach ($MaxPODate as $date) - { - $MaxPoDate = $date->PODate; - } -} -if(!empty($CompanyDetails)) -{ - foreach ($CompanyDetails as $Req) - { - $CompanyAddress = $Req->Address; - } -} -if(!empty($AvlBudAmt)) -{ - - $AvlAmount = $AvlBudAmt; - -} - - $SupId = ''; - $SupName = ''; - $Address = ''; - $PODate = ''; - $Deliverydt =''; - $DeliveryAddress =''; - $POStatus = ''; - $PONO = ''; - $totBasicAmt = 0; - $totDiscountAmt = 0.0; - $totPackagingAmt = 0.0; - $totExciseAmt = 0.0; - $totVATAmt = 0.0; - $totCSTAmt = 0.0; - $totGSTAmt = 0.0; - - $totOtherTaxAmt = 0.0; - $totFreightAmt = 0.0; - $totInsuranceAmt = 0.0; - $totOrderSummaryAmt = 0.0; - - $ServiceDescription = ''; - -if(!empty($POMaster)) -{ - foreach ($POMaster as $Req) - { - $SupId = $Req->SupplierID; - $SupName = $Req->SupplierName; - $Address = $Req->Address; - - $Pdt = new DateTime($Req->PODate); - $PODate = $Pdt->format('Y-m-d'); - $DeliverOption = $Req->DeliveryOption; - $DeliverSchedule = $Req->DeliverySchedule; - $Ddt = new DateTime($Req->DeliveryDate); - $Deliverydt = $Ddt->format('Y-m-d'); - - $DeliveryAddress =$Req->DeliveryAddress; - $POStatus = $Req->StatusCode; - $PONO = $Req->PONO; - $ServiceDescription = $Req->ServiceDescription; - } -} -?> -<style> - - #packagingcalmodel { - margin-top:200px; - z-index: 1080 !important; -} - #ExciseDutyCalModel { - margin-top:200px; - z-index: 1080 !important; -} -#VatCalModel { - margin-top:200px; - z-index: 1080 !important; -} -#CSTCalModel { - margin-top:200px; - z-index: 1080 !important; -} -.modal -{ - padding-right:30% ! important; -} - - </style> -<script src="<?php echo base_url(); ?>assets/js/CreatePOValidation.js" type="text/javascript"></script> - -<script type="text/javascript"> - var DelOpt = '<?php echo $DeliverOption; ?>'; - var SchName = '<?php echo $DeliverSchedule; ?>'; -var DelDt = '<?php echo $Deliverydt; ?>'; -$(document).ready(function () { - if(DelOpt=="0"){ - $('#Deliverydtdiv').show(); - $('#Schedulediv').hide(); -$('#Deliverydt').val(DelDt); - } - - else if(DelOpt=="1"){ - $('#Deliverydtdiv').hide(); - $('#Schedulediv').show(); -$('#Deliverydt').val(''); - -$('#Scheduleby').val(SchName); -} -}); -</script> -<script> - var NilType = '<?php echo NILTYPE;?>'; - var PercentageType = '<?php echo PERCENTAGE;?>'; - var POMaxDate = '<?php echo $MaxPoDate;?>'; - var PackagingCalculation = ''; - var ExciseCalculation = ''; - var StateTaxCheck = ''; - var VatCalculation = ''; - var CSTCalculation = ''; - var RequistQuantity = ''; - var IsEdit = '0'; - var d = new Date(POMaxDate); -var SelectedMaterialCode = []; - var CollIndex = 0; - var SelectedMaterialList = { - Mat: [] -}; -// alert(new Date(year,month,day)); -$(function() { - - $("#PODate").datepicker({ - minDate : d, - maxDate : 'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true,yearRange: '-100:+0' -}); - $("#Deliverydt").datepicker({ - minDate : 'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true,yearRange: '0:+10' -}); - -$('#drpSupplier').change(function() { - - var id = $('#drpSupplier').val(); - $("#SupAddress").val(''); - - if(id != '0') - { - var y = <?php echo json_encode($Suplist, JSON_PRETTY_PRINT) ?>; - - - $.each(y, function(idx, obj) { - if(obj.SupplierID === id) - { - $("#SupAddress").val(obj.Address); - - } - - }); - - } - else - { - alert('Please select the SupplierID'); - return false; - } - -}); - -$('#ReqNo').change(function() { - - var id = $('#ReqNo').val(); - $("#deptName").val(''); - $("#CostCenter").val(''); - $("#MaterialCode").empty(); - $("#ItemName").val(''); -$("#UOM").val(''); -$("#Quantity").val(''); -$("#ItemName").val(''); -$("#Rate").val(''); -$("#txtBasicValue").val(''); -$("#AvlBudAmt").val(''); - resetTaxField(); - if(id != '0') - { - var y = <?php echo json_encode($RequistionDetails, JSON_PRETTY_PRINT) ?>; - - var Material = <?php echo json_encode($MaterialList, JSON_PRETTY_PRINT) ?>; - var AvlBudAmt = '<?php echo $AvlAmount ?>'; - // For Binding DepartmentName - $.each(y, function(idx, obj) { - if(obj.ReqNo === id) - { - $("#deptName").val(obj.DepartmentName); - $("#CostCenter").val(obj.CostCenterCode); - } - }); - $("#AvlBudAmt").val(AvlBudAmt); - // For Binding Material list center for the selected Requistion Number - $("#MaterialCode").append( $('<option></option>').val("0").html("Select Material Code") ); - - var isAdded = "0"; - for(i=0;i<Material.length;i++) - { - $.each(Material[i], function(idx, obj) { - - if(obj.ReqNo === id ) - { - - $.each(SelectedMaterialList.Mat, function(idx1, el){ - if (id == el.ReqNo ) - { - - if(el.materialCode == obj.MaterialCode) - { - isAdded = "1"; - return false; - } - else - { - isAdded = "0"; - } - - } - }); - - - if(isAdded == "0") - { - - $("#MaterialCode").append( $('<option></option>').val(obj.MaterialCode).html(obj.MaterialCode + "-" + obj.MaterialName)); - } - - } - - - }); - } - } - else - { - alert('Please select the Requisition Number'); - return false; - } - id = ''; - -}); -$('#MaterialCode').change(function() { - - var id = $('#MaterialCode').val(); - $("#ItemName").val(''); -$("#UOM").val(''); -$("#Quantity").val(''); -$("#ItemName").val(''); -$("#Rate").val(''); -$("#txtBasicValue").val(''); - RequistQuantity = ''; - resetTaxField(); - if(id != '0') - { - var Material = <?php echo json_encode($MaterialList, JSON_PRETTY_PRINT) ?>; - - for(i=0;i<Material.length;i++) - { - $.each(Material[i], function(idx, obj) { - if(obj.MaterialCode === id) - { - $("#ItemName").val(obj.MaterialName); - $("#UOM").val(obj.UOM); - $("#Quantity").val(obj.Quantity); - RequistQuantity = obj.Quantity; - } - }); - } - } - else - { - alert('Please select the MaterialCode'); - return false; - } - -}); - -$('#EditMaterialCode').change(function() { - - var id = $('#EditMaterialCode').val(); - $("#EditItemName").val(''); -$("#EditUOM").val(''); -$("#EditQuantity").val(''); -$("#EditRate").val(''); -$("#txtEditBasicValue").val(''); - RequistQuantity = ''; - resetTaxField(); - if(id != '0') - { - var Material = <?php echo json_encode($MaterialList, JSON_PRETTY_PRINT) ?>; - - for(i=0;i<Material.length;i++) - { - $.each(Material[i], function(idx, obj) { - if(obj.MaterialCode === id) - { - $("#EditItemName").val(obj.MaterialName); - $("#EditUOM").val(obj.UOM); - $("#EditQuantity").val(obj.Quantity); - RequistQuantity = obj.Quantity; - } - }); - } - } - else - { - alert('Please select the MaterialCode'); - return false; - } - -}); - - -/* Revenue Tax calcualation */ - - $('#DiscountType').change(function() { - selValue = $("#DiscountType").val(); - $('#txtDiscount').val(''); - $('#txtAfterDiscount').val(''); - if (selValue == NilType) - { - - $('#txtDiscount').attr('readonly', 'true'); - $('#txtDiscount').val('0.00'); - $('#txtAfterDiscount').val('0.00'); - - } - else - { - $('#txtDiscount').removeAttr( 'readonly','true' ); - $('#txtDiscount').val(''); - $('#txtAfterDiscount').val(''); - } - -}); - - - -$('#EditDiscountType').change(function() { - selValue = $("#EditDiscountType").val(); - $('#txtEditDiscount').val(''); - $('#txtEditAfterDiscount').val(''); - if (selValue == NilType) - { - - $('#txtEditDiscount').attr('readonly', 'true'); - $('#txtEditDiscount').val('0.00'); - $('#txtEditAfterDiscount').val('0.00'); - - } - else - { - $('#txtEditDiscount').removeAttr( 'readonly','true' ); - $('#txtEditDiscount').val(''); - $('#txtEditAfterDiscount').val(''); - } - -}); - -$('#PackagingType').change(function() { - $('#txtPackaging').val(''); - $('#txtAfterPackaging').val(''); - selValue = $("#PackagingType").val() ; - if(selValue == PercentageType) - { - var PackagingCalculation = ''; - $('#packagingcalmodel').modal('show'); - $('#txtPackaging').removeAttr( 'readonly','true' ); - } - else - { - if (selValue == NilType) - { - - $('#txtPackaging').attr('readonly', 'true'); - $('#txtPackaging').val('0.00'); - } - else - { - $('#txtPackaging').removeAttr( 'readonly','true' ); - } - } - -}); -$('#EditPackagingType').change(function() { - $('#txtEditPackaging').val(''); - $('#txtEditAfterPackaging').val(''); - selValue = $("#EditPackagingType").val() ; - if(selValue == PercentageType) - { - var PackagingCalculation = ''; - $('#packagingcalmodel').modal('show'); - $('#txtEditPackaging').removeAttr( 'readonly','true' ); - } - else - { - if (selValue == NilType) - { - - $('#txtEditPackaging').attr('readonly', 'true'); - $('#txtEditPackaging').val('0.00'); - } - else - { - $('#txtEditPackaging').removeAttr( 'readonly','true' ); - } - } - -}); - -$('#txtExciseDuty').change(function() { - - - $('#ExciseDutyCalModel').modal('show'); -}); -$('#txtEditExciseDuty').change(function() { - - $('#ExciseDutyCalModel').modal('show'); - - -}); -$('#txtVat').change(function() { - - - $('#VatCalModel').modal('show'); - - -}); -$('#txtEditVat').change(function() { - - - $('#VatCalModel').modal('show'); - - -}); - -$('#txtCST').change(function() { - - $('#CSTCalModel').modal('show'); - - -}); -$('#txtEditCST').change(function() { - - - $('#CSTCalModel').modal('show'); - - }); -$('#drpFreight').change(function() { - - - selValue = $("#drpFreight").val() ; - $('#txtFreight').val(''); - $('#txtAfterFreight').val(''); - - if (selValue == NilType) - { - - $('#txtFreight').attr('readonly', 'true'); - $('#txtFreight').val('0.00'); - - } - else - { - $('#txtFreight').removeAttr( 'readonly','true' ); - $('#txtFreight').val(''); - - - } - -}); -$('#drpEditFreight').change(function() { - - - selValue = $("#drpEditFreight").val() ; - $('#txtEditFreight').val(''); - $('#txtEditAfterFreight').val(''); - - if (selValue == NilType) - { - - $('#txtEditFreight').attr('readonly', 'true'); - $('#txtEditFreight').val('0.00'); - - } - else - { - $('#txtEditFreight').removeAttr( 'readonly','true' ); - $('#txtEditFreight').val(''); - } - -}); -}); - -/* - * To calcuate the Discount */ -function calculateDiscount(isEdit) - { - if(isEdit == '0') - { - if($('#MaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#MaterialCode').focus(); - return false; - } - else if($('#Rate').val() == '') - { - alert('Please Enter the Rate value'); - $('#Rate').focus(); - return false; - } - if($('#Rate').val() != '' && $('#MaterialCode').val() != "0" ) - { - - var basicValue = parseFloat($('#txtBasicValue').val()); - var DiscountType =$("#DiscountType").val(); - - if(DiscountType == "0") - { - alert('Please Select the discount Type'); - $('#txtDiscount').val(''); - $("#DiscountType").focus(); - } - else if ($('#txtDiscount').val() != '' && $('#txtDiscount').val() != '0') - { - var AfterDiscount = 0.0; - var Discountval = parseFloat($('#txtDiscount').val()); - if(DiscountType == PercentageType) - { - - AfterDiscount = <?php echo DIS_PERCENTAGE;?>; - - } - else if(DiscountType == NilType ) - { - AfterDiscount = "0.00"; - } - else - { - AfterDiscount = <?php echo DIS_LUMPSUM;?>; - } - var discount = parseFloat(AfterDiscount).toFixed(2); - $('#txtAfterDiscount').val(discount); - } - else - { - $('#txtAfterDiscount').val("0.00"); - } - } - calculateTotalValue(); - } - else - { - if($('#EditMaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#EditMaterialCode').focus(); - return false; - } - else if($('#EditRate').val() == '') - { - alert('Please Enter the Rate value'); - $('#EditRate').focus(); - return false; - } - if($('#EditRate').val() != '' && $('#EditMaterialCode').val() != "0" ) - { - - var basicValue = parseFloat($('#txtEditBasicValue').val()); - var DiscountType =$("#EditDiscountType").val(); - - if(DiscountType == "0") - { - alert('Please Select the discount Type'); - $('#txtEditDiscount').val(''); - $("#EditDiscountType").focus(); - } - else if ($('#txtEditDiscount').val() != '' && $('#txtEditDiscount').val() != '0') - { - var AfterDiscount = 0.0; - var Discountval = parseFloat($('#txtEditDiscount').val()); - if(DiscountType == PercentageType) - { - - AfterDiscount = <?php echo DIS_PERCENTAGE;?>; - - } - else if(DiscountType == NilType ) - { - AfterDiscount = "0.00"; - } - else - { - AfterDiscount = <?php echo DIS_LUMPSUM;?>; - } - var discount = parseFloat(AfterDiscount).toFixed(2); - $('#txtEditAfterDiscount').val(discount); - } - else - { - $('#txtEditAfterDiscount').val("0.00"); - } - } - calculateEditTotalValue(); - } - } - /* - * To calcuate the Packaging */ -function calculatePackaging(isEdit) - { - if(isEdit == '0') - { - if($('#MaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#MaterialCode').focus(); - return false; - } - else if($('#Rate').val() == '') - { - alert('Please Enter the Rate value'); - $('#Rate').focus(); - return false; - } - else - { - - var basicValue = parseFloat($('#txtBasicValue').val()); - - var PackagingType =$("#PackagingType").val(); - - if(PackagingType == "0") - { - alert('Please select the Packaging Type'); - $('#txtPackaging').val(''); - $("#PackagingType").focus(); - } - - else if($('#txtPackaging').val() != '' && $('#txtPackaging').val() !='0') - { - var Packagingvalue = parseFloat($('#txtPackaging').val()); - var AfterPackaging = 0.0; - - if(PackagingType == PercentageType) - { - if($(PackagingCalculation != 0 && '#txtAfterDiscount').val() == '') - { - alert('Please Enter the Discount value'); - $('#txtPackaging').val(''); - $('#DiscountType').focus(); - - return false; - } - else - { - var AfterDiscount =parseFloat($('#txtAfterDiscount').val()); - AfterPackaging = PackagingCalculation == 0 ? <?php echo PACKAGING_PERCENTAGE_BYBASICVALUE ;?> : <?php echo PACKAGING_PERCENTAGE_BYDISCOUNTVALUE;?> ; - } - - } - else if(PackagingType == NilType ) - { - AfterPackaging = "0.00"; - - } - else - { - - - AfterPackaging = PackagingCalculation == 0 ? <?php echo PACKAGING_LUMPSUM_BYBASICVALUE ;?>:<?php echo PACKAGING_LUMPSUM_BYDISCOUNTVALUE;?> ; - - } - var Packaging = parseFloat(AfterPackaging).toFixed(2); - - $('#txtAfterPackaging').val(Packaging); - } - else - { - $('#txtAfterPackaging').val("0.00"); - } - } - calculateTotalValue(); - } - else - { - if($('#EditMaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#EditMaterialCode').focus(); - return false; - } - else if($('#EditRate').val() == '') - { - alert('Please Enter the Rate value'); - $('#EditRate').focus(); - return false; - } - - else - { - - var basicValue = parseFloat($('#txtEditBasicValue').val()); - - var PackagingType =$("#EditPackagingType").val(); - - if(PackagingType == "0") - { - alert('Please select the Packaging Type'); - $('#txtEditPackaging').val(''); - $("#EditPackagingType").focus(); - } - - else if($('#txtEditPackaging').val() != '' && $('#txtEditPackaging').val() !='0') - { - var Packagingvalue = parseFloat($('#txtEditPackaging').val()); - var AfterPackaging = 0.0; - - if(PackagingType == PercentageType) - { - if(PackagingCalculation != 0 &&$('#txtEditAfterDiscount').val() == '') - { - alert('Please Enter the Discount value'); - $('#EditDiscountType').focus(); - $('#txtEditPackaging').val(''); - return false; - } - else - { - var AfterDiscount =parseFloat($('#txtEditAfterDiscount').val()); - AfterPackaging = PackagingCalculation == 0 ? <?php echo PACKAGING_PERCENTAGE_BYBASICVALUE ;?> : <?php echo PACKAGING_PERCENTAGE_BYDISCOUNTVALUE;?> ; - } - - } - else if(PackagingType == NilType ) - { - AfterPackaging = "0.00"; - } - else - { - - AfterPackaging = PackagingCalculation == 0 ? <?php echo PACKAGING_LUMPSUM_BYBASICVALUE ;?>:<?php echo PACKAGING_LUMPSUM_BYDISCOUNTVALUE;?> ; - - } - var Packaging = parseFloat(AfterPackaging).toFixed(2); - - $('#txtEditAfterPackaging').val(Packaging); - } - else - { - $('#txtEditAfterPackaging').val("0.00"); - } - } - calculateEditTotalValue(); - } - } - - function calculateExcise(isEdit) - { - if(isEdit == '0') - { - - if($('#MaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#MaterialCode').focus(); - $('#txtExciseDuty').val(''); - return false; - } - else if($('#Rate').val() == '') - { - alert('Please Enter the Rate value'); - $('#txtExciseDuty').val(''); - $('#Rate').focus(); - return false; - } - - else - { - var basicValue = parseFloat($('#txtBasicValue').val()); - - - if($('#txtExciseDuty').val() != '' && $('#txtExciseDuty').val() != '0') - { - var AfterExciseDuty = 0.0; - var ExciseDuty = parseFloat($('#txtExciseDuty').val()); - if(ExciseCalculation == '0') - { - AfterExciseDuty = <?php echo EXCISE_ONBASICVALUE; ?>; - } - else if(ExciseCalculation == '1') - { - if($('#txtAfterDiscount').val() == '') - { - alert('Please Enter the Discount value'); - $('#DiscountType').focus(); - $('#txtExciseDuty').val(''); - return false; - } - else - { - var AfterDiscount =parseFloat($('#txtAfterDiscount').val()); - AfterExciseDuty = <?php echo EXCISE_ONBASIC_DISCOUNT; ?>; - } - } - else if(ExciseCalculation == '2') - { - if($('#txtAfterDiscount').val() == '') - { - alert('Please Enter the Discount value'); - $('#DiscountType').focus(); - $('#txtExciseDuty').val(''); - return false; - } - else if($('#txtAfterPackaging').val() == '') - { - alert('Please Enter the Packaging value'); - $('#PackagingType').focus(); - $('#txtExciseDuty').val(''); - return false; - - } - else - { - var AfterDiscount =parseFloat($('#txtAfterDiscount').val()); - var AfterPackaging = parseFloat($('#txtAfterPackaging').val()); - AfterExciseDuty = <?php echo EXCISE_ONBASIC_DISCOUNT_PACKAGING; ?>; - } - } - else - { - if($('#txtAfterPackaging').val() == '') - { - alert('Please Enter the Packaging value'); - $('#PackagingType').focus(); - $('#txtExciseDuty').val(''); - return false; - } - else - { - AfterExciseDuty = <?php echo EXCISE_ONBASIC_PACKAGING; ?>; - var AfterPackaging = parseFloat($('#txtAfterPackaging').val()); - } - } - var ExciseVal = parseFloat(AfterExciseDuty).toFixed(2); - - $('#txtAfterExciseDuty').val(ExciseVal); - } - else - { - $('#txtAfterExciseDuty').val("0.00"); - } - - } - calculateTotalValue(); - } - else - { - if($('#EditMaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#EditMaterialCode').focus(); - return false; - } - else if($('#EditRate').val() == '') - { - alert('Please Enter the Rate value'); - $('#EditRate').focus(); - return false; - } - - else - { - - var basicValue = parseFloat($('#txtEditBasicValue').val()); - - - - if($('#txtEditExciseDuty').val() != '' && $('#txtEditExciseDuty').val() != '0') - { - var AfterExciseDuty = 0.0; - var ExciseDuty = parseFloat($('#txtEditExciseDuty').val()); - if(ExciseCalculation == '0') - { - AfterExciseDuty = <?php echo EXCISE_ONBASICVALUE; ?>; - } - else if(ExciseCalculation == '1') - { - if($('#txtEditAfterDiscount').val() == '') - { - alert('Please Enter the Discount value'); - $('#EditDiscountType').focus(); - $('#txtEditExciseDuty').val(''); - return false; - } - else - { - var AfterDiscount =parseFloat($('#txtEditAfterDiscount').val()); - AfterExciseDuty = <?php echo EXCISE_ONBASIC_DISCOUNT; ?>; - } - } - else if(ExciseCalculation == '2') - { - if($('#txtEditAfterDiscount').val() == '') - { - alert('Please Enter the Discount value'); - $('#EditDiscountType').focus(); - $('#txtEditExciseDuty').val(''); - return false; - } - else if($('#txtEditAfterPackaging').val() == '') - { - alert('Please Enter the Packaging value'); - $('#EditPackagingType').focus(); - $('#txtEditExciseDuty').val(''); - return false; - } - else - { - var AfterDiscount =parseFloat($('#txtEditAfterDiscount').val()); - var AfterPackaging = parseFloat($('#txtEditAfterPackaging').val()); - AfterExciseDuty = <?php echo EXCISE_ONBASIC_DISCOUNT_PACKAGING; ?>; - } - } - else - { - if($('#txtEditAfterPackaging').val() == '') - { - alert('Please Enter the Packaging value'); - $('#EditPackagingType').focus(); - $('#txtEditExciseDuty').val(''); - return false; - } - else - { - var AfterPackaging = parseFloat($('#txtEditAfterPackaging').val()); - AfterExciseDuty = <?php echo EXCISE_ONBASIC_PACKAGING; ?>; - } - } - var ExciseVal = parseFloat(AfterExciseDuty).toFixed(2); - - $('#txtEditAfterExciseDuty').val(ExciseVal); - } - else - { - $('#txtEditAfterExciseDuty').val("0.00"); - } - - } - calculateEditTotalValue(); - } - - } - - function calculateVat(isEdit) - { - if(isEdit == '0') - { - if($('#MaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#MaterialCode').focus(); - return false; - } - else if($('#Rate').val() == '') - { - alert('Please Enter the Rate value'); - $('#Rate').focus(); - return false; - } - - else - { - var basicValue = parseFloat($('#txtBasicValue').val()); - var AfterVat = 0.0; - if(VatCalculation != 0 && $('#txtVat').val() != '' ) - { - - if($('#txtAfterExciseDuty').val() == '') - { - alert('Please Enter the Excise value'); - $('#txtExciseDuty').focus(); - $('#txtVat').val(''); - return false; - } - else - { - var ExciseDuty = parseFloat($('#txtAfterExciseDuty').val()); - vatValue = parseFloat($('#txtVat').val()); - AfterVat = <?php echo VAT_ONEXICSEVALUE; ?>; - var Vatval = parseFloat(AfterVat).toFixed(2); - - $('#txtAfterVat').val(Vatval); - } - } - else if(VatCalculation == 0 && $('#txtVat').val() != '') - { - vatValue = parseFloat($('#txtVat').val()); - AfterVat = <?php echo VAT_ONBASICVALUE; ?>; - var Vatval = parseFloat(AfterVat).toFixed(2); - - $('#txtAfterVat').val(Vatval); - } - - else - { - $('#txtAfterVat').val("0.00"); - } - calculateTotalValue(); - } - - } - else - { - if($('#EditMaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#EditMaterialCode').focus(); - return false; - } - else if($('#EditRate').val() == '') - { - alert('Please Enter the Rate value'); - $('#EditRate').focus(); - return false; - } - - else - { - var basicValue = parseFloat($('#txtEditBasicValue').val()); - var ExciseDuty = parseFloat($('#txtEditAfterExciseDuty').val()); - var AfterVat = 0.0; - if(VatCalculation != 0 && $('#txtEditVat').val() != '' ) - { - - if($('#txtEditAfterExciseDuty').val() == '') - { - alert('Please Enter the Excise value'); - $('#txtEditAfterExciseDuty').focus(); - $('#txtEditVat').val(''); - return false; - } - else - { - var ExciseDuty = parseFloat($('#txtEditAfterExciseDuty').val()); - vatValue = parseFloat($('#txtEditVat').val()); - AfterVat = <?php echo VAT_ONEXICSEVALUE; ?>; - var Vatval = parseFloat(AfterVat).toFixed(2); - - $('#txtEditAfterVat').val(Vatval); - } - } - else if(VatCalculation == 0 && $('#txtEditVat').val() != '') - { - vatValue = parseFloat($('#txtEditVat').val()); - AfterVat = <?php echo VAT_ONBASICVALUE; ?>; - var Vatval = parseFloat(AfterVat).toFixed(2); - - $('#txtEditAfterVat').val(Vatval); - } - - else - { - $('#txtEditAfterVat').val("0.00"); - } - - calculateEditTotalValue(); - } - - } - } - function calculateCST(isEdit) - { - if(isEdit == '0') - { - if($('#MaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#MaterialCode').focus(); - return false; - } - else if($('#Rate').val() == '') - { - alert('Please Enter the Rate value'); - $('#Rate').focus(); - return false; - } - - else - { - var basicValue = parseFloat($('#txtBasicValue').val()); - var AfterCST = 0.0; - if(CSTCalculation != 0 && $('#txtCST').val() != '' ) - { - - if($('#txtAfterExciseDuty').val() == '') - { - alert('Please Enter the Excise value'); - $('#txtExciseDuty').focus(); - $('#txtAfterCST').val(''); - return false; - } - else - { - var ExciseDuty = parseFloat($('#txtAfterExciseDuty').val()); - var CSTValue= parseFloat($('#txtCST').val()); - AfterCST = <?php echo CST_ONBASICVALUE; ?>; - var Vatval = parseFloat(AfterCST).toFixed(2); - - $('#txtAfterCST').val(Vatval); - } - } - else if(CSTCalculation == 0 && $('#txtCST').val() != '') - { - var CSTValue= parseFloat($('#txtCST').val()); - AfterCST = <?php echo CST_ONBASICVALUE; ?>; - var Vatval = parseFloat(AfterCST).toFixed(2); - - $('#txtAfterCST').val(Vatval); - } - - else - { - $('#txtAfterCST').val("0.00"); - } - calculateTotalValue(); - } - - } - else - { - if($('#EditMaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#EditMaterialCode').focus(); - return false; - } - else if($('#EditRate').val() == '') - { - alert('Please Enter the Rate value'); - $('#EditRate').focus(); - return false; - } - - else - { - - var basicValue = parseFloat($('#txtEditBasicValue').val()); - var AfterCST = 0.0; - if(CSTCalculation != 0 && $('#txtEditCST').val() != '' ) - { - - if($('#txtEditAfterExciseDuty').val() == '') - { - alert('Please Enter the Excise value'); - $('#txtEditAfterExciseDuty').focus(); - $('#txtEditCST').val(''); - return false; - } - else - { - var ExciseDuty = parseFloat($('#txtEditAfterExciseDuty').val()); - var CSTValue= parseFloat($('#txtEditCST').val()); - AfterCST = <?php echo CST_ONBASICVALUE; ?>; - var Vatval = parseFloat(AfterCST).toFixed(2); - - $('#txtEditAfterCST').val(Vatval); - } - } - else if(CSTCalculation == 0 && $('#txtEditCST').val() != '') - { - var CSTValue= parseFloat($('#txtEditCST').val()); - AfterCST = <?php echo CST_ONBASICVALUE; ?>; - var Vatval = parseFloat(AfterCST).toFixed(2); - - $('#txtEditAfterCST').val(Vatval); - } - - else - { - $('#txtEditAfterCST').val("0.00"); - } - - calculateEditTotalValue(); - } - - } - } - function calculateGST(isEdit) - { - if(isEdit == '0') - { - if($('#MaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#MaterialCode').focus(); - return false; - } - else if($('#Rate').val() == '') - { - alert('Please Enter the Rate value'); - $('#Rate').focus(); - return false; - } - else - { - var basicValue = parseFloat($('#txtBasicValue').val()); - - if($('#txtGST').val() != "0" && $('#txtGST').val() != '') - { - var GSTValue = parseFloat($('#txtGST').val()); - - var AfterGST = 0.0; - AfterGST = <?php echo GSTTAX; ?>; - - var GSTval = parseFloat(AfterGST).toFixed(2); - - $('#txtAfterGST').val(GSTval); - } - else - { - $('#txtAfterGST').val("0.00"); - } - - } - calculateTotalValue(); - } - else - { - if($('#EditMaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#EditMaterialCode').focus(); - return false; - } - else if($('#EditRate').val() == '') - { - alert('Please Enter the Rate value'); - $('#EditRate').focus(); - return false; - } - else - { - var basicValue = parseFloat($('#txtEditBasicValue').val()); - - if($('#txtEditGST').val() != "0" && $('#txtEditGST').val() != '') - { - var GSTValue = parseFloat($('#txtEditGST').val()); - - var AfterGST = 0.0; - AfterGST = <?php echo GSTTAX; ?>; - - var GSTval = parseFloat(AfterGST).toFixed(2); - - $('#txtEditAfterGST').val(GSTval); - } - else - { - $('#txtEditAfterGST').val("0.00"); - } - - } - calculateEditTotalValue(); - - } - } - function calculateOtherTaxes(isEdit) - { - if(isEdit == '0') - { - if($('#MaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#MaterialCode').focus(); - return false; - } - else if($('#Rate').val() == '') - { - alert('Please Enter the Rate value'); - $('#Rate').focus(); - return false; - } - else - { - var basicValue = parseFloat($('#txtBasicValue').val()); - - - if($('#txtOtherTax').val() != "0" && $('#txtOtherTax').val() != '') - { - var OtherTaxValue = parseFloat($('#txtOtherTax').val()); - - var AfterOtherTaxes = 0.0; - AfterOtherTaxes = <?php echo OTHERTAX; ?>; - - var Otherval = parseFloat(AfterOtherTaxes).toFixed(2); - - $('#txtAfterOtherTax').val(Otherval); - } - else - { - $('#txtAfterOtherTax').val("0.00"); - } - calculateTotalValue(); - - } - } - else - { - if($('#EditMaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#EditMaterialCode').focus(); - return false; - } - else if($('#EditRate').val() == '') - { - alert('Please Enter the Rate value'); - $('#EditRate').focus(); - return false; - } - else - { - var basicValue = parseFloat($('#txtEditBasicValue').val()); - - - if($('#txtEditOtherTax').val() != "0" && $('#txtEditOtherTax').val() != '') - { - var OtherTaxValue = parseFloat($('#txtEditOtherTax').val()); - - var AfterOtherTaxes = 0.0; - AfterOtherTaxes = <?php echo OTHERTAX; ?>; - - var Otherval = parseFloat(AfterOtherTaxes).toFixed(2); - - $('#txtEditAfterOtherTax').val(Otherval); - } - else - { - $('#txtEditAfterOtherTax').val("0.00"); - } - calculateEditTotalValue(); - - } - - } - } - - function calculateFreight(isEdit) - { - if(isEdit == '0') - { - if($('#MaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#MaterialCode').focus(); - return false; - } - else if($('#Rate').val() == '') - { - alert('Please Enter the Rate value'); - $('#Rate').focus(); - return false; - } - else - { - var basicValue = parseFloat($('#txtBasicValue').val()); - var FreightType =$("#drpFreight").val(); - if(FreightType == "0") - { - alert('Please select Freight Type'); - $('#txtFreight').val(''); - $("#drpFreight").focus(); - } - else if( $('#txtFreight').val() != "0" && $('#txtFreight').val() != '') - { - var FreightValue = parseFloat($('#txtFreight').val()); - var UOM = parseFloat($('#UOM').val()); - var Quantity = parseFloat($('#Quantity').val()); - //alert(FreightType); - var AfterFreight = 0.0; - if(FreightType == PercentageType) - { - AfterFreight = <?php echo FREIGHT_PERCENTAGE;?>; - } - else if(FreightType == NilType) - { - AfterFreight = 0.0; - } - else if(FreightType == '<?php echo LUMPSUM;?>') - { - AfterFreight = <?php echo FREIGHT_LUMPSUM;?>; - } - else if(FreightType == '<?php echo PERUOM;?>') - { - AfterFreight = <?php echo FREIGHT_PERUOM;?>; - } - else if(FreightType == '<?php echo PERTRIP;?>') - { - AfterFreight = <?php echo FREIGHT_PERTRIP;?>; - } - var AfterFreightval = parseFloat(AfterFreight).toFixed(2); - - $('#txtAfterFreight').val(AfterFreightval); - } - else - { - $('#txtAfterFreight').val("0.00"); - } - - } - calculateTotalValue(); - } - else - { - if($('#EditMaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#EditMaterialCode').focus(); - return false; - } - else if($('#EditRate').val() == '') - { - alert('Please Enter the Rate value'); - $('#EditRate').focus(); - return false; - } - else - { - var basicValue = parseFloat($('#txtEditBasicValue').val()); - var FreightType =$("#drpEditFreight").val(); - if(FreightType == "0") - { - alert('Please select Freight Type'); - $('#txtEditFreight').val(''); - $("#drpEditFreight").focus(); - } - else if( $('#txtEditFreight').val() != "0" && $('#txtEditFreight').val() != '') - { - var FreightValue = parseFloat($('#txtEditFreight').val()); - var UOM = parseFloat($('#EditUOM').val()); - var Quantity = parseFloat($('#EditQuantity').val()); - //alert(FreightType); - var AfterFreight = 0.0; - if(FreightType == PercentageType) - { - AfterFreight = <?php echo FREIGHT_PERCENTAGE;?>; - } - else if(FreightType == NilType) - { - AfterFreight = 0.0; - } - else if(FreightType == '<?php echo LUMPSUM;?>') - { - AfterFreight = <?php echo FREIGHT_LUMPSUM;?>; - } - else if(FreightType == '<?php echo PERUOM;?>') - { - AfterFreight = <?php echo FREIGHT_PERUOM;?>; - } - else if(FreightType == '<?php echo PERTRIP;?>') - { - AfterFreight = <?php echo FREIGHT_PERTRIP;?>; - } - var AfterFreightval = parseFloat(AfterFreight).toFixed(2); - - $('#txtEditAfterFreight').val(AfterFreightval); - } - else - { - $('#txtEditAfterFreight').val("0.00"); - } - - } - calculateEditTotalValue(); - - } - } - - /* Set the Packaging calculation option for calculating Packaging */ - function SetPackagingOption() - { - PackagingCalculation = $("input:radio[name='optPackaging']:checked").val(); - $('#packagingcalmodel').modal('hide'); - calculatePackaging($('#isEdit').val()); - } - /* Set the Packaging calculation option for calculating Packaging */ - function SetExciseCalculation() - { - ExciseCalculation = $("input:radio[name='optExcise']:checked").val(); - $('#ExciseDutyCalModel').modal('hide'); - calculateExcise($('#isEdit').val()); - } - /* Set the Packaging calculation option for calculating Packaging */ - function SetVatorCST() - { - StateTaxCheck = $("input:radio[name='Range']:checked").val(); - $('#txtPoRange').val(StateTaxCheck) ; - //alert('Radio clicke:'+StateTaxCheck); - if(StateTaxCheck == "0") - { - // style="display:none;" - $('#Vat').removeAttr("style"); - $('#TotVat').removeAttr("style"); - $('#CST').attr("style","display:none;"); - $('#TotCST').attr("style","display:none;"); - } - else - { - $('#CST').removeAttr("style"); - $('#TotCST').removeAttr("style"); - $('#Vat').attr("style","display:none;"); - $('#TotVat').attr("style","display:none;"); - } - } - function SetVatCalculation() - { - VatCalculation = $("input:radio[name='optVat']:checked").val(); - $('#VatCalModel').modal('hide'); - calculateVat($('#isEdit').val()); - } - function SetCSTCalculation() - { - CSTCalculation = $("input:radio[name='optCST']:checked").val(); - $('#CSTCalModel').modal('hide'); - calculateCST($('#isEdit').val()); - } - - function ExceedQuantityCheck() - { - // RequistQuantity - var EnterQuantity = $("#Quantity").val()== '' ? "0.00" : parseFloat($("#Quantity").val()); - var ReqQuantity = parseFloat(RequistQuantity); - if(EnterQuantity > ReqQuantity) - { - alert('Your exceeding the Quantity from the Requisition Quantity:'+ RequistQuantity +'.Please adjust the Quantity to proceed further.'); - //$('#Quantity').val(RequistQuantity); - $('#Quantity').focus(); - return false; - } - } - - function ExceedEditQuantityCheck() - { - // RequistQuantity - var EnterQuantity = $("#EditQuantity").val()== '' ? "0.00" : parseFloat($("#EditQuantity").val()); - var ReqQuantity = parseFloat(RequistQuantity); - if(EnterQuantity > ReqQuantity) - { - alert('Your exceeding the Quantity from the Requisition Quantity:'+ RequistQuantity +'.Please adjust the Quantity to proceed further.'); - $('#EditQuantity').focus(); - return false; - } - } - // To Reset the Tax calculation - function resetTaxField() - { - - $("#ItemName").val(''); - $("#UOM").val(''); - $("#Quantity").val(''); - $("#Rate").val(''); - $("#DiscountType").val("0"); - $("#txtDiscount").val(''); - $('#txtAfterDiscount').val(''); - $("#PackagingType").val("0") - $("#txtPackaging").val(''); - $('#txtAfterPackaging').val(''); - $("#txtExciseDuty").val(''); - $('#txtAfterExciseDuty').val(''); - $("#txtVat").val(''); - $('#txtAfterVat').val(''); - $("#txtCST").val(''); - $('#txtAfterCST').val(''); - $("#txtGST").val(''); - $('#txtAfterGST').val(''); - $("#txtOtherTax").val(''); - $('#txtAfterOtherTax').val(''); - $("#drpFreight").val("0") - $("#txtFreight").val(''); - $('#txtAfterFreight').val(''); - $('#txtInsurance').val(''); - $('#txtTotalOrderValue').val(''); - ExciseCalculation = ''; - PackagingCalculation = ''; - VatCalculation = ''; - CSTCalculation = ''; - } - - function Editchange(){ - ExceedEditQuantityCheck(); - if($('#EditQuantity').val() != '' && $('#EditRate').val() != '') - { - var txtQuantity = parseFloat( $('#EditQuantity').val()); - var txtUnitPrice = parseFloat($('#EditRate').val()); - var Tot = txtQuantity * txtUnitPrice - $('#txtEditBasicValue').val(Tot); - calculateEditTotalValue($('#isEdit').val()); - - } -} - -function validateEditExceedLimit() - { - var avalbudAmt = parseFloat($('#EditAvlBudAmt').val()); - var basicAmountRate = parseFloat($('#txtEditBasicValue').val()); - var totalAmount = parseFloat($('#txtEditTotalOrderValue').val()); - - if(basicAmountRate > avalbudAmt || totalAmount > avalbudAmt) - { - alert('Basic amount is exceeding the Budget Limit.Please adjust the product value.'); - $('#EditRate').focus(); - return false; - } - else - { - return true; - } - - } - function calculateEditTotalValue() - { - var Packaging = $('#txtEditAfterPackaging').val() == '' ? '0.00' : $('#txtEditAfterPackaging').val(); - var ExciseDuty = $('#txtEditAfterExciseDuty').val() == '' ? '0.00' : $('#txtEditAfterExciseDuty').val(); - var Vat = $('#txtEditAfterVat').val() == '' ? '0.00' : $('#txtEditAfterVat').val(); - var CST = $('#txtEditAfterCST').val() == '' ? '0.00' : $('#txtEditAfterCST').val(); - var GST = $('#txtEditAfterGST').val() == '' ? '0.00' : $('#txtEditAfterGST').val(); - var OtherTax = $('#txtEditAfterOtherTax').val() == '' ? '0.00' : $('#txtEditAfterOtherTax').val(); - var Freight = $('#txtEditAfterFreight').val() == '' ? '0.00' : $('#txtEditAfterFreight').val(); - var Insurance = $('#txtEditInsurance').val() == '' ? '0.00' : $('#txtEditInsurance').val(); - var Discount = $('#txtEditAfterDiscount').val() == '' ? '0.00' : $('#txtEditAfterDiscount').val(); - var BasicVal = $('#txtEditBasicValue').val() == '' ? '0.00' : $('#txtEditBasicValue').val(); - - var totvalue = ( parseFloat(BasicVal) + parseFloat(Packaging)+ parseFloat(ExciseDuty)+ parseFloat(Vat) + parseFloat(CST)+ parseFloat(GST) + parseFloat(OtherTax) + parseFloat(Freight) + parseFloat(Insurance)) - parseFloat(Discount); - - var tot = parseFloat(totvalue).toFixed(2); - - $('#txtEditTotalOrderValue').val(tot); - validateEditExceedLimit(); - ExceedEditQuantityCheck(); - } -function calculateEditTaxValue() - { - var Packaging = $('#txtEditAfterPackaging').val() == '' ? '0.00' : $('#txtEditAfterPackaging').val(); - var ExciseDuty = $('#txtEditAfterExciseDuty').val() == '' ? '0.00' : $('#txtEditAfterExciseDuty').val(); - var Vat = $('#txtEditAfterVat').val() == '' ? '0.00' : $('#txtEditAfterVat').val(); - var CST = $('#txtEditAfterCST').val() == '' ? '0.00' : $('#txtEditAfterCST').val(); - var GST = $('#txtEditAfterGST').val() == '' ? '0.00' : $('#txtEditAfterGST').val(); - var OtherTax = $('#txtEditAfterOtherTax').val() == '' ? '0.00' : $('#txtEditAfterOtherTax').val(); - var Freight = $('#txtEditAfterFreight').val() == '' ? '0.00' : $('#txtEditAfterFreight').val(); - var Insurance = $('#txtEditInsurance').val() == '' ? '0.00' : $('#txtEditInsurance').val(); - var Discount = $('#txtEditAfterDiscount').val() == '' ? '0.00' : $('#txtEditAfterDiscount').val(); - - - var totvalue = parseFloat(Discount) -( parseFloat(Packaging)+ parseFloat(ExciseDuty)+ parseFloat(Vat) + parseFloat(CST)+ parseFloat(GST) + parseFloat(OtherTax) + parseFloat(Freight) + parseFloat(Insurance)) ; - - var tot = parseFloat(totvalue).toFixed(2); - //alert('tot:'+tot); - return tot; - } - $(document).ready(function () { - $('#Date').click(function () { - //for Date range selection - $('#Schedulediv').hide(); - $('#Deliverydtdiv').show(); - }); - $('#Schedule').click(function () { - //for schedule range selection - $('#Deliverydtdiv').hide(); - $('#Schedulediv').show(); - }); - }); -</script> -<style> -.content { - Padding:0% ! important; -} -body { - background-color: #ecf0f5; -} -.pagination { - margin :0px ! important; -} -.box-body { - padding:0px ! important; -} -.num { - text-align:right; -} -</style> -<div class="content-wrapper"> - <?php - $attributes = array('class' => 'form-label-left CreatePO ','name' => 'CreatePO','id' => 'CreatePO'); - - echo form_open($this->config->base_url().'/purchaseorder/addPO/',$attributes); ?> - - <section class="content"> - - <div> - <center><b><h2>Siddharth Industries - Edit Revenue Purchase Order - <?php echo $PONO;?></h2></b></center></div><br/><br/> - <div class="container-fluid"> - <div class="row"> - <div class="col-md-12"> - <div class="col-md-3"> - <div class="col-md-12"> - <label>Requistion No</label> - <?php - $options = array("0"=>'Selected Requisition Numbers'); - if(!empty($ReqList)) - { - foreach ($ReqList as $SID): - - $options[$SID->ReqNo] = $SID->ReqNo ; - //$ReqType = $SID->ReqType; - endforeach; - } - echo form_multiselect('RequistionNo', $options,set_value('RequistionNo'),'id="RequistionNo"' ,'required="true"' , 'height="400px"' ); - ?> - </div> - <div class="col-md-12"> - <label>Purchase Order Date</label> - <div class="form-group"> - <?php - $data = array('name' => 'PODate','value' => set_value('PODate',$PODate),'id'=>'PODate', 'class' => 'form-control num' ,'required' => 'true','onkeypress'=>'return false;'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-9"> - <div class="row"> - <div class="col-md-4"> - <label>Select Supplier</label> - <?php - $options = array("0"=>'Select Supplier'); - //print_r( $options); - - if(!empty($Suplist)) - { - foreach ($Suplist as $SID): - - - $options[$SID->SupplierID] = $SID->SupplierID.' '.' - '.' '.$SID->SupplierName; - - endforeach; - } - - echo form_dropdown('drpSupplier', $options,set_value('drpSupplier',$SupId),'id="drpSupplier"' ,'required="true"' ,'class="form-control select2'); - - ?> - </div> - <div class="col-md-4"> - <label>Purchase Order Type</label> - <div class="form-group"> - - <?php - $data = array('name' => 'POType','value' => set_value('POType',REVENUE),'id'=>'POType', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2" style="padding:0px;"> - <div id="div1" style="display:block;"> - <b><u>Select Tax Range</u></b><br/> - <tr> - <td> - <?php echo form_label('Local', 'Local') ."&nbsp;&nbsp;". form_radio(array("name"=>"Range","id"=>"Local","value"=>"0", 'checked'=>set_radio('Range', '0', TRUE),'onchange'=>'SetVatorCST();')); ?>&nbsp;&nbsp;&nbsp;&nbsp;</td> - <td><?php echo form_label('Inter state', 'Inter state') ."&nbsp;&nbsp;". form_radio(array("name"=>"Range","id"=>"Inter_state","value"=>"1", 'checked'=>set_radio('Range', '1', FALSE),'onchange'=>'SetVatorCST();')); ?> - </td> - </tr> - </div> - <div id="div2" style="display:none;"> - </div> - <div id="div4" style="display:none;"> - </div> - </div> - <div class="col-md-2" style="padding:0px;"> - - <b><u>Select Delivery By</u></b><br/> - <tr> - <td> - <?php echo form_label('Date', 'Date') . "&nbsp;&nbsp;". form_radio(array('name' => 'DateRange', 'value' => '0', 'checked' => ('0' == $DeliverOption) ? TRUE : FALSE, 'id' => 'Date')); ?> - -<td> - <?php echo form_label('Schedule', 'Schedule') . form_radio(array('name' => 'DateRange', 'value' => '1', 'checked' => ('1' == $DeliverOption) ? TRUE : FALSE, 'id' => 'Schedule')); ?> - - -</td> - </tr> - </div> - </div> - <div class="row"> - <div class="col-md-4"> - <label>Supplier Address</label> - <div class="form-group"> - <?php - $data = array('name' => 'SupAddress','value' => set_value('SupAddress',$Address),'id'=>'SupAddress', 'class' => 'form-control' ,'readonly' => 'true' ,'rows' => '3', 'cols' => '40'); - echo Form_textarea($data); - ?> - </div> - </div> - <div class="col-md-4"> - <label>Delivery Address</label> - <div class="form-group"> - <?php - $data = array('name' => 'DeliveryAddr','value' => set_value('DeliveryAddr',$DeliveryAddress),'id'=>'DeliveryAddr', 'class' => 'form-control' ,'required' => 'true' ,'rows' => '3', 'cols' => '40'); - echo Form_textarea($data); - ?> <input type="hidden" name="txtDeliveryAddress" id="txtDeliveryAddress" value="<?php echo $DeliveryAddress;?>"> - </div> - </div> - <div class="col-md-4" id="Deliverydtdiv" style="padding:0%;"> - <label>Delivery Date</label> - <div class="form-group"> - <?php - $data = array('name' => 'Deliverydt','value' => set_value('Deliverydt',$Deliverydt),'id'=>'Deliverydt', 'class' => 'form-control num' ,'required' => 'true','onkeypress'=>'return false;'); - echo form_input($data); - ?> - - </div> - </div> - <div class="col-md-4" id="Schedulediv" style="display:none;padding:0%;"> - <label >Schedule </label> - <?php - $data = array('name' => 'Scheduleby','value' => set_value('Scheduleby'),'id'=>'Scheduleby', 'class' => 'form-control' ,'required' => 'true' ,'rows' => '3', 'cols' => '40'); - echo Form_textarea($data); - ?> - </div> - </div> - </div> - - </div> - </div> - <!-- Modal for Packing Calculation --> - <div id="packagingcalmodel" class="modal fade" data-backdrop-limit="1" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" > - <div class="modal-dialog"> - - <!-- Modal content--> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal">&times;</button> - <h4 class="modal-title">Packing Calculation On</h4> - </div> - <div class="modal-body"> - <form> - - <div class="radio"> - <label><input type="radio" name="optPackaging" checked="checked" value='0' id="optPackaging"> Basic Amount</label> - </div> - <div class="radio"> - <label><input type="radio" name="optPackaging" id="optPackaging" value='1' > After Discount Amount</label> - </div> - </form> - </div> - <div class="modal-footer"> - - <a class="btn btn-primary" ID="PackagingOption" onclick="SetPackagingOption();" style="margin-top: -24px;">&nbsp;&nbsp;<span class="bold">Ok</span></a> - <a class="btn btn-primary" data-dismiss="modal" style="margin-top: -24px;" value="Cancel">Cancel</a> - </div> - </div> - - </div> - </div> - - <!-- Modal for Excise Duty Calculation--> - <div class="modal fade" id="ExciseDutyCalModel" role="dialog"> - <div class="modal-dialog"> - - <!-- Modal content--> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal">&times;</button> - <h4 class="modal-title">Excise Duty Calculation On</h4> - </div> - <div class="modal-body"> - <form> - <div class="radio"> - <label><input type="radio" name="optExcise" checked="checked" value="0" id="optExcise">From Basic Amount</label> - </div> - <div class="radio"> - <label><input type="radio" name="optExcise" value="1" id="optExcise">Basic Amount - Discount Amount</label> - </div> - <div class="radio"> - <label><input type="radio" name="optExcise" value="2" id="optExcise">(Basic Amount - Discount Amount ) + Packing Cost</label> - </div> - <div class="radio"> - <label><input type="radio" name="optExcise" value="3" id="optExcise">Basic Amount + Packing Cost</label> - </div> - - </form> - </div> - <div class="modal-footer"> - <a class="btn btn-primary" ID="ExciseOption" onclick="SetExciseCalculation();" style="margin-top: -24px;">&nbsp;&nbsp;<span class="bold">Ok</span></a> - <a class="btn btn-primary" data-dismiss="modal" style="margin-top: -24px;" value="Cancel">Cancel</a> - </div> - </div> - - </div> - </div> - - - <!-- Modal for Vat Calculation --> - <div class="modal fade" id="VatCalModel" role="dialog"> - <div class="modal-dialog"> - - <!-- Modal content--> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal">&times;</button> - <h4 class="modal-title">Vat Calculation On</h4> - </div> - <div class="modal-body"> - <form> - - <div class="radio"> - <label><input type="radio" name="optVat" checked="checked" value="0" id="optVat">Basic Amount</label> - </div> - <div class="radio"> - <label><input type="radio" name="optVat" value="1" id="optVat">Excise Duty</label> - </div> - </form> - </div> - <div class="modal-footer"> - <a class="btn btn-primary" ID="VatOption" onclick="SetVatCalculation();" style="margin-top: -24px;">&nbsp;&nbsp;<span class="bold">Ok</span></a> - <a class="btn btn-primary" data-dismiss="modal" style="margin-top: -24px;" value="Cancel">Cancel</a> - </div> - </div> - - </div> - </div> - <!-- Modal for CST Calculation --> - <div class="modal fade" id="CSTCalModel" role="dialog"> - <div class="modal-dialog"> - - <!-- Modal for CST Calculation--> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal">&times;</button> - <h4 class="modal-title">CST Calculation On</h4> - </div> - <div class="modal-body"> - <form> - - <div class="radio"> - <label><input type="radio" name="optCST" checked="checked" value="0" id="optCST">Basic Amount</label> - </div> - <div class="radio"> - <label><input type="radio" name="optCST" value="1" id="optCST">Excise Duty</label> - </div> - </form> - </div> - <div class="modal-footer"> - <a class="btn btn-primary" ID="CSTOption" onclick="SetCSTCalculation();" style="margin-top: -24px;">&nbsp;&nbsp;<span class="bold">Ok</span></a> - <a class="btn btn-primary" data-dismiss="modal" style="margin-top: -24px;" value="Cancel">Cancel</a> - </div> - </div> - - </div> - </div> - <div class="container-fluid"> - <table> - <div align="right"> - <div align="right"> - <a data-toggle="modal" ><button type="submit" onclick="myFunction();" class="btn btn-primary" id="abcd" >Add Line Item</button> </a> - </div> - - <!-- Model for revenue po --> - <div id="REVENUE" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> - <div class="modal-dialog"> - <!-- Modal content--> - <form> - <div class="modal-content" style="width:1000px;"> - <div class="modal-header" style="background-color: #3c8dbc;color:#fff;"> - <center><h4>Select Revenue Purchase Order Line Item </h4></center> - </div> - <div align="left"> - <div> - <div class="col-md-12" > - <div class="col-md-3"> - <label>Req No</label> - <div > - <?php - $RL = array("0"=>'Select Req No'); - if(!empty($RequistionDetails)) - { - foreach ($RequistionDetails as $SID): - $RL[$SID->ReqNo] = $SID->ReqNo.' '.' - '.' '.$SID->DepartmentName; - endforeach; - } - - echo form_dropdown('ReqNo', $RL,set_value('ReqNo'),'id="ReqNo"' ,'class="form-control"'); - - ?> - </div> - </div> - - <div class="col-md-3"> - <label>Department Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'deptName','value' => set_value('deptName'),'id'=>'deptName', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-3"> - <label>Cost Center Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'CostCenter','value' => set_value('CostCenter'),'id'=>'CostCenter', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - - ?> - </div> - </div> - <div class="col-md-2"> - <label>Avl Bud Amt</label> - <div class="form-group"> - <?php - $data = array('name' => 'AvlBudAmt','value' => set_value('AvlBudAmt'),'id'=>'AvlBudAmt', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-2"> - <label>Item Code</label> - <div > - <?php - $options = array("0"=>'Item Code'); - - - echo form_dropdown('MaterialCode', $options,set_value('MaterialCode'),'id="MaterialCode"' ,'class="form-control"'); - - ?> - </div> - </div> - - <div class="col-md-2"> - <label>Item Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'ItemName','value' => set_value('ItemName'),'id'=>'ItemName', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>UOM</label> - <div class="form-group"> - <?php - $data = array('name' => 'UOM','value' => set_value('UOM'),'id'=>'UOM', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Quantity</label> - <div class="form-group"> - <?php - $data = array('name' => 'Quantity','value' => set_value('Quantity'),'id'=>'Quantity', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'change()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Rate</label> - <div class="form-group"> - <?php - $data = array('name' => 'Rate','value' => set_value('Rate'),'id'=>'Rate', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'change()' ); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Basic Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtBasicValue','value' => set_value('txtBasicValue'),'id'=>'txtBasicValue', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - </div><br/> - <div class="col-md-12" style="border : 1px solid"> - <div class="row"> - <div class="col-md-12"> - <div class="col-md-4"> - <label>Discount Type </label> - <div> - <?php - $options = array("0"=>'Select Discount Type'); - //print_r( $options); - - if(!empty($TaxType)) - { - foreach ($TaxType as $SID): - - - $options[$SID->ConfigValue] = $SID->ConfigValue; - - endforeach; - } - - echo form_dropdown('DiscountType', $options,set_value('DiscountType'),'id="DiscountType"' ,'class="form-control"'); - - ?> - </div> - </div> - <div class="col-md-2"> - <label>Discount Rate </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtDiscount','value' => set_value('txtDiscount'),'id'=>'txtDiscount', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);' ,'onchange'=>'calculateDiscount(0);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Discounted Amount </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtAfterDiscount','value' => set_value('txtAfterDiscount'),'id'=>'txtAfterDiscount', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div id="Vat" > - <div class="col-md-2" > - <label>Vat in %</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtVat','value' => set_value('txtVat'),'id'=>'txtVat', 'class' => 'form-control num','onchange'=>'calculateVat(0);' ); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2" > - <label>Vat Amount </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtAfterVat','value' => set_value('txtAfterVat'),'id'=>'txtAfterVat', 'class' => 'form-control num' ,'readonly' => 'true','onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div style="display:none;" id="CST"> - <div class="col-md-2 col-md-offset-2" > - <label>CST in %</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtCST','value' => set_value('txtCST'),'id'=>'txtCST', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'calculateCST(0);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2" > - <label>CST Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtAfterCST','value' => set_value('txtAfterCST'),'id'=>'txtAfterCST', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - </div> - </div> - <div class="row"> - <div class="col-md-12" style="text-align:left;"> - <div class="col-md-4"> - <label>Packaging Type </label> - <div> - <?php - $options = array("0"=>'Select Packaging Type'); - //print_r( $options); - - if(!empty($TaxType)) - { - foreach ($TaxType as $SID): - - - $options[$SID->ConfigValue] = $SID->ConfigValue; - - endforeach; - } - - echo form_dropdown('PackagingType', $options,set_value('PackagingType'),'id="PackagingType"' ,'class="form-control "'); - - ?> - </div> - </div> - <div class="col-md-2"> - <label>Packaging Rate </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtPackaging','value' => set_value('txtPackaging'),'id'=>'txtPackaging', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'calculatePackaging(0);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Packaging Amount </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtAfterPackaging','value' => set_value('txtAfterPackaging'),'id'=>'txtAfterPackaging', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>GST in %</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtGST','value' => set_value('txtGST'),'id'=>'txtGST', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>' calculateGST(0);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>GST Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtAfterGST','value' => set_value('txtAfterGST'),'id'=>'txtAfterGST', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - - </div> - </div> - <div class="row"> - <div class="col-md-12 " > - <div class="col-md-2 col-md-offset-4"> - <label>Excise Duty in % </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtExciseDuty','value' => set_value('txtExciseDuty'),'id'=>'txtExciseDuty', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'calculateExcise(0);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label> Excise Duty Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtAfterExciseDuty','value' => set_value('txtAfterExciseDuty'),'id'=>'txtAfterExciseDuty', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Other Taxes in %</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtOtherTax','value' => set_value('txtOtherTax'),'id'=>'txtOtherTax', 'class' => 'form-control num','onkeypress'=>'return isNumberKey(event);','onchange'=>'calculateOtherTaxes(0);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Other Taxes Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtAfterOtherTax','value' => set_value('txtAfterOtherTax'),'id'=>'txtAfterOtherTax', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - - </div> - </div> - <div class="row"> - <div class="col-md-12" > - <div class="col-md-4"> - <label>Freight Type </label> - <div> - <?php - $options = array("0"=>'Select Freight Type'); - //print_r( $options); - - if(!empty($FreightType)) - { - foreach ($FreightType as $SID): - - - $options[$SID->ConfigValue] = $SID->ConfigValue; - - endforeach; - } - - echo form_dropdown('drpFreight', $options,set_value('drpFreight'),'id="drpFreight"' ,'class="form-control "'); - - ?> - </div> - </div> - <div class="col-md-2"> - <label>Freight Rate </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtFreight','value' => set_value('txtFreight'),'id'=>'txtFreight', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'calculateFreight(0);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Freight Amount </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtAfterFreight','value' => set_value('txtAfterFreight'),'id'=>'txtAfterFreight', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <label> Insurance if Any</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtInsurance','value' => set_value('txtInsurance'),'id'=>'txtInsurance', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'calculateTotalValue(0);'); - echo form_input($data); - ?> - </div> - </div> - - - </div> - </div><hr/> - <div class="row"> - <div class="col-md-12" > - - <div class="col-md-4" align="right"> <label>Total Order Amount :</label></div> - <div class="col-md-4 "> - <div class="form-group"> - <?php - $data = array('name' => 'txtTotalOrderValue','value' => set_value('txtTotalOrderValue'),'id'=>'txtTotalOrderValue', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4 "> - - <a class="btn btn-primary font AddRevenue" ID="AddRevenue"><i class="fa fa-plus"></i>&nbsp;&nbsp;<span class="bold">Add Revenue</span></a> - <a class="btn btn-primary" data-dismiss="modal" value="Cancel">Cancel</a> - </div> - </div> - </div> - </div> - <br/><br/> - <!-- footer for revenue po --> - <div class="modal-footer"> - - </div> - </div> - - </div> - </form> - </div> - </div> - - <br/> - <div id="EDITREVENUE" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> - <div class="modal-dialog"> - <!-- Modal content--> - <form> - <div class="modal-content" style="width:1000px;"> - <div class="modal-header" style="background-color: #3c8dbc;color:#fff;"> - <center><h4>Edit Revenue Purchase Order Line Item </h4></center> - </div> - <div align="left"> - <div> - <div class="col-md-12" > - <div class="col-md-3"> - <label>Req No</label> - <div > - <?php - - $data = array('name' => 'EditReqNo','value' => set_value('EditReqNo'),'id'=>'EditReqNo', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - - ?> - </div> - </div> - - <div class="col-md-3"> - <label>Department Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditdeptName','value' => set_value('EditdeptName'),'id'=>'EditdeptName', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-3"> - <label>Cost Center Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditCostCenter','value' => set_value('EditCostCenter'),'id'=>'EditCostCenter', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - - ?> - </div> - </div> - <div class="col-md-2"> - <label>Avl Bud Amt</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditAvlBudAmt','value' => set_value('EditAvlBudAmt'),'id'=>'EditAvlBudAmt', 'class' => 'form-control num' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-2"> - <label>Item Code</label> - <div > - <?php - $options = array("0"=>'Item Code'); - - - echo form_dropdown('EditMaterialCode', $options,set_value('EditMaterialCode'),'id="EditMaterialCode"' ,'class="form-control"'); - - ?> - </div> - </div> - - <div class="col-md-2"> - <label>Item Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditItemName','value' => set_value('EditItemName'),'id'=>'EditItemName', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>UOM</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditUOM','value' => set_value('EditUOM'),'id'=>'EditUOM', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Quantity</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditQuantity','value' => set_value('EditQuantity'),'id'=>'EditQuantity', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'Editchange()','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Rate</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditRate','value' => set_value('EditRate'),'id'=>'EditRate', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'Editchange()','style'=>'text-align:right;' ); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Basic Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditBasicValue','value' => set_value('txtEditBasicValue'),'id'=>'txtEditBasicValue', 'class' => 'form-control num' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - </div> - </div><br/> - <div class="col-md-12" style="border : 1px solid"> - <div class="row"> - <div class="col-md-12"> - <div class="col-md-4"> - <label>Discount Type </label> - <div> - <?php - $options = array("0"=>'Select Discount Type'); - //print_r( $options); - - if(!empty($TaxType)) - { - foreach ($TaxType as $SID): - - - $options[$SID->ConfigValue] = $SID->ConfigValue; - - endforeach; - } - - echo form_dropdown('EditDiscountType', $options,set_value('EditDiscountType'),'id="EditDiscountType"' ,'class="form-control"'); - - ?> - </div> - </div> - <div class="col-md-2"> - <label>Discount Rate </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditDiscount','value' => set_value('txtEditDiscount'),'id'=>'txtEditDiscount', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);' ,'onchange'=>'calculateDiscount(1);','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Discounted Amount </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditAfterDiscount','value' => set_value('txtEditAfterDiscount'),'id'=>'txtEditAfterDiscount', 'class' => 'form-control num' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div id="Vat" > - <div class="col-md-2" > - <label>Vat in %</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditVat','value' => set_value('txtEditVat'),'id'=>'txtEditVat', 'class' => 'form-control num','onchange'=>'calculateVat(1);' ,'style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - </div> - <div class="col-md-2" > - <label>Vat Amount </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditAfterVat','value' => set_value('txtEditAfterVat'),'id'=>'txtEditAfterVat', 'class' => 'form-control num' ,'readonly' => 'true','onkeypress'=>'return isNumberKey(event);','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - </div> - </div> - <div style="display:none;" id="CST"> - <div class="col-md-2" > - <label>CST in %</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditCST','value' => set_value('txtEditCST'),'id'=>'txtEditCST', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'calculateCST(1);','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2" > - <label>CST Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditAfterCST','value' => set_value('txtEditAfterCST'),'id'=>'txtEditAfterCST', 'class' => 'form-control num' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - </div> - </div> - </div> - </div> - </div> - <div class="row"> - <div class="col-md-12" style="text-align:left;"> - <div class="col-md-4"> - <label>Packaging Type </label> - <div> - <?php - $options = array("0"=>'Select Packaging Type'); - //print_r( $options); - - if(!empty($TaxType)) - { - foreach ($TaxType as $SID): - - - $options[$SID->ConfigValue] = $SID->ConfigValue; - - endforeach; - } - - echo form_dropdown('EditPackagingType', $options,set_value('EditPackagingType'),'id="EditPackagingType"' ,'class="form-control "'); - - ?> - </div> - </div> - <div class="col-md-2"> - <label>Packaging Rate </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditPackaging','value' => set_value('txtEditPackaging'),'id'=>'txtEditPackaging', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'calculatePackaging(1);','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Packaging Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditAfterPackaging','value' => set_value('txtEditAfterPackaging'),'id'=>'txtEditAfterPackaging', 'class' => 'form-control num' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>GST in %</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditGST','value' => set_value('txtEditGST'),'id'=>'txtEditGST', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>' calculateGST(1);','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>GST Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditAfterGST','value' => set_value('txtEditAfterGST'),'id'=>'txtEditAfterGST', 'class' => 'form-control num' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - - </div> - </div> - <div class="row"> - <div class="col-md-12 " > - <div class="col-md-2 col-md-offset-4"> - <label>Excise Duty in % </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditExciseDuty','value' => set_value('txtEditExciseDuty'),'id'=>'txtEditExciseDuty', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'calculateExcise(1);','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label> Excise Duty Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditAfterExciseDuty','value' => set_value('txtEditAfterExciseDuty'),'id'=>'txtEditAfterExciseDuty', 'class' => 'form-control num' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Other Taxes in %</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditOtherTax','value' => set_value('txtEditOtherTax'),'id'=>'txtEditOtherTax', 'class' => 'form-control num','onkeypress'=>'return isNumberKey(event);','onchange'=>'calculateOtherTaxes(1);','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Other Taxes Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditAfterOtherTax','value' => set_value('txtEditAfterOtherTax'),'id'=>'txtEditAfterOtherTax', 'class' => 'form-control num' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - </div> - - </div> - </div> - <div class="row"> - <div class="col-md-12" > - <div class="col-md-4"> - <label>Freight Type </label> - <div> - <?php - $options = array("0"=>'Select Freight Type'); - //print_r( $options); - - if(!empty($FreightType)) - { - foreach ($FreightType as $SID): - - - $options[$SID->ConfigValue] = $SID->ConfigValue; - - endforeach; - } - - echo form_dropdown('drpEditFreight', $options,set_value('drpEditFreight'),'id="drpEditFreight"' ,'class="form-control "'); - - ?> - </div> - </div> - <div class="col-md-2"> - <label>Freight Rate </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditFreight','value' => set_value('txtEditFreight'),'id'=>'txtEditFreight', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'calculateFreight(1);','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Freight Amount </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditAfterFreight','value' => set_value('txtEditAfterFreight'),'id'=>'txtEditAfterFreight', 'class' => 'form-control num' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <label> Insurance if Any</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditInsurance','value' => set_value('txtEditInsurance'),'id'=>'txtEditInsurance', 'class' => 'form-control num' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'calculateEditTotalValue(1);','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - - - </div> - </div><hr/> - <div class="row"> - <div class="col-md-12" > - - <div class="col-md-4" align="right"> <label>Total Order Amount :</label></div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditTotalOrderValue','value' => set_value('txtEditTotalOrderValue'),'id'=>'txtEditTotalOrderValue', 'class' => 'form-control num' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <a class="btn btn-primary EditRevenue" ID="EditRevenue"><i class="fa fa-plus"></i>&nbsp;&nbsp;<span class="bold">Edit Revenue</span></a> - <a class="btn btn-primary" data-dismiss="modal" value="Cancel">Cancel</a> - </div> - </div> - </div> - </div> - <br/><br/> - <!-- footer for revenue po --> - <div class="modal-footer"> - - </div> - </div> - - </div> - </form> - </div> - </div> - </br> - <div class="box-body" style="margin-top: -5%;"> - <table id="revenueTax" class="table table-bordered table-hover" style="background-color:#fff;font-size:12px;"> - <thead style="background-color:#ddf"> - <tr> - <th>SNo</th> - <th>Requisition No</th> - <th>Item Name</th> - <th>Quantity</th> - <th>UOM</th> - <th>Rate</th> - <th>Basic Amount</th> - <th>Tax Amount</th> - <th>Total Order Amount</th> - <th>Action</th> - </tr> - </thead> - - <tbody id='RevenueAppend'> - <?php - if(!empty($POItem)) - { - $index = 0; - - foreach($POItem as $record) - { - $index = $index + 1; - ?> - <tr id="<?php echo $index ; ?>"> - <td align="left"><?php echo $index ; ?></td> - <td><?php echo $record->ReqNo ?></td> - <td><?php echo $record->MaterialName ?></td> - <td align="right"><?php echo $record->Quantity ?></td> - <td><?php echo $record->UOM ?></td> - <td align="right"><?php echo $record->Rate ?></td> - - <td align="right"><?php echo $record->BasicValue ?></td> - - <td align="right"><?php echo $record->Taxamount ?></td> - <td align="right"><?php echo $record->TotalValue ?></td> - <input type="hidden" name="<?php echo 'Reqnumber'.$index ?>" id="<?php echo 'Reqnumber'.$index ?>" value="<?php echo $record->ReqNo ; ?>" /> - <input type="hidden" name="<?php echo 'departmentName'.$index ?>" id="<?php echo 'departmentName'.$index ?>" value="<?php echo $record->DepartmentName ; ?>" /> - <input type="hidden" name="<?php echo 'AvilBudget'.$index ?>" id="<?php echo 'AvilBudget'.$index ?>" /> - <input type="hidden" name="<?php echo 'LineItemNo'.$index ?>" id="<?php echo 'LineItemNo'.$index ?>" value="<?php echo $record->LineItemNo ; ?>" /> - <input type="hidden" name="<?php echo 'costCode'.$index ?>" id="<?php echo 'costCode'.$index ?>" value="<?php echo $record->CostCenterCode ; ?>" /> - <input type="hidden" name="<?php echo 'materialCode'.$index ?>" id="<?php echo 'materialCode'.$index ?>" value="<?php echo $record->MaterialCode ; ?>" /> - <input type="hidden" name="<?php echo 'materialName'.$index ?>" id="<?php echo 'materialName'.$index ?>" value="<?php echo $record->MaterialName ; ?>" /> - <input type="hidden" name="<?php echo 'uom'.$index ?>" id="<?php echo 'uom'.$index ?>" value="<?php echo $record->UOM ; ?>" /> - <input type="hidden" name="<?php echo 'quantity'.$index ?>" id="<?php echo 'quantity'.$index ?>" value="<?php echo $record->Quantity ; ?>" /> - - <input type="hidden" name="<?php echo 'itemRate'.$index ?>" id="<?php echo 'itemRate'.$index ?>" value="<?php echo $record->Rate ; ?>" /> - - <input type="hidden" name="<?php echo 'DisType'.$index ?>" id="<?php echo 'DisType'.$index ?>" value="<?php echo $record->DiscountType ; ?>" /> - <input type="hidden" name="<?php echo 'DisVal'.$index ?>" id="<?php echo 'DisVal'.$index ?>" value="<?php echo $record->DiscountValue ; ?>" /> - <input type="hidden" name="<?php echo 'AfterDisVal'.$index ?>" id="<?php echo 'AfterDisVal'.$index ?>" value="<?php echo $record->AfterDiscount ; ?>" /> - <input type="hidden" name="<?php echo 'PackOption'.$index ?>" id="<?php echo 'PackOption'.$index ?>" value="<?php echo $record->PackagingCalulatedOn ; ?>" /> - <input type="hidden" name="<?php echo 'PackType'.$index ?>" id="<?php echo 'PackType'.$index ?>" value="<?php echo $record->PackagingType ; ?>" /> - <input type="hidden" name="<?php echo 'PackVal'.$index ?>" id="<?php echo 'PackVal'.$index ?>" value="<?php echo $record->PackagingValue ; ?>" /> - <input type="hidden" name="<?php echo 'AfterPackVal'.$index ?>" id="<?php echo 'AfterPackVal'.$index ?>" value="<?php echo $record->AfterPackagingValue ; ?>" /> - <input type="hidden" name="<?php echo 'ExciseOption'.$index ?>" id="<?php echo 'ExciseOption'.$index ?>" value="<?php echo $record->ExciseDutyCalulatedOn ; ?>" /> - <input type="hidden" name="<?php echo 'ExciseVal'.$index ?>" id="<?php echo 'ExciseVal'.$index ?>" value="<?php echo $record->ExciseDuty ; ?>" /> - <input type="hidden" name="<?php echo 'AfterExciseVal'.$index ?>" id="<?php echo 'AfterExciseVal'.$index ?>" value="<?php echo $record->AfterExciseDuty ; ?>" /> - <input type="hidden" name="<?php echo 'VatOption'.$index ?>" id="<?php echo 'VatOption'.$index ?>" value="<?php echo $record->VatCalulatedOn ; ?>" /> - <input type="hidden" name="<?php echo 'VatVal'.$index ?>" id="<?php echo 'VatVal'.$index ?>" value="<?php echo $record->Vat ; ?>" /> - <input type="hidden" name="<?php echo 'AfterVatVal'.$index ?>" id="<?php echo 'AfterVatVal'.$index ?>" value="<?php echo $record->AfterVAT ; ?>" /> - <input type="hidden" name="<?php echo 'CSTOption'.$index ?>" id="<?php echo 'CSTOption'.$index ?>" value="<?php echo $record->CSTCalulatedOn ; ?>" /> - <input type="hidden" name="<?php echo 'CSTVal'.$index ?>" id="<?php echo 'CSTVal'.$index ?>" value="<?php echo $record->CST ; ?>" /> - <input type="hidden" name="<?php echo 'AfterCSTVal'.$index ?>" id="<?php echo 'AfterCSTVal'.$index ?>" value="<?php echo $record->AfterCST ; ?>" /> - <input type="hidden" name="<?php echo 'GSTVal'.$index ?>" id="<?php echo 'GSTVal'.$index ?>" value="<?php echo $record->GST ; ?>" /> - <input type="hidden" name="<?php echo 'AfterGSTVal'.$index ?>" id="<?php echo 'AfterGSTVal'.$index ?>" value="<?php echo $record->AfterGST ; ?>" /> - <input type="hidden" name="<?php echo 'OtherTaxVal'.$index ?>" id="<?php echo 'OtherTaxVal'.$index ?>" value="<?php echo $record->OtherTaxes ; ?>" /> - <input type="hidden" name="<?php echo 'AfterOtherTaxVal'.$index ?>" id="<?php echo 'AfterOtherTaxVal'.$index ?>" value="<?php echo $record->AfterOtherTaxes ; ?>" /> - <input type="hidden" name="<?php echo 'FreightType'.$index ?>" id="<?php echo 'FreightType'.$index ?>" value="<?php echo $record->FreightType ; ?>" /> - <input type="hidden" name="<?php echo 'FreightVal'.$index ?>" id="<?php echo 'FreightVal'.$index ?>" value="<?php echo $record->FreightValue ; ?>" /> - <input type="hidden" name="<?php echo 'AfterFreightVal'.$index ?>" id="<?php echo 'AfterFreightVal'.$index ?>" value="<?php echo $record->AfterFreightValue ; ?>" /> - <input type="hidden" name="<?php echo 'basicval'.$index ?>" id="<?php echo 'basicval'.$index ?>" value="<?php echo $record->BasicValue ; ?>"/> - <input type="hidden" name="<?php echo 'Insval'.$index ?>" id="<?php echo 'Insval'.$index ?>" value="<?php echo $record->Insurance ; ?>" /> - <input type="hidden" name="<?php echo 'TotalOrderValue'.$index ?>" id="<?php echo 'TotalOrderValue'.$index ?>" value="<?php echo $record->TotalValue ; ?>" /> - <?php - - if($POStatus == PO_DRAFT) - {?> - <td> <a data-target='#EDITREVENUE' data-id="<?php echo $index ; ?>" data-userid="<?php echo $index ; ?>" data-toggle="modal" href="#EDITREVENUE"><i class="fa fa-pencil" data-toggle="tooltip" title="Click here to view/Edit the <?php echo $record->ReqNo ; ?> Requisition details"></i>&nbsp;&nbsp;&nbsp;</a> <a href='#' onclick = "DeleteRow(<?php echo $index ; ?>)" class="link" data-id="<?php echo $index ; ?>" data-userid="<?php echo $index ; ?>" id="Del" ><span class="glyphicon glyphicon-trash"></span></a> - <?php - } else {?> - <td> <a data-toggle="tooltip" href="#"><i class="fa fa-eye" data-toggle="tooltip" title="<?php echo $record->ReqNo; ?> - Click here to view Requistion details"></i>&nbsp;&nbsp;&nbsp;</a> </td> - <?php - }?> - </tr> - <?php - - - $totBasicAmt = $totBasicAmt + $record->BasicValue; - $totDiscountAmt = $totDiscountAmt + $record->AfterDiscount; - $totPackagingAmt = $totPackagingAmt + $record->AfterPackagingValue; - $totExciseAmt = $totExciseAmt + $record->AfterExciseDuty; - $totVATAmt = $totVATAmt + $record->AfterVAT; - $totCSTAmt = $totCSTAmt + $record->AfterCST; - $totGSTAmt = $totGSTAmt +$record->AfterGST; - - $totOtherTaxAmt = $totOtherTaxAmt + $record->AfterOtherTaxes; - $totFreightAmt = $totFreightAmt + $record->AfterFreightValue; - $totInsuranceAmt = $totInsuranceAmt + $record->Insurance; - $totOrderSummaryAmt = $totOrderSummaryAmt +$record->TotalValue; - - } - ?> <input type="hidden" name="txtRowCount" id="txtRowCount" value="<?php echo $index;?>"> - <?php - - } - ?> - </tbody> - </table> - </div> - <!-- /.box-body --> - - - - - </div> - - <div class="container"> - <div class="row" style="border:1px solid;"> - <div class="col-md-12"> - <div class="col-md-3"> - <label >Basic Amount :</label> - - <?php - $data = array('name' => 'txtTotBasicAmount','value' => set_value('txtTotBasicAmount',$totBasicAmt),'id'=>'txtTotBasicAmount', 'class' => 'form-control num' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - - - </div> - <div class="col-md-3"> - <label >Total Discount Amount :</label> - - <?php - $data = array('name' => 'txtTotalDiscount','value' => set_value('txtTotalDiscount',$totDiscountAmt),'id'=>'txtTotalDiscount', 'class' => 'form-control num' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - - </div> - <div class="col-md-3" id="TotVat"> - <label >Total Vat Amount :</label> - - <?php - $data = array('name' => 'txtTotalVat','value' => set_value('txtTotalVat',$totVATAmt),'id'=>'txtTotalVat', 'class' => 'form-control num' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - - </div> - <div class="col-md-3" id="TotCST" style="display:none;"> - <label >Total CST Amount :</label> - - <?php - $data = array('name' => 'txtTotCST','value' => set_value('txtTotCST',$totCSTAmt),'id'=>'txtTotCST', 'class' => 'form-control num' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - - </div> - <div class="col-md-3"> - <label >Total Packaging Amount :</label> - - <?php - $data = array('name' => 'txtTotalPackaing','value' => set_value('txtTotalPackaing',$totPackagingAmt),'id'=>'txtTotalPackaing', 'class' => 'form-control num' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - - </div> - </div> - <div class="col-md-12"> - <div class="col-md-3"> - <label >Total Excise Duty Amount :</label> - - <?php - $data = array('name' => 'txtTotExciseDuty','value' => set_value('txtTotExciseDuty',$totExciseAmt),'id'=>'txtTotExciseDuty', 'class' => 'form-control num' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - - </div> - <div class="col-md-3"> - <label >Total GST Rate :</label> - - <?php - $data = array('name' => 'txtTotalGST','value' => set_value('txtTotalGST',$totCSTAmt),'id'=>'txtTotalGST', 'class' => 'form-control num' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - - </div> - <div class="col-md-3"> - <label >Total Insurance Amount :</label> - - <?php - $data = array('name' => 'txtTotalInsurance','value' => set_value('txtTotalInsurance',$totInsuranceAmt),'id'=>'txtTotalInsurance', 'class' => 'form-control num' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - - </div> - <div class="col-md-3"> - <label >Total Freight Amount :</label> - - <?php - $data = array('name' => 'txtTotalFreight','value' => set_value('txtTotalFreight',$totFreightAmt),'id'=>'txtTotalFreight', 'class' => 'form-control num' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - - </div> - </div> - <div class="col-md-12"> - <div class="col-md-3"> - <label >Other Taxes Amount :</label> - <?php - $data = array('name' => 'txtTotalOtherTaxes','value' => set_value('txtTotalOtherTaxes',$totOtherTaxAmt),'id'=>'txtTotalOtherTaxes', 'class' => 'form-control num','readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - <div class="col-md-3">&nbsp;</div> - <div class="col-md-3" align="right"> <br/><label>Total Order Amount :</label></div><br/> - <div class="col-md-3"> - <?php - $data = array('name' => 'txtTotalOrderValueSummary','value' => set_value('txtTotalOrderValueSummary',$totOrderSummaryAmt),'id'=>'txtTotalOrderValueSummary', 'class' => 'form-control num' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-12"> - <label>Comments for Special Instructions :</label> <?php - $data = array('name' => 'txtSpcialInstruction','value' => set_value('txtSpcialInstruction',$ServiceDescription),'id'=>'txtSpcialInstruction', 'class' => 'form-control','rows' => '3', 'cols' => '40' ); - echo form_textarea($data); - ?> <input type="hidden" name="SpcialInstruction" id="SpcialInstruction" value="<?php echo $ServiceDescription;?>"> - </div> - </div> - <div class="row" style="padding: 2% 0%"> - <div class="col-md-3 col-md-offset-9"><br/> - <input type="hidden" name="txtPoRange" id="txtPoRange" /> - <input type="hidden" name="isEdit" id="isEdit" value="0" /> - <input type="hidden" name="txtStatus" id="txtStatus" /> - <input type="hidden" name="txtRowCount" id="txtRowCount" /> - <input type="hidden" name="txtDeletedRow" id="txtDeletedRow" /> - <input type="hidden" name="txtPONO" id="txtPONO" value="<?php echo $PONO; ?>"/> - <?php if($POStatus == PO_DRAFT) {?> - <a class="btn btn-primary Save" ID="Save" onclick="Save(0)" >&nbsp;&nbsp;<span class="bold">Save</span></a> - <a class="btn btn-primary Save" ID="Submit" onclick="Save(1)" >&nbsp;&nbsp;<span class="bold">Submit</span></a> - <input type="reset" class="btn btn-primary" value="Reset"> - <?php }else {?> - <input type="reset" class="btn btn-primary" value = "OK"> <?php } ?> - - - - </div><br/> - </div> -</div> -</div> - </div> - -</div> -<script type="text/html" id="RevenueList"> -<tr id="<%=index%>"> -<td align="left"><%=index%></td> - <td align="left"><%=ReqNo%></td> - - <td align="left"><%=MaterialName%></td> - <td align="left"><%=Quantity%></td> - <td align="left"><%=UOM%></td> - <td align="left"><%=Rate%></td> - <td align="left"><%=BasicAmount%></td> - <td align="left"><%=Taxvalue%></td> - <td align="left"><%=TotalValue%></td> - - <td> - <a data-target='#EDITREVENUE' data-id="<%=index%>" data-userid="<%=index%>" data-toggle="modal" href="#EDITREVENUE"><i class="fa fa-pencil" data-toggle="tooltip" title="Click here to view/Edit the <%=ReqNo%> Requisition details"></i>&nbsp;&nbsp;&nbsp;</a> <a href='#' onclick = "DeleteRow(<%=index%>)" class="link" data-id="<%=index%>" data-userid="<%=index%>" id="Del" ><span class="glyphicon glyphicon-trash"></span></a> - - - </td> -</tr> -</script> -<script> -var index = '1'; -var userid = ''; - -$("#REVENUE").on("shown.bs.modal", function(e) { - - $('#isEdit').val(0); -}); -$("#EDITREVENUE").on("shown.bs.modal", function(e) { - - userid = $(e.relatedTarget).data('userid'); - $('#isEdit').val(1); - //alert(userid); - var tr= document.getElementById(userid); - var cellval = tr.cells; - var id= $('#Reqnumber'+userid).val(); - - $('#EditReqNo').val($('#Reqnumber'+userid).val()); - $('#EditdeptName').val($('#departmentName'+userid).val()); - $("#EditCostCenter").val($('#costCode'+userid).val()); - $('#EditAvlBudAmt').val($('#AvilBudget'+userid).val()); - // - - $('#EditItemName').val($('#materialName'+userid).val()); - $('#EditUOM').val($('#uom'+userid).val()); - $('#EditQuantity').val($('#quantity'+userid).val()); - $('#EditRate').val($('#itemRate'+userid).val()); - $('#txtEditBasicValue').val(cellval[6].innerHTML); - RequistQuantity = $('#quantity'+userid).val(); - $('#txtEditDiscount').val($('#DisVal'+userid).val()); - $('#txtEditAfterDiscount').val($('#AfterDisVal'+userid).val()); - $('#txtEditVat').val($('#VatVal'+userid).val()); - $('#txtEditAfterVat').val($('#AfterVatVal'+userid).val()); - $('#txtEditCST').val($('#CSTVal'+userid).val()); - $('#txtEditAfterCST').val($('#AfterCSTVal'+userid).val()); - - $('#txtEditPackaging').val($('#PackVal'+userid).val()); - $('#txtEditAfterPackaging').val($('#AfterPackVal'+userid).val()); - $('#txtEditGST').val($('#GSTVal'+userid).val()); - $('#txtEditAfterGST').val($('#AfterGSTVal'+userid).val()); - $('#txtEditExciseDuty').val($('#ExciseVal'+userid).val()); - $('#txtEditAfterExciseDuty').val($('#AfterExciseVal'+userid).val()); - $('#txtEditOtherTax').val($('#OtherTaxVal'+userid).val()); - $('#txtEditAfterOtherTax').val($('#AfterOtherTaxVal'+userid).val()); - $('#txtEditFreight').val($('#FreightVal'+userid).val()); - $('#txtEditAfterFreight').val($('#AfterFreightVal'+userid).val()); - $('#txtEditInsurance').val($('#Insval'+userid).val()); - - $('#txtEditTotalOrderValue').val($('#TotalOrderValue'+userid).val()); - - - - - $("#EditMaterialCode").empty(); - var Material = <?php echo json_encode($MaterialList, JSON_PRETTY_PRINT) ?>; - // For Binding Material list center for the selected Requistion Number - $("#EditMaterialCode").append( $('<option></option>').val($('#materialCode'+userid).val()).html($('#materialCode'+userid).val() + "-" + $('#materialName'+userid).val() ) ); - var isAdded = "0"; - for(i=0;i<Material.length;i++) - { - $.each(Material[i], function(idx, obj) { - - if(obj.ReqNo === id ) - { - - $.each(SelectedMaterialList.Mat, function(idx1, el){ - if (id == el.ReqNo ) - { - - if(el.materialCode == obj.MaterialCode) - { - - isAdded = "1"; - return false; - } - else - { - isAdded = "0"; - } - - } - - - }); - - - if(isAdded == "0") - { - - $("#EditMaterialCode").append( $('<option></option>').val(obj.MaterialCode).html(obj.MaterialCode + "-" + obj.MaterialName)); - } - - } - - - }); - } - - $("#EditDiscountType").val($('#DisType'+userid).val()); - $("#drpEditFreight").val($('#FreightType'+userid).val()); - $("#EditPackagingType").val($('#PackType'+userid).val()) - - $("input:radio[name='optPackaging'][value='"+$('#PackOption'+userid).val()+"']").prop('checked', 'checked'); - $("input:radio[name='optExcise'][value='"+$('#ExciseOption'+userid).val()+"']").prop('checked', 'checked'); - $("input:radio[name='optVat'][value='"+$('#VatOption'+userid).val()+"']").prop('checked', 'checked'); - $("input:radio[name='optCST'][value='"+$('#CSTOption'+userid).val()+"']").prop('checked', 'checked'); - - -}); -$('.AddRevenue').click(function(){ - - if(validateRevenueTax() && validateExceedLimit() && ExceedQuantityCheck()) - { - var temp = index; - var Reqnumber = $('#ReqNo').val(); - var departmentName = $('#deptName').val(); - var AvilBudget = $('#AvlBudAmt').val(); - var costCode = $('#CostCenter').val(); - var materialCode =$('#MaterialCode').val(); - var materialName = $("#ItemName").val(); - var uom = $("#UOM").val(); - var quantity = $("#Quantity").val(); - var itemRate = $("#Rate").val(); - - var DisType = $("#DiscountType").val(); - var DisVal = $("#txtDiscount").val(); - var AfterDisVal = $("#txtAfterDiscount").val(); - - var PackOption = PackagingCalculation ; - var PackType = $("#PackagingType").val(); - var PackVal = $("#txtPackaging").val(); - var AfterPackVal = $("#txtAfterPackaging").val(); - - var ExciseOption = ExciseCalculation ; - var ExciseVal = $("#txtExciseDuty").val(); - var AfterExciseVal = $("#txtAfterExciseDuty").val(); - - var VatOption = VatCalculation ; - var VatVal = $("#txtVat").val(); - var AfterVatVal = $("#txtAfterVat").val(); - - var CSTOption = CSTCalculation ; - var CSTVal = $("#txtCST").val(); - var AfterCSTVal = $("#txtAfterCST").val(); - - var GSTVal = $("#txtGST").val(); - var AfterGSTVal = $("#txtAfterGST").val(); - - var OtherTaxVal = $("#txtOtherTax").val(); - var AfterOtherTaxVal = $("#txtAfterOtherTax").val(); - - var FreightType = $("#drpFreight").val(); - var FreightVal = $("#txtFreight").val(); - var AfterFreightVal = $("#txtAfterFreight").val(); - - var basicval = $("#txtBasicValue").val(); - var Insval = $("#txtInsurance").val(); - var TotalOrderValue = $("#txtTotalOrderValue").val(); - - var TotalTaxValue = calculateTaxValue(); - - // $('#ReqNo').val(Reqnumber).remove(); - // $('#ReqNo option[value='+Reqnumber+']').remove(); - $('#MaterialCode option[value='+materialCode+']').remove(); - SelectedMaterialCode[CollIndex] = materialCode; - CollIndex = CollIndex + 1; - SelectedMaterialList.Mat.push({ - "materialCode" : materialCode, - "ReqNo" : Reqnumber, - - }); - index = parseInt(index)+1; - - var template = jQuery("#RevenueList").html(); - - - $('#RevenueAppend').append(_.template(template,{index:temp,ReqNo:Reqnumber,MaterialName:materialName,Quantity:quantity,UOM:uom,Rate:itemRate,BasicAmount:basicval,Taxvalue:TotalTaxValue,TotalValue:TotalOrderValue})); - - clearRevenueModalFields(); - var theForm = $(".CreatePO"); - - addHidden(theForm,"Reqnumber"+temp,Reqnumber ); - addHidden(theForm,"departmentName"+temp,departmentName ); - addHidden(theForm,"AvilBudget"+temp,AvilBudget ); - addHidden(theForm,"costCode"+temp,costCode ); - addHidden(theForm,"materialCode"+temp,materialCode ); - addHidden(theForm,"materialName"+temp,materialName ); - addHidden(theForm,"uom"+temp,uom); - addHidden(theForm,"quantity"+temp,quantity); - addHidden(theForm,"itemRate"+temp,itemRate); - addHidden(theForm,"DisType"+temp,DisType); - addHidden(theForm,"DisVal"+temp,DisVal); - addHidden(theForm,"AfterDisVal"+temp,AfterDisVal); - addHidden(theForm,"PackOption"+temp,PackOption); - addHidden(theForm,"PackType"+temp,PackType); - addHidden(theForm,"PackVal"+temp,PackVal); - addHidden(theForm,"AfterPackVal"+temp,AfterPackVal); - addHidden(theForm,"ExciseOption"+temp,ExciseOption); - addHidden(theForm,"ExciseVal"+temp,ExciseVal); - addHidden(theForm,"AfterExciseVal"+temp,AfterExciseVal); - addHidden(theForm,"VatOption"+temp,VatOption); - addHidden(theForm,"VatVal"+temp,VatVal); - addHidden(theForm,"AfterVatVal"+temp,AfterVatVal); - addHidden(theForm,"CSTOption"+temp,CSTOption); - addHidden(theForm,"CSTVal"+temp,CSTVal); - addHidden(theForm,"AfterCSTVal"+temp,AfterCSTVal); - addHidden(theForm,"GSTVal"+temp,GSTVal); - addHidden(theForm,"AfterGSTVal"+temp,AfterGSTVal); - addHidden(theForm,"OtherTaxVal"+temp,OtherTaxVal); - addHidden(theForm,"AfterOtherTaxVal"+temp,AfterOtherTaxVal); - addHidden(theForm,"FreightType"+temp,FreightType); - addHidden(theForm,"FreightVal"+temp,FreightVal); - addHidden(theForm,"AfterFreightVal"+temp,AfterFreightVal); - addHidden(theForm,"basicval"+temp,basicval); - addHidden(theForm,"Insval"+temp,Insval); - addHidden(theForm,"TotalOrderValue"+temp,TotalOrderValue); - - $('#txtRowCount').val(temp); - // $('#REVENUE').modal('hide'); - populateValueMainFormForRevenue(); - } - - }); - $('.EditRevenue').click(function(){ - - - if(validateEditRevenueTax() && validateEditExceedLimit() && ExceedEditQuantityCheck()) - { - //alert('inside Add'); - var CostCode = $("#EditCostCenter").val(); - var AvilBudget = $('#EditAvlBudAmt').val(); - var editMaterialCode = $("#EditMaterialCode").val(); - var editDescription = $("#EditItemName").val(); - var editUOM = $('#EditUOM').val(); - var editQuantity = $('#EditQuantity').val(); - - var itemRate = $("#EditRate").val(); - - - var DisType = $("#EditDiscountType").val(); - var DisVal = $("#txtEditDiscount").val(); - var AfterDisVal = $("#txtEditAfterDiscount").val(); - - var PackOption = PackagingCalculation ; - var PackType = $("#EditPackagingType").val(); - var PackVal = $("#txtEditPackaging").val(); - var AfterPackVal = $("#txtEditAfterPackaging").val(); - - var ExciseOption = ExciseCalculation ; - var ExciseVal = $("#txtEditExciseDuty").val(); - var AfterExciseVal = $("#txtEditAfterExciseDuty").val(); - - var VatOption = VatCalculation ; - var VatVal = $("#txtEditVat").val(); - var AfterVatVal = $("#txtEditAfterVat").val(); - - var CSTOption = CSTCalculation ; - var CSTVal = $("#txtCST").val(); - var AfterCSTVal = $("#txtEditAfterCST").val(); - - var GSTVal = $("#txtEditCST").val(); - var AfterGSTVal = $("#txtEditAfterCST").val(); - - var OtherTaxVal = $("#txtEditOtherTax").val(); - var AfterOtherTaxVal = $("#txtEditAfterOtherTax").val(); - - var FreightType = $("#drpEditFreight").val(); - var FreightVal = $("#txtEditFreight").val(); - var AfterFreightVal = $("#txtEditAfterFreight").val(); - - var basicval = $("#txtEditBasicValue").val(); - var Insval = $("#txtEditInsurance").val(); - var TotalOrderValue = $("#txtEditTotalOrderValue").val(); - - var TotalTaxValue = calculateEditTaxValue(); - - - - - var tr= document.getElementById(userid); - var cellval = tr.cells; - - cellval[2].innerHTML = editDescription; - cellval[3].innerHTML = editQuantity; - cellval[4].innerHTML =editUOM; - cellval[5].innerHTML =itemRate; - cellval[6].innerHTML =basicval; - cellval[7].innerHTML =TotalTaxValue; - cellval[8].innerHTML =TotalOrderValue; - - - $('#materialCode'+userid).val(editMaterialCode); - $('#materialName'+userid).val(editDescription); - $('#uom'+userid).val(editUOM); - $('#quantity'+userid).val(editQuantity); - $('#itemRate'+userid).val(itemRate); - $('#DisType'+userid).val(DisType); - $('#DisVal'+userid).val(DisVal); - $('#AfterDisVal'+userid).val(AfterDisVal); - $('#PackOption'+userid).val(PackOption); - $('#PackType'+userid).val(PackType); - $('#PackVal'+userid).val(PackVal); - $('#AfterPackVal'+userid).val(AfterPackVal); - $('#ExciseOption'+userid).val(ExciseOption); - $('#ExciseVal'+userid).val(ExciseVal); - $('#AfterExciseVal'+userid).val(AfterExciseVal); - $('#VatOption'+userid).val(VatOption); - $('#VatVal'+userid).val(VatVal); - $('#AfterVatVal'+userid).val(AfterVatVal); - $('#CSTOption'+userid).val(CSTOption); - $('#CSTVal'+userid).val(CSTVal); - $('#AfterCSTVal'+userid).val(AfterCSTVal); - $('#GSTVal'+userid).val(GSTVal); - $('#AfterGSTVal'+userid).val(AfterGSTVal); - $('#OtherTaxVal'+userid).val(OtherTaxVal); - $('#AfterOtherTaxVal'+userid).val(AfterOtherTaxVal); - $('#FreightType'+userid).val(FreightType); - $('#FreightVal'+userid).val(FreightVal); - $('#AfterFreightVal'+userid).val(AfterFreightVal); - $('#basicval'+userid).val(basicval); - $('#Insval'+userid).val(Insval); - $('#AvilBudget'+userid).val(AvilBudget); - $('#costCode'+userid).val(CostCode); - $('#TotalOrderValue'+userid).val(TotalOrderValue); - - - populateValueMainFormForEditRevenueTax(); - } - - }); - function addHidden(theForm, key, value) { - // Create a hidden input element, and append it to the form: - var input = document.createElement('input'); - input.type = 'hidden'; - input.name = key;'name-as-seen-at-the-server'; - input.id = key;'name-as-seen-at-the-server'; - input.value = value; - theForm.append(input); -} -function populateValueMainFormForRevenue() -{ - var Packaging = $('#txtAfterPackaging').val() == '' ? '0.00' : $('#txtAfterPackaging').val(); - var ExciseDuty = $('#txtAfterExciseDuty').val() == '' ? '0.00' : $('#txtAfterExciseDuty').val(); - var Vat = $('#txtAfterVat').val() == '' ? '0.00' : $('#txtAfterVat').val(); - var CST = $('#txtAfterCST').val() == '' ? '0.00' : $('#txtAfterCST').val(); - var GST = $('#txtAfterGST').val() == '' ? '0.00' : $('#txtAfterGST').val(); - var OtherTax = $('#txtAfterOtherTax').val() == '' ? '0.00' : $('#txtAfterOtherTax').val(); - var Freight = $('#txtAfterFreight').val() == '' ? '0.00' : $('#txtAfterFreight').val(); - var Insurance = $('#txtInsurance').val() == '' ? '0.00' : $('#txtInsurance').val(); - var Discount = $('#txtAfterDiscount').val() == '' ? '0.00' : $('#txtAfterDiscount').val(); - var BasicVal = $('#txtBasicValue').val() == '' ? '0.00' : $('#txtBasicValue').val(); - var TotalVal = $('#txtTotalOrderValue').val() == '' ? '0.00' : $('#txtTotalOrderValue').val(); - - var TotalOrderValueSummary = $('#txtTotalOrderValueSummary').val() == '' ? '0.00' : $('#txtTotalOrderValueSummary').val(); - - var totBasicAmt = $('#txtTotBasicAmount').val() == '' ? '0.00' : $('#txtTotBasicAmount').val(); - var totDiscountAmt = $('#txtTotalDiscount').val() == '' ? '0.00' : $('#txtTotalDiscount').val(); - var totPackagingAmt = $('#txtTotalPackaing').val() == '' ? '0.00' : $('#txtTotalPackaing').val(); - var totExciseAmt = $('#txtTotExciseDuty').val() == '' ? '0.00' : $('#txtTotExciseDuty').val(); - var totVATAmt = $('#txtTotalVat').val() == '' ? '0.00' : $('#txtTotalVat').val(); - var totCSTAmt = $('#txtTotCST').val() == '' ? '0.00' : $('#txtTotCST').val(); - var totGSTAmt = $('#txtTotalGST').val() == '' ? '0.00' : $('#txtTotalGST').val(); - var totOtherTaxAmt = $('#txtTotalOtherTaxes').val() == '' ? '0.00' : $('#txtTotalOtherTaxes').val(); - var totFreightAmt = $('#txtTotalFreight').val() == '' ? '0.00' : $('#txtTotalFreight').val(); - var totInsuranceAmt = $('#txtTotalInsurance').val() == '' ? '0.00' : $('#txtTotalInsurance').val(); - var totOrderSummaryAmt = $('#txtTotalOrderValueSummary').val() == '' ? '0.00' : $('#txtTotalOrderValueSummary').val(); - - $('#txtTotBasicAmount').val(parseFloat(totBasicAmt) + parseFloat(BasicVal) ); - $('#txtTotalDiscount').val(parseFloat(totDiscountAmt) + parseFloat(Discount) ); - $('#txtTotalPackaing').val(parseFloat(totPackagingAmt) + parseFloat(Packaging) ); - $('#txtTotExciseDuty').val(parseFloat(totExciseAmt) + parseFloat(ExciseDuty) ); - $('#txtTotalVat').val(parseFloat(totVATAmt) + parseFloat(Vat) ); - $('#txtTotCST').val(parseFloat(totCSTAmt) + parseFloat(CST) ); - $('#txtTotalGST').val(parseFloat(totGSTAmt) + parseFloat(GST) ); - $('#txtTotalOtherTaxes').val(parseFloat(totOtherTaxAmt) + parseFloat(OtherTax) ); - $('#txtTotalFreight').val(parseFloat(totFreightAmt) + parseFloat(Freight) ); - $('#txtTotalInsurance').val(parseFloat(totInsuranceAmt) + parseFloat(Insurance) ); - $('#txtTotalOrderValueSummary').val(parseFloat(totOrderSummaryAmt) + parseFloat(TotalVal) ); - -} -function populateValueMainFormForEditRevenueTax() -{ - - var rows = document.getElementById('revenueTax').rows.length; - //alert(rows); - var totBasicAmt = 0; - var totDiscountAmt = 0; - var totPackagingAmt = 0; - var totExciseAmt = 0; - var totVATAmt = 0; - var totCSTAmt = 0; - var totGSTAmt = 0; - var totOtherTaxAmt = 0; - var totFreightAmt = 0; - var totInsuranceAmt = 0; - var totOrderSummaryAmt = 0; - var i = 0; - do { - i += 1; - - - var tr= document.getElementById(i); - //alert(tr); - if(tr != null) - { - cells = tr.getElementsByTagName('td'); - - - var rowid = cells[0].innerHTML; - // alert(rowid); - var Packaging = $('#AfterPackVal'+rowid).val() == '' ? '0.00' : $('#AfterPackVal'+rowid).val(); - var ExciseDuty = $('#AfterExciseVal'+rowid).val() == '' ? '0.00' : $('#AfterExciseVal'+rowid).val(); - var Vat = $('#AfterVatVal'+rowid).val() == '' ? '0.00' : $('#AfterVatVal'+rowid).val(); - var CST =$('#AfterCSTVal'+rowid).val() == '' ? '0.00' : $('#AfterCSTVal'+rowid).val(); - var GST = $('#AfterGSTVal'+rowid).val() == '' ? '0.00' : $('#AfterGSTVal'+rowid).val(); - var OtherTax = $('#AfterOtherTaxVal'+rowid).val() == '' ? '0.00' : $('#AfterOtherTaxVal'+rowid).val(); - var Freight = $('#AfterFreightVal'+rowid).val() == '' ? '0.00' : $('#AfterFreightVal'+rowid).val(); - var Insurance = $('#Insval'+rowid).val() == '' ? '0.00' : $('#Insval'+rowid).val(); - var Discount =$('#AfterDisVal'+rowid).val() == '' ? '0.00' : $('#AfterDisVal'+rowid).val(); - var BasicVal = $('#basicval'+rowid).val() == '' ? '0.00' : $('#basicval'+rowid).val(); - var TotalVal =$('#TotalOrderValue'+rowid).val() == '' ? '0.00' : $('#TotalOrderValue'+rowid).val(); - //alert(TotalVal); - - - totBasicAmt = parseFloat(totBasicAmt ) + parseFloat(BasicVal); - totDiscountAmt = parseFloat(totDiscountAmt ) + parseFloat(Discount); - totPackagingAmt = parseFloat(totPackagingAmt) + parseFloat(Packaging); - totExciseAmt = parseFloat(totExciseAmt) + parseFloat(ExciseDuty); - totVATAmt = parseFloat(totVATAmt ) + parseFloat(Vat); - totCSTAmt = parseFloat(totCSTAmt ) + parseFloat(CST); - totGSTAmt = parseFloat(totGSTAmt ) + parseFloat(GST); - totOtherTaxAmt = parseFloat(totOtherTaxAmt ) + parseFloat(OtherTax); - totFreightAmt = parseFloat(totFreightAmt ) + parseFloat(Freight); - totInsuranceAmt = parseFloat(totInsuranceAmt ) + parseFloat(Insurance); - totOrderSummaryAmt = parseFloat(totOrderSummaryAmt ) + parseFloat(TotalVal); - } - - } while (i < rows); - - alert(totOrderSummaryAmt); - $('#txtTotBasicAmount').val(parseFloat(totBasicAmt).toFixed(2) ); - $('#txtTotalDiscount').val(parseFloat(totDiscountAmt).toFixed(2) ); - $('#txtTotalPackaing').val(parseFloat(totPackagingAmt).toFixed(2) ); - $('#txtTotExciseDuty').val(parseFloat(totExciseAmt).toFixed(2) ); - $('#txtTotalVat').val(parseFloat(totVATAmt).toFixed(2) ); - $('#txtTotCST').val(parseFloat(totCSTAmt).toFixed(2) ); - $('#txtTotalGST').val(parseFloat(totGSTAmt).toFixed(2) ); - $('#txtTotalOtherTaxes').val(parseFloat(totOtherTaxAmt).toFixed(2) ); - $('#txtTotalFreight').val(parseFloat(totFreightAmt).toFixed(2) ); - $('#txtTotalInsurance').val(parseFloat(totInsuranceAmt).toFixed(2) ); - $('#txtTotalOrderValueSummary').val(parseFloat(totOrderSummaryAmt).toFixed(2) ); - -} -function clearRevenueModalFields() -{ - // To reset the Modal controls - $('#ReqNo').val('0'); - $('#deptName').val(''); - $('#CostCenter').val("0"); - $('#AvlBudAmt').val(''); - $('#MaterialCode').val("0") ; - $("#ItemName").val(''); - $('#UOM').val(''); - $('#Quantity').val(''); - $("#Rate").val(''); - - $("#DiscountType").val('0'); - $("#txtDiscount").val(''); - $("#txtAfterDiscount").val(''); - - - $("#PackagingType").val('0'); - $("#txtPackaging").val(''); - $("#txtAfterPackaging").val(''); - - $("input:radio[name='optPackaging'][value='0']").prop('checked', 'checked'); - $("input:radio[name='optExcise'][value='0']").prop('checked', 'checked'); - $("input:radio[name='optVat'][value='0']").prop('checked', 'checked'); - $("input:radio[name='optCST'][value='0']").prop('checked', 'checked'); - - ExciseOption = ''; - PackOption = ''; - CSTOption = ''; - VatOption = ''; - - $("#txtExciseDuty").val(''); - $("#txtAfterExciseDuty").val(''); - - - $("#txtVat").val(''); - $("#txtAfterVat").val(''); - - - $("#txtCST").val(''); - $("#txtAfterCST").val(''); - - $("#txtGST").val(''); - $("#txtAfterGST").val(''); - - $("#txtOtherTax").val(''); - $("#txtAfterOtherTax").val(''); - - $("#drpFreight").val('0'); - $("#txtFreight").val(''); - $("#txtAfterFreight").val(''); - - $("#txtBasicValue").val(''); - $("#txtInsurance").val(''); - $("#txtTotalOrderValue").val(''); -} -function validateEditRevenueTax() - { - if($('#EditCostCenter').val() == "0") - { - alert('Please select the Cost center'); - $('#EditCostCenter').focus(); - return false; - } - else if($('#EditMaterialCode').val() == "0") - { - alert('Please select the Material Code'); - $('#EditMaterialCode').focus(); - return false; - } - else if($('#EditQuantity').val() == '') - { - alert('Please Enter the Quantity value'); - $('#EditQuantity').focus(); - return false; - } - else if($('#EditRate').val() == '') - { - alert('Please Enter the Rate of the Item'); - $('#EditRate').focus(); - return false; - } - else - { - return true; - } - } -</script> -<script> -function validateBudgetExceedLimit() - { - var rows = document.getElementById('revenueTax').rows.length; - var ReqType = '<?php echo REVENUE ?>'; - - for (i = 1; i < rows; i++) { - var costcode = $('#costCode'+i).val(); - var basicAmountRate = parseFloat($('#basicval'+i).val()); - var totalAmount = parseFloat($('#TotalOrderValue'+i).val()); - var avalbudAmt = ''; - $.ajax({ - data:{id:costcode}, - type:"POST", - url:"<?php echo base_url() ?>servicepurchaseorder/AvilBudgetAmount?ReqType="+ReqType, - success:function(data) { - if(data) - { - //alert(data); - avalbudAmt = parseFloat(data); - if(basicAmountRate > avalbudAmt || totalAmount > avalbudAmt) - { - alert('Basic amount is exceeding the Budget Limit.Please adjust the product value.'); - $('#Rate').focus(); - return false; - - } - else - { - return true; - } - - } - - - } - }); - } - - - } -function DeleteRow(rowid) -{ - var id = []; - var DelRows = $('#txtDeletedRow').val(); - //alertMaterialListrowid); - var tr = document.getElementById(rowid); - // var cellval = tr.cells; - var MaterialCode = $('#materialCode'+rowid).val(); - var LineItemNo =$('#LineItemNo'+rowid).val(); - var ReqNo =$('#Reqnumber'+rowid).val(); - var POType ='<?php echo REVENUE ?>'; - id[0]= LineItemNo; - id[1]= ReqNo; - id[2]= MaterialCode; - id[3]= POType; - - var answer = confirm(" Do you want to delete the Item from the List?") - if (answer) - { - - tr.parentNode.removeChild(tr); - - var removeItem = $('#materialCode'+rowid).val(); - - SelectedMaterialCode.splice( SelectedMaterialCode.indexOf('removeItem'), 1 ); - $.each(SelectedMaterialList.Mat, function(i, el){ - - if (this.materialCode == removeItem){//Type = ''; - SelectedMaterialList.Mat.splice(i, 1); - } - }); - var x = <?php echo json_encode($POItem, JSON_PRETTY_PRINT) ?>; - - var result = '0'; - $.each(x, function(idx, obj) { - - if(obj.LineItemNo === LineItemNo) - { - result = '1'; - return false; - } - - }); - - // alert(result); - if(result == '0') - { - var DelRows = $('#txtDeletedRow').val(); - //tr.parentNode.removeChild(tr); - if(DelRows != '') - { - DelRows = DelRows + ":" + rowid; - } - else - { - DelRows= "0" + ":" + rowid; - } - $('#txtDeletedRow').val(DelRows); - } - // To delete the value from Tables - else if(result == '1') - { - var DelRows = $('#txtDeletedRow').val(); - //tr.parentNode.removeChild(tr); - if(DelRows != '') - { - DelRows = DelRows + ":" + rowid; - } - else - { - DelRows= "0" + ":" + rowid; - } - $('#txtDeletedRow').val(DelRows); - - $.ajax({ - data:{id:id}, - type:"POST", - url:"<?php echo base_url() ?>purchaseorder/DeletePODetails", - success:function(data) { - if(data) - { - $('#content').loader('hide'); - alert(data); - } - else - { - alert("Error"); - } - - }}); - } - - populateValueMainFormForDeleteItem(rowid); - - } - -} -function populateValueMainFormForDeleteItem(rowid) -{ - - - // alert(rows); - var totBasicAmt = $('#txtTotBasicAmount').val(); - var totDiscountAmt = $('#txtTotalDiscount').val();; - var totPackagingAmt = $('#txtTotalPackaing').val();; - var totExciseAmt = $('#txtTotExciseDuty').val();; - var totVATAmt = $('#txtTotalVat').val();; - var totCSTAmt = $('#txtTotCST').val();; - var totGSTAmt = $('#txtTotalGST').val();; - var totOtherTaxAmt = $('#txtTotalOtherTaxes').val();; - var totFreightAmt = $('#txtTotalFreight').val();; - var totInsuranceAmt = $('#txtTotalInsurance').val();; - var totOrderSummaryAmt = $('#txtTotalOrderValueSummary').val();; - - - - var Packaging = $('#AfterPackVal'+rowid).val() == '' ? '0.00' : $('#AfterPackVal'+rowid).val(); - var ExciseDuty = $('#AfterExciseVal'+rowid).val() == '' ? '0.00' : $('#AfterExciseVal'+rowid).val(); - var Vat = $('#AfterVatVal'+rowid).val() == '' ? '0.00' : $('#AfterVatVal'+rowid).val(); - var CST =$('#AfterCSTVal'+rowid).val() == '' ? '0.00' : $('#AfterCSTVal'+rowid).val(); - var GST = $('#AfterGSTVal'+rowid).val() == '' ? '0.00' : $('#AfterGSTVal'+rowid).val(); - var OtherTax = $('#AfterOtherTaxVal'+rowid).val() == '' ? '0.00' : $('#AfterOtherTaxVal'+rowid).val(); - var Freight = $('#AfterFreightVal'+rowid).val() == '' ? '0.00' : $('#AfterFreightVal'+rowid).val(); - var Insurance = $('#Insval'+rowid).val() == '' ? '0.00' : $('#Insval'+rowid).val(); - var Discount =$('#AfterDisVal'+rowid).val() == '' ? '0.00' : $('#AfterDisVal'+rowid).val(); - var BasicVal = $('#basicval'+rowid).val() == '' ? '0.00' : $('#basicval'+rowid).val(); - var TotalVal =$('#TotalOrderValue'+rowid).val() == '' ? '0.00' : $('#TotalOrderValue'+rowid).val(); - //alert(TotalVal); - - - totBasicAmt = parseFloat(totBasicAmt ) - parseFloat(BasicVal); - totDiscountAmt = parseFloat(totDiscountAmt ) - parseFloat(Discount); - totPackagingAmt = parseFloat(totPackagingAmt) - parseFloat(Packaging); - totExciseAmt = parseFloat(totExciseAmt) - parseFloat(ExciseDuty); - totVATAmt = parseFloat(totVATAmt ) - parseFloat(Vat); - totCSTAmt = parseFloat(totCSTAmt ) - parseFloat(CST); - totGSTAmt = parseFloat(totGSTAmt ) - parseFloat(GST); - totOtherTaxAmt = parseFloat(totOtherTaxAmt ) - parseFloat(OtherTax); - totFreightAmt = parseFloat(totFreightAmt ) - parseFloat(Freight); - totInsuranceAmt = parseFloat(totInsuranceAmt ) - parseFloat(Insurance); - totOrderSummaryAmt = parseFloat(totOrderSummaryAmt ) - parseFloat(TotalVal); - - - - - $('#txtTotBasicAmount').val(parseFloat(totBasicAmt).toFixed(2) ); - $('#txtTotalDiscount').val(parseFloat(totDiscountAmt).toFixed(2) ); - $('#txtTotalPackaing').val(parseFloat(totPackagingAmt).toFixed(2) ); - $('#txtTotExciseDuty').val(parseFloat(totExciseAmt).toFixed(2) ); - $('#txtTotalVat').val(parseFloat(totVATAmt).toFixed(2) ); - $('#txtTotCST').val(parseFloat(totCSTAmt).toFixed(2) ); - $('#txtTotalGST').val(parseFloat(totGSTAmt).toFixed(2) ); - $('#txtTotalOtherTaxes').val(parseFloat(totOtherTaxAmt).toFixed(2) ); - $('#txtTotalFreight').val(parseFloat(totFreightAmt).toFixed(2) ); - $('#txtTotalInsurance').val(parseFloat(totInsuranceAmt).toFixed(2) ); - $('#txtTotalOrderValueSummary').val(parseFloat(totOrderSummaryAmt).toFixed(2) ); - -} -function Save(status) -{ -if(status == '0') -{ - stat = '<?php echo PO_DRAFT; ?>'; -} -else -{ - stat = '<?php echo PO_CREATED; ?>'; -} -var splinstr = $('#txtSpcialInstruction').val(); -var deladd = $('#DeliveryAddr').val(); -$('#txtStatus').val(stat); - - -$('#SpcialInstruction').val(splinstr); -$('#txtDeliveryAddress').val(deladd); - - - if(validate()) - { - if(document.getElementById('revenueTax').rows.length < 2) - { - alert('Please Select Line item to Create PO'); - $('#Deliverydt').focus(); - return false; - } - else if(validateBudgetExceedLimit()) - { - return false; - } - else - { - $('#content').loader('show'); - $.ajax({ - data:$('.CreatePO').serialize(), - type:"POST", - url:"<?php echo base_url() ?>purchaseorder/EditRevenuePurchaseOrder", - success:function(data) { - if(data) - { - $('#content').loader('hide'); - alert(data); - $('#txtRowCount').val(''); - $('#txtDeletedRow').val(''); - $('#txtStatus').val(''); - $('#SpcialInstruction').val(''); - $('#txtDeliveryAddress').val('') - window.location = "purchaseorderListing"; - - } - else - { - $('#content').loader('hide'); - alert("Error"); - } - - } - -}); - } - -} -} -// this function is used to clear data changing schedule option -$('#Scheduleby').change(function(){ - - $("#Deliverydt").datepicker({ - minDate : 'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true,yearRange: '0:+10' - }); - - }); - $('#Deliverydt').change(function(){ - - $('#Scheduleby').val(''); - - }); -<!-- script for table , It works uned the datatable plugin--> - $(function () { - //$("#revenueTax").DataTable(); - $('#revenueTax').DataTable({ - "paging": true, - "lengthChange": true, - "searching": false, - //"ordering": true, - // "info": true, - "autoWidth": true - - }); - }); -</script> \ No newline at end of file diff --git a/application/views/editSupplier.php b/application/views/editSupplier.php deleted file mode 100644 index 6f5196cf..00000000 --- a/application/views/editSupplier.php +++ /dev/null @@ -1,504 +0,0 @@ - <?php - -$SupplierID = ''; -$SupplierName = ''; -$Address = ''; -$ContactNumber = ''; -$AlternateContactNumber = ''; -$EmailAddress = ''; -$TIN = ''; -$PAN = ''; -$GSTNO = ''; -$GSTRange = ''; -$CollectrateAddress = ''; -$UANumber = ''; -$PaymentTerms = ''; -$PaymentDays = ''; -$PayableAT = ''; -$IsActive = ''; -$PaymentBefore = ''; -$PaymentAfter = ''; -$CSTNO = ''; -$CSTDate = ''; -if(!empty($supplier)) -{ - foreach ($supplier as $uf) - { - $SupplierID = $uf->SupplierID; - $SupplierName = $uf->SupplierName; - $Address = $uf->Address; - $ContactNumber = $uf->ContactNumber; - $AlternateContactNumber = $uf->AlternateContactNumber; - $EmailAddress = $uf->EmailAddress; - $Exiseregistration = $uf->Exiseregistration; - $TIN = $uf->TIN; - $PAN = $uf->PAN; - $GSTNO = $uf->GSTNO; - $GSTRange = $uf->GSTRange; - $CollectrateAddress = $uf->CollectrateAddress; - $UANumber = $uf->UANumber; - $PaymentTerms = $uf->PaymentTerms; - $PaymentDays = $uf->PaymentDays; - $PayableAT = $uf->PayableAT; - $CSTNO = $uf->CSTNO; - $CSTDt = $uf->CSTDate; - //echo 'CST date:'. $CSTDt ; - if($CSTDt != '') - { - $dtCST = new DateTime($CSTDt); - $CSTDate = $dtCST ->format('Y-m-d'); - //echo $CSTDate ; - } - - $chk = $uf->IsActive; - - if($chk == 1) - { - $IsActive = 'checked'; - } - else - { - $IsActive = ''; - } - $Paymentchk = $uf->PaymentDays; - if($Paymentchk == 'Before' ) - { - $PaymentBefore = 'checked'; - $PaymentAfter = ''; - } - else - { - $PaymentAfter = 'checked'; - $PaymentBefore = ''; - } - - } -} - - -?> - <script> - - - function blockKeyPress(evt) -{ - var charCode = (evt.which) ? evt.which : evt.keyCode; - alert(charCode); - if(charCode == 8 || charCode == 46 ) - - { - return false; - } - else - { - return false; - } -} - - function isNumberKey(evt) - { - var charCode = (evt.which) ? evt.which : evt.keyCode; - if (charCode != 46 && charCode > 31 - && (charCode < 48 || charCode > 57)) - return false; - - return true; - } - -//PAN Validate -function validatePAN() { - var reg = /(?=.*[A-Z]).{5,}(?=.*[0-9]).{4,}(?=.*[A-Z]).{1,}$/; - - var PAN = $('#panno').val(); - - if(PAN != '') - { - if (reg.test(PAN) == false) - { - alert('Please Enter Valid PAN Number'); - return (false); - } - else - { - return true; - } - } - else - { - alert('Please Enter PAN Number'); - return (false); - } - -} -function validateECCNumber() { - var reg = /(?=.*[A-Z]).{5,}(?=.*[0-9]).{4,}(?=.*[A-Z]).{1,}(?=.*[A-Z]).{2,}(?=.*[0-9]).{3,}$/; - - var ECC = $('#Exciseregistration').val(); - - if(ECC != '') - { - if (reg.test(ECC) == false) - { - alert('Please Enter Valid Excise Control Code Number'); - return (false); - } - else - { - return true; - } - } - -} -function getContactNumberValidation() { - var contactNumber = $('#ContactNumber').val().length; - if(contactNumber < 10) - { - alert('Please Enter valid Contact Number'); - return false; - } - else - { - return true; - } -} -function getValidAlternateNumber() -{ - var contactNumber = $('#AlternateContactNumber').val().length; - if(!empty($('#AlternateContactNumber').val())) - { - if(contactNumber < 10) - { - alert('Please Enter valid Alternate Contact Number'); - return false; - } - else - { - return true; - } - } -} - -function validateEmail() { - var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; - - var email = $('#emailid').val(); - - if(email != '') - { - if (reg.test(email) == false) - { - alert('Please Enter Valid Email Address'); - return (false); - } - else - { - return true; - } - } - else - { - alert('Please Enter email id'); - } - -} -function onlyAlphabets(evt) { - var charCode; - if (window.event) - charCode = window.event.keyCode; //for IE - else - charCode = evt.which; //for firefox - if (charCode == 32) //for &lt;space&gt; symbol - return true; - if (charCode > 31 && charCode < 65) //for characters before 'A' in ASCII Table - return false; - if (charCode > 90 && charCode < 97) //for characters between 'Z' and 'a' in ASCII Table - return false; - if (charCode > 122) //for characters beyond 'z' in ASCII Table - return false; - return true; - } - $(function() { - var d = new Date(); - - var month = d.getMonth(); - var day = d.getDate(); - var year = d.getFullYear() ; - var SIAStartYear = year - 2015; - var mindt = year-70; - var maxdt = year-15; - - $("#dateofCST").datepicker({ - //minDate : new Date(year-SIAStartYear,1,1), - maxDate :'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true,yearRange: '-100:+0' - -}); -}); -</script> - - <style> - legend{ - color:#00c0ef ! important; - } - - .pad{ - padding-bottom:1%; - } - .badge - { - color:red; background-color:#fff; - } - </style> -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - <center> Siddharth Industries - <?php echo $SupplierID; ?> DETAILS</center> - - </h1> - - </section> - - <section class="content"> - <div style="text-align:right;"> - <a href="<?php echo base_url() ?>supplierListing" class="btn btn-primary" value="Back"/>Back</a> - </div> - <br/> - <div class="row"> - <!-- left column --> - <div class="col-md-12"> - <!-- general form elements --> - - - <div class="box box-primary"> - - <!-- form start --> - - - <div class="row"> - <div class="col-md-10 col-md-offset-1" style="border:3px solid #3c8dbc;"> - <form class="form-horizontal" role="form" id="UpdateSupplier" action="<?php echo base_url() ?>editsupplier" method="post" role="form"> - <fieldset> - - <!-- Form Name --> - <legend>Supplier Information</legend> - <div class="col-md-2 pad"> - <span for="SupplierID">Supplier ID</span> - <input type="text" name="SupplierID" id="SupplierID" class="form-control" readonly value="<?php echo $SupplierID;?>"> - </div> - <div class="col-md-4 pad"> - <span for="SupplierName">Supplier Name</span><span class="badge">*</span> - <input type="text" name="SupplierName" onkeypress="return onlyAlphabets(event);" maxlength="100" id="supplierName" class="form-control" required value="<?php echo $SupplierName;?>"> - - </div> - - <div class="col-md-2 pad"> - <span for="ContactNumber">Contact Number</span><span class="badge">*</span> - <input type="text" name="ContactNumber" onchange="return getContactNumberValidation();" onkeypress="return event.charCode >= 48 && event.charCode <= 57" id="ContactNumber" required pattern="(.){10,10}" maxlength="10" class="form-control" value="<?php echo $ContactNumber;?>" title="Please Enter 10 digit Number"> - </div> - - <div class="col-md-2 pad"> - <span for="AlternateContactNumber">Alternate Contact Number</span> - <input type="text" name="AlternateContactNumber" onchange="return getValidAlternateNumber();" onkeypress="return event.charCode >= 48 && event.charCode <= 57" id="AlternateContactNumber" pattern="(.){10,10}" maxlength="10" class="form-control" value="<?php echo $AlternateContactNumber;?>" title="Please Enter 10 digit Number"> - </div> - - <div class="col-md-2 pad"> - <span for="EmailAddress">Email ID</span><span class="badge">*</span> - <input type="email" name="emailid" id="emailid" pattern="([A-Z0-9_\-\.])+\@([A-Z0-9_\-\.])+\.([A-Z]{2,4})" required maxlength="100" class="form-control" value="<?php echo $EmailAddress;?>" title="Please Enter valid mail address" onchange="validateEmail();"> - </div> - <div class="col-md-12"> - </br><input type="checkbox" id="isactive" <?php echo $IsActive;?> name="isactive" > IsActive </div> -<!-- Address Section --> - <!-- Form Name --> - <legend>Address Details</legend> - <!-- Text input--> - - <div class="col-md-12"><span for="Address2">Address</span><span class="badge">*</span> - <input type="text" class="form-control required" id="Address" name="Address" maxlength="500" required value="<?php echo $Address;?>"> - </div> - - - - <legend>Tax Related Data</legend> - <!-- Text input--> - - - <div class="col-md-3 pad"> - <span for="PAN">PAN</span> <span class="badge">*</span> - <input type="text" id="panno" maxlength="10" name="panno" required pattern="(?=.*[A-Z]).{5,}(?=.*[0-9]).{4,}(?=.*[A-Z]).{1,}" onchange="validatePAN();" class="form-control" value="<?php echo $PAN;?>" style="text-transform:uppercase;" title="Please Enter 5 Character and 4 digit numbers and 1 Character format"> - </div> - <div class="col-md-3 pad"> - <span for="TIN">TIN</span><span class="badge">*</span> - <input type="text" class="form-control required" value="<?php echo $TIN;?>" pattern="(.){11,11}" id="TIN" name="TIN" minlength="11" maxlength="11" onkeypress="return event.charCode >= 48 && event.charCode <= 57" title="Please Enter 11 digit Number"> - </div> - <div class="col-md-3 pad"> - <span for="UANumber">UA Number</span> - <input type="text" class="form-control" pattern="^\d{12}$" id="UANumber" name="UANumber" maxlength="12" value="<?php echo $UANumber;?>" title="Please Enter 12 digit Number"> - </div> - - <div class="col-md-3 pad"> - <span for="Exciseregistration">Excise Registration</span> - <input type="text" class="form-control required" onchange="validateECCNumber();" id="Exciseregistration" name="Exciseregistration" minlength="15" maxlength="15" value="<?php echo $Exiseregistration;?>" style="text-transform:uppercase;" title="Please enter PAN Number and EM/ED option and 3 digit Numbers format" pattern="(?=.*[A-Z]).{5,}(?=.*[0-9]).{4,}(?=.*[A-Z]).{1,}(?=.*[A-Z]).{2,}(?=.*[0-9]).{3,}"> - </div> - <div class="col-md-3 pad"> - <span for="GSTNo">CST Number</span> - <input type="text" class="form-control " value="<?php echo $CSTNO;?>" id="CSTNo" name="CSTNo" maxlength="15"> - </div> - <div class="col-md-3 pad"><span>CST Registration Date</span> - <input id="dateofCST" name="dateofCST" value="<?php echo $CSTDate;?>" onkeypress="return false;" maxlength="10" class="form-control"> - </div> - <div class="col-md-3 pad"> - <span for="GSTNo">GST Number</span> - <input type="text" class="form-control " value="<?php echo $GSTNO;?>" id="GSTNo" name="GSTNo" maxlength="10"> - </div> - - <div class="col-md-3 pad"> - <span for="Range">GST Range</span> - <input type="text" class="form-control " id="GSTRange" value="<?php echo $GSTRange;?>" name="GSTRange" maxlength="10"> - </div> - <!-- Text input--> - - <div class="col-md-6 pad"><span for="CollectrateAddress">Collectrate Address</span> - <input type="text" class="form-control " id="CollectrateAddress" value="<?php echo $CollectrateAddress;?>" name="CollectrateAddress" maxlength="500" > - </div> - - - - <!-- Text input--> - <legend>Payment Details</legend> - <!-- Text input--> - - - <div class="col-md-3"> - <span for="payablefrom">Payable Terms</span> - <select class="form-control required" id="PaymentTerms" name="PaymentTerms"> - <option value="<?php echo $PaymentTerms;?>" ><?php echo $PaymentTerms;?></option> - <?php - if(!empty($payment)) - { - foreach ($payment as $rl) - { - ?> - <option value="<?php echo $rl->ConfigValue ?>"><?php echo $rl->ConfigValue ?></option> - <?php - - } - } - ?> - </select> - </div> - - <div class="col-md-3"> - <span for="PayableAT">Payable AT</span> - <input type="text" class="form-control required" value="<?php echo $PayableAT;?>" id="PayableAT" name="PayableAT"> - </div> - - <div class="col-md-3"><span>Payment Date</span><br/> - <label class="radio-inline"><input type="radio" name="Payment" <?php echo $PaymentBefore; ?> value="Before">Before</label> - <label class="radio-inline"><input type="radio" name="Payment" <?php echo $PaymentAfter; ?> value="After">After</label> - </div> - - - - - <div class="form-group"> - <div class="col-md-3 col-md-offset-9"> - <div class="pull-right"> - <input type="reset" id="reset" class="btn btn-info" value="Reset" /> - <input type="submit" onclick="validate();" class="btn btn-primary"> - </div> - </div> - </div> - </fieldset> - </form> - </div><!-- /.col-lg-12 --> -</div><!-- /.row --> - - - - </div> - </div> - <div class="col-md-4"> - <?php - $this->load->helper('form'); - $error = $this->session->flashdata('error'); - if($error) - { - ?> - <div class="alert alert-danger alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('error'); ?> - </div> - <?php } ?> - <?php - $success = $this->session->flashdata('success'); - if($success) - { - ?> - <div class="alert alert-success alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('success'); ?> - </div> - <?php } ?> - - <div class="row"> - <div class="col-md-12"> - <?php echo validation_errors('<div class="alert alert-danger alert-dismissable">', ' <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button></div>'); ?> - </div> - </div> - </div> - </div> - </section> - -</div> -<script> -function Validate() -{ - if(!validatePAN()) - { - return false; - $('#panno').focus(); - } -} - -//Call to ajax existing PAN - $('#panno').change(function() { - - var id = $('#panno').val(); - if(id != '') - { - $.ajax({ - data:{id:id}, - - type:"POST", - url:"<?php echo base_url();?>supplier/checkPAN", - success:function(data) { - if(data) - { - - var answer = confirm(data+""+" supplier details is already exists in the database.Do you want to change the SUPPLIER details?") - if (answer) { - $('#panno').val(''); - $('#panno').focus(); - return false; - } - else - { - alert('Please edit the supplier details in the Edit screen and change the supplier status to Active'); - window.location = 'supplier/supplierListing'; - } - - } - } - - }); - } - else - { - alert('Please enter the PAN Number'); - $('#panno').focus(); - return false; - } - -}); -</script> diff --git a/application/views/editimportpo.php b/application/views/editimportpo.php deleted file mode 100644 index 5049e52b..00000000 --- a/application/views/editimportpo.php +++ /dev/null @@ -1,3620 +0,0 @@ -<?php -$AvlAmount = 0; -$ReqType =''; - -//echo $ExchangeRate; -//echo $Currency; - - - -$dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); -$CurrentDate = $dt->format('Y-m-d'); - -$MaxPoDate = ''; -if(!empty($MaxPODate)) -{ - foreach ($MaxPODate as $date) - { - $MaxPoDate = $date->PODate; - } -} - -if(!empty($AvlBudAmt)) -{ - - $AvlAmount = $AvlBudAmt; - -} -//echo $AvlAmount; - -$CompanyAddress = ''; -if(!empty($CompanyDetails)) -{ - foreach ($CompanyDetails as $Req) - { - $CompanyAddress = $Req->Address; - } -} - - - //$Exchangerate=$ExchangeRate; - - - -$SupId = ''; -$SupName = ''; -$Address = ''; -$PODate = ''; -$Deliverydt =''; -$DeliveryAddress =''; -$POStatus=''; -$PONO = ''; -$ServiceDescription = ''; -$TotalLanding=''; -$tothighseas=''; -$totcustom=''; -$totexciseduty=''; -$totexcisedutyED=''; -$totexciseSH=''; -$totcustomED=''; -$totcustomSH=''; -$totaddtnlexcise=''; -$totgrossduty=''; -$totavlmodvat=''; -$totgrossexpense=''; -$totordervalue=''; -$ExchangeRate=''; -$totorder=''; -//$ExchangeRate - - -if(!empty($POMaster)) -{ - foreach ($POMaster as $Req) - { - $SupId = $Req->SupplierID; - $SupName = $Req->SupplierName; - $Address = $Req->Address; - - $Pdt = new DateTime($Req->PODate); - $PODate = $Pdt->format('Y-m-d'); - - $Ddt = new DateTime($Req->DeliveryDate); - $Deliverydt = $Ddt->format('Y-m-d'); - - $DeliveryAddress =$Req->DeliveryAddress; - $POStatus = $Req->StatusCode; - $PONO = $Req->PONO; - $ServiceDescription = $Req->ServiceDescription; - // $ExchangeRate=$Req->ExchangeRate; - } -} -?> - -<style> - .modal -{ - padding-right:25% ! important; -} -.dataTables_paginate -{ - margin-top: -5%; -} -.dataTables_wrapper { - padding-bottom: 0px; -} -</style> - -<script src="<?php echo base_url(); ?>assets/js/CreatePOValidation.js" type="text/javascript"> - -</script> - - -<script> - $(document).ready(function(){ - - //Initialize Select2 Elements - //$("#drpSupplier").select2(); - var POMaxDate = '<?php echo $MaxPoDate;?>'; - var d = new Date(POMaxDate); - $("#PODate").datepicker({ - minDate : d, - maxDate : 'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true,yearRange: '-100:+0' - }); - $("#Deliverydt").datepicker({ - minDate : 'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true,yearRange: '0:+10' - }); - - }); - -</script> - -<div class="content-wrapper"> - <?php - $attributes = array('class' => 'form-label-left ImportPO ','name' => 'ImportPO','id' => 'ImportPO'); - - echo form_open($this->config->base_url().'/purchaseorder/addPO/',$attributes); ?> - - - <section class="content"> - - <div style="border:2px solid #333"> - <div class="col-md-12"> - <div class="col-md-11"> - <center><b><h2>Siddharth Industries - Edit Import Purchase Order</h2></b></center> - </div> - <!--<div class="col-md-1"><br/> - <a class="btn btn-info" href="<?php echo base_url(); ?>purchaseorder/CreateimportPOPrint" target="_blank">Print</a> - </div> --> - </div> - <div class="container-fluid"> - <div class="row"> - <div class="col-md-12"> - <div class="col-md-3"> - <div class="col-md-12"> - - <label>Requistion No</label> - <?php - - $options = array("0"=>'Selected Requisition Numbers'); - if(!empty($ReqList)) - { - foreach ($ReqList as $SID): - $options[$SID->ReqNo] = $SID->ReqNo ; - // print_r($SID->ReqNo); - // $options[$SID->ReqNo] = $SID->ReqNo ."-". $SID->ReqBy; - //$ReqType = $SID->ReqType; - endforeach; - } - //echo form_multiselect('RequistionNo', $options,set_value('RequistionNo'),'id="RequistionNo"' , 'required="true"'); - echo form_multiselect('RequistionNo', $options,set_value('RequistionNo'),'id="RequistionNo"' ,'required="true"' , 'height="400px"' ); - - ?> - </div> - - - - - <div class="col-md-12"> - <label>Currency Type</label> - - <?php - $options = array("0"=>'Select Currency'); - - //print_r( $options); - if(!empty($Currency)) - { - foreach ($Currency as $CUR): - - - $options[$CUR->CurrencyCode] = $CUR->CurrencyCode.' '.' - '.' '.$CUR->CurrencyName; - - endforeach; - } - - //echo form_dropdown('drpSupplier', $options,set_value('drpSupplier'),'id="drpSupplier"' ,'required="true"' ,'class="form-control select2'); - echo form_dropdown('currencytype', $options,set_value('currencytype'),'id="currencytype"' ,'required="true"' ,'class="form-control select2'); - - - - - - - ?> - </div> - <!-- <div class="col-md-12"> - Basic Price in US $ per Ton : - <div class="form-group"> - <?php - $data = array('name' => 'BasicUSPrice','value' => set_value('BasicUSPrice'),'id'=>'BasicUSPrice', 'class' => 'form-control' ,'placeholder '=>'basic price','onkeypress'=>'return isNumberKey(event);','onchange'=>'USRate()'); - echo form_input($data); - ?> - </div> - </div> --> - <div class="col-md-12"> - <a href="http://www.xe.com/" target="_blank"><u>Click here to check Today's Foreign Exchange value</u></a> - </div> - - </div> - <div class="col-md-9"> - <div class="col-md-4"> - <div class="col-md-12"> - <label>Supplier</label> - - <?php - $options = array("0"=>'Select Supplier'); - //print_r( $options); - if(!empty($Suplist)) - { - foreach ($Suplist as $SID): - - - $options[$SID->SupplierID] = $SID->SupplierID.' '.' - '.' '.$SID->SupplierName; - - endforeach; - } - - //echo form_dropdown('drpSupplier', $options,set_value('drpSupplier'),'id="drpSupplier"' ,'required="true"' ,'class="form-control select2'); - - echo form_dropdown('drpSupplier', $options,set_value('drpSupplier',$SupId),'id="drpSupplier"' ,'required="true"' ,'class="form-control select2'); - - ?> - - - - </div> - <div class="col-md-12"><br/> - <label>Address</label> - <div class="form-group"> - <?php - $data = array('name' => 'SupAddress','value' => set_value('SupAddress',$Address),'id'=>'SupAddress', 'class' => 'form-control' ,'readonly' => 'true','rows' => '3', 'cols' => '40'); - echo Form_textarea($data); - - - - - ?> - </div> - </div> - <div class="col-md-12"> - Exchange Rate : - <div class="form-group"> - <?php - - - $data = array('name' => 'ExchangeRate','value' => set_value('ExchangeRate',$ExchangeRate),'id'=>'ExchangeRate', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'USRate()'); - - echo form_input($data); - ?> - </div> - - </div> - </div> - <div class="col-md-4"> - <div class="col-md-12"> - <label>Purchase Order Type</label> - <div class="form-group"> - - <?php - $data = array('name' => 'POType','value' => set_value('POType',IMPORT),'id'=>'POType', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-12"> - <label>Delivery Address</label> - <div class="form-group"> - <?php - $data = array('name' => 'DeliveryAddr','value' => set_value('DeliveryAddr',$DeliveryAddress),'id'=>'DeliveryAddr', 'class' => 'form-control' ,'required' => 'true', 'rows' => '3', 'cols' => '40'); - echo Form_textarea($data); - - ?> <input type="hidden" name="txtDeliveryAddress" id="txtDeliveryAddress" value="<?php echo $DeliveryAddress;?>"> - </div> - </div> - <!-- <div class="col-md-12"> - Basic value in INR : - <div class="form-group"> - <?php - $data = array('name' => 'INRBasicvalues','value' => set_value('INRBasicvalues'),'id'=>'INRBasicvalues', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div>--> - </div> - <div class="col-md-4"> - <div class="col-md-12"> - <label>Purchase Order Date</label> - <div class="form-group"> - <?php - $data = array('name' => 'PODate','value' => set_value('PODate',$PODate),'id'=>'PODate', 'class' => 'form-control' ,'required' => 'true', 'onkeypress'=>'return false;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-12"> - <label>Delivery Date</label> - <div class="form-group"> - <?php - $data = array('name' => 'Deliverydt','value' => set_value('Deliverydt',$Deliverydt),'id'=>'Deliverydt', 'class' => 'form-control' ,'required' => 'true', 'onkeypress'=>'return false;'); - echo form_input($data); - ?> - - - </div> - </div> - </div> - - </div> - </div> - </div> - - - <div class=""> - <table class="table table-bordered" style="border:1px solid #333"> - <div align="right" style="padding-right:10px"> -<div align="right"> -<a data-toggle="modal" data-target="#importpomodel" class="btn btn-primary" data-dismiss="modal" onclick="myFunction();" >Add Line Item </a> - - - - - <!--<a data-toggle="modal"><button type="submit" onclick="myFunction();" class="btn btn-primary" id="abcd" >Select Line Item</button> </a>--> - - - <!-- <div class="modal fade" id="importpomodel" role="dialog">--> - - <div id="importpomodel" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> - <div class="modal-dialog"> - <!-- Modal content--> - <form> - <div class="modal-content" style="width:900px;"> - <div class="modal-header" style="background-color: #3c8dbc;color:#fff;"> - <button type="button" class="close" data-dismiss="modal">&times;</button> - <center><h4>Add Import Purchase Order Item </h4></center> - </div> - <div align="left"> - - <div class="col-md-12"> - <div class="col-md-3"> - <label>Req No</label> - <div> - <?php - $options = array("0"=>'Req No'); - //echo form_dropdown('ImportMaterialCode', $options,set_value('ImportMaterialCode'),'id="ImportMaterialCode"' ,'class="form-control required"'); - $RL = array("0"=>'Select Req No'); - if(!empty($RequistionDetails)) - { - foreach ($RequistionDetails as $SID): - $RL[$SID->ReqNo] = $SID->ReqNo.' '.' - '.' '.$SID->DepartmentName; - endforeach; - } - - echo form_dropdown('ReqNo', $RL,set_value('ReqNo'),'id="ReqNo"' ,'class="form-control"'); - - ?> - </div> - </div> - - <div class="col-md-3"> - <label>Department Name</label> - <div class="form-group"> - <?php - //$data = array('name' => 'ImportDepartmentName','value' => set_value('ImportDepartmentName'),'id'=>'ImportDepartmentName', 'class' => 'form-control' ,'readonly' => 'true'); - $data = array('name' => 'deptName','value' => set_value('deptName'),'id'=>'deptName', 'class' => 'form-control','readonly'=>'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-3"> - <label>Cost Center Name</label> - <div class="form-group"> - <?php - //$options = array("0"=>'Select Cost Center'); - - //echo form_dropdown('CostCenter', $options,set_value('CostCenter'),'id="CostCenter"' ,'class="form-control"'); - - $data = array('name' => 'CostCenter','value' => set_value('CostCenter'),'id'=>'CostCenter', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - - ?> - </div> - </div> - <div class="col-md-3"> - <label>Available Budget Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'AvlBudAmt','value' => set_value('AvlBudAmt'),'id'=>'AvlBudAmt', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-2"> - <label>Item Code</label> - - <!--In this item code the value should come from DB , so it getting error , so i am disabling this div , once get the data from DB uncommand this div--> - <div> - <?php - // $options = array("0"=>'Item Code'); - - //if(!empty($MaterialList)) - //{ - // foreach ($MaterialList as $SID): - - - // $options[$SID->MaterialCode] = $SID->MaterialCode.' '.' - '.' '.$SID->MaterialName; - - //endforeach; - //} - - //echo form_dropdown('ImportMaterialCode', $options,set_value('ImportMaterialCode'),'id="ImportMaterialCode"' ,'class="form-control"'); - - $options = array("0"=>'Item Code'); - //print_r( $options); - - - - echo form_dropdown('MaterialCode', $options,set_value('MaterialCode'),'id="MaterialCode"' ,'class="form-control"'); - - ?> - </div> - - </div> - - <div class="col-md-2"> - <label>Item Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'ItemName','value' => set_value('ItemName'),'id'=>'ItemName', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>UOM</label> - <div class="form-group"> - <?php - $data = array('name' => 'UOM','value' => set_value('UOM'),'id'=>'UOM', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Quantity</label> - <div class="form-group"> - <?php - $data = array('name' => 'Quantity','value' => set_value('Quantity'),'id'=>'Quantity', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'Ratechange()'); - echo form_input($data); - - ?> - </div> - </div> - <div class="col-md-2"> - <label>Rate </label> - <div class="form-group"> - <?php - $data = array('name' => 'Rate','value' => set_value('Rate'),'id'=>'Rate', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);' ,'onchange'=>'Ratechange()' ); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Basic Amount </label> - <div class="form-group"> - <?php - //$data = array('name' => 'imTotalAmount','value' => set_value('imTotalAmount'),'id'=>'imTotalAmount', 'class' => 'form-control' ,'readonly' => 'true'); - - $data = array('name' => 'txtBasicValue','value' => set_value('txtBasicValue'),'id'=>'txtBasicValue', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - - <div class="col-md-3"> - - Basic Price in US $ per Ton : - - - <div class="form-group"> - <?php - $data = array('name' => 'imBasicPrice','value' => set_value('imBasicPrice'),'id'=>'imBasicPrice', 'class' => 'form-control' ,'placeholder '=>'basic price','onkeypress'=>'return isNumberKey(event);','onchange'=>'USRate()'); - echo form_input($data); - ?> - </div> - </div> - - <div class="col-md-3"> - - Exchange Rate : - - - <div class="form-group"> - <?php - $data = array('name' => 'ExchangeRt','value' => set_value('ExchangeRt'),'id'=>'ExchangeRt', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','readonly'=>'true'); - echo form_input($data); - ?> - </div> - - </div> - - <div class="col-md-3"> - - Basic value in INR : - - - - <div class="form-group"> - <?php - $data = array('name' => 'INRBasicvalue','value' => set_value('INRBasicvalue'),'id'=>'INRBasicvalue', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <!--<div class="col-md-3"> - <a href="http://www.xe.com/" target="_blank"><u>Click nere to check Today's Foreign Exchange value</u></a> - </div>--> - - <div class="col-md-12" style="border:1px solid #000;padding:0px;"> - <br/> - <div class="col-md-6" style="padding:0px;"> - <div class="col-md-12"> - <div class="col-md-4" > - Basic Price: - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'BasicPriceTax','value' => set_value('BasicPriceTax'),'id'=>'BasicPriceTax', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterBasicPriceTax','value' => set_value('AfterBasicPriceTax'),'id'=>'AfterBasicPriceTax', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Landing charge - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'LandingCharge','value' => set_value('LandingCharge'),'id'=>'LandingCharge', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'Calculateloadingcharge()'); - echo form_input($data); - - - - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterLandingCharge','value' => set_value('AfterLandingCharge'),'id'=>'AfterLandingCharge', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - High seas sales charge - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'Highseas ','value' => set_value('Highseas'),'id'=>'Highseas', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'CalculateHighseassalescharge()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterHighseas','value' => set_value('AfterHighseas'),'id'=>'AfterHighseas', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Custom duty : (a) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'Customduty','value' => set_value('Customduty'),'id'=>'Customduty', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'CalculateCustomduty()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterCustomduty','value' => set_value('AfterCustomduty'),'id'=>'AfterCustomduty', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Excise duty : (b) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'ExcisedutyTax','value' => set_value('ExcisedutyTax'),'id'=>'ExcisedutyTax', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'CalculateExciseDuty()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterExcisedutyTax','value' => set_value('AfterExcisedutyTax'),'id'=>'AfterExcisedutyTax', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Excise duty ED_cess : (C) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'ExcisedutyEDcess','value' => set_value('ExcisedutyEDcess'),'id'=>'ExcisedutyEDcess', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'CalculateExciseED1()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterExcisedutyEDcess','value' => set_value('AfterExcisedutyEDcess'),'id'=>'AfterExcisedutyEDcess', 'class' => 'form-control','readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Excise duty S & H cess :(d) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'ExcisedutySHcess','value' => set_value('ExcisedutySHcess'),'id'=>'ExcisedutySHcess', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'CalculateexciseSHcess()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterExcisedutySHcess','value' => set_value('AfterExcisedutySHcess'),'id'=>'AfterExcisedutySHcess', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Custom ED_cess : (e) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'CustomEDcess','value' => set_value('CustomEDcess'),'id'=>'CustomEDcess', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'CalculateCustomEdcess()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterCustomEDcess','value' => set_value('AfterCustomEDcess'),'id'=>'AfterCustomEDcess', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Custom S & H cess : (f) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'CustomSHcess','value' => set_value('CustomSHcess'),'id'=>'CustomSHcess', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'CalculateCustomSHcess()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterCustomSHcess','value' => set_value('AfterCustomSHcess'),'id'=>'AfterCustomSHcess', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - </div> - <div class="col-md-6" style="padding:0px;"> - <div class="col-md-12"> - <div class="col-md-4"> - Additional Excise duty : (g) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AdditionalExciseduty ','value' => set_value('AdditionalExciseduty'),'id'=>'AdditionalExciseduty', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'CalculateaddlExciseDuty(),CalculateAvlModvat(),CalculateGrossExpense()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterAdditionalExciseduty','value' => set_value('AfterAdditionalExciseduty'),'id'=>'AfterAdditionalExciseduty', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-8"> - Gross duty payable - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'Grossdutypayable ','value' => set_value('Grossdutypayable'),'id'=>'Grossdutypayable', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'CalculateAvlModvat()'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-8"> - Available Modvat set-off on import : - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AvailableModvat','value' => set_value('AvailableModvat'),'id'=>'AvailableModvat', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> (b + c + d + g) - </div> - </div> - - </div> - <div class="col-md-12"> - - <div class="col-md-8"> - Gross expenses due to custom duty: - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'Grossexpenses','value' => set_value('Grossexpenses'),'id'=>'Grossexpenses', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - </div> - - <div class="col-md-12"> - <center> <label>Cost of the product Per KG</label></center> - <hr/> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - purchase rate [Basic] - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'purchaserate','value' => set_value('purchaserate'),'id'=>'purchaserate', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','readonly'=>'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4" style="margin-top: -4.8%"> - <span>Quantity</span> - <div class="form-group"> - <?php - $data = array('name' => 'PurQuantity','value' => set_value('PurQuantity'),'id'=>'PurQuantity', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'CalculateCtable()'); - echo form_input($data); - ?> - </div> - </div> - - </div> - <div class="col-md-12"> - - <div class="col-md-4"> - Custom Duty Expenses - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'CustomDutyExpenses ','value' => set_value('CustomDutyExpenses'),'id'=>'CustomDutyExpenses', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','readonly'=>'true'); - echo form_input($data); - ?> - </div> - </div> - - </div> - <div class="col-md-12"> - <div class="col-md-4"> - RMC Including Customers - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'RMCIncludingCustomers','value' => set_value('RMCIncludingCustomers'),'id'=>'RMCIncludingCustomers', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','readonly'=>'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - Total Amount: - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'TotalExp','value' => set_value('TotalExp'),'id'=>'TotalExp', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','readonly'=>'true'); - echo form_input($data); - ?> - </div> - </div> - - </div> - - - </div> - </div> - </div> - - </div> - <div class="modal-footer"> - <a class="btn btn-info font AddImport" ID="AddImport" ><i class="fa fa-plus"></i>&nbsp;&nbsp;<span class="bold">Add Import</span></a> - <!--<a class="btn btn-primary font AddService" ID="AddService" ><i class="fa fa-plus"></i>&nbsp;&nbsp;<span class="bold">Add Service</span></a>--> - - <a class="btn btn-info" data-dismiss="modal" value="Cancel">Cancel</a> - - </div> - </div> - </form> - - </div> - </div> - </div> -</div> - - - -<!--Edit modal body--> - - <div id="editimportpomodel" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> - <div class="modal-dialog"> - <!-- Modal content--> - <form> - <div class="modal-content" style="width:900px;"> - <div class="modal-header" style="background-color: #3c8dbc;color:#fff;"> - <button type="button" class="close" data-dismiss="modal">&times;</button> - <center><h4>Edit Import Purchase Order Item </h4></center> - </div> - <div align="left"> - - <div class="col-md-12"> - <div class="col-md-3"> - <label>Req No</label> - <div> - <?php - - $data = array('name' => 'EditReqNo','value' => set_value('EditReqNo'),'id'=>'EditReqNo', 'class' => 'form-control','readonly'=>'true'); - echo form_input($data);?> - </div> - </div> - - <div class="col-md-3"> - <label>Department Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditdeptName','value' => set_value('EditdeptName'),'id'=>'EditdeptName', 'class' => 'form-control','readonly'=>'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-3"> - <label>Cost Center Name</label> - <div class="form-group"> - <?php - $options = array("0"=>'Select Cost Center'); - - //echo form_dropdown('EditCostCenter', $options,set_value('EditCostCenter'),'id="EditCostCenter"' ,'class="form-control"'); - - $data = array('name' => 'EditCostCenter','value' => set_value('EditCostCenter'),'id'=>'EditCostCenter', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - - ?> - </div> - </div> - <div class="col-md-3"> - <label>Available Budget Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditAvlBudAmt','value' => set_value('EditAvlBudAmt'),'id'=>'EditAvlBudAmt', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-2"> - <label>Item Code</label> - - <!--In this item code the value should come from DB , so it getting error , so i am disabling this div , once get the data from DB uncommand this div--> - <div> - <?php - // $options = array("0"=>'Item Code'); - - //if(!empty($MaterialList)) - //{ - // foreach ($MaterialList as $SID): - - - // $options[$SID->MaterialCode] = $SID->MaterialCode.' '.' - '.' '.$SID->MaterialName; - - //endforeach; - //} - - //echo form_dropdown('ImportMaterialCode', $options,set_value('ImportMaterialCode'),'id="ImportMaterialCode"' ,'class="form-control"'); - - $options = array("0"=>'Item Code'); - //print_r( $options); - - - - echo form_dropdown('EditMaterialCode', $options,set_value('EditMaterialCode'),'id="EditMaterialCode"' ,'class="form-control"'); - - ?> - </div> - - </div> - - <div class="col-md-2"> - <label>Item Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditItemName','value' => set_value('EditItemName'),'id'=>'EditItemName', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>UOM</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditUOM','value' => set_value('EditUOM'),'id'=>'EditUOM', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Quantity</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditQuantity','value' => set_value('EditQuantity'),'id'=>'EditQuantity', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'Ratechange(),ExceedEditQuantityCheck()'); - echo form_input($data); - - ?> - </div> - </div> - <div class="col-md-2"> - <label>Rate </label> - <div class="form-group"> - <?php - $data = array('name' => 'EditRate','value' => set_value('EditRate'),'id'=>'EditRate', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);' ,'onchange'=>'Ratechange()' ); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Basic Amount </label> - <div class="form-group"> - <?php - //$data = array('name' => 'imTotalAmount','value' => set_value('imTotalAmount'),'id'=>'imTotalAmount', 'class' => 'form-control' ,'readonly' => 'true'); - - $data = array('name' => 'EdittxtBasicValue','value' => set_value('EdittxtBasicValue'),'id'=>'EdittxtBasicValue', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - - <div class="col-md-3"> - - Basic Price in US $ per Ton : - - - <div class="form-group"> - <?php - $data = array('name' => 'EditimBasicPrice','value' => set_value('EditimBasicPrice'),'id'=>'EditimBasicPrice', 'class' => 'form-control' ,'placeholder '=>'basic price','onkeypress'=>'return isNumberKey(event);','readonly'=>'true'); - echo form_input($data); - ?> - </div> - </div> - - <div class="col-md-3"> - - Exchange Rate : - - - <div class="form-group"> - <?php - $data = array('name' => 'EditExchangeRt','value' => set_value('EditExchangeRt'),'id'=>'EditExchangeRt', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','readonly'=>'true'); - echo form_input($data); - ?> - </div> - - </div> - - <div class="col-md-3"> - - Basic value in INR : - - - - <div class="form-group"> - <?php - $data = array('name' => 'EditINRBasicvalue','value' => set_value('EditINRBasicvalue'),'id'=>'EditINRBasicvalue', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <!--<div class="col-md-3"> - <a href="http://www.xe.com/" target="_blank"><u>Click nere to check Today's Foreign Exchange value</u></a> - </div>--> - - <div class="col-md-12" style="border:1px solid #000;padding:0px;"> - <br/> - <div class="col-md-6" style="padding:0px;"> - <div class="col-md-12"> - <div class="col-md-4" > - Basic Price: - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditBasicPriceTax','value' => set_value('EditBasicPriceTax'),'id'=>'EditBasicPriceTax', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAfterBasicPriceTax','value' => set_value('EditAfterBasicPriceTax'),'id'=>'EditAfterBasicPriceTax', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Landing charge - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditLandingCharge','value' => set_value('EditLandingCharge'),'id'=>'EditLandingCharge', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'EditCalculateloadingcharge()'); - echo form_input($data); - - - - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAfterLandingCharge','value' => set_value('EditAfterLandingCharge'),'id'=>'EditAfterLandingCharge', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - High seas sales charge - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditHighseas ','value' => set_value('EditHighseas'),'id'=>'EditHighseas', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'EditCalculateHighseassalescharge()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAfterHighseas','value' => set_value('EditAfterHighseas'),'id'=>'EditAfterHighseas', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Custom duty : (a) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditCustomduty','value' => set_value('EditCustomduty'),'id'=>'EditCustomduty', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'EditCalculateCustomduty()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAfterCustomduty','value' => set_value('EditAfterCustomduty'),'id'=>'EditAfterCustomduty', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Excise duty : (b) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditExcisedutyTax','value' => set_value('EditExcisedutyTax'),'id'=>'EditExcisedutyTax', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'EditCalculateExciseDuty()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAfterExcisedutyTax','value' => set_value('EditAfterExcisedutyTax'),'id'=>'EditAfterExcisedutyTax', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Excise duty ED_cess : (C) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditExcisedutyEDcess','value' => set_value('EditExcisedutyEDcess'),'id'=>'EditExcisedutyEDcess', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'EditCalculateExciseED1()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAfterExcisedutyEDcess','value' => set_value('EditAfterExcisedutyEDcess'),'id'=>'EditAfterExcisedutyEDcess', 'class' => 'form-control','readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Excise duty S & H cess :(d) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditExcisedutySHcess','value' => set_value('EditExcisedutySHcess'),'id'=>'EditExcisedutySHcess', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'EditCalculateexciseSHcess()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAfterExcisedutySHcess','value' => set_value('EditAfterExcisedutySHcess'),'id'=>'EditAfterExcisedutySHcess', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Custom ED_cess : (e) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditCustomEDcess','value' => set_value('EditCustomEDcess'),'id'=>'EditCustomEDcess', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'EditCalculateCustomEdcess()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAfterCustomEDcess','value' => set_value('EditAfterCustomEDcess'),'id'=>'EditAfterCustomEDcess', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Custom S & H cess : (f) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditCustomSHcess','value' => set_value('EditCustomSHcess'),'id'=>'EditCustomSHcess', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'EditCalculateCustomSHcess()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAfterCustomSHcess','value' => set_value('EditAfterCustomSHcess'),'id'=>'EditAfterCustomSHcess', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - </div> - <div class="col-md-6" style="padding:0px;"> - <div class="col-md-12"> - <div class="col-md-4"> - Additional Excise duty : (g) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAdditionalExciseduty ','value' => set_value('EditAdditionalExciseduty'),'id'=>'EditAdditionalExciseduty', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'EditCalculateaddlExciseDuty(),EditCalculateAvlModvat(),EditCalculateGrossExpense()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAfterAdditionalExciseduty','value' => set_value('EditAfterAdditionalExciseduty'),'id'=>'EditAfterAdditionalExciseduty', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-8"> - Gross duty payable - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditGrossdutypayable ','value' => set_value('EditGrossdutypayable'),'id'=>'EditGrossdutypayable', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-8"> - Available Modvat set-off on import : - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAvailableModvat','value' => set_value('EditAvailableModvat'),'id'=>'EditAvailableModvat', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> (b + c + d + g) - </div> - </div> - - </div> - <div class="col-md-12"> - - <div class="col-md-8"> - Gross expenses due to custom duty: - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditGrossexpenses','value' => set_value('EditGrossexpenses'),'id'=>'EditGrossexpenses', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - </div> - - <div class="col-md-12"> - <center> <label>Cost of the product Per KG</label></center> - <hr/> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - purchase rate [Basic] - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'Editpurchaserate','value' => set_value('Editpurchaserate'),'id'=>'Editpurchaserate', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','readonly'=>'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4" style="margin-top: -4.8%"> - <span>Quantity</span> - <div class="form-group"> - <?php - $data = array('name' => 'EditPurQuantity','value' => set_value('EditPurQuantity'),'id'=>'EditPurQuantity', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'EditCalculateCtable()'); - echo form_input($data); - ?> - </div> - </div> - - </div> - <div class="col-md-12"> - - <div class="col-md-4"> - Custom Duty Expenses - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditCustomDutyExpenses ','value' => set_value('EditCustomDutyExpenses'),'id'=>'EditCustomDutyExpenses', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','readonly'=>'true'); - echo form_input($data); - ?> - </div> - </div> - - </div> - <div class="col-md-12"> - <div class="col-md-4"> - RMC Including Customers - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditRMCIncludingCustomers','value' => set_value('EditRMCIncludingCustomers'),'id'=>'EditRMCIncludingCustomers', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','readonly'=>'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - Total Amount: - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditTotalExp','value' => set_value('TotalExp'),'id'=>'TotalExp', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','readonly'=>'true'); - echo form_input($data); - ?> - </div> - </div> - - </div> - - - </div> - </div> - </div> - - </div> - <div class="modal-footer"> - <a class="btn btn-info font EditImport" ID="EditImport" ><i class="fa fa-plus" ></i>&nbsp;&nbsp;<span class="bold">Edit Import</span></a> - <!--<a class="btn btn-primary font AddService" ID="AddService" ><i class="fa fa-plus"></i>&nbsp;&nbsp;<span class="bold">Add Service</span></a>--> - - <a class="btn btn-info" data-dismiss="modal" value="Cancel">Cancel</a> - - </div> - </div> - </form> - - </div> - </div> - </div> - - - - - - - <br/> - <div class="box-body" style="margin-top: -3%;"> - <table id="ImportTax" class="table table-bordered table-hover" style="background-color:#fff;font-size:12px;"> - <thead style="background-color:#ddf"> - <tr> - <th>SNo</th> - <th>Requisition No</th> - <th>Item Name</th> - <th>Quantity</th> - <th>UOM</th> - <th>Rate</th> - <th>Basic Amount</th> - <th>Tax Amount</th> - <th>Total Order Amount</th> - <th>Action</th> - </tr> - </thead> - - <tbody id='ImportAppend'> - <?php - if(!empty($POItem)) - { - $index = 0; - - foreach($POItem as $record) - { - $index = $index + 1; - - ?> - <tr id="<?php echo $index ; ?>"> - <td align="left"><?php echo $index ; ?></td> - <td><?php echo $record->ReqNo ?></td> - <td><?php echo $record->MaterialName?></td> - <td><?php echo $record->Quantity ?></td> - <td><?php echo $record->UOM ?></td> - <td><?php echo $record->Rate ?></td> - <td><?php echo $record->BasicValue ?></td> - <td><?php echo $record->Taxamount?></td> - <td><?php echo $record->TotalOrderValue?></td> - -<input type="hidden" name="<?php echo 'Reqnumber'.$index ?>" id="<?php echo 'Reqnumber'.$index ?>" value="<?php echo $record->ReqNo ; ?>" /> -<input type="hidden" name="<?php echo 'departmentName'.$index ?>" id="<?php echo 'departmentName'.$index ?>" value="<?php echo $record->DepartmentName ; ?>" /> - -<!--<input type="hidden" name="<?php echo 'AvlBudAmt'.$index ?>" id="<?php echo 'AvlBudAmt'.$index ?>" value="<?php echo $record->AvlBudAmt ; ?>" /> --> -<input type="hidden" name="<?php echo 'AvlBudAmt'.$index ?>" id="<?php echo 'AvlBudAmt'.$index ?>" value="<?php echo "$AvlAmount" ; ?>" /> - -<input type="hidden" name="<?php echo 'LineItemNo'.$index ?>" id="<?php echo 'LineItemNo'.$index ?>" value="<?php echo $record->LineItemNo ; ?>" /> -<input type="hidden" name="<?php echo 'costCode'.$index ?>" id="<?php echo 'costCode'.$index ?>" value="<?php echo $record->CostCenterCode ; ?>" /> -<input type="hidden" name="<?php echo 'materialCode'.$index ?>" id="<?php echo 'materialCode'.$index ?>" value="<?php echo $record->MaterialCode ; ?>" /> -<input type="hidden" name="<?php echo 'materialName'.$index ?>" id="<?php echo 'materialName'.$index ?>" value="<?php echo $record->MaterialName ; ?>" /> -<input type="hidden" name="<?php echo 'uom'.$index ?>" id="<?php echo 'uom'.$index ?>" value="<?php echo $record->UOM ; ?>" /> -<input type="hidden" name="<?php echo 'quantity'.$index ?>" id="<?php echo 'quantity'.$index ?>" value="<?php echo $record->Quantity ; ?>" /> -<input type="hidden" name="<?php echo 'itemRate'.$index ?>" id="<?php echo 'itemRate'.$index ?>" value="<?php echo $record->Rate ; ?>" /> -<input type="hidden" name="<?php echo 'LandingCharge'.$index ?>" id="<?php echo 'LandingCharge'.$index ?>" value="<?php echo $record->LandingCharge; ?>" /> -<input type="hidden" name="<?php echo 'AfterLandingCharge'.$index ?>" id="<?php echo 'AfterLandingCharge'.$index ?>" value="<?php echo $record->AfterLandingCharge; ?>" /> -<input type="hidden" name="<?php echo 'HighSeasSalesCharge'.$index ?>" id="<?php echo 'HighSeasSalesCharge'.$index ?>" value="<?php echo $record->HighSeasSalesCharge ; ?>" /> -<input type="hidden" name="<?php echo 'AfterHighSeasSalesCharge'.$index ?>" id="<?php echo 'AfterHighSeasSalesCharge'.$index ?>" value="<?php echo $record->AfterHighSeasSalesCharge ; ?>" /> -<input type="hidden" name="<?php echo 'CustomDuty'.$index ?>" id="<?php echo 'CustomDuty'.$index ?>" value="<?php echo $record->CustomDuty ; ?>" /> -<input type="hidden" name="<?php echo 'AfterCustomDuty'.$index ?>" id="<?php echo 'AfterCustomDuty'.$index ?>" value="<?php echo $record->AfterCustomDuty ; ?>" /> -<input type="hidden" name="<?php echo 'ExciseDuty'.$index ?>" id="<?php echo 'ExciseDuty'.$index ?>" value="<?php echo $record->ExciseDuty ; ?>" /> -<input type="hidden" name="<?php echo 'AfterExciseDuty'.$index ?>" id="<?php echo 'AfterExciseDuty'.$index ?>" value="<?php echo $record->AfterExciseDuty ; ?>" /> - -<input type="hidden" name="<?php echo 'ExciseDutyEdCess'.$index ?>" id="<?php echo 'ExciseDutyEdCess'.$index ?>" value="<?php echo $record->ExciseDutyEdCess ; ?>" /> -<input type="hidden" name="<?php echo 'AfterExciseDutyEdCess'.$index ?>" id="<?php echo 'AfterExciseDutyEdCess'.$index ?>" value="<?php echo $record->AfterExciseDutyEdCess ; ?>" /> - -<input type="hidden" name="<?php echo 'CustomEdCess'.$index ?>" id="<?php echo 'CustomEdCess'.$index ?>" value="<?php echo $record->CustomEdCess ; ?>" /> -<input type="hidden" name="<?php echo 'AfterCustomEdCess'.$index ?>" id="<?php echo 'AfterCustomEdCess'.$index ?>" value="<?php echo $record->AfterCustomEdCess ; ?>" /> - -<input type="hidden" name="<?php echo 'ExchangeRate'.$index ?>" id="<?php echo 'ExchangeRate'.$index ?>" value="<?php echo $record->ExchangeRate ; ?>" /> - -<input type="hidden" name="<?php echo 'AddlExciseDuty'.$index ?>" id="<?php echo 'AddlExciseDuty'.$index ?>" value="<?php echo $record->AddlExciseDuty ; ?>" /> -<input type="hidden" name="<?php echo 'AfterAddlExciseDuty'.$index ?>" id="<?php echo 'AfterAddlExciseDuty'.$index ?>" value="<?php echo $record->AfterAddlExciseDuty; ?>" /> -<input type="hidden" name="<?php echo 'Grossdutypayable'.$index ?>" id="<?php echo 'Grossdutypayable'.$index ?>" value="<?php echo $record->Grossdutypayable; ?>" /> -<input type="hidden" name="<?php echo 'AvailableModvat'.$index ?>" id="<?php echo 'AvailableModvat'.$index ?>" value="<?php echo $record->AvailableModvat; ?>" /> - -<input type="hidden" name="<?php echo 'Grossexpensesduetocustomduty'.$index ?>" id="<?php echo 'Grossexpensesduetocustomduty'.$index ?>" value="<?php echo $record->Grossexpensesduetocustomduty; ?>" /> - -<input type="hidden" name="<?php echo 'purchaseratePerKG'.$index ?>" id="<?php echo 'purchaseratePerKG'.$index ?>" value="<?php echo $record->purchaseratePerKG; ?>" /> - -<input type="hidden" name="<?php echo 'CustomDutyExpensesPerKG'.$index ?>" id="<?php echo 'CustomDutyExpensesPerKG'.$index ?>" value="<?php echo $record->CustomDutyExpensesPerKG; ?>" /> - -<input type="hidden" name="<?php echo 'RMCIncludingCustomersPerKG'.$index ?>" id="<?php echo 'RMCIncludingCustomersPerKG'.$index ?>" value="<?php echo $record->RMCIncludingCustomersPerKG; ?>" /> - -<input type="hidden" name="<?php echo 'QuantityKG'.$index ?>" id="<?php echo 'QuantityKG'.$index ?>" value="<?php echo $record->QuantityKG; ?>" /> - -<input type="hidden" name="<?php echo 'BasicPriceInMTon'.$index ?>" id="<?php echo 'BasicPriceInMTon'.$index ?>" value="<?php echo $record->BasicPriceInMTon ; ?>" /> - -<input type="hidden" name="<?php echo 'ProductPrice'.$index ?>" id="<?php echo 'ProductPrice'.$index ?>" value="<?php echo $record->ProductPrice ; ?>" /> - -<input type="hidden" name="<?php echo 'ExciseDutySHCess'.$index ?>" id="<?php echo 'ExciseDutySHCess'.$index ?>" value="<?php echo $record->ExciseDutySHCess ; ?>" /> -<input type="hidden" name="<?php echo 'AfterExciseDutySHCess'.$index ?>" id="<?php echo 'AfterExciseDutySHCess'.$index ?>" value="<?php echo $record->AfterExciseDutySHCess ; ?>" /> - - -<input type="hidden" name="<?php echo 'CustomSHCess'.$index ?>" id="<?php echo 'CustomSHCess'.$index ?>" value="<?php echo $record->CustomSHCess ; ?>" /> -<input type="hidden" name="<?php echo 'AfterCustomSHCess'.$index ?>" id="<?php echo 'AfterCustomSHCess'.$index ?>" value="<?php echo $record->AfterCustomSHCess; ?>" /> - -<input type="hidden" name="<?php echo 'Grossdutypayable'.$index ?>" id="<?php echo 'Grossdutypayable'.$index ?>" value="<?php echo $record->Grossdutypayable ; ?>" /> -<input type="hidden" name="<?php echo 'QuantityKG'.$index ?>" id="<?php echo 'QuantityKG'.$index ?>" value="<?php echo $record->QuantityKG ; ?>" /> -<input type="hidden" name="<?php echo 'purchaseratePerKG'.$index ?>" id="<?php echo 'purchaseratePerKG'.$index ?>" value="<?php echo $record->purchaseratePerKG ; ?>" /> -<input type="hidden" name="<?php echo 'RMCIncludingCustomersPerKG'.$index ?>" id="<?php echo 'RMCIncludingCustomersPerKG'.$index ?>" value="<?php echo $record->RMCIncludingCustomersPerKG ; ?>" /> - -<input type="hidden" name="<?php echo 'BasicPriceInMTon'.$index ?>" id="<?php echo 'BasicPriceInMTonG'.$index ?>" value="<?php echo $record->BasicPriceInMTon ; ?>" /> -<input type="hidden" name="<?php echo 'ProductPrice'.$index ?>" id="<?php echo 'ProductPrice'.$index ?>" value="<?php echo $record->ProductPrice; ?>" /> - -<input type="hidden" name="<?php echo 'CustomEdCess'.$index ?>" id="<?php echo 'CustomEdCess'.$index ?>" value="<?php echo $record->CustomEdCess; ?>" /> -<input type="hidden" name="<?php echo 'AfterCustomEdCess'.$index ?>" id="<?php echo 'AfterCustomEdCess'.$index ?>" value="<?php echo $record->AfterCustomEdCess; ?>" /> -<input type="hidden" name="<?php echo 'ExciseDutySHCess'.$index ?>" id="<?php echo 'ExciseDutySHCess'.$index ?>" value="<?php echo $record->ExciseDutySHCess; ?>" /> - -<input type="hidden" name="<?php echo 'AfterExciseDutySHCess'.$index ?>" id="<?php echo 'AfterExciseDutySHCess'.$index ?>" value="<?php echo $record->AfterExciseDutySHCess; ?>" /> - -<input type="hidden" name="<?php echo 'Grossdutypayable'.$index ?>" id="<?php echo 'Grossdutypayable'.$index ?>" value="<?php echo $record->Grossdutypayable; ?>" /> -<input type="hidden" name="<?php echo 'AvailableModvat'.$index ?>" id="<?php echo 'AvailableModvat'.$index ?>" value="<?php echo $record->AvailableModvat; ?>" /> -<input type="hidden" name="<?php echo 'Grossexpensesduetocustomduty'.$index ?>" id="<?php echo 'Grossexpensesduetocustomduty'.$index ?>" value="<?php echo $record->Grossexpensesduetocustomduty; ?>" /> - -<input type="hidden" name="<?php echo 'Grossexpensesduetocustomduty'.$index ?>" id="<?php echo 'Grossexpensesduetocustomduty'.$index ?>" value="<?php echo $record->Grossexpensesduetocustomduty; ?>" /> - -<input type="hidden" name="<?php echo 'BasicINRValue'.$index ?>" id="<?php echo 'BasicINRValue'.$index ?>" value="<?php echo $record->BasicINRValue; ?>" /> - -<input type="hidden" name="<?php echo 'TotalValue'.$index ?>" id="<?php echo 'TotalValue'.$index ?>" value="<?php echo $record->TotalValue; ?>" /> - - - - <?php - - if($POStatus == PO_DRAFT) - {?> - <td> <a data-target='#editimportpomodel' data-id="<?php echo $index ; ?>" data-userid="<?php echo $index ; ?>" data-toggle="modal" href="#editimportpomodel"><i class="fa fa-pencil" data-toggle="tooltip" title="Click here to view/Edit the <?php echo $record->ReqNo ; ?> Requisition details"></i>&nbsp;&nbsp;&nbsp;</a> <a href='#' onclick = "DeleteRow(<?php echo $index ; ?>)" class="link" data-id="<?php echo $index ; ?>" data-userid="<?php echo $index ; ?>" id="Del" ><span class="glyphicon glyphicon-trash"></span></a> - <?php - } else {?> - <td> <a data-toggle="tooltip" href="#"><i class="fa fa-eye" data-toggle="tooltip" title="<?php echo $record->ReqNo; ?> - Click here to view Requistion details"></i>&nbsp;&nbsp;&nbsp;</a> </td> - <?php - }?> - </tr> <?php - - - - $TotalLanding = $TotalLanding + $record->AfterLandingCharge; - $tothighseas = $tothighseas + $record->AfterHighSeasSalesCharge; - $totcustom = $totcustom + $record->AfterCustomDuty; - $totexciseduty = $totexciseduty + $record->ExciseDuty; - $totexcisedutyED = $totexcisedutyED + $record->ExciseDutyEdCess; - $totexciseSH = $totexciseSH + $record->AfterExciseDutySHCess; - $totcustomED = $totcustomED +$record->AfterCustomEdCess; - - $totcustomSH = $totcustomSH + $record->CustomSHCess; - $totaddtnlexcise= $totaddtnlexcise + $record->AddlExciseDuty; - $totgrossduty = $totgrossduty + $record->Grossdutypayable; - $totavlmodvat = $totavlmodvat +$record->AvailableModvat; - $totgrossduty=$totgrossduty+$record->Grossdutypayable; - $totavlmodvat=$totavlmodvat+$record->AvailableModvat; - $totgrossexpense=$totgrossexpense+$record->Grossexpensesduetocustomduty; - $ExchangeRate=$record->ExchangeRate; - $totorder=$totorder+$record->TotalOrderValue; - - - - } - ?> <input type="hidden" name="txtRowCount" id="txtRowCount" value="<?php echo $index;?>"> - <?php - - } - ?> - </tbody> - </table> - </div> - - <div class="col-md-12" style="border: 1px solid;"> - - <div class="col-md-12"> - <div class="col-md-4"> - <label >Total Landing Charge :</label> - - <?php - $data = array('name' => 'txttotallanding','value' => set_value('txttotallanding',$TotalLanding),'id'=>'txttotallanding', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - <div class="col-md-4"> - <label >Total High seas sales Charge :</label> - - <?php - $data = array('name' => 'txttotalhighseas','value' => set_value('txttotalhighseas',$tothighseas),'id'=>'txttotalhighseas', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - <div class="col-md-4"> - <label >Total Custom Duty Charge :</label> - - <?php - $data = array('name' => 'txttotalcustom','value' => set_value('txttotalcustom',$totcustom),'id'=>'txttotalcustom', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - <div class="col-md-4"> - <label >Total Excise duty Charge :</label> - - <?php - $data = array('name' => 'txttotalexcise','value' => set_value('txttotalexcise',$totexciseduty),'id'=>'txttotalexcise', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - <div class="col-md-4"> - <label >Total Excise duty ED_cess Charge :</label> - - <?php - $data = array('name' => 'txttotalexciseED','value' => set_value('txttotalexciseED', $totexcisedutyED),'id'=>'txttotalexciseED', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - - <div class="col-md-4"> - <label >Total Excise duty S & H cess Charge :</label> - - <?php - $data = array('name' => 'txttotalexciseSH','value' => set_value('txttotalexciseSH',$totexciseSH),'id'=>'txttotalexciseSH', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - <div class="col-md-4"> - <label >Total Custom ED_cess Charge :</label> - - <?php - $data = array('name' => 'txttotalcustomED','value' => set_value('txttotalcustomED',$totcustomED),'id'=>'txttotalcustomED', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - <div class="col-md-4"> - <label >Total Custom S & H cess Charge :</label> - - <?php - $data = array('name' => 'txttotalcustomSH','value' => set_value('txttotalcustomSH',$totcustomSH),'id'=>'txttotalcustomSH', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - <div class="col-md-4"> - <label >Total Additional Excise duty Charge :</label> - - <?php - $data = array('name' => 'txttotalAdditionalExciseduty','value' => set_value('txttotalAdditionalExciseduty',$totaddtnlexcise),'id'=>'txttotalAdditionalExciseduty', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - - <div class="col-md-4"> - <label >Total Gross duty payable Charge :</label> - - <?php - $data = array('name' => 'txttotalgrossduty','value' => set_value('txttotalgrossduty',$totgrossduty),'id'=>'txttotalgrossduty', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - <div class="col-md-4"> - <label >Total Available Modvat set-off on import Charge :</label> - - <?php - $data = array('name' => 'txttotalavlmodvat','value' => set_value('txttotalavlmodvat',$totavlmodvat),'id'=>'txttotalavlmodvat', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - - <div class="col-md-4"> - <label >Total Gross expenses due to custom duty Charge :</label> - - <?php - $data = array('name' => 'txttotalgrossexpense','value' => set_value('txttotalgrossexpense',$totgrossexpense),'id'=>'txttotalgrossexpense', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - - - - <div class="col-md-4"> - <label>Total Order Value :</label> <?php - $data = array('name' => 'txtToatlOrder','value' => set_value('txtToatlOrder',$totorder),'id'=>'txtToatlOrder', 'class' => 'form-control' ,'required' => 'true','readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - - - - <div class="col-md-12"> - <div class="col-md-12"> - <label>Comments for Special Instructions :</label> <?php - $data = array('name' => 'txtSpcialInstruction','value' => set_value('txtSpcialInstruction'),'id'=>'txtSpcialInstruction', 'class' => 'form-control','rows' => '3', 'cols' => '40' ); - echo form_textarea($data); - ?> - </div> - </div> - <div align="right" style="padding-right:10px"> - -<div class="col-md-3 col-md-offset-9"><br/> - <input type="hidden" name="txtPoRange" id="txtPoRange" /> - <input type="hidden" name="isEdit" id="isEdit" value="0" /> - <input type="hidden" name="txtStatus" id="txtStatus" /> - <input type="hidden" name="txtRowCount" id="txtRowCount" /> - <input type="hidden" name="txtDeletedRow" id="txtDeletedRow" /> - <input type="hidden" name="txtPONO" id="txtPONO" value="<?php echo $PONO; ?>"/> - - - <?php if($POStatus == PO_DRAFT) {?> - <a class="btn btn-primary Save" ID="Save" onclick="Save(0)" >&nbsp;&nbsp;<span class="bold">Save</span></a> - <a class="btn btn-primary Submit" ID="Submit" onclick="Save(1)" >&nbsp;&nbsp;<span class="bold">Submit</span></a> - <input type="reset" class="btn btn-primary" value="Reset"> - <?php }else {?> - <input type="reset" class="btn btn-primary" value = "OK"> <?php } ?> - - </div> - <br/> - </div> - </div> - - </div> - </div> - </section> -</div> - -<script type="text/html" id="ImportList"> -<tr id="<%=index%>"> -<td align="left"><%=index%></td> - <td align="left"><%=ReqNo%></td> - - <td align="left"><%=ItemName%></td> - <td align="left"><%=Quantity%></td> - <td align="left"><%=UOM%></td> - <td align="left"><%=Rate%></td> - <td align="left"><%=BasicAmount%></td> - <td align="left"><%=Taxvalue%></td> - <td align="left"><%=TotalValue%></td> - - <td> - <a data-target='#editimportpomodel' data-id="<%=index%>" data-userid="<%=index%>" data-toggle="modal" href="#editimportpomodel"><i class="fa fa-pencil" data-toggle="tooltip" title="Click here to view/Edit the <%=ReqNo%> Requisition details"></i>&nbsp;&nbsp;&nbsp;</a> <a href='#' onclick = "DeleteRow(<%=index%>)" class="link" data-id="<%=index%>" data-userid="<%=index%>" id="Del" ><span class="glyphicon glyphicon-trash"></span></a> - - - </td> -</tr> -</script> - - -<script type="text/javascript"> - - - var SelectedMaterialCode = []; -var RequistQuantity = ''; -var AvilBudAmt = ''; - var CollIndex = 0; -var index='1'; -var userid = ''; -var NilType = '<?php echo NILTYPE;?>'; - var PercentageType = '<?php echo PERCENTAGE;?>'; - var IsEdit = '0'; - var SelectedMaterialList = { - Mat: [] -}; - -$('#ExchangeRate').val(<?php echo $ExchangeRate;?>); -$('#EditAvlBudAmt').val(<?php echo $AvlAmount; ?>); - - - - -var txtexchangerate=parseFloat($('#ExchangeRate').val()); - $('#EditExchangeRt').val(txtexchangerate); -var txtbasics=parseFloat($('#BasicPriceInMTon').val()); -//alert(txtexchangerate); -//alert(txtbasics); -var basicpriceinus=parseFloat($('#BasicPriceinUS').val()); -var txtbasic=txtexchangerate*basicpriceinus; -//alert(txtbasic); -$('#EditINRBasicvalue').val(txtbasic); - - - -$('#drpSupplier').change(function() { - - var id = $('#drpSupplier').val(); - - $("#SupAddress").val(''); - - if(id != '0') - { - var y = <?php echo json_encode($Suplist, JSON_PRETTY_PRINT) ?>; - - - $.each(y, function(idx, obj) { - if(obj.SupplierID === id) - { - $("#SupAddress").val(obj.Address); - - } - - }); - - } - else - { - alert('Please select the SupplierID'); - return false; - } - -}); - - -$('#currencytype').change(function(){ - $('#ExchangeRate').val(''); -}); - - -$('#ReqNo').change(function() { - - var id = $('#ReqNo').val(); - $("#AvlBudAmt").val(''); - $("#CostCenter").empty(); - $("#MaterialCode").empty(); - $("#deptName").val(''); - $("#UOM").val(''); -$("#Quantity").val(''); -$("#ItemName").val(''); -$("#Rate").val(''); -$("#txtBasicValue").val(''); - //clearTaxField(); - if(id != '0') - { - var y = <?php echo json_encode($RequistionDetails, JSON_PRETTY_PRINT) ?>; - - var Material = <?php echo json_encode($MaterialList, JSON_PRETTY_PRINT) ?>; - // console.log(Material); - var AvlBudAmt = '<?php echo $AvlAmount ?>'; - //alert(JSON.stringify(Material)); - - - // For Binding DepartmentName - $.each(y, function(idx, obj) { - if(obj.ReqNo === id) - { - $("#deptName").val(obj.DepartmentName); - $("#CostCenter").val(obj.CostCenterCode); - - } - }); - $("#AvlBudAmt").val(AvlBudAmt); - - // For Binding Material list center for the selected Requistion Number - $("#MaterialCode").append( $('<option></option>').val("0").html("Select Material Code") ); - var isAdded = "0"; - for(i=0;i<Material.length;i++) - { - $.each(Material[i], function(idx, obj) { - //alert(); - if(obj.ReqNo === id ) - { - - $.each(SelectedMaterialList.Mat, function(idx1, el){ - if (id == el.ReqNo ) - { - - if(el.materialCode == obj.MaterialCode) - { - isAdded = "1"; - return false; - } - else - { - isAdded = "0"; - } - - } - }); - - - if(isAdded == "0") - { - - $("#MaterialCode").append( $('<option></option>').val(obj.MaterialCode).html(obj.MaterialCode + "-" + obj.MaterialName)); - } - - } - - - }); - } - } - else - { - alert('Please select the Requisition Number'); - return false; - } - id = ''; - -}); - - - -$('#MaterialCode').change(function() { - - var id = $('#MaterialCode').val(); - $("#ItemName").val(''); -$("#UOM").val(''); -$("#Quantity").val(''); -$("#ItemName").val(''); -$("#Rate").val(''); -$("#txtBasicValue").val(''); - RequistQuantity = ''; - //clearTaxField(); - if(id != '0') - { - var Material = <?php echo json_encode($MaterialList, JSON_PRETTY_PRINT) ?>; - - for(i=0;i<Material.length;i++) - { - $.each(Material[i], function(idx, obj) { - if(obj.MaterialCode === id) - { - $("#ItemName").val(obj.MaterialName); - $("#UOM").val(obj.UOM); - $("#Quantity").val(obj.Quantity); - RequistQuantity = obj.Quantity; - } - }); - } - } - else - { - alert('Please select the MaterialCode'); - return false; - } - -}); - -function USRate() -{ - - //if($('#imBasicPrice').val() != '' && $('#ExchangeRate').val() != '') - //{ - var txtbasics=parseFloat($('#imBasicPrice').val()); - var txtexchangerate=parseFloat($('#ExchangeRate').val()); - $('#ExchangeRt').val(txtexchangerate); - var txtINRvalue=txtbasics*txtexchangerate; - $('#INRBasicvalues').val(txtINRvalue) - $('#INRBasicvalue').val(txtINRvalue); - $('#BasicPriceTax').val(txtINRvalue); - //txtINR = Math.ceil(txtINR*10)/10; - txtINR = Math.round(txtINRvalue); - //alert(txtINR);BasicPriceTax - - $('#AfterBasicPriceTax').val(txtINR); - $('#imBasicPrice').val(txtbasics); - $('#ExchangeRt').val(txtexchangerate); - $('#EditAfterBasicPriceTax').val(txtINR); - $('#EditimBasicPrice').val(txtbasics); - $('#EditExchangeRt').val(txtexchangerate); - $('#EditINRBasicvalue').val(txtINRvalue); - - - //} -} - - - -function Ratechange(){ - //alert(); - if($('#ReqNo').val() == "0") - { - alert('Please select the Requisition Number'); - $('#ReqNo').focus(); - return false; - } - else if($('#MaterialCode').val() == "0") - { - alert('Please select the Material Code'); - $('#MaterialCode').focus(); - return false; - } - else if($('#CostCenter').val() == "0") - { - alert('Please select the CostCenterCode'); - $('#CostCenter').focus(); - return false; - } - - //ExceedQuantityCheck(); - - if($('#Quantity').val() != '' && $('#Rate').val() != '') - { - var txtQuantity = parseFloat( $('#Quantity').val()); - var txtUnitPrice = parseFloat($('#Rate').val()); - var Tot = txtQuantity * txtUnitPrice - $('#txtBasicValue').val(Tot); - } -} - - - -function Calculateloadingcharge() - { - //alert(); -$('#AfterHighseas').val(''); -$('#AfterCustomduty').val(''); -$('#AfterExcisedutyTax').val(''); -$('#AfterExcisedutyEDcess').val(''); -$('#AfterExcisedutySHcess').val(''); -$('#AfterCustomEDcess').val(''); -$('#AfterCustomSHcess').val(''); -$('#AfterAdditionalExciseduty').val(''); -$('#Grossdutypayable').val(''); -$('#AvailableModvat').val(''); -$('#Grossexpenses').val(''); -$('#purchaserate').val(''); -$('#CustomDutyExpenses').val(''); -$('#RMCIncludingCustomers').val(''); -$('#TotalExp').val(''); - - var txtlanding=0; - var txtbasicprice=0; - txtlanding=parseFloat($('#LandingCharge').val()); - txtbasicprice=parseFloat($('#AfterBasicPriceTax').val()); - - //var result=(txtlanding*txtbasicprice/100); - var result= <?php echo LOADING_CHARGE;?>; - - $('#AfterLandingCharge').val(parseFloat(Math.round(result))); - CalculateHighseassalescharge(); - - //alert(); - } - - - - function EditCalculateloadingcharge() - { - //alert(); - var txtlanding=0; - var txtbasicprice=0; - - - txtlanding=parseFloat($('#EditLandingCharge').val()); - txtbasicprice=parseFloat($('#EditAfterBasicPriceTax').val()); - //var result=(txtlanding*txtbasicprice/100); - var result= <?php echo LOADING_CHARGE;?>; - $('#EditAfterLandingCharge').val(parseFloat(Math.round(result))); - EditCalculateHighseassalescharge(); - //alert(); - } - - -function CalculateHighseassalescharge() - { - - //alert(); - var txtbasicprice=0; - var txtlandingcharge=0; - var totalhighsess=0; - var highsesspercentage=0; - txtbasicprice=parseFloat($('#AfterBasicPriceTax').val()); - txtlandingcharge=parseFloat($('#AfterLandingCharge').val()); - // alert(txtlandingcharge); - totalhighsess=txtbasicprice+txtlandingcharge; - highsesspercentage=parseFloat($('#Highseas').val()); - - - //var txthighsess=(totalhighsess*highsesspercentage)/100; - var txtAfterhighsess=<?php echo HIGHSEAS_SALES;?>; - if(isNaN(txtAfterhighsess)) - { - $('#AfterHighseas').val(''); - } - else{ - $('#AfterHighseas').val(parseFloat(Math.round(txtAfterhighsess))); - } - - CalculateCustomduty(); - } - - - -function EditCalculateHighseassalescharge() - { - - //alert(); - var txtbasicprice=0; - var txtlandingcharge=0; - var totalhighsess=0; - var highsesspercentage=0; - var txthighsess=0; - txtbasicprice=parseFloat($('#EditAfterBasicPriceTax').val()); - txtlandingcharge=parseFloat($('#EditAfterLandingCharge').val()); - totalhighsess=txtbasicprice+txtlandingcharge; - highsesspercentage=parseFloat($('#EditHighseas').val()); - //var txthighsess=(totalhighsess*highsesspercentage)/100; - txthighsess=<?php echo HIGHSEAS_SALES;?>; - if(isNaN(txthighsess)) - { - $('#EditAfterHighseas').val(''); - } - else{ - $('#EditAfterHighseas').val(parseFloat(Math.round(txthighsess))); - } - EditCalculateCustomduty(); - } -function CalculateCustomduty() -{ - var txtbasic=0; - var txtcustompercentage=0; - var txthighse=0; - var txtlandingch=0; - var sumcustom=0; - var txtcustomduty=0; - txtbasic=parseFloat($('#AfterBasicPriceTax').val()); - txtcustompercentage=parseFloat($('#Customduty').val()); - txthighse=parseFloat($('#AfterHighseas').val()); - txtlandingch=parseFloat($('#AfterLandingCharge').val()); - sumcustom=txthighse+txtlandingch+txtbasic; - //var txtcustomduty=(txtbasic*txtcustompercentage)/100; - txtcustomduty=<?php echo CUSTOM_DUTY;?>; - if(isNaN(txtcustomduty)) - { - $('#AfterCustomduty').val(''); - } - else{ - $('#AfterCustomduty').val(parseFloat(Math.round(txtcustomduty))); - } - CalculateExciseDuty() ; - -} - - - -function ExceedEditQuantityCheck() - { - // RequistQuantity - var EnterQuantity = $("#EditQuantity").val()== '' ? "0.00" : parseFloat($("#EditQuantity").val()); - var ReqQuantity = parseFloat(RequistQuantity); - if(EnterQuantity > ReqQuantity) - { - alert('Your exceeding the Quantity from the Requisition Quantity:'+ RequistQuantity +'.Please adjust the Quantity to proceed further.'); - $('#EditQuantity').focus(); - return false; - } - else{ -return true; -} - } - - -function EditCalculateCustomduty() -{ - var txtbasic=0; - var txtcustompercentage=0; - var txthighse=0; - var txtlandingch=0; - var sumcustom=0; - var txtcustomduty=0; - txtbasic=parseFloat($('#EditAfterBasicPriceTax').val()); - txtcustompercentage=parseFloat($('#EditCustomduty').val()); - txthighse=parseFloat($('#EditAfterHighseas').val()); - txtlandingch=parseFloat($('#EditAfterLandingCharge').val()); - sumcustom=txthighse+txtlandingch+txtbasic; - //var txtcustomduty=(txtbasic*txtcustompercentage)/100; - txtcustomduty=<?php echo CUSTOM_DUTY;?>; - if(isNaN(txtcustomduty)) - { - $('#EditAfterCustomduty').val(''); - } - else{ - $('#EditAfterCustomduty').val(parseFloat(Math.round(txtcustomduty))); - } - EditCalculateExciseDuty() ; - -} - - -function CalculateExciseDuty() -{ - - var txtcustomduty=0; - var txthighsess=0; - var txtaftrlanding=0; - var txtbasicc=0; - var txtpercentage=0; - var txtexcisesum=0; - var totalexcise=0; - txtcustomduty=parseFloat($('#AfterCustomduty').val()); - txthighsess=parseFloat($('#AfterHighseas').val()); - txtaftrlanding=parseFloat($('#AfterLandingCharge').val()); - txtbasicc=parseFloat($('#AfterBasicPriceTax').val()); - - txtpercentage=parseFloat($('#ExcisedutyTax').val()); - txtexcisesum=txtcustomduty+txthighsess+txtaftrlanding+txtbasicc; - //var Exciseduty=(txtexcisesum*txtpercentage)/100; - totalexcise=<?php echo EXCISE_DUTY;?>; - if(isNaN(totalexcise)) - { - $('#AfterExcisedutyTax').val(''); - } - //var totalexcise=txtcustomduty+Exciseduty; - else{ - $('#AfterExcisedutyTax').val(parseFloat(Math.round(totalexcise))); - } - CalculateExciseED1(); -} - - - -function EditCalculateExciseDuty() -{ //alert('edit'); - var txtcustomduty=0; - var txthighsess=0; - var txtaftrlanding=0; - var txtbasicc=0; - var txtpercentage=0; - var txtexcisesum=0; - var totalexcise=0; - txtcustomduty=parseFloat($('#EditAfterCustomduty').val()); - txthighsess=parseFloat($('#EditAfterHighseas').val()); - txtaftrlanding=parseFloat($('#EditAfterLandingCharge').val()); - txtbasicc=parseFloat($('#EditAfterBasicPriceTax').val()); - - txtpercentage=parseFloat($('#EditExcisedutyTax').val()); - txtexcisesum=txtcustomduty+txthighsess+txtaftrlanding+txtbasicc; - //var Exciseduty=(txtexcisesum*txtpercentage)/100; - totalexcise=<?php echo EXCISE_DUTY;?>; - if(isNaN(totalexcise)) - { - $('#EditAfterExcisedutyTax').val(''); - } - else - { - //var totalexcise=txtcustomduty+Exciseduty; - $('#EditAfterExcisedutyTax').val(parseFloat(Math.round(totalexcise))); - } - EditCalculateExciseED1(); -} - - - -function CalculateExciseED1() -{ - var txtexcise=0; - var txtexcisepercentage=0; - var txtexcisetot=0; - txtexcise=parseFloat($('#AfterExcisedutyTax').val()); - txtexcisepercentage=parseFloat($('#ExcisedutyEDcess').val()); - //var txtexcisetot=(txtexcise*txtexcisepercentage)/100; - txtexcisetot=<?php echo EXCISE_ED;?>; - if(isNaN(txtexcisetot)) - { - $('#AfterExcisedutyEDcess').val(''); - } - else - { - $('#AfterExcisedutyEDcess').val(parseFloat(Math.round(txtexcisetot))); - } - - CalculateexciseSHcess(); - -//AfterExcisedutyEDcess -} - - -function EditCalculateExciseED1() -{ - var txtexcise=0; - var txtexcisepercentage=0; - var txtexcisetot=0; - txtexcise=parseFloat($('#EditAfterExcisedutyTax').val()); - txtexcisepercentage=parseFloat($('#EditExcisedutyEDcess').val()); - //var txtexcisetot=(txtexcise*txtexcisepercentage)/100; - txtexcisetot=<?php echo EXCISE_ED;?>; - if(isNaN(txtexcisetot)) - { - $('#EditAfterExcisedutyEDcess').val(''); - } - else - { - $('#EditAfterExcisedutyEDcess').val(parseFloat(Math.round(txtexcisetot))); - } - EditCalculateexciseSHcess(); - -//AfterExcisedutyEDcess -} - -function CalculateexciseSHcess() - { - var excisetxt=0; - var exciseshcess=0; - var exciseshcesstot=0; - excisetxt=parseFloat($('#AfterExcisedutyTax').val()); - exciseshcess=parseFloat($('#ExcisedutySHcess').val()); - //var exciseshcesstot=(excisetxt*exciseshcess)/100; - exciseshcesstot=<?php echo EXCISE_SH;?>; - if(isNaN(exciseshcesstot)) - { - $('#AfterExcisedutySHcess').val(''); - } - else - { - $('#AfterExcisedutySHcess').val(parseFloat(Math.round(exciseshcesstot))); - //$('#AfterExcisedutySHcess').val(''); - } - CalculateCustomEdcess(); - - } - - function EditCalculateexciseSHcess() - { - //alert(); - var excisetxt=0; - var exciseshcess=0; - //var exciseshcesstot=(excisetxt*exciseshcess)/100; - var exciseshcesstot=0; - - excisetxt=parseFloat($('#EditAfterExcisedutyTax').val()); - exciseshcess=parseFloat($('#EditExcisedutySHcess').val()); - //var exciseshcesstot=(excisetxt*exciseshcess)/100; - exciseshcesstot=<?php echo EXCISE_SH;?>; - if(isNaN(exciseshcesstot)) - { - $('#EditAfterExcisedutySHcess').val(''); - } - else - { - $('#EditAfterExcisedutySHcess').val(parseFloat(Math.round(exciseshcesstot))); - } - EditCalculateCustomEdcess(); - - } - - - function CalculateCustomEdcess() - { - - var txtloading=0; - var txthighses=0; - var txtcustomduty1=0; - var txtexciseduty=0; - var txtedexciseduty=0; - var txtshexcisesess=0; - var totalval=0; - var txtedcesspercentage=0; - //var txtcustomedsess=(totalval*txtedcesspercentage)/100; - var txtcustomedsess=0; - - - - - txtloading=parseFloat($('#AfterLandingCharge').val()); - txthighses=parseFloat($('#AfterHighseas').val()); - txtcustomduty1=parseFloat($('#AfterCustomduty').val()); - txtexciseduty=parseFloat($('#AfterExcisedutyTax').val()); - txtedexciseduty=parseFloat($('#AfterExcisedutyEDcess').val()); - txtshexcisesess=parseFloat($('#AfterExcisedutySHcess').val()); - totalval=txtloading+txtcustomduty1+txtexciseduty+ txtedexciseduty+txthighses+txtshexcisesess; - txtedcesspercentage=parseFloat($('#CustomEDcess').val()); - //var txtcustomedsess=(totalval*txtedcesspercentage)/100; - txtcustomedsess=<?php echo CUSTOM_ED;?>; - if(isNaN(txtcustomedsess)) - { - - $('#AfterCustomEDcess').val(''); - } - else - { - $('#AfterCustomEDcess').val(parseFloat(Math.round(txtcustomedsess))); - } - CalculateCustomSHcess(); - - } - - - -function EditCalculateCustomEdcess() - { - var txtloading=0; - var txthighses=0; - var txtcustomduty1=0; - var txtexciseduty=0; - var txtedexciseduty=0; - var txtshexcisesess=0; - var totalval=0; - var txtedcesspercentage=0; - //var txtcustomedsess=(totalval*txtedcesspercentage)/100; - var txtcustomedsess=0; - - txtloading=parseFloat($('#EditAfterLandingCharge').val()); - txthighses=parseFloat($('#EditAfterHighseas').val()); - txtcustomduty1=parseFloat($('#EditAfterCustomduty').val()); - txtexciseduty=parseFloat($('#EditAfterExcisedutyTax').val()); - txtedexciseduty=parseFloat($('#EditAfterExcisedutyEDcess').val()); - txtshexcisesess=parseFloat($('#EditAfterExcisedutySHcess').val()); - totalval=txtloading+txtcustomduty1+txtexciseduty+ txtedexciseduty+txthighses+txtshexcisesess; - txtedcesspercentage=parseFloat($('#EditCustomEDcess').val()); - //var txtcustomedsess=(totalval*txtedcesspercentage)/100; - txtcustomedsess=<?php echo CUSTOM_ED;?>; - if(isNaN(txtcustomedsess)) - { - $('#EditAfterCustomEDcess').val(''); - } - else - { - $('#EditAfterCustomEDcess').val(parseFloat(Math.round(txtcustomedsess))); - } - EditCalculateCustomSHcess(); - - } - - - function CalculateCustomSHcess() - {//alert(); - - var landingch=0; - var highsesssalles=0; - var customch=0; - var excisech=0; - var exciseedch=0; - var exciseshch=0; - var totcustomsh=0; - - var txtshpercentage=0; - //var totresult=(totcustomsh*txtshpercentage)/100; - var totresult=0; - - - - landingch=parseFloat($('#AfterLandingCharge').val()); - highsesssalles=parseFloat($('#AfterHighseas').val()); - customch=parseFloat($('#AfterCustomduty').val()); - excisech=parseFloat($('#AfterExcisedutyTax').val()); - exciseedch=parseFloat($('#AfterExcisedutyEDcess').val()); - exciseshch=parseFloat($('#AfterExcisedutySHcess').val()); - totcustomsh=landingch+highsesssalles+customch+excisech+exciseedch+exciseshch; - - txtshpercentage=parseFloat($('#CustomSHcess').val()); - //var totresult=(totcustomsh*txtshpercentage)/100; - totresult=<?php echo CUSTOM_SH;?>; - if(isNaN(totresult)) - { - $('#AfterCustomSHcess').val(''); - } - else - { - $('#AfterCustomSHcess').val(parseFloat(Math.round(totresult))); - } - CalculateaddlExciseDuty(); - - } - - - function EditCalculateCustomSHcess() - {//alert(); - - var landingch=0; - var highsesssalles=0; - var customch=0; - var excisech=0; - var exciseedch=0; - var exciseshch=0; - var totcustomsh=0; - - var txtshpercentage=0; - //var totresult=(totcustomsh*txtshpercentage)/100; - var totresult=0; - - landingch=parseFloat($('#EditAfterLandingCharge').val()); - highsesssalles=parseFloat($('#EditAfterHighseas').val()); - customch=parseFloat($('#EditAfterCustomduty').val()); - excisech=parseFloat($('#EditAfterExcisedutyTax').val()); - exciseedch=parseFloat($('#EditAfterExcisedutyEDcess').val()); - exciseshch=parseFloat($('#EditAfterExcisedutySHcess').val()); - totcustomsh=landingch+highsesssalles+customch+excisech+exciseedch+exciseshch; - - txtshpercentage=parseFloat($('#EditCustomSHcess').val()); - //var totresult=(totcustomsh*txtshpercentage)/100; - var totresult=<?php echo CUSTOM_SH;?>; - if(isNaN(totresult)) - { - $('#EditAfterCustomSHcess').val(''); - } - else - { - $('#EditAfterCustomSHcess').val(parseFloat(Math.round(totresult))); - } - EditCalculateaddlExciseDuty(); - - } - -function CalculateaddlExciseDuty() -{ - - var basic=0; - var landingcha=0; - var highsesssalless=0; - var customcha=0; - var excisecha=0; - var exciseedcha=0; - var exciseshcha=0; - var customed=0; - var customsh=0; - var totaddtnlexcise=0; - var addtnpercentage=0; - // var txtaddtnexciseduty=(totaddtnlexcise*addtnpercentage)/100; - var txtaddtnexciseduty=0; - var txtgrossduty=0; - - basic=parseFloat($('#AfterBasicPriceTax').val()); - landingcha=parseFloat($('#AfterLandingCharge').val()); - highsesssalless=parseFloat($('#AfterHighseas').val()); - customcha=parseFloat($('#AfterCustomduty').val()); - excisecha=parseFloat($('#AfterExcisedutyTax').val()); - exciseedcha=parseFloat($('#AfterExcisedutyEDcess').val()); - exciseshcha=parseFloat($('#AfterExcisedutySHcess').val()); - customed=parseFloat($('#AfterCustomEDcess').val()); - customsh=parseFloat($('#AfterCustomSHcess').val()); - totaddtnlexcise=basic+landingcha+highsesssalless+customcha+excisecha+exciseedcha+exciseshcha+customed+customsh; - addtnpercentage=parseFloat($('#AdditionalExciseduty').val()); - // var txtaddtnexciseduty=(totaddtnlexcise*addtnpercentage)/100; - txtaddtnexciseduty=<?php echo ADDTNL_EXCISEDUTY;?>; - if(isNaN(txtaddtnexciseduty)) - { - $('#AfterAdditionalExciseduty').val(''); - } - else - { - $('#AfterAdditionalExciseduty').val(parseFloat(Math.round(txtaddtnexciseduty))); - } - //var txtgrossduty=landingcha+highsesssalless+customcha+excisecha+exciseedcha+exciseshcha+customed+customsh+txtaddtnexciseduty; - - txtgrossduty=<?php echo GROSS_DUTY;?>; - if(isNaN(txtgrossduty)) - { - $('#Grossdutypayable').val(''); - } - else{ - $('#Grossdutypayable').val(parseFloat(Math.round(txtgrossduty))); - } - CalculateAvlModvat(); - -} - - -function EditCalculateaddlExciseDuty() -{ - - var basic=0; - var landingcha=0; - var highsesssalless=0; - var customcha=0; - var excisecha=0; - var exciseedcha=0; - var exciseshcha=0; - var customed=0; - var customsh=0; - var totaddtnlexcise=0; - var addtnpercentage=0; - // var txtaddtnexciseduty=(totaddtnlexcise*addtnpercentage)/100; - var txtaddtnexciseduty=0; - var txtgrossduty=0; - - - basic=parseFloat($('#EditAfterBasicPriceTax').val()); - landingcha=parseFloat($('#EditAfterLandingCharge').val()); - highsesssalless=parseFloat($('#EditAfterHighseas').val()); - customcha=parseFloat($('#EditAfterCustomduty').val()); - excisecha=parseFloat($('#EditAfterExcisedutyTax').val()); - exciseedcha=parseFloat($('#EditAfterExcisedutyEDcess').val()); - exciseshcha=parseFloat($('#EditAfterExcisedutySHcess').val()); - customed=parseFloat($('#EditAfterCustomEDcess').val()); - customsh=parseFloat($('#EditAfterCustomSHcess').val()); - totaddtnlexcise=basic+landingcha+highsesssalless+customcha+excisecha+exciseedcha+exciseshcha+customed+customsh; - addtnpercentage=parseFloat($('#EditAdditionalExciseduty').val()); - // var txtaddtnexciseduty=(totaddtnlexcise*addtnpercentage)/100; - txtaddtnexciseduty=<?php echo ADDTNL_EXCISEDUTY;?>; - if(isNaN(txtaddtnexciseduty)) - { - $('#EditAfterAdditionalExciseduty').val(''); - } - else - { - $('#EditAfterAdditionalExciseduty').val(Math.round(txtaddtnexciseduty)); - } - //var txtgrossduty=landingcha+highsesssalless+customcha+excisecha+exciseedcha+exciseshcha+customed+customsh+txtaddtnexciseduty; - - txtgrossduty=<?php echo GROSS_DUTY;?>; - if(isNaN(txtgrossduty)) - { - $('#EditGrossdutypayable').val(''); - } - else - { - $('#EditGrossdutypayable').val(parseFloat(Math.round(txtgrossduty))); - } - EditCalculateAvlModvat(); - -} - -function CalculateAvlModvat() -{ - - var txtexciseduty1=0; - var txtexciseedcess=0; - var txtexciseshcess=0; - var txtaddtnlexcise=0; - //var totavlmodvat=txtexciseduty1+txtexciseedcess+txtexciseshcess+txtaddtnlexcise; - var totavlmodvat=0; - - txtexciseduty1=parseFloat($('#AfterExcisedutyTax').val()); - txtexciseedcess=parseFloat($('#AfterExcisedutyEDcess').val()); - txtexciseshcess=parseFloat($('#AfterExcisedutySHcess').val()); - txtaddtnlexcise=parseFloat($('#AfterAdditionalExciseduty').val()); - //var totavlmodvat=txtexciseduty1+txtexciseedcess+txtexciseshcess+txtaddtnlexcise; - totavlmodvat=<?php echo AVL_MODVAT;?>; - if(isNaN(totavlmodvat)) - { - $('#AvailableModvat').val(''); - } - else - { - $('#AvailableModvat').val(parseFloat(Math.round(totavlmodvat))); - } - CalculateGrossExpense(); - -} - - -function EditCalculateAvlModvat() -{ - - - var txtexciseduty1=0; - var txtexciseedcess=0; - var txtexciseshcess=0; - var txtaddtnlexcise=0; - //var totavlmodvat=txtexciseduty1+txtexciseedcess+txtexciseshcess+txtaddtnlexcise; - var totavlmodvat=0; - - - txtexciseduty1=parseFloat($('#EditAfterExcisedutyTax').val()); - txtexciseedcess=parseFloat($('#EditAfterExcisedutyEDcess').val()); - txtexciseshcess=parseFloat($('#EditAfterExcisedutySHcess').val()); - txtaddtnlexcise=parseFloat($('#EditAfterAdditionalExciseduty').val()); - //var totavlmodvat=txtexciseduty1+txtexciseedcess+txtexciseshcess+txtaddtnlexcise; - totavlmodvat=<?php echo AVL_MODVAT;?>; - if(isNaN(totavlmodvat)) - { - $('#EditAvailableModvat').val(''); - } - else - { - $('#EditAvailableModvat').val(parseFloat(Math.round(totavlmodvat))); - } - EditCalculateGrossExpense(); -} - - -function CalculateGrossExpense() -{ - - var txtgrossdutypayable=0; - var txtmodvat=0; - //var grossexp=(txtgrossdutypayable-txtmodvat); - var grossexp=0; - - - txtgrossdutypayable=parseFloat($('#Grossdutypayable').val()); - txtmodvat=parseFloat($('#AvailableModvat').val()); - //var grossexp=(txtgrossdutypayable-txtmodvat); - grossexp=<?php echo GROSS_EXP;?>; - if(isNaN(grossexp)) - { - $('#Grossexpenses').val(''); - } - else - { - $('#Grossexpenses').val(parseFloat(Math.round(grossexp))); - } - CalculateCtable(); - -} - - -function EditCalculateGrossExpense() -{ - - - var txtgrossdutypayable=0; - var txtmodvat=0; - //var grossexp=(txtgrossdutypayable-txtmodvat); - var grossexp=0; - - - txtgrossdutypayable=parseFloat($('#EditGrossdutypayable').val()); - txtmodvat=parseFloat($('#EditAvailableModvat').val()); - //var grossexp=(txtgrossdutypayable-txtmodvat); - grossexp=<?php echo GROSS_EXP;?>; - if(isNaN(grossexp)) - { - $('#EditGrossexpenses').val(''); - } - else - { - $('#EditGrossexpenses').val(parseFloat(Math.round(grossexp))); - } - EditCalculateCtable() - -} - -function CalculateCtable() -{ - //alert(); - //purchaserate - - var txtCtablequantity=0; - var txtbasicinrprice=0; - var txtpurchaserate=0; - var txtgrossexp=0; - var txtcustomdutyexp=0; - var txtrmc=0; - var total=0; - var basicamt=0; - basicamt=parseFloat($('#txtBasicValue').val()); - - txtCtablequantity=parseFloat($('#PurQuantity').val()); - txtbasicinrprice=parseFloat($('#AfterBasicPriceTax').val()); - //txtpurchaserate=txtbasicinrprice/txtCtablequantity; - txtpurchaserate=<?php echo PURCHASE_RATE;?>; - if(isNaN(txtpurchaserate)) - { - $('#purchaserate').val(''); - } - else - { - $('#purchaserate').val(txtpurchaserate); - } - //CustomDutyExpenses - //RMCIncludingCustomers - txtgrossexp=parseFloat($('#Grossexpenses').val()); - //txtcustomdutyexp=txtgrossexp/txtCtablequantity; - txtcustomdutyexp=<?php echo CUSTOMDUTY_EXP;?>; - if(isNaN(txtcustomdutyexp)) - { - $('#CustomDutyExpenses').val(''); - } - else - { - $('#CustomDutyExpenses').val(Math.round(txtcustomdutyexp)); - } - //txtrmc=txtpurchaserate+txtcustomdutyexp; - txtrmc=<?php echo RMC_CAL;?>; - if(isNaN(txtrmc)) - { - $('#RMCIncludingCustomers').val(''); - } - else - { - $('#RMCIncludingCustomers').val(Math.round(txtrmc)); - } - total=<?php echo CALCULATE_TOTAL;?>; - if(isNaN(total)) - { - $('#TotalExp').val(''); - } - else - { - $('#TotalExp').val(Math.round(total)); - } - -} - - -function EditCalculateCtable() -{ - //alert(); - //purchaserate - var txtCtablequantity=0; - var txtbasicinrprice=0; - var txtpurchaserate=0; - var txtgrossexp=0; - var txtcustomdutyexp=0; - var txtrmc=0; - var total=0; - var basicamt=0; - basicamt=parseFloat($('#EdittxtBasicValue').val()); - txtCtablequantity=parseFloat($('#EditPurQuantity').val()); - txtbasicinrprice=parseFloat($('#EditAfterBasicPriceTax').val()); - //txtpurchaserate=txtbasicinrprice/txtCtablequantity; - txtpurchaserate=<?php echo PURCHASE_RATE;?>; - $('#Editpurchaserate').val(txtpurchaserate); - //CustomDutyExpenses - //RMCIncludingCustomers - txtgrossexp=parseFloat($('#EditGrossexpenses').val()); - //txtcustomdutyexp=txtgrossexp/txtCtablequantity; - txtcustomdutyexp=<?php echo CUSTOMDUTY_EXP;?>; - $('#EditCustomDutyExpenses').val(txtcustomdutyexp); - //txtrmc=txtpurchaserate+txtcustomdutyexp; - txtrmc=<?php echo RMC_CAL;?>; - $('#EditRMCIncludingCustomers').val(txtrmc); - total=<?php echo CALCULATE_TOTAL;?>; - $('#EditTotalExp').val(total); - -} - - - -$('.AddImport').click(function() -{ - - //alert('out'); - if(validateImport()) - { - //alert('in'); - - var temp = index; - //alert('in'); - var Reqnumber = $('#ReqNo').val(); - //alert(JSON.strigify(Reqnumber)); - var departmentName =$('#deptName').val(); - var AvilBudget = $('#AvlBudAmt').val(); - var costCode = $('#CostCenter').val(); - var materialCode =$('#MaterialCode').val(); - var materialName = $("#ItemName").val(); - var uom = $("#UOM").val(); - var quantity = $("#Quantity").val(); - var itemRate = $("#Rate").val(); - var BasicAmt=parseFloat($("#txtBasicValue").val()); - var taxamt=parseFloat($("#RMCIncludingCustomers").val()); - var totalexp=parseFloat($("#TotalExp").val()); - var Exchangerate=parseFloat($("#ExchangeRt").val()); - var Basicpriceinus=parseFloat($("#imBasicPrice").val()); - - var BasicPrice=$("#BasicPriceTax").val(); - var AfterBasicPrice=parseFloat($("#AfterBasicPriceTax").val()); - var LandingChargee=$("#LandingCharge").val(); - var AfterLandingChargee=$("#AfterLandingCharge").val(); - var Highseass=$("#Highseas").val(); - var AfterHighseass=$("#AfterHighseas").val(); - //var AfterHighseass=($"#AfterHighseas").val(); - var CustomDutyy=$("#Customduty").val(); - var AfterCustomDutyy=$("#AfterCustomduty").val(); - - var ExciseDutyy=$("#ExcisedutyTax").val(); - var AfterExciseDutyy=$("#AfterExcisedutyTax").val(); - var ExciseDutyEd=$("#ExcisedutyEDcess").val(); - var AfterExciseDutyEd=$("#AfterExcisedutyEDcess").val(); - var ExciseDutySH=$("#ExcisedutySHcess").val(); - var AfterExciseDutySH=$("#AfterExcisedutySHcess").val(); - var CustomED=$("#CustomEDcess").val(); - var AfterCustomED=$("#AfterCustomEDcess").val(); - var CustomSH=$("#CustomSHcess").val(); - var AfterCustomSH=$("#AfterCustomSHcess").val(); - var AdditnlExcise=$("#AdditionalExciseduty").val(); - var AfterAdditnlExcise=$("#AfterAdditionalExciseduty").val(); - var GrossDuty=$("#Grossdutypayable").val(); - var Avlmodvat=$("#AvailableModvat").val(); - var Grossexpenseduetocustom=$("#Grossexpenses").val(); - var PurchaseQuantity=$("#PurQuantity").val(); - var purate=$("#purchaserate").val(); - var CustomDutyExpense=$("#CustomDutyExpenses").val(); - var RMCIncluderate=$("#RMCIncludingCustomers").val(); - $('#MaterialCode option[value='+materialCode+']').remove(); - - - $('#MaterialCode option[value='+materialCode+']').remove(); - SelectedMaterialCode[CollIndex] = materialCode; - CollIndex = CollIndex + 1; - - SelectedMaterialList.Mat.push({ - "materialCode" : materialCode, - "ReqNo" : Reqnumber, - - }); - - - - populateValueMainFormForImportTax(); - - index = parseInt(index)+1; - //alert('in'); - var template = jQuery("#ImportList").html(); - $('#ImportAppend').append(_.template(template,{index:temp,ReqNo:Reqnumber,ItemName:materialName,Quantity:quantity,UOM:uom,Rate:itemRate,BasicAmount:BasicAmt,Taxvalue:taxamt,TotalValue:totalexp})); - //alert(JSON.strigify(BasicAmt)); - - - //$('#ImportAppend').append(_.template(template,{index:temp,ReqNo:Reqnumber,ItemName:materialName,Quantity:quantity,UOM:uom,Rate:itemRate,BasicAmount:BasicAmt,Taxvalue:taxamt,TotalValue:totalexp})); - //clearTaxField(); - - //from above defined variables - - var theForm = $(".ImportPO"); - - addHidden(theForm,"Reqnumber"+temp,Reqnumber ); - addHidden(theForm,"departmentName"+temp,departmentName ); - addHidden(theForm,"AvilBudget"+temp,AvilBudget ); - addHidden(theForm,"costCode"+temp,costCode ); - addHidden(theForm,"materialCode"+temp,materialCode ); - addHidden(theForm,"materialName"+temp,materialName ); - addHidden(theForm,"uom"+temp,uom); - addHidden(theForm,"quantity"+temp,quantity); - addHidden(theForm,"itemRate"+temp,itemRate); - addHidden(theForm,"BasicAmt"+temp,BasicAmt); - addHidden(theForm,"taxamt"+temp,taxamt); - addHidden(theForm,"Exchangerate"+temp,Exchangerate); - addHidden(theForm,"BasicPriceTax"+temp,BasicPriceTax); - addHidden(theForm,"BasicPriceinUS"+temp,Basicpriceinus); - addHidden(theForm,"AfterBasicPriceTax"+temp,AfterBasicPrice); - addHidden(theForm,"LandingChargee"+temp,LandingChargee); - addHidden(theForm,"AfterLandingChargee"+temp,AfterLandingChargee); - addHidden(theForm,"Highseass"+temp,Highseass); - addHidden(theForm,"AfterHighseass"+temp,AfterHighseass); - addHidden(theForm,"Customduty"+temp,CustomDutyy); - addHidden(theForm,"AfterCustomduty"+temp,AfterCustomDutyy); - addHidden(theForm,"ExcisedutyTax"+temp,ExciseDutyy); - addHidden(theForm,"AfterExcisedutyTax"+temp,AfterExciseDutyy); - addHidden(theForm,"ExcisedutyED"+temp,ExciseDutyEd); - addHidden(theForm,"AfterExcisedutyED"+temp,AfterExciseDutyEd); - addHidden(theForm,"ExcisedutySH"+temp,ExciseDutySH); - addHidden(theForm,"AfterExcisedutySH"+temp,AfterExciseDutySH); - addHidden(theForm,"CustomEDcess"+temp,CustomED); - addHidden(theForm,"AfterCustomEDcess"+temp,AfterCustomED); - addHidden(theForm,"CustomSHcess"+temp,CustomSH); - addHidden(theForm,"AfterCustomSHcess"+temp,AfterCustomSH); - addHidden(theForm,"AdditionalExciseduty"+temp,AdditnlExcise); - addHidden(theForm,"AfterAdditionalExciseduty"+temp,AfterAdditnlExcise); - addHidden(theForm,"Grossdutypayable"+temp,GrossDuty); - addHidden(theForm,"Grossexpenses"+temp,Grossexpenseduetocustom); - addHidden(theForm,"PurQuantity"+temp,PurchaseQuantity); - addHidden(theForm,"purchaserate"+temp,purate); - addHidden(theForm,"CustomDutyExpenses"+temp,CustomDutyExpense); - addHidden(theForm,"RMCIncludingCustomers"+temp,RMCIncluderate); - addHidden(theForm,"AvilableModvat"+temp,Avlmodvat); - addHidden(theForm,"TotalExp"+temp,totalexp); - addHidden(theForm,"TotalitemExp"+temp,TotalValue); - // alert(JSON.stringify(totalexp)); - - - - - // addHidden(theForm,"AfterBasicPriceTax"+temp,AfterBasicPriceTax); - //addHidden(theForm,"AfterBasicPriceTax"+temp,AfterBasicPriceTax); - $('#txtRowCount').val(temp); - clearTaxField(); - - - } - - -}); - - -function validateImport() -{ - //alert(); - if($('#ReqNo').val() == "0") - { - alert('Please select the Requisition Number'); - $('#ReqNo').focus(); - return false; - } - else if($('#CostCenter').val() == "0") - { - alert('Please select the Cost center'); - $('#CostCenter').focus(); - return false; - } - else if($('#MaterialCode').val() == "0") - { - alert('Please select the Material Code'); - $('#MaterialCode').focus(); - return false; - } - else if($('#Quantity').val() == '') - { - alert('Please Enter the Quantity value'); - $('#Quantity').focus(); - return false; - } - else if($('#Rate').val() == '') - { - alert('Please Enter the Rate of the Item'); - $('#Rate').focus(); - return false; - } - else if($('#imBasicPrice').val()=='') - { - alert('Please Enter Basic Price In Us'); - $('#imBasicPrice').focus(); - return false; - } - /* else if(ExceedQuantityCheck() == false) - { - return false; - }*/ - else - return true; -} - - -function addHidden(theForm, key, value) { - // Create a hidden input element, and append it to the form: - var input = document.createElement('input'); - input.type = 'hidden'; - input.name = key;'name-as-seen-at-the-server'; - input.id = key;'name-as-seen-at-the-server'; - input.value = value; - theForm.append(input); -} - - - -function populateValueMainFormForImportTax() -{ - -//$('#txtToatlOrder').val(parseFloat(TotalOrderValue)).toFixed(2); - -var AfterLandingCharge= $('#AfterLandingCharge').val() == '' ? '0.00' : $('#AfterLandingCharge').val(); -var AfterHighseas=$('#AfterHighseas').val()==''?'0.00':$('#AfterHighseas').val(); -var AfterCustomduty=$('#AfterCustomduty').val()==''?'0.00':$('#AfterCustomduty').val(); -var AfterExcisedutyTax=$('#AfterExcisedutyTax').val()==''?'0.00':$('#AfterExcisedutyTax').val(); -var AfterExcisedutyEDcess=$('#AfterExcisedutyEDcess').val()==''?'0.00':$('#AfterExcisedutyEDcess').val(); -var AfterExciseDutySH=$("#AfterExcisedutySHcess").val()==''?'0.00':$('#AfterExcisedutySHcess').val(); -var AfterCustomEDcess=$('#AfterCustomEDcess').val()==''?'0.00':$('#AfterCustomEDcess').val(); -var AfterCustomSHcess=$('#AfterCustomSHcess').val()==''?'0.00':$('#AfterCustomSHcess').val(); -var AfterAdditionalExciseduty=$('#AfterAdditionalExciseduty').val()==''?'0.00':$('#AfterAdditionalExciseduty').val(); -var Grossdutypayable=$('#Grossdutypayable').val()==''?'0.00':$('#Grossdutypayable').val(); -var AvailableModvat=$('#AvailableModvat').val()==''?'0.00':$('#AvailableModvat').val(); -var Grossexpenses=$('#Grossexpenses').val()==''?'0.00':$('#Grossexpenses').val(); -var totalexp=$('#TotalExp').val()==''?'0.00':$('#TotalExp').val(); -var TotalLanding=$('#txttotallanding').val()==''?'0.00':$('#txttotallanding').val(); -var TotalHighseas=$('#txttotalhighseas').val()==''?'0.00':$('#txttotalhighseas').val(); -var TotalCustom=$('#txttotalcustom').val()==''?'0.00':$('#txttotalcustom').val(); -var TotalExcise=$('#txttotalexcise').val()==''?'0.00':$('#txttotalexcise').val(); -var TotalExciseED=$('#txttotalexciseED').val()==''?'0.00':$('#txttotalexciseED').val(); -var TotalExciseSH=$('#txttotalexciseSH').val()==''?'0.00':$('#txttotalexciseSH').val(); -var TotalCustomED=$('#txttotalcustomED').val()==''?'0.00':$('#txttotalcustomED').val(); -var TotalCustomSH=$('#txttotalcustomSH').val()==''?'0.00':$('#txttotalcustomSH').val(); -var TotalAdditionalExcise=$('#txttotalAdditionalExciseduty').val()==''?'0.00':$('#txttotalAdditionalExciseduty').val(); -var TotalGrossDuty=$('#txttotalgrossduty').val()==''?'0.00':$('#txttotalgrossduty').val(); -var TotalAvlmodvat=$('#txttotalavlmodvat').val()==''?'0.00':$('#txttotalavlmodvat').val(); -var TotalGrossExpense=$('#txttotalgrossexpense').val()==''?'0.00':$('#txttotalgrossexpense').val(); -var TotalOrder=$('#txtToatlOrder').val()==''?'0.00':$('#txtToatlOrder').val(); -$('#txttotallanding').val((parseFloat(AfterLandingCharge) + parseFloat(TotalLanding)).toFixed(2) ); -$('#txttotalhighseas').val((parseFloat(TotalHighseas) + parseFloat(AfterHighseas)).toFixed(2) ); -$('#txttotalcustom').val((parseFloat(TotalCustom) + parseFloat(AfterCustomduty)).toFixed(2) ); -$('#txttotalexcise').val((parseFloat(TotalExcise) + parseFloat(AfterExcisedutyTax)).toFixed(2) ); -$('#txttotalexciseED').val((parseFloat(TotalExciseED) + parseFloat(AfterExcisedutyEDcess)).toFixed(2) ); -$('#txttotalexciseSH').val((parseFloat(TotalExciseSH) + parseFloat(AfterExciseDutySH)).toFixed(2) ); -$('#txttotalcustomED').val((parseFloat(TotalCustomED) + parseFloat(AfterCustomEDcess)).toFixed(2) ); -$('#txttotalcustomSH').val((parseFloat(TotalCustomSH) + parseFloat(AfterCustomSHcess)).toFixed(2) ); -$('#txttotalAdditionalExciseduty').val((parseFloat(TotalAdditionalExcise) + parseFloat(AfterAdditionalExciseduty)).toFixed(2) ); -$('#txttotalgrossduty').val((parseFloat(TotalGrossDuty) + parseFloat(Grossdutypayable)).toFixed(2) ); -$('#txttotalavlmodvat').val((parseFloat(TotalAvlmodvat) + parseFloat(AvailableModvat)).toFixed(2) ); -$('#txttotalgrossexpense').val((parseFloat(TotalGrossExpense) + parseFloat(Grossexpenses)).toFixed(2) ); -$('#txtToatlOrder').val((parseFloat(TotalOrder) + parseFloat(totalexp)).toFixed(2) ); -//alert(JSON.stringify(totalexp)); -alert(TotalOrder); - - - -} - - -function clearTaxField() -{ - //$('#AfterBasicPriceTax').val(''); - $('#AfterLandingCharge').val(''); - $('#LandingCharge').val(''); - $('#AfterHighseas').val(''); - $('#Highseas').val(''); - $('#AfterCustomduty').val(''); - $('#Customduty').val(''); - $('#AfterExcisedutyTax').val(''); - $('#ExcisedutyTax').val(''); - $('#AfterExcisedutyEDcess').val(''); - $('#ExcisedutyEDcess').val(''); - $('#AfterExcisedutySHcess').val(''); - $('#ExcisedutySHcess').val(''); - $('#AfterCustomEDcess').val(''); - $('#CustomEDcess').val(''); - $('#AfterCustomSHcess').val('') - $('#CustomSHcess').val(''); - $('#AfterCustomSHcess').val(''); - $('#AfterAdditionalExciseduty').val(''); - $('#AdditionalExciseduty').val(''); - $('#Grossdutypayable').val(''); - $('#AvailableModvat').val(''); - $('#Grossexpenses').val(''); - $('#PurQuantity').val(''); - $('#purchaserate').val(''); - $('#CustomDutyExpenses').val(''); - $('#RMCIncludingCustomers').val(''); -} - - -$("#editimportpomodel").on("shown.bs.modal", function(e) { - userid = $(e.relatedTarget).data('userid'); - //alert(userid); - //alert('inadd'); - - var tr= document.getElementById(userid); - //alert(tr); - var cellval = tr.cells; - //alert(cellval); - var id= $('#Reqnumber'+userid).val(); - //alert(id); - $('#EditReqNo').val($('#Reqnumber'+userid).val()); - -//alert($('#Reqnumber'+userid).val()); - $('#EditdeptName').val($('#departmentName'+userid).val()); - $("#EditCostCenter").val($('#costCode'+userid).val()); - // $('#EditAvlBudAmt').val($('#AvilBudget'+userid).val()); - - $('#EditItemName').val($('#materialName'+userid).val()); - $('#EditUOM').val($('#uom'+userid).val()); - $('#EditQuantity').val($('#quantity'+userid).val()); - //RequistQuantity = $('#quantity'+userid).val(); - $('#EditRate').val($('#itemRate'+userid).val()); - $('#EdittxtBasicValue').val($('#ProductPrice'+userid).val()); - $('#EditBasicPrice').val($("#BasicINRValue"+userid).val()); - $('#EditimBasicPrice').val($("#BasicPriceInMTon"+userid).val()); - $('#EditLandingCharge').val($("#LandingCharge"+userid).val()); - $('#EditAfterLandingCharge').val($("#AfterLandingCharge"+userid).val()); - $('#EditHighseas').val($("#HighSeasSalesCharge"+userid).val()); - $('#EditAfterHighseas').val($("#AfterHighSeasSalesCharge"+userid).val()); - $('#EditCustomduty').val($("#CustomDuty"+userid).val()); - $('#EditAfterCustomduty').val($("#AfterCustomDuty"+userid).val()); - $('#EditExcisedutyTax').val($("#ExciseDuty"+userid).val()); - $('#EditAfterExcisedutyTax').val($("#AfterExciseDuty"+userid).val()); - $('#EditExcisedutyEDcess').val($("#ExciseDutyEdCess"+userid).val()); - $('#EditAfterExcisedutyEDcess').val($("#AfterExciseDutyEdCess"+userid).val()); - $('#EditExcisedutySHcess').val($("#ExciseDutySHCess"+userid).val()); - $('#EditAfterExcisedutySHcess').val($("#AfterExciseDutySHCess"+userid).val()); - - $('#EditCustomEDcess').val($("#CustomEdCess"+userid).val()); - $('#EditAfterCustomEDcess').val($("#AfterCustomEdCess"+userid).val()); - $('#EditCustomSHcess').val($("#CustomSHCess"+userid).val()); - $('#EditAfterCustomSHcess').val($("#AfterCustomSHCess"+userid).val()); - $('#EditAdditionalExciseduty').val($("#AddlExciseDuty"+userid).val()); - $('#EditAfterAdditionalExciseduty').val($("#AfterAddlExciseDuty"+userid).val()); - $('#EditGrossdutypayable').val($("#Grossdutypayable"+userid).val()); - $('#EditGrossexpenses').val($("#Grossexpensesduetocustomduty"+userid).val()); - $('#EditPurQuantity').val($("#QuantityKG"+userid).val()); - $('#Editpurchaserate').val($("#purchaseratePerKG"+userid).val()); - $('#EditCustomDutyExpenses').val($("#CustomDutyExpensesPerKG"+userid).val()); - $('#EditRMCIncludingCustomers').val($("#RMCIncludingCustomersPerKG"+userid).val()); - $('#EditAfterBasicPriceTax').val($("#BasicINRValue"+userid).val()); - $('#EditAvailableModvat').val($("#AvailableModvat"+userid).val()); - $('#EditTotalExp').val($("#TotalValue"+userid).val()); - $('#EditINRBasicvalue').val($("#BasicINRValue"+userid).val()); - - $('#EditTotalOrderValue').val(cellval[8].innerHTML); - $("#EditMaterialCode").empty(); - var Material = <?php echo json_encode($MaterialList, JSON_PRETTY_PRINT) ?>; - $("#EditMaterialCode").append( $('<option></option>').val($('#materialCode'+userid).val()).html($('#materialCode'+userid).val() + "-" + $('#materialName'+userid).val() ) ); - var isAdded = "0"; - for(i=0;i<Material.length;i++) - { - $.each(Material[i], function(idx, obj) { - - if(obj.ReqNo === id ) - { - - $.each(SelectedMaterialList.Mat, function(idx1, el){ - if (id == el.ReqNo ) - { - - if(el.materialCode == obj.MaterialCode) - { - isAdded = "1"; - return false; - } - else - { - isAdded = "0"; - } - - } - }); - - - if(isAdded == "0") - { - - $("#EditMaterialCode").append( $('<option></option>').val(obj.MaterialCode).html(obj.MaterialCode + "-" + obj.MaterialName)); - } - - } - - - }); - } - -}); - - -$('.EditImport').click(function(){ - //alert('inside edit'); - - var CostCode = $("#EditCostCenter").val(); - var AvilBudget = $('#EditAvlBudAmt').val(); - var editMaterialCode = $("#EditMaterialCode").val(); - var edititemname = $("#EditItemName").val(); - var editUOM = $('#EditUOM').val(); - var editQuantity = $('#EditQuantity').val(); - var itemRate = $("#EditRate").val(); - var BasicValue=$("#EdittxtBasicValue").val(); - //var BasicValue=$("#EdittxtBasicValue").val(); - var BasicPrice=$("#EditBasicPriceTax").val(); - var AfterBasicPrice=$("#EditAfterBasicPriceTax").val(); - var Landingcharge=$("#EditLandingCharge").val(); - var AfterLanding=$("#EditAfterLandingCharge").val(); - var Highseass=$("#EditHighseas").val(); - var AfterHighseas=$("#EditAfterHighseas").val(); - var CustomDuty=$("#EditCustomduty").val(); - var AfterCustomDuty=$("#EditAfterCustomduty").val(); - var ExciseDuty=$("#EditExcisedutyTax").val(); - var AfterExciseDuty=$("#EditAfterExcisedutyTax").val(); - var ExciseEd=$("#EditExcisedutyEDcess").val(); - var AfterExciseEd=$("#EditAfterExcisedutyEDcess").val(); - var ExciseDutySH=$("#EditExcisedutySHcess").val(); - var AfterExciseDutySH=$("#EditAfterExcisedutySHcess").val(); - var CustomED=$("#EditCustomEDcess").val(); - var AfterCustomED=$("#EditAfterCustomEDcess").val(); - var CustomSH=$("#EditCustomSHcess").val(); - var AfterCustomSH=$("#EditAfterCustomSHcess").val(); - var AdditionalExciseduty=$("#EditAdditionalExciseduty ").val(); - var AfterAdditionalExciseduty=$("#EditAfterAdditionalExciseduty").val(); - var GrossDuty=$("#EditGrossdutypayable").val(); - var AvailaleModvat=$("#EditAvailableModvat").val(); - var GrossExpense=$("#EditGrossexpenses").val(); - var PurchaseRate=$("#Editpurchaserate").val(); - var Quantity=$("#EditPurQuantity").val(); - var CustomDutyExpense=$("#EditCustomDutyExpenses").val(); - var RMC=$("#EditRMCIncludingCustomers").val(); - var TotalExp=$('#EditTotalExp').val(); - - - var tr= document.getElementById(userid); - var cellval = tr.cells; - - - cellval[3].innerHTML = editQuantity; - cellval[4].innerHTML =editUOM; - cellval[5].innerHTML =itemRate; - cellval[6].innerHTML =BasicValue; - - $('#materialCode'+userid).val(editMaterialCode); - $('#materialName'+userid).val(edititemname); - $('#uom'+userid).val(editUOM); - $('#Quantity'+userid).val(EditQuantity); - $('#itemRate'+userid).val(EditRate); - $('#BasicAmt'+userid).val(BasicValue); - $('#BasicPriceTax'+userid).val(BasicPrice); - $('#AfterBasicPriceTax'+userid).val(AfterBasicPrice); - $('#LandingChargee'+userid).val(Landingcharge); - $('#AfterLandingChargee'+userid).val(AfterLanding); - $('#Highseass'+userid).val(Highseass); - $('#AfterHighseass'+userid).val(AfterHighseas); - $('#Customduty'+userid).val(CustomDuty); - $('#AfterCustomduty'+userid).val(AfterCustomDuty); - $('#ExcisedutyTax'+userid).val(ExciseDuty); - $('#AfterExcisedutyTax'+userid).val(AfterExciseDuty); - $('#ExcisedutyED'+userid).val(ExciseEd); - $('#AfterExcisedutyED'+userid).val(AfterExciseEd); - $('#ExcisedutySH'+userid).val(ExciseDutySH); - $('#AfterExcisedutySH'+userid).val(AfterExciseDutySH); - $('#CustomEDcess'+userid).val(CustomED); - $('#AfterCustomEDcess'+userid).val(AfterCustomED); - $('#CustomSHcess'+userid).val(CustomSH); - $('#AfterCustomSHcess'+userid).val(AfterCustomSH); - $('#AdditionalExciseduty'+userid).val(AdditionalExciseduty); - $('#AfterAdditionalExciseduty'+userid).val(AfterAdditionalExciseduty); - $('#Grossdutypayable'+userid).val(GrossDuty); - $('#Grossexpenses'+userid).val(GrossExpense); - $('#purchaserate'+userid).val(PurchaseRate); - $('#PurQuantity'+userid).val(Quantity); - $('#CustomDutyExpenses'+userid).val(CustomDutyExpense); - $('#RMCIncludingCustomers'+userid).val(RMC); - $('#TotalExp'+userid).val(TotalExp); - populateValueMainFormForEditImportTax(); - - - - } ); - -function populateValueMainFormForEditImportTax() -{ - var rows =document.getElementById('ImportTax').rows.length; - var TotalLanding=0; - var TotalHighseas=0; - var TotalCustom=0; - var TotalExcise=0; - var TotalExciseED=0; - var TotalExciseSH=0; - var TotalCustomED=0; - var TotalCustomSH=0; - var TotalAdditionalExcise=0; - var TotalGrossDuty=0; - var TotalAvlmodvat=0; - var TotalGrossExpense=0; - var i = 0; - var TotalRMC=0; - do{ - i += 1; - var tr= document.getElementById(i); - if(tr != null) - { - cells = tr.getElementsByTagName('td'); - var rowid = cells[0].innerHTML; - -var AfterLandingCharge= $('#AfterLandingCharge').val() == '' ? '0.00' : $('#AfterLandingCharge').val(); -var AfterHighseas=$('#AfterHighseas').val()==''?'0.00':$('#AfterHighseas').val(); -var AfterCustomduty=$('#AfterCustomduty').val()==''?'0.00':$('#AfterCustomduty').val(); -var AfterExcisedutyTax=$('#AfterExcisedutyTax').val()==''?'0.00':$('#AfterExcisedutyTax').val(); -var AfterExcisedutyEDcess=$('#AfterExcisedutyEDcess').val()==''?'0.00':$('#AfterExcisedutyEDcess').val(); -var AfterExciseDutySH=$("#AfterExcisedutySHcess").val()==''?'0.00':$('#AfterExcisedutySHcess').val(); -var AfterAdditionalExciseduty=$('#AfterAdditionalExciseduty').val()==''?'0.00':$('#AfterAdditionalExciseduty').val(); -var AfterCustomEDcess=$('#AfterCustomEDcess').val()==''?'0.00':$('#AfterCustomEDcess').val(); -var AfterCustomSHcess=$('#AfterCustomSHcess').val()==''?'0.00':$('#AfterCustomSHcess').val(); -var AdditionalExciseduty=$('#AdditionalExciseduty').val()==''?'0.00':$('#AdditionalExciseduty').val(); -var Grossdutypayable=$('#Grossdutypayable').val()==''?'0.00':$('#Grossdutypayable').val(); -var AvailableModvat=$('#AvailableModvat').val()==''?'0.00':$('#AvailableModvat').val(); -var Grossexpenses=$('#Grossexpenses').val()==''?'0.00':$('#Grossexpenses').val(); -var RMC=$('#RMCIncludingCustomers').val()==''?'0.00':$('#RMCIncludingCustomers').val(); -TotalLanding = parseFloat(TotalLanding) + parseFloat(AfterLandingCharge); -TotalHighseas = parseFloat(TotalHighseas) + parseFloat(AfterHighseas); -TotalCustom = parseFloat(TotalCustom) + parseFloat(AfterCustomduty); -TotalExcise = parseFloat(TotalExcise) + parseFloat(AfterExcisedutyTax); -TotalExciseED = parseFloat(TotalExciseED ) + parseFloat(AfterExcisedutyEDcess); -TotalExciseSH = parseFloat(TotalExciseSH) + parseFloat(AfterExciseDutySH); -TotalCustomED = parseFloat(TotalCustomED) + parseFloat(AfterCustomEDcess); -TotalCustomSH = parseFloat(TotalCustomSH ) + parseFloat(AfterCustomSHcess); -TotalAdditionalExcise = parseFloat(TotalAdditionalExcise ) + parseFloat(AdditionalExciseduty); -TotalGrossDuty = parseFloat(TotalGrossDuty) + parseFloat(Grossdutypayable); -TotalAvlmodvat = parseFloat(TotalAvlmodvat ) + parseFloat(AvailableModvat); -TotalGrossExpense = parseFloat(TotalGrossExpense ) + parseFloat(Grossexpenses); -//TotalRMC=parseFloat(TotalRMC)+parseFloat(RMC); - - - - var AfterLandingCharge= $('#AfterLandingCharge').val() == '' ? '0.00' : $('#AfterLandingCharge').val(); -var AfterHighseas=$('#AfterHighseas').val()==''?'0.00':$('#AfterHighseas').val(); -var AfterCustomduty=$('#AfterCustomduty').val()==''?'0.00':$('#AfterCustomduty').val(); -var AfterExcisedutyTax=$('#AfterExcisedutyTax').val()==''?'0.00':$('#AfterExcisedutyTax').val(); -var AfterExcisedutyEDcess=$('#AfterExcisedutyEDcess').val()==''?'0.00':$('#AfterExcisedutyEDcess').val(); -var AfterExciseDutySH=$("#AfterExcisedutySHcess").val()==''?'0.00':$('#AfterExcisedutySHcess').val(); -var AfterCustomEDcess=$('#AfterCustomEDcess').val()==''?'0.00':$('#AfterCustomEDcess').val(); -var AfterCustomSHcess=$('#AfterCustomSHcess').val()==''?'0.00':$('#AfterCustomSHcess').val(); -var AfterAdditionalExciseduty=$('#AfterAdditionalExciseduty').val()==''?'0.00':$('#AfterAdditionalExciseduty').val(); -var Grossdutypayable=$('#Grossdutypayable').val()==''?'0.00':$('#Grossdutypayable').val(); -var AvailableModvat=$('#AvailableModvat').val()==''?'0.00':$('#AvailableModvat').val(); -var Grossexpenses=$('#Grossexpenses').val()==''?'0.00':$('#Grossexpenses').val(); -var totalexp=$('#TotalExp').val()==''?'0.00':$('#TotalExp').val(); -var TotalLanding=$('#txttotallanding').val()==''?'0.00':$('#txttotallanding').val(); -var TotalHighseas=$('#txttotalhighseas').val()==''?'0.00':$('#txttotalhighseas').val(); -var TotalCustom=$('#txttotalcustom').val()==''?'0.00':$('#txttotalcustom').val(); -var TotalExcise=$('#txttotalexcise').val()==''?'0.00':$('#txttotalexcise').val(); -var TotalExciseED=$('#txttotalexciseED').val()==''?'0.00':$('#txttotalexciseED').val(); -var TotalExciseSH=$('#txttotalexciseSH').val()==''?'0.00':$('#txttotalexciseSH').val(); -var TotalCustomED=$('#txttotalcustomED').val()==''?'0.00':$('#txttotalcustomED').val(); -var TotalCustomSH=$('#txttotalcustomSH').val()==''?'0.00':$('#txttotalcustomSH').val(); -var TotalAdditionalExcise=$('#txttotalAdditionalExciseduty').val()==''?'0.00':$('#txttotalAdditionalExciseduty').val(); -var TotalGrossDuty=$('#txttotalgrossduty').val()==''?'0.00':$('#txttotalgrossduty').val(); -var TotalAvlmodvat=$('#txttotalavlmodvat').val()==''?'0.00':$('#txttotalavlmodvat').val(); -var TotalGrossExpense=$('#txttotalgrossexpense').val()==''?'0.00':$('#txttotalgrossexpense').val(); -var TotalOrder=$('#txtToatlOrder').val()==''?'0.00':$('txtToatlOrder').val(); - - } - - - }while (i < rows); - - $('#txttotallanding').val(parseFloat(TotalLanding).toFixed(2)); - $('#txttotalhighseas').val(parseFloat(TotalHighseas).toFixed(2)); - $('#txttotalcustom').val(parseFloat(TotalCustom).toFixed(2)); - $('#txttotalexcise').val(parseFloat(TotalExcise).toFixed(2)); - $('#txttotalexciseED').val(parseFloat(TotalExciseED).toFixed(2)); - $('#txttotalexciseSH').val(parseFloat(TotalExciseSH).toFixed(2)); - $('#txttotalcustomED').val(parseFloat(TotalCustomED).toFixed(2)); - $('#txttotalcustomSH').val(parseFloat(TotalCustomSH).toFixed(2)); - $('#txttotalAdditionalExciseduty').val(parseFloat(TotalAdditionalExcise).toFixed(2)); - $('#txttotalgrossduty').val(parseFloat(TotalGrossDuty).toFixed(2)); - $('#txttotalavlmodvat').val(parseFloat(TotalAvlmodvat).toFixed(2)); - $('#txttotalgrossexpense').val(parseFloat(TotalGrossExpense).toFixed(2)); - $('#txtToatlOrder').val(parseFloat(TotalOrder).toFixed(2)); - - - - //$('#txttotallanding').val(parseFloat(TotalLanding).toFixed(2)); -} - - - -function DeleteRow(rowid) -{ //alert('Delete'); - var DelRows = $('#txtDeletedRow').val(); - var answer = confirm(" Do you want to delete the Item from the List?") - if (answer) - { - //alert('Confirm'); - var td = document.getElementById(rowid); - td.parentNode.removeChild(td); - - var removeItem = $('#materialCode'+rowid).val(); - - - - SelectedMaterialCode.splice( SelectedMaterialCode.indexOf('removeItem'), 1 ); - $.each(SelectedMaterialList.Mat, function(i, el){ - - if (this.materialCode == removeItem){//Type = ''; - SelectedMaterialList.Mat.splice(i, 1); - } - }); - // alert(SelectedMaterialCode); - if(DelRows != '') - { - DelRows = DelRows + ":" + rowid; - } - else - { - DelRows= "0" + ":" + rowid; - } - $('#txtDeletedRow').val(DelRows); - populateValueMainFormForDeleteItem(rowid); - } - - } - - - - -function populateValueMainFormForDeleteItem(rowid) -{ - var TotalLanding=0; - var TotalHighseas=0; - var TotalCustom=0; - var TotalExcise=0; - var TotalExciseED=0; - var TotalExciseSH=0; - var TotalCustomED=0; - var TotalCustomSH=0; - var TotalAdditionalExcise=0; - var TotalGrossDuty=0; - var TotalAvlmodvat=0; - var TotalGrossExpense=0; -var AfterLandingCharge= $('#AfterLandingCharge').val() == '' ? '0.00' : $('#AfterLandingCharge').val(); -var AfterHighseas=$('#AfterHighseas').val()==''?'0.00':$('#AfterHighseas').val(); -var AfterCustomduty=$('#AfterCustomduty').val()==''?'0.00':$('#AfterCustomduty').val(); -var AfterExcisedutyTax=$('#AfterExcisedutyTax').val()==''?'0.00':$('#AfterExcisedutyTax').val(); -var AfterExcisedutyEDcess=$('#AfterExcisedutyEDcess').val()==''?'0.00':$('#AfterExcisedutyEDcess').val(); -var AfterExciseDutySH=$("#AfterExcisedutySHcess").val()==''?'0.00':$('#AfterExcisedutySHcess').val(); -var AfterAdditionalExciseduty=$('#AfterAdditionalExciseduty').val()==''?'0.00':$('#AfterAdditionalExciseduty').val(); -var AfterCustomEDcess=$('#AfterCustomEDcess').val()==''?'0.00':$('#AfterCustomEDcess').val(); -var AfterCustomSHcess=$('#AfterCustomSHcess').val()==''?'0.00':$('#AfterCustomSHcess').val(); -var AdditionalExciseduty=$('#AdditionalExciseduty').val()==''?'0.00':$('#AdditionalExciseduty').val(); -var Grossdutypayable=$('#Grossdutypayable').val()==''?'0.00':$('#Grossdutypayable').val(); -var AvailableModvat=$('#AvailableModvat').val()==''?'0.00':$('#AvailableModvat').val(); -var Grossexpenses=$('#Grossexpenses').val()==''?'0.00':$('#Grossexpenses').val(); -var totalExp=$('#TotalExp').val()==''?'0.00':$('#TotalExp').val(); -TotalLanding = parseFloat(TotalLanding) - parseFloat(AfterLandingCharge); -TotalHighseas = parseFloat(TotalHighseas) - parseFloat(AfterHighseas); -TotalCustom = parseFloat(TotalCustom) - parseFloat(AfterCustomduty); -TotalExcise = parseFloat(TotalExcise) - parseFloat(AfterExcisedutyTax); -TotalExciseED = parseFloat(TotalExciseED ) - parseFloat(AfterExcisedutyEDcess); -TotalExciseSH = parseFloat(TotalExciseSH) - parseFloat(AfterExciseDutySH); -TotalCustomED = parseFloat(TotalCustomED) - parseFloat(AfterCustomEDcess); -TotalCustomSH = parseFloat(TotalCustomSH ) - parseFloat(AfterCustomSHcess); -TotalAdditionalExcise = parseFloat(TotalAdditionalExcise ) - parseFloat(AdditionalExciseduty); -TotalGrossDuty = parseFloat(TotalGrossDuty) - parseFloat(Grossdutypayable); -TotalAvlmodvat = parseFloat(TotalAvlmodvat ) - parseFloat(AvailableModvat); -TotalGrossExpense = parseFloat(TotalGrossExpense ) - parseFloat(Grossexpenses); -TotalOrderValue=parseFloat(TotalOrderValue)-parseFloat() - - $('#txttotallanding').val(parseFloat(TotalLanding).toFixed(2)); - $('#txttotalhighseas').val(parseFloat(TotalHighseas).toFixed(2)); - $('#txttotalcustom').val(parseFloat(TotalCustom).toFixed(2)); - $('#txttotalexcise').val(parseFloat(TotalExcise).toFixed(2)); - $('#txttotalexciseED').val(parseFloat(TotalExciseED).toFixed(2)); - $('#txttotalexciseSH').val(parseFloat(TotalExciseSH).toFixed(2)); - $('#txttotalcustomED').val(parseFloat(TotalCustomED).toFixed(2)); - $('#txttotalcustomSH').val(parseFloat(TotalCustomSH).toFixed(2)); - $('#txttotalAdditionalExciseduty').val(parseFloat(TotalAdditionalExcise).toFixed(2)); - $('#txttotalgrossduty').val(parseFloat(TotalGrossDuty).toFixed(2)); - $('#txttotalavlmodvat').val(parseFloat(TotalAvlmodvat).toFixed(2)); - $('#txttotalgrossexpense').val(parseFloat(TotalGrossExpense).toFixed(2)); - $('#txtToatlOrder').val(parseFloat(TotalOrderValue).toFixed(2)); - - - - -} - - - -function Save(status) -{ -//alert(); -if(status == '0') -{ - stat = '<?php echo PO_DRAFT; ?>'; -} -else -{ - stat = '<?php echo PO_CREATED; ?>'; -} - -$('#txtStatus').val(stat); - -var txtRowCount = $('#txtRowCount').val(); -var txtDeletedRow = $('#txtDeletedRow').val(); -//alert(stat); -//alert(JSON.stringify(txtStatus)); -//exit(); -//var TotalOrder=$('#txtToatlOrder').val(); -//alert(TotalOrder); -//exit(); -if(validate()) -{ - if(document.getElementById('ImportTax').rows.length <= 0) - { - - alert('Please Select Line item to Create PO'); - $('#Deliverydt').focus(); - return false; - } - else - { - - $('#content').loader('show'); - $.ajax({ - data:$('.ImportPO').serialize()+"&txtRowCount="+txtRowCount+"&txtDeletedRow="+txtDeletedRow+"&textStatus="+stat, - - //data:$('.CreatealterPO').serialize()+"&TextRowCount="+TextRowCount+"&TextDeQletedRowCount="+TextDeletedRowCount+"&TextTotalOrderValueSummaryService="+TextTotalOrderValueSummaryService+"&TextSpcialInstruction="+TextSpcialInstruction+"&TextExchangerate"+ExcLandingCharge="+hangerate+"Status="+TextStatus, - type:"POST", - url:"<?php echo base_url() ?>purchaseorder/EditImportPurchaseOrder", - success:function(data) { - if(data) - { - $('#content').loader('hide'); - alert(data); - $('#txtRowCount').val(''); - $('#txtDeletedRow').val(''); - //$('#SpcialInstruction').val(''); - //$('#txtDeliveryAddress').val(''); - window.location = "purchaseorderListing"; - - } - else - { - alert("Error"); - } - - } - - }); - - } -} - -} - - - $(function () { - //$("#revenueTax").DataTable(); - $('#ImportTax').DataTable({ - "paging": false, - "lengthChange": true, - "searching": false, - "ordering": false, - // "info": true, - "autoWidth": true - - }); - }); - - - - -</script> - diff --git a/application/views/editrequisitionform.php b/application/views/editrequisitionform.php deleted file mode 100644 index 4a7e2ab9..00000000 --- a/application/views/editrequisitionform.php +++ /dev/null @@ -1,905 +0,0 @@ - -<?php - $ReqNo = ''; - $ReqType = ''; - $Requestedby = ''; - $FirstName =''; - $Designation =''; - $DepartmentName = ''; - $Status = ''; - $CostCenterCode = ''; - $RowCount = ''; - -if(!empty($ReqDetails)) -{ - foreach ($ReqDetails as $Req) - { - $ReqNo = $Req->ReqNo; - $ReqType = $Req->ReqType; - $Requestedby = $Req->Requestedby; - $FirstName =$Req->FirstName; - $Designation =$Req->Designation; - $DepartmentName = $Req->DepartmentName; - $Status = $Req->Status; - $CostCenterCode = $Req->CostCenterCode; - } -} - - -?> -<style> - .table-bordered>thead>tr>th, .table-bordered>tbody>tr>th, .table-bordered>tfoot>tr>th, .table-bordered>thead>tr>td, .table-bordered>tbody>tr>td, .table-bordered>tfoot>tr>td {border: 1px solid #333;} - </style> -<div class="content-wrapper"> - - - <section class="content"> - - <div> - <center><b><h2>Siddharth Industries - Edit Requisition Form</h2></b></center> - <div class="container-fluid"> - <div id="content"></div> - - <?php - $attributes = array('class' => 'form-label-left requistion ','name' => 'requistion','id' => 'requistion'); - - echo form_open($this->config->base_url().'requisitionform/EditRequistion',$attributes); ?> - <div class="row"> - <div class="col-md-12"> - <div class="row" align="right"> - <a class="btn btn-primary" href="<?php echo base_url(); ?>Requisition" ID="cancel">&nbsp;&nbsp;<span class="bold">Back</span></a> -</div> - <div class="col-md-3"> - <label>Request Type</label> - <div class="form-group"> - - <?php - $data = array('name' => 'RequestType','value' => set_value('RequestType',$ReqType),'id'=>'RequestType', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - - ?> - - <input type="hidden" name="txtReqNo" id="txtReqNo" value="<?php echo $ReqNo?>"/> - </div> - </div> - <div class="col-md-3"> - <label>Requested By</label> - <div class="form-group"> - - <?php - $data = array('name' => 'EmpID','value' => set_value('EmpID',$FirstName),'id'=>'EmpID', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - - ?> - - </div> - </div> - <div class="col-md-3"> - <label>Department Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'DeptName','value' => set_value('DeptName',$DepartmentName),'id'=>'DeptName', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-3"> - <label>Designation</label> - <div class="form-group"> - <?php - $data = array('name' => 'Designation','value' => set_value('Designation',$Designation),'id'=>'Designation', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - - <div class="col-md-3"> - <label>Cost Center Name</label> - - <div class="form-group"> - <?php - $Costs = array($CostCenterCode=>$CostCenterCode); - //print_r( $options); - - if(!empty($CostCenter)) - { - foreach ($CostCenter as $SID): - // echo $SID->ConfigValue; - $Costs[$SID->CostCenterCode] = $SID->CostCenterCode .'-'. $SID->CostCenterName ; - - endforeach; - - } - echo form_dropdown('CostCenter', $Costs,set_value('CostCenter'),'id="CostCenter"' ,'class = "form-control"'); - - ?> - </div> - </div> - - <div class="col-md-3"> - <label>Available Budget Amount</label>&nbsp;<img id="AlertImg" src="<?php echo base_url(); ?>assets/dist/img/red.png" alt="your image" width="25px" style="display:none"/> - <div class="form-group"> - <?php - $data = array('name' => 'AvlBudgetAmount','value' => set_value('AvlBudgetAmount'),'id'=>'AvlBudgetAmount', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - - </div> - - </div> - - </div> - - </div> - </div> - - <div class="container-fluid"> - <table class="table table-bordered" style="border:1px solid #333"> - <div align="right" style="padding-right:10px"> -<div align="right"> -<?php if(count($MaterialCode) != 0) -{ -?> - <a data-toggle="modal" data-target="#myModal1" class="btn btn-primary">Add Line Item</a> -<?php } ?> - <div class="modal fade" id="myModal1" role="dialog"> - <div class="modal-dialog"> - - <!-- Modal content--> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal">&times;</button> - <center><h4>Add Line Item </h4></center> - </div> - <div align="left"> - - <div class="col-md-6"> - <label>Material Code</label> - <div > - <?php - $options = array("0"=>'Material Code'); - //print_r( $options); - - if(!empty($MaterialCode)) - { - foreach ($MaterialCode as $MID): - - - $options[$MID->MaterialCode] = $MID->MaterialCode.' '.' - '.' '.$MID->MaterialName; - - endforeach; - } - - echo form_dropdown('drpMaterial', $options,set_value('drpMaterial'),'id="drpMaterial"' ,'class="form-control"'); - - ?> - </div> - </div> - - <div class="col-md-6"> - <label>Description</label> - <div class="form-group"> - <?php - $data = array('name' => 'Description','value' => set_value('Description'),'id'=>'Description', 'class' => 'form-control','readonly' => 'true' ); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-6"> - <label>UOM</label> - <div> - <?php - $data = array('name' => 'UOM','value' => set_value('UOM'),'id'=>'UOM', 'class' => 'form-control','readonly' => 'true' ); - echo form_input($data); - ?> - - </div> - </div> - <div class="col-md-6"> - <label>Quantity</label> - <div class="form-group"> - <?php - $data = array('name' => 'Quantity','value' => set_value('Quantity'),'id'=>'Quantity', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event)','maxlength'=>'20'); - echo form_input($data); - ?> - </div> - </div> - - - </div> - - <div class="modal-footer"> - <a class="btn btn-info font addClick" ID="addClick" ><i class="fa fa-plus"></i>&nbsp;&nbsp;<span class="bold">Add</span></a> - <a class="btn btn-info" data-dismiss="modal" value="Cancel">cancel</a> - </div> - </div> - - </div> - </div> - - - </div><br/> <div class="modal fade" id="EditItem" role="dialog"> - <div class="modal-dialog"> - - <!-- Modal content--> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal">&times;</button> - <center><h4>Edit Line Item </h4></center> - </div> - <div align="left"> - - <div class="col-md-6"> - <label>Material Code</label> - <div > - <?php - $data = array('name' => 'EditMaterialCode', 'value' => set_value('EditMaterialCode'),'id'=>'EditMaterialCode', 'class' => 'form-control','readonly'=>'true'); - echo form_input($data); - ?> - </div> - </div> - - <div class="col-md-6"> - <label>Description</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditDescription','value' => set_value('EditDescription'),'id'=>'EditDescription', 'class' => 'form-control','readonly' => 'true' ); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-6"> - <label>UOM</label> - <div> - <?php - $data = array('name' => 'EditUOM','value' => set_value('EditUOM'),'id'=>'EditUOM', 'class' => 'form-control','readonly' => 'true' ); - echo form_input($data); - ?> - - </div> - </div> - <div class="col-md-6"> - <label>Quantity</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditQuantity','value' => set_value('EditQuantity'),'id'=>'EditQuantity', 'class' => 'form-control','onkeypress'=>'return isNumberKey(event)','maxlength'=>'20'); - echo form_input($data); - ?> - </div> - </div> - - - </div> - - <div class="modal-footer"> - <a class="btn btn-info font EditClick" ID="EditClick" ><i class="fa fa-plus"></i>&nbsp;&nbsp;<span class="bold">Edit</span></a> - <a class="btn btn-info" data-dismiss="modal" value="Cancel">Cancel</a> - </div> - </div> - - </div> - </div> - - - </div></br> - - <table id="Items" class="table table-bordered table-hover" style="background-color:#fff;font-size:12px;"> - <thead style="background-color:#ddf"> - <tr> - <th>SNo</th> - <th>Material Code</th> - <th>Material Name</th> - <th>Uom</th> - -<th>RequestedQuantity</th> - <th>PoQuantity</th> - <th>Status</th> - <th>Action</th> - </tr> - </thead> - <tbody id="tempAppend"> -<?php - if(!empty($LineItem)) - { - $index = 0; - foreach($LineItem as $record) - { - $index = $index + 1; - ?> - <tr id="<?php echo $index ; ?>"> - <td align="left"><?php echo $index ; ?></td> - <input type="hidden" name="<?php echo 'te'.$index ?>" id="<?php echo 'te'.$index ?>" value="<?php echo $record->MaterialCode ; ?>" /> - <input type="hidden" name="<?php echo 'te'.$index ?>" id="<?php echo 'tes'.$index ?>" value="<?php echo $record->Quantity ; ?>" /> - - <td align="left"><?php echo $record->MaterialCode ; ?></td> - <td align="left"><?php echo $record->MaterialName ; ?></td> - - <td align="left"><?php echo $record->UOM ; ?></td> - - <td align="left"><?php echo $record->Quantity ; ?></td> - <td align="left"><?php echo $record->POQTY ; ?></td> - <td align="left"><?php echo $record->StatusName ;?></td> - <td> - <a data-id="<?php echo $index ; ?>" data-userid="<?php echo $index ; ?>" data-target='#EditItem' data-toggle="modal" href="#EditItem"><i class="fa fa-pencil" data-toggle="tooltip" title="Click here to view/Edit the <?php echo $record->MaterialCode ; ?> Material details"></i>&nbsp;&nbsp;&nbsp;</a> <a onclick = "DeleteRow(<?php echo $index ; ?>)" class="link" data-id="<?php echo $record->MaterialCode ; ?>" data-userid="<?php echo $index ; ?>" id="Del" ><span class="glyphicon glyphicon-trash"></span></a> - - - </td> -</tr> - <?php $RowCount = $index; } - ?> - - <?php - }?> - </tbody> - - </table> - - <div align="right" style="padding-right:10px"> - <input type="hidden" name="txtStatus" id="txtStatus" /> - <input type="hidden" name="txtDeletedRow" id="txtDeletedRow" /> - <input type="hidden" name="txtRowCount" id="txtRowCount" value="<?php echo $RowCount ; ?>"/> - <?php if($Status == REQ_DRAFT) - { ?> - <a class="btn btn-primary Save" ID="Save" onclick="Save(0)" >&nbsp;&nbsp;<span class="bold">Save</span></a> - <a class="btn btn-primary submit" ID="submit" onclick="Save(1)" >&nbsp;&nbsp;<span class="bold">Submit</span></a> - - <input type="reset" class="btn btn-primary"> - <?php } - else if($Status == REQ_PENDING_APPROVAL) - {?> - <!--<a class="btn btn-primary" ID="update" onclick="update()" >&nbsp;&nbsp;<span class="bold">Update</span></a> - <a class="btn btn-primary" href="<?php echo base_url(); ?>Requisition" ID="cancel">&nbsp;&nbsp;<span class="bold">Cancel</span></a> --> - <a class="btn btn-primary Save" ID="submit" onclick="Save(1)" >&nbsp;&nbsp;<span class="bold">Update</span></a> - <input type="reset" class="btn btn-primary"> - <?php } ?> - - - - </div> - <br> - </div> - </div> - - </section> -</div> - -<script> -function isNumberKey(evt) - { - var charCode = (evt.which) ? evt.which : evt.keyCode; - if (charCode != 46 && charCode > 31 - && (charCode < 48 || charCode > 57)) - return false; - - return true; - } - -$(function() { - - var j=0; - var ReqLineItem = <?php echo json_encode($LineItem, JSON_PRETTY_PRINT) ?>; - $.each(ReqLineItem, function(idx, obj) { - - //$("#SupAddress").val(obj.Address); - j= j +1 ; - $('<input>').attr({ - type: 'hidden', - id: 'MaterialCode' + j, - name: 'MaterialCode'+ j, - value:obj.MaterialCode - - }).appendTo('form'); - - $('<input>').attr({ - type: 'hidden', - id: 'Quantity' + j, - name: 'Quantity'+ j, - value:obj.Quantity - }).appendTo('form'); - - }); - - $( ".datePicker" ).datepicker({ dateFormat: 'dd/mm/yy' }); - - //Initialize Select2 Elements - $(".select2").select2(); - - var id = '<?php echo $CostCenterCode?>'; - var ReqType = '<?php echo $ReqType?>'; - $.ajax({ - data:{id:id}, - type:"POST", - url:"<?php echo base_url() ?>servicepurchaseorder/AvilBudgetAmount?ReqType="+ReqType, - success:function(data) { - if(data) - { - $('#content').loader('hide'); - $("#AvlBudgetAmount").val(data); - - if(parseFloat($("#AvlBudgetAmount").val()) <= 0) - { - $('#AlertImg').removeAttr("style"); - } - else - { - $('#AlertImg').attr("style","display:none;"); - } - } - else - { - $('#content').loader('hide'); - alert("Error"); - } - } - - }); - - -$('#CostCenter').change(function() { - - var id = $('#CostCenter').val(); - $("#AvlBudgetAmount").val(''); - var ReqType = $('#RequestType').val(); - if(id != '-1') - { - $('#content').loader('show'); - $.ajax({ - data:{id:id}, - type:"POST", - url:"<?php echo base_url() ?>servicepurchaseorder/AvilBudgetAmount?ReqType="+ReqType, - success:function(data) { - if(data) - { - $('#content').loader('hide'); - $("#AvlBudgetAmount").val(number_format(data,2)); - - if(parseFloat($("#AvlBudgetAmount").val()) <= 0) - { - $('#AlertImg').removeAttr("style"); - } - else - { - $('#AlertImg').attr("style","display:none;"); - } - } - else - { - $('#content').loader('hide'); - alert("Error"); - } - } - - }); - - } - else - { - alert('Please select the Employee details'); - return false; - } - -}); - $('#RequestType').change(function() - { - - $('#txtRowCount').val(''); - $('#txtDeletedRow').val(''); - $("#Description").val(''); - $("#UOM").val(''); - removeHiddenRows($('#Items').find('tr').length); - var id = $('#RequestType').val(); - - if(id != '-1') - { - $('#content').loader('show'); - - $.ajax({ - data:{id:id}, - dataType: 'json', - type:"POST", - url:"<?php echo base_url();?>requisitionform/getMaterialCode", - success:function(json) { - $('#content').loader('hide'); - - $("#drpMaterial").empty(); - $("#drpMaterial").append(json.Material); - // $("#Description").val(json.MaterialName); - //$("#UOM").val(json.UOM); - } - - }); - //$('#content').loader('hide'); - } - else - { - alert('Please select the RequestType'); - return false; - } - -}); - -$('#drpMaterial').change(function() { - - var id = $('#drpMaterial').val(); - -$("#Description").val(''); -$("#UOM").val(''); - if(id != '-1') - { - $('#content').loader('show'); - - $.ajax({ - data:{id:id}, - dataType: 'json', - type:"POST", - url:"<?php echo base_url();?>requisitionform/getMaterialDetails", - success:function(json) { - $('#content').loader('hide'); - //alert(json.MatDetail); - $("#Description").val(json.MatDetail[0]['MaterialName']); - $("#UOM").val(json.MatDetail[0]['UOM']); - } - - }); - //$('#content').loader('hide'); - } - else - { - alert('Please select the RequestType'); - return false; - } - - -}); -}); - </script> - <script type="text/html" id="tempList"> -<tr id="<%=index%>"> -<td align="left"><%=index%></td> - <td align="left"><%=MaterialCode%></td> - - <td align="left"><%=MaterialName%></td> - - <td align="left"><%=UOM%></td> - - <td align="left"><%=Quantity%></td> - <td align="left">0.00</td> - <td align="left">NEW</td> - <td> - <a data-target='#EditItem' data-id="<%=index%>" data-userid="<%=index%>" data-toggle="modal" href="#EditItem"><i class="fa fa-pencil" data-toggle="tooltip" title="Click here to view/Edit the <%=MaterialCode%> Material details"></i>&nbsp;&nbsp;&nbsp;</a> <a href='#' onclick = "DeleteRow(<%=index%>)" class="link" data-id="<%=index%>" data-userid="<%=index%>" id="Del" ><span class="glyphicon glyphicon-trash"></span></a> - - - </td> -</tr> -</script> -<script> -var index = $('#txtRowCount').val(); -var userid = ''; -function removeHiddenRows(rowcount) -{ - var step; - //alert(rowcount); -for (step = 1; step < rowcount-1; step++) { - var td = document.getElementById(step); - td.parentNode.removeChild(td); - $("#MaterialCode"+step).remove(); - $("#Description"+step).remove(); - $("#UOM"+step).remove(); - $("#Quantity"+step).remove(); - index = '1'; - userid = ''; -} -} - - - -function Save(status) -{ -if(status == '0') -{ - stat = '<?php echo REQ_DRAFT; ?>'; -} -else -{ - stat = '<?php echo REQ_PENDING_APPROVAL; ?>'; -} - //alert($('#MaterialCode4').val()); - - if(validate()) - { - if(document.getElementById('Items').rows.length < 2) - { - alert('Please Select Line item to update the Requisition'); - $('#Deliverydt').focus(); - return false; - } - else - { - //alert(document.getElementById('Items').rows.length); - $('#content').loader('show'); - $('#txtStatus').val(stat); - $.ajax({ - data:$('.requistion').serialize(), - type:"POST", - url:"<?php echo base_url() ?>requisitionform/EditRequistion", - success:function(data) { - if(data) - { - $('#content').loader('hide'); - alert(data); - $('#txtRowCount').val(''); - $('#txtDeletedRow').val(''); - - window.location = "Requisition"; - - } - else - { - alert("Error"); - } - - } - -}); - } -} -} -function validate() -{ - - if($("option:selected", $("#RequestType")).val() == '-1') - { - alert('Please Select ReqType Names'); - return false; - } - else if($("option:selected", $("#EmpID")).val() == '-1') - { - alert('Please Select Reqby'); - return false; - } - else if(index < 1) - { - alert('Please Add Line Item'); - return false; - } - else - { - return true; - } - -} -function DeleteRow(rowid) -{ - - var id = []; - var tr= document.getElementById(rowid); - var cellval = tr.cells; - var MaterialCode = cellval[1].innerHTML; - // alert(cellval[1].innerHTML); - id[0] = $('#txtReqNo').val(); - id[1] = MaterialCode; - var answer = confirm(" Do you want to delete the Item from the List?") - if (answer) - { - // To delete the item from list - - var x = <?php echo json_encode($LineItem, JSON_PRETTY_PRINT) ?>; - var result = '0'; - //alert(x); - //alert(MaterialCode); - if(MaterialCode != "0") - { - $.each(x, function(idx, obj) { - if(obj.MaterialCode === MaterialCode) - { - result = '1'; - return false; - } - - }); - } - - - if(result == '0') - { - var DelRows = $('#txtDeletedRow').val(); - tr.parentNode.removeChild(tr); - if(DelRows != '') - { - DelRows = DelRows + ":" + rowid; - } - else - { - DelRows= "0" + ":" + rowid; - } - $('#txtDeletedRow').val(DelRows); - } - // To delete the value from Tables - else if(result == '1') - { - var DelRows = $('#txtDeletedRow').val(); - tr.parentNode.removeChild(tr); - if(DelRows != '') - { - DelRows = DelRows + ":" + rowid; - } - else - { - DelRows= "0" + ":" + rowid; - } - $('#txtDeletedRow').val(DelRows); - - $.ajax({ - data:{id:id}, - type:"POST", - url:"<?php echo base_url() ?>requisitionform/DeleteRequistionForm", - success:function(data) { - if(data) - { - $('#content').loader('hide'); - alert(data); - - - - } - else - { - alert("Error"); - } - - }}); - } - } - -} - - -$('.addClick').click(function(){ - - if ($("#drpMaterial option:selected").val() =='-1' ) - { - alert('Please Select the MaterialCode '); - } - - if(document.getElementById('Quantity').value == '' ) - { - alert('Please Enter the Quantity'); - - } - - if ($("#drpMaterial option:selected").val() !='-1' && $('#Quantity').val() != '' ) - { - var temp = parseInt(index) + 1; - var materialCode = $("#drpMaterial option:selected").val(); - var materialName = $("#Description").val(); - var uom = $("#UOM").val(); - var quantity = $("#Quantity").val(); - - $('#drpMaterial option[value='+materialCode+']').remove(); - $('#Description').val(''); - $('#UOM').val(''); - $('#Quantity').val(''); - - index = parseInt(index)+1; - - - var template = jQuery("#tempList").html(); - - - $('#tempAppend').append(_.template(template,{index:temp,MaterialCode:materialCode,MaterialName:materialName,UOM:uom,Quantity:quantity})); - - - var theForm = $(".requistion"); - - //addHidden(theForm,"MaterialCode"+temp,materialCode); - //addHidden(theForm,"Description"+temp,materialName); - //addHidden(theForm,"UOM"+temp,uom); - //addHidden(theForm,"Quantity"+temp,quantity); - - $('<input>').attr({ - type: 'hidden', - id: 'MaterialCode' + temp, - name: 'MaterialCode'+ temp, - value:materialCode - }).appendTo('form'); - - $('<input>').attr({ - type: 'hidden', - id: 'Description' + temp, - name: 'Description'+ temp, - value:materialName - }).appendTo('form'); - - $('<input>').attr({ - type: 'hidden', - id: 'UOM' + temp, - name: 'UOM'+ temp, - value:uom - }).appendTo('form'); - - $('<input>').attr({ - type: 'hidden', - id: 'Quantity' + temp, - name: 'Quantity'+ temp, - value:quantity - }).appendTo('form'); - - $('#txtRowCount').val(temp); - - } - - }); - function addHidden(theForm, key, value) { - // Create a hidden input element, and append it to the form: - var input = document.createElement('input'); - input.type = 'hidden'; - input.name = key;'name-as-seen-at-the-server'; - input.id = key;'name-as-seen-at-the-server'; - input.value = value; - theForm.append(input); -} -$("#myModal1").on("shown.bs.modal", function(e) { - if($("option:selected", $("#RequestType")).val() == '-1') - { - alert('Please select the Request Type '); - e.close(); - } -}); - -$("#EditItem").on("shown.bs.modal", function(e) { - userid = $(e.relatedTarget).data('userid'); - // alert(userid); - var tr= document.getElementById(userid); - var cellval = tr.cells; - //alert(x[1].innerHTML); - $('#EditMaterialCode').val(cellval[1].innerHTML); - $('#EditDescription').val(cellval[2].innerHTML); - $('#EditUOM').val(cellval[3].innerHTML); - $('#EditQuantity').val(cellval[4].innerHTML); -}); - -$('.EditClick').click(function(){ - - if(document.getElementById('EditQuantity').value == '' ) - { - alert('Please Enter the Quantity' ); - } - - if ( $('#EditQuantity').val() != '' ) - { - - var editMaterialCode = $("#EditMaterialCode").val(); - var editDescription = $("#EditDescription").val(); - var editUOM = $('#EditUOM').val(); - var editQuantity = $('#EditQuantity').val(); - - var tr= document.getElementById(userid); - var cellval = tr.cells; - cellval[1].innerHTML = editMaterialCode; - cellval[2].innerHTML = editDescription; - cellval[3].innerHTML =editUOM; - cellval[4].innerHTML = editQuantity; - - $('#MaterialCode'+userid).val(editMaterialCode); - $('#Description'+userid).val(editDescription); - $('#UOM'+userid).val(editUOM); - $('#Quantity'+userid).val(editQuantity); - - - } - - }); - $(function () { - $('#Items').DataTable({ - "paging": true, - "lengthChange": true, - "searching": true, - "ordering": true, - "info": true, - "autoWidth": true - - }); - }); -</script> diff --git a/application/views/employeeListing.php b/application/views/employeeListing.php deleted file mode 100644 index 0862efd5..00000000 --- a/application/views/employeeListing.php +++ /dev/null @@ -1,77 +0,0 @@ - -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - <CENTER>Siddharth Industries - Employee Details</CENTER> - - </h1> - </section> - <section class="content"> - <div class="row"> - <div class="col-xs-12 text-right"> - <div class="form-group"> - <a class="btn btn-primary" href="<?php echo base_url(); ?>addemployee">Add New Employee</a> - <a class="btn btn-primary" href="<?php echo base_url(); ?>employeedetails/export_employee">Export Employee Details <i class="fa fa-download"aira-hidden="true"></i></a> - </div> - </div> - </div> - <div class="row"> - <div class="col-xs-12"> - - <table id="datatable" class="table table-hover table-bordered" style="background-color:#fff;font-size:12px;" > - <thead> - <tr> - <th>Emp ID</th> - <th>Employee Name</th> - <th>Contact Number</th> - <th>Email ID</th> - <th>Designation</th> - <th>Department</th> - </tr> - </thead> - <tbody> - <?php - if(!empty($userRecords)) - { - foreach($userRecords as $record) - { - ?> - <tr> - <td><u><a href="<?php echo base_url().'employeedetails/ViewEmployee/?EmpID='.$record->EmpID; ?>" data-toggle="tooltip" title="<?php echo $record->EmpID; ?> - Click here to view Employee details"><?php echo $record->EmpID ?> </a></u></td> - <td><?php echo $record->FirstName .' , '. $record->LastName; ?></td> - <td><?php echo $record->ContactNumber ?></td> - <td><?php echo $record->EmailId ?></td> - <td><?php echo $record->Designation ?></td> - <td><?php echo $record->DepartmentName ?></td> - </tr> - <?php - } - } - ?> - </tbody> - </table> - - - - </div> - </div> - </section> -</div> -<script type="text/javascript" src="<?php echo base_url(); ?>assets/js/common.js" charset="utf-8"></script> - <script type="text/javascript"> - - $(function () { - - $('#datatable').DataTable({ - "paging": true, - "lengthChange": true, - "searching": true, - "ordering": true, - "info": true, - "autoWidth": true - - }); - }); - -</script> diff --git a/application/views/emppayListing.php b/application/views/emppayListing.php deleted file mode 100644 index 30acdf5a..00000000 --- a/application/views/emppayListing.php +++ /dev/null @@ -1,106 +0,0 @@ - - -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - <center>Employee Salary Details</center> - </h1> - </section> - <section class="content"> - <div class="row"> - <div class="col-xs-12 text-right"> - <div class="form-group"> - <a class="btn btn-primary" href="<?php echo base_url(); ?>emppaydate/addemppaydate">Add New Employee Pay List</a> - </div> - </div> - </div> - <div class="row"> - <div class="col-xs-12"> - <div class="box"> - <div class="box-header"> - - <div class="box-tools"> - <form action="<?php echo base_url() ?>emppaydate/emppayListing" method="POST" id="searchList"> - <div class="input-group"> - <input type="text" name="searchText" value="<?php echo $searchText; ?>" class="form-control input-sm pull-right" style="width: 150px;" placeholder="Search"/> - <div class="input-group-btn"> - <button class="btn btn-sm btn-default searchList"><i class="fa fa-search"></i></button> - </div> - </div> - </form> - </div> - </div><!-- /.box-header --> - <div class="box-body table-responsive no-padding" > - <table id="datatable" class="table table-hover tableSorter" > - <tr bgcolor="steelblue"> - <th>Pay Data ID</th> - <th>Employee ID</th> - <th>Basic Pay</th> - <th>HRA Rate</th> - <th>OT Rate</th> - <th>Allowances</th> - <th>PF Rate</th> - <th>ESI Rate</th> - <th>Food Allowances</th> - <th>Is Active</th> - - <th>Edit</th> - </tr> - - - <?php - if(!empty($userRecords)) - { - foreach($userRecords as $record) - { - ?> - <tr> - - <td><?php echo $record->Pay_Data_ID ?></td> - <td><?php echo $record->EmpID ?></td> - <td><?php echo $record->Basic_Pay ?></td> - <td><?php echo $record->HRA_Rate ?></td> - <td><?php echo $record->OT_Rate ?></td> - <td><?php echo $record->Allowances ?></td> - <td><?php echo $record->PF_Rate ?></td> - <td><?php echo $record->ESI_Rate ?></td> - <td><?php echo $record->Food_Allowances ?></td> - - <td><?php echo $record->is_Active ? 'Yes' : 'No'?></td> - - - - <td> - - <a href="<?php echo base_url().'emppaydate/editOldemppay/'.$record->Pay_Data_ID; ?>"><i class="btn btn-info">EDIT</i></a> - - </td> - </tr> - <?php - } - } - ?> - </table> - - </div><!-- /.box-body --> - <div class="box-footer clearfix"> - <?php echo $this->pagination->create_links(); ?> - </div> - </div><!-- /.box --> - </div> - </div> - </section> -</div> -<script type="text/javascript" src="<?php echo base_url(); ?>assets/js/common.js" charset="utf-8"></script> -<script type="text/javascript"> - jQuery(document).ready(function(){ - jQuery('ul.pagination li a').click(function (e) { - e.preventDefault(); - var link = jQuery(this).get(0).href; - var value = link.substring(link.lastIndexOf('/') + 1); - jQuery("#searchList").attr("action", baseURL + "emppayListings/" + value); - jQuery("#searchList").submit(); - }); - }); -</script> \ No newline at end of file diff --git a/application/views/forgotPassword.php b/application/views/forgotPassword.php deleted file mode 100644 index a37f8982..00000000 --- a/application/views/forgotPassword.php +++ /dev/null @@ -1,63 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="UTF-8"> - <title>CodeInsect | Admin System Log in</title> - <meta content='width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no' name='viewport'> - <link href="<?php echo base_url(); ?>assets/bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css" /> - <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" type="text/css" /> - <link href="<?php echo base_url(); ?>assets/dist/css/AdminLTE.min.css" rel="stylesheet" type="text/css" /> - - <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --> - <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> - <!--[if lt IE 9]> - <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> - <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> - <![endif]--> - </head> - <body class="login-page"> - <div class="login-box"> - <div class="login-logo"> - <a href="#"><b>Siddharth Industries</b><br>Admin System</a> - </div><!-- /.login-logo --> - <div class="login-box-body"> - <p class="login-box-msg">Forgot Password</p> - <?php $this->load->helper('form'); ?> - <div class="row"> - <div class="col-md-12"> - <?php echo validation_errors('<div class="alert alert-danger alert-dismissable">', ' <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button></div>'); ?> - </div> - </div> - <?php - $this->load->helper('form'); - $error = $this->session->flashdata('error'); - if($error) - { - ?> - <div class="alert alert-danger alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('error'); ?> - </div> - <?php } ?> - - <form action="<?php echo base_url(); ?>loginMe" method="post"> - <div class="form-group has-feedback"> - <input type="email" class="form-control" placeholder="Email" name="email" required /> - <span class="glyphicon glyphicon-envelope form-control-feedback"></span> - </div> - - <div class="row"> - <div class="col-xs-8"> - </div><!-- /.col --> - <div class="col-xs-4"> - <input type="submit" class="btn btn-primary btn-block btn-flat" value="Sign In" /> - </div><!-- /.col --> - </div> - </form> - </div><!-- /.login-box-body --> - </div><!-- /.login-box --> - - <script src="<?php echo base_url(); ?>assets/js/jQuery-2.1.4.min.js"></script> - <script src="<?php echo base_url(); ?>assets/bootstrap/js/bootstrap.min.js" type="text/javascript"></script> - </body> -</html> \ No newline at end of file diff --git a/application/views/importpo.php b/application/views/importpo.php deleted file mode 100644 index 2ba94cb6..00000000 --- a/application/views/importpo.php +++ /dev/null @@ -1,3519 +0,0 @@ -<?php -$AvlAmount = 0; -$ReqType =''; -$CompanyAddress = ''; -if(!empty($CompanyDetails)) -{ - foreach ($CompanyDetails as $Req) - { - $CompanyAddress = $Req->Address; - } -} - -$dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); -$CurrentDate = $dt->format('Y-m-d'); - -$MaxPoDate = ''; -if(!empty($MaxPODate)) -{ - foreach ($MaxPODate as $date) - { - $MaxPoDate = $date->PODate; - } -} - -if(!empty($AvlBudAmt)) -{ - - $AvlAmount = $AvlBudAmt; - -} -?> - -<style> - .modal -{ - padding-right:25% ! important; -} -.dataTables_paginate -{ - margin-top: -5%; -} -.dataTables_wrapper { - padding-bottom: 0px; -} -</style> - -<script src="<?php echo base_url(); ?>assets/js/CreatePOValidation.js" type="text/javascript"> - -</script> - - -<script> - $(document).ready(function(){ - - //Initialize Select2 Elements for currency type - $("#currencytype").select2(); - - var POMaxDate = '<?php echo $MaxPoDate;?>'; - var d = new Date(POMaxDate); - $("#PODate").datepicker({ - minDate : d, - maxDate : 'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true,yearRange: '-100:+0' - }); - $("#Deliverydt").datepicker({ - minDate : 'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true,yearRange: '0:+10' - }); - - }); -function openModal() -{ - if(vaildateBeforeOpenModal()) - { - $('#IMPORT').modal('show'); - } -} - -function vaildateBeforeOpenModal() -{ - if($('#PODate').val() == '') - { - alert('Please Enter the Purchase Order date'); - $('#PODate').focus(); - return false; - } - else if($('#drpSupplier').val() == "0") - { - alert('Please Select the Supplier details'); - $('#drpSupplier').focus(); - return false; - } - else if($('#DeliveryAddr').val() == '') - { - alert('Please Enter the Delivery Address'); - $('#DeliveryAddr').focus(); - return false; - } - else if($('#Deliverydt').val() == '' && $('#Scheduleby').val() == '') - { - alert('Please Enter the Delivery Date'); - $('#Deliverydt').focus(); - return false; - } - else if($('#currencytype').val() == '0') - { - alert('Please Select the Currency Type'); - $('#currencytype').focus(); - return false; - } - else if($('#ExchangeRate').val() == '') - { - alert('Please Enter the Exchange Rate'); - $('#ExchangeRate').focus(); - return false; - } - else - { - return true; - } -} -</script> - -<div class="content-wrapper"> - <?php - $attributes = array('class' => 'form-label-left ImportPO ','name' => 'ImportPO','id' => 'ImportPO'); - - echo form_open($this->config->base_url().'/purchaseorder/addPO/',$attributes); ?> - - - <section class="content"> - - <div style="border:2px solid #333"> - - - <center><b><h2>Siddharth Industries - Import Purchase Order</h2></b></center><br/> - - - - <div class="container-fluid"> - <div class="row"> - <div class="col-md-12"> - <div class="col-md-3"> - <div class="col-md-12"> - - <label>Requistion No</label> - <?php - - $options = array("0"=>'Selected Requisition Numbers'); - if(!empty($ReqList)) - { - foreach ($ReqList as $SID): - - // print_r($SID->ReqNo); - $options[$SID->ReqNo] = $SID->ReqNo ."-". $SID->ReqBy; - $ReqType = $SID->ReqType; - endforeach; - } - echo form_multiselect('RequistionNo', $options,set_value('RequistionNo'),'id="RequistionNo"' , 'required="true"'); - - ?> - </div> - <div class="col-md-12"> - <label>Currency Type</label> - - <?php - $options = array("0"=>'Select Currency Type'); - //print_r($Currency); - if(!empty($Currency)) - { //print_r($Currency); - foreach ($Currency as $CUR): - - - $options[$CUR->CurrencyCode] = $CUR->CurrencyCode.' '.' - '.' '.$CUR->CurrencyName; - - endforeach; - } - - echo form_dropdown('currencytype', $options,set_value('currencytype'),'id="currencytype"' ,'required="true"' ,'class="form-control select2'); - ?> - - </div> - <div class="col-md-12"> - <a href="http://www.xe.com/" target="_blank"><u>Click here to check Today's Foreign Exchange value</u></a> - </div> - - </div> - <div class="col-md-9"> - <div class="col-md-4"> - <div class="col-md-12"> - <label>Supplier</label> - - <?php - $options = array("0"=>'Select Supplier'); - //print_r( $options); - if(!empty($Suplist)) - { - foreach ($Suplist as $SID): - - - $options[$SID->SupplierID] = $SID->SupplierID.' '.' - '.' '.$SID->SupplierName; - - endforeach; - } - - echo form_dropdown('drpSupplier', $options,set_value('drpSupplier'),'id="drpSupplier"' ,'required="true"' ,'class="form-control select2'); - - ?> - - </div> - <div class="col-md-12"><br/> - <label>Address</label> - <div class="form-group"> - <?php - $data = array('name' => 'SupAddress','value' => set_value('SupAddress'),'id'=>'SupAddress', 'class' => 'form-control' ,'readonly' => 'true','rows' => '3', 'cols' => '40'); - echo Form_textarea($data); - ?> - </div> - </div> - <div class="col-md-12"> - <label>Exchange Rate </label> - <div class="form-group"> - <?php - $data = array('name' => 'ExchangeRate','value' => set_value('ExchangeRate'),'id'=>'ExchangeRate', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'USRate()'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-4"> - <div class="col-md-12"> - <label>Purchase Order Type</label> - <div class="form-group"> - - <?php - $data = array('name' => 'POType','value' => set_value('POType',IMPORT),'id'=>'POType', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-12"> - <label>Delivery Address</label> - <div class="form-group"> - <?php - $data = array('name' => 'DeliveryAddr','value' => set_value('DeliveryAddr',$CompanyAddress),'id'=>'DeliveryAddr', 'class' => 'form-control' ,'required' => 'true', 'rows' => '3', 'cols' => '40'); - echo Form_textarea($data); - ?> - </div> - </div> - <div class="col-md-12"> - <label>Purchase Order Date</label> - <div class="form-group"> - <?php - $data = array('name' => 'PODate','value' => set_value('PODate',$CurrentDate),'id'=>'PODate', 'class' => 'form-control' ,'required' => 'true', 'onkeypress'=>'return false;'); - echo form_input($data); - ?> - </div> - </div> - <!-- <div class="col-md-12"> - Basic value in INR : - <div class="form-group"> - <?php - $data = array('name' => 'INRBasicvalues','value' => set_value('INRBasicvalues'),'id'=>'INRBasicvalues', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div>--> - </div> - <div class="col-md-4"> - <div class="col-md-12"> - - <b><u>Select Delivery By</u></b><br/> - <tr> - <td> - <?php echo form_label('Date', 'Date') ."&nbsp;&nbsp;". form_radio(array("name"=>"DateRange", "id"=>"Date", "value"=>"0", 'checked'=>'checked')); ?>&nbsp;&nbsp;&nbsp;&nbsp;</td> - <td> - <?php echo form_label('Schedule', 'Schedule') ."&nbsp;&nbsp;". form_radio(array("name"=>"DateRange", "id"=>"Schedule", "value"=>"1")); ?> - - </td> - </tr> - </div> - - <div class="col-md-12" id="Schedulediv" style="display:none;"><br/> - <label >Schedule :</label> - - <?php - $data = array('name' => 'Scheduleby','value' => set_value('Scheduleby'),'id'=>'Scheduleby', 'class' => 'form-control' ,'required' => 'true' ,'rows' => '3', 'cols' => '40'); - echo Form_textarea($data); - ?> - - </div> - <div class="col-md-12" id="Deliverydtdiv"> - <label>Delivery Date</label> - - <?php - $data = array('name' => 'Deliverydt','value' => set_value('Deliverydt'),'id'=>'Deliverydt', 'class' => 'form-control' ,'required' => 'true'); - echo form_input($data); - ?> - - </div> - - - </div> - - </div> - </div> - </div> - - - <div class=""> - <table class="table table-bordered" style="border:1px solid #333"> - <div align="right" style="padding-right:10px"> -<div align="right"> -<a data-toggle="modal" class="btn btn-primary" data-dismiss="modal" onclick="openModal();" >Add Line Item </a> - - - - - <!--<a data-toggle="modal"><button type="submit" onclick="myFunction();" class="btn btn-primary" id="abcd" >Select Line Item</button> </a>--> - - - <!-- <div class="modal fade" id="IMPORT" role="dialog">--> - - <div id="IMPORT" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> - <div class="modal-dialog"> - <!-- Modal content--> - <form> - <div class="modal-content" style="width:900px;"> - <div class="modal-header" style="background-color: #3c8dbc;color:#fff;"> - <button type="button" class="close" data-dismiss="modal">&times;</button> - <center><h4>Add Import Purchase Order Item </h4></center> - </div> - <div align="left"> - - <div class="col-md-12"> - <div class="col-md-3"> - <label>Req No</label> - <div> - <?php - $options = array("0"=>'Req No'); - //echo form_dropdown('ImportMaterialCode', $options,set_value('ImportMaterialCode'),'id="ImportMaterialCode"' ,'class="form-control required"'); - $RL = array("0"=>'Select Req No'); - if(!empty($RequistionDetails)) - { - foreach ($RequistionDetails as $SID): - $RL[$SID->ReqNo] = $SID->ReqNo.' '.' - '.' '.$SID->DepartmentName; - endforeach; - } - - echo form_dropdown('ReqNo', $RL,set_value('ReqNo'),'id="ReqNo"' ,'class="form-control"'); - - ?> - </div> - </div> - - <div class="col-md-3"> - <label>Department Name</label> - <div class="form-group"> - <?php - //$data = array('name' => 'ImportDepartmentName','value' => set_value('ImportDepartmentName'),'id'=>'ImportDepartmentName', 'class' => 'form-control' ,'readonly' => 'true'); - $data = array('name' => 'deptName','value' => set_value('deptName'),'id'=>'deptName', 'class' => 'form-control','readonly'=>'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-3"> - <label>Cost Center Name</label> - <div class="form-group"> - <?php - //$options = array("0"=>'Select Cost Center'); - - //echo form_dropdown('CostCenter', $options,set_value('CostCenter'),'id="CostCenter"' ,'class="form-control"'); - - $data = array('name' => 'CostCenter','value' => set_value('CostCenter'),'id'=>'CostCenter', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - - ?> - </div> - </div> - <div class="col-md-3"> - <label>Available Budget Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'AvlBudAmt','value' => set_value('AvlBudAmt'),'id'=>'AvlBudAmt', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-2"> - <label>Item Code</label> - - <!--In this item code the value should come from DB , so it getting error , so i am disabling this div , once get the data from DB uncommand this div--> - <div> - <?php - - $options = array("0"=>'Item Code'); - //print_r( $options); - - echo form_dropdown('MaterialCode', $options,set_value('MaterialCode'),'id="MaterialCode"' ,'class="form-control"'); - - ?> - </div> - - </div> - - <div class="col-md-2"> - <label>Item Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'ItemName','value' => set_value('ItemName'),'id'=>'ItemName', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>UOM</label> - <div class="form-group"> - <?php - $data = array('name' => 'UOM','value' => set_value('UOM'),'id'=>'UOM', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Quantity</label> - <div class="form-group"> - <?php - $data = array('name' => 'Quantity','value' => set_value('Quantity'),'id'=>'Quantity', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'Ratechange(),ExceedQuantityCheck()'); - echo form_input($data); - - ?> - </div> - </div> - <div class="col-md-2"> - <label>Rate </label> - <div class="form-group"> - <?php - $data = array('name' => 'Rate','value' => set_value('Rate'),'id'=>'Rate', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);' ,'onchange'=>'Ratechange()' ); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Basic Amount </label> - <div class="form-group"> - <?php - //$data = array('name' => 'imTotalAmount','value' => set_value('imTotalAmount'),'id'=>'imTotalAmount', 'class' => 'form-control' ,'readonly' => 'true'); - - $data = array('name' => 'txtBasicValue','value' => set_value('txtBasicValue'),'id'=>'txtBasicValue', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - - <div class="col-md-3"> - - Basic Price in US $ per Ton : - - - <div class="form-group"> - <?php - $data = array('name' => 'imBasicPrice','value' => set_value('imBasicPrice'),'id'=>'imBasicPrice', 'class' => 'form-control' ,'placeholder '=>'basic price','onkeypress'=>'return isNumberKey(event);','onchange'=>'USRate()'); - echo form_input($data); - ?> - </div> - </div> - - <div class="col-md-3"> - - Exchange Rate : - - - <div class="form-group"> - <?php - $data = array('name' => 'ExchangeRt','value' => set_value('ExchangeRt'),'id'=>'ExchangeRt', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','readonly'=>'true'); - echo form_input($data); - ?> - </div> - - </div> - - <div class="col-md-3"> - - Basic value in INR : - - - - <div class="form-group"> - <?php - $data = array('name' => 'INRBasicvalue','value' => set_value('INRBasicvalue'),'id'=>'INRBasicvalue', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <!--<div class="col-md-3"> - <a href="http://www.xe.com/" target="_blank"><u>Click nere to check Today's Foreign Exchange value</u></a> - </div>--> - - <div class="col-md-12" style="border:1px solid #000;padding:0px;"> - <br/> - <div class="col-md-6" style="padding:0px;"> - <div class="col-md-12"> - <div class="col-md-4" > - Basic Price: - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'BasicPriceTax','value' => set_value('BasicPriceTax'),'id'=>'BasicPriceTax', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterBasicPriceTax','value' => set_value('AfterBasicPriceTax'),'id'=>'AfterBasicPriceTax', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Landing charge - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'LandingCharge','value' => set_value('LandingCharge'),'id'=>'LandingCharge', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'Calculateloadingcharge()'); - echo form_input($data); - - - - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterLandingCharge','value' => set_value('AfterLandingCharge'),'id'=>'AfterLandingCharge', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - High seas sales charge - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'Highseas ','value' => set_value('Highseas'),'id'=>'Highseas', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'CalculateHighseassalescharge()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterHighseas','value' => set_value('AfterHighseas'),'id'=>'AfterHighseas', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Custom duty : (a) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'Customduty','value' => set_value('Customduty'),'id'=>'Customduty', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'CalculateCustomduty()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterCustomduty','value' => set_value('AfterCustomduty'),'id'=>'AfterCustomduty', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Excise duty : (b) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'ExcisedutyTax','value' => set_value('ExcisedutyTax'),'id'=>'ExcisedutyTax', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'CalculateExciseDuty()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterExcisedutyTax','value' => set_value('AfterExcisedutyTax'),'id'=>'AfterExcisedutyTax', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Excise duty ED_cess : (C) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'ExcisedutyEDcess','value' => set_value('ExcisedutyEDcess'),'id'=>'ExcisedutyEDcess', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'CalculateExciseED1()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterExcisedutyEDcess','value' => set_value('AfterExcisedutyEDcess'),'id'=>'AfterExcisedutyEDcess', 'class' => 'form-control','readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Excise duty S & H cess :(d) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'ExcisedutySHcess','value' => set_value('ExcisedutySHcess'),'id'=>'ExcisedutySHcess', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'CalculateexciseSHcess()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterExcisedutySHcess','value' => set_value('AfterExcisedutySHcess'),'id'=>'AfterExcisedutySHcess', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Custom ED_cess : (e) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'CustomEDcess','value' => set_value('CustomEDcess'),'id'=>'CustomEDcess', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'CalculateCustomEdcess()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterCustomEDcess','value' => set_value('AfterCustomEDcess'),'id'=>'AfterCustomEDcess', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Custom S & H cess : (f) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'CustomSHcess','value' => set_value('CustomSHcess'),'id'=>'CustomSHcess', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'CalculateCustomSHcess()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterCustomSHcess','value' => set_value('AfterCustomSHcess'),'id'=>'AfterCustomSHcess', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - </div> - <div class="col-md-6" style="padding:0px;"> - <div class="col-md-12"> - <div class="col-md-4"> - Additional Excise duty : (g) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AdditionalExciseduty ','value' => set_value('AdditionalExciseduty'),'id'=>'AdditionalExciseduty', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'CalculateaddlExciseDuty(),CalculateAvlModvat(),CalculateGrossExpense()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterAdditionalExciseduty','value' => set_value('AfterAdditionalExciseduty'),'id'=>'AfterAdditionalExciseduty', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-8"> - Gross duty payable - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'Grossdutypayable ','value' => set_value('Grossdutypayable'),'id'=>'Grossdutypayable', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','readonly'=>'true','onchange'=>'CalculateAvlModvat()'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-8"> - Available Modvat set-off on import : - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'AvailableModvat','value' => set_value('AvailableModvat'),'id'=>'AvailableModvat', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> (b + c + d + g) - </div> - </div> - - </div> - <div class="col-md-12"> - - <div class="col-md-8"> - Gross expenses due to custom duty: - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'Grossexpenses','value' => set_value('Grossexpenses'),'id'=>'Grossexpenses', 'class' => 'form-control' ,'readonly'=>'true','onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - </div> - - <div class="col-md-12"> - <center> <label>Cost of the product Per KG</label></center> - <hr/> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - purchase rate [Basic] - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'purchaserate','value' => set_value('purchaserate'),'id'=>'purchaserate', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','readonly'=>'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4" style="margin-top: -4.8%"> - <span>Quantity</span> - <div class="form-group"> - <?php - $data = array('name' => 'PurQuantity','value' => set_value('PurQuantity'),'id'=>'PurQuantity', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'CalculateCtable()'); - echo form_input($data); - ?> - </div> - </div> - - </div> - <div class="col-md-12"> - - <div class="col-md-4"> - Custom Duty Expenses - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'CustomDutyExpenses ','value' => set_value('CustomDutyExpenses'),'id'=>'CustomDutyExpenses', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','readonly'=>'true'); - echo form_input($data); - ?> - </div> - </div> - - </div> - <div class="col-md-12"> - <div class="col-md-4"> - RMC Including Customers - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'RMCIncludingCustomers','value' => set_value('RMCIncludingCustomers'),'id'=>'RMCIncludingCustomers', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','readonly'=>'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - Total Amount: - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'TotalExp','value' => set_value('TotalExp'),'id'=>'TotalExp', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','readonly'=>'true'); - echo form_input($data); - ?> - </div> - </div> - - </div> - - - </div> - </div> - </div> - - </div> - <div class="modal-footer"> - <a class="btn btn-info font AddImport" ID="AddImport" ><i class="fa fa-plus"></i>&nbsp;&nbsp;<span class="bold">Add Import</span></a> - <!--<a class="btn btn-primary font AddService" ID="AddService" ><i class="fa fa-plus"></i>&nbsp;&nbsp;<span class="bold">Add Service</span></a>--> - - <a class="btn btn-info" data-dismiss="modal" value="Cancel">Cancel</a> - - </div> - </div> - </form> - - </div> - </div> - </div> -</div> - - - -<!--Edit modal body--> - - <div id="editimportpomodel" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> - <div class="modal-dialog"> - <!-- Modal content--> - <form> - <div class="modal-content" style="width:900px;"> - <div class="modal-header" style="background-color: #3c8dbc;color:#fff;"> - <button type="button" class="close" data-dismiss="modal">&times;</button> - <center><h4>Edit Import Purchase Order Item </h4></center> - </div> - <div align="left"> - - <div class="col-md-12"> - <div class="col-md-3"> - <label>Req No</label> - <div> - <?php - - $data = array('name' => 'EditReqNo','value' => set_value('EditReqNo'),'id'=>'EditReqNo', 'class' => 'form-control','readonly'=>'true'); - echo form_input($data);?> - </div> - </div> - - <div class="col-md-3"> - <label>Department Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditdeptName','value' => set_value('EditdeptName'),'id'=>'EditdeptName', 'class' => 'form-control','readonly'=>'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-3"> - <label>Cost Center Name</label> - <div class="form-group"> - <?php - $options = array("0"=>'Select Cost Center'); - - //echo form_dropdown('EditCostCenter', $options,set_value('EditCostCenter'),'id="EditCostCenter"' ,'class="form-control"'); - - $data = array('name' => 'EditCostCenter','value' => set_value('EditCostCenter'),'id'=>'EditCostCenter', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - - ?> - </div> - </div> - <div class="col-md-3"> - <label>Available Budget Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditAvlBudAmt','value' => set_value('EditAvlBudAmt'),'id'=>'EditAvlBudAmt', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-2"> - <label>Item Code</label> - - <!--In this item code the value should come from DB , so it getting error , so i am disabling this div , once get the data from DB uncommand this div--> - <div> - <?php - // $options = array("0"=>'Item Code'); - - //if(!empty($MaterialList)) - //{ - // foreach ($MaterialList as $SID): - - - // $options[$SID->MaterialCode] = $SID->MaterialCode.' '.' - '.' '.$SID->MaterialName; - - //endforeach; - //} - - //echo form_dropdown('ImportMaterialCode', $options,set_value('ImportMaterialCode'),'id="ImportMaterialCode"' ,'class="form-control"'); - - $options = array("0"=>'Item Code'); - //print_r( $options); - - - - echo form_dropdown('EditMaterialCode', $options,set_value('EditMaterialCode'),'id="EditMaterialCode"' ,'class="form-control"'); - - ?> - </div> - - </div> - - <div class="col-md-2"> - <label>Item Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditItemName','value' => set_value('EditItemName'),'id'=>'EditItemName', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>UOM</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditUOM','value' => set_value('EditUOM'),'id'=>'EditUOM', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Quantity</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditQuantity','value' => set_value('EditQuantity'),'id'=>'EditQuantity', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'Ratechange(),ExceedEditQuantityCheck()'); - echo form_input($data); - - ?> - </div> - </div> - <div class="col-md-2"> - <label>Rate </label> - <div class="form-group"> - <?php - $data = array('name' => 'EditRate','value' => set_value('EditRate'),'id'=>'EditRate', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);' ,'onchange'=>'Ratechange()' ); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Basic Amount </label> - <div class="form-group"> - <?php - //$data = array('name' => 'imTotalAmount','value' => set_value('imTotalAmount'),'id'=>'imTotalAmount', 'class' => 'form-control' ,'readonly' => 'true'); - - $data = array('name' => 'EdittxtBasicValue','value' => set_value('EdittxtBasicValue'),'id'=>'EdittxtBasicValue', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - - <div class="col-md-3"> - - Basic Price in US $ per Ton : - - - <div class="form-group"> - <?php - $data = array('name' => 'EditimBasicPrice','value' => set_value('EditimBasicPrice'),'id'=>'EditimBasicPrice', 'class' => 'form-control' ,'placeholder '=>'basic price','onkeypress'=>'return isNumberKey(event);','readonly'=>'true'); - echo form_input($data); - ?> - </div> - </div> - - <div class="col-md-3"> - - Exchange Rate : - - - <div class="form-group"> - <?php - $data = array('name' => 'EditExchangeRt','value' => set_value('EditExchangeRt'),'id'=>'EditExchangeRt', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','readonly'=>'true'); - echo form_input($data); - ?> - </div> - - </div> - - <div class="col-md-3"> - - Basic value in INR : - - - - <div class="form-group"> - <?php - $data = array('name' => 'EditINRBasicvalue','value' => set_value('EditINRBasicvalue'),'id'=>'EditINRBasicvalue', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <!--<div class="col-md-3"> - <a href="http://www.xe.com/" target="_blank"><u>Click nere to check Today's Foreign Exchange value</u></a> - </div>--> - - <div class="col-md-12" style="border:1px solid #000;padding:0px;"> - <br/> - <div class="col-md-6" style="padding:0px;"> - <div class="col-md-12"> - <div class="col-md-4" > - Basic Price: - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditBasicPriceTax','value' => set_value('EditBasicPriceTax'),'id'=>'EditBasicPriceTax', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAfterBasicPriceTax','value' => set_value('EditAfterBasicPriceTax'),'id'=>'EditAfterBasicPriceTax', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Landing charge - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditLandingCharge','value' => set_value('EditLandingCharge'),'id'=>'EditLandingCharge', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'EditCalculateloadingcharge()'); - echo form_input($data); - - - - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAfterLandingCharge','value' => set_value('EditAfterLandingCharge'),'id'=>'EditAfterLandingCharge', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - High seas sales charge - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditHighseas ','value' => set_value('EditHighseas'),'id'=>'EditHighseas', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'EditCalculateHighseassalescharge()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAfterHighseas','value' => set_value('EditAfterHighseas'),'id'=>'EditAfterHighseas', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Custom duty : (a) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditCustomduty','value' => set_value('EditCustomduty'),'id'=>'EditCustomduty', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'EditCalculateCustomduty()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAfterCustomduty','value' => set_value('EditAfterCustomduty'),'id'=>'EditAfterCustomduty', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Excise duty : (b) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditExcisedutyTax','value' => set_value('EditExcisedutyTax'),'id'=>'EditExcisedutyTax', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'EditCalculateExciseDuty()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAfterExcisedutyTax','value' => set_value('EditAfterExcisedutyTax'),'id'=>'EditAfterExcisedutyTax', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Excise duty ED_cess : (C) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditExcisedutyEDcess','value' => set_value('EditExcisedutyEDcess'),'id'=>'EditExcisedutyEDcess', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'EditCalculateExciseED1()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAfterExcisedutyEDcess','value' => set_value('EditAfterExcisedutyEDcess'),'id'=>'EditAfterExcisedutyEDcess', 'class' => 'form-control','readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Excise duty S & H cess :(d) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditExcisedutySHcess','value' => set_value('EditExcisedutySHcess'),'id'=>'EditExcisedutySHcess', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'EditCalculateexciseSHcess()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAfterExcisedutySHcess','value' => set_value('EditAfterExcisedutySHcess'),'id'=>'EditAfterExcisedutySHcess', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Custom ED_cess : (e) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditCustomEDcess','value' => set_value('EditCustomEDcess'),'id'=>'EditCustomEDcess', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'EditCalculateCustomEdcess()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAfterCustomEDcess','value' => set_value('EditAfterCustomEDcess'),'id'=>'EditAfterCustomEDcess', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Custom S & H cess : (f) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditCustomSHcess','value' => set_value('EditCustomSHcess'),'id'=>'EditCustomSHcess', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'EditCalculateCustomSHcess()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAfterCustomSHcess','value' => set_value('EditAfterCustomSHcess'),'id'=>'EditAfterCustomSHcess', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - </div> - <div class="col-md-6" style="padding:0px;"> - <div class="col-md-12"> - <div class="col-md-4"> - Additional Excise duty : (g) - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAdditionalExciseduty ','value' => set_value('EditAdditionalExciseduty'),'id'=>'EditAdditionalExciseduty', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'EditCalculateaddlExciseDuty(),EditCalculateAvlModvat(),EditCalculateGrossExpense()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAfterAdditionalExciseduty','value' => set_value('EditAfterAdditionalExciseduty'),'id'=>'EditAfterAdditionalExciseduty', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-8"> - Gross duty payable - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditGrossdutypayable ','value' => set_value('EditGrossdutypayable'),'id'=>'EditGrossdutypayable', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-8"> - Available Modvat set-off on import : - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAvailableModvat','value' => set_value('EditAvailableModvat'),'id'=>'EditAvailableModvat', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> (b + c + d + g) - </div> - </div> - - </div> - <div class="col-md-12"> - - <div class="col-md-8"> - Gross expenses due to custom duty: - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditGrossexpenses','value' => set_value('EditGrossexpenses'),'id'=>'EditGrossexpenses', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - </div> - - <div class="col-md-12"> - <center> <label>Cost of the product Per KG</label></center> - <hr/> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - purchase rate [Basic] - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'Editpurchaserate','value' => set_value('Editpurchaserate'),'id'=>'Editpurchaserate', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','readonly'=>'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4" style="margin-top: -4.8%"> - <span>Quantity</span> - <div class="form-group"> - <?php - $data = array('name' => 'EditPurQuantity','value' => set_value('EditPurQuantity'),'id'=>'EditPurQuantity', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'EditCalculateCtable()'); - echo form_input($data); - ?> - </div> - </div> - - </div> - <div class="col-md-12"> - - <div class="col-md-4"> - Custom Duty Expenses - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditCustomDutyExpenses ','value' => set_value('EditCustomDutyExpenses'),'id'=>'EditCustomDutyExpenses', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','readonly'=>'true'); - echo form_input($data); - ?> - </div> - </div> - - </div> - <div class="col-md-12"> - <div class="col-md-4"> - RMC Including Customers - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditRMCIncludingCustomers','value' => set_value('EditRMCIncludingCustomers'),'id'=>'EditRMCIncludingCustomers', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','readonly'=>'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - Total Amount: - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'EditTotalExp','value' => set_value('EditTotalExp'),'id'=>'EditTotalExp', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','readonly'=>'true'); - echo form_input($data); - ?> - </div> - </div> - - </div> - - - </div> - </div> - </div> - - </div> - <div class="modal-footer"> - <a class="btn btn-info font EditImport" ID="EditImport" ><i class="fa fa-plus" ></i>&nbsp;&nbsp;<span class="bold">Edit Import</span></a> - <!--<a class="btn btn-primary font AddService" ID="AddService" ><i class="fa fa-plus"></i>&nbsp;&nbsp;<span class="bold">Add Service</span></a>--> - - <a class="btn btn-info" data-dismiss="modal" value="Cancel">Cancel</a> - - </div> - </div> - </form> - - </div> - </div> - </div> - - - - - - - <br/> - <div class="box-body" style="margin-top: -3%;"> - <table id="ImportTax" class="table table-bordered table-hover" style="background-color:#fff;font-size:12px;"> - <thead style="background-color:#ddf"> - <tr> - <th>SNo</th> - <th>Requisition No</th> - <th>Item Name</th> - <th>Quantity</th> - <th>UOM</th> - <th>Rate</th> - <th>Basic Amount</th> - <th>Tax Amount</th> - <th>Total Order Amount</th> - <th>Action</th> - </tr> - </thead> - - <tbody id='ImportAppend'> - - </tbody> - </table> - </div> - - <div class="col-md-12" style="border: 1px solid;"> - - <div class="col-md-12"> - <div class="col-md-4"> - <label >Total Landing Charge :</label> - - <?php - $data = array('name' => 'txttotallanding','value' => set_value('txttotallanding'),'id'=>'txttotallanding', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - <div class="col-md-4"> - <label >Total High seas sales Charge :</label> - - <?php - $data = array('name' => 'txttotalhighseas','value' => set_value('txttotalhighseas'),'id'=>'txttotalhighseas', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - <div class="col-md-4"> - <label >Total Custom Duty Charge :</label> - - <?php - $data = array('name' => 'txttotalcustom','value' => set_value('txttotalcustom'),'id'=>'txttotalcustom', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - <div class="col-md-4"> - <label >Total Excise duty Charge :</label> - - <?php - $data = array('name' => 'txttotalexcise','value' => set_value('txttotalexcise'),'id'=>'txttotalexcise', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - <div class="col-md-4"> - <label >Total Excise duty ED_cess Charge :</label> - - <?php - $data = array('name' => 'txttotalexciseED','value' => set_value('txttotalexciseED'),'id'=>'txttotalexciseED', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - - <div class="col-md-4"> - <label >Total Excise duty S & H cess Charge :</label> - - <?php - $data = array('name' => 'txttotalexciseSH','value' => set_value('txttotalexciseSH'),'id'=>'txttotalexciseSH', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - <div class="col-md-4"> - <label >Total Custom ED_cess Charge :</label> - - <?php - $data = array('name' => 'txttotalcustomED','value' => set_value('txttotalcustomED'),'id'=>'txttotalcustomED', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - <div class="col-md-4"> - <label >Total Custom S & H cess Charge :</label> - - <?php - $data = array('name' => 'txttotalcustomSH','value' => set_value('txttotalcustomSH'),'id'=>'txttotalcustomSH', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - <div class="col-md-4"> - <label >Total Additional Excise duty Charge :</label> - - <?php - $data = array('name' => 'txttotalAdditionalExciseduty','value' => set_value('txttotalAdditionalExciseduty'),'id'=>'txttotalAdditionalExciseduty', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - - <div class="col-md-4"> - <label >Total Gross duty payable Charge :</label> - - <?php - $data = array('name' => 'txttotalgrossduty','value' => set_value('txttotalgrossduty'),'id'=>'txttotalgrossduty', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - <div class="col-md-4"> - <label >Total Available Modvat set-off on import Charge :</label> - - <?php - $data = array('name' => 'txttotalavlmodvat','value' => set_value('txttotalavlmodvat'),'id'=>'txttotalavlmodvat', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - - <div class="col-md-4"> - <label >Total Gross expenses due to custom duty Charge :</label> - - <?php - $data = array('name' => 'txttotalgrossexpense','value' => set_value('txttotalgrossexpense'),'id'=>'txttotalgrossexpense', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - - - - <div class="col-md-4"> - <label>Total Order Value :</label> <?php - $data = array('name' => 'txtToatlOrder','value' => set_value('txtToatlOrder'),'id'=>'txtToatlOrder', 'class' => 'form-control' ,'required' => 'true','readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - - - - <div class="col-md-12"> - <div class="col-md-12"> - <label>Comments for Special Instructions :</label> <?php - $data = array('name' => 'txtSpcialInstruction','value' => set_value('txtSpcialInstruction'),'id'=>'txtSpcialInstruction', 'class' => 'form-control','rows' => '3', 'cols' => '40' ); - echo form_textarea($data); - ?> - </div> - </div> - <div align="right" style="padding-right:10px"> - -<div class="col-md-3 col-md-offset-9"><br/> - <input type="hidden" name="txtPoRange" id="txtPoRange" /> - <input type="hidden" name="isEdit" id="isEdit" value="0" /> - <input type="hidden" name="txtStatus" id="txtStatus" /> - <input type="hidden" name="txtRowCount" id="txtRowCount" /> - <input type="hidden" name="txtDeletedRow" id="txtDeletedRow" /> - <a class="btn btn-primary Save" ID="Save" onclick="Save(0)" >&nbsp;&nbsp;<span class="bold">Save</span></a> - <a class="btn btn-primary Submit" ID="Submit" onclick="Save(1)" >&nbsp;&nbsp;<span class="bold">Submit</span></a> - <input type="reset" class="btn btn-primary" value="Reset"> - - </div> - <br/> - </div> - </div> - - </div> - </div> - </section> -</div> - -<script type="text/html" id="ImportList"> -<tr id="<%=index%>"> -<td align="left"><%=index%></td> - <td align="left"><%=ReqNo%></td> - - <td align="left"><%=ItemName%></td> - <td align="left"><%=Quantity%></td> - <td align="left"><%=UOM%></td> - <td align="left"><%=Rate%></td> - <td align="left"><%=BasicAmount%></td> - <td align="left"><%=Taxvalue%></td> - <td align="left"><%=TotalValue%></td> - - <td> - <a data-target='#editimportpomodel' data-id="<%=index%>" data-userid="<%=index%>" data-toggle="modal" href="#editimportpomodel"><i class="fa fa-pencil" data-toggle="tooltip" title="Click here to view/Edit the <%=ReqNo%> Requisition details"></i>&nbsp;&nbsp;&nbsp;</a> <a href='#' onclick = "DeleteRow(<%=index%>)" class="link" data-id="<%=index%>" data-userid="<%=index%>" id="Del" ><span class="glyphicon glyphicon-trash"></span></a> - - - </td> -</tr> -</script> - - -<script type="text/javascript"> -// for delivey date and scheduled -$(document).ready(function () { - $('#Date').click(function () { - //for Date range selection - $('#Schedulediv').hide(); - $('#Deliverydtdiv').show(); - }); - $('#Schedule').click(function () { - //for schedule range selection - $('#Deliverydtdiv').hide(); - $('#Schedulediv').show(); - }); - }); - -var SelectedMaterialCode = []; -var RequistQuantity = ''; -var AvilBudAmt = ''; - var CollIndex = 0; -var index='1'; -var userid = ''; -var NilType = '<?php echo NILTYPE;?>'; - var PercentageType = '<?php echo PERCENTAGE;?>'; - var IsEdit = '0'; - var SelectedMaterialList = { - Mat: [] -}; - -$('#drpSupplier').change(function() { - - var id = $('#drpSupplier').val(); - - $("#SupAddress").val(''); - - if(id != '0') - { - var y = <?php echo json_encode($Suplist, JSON_PRETTY_PRINT) ?>; - - - $.each(y, function(idx, obj) { - if(obj.SupplierID === id) - { - $("#SupAddress").val(obj.Address); - - } - - }); - } - else - { - alert('Please select the SupplierID'); - return false; - } - -}); - - -$('#currencytype').change(function(){ - $('#ExchangeRate').val(''); -}); - - -$('#ReqNo').change(function() { - - var id = $('#ReqNo').val(); - $("#AvlBudAmt").val(''); - $("#CostCenter").empty(); - $("#MaterialCode").empty(); - $("#deptName").val(''); - $("#UOM").val(''); -$("#Quantity").val(''); -$("#ItemName").val(''); -$("#Rate").val(''); -$("#txtBasicValue").val(''); - //clearTaxField(); - if(id != '0') - { - var y = <?php echo json_encode($RequistionDetails, JSON_PRETTY_PRINT) ?>; - - var Material = <?php echo json_encode($MaterialList, JSON_PRETTY_PRINT) ?>; - var AvlBudAmt = '<?php echo $AvlAmount ?>'; - //alert(Material); - - // For Binding DepartmentName - $.each(y, function(idx, obj) { - if(obj.ReqNo === id) - { - $("#deptName").val(obj.DepartmentName); - $("#CostCenter").val(obj.CostCenterCode); - - } - }); - $("#AvlBudAmt").val(AvlBudAmt); - // For Binding Cost center for the selected department - /* $("#CostCenter").append( $('<option></option>').val("0").html("Select Cost Center") ); - $.each(cost, function(idx, obj) { - if(obj.ReqNo === id) - { - $("#CostCenter").append( $('<option></option>').val(obj.CostCenterCode).html(obj.CostCenterCode + "-" + obj.CostCenterName) ); - - } - - });*/ - // For Binding Material list center for the selected Requistion Number - $("#MaterialCode").append( $('<option></option>').val("0").html("Select Material Code") ); - var isAdded = "0"; - for(i=0;i<Material.length;i++) - { - $.each(Material[i], function(idx, obj) { - - if(obj.ReqNo === id ) - { - - $.each(SelectedMaterialList.Mat, function(idx1, el){ - if (id == el.ReqNo ) - { - - if(el.materialCode == obj.MaterialCode) - { - isAdded = "1"; - return false; - } - else - { - isAdded = "0"; - } - - } - }); - - - if(isAdded == "0") - { - - $("#MaterialCode").append( $('<option></option>').val(obj.MaterialCode).html(obj.MaterialCode + "-" + obj.MaterialName)); - } - - } - - - }); - } - } - else - { - alert('Please select the Requisition Number'); - return false; - } - id = ''; - -}); - - - -$('#MaterialCode').change(function() { - - var id = $('#MaterialCode').val(); - $("#ItemName").val(''); -$("#UOM").val(''); -$("#Quantity").val(''); -$("#ItemName").val(''); -$("#Rate").val(''); -$("#txtBasicValue").val(''); - RequistQuantity = ''; - //clearTaxField(); - if(id != '0') - { - var Material = <?php echo json_encode($MaterialList, JSON_PRETTY_PRINT) ?>; - - for(i=0;i<Material.length;i++) - { - $.each(Material[i], function(idx, obj) { - if(obj.MaterialCode === id) - { - $("#ItemName").val(obj.MaterialName); - $("#UOM").val(obj.UOM); - $("#Quantity").val(obj.Quantity); - RequistQuantity = obj.Quantity; - } - }); - } - } - else - { - alert('Please select the MaterialCode'); - return false; - } - -}); - -function USRate() -{ - - if($('#imBasicPrice').val() != '' && $('#ExchangeRate').val() != '') - { - var txtbasics=parseFloat($('#imBasicPrice').val()); - var txtexchangerate=parseFloat($('#ExchangeRate').val()); - $('#ExchangeRt').val(txtexchangerate); - var txtINRvalue=txtbasics*txtexchangerate; - $('#INRBasicvalues').val(txtINRvalue) - $('#INRBasicvalue').val(txtINRvalue); - $('#BasicPriceTax').val(txtINRvalue); - //txtINR = Math.ceil(txtINR*10)/10; - txtINR = Math.round(txtINRvalue); - //alert(txtINR);BasicPriceTax - - $('#AfterBasicPriceTax').val(txtINR); - $('#imBasicPrice').val(txtbasics); - $('#ExchangeRt').val(txtexchangerate); - $('#EditAfterBasicPriceTax').val(txtINR); - $('#EditimBasicPrice').val(txtbasics); - $('#EditExchangeRt').val(txtexchangerate); - $('#EditINRBasicvalue').val(txtINRvalue); - - - } -} - - - -function Ratechange(){ - //alert(); - if($('#ReqNo').val() == "0") - { - alert('Please select the Requisition Number'); - $('#ReqNo').focus(); - return false; - } - else if($('#MaterialCode').val() == "0") - { - alert('Please select the Material Code'); - $('#MaterialCode').focus(); - return false; - } - else if($('#CostCenter').val() == "0") - { - alert('Please select the CostCenterCode'); - $('#CostCenter').focus(); - return false; - } - - //ExceedQuantityCheck(); - - if($('#Quantity').val() != '' && $('#Rate').val() != '') - { - var txtQuantity = parseFloat( $('#Quantity').val()); - var txtUnitPrice = parseFloat($('#Rate').val()); - var Tot = txtQuantity * txtUnitPrice - $('#txtBasicValue').val(Tot); - } -} - -function validateEditExceedLimit() - { - var avalbudAmt = parseFloat($('#EditAvlBudAmt').val()); - var basicAmountRate = parseFloat($('#txtEditBasicValue').val()); - var totalAmount = parseFloat($('#EditTotalExp').val()); - - if(basicAmountRate > avalbudAmt || totalAmount > avalbudAmt) - { - alert('Basic amount is exceeding the Budget Limit.Please adjust the product value.'); - $('#EditRate').focus(); - return false; - } - else - { - return true; - } - - } - -function Calculateloadingcharge() - { - //alert(); -$('#AfterHighseas').val(''); -$('#AfterCustomduty').val(''); -$('#AfterExcisedutyTax').val(''); -$('#AfterExcisedutyEDcess').val(''); -$('#AfterExcisedutySHcess').val(''); -$('#AfterCustomEDcess').val(''); -$('#AfterCustomSHcess').val(''); -$('#AfterAdditionalExciseduty').val(''); -$('#Grossdutypayable').val(''); -$('#AvailableModvat').val(''); -$('#Grossexpenses').val(''); -$('#purchaserate').val(''); -$('#CustomDutyExpenses').val(''); -$('#RMCIncludingCustomers').val(''); -$('#TotalExp').val(''); - - var txtlanding=0; - var txtbasicprice=0; - txtlanding=parseFloat($('#LandingCharge').val()); - txtbasicprice=parseFloat($('#AfterBasicPriceTax').val()); - - //var result=(txtlanding*txtbasicprice/100); - var result= <?php echo LOADING_CHARGE;?>; - - //$('#AfterLandingCharge').val(parseFloat(Math.round(result))); - $('#AfterLandingCharge').val(parseFloat(result).toFixed(2)); - CalculateHighseassalescharge(); - - //alert(); - } - - - function EditCalculateloadingcharge() - { - //alert(); - var txtlanding=0; - var txtbasicprice=0; - - - txtlanding=parseFloat($('#EditLandingCharge').val()); - txtbasicprice=parseFloat($('#EditAfterBasicPriceTax').val()); - //var result=(txtlanding*txtbasicprice/100); - var result= <?php echo LOADING_CHARGE;?>; - $('#EditAfterLandingCharge').val(parseFloat(Math.round(result))); - EditCalculateHighseassalescharge(); - //alert(); - } - - - function CalculateHighseassalescharge() - { - - //alert(); - var txtbasicprice=0; - var txtlandingcharge=0; - var totalhighsess=0; - var highsesspercentage=0; - txtbasicprice=parseFloat($('#AfterBasicPriceTax').val()); - txtlandingcharge=parseFloat($('#AfterLandingCharge').val()); - // alert(txtlandingcharge); - totalhighsess=txtbasicprice+txtlandingcharge; - highsesspercentage=parseFloat($('#Highseas').val()); - - - //var txthighsess=(totalhighsess*highsesspercentage)/100; - var txtAfterhighsess=<?php echo HIGHSEAS_SALES;?>; - if(isNaN(txtAfterhighsess)) - { - $('#AfterHighseas').val(''); - } - else{ - $('#AfterHighseas').val(parseFloat(Math.round(txtAfterhighsess))); - } - - CalculateCustomduty(); - } - -function EditCalculateHighseassalescharge() - { - - //alert(); - var txtbasicprice=0; - var txtlandingcharge=0; - var totalhighsess=0; - var highsesspercentage=0; - var txthighsess=0; - txtbasicprice=parseFloat($('#EditAfterBasicPriceTax').val()); - txtlandingcharge=parseFloat($('#EditAfterLandingCharge').val()); - totalhighsess=txtbasicprice+txtlandingcharge; - highsesspercentage=parseFloat($('#EditHighseas').val()); - //var txthighsess=(totalhighsess*highsesspercentage)/100; - txthighsess=<?php echo HIGHSEAS_SALES;?>; - if(isNaN(txthighsess)) - { - $('#EditAfterHighseas').val(''); - } - else{ - $('#EditAfterHighseas').val(parseFloat(txthighsess).toFixed(2)); - } - EditCalculateCustomduty(); - } - - function CalculateCustomduty() -{ - var txtbasic=0; - var txtcustompercentage=0; - var txthighse=0; - var txtlandingch=0; - var sumcustom=0; - var txtcustomduty=0; - txtbasic=parseFloat($('#AfterBasicPriceTax').val()); - txtcustompercentage=parseFloat($('#Customduty').val()); - txthighse=parseFloat($('#AfterHighseas').val()); - txtlandingch=parseFloat($('#AfterLandingCharge').val()); - sumcustom=txthighse+txtlandingch+txtbasic; - //var txtcustomduty=(txtbasic*txtcustompercentage)/100; - txtcustomduty=<?php echo CUSTOM_DUTY;?>; - if(isNaN(txtcustomduty)) - { - $('#AfterCustomduty').val(''); - } - else{ - $('#AfterCustomduty').val(parseFloat(txtcustomduty).toFixed(2)); - } - CalculateExciseDuty() ; - -} - -function EditCalculateCustomduty() -{ - var txtbasic=0; - var txtcustompercentage=0; - var txthighse=0; - var txtlandingch=0; - var sumcustom=0; - var txtcustomduty=0; - txtbasic=parseFloat($('#EditAfterBasicPriceTax').val()); - txtcustompercentage=parseFloat($('#EditCustomduty').val()); - txthighse=parseFloat($('#EditAfterHighseas').val()); - txtlandingch=parseFloat($('#EditAfterLandingCharge').val()); - sumcustom=txthighse+txtlandingch+txtbasic; - //var txtcustomduty=(txtbasic*txtcustompercentage)/100; - txtcustomduty=<?php echo CUSTOM_DUTY;?>; - if(isNaN(txtcustomduty)) - { - $('#EditAfterCustomduty').val(''); - } - else{ - $('#EditAfterCustomduty').val(parseFloat(txtcustomduty).toFixed(2)); - } - EditCalculateExciseDuty() ; - -} - - - -function ExceedQuantityCheck() - { - // RequistQuantity - var EnterQuantity = $("#Quantity").val()== '' ? "0.00" : parseFloat($("#Quantity").val()); - var ReqQuantity = parseFloat(RequistQuantity); - if(EnterQuantity > ReqQuantity) - { - alert('Your exceeding the Quantity from the Requisition Quantity:'+ RequistQuantity +'.Please adjust the Quantity to proceed further.'); - //$('#Quantity').val(RequistQuantity); - $('#Quantity').focus(); - return false; - } -else{ -return true; -} - } - - - function ExceedEditQuantityCheck() - { - // RequistQuantity - var EnterQuantity = $("#EditQuantity").val()== '' ? "0.00" : parseFloat($("#EditQuantity").val()); - var ReqQuantity = parseFloat(RequistQuantity); - if(EnterQuantity > ReqQuantity) - { - alert('Your exceeding the Quantity from the Requisition Quantity:'+ RequistQuantity +'.Please adjust the Quantity to proceed further.'); - //$('#Quantity').val(RequistQuantity); - $('#EditQuantity').focus(); - return false; - } -else{ -return true; -} - } - - -function CalculateExciseDuty() -{ - - var txtcustomduty=0; - var txthighsess=0; - var txtaftrlanding=0; - var txtbasicc=0; - var txtpercentage=0; - var txtexcisesum=0; - var totalexcise=0; - txtcustomduty=parseFloat($('#AfterCustomduty').val()); - txthighsess=parseFloat($('#AfterHighseas').val()); - txtaftrlanding=parseFloat($('#AfterLandingCharge').val()); - txtbasicc=parseFloat($('#AfterBasicPriceTax').val()); - - txtpercentage=parseFloat($('#ExcisedutyTax').val()); - txtexcisesum=txtcustomduty+txthighsess+txtaftrlanding+txtbasicc; - //var Exciseduty=(txtexcisesum*txtpercentage)/100; - totalexcise=<?php echo EXCISE_DUTY;?>; - if(isNaN(totalexcise)) - { - $('#AfterExcisedutyTax').val(''); - } - //var totalexcise=txtcustomduty+Exciseduty; - else{ - $('#AfterExcisedutyTax').val(parseFloat(totalexcise).toFixed(2)); - } - CalculateExciseED1(); -} - - - -function EditCalculateExciseDuty() -{ //alert('edit'); - var txtcustomduty=0; - var txthighsess=0; - var txtaftrlanding=0; - var txtbasicc=0; - var txtpercentage=0; - var txtexcisesum=0; - var totalexcise=0; - txtcustomduty=parseFloat($('#EditAfterCustomduty').val()); - txthighsess=parseFloat($('#EditAfterHighseas').val()); - txtaftrlanding=parseFloat($('#EditAfterLandingCharge').val()); - txtbasicc=parseFloat($('#EditAfterBasicPriceTax').val()); - - txtpercentage=parseFloat($('#EditExcisedutyTax').val()); - txtexcisesum=txtcustomduty+txthighsess+txtaftrlanding+txtbasicc; - //var Exciseduty=(txtexcisesum*txtpercentage)/100; - totalexcise=<?php echo EXCISE_DUTY;?>; - if(isNaN(totalexcise)) - { - $('#EditAfterExcisedutyTax').val(''); - } - else - { - //var totalexcise=txtcustomduty+Exciseduty; - $('#EditAfterExcisedutyTax').val(parseFloat(totalexcise).toFixed(2)); - } - EditCalculateExciseED1(); -} - - -function CalculateExciseED1() -{ - var txtexcise=0; - var txtexcisepercentage=0; - var txtexcisetot=0; - txtexcise=parseFloat($('#AfterExcisedutyTax').val()); - txtexcisepercentage=parseFloat($('#ExcisedutyEDcess').val()); - //var txtexcisetot=(txtexcise*txtexcisepercentage)/100; - txtexcisetot=<?php echo EXCISE_ED;?>; - if(isNaN(txtexcisetot)) - { - $('#AfterExcisedutyEDcess').val(''); - } - else - { - $('#AfterExcisedutyEDcess').val(parseFloat(txtexcisetot).toFixed(2)); - } - - CalculateexciseSHcess(); - -//AfterExcisedutyEDcess -} - -function EditCalculateExciseED1() -{ - var txtexcise=0; - var txtexcisepercentage=0; - var txtexcisetot=0; - txtexcise=parseFloat($('#EditAfterExcisedutyTax').val()); - txtexcisepercentage=parseFloat($('#EditExcisedutyEDcess').val()); - //var txtexcisetot=(txtexcise*txtexcisepercentage)/100; - txtexcisetot=<?php echo EXCISE_ED;?>; - if(isNaN(txtexcisetot)) - { - $('#EditAfterExcisedutyEDcess').val(''); - } - else - { - $('#EditAfterExcisedutyEDcess').val(parseFloat(txtexcisetot).toFixed(2)); - } - EditCalculateexciseSHcess(); - -//AfterExcisedutyEDcess -} - -function CalculateexciseSHcess() - { - var excisetxt=0; - var exciseshcess=0; - var exciseshcesstot=0; - excisetxt=parseFloat($('#AfterExcisedutyTax').val()); - exciseshcess=parseFloat($('#ExcisedutySHcess').val()); - //var exciseshcesstot=(excisetxt*exciseshcess)/100; - exciseshcesstot=<?php echo EXCISE_SH;?>; - if(isNaN(exciseshcesstot)) - { - $('#AfterExcisedutySHcess').val(''); - } - else - { - $('#AfterExcisedutySHcess').val(parseFloat(exciseshcesstot).toFixed(2)); - //$('#AfterExcisedutySHcess').val(''); - } - CalculateCustomEdcess(); - - } - - function EditCalculateexciseSHcess() - { - //alert(); - var excisetxt=0; - var exciseshcess=0; - //var exciseshcesstot=(excisetxt*exciseshcess)/100; - var exciseshcesstot=0; - - excisetxt=parseFloat($('#EditAfterExcisedutyTax').val()); - exciseshcess=parseFloat($('#EditExcisedutySHcess').val()); - //var exciseshcesstot=(excisetxt*exciseshcess)/100; - exciseshcesstot=<?php echo EXCISE_SH;?>; - if(isNaN(exciseshcesstot)) - { - $('#EditAfterExcisedutySHcess').val(''); - } - else - { - $('#EditAfterExcisedutySHcess').val(parseFloat(exciseshcesstot).toFixed(2)); - } - EditCalculateCustomEdcess(); - - } - - - function CalculateCustomEdcess() - { - - var txtloading=0; - var txthighses=0; - var txtcustomduty1=0; - var txtexciseduty=0; - var txtedexciseduty=0; - var txtshexcisesess=0; - var totalval=0; - var txtedcesspercentage=0; - //var txtcustomedsess=(totalval*txtedcesspercentage)/100; - var txtcustomedsess=0; - - - - - txtloading=parseFloat($('#AfterLandingCharge').val()); - txthighses=parseFloat($('#AfterHighseas').val()); - txtcustomduty1=parseFloat($('#AfterCustomduty').val()); - txtexciseduty=parseFloat($('#AfterExcisedutyTax').val()); - txtedexciseduty=parseFloat($('#AfterExcisedutyEDcess').val()); - txtshexcisesess=parseFloat($('#AfterExcisedutySHcess').val()); - totalval=txtloading+txtcustomduty1+txtexciseduty+ txtedexciseduty+txthighses+txtshexcisesess; - txtedcesspercentage=parseFloat($('#CustomEDcess').val()); - //var txtcustomedsess=(totalval*txtedcesspercentage)/100; - txtcustomedsess=<?php echo CUSTOM_ED;?>; - if(isNaN(txtcustomedsess)) - { - - $('#AfterCustomEDcess').val(''); - } - else - { - $('#AfterCustomEDcess').val(parseFloat(txtcustomedsess).toFixed(2)); - } - CalculateCustomSHcess(); - - } - - - -function EditCalculateCustomEdcess() - { - var txtloading=0; - var txthighses=0; - var txtcustomduty1=0; - var txtexciseduty=0; - var txtedexciseduty=0; - var txtshexcisesess=0; - var totalval=0; - var txtedcesspercentage=0; - //var txtcustomedsess=(totalval*txtedcesspercentage)/100; - var txtcustomedsess=0; - - txtloading=parseFloat($('#EditAfterLandingCharge').val()); - txthighses=parseFloat($('#EditAfterHighseas').val()); - txtcustomduty1=parseFloat($('#EditAfterCustomduty').val()); - txtexciseduty=parseFloat($('#EditAfterExcisedutyTax').val()); - txtedexciseduty=parseFloat($('#EditAfterExcisedutyEDcess').val()); - txtshexcisesess=parseFloat($('#EditAfterExcisedutySHcess').val()); - totalval=txtloading+txtcustomduty1+txtexciseduty+ txtedexciseduty+txthighses+txtshexcisesess; - txtedcesspercentage=parseFloat($('#EditCustomEDcess').val()); - //var txtcustomedsess=(totalval*txtedcesspercentage)/100; - txtcustomedsess=<?php echo CUSTOM_ED;?>; - if(isNaN(txtcustomedsess)) - { - $('#EditAfterCustomEDcess').val(''); - } - else - { - $('#EditAfterCustomEDcess').val(parseFloat(txtcustomedsess).toFixed(2)); - } - EditCalculateCustomSHcess(); - - } - - - function CalculateCustomSHcess() - {//alert(); - - var landingch=0; - var highsesssalles=0; - var customch=0; - var excisech=0; - var exciseedch=0; - var exciseshch=0; - var totcustomsh=0; - - var txtshpercentage=0; - //var totresult=(totcustomsh*txtshpercentage)/100; - var totresult=0; - - - - landingch=parseFloat($('#AfterLandingCharge').val()); - highsesssalles=parseFloat($('#AfterHighseas').val()); - customch=parseFloat($('#AfterCustomduty').val()); - excisech=parseFloat($('#AfterExcisedutyTax').val()); - exciseedch=parseFloat($('#AfterExcisedutyEDcess').val()); - exciseshch=parseFloat($('#AfterExcisedutySHcess').val()); - totcustomsh=landingch+highsesssalles+customch+excisech+exciseedch+exciseshch; - - txtshpercentage=parseFloat($('#CustomSHcess').val()); - //var totresult=(totcustomsh*txtshpercentage)/100; - totresult=<?php echo CUSTOM_SH;?>; - if(isNaN(totresult)) - { - $('#AfterCustomSHcess').val(''); - } - else - { - $('#AfterCustomSHcess').val(parseFloat(totresult).toFixed(2)); - } - CalculateaddlExciseDuty(); - - } - - - function EditCalculateCustomSHcess() - {//alert(); - - var landingch=0; - var highsesssalles=0; - var customch=0; - var excisech=0; - var exciseedch=0; - var exciseshch=0; - var totcustomsh=0; - - var txtshpercentage=0; - //var totresult=(totcustomsh*txtshpercentage)/100; - var totresult=0; - - landingch=parseFloat($('#EditAfterLandingCharge').val()); - highsesssalles=parseFloat($('#EditAfterHighseas').val()); - customch=parseFloat($('#EditAfterCustomduty').val()); - excisech=parseFloat($('#EditAfterExcisedutyTax').val()); - exciseedch=parseFloat($('#EditAfterExcisedutyEDcess').val()); - exciseshch=parseFloat($('#EditAfterExcisedutySHcess').val()); - totcustomsh=landingch+highsesssalles+customch+excisech+exciseedch+exciseshch; - - txtshpercentage=parseFloat($('#EditCustomSHcess').val()); - //var totresult=(totcustomsh*txtshpercentage)/100; - var totresult=<?php echo CUSTOM_SH;?>; - if(isNaN(totresult)) - { - $('#EditAfterCustomSHcess').val(''); - } - else - { - $('#EditAfterCustomSHcess').val(parseFloat(totresult).toFixed(2)); - } - EditCalculateaddlExciseDuty(); - - } - -function CalculateaddlExciseDuty() -{ - - var basic=0; - var landingcha=0; - var highsesssalless=0; - var customcha=0; - var excisecha=0; - var exciseedcha=0; - var exciseshcha=0; - var customed=0; - var customsh=0; - var totaddtnlexcise=0; - var addtnpercentage=0; - // var txtaddtnexciseduty=(totaddtnlexcise*addtnpercentage)/100; - var txtaddtnexciseduty=0; - var txtgrossduty=0; - - basic=parseFloat($('#AfterBasicPriceTax').val()); - landingcha=parseFloat($('#AfterLandingCharge').val()); - highsesssalless=parseFloat($('#AfterHighseas').val()); - customcha=parseFloat($('#AfterCustomduty').val()); - excisecha=parseFloat($('#AfterExcisedutyTax').val()); - exciseedcha=parseFloat($('#AfterExcisedutyEDcess').val()); - exciseshcha=parseFloat($('#AfterExcisedutySHcess').val()); - customed=parseFloat($('#AfterCustomEDcess').val()); - customsh=parseFloat($('#AfterCustomSHcess').val()); - totaddtnlexcise=basic+landingcha+highsesssalless+customcha+excisecha+exciseedcha+exciseshcha+customed+customsh; - addtnpercentage=parseFloat($('#AdditionalExciseduty').val()); - // var txtaddtnexciseduty=(totaddtnlexcise*addtnpercentage)/100; - txtaddtnexciseduty=<?php echo ADDTNL_EXCISEDUTY;?>; - if(isNaN(txtaddtnexciseduty)) - { - $('#AfterAdditionalExciseduty').val(''); - } - else - { - $('#AfterAdditionalExciseduty').val(parseFloat(txtaddtnexciseduty).toFixed(2)); - } - //var txtgrossduty=landingcha+highsesssalless+customcha+excisecha+exciseedcha+exciseshcha+customed+customsh+txtaddtnexciseduty; - - txtgrossduty=<?php echo GROSS_DUTY;?>; - if(isNaN(txtgrossduty)) - { - $('#Grossdutypayable').val(''); - } - else{ - $('#Grossdutypayable').val(parseFloat(txtgrossduty).toFixed()); - } - CalculateAvlModvat(); - -} - - -function EditCalculateaddlExciseDuty() -{ - - var basic=0; - var landingcha=0; - var highsesssalless=0; - var customcha=0; - var excisecha=0; - var exciseedcha=0; - var exciseshcha=0; - var customed=0; - var customsh=0; - var totaddtnlexcise=0; - var addtnpercentage=0; - // var txtaddtnexciseduty=(totaddtnlexcise*addtnpercentage)/100; - var txtaddtnexciseduty=0; - var txtgrossduty=0; - - - basic=parseFloat($('#EditAfterBasicPriceTax').val()); - landingcha=parseFloat($('#EditAfterLandingCharge').val()); - highsesssalless=parseFloat($('#EditAfterHighseas').val()); - customcha=parseFloat($('#EditAfterCustomduty').val()); - excisecha=parseFloat($('#EditAfterExcisedutyTax').val()); - exciseedcha=parseFloat($('#EditAfterExcisedutyEDcess').val()); - exciseshcha=parseFloat($('#EditAfterExcisedutySHcess').val()); - customed=parseFloat($('#EditAfterCustomEDcess').val()); - customsh=parseFloat($('#EditAfterCustomSHcess').val()); - totaddtnlexcise=basic+landingcha+highsesssalless+customcha+excisecha+exciseedcha+exciseshcha+customed+customsh; - addtnpercentage=parseFloat($('#EditAdditionalExciseduty').val()); - // var txtaddtnexciseduty=(totaddtnlexcise*addtnpercentage)/100; - txtaddtnexciseduty=<?php echo ADDTNL_EXCISEDUTY;?>; - if(isNaN(txtaddtnexciseduty)) - { - $('#EditAfterAdditionalExciseduty').val(''); - } - else - { - $('#EditAfterAdditionalExciseduty').val(txtaddtnexciseduty).toFixed(2); - } - //var txtgrossduty=landingcha+highsesssalless+customcha+excisecha+exciseedcha+exciseshcha+customed+customsh+txtaddtnexciseduty; - - txtgrossduty=<?php echo GROSS_DUTY;?>; - if(isNaN(txtgrossduty)) - { - $('#EditGrossdutypayable').val(''); - } - else - { - $('#EditGrossdutypayable').val(parseFloat(txtgrossduty).toFixed(2)); - } - EditCalculateAvlModvat(); - -} - -function CalculateAvlModvat() -{ - - var txtexciseduty1=0; - var txtexciseedcess=0; - var txtexciseshcess=0; - var txtaddtnlexcise=0; - //var totavlmodvat=txtexciseduty1+txtexciseedcess+txtexciseshcess+txtaddtnlexcise; - var totavlmodvat=0; - - txtexciseduty1=parseFloat($('#AfterExcisedutyTax').val()); - txtexciseedcess=parseFloat($('#AfterExcisedutyEDcess').val()); - txtexciseshcess=parseFloat($('#AfterExcisedutySHcess').val()); - txtaddtnlexcise=parseFloat($('#AfterAdditionalExciseduty').val()); - //var totavlmodvat=txtexciseduty1+txtexciseedcess+txtexciseshcess+txtaddtnlexcise; - totavlmodvat=<?php echo AVL_MODVAT;?>; - if(isNaN(totavlmodvat)) - { - $('#AvailableModvat').val(''); - } - else - { - $('#AvailableModvat').val(parseFloat(totavlmodvat).toFixed(2)); - } - CalculateGrossExpense(); - -} - - -function EditCalculateAvlModvat() -{ - - - var txtexciseduty1=0; - var txtexciseedcess=0; - var txtexciseshcess=0; - var txtaddtnlexcise=0; - //var totavlmodvat=txtexciseduty1+txtexciseedcess+txtexciseshcess+txtaddtnlexcise; - var totavlmodvat=0; - - - txtexciseduty1=parseFloat($('#EditAfterExcisedutyTax').val()); - txtexciseedcess=parseFloat($('#EditAfterExcisedutyEDcess').val()); - txtexciseshcess=parseFloat($('#EditAfterExcisedutySHcess').val()); - txtaddtnlexcise=parseFloat($('#EditAfterAdditionalExciseduty').val()); - //var totavlmodvat=txtexciseduty1+txtexciseedcess+txtexciseshcess+txtaddtnlexcise; - totavlmodvat=<?php echo AVL_MODVAT;?>; - if(isNaN(totavlmodvat)) - { - $('#EditAvailableModvat').val(''); - } - else - { - $('#EditAvailableModvat').val(parseFloat(totavlmodvat).toFixed(2)); - } - EditCalculateGrossExpense(); -} - - -function CalculateGrossExpense() -{ - - var txtgrossdutypayable=0; - var txtmodvat=0; - //var grossexp=(txtgrossdutypayable-txtmodvat); - var grossexp=0; - - - txtgrossdutypayable=parseFloat($('#Grossdutypayable').val()); - txtmodvat=parseFloat($('#AvailableModvat').val()); - //var grossexp=(txtgrossdutypayable-txtmodvat); - grossexp=<?php echo GROSS_EXP;?>; - if(isNaN(grossexp)) - { - $('#Grossexpenses').val(''); - } - else - { - $('#Grossexpenses').val(parseFloat(grossexp).toFixed(2)); - } - CalculateCtable(); - -} - - -function EditCalculateGrossExpense() -{ - - - var txtgrossdutypayable=0; - var txtmodvat=0; - //var grossexp=(txtgrossdutypayable-txtmodvat); - var grossexp=0; - - - txtgrossdutypayable=parseFloat($('#EditGrossdutypayable').val()); - txtmodvat=parseFloat($('#EditAvailableModvat').val()); - //var grossexp=(txtgrossdutypayable-txtmodvat); - grossexp=<?php echo GROSS_EXP;?>; - if(isNaN(grossexp)) - { - $('#EditGrossexpenses').val(''); - } - else - { - $('#EditGrossexpenses').val(parseFloat(grossexp).toFixed(2)); - } - EditCalculateCtable() - -} - -function CalculateCtable() -{ - //alert(); - //purchaserate - var txtCtablequantity=0; - var txtbasicinrprice=0; - var txtpurchaserate=0; - var txtgrossexp=0; - var txtcustomdutyexp=0; - var txtrmc=0; - var total=0; - var basicamt=0; - basicamt=parseFloat($('#txtBasicValue').val()); - - txtCtablequantity=parseFloat($('#PurQuantity').val()); - txtbasicinrprice=parseFloat($('#AfterBasicPriceTax').val()); - //txtpurchaserate=txtbasicinrprice/txtCtablequantity; - txtpurchaserate=<?php echo PURCHASE_RATE;?>; - if(isNaN(txtpurchaserate)) - { - $('#purchaserate').val(''); - } - else - { - $('#purchaserate').val(txtpurchaserate); - } - - txtgrossexp=parseFloat($('#Grossexpenses').val()); - //txtcustomdutyexp=txtgrossexp/txtCtablequantity; - txtcustomdutyexp=<?php echo CUSTOMDUTY_EXP;?>; - if(isNaN(txtcustomdutyexp)) - { - $('#CustomDutyExpenses').val(''); - } - else - { - $('#CustomDutyExpenses').val((txtcustomdutyexp).toFixed(2)); - } - //txtrmc=txtpurchaserate+txtcustomdutyexp; - txtrmc=<?php echo RMC_CAL;?>; - if(isNaN(txtrmc)) - { - $('#RMCIncludingCustomers').val(''); - } - else - { - $('#RMCIncludingCustomers').val((txtrmc).toFixed(2)); - } - quantity=parseFloat($('#Quantity').val()); - basicprice=parseFloat($('#txtBasicValue').val()); - total=<?php echo CALCULATE_TOTAL;?>; - if(isNaN(total)) - { - $('#TotalExp').val(''); - } - else - { - $('#TotalExp').val((total).toFixed(2)); - } - -} - - -function EditCalculateCtable() -{ - //alert(); - //purchaserate - var txtCtablequantity=0; - var txtbasicinrprice=0; - var txtpurchaserate=0; - var txtgrossexp=0; - var txtcustomdutyexp=0; - var txtrmc=0; - var total=0; - var basicamt=0; - basicamt=parseFloat($('#EdittxtBasicValue').val()); - txtCtablequantity=parseFloat($('#EditPurQuantity').val()); - txtbasicinrprice=parseFloat($('#EditAfterBasicPriceTax').val()); - //txtpurchaserate=txtbasicinrprice/txtCtablequantity; - txtpurchaserate=<?php echo PURCHASE_RATE;?>; - $('#Editpurchaserate').val(txtpurchaserate); - //CustomDutyExpenses - //RMCIncludingCustomers - txtgrossexp=parseFloat($('#EditGrossexpenses').val()); - //txtcustomdutyexp=txtgrossexp/txtCtablequantity; - txtcustomdutyexp=<?php echo CUSTOMDUTY_EXP;?>; - $('#EditCustomDutyExpenses').val(txtcustomdutyexp); - //txtrmc=txtpurchaserate+txtcustomdutyexp; - txtrmc=<?php echo RMC_CAL;?>; - purquantity=parseFloat($('#PurQuantity').val()); - $('#EditRMCIncludingCustomers').val(txtrmc); - total=<?php echo CALCULATE_TOTAL;?>; - $('#EditTotalExp').val(total); - -} - - - -$('.AddImport').click(function() -{ - - //alert('out'); - if(validateImport()&&ExceedQuantityCheck()) - { - //alert('in'); - - var temp = index; - //alert('in'); - var Reqnumber = $('#ReqNo').val(); - //alert(JSON.strigify(Reqnumber)); - var departmentName =$('#deptName').val(); - var AvilBudget = $('#AvlBudAmt').val(); - var costCode = $('#CostCenter').val(); - var materialCode =$('#MaterialCode').val(); - var materialName = $("#ItemName").val(); - var uom = $("#UOM").val(); - var quantity = $("#Quantity").val(); - var itemRate = $("#Rate").val(); - var BasicAmt=parseFloat($("#txtBasicValue").val()); - var taxamt=parseFloat($("#RMCIncludingCustomers").val()); - var totalexp=parseFloat($("#TotalExp").val()); - var Exchangerate=parseFloat($("#ExchangeRt").val()); - var Basicpriceinus=parseFloat($("#imBasicPrice").val()); - var taxexp=taxamt*quantity; - - //alert(taxexp); - - // index = parseInt(index)+1; - // alert('in'); - //var template = jQuery("#ImportList").html(); - //$('#ImportAppend').append(_.template(template,{index:temp,ReqNo:Reqnumber,ItemName:materialName,Quantity:quantity,UOM:uom,Rate:itemRate,BasicAmount:BasicAmt,Taxvalue:taxamt,TotalValue:totalexp})); - - - - //var template = jQuery("#ImportList").html(); - //from design id - - var BasicPrice=$("#BasicPriceTax").val(); - var AfterBasicPrice=parseFloat($("#AfterBasicPriceTax").val()); - var LandingChargee=$("#LandingCharge").val(); - var AfterLandingChargee=$("#AfterLandingCharge").val(); - var Highseass=$("#Highseas").val(); - var AfterHighseass=$("#AfterHighseas").val(); - //var AfterHighseass=($"#AfterHighseas").val(); - var CustomDutyy=$("#Customduty").val(); - var AfterCustomDutyy=$("#AfterCustomduty").val(); - - var ExciseDutyy=$("#ExcisedutyTax").val(); - var AfterExciseDutyy=$("#AfterExcisedutyTax").val(); - var ExciseDutyEd=$("#ExcisedutyEDcess").val(); - var AfterExciseDutyEd=$("#AfterExcisedutyEDcess").val(); - var ExciseDutySH=$("#ExcisedutySHcess").val(); - var AfterExciseDutySH=$("#AfterExcisedutySHcess").val(); - var CustomED=$("#CustomEDcess").val(); - var AfterCustomED=$("#AfterCustomEDcess").val(); - var CustomSH=$("#CustomSHcess").val(); - var AfterCustomSH=$("#AfterCustomSHcess").val(); - var AdditnlExcise=$("#AdditionalExciseduty").val(); - var AfterAdditnlExcise=$("#AfterAdditionalExciseduty").val(); - var GrossDuty=$("#Grossdutypayable").val(); - var Avlmodvat=$("#AvailableModvat").val(); - var Grossexpenseduetocustom=$("#Grossexpenses").val(); - var PurchaseQuantity=$("#PurQuantity").val(); - var purate=$("#purchaserate").val(); - var CustomDutyExpense=$("#CustomDutyExpenses").val(); - var RMCIncluderate=$("#RMCIncludingCustomers").val(); - $('#MaterialCode option[value='+materialCode+']').remove(); - - - $('#MaterialCode option[value='+materialCode+']').remove(); - SelectedMaterialCode[CollIndex] = materialCode; - CollIndex = CollIndex + 1; - - SelectedMaterialList.Mat.push({ - "materialCode" : materialCode, - "ReqNo" : Reqnumber, - - }); - - - - populateValueMainFormForImportTax(); - - index = parseInt(index)+1; - //alert('in'); - var template = jQuery("#ImportList").html(); - $('#ImportAppend').append(_.template(template,{index:temp,ReqNo:Reqnumber,ItemName:materialName,Quantity:quantity,UOM:uom,Rate:itemRate,BasicAmount:BasicAmt,Taxvalue:taxexp,TotalValue:totalexp})); - //alert(JSON.strigify(BasicAmt)); - - - //$('#ImportAppend').append(_.template(template,{index:temp,ReqNo:Reqnumber,ItemName:materialName,Quantity:quantity,UOM:uom,Rate:itemRate,BasicAmount:BasicAmt,Taxvalue:taxamt,TotalValue:totalexp})); - //clearTaxField(); - - //from above defined variables - - var theForm = $(".ImportPO"); - - addHidden(theForm,"Reqnumber"+temp,Reqnumber ); - addHidden(theForm,"departmentName"+temp,departmentName ); - addHidden(theForm,"AvilBudget"+temp,AvilBudget ); - addHidden(theForm,"costCode"+temp,costCode ); - addHidden(theForm,"materialCode"+temp,materialCode ); - addHidden(theForm,"materialName"+temp,materialName ); - addHidden(theForm,"uom"+temp,uom); - addHidden(theForm,"quantity"+temp,quantity); - addHidden(theForm,"itemRate"+temp,itemRate); - addHidden(theForm,"BasicAmt"+temp,BasicAmt); - addHidden(theForm,"taxamt"+temp,taxamt); - addHidden(theForm,"Exchangerate"+temp,Exchangerate); - addHidden(theForm,"BasicPriceTax"+temp,BasicPriceTax); - addHidden(theForm,"BasicPriceinUS"+temp,Basicpriceinus); - addHidden(theForm,"AfterBasicPriceTax"+temp,AfterBasicPrice); - addHidden(theForm,"LandingChargee"+temp,LandingChargee); - addHidden(theForm,"AfterLandingChargee"+temp,AfterLandingChargee); - addHidden(theForm,"Highseass"+temp,Highseass); - addHidden(theForm,"AfterHighseass"+temp,AfterHighseass); - addHidden(theForm,"Customduty"+temp,CustomDutyy); - addHidden(theForm,"AfterCustomduty"+temp,AfterCustomDutyy); - addHidden(theForm,"ExcisedutyTax"+temp,ExciseDutyy); - addHidden(theForm,"AfterExcisedutyTax"+temp,AfterExciseDutyy); - addHidden(theForm,"ExcisedutyED"+temp,ExciseDutyEd); - addHidden(theForm,"AfterExcisedutyED"+temp,AfterExciseDutyEd); - addHidden(theForm,"ExcisedutySH"+temp,ExciseDutySH); - addHidden(theForm,"AfterExcisedutySH"+temp,AfterExciseDutySH); - addHidden(theForm,"CustomEDcess"+temp,CustomED); - addHidden(theForm,"AfterCustomEDcess"+temp,AfterCustomED); - addHidden(theForm,"CustomSHcess"+temp,CustomSH); - addHidden(theForm,"AfterCustomSHcess"+temp,AfterCustomSH); - addHidden(theForm,"AdditionalExciseduty"+temp,AdditnlExcise); - addHidden(theForm,"AfterAdditionalExciseduty"+temp,AfterAdditnlExcise); - addHidden(theForm,"Grossdutypayable"+temp,GrossDuty); - addHidden(theForm,"Grossexpenses"+temp,Grossexpenseduetocustom); - addHidden(theForm,"PurQuantity"+temp,PurchaseQuantity); - addHidden(theForm,"purchaserate"+temp,purate); - addHidden(theForm,"CustomDutyExpenses"+temp,CustomDutyExpense); - addHidden(theForm,"RMCIncludingCustomers"+temp,RMCIncluderate); - addHidden(theForm,"AvilableModvat"+temp,Avlmodvat); - addHidden(theForm,"TotalExp"+temp,totalexp); - // alert(JSON.stringify(totalexp)); - - - - - // addHidden(theForm,"AfterBasicPriceTax"+temp,AfterBasicPriceTax); - //addHidden(theForm,"AfterBasicPriceTax"+temp,AfterBasicPriceTax); - $('#txtRowCount').val(temp); - clearTaxField(); - - - } - - -}); - - - -function validateImport() -{ - //alert(); - if($('#ReqNo').val() == "0") - { - alert('Please select the Requisition Number'); - $('#ReqNo').focus(); - return false; - } - else if($('#CostCenter').val() == "0") - { - alert('Please select the Cost center'); - $('#CostCenter').focus(); - return false; - } - else if($('#MaterialCode').val() == "0") - { - alert('Please select the Material Code'); - $('#MaterialCode').focus(); - return false; - } - else if($('#Quantity').val() == '') - { - alert('Please Enter the Quantity value'); - $('#Quantity').focus(); - return false; - } - else if($('#Rate').val() == '') - { - alert('Please Enter the Rate of the Item'); - $('#Rate').focus(); - return false; - } - else if($('#imBasicPrice').val()=='') - { - alert('Please Enter Basic Price In Us'); - $('#imBasicPrice').focus(); - return false; - } - /* else if(ExceedQuantityCheck() == false) - { - return false; - }*/ - else - return true; -} - - - -function addHidden(theForm, key, value) { - // Create a hidden input element, and append it to the form: - var input = document.createElement('input'); - input.type = 'hidden'; - input.name = key;'name-as-seen-at-the-server'; - input.id = key;'name-as-seen-at-the-server'; - input.value = value; - theForm.append(input); -} - - -function populateValueMainFormForImportTax() -{ - -//$('#txtToatlOrder').val(parseFloat(TotalOrderValue)).toFixed(2); - -var AfterLandingCharge= $('#AfterLandingCharge').val() == '' ? '0.00' : $('#AfterLandingCharge').val(); -var AfterHighseas=$('#AfterHighseas').val()==''?'0.00':$('#AfterHighseas').val(); -var AfterCustomduty=$('#AfterCustomduty').val()==''?'0.00':$('#AfterCustomduty').val(); -var AfterExcisedutyTax=$('#AfterExcisedutyTax').val()==''?'0.00':$('#AfterExcisedutyTax').val(); -var AfterExcisedutyEDcess=$('#AfterExcisedutyEDcess').val()==''?'0.00':$('#AfterExcisedutyEDcess').val(); -var AfterExciseDutySH=$("#AfterExcisedutySHcess").val()==''?'0.00':$('#AfterExcisedutySHcess').val(); -var AfterCustomEDcess=$('#AfterCustomEDcess').val()==''?'0.00':$('#AfterCustomEDcess').val(); -var AfterCustomSHcess=$('#AfterCustomSHcess').val()==''?'0.00':$('#AfterCustomSHcess').val(); -var AfterAdditionalExciseduty=$('#AfterAdditionalExciseduty').val()==''?'0.00':$('#AfterAdditionalExciseduty').val(); -var Grossdutypayable=$('#Grossdutypayable').val()==''?'0.00':$('#Grossdutypayable').val(); -var AvailableModvat=$('#AvailableModvat').val()==''?'0.00':$('#AvailableModvat').val(); -var Grossexpenses=$('#Grossexpenses').val()==''?'0.00':$('#Grossexpenses').val(); -var totalexp=$('#TotalExp').val()==''?'0.00':$('#TotalExp').val(); -var TotalLanding=$('#txttotallanding').val()==''?'0.00':$('#txttotallanding').val(); -var TotalHighseas=$('#txttotalhighseas').val()==''?'0.00':$('#txttotalhighseas').val(); -var TotalCustom=$('#txttotalcustom').val()==''?'0.00':$('#txttotalcustom').val(); -var TotalExcise=$('#txttotalexcise').val()==''?'0.00':$('#txttotalexcise').val(); -var TotalExciseED=$('#txttotalexciseED').val()==''?'0.00':$('#txttotalexciseED').val(); -var TotalExciseSH=$('#txttotalexciseSH').val()==''?'0.00':$('#txttotalexciseSH').val(); -var TotalCustomED=$('#txttotalcustomED').val()==''?'0.00':$('#txttotalcustomED').val(); -var TotalCustomSH=$('#txttotalcustomSH').val()==''?'0.00':$('#txttotalcustomSH').val(); -var TotalAdditionalExcise=$('#txttotalAdditionalExciseduty').val()==''?'0.00':$('#txttotalAdditionalExciseduty').val(); -var TotalGrossDuty=$('#txttotalgrossduty').val()==''?'0.00':$('#txttotalgrossduty').val(); -var TotalAvlmodvat=$('#txttotalavlmodvat').val()==''?'0.00':$('#txttotalavlmodvat').val(); -var TotalGrossExpense=$('#txttotalgrossexpense').val()==''?'0.00':$('#txttotalgrossexpense').val(); -var TotalOrder=$('#txtToatlOrder').val()==''?'0.00':$('#txtToatlOrder').val(); -$('#txttotallanding').val((parseFloat(AfterLandingCharge) + parseFloat(TotalLanding)).toFixed(2) ); -$('#txttotalhighseas').val((parseFloat(TotalHighseas) + parseFloat(AfterHighseas)).toFixed(2) ); -$('#txttotalcustom').val((parseFloat(TotalCustom) + parseFloat(AfterCustomduty)).toFixed(2) ); -$('#txttotalexcise').val((parseFloat(TotalExcise) + parseFloat(AfterExcisedutyTax)).toFixed(2) ); -$('#txttotalexciseED').val((parseFloat(TotalExciseED) + parseFloat(AfterExcisedutyEDcess)).toFixed(2) ); -$('#txttotalexciseSH').val((parseFloat(TotalExciseSH) + parseFloat(AfterExciseDutySH)).toFixed(2) ); -$('#txttotalcustomED').val((parseFloat(TotalCustomED) + parseFloat(AfterCustomEDcess)).toFixed(2) ); -$('#txttotalcustomSH').val((parseFloat(TotalCustomSH) + parseFloat(AfterCustomSHcess)).toFixed(2) ); -$('#txttotalAdditionalExciseduty').val((parseFloat(TotalAdditionalExcise) + parseFloat(AfterAdditionalExciseduty)).toFixed(2) ); -$('#txttotalgrossduty').val((parseFloat(TotalGrossDuty) + parseFloat(Grossdutypayable)).toFixed(2) ); -$('#txttotalavlmodvat').val((parseFloat(TotalAvlmodvat) + parseFloat(AvailableModvat)).toFixed(2) ); -$('#txttotalgrossexpense').val((parseFloat(TotalGrossExpense) + parseFloat(Grossexpenses)).toFixed(2) ); -$('#txtToatlOrder').val((parseFloat(TotalOrder) + parseFloat(totalexp)).toFixed(2) ); -//alert(JSON.stringify(totalexp)); -//alert(TotalOrder); - - - -} - - -function clearTaxField() -{ - //$('#AfterBasicPriceTax').val(''); - $('#ReqNo').val(''); - $('#deptName').val(''); - $('#CostCenter').val(''); - $('#AvlBudAmt').val(''); - $('#MaterialCode').val(''); - $('#ItemName').val(''); - $('#UOM').val(''); - $('#Quantity').val(''); - $('#Rate').val(''); - $('#txtBasicValue').val(''); - $('#imBasicPrice').val(''); - $('#ExchangeRt').val(''); - $('#INRBasicvalue').val(''); - $('#BasicPriceTax').val(''); - $('#AfterBasicPriceTax').val(''); - $('#TotalExp').val(''); - $('#AfterLandingCharge').val(''); - $('#LandingCharge').val(''); - $('#AfterHighseas').val(''); - $('#Highseas').val(''); - $('#AfterCustomduty').val(''); - $('#Customduty').val(''); - $('#AfterExcisedutyTax').val(''); - $('#ExcisedutyTax').val(''); - $('#AfterExcisedutyEDcess').val(''); - $('#ExcisedutyEDcess').val(''); - $('#AfterExcisedutySHcess').val(''); - $('#ExcisedutySHcess').val(''); - $('#AfterCustomEDcess').val(''); - $('#CustomEDcess').val(''); - $('#AfterCustomSHcess').val('') - $('#CustomSHcess').val(''); - $('#AfterCustomSHcess').val(''); - $('#AfterAdditionalExciseduty').val(''); - $('#AdditionalExciseduty').val(''); - $('#Grossdutypayable').val(''); - $('#AvailableModvat').val(''); - $('#Grossexpenses').val(''); - $('#PurQuantity').val(''); - $('#purchaserate').val(''); - $('#CustomDutyExpenses').val(''); - $('#RMCIncludingCustomers').val(''); -} - - -$("#editimportpomodel").on("shown.bs.modal", function(e) { - userid = $(e.relatedTarget).data('userid'); - //alert(userid); - //alert('inadd'); - var tr= document.getElementById(userid); - //alert(tr); - var cellval = tr.cells; - //alert(cellval); - var id= $('#Reqnumber'+userid).val(); - //alert(id); - $('#EditReqNo').val($('#Reqnumber'+userid).val()); - -//alert($('#Reqnumber'+userid).val()); - $('#EditdeptName').val($('#departmentName'+userid).val()); - $("#EditCostCenter").val($('#costCode'+userid).val()); - $('#EditAvlBudAmt').val($('#AvilBudget'+userid).val()); - - $('#EditItemName').val($('#materialName'+userid).val()); - $('#EditUOM').val($('#uom'+userid).val()); - $('#EditQuantity').val($('#quantity'+userid).val()); - //RequistQuantity = $('#quantity'+userid).val(); - $('#EditRate').val($('#itemRate'+userid).val()); - $('#EdittxtBasicValue').val($('#BasicAmt'+userid).val()); - $('#EditBasicPrice').val($("#BasicPriceTax"+userid).val()); - //$('#EditAfterBasicPrice').val($("#AfterBasicPriceTax"+userid).val()); - $('#EditLandingCharge').val($("#LandingChargee"+userid).val()); - $('#EditAfterLandingCharge').val($("#AfterLandingChargee"+userid).val()); - $('#EditHighseas').val($("#Highseass"+userid).val()); - $('#EditAfterHighseas').val($("#AfterHighseass"+userid).val()); - $('#EditCustomduty').val($("#Customduty"+userid).val()); - $('#EditAfterCustomduty').val($("#AfterCustomduty"+userid).val()); - $('#EditExcisedutyTax').val($("#ExcisedutyTax"+userid).val()); - $('#EditAfterExcisedutyTax').val($("#AfterExcisedutyTax"+userid).val()); - $('#EditExcisedutyEDcess').val($("#ExcisedutyED"+userid).val()); - $('#EditAfterExcisedutyEDcess').val($("#AfterExcisedutyED"+userid).val()); - $('#EditExcisedutySHcess').val($("#ExcisedutySH"+userid).val()); - $('#EditAfterExcisedutySHcess').val($("#AfterExcisedutySH"+userid).val()); - - $('#EditCustomEDcess').val($("#CustomEDcess"+userid).val()); - $('#EditAfterCustomEDcess').val($("#AfterCustomEDcess"+userid).val()); - $('#EditCustomSHcess').val($("#CustomSHcess"+userid).val()); - $('#EditAfterCustomSHcess').val($("#AfterCustomSHcess"+userid).val()); - $('#EditAdditionalExciseduty').val($("#AdditionalExciseduty"+userid).val()); - $('#EditAfterAdditionalExciseduty').val($("#AfterAdditionalExciseduty"+userid).val()); - $('#EditGrossdutypayable').val($("#Grossdutypayable"+userid).val()); - $('#EditGrossexpenses').val($("#Grossexpenses"+userid).val()); - $('#EditPurQuantity').val($("#PurQuantity"+userid).val()); - $('#Editpurchaserate').val($("#purchaserate"+userid).val()); - $('#EditCustomDutyExpenses').val($("#CustomDutyExpenses"+userid).val()); - $('#EditRMCIncludingCustomers').val($("#RMCIncludingCustomers"+userid).val()); - $('#EditAfterBasicPriceTax').val($("#AfterBasicPriceTax"+userid).val()); - $('#EditAvailableModvat').val($("#AvilableModvat"+userid).val()); - $('#EditTotalExp').val($("#TotalExp"+userid).val()); - $('#EditTotalOrderValue').val(cellval[8].innerHTML); - $("#EditMaterialCode").empty(); - var Material = <?php echo json_encode($MaterialList, JSON_PRETTY_PRINT) ?>; - $("#EditMaterialCode").append( $('<option></option>').val($('#materialCode'+userid).val()).html($('#materialCode'+userid).val() + "-" + $('#materialName'+userid).val() ) ); - var isAdded = "0"; - for(i=0;i<Material.length;i++) - { - $.each(Material[i], function(idx, obj) { - - if(obj.ReqNo === id ) - { - - $.each(SelectedMaterialList.Mat, function(idx1, el){ - if (id == el.ReqNo ) - { - - if(el.materialCode == obj.MaterialCode) - { - isAdded = "1"; - return false; - } - else - { - isAdded = "0"; - } - - } - }); - - - if(isAdded == "0") - { - - $("#EditMaterialCode").append( $('<option></option>').val(obj.MaterialCode).html(obj.MaterialCode + "-" + obj.MaterialName)); - } - - } - - - }); - } - -}); - - - -$('.EditImport').click(function(){ - //alert('inside edit'); - if(validateEditExceedLimit() && ExceedEditQuantityCheck()) - { - var CostCode = $("#EditCostCenter").val(); - var AvilBudget = $('#EditAvlBudAmt').val(); - var editMaterialCode = $("#EditMaterialCode").val(); - var edititemname = $("#EditItemName").val(); - var editUOM = $('#EditUOM').val(); - var editQuantity = $('#EditQuantity').val(); - var itemRate = $("#EditRate").val(); - var BasicValue=$("#EdittxtBasicValue").val(); - //var BasicValue=$("#EdittxtBasicValue").val(); - var BasicPrice=$("#EditBasicPriceTax").val(); - var AfterBasicPrice=$("#EditAfterBasicPriceTax").val(); - var Landingcharge=$("#EditLandingCharge").val(); - var AfterLanding=$("#EditAfterLandingCharge").val(); - var Highseass=$("#EditHighseas").val(); - var AfterHighseas=$("#EditAfterHighseas").val(); - var CustomDuty=$("#EditCustomduty").val(); - var AfterCustomDuty=$("#EditAfterCustomduty").val(); - var ExciseDuty=$("#EditExcisedutyTax").val(); - var AfterExciseDuty=$("#EditAfterExcisedutyTax").val(); - var ExciseEd=$("#EditExcisedutyEDcess").val(); - var AfterExciseEd=$("#EditAfterExcisedutyEDcess").val(); - var ExciseDutySH=$("#EditExcisedutySHcess").val(); - var AfterExciseDutySH=$("#EditAfterExcisedutySHcess").val(); - var CustomED=$("#EditCustomEDcess").val(); - var AfterCustomED=$("#EditAfterCustomEDcess").val(); - var CustomSH=$("#EditCustomSHcess").val(); - var AfterCustomSH=$("#EditAfterCustomSHcess").val(); - var AdditionalExciseduty=$("#EditAdditionalExciseduty ").val(); - var AfterAdditionalExciseduty=$("#EditAfterAdditionalExciseduty").val(); - var GrossDuty=$("#EditGrossdutypayable").val(); - var AvailaleModvat=$("#EditAvailableModvat").val(); - var GrossExpense=$("#EditGrossexpenses").val(); - var PurchaseRate=$("#Editpurchaserate").val(); - var Quantity=$("#EditPurQuantity").val(); - var CustomDutyExpense=$("#EditCustomDutyExpenses").val(); - var RMC=$("#EditRMCIncludingCustomers").val(); - var TotalExp=$('#EditTotalExp').val(); - - - var tr= document.getElementById(userid); - var cellval = tr.cells; - - - cellval[3].innerHTML = editQuantity; - cellval[4].innerHTML =editUOM; - cellval[5].innerHTML =itemRate; - cellval[6].innerHTML =BasicValue; - - $('#materialCode'+userid).val(editMaterialCode); - $('#materialName'+userid).val(edititemname); - $('#uom'+userid).val(editUOM); - $('#Quantity'+userid).val(EditQuantity); - $('#itemRate'+userid).val(EditRate); - $('#BasicAmt'+userid).val(BasicValue); - $('#BasicPriceTax'+userid).val(BasicPrice); - $('#AfterBasicPriceTax'+userid).val(AfterBasicPrice); - $('#LandingChargee'+userid).val(Landingcharge); - $('#AfterLandingChargee'+userid).val(AfterLanding); - $('#Highseass'+userid).val(Highseass); - $('#AfterHighseass'+userid).val(AfterHighseas); - $('#Customduty'+userid).val(CustomDuty); - $('#AfterCustomduty'+userid).val(AfterCustomDuty); - $('#ExcisedutyTax'+userid).val(ExciseDuty); - $('#AfterExcisedutyTax'+userid).val(AfterExciseDuty); - $('#ExcisedutyED'+userid).val(ExciseEd); - $('#AfterExcisedutyED'+userid).val(AfterExciseEd); - $('#ExcisedutySH'+userid).val(ExciseDutySH); - $('#AfterExcisedutySH'+userid).val(AfterExciseDutySH); - $('#CustomEDcess'+userid).val(CustomED); - $('#AfterCustomEDcess'+userid).val(AfterCustomED); - $('#CustomSHcess'+userid).val(CustomSH); - $('#AfterCustomSHcess'+userid).val(AfterCustomSH); - $('#AdditionalExciseduty'+userid).val(AdditionalExciseduty); - $('#AfterAdditionalExciseduty'+userid).val(AfterAdditionalExciseduty); - $('#Grossdutypayable'+userid).val(GrossDuty); - $('#Grossexpenses'+userid).val(GrossExpense); - $('#purchaserate'+userid).val(PurchaseRate); - $('#PurQuantity'+userid).val(Quantity); - $('#CustomDutyExpenses'+userid).val(CustomDutyExpense); - $('#RMCIncludingCustomers'+userid).val(RMC); - $('#TotalExp'+userid).val(TotalExp); - populateValueMainFormForEditImportTax(); - } - //$('#Grossexpenses'+userid).val(GrossExpense); - - //addHidden(theForm,"taxamt"+temp,taxamt);//RMC - //addHidden(theForm,"totalexp"+temp,totalexp);//totalexpense - - //addHidden(theForm,"AfterBasicPriceTax"+,AfterBasicPrice); - - /*addHidden(theForm,"Grossdutypayable"+temp,GrossDuty); - addHidden(theForm,"Grossexpenses"+temp,Grossexpenseduetocustom); - addHidden(theForm,"PurQuantity"+temp,PurchaseQuantity); - addHidden(theForm,"purchaserate"+temp,purate); - addHidden(theForm,"CustomDutyExpenses"+temp,CustomDutyExpense); - addHidden(theForm,"RMCIncludingCustomers"+temp,RMCIncluderate); - addHidden(theForm,"AvilableModvat"+temp,Avlmodvat);*/ - - - } ); - - -function populateValueMainFormForEditImportTax() -{ - var rows =document.getElementById('ImportTax').rows.length; - var TotalLanding=0; - var TotalHighseas=0; - var TotalCustom=0; - var TotalExcise=0; - var TotalExciseED=0; - var TotalExciseSH=0; - var TotalCustomED=0; - var TotalCustomSH=0; - var TotalAdditionalExcise=0; - var TotalGrossDuty=0; - var TotalAvlmodvat=0; - var TotalGrossExpense=0; - var i = 0; - var TotalRMC=0; - do{ - i += 1; - var tr= document.getElementById(i); - if(tr != null) - { - cells = tr.getElementsByTagName('td'); - var rowid = cells[0].innerHTML; - -var AfterLandingCharge= $('#AfterLandingCharge').val() == '' ? '0.00' : $('#AfterLandingCharge').val(); -var AfterHighseas=$('#AfterHighseas').val()==''?'0.00':$('#AfterHighseas').val(); -var AfterCustomduty=$('#AfterCustomduty').val()==''?'0.00':$('#AfterCustomduty').val(); -var AfterExcisedutyTax=$('#AfterExcisedutyTax').val()==''?'0.00':$('#AfterExcisedutyTax').val(); -var AfterExcisedutyEDcess=$('#AfterExcisedutyEDcess').val()==''?'0.00':$('#AfterExcisedutyEDcess').val(); -var AfterExciseDutySH=$("#AfterExcisedutySHcess").val()==''?'0.00':$('#AfterExcisedutySHcess').val(); -var AfterAdditionalExciseduty=$('#AfterAdditionalExciseduty').val()==''?'0.00':$('#AfterAdditionalExciseduty').val(); -var AfterCustomEDcess=$('#AfterCustomEDcess').val()==''?'0.00':$('#AfterCustomEDcess').val(); -var AfterCustomSHcess=$('#AfterCustomSHcess').val()==''?'0.00':$('#AfterCustomSHcess').val(); -var AdditionalExciseduty=$('#AdditionalExciseduty').val()==''?'0.00':$('#AdditionalExciseduty').val(); -var Grossdutypayable=$('#Grossdutypayable').val()==''?'0.00':$('#Grossdutypayable').val(); -var AvailableModvat=$('#AvailableModvat').val()==''?'0.00':$('#AvailableModvat').val(); -var Grossexpenses=$('#Grossexpenses').val()==''?'0.00':$('#Grossexpenses').val(); -var RMC=$('#RMCIncludingCustomers').val()==''?'0.00':$('#RMCIncludingCustomers').val(); -TotalLanding = parseFloat(TotalLanding) + parseFloat(AfterLandingCharge); -TotalHighseas = parseFloat(TotalHighseas) + parseFloat(AfterHighseas); -TotalCustom = parseFloat(TotalCustom) + parseFloat(AfterCustomduty); -TotalExcise = parseFloat(TotalExcise) + parseFloat(AfterExcisedutyTax); -TotalExciseED = parseFloat(TotalExciseED ) + parseFloat(AfterExcisedutyEDcess); -TotalExciseSH = parseFloat(TotalExciseSH) + parseFloat(AfterExciseDutySH); -TotalCustomED = parseFloat(TotalCustomED) + parseFloat(AfterCustomEDcess); -TotalCustomSH = parseFloat(TotalCustomSH ) + parseFloat(AfterCustomSHcess); -TotalAdditionalExcise = parseFloat(TotalAdditionalExcise ) + parseFloat(AdditionalExciseduty); -TotalGrossDuty = parseFloat(TotalGrossDuty) + parseFloat(Grossdutypayable); -TotalAvlmodvat = parseFloat(TotalAvlmodvat ) + parseFloat(AvailableModvat); -TotalGrossExpense = parseFloat(TotalGrossExpense ) + parseFloat(Grossexpenses); -//TotalRMC=parseFloat(TotalRMC)+parseFloat(RMC); - - - - var AfterLandingCharge= $('#AfterLandingCharge').val() == '' ? '0.00' : $('#AfterLandingCharge').val(); -var AfterHighseas=$('#AfterHighseas').val()==''?'0.00':$('#AfterHighseas').val(); -var AfterCustomduty=$('#AfterCustomduty').val()==''?'0.00':$('#AfterCustomduty').val(); -var AfterExcisedutyTax=$('#AfterExcisedutyTax').val()==''?'0.00':$('#AfterExcisedutyTax').val(); -var AfterExcisedutyEDcess=$('#AfterExcisedutyEDcess').val()==''?'0.00':$('#AfterExcisedutyEDcess').val(); -var AfterExciseDutySH=$("#AfterExcisedutySHcess").val()==''?'0.00':$('#AfterExcisedutySHcess').val(); -var AfterCustomEDcess=$('#AfterCustomEDcess').val()==''?'0.00':$('#AfterCustomEDcess').val(); -var AfterCustomSHcess=$('#AfterCustomSHcess').val()==''?'0.00':$('#AfterCustomSHcess').val(); -var AfterAdditionalExciseduty=$('#AfterAdditionalExciseduty').val()==''?'0.00':$('#AfterAdditionalExciseduty').val(); -var Grossdutypayable=$('#Grossdutypayable').val()==''?'0.00':$('#Grossdutypayable').val(); -var AvailableModvat=$('#AvailableModvat').val()==''?'0.00':$('#AvailableModvat').val(); -var Grossexpenses=$('#Grossexpenses').val()==''?'0.00':$('#Grossexpenses').val(); -var totalexp=$('#TotalExp').val()==''?'0.00':$('#TotalExp').val(); -var TotalLanding=$('#txttotallanding').val()==''?'0.00':$('#txttotallanding').val(); -var TotalHighseas=$('#txttotalhighseas').val()==''?'0.00':$('#txttotalhighseas').val(); -var TotalCustom=$('#txttotalcustom').val()==''?'0.00':$('#txttotalcustom').val(); -var TotalExcise=$('#txttotalexcise').val()==''?'0.00':$('#txttotalexcise').val(); -var TotalExciseED=$('#txttotalexciseED').val()==''?'0.00':$('#txttotalexciseED').val(); -var TotalExciseSH=$('#txttotalexciseSH').val()==''?'0.00':$('#txttotalexciseSH').val(); -var TotalCustomED=$('#txttotalcustomED').val()==''?'0.00':$('#txttotalcustomED').val(); -var TotalCustomSH=$('#txttotalcustomSH').val()==''?'0.00':$('#txttotalcustomSH').val(); -var TotalAdditionalExcise=$('#txttotalAdditionalExciseduty').val()==''?'0.00':$('#txttotalAdditionalExciseduty').val(); -var TotalGrossDuty=$('#txttotalgrossduty').val()==''?'0.00':$('#txttotalgrossduty').val(); -var TotalAvlmodvat=$('#txttotalavlmodvat').val()==''?'0.00':$('#txttotalavlmodvat').val(); -var TotalGrossExpense=$('#txttotalgrossexpense').val()==''?'0.00':$('#txttotalgrossexpense').val(); -var TotalOrder=$('#txtToatlOrder').val()==''?'0.00':$('txtToatlOrder').val(); - - } - - - }while (i < rows); - - $('#txttotallanding').val(parseFloat(TotalLanding).toFixed(2)); - $('#txttotalhighseas').val(parseFloat(TotalHighseas).toFixed(2)); - $('#txttotalcustom').val(parseFloat(TotalCustom).toFixed(2)); - $('#txttotalexcise').val(parseFloat(TotalExcise).toFixed(2)); - $('#txttotalexciseED').val(parseFloat(TotalExciseED).toFixed(2)); - $('#txttotalexciseSH').val(parseFloat(TotalExciseSH).toFixed(2)); - $('#txttotalcustomED').val(parseFloat(TotalCustomED).toFixed(2)); - $('#txttotalcustomSH').val(parseFloat(TotalCustomSH).toFixed(2)); - $('#txttotalAdditionalExciseduty').val(parseFloat(TotalAdditionalExcise).toFixed(2)); - $('#txttotalgrossduty').val(parseFloat(TotalGrossDuty).toFixed(2)); - $('#txttotalavlmodvat').val(parseFloat(TotalAvlmodvat).toFixed(2)); - $('#txttotalgrossexpense').val(parseFloat(TotalGrossExpense).toFixed(2)); - $('#txtToatlOrder').val(parseFloat(TotalOrder).toFixed(2)); - - - - //$('#txttotallanding').val(parseFloat(TotalLanding).toFixed(2)); -} - - - -function DeleteRow(rowid) -{ //alert('Delete'); - var DelRows = $('#txtDeletedRow').val(); - var answer = confirm(" Do you want to delete the Item from the List?") - if (answer) - { - //alert('Confirm'); - var td = document.getElementById(rowid); - td.parentNode.removeChild(td); - - var removeItem = $('#materialCode'+rowid).val(); - - - - SelectedMaterialCode.splice( SelectedMaterialCode.indexOf('removeItem'), 1 ); - $.each(SelectedMaterialList.Mat, function(i, el){ - - if (this.materialCode == removeItem){//Type = ''; - SelectedMaterialList.Mat.splice(i, 1); - } - }); - // alert(SelectedMaterialCode); - if(DelRows != '') - { - DelRows = DelRows + ":" + rowid; - } - else - { - DelRows= "0" + ":" + rowid; - } - $('#txtDeletedRow').val(DelRows); - populateValueMainFormForDeleteItem(rowid); - } - - } - - - -function populateValueMainFormForDeleteItem(rowid) -{ - var TotalLanding=0; - var TotalHighseas=0; - var TotalCustom=0; - var TotalExcise=0; - var TotalExciseED=0; - var TotalExciseSH=0; - var TotalCustomED=0; - var TotalCustomSH=0; - var TotalAdditionalExcise=0; - var TotalGrossDuty=0; - var TotalAvlmodvat=0; - var TotalGrossExpense=0; -var AfterLandingCharge= $('#AfterLandingCharge').val() == '' ? '0.00' : $('#AfterLandingCharge').val(); -var AfterHighseas=$('#AfterHighseas').val()==''?'0.00':$('#AfterHighseas').val(); -var AfterCustomduty=$('#AfterCustomduty').val()==''?'0.00':$('#AfterCustomduty').val(); -var AfterExcisedutyTax=$('#AfterExcisedutyTax').val()==''?'0.00':$('#AfterExcisedutyTax').val(); -var AfterExcisedutyEDcess=$('#AfterExcisedutyEDcess').val()==''?'0.00':$('#AfterExcisedutyEDcess').val(); -var AfterExciseDutySH=$("#AfterExcisedutySHcess").val()==''?'0.00':$('#AfterExcisedutySHcess').val(); -var AfterAdditionalExciseduty=$('#AfterAdditionalExciseduty').val()==''?'0.00':$('#AfterAdditionalExciseduty').val(); -var AfterCustomEDcess=$('#AfterCustomEDcess').val()==''?'0.00':$('#AfterCustomEDcess').val(); -var AfterCustomSHcess=$('#AfterCustomSHcess').val()==''?'0.00':$('#AfterCustomSHcess').val(); -var AdditionalExciseduty=$('#AdditionalExciseduty').val()==''?'0.00':$('#AdditionalExciseduty').val(); -var Grossdutypayable=$('#Grossdutypayable').val()==''?'0.00':$('#Grossdutypayable').val(); -var AvailableModvat=$('#AvailableModvat').val()==''?'0.00':$('#AvailableModvat').val(); -var Grossexpenses=$('#Grossexpenses').val()==''?'0.00':$('#Grossexpenses').val(); -var totalExp=$('#TotalExp').val()==''?'0.00':$('#TotalExp').val(); -TotalLanding = parseFloat(TotalLanding) - parseFloat(AfterLandingCharge); -TotalHighseas = parseFloat(TotalHighseas) - parseFloat(AfterHighseas); -TotalCustom = parseFloat(TotalCustom) - parseFloat(AfterCustomduty); -TotalExcise = parseFloat(TotalExcise) - parseFloat(AfterExcisedutyTax); -TotalExciseED = parseFloat(TotalExciseED ) - parseFloat(AfterExcisedutyEDcess); -TotalExciseSH = parseFloat(TotalExciseSH) - parseFloat(AfterExciseDutySH); -TotalCustomED = parseFloat(TotalCustomED) - parseFloat(AfterCustomEDcess); -TotalCustomSH = parseFloat(TotalCustomSH ) - parseFloat(AfterCustomSHcess); -TotalAdditionalExcise = parseFloat(TotalAdditionalExcise ) - parseFloat(AdditionalExciseduty); -TotalGrossDuty = parseFloat(TotalGrossDuty) - parseFloat(Grossdutypayable); -TotalAvlmodvat = parseFloat(TotalAvlmodvat ) - parseFloat(AvailableModvat); -TotalGrossExpense = parseFloat(TotalGrossExpense ) - parseFloat(Grossexpenses); -TotalOrderValue=parseFloat(TotalOrderValue)-parseFloat() - - $('#txttotallanding').val(parseFloat(TotalLanding).toFixed(2)); - $('#txttotalhighseas').val(parseFloat(TotalHighseas).toFixed(2)); - $('#txttotalcustom').val(parseFloat(TotalCustom).toFixed(2)); - $('#txttotalexcise').val(parseFloat(TotalExcise).toFixed(2)); - $('#txttotalexciseED').val(parseFloat(TotalExciseED).toFixed(2)); - $('#txttotalexciseSH').val(parseFloat(TotalExciseSH).toFixed(2)); - $('#txttotalcustomED').val(parseFloat(TotalCustomED).toFixed(2)); - $('#txttotalcustomSH').val(parseFloat(TotalCustomSH).toFixed(2)); - $('#txttotalAdditionalExciseduty').val(parseFloat(TotalAdditionalExcise).toFixed(2)); - $('#txttotalgrossduty').val(parseFloat(TotalGrossDuty).toFixed(2)); - $('#txttotalavlmodvat').val(parseFloat(TotalAvlmodvat).toFixed(2)); - $('#txttotalgrossexpense').val(parseFloat(TotalGrossExpense).toFixed(2)); - $('#txtToatlOrder').val(parseFloat(TotalOrderValue).toFixed(2)); - -} - -$('#Scheduleby').change(function(){ - - $("#Deliverydt").datepicker({ - minDate : 'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true,yearRange: '0:+10' - }); - - }); -$('#Deliverydt').change(function(){ - - $('#Scheduleby').val(''); - - }); - - - - - -function Save(status) -{ -//alert(); -if(status == '0') -{ - stat = '<?php echo PO_DRAFT; ?>'; -} -else -{ - stat = '<?php echo PO_CREATED; ?>'; -} - -$('#txtStatus').val(stat); - -var txtRowCount = $('#txtRowCount').val(); -var txtDeletedRow = $('#txtDeletedRow').val(); -//alert(stat); -//alert(JSON.stringify(txtStatus)); -//exit(); -if(validate()) -{ - if(document.getElementById('ImportTax').rows.length <= 0) - { - - alert('Please Select Line item to Create PO'); - $('#Deliverydt').focus(); - return false; - } - else - { - - $('#content').loader('show'); - $.ajax({ - data:$('.ImportPO').serialize()+"&txtRowCount="+txtRowCount+"&txtDeletedRow="+txtDeletedRow+"&textStatus="+stat, - - //data:$('.CreatealterPO').serialize()+"&TextRowCount="+TextRowCount+"&TextDeQletedRowCount="+TextDeletedRowCount+"&TextTotalOrderValueSummaryService="+TextTotalOrderValueSummaryService+"&TextSpcialInstruction="+TextSpcialInstruction+"&TextExchangerate"+ExcLandingCharge="+hangerate+"Status="+TextStatus, - type:"POST", - url:"<?php echo base_url() ?>purchaseorder/addNewImportPurchaseOrder", - success:function(data) { - if(data) - { - $('#content').loader('hide'); - alert(data); - $('#txtRowCount').val(''); - $('#txtDeletedRow').val(''); - //$('#SpcialInstruction').val(''); - //$('#txtDeliveryAddress').val(''); - window.location = "purchaseorderListing"; - - } - else - { - alert("Error"); - } - - } - - }); - - } - -} - - - - -} - - $(function () { - //$("#revenueTax").DataTable(); - $('#ImportTax').DataTable({ - "paging": false, - "lengthChange": true, - "searching": false, - "ordering": false, - // "info": true, - "autoWidth": true - - }); - }); - - -</script> - diff --git a/application/views/importpopdf.php b/application/views/importpopdf.php deleted file mode 100644 index b5635f11..00000000 --- a/application/views/importpopdf.php +++ /dev/null @@ -1,265 +0,0 @@ -<?php - - - $PONO = ''; - $CompanyAddress = ''; - $CompanyName = ''; - $SuplierName = ''; - $SuplierAddress = ''; - $DeliveryAddress = ''; - $Podt = ''; - $DeliveryDate =''; - $ServiceDescription = ''; - $index=0; - - if(!empty($CompanyDetails)) - { - foreach ($CompanyDetails as $CO) - { - $CompanyName = $CO->CompanyName; - $CompanyAddress = $CO->Address; - } - } - - - if(!empty($POItem)) - { - foreach ($POItem as $PO) - { - $PONO = $PO->PONO; - $SuplierName = $PO->SupplierName; - $SuplierAddress = $PO->Address; - $DeliveryAddress = $PO->DeliveryAddress; - - $dt = new DateTime($PO->PODate, new DateTimeZone('Asia/Kolkata')); - $Podt = $dt->format('d-m-Y'); - $dtDe = new DateTime($PO->DeliveryDate, new DateTimeZone('Asia/Kolkata')); - $DeliveryDate = $dtDe->format('d-m-Y'); - $ServiceDescription =$PO->ServiceDescription; - - } - } - - -?> - - -<div><center> -<h2>IMPORT PURCHASE ORDER</h2> -<a style="color:#515151">PO NO:<?php echo $PONO?> </a></center> - -</div> -<div align="right"> <?php echo $Podt?> </div> -<p> -<b style="color:#3c8dbc"><?php echo $CompanyName; ?></b><br/> <?php echo $CompanyAddress; ?></p> -<table style="border-collapse: collapse;" cellpadding="0" cellspacing="0" border="1" width="100%"> -<tr> -<td> -<p><a style="color:#3c8dbc">Vendor Address : </a> <br/> <?php echo $SuplierName?> <br/><?php echo $SuplierAddress ?></p></td> -<td> -<p><a style="color:#3c8dbc">Delivery To :</a><br/> <?php echo $DeliveryAddress?><p></td></td> -<td><div align="right"> Delivery Date :<?php echo $DeliveryDate?></div></p> - -</tr> -</table> - -<table style="border-collapse:collapse;" cellpadding="0" cellspacing="0" border="1" width="100%"> -<tr style="background:#000;color:#fff;"> -<th>#</th> -<th>Item and Description</th> -<th>Qty</th> -<th>Rate per unit</th> -<th>Basic Price</th> -<th>Landing Charge</th> -<th>High Seas Sales charge</th> -<th>Custom duty (A) </th> -<th>Excise duty (b)</th> -<th>Excise duty ED_cess (C)</th> -<th>Excise duty S & H cess (d) </th> -<th>Custom ED_cess (e)</th> -<th>Custom S & H cess (f)</th> -<th>Additional Excise duty (g)</th> -<th>Gross duty payable</th> -<th>Available Modvat-set-off on import(b + c + d + g)</th> -<th>Gross expenses due to custom duty</th> -<th>purchase rate </th> -<th>Quantity</th> -<th>Custom Duty Expenses</th> -<th>RMC Including Customers</th> -<th>Total Amount</th> -</tr> - - <?php - if(!empty($POItem)) - { - $BasicValue=0; - $ProductPrice = 0; - $AfterLandingCharge= 0; - $AfterHighSeasSalesCharge= 0; - $AfterCustomDuty = 0; - $AfterCustomEdCess = 0; - $AfterCustomSHCess = 0; - $AfterExciseDuty = 0; - $AfterExciseDutyEdCess = 0; - $ExciseDutySHCess = 0; - $AfterAddlExciseDuty = 0; - $Grossdutypayable = 0; - $AvailableModvat = 0; - $Grossexpensesduetocustomduty = 0; - $purchaseratePerKG=0; - $CustomDutyExpensesPerKG=0; - $RMCIncludingCustomersPerKG=0; - $AfterExciseDutySHCess=0; - $TotalOrderValue=0; - $index=0; - - - - foreach($POItem as $record) - { - $index = $index + 1; - - ?> - - -<tr> -<td><?php echo $index ; ?></td> -<td><?php echo $record->MaterialName ; ?></td> -<td align="right"><?php echo $record->Quantity ; ?></td> -<td align="right"><?php echo $record->Rate ; ?></td> -<td align="right"><?php $BasicValue=($record->Quantity*$record->Rate); - echo number_format($BasicValue,2) ; ?></td> -<td align="right"><?php echo $record->AfterLandingCharge; ?></td> -<td align="right"><?php echo $record->AfterHighSeasSalesCharge ; ?></td> -<td align="right"><?php echo $record->AfterCustomDuty ; ?></td> -<td align="right"><?php echo $record->AfterExciseDuty ; ?></td> -<td align="right"><?php echo $record->AfterExciseDutyEdCess ; ?></td> -<td align="right"><?php echo $record->AfterExciseDutySHCess ; ?></td> -<td align="right"><?php echo $record->AfterCustomEdCess ; ?></td> -<td align="right"><?php echo $record->AfterCustomSHCess ; ?></td> -<td align="right"><?php echo $record->AfterAddlExciseDuty ; ?></td> -<td align="right"><?php echo $record->Grossdutypayable ; ?></td> -<td align="right"><?php echo $record->AvailableModvat ; ?></td> -<td align="right"><?php echo $record->Grossexpensesduetocustomduty ; ?></td> -<td align="right"><?php echo $record->purchaseratePerKG ; ?></td> -<td align="right"><?php echo $record->CustomDutyExpensesPerKG ; ?></td> -<td align="right"><?php echo $record->RMCIncludingCustomersPerKG ; ?></td> -<td align="right"><?php echo $record->QuantityKG ; ?></td> -<td align="right"><?php echo $record->TotalOrderValue; ?></td> -</tr> - - - <?php - - $AfterLandingCharge= $AfterLandingCharge+$record->AfterLandingCharge; - $AfterHighSeasSalesCharge=$AfterHighSeasSalesCharge+$record->AfterHighSeasSalesCharge ; - $AfterCustomDuty = $AfterCustomDuty+$record->AfterCustomDuty ; - $AfterCustomEdCess = $AfterCustomEdCess+$record->AfterCustomEdCess ; - $AfterCustomSHCess = $AfterCustomSHCess+$record->AfterCustomSHCess ; - $AfterExciseDuty = $AfterExciseDuty+$record->AfterExciseDuty ; - $AfterExciseDutyEdCess = $AfterExciseDutyEdCess+$record->AfterExciseDutyEdCess ; - $AfterAddlExciseDuty = $AfterAddlExciseDuty+$record->AfterAddlExciseDuty ; - $Grossdutypayable = $Grossdutypayable+$record->Grossdutypayable ; - $AvailableModvat = $AvailableModvat+$record->AvailableModvat ; - $Grossexpensesduetocustomduty = $Grossexpensesduetocustomduty+$record->Grossexpensesduetocustomduty ; - $purchaseratePerKG = $purchaseratePerKG+$record->purchaseratePerKG ; - $CustomDutyExpensesPerKG = $CustomDutyExpensesPerKG+$record->CustomDutyExpensesPerKG ; - $RMCIncludingCustomersPerKG = $RMCIncludingCustomersPerKG+$record->RMCIncludingCustomersPerKG ; - $AfterExciseDutySHCess= $AfterExciseDutySHCess+$record->AfterExciseDutySHCess ; - $TotalOrderValue = $TotalOrderValue+$record->TotalOrderValue; - } - } - - ?> - -</table> -<div align="right"> -<table style="border-collapse: collapse;" cellpadding="0" cellspacing="0" border="1" width="100%"> -<tr> - <td align="right">Landing charge :</td> - <td align="right"><?php echo number_format($AfterLandingCharge,2);?></td> -<br/> -</tr> -<tr> - <td align="right">High seas sales charge:</td> - <td align="right"><?php echo number_format($AfterHighSeasSalesCharge,2);?></td> -<br/> -</tr> - -<tr> -<td align="right">Custom duty : </td> -<td align="right"><?php echo number_format($AfterCustomDuty,2);?></td> -</tr> - -<tr> -<td align="right">Excise duty :</td> -<td align="right"><?php echo number_format($AfterExciseDuty,2);?></td> -</tr> - -<tr> -<td align="right">Excise duty ED_cess : </td> -<td align="right"><?php echo number_format($AfterExciseDutyEdCess,2);?></td> -</tr> - -<tr> -<td align="right">Excise duty S & H cess :</td> -<td align="right"><?php echo number_format($AfterExciseDutySHCess,2);?></td> -</tr> - -<tr> -<td align="right">Custom ED_cess : </td> -<td align="right"><?php echo number_format($AfterCustomEdCess,2);?></td> -</tr> - -<tr> -<td align="right">Custom S & H cess :</td> -<td align="right"><?php echo number_format($AfterCustomSHCess,2);?></td> -</tr> - -<tr> -<td align="right">Additional Excise duty :</td> -<td align="right"><?php echo number_format($AfterAddlExciseDuty,2);?></td> -</tr> - -<tr> -<td align="right">Gross duty payable :</td> -<td align="right"><?php echo number_format($Grossdutypayable,2);?></td> -</tr> - -<tr> -<td align="right">Available Modvat set-off on import :</td> -<td align="right"><?php echo number_format($AvailableModvat,2);?></td> -</tr> - -<tr> -<td align="right">Gross expenses due to custom duty :</td> -<td align="right"><?php echo number_format($Grossexpensesduetocustomduty ,2);?></td> -</tr> - -<tr> -<td align="right">Purchase Rate :</td> -<td align="right"><?php echo number_format($purchaseratePerKG,2);?></td> -</tr> - -<tr> -<td align="right">Custom Duty Expenses :</td> -<td align="right"><?php echo number_format($CustomDutyExpensesPerKG,2);?></td> -</tr> - - -<tr> -<td align="right">RMC Including Customers :</td> -<td align="right"><?php echo number_format($RMCIncludingCustomersPerKG ,2);?></td> -</tr> - - -<tr> -<td align="right"><p><b>Total Order Amount :</b></p></td> -<td align="right"><?php echo number_format($TotalOrderValue,2);?></td> -</tr> - -</table> -<br> -<br> - -</div> \ No newline at end of file diff --git a/application/views/includes/footer.php b/application/views/includes/footer.php deleted file mode 100644 index a6334683..00000000 --- a/application/views/includes/footer.php +++ /dev/null @@ -1,102 +0,0 @@ - - - <footer class="main-footer"> - <div class="pull-right hidden-xs"> - <b>Siddharth Industries</b> Admin System | Version 1.0 - </div> - <strong>Copyright &copy; 2016-2017 <a href="<?php echo base_url(); ?>">Siddharth Industries</a>.</strong> All rights reserved. - </footer> - - <!-- jQuery UI 1.11.2 --> - <!-- <script src="http://code.jquery.com/ui/1.11.2/jquery-ui.min.js" type="text/javascript"></script> --> - <!-- Resolve conflict in jQuery UI tooltip with Bootstrap tooltip --> - <!-- Bootstrap 3.3.2 JS --> - <script src="<?php echo base_url(); ?>assets/bootstrap/js/bootstrap.min.js" type="text/javascript"></script> - <script src="<?php echo base_url(); ?>assets/dist/js/app.min.js" type="text/javascript"></script> - <script src="<?php echo base_url(); ?>assets/js/jquery.validate.js" type="text/javascript"></script> - <script src="<?php echo base_url(); ?>assets/js/validation.js" type="text/javascript"></script> - <script type="text/javascript"> - var windowURL = window.location.href; - pageURL = windowURL.substring(0, windowURL.lastIndexOf('/')); - var x= $('a[href="'+pageURL+'"]'); - x.addClass('active'); - x.parent().addClass('active'); - var y= $('a[href="'+windowURL+'"]'); - y.addClass('active'); - y.parent().addClass('active'); - </script> - <script> - $(document).ready(function() { - $('.dataTables-example').dataTable({ - responsive: true, - "dom": 'T<"clear">lfrtip', - "tableTools": { - "sSwfPath": "js/plugins/dataTables/swf/copy_csv_xls_pdf.swf" - } - }); - - /* Init DataTables */ - var oTable = $('#editable').dataTable(); - - /* Apply the jEditable handlers to the table */ - oTable.$('td').editable( '../example_ajax.php', { - "callback": function( sValue, y ) { - var aPos = oTable.fnGetPosition( this ); - oTable.fnUpdate( sValue, aPos[0], aPos[1] ); - }, - "submitdata": function ( value, settings ) { - return { - "row_id": this.parentNode.getAttribute('id'), - "column": oTable.fnGetPosition( this )[2] - }; - }, - - "width": "90%", - "height": "100%" - } ); - - - }); - - function fnClickAddRow() { - $('#editable').dataTable().fnAddData( [ - "Custom row", - "New row", - "New row", - "New row", - "New row" ] ); - - } - </script> -<style> - body.DTTT_Print { - background: #fff; - - } - .DTTT_Print #page-wrapper { - margin: 0; - background:#fff; - } - - button.DTTT_button, div.DTTT_button, a.DTTT_button { - border: 1px solid #e7eaec; - background: #fff; - color: #676a6c; - box-shadow: none; - padding: 6px 8px; - } - button.DTTT_button:hover, div.DTTT_button:hover, a.DTTT_button:hover { - border: 1px solid #d2d2d2; - background: #fff; - color: #676a6c; - box-shadow: none; - padding: 6px 8px; - } - - .dataTables_filter label { - margin-right: 5px; - - } -</style> - </body> -</html> \ No newline at end of file diff --git a/application/views/includes/header.php b/application/views/includes/header.php deleted file mode 100644 index 12aab97a..00000000 --- a/application/views/includes/header.php +++ /dev/null @@ -1,489 +0,0 @@ -<html> - <head> - <meta charset="UTF-8"> - <title><?php echo $pageTitle; ?></title> - <meta content='width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no' name='viewport'> - <!-- Bootstrap 3.3.4 --> - <link href="<?php echo base_url(); ?>assets/bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css" /> - <!-- FontAwesome 4.3.0 --> - <link href="<?php echo base_url(); ?>assets/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css" /> - <!-- Ionicons 2.0.0 --> - <link href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css" rel="stylesheet" type="text/css" /> - - <!-- Theme style --> - <link href="<?php echo base_url(); ?>assets/dist/css/AdminLTE.min.css" rel="stylesheet" type="text/css" /> - <!-- AdminLTE Skins. Choose a skin from the css/skins - folder instead of downloading all of them to reduce the load. --> - <link href="<?php echo base_url(); ?>assets/dist/css/skins/_all-skins.min.css" rel="stylesheet" type="text/css" /> - - <!-- daterange picker --> - <link rel="stylesheet" href="<?php echo base_url(); ?>assets/plugins/daterangepicker/daterangepicker.css"> - - - - <script type="text/javascript" src="<?php echo base_url();?>assets/js/jquery-1.12.4.js"></script> - <!-- jquery-1.12.4.min --> - <script type="text/javascript" src="<?php echo base_url();?>assets/js/jquery-1.12.4.min.js"></script> - <script type="text/javascript" src="<?php echo base_url();?>assets/js/jquery.jeditable.js"></script> - - <!-- DataTables --> - <script src="<?php echo base_url();?>assets/plugins/datatables/jquery.dataTables.min.js"></script> - <script src="<?php echo base_url();?>assets/plugins/datatables/dataTables.bootstrap.min.js"></script> - - <!-- cdn fot data Table plugins--> - <script type="text/javascript" src="<?php echo base_url();?>assets/js/jquery.autocomplete.js"></script> - <script type="text/javascript" src="<?php echo base_url();?>assets/js/underscore.js"></script> - <script type="text/javascript" src="<?php echo base_url();?>assets/js/jquery-ui-1.10.4.min.js"></script> - <script src="<?php echo base_url();?>assets/dist/jquery.loader.js"></script> - <link href="<?php echo base_url();?>assets/dist/jquery.loader.css" rel="stylesheet" type="text/css" /> - - <!-- For Table Sorting --> - <script type="text/javascript" src="<?php echo base_url();?>assets/js/tsort.min.js"></script> - - <!-- For Searchable dropdown --> - <script src="<?php echo base_url();?>assets/plugins/select2/select2.full.min.js"></script> - <script src="<?php echo base_url();?>assets/plugins/daterangepicker/moment.js"></script> - <script src="<?php echo base_url();?>assets/plugins/daterangepicker/moment.min.js"></script> - <script src="<?php echo base_url();?>assets/plugins/daterangepicker/daterangepicker.js"></script> - - <link href="<?php echo base_url();?>assets/css/default.css" rel="stylesheet" type="text/css" /> - <link href="<?php echo base_url();?>assets/css/style.css" rel="stylesheet" type="text/css" /> - <link href="<?php echo base_url();?>assets/css/animate.css" rel="stylesheet" type="text/css" /> - <link href="<?php echo base_url();?>assets/css/style.min.css" rel="stylesheet" type="text/css" /> - <link href="<?php echo base_url();?>assets/css/bootstrap.css" rel="stylesheet" type="text/css" /> - <link href="<?php echo base_url();?>assets/css/component.css" rel="stylesheet" type="text/css" /> - - <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css" type="text/css"> - - <!-- Bootstrap 3.3.4 --> - <link href="<?php echo base_url(); ?>assets/bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css" /> - <!-- FontAwesome 4.3.0 --> - <link href="<?php echo base_url(); ?>assets/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css" /> - <!-- Ionicons 2.0.0 --> - <link href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css" rel="stylesheet" type="text/css" /> - <!-- Theme style --> - <link href="<?php echo base_url(); ?>assets/dist/css/AdminLTE.min.css" rel="stylesheet" type="text/css" /> - <!-- AdminLTE Skins. Choose a skin from the css/skins - folder instead of downloading all of them to reduce the load. --> - - <!-- Searchable dropdown --> - <link rel="stylesheet" href="<?php echo base_url(); ?>assets/plugins/select2/select2.min.css"> - <link rel="stylesheet" href="<?php echo base_url(); ?>assets/plugins/daterangepicker/daterangepicker.css"> - <!-- fullCalendar 2.2.5 --> - <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.11.2/moment.min.js"></script> - <script src="<?php echo base_url(); ?>assets/plugins/fullcalendar/fullcalendar.min.js"></script> - <!-- fullCalendar 2.2.5--> - <link rel="stylesheet" href="<?php echo base_url(); ?>assets/plugins/fullcalendar/fullcalendar.min.css"> - <link rel="stylesheet" href="<?php echo base_url(); ?>assets/plugins/fullcalendar/fullcalendar.print.css" media="print"> - <!-- fullCalendar 2.2.5--> - <link rel="stylesheet" href="<?php echo base_url(); ?>assets/plugins/fullcalendar/fullcalendar.min.css"> - <link rel="stylesheet" href="<?php echo base_url(); ?>assets/plugins/fullcalendar/fullcalendar.print.css" media="print"> - - <style> - .error{ - color:red; - font-weight: normal; - } - #menu{color: #fff;line-height: 20px;position: relative;display: block; padding: 15px 15px;background-color: transparent;cursor: pointer; - } - - @media (max-width: 500px) - { - .navbar-custom-menu>.navbar-nav>li>.dropdown-menu { - position: absolute; - right: 5%; - left: auto; - border: 1px solid #ddd; - background: #3c8dbc; - } - } - - .box-header{padding:20px ! important} - - select{ - width: 100%; - padding: 2%;} - </style> - - <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" crossorigin="anonymous"> - <title>Siddharth Industries</title> - - <!-- Data Tables--> - <link href="<?php echo base_url();?>assets/css/plugins/dataTables/dataTables.bootstrap.css"/> - <link href="<?php echo base_url();?>assets/css/plugins/dataTables/dataTables.responsive.css"/> - <link href="<?php echo base_url();?>assets/css/plugins/dataTables/dataTables.tableTools.min.css"/> - <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css"> - <link href="//cdn.datatables.net/1.10.13/css/jquery.dataTables.min.css"> - - <script type="text/javascript"> var baseURL = "<?php echo base_url(); ?>";</script> - - </head> - - - <body class="skin-blue sidebar-collapse"> - - - <header class="main-header"> - <!-- Logo --> - <a class="logo"> - <!-- mini logo for sidebar mini 50x50 pixels --> - <span class="logo-mini"><b>SI</b></span> - <!-- logo for regular state and mobile devices --> - <span class="logo-lg"><b>Siddharth Industries</b></span> - </a> - <!-- Header Navbar: style can be found in header.less --> - <nav class="navbar navbar-static-top" role="navigation" > - <!-- Sidebar toggle button--> - <div class="navbar-header"> - <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar"> - <i class="fa fa-bars fa-2x" aria-hidden="true"></i> - </button> - - </div> - <div class="navbar-custom-menu collapse navbar-collapse" id="myNavbar"> - <ul class="nav navbar-nav"> - <!-- User Account: style can be found in dropdown.less --> - <li class="treeview"> - <a href="<?php echo base_url(); ?>dashboard"> - <i class="fa fa-dashboard"></i> <span>Dashboard</span> - </a> - </li> - <?php - if($role == ROLE_ADMIN || $DEPCode == SALES || $DEPCode == FINANCE ) - { - ?> - - <li class="treeview"> - <span id="menu" data-toggle="dropdown"><i class="fa fa-database" aria-hidden="true"></i> Master Details<span class="caret"></span></span> - <ul class="dropdown-menu" role="menu" aria-labelledby="menu1"> - - <?php //echo $DEPCode; - if($role == ROLE_ADMIN || $DEPCode == SALES || $DEPCode == FINANCE ) - { - ?> - <?php - if($DEPCode != FINANCE ) - { - ?> - <li class="treeview"> - <a href="<?php echo base_url(); ?>supplierListing" > - <i class="fa fa-user-secret"></i> - <span class="nav-label">Supplier Details</span> - </a> - </li> - <?php - } - ?> - <?php - if($DEPCode == FINANCE ) - { - ?> - <li class="treeview"> - <a href="<?php echo base_url(); ?>costListing" > - <i class="fa fa-cart-plus"></i> - <span class="nav-label">Cost Details</span> - </a> - </li> - - <li class="treeview"> - <a href="<?php echo base_url(); ?>assetListing" > - <i class="fa fa-cogs"></i> - <span class="nav-label">Asset Details</span> - </a> - </li> - <?php - } - ?> - <?php - if($role == ROLE_ADMIN) - { - ?> - <li class="treeview"> - <a href="<?php echo base_url(); ?>employeeListing" > - <i class="fa fa-user-circle"></i> - <span class="nav-label">Employee Details</span> - </a> - </li> - <?php - } - ?> - <?php - if($role == ROLE_ADMIN ) - { - ?> - <li class="treeview"> - <a href="<?php echo base_url();?>rawmaterialListing" > - <i class="fa fa-files-o"></i> - <span>Material Master</span> - </a> - </li> - <?php - } - ?> - <?php - } - if($role == ROLE_ADMIN ) - { - ?> - - <li class="treeview"> - <a href="<?php echo base_url(); ?>userListing"> - <i class="fa fa-users"></i> - <span>Users</span> - </a> - </li> - <?php - } - - ?> - </ul> - </li> - <?php - } - - ?> - <?php - if( $role == ROLE_MANAGER|| $role == ROLE_EMPLOYEE || $role == ROLE_ADMIN || $DEPCode == MANAGEMENT) - { - ?> - <li class="treeview"> - <span id="menu" data-toggle="dropdown" ><i class="fa fa-thumb-tack"></i> Requisition<span class="caret"></span></span> - <ul class="dropdown-menu" role="menu" aria-labelledby="menu2"> - <?php if($role == ROLE_MANAGER || $role == ROLE_EMPLOYEE || $role == ROLE_ADMIN ) - { - ?> - <li class="treeview"> - <a href="<?php echo base_url(); ?>Requisition"> - <i class="fa fa-arrow-circle-up"></i> - <span>Raise Requisition </span> - </a> - </li> - <?Php - } - ?> - <?php if($role == ROLE_MANAGER ) - { - ?> - <li class="treeview"> - <a href="<?php echo base_url(); ?>ApproveRequisition"> - <i class="fa fa-thumbs-o-up"></i> - <span>Approve Requisition </span> - </a> - </li> - - <?Php - } ?> - <?Php - if( $DEPCode == PURCHASE) - { - ?> - - <li class="treeview"> - <a href="<?php echo base_url(); ?>CreatePO"> - <i class="fa fa-empire"></i> - <span>Purchase Order From Requisition</span> - </a> - </li> - <?Php } ?> - - </ul> - </li> - <?php - } - ?> - - <?php - //if(($DEPCode == FINANCE && $role == ROLE_MANAGER)|| ($(DEPCode == PURCHASE && $role == ROLE_EMPLOYEE))) - if($DEPCode == FINANCE || $DEPCode == PURCHASE || $DEPCode == MANAGEMENT) - { - ?> - - <li class="treeview"> - <span id="menu" data-toggle="dropdown"><i class="fa fa-first-order"></i> Purchase order<span class="caret"></span></span> - <ul class="dropdown-menu" role="menu" aria-labelledby="menu2"> - <?php - //if($DEPCode != FINANCE || $DEPCode == PURCHASE) - if( $DEPCode == PURCHASE) - { - ?> - <li class="treeview"> - <a href="<?php echo base_url(); ?>EmergencyPO"> - <i class="fa fa-ambulance"></i> - <span>Emergency Purchase Order </span> - </a> - </li> - - <?php - } - ?> - <?php - //if($DEPCode == PURCHASE && $role == ROLE_EMPLOYEE) - if($DEPCode == PURCHASE ) - { - ?> - <li class="treeview"> - <a href="<?php echo base_url(); ?>purchaseorderListing"> - <i class="fa fa-list"></i> - <span>Purchase Order List </span> - </a> - </li> - <?php - } - ?> - <!-- For Finance Team for PO approval list--> - <?php - //if($DEPCode == FINANCE && $role == ROLE_MANAGER) - if($DEPCode == FINANCE && $role == ROLE_MANAGER) - { - ?> - <li class="treeview"> - <a href="<?php echo base_url(); ?>purchaseorder/poapproval"> - <i class="fa fa-users"></i> - <span>Approve Purchase Order</span> - </a> - </li> - <?php - } - ?> - <!-- this page is for gate keeper for view the full po list--> - <?php - //if($DEPCode != FINANCE && $DEPCode == PURCHASE) - if( $DEPCode == PURCHASE) - { - ?> - <li class="treeview"> - <a href="<?php echo base_url(); ?>purchaseorder/viewfullpurchaseorder"> - <i class="fa fa-history"></i> - <span>View Purchase Order</span> - </a> - </li> - <?php - } - ?> - - <!--FOR Relese PO Management Team --> - <?php - //if($DEPCode != FINANCE && $DEPCode == PURCHASE) - if( $DEPCode == MANAGEMENT) - { - ?> - <li class="treeview"> - <a href="<?php echo base_url(); ?>purchaseorder/porelease"> - <i class="fa fa-history"></i> - <span>Release Purchase Order</span> - </a> - </li> - <?php - } - ?> - <!--END Relese PO Management Team --> - </ul> - </li> - <?php - } - ?> - <?php - if($DEPCode == FINANCE) - { - ?> - <li class="treeview"> - <span id="menu" data-toggle="dropdown" ><i class="fa fa-thumb-tack"></i> PaySlip <span class="caret"></span></span> - <ul class="dropdown-menu" role="menu" aria-labelledby="menu3"> - <li class="treeview"> - <a href="<?php echo base_url(); ?>ExcelUpload"> - <i class="fa fa-upload"></i> - <span>Upload Salary</span> - </a> - </li> - <li class="treeview"> - <a href="<?php echo base_url(); ?>ExcelUpload2"> - <i class="fa fa-keyboard-o"></i> - <span>Monthly Salary Inputs</span> - </a> - </li> - <li class="treeview"> - <a href="<?php echo base_url(); ?>ViewPay"> - <i class="fa fa-money"></i> - <span>PaySlip Generator</span> - </a> - </li> - <li class="treeview"> - <a href="<?php echo base_url(); ?>payslip/updatepayroll" > - <i class="fa fa-credit-card-alt"></i> <span>Payslip</span> - </a> - </li> - <li class="treeview"> - <a href="<?php echo base_url(); ?>emppayListings" > - <i class="fa fa-credit-card"></i> <span>Employee Salary Details</span> - </a> - </li> - <li class="treeview"> - <a href="<?php echo base_url(); ?>monthlyListings" > - <i class="fa fa-table"></i> <span>Employee Monthly Payment</span> - </a> - </li> - - </ul> - </li> - <?php - } - ?> - <li class="treeview"> - <span id="menu" data-toggle="dropdown" ><i class="fa fa-check-square-o"></i> Inspection<span class="caret"></span></span> - <ul class="dropdown-menu" role="menu" aria-labelledby="menu2"> - <li class="treeview"> - <a href="<?php echo base_url(); ?>Addigr"> - <i class="fa fa-upload"></i> - <span>Inward Gate Register Entry</span> - </a> - </li> - <li class="treeview"> - <a href="<?php echo base_url(); ?>Viewigr"> - <i class="fa fa-eye"></i> - <span>View Inward Gate Register</span> - </a> - </li> - <li class="treeview"> - <a href="<?php echo base_url(); ?>inwardgateregister/materialinspectionreport"> - <i class="fa fa-upload"></i> - <span>Material Inspection Report Entry</span> - </a> - </li> - <li class="treeview"> - <a href="<?php echo base_url(); ?>inwardgateregister/viewmaterialinspectionreport"> - <i class="fa fa-upload"></i> - <span>View Material Inspection Report</span> - </a> - </li> - </ul> - </li> - <li class="dropdown user user-menu"> - <a href="#" class="dropdown-toggle" data-toggle="dropdown"> - <img src="<?php echo base_url(); ?>assets/dist/img/avatar.png" class="user-image" alt="User Image"/> - <span class="hidden-xs"><?php echo $name; ?></span> - </a> - <ul class="dropdown-menu"> - <!-- User image --> - <li class="user-header"> - <img src="<?php echo base_url(); ?>assets/dist/img/avatar.png" class="img-circle" alt="User Image" /> - <p> - <?php echo $name; ?>-<?php echo $role; ?> - <small><?php echo $role_text; ?></small> - </p> - </li> - <!-- Menu Footer--> - <li class="user-footer"> - <div class="pull-left"> - <a href="<?php echo base_url(); ?>loadChangePass" class="btn btn-default btn-flat">Change Password</a> - </div> - <div class="pull-right"> - <a href="<?php echo base_url(); ?>logout" class="btn btn-default btn-flat">Sign out</a> - </div> - </li> - </ul> - </li> - </ul> - </div> - </nav> - </header> - diff --git a/application/views/includes/header.php~ b/application/views/includes/header.php~ deleted file mode 100644 index a5a03d54..00000000 --- a/application/views/includes/header.php~ +++ /dev/null @@ -1,461 +0,0 @@ - -<html> - <head> - <meta charset="UTF-8"> - <title><?php echo $pageTitle; ?></title> - <meta content='width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no' name='viewport'> - <!-- Bootstrap 3.3.4 --> - <link href="<?php echo base_url(); ?>assets/bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css" /> - <!-- FontAwesome 4.3.0 --> - <link href="<?php echo base_url(); ?>assets/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css" /> - <!-- Ionicons 2.0.0 --> - <link href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css" rel="stylesheet" type="text/css" /> - - <!-- Theme style --> - <link href="<?php echo base_url(); ?>assets/dist/css/AdminLTE.min.css" rel="stylesheet" type="text/css" /> - <!-- AdminLTE Skins. Choose a skin from the css/skins - folder instead of downloading all of them to reduce the load. --> - <link href="<?php echo base_url(); ?>assets/dist/css/skins/_all-skins.min.css" rel="stylesheet" type="text/css" /> - - <!-- daterange picker --> - <link rel="stylesheet" href="<?php echo base_url(); ?>assets/plugins/daterangepicker/daterangepicker.css"> - - - - <script type="text/javascript" src="<?php echo base_url();?>assets/js/jquery-1.12.4.js"></script> - <!-- jquery-1.12.4.min --> - <script type="text/javascript" src="<?php echo base_url();?>assets/js/jquery-1.12.4.min.js"></script> - <script type="text/javascript" src="<?php echo base_url();?>assets/js/jquery.jeditable.js"></script> - - <!-- DataTables --> - <script src="<?php echo base_url();?>assets/plugins/datatables/jquery.dataTables.min.js"></script> - <script src="<?php echo base_url();?>assets/plugins/datatables/dataTables.bootstrap.min.js"></script> - - <!-- cdn fot data Table plugins--> - <script type="text/javascript" src="<?php echo base_url();?>assets/js/jquery.autocomplete.js"></script> - <script type="text/javascript" src="<?php echo base_url();?>assets/js/underscore.js"></script> - <script type="text/javascript" src="<?php echo base_url();?>assets/js/jquery-ui-1.10.4.min.js"></script> - <script src="<?php echo base_url();?>assets/dist/jquery.loader.js"></script> - <link href="<?php echo base_url();?>assets/dist/jquery.loader.css" rel="stylesheet" type="text/css" /> - - <!-- For Table Sorting --> - <script type="text/javascript" src="<?php echo base_url();?>assets/js/tsort.min.js"></script> - - <!-- For Searchable dropdown --> - <script src="<?php echo base_url();?>assets/plugins/select2/select2.full.min.js"></script> - <script src="<?php echo base_url();?>assets/plugins/daterangepicker/moment.js"></script> - <script src="<?php echo base_url();?>assets/plugins/daterangepicker/moment.min.js"></script> - <script src="<?php echo base_url();?>assets/plugins/daterangepicker/daterangepicker.js"></script> - - <link href="<?php echo base_url();?>assets/css/default.css" rel="stylesheet" type="text/css" /> - <link href="<?php echo base_url();?>assets/css/style.css" rel="stylesheet" type="text/css" /> - <link href="<?php echo base_url();?>assets/css/animate.css" rel="stylesheet" type="text/css" /> - <link href="<?php echo base_url();?>assets/css/style.min.css" rel="stylesheet" type="text/css" /> - <link href="<?php echo base_url();?>assets/css/bootstrap.css" rel="stylesheet" type="text/css" /> - <link href="<?php echo base_url();?>assets/css/component.css" rel="stylesheet" type="text/css" /> - - <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css" type="text/css"> - - <!-- Bootstrap 3.3.4 --> - <link href="<?php echo base_url(); ?>assets/bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css" /> - <!-- FontAwesome 4.3.0 --> - <link href="<?php echo base_url(); ?>assets/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css" /> - <!-- Ionicons 2.0.0 --> - <link href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css" rel="stylesheet" type="text/css" /> - <!-- Theme style --> - <link href="<?php echo base_url(); ?>assets/dist/css/AdminLTE.min.css" rel="stylesheet" type="text/css" /> - <!-- AdminLTE Skins. Choose a skin from the css/skins - folder instead of downloading all of them to reduce the load. --> - - <!-- Searchable dropdown --> - <link rel="stylesheet" href="<?php echo base_url(); ?>assets/plugins/select2/select2.min.css"> - <link rel="stylesheet" href="<?php echo base_url(); ?>assets/plugins/daterangepicker/daterangepicker.css"> - <!-- fullCalendar 2.2.5 --> - <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.11.2/moment.min.js"></script> - <script src="<?php echo base_url(); ?>assets/plugins/fullcalendar/fullcalendar.min.js"></script> - <!-- fullCalendar 2.2.5--> - <link rel="stylesheet" href="<?php echo base_url(); ?>assets/plugins/fullcalendar/fullcalendar.min.css"> - <link rel="stylesheet" href="<?php echo base_url(); ?>assets/plugins/fullcalendar/fullcalendar.print.css" media="print"> - <!-- fullCalendar 2.2.5--> - <link rel="stylesheet" href="<?php echo base_url(); ?>assets/plugins/fullcalendar/fullcalendar.min.css"> - <link rel="stylesheet" href="<?php echo base_url(); ?>assets/plugins/fullcalendar/fullcalendar.print.css" media="print"> - - <style> - .error{ - color:red; - font-weight: normal; - } - #menu{color: #fff;line-height: 20px;position: relative;display: block; padding: 15px 15px;background-color: transparent;cursor: pointer; - } - - @media (max-width: 500px) - { - .navbar-custom-menu>.navbar-nav>li>.dropdown-menu { - position: absolute; - right: 5%; - left: auto; - border: 1px solid #ddd; - background: #3c8dbc; - } - } - - .box-header{padding:20px ! important} - - select{ - width: 100%; - padding: 2%;} - </style> - - <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" crossorigin="anonymous"> - <title>Siddharth Industries</title> - - <!-- Data Tables--> - <link href="<?php echo base_url();?>assets/css/plugins/dataTables/dataTables.bootstrap.css"/> - <link href="<?php echo base_url();?>assets/css/plugins/dataTables/dataTables.responsive.css"/> - <link href="<?php echo base_url();?>assets/css/plugins/dataTables/dataTables.tableTools.min.css"/> - <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css"> - <link href="//cdn.datatables.net/1.10.13/css/jquery.dataTables.min.css"> - - <script type="text/javascript"> var baseURL = "<?php echo base_url(); ?>";</script> - - </head> - - - <body class="skin-blue sidebar-collapse"> - - - <header class="main-header"> - <!-- Logo --> - <a class="logo"> - <!-- mini logo for sidebar mini 50x50 pixels --> - <span class="logo-mini"><b>SI</b></span> - <!-- logo for regular state and mobile devices --> - <span class="logo-lg"><b>Siddharth Industries</b></span> - </a> - <!-- Header Navbar: style can be found in header.less --> - <nav class="navbar navbar-static-top" role="navigation" > - <!-- Sidebar toggle button--> - <div class="navbar-header"> - <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar"> - <i class="fa fa-bars fa-2x" aria-hidden="true"></i> - </button> - - </div> - <div class="navbar-custom-menu collapse navbar-collapse" id="myNavbar"> - <ul class="nav navbar-nav"> - <!-- User Account: style can be found in dropdown.less --> - <li class="treeview"> - <a href="<?php echo base_url(); ?>dashboard"> - <i class="fa fa-dashboard"></i> <span>Dashboard</span> - </a> - </li> - <?php - if($role == ROLE_ADMIN || $DEPCode == SALES || $DEPCode == FINANCE ) - { - ?> - - <li class="treeview"> - <span id="menu" data-toggle="dropdown"><i class="fa fa-database" aria-hidden="true"></i> Master Details<span class="caret"></span></span> - <ul class="dropdown-menu" role="menu" aria-labelledby="menu1"> - - <?php //echo $DEPCode; - if($role == ROLE_ADMIN || $DEPCode == SALES || $DEPCode == FINANCE ) - { - ?> - <?php - if($DEPCode != FINANCE ) - { - ?> - <li class="treeview"> - <a href="<?php echo base_url(); ?>supplierListing" > - <i class="fa fa-user-secret"></i> - <span class="nav-label">Supplier Details</span> - </a> - </li> - <?php - } - ?> - <?php - if($DEPCode == FINANCE ) - { - ?> - <li class="treeview"> - <a href="<?php echo base_url(); ?>costListing" > - <i class="fa fa-cart-plus"></i> - <span class="nav-label">Cost Details</span> - </a> - </li> - - <li class="treeview"> - <a href="<?php echo base_url(); ?>assetListing" > - <i class="fa fa-cogs"></i> - <span class="nav-label">Asset Details</span> - </a> - </li> - <?php - } - ?> - <?php - if($role == ROLE_ADMIN) - { - ?> - <li class="treeview"> - <a href="<?php echo base_url(); ?>employeeListing" > - <i class="fa fa-user-circle"></i> - <span class="nav-label">Employee Details</span> - </a> - </li> - <?php - } - ?> - <?php - if($role == ROLE_ADMIN ) - { - ?> - <li class="treeview"> - <a href="<?php echo base_url();?>rawmaterialListing" > - <i class="fa fa-files-o"></i> - <span>Material Master</span> - </a> - </li> - <?php - } - ?> - <?php - } - if($role == ROLE_ADMIN ) - { - ?> - - <li class="treeview"> - <a href="<?php echo base_url(); ?>userListing"> - <i class="fa fa-users"></i> - <span>Users</span> - </a> - </li> - <?php - } - - ?> - </ul> - </li> - <?php - } - - ?> - <?php - if( $role == ROLE_MANAGER|| $role == ROLE_EMPLOYEE || $role == ROLE_ADMIN) - { - ?> - <li class="treeview"> - <span id="menu" data-toggle="dropdown" ><i class="fa fa-thumb-tack"></i> Requisition<span class="caret"></span></span> - <ul class="dropdown-menu" role="menu" aria-labelledby="menu2"> - <?php if($role == ROLE_MANAGER || $role == ROLE_EMPLOYEE || $role == ROLE_ADMIN ) - { - ?> - <li class="treeview"> - <a href="<?php echo base_url(); ?>Requisition"> - <i class="fa fa-arrow-circle-up"></i> - <span>Raise Requisition </span> - </a> - </li> - <?Php - } - ?> - <?php if($role == ROLE_MANAGER ) - { - ?> - <li class="treeview"> - <a href="<?php echo base_url(); ?>ApproveRequisition"> - <i class="fa fa-thumbs-o-up"></i> - <span>Approve Requisition </span> - </a> - </li> - - <?Php - } ?> - <?Php - if($DEPCode != FINANCE || $DEPCode == PURCHASE) - { - ?> - - <li class="treeview"> - <a href="<?php echo base_url(); ?>CreatePO"> - <i class="fa fa-empire"></i> - <span>Purchase Order From Requisition</span> - </a> - </li> - <?Php } ?> - - </ul> - </li> - <?php - } - ?> - - <?php - //if(($DEPCode == FINANCE && $role == ROLE_MANAGER)|| ($(DEPCode == PURCHASE && $role == ROLE_EMPLOYEE))) - if($DEPCode == FINANCE || $DEPCode == PURCHASE ) - { - ?> - - <li class="treeview"> - <span id="menu" data-toggle="dropdown"><i class="fa fa-first-order"></i> Purchase order<span class="caret"></span></span> - <ul class="dropdown-menu" role="menu" aria-labelledby="menu2"> - <?php - //if($DEPCode != FINANCE || $DEPCode == PURCHASE) - if( $DEPCode == PURCHASE) - { - ?> - <li class="treeview"> - <a href="<?php echo base_url(); ?>EmergencyPO"> - <i class="fa fa-ambulance"></i> - <span>Emergency Purchase Order </span> - </a> - </li> - - <?php - } - ?> - <?php - //if($DEPCode == PURCHASE && $role == ROLE_EMPLOYEE) - if($DEPCode == PURCHASE ) - { - ?> - <li class="treeview"> - <a href="<?php echo base_url(); ?>purchaseorderListing"> - <i class="fa fa-list"></i> - <span>Purchase Order List </span> - </a> - </li> - <?php - } - ?> - <!-- For Finance Team for PO approval list--> - <?php - //if($DEPCode == FINANCE && $role == ROLE_MANAGER) - if($DEPCode == FINANCE && $role == ROLE_MANAGER) - { - ?> - <li class="treeview"> - <a href="<?php echo base_url(); ?>purchaseorder/poapproval"> - <i class="fa fa-users"></i> - <span>Approve Purchase Order</span> - </a> - </li> - <?php - } - ?> - <!-- this page is for gate keeper for view the full po list--> - <?php - //if($DEPCode != FINANCE && $DEPCode == PURCHASE) - if( $DEPCode == PURCHASE) - { - ?> - <li class="treeview"> - <a href="<?php echo base_url(); ?>purchaseorder/viewfullpurchaseorder"> - <i class="fa fa-history"></i> - <span>View Purchase Order</span> - </a> - </li> - <?php - } - ?> - </ul> - </li> - <?php - } - ?> - <?php - if($DEPCode == FINANCE) - { - ?> - <li class="treeview"> - <span id="menu" data-toggle="dropdown" ><i class="fa fa-thumb-tack"></i> PaySlip <span class="caret"></span></span> - <ul class="dropdown-menu" role="menu" aria-labelledby="menu3"> - <li class="treeview"> - <a href="<?php echo base_url(); ?>ExcelUpload"> - <i class="fa fa-upload"></i> - <span>Upload Salary</span> - </a> - </li> - <li class="treeview"> - <a href="<?php echo base_url(); ?>ExcelUpload2"> - <i class="fa fa-keyboard-o"></i> - <span>Monthly Salary Inputs</span> - </a> - </li> - <li class="treeview"> - <a href="<?php echo base_url(); ?>ViewPay"> - <i class="fa fa-money"></i> - <span>PaySlip Generator</span> - </a> - </li> - <li class="treeview"> - <a href="<?php echo base_url(); ?>payslip/updatepayroll" > - <i class="fa fa-credit-card-alt"></i> <span>Payslip</span> - </a> - </li> - <li class="treeview"> - <a href="<?php echo base_url(); ?>emppayListings" > - <i class="fa fa-credit-card"></i> <span>Employee Salary Details</span> - </a> - </li> - <li class="treeview"> - <a href="<?php echo base_url(); ?>monthlyListings" > - <i class="fa fa-table"></i> <span>Employee Monthly Payment</span> - </a> - </li> - - </ul> - </li> - <?php - } - ?> - <li class="treeview"> - <span id="menu" data-toggle="dropdown" ><i class="fa fa-check-square-o"></i> Inspection<span class="caret"></span></span> - <ul class="dropdown-menu" role="menu" aria-labelledby="menu2"> - <li class="treeview"> - <a href="<?php echo base_url(); ?>inwardgateregister/inwardgateregister"> - <i class="fa fa-upload"></i> - <span>Inward Gate Register</span> - </a> - </li> - <li class="treeview"> - <a href="<?php echo base_url(); ?>inwardgateregister/materialinspectionreport"> - <i class="fa fa-upload"></i> - <span>Material Inspection Report</span> - </a> - </li> - </ul> - </li> - <li class="dropdown user user-menu"> - <a href="#" class="dropdown-toggle" data-toggle="dropdown"> - <img src="<?php echo base_url(); ?>assets/dist/img/avatar.png" class="user-image" alt="User Image"/> - <span class="hidden-xs"><?php echo $name; ?></span> - </a> - <ul class="dropdown-menu"> - <!-- User image --> - <li class="user-header"> - <img src="<?php echo base_url(); ?>assets/dist/img/avatar.png" class="img-circle" alt="User Image" /> - <p> - <?php echo $name; ?>-<?php echo $role; ?> - <small><?php echo $role_text; ?></small> - </p> - </li> - <!-- Menu Footer--> - <li class="user-footer"> - <div class="pull-left"> - <a href="<?php echo base_url(); ?>loadChangePass" class="btn btn-default btn-flat">Change Password</a> - </div> - <div class="pull-right"> - <a href="<?php echo base_url(); ?>logout" class="btn btn-default btn-flat">Sign out</a> - </div> - </li> - </ul> - </li> - </ul> - </div> - </nav> - </header> - diff --git a/application/views/includes/pdffooter.php b/application/views/includes/pdffooter.php deleted file mode 100644 index 5d476772..00000000 --- a/application/views/includes/pdffooter.php +++ /dev/null @@ -1,5 +0,0 @@ -<div style="border:1px solid #000;">Amount chargable (in words)<br/><br/><br/><br/></div> -<div style="text-align:right;border:1px solid #000;"> for Siddharth Industries <br/><br/><br/>Authorised Signature</div> -<div><center> -This is Computer Generated Document</center> -</div> \ No newline at end of file diff --git a/application/views/includes/pdfheader.php b/application/views/includes/pdfheader.php deleted file mode 100644 index 5a9dcbb9..00000000 --- a/application/views/includes/pdfheader.php +++ /dev/null @@ -1,4 +0,0 @@ -<div> -<center><h2>SIDDHARTH INDUSTRIES - PURCHASE ORDER</h2></center> -<br/><span style="text-align:right;"><?php echo "Date : " . date("d/m/y"); ?> </span><!--<span style="margin-left:700px;"> <?php echo "Day: ". date("l"); ?></span>--><br/> -</div> \ No newline at end of file diff --git a/application/views/index.html b/application/views/index.html deleted file mode 100644 index c942a79c..00000000 --- a/application/views/index.html +++ /dev/null @@ -1,10 +0,0 @@ -<html> -<head> - <title>403 Forbidden</title> -</head> -<body> - -<p>Directory access is forbidden.</p> - -</body> -</html> \ No newline at end of file diff --git a/application/views/inwardgateregister.php b/application/views/inwardgateregister.php deleted file mode 100644 index 116ae4b3..00000000 --- a/application/views/inwardgateregister.php +++ /dev/null @@ -1,448 +0,0 @@ - <script> - - $(document).ready(function(){ - - $("#PONO").select2(); - //$("#PurchaseOrderNoview").select2(); - $("#InvoiceDate").datepicker({ - //minDate : d, - maxDate : 'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true,yearRange: '-100:+0' - }); - }); - - - - </script> - - <style> - .modal - { - padding-right:25% ! important; - } - .select2 - { - width: 100% ! important; - } - .num{ - text-align:right; - } - .dataTables_wrapper { - padding-bottom: 0px; -} - </style> -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - <center>Siddharth Industries - Inward Gate Register (IGR) Entry</center> - </h1> - </section> - <section class="content"><br/> - <div class="row" style="padding-bottom:1%"> - <div class="col-md-12"> - <div class="col-md-3"> -<?php - $attributes = array('class' => 'form-label-left IGR ','name' => 'IGR','id' => 'IGR'); - - echo form_open($this->config->base_url().'/inwardgateregister/addNewigr/',$attributes); ?> - <label>Select Purchase Order NO </label> - <div> - <?php - $options = array("-1"=>'Purchase Order No'); - - if(!empty($PO_NO)) - { - //print_r($PO_NO); - foreach ($PO_NO as $SI): - - $options[$SI->PONO] = $SI->PONO .'-'. $SI->SupplierName ; - $PONO = $SI->PONO; - - -endforeach; - - } - - echo form_dropdown('PONO', $options,set_value('PONO'),'id="PONO"' ,'class="form-control select2"' , 'required="true"'); - -?> - - </div> - </div> - - <div class="col-md-3"> - <label>Supplier Name </label> - <div class="form-group"> - <?php - $data = array('name' => 'SupplierName','value' => set_value('SupplierName'),'id'=>'Sup', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-3"> - <label>Supplier Address</label> - <div class="form-group"> - <?php - $data = array('name' => 'Address','value' => set_value('Address'),'id'=>'Add', 'class' => 'form-control' ,'readonly' => 'true' , 'rows'=>'3' ,'columns'=> '3'); - echo Form_textarea($data); - ?> - </div> - </div> - <div class="col-md-3"> - <label>Comments Of Special Instructions</label> - <div class="form-group"> - <?php - $data = array('name' => 'Comments','value' => set_value('Comments'),'id'=>'ser', 'class' => 'form-control' ,'readonly' => 'true' , 'rows'=>'3' ,'columns'=> '3'); - echo Form_textarea($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-3"> - <label>Delivery Challan / Invoice NO</label> - <?php - $data = array('name' => 'InvoiceNo','value' => set_value('InvoiceNo'),'id'=>'InvoiceNo', 'class' => 'form-control', 'required=>"true"' ); - - echo form_input($data); - ?> - </div> - <div class="col-md-3"> - <label>Delivery Challan / Invoice Date</label> - <?php - $data = array('name' => 'InvoiceDate','value' => set_value('InvoiceDate'),'id'=>'InvoiceDate', 'class' => 'form-control num', 'required'=>'true' ); - echo form_input($data); - ?> - - </div> - <div class="col-md-3"> - <label>Vechicle NO</label> - <?php - $data = array('name' => 'VehicleNo','value' => set_value('VehicleNo'),'pattern=>"^[A-Z]{2}\s[0-9]{2}\s[A-Z]{2}\s[0-9]{4}$"','id'=>'VehicleNo', 'class' => 'form-control num', 'required'=>'true','onchange'=>'validate_Vechicle();' ); - echo form_input($data); - ?> - <span pattern="" required="true"></span> - </div> - <div class="col-md-3"> - <label>Courier NO</label> - <?php - $data = array('name' => 'CourierNo','value' => set_value('CourierNo'),'id'=>'CourierNo', 'class' => 'form-control num', 'required'=>'true' ); - echo form_input($data); - ?> - </div> - </div> - - - <div class="row"> - <div class="col-md-12"> - - <table id="Inwardgateregistertable" class="table table-bordered table-hover editabletable IGR_Line" style="background-color:#fff;font-size:12px;"> - <thead style="background-color:#ddf"> - <tr> - <th>S.NO</th> - <th>Item Code</th> - <th>Material</th> - <th>UOM</th> - <th>Ordered Quantity</th> - <th>Received Quantity as per challan</th> - <th>Remarks</th> - - </tr> - </thead> - <tbody id ="IGRappend"> - - - - </tbody> - <!--<tr> - <td>2</td> - <td>Sand12</td> - <td>wast sand</td> - <td>kgs</td> - <td class="num">1000</td> - <td contenteditable="true" class="num">1000</td> - <td contenteditable="true" class="num">Received</td> - </tr>--> - - - - </table> - <input type="hidden" name="txtRowCount" id="txtRowCount" /> - - - </div> - <div class="col-md-1 col-md-offset-11"> - <a class="btn btn-primary" type="submit" id="Save" onclick="Save(0);">Generate IGR</a> - </div> - </div> - - </div> - </div> - - - </section> - </div> - - - <script> - -<!-- script for table , It works under the datatable plugin--> -function validate_Vechicle(){ - - var reg = /^^[A-Z]{2}\s[0-9]{2}\s[A-Z]{2}\s[0-9]{4}$/; - // alert(); - var VehicleNo = $('#VehicleNo').val(); - if(VehicleNo != "") - { - if (reg.test(VehicleNo) == false) - { - alert('Please Enter Valid Vehicle Number'); - return (false); - } - else - { - return true; - } - } - -} -function validate() - { - - -if($('#PONO').val()=='-1') - { - - alert("Please select PurchaseOrder"); - } - - else if($('#InvoiceNo').val() == '' ) - { - alert('Please Enter Invoice Number' ); - } - else if($('#InvoiceDate').val() == '' ) - { - alert('Please Enter Invoice Date' ); - } -/*else if($('#VehicleNo').val() == '' ) - { - alert('Please Enter Vechicle Number' ); - } */ - - else if ($('#Quantity' >= '#ReceivedQuantity').val()) { - - - alert("Please Enter Correct Invoice Quantity"); - } - else - { - return true; - } - - - } - - </script> - <script> - $(function () { - $('#Inwardgateregistertable').DataTable({ - "paging": false, - "lengthChange": false, - "searching": false, - "ordering": false, - "info": false, - "autoWidth": false - - }); - }); - </script> - <script> - $(function() { - - $('#PONO').change(function() { - - - var id = $('#PONO').val(); - - - - var y = <?php echo json_encode($PO_NO, JSON_PRETTY_PRINT) ?>; - //alert(y); - $.each(y, function(idx, obj) { - // alert(obj.PONO); - if(id == obj.PONO) - { - $("#po").val(obj.PONO); - $("#Sup").val(obj.SupplierName); - // alert(obj.SupplierName); - $("#Add").val(obj.Address); - $("#del").val(obj.DeliveryDate); - - $("#ser").val(obj.ServiceDescription); - //alert(obj.ServiceDescription); - //$("#item").text(obj.MaterialCode); - - //$("MaterialName").text(obj.MaterialName); - } - }); - - //alert(id); - $.ajax({ - data:{id:id}, - type:"POST", - url:"<?php echo base_url() ?>inwardgateregister/IGRITEM", - - success:function(data) { - - // alert(data); - - //var myData = JSON.parse('{"name":"hai"}'); - //alert("hao"+myData.name); - //if(data) - //{ - var trHTML = ''; - $.each(JSON.parse(data), function (i, item) { - - i=i+1; - trHTML += '<tr>' + - '<td>' + i + '</td>' + - '<td name="MaterialName" id="MaterialCode" onchange="test('+i+')">' + item.MaterialCode + '</td>' + - '<td>' + item.MaterialName + '</td>' + - '<td name="UOM">' + item.UOM + '</td>' + - '<td name="Quantity1'+i+'" id="Quantity_1'+i+'" onchange="test('+i+')">' + item.Quantity + '</td>' + - '<td data-name="sel" ><input type="text" onchange="test('+i+')"id="QuantityAsPerInvoice'+ i +'" name="QuantityAsPerInvoice'+ i +'" class="form"></td>' + - - '<td><input type="text" id="Remark'+ i +'" onchange = "test('+i+')" name="Remark'+ i +'" class="form"> </td>' + - '</tr>'; - $('#txtRowCount').val(i); - - $('<input>').attr({ - type: 'hidden', - id: 'MaterialCode'+i, - value:item.MaterialCode, - name: 'MaterialCode'+i -}).appendTo('form'); - - - - - // $('<input>').attr({ - // type: 'hidden', - // id: 'Remark'+i, - - // name: 'Remarks'+i -// }).appendTo('form'); - - }); - //alert(trHTML); - $("#IGRappend").empty(); - - //$("#IGRappend").append(trHTML); - $('#Inwardgateregistertable > tbody').append(trHTML); - - } - - }); - - - - - - - - - - - }); - - - - }); - - function test(Rowid){ - // alert($('#MaterialCode'+Rowid).val()); - //alert($('#Quantity1'+Rowid).val()); - //alert(Rowid); - var q =$("#QuantityAsPerInvoice"+Rowid).val(); - // alert(q); - var r =$("#Remark"+Rowid).val(); - //alert($("#Quantity"+Rowid).val()); - var s =($("#Quantity_1"+Rowid).text()); - //alert(s); -$('<input>').attr({ - type: 'hidden', - id: 'Quantity'+Rowid, - value:s, - name: 'Quantity'+Rowid - -}).appendTo('form'); -//alert(s) - $('<input>').attr({ - type: 'hidden', - id: 'ReceivedQuantity'+Rowid, - value:q, - name: 'ReceivedQuantity'+Rowid - }).appendTo('form'); - //alert(q); - $('<input>').attr({ - type: 'hidden', - id: 'Remarks'+Rowid, - value:r, - name: 'Remarks'+Rowid - }).appendTo('form'); - - - - - - - if ( s >= q) { - - } else { - alert("Please Enter Correct Invoice Quantity"); - } - -} -</script> - - <script> -function Save() -{ - - - if (validate()) - { - - - - - //$('#content').loader('show'); - $.ajax({ - data:$('.IGR').serialize(), - type:"POST", - url:"<?php echo base_url() ?>inwardgateregister/addNewigr", - - success:function(data) { - console.log(data); - if(data) - { - alert(data); - window.location ="<?php echo base_url() ?>inwardgateregister/viewinwardgateregister"; - - } - else - { - alert("Error"); - } - - } - - }); - - } -} - - -</script> - diff --git a/application/views/login.php b/application/views/login.php deleted file mode 100644 index 98081f4c..00000000 --- a/application/views/login.php +++ /dev/null @@ -1,74 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="UTF-8"> - <title>Siddharth Industries | Admin System Log in</title> - <meta content='width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no' name='viewport'> - <link href="<?php echo base_url(); ?>assets/bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css" /> - <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" type="text/css" /> - <link href="<?php echo base_url(); ?>assets/dist/css/AdminLTE.min.css" rel="stylesheet" type="text/css" /> - - <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --> - <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> - <!--[if lt IE 9]> - <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> - <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> - <![endif]--> - </head> - <body class="login-page"> - <div class="login-box"> - <div class="login-logo"> - <a href="#"><b>Siddharth Industries</b><br>Admin System</a> - </div><!-- /.login-logo --> - <div class="login-box-body"> - <p class="login-box-msg">Log In</p> - <?php $this->load->helper('form'); ?> - <div class="row"> - <div class="col-md-12"> - <?php echo validation_errors('<div class="alert alert-danger alert-dismissable">', ' <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button></div>'); ?> - </div> - </div> - <?php - $this->load->helper('form'); - $error = $this->session->flashdata('error'); - if($error) - { - ?> - <div class="alert alert-danger alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('error'); ?> - </div> - <?php } ?> - - <form action="<?php echo base_url(); ?>loginMe" method="post"> - <div class="form-group has-feedback"> - <input type="email" class="form-control" placeholder="Email" name="email" required /> - <span class="glyphicon glyphicon-envelope form-control-feedback"></span> - </div> - <div class="form-group has-feedback"> - <input type="password" class="form-control" placeholder="Password" name="password" required /> - <span class="glyphicon glyphicon-lock form-control-feedback"></span> - </div> - <div class="row"> - <div class="col-xs-8"> - <!-- <div class="checkbox icheck"> - <label> - <input type="checkbox"> Remember Me - </label> - </div> --> - </div><!-- /.col --> - <div class="col-xs-4"> - <input type="submit" class="btn btn-primary btn-block btn-flat" value="Sign In" /> - </div><!-- /.col --> - </div> - </form> - - <a href="<?php echo base_url() ?>forgotPassword">Forgot Password</a><br> - - </div><!-- /.login-box-body --> - </div><!-- /.login-box --> - - <script src="<?php echo base_url(); ?>assets/js/jQuery-2.1.4.min.js"></script> - <script src="<?php echo base_url(); ?>assets/bootstrap/js/bootstrap.min.js" type="text/javascript"></script> - </body> -</html> diff --git a/application/views/materialinspectionreport.php b/application/views/materialinspectionreport.php deleted file mode 100644 index 68c6602d..00000000 --- a/application/views/materialinspectionreport.php +++ /dev/null @@ -1,353 +0,0 @@ - <script> - - $(document).ready(function(){ - - $("#IGRNO").select2(); - $("#PurchaseOrderNoview").select2(); - $("#InvoiceDate").datepicker({ - //minDate : d, - maxDate : 'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true,yearRange: '-100:+0' - }); - }); - // For table - (function(l,q){var e=function(b,c){b.extend(!0,c.defaults,{dom:"<'row'<'col-sm-9'l><'col-sm-3'f>><'row'<'col-sm-12'tr>><'row'<'col-sm-8'i><'col-sm-4'p>>",renderer:"bootstrap"});b.extend(c.ext.classes,{sWrapper:"dataTables_wrapper form-inline dt-bootstrap",sFilterInput:"form-control input-sm",sLengthSelect:"form-control input-sm"});c.ext.renderer.pageButton.bootstrap=function(g,e,r,s,i,m){var t=new c.Api(g),u=g.oClasses,j=g.oLanguage.oPaginate,d,f,n=0,p=function(c,e){var k,h,o,a,l=function(a){a.preventDefault(); -b(a.currentTarget).hasClass("disabled")||t.page(a.data.action).draw(!1)};k=0;for(h=e.length;k<h;k++)if(a=e[k],b.isArray(a))p(c,a);else{f=d="";switch(a){case "ellipsis":d="&hellip;";f="disabled";break;case "first":d=j.sFirst;f=a+(0<i?"":" disabled");break;case "previous":d=j.sPrevious;f=a+(0<i?"":" disabled");break;case "next":d=j.sNext;f=a+(i<m-1?"":" disabled");break;case "last":d=j.sLast;f=a+(i<m-1?"":" disabled");break;default:d=a+1,f=i===a?"active":""}d&&(o=b("<li>",{"class":u.sPageButton+" "+ -f,id:0===r&&"string"===typeof a?g.sTableId+"_"+a:null}).append(b("<a>",{href:"#","aria-controls":g.sTableId,"data-dt-idx":n,tabindex:g.iTabIndex}).html(d)).appendTo(c),g.oApi._fnBindAction(o,{action:a},l),n++)}},h;try{h=b(q.activeElement).data("dt-idx")}catch(l){}p(b(e).empty().html('<ul class="pagination"/>').children("ul"),s);h&&b(e).find("[data-dt-idx="+h+"]").focus()};c.TableTools&&(b.extend(!0,c.TableTools.classes,{container:"DTTT btn-group",buttons:{normal:"btn btn-default",disabled:"disabled"}, -collection:{container:"DTTT_dropdown dropdown-menu",buttons:{normal:"",disabled:"disabled"}},print:{info:"DTTT_print_info"},select:{row:"active"}}),b.extend(!0,c.TableTools.DEFAULTS.oTags,{collection:{container:"ul",button:"li",liner:"a"}}))};"function"===typeof define&&define.amd?define(["jquery","datatables"],e):"object"===typeof exports?e(require("jquery"),require("datatables")):jQuery&&e(jQuery,jQuery.fn.dataTable)})(window,document); - </script> - - <style> - .modal - { - padding-right:25% ! important; - } - .select2 - { - width: 100% ! important; - } - </style> -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - <center>Siddharth Industries - Material Receipt And Inspection Report</center> - </h1> - </section> - <section class="content"><br/> - <div class="row" style="padding-bottom:5%"> - <div class="col-md-12"> - <div class="col-md-3"> - <label>Enter Inward Gate Register Number </label> - <div> - <?php - $options = array("0"=>'Inward Gate Register Number'); - - - echo form_dropdown('IGRNO', $options,set_value('IGRNO'),'id="IGRNO"' ,'class="form-control select2"' , 'required="true"' ); - - ?> - </div> - </div> - <div class="col-md-3"> <br/> - <a class="btn btn-primary" type="submit" data-toggle="modal" data-target="#Igrshow" data-dismiss="modal" >IGR Details</a> - </div> - </div> - </div> - <div class="row"> - <div class="col-md-12"> - - <table id="Inwardgateregistertable" class="table table-bordered table-hover" style="background-color:#fff;font-size:12px;"> - <thead style="background-color:#ddf"> - <tr> - <th>S.NO</th> - <th>IGR No</th> - <th>PO NO</th> - - <th>Item Code</th> - <th>Material</th> - <th>Ordered Quantity</th> - <th>Received Quantity</th> - <th>Accepted Quantity</th> - <th>Rejected Quantity</th> - <th>Remarks</th> - </tr> - </thead> - <tbody> - <tr> - <td>1</td> - <td><a data-toggle="modal" data-target="#materialreport" data-dismiss="modal" >IGR0001</a></td> - <td>PO0034</td> - - <td>Sand12</td> - <td>wast sand</td> - <td>1000kgs</td> - <td>1000kgs</td> - <td>950kgs</td> - <td>50kgs</td> - <td>Damage In Bags</td> - </tr> - <tr> - <td>2</td> - <td><a data-toggle="modal" data-target="#materialreport" data-dismiss="modal" >IGR0002</a></td> - <td>PO0035</td> - - <td>Sand12</td> - <td>wast sand</td> - <td>1000kgs</td> - <td>1000kgs</td> - <td>1000kgs</td> - <td>0</td> - <td>No remarks</td> - </tr> - </tbody> - </table> - </div> - </div> - </div> - - <div class="modal fade" id="materialreport" role="dialog"> - <div class="modal-dialog"> - <!-- Modal content--> - <form> - <div class="modal-content" style="width:900px;"> - <div class="modal-header" style="background-color: #3c8dbc;color:#fff;"> - <button type="button" class="close" data-dismiss="modal">&times;</button> - <center><h4>Inward Gate Register Details After Inspection</h4></center> - </div> - <div class="col-md-12"> - <div class="col-md-3"> - <label>IGR Number :</label> - </div> - <div class="col-md-3"> - IGR0001 - </div> - <div class="col-md-3"> - <label> Purchase Order Number:</label> - </div> - <div class="col-md-3"> - PO0034 - </div> - </div> - <div class="col-md-12"> - <div class="col-md-3"> - <label>Invoice Number :</label> - </div> - <div class="col-md-3"> - Inv12353 - </div> - <div class="col-md-3"> - <label>Invoice Date:</label> - </div> - <div class="col-md-3"> - 6/9/2017 - </div> - </div> - <div class="col-md-12"> - <div class="col-md-3"> - <label>Vechicle Number :</label> - </div> - <div class="col-md-3"> - TN G 34 3443 - </div> - <div class="col-md-3"> - <label>Delivery Date :</label> - </div> - <div class="col-md-3"> - 09/6/2017 - </div> - </div> - - <div class="col-md-12"> - <div class="col-md-3"> - <label>Supplier and Address :</label> - </div> - <div class="col-md-3"> - D.R Enterprises ,153/233,Uthukottai Taluk, Tiruvallur Dist,Chennai,Tamilnadu,Pin code : 602026. - </div> - <div class="col-md-3"> - <label>Comments Of Special Instructions :</label> - </div> - <div class="col-md-3"> - raw Sand , resin ordered - </div> - </div> - - <div> - <!-- Table to show the line item of po --> - <table class="table table-bordered"> - <thead> - <tr> - <th>SNo</th> - <th>Item Code</th> - <th>Item Description</th> - <th>UOM</th> - <th>Ordred Quantity</th> - <th>Received Quantity</th> - <th>Accepted Quantity</th> - <th>Rejected Quantity</th> - <th>Remarks</th> - </tr> - </thead> - <tbody id="tbleAppend"> - <tr> - <td>1</td> - <td>RM002</td> - <td>Raw sand</td> - <td>Kgs</td> - <td>10000</td> - <td>10000</td> - <td>10000</td> - <td>0</td> - <td>No remarks</td> - </tr> - </tbody> - </table> - <div class="col-md-12"> - <div class="col-md-4"> - <label>Store Incharge :</label> Muthu - </div> - <div class="col-md-4"> - <label>Quality Incharge :</label> Raja - </div> - <div class="col-md-4"> - <label>Plant Incharge :</label> Visvanathan - </div> - </div> - </div> - <div class="modal-footer"> - <a class="btn btn-info" data-dismiss="modal" value="Cancel">Cancel</a> - </div> - </div> - </form> - </div> - </div> - <div class="modal fade" id="Igrshow" role="dialog"> - <div class="modal-dialog"> - <!-- Modal content--> - <form> - <div class="modal-content" style="width:900px;"> - <div class="modal-header" style="background-color: #3c8dbc;color:#fff;"> - <button type="button" class="close" data-dismiss="modal">&times;</button> - <center><h4>Inward Gate Register Details</h4></center> - </div> - <div class="col-md-12"> - <div class="col-md-3"> - <label>IGR Number :</label> - </div> - <div class="col-md-3"> - IGR0001 - </div> - <div class="col-md-3"> - <label> Purchase Order Number:</label> - </div> - <div class="col-md-3"> - PO0034 - </div> - </div> - <div class="col-md-12"> - <div class="col-md-3"> - <label>Invoice Number :</label> - </div> - <div class="col-md-3"> - Inv12353 - </div> - <div class="col-md-3"> - <label>Invoice Date:</label> - </div> - <div class="col-md-3"> - 6/9/2017 - </div> - </div> - - <div class="col-md-12"> - <div class="col-md-3"> - <label>Supplier and Address :</label> - </div> - <div class="col-md-3"> - D.R Enterprises ,153/233,Uthukottai Taluk, Tiruvallur Dist,Chennai,Tamilnadu,Pin code : 602026. - </div> - <div class="col-md-3"> - <label>Comments Of Special Instructions :</label> - </div> - <div class="col-md-3"> - raw Sand , resin ordered - </div> - </div> - <div class="col-md-12" style="padding:2%;"> - <div class="col-md-4"> - Store Incharge - <?php - $data = array('name' => 'StoreIncharge','value' => set_value('StoreIncharge'),'id'=>'StoreIncharge', 'class' => 'form-control', 'required'=>'true' ); - echo form_input($data); - ?> - </div> - <div class="col-md-4"> - Quality Incharge - <?php - $data = array('name' => 'QualityIncharge','value' => set_value('QualityIncharge'),'id'=>'QualityIncharge', 'class' => 'form-control', 'required'=>'true' ); - echo form_input($data); - ?> - </div> - <div class="col-md-4"> - Plant Incharge - <?php - $data = array('name' => 'plantIncharge','value' => set_value('plantIncharge'),'id'=>'plantIncharge', 'class' => 'form-control', 'required'=>'true' ); - echo form_input($data); - ?> - </div> - </div> - <!-- Table to show the line item of po --> - <table class="table table-bordered"> - <thead> - <tr> - <th>SNo</th> - <th>Item Code</th> - <th>Item Description</th> - <th>UOM</th> - <th>Ordred Quantity</th> - <th>Received Quantity</th> - <th>Accepted Quantity</th> <!-- It should be editable for gate keeper --> - <th>Rejected Quantity</th> <!-- It should be editable for gate keeper --> - <th>Remarks</th> <!-- It should be editable for gate keeper --> - </tr> - </thead> - <tbody id="tbleAppend"> - <tr> - <td>1</td> - <td>RM002</td> - <td>Raw sand</td> - <td>Kgs</td> - <td>10000</td> - <td>10000</td> - <td> </td> <!-- This value will be given by gate keeper once item received--> - <td> </td> <!-- This value will be given by gate keeper once item received--> - <td> </td> <!-- This value will be given by gate keeper once item received--> - </tr> - </tbody> - </table> - - <div class="modal-footer"> - <a class="btn btn-info" type="submit" value="submit">Submit</a> - <a class="btn btn-info" data-dismiss="modal" value="Cancel">Cancel</a> - </div> - </div> - </form> - </div> - </div> - </section> - </div> - <script> -<!-- script for table , It works under the datatable plugin--> - $(function () { - $('#Inwardgateregistertable').DataTable({ - "paging": true, - "lengthChange": true, - "searching": true, - "ordering": true, - "info": true, - "autoWidth": true - - }); - }); - </script> \ No newline at end of file diff --git a/application/views/monthlyListing.php b/application/views/monthlyListing.php deleted file mode 100644 index 7c0b0900..00000000 --- a/application/views/monthlyListing.php +++ /dev/null @@ -1,112 +0,0 @@ - -<script> -$(document).ready(function() { - -$('table').tableSort( { -animation :'slide', -speed:500 -} ); -}); - -</script> -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - <center>Employee Monthly Payment Listing</center> - </h1> - </section> - <section class="content"> - <!-- <div class="row"> - <div class="col-xs-12 text-right"> - <div class="form-group"> - <a class="btn btn-primary" href="<?php echo base_url(); ?>monthlypay/addmonthly">Add New Monthly List</a> - </div> - </div> - </div>--> - - <div class="row"> - <div class="col-xs-12"> - <div class="box"> - <div class="box-header"> - <!--<center><h3 class="box-title">--> - <div class="box-tools"> - <!-- <form action="<?php echo base_url() ?>assetListing" method="POST" id="searchList">--> - <form action="<?php echo base_url() ?>monthlypay/monthlyListing" method="POST" id="searchList"> - <div class="input-group"> - <input type="text" name="searchText" value="<?php echo $searchText; ?>" class="form-control input-sm pull-right" style="width: 150px;" placeholder="Search"/> - <div class="input-group-btn"> - <button class="btn btn-sm btn-default searchList"><i class="fa fa-search"></i></button> - - </div> - </div> - </form> - </div><!--</h3></center>--> - - </div><!-- /.box-header --> - <div class="box-body table-responsive no-padding tableSorter"> - <table class="table table-hover"> - <tr bgcolor="steelblue"> - <th>Month Year</th> - <th>Employee Id</th> - <th>LOP Days</th> - <th>OT Hours Worked</th> - <th>Loan Recovered</th> - <th>Loan Balance</th> - <th>Incentives</th> - <th>Other Deductions</th> - <th>Edit</th> - </tr> - - - <?php - if(!empty($userRecords)) - { - foreach($userRecords as $record) - { - ?> - - <tr> - <td><?php echo $record->Month_Year ?></td> - <td><?php echo $record->EmpID ?></td> - <td><?php echo $record->LOP_Days ?></td> - <td><?php echo $record->OT_Hrs_Worked ?></td> - <td><?php echo $record->Loan_Recovered ?></td> - <td><?php echo $record->Loan_Balance ?></td> - <td><?php echo $record->Incentives ?></td> - <td><?php echo $record->Other_Deductions ?></td> - - - <td> - - <a href="<?php echo base_url().'monthlypay/editOldmonthly/'.$record->EmpID.'/'.$record->Month_Year;?>"><i class="btn btn-info">EDIT</i></a> - - </td> - </tr> - <?php - } - } - ?> - </table> - - </div><!-- /.box-body --> - <div class="box-footer clearfix"> - <?php echo $this->pagination->create_links(); ?> - </div> - </div><!-- /.box --> - </div> - </div> - </section> -</div> -<script type="text/javascript" src="<?php echo base_url(); ?>assets/js/common.js" charset="utf-8"></script> -<script type="text/javascript"> - jQuery(document).ready(function(){ - jQuery('ul.pagination li a').click(function (e) { - e.preventDefault(); - var link = jQuery(this).get(0).href; - var value = link.substring(link.lastIndexOf('/') + 1); - jQuery("#searchList").attr("action", baseURL + "monthlyListings/" + value); - jQuery("#searchList").submit(); - }); - }); -</script> \ No newline at end of file diff --git a/application/views/payslipeditable.php b/application/views/payslipeditable.php deleted file mode 100644 index d949c209..00000000 --- a/application/views/payslipeditable.php +++ /dev/null @@ -1,271 +0,0 @@ - - - -<script> - -$(function() { - - - //Initialize Select2 Elements - $(".select2").select2(); -//$('#content').html('<img id="loader-img" alt="" src="<?php echo base_url();?>assets/dist/loader.gif" align="center" />'); - $('#All').click(function(){ - //alert('clicked'); - if ($('#All').prop('checked')) - { - $('#Employee').attr('disabled', 'true'); - - } - else - { - $('#Employee').removeAttr('disabled'); - - } - - }); - - $('#PayOn').change(function() { - - var id = $('#PayOn').val(); - if(id != '-1') - { - $('#content').loader('show'); - - $.ajax({ - data:{id:id}, - - type:"POST", - url:"<?php echo base_url();?>payslip/getEmployee", - success:function(result) { - if(result) - { -$("#Employee").empty(); - $('#content').loader('hide'); - $("#Employee").append(result); - - } - - } - }); - } - else - { - alert('Please select the PayOn'); - return false; - } - -}); - - - }); - <!-- Editable table--> - $(function () { - $("td").dblclick(function () { - var OriginalContent = $(this).text(); - $(this).addClass("cellEditing"); - $(this).html("<input type='text' value='" + OriginalContent + "' />"); - $(this).children().first().focus(); - $(this).children().first().keypress(function (e) { - if (e.which == 13) { - var newContent = $(this).val(); - $(this).parent().text(newContent); - $(this).parent().removeClass("cellEditing"); - } }); - $(this).children().first().blur(function(){ - $(this).parent().text(OriginalContent); - $(this).parent().removeClass("cellEditing"); - }); - }); - }); -</script> -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - <center>Siddharth Industries - PaySlip Create and Update</center> - - </h1> - </section> - <section class="content"> - <div class="row" style="border:2px dotted; padding:5%"> - <form id="PayslipGenerator" action="<?php echo base_url() ?>PrintPdf" method="post" role="form" > - <div class="row" > - <div class="col-md-4"> - - <span for="selectmonth">Select Month</span> - <select id="PayOn" name="PayOn" class="form-control select2" style="width: 100%;"> - <option value="-1">Select Payon Month</option> - <?php - if(!empty($Payon)) - { - foreach ($Payon as $rl) - { - $Pay =$rl->PayOn; - - if ($_POST['PayOn'] == $Pay) - { - - echo "<option value=\"".$Pay."\" selected=\"selected\">".$Pay."</option>"; - } - else - { - echo "<option value=\"".$Pay."\">".$Pay."</option>"; - } - - } - } - ?> - </select> - </div> - <div id="content"></div> - <div class="col-md-4 "> - - - <span>Employee ID</span> - <select id="Employee" name="Employee" class="form-control select2" type="text" class="form-control"> - <option value="-1">Select Employee ID</option> - - </select> - <br/> - <input class="my-check" type="checkbox" name="All" id="All" > Select All<br> - </div> - <div class="col-md-4 my-box"> - - - <span>Employee Name</span> - <div class="form-group"> - <?php - $data = array('name' => 'emp_name','value' => set_value('emp_name'),'id'=>'emp_name', 'class' => 'form-control' ,'required' => 'true' , 'readonly' => 'true'); - echo form_input($data); - ?> - <br/> - - </div> - - - </div> - - - - </div> - - - -<script> -<!-- To hide the Employee name if select all employee id--> -$(".my-check").change(function() { - if ( $(this).is(':checked') ) { - $(".my-box").hide(); - } else { - $(".my-box").show(); - } -}); -</script> - <div class="row" > - - <table id="mytable" class="table table-bordred table-striped editableTable"> - <thead style="background-color: #CFCFCF;"> - <th>Employee ID</th> - <th>OT in Hours</th> - <th>Incentive</th> - <th>Loan recoveries</th> - <th>Mode Of Payment</th> - <th>Remarks</th> - <th>Action</th> - </thead> - <tbody> - - <tr> - <td>Emp001</td> - <td>40</td> - <td>2000</td> - <td>5000</td> - <td>Cheque</td> - <td>Pending Loan amount 25000 </td> - <td> - <i><button class="btn btn-danger btn-xs" Onclick="ConfirmDelete()"><span class="fa fa-eye"></span></button></i> - </td> - - </tr> - <tr> - <td>Emp002</td> - <td>20</td> - <td>1500</td> - <td>0.00</td> - <td>Account</td> - <td>Good</td> - <td> - <i><button class="btn btn-danger btn-xs" Onclick="ConfirmDelete()"><span class="fa fa-eye"></span></button></i> - </td> - - </tr> - <tr> - <td>Emp003</td> - <td>0</td> - <td>1900</td> - <td>0.00</td> - <td>Account</td> - <td>Good</td> - <td> - <i><button class="btn btn-danger btn-xs" Onclick="ConfirmDelete()"><span class="fa fa-eye"></span></button></i> - </td> - - </tr> - <tr> - <td>Emp004</td> - <td>25</td> - <td>1549</td> - <td>0.00</td> - <td>On Hold</td> - <td>Good</td> - <td> - <i><button class="btn btn-danger btn-xs" Onclick="ConfirmDelete()"><span class="fa fa-eye"></span></button></i> - </td> - - </tr> - </tbody> - </table> - - </div> - <div class="col-md-4 col-md-offset-6" align = "right"> - <input type="submit" class="btn btn-info" value="Generate" /> - - </div> - <div class="row" > - - - - <?php - $this->load->helper('form'); - $error = $this->session->flashdata('error'); - if($error) - { - ?> - <div class="alert alert-danger alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('error'); ?> - </div> - <?php } ?> - <?php - $success = $this->session->flashdata('success'); - if($success) - { - ?> - <div class="alert alert-success alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('success'); ?> - </div> - <?php } ?> - - <div class="row"> - <div class="col-md-4"> - <?php echo validation_errors('<div class="alert alert-danger alert-dismissable">', ' <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button></div>'); ?> - </div> - </div> - </div> - </div> - - - </section> -</div> - diff --git a/application/views/payslipgenerate.php b/application/views/payslipgenerate.php deleted file mode 100644 index 327479ef..00000000 --- a/application/views/payslipgenerate.php +++ /dev/null @@ -1,241 +0,0 @@ - - - -<script> - - - -$(function() { - - - //Initialize Select2 Elements - $(".select2").select2(); -//$('#content').html('<img id="loader-img" alt="" src="<?php echo base_url();?>assets/dist/loader.gif" align="center" />'); - $('#All').click(function(){ - //alert('clicked'); - if ($('#All').prop('checked')) - { - $('#Employee').attr('disabled', 'true'); - - } - else - { - $('#Employee').removeAttr('disabled'); - - } - - }); - - $('#PayOn').change(function(){ - - var id = $('#PayOn').val(); - if(id != '-1') - { - $('#content').loader('show'); - - $.ajax({ - data:{id1:id}, - - type:"POST", - url:"<?php echo base_url();?>payslip/getEmployee", - success:function(result) { - if(result) - { - $("#Employee").empty(); - $('#content').loader('hide'); - $("#Employee").append(result); - - } - - } - }); - } - else - { - alert('Please select the PayOn'); - return false; - } - -}); - - - $("#Calculate").click(function(){ - - var count=0; - var payon = $('#PayOn').val(); - var employee = $('#Employee').val(); - - // alert(payon+employee); - - if(payon != '-1' && employee !='-1') - { - var check = $('#All').is(":checked"); - if(check){ - //alert(check); - - $('#Employee').find('option').each(function() { - //alert($(this).val()); - count++; - //AJAX STARTED - var employee=$(this).val(); - $.ajax({ - data:{payon:payon,employee:employee}, - type:"POST", - url:"<?php echo base_url();?>payslip/callsp", - - success:function(result){ - - $('#content').loader('hide'); - //alert("Procedure Called Sucessfully!"); - } - }); - - - //AJAX ENDED - }); - alert(count + " Employees Salary Added Successfully!"); - - } // else for select all not selected - else{ - - $('#content').loader('show'); - - $.ajax({ - data:{payon:payon,employee:employee}, - type:"POST", - url:"<?php echo base_url();?>payslip/callsp", - - success:function(result) { - - $('#content').loader('hide'); - alert("Employees Salary Added Successfully!"); - - - - } - }); - - }// else for select all not selected - - }// check payon select/not selected - else - { - alert('Please select the PayOn'); - return false; - } - - - - - - - - }); - - - }); - - - -</script> - -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - <center>Siddharth Industries - PaySlip Generator</center> - - </h1> - </section> - <section class="content"> - <div class="row" style="border:2px dotted; padding:5%"> - <form id="PayslipGenerator" action="<?php echo base_url() ?>PrintPdf" method="post" role="form" > - <div class="row" > - <div class="col-md-4"> - - <span for="selectmonth">Select Month</span> - <select id="PayOn" name="PayOn" class="form-control select2" style="width: 100%;"> - <option value="-1">Select Payon Month</option> - <?php - if(!empty($Payon)) - { - foreach ($Payon as $rl) - { - $Pay =$rl->PayOn; - - if ($_POST['PayOn'] == $Pay) - { - - echo "<option value=\"".$Pay."\" selected=\"selected\">".$Pay."</option>"; - } - else - { - echo "<option value=\"".$Pay."\">".$Pay."</option>"; - } - - } - } - ?> - </select> - </div> - <div id="content"></div> - <div class="col-md-4 col-md-offset-2"> - - - <span>Employee</span> - <select id="Employee" name="Employee" class="form-control select2" type="text" class="form-control"> - <option value="-1">Select Employee</option> - - </select> - <br/> - <input type="checkbox" name="All" id="All" > Select All<br> - </div> - - </div> - - <div class="col-md-4 col-md-offset-6" align = "right"> - - <input type="button" class="btn btn-info" id="Calculate" value="Calculate Pay"/> - <input type="submit" class="btn btn-info" id="Generate" value="Generate"/> - - <a href="<?php echo base_url(); ?>payslip/updatepayroll" ><input type="submit" class="btn btn-info" value="Update" /></a> - </div> - - </div> - <div class="row" > - - - - <?php - $this->load->helper('form'); - $error = $this->session->flashdata('error'); - if($error) - { - ?> - <div class="alert alert-danger alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('error'); ?> - </div> - <?php } ?> - <?php - $success = $this->session->flashdata('success'); - if($success) - { - ?> - <div class="alert alert-success alert-dismissable"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo $this->session->flashdata('success'); ?> - </div> - <?php } ?> - - <div class="row"> - <div class="col-md-4"> - <?php echo validation_errors('<div class="alert alert-danger alert-dismissable">', ' <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button></div>'); ?> - </div> - </div> - </div> - </div> - - - </section> -</div> \ No newline at end of file diff --git a/application/views/payslipgenerateprint.php b/application/views/payslipgenerateprint.php deleted file mode 100644 index bfa797c4..00000000 --- a/application/views/payslipgenerateprint.php +++ /dev/null @@ -1,280 +0,0 @@ -<?php - - $PayOn = ''; - $EmpID = ''; - $FirstName = ''; - $LastName = ''; - $DateofBirth = ''; - $DateofJoining = ''; - $Designation = ''; - $Departmentcode = ''; - $PANNo = ''; - $BankAccountNo = ''; - $IFSCCode =''; - $BankBranchName = ''; - $PFnumber = ''; - $ESInumber = ''; - $TotalNoofDays = ''; - $NoOfWorkingdays =''; - $ActualSalary = ''; - $PerDaySalary = ''; - $WorkedSalary = ''; - $BasicAndDA = ''; - $HRA = ''; - $OTWages = ''; - $OTPerHours =''; - $OTSalary = ''; - $GrosssSalary = ''; - $ESI = ''; - $PF = ''; - $ESIAndPF = ''; - $SalaryAsPerPF = ''; - $FoodAllowance =''; - $Incentive = ''; - $TotalSalary = ''; - $Advance = ''; - $BalanceAdvance = ''; - $LessAdvance = ''; - $DeptName = ''; - $LossofPay = '0.00'; - $RecCount = ''; - -if(!empty($Count)) -{ - $RecCount = $Count; -} - -//echo $RecCount; -if(!empty($PayDetails)) -{ - foreach ($PayDetails as $Pay) - { - $Paydt = $Pay->PayOn; - $dt = '01-'.$Paydt; - $PayOn = date('M-Y',strtotime($dt)); - - $EmpID = $Pay->EmpID; - $FirstName = $Pay->FName; - $LastName = $Pay->Lname; - - $DoB = $Pay->Dob; - $DoJ = $Pay->DOJ; - - $from = new DateTime($DoB); - $dt = new DateTime($DoJ); - $DateofBirth = $from ->format('d-m-y'); - $DateofJoining = $dt ->format('d-m-y'); - - $Designation = $Pay->Designation; - $PANNo =$Pay->Pan; - $BankAccountNo = $Pay->BankAccountNumber; - $IFSCCode =$Pay->IFSCCode; - $BankBranchName = $Pay->BankName; - $PFnumber = $Pay->PFNumber; - $ESInumber = $Pay->ESINumber; - $TotalNoofDays = $Pay->TotalNoofDays; - $NoOfWorkingdays =$Pay->NoofDaysWorked; - $ActualSalary = $Pay->ActualSalary; - $PerDaySalary = $Pay->PerDaySalary; - $WorkedSalary = $Pay->WorkedSalary; - $BasicAndDA = $Pay->BasicPlusDA; - $HRA = $Pay->HRA; - $OTWage = $Pay->OTWages; - if($OTWage == '') - { - $OTWages = '0.00'; - } - else - { - $OTWages = $OTWage; - } - $OTPerHours =$Pay->OTperHours; - $OTSal = $Pay->OTSalary; - if($OTSal == '') - { - $OTSalary = '0.00'; - } - else - { - $OTSalary = $OTSal; - } - $GrosssSalary = $Pay->ESIGrossSalary; - $ESI = $Pay->EmployeeESI; - $PF = $Pay->PF; - $ESIAndPF = $Pay->TotalDeduction; - $SalaryAsPerPF = $Pay->SalaryAsPerPF; - $Food =$Pay->FoodAllowance; - if($Food == '') - { - $FoodAllowance = '0.00'; - } - else - { - $FoodAllowance = $Food; - } - $IncenAmt = $Pay->Incentive; - if($IncenAmt == '') - { - $Incentive = '0.00'; - } - else - { - $Incentive = $IncenAmt; - } - $TotalSalary = $Pay->TotalSalary; - $Adv = $Pay->Advance; - if($Adv == '') - { - $Advance = '0.00'; - } - else - { - $Advance = $Adv; - } - $BalanceAdv = $Pay->BalanceAdvance; - if($BalanceAdv == '') - { - $BalanceAdvance = '0.00'; - } - else - { - $BalanceAdvance = $BalanceAdv; - } - $LessAdv = $Pay->LessAdvance; - if($LessAdv == '') - { - $LessAdvance = '0.00'; - } - else - { - $LessAdvance = $LessAdv; - } - $DeptName = $Pay->DeptName; - - } -} - -if($RecCount > 0) -{ -?> - -<div style= "page-break-before:always;"></div > -<?php - } - ?> - - -<table style="border-collapse: collapse;" cellpadding="0" cellspacing="0" border="1"> -<tbody> -<tr> -<td> - <img width="80" height="80" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA11JREFUeNrsnT9IHEEYxWfFw8rgpUhlo5URi2gTbIUUSrq1ui4oRLRIY9JIKrGKTQrBgJLuuutEi4CtSSOpPIuATdIEcid2YpN9C3sc8c6bf7uZmX0P7k7ultm7337zzXxvZjGaiaIfQoiqoHTUHk6eniSPUbLQUmUoebojB23dDZGBmQiQAAmQAAmQIkACJEACpAiweA3bbvDV5mb6+iKOxfTc3MDjf15dicbBQfr3591d7wBGM1H0J3l9bNLI84UFsby6mkIzFWACJMCafJ9PJyfSx29vbHQuoqJaxl34zc5O+mVtwIPi5EIcXV52IjnoLvx+by/9wXkIF8aHbq0dgYi4vOB1Q7QV2c4BXM4Z3r+RGBTAR9VqmqhVBoZnIyOdx9taTXqQGJ+YUDqXFwBV4WGU69aXRkNsr69LtyEzHfIKIKJCVl9PT3u+/63P+6bnC64SuWm3jdsYn5xkKcdamCJAAiwjQJcHAC8ATs/OBg1Qy0y4ub6WPhb1cuPwUFycn9/77OPWlvXzeQGw2QPGQ9o/PhZrS0v3IPpooFrpwgChYniidq6fnTnvrBSaA3Uc3A/1uvPuSmEA0f0uFLsyBKcZDjaisvSj8DsFW6pbcHPQpV12WQoBCHhri4taEOGwhJAXjeeBgFebn1eyp0LKi1Ym0rCsXieRqLk06HVetFqJwHmWnRz3yotHzabT9n0hpRxGZ0SjjpGKCEQkxgUtWDlbCyMfIi/qTHMgrDf7srCem5mQDS5YQNKRD2vCuQLMhCVM3bwIiK4PLIUYqrp5EXPFeGWFALO8CEdGddId7NYOHWFQUa1cUO4Fty78/fZW6tFrjx7gqfqAT0PbmWAqVCwq+bDUOxMeyokh6L8B1J1kE2BgIkACJMDyAbSx56/cACV3CoyOjfX9rNSrcrI7E/qVYYCnYhKY3LXkJECVOdx+Us51m6Nwm7HVQyUCf4UGEJuFZPMgIhC+XlYfw21WWQ/GxXJ50q09iBS1MSjYW73ww3SXMVXOobsk4MU80GQZc5DQbl5tOzWRRpS8nJqy1tUAzWZ7ecvKDdfdggWfTV0GbdnA4JB1UdhbHjo0LesAS6YWa2GaCQRIgARIESABEiABUgRIgARYRoAVYtBWBfcL/xb8hwS6av8VYADVjF2M5sTWJAAAAABJRU5ErkJggg=="> - </td> - <td colspan="8"> - <h3>Siddharth Industries</h3> Survey No: 168/1C3,Pennalur Pet Road,Goonipalyam village, <br/>Uthukottai Taluk,Tiruvallur Dist, Chennai,Tamilnadu,Pin code : 602026.<br/>PaySlip for the month - <?php echo $PayOn ?> - </td> -</tr> -<tr> -<td colspan="6"> -<table> -<tbody> -<tr > -<td width="160px;" style="border-left: 0px ;border-bottom: 0px; border-right: 0px ;border-top: 0px ;">Name :</td> -<td width="250px;" style="border-left: 0px ;border-bottom: 0px; border-right: 0px ;border-top: 0px ;"><?php echo $FirstName ?></td> -<td width="160px;" style="border-left: 0px ;border-bottom: 0px; border-right: 0px ;border-top: 0px ;">Employee ID :</td> -<td width="250px;" style="border-left: 0px ;border-bottom: 0px; border-right: 0px ;border-top: 0px ;"><?php echo $EmpID ?></td> -</tr> -<tr> -<td style="border-left: 0px ;border-bottom: 0px; border-right: 0px ;border-top: 0px ;">Desigination :</td> -<td style="border-left: 0px ;border-bottom: 0px; border-right: 0px ;border-top: 0px ;" > <?php echo $Designation ?></td> -<td style="border-left: 0px ;border-bottom: 0px; border-right: 0px ;border-top: 0px ;">Department :</td> -<td style="border-left: 0px ;border-bottom: 0px; border-right: 0px ;border-top: 0px ;"><?php echo $DeptName ?></td> -</tr> -<tr> -<td style="border-left: 0px ;border-bottom: 0px; border-right: 0px ;border-top: 0px ;">Date Of Joining :</td> -<td style="border-left: 0px ;border-bottom: 0px; border-right: 0px ;border-top: 0px ;"> <?php echo $DateofJoining ?></td> -<td style="border-left: 0px ;border-bottom: 0px; border-right: 0px ;border-top: 0px ;">Days Worked :</td> -<td style="border-left: 0px ;border-bottom: 0px; border-right: 0px ;border-top: 0px ;"><?php echo $NoOfWorkingdays ?></td> -</tr> -<tr> -<td style="border-left: 0px ;border-bottom: 0px; border-right: 0px ;border-top: 0px ;">Date Of Birth :</td> -<td style="border-left: 0px ;border-bottom: 0px; border-right: 0px ;border-top: 0px ;"><?php echo $DateofBirth ?></td> -<td style="border-left: 0px ;border-bottom: 0px; border-right: 0px ;border-top: 0px ;">No Of Working Days:</td> -<td style="border-left: 0px ;border-bottom: 0px; border-right: 0px ;border-top: 0px ;"> <?php echo $TotalNoofDays ?></td> -</tr> -<tr> -<td style="border-left: 0px ;border-bottom: 0px; border-right: 0px ;border-top: 0px ;">PF Account Number :</td> -<td style="border-left: 0px ;border-bottom: 0px; border-right: 0px ;border-top: 0px ;" ><?php echo $PFnumber ?></td> -<td style="border-left: 0px ;border-bottom: 0px; border-right: 0px ;border-top: 0px ;">Balance Advance :</td> -<td style="border-left: 0px ;border-bottom: 0px; border-right: 0px ;border-top: 0px ;" ><?php echo $BalanceAdvance ?></td> -</tr> -<tr> -<td style="border-left: 0px ;border-bottom: 0px; border-right: 0px ;border-top: 0px ;">Bank Name :</td> -<td style="border-left: 0px ;border-bottom: 0px; border-right: 0px ;border-top: 0px ;"><?php echo $BankBranchName ?></td> -<td style="border-left: 0px ;border-bottom: 0px; border-right: 0px ;border-top: 0px ;">OT in Hours:</td> -<td style="border-left: 0px ;border-bottom: 0px; border-right: 0px ;border-top: 0px ;"><?php echo $OTWages ?></td> -</tr> -<tr> -<td style="border-left: 0px ;border-bottom: 0px; border-right: 0px ;border-top: 0px ;">Bank IFSC :</td> -<td style="border-left: 0px ;border-bottom: 0px; border-right: 0px ;border-top: 0px ;"><?php echo $IFSCCode ?></td> -<td style="border-left: 0px ;border-bottom: 0px; border-right: 0px ;border-top: 0px ;">ESI Account Number :</td> -<td style="border-left: 0px ;border-bottom: 0px; border-right: 0px ;border-top: 0px ;"> <?php echo $ESInumber ?></td> -</tr> -<tr> -<td width="100px;" style="border-left: 0px ;border-bottom: 0px; border-right: 0px ;border-top: 0px ;">Bank Account Number :</td> -<td width="100px;" style="border-left: 0px ;border-bottom: 0px; border-right: 0px ;border-top: 0px ;"> <?php echo $BankAccountNo ?></td> -<td width="50px;" style="border-left: 0px ;border-bottom: 0px; border-right: 0px ;border-top: 0px ;">Loss Of Pay :</td> -<td width="100px;" style="border-left: 0px ;border-bottom: 0px; border-right: 0px ;border-top: 0px ;"><?php echo $LossofPay ?></td> -</tr> -<tr> -<td width="100px;" style="border-left: 0px ;border-bottom: 0px; border-right: 0px ;border-top: 0px ;">PAN Number :</td> -<td width="100px;" style="border-left: 0px ;border-bottom: 0px; border-right: 0px ;border-top: 0px ;"> QWERS3423E</td> -<td width="50px;" style="border-left: 0px ;border-bottom: 0px; border-right: 0px ;border-top: 0px ;">UAN Number : </td> -<td width="100px;" style="border-left: 0px ;border-bottom: 0px; border-right: 0px ;border-top: 0px ;">101033275864 </td> -</tr> -</tbody> -</table> -</td> -</tr> -<tr><th>Earnings</th><th>Amount</th><th>Deductions</th><th>Amount</th></tr> -<tr> -<td width="50px;">Basic Plus DA</td> -<td style="text-align: right;" ><?php echo $BasicAndDA ?></td> -<td width="50px;">Provident Fund</td> -<td style="text-align: right;" ><?php echo $PF ?></td> -</tr> -<tr> -<td>House Rent Allowance</td> -<td style="text-align: right;"><?php echo $HRA ?></td> -<td>Employee State Insurance</td> -<td style="text-align: right;"><?php echo $ESI ?></td> -</tr> -<tr> -<td>Food Allowance</td> -<td style="text-align: right;"><?php echo $FoodAllowance ?></td> -<td>Advance</td> -<td style="text-align: right;"><?php echo $Advance ?></td> -</tr> -<tr> -<td>Incentive</td> -<td style="text-align: right;"><?php echo $Incentive ?></td> -<td></td> -<td style="text-align: right;">&nbsp;</td> -</tr> -<tr> -<td>OT Salary</td> -<td style="text-align: right;"><?php echo $OTSalary ?></td> -<td>&nbsp;</td> -<td style="text-align: right;">&nbsp;</td> -</tr> -<tr><th nowrap>Total Earning (Rounded) (TE)</th> -<td style="text-align: right;"><?php echo $TotalSalary ?></td> -<th nowrap>Total Deduction (Rounded)(TD)</th> -<td style="text-align: right;"><?php echo $ESIAndPF ?></td> -</tr> -<tr><th style="text-align: right;" colspan="3">Net Pay (Rounded) :&nbsp;</th> -<td style="text-align: right;" colspan="1"><?php echo $LessAdvance ?></td> -</tr> -<tr><th style="text-align: center;" colspan="4">This is a computer generated document. This document does not require signature.</th></tr> -</tbody> -</table> \ No newline at end of file diff --git a/application/views/payslipupload.php b/application/views/payslipupload.php deleted file mode 100644 index 92a73d32..00000000 --- a/application/views/payslipupload.php +++ /dev/null @@ -1,50 +0,0 @@ -<?php - if(isset($Success)){ - - echo $Success; - } - - if(isset($Fail)){ - - echo $Fail; - } - - ?> -<script> - function readURL(input) { - $('#FileName').val(input.files[0].name); - } - - - </script> -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - <center>Siddharth Industries PaySlip Upload</center> - - </h1> - </section> - <section class="content"> - <div class="row"> - <div class="col-md-8 col-md-offset-2" style="border:2px dotted;padding:2%;"> - - - <form id="upload" action="<?php echo base_url() ?>FileUpload" method="post" role="form" enctype="multipart/form-data"> <div class="col-md-5 col-md-offset-2"> - <span for="FileName">File Name</span> - <input type="text" class="form-control required" id="FileName" name="FileName" readonly> - </div> - <div class="box-header"> - <input type="file" onchange="readURL(this);" id="userfile" name="userfile"/> - <label for="photo">Select Excel File to upload<br/>(only .xls)</label> - </div> - <div class="col-md-2 col-md-offset-2"> - <input type="submit" class="btn btn-info" value="upload" /> - </div> - - </div> - </div> - - </section> -</div> - diff --git a/application/views/payslipupload2.php b/application/views/payslipupload2.php deleted file mode 100644 index 084ddd0c..00000000 --- a/application/views/payslipupload2.php +++ /dev/null @@ -1,96 +0,0 @@ -<?php - if(isset($Success)){ - - echo $Success; - } - - if(isset($Fail)){ - - echo $Fail; - } - - ?> -<script> - function readURL(input) { - $('#FileName').val(input.files[0].name); - } - - - </script> - <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.5.0/js/bootstrap-datepicker.js"></script> - - <link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.5.0/css/bootstrap-datepicker.css" rel="stylesheet"> - -<script> -function checkYearMonthAsEmpty() -{ - if($("#mon").val() == "") { - alert("No Month Selected!"); - } - if($("#yr").val() == "") { - alert("No Year Selected!");} - - var m=$("#mon").val(); - var y=$("#yr").val(); - // alert(m+y); - -} -</script> -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - <center>Siddharth Industries - Monthly Pay Inputs Upload</center> - - </h1> - </section> - <section class="content"> - <div class="row"> - <div class="col-md-8 col-md-offset-2" style="border:2px dotted;padding:2%;"> - - - <form id="upload" action="<?php echo base_url() ?>FileUpload2" method="post" role="form" enctype="multipart/form-data"> <div class="col-md-5 col-md-offset-2"> - <span for="FileName">File Name</span> - <input type="text" class="form-control required" id="FileName" name="FileName" readonly> - </div> - <div class="box-header"> - <input type="file" accept=".xlsx" onchange="readURL(this);" id="userfile" name="userfile"/> - <label for="photo">Select Excel File to upload<br/>(only .xls)</label> - </div> - <div class="col-md-2 col-md-offset-2"> - <span for="Month">Month</span> - <input class="date-own form-control" style="width: 100px;" type="text" id="mon" name="mon"> - - <script type="text/javascript"> - $('.date-own').datepicker({ - minViewMode: 1, - format: 'mm' - }); - </script> - </div> - - <div class="col-md-2 col-md-offset-0"> - <span for="Year">Year</span> - <input style="width: 100px;" type="text" id="year" name="yr" readonly /> - <script type="text/javascript"> - var today= new Date(); - var year=today.getFullYear(); - - document.getElementById("year").value = year; // $('.date-own').datepicker({ - // //minViewMode: 2, - // format: 'yyyy' - - // }); - </script> - </div> - <br/> - <div class="col-md-1 col-md-offset-1"> - <input type="submit" class="btn btn-info" value="upload" onmouseover="checkYearMonthAsEmpty();"/> - </div> - - </div> - </div> - - </section> -</div> - diff --git a/application/views/poapproval_view.php b/application/views/poapproval_view.php deleted file mode 100644 index 1d536282..00000000 --- a/application/views/poapproval_view.php +++ /dev/null @@ -1,370 +0,0 @@ - -<?php -//echo "OUTIF"; -if(empty($Status)) -{ - //echo "INIF"; - //print_r($Status); -} -?> - -<style> - .table-bordered>thead>tr>th, .table-bordered>tbody>tr>th, .table-bordered>tfoot>tr>th, .table-bordered>thead>tr>td, .table-bordered>tbody>tr>td, .table-bordered>tfoot>tr>td {border: 1px solid #333;} - .modal-content { - width:1000px ! important; - } - - .modal -{ - padding-right:25% ! important; -} - </style> -<div class="content-wrapper"> - - - <section class="content"> - - - - - <div> - <center><b><h2>Purchase Order Approval List </h2></b></center> - <table id="Requisition" class="table table-bordered table-hover" style="background-color:#fff;font-size:12px;"> - <div align="right" style="padding-right:10px"> - <div id="content" > </div> - <div class="modal fade" role="dialog"> - - <thead style="background-color:#ddf"> - <tr> - - <th>Purchase Order Number</th> - <th>Purchase Order Type</th> - <th>Cost Center Name</th> - <th>Available Budget Amount</th> - <th>Total Order Value</th> - <th>Created By</th> - <th>Created Date</th> - <th>Status</th> - <th>Action</th> - <th>Remarks</th> - </tr> - </thead> - <tbody id="ApprovalList"> - - <?php - if(!empty($AppList)) - { - $index = 0; - foreach($AppList as $record) - { - $index = $index +1; - //echo $index; - ?> - <tr id="<?php echo $index ?>" > - - - <td><a target="_blank" href="<?php echo base_url() ?>purchaseorder/CreatePOPrint?PONO=<?php echo $record->PONO ?>&ReqType=<?php echo $record->ReqType ?>" data-id="<%=index%>" data-userid="<?php echo $record->PONO ?>" ><u><?php echo $record->PONO ?> </td> - - - - - <td><?php echo $record->ReqType ?> </td> - <td><?php echo $record->CostCenterName ?> </td> - <td align="right"><?php echo $record->BudgetAmount ?> </td> - - <td align="right"><?php echo $record->TotalOrderValue ?></td> - <td><?php echo $record->FirstName ?></td> - <td align="right"><?php $Cdt = new DateTime($record->CreatedDate); - $CreatedDate = $Cdt->format('d-m-Y'); - echo $CreatedDate; - ?></td> - <td><?php echo $record->StatusName ?></td> - <?php - if($record->StatusName == 'PO APPROVED' or $record->StatusName == 'PO RELEASED') - { - - ?> - - - <td> - - <select disabled name="selectId" id="selectId" title="You Can't Select Here"> - <option value="-1" >Select Option</option> - <option value="1">Approve</option> - <option value="2">OnHold</option> - </select> - </td> - - <?php - }elseif($record->StatusName == 'ON HOLD' or $record->StatusName == 'PO CREATED' or $record->StatusName == 'EMERGENCY PO'){ - ?> - <td> - - <select name="selectId" id="selectId" title="Select Your Option" onchange="showvalue('<?php echo $record->PONO ?>','<?php echo $index ; ?>',this.options[this.selectedIndex].value,'<?php echo $record->Remarks ?>');"> - <option value="-1" >Select Option</option> - <option value="1">Approve</option> - <option value="2">OnHold</option> - </select> - </td> - - <?php }?> - <td contenteditable="true" id="remarks<?php echo $index ; ?>"> <?php echo $record->Remarks ?> </td> - - </tr> - - - - <?php - } - } - ?> - - - </tbody> - - </table> - <script> - function showvalue(PONO,value,Status,Remarks) - { - //alert(value); - var curtremarks=document.getElementById('remarks'+value+'').innerHTML; - //alert(curtremarks); - //var curtremarks="CUR" - var PO=PONO; - //var val=value; - var Status=Status; - - var Remarks=Remarks+'||'+curtremarks; - //alert(Remarks); - var StatusCode=''; - var srtMsg=''; - //alert(PO+"-"+Status+"-"+StatusCode+"-"+Remarks); - if(Status != '-1'){ - if(Status == '1'){ - var strMsg='Do you want to Approve this Purchase Order?' - var StatusCode='ST025'; - //alert(StatusCode); - } - else if(Status == '2') - { - var strMsg='Do you want to put Hold this Purchase Order?'; - var StatusCode='ST020'; - //alert(StatusCode); - } - - /* MSG*/ - var answer = confirm(strMsg); - if (answer) - { - $('#content').loader('show'); - $.ajax({ - data:{PONO:PO,SCode:StatusCode,NewRemarks:Remarks}, - type:"POST", - url:"<?php echo base_url() ?>purchaseorder/ApprovePO", - success:function(data) { - if(data) - { - $('#content').loader('hide'); - alert(data); - location.reload(); - } - else - { - alert("Error"); - } - - } - - -}); - -} -else -{ -return; -} - - - /* MSG*/ - - } - else -{ -alert('please Select Status!'); -} - - - } //End of showvalue function for approve/hold po status -</script> - - - <br> - </div> - </div> - - </section> -</div> - -<script> - var startDate = ''; - var endDate = ''; - -function Reset() -{ - $('#RequisitionStatus').val("-1"); - $('#SearchDate').val(''); -} -<!-- JQuery For POP UP and Getting all relevant Data --> -$("#myModal").on("shown.bs.modal", function(e) { - var ReqId = $(e.relatedTarget).data('userid'); - $("#RequistionNo").val(''); - $("#drpSupplier").val(''); - $("#POType").val(''); - $("#Tax Range").val(''); //not conform - $("#SupAddress").val(''); - $("#DeliveryAddr").val(''); - $("#PODate").val(''); - $("#Deliverydt").val(''); - $("#tbleAppend").empty(); - $("#txtTotBasicAmount").val(''); - $("#txtTotalDiscount").val(''); - $("#txtTotalVat").val(''); - $("#txtTotCST").val(''); - $("#txtTotalPackaing").val(''); - $("#txtTotExciseDuty").val(''); - $("#txtTotalGST").val(''); - $("#txtTotalInsurance").val(''); - $("#txtTotalFreight").val(''); - $("#txtTotalOtherTaxes").val(''); - $("#txtTotalOrderValueSummary").val(''); - $("#txtSpcialInstruction").val(''); - $('#AlertImg').attr("style","display:none;"); - - $('#content').loader('show'); - $.ajax({ - data:{id:ReqId}, - type:"POST", - dataType: 'json', - url:"<?php echo base_url() ?>requisitionform/ViewRequest", - success:function(json) { - // success:function(data) { - $('#content').loader('hide'); - //alert(data); - $("#ReqType").val(json.Requist[0]['ReqType']); - $("#ReqBy").val(json.Requist[0]['Requestedby']); - $("#ReqDate").val(json.Requist[0]['CreatedDate']); - $("#Desigination").val(json.Requist[0]['Designation']); - $("#CostCenter").val(json.Requist[0]['CostCenterCode']); - $("#AvlBudgetAmount").val(json.AvilBudAmount); - - $("#tbleAppend").append(json.Items); - - } - -}); - -}); - -<!-- End of JQuery For POP UP and Getting all relevant Data --> - -function printpdf(PONO,value,Status) { - - - var PONO =PONO; - var Status = Status; - var value = value; - alert(PONO+Status+value); - - if(PONO != '' && Status != '' && value != ''){ - alert('inside if '+PONO+Status+value); - - $.ajax({ - data:{PONO1:PONO,Status1:Status}, - type:"POST", - url:"<?php echo base_url() ?>purchaseorder/Poprintpdf", - /*success:function(data) { - if(data) - { - alert(data); - } - else - { - alert("Error"); - } - - }*/ - - -}); - - } - else{ - alert('inside else '+PONO+Status+value); - } -} - - -$(function() { - var d = new Date(); - - var month = d.getMonth(); - var day = d.getDate(); - var year = d.getFullYear() ; - var SIAStartYear = year - 2015; - var mindt = year-70; - var maxdt = year-15; - $( ".datePicker" ).datepicker( - { - minDate : new Date(year-SIAStartYear,1,1), - maxDate :'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true, - } - ); - //$('#SearchDate').daterangepicker( ); - //Initialize Select2 Elements - $(".select2").select2(); - //$('#SearchDate').val(''); - $('#SearchDate').daterangepicker( -{ - locale: { - format: 'DD-MM-YYYY' - }, - - showDropdowns: true -}, -function(start, end, label) { - - startDate = start.format('DD-MM-YYYY'); - endDate = end.format('DD-MM-YYYY'); - $('#FromDate').val(startDate); - $('#ToDate').val(endDate); - - - //alert("A new date range was chosen: " + start.format('DD-MM-YYYY') + ' to ' + end.format('DD-MM-YYYY')); -}); - - - -}); -$(function () { - - $('#Items').DataTable({ - "paging": false, - "lengthChange": true, - "searching": false, - "ordering": false, - "info": false, - "autoWidth": false - - }); - $('#Requisition').DataTable({ - "paging": true, - "lengthChange": true, - "searching": true, - "ordering": true, - "info": true, - "autoWidth": true - - }); - }); - </script> diff --git a/application/views/porelease_view.php b/application/views/porelease_view.php deleted file mode 100644 index 070c571a..00000000 --- a/application/views/porelease_view.php +++ /dev/null @@ -1,348 +0,0 @@ - -<?php -//echo "OUTIF"; -if(empty($Status)) -{ - //echo "INIF"; - //print_r($Status); -} -?> - -<style> - .table-bordered>thead>tr>th, .table-bordered>tbody>tr>th, .table-bordered>tfoot>tr>th, .table-bordered>thead>tr>td, .table-bordered>tbody>tr>td, .table-bordered>tfoot>tr>td {border: 1px solid #333;} - .modal-content { - width:1000px ! important; - } - - .modal -{ - padding-right:25% ! important; -} - </style> -<div class="content-wrapper"> - - - <section class="content"> - - - - <div> - <center><b><h2>Purchase Order Release List </h2></b></center> - <table id="Requisition" class="table table-bordered table-hover" style="background-color:#fff;font-size:12px;"> - <div align="right" style="padding-right:10px"> - <div id="content" > </div> - <div class="modal fade" role="dialog"> - - <thead style="background-color:#ddf"> - <tr> - - <th>Purchase Order Number</th> - <th>Purchase Order Type</th> - <th>Cost Center Name</th> - <th>Available Budget Amount</th> - <th>Total Order Value</th> - <th>Created By</th> - <th>Created Date</th> - <th>Status</th> - <th>Action</th> - <th>Remarks</th> - </tr> - </thead> - <tbody id="ApprovalList"> - - <?php - if(!empty($AppList)) - { - $index = 0; - foreach($AppList as $record) - { - $index = $index +1; - //echo $index; - ?> - <tr id="<?php echo $index ?>" > - - - <td><a target="_blank" href="<?php echo base_url() ?>purchaseorder/CreatePOPrint?PONO=<?php echo $record->PONO ?>&ReqType=<?php echo $record->ReqType ?>" data-id="<%=index%>" data-userid="<?php echo $record->PONO ?>" ><u><?php echo $record->PONO ?> </td> - - - - - - <td><?php echo $record->ReqType ?> </td> - <td><?php echo $record->CostCenterName ?> </td> - <td align="right"><?php echo $record->BudgetAmount ?> </td> - - <td align="right"><?php echo $record->TotalOrderValue ?></td> - <td><?php echo $record->FirstName ?></td> - <td align="right"><?php $Cdt = new DateTime($record->CreatedDate); - $CreatedDate = $Cdt->format('d-m-Y'); - echo $CreatedDate; - ?></td> - <td><?php echo $record->StatusName ?></td> - - <?php - if($record->StatusName == 'PO APPROVED'){ - ?> - <td> - - <select name="selectId" id="selectId" onchange="showvalue('<?php echo $record->PONO ?>','<?php echo $index ; ?>',this.options[this.selectedIndex].value,'<?php echo $record->Remarks ?>');"> - <option value="-1" >Select Action</option> - <option value="1">Release</option> - <option value="2">OnHold</option> - </select> - </td> - - <?php }?> - <td contenteditable="true" id="remarks<?php echo $index ; ?>"><?php echo $record->Remarks ?></td> - </tr> - - - - <?php - } - } - ?> - - - </tbody> - - </table> - <script> - function showvalue(PONO,value,Status,Remarks) - { - var curtremarks=document.getElementById('remarks'+value+'').innerHTML; - var PO=PONO; - var Status=Status; - var StatusCode=''; - var srtMsg=''; - var Remarks=Remarks+'||'+curtremarks; - //alert(PO+"-"+Status+"-"+StatusCode); - if(Status != '-1'){ - if(Status == '1'){ - var strMsg='Do you want to Release this Purchase Order?' - var StatusCode='ST026'; - //alert(StatusCode); - } - else if(Status == '2') - { - var strMsg='Do you want to put Hold this Purchase Order?'; - var StatusCode='ST020'; - //alert(StatusCode); - } - - /* MSG*/ - var answer = confirm(strMsg); - if (answer) - { - $('#content').loader('show'); - $.ajax({ - data:{PONO:PO,SCode:StatusCode,NewRemarks:Remarks}, - type:"POST", - url:"<?php echo base_url() ?>purchaseorder/ReleasePO", - success:function(data) { - if(data) - { - $('#content').loader('hide'); - alert(data); - location.reload(); - } - else - { - alert("Error"); - } - - } - - -}); - -} -else -{ -return; -} - - - /* MSG*/ - - } - else -{ -alert('please Select Status!'); -} - - - } //End of showvalue function for approve/hold po status -</script> - - - <br> - </div> - </div> - - </section> -</div> - -<script> - var startDate = ''; - var endDate = ''; - -function Reset() -{ - $('#RequisitionStatus').val("-1"); - $('#SearchDate').val(''); -} -<!-- JQuery For POP UP and Getting all relevant Data --> -$("#myModal").on("shown.bs.modal", function(e) { - var ReqId = $(e.relatedTarget).data('userid'); - $("#RequistionNo").val(''); - $("#drpSupplier").val(''); - $("#POType").val(''); - $("#Tax Range").val(''); //not conform - $("#SupAddress").val(''); - $("#DeliveryAddr").val(''); - $("#PODate").val(''); - $("#Deliverydt").val(''); - $("#tbleAppend").empty(); - $("#txtTotBasicAmount").val(''); - $("#txtTotalDiscount").val(''); - $("#txtTotalVat").val(''); - $("#txtTotCST").val(''); - $("#txtTotalPackaing").val(''); - $("#txtTotExciseDuty").val(''); - $("#txtTotalGST").val(''); - $("#txtTotalInsurance").val(''); - $("#txtTotalFreight").val(''); - $("#txtTotalOtherTaxes").val(''); - $("#txtTotalOrderValueSummary").val(''); - $("#txtSpcialInstruction").val(''); - $('#AlertImg').attr("style","display:none;"); - - $('#content').loader('show'); - $.ajax({ - data:{id:ReqId}, - type:"POST", - dataType: 'json', - url:"<?php echo base_url() ?>requisitionform/ViewRequest", - success:function(json) { - // success:function(data) { - $('#content').loader('hide'); - //alert(data); - $("#ReqType").val(json.Requist[0]['ReqType']); - $("#ReqBy").val(json.Requist[0]['Requestedby']); - $("#ReqDate").val(json.Requist[0]['CreatedDate']); - $("#Desigination").val(json.Requist[0]['Designation']); - $("#CostCenter").val(json.Requist[0]['CostCenterCode']); - $("#AvlBudgetAmount").val(json.AvilBudAmount); - - $("#tbleAppend").append(json.Items); - - } - -}); - -}); - -<!-- End of JQuery For POP UP and Getting all relevant Data --> - -function printpdf(PONO,value,Status) { - - - var PONO =PONO; - var Status = Status; - var value = value; - alert(PONO+Status+value); - - if(PONO != '' && Status != '' && value != ''){ - alert('inside if '+PONO+Status+value); - - $.ajax({ - data:{PONO1:PONO,Status1:Status}, - type:"POST", - url:"<?php echo base_url() ?>purchaseorder/Poprintpdf", - /*success:function(data) { - if(data) - { - alert(data); - } - else - { - alert("Error"); - } - - }*/ - - -}); - - } - else{ - alert('inside else '+PONO+Status+value); - } -} - - -$(function() { - var d = new Date(); - - var month = d.getMonth(); - var day = d.getDate(); - var year = d.getFullYear() ; - var SIAStartYear = year - 2015; - var mindt = year-70; - var maxdt = year-15; - $( ".datePicker" ).datepicker( - { - minDate : new Date(year-SIAStartYear,1,1), - maxDate :'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true, - } - ); - //$('#SearchDate').daterangepicker( ); - //Initialize Select2 Elements - $(".select2").select2(); - //$('#SearchDate').val(''); - $('#SearchDate').daterangepicker( -{ - locale: { - format: 'DD-MM-YYYY' - }, - - showDropdowns: true -}, -function(start, end, label) { - - startDate = start.format('DD-MM-YYYY'); - endDate = end.format('DD-MM-YYYY'); - $('#FromDate').val(startDate); - $('#ToDate').val(endDate); - - - //alert("A new date range was chosen: " + start.format('DD-MM-YYYY') + ' to ' + end.format('DD-MM-YYYY')); -}); - - - -}); -$(function () { - - $('#Items').DataTable({ - "paging": false, - "lengthChange": true, - "searching": false, - "ordering": false, - "info": false, - "autoWidth": false - - }); - $('#Requisition').DataTable({ - "paging": true, - "lengthChange": true, - "searching": true, - "ordering": true, - "info": true, - "autoWidth": true - - }); - }); - </script> diff --git a/application/views/purchaseorder.php b/application/views/purchaseorder.php deleted file mode 100644 index 72506c3b..00000000 --- a/application/views/purchaseorder.php +++ /dev/null @@ -1,3710 +0,0 @@ -<?php $ReqType =''; -$CompanyAddress = ''; -$dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); -$CurrentDate = $dt->format('Y-m-d'); -$MaxPoDate = ''; -$AvlAmount = 0; -if(!empty($MaxPODate)) -{ - foreach ($MaxPODate as $date) - { - $MaxPoDate = $date->PODate; - } -} -if(!empty($CompanyDetails)) -{ - foreach ($CompanyDetails as $Req) - { - $CompanyAddress = $Req->Address; - } -} -if(!empty($AvlBudAmt)) -{ - - $AvlAmount = $AvlBudAmt; - -} -?> -<style> - - #packagingcalmodel { - margin-top:200px; - z-index: 1080 !important; -} - #ExciseDutyCalModel { - margin-top:200px; - z-index: 1080 !important; -} -#VatCalModel { - margin-top:200px; - z-index: 1080 !important; -} -#CSTCalModel { - margin-top:200px; - z-index: 1080 !important; -} -.modal -{ - padding-right:30% ! important; -} - - </style> -<script src="<?php echo base_url(); ?>assets/js/CreatePOValidation.js" type="text/javascript"></script> - <script> - var NilType = '<?php echo NILTYPE;?>'; - var PercentageType = '<?php echo PERCENTAGE;?>'; - var POMaxDate = '<?php echo $MaxPoDate;?>'; - var PackagingCalculation = ''; - var ExciseCalculation = ''; - var StateTaxCheck = ''; - var VatCalculation = ''; - var CSTCalculation = ''; - var RequistQuantity = ''; - var IsEdit = '0'; - var d = new Date(POMaxDate); - var SelectedMaterialCode = []; - var SelectedMaterialList = { - Mat: [] -}; - var CollIndex = 0; - -// alert(new Date(year,month,day)); -$(function() - { - - $("#PODate").datepicker({ - minDate : d, - maxDate : 'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true,yearRange: '-100:+0' -}); - $("#Deliverydt").datepicker({ - minDate : 'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true,yearRange: '0:+10' -}); - -$('#drpSupplier').change(function() { - - var id = $('#drpSupplier').val(); - $("#SupAddress").val(''); - - if(id != '0') - { - var y = <?php echo json_encode($Suplist, JSON_PRETTY_PRINT) ?>; - - - $.each(y, function(idx, obj) { - if(obj.SupplierID === id) - { - $("#SupAddress").val(obj.Address); - - } - - }); - - } - else - { - alert('Please select the SupplierID'); - return false; - } - -}); - -$('#ReqNo').change(function() { - - var id = $('#ReqNo').val(); - $("#deptName").val(''); - $("#CostCenter").val(''); - $("#MaterialCode").empty(); - $("#ItemName").val(''); -$("#UOM").val(''); -$("#Quantity").val(''); -$("#ItemName").val(''); -$("#Rate").val(''); -$("#txtBasicValue").val(''); -$("#AvlBudAmt").val(''); - resetTaxField(); - if(id != '0') - { - var y = <?php echo json_encode($RequistionDetails, JSON_PRETTY_PRINT) ?>; - - var Material = <?php echo json_encode($MaterialList, JSON_PRETTY_PRINT) ?>; - var AvlBudAmt = '<?php echo $AvlAmount ?>'; - - // For Binding DepartmentName - $.each(y, function(idx, obj) { - if(obj.ReqNo === id) - { - $("#deptName").val(obj.DepartmentName); - $("#CostCenter").val(obj.CostCenterCode); - } - }); - $("#AvlBudAmt").val(AvlBudAmt); - - - // For Binding Material list center for the selected Requistion Number - $("#MaterialCode").append( $('<option></option>').val("0").html("Select Material Code") ); - - var isAdded = "0"; - for(i=0;i<Material.length;i++) - { - $.each(Material[i], function(idx, obj) { - - if(obj.ReqNo === id ) - { - - $.each(SelectedMaterialList.Mat, function(idx1, el){ - if (id == el.ReqNo ) - { - - if(el.materialCode == obj.MaterialCode) - { - isAdded = "1"; - return false; - } - else - { - isAdded = "0"; - } - - } - }); - - - if(isAdded == "0") - { - - $("#MaterialCode").append( $('<option></option>').val(obj.MaterialCode).html(obj.MaterialCode + "-" + obj.MaterialName)); - } - - } - - - }); - } - } - else - { - alert('Please select the Requisition Number'); - return false; - } - id = ''; - -}); -$('#MaterialCode').change(function() { - - var id = $('#MaterialCode').val(); - $("#ItemName").val(''); -$("#UOM").val(''); -$("#Quantity").val(''); -$("#ItemName").val(''); -$("#Rate").val(''); -$("#txtBasicValue").val(''); - - RequistQuantity = ''; - resetTaxField(); - if(id != '0') - { - var Material = <?php echo json_encode($MaterialList, JSON_PRETTY_PRINT) ?>; - - for(i=0;i<Material.length;i++) - { - $.each(Material[i], function(idx, obj) { - if(obj.MaterialCode === id) - { - $("#ItemName").val(obj.MaterialName); - $("#UOM").val(obj.UOM); - $("#Quantity").val(obj.Quantity); - RequistQuantity = obj.Quantity; - } - }); - } - } - else - { - alert('Please select the MaterialCode'); - return false; - } - -}); - -$('#EditMaterialCode').change(function() { - - var id = $('#EditMaterialCode').val(); - $("#EditItemName").val(''); -$("#EditUOM").val(''); -$("#EditQuantity").val(''); -$("#EditRate").val(''); -$("#txtEditBasicValue").val(''); - RequistQuantity = ''; - - resetTaxField(); - if(id != '0') - { - var Material = <?php echo json_encode($MaterialList, JSON_PRETTY_PRINT) ?>; - - for(i=0;i<Material.length;i++) - { - $.each(Material[i], function(idx, obj) { - if(obj.MaterialCode === id) - { - $("#EditItemName").val(obj.MaterialName); - $("#EditUOM").val(obj.UOM); - $("#EditQuantity").val(obj.Quantity); - RequistQuantity = obj.Quantity; - } - }); - } - } - else - { - alert('Please select the MaterialCode'); - return false; - } - -}); - - - -/* Revenue Tax calcualation */ - - $('#DiscountType').change(function() { - if($('#Rate').val() != '' && $('#MaterialCode').val() != "0" ) - { - selValue = $("#DiscountType").val(); - $('#txtDiscount').val(''); - $('#txtAfterDiscount').val(''); - if (selValue == NilType) - { - - $('#txtDiscount').attr('readonly', 'true'); - $('#txtDiscount').val('0.00'); - $('#txtAfterDiscount').val('0.00'); - - } - else - { - $('#txtDiscount').removeAttr( 'readonly','true' ); - $('#txtDiscount').val(''); - $('#txtAfterDiscount').val(''); - } - } - else - { - alert('Please Select MaterialCode and Rate Field Value'); - $('#PackagingType').val("0"); - $('#Rate').focus(); - } - -}); - - - -$('#EditDiscountType').change(function() { - if($('#EditRate').val() != '' && $('#EditMaterialCode').val() != "0" ) - { - selValue = $("#EditDiscountType").val(); - $('#txtEditDiscount').val(''); - $('#txtEditAfterDiscount').val(''); - if (selValue == NilType) - { - - $('#txtEditDiscount').attr('readonly', 'true'); - $('#txtEditDiscount').val('0.00'); - $('#txtEditAfterDiscount').val('0.00'); - - } - else - { - $('#txtEditDiscount').removeAttr( 'readonly','true' ); - $('#txtEditDiscount').val(''); - $('#txtEditAfterDiscount').val(''); - } - } - else - { - alert('Please Select MaterialCode and Rate Field Value'); - $('#EditDiscountType').val("0"); - $('#EditRate').focus(); - } -}); - -$('#PackagingType').change(function() { - if($('#Rate').val() != '' && $('#MaterialCode').val() != "0" ) - { - $('#txtPackaging').val(''); - $('#txtAfterPackaging').val(''); - selValue = $("#PackagingType").val() ; - if(selValue == PercentageType) - { - var PackagingCalculation = ''; - $('#packagingcalmodel').modal('show'); - $('#txtPackaging').removeAttr( 'readonly','true' ); - } - else - { - if (selValue == NilType) - { - - $('#txtPackaging').attr('readonly', 'true'); - $('#txtPackaging').val('0.00'); - $('#txtAfterPackaging').val("0.00"); - } - else - { - $('#txtPackaging').removeAttr( 'readonly','true' ); - } - } - } - else - { - alert('Please Select MaterialCode and Rate Field Value'); - $('#PackagingType').val("0"); - $('#Rate').focus(); - } - - -}); -$('#EditPackagingType').change(function() { - $('#txtEditPackaging').val(''); - $('#txtEditAfterPackaging').val(''); - selValue = $("#EditPackagingType").val() ; - if(selValue == PercentageType) - { - var PackagingCalculation = ''; - $('#packagingcalmodel').modal('show'); - $('#txtEditPackaging').removeAttr( 'readonly','true' ); - } - else - { - if (selValue == NilType) - { - - $('#txtEditPackaging').attr('readonly', 'true'); - $('#txtEditPackaging').val('0.00'); - } - else - { - $('#txtEditPackaging').removeAttr( 'readonly','true' ); - } - } - -}); - -$('#txtExciseDuty').change(function() { - - if($('#Rate').val() != '' && $('#MaterialCode').val() != "0" ) - { - $('#ExciseDutyCalModel').modal('show'); - } -}); -$('#txtEditExciseDuty').change(function() { - if($('#EditRate').val() != '' && $('#EditMaterialCode').val() != "0" ) - { - $('#ExciseDutyCalModel').modal('show'); - } - -}); -$('#txtVat').change(function() { - if($('#Rate').val() != '' && $('#MaterialCode').val() != "0" ) - { - //$('#VatCalModel').modal('show'); - } - - -}); -$('#txtEditVat').change(function() { - - if($('#EditRate').val() != '' && $('#EditMaterialCode').val() != "0" ) - { - //$('#VatCalModel').modal('show'); - } - -}); - -$('#txtCST').change(function() { - if($('#Rate').val() != '' && $('#MaterialCode').val() != "0" ) - { - //$('#CSTCalModel').modal('show'); - - } -}); -$('#txtEditCST').change(function() { - - if($('#EditRate').val() != '' && $('#EditMaterialCode').val() != "0" ) - { - //$('#CSTCalModel').modal('show'); - } - }); -$('#drpFreight').change(function() { - - if($('#Rate').val() != '' && $('#MaterialCode').val() != "0" ) - { - selValue = $("#drpFreight").val() ; - $('#txtFreight').val(''); - $('#txtAfterFreight').val(''); - - if (selValue == NilType) - { - - $('#txtFreight').attr('readonly', 'true'); - $('#txtFreight').val('0.00'); - - } - else - { - $('#txtFreight').removeAttr( 'readonly','true' ); - $('#txtFreight').val(''); - - - } - } - else - { - alert('Please Select MaterialCode and Rate Field Value'); - $('#drpFreight').val("0"); - $('#Rate').focus(); - } - -}); -$('#drpEditFreight').change(function() { - - if($('#EditRate').val() != '' && $('#EditMaterialCode').val() != "0" ) - { - selValue = $("#drpEditFreight").val() ; - $('#txtEditFreight').val(''); - $('#txtEditAfterFreight').val(''); - - if (selValue == NilType) - { - - $('#txtEditFreight').attr('readonly', 'true'); - $('#txtEditFreight').val('0.00'); - - } - - else - { - $('#txtEditFreight').removeAttr( 'readonly','true' ); - $('#txtEditFreight').val(''); - } - } - else - { - alert('Please Select MaterialCode and Rate Field Value'); - $('#drpEditFreight').val("0"); - $('#EditRate').focus(); - } -}); -}); - -/* - * To calcuate the Discount */ -function calculateDiscount(isEdit) - { - if(isEdit == '0') - { - if($('#MaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#MaterialCode').focus(); - $('#txtDiscount').val(''); - return false; - } - else if($('#Rate').val() == '') - { - alert('Please Enter the Rate value'); - $('#Rate').focus(); - $('#txtDiscount').val(''); - return false; - } - if($('#Rate').val() != '' && $('#MaterialCode').val() != "0" ) - { - - var basicValue = parseFloat($('#txtBasicValue').val()); - var DiscountType =$("#DiscountType").val(); - - if(DiscountType == "0") - { - alert('Please Select the discount Type'); - $('#txtDiscount').val(''); - $("#DiscountType").focus(); - } - else if ($('#txtDiscount').val() != '' && $('#txtDiscount').val() != '0') - { - var AfterDiscount = 0.0; - var Discountval = parseFloat($('#txtDiscount').val()); - if(DiscountType == PercentageType) - { - - AfterDiscount = <?php echo DIS_PERCENTAGE;?>; - - } - else if(DiscountType == NilType ) - { - AfterDiscount = "0.00"; - } - else - { - AfterDiscount = <?php echo DIS_LUMPSUM;?>; - } - var discount = parseFloat(AfterDiscount).toFixed(2); - $('#txtAfterDiscount').val(discount); - } - else - { - $('#txtAfterDiscount').val("0.00"); - } - } - calculateTotalValue(); - } - else - { - if($('#EditMaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#EditMaterialCode').focus(); - $('#txtEditDiscount').val(''); - return false; - } - else if($('#EditRate').val() == '') - { - alert('Please Enter the Rate value'); - $('#EditRate').focus(); - $('#txtEditDiscount').val(''); - return false; - } - if($('#EditRate').val() != '' && $('#EditMaterialCode').val() != "0" ) - { - - var basicValue = parseFloat($('#txtEditBasicValue').val()); - var DiscountType =$("#EditDiscountType").val(); - - if(DiscountType == "0") - { - alert('Please Select the discount Type'); - $('#txtEditDiscount').val(''); - $("#EditDiscountType").focus(); - } - else if ($('#txtEditDiscount').val() != '' && $('#txtEditDiscount').val() != '0') - { - var AfterDiscount = 0.0; - var Discountval = parseFloat($('#txtEditDiscount').val()); - if(DiscountType == PercentageType) - { - - AfterDiscount = <?php echo DIS_PERCENTAGE;?>; - - } - else if(DiscountType == NilType ) - { - AfterDiscount = "0.00"; - } - else - { - AfterDiscount = <?php echo DIS_LUMPSUM;?>; - } - var discount = parseFloat(AfterDiscount).toFixed(2); - $('#txtEditAfterDiscount').val(discount); - } - else - { - $('#txtEditAfterDiscount').val("0.00"); - } - } - calculateEditTotalValue(); - } - } - /* - * To calcuate the Packaging */ -function calculatePackaging(isEdit) - { - if(isEdit == '0') - { - if($('#MaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#MaterialCode').focus(); - $('#txtPackaging').val(''); - return false; - } - else if($('#Rate').val() == '') - { - alert('Please Enter the Rate value'); - $('#Rate').focus(); - $('#txtPackaging').val(''); - return false; - } - else - { - - var basicValue = parseFloat($('#txtBasicValue').val()); - - var PackagingType =$("#PackagingType").val(); - - if(PackagingType == "0") - { - alert('Please select the Packaging Type'); - $('#txtPackaging').val(''); - $("#PackagingType").focus(); - } - - else if($('#txtPackaging').val() != '' && $('#txtPackaging').val() !='0') - { - var Packagingvalue = parseFloat($('#txtPackaging').val()); - var AfterPackaging = 0.0; - - if(PackagingType == PercentageType) - { - if($(PackagingCalculation != 0 && '#txtAfterDiscount').val() == '') - { - alert('Please Enter the Discount value'); - $('#txtPackaging').val(''); - $('#DiscountType').focus(); - - return false; - } - else - { - var AfterDiscount =parseFloat($('#txtAfterDiscount').val()); - AfterPackaging = PackagingCalculation == 0 ? <?php echo PACKAGING_PERCENTAGE_BYBASICVALUE ;?> : <?php echo PACKAGING_PERCENTAGE_BYDISCOUNTVALUE;?> ; - } - - } - else if(PackagingType == NilType ) - { - AfterPackaging = "0.00"; - - } - else - { - - - AfterPackaging = PackagingCalculation == 0 ? <?php echo PACKAGING_LUMPSUM_BYBASICVALUE ;?>:<?php echo PACKAGING_LUMPSUM_BYDISCOUNTVALUE;?> ; - - } - var Packaging = parseFloat(AfterPackaging).toFixed(2); - - $('#txtAfterPackaging').val(Packaging); - } - else - { - $('#txtAfterPackaging').val("0.00"); - } - } - calculateTotalValue(); - } - else - { - if($('#EditMaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#EditMaterialCode').focus(); - $('#txtEditPackaging').val(''); - return false; - } - else if($('#EditRate').val() == '') - { - alert('Please Enter the Rate value'); - $('#EditRate').focus(); - $('#txtEditPackaging').val(''); - return false; - } - - else - { - - var basicValue = parseFloat($('#txtEditBasicValue').val()); - - var PackagingType =$("#EditPackagingType").val(); - - if(PackagingType == "0") - { - alert('Please select the Packaging Type'); - $('#txtEditPackaging').val(''); - $("#EditPackagingType").focus(); - } - - else if($('#txtEditPackaging').val() != '' && $('#txtEditPackaging').val() !='0') - { - var Packagingvalue = parseFloat($('#txtEditPackaging').val()); - var AfterPackaging = 0.0; - - if(PackagingType == PercentageType) - { - if(PackagingCalculation != 0 &&$('#txtEditAfterDiscount').val() == '') - { - alert('Please Enter the Discount value'); - $('#EditDiscountType').focus(); - $('#txtEditPackaging').val(''); - return false; - } - else - { - var AfterDiscount =parseFloat($('#txtEditAfterDiscount').val()); - AfterPackaging = PackagingCalculation == 0 ? <?php echo PACKAGING_PERCENTAGE_BYBASICVALUE ;?> : <?php echo PACKAGING_PERCENTAGE_BYDISCOUNTVALUE;?> ; - } - - } - else if(PackagingType == NilType ) - { - AfterPackaging = "0.00"; - } - else - { - - AfterPackaging = PackagingCalculation == 0 ? <?php echo PACKAGING_LUMPSUM_BYBASICVALUE ;?>:<?php echo PACKAGING_LUMPSUM_BYDISCOUNTVALUE;?> ; - - } - var Packaging = parseFloat(AfterPackaging).toFixed(2); - - $('#txtEditAfterPackaging').val(Packaging); - } - else - { - $('#txtEditAfterPackaging').val("0.00"); - } - } - calculateEditTotalValue(); - } - } - - function calculateExcise(isEdit) - { - if(isEdit == '0') - { - - if($('#MaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#MaterialCode').focus(); - $('#txtExciseDuty').val(''); - return false; - } - else if($('#Rate').val() == '') - { - alert('Please Enter the Rate value'); - $('#txtExciseDuty').val(''); - $('#Rate').focus(); - return false; - } - - else - { - var basicValue = parseFloat($('#txtBasicValue').val()); - - - if($('#txtExciseDuty').val() != '' && $('#txtExciseDuty').val() != '0') - { - var AfterExciseDuty = 0.0; - var ExciseDuty = parseFloat($('#txtExciseDuty').val()); - if(ExciseCalculation == '0') - { - AfterExciseDuty = <?php echo EXCISE_ONBASICVALUE; ?>; - } - else if(ExciseCalculation == '1') - { - if($('#txtAfterDiscount').val() == '') - { - alert('Please Enter the Discount value'); - $('#DiscountType').focus(); - $('#txtExciseDuty').val(''); - return false; - } - else - { - var AfterDiscount =parseFloat($('#txtAfterDiscount').val()); - AfterExciseDuty = <?php echo EXCISE_ONBASIC_DISCOUNT; ?>; - } - } - else if(ExciseCalculation == '2') - { - if($('#txtAfterDiscount').val() == '') - { - alert('Please Enter the Discount value'); - $('#DiscountType').focus(); - $('#txtExciseDuty').val(''); - return false; - } - else if($('#txtAfterPackaging').val() == '') - { - alert('Please Enter the Packaging value'); - $('#PackagingType').focus(); - $('#txtExciseDuty').val(''); - return false; - - } - else - { - var AfterDiscount =parseFloat($('#txtAfterDiscount').val()); - var AfterPackaging = parseFloat($('#txtAfterPackaging').val()); - AfterExciseDuty = <?php echo EXCISE_ONBASIC_DISCOUNT_PACKAGING; ?>; - } - } - else - { - if($('#txtAfterPackaging').val() == '') - { - alert('Please Enter the Packaging value'); - $('#PackagingType').focus(); - $('#txtExciseDuty').val(''); - return false; - } - else - { - var AfterPackaging = parseFloat($('#txtAfterPackaging').val()); - AfterExciseDuty = <?php echo EXCISE_ONBASIC_PACKAGING; ?>; - - } - } - var ExciseVal = parseFloat(AfterExciseDuty).toFixed(2); - - $('#txtAfterExciseDuty').val(ExciseVal); - } - else - { - $('#txtAfterExciseDuty').val("0.00"); - } - - } - calculateTotalValue(); - } - else - { - if($('#EditMaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#EditMaterialCode').focus(); - return false; - } - else if($('#EditRate').val() == '') - { - alert('Please Enter the Rate value'); - $('#EditRate').focus(); - return false; - } - - else - { - - var basicValue = parseFloat($('#txtEditBasicValue').val()); - - - - if($('#txtEditExciseDuty').val() != '' && $('#txtEditExciseDuty').val() != '0') - { - var AfterExciseDuty = 0.0; - var ExciseDuty = parseFloat($('#txtEditExciseDuty').val()); - if(ExciseCalculation == '0') - { - AfterExciseDuty = <?php echo EXCISE_ONBASICVALUE; ?>; - } - else if(ExciseCalculation == '1') - { - if($('#txtEditAfterDiscount').val() == '') - { - alert('Please Enter the Discount value'); - $('#EditDiscountType').focus(); - $('#txtEditExciseDuty').val(''); - return false; - } - else - { - var AfterDiscount =parseFloat($('#txtEditAfterDiscount').val()); - AfterExciseDuty = <?php echo EXCISE_ONBASIC_DISCOUNT; ?>; - } - } - else if(ExciseCalculation == '2') - { - if($('#txtEditAfterDiscount').val() == '') - { - alert('Please Enter the Discount value'); - $('#EditDiscountType').focus(); - $('#txtEditExciseDuty').val(''); - return false; - } - else if($('#txtEditAfterPackaging').val() == '') - { - alert('Please Enter the Packaging value'); - $('#EditPackagingType').focus(); - $('#txtEditExciseDuty').val(''); - return false; - } - else - { - var AfterDiscount =parseFloat($('#txtEditAfterDiscount').val()); - var AfterPackaging = parseFloat($('#txtEditAfterPackaging').val()); - AfterExciseDuty = <?php echo EXCISE_ONBASIC_DISCOUNT_PACKAGING; ?>; - } - } - else - { - if($('#txtEditAfterPackaging').val() == '') - { - alert('Please Enter the Packaging value'); - $('#EditPackagingType').focus(); - $('#txtEditExciseDuty').val(''); - return false; - } - else - { - var AfterPackaging = parseFloat($('#txtEditAfterPackaging').val()); - AfterExciseDuty = <?php echo EXCISE_ONBASIC_PACKAGING; ?>; - } - } - var ExciseVal = parseFloat(AfterExciseDuty).toFixed(2); - - $('#txtEditAfterExciseDuty').val(ExciseVal); - } - else - { - $('#txtEditAfterExciseDuty').val("0.00"); - } - - } - calculateEditTotalValue(); - } - - } - - function calculateVat(isEdit) - { - if(isEdit == '0') - { - if($('#MaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#MaterialCode').focus(); - $('#txtVat').val(''); - return false; - } - else if($('#Rate').val() == '') - { - alert('Please Enter the Rate value'); - $('#Rate').focus(); - $('#txtVat').val(''); - return false; - } - - else - { - var basicValue = parseFloat($('#txtBasicValue').val()); - var AfterVat = 0.0; - if(VatCalculation != 0 && $('#txtVat').val() != '' ) - { - - if($('#txtAfterExciseDuty').val() == '') - { - alert('Please Enter the Excise value'); - $('#txtExciseDuty').focus(); - $('#txtVat').val(''); - return false; - } - else - { - - var discountValue = parseFloat($('#txtAfterDiscount').val()); - var packageValue = parseFloat($('#txtAfterPackaging').val()); - var ExciseDuty = parseFloat($('#txtAfterExciseDuty').val()); - vatValue = parseFloat($('#txtVat').val()); - AfterVat = <?php echo VAT_ONEXICSEVALUE; ?>; - var Vatval = parseFloat(AfterVat).toFixed(2); - - $('#txtAfterVat').val(Vatval); - } - } - else if(VatCalculation == 0 && $('#txtVat').val() != '') - { -var ExciseDuty = parseFloat($('#txtAfterExciseDuty').val()); - - var discountValue = parseFloat($('#txtAfterDiscount').val()); - var packageValue = parseFloat($('#txtAfterPackaging').val()); - vatValue = parseFloat($('#txtVat').val()); - AfterVat = <?php echo VAT_ONEXICSEVALUE; ?>; - var Vatval = parseFloat(AfterVat).toFixed(2); - - $('#txtAfterVat').val(Vatval); - } - - else - { - $('#txtAfterVat').val("0.00"); - } - calculateTotalValue(); - } - - } - else - { - if($('#EditMaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#EditMaterialCode').focus(); - $('#txtEditVat').val(''); - return false; - } - else if($('#EditRate').val() == '') - { - alert('Please Enter the Rate value'); - $('#EditRate').focus(); - $('#txtEditVat').val(''); - return false; - } - - else - { - var basicValue = parseFloat($('#txtEditBasicValue').val()); - var ExciseDuty = parseFloat($('#txtEditAfterExciseDuty').val()); - var AfterVat = 0.0; - if(VatCalculation != 0 && $('#txtEditVat').val() != '' ) - { - - if($('#txtEditAfterExciseDuty').val() == '') - { - alert('Please Enter the Excise value'); - $('#txtEditAfterExciseDuty').focus(); - $('#txtEditVat').val(''); - return false; - } - else - { - var ExciseDuty = parseFloat($('#txtEditAfterExciseDuty').val()); - vatValue = parseFloat($('#txtEditVat').val()); - AfterVat = <?php echo VAT_ONEXICSEVALUE; ?>; - var Vatval = parseFloat(AfterVat).toFixed(2); - - $('#txtEditAfterVat').val(Vatval); - } - } - else if(VatCalculation == 0 && $('#txtEditVat').val() != '') - { - vatValue = parseFloat($('#txtEditVat').val()); - AfterVat = <?php echo VAT_ONBASICVALUE; ?>; - var Vatval = parseFloat(AfterVat).toFixed(2); - - $('#txtEditAfterVat').val(Vatval); - } - - else - { - $('#txtEditAfterVat').val("0.00"); - } - - calculateEditTotalValue(); - } - - } - } - function calculateCST(isEdit) - { - if(isEdit == '0') - { - if($('#MaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#MaterialCode').focus(); - $('#txtCST').val(''); - return false; - } - else if($('#Rate').val() == '') - { - alert('Please Enter the Rate value'); - $('#Rate').focus(); - $('#txtCST').val(''); - return false; - } - - else - { - var basicValue = parseFloat($('#txtBasicValue').val()); - var discountValue = parseFloat($('#txtAfterDiscount').val()); - var packageValue = parseFloat($('#txtAfterPackaging').val()); - var AfterCST = 0.0; - if(CSTCalculation != 0 && $('#txtCST').val() != '' ) - { - - if($('#txtAfterExciseDuty').val() == '') - { - alert('Please Enter the Excise value'); - $('#txtExciseDuty').focus(); - $('#txtAfterCST').val(''); - return false; - } - else - { - var ExciseDuty = parseFloat($('#txtAfterExciseDuty').val()); - var CSTValue= parseFloat($('#txtCST').val()); - AfterCST = <?php echo CST_ONEXICSEVALUE; ?>; - var Vatval = parseFloat(AfterCST).toFixed(2); - - $('#txtAfterCST').val(Vatval); - } - } - else if(CSTCalculation == 0 && $('#txtCST').val() != '') - { - var ExciseDuty = parseFloat($('#txtAfterExciseDuty').val()); - var CSTValue= parseFloat($('#txtCST').val()); - AfterCST = <?php echo CST_ONEXICSEVALUE; ?>; - var Vatval = parseFloat(AfterCST).toFixed(2); - - $('#txtAfterCST').val(Vatval); - } - - else - { - $('#txtAfterCST').val("0.00"); - } - calculateTotalValue(); - } - - } - else - { - if($('#EditMaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#EditMaterialCode').focus(); - $('#txtEditCST').val(''); - return false; - } - else if($('#EditRate').val() == '') - { - alert('Please Enter the Rate value'); - $('#EditRate').focus(); - $('#txtEditCST').val(''); - return false; - } - - else - { - - var basicValue = parseFloat($('#txtEditBasicValue').val()); - var AfterCST = 0.0; - if(CSTCalculation != 0 && $('#txtEditCST').val() != '' ) - { - - if($('#txtEditAfterExciseDuty').val() == '') - { - alert('Please Enter the Excise value'); - $('#txtEditAfterExciseDuty').focus(); - $('#txtEditCST').val(''); - return false; - } - else - { - var ExciseDuty = parseFloat($('#txtEditAfterExciseDuty').val()); - var CSTValue= parseFloat($('#txtEditCST').val()); - AfterCST = <?php echo CST_ONBASICVALUE; ?>; - var Vatval = parseFloat(AfterCST).toFixed(2); - - $('#txtEditAfterCST').val(Vatval); - } - } - else if(CSTCalculation == 0 && $('#txtEditCST').val() != '') - { - var CSTValue= parseFloat($('#txtEditCST').val()); - AfterCST = <?php echo CST_ONBASICVALUE; ?>; - var Vatval = parseFloat(AfterCST).toFixed(2); - - $('#txtEditAfterCST').val(Vatval); - } - - else - { - $('#txtEditAfterCST').val("0.00"); - } - - calculateEditTotalValue(); - } - - } - } - function calculateGST(isEdit) - { - if(isEdit == '0') - { - if($('#MaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#MaterialCode').focus(); - $('#txtGST').val(''); - return false; - } - else if($('#Rate').val() == '') - { - alert('Please Enter the Rate value'); - $('#Rate').focus(); - $('#txtGST').val(''); - return false; - } - else - { - var basicValue = parseFloat($('#txtBasicValue').val()); - - if($('#txtGST').val() != "0" && $('#txtGST').val() != '') - { - var GSTValue = parseFloat($('#txtGST').val()); - - var AfterGST = 0.0; - AfterGST = <?php echo GSTTAX; ?>; - - var GSTval = parseFloat(AfterGST).toFixed(2); - - $('#txtAfterGST').val(GSTval); - } - else - { - $('#txtAfterGST').val("0.00"); - } - - } - calculateTotalValue(); - } - else - { - if($('#EditMaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#EditMaterialCode').focus(); - $('#txtEditGST').val(''); - return false; - } - else if($('#EditRate').val() == '') - { - alert('Please Enter the Rate value'); - $('#EditRate').focus(); - $('#txtEditGST').val(''); - return false; - } - else - { - var basicValue = parseFloat($('#txtEditBasicValue').val()); - - if($('#txtEditGST').val() != "0" && $('#txtEditGST').val() != '') - { - var GSTValue = parseFloat($('#txtEditGST').val()); - - var AfterGST = 0.0; - AfterGST = <?php echo GSTTAX; ?>; - - var GSTval = parseFloat(AfterGST).toFixed(2); - - $('#txtEditAfterGST').val(GSTval); - } - else - { - $('#txtEditAfterGST').val("0.00"); - } - - } - calculateEditTotalValue(); - - } - } - function calculateOtherTaxes(isEdit) - { - if(isEdit == '0') - { - if($('#MaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#MaterialCode').focus(); - $('#txtOtherTax').val(''); - return false; - } - else if($('#Rate').val() == '') - { - alert('Please Enter the Rate value'); - $('#Rate').focus(); - $('#txtOtherTax').val(''); - return false; - } - else - { - var basicValue = parseFloat($('#txtBasicValue').val()); - - - if($('#txtOtherTax').val() != "0" && $('#txtOtherTax').val() != '') - { - var OtherTaxValue = parseFloat($('#txtOtherTax').val()); - - var AfterOtherTaxes = 0.0; - AfterOtherTaxes = <?php echo OTHERTAX; ?>; - - var Otherval = parseFloat(AfterOtherTaxes).toFixed(2); - - $('#txtAfterOtherTax').val(Otherval); - } - else - { - $('#txtAfterOtherTax').val("0.00"); - } - calculateTotalValue(); - - } - } - else - { - if($('#EditMaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#EditMaterialCode').focus(); - $('#txtEditOtherTax').val(''); - return false; - } - else if($('#EditRate').val() == '') - { - alert('Please Enter the Rate value'); - $('#EditRate').focus(); - $('#txtEditOtherTax').val(''); - return false; - } - else - { - var basicValue = parseFloat($('#txtEditBasicValue').val()); - - - if($('#txtEditOtherTax').val() != "0" && $('#txtEditOtherTax').val() != '') - { - var OtherTaxValue = parseFloat($('#txtEditOtherTax').val()); - - var AfterOtherTaxes = 0.0; - AfterOtherTaxes = <?php echo OTHERTAX; ?>; - - var Otherval = parseFloat(AfterOtherTaxes).toFixed(2); - - $('#txtEditAfterOtherTax').val(Otherval); - } - else - { - $('#txtEditAfterOtherTax').val("0.00"); - } - calculateEditTotalValue(); - - } - - } - } - - function calculateFreight(isEdit) - { - if(isEdit == '0') - { - if($('#MaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#MaterialCode').focus(); - $('#txtFreight').val('') ; - return false; - } - else if($('#Rate').val() == '') - { - alert('Please Enter the Rate value'); - $('#Rate').focus(); - $('#txtFreight').val('') ; - return false; - } - else - { - var basicValue = parseFloat($('#txtBasicValue').val()); - var FreightType =$("#drpFreight").val(); - if(FreightType == "0") - { - alert('Please select Freight Type'); - $('#txtFreight').val(''); - $("#drpFreight").focus(); - } - else if( $('#txtFreight').val() != "0" && $('#txtFreight').val() != '') - { - var FreightValue = parseFloat($('#txtFreight').val()); - var UOM = parseFloat($('#UOM').val()); - var Quantity = parseFloat($('#Quantity').val()); - //alert(FreightType); - var AfterFreight = 0.0; - if(FreightType == PercentageType) - { - AfterFreight = <?php echo FREIGHT_PERCENTAGE;?>; - } - else if(FreightType == NilType) - { - AfterFreight = 0.0; - } - else if(FreightType == '<?php echo LUMPSUM;?>') - { - AfterFreight = <?php echo FREIGHT_LUMPSUM;?>; - } - else if(FreightType == '<?php echo PERUOM;?>') - { - AfterFreight = <?php echo FREIGHT_PERUOM;?>; - } - else if(FreightType == '<?php echo PERTRIP;?>') - { - AfterFreight = <?php echo FREIGHT_PERTRIP;?>; - } - else { - AfterFreight = $("#txtFreight").val(); - } - var AfterFreightval = parseFloat(AfterFreight).toFixed(2); - - $('#txtAfterFreight').val(AfterFreightval); - } - else - { - $('#txtAfterFreight').val("0.00"); - } - - } - calculateTotalValue(); - } - else - { - if($('#EditMaterialCode').val() == "0") - { - alert('Please Select the Material Code'); - $('#EditMaterialCode').focus(); - $('#txtEditFreight').val(''); - return false; - } - else if($('#EditRate').val() == '') - { - alert('Please Enter the Rate value'); - $('#EditRate').focus(); - $('#txtEditFreight').val(''); - return false; - } - else - { - var basicValue = parseFloat($('#txtEditBasicValue').val()); - var FreightType =$("#drpEditFreight").val(); - if(FreightType == "0") - { - alert('Please select Freight Type'); - $('#txtEditFreight').val(''); - $("#drpEditFreight").focus(); - } - else if( $('#txtEditFreight').val() != "0" && $('#txtEditFreight').val() != '') - { - var FreightValue = parseFloat($('#txtEditFreight').val()); - var UOM = parseFloat($('#EditUOM').val()); - var Quantity = parseFloat($('#EditQuantity').val()); - //alert(FreightType); - var AfterFreight = 0.0; - if(FreightType == PercentageType) - { - AfterFreight = <?php echo FREIGHT_PERCENTAGE;?>; - } - else if(FreightType == NilType) - { - AfterFreight = 0.0; - } - else if(FreightType == '<?php echo LUMPSUM;?>') - { - AfterFreight = <?php echo FREIGHT_LUMPSUM;?>; - } - else if(FreightType == '<?php echo PERUOM;?>') - { - AfterFreight = <?php echo FREIGHT_PERUOM;?>; - } - else if(FreightType == '<?php echo PERTRIP;?>') - { - AfterFreight = <?php echo FREIGHT_PERTRIP;?>; - } - else { - AfterFreight = $("#txtEditFreight").val(); - } - var AfterFreightval = parseFloat(AfterFreight).toFixed(2); - - $('#txtEditAfterFreight').val(AfterFreightval); - } - else - { - $('#txtEditAfterFreight').val("0.00"); - } - - } - calculateEditTotalValue(); - - } - } - - /* Set the Packaging calculation option for calculating Packaging */ - function SetPackagingOption() - { - PackagingCalculation = $("input:radio[name='optPackaging']:checked").val(); - $('#packagingcalmodel').modal('hide'); - calculatePackaging($('#isEdit').val()); - } - /* Set the Packaging calculation option for calculating Packaging */ - function SetExciseCalculation() - { - ExciseCalculation = $("input:radio[name='optExcise']:checked").val(); - $('#ExciseDutyCalModel').modal('hide'); - calculateExcise($('#isEdit').val()); - } - /* Set the Packaging calculation option for calculating Packaging */ - function SetVatorCST() - { - StateTaxCheck = $("input:radio[name='Range']:checked").val(); - $('#txtPoRange').val(StateTaxCheck) ; - //alert('Radio clicke:'+StateTaxCheck); - if(StateTaxCheck == "0") - { - // style="display:none;" - $('#Vat').removeAttr("style"); - $('#TotVat').removeAttr("style"); - $('#CST').attr("style","display:none;"); - $('#TotCST').attr("style","display:none;"); - } - else - { - $('#CST').removeAttr("style"); - $('#TotCST').removeAttr("style"); - $('#Vat').attr("style","display:none;"); - $('#TotVat').attr("style","display:none;"); - } - } - function SetVatCalculation() - { - VatCalculation = $("input:radio[name='optVat']:checked").val(); - $('#VatCalModel').modal('hide'); - calculateVat($('#isEdit').val()); - } - function SetCSTCalculation() - { - CSTCalculation = $("input:radio[name='optCST']:checked").val(); - $('#CSTCalModel').modal('hide'); - calculateCST($('#isEdit').val()); - } - - function ExceedQuantityCheck() - { - // RequistQuantity - var EnterQuantity = $("#Quantity").val()== '' ? "0.00" : parseFloat($("#Quantity").val()); - var ReqQuantity = parseFloat(RequistQuantity); - if(EnterQuantity > ReqQuantity) - { - alert('Your exceeding the Quantity from the Requisition Quantity:'+ RequistQuantity +'.Please adjust the Quantity to proceed further.'); - //$('#Quantity').val(RequistQuantity); - $('#Quantity').focus(); - return false; - } -else{ -return true; -} - } - - function ExceedEditQuantityCheck() - { - // RequistQuantity - var EnterQuantity = $("#EditQuantity").val()== '' ? "0.00" : parseFloat($("#EditQuantity").val()); - var ReqQuantity = parseFloat(RequistQuantity); - if(EnterQuantity > ReqQuantity) - { - alert('Your exceeding the Quantity from the Requisition Quantity:'+ RequistQuantity +'.Please adjust the Quantity to proceed further.'); - $('#EditQuantity').focus(); - return false; - } - else{ -return true; -} - } - // To Reset the Tax calculation - function resetTaxField() - { - - $("#ItemName").val(''); - $("#UOM").val(''); - $("#Quantity").val(''); - $("#Rate").val(''); - $("#DiscountType").val("0"); - $("#txtDiscount").val(''); - $('#txtAfterDiscount').val(''); - $("#PackagingType").val("0") - $("#txtPackaging").val(''); - $('#txtAfterPackaging').val(''); - $("#txtExciseDuty").val(''); - $('#txtAfterExciseDuty').val(''); - $("#txtVat").val(''); - $('#txtAfterVat').val(''); - $("#txtCST").val(''); - $('#txtAfterCST').val(''); - $("#txtGST").val(''); - $('#txtAfterGST').val(''); - $("#txtOtherTax").val(''); - $('#txtAfterOtherTax').val(''); - $("#drpFreight").val("0") - $("#txtFreight").val(''); - $('#txtAfterFreight').val(''); - $('#txtInsurance').val(''); - $('#txtTotalOrderValue').val(''); - ExciseCalculation = ''; - PackagingCalculation = ''; - VatCalculation = ''; - CSTCalculation = ''; - } - - function Editchange(){ - ExceedEditQuantityCheck(); - if($('#EditQuantity').val() != '' && $('#EditRate').val() != '') - { - var txtQuantity = parseFloat( $('#EditQuantity').val()); - var txtUnitPrice = parseFloat($('#EditRate').val()); - var Tot = txtQuantity * txtUnitPrice - $('#txtEditBasicValue').val(Tot); - calculateEditTotalValue($('#isEdit').val()); - - } - -} - -function validateEditExceedLimit() - { - var avalbudAmt = parseFloat($('#EditAvlBudAmt').val()); - var basicAmountRate = parseFloat($('#txtEditBasicValue').val()); - var totalAmount = parseFloat($('#txtEditTotalOrderValue').val()); - - if(basicAmountRate > avalbudAmt || totalAmount > avalbudAmt) - { - alert('Basic amount is exceeding the Budget Limit.Please adjust the product value.'); - $('#EditRate').focus(); - return false; - } - else - { - return true; - } - - } - function calculateEditTotalValue() - { - var Packaging = $('#txtEditAfterPackaging').val() == '' ? '0.00' : $('#txtEditAfterPackaging').val(); - var ExciseDuty = $('#txtEditAfterExciseDuty').val() == '' ? '0.00' : $('#txtEditAfterExciseDuty').val(); - var Vat = $('#txtEditAfterVat').val() == '' ? '0.00' : $('#txtEditAfterVat').val(); - var CST = $('#txtEditAfterCST').val() == '' ? '0.00' : $('#txtEditAfterCST').val(); - var GST = $('#txtEditAfterGST').val() == '' ? '0.00' : $('#txtEditAfterGST').val(); - var OtherTax = $('#txtEditAfterOtherTax').val() == '' ? '0.00' : $('#txtEditAfterOtherTax').val(); - var Freight = $('#txtEditAfterFreight').val() == '' ? '0.00' : $('#txtEditAfterFreight').val(); - var Insurance = $('#txtEditInsurance').val() == '' ? '0.00' : $('#txtEditInsurance').val(); - var Discount = $('#txtEditAfterDiscount').val() == '' ? '0.00' : $('#txtEditAfterDiscount').val(); - var BasicVal = $('#txtEditBasicValue').val() == '' ? '0.00' : $('#txtEditBasicValue').val(); - - var totvalue = ( parseFloat(BasicVal) + parseFloat(Packaging)+ parseFloat(ExciseDuty)+ parseFloat(Vat) + parseFloat(CST)+ parseFloat(GST) + parseFloat(OtherTax) + parseFloat(Freight) + parseFloat(Insurance)) - parseFloat(Discount); - - var tot = parseFloat(totvalue).toFixed(2); - - $('#txtEditTotalOrderValue').val(tot); - validateEditExceedLimit(); - } -function calculateEditTaxValue() - { - var Packaging = $('#txtEditAfterPackaging').val() == '' ? '0.00' : $('#txtEditAfterPackaging').val(); - var ExciseDuty = $('#txtEditAfterExciseDuty').val() == '' ? '0.00' : $('#txtEditAfterExciseDuty').val(); - var Vat = $('#txtEditAfterVat').val() == '' ? '0.00' : $('#txtEditAfterVat').val(); - var CST = $('#txtEditAfterCST').val() == '' ? '0.00' : $('#txtEditAfterCST').val(); - var GST = $('#txtEditAfterGST').val() == '' ? '0.00' : $('#txtEditAfterGST').val(); - var OtherTax = $('#txtEditAfterOtherTax').val() == '' ? '0.00' : $('#txtEditAfterOtherTax').val(); - var Freight = $('#txtEditAfterFreight').val() == '' ? '0.00' : $('#txtEditAfterFreight').val(); - var Insurance = $('#txtEditInsurance').val() == '' ? '0.00' : $('#txtEditInsurance').val(); - var Discount = $('#txtEditAfterDiscount').val() == '' ? '0.00' : $('#txtEditAfterDiscount').val(); - - - var totvalue = parseFloat(Discount) -( parseFloat(Packaging)+ parseFloat(ExciseDuty)+ parseFloat(Vat) + parseFloat(CST)+ parseFloat(GST) + parseFloat(OtherTax) + parseFloat(Freight) + parseFloat(Insurance)) ; - - var tot = parseFloat(totvalue).toFixed(2); - //alert('tot:'+tot); - return tot; - } - $(document).ready(function () { - $('#Date').click(function () { - //for Date range selection - $('#Schedulediv').hide(); - $('#Deliverydtdiv').show(); - }); - $('#Schedule').click(function () { - //for schedule range selection - $('#Deliverydtdiv').hide(); - $('#Schedulediv').show(); - }); - }); -</script> -<style> -.content { - Padding:0% ! important; -} -body { - background-color: #ecf0f5; -} -.pagination { - margin :0px ! important; -} -.box-body { - padding:0px ! important; -} -</style> -<div class="content-wrapper"> - <?php - $attributes = array('class' => 'form-label-left CreatePO ','name' => 'CreatePO','id' => 'CreatePO'); - - echo form_open($this->config->base_url().'/purchaseorder/addPO/',$attributes); ?> - - <section class="content"> - <div id="content"> </div> - <div> - <center><b><h2>Siddharth Industries - Revenue Purchase Order</h2></b></center></div> - <div class="container-fluid"> - <div class="row"> - <div class="col-md-12"> - <div class="col-md-3"> - <div class="col-md-12"> - <label>Requistion No</label> - <?php - $options = array("0"=>'Selected Requisition Numbers'); - if(!empty($ReqList)) - { - foreach ($ReqList as $SID): - - $options[$SID->ReqNo] = $SID->ReqNo ."-". $SID->ReqBy; - $ReqType = $SID->ReqType; - endforeach; - } - echo form_multiselect('RequistionNo', $options,set_value('RequistionNo'),'id="RequistionNo"' ,'required="true"' , 'height="400px"' ); - ?> - </div> - <div class="col-md-12"> - <label>Purchase Order Date</label> - <div class="form-group"> - <?php - $data = array('name' => 'PODate','value' => set_value('PODate',$CurrentDate),'id'=>'PODate', 'class' => 'form-control' ,'required' => 'true', 'onkeypress'=>'return false;'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-9"> - <div class="row"> - <div class="col-md-4"> - <label>Select Supplier</label> - <?php - $options = array("0"=>'Select Supplier'); - //print_r( $options); - - if(!empty($Suplist)) - { - foreach ($Suplist as $SID): - - - $options[$SID->SupplierID] = $SID->SupplierID.' '.' - '.' '.$SID->SupplierName; - - endforeach; - } - - echo form_dropdown('drpSupplier', $options,set_value('drpSupplier'),'id="drpSupplier"' ,'required="true"' ,'class="form-control select2'); - - ?> - </div> - <div class="col-md-4"> - <label>Purchase Order Type</label> - <div class="form-group"> - <?php - $data = array('name' => 'POType','value' => set_value('POType',$ReqType),'id'=>'POType', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2" style="padding: 0px;"> - - <div id="div1" style="display:block;"> - <b><u>Select Tax Range</u></b><br/> - <tr> - <td> - <?php echo form_label('Local', 'Local') ."&nbsp;". form_radio(array("name"=>"Range","id"=>"Local","value"=>"0", 'checked'=>'checked','onchange'=>'SetVatorCST();')); ?>&nbsp;&nbsp;&nbsp;&nbsp;</td> - <td><?php echo form_label('Inter state', 'Inter state') ."&nbsp;". form_radio(array("name"=>"Range","id"=>"Inter_state","value"=>"1", 'onchange'=>'SetVatorCST();')); ?> - </td> - </tr> - </div> - <div id="div2" style="display:none;"> - </div> - <div id="div4" style="display:none;"> - </div> - </div> - <div class="col-md-2" style="padding:0px;"> - - <b><u>Select Delivery By</u></b><br/> - <tr> - <td> - <?php echo form_label('Date', 'Date') ."&nbsp;". form_radio(array("name"=>"DateRange", "id"=>"Date", "value"=>"0", "checked"=>"checked")); ?>&nbsp;&nbsp;&nbsp;&nbsp;</td> - <td> - <?php echo form_label('Schedule', 'Schedule') ."&nbsp;". form_radio(array("name"=>"DateRange", "id"=>"Schedule", "value"=>"1")); ?> - - </td> - </tr> - </div> - </div> - <div class="row"> - <div class="col-md-4"> - <label>Supplier Address</label> - <div class="form-group"> - <?php - $data = array('name' => 'SupAddress','value' => set_value('SupAddress'),'id'=>'SupAddress', 'class' => 'form-control' ,'readonly' => 'true' ,'rows' => '3', 'cols' => '40'); - echo Form_textarea($data); - ?> - </div> - </div> - <div class="col-md-4"> - <label>Delivery Address</label> - <div class="form-group"> - <?php - $data = array('name' => 'DeliveryAddr','value' => set_value('DeliveryAddr',$CompanyAddress),'id'=>'DeliveryAddr', 'class' => 'form-control' ,'required' => 'true' ,'rows' => '3', 'cols' => '40'); - echo Form_textarea($data); - ?> - </div> - </div> - <div class="col-md-4" id="Deliverydtdiv" style="padding:0%;"> - <label>Delivery Date</label> - <div class="form-group"> - <?php - $data = array('name' => 'Deliverydt','value' => set_value('Deliverydt',$CurrentDate),'id'=>'Deliverydt', 'class' => 'form-control' ,'required' => 'true','onkeypress'=>'return false;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4" id="Schedulediv" style="display:none;padding:0%;"> - <label >Schedule </label> - <?php - $data = array('name' => 'Scheduleby','value' => set_value('Scheduleby'),'id'=>'Scheduleby', 'class' => 'form-control' ,'required' => 'true' ,'rows' => '3', 'cols' => '40'); - echo Form_textarea($data); - ?> - </div> - - </div> - </div> - - </div> - </div> - <!-- Modal for Packing Calculation --> - <div id="packagingcalmodel" class="modal fade" data-backdrop-limit="1" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" > - <div class="modal-dialog"> - - <!-- Modal content--> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal">&times;</button> - <h4 class="modal-title">Packing Calculation On</h4> - </div> - <div class="modal-body"> - <form> - - <div class="radio"> - <label><input type="radio" name="optPackaging" checked="checked" value='0' id="optPackaging"> Basic Amount</label> - </div> - <div class="radio"> - <label><input type="radio" name="optPackaging" id="optPackaging" value='1' > After Discount Amount</label> - </div> - </form> - </div> - <div class="modal-footer"> - - <a class="btn btn-primary" ID="PackagingOption" onclick="SetPackagingOption();" style="margin-top: -24px;">&nbsp;&nbsp;<span class="bold">Ok</span></a> - <a class="btn btn-primary" data-dismiss="modal" style="margin-top: -24px;" value="Cancel">Cancel</a> - </div> - </div> - - </div> - </div> - - <!-- Modal for Excise Duty Calculation--> - <div class="modal fade" id="ExciseDutyCalModel" role="dialog"> - <div class="modal-dialog"> - - <!-- Modal content--> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal">&times;</button> - <h4 class="modal-title">Excise Duty Calculation On</h4> - </div> - <div class="modal-body"> - <form> - <div class="radio"> - <label><input type="radio" name="optExcise" checked="checked" value="0" id="optExcise">From Basic Amount</label> - </div> - <div class="radio"> - <label><input type="radio" name="optExcise" value="1" id="optExcise">Basic Amount - Discount Amount</label> - </div> - <div class="radio"> - <label><input type="radio" name="optExcise" value="2" id="optExcise">(Basic Amount - Discount Amount ) + Packing Cost</label> - </div> - <div class="radio"> - <label><input type="radio" name="optExcise" value="3" id="optExcise">Basic Amount + Packing Cost</label> - </div> - - </form> - </div> - <div class="modal-footer"> - <a class="btn btn-primary" ID="ExciseOption" onclick="SetExciseCalculation();" style="margin-top: -24px;">&nbsp;&nbsp;<span class="bold">Ok</span></a> - <a class="btn btn-primary" data-dismiss="modal" style="margin-top: -24px;" value="Cancel">Cancel</a> - </div> - </div> - - </div> - </div> - - - <!-- Modal for Vat Calculation --> - <div class="modal fade" id="VatCalModel" role="dialog"> - <div class="modal-dialog"> - - <!-- Modal content--> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal">&times;</button> - <h4 class="modal-title">Vat Calculation On</h4> - </div> - <div class="modal-body"> - <form> - - <div class="radio"> - <label><input type="radio" name="optVat" checked="checked" value="0" id="optVat">Basic Amount</label> - </div> - <div class="radio"> - <label><input type="radio" name="optVat" value="1" id="optVat">Excise Duty</label> - </div> - </form> - </div> - <div class="modal-footer"> - <a class="btn btn-primary" ID="VatOption" onclick="SetVatCalculation();" style="margin-top: -24px;">&nbsp;&nbsp;<span class="bold">Ok</span></a> - <a class="btn btn-primary" data-dismiss="modal" style="margin-top: -24px;" value="Cancel">Cancel</a> - </div> - </div> - - </div> - </div> - <!-- Modal for CST Calculation --> - <div class="modal fade" id="CSTCalModel" role="dialog"> - <div class="modal-dialog"> - - <!-- Modal for CST Calculation--> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal">&times;</button> - <h4 class="modal-title">CST Calculation On</h4> - </div> - <div class="modal-body"> - <form> - - <div class="radio"> - <label><input type="radio" name="optCST" checked="checked" value="0" id="optCST">Basic Amount</label> - </div> - <div class="radio"> - <label><input type="radio" name="optCST" value="1" id="optCST">Excise Duty</label> - </div> - </form> - </div> - <div class="modal-footer"> - <a class="btn btn-primary" ID="CSTOption" onclick="SetCSTCalculation();" style="margin-top: -24px;">&nbsp;&nbsp;<span class="bold">Ok</span></a> - <a class="btn btn-primary" data-dismiss="modal" style="margin-top: -24px;" value="Cancel">Cancel</a> - </div> - </div> - - </div> - </div> - <div class="container-fluid"> - <table> - <div align="right"> - <div align="right"> - <a data-toggle="modal" ><button type="submit" onclick="myFunction();" class="btn btn-primary" id="abcd" >Add Line Item</button> </a> - </div> - - <!-- Model for revenue po --> - <div id="REVENUE" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> - <div class="modal-dialog"> - <!-- Modal content--> - <form> - <div class="modal-content" style="width:1000px;"> - <div class="modal-header" style="background-color: #3c8dbc;color:#fff;"> - <center><h4>Select Revenue Purchase Order Line Item </h4></center> - </div> - <div align="left"> - <div> - <div class="col-md-12" > - <div class="col-md-3"> - <label>Req No</label> - <div > - <?php - $RL = array("0"=>'Select Req No'); - if(!empty($RequistionDetails)) - { - foreach ($RequistionDetails as $SID): - $RL[$SID->ReqNo] = $SID->ReqNo.' '.' - '.' '.$SID->DepartmentName; - endforeach; - } - - echo form_dropdown('ReqNo', $RL,set_value('ReqNo'),'id="ReqNo"' ,'class="form-control"'); - - ?> - </div> - </div> - - <div class="col-md-3"> - <label>Department Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'deptName','value' => set_value('deptName'),'id'=>'deptName', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-3"> - <label>Cost Center Name</label> - <div class="form-group"> - <?php - - $data = array('name' => 'CostCenter','value' => set_value('CostCenter'),'id'=>'CostCenter', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Avl Bud Amt</label> - <div class="form-group"> - <?php - $data = array('name' => 'AvlBudAmt','value' => set_value('AvlBudAmt'),'id'=>'AvlBudAmt', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-2"> - <label>Item Code</label> - <div > - <?php - $options = array("0"=>'Item Code'); - - - echo form_dropdown('MaterialCode', $options,set_value('MaterialCode'),'id="MaterialCode"' ,'class="form-control"'); - - ?> - </div> - </div> - - <div class="col-md-2"> - <label>Item Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'ItemName','value' => set_value('ItemName'),'id'=>'ItemName', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>UOM</label> - <div class="form-group"> - <?php - $data = array('name' => 'UOM','value' => set_value('UOM'),'id'=>'UOM', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Quantity</label> - <div class="form-group"> - <?php - $data = array('name' => 'Quantity','value' => set_value('Quantity'),'id'=>'Quantity', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'change()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Rate</label> - <div class="form-group"> - <?php - $data = array('name' => 'Rate','value' => set_value('Rate'),'id'=>'Rate', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'change()' ); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Basic Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtBasicValue','value' => set_value('txtBasicValue'),'id'=>'txtBasicValue', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - </div><br/> - <div class="col-md-12" style="border : 1px solid"> - <div class="row"> - <div class="col-md-12"> - <div class="col-md-4"> - <label>Discount Type </label> - <div> - <?php - $options = array("0"=>'Select Discount Type'); - //print_r( $options); - - if(!empty($TaxType)) - { - foreach ($TaxType as $SID): - - - $options[$SID->ConfigValue] = $SID->ConfigValue; - - endforeach; - } - - echo form_dropdown('DiscountType', $options,set_value('DiscountType'),'id="DiscountType"' ,'class="form-control"'); - - ?> - </div> - </div> - <div class="col-md-2"> - <label>Discount Rate </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtDiscount','value' => set_value('txtDiscount'),'id'=>'txtDiscount', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);' ,'onchange'=>'calculateDiscount(0);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Discounted Amount </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtAfterDiscount','value' => set_value('txtAfterDiscount'),'id'=>'txtAfterDiscount', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div id="Vat" > - <div class="col-md-2" > - <label>Vat in %</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtVat','value' => set_value('txtVat'),'id'=>'txtVat', 'class' => 'form-control','onchange'=>'calculateVat(0);' ); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2" > - <label>Vat Amount </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtAfterVat','value' => set_value('txtAfterVat'),'id'=>'txtAfterVat', 'class' => 'form-control' ,'readonly' => 'true','onkeypress'=>'return isNumberKey(event);'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div style="display:none;" id="CST"> - <div class="col-md-2" > - <label>CST in %</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtCST','value' => set_value('txtCST'),'id'=>'txtCST', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'calculateCST(0);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2" > - <label>CST Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtAfterCST','value' => set_value('txtAfterCST'),'id'=>'txtAfterCST', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - </div> - </div> - <div class="row"> - <div class="col-md-12" style="text-align:left;"> - <div class="col-md-4"> - <label>Packaging Type </label> - <div> - <?php - $options = array("0"=>'Select Packaging Type'); - //print_r( $options); - - if(!empty($TaxType)) - { - foreach ($TaxType as $SID): - - - $options[$SID->ConfigValue] = $SID->ConfigValue; - - endforeach; - } - - echo form_dropdown('PackagingType', $options,set_value('PackagingType'),'id="PackagingType"' ,'class="form-control "'); - - ?> - </div> - </div> - <div class="col-md-2"> - <label>Packaging Rate </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtPackaging','value' => set_value('txtPackaging'),'id'=>'txtPackaging', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'calculatePackaging(0);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Packaging Amount </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtAfterPackaging','value' => set_value('txtAfterPackaging'),'id'=>'txtAfterPackaging', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>GST in %</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtGST','value' => set_value('txtGST'),'id'=>'txtGST', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>' calculateGST(0);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>GST Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtAfterGST','value' => set_value('txtAfterGST'),'id'=>'txtAfterGST', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - - </div> - </div> - <div class="row"> - <div class="col-md-12 " > - <div class="col-md-2 col-md-offset-4"> - <label>Excise Duty in % </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtExciseDuty','value' => set_value('txtExciseDuty'),'id'=>'txtExciseDuty', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'calculateExcise(0);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label> Excise Duty Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtAfterExciseDuty','value' => set_value('txtAfterExciseDuty'),'id'=>'txtAfterExciseDuty', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Other Taxes in %</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtOtherTax','value' => set_value('txtOtherTax'),'id'=>'txtOtherTax', 'class' => 'form-control','onkeypress'=>'return isNumberKey(event);','onchange'=>'calculateOtherTaxes(0);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Other Taxes Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtAfterOtherTax','value' => set_value('txtAfterOtherTax'),'id'=>'txtAfterOtherTax', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - - </div> - </div> - <div class="row"> - <div class="col-md-12" > - <div class="col-md-4"> - <label>Freight Type </label> - <div> - <?php - $options = array("0"=>'Select Freight Type'); - //print_r( $options); - - if(!empty($FreightType)) - { - foreach ($FreightType as $SID): - - - $options[$SID->ConfigValue] = $SID->ConfigValue; - - endforeach; - } - - echo form_dropdown('drpFreight', $options,set_value('drpFreight'),'id="drpFreight"' ,'class="form-control "'); - - ?> - </div> - </div> - <div class="col-md-2"> - <label>Freight Rate </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtFreight','value' => set_value('txtFreight'),'id'=>'txtFreight', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'calculateFreight(0);'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Freight Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtAfterFreight','value' => set_value('txtAfterFreight'),'id'=>'txtAfterFreight', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <label> Insurance if Any</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtInsurance','value' => set_value('txtInsurance'),'id'=>'txtInsurance', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'calculateTotalValue(0);'); - echo form_input($data); - ?> - </div> - </div> - - - </div> - </div><hr/> - <div class="row"> - <div class="col-md-12" > - - <div class="col-md-4" align="right"> <label>Total Order Amount :</label></div> - <div class="col-md-4 "> - <div class="form-group"> - <?php - $data = array('name' => 'txtTotalOrderValue','value' => set_value('txtTotalOrderValue'),'id'=>'txtTotalOrderValue', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4 "> - - <a class="btn btn-primary font AddRevenue" ID="AddRevenue"><i class="fa fa-plus"></i>&nbsp;&nbsp;<span class="bold">Add Revenue</span></a> - <a class="btn btn-primary" data-dismiss="modal" value="Cancel">Cancel</a> - </div> - </div> - </div> - </div> - <br/><br/> - <!-- footer for revenue po --> - <div class="modal-footer"> - - </div> - </div> - - </div> - </form> - </div> - </div> - - <br/> - <div id="EDITREVENUE" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> - <div class="modal-dialog"> - <!-- Modal content--> - <form> - <div class="modal-content" style="width:1000px;"> - <div class="modal-header" style="background-color: #3c8dbc;color:#fff;"> - <center><h4>Edit Revenue Purchase Order Line Item </h4></center> - </div> - <div align="left"> - <div> - <div class="col-md-12" > - <div class="col-md-3"> - <label>Req No</label> - <div > - <?php - - $data = array('name' => 'EditReqNo','value' => set_value('EditReqNo'),'id'=>'EditReqNo', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - - ?> - </div> - </div> - - <div class="col-md-3"> - <label>Department Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditdeptName','value' => set_value('EditdeptName'),'id'=>'EditdeptName', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-3"> - <label>Cost Center Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditCostCenter','value' => set_value('EditCostCenter'),'id'=>'EditCostCenter', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Avl Bud Amt</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditAvlBudAmt','value' => set_value('EditAvlBudAmt'),'id'=>'EditAvlBudAmt', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-2"> - <label>Item Code</label> - <div > - <?php - $options = array("0"=>'Item Code'); - - - echo form_dropdown('EditMaterialCode', $options,set_value('EditMaterialCode'),'id="EditMaterialCode"' ,'class="form-control"'); - - ?> - </div> - </div> - - <div class="col-md-2"> - <label>Item Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditItemName','value' => set_value('EditItemName'),'id'=>'EditItemName', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>UOM</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditUOM','value' => set_value('EditUOM'),'id'=>'EditUOM', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Quantity</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditQuantity','value' => set_value('EditQuantity'),'id'=>'EditQuantity', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'Editchange()','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Rate</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditRate','value' => set_value('EditRate'),'id'=>'EditRate', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'Editchange()','style'=>'text-align:right;' ); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Basic Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditBasicValue','value' => set_value('txtEditBasicValue'),'id'=>'txtEditBasicValue', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - </div> - </div><br/> - <div class="col-md-12" style="border : 1px solid"> - <div class="row"> - <div class="col-md-12"> - <div class="col-md-4"> - <label>Discount Type </label> - <div> - <?php - $options = array("0"=>'Select Discount Type'); - //print_r( $options); - - if(!empty($TaxType)) - { - foreach ($TaxType as $SID): - - - $options[$SID->ConfigValue] = $SID->ConfigValue; - - endforeach; - } - - echo form_dropdown('EditDiscountType', $options,set_value('EditDiscountType'),'id="EditDiscountType"' ,'class="form-control"'); - - ?> - </div> - </div> - <div class="col-md-2"> - <label>Discount Rate </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditDiscount','value' => set_value('txtEditDiscount'),'id'=>'txtEditDiscount', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);' ,'onchange'=>'calculateDiscount(1);','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Discounted Amount </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditAfterDiscount','value' => set_value('txtEditAfterDiscount'),'id'=>'txtEditAfterDiscount', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div id="Vat" > - <div class="col-md-2" > - <label>Vat in %</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditVat','value' => set_value('txtEditVat'),'id'=>'txtEditVat', 'class' => 'form-control','onchange'=>'calculateVat(1);' ,'style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - </div> - <div class="col-md-2" > - <label>Vat Amount </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditAfterVat','value' => set_value('txtEditAfterVat'),'id'=>'txtEditAfterVat', 'class' => 'form-control' ,'readonly' => 'true','onkeypress'=>'return isNumberKey(event);','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - </div> - </div> - <div style="display:none;" id="CST"> - <div class="col-md-2" > - <label>CST in %</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditCST','value' => set_value('txtEditCST'),'id'=>'txtEditCST', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'calculateCST(1);','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2" > - <label>CST Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditAfterCST','value' => set_value('txtEditAfterCST'),'id'=>'txtEditAfterCST', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - </div> - </div> - </div> - </div> - </div> - <div class="row"> - <div class="col-md-12" style="text-align:left;"> - <div class="col-md-4"> - <label>Packaging Type </label> - <div> - <?php - $options = array("0"=>'Select Packaging Type'); - //print_r( $options); - - if(!empty($TaxType)) - { - foreach ($TaxType as $SID): - - - $options[$SID->ConfigValue] = $SID->ConfigValue; - - endforeach; - } - - echo form_dropdown('EditPackagingType', $options,set_value('EditPackagingType'),'id="EditPackagingType"' ,'class="form-control "'); - - ?> - </div> - </div> - <div class="col-md-2"> - <label>Packaging Rate </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditPackaging','value' => set_value('txtEditPackaging'),'id'=>'txtEditPackaging', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'calculatePackaging(1);','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Packaging Amount </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditAfterPackaging','value' => set_value('txtEditAfterPackaging'),'id'=>'txtEditAfterPackaging', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>GST in %</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditGST','value' => set_value('txtEditGST'),'id'=>'txtEditGST', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>' calculateGST(1);','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>GST Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditAfterGST','value' => set_value('txtEditAfterGST'),'id'=>'txtEditAfterGST', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - - </div> - </div> - <div class="row"> - <div class="col-md-12 " > - <div class="col-md-2 col-md-offset-4"> - <label>Excise Duty in % </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditExciseDuty','value' => set_value('txtEditExciseDuty'),'id'=>'txtEditExciseDuty', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'calculateExcise(1);','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label> Excise Duty Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditAfterExciseDuty','value' => set_value('txtEditAfterExciseDuty'),'id'=>'txtEditAfterExciseDuty', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Other Taxes in %</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditOtherTax','value' => set_value('txtEditOtherTax'),'id'=>'txtEditOtherTax', 'class' => 'form-control','onkeypress'=>'return isNumberKey(event);','onchange'=>'calculateOtherTaxes(1);','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Other Taxes Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditAfterOtherTax','value' => set_value('txtEditAfterOtherTax'),'id'=>'txtEditAfterOtherTax', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - - </div> - - </div> - </div> - <div class="row"> - <div class="col-md-12" > - <div class="col-md-4"> - <label>Freight Type </label> - <div> - <?php - $options = array("0"=>'Select Freight Type'); - //print_r( $options); - - if(!empty($FreightType)) - { - foreach ($FreightType as $SID): - - - $options[$SID->ConfigValue] = $SID->ConfigValue; - - endforeach; - } - - echo form_dropdown('drpEditFreight', $options,set_value('drpEditFreight'),'id="drpEditFreight"' ,'class="form-control "'); - - ?> - </div> - </div> - <div class="col-md-2"> - <label>Freight Rate </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditFreight','value' => set_value('txtEditFreight'),'id'=>'txtEditFreight', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'calculateFreight(1);','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Freight Amount </label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditAfterFreight','value' => set_value('txtEditAfterFreight'),'id'=>'txtEditAfterFreight', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <label> Insurance if Any</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditInsurance','value' => set_value('txtEditInsurance'),'id'=>'txtEditInsurance', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'calculateEditTotalValue(1);','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - - - </div> - </div><hr/> - <div class="row"> - <div class="col-md-12" > - - <div class="col-md-4" align="right"> <label>Total Order Amount :</label></div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditTotalOrderValue','value' => set_value('txtEditTotalOrderValue'),'id'=>'txtEditTotalOrderValue', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <a class="btn btn-primary EditRevenue" ID="EditRevenue"><i class="fa fa-plus"></i>&nbsp;&nbsp;<span class="bold">Edit Revenue</span></a> - <a class="btn btn-primary" data-dismiss="modal" value="Cancel">Cancel</a> - </div> - </div> - </div> - </div> - <br/><br/> - <!-- footer for revenue po --> - <div class="modal-footer"> - - </div> - </div> - - </div> - </form> - </div> - </div> - </br> - <div class="box-body" > - <table id="revenueTax" class="table table-bordered table-hover" style="background-color:#fff;font-size:12px;"> - <thead style="background-color:#ddf"> - <tr> - <th>SNo</th> - <th>Requisition No</th> - <th>Item Name</th> - <th>Quantity</th> - <th>UOM</th> - <th>Rate</th> - <th>Basic Amount</th> - <th>Tax Amount</th> - <th>Total Order Amount</th> - <th>Action</th> - </tr> - </thead> - - <tbody id='RevenueAppend'> - - </tbody> - </table> - </div> - <!-- /.box-body --> - - - - - </div> - - <div class="container"> - <div class="row" style="border:1px solid;"> - <div class="col-md-12"> - <div class="col-md-3"> - <label >Basic Amount :</label> - - <?php - $data = array('name' => 'txtTotBasicAmount','value' => set_value('txtTotBasicAmount'),'id'=>'txtTotBasicAmount', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - - - </div> - <div class="col-md-3"> - <label >Total Discount Amount :</label> - - <?php - $data = array('name' => 'txtTotalDiscount','value' => set_value('txtTotalDiscount'),'id'=>'txtTotalDiscount', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - - </div> - <div class="col-md-3" id="TotVat"> - <label >Total Vat Amount :</label> - - <?php - $data = array('name' => 'txtTotalVat','value' => set_value('txtTotalVat'),'id'=>'txtTotalVat', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - - </div> - <div class="col-md-3" id="TotCST" style="display:none;"> - <label >Total CST Amount :</label> - - <?php - $data = array('name' => 'txtTotCST','value' => set_value('txtTotCST'),'id'=>'txtTotCST', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - - </div> - <div class="col-md-3"> - <label >Total Packaging Amount :</label> - - <?php - $data = array('name' => 'txtTotalPackaing','value' => set_value('txtTotalPackaing'),'id'=>'txtTotalPackaing', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - - </div> - </div> - <div class="col-md-12"> - <div class="col-md-3"> - <label >Total Excise Duty Amount :</label> - - <?php - $data = array('name' => 'txtTotExciseDuty','value' => set_value('txtTotExciseDuty'),'id'=>'txtTotExciseDuty', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - - </div> - <div class="col-md-3"> - <label >Total GST Amount :</label> - - <?php - $data = array('name' => 'txtTotalGST','value' => set_value('txtTotalGST'),'id'=>'txtTotalGST', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - - </div> - <div class="col-md-3"> - <label >Total Insurance Amount :</label> - - <?php - $data = array('name' => 'txtTotalInsurance','value' => set_value('txtTotalInsurance'),'id'=>'txtTotalInsurance', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - - </div> - <div class="col-md-3"> - <label >Total Freight Amount :</label> - - <?php - $data = array('name' => 'txtTotalFreight','value' => set_value('txtTotalFreight'),'id'=>'txtTotalFreight', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - - </div> - </div> - <div class="col-md-12"> - <div class="col-md-3"> - <label >Other Taxes Amount :</label> - <?php - $data = array('name' => 'txtTotalOtherTaxes','value' => set_value('txtTotalOtherTaxes'),'id'=>'txtTotalOtherTaxes', 'class' => 'form-control','readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - <div class="col-md-3">&nbsp;</div> - <div class="col-md-3" align="right"> <br/><label>Total Order Amount :</label></div><br/> - <div class="col-md-3"> - <?php - $data = array('name' => 'txtTotalOrderValueSummary','value' => set_value('txtTotalOrderValueSummary'),'id'=>'txtTotalOrderValueSummary', 'class' => 'form-control' ,'readonly' => 'true','style'=>'text-align:right;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-12"> - <label>Comments for Special Instructions :</label> <?php - $data = array('name' => 'txtSpcialInstruction','value' => set_value('txtSpcialInstruction'),'id'=>'txtSpcialInstruction', 'class' => 'form-control','rows' => '3', 'cols' => '40' ); - echo form_textarea($data); - ?> - </div> - </div> - <div class="row" style="padding: 2% 0%"> - <div class="col-md-3 col-md-offset-9"><br/> - <input type="hidden" name="txtPoRange" id="txtPoRange" /> - <input type="hidden" name="isEdit" id="isEdit" value="0" /> - <input type="hidden" name="txtStatus" id="txtStatus" /> - <input type="hidden" name="txtRowCount" id="txtRowCount" /> - <input type="hidden" name="txtDeletedRow" id="txtDeletedRow" /> - <a class="btn btn-primary Save" ID="Save" onclick="Save(0)" >&nbsp;&nbsp;<span class="bold">Save</span></a> -<a class="btn btn-primary Submit" ID="Submit" onclick="Save(1)" >&nbsp;&nbsp;<span class="bold">Submit</span></a> - <input type="reset" class="btn btn-primary" value="Reset"> - - - - </div><br/> - </div> -</div> -</div> - </div> - -</div> -<script type="text/html" id="RevenueList"> -<tr id="<%=index%>"> -<td align="left"><%=index%></td> - <td align="left"><%=ReqNo%></td> - - <td align="left"><%=MaterialName%></td> - <td align="left"><%=Quantity%></td> - <td align="left"><%=UOM%></td> - <td align="left"><%=Rate%></td> - <td align="left"><%=BasicAmount%></td> - <td align="left"><%=Taxvalue%></td> - <td align="left"><%=TotalValue%></td> - - <td> - <a data-target='#EDITREVENUE' data-id="<%=index%>" data-userid="<%=index%>" data-toggle="modal" href="#EDITREVENUE"><i class="fa fa-pencil" data-toggle="tooltip" title="Click here to view/Edit the <%=ReqNo%> Requisition details"></i>&nbsp;&nbsp;&nbsp;</a> <a href='#' onclick = "DeleteRow(<%=index%>)" class="link" data-id="<%=index%>" data-userid="<%=index%>" id="Del" ><span class="glyphicon glyphicon-trash"></span></a> - - - </td> -</tr> -</script> -<script> -var index = '1'; -var userid = ''; - -$("#REVENUE").on("shown.bs.modal", function(e) { - - $('#isEdit').val(0); -}); -$("#EDITREVENUE").on("shown.bs.modal", function(e) { - - userid = $(e.relatedTarget).data('userid'); - $('#isEdit').val(1); - //alert(userid); - var tr= document.getElementById(userid); - var cellval = tr.cells; - var id= $('#Reqnumber'+userid).val(); - - $('#EditReqNo').val($('#Reqnumber'+userid).val()); - $('#EditdeptName').val($('#departmentName'+userid).val()); - $("#EditCostCenter").val($('#costCode'+userid).val()); - $('#EditAvlBudAmt').val($('#AvilBudget'+userid).val()); - - $('#EditItemName').val($('#materialName'+userid).val()); - $('#EditUOM').val($('#uom'+userid).val()); - $('#EditQuantity').val($('#quantity'+userid).val()); - $('#EditRate').val($('#itemRate'+userid).val()); - $('#txtEditBasicValue').val(cellval[6].innerHTML); - RequistQuantity = $('#quantity'+userid).val(); - $('#txtEditDiscount').val($('#DisVal'+userid).val()); - $('#txtEditAfterDiscount').val($('#AfterDisVal'+userid).val()); - $('#txtEditVat').val($('#VatVal'+userid).val()); - $('#txtEditAfterVat').val($('#AfterVatVal'+userid).val()); - $('#txtEditCST').val($('#CSTVal'+userid).val()); - $('#txtEditAfterCST').val($('#AfterCSTVal'+userid).val()); - - $('#txtEditPackaging').val($('#PackVal'+userid).val()); - $('#txtEditAfterPackaging').val($('#AfterPackVal'+userid).val()); - - $('#txtEditGST').val($('#GSTVal'+userid).val()); - $('#txtEditAfterGST').val($('#AfterGSTVal'+userid).val()); - $('#txtEditExciseDuty').val($('#ExciseVal'+userid).val()); - $('#txtEditAfterExciseDuty').val($('#AfterExciseVal'+userid).val()); - $('#txtEditOtherTax').val($('#OtherTaxVal'+userid).val()); - $('#txtEditAfterOtherTax').val($('#AfterOtherTaxVal'+userid).val()); - $('#txtEditFreight').val($('#FreightVal'+userid).val()); - $('#txtEditAfterFreight').val($('#AfterFreightVal'+userid).val()); - $('#txtEditInsurance').val($('#Insval'+userid).val()); - - $('#txtEditTotalOrderValue').val($('#TotalOrderValue'+userid).val()); - - - - $("#EditMaterialCode").empty(); - var Material = <?php echo json_encode($MaterialList, JSON_PRETTY_PRINT) ?>; - // For Binding Material list center for the selected Requistion Number - $("#EditMaterialCode").append( $('<option></option>').val($('#materialCode'+userid).val()).html($('#materialCode'+userid).val() + "-" + $('#materialName'+userid).val() ) ); - - var isAdded = "0"; - for(i=0;i<Material.length;i++) - { - $.each(Material[i], function(idx, obj) { - - if(obj.ReqNo === id ) - { - - $.each(SelectedMaterialList.Mat, function(idx1, el){ - if (id == el.ReqNo ) - { - - if(el.materialCode == obj.MaterialCode) - { - - isAdded = "1"; - return false; - } - else - { - isAdded = "0"; - } - - } - - - }); - - - if(isAdded == "0") - { - - $("#EditMaterialCode").append( $('<option></option>').val(obj.MaterialCode).html(obj.MaterialCode + "-" + obj.MaterialName)); - } - - } - - - }); - } - - $("#EditDiscountType").val($('#DisType'+userid).val()); - $("#drpEditFreight").val($('#FreightType'+userid).val()); - $("#EditPackagingType").val($('#PackType'+userid).val()) - - $("input:radio[name='optPackaging'][value='"+$('#PackOption'+userid).val()+"']").prop('checked', 'checked'); - $("input:radio[name='optExcise'][value='"+$('#ExciseOption'+userid).val()+"']").prop('checked', 'checked'); - $("input:radio[name='optVat'][value='"+$('#VatOption'+userid).val()+"']").prop('checked', 'checked'); - $("input:radio[name='optCST'][value='"+$('#CSTOption'+userid).val()+"']").prop('checked', 'checked'); - - -}); -$('.AddRevenue').click(function(){ - - if(validateRevenueTax() && validateExceedLimit() && ExceedQuantityCheck()) - { - var temp = index; - var Reqnumber = $('#ReqNo').val(); - var departmentName = $('#deptName').val(); - var AvilBudget = $('#AvlBudAmt').val(); - var costCode = $('#CostCenter').val(); - var materialCode =$('#MaterialCode').val(); - var materialName = $("#ItemName").val(); - var uom = $("#UOM").val(); - var quantity = $("#Quantity").val(); - var itemRate = $("#Rate").val(); - - var DisType = $("#DiscountType").val(); - var DisVal = $("#txtDiscount").val(); - var AfterDisVal = $("#txtAfterDiscount").val(); - - var PackOption = PackagingCalculation ; - var PackType = $("#PackagingType").val(); - var PackVal = $("#txtPackaging").val(); - var AfterPackVal = $("#txtAfterPackaging").val(); - - var ExciseOption = ExciseCalculation ; - var ExciseVal = $("#txtExciseDuty").val(); - var AfterExciseVal = $("#txtAfterExciseDuty").val(); - - var VatOption = VatCalculation ; - var VatVal = $("#txtVat").val(); - var AfterVatVal = $("#txtAfterVat").val(); - - var CSTOption = CSTCalculation ; - var CSTVal = $("#txtCST").val(); - var AfterCSTVal = $("#txtAfterCST").val(); - - var GSTVal = $("#txtGST").val(); - var AfterGSTVal = $("#txtAfterGST").val(); - - var OtherTaxVal = $("#txtOtherTax").val(); - var AfterOtherTaxVal = $("#txtAfterOtherTax").val(); - - var FreightType = $("#drpFreight").val(); - var FreightVal = $("#txtFreight").val(); - var AfterFreightVal = $("#txtAfterFreight").val(); - - var basicval = $("#txtBasicValue").val(); - var Insval = $("#txtInsurance").val(); - var TotalOrderValue = $("#txtTotalOrderValue").val(); - - var TotalTaxValue = calculateTaxValue(); - - // $('#ReqNo').val(Reqnumber).remove(); - // $('#ReqNo option[value='+Reqnumber+']').remove(); - - $('#MaterialCode option[value='+materialCode+']').remove(); - - SelectedMaterialCode[CollIndex] = materialCode; - CollIndex = CollIndex + 1; - - SelectedMaterialList.Mat.push({ - "materialCode" : materialCode, - "ReqNo" : Reqnumber, - - }); - - populateValueMainFormForRevenue(); - - - - index = parseInt(index)+1; - - var template = jQuery("#RevenueList").html(); - - - $('#RevenueAppend').append(_.template(template,{index:temp,ReqNo:Reqnumber,MaterialName:materialName,Quantity:quantity,UOM:uom,Rate:itemRate,BasicAmount:basicval,Taxvalue:TotalTaxValue,TotalValue:TotalOrderValue})); - - clearRevenueModalFields(); - var theForm = $(".CreatePO"); - - addHidden(theForm,"Reqnumber"+temp,Reqnumber ); - addHidden(theForm,"departmentName"+temp,departmentName ); - addHidden(theForm,"AvilBudget"+temp,AvilBudget ); - addHidden(theForm,"costCode"+temp,costCode ); - addHidden(theForm,"materialCode"+temp,materialCode ); - addHidden(theForm,"materialName"+temp,materialName ); - addHidden(theForm,"uom"+temp,uom); - addHidden(theForm,"quantity"+temp,quantity); - addHidden(theForm,"itemRate"+temp,itemRate); - addHidden(theForm,"DisType"+temp,DisType); - addHidden(theForm,"DisVal"+temp,DisVal); - addHidden(theForm,"AfterDisVal"+temp,AfterDisVal); - addHidden(theForm,"PackOption"+temp,PackOption); - addHidden(theForm,"PackType"+temp,PackType); - addHidden(theForm,"PackVal"+temp,PackVal); - addHidden(theForm,"AfterPackVal"+temp,AfterPackVal); - addHidden(theForm,"ExciseOption"+temp,ExciseOption); - addHidden(theForm,"ExciseVal"+temp,ExciseVal); - addHidden(theForm,"AfterExciseVal"+temp,AfterExciseVal); - addHidden(theForm,"VatOption"+temp,VatOption); - addHidden(theForm,"VatVal"+temp,VatVal); - addHidden(theForm,"AfterVatVal"+temp,AfterVatVal); - addHidden(theForm,"CSTOption"+temp,CSTOption); - addHidden(theForm,"CSTVal"+temp,CSTVal); - addHidden(theForm,"AfterCSTVal"+temp,AfterCSTVal); - addHidden(theForm,"GSTVal"+temp,GSTVal); - addHidden(theForm,"AfterGSTVal"+temp,AfterGSTVal); - addHidden(theForm,"OtherTaxVal"+temp,OtherTaxVal); - addHidden(theForm,"AfterOtherTaxVal"+temp,AfterOtherTaxVal); - addHidden(theForm,"FreightType"+temp,FreightType); - addHidden(theForm,"FreightVal"+temp,FreightVal); - addHidden(theForm,"AfterFreightVal"+temp,AfterFreightVal); - addHidden(theForm,"basicval"+temp,basicval); - addHidden(theForm,"Insval"+temp,Insval); - addHidden(theForm,"TotalOrderValue"+temp,TotalOrderValue); - - $('#txtRowCount').val(temp); - // $('#REVENUE').modal('hide'); - clearRevenueModalFields(); - } - - }); - $('.EditRevenue').click(function(){ - - if(validateEditRevenueTax() && validateEditExceedLimit() && ExceedEditQuantityCheck()) - { - //alert('inside Add'); - var CostCode = $("#EditCostCenter").val(); - var AvilBudget = $('#EditAvlBudAmt').val(); - var editMaterialCode = $("#EditMaterialCode").val(); - var editDescription = $("#EditItemName").val(); - var editUOM = $('#EditUOM').val(); - var editQuantity = $('#EditQuantity').val(); - - var itemRate = $("#EditRate").val(); - - - var DisType = $("#EditDiscountType").val(); - var DisVal = $("#txtEditDiscount").val(); - var AfterDisVal = $("#txtEditAfterDiscount").val(); - - var PackOption = PackagingCalculation ; - var PackType = $("#EditPackagingType").val(); - var PackVal = $("#txtEditPackaging").val(); - var AfterPackVal = $("#txtEditAfterPackaging").val(); - - var ExciseOption = ExciseCalculation ; - var ExciseVal = $("#txtEditExciseDuty").val(); - var AfterExciseVal = $("#txtEditAfterExciseDuty").val(); - - var VatOption = VatCalculation ; - var VatVal = $("#txtEditVat").val(); - var AfterVatVal = $("#txtEditAfterVat").val(); - - var CSTOption = CSTCalculation ; - var CSTVal = $("#txtCST").val(); - var AfterCSTVal = $("#txtEditAfterCST").val(); - - var GSTVal = $("#txtEditGST").val(); - var AfterGSTVal = $("#txtEditAfterGST").val(); - - var OtherTaxVal = $("#txtEditOtherTax").val(); - var AfterOtherTaxVal = $("#txtEditAfterOtherTax").val(); - - var FreightType = $("#drpEditFreight").val(); - var FreightVal = $("#txtEditFreight").val(); - var AfterFreightVal = $("#txtEditAfterFreight").val(); - - var basicval = $("#txtEditBasicValue").val(); - var Insval = $("#txtEditInsurance").val(); - var TotalOrderValue = $("#txtEditTotalOrderValue").val(); - - var TotalTaxValue = calculateEditTaxValue(); - - - var tr= document.getElementById(userid); - var cellval = tr.cells; - - cellval[2].innerHTML = editDescription; - cellval[3].innerHTML = editQuantity; - cellval[4].innerHTML =editUOM; - cellval[5].innerHTML =itemRate; - cellval[6].innerHTML =basicval; - cellval[7].innerHTML =TotalTaxValue; - cellval[8].innerHTML =TotalOrderValue; - - - $('#materialCode'+userid).val(editMaterialCode); - $('#materialName'+userid).val(editDescription); - $('#uom'+userid).val(editUOM); - $('#quantity'+userid).val(editQuantity); - $('#itemRate'+userid).val(itemRate); - $('#DisType'+userid).val(DisType); - $('#DisVal'+userid).val(DisVal); - $('#AfterDisVal'+userid).val(AfterDisVal); - $('#PackOption'+userid).val(PackOption); - $('#PackType'+userid).val(PackType); - $('#PackVal'+userid).val(PackVal); - $('#AfterPackVal'+userid).val(AfterPackVal); - $('#ExciseOption'+userid).val(ExciseOption); - $('#ExciseVal'+userid).val(ExciseVal); - $('#AfterExciseVal'+userid).val(AfterExciseVal); - $('#VatOption'+userid).val(VatOption); - $('#VatVal'+userid).val(VatVal); - $('#AfterVatVal'+userid).val(AfterVatVal); - $('#CSTOption'+userid).val(CSTOption); - $('#CSTVal'+userid).val(CSTVal); - $('#AfterCSTVal'+userid).val(AfterCSTVal); - $('#GSTVal'+userid).val(GSTVal); - $('#AfterGSTVal'+userid).val(AfterGSTVal); - $('#OtherTaxVal'+userid).val(OtherTaxVal); - $('#AfterOtherTaxVal'+userid).val(AfterOtherTaxVal); - $('#FreightType'+userid).val(FreightType); - $('#FreightVal'+userid).val(FreightVal); - $('#AfterFreightVal'+userid).val(AfterFreightVal); - $('#basicval'+userid).val(basicval); - $('#Insval'+userid).val(Insval); - $('#TotalOrderValue'+userid).val(TotalOrderValue); - populateValueMainFormForEditRevenueTax(); - } - - }); - function addHidden(theForm, key, value) { - // Create a hidden input element, and append it to the form: - var input = document.createElement('input'); - input.type = 'hidden'; - input.name = key;'name-as-seen-at-the-server'; - input.id = key;'name-as-seen-at-the-server'; - input.value = value; - theForm.append(input); -} -function populateValueMainFormForRevenue() -{ - var Packaging = $('#txtAfterPackaging').val() == '' ? '0.00' : $('#txtAfterPackaging').val(); - var ExciseDuty = $('#txtAfterExciseDuty').val() == '' ? '0.00' : $('#txtAfterExciseDuty').val(); - var Vat = $('#txtAfterVat').val() == '' ? '0.00' : $('#txtAfterVat').val(); - var CST = $('#txtAfterCST').val() == '' ? '0.00' : $('#txtAfterCST').val(); - var GST = $('#txtAfterGST').val() == '' ? '0.00' : $('#txtAfterGST').val(); - var OtherTax = $('#txtAfterOtherTax').val() == '' ? '0.00' : $('#txtAfterOtherTax').val(); - var Freight = $('#txtAfterFreight').val() == '' ? '0.00' : $('#txtAfterFreight').val(); - var Insurance = $('#txtInsurance').val() == '' ? '0.00' : $('#txtInsurance').val(); - var Discount = $('#txtAfterDiscount').val() == '' ? '0.00' : $('#txtAfterDiscount').val(); - var BasicVal = $('#txtBasicValue').val() == '' ? '0.00' : $('#txtBasicValue').val(); - var TotalVal = $('#txtTotalOrderValue').val() == '' ? '0.00' : $('#txtTotalOrderValue').val(); - - var TotalOrderValueSummary = $('#txtTotalOrderValueSummary').val() == '' ? '0.00' : $('#txtTotalOrderValueSummary').val(); - - var totBasicAmt = $('#txtTotBasicAmount').val() == '' ? '0.00' : $('#txtTotBasicAmount').val(); - var totDiscountAmt = $('#txtTotalDiscount').val() == '' ? '0.00' : $('#txtTotalDiscount').val(); - var totPackagingAmt = $('#txtTotalPackaing').val() == '' ? '0.00' : $('#txtTotalPackaing').val(); - var totExciseAmt = $('#txtTotExciseDuty').val() == '' ? '0.00' : $('#txtTotExciseDuty').val(); - var totVATAmt = $('#txtTotalVat').val() == '' ? '0.00' : $('#txtTotalVat').val(); - var totCSTAmt = $('#txtTotCST').val() == '' ? '0.00' : $('#txtTotCST').val(); - var totGSTAmt = $('#txtTotalGST').val() == '' ? '0.00' : $('#txtTotalGST').val(); - var totOtherTaxAmt = $('#txtTotalOtherTaxes').val() == '' ? '0.00' : $('#txtTotalOtherTaxes').val(); - var totFreightAmt = $('#txtTotalFreight').val() == '' ? '0.00' : $('#txtTotalFreight').val(); - var totInsuranceAmt = $('#txtTotalInsurance').val() == '' ? '0.00' : $('#txtTotalInsurance').val(); - var totOrderSummaryAmt = $('#txtTotalOrderValueSummary').val() == '' ? '0.00' : $('#txtTotalOrderValueSummary').val(); - - $('#txtTotBasicAmount').val(parseFloat(totBasicAmt) + parseFloat(BasicVal) ); - $('#txtTotalDiscount').val(parseFloat(totDiscountAmt) + parseFloat(Discount) ); - $('#txtTotalPackaing').val(parseFloat(totPackagingAmt) + parseFloat(Packaging) ); - $('#txtTotExciseDuty').val(parseFloat(totExciseAmt) + parseFloat(ExciseDuty) ); - $('#txtTotalVat').val(parseFloat(totVATAmt) + parseFloat(Vat) ); - $('#txtTotCST').val(parseFloat(totCSTAmt) + parseFloat(CST) ); - $('#txtTotalGST').val(parseFloat(totGSTAmt) + parseFloat(GST) ); - $('#txtTotalOtherTaxes').val(parseFloat(totOtherTaxAmt) + parseFloat(OtherTax) ); - $('#txtTotalFreight').val(parseFloat(totFreightAmt) + parseFloat(Freight) ); - $('#txtTotalInsurance').val(parseFloat(totInsuranceAmt) + parseFloat(Insurance) ); - $('#txtTotalOrderValueSummary').val(parseFloat(totOrderSummaryAmt) + parseFloat(TotalVal) ); - -} -function populateValueMainFormForEditRevenueTax() -{ - - var rows = document.getElementById('revenueTax').rows.length; - //alert(rows); - var totBasicAmt = 0; - var totDiscountAmt = 0; - var totPackagingAmt = 0; - var totExciseAmt = 0; - var totVATAmt = 0; - var totCSTAmt = 0; - var totGSTAmt = 0; - var totOtherTaxAmt = 0; - var totFreightAmt = 0; - var totInsuranceAmt = 0; - var totOrderSummaryAmt = 0; - var i = 0; - do { - i += 1; - - - var tr= document.getElementById(i); - //alert(tr); - if(tr != null) - { - cells = tr.getElementsByTagName('td'); - - - var rowid = cells[0].innerHTML; - // alert(rowid); - var Packaging = $('#AfterPackVal'+rowid).val() == '' ? '0.00' : $('#AfterPackVal'+rowid).val(); - var ExciseDuty = $('#AfterExciseVal'+rowid).val() == '' ? '0.00' : $('#AfterExciseVal'+rowid).val(); - var Vat = $('#AfterVatVal'+rowid).val() == '' ? '0.00' : $('#AfterVatVal'+rowid).val(); - var CST =$('#AfterCSTVal'+rowid).val() == '' ? '0.00' : $('#AfterCSTVal'+rowid).val(); - var GST = $('#AfterGSTVal'+rowid).val() == '' ? '0.00' : $('#AfterGSTVal'+rowid).val(); - var OtherTax = $('#AfterOtherTaxVal'+rowid).val() == '' ? '0.00' : $('#AfterOtherTaxVal'+rowid).val(); - var Freight = $('#AfterFreightVal'+rowid).val() == '' ? '0.00' : $('#AfterFreightVal'+rowid).val(); - var Insurance = $('#Insval'+rowid).val() == '' ? '0.00' : $('#Insval'+rowid).val(); - var Discount =$('#AfterDisVal'+rowid).val() == '' ? '0.00' : $('#AfterDisVal'+rowid).val(); - var BasicVal = $('#basicval'+rowid).val() == '' ? '0.00' : $('#basicval'+rowid).val(); - var TotalVal =$('#TotalOrderValue'+rowid).val() == '' ? '0.00' : $('#TotalOrderValue'+rowid).val(); - //alert(TotalVal); - - - totBasicAmt = parseFloat(totBasicAmt ) + parseFloat(BasicVal); - totDiscountAmt = parseFloat(totDiscountAmt ) + parseFloat(Discount); - totPackagingAmt = parseFloat(totPackagingAmt) + parseFloat(Packaging); - totExciseAmt = parseFloat(totExciseAmt) + parseFloat(ExciseDuty); - totVATAmt = parseFloat(totVATAmt ) + parseFloat(Vat); - totCSTAmt = parseFloat(totCSTAmt ) + parseFloat(CST); - totGSTAmt = parseFloat(totGSTAmt ) + parseFloat(GST); - totOtherTaxAmt = parseFloat(totOtherTaxAmt ) + parseFloat(OtherTax); - totFreightAmt = parseFloat(totFreightAmt ) + parseFloat(Freight); - totInsuranceAmt = parseFloat(totInsuranceAmt ) + parseFloat(Insurance); - totOrderSummaryAmt = parseFloat(totOrderSummaryAmt ) + parseFloat(TotalVal); - } - - } while (i < rows); - - // alert(totOrderSummaryAmt); - $('#txtTotBasicAmount').val(parseFloat(totBasicAmt).toFixed(2) ); - $('#txtTotalDiscount').val(parseFloat(totDiscountAmt).toFixed(2) ); - $('#txtTotalPackaing').val(parseFloat(totPackagingAmt).toFixed(2) ); - $('#txtTotExciseDuty').val(parseFloat(totExciseAmt).toFixed(2) ); - $('#txtTotalVat').val(parseFloat(totVATAmt).toFixed(2) ); - $('#txtTotCST').val(parseFloat(totCSTAmt).toFixed(2) ); - $('#txtTotalGST').val(parseFloat(totGSTAmt).toFixed(2) ); - $('#txtTotalOtherTaxes').val(parseFloat(totOtherTaxAmt).toFixed(2) ); - $('#txtTotalFreight').val(parseFloat(totFreightAmt).toFixed(2) ); - $('#txtTotalInsurance').val(parseFloat(totInsuranceAmt).toFixed(2) ); - $('#txtTotalOrderValueSummary').val(parseFloat(totOrderSummaryAmt).toFixed(2) ); - -} -function clearRevenueModalFields() -{ - // To reset the Modal controls - $('#ReqNo').val('0'); - $('#deptName').val(''); - $('#CostCenter').val("0"); - $('#AvlBudAmt').val(''); - $('#MaterialCode').val("0") ; - $("#ItemName").val(''); - $('#UOM').val(''); - $('#Quantity').val(''); - $("#Rate").val(''); - - $("#DiscountType").val('0'); - $("#txtDiscount").val(''); - $("#txtAfterDiscount").val(''); - - - $("#PackagingType").val('0'); - $("#txtPackaging").val(''); - $("#txtAfterPackaging").val(''); - - $("input:radio[name='optPackaging'][value='0']").prop('checked', 'checked'); - $("input:radio[name='optExcise'][value='0']").prop('checked', 'checked'); - $("input:radio[name='optVat'][value='0']").prop('checked', 'checked'); - $("input:radio[name='optCST'][value='0']").prop('checked', 'checked'); - - ExciseOption = ''; - PackOption = ''; - CSTOption = ''; - VatOption = ''; - - $("#txtExciseDuty").val(''); - $("#txtAfterExciseDuty").val(''); - - - $("#txtVat").val(''); - $("#txtAfterVat").val(''); - - - $("#txtCST").val(''); - $("#txtAfterCST").val(''); - - $("#txtGST").val(''); - $("#txtAfterGST").val(''); - - $("#txtOtherTax").val(''); - $("#txtAfterOtherTax").val(''); - - $("#drpFreight").val('0'); - $("#txtFreight").val(''); - $("#txtAfterFreight").val(''); - - $("#txtBasicValue").val(''); - $("#txtInsurance").val(''); - $("#txtTotalOrderValue").val(''); -} -function validateEditRevenueTax() - { - if($('#EditCostCenter').val() == "0") - { - alert('Please select the Cost center'); - $('#EditCostCenter').focus(); - return false; - } - else if($('#EditMaterialCode').val() == "0") - { - alert('Please select the Material Code'); - $('#EditMaterialCode').focus(); - return false; - } - else if($('#EditQuantity').val() == '') - { - alert('Please Enter the Quantity value'); - $('#EditQuantity').focus(); - return false; - } - else if($('#EditRate').val() == '') - { - alert('Please Enter the Rate of the Item'); - $('#EditRate').focus(); - return false; - } - else - { - return true; - } - } -</script> -<script> -function DeleteRow(rowid) -{ - var DelRows = $('#txtDeletedRow').val(); - //alertMaterialListrowid); - - var answer = confirm(" Do you want to delete the Item from the List?") - if (answer) - { - var td = document.getElementById(rowid); - td.parentNode.removeChild(td); - - var removeItem = $('#materialCode'+rowid).val(); - - - - SelectedMaterialCode.splice( SelectedMaterialCode.indexOf('removeItem'), 1 ); - $.each(SelectedMaterialList.Mat, function(i, el){ - - if (this.materialCode == removeItem){//Type = ''; - SelectedMaterialList.Mat.splice(i, 1); - } - }); - // alert(SelectedMaterialCode); - if(DelRows != '') - { - DelRows = DelRows + ":" + rowid; - } - else - { - DelRows= "0" + ":" + rowid; - } - $('#txtDeletedRow').val(DelRows); - populateValueMainFormForDeleteItem(rowid); - } - -} - -function populateValueMainFormForDeleteItem(rowid) -{ - - - // alert(rows); - var totBasicAmt = $('#txtTotBasicAmount').val(); - var totDiscountAmt = $('#txtTotalDiscount').val();; - var totPackagingAmt = $('#txtTotalPackaing').val();; - var totExciseAmt = $('#txtTotExciseDuty').val();; - var totVATAmt = $('#txtTotalVat').val();; - var totCSTAmt = $('#txtTotCST').val();; - var totGSTAmt = $('#txtTotalGST').val();; - var totOtherTaxAmt = $('#txtTotalOtherTaxes').val();; - var totFreightAmt = $('#txtTotalFreight').val();; - var totInsuranceAmt = $('#txtTotalInsurance').val();; - var totOrderSummaryAmt = $('#txtTotalOrderValueSummary').val(); - - - var Packaging = $('#AfterPackVal'+rowid).val() == '' ? '0.00' : $('#AfterPackVal'+rowid).val(); - var ExciseDuty = $('#AfterExciseVal'+rowid).val() == '' ? '0.00' : $('#AfterExciseVal'+rowid).val(); - var Vat = $('#AfterVatVal'+rowid).val() == '' ? '0.00' : $('#AfterVatVal'+rowid).val(); - var CST =$('#AfterCSTVal'+rowid).val() == '' ? '0.00' : $('#AfterCSTVal'+rowid).val(); - var GST = $('#AfterGSTVal'+rowid).val() == '' ? '0.00' : $('#AfterGSTVal'+rowid).val(); - var OtherTax = $('#AfterOtherTaxVal'+rowid).val() == '' ? '0.00' : $('#AfterOtherTaxVal'+rowid).val(); - var Freight = $('#AfterFreightVal'+rowid).val() == '' ? '0.00' : $('#AfterFreightVal'+rowid).val(); - var Insurance = $('#Insval'+rowid).val() == '' ? '0.00' : $('#Insval'+rowid).val(); - var Discount =$('#AfterDisVal'+rowid).val() == '' ? '0.00' : $('#AfterDisVal'+rowid).val(); - var BasicVal = $('#basicval'+rowid).val() == '' ? '0.00' : $('#basicval'+rowid).val(); - var TotalVal =$('#TotalOrderValue'+rowid).val() == '' ? '0.00' : $('#TotalOrderValue'+rowid).val(); - //alert(TotalVal); - - - totBasicAmt = parseFloat(totBasicAmt ) - parseFloat(BasicVal); - totDiscountAmt = parseFloat(totDiscountAmt ) - parseFloat(Discount); - totPackagingAmt = parseFloat(totPackagingAmt) - parseFloat(Packaging); - totExciseAmt = parseFloat(totExciseAmt) - parseFloat(ExciseDuty); - totVATAmt = parseFloat(totVATAmt ) - parseFloat(Vat); - totCSTAmt = parseFloat(totCSTAmt ) - parseFloat(CST); - totGSTAmt = parseFloat(totGSTAmt ) - parseFloat(GST); - totOtherTaxAmt = parseFloat(totOtherTaxAmt ) - parseFloat(OtherTax); - totFreightAmt = parseFloat(totFreightAmt ) - parseFloat(Freight); - totInsuranceAmt = parseFloat(totInsuranceAmt ) - parseFloat(Insurance); - totOrderSummaryAmt = parseFloat(totOrderSummaryAmt ) - parseFloat(TotalVal); - - - - - $('#txtTotBasicAmount').val(parseFloat(totBasicAmt).toFixed(2) ); - $('#txtTotalDiscount').val(parseFloat(totDiscountAmt).toFixed(2) ); - $('#txtTotalPackaing').val(parseFloat(totPackagingAmt).toFixed(2) ); - $('#txtTotExciseDuty').val(parseFloat(totExciseAmt).toFixed(2) ); - $('#txtTotalVat').val(parseFloat(totVATAmt).toFixed(2) ); - $('#txtTotCST').val(parseFloat(totCSTAmt).toFixed(2) ); - $('#txtTotalGST').val(parseFloat(totGSTAmt).toFixed(2) ); - $('#txtTotalOtherTaxes').val(parseFloat(totOtherTaxAmt).toFixed(2) ); - $('#txtTotalFreight').val(parseFloat(totFreightAmt).toFixed(2) ); - $('#txtTotalInsurance').val(parseFloat(totInsuranceAmt).toFixed(2) ); - $('#txtTotalOrderValueSummary').val(parseFloat(totOrderSummaryAmt).toFixed(2) ); - -} -function Save(status) -{ -if(status == '0') -{ - stat = '<?php echo PO_DRAFT; ?>'; -} -else -{ - stat = '<?php echo PO_CREATED; ?>'; -} - -$('#txtStatus').val(stat); - - if(validate()) - { - if(document.getElementById('revenueTax').rows.length < 3) - { - alert('Please Select Line item to Create PO'); - $('#Deliverydt').focus(); - return false; - } - else - { - $('#content').loader('show'); - $.ajax({ - data:$('.CreatePO').serialize(), - type:"POST", - url:"<?php echo base_url() ?>purchaseorder/addNewPurchaseOrder", - success:function(data) { - if(data) - { - $('#content').loader('hide'); - alert(data); - $('#txtRowCount').val(''); - $('#txtDeletedRow').val(''); - //$('#SpcialInstruction').val(''); - //$('#txtDeliveryAddress').val(''); - window.location = "purchaseorderListing"; - - } - else - { - alert("Error"); - } - - } - - }); - } - -} -} -<!-- script for table , It works uned the datatable plugin--> - $(function () { - //$("#revenueTax").DataTable(); - $('#revenueTax').DataTable({ - "paging": false, - "lengthChange": true, - "searching": false, - "ordering": false, - // "info": true, - "autoWidth": true - - }); - }); -// this function is used to clear data changing schedule option -$('#Scheduleby').change(function(){ - - $("#Deliverydt").datepicker({ - minDate : 'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true,yearRange: '0:+10' - }); - - }); - $('#Deliverydt').change(function(){ - - - $('#Scheduleby').val(''); - - }); -</script> diff --git a/application/views/rawmaterialListing.php b/application/views/rawmaterialListing.php deleted file mode 100644 index bb677e33..00000000 --- a/application/views/rawmaterialListing.php +++ /dev/null @@ -1,76 +0,0 @@ - <script> - (function(l,q){var e=function(b,c){b.extend(!0,c.defaults,{dom:"<'row'<'col-sm-9'l><'col-sm-3'f>><'row'<'col-sm-12'tr>><'row'<'col-sm-8'i><'col-sm-4'p>>",renderer:"bootstrap"});b.extend(c.ext.classes,{sWrapper:"dataTables_wrapper form-inline dt-bootstrap",sFilterInput:"form-control input-sm",sLengthSelect:"form-control input-sm"});c.ext.renderer.pageButton.bootstrap=function(g,e,r,s,i,m){var t=new c.Api(g),u=g.oClasses,j=g.oLanguage.oPaginate,d,f,n=0,p=function(c,e){var k,h,o,a,l=function(a){a.preventDefault(); -b(a.currentTarget).hasClass("disabled")||t.page(a.data.action).draw(!1)};k=0;for(h=e.length;k<h;k++)if(a=e[k],b.isArray(a))p(c,a);else{f=d="";switch(a){case "ellipsis":d="&hellip;";f="disabled";break;case "first":d=j.sFirst;f=a+(0<i?"":" disabled");break;case "previous":d=j.sPrevious;f=a+(0<i?"":" disabled");break;case "next":d=j.sNext;f=a+(i<m-1?"":" disabled");break;case "last":d=j.sLast;f=a+(i<m-1?"":" disabled");break;default:d=a+1,f=i===a?"active":""}d&&(o=b("<li>",{"class":u.sPageButton+" "+ -f,id:0===r&&"string"===typeof a?g.sTableId+"_"+a:null}).append(b("<a>",{href:"#","aria-controls":g.sTableId,"data-dt-idx":n,tabindex:g.iTabIndex}).html(d)).appendTo(c),g.oApi._fnBindAction(o,{action:a},l),n++)}},h;try{h=b(q.activeElement).data("dt-idx")}catch(l){}p(b(e).empty().html('<ul class="pagination"/>').children("ul"),s);h&&b(e).find("[data-dt-idx="+h+"]").focus()};c.TableTools&&(b.extend(!0,c.TableTools.classes,{container:"DTTT btn-group",buttons:{normal:"btn btn-default",disabled:"disabled"}, -collection:{container:"DTTT_dropdown dropdown-menu",buttons:{normal:"",disabled:"disabled"}},print:{info:"DTTT_print_info"},select:{row:"active"}}),b.extend(!0,c.TableTools.DEFAULTS.oTags,{collection:{container:"ul",button:"li",liner:"a"}}))};"function"===typeof define&&define.amd?define(["jquery","datatables"],e):"object"===typeof exports?e(require("jquery"),require("datatables")):jQuery&&e(jQuery,jQuery.fn.dataTable)})(window,document); - </script> -<div class="content-wrapper"> - - <section class="content-header"> - <h1> - <center>Siddharth Industries - Material Master Details</CENTER> - </h1> - </section> - <section class="content"> - <div class="row"> - <div class="col-xs-12 text-right"> - <div class="form-group"> - <a class="btn btn-primary" href="<?php echo base_url(); ?>addRawmaterial">Add New Material</a> - <a class="btn btn-primary" href="<?php echo base_url(); ?>rawmaterialdetails/export_material">Export Material Master <i class="fa fa-download"aira-hidden="true"></i></a> - </div> - </div> - </div> - <div class="row"> - <div class="col-xs-12"> - <table id="datatable" class="table table-hover table-bordered" style="background-color:#fff;font-size:12px;" > - <thead> - <tr> - <th>Material Code</th> - <th>Material Description</th> - <th>Type of Material</th> - <th>Unit Of Measurement</th> - - </tr> - </thead> - <tbody> - <?php - if(!empty($userRecords)) - { - foreach($userRecords as $record) - { - ?> - <tr> - - <td><u><a href="<?php echo base_url().'rawmaterialdetails/viewRawmaterial/?RID='.$record->MaterialCode.'&MType='.$record->MaterialType.'&UOM='.$record->UOM ; ?>" data-toggle="tooltip" title="<?php echo $record->MaterialCode; ?> - Click here to view Material details"><?php echo $record->MaterialCode ?> </a></u></td> - <td><?php echo $record->MaterialName ?></td> - <td><?php echo $record->MaterialType ?></td> - <td><?php echo $record->UOM ?></td> - - </tr> - <?php - } - } - ?> - </tbody> - </table> - - </div> - </section> -</div> -<script type="text/javascript" src="<?php echo base_url(); ?>assets/js/common.js" charset="utf-8"></script> - <script type="text/javascript"> - - $(function () { - - $('#datatable').DataTable({ - "paging": true, - "lengthChange": true, - "searching": true, - "ordering": true, - "info": true, - "autoWidth": true - - }); - }); - -</script> diff --git a/application/views/requisitionform.php b/application/views/requisitionform.php deleted file mode 100644 index 94e45eb2..00000000 --- a/application/views/requisitionform.php +++ /dev/null @@ -1,777 +0,0 @@ - -<?php -$EmpID = ""; -$Designation = ""; -$DepartmentName = ""; -$FirstName = ""; - -if(!empty($Emp)) -{ - foreach ($Emp as $Emp) - { - $EmpID = $Emp->EmpID ; - $FirstName = $Emp->FirstName ; - $Designation = $Emp->Designation; - $DepartmentName =$Emp->DepartmentName; - } -} -?> -<style> - .table-bordered>thead>tr>th, .table-bordered>tbody>tr>th, .table-bordered>tfoot>tr>th, .table-bordered>thead>tr>td, .table-bordered>tbody>tr>td, .table-bordered>tfoot>tr>td {border: 1px solid #333;} - </style> -<div class="content-wrapper"> - - - <section class="content"> - - <div> - <center><b><h2>Siddharth Industries - Requisition Form</h2></b></center> - <div class="container-fluid"> - <div id="content"></div> - <?php - $attributes = array('class' => 'form-label-left requistion ','name' => 'requistion','id' => 'requistion'); - - echo form_open($this->config->base_url().'requisitionform/SearchRequistList',$attributes); ?> - <div class="row"> - <div class="col-md-12"> - <div class="col-md-3"> - <label>Request Type</label> - <div> - <?php - $options = array("-1"=>'Select Request Type'); - - //print_r( $options); - - if(!empty($RequestType)) - { - foreach ($RequestType as $RID): - - - $options[$RID->ConfigValue] = $RID->ConfigValue; - - endforeach; - } - - echo form_dropdown('RequestType', $options,set_value('ConfigValue'),'id="RequestType"' ,'class = "form-control select2"','required="true"'); - - ?> - - </div> - </div> - <div class="col-md-3"> - <label>Requested By</label> - <div> - - <?php - $data = array('name' => 'EmpID','value' => set_value('EmpID',$FirstName),'id'=>'EmpID', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - <input type="hidden" name="EmpID" id="EmpID" value=<?php echo $EmpID?> /> - </div> - </div> - <div class="col-md-3"> - <label>Department Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'DeptName','value' => set_value('DeptName',$DepartmentName),'id'=>'DeptName', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-3"> - <label>Designation</label> - <div class="form-group"> - <?php - $data = array('name' => 'Designation','value' => set_value('Designation',$Designation),'id'=>'Designation', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - - <div class="col-md-3"> - <label>Cost Center Name</label> - <div> - <?php - $Costs = array("-1"=>'Select Cost Center Name'); - //print_r( $options); - - if(!empty($CostCenter)) - { - foreach ($CostCenter as $SID): - // echo $SID->ConfigValue; - $Costs[$SID->CostCenterCode] = $SID->CostCenterCode .'-'. $SID->CostCenterName ; - - endforeach; - - } - echo form_dropdown('CostCenter', $Costs,set_value('CostCenter'),'id="CostCenter"' ,'class = "form-control"'); - - ?> - - </div> - </div> - <div class="col-md-3"> - <label>Available Budget Amount</label>&nbsp;<img id="AlertImg" src="<?php echo base_url(); ?>assets/dist/img/red.png" alt="your image" width="25px" style="display:none"/> - <div class="form-group"> - <?php - $data = array('name' => 'AvlBudgetAmount','value' => set_value('AvlBudgetAmount'),'id'=>'AvlBudgetAmount', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - - </div> - - </div> - </div> - - <div class="container-fluid"> - <table class="table table-bordered" style="border:1px solid #333"> - <div align="right" style="padding-right:10px"> -<div align="right"> - <a onclick="return validateBeforeAdd();" class="btn btn-primary">Add Line Item</a> - - <div class="modal fade" id="myModal1" role="dialog"> - <div class="modal-dialog"> - - <!-- Modal content--> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal">&times;</button> - <center><h4>Add Line Item </h4></center> - </div> - <div align="left"> - - <div class="col-md-6"> - <label>Material Code</label> - <div > - <?php - $options = array("0"=>'Material Code'); - //print_r( $options); - - if(!empty($MaterialList)) - { - foreach ($MaterialList as $MID): - - - $options[$MID->MaterialCode] = $MID->MaterialCode.' '.' - '.' '.$MID->MaterialName; - - endforeach; - } - - echo form_dropdown('MaterialCode', $options,set_value('MaterialCode'),'id="MaterialCode"' ,'class="form-control"'); - - ?> - </div> - </div> - - <div class="col-md-6"> - <label>Description</label> - <div class="form-group"> - <?php - $data = array('name' => 'Description','value' => set_value('Description'),'id'=>'Description', 'class' => 'form-control','readonly' => 'true' ); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-6"> - <label>UOM</label> - <div> - <?php - $data = array('name' => 'UOM','value' => set_value('UOM'),'id'=>'UOM', 'class' => 'form-control','readonly' => 'true' ); - echo form_input($data); - ?> - - </div> - </div> - <div class="col-md-6"> - <label>Quantity</label> - <div class="form-group"> - <?php - $data = array('name' => 'Quantity','value' => set_value('Quantity'),'id'=>'Quantity', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event)','maxlength'=>'20'); - echo form_input($data); - ?> - </div> - </div> - - - </div> - - <div class="modal-footer"> - <a class="btn btn-info font addClick" ID="addClick" ><i class="fa fa-plus"></i>&nbsp;&nbsp;<span class="bold">Add</span></a> - <a class="btn btn-info" data-dismiss="modal" value="Cancel">cancel</a> - </div> - </div> - - </div> - </div> - - - </div><br/> <div class="modal fade" id="EditItem" role="dialog"> - <div class="modal-dialog"> - - <!-- Modal content--> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal">&times;</button> - <center><h4>Edit Line Item </h4></center> - </div> - <div align="left"> - - <div class="col-md-6"> - <label>Material Code</label> - <div > - <?php - $data = array('name' => 'EditMaterialCode', 'value' => set_value('EditMaterialCode'),'id'=>'EditMaterialCode', 'class' => 'form-control','readonly'=>'true'); - echo form_input($data); - ?> - </div> - </div> - - <div class="col-md-6"> - <label>Description</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditDescription','value' => set_value('EditDescription'),'id'=>'EditDescription', 'class' => 'form-control','readonly' => 'true' ); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-6"> - <label>UOM</label> - <div> - <?php - $data = array('name' => 'EditUOM','value' => set_value('EditUOM'),'id'=>'EditUOM', 'class' => 'form-control','readonly' => 'true' ); - echo form_input($data); - ?> - - </div> - </div> - <div class="col-md-6"> - <label>Quantity</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditQuantity','value' => set_value('EditQuantity'),'id'=>'EditQuantity', 'class' => 'form-control','onkeypress'=>'return isNumberKey(event)','maxlength'=>'20'); - echo form_input($data); - ?> - </div> - </div> - - - </div> - - <div class="modal-footer"> - <a class="btn btn-info font EditClick" ID="EditClick" ><i class="fa fa-plus"></i>&nbsp;&nbsp;<span class="bold">Edit</span></a> - <a class="btn btn-info" data-dismiss="modal" value="Cancel">Cancel</a> - </div> - </div> - - </div> - </div> - - - </div></br> - - <table id="Items" class="table table-bordered table-hover" style="background-color:#fff;font-size:12px;"> - <thead style="background-color:#ddf"> - <tr> - <th>SNo</th> - <th>Material Code</th> - <th>Material Name</th> - <th>Uom</th> - <th>Quantity</th> - <th>Action</th> - </tr> - </thead> - <tbody id="tempAppend"> - - - </tbody> - - </table> - - <div align="right" style="padding-right:10px"> - <input type="hidden" name="txtRowCount" id="txtRowCount" /> - <input type="hidden" name="txtDeletedRow" id="txtDeletedRow" /> - <a class="btn btn-primary Save" ID="Save" onclick="Save()" >&nbsp;&nbsp;<span class="bold">Save</span></a> - - <input type="submit" class="btn btn-primary" > - <input type="reset" class="btn btn-primary"> - - </div> - <br> - </div> - </div> - - </section> -</div> - -<script> -var isExceed = 0; -function isNumberKey(evt) - { - var charCode = (evt.which) ? evt.which : evt.keyCode; - if (charCode != 46 && charCode > 31 - && (charCode < 48 || charCode > 57)) - return false; - - return true; - } - -$(function() { - - $( ".datePicker" ).datepicker({ dateFormat: 'dd/mm/yy' }); - - //Initialize Select2 Elements - $(".select2").select2(); - -$('#CostCenter').change(function() { - - var id = $('#CostCenter').val(); - $("#AvlBudgetAmount").val(''); - - var ReqType = $('#RequestType').val(); - - if(id != '-1' && ReqType != '-1') - { - - $('#content').loader('show'); - $.ajax({ - data:{id:id}, - type:"POST", - url:"<?php echo base_url() ?>servicepurchaseorder/AvilBudgetAmount?ReqType="+ReqType, - success:function(data) { - if(data) - { - $('#content').loader('hide'); - $("#AvlBudgetAmount").val(data); - if(parseFloat($("#AvlBudgetAmount").val()) <= 0) - { - $('#AlertImg').removeAttr("style"); - isExceed = 1; - } - else - { - $('#AlertImg').attr("style","display:none;"); - isExceed =0; - } - } - else - { - $('#content').loader('hide'); - alert("Error"); - } - } - - }); - - } - else - { - alert('Please select the Requistion Type'); - $('#CostCenter').val("-1"); - return false; - } - -}); - $('#RequestType').change(function() - { - $("#AvlBudgetAmount").val(''); - $('#AlertImg').attr("style","display:none;"); - $('#txtRowCount').val(''); - $('#txtDeletedRow').val(''); - $("#Description").val(''); - $("#UOM").val(''); - $('#CostCenter').val("-1"); - - removeHiddenRows($('#Items').find('tr').length); - $('#tempAppend').empty(); - var id = $('#RequestType').val(); - - if(id != '-1') - { - $('#content').loader('show'); - - $.ajax({ - data:{id:id}, - dataType: 'json', - type:"POST", - url:"<?php echo base_url();?>requisitionform/getMaterialCode", - success:function(json) { - $('#content').loader('hide'); - - $("#MaterialCode").empty(); - $("#MaterialCode").append(json.Material); - // $("#Description").val(json.MaterialName); - //$("#UOM").val(json.UOM); - } - - }); - //$('#content').loader('hide'); - } - else - { - alert('Please select the RequestType'); - return false; - } - -}); -$('#MaterialCode').change(function() { - - var id = $('#MaterialCode').val(); - -$("#Description").val(''); -$("#UOM").val(''); - if(id != '-1') - { - $('#content').loader('show'); - - $.ajax({ - data:{id:id}, - dataType: 'json', - type:"POST", - url:"<?php echo base_url();?>requisitionform/getMaterialDetails", - success:function(json) { - $('#content').loader('hide'); - //alert(json.MatDetail); - $("#Description").val(json.MatDetail[0]['MaterialName']); - $("#UOM").val(json.MatDetail[0]['UOM']); - } - - }); - //$('#content').loader('hide'); - } - else - { - alert('Please select the RequestType'); - return false; - } - -}); - - -}); - </script> - <script type="text/html" id="tempList"> -<tr id="<%=index%>"> -<td align="left"><%=index%></td> - <td align="left"><%=MaterialCode%></td> - - <td align="left"><%=MaterialName%></td> - - <td align="left"><%=UOM%></td> - - <td align="left"><%=Quantity%></td> - <td> - <a data-target='#EditItem' data-id="<%=index%>" data-userid="<%=index%>" data-toggle="modal" href="#EditItem"><i class="fa fa-pencil" data-toggle="tooltip" title="Click here to view/Edit the <%=MaterialCode%> Material details"></i>&nbsp;&nbsp;&nbsp;</a> <a href='#' onclick = "Deleterow(<%=index%>)" class="link" data-id="<%=index%>" data-userid="<%=index%>" id="Del" ><span class="glyphicon glyphicon-trash"></span></a> - - - </td> -</tr> -</script> -<script> -var index = '1'; -var userid = ''; -function removeHiddenRows(rowcount) -{ - var step; - - if(rowcount > 2) - { -for (step = 1; step < rowcount ; step++) { - var td = document.getElementById(step); - td.parentNode.removeChild(td); - $("#MaterialCode"+step).remove(); - $("#Description"+step).remove(); - $("#UOM"+step).remove(); - $("#Quantity"+step).remove(); - index = '1'; - userid = ''; -} -} -} -function Save() -{ - - var id = '<?php echo REQ_DRAFT;?>' - if(validate()) - { - if(document.getElementById('Items').rows.length < 0) - { - alert('Please Select Line item to Create Requisition'); - $('#Deliverydt').focus(); - return false; - } - - else - { - $('#content').loader('show'); - $.ajax({ - data:$('.requistion').serialize(), - type:"POST", - url:"<?php echo base_url() ?>requisitionform/addNewRequistion?ID="+id, - success:function(data) { - if(data) - { - $('#content').loader('hide'); - alert(data); - $('#txtRowCount').val(''); - $('#txtDeletedRow').val(''); - - window.location = "Requisition"; - - } - else - { - alert("Error"); - } - - } - -}); - } - -} -} -function validate() -{ - if($("option:selected", $("#RequestType")).val() == '-1') - { - alert('Please Select ReqType Names'); - return false; - } - else if($("option:selected", $("#EmpID")).val() == '-1') - { - alert('Please Select Reqby'); - return false; - } - else if($("#txtRowCount").val().length < 1) - { - alert('Please Add Line Item'); - return false; - } - else if(isExceed == 1) - { - alert('You dont have Budget and You cant Raise New Requisition'); - return false; - } - else - { - return true; - } - -} -function Deleterow(rowid) -{ - var DelRows = $('#txtDeletedRow').val(); - - var answer = confirm(" Do you want to delete the Item from the List?") - if (answer) - { - var td = document.getElementById(rowid); - td.parentNode.removeChild(td); - - if(DelRows != '') - { - DelRows = DelRows + ":" + rowid; - } - else - { - DelRows= "0" + ":" + rowid; - } - $('#txtDeletedRow').val(DelRows); - } - -} -function validateBeforeAdd() -{ - if($("option:selected", $("#RequestType")).val() == '-1') - { - alert('Please select the Request Type '); - $("#RequestType").focus(); - return false; - } - else if($("#CostCenter").val() == '-1') - { - alert('Please select the Cost center to check the Budget Availablity '); - $("#CostCenter").focus(); - return false; - } - else if( isExceed == '1') - { - alert('You dont have available Budget Amount. You cant raise new Requisition'); - return false; - } - else - { - $('#myModal1').modal('show'); - } -} - -$('.addClick').click(function(){ - - if ($("#MaterialCode option:selected").val() =='-1' ) - { - alert('Please Select the MaterialCode '); - return false; - } - - if(document.getElementById('Quantity').value == '' ) - { - alert('Please Enter the Quantity'); - return false; - - } - - if ($("#MaterialCode option:selected").val() !='-1' && $('#Quantity').val() != '' ) - { - var temp = index; - var materialCode = $("#MaterialCode option:selected").val(); - var materialName = $("#Description").val(); - var uom = $("#UOM").val(); - var quantity = $("#Quantity").val(); - - $('#MaterialCode option[value='+materialCode+']').remove(); - - $('#Description').val(''); - $('#UOM').val(''); - $('#Quantity').val(''); - - index = parseInt(index)+1; - - var template = jQuery("#tempList").html(); - - - $('#tempAppend').append(_.template(template,{index:temp,MaterialCode:materialCode,MaterialName:materialName,UOM:uom,Quantity:quantity})); - - - var theForm = $(".requistion"); - - addHidden(theForm,"MaterialCode"+temp,materialCode); - addHidden(theForm,"Description"+temp,materialName); - addHidden(theForm,"UOM"+temp,uom); - addHidden(theForm,"Quantity"+temp,quantity); - - $('#txtRowCount').val(temp); - - } - - }); - function addHidden(theForm, key, value) { - // Create a hidden input element, and append it to the form: - var input = document.createElement('input'); - input.type = 'hidden'; - input.name = key;'name-as-seen-at-the-server'; - input.id = key;'name-as-seen-at-the-server'; - input.value = value; - theForm.append(input); -} -$("#myModal1").on("shown.bs.modal", function(e) { - if($("option:selected", $("#RequestType")).val() == '-1') - { - alert('Please select the Request Type '); - e.close(); - } -}); - -$("#EditItem").on("shown.bs.modal", function(e) { - userid = $(e.relatedTarget).data('userid'); - // alert(userid); - var tr= document.getElementById(userid); - var cellval = tr.cells; - //alert(x[1].innerHTML); - $('#EditMaterialCode').val(cellval[1].innerHTML); - $('#EditDescription').val(cellval[2].innerHTML); - $('#EditUOM').val(cellval[3].innerHTML); - $('#EditQuantity').val(cellval[4].innerHTML); -}); - -$('.EditClick').click(function(){ - - if(document.getElementById('EditQuantity').value == '' ) - { - alert('Please Enter the Quantity' ); - } - - if ( $('#EditQuantity').val() != '' ) - { - - var editMaterialCode = $("#EditMaterialCode").val(); - var editDescription = $("#EditDescription").val(); - var editUOM = $('#EditUOM').val(); - var editQuantity = $('#EditQuantity').val(); - - var tr= document.getElementById(userid); - var cellval = tr.cells; - cellval[1].innerHTML = editMaterialCode; - cellval[2].innerHTML = editDescription; - cellval[3].innerHTML =editUOM; - cellval[4].innerHTML = editQuantity; - - $('#MaterialCode'+userid).val(editMaterialCode); - $('#Description'+userid).val(editDescription); - $('#UOM'+userid).val(editUOM); - $('#Quantity'+userid).val(editQuantity); - - - } - - }); - $(".requistion").submit(function(e) { - - var id='<?php echo REQ_PENDING_APPROVAL;?>' - e.preventDefault(); - if(validate()) - { - if(document.getElementById('Items').rows.length < 0) - { - alert('Please Select Line item to Create Requisition'); - $('#Deliverydt').focus(); - return false; - } - else - { - $('#content').loader('show'); - $.ajax({ - data:$('.requistion').serialize(), - type:"POST", - url:"<?php echo base_url() ?>requisitionform/addNewRequistion?ID="+id, - success:function(data) { - if(data) - { - $('#content').loader('hide'); - alert(data); - $('#txtRowCount').val(''); - $('#txtDeletedRow').val(''); - - window.location = "Requisition"; - - } - else - { - alert("Error"); - } - - } - - }); - - } - } - - }); - <!-- script for table , It works under the datatable plugin--> - $(function () { - $('#Items').DataTable({ - "paging": false, - "lengthChange": true, - "searching": false, - "ordering": false, - "info": false, - "autoWidth": true - - }); - }); -</script> diff --git a/application/views/requisitionlist.php b/application/views/requisitionlist.php deleted file mode 100644 index 9c364603..00000000 --- a/application/views/requisitionlist.php +++ /dev/null @@ -1,372 +0,0 @@ -<script> -<!-- Editable table--> - $(function () { - $("td").dblclick(function () { - var OriginalContent = $(this).text(); - $(this).addClass("cellEditing"); - $(this).html("<input type='text' value='" + OriginalContent + "' />"); - $(this).children().first().focus(); - $(this).children().first().keypress(function (e) { - if (e.which == 13) { - var newContent = $(this).val(); - $(this).parent().text(newContent); - $(this).parent().removeClass("cellEditing"); - } }); - $(this).children().first().blur(function(){ - $(this).parent().text(OriginalContent); - $(this).parent().removeClass("cellEditing"); - }); - }); - }); -</script> -<style> - .table-bordered>thead>tr>th, .table-bordered>tbody>tr>th, .table-bordered>tfoot>tr>th, .table-bordered>thead>tr>td, .table-bordered>tbody>tr>td, .table-bordered>tfoot>tr>td {border: 1px solid #333;} - - </style> -<div class="content-wrapper"> - <?php - $attributes = array('class' => 'form-label-left RequisitionList ','name' => 'RequisitionList','id' => 'RequisitionList','method' => 'post','role' => 'form' ); - - echo form_open($this->config->base_url().'purchaseorderform/purchaseorder',$attributes); ?> - - <section class="content"> - - <div> - <center><b><h2>Requisition List </h2></b></center> - <div class="container-fluid"> - <div class="row"> - <div class="col-md-12"> - <div class="col-md-3"> - <label>Department Name</label> - <div> - <?php - $options = array("0"=>'Select Department Name'); - //print_r( $options); - - if(!empty($POType)) - { - foreach ($SupplierName as $SID): - - - $options[$SID->SupplierID] = $SID->SupplierID.' '.' - '.' '.$SID->SupplierName; - - endforeach; - } - - echo form_dropdown('SupplierID', $options,set_value('SupplierID'),'id="SupplierID"' ,'class = "form-control required"','required="true"'); - - ?> - - </div> - </div> - <div class="col-md-3"> - <label>Status</label> - <div> - <?php - $options = array("0"=>'Select Status'); - //print_r( $options); - - if(!empty($POType)) - { - foreach ($SupplierName as $SID): - - - $options[$SID->SupplierID] = $SID->SupplierID.' '.' - '.' '.$SID->SupplierName; - - endforeach; - } - - echo form_dropdown('SupplierID', $options,set_value('SupplierID'),'id="SupplierID"' ,'class = "form-control required"','required="true"'); - - ?> - - </div> - </div> - - <div class="col-md-3"> - <!-- Date range --> - <div class="form-group"> - <label>Date range:</label> - - <div class="input-group"> - <div class="input-group-addon"> - <i class="fa fa-calendar"></i> - </div> - <input type="text" class="form-control pull-right" id="reservation"> - </div> - <!-- /.input group --> - </div> - </div> - - </div> - </div> - </div> - - <div class="container-fluid"> - <div align="right"> - - <button type="button" class="btn btn-primary">Search</button> - <button type="button" class="btn btn-primary">Clear</button> - </div><br/> - - - <div class="modal fade" id="myModal" role="dialog"> - <div class="modal-dialog"> - <!-- Modal content--> - <form> - <div class="modal-content"> - <div class="modal-header" style="background-color: #3c8dbc;color:#fff;"> - <button type="button" class="close" data-dismiss="modal">&times;</button> - <center><h4> Requisition Details - REQ No</h4></center> - </div> - <div align="left"> - - <div class="col-md-12"> - <div class="col-md-3"> - <label>Req Type</label> - <div class="form-group"> - <?php - $data = array('name' => 'RequestType','value' => set_value('RequestType'),'id'=>'RequestType', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - - <div class="col-md-3"> - <label>Req By</label> - <div class="form-group"> - <?php - $data = array('name' => 'RequestedBy','value' => set_value('RequestedBy'),'id'=>'RequestedBy', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-3"> - <label>Dep Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'DeptName','value' => set_value('DeptName'),'id'=>'DeptName', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-3"> - <label>Desigination</label> - <div class="form-group"> - <?php - $data = array('name' => 'Desigination','value' => set_value('Desigination'),'id'=>'Desigination', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - - - </div> - <div class="col-md-12"> - - <div class="col-md-3"> - <label>Req Dt</label> - <div class="form-group"> - <?php - $data = array('name' => 'RequisitionDt','value' => set_value('RequisitionDt'),'id'=>'RequisitionDt', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - - <div class="col-md-3"> - <label>Cost Center Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'CostCenterName','value' => set_value('CostCenterName'),'id'=>'CostCenterName', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-3"> - <label>Avl Budget Amt</label> - <div class="form-group"> - <?php - $data = array('name' => 'AvailableBudment','value' => set_value('AvailableBudment'),'id'=>'AvailableBudment', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-3"> - <label>Status</label> - <div class="form-group"> - <?php - $data = array('name' => 'Status','value' => set_value('Status'),'id'=>'Status', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - - </div> - <div class="col-md-12"> - <table class="table table-bordered" style="border:1px solid #333"> - <div align="right" style="padding-right:10px"> - - <div class="modal fade" role="dialog"> - - <thead style="background-color:#fff"> - <tr> - - <th>S No</th> - <th>Item Code</th> - <th>Item Description</th> - <th>UOM</th> - <th>Quantity</th> - - </tr> - </thead> - <tbody> - <tr> - - <td> 1 </td> - <td>R001</td> - <td>Wasted Sand</td> - <td>Ton</td> - <td>100</td> - - </tr> - <tr> - - <td> 2 </td> - <td>R002</td> - <td>Resin</td> - <td>Liter</td> - <td>200</td> - </tr> - - </tbody> - - </table> - - </div> - - </div> - <div class="modal-footer"> - - - - <button type="button" class="btn btn-default" value="submit">OK</button> - - </div> - </div> - </form> - - </div> - </div> - - - <table class="table table-bordered editableTable" style="border:1px solid #333"> - <div align="right" style="padding-right:10px"> - - <div class="modal fade" role="dialog"> - - <thead style="background-color:#fff"> - <tr> - <th>Select</th> - <th>Requisition Number</th> - <th>Requisition Date</th> - <th>Status</th> - <th>Commants</th> - - - </tr> - </thead> - <tbody> - <tr> - <td><input type="checkbox" name="chk1" id="chk1"/>&nbsp;</td> - <td><a data-toggle="modal" data-target="#myModal"><u>REQ000001</u></a></td> - <td>2/3/2017</td> - <td data-name="sel"> - <select name="status"> - <option value="1">Pending</option> - <option value="2">Approval</option> - <option value="3">Reject</option> - </select> - </td> - <td>Need to get quick</td> - - </tr> - <tr> - <td><input type="checkbox" name="chk2" id="chk2" />&nbsp;</td> - <td><a data-toggle="modal" data-target="#myModal"><u>REQ000001</u></a></td> - <td>5/4/2017</td> - <td data-name="sel"> - <select name="status"> - <option value="1">Pending</option> - <option value="2">Approval</option> - <option value="3">Reject</option> - </select> - </td> - <td>Need to get quick</td> - - </tr> - <tr> - <td><input type="checkbox" name="chk3" id="chk3"/>&nbsp;</td> - <td><a data-toggle="modal" data-target="#myModal"><u>REQ000001</u></a></td> - <td>9/4/2017</td> - <td data-name="sel"> - <select name="status"> - <option value="1">Pending</option> - <option value="2">Approval</option> - <option value="3">Reject</option> - </select> - </td> - <td>Need to get quick</td> - </tr> - </tbody> - - </table> - - - <div align="right" style="padding-right:10px"> - <a href="<?php echo base_url(); ?>purchaseorderform/purchaseorder"> - <button type="button" class="btn btn-primary">Create PO</button></a> - - - </div> - <br> - </div> - </div> - - </section> -</div> -<script> -var baseurl = "<?php print base_url(); ?>"; - $(".RequisitionList").submit(function(e) { - - - e.preventDefault(); - - var id = ''; - var chk1 = $('#chk1').val(); - var chk2 = $('#chk2').val(); - var chk3 = $('#chk3').val(); - if( $('#chk1').is(":checked")) - { - id = ''; - } - else if($('#chk2').is(":checked")) - { - id = ''; - } - else if($('#chk3').is(":checked")) - { - id = ''; - } - // alert(chk1); - // alert(chk2); - // alert(chk3); - - window.location = baseurl +'purchaseorderform/purchaseorder'; - - - }); - //Date range picker - $('#reservation').daterangepicker(); - </script> - \ No newline at end of file diff --git a/application/views/requisitionlistapproval.php b/application/views/requisitionlistapproval.php deleted file mode 100644 index d7ec9970..00000000 --- a/application/views/requisitionlistapproval.php +++ /dev/null @@ -1,447 +0,0 @@ - -<?php - //print_r($AppList); -?> - -<style> - .table-bordered>thead>tr>th, .table-bordered>tbody>tr>th, .table-bordered>tfoot>tr>th, .table-bordered>thead>tr>td, .table-bordered>tbody>tr>td, .table-bordered>tfoot>tr>td {border: 1px solid #333;} - - </style> -<div class="content-wrapper"> - - - <section class="content"> - - <div> - <center><b><h2>Requisition Approval List </h2></b></center> - <?php - $attributes = array('class' => 'form-label-left Approve ','name' => 'Approve','id' => 'Approve'); - - echo form_open($this->config->base_url().'requisitionform/SearchRequistList',$attributes); ?> - <div class="container-fluid"> - <div class="row"> - <div class="col-md-12"> - <div class="col-md-3"> - <label>Requisition Status</label> - <div> - - <select class="form-control required" id="RequisitionStatus" name="RequisitionStatus" > - <option value="-1" >Select Status</option> - <?php - if(!empty($Status)) - { - foreach ($Status as $DEP) - { - $StatusCode = $DEP->StatusCode; - - if ($_POST['RequisitionStatus'] == $StatusCode) - { - - echo "<option value=\"".$StatusCode."\" selected=\"selected\">".$StatusCode.' - '. $DEP->StatusName."</option>"; - } - else - { - echo "<option value=\"".$StatusCode."\">".$StatusCode.' - '. $DEP->StatusName ."</option>"; - } - - } - } - ?> - </select> - </div> - </div> - <div class="col-md-3"> - <div class="form-group"> - <label>Date range:</label> - - <div class="input-group"> - <div class="input-group-addon"> - <i class="fa fa-calendar"></i> - </div> - <input type="text" class="form-control pull-right" id="SearchDate" value="<?php echo isset($_POST['SearchDate']) ? $_POST['SearchDate'] : '' ?>" name="SearchDate"> - </div> - <!-- /.input group --> - </div> - </div> - - <div class="col-md-3"> - <label>&nbsp;&nbsp;</label> - <div class="form-group"> - <input type="hidden" name="FromDate" id="FromDate" /> - <input type="hidden" name="ToDate" id="ToDate" /> - <input type="submit" class="btn btn-primary" > - <!-- <input type="Reset" class="btn btn-primary" > - - <!-- <button type="button" class="close" data-dismiss="modal">&times;</button> - <!--<a class="btn btn-info" onclick="Search()" >Search</a> --> - <a class="btn btn-primary" onclick="Reset()" >Clear</a> - </div> - - - </div> - </div> - </div> - - - -<br/> - - - <div class="modal fade" id="myModal" role="dialog"> - <div class="modal-dialog"> - <!-- Modal content--> - <form> - <div class="modal-content"> - <div class="modal-header" style="background-color: #3c8dbc;color:#fff;"> - <button type="button" class="close" data-dismiss="modal">&times;</button> - <center><h4> Requisition Details - REQ No</h4></center> - </div> - <div align="left"> - - <div class="col-md-12"> - <div class="col-md-4"> - <label>Requistion Type</label> - <div class="form-group"> - <?php - $data = array('name' => 'ReqType','value' => set_value('ReqType'),'id'=>'ReqType', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - - <div class="col-md-4"> - <label>Requested By</label> - <div class="form-group"> - <?php - $data = array('name' => 'ReqBy','value' => set_value('ReqBy'),'id'=>'ReqBy', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <label>Designation</label> - <div class="form-group"> - <?php - $data = array('name' => 'Desigination','value' => set_value('Desigination'),'id'=>'Desigination', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - - </div> - <div class="col-md-12"> - <div class="col-md-4"> - <label>Requested Date</label> - <div class="form-group"> - <?php - $data = array('name' => 'ReqDate','value' => set_value('ReqDate'),'id'=>'ReqDate', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - - <div class="col-md-4"> - <label>Cost Center Name</label> - <div class="form-group"> - - <?php - - $data = array('name' => 'CostCenter','value' => set_value('CostCenter'),'id'=>'CostCenter', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - - - - ?> - </div> - </div> - <div class="col-md-4"> - <label>Avl Budget Amt</label>&nbsp;<img id="AlertImg" src="<?php echo base_url(); ?>assets/dist/img/red.png" alt="your image" width="25px" style="display:none"/> - <div class="form-group"> - <?php - $data = array('name' => 'AvlBudgetAmount','value' => set_value('AvlBudgetAmount'),'id'=>'AvlBudgetAmount', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - - </div> - - <table id="Items" class="table table-bordered table-hover" style="background-color:#fff;font-size:12px;"> - <div align="right" style="padding-right:10px"> - - <div class="modal fade" role="dialog"> - - <thead style="background-color:#ddf"> - <tr> - - <th>SNo</th> - <th>Item Code</th> - <th>Item Description</th> - <th>UOM</th> - <th>Requested Quantity</th> - <th>Ordered Quantity</th> - <th>Status</th> - </tr> - </thead> - <tbody id="tbleAppend"> - - </tbody> - </div> - </div> - </table> - <div class="modal-footer"> <div class="col-md-12"> - <a class="btn btn-info" data-dismiss="modal" value="Cancel">Ok</a> - </div> - </div> - </div> - - </div> - - - </form> - - </div> - </div> - - - <table id="Requisition" class="table table-bordered table-hover" style="background-color:#fff;font-size:12px;"> - <div align="right" style="padding-right:10px"> - <div id="content" > </div> - <div class="modal fade" role="dialog"> - - <thead style="background-color:#ddf"> - <tr> - - <th>Requisition Number</th> - <th>Requested By</th> - <th>Requested Date</th> - <th>Status</th> - <th>Remarks</th> - <th>Action</th> - </tr> - </thead> - <tbody id="ApprovalList"> - - <?php - if(!empty($AppList)) - { - $index = 0; - foreach($AppList as $record) - { - $index = $index +1; - ?> - <tr id="<?php echo $index ?>" > - <td><a data-toggle="modal" data-target="#myModal" data-id="<%=index%>" data-userid="<?php echo $record->ReqNo ?>" ><u><?php echo $record->ReqNo ?></u></a></td> - <td><?php echo $record->FirstName ?></td> - <td align="right"><?php $Cdt = new DateTime($record->CreatedDate); - $CreatedDate = $Cdt->format('d-m-Y'); - echo $CreatedDate; - ?></td> - <td><?php echo $record->StatusName ?></td> - <?php if (($record->Status) == REQ_PENDING_APPROVAL) - { - - ?> - <td contenteditable="true"><input type="text" id="Remarks<?php echo $index ?>" name="Remarks<?php echo $index ?>"class="form-control" maxlength="100"></td> - <td data-name="sel" contenteditable="true" id="Action<?php echo $index ?>" onchange="saveToDatabase(this,'question','<?php echo $record->ReqNo ; ?>','<?php echo $index ; ?>')"> - <select name="status<?php echo $index ?>" id="status<?php echo $index ?>"> - <option value="1">Select Action</option> - <option value="2">Approve</option> - <option value="3">Reject</option> - </select> - </td> - <?php - } - else - { - ?> - <td><?php echo $record->Comments ?></td> - <td><?php echo $record->StatusName ?></td> - <?php - - } - ?> - </tr> - <?php - } - } - ?> - - - </tbody> - - </table> - - - - <br> - </div> - </div> - - </section> -</div> - -<script> - var startDate = ''; - var endDate = ''; - -function Reset() -{ - $('#RequisitionStatus').val("-1"); - $('#SearchDate').val(''); -} -$("#myModal").on("shown.bs.modal", function(e) { - var ReqId = $(e.relatedTarget).data('userid'); - $("#CostCenter").val(''); - $("#tbleAppend").empty(); - $("#ReqType").val(''); - $("#ReqBy").val(''); - $("#ReqDate").val(''); - $("#Desigination").val(''); - $("#AvlBudgetAmount").val(''); - $('#AlertImg').attr("style","display:none;"); - - $('#content').loader('show'); - $.ajax({ - data:{id:ReqId}, - type:"POST", - dataType: 'json', - url:"<?php echo base_url() ?>requisitionform/ViewRequest", - success:function(json) { - // success:function(data) { - $('#content').loader('hide'); - //alert(data); - $("#ReqType").val(json.Requist[0]['ReqType']); - $("#ReqBy").val(json.Requist[0]['Requestedby']); - $("#ReqDate").val(json.Requist[0]['CreatedDate']); - $("#Desigination").val(json.Requist[0]['Designation']); - $("#CostCenter").val(json.Requist[0]['CostCenterCode']); - $("#AvlBudgetAmount").val(json.AvilBudAmount); - - $("#tbleAppend").append(json.Items); - - } - -}); - -}); - - -function saveToDatabase(editableObj,column,ReqId,Index) { - - - var id = $('#Remarks'+Index).val(); - var Status = $('#status'+Index).val(); - var StatusCode = '<?php echo REQ_APPROVED; ?>'; - var strMsg = 'Do you want to Approve the Requisition?'; - if(Status == '3') - { - StatusCode = '<?php echo REQ_REJECTED; ?>'; - strMsg = 'Do you want to Reject the Requisition?' - } - var Remarks = $('#Remarks'+Index).val(); - if(Status == '3' && Remarks == '') - { - alert('Please enter remarks'); - $('#status'+Index).val('1'); - return false; - - } - - var answer = confirm(strMsg); - if (answer) - { - $('#content').loader('show'); - $.ajax({ - data:{id:id}, - type:"POST", - url:"<?php echo base_url() ?>requisitionform/ApproveRequest?Status="+StatusCode+"&ReqNo="+ReqId, - success:function(data) { - if(data) - { - $('#content').loader('hide'); - alert(data); - location.reload(); - } - else - { - alert("Error"); - } - - } - - -}); - -} -else -{ -return; -} - -} - -$(function() { - var d = new Date(); - - var month = d.getMonth(); - var day = d.getDate(); - var year = d.getFullYear() ; - var SIAStartYear = year - 2015; - var mindt = year-70; - var maxdt = year-15; - $( ".datePicker" ).datepicker( - { - minDate : new Date(year-SIAStartYear,1,1), - maxDate :'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true, - } - ); - //$('#SearchDate').daterangepicker( ); - //Initialize Select2 Elements - $(".select2").select2(); - //$('#SearchDate').val(''); - $('#SearchDate').daterangepicker( -{ - locale: { - format: 'DD-MM-YYYY' - }, - - showDropdowns: true -}, -function(start, end, label) { - - startDate = start.format('DD-MM-YYYY'); - endDate = end.format('DD-MM-YYYY'); - $('#FromDate').val(startDate); - $('#ToDate').val(endDate); - - - //alert("A new date range was chosen: " + start.format('DD-MM-YYYY') + ' to ' + end.format('DD-MM-YYYY')); -}); - - - -}); -$(function () { - - $('#Items').DataTable({ - "paging": false, - "lengthChange": true, - "searching": false, - "ordering": false, - "info": false, - "autoWidth": false - - }); - $('#Requisition').DataTable({ - "paging": true, - "lengthChange": true, - "searching": true, - "ordering": true, - "info": true, - "autoWidth": true - - }); - }); - </script> diff --git a/application/views/requisitionlisting.php b/application/views/requisitionlisting.php deleted file mode 100644 index 2a425b05..00000000 --- a/application/views/requisitionlisting.php +++ /dev/null @@ -1,158 +0,0 @@ -<?php - - $DraftCount = ''; - $ReqNo = ''; - if(!empty($Status)) -{ - foreach ($Status as $St) - { - $DraftCount = $St->cnt; - $ReqNo = $St->ReqNo; - } - //echo $ReqNo; -}?> - -<script> - - - function DeleteRow(rowid) -{ - - id = rowid; - - var answer = confirm(" Do you want to delete the Requisition?") - if (answer) - { - - $.ajax({ - data:{id:id}, - type:"POST", - url:"<?php echo base_url() ?>requisitionform/DeleteReqNo", - success:function(data) { - if(data) - { - $('#content').loader('hide'); - alert(data); - - location.reload(); - - - } - else - { - alert("Error"); - } - - }}); - } - } - - -</script> - <style> -span.highlight { - background-color: yellow; -} -</style> -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - <CENTER>Siddharth Industries Requisition Listing</CENTER> - - </h1> - </section> - <section class="content"> - <div class="row"> - <div class="col-xs-12 text-right"> - <div class="form-group"> - <?php if($DraftCount == 0) - { ?> - <a class="btn btn-primary" onclick="Test()" href="<?php echo base_url(); ?>RequisitionForm">Raise New Requisition</a><?php }?> - - </div> - </div> - </div> - <div class="row"> - <div class="col-xs-12"> - <div class="box"> - <div class="box-header"> - <CENTER><h3 class="box-title"></h3></CENTER> - <div class="box-tools"> - - </form> - </div> - </div><!-- /.box-header --> - <?php if($DraftCount > 0 ) {?><p> -<span class="highlight">The Requisition No <b><?php echo $ReqNo;?></b> is in Draft status.</span> Please act on the requisition.<span class="highlight">Then only you can raise New Requisition. </span> - </p> <?php } ?> - - <table id="Requisition" class="table table-bordered table-hover" style="background-color:#fff;font-size:12px;"> - <thead style="background-color:#ddf"> - <tr> - <th>Requisition No</th> - <th>Requisition Type</th> - <th>Tot No.OfLineItem </th> - <th>Po CreatedLineItem</th> - <th>Partical PoCreatedLineItem</th> - <th>NewLine Item</th> - <th>Status</th> - <th>Requisted Date</th> - <th>Action</th> - - </tr> - </thead> - - - - - <?php - if(!empty($TotNoOfLine)) - { - foreach($TotNoOfLine as $record) - { //print_r($record); - ?> - <tr> - <td><?php echo $record->ReqNo ?></td> - <td><?php echo $record->ReqType ?></td> - <td><?php echo $record->TotalNoofLineItems ?></td> - <td><?php echo $record->PolineItems ?></td> - <td><?php echo $record->PartilallyLineItems ?></td> - <td> <?php echo $record->newLineItem ?></td> - - - <td><?php echo $record->StatusName ?></td> - <td><?php $Pdt = new DateTime($record->CreatedDate ); - $PODate = $Pdt->format('Y-m-d'); - echo $PODate - ?></td> - <td> <a data-toggle="tooltip" href="<?php echo base_url().'EditRequisition?ReqNo='.$record->ReqNo.'&ReqType='.$record->ReqType; ?>"><i class="fa fa-pencil" data-toggle="tooltip" title="<?php echo $record->ReqNo; ?> - Click here to view Requisition details"></i>&nbsp;&nbsp;&nbsp;</a> <a data-toggle="tooltip" onclick="DeleteRow('<?php echo $record->ReqNo; ?>' )" ><span class="glyphicon glyphicon-trash" title="<?php echo $record->ReqNo; ?> - Click here to Delete Requisition details"></span></a> </td> - </tr> - - <?php - } - } - ?> - </table> - - - </div> - </div> - </div> - </section> - </div> - <script> - $(function () { - - $('#Requisition').DataTable({ - "paging": true, - "lengthChange": true, - "searching": true, - "ordering": true, - "info": true, - "autoWidth": true - - }); - }); - </script> - \ No newline at end of file diff --git a/application/views/revenuepopdf.php b/application/views/revenuepopdf.php deleted file mode 100644 index f630120d..00000000 --- a/application/views/revenuepopdf.php +++ /dev/null @@ -1,208 +0,0 @@ - <?php - - $PONO = ''; - $CompanyAddress = ''; - $CompanyName = ''; - $SuplierName = ''; - $SuplierAddress = ''; - $DeliveryAddress = ''; - $Podt = ''; - $DeliveryDate =''; - - $ServiceDescription = ''; - if(!empty($CompanyDetails)) - { - foreach ($CompanyDetails as $CO) - { - $CompanyName = $CO->CompanyName; - $CompanyAddress = $CO->Address; - - } -} - if(!empty($POItem)) - { - foreach ($POItem as $PO) - { - $PONO = $PO->PONO; - $SuplierName = $PO->SupplierName; - $SuplierAddress = $PO->Address; - $DeliveryAddress = $PO->DeliveryAddress; - - $dt = new DateTime($PO->PODate, new DateTimeZone('Asia/Kolkata')); - $Podt = $dt->format('d-m-Y'); - $dtDe = new DateTime($PO->DeliveryDate, new DateTimeZone('Asia/Kolkata')); - $DeliveryDate = $dtDe->format('d-m-Y'); - $ServiceDescription =$PO->ServiceDescription; - - } -} - - ?> -<div><center> -<h2>PURCHASE ORDER</h2> -</center> -</div> -<div align="right"> PO NO:<?php echo $PONO?> </div> - <div align="right"> <?php echo $Podt?> </div> -<p> -<b style="color:#3c8dbc"><?php echo $CompanyName; ?></b><br/> <?php echo $CompanyAddress; ?></p> -<table><tr><td> -<p><a style="color:#3c8dbc">Vendor Address : </a> <br/> <?php echo $SuplierName?> <br/><?php echo $SuplierAddress ?></p></td><td> -<p><a style="color:#3c8dbc">Delivery To :</a><br/> <?php echo $DeliveryAddress?><p></td> -</tr></table> -<p> -<div align="right"> Delivery Date :<?php echo $DeliveryDate?></div></p> - - -<table style="border-collapse: collapse;" cellpadding="0" cellspacing="0" border="1" width="105%"> -<tr style="background:#000;color:#fff;"> -<th>#</th> -<th>Item Description</th> -<th>Qty</th> -<th>Rate</th> -<th>Amount</th> -<th>Discount</th> -<th>Excise Duty</th> -<th>Vat</th> -<th>CST</th> -<th>GST</th> -<th>Other Taxes</th> -<th>Insurance</th> -<th>Freight</th> -<th>Total Amount</th> -<th></th> -</tr> - - <?php - if(!empty($POItem)) - { - $SubTotalAmount = 0; - $index = 0; - $TotalAmount = 0; - $OrderValue = 0; - $AfterExciseDuty = 0; - $AfterVAT = 0; - $AfterCST = 0; - $AfterGST = 0; - $AfterOtherTaxes = 0; - $Insurance = 0; - $AfterFreightValue = 0; - $AfterDiscount = 0; - foreach($POItem as $record) - { - $index = $index + 1; - - ?> -<tr> -<td><?php echo $index ; ?></td> -<td><?php echo $record->MaterialName ; ?></td> -<td align="right"><?php echo $record->Quantity ; ?></td> -<td align="right"><?php echo $record->Rate ; ?></td> -<td align="right"><?php echo $record->BasicValue ; ?></td> -<td align="right"><?php echo $record->AfterDiscount; ?></td> -<td align="right"><?php echo $record->AfterExciseDuty ; ?></td> -<td align="right"><?php echo $record->AfterVAT ; ?></td> -<td align="right"><?php echo $record->AfterCST ; ?></td> -<td align="right"><?php echo $record->AfterGST ; ?></td> -<td align="right"><?php echo $record->AfterOtherTaxes ; ?></td> -<td align="right"><?php echo $record->Insurance ; ?></td> -<td align="right"><?php echo $record->AfterFreightValue ; ?></td> -<td align="right"><?php $TotalAmount = (($record->BasicValue+$record->AfterExciseDuty - + $record->AfterVAT+$record->AfterCST+$record->AfterGST + $record->AfterOtherTaxes + $record->Insurance+ $record->AfterFreightValue)- $record->AfterDiscount); -echo number_format($TotalAmount,2) ; ?></td> -</tr> - -<?php - $SubTotalAmount = $SubTotalAmount + $record->BasicValue; - $AfterExciseDuty =$AfterExciseDuty + $record->AfterExciseDuty; - $AfterVAT =$AfterVAT + $record->AfterVAT; - $AfterCST = $AfterCST + $record->AfterCST; - $AfterGST =$AfterGST + $record->AfterGST; - $AfterOtherTaxes =$AfterOtherTaxes + $record->AfterOtherTaxes; - $Insurance =$Insurance + $record->Insurance; - $AfterFreightValue =$AfterFreightValue + $record->AfterFreightValue; - $AfterDiscount = $AfterDiscount + $record->AfterDiscount ; - } - $OrderValue = (( $SubTotalAmount + $AfterVAT + $AfterCST+$AfterGST+$AfterOtherTaxes +$Insurance +$AfterFreightValue+$AfterExciseDuty) - $AfterDiscount ) ; - } - - ?> -</table> -<div align="right"> - -<table style="border-collapse: collapse;" cellpadding="0" cellspacing="0" border="0" width="105%"> -<tr> -<td align="right">Sub Total Amount :</td> -<td align="right"><?php echo number_format($SubTotalAmount,2);?></td> -<br/> -</tr> -<tr> -<td align="right">Discount :</td> -<td align="right"><?php echo number_format($AfterDiscount,2);?></td> - -</tr> -<tr> -<td align="right">Excise Duty :</td> -<td align="right"><?php echo number_format($AfterExciseDuty,2);?></td> - -</tr> -<tr> -<td align="right">Vat :</td> -<td align="right"><?php echo number_format($AfterVAT,2);?></td> - -</tr> -<tr> -<td align="right">CST :</td> -<td align="right"><?php echo number_format($AfterCST,2);?></td> - -</tr> -<tr> -<td align="right">GST :</td> -<td align="right"><?php echo number_format($AfterGST,2);?></td> - -</tr> -<tr> -<td align="right">Other Taxes:</td> -<td align="right"><?php echo number_format($AfterOtherTaxes,2);?></td> - -</tr> -<tr> -<td align="right">Insurance :</td> -<td align="right"><?php echo number_format($Insurance,2);?></td> - -</tr> -<tr> -<td align="right">Freight :</td> -<td align="right"><?php echo number_format($AfterFreightValue,2);?></td> - -</tr> -<tr> -<td align="right"><p><b>Total Order Amount :</b></p></td> -<td align="right"><b><?php echo number_format($OrderValue,2);?></b></td> - -</tr> -</table> -<br> -<br> -<p> -<div align="Left"> <b>Service Description:</b><br/><br/><?php echo $ServiceDescription;?></div></p> -<?php -if(!empty($releasedetails)){ - foreach($releasedetails as $detail){ - -?> -<table width="200%"> -<tr> -<td><b>ReleasedBy:</b></td> -<td><b>ReleasedOn:</b></td> -</tr> -<tr> -<td><?php echo $detail->FirstName;?></td> -<td><?php echo $detail->ReleasedOn;?></td> -</tr> -</table> -<?php - } -} -?> -</div> \ No newline at end of file diff --git a/application/views/servicePurchaseorder.php b/application/views/servicePurchaseorder.php deleted file mode 100644 index bd13c391..00000000 --- a/application/views/servicePurchaseorder.php +++ /dev/null @@ -1,1930 +0,0 @@ -<?php $ReqType =''; -$CompanyAddress = ''; -$dt = new DateTime('now', new DateTimeZone('Asia/Kolkata')); -$CurrentDate = $dt->format('Y-m-d'); -$MaxPoDate = ''; -$AvlAmount = 0; -if(!empty($MaxPODate)) -{ - foreach ($MaxPODate as $date) - { - $MaxPoDate = $date->PODate; - } -} -if(!empty($CompanyDetails)) -{ - foreach ($CompanyDetails as $Req) - { - $CompanyAddress = $Req->Address; - } -} -if(!empty($AvlBudAmt)) -{ - - $AvlAmount = $AvlBudAmt; - -} -?> -<script src="<?php echo base_url(); ?>assets/js/CreatePOValidation.js" type="text/javascript"></script> -<script> -var RequistQuantity = ''; -var AvilBudAmt = ''; - var POMaxDate = '<?php echo $MaxPoDate;?>'; - var d = new Date(POMaxDate); - var SelectedMaterialCode = []; - var CollIndex = 0; - var SelectedMaterialList = { - Mat: [] -}; - $(function() { - - $("#PODate").datepicker({ - minDate : d, - maxDate : 'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true,yearRange: '-100:+0' -}); - $("#Deliverydt").datepicker({ - minDate : 'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true,yearRange: '0:+10' -}); - -$('#drpSupplier').change(function() { - - var id = $('#drpSupplier').val(); - - $("#SupAddress").val(''); - - if(id != '0') - { - var y = <?php echo json_encode($Suplist, JSON_PRETTY_PRINT) ?>; - - - $.each(y, function(idx, obj) { - if(obj.SupplierID === id) - { - $("#SupAddress").val(obj.Address); - - } - - }); - - } - else - { - alert('Please select the SupplierID'); - return false; - } - -}); - -$('#ReqNo').change(function() { - - - var id = $('#ReqNo').val(); - $("#AvlBudAmt").val(''); - - $("#MaterialCode").empty(); - $("#deptName").val(''); - $("#UOM").val(''); -$("#Quantity").val(''); -$("#ItemName").val(''); -$("#Rate").val(''); -$("#txtBasicValue").val(''); - $("#CostCenter").val(''); - clearTaxField(); - if(id != '0') - { - var y = <?php echo json_encode($RequistionDetails, JSON_PRETTY_PRINT) ?>; - - var Material = <?php echo json_encode($MaterialList, JSON_PRETTY_PRINT) ?>; - var AvlBudAmt = '<?php echo $AvlAmount ?>'; - - // For Binding DepartmentName - $.each(y, function(idx, obj) { - if(obj.ReqNo === id) - { - $("#deptName").val(obj.DepartmentName); - $("#CostCenter").val(obj.CostCenterCode); - - } - }); - $("#AvlBudAmt").val(AvlBudAmt); - - - // For Binding Material list center for the selected Requistion Number - $("#MaterialCode").append( $('<option></option>').val("0").html("Select Material Code") ); - var isAdded = "0"; - for(i=0;i<Material.length;i++) - { - $.each(Material[i], function(idx, obj) { - - if(obj.ReqNo === id ) - { - - $.each(SelectedMaterialList.Mat, function(idx1, el){ - if (id == el.ReqNo ) - { - - if(el.materialCode == obj.MaterialCode) - { - isAdded = "1"; - return false; - } - else - { - isAdded = "0"; - } - - } - }); - - - if(isAdded == "0") - { - - $("#MaterialCode").append( $('<option></option>').val(obj.MaterialCode).html(obj.MaterialCode + "-" + obj.MaterialName)); - } - - } - - - }); - } - } - else - { - alert('Please select the Requisition Number'); - return false; - } - id = ''; - -}); -$('#MaterialCode').change(function() { - - var id = $('#MaterialCode').val(); - $("#ItemName").val(''); -$("#UOM").val(''); -$("#Quantity").val(''); -$("#ItemName").val(''); -$("#Rate").val(''); -$("#txtBasicValue").val(''); - RequistQuantity = ''; - clearTaxField(); - if(id != '0') - { - var Material = <?php echo json_encode($MaterialList, JSON_PRETTY_PRINT) ?>; - - for(i=0;i<Material.length;i++) - { - $.each(Material[i], function(idx, obj) { - if(obj.MaterialCode === id) - { - $("#ItemName").val(obj.MaterialName); - $("#UOM").val(obj.UOM); - $("#Quantity").val(obj.Quantity); - RequistQuantity = obj.Quantity; - } - }); - } - } - else - { - alert('Please select the MaterialCode'); - return false; - } - -}); - - -$('#EditMaterialCode').change(function() { - - var id = $('#EditMaterialCode').val(); - $("#EditItemName").val(''); -$("#EditUOM").val(''); -$("#EditQuantity").val(''); -$("#EditRate").val(''); -$("#txtEditBasicValue").val(''); - RequistQuantity = ''; - clearEditTaxField(); - if(id != '0') - { - var Material = <?php echo json_encode($MaterialList, JSON_PRETTY_PRINT) ?>; - - for(i=0;i<Material.length;i++) - { - $.each(Material[i], function(idx, obj) { - if(obj.MaterialCode === id) - { - $("#EditItemName").val(obj.MaterialName); - $("#EditUOM").val(obj.UOM); - $("#EditQuantity").val(obj.Quantity); - RequistQuantity = obj.Quantity; - } - }); - } - - } - else - { - alert('Please select the MaterialCode'); - return false; - } - -}); - - -}); - - -function Ratechange(){ - - if($('#ReqNo').val() == "0") - { - alert('Please select the Requisition Number'); - $('#ReqNo').focus(); - return false; - } - else if($('#MaterialCode').val() == "0") - { - alert('Please select the Material Code'); - $('#MaterialCode').focus(); - return false; - } - else if($('#CostCenter').val() == "0") - { - alert('Please select the CostCenterCode'); - $('#CostCenter').focus(); - return false; - } - ExceedQuantityCheck(); - - if($('#Quantity').val() != '' && $('#Rate').val() != '') - { - var txtQuantity = parseFloat( $('#Quantity').val()); - var txtUnitPrice = parseFloat($('#Rate').val()); - var Tot = txtQuantity * txtUnitPrice - $('#txtBasicValue').val(Tot); - - //Service Tax calculation - $('#AfterServiceTax').val(calculateServiceTax($('#txtBasicValue').val())); // calculateServiceTax(); - - //Edu. cess @2% on service Tax - $('#AfterEduCess').val( calculateEduess($('#AfterServiceTax').val())); - - //Sec. & Higher Edu. cess @1 % on service Tax - - $('#AfterSecHighTax').val(calculateHigherEdu($('#AfterServiceTax').val())); - //Krishi Kalyan tax - - $('#AfterKrishiTax').val(calculateKrishiKalyantax($('#txtBasicValue').val())); - //Swachh Bharat tax - - $('#AfterSwachhTax').val(calculateSwachhBharattax($('#txtBasicValue').val())); - - calculateTotalOrdervalue(); - - var res = ExceedBudget($('#TotalOrderValue').val(), $('#AvlBudAmt').val()); - if(!res) - { - $('#Rate').focus(); - return false; - } - } - -} - -function EditRatechange(){ - - if($('#EditCostCenter').val() == "0") - { - alert('Please select the CostCenterCode'); - $('#EditCostCenter').focus(); - return false; - } - EditExceedQuantityCheck(); - - if($('#EditQuantity').val() != '' && $('#EditRate').val() != '') - { - var txtQuantity = parseFloat( $('#EditQuantity').val()); - var txtUnitPrice = parseFloat($('#EditRate').val()); - var Tot = txtQuantity * txtUnitPrice - $('#txtEditBasicValue').val(Tot); - ExceedBudget(Tot, $('#EditAvlBudAmt').val()); - - //Service Tax calculation - $('#EditAfterServiceTax').val(calculateServiceTax($('#txtEditBasicValue').val())); // calculateServiceTax(); - - //Edu. cess @2% on service Tax - $('#EditAfterEduCess').val( calculateEduess($('#EditAfterServiceTax').val())); - - //Sec. & Higher Edu. cess @1 % on service Tax - - $('#EditAfterSecHighTax').val(calculateHigherEdu($('#EditAfterServiceTax').val())); - //Krishi Kalyan tax - - $('#EditAfterKrishiTax').val(calculateKrishiKalyantax($('#txtEditBasicValue').val())); - //Swachh Bharat tax - - $('#EditAfterSwachhTax').val(calculateSwachhBharattax($('#txtEditBasicValue').val())); - - calculateTotalEditOrdervalue(); - } - -} - -function ExceedQuantityCheck() - { - var EnterQuantity = $("#Quantity").val()== '' ? "0.00" : parseFloat($("#Quantity").val()); - var ReqQuantity = parseFloat(RequistQuantity); - //alert(ReqQuantity); - if(EnterQuantity > ReqQuantity) - { - alert('Your exceeding the Quantity from the Requisition Quantity:'+ RequistQuantity +'.Please adjust the Quantity to proceed further.'); - - $('#Quantity').focus(); - return false; - } - else { - return true; - } - } - function EditExceedQuantityCheck() - { - // RequistQuantity - var EnterQuantity = $("#EditQuantity").val()== '' ? "0.00" : parseFloat($("#EditQuantity").val()); - var ReqQuantity = parseFloat(RequistQuantity); - if(EnterQuantity > ReqQuantity) - { - alert('Your exceeding the Quantity from the Requisition Quantity:'+ RequistQuantity +'.Please adjust the Quantity to proceed further.'); - - $('#EditQuantity').focus(); - return false; - } - } - - function ExceedBudget(ValuetoCheck,budgetAmount) - { - var ReqAmount = parseFloat(ValuetoCheck); - var BudAmount = parseFloat(budgetAmount); - - if(ReqAmount > BudAmount ) - { - alert('Your exceeding the Avaiable Budget :'+ AvilBudAmt +'.Please adjust the Product to proceed further.'); - return false; - } - else - { - return true; - } - } - function calculateServiceTax(varBasicValue) - { - - var basicValue = parseFloat(varBasicValue); - - var ServiceTaxValue = 0.0; - - ServiceTaxValue = <?php echo SERVICETAX_SERVICETAX_14PERCENT; ?>; - - var TAXval = parseFloat(ServiceTaxValue).toFixed(2); - - return TAXval;// $('#AfterServiceTax').val(TAXval); - - } - function calculateEduess(varAfterServiceTax) - { - var ServiceTaxAmount = parseFloat(varAfterServiceTax); - - var ServiceTaxValue = 0.0; - - ServiceTaxValue = <?php echo SERVICETAX_EDUCESS_2PERCENT; ?>; - - var TAXval = parseFloat(ServiceTaxValue).toFixed(2); - - return TAXval;// $('#AfterEduCess').val(TAXval); - } - function calculateHigherEdu(varAfterServiceTax) - { - var ServiceTaxAmount = parseFloat(varAfterServiceTax); - - var ServiceTaxValue = 0.0; - - ServiceTaxValue = <?php echo SERVICETAX_HIGHEREDUCESS_1PERCENT; ?>; - - var TAXval = parseFloat(ServiceTaxValue).toFixed(2); - - return TAXval;//$('#AfterSecHighTax').val(TAXval); - } - function calculateKrishiKalyantax(varBasicValue) - { - var basicValue = parseFloat(varBasicValue); - - var ServiceTaxValue = 0.0; - - ServiceTaxValue = <?php echo SERVICETAX_KRISHIKALYAN; ?>; - - var TAXval = parseFloat(ServiceTaxValue).toFixed(2); - - return TAXval;//$('#AfterKrishiTax').val(TAXval); - } - function calculateSwachhBharattax(varBasicValue) - { - var basicValue = parseFloat(varBasicValue); - - var ServiceTaxValue = 0.0; - - ServiceTaxValue = <?php echo SERVICETAX_SWACHHBHARAT; ?>; - - var TAXval = parseFloat(ServiceTaxValue).toFixed(2); - - return TAXval; //$('#AfterSwachhTax').val(TAXval); - } - - function calculateTotalOrdervalue() - { - var basicValue = parseFloat($('#txtBasicValue').val()); - var ServiceTaxAmount = parseFloat($('#AfterServiceTax').val()); - var EduCessTaxAmount = parseFloat($('#AfterEduCess').val()); - var SecHighTaxAmount = parseFloat($('#AfterSecHighTax').val()); - var KrishiTaxAmount = parseFloat($('#AfterKrishiTax').val()); - var SwachhTaxAmount = parseFloat($('#AfterSwachhTax').val()); - - var TotAmt = basicValue + ServiceTaxAmount+ EduCessTaxAmount + SecHighTaxAmount+ KrishiTaxAmount + SwachhTaxAmount; - - $('#TotalOrderValue').val( parseFloat(TotAmt).toFixed(2)); - - } - function calculateTotalEditOrdervalue() - { - var basicValue = parseFloat($('#txtEditBasicValue').val()); - var ServiceTaxAmount = parseFloat($('#EditAfterServiceTax').val()); - var EduCessTaxAmount = parseFloat($('#EditAfterEduCess').val()); - var SecHighTaxAmount = parseFloat($('#EditAfterSecHighTax').val()); - var KrishiTaxAmount = parseFloat($('#EditAfterKrishiTax').val()); - var SwachhTaxAmount = parseFloat($('#EditAfterSwachhTax').val()); - - var TotAmt = basicValue + ServiceTaxAmount+ EduCessTaxAmount + SecHighTaxAmount+ KrishiTaxAmount + SwachhTaxAmount; - - $('#EditTotalOrderValue').val( parseFloat(TotAmt).toFixed(2)); - - } - - function calculateTaxValue() - { - var ServiceTaxAmount = parseFloat($('#AfterServiceTax').val()); - var EduCessTaxAmount = parseFloat($('#AfterEduCess').val()); - var SecHighTaxAmount = parseFloat($('#AfterSecHighTax').val()); - var KrishiTaxAmount = parseFloat($('#AfterKrishiTax').val()); - var SwachhTaxAmount = parseFloat($('#AfterSwachhTax').val()); - - var TottaxAmt = ServiceTaxAmount+ EduCessTaxAmount + SecHighTaxAmount+ KrishiTaxAmount + SwachhTaxAmount; - return parseFloat(TottaxAmt.toFixed(2)); - } - -function clearTaxField() -{ - $('#txtBasicValue').val(''); - $('#AfterServiceTax').val(''); - $('#AfterEduCess').val(''); - $('#AfterSecHighTax').val(''); - $('#AfterKrishiTax').val(''); - $('#AfterSwachhTax').val(''); - $('#TotalOrderValue ').val(''); - $('#Rate').val(''); - - $("#ItemName").val(''); - $("#UOM").val(''); - $("#Quantity").val(''); - RequistQuantity = ''; - -} -function clearEditTaxField() -{ - $('#txtEditBasicValue').val(''); - $('#EditAfterEduCess').val(''); - $('#EditAfterSecHighTax').val(''); - $('#EditAfterServiceTax').val(''); - $('#EditAfterKrishiTax').val(''); - $('#EditAfterSwachhTax').val(''); - $('#EditTotalOrderValue ').val(''); - $('#EditRate').val(''); - - $("#EditItemName").val(''); - $("#EditUOM").val(''); - $("#EditQuantity").val(''); - RequistQuantity = ''; - -} -$(document).ready(function () { - $('#Date').click(function () { - //for Date range selection - $('#Schedulediv').hide(); - $('#Deliverydtdiv').show(); - }); - $('#Schedule').click(function () { - //for schedule range selection - $('#Deliverydtdiv').hide(); - $('#Schedulediv').show(); - }); - }); -</script> -<style> -.modal -{ - padding-right:25% ! important; -} -.dataTables_paginate -{ - margin-top: -5%; -} -.dataTables_wrapper { - padding-bottom: 0px; -} -</style> -<div class="content-wrapper"> - <?php - $attributes = array('class' => 'form-label-left ServicePO ','name' => 'ServicePO','id' => 'ServicePO'); - - echo form_open($this->config->base_url().'/purchaseorder/addPO/',$attributes); ?> - - <section class="content" > - <div style="border:2px solid #333"> - <div id="content"></div> - <div> - <center><b><h2>Siddharth Industries - Service Purchase Order</h2></b></center></div> - <div class="container-fluid"> - - <div class="row"> - <div class="col-md-12"> - <div class="col-md-3"> - <div class="col-md-12"> - <label>Requistion No</label> - - - <?php - - $options = array("0"=>'Selected Requisition Numbers'); - if(!empty($ReqList)) - { - foreach ($ReqList as $SID): - - // print_r($SID->ReqNo); - $options[$SID->ReqNo] = $SID->ReqNo ."-". $SID->ReqBy; - $ReqType = $SID->ReqType; - endforeach; - } - echo form_multiselect('RequistionNo', $options,set_value('RequistionNo'),'id="RequistionNo"' , 'required="true"'); - - ?> - </div> - <div class="col-md-12"> - <label>Purchase Order Date</label> - <div class="form-group"> - <?php - $data = array('name' => 'PODate','value' => set_value('PODate',$CurrentDate),'id'=>'PODate', 'class' => 'form-control' ,'required' => 'true', 'onkeypress'=>'return false;'); - echo form_input($data); - ?> - </div> - </div> - - </div> - <div class="col-md-9"> - <div class="col-md-4"> - <div class="col-md-12"> - <label>Supplier</label> - - <?php - $options = array("0"=>'Select Supplier'); - //print_r( $options); - - if(!empty($Suplist)) - { - foreach ($Suplist as $SID): - - - $options[$SID->SupplierID] = $SID->SupplierID.' '.' - '.' '.$SID->SupplierName; - - endforeach; - } - - echo form_dropdown('drpSupplier', $options,set_value('drpSupplier'),'id="drpSupplier"' ,'required="true"' ,'class="form-control select2'); - - ?> - - </div> - <div class="col-md-12"><br/> - <label>Address</label> - <div class="form-group"> - <?php - $data = array('name' => 'SupAddress','value' => set_value('SupAddress'),'id'=>'SupAddress', 'class' => 'form-control' ,'readonly' => 'true','rows' => '3', 'cols' => '40'); - echo Form_textarea($data); - ?> - </div> - </div> - </div> - <div class="col-md-4"> - <div class="col-md-12"> - <label>Purchase Order Type</label> - <div class="form-group"> - - <?php - $data = array('name' => 'POType','value' => set_value('POType',SERVICE),'id'=>'POType', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-12"> - <label>Delivery Address</label> - <div class="form-group"> - <?php - $data = array('name' => 'DeliveryAddr','value' => set_value('DeliveryAddr',$CompanyAddress),'id'=>'DeliveryAddr', 'class' => 'form-control' ,'required' => 'true', 'rows' => '3', 'cols' => '40'); - echo Form_textarea($data); - ?> - </div> - </div> - </div> - <div class="col-md-4"> - <div class="col-md-12"> - <b><u>Select Delivery By</u></b><br/> - <tr> - <td> - <?php echo form_label('Date', 'Date') ."&nbsp;&nbsp;". form_radio(array("name"=>"DateRange", "id"=>"Date", "value"=>"0", 'checked'=>set_radio('DateRange', '0', TRUE))); ?>&nbsp;&nbsp;&nbsp;&nbsp;</td> - <td> - <?php echo form_label('Schedule', 'Schedule') ."&nbsp;&nbsp;". form_radio(array("name"=>"DateRange", "id"=>"Schedule", "value"=>"1", 'checked'=>set_radio('DateRange', '1', FALSE))); ?> - - </td> - </tr> - </div> - <div class="col-md-12" id="Deliverydtdiv"><br/> - <label>Delivery Date</label> - <div class="form-group"> - <?php - $data = array('name' => 'Deliverydt','value' => set_value('Deliverydt',$CurrentDate),'id'=>'Deliverydt', 'class' => 'form-control' ,'required' => 'true', 'onkeypress'=>'return false;'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-12" id="Schedulediv" style="display:none;"><br/> - <label >Schedule :</label> - <?php - $data = array('name' => 'Scheduleby','value' => set_value('Scheduleby'),'id'=>'Scheduleby', 'class' => 'form-control' ,'required' => 'true' ,'rows' => '3', 'cols' => '40'); - echo Form_textarea($data); - ?> - - </div> - </div> - - </div> - </div> - </div> - - <div class="container-fluid"> - <table class="table table-bordered" style="border:1px solid #333" id="ServiceTable"> - <div style="padding-right:10px"> -<div align="right"> - <a data-toggle="modal" ><button type="submit" onclick="myFunction();" class="btn btn-primary" id="abcd" >Select Line Item</button> </a> - - - -<!-- Model for servicepo --> - <div class="modal fade" id="SERVICE" role="dialog"> - <div class="modal-dialog"> - <!-- Modal content--> - <form> - <div class="modal-content" style="width:900px;"> - <div class="modal-header" style="background-color: #3c8dbc;color:#fff;"> - <center><h4>Add Service Purchase Order Item </h4></center> - </div> - <div align="left"> - - <div class="col-md-12"> - <div class="col-md-3"> - <label>Req No</label> - <div> - <?php - $RL = array("0"=>'Select Req No'); - if(!empty($RequistionDetails)) - { - foreach ($RequistionDetails as $SID): - $RL[$SID->ReqNo] = $SID->ReqNo.' '.' - '.' '.$SID->DepartmentName; - endforeach; - } - - echo form_dropdown('ReqNo', $RL,set_value('ReqNo'),'id="ReqNo"' ,'class="form-control"'); - - ?> - </div> - </div> - - <div class="col-md-3"> - <label>Department Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'deptName','value' => set_value('deptName'),'id'=>'deptName', 'class' => 'form-control'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-3"> - <label>Cost Center Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'CostCenter','value' => set_value('CostCenter'),'id'=>'CostCenter', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - - ?> - </div> - </div> - <div class="col-md-3"> - <label>Available Budget Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'AvlBudAmt','value' => set_value('AvlBudAmt'),'id'=>'AvlBudAmt', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-2"> - <label>Item Code</label> - <div> - <?php - $options = array("0"=>'Item Code'); - //print_r( $options); - - - - echo form_dropdown('MaterialCode', $options,set_value('MaterialCode'),'id="MaterialCode"' ,'class="form-control"'); - - ?> - </div> - </div> - - <div class="col-md-2"> - <label>Item Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'ItemName','value' => set_value('ItemName'),'id'=>'ItemName', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>UOM</label> - <div class="form-group"> - <?php - $data = array('name' => 'UOM','value' => set_value('UOM'),'id'=>'UOM', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Quantity</label> - <div class="form-group"> - <?php - $data = array('name' => 'Quantity','value' => set_value('Quantity'),'id'=>'Quantity', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'Ratechange()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Rate</label> - <div class="form-group"> - <?php - $data = array('name' => 'Rate','value' => set_value('Rate'),'id'=>'Rate', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);' ,'onchange'=>'Ratechange()' ); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Basic Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtBasicValue','value' => set_value('txtBasicValue'),'id'=>'txtBasicValue', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12" style="border:1px solid"> - <br/> - <div class="col-md-12"> - <div class="col-md-5 col-md-offset-4" align="right"> - - Service Tax @14% : - </div> - - <div class="col-md-3"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterServiceTax','value' => set_value('AfterServiceTax'),'id'=>'AfterServiceTax', 'class' => 'form-control' ,'placeholder' => 'After Service Tax','readonly' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - - </div> - <div class="col-md-12"> - <div class="col-md-5 col-md-offset-4" align="right"> - Edu. cess @2% on service Tax : - - </div> - - <div class="col-md-3"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterEduCess','value' => set_value('AfterEduCess'),'id'=>'AfterEduCess', 'class' => 'form-control' ,'placeholder' => 'After Edu.','readonly' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - - </div> - <div class="col-md-12"> - - <div class="col-md-5 col-md-offset-4" align="right"> - Sec. & Higher Edu. cess @1 % on service Tax : - - </div> - - <div class="col-md-3"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterSecHighTax','value' => set_value('AfterSecHighTax'),'id'=>'AfterSecHighTax', 'class' => 'form-control' ,'placeholder' => 'After High Edu.','readonly' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - </div> - <div class="col-md-12"> - - <div class="col-md-5 col-md-offset-4" align="right"> - Krishi Kalyan tax @.5 % on Basic Amount: - - </div> - - <div class="col-md-3"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterKrishiTax','value' => set_value('AfterKrishiTax'),'id'=>'AfterKrishiTax', 'class' => 'form-control' ,'placeholder' => 'After Krishi Kalyan tax.','readonly' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - </div> - <div class="col-md-12"> - - <div class="col-md-5 col-md-offset-4" align="right"> - Swachh Bharat tax @.5 % on Basic Amount: - - </div> - - <div class="col-md-3"> - <div class="form-group"> - <?php - $data = array('name' => 'AfterSwachhTax','value' => set_value('AfterSwachhTax'),'id'=>'AfterSwachhTax', 'class' => 'form-control' ,'placeholder' => 'After High Edu.','readonly' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - </div> - - <div class="col-md-12"> - <div class="col-md-5 col-md-offset-4" align="right"> - Total Order value : - </div> - <div class="col-md-3"> - <div class="form-group"> - <?php - $data = array('name' => 'TotalOrderValue','value' => set_value('TotalOrderValue'),'id'=>'TotalOrderValue', 'class' => 'form-control' ,'placeholder' => 'Total value','readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - - </div> - - - <br/> - <br/> - <div class="modal-footer"> - <a class="btn btn-primary font AddService" ID="AddService" ><i class="fa fa-plus"></i>&nbsp;&nbsp;<span class="bold">Add Service</span></a> - <a class="btn btn-primary" data-dismiss="modal" value="Cancel">Cancel</a> - - </div> - </div> - </form> - - </div> - </div> - </div> - <!-- Edit Modal content--> - <div class="modal fade" id="EDITSERVICE" role="dialog"> - <div class="modal-dialog"> - <!-- Modal content--> - <form> - <div class="modal-content" style="width:900px;"> - <div class="modal-header" style="background-color: #3c8dbc;color:#fff;"> - <button type="button" class="close" data-dismiss="modal">&times;</button> - <center><h4>Edit Service Purchase Order Item </h4></center> - </div> - <div align="left"> - - <div class="col-md-12"> - <div class="col-md-3"> - <label>Req No</label> - <div> - <?php - - $data = array('name' => 'EditReqNo','value' => set_value('EditReqNo'),'id'=>'EditReqNo', 'class' => 'form-control','readonly'=>'true'); - echo form_input($data); - ?> - - </div> - </div> - - <div class="col-md-3"> - <label>Department Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditdeptName','value' => set_value('EditdeptName'),'id'=>'EditdeptName', 'class' => 'form-control','readonly'=>'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-3"> - <label>Cost Center Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditCostCenter','value' => set_value('EditCostCenter'),'id'=>'EditCostCenter', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - - ?> - </div> - </div> - <div class="col-md-3"> - <label>Available Budget Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditAvlBudAmt','value' => set_value('EditAvlBudAmt'),'id'=>'EditAvlBudAmt', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-2"> - <label>Item Code</label> - <div> - <?php - $options = array("0"=>'Item Code'); - //print_r( $options); - - echo form_dropdown('EditMaterialCode', $options,set_value('EditMaterialCode'),'id="EditMaterialCode"' ,'class="form-control"'); - - ?> - </div> - </div> - - <div class="col-md-2"> - <label>Item Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditItemName','value' => set_value('EditItemName'),'id'=>'EditItemName', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>UOM</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditUOM','value' => set_value('EditUOM'),'id'=>'EditUOM', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Quantity</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditQuantity','value' => set_value('EditQuantity'),'id'=>'EditQuantity', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);','onchange'=>'EditRatechange()'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Rate</label> - <div class="form-group"> - <?php - $data = array('name' => 'EditRate','value' => set_value('EditRate'),'id'=>'EditRate', 'class' => 'form-control' ,'onkeypress'=>'return isNumberKey(event);' ,'onchange'=>'EditRatechange()' ); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Basic Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'txtEditBasicValue','value' => set_value('txtEditBasicValue'),'id'=>'txtEditBasicValue', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12" style="border:1px solid"> - <br/> - <div class="col-md-12"> - <div class="col-md-5 col-md-offset-4" align="right"> - - Service Tax @14% : - </div> - - <div class="col-md-3"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAfterServiceTax','value' => set_value('EditAfterServiceTax'),'id'=>'EditAfterServiceTax', 'class' => 'form-control','readonly' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - - </div> - <div class="col-md-12"> - <div class="col-md-5 col-md-offset-4" align="right"> - Edu. cess @2% on service Tax : - - </div> - - <div class="col-md-3"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAfterEduCess','value' => set_value('EditAfterEduCess'),'id'=>'EditAfterEduCess', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - - </div> - <div class="col-md-12"> - - <div class="col-md-5 col-md-offset-4" align="right"> - Sec. & Higher Edu. cess @1 % on service Tax : - - </div> - - <div class="col-md-3"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAfterSecHighTax','value' => set_value('EditAfterSecHighTax'),'id'=>'EditAfterSecHighTax', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - </div> - <div class="col-md-12"> - - <div class="col-md-5 col-md-offset-4" align="right"> - Krishi Kalyan tax @.5 % on Basic Amount: - - </div> - - <div class="col-md-3"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAfterKrishiTax','value' => set_value('EditAfterKrishiTax'),'id'=>'EditAfterKrishiTax', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - </div> - <div class="col-md-12"> - - <div class="col-md-5 col-md-offset-4" align="right"> - Swachh Bharat tax @.5 % on Basic Amount: - - </div> - - <div class="col-md-3"> - <div class="form-group"> - <?php - $data = array('name' => 'EditAfterSwachhTax','value' => set_value('EditAfterSwachhTax'),'id'=>'EditAfterSwachhTax', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - </div> - - <div class="col-md-12"> - <div class="col-md-5 col-md-offset-4" align="right"> - Total Order value : - </div> - <div class="col-md-3"> - <div class="form-group"> - <?php - $data = array('name' => 'EditTotalOrderValue','value' => set_value('EditTotalOrderValue'),'id'=>'EditTotalOrderValue', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - - </div> - - - <br/> - <br/> - <div class="modal-footer"> - <a class="btn btn-primary font EditService" ID="Edit" style="margin-top: -24px;">&nbsp;&nbsp;<span class="bold">Update Service</span></a> - <a class="btn btn-primary" data-dismiss="modal" style="margin-top: -24px;" value="Cancel">Cancel</a> - - </div> - </div> - </form> - - </div> - </div> - </div> - -</div> - - <br/> - - <div class="box-body" style="margin-top: -8%;"> - <table id="serviceTax" class="table table-bordered table-hover" style="background-color:#fff;font-size:12px;"> - <thead style="background-color:#ddf"> - <tr> - <th>SNo</th> - <th>Requisition No</th> - <th>Item Name</th> - <th>Quantity</th> - <th>UOM</th> - <th>Rate</th> - <th>Basic Amount</th> - <th>Tax Amount</th> - <th>Total Order Amount</th> - <th>Action</th> - </tr> - </thead> - - <tbody id='ServiceAppend'> - - </tbody> - </table> - </div> - - </table> - <div class="row" style="border: 1px solid"> - <div class="col-md-12"> - <div class="col-md-4"> - <label>Basic Amount :</label> - <?php - $data = array('name' => 'txtTotBasicAmount','value' => set_value('txtTotBasicAmount'),'id'=>'txtTotBasicAmount', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - <div class="col-md-4"> - <label>Total Service Tax @14% :</label> - <?php - $data = array('name' => 'txtTotalServiceTax','value' => set_value('txtTotalServiceTax'),'id'=>'txtTotalServiceTax', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - <div class="col-md-4"> - <label >Total Edu. cess @2% on service Tax :</label> - <?php - $data = array('name' => 'txtTotalEducess','value' => set_value('txtTotalEducess'),'id'=>'txtTotalEducess', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - <label >Total Sec. & Higher Edu. cess @1 % on service Tax :</label> - <?php - $data = array('name' => 'txtTotHigherEdu','value' => set_value('txtTotHigherEdu'),'id'=>'txtTotHigherEdu', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - <div class="col-md-4"> - <label >Total Krishi Kalyan tax @.5 % on Basic Amount :</label> - <?php - $data = array('name' => 'txtTotalKrishiKalyan','value' => set_value('txtTotalKrishiKalyan'),'id'=>'txtTotalKrishiKalyan', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - <div class="col-md-4"> - <label >Total Swachh Bharat tax @.5 % on Basic Amount:</label> - <?php - $data = array('name' => 'txtTotSwachhBharat','value' => set_value('txtTotSwachhBharat'),'id'=>'txtTotSwachhBharat', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-6 col-md-offset-6"> - <br/> - <div class="col-md-6" align="right"> <label >Total Order Value :</label></div> - <div class="col-md-6"> - <?php - $data = array('name' => 'txtTotalOrderValueSummary','value' => set_value('txtTotalOrderValueSummary'),'id'=>'txtTotalOrderValueSummary', 'class' => 'form-control' ,'readonly' => 'true'); - echo form_input($data); - ?> - - </div> - </div> - <div class="col-md-12"> - <div class="col-md-12"> - <label>Comments Of Special Instructions :</label> <?php - $data = array('name' => 'txtSpcialInstruction','value' => set_value('txtSpcialInstruction'),'id'=>'txtSpcialInstruction', 'class' => 'form-control' ,'rows' => '4', 'cols' => '40' ); - echo form_textarea($data); ?> - </div> - </div> - <div class="col-md-12"> - <div class="row"> - <br/> - <div align="right" style="padding-right:10px"> - <input type="hidden" name="txtStatus" id="txtStatus" /> - <input type="hidden" name="txtRowCount" id="txtRowCount" /> - <input type="hidden" name="txtDeletedRow" id="txtDeletedRow" /> - <input type="hidden" name="SpcialInstruction" id="SpcialInstruction" > - <input type="hidden" name="txtDeliveryAddress" id="txtDeliveryAddress" > - <a class="btn btn-primary Save" ID="Save"onclick="Save(0)" >&nbsp;&nbsp;<span class="bold">Save</span></a> - <a class="btn btn-primary Submit" ID="Submit"onclick="Save(1)" >&nbsp;&nbsp;<span class="bold">Submit</span></a> - <input type="reset" class="btn btn-primary"> - </div><br/> - </div> - </div> - <br/> - </div><br/> - </div> - -</div> -</div> -</div> -</section> -</div> -<script type="text/html" id="ServiceList"> -<tr id="<%=index%>"> -<td align="left"><%=index%></td> - <td align="left"><%=ReqNo%></td> - - <td align="left"><%=MaterialName%></td> - <td align="left"><%=Quantity%></td> - <td align="left"><%=UOM%></td> - <td align="left"><%=Rate%></td> - <td align="left"><%=BasicAmount%></td> - <td align="left"><%=Taxvalue%></td> - <td align="left"><%=TotalValue%></td> - - <td> - <a data-target='#EDITSERVICE' data-id="<%=index%>" data-userid="<%=index%>" data-toggle="modal" href="#EDITSERVICE"><i class="fa fa-pencil" data-toggle="tooltip" title="Click here to view/Edit the <%=ReqNo%> Requisition details"></i>&nbsp;&nbsp;&nbsp;</a> <a href='#' onclick = "DeleteRow(<%=index%>)" class="link" data-id="<%=index%>" data-userid="<%=index%>" id="Del" ><span class="glyphicon glyphicon-trash"></span></a> - - - </td> -</tr> -</script> -<script> -var index = '1'; -var userid = ''; -$("#EDITSERVICE").on("shown.bs.modal", function(e) { - userid = $(e.relatedTarget).data('userid'); - // alert(userid); - var tr= document.getElementById(userid); - var cellval = tr.cells; - var id= $('#Reqnumber'+userid).val(); - - $('#EditReqNo').val($('#Reqnumber'+userid).val()); - $('#EditdeptName').val($('#departmentName'+userid).val()); - $("#EditCostCenter").val($('#costCode'+userid).val()); - $('#EditAvlBudAmt').val($('#AvilBudget'+userid).val()); - - $('#EditItemName').val($('#materialName'+userid).val()); - $('#EditUOM').val($('#uom'+userid).val()); - $('#EditQuantity').val($('#quantity'+userid).val()); - RequistQuantity = $('#quantity'+userid).val(); - $('#EditRate').val($('#itemRate'+userid).val()); - $('#txtEditBasicValue').val(cellval[6].innerHTML); - $('#EditAfterServiceTax').val($('#ServiceTax'+userid).val()); - $('#EditAfterEduCess').val($('#EduCess'+userid).val()); - $('#EditAfterSecHighTax').val($('#SecHighTax'+userid).val()); - $('#EditAfterKrishiTax').val($('#KrishiTax'+userid).val()); - $('#EditAfterSwachhTax').val($('#SwachhTax'+userid).val()); - $('#EditTotalOrderValue').val(cellval[8].innerHTML); - - - - $("#EditMaterialCode").empty(); - var Material = <?php echo json_encode($MaterialList, JSON_PRETTY_PRINT) ?>; - // For Binding Material list center for the selected Requistion Number - $("#EditMaterialCode").append( $('<option></option>').val($('#materialCode'+userid).val()).html($('#materialCode'+userid).val() + "-" + $('#materialName'+userid).val() ) ); - var isAdded = "0"; - for(i=0;i<Material.length;i++) - { - $.each(Material[i], function(idx, obj) { - - if(obj.ReqNo === id ) - { - - $.each(SelectedMaterialList.Mat, function(idx1, el){ - if (id == el.ReqNo ) - { - - if(el.materialCode == obj.MaterialCode) - { - - isAdded = "1"; - return false; - } - else - { - isAdded = "0"; - } - - } - - - }); - - - if(isAdded == "0") - { - - $("#EditMaterialCode").append( $('<option></option>').val(obj.MaterialCode).html(obj.MaterialCode + "-" + obj.MaterialName)); - } - - } - - - }); - } - -}); - -$('.AddService').click(function(){ - - - if(validateServiceTax()) - { - // alert('inside Addservice'); - var temp = index; - var Reqnumber = $('#ReqNo').val(); - var departmentName = $('#deptName').val(); - var AvilBudget = $('#AvlBudAmt').val(); - var costCode = $('#CostCenter').val(); - var materialCode =$('#MaterialCode').val(); - var materialName = $("#ItemName").val(); - var uom = $("#UOM").val(); - var quantity = $("#Quantity").val(); - RequistQuantity = $('#quantity'+userid).val(); - var itemRate = $("#Rate").val(); - - - var AfterServiceTax = $("#AfterServiceTax").val(); - - - var AfterEduCess = $("#AfterEduCess").val(); - - - var AfterSecHighTax = $("#AfterSecHighTax").val(); - - - var AfterKrishiTax = $("#AfterKrishiTax").val(); - - - var AfterSwachhTax = $("#AfterSwachhTax").val(); - - var TotalOrderValue = $("#TotalOrderValue ").val(); - - - var basicval = $("#txtBasicValue").val(); - - - var TotalTaxValue = calculateTaxValue(); - - $('#MaterialCode option[value='+materialCode+']').remove(); - - SelectedMaterialCode[CollIndex] = materialCode; - CollIndex = CollIndex + 1; - - SelectedMaterialList.Mat.push({ - "materialCode" : materialCode, - "ReqNo" : Reqnumber, - - }); - - populateValueMainFormForServiceTax(); - - - index = parseInt(index)+1; - - var template = jQuery("#ServiceList").html(); - - - $('#ServiceAppend').append(_.template(template,{index:temp,ReqNo:Reqnumber,MaterialName:materialName,Quantity:quantity,UOM:uom,Rate:itemRate,BasicAmount:basicval,Taxvalue:TotalTaxValue,TotalValue:TotalOrderValue})); - - - - var theForm = $(".ServicePO"); - - addHidden(theForm,"Reqnumber"+temp,Reqnumber ); - addHidden(theForm,"departmentName"+temp,departmentName ); - addHidden(theForm,"AvilBudget"+temp,AvilBudget ); - addHidden(theForm,"costCode"+temp,costCode ); - addHidden(theForm,"materialCode"+temp,materialCode ); - addHidden(theForm,"materialName"+temp,materialName ); - addHidden(theForm,"uom"+temp,uom); - addHidden(theForm,"quantity"+temp,quantity); - addHidden(theForm,"itemRate"+temp,itemRate); - - addHidden(theForm,"ServiceTax"+temp,AfterServiceTax); - addHidden(theForm,"EduCess"+temp,AfterEduCess); - addHidden(theForm,"SecHighTax"+temp,AfterSecHighTax); - addHidden(theForm,"KrishiTax"+temp,AfterKrishiTax); - addHidden(theForm,"SwachhTax"+temp,AfterSwachhTax); - - addHidden(theForm,"TotalOrderValue"+temp,TotalOrderValue); - - $('#txtRowCount').val(temp); - clearServiceModalFields(); - - } - - }); - - $('.EditService').click(function(){ - - - if( validateEditServiceTax()) - { - //alert('inside Add'); - var CostCode = $("#EditCostCenter").val(); - var AvilBudget = $('#EditAvlBudAmt').val(); - var editMaterialCode = $("#EditMaterialCode").val(); - var editDescription = $("#EditItemName").val(); - var editUOM = $('#EditUOM').val(); - var editQuantity = $('#EditQuantity').val(); - - var itemRate = $("#EditRate").val(); - - - var AfterServiceTax = $("#EditAfterServiceTax").val(); - - - var AfterEduCess = $("#EditAfterEduCess").val(); - - - var AfterSecHighTax = $("#EditAfterSecHighTax").val(); - - - var AfterKrishiTax = $("#EditAfterKrishiTax").val(); - - - var AfterSwachhTax = $("#EditAfterSwachhTax").val(); - - var TotalOrderValue = $("#EditTotalOrderValue ").val(); - - - var basicval = $("#txtEditBasicValue").val(); - - var TotalTaxValue = calculateEditTaxValue(); - - - - var tr= document.getElementById(userid); - var cellval = tr.cells; - - cellval[2].innerHTML = editDescription; - cellval[3].innerHTML = editQuantity; - cellval[4].innerHTML =editUOM; - cellval[5].innerHTML =itemRate; - cellval[6].innerHTML =basicval; - cellval[7].innerHTML =TotalTaxValue; - cellval[8].innerHTML =TotalOrderValue; - - - $('#materialCode'+userid).val(editMaterialCode); - $('#materialName'+userid).val(editDescription); - $('#uom'+userid).val(editUOM); - $('#quantity'+userid).val(editQuantity); - $('#itemRate'+userid).val(itemRate); - $('#ServiceTax'+userid).val(AfterServiceTax); - $('#EduCess'+userid).val(AfterEduCess); - $('#SecHighTax'+userid).val(AfterSecHighTax); - $('#KrishiTax'+userid).val(AfterKrishiTax); - $('#SwachhTax'+userid).val(AfterSwachhTax); - $('#TotalOrderValue'+userid).val(TotalOrderValue); - - populateValueMainFormForEditServiceTax(); - - } - - }); - function addHidden(theForm, key, value) { - // Create a hidden input element, and append it to the form: - var input = document.createElement('input'); - input.type = 'hidden'; - input.name = key;'name-as-seen-at-the-server'; - input.id = key;'name-as-seen-at-the-server'; - input.value = value; - theForm.append(input); -} - -function populateValueMainFormForServiceTax() -{ - var AfterServiceTax = $('#AfterServiceTax').val() == '' ? '0.00' : $('#AfterServiceTax').val(); - var AfterEduCess = $('#AfterEduCess').val() == '' ? '0.00' : $('#AfterEduCess').val(); - var AfterSecHighTax = $('#AfterSecHighTax').val() == '' ? '0.00' : $('#AfterSecHighTax').val(); - var AfterKrishiTax = $('#AfterKrishiTax').val() == '' ? '0.00' : $('#AfterKrishiTax').val(); - var AfterSwachhTax = $('#AfterSwachhTax').val() == '' ? '0.00' : $('#AfterSwachhTax').val(); - var TotalVal = $('#TotalOrderValue ').val() == '' ? '0.00' : $('#TotalOrderValue').val(); - - var BasicVal = $('#txtBasicValue').val() == '' ? '0.00' : $('#txtBasicValue').val(); - - - var TotalOrderValueSummary = $('#txtTotalOrderValueSummary').val() == '' ? '0.00' : $('#txtTotalOrderValueSummary').val(); - - var totBasicAmt = $('#txtTotBasicAmount').val() == '' ? '0.00' : $('#txtTotBasicAmount').val(); - var TotalServiceTax = $('#txtTotalServiceTax').val() == '' ? '0.00' : $('#txtTotalServiceTax').val(); - var TotHigherEdu = $('#txtTotHigherEdu').val() == '' ? '0.00' : $('#txtTotHigherEdu').val(); - var TotalEducess = $('#txtTotalEducess').val() == '' ? '0.00' : $('#txtTotalEducess').val(); - var TotalKrishiKalyan = $('#txtTotalKrishiKalyan').val() == '' ? '0.00' : $('#txtTotalKrishiKalyan').val(); - var TotSwachhBharat = $('#txtTotSwachhBharat').val() == '' ? '0.00' : $('#txtTotSwachhBharat').val(); - - - $('#txtTotBasicAmount').val((parseFloat(totBasicAmt) + parseFloat(BasicVal)).toFixed(2) ); - $('#txtTotalServiceTax').val((parseFloat(TotalServiceTax) + parseFloat(AfterServiceTax)).toFixed(2) ); - $('#txtTotHigherEdu').val((parseFloat(TotHigherEdu) + parseFloat(AfterSecHighTax)).toFixed(2) ); - $('#txtTotalEducess').val((parseFloat(TotalEducess) + parseFloat(AfterEduCess)).toFixed(2) ); - $('#txtTotalKrishiKalyan').val((parseFloat(TotalKrishiKalyan) + parseFloat(AfterKrishiTax)).toFixed(2) ); - $('#txtTotSwachhBharat').val((parseFloat(TotSwachhBharat) + parseFloat(AfterSwachhTax)).toFixed(2) ); - $('#txtTotalOrderValueSummary').val((parseFloat(TotalOrderValueSummary) + parseFloat(TotalVal)).toFixed(2) ); - -} -function populateValueMainFormForEditServiceTax() -{ - - var rows = document.getElementById('serviceTax').rows.length; - - var TotServiceTax = 0; - var TotEduCess = 0; - var TotSecHighTax = 0; - var TotKrishiTax = 0; - var TotSwachhTax = 0; - var TotSummary = 0; - var TotBasicAmout = 0; - var i = 0; - do { - i += 1; - var tr= document.getElementById(i); - //alert(tr); - if(tr != null) - { - cells = tr.getElementsByTagName('td'); - - - var rowid = cells[0].innerHTML; - - var AfterServiceTax = $('#ServiceTax'+rowid).val() == '' ? '0.00' : $('#ServiceTax'+rowid).val(); - var AfterEduCess = $('#EduCess'+rowid).val() == '' ? '0.00' : $('#EduCess'+rowid).val(); - var AfterSecHighTax = $('#SecHighTax'+rowid).val() == '' ? '0.00' : $('#SecHighTax'+rowid).val(); - var AfterKrishiTax =$('#KrishiTax'+rowid).val() == '' ? '0.00' : $('#KrishiTax'+rowid).val(); - var AfterSwachhTax = $('#SwachhTax'+rowid).val() == '' ? '0.00' : $('#SwachhTax'+rowid).val(); - var TotalVal =$('#TotalOrderValue'+rowid).val() == '' ? '0.00' : $('#TotalOrderValue'+rowid).val(); - - var Quantity = $('#quantity'+rowid).val() == '' ? '0.00' : $('#quantity'+rowid).val(); - var ItemRate = $('#itemRate'+rowid).val() == '' ? '0.00' : $('#itemRate'+rowid).val(); - var BasicVal = parseFloat(Quantity) * parseFloat(ItemRate); - - TotServiceTax = parseFloat(TotServiceTax) + parseFloat(AfterServiceTax); - TotEduCess = parseFloat(TotEduCess) + parseFloat(AfterEduCess); - TotSecHighTax = parseFloat(TotSecHighTax) + parseFloat(AfterSecHighTax); - TotKrishiTax = parseFloat(TotKrishiTax) + parseFloat(AfterKrishiTax); - TotSwachhTax = parseFloat(TotSwachhTax) + parseFloat(AfterSwachhTax); - TotSummary = parseFloat(TotSummary) + parseFloat(TotalVal); - TotBasicAmout = parseFloat(TotBasicAmout) + parseFloat(BasicVal); - - } - - - } while (i < rows); - - $('#txtTotBasicAmount').val(parseFloat(TotBasicAmout).toFixed(2) ); - $('#txtTotalServiceTax').val(parseFloat(TotServiceTax).toFixed(2) ); - $('#txtTotHigherEdu').val(parseFloat(TotSecHighTax).toFixed(2) ); - $('#txtTotalEducess').val(parseFloat(TotEduCess).toFixed(2) ); - $('#txtTotalKrishiKalyan').val(parseFloat(TotKrishiTax).toFixed(2) ); - $('#txtTotSwachhBharat').val(parseFloat(TotSwachhTax).toFixed(2) ); - $('#txtTotalOrderValueSummary').val(parseFloat(TotSummary).toFixed(2) ); - -} -function calculateEditTaxValue() - { - var ServiceTaxAmount = parseFloat($('#EditAfterServiceTax').val()); - var EduCessTaxAmount = parseFloat($('#EditAfterEduCess').val()); - var SecHighTaxAmount = parseFloat($('#EditAfterSecHighTax').val()); - var KrishiTaxAmount = parseFloat($('#EditAfterKrishiTax').val()); - var SwachhTaxAmount = parseFloat($('#EditAfterSwachhTax').val()); - - var TottaxAmt = ServiceTaxAmount+ EduCessTaxAmount + SecHighTaxAmount+ KrishiTaxAmount + SwachhTaxAmount; - return parseFloat(TottaxAmt.toFixed(2)); - } -function clearServiceModalFields() -{ - // To reset the Modal controls - $('#ReqNo').val('0'); - $('#deptName').val(''); - $('#CostCenter').val("0"); - $('#AvlBudAmt').val(''); - $('#MaterialCode').val("0") ; - $("#ItemName").val(''); - $('#UOM').val(''); - $('#Quantity').val(''); - $("#Rate").val(''); - - $("#txtBasicValue").val(''); - $("#AfterServiceTax").val(''); - $("#AfterEduCess").val(''); - $("#AfterSecHighTax").val(''); - $("#AfterKrishiTax").val(''); - $("#AfterSwachhTax").val(''); - $("#TotalOrderValue ").val(''); -} - -function DeleteRow(rowid) -{ - var DelRows = $('#txtDeletedRow').val(); - - var answer = confirm(" Do you want to delete the Item from the List?") - if (answer) - { - var td = document.getElementById(rowid); - td.parentNode.removeChild(td); - - var removeItem = $('#materialCode'+rowid).val(); - - - - SelectedMaterialCode.splice( SelectedMaterialCode.indexOf('removeItem'), 1 ); - $.each(SelectedMaterialList.Mat, function(i, el){ - - if (this.materialCode == removeItem){//Type = ''; - SelectedMaterialList.Mat.splice(i, 1); - } - }); - - if(DelRows != '') - { - DelRows = DelRows + ":" + rowid; - } - else - { - DelRows= "0" + ":" + rowid; - } - $('#txtDeletedRow').val(DelRows); - populateValueMainFormForDeleteItem(rowid); - } - -} - -function populateValueMainFormForDeleteItem(rowid) -{ - - - // alert(rows); - var TotServiceTax = $('#txtTotalServiceTax'+rowid).val(); - var TotEduCess = $('#txtTotalEducess'+rowid).val(); - var TotSecHighTax = $('#txtTotHigherEdu'+rowid).val(); - var TotKrishiTax = $('#txtTotalKrishiKalyan'+rowid).val(); - var TotSwachhTax = $('#txtTotSwachhBharat'+rowid).val(); - var TotSummary = $('#TotalOrderValue'+rowid).val(); - var TotBasicAmout = $('#txtTotalOrderValueSummary'+rowid).val(); - - - - var AfterServiceTax = $('#ServiceTax'+rowid).val() == '' ? '0.00' : $('#ServiceTax'+rowid).val(); - var AfterEduCess = $('#EduCess'+rowid).val() == '' ? '0.00' : $('#EduCess'+rowid).val(); - var AfterSecHighTax = $('#SecHighTax'+rowid).val() == '' ? '0.00' : $('#SecHighTax'+rowid).val(); - var AfterKrishiTax =$('#KrishiTax'+rowid).val() == '' ? '0.00' : $('#KrishiTax'+rowid).val(); - var AfterSwachhTax = $('#SwachhTax'+rowid).val() == '' ? '0.00' : $('#SwachhTax'+rowid).val(); - var TotalVal =$('#TotalOrderValue'+rowid).val() == '' ? '0.00' : $('#TotalOrderValue'+rowid).val(); - - var Quantity = $('#quantity'+rowid).val() == '' ? '0.00' : $('#quantity'+rowid).val(); - var ItemRate = $('#itemRate'+rowid).val() == '' ? '0.00' : $('#itemRate'+rowid).val(); - var BasicVal = parseFloat(Quantity) * parseFloat(ItemRate); - //alert(TotalVal); - - TotServiceTax = parseFloat(TotServiceTax) - parseFloat(AfterServiceTax); - TotEduCess = parseFloat(TotEduCess) - parseFloat(AfterEduCess); - TotSecHighTax = parseFloat(TotSecHighTax) - parseFloat(AfterSecHighTax); - TotKrishiTax = parseFloat(TotKrishiTax) - parseFloat(AfterKrishiTax); - TotSwachhTax = parseFloat(TotSwachhTax) - parseFloat(AfterSwachhTax); - TotSummary = parseFloat(TotSummary) - parseFloat(TotalVal); - TotBasicAmout = parseFloat(TotBasicAmout) - parseFloat(BasicVal); - - - - $('#txtTotBasicAmount').val(parseFloat(TotBasicAmout).toFixed(2) ); - $('#txtTotalServiceTax').val(parseFloat(TotServiceTax).toFixed(2) ); - $('#txtTotHigherEdu').val(parseFloat(TotSecHighTax).toFixed(2) ); - $('#txtTotalEducess').val(parseFloat(TotEduCess).toFixed(2) ); - $('#txtTotalKrishiKalyan').val(parseFloat(TotKrishiTax).toFixed(2) ); - $('#txtTotSwachhBharat').val(parseFloat(TotSwachhTax).toFixed(2) ); - $('#txtTotalOrderValueSummary').val(parseFloat(TotSummary).toFixed(2) ); - - - -} - -function validateServiceTax() - { - - if($('#ReqNo').val() == "0") - { - alert('Please select the Requisition Number'); - $('#ReqNo').focus(); - return false; - } - else if($('#CostCenter').val() == "0") - { - alert('Please select the Cost center'); - $('#CostCenter').focus(); - return false; - } - else if($('#MaterialCode').val() == "0") - { - alert('Please select the Material Code'); - $('#MaterialCode').focus(); - return false; - } - else if($('#Quantity').val() == '') - { - alert('Please Enter the Quantity value'); - $('#Quantity').focus(); - return false; - } - else if($('#Rate').val() == '') - { - alert('Please Enter the Rate of the Item'); - $('#Rate').focus(); - return false; - } - else if(ExceedQuantityCheck() == false) - { - return false; - } - else if(ExceedBudget($('#TotalOrderValue').val(),$('#AvlBudAmt').val()) == false) - { - $('#Rate').focus(); - return false; - } - else - { - return true; - } - - } - function validateEditServiceTax() - { - - if($('#EditCostCenter').val() == "0") - { - alert('Please select the Cost center'); - $('#EditCostCenter').focus(); - return false; - } - else if($('#EditMaterialCode').val() == "0") - { - alert('Please select the Material Code'); - $('#EditMaterialCode').focus(); - return false; - } - else if($('#EditQuantity').val() == '') - { - alert('Please Enter the Quantity value'); - $('#EditQuantity').focus(); - return false; - } - else if($('#EditRate').val() == '') - { - alert('Please Enter the Rate of the Item'); - $('#EditRate').focus(); - return false; - } - else if(EditExceedQuantityCheck() == false) - { - return false; - } - else if(ExceedBudget($('#EditTotalOrderValue').val(),$('#EditAvlBudAmt').val()) == false) - { - $('#EditRate').focus(); - return false; - } - else - { - return true; - } - - } -// this function is used to clear data changing schedule option -$('#Scheduleby').change(function(){ - - $("#Deliverydt").datepicker({ - minDate : 'now', - dateFormat: 'mm/dd/yy',changeMonth: true, changeYear: true,yearRange: '0:+10' - }); - - }); - $('#Deliverydt').change(function(){ - - - $('#Scheduleby').val(''); - - }); -// -</script> -<script> -function Save(status) -{ -if(status == '0') -{ - stat = '<?php echo PO_DRAFT; ?>'; -} -else -{ - stat = '<?php echo PO_CREATED; ?>'; -} - -var splinstr = $('#txtSpcialInstruction').val(); -var deladd = $('#DeliveryAddr').val(); -$('#SpcialInstruction').val(splinstr); -$('#txtDeliveryAddress').val(deladd); -$('#txtStatus').val(stat); - if(validate()) - { - if(document.getElementById('serviceTax').rows.length < 3) - { - alert('Please Select Line item to Create PO'); - $('#Deliverydt').focus(); - return false; - } - else - { - $('#content').loader('show'); - $.ajax({ - data:$('.ServicePO').serialize(), - type:"POST", - url:"<?php echo base_url() ?>servicepurchaseorder/addNewServicePurchaseOrder", - success:function(data) { - if(data) - { - $('#content').loader('hide'); - alert(data); - $('#txtRowCount').val(''); - $('#txtDeletedRow').val(''); - $('#SpcialInstruction').val(''); - $('#txtDeliveryAddress').val(''); - window.location = "purchaseorderListing"; - - } - else - { - $('#content').loader('hide'); - alert("Error"); - } - - } - - }); - } - -} -} -<!-- script for table , It works under the datatable plugin--> - $(function () { - $('#serviceTax').DataTable({ - "paging": true, - "lengthChange": true, - "searching": false, - //"ordering": true, - // "info": true, - "autoWidth": true - - }); - }); - - - -</script> - diff --git a/application/views/servicepo.php b/application/views/servicepo.php deleted file mode 100644 index 8a0831d6..00000000 --- a/application/views/servicepo.php +++ /dev/null @@ -1,429 +0,0 @@ -<style> - .table-bordered>thead>tr>th, .table-bordered>tbody>tr>th, .table-bordered>tfoot>tr>th, .table-bordered>thead>tr>td, .table-bordered>tbody>tr>td, .table-bordered>tfoot>tr>td {border: 1px solid #333;} - </style> -<div class="content-wrapper"> - - - <section class="content"> - - <div style="border:2px solid #333"> - <center><b><h2>Service Purchase Order</h2></b></center> - <div class="container-fluid"> - <div class="row"> - <div class="col-md-12"> - <div class="col-md-4"> - <label>Requistion No</label> - <div class="form-control"> - <?php - $options = array("0"=>'Requistion No'); - //print_r( $options); - - if(!empty($POType)) - { - foreach ($SupplierName as $SID): - - - $options[$SID->SupplierID] = $SID->SupplierID.' '.' - '.' '.$SID->SupplierName; - - endforeach; - } - - echo form_dropdown('MaterialCode', $options,set_value('MaterialCode'),'id="MaterialCode"' ,'class="form-control required"','required="true"'); - - ?> - </div> - </div> - <div class="col-md-4"> - <label>PO Date</label> - <div class="form-group"> - <?php - $data = array('name' => 'Quantity','value' => set_value('Quantity'),'id'=>'Quantity', 'class' => 'form-control' ,'required' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <label>Purchase Order Type</label> - <div class="form-group"> - <?php - $data = array('name' => 'Quantity','value' => set_value('Quantity'),'id'=>'Quantity', 'class' => 'form-control' ,'required' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <label>Supplier</label> - <div class="form-control"> - <?php - $options = array("0"=>'Supplier'); - //print_r( $options); - - if(!empty($POType)) - { - foreach ($SupplierName as $SID): - - - $options[$SID->SupplierID] = $SID->SupplierID.' '.' - '.' '.$SID->SupplierName; - - endforeach; - } - - echo form_dropdown('MaterialCode', $options,set_value('MaterialCode'),'id="MaterialCode"' ,'class="form-control required"','required="true"'); - - ?> - </div> - </div> - <div class="col-md-4"> - <label>Address</label> - <div class="form-group"> - <?php - $data = array('name' => 'Quantity','value' => set_value('Quantity'),'id'=>'Quantity', 'class' => 'form-control' ,'required' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-4"> - <label>City</label> - <div class="form-group"> - <?php - $data = array('name' => 'Quantity','value' => set_value('Quantity'),'id'=>'Quantity', 'class' => 'form-control' ,'required' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - </div> - </div> - - <div class="container-fluid"> - <table class="table table-bordered" style="border:1px solid #333"> - <div align="right" style="padding-right:10px"> -<div align="right"> - <a data-toggle="modal" data-target="#myModal1"><button type="button" class="btn btn-primary" data-dismiss="modal" >Add Line Item</button> </a> - - <div class="modal fade" id="myModal1" role="dialog"> - <div class="modal-dialog"> - <!-- Modal content--> - <form> - <div class="modal-content" style="width:900px;"> - <div class="modal-header" style="background-color: #3c8dbc;color:#fff;"> - <button type="button" class="close" data-dismiss="modal">&times;</button> - <center><h4>Add Item </h4></center> - </div> - <div align="left"> - - <div class="col-md-12"> - <div class="col-md-3"> - <label>Req No</label> - <div class="form-control"> - <?php - $options = array("0"=>'Req No'); - //print_r( $options); - - if(!empty($POType)) - { - foreach ($SupplierName as $SID): - - - $options[$SID->SupplierID] = $SID->SupplierID.' '.' - '.' '.$SID->SupplierName; - - endforeach; - } - - echo form_dropdown('MaterialCode', $options,set_value('MaterialCode'),'id="MaterialCode"' ,'class="form-control required"','required="true"'); - - ?> - </div> - </div> - - <div class="col-md-3"> - <label>Department Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'Quantity','value' => set_value('Quantity'),'id'=>'Quantity', 'class' => 'form-control' ,'required' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-3"> - <label>Cost Center Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'Quantity','value' => set_value('Quantity'),'id'=>'Quantity', 'class' => 'form-control' ,'required' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-3"> - <label>Available Budget Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'Quantity','value' => set_value('Quantity'),'id'=>'Quantity', 'class' => 'form-control' ,'required' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-2"> - <label>Item Code</label> - <div class="form-control"> - <?php - $options = array("0"=>'Item Code'); - //print_r( $options); - - if(!empty($POType)) - { - foreach ($SupplierName as $SID): - - - $options[$SID->SupplierID] = $SID->SupplierID.' '.' - '.' '.$SID->SupplierName; - - endforeach; - } - - echo form_dropdown('MaterialCode', $options,set_value('MaterialCode'),'id="MaterialCode"' ,'class="form-control required"','required="true"'); - - ?> - </div> - </div> - - <div class="col-md-2"> - <label>Item Name</label> - <div class="form-group"> - <?php - $data = array('name' => 'Quantity','value' => set_value('Quantity'),'id'=>'Quantity', 'class' => 'form-control' ,'required' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>UOM</label> - <div class="form-group"> - <?php - $data = array('name' => 'Quantity','value' => set_value('Quantity'),'id'=>'Quantity', 'class' => 'form-control' ,'required' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Quantity</label> - <div class="form-group"> - <?php - $data = array('name' => 'Quantity','value' => set_value('Quantity'),'id'=>'Quantity', 'class' => 'form-control' ,'required' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Rate Per unit</label> - <div class="form-group"> - <?php - $data = array('name' => 'Quantity','value' => set_value('Quantity'),'id'=>'Quantity', 'class' => 'form-control' ,'required' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div class="col-md-2"> - <label>Total Amount</label> - <div class="form-group"> - <?php - $data = array('name' => 'Quantity','value' => set_value('Quantity'),'id'=>'Quantity', 'class' => 'form-control' ,'required' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-12"> - <div class="col-md-4"> - - Service Tax @12% : - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'Quantity','value' => set_value('Quantity'),'id'=>'Quantity', 'class' => 'form-control' ,'required' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'Quantity','value' => set_value('Quantity'),'id'=>'Quantity', 'class' => 'form-control' ,'placeholder' => 'After Service Tax','required' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Edu. cess @2% on service Tax - - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'Quantity','value' => set_value('Quantity'),'id'=>'Quantity', 'class' => 'form-control' ,'required' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'Quantity','value' => set_value('Quantity'),'id'=>'Quantity', 'class' => 'form-control' ,'placeholder' => 'After Edu.','required' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - - </div> - <div class="col-md-12"> - - <div class="col-md-4"> - Sec. & Higher Edu. cess @1 % on service Tax - - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'Quantity','value' => set_value('Quantity'),'id'=>'Quantity', 'class' => 'form-control' ,'required' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'Quantity','value' => set_value('Quantity'),'id'=>'Quantity', 'class' => 'form-control' ,'placeholder' => 'After High Edu.','required' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - </div> - <div class="col-md-12"> - <div class="col-md-4"> - Other Taxes - - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'Quantity','value' => set_value('Quantity'),'id'=>'Quantity', 'class' => 'form-control' ,'required' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - <div class="col-md-4"> - <div class="form-group"> - <?php - $data = array('name' => 'Quantity','value' => set_value('Quantity'),'id'=>'Quantity', 'class' => 'form-control' ,'placeholder' => 'After Other Taxes','required' => 'true'); - echo form_input($data); - ?> - </div> - - </div> - - </div> - <div class="col-md-6 col-md-offset-6"> - <label>Total Order value</label> - <div class="form-group"> - <?php - $data = array('name' => 'Quantity','value' => set_value('Quantity'),'id'=>'Quantity', 'class' => 'form-control' ,'placeholder' => 'Total value','required' => 'true'); - echo form_input($data); - ?> - </div> - </div> - </div> - - </div> - <div class="modal-footer"> - <button type="button" class="btn btn-default" value="submit">Add</button> - <button type="button" class="btn btn-default" value="submit" data-dismiss="modal">Cancel</button> - <button type="reset" class="btn btn-default" value="reset">Reset</button> - </div> - </div> - </form> - - </div> - </div> - </div> -</div> - - - <br/> - <thead style="background-color:#fff"> - <tr> - <th><input type="checkbox" name="name1" />&nbsp;</th> - <th>R No</th> - <th>Item Name</th> - <th>Quantity</th> - <th>UOM</th> - <th>Rate</th> - <th>Tax %</th> - <th>Total</th> - </tr> - </thead> - <tbody> - <tr> - <td><input type="checkbox" name="name2" />&nbsp;</td> - <td>1</td> - <td>001</td> - <td>Waste Sand</td> - <td>Ton</td> - <td>100</td> - <td>High</td> - <td>No Change</td> - </tr> - <tr> - <td><input type="checkbox" name="name2" />&nbsp;</td> - <td>2</td> - <td>002</td> - <td>Resin</td> - <td>Litre</td> - <td>50</td> - <td>High</td> - <td>Change</td> - </tr> - <tr> - <td><input type="checkbox" name="name2" />&nbsp;</td> - <td>3</td> - <td>003</td> - <td>Resin</td> - <td>Litre</td> - <td>100</td> - <td>High</td> - <td>Change</td> - </tr> - </tbody> - - </table> - <div class="col-md-3 col-md-offset-9"> - - <div class="form-group"> - <label>Total Order Value :</label> <?php - $data = array('name' => 'Quantity','value' => set_value('Quantity'),'id'=>'Quantity', 'class' => 'form-control' ,'required' => 'true'); - echo form_input($data); - ?> - </div> - </div> - <div align="right" style="padding-right:10px"> - <button type="button" class="btn btn-primary">Save</button> - <button type="button" class="btn btn-primary">Cancel</button> - - </div> - <br/> - </div> - </div> - -</div> \ No newline at end of file diff --git a/application/views/servicepopdf.php b/application/views/servicepopdf.php deleted file mode 100644 index 2a524789..00000000 --- a/application/views/servicepopdf.php +++ /dev/null @@ -1,189 +0,0 @@ - -Currently editing: -/home/kasiram9/public_html/sidd_SIT/application/views/servicepopdf.php - Encoding: Reopen Switch to Code Editor Close Save - - <?php - - $PONO = ''; - $CompanyAddress = ''; - $CompanyName = ''; - $SuplierName = ''; - $SuplierAddress = ''; - $DeliveryAddress = ''; - $Podt = ''; - $DeliveryDate =''; - $ServiceTax =0.00; - $EducessTax =0.00; - $SecHigherEducessTax =0.00; - $KrishiKalyantax =0.00; - $SwachhBharattax =0.00; - $TotalAmount =0.00; - $SubTotalAmount =0.00; - $TaxAmount =0.00; - $BasicAmount = 0.00; - $ServiceDescription = ''; - if(!empty($CompanyDetails)) - { - foreach ($CompanyDetails as $CO) - { - $CompanyName = $CO->CompanyName; - $CompanyAddress = $CO->Address; - - } -} - if(!empty($POItem)) - { - foreach ($POItem as $PO) - { - $PONO = $PO->PONO; - $SuplierName = $PO->SupplierName; - $SuplierAddress = $PO->Address; - $DeliveryAddress = $PO->DeliveryAddress; - - $dt = new DateTime($PO->PODate, new DateTimeZone('Asia/Kolkata')); - $Podt = $dt->format('d-m-Y'); - $dtDe = new DateTime($PO->DeliveryDate, new DateTimeZone('Asia/Kolkata')); - $DeliveryDate = $dtDe->format('d-m-Y'); - $ServiceDescription =$PO->ServiceDescription; - - } -} - - ?> -<div><center> -<h2>PURCHASE ORDER</h2> -</center> -</div> -<div align="right"> PO NO:<?php echo $PONO?> </div> - <div align="right"> <?php echo $Podt?> </div> -<p> -<b style="color:#3c8dbc"><?php echo $CompanyName; ?></b><br/> <?php echo $CompanyAddress; ?></p> -<table><tr><td> -<p><a style="color:#3c8dbc">Vendor Address : </a> <br/> <?php echo $SuplierName?> <br/><?php echo $SuplierAddress ?></p></td><td> -<p><a style="color:#3c8dbc">Delivery To :</a><br/> <?php echo $DeliveryAddress?><p></td> -</tr></table> -<p> -<div align="right"> Delivery Date :<?php echo $DeliveryDate?></div></p> - - -<table style="border-collapse: collapse;" cellpadding="0" cellspacing="0" border="1" width="105%"> -<tr style="background:#000;color:#fff;"> -<th>#</th> -<th>Item Description</th> -<th>Qty</th> -<th>Rate</th> -<th>Amount</th> -<th>Service Tax</th> -<th>Educess Tax</th> -<th>Sec Higher Educess Tax</th> -<th>Krishi Kalyan tax</th> -<th>Swachh Bharat tax</th> -<th>Total Amount</th> -</tr> - - <?php - if(!empty($POItem)) - { - $index = 0; - $TotalAmount = 0; - $OrderValue = 0; - foreach($POItem as $record) - { - $index = $index + 1; - $TotalAmount = $record->BasicValue + $record->Taxamount - ?> -<tr> -<td><?php echo $index ; ?></td> -<td><?php echo $record->MaterialName ; ?></td> -<td align="right"><?php echo $record->Quantity ; ?></td> -<td align="right"><?php echo $record->Rate ; ?></td> -<td align="right"><?php echo $record->BasicValue ; ?></td> -<td align="right"><?php echo $record->ServiceTax ; ?></td> -<td align="right"><?php echo $record->EducessTax ; ?></td> -<td align="right"><?php echo $record->SecHigherEducessTax ; ?></td> -<td align="right"><?php echo $record->KrishiKalyantax ; ?></td> -<td align="right"><?php echo $record->SwachhBharattax ; ?></td> -<td align="right"><?php echo number_format($TotalAmount,2) ; ?></td> -</tr> - - <?php - $SubTotalAmount = $SubTotalAmount + $record->BasicValue; - $ServiceTax =$ServiceTax + $record->ServiceTax; - $EducessTax =$EducessTax + $record->EducessTax; - $SecHigherEducessTax = $SecHigherEducessTax + $record->SecHigherEducessTax; - $KrishiKalyantax =$KrishiKalyantax + $record->KrishiKalyantax; - $SwachhBharattax =$SwachhBharattax + $record->SwachhBharattax; - - } - $OrderValue = $SubTotalAmount + $ServiceTax + $EducessTax+$SecHigherEducessTax+$KrishiKalyantax +$SwachhBharattax; - } - - ?> -</table> -<div align="right"> - - -<table style="border-collapse: collapse;" cellpadding="0" cellspacing="0" border="0" width="105%"> -<tr> -<td align="right">Sub Total Amount :</td> -<td align="right"><?php echo number_format($SubTotalAmount,2);?></td> -<br/> -</tr> - -<tr> -<td align="right">Service Tax @14% :</td> -<td align="right"><?php echo number_format($ServiceTax,2);?></td> -<br/> -</tr> -<tr> -<td align="right">Edu. cess @2% on ServiceTax:</td> -<td align="right"><?php echo number_format($EducessTax,2);?></td> -<br/> -</tr> -<tr> -<td align="right">Sec & Higher cess @1% on ServiceTax:</td> -<td align="right"><?php echo number_format($SecHigherEducessTax,2);?></td> -<br/> -</tr> -<tr> -<td align="right">Krishi kalyan Tax @0.5% on Basic Amount:</td> -<td align="right"><?php echo number_format($KrishiKalyantax,2);?></td> -<br/> -</tr> -<tr> -<td align="right">Swachh Barath Tax @0.5% on Basic Amount :</td> -<td align="right"><?php echo number_format($SwachhBharattax,2);?></td> -<br/> -</tr> -<tr> -<td align="right"><p><b>Total Order Amount :</b></td> -<td align="right"><b><?php echo number_format($OrderValue,2);?></b></td> -<br/> -</tr> -</table> -<br> -<br> -<p> -<div align="Left"> <b>Service Description:</b><br/><br/><?php echo $ServiceDescription;?></div></p> -<?php -if(!empty($releasedetails)){ - foreach($releasedetails as $detail){ - -?> -<table width="200%"> -<tr> -<td><b>ReleasedBy:</b></td> -<td><b>ReleasedOn:</b></td> -</tr> -<tr> -<td><?php echo $detail->FirstName;?></td> -<td><?php echo $detail->ReleasedOn;?></td> -</tr> -</table> -<?php - } -} -?> - -</div> diff --git a/application/views/supplierListing.php b/application/views/supplierListing.php deleted file mode 100644 index 8462017e..00000000 --- a/application/views/supplierListing.php +++ /dev/null @@ -1,95 +0,0 @@ - <script> - (function(l,q){var e=function(b,c){b.extend(!0,c.defaults,{dom:"<'row'<'col-sm-9'l><'col-sm-3'f>><'row'<'col-sm-12'tr>><'row'<'col-sm-8'i><'col-sm-4'p>>",renderer:"bootstrap"});b.extend(c.ext.classes,{sWrapper:"dataTables_wrapper form-inline dt-bootstrap",sFilterInput:"form-control input-sm",sLengthSelect:"form-control input-sm"});c.ext.renderer.pageButton.bootstrap=function(g,e,r,s,i,m){var t=new c.Api(g),u=g.oClasses,j=g.oLanguage.oPaginate,d,f,n=0,p=function(c,e){var k,h,o,a,l=function(a){a.preventDefault(); -b(a.currentTarget).hasClass("disabled")||t.page(a.data.action).draw(!1)};k=0;for(h=e.length;k<h;k++)if(a=e[k],b.isArray(a))p(c,a);else{f=d="";switch(a){case "ellipsis":d="&hellip;";f="disabled";break;case "first":d=j.sFirst;f=a+(0<i?"":" disabled");break;case "previous":d=j.sPrevious;f=a+(0<i?"":" disabled");break;case "next":d=j.sNext;f=a+(i<m-1?"":" disabled");break;case "last":d=j.sLast;f=a+(i<m-1?"":" disabled");break;default:d=a+1,f=i===a?"active":""}d&&(o=b("<li>",{"class":u.sPageButton+" "+ -f,id:0===r&&"string"===typeof a?g.sTableId+"_"+a:null}).append(b("<a>",{href:"#","aria-controls":g.sTableId,"data-dt-idx":n,tabindex:g.iTabIndex}).html(d)).appendTo(c),g.oApi._fnBindAction(o,{action:a},l),n++)}},h;try{h=b(q.activeElement).data("dt-idx")}catch(l){}p(b(e).empty().html('<ul class="pagination"/>').children("ul"),s);h&&b(e).find("[data-dt-idx="+h+"]").focus()};c.TableTools&&(b.extend(!0,c.TableTools.classes,{container:"DTTT btn-group",buttons:{normal:"btn btn-default",disabled:"disabled"}, -collection:{container:"DTTT_dropdown dropdown-menu",buttons:{normal:"",disabled:"disabled"}},print:{info:"DTTT_print_info"},select:{row:"active"}}),b.extend(!0,c.TableTools.DEFAULTS.oTags,{collection:{container:"ul",button:"li",liner:"a"}}))};"function"===typeof define&&define.amd?define(["jquery","datatables"],e):"object"===typeof exports?e(require("jquery"),require("datatables")):jQuery&&e(jQuery,jQuery.fn.dataTable)})(window,document); - </script> -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - <center>Siddharth Industries -Supplier Details</center> - - </h1> - </section> - <section class="content"> - <div class="row"> - <div class="col-xs-12 text-right"> - <div class="form-group"> - <a class="btn btn-info" href="<?php echo base_url(); ?>addsupplier">Add New Supplier</a> - <a class="btn btn-info" href="<?php echo base_url(); ?>supplier/export_supplierdetails">Export supplier details <i class="fa fa-download"aira-hidden="true"></i></a> - </div> - </div> - </div> - <div class="row"> - <div class="col-xs-12"> - - <table class="table table-bordered table-hover" id="datatable" style="background-color:#fff;font-size:12px;" > - <thead> - <tr> - <th >Supplier ID</th> - <th>Supplier Name</th> - <th>Address</th> - <th>Contact Number</th> - <th>Email Address</th> - <th>Excise Registration</th> - <th>TIN</th> - <th>PAN</th> - <th>GST Number</th> - <th>GST Range</th> - <th>UA Number</th> - <th>Payment Terms</th> - </tr> - </thead> - <tbody> - <?php - if(!empty($userRecords)) - { - foreach($userRecords as $record) - { - ?> - <tr> - <td><u><a href="<?php echo base_url().'supplier/viewsupplier/?SID='.$record->SupplierID.'&Payment='.$record->PaymentTerms ?>" data-toggle="tooltip" title="<?php echo $record->SupplierID; ?> - Click here to view Supplier details"><?php echo $record->SupplierID ?> </a></u></td> - <td><?php echo $record->SupplierName ?></td> - <td><?php echo $record->Address ?></td> - <td><?php echo $record->ContactNumber ?></td> - - <td><?php echo $record->EmailAddress ?></td> - <td><?php echo $record->Exiseregistration ?></td> - <td><?php echo $record->TIN ?></td> - <td><?php echo $record->PAN ?></td> - <td><?php echo $record->GSTNO ?></td> - <td><?php echo $record->GSTRange ?></td> - - <td><?php echo $record->UANumber ?></td> - <td><?php echo $record->PaymentTerms ?></td> - - </tr> - <?php - } - } - ?> - </tbody> - </table> - - </div> - </div> - </section> -</div> -<script type="text/javascript" src="<?php echo base_url(); ?>assets/js/common.js" charset="utf-8"></script> - <script type="text/javascript"> - - $(function () { - - $('#datatable').DataTable({ - "paging": true, - "lengthChange": true, - "searching": true, - "ordering": true, - "info": true, - "autoWidth": true - - }); - }); - -</script> diff --git a/application/views/users.php b/application/views/users.php deleted file mode 100644 index 78b16d97..00000000 --- a/application/views/users.php +++ /dev/null @@ -1,113 +0,0 @@ - - -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - <center>Siddharth Industries - User Management</center> - - </h1> - </section> - <section class="content"> - <div class="row"> - <div class="col-xs-12 text-right"> - <div class="form-group"> - <a class="btn btn-primary" href="<?php echo base_url(); ?>addNew">Add New</a> - </div> - </div> - </div> - <div class="row"> - <div class="col-xs-12"> - - <table class="table table-hover table-bordered" id="datatable" style="background-color:#fff;font-size:12px;" > - <thead> - <tr> - <th>User Id</th> - <th>User Name</th> - <th>Email</th> - <th>Contact Number</th> - <th>Designation</th> - <th>Department</th> - <th>Role Name</th> - <th>Actions</th> - </tr> - </thead> - <tbody> - <?php - if(!empty($userRecords)) - { - foreach($userRecords as $record) - { - ?> - <tr> - <td><?php echo $record->userId ?></td> - <td><?php echo $record->FirstName ?></td> - <td><?php echo $record->EmailId ?></td> - <td><?php echo $record->ContactNumber ?></td> - <td><?php echo $record->Designation ?></td> - <td><?php echo $record->DepartmentName ?></td> - <td><?php echo $record->role ?></td> - <td> - <a href="<?php echo base_url().'user/editOld?UID='.$record->userId;?>"><i class="fa fa-pencil"></i>&nbsp;&nbsp;&nbsp;</a> - <a onclick="deleteUser(<?php echo $record->userId;?>)"><i class="fa fa-trash"></i>&nbsp;&nbsp;&nbsp;</a> - </td> - </tr> - <?php - } - } - ?> - </tbody> - </table> - - </div> - </div> - </section> -</div> -<script type="text/javascript" src="<?php echo base_url(); ?>assets/js/common.js" charset="utf-8"></script> -<script type="text/javascript"> - - - $(function () { - - $('#datatable').DataTable({ - "paging": true, - "lengthChange": true, - "searching": true, - "ordering": true, - "info": true, - "autoWidth": true - - }); - }); - - - - function deleteUser(userid) - { - var answer = confirm(" Do you want to delete the user from the List?") - if (answer) - { - $.ajax({ - data:{id:userid}, - type:"POST", - url:"<?php echo base_url() ?>user/deleteUser", - success:function(data) { - if(data) - { - $('#content').loader('hide'); - alert(data); - - location.reload(); - - - } - else - { - alert("Error"); - } - - }}); - } - } -</script> - diff --git a/application/views/viewfullpurchaseorder.php b/application/views/viewfullpurchaseorder.php deleted file mode 100644 index 5796fa26..00000000 --- a/application/views/viewfullpurchaseorder.php +++ /dev/null @@ -1,89 +0,0 @@ - <!-- In table requested by , requested department , total quantity are hard coded , recived quantity and remarks should be fill by gate keeper ---> -<style> - .pagination { - margin:0px !important; - } - -</style> - <div class="content-wrapper"> - <!-- Content Header (Page header) --> - - <!-- Main content --> - <section class="content"> - <div class="row"> - <div class="col-xs-12"> - <div class="box"> - <div class="box-header"> - <center><h3 class="box-title">Siddharth Industries - Purchase Order Full List</h3></center> - </div> - <!-- /.box-header --> - <div class="box-body"> - <table id="viewfullpo" class="table table-bordered table-hover editablTable"> - <thead> - <tr bgcolor="LightSlateGray "> - <th>#</th> - <th>PONO#</th> - <th>Request By</th> - <th>Request Dept</th> - <th>PO Date</th> - <th>Delivery Date</th> - <th>Supplier Name</th> - <th>Orderd Quantity</th> - <th>Recived Quantity</th> - <th>Remarks</th> - </tr> - </thead> - <tbody><?php - if(!empty($POData)) - { - $index = 0; - foreach($POData as $record) - { - $index = $index + 1; - ?> - <tr id="<?php echo $index ; ?>"> - <td align="left"><?php echo $index ; ?></td> - <td><?php echo $record->PONO ?></td> - <td>saravana</td> <!-- Request by--> - <td>Admin</td> <!-- Request dept--> - <td align="right"><?php echo $record->PODate ?></td> - <td align="right"><?php echo $record->DeliveryDate ?></td> - <td><?php echo $record->SupplierName ?></td> - <td>10000 kgs</td> <!-- Orderd Quantity--> - <td></td> <!-- Recived Quantity--> - <td></td> <!-- Remarks--> - </tr> - <?php - } - } - ?> - </tbody> - - </table> - </div> - <!-- /.box-body --> - </div> - <!-- /.box --> - - </div> - <!-- /.col --> - </div> - <!-- /.row --> - </section> - <!-- /.content --> - </div> - <!-- /.content-wrapper --> - <script> - $(function () { - $('#viewfullpo').DataTable({ - "paging": true, - "lengthChange": true, - "searching": true, - "ordering": true, - "info": true, - "autoWidth": true - }); - }); - $(function () { $("tds").dblclick(function () { var OriginalContent = $(this).text(); $(this).addClass("cellEditing"); $(this).html("<input type='text' value='" + OriginalContent + "' />"); $(this).children().first().focus(); $(this).children().first().keypress(function (e) { if (e.which == 13) { var newContent = $(this).val(); $(this).parent().text(newContent); $(this).parent().removeClass("cellEditing"); } }); $(this).children().first().blur(function(){ $(this).parent().text(OriginalContent); $(this).parent().removeClass("cellEditing"); }); }); }); - -</script> \ No newline at end of file diff --git a/application/views/viewinwardgateregister.php b/application/views/viewinwardgateregister.php deleted file mode 100644 index 59866eac..00000000 --- a/application/views/viewinwardgateregister.php +++ /dev/null @@ -1,245 +0,0 @@ -<script> - - // For table - (function(l,q){var e=function(b,c){b.extend(!0,c.defaults,{dom:"<'row'<'col-sm-9'l><'col-sm-3'f>><'row'<'col-sm-12'tr>><'row'<'col-sm-9'i><'col-sm-3'p>>",renderer:"bootstrap"});b.extend(c.ext.classes,{sWrapper:"dataTables_wrapper form-inline dt-bootstrap",sFilterInput:"form-control input-sm",sLengthSelect:"form-control input-sm"});c.ext.renderer.pageButton.bootstrap=function(g,e,r,s,i,m){var t=new c.Api(g),u=g.oClasses,j=g.oLanguage.oPaginate,d,f,n=0,p=function(c,e){var k,h,o,a,l=function(a){a.preventDefault(); -b(a.currentTarget).hasClass("disabled")||t.page(a.data.action).draw(!1)};k=0;for(h=e.length;k<h;k++)if(a=e[k],b.isArray(a))p(c,a);else{f=d="";switch(a){case "ellipsis":d="&hellip;";f="disabled";break;case "first":d=j.sFirst;f=a+(0<i?"":" disabled");break;case "previous":d=j.sPrevious;f=a+(0<i?"":" disabled");break;case "next":d=j.sNext;f=a+(i<m-1?"":" disabled");break;case "last":d=j.sLast;f=a+(i<m-1?"":" disabled");break;default:d=a+1,f=i===a?"active":""}d&&(o=b("<li>",{"class":u.sPageButton+" "+ -f,id:0===r&&"string"===typeof a?g.sTableId+"_"+a:null}).append(b("<a>",{href:"#","aria-controls":g.sTableId,"data-dt-idx":n,tabindex:g.iTabIndex}).html(d)).appendTo(c),g.oApi._fnBindAction(o,{action:a},l),n++)}},h;try{h=b(q.activeElement).data("dt-idx")}catch(l){}p(b(e).empty().html('<ul class="pagination"/>').children("ul"),s);h&&b(e).find("[data-dt-idx="+h+"]").focus()};c.TableTools&&(b.extend(!0,c.TableTools.classes,{container:"DTTT btn-group",buttons:{normal:"btn btn-default",disabled:"disabled"}, -collection:{container:"DTTT_dropdown dropdown-menu",buttons:{normal:"",disabled:"disabled"}},print:{info:"DTTT_print_info"},select:{row:"active"}}),b.extend(!0,c.TableTools.DEFAULTS.oTags,{collection:{container:"ul",button:"li",liner:"a"}}))};"function"===typeof define&&define.amd?define(["jquery","datatables"],e):"object"===typeof exports?e(require("jquery"),require("datatables")):jQuery&&e(jQuery,jQuery.fn.dataTable)})(window,document); - </script> - - <style> - .modal - { - padding-right:25% ! important; - } - .num{ - text-align:right; - } - .modal-content - { - width:950px ! important; - } - </style> -<div class="content-wrapper"> - <!-- Content Header (Page header) --> - <section class="content-header"> - <h1> - <center>Siddharth Industries - View Inward Gate Register </center> - </h1> - </section> - <section class="content"><br/> - - <div class="row"> - <div class="col-md-12"> - - <table id="Inwardgateregistertable" class="table table-bordered table-hover" style="background-color:#fff;font-size:12px;"> - <thead style="background-color:#ddf"> - <tr> - <th>S.NO</th> - <th>IGR No</th> - <th>PO NO</th> - <th>Supplier name</th> - <th>Invoice No</th> - <th>Date of Invoice</th> - - - <th>Vechicle No</th> - <th>CourierNo</th> - </tr> - </thead> - <tbody> - - <?php - if(!empty($IGR)) - { $index = 0; - foreach($IGR as $record) - { - - $index = $index +1; - ?> - <tr id="<?php echo $index ?>" > - <td><?php echo $index?></td> - <td><a data-toggle="modal" data-target="#Igrshow" data-id="<%=index%>" data-userid="<?php echo $record->IGRNO ?>" > <u><?php echo $record->IGRNO ?></u></a></td> - <td><?php echo $record->PONO ?></a></td> - <td><?php echo $record->SupplierName ?></td> - - - <td><?php echo $record->DeliveryChellanOrInvoiceNo ?></td> - <td><?php echo $record->DeliveryChellanDate ?></td> - - <td><?php echo $record->VehicleNo ?></td> - <td><?php echo $record->CourierNo ?></td> - </tr> - <?php - //$SNo++; - } - } - ?> - - - - - </tbody> - </table> - </div> - - </div> - </div> -<div class="modal fade" id="Igrshow" role="dialog"> - <div class="modal-dialog"> - <!-- Modal content--> - <form> - <div class="modal-content" style="width:900px;"> - <div class="modal-header" style="background-color: #3c8dbc;color:#fff;"> - <button type="button" class="close" data-dismiss="modal">&times;</button> - <center><h4>Inward Gate Register Details</h4></center> <!-- IGR number should display here--> - </div> - <div class="col-md-12"> - <div class="col-md-3"> - <label>IGR Number :</label> - </div> - <div class="col-md-3"> - <input type="text" id="IGRNO1" readonly> - </div> - <div class="col-md-3"> - <label> Purchase Order Number:</label> - </div> - <div class="col-md-3"> - <input type="text" id="PONo" readonly> - </div> - </div> - <div class="col-md-12"> - <div class="col-md-3"> - <label>Delivery Challan/Invoice NO :</label> - </div> - <div class="col-md-3"> - <input type="text" id="Invoice_No" readonly> - </div> - <div class="col-md-3"> - <label>Delivery Challan / Invoice Date:</label> - </div> - <div class="col-md-3"> - <input type="text" id="Invoice_Date" readonly> - </div> - </div> - - <div class="col-md-12"> - <div class="col-md-3"> - <label>Supplier and Address :</label> - </div> - <div class="col-md-3"> - <input type="text" id="Supplier" readonly> - <input type="text" id="Add1" readonly> - </div> - <div class="col-md-3"> - <label>Comments Of Special Instructions :</label> - </div> - <div class="col-md-3"> - <input type="text" id="ser" readonly> - </div> - </div> - <!-- Table to show the line item of po --> - <div id="content" > </div> - <table class="table table-bordered" id="Inwardgateregistertable1"> - <thead> - <tr> - <th>SNo</th> - <th>Item Code</th> - <th>Item Description</th> - <th>UOM</th> - <th>Ordred Quantity</th> - <th>Received Quantity</th> - <th>Remarks</th> - </tr> - </thead> - <tbody id="tbleAppend1"> - <!-- <tr> - <td>1</td> - <td>RM002</td> - <td>Raw sand</td> - <td>Kgs</td> - <td>10000</td> - <td>10000</td> - <td>Received</td> - </tr>--> - </tbody> - </table> - - <div class="modal-footer"> - <a class="btn btn-info" data-dismiss="modal" value="Cancel">Cancel</a> - </div> - </div> - </form> - </div> - </div> - </section> - - <script> -<!-- script for table , It works under the datatable plugin--> - $(function () { - $('#Inwardgateregistertable').DataTable({ - "paging": true, - "lengthChange": true, - "searching": true, - "ordering": true, - "info": true, - "autoWidth": true - - }); - }); - </script> -<script> -$("#Igrshow").on("shown.bs.modal", function(e) { - var igr = $(e.relatedTarget).data('userid'); - - - $('#content').loader('show'); - $.ajax({ - data:{id:igr}, - type:"POST", - //dataType: 'json', - url:"<?php echo base_url() ?>inwardgateregister/ViewIGR", - success:function(data) { - // success:function(data) { - $('#content').loader('hide'); - var trHTML = ''; - - $.each(JSON.parse(data), function (i, item) { - if(igr == item.IGRNO) - { - - $("#IGRNO1").val(item.IGRNO); - //alert(item.IGRNO); - $("#PONo").val(item.PONO); - $("#Supplier").val(item.SupplierName); - - $("#Add1").val(item.Address); - - $("#Invoice_No").val(item.DeliveryChellanOrInvoiceNo); - //alert(item.DeliveryChellanDate); - $("#Invoice_Date").val(item.DeliveryChellanDate); - $("#ser").val(item.ServiceDescription); - - - i=i+1; - trHTML += '<tr>' + - '<td>' + i + '</td>' + - '<td name="MaterialName" id="MaterialCode" onchange="test('+i+')">' + item.MaterialCode + '</td>' + - '<td>' + item.MaterialName + '</td>' + - '<td name="UOM">' + item.UOM + '</td>' + - '<td name="Quantity">' + item.Quantity + '</td>' + - '<td data-name="sel" >'+item.QuantityAsPerInvoice+'</td>' + - - '<td>'+ item.Remarks+ '</td>' + - '</tr>'; - } - - }); - $("#tbleAppend1").empty(); - $('#Inwardgateregistertable1 > tbody').append(trHTML); -} - }); -}); - -</script> -Add Comment \ No newline at end of file diff --git a/assets/bootstrap/css/bootstrap.css b/assets/bootstrap/css/bootstrap.css deleted file mode 100644 index fb15e3d6..00000000 --- a/assets/bootstrap/css/bootstrap.css +++ /dev/null @@ -1,6584 +0,0 @@ -/*! - * Bootstrap v3.3.4 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ -html { - font-family: sans-serif; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; -} -body { - margin: 0; -} -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -menu, -nav, -section, -summary { - display: block; -} -audio, -canvas, -progress, -video { - display: inline-block; - vertical-align: baseline; -} -audio:not([controls]) { - display: none; - height: 0; -} -[hidden], -template { - display: none; -} -a { - background-color: transparent; -} -a:active, -a:hover { - outline: 0; -} -abbr[title] { - border-bottom: 1px dotted; -} -b, -strong { - font-weight: bold; -} -dfn { - font-style: italic; -} -h1 { - margin: .67em 0; - font-size: 2em; -} -mark { - color: #000; - background: #ff0; -} -small { - font-size: 80%; -} -sub, -sup { - position: relative; - font-size: 75%; - line-height: 0; - vertical-align: baseline; -} -sup { - top: -.5em; -} -sub { - bottom: -.25em; -} -img { - border: 0; -} -svg:not(:root) { - overflow: hidden; -} -figure { - margin: 1em 40px; -} -hr { - height: 0; - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} -pre { - overflow: auto; -} -code, -kbd, -pre, -samp { - font-family: monospace, monospace; - font-size: 1em; -} -button, -input, -optgroup, -select, -textarea { - margin: 0; - font: inherit; - color: inherit; -} -button { - overflow: visible; -} -button, -select { - text-transform: none; -} -button, -html input[type="button"], -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; - cursor: pointer; -} -button[disabled], -html input[disabled] { - cursor: default; -} -button::-moz-focus-inner, -input::-moz-focus-inner { - padding: 0; - border: 0; -} -input { - line-height: normal; -} -input[type="checkbox"], -input[type="radio"] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - padding: 0; -} -input[type="number"]::-webkit-inner-spin-button, -input[type="number"]::-webkit-outer-spin-button { - height: auto; -} -input[type="search"] { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; - -webkit-appearance: textfield; -} -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} -fieldset { - padding: .35em .625em .75em; - margin: 0 2px; - border: 1px solid #c0c0c0; -} -legend { - padding: 0; - border: 0; -} -textarea { - overflow: auto; -} -optgroup { - font-weight: bold; -} -table { - border-spacing: 0; - border-collapse: collapse; -} -td, -th { - padding: 0; -} -/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ -@media print { - *, - *:before, - *:after { - color: #000 !important; - text-shadow: none !important; - background: transparent !important; - -webkit-box-shadow: none !important; - box-shadow: none !important; - } - a, - a:visited { - text-decoration: underline; - } - a[href]:after { - content: " (" attr(href) ")"; - } - abbr[title]:after { - content: " (" attr(title) ")"; - } - a[href^="#"]:after, - a[href^="javascript:"]:after { - content: ""; - } - pre, - blockquote { - border: 1px solid #999; - - page-break-inside: avoid; - } - thead { - display: table-header-group; - } - tr, - img { - page-break-inside: avoid; - } - img { - max-width: 100% !important; - } - p, - h2, - h3 { - orphans: 3; - widows: 3; - } - h2, - h3 { - page-break-after: avoid; - } - select { - background: #fff !important; - } - .navbar { - display: none; - } - .btn > .caret, - .dropup > .btn > .caret { - border-top-color: #000 !important; - } - .label { - border: 1px solid #000; - } - .table { - border-collapse: collapse !important; - } - .table td, - .table th { - background-color: #fff !important; - } - .table-bordered th, - .table-bordered td { - border: 1px solid #ddd !important; - } -} -@font-face { - font-family: 'Glyphicons Halflings'; - - src: url('../fonts/glyphicons-halflings-regular.eot'); - src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); -} -.glyphicon { - position: relative; - top: 1px; - display: inline-block; - font-family: 'Glyphicons Halflings'; - font-style: normal; - font-weight: normal; - line-height: 1; - - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.glyphicon-asterisk:before { - content: "\2a"; -} -.glyphicon-plus:before { - content: "\2b"; -} -.glyphicon-euro:before, -.glyphicon-eur:before { - content: "\20ac"; -} -.glyphicon-minus:before { - content: "\2212"; -} -.glyphicon-cloud:before { - content: "\2601"; -} -.glyphicon-envelope:before { - content: "\2709"; -} -.glyphicon-pencil:before { - content: "\270f"; -} -.glyphicon-glass:before { - content: "\e001"; -} -.glyphicon-music:before { - content: "\e002"; -} -.glyphicon-search:before { - content: "\e003"; -} -.glyphicon-heart:before { - content: "\e005"; -} -.glyphicon-star:before { - content: "\e006"; -} -.glyphicon-star-empty:before { - content: "\e007"; -} -.glyphicon-user:before { - content: "\e008"; -} -.glyphicon-film:before { - content: "\e009"; -} -.glyphicon-th-large:before { - content: "\e010"; -} -.glyphicon-th:before { - content: "\e011"; -} -.glyphicon-th-list:before { - content: "\e012"; -} -.glyphicon-ok:before { - content: "\e013"; -} -.glyphicon-remove:before { - content: "\e014"; -} -.glyphicon-zoom-in:before { - content: "\e015"; -} -.glyphicon-zoom-out:before { - content: "\e016"; -} -.glyphicon-off:before { - content: "\e017"; -} -.glyphicon-signal:before { - content: "\e018"; -} -.glyphicon-cog:before { - content: "\e019"; -} -.glyphicon-trash:before { - content: "\e020"; -} -.glyphicon-home:before { - content: "\e021"; -} -.glyphicon-file:before { - content: "\e022"; -} -.glyphicon-time:before { - content: "\e023"; -} -.glyphicon-road:before { - content: "\e024"; -} -.glyphicon-download-alt:before { - content: "\e025"; -} -.glyphicon-download:before { - content: "\e026"; -} -.glyphicon-upload:before { - content: "\e027"; -} -.glyphicon-inbox:before { - content: "\e028"; -} -.glyphicon-play-circle:before { - content: "\e029"; -} -.glyphicon-repeat:before { - content: "\e030"; -} -.glyphicon-refresh:before { - content: "\e031"; -} -.glyphicon-list-alt:before { - content: "\e032"; -} -.glyphicon-lock:before { - content: "\e033"; -} -.glyphicon-flag:before { - content: "\e034"; -} -.glyphicon-headphones:before { - content: "\e035"; -} -.glyphicon-volume-off:before { - content: "\e036"; -} -.glyphicon-volume-down:before { - content: "\e037"; -} -.glyphicon-volume-up:before { - content: "\e038"; -} -.glyphicon-qrcode:before { - content: "\e039"; -} -.glyphicon-barcode:before { - content: "\e040"; -} -.glyphicon-tag:before { - content: "\e041"; -} -.glyphicon-tags:before { - content: "\e042"; -} -.glyphicon-book:before { - content: "\e043"; -} -.glyphicon-bookmark:before { - content: "\e044"; -} -.glyphicon-print:before { - content: "\e045"; -} -.glyphicon-camera:before { - content: "\e046"; -} -.glyphicon-font:before { - content: "\e047"; -} -.glyphicon-bold:before { - content: "\e048"; -} -.glyphicon-italic:before { - content: "\e049"; -} -.glyphicon-text-height:before { - content: "\e050"; -} -.glyphicon-text-width:before { - content: "\e051"; -} -.glyphicon-align-left:before { - content: "\e052"; -} -.glyphicon-align-center:before { - content: "\e053"; -} -.glyphicon-align-right:before { - content: "\e054"; -} -.glyphicon-align-justify:before { - content: "\e055"; -} -.glyphicon-list:before { - content: "\e056"; -} -.glyphicon-indent-left:before { - content: "\e057"; -} -.glyphicon-indent-right:before { - content: "\e058"; -} -.glyphicon-facetime-video:before { - content: "\e059"; -} -.glyphicon-picture:before { - content: "\e060"; -} -.glyphicon-map-marker:before { - content: "\e062"; -} -.glyphicon-adjust:before { - content: "\e063"; -} -.glyphicon-tint:before { - content: "\e064"; -} -.glyphicon-edit:before { - content: "\e065"; -} -.glyphicon-share:before { - content: "\e066"; -} -.glyphicon-check:before { - content: "\e067"; -} -.glyphicon-move:before { - content: "\e068"; -} -.glyphicon-step-backward:before { - content: "\e069"; -} -.glyphicon-fast-backward:before { - content: "\e070"; -} -.glyphicon-backward:before { - content: "\e071"; -} -.glyphicon-play:before { - content: "\e072"; -} -.glyphicon-pause:before { - content: "\e073"; -} -.glyphicon-stop:before { - content: "\e074"; -} -.glyphicon-forward:before { - content: "\e075"; -} -.glyphicon-fast-forward:before { - content: "\e076"; -} -.glyphicon-step-forward:before { - content: "\e077"; -} -.glyphicon-eject:before { - content: "\e078"; -} -.glyphicon-chevron-left:before { - content: "\e079"; -} -.glyphicon-chevron-right:before { - content: "\e080"; -} -.glyphicon-plus-sign:before { - content: "\e081"; -} -.glyphicon-minus-sign:before { - content: "\e082"; -} -.glyphicon-remove-sign:before { - content: "\e083"; -} -.glyphicon-ok-sign:before { - content: "\e084"; -} -.glyphicon-question-sign:before { - content: "\e085"; -} -.glyphicon-info-sign:before { - content: "\e086"; -} -.glyphicon-screenshot:before { - content: "\e087"; -} -.glyphicon-remove-circle:before { - content: "\e088"; -} -.glyphicon-ok-circle:before { - content: "\e089"; -} -.glyphicon-ban-circle:before { - content: "\e090"; -} -.glyphicon-arrow-left:before { - content: "\e091"; -} -.glyphicon-arrow-right:before { - content: "\e092"; -} -.glyphicon-arrow-up:before { - content: "\e093"; -} -.glyphicon-arrow-down:before { - content: "\e094"; -} -.glyphicon-share-alt:before { - content: "\e095"; -} -.glyphicon-resize-full:before { - content: "\e096"; -} -.glyphicon-resize-small:before { - content: "\e097"; -} -.glyphicon-exclamation-sign:before { - content: "\e101"; -} -.glyphicon-gift:before { - content: "\e102"; -} -.glyphicon-leaf:before { - content: "\e103"; -} -.glyphicon-fire:before { - content: "\e104"; -} -.glyphicon-eye-open:before { - content: "\e105"; -} -.glyphicon-eye-close:before { - content: "\e106"; -} -.glyphicon-warning-sign:before { - content: "\e107"; -} -.glyphicon-plane:before { - content: "\e108"; -} -.glyphicon-calendar:before { - content: "\e109"; -} -.glyphicon-random:before { - content: "\e110"; -} -.glyphicon-comment:before { - content: "\e111"; -} -.glyphicon-magnet:before { - content: "\e112"; -} -.glyphicon-chevron-up:before { - content: "\e113"; -} -.glyphicon-chevron-down:before { - content: "\e114"; -} -.glyphicon-retweet:before { - content: "\e115"; -} -.glyphicon-shopping-cart:before { - content: "\e116"; -} -.glyphicon-folder-close:before { - content: "\e117"; -} -.glyphicon-folder-open:before { - content: "\e118"; -} -.glyphicon-resize-vertical:before { - content: "\e119"; -} -.glyphicon-resize-horizontal:before { - content: "\e120"; -} -.glyphicon-hdd:before { - content: "\e121"; -} -.glyphicon-bullhorn:before { - content: "\e122"; -} -.glyphicon-bell:before { - content: "\e123"; -} -.glyphicon-certificate:before { - content: "\e124"; -} -.glyphicon-thumbs-up:before { - content: "\e125"; -} -.glyphicon-thumbs-down:before { - content: "\e126"; -} -.glyphicon-hand-right:before { - content: "\e127"; -} -.glyphicon-hand-left:before { - content: "\e128"; -} -.glyphicon-hand-up:before { - content: "\e129"; -} -.glyphicon-hand-down:before { - content: "\e130"; -} -.glyphicon-circle-arrow-right:before { - content: "\e131"; -} -.glyphicon-circle-arrow-left:before { - content: "\e132"; -} -.glyphicon-circle-arrow-up:before { - content: "\e133"; -} -.glyphicon-circle-arrow-down:before { - content: "\e134"; -} -.glyphicon-globe:before { - content: "\e135"; -} -.glyphicon-wrench:before { - content: "\e136"; -} -.glyphicon-tasks:before { - content: "\e137"; -} -.glyphicon-filter:before { - content: "\e138"; -} -.glyphicon-briefcase:before { - content: "\e139"; -} -.glyphicon-fullscreen:before { - content: "\e140"; -} -.glyphicon-dashboard:before { - content: "\e141"; -} -.glyphicon-paperclip:before { - content: "\e142"; -} -.glyphicon-heart-empty:before { - content: "\e143"; -} -.glyphicon-link:before { - content: "\e144"; -} -.glyphicon-phone:before { - content: "\e145"; -} -.glyphicon-pushpin:before { - content: "\e146"; -} -.glyphicon-usd:before { - content: "\e148"; -} -.glyphicon-gbp:before { - content: "\e149"; -} -.glyphicon-sort:before { - content: "\e150"; -} -.glyphicon-sort-by-alphabet:before { - content: "\e151"; -} -.glyphicon-sort-by-alphabet-alt:before { - content: "\e152"; -} -.glyphicon-sort-by-order:before { - content: "\e153"; -} -.glyphicon-sort-by-order-alt:before { - content: "\e154"; -} -.glyphicon-sort-by-attributes:before { - content: "\e155"; -} -.glyphicon-sort-by-attributes-alt:before { - content: "\e156"; -} -.glyphicon-unchecked:before { - content: "\e157"; -} -.glyphicon-expand:before { - content: "\e158"; -} -.glyphicon-collapse-down:before { - content: "\e159"; -} -.glyphicon-collapse-up:before { - content: "\e160"; -} -.glyphicon-log-in:before { - content: "\e161"; -} -.glyphicon-flash:before { - content: "\e162"; -} -.glyphicon-log-out:before { - content: "\e163"; -} -.glyphicon-new-window:before { - content: "\e164"; -} -.glyphicon-record:before { - content: "\e165"; -} -.glyphicon-save:before { - content: "\e166"; -} -.glyphicon-open:before { - content: "\e167"; -} -.glyphicon-saved:before { - content: "\e168"; -} -.glyphicon-import:before { - content: "\e169"; -} -.glyphicon-export:before { - content: "\e170"; -} -.glyphicon-send:before { - content: "\e171"; -} -.glyphicon-floppy-disk:before { - content: "\e172"; -} -.glyphicon-floppy-saved:before { - content: "\e173"; -} -.glyphicon-floppy-remove:before { - content: "\e174"; -} -.glyphicon-floppy-save:before { - content: "\e175"; -} -.glyphicon-floppy-open:before { - content: "\e176"; -} -.glyphicon-credit-card:before { - content: "\e177"; -} -.glyphicon-transfer:before { - content: "\e178"; -} -.glyphicon-cutlery:before { - content: "\e179"; -} -.glyphicon-header:before { - content: "\e180"; -} -.glyphicon-compressed:before { - content: "\e181"; -} -.glyphicon-earphone:before { - content: "\e182"; -} -.glyphicon-phone-alt:before { - content: "\e183"; -} -.glyphicon-tower:before { - content: "\e184"; -} -.glyphicon-stats:before { - content: "\e185"; -} -.glyphicon-sd-video:before { - content: "\e186"; -} -.glyphicon-hd-video:before { - content: "\e187"; -} -.glyphicon-subtitles:before { - content: "\e188"; -} -.glyphicon-sound-stereo:before { - content: "\e189"; -} -.glyphicon-sound-dolby:before { - content: "\e190"; -} -.glyphicon-sound-5-1:before { - content: "\e191"; -} -.glyphicon-sound-6-1:before { - content: "\e192"; -} -.glyphicon-sound-7-1:before { - content: "\e193"; -} -.glyphicon-copyright-mark:before { - content: "\e194"; -} -.glyphicon-registration-mark:before { - content: "\e195"; -} -.glyphicon-cloud-download:before { - content: "\e197"; -} -.glyphicon-cloud-upload:before { - content: "\e198"; -} -.glyphicon-tree-conifer:before { - content: "\e199"; -} -.glyphicon-tree-deciduous:before { - content: "\e200"; -} -.glyphicon-cd:before { - content: "\e201"; -} -.glyphicon-save-file:before { - content: "\e202"; -} -.glyphicon-open-file:before { - content: "\e203"; -} -.glyphicon-level-up:before { - content: "\e204"; -} -.glyphicon-copy:before { - content: "\e205"; -} -.glyphicon-paste:before { - content: "\e206"; -} -.glyphicon-alert:before { - content: "\e209"; -} -.glyphicon-equalizer:before { - content: "\e210"; -} -.glyphicon-king:before { - content: "\e211"; -} -.glyphicon-queen:before { - content: "\e212"; -} -.glyphicon-pawn:before { - content: "\e213"; -} -.glyphicon-bishop:before { - content: "\e214"; -} -.glyphicon-knight:before { - content: "\e215"; -} -.glyphicon-baby-formula:before { - content: "\e216"; -} -.glyphicon-tent:before { - content: "\26fa"; -} -.glyphicon-blackboard:before { - content: "\e218"; -} -.glyphicon-bed:before { - content: "\e219"; -} -.glyphicon-apple:before { - content: "\f8ff"; -} -.glyphicon-erase:before { - content: "\e221"; -} -.glyphicon-hourglass:before { - content: "\231b"; -} -.glyphicon-lamp:before { - content: "\e223"; -} -.glyphicon-duplicate:before { - content: "\e224"; -} -.glyphicon-piggy-bank:before { - content: "\e225"; -} -.glyphicon-scissors:before { - content: "\e226"; -} -.glyphicon-bitcoin:before { - content: "\e227"; -} -.glyphicon-btc:before { - content: "\e227"; -} -.glyphicon-xbt:before { - content: "\e227"; -} -.glyphicon-yen:before { - content: "\00a5"; -} -.glyphicon-jpy:before { - content: "\00a5"; -} -.glyphicon-ruble:before { - content: "\20bd"; -} -.glyphicon-rub:before { - content: "\20bd"; -} -.glyphicon-scale:before { - content: "\e230"; -} -.glyphicon-ice-lolly:before { - content: "\e231"; -} -.glyphicon-ice-lolly-tasted:before { - content: "\e232"; -} -.glyphicon-education:before { - content: "\e233"; -} -.glyphicon-option-horizontal:before { - content: "\e234"; -} -.glyphicon-option-vertical:before { - content: "\e235"; -} -.glyphicon-menu-hamburger:before { - content: "\e236"; -} -.glyphicon-modal-window:before { - content: "\e237"; -} -.glyphicon-oil:before { - content: "\e238"; -} -.glyphicon-grain:before { - content: "\e239"; -} -.glyphicon-sunglasses:before { - content: "\e240"; -} -.glyphicon-text-size:before { - content: "\e241"; -} -.glyphicon-text-color:before { - content: "\e242"; -} -.glyphicon-text-background:before { - content: "\e243"; -} -.glyphicon-object-align-top:before { - content: "\e244"; -} -.glyphicon-object-align-bottom:before { - content: "\e245"; -} -.glyphicon-object-align-horizontal:before { - content: "\e246"; -} -.glyphicon-object-align-left:before { - content: "\e247"; -} -.glyphicon-object-align-vertical:before { - content: "\e248"; -} -.glyphicon-object-align-right:before { - content: "\e249"; -} -.glyphicon-triangle-right:before { - content: "\e250"; -} -.glyphicon-triangle-left:before { - content: "\e251"; -} -.glyphicon-triangle-bottom:before { - content: "\e252"; -} -.glyphicon-triangle-top:before { - content: "\e253"; -} -.glyphicon-console:before { - content: "\e254"; -} -.glyphicon-superscript:before { - content: "\e255"; -} -.glyphicon-subscript:before { - content: "\e256"; -} -.glyphicon-menu-left:before { - content: "\e257"; -} -.glyphicon-menu-right:before { - content: "\e258"; -} -.glyphicon-menu-down:before { - content: "\e259"; -} -.glyphicon-menu-up:before { - content: "\e260"; -} -* { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -*:before, -*:after { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -html { - font-size: 10px; - - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} -body { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - line-height: 1.42857143; - color: #333; - background-color: #fff; -} -input, -button, -select, -textarea { - font-family: inherit; - font-size: inherit; - line-height: inherit; -} -a { - color: #337ab7; - text-decoration: none; -} -a:hover, -a:focus { - color: #23527c; - text-decoration: underline; -} -a:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -figure { - margin: 0; -} -img { - vertical-align: middle; -} -.img-responsive, -.thumbnail > img, -.thumbnail a > img, -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - display: block; - max-width: 100%; - height: auto; -} -.img-rounded { - border-radius: 6px; -} -.img-thumbnail { - display: inline-block; - max-width: 100%; - height: auto; - padding: 4px; - line-height: 1.42857143; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 4px; - -webkit-transition: all .2s ease-in-out; - -o-transition: all .2s ease-in-out; - transition: all .2s ease-in-out; -} -.img-circle { - border-radius: 50%; -} -hr { - margin-top: 20px; - margin-bottom: 20px; - border: 0; - border-top: 1px solid #eee; -} -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; -} -.sr-only-focusable:active, -.sr-only-focusable:focus { - position: static; - width: auto; - height: auto; - margin: 0; - overflow: visible; - clip: auto; -} -[role="button"] { - cursor: pointer; -} -h1, -h2, -h3, -h4, -h5, -h6, -.h1, -.h2, -.h3, -.h4, -.h5, -.h6 { - font-family: inherit; - font-weight: 500; - line-height: 1.1; - color: inherit; -} -h1 small, -h2 small, -h3 small, -h4 small, -h5 small, -h6 small, -.h1 small, -.h2 small, -.h3 small, -.h4 small, -.h5 small, -.h6 small, -h1 .small, -h2 .small, -h3 .small, -h4 .small, -h5 .small, -h6 .small, -.h1 .small, -.h2 .small, -.h3 .small, -.h4 .small, -.h5 .small, -.h6 .small { - font-weight: normal; - line-height: 1; - color: #777; -} -h1, -.h1, -h2, -.h2, -h3, -.h3 { - margin-top: 20px; - margin-bottom: 10px; -} -h1 small, -.h1 small, -h2 small, -.h2 small, -h3 small, -.h3 small, -h1 .small, -.h1 .small, -h2 .small, -.h2 .small, -h3 .small, -.h3 .small { - font-size: 65%; -} -h4, -.h4, -h5, -.h5, -h6, -.h6 { - margin-top: 10px; - margin-bottom: 10px; -} -h4 small, -.h4 small, -h5 small, -.h5 small, -h6 small, -.h6 small, -h4 .small, -.h4 .small, -h5 .small, -.h5 .small, -h6 .small, -.h6 .small { - font-size: 75%; -} -h1, -.h1 { - font-size: 36px; -} -h2, -.h2 { - font-size: 30px; -} -h3, -.h3 { - font-size: 24px; -} -h4, -.h4 { - font-size: 18px; -} -h5, -.h5 { - font-size: 14px; -} -h6, -.h6 { - font-size: 12px; -} -p { - margin: 0 0 10px; -} -.lead { - margin-bottom: 20px; - font-size: 16px; - font-weight: 300; - line-height: 1.4; -} -@media (min-width: 768px) { - .lead { - font-size: 21px; - } -} -small, -.small { - font-size: 85%; -} -mark, -.mark { - padding: .2em; - background-color: #fcf8e3; -} -.text-left { - text-align: left; -} -.text-right { - text-align: right; -} -.text-center { - text-align: center; -} -.text-justify { - text-align: justify; -} -.text-nowrap { - white-space: nowrap; -} -.text-lowercase { - text-transform: lowercase; -} -.text-uppercase { - text-transform: uppercase; -} -.text-capitalize { - text-transform: capitalize; -} -.text-muted { - color: #777; -} -.text-primary { - color: #337ab7; -} -a.text-primary:hover { - color: #286090; -} -.text-success { - color: #3c763d; -} -a.text-success:hover { - color: #2b542c; -} -.text-info { - color: #31708f; -} -a.text-info:hover { - color: #245269; -} -.text-warning { - color: #8a6d3b; -} -a.text-warning:hover { - color: #66512c; -} -.text-danger { - color: #a94442; -} -a.text-danger:hover { - color: #843534; -} -.bg-primary { - color: #fff; - background-color: #337ab7; -} -a.bg-primary:hover { - background-color: #286090; -} -.bg-success { - background-color: #dff0d8; -} -a.bg-success:hover { - background-color: #c1e2b3; -} -.bg-info { - background-color: #d9edf7; -} -a.bg-info:hover { - background-color: #afd9ee; -} -.bg-warning { - background-color: #fcf8e3; -} -a.bg-warning:hover { - background-color: #f7ecb5; -} -.bg-danger { - background-color: #f2dede; -} -a.bg-danger:hover { - background-color: #e4b9b9; -} -.page-header { - padding-bottom: 9px; - margin: 40px 0 20px; - border-bottom: 1px solid #eee; -} -ul, -ol { - margin-top: 0; - margin-bottom: 10px; -} -ul ul, -ol ul, -ul ol, -ol ol { - margin-bottom: 0; -} -.list-unstyled { - padding-left: 0; - list-style: none; -} -.list-inline { - padding-left: 0; - margin-left: -5px; - list-style: none; -} -.list-inline > li { - display: inline-block; - padding-right: 5px; - padding-left: 5px; -} -dl { - margin-top: 0; - margin-bottom: 20px; -} -dt, -dd { - line-height: 1.42857143; -} -dt { - font-weight: bold; -} -dd { - margin-left: 0; -} -@media (min-width: 768px) { - .dl-horizontal dt { - float: left; - width: 160px; - overflow: hidden; - clear: left; - text-align: right; - text-overflow: ellipsis; - white-space: nowrap; - } - .dl-horizontal dd { - margin-left: 180px; - } -} -abbr[title], -abbr[data-original-title] { - cursor: help; - border-bottom: 1px dotted #777; -} -.initialism { - font-size: 90%; - text-transform: uppercase; -} -blockquote { - padding: 10px 20px; - margin: 0 0 20px; - font-size: 17.5px; - border-left: 5px solid #eee; -} -blockquote p:last-child, -blockquote ul:last-child, -blockquote ol:last-child { - margin-bottom: 0; -} -blockquote footer, -blockquote small, -blockquote .small { - display: block; - font-size: 80%; - line-height: 1.42857143; - color: #777; -} -blockquote footer:before, -blockquote small:before, -blockquote .small:before { - content: '\2014 \00A0'; -} -.blockquote-reverse, -blockquote.pull-right { - padding-right: 15px; - padding-left: 0; - text-align: right; - border-right: 5px solid #eee; - border-left: 0; -} -.blockquote-reverse footer:before, -blockquote.pull-right footer:before, -.blockquote-reverse small:before, -blockquote.pull-right small:before, -.blockquote-reverse .small:before, -blockquote.pull-right .small:before { - content: ''; -} -.blockquote-reverse footer:after, -blockquote.pull-right footer:after, -.blockquote-reverse small:after, -blockquote.pull-right small:after, -.blockquote-reverse .small:after, -blockquote.pull-right .small:after { - content: '\00A0 \2014'; -} -address { - margin-bottom: 20px; - font-style: normal; - line-height: 1.42857143; -} -code, -kbd, -pre, -samp { - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; -} -code { - padding: 2px 4px; - font-size: 90%; - color: #c7254e; - background-color: #f9f2f4; - border-radius: 4px; -} -kbd { - padding: 2px 4px; - font-size: 90%; - color: #fff; - background-color: #333; - border-radius: 3px; - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); -} -kbd kbd { - padding: 0; - font-size: 100%; - font-weight: bold; - -webkit-box-shadow: none; - box-shadow: none; -} -pre { - display: block; - padding: 9.5px; - margin: 0 0 10px; - font-size: 13px; - line-height: 1.42857143; - color: #333; - word-break: break-all; - word-wrap: break-word; - background-color: #f5f5f5; - border: 1px solid #ccc; - border-radius: 4px; -} -pre code { - padding: 0; - font-size: inherit; - color: inherit; - white-space: pre-wrap; - background-color: transparent; - border-radius: 0; -} -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; -} -.container { - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; -} -@media (min-width: 768px) { - .container { - width: 750px; - } -} -@media (min-width: 992px) { - .container { - width: 970px; - } -} -@media (min-width: 1200px) { - .container { - width: 1170px; - } -} -.container-fluid { - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; -} -.row { - margin-right: -15px; - margin-left: -15px; -} -.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { - position: relative; - min-height: 1px; - padding-right: 15px; - padding-left: 15px; -} -.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { - float: left; -} -.col-xs-12 { - width: 100%; -} -.col-xs-11 { - width: 91.66666667%; -} -.col-xs-10 { - width: 83.33333333%; -} -.col-xs-9 { - width: 75%; -} -.col-xs-8 { - width: 66.66666667%; -} -.col-xs-7 { - width: 58.33333333%; -} -.col-xs-6 { - width: 50%; -} -.col-xs-5 { - width: 41.66666667%; -} -.col-xs-4 { - width: 33.33333333%; -} -.col-xs-3 { - width: 25%; -} -.col-xs-2 { - width: 16.66666667%; -} -.col-xs-1 { - width: 8.33333333%; -} -.col-xs-pull-12 { - right: 100%; -} -.col-xs-pull-11 { - right: 91.66666667%; -} -.col-xs-pull-10 { - right: 83.33333333%; -} -.col-xs-pull-9 { - right: 75%; -} -.col-xs-pull-8 { - right: 66.66666667%; -} -.col-xs-pull-7 { - right: 58.33333333%; -} -.col-xs-pull-6 { - right: 50%; -} -.col-xs-pull-5 { - right: 41.66666667%; -} -.col-xs-pull-4 { - right: 33.33333333%; -} -.col-xs-pull-3 { - right: 25%; -} -.col-xs-pull-2 { - right: 16.66666667%; -} -.col-xs-pull-1 { - right: 8.33333333%; -} -.col-xs-pull-0 { - right: auto; -} -.col-xs-push-12 { - left: 100%; -} -.col-xs-push-11 { - left: 91.66666667%; -} -.col-xs-push-10 { - left: 83.33333333%; -} -.col-xs-push-9 { - left: 75%; -} -.col-xs-push-8 { - left: 66.66666667%; -} -.col-xs-push-7 { - left: 58.33333333%; -} -.col-xs-push-6 { - left: 50%; -} -.col-xs-push-5 { - left: 41.66666667%; -} -.col-xs-push-4 { - left: 33.33333333%; -} -.col-xs-push-3 { - left: 25%; -} -.col-xs-push-2 { - left: 16.66666667%; -} -.col-xs-push-1 { - left: 8.33333333%; -} -.col-xs-push-0 { - left: auto; -} -.col-xs-offset-12 { - margin-left: 100%; -} -.col-xs-offset-11 { - margin-left: 91.66666667%; -} -.col-xs-offset-10 { - margin-left: 83.33333333%; -} -.col-xs-offset-9 { - margin-left: 75%; -} -.col-xs-offset-8 { - margin-left: 66.66666667%; -} -.col-xs-offset-7 { - margin-left: 58.33333333%; -} -.col-xs-offset-6 { - margin-left: 50%; -} -.col-xs-offset-5 { - margin-left: 41.66666667%; -} -.col-xs-offset-4 { - margin-left: 33.33333333%; -} -.col-xs-offset-3 { - margin-left: 25%; -} -.col-xs-offset-2 { - margin-left: 16.66666667%; -} -.col-xs-offset-1 { - margin-left: 8.33333333%; -} -.col-xs-offset-0 { - margin-left: 0; -} -@media (min-width: 768px) { - .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { - float: left; - } - .col-sm-12 { - width: 100%; - } - .col-sm-11 { - width: 91.66666667%; - } - .col-sm-10 { - width: 83.33333333%; - } - .col-sm-9 { - width: 75%; - } - .col-sm-8 { - width: 66.66666667%; - } - .col-sm-7 { - width: 58.33333333%; - } - .col-sm-6 { - width: 50%; - } - .col-sm-5 { - width: 41.66666667%; - } - .col-sm-4 { - width: 33.33333333%; - } - .col-sm-3 { - width: 25%; - } - .col-sm-2 { - width: 16.66666667%; - } - .col-sm-1 { - width: 8.33333333%; - } - .col-sm-pull-12 { - right: 100%; - } - .col-sm-pull-11 { - right: 91.66666667%; - } - .col-sm-pull-10 { - right: 83.33333333%; - } - .col-sm-pull-9 { - right: 75%; - } - .col-sm-pull-8 { - right: 66.66666667%; - } - .col-sm-pull-7 { - right: 58.33333333%; - } - .col-sm-pull-6 { - right: 50%; - } - .col-sm-pull-5 { - right: 41.66666667%; - } - .col-sm-pull-4 { - right: 33.33333333%; - } - .col-sm-pull-3 { - right: 25%; - } - .col-sm-pull-2 { - right: 16.66666667%; - } - .col-sm-pull-1 { - right: 8.33333333%; - } - .col-sm-pull-0 { - right: auto; - } - .col-sm-push-12 { - left: 100%; - } - .col-sm-push-11 { - left: 91.66666667%; - } - .col-sm-push-10 { - left: 83.33333333%; - } - .col-sm-push-9 { - left: 75%; - } - .col-sm-push-8 { - left: 66.66666667%; - } - .col-sm-push-7 { - left: 58.33333333%; - } - .col-sm-push-6 { - left: 50%; - } - .col-sm-push-5 { - left: 41.66666667%; - } - .col-sm-push-4 { - left: 33.33333333%; - } - .col-sm-push-3 { - left: 25%; - } - .col-sm-push-2 { - left: 16.66666667%; - } - .col-sm-push-1 { - left: 8.33333333%; - } - .col-sm-push-0 { - left: auto; - } - .col-sm-offset-12 { - margin-left: 100%; - } - .col-sm-offset-11 { - margin-left: 91.66666667%; - } - .col-sm-offset-10 { - margin-left: 83.33333333%; - } - .col-sm-offset-9 { - margin-left: 75%; - } - .col-sm-offset-8 { - margin-left: 66.66666667%; - } - .col-sm-offset-7 { - margin-left: 58.33333333%; - } - .col-sm-offset-6 { - margin-left: 50%; - } - .col-sm-offset-5 { - margin-left: 41.66666667%; - } - .col-sm-offset-4 { - margin-left: 33.33333333%; - } - .col-sm-offset-3 { - margin-left: 25%; - } - .col-sm-offset-2 { - margin-left: 16.66666667%; - } - .col-sm-offset-1 { - margin-left: 8.33333333%; - } - .col-sm-offset-0 { - margin-left: 0; - } -} -@media (min-width: 992px) { - .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { - float: left; - } - .col-md-12 { - width: 100%; - } - .col-md-11 { - width: 91.66666667%; - } - .col-md-10 { - width: 83.33333333%; - } - .col-md-9 { - width: 75%; - } - .col-md-8 { - width: 66.66666667%; - } - .col-md-7 { - width: 58.33333333%; - } - .col-md-6 { - width: 50%; - } - .col-md-5 { - width: 41.66666667%; - } - .col-md-4 { - width: 33.33333333%; - } - .col-md-3 { - width: 25%; - } - .col-md-2 { - width: 16.66666667%; - } - .col-md-1 { - width: 8.33333333%; - } - .col-md-pull-12 { - right: 100%; - } - .col-md-pull-11 { - right: 91.66666667%; - } - .col-md-pull-10 { - right: 83.33333333%; - } - .col-md-pull-9 { - right: 75%; - } - .col-md-pull-8 { - right: 66.66666667%; - } - .col-md-pull-7 { - right: 58.33333333%; - } - .col-md-pull-6 { - right: 50%; - } - .col-md-pull-5 { - right: 41.66666667%; - } - .col-md-pull-4 { - right: 33.33333333%; - } - .col-md-pull-3 { - right: 25%; - } - .col-md-pull-2 { - right: 16.66666667%; - } - .col-md-pull-1 { - right: 8.33333333%; - } - .col-md-pull-0 { - right: auto; - } - .col-md-push-12 { - left: 100%; - } - .col-md-push-11 { - left: 91.66666667%; - } - .col-md-push-10 { - left: 83.33333333%; - } - .col-md-push-9 { - left: 75%; - } - .col-md-push-8 { - left: 66.66666667%; - } - .col-md-push-7 { - left: 58.33333333%; - } - .col-md-push-6 { - left: 50%; - } - .col-md-push-5 { - left: 41.66666667%; - } - .col-md-push-4 { - left: 33.33333333%; - } - .col-md-push-3 { - left: 25%; - } - .col-md-push-2 { - left: 16.66666667%; - } - .col-md-push-1 { - left: 8.33333333%; - } - .col-md-push-0 { - left: auto; - } - .col-md-offset-12 { - margin-left: 100%; - } - .col-md-offset-11 { - margin-left: 91.66666667%; - } - .col-md-offset-10 { - margin-left: 83.33333333%; - } - .col-md-offset-9 { - margin-left: 75%; - } - .col-md-offset-8 { - margin-left: 66.66666667%; - } - .col-md-offset-7 { - margin-left: 58.33333333%; - } - .col-md-offset-6 { - margin-left: 50%; - } - .col-md-offset-5 { - margin-left: 41.66666667%; - } - .col-md-offset-4 { - margin-left: 33.33333333%; - } - .col-md-offset-3 { - margin-left: 25%; - } - .col-md-offset-2 { - margin-left: 16.66666667%; - } - .col-md-offset-1 { - margin-left: 8.33333333%; - } - .col-md-offset-0 { - margin-left: 0; - } -} -@media (min-width: 1200px) { - .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { - float: left; - } - .col-lg-12 { - width: 100%; - } - .col-lg-11 { - width: 91.66666667%; - } - .col-lg-10 { - width: 83.33333333%; - } - .col-lg-9 { - width: 75%; - } - .col-lg-8 { - width: 66.66666667%; - } - .col-lg-7 { - width: 58.33333333%; - } - .col-lg-6 { - width: 50%; - } - .col-lg-5 { - width: 41.66666667%; - } - .col-lg-4 { - width: 33.33333333%; - } - .col-lg-3 { - width: 25%; - } - .col-lg-2 { - width: 16.66666667%; - } - .col-lg-1 { - width: 8.33333333%; - } - .col-lg-pull-12 { - right: 100%; - } - .col-lg-pull-11 { - right: 91.66666667%; - } - .col-lg-pull-10 { - right: 83.33333333%; - } - .col-lg-pull-9 { - right: 75%; - } - .col-lg-pull-8 { - right: 66.66666667%; - } - .col-lg-pull-7 { - right: 58.33333333%; - } - .col-lg-pull-6 { - right: 50%; - } - .col-lg-pull-5 { - right: 41.66666667%; - } - .col-lg-pull-4 { - right: 33.33333333%; - } - .col-lg-pull-3 { - right: 25%; - } - .col-lg-pull-2 { - right: 16.66666667%; - } - .col-lg-pull-1 { - right: 8.33333333%; - } - .col-lg-pull-0 { - right: auto; - } - .col-lg-push-12 { - left: 100%; - } - .col-lg-push-11 { - left: 91.66666667%; - } - .col-lg-push-10 { - left: 83.33333333%; - } - .col-lg-push-9 { - left: 75%; - } - .col-lg-push-8 { - left: 66.66666667%; - } - .col-lg-push-7 { - left: 58.33333333%; - } - .col-lg-push-6 { - left: 50%; - } - .col-lg-push-5 { - left: 41.66666667%; - } - .col-lg-push-4 { - left: 33.33333333%; - } - .col-lg-push-3 { - left: 25%; - } - .col-lg-push-2 { - left: 16.66666667%; - } - .col-lg-push-1 { - left: 8.33333333%; - } - .col-lg-push-0 { - left: auto; - } - .col-lg-offset-12 { - margin-left: 100%; - } - .col-lg-offset-11 { - margin-left: 91.66666667%; - } - .col-lg-offset-10 { - margin-left: 83.33333333%; - } - .col-lg-offset-9 { - margin-left: 75%; - } - .col-lg-offset-8 { - margin-left: 66.66666667%; - } - .col-lg-offset-7 { - margin-left: 58.33333333%; - } - .col-lg-offset-6 { - margin-left: 50%; - } - .col-lg-offset-5 { - margin-left: 41.66666667%; - } - .col-lg-offset-4 { - margin-left: 33.33333333%; - } - .col-lg-offset-3 { - margin-left: 25%; - } - .col-lg-offset-2 { - margin-left: 16.66666667%; - } - .col-lg-offset-1 { - margin-left: 8.33333333%; - } - .col-lg-offset-0 { - margin-left: 0; - } -} -table { - background-color: transparent; -} -caption { - padding-top: 8px; - padding-bottom: 8px; - color: #777; - text-align: left; -} -th { - text-align: left; -} -.table { - width: 100%; - max-width: 100%; - margin-bottom: 20px; -} -.table > thead > tr > th, -.table > tbody > tr > th, -.table > tfoot > tr > th, -.table > thead > tr > td, -.table > tbody > tr > td, -.table > tfoot > tr > td { - padding: 8px; - line-height: 1.42857143; - vertical-align: top; - border-top: 1px solid #ddd; -} -.table > thead > tr > th { - vertical-align: bottom; - border-bottom: 2px solid #ddd; -} -.table > caption + thead > tr:first-child > th, -.table > colgroup + thead > tr:first-child > th, -.table > thead:first-child > tr:first-child > th, -.table > caption + thead > tr:first-child > td, -.table > colgroup + thead > tr:first-child > td, -.table > thead:first-child > tr:first-child > td { - border-top: 0; -} -.table > tbody + tbody { - border-top: 2px solid #ddd; -} -.table .table { - background-color: #fff; -} -.table-condensed > thead > tr > th, -.table-condensed > tbody > tr > th, -.table-condensed > tfoot > tr > th, -.table-condensed > thead > tr > td, -.table-condensed > tbody > tr > td, -.table-condensed > tfoot > tr > td { - padding: 5px; -} -.table-bordered { - border: 1px solid #ddd; -} -.table-bordered > thead > tr > th, -.table-bordered > tbody > tr > th, -.table-bordered > tfoot > tr > th, -.table-bordered > thead > tr > td, -.table-bordered > tbody > tr > td, -.table-bordered > tfoot > tr > td { - border: 1px solid #ddd; -} -.table-bordered > thead > tr > th, -.table-bordered > thead > tr > td { - border-bottom-width: 2px; -} -.table-striped > tbody > tr:nth-of-type(odd) { - background-color: #f9f9f9; -} -.table-hover > tbody > tr:hover { - background-color: #f5f5f5; -} -table col[class*="col-"] { - position: static; - display: table-column; - float: none; -} -table td[class*="col-"], -table th[class*="col-"] { - position: static; - display: table-cell; - float: none; -} -.table > thead > tr > td.active, -.table > tbody > tr > td.active, -.table > tfoot > tr > td.active, -.table > thead > tr > th.active, -.table > tbody > tr > th.active, -.table > tfoot > tr > th.active, -.table > thead > tr.active > td, -.table > tbody > tr.active > td, -.table > tfoot > tr.active > td, -.table > thead > tr.active > th, -.table > tbody > tr.active > th, -.table > tfoot > tr.active > th { - background-color: #f5f5f5; -} -.table-hover > tbody > tr > td.active:hover, -.table-hover > tbody > tr > th.active:hover, -.table-hover > tbody > tr.active:hover > td, -.table-hover > tbody > tr:hover > .active, -.table-hover > tbody > tr.active:hover > th { - background-color: #e8e8e8; -} -.table > thead > tr > td.success, -.table > tbody > tr > td.success, -.table > tfoot > tr > td.success, -.table > thead > tr > th.success, -.table > tbody > tr > th.success, -.table > tfoot > tr > th.success, -.table > thead > tr.success > td, -.table > tbody > tr.success > td, -.table > tfoot > tr.success > td, -.table > thead > tr.success > th, -.table > tbody > tr.success > th, -.table > tfoot > tr.success > th { - background-color: #dff0d8; -} -.table-hover > tbody > tr > td.success:hover, -.table-hover > tbody > tr > th.success:hover, -.table-hover > tbody > tr.success:hover > td, -.table-hover > tbody > tr:hover > .success, -.table-hover > tbody > tr.success:hover > th { - background-color: #d0e9c6; -} -.table > thead > tr > td.info, -.table > tbody > tr > td.info, -.table > tfoot > tr > td.info, -.table > thead > tr > th.info, -.table > tbody > tr > th.info, -.table > tfoot > tr > th.info, -.table > thead > tr.info > td, -.table > tbody > tr.info > td, -.table > tfoot > tr.info > td, -.table > thead > tr.info > th, -.table > tbody > tr.info > th, -.table > tfoot > tr.info > th { - background-color: #d9edf7; -} -.table-hover > tbody > tr > td.info:hover, -.table-hover > tbody > tr > th.info:hover, -.table-hover > tbody > tr.info:hover > td, -.table-hover > tbody > tr:hover > .info, -.table-hover > tbody > tr.info:hover > th { - background-color: #c4e3f3; -} -.table > thead > tr > td.warning, -.table > tbody > tr > td.warning, -.table > tfoot > tr > td.warning, -.table > thead > tr > th.warning, -.table > tbody > tr > th.warning, -.table > tfoot > tr > th.warning, -.table > thead > tr.warning > td, -.table > tbody > tr.warning > td, -.table > tfoot > tr.warning > td, -.table > thead > tr.warning > th, -.table > tbody > tr.warning > th, -.table > tfoot > tr.warning > th { - background-color: #fcf8e3; -} -.table-hover > tbody > tr > td.warning:hover, -.table-hover > tbody > tr > th.warning:hover, -.table-hover > tbody > tr.warning:hover > td, -.table-hover > tbody > tr:hover > .warning, -.table-hover > tbody > tr.warning:hover > th { - background-color: #faf2cc; -} -.table > thead > tr > td.danger, -.table > tbody > tr > td.danger, -.table > tfoot > tr > td.danger, -.table > thead > tr > th.danger, -.table > tbody > tr > th.danger, -.table > tfoot > tr > th.danger, -.table > thead > tr.danger > td, -.table > tbody > tr.danger > td, -.table > tfoot > tr.danger > td, -.table > thead > tr.danger > th, -.table > tbody > tr.danger > th, -.table > tfoot > tr.danger > th { - background-color: #f2dede; -} -.table-hover > tbody > tr > td.danger:hover, -.table-hover > tbody > tr > th.danger:hover, -.table-hover > tbody > tr.danger:hover > td, -.table-hover > tbody > tr:hover > .danger, -.table-hover > tbody > tr.danger:hover > th { - background-color: #ebcccc; -} -.table-responsive { - min-height: .01%; - overflow-x: auto; -} -@media screen and (max-width: 767px) { - .table-responsive { - width: 100%; - margin-bottom: 15px; - overflow-y: hidden; - -ms-overflow-style: -ms-autohiding-scrollbar; - border: 1px solid #ddd; - } - .table-responsive > .table { - margin-bottom: 0; - } - .table-responsive > .table > thead > tr > th, - .table-responsive > .table > tbody > tr > th, - .table-responsive > .table > tfoot > tr > th, - .table-responsive > .table > thead > tr > td, - .table-responsive > .table > tbody > tr > td, - .table-responsive > .table > tfoot > tr > td { - white-space: nowrap; - } - .table-responsive > .table-bordered { - border: 0; - } - .table-responsive > .table-bordered > thead > tr > th:first-child, - .table-responsive > .table-bordered > tbody > tr > th:first-child, - .table-responsive > .table-bordered > tfoot > tr > th:first-child, - .table-responsive > .table-bordered > thead > tr > td:first-child, - .table-responsive > .table-bordered > tbody > tr > td:first-child, - .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; - } - .table-responsive > .table-bordered > thead > tr > th:last-child, - .table-responsive > .table-bordered > tbody > tr > th:last-child, - .table-responsive > .table-bordered > tfoot > tr > th:last-child, - .table-responsive > .table-bordered > thead > tr > td:last-child, - .table-responsive > .table-bordered > tbody > tr > td:last-child, - .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; - } - .table-responsive > .table-bordered > tbody > tr:last-child > th, - .table-responsive > .table-bordered > tfoot > tr:last-child > th, - .table-responsive > .table-bordered > tbody > tr:last-child > td, - .table-responsive > .table-bordered > tfoot > tr:last-child > td { - border-bottom: 0; - } -} -fieldset { - min-width: 0; - padding: 0; - margin: 0; - border: 0; -} -legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: 20px; - font-size: 21px; - line-height: inherit; - color: #333; - border: 0; - border-bottom: 1px solid #e5e5e5; -} -label { - display: inline-block; - max-width: 100%; - margin-bottom: 5px; - font-weight: bold; -} -input[type="search"] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -input[type="radio"], -input[type="checkbox"] { - margin: 4px 0 0; - margin-top: 1px \9; - line-height: normal; -} -input[type="file"] { - display: block; -} -input[type="range"] { - display: block; - width: 100%; -} -select[multiple], -select[size] { - height: auto; -} -input[type="file"]:focus, -input[type="radio"]:focus, -input[type="checkbox"]:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -output { - display: block; - padding-top: 7px; - font-size: 14px; - line-height: 1.42857143; - color: #555; -} -.form-control { - display: block; - width: 100%; - height: 34px; - padding: 6px 12px; - font-size: 14px; - line-height: 1.42857143; - color: #555; - background-color: #fff; - background-image: none; - border: 1px solid #ccc; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; - -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; -} -.form-control:focus { - border-color: #66afe9; - outline: 0; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); -} -.form-control::-moz-placeholder { - color: #999; - opacity: 1; -} -.form-control:-ms-input-placeholder { - color: #999; -} -.form-control::-webkit-input-placeholder { - color: #999; -} -.form-control[disabled], -.form-control[readonly], -fieldset[disabled] .form-control { - background-color: #eee; - opacity: 1; -} -.form-control[disabled], -fieldset[disabled] .form-control { - cursor: not-allowed; -} -textarea.form-control { - height: auto; -} -input[type="search"] { - -webkit-appearance: none; -} -@media screen and (-webkit-min-device-pixel-ratio: 0) { - input[type="date"], - input[type="time"], - input[type="datetime-local"], - input[type="month"] { - line-height: 34px; - } - input[type="date"].input-sm, - input[type="time"].input-sm, - input[type="datetime-local"].input-sm, - input[type="month"].input-sm, - .input-group-sm input[type="date"], - .input-group-sm input[type="time"], - .input-group-sm input[type="datetime-local"], - .input-group-sm input[type="month"] { - line-height: 30px; - } - input[type="date"].input-lg, - input[type="time"].input-lg, - input[type="datetime-local"].input-lg, - input[type="month"].input-lg, - .input-group-lg input[type="date"], - .input-group-lg input[type="time"], - .input-group-lg input[type="datetime-local"], - .input-group-lg input[type="month"] { - line-height: 46px; - } -} -.form-group { - margin-bottom: 15px; -} -.radio, -.checkbox { - position: relative; - display: block; - margin-top: 10px; - margin-bottom: 10px; -} -.radio label, -.checkbox label { - min-height: 20px; - padding-left: 20px; - margin-bottom: 0; - font-weight: normal; - cursor: pointer; -} -.radio input[type="radio"], -.radio-inline input[type="radio"], -.checkbox input[type="checkbox"], -.checkbox-inline input[type="checkbox"] { - position: absolute; - margin-top: 4px \9; - margin-left: -20px; -} -.radio + .radio, -.checkbox + .checkbox { - margin-top: -5px; -} -.radio-inline, -.checkbox-inline { - position: relative; - display: inline-block; - padding-left: 20px; - margin-bottom: 0; - font-weight: normal; - vertical-align: middle; - cursor: pointer; -} -.radio-inline + .radio-inline, -.checkbox-inline + .checkbox-inline { - margin-top: 0; - margin-left: 10px; -} -input[type="radio"][disabled], -input[type="checkbox"][disabled], -input[type="radio"].disabled, -input[type="checkbox"].disabled, -fieldset[disabled] input[type="radio"], -fieldset[disabled] input[type="checkbox"] { - cursor: not-allowed; -} -.radio-inline.disabled, -.checkbox-inline.disabled, -fieldset[disabled] .radio-inline, -fieldset[disabled] .checkbox-inline { - cursor: not-allowed; -} -.radio.disabled label, -.checkbox.disabled label, -fieldset[disabled] .radio label, -fieldset[disabled] .checkbox label { - cursor: not-allowed; -} -.form-control-static { - min-height: 34px; - padding-top: 7px; - padding-bottom: 7px; - margin-bottom: 0; -} -.form-control-static.input-lg, -.form-control-static.input-sm { - padding-right: 0; - padding-left: 0; -} -.input-sm { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -select.input-sm { - height: 30px; - line-height: 30px; -} -textarea.input-sm, -select[multiple].input-sm { - height: auto; -} -.form-group-sm .form-control { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -select.form-group-sm .form-control { - height: 30px; - line-height: 30px; -} -textarea.form-group-sm .form-control, -select[multiple].form-group-sm .form-control { - height: auto; -} -.form-group-sm .form-control-static { - height: 30px; - min-height: 32px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; -} -.input-lg { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -select.input-lg { - height: 46px; - line-height: 46px; -} -textarea.input-lg, -select[multiple].input-lg { - height: auto; -} -.form-group-lg .form-control { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -select.form-group-lg .form-control { - height: 46px; - line-height: 46px; -} -textarea.form-group-lg .form-control, -select[multiple].form-group-lg .form-control { - height: auto; -} -.form-group-lg .form-control-static { - height: 46px; - min-height: 38px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; -} -.has-feedback { - position: relative; -} -.has-feedback .form-control { - padding-right: 42.5px; -} -.form-control-feedback { - position: absolute; - top: 0; - right: 0; - z-index: 2; - display: block; - width: 34px; - height: 34px; - line-height: 34px; - text-align: center; - pointer-events: none; -} -.input-lg + .form-control-feedback { - width: 46px; - height: 46px; - line-height: 46px; -} -.input-sm + .form-control-feedback { - width: 30px; - height: 30px; - line-height: 30px; -} -.has-success .help-block, -.has-success .control-label, -.has-success .radio, -.has-success .checkbox, -.has-success .radio-inline, -.has-success .checkbox-inline, -.has-success.radio label, -.has-success.checkbox label, -.has-success.radio-inline label, -.has-success.checkbox-inline label { - color: #3c763d; -} -.has-success .form-control { - border-color: #3c763d; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -} -.has-success .form-control:focus { - border-color: #2b542c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; -} -.has-success .input-group-addon { - color: #3c763d; - background-color: #dff0d8; - border-color: #3c763d; -} -.has-success .form-control-feedback { - color: #3c763d; -} -.has-warning .help-block, -.has-warning .control-label, -.has-warning .radio, -.has-warning .checkbox, -.has-warning .radio-inline, -.has-warning .checkbox-inline, -.has-warning.radio label, -.has-warning.checkbox label, -.has-warning.radio-inline label, -.has-warning.checkbox-inline label { - color: #8a6d3b; -} -.has-warning .form-control { - border-color: #8a6d3b; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -} -.has-warning .form-control:focus { - border-color: #66512c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; -} -.has-warning .input-group-addon { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #8a6d3b; -} -.has-warning .form-control-feedback { - color: #8a6d3b; -} -.has-error .help-block, -.has-error .control-label, -.has-error .radio, -.has-error .checkbox, -.has-error .radio-inline, -.has-error .checkbox-inline, -.has-error.radio label, -.has-error.checkbox label, -.has-error.radio-inline label, -.has-error.checkbox-inline label { - color: #a94442; -} -.has-error .form-control { - border-color: #a94442; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -} -.has-error .form-control:focus { - border-color: #843534; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; -} -.has-error .input-group-addon { - color: #a94442; - background-color: #f2dede; - border-color: #a94442; -} -.has-error .form-control-feedback { - color: #a94442; -} -.has-feedback label ~ .form-control-feedback { - top: 25px; -} -.has-feedback label.sr-only ~ .form-control-feedback { - top: 0; -} -.help-block { - display: block; - margin-top: 5px; - margin-bottom: 10px; - color: #737373; -} -@media (min-width: 768px) { - .form-inline .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .form-inline .form-control-static { - display: inline-block; - } - .form-inline .input-group { - display: inline-table; - vertical-align: middle; - } - .form-inline .input-group .input-group-addon, - .form-inline .input-group .input-group-btn, - .form-inline .input-group .form-control { - width: auto; - } - .form-inline .input-group > .form-control { - width: 100%; - } - .form-inline .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio, - .form-inline .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio label, - .form-inline .checkbox label { - padding-left: 0; - } - .form-inline .radio input[type="radio"], - .form-inline .checkbox input[type="checkbox"] { - position: relative; - margin-left: 0; - } - .form-inline .has-feedback .form-control-feedback { - top: 0; - } -} -.form-horizontal .radio, -.form-horizontal .checkbox, -.form-horizontal .radio-inline, -.form-horizontal .checkbox-inline { - padding-top: 7px; - margin-top: 0; - margin-bottom: 0; -} -.form-horizontal .radio, -.form-horizontal .checkbox { - min-height: 27px; -} -.form-horizontal .form-group { - margin-right: -15px; - margin-left: -15px; -} -@media (min-width: 768px) { - .form-horizontal .control-label { - padding-top: 7px; - margin-bottom: 0; - text-align: right; - } -} -.form-horizontal .has-feedback .form-control-feedback { - right: 15px; -} -@media (min-width: 768px) { - .form-horizontal .form-group-lg .control-label { - padding-top: 14.333333px; - } -} -@media (min-width: 768px) { - .form-horizontal .form-group-sm .control-label { - padding-top: 6px; - } -} -.btn { - display: inline-block; - padding: 6px 12px; - margin-bottom: 0; - font-size: 14px; - font-weight: normal; - line-height: 1.42857143; - text-align: center; - white-space: nowrap; - vertical-align: middle; - -ms-touch-action: manipulation; - touch-action: manipulation; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-image: none; - border: 1px solid transparent; - border-radius: 4px; -} -.btn:focus, -.btn:active:focus, -.btn.active:focus, -.btn.focus, -.btn:active.focus, -.btn.active.focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.btn:hover, -.btn:focus, -.btn.focus { - color: #333; - text-decoration: none; -} -.btn:active, -.btn.active { - background-image: none; - outline: 0; - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); -} -.btn.disabled, -.btn[disabled], -fieldset[disabled] .btn { - pointer-events: none; - cursor: not-allowed; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - box-shadow: none; - opacity: .65; -} -.btn-default { - color: #333; - background-color: #fff; - border-color: #ccc; -} -.btn-default:hover, -.btn-default:focus, -.btn-default.focus, -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - color: #333; - background-color: #e6e6e6; - border-color: #adadad; -} -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - background-image: none; -} -.btn-default.disabled, -.btn-default[disabled], -fieldset[disabled] .btn-default, -.btn-default.disabled:hover, -.btn-default[disabled]:hover, -fieldset[disabled] .btn-default:hover, -.btn-default.disabled:focus, -.btn-default[disabled]:focus, -fieldset[disabled] .btn-default:focus, -.btn-default.disabled.focus, -.btn-default[disabled].focus, -fieldset[disabled] .btn-default.focus, -.btn-default.disabled:active, -.btn-default[disabled]:active, -fieldset[disabled] .btn-default:active, -.btn-default.disabled.active, -.btn-default[disabled].active, -fieldset[disabled] .btn-default.active { - background-color: #fff; - border-color: #ccc; -} -.btn-default .badge { - color: #fff; - background-color: #333; -} -.btn-primary { - color: #fff; - background-color: #337ab7; - border-color: #2e6da4; -} -.btn-primary:hover, -.btn-primary:focus, -.btn-primary.focus, -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - color: #fff; - background-color: #286090; - border-color: #204d74; -} -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - background-image: none; -} -.btn-primary.disabled, -.btn-primary[disabled], -fieldset[disabled] .btn-primary, -.btn-primary.disabled:hover, -.btn-primary[disabled]:hover, -fieldset[disabled] .btn-primary:hover, -.btn-primary.disabled:focus, -.btn-primary[disabled]:focus, -fieldset[disabled] .btn-primary:focus, -.btn-primary.disabled.focus, -.btn-primary[disabled].focus, -fieldset[disabled] .btn-primary.focus, -.btn-primary.disabled:active, -.btn-primary[disabled]:active, -fieldset[disabled] .btn-primary:active, -.btn-primary.disabled.active, -.btn-primary[disabled].active, -fieldset[disabled] .btn-primary.active { - background-color: #337ab7; - border-color: #2e6da4; -} -.btn-primary .badge { - color: #337ab7; - background-color: #fff; -} -.btn-success { - color: #fff; - background-color: #5cb85c; - border-color: #4cae4c; -} -.btn-success:hover, -.btn-success:focus, -.btn-success.focus, -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - color: #fff; - background-color: #449d44; - border-color: #398439; -} -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - background-image: none; -} -.btn-success.disabled, -.btn-success[disabled], -fieldset[disabled] .btn-success, -.btn-success.disabled:hover, -.btn-success[disabled]:hover, -fieldset[disabled] .btn-success:hover, -.btn-success.disabled:focus, -.btn-success[disabled]:focus, -fieldset[disabled] .btn-success:focus, -.btn-success.disabled.focus, -.btn-success[disabled].focus, -fieldset[disabled] .btn-success.focus, -.btn-success.disabled:active, -.btn-success[disabled]:active, -fieldset[disabled] .btn-success:active, -.btn-success.disabled.active, -.btn-success[disabled].active, -fieldset[disabled] .btn-success.active { - background-color: #5cb85c; - border-color: #4cae4c; -} -.btn-success .badge { - color: #5cb85c; - background-color: #fff; -} -.btn-info { - color: #fff; - background-color: #5bc0de; - border-color: #46b8da; -} -.btn-info:hover, -.btn-info:focus, -.btn-info.focus, -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - color: #fff; - background-color: #31b0d5; - border-color: #269abc; -} -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - background-image: none; -} -.btn-info.disabled, -.btn-info[disabled], -fieldset[disabled] .btn-info, -.btn-info.disabled:hover, -.btn-info[disabled]:hover, -fieldset[disabled] .btn-info:hover, -.btn-info.disabled:focus, -.btn-info[disabled]:focus, -fieldset[disabled] .btn-info:focus, -.btn-info.disabled.focus, -.btn-info[disabled].focus, -fieldset[disabled] .btn-info.focus, -.btn-info.disabled:active, -.btn-info[disabled]:active, -fieldset[disabled] .btn-info:active, -.btn-info.disabled.active, -.btn-info[disabled].active, -fieldset[disabled] .btn-info.active { - background-color: #5bc0de; - border-color: #46b8da; -} -.btn-info .badge { - color: #5bc0de; - background-color: #fff; -} -.btn-warning { - color: #fff; - background-color: #f0ad4e; - border-color: #eea236; -} -.btn-warning:hover, -.btn-warning:focus, -.btn-warning.focus, -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - color: #fff; - background-color: #ec971f; - border-color: #d58512; -} -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - background-image: none; -} -.btn-warning.disabled, -.btn-warning[disabled], -fieldset[disabled] .btn-warning, -.btn-warning.disabled:hover, -.btn-warning[disabled]:hover, -fieldset[disabled] .btn-warning:hover, -.btn-warning.disabled:focus, -.btn-warning[disabled]:focus, -fieldset[disabled] .btn-warning:focus, -.btn-warning.disabled.focus, -.btn-warning[disabled].focus, -fieldset[disabled] .btn-warning.focus, -.btn-warning.disabled:active, -.btn-warning[disabled]:active, -fieldset[disabled] .btn-warning:active, -.btn-warning.disabled.active, -.btn-warning[disabled].active, -fieldset[disabled] .btn-warning.active { - background-color: #f0ad4e; - border-color: #eea236; -} -.btn-warning .badge { - color: #f0ad4e; - background-color: #fff; -} -.btn-danger { - color: #fff; - background-color: #d9534f; - border-color: #d43f3a; -} -.btn-danger:hover, -.btn-danger:focus, -.btn-danger.focus, -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - color: #fff; - background-color: #c9302c; - border-color: #ac2925; -} -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - background-image: none; -} -.btn-danger.disabled, -.btn-danger[disabled], -fieldset[disabled] .btn-danger, -.btn-danger.disabled:hover, -.btn-danger[disabled]:hover, -fieldset[disabled] .btn-danger:hover, -.btn-danger.disabled:focus, -.btn-danger[disabled]:focus, -fieldset[disabled] .btn-danger:focus, -.btn-danger.disabled.focus, -.btn-danger[disabled].focus, -fieldset[disabled] .btn-danger.focus, -.btn-danger.disabled:active, -.btn-danger[disabled]:active, -fieldset[disabled] .btn-danger:active, -.btn-danger.disabled.active, -.btn-danger[disabled].active, -fieldset[disabled] .btn-danger.active { - background-color: #d9534f; - border-color: #d43f3a; -} -.btn-danger .badge { - color: #d9534f; - background-color: #fff; -} -.btn-link { - font-weight: normal; - color: #337ab7; - border-radius: 0; -} -.btn-link, -.btn-link:active, -.btn-link.active, -.btn-link[disabled], -fieldset[disabled] .btn-link { - background-color: transparent; - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-link, -.btn-link:hover, -.btn-link:focus, -.btn-link:active { - border-color: transparent; -} -.btn-link:hover, -.btn-link:focus { - color: #23527c; - text-decoration: underline; - background-color: transparent; -} -.btn-link[disabled]:hover, -fieldset[disabled] .btn-link:hover, -.btn-link[disabled]:focus, -fieldset[disabled] .btn-link:focus { - color: #777; - text-decoration: none; -} -.btn-lg, -.btn-group-lg > .btn { - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -.btn-sm, -.btn-group-sm > .btn { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.btn-xs, -.btn-group-xs > .btn { - padding: 1px 5px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.btn-block { - display: block; - width: 100%; -} -.btn-block + .btn-block { - margin-top: 5px; -} -input[type="submit"].btn-block, -input[type="reset"].btn-block, -input[type="button"].btn-block { - width: 100%; -} -.fade { - opacity: 0; - -webkit-transition: opacity .15s linear; - -o-transition: opacity .15s linear; - transition: opacity .15s linear; -} -.fade.in { - opacity: 1; -} -.collapse { - display: none; -} -.collapse.in { - display: block; -} -tr.collapse.in { - display: table-row; -} -tbody.collapse.in { - display: table-row-group; -} -.collapsing { - position: relative; - height: 0; - overflow: hidden; - -webkit-transition-timing-function: ease; - -o-transition-timing-function: ease; - transition-timing-function: ease; - -webkit-transition-duration: .35s; - -o-transition-duration: .35s; - transition-duration: .35s; - -webkit-transition-property: height, visibility; - -o-transition-property: height, visibility; - transition-property: height, visibility; -} -.caret { - display: inline-block; - width: 0; - height: 0; - margin-left: 2px; - vertical-align: middle; - border-top: 4px dashed; - border-right: 4px solid transparent; - border-left: 4px solid transparent; -} -.dropup, -.dropdown { - position: relative; -} -.dropdown-toggle:focus { - outline: 0; -} -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 160px; - padding: 5px 0; - margin: 2px 0 0; - font-size: 14px; - text-align: left; - list-style: none; - background-color: #fff; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, .15); - border-radius: 4px; - -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); - box-shadow: 0 6px 12px rgba(0, 0, 0, .175); -} -.dropdown-menu.pull-right { - right: 0; - left: auto; -} -.dropdown-menu .divider { - height: 1px; - margin: 9px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.dropdown-menu > li > a { - display: block; - padding: 3px 20px; - clear: both; - font-weight: normal; - line-height: 1.42857143; - color: #333; - white-space: nowrap; -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - color: #262626; - text-decoration: none; - background-color: #f5f5f5; -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - color: #fff; - text-decoration: none; - background-color: #337ab7; - outline: 0; -} -.dropdown-menu > .disabled > a, -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - color: #777; -} -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - text-decoration: none; - cursor: not-allowed; - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.open > .dropdown-menu { - display: block; -} -.open > a { - outline: 0; -} -.dropdown-menu-right { - right: 0; - left: auto; -} -.dropdown-menu-left { - right: auto; - left: 0; -} -.dropdown-header { - display: block; - padding: 3px 20px; - font-size: 12px; - line-height: 1.42857143; - color: #777; - white-space: nowrap; -} -.dropdown-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 990; -} -.pull-right > .dropdown-menu { - right: 0; - left: auto; -} -.dropup .caret, -.navbar-fixed-bottom .dropdown .caret { - content: ""; - border-top: 0; - border-bottom: 4px solid; -} -.dropup .dropdown-menu, -.navbar-fixed-bottom .dropdown .dropdown-menu { - top: auto; - bottom: 100%; - margin-bottom: 2px; -} -@media (min-width: 768px) { - .navbar-right .dropdown-menu { - right: 0; - left: auto; - } - .navbar-right .dropdown-menu-left { - right: auto; - left: 0; - } -} -.btn-group, -.btn-group-vertical { - position: relative; - display: inline-block; - vertical-align: middle; -} -.btn-group > .btn, -.btn-group-vertical > .btn { - position: relative; - float: left; -} -.btn-group > .btn:hover, -.btn-group-vertical > .btn:hover, -.btn-group > .btn:focus, -.btn-group-vertical > .btn:focus, -.btn-group > .btn:active, -.btn-group-vertical > .btn:active, -.btn-group > .btn.active, -.btn-group-vertical > .btn.active { - z-index: 2; -} -.btn-group .btn + .btn, -.btn-group .btn + .btn-group, -.btn-group .btn-group + .btn, -.btn-group .btn-group + .btn-group { - margin-left: -1px; -} -.btn-toolbar { - margin-left: -5px; -} -.btn-toolbar .btn-group, -.btn-toolbar .input-group { - float: left; -} -.btn-toolbar > .btn, -.btn-toolbar > .btn-group, -.btn-toolbar > .input-group { - margin-left: 5px; -} -.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { - border-radius: 0; -} -.btn-group > .btn:first-child { - margin-left: 0; -} -.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.btn-group > .btn:last-child:not(:first-child), -.btn-group > .dropdown-toggle:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group > .btn-group { - float: left; -} -.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, -.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group .dropdown-toggle:active, -.btn-group.open .dropdown-toggle { - outline: 0; -} -.btn-group > .btn + .dropdown-toggle { - padding-right: 8px; - padding-left: 8px; -} -.btn-group > .btn-lg + .dropdown-toggle { - padding-right: 12px; - padding-left: 12px; -} -.btn-group.open .dropdown-toggle { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); -} -.btn-group.open .dropdown-toggle.btn-link { - -webkit-box-shadow: none; - box-shadow: none; -} -.btn .caret { - margin-left: 0; -} -.btn-lg .caret { - border-width: 5px 5px 0; - border-bottom-width: 0; -} -.dropup .btn-lg .caret { - border-width: 0 5px 5px; -} -.btn-group-vertical > .btn, -.btn-group-vertical > .btn-group, -.btn-group-vertical > .btn-group > .btn { - display: block; - float: none; - width: 100%; - max-width: 100%; -} -.btn-group-vertical > .btn-group > .btn { - float: none; -} -.btn-group-vertical > .btn + .btn, -.btn-group-vertical > .btn + .btn-group, -.btn-group-vertical > .btn-group + .btn, -.btn-group-vertical > .btn-group + .btn-group { - margin-top: -1px; - margin-left: 0; -} -.btn-group-vertical > .btn:not(:first-child):not(:last-child) { - border-radius: 0; -} -.btn-group-vertical > .btn:first-child:not(:last-child) { - border-top-right-radius: 4px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn:last-child:not(:first-child) { - border-top-left-radius: 0; - border-top-right-radius: 0; - border-bottom-left-radius: 4px; -} -.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.btn-group-justified { - display: table; - width: 100%; - table-layout: fixed; - border-collapse: separate; -} -.btn-group-justified > .btn, -.btn-group-justified > .btn-group { - display: table-cell; - float: none; - width: 1%; -} -.btn-group-justified > .btn-group .btn { - width: 100%; -} -.btn-group-justified > .btn-group .dropdown-menu { - left: auto; -} -[data-toggle="buttons"] > .btn input[type="radio"], -[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], -[data-toggle="buttons"] > .btn input[type="checkbox"], -[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { - position: absolute; - clip: rect(0, 0, 0, 0); - pointer-events: none; -} -.input-group { - position: relative; - display: table; - border-collapse: separate; -} -.input-group[class*="col-"] { - float: none; - padding-right: 0; - padding-left: 0; -} -.input-group .form-control { - position: relative; - z-index: 2; - float: left; - width: 100%; - margin-bottom: 0; -} -.input-group-lg > .form-control, -.input-group-lg > .input-group-addon, -.input-group-lg > .input-group-btn > .btn { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -select.input-group-lg > .form-control, -select.input-group-lg > .input-group-addon, -select.input-group-lg > .input-group-btn > .btn { - height: 46px; - line-height: 46px; -} -textarea.input-group-lg > .form-control, -textarea.input-group-lg > .input-group-addon, -textarea.input-group-lg > .input-group-btn > .btn, -select[multiple].input-group-lg > .form-control, -select[multiple].input-group-lg > .input-group-addon, -select[multiple].input-group-lg > .input-group-btn > .btn { - height: auto; -} -.input-group-sm > .form-control, -.input-group-sm > .input-group-addon, -.input-group-sm > .input-group-btn > .btn { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -select.input-group-sm > .form-control, -select.input-group-sm > .input-group-addon, -select.input-group-sm > .input-group-btn > .btn { - height: 30px; - line-height: 30px; -} -textarea.input-group-sm > .form-control, -textarea.input-group-sm > .input-group-addon, -textarea.input-group-sm > .input-group-btn > .btn, -select[multiple].input-group-sm > .form-control, -select[multiple].input-group-sm > .input-group-addon, -select[multiple].input-group-sm > .input-group-btn > .btn { - height: auto; -} -.input-group-addon, -.input-group-btn, -.input-group .form-control { - display: table-cell; -} -.input-group-addon:not(:first-child):not(:last-child), -.input-group-btn:not(:first-child):not(:last-child), -.input-group .form-control:not(:first-child):not(:last-child) { - border-radius: 0; -} -.input-group-addon, -.input-group-btn { - width: 1%; - white-space: nowrap; - vertical-align: middle; -} -.input-group-addon { - padding: 6px 12px; - font-size: 14px; - font-weight: normal; - line-height: 1; - color: #555; - text-align: center; - background-color: #eee; - border: 1px solid #ccc; - border-radius: 4px; -} -.input-group-addon.input-sm { - padding: 5px 10px; - font-size: 12px; - border-radius: 3px; -} -.input-group-addon.input-lg { - padding: 10px 16px; - font-size: 18px; - border-radius: 6px; -} -.input-group-addon input[type="radio"], -.input-group-addon input[type="checkbox"] { - margin-top: 0; -} -.input-group .form-control:first-child, -.input-group-addon:first-child, -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group > .btn, -.input-group-btn:first-child > .dropdown-toggle, -.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), -.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.input-group-addon:first-child { - border-right: 0; -} -.input-group .form-control:last-child, -.input-group-addon:last-child, -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group > .btn, -.input-group-btn:last-child > .dropdown-toggle, -.input-group-btn:first-child > .btn:not(:first-child), -.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.input-group-addon:last-child { - border-left: 0; -} -.input-group-btn { - position: relative; - font-size: 0; - white-space: nowrap; -} -.input-group-btn > .btn { - position: relative; -} -.input-group-btn > .btn + .btn { - margin-left: -1px; -} -.input-group-btn > .btn:hover, -.input-group-btn > .btn:focus, -.input-group-btn > .btn:active { - z-index: 2; -} -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group { - margin-right: -1px; -} -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group { - margin-left: -1px; -} -.nav { - padding-left: 0; - margin-bottom: 0; - list-style: none; -} -.nav > li { - position: relative; - display: block; -} -.nav > li > a { - position: relative; - display: block; - padding: 10px 15px; -} -.nav > li > a:hover, -.nav > li > a:focus { - text-decoration: none; - background-color: #eee; -} -.nav > li.disabled > a { - color: #777; -} -.nav > li.disabled > a:hover, -.nav > li.disabled > a:focus { - color: #777; - text-decoration: none; - cursor: not-allowed; - background-color: transparent; -} -.nav .open > a, -.nav .open > a:hover, -.nav .open > a:focus { - background-color: #eee; - border-color: #337ab7; -} -.nav .nav-divider { - height: 1px; - margin: 9px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.nav > li > a > img { - max-width: none; -} -.nav-tabs { - border-bottom: 1px solid #ddd; -} -.nav-tabs > li { - float: left; - margin-bottom: -1px; -} -.nav-tabs > li > a { - margin-right: 2px; - line-height: 1.42857143; - border: 1px solid transparent; - border-radius: 4px 4px 0 0; -} -.nav-tabs > li > a:hover { - border-color: #eee #eee #ddd; -} -.nav-tabs > li.active > a, -.nav-tabs > li.active > a:hover, -.nav-tabs > li.active > a:focus { - color: #555; - cursor: default; - background-color: #fff; - border: 1px solid #ddd; - border-bottom-color: transparent; -} -.nav-tabs.nav-justified { - width: 100%; - border-bottom: 0; -} -.nav-tabs.nav-justified > li { - float: none; -} -.nav-tabs.nav-justified > li > a { - margin-bottom: 5px; - text-align: center; -} -.nav-tabs.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-tabs.nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs.nav-justified > li > a { - margin-right: 0; - border-radius: 4px; -} -.nav-tabs.nav-justified > .active > a, -.nav-tabs.nav-justified > .active > a:hover, -.nav-tabs.nav-justified > .active > a:focus { - border: 1px solid #ddd; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li > a { - border-bottom: 1px solid #ddd; - border-radius: 4px 4px 0 0; - } - .nav-tabs.nav-justified > .active > a, - .nav-tabs.nav-justified > .active > a:hover, - .nav-tabs.nav-justified > .active > a:focus { - border-bottom-color: #fff; - } -} -.nav-pills > li { - float: left; -} -.nav-pills > li > a { - border-radius: 4px; -} -.nav-pills > li + li { - margin-left: 2px; -} -.nav-pills > li.active > a, -.nav-pills > li.active > a:hover, -.nav-pills > li.active > a:focus { - color: #fff; - background-color: #337ab7; -} -.nav-stacked > li { - float: none; -} -.nav-stacked > li + li { - margin-top: 2px; - margin-left: 0; -} -.nav-justified { - width: 100%; -} -.nav-justified > li { - float: none; -} -.nav-justified > li > a { - margin-bottom: 5px; - text-align: center; -} -.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; -} -@media (min-width: 768px) { - .nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs-justified { - border-bottom: 0; -} -.nav-tabs-justified > li > a { - margin-right: 0; - border-radius: 4px; -} -.nav-tabs-justified > .active > a, -.nav-tabs-justified > .active > a:hover, -.nav-tabs-justified > .active > a:focus { - border: 1px solid #ddd; -} -@media (min-width: 768px) { - .nav-tabs-justified > li > a { - border-bottom: 1px solid #ddd; - border-radius: 4px 4px 0 0; - } - .nav-tabs-justified > .active > a, - .nav-tabs-justified > .active > a:hover, - .nav-tabs-justified > .active > a:focus { - border-bottom-color: #fff; - } -} -.tab-content > .tab-pane { - display: none; -} -.tab-content > .active { - display: block; -} -.nav-tabs .dropdown-menu { - margin-top: -1px; - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.navbar { - position: relative; - min-height: 50px; - margin-bottom: 20px; - border: 1px solid transparent; -} -@media (min-width: 768px) { - .navbar { - border-radius: 4px; - } -} -@media (min-width: 768px) { - .navbar-header { - float: left; - } -} -.navbar-collapse { - padding-right: 15px; - padding-left: 15px; - overflow-x: visible; - -webkit-overflow-scrolling: touch; - border-top: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); -} -.navbar-collapse.in { - overflow-y: auto; -} -@media (min-width: 768px) { - .navbar-collapse { - width: auto; - border-top: 0; - -webkit-box-shadow: none; - box-shadow: none; - } - .navbar-collapse.collapse { - display: block !important; - height: auto !important; - padding-bottom: 0; - overflow: visible !important; - } - .navbar-collapse.in { - overflow-y: visible; - } - .navbar-fixed-top .navbar-collapse, - .navbar-static-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - padding-right: 0; - padding-left: 0; - } -} -.navbar-fixed-top .navbar-collapse, -.navbar-fixed-bottom .navbar-collapse { - max-height: 340px; -} -@media (max-device-width: 480px) and (orientation: landscape) { - .navbar-fixed-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - max-height: 200px; - } -} -.container > .navbar-header, -.container-fluid > .navbar-header, -.container > .navbar-collapse, -.container-fluid > .navbar-collapse { - margin-right: -15px; - margin-left: -15px; -} -@media (min-width: 768px) { - .container > .navbar-header, - .container-fluid > .navbar-header, - .container > .navbar-collapse, - .container-fluid > .navbar-collapse { - margin-right: 0; - margin-left: 0; - } -} -.navbar-static-top { - z-index: 1000; - border-width: 0 0 1px; -} -@media (min-width: 768px) { - .navbar-static-top { - border-radius: 0; - } -} -.navbar-fixed-top, -.navbar-fixed-bottom { - position: fixed; - right: 0; - left: 0; - z-index: 1030; -} -@media (min-width: 768px) { - .navbar-fixed-top, - .navbar-fixed-bottom { - border-radius: 0; - } -} -.navbar-fixed-top { - top: 0; - border-width: 0 0 1px; -} -.navbar-fixed-bottom { - bottom: 0; - margin-bottom: 0; - border-width: 1px 0 0; -} -.navbar-brand { - float: left; - height: 50px; - padding: 15px 15px; - font-size: 18px; - line-height: 20px; -} -.navbar-brand:hover, -.navbar-brand:focus { - text-decoration: none; -} -.navbar-brand > img { - display: block; -} -@media (min-width: 768px) { - .navbar > .container .navbar-brand, - .navbar > .container-fluid .navbar-brand { - margin-left: -15px; - } -} -.navbar-toggle { - position: relative; - float: right; - padding: 9px 10px; - margin-top: 8px; - margin-right: 15px; - margin-bottom: 8px; - background-color: transparent; - background-image: none; - border: 1px solid transparent; - border-radius: 4px; -} -.navbar-toggle:focus { - outline: 0; -} -.navbar-toggle .icon-bar { - display: block; - width: 22px; - height: 2px; - border-radius: 1px; -} -.navbar-toggle .icon-bar + .icon-bar { - margin-top: 4px; -} -@media (min-width: 768px) { - .navbar-toggle { - display: none; - } -} -.navbar-nav { - margin: 7.5px -15px; -} -.navbar-nav > li > a { - padding-top: 10px; - padding-bottom: 10px; - line-height: 20px; -} -@media (max-width: 767px) { - .navbar-nav .open .dropdown-menu { - position: static; - float: none; - width: auto; - margin-top: 0; - background-color: transparent; - border: 0; - -webkit-box-shadow: none; - box-shadow: none; - } - .navbar-nav .open .dropdown-menu > li > a, - .navbar-nav .open .dropdown-menu .dropdown-header { - padding: 5px 15px 5px 25px; - } - .navbar-nav .open .dropdown-menu > li > a { - line-height: 20px; - } - .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-nav .open .dropdown-menu > li > a:focus { - background-image: none; - } -} -@media (min-width: 768px) { - .navbar-nav { - float: left; - margin: 0; - } - .navbar-nav > li { - float: left; - } - .navbar-nav > li > a { - padding-top: 15px; - padding-bottom: 15px; - } -} -.navbar-form { - padding: 10px 15px; - margin-top: 8px; - margin-right: -15px; - margin-bottom: 8px; - margin-left: -15px; - border-top: 1px solid transparent; - border-bottom: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); -} -@media (min-width: 768px) { - .navbar-form .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .navbar-form .form-control-static { - display: inline-block; - } - .navbar-form .input-group { - display: inline-table; - vertical-align: middle; - } - .navbar-form .input-group .input-group-addon, - .navbar-form .input-group .input-group-btn, - .navbar-form .input-group .form-control { - width: auto; - } - .navbar-form .input-group > .form-control { - width: 100%; - } - .navbar-form .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio, - .navbar-form .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio label, - .navbar-form .checkbox label { - padding-left: 0; - } - .navbar-form .radio input[type="radio"], - .navbar-form .checkbox input[type="checkbox"] { - position: relative; - margin-left: 0; - } - .navbar-form .has-feedback .form-control-feedback { - top: 0; - } -} -@media (max-width: 767px) { - .navbar-form .form-group { - margin-bottom: 5px; - } - .navbar-form .form-group:last-child { - margin-bottom: 0; - } -} -@media (min-width: 768px) { - .navbar-form { - width: auto; - padding-top: 0; - padding-bottom: 0; - margin-right: 0; - margin-left: 0; - border: 0; - -webkit-box-shadow: none; - box-shadow: none; - } -} -.navbar-nav > li > .dropdown-menu { - margin-top: 0; - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { - margin-bottom: 0; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.navbar-btn { - margin-top: 8px; - margin-bottom: 8px; -} -.navbar-btn.btn-sm { - margin-top: 10px; - margin-bottom: 10px; -} -.navbar-btn.btn-xs { - margin-top: 14px; - margin-bottom: 14px; -} -.navbar-text { - margin-top: 15px; - margin-bottom: 15px; -} -@media (min-width: 768px) { - .navbar-text { - float: left; - margin-right: 15px; - margin-left: 15px; - } -} -@media (min-width: 768px) { - .navbar-left { - float: left !important; - } - .navbar-right { - float: right !important; - margin-right: -15px; - } - .navbar-right ~ .navbar-right { - margin-right: 0; - } -} -.navbar-default { - background-color: #f8f8f8; - border-color: #e7e7e7; -} -.navbar-default .navbar-brand { - color: #777; -} -.navbar-default .navbar-brand:hover, -.navbar-default .navbar-brand:focus { - color: #5e5e5e; - background-color: transparent; -} -.navbar-default .navbar-text { - color: #777; -} -.navbar-default .navbar-nav > li > a { - color: #777; -} -.navbar-default .navbar-nav > li > a:hover, -.navbar-default .navbar-nav > li > a:focus { - color: #333; - background-color: transparent; -} -.navbar-default .navbar-nav > .active > a, -.navbar-default .navbar-nav > .active > a:hover, -.navbar-default .navbar-nav > .active > a:focus { - color: #555; - background-color: #e7e7e7; -} -.navbar-default .navbar-nav > .disabled > a, -.navbar-default .navbar-nav > .disabled > a:hover, -.navbar-default .navbar-nav > .disabled > a:focus { - color: #ccc; - background-color: transparent; -} -.navbar-default .navbar-toggle { - border-color: #ddd; -} -.navbar-default .navbar-toggle:hover, -.navbar-default .navbar-toggle:focus { - background-color: #ddd; -} -.navbar-default .navbar-toggle .icon-bar { - background-color: #888; -} -.navbar-default .navbar-collapse, -.navbar-default .navbar-form { - border-color: #e7e7e7; -} -.navbar-default .navbar-nav > .open > a, -.navbar-default .navbar-nav > .open > a:hover, -.navbar-default .navbar-nav > .open > a:focus { - color: #555; - background-color: #e7e7e7; -} -@media (max-width: 767px) { - .navbar-default .navbar-nav .open .dropdown-menu > li > a { - color: #777; - } - .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { - color: #333; - background-color: transparent; - } - .navbar-default .navbar-nav .open .dropdown-menu > .active > a, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #555; - background-color: #e7e7e7; - } - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #ccc; - background-color: transparent; - } -} -.navbar-default .navbar-link { - color: #777; -} -.navbar-default .navbar-link:hover { - color: #333; -} -.navbar-default .btn-link { - color: #777; -} -.navbar-default .btn-link:hover, -.navbar-default .btn-link:focus { - color: #333; -} -.navbar-default .btn-link[disabled]:hover, -fieldset[disabled] .navbar-default .btn-link:hover, -.navbar-default .btn-link[disabled]:focus, -fieldset[disabled] .navbar-default .btn-link:focus { - color: #ccc; -} -.navbar-inverse { - background-color: #222; - border-color: #080808; -} -.navbar-inverse .navbar-brand { - color: #9d9d9d; -} -.navbar-inverse .navbar-brand:hover, -.navbar-inverse .navbar-brand:focus { - color: #fff; - background-color: transparent; -} -.navbar-inverse .navbar-text { - color: #9d9d9d; -} -.navbar-inverse .navbar-nav > li > a { - color: #9d9d9d; -} -.navbar-inverse .navbar-nav > li > a:hover, -.navbar-inverse .navbar-nav > li > a:focus { - color: #fff; - background-color: transparent; -} -.navbar-inverse .navbar-nav > .active > a, -.navbar-inverse .navbar-nav > .active > a:hover, -.navbar-inverse .navbar-nav > .active > a:focus { - color: #fff; - background-color: #080808; -} -.navbar-inverse .navbar-nav > .disabled > a, -.navbar-inverse .navbar-nav > .disabled > a:hover, -.navbar-inverse .navbar-nav > .disabled > a:focus { - color: #444; - background-color: transparent; -} -.navbar-inverse .navbar-toggle { - border-color: #333; -} -.navbar-inverse .navbar-toggle:hover, -.navbar-inverse .navbar-toggle:focus { - background-color: #333; -} -.navbar-inverse .navbar-toggle .icon-bar { - background-color: #fff; -} -.navbar-inverse .navbar-collapse, -.navbar-inverse .navbar-form { - border-color: #101010; -} -.navbar-inverse .navbar-nav > .open > a, -.navbar-inverse .navbar-nav > .open > a:hover, -.navbar-inverse .navbar-nav > .open > a:focus { - color: #fff; - background-color: #080808; -} -@media (max-width: 767px) { - .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { - border-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu .divider { - background-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { - color: #9d9d9d; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { - color: #fff; - background-color: transparent; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #fff; - background-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #444; - background-color: transparent; - } -} -.navbar-inverse .navbar-link { - color: #9d9d9d; -} -.navbar-inverse .navbar-link:hover { - color: #fff; -} -.navbar-inverse .btn-link { - color: #9d9d9d; -} -.navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link:focus { - color: #fff; -} -.navbar-inverse .btn-link[disabled]:hover, -fieldset[disabled] .navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link[disabled]:focus, -fieldset[disabled] .navbar-inverse .btn-link:focus { - color: #444; -} -.breadcrumb { - padding: 8px 15px; - margin-bottom: 20px; - list-style: none; - background-color: #f5f5f5; - border-radius: 4px; -} -.breadcrumb > li { - display: inline-block; -} -.breadcrumb > li + li:before { - padding: 0 5px; - color: #ccc; - content: "/\00a0"; -} -.breadcrumb > .active { - color: #777; -} -.pagination { - display: inline-block; - padding-left: 0; - margin: 20px 0; - border-radius: 4px; -} -.pagination > li { - display: inline; -} -.pagination > li > a, -.pagination > li > span { - position: relative; - float: left; - padding: 6px 12px; - margin-left: -1px; - line-height: 1.42857143; - color: #337ab7; - text-decoration: none; - background-color: #fff; - border: 1px solid #ddd; -} -.pagination > li:first-child > a, -.pagination > li:first-child > span { - margin-left: 0; - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; -} -.pagination > li:last-child > a, -.pagination > li:last-child > span { - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; -} -.pagination > li > a:hover, -.pagination > li > span:hover, -.pagination > li > a:focus, -.pagination > li > span:focus { - color: #23527c; - background-color: #eee; - border-color: #ddd; -} -.pagination > .active > a, -.pagination > .active > span, -.pagination > .active > a:hover, -.pagination > .active > span:hover, -.pagination > .active > a:focus, -.pagination > .active > span:focus { - z-index: 2; - color: #fff; - cursor: default; - background-color: #337ab7; - border-color: #337ab7; -} -.pagination > .disabled > span, -.pagination > .disabled > span:hover, -.pagination > .disabled > span:focus, -.pagination > .disabled > a, -.pagination > .disabled > a:hover, -.pagination > .disabled > a:focus { - color: #777; - cursor: not-allowed; - background-color: #fff; - border-color: #ddd; -} -.pagination-lg > li > a, -.pagination-lg > li > span { - padding: 10px 16px; - font-size: 18px; -} -.pagination-lg > li:first-child > a, -.pagination-lg > li:first-child > span { - border-top-left-radius: 6px; - border-bottom-left-radius: 6px; -} -.pagination-lg > li:last-child > a, -.pagination-lg > li:last-child > span { - border-top-right-radius: 6px; - border-bottom-right-radius: 6px; -} -.pagination-sm > li > a, -.pagination-sm > li > span { - padding: 5px 10px; - font-size: 12px; -} -.pagination-sm > li:first-child > a, -.pagination-sm > li:first-child > span { - border-top-left-radius: 3px; - border-bottom-left-radius: 3px; -} -.pagination-sm > li:last-child > a, -.pagination-sm > li:last-child > span { - border-top-right-radius: 3px; - border-bottom-right-radius: 3px; -} -.pager { - padding-left: 0; - margin: 20px 0; - text-align: center; - list-style: none; -} -.pager li { - display: inline; -} -.pager li > a, -.pager li > span { - display: inline-block; - padding: 5px 14px; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 15px; -} -.pager li > a:hover, -.pager li > a:focus { - text-decoration: none; - background-color: #eee; -} -.pager .next > a, -.pager .next > span { - float: right; -} -.pager .previous > a, -.pager .previous > span { - float: left; -} -.pager .disabled > a, -.pager .disabled > a:hover, -.pager .disabled > a:focus, -.pager .disabled > span { - color: #777; - cursor: not-allowed; - background-color: #fff; -} -.label { - display: inline; - padding: .2em .6em .3em; - font-size: 75%; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: .25em; -} -a.label:hover, -a.label:focus { - color: #fff; - text-decoration: none; - cursor: pointer; -} -.label:empty { - display: none; -} -.btn .label { - position: relative; - top: -1px; -} -.label-default { - background-color: #777; -} -.label-default[href]:hover, -.label-default[href]:focus { - background-color: #5e5e5e; -} -.label-primary { - background-color: #337ab7; -} -.label-primary[href]:hover, -.label-primary[href]:focus { - background-color: #286090; -} -.label-success { - background-color: #5cb85c; -} -.label-success[href]:hover, -.label-success[href]:focus { - background-color: #449d44; -} -.label-info { - background-color: #5bc0de; -} -.label-info[href]:hover, -.label-info[href]:focus { - background-color: #31b0d5; -} -.label-warning { - background-color: #f0ad4e; -} -.label-warning[href]:hover, -.label-warning[href]:focus { - background-color: #ec971f; -} -.label-danger { - background-color: #d9534f; -} -.label-danger[href]:hover, -.label-danger[href]:focus { - background-color: #c9302c; -} -.badge { - display: inline-block; - min-width: 10px; - padding: 3px 7px; - font-size: 12px; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - background-color: #777; - border-radius: 10px; -} -.badge:empty { - display: none; -} -.btn .badge { - position: relative; - top: -1px; -} -.btn-xs .badge, -.btn-group-xs > .btn .badge { - top: 0; - padding: 1px 5px; -} -a.badge:hover, -a.badge:focus { - color: #fff; - text-decoration: none; - cursor: pointer; -} -.list-group-item.active > .badge, -.nav-pills > .active > a > .badge { - color: #337ab7; - background-color: #fff; -} -.list-group-item > .badge { - float: right; -} -.list-group-item > .badge + .badge { - margin-right: 5px; -} -.nav-pills > li > a > .badge { - margin-left: 3px; -} -.jumbotron { - padding: 30px 15px; - margin-bottom: 30px; - color: inherit; - background-color: #eee; -} -.jumbotron h1, -.jumbotron .h1 { - color: inherit; -} -.jumbotron p { - margin-bottom: 15px; - font-size: 21px; - font-weight: 200; -} -.jumbotron > hr { - border-top-color: #d5d5d5; -} -.container .jumbotron, -.container-fluid .jumbotron { - border-radius: 6px; -} -.jumbotron .container { - max-width: 100%; -} -@media screen and (min-width: 768px) { - .jumbotron { - padding: 48px 0; - } - .container .jumbotron, - .container-fluid .jumbotron { - padding-right: 60px; - padding-left: 60px; - } - .jumbotron h1, - .jumbotron .h1 { - font-size: 63px; - } -} -.thumbnail { - display: block; - padding: 4px; - margin-bottom: 20px; - line-height: 1.42857143; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 4px; - -webkit-transition: border .2s ease-in-out; - -o-transition: border .2s ease-in-out; - transition: border .2s ease-in-out; -} -.thumbnail > img, -.thumbnail a > img { - margin-right: auto; - margin-left: auto; -} -a.thumbnail:hover, -a.thumbnail:focus, -a.thumbnail.active { - border-color: #337ab7; -} -.thumbnail .caption { - padding: 9px; - color: #333; -} -.alert { - padding: 15px; - margin-bottom: 20px; - border: 1px solid transparent; - border-radius: 4px; -} -.alert h4 { - margin-top: 0; - color: inherit; -} -.alert .alert-link { - font-weight: bold; -} -.alert > p, -.alert > ul { - margin-bottom: 0; -} -.alert > p + p { - margin-top: 5px; -} -.alert-dismissable, -.alert-dismissible { - padding-right: 35px; -} -.alert-dismissable .close, -.alert-dismissible .close { - position: relative; - top: -2px; - right: -21px; - color: inherit; -} -.alert-success { - color: #3c763d; - background-color: #dff0d8; - border-color: #d6e9c6; -} -.alert-success hr { - border-top-color: #c9e2b3; -} -.alert-success .alert-link { - color: #2b542c; -} -.alert-info { - color: #31708f; - background-color: #d9edf7; - border-color: #bce8f1; -} -.alert-info hr { - border-top-color: #a6e1ec; -} -.alert-info .alert-link { - color: #245269; -} -.alert-warning { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #faebcc; -} -.alert-warning hr { - border-top-color: #f7e1b5; -} -.alert-warning .alert-link { - color: #66512c; -} -.alert-danger { - color: #a94442; - background-color: #f2dede; - border-color: #ebccd1; -} -.alert-danger hr { - border-top-color: #e4b9c0; -} -.alert-danger .alert-link { - color: #843534; -} -@-webkit-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@-o-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -.progress { - height: 20px; - margin-bottom: 20px; - overflow: hidden; - background-color: #f5f5f5; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); -} -.progress-bar { - float: left; - width: 0; - height: 100%; - font-size: 12px; - line-height: 20px; - color: #fff; - text-align: center; - background-color: #337ab7; - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); - -webkit-transition: width .6s ease; - -o-transition: width .6s ease; - transition: width .6s ease; -} -.progress-striped .progress-bar, -.progress-bar-striped { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - -webkit-background-size: 40px 40px; - background-size: 40px 40px; -} -.progress.active .progress-bar, -.progress-bar.active { - -webkit-animation: progress-bar-stripes 2s linear infinite; - -o-animation: progress-bar-stripes 2s linear infinite; - animation: progress-bar-stripes 2s linear infinite; -} -.progress-bar-success { - background-color: #5cb85c; -} -.progress-striped .progress-bar-success { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.progress-bar-info { - background-color: #5bc0de; -} -.progress-striped .progress-bar-info { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.progress-bar-warning { - background-color: #f0ad4e; -} -.progress-striped .progress-bar-warning { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.progress-bar-danger { - background-color: #d9534f; -} -.progress-striped .progress-bar-danger { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.media { - margin-top: 15px; -} -.media:first-child { - margin-top: 0; -} -.media, -.media-body { - overflow: hidden; - zoom: 1; -} -.media-body { - width: 10000px; -} -.media-object { - display: block; -} -.media-right, -.media > .pull-right { - padding-left: 10px; -} -.media-left, -.media > .pull-left { - padding-right: 10px; -} -.media-left, -.media-right, -.media-body { - display: table-cell; - vertical-align: top; -} -.media-middle { - vertical-align: middle; -} -.media-bottom { - vertical-align: bottom; -} -.media-heading { - margin-top: 0; - margin-bottom: 5px; -} -.media-list { - padding-left: 0; - list-style: none; -} -.list-group { - padding-left: 0; - margin-bottom: 20px; -} -.list-group-item { - position: relative; - display: block; - padding: 10px 15px; - margin-bottom: -1px; - background-color: #fff; - border: 1px solid #ddd; -} -.list-group-item:first-child { - border-top-left-radius: 4px; - border-top-right-radius: 4px; -} -.list-group-item:last-child { - margin-bottom: 0; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; -} -a.list-group-item { - color: #555; -} -a.list-group-item .list-group-item-heading { - color: #333; -} -a.list-group-item:hover, -a.list-group-item:focus { - color: #555; - text-decoration: none; - background-color: #f5f5f5; -} -.list-group-item.disabled, -.list-group-item.disabled:hover, -.list-group-item.disabled:focus { - color: #777; - cursor: not-allowed; - background-color: #eee; -} -.list-group-item.disabled .list-group-item-heading, -.list-group-item.disabled:hover .list-group-item-heading, -.list-group-item.disabled:focus .list-group-item-heading { - color: inherit; -} -.list-group-item.disabled .list-group-item-text, -.list-group-item.disabled:hover .list-group-item-text, -.list-group-item.disabled:focus .list-group-item-text { - color: #777; -} -.list-group-item.active, -.list-group-item.active:hover, -.list-group-item.active:focus { - z-index: 2; - color: #fff; - background-color: #337ab7; - border-color: #337ab7; -} -.list-group-item.active .list-group-item-heading, -.list-group-item.active:hover .list-group-item-heading, -.list-group-item.active:focus .list-group-item-heading, -.list-group-item.active .list-group-item-heading > small, -.list-group-item.active:hover .list-group-item-heading > small, -.list-group-item.active:focus .list-group-item-heading > small, -.list-group-item.active .list-group-item-heading > .small, -.list-group-item.active:hover .list-group-item-heading > .small, -.list-group-item.active:focus .list-group-item-heading > .small { - color: inherit; -} -.list-group-item.active .list-group-item-text, -.list-group-item.active:hover .list-group-item-text, -.list-group-item.active:focus .list-group-item-text { - color: #c7ddef; -} -.list-group-item-success { - color: #3c763d; - background-color: #dff0d8; -} -a.list-group-item-success { - color: #3c763d; -} -a.list-group-item-success .list-group-item-heading { - color: inherit; -} -a.list-group-item-success:hover, -a.list-group-item-success:focus { - color: #3c763d; - background-color: #d0e9c6; -} -a.list-group-item-success.active, -a.list-group-item-success.active:hover, -a.list-group-item-success.active:focus { - color: #fff; - background-color: #3c763d; - border-color: #3c763d; -} -.list-group-item-info { - color: #31708f; - background-color: #d9edf7; -} -a.list-group-item-info { - color: #31708f; -} -a.list-group-item-info .list-group-item-heading { - color: inherit; -} -a.list-group-item-info:hover, -a.list-group-item-info:focus { - color: #31708f; - background-color: #c4e3f3; -} -a.list-group-item-info.active, -a.list-group-item-info.active:hover, -a.list-group-item-info.active:focus { - color: #fff; - background-color: #31708f; - border-color: #31708f; -} -.list-group-item-warning { - color: #8a6d3b; - background-color: #fcf8e3; -} -a.list-group-item-warning { - color: #8a6d3b; -} -a.list-group-item-warning .list-group-item-heading { - color: inherit; -} -a.list-group-item-warning:hover, -a.list-group-item-warning:focus { - color: #8a6d3b; - background-color: #faf2cc; -} -a.list-group-item-warning.active, -a.list-group-item-warning.active:hover, -a.list-group-item-warning.active:focus { - color: #fff; - background-color: #8a6d3b; - border-color: #8a6d3b; -} -.list-group-item-danger { - color: #a94442; - background-color: #f2dede; -} -a.list-group-item-danger { - color: #a94442; -} -a.list-group-item-danger .list-group-item-heading { - color: inherit; -} -a.list-group-item-danger:hover, -a.list-group-item-danger:focus { - color: #a94442; - background-color: #ebcccc; -} -a.list-group-item-danger.active, -a.list-group-item-danger.active:hover, -a.list-group-item-danger.active:focus { - color: #fff; - background-color: #a94442; - border-color: #a94442; -} -.list-group-item-heading { - margin-top: 0; - margin-bottom: 5px; -} -.list-group-item-text { - margin-bottom: 0; - line-height: 1.3; -} -.panel { - margin-bottom: 20px; - background-color: #fff; - border: 1px solid transparent; - border-radius: 4px; - -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05); - box-shadow: 0 1px 1px rgba(0, 0, 0, .05); -} -.panel-body { - padding: 15px; -} -.panel-heading { - padding: 10px 15px; - border-bottom: 1px solid transparent; - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel-heading > .dropdown .dropdown-toggle { - color: inherit; -} -.panel-title { - margin-top: 0; - margin-bottom: 0; - font-size: 16px; - color: inherit; -} -.panel-title > a, -.panel-title > small, -.panel-title > .small, -.panel-title > small > a, -.panel-title > .small > a { - color: inherit; -} -.panel-footer { - padding: 10px 15px; - background-color: #f5f5f5; - border-top: 1px solid #ddd; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .list-group, -.panel > .panel-collapse > .list-group { - margin-bottom: 0; -} -.panel > .list-group .list-group-item, -.panel > .panel-collapse > .list-group .list-group-item { - border-width: 1px 0; - border-radius: 0; -} -.panel > .list-group:first-child .list-group-item:first-child, -.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { - border-top: 0; - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .list-group:last-child .list-group-item:last-child, -.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { - border-bottom: 0; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel-heading + .list-group .list-group-item:first-child { - border-top-width: 0; -} -.list-group + .panel-footer { - border-top-width: 0; -} -.panel > .table, -.panel > .table-responsive > .table, -.panel > .panel-collapse > .table { - margin-bottom: 0; -} -.panel > .table caption, -.panel > .table-responsive > .table caption, -.panel > .panel-collapse > .table caption { - padding-right: 15px; - padding-left: 15px; -} -.panel > .table:first-child, -.panel > .table-responsive:first-child > .table:first-child { - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { - border-top-left-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { - border-top-right-radius: 3px; -} -.panel > .table:last-child, -.panel > .table-responsive:last-child > .table:last-child { - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { - border-bottom-right-radius: 3px; -} -.panel > .panel-body + .table, -.panel > .panel-body + .table-responsive, -.panel > .table + .panel-body, -.panel > .table-responsive + .panel-body { - border-top: 1px solid #ddd; -} -.panel > .table > tbody:first-child > tr:first-child th, -.panel > .table > tbody:first-child > tr:first-child td { - border-top: 0; -} -.panel > .table-bordered, -.panel > .table-responsive > .table-bordered { - border: 0; -} -.panel > .table-bordered > thead > tr > th:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, -.panel > .table-bordered > tbody > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, -.panel > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-bordered > thead > tr > td:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, -.panel > .table-bordered > tbody > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, -.panel > .table-bordered > tfoot > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; -} -.panel > .table-bordered > thead > tr > th:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, -.panel > .table-bordered > tbody > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, -.panel > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-bordered > thead > tr > td:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, -.panel > .table-bordered > tbody > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, -.panel > .table-bordered > tfoot > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; -} -.panel > .table-bordered > thead > tr:first-child > td, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, -.panel > .table-bordered > tbody > tr:first-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, -.panel > .table-bordered > thead > tr:first-child > th, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, -.panel > .table-bordered > tbody > tr:first-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { - border-bottom: 0; -} -.panel > .table-bordered > tbody > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, -.panel > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-bordered > tbody > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, -.panel > .table-bordered > tfoot > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { - border-bottom: 0; -} -.panel > .table-responsive { - margin-bottom: 0; - border: 0; -} -.panel-group { - margin-bottom: 20px; -} -.panel-group .panel { - margin-bottom: 0; - border-radius: 4px; -} -.panel-group .panel + .panel { - margin-top: 5px; -} -.panel-group .panel-heading { - border-bottom: 0; -} -.panel-group .panel-heading + .panel-collapse > .panel-body, -.panel-group .panel-heading + .panel-collapse > .list-group { - border-top: 1px solid #ddd; -} -.panel-group .panel-footer { - border-top: 0; -} -.panel-group .panel-footer + .panel-collapse .panel-body { - border-bottom: 1px solid #ddd; -} -.panel-default { - border-color: #ddd; -} -.panel-default > .panel-heading { - color: #333; - background-color: #f5f5f5; - border-color: #ddd; -} -.panel-default > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #ddd; -} -.panel-default > .panel-heading .badge { - color: #f5f5f5; - background-color: #333; -} -.panel-default > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #ddd; -} -.panel-primary { - border-color: #337ab7; -} -.panel-primary > .panel-heading { - color: #fff; - background-color: #337ab7; - border-color: #337ab7; -} -.panel-primary > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #337ab7; -} -.panel-primary > .panel-heading .badge { - color: #337ab7; - background-color: #fff; -} -.panel-primary > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #337ab7; -} -.panel-success { - border-color: #d6e9c6; -} -.panel-success > .panel-heading { - color: #3c763d; - background-color: #dff0d8; - border-color: #d6e9c6; -} -.panel-success > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #d6e9c6; -} -.panel-success > .panel-heading .badge { - color: #dff0d8; - background-color: #3c763d; -} -.panel-success > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #d6e9c6; -} -.panel-info { - border-color: #bce8f1; -} -.panel-info > .panel-heading { - color: #31708f; - background-color: #d9edf7; - border-color: #bce8f1; -} -.panel-info > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #bce8f1; -} -.panel-info > .panel-heading .badge { - color: #d9edf7; - background-color: #31708f; -} -.panel-info > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #bce8f1; -} -.panel-warning { - border-color: #faebcc; -} -.panel-warning > .panel-heading { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #faebcc; -} -.panel-warning > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #faebcc; -} -.panel-warning > .panel-heading .badge { - color: #fcf8e3; - background-color: #8a6d3b; -} -.panel-warning > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #faebcc; -} -.panel-danger { - border-color: #ebccd1; -} -.panel-danger > .panel-heading { - color: #a94442; - background-color: #f2dede; - border-color: #ebccd1; -} -.panel-danger > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #ebccd1; -} -.panel-danger > .panel-heading .badge { - color: #f2dede; - background-color: #a94442; -} -.panel-danger > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #ebccd1; -} -.embed-responsive { - position: relative; - display: block; - height: 0; - padding: 0; - overflow: hidden; -} -.embed-responsive .embed-responsive-item, -.embed-responsive iframe, -.embed-responsive embed, -.embed-responsive object, -.embed-responsive video { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 100%; - height: 100%; - border: 0; -} -.embed-responsive-16by9 { - padding-bottom: 56.25%; -} -.embed-responsive-4by3 { - padding-bottom: 75%; -} -.well { - min-height: 20px; - padding: 19px; - margin-bottom: 20px; - background-color: #f5f5f5; - border: 1px solid #e3e3e3; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); -} -.well blockquote { - border-color: #ddd; - border-color: rgba(0, 0, 0, .15); -} -.well-lg { - padding: 24px; - border-radius: 6px; -} -.well-sm { - padding: 9px; - border-radius: 3px; -} -.close { - float: right; - font-size: 21px; - font-weight: bold; - line-height: 1; - color: #000; - text-shadow: 0 1px 0 #fff; - filter: alpha(opacity=20); - opacity: .2; -} -.close:hover, -.close:focus { - color: #000; - text-decoration: none; - cursor: pointer; - filter: alpha(opacity=50); - opacity: .5; -} -button.close { - -webkit-appearance: none; - padding: 0; - cursor: pointer; - background: transparent; - border: 0; -} -.modal-open { - overflow: hidden; -} -.modal { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1050; - display: none; - overflow: hidden; - -webkit-overflow-scrolling: touch; - outline: 0; -} -.modal.fade .modal-dialog { - -webkit-transition: -webkit-transform .3s ease-out; - -o-transition: -o-transform .3s ease-out; - transition: transform .3s ease-out; - -webkit-transform: translate(0, -25%); - -ms-transform: translate(0, -25%); - -o-transform: translate(0, -25%); - transform: translate(0, -25%); -} -.modal.in .modal-dialog { - -webkit-transform: translate(0, 0); - -ms-transform: translate(0, 0); - -o-transform: translate(0, 0); - transform: translate(0, 0); -} -.modal-open .modal { - overflow-x: hidden; - overflow-y: auto; -} -.modal-dialog { - position: relative; - width: auto; - margin: 10px; -} -.modal-content { - position: relative; - background-color: #fff; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: 1px solid #999; - border: 1px solid rgba(0, 0, 0, .2); - border-radius: 6px; - outline: 0; - -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); - box-shadow: 0 3px 9px rgba(0, 0, 0, .5); -} -.modal-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1040; - background-color: #000; -} -.modal-backdrop.fade { - filter: alpha(opacity=0); - opacity: 0; -} -.modal-backdrop.in { - filter: alpha(opacity=50); - opacity: .5; -} -.modal-header { - min-height: 16.42857143px; - padding: 15px; - border-bottom: 1px solid #e5e5e5; -} -.modal-header .close { - margin-top: -2px; -} -.modal-title { - margin: 0; - line-height: 1.42857143; -} -.modal-body { - position: relative; - padding: 15px; -} -.modal-footer { - padding: 15px; - text-align: right; - border-top: 1px solid #e5e5e5; -} -.modal-footer .btn + .btn { - margin-bottom: 0; - margin-left: 5px; -} -.modal-footer .btn-group .btn + .btn { - margin-left: -1px; -} -.modal-footer .btn-block + .btn-block { - margin-left: 0; -} -.modal-scrollbar-measure { - position: absolute; - top: -9999px; - width: 50px; - height: 50px; - overflow: scroll; -} -@media (min-width: 768px) { - .modal-dialog { - width: 600px; - margin: 30px auto; - } - .modal-content { - -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); - box-shadow: 0 5px 15px rgba(0, 0, 0, .5); - } - .modal-sm { - width: 300px; - } -} -@media (min-width: 992px) { - .modal-lg { - width: 900px; - } -} -.tooltip { - position: absolute; - z-index: 1070; - display: block; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 12px; - font-weight: normal; - line-height: 1.4; - filter: alpha(opacity=0); - opacity: 0; -} -.tooltip.in { - filter: alpha(opacity=90); - opacity: .9; -} -.tooltip.top { - padding: 5px 0; - margin-top: -3px; -} -.tooltip.right { - padding: 0 5px; - margin-left: 3px; -} -.tooltip.bottom { - padding: 5px 0; - margin-top: 3px; -} -.tooltip.left { - padding: 0 5px; - margin-left: -3px; -} -.tooltip-inner { - max-width: 200px; - padding: 3px 8px; - color: #fff; - text-align: center; - text-decoration: none; - background-color: #000; - border-radius: 4px; -} -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.tooltip.top .tooltip-arrow { - bottom: 0; - left: 50%; - margin-left: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.top-left .tooltip-arrow { - right: 5px; - bottom: 0; - margin-bottom: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.top-right .tooltip-arrow { - bottom: 0; - left: 5px; - margin-bottom: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -5px; - border-width: 5px 5px 5px 0; - border-right-color: #000; -} -.tooltip.left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -5px; - border-width: 5px 0 5px 5px; - border-left-color: #000; -} -.tooltip.bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.tooltip.bottom-left .tooltip-arrow { - top: 0; - right: 5px; - margin-top: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.tooltip.bottom-right .tooltip-arrow { - top: 0; - left: 5px; - margin-top: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1060; - display: none; - max-width: 276px; - padding: 1px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - font-weight: normal; - line-height: 1.42857143; - text-align: left; - white-space: normal; - background-color: #fff; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, .2); - border-radius: 6px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2); - box-shadow: 0 5px 10px rgba(0, 0, 0, .2); -} -.popover.top { - margin-top: -10px; -} -.popover.right { - margin-left: 10px; -} -.popover.bottom { - margin-top: 10px; -} -.popover.left { - margin-left: -10px; -} -.popover-title { - padding: 8px 14px; - margin: 0; - font-size: 14px; - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - border-radius: 5px 5px 0 0; -} -.popover-content { - padding: 9px 14px; -} -.popover > .arrow, -.popover > .arrow:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.popover > .arrow { - border-width: 11px; -} -.popover > .arrow:after { - content: ""; - border-width: 10px; -} -.popover.top > .arrow { - bottom: -11px; - left: 50%; - margin-left: -11px; - border-top-color: #999; - border-top-color: rgba(0, 0, 0, .25); - border-bottom-width: 0; -} -.popover.top > .arrow:after { - bottom: 1px; - margin-left: -10px; - content: " "; - border-top-color: #fff; - border-bottom-width: 0; -} -.popover.right > .arrow { - top: 50%; - left: -11px; - margin-top: -11px; - border-right-color: #999; - border-right-color: rgba(0, 0, 0, .25); - border-left-width: 0; -} -.popover.right > .arrow:after { - bottom: -10px; - left: 1px; - content: " "; - border-right-color: #fff; - border-left-width: 0; -} -.popover.bottom > .arrow { - top: -11px; - left: 50%; - margin-left: -11px; - border-top-width: 0; - border-bottom-color: #999; - border-bottom-color: rgba(0, 0, 0, .25); -} -.popover.bottom > .arrow:after { - top: 1px; - margin-left: -10px; - content: " "; - border-top-width: 0; - border-bottom-color: #fff; -} -.popover.left > .arrow { - top: 50%; - right: -11px; - margin-top: -11px; - border-right-width: 0; - border-left-color: #999; - border-left-color: rgba(0, 0, 0, .25); -} -.popover.left > .arrow:after { - right: 1px; - bottom: -10px; - content: " "; - border-right-width: 0; - border-left-color: #fff; -} -.carousel { - position: relative; -} -.carousel-inner { - position: relative; - width: 100%; - overflow: hidden; -} -.carousel-inner > .item { - position: relative; - display: none; - -webkit-transition: .6s ease-in-out left; - -o-transition: .6s ease-in-out left; - transition: .6s ease-in-out left; -} -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - line-height: 1; -} -@media all and (transform-3d), (-webkit-transform-3d) { - .carousel-inner > .item { - -webkit-transition: -webkit-transform .6s ease-in-out; - -o-transition: -o-transform .6s ease-in-out; - transition: transform .6s ease-in-out; - - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-perspective: 1000; - perspective: 1000; - } - .carousel-inner > .item.next, - .carousel-inner > .item.active.right { - left: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } - .carousel-inner > .item.prev, - .carousel-inner > .item.active.left { - left: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } - .carousel-inner > .item.next.left, - .carousel-inner > .item.prev.right, - .carousel-inner > .item.active { - left: 0; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} -.carousel-inner > .active, -.carousel-inner > .next, -.carousel-inner > .prev { - display: block; -} -.carousel-inner > .active { - left: 0; -} -.carousel-inner > .next, -.carousel-inner > .prev { - position: absolute; - top: 0; - width: 100%; -} -.carousel-inner > .next { - left: 100%; -} -.carousel-inner > .prev { - left: -100%; -} -.carousel-inner > .next.left, -.carousel-inner > .prev.right { - left: 0; -} -.carousel-inner > .active.left { - left: -100%; -} -.carousel-inner > .active.right { - left: 100%; -} -.carousel-control { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 15%; - font-size: 20px; - color: #fff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, .6); - filter: alpha(opacity=50); - opacity: .5; -} -.carousel-control.left { - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); - background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001))); - background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); - background-repeat: repeat-x; -} -.carousel-control.right { - right: 0; - left: auto; - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); - background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5))); - background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); - background-repeat: repeat-x; -} -.carousel-control:hover, -.carousel-control:focus { - color: #fff; - text-decoration: none; - filter: alpha(opacity=90); - outline: 0; - opacity: .9; -} -.carousel-control .icon-prev, -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-left, -.carousel-control .glyphicon-chevron-right { - position: absolute; - top: 50%; - z-index: 5; - display: inline-block; -} -.carousel-control .icon-prev, -.carousel-control .glyphicon-chevron-left { - left: 50%; - margin-left: -10px; -} -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-right { - right: 50%; - margin-right: -10px; -} -.carousel-control .icon-prev, -.carousel-control .icon-next { - width: 20px; - height: 20px; - margin-top: -10px; - font-family: serif; - line-height: 1; -} -.carousel-control .icon-prev:before { - content: '\2039'; -} -.carousel-control .icon-next:before { - content: '\203a'; -} -.carousel-indicators { - position: absolute; - bottom: 10px; - left: 50%; - z-index: 15; - width: 60%; - padding-left: 0; - margin-left: -30%; - text-align: center; - list-style: none; -} -.carousel-indicators li { - display: inline-block; - width: 10px; - height: 10px; - margin: 1px; - text-indent: -999px; - cursor: pointer; - background-color: #000 \9; - background-color: rgba(0, 0, 0, 0); - border: 1px solid #fff; - border-radius: 10px; -} -.carousel-indicators .active { - width: 12px; - height: 12px; - margin: 0; - background-color: #fff; -} -.carousel-caption { - position: absolute; - right: 15%; - bottom: 20px; - left: 15%; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: #fff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, .6); -} -.carousel-caption .btn { - text-shadow: none; -} -@media screen and (min-width: 768px) { - .carousel-control .glyphicon-chevron-left, - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-prev, - .carousel-control .icon-next { - width: 30px; - height: 30px; - margin-top: -15px; - font-size: 30px; - } - .carousel-control .glyphicon-chevron-left, - .carousel-control .icon-prev { - margin-left: -15px; - } - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-next { - margin-right: -15px; - } - .carousel-caption { - right: 20%; - left: 20%; - padding-bottom: 30px; - } - .carousel-indicators { - bottom: 20px; - } -} -.clearfix:before, -.clearfix:after, -.dl-horizontal dd:before, -.dl-horizontal dd:after, -.container:before, -.container:after, -.container-fluid:before, -.container-fluid:after, -.row:before, -.row:after, -.form-horizontal .form-group:before, -.form-horizontal .form-group:after, -.btn-toolbar:before, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:before, -.btn-group-vertical > .btn-group:after, -.nav:before, -.nav:after, -.navbar:before, -.navbar:after, -.navbar-header:before, -.navbar-header:after, -.navbar-collapse:before, -.navbar-collapse:after, -.pager:before, -.pager:after, -.panel-body:before, -.panel-body:after, -.modal-footer:before, -.modal-footer:after { - display: table; - content: " "; -} -.clearfix:after, -.dl-horizontal dd:after, -.container:after, -.container-fluid:after, -.row:after, -.form-horizontal .form-group:after, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:after, -.nav:after, -.navbar:after, -.navbar-header:after, -.navbar-collapse:after, -.pager:after, -.panel-body:after, -.modal-footer:after { - clear: both; -} -.center-block { - display: block; - margin-right: auto; - margin-left: auto; -} -.pull-right { - float: right !important; -} -.pull-left { - float: left !important; -} -.hide { - display: none !important; -} -.show { - display: block !important; -} -.invisible { - visibility: hidden; -} -.text-hide { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} -.hidden { - display: none !important; -} -.affix { - position: fixed; -} -@-ms-viewport { - width: device-width; -} -.visible-xs, -.visible-sm, -.visible-md, -.visible-lg { - display: none !important; -} -.visible-xs-block, -.visible-xs-inline, -.visible-xs-inline-block, -.visible-sm-block, -.visible-sm-inline, -.visible-sm-inline-block, -.visible-md-block, -.visible-md-inline, -.visible-md-inline-block, -.visible-lg-block, -.visible-lg-inline, -.visible-lg-inline-block { - display: none !important; -} -@media (max-width: 767px) { - .visible-xs { - display: block !important; - } - table.visible-xs { - display: table; - } - tr.visible-xs { - display: table-row !important; - } - th.visible-xs, - td.visible-xs { - display: table-cell !important; - } -} -@media (max-width: 767px) { - .visible-xs-block { - display: block !important; - } -} -@media (max-width: 767px) { - .visible-xs-inline { - display: inline !important; - } -} -@media (max-width: 767px) { - .visible-xs-inline-block { - display: inline-block !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm { - display: block !important; - } - table.visible-sm { - display: table; - } - tr.visible-sm { - display: table-row !important; - } - th.visible-sm, - td.visible-sm { - display: table-cell !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-block { - display: block !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-inline { - display: inline !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-inline-block { - display: inline-block !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md { - display: block !important; - } - table.visible-md { - display: table; - } - tr.visible-md { - display: table-row !important; - } - th.visible-md, - td.visible-md { - display: table-cell !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-block { - display: block !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-inline { - display: inline !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-inline-block { - display: inline-block !important; - } -} -@media (min-width: 1200px) { - .visible-lg { - display: block !important; - } - table.visible-lg { - display: table; - } - tr.visible-lg { - display: table-row !important; - } - th.visible-lg, - td.visible-lg { - display: table-cell !important; - } -} -@media (min-width: 1200px) { - .visible-lg-block { - display: block !important; - } -} -@media (min-width: 1200px) { - .visible-lg-inline { - display: inline !important; - } -} -@media (min-width: 1200px) { - .visible-lg-inline-block { - display: inline-block !important; - } -} -@media (max-width: 767px) { - .hidden-xs { - display: none !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .hidden-sm { - display: none !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .hidden-md { - display: none !important; - } -} -@media (min-width: 1200px) { - .hidden-lg { - display: none !important; - } -} -.visible-print { - display: none !important; -} -@media print { - .visible-print { - display: block !important; - } - table.visible-print { - display: table; - } - tr.visible-print { - display: table-row !important; - } - th.visible-print, - td.visible-print { - display: table-cell !important; - } -} -.visible-print-block { - display: none !important; -} -@media print { - .visible-print-block { - display: block !important; - } -} -.visible-print-inline { - display: none !important; -} -@media print { - .visible-print-inline { - display: inline !important; - } -} -.visible-print-inline-block { - display: none !important; -} -@media print { - .visible-print-inline-block { - display: inline-block !important; - } -} -@media print { - .hidden-print { - display: none !important; - } -} -/*# sourceMappingURL=bootstrap.css.map */ diff --git a/assets/bootstrap/css/bootstrap.css.map b/assets/bootstrap/css/bootstrap.css.map deleted file mode 100644 index 2fd84f36..00000000 --- a/assets/bootstrap/css/bootstrap.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["bootstrap.css","less/normalize.less","less/print.less","less/glyphicons.less","less/scaffolding.less","less/mixins/vendor-prefixes.less","less/mixins/tab-focus.less","less/mixins/image.less","less/type.less","less/mixins/text-emphasis.less","less/mixins/background-variant.less","less/mixins/text-overflow.less","less/code.less","less/grid.less","less/mixins/grid.less","less/mixins/grid-framework.less","less/tables.less","less/mixins/table-row.less","less/forms.less","less/mixins/forms.less","less/buttons.less","less/mixins/buttons.less","less/mixins/opacity.less","less/component-animations.less","less/dropdowns.less","less/mixins/nav-divider.less","less/mixins/reset-filter.less","less/button-groups.less","less/mixins/border-radius.less","less/input-groups.less","less/navs.less","less/navbar.less","less/mixins/nav-vertical-align.less","less/utilities.less","less/breadcrumbs.less","less/pagination.less","less/mixins/pagination.less","less/pager.less","less/labels.less","less/mixins/labels.less","less/badges.less","less/jumbotron.less","less/thumbnails.less","less/alerts.less","less/mixins/alerts.less","less/progress-bars.less","less/mixins/gradients.less","less/mixins/progress-bar.less","less/media.less","less/list-group.less","less/mixins/list-group.less","less/panels.less","less/mixins/panels.less","less/responsive-embed.less","less/wells.less","less/close.less","less/modals.less","less/tooltip.less","less/popovers.less","less/carousel.less","less/mixins/clearfix.less","less/mixins/center-block.less","less/mixins/hide-text.less","less/responsive-utilities.less","less/mixins/responsive-visibility.less"],"names":[],"mappings":"AAAA,6DAA4D;ACQ5D;EACE,yBAAA;EACA,4BAAA;EACA,gCAAA;EDND;ACaD;EACE,WAAA;EDXD;ACwBD;;;;;;;;;;;;;EAaE,gBAAA;EDtBD;AC8BD;;;;EAIE,uBAAA;EACA,0BAAA;ED5BD;ACoCD;EACE,eAAA;EACA,WAAA;EDlCD;AC0CD;;EAEE,eAAA;EDxCD;ACkDD;EACE,+BAAA;EDhDD;ACuDD;;EAEE,YAAA;EDrDD;AC+DD;EACE,2BAAA;ED7DD;ACoED;;EAEE,mBAAA;EDlED;ACyED;EACE,oBAAA;EDvED;AC+ED;EACE,gBAAA;EACA,kBAAA;ED7ED;ACoFD;EACE,kBAAA;EACA,aAAA;EDlFD;ACyFD;EACE,gBAAA;EDvFD;AC8FD;;EAEE,gBAAA;EACA,gBAAA;EACA,oBAAA;EACA,0BAAA;ED5FD;AC+FD;EACE,aAAA;ED7FD;ACgGD;EACE,iBAAA;ED9FD;ACwGD;EACE,WAAA;EDtGD;AC6GD;EACE,kBAAA;ED3GD;ACqHD;EACE,kBAAA;EDnHD;AC0HD;EACE,8BAAA;EACA,iCAAA;UAAA,yBAAA;EACA,WAAA;EDxHD;AC+HD;EACE,gBAAA;ED7HD;ACoID;;;;EAIE,mCAAA;EACA,gBAAA;EDlID;ACoJD;;;;;EAKE,gBAAA;EACA,eAAA;EACA,WAAA;EDlJD;ACyJD;EACE,mBAAA;EDvJD;ACiKD;;EAEE,sBAAA;ED/JD;AC0KD;;;;EAIE,4BAAA;EACA,iBAAA;EDxKD;AC+KD;;EAEE,iBAAA;ED7KD;ACoLD;;EAEE,WAAA;EACA,YAAA;EDlLD;AC0LD;EACE,qBAAA;EDxLD;ACmMD;;EAEE,gCAAA;KAAA,6BAAA;UAAA,wBAAA;EACA,YAAA;EDjMD;AC0MD;;EAEE,cAAA;EDxMD;ACiND;EACE,+BAAA;EACA,8BAAA;EACA,iCAAA;EACA,yBAAA;ED/MD;ACwND;;EAEE,0BAAA;EDtND;AC6ND;EACE,2BAAA;EACA,eAAA;EACA,gCAAA;ED3ND;ACmOD;EACE,WAAA;EACA,YAAA;EDjOD;ACwOD;EACE,gBAAA;EDtOD;AC8OD;EACE,mBAAA;ED5OD;ACsPD;EACE,2BAAA;EACA,mBAAA;EDpPD;ACuPD;;EAEE,YAAA;EDrPD;AACD,sFAAqF;AE1ErF;EAnGI;;;IAGI,oCAAA;IACA,wBAAA;IACA,qCAAA;YAAA,6BAAA;IACA,8BAAA;IFgLL;EE7KC;;IAEI,4BAAA;IF+KL;EE5KC;IACI,8BAAA;IF8KL;EE3KC;IACI,+BAAA;IF6KL;EExKC;;IAEI,aAAA;IF0KL;EEvKC;;IAEI,wBAAA;IACA,0BAAA;IFyKL;EEtKC;IACI,6BAAA;IFwKL;EErKC;;IAEI,0BAAA;IFuKL;EEpKC;IACI,4BAAA;IFsKL;EEnKC;;;IAGI,YAAA;IACA,WAAA;IFqKL;EElKC;;IAEI,yBAAA;IFoKL;EE7JC;IACI,6BAAA;IF+JL;EE3JC;IACI,eAAA;IF6JL;EE3JC;;IAGQ,mCAAA;IF4JT;EEzJC;IACI,wBAAA;IF2JL;EExJC;IACI,sCAAA;IF0JL;EE3JC;;IAKQ,mCAAA;IF0JT;EEvJC;;IAGQ,mCAAA;IFwJT;EACF;AGpPD;EACE,qCAAA;EACA,uDAAA;EACA,iYAAA;EHsPD;AG9OD;EACE,oBAAA;EACA,UAAA;EACA,uBAAA;EACA,qCAAA;EACA,oBAAA;EACA,qBAAA;EACA,gBAAA;EACA,qCAAA;EACA,oCAAA;EHgPD;AG5OmC;EAAW,gBAAA;EH+O9C;AG9OmC;EAAW,gBAAA;EHiP9C;AG/OmC;;EAAW,kBAAA;EHmP9C;AGlPmC;EAAW,kBAAA;EHqP9C;AGpPmC;EAAW,kBAAA;EHuP9C;AGtPmC;EAAW,kBAAA;EHyP9C;AGxPmC;EAAW,kBAAA;EH2P9C;AG1PmC;EAAW,kBAAA;EH6P9C;AG5PmC;EAAW,kBAAA;EH+P9C;AG9PmC;EAAW,kBAAA;EHiQ9C;AGhQmC;EAAW,kBAAA;EHmQ9C;AGlQmC;EAAW,kBAAA;EHqQ9C;AGpQmC;EAAW,kBAAA;EHuQ9C;AGtQmC;EAAW,kBAAA;EHyQ9C;AGxQmC;EAAW,kBAAA;EH2Q9C;AG1QmC;EAAW,kBAAA;EH6Q9C;AG5QmC;EAAW,kBAAA;EH+Q9C;AG9QmC;EAAW,kBAAA;EHiR9C;AGhRmC;EAAW,kBAAA;EHmR9C;AGlRmC;EAAW,kBAAA;EHqR9C;AGpRmC;EAAW,kBAAA;EHuR9C;AGtRmC;EAAW,kBAAA;EHyR9C;AGxRmC;EAAW,kBAAA;EH2R9C;AG1RmC;EAAW,kBAAA;EH6R9C;AG5RmC;EAAW,kBAAA;EH+R9C;AG9RmC;EAAW,kBAAA;EHiS9C;AGhSmC;EAAW,kBAAA;EHmS9C;AGlSmC;EAAW,kBAAA;EHqS9C;AGpSmC;EAAW,kBAAA;EHuS9C;AGtSmC;EAAW,kBAAA;EHyS9C;AGxSmC;EAAW,kBAAA;EH2S9C;AG1SmC;EAAW,kBAAA;EH6S9C;AG5SmC;EAAW,kBAAA;EH+S9C;AG9SmC;EAAW,kBAAA;EHiT9C;AGhTmC;EAAW,kBAAA;EHmT9C;AGlTmC;EAAW,kBAAA;EHqT9C;AGpTmC;EAAW,kBAAA;EHuT9C;AGtTmC;EAAW,kBAAA;EHyT9C;AGxTmC;EAAW,kBAAA;EH2T9C;AG1TmC;EAAW,kBAAA;EH6T9C;AG5TmC;EAAW,kBAAA;EH+T9C;AG9TmC;EAAW,kBAAA;EHiU9C;AGhUmC;EAAW,kBAAA;EHmU9C;AGlUmC;EAAW,kBAAA;EHqU9C;AGpUmC;EAAW,kBAAA;EHuU9C;AGtUmC;EAAW,kBAAA;EHyU9C;AGxUmC;EAAW,kBAAA;EH2U9C;AG1UmC;EAAW,kBAAA;EH6U9C;AG5UmC;EAAW,kBAAA;EH+U9C;AG9UmC;EAAW,kBAAA;EHiV9C;AGhVmC;EAAW,kBAAA;EHmV9C;AGlVmC;EAAW,kBAAA;EHqV9C;AGpVmC;EAAW,kBAAA;EHuV9C;AGtVmC;EAAW,kBAAA;EHyV9C;AGxVmC;EAAW,kBAAA;EH2V9C;AG1VmC;EAAW,kBAAA;EH6V9C;AG5VmC;EAAW,kBAAA;EH+V9C;AG9VmC;EAAW,kBAAA;EHiW9C;AGhWmC;EAAW,kBAAA;EHmW9C;AGlWmC;EAAW,kBAAA;EHqW9C;AGpWmC;EAAW,kBAAA;EHuW9C;AGtWmC;EAAW,kBAAA;EHyW9C;AGxWmC;EAAW,kBAAA;EH2W9C;AG1WmC;EAAW,kBAAA;EH6W9C;AG5WmC;EAAW,kBAAA;EH+W9C;AG9WmC;EAAW,kBAAA;EHiX9C;AGhXmC;EAAW,kBAAA;EHmX9C;AGlXmC;EAAW,kBAAA;EHqX9C;AGpXmC;EAAW,kBAAA;EHuX9C;AGtXmC;EAAW,kBAAA;EHyX9C;AGxXmC;EAAW,kBAAA;EH2X9C;AG1XmC;EAAW,kBAAA;EH6X9C;AG5XmC;EAAW,kBAAA;EH+X9C;AG9XmC;EAAW,kBAAA;EHiY9C;AGhYmC;EAAW,kBAAA;EHmY9C;AGlYmC;EAAW,kBAAA;EHqY9C;AGpYmC;EAAW,kBAAA;EHuY9C;AGtYmC;EAAW,kBAAA;EHyY9C;AGxYmC;EAAW,kBAAA;EH2Y9C;AG1YmC;EAAW,kBAAA;EH6Y9C;AG5YmC;EAAW,kBAAA;EH+Y9C;AG9YmC;EAAW,kBAAA;EHiZ9C;AGhZmC;EAAW,kBAAA;EHmZ9C;AGlZmC;EAAW,kBAAA;EHqZ9C;AGpZmC;EAAW,kBAAA;EHuZ9C;AGtZmC;EAAW,kBAAA;EHyZ9C;AGxZmC;EAAW,kBAAA;EH2Z9C;AG1ZmC;EAAW,kBAAA;EH6Z9C;AG5ZmC;EAAW,kBAAA;EH+Z9C;AG9ZmC;EAAW,kBAAA;EHia9C;AGhamC;EAAW,kBAAA;EHma9C;AGlamC;EAAW,kBAAA;EHqa9C;AGpamC;EAAW,kBAAA;EHua9C;AGtamC;EAAW,kBAAA;EHya9C;AGxamC;EAAW,kBAAA;EH2a9C;AG1amC;EAAW,kBAAA;EH6a9C;AG5amC;EAAW,kBAAA;EH+a9C;AG9amC;EAAW,kBAAA;EHib9C;AGhbmC;EAAW,kBAAA;EHmb9C;AGlbmC;EAAW,kBAAA;EHqb9C;AGpbmC;EAAW,kBAAA;EHub9C;AGtbmC;EAAW,kBAAA;EHyb9C;AGxbmC;EAAW,kBAAA;EH2b9C;AG1bmC;EAAW,kBAAA;EH6b9C;AG5bmC;EAAW,kBAAA;EH+b9C;AG9bmC;EAAW,kBAAA;EHic9C;AGhcmC;EAAW,kBAAA;EHmc9C;AGlcmC;EAAW,kBAAA;EHqc9C;AGpcmC;EAAW,kBAAA;EHuc9C;AGtcmC;EAAW,kBAAA;EHyc9C;AGxcmC;EAAW,kBAAA;EH2c9C;AG1cmC;EAAW,kBAAA;EH6c9C;AG5cmC;EAAW,kBAAA;EH+c9C;AG9cmC;EAAW,kBAAA;EHid9C;AGhdmC;EAAW,kBAAA;EHmd9C;AGldmC;EAAW,kBAAA;EHqd9C;AGpdmC;EAAW,kBAAA;EHud9C;AGtdmC;EAAW,kBAAA;EHyd9C;AGxdmC;EAAW,kBAAA;EH2d9C;AG1dmC;EAAW,kBAAA;EH6d9C;AG5dmC;EAAW,kBAAA;EH+d9C;AG9dmC;EAAW,kBAAA;EHie9C;AGhemC;EAAW,kBAAA;EHme9C;AGlemC;EAAW,kBAAA;EHqe9C;AGpemC;EAAW,kBAAA;EHue9C;AGtemC;EAAW,kBAAA;EHye9C;AGxemC;EAAW,kBAAA;EH2e9C;AG1emC;EAAW,kBAAA;EH6e9C;AG5emC;EAAW,kBAAA;EH+e9C;AG9emC;EAAW,kBAAA;EHif9C;AGhfmC;EAAW,kBAAA;EHmf9C;AGlfmC;EAAW,kBAAA;EHqf9C;AGpfmC;EAAW,kBAAA;EHuf9C;AGtfmC;EAAW,kBAAA;EHyf9C;AGxfmC;EAAW,kBAAA;EH2f9C;AG1fmC;EAAW,kBAAA;EH6f9C;AG5fmC;EAAW,kBAAA;EH+f9C;AG9fmC;EAAW,kBAAA;EHigB9C;AGhgBmC;EAAW,kBAAA;EHmgB9C;AGlgBmC;EAAW,kBAAA;EHqgB9C;AGpgBmC;EAAW,kBAAA;EHugB9C;AGtgBmC;EAAW,kBAAA;EHygB9C;AGxgBmC;EAAW,kBAAA;EH2gB9C;AG1gBmC;EAAW,kBAAA;EH6gB9C;AG5gBmC;EAAW,kBAAA;EH+gB9C;AG9gBmC;EAAW,kBAAA;EHihB9C;AGhhBmC;EAAW,kBAAA;EHmhB9C;AGlhBmC;EAAW,kBAAA;EHqhB9C;AGphBmC;EAAW,kBAAA;EHuhB9C;AGthBmC;EAAW,kBAAA;EHyhB9C;AGxhBmC;EAAW,kBAAA;EH2hB9C;AG1hBmC;EAAW,kBAAA;EH6hB9C;AG5hBmC;EAAW,kBAAA;EH+hB9C;AG9hBmC;EAAW,kBAAA;EHiiB9C;AGhiBmC;EAAW,kBAAA;EHmiB9C;AGliBmC;EAAW,kBAAA;EHqiB9C;AGpiBmC;EAAW,kBAAA;EHuiB9C;AGtiBmC;EAAW,kBAAA;EHyiB9C;AGxiBmC;EAAW,kBAAA;EH2iB9C;AG1iBmC;EAAW,kBAAA;EH6iB9C;AG5iBmC;EAAW,kBAAA;EH+iB9C;AG9iBmC;EAAW,kBAAA;EHijB9C;AGhjBmC;EAAW,kBAAA;EHmjB9C;AGljBmC;EAAW,kBAAA;EHqjB9C;AGpjBmC;EAAW,kBAAA;EHujB9C;AGtjBmC;EAAW,kBAAA;EHyjB9C;AGxjBmC;EAAW,kBAAA;EH2jB9C;AG1jBmC;EAAW,kBAAA;EH6jB9C;AG5jBmC;EAAW,kBAAA;EH+jB9C;AG9jBmC;EAAW,kBAAA;EHikB9C;AGhkBmC;EAAW,kBAAA;EHmkB9C;AGlkBmC;EAAW,kBAAA;EHqkB9C;AGpkBmC;EAAW,kBAAA;EHukB9C;AGtkBmC;EAAW,kBAAA;EHykB9C;AGxkBmC;EAAW,kBAAA;EH2kB9C;AG1kBmC;EAAW,kBAAA;EH6kB9C;AG5kBmC;EAAW,kBAAA;EH+kB9C;AG9kBmC;EAAW,kBAAA;EHilB9C;AGhlBmC;EAAW,kBAAA;EHmlB9C;AGllBmC;EAAW,kBAAA;EHqlB9C;AGplBmC;EAAW,kBAAA;EHulB9C;AGtlBmC;EAAW,kBAAA;EHylB9C;AGxlBmC;EAAW,kBAAA;EH2lB9C;AG1lBmC;EAAW,kBAAA;EH6lB9C;AG5lBmC;EAAW,kBAAA;EH+lB9C;AG9lBmC;EAAW,kBAAA;EHimB9C;AGhmBmC;EAAW,kBAAA;EHmmB9C;AGlmBmC;EAAW,kBAAA;EHqmB9C;AGpmBmC;EAAW,kBAAA;EHumB9C;AGtmBmC;EAAW,kBAAA;EHymB9C;AGxmBmC;EAAW,kBAAA;EH2mB9C;AG1mBmC;EAAW,kBAAA;EH6mB9C;AG5mBmC;EAAW,kBAAA;EH+mB9C;AG9mBmC;EAAW,kBAAA;EHinB9C;AGhnBmC;EAAW,kBAAA;EHmnB9C;AGlnBmC;EAAW,kBAAA;EHqnB9C;AGpnBmC;EAAW,kBAAA;EHunB9C;AGtnBmC;EAAW,kBAAA;EHynB9C;AGxnBmC;EAAW,kBAAA;EH2nB9C;AG1nBmC;EAAW,kBAAA;EH6nB9C;AG5nBmC;EAAW,kBAAA;EH+nB9C;AG9nBmC;EAAW,kBAAA;EHioB9C;AGhoBmC;EAAW,kBAAA;EHmoB9C;AGloBmC;EAAW,kBAAA;EHqoB9C;AGpoBmC;EAAW,kBAAA;EHuoB9C;AGtoBmC;EAAW,kBAAA;EHyoB9C;AGhoBmC;EAAW,kBAAA;EHmoB9C;AGloBmC;EAAW,kBAAA;EHqoB9C;AGpoBmC;EAAW,kBAAA;EHuoB9C;AGtoBmC;EAAW,kBAAA;EHyoB9C;AGxoBmC;EAAW,kBAAA;EH2oB9C;AG1oBmC;EAAW,kBAAA;EH6oB9C;AG5oBmC;EAAW,kBAAA;EH+oB9C;AG9oBmC;EAAW,kBAAA;EHipB9C;AGhpBmC;EAAW,kBAAA;EHmpB9C;AGlpBmC;EAAW,kBAAA;EHqpB9C;AGppBmC;EAAW,kBAAA;EHupB9C;AGtpBmC;EAAW,kBAAA;EHypB9C;AGxpBmC;EAAW,kBAAA;EH2pB9C;AG1pBmC;EAAW,kBAAA;EH6pB9C;AG5pBmC;EAAW,kBAAA;EH+pB9C;AG9pBmC;EAAW,kBAAA;EHiqB9C;AGhqBmC;EAAW,kBAAA;EHmqB9C;AGlqBmC;EAAW,kBAAA;EHqqB9C;AGpqBmC;EAAW,kBAAA;EHuqB9C;AGtqBmC;EAAW,kBAAA;EHyqB9C;AGxqBmC;EAAW,kBAAA;EH2qB9C;AG1qBmC;EAAW,kBAAA;EH6qB9C;AG5qBmC;EAAW,kBAAA;EH+qB9C;AG9qBmC;EAAW,kBAAA;EHirB9C;AGhrBmC;EAAW,kBAAA;EHmrB9C;AGlrBmC;EAAW,kBAAA;EHqrB9C;AGprBmC;EAAW,kBAAA;EHurB9C;AGtrBmC;EAAW,kBAAA;EHyrB9C;AGxrBmC;EAAW,kBAAA;EH2rB9C;AG1rBmC;EAAW,kBAAA;EH6rB9C;AG5rBmC;EAAW,kBAAA;EH+rB9C;AG9rBmC;EAAW,kBAAA;EHisB9C;AGhsBmC;EAAW,kBAAA;EHmsB9C;AGlsBmC;EAAW,kBAAA;EHqsB9C;AGpsBmC;EAAW,kBAAA;EHusB9C;AGtsBmC;EAAW,kBAAA;EHysB9C;AGxsBmC;EAAW,kBAAA;EH2sB9C;AG1sBmC;EAAW,kBAAA;EH6sB9C;AG5sBmC;EAAW,kBAAA;EH+sB9C;AG9sBmC;EAAW,kBAAA;EHitB9C;AGhtBmC;EAAW,kBAAA;EHmtB9C;AGltBmC;EAAW,kBAAA;EHqtB9C;AGptBmC;EAAW,kBAAA;EHutB9C;AGttBmC;EAAW,kBAAA;EHytB9C;AGxtBmC;EAAW,kBAAA;EH2tB9C;AG1tBmC;EAAW,kBAAA;EH6tB9C;AG5tBmC;EAAW,kBAAA;EH+tB9C;AG9tBmC;EAAW,kBAAA;EHiuB9C;AGhuBmC;EAAW,kBAAA;EHmuB9C;AGluBmC;EAAW,kBAAA;EHquB9C;AGpuBmC;EAAW,kBAAA;EHuuB9C;AGtuBmC;EAAW,kBAAA;EHyuB9C;AGxuBmC;EAAW,kBAAA;EH2uB9C;AG1uBmC;EAAW,kBAAA;EH6uB9C;AG5uBmC;EAAW,kBAAA;EH+uB9C;AG9uBmC;EAAW,kBAAA;EHivB9C;AIvhCD;ECgEE,gCAAA;EACG,6BAAA;EACK,wBAAA;EL09BT;AIzhCD;;EC6DE,gCAAA;EACG,6BAAA;EACK,wBAAA;ELg+BT;AIvhCD;EACE,iBAAA;EACA,+CAAA;EJyhCD;AIthCD;EACE,6DAAA;EACA,iBAAA;EACA,yBAAA;EACA,gBAAA;EACA,2BAAA;EJwhCD;AIphCD;;;;EAIE,sBAAA;EACA,oBAAA;EACA,sBAAA;EJshCD;AIhhCD;EACE,gBAAA;EACA,uBAAA;EJkhCD;AIhhCC;;EAEE,gBAAA;EACA,4BAAA;EJkhCH;AI/gCC;EErDA,sBAAA;EAEA,4CAAA;EACA,sBAAA;ENskCD;AIzgCD;EACE,WAAA;EJ2gCD;AIrgCD;EACE,wBAAA;EJugCD;AIngCD;;;;;EGvEE,gBAAA;EACA,iBAAA;EACA,cAAA;EPilCD;AIvgCD;EACE,oBAAA;EJygCD;AIngCD;EACE,cAAA;EACA,yBAAA;EACA,2BAAA;EACA,2BAAA;EACA,oBAAA;EC6FA,0CAAA;EACK,qCAAA;EACG,kCAAA;EEvLR,uBAAA;EACA,iBAAA;EACA,cAAA;EPimCD;AIngCD;EACE,oBAAA;EJqgCD;AI//BD;EACE,kBAAA;EACA,qBAAA;EACA,WAAA;EACA,+BAAA;EJigCD;AIz/BD;EACE,oBAAA;EACA,YAAA;EACA,aAAA;EACA,cAAA;EACA,YAAA;EACA,kBAAA;EACA,wBAAA;EACA,WAAA;EJ2/BD;AIn/BC;;EAEE,kBAAA;EACA,aAAA;EACA,cAAA;EACA,WAAA;EACA,mBAAA;EACA,YAAA;EJq/BH;AIz+BD;EACE,iBAAA;EJ2+BD;AQnoCD;;;;;;;;;;;;EAEE,sBAAA;EACA,kBAAA;EACA,kBAAA;EACA,gBAAA;ER+oCD;AQppCD;;;;;;;;;;;;;;;;;;;;;;;;EASI,qBAAA;EACA,gBAAA;EACA,gBAAA;ERqqCH;AQjqCD;;;;;;EAGE,kBAAA;EACA,qBAAA;ERsqCD;AQ1qCD;;;;;;;;;;;;EAQI,gBAAA;ERgrCH;AQ7qCD;;;;;;EAGE,kBAAA;EACA,qBAAA;ERkrCD;AQtrCD;;;;;;;;;;;;EAQI,gBAAA;ER4rCH;AQxrCD;;EAAU,iBAAA;ER4rCT;AQ3rCD;;EAAU,iBAAA;ER+rCT;AQ9rCD;;EAAU,iBAAA;ERksCT;AQjsCD;;EAAU,iBAAA;ERqsCT;AQpsCD;;EAAU,iBAAA;ERwsCT;AQvsCD;;EAAU,iBAAA;ER2sCT;AQrsCD;EACE,kBAAA;ERusCD;AQpsCD;EACE,qBAAA;EACA,iBAAA;EACA,kBAAA;EACA,kBAAA;ERssCD;AQjsCD;EAAA;IAFI,iBAAA;IRusCD;EACF;AQ/rCD;;EAEE,gBAAA;ERisCD;AQ9rCD;;EAEE,2BAAA;EACA,eAAA;ERgsCD;AQ5rCD;EAAuB,kBAAA;ER+rCtB;AQ9rCD;EAAuB,mBAAA;ERisCtB;AQhsCD;EAAuB,oBAAA;ERmsCtB;AQlsCD;EAAuB,qBAAA;ERqsCtB;AQpsCD;EAAuB,qBAAA;ERusCtB;AQpsCD;EAAuB,2BAAA;ERusCtB;AQtsCD;EAAuB,2BAAA;ERysCtB;AQxsCD;EAAuB,4BAAA;ER2sCtB;AQxsCD;EACE,gBAAA;ER0sCD;AQxsCD;ECrGE,gBAAA;ETgzCD;AS/yCC;EACE,gBAAA;ETizCH;AQ3sCD;ECxGE,gBAAA;ETszCD;ASrzCC;EACE,gBAAA;ETuzCH;AQ9sCD;EC3GE,gBAAA;ET4zCD;AS3zCC;EACE,gBAAA;ET6zCH;AQjtCD;EC9GE,gBAAA;ETk0CD;ASj0CC;EACE,gBAAA;ETm0CH;AQptCD;ECjHE,gBAAA;ETw0CD;ASv0CC;EACE,gBAAA;ETy0CH;AQntCD;EAGE,aAAA;EE3HA,2BAAA;EV+0CD;AU90CC;EACE,2BAAA;EVg1CH;AQptCD;EE9HE,2BAAA;EVq1CD;AUp1CC;EACE,2BAAA;EVs1CH;AQvtCD;EEjIE,2BAAA;EV21CD;AU11CC;EACE,2BAAA;EV41CH;AQ1tCD;EEpIE,2BAAA;EVi2CD;AUh2CC;EACE,2BAAA;EVk2CH;AQ7tCD;EEvIE,2BAAA;EVu2CD;AUt2CC;EACE,2BAAA;EVw2CH;AQ3tCD;EACE,qBAAA;EACA,qBAAA;EACA,kCAAA;ER6tCD;AQrtCD;;EAEE,eAAA;EACA,qBAAA;ERutCD;AQ1tCD;;;;EAMI,kBAAA;ER0tCH;AQntCD;EACE,iBAAA;EACA,kBAAA;ERqtCD;AQjtCD;EALE,iBAAA;EACA,kBAAA;EAMA,mBAAA;ERotCD;AQttCD;EAKI,uBAAA;EACA,mBAAA;EACA,oBAAA;ERotCH;AQ/sCD;EACE,eAAA;EACA,qBAAA;ERitCD;AQ/sCD;;EAEE,yBAAA;ERitCD;AQ/sCD;EACE,mBAAA;ERitCD;AQ/sCD;EACE,gBAAA;ERitCD;AQxrCD;EAAA;IAVM,aAAA;IACA,cAAA;IACA,aAAA;IACA,mBAAA;IGtNJ,kBAAA;IACA,yBAAA;IACA,qBAAA;IX65CC;EQlsCH;IAHM,oBAAA;IRwsCH;EACF;AQ/rCD;;EAGE,cAAA;EACA,mCAAA;ERgsCD;AQ9rCD;EACE,gBAAA;EA9IqB,2BAAA;ER+0CtB;AQ5rCD;EACE,oBAAA;EACA,kBAAA;EACA,mBAAA;EACA,gCAAA;ER8rCD;AQzrCG;;;EACE,kBAAA;ER6rCL;AQvsCD;;;EAmBI,gBAAA;EACA,gBAAA;EACA,yBAAA;EACA,gBAAA;ERyrCH;AQvrCG;;;EACE,wBAAA;ER2rCL;AQnrCD;;EAEE,qBAAA;EACA,iBAAA;EACA,iCAAA;EACA,gBAAA;EACA,mBAAA;ERqrCD;AQ/qCG;;;;;;EAAW,aAAA;ERurCd;AQtrCG;;;;;;EACE,wBAAA;ER6rCL;AQvrCD;EACE,qBAAA;EACA,oBAAA;EACA,yBAAA;ERyrCD;AY/9CD;;;;EAIE,gEAAA;EZi+CD;AY79CD;EACE,kBAAA;EACA,gBAAA;EACA,gBAAA;EACA,2BAAA;EACA,oBAAA;EZ+9CD;AY39CD;EACE,kBAAA;EACA,gBAAA;EACA,gBAAA;EACA,2BAAA;EACA,oBAAA;EACA,wDAAA;UAAA,gDAAA;EZ69CD;AYn+CD;EASI,YAAA;EACA,iBAAA;EACA,mBAAA;EACA,0BAAA;UAAA,kBAAA;EZ69CH;AYx9CD;EACE,gBAAA;EACA,gBAAA;EACA,kBAAA;EACA,iBAAA;EACA,yBAAA;EACA,uBAAA;EACA,uBAAA;EACA,gBAAA;EACA,2BAAA;EACA,2BAAA;EACA,oBAAA;EZ09CD;AYr+CD;EAeI,YAAA;EACA,oBAAA;EACA,gBAAA;EACA,uBAAA;EACA,+BAAA;EACA,kBAAA;EZy9CH;AYp9CD;EACE,mBAAA;EACA,oBAAA;EZs9CD;AahhDD;ECHE,oBAAA;EACA,mBAAA;EACA,oBAAA;EACA,qBAAA;EdshDD;AahhDC;EAAA;IAFE,cAAA;IbshDD;EACF;AalhDC;EAAA;IAFE,cAAA;IbwhDD;EACF;AaphDD;EAAA;IAFI,eAAA;Ib0hDD;EACF;AajhDD;ECvBE,oBAAA;EACA,mBAAA;EACA,oBAAA;EACA,qBAAA;Ed2iDD;Aa9gDD;ECvBE,oBAAA;EACA,qBAAA;EdwiDD;AexiDG;EACE,oBAAA;EAEA,iBAAA;EAEA,oBAAA;EACA,qBAAA;EfwiDL;AexhDG;EACE,aAAA;Ef0hDL;AenhDC;EACE,aAAA;EfqhDH;AethDC;EACE,qBAAA;EfwhDH;AezhDC;EACE,qBAAA;Ef2hDH;Ae5hDC;EACE,YAAA;Ef8hDH;Ae/hDC;EACE,qBAAA;EfiiDH;AeliDC;EACE,qBAAA;EfoiDH;AeriDC;EACE,YAAA;EfuiDH;AexiDC;EACE,qBAAA;Ef0iDH;Ae3iDC;EACE,qBAAA;Ef6iDH;Ae9iDC;EACE,YAAA;EfgjDH;AejjDC;EACE,qBAAA;EfmjDH;AepjDC;EACE,oBAAA;EfsjDH;AexiDC;EACE,aAAA;Ef0iDH;Ae3iDC;EACE,qBAAA;Ef6iDH;Ae9iDC;EACE,qBAAA;EfgjDH;AejjDC;EACE,YAAA;EfmjDH;AepjDC;EACE,qBAAA;EfsjDH;AevjDC;EACE,qBAAA;EfyjDH;Ae1jDC;EACE,YAAA;Ef4jDH;Ae7jDC;EACE,qBAAA;Ef+jDH;AehkDC;EACE,qBAAA;EfkkDH;AenkDC;EACE,YAAA;EfqkDH;AetkDC;EACE,qBAAA;EfwkDH;AezkDC;EACE,oBAAA;Ef2kDH;AevkDC;EACE,aAAA;EfykDH;AezlDC;EACE,YAAA;Ef2lDH;Ae5lDC;EACE,oBAAA;Ef8lDH;Ae/lDC;EACE,oBAAA;EfimDH;AelmDC;EACE,WAAA;EfomDH;AermDC;EACE,oBAAA;EfumDH;AexmDC;EACE,oBAAA;Ef0mDH;Ae3mDC;EACE,WAAA;Ef6mDH;Ae9mDC;EACE,oBAAA;EfgnDH;AejnDC;EACE,oBAAA;EfmnDH;AepnDC;EACE,WAAA;EfsnDH;AevnDC;EACE,oBAAA;EfynDH;Ae1nDC;EACE,mBAAA;Ef4nDH;AexnDC;EACE,YAAA;Ef0nDH;Ae5mDC;EACE,mBAAA;Ef8mDH;Ae/mDC;EACE,2BAAA;EfinDH;AelnDC;EACE,2BAAA;EfonDH;AernDC;EACE,kBAAA;EfunDH;AexnDC;EACE,2BAAA;Ef0nDH;Ae3nDC;EACE,2BAAA;Ef6nDH;Ae9nDC;EACE,kBAAA;EfgoDH;AejoDC;EACE,2BAAA;EfmoDH;AepoDC;EACE,2BAAA;EfsoDH;AevoDC;EACE,kBAAA;EfyoDH;Ae1oDC;EACE,2BAAA;Ef4oDH;Ae7oDC;EACE,0BAAA;Ef+oDH;AehpDC;EACE,iBAAA;EfkpDH;AalpDD;EElCI;IACE,aAAA;IfurDH;EehrDD;IACE,aAAA;IfkrDD;EenrDD;IACE,qBAAA;IfqrDD;EetrDD;IACE,qBAAA;IfwrDD;EezrDD;IACE,YAAA;If2rDD;Ee5rDD;IACE,qBAAA;If8rDD;Ee/rDD;IACE,qBAAA;IfisDD;EelsDD;IACE,YAAA;IfosDD;EersDD;IACE,qBAAA;IfusDD;EexsDD;IACE,qBAAA;If0sDD;Ee3sDD;IACE,YAAA;If6sDD;Ee9sDD;IACE,qBAAA;IfgtDD;EejtDD;IACE,oBAAA;IfmtDD;EersDD;IACE,aAAA;IfusDD;EexsDD;IACE,qBAAA;If0sDD;Ee3sDD;IACE,qBAAA;If6sDD;Ee9sDD;IACE,YAAA;IfgtDD;EejtDD;IACE,qBAAA;IfmtDD;EeptDD;IACE,qBAAA;IfstDD;EevtDD;IACE,YAAA;IfytDD;Ee1tDD;IACE,qBAAA;If4tDD;Ee7tDD;IACE,qBAAA;If+tDD;EehuDD;IACE,YAAA;IfkuDD;EenuDD;IACE,qBAAA;IfquDD;EetuDD;IACE,oBAAA;IfwuDD;EepuDD;IACE,aAAA;IfsuDD;EetvDD;IACE,YAAA;IfwvDD;EezvDD;IACE,oBAAA;If2vDD;Ee5vDD;IACE,oBAAA;If8vDD;Ee/vDD;IACE,WAAA;IfiwDD;EelwDD;IACE,oBAAA;IfowDD;EerwDD;IACE,oBAAA;IfuwDD;EexwDD;IACE,WAAA;If0wDD;Ee3wDD;IACE,oBAAA;If6wDD;Ee9wDD;IACE,oBAAA;IfgxDD;EejxDD;IACE,WAAA;IfmxDD;EepxDD;IACE,oBAAA;IfsxDD;EevxDD;IACE,mBAAA;IfyxDD;EerxDD;IACE,YAAA;IfuxDD;EezwDD;IACE,mBAAA;If2wDD;Ee5wDD;IACE,2BAAA;If8wDD;Ee/wDD;IACE,2BAAA;IfixDD;EelxDD;IACE,kBAAA;IfoxDD;EerxDD;IACE,2BAAA;IfuxDD;EexxDD;IACE,2BAAA;If0xDD;Ee3xDD;IACE,kBAAA;If6xDD;Ee9xDD;IACE,2BAAA;IfgyDD;EejyDD;IACE,2BAAA;IfmyDD;EepyDD;IACE,kBAAA;IfsyDD;EevyDD;IACE,2BAAA;IfyyDD;Ee1yDD;IACE,0BAAA;If4yDD;Ee7yDD;IACE,iBAAA;If+yDD;EACF;AavyDD;EE3CI;IACE,aAAA;Ifq1DH;Ee90DD;IACE,aAAA;Ifg1DD;Eej1DD;IACE,qBAAA;Ifm1DD;Eep1DD;IACE,qBAAA;Ifs1DD;Eev1DD;IACE,YAAA;Ify1DD;Ee11DD;IACE,qBAAA;If41DD;Ee71DD;IACE,qBAAA;If+1DD;Eeh2DD;IACE,YAAA;Ifk2DD;Een2DD;IACE,qBAAA;Ifq2DD;Eet2DD;IACE,qBAAA;Ifw2DD;Eez2DD;IACE,YAAA;If22DD;Ee52DD;IACE,qBAAA;If82DD;Ee/2DD;IACE,oBAAA;Ifi3DD;Een2DD;IACE,aAAA;Ifq2DD;Eet2DD;IACE,qBAAA;Ifw2DD;Eez2DD;IACE,qBAAA;If22DD;Ee52DD;IACE,YAAA;If82DD;Ee/2DD;IACE,qBAAA;Ifi3DD;Eel3DD;IACE,qBAAA;Ifo3DD;Eer3DD;IACE,YAAA;Ifu3DD;Eex3DD;IACE,qBAAA;If03DD;Ee33DD;IACE,qBAAA;If63DD;Ee93DD;IACE,YAAA;Ifg4DD;Eej4DD;IACE,qBAAA;Ifm4DD;Eep4DD;IACE,oBAAA;Ifs4DD;Eel4DD;IACE,aAAA;Ifo4DD;Eep5DD;IACE,YAAA;Ifs5DD;Eev5DD;IACE,oBAAA;Ify5DD;Ee15DD;IACE,oBAAA;If45DD;Ee75DD;IACE,WAAA;If+5DD;Eeh6DD;IACE,oBAAA;Ifk6DD;Een6DD;IACE,oBAAA;Ifq6DD;Eet6DD;IACE,WAAA;Ifw6DD;Eez6DD;IACE,oBAAA;If26DD;Ee56DD;IACE,oBAAA;If86DD;Ee/6DD;IACE,WAAA;Ifi7DD;Eel7DD;IACE,oBAAA;Ifo7DD;Eer7DD;IACE,mBAAA;Ifu7DD;Een7DD;IACE,YAAA;Ifq7DD;Eev6DD;IACE,mBAAA;Ify6DD;Ee16DD;IACE,2BAAA;If46DD;Ee76DD;IACE,2BAAA;If+6DD;Eeh7DD;IACE,kBAAA;Ifk7DD;Een7DD;IACE,2BAAA;Ifq7DD;Eet7DD;IACE,2BAAA;Ifw7DD;Eez7DD;IACE,kBAAA;If27DD;Ee57DD;IACE,2BAAA;If87DD;Ee/7DD;IACE,2BAAA;Ifi8DD;Eel8DD;IACE,kBAAA;Ifo8DD;Eer8DD;IACE,2BAAA;Ifu8DD;Eex8DD;IACE,0BAAA;If08DD;Ee38DD;IACE,iBAAA;If68DD;EACF;Aal8DD;EE9CI;IACE,aAAA;Ifm/DH;Ee5+DD;IACE,aAAA;If8+DD;Ee/+DD;IACE,qBAAA;Ifi/DD;Eel/DD;IACE,qBAAA;Ifo/DD;Eer/DD;IACE,YAAA;Ifu/DD;Eex/DD;IACE,qBAAA;If0/DD;Ee3/DD;IACE,qBAAA;If6/DD;Ee9/DD;IACE,YAAA;IfggED;EejgED;IACE,qBAAA;IfmgED;EepgED;IACE,qBAAA;IfsgED;EevgED;IACE,YAAA;IfygED;Ee1gED;IACE,qBAAA;If4gED;Ee7gED;IACE,oBAAA;If+gED;EejgED;IACE,aAAA;IfmgED;EepgED;IACE,qBAAA;IfsgED;EevgED;IACE,qBAAA;IfygED;Ee1gED;IACE,YAAA;If4gED;Ee7gED;IACE,qBAAA;If+gED;EehhED;IACE,qBAAA;IfkhED;EenhED;IACE,YAAA;IfqhED;EethED;IACE,qBAAA;IfwhED;EezhED;IACE,qBAAA;If2hED;Ee5hED;IACE,YAAA;If8hED;Ee/hED;IACE,qBAAA;IfiiED;EeliED;IACE,oBAAA;IfoiED;EehiED;IACE,aAAA;IfkiED;EeljED;IACE,YAAA;IfojED;EerjED;IACE,oBAAA;IfujED;EexjED;IACE,oBAAA;If0jED;Ee3jED;IACE,WAAA;If6jED;Ee9jED;IACE,oBAAA;IfgkED;EejkED;IACE,oBAAA;IfmkED;EepkED;IACE,WAAA;IfskED;EevkED;IACE,oBAAA;IfykED;Ee1kED;IACE,oBAAA;If4kED;Ee7kED;IACE,WAAA;If+kED;EehlED;IACE,oBAAA;IfklED;EenlED;IACE,mBAAA;IfqlED;EejlED;IACE,YAAA;IfmlED;EerkED;IACE,mBAAA;IfukED;EexkED;IACE,2BAAA;If0kED;Ee3kED;IACE,2BAAA;If6kED;Ee9kED;IACE,kBAAA;IfglED;EejlED;IACE,2BAAA;IfmlED;EeplED;IACE,2BAAA;IfslED;EevlED;IACE,kBAAA;IfylED;Ee1lED;IACE,2BAAA;If4lED;Ee7lED;IACE,2BAAA;If+lED;EehmED;IACE,kBAAA;IfkmED;EenmED;IACE,2BAAA;IfqmED;EetmED;IACE,0BAAA;IfwmED;EezmED;IACE,iBAAA;If2mED;EACF;AgB/qED;EACE,+BAAA;EhBirED;AgB/qED;EACE,kBAAA;EACA,qBAAA;EACA,gBAAA;EACA,kBAAA;EhBirED;AgB/qED;EACE,kBAAA;EhBirED;AgB3qED;EACE,aAAA;EACA,iBAAA;EACA,qBAAA;EhB6qED;AgBhrED;;;;;;EAWQ,cAAA;EACA,yBAAA;EACA,qBAAA;EACA,+BAAA;EhB6qEP;AgB3rED;EAoBI,wBAAA;EACA,kCAAA;EhB0qEH;AgB/rED;;;;;;EA8BQ,eAAA;EhByqEP;AgBvsED;EAoCI,+BAAA;EhBsqEH;AgB1sED;EAyCI,2BAAA;EhBoqEH;AgB7pED;;;;;;EAOQ,cAAA;EhB8pEP;AgBnpED;EACE,2BAAA;EhBqpED;AgBtpED;;;;;;EAQQ,2BAAA;EhBspEP;AgB9pED;;EAeM,0BAAA;EhBmpEL;AgBzoED;EAEI,2BAAA;EhB0oEH;AgBjoED;EAEI,2BAAA;EhBkoEH;AgBznED;EACE,kBAAA;EACA,aAAA;EACA,uBAAA;EhB2nED;AgBtnEG;;EACE,kBAAA;EACA,aAAA;EACA,qBAAA;EhBynEL;AiBrwEC;;;;;;;;;;;;EAOI,2BAAA;EjB4wEL;AiBtwEC;;;;;EAMI,2BAAA;EjBuwEL;AiB1xEC;;;;;;;;;;;;EAOI,2BAAA;EjBiyEL;AiB3xEC;;;;;EAMI,2BAAA;EjB4xEL;AiB/yEC;;;;;;;;;;;;EAOI,2BAAA;EjBszEL;AiBhzEC;;;;;EAMI,2BAAA;EjBizEL;AiBp0EC;;;;;;;;;;;;EAOI,2BAAA;EjB20EL;AiBr0EC;;;;;EAMI,2BAAA;EjBs0EL;AiBz1EC;;;;;;;;;;;;EAOI,2BAAA;EjBg2EL;AiB11EC;;;;;EAMI,2BAAA;EjB21EL;AgBzsED;EACE,kBAAA;EACA,mBAAA;EhB2sED;AgB9oED;EAAA;IA1DI,aAAA;IACA,qBAAA;IACA,oBAAA;IACA,8CAAA;IACA,2BAAA;IhB4sED;EgBtpEH;IAlDM,kBAAA;IhB2sEH;EgBzpEH;;;;;;IAzCY,qBAAA;IhB0sET;EgBjqEH;IAjCM,WAAA;IhBqsEH;EgBpqEH;;;;;;IAxBY,gBAAA;IhBosET;EgB5qEH;;;;;;IApBY,iBAAA;IhBwsET;EgBprEH;;;;IAPY,kBAAA;IhBisET;EACF;AkB35ED;EACE,YAAA;EACA,WAAA;EACA,WAAA;EAIA,cAAA;ElB05ED;AkBv5ED;EACE,gBAAA;EACA,aAAA;EACA,YAAA;EACA,qBAAA;EACA,iBAAA;EACA,sBAAA;EACA,gBAAA;EACA,WAAA;EACA,kCAAA;ElBy5ED;AkBt5ED;EACE,uBAAA;EACA,iBAAA;EACA,oBAAA;EACA,mBAAA;ElBw5ED;AkB74ED;Eb4BE,gCAAA;EACG,6BAAA;EACK,wBAAA;ELo3ET;AkB74ED;;EAEE,iBAAA;EACA,oBAAA;EACA,qBAAA;ElB+4ED;AkB34ED;EACE,gBAAA;ElB64ED;AkBz4ED;EACE,gBAAA;EACA,aAAA;ElB24ED;AkBv4ED;;EAEE,cAAA;ElBy4ED;AkBr4ED;;;EZxEE,sBAAA;EAEA,4CAAA;EACA,sBAAA;ENi9ED;AkBr4ED;EACE,gBAAA;EACA,kBAAA;EACA,iBAAA;EACA,yBAAA;EACA,gBAAA;ElBu4ED;AkB72ED;EACE,gBAAA;EACA,aAAA;EACA,cAAA;EACA,mBAAA;EACA,iBAAA;EACA,yBAAA;EACA,gBAAA;EACA,2BAAA;EACA,wBAAA;EACA,2BAAA;EACA,oBAAA;EbzDA,0DAAA;EACQ,kDAAA;EAyHR,wFAAA;EACK,2EAAA;EACG,wEAAA;ELizET;AmBz7EC;EACE,uBAAA;EACA,YAAA;EdUF,wFAAA;EACQ,gFAAA;ELk7ET;AKj5EC;EACE,gBAAA;EACA,YAAA;ELm5EH;AKj5EC;EAA0B,gBAAA;ELo5E3B;AKn5EC;EAAgC,gBAAA;ELs5EjC;AkBr3EC;;;EAGE,2BAAA;EACA,YAAA;ElBu3EH;AkBp3EC;;EAEE,qBAAA;ElBs3EH;AkBl3EC;EACE,cAAA;ElBo3EH;AkBx2ED;EACE,0BAAA;ElB02ED;AkBt0ED;EAxBE;;;;IAIE,mBAAA;IlBi2ED;EkB/1EC;;;;;;;;IAEE,mBAAA;IlBu2EH;EkBp2EC;;;;;;;;IAEE,mBAAA;IlB42EH;EACF;AkBl2ED;EACE,qBAAA;ElBo2ED;AkB51ED;;EAEE,oBAAA;EACA,gBAAA;EACA,kBAAA;EACA,qBAAA;ElB81ED;AkBn2ED;;EAQI,kBAAA;EACA,oBAAA;EACA,kBAAA;EACA,qBAAA;EACA,iBAAA;ElB+1EH;AkB51ED;;;;EAIE,oBAAA;EACA,oBAAA;EACA,oBAAA;ElB81ED;AkB31ED;;EAEE,kBAAA;ElB61ED;AkBz1ED;;EAEE,oBAAA;EACA,uBAAA;EACA,oBAAA;EACA,kBAAA;EACA,wBAAA;EACA,qBAAA;EACA,iBAAA;ElB21ED;AkBz1ED;;EAEE,eAAA;EACA,mBAAA;ElB21ED;AkBl1EC;;;;;;EAGE,qBAAA;ElBu1EH;AkBj1EC;;;;EAEE,qBAAA;ElBq1EH;AkB/0EC;;;;EAGI,qBAAA;ElBk1EL;AkBv0ED;EAEE,kBAAA;EACA,qBAAA;EAEA,kBAAA;EACA,kBAAA;ElBu0ED;AkBr0EC;;EAEE,iBAAA;EACA,kBAAA;ElBu0EH;AkB1zED;EC1PE,cAAA;EACA,mBAAA;EACA,iBAAA;EACA,kBAAA;EACA,oBAAA;EnBujFD;AmBrjFC;EACE,cAAA;EACA,mBAAA;EnBujFH;AmBpjFC;;EAEE,cAAA;EnBsjFH;AkBt0ED;EC7PE,cAAA;EACA,mBAAA;EACA,iBAAA;EACA,kBAAA;EACA,oBAAA;EnBskFD;AmBpkFC;EACE,cAAA;EACA,mBAAA;EnBskFH;AmBnkFC;;EAEE,cAAA;EnBqkFH;AkBr1ED;EAKI,cAAA;EACA,mBAAA;EACA,iBAAA;EACA,kBAAA;EACA,kBAAA;ElBm1EH;AkB/0ED;EC1QE,cAAA;EACA,oBAAA;EACA,iBAAA;EACA,wBAAA;EACA,oBAAA;EnB4lFD;AmB1lFC;EACE,cAAA;EACA,mBAAA;EnB4lFH;AmBzlFC;;EAEE,cAAA;EnB2lFH;AkB31ED;EC7QE,cAAA;EACA,oBAAA;EACA,iBAAA;EACA,wBAAA;EACA,oBAAA;EnB2mFD;AmBzmFC;EACE,cAAA;EACA,mBAAA;EnB2mFH;AmBxmFC;;EAEE,cAAA;EnB0mFH;AkB12ED;EAKI,cAAA;EACA,oBAAA;EACA,iBAAA;EACA,wBAAA;EACA,kBAAA;ElBw2EH;AkB/1ED;EAEE,oBAAA;ElBg2ED;AkBl2ED;EAMI,uBAAA;ElB+1EH;AkB31ED;EACE,oBAAA;EACA,QAAA;EACA,UAAA;EACA,YAAA;EACA,gBAAA;EACA,aAAA;EACA,cAAA;EACA,mBAAA;EACA,oBAAA;EACA,sBAAA;ElB61ED;AkB31ED;EACE,aAAA;EACA,cAAA;EACA,mBAAA;ElB61ED;AkB31ED;EACE,aAAA;EACA,cAAA;EACA,mBAAA;ElB61ED;AkBz1ED;;;;;;;;;;ECrXI,gBAAA;EnB0tFH;AkBr2ED;ECjXI,uBAAA;Ed+CF,0DAAA;EACQ,kDAAA;EL2qFT;AmBztFG;EACE,uBAAA;Ed4CJ,2EAAA;EACQ,mEAAA;ELgrFT;AkB/2ED;ECvWI,gBAAA;EACA,uBAAA;EACA,2BAAA;EnBytFH;AkBp3ED;ECjWI,gBAAA;EnBwtFH;AkBp3ED;;;;;;;;;;ECxXI,gBAAA;EnBwvFH;AkBh4ED;ECpXI,uBAAA;Ed+CF,0DAAA;EACQ,kDAAA;ELysFT;AmBvvFG;EACE,uBAAA;Ed4CJ,2EAAA;EACQ,mEAAA;EL8sFT;AkB14ED;EC1WI,gBAAA;EACA,uBAAA;EACA,2BAAA;EnBuvFH;AkB/4ED;ECpWI,gBAAA;EnBsvFH;AkB/4ED;;;;;;;;;;EC3XI,gBAAA;EnBsxFH;AkB35ED;ECvXI,uBAAA;Ed+CF,0DAAA;EACQ,kDAAA;ELuuFT;AmBrxFG;EACE,uBAAA;Ed4CJ,2EAAA;EACQ,mEAAA;EL4uFT;AkBr6ED;EC7WI,gBAAA;EACA,uBAAA;EACA,2BAAA;EnBqxFH;AkB16ED;ECvWI,gBAAA;EnBoxFH;AkBt6EC;EACG,WAAA;ElBw6EJ;AkBt6EC;EACG,QAAA;ElBw6EJ;AkB95ED;EACE,gBAAA;EACA,iBAAA;EACA,qBAAA;EACA,gBAAA;ElBg6ED;AkB70ED;EAAA;IA9DM,uBAAA;IACA,kBAAA;IACA,wBAAA;IlB+4EH;EkBn1EH;IAvDM,uBAAA;IACA,aAAA;IACA,wBAAA;IlB64EH;EkBx1EH;IAhDM,uBAAA;IlB24EH;EkB31EH;IA5CM,uBAAA;IACA,wBAAA;IlB04EH;EkB/1EH;;;IAtCQ,aAAA;IlB04EL;EkBp2EH;IAhCM,aAAA;IlBu4EH;EkBv2EH;IA5BM,kBAAA;IACA,wBAAA;IlBs4EH;EkB32EH;;IApBM,uBAAA;IACA,eAAA;IACA,kBAAA;IACA,wBAAA;IlBm4EH;EkBl3EH;;IAdQ,iBAAA;IlBo4EL;EkBt3EH;;IATM,oBAAA;IACA,gBAAA;IlBm4EH;EkB33EH;IAHM,QAAA;IlBi4EH;EACF;AkBv3ED;;;;EASI,eAAA;EACA,kBAAA;EACA,kBAAA;ElBo3EH;AkB/3ED;;EAiBI,kBAAA;ElBk3EH;AkBn4ED;EJjfE,oBAAA;EACA,qBAAA;Edu3FD;AkBh2EC;EAAA;IAVI,mBAAA;IACA,kBAAA;IACA,kBAAA;IlB82EH;EACF;AkB94ED;EAwCI,aAAA;ElBy2EH;AkB51EC;EAAA;IAHM,0BAAA;IlBm2EL;EACF;AkB11EC;EAAA;IAHM,kBAAA;IlBi2EL;EACF;AoBn5FD;EACE,uBAAA;EACA,kBAAA;EACA,qBAAA;EACA,oBAAA;EACA,wBAAA;EACA,gCAAA;MAAA,4BAAA;EACA,iBAAA;EACA,wBAAA;EACA,+BAAA;EACA,qBAAA;EC6BA,mBAAA;EACA,iBAAA;EACA,yBAAA;EACA,oBAAA;EhB4KA,2BAAA;EACG,wBAAA;EACC,uBAAA;EACI,mBAAA;EL8sFT;AoBt5FG;;;;;;EdrBF,sBAAA;EAEA,4CAAA;EACA,sBAAA;ENk7FD;AoB15FC;;;EAGE,gBAAA;EACA,uBAAA;EpB45FH;AoBz5FC;;EAEE,YAAA;EACA,wBAAA;Ef2BF,0DAAA;EACQ,kDAAA;ELi4FT;AoBz5FC;;;EAGE,qBAAA;EACA,sBAAA;EE9CF,eAAA;EAGA,2BAAA;EjB8DA,0BAAA;EACQ,kBAAA;EL24FT;AoBr5FD;ECrDE,gBAAA;EACA,2BAAA;EACA,uBAAA;ErB68FD;AqB38FC;;;;;;EAME,gBAAA;EACA,2BAAA;EACI,uBAAA;ErB68FP;AqB38FC;;;EAGE,wBAAA;ErB68FH;AqBx8FG;;;;;;;;;;;;;;;;;;EAME,2BAAA;EACI,uBAAA;ErBs9FT;AoB97FD;ECnBI,gBAAA;EACA,2BAAA;ErBo9FH;AoB/7FD;ECxDE,gBAAA;EACA,2BAAA;EACA,uBAAA;ErB0/FD;AqBx/FC;;;;;;EAME,gBAAA;EACA,2BAAA;EACI,uBAAA;ErB0/FP;AqBx/FC;;;EAGE,wBAAA;ErB0/FH;AqBr/FG;;;;;;;;;;;;;;;;;;EAME,2BAAA;EACI,uBAAA;ErBmgGT;AoBx+FD;ECtBI,gBAAA;EACA,2BAAA;ErBigGH;AoBx+FD;EC5DE,gBAAA;EACA,2BAAA;EACA,uBAAA;ErBuiGD;AqBriGC;;;;;;EAME,gBAAA;EACA,2BAAA;EACI,uBAAA;ErBuiGP;AqBriGC;;;EAGE,wBAAA;ErBuiGH;AqBliGG;;;;;;;;;;;;;;;;;;EAME,2BAAA;EACI,uBAAA;ErBgjGT;AoBjhGD;EC1BI,gBAAA;EACA,2BAAA;ErB8iGH;AoBjhGD;EChEE,gBAAA;EACA,2BAAA;EACA,uBAAA;ErBolGD;AqBllGC;;;;;;EAME,gBAAA;EACA,2BAAA;EACI,uBAAA;ErBolGP;AqBllGC;;;EAGE,wBAAA;ErBolGH;AqB/kGG;;;;;;;;;;;;;;;;;;EAME,2BAAA;EACI,uBAAA;ErB6lGT;AoB1jGD;EC9BI,gBAAA;EACA,2BAAA;ErB2lGH;AoB1jGD;ECpEE,gBAAA;EACA,2BAAA;EACA,uBAAA;ErBioGD;AqB/nGC;;;;;;EAME,gBAAA;EACA,2BAAA;EACI,uBAAA;ErBioGP;AqB/nGC;;;EAGE,wBAAA;ErBioGH;AqB5nGG;;;;;;;;;;;;;;;;;;EAME,2BAAA;EACI,uBAAA;ErB0oGT;AoBnmGD;EClCI,gBAAA;EACA,2BAAA;ErBwoGH;AoBnmGD;ECxEE,gBAAA;EACA,2BAAA;EACA,uBAAA;ErB8qGD;AqB5qGC;;;;;;EAME,gBAAA;EACA,2BAAA;EACI,uBAAA;ErB8qGP;AqB5qGC;;;EAGE,wBAAA;ErB8qGH;AqBzqGG;;;;;;;;;;;;;;;;;;EAME,2BAAA;EACI,uBAAA;ErBurGT;AoB5oGD;ECtCI,gBAAA;EACA,2BAAA;ErBqrGH;AoBvoGD;EACE,gBAAA;EACA,qBAAA;EACA,kBAAA;EpByoGD;AoBvoGC;;;;;EAKE,+BAAA;Ef7BF,0BAAA;EACQ,kBAAA;ELuqGT;AoBxoGC;;;;EAIE,2BAAA;EpB0oGH;AoBxoGC;;EAEE,gBAAA;EACA,4BAAA;EACA,+BAAA;EpB0oGH;AoBtoGG;;;;EAEE,gBAAA;EACA,uBAAA;EpB0oGL;AoBjoGD;;EC/EE,oBAAA;EACA,iBAAA;EACA,wBAAA;EACA,oBAAA;ErBotGD;AoBpoGD;;ECnFE,mBAAA;EACA,iBAAA;EACA,kBAAA;EACA,oBAAA;ErB2tGD;AoBvoGD;;ECvFE,kBAAA;EACA,iBAAA;EACA,kBAAA;EACA,oBAAA;ErBkuGD;AoBtoGD;EACE,gBAAA;EACA,aAAA;EpBwoGD;AoBpoGD;EACE,iBAAA;EpBsoGD;AoB/nGC;;;EACE,aAAA;EpBmoGH;AuBvxGD;EACE,YAAA;ElBoLA,0CAAA;EACK,qCAAA;EACG,kCAAA;ELsmGT;AuB1xGC;EACE,YAAA;EvB4xGH;AuBxxGD;EACE,eAAA;EvB0xGD;AuBxxGC;EAAY,gBAAA;EvB2xGb;AuB1xGC;EAAY,oBAAA;EvB6xGb;AuB5xGC;EAAY,0BAAA;EvB+xGb;AuB5xGD;EACE,oBAAA;EACA,WAAA;EACA,kBAAA;ElBuKA,iDAAA;EACQ,4CAAA;KAAA,yCAAA;EAOR,oCAAA;EACQ,+BAAA;KAAA,4BAAA;EAGR,0CAAA;EACQ,qCAAA;KAAA,kCAAA;ELgnGT;AwB1zGD;EACE,uBAAA;EACA,UAAA;EACA,WAAA;EACA,kBAAA;EACA,wBAAA;EACA,wBAAA;EACA,qCAAA;EACA,oCAAA;ExB4zGD;AwBxzGD;;EAEE,oBAAA;ExB0zGD;AwBtzGD;EACE,YAAA;ExBwzGD;AwBpzGD;EACE,oBAAA;EACA,WAAA;EACA,SAAA;EACA,eAAA;EACA,eAAA;EACA,aAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,kBAAA;EACA,iBAAA;EACA,kBAAA;EACA,2BAAA;EACA,2BAAA;EACA,uCAAA;EACA,oBAAA;EnBuBA,qDAAA;EACQ,6CAAA;EmBtBR,sCAAA;UAAA,8BAAA;ExBuzGD;AwBlzGC;EACE,UAAA;EACA,YAAA;ExBozGH;AwB70GD;ECxBE,aAAA;EACA,eAAA;EACA,kBAAA;EACA,2BAAA;EzBw2GD;AwBn1GD;EAmCI,gBAAA;EACA,mBAAA;EACA,aAAA;EACA,qBAAA;EACA,yBAAA;EACA,gBAAA;EACA,qBAAA;ExBmzGH;AwB7yGC;;EAEE,uBAAA;EACA,gBAAA;EACA,2BAAA;ExB+yGH;AwBzyGC;;;EAGE,gBAAA;EACA,uBAAA;EACA,YAAA;EACA,2BAAA;ExB2yGH;AwBlyGC;;;EAGE,gBAAA;ExBoyGH;AwBhyGC;;EAEE,uBAAA;EACA,+BAAA;EACA,wBAAA;EE1GF,qEAAA;EF4GE,qBAAA;ExBkyGH;AwB7xGD;EAGI,gBAAA;ExB6xGH;AwBhyGD;EAQI,YAAA;ExB2xGH;AwBnxGD;EACE,YAAA;EACA,UAAA;ExBqxGD;AwB7wGD;EACE,SAAA;EACA,aAAA;ExB+wGD;AwB3wGD;EACE,gBAAA;EACA,mBAAA;EACA,iBAAA;EACA,yBAAA;EACA,gBAAA;EACA,qBAAA;ExB6wGD;AwBzwGD;EACE,iBAAA;EACA,SAAA;EACA,UAAA;EACA,WAAA;EACA,QAAA;EACA,cAAA;ExB2wGD;AwBvwGD;EACE,UAAA;EACA,YAAA;ExBywGD;AwBjwGD;;EAII,eAAA;EACA,0BAAA;EACA,aAAA;ExBiwGH;AwBvwGD;;EAUI,WAAA;EACA,cAAA;EACA,oBAAA;ExBiwGH;AwB5uGD;EAXE;IAnEA,YAAA;IACA,UAAA;IxB8zGC;EwB5vGD;IAzDA,SAAA;IACA,aAAA;IxBwzGC;EACF;A2Bv8GD;;EAEE,oBAAA;EACA,uBAAA;EACA,wBAAA;E3By8GD;A2B78GD;;EAMI,oBAAA;EACA,aAAA;E3B28GH;A2Bz8GG;;;;;;;;EAIE,YAAA;E3B+8GL;A2Bz8GD;;;;EAKI,mBAAA;E3B08GH;A2Br8GD;EACE,mBAAA;E3Bu8GD;A2Bx8GD;;EAMI,aAAA;E3Bs8GH;A2B58GD;;;EAWI,kBAAA;E3Bs8GH;A2Bl8GD;EACE,kBAAA;E3Bo8GD;A2Bh8GD;EACE,gBAAA;E3Bk8GD;A2Bj8GC;ECjDA,+BAAA;EACG,4BAAA;E5Bq/GJ;A2Bh8GD;;EC9CE,8BAAA;EACG,2BAAA;E5Bk/GJ;A2B/7GD;EACE,aAAA;E3Bi8GD;A2B/7GD;EACE,kBAAA;E3Bi8GD;A2B/7GD;;EClEE,+BAAA;EACG,4BAAA;E5BqgHJ;A2B97GD;EChEE,8BAAA;EACG,2BAAA;E5BigHJ;A2B77GD;;EAEE,YAAA;E3B+7GD;A2B96GD;EACE,mBAAA;EACA,oBAAA;E3Bg7GD;A2B96GD;EACE,oBAAA;EACA,qBAAA;E3Bg7GD;A2B36GD;EtB9CE,0DAAA;EACQ,kDAAA;EL49GT;A2B36GC;EtBlDA,0BAAA;EACQ,kBAAA;ELg+GT;A2Bx6GD;EACE,gBAAA;E3B06GD;A2Bv6GD;EACE,yBAAA;EACA,wBAAA;E3By6GD;A2Bt6GD;EACE,yBAAA;E3Bw6GD;A2Bj6GD;;;EAII,gBAAA;EACA,aAAA;EACA,aAAA;EACA,iBAAA;E3Bk6GH;A2Bz6GD;EAcM,aAAA;E3B85GL;A2B56GD;;;;EAsBI,kBAAA;EACA,gBAAA;E3B45GH;A2Bv5GC;EACE,kBAAA;E3By5GH;A2Bv5GC;EACE,8BAAA;ECnKF,+BAAA;EACC,8BAAA;E5B6jHF;A2Bx5GC;EACE,gCAAA;EC/KF,4BAAA;EACC,2BAAA;E5B0kHF;A2Bx5GD;EACE,kBAAA;E3B05GD;A2Bx5GD;;EC9KE,+BAAA;EACC,8BAAA;E5B0kHF;A2Bv5GD;EC5LE,4BAAA;EACC,2BAAA;E5BslHF;A2Bn5GD;EACE,gBAAA;EACA,aAAA;EACA,qBAAA;EACA,2BAAA;E3Bq5GD;A2Bz5GD;;EAOI,aAAA;EACA,qBAAA;EACA,WAAA;E3Bs5GH;A2B/5GD;EAYI,aAAA;E3Bs5GH;A2Bl6GD;EAgBI,YAAA;E3Bq5GH;A2Bp4GD;;;;EAKM,oBAAA;EACA,wBAAA;EACA,sBAAA;E3Bq4GL;A6B9mHD;EACE,oBAAA;EACA,gBAAA;EACA,2BAAA;E7BgnHD;A6B7mHC;EACE,aAAA;EACA,iBAAA;EACA,kBAAA;E7B+mHH;A6BxnHD;EAeI,oBAAA;EACA,YAAA;EAKA,aAAA;EAEA,aAAA;EACA,kBAAA;E7BumHH;A6B9lHD;;;EV8BE,cAAA;EACA,oBAAA;EACA,iBAAA;EACA,wBAAA;EACA,oBAAA;EnBqkHD;AmBnkHC;;;EACE,cAAA;EACA,mBAAA;EnBukHH;AmBpkHC;;;;;;EAEE,cAAA;EnB0kHH;A6BhnHD;;;EVyBE,cAAA;EACA,mBAAA;EACA,iBAAA;EACA,kBAAA;EACA,oBAAA;EnB4lHD;AmB1lHC;;;EACE,cAAA;EACA,mBAAA;EnB8lHH;AmB3lHC;;;;;;EAEE,cAAA;EnBimHH;A6B9nHD;;;EAGE,qBAAA;E7BgoHD;A6B9nHC;;;EACE,kBAAA;E7BkoHH;A6B9nHD;;EAEE,WAAA;EACA,qBAAA;EACA,wBAAA;E7BgoHD;A6B3nHD;EACE,mBAAA;EACA,iBAAA;EACA,qBAAA;EACA,gBAAA;EACA,gBAAA;EACA,oBAAA;EACA,2BAAA;EACA,2BAAA;EACA,oBAAA;E7B6nHD;A6B1nHC;EACE,mBAAA;EACA,iBAAA;EACA,oBAAA;E7B4nHH;A6B1nHC;EACE,oBAAA;EACA,iBAAA;EACA,oBAAA;E7B4nHH;A6BhpHD;;EA0BI,eAAA;E7B0nHH;A6BrnHD;;;;;;;EDhGE,+BAAA;EACG,4BAAA;E5B8tHJ;A6BtnHD;EACE,iBAAA;E7BwnHD;A6BtnHD;;;;;;;EDpGE,8BAAA;EACG,2BAAA;E5BmuHJ;A6BvnHD;EACE,gBAAA;E7BynHD;A6BpnHD;EACE,oBAAA;EAGA,cAAA;EACA,qBAAA;E7BonHD;A6BznHD;EAUI,oBAAA;E7BknHH;A6B5nHD;EAYM,mBAAA;E7BmnHL;A6BhnHG;;;EAGE,YAAA;E7BknHL;A6B7mHC;;EAGI,oBAAA;E7B8mHL;A6B3mHC;;EAGI,mBAAA;E7B4mHL;A8BtwHD;EACE,kBAAA;EACA,iBAAA;EACA,kBAAA;E9BwwHD;A8B3wHD;EAOI,oBAAA;EACA,gBAAA;E9BuwHH;A8B/wHD;EAWM,oBAAA;EACA,gBAAA;EACA,oBAAA;E9BuwHL;A8BtwHK;;EAEE,uBAAA;EACA,2BAAA;E9BwwHP;A8BnwHG;EACE,gBAAA;E9BqwHL;A8BnwHK;;EAEE,gBAAA;EACA,uBAAA;EACA,+BAAA;EACA,qBAAA;E9BqwHP;A8B9vHG;;;EAGE,2BAAA;EACA,uBAAA;E9BgwHL;A8BzyHD;ELHE,aAAA;EACA,eAAA;EACA,kBAAA;EACA,2BAAA;EzB+yHD;A8B/yHD;EA0DI,iBAAA;E9BwvHH;A8B/uHD;EACE,kCAAA;E9BivHD;A8BlvHD;EAGI,aAAA;EAEA,qBAAA;E9BivHH;A8BtvHD;EASM,mBAAA;EACA,yBAAA;EACA,+BAAA;EACA,4BAAA;E9BgvHL;A8B/uHK;EACE,uCAAA;E9BivHP;A8B3uHK;;;EAGE,gBAAA;EACA,2BAAA;EACA,2BAAA;EACA,kCAAA;EACA,iBAAA;E9B6uHP;A8BxuHC;EAqDA,aAAA;EA8BA,kBAAA;E9BypHD;A8B5uHC;EAwDE,aAAA;E9BurHH;A8B/uHC;EA0DI,oBAAA;EACA,oBAAA;E9BwrHL;A8BnvHC;EAgEE,WAAA;EACA,YAAA;E9BsrHH;A8B1qHD;EAAA;IAPM,qBAAA;IACA,WAAA;I9BqrHH;E8B/qHH;IAJQ,kBAAA;I9BsrHL;EACF;A8BhwHC;EAuFE,iBAAA;EACA,oBAAA;E9B4qHH;A8BpwHC;;;EA8FE,2BAAA;E9B2qHH;A8B7pHD;EAAA;IATM,kCAAA;IACA,4BAAA;I9B0qHH;E8BlqHH;;;IAHM,8BAAA;I9B0qHH;EACF;A8B3wHD;EAEI,aAAA;E9B4wHH;A8B9wHD;EAMM,oBAAA;E9B2wHL;A8BjxHD;EASM,kBAAA;E9B2wHL;A8BtwHK;;;EAGE,gBAAA;EACA,2BAAA;E9BwwHP;A8BhwHD;EAEI,aAAA;E9BiwHH;A8BnwHD;EAIM,iBAAA;EACA,gBAAA;E9BkwHL;A8BtvHD;EACE,aAAA;E9BwvHD;A8BzvHD;EAII,aAAA;E9BwvHH;A8B5vHD;EAMM,oBAAA;EACA,oBAAA;E9ByvHL;A8BhwHD;EAYI,WAAA;EACA,YAAA;E9BuvHH;A8B3uHD;EAAA;IAPM,qBAAA;IACA,WAAA;I9BsvHH;E8BhvHH;IAJQ,kBAAA;I9BuvHL;EACF;A8B/uHD;EACE,kBAAA;E9BivHD;A8BlvHD;EAKI,iBAAA;EACA,oBAAA;E9BgvHH;A8BtvHD;;;EAYI,2BAAA;E9B+uHH;A8BjuHD;EAAA;IATM,kCAAA;IACA,4BAAA;I9B8uHH;E8BtuHH;;;IAHM,8BAAA;I9B8uHH;EACF;A8BruHD;EAEI,eAAA;E9BsuHH;A8BxuHD;EAKI,gBAAA;E9BsuHH;A8B7tHD;EAEE,kBAAA;EF3OA,4BAAA;EACC,2BAAA;E5B08HF;A+Bp8HD;EACE,oBAAA;EACA,kBAAA;EACA,qBAAA;EACA,+BAAA;E/Bs8HD;A+B97HD;EAAA;IAFI,oBAAA;I/Bo8HD;EACF;A+Br7HD;EAAA;IAFI,aAAA;I/B27HD;EACF;A+B76HD;EACE,qBAAA;EACA,qBAAA;EACA,oBAAA;EACA,mCAAA;EACA,4DAAA;UAAA,oDAAA;EAEA,mCAAA;E/B86HD;A+B56HC;EACE,kBAAA;E/B86HH;A+Bl5HD;EAAA;IAxBI,aAAA;IACA,eAAA;IACA,0BAAA;YAAA,kBAAA;I/B86HD;E+B56HC;IACE,2BAAA;IACA,yBAAA;IACA,mBAAA;IACA,8BAAA;I/B86HH;E+B36HC;IACE,qBAAA;I/B66HH;E+Bx6HC;;;IAGE,iBAAA;IACA,kBAAA;I/B06HH;EACF;A+Bt6HD;;EAGI,mBAAA;E/Bu6HH;A+Bl6HC;EAAA;;IAFI,mBAAA;I/By6HH;EACF;A+Bh6HD;;;;EAII,qBAAA;EACA,oBAAA;E/Bk6HH;A+B55HC;EAAA;;;;IAHI,iBAAA;IACA,gBAAA;I/Bs6HH;EACF;A+B15HD;EACE,eAAA;EACA,uBAAA;E/B45HD;A+Bv5HD;EAAA;IAFI,kBAAA;I/B65HD;EACF;A+Bz5HD;;EAEE,iBAAA;EACA,UAAA;EACA,SAAA;EACA,eAAA;E/B25HD;A+Br5HD;EAAA;;IAFI,kBAAA;I/B45HD;EACF;A+B15HD;EACE,QAAA;EACA,uBAAA;E/B45HD;A+B15HD;EACE,WAAA;EACA,kBAAA;EACA,uBAAA;E/B45HD;A+Bt5HD;EACE,aAAA;EACA,oBAAA;EACA,iBAAA;EACA,mBAAA;EACA,cAAA;E/Bw5HD;A+Bt5HC;;EAEE,uBAAA;E/Bw5HH;A+Bj6HD;EAaI,gBAAA;E/Bu5HH;A+B94HD;EALI;;IAEE,oBAAA;I/Bs5HH;EACF;A+B54HD;EACE,oBAAA;EACA,cAAA;EACA,oBAAA;EACA,mBAAA;EC9LA,iBAAA;EACA,oBAAA;ED+LA,+BAAA;EACA,wBAAA;EACA,+BAAA;EACA,oBAAA;E/B+4HD;A+B34HC;EACE,YAAA;E/B64HH;A+B35HD;EAmBI,gBAAA;EACA,aAAA;EACA,aAAA;EACA,oBAAA;E/B24HH;A+Bj6HD;EAyBI,iBAAA;E/B24HH;A+Br4HD;EAAA;IAFI,eAAA;I/B24HD;EACF;A+Bl4HD;EACE,qBAAA;E/Bo4HD;A+Br4HD;EAII,mBAAA;EACA,sBAAA;EACA,mBAAA;E/Bo4HH;A+Bx2HC;EAAA;IAtBI,kBAAA;IACA,aAAA;IACA,aAAA;IACA,eAAA;IACA,+BAAA;IACA,WAAA;IACA,0BAAA;YAAA,kBAAA;I/Bk4HH;E+Bl3HD;;IAbM,4BAAA;I/Bm4HL;E+Bt3HD;IAVM,mBAAA;I/Bm4HL;E+Bl4HK;;IAEE,wBAAA;I/Bo4HP;EACF;A+Bl3HD;EAAA;IAXI,aAAA;IACA,WAAA;I/Bi4HD;E+Bv3HH;IAPM,aAAA;I/Bi4HH;E+B13HH;IALQ,mBAAA;IACA,sBAAA;I/Bk4HL;EACF;A+Bv3HD;EACE,oBAAA;EACA,qBAAA;EACA,oBAAA;EACA,mCAAA;EACA,sCAAA;E1B9NA,8FAAA;EACQ,sFAAA;E2B/DR,iBAAA;EACA,oBAAA;EhCwpID;AkBvqHD;EAAA;IA9DM,uBAAA;IACA,kBAAA;IACA,wBAAA;IlByuHH;EkB7qHH;IAvDM,uBAAA;IACA,aAAA;IACA,wBAAA;IlBuuHH;EkBlrHH;IAhDM,uBAAA;IlBquHH;EkBrrHH;IA5CM,uBAAA;IACA,wBAAA;IlBouHH;EkBzrHH;;;IAtCQ,aAAA;IlBouHL;EkB9rHH;IAhCM,aAAA;IlBiuHH;EkBjsHH;IA5BM,kBAAA;IACA,wBAAA;IlBguHH;EkBrsHH;;IApBM,uBAAA;IACA,eAAA;IACA,kBAAA;IACA,wBAAA;IlB6tHH;EkB5sHH;;IAdQ,iBAAA;IlB8tHL;EkBhtHH;;IATM,oBAAA;IACA,gBAAA;IlB6tHH;EkBrtHH;IAHM,QAAA;IlB2tHH;EACF;A+Bh6HC;EAAA;IANI,oBAAA;I/B06HH;E+Bx6HG;IACE,kBAAA;I/B06HL;EACF;A+Bz5HD;EAAA;IARI,aAAA;IACA,WAAA;IACA,gBAAA;IACA,iBAAA;IACA,gBAAA;IACA,mBAAA;I1BzPF,0BAAA;IACQ,kBAAA;IL+pIP;EACF;A+B/5HD;EACE,eAAA;EHpUA,4BAAA;EACC,2BAAA;E5BsuIF;A+B/5HD;EACE,kBAAA;EHzUA,8BAAA;EACC,6BAAA;EAOD,+BAAA;EACC,8BAAA;E5BquIF;A+B35HD;EChVE,iBAAA;EACA,oBAAA;EhC8uID;A+B55HC;ECnVA,kBAAA;EACA,qBAAA;EhCkvID;A+B75HC;ECtVA,kBAAA;EACA,qBAAA;EhCsvID;A+Bv5HD;EChWE,kBAAA;EACA,qBAAA;EhC0vID;A+Bn5HD;EAAA;IAJI,aAAA;IACA,mBAAA;IACA,oBAAA;I/B25HD;EACF;A+B93HD;EAhBE;IExWA,wBAAA;IjC0vIC;E+Bj5HD;IE5WA,yBAAA;IF8WE,qBAAA;I/Bm5HD;E+Br5HD;IAKI,iBAAA;I/Bm5HH;EACF;A+B14HD;EACE,2BAAA;EACA,uBAAA;E/B44HD;A+B94HD;EAKI,gBAAA;E/B44HH;A+B34HG;;EAEE,gBAAA;EACA,+BAAA;E/B64HL;A+Bt5HD;EAcI,gBAAA;E/B24HH;A+Bz5HD;EAmBM,gBAAA;E/By4HL;A+Bv4HK;;EAEE,gBAAA;EACA,+BAAA;E/By4HP;A+Br4HK;;;EAGE,gBAAA;EACA,2BAAA;E/Bu4HP;A+Bn4HK;;;EAGE,gBAAA;EACA,+BAAA;E/Bq4HP;A+B76HD;EA8CI,uBAAA;E/Bk4HH;A+Bj4HG;;EAEE,2BAAA;E/Bm4HL;A+Bp7HD;EAoDM,2BAAA;E/Bm4HL;A+Bv7HD;;EA0DI,uBAAA;E/Bi4HH;A+B13HK;;;EAGE,2BAAA;EACA,gBAAA;E/B43HP;A+B31HC;EAAA;IAzBQ,gBAAA;I/Bw3HP;E+Bv3HO;;IAEE,gBAAA;IACA,+BAAA;I/By3HT;E+Br3HO;;;IAGE,gBAAA;IACA,2BAAA;I/Bu3HT;E+Bn3HO;;;IAGE,gBAAA;IACA,+BAAA;I/Bq3HT;EACF;A+Bv9HD;EA8GI,gBAAA;E/B42HH;A+B32HG;EACE,gBAAA;E/B62HL;A+B79HD;EAqHI,gBAAA;E/B22HH;A+B12HG;;EAEE,gBAAA;E/B42HL;A+Bx2HK;;;;EAEE,gBAAA;E/B42HP;A+Bp2HD;EACE,2BAAA;EACA,uBAAA;E/Bs2HD;A+Bx2HD;EAKI,gBAAA;E/Bs2HH;A+Br2HG;;EAEE,gBAAA;EACA,+BAAA;E/Bu2HL;A+Bh3HD;EAcI,gBAAA;E/Bq2HH;A+Bn3HD;EAmBM,gBAAA;E/Bm2HL;A+Bj2HK;;EAEE,gBAAA;EACA,+BAAA;E/Bm2HP;A+B/1HK;;;EAGE,gBAAA;EACA,2BAAA;E/Bi2HP;A+B71HK;;;EAGE,gBAAA;EACA,+BAAA;E/B+1HP;A+Bv4HD;EA+CI,uBAAA;E/B21HH;A+B11HG;;EAEE,2BAAA;E/B41HL;A+B94HD;EAqDM,2BAAA;E/B41HL;A+Bj5HD;;EA2DI,uBAAA;E/B01HH;A+Bp1HK;;;EAGE,2BAAA;EACA,gBAAA;E/Bs1HP;A+B/yHC;EAAA;IA/BQ,uBAAA;I/Bk1HP;E+BnzHD;IA5BQ,2BAAA;I/Bk1HP;E+BtzHD;IAzBQ,gBAAA;I/Bk1HP;E+Bj1HO;;IAEE,gBAAA;IACA,+BAAA;I/Bm1HT;E+B/0HO;;;IAGE,gBAAA;IACA,2BAAA;I/Bi1HT;E+B70HO;;;IAGE,gBAAA;IACA,+BAAA;I/B+0HT;EACF;A+Bv7HD;EA+GI,gBAAA;E/B20HH;A+B10HG;EACE,gBAAA;E/B40HL;A+B77HD;EAsHI,gBAAA;E/B00HH;A+Bz0HG;;EAEE,gBAAA;E/B20HL;A+Bv0HK;;;;EAEE,gBAAA;E/B20HP;AkCr9ID;EACE,mBAAA;EACA,qBAAA;EACA,kBAAA;EACA,2BAAA;EACA,oBAAA;ElCu9ID;AkC59ID;EAQI,uBAAA;ElCu9IH;AkC/9ID;EAWM,mBAAA;EACA,gBAAA;EACA,gBAAA;ElCu9IL;AkCp+ID;EAkBI,gBAAA;ElCq9IH;AmCz+ID;EACE,uBAAA;EACA,iBAAA;EACA,gBAAA;EACA,oBAAA;EnC2+ID;AmC/+ID;EAOI,iBAAA;EnC2+IH;AmCl/ID;;EAUM,oBAAA;EACA,aAAA;EACA,mBAAA;EACA,yBAAA;EACA,uBAAA;EACA,gBAAA;EACA,2BAAA;EACA,2BAAA;EACA,mBAAA;EnC4+IL;AmC1+IG;;EAGI,gBAAA;EPXN,gCAAA;EACG,6BAAA;E5Bu/IJ;AmCz+IG;;EPvBF,iCAAA;EACG,8BAAA;E5BogJJ;AmCp+IG;;;;EAEE,gBAAA;EACA,2BAAA;EACA,uBAAA;EnCw+IL;AmCl+IG;;;;;;EAGE,YAAA;EACA,gBAAA;EACA,2BAAA;EACA,uBAAA;EACA,iBAAA;EnCu+IL;AmC7hJD;;;;;;EAiEM,gBAAA;EACA,2BAAA;EACA,uBAAA;EACA,qBAAA;EnCo+IL;AmC39ID;;EC1EM,oBAAA;EACA,iBAAA;EpCyiJL;AoCviJG;;ERMF,gCAAA;EACG,6BAAA;E5BqiJJ;AoCtiJG;;ERRF,iCAAA;EACG,8BAAA;E5BkjJJ;AmCr+ID;;EC/EM,mBAAA;EACA,iBAAA;EpCwjJL;AoCtjJG;;ERMF,gCAAA;EACG,6BAAA;E5BojJJ;AoCrjJG;;ERRF,iCAAA;EACG,8BAAA;E5BikJJ;AqCpkJD;EACE,iBAAA;EACA,gBAAA;EACA,kBAAA;EACA,oBAAA;ErCskJD;AqC1kJD;EAOI,iBAAA;ErCskJH;AqC7kJD;;EAUM,uBAAA;EACA,mBAAA;EACA,2BAAA;EACA,2BAAA;EACA,qBAAA;ErCukJL;AqCrlJD;;EAmBM,uBAAA;EACA,2BAAA;ErCskJL;AqC1lJD;;EA2BM,cAAA;ErCmkJL;AqC9lJD;;EAkCM,aAAA;ErCgkJL;AqClmJD;;;;EA2CM,gBAAA;EACA,2BAAA;EACA,qBAAA;ErC6jJL;AsC3mJD;EACE,iBAAA;EACA,yBAAA;EACA,gBAAA;EACA,mBAAA;EACA,gBAAA;EACA,gBAAA;EACA,oBAAA;EACA,qBAAA;EACA,0BAAA;EACA,sBAAA;EtC6mJD;AsCzmJG;;EAEE,gBAAA;EACA,uBAAA;EACA,iBAAA;EtC2mJL;AsCtmJC;EACE,eAAA;EtCwmJH;AsCpmJC;EACE,oBAAA;EACA,WAAA;EtCsmJH;AsC/lJD;ECtCE,2BAAA;EvCwoJD;AuCroJG;;EAEE,2BAAA;EvCuoJL;AsClmJD;EC1CE,2BAAA;EvC+oJD;AuC5oJG;;EAEE,2BAAA;EvC8oJL;AsCrmJD;EC9CE,2BAAA;EvCspJD;AuCnpJG;;EAEE,2BAAA;EvCqpJL;AsCxmJD;EClDE,2BAAA;EvC6pJD;AuC1pJG;;EAEE,2BAAA;EvC4pJL;AsC3mJD;ECtDE,2BAAA;EvCoqJD;AuCjqJG;;EAEE,2BAAA;EvCmqJL;AsC9mJD;EC1DE,2BAAA;EvC2qJD;AuCxqJG;;EAEE,2BAAA;EvC0qJL;AwC5qJD;EACE,uBAAA;EACA,iBAAA;EACA,kBAAA;EACA,iBAAA;EACA,mBAAA;EACA,gBAAA;EACA,gBAAA;EACA,0BAAA;EACA,qBAAA;EACA,oBAAA;EACA,2BAAA;EACA,qBAAA;ExC8qJD;AwC3qJC;EACE,eAAA;ExC6qJH;AwCzqJC;EACE,oBAAA;EACA,WAAA;ExC2qJH;AwCxqJC;;EAEE,QAAA;EACA,kBAAA;ExC0qJH;AwCrqJG;;EAEE,gBAAA;EACA,uBAAA;EACA,iBAAA;ExCuqJL;AwClqJC;;EAEE,gBAAA;EACA,2BAAA;ExCoqJH;AwCjqJC;EACE,cAAA;ExCmqJH;AwChqJC;EACE,mBAAA;ExCkqJH;AwC/pJC;EACE,kBAAA;ExCiqJH;AyC3tJD;EACE,oBAAA;EACA,qBAAA;EACA,gBAAA;EACA,2BAAA;EzC6tJD;AyCjuJD;;EAQI,gBAAA;EzC6tJH;AyCruJD;EAYI,qBAAA;EACA,iBAAA;EACA,kBAAA;EzC4tJH;AyC1uJD;EAkBI,2BAAA;EzC2tJH;AyCxtJC;;EAEE,oBAAA;EzC0tJH;AyCjvJD;EA2BI,iBAAA;EzCytJH;AyCxsJD;EAAA;IAbI,iBAAA;IzCytJD;EyCvtJC;;IAEE,oBAAA;IACA,qBAAA;IzCytJH;EyCjtJH;;IAHM,iBAAA;IzCwtJH;EACF;A0CjwJD;EACE,gBAAA;EACA,cAAA;EACA,qBAAA;EACA,yBAAA;EACA,2BAAA;EACA,2BAAA;EACA,oBAAA;ErCiLA,6CAAA;EACK,wCAAA;EACG,qCAAA;ELmlJT;A0C7wJD;;EAaI,mBAAA;EACA,oBAAA;E1CowJH;A0ChwJC;;;EAGE,uBAAA;E1CkwJH;A0CvxJD;EA0BI,cAAA;EACA,gBAAA;E1CgwJH;A2CzxJD;EACE,eAAA;EACA,qBAAA;EACA,+BAAA;EACA,oBAAA;E3C2xJD;A2C/xJD;EAQI,eAAA;EAEA,gBAAA;E3CyxJH;A2CnyJD;EAeI,mBAAA;E3CuxJH;A2CtyJD;;EAqBI,kBAAA;E3CqxJH;A2C1yJD;EAyBI,iBAAA;E3CoxJH;A2C5wJD;;EAEE,qBAAA;E3C8wJD;A2ChxJD;;EAMI,oBAAA;EACA,WAAA;EACA,cAAA;EACA,gBAAA;E3C8wJH;A2CtwJD;ECvDE,2BAAA;EACA,uBAAA;EACA,gBAAA;E5Cg0JD;A2C3wJD;EClDI,2BAAA;E5Cg0JH;A2C9wJD;EC/CI,gBAAA;E5Cg0JH;A2C7wJD;EC3DE,2BAAA;EACA,uBAAA;EACA,gBAAA;E5C20JD;A2ClxJD;ECtDI,2BAAA;E5C20JH;A2CrxJD;ECnDI,gBAAA;E5C20JH;A2CpxJD;EC/DE,2BAAA;EACA,uBAAA;EACA,gBAAA;E5Cs1JD;A2CzxJD;EC1DI,2BAAA;E5Cs1JH;A2C5xJD;ECvDI,gBAAA;E5Cs1JH;A2C3xJD;ECnEE,2BAAA;EACA,uBAAA;EACA,gBAAA;E5Ci2JD;A2ChyJD;EC9DI,2BAAA;E5Ci2JH;A2CnyJD;EC3DI,gBAAA;E5Ci2JH;A6Cn2JD;EACE;IAAQ,6BAAA;I7Cs2JP;E6Cr2JD;IAAQ,0BAAA;I7Cw2JP;EACF;A6Cr2JD;EACE;IAAQ,6BAAA;I7Cw2JP;E6Cv2JD;IAAQ,0BAAA;I7C02JP;EACF;A6C72JD;EACE;IAAQ,6BAAA;I7Cw2JP;E6Cv2JD;IAAQ,0BAAA;I7C02JP;EACF;A6Cn2JD;EACE,kBAAA;EACA,cAAA;EACA,qBAAA;EACA,2BAAA;EACA,oBAAA;ExCsCA,wDAAA;EACQ,gDAAA;ELg0JT;A6Cl2JD;EACE,aAAA;EACA,WAAA;EACA,cAAA;EACA,iBAAA;EACA,mBAAA;EACA,gBAAA;EACA,oBAAA;EACA,2BAAA;ExCyBA,wDAAA;EACQ,gDAAA;EAyHR,qCAAA;EACK,gCAAA;EACG,6BAAA;ELotJT;A6C/1JD;;ECCI,+MAAA;EACA,0MAAA;EACA,uMAAA;EDAF,oCAAA;UAAA,4BAAA;E7Cm2JD;A6C51JD;;ExC5CE,4DAAA;EACK,uDAAA;EACG,oDAAA;EL44JT;A6Cz1JD;EErEE,2BAAA;E/Ci6JD;A+C95JC;EDgDE,+MAAA;EACA,0MAAA;EACA,uMAAA;E9Ci3JH;A6C71JD;EEzEE,2BAAA;E/Cy6JD;A+Ct6JC;EDgDE,+MAAA;EACA,0MAAA;EACA,uMAAA;E9Cy3JH;A6Cj2JD;EE7EE,2BAAA;E/Ci7JD;A+C96JC;EDgDE,+MAAA;EACA,0MAAA;EACA,uMAAA;E9Ci4JH;A6Cr2JD;EEjFE,2BAAA;E/Cy7JD;A+Ct7JC;EDgDE,+MAAA;EACA,0MAAA;EACA,uMAAA;E9Cy4JH;AgDj8JD;EAEE,kBAAA;EhDk8JD;AgDh8JC;EACE,eAAA;EhDk8JH;AgD97JD;;EAEE,SAAA;EACA,kBAAA;EhDg8JD;AgD77JD;EACE,gBAAA;EhD+7JD;AgD57JD;EACE,gBAAA;EhD87JD;AgD37JD;;EAEE,oBAAA;EhD67JD;AgD17JD;;EAEE,qBAAA;EhD47JD;AgDz7JD;;;EAGE,qBAAA;EACA,qBAAA;EhD27JD;AgDx7JD;EACE,wBAAA;EhD07JD;AgDv7JD;EACE,wBAAA;EhDy7JD;AgDr7JD;EACE,eAAA;EACA,oBAAA;EhDu7JD;AgDj7JD;EACE,iBAAA;EACA,kBAAA;EhDm7JD;AiDr+JD;EAEE,qBAAA;EACA,iBAAA;EjDs+JD;AiD99JD;EACE,oBAAA;EACA,gBAAA;EACA,oBAAA;EAEA,qBAAA;EACA,2BAAA;EACA,2BAAA;EjD+9JD;AiD59JC;ErB3BA,8BAAA;EACC,6BAAA;E5B0/JF;AiD79JC;EACE,kBAAA;ErBvBF,iCAAA;EACC,gCAAA;E5Bu/JF;AiDt9JD;EACE,gBAAA;EjDw9JD;AiDz9JD;EAII,gBAAA;EjDw9JH;AiDp9JC;;EAEE,uBAAA;EACA,gBAAA;EACA,2BAAA;EjDs9JH;AiDh9JC;;;EAGE,2BAAA;EACA,gBAAA;EACA,qBAAA;EjDk9JH;AiDv9JC;;;EASI,gBAAA;EjDm9JL;AiD59JC;;;EAYI,gBAAA;EjDq9JL;AiDh9JC;;;EAGE,YAAA;EACA,gBAAA;EACA,2BAAA;EACA,uBAAA;EjDk9JH;AiDx9JC;;;;;;;;;EAYI,gBAAA;EjDu9JL;AiDn+JC;;;EAeI,gBAAA;EjDy9JL;AkDrjKC;EACE,gBAAA;EACA,2BAAA;ElDujKH;AkDrjKG;EACE,gBAAA;ElDujKL;AkDxjKG;EAII,gBAAA;ElDujKP;AkDpjKK;;EAEE,gBAAA;EACA,2BAAA;ElDsjKP;AkDpjKK;;;EAGE,aAAA;EACA,2BAAA;EACA,uBAAA;ElDsjKP;AkD3kKC;EACE,gBAAA;EACA,2BAAA;ElD6kKH;AkD3kKG;EACE,gBAAA;ElD6kKL;AkD9kKG;EAII,gBAAA;ElD6kKP;AkD1kKK;;EAEE,gBAAA;EACA,2BAAA;ElD4kKP;AkD1kKK;;;EAGE,aAAA;EACA,2BAAA;EACA,uBAAA;ElD4kKP;AkDjmKC;EACE,gBAAA;EACA,2BAAA;ElDmmKH;AkDjmKG;EACE,gBAAA;ElDmmKL;AkDpmKG;EAII,gBAAA;ElDmmKP;AkDhmKK;;EAEE,gBAAA;EACA,2BAAA;ElDkmKP;AkDhmKK;;;EAGE,aAAA;EACA,2BAAA;EACA,uBAAA;ElDkmKP;AkDvnKC;EACE,gBAAA;EACA,2BAAA;ElDynKH;AkDvnKG;EACE,gBAAA;ElDynKL;AkD1nKG;EAII,gBAAA;ElDynKP;AkDtnKK;;EAEE,gBAAA;EACA,2BAAA;ElDwnKP;AkDtnKK;;;EAGE,aAAA;EACA,2BAAA;EACA,uBAAA;ElDwnKP;AiD5hKD;EACE,eAAA;EACA,oBAAA;EjD8hKD;AiD5hKD;EACE,kBAAA;EACA,kBAAA;EjD8hKD;AmDlpKD;EACE,qBAAA;EACA,2BAAA;EACA,+BAAA;EACA,oBAAA;E9C0DA,mDAAA;EACQ,2CAAA;EL2lKT;AmDjpKD;EACE,eAAA;EnDmpKD;AmD9oKD;EACE,oBAAA;EACA,sCAAA;EvBpBA,8BAAA;EACC,6BAAA;E5BqqKF;AmDppKD;EAMI,gBAAA;EnDipKH;AmD5oKD;EACE,eAAA;EACA,kBAAA;EACA,iBAAA;EACA,gBAAA;EnD8oKD;AmDlpKD;;;;;EAWI,gBAAA;EnD8oKH;AmDzoKD;EACE,oBAAA;EACA,2BAAA;EACA,+BAAA;EvBxCA,iCAAA;EACC,gCAAA;E5BorKF;AmDnoKD;;EAGI,kBAAA;EnDooKH;AmDvoKD;;EAMM,qBAAA;EACA,kBAAA;EnDqoKL;AmDjoKG;;EAEI,eAAA;EvBvEN,8BAAA;EACC,6BAAA;E5B2sKF;AmDhoKG;;EAEI,kBAAA;EvBtEN,iCAAA;EACC,gCAAA;E5BysKF;AmD7nKD;EAEI,qBAAA;EnD8nKH;AmD3nKD;EACE,qBAAA;EnD6nKD;AmDrnKD;;;EAII,kBAAA;EnDsnKH;AmD1nKD;;;EAOM,oBAAA;EACA,qBAAA;EnDwnKL;AmDhoKD;;EvBnGE,8BAAA;EACC,6BAAA;E5BuuKF;AmDroKD;;;;EAmBQ,6BAAA;EACA,8BAAA;EnDwnKP;AmD5oKD;;;;;;;;EAwBU,6BAAA;EnD8nKT;AmDtpKD;;;;;;;;EA4BU,8BAAA;EnDooKT;AmDhqKD;;EvB3FE,iCAAA;EACC,gCAAA;E5B+vKF;AmDrqKD;;;;EAyCQ,gCAAA;EACA,iCAAA;EnDkoKP;AmD5qKD;;;;;;;;EA8CU,gCAAA;EnDwoKT;AmDtrKD;;;;;;;;EAkDU,iCAAA;EnD8oKT;AmDhsKD;;;;EA2DI,+BAAA;EnD2oKH;AmDtsKD;;EA+DI,eAAA;EnD2oKH;AmD1sKD;;EAmEI,WAAA;EnD2oKH;AmD9sKD;;;;;;;;;;;;EA0EU,gBAAA;EnDkpKT;AmD5tKD;;;;;;;;;;;;EA8EU,iBAAA;EnD4pKT;AmD1uKD;;;;;;;;EAuFU,kBAAA;EnD6pKT;AmDpvKD;;;;;;;;EAgGU,kBAAA;EnD8pKT;AmD9vKD;EAsGI,WAAA;EACA,kBAAA;EnD2pKH;AmDjpKD;EACE,qBAAA;EnDmpKD;AmDppKD;EAKI,kBAAA;EACA,oBAAA;EnDkpKH;AmDxpKD;EASM,iBAAA;EnDkpKL;AmD3pKD;EAcI,kBAAA;EnDgpKH;AmD9pKD;;EAkBM,+BAAA;EnDgpKL;AmDlqKD;EAuBI,eAAA;EnD8oKH;AmDrqKD;EAyBM,kCAAA;EnD+oKL;AmDxoKD;ECpPE,uBAAA;EpD+3KD;AoD73KC;EACE,gBAAA;EACA,2BAAA;EACA,uBAAA;EpD+3KH;AoDl4KC;EAMI,2BAAA;EpD+3KL;AoDr4KC;EASI,gBAAA;EACA,2BAAA;EpD+3KL;AoD53KC;EAEI,8BAAA;EpD63KL;AmDvpKD;ECvPE,uBAAA;EpDi5KD;AoD/4KC;EACE,gBAAA;EACA,2BAAA;EACA,uBAAA;EpDi5KH;AoDp5KC;EAMI,2BAAA;EpDi5KL;AoDv5KC;EASI,gBAAA;EACA,2BAAA;EpDi5KL;AoD94KC;EAEI,8BAAA;EpD+4KL;AmDtqKD;EC1PE,uBAAA;EpDm6KD;AoDj6KC;EACE,gBAAA;EACA,2BAAA;EACA,uBAAA;EpDm6KH;AoDt6KC;EAMI,2BAAA;EpDm6KL;AoDz6KC;EASI,gBAAA;EACA,2BAAA;EpDm6KL;AoDh6KC;EAEI,8BAAA;EpDi6KL;AmDrrKD;EC7PE,uBAAA;EpDq7KD;AoDn7KC;EACE,gBAAA;EACA,2BAAA;EACA,uBAAA;EpDq7KH;AoDx7KC;EAMI,2BAAA;EpDq7KL;AoD37KC;EASI,gBAAA;EACA,2BAAA;EpDq7KL;AoDl7KC;EAEI,8BAAA;EpDm7KL;AmDpsKD;EChQE,uBAAA;EpDu8KD;AoDr8KC;EACE,gBAAA;EACA,2BAAA;EACA,uBAAA;EpDu8KH;AoD18KC;EAMI,2BAAA;EpDu8KL;AoD78KC;EASI,gBAAA;EACA,2BAAA;EpDu8KL;AoDp8KC;EAEI,8BAAA;EpDq8KL;AmDntKD;ECnQE,uBAAA;EpDy9KD;AoDv9KC;EACE,gBAAA;EACA,2BAAA;EACA,uBAAA;EpDy9KH;AoD59KC;EAMI,2BAAA;EpDy9KL;AoD/9KC;EASI,gBAAA;EACA,2BAAA;EpDy9KL;AoDt9KC;EAEI,8BAAA;EpDu9KL;AqDv+KD;EACE,oBAAA;EACA,gBAAA;EACA,WAAA;EACA,YAAA;EACA,kBAAA;ErDy+KD;AqD9+KD;;;;;EAYI,oBAAA;EACA,QAAA;EACA,SAAA;EACA,WAAA;EACA,cAAA;EACA,aAAA;EACA,WAAA;ErDy+KH;AqDp+KD;EACE,wBAAA;ErDs+KD;AqDl+KD;EACE,qBAAA;ErDo+KD;AsD//KD;EACE,kBAAA;EACA,eAAA;EACA,qBAAA;EACA,2BAAA;EACA,2BAAA;EACA,oBAAA;EjDwDA,yDAAA;EACQ,iDAAA;EL08KT;AsDzgLD;EASI,oBAAA;EACA,mCAAA;EtDmgLH;AsD9/KD;EACE,eAAA;EACA,oBAAA;EtDggLD;AsD9/KD;EACE,cAAA;EACA,oBAAA;EtDggLD;AuDthLD;EACE,cAAA;EACA,iBAAA;EACA,mBAAA;EACA,gBAAA;EACA,gBAAA;EACA,8BAAA;EjCRA,cAAA;EAGA,2BAAA;EtB+hLD;AuDvhLC;;EAEE,gBAAA;EACA,uBAAA;EACA,iBAAA;EjCfF,cAAA;EAGA,2BAAA;EtBuiLD;AuDnhLC;EACE,YAAA;EACA,iBAAA;EACA,yBAAA;EACA,WAAA;EACA,0BAAA;EvDqhLH;AwD1iLD;EACE,kBAAA;ExD4iLD;AwDxiLD;EACE,eAAA;EACA,kBAAA;EACA,iBAAA;EACA,QAAA;EACA,UAAA;EACA,WAAA;EACA,SAAA;EACA,eAAA;EACA,mCAAA;EAIA,YAAA;ExDuiLD;AwDpiLC;EnD+GA,uCAAA;EACI,mCAAA;EACC,kCAAA;EACG,+BAAA;EAkER,qDAAA;EAEK,2CAAA;EACG,qCAAA;ELu3KT;AwD1iLC;EnD2GA,oCAAA;EACI,gCAAA;EACC,+BAAA;EACG,4BAAA;ELk8KT;AwD9iLD;EACE,oBAAA;EACA,kBAAA;ExDgjLD;AwD5iLD;EACE,oBAAA;EACA,aAAA;EACA,cAAA;ExD8iLD;AwD1iLD;EACE,oBAAA;EACA,2BAAA;EACA,2BAAA;EACA,sCAAA;EACA,oBAAA;EnDaA,kDAAA;EACQ,0CAAA;EmDZR,sCAAA;UAAA,8BAAA;EAEA,YAAA;ExD4iLD;AwDxiLD;EACE,iBAAA;EACA,QAAA;EACA,UAAA;EACA,WAAA;EACA,SAAA;EACA,eAAA;EACA,2BAAA;ExD0iLD;AwDxiLC;ElCrEA,YAAA;EAGA,0BAAA;EtB8mLD;AwD3iLC;ElCtEA,cAAA;EAGA,2BAAA;EtBknLD;AwD1iLD;EACE,eAAA;EACA,kCAAA;EACA,2BAAA;ExD4iLD;AwDziLD;EACE,kBAAA;ExD2iLD;AwDviLD;EACE,WAAA;EACA,yBAAA;ExDyiLD;AwDpiLD;EACE,oBAAA;EACA,eAAA;ExDsiLD;AwDliLD;EACE,eAAA;EACA,mBAAA;EACA,+BAAA;ExDoiLD;AwDviLD;EAQI,kBAAA;EACA,kBAAA;ExDkiLH;AwD3iLD;EAaI,mBAAA;ExDiiLH;AwD9iLD;EAiBI,gBAAA;ExDgiLH;AwD3hLD;EACE,oBAAA;EACA,cAAA;EACA,aAAA;EACA,cAAA;EACA,kBAAA;ExD6hLD;AwD3gLD;EAZE;IACE,cAAA;IACA,mBAAA;IxD0hLD;EwDxhLD;InDvEA,mDAAA;IACQ,2CAAA;ILkmLP;EwDvhLD;IAAY,cAAA;IxD0hLX;EACF;AwDrhLD;EAFE;IAAY,cAAA;IxD2hLX;EACF;AyD1qLD;EACE,oBAAA;EACA,eAAA;EACA,gBAAA;EAEA,6DAAA;EACA,iBAAA;EACA,qBAAA;EACA,kBAAA;EnCXA,YAAA;EAGA,0BAAA;EtBqrLD;AyD1qLC;EnCdA,cAAA;EAGA,2BAAA;EtByrLD;AyD7qLC;EAAW,kBAAA;EAAmB,gBAAA;EzDirL/B;AyDhrLC;EAAW,kBAAA;EAAmB,gBAAA;EzDorL/B;AyDnrLC;EAAW,iBAAA;EAAmB,gBAAA;EzDurL/B;AyDtrLC;EAAW,mBAAA;EAAmB,gBAAA;EzD0rL/B;AyDtrLD;EACE,kBAAA;EACA,kBAAA;EACA,gBAAA;EACA,oBAAA;EACA,uBAAA;EACA,2BAAA;EACA,oBAAA;EzDwrLD;AyDprLD;EACE,oBAAA;EACA,UAAA;EACA,WAAA;EACA,2BAAA;EACA,qBAAA;EzDsrLD;AyDlrLC;EACE,WAAA;EACA,WAAA;EACA,mBAAA;EACA,yBAAA;EACA,2BAAA;EzDorLH;AyDlrLC;EACE,WAAA;EACA,YAAA;EACA,qBAAA;EACA,yBAAA;EACA,2BAAA;EzDorLH;AyDlrLC;EACE,WAAA;EACA,WAAA;EACA,qBAAA;EACA,yBAAA;EACA,2BAAA;EzDorLH;AyDlrLC;EACE,UAAA;EACA,SAAA;EACA,kBAAA;EACA,6BAAA;EACA,6BAAA;EzDorLH;AyDlrLC;EACE,UAAA;EACA,UAAA;EACA,kBAAA;EACA,6BAAA;EACA,4BAAA;EzDorLH;AyDlrLC;EACE,QAAA;EACA,WAAA;EACA,mBAAA;EACA,yBAAA;EACA,8BAAA;EzDorLH;AyDlrLC;EACE,QAAA;EACA,YAAA;EACA,kBAAA;EACA,yBAAA;EACA,8BAAA;EzDorLH;AyDlrLC;EACE,QAAA;EACA,WAAA;EACA,kBAAA;EACA,yBAAA;EACA,8BAAA;EzDorLH;A0DlxLD;EACE,oBAAA;EACA,QAAA;EACA,SAAA;EACA,eAAA;EACA,eAAA;EACA,kBAAA;EACA,cAAA;EAEA,6DAAA;EACA,iBAAA;EACA,qBAAA;EACA,yBAAA;EACA,kBAAA;EACA,2BAAA;EACA,sCAAA;UAAA,8BAAA;EACA,2BAAA;EACA,sCAAA;EACA,oBAAA;ErD6CA,mDAAA;EACQ,2CAAA;EqD1CR,qBAAA;E1DkxLD;A0D/wLC;EAAY,mBAAA;E1DkxLb;A0DjxLC;EAAY,mBAAA;E1DoxLb;A0DnxLC;EAAY,kBAAA;E1DsxLb;A0DrxLC;EAAY,oBAAA;E1DwxLb;A0DrxLD;EACE,WAAA;EACA,mBAAA;EACA,iBAAA;EACA,2BAAA;EACA,kCAAA;EACA,4BAAA;E1DuxLD;A0DpxLD;EACE,mBAAA;E1DsxLD;A0D9wLC;;EAEE,oBAAA;EACA,gBAAA;EACA,UAAA;EACA,WAAA;EACA,2BAAA;EACA,qBAAA;E1DgxLH;A0D7wLD;EACE,oBAAA;E1D+wLD;A0D7wLD;EACE,oBAAA;EACA,aAAA;E1D+wLD;A0D3wLC;EACE,WAAA;EACA,oBAAA;EACA,wBAAA;EACA,2BAAA;EACA,uCAAA;EACA,eAAA;E1D6wLH;A0D5wLG;EACE,cAAA;EACA,aAAA;EACA,oBAAA;EACA,wBAAA;EACA,2BAAA;E1D8wLL;A0D3wLC;EACE,UAAA;EACA,aAAA;EACA,mBAAA;EACA,sBAAA;EACA,6BAAA;EACA,yCAAA;E1D6wLH;A0D5wLG;EACE,cAAA;EACA,WAAA;EACA,eAAA;EACA,sBAAA;EACA,6BAAA;E1D8wLL;A0D3wLC;EACE,WAAA;EACA,oBAAA;EACA,qBAAA;EACA,8BAAA;EACA,0CAAA;EACA,YAAA;E1D6wLH;A0D5wLG;EACE,cAAA;EACA,UAAA;EACA,oBAAA;EACA,qBAAA;EACA,8BAAA;E1D8wLL;A0D1wLC;EACE,UAAA;EACA,cAAA;EACA,mBAAA;EACA,uBAAA;EACA,4BAAA;EACA,wCAAA;E1D4wLH;A0D3wLG;EACE,cAAA;EACA,YAAA;EACA,uBAAA;EACA,4BAAA;EACA,eAAA;E1D6wLL;A2D14LD;EACE,oBAAA;E3D44LD;A2Dz4LD;EACE,oBAAA;EACA,kBAAA;EACA,aAAA;E3D24LD;A2D94LD;EAMI,eAAA;EACA,oBAAA;EtD6KF,2CAAA;EACK,sCAAA;EACG,mCAAA;EL+tLT;A2Dr5LD;;EAcM,gBAAA;E3D24LL;A2Dj3LC;EAAA;ItDiKA,wDAAA;IAEK,8CAAA;IACG,wCAAA;IA7JR,qCAAA;IAEQ,6BAAA;IA+GR,2BAAA;IAEQ,mBAAA;ILowLP;E2D/4LG;;ItDmHJ,4CAAA;IACQ,oCAAA;IsDjHF,SAAA;I3Dk5LL;E2Dh5LG;;ItD8GJ,6CAAA;IACQ,qCAAA;IsD5GF,SAAA;I3Dm5LL;E2Dj5LG;;;ItDyGJ,yCAAA;IACQ,iCAAA;IsDtGF,SAAA;I3Do5LL;EACF;A2D17LD;;;EA6CI,gBAAA;E3Dk5LH;A2D/7LD;EAiDI,SAAA;E3Di5LH;A2Dl8LD;;EAsDI,oBAAA;EACA,QAAA;EACA,aAAA;E3Dg5LH;A2Dx8LD;EA4DI,YAAA;E3D+4LH;A2D38LD;EA+DI,aAAA;E3D+4LH;A2D98LD;;EAmEI,SAAA;E3D+4LH;A2Dl9LD;EAuEI,aAAA;E3D84LH;A2Dr9LD;EA0EI,YAAA;E3D84LH;A2Dt4LD;EACE,oBAAA;EACA,QAAA;EACA,SAAA;EACA,WAAA;EACA,YAAA;ErC9FA,cAAA;EAGA,2BAAA;EqC6FA,iBAAA;EACA,gBAAA;EACA,oBAAA;EACA,2CAAA;E3Dy4LD;A2Dp4LC;EblGE,oGAAA;EACA,+FAAA;EACA,sHAAA;EAAA,gGAAA;EACA,6BAAA;EACA,wHAAA;E9Cy+LH;A2Dx4LC;EACE,YAAA;EACA,UAAA;EbvGA,oGAAA;EACA,+FAAA;EACA,sHAAA;EAAA,gGAAA;EACA,6BAAA;EACA,wHAAA;E9Ck/LH;A2D14LC;;EAEE,YAAA;EACA,gBAAA;EACA,uBAAA;ErCtHF,cAAA;EAGA,2BAAA;EtBigMD;A2D36LD;;;;EAsCI,oBAAA;EACA,UAAA;EACA,YAAA;EACA,uBAAA;E3D24LH;A2Dp7LD;;EA6CI,WAAA;EACA,oBAAA;E3D24LH;A2Dz7LD;;EAkDI,YAAA;EACA,qBAAA;E3D24LH;A2D97LD;;EAuDI,aAAA;EACA,cAAA;EACA,mBAAA;EACA,gBAAA;EACA,oBAAA;E3D24LH;A2Dt4LG;EACE,kBAAA;E3Dw4LL;A2Dp4LG;EACE,kBAAA;E3Ds4LL;A2D53LD;EACE,oBAAA;EACA,cAAA;EACA,WAAA;EACA,aAAA;EACA,YAAA;EACA,mBAAA;EACA,iBAAA;EACA,kBAAA;EACA,oBAAA;E3D83LD;A2Dv4LD;EAYI,uBAAA;EACA,aAAA;EACA,cAAA;EACA,aAAA;EACA,qBAAA;EACA,2BAAA;EACA,qBAAA;EACA,iBAAA;EAWA,2BAAA;EACA,oCAAA;E3Do3LH;A2Dn5LD;EAkCI,WAAA;EACA,aAAA;EACA,cAAA;EACA,2BAAA;E3Do3LH;A2D72LD;EACE,oBAAA;EACA,WAAA;EACA,YAAA;EACA,cAAA;EACA,aAAA;EACA,mBAAA;EACA,sBAAA;EACA,gBAAA;EACA,oBAAA;EACA,2CAAA;E3D+2LD;A2D92LC;EACE,mBAAA;E3Dg3LH;A2Dv0LD;EAhCE;;;;IAKI,aAAA;IACA,cAAA;IACA,mBAAA;IACA,iBAAA;I3Dy2LH;E2Dj3LD;;IAYI,oBAAA;I3Dy2LH;E2Dr3LD;;IAgBI,qBAAA;I3Dy2LH;E2Dp2LD;IACE,WAAA;IACA,YAAA;IACA,sBAAA;I3Ds2LD;E2Dl2LD;IACE,cAAA;I3Do2LD;EACF;A4DlmMC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEE,cAAA;EACA,gBAAA;E5DgoMH;A4D9nMC;;;;;;;;;;;;;;;EACE,aAAA;E5D8oMH;AiCtpMD;E4BRE,gBAAA;EACA,mBAAA;EACA,oBAAA;E7DiqMD;AiCxpMD;EACE,yBAAA;EjC0pMD;AiCxpMD;EACE,wBAAA;EjC0pMD;AiClpMD;EACE,0BAAA;EjCopMD;AiClpMD;EACE,2BAAA;EjCopMD;AiClpMD;EACE,oBAAA;EjCopMD;AiClpMD;E6BzBE,aAAA;EACA,oBAAA;EACA,mBAAA;EACA,+BAAA;EACA,WAAA;E9D8qMD;AiChpMD;EACE,0BAAA;EjCkpMD;AiC3oMD;EACE,iBAAA;EjC6oMD;A+D9qMD;EACE,qBAAA;E/DgrMD;A+D1qMD;;;;ECdE,0BAAA;EhE8rMD;A+DzqMD;;;;;;;;;;;;EAYE,0BAAA;E/D2qMD;A+DpqMD;EAAA;IChDE,2BAAA;IhEwtMC;EgEvtMD;IAAU,gBAAA;IhE0tMT;EgEztMD;IAAU,+BAAA;IhE4tMT;EgE3tMD;;IACU,gCAAA;IhE8tMT;EACF;A+D9qMD;EAAA;IAFI,2BAAA;I/DorMD;EACF;A+D9qMD;EAAA;IAFI,4BAAA;I/DorMD;EACF;A+D9qMD;EAAA;IAFI,kCAAA;I/DorMD;EACF;A+D7qMD;EAAA;ICrEE,2BAAA;IhEsvMC;EgErvMD;IAAU,gBAAA;IhEwvMT;EgEvvMD;IAAU,+BAAA;IhE0vMT;EgEzvMD;;IACU,gCAAA;IhE4vMT;EACF;A+DvrMD;EAAA;IAFI,2BAAA;I/D6rMD;EACF;A+DvrMD;EAAA;IAFI,4BAAA;I/D6rMD;EACF;A+DvrMD;EAAA;IAFI,kCAAA;I/D6rMD;EACF;A+DtrMD;EAAA;IC1FE,2BAAA;IhEoxMC;EgEnxMD;IAAU,gBAAA;IhEsxMT;EgErxMD;IAAU,+BAAA;IhEwxMT;EgEvxMD;;IACU,gCAAA;IhE0xMT;EACF;A+DhsMD;EAAA;IAFI,2BAAA;I/DssMD;EACF;A+DhsMD;EAAA;IAFI,4BAAA;I/DssMD;EACF;A+DhsMD;EAAA;IAFI,kCAAA;I/DssMD;EACF;A+D/rMD;EAAA;IC/GE,2BAAA;IhEkzMC;EgEjzMD;IAAU,gBAAA;IhEozMT;EgEnzMD;IAAU,+BAAA;IhEszMT;EgErzMD;;IACU,gCAAA;IhEwzMT;EACF;A+DzsMD;EAAA;IAFI,2BAAA;I/D+sMD;EACF;A+DzsMD;EAAA;IAFI,4BAAA;I/D+sMD;EACF;A+DzsMD;EAAA;IAFI,kCAAA;I/D+sMD;EACF;A+DxsMD;EAAA;IC5HE,0BAAA;IhEw0MC;EACF;A+DxsMD;EAAA;ICjIE,0BAAA;IhE60MC;EACF;A+DxsMD;EAAA;ICtIE,0BAAA;IhEk1MC;EACF;A+DxsMD;EAAA;IC3IE,0BAAA;IhEu1MC;EACF;A+DrsMD;ECnJE,0BAAA;EhE21MD;A+DlsMD;EAAA;ICjKE,2BAAA;IhEu2MC;EgEt2MD;IAAU,gBAAA;IhEy2MT;EgEx2MD;IAAU,+BAAA;IhE22MT;EgE12MD;;IACU,gCAAA;IhE62MT;EACF;A+DhtMD;EACE,0BAAA;E/DktMD;A+D7sMD;EAAA;IAFI,2BAAA;I/DmtMD;EACF;A+DjtMD;EACE,0BAAA;E/DmtMD;A+D9sMD;EAAA;IAFI,4BAAA;I/DotMD;EACF;A+DltMD;EACE,0BAAA;E/DotMD;A+D/sMD;EAAA;IAFI,kCAAA;I/DqtMD;EACF;A+D9sMD;EAAA;ICpLE,0BAAA;IhEs4MC;EACF","file":"bootstrap.css","sourcesContent":["/*! normalize.css v3.0.2 | MIT License | git.io/normalize */\nhtml {\n font-family: sans-serif;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\nbody {\n margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n vertical-align: baseline;\n}\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n[hidden],\ntemplate {\n display: none;\n}\na {\n background-color: transparent;\n}\na:active,\na:hover {\n outline: 0;\n}\nabbr[title] {\n border-bottom: 1px dotted;\n}\nb,\nstrong {\n font-weight: bold;\n}\ndfn {\n font-style: italic;\n}\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\nmark {\n background: #ff0;\n color: #000;\n}\nsmall {\n font-size: 80%;\n}\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\nsup {\n top: -0.5em;\n}\nsub {\n bottom: -0.25em;\n}\nimg {\n border: 0;\n}\nsvg:not(:root) {\n overflow: hidden;\n}\nfigure {\n margin: 1em 40px;\n}\nhr {\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n height: 0;\n}\npre {\n overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit;\n font: inherit;\n margin: 0;\n}\nbutton {\n overflow: visible;\n}\nbutton,\nselect {\n text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\ninput {\n line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box;\n padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n -moz-box-sizing: content-box;\n -webkit-box-sizing: content-box;\n box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n border: 0;\n padding: 0;\n}\ntextarea {\n overflow: auto;\n}\noptgroup {\n font-weight: bold;\n}\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\ntd,\nth {\n padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important;\n box-shadow: none !important;\n text-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n img {\n max-width: 100% !important;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n select {\n background: #fff !important;\n }\n .navbar {\n display: none;\n }\n .btn > .caret,\n .dropup > .btn > .caret {\n border-top-color: #000 !important;\n }\n .label {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('../fonts/glyphicons-halflings-regular.eot');\n src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n content: \"\\2a\";\n}\n.glyphicon-plus:before {\n content: \"\\2b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n content: \"\\270f\";\n}\n.glyphicon-glass:before {\n content: \"\\e001\";\n}\n.glyphicon-music:before {\n content: \"\\e002\";\n}\n.glyphicon-search:before {\n content: \"\\e003\";\n}\n.glyphicon-heart:before {\n content: \"\\e005\";\n}\n.glyphicon-star:before {\n content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n content: \"\\e007\";\n}\n.glyphicon-user:before {\n content: \"\\e008\";\n}\n.glyphicon-film:before {\n content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n content: \"\\e010\";\n}\n.glyphicon-th:before {\n content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n content: \"\\e012\";\n}\n.glyphicon-ok:before {\n content: \"\\e013\";\n}\n.glyphicon-remove:before {\n content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n content: \"\\e016\";\n}\n.glyphicon-off:before {\n content: \"\\e017\";\n}\n.glyphicon-signal:before {\n content: \"\\e018\";\n}\n.glyphicon-cog:before {\n content: \"\\e019\";\n}\n.glyphicon-trash:before {\n content: \"\\e020\";\n}\n.glyphicon-home:before {\n content: \"\\e021\";\n}\n.glyphicon-file:before {\n content: \"\\e022\";\n}\n.glyphicon-time:before {\n content: \"\\e023\";\n}\n.glyphicon-road:before {\n content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n content: \"\\e025\";\n}\n.glyphicon-download:before {\n content: \"\\e026\";\n}\n.glyphicon-upload:before {\n content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n content: \"\\e032\";\n}\n.glyphicon-lock:before {\n content: \"\\e033\";\n}\n.glyphicon-flag:before {\n content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n content: \"\\e040\";\n}\n.glyphicon-tag:before {\n content: \"\\e041\";\n}\n.glyphicon-tags:before {\n content: \"\\e042\";\n}\n.glyphicon-book:before {\n content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n content: \"\\e044\";\n}\n.glyphicon-print:before {\n content: \"\\e045\";\n}\n.glyphicon-camera:before {\n content: \"\\e046\";\n}\n.glyphicon-font:before {\n content: \"\\e047\";\n}\n.glyphicon-bold:before {\n content: \"\\e048\";\n}\n.glyphicon-italic:before {\n content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n content: \"\\e055\";\n}\n.glyphicon-list:before {\n content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n content: \"\\e059\";\n}\n.glyphicon-picture:before {\n content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n content: \"\\e063\";\n}\n.glyphicon-tint:before {\n content: \"\\e064\";\n}\n.glyphicon-edit:before {\n content: \"\\e065\";\n}\n.glyphicon-share:before {\n content: \"\\e066\";\n}\n.glyphicon-check:before {\n content: \"\\e067\";\n}\n.glyphicon-move:before {\n content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n content: \"\\e070\";\n}\n.glyphicon-backward:before {\n content: \"\\e071\";\n}\n.glyphicon-play:before {\n content: \"\\e072\";\n}\n.glyphicon-pause:before {\n content: \"\\e073\";\n}\n.glyphicon-stop:before {\n content: \"\\e074\";\n}\n.glyphicon-forward:before {\n content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n content: \"\\e077\";\n}\n.glyphicon-eject:before {\n content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n content: \"\\e101\";\n}\n.glyphicon-gift:before {\n content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n content: \"\\e103\";\n}\n.glyphicon-fire:before {\n content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n content: \"\\e107\";\n}\n.glyphicon-plane:before {\n content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n content: \"\\e109\";\n}\n.glyphicon-random:before {\n content: \"\\e110\";\n}\n.glyphicon-comment:before {\n content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n content: \"\\e122\";\n}\n.glyphicon-bell:before {\n content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n content: \"\\e134\";\n}\n.glyphicon-globe:before {\n content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n content: \"\\e137\";\n}\n.glyphicon-filter:before {\n content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n content: \"\\e143\";\n}\n.glyphicon-link:before {\n content: \"\\e144\";\n}\n.glyphicon-phone:before {\n content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n content: \"\\e146\";\n}\n.glyphicon-usd:before {\n content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n content: \"\\e149\";\n}\n.glyphicon-sort:before {\n content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n content: \"\\e157\";\n}\n.glyphicon-expand:before {\n content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n content: \"\\e161\";\n}\n.glyphicon-flash:before {\n content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n content: \"\\e164\";\n}\n.glyphicon-record:before {\n content: \"\\e165\";\n}\n.glyphicon-save:before {\n content: \"\\e166\";\n}\n.glyphicon-open:before {\n content: \"\\e167\";\n}\n.glyphicon-saved:before {\n content: \"\\e168\";\n}\n.glyphicon-import:before {\n content: \"\\e169\";\n}\n.glyphicon-export:before {\n content: \"\\e170\";\n}\n.glyphicon-send:before {\n content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n content: \"\\e179\";\n}\n.glyphicon-header:before {\n content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n content: \"\\e183\";\n}\n.glyphicon-tower:before {\n content: \"\\e184\";\n}\n.glyphicon-stats:before {\n content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n content: \"\\e200\";\n}\n.glyphicon-cd:before {\n content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n content: \"\\e204\";\n}\n.glyphicon-copy:before {\n content: \"\\e205\";\n}\n.glyphicon-paste:before {\n content: \"\\e206\";\n}\n.glyphicon-alert:before {\n content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n content: \"\\e210\";\n}\n.glyphicon-king:before {\n content: \"\\e211\";\n}\n.glyphicon-queen:before {\n content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n content: \"\\e214\";\n}\n.glyphicon-knight:before {\n content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n content: \"\\e216\";\n}\n.glyphicon-tent:before {\n content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n content: \"\\e218\";\n}\n.glyphicon-bed:before {\n content: \"\\e219\";\n}\n.glyphicon-apple:before {\n content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n content: \"\\e227\";\n}\n.glyphicon-btc:before {\n content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n content: \"\\e227\";\n}\n.glyphicon-yen:before {\n content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n content: \"\\e232\";\n}\n.glyphicon-education:before {\n content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n content: \"\\e237\";\n}\n.glyphicon-oil:before {\n content: \"\\e238\";\n}\n.glyphicon-grain:before {\n content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n content: \"\\e253\";\n}\n.glyphicon-console:before {\n content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n content: \"\\e260\";\n}\n* {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n*:before,\n*:after {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n line-height: 1.42857143;\n color: #333333;\n background-color: #ffffff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\na {\n color: #337ab7;\n text-decoration: none;\n}\na:hover,\na:focus {\n color: #23527c;\n text-decoration: underline;\n}\na:focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\nfigure {\n margin: 0;\n}\nimg {\n vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n display: block;\n max-width: 100%;\n height: auto;\n}\n.img-rounded {\n border-radius: 6px;\n}\n.img-thumbnail {\n padding: 4px;\n line-height: 1.42857143;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n border-radius: 4px;\n -webkit-transition: all 0.2s ease-in-out;\n -o-transition: all 0.2s ease-in-out;\n transition: all 0.2s ease-in-out;\n display: inline-block;\n max-width: 100%;\n height: auto;\n}\n.img-circle {\n border-radius: 50%;\n}\nhr {\n margin-top: 20px;\n margin-bottom: 20px;\n border: 0;\n border-top: 1px solid #eeeeee;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n}\n[role=\"button\"] {\n cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n font-weight: normal;\n line-height: 1;\n color: #777777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n margin-top: 20px;\n margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n margin-top: 10px;\n margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n font-size: 75%;\n}\nh1,\n.h1 {\n font-size: 36px;\n}\nh2,\n.h2 {\n font-size: 30px;\n}\nh3,\n.h3 {\n font-size: 24px;\n}\nh4,\n.h4 {\n font-size: 18px;\n}\nh5,\n.h5 {\n font-size: 14px;\n}\nh6,\n.h6 {\n font-size: 12px;\n}\np {\n margin: 0 0 10px;\n}\n.lead {\n margin-bottom: 20px;\n font-size: 16px;\n font-weight: 300;\n line-height: 1.4;\n}\n@media (min-width: 768px) {\n .lead {\n font-size: 21px;\n }\n}\nsmall,\n.small {\n font-size: 85%;\n}\nmark,\n.mark {\n background-color: #fcf8e3;\n padding: .2em;\n}\n.text-left {\n text-align: left;\n}\n.text-right {\n text-align: right;\n}\n.text-center {\n text-align: center;\n}\n.text-justify {\n text-align: justify;\n}\n.text-nowrap {\n white-space: nowrap;\n}\n.text-lowercase {\n text-transform: lowercase;\n}\n.text-uppercase {\n text-transform: uppercase;\n}\n.text-capitalize {\n text-transform: capitalize;\n}\n.text-muted {\n color: #777777;\n}\n.text-primary {\n color: #337ab7;\n}\na.text-primary:hover {\n color: #286090;\n}\n.text-success {\n color: #3c763d;\n}\na.text-success:hover {\n color: #2b542c;\n}\n.text-info {\n color: #31708f;\n}\na.text-info:hover {\n color: #245269;\n}\n.text-warning {\n color: #8a6d3b;\n}\na.text-warning:hover {\n color: #66512c;\n}\n.text-danger {\n color: #a94442;\n}\na.text-danger:hover {\n color: #843534;\n}\n.bg-primary {\n color: #fff;\n background-color: #337ab7;\n}\na.bg-primary:hover {\n background-color: #286090;\n}\n.bg-success {\n background-color: #dff0d8;\n}\na.bg-success:hover {\n background-color: #c1e2b3;\n}\n.bg-info {\n background-color: #d9edf7;\n}\na.bg-info:hover {\n background-color: #afd9ee;\n}\n.bg-warning {\n background-color: #fcf8e3;\n}\na.bg-warning:hover {\n background-color: #f7ecb5;\n}\n.bg-danger {\n background-color: #f2dede;\n}\na.bg-danger:hover {\n background-color: #e4b9b9;\n}\n.page-header {\n padding-bottom: 9px;\n margin: 40px 0 20px;\n border-bottom: 1px solid #eeeeee;\n}\nul,\nol {\n margin-top: 0;\n margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n margin-bottom: 0;\n}\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n.list-inline {\n padding-left: 0;\n list-style: none;\n margin-left: -5px;\n}\n.list-inline > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n}\ndl {\n margin-top: 0;\n margin-bottom: 20px;\n}\ndt,\ndd {\n line-height: 1.42857143;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0;\n}\n@media (min-width: 768px) {\n .dl-horizontal dt {\n float: left;\n width: 160px;\n clear: left;\n text-align: right;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .dl-horizontal dd {\n margin-left: 180px;\n }\n}\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted #777777;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\nblockquote {\n padding: 10px 20px;\n margin: 0 0 20px;\n font-size: 17.5px;\n border-left: 5px solid #eeeeee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n display: block;\n font-size: 80%;\n line-height: 1.42857143;\n color: #777777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid #eeeeee;\n border-left: 0;\n text-align: right;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n content: '\\00A0 \\2014';\n}\naddress {\n margin-bottom: 20px;\n font-style: normal;\n line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: #c7254e;\n background-color: #f9f2f4;\n border-radius: 4px;\n}\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: #ffffff;\n background-color: #333333;\n border-radius: 3px;\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n}\npre {\n display: block;\n padding: 9.5px;\n margin: 0 0 10px;\n font-size: 13px;\n line-height: 1.42857143;\n word-break: break-all;\n word-wrap: break-word;\n color: #333333;\n background-color: #f5f5f5;\n border: 1px solid #cccccc;\n border-radius: 4px;\n}\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n}\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n.container {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n@media (min-width: 768px) {\n .container {\n width: 750px;\n }\n}\n@media (min-width: 992px) {\n .container {\n width: 970px;\n }\n}\n@media (min-width: 1200px) {\n .container {\n width: 1170px;\n }\n}\n.container-fluid {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n.row {\n margin-left: -15px;\n margin-right: -15px;\n}\n.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {\n position: relative;\n min-height: 1px;\n padding-left: 15px;\n padding-right: 15px;\n}\n.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {\n float: left;\n}\n.col-xs-12 {\n width: 100%;\n}\n.col-xs-11 {\n width: 91.66666667%;\n}\n.col-xs-10 {\n width: 83.33333333%;\n}\n.col-xs-9 {\n width: 75%;\n}\n.col-xs-8 {\n width: 66.66666667%;\n}\n.col-xs-7 {\n width: 58.33333333%;\n}\n.col-xs-6 {\n width: 50%;\n}\n.col-xs-5 {\n width: 41.66666667%;\n}\n.col-xs-4 {\n width: 33.33333333%;\n}\n.col-xs-3 {\n width: 25%;\n}\n.col-xs-2 {\n width: 16.66666667%;\n}\n.col-xs-1 {\n width: 8.33333333%;\n}\n.col-xs-pull-12 {\n right: 100%;\n}\n.col-xs-pull-11 {\n right: 91.66666667%;\n}\n.col-xs-pull-10 {\n right: 83.33333333%;\n}\n.col-xs-pull-9 {\n right: 75%;\n}\n.col-xs-pull-8 {\n right: 66.66666667%;\n}\n.col-xs-pull-7 {\n right: 58.33333333%;\n}\n.col-xs-pull-6 {\n right: 50%;\n}\n.col-xs-pull-5 {\n right: 41.66666667%;\n}\n.col-xs-pull-4 {\n right: 33.33333333%;\n}\n.col-xs-pull-3 {\n right: 25%;\n}\n.col-xs-pull-2 {\n right: 16.66666667%;\n}\n.col-xs-pull-1 {\n right: 8.33333333%;\n}\n.col-xs-pull-0 {\n right: auto;\n}\n.col-xs-push-12 {\n left: 100%;\n}\n.col-xs-push-11 {\n left: 91.66666667%;\n}\n.col-xs-push-10 {\n left: 83.33333333%;\n}\n.col-xs-push-9 {\n left: 75%;\n}\n.col-xs-push-8 {\n left: 66.66666667%;\n}\n.col-xs-push-7 {\n left: 58.33333333%;\n}\n.col-xs-push-6 {\n left: 50%;\n}\n.col-xs-push-5 {\n left: 41.66666667%;\n}\n.col-xs-push-4 {\n left: 33.33333333%;\n}\n.col-xs-push-3 {\n left: 25%;\n}\n.col-xs-push-2 {\n left: 16.66666667%;\n}\n.col-xs-push-1 {\n left: 8.33333333%;\n}\n.col-xs-push-0 {\n left: auto;\n}\n.col-xs-offset-12 {\n margin-left: 100%;\n}\n.col-xs-offset-11 {\n margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n margin-left: 75%;\n}\n.col-xs-offset-8 {\n margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n margin-left: 50%;\n}\n.col-xs-offset-5 {\n margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n margin-left: 25%;\n}\n.col-xs-offset-2 {\n margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n margin-left: 0%;\n}\n@media (min-width: 768px) {\n .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {\n float: left;\n }\n .col-sm-12 {\n width: 100%;\n }\n .col-sm-11 {\n width: 91.66666667%;\n }\n .col-sm-10 {\n width: 83.33333333%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-8 {\n width: 66.66666667%;\n }\n .col-sm-7 {\n width: 58.33333333%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-5 {\n width: 41.66666667%;\n }\n .col-sm-4 {\n width: 33.33333333%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-2 {\n width: 16.66666667%;\n }\n .col-sm-1 {\n width: 8.33333333%;\n }\n .col-sm-pull-12 {\n right: 100%;\n }\n .col-sm-pull-11 {\n right: 91.66666667%;\n }\n .col-sm-pull-10 {\n right: 83.33333333%;\n }\n .col-sm-pull-9 {\n right: 75%;\n }\n .col-sm-pull-8 {\n right: 66.66666667%;\n }\n .col-sm-pull-7 {\n right: 58.33333333%;\n }\n .col-sm-pull-6 {\n right: 50%;\n }\n .col-sm-pull-5 {\n right: 41.66666667%;\n }\n .col-sm-pull-4 {\n right: 33.33333333%;\n }\n .col-sm-pull-3 {\n right: 25%;\n }\n .col-sm-pull-2 {\n right: 16.66666667%;\n }\n .col-sm-pull-1 {\n right: 8.33333333%;\n }\n .col-sm-pull-0 {\n right: auto;\n }\n .col-sm-push-12 {\n left: 100%;\n }\n .col-sm-push-11 {\n left: 91.66666667%;\n }\n .col-sm-push-10 {\n left: 83.33333333%;\n }\n .col-sm-push-9 {\n left: 75%;\n }\n .col-sm-push-8 {\n left: 66.66666667%;\n }\n .col-sm-push-7 {\n left: 58.33333333%;\n }\n .col-sm-push-6 {\n left: 50%;\n }\n .col-sm-push-5 {\n left: 41.66666667%;\n }\n .col-sm-push-4 {\n left: 33.33333333%;\n }\n .col-sm-push-3 {\n left: 25%;\n }\n .col-sm-push-2 {\n left: 16.66666667%;\n }\n .col-sm-push-1 {\n left: 8.33333333%;\n }\n .col-sm-push-0 {\n left: auto;\n }\n .col-sm-offset-12 {\n margin-left: 100%;\n }\n .col-sm-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-sm-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-sm-offset-9 {\n margin-left: 75%;\n }\n .col-sm-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-sm-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-sm-offset-6 {\n margin-left: 50%;\n }\n .col-sm-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-sm-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-sm-offset-3 {\n margin-left: 25%;\n }\n .col-sm-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-sm-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-sm-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 992px) {\n .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {\n float: left;\n }\n .col-md-12 {\n width: 100%;\n }\n .col-md-11 {\n width: 91.66666667%;\n }\n .col-md-10 {\n width: 83.33333333%;\n }\n .col-md-9 {\n width: 75%;\n }\n .col-md-8 {\n width: 66.66666667%;\n }\n .col-md-7 {\n width: 58.33333333%;\n }\n .col-md-6 {\n width: 50%;\n }\n .col-md-5 {\n width: 41.66666667%;\n }\n .col-md-4 {\n width: 33.33333333%;\n }\n .col-md-3 {\n width: 25%;\n }\n .col-md-2 {\n width: 16.66666667%;\n }\n .col-md-1 {\n width: 8.33333333%;\n }\n .col-md-pull-12 {\n right: 100%;\n }\n .col-md-pull-11 {\n right: 91.66666667%;\n }\n .col-md-pull-10 {\n right: 83.33333333%;\n }\n .col-md-pull-9 {\n right: 75%;\n }\n .col-md-pull-8 {\n right: 66.66666667%;\n }\n .col-md-pull-7 {\n right: 58.33333333%;\n }\n .col-md-pull-6 {\n right: 50%;\n }\n .col-md-pull-5 {\n right: 41.66666667%;\n }\n .col-md-pull-4 {\n right: 33.33333333%;\n }\n .col-md-pull-3 {\n right: 25%;\n }\n .col-md-pull-2 {\n right: 16.66666667%;\n }\n .col-md-pull-1 {\n right: 8.33333333%;\n }\n .col-md-pull-0 {\n right: auto;\n }\n .col-md-push-12 {\n left: 100%;\n }\n .col-md-push-11 {\n left: 91.66666667%;\n }\n .col-md-push-10 {\n left: 83.33333333%;\n }\n .col-md-push-9 {\n left: 75%;\n }\n .col-md-push-8 {\n left: 66.66666667%;\n }\n .col-md-push-7 {\n left: 58.33333333%;\n }\n .col-md-push-6 {\n left: 50%;\n }\n .col-md-push-5 {\n left: 41.66666667%;\n }\n .col-md-push-4 {\n left: 33.33333333%;\n }\n .col-md-push-3 {\n left: 25%;\n }\n .col-md-push-2 {\n left: 16.66666667%;\n }\n .col-md-push-1 {\n left: 8.33333333%;\n }\n .col-md-push-0 {\n left: auto;\n }\n .col-md-offset-12 {\n margin-left: 100%;\n }\n .col-md-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-md-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-md-offset-9 {\n margin-left: 75%;\n }\n .col-md-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-md-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-md-offset-6 {\n margin-left: 50%;\n }\n .col-md-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-md-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-md-offset-3 {\n margin-left: 25%;\n }\n .col-md-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-md-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-md-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 1200px) {\n .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {\n float: left;\n }\n .col-lg-12 {\n width: 100%;\n }\n .col-lg-11 {\n width: 91.66666667%;\n }\n .col-lg-10 {\n width: 83.33333333%;\n }\n .col-lg-9 {\n width: 75%;\n }\n .col-lg-8 {\n width: 66.66666667%;\n }\n .col-lg-7 {\n width: 58.33333333%;\n }\n .col-lg-6 {\n width: 50%;\n }\n .col-lg-5 {\n width: 41.66666667%;\n }\n .col-lg-4 {\n width: 33.33333333%;\n }\n .col-lg-3 {\n width: 25%;\n }\n .col-lg-2 {\n width: 16.66666667%;\n }\n .col-lg-1 {\n width: 8.33333333%;\n }\n .col-lg-pull-12 {\n right: 100%;\n }\n .col-lg-pull-11 {\n right: 91.66666667%;\n }\n .col-lg-pull-10 {\n right: 83.33333333%;\n }\n .col-lg-pull-9 {\n right: 75%;\n }\n .col-lg-pull-8 {\n right: 66.66666667%;\n }\n .col-lg-pull-7 {\n right: 58.33333333%;\n }\n .col-lg-pull-6 {\n right: 50%;\n }\n .col-lg-pull-5 {\n right: 41.66666667%;\n }\n .col-lg-pull-4 {\n right: 33.33333333%;\n }\n .col-lg-pull-3 {\n right: 25%;\n }\n .col-lg-pull-2 {\n right: 16.66666667%;\n }\n .col-lg-pull-1 {\n right: 8.33333333%;\n }\n .col-lg-pull-0 {\n right: auto;\n }\n .col-lg-push-12 {\n left: 100%;\n }\n .col-lg-push-11 {\n left: 91.66666667%;\n }\n .col-lg-push-10 {\n left: 83.33333333%;\n }\n .col-lg-push-9 {\n left: 75%;\n }\n .col-lg-push-8 {\n left: 66.66666667%;\n }\n .col-lg-push-7 {\n left: 58.33333333%;\n }\n .col-lg-push-6 {\n left: 50%;\n }\n .col-lg-push-5 {\n left: 41.66666667%;\n }\n .col-lg-push-4 {\n left: 33.33333333%;\n }\n .col-lg-push-3 {\n left: 25%;\n }\n .col-lg-push-2 {\n left: 16.66666667%;\n }\n .col-lg-push-1 {\n left: 8.33333333%;\n }\n .col-lg-push-0 {\n left: auto;\n }\n .col-lg-offset-12 {\n margin-left: 100%;\n }\n .col-lg-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-lg-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-lg-offset-9 {\n margin-left: 75%;\n }\n .col-lg-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-lg-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-lg-offset-6 {\n margin-left: 50%;\n }\n .col-lg-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-lg-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-lg-offset-3 {\n margin-left: 25%;\n }\n .col-lg-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-lg-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-lg-offset-0 {\n margin-left: 0%;\n }\n}\ntable {\n background-color: transparent;\n}\ncaption {\n padding-top: 8px;\n padding-bottom: 8px;\n color: #777777;\n text-align: left;\n}\nth {\n text-align: left;\n}\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: top;\n border-top: 1px solid #dddddd;\n}\n.table > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid #dddddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n border-top: 0;\n}\n.table > tbody + tbody {\n border-top: 2px solid #dddddd;\n}\n.table .table {\n background-color: #ffffff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n padding: 5px;\n}\n.table-bordered {\n border: 1px solid #dddddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n border: 1px solid #dddddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-column;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-cell;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n background-color: #ebcccc;\n}\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%;\n}\n@media screen and (max-width: 767px) {\n .table-responsive {\n width: 100%;\n margin-bottom: 15px;\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid #dddddd;\n }\n .table-responsive > .table {\n margin-bottom: 0;\n }\n .table-responsive > .table > thead > tr > th,\n .table-responsive > .table > tbody > tr > th,\n .table-responsive > .table > tfoot > tr > th,\n .table-responsive > .table > thead > tr > td,\n .table-responsive > .table > tbody > tr > td,\n .table-responsive > .table > tfoot > tr > td {\n white-space: nowrap;\n }\n .table-responsive > .table-bordered {\n border: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:first-child,\n .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .table-responsive > .table-bordered > thead > tr > td:first-child,\n .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:last-child,\n .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .table-responsive > .table-bordered > thead > tr > td:last-child,\n .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n }\n .table-responsive > .table-bordered > tbody > tr:last-child > th,\n .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n .table-responsive > .table-bordered > tbody > tr:last-child > td,\n .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n border-bottom: 0;\n }\n}\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n min-width: 0;\n}\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: 20px;\n font-size: 21px;\n line-height: inherit;\n color: #333333;\n border: 0;\n border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: bold;\n}\ninput[type=\"search\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9;\n line-height: normal;\n}\ninput[type=\"file\"] {\n display: block;\n}\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\nselect[multiple],\nselect[size] {\n height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\noutput {\n display: block;\n padding-top: 7px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n}\n.form-control {\n display: block;\n width: 100%;\n height: 34px;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n background-color: #ffffff;\n background-image: none;\n border: 1px solid #cccccc;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n border-color: #66afe9;\n outline: 0;\n -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control::-moz-placeholder {\n color: #999999;\n opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n color: #999999;\n}\n.form-control::-webkit-input-placeholder {\n color: #999999;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n background-color: #eeeeee;\n opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n cursor: not-allowed;\n}\ntextarea.form-control {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"],\n input[type=\"time\"],\n input[type=\"datetime-local\"],\n input[type=\"month\"] {\n line-height: 34px;\n }\n input[type=\"date\"].input-sm,\n input[type=\"time\"].input-sm,\n input[type=\"datetime-local\"].input-sm,\n input[type=\"month\"].input-sm,\n .input-group-sm input[type=\"date\"],\n .input-group-sm input[type=\"time\"],\n .input-group-sm input[type=\"datetime-local\"],\n .input-group-sm input[type=\"month\"] {\n line-height: 30px;\n }\n input[type=\"date\"].input-lg,\n input[type=\"time\"].input-lg,\n input[type=\"datetime-local\"].input-lg,\n input[type=\"month\"].input-lg,\n .input-group-lg input[type=\"date\"],\n .input-group-lg input[type=\"time\"],\n .input-group-lg input[type=\"datetime-local\"],\n .input-group-lg input[type=\"month\"] {\n line-height: 46px;\n }\n}\n.form-group {\n margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n min-height: 20px;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-left: -20px;\n margin-top: 4px \\9;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n cursor: not-allowed;\n}\n.form-control-static {\n padding-top: 7px;\n padding-bottom: 7px;\n margin-bottom: 0;\n min-height: 34px;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n padding-left: 0;\n padding-right: 0;\n}\n.input-sm {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-sm {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n height: auto;\n}\n.form-group-sm .form-control {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.form-group-sm .form-control {\n height: 30px;\n line-height: 30px;\n}\ntextarea.form-group-sm .form-control,\nselect[multiple].form-group-sm .form-control {\n height: auto;\n}\n.form-group-sm .form-control-static {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n min-height: 32px;\n}\n.input-lg {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-lg {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n height: auto;\n}\n.form-group-lg .form-control {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.form-group-lg .form-control {\n height: 46px;\n line-height: 46px;\n}\ntextarea.form-group-lg .form-control,\nselect[multiple].form-group-lg .form-control {\n height: auto;\n}\n.form-group-lg .form-control-static {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n min-height: 38px;\n}\n.has-feedback {\n position: relative;\n}\n.has-feedback .form-control {\n padding-right: 42.5px;\n}\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: 34px;\n height: 34px;\n line-height: 34px;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback {\n width: 46px;\n height: 46px;\n line-height: 46px;\n}\n.input-sm + .form-control-feedback {\n width: 30px;\n height: 30px;\n line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n color: #3c763d;\n}\n.has-success .form-control {\n border-color: #3c763d;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n border-color: #2b542c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n color: #3c763d;\n border-color: #3c763d;\n background-color: #dff0d8;\n}\n.has-success .form-control-feedback {\n color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n color: #8a6d3b;\n}\n.has-warning .form-control {\n border-color: #8a6d3b;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n border-color: #66512c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n color: #8a6d3b;\n border-color: #8a6d3b;\n background-color: #fcf8e3;\n}\n.has-warning .form-control-feedback {\n color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n color: #a94442;\n}\n.has-error .form-control {\n border-color: #a94442;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n border-color: #843534;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n color: #a94442;\n border-color: #a94442;\n background-color: #f2dede;\n}\n.has-error .form-control-feedback {\n color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n top: 0;\n}\n.help-block {\n display: block;\n margin-top: 5px;\n margin-bottom: 10px;\n color: #737373;\n}\n@media (min-width: 768px) {\n .form-inline .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .form-inline .input-group .input-group-addon,\n .form-inline .input-group .input-group-btn,\n .form-inline .input-group .form-control {\n width: auto;\n }\n .form-inline .input-group > .form-control {\n width: 100%;\n }\n .form-inline .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio,\n .form-inline .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio label,\n .form-inline .checkbox label {\n padding-left: 0;\n }\n .form-inline .radio input[type=\"radio\"],\n .form-inline .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n margin-top: 0;\n margin-bottom: 0;\n padding-top: 7px;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n min-height: 27px;\n}\n.form-horizontal .form-group {\n margin-left: -15px;\n margin-right: -15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .control-label {\n text-align: right;\n margin-bottom: 0;\n padding-top: 7px;\n }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n right: 15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-lg .control-label {\n padding-top: 14.333333px;\n }\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-sm .control-label {\n padding-top: 6px;\n }\n}\n.btn {\n display: inline-block;\n margin-bottom: 0;\n font-weight: normal;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none;\n border: 1px solid transparent;\n white-space: nowrap;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n border-radius: 4px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n color: #333333;\n text-decoration: none;\n}\n.btn:active,\n.btn.active {\n outline: 0;\n background-image: none;\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n cursor: not-allowed;\n pointer-events: none;\n opacity: 0.65;\n filter: alpha(opacity=65);\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-default {\n color: #333333;\n background-color: #ffffff;\n border-color: #cccccc;\n}\n.btn-default:hover,\n.btn-default:focus,\n.btn-default.focus,\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n color: #333333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n background-image: none;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n background-color: #ffffff;\n border-color: #cccccc;\n}\n.btn-default .badge {\n color: #ffffff;\n background-color: #333333;\n}\n.btn-primary {\n color: #ffffff;\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary:hover,\n.btn-primary:focus,\n.btn-primary.focus,\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n color: #ffffff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n background-image: none;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary .badge {\n color: #337ab7;\n background-color: #ffffff;\n}\n.btn-success {\n color: #ffffff;\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success:hover,\n.btn-success:focus,\n.btn-success.focus,\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n color: #ffffff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n background-image: none;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success .badge {\n color: #5cb85c;\n background-color: #ffffff;\n}\n.btn-info {\n color: #ffffff;\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info:hover,\n.btn-info:focus,\n.btn-info.focus,\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n color: #ffffff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n background-image: none;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info .badge {\n color: #5bc0de;\n background-color: #ffffff;\n}\n.btn-warning {\n color: #ffffff;\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning:hover,\n.btn-warning:focus,\n.btn-warning.focus,\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n color: #ffffff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n background-image: none;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning .badge {\n color: #f0ad4e;\n background-color: #ffffff;\n}\n.btn-danger {\n color: #ffffff;\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger:hover,\n.btn-danger:focus,\n.btn-danger.focus,\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n color: #ffffff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n background-image: none;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger .badge {\n color: #d9534f;\n background-color: #ffffff;\n}\n.btn-link {\n color: #337ab7;\n font-weight: normal;\n border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n background-color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n color: #23527c;\n text-decoration: underline;\n background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n color: #777777;\n text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n padding: 1px 5px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-block {\n display: block;\n width: 100%;\n}\n.btn-block + .btn-block {\n margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n.fade {\n opacity: 0;\n -webkit-transition: opacity 0.15s linear;\n -o-transition: opacity 0.15s linear;\n transition: opacity 0.15s linear;\n}\n.fade.in {\n opacity: 1;\n}\n.collapse {\n display: none;\n}\n.collapse.in {\n display: block;\n}\ntr.collapse.in {\n display: table-row;\n}\ntbody.collapse.in {\n display: table-row-group;\n}\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n -webkit-transition-property: height, visibility;\n transition-property: height, visibility;\n -webkit-transition-duration: 0.35s;\n transition-duration: 0.35s;\n -webkit-transition-timing-function: ease;\n transition-timing-function: ease;\n}\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px dashed;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n position: relative;\n}\n.dropdown-toggle:focus {\n outline: 0;\n}\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n list-style: none;\n font-size: 14px;\n text-align: left;\n background-color: #ffffff;\n border: 1px solid #cccccc;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 4px;\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n background-clip: padding-box;\n}\n.dropdown-menu.pull-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu .divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: 1.42857143;\n color: #333333;\n white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n text-decoration: none;\n color: #262626;\n background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n color: #ffffff;\n text-decoration: none;\n outline: 0;\n background-color: #337ab7;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n color: #777777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n cursor: not-allowed;\n}\n.open > .dropdown-menu {\n display: block;\n}\n.open > a {\n outline: 0;\n}\n.dropdown-menu-right {\n left: auto;\n right: 0;\n}\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 12px;\n line-height: 1.42857143;\n color: #777777;\n white-space: nowrap;\n}\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: 990;\n}\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n border-top: 0;\n border-bottom: 4px solid;\n content: \"\";\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n left: auto;\n right: 0;\n }\n .navbar-right .dropdown-menu-left {\n left: 0;\n right: auto;\n }\n}\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n margin-left: -1px;\n}\n.btn-toolbar {\n margin-left: -5px;\n}\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n.btn-group.open .dropdown-toggle {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn .caret {\n margin-left: 0;\n}\n.btn-lg .caret {\n border-width: 5px 5px 0;\n border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-bottom-left-radius: 4px;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.input-group {\n position: relative;\n display: table;\n border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n}\n.input-group .form-control {\n position: relative;\n z-index: 2;\n float: left;\n width: 100%;\n margin-bottom: 0;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle;\n}\n.input-group-addon {\n padding: 6px 12px;\n font-size: 14px;\n font-weight: normal;\n line-height: 1;\n color: #555555;\n text-align: center;\n background-color: #eeeeee;\n border: 1px solid #cccccc;\n border-radius: 4px;\n}\n.input-group-addon.input-sm {\n padding: 5px 10px;\n font-size: 12px;\n border-radius: 3px;\n}\n.input-group-addon.input-lg {\n padding: 10px 16px;\n font-size: 18px;\n border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n.input-group-btn > .btn {\n position: relative;\n}\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n margin-left: -1px;\n}\n.nav {\n margin-bottom: 0;\n padding-left: 0;\n list-style: none;\n}\n.nav > li {\n position: relative;\n display: block;\n}\n.nav > li > a {\n position: relative;\n display: block;\n padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.nav > li.disabled > a {\n color: #777777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n color: #777777;\n text-decoration: none;\n background-color: transparent;\n cursor: not-allowed;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n background-color: #eeeeee;\n border-color: #337ab7;\n}\n.nav .nav-divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.nav > li > a > img {\n max-width: none;\n}\n.nav-tabs {\n border-bottom: 1px solid #dddddd;\n}\n.nav-tabs > li {\n float: left;\n margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n margin-right: 2px;\n line-height: 1.42857143;\n border: 1px solid transparent;\n border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n border-color: #eeeeee #eeeeee #dddddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n color: #555555;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n border-bottom-color: transparent;\n cursor: default;\n}\n.nav-tabs.nav-justified {\n width: 100%;\n border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n float: none;\n}\n.nav-tabs.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-tabs.nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs.nav-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n border: 1px solid #dddddd;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li > a {\n border-bottom: 1px solid #dddddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs.nav-justified > .active > a,\n .nav-tabs.nav-justified > .active > a:hover,\n .nav-tabs.nav-justified > .active > a:focus {\n border-bottom-color: #ffffff;\n }\n}\n.nav-pills > li {\n float: left;\n}\n.nav-pills > li > a {\n border-radius: 4px;\n}\n.nav-pills > li + li {\n margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n color: #ffffff;\n background-color: #337ab7;\n}\n.nav-stacked > li {\n float: none;\n}\n.nav-stacked > li + li {\n margin-top: 2px;\n margin-left: 0;\n}\n.nav-justified {\n width: 100%;\n}\n.nav-justified > li {\n float: none;\n}\n.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs-justified {\n border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n border: 1px solid #dddddd;\n}\n@media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-bottom: 1px solid #dddddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs-justified > .active > a,\n .nav-tabs-justified > .active > a:hover,\n .nav-tabs-justified > .active > a:focus {\n border-bottom-color: #ffffff;\n }\n}\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar {\n position: relative;\n min-height: 50px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n .navbar {\n border-radius: 4px;\n }\n}\n@media (min-width: 768px) {\n .navbar-header {\n float: left;\n }\n}\n.navbar-collapse {\n overflow-x: visible;\n padding-right: 15px;\n padding-left: 15px;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse.in {\n overflow-y: auto;\n}\n@media (min-width: 768px) {\n .navbar-collapse {\n width: auto;\n border-top: 0;\n box-shadow: none;\n }\n .navbar-collapse.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0;\n overflow: visible !important;\n }\n .navbar-collapse.in {\n overflow-y: visible;\n }\n .navbar-fixed-top .navbar-collapse,\n .navbar-static-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n padding-left: 0;\n padding-right: 0;\n }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n .navbar-fixed-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n max-height: 200px;\n }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .container > .navbar-header,\n .container-fluid > .navbar-header,\n .container > .navbar-collapse,\n .container-fluid > .navbar-collapse {\n margin-right: 0;\n margin-left: 0;\n }\n}\n.navbar-static-top {\n z-index: 1000;\n border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n .navbar-static-top {\n border-radius: 0;\n }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n@media (min-width: 768px) {\n .navbar-fixed-top,\n .navbar-fixed-bottom {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0;\n border-width: 1px 0 0;\n}\n.navbar-brand {\n float: left;\n padding: 15px 15px;\n font-size: 18px;\n line-height: 20px;\n height: 50px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n text-decoration: none;\n}\n.navbar-brand > img {\n display: block;\n}\n@media (min-width: 768px) {\n .navbar > .container .navbar-brand,\n .navbar > .container-fluid .navbar-brand {\n margin-left: -15px;\n }\n}\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: 15px;\n padding: 9px 10px;\n margin-top: 8px;\n margin-bottom: 8px;\n background-color: transparent;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.navbar-toggle:focus {\n outline: 0;\n}\n.navbar-toggle .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n margin-top: 4px;\n}\n@media (min-width: 768px) {\n .navbar-toggle {\n display: none;\n }\n}\n.navbar-nav {\n margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: 20px;\n}\n@media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n }\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n .navbar-nav .open .dropdown-menu > li > a {\n line-height: 20px;\n }\n .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-nav .open .dropdown-menu > li > a:focus {\n background-image: none;\n }\n}\n@media (min-width: 768px) {\n .navbar-nav {\n float: left;\n margin: 0;\n }\n .navbar-nav > li {\n float: left;\n }\n .navbar-nav > li > a {\n padding-top: 15px;\n padding-bottom: 15px;\n }\n}\n.navbar-form {\n margin-left: -15px;\n margin-right: -15px;\n padding: 10px 15px;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n margin-top: 8px;\n margin-bottom: 8px;\n}\n@media (min-width: 768px) {\n .navbar-form .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .navbar-form .form-control-static {\n display: inline-block;\n }\n .navbar-form .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .navbar-form .input-group .input-group-addon,\n .navbar-form .input-group .input-group-btn,\n .navbar-form .input-group .form-control {\n width: auto;\n }\n .navbar-form .input-group > .form-control {\n width: 100%;\n }\n .navbar-form .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio,\n .navbar-form .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio label,\n .navbar-form .checkbox label {\n padding-left: 0;\n }\n .navbar-form .radio input[type=\"radio\"],\n .navbar-form .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .navbar-form .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n@media (max-width: 767px) {\n .navbar-form .form-group {\n margin-bottom: 5px;\n }\n .navbar-form .form-group:last-child {\n margin-bottom: 0;\n }\n}\n@media (min-width: 768px) {\n .navbar-form {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n}\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.navbar-btn {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n margin-top: 14px;\n margin-bottom: 14px;\n}\n.navbar-text {\n margin-top: 15px;\n margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n .navbar-text {\n float: left;\n margin-left: 15px;\n margin-right: 15px;\n }\n}\n@media (min-width: 768px) {\n .navbar-left {\n float: left !important;\n }\n .navbar-right {\n float: right !important;\n margin-right: -15px;\n }\n .navbar-right ~ .navbar-right {\n margin-right: 0;\n }\n}\n.navbar-default {\n background-color: #f8f8f8;\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n color: #777777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n color: #5e5e5e;\n background-color: transparent;\n}\n.navbar-default .navbar-text {\n color: #777777;\n}\n.navbar-default .navbar-nav > li > a {\n color: #777777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n color: #333333;\n background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n color: #555555;\n background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n color: #cccccc;\n background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n border-color: #dddddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n background-color: #dddddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n background-color: #888888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n background-color: #e7e7e7;\n color: #555555;\n}\n@media (max-width: 767px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #777777;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #333333;\n background-color: transparent;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #555555;\n background-color: #e7e7e7;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #cccccc;\n background-color: transparent;\n }\n}\n.navbar-default .navbar-link {\n color: #777777;\n}\n.navbar-default .navbar-link:hover {\n color: #333333;\n}\n.navbar-default .btn-link {\n color: #777777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n color: #333333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n color: #cccccc;\n}\n.navbar-inverse {\n background-color: #222222;\n border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n color: #ffffff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n color: #ffffff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n color: #ffffff;\n background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n color: #444444;\n background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n border-color: #333333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n background-color: #333333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n background-color: #ffffff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n background-color: #080808;\n color: #ffffff;\n}\n@media (max-width: 767px) {\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n border-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #ffffff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #ffffff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #444444;\n background-color: transparent;\n }\n}\n.navbar-inverse .navbar-link {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n color: #ffffff;\n}\n.navbar-inverse .btn-link {\n color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n color: #ffffff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n color: #444444;\n}\n.breadcrumb {\n padding: 8px 15px;\n margin-bottom: 20px;\n list-style: none;\n background-color: #f5f5f5;\n border-radius: 4px;\n}\n.breadcrumb > li {\n display: inline-block;\n}\n.breadcrumb > li + li:before {\n content: \"/\\00a0\";\n padding: 0 5px;\n color: #cccccc;\n}\n.breadcrumb > .active {\n color: #777777;\n}\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: 20px 0;\n border-radius: 4px;\n}\n.pagination > li {\n display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n position: relative;\n float: left;\n padding: 6px 12px;\n line-height: 1.42857143;\n text-decoration: none;\n color: #337ab7;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n margin-left: -1px;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n margin-left: 0;\n border-bottom-left-radius: 4px;\n border-top-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n border-bottom-right-radius: 4px;\n border-top-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n color: #23527c;\n background-color: #eeeeee;\n border-color: #dddddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n z-index: 2;\n color: #ffffff;\n background-color: #337ab7;\n border-color: #337ab7;\n cursor: default;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n color: #777777;\n background-color: #ffffff;\n border-color: #dddddd;\n cursor: not-allowed;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n padding: 10px 16px;\n font-size: 18px;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n border-bottom-left-radius: 6px;\n border-top-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n border-bottom-right-radius: 6px;\n border-top-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n padding: 5px 10px;\n font-size: 12px;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n border-bottom-left-radius: 3px;\n border-top-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n}\n.pager {\n padding-left: 0;\n margin: 20px 0;\n list-style: none;\n text-align: center;\n}\n.pager li {\n display: inline;\n}\n.pager li > a,\n.pager li > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.pager .next > a,\n.pager .next > span {\n float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n color: #777777;\n background-color: #ffffff;\n cursor: not-allowed;\n}\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: #ffffff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n}\na.label:hover,\na.label:focus {\n color: #ffffff;\n text-decoration: none;\n cursor: pointer;\n}\n.label:empty {\n display: none;\n}\n.btn .label {\n position: relative;\n top: -1px;\n}\n.label-default {\n background-color: #777777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n background-color: #5e5e5e;\n}\n.label-primary {\n background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n background-color: #286090;\n}\n.label-success {\n background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n background-color: #449d44;\n}\n.label-info {\n background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n background-color: #31b0d5;\n}\n.label-warning {\n background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n background-color: #ec971f;\n}\n.label-danger {\n background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n background-color: #c9302c;\n}\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: 12px;\n font-weight: bold;\n color: #ffffff;\n line-height: 1;\n vertical-align: baseline;\n white-space: nowrap;\n text-align: center;\n background-color: #777777;\n border-radius: 10px;\n}\n.badge:empty {\n display: none;\n}\n.btn .badge {\n position: relative;\n top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n top: 0;\n padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n color: #ffffff;\n text-decoration: none;\n cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n color: #337ab7;\n background-color: #ffffff;\n}\n.list-group-item > .badge {\n float: right;\n}\n.list-group-item > .badge + .badge {\n margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n margin-left: 3px;\n}\n.jumbotron {\n padding: 30px 15px;\n margin-bottom: 30px;\n color: inherit;\n background-color: #eeeeee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n color: inherit;\n}\n.jumbotron p {\n margin-bottom: 15px;\n font-size: 21px;\n font-weight: 200;\n}\n.jumbotron > hr {\n border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n border-radius: 6px;\n}\n.jumbotron .container {\n max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n .jumbotron {\n padding: 48px 0;\n }\n .container .jumbotron,\n .container-fluid .jumbotron {\n padding-left: 60px;\n padding-right: 60px;\n }\n .jumbotron h1,\n .jumbotron .h1 {\n font-size: 63px;\n }\n}\n.thumbnail {\n display: block;\n padding: 4px;\n margin-bottom: 20px;\n line-height: 1.42857143;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n border-radius: 4px;\n -webkit-transition: border 0.2s ease-in-out;\n -o-transition: border 0.2s ease-in-out;\n transition: border 0.2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n margin-left: auto;\n margin-right: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n border-color: #337ab7;\n}\n.thumbnail .caption {\n padding: 9px;\n color: #333333;\n}\n.alert {\n padding: 15px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.alert h4 {\n margin-top: 0;\n color: inherit;\n}\n.alert .alert-link {\n font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n margin-bottom: 0;\n}\n.alert > p + p {\n margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n}\n.alert-success {\n background-color: #dff0d8;\n border-color: #d6e9c6;\n color: #3c763d;\n}\n.alert-success hr {\n border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n color: #2b542c;\n}\n.alert-info {\n background-color: #d9edf7;\n border-color: #bce8f1;\n color: #31708f;\n}\n.alert-info hr {\n border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n color: #245269;\n}\n.alert-warning {\n background-color: #fcf8e3;\n border-color: #faebcc;\n color: #8a6d3b;\n}\n.alert-warning hr {\n border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n color: #66512c;\n}\n.alert-danger {\n background-color: #f2dede;\n border-color: #ebccd1;\n color: #a94442;\n}\n.alert-danger hr {\n border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n.progress {\n overflow: hidden;\n height: 20px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: 12px;\n line-height: 20px;\n color: #ffffff;\n text-align: center;\n background-color: #337ab7;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n -webkit-transition: width 0.6s ease;\n -o-transition: width 0.6s ease;\n transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n -webkit-animation: progress-bar-stripes 2s linear infinite;\n -o-animation: progress-bar-stripes 2s linear infinite;\n animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.media {\n margin-top: 15px;\n}\n.media:first-child {\n margin-top: 0;\n}\n.media,\n.media-body {\n zoom: 1;\n overflow: hidden;\n}\n.media-body {\n width: 10000px;\n}\n.media-object {\n display: block;\n}\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n.media-middle {\n vertical-align: middle;\n}\n.media-bottom {\n vertical-align: bottom;\n}\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n.list-group {\n margin-bottom: 20px;\n padding-left: 0;\n}\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n margin-bottom: -1px;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n}\n.list-group-item:first-child {\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n}\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\na.list-group-item {\n color: #555555;\n}\na.list-group-item .list-group-item-heading {\n color: #333333;\n}\na.list-group-item:hover,\na.list-group-item:focus {\n text-decoration: none;\n color: #555555;\n background-color: #f5f5f5;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n background-color: #eeeeee;\n color: #777777;\n cursor: not-allowed;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n color: #777777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n z-index: 2;\n color: #ffffff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n color: #c7ddef;\n}\n.list-group-item-success {\n color: #3c763d;\n background-color: #dff0d8;\n}\na.list-group-item-success {\n color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-success:hover,\na.list-group-item-success:focus {\n color: #3c763d;\n background-color: #d0e9c6;\n}\na.list-group-item-success.active,\na.list-group-item-success.active:hover,\na.list-group-item-success.active:focus {\n color: #fff;\n background-color: #3c763d;\n border-color: #3c763d;\n}\n.list-group-item-info {\n color: #31708f;\n background-color: #d9edf7;\n}\na.list-group-item-info {\n color: #31708f;\n}\na.list-group-item-info .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-info:hover,\na.list-group-item-info:focus {\n color: #31708f;\n background-color: #c4e3f3;\n}\na.list-group-item-info.active,\na.list-group-item-info.active:hover,\na.list-group-item-info.active:focus {\n color: #fff;\n background-color: #31708f;\n border-color: #31708f;\n}\n.list-group-item-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n}\na.list-group-item-warning {\n color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-warning:hover,\na.list-group-item-warning:focus {\n color: #8a6d3b;\n background-color: #faf2cc;\n}\na.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus {\n color: #fff;\n background-color: #8a6d3b;\n border-color: #8a6d3b;\n}\n.list-group-item-danger {\n color: #a94442;\n background-color: #f2dede;\n}\na.list-group-item-danger {\n color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-danger:hover,\na.list-group-item-danger:focus {\n color: #a94442;\n background-color: #ebcccc;\n}\na.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus {\n color: #fff;\n background-color: #a94442;\n border-color: #a94442;\n}\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n.panel {\n margin-bottom: 20px;\n background-color: #ffffff;\n border: 1px solid transparent;\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n padding: 15px;\n}\n.panel-heading {\n padding: 10px 15px;\n border-bottom: 1px solid transparent;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n color: inherit;\n}\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: 16px;\n color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n color: inherit;\n}\n.panel-footer {\n padding: 10px 15px;\n background-color: #f5f5f5;\n border-top: 1px solid #dddddd;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n border-top: 0;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n border-bottom: 0;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n border-top-width: 0;\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n padding-left: 15px;\n padding-right: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n border-top: 1px solid #dddddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n border-bottom: 0;\n}\n.panel > .table-responsive {\n border: 0;\n margin-bottom: 0;\n}\n.panel-group {\n margin-bottom: 20px;\n}\n.panel-group .panel {\n margin-bottom: 0;\n border-radius: 4px;\n}\n.panel-group .panel + .panel {\n margin-top: 5px;\n}\n.panel-group .panel-heading {\n border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n border-top: 1px solid #dddddd;\n}\n.panel-group .panel-footer {\n border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n border-bottom: 1px solid #dddddd;\n}\n.panel-default {\n border-color: #dddddd;\n}\n.panel-default > .panel-heading {\n color: #333333;\n background-color: #f5f5f5;\n border-color: #dddddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #dddddd;\n}\n.panel-default > .panel-heading .badge {\n color: #f5f5f5;\n background-color: #333333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #dddddd;\n}\n.panel-primary {\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n color: #ffffff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n color: #337ab7;\n background-color: #ffffff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #337ab7;\n}\n.panel-success {\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n color: #dff0d8;\n background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #d6e9c6;\n}\n.panel-info {\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n color: #d9edf7;\n background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #bce8f1;\n}\n.panel-warning {\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n color: #fcf8e3;\n background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #faebcc;\n}\n.panel-danger {\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n color: #f2dede;\n background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n border: 0;\n}\n.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border: 1px solid #e3e3e3;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n border-color: #ddd;\n border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n padding: 24px;\n border-radius: 6px;\n}\n.well-sm {\n padding: 9px;\n border-radius: 3px;\n}\n.close {\n float: right;\n font-size: 21px;\n font-weight: bold;\n line-height: 1;\n color: #000000;\n text-shadow: 0 1px 0 #ffffff;\n opacity: 0.2;\n filter: alpha(opacity=20);\n}\n.close:hover,\n.close:focus {\n color: #000000;\n text-decoration: none;\n cursor: pointer;\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\nbutton.close {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n.modal-open {\n overflow: hidden;\n}\n.modal {\n display: none;\n overflow: hidden;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n -webkit-overflow-scrolling: touch;\n outline: 0;\n}\n.modal.fade .modal-dialog {\n -webkit-transform: translate(0, -25%);\n -ms-transform: translate(0, -25%);\n -o-transform: translate(0, -25%);\n transform: translate(0, -25%);\n -webkit-transition: -webkit-transform 0.3s ease-out;\n -moz-transition: -moz-transform 0.3s ease-out;\n -o-transition: -o-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n -webkit-transform: translate(0, 0);\n -ms-transform: translate(0, 0);\n -o-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n.modal-content {\n position: relative;\n background-color: #ffffff;\n border: 1px solid #999999;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n background-clip: padding-box;\n outline: 0;\n}\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000000;\n}\n.modal-backdrop.fade {\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.modal-backdrop.in {\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\n.modal-header {\n padding: 15px;\n border-bottom: 1px solid #e5e5e5;\n min-height: 16.42857143px;\n}\n.modal-header .close {\n margin-top: -2px;\n}\n.modal-title {\n margin: 0;\n line-height: 1.42857143;\n}\n.modal-body {\n position: relative;\n padding: 15px;\n}\n.modal-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0;\n}\n.modal-footer .btn-group .btn + .btn {\n margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n margin-left: 0;\n}\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n@media (min-width: 768px) {\n .modal-dialog {\n width: 600px;\n margin: 30px auto;\n }\n .modal-content {\n -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n }\n .modal-sm {\n width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg {\n width: 900px;\n }\n}\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 12px;\n font-weight: normal;\n line-height: 1.4;\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.tooltip.in {\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.tooltip.top {\n margin-top: -3px;\n padding: 5px 0;\n}\n.tooltip.right {\n margin-left: 3px;\n padding: 0 5px;\n}\n.tooltip.bottom {\n margin-top: 3px;\n padding: 5px 0;\n}\n.tooltip.left {\n margin-left: -3px;\n padding: 0 5px;\n}\n.tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #ffffff;\n text-align: center;\n text-decoration: none;\n background-color: #000000;\n border-radius: 4px;\n}\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000000;\n}\n.tooltip.top-left .tooltip-arrow {\n bottom: 0;\n right: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000000;\n}\n.tooltip.top-right .tooltip-arrow {\n bottom: 0;\n left: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000000;\n}\n.tooltip.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: #000000;\n}\n.tooltip.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: #000000;\n}\n.tooltip.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n top: 0;\n right: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n top: 0;\n left: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000000;\n}\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: none;\n max-width: 276px;\n padding: 1px;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n font-weight: normal;\n line-height: 1.42857143;\n text-align: left;\n background-color: #ffffff;\n background-clip: padding-box;\n border: 1px solid #cccccc;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n white-space: normal;\n}\n.popover.top {\n margin-top: -10px;\n}\n.popover.right {\n margin-left: 10px;\n}\n.popover.bottom {\n margin-top: 10px;\n}\n.popover.left {\n margin-left: -10px;\n}\n.popover-title {\n margin: 0;\n padding: 8px 14px;\n font-size: 14px;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-radius: 5px 5px 0 0;\n}\n.popover-content {\n padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.popover > .arrow {\n border-width: 11px;\n}\n.popover > .arrow:after {\n border-width: 10px;\n content: \"\";\n}\n.popover.top > .arrow {\n left: 50%;\n margin-left: -11px;\n border-bottom-width: 0;\n border-top-color: #999999;\n border-top-color: rgba(0, 0, 0, 0.25);\n bottom: -11px;\n}\n.popover.top > .arrow:after {\n content: \" \";\n bottom: 1px;\n margin-left: -10px;\n border-bottom-width: 0;\n border-top-color: #ffffff;\n}\n.popover.right > .arrow {\n top: 50%;\n left: -11px;\n margin-top: -11px;\n border-left-width: 0;\n border-right-color: #999999;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n.popover.right > .arrow:after {\n content: \" \";\n left: 1px;\n bottom: -10px;\n border-left-width: 0;\n border-right-color: #ffffff;\n}\n.popover.bottom > .arrow {\n left: 50%;\n margin-left: -11px;\n border-top-width: 0;\n border-bottom-color: #999999;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n top: -11px;\n}\n.popover.bottom > .arrow:after {\n content: \" \";\n top: 1px;\n margin-left: -10px;\n border-top-width: 0;\n border-bottom-color: #ffffff;\n}\n.popover.left > .arrow {\n top: 50%;\n right: -11px;\n margin-top: -11px;\n border-right-width: 0;\n border-left-color: #999999;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left > .arrow:after {\n content: \" \";\n right: 1px;\n border-right-width: 0;\n border-left-color: #ffffff;\n bottom: -10px;\n}\n.carousel {\n position: relative;\n}\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n}\n.carousel-inner > .item {\n display: none;\n position: relative;\n -webkit-transition: 0.6s ease-in-out left;\n -o-transition: 0.6s ease-in-out left;\n transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n .carousel-inner > .item {\n -webkit-transition: -webkit-transform 0.6s ease-in-out;\n -moz-transition: -moz-transform 0.6s ease-in-out;\n -o-transition: -o-transform 0.6s ease-in-out;\n transition: transform 0.6s ease-in-out;\n -webkit-backface-visibility: hidden;\n -moz-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-perspective: 1000;\n -moz-perspective: 1000;\n perspective: 1000;\n }\n .carousel-inner > .item.next,\n .carousel-inner > .item.active.right {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.prev,\n .carousel-inner > .item.active.left {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.next.left,\n .carousel-inner > .item.prev.right,\n .carousel-inner > .item.active {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n left: 0;\n }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n display: block;\n}\n.carousel-inner > .active {\n left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n}\n.carousel-inner > .next {\n left: 100%;\n}\n.carousel-inner > .prev {\n left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n left: 0;\n}\n.carousel-inner > .active.left {\n left: -100%;\n}\n.carousel-inner > .active.right {\n left: 100%;\n}\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 15%;\n opacity: 0.5;\n filter: alpha(opacity=50);\n font-size: 20px;\n color: #ffffff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-control.left {\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n}\n.carousel-control.right {\n left: auto;\n right: 0;\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n}\n.carousel-control:hover,\n.carousel-control:focus {\n outline: 0;\n color: #ffffff;\n text-decoration: none;\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n z-index: 5;\n display: inline-block;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n width: 20px;\n height: 20px;\n margin-top: -10px;\n line-height: 1;\n font-family: serif;\n}\n.carousel-control .icon-prev:before {\n content: '\\2039';\n}\n.carousel-control .icon-next:before {\n content: '\\203a';\n}\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n margin-left: -30%;\n padding-left: 0;\n list-style: none;\n text-align: center;\n}\n.carousel-indicators li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid #ffffff;\n border-radius: 10px;\n cursor: pointer;\n background-color: #000 \\9;\n background-color: rgba(0, 0, 0, 0);\n}\n.carousel-indicators .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: #ffffff;\n}\n.carousel-caption {\n position: absolute;\n left: 15%;\n right: 15%;\n bottom: 20px;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #ffffff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-prev,\n .carousel-control .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -15px;\n font-size: 30px;\n }\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .icon-prev {\n margin-left: -15px;\n }\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-next {\n margin-right: -15px;\n }\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n .carousel-indicators {\n bottom: 20px;\n }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-footer:before,\n.modal-footer:after {\n content: \" \";\n display: table;\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-footer:after {\n clear: both;\n}\n.center-block {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n.hidden {\n display: none !important;\n}\n.affix {\n position: fixed;\n}\n@-ms-viewport {\n width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n@media (max-width: 767px) {\n .visible-xs {\n display: block !important;\n }\n table.visible-xs {\n display: table;\n }\n tr.visible-xs {\n display: table-row !important;\n }\n th.visible-xs,\n td.visible-xs {\n display: table-cell !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-block {\n display: block !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline {\n display: inline !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm {\n display: block !important;\n }\n table.visible-sm {\n display: table;\n }\n tr.visible-sm {\n display: table-row !important;\n }\n th.visible-sm,\n td.visible-sm {\n display: table-cell !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-block {\n display: block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline {\n display: inline !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md {\n display: block !important;\n }\n table.visible-md {\n display: table;\n }\n tr.visible-md {\n display: table-row !important;\n }\n th.visible-md,\n td.visible-md {\n display: table-cell !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-block {\n display: block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline {\n display: inline !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg {\n display: block !important;\n }\n table.visible-lg {\n display: table;\n }\n tr.visible-lg {\n display: table-row !important;\n }\n th.visible-lg,\n td.visible-lg {\n display: table-cell !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-block {\n display: block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline {\n display: inline !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline-block {\n display: inline-block !important;\n }\n}\n@media (max-width: 767px) {\n .hidden-xs {\n display: none !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .hidden-sm {\n display: none !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .hidden-md {\n display: none !important;\n }\n}\n@media (min-width: 1200px) {\n .hidden-lg {\n display: none !important;\n }\n}\n.visible-print {\n display: none !important;\n}\n@media print {\n .visible-print {\n display: block !important;\n }\n table.visible-print {\n display: table;\n }\n tr.visible-print {\n display: table-row !important;\n }\n th.visible-print,\n td.visible-print {\n display: table-cell !important;\n }\n}\n.visible-print-block {\n display: none !important;\n}\n@media print {\n .visible-print-block {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n}\n@media print {\n .visible-print-inline {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n}\n@media print {\n .visible-print-inline-block {\n display: inline-block !important;\n }\n}\n@media print {\n .hidden-print {\n display: none !important;\n }\n}\n/*# sourceMappingURL=bootstrap.css.map */","/*! normalize.css v3.0.2 | MIT License | git.io/normalize */\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prevent iOS text size adjust after orientation change, without disabling\n// user zoom.\n//\n\nhtml {\n font-family: sans-serif; // 1\n -ms-text-size-adjust: 100%; // 2\n -webkit-text-size-adjust: 100%; // 2\n}\n\n//\n// Remove default margin.\n//\n\nbody {\n margin: 0;\n}\n\n// HTML5 display definitions\n// ==========================================================================\n\n//\n// Correct `block` display not defined for any HTML5 element in IE 8/9.\n// Correct `block` display not defined for `details` or `summary` in IE 10/11\n// and Firefox.\n// Correct `block` display not defined for `main` in IE 11.\n//\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\n\n//\n// 1. Correct `inline-block` display not defined in IE 8/9.\n// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n//\n\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block; // 1\n vertical-align: baseline; // 2\n}\n\n//\n// Prevent modern browsers from displaying `audio` without controls.\n// Remove excess height in iOS 5 devices.\n//\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n//\n// Address `[hidden]` styling not present in IE 8/9/10.\n// Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.\n//\n\n[hidden],\ntemplate {\n display: none;\n}\n\n// Links\n// ==========================================================================\n\n//\n// Remove the gray background color from active links in IE 10.\n//\n\na {\n background-color: transparent;\n}\n\n//\n// Improve readability when focused and also mouse hovered in all browsers.\n//\n\na:active,\na:hover {\n outline: 0;\n}\n\n// Text-level semantics\n// ==========================================================================\n\n//\n// Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n//\n\nabbr[title] {\n border-bottom: 1px dotted;\n}\n\n//\n// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n//\n\nb,\nstrong {\n font-weight: bold;\n}\n\n//\n// Address styling not present in Safari and Chrome.\n//\n\ndfn {\n font-style: italic;\n}\n\n//\n// Address variable `h1` font-size and margin within `section` and `article`\n// contexts in Firefox 4+, Safari, and Chrome.\n//\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n//\n// Address styling not present in IE 8/9.\n//\n\nmark {\n background: #ff0;\n color: #000;\n}\n\n//\n// Address inconsistent and variable font size in all browsers.\n//\n\nsmall {\n font-size: 80%;\n}\n\n//\n// Prevent `sub` and `sup` affecting `line-height` in all browsers.\n//\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\n// Embedded content\n// ==========================================================================\n\n//\n// Remove border when inside `a` element in IE 8/9/10.\n//\n\nimg {\n border: 0;\n}\n\n//\n// Correct overflow not hidden in IE 9/10/11.\n//\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\n// Grouping content\n// ==========================================================================\n\n//\n// Address margin not present in IE 8/9 and Safari.\n//\n\nfigure {\n margin: 1em 40px;\n}\n\n//\n// Address differences between Firefox and other browsers.\n//\n\nhr {\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n height: 0;\n}\n\n//\n// Contain overflow in all browsers.\n//\n\npre {\n overflow: auto;\n}\n\n//\n// Address odd `em`-unit font size rendering in all browsers.\n//\n\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n// Forms\n// ==========================================================================\n\n//\n// Known limitation: by default, Chrome and Safari on OS X allow very limited\n// styling of `select`, unless a `border` property is set.\n//\n\n//\n// 1. Correct color not being inherited.\n// Known issue: affects color of disabled elements.\n// 2. Correct font properties not being inherited.\n// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n//\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit; // 1\n font: inherit; // 2\n margin: 0; // 3\n}\n\n//\n// Address `overflow` set to `hidden` in IE 8/9/10/11.\n//\n\nbutton {\n overflow: visible;\n}\n\n//\n// Address inconsistent `text-transform` inheritance for `button` and `select`.\n// All other form control elements do not inherit `text-transform` values.\n// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n// Correct `select` style inheritance in Firefox.\n//\n\nbutton,\nselect {\n text-transform: none;\n}\n\n//\n// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n// and `video` controls.\n// 2. Correct inability to style clickable `input` types in iOS.\n// 3. Improve usability and consistency of cursor style between image-type\n// `input` and others.\n//\n\nbutton,\nhtml input[type=\"button\"], // 1\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button; // 2\n cursor: pointer; // 3\n}\n\n//\n// Re-set default cursor for disabled elements.\n//\n\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n//\n// Remove inner padding and border in Firefox 4+.\n//\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n//\n// Address Firefox 4+ setting `line-height` on `input` using `!important` in\n// the UA stylesheet.\n//\n\ninput {\n line-height: normal;\n}\n\n//\n// It's recommended that you don't attempt to style these elements.\n// Firefox's implementation doesn't respect box-sizing, padding, or width.\n//\n// 1. Address box sizing set to `content-box` in IE 8/9/10.\n// 2. Remove excess padding in IE 8/9/10.\n//\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; // 1\n padding: 0; // 2\n}\n\n//\n// Fix the cursor style for Chrome's increment/decrement buttons. For certain\n// `font-size` values of the `input`, it causes the cursor style of the\n// decrement button to change from `default` to `text`.\n//\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n//\n// 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n// 2. Address `box-sizing` set to `border-box` in Safari and Chrome\n// (include `-moz` to future-proof).\n//\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield; // 1\n -moz-box-sizing: content-box;\n -webkit-box-sizing: content-box; // 2\n box-sizing: content-box;\n}\n\n//\n// Remove inner padding and search cancel button in Safari and Chrome on OS X.\n// Safari (but not Chrome) clips the cancel button when the search input has\n// padding (and `textfield` appearance).\n//\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// Define consistent border, margin, and padding.\n//\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\n//\n// 1. Correct `color` not being inherited in IE 8/9/10/11.\n// 2. Remove padding so people aren't caught out if they zero out fieldsets.\n//\n\nlegend {\n border: 0; // 1\n padding: 0; // 2\n}\n\n//\n// Remove default vertical scrollbar in IE 8/9/10/11.\n//\n\ntextarea {\n overflow: auto;\n}\n\n//\n// Don't inherit the `font-weight` (applied by a rule above).\n// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n//\n\noptgroup {\n font-weight: bold;\n}\n\n// Tables\n// ==========================================================================\n\n//\n// Remove most spacing between table cells.\n//\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ntd,\nth {\n padding: 0;\n}\n","/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request: h5bp.com/r\n// ==========================================================================\n\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important; // Black prints faster: h5bp.com/s\n box-shadow: none !important;\n text-shadow: none !important;\n }\n\n a,\n a:visited {\n text-decoration: underline;\n }\n\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n\n // Don't show links that are fragment identifiers,\n // or use the `javascript:` pseudo protocol\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n\n thead {\n display: table-header-group; // h5bp.com/t\n }\n\n tr,\n img {\n page-break-inside: avoid;\n }\n\n img {\n max-width: 100% !important;\n }\n\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n\n h2,\n h3 {\n page-break-after: avoid;\n }\n\n // Bootstrap specific changes start\n //\n // Chrome (OSX) fix for https://github.com/twbs/bootstrap/issues/11245\n // Once fixed, we can just straight up remove this.\n select {\n background: #fff !important;\n }\n\n // Bootstrap components\n .navbar {\n display: none;\n }\n .btn,\n .dropup > .btn {\n > .caret {\n border-top-color: #000 !important;\n }\n }\n .label {\n border: 1px solid #000;\n }\n\n .table {\n border-collapse: collapse !important;\n\n td,\n th {\n background-color: #fff !important;\n }\n }\n .table-bordered {\n th,\n td {\n border: 1px solid #ddd !important;\n }\n }\n\n // Bootstrap specific changes end\n}\n","//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n// <a href=\"#\"><span class=\"glyphicon glyphicon-star\"></span> Star</a>\n\n// Import the fonts\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('@{icon-font-path}@{icon-font-name}.eot');\n src: url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype'),\n url('@{icon-font-path}@{icon-font-name}.woff2') format('woff2'),\n url('@{icon-font-path}@{icon-font-name}.woff') format('woff'),\n url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype'),\n url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg');\n}\n\n// Catchall baseclass\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk { &:before { content: \"\\2a\"; } }\n.glyphicon-plus { &:before { content: \"\\2b\"; } }\n.glyphicon-euro,\n.glyphicon-eur { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil { &:before { content: \"\\270f\"; } }\n.glyphicon-glass { &:before { content: \"\\e001\"; } }\n.glyphicon-music { &:before { content: \"\\e002\"; } }\n.glyphicon-search { &:before { content: \"\\e003\"; } }\n.glyphicon-heart { &:before { content: \"\\e005\"; } }\n.glyphicon-star { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty { &:before { content: \"\\e007\"; } }\n.glyphicon-user { &:before { content: \"\\e008\"; } }\n.glyphicon-film { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large { &:before { content: \"\\e010\"; } }\n.glyphicon-th { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list { &:before { content: \"\\e012\"; } }\n.glyphicon-ok { &:before { content: \"\\e013\"; } }\n.glyphicon-remove { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out { &:before { content: \"\\e016\"; } }\n.glyphicon-off { &:before { content: \"\\e017\"; } }\n.glyphicon-signal { &:before { content: \"\\e018\"; } }\n.glyphicon-cog { &:before { content: \"\\e019\"; } }\n.glyphicon-trash { &:before { content: \"\\e020\"; } }\n.glyphicon-home { &:before { content: \"\\e021\"; } }\n.glyphicon-file { &:before { content: \"\\e022\"; } }\n.glyphicon-time { &:before { content: \"\\e023\"; } }\n.glyphicon-road { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt { &:before { content: \"\\e025\"; } }\n.glyphicon-download { &:before { content: \"\\e026\"; } }\n.glyphicon-upload { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt { &:before { content: \"\\e032\"; } }\n.glyphicon-lock { &:before { content: \"\\e033\"; } }\n.glyphicon-flag { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode { &:before { content: \"\\e040\"; } }\n.glyphicon-tag { &:before { content: \"\\e041\"; } }\n.glyphicon-tags { &:before { content: \"\\e042\"; } }\n.glyphicon-book { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark { &:before { content: \"\\e044\"; } }\n.glyphicon-print { &:before { content: \"\\e045\"; } }\n.glyphicon-camera { &:before { content: \"\\e046\"; } }\n.glyphicon-font { &:before { content: \"\\e047\"; } }\n.glyphicon-bold { &:before { content: \"\\e048\"; } }\n.glyphicon-italic { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify { &:before { content: \"\\e055\"; } }\n.glyphicon-list { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video { &:before { content: \"\\e059\"; } }\n.glyphicon-picture { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust { &:before { content: \"\\e063\"; } }\n.glyphicon-tint { &:before { content: \"\\e064\"; } }\n.glyphicon-edit { &:before { content: \"\\e065\"; } }\n.glyphicon-share { &:before { content: \"\\e066\"; } }\n.glyphicon-check { &:before { content: \"\\e067\"; } }\n.glyphicon-move { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward { &:before { content: \"\\e070\"; } }\n.glyphicon-backward { &:before { content: \"\\e071\"; } }\n.glyphicon-play { &:before { content: \"\\e072\"; } }\n.glyphicon-pause { &:before { content: \"\\e073\"; } }\n.glyphicon-stop { &:before { content: \"\\e074\"; } }\n.glyphicon-forward { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward { &:before { content: \"\\e077\"; } }\n.glyphicon-eject { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign { &:before { content: \"\\e101\"; } }\n.glyphicon-gift { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf { &:before { content: \"\\e103\"; } }\n.glyphicon-fire { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign { &:before { content: \"\\e107\"; } }\n.glyphicon-plane { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar { &:before { content: \"\\e109\"; } }\n.glyphicon-random { &:before { content: \"\\e110\"; } }\n.glyphicon-comment { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn { &:before { content: \"\\e122\"; } }\n.glyphicon-bell { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down { &:before { content: \"\\e134\"; } }\n.glyphicon-globe { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks { &:before { content: \"\\e137\"; } }\n.glyphicon-filter { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty { &:before { content: \"\\e143\"; } }\n.glyphicon-link { &:before { content: \"\\e144\"; } }\n.glyphicon-phone { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin { &:before { content: \"\\e146\"; } }\n.glyphicon-usd { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp { &:before { content: \"\\e149\"; } }\n.glyphicon-sort { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked { &:before { content: \"\\e157\"; } }\n.glyphicon-expand { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in { &:before { content: \"\\e161\"; } }\n.glyphicon-flash { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window { &:before { content: \"\\e164\"; } }\n.glyphicon-record { &:before { content: \"\\e165\"; } }\n.glyphicon-save { &:before { content: \"\\e166\"; } }\n.glyphicon-open { &:before { content: \"\\e167\"; } }\n.glyphicon-saved { &:before { content: \"\\e168\"; } }\n.glyphicon-import { &:before { content: \"\\e169\"; } }\n.glyphicon-export { &:before { content: \"\\e170\"; } }\n.glyphicon-send { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery { &:before { content: \"\\e179\"; } }\n.glyphicon-header { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt { &:before { content: \"\\e183\"; } }\n.glyphicon-tower { &:before { content: \"\\e184\"; } }\n.glyphicon-stats { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1 { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1 { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1 { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous { &:before { content: \"\\e200\"; } }\n.glyphicon-cd { &:before { content: \"\\e201\"; } }\n.glyphicon-save-file { &:before { content: \"\\e202\"; } }\n.glyphicon-open-file { &:before { content: \"\\e203\"; } }\n.glyphicon-level-up { &:before { content: \"\\e204\"; } }\n.glyphicon-copy { &:before { content: \"\\e205\"; } }\n.glyphicon-paste { &:before { content: \"\\e206\"; } }\n// The following 2 Glyphicons are omitted for the time being because\n// they currently use Unicode codepoints that are outside the\n// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle\n// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.\n// Notably, the bug affects some older versions of the Android Browser.\n// More info: https://github.com/twbs/bootstrap/issues/10106\n// .glyphicon-door { &:before { content: \"\\1f6aa\"; } }\n// .glyphicon-key { &:before { content: \"\\1f511\"; } }\n.glyphicon-alert { &:before { content: \"\\e209\"; } }\n.glyphicon-equalizer { &:before { content: \"\\e210\"; } }\n.glyphicon-king { &:before { content: \"\\e211\"; } }\n.glyphicon-queen { &:before { content: \"\\e212\"; } }\n.glyphicon-pawn { &:before { content: \"\\e213\"; } }\n.glyphicon-bishop { &:before { content: \"\\e214\"; } }\n.glyphicon-knight { &:before { content: \"\\e215\"; } }\n.glyphicon-baby-formula { &:before { content: \"\\e216\"; } }\n.glyphicon-tent { &:before { content: \"\\26fa\"; } }\n.glyphicon-blackboard { &:before { content: \"\\e218\"; } }\n.glyphicon-bed { &:before { content: \"\\e219\"; } }\n.glyphicon-apple { &:before { content: \"\\f8ff\"; } }\n.glyphicon-erase { &:before { content: \"\\e221\"; } }\n.glyphicon-hourglass { &:before { content: \"\\231b\"; } }\n.glyphicon-lamp { &:before { content: \"\\e223\"; } }\n.glyphicon-duplicate { &:before { content: \"\\e224\"; } }\n.glyphicon-piggy-bank { &:before { content: \"\\e225\"; } }\n.glyphicon-scissors { &:before { content: \"\\e226\"; } }\n.glyphicon-bitcoin { &:before { content: \"\\e227\"; } }\n.glyphicon-btc { &:before { content: \"\\e227\"; } }\n.glyphicon-xbt { &:before { content: \"\\e227\"; } }\n.glyphicon-yen { &:before { content: \"\\00a5\"; } }\n.glyphicon-jpy { &:before { content: \"\\00a5\"; } }\n.glyphicon-ruble { &:before { content: \"\\20bd\"; } }\n.glyphicon-rub { &:before { content: \"\\20bd\"; } }\n.glyphicon-scale { &:before { content: \"\\e230\"; } }\n.glyphicon-ice-lolly { &:before { content: \"\\e231\"; } }\n.glyphicon-ice-lolly-tasted { &:before { content: \"\\e232\"; } }\n.glyphicon-education { &:before { content: \"\\e233\"; } }\n.glyphicon-option-horizontal { &:before { content: \"\\e234\"; } }\n.glyphicon-option-vertical { &:before { content: \"\\e235\"; } }\n.glyphicon-menu-hamburger { &:before { content: \"\\e236\"; } }\n.glyphicon-modal-window { &:before { content: \"\\e237\"; } }\n.glyphicon-oil { &:before { content: \"\\e238\"; } }\n.glyphicon-grain { &:before { content: \"\\e239\"; } }\n.glyphicon-sunglasses { &:before { content: \"\\e240\"; } }\n.glyphicon-text-size { &:before { content: \"\\e241\"; } }\n.glyphicon-text-color { &:before { content: \"\\e242\"; } }\n.glyphicon-text-background { &:before { content: \"\\e243\"; } }\n.glyphicon-object-align-top { &:before { content: \"\\e244\"; } }\n.glyphicon-object-align-bottom { &:before { content: \"\\e245\"; } }\n.glyphicon-object-align-horizontal{ &:before { content: \"\\e246\"; } }\n.glyphicon-object-align-left { &:before { content: \"\\e247\"; } }\n.glyphicon-object-align-vertical { &:before { content: \"\\e248\"; } }\n.glyphicon-object-align-right { &:before { content: \"\\e249\"; } }\n.glyphicon-triangle-right { &:before { content: \"\\e250\"; } }\n.glyphicon-triangle-left { &:before { content: \"\\e251\"; } }\n.glyphicon-triangle-bottom { &:before { content: \"\\e252\"; } }\n.glyphicon-triangle-top { &:before { content: \"\\e253\"; } }\n.glyphicon-console { &:before { content: \"\\e254\"; } }\n.glyphicon-superscript { &:before { content: \"\\e255\"; } }\n.glyphicon-subscript { &:before { content: \"\\e256\"; } }\n.glyphicon-menu-left { &:before { content: \"\\e257\"; } }\n.glyphicon-menu-right { &:before { content: \"\\e258\"; } }\n.glyphicon-menu-down { &:before { content: \"\\e259\"; } }\n.glyphicon-menu-up { &:before { content: \"\\e260\"; } }\n","//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n//\n// Heads up! This reset may cause conflicts with some third-party widgets.\n// For recommendations on resolving such conflicts, see\n// http://getbootstrap.com/getting-started/#third-box-sizing\n* {\n .box-sizing(border-box);\n}\n*:before,\n*:after {\n .box-sizing(border-box);\n}\n\n\n// Body reset\n\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n\nbody {\n font-family: @font-family-base;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @text-color;\n background-color: @body-bg;\n}\n\n// Reset fonts for relevant elements\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\n\n// Links\n\na {\n color: @link-color;\n text-decoration: none;\n\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n }\n\n &:focus {\n .tab-focus();\n }\n}\n\n\n// Figures\n//\n// We reset this here because previously Normalize had no `figure` margins. This\n// ensures we don't break anyone's use of the element.\n\nfigure {\n margin: 0;\n}\n\n\n// Images\n\nimg {\n vertical-align: middle;\n}\n\n// Responsive images (ensure images don't scale beyond their parents)\n.img-responsive {\n .img-responsive();\n}\n\n// Rounded corners\n.img-rounded {\n border-radius: @border-radius-large;\n}\n\n// Image thumbnails\n//\n// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.\n.img-thumbnail {\n padding: @thumbnail-padding;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(all .2s ease-in-out);\n\n // Keep them at most 100% wide\n .img-responsive(inline-block);\n}\n\n// Perfect circle\n.img-circle {\n border-radius: 50%; // set radius in percents\n}\n\n\n// Horizontal rules\n\nhr {\n margin-top: @line-height-computed;\n margin-bottom: @line-height-computed;\n border: 0;\n border-top: 1px solid @hr-border;\n}\n\n\n// Only display content to screen readers\n//\n// See: http://a11yproject.com/posts/how-to-hide-content/\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0,0,0,0);\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n// Useful for \"Skip to main content\" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n// Credit: HTML5 Boilerplate\n\n.sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n }\n}\n\n\n// iOS \"clickable elements\" fix for role=\"button\"\n//\n// Fixes \"clickability\" issue (and more generally, the firing of events such as focus as well)\n// for traditionally non-focusable elements with role=\"button\"\n// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n// Upstream patch for normalize.css submitted: https://github.com/necolas/normalize.css/pull/379 - remove this fix once that is merged\n\n[role=\"button\"] {\n cursor: pointer;\n}","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They will be removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility){\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// WebKit-style focus\n\n.tab-focus() {\n // Default\n outline: thin dotted;\n // WebKit\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n.img-responsive(@display: block) {\n display: @display;\n max-width: 100%; // Part 1: Set a maximum relative to the parent\n height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size. Note that the\n// spelling of `min--moz-device-pixel-ratio` is intentional.\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n background-image: url(\"@{file-1x}\");\n\n @media\n only screen and (-webkit-min-device-pixel-ratio: 2),\n only screen and ( min--moz-device-pixel-ratio: 2),\n only screen and ( -o-min-device-pixel-ratio: 2/1),\n only screen and ( min-device-pixel-ratio: 2),\n only screen and ( min-resolution: 192dpi),\n only screen and ( min-resolution: 2dppx) {\n background-image: url(\"@{file-2x}\");\n background-size: @width-1x @height-1x;\n }\n}\n","//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n font-family: @headings-font-family;\n font-weight: @headings-font-weight;\n line-height: @headings-line-height;\n color: @headings-color;\n\n small,\n .small {\n font-weight: normal;\n line-height: 1;\n color: @headings-small-color;\n }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n margin-top: @line-height-computed;\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 65%;\n }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n margin-top: (@line-height-computed / 2);\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 75%;\n }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n margin-bottom: @line-height-computed;\n font-size: floor((@font-size-base * 1.15));\n font-weight: 300;\n line-height: 1.4;\n\n @media (min-width: @screen-sm-min) {\n font-size: (@font-size-base * 1.5);\n }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: (12px small font / 14px base font) * 100% = about 85%\nsmall,\n.small {\n font-size: floor((100% * @font-size-small / @font-size-base));\n}\n\nmark,\n.mark {\n background-color: @state-warning-bg;\n padding: .2em;\n}\n\n// Alignment\n.text-left { text-align: left; }\n.text-right { text-align: right; }\n.text-center { text-align: center; }\n.text-justify { text-align: justify; }\n.text-nowrap { white-space: nowrap; }\n\n// Transformation\n.text-lowercase { text-transform: lowercase; }\n.text-uppercase { text-transform: uppercase; }\n.text-capitalize { text-transform: capitalize; }\n\n// Contextual colors\n.text-muted {\n color: @text-muted;\n}\n.text-primary {\n .text-emphasis-variant(@brand-primary);\n}\n.text-success {\n .text-emphasis-variant(@state-success-text);\n}\n.text-info {\n .text-emphasis-variant(@state-info-text);\n}\n.text-warning {\n .text-emphasis-variant(@state-warning-text);\n}\n.text-danger {\n .text-emphasis-variant(@state-danger-text);\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n // Given the contrast here, this is the only class to have its color inverted\n // automatically.\n color: #fff;\n .bg-variant(@brand-primary);\n}\n.bg-success {\n .bg-variant(@state-success-bg);\n}\n.bg-info {\n .bg-variant(@state-info-bg);\n}\n.bg-warning {\n .bg-variant(@state-warning-bg);\n}\n.bg-danger {\n .bg-variant(@state-danger-bg);\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n padding-bottom: ((@line-height-computed / 2) - 1);\n margin: (@line-height-computed * 2) 0 @line-height-computed;\n border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// -------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n margin-top: 0;\n margin-bottom: (@line-height-computed / 2);\n ul,\n ol {\n margin-bottom: 0;\n }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n .list-unstyled();\n margin-left: -5px;\n\n > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n }\n}\n\n// Description Lists\ndl {\n margin-top: 0; // Remove browser default\n margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n line-height: @line-height-base;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n.dl-horizontal {\n dd {\n &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n }\n\n @media (min-width: @grid-float-breakpoint) {\n dt {\n float: left;\n width: (@dl-horizontal-offset - 20);\n clear: left;\n text-align: right;\n .text-overflow();\n }\n dd {\n margin-left: @dl-horizontal-offset;\n }\n }\n}\n\n\n// Misc\n// -------------------------\n\n// Abbreviations and acronyms\nabbr[title],\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted @abbr-border-color;\n}\n.initialism {\n font-size: 90%;\n .text-uppercase();\n}\n\n// Blockquotes\nblockquote {\n padding: (@line-height-computed / 2) @line-height-computed;\n margin: 0 0 @line-height-computed;\n font-size: @blockquote-font-size;\n border-left: 5px solid @blockquote-border-color;\n\n p,\n ul,\n ol {\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n // Note: Deprecated small and .small as of v3.1.0\n // Context: https://github.com/twbs/bootstrap/issues/11660\n footer,\n small,\n .small {\n display: block;\n font-size: 80%; // back to default font-size\n line-height: @line-height-base;\n color: @blockquote-small-color;\n\n &:before {\n content: '\\2014 \\00A0'; // em dash, nbsp\n }\n }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid @blockquote-border-color;\n border-left: 0;\n text-align: right;\n\n // Account for citation\n footer,\n small,\n .small {\n &:before { content: ''; }\n &:after {\n content: '\\00A0 \\2014'; // nbsp, em dash\n }\n }\n}\n\n// Addresses\naddress {\n margin-bottom: @line-height-computed;\n font-style: normal;\n line-height: @line-height-base;\n}\n","// Typography\n\n.text-emphasis-variant(@color) {\n color: @color;\n a&:hover {\n color: darken(@color, 10%);\n }\n}\n","// Contextual backgrounds\n\n.bg-variant(@color) {\n background-color: @color;\n a&:hover {\n background-color: darken(@color, 10%);\n }\n}\n","// Text overflow\n// Requires inline-block or block for proper styling\n\n.text-overflow() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n","//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: @code-color;\n background-color: @code-bg;\n border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: @kbd-color;\n background-color: @kbd-bg;\n border-radius: @border-radius-small;\n box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);\n\n kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n }\n}\n\n// Blocks of code\npre {\n display: block;\n padding: ((@line-height-computed - 1) / 2);\n margin: 0 0 (@line-height-computed / 2);\n font-size: (@font-size-base - 1); // 14px to 13px\n line-height: @line-height-base;\n word-break: break-all;\n word-wrap: break-word;\n color: @pre-color;\n background-color: @pre-bg;\n border: 1px solid @pre-border-color;\n border-radius: @border-radius-base;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: @pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n .container-fixed();\n\n @media (min-width: @screen-sm-min) {\n width: @container-sm;\n }\n @media (min-width: @screen-md-min) {\n width: @container-md;\n }\n @media (min-width: @screen-lg-min) {\n width: @container-lg;\n }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n .make-row();\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n .make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n .make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n .make-grid(lg);\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n// Centered container element\n.container-fixed(@gutter: @grid-gutter-width) {\n margin-right: auto;\n margin-left: auto;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n margin-left: (@gutter / -2);\n margin-right: (@gutter / -2);\n &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n float: left;\n width: percentage((@columns / @grid-columns));\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n margin-left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-push(@columns) {\n left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-pull(@columns) {\n right: percentage((@columns / @grid-columns));\n}\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-sm-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-offset(@columns) {\n @media (min-width: @screen-sm-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-push(@columns) {\n @media (min-width: @screen-sm-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-pull(@columns) {\n @media (min-width: @screen-sm-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-md-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-offset(@columns) {\n @media (min-width: @screen-md-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-push(@columns) {\n @media (min-width: @screen-md-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-pull(@columns) {\n @media (min-width: @screen-md-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-lg-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-offset(@columns) {\n @media (min-width: @screen-lg-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-push(@columns) {\n @media (min-width: @screen-lg-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-pull(@columns) {\n @media (min-width: @screen-lg-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n // Common styles for all sizes of grid columns, widths 1-12\n .col(@index) { // initial\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n position: relative;\n // Prevent columns from collapsing when empty\n min-height: 1px;\n // Inner gutter via padding\n padding-left: (@grid-gutter-width / 2);\n padding-right: (@grid-gutter-width / 2);\n }\n }\n .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n .col(@index) { // initial\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n float: left;\n }\n }\n .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n .col-@{class}-@{index} {\n width: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {\n .col-@{class}-push-@{index} {\n left: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {\n .col-@{class}-push-0 {\n left: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {\n .col-@{class}-pull-@{index} {\n right: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {\n .col-@{class}-pull-0 {\n right: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n .col-@{class}-offset-@{index} {\n margin-left: percentage((@index / @grid-columns));\n }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n .calc-grid-column(@index, @class, @type);\n // next iteration\n .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n .float-grid-columns(@class);\n .loop-grid-columns(@grid-columns, @class, width);\n .loop-grid-columns(@grid-columns, @class, pull);\n .loop-grid-columns(@grid-columns, @class, push);\n .loop-grid-columns(@grid-columns, @class, offset);\n}\n","//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n background-color: @table-bg;\n}\ncaption {\n padding-top: @table-cell-padding;\n padding-bottom: @table-cell-padding;\n color: @text-muted;\n text-align: left;\n}\nth {\n text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: @line-height-computed;\n // Cells\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-cell-padding;\n line-height: @line-height-base;\n vertical-align: top;\n border-top: 1px solid @table-border-color;\n }\n }\n }\n // Bottom align for column headings\n > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid @table-border-color;\n }\n // Remove top border from thead by default\n > caption + thead,\n > colgroup + thead,\n > thead:first-child {\n > tr:first-child {\n > th,\n > td {\n border-top: 0;\n }\n }\n }\n // Account for multiple tbody instances\n > tbody + tbody {\n border-top: 2px solid @table-border-color;\n }\n\n // Nesting\n .table {\n background-color: @body-bg;\n }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-condensed-cell-padding;\n }\n }\n }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n border: 1px solid @table-border-color;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n border: 1px solid @table-border-color;\n }\n }\n }\n > thead > tr {\n > th,\n > td {\n border-bottom-width: 2px;\n }\n }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n > tbody > tr:nth-of-type(odd) {\n background-color: @table-bg-accent;\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n > tbody > tr:hover {\n background-color: @table-bg-hover;\n }\n}\n\n\n// Table cell sizing\n//\n// Reset default table behavior\n\ntable col[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-column;\n}\ntable {\n td,\n th {\n &[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-cell;\n }\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(info; @state-info-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)\n\n @media screen and (max-width: @screen-xs-max) {\n width: 100%;\n margin-bottom: (@line-height-computed * 0.75);\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid @table-border-color;\n\n // Tighten up spacing\n > .table {\n margin-bottom: 0;\n\n // Ensure the content doesn't wrap\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n white-space: nowrap;\n }\n }\n }\n }\n\n // Special overrides for the bordered tables\n > .table-bordered {\n border: 0;\n\n // Nuke the appropriate borders so that the parent can handle them\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n\n // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n // chances are there will be only one `tr` in a `thead` and that would\n // remove the border altogether.\n > tbody,\n > tfoot {\n > tr:last-child {\n > th,\n > td {\n border-bottom: 0;\n }\n }\n }\n\n }\n }\n}\n","// Tables\n\n.table-row-variant(@state; @background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table > thead > tr,\n .table > tbody > tr,\n .table > tfoot > tr {\n > td.@{state},\n > th.@{state},\n &.@{state} > td,\n &.@{state} > th {\n background-color: @background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover > tbody > tr {\n > td.@{state}:hover,\n > th.@{state}:hover,\n &.@{state}:hover > td,\n &:hover > .@{state},\n &.@{state}:hover > th {\n background-color: darken(@background, 5%);\n }\n }\n}\n","//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n // Chrome and Firefox set a `min-width: min-content;` on fieldsets,\n // so we reset that to ensure it behaves more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359.\n min-width: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: @line-height-computed;\n font-size: (@font-size-base * 1.5);\n line-height: inherit;\n color: @legend-color;\n border: 0;\n border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n display: inline-block;\n max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)\n margin-bottom: 5px;\n font-weight: bold;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\n// Override content-box in Normalize (* isn't specific enough)\ninput[type=\"search\"] {\n .box-sizing(border-box);\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9; // IE8-9\n line-height: normal;\n}\n\n// Set the height of file controls to match text inputs\ninput[type=\"file\"] {\n display: block;\n}\n\n// Make range inputs behave like textual form controls\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n height: auto;\n}\n\n// Focus for file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n .tab-focus();\n}\n\n// Adjust output element\noutput {\n display: block;\n padding-top: (@padding-base-vertical + 1);\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n display: block;\n width: 100%;\n height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n background-color: @input-bg;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid @input-border;\n border-radius: @input-border-radius; // Note: This has no effect on <select>s in some browsers, due to the limited stylability of <select>s in CSS.\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n // Customize the `:focus` state to imitate native WebKit styles.\n .form-control-focus();\n\n // Placeholder\n .placeholder();\n\n // Disabled and read-only inputs\n //\n // HTML5 says that controls under a fieldset > legend:first-child won't be\n // disabled if the fieldset is disabled. Due to implementation difficulty, we\n // don't honor that edge case; we style them as disabled anyway.\n &[disabled],\n &[readonly],\n fieldset[disabled] & {\n background-color: @input-bg-disabled;\n opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655\n }\n\n &[disabled],\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n }\n\n // Reset height for `textarea`s\n textarea& {\n height: auto;\n }\n}\n\n\n// Search inputs in iOS\n//\n// This overrides the extra rounded corners on search inputs in iOS so that our\n// `.form-control` class can properly style them. Note that this cannot simply\n// be added to `.form-control` as it's not specific enough. For details, see\n// https://github.com/twbs/bootstrap/issues/11586.\n\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n\n\n// Special styles for iOS temporal inputs\n//\n// In Mobile Safari, setting `display: block` on temporal inputs causes the\n// text within the input to become vertically misaligned. As a workaround, we\n// set a pixel line-height that matches the given height of the input, but only\n// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848\n\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"],\n input[type=\"time\"],\n input[type=\"datetime-local\"],\n input[type=\"month\"] {\n line-height: @input-height-base;\n\n &.input-sm,\n .input-group-sm & {\n line-height: @input-height-small;\n }\n\n &.input-lg,\n .input-group-lg & {\n line-height: @input-height-large;\n }\n }\n}\n\n\n// Form groups\n//\n// Designed to help with the organization and spacing of vertical forms. For\n// horizontal forms, use the predefined grid classes.\n\n.form-group {\n margin-bottom: @form-group-margin-bottom;\n}\n\n\n// Checkboxes and radios\n//\n// Indent the labels to position radios/checkboxes as hanging controls.\n\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n\n label {\n min-height: @line-height-computed; // Ensure the input doesn't jump when there is no text\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n }\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-left: -20px;\n margin-top: 4px \\9;\n}\n\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing\n}\n\n// Radios and checkboxes on same line\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px; // space out consecutive inline controls\n}\n\n// Apply same disabled cursor tweak as for inputs\n// Some special care is needed because <label>s don't inherit their parent's `cursor`.\n//\n// Note: Neither radios nor checkboxes can be readonly.\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n &[disabled],\n &.disabled,\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n }\n}\n// These classes are used directly on <label>s\n.radio-inline,\n.checkbox-inline {\n &.disabled,\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n }\n}\n// These classes are used on elements with <label> descendants\n.radio,\n.checkbox {\n &.disabled,\n fieldset[disabled] & {\n label {\n cursor: @cursor-disabled;\n }\n }\n}\n\n\n// Static form control text\n//\n// Apply class to a `p` element to make any string of text align with labels in\n// a horizontal form layout.\n\n.form-control-static {\n // Size it appropriately next to real form controls\n padding-top: (@padding-base-vertical + 1);\n padding-bottom: (@padding-base-vertical + 1);\n // Remove default margin from `p`\n margin-bottom: 0;\n min-height: (@line-height-computed + @font-size-base);\n\n &.input-lg,\n &.input-sm {\n padding-left: 0;\n padding-right: 0;\n }\n}\n\n\n// Form control sizing\n//\n// Build on `.form-control` with modifier classes to decrease or increase the\n// height and font-size of form controls.\n//\n// The `.form-group-* form-control` variations are sadly duplicated to avoid the\n// issue documented in https://github.com/twbs/bootstrap/issues/15074.\n\n.input-sm {\n .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @input-border-radius-small);\n}\n.form-group-sm {\n .form-control {\n .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @input-border-radius-small);\n }\n .form-control-static {\n height: @input-height-small;\n padding: @padding-small-vertical @padding-small-horizontal;\n font-size: @font-size-small;\n line-height: @line-height-small;\n min-height: (@line-height-computed + @font-size-small);\n }\n}\n\n.input-lg {\n .input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @input-border-radius-large);\n}\n.form-group-lg {\n .form-control {\n .input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @input-border-radius-large);\n }\n .form-control-static {\n height: @input-height-large;\n padding: @padding-large-vertical @padding-large-horizontal;\n font-size: @font-size-large;\n line-height: @line-height-large;\n min-height: (@line-height-computed + @font-size-large);\n }\n}\n\n\n// Form control feedback states\n//\n// Apply contextual and semantic states to individual form controls.\n\n.has-feedback {\n // Enable absolute positioning\n position: relative;\n\n // Ensure icons don't overlap text\n .form-control {\n padding-right: (@input-height-base * 1.25);\n }\n}\n// Feedback icon (requires .glyphicon classes)\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2; // Ensure icon is above input groups\n display: block;\n width: @input-height-base;\n height: @input-height-base;\n line-height: @input-height-base;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback {\n width: @input-height-large;\n height: @input-height-large;\n line-height: @input-height-large;\n}\n.input-sm + .form-control-feedback {\n width: @input-height-small;\n height: @input-height-small;\n line-height: @input-height-small;\n}\n\n// Feedback states\n.has-success {\n .form-control-validation(@state-success-text; @state-success-text; @state-success-bg);\n}\n.has-warning {\n .form-control-validation(@state-warning-text; @state-warning-text; @state-warning-bg);\n}\n.has-error {\n .form-control-validation(@state-danger-text; @state-danger-text; @state-danger-bg);\n}\n\n// Reposition feedback icon if input has visible label above\n.has-feedback label {\n\n & ~ .form-control-feedback {\n top: (@line-height-computed + 5); // Height of the `label` and its margin\n }\n &.sr-only ~ .form-control-feedback {\n top: 0;\n }\n}\n\n\n// Help text\n//\n// Apply to any element you wish to create light text for placement immediately\n// below a form control. Use for general help, formatting, or instructional text.\n\n.help-block {\n display: block; // account for any element using help-block\n margin-top: 5px;\n margin-bottom: 10px;\n color: lighten(@text-color, 25%); // lighten the text some for contrast\n}\n\n\n// Inline forms\n//\n// Make forms appear inline(-block) by adding the `.form-inline` class. Inline\n// forms begin stacked on extra small (mobile) devices and then go inline when\n// viewports reach <768px.\n//\n// Requires wrapping inputs and labels with `.form-group` for proper display of\n// default HTML form controls and our custom form controls (e.g., input groups).\n//\n// Heads up! This is mixin-ed into `.navbar-form` in navbars.less.\n\n.form-inline {\n\n // Kick in the inline\n @media (min-width: @screen-sm-min) {\n // Inline-block all the things for \"inline\"\n .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n\n // In navbar-form, allow folks to *not* use `.form-group`\n .form-control {\n display: inline-block;\n width: auto; // Prevent labels from stacking above inputs in `.form-group`\n vertical-align: middle;\n }\n\n // Make static controls behave like regular ones\n .form-control-static {\n display: inline-block;\n }\n\n .input-group {\n display: inline-table;\n vertical-align: middle;\n\n .input-group-addon,\n .input-group-btn,\n .form-control {\n width: auto;\n }\n }\n\n // Input groups need that 100% width though\n .input-group > .form-control {\n width: 100%;\n }\n\n .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n\n // Remove default margin on radios/checkboxes that were used for stacking, and\n // then undo the floating of radios and checkboxes to match.\n .radio,\n .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n\n label {\n padding-left: 0;\n }\n }\n .radio input[type=\"radio\"],\n .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n\n // Re-override the feedback icon.\n .has-feedback .form-control-feedback {\n top: 0;\n }\n }\n}\n\n\n// Horizontal forms\n//\n// Horizontal forms are built on grid classes and allow you to create forms with\n// labels on the left and inputs on the right.\n\n.form-horizontal {\n\n // Consistent vertical alignment of radios and checkboxes\n //\n // Labels also get some reset styles, but that is scoped to a media query below.\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline {\n margin-top: 0;\n margin-bottom: 0;\n padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n }\n // Account for padding we're adding to ensure the alignment and of help text\n // and other content below items\n .radio,\n .checkbox {\n min-height: (@line-height-computed + (@padding-base-vertical + 1));\n }\n\n // Make form groups behave like rows\n .form-group {\n .make-row();\n }\n\n // Reset spacing and right align labels, but scope to media queries so that\n // labels on narrow viewports stack the same as a default form example.\n @media (min-width: @screen-sm-min) {\n .control-label {\n text-align: right;\n margin-bottom: 0;\n padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n }\n }\n\n // Validation states\n //\n // Reposition the icon because it's now within a grid column and columns have\n // `position: relative;` on them. Also accounts for the grid gutter padding.\n .has-feedback .form-control-feedback {\n right: (@grid-gutter-width / 2);\n }\n\n // Form group sizes\n //\n // Quick utility class for applying `.input-lg` and `.input-sm` styles to the\n // inputs and labels within a `.form-group`.\n .form-group-lg {\n @media (min-width: @screen-sm-min) {\n .control-label {\n padding-top: ((@padding-large-vertical * @line-height-large) + 1);\n }\n }\n }\n .form-group-sm {\n @media (min-width: @screen-sm-min) {\n .control-label {\n padding-top: (@padding-small-vertical + 1);\n }\n }\n }\n}\n","// Form validation states\n//\n// Used in forms.less to generate the form validation CSS for warnings, errors,\n// and successes.\n\n.form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) {\n // Color the label and help text\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label {\n color: @text-color;\n }\n // Set the border and box shadow on specific inputs to match\n .form-control {\n border-color: @border-color;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work\n &:focus {\n border-color: darken(@border-color, 10%);\n @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%);\n .box-shadow(@shadow);\n }\n }\n // Set validation states also for addons\n .input-group-addon {\n color: @text-color;\n border-color: @border-color;\n background-color: @background-color;\n }\n // Optional feedback icon\n .form-control-feedback {\n color: @text-color;\n }\n}\n\n\n// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `@input-border-focus` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n.form-control-focus(@color: @input-border-focus) {\n @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);\n &:focus {\n border-color: @color;\n outline: 0;\n .box-shadow(~\"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}\");\n }\n}\n\n// Form control sizing\n//\n// Relative text size, padding, and border-radii changes for form controls. For\n// horizontal sizing, wrap controls in the predefined grid classes. `<select>`\n// element gets special love because it's special, and that's a fact!\n.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n height: @input-height;\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n\n select& {\n height: @input-height;\n line-height: @input-height;\n }\n\n textarea&,\n select[multiple]& {\n height: auto;\n }\n}\n","//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------------------------\n\n.btn {\n display: inline-block;\n margin-bottom: 0; // For input.btn\n font-weight: @btn-font-weight;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n white-space: nowrap;\n .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @border-radius-base);\n .user-select(none);\n\n &,\n &:active,\n &.active {\n &:focus,\n &.focus {\n .tab-focus();\n }\n }\n\n &:hover,\n &:focus,\n &.focus {\n color: @btn-default-color;\n text-decoration: none;\n }\n\n &:active,\n &.active {\n outline: 0;\n background-image: none;\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n pointer-events: none; // Future-proof disabling of clicks\n .opacity(.65);\n .box-shadow(none);\n }\n}\n\n\n// Alternate buttons\n// --------------------------------------------------\n\n.btn-default {\n .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\n}\n.btn-primary {\n .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\n}\n// Success appears as green\n.btn-success {\n .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\n}\n// Info appears as blue-green\n.btn-info {\n .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);\n}\n// Warning appears as orange\n.btn-warning {\n .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\n}\n// Danger and error appear as red\n.btn-danger {\n .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\n}\n\n\n// Link buttons\n// -------------------------\n\n// Make a button look and behave like a link\n.btn-link {\n color: @link-color;\n font-weight: normal;\n border-radius: 0;\n\n &,\n &:active,\n &.active,\n &[disabled],\n fieldset[disabled] & {\n background-color: transparent;\n .box-shadow(none);\n }\n &,\n &:hover,\n &:focus,\n &:active {\n border-color: transparent;\n }\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n background-color: transparent;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @btn-link-disabled-color;\n text-decoration: none;\n }\n }\n}\n\n\n// Button Sizes\n// --------------------------------------------------\n\n.btn-lg {\n // line-height: ensure even-numbered height of button next to large input\n .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n.btn-sm {\n // line-height: ensure proper height of button next to small input\n .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n.btn-xs {\n .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n\n\n// Block button\n// --------------------------------------------------\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n margin-top: 5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n &.btn-block {\n width: 100%;\n }\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n.button-variant(@color; @background; @border) {\n color: @color;\n background-color: @background;\n border-color: @border;\n\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n background-image: none;\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active {\n background-color: @background;\n border-color: @border;\n }\n }\n\n .badge {\n color: @background;\n background-color: @color;\n }\n}\n\n// Button sizes\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n}\n","// Opacity\n\n.opacity(@opacity) {\n opacity: @opacity;\n // IE8 filter\n @opacity-ie: (@opacity * 100);\n filter: ~\"alpha(opacity=@{opacity-ie})\";\n}\n","//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `.opacity()` mixin here since it causes a bug with text\n// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.\n\n.fade {\n opacity: 0;\n .transition(opacity .15s linear);\n &.in {\n opacity: 1;\n }\n}\n\n.collapse {\n display: none;\n\n &.in { display: block; }\n tr&.in { display: table-row; }\n tbody&.in { display: table-row-group; }\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n .transition-property(~\"height, visibility\");\n .transition-duration(.35s);\n .transition-timing-function(ease);\n}\n","//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: @caret-width-base dashed;\n border-right: @caret-width-base solid transparent;\n border-left: @caret-width-base solid transparent;\n}\n\n// The dropdown wrapper (div)\n.dropup,\n.dropdown {\n position: relative;\n}\n\n// Prevent the focus on the dropdown toggle when closing dropdowns\n.dropdown-toggle:focus {\n outline: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: @zindex-dropdown;\n display: none; // none by default, but block on \"open\" of the menu\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0; // override default ul\n list-style: none;\n font-size: @font-size-base;\n text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n background-color: @dropdown-bg;\n border: 1px solid @dropdown-fallback-border; // IE8 fallback\n border: 1px solid @dropdown-border;\n border-radius: @border-radius-base;\n .box-shadow(0 6px 12px rgba(0,0,0,.175));\n background-clip: padding-box;\n\n // Aligns the dropdown menu to right\n //\n // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`\n &.pull-right {\n right: 0;\n left: auto;\n }\n\n // Dividers (basically an hr) within the dropdown\n .divider {\n .nav-divider(@dropdown-divider-bg);\n }\n\n // Links within the dropdown menu\n > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: @line-height-base;\n color: @dropdown-link-color;\n white-space: nowrap; // prevent links from randomly breaking onto new lines\n }\n}\n\n// Hover/Focus state\n.dropdown-menu > li > a {\n &:hover,\n &:focus {\n text-decoration: none;\n color: @dropdown-link-hover-color;\n background-color: @dropdown-link-hover-bg;\n }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-active-color;\n text-decoration: none;\n outline: 0;\n background-color: @dropdown-link-active-bg;\n }\n}\n\n// Disabled state\n//\n// Gray out text and ensure the hover/focus state remains gray\n\n.dropdown-menu > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-disabled-color;\n }\n\n // Nuke hover/focus effects\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none; // Remove CSS gradient\n .reset-filter();\n cursor: @cursor-disabled;\n }\n}\n\n// Open state for the dropdown\n.open {\n // Show the menu\n > .dropdown-menu {\n display: block;\n }\n\n // Remove the outline when :focus is triggered\n > a {\n outline: 0;\n }\n}\n\n// Menu positioning\n//\n// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\n// menu with the parent.\n.dropdown-menu-right {\n left: auto; // Reset the default from `.dropdown-menu`\n right: 0;\n}\n// With v3, we enabled auto-flipping if you have a dropdown within a right\n// aligned nav component. To enable the undoing of that, we provide an override\n// to restore the default dropdown menu alignment.\n//\n// This is only for left-aligning a dropdown menu within a `.navbar-right` or\n// `.pull-right` nav component.\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n\n// Dropdown section headers\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: @font-size-small;\n line-height: @line-height-base;\n color: @dropdown-header-color;\n white-space: nowrap; // as with > li > a\n}\n\n// Backdrop to catch body clicks on mobile, etc.\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: (@zindex-dropdown - 10);\n}\n\n// Right aligned dropdowns\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n//\n// Just add .dropup after the standard .dropdown class and you're set, bro.\n// TODO: abstract this so that the navbar fixed styles are not placed here?\n\n.dropup,\n.navbar-fixed-bottom .dropdown {\n // Reverse the caret\n .caret {\n border-top: 0;\n border-bottom: @caret-width-base solid;\n content: \"\";\n }\n // Different positioning for bottom up menu\n .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n }\n}\n\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-right {\n .dropdown-menu {\n .dropdown-menu-right();\n }\n // Necessary for overrides of the default right aligned menu.\n // Will remove come v4 in all likelihood.\n .dropdown-menu-left {\n .dropdown-menu-left();\n }\n }\n}\n","// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n.nav-divider(@color: #e5e5e5) {\n height: 1px;\n margin: ((@line-height-computed / 2) - 1) 0;\n overflow: hidden;\n background-color: @color;\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n","//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle; // match .btn alignment given font-size hack above\n > .btn {\n position: relative;\n float: left;\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active,\n &.active {\n z-index: 2;\n }\n }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n .btn + .btn,\n .btn + .btn-group,\n .btn-group + .btn,\n .btn-group + .btn-group {\n margin-left: -1px;\n }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n margin-left: -5px; // Offset the first child's margin\n &:extend(.clearfix all);\n\n .btn-group,\n .input-group {\n float: left;\n }\n > .btn,\n > .btn-group,\n > .input-group {\n margin-left: 5px;\n }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n margin-left: 0;\n &:not(:last-child):not(.dropdown-toggle) {\n .border-right-radius(0);\n }\n}\n// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n .border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-right-radius(0);\n }\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-left-radius(0);\n}\n\n// On active and open, don't show outline\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-xs > .btn { &:extend(.btn-xs); }\n.btn-group-sm > .btn { &:extend(.btn-sm); }\n.btn-group-lg > .btn { &:extend(.btn-lg); }\n\n\n// Split button dropdowns\n// ----------------------\n\n// Give the line between buttons some depth\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n\n// The clickable button for toggling the menu\n// Remove the gradient and set the same inset shadow as the :active state\n.btn-group.open .dropdown-toggle {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n\n // Show no shadow for `.btn-link` since it has no other button styles.\n &.btn-link {\n .box-shadow(none);\n }\n}\n\n\n// Reposition the caret\n.btn .caret {\n margin-left: 0;\n}\n// Carets in other button sizes\n.btn-lg .caret {\n border-width: @caret-width-large @caret-width-large 0;\n border-bottom-width: 0;\n}\n// Upside down carets for .dropup\n.dropup .btn-lg .caret {\n border-width: 0 @caret-width-large @caret-width-large;\n}\n\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n > .btn,\n > .btn-group,\n > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n }\n\n // Clear floats so dropdown menus can be properly placed\n > .btn-group {\n &:extend(.clearfix all);\n > .btn {\n float: none;\n }\n }\n\n > .btn + .btn,\n > .btn + .btn-group,\n > .btn-group + .btn,\n > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n }\n}\n\n.btn-group-vertical > .btn {\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n &:first-child:not(:last-child) {\n border-top-right-radius: @border-radius-base;\n .border-bottom-radius(0);\n }\n &:last-child:not(:first-child) {\n border-bottom-left-radius: @border-radius-base;\n .border-top-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-bottom-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-top-radius(0);\n}\n\n\n// Justified button groups\n// ----------------------\n\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n > .btn,\n > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n }\n > .btn-group .btn {\n width: 100%;\n }\n\n > .btn-group .dropdown-menu {\n left: auto;\n }\n}\n\n\n// Checkbox and radio options\n//\n// In order to support the browser's form validation feedback, powered by the\n// `required` attribute, we have to \"hide\" the inputs via `clip`. We cannot use\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\n// certain cases which is prevented by using `clip` and `pointer-events`.\n// This way, we ensure a DOM element is visible to position the popover from.\n//\n// See https://github.com/twbs/bootstrap/pull/12794 and\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\n\n[data-toggle=\"buttons\"] {\n > .btn,\n > .btn-group > .btn {\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0,0,0,0);\n pointer-events: none;\n }\n }\n}\n","// Single side border-radius\n\n.border-top-radius(@radius) {\n border-top-right-radius: @radius;\n border-top-left-radius: @radius;\n}\n.border-right-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-top-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n border-bottom-left-radius: @radius;\n border-top-left-radius: @radius;\n}\n","//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.input-group {\n position: relative; // For dropdowns\n display: table;\n border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\n\n // Undo padding and float of grid classes\n &[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n }\n\n .form-control {\n // Ensure that the input is always above the *appended* addon button for\n // proper border colors.\n position: relative;\n z-index: 2;\n\n // IE9 fubars the placeholder attribute in text inputs and the arrows on\n // select elements in input groups. To fix it, we float the input. Details:\n // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\n float: left;\n\n width: 100%;\n margin-bottom: 0;\n }\n}\n\n// Sizing options\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n .input-lg();\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n .input-sm();\n}\n\n\n// Display as table-cell\n// -------------------------\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n}\n// Addon and addon wrapper for buttons\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle; // Match the inputs\n}\n\n// Text input groups\n// -------------------------\n.input-group-addon {\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n font-weight: normal;\n line-height: 1;\n color: @input-color;\n text-align: center;\n background-color: @input-group-addon-bg;\n border: 1px solid @input-group-addon-border-color;\n border-radius: @border-radius-base;\n\n // Sizing\n &.input-sm {\n padding: @padding-small-vertical @padding-small-horizontal;\n font-size: @font-size-small;\n border-radius: @border-radius-small;\n }\n &.input-lg {\n padding: @padding-large-vertical @padding-large-horizontal;\n font-size: @font-size-large;\n border-radius: @border-radius-large;\n }\n\n // Nuke default margins from checkboxes and radios to vertically center within.\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n margin-top: 0;\n }\n}\n\n// Reset rounded corners\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n .border-right-radius(0);\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n .border-left-radius(0);\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n\n// Button input groups\n// -------------------------\n.input-group-btn {\n position: relative;\n // Jankily prevent input button groups from wrapping with `white-space` and\n // `font-size` in combination with `inline-block` on buttons.\n font-size: 0;\n white-space: nowrap;\n\n // Negative margin for spacing, position for bringing hovered/focused/actived\n // element above the siblings.\n > .btn {\n position: relative;\n + .btn {\n margin-left: -1px;\n }\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active {\n z-index: 2;\n }\n }\n\n // Negative margin to only have a 1px border between the two\n &:first-child {\n > .btn,\n > .btn-group {\n margin-right: -1px;\n }\n }\n &:last-child {\n > .btn,\n > .btn-group {\n margin-left: -1px;\n }\n }\n}\n","//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// --------------------------------------------------\n\n.nav {\n margin-bottom: 0;\n padding-left: 0; // Override default ul/ol\n list-style: none;\n &:extend(.clearfix all);\n\n > li {\n position: relative;\n display: block;\n\n > a {\n position: relative;\n display: block;\n padding: @nav-link-padding;\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: @nav-link-hover-bg;\n }\n }\n\n // Disabled state sets text to gray and nukes hover/tab effects\n &.disabled > a {\n color: @nav-disabled-link-color;\n\n &:hover,\n &:focus {\n color: @nav-disabled-link-hover-color;\n text-decoration: none;\n background-color: transparent;\n cursor: @cursor-disabled;\n }\n }\n }\n\n // Open dropdowns\n .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @nav-link-hover-bg;\n border-color: @link-color;\n }\n }\n\n // Nav dividers (deprecated with v3.0.1)\n //\n // This should have been removed in v3 with the dropping of `.nav-list`, but\n // we missed it. We don't currently support this anywhere, but in the interest\n // of maintaining backward compatibility in case you use it, it's deprecated.\n .nav-divider {\n .nav-divider();\n }\n\n // Prevent IE8 from misplacing imgs\n //\n // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989\n > li > a > img {\n max-width: none;\n }\n}\n\n\n// Tabs\n// -------------------------\n\n// Give the tabs something to sit on\n.nav-tabs {\n border-bottom: 1px solid @nav-tabs-border-color;\n > li {\n float: left;\n // Make the list-items overlay the bottom border\n margin-bottom: -1px;\n\n // Actual tabs (as links)\n > a {\n margin-right: 2px;\n line-height: @line-height-base;\n border: 1px solid transparent;\n border-radius: @border-radius-base @border-radius-base 0 0;\n &:hover {\n border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;\n }\n }\n\n // Active state, and its :hover to override normal :hover\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-tabs-active-link-hover-color;\n background-color: @nav-tabs-active-link-hover-bg;\n border: 1px solid @nav-tabs-active-link-hover-border-color;\n border-bottom-color: transparent;\n cursor: default;\n }\n }\n }\n // pulling this in mainly for less shorthand\n &.nav-justified {\n .nav-justified();\n .nav-tabs-justified();\n }\n}\n\n\n// Pills\n// -------------------------\n.nav-pills {\n > li {\n float: left;\n\n // Links rendered as pills\n > a {\n border-radius: @nav-pills-border-radius;\n }\n + li {\n margin-left: 2px;\n }\n\n // Active state\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-pills-active-link-hover-color;\n background-color: @nav-pills-active-link-hover-bg;\n }\n }\n }\n}\n\n\n// Stacked pills\n.nav-stacked {\n > li {\n float: none;\n + li {\n margin-top: 2px;\n margin-left: 0; // no need for this gap between nav items\n }\n }\n}\n\n\n// Nav variations\n// --------------------------------------------------\n\n// Justified nav links\n// -------------------------\n\n.nav-justified {\n width: 100%;\n\n > li {\n float: none;\n > a {\n text-align: center;\n margin-bottom: 5px;\n }\n }\n\n > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n }\n\n @media (min-width: @screen-sm-min) {\n > li {\n display: table-cell;\n width: 1%;\n > a {\n margin-bottom: 0;\n }\n }\n }\n}\n\n// Move borders to anchors instead of bottom of list\n//\n// Mixin for adding on top the shared `.nav-justified` styles for our tabs\n.nav-tabs-justified {\n border-bottom: 0;\n\n > li > a {\n // Override margin from .nav-tabs\n margin-right: 0;\n border-radius: @border-radius-base;\n }\n\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border: 1px solid @nav-tabs-justified-link-border-color;\n }\n\n @media (min-width: @screen-sm-min) {\n > li > a {\n border-bottom: 1px solid @nav-tabs-justified-link-border-color;\n border-radius: @border-radius-base @border-radius-base 0 0;\n }\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border-bottom-color: @nav-tabs-justified-active-link-border-color;\n }\n }\n}\n\n\n// Tabbable tabs\n// -------------------------\n\n// Hide tabbable panes to start, show them when `.active`\n.tab-content {\n > .tab-pane {\n display: none;\n }\n > .active {\n display: block;\n }\n}\n\n\n// Dropdowns\n// -------------------------\n\n// Specific dropdowns\n.nav-tabs .dropdown-menu {\n // make dropdown border overlap tab border\n margin-top: -1px;\n // Remove the top rounded corners here since there is a hard edge above the menu\n .border-top-radius(0);\n}\n","//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n position: relative;\n min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)\n margin-bottom: @navbar-margin-bottom;\n border: 1px solid transparent;\n\n // Prevent floats from breaking the navbar\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: @navbar-border-radius;\n }\n}\n\n\n// Navbar heading\n//\n// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy\n// styling of responsive aspects.\n\n.navbar-header {\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n }\n}\n\n\n// Navbar collapse (body)\n//\n// Group your navbar content into this for easy collapsing and expanding across\n// various device sizes. By default, this content is collapsed when <768px, but\n// will expand past that for a horizontal display.\n//\n// To start (on mobile devices) the navbar links, forms, and buttons are stacked\n// vertically and include a `max-height` to overflow in case you have too much\n// content for the user's viewport.\n\n.navbar-collapse {\n overflow-x: visible;\n padding-right: @navbar-padding-horizontal;\n padding-left: @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255,255,255,.1);\n &:extend(.clearfix all);\n -webkit-overflow-scrolling: touch;\n\n &.in {\n overflow-y: auto;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border-top: 0;\n box-shadow: none;\n\n &.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0; // Override default setting\n overflow: visible !important;\n }\n\n &.in {\n overflow-y: visible;\n }\n\n // Undo the collapse side padding for navbars with containers to ensure\n // alignment of right-aligned contents.\n .navbar-fixed-top &,\n .navbar-static-top &,\n .navbar-fixed-bottom & {\n padding-left: 0;\n padding-right: 0;\n }\n }\n}\n\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n .navbar-collapse {\n max-height: @navbar-collapse-max-height;\n\n @media (max-device-width: @screen-xs-min) and (orientation: landscape) {\n max-height: 200px;\n }\n }\n}\n\n\n// Both navbar header and collapse\n//\n// When a container is present, change the behavior of the header and collapse.\n\n.container,\n.container-fluid {\n > .navbar-header,\n > .navbar-collapse {\n margin-right: -@navbar-padding-horizontal;\n margin-left: -@navbar-padding-horizontal;\n\n @media (min-width: @grid-float-breakpoint) {\n margin-right: 0;\n margin-left: 0;\n }\n }\n}\n\n\n//\n// Navbar alignment options\n//\n// Display the navbar across the entirety of the page or fixed it to the top or\n// bottom of the page.\n\n// Static top (unfixed, but 100% wide) navbar\n.navbar-static-top {\n z-index: @zindex-navbar;\n border-width: 0 0 1px;\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n\n// Fix the top/bottom navbars when screen real estate supports it\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: @zindex-navbar-fixed;\n\n // Undo the rounded corners\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0; // override .navbar defaults\n border-width: 1px 0 0;\n}\n\n\n// Brand/project name\n\n.navbar-brand {\n float: left;\n padding: @navbar-padding-vertical @navbar-padding-horizontal;\n font-size: @font-size-large;\n line-height: @line-height-computed;\n height: @navbar-height;\n\n &:hover,\n &:focus {\n text-decoration: none;\n }\n\n > img {\n display: block;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n .navbar > .container &,\n .navbar > .container-fluid & {\n margin-left: -@navbar-padding-horizontal;\n }\n }\n}\n\n\n// Navbar toggle\n//\n// Custom button for toggling the `.navbar-collapse`, powered by the collapse\n// JavaScript plugin.\n\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: @navbar-padding-horizontal;\n padding: 9px 10px;\n .navbar-vertical-align(34px);\n background-color: transparent;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n border-radius: @border-radius-base;\n\n // We remove the `outline` here, but later compensate by attaching `:hover`\n // styles to `:focus`.\n &:focus {\n outline: 0;\n }\n\n // Bars\n .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n }\n .icon-bar + .icon-bar {\n margin-top: 4px;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n display: none;\n }\n}\n\n\n// Navbar nav links\n//\n// Builds on top of the `.nav` components with its own modifier class to make\n// the nav the full height of the horizontal nav (above 768px).\n\n.navbar-nav {\n margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;\n\n > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: @line-height-computed;\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n > li > a,\n .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n > li > a {\n line-height: @line-height-computed;\n &:hover,\n &:focus {\n background-image: none;\n }\n }\n }\n }\n\n // Uncollapse the nav\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin: 0;\n\n > li {\n float: left;\n > a {\n padding-top: @navbar-padding-vertical;\n padding-bottom: @navbar-padding-vertical;\n }\n }\n }\n}\n\n\n// Navbar form\n//\n// Extension of the `.form-inline` with some extra flavor for optimum display in\n// our navbars.\n\n.navbar-form {\n margin-left: -@navbar-padding-horizontal;\n margin-right: -@navbar-padding-horizontal;\n padding: 10px @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n\n // Mixin behavior for optimum display\n .form-inline();\n\n .form-group {\n @media (max-width: @grid-float-breakpoint-max) {\n margin-bottom: 5px;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n }\n\n // Vertically center in expanded, horizontal navbar\n .navbar-vertical-align(@input-height-base);\n\n // Undo 100% width for pull classes\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n .box-shadow(none);\n }\n}\n\n\n// Dropdown menus\n\n// Menu position and menu carets\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n .border-top-radius(0);\n}\n// Menu position and menu caret support for dropups via extra dropup class\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n .border-top-radius(@navbar-border-radius);\n .border-bottom-radius(0);\n}\n\n\n// Buttons in navbars\n//\n// Vertically center a button within a navbar (when *not* in a form).\n\n.navbar-btn {\n .navbar-vertical-align(@input-height-base);\n\n &.btn-sm {\n .navbar-vertical-align(@input-height-small);\n }\n &.btn-xs {\n .navbar-vertical-align(22);\n }\n}\n\n\n// Text in navbars\n//\n// Add a class to make any element properly align itself vertically within the navbars.\n\n.navbar-text {\n .navbar-vertical-align(@line-height-computed);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin-left: @navbar-padding-horizontal;\n margin-right: @navbar-padding-horizontal;\n }\n}\n\n\n// Component alignment\n//\n// Repurpose the pull utilities as their own navbar utilities to avoid specificity\n// issues with parents and chaining. Only do this when the navbar is uncollapsed\n// though so that navbar contents properly stack and align in mobile.\n//\n// Declared after the navbar components to ensure more specificity on the margins.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-left { .pull-left(); }\n .navbar-right {\n .pull-right();\n margin-right: -@navbar-padding-horizontal;\n\n ~ .navbar-right {\n margin-right: 0;\n }\n }\n}\n\n\n// Alternate navbars\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n background-color: @navbar-default-bg;\n border-color: @navbar-default-border;\n\n .navbar-brand {\n color: @navbar-default-brand-color;\n &:hover,\n &:focus {\n color: @navbar-default-brand-hover-color;\n background-color: @navbar-default-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-default-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-default-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n\n .navbar-toggle {\n border-color: @navbar-default-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-default-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-default-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: @navbar-default-border;\n }\n\n // Dropdown menu items\n .navbar-nav {\n // Remove background color from open dropdown\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-default-link-active-bg;\n color: @navbar-default-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n > li > a {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n }\n }\n\n\n // Links in navbars\n //\n // Add a class to ensure links outside the navbar nav are colored correctly.\n\n .navbar-link {\n color: @navbar-default-link-color;\n &:hover {\n color: @navbar-default-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n }\n }\n }\n}\n\n// Inverse navbar\n\n.navbar-inverse {\n background-color: @navbar-inverse-bg;\n border-color: @navbar-inverse-border;\n\n .navbar-brand {\n color: @navbar-inverse-brand-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-brand-hover-color;\n background-color: @navbar-inverse-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-inverse-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-inverse-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n\n // Darken the responsive nav toggle\n .navbar-toggle {\n border-color: @navbar-inverse-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-inverse-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-inverse-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: darken(@navbar-inverse-bg, 7%);\n }\n\n // Dropdowns\n .navbar-nav {\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-inverse-link-active-bg;\n color: @navbar-inverse-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display\n .open .dropdown-menu {\n > .dropdown-header {\n border-color: @navbar-inverse-border;\n }\n .divider {\n background-color: @navbar-inverse-border;\n }\n > li > a {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n }\n }\n\n .navbar-link {\n color: @navbar-inverse-link-color;\n &:hover {\n color: @navbar-inverse-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n }\n }\n }\n}\n","// Navbar vertical align\n//\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n\n.navbar-vertical-align(@element-height) {\n margin-top: ((@navbar-height - @element-height) / 2);\n margin-bottom: ((@navbar-height - @element-height) / 2);\n}\n","//\n// Utility classes\n// --------------------------------------------------\n\n\n// Floats\n// -------------------------\n\n.clearfix {\n .clearfix();\n}\n.center-block {\n .center-block();\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n\n\n// Toggling content\n// -------------------------\n\n// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n .text-hide();\n}\n\n\n// Hide from screenreaders and browsers\n//\n// Credit: HTML5 Boilerplate\n\n.hidden {\n display: none !important;\n}\n\n\n// For Affix plugin\n// -------------------------\n\n.affix {\n position: fixed;\n}\n","//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;\n margin-bottom: @line-height-computed;\n list-style: none;\n background-color: @breadcrumb-bg;\n border-radius: @border-radius-base;\n\n > li {\n display: inline-block;\n\n + li:before {\n content: \"@{breadcrumb-separator}\\00a0\"; // Unicode space added since inline-block means non-collapsing white-space\n padding: 0 5px;\n color: @breadcrumb-color;\n }\n }\n\n > .active {\n color: @breadcrumb-active-color;\n }\n}\n","//\n// Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: @line-height-computed 0;\n border-radius: @border-radius-base;\n\n > li {\n display: inline; // Remove list-style and block-level defaults\n > a,\n > span {\n position: relative;\n float: left; // Collapse white-space\n padding: @padding-base-vertical @padding-base-horizontal;\n line-height: @line-height-base;\n text-decoration: none;\n color: @pagination-color;\n background-color: @pagination-bg;\n border: 1px solid @pagination-border;\n margin-left: -1px;\n }\n &:first-child {\n > a,\n > span {\n margin-left: 0;\n .border-left-radius(@border-radius-base);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius-base);\n }\n }\n }\n\n > li > a,\n > li > span {\n &:hover,\n &:focus {\n color: @pagination-hover-color;\n background-color: @pagination-hover-bg;\n border-color: @pagination-hover-border;\n }\n }\n\n > .active > a,\n > .active > span {\n &,\n &:hover,\n &:focus {\n z-index: 2;\n color: @pagination-active-color;\n background-color: @pagination-active-bg;\n border-color: @pagination-active-border;\n cursor: default;\n }\n }\n\n > .disabled {\n > span,\n > span:hover,\n > span:focus,\n > a,\n > a:hover,\n > a:focus {\n color: @pagination-disabled-color;\n background-color: @pagination-disabled-bg;\n border-color: @pagination-disabled-border;\n cursor: @cursor-disabled;\n }\n }\n}\n\n// Sizing\n// --------------------------------------------------\n\n// Large\n.pagination-lg {\n .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @border-radius-large);\n}\n\n// Small\n.pagination-sm {\n .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @border-radius-small);\n}\n","// Pagination\n\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @border-radius) {\n > li {\n > a,\n > span {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n }\n &:first-child {\n > a,\n > span {\n .border-left-radius(@border-radius);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius);\n }\n }\n }\n}\n","//\n// Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n padding-left: 0;\n margin: @line-height-computed 0;\n list-style: none;\n text-align: center;\n &:extend(.clearfix all);\n li {\n display: inline;\n > a,\n > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: @pager-bg;\n border: 1px solid @pager-border;\n border-radius: @pager-border-radius;\n }\n\n > a:hover,\n > a:focus {\n text-decoration: none;\n background-color: @pager-hover-bg;\n }\n }\n\n .next {\n > a,\n > span {\n float: right;\n }\n }\n\n .previous {\n > a,\n > span {\n float: left;\n }\n }\n\n .disabled {\n > a,\n > a:hover,\n > a:focus,\n > span {\n color: @pager-disabled-color;\n background-color: @pager-bg;\n cursor: @cursor-disabled;\n }\n }\n}\n","//\n// Labels\n// --------------------------------------------------\n\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: @label-color;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n\n // Add hover effects, but only for links\n a& {\n &:hover,\n &:focus {\n color: @label-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Empty labels collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for labels in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n}\n\n// Colors\n// Contextual variations (linked labels get darker on :hover)\n\n.label-default {\n .label-variant(@label-default-bg);\n}\n\n.label-primary {\n .label-variant(@label-primary-bg);\n}\n\n.label-success {\n .label-variant(@label-success-bg);\n}\n\n.label-info {\n .label-variant(@label-info-bg);\n}\n\n.label-warning {\n .label-variant(@label-warning-bg);\n}\n\n.label-danger {\n .label-variant(@label-danger-bg);\n}\n","// Labels\n\n.label-variant(@color) {\n background-color: @color;\n\n &[href] {\n &:hover,\n &:focus {\n background-color: darken(@color, 10%);\n }\n }\n}\n","//\n// Badges\n// --------------------------------------------------\n\n\n// Base class\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: @font-size-small;\n font-weight: @badge-font-weight;\n color: @badge-color;\n line-height: @badge-line-height;\n vertical-align: baseline;\n white-space: nowrap;\n text-align: center;\n background-color: @badge-bg;\n border-radius: @badge-border-radius;\n\n // Empty badges collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for badges in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n\n .btn-xs &,\n .btn-group-xs > .btn & {\n top: 0;\n padding: 1px 5px;\n }\n\n // Hover state, but only for links\n a& {\n &:hover,\n &:focus {\n color: @badge-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Account for badges in navs\n .list-group-item.active > &,\n .nav-pills > .active > a > & {\n color: @badge-active-color;\n background-color: @badge-active-bg;\n }\n\n .list-group-item > & {\n float: right;\n }\n\n .list-group-item > & + & {\n margin-right: 5px;\n }\n\n .nav-pills > li > a > & {\n margin-left: 3px;\n }\n}\n","//\n// Jumbotron\n// --------------------------------------------------\n\n\n.jumbotron {\n padding: @jumbotron-padding (@jumbotron-padding / 2);\n margin-bottom: @jumbotron-padding;\n color: @jumbotron-color;\n background-color: @jumbotron-bg;\n\n h1,\n .h1 {\n color: @jumbotron-heading-color;\n }\n\n p {\n margin-bottom: (@jumbotron-padding / 2);\n font-size: @jumbotron-font-size;\n font-weight: 200;\n }\n\n > hr {\n border-top-color: darken(@jumbotron-bg, 10%);\n }\n\n .container &,\n .container-fluid & {\n border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container\n }\n\n .container {\n max-width: 100%;\n }\n\n @media screen and (min-width: @screen-sm-min) {\n padding: (@jumbotron-padding * 1.6) 0;\n\n .container &,\n .container-fluid & {\n padding-left: (@jumbotron-padding * 2);\n padding-right: (@jumbotron-padding * 2);\n }\n\n h1,\n .h1 {\n font-size: (@font-size-base * 4.5);\n }\n }\n}\n","//\n// Thumbnails\n// --------------------------------------------------\n\n\n// Mixin and adjust the regular image class\n.thumbnail {\n display: block;\n padding: @thumbnail-padding;\n margin-bottom: @line-height-computed;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(border .2s ease-in-out);\n\n > img,\n a > img {\n &:extend(.img-responsive);\n margin-left: auto;\n margin-right: auto;\n }\n\n // Add a hover state for linked versions only\n a&:hover,\n a&:focus,\n a&.active {\n border-color: @link-color;\n }\n\n // Image captions\n .caption {\n padding: @thumbnail-caption-padding;\n color: @thumbnail-caption-color;\n }\n}\n","//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert {\n padding: @alert-padding;\n margin-bottom: @line-height-computed;\n border: 1px solid transparent;\n border-radius: @alert-border-radius;\n\n // Headings for larger alerts\n h4 {\n margin-top: 0;\n // Specified for the h4 to prevent conflicts of changing @headings-color\n color: inherit;\n }\n\n // Provide class for links that match alerts\n .alert-link {\n font-weight: @alert-link-font-weight;\n }\n\n // Improve alignment and spacing of inner content\n > p,\n > ul {\n margin-bottom: 0;\n }\n\n > p + p {\n margin-top: 5px;\n }\n}\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0.\n.alert-dismissible {\n padding-right: (@alert-padding + 20);\n\n // Adjust close link position\n .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n }\n}\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n.alert-success {\n .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);\n}\n\n.alert-info {\n .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);\n}\n\n.alert-warning {\n .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);\n}\n\n.alert-danger {\n .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);\n}\n","// Alerts\n\n.alert-variant(@background; @border; @text-color) {\n background-color: @background;\n border-color: @border;\n color: @text-color;\n\n hr {\n border-top-color: darken(@border, 5%);\n }\n .alert-link {\n color: darken(@text-color, 10%);\n }\n}\n","//\n// Progress bars\n// --------------------------------------------------\n\n\n// Bar animations\n// -------------------------\n\n// WebKit\n@-webkit-keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n// Spec and IE10+\n@keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n\n// Bar itself\n// -------------------------\n\n// Outer container\n.progress {\n overflow: hidden;\n height: @line-height-computed;\n margin-bottom: @line-height-computed;\n background-color: @progress-bg;\n border-radius: @progress-border-radius;\n .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));\n}\n\n// Bar of progress\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: @font-size-small;\n line-height: @line-height-computed;\n color: @progress-bar-color;\n text-align: center;\n background-color: @progress-bar-bg;\n .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));\n .transition(width .6s ease);\n}\n\n// Striped bars\n//\n// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar-striped` class, which you just add to an existing\n// `.progress-bar`.\n.progress-striped .progress-bar,\n.progress-bar-striped {\n #gradient > .striped();\n background-size: 40px 40px;\n}\n\n// Call animation for the active one\n//\n// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar.active` approach.\n.progress.active .progress-bar,\n.progress-bar.active {\n .animation(progress-bar-stripes 2s linear infinite);\n}\n\n\n// Variations\n// -------------------------\n\n.progress-bar-success {\n .progress-bar-variant(@progress-bar-success-bg);\n}\n\n.progress-bar-info {\n .progress-bar-variant(@progress-bar-info-bg);\n}\n\n.progress-bar-warning {\n .progress-bar-variant(@progress-bar-warning-bg);\n}\n\n.progress-bar-danger {\n .progress-bar-variant(@progress-bar-danger-bg);\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Progress bars\n\n.progress-bar-variant(@color) {\n background-color: @color;\n\n // Deprecated parent class requirement as of v3.2.0\n .progress-striped & {\n #gradient > .striped();\n }\n}\n",".media {\n // Proper spacing between instances of .media\n margin-top: 15px;\n\n &:first-child {\n margin-top: 0;\n }\n}\n\n.media,\n.media-body {\n zoom: 1;\n overflow: hidden;\n}\n\n.media-body {\n width: 10000px;\n}\n\n.media-object {\n display: block;\n}\n\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n\n.media-middle {\n vertical-align: middle;\n}\n\n.media-bottom {\n vertical-align: bottom;\n}\n\n// Reset margins on headings for tighter default spacing\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n\n// Media list variation\n//\n// Undo default ul/ol styles\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n","//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on <ul>, <ol>, or <div>.\n\n.list-group {\n // No need to set list-style: none; since .list-group-item is block level\n margin-bottom: 20px;\n padding-left: 0; // reset padding because ul and ol\n}\n\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n // Place the border on the list items and negative margin up for better styling\n margin-bottom: -1px;\n background-color: @list-group-bg;\n border: 1px solid @list-group-border;\n\n // Round the first and last items\n &:first-child {\n .border-top-radius(@list-group-border-radius);\n }\n &:last-child {\n margin-bottom: 0;\n .border-bottom-radius(@list-group-border-radius);\n }\n}\n\n\n// Linked list items\n//\n// Use anchor elements instead of `li`s or `div`s to create linked list items.\n// Includes an extra `.active` modifier class for showing selected items.\n\na.list-group-item {\n color: @list-group-link-color;\n\n .list-group-item-heading {\n color: @list-group-link-heading-color;\n }\n\n // Hover state\n &:hover,\n &:focus {\n text-decoration: none;\n color: @list-group-link-hover-color;\n background-color: @list-group-hover-bg;\n }\n}\n\n.list-group-item {\n // Disabled state\n &.disabled,\n &.disabled:hover,\n &.disabled:focus {\n background-color: @list-group-disabled-bg;\n color: @list-group-disabled-color;\n cursor: @cursor-disabled;\n\n // Force color to inherit for custom content\n .list-group-item-heading {\n color: inherit;\n }\n .list-group-item-text {\n color: @list-group-disabled-text-color;\n }\n }\n\n // Active class on item itself, not parent\n &.active,\n &.active:hover,\n &.active:focus {\n z-index: 2; // Place active items above their siblings for proper border styling\n color: @list-group-active-color;\n background-color: @list-group-active-bg;\n border-color: @list-group-active-border;\n\n // Force color to inherit for custom content\n .list-group-item-heading,\n .list-group-item-heading > small,\n .list-group-item-heading > .small {\n color: inherit;\n }\n .list-group-item-text {\n color: @list-group-active-text-color;\n }\n }\n}\n\n\n// Contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n.list-group-item-variant(success; @state-success-bg; @state-success-text);\n.list-group-item-variant(info; @state-info-bg; @state-info-text);\n.list-group-item-variant(warning; @state-warning-bg; @state-warning-text);\n.list-group-item-variant(danger; @state-danger-bg; @state-danger-text);\n\n\n// Custom content options\n//\n// Extra classes for creating well-formatted content within `.list-group-item`s.\n\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n","// List Groups\n\n.list-group-item-variant(@state; @background; @color) {\n .list-group-item-@{state} {\n color: @color;\n background-color: @background;\n\n a& {\n color: @color;\n\n .list-group-item-heading {\n color: inherit;\n }\n\n &:hover,\n &:focus {\n color: @color;\n background-color: darken(@background, 5%);\n }\n &.active,\n &.active:hover,\n &.active:focus {\n color: #fff;\n background-color: @color;\n border-color: @color;\n }\n }\n }\n}\n","//\n// Panels\n// --------------------------------------------------\n\n\n// Base class\n.panel {\n margin-bottom: @line-height-computed;\n background-color: @panel-bg;\n border: 1px solid transparent;\n border-radius: @panel-border-radius;\n .box-shadow(0 1px 1px rgba(0,0,0,.05));\n}\n\n// Panel contents\n.panel-body {\n padding: @panel-body-padding;\n &:extend(.clearfix all);\n}\n\n// Optional heading\n.panel-heading {\n padding: @panel-heading-padding;\n border-bottom: 1px solid transparent;\n .border-top-radius((@panel-border-radius - 1));\n\n > .dropdown .dropdown-toggle {\n color: inherit;\n }\n}\n\n// Within heading, strip any `h*` tag of its default margins for spacing.\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: ceil((@font-size-base * 1.125));\n color: inherit;\n\n > a,\n > small,\n > .small,\n > small > a,\n > .small > a {\n color: inherit;\n }\n}\n\n// Optional footer (stays gray in every modifier class)\n.panel-footer {\n padding: @panel-footer-padding;\n background-color: @panel-footer-bg;\n border-top: 1px solid @panel-inner-border;\n .border-bottom-radius((@panel-border-radius - 1));\n}\n\n\n// List groups in panels\n//\n// By default, space out list group content from panel headings to account for\n// any kind of custom content between the two.\n\n.panel {\n > .list-group,\n > .panel-collapse > .list-group {\n margin-bottom: 0;\n\n .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n }\n\n // Add border top radius for first one\n &:first-child {\n .list-group-item:first-child {\n border-top: 0;\n .border-top-radius((@panel-border-radius - 1));\n }\n }\n // Add border bottom radius for last one\n &:last-child {\n .list-group-item:last-child {\n border-bottom: 0;\n .border-bottom-radius((@panel-border-radius - 1));\n }\n }\n }\n}\n// Collapse space between when there's no additional content.\n.panel-heading + .list-group {\n .list-group-item:first-child {\n border-top-width: 0;\n }\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n\n// Tables in panels\n//\n// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and\n// watch it go full width.\n\n.panel {\n > .table,\n > .table-responsive > .table,\n > .panel-collapse > .table {\n margin-bottom: 0;\n\n caption {\n padding-left: @panel-body-padding;\n padding-right: @panel-body-padding;\n }\n }\n // Add border top radius for first one\n > .table:first-child,\n > .table-responsive:first-child > .table:first-child {\n .border-top-radius((@panel-border-radius - 1));\n\n > thead:first-child,\n > tbody:first-child {\n > tr:first-child {\n border-top-left-radius: (@panel-border-radius - 1);\n border-top-right-radius: (@panel-border-radius - 1);\n\n td:first-child,\n th:first-child {\n border-top-left-radius: (@panel-border-radius - 1);\n }\n td:last-child,\n th:last-child {\n border-top-right-radius: (@panel-border-radius - 1);\n }\n }\n }\n }\n // Add border bottom radius for last one\n > .table:last-child,\n > .table-responsive:last-child > .table:last-child {\n .border-bottom-radius((@panel-border-radius - 1));\n\n > tbody:last-child,\n > tfoot:last-child {\n > tr:last-child {\n border-bottom-left-radius: (@panel-border-radius - 1);\n border-bottom-right-radius: (@panel-border-radius - 1);\n\n td:first-child,\n th:first-child {\n border-bottom-left-radius: (@panel-border-radius - 1);\n }\n td:last-child,\n th:last-child {\n border-bottom-right-radius: (@panel-border-radius - 1);\n }\n }\n }\n }\n > .panel-body + .table,\n > .panel-body + .table-responsive,\n > .table + .panel-body,\n > .table-responsive + .panel-body {\n border-top: 1px solid @table-border-color;\n }\n > .table > tbody:first-child > tr:first-child th,\n > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n }\n > .table-bordered,\n > .table-responsive > .table-bordered {\n border: 0;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n > thead,\n > tbody {\n > tr:first-child {\n > td,\n > th {\n border-bottom: 0;\n }\n }\n }\n > tbody,\n > tfoot {\n > tr:last-child {\n > td,\n > th {\n border-bottom: 0;\n }\n }\n }\n }\n > .table-responsive {\n border: 0;\n margin-bottom: 0;\n }\n}\n\n\n// Collapsable panels (aka, accordion)\n//\n// Wrap a series of panels in `.panel-group` to turn them into an accordion with\n// the help of our collapse JavaScript plugin.\n\n.panel-group {\n margin-bottom: @line-height-computed;\n\n // Tighten up margin so it's only between panels\n .panel {\n margin-bottom: 0;\n border-radius: @panel-border-radius;\n\n + .panel {\n margin-top: 5px;\n }\n }\n\n .panel-heading {\n border-bottom: 0;\n\n + .panel-collapse > .panel-body,\n + .panel-collapse > .list-group {\n border-top: 1px solid @panel-inner-border;\n }\n }\n\n .panel-footer {\n border-top: 0;\n + .panel-collapse .panel-body {\n border-bottom: 1px solid @panel-inner-border;\n }\n }\n}\n\n\n// Contextual variations\n.panel-default {\n .panel-variant(@panel-default-border; @panel-default-text; @panel-default-heading-bg; @panel-default-border);\n}\n.panel-primary {\n .panel-variant(@panel-primary-border; @panel-primary-text; @panel-primary-heading-bg; @panel-primary-border);\n}\n.panel-success {\n .panel-variant(@panel-success-border; @panel-success-text; @panel-success-heading-bg; @panel-success-border);\n}\n.panel-info {\n .panel-variant(@panel-info-border; @panel-info-text; @panel-info-heading-bg; @panel-info-border);\n}\n.panel-warning {\n .panel-variant(@panel-warning-border; @panel-warning-text; @panel-warning-heading-bg; @panel-warning-border);\n}\n.panel-danger {\n .panel-variant(@panel-danger-border; @panel-danger-text; @panel-danger-heading-bg; @panel-danger-border);\n}\n","// Panels\n\n.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {\n border-color: @border;\n\n & > .panel-heading {\n color: @heading-text-color;\n background-color: @heading-bg-color;\n border-color: @heading-border;\n\n + .panel-collapse > .panel-body {\n border-top-color: @border;\n }\n .badge {\n color: @heading-bg-color;\n background-color: @heading-text-color;\n }\n }\n & > .panel-footer {\n + .panel-collapse > .panel-body {\n border-bottom-color: @border;\n }\n }\n}\n","// Embeds responsive\n//\n// Credit: Nicolas Gallagher and SUIT CSS.\n\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n\n .embed-responsive-item,\n iframe,\n embed,\n object,\n video {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n border: 0;\n }\n}\n\n// Modifier class for 16:9 aspect ratio\n.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n\n// Modifier class for 4:3 aspect ratio\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n","//\n// Wells\n// --------------------------------------------------\n\n\n// Base class\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: @well-bg;\n border: 1px solid @well-border;\n border-radius: @border-radius-base;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.05));\n blockquote {\n border-color: #ddd;\n border-color: rgba(0,0,0,.15);\n }\n}\n\n// Sizes\n.well-lg {\n padding: 24px;\n border-radius: @border-radius-large;\n}\n.well-sm {\n padding: 9px;\n border-radius: @border-radius-small;\n}\n","//\n// Close icons\n// --------------------------------------------------\n\n\n.close {\n float: right;\n font-size: (@font-size-base * 1.5);\n font-weight: @close-font-weight;\n line-height: 1;\n color: @close-color;\n text-shadow: @close-text-shadow;\n .opacity(.2);\n\n &:hover,\n &:focus {\n color: @close-color;\n text-decoration: none;\n cursor: pointer;\n .opacity(.5);\n }\n\n // Additional properties for button version\n // iOS requires the button element instead of an anchor tag.\n // If you want the anchor version, it requires `href=\"#\"`.\n // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n button& {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n }\n}\n","//\n// Modals\n// --------------------------------------------------\n\n// .modal-open - body class for killing the scroll\n// .modal - container to scroll within\n// .modal-dialog - positioning shell for the actual modal\n// .modal-content - actual modal w/ bg and corners and shit\n\n// Kill the scroll on the body\n.modal-open {\n overflow: hidden;\n}\n\n// Container that the modal scrolls within\n.modal {\n display: none;\n overflow: hidden;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: @zindex-modal;\n -webkit-overflow-scrolling: touch;\n\n // Prevent Chrome on Windows from adding a focus outline. For details, see\n // https://github.com/twbs/bootstrap/pull/10951.\n outline: 0;\n\n // When fading in the modal, animate it to slide down\n &.fade .modal-dialog {\n .translate(0, -25%);\n .transition-transform(~\"0.3s ease-out\");\n }\n &.in .modal-dialog { .translate(0, 0) }\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n\n// Actual modal\n.modal-content {\n position: relative;\n background-color: @modal-content-bg;\n border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)\n border: 1px solid @modal-content-border-color;\n border-radius: @border-radius-large;\n .box-shadow(0 3px 9px rgba(0,0,0,.5));\n background-clip: padding-box;\n // Remove focus outline from opened modal\n outline: 0;\n}\n\n// Modal background\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: @zindex-modal-background;\n background-color: @modal-backdrop-bg;\n // Fade for backdrop\n &.fade { .opacity(0); }\n &.in { .opacity(@modal-backdrop-opacity); }\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n padding: @modal-title-padding;\n border-bottom: 1px solid @modal-header-border-color;\n min-height: (@modal-title-padding + @modal-title-line-height);\n}\n// Close icon\n.modal-header .close {\n margin-top: -2px;\n}\n\n// Title text within header\n.modal-title {\n margin: 0;\n line-height: @modal-title-line-height;\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n position: relative;\n padding: @modal-inner-padding;\n}\n\n// Footer (for actions)\n.modal-footer {\n padding: @modal-inner-padding;\n text-align: right; // right align buttons\n border-top: 1px solid @modal-footer-border-color;\n &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons\n\n // Properly space out buttons\n .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0; // account for input[type=\"submit\"] which gets the bottom margin like all other inputs\n }\n // but override that for button groups\n .btn-group .btn + .btn {\n margin-left: -1px;\n }\n // and override it for block buttons as well\n .btn-block + .btn-block {\n margin-left: 0;\n }\n}\n\n// Measure scrollbar width for padding body during modal show/hide\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n// Scale up the modal\n@media (min-width: @screen-sm-min) {\n // Automatically set modal's width for larger viewports\n .modal-dialog {\n width: @modal-md;\n margin: 30px auto;\n }\n .modal-content {\n .box-shadow(0 5px 15px rgba(0,0,0,.5));\n }\n\n // Modal sizes\n .modal-sm { width: @modal-sm; }\n}\n\n@media (min-width: @screen-md-min) {\n .modal-lg { width: @modal-lg; }\n}\n","//\n// Tooltips\n// --------------------------------------------------\n\n\n// Base class\n.tooltip {\n position: absolute;\n z-index: @zindex-tooltip;\n display: block;\n // Reset font and text properties given new insertion method\n font-family: @font-family-base;\n font-size: @font-size-small;\n font-weight: normal;\n line-height: 1.4;\n .opacity(0);\n\n &.in { .opacity(@tooltip-opacity); }\n &.top { margin-top: -3px; padding: @tooltip-arrow-width 0; }\n &.right { margin-left: 3px; padding: 0 @tooltip-arrow-width; }\n &.bottom { margin-top: 3px; padding: @tooltip-arrow-width 0; }\n &.left { margin-left: -3px; padding: 0 @tooltip-arrow-width; }\n}\n\n// Wrapper for the tooltip content\n.tooltip-inner {\n max-width: @tooltip-max-width;\n padding: 3px 8px;\n color: @tooltip-color;\n text-align: center;\n text-decoration: none;\n background-color: @tooltip-bg;\n border-radius: @border-radius-base;\n}\n\n// Arrows\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n// Note: Deprecated .top-left, .top-right, .bottom-left, and .bottom-right as of v3.3.1\n.tooltip {\n &.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.top-left .tooltip-arrow {\n bottom: 0;\n right: @tooltip-arrow-width;\n margin-bottom: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.top-right .tooltip-arrow {\n bottom: 0;\n left: @tooltip-arrow-width;\n margin-bottom: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0;\n border-right-color: @tooltip-arrow-color;\n }\n &.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-left-color: @tooltip-arrow-color;\n }\n &.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n &.bottom-left .tooltip-arrow {\n top: 0;\n right: @tooltip-arrow-width;\n margin-top: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n &.bottom-right .tooltip-arrow {\n top: 0;\n left: @tooltip-arrow-width;\n margin-top: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n}\n","//\n// Popovers\n// --------------------------------------------------\n\n\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: @zindex-popover;\n display: none;\n max-width: @popover-max-width;\n padding: 1px;\n // Reset font and text properties given new insertion method\n font-family: @font-family-base;\n font-size: @font-size-base;\n font-weight: normal;\n line-height: @line-height-base;\n text-align: left;\n background-color: @popover-bg;\n background-clip: padding-box;\n border: 1px solid @popover-fallback-border-color;\n border: 1px solid @popover-border-color;\n border-radius: @border-radius-large;\n .box-shadow(0 5px 10px rgba(0,0,0,.2));\n\n // Overrides for proper insertion\n white-space: normal;\n\n // Offset the popover to account for the popover arrow\n &.top { margin-top: -@popover-arrow-width; }\n &.right { margin-left: @popover-arrow-width; }\n &.bottom { margin-top: @popover-arrow-width; }\n &.left { margin-left: -@popover-arrow-width; }\n}\n\n.popover-title {\n margin: 0; // reset heading margin\n padding: 8px 14px;\n font-size: @font-size-base;\n background-color: @popover-title-bg;\n border-bottom: 1px solid darken(@popover-title-bg, 5%);\n border-radius: (@border-radius-large - 1) (@border-radius-large - 1) 0 0;\n}\n\n.popover-content {\n padding: 9px 14px;\n}\n\n// Arrows\n//\n// .arrow is outer, .arrow:after is inner\n\n.popover > .arrow {\n &,\n &:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n }\n}\n.popover > .arrow {\n border-width: @popover-arrow-outer-width;\n}\n.popover > .arrow:after {\n border-width: @popover-arrow-width;\n content: \"\";\n}\n\n.popover {\n &.top > .arrow {\n left: 50%;\n margin-left: -@popover-arrow-outer-width;\n border-bottom-width: 0;\n border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-top-color: @popover-arrow-outer-color;\n bottom: -@popover-arrow-outer-width;\n &:after {\n content: \" \";\n bottom: 1px;\n margin-left: -@popover-arrow-width;\n border-bottom-width: 0;\n border-top-color: @popover-arrow-color;\n }\n }\n &.right > .arrow {\n top: 50%;\n left: -@popover-arrow-outer-width;\n margin-top: -@popover-arrow-outer-width;\n border-left-width: 0;\n border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-right-color: @popover-arrow-outer-color;\n &:after {\n content: \" \";\n left: 1px;\n bottom: -@popover-arrow-width;\n border-left-width: 0;\n border-right-color: @popover-arrow-color;\n }\n }\n &.bottom > .arrow {\n left: 50%;\n margin-left: -@popover-arrow-outer-width;\n border-top-width: 0;\n border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-bottom-color: @popover-arrow-outer-color;\n top: -@popover-arrow-outer-width;\n &:after {\n content: \" \";\n top: 1px;\n margin-left: -@popover-arrow-width;\n border-top-width: 0;\n border-bottom-color: @popover-arrow-color;\n }\n }\n\n &.left > .arrow {\n top: 50%;\n right: -@popover-arrow-outer-width;\n margin-top: -@popover-arrow-outer-width;\n border-right-width: 0;\n border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-left-color: @popover-arrow-outer-color;\n &:after {\n content: \" \";\n right: 1px;\n border-right-width: 0;\n border-left-color: @popover-arrow-color;\n bottom: -@popover-arrow-width;\n }\n }\n}\n","//\n// Carousel\n// --------------------------------------------------\n\n\n// Wrapper for the slide container and indicators\n.carousel {\n position: relative;\n}\n\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n\n > .item {\n display: none;\n position: relative;\n .transition(.6s ease-in-out left);\n\n // Account for jankitude on images\n > img,\n > a > img {\n &:extend(.img-responsive);\n line-height: 1;\n }\n\n // WebKit CSS3 transforms for supported devices\n @media all and (transform-3d), (-webkit-transform-3d) {\n .transition-transform(~'0.6s ease-in-out');\n .backface-visibility(~'hidden');\n .perspective(1000);\n\n &.next,\n &.active.right {\n .translate3d(100%, 0, 0);\n left: 0;\n }\n &.prev,\n &.active.left {\n .translate3d(-100%, 0, 0);\n left: 0;\n }\n &.next.left,\n &.prev.right,\n &.active {\n .translate3d(0, 0, 0);\n left: 0;\n }\n }\n }\n\n > .active,\n > .next,\n > .prev {\n display: block;\n }\n\n > .active {\n left: 0;\n }\n\n > .next,\n > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n }\n\n > .next {\n left: 100%;\n }\n > .prev {\n left: -100%;\n }\n > .next.left,\n > .prev.right {\n left: 0;\n }\n\n > .active.left {\n left: -100%;\n }\n > .active.right {\n left: 100%;\n }\n\n}\n\n// Left/right controls for nav\n// ---------------------------\n\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: @carousel-control-width;\n .opacity(@carousel-control-opacity);\n font-size: @carousel-control-font-size;\n color: @carousel-control-color;\n text-align: center;\n text-shadow: @carousel-text-shadow;\n // We can't have this transition here because WebKit cancels the carousel\n // animation if you trip this while in the middle of another animation.\n\n // Set gradients for backgrounds\n &.left {\n #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001));\n }\n &.right {\n left: auto;\n right: 0;\n #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5));\n }\n\n // Hover/focus state\n &:hover,\n &:focus {\n outline: 0;\n color: @carousel-control-color;\n text-decoration: none;\n .opacity(.9);\n }\n\n // Toggles\n .icon-prev,\n .icon-next,\n .glyphicon-chevron-left,\n .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n z-index: 5;\n display: inline-block;\n }\n .icon-prev,\n .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n }\n .icon-next,\n .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n }\n .icon-prev,\n .icon-next {\n width: 20px;\n height: 20px;\n margin-top: -10px;\n line-height: 1;\n font-family: serif;\n }\n\n\n .icon-prev {\n &:before {\n content: '\\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)\n }\n }\n .icon-next {\n &:before {\n content: '\\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)\n }\n }\n}\n\n// Optional indicator pips\n//\n// Add an unordered list with the following class and add a list item for each\n// slide your carousel holds.\n\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n margin-left: -30%;\n padding-left: 0;\n list-style: none;\n text-align: center;\n\n li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid @carousel-indicator-border-color;\n border-radius: 10px;\n cursor: pointer;\n\n // IE8-9 hack for event handling\n //\n // Internet Explorer 8-9 does not support clicks on elements without a set\n // `background-color`. We cannot use `filter` since that's not viewed as a\n // background color by the browser. Thus, a hack is needed.\n // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer\n //\n // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we\n // set alpha transparency for the best results possible.\n background-color: #000 \\9; // IE8\n background-color: rgba(0,0,0,0); // IE9\n }\n .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: @carousel-indicator-active-bg;\n }\n}\n\n// Optional captions\n// -----------------------------\n// Hidden by default for smaller viewports\n.carousel-caption {\n position: absolute;\n left: 15%;\n right: 15%;\n bottom: 20px;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: @carousel-caption-color;\n text-align: center;\n text-shadow: @carousel-text-shadow;\n & .btn {\n text-shadow: none; // No shadow for button elements in carousel-caption\n }\n}\n\n\n// Scale up controls for tablets and up\n@media screen and (min-width: @screen-sm-min) {\n\n // Scale up the controls a smidge\n .carousel-control {\n .glyphicon-chevron-left,\n .glyphicon-chevron-right,\n .icon-prev,\n .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -15px;\n font-size: 30px;\n }\n .glyphicon-chevron-left,\n .icon-prev {\n margin-left: -15px;\n }\n .glyphicon-chevron-right,\n .icon-next {\n margin-right: -15px;\n }\n }\n\n // Show and left align the captions\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n\n // Move up the indicators\n .carousel-indicators {\n bottom: 20px;\n }\n}\n","// Clearfix\n//\n// For modern browsers\n// 1. The space content is one way to avoid an Opera bug when the\n// contenteditable attribute is included anywhere else in the document.\n// Otherwise it causes space to appear at the top and bottom of elements\n// that are clearfixed.\n// 2. The use of `table` rather than `block` is only necessary if using\n// `:before` to contain the top-margins of child elements.\n//\n// Source: http://nicolasgallagher.com/micro-clearfix-hack/\n\n.clearfix() {\n &:before,\n &:after {\n content: \" \"; // 1\n display: table; // 2\n }\n &:after {\n clear: both;\n }\n}\n","// Center-align a block level element\n\n.center-block() {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n","// CSS image replacement\n//\n// Heads up! v3 launched with with only `.hide-text()`, but per our pattern for\n// mixins being reused as classes with the same name, this doesn't hold up. As\n// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`.\n//\n// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757\n\n// Deprecated as of v3.0.1 (will be removed in v4)\n.hide-text() {\n font: ~\"0/0\" a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n\n// New mixin to use as of v3.0.1\n.text-hide() {\n .hide-text();\n}\n","//\n// Responsive: Utility classes\n// --------------------------------------------------\n\n\n// IE10 in Windows (Phone) 8\n//\n// Support for responsive views via media queries is kind of borked in IE10, for\n// Surface/desktop in split view and for Windows Phone 8. This particular fix\n// must be accompanied by a snippet of JavaScript to sniff the user agent and\n// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at\n// our Getting Started page for more information on this bug.\n//\n// For more information, see the following:\n//\n// Issue: https://github.com/twbs/bootstrap/issues/10497\n// Docs: http://getbootstrap.com/getting-started/#support-ie10-width\n// Source: http://timkadlec.com/2013/01/windows-phone-8-and-device-width/\n// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/\n\n@-ms-viewport {\n width: device-width;\n}\n\n\n// Visibility utilities\n// Note: Deprecated .visible-xs, .visible-sm, .visible-md, and .visible-lg as of v3.2.0\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n .responsive-invisibility();\n}\n\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n\n.visible-xs {\n @media (max-width: @screen-xs-max) {\n .responsive-visibility();\n }\n}\n.visible-xs-block {\n @media (max-width: @screen-xs-max) {\n display: block !important;\n }\n}\n.visible-xs-inline {\n @media (max-width: @screen-xs-max) {\n display: inline !important;\n }\n}\n.visible-xs-inline-block {\n @media (max-width: @screen-xs-max) {\n display: inline-block !important;\n }\n}\n\n.visible-sm {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .responsive-visibility();\n }\n}\n.visible-sm-block {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: block !important;\n }\n}\n.visible-sm-inline {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: inline !important;\n }\n}\n.visible-sm-inline-block {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: inline-block !important;\n }\n}\n\n.visible-md {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .responsive-visibility();\n }\n}\n.visible-md-block {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: block !important;\n }\n}\n.visible-md-inline {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: inline !important;\n }\n}\n.visible-md-inline-block {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: inline-block !important;\n }\n}\n\n.visible-lg {\n @media (min-width: @screen-lg-min) {\n .responsive-visibility();\n }\n}\n.visible-lg-block {\n @media (min-width: @screen-lg-min) {\n display: block !important;\n }\n}\n.visible-lg-inline {\n @media (min-width: @screen-lg-min) {\n display: inline !important;\n }\n}\n.visible-lg-inline-block {\n @media (min-width: @screen-lg-min) {\n display: inline-block !important;\n }\n}\n\n.hidden-xs {\n @media (max-width: @screen-xs-max) {\n .responsive-invisibility();\n }\n}\n.hidden-sm {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .responsive-invisibility();\n }\n}\n.hidden-md {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .responsive-invisibility();\n }\n}\n.hidden-lg {\n @media (min-width: @screen-lg-min) {\n .responsive-invisibility();\n }\n}\n\n\n// Print utilities\n//\n// Media queries are placed on the inside to be mixin-friendly.\n\n// Note: Deprecated .visible-print as of v3.2.0\n.visible-print {\n .responsive-invisibility();\n\n @media print {\n .responsive-visibility();\n }\n}\n.visible-print-block {\n display: none !important;\n\n @media print {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n\n @media print {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n\n @media print {\n display: inline-block !important;\n }\n}\n\n.hidden-print {\n @media print {\n .responsive-invisibility();\n }\n}\n","// Responsive utilities\n\n//\n// More easily include all the states for responsive-utilities.less.\n.responsive-visibility() {\n display: block !important;\n table& { display: table; }\n tr& { display: table-row !important; }\n th&,\n td& { display: table-cell !important; }\n}\n\n.responsive-invisibility() {\n display: none !important;\n}\n"]} \ No newline at end of file diff --git a/assets/bootstrap/css/bootstrap.min.css b/assets/bootstrap/css/bootstrap.min.css deleted file mode 100644 index cd1c616a..00000000 --- a/assets/bootstrap/css/bootstrap.min.css +++ /dev/null @@ -1,5 +0,0 @@ -/*! - * Bootstrap v3.3.4 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date],input[type=time],input[type=datetime-local],input[type=month]{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px \9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.form-group-sm .form-control{height:30px;line-height:30px}select[multiple].form-group-sm .form-control,textarea.form-group-sm .form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:5px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.form-group-lg .form-control{height:46px;line-height:46px}select[multiple].form-group-lg .form-control,textarea.form-group-lg .form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:10px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.33px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.active,.btn-default.focus,.btn-default:active,.btn-default:focus,.btn-default:hover,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.active,.btn-primary.focus,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.active,.btn-success.focus,.btn-success:active,.btn-success:focus,.btn-success:hover,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.active,.btn-info.focus,.btn-info:active,.btn-info:focus,.btn-info:hover,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.active,.btn-warning.focus,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.active,.btn-danger.focus,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px)and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding:48px 0}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:400;line-height:1.4;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:400;line-height:1.42857143;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;perspective:1000}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px)and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px)and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px)and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px)and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px)and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px)and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px)and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px)and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px)and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px)and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} \ No newline at end of file diff --git a/assets/bootstrap/fonts/glyphicons-halflings-regular.eot b/assets/bootstrap/fonts/glyphicons-halflings-regular.eot deleted file mode 100644 index b93a4953..00000000 Binary files a/assets/bootstrap/fonts/glyphicons-halflings-regular.eot and /dev/null differ diff --git a/assets/bootstrap/fonts/glyphicons-halflings-regular.svg b/assets/bootstrap/fonts/glyphicons-halflings-regular.svg deleted file mode 100644 index 94fb5490..00000000 --- a/assets/bootstrap/fonts/glyphicons-halflings-regular.svg +++ /dev/null @@ -1,288 +0,0 @@ -<?xml version="1.0" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > -<svg xmlns="http://www.w3.org/2000/svg"> -<metadata></metadata> -<defs> -<font id="glyphicons_halflingsregular" horiz-adv-x="1200" > -<font-face units-per-em="1200" ascent="960" descent="-240" /> -<missing-glyph horiz-adv-x="500" /> -<glyph horiz-adv-x="0" /> -<glyph horiz-adv-x="400" /> -<glyph unicode=" " /> -<glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" /> -<glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="&#xa0;" /> -<glyph unicode="&#xa5;" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" /> -<glyph unicode="&#x2000;" horiz-adv-x="650" /> -<glyph unicode="&#x2001;" horiz-adv-x="1300" /> -<glyph unicode="&#x2002;" horiz-adv-x="650" /> -<glyph unicode="&#x2003;" horiz-adv-x="1300" /> -<glyph unicode="&#x2004;" horiz-adv-x="433" /> -<glyph unicode="&#x2005;" horiz-adv-x="325" /> -<glyph unicode="&#x2006;" horiz-adv-x="216" /> -<glyph unicode="&#x2007;" horiz-adv-x="216" /> -<glyph unicode="&#x2008;" horiz-adv-x="162" /> -<glyph unicode="&#x2009;" horiz-adv-x="260" /> -<glyph unicode="&#x200a;" horiz-adv-x="72" /> -<glyph unicode="&#x202f;" horiz-adv-x="260" /> -<glyph unicode="&#x205f;" horiz-adv-x="325" /> -<glyph unicode="&#x20ac;" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" /> -<glyph unicode="&#x20bd;" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" /> -<glyph unicode="&#x2212;" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="&#x231b;" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" /> -<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" /> -<glyph unicode="&#x2601;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" /> -<glyph unicode="&#x26fa;" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " /> -<glyph unicode="&#x2709;" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" /> -<glyph unicode="&#x270f;" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" /> -<glyph unicode="&#xe001;" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" /> -<glyph unicode="&#xe002;" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" /> -<glyph unicode="&#xe003;" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" /> -<glyph unicode="&#xe005;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" /> -<glyph unicode="&#xe006;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" /> -<glyph unicode="&#xe007;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" /> -<glyph unicode="&#xe008;" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" /> -<glyph unicode="&#xe009;" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" /> -<glyph unicode="&#xe010;" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="&#xe011;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" /> -<glyph unicode="&#xe012;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="&#xe013;" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" /> -<glyph unicode="&#xe014;" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" /> -<glyph unicode="&#xe015;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" /> -<glyph unicode="&#xe016;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" /> -<glyph unicode="&#xe017;" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" /> -<glyph unicode="&#xe018;" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" /> -<glyph unicode="&#xe019;" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" /> -<glyph unicode="&#xe020;" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" /> -<glyph unicode="&#xe021;" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" /> -<glyph unicode="&#xe022;" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" /> -<glyph unicode="&#xe023;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" /> -<glyph unicode="&#xe024;" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" /> -<glyph unicode="&#xe025;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" /> -<glyph unicode="&#xe026;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " /> -<glyph unicode="&#xe027;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" /> -<glyph unicode="&#xe028;" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" /> -<glyph unicode="&#xe029;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" /> -<glyph unicode="&#xe030;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" /> -<glyph unicode="&#xe031;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" /> -<glyph unicode="&#xe032;" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" /> -<glyph unicode="&#xe033;" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" /> -<glyph unicode="&#xe034;" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" /> -<glyph unicode="&#xe035;" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" /> -<glyph unicode="&#xe036;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" /> -<glyph unicode="&#xe037;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" /> -<glyph unicode="&#xe038;" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" /> -<glyph unicode="&#xe039;" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" /> -<glyph unicode="&#xe040;" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" /> -<glyph unicode="&#xe041;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" /> -<glyph unicode="&#xe042;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" /> -<glyph unicode="&#xe043;" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" /> -<glyph unicode="&#xe044;" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="&#xe045;" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" /> -<glyph unicode="&#xe046;" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" /> -<glyph unicode="&#xe047;" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" /> -<glyph unicode="&#xe048;" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" /> -<glyph unicode="&#xe049;" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" /> -<glyph unicode="&#xe050;" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" /> -<glyph unicode="&#xe051;" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" /> -<glyph unicode="&#xe052;" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="&#xe053;" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="&#xe054;" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" /> -<glyph unicode="&#xe055;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="&#xe056;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="&#xe057;" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="&#xe058;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="&#xe059;" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" /> -<glyph unicode="&#xe060;" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" /> -<glyph unicode="&#xe062;" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" /> -<glyph unicode="&#xe063;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" /> -<glyph unicode="&#xe064;" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" /> -<glyph unicode="&#xe065;" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" /> -<glyph unicode="&#xe066;" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" /> -<glyph unicode="&#xe067;" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" /> -<glyph unicode="&#xe068;" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" /> -<glyph unicode="&#xe069;" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="&#xe070;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="&#xe071;" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" /> -<glyph unicode="&#xe072;" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" /> -<glyph unicode="&#xe073;" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="&#xe074;" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" /> -<glyph unicode="&#xe075;" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" /> -<glyph unicode="&#xe076;" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="&#xe077;" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="&#xe078;" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="&#xe079;" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" /> -<glyph unicode="&#xe080;" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" /> -<glyph unicode="&#xe081;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" /> -<glyph unicode="&#xe082;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" /> -<glyph unicode="&#xe083;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" /> -<glyph unicode="&#xe084;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" /> -<glyph unicode="&#xe085;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" /> -<glyph unicode="&#xe086;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" /> -<glyph unicode="&#xe087;" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" /> -<glyph unicode="&#xe088;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" /> -<glyph unicode="&#xe089;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" /> -<glyph unicode="&#xe090;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" /> -<glyph unicode="&#xe091;" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" /> -<glyph unicode="&#xe092;" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" /> -<glyph unicode="&#xe093;" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" /> -<glyph unicode="&#xe094;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="&#xe095;" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" /> -<glyph unicode="&#xe096;" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" /> -<glyph unicode="&#xe097;" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" /> -<glyph unicode="&#xe101;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" /> -<glyph unicode="&#xe102;" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" /> -<glyph unicode="&#xe103;" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" /> -<glyph unicode="&#xe104;" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" /> -<glyph unicode="&#xe105;" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" /> -<glyph unicode="&#xe106;" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" /> -<glyph unicode="&#xe107;" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" /> -<glyph unicode="&#xe108;" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" /> -<glyph unicode="&#xe109;" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" /> -<glyph unicode="&#xe110;" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" /> -<glyph unicode="&#xe111;" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" /> -<glyph unicode="&#xe112;" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" /> -<glyph unicode="&#xe113;" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" /> -<glyph unicode="&#xe114;" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" /> -<glyph unicode="&#xe115;" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" /> -<glyph unicode="&#xe116;" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" /> -<glyph unicode="&#xe117;" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" /> -<glyph unicode="&#xe118;" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" /> -<glyph unicode="&#xe119;" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" /> -<glyph unicode="&#xe120;" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" /> -<glyph unicode="&#xe121;" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" /> -<glyph unicode="&#xe122;" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" /> -<glyph unicode="&#xe123;" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" /> -<glyph unicode="&#xe124;" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" /> -<glyph unicode="&#xe125;" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="&#xe126;" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" /> -<glyph unicode="&#xe127;" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="&#xe128;" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="&#xe129;" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="&#xe130;" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" /> -<glyph unicode="&#xe131;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" /> -<glyph unicode="&#xe132;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" /> -<glyph unicode="&#xe133;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" /> -<glyph unicode="&#xe134;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" /> -<glyph unicode="&#xe135;" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" /> -<glyph unicode="&#xe136;" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" /> -<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " /> -<glyph unicode="&#xe138;" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" /> -<glyph unicode="&#xe139;" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" /> -<glyph unicode="&#xe140;" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" /> -<glyph unicode="&#xe141;" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" /> -<glyph unicode="&#xe142;" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" /> -<glyph unicode="&#xe143;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" /> -<glyph unicode="&#xe144;" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" /> -<glyph unicode="&#xe145;" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" /> -<glyph unicode="&#xe146;" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" /> -<glyph unicode="&#xe148;" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" /> -<glyph unicode="&#xe149;" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" /> -<glyph unicode="&#xe150;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" /> -<glyph unicode="&#xe151;" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " /> -<glyph unicode="&#xe152;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " /> -<glyph unicode="&#xe153;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" /> -<glyph unicode="&#xe154;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" /> -<glyph unicode="&#xe155;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" /> -<glyph unicode="&#xe156;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" /> -<glyph unicode="&#xe157;" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" /> -<glyph unicode="&#xe158;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" /> -<glyph unicode="&#xe159;" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" /> -<glyph unicode="&#xe160;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" /> -<glyph unicode="&#xe161;" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" /> -<glyph unicode="&#xe162;" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" /> -<glyph unicode="&#xe163;" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" /> -<glyph unicode="&#xe164;" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" /> -<glyph unicode="&#xe165;" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" /> -<glyph unicode="&#xe166;" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" /> -<glyph unicode="&#xe167;" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" /> -<glyph unicode="&#xe168;" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" /> -<glyph unicode="&#xe169;" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" /> -<glyph unicode="&#xe170;" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" /> -<glyph unicode="&#xe171;" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" /> -<glyph unicode="&#xe172;" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" /> -<glyph unicode="&#xe173;" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" /> -<glyph unicode="&#xe174;" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" /> -<glyph unicode="&#xe175;" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="&#xe176;" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" /> -<glyph unicode="&#xe177;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" /> -<glyph unicode="&#xe178;" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" /> -<glyph unicode="&#xe179;" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" /> -<glyph unicode="&#xe180;" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" /> -<glyph unicode="&#xe181;" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" /> -<glyph unicode="&#xe182;" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" /> -<glyph unicode="&#xe183;" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" /> -<glyph unicode="&#xe184;" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="&#xe185;" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " /> -<glyph unicode="&#xe186;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" /> -<glyph unicode="&#xe187;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" /> -<glyph unicode="&#xe188;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" /> -<glyph unicode="&#xe189;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" /> -<glyph unicode="&#xe190;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" /> -<glyph unicode="&#xe191;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" /> -<glyph unicode="&#xe192;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" /> -<glyph unicode="&#xe193;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" /> -<glyph unicode="&#xe194;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" /> -<glyph unicode="&#xe195;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" /> -<glyph unicode="&#xe197;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" /> -<glyph unicode="&#xe198;" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" /> -<glyph unicode="&#xe199;" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" /> -<glyph unicode="&#xe200;" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" /> -<glyph unicode="&#xe201;" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" /> -<glyph unicode="&#xe202;" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" /> -<glyph unicode="&#xe203;" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" /> -<glyph unicode="&#xe204;" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" /> -<glyph unicode="&#xe205;" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" /> -<glyph unicode="&#xe206;" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" /> -<glyph unicode="&#xe209;" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" /> -<glyph unicode="&#xe210;" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" /> -<glyph unicode="&#xe211;" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="&#xe212;" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="&#xe213;" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="&#xe214;" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="&#xe215;" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="&#xe216;" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" /> -<glyph unicode="&#xe218;" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" /> -<glyph unicode="&#xe219;" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" /> -<glyph unicode="&#xe221;" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="&#xe223;" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" /> -<glyph unicode="&#xe224;" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " /> -<glyph unicode="&#xe225;" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" /> -<glyph unicode="&#xe226;" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" /> -<glyph unicode="&#xe227;" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" /> -<glyph unicode="&#xe230;" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" /> -<glyph unicode="&#xe231;" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" /> -<glyph unicode="&#xe232;" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" /> -<glyph unicode="&#xe233;" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" /> -<glyph unicode="&#xe234;" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" /> -<glyph unicode="&#xe235;" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" /> -<glyph unicode="&#xe236;" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" /> -<glyph unicode="&#xe237;" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" /> -<glyph unicode="&#xe238;" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" /> -<glyph unicode="&#xe239;" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" /> -<glyph unicode="&#xe240;" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" /> -<glyph unicode="&#xe241;" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" /> -<glyph unicode="&#xe242;" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" /> -<glyph unicode="&#xe243;" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" /> -<glyph unicode="&#xe244;" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" /> -<glyph unicode="&#xe245;" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" /> -<glyph unicode="&#xe246;" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" /> -<glyph unicode="&#xe247;" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="&#xe248;" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" /> -<glyph unicode="&#xe249;" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="&#xe250;" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" /> -<glyph unicode="&#xe251;" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" /> -<glyph unicode="&#xe252;" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" /> -<glyph unicode="&#xe253;" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" /> -<glyph unicode="&#xe254;" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" /> -<glyph unicode="&#xe255;" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" /> -<glyph unicode="&#xe256;" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" /> -<glyph unicode="&#xe257;" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" /> -<glyph unicode="&#xe258;" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" /> -<glyph unicode="&#xe259;" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" /> -<glyph unicode="&#xe260;" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" /> -<glyph unicode="&#xf8ff;" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" /> -<glyph unicode="&#x1f511;" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" /> -<glyph unicode="&#x1f6aa;" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" /> -</font> -</defs></svg> \ No newline at end of file diff --git a/assets/bootstrap/fonts/glyphicons-halflings-regular.ttf b/assets/bootstrap/fonts/glyphicons-halflings-regular.ttf deleted file mode 100644 index 1413fc60..00000000 Binary files a/assets/bootstrap/fonts/glyphicons-halflings-regular.ttf and /dev/null differ diff --git a/assets/bootstrap/fonts/glyphicons-halflings-regular.woff b/assets/bootstrap/fonts/glyphicons-halflings-regular.woff deleted file mode 100644 index 9e612858..00000000 Binary files a/assets/bootstrap/fonts/glyphicons-halflings-regular.woff and /dev/null differ diff --git a/assets/bootstrap/fonts/glyphicons-halflings-regular.woff2 b/assets/bootstrap/fonts/glyphicons-halflings-regular.woff2 deleted file mode 100644 index 64539b54..00000000 Binary files a/assets/bootstrap/fonts/glyphicons-halflings-regular.woff2 and /dev/null differ diff --git a/assets/bootstrap/js/bootstrap.js b/assets/bootstrap/js/bootstrap.js deleted file mode 100644 index 1c88b71e..00000000 --- a/assets/bootstrap/js/bootstrap.js +++ /dev/null @@ -1,2317 +0,0 @@ -/*! - * Bootstrap v3.3.4 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -if (typeof jQuery === 'undefined') { - throw new Error('Bootstrap\'s JavaScript requires jQuery') -} - -+function ($) { - 'use strict'; - var version = $.fn.jquery.split(' ')[0].split('.') - if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) { - throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher') - } -}(jQuery); - -/* ======================================================================== - * Bootstrap: transition.js v3.3.4 - * http://getbootstrap.com/javascript/#transitions - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) - // ============================================================ - - function transitionEnd() { - var el = document.createElement('bootstrap') - - var transEndEventNames = { - WebkitTransition : 'webkitTransitionEnd', - MozTransition : 'transitionend', - OTransition : 'oTransitionEnd otransitionend', - transition : 'transitionend' - } - - for (var name in transEndEventNames) { - if (el.style[name] !== undefined) { - return { end: transEndEventNames[name] } - } - } - - return false // explicit for ie8 ( ._.) - } - - // http://blog.alexmaccaw.com/css-transitions - $.fn.emulateTransitionEnd = function (duration) { - var called = false - var $el = this - $(this).one('bsTransitionEnd', function () { called = true }) - var callback = function () { if (!called) $($el).trigger($.support.transition.end) } - setTimeout(callback, duration) - return this - } - - $(function () { - $.support.transition = transitionEnd() - - if (!$.support.transition) return - - $.event.special.bsTransitionEnd = { - bindType: $.support.transition.end, - delegateType: $.support.transition.end, - handle: function (e) { - if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) - } - } - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: alert.js v3.3.4 - * http://getbootstrap.com/javascript/#alerts - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // ALERT CLASS DEFINITION - // ====================== - - var dismiss = '[data-dismiss="alert"]' - var Alert = function (el) { - $(el).on('click', dismiss, this.close) - } - - Alert.VERSION = '3.3.4' - - Alert.TRANSITION_DURATION = 150 - - Alert.prototype.close = function (e) { - var $this = $(this) - var selector = $this.attr('data-target') - - if (!selector) { - selector = $this.attr('href') - selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 - } - - var $parent = $(selector) - - if (e) e.preventDefault() - - if (!$parent.length) { - $parent = $this.closest('.alert') - } - - $parent.trigger(e = $.Event('close.bs.alert')) - - if (e.isDefaultPrevented()) return - - $parent.removeClass('in') - - function removeElement() { - // detach from parent, fire event then clean up data - $parent.detach().trigger('closed.bs.alert').remove() - } - - $.support.transition && $parent.hasClass('fade') ? - $parent - .one('bsTransitionEnd', removeElement) - .emulateTransitionEnd(Alert.TRANSITION_DURATION) : - removeElement() - } - - - // ALERT PLUGIN DEFINITION - // ======================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.alert') - - if (!data) $this.data('bs.alert', (data = new Alert(this))) - if (typeof option == 'string') data[option].call($this) - }) - } - - var old = $.fn.alert - - $.fn.alert = Plugin - $.fn.alert.Constructor = Alert - - - // ALERT NO CONFLICT - // ================= - - $.fn.alert.noConflict = function () { - $.fn.alert = old - return this - } - - - // ALERT DATA-API - // ============== - - $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: button.js v3.3.4 - * http://getbootstrap.com/javascript/#buttons - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // BUTTON PUBLIC CLASS DEFINITION - // ============================== - - var Button = function (element, options) { - this.$element = $(element) - this.options = $.extend({}, Button.DEFAULTS, options) - this.isLoading = false - } - - Button.VERSION = '3.3.4' - - Button.DEFAULTS = { - loadingText: 'loading...' - } - - Button.prototype.setState = function (state) { - var d = 'disabled' - var $el = this.$element - var val = $el.is('input') ? 'val' : 'html' - var data = $el.data() - - state = state + 'Text' - - if (data.resetText == null) $el.data('resetText', $el[val]()) - - // push to event loop to allow forms to submit - setTimeout($.proxy(function () { - $el[val](data[state] == null ? this.options[state] : data[state]) - - if (state == 'loadingText') { - this.isLoading = true - $el.addClass(d).attr(d, d) - } else if (this.isLoading) { - this.isLoading = false - $el.removeClass(d).removeAttr(d) - } - }, this), 0) - } - - Button.prototype.toggle = function () { - var changed = true - var $parent = this.$element.closest('[data-toggle="buttons"]') - - if ($parent.length) { - var $input = this.$element.find('input') - if ($input.prop('type') == 'radio') { - if ($input.prop('checked') && this.$element.hasClass('active')) changed = false - else $parent.find('.active').removeClass('active') - } - if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change') - } else { - this.$element.attr('aria-pressed', !this.$element.hasClass('active')) - } - - if (changed) this.$element.toggleClass('active') - } - - - // BUTTON PLUGIN DEFINITION - // ======================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.button') - var options = typeof option == 'object' && option - - if (!data) $this.data('bs.button', (data = new Button(this, options))) - - if (option == 'toggle') data.toggle() - else if (option) data.setState(option) - }) - } - - var old = $.fn.button - - $.fn.button = Plugin - $.fn.button.Constructor = Button - - - // BUTTON NO CONFLICT - // ================== - - $.fn.button.noConflict = function () { - $.fn.button = old - return this - } - - - // BUTTON DATA-API - // =============== - - $(document) - .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { - var $btn = $(e.target) - if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') - Plugin.call($btn, 'toggle') - e.preventDefault() - }) - .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { - $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: carousel.js v3.3.4 - * http://getbootstrap.com/javascript/#carousel - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // CAROUSEL CLASS DEFINITION - // ========================= - - var Carousel = function (element, options) { - this.$element = $(element) - this.$indicators = this.$element.find('.carousel-indicators') - this.options = options - this.paused = null - this.sliding = null - this.interval = null - this.$active = null - this.$items = null - - this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) - - this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element - .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) - .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) - } - - Carousel.VERSION = '3.3.4' - - Carousel.TRANSITION_DURATION = 600 - - Carousel.DEFAULTS = { - interval: 5000, - pause: 'hover', - wrap: true, - keyboard: true - } - - Carousel.prototype.keydown = function (e) { - if (/input|textarea/i.test(e.target.tagName)) return - switch (e.which) { - case 37: this.prev(); break - case 39: this.next(); break - default: return - } - - e.preventDefault() - } - - Carousel.prototype.cycle = function (e) { - e || (this.paused = false) - - this.interval && clearInterval(this.interval) - - this.options.interval - && !this.paused - && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) - - return this - } - - Carousel.prototype.getItemIndex = function (item) { - this.$items = item.parent().children('.item') - return this.$items.index(item || this.$active) - } - - Carousel.prototype.getItemForDirection = function (direction, active) { - var activeIndex = this.getItemIndex(active) - var willWrap = (direction == 'prev' && activeIndex === 0) - || (direction == 'next' && activeIndex == (this.$items.length - 1)) - if (willWrap && !this.options.wrap) return active - var delta = direction == 'prev' ? -1 : 1 - var itemIndex = (activeIndex + delta) % this.$items.length - return this.$items.eq(itemIndex) - } - - Carousel.prototype.to = function (pos) { - var that = this - var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) - - if (pos > (this.$items.length - 1) || pos < 0) return - - if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" - if (activeIndex == pos) return this.pause().cycle() - - return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) - } - - Carousel.prototype.pause = function (e) { - e || (this.paused = true) - - if (this.$element.find('.next, .prev').length && $.support.transition) { - this.$element.trigger($.support.transition.end) - this.cycle(true) - } - - this.interval = clearInterval(this.interval) - - return this - } - - Carousel.prototype.next = function () { - if (this.sliding) return - return this.slide('next') - } - - Carousel.prototype.prev = function () { - if (this.sliding) return - return this.slide('prev') - } - - Carousel.prototype.slide = function (type, next) { - var $active = this.$element.find('.item.active') - var $next = next || this.getItemForDirection(type, $active) - var isCycling = this.interval - var direction = type == 'next' ? 'left' : 'right' - var that = this - - if ($next.hasClass('active')) return (this.sliding = false) - - var relatedTarget = $next[0] - var slideEvent = $.Event('slide.bs.carousel', { - relatedTarget: relatedTarget, - direction: direction - }) - this.$element.trigger(slideEvent) - if (slideEvent.isDefaultPrevented()) return - - this.sliding = true - - isCycling && this.pause() - - if (this.$indicators.length) { - this.$indicators.find('.active').removeClass('active') - var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) - $nextIndicator && $nextIndicator.addClass('active') - } - - var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" - if ($.support.transition && this.$element.hasClass('slide')) { - $next.addClass(type) - $next[0].offsetWidth // force reflow - $active.addClass(direction) - $next.addClass(direction) - $active - .one('bsTransitionEnd', function () { - $next.removeClass([type, direction].join(' ')).addClass('active') - $active.removeClass(['active', direction].join(' ')) - that.sliding = false - setTimeout(function () { - that.$element.trigger(slidEvent) - }, 0) - }) - .emulateTransitionEnd(Carousel.TRANSITION_DURATION) - } else { - $active.removeClass('active') - $next.addClass('active') - this.sliding = false - this.$element.trigger(slidEvent) - } - - isCycling && this.cycle() - - return this - } - - - // CAROUSEL PLUGIN DEFINITION - // ========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.carousel') - var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) - var action = typeof option == 'string' ? option : options.slide - - if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) - if (typeof option == 'number') data.to(option) - else if (action) data[action]() - else if (options.interval) data.pause().cycle() - }) - } - - var old = $.fn.carousel - - $.fn.carousel = Plugin - $.fn.carousel.Constructor = Carousel - - - // CAROUSEL NO CONFLICT - // ==================== - - $.fn.carousel.noConflict = function () { - $.fn.carousel = old - return this - } - - - // CAROUSEL DATA-API - // ================= - - var clickHandler = function (e) { - var href - var $this = $(this) - var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 - if (!$target.hasClass('carousel')) return - var options = $.extend({}, $target.data(), $this.data()) - var slideIndex = $this.attr('data-slide-to') - if (slideIndex) options.interval = false - - Plugin.call($target, options) - - if (slideIndex) { - $target.data('bs.carousel').to(slideIndex) - } - - e.preventDefault() - } - - $(document) - .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) - .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) - - $(window).on('load', function () { - $('[data-ride="carousel"]').each(function () { - var $carousel = $(this) - Plugin.call($carousel, $carousel.data()) - }) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: collapse.js v3.3.4 - * http://getbootstrap.com/javascript/#collapse - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // COLLAPSE PUBLIC CLASS DEFINITION - // ================================ - - var Collapse = function (element, options) { - this.$element = $(element) - this.options = $.extend({}, Collapse.DEFAULTS, options) - this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' + - '[data-toggle="collapse"][data-target="#' + element.id + '"]') - this.transitioning = null - - if (this.options.parent) { - this.$parent = this.getParent() - } else { - this.addAriaAndCollapsedClass(this.$element, this.$trigger) - } - - if (this.options.toggle) this.toggle() - } - - Collapse.VERSION = '3.3.4' - - Collapse.TRANSITION_DURATION = 350 - - Collapse.DEFAULTS = { - toggle: true - } - - Collapse.prototype.dimension = function () { - var hasWidth = this.$element.hasClass('width') - return hasWidth ? 'width' : 'height' - } - - Collapse.prototype.show = function () { - if (this.transitioning || this.$element.hasClass('in')) return - - var activesData - var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing') - - if (actives && actives.length) { - activesData = actives.data('bs.collapse') - if (activesData && activesData.transitioning) return - } - - var startEvent = $.Event('show.bs.collapse') - this.$element.trigger(startEvent) - if (startEvent.isDefaultPrevented()) return - - if (actives && actives.length) { - Plugin.call(actives, 'hide') - activesData || actives.data('bs.collapse', null) - } - - var dimension = this.dimension() - - this.$element - .removeClass('collapse') - .addClass('collapsing')[dimension](0) - .attr('aria-expanded', true) - - this.$trigger - .removeClass('collapsed') - .attr('aria-expanded', true) - - this.transitioning = 1 - - var complete = function () { - this.$element - .removeClass('collapsing') - .addClass('collapse in')[dimension]('') - this.transitioning = 0 - this.$element - .trigger('shown.bs.collapse') - } - - if (!$.support.transition) return complete.call(this) - - var scrollSize = $.camelCase(['scroll', dimension].join('-')) - - this.$element - .one('bsTransitionEnd', $.proxy(complete, this)) - .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]) - } - - Collapse.prototype.hide = function () { - if (this.transitioning || !this.$element.hasClass('in')) return - - var startEvent = $.Event('hide.bs.collapse') - this.$element.trigger(startEvent) - if (startEvent.isDefaultPrevented()) return - - var dimension = this.dimension() - - this.$element[dimension](this.$element[dimension]())[0].offsetHeight - - this.$element - .addClass('collapsing') - .removeClass('collapse in') - .attr('aria-expanded', false) - - this.$trigger - .addClass('collapsed') - .attr('aria-expanded', false) - - this.transitioning = 1 - - var complete = function () { - this.transitioning = 0 - this.$element - .removeClass('collapsing') - .addClass('collapse') - .trigger('hidden.bs.collapse') - } - - if (!$.support.transition) return complete.call(this) - - this.$element - [dimension](0) - .one('bsTransitionEnd', $.proxy(complete, this)) - .emulateTransitionEnd(Collapse.TRANSITION_DURATION) - } - - Collapse.prototype.toggle = function () { - this[this.$element.hasClass('in') ? 'hide' : 'show']() - } - - Collapse.prototype.getParent = function () { - return $(this.options.parent) - .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') - .each($.proxy(function (i, element) { - var $element = $(element) - this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) - }, this)) - .end() - } - - Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { - var isOpen = $element.hasClass('in') - - $element.attr('aria-expanded', isOpen) - $trigger - .toggleClass('collapsed', !isOpen) - .attr('aria-expanded', isOpen) - } - - function getTargetFromTrigger($trigger) { - var href - var target = $trigger.attr('data-target') - || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 - - return $(target) - } - - - // COLLAPSE PLUGIN DEFINITION - // ========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.collapse') - var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) - - if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false - if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.collapse - - $.fn.collapse = Plugin - $.fn.collapse.Constructor = Collapse - - - // COLLAPSE NO CONFLICT - // ==================== - - $.fn.collapse.noConflict = function () { - $.fn.collapse = old - return this - } - - - // COLLAPSE DATA-API - // ================= - - $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { - var $this = $(this) - - if (!$this.attr('data-target')) e.preventDefault() - - var $target = getTargetFromTrigger($this) - var data = $target.data('bs.collapse') - var option = data ? 'toggle' : $this.data() - - Plugin.call($target, option) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: dropdown.js v3.3.4 - * http://getbootstrap.com/javascript/#dropdowns - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // DROPDOWN CLASS DEFINITION - // ========================= - - var backdrop = '.dropdown-backdrop' - var toggle = '[data-toggle="dropdown"]' - var Dropdown = function (element) { - $(element).on('click.bs.dropdown', this.toggle) - } - - Dropdown.VERSION = '3.3.4' - - Dropdown.prototype.toggle = function (e) { - var $this = $(this) - - if ($this.is('.disabled, :disabled')) return - - var $parent = getParent($this) - var isActive = $parent.hasClass('open') - - clearMenus() - - if (!isActive) { - if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { - // if mobile we use a backdrop because click events don't delegate - $('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus) - } - - var relatedTarget = { relatedTarget: this } - $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget)) - - if (e.isDefaultPrevented()) return - - $this - .trigger('focus') - .attr('aria-expanded', 'true') - - $parent - .toggleClass('open') - .trigger('shown.bs.dropdown', relatedTarget) - } - - return false - } - - Dropdown.prototype.keydown = function (e) { - if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return - - var $this = $(this) - - e.preventDefault() - e.stopPropagation() - - if ($this.is('.disabled, :disabled')) return - - var $parent = getParent($this) - var isActive = $parent.hasClass('open') - - if ((!isActive && e.which != 27) || (isActive && e.which == 27)) { - if (e.which == 27) $parent.find(toggle).trigger('focus') - return $this.trigger('click') - } - - var desc = ' li:not(.disabled):visible a' - var $items = $parent.find('[role="menu"]' + desc + ', [role="listbox"]' + desc) - - if (!$items.length) return - - var index = $items.index(e.target) - - if (e.which == 38 && index > 0) index-- // up - if (e.which == 40 && index < $items.length - 1) index++ // down - if (!~index) index = 0 - - $items.eq(index).trigger('focus') - } - - function clearMenus(e) { - if (e && e.which === 3) return - $(backdrop).remove() - $(toggle).each(function () { - var $this = $(this) - var $parent = getParent($this) - var relatedTarget = { relatedTarget: this } - - if (!$parent.hasClass('open')) return - - $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)) - - if (e.isDefaultPrevented()) return - - $this.attr('aria-expanded', 'false') - $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget) - }) - } - - function getParent($this) { - var selector = $this.attr('data-target') - - if (!selector) { - selector = $this.attr('href') - selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 - } - - var $parent = selector && $(selector) - - return $parent && $parent.length ? $parent : $this.parent() - } - - - // DROPDOWN PLUGIN DEFINITION - // ========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.dropdown') - - if (!data) $this.data('bs.dropdown', (data = new Dropdown(this))) - if (typeof option == 'string') data[option].call($this) - }) - } - - var old = $.fn.dropdown - - $.fn.dropdown = Plugin - $.fn.dropdown.Constructor = Dropdown - - - // DROPDOWN NO CONFLICT - // ==================== - - $.fn.dropdown.noConflict = function () { - $.fn.dropdown = old - return this - } - - - // APPLY TO STANDARD DROPDOWN ELEMENTS - // =================================== - - $(document) - .on('click.bs.dropdown.data-api', clearMenus) - .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) - .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) - .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown) - .on('keydown.bs.dropdown.data-api', '[role="menu"]', Dropdown.prototype.keydown) - .on('keydown.bs.dropdown.data-api', '[role="listbox"]', Dropdown.prototype.keydown) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: modal.js v3.3.4 - * http://getbootstrap.com/javascript/#modals - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // MODAL CLASS DEFINITION - // ====================== - - var Modal = function (element, options) { - this.options = options - this.$body = $(document.body) - this.$element = $(element) - this.$dialog = this.$element.find('.modal-dialog') - this.$backdrop = null - this.isShown = null - this.originalBodyPad = null - this.scrollbarWidth = 0 - this.ignoreBackdropClick = false - - if (this.options.remote) { - this.$element - .find('.modal-content') - .load(this.options.remote, $.proxy(function () { - this.$element.trigger('loaded.bs.modal') - }, this)) - } - } - - Modal.VERSION = '3.3.4' - - Modal.TRANSITION_DURATION = 300 - Modal.BACKDROP_TRANSITION_DURATION = 150 - - Modal.DEFAULTS = { - backdrop: true, - keyboard: true, - show: true - } - - Modal.prototype.toggle = function (_relatedTarget) { - return this.isShown ? this.hide() : this.show(_relatedTarget) - } - - Modal.prototype.show = function (_relatedTarget) { - var that = this - var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget }) - - this.$element.trigger(e) - - if (this.isShown || e.isDefaultPrevented()) return - - this.isShown = true - - this.checkScrollbar() - this.setScrollbar() - this.$body.addClass('modal-open') - - this.escape() - this.resize() - - this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this)) - - this.$dialog.on('mousedown.dismiss.bs.modal', function () { - that.$element.one('mouseup.dismiss.bs.modal', function (e) { - if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true - }) - }) - - this.backdrop(function () { - var transition = $.support.transition && that.$element.hasClass('fade') - - if (!that.$element.parent().length) { - that.$element.appendTo(that.$body) // don't move modals dom position - } - - that.$element - .show() - .scrollTop(0) - - that.adjustDialog() - - if (transition) { - that.$element[0].offsetWidth // force reflow - } - - that.$element - .addClass('in') - .attr('aria-hidden', false) - - that.enforceFocus() - - var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget }) - - transition ? - that.$dialog // wait for modal to slide in - .one('bsTransitionEnd', function () { - that.$element.trigger('focus').trigger(e) - }) - .emulateTransitionEnd(Modal.TRANSITION_DURATION) : - that.$element.trigger('focus').trigger(e) - }) - } - - Modal.prototype.hide = function (e) { - if (e) e.preventDefault() - - e = $.Event('hide.bs.modal') - - this.$element.trigger(e) - - if (!this.isShown || e.isDefaultPrevented()) return - - this.isShown = false - - this.escape() - this.resize() - - $(document).off('focusin.bs.modal') - - this.$element - .removeClass('in') - .attr('aria-hidden', true) - .off('click.dismiss.bs.modal') - .off('mouseup.dismiss.bs.modal') - - this.$dialog.off('mousedown.dismiss.bs.modal') - - $.support.transition && this.$element.hasClass('fade') ? - this.$element - .one('bsTransitionEnd', $.proxy(this.hideModal, this)) - .emulateTransitionEnd(Modal.TRANSITION_DURATION) : - this.hideModal() - } - - Modal.prototype.enforceFocus = function () { - $(document) - .off('focusin.bs.modal') // guard against infinite focus loop - .on('focusin.bs.modal', $.proxy(function (e) { - if (this.$element[0] !== e.target && !this.$element.has(e.target).length) { - this.$element.trigger('focus') - } - }, this)) - } - - Modal.prototype.escape = function () { - if (this.isShown && this.options.keyboard) { - this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) { - e.which == 27 && this.hide() - }, this)) - } else if (!this.isShown) { - this.$element.off('keydown.dismiss.bs.modal') - } - } - - Modal.prototype.resize = function () { - if (this.isShown) { - $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this)) - } else { - $(window).off('resize.bs.modal') - } - } - - Modal.prototype.hideModal = function () { - var that = this - this.$element.hide() - this.backdrop(function () { - that.$body.removeClass('modal-open') - that.resetAdjustments() - that.resetScrollbar() - that.$element.trigger('hidden.bs.modal') - }) - } - - Modal.prototype.removeBackdrop = function () { - this.$backdrop && this.$backdrop.remove() - this.$backdrop = null - } - - Modal.prototype.backdrop = function (callback) { - var that = this - var animate = this.$element.hasClass('fade') ? 'fade' : '' - - if (this.isShown && this.options.backdrop) { - var doAnimate = $.support.transition && animate - - this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />') - .appendTo(this.$body) - - this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) { - if (this.ignoreBackdropClick) { - this.ignoreBackdropClick = false - return - } - if (e.target !== e.currentTarget) return - this.options.backdrop == 'static' - ? this.$element[0].focus() - : this.hide() - }, this)) - - if (doAnimate) this.$backdrop[0].offsetWidth // force reflow - - this.$backdrop.addClass('in') - - if (!callback) return - - doAnimate ? - this.$backdrop - .one('bsTransitionEnd', callback) - .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : - callback() - - } else if (!this.isShown && this.$backdrop) { - this.$backdrop.removeClass('in') - - var callbackRemove = function () { - that.removeBackdrop() - callback && callback() - } - $.support.transition && this.$element.hasClass('fade') ? - this.$backdrop - .one('bsTransitionEnd', callbackRemove) - .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : - callbackRemove() - - } else if (callback) { - callback() - } - } - - // these following methods are used to handle overflowing modals - - Modal.prototype.handleUpdate = function () { - this.adjustDialog() - } - - Modal.prototype.adjustDialog = function () { - var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight - - this.$element.css({ - paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '', - paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : '' - }) - } - - Modal.prototype.resetAdjustments = function () { - this.$element.css({ - paddingLeft: '', - paddingRight: '' - }) - } - - Modal.prototype.checkScrollbar = function () { - var fullWindowWidth = window.innerWidth - if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8 - var documentElementRect = document.documentElement.getBoundingClientRect() - fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left) - } - this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth - this.scrollbarWidth = this.measureScrollbar() - } - - Modal.prototype.setScrollbar = function () { - var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10) - this.originalBodyPad = document.body.style.paddingRight || '' - if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth) - } - - Modal.prototype.resetScrollbar = function () { - this.$body.css('padding-right', this.originalBodyPad) - } - - Modal.prototype.measureScrollbar = function () { // thx walsh - var scrollDiv = document.createElement('div') - scrollDiv.className = 'modal-scrollbar-measure' - this.$body.append(scrollDiv) - var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth - this.$body[0].removeChild(scrollDiv) - return scrollbarWidth - } - - - // MODAL PLUGIN DEFINITION - // ======================= - - function Plugin(option, _relatedTarget) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.modal') - var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option) - - if (!data) $this.data('bs.modal', (data = new Modal(this, options))) - if (typeof option == 'string') data[option](_relatedTarget) - else if (options.show) data.show(_relatedTarget) - }) - } - - var old = $.fn.modal - - $.fn.modal = Plugin - $.fn.modal.Constructor = Modal - - - // MODAL NO CONFLICT - // ================= - - $.fn.modal.noConflict = function () { - $.fn.modal = old - return this - } - - - // MODAL DATA-API - // ============== - - $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) { - var $this = $(this) - var href = $this.attr('href') - var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7 - var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) - - if ($this.is('a')) e.preventDefault() - - $target.one('show.bs.modal', function (showEvent) { - if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown - $target.one('hidden.bs.modal', function () { - $this.is(':visible') && $this.trigger('focus') - }) - }) - Plugin.call($target, option, this) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: tooltip.js v3.3.4 - * http://getbootstrap.com/javascript/#tooltip - * Inspired by the original jQuery.tipsy by Jason Frame - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // TOOLTIP PUBLIC CLASS DEFINITION - // =============================== - - var Tooltip = function (element, options) { - this.type = null - this.options = null - this.enabled = null - this.timeout = null - this.hoverState = null - this.$element = null - - this.init('tooltip', element, options) - } - - Tooltip.VERSION = '3.3.4' - - Tooltip.TRANSITION_DURATION = 150 - - Tooltip.DEFAULTS = { - animation: true, - placement: 'top', - selector: false, - template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>', - trigger: 'hover focus', - title: '', - delay: 0, - html: false, - container: false, - viewport: { - selector: 'body', - padding: 0 - } - } - - Tooltip.prototype.init = function (type, element, options) { - this.enabled = true - this.type = type - this.$element = $(element) - this.options = this.getOptions(options) - this.$viewport = this.options.viewport && $(this.options.viewport.selector || this.options.viewport) - - if (this.$element[0] instanceof document.constructor && !this.options.selector) { - throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!') - } - - var triggers = this.options.trigger.split(' ') - - for (var i = triggers.length; i--;) { - var trigger = triggers[i] - - if (trigger == 'click') { - this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) - } else if (trigger != 'manual') { - var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' - var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' - - this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) - this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) - } - } - - this.options.selector ? - (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : - this.fixTitle() - } - - Tooltip.prototype.getDefaults = function () { - return Tooltip.DEFAULTS - } - - Tooltip.prototype.getOptions = function (options) { - options = $.extend({}, this.getDefaults(), this.$element.data(), options) - - if (options.delay && typeof options.delay == 'number') { - options.delay = { - show: options.delay, - hide: options.delay - } - } - - return options - } - - Tooltip.prototype.getDelegateOptions = function () { - var options = {} - var defaults = this.getDefaults() - - this._options && $.each(this._options, function (key, value) { - if (defaults[key] != value) options[key] = value - }) - - return options - } - - Tooltip.prototype.enter = function (obj) { - var self = obj instanceof this.constructor ? - obj : $(obj.currentTarget).data('bs.' + this.type) - - if (self && self.$tip && self.$tip.is(':visible')) { - self.hoverState = 'in' - return - } - - if (!self) { - self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) - $(obj.currentTarget).data('bs.' + this.type, self) - } - - clearTimeout(self.timeout) - - self.hoverState = 'in' - - if (!self.options.delay || !self.options.delay.show) return self.show() - - self.timeout = setTimeout(function () { - if (self.hoverState == 'in') self.show() - }, self.options.delay.show) - } - - Tooltip.prototype.leave = function (obj) { - var self = obj instanceof this.constructor ? - obj : $(obj.currentTarget).data('bs.' + this.type) - - if (!self) { - self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) - $(obj.currentTarget).data('bs.' + this.type, self) - } - - clearTimeout(self.timeout) - - self.hoverState = 'out' - - if (!self.options.delay || !self.options.delay.hide) return self.hide() - - self.timeout = setTimeout(function () { - if (self.hoverState == 'out') self.hide() - }, self.options.delay.hide) - } - - Tooltip.prototype.show = function () { - var e = $.Event('show.bs.' + this.type) - - if (this.hasContent() && this.enabled) { - this.$element.trigger(e) - - var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]) - if (e.isDefaultPrevented() || !inDom) return - var that = this - - var $tip = this.tip() - - var tipId = this.getUID(this.type) - - this.setContent() - $tip.attr('id', tipId) - this.$element.attr('aria-describedby', tipId) - - if (this.options.animation) $tip.addClass('fade') - - var placement = typeof this.options.placement == 'function' ? - this.options.placement.call(this, $tip[0], this.$element[0]) : - this.options.placement - - var autoToken = /\s?auto?\s?/i - var autoPlace = autoToken.test(placement) - if (autoPlace) placement = placement.replace(autoToken, '') || 'top' - - $tip - .detach() - .css({ top: 0, left: 0, display: 'block' }) - .addClass(placement) - .data('bs.' + this.type, this) - - this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) - - var pos = this.getPosition() - var actualWidth = $tip[0].offsetWidth - var actualHeight = $tip[0].offsetHeight - - if (autoPlace) { - var orgPlacement = placement - var $container = this.options.container ? $(this.options.container) : this.$element.parent() - var containerDim = this.getPosition($container) - - placement = placement == 'bottom' && pos.bottom + actualHeight > containerDim.bottom ? 'top' : - placement == 'top' && pos.top - actualHeight < containerDim.top ? 'bottom' : - placement == 'right' && pos.right + actualWidth > containerDim.width ? 'left' : - placement == 'left' && pos.left - actualWidth < containerDim.left ? 'right' : - placement - - $tip - .removeClass(orgPlacement) - .addClass(placement) - } - - var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight) - - this.applyPlacement(calculatedOffset, placement) - - var complete = function () { - var prevHoverState = that.hoverState - that.$element.trigger('shown.bs.' + that.type) - that.hoverState = null - - if (prevHoverState == 'out') that.leave(that) - } - - $.support.transition && this.$tip.hasClass('fade') ? - $tip - .one('bsTransitionEnd', complete) - .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : - complete() - } - } - - Tooltip.prototype.applyPlacement = function (offset, placement) { - var $tip = this.tip() - var width = $tip[0].offsetWidth - var height = $tip[0].offsetHeight - - // manually read margins because getBoundingClientRect includes difference - var marginTop = parseInt($tip.css('margin-top'), 10) - var marginLeft = parseInt($tip.css('margin-left'), 10) - - // we must check for NaN for ie 8/9 - if (isNaN(marginTop)) marginTop = 0 - if (isNaN(marginLeft)) marginLeft = 0 - - offset.top = offset.top + marginTop - offset.left = offset.left + marginLeft - - // $.fn.offset doesn't round pixel values - // so we use setOffset directly with our own function B-0 - $.offset.setOffset($tip[0], $.extend({ - using: function (props) { - $tip.css({ - top: Math.round(props.top), - left: Math.round(props.left) - }) - } - }, offset), 0) - - $tip.addClass('in') - - // check to see if placing tip in new offset caused the tip to resize itself - var actualWidth = $tip[0].offsetWidth - var actualHeight = $tip[0].offsetHeight - - if (placement == 'top' && actualHeight != height) { - offset.top = offset.top + height - actualHeight - } - - var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight) - - if (delta.left) offset.left += delta.left - else offset.top += delta.top - - var isVertical = /top|bottom/.test(placement) - var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight - var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight' - - $tip.offset(offset) - this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical) - } - - Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) { - this.arrow() - .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%') - .css(isVertical ? 'top' : 'left', '') - } - - Tooltip.prototype.setContent = function () { - var $tip = this.tip() - var title = this.getTitle() - - $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) - $tip.removeClass('fade in top bottom left right') - } - - Tooltip.prototype.hide = function (callback) { - var that = this - var $tip = $(this.$tip) - var e = $.Event('hide.bs.' + this.type) - - function complete() { - if (that.hoverState != 'in') $tip.detach() - that.$element - .removeAttr('aria-describedby') - .trigger('hidden.bs.' + that.type) - callback && callback() - } - - this.$element.trigger(e) - - if (e.isDefaultPrevented()) return - - $tip.removeClass('in') - - $.support.transition && $tip.hasClass('fade') ? - $tip - .one('bsTransitionEnd', complete) - .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : - complete() - - this.hoverState = null - - return this - } - - Tooltip.prototype.fixTitle = function () { - var $e = this.$element - if ($e.attr('title') || typeof ($e.attr('data-original-title')) != 'string') { - $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') - } - } - - Tooltip.prototype.hasContent = function () { - return this.getTitle() - } - - Tooltip.prototype.getPosition = function ($element) { - $element = $element || this.$element - - var el = $element[0] - var isBody = el.tagName == 'BODY' - - var elRect = el.getBoundingClientRect() - if (elRect.width == null) { - // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093 - elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top }) - } - var elOffset = isBody ? { top: 0, left: 0 } : $element.offset() - var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() } - var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null - - return $.extend({}, elRect, scroll, outerDims, elOffset) - } - - Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { - return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : - placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : - placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : - /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width } - - } - - Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) { - var delta = { top: 0, left: 0 } - if (!this.$viewport) return delta - - var viewportPadding = this.options.viewport && this.options.viewport.padding || 0 - var viewportDimensions = this.getPosition(this.$viewport) - - if (/right|left/.test(placement)) { - var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll - var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight - if (topEdgeOffset < viewportDimensions.top) { // top overflow - delta.top = viewportDimensions.top - topEdgeOffset - } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow - delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset - } - } else { - var leftEdgeOffset = pos.left - viewportPadding - var rightEdgeOffset = pos.left + viewportPadding + actualWidth - if (leftEdgeOffset < viewportDimensions.left) { // left overflow - delta.left = viewportDimensions.left - leftEdgeOffset - } else if (rightEdgeOffset > viewportDimensions.width) { // right overflow - delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset - } - } - - return delta - } - - Tooltip.prototype.getTitle = function () { - var title - var $e = this.$element - var o = this.options - - title = $e.attr('data-original-title') - || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) - - return title - } - - Tooltip.prototype.getUID = function (prefix) { - do prefix += ~~(Math.random() * 1000000) - while (document.getElementById(prefix)) - return prefix - } - - Tooltip.prototype.tip = function () { - return (this.$tip = this.$tip || $(this.options.template)) - } - - Tooltip.prototype.arrow = function () { - return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')) - } - - Tooltip.prototype.enable = function () { - this.enabled = true - } - - Tooltip.prototype.disable = function () { - this.enabled = false - } - - Tooltip.prototype.toggleEnabled = function () { - this.enabled = !this.enabled - } - - Tooltip.prototype.toggle = function (e) { - var self = this - if (e) { - self = $(e.currentTarget).data('bs.' + this.type) - if (!self) { - self = new this.constructor(e.currentTarget, this.getDelegateOptions()) - $(e.currentTarget).data('bs.' + this.type, self) - } - } - - self.tip().hasClass('in') ? self.leave(self) : self.enter(self) - } - - Tooltip.prototype.destroy = function () { - var that = this - clearTimeout(this.timeout) - this.hide(function () { - that.$element.off('.' + that.type).removeData('bs.' + that.type) - }) - } - - - // TOOLTIP PLUGIN DEFINITION - // ========================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.tooltip') - var options = typeof option == 'object' && option - - if (!data && /destroy|hide/.test(option)) return - if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.tooltip - - $.fn.tooltip = Plugin - $.fn.tooltip.Constructor = Tooltip - - - // TOOLTIP NO CONFLICT - // =================== - - $.fn.tooltip.noConflict = function () { - $.fn.tooltip = old - return this - } - -}(jQuery); - -/* ======================================================================== - * Bootstrap: popover.js v3.3.4 - * http://getbootstrap.com/javascript/#popovers - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // POPOVER PUBLIC CLASS DEFINITION - // =============================== - - var Popover = function (element, options) { - this.init('popover', element, options) - } - - if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') - - Popover.VERSION = '3.3.4' - - Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { - placement: 'right', - trigger: 'click', - content: '', - template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>' - }) - - - // NOTE: POPOVER EXTENDS tooltip.js - // ================================ - - Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype) - - Popover.prototype.constructor = Popover - - Popover.prototype.getDefaults = function () { - return Popover.DEFAULTS - } - - Popover.prototype.setContent = function () { - var $tip = this.tip() - var title = this.getTitle() - var content = this.getContent() - - $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) - $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events - this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text' - ](content) - - $tip.removeClass('fade top bottom left right in') - - // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do - // this manually by checking the contents. - if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide() - } - - Popover.prototype.hasContent = function () { - return this.getTitle() || this.getContent() - } - - Popover.prototype.getContent = function () { - var $e = this.$element - var o = this.options - - return $e.attr('data-content') - || (typeof o.content == 'function' ? - o.content.call($e[0]) : - o.content) - } - - Popover.prototype.arrow = function () { - return (this.$arrow = this.$arrow || this.tip().find('.arrow')) - } - - - // POPOVER PLUGIN DEFINITION - // ========================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.popover') - var options = typeof option == 'object' && option - - if (!data && /destroy|hide/.test(option)) return - if (!data) $this.data('bs.popover', (data = new Popover(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.popover - - $.fn.popover = Plugin - $.fn.popover.Constructor = Popover - - - // POPOVER NO CONFLICT - // =================== - - $.fn.popover.noConflict = function () { - $.fn.popover = old - return this - } - -}(jQuery); - -/* ======================================================================== - * Bootstrap: scrollspy.js v3.3.4 - * http://getbootstrap.com/javascript/#scrollspy - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // SCROLLSPY CLASS DEFINITION - // ========================== - - function ScrollSpy(element, options) { - this.$body = $(document.body) - this.$scrollElement = $(element).is(document.body) ? $(window) : $(element) - this.options = $.extend({}, ScrollSpy.DEFAULTS, options) - this.selector = (this.options.target || '') + ' .nav li > a' - this.offsets = [] - this.targets = [] - this.activeTarget = null - this.scrollHeight = 0 - - this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this)) - this.refresh() - this.process() - } - - ScrollSpy.VERSION = '3.3.4' - - ScrollSpy.DEFAULTS = { - offset: 10 - } - - ScrollSpy.prototype.getScrollHeight = function () { - return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight) - } - - ScrollSpy.prototype.refresh = function () { - var that = this - var offsetMethod = 'offset' - var offsetBase = 0 - - this.offsets = [] - this.targets = [] - this.scrollHeight = this.getScrollHeight() - - if (!$.isWindow(this.$scrollElement[0])) { - offsetMethod = 'position' - offsetBase = this.$scrollElement.scrollTop() - } - - this.$body - .find(this.selector) - .map(function () { - var $el = $(this) - var href = $el.data('target') || $el.attr('href') - var $href = /^#./.test(href) && $(href) - - return ($href - && $href.length - && $href.is(':visible') - && [[$href[offsetMethod]().top + offsetBase, href]]) || null - }) - .sort(function (a, b) { return a[0] - b[0] }) - .each(function () { - that.offsets.push(this[0]) - that.targets.push(this[1]) - }) - } - - ScrollSpy.prototype.process = function () { - var scrollTop = this.$scrollElement.scrollTop() + this.options.offset - var scrollHeight = this.getScrollHeight() - var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height() - var offsets = this.offsets - var targets = this.targets - var activeTarget = this.activeTarget - var i - - if (this.scrollHeight != scrollHeight) { - this.refresh() - } - - if (scrollTop >= maxScroll) { - return activeTarget != (i = targets[targets.length - 1]) && this.activate(i) - } - - if (activeTarget && scrollTop < offsets[0]) { - this.activeTarget = null - return this.clear() - } - - for (i = offsets.length; i--;) { - activeTarget != targets[i] - && scrollTop >= offsets[i] - && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1]) - && this.activate(targets[i]) - } - } - - ScrollSpy.prototype.activate = function (target) { - this.activeTarget = target - - this.clear() - - var selector = this.selector + - '[data-target="' + target + '"],' + - this.selector + '[href="' + target + '"]' - - var active = $(selector) - .parents('li') - .addClass('active') - - if (active.parent('.dropdown-menu').length) { - active = active - .closest('li.dropdown') - .addClass('active') - } - - active.trigger('activate.bs.scrollspy') - } - - ScrollSpy.prototype.clear = function () { - $(this.selector) - .parentsUntil(this.options.target, '.active') - .removeClass('active') - } - - - // SCROLLSPY PLUGIN DEFINITION - // =========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.scrollspy') - var options = typeof option == 'object' && option - - if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.scrollspy - - $.fn.scrollspy = Plugin - $.fn.scrollspy.Constructor = ScrollSpy - - - // SCROLLSPY NO CONFLICT - // ===================== - - $.fn.scrollspy.noConflict = function () { - $.fn.scrollspy = old - return this - } - - - // SCROLLSPY DATA-API - // ================== - - $(window).on('load.bs.scrollspy.data-api', function () { - $('[data-spy="scroll"]').each(function () { - var $spy = $(this) - Plugin.call($spy, $spy.data()) - }) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: tab.js v3.3.4 - * http://getbootstrap.com/javascript/#tabs - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // TAB CLASS DEFINITION - // ==================== - - var Tab = function (element) { - this.element = $(element) - } - - Tab.VERSION = '3.3.4' - - Tab.TRANSITION_DURATION = 150 - - Tab.prototype.show = function () { - var $this = this.element - var $ul = $this.closest('ul:not(.dropdown-menu)') - var selector = $this.data('target') - - if (!selector) { - selector = $this.attr('href') - selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 - } - - if ($this.parent('li').hasClass('active')) return - - var $previous = $ul.find('.active:last a') - var hideEvent = $.Event('hide.bs.tab', { - relatedTarget: $this[0] - }) - var showEvent = $.Event('show.bs.tab', { - relatedTarget: $previous[0] - }) - - $previous.trigger(hideEvent) - $this.trigger(showEvent) - - if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return - - var $target = $(selector) - - this.activate($this.closest('li'), $ul) - this.activate($target, $target.parent(), function () { - $previous.trigger({ - type: 'hidden.bs.tab', - relatedTarget: $this[0] - }) - $this.trigger({ - type: 'shown.bs.tab', - relatedTarget: $previous[0] - }) - }) - } - - Tab.prototype.activate = function (element, container, callback) { - var $active = container.find('> .active') - var transition = callback - && $.support.transition - && (($active.length && $active.hasClass('fade')) || !!container.find('> .fade').length) - - function next() { - $active - .removeClass('active') - .find('> .dropdown-menu > .active') - .removeClass('active') - .end() - .find('[data-toggle="tab"]') - .attr('aria-expanded', false) - - element - .addClass('active') - .find('[data-toggle="tab"]') - .attr('aria-expanded', true) - - if (transition) { - element[0].offsetWidth // reflow for transition - element.addClass('in') - } else { - element.removeClass('fade') - } - - if (element.parent('.dropdown-menu').length) { - element - .closest('li.dropdown') - .addClass('active') - .end() - .find('[data-toggle="tab"]') - .attr('aria-expanded', true) - } - - callback && callback() - } - - $active.length && transition ? - $active - .one('bsTransitionEnd', next) - .emulateTransitionEnd(Tab.TRANSITION_DURATION) : - next() - - $active.removeClass('in') - } - - - // TAB PLUGIN DEFINITION - // ===================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.tab') - - if (!data) $this.data('bs.tab', (data = new Tab(this))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.tab - - $.fn.tab = Plugin - $.fn.tab.Constructor = Tab - - - // TAB NO CONFLICT - // =============== - - $.fn.tab.noConflict = function () { - $.fn.tab = old - return this - } - - - // TAB DATA-API - // ============ - - var clickHandler = function (e) { - e.preventDefault() - Plugin.call($(this), 'show') - } - - $(document) - .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler) - .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: affix.js v3.3.4 - * http://getbootstrap.com/javascript/#affix - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // AFFIX CLASS DEFINITION - // ====================== - - var Affix = function (element, options) { - this.options = $.extend({}, Affix.DEFAULTS, options) - - this.$target = $(this.options.target) - .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) - .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) - - this.$element = $(element) - this.affixed = null - this.unpin = null - this.pinnedOffset = null - - this.checkPosition() - } - - Affix.VERSION = '3.3.4' - - Affix.RESET = 'affix affix-top affix-bottom' - - Affix.DEFAULTS = { - offset: 0, - target: window - } - - Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) { - var scrollTop = this.$target.scrollTop() - var position = this.$element.offset() - var targetHeight = this.$target.height() - - if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false - - if (this.affixed == 'bottom') { - if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom' - return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom' - } - - var initializing = this.affixed == null - var colliderTop = initializing ? scrollTop : position.top - var colliderHeight = initializing ? targetHeight : height - - if (offsetTop != null && scrollTop <= offsetTop) return 'top' - if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom' - - return false - } - - Affix.prototype.getPinnedOffset = function () { - if (this.pinnedOffset) return this.pinnedOffset - this.$element.removeClass(Affix.RESET).addClass('affix') - var scrollTop = this.$target.scrollTop() - var position = this.$element.offset() - return (this.pinnedOffset = position.top - scrollTop) - } - - Affix.prototype.checkPositionWithEventLoop = function () { - setTimeout($.proxy(this.checkPosition, this), 1) - } - - Affix.prototype.checkPosition = function () { - if (!this.$element.is(':visible')) return - - var height = this.$element.height() - var offset = this.options.offset - var offsetTop = offset.top - var offsetBottom = offset.bottom - var scrollHeight = $(document.body).height() - - if (typeof offset != 'object') offsetBottom = offsetTop = offset - if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) - if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element) - - var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom) - - if (this.affixed != affix) { - if (this.unpin != null) this.$element.css('top', '') - - var affixType = 'affix' + (affix ? '-' + affix : '') - var e = $.Event(affixType + '.bs.affix') - - this.$element.trigger(e) - - if (e.isDefaultPrevented()) return - - this.affixed = affix - this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null - - this.$element - .removeClass(Affix.RESET) - .addClass(affixType) - .trigger(affixType.replace('affix', 'affixed') + '.bs.affix') - } - - if (affix == 'bottom') { - this.$element.offset({ - top: scrollHeight - height - offsetBottom - }) - } - } - - - // AFFIX PLUGIN DEFINITION - // ======================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.affix') - var options = typeof option == 'object' && option - - if (!data) $this.data('bs.affix', (data = new Affix(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.affix - - $.fn.affix = Plugin - $.fn.affix.Constructor = Affix - - - // AFFIX NO CONFLICT - // ================= - - $.fn.affix.noConflict = function () { - $.fn.affix = old - return this - } - - - // AFFIX DATA-API - // ============== - - $(window).on('load', function () { - $('[data-spy="affix"]').each(function () { - var $spy = $(this) - var data = $spy.data() - - data.offset = data.offset || {} - - if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom - if (data.offsetTop != null) data.offset.top = data.offsetTop - - Plugin.call($spy, data) - }) - }) - -}(jQuery); diff --git a/assets/bootstrap/js/bootstrap.min.js b/assets/bootstrap/js/bootstrap.min.js deleted file mode 100644 index c8f1c689..00000000 --- a/assets/bootstrap/js/bootstrap.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Bootstrap v3.3.4 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ -if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.4",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.4",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active"));a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.4",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.4",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=c(d),f={relatedTarget:this};e.hasClass("open")&&(e.trigger(b=a.Event("hide.bs.dropdown",f)),b.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f)))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.4",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(b){if(/(38|40|27|32)/.test(b.which)&&!/input|textarea/i.test(b.target.tagName)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var e=c(d),g=e.hasClass("open");if(!g&&27!=b.which||g&&27==b.which)return 27==b.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find('[role="menu"]'+h+', [role="listbox"]'+h);if(i.length){var j=i.index(b.target);38==b.which&&j>0&&j--,40==b.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f,g.prototype.keydown).on("keydown.bs.dropdown.data-api",'[role="menu"]',g.prototype.keydown).on("keydown.bs.dropdown.data-api",'[role="listbox"]',g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.3.4",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){d.$element.one("mouseup.dismiss.bs.modal",function(b){a(b.target).is(d.$element)&&(d.ignoreBackdropClick=!0)})}),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass("in").attr("aria-hidden",!1),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$dialog.one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},c.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a('<div class="modal-backdrop '+e+'" />').appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.adjustDialog()},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth<a,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"",this.bodyIsOverflowing&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad)},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.init("tooltip",a,b)};c.VERSION="3.3.4",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport),this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c&&c.$tip&&c.$tip.is(":visible")?void(c.hoverState="in"):(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.options.container?a(this.options.container):this.$element.parent(),p=this.getPosition(o);h="bottom"==h&&k.bottom+m>p.bottom?"top":"top"==h&&k.top-m<p.top?"bottom":"right"==h&&k.right+l>p.width?"left":"left"==h&&k.left-l<p.left?"right":h,f.removeClass(n).addClass(h)}var q=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(q,h);var r=function(){var a=e.hoverState;e.$element.trigger("shown.bs."+e.type),e.hoverState=null,"out"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",r).emulateTransitionEnd(c.TRANSITION_DURATION):r()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top=b.top+g,b.left=b.left+h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?"left":"top",50*(1-a/b)+"%").css(c?"top":"left","")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(b){function d(){"in"!=e.hoverState&&f.detach(),e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),b&&b()}var e=this,f=a(this.$tip),g=a.Event("hide.bs."+this.type);return this.$element.trigger(g),g.isDefaultPrevented()?void 0:(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=d?{top:0,left:0}:b.offset(),g={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},h=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,g,h,f)},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type)})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.4",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.4",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(void 0===e[a+1]||b<e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,this.clear();var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.3.4",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]}); -if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.4",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=a(document.body).height();"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/assets/bootstrap/js/npm.js b/assets/bootstrap/js/npm.js deleted file mode 100644 index bf6aa806..00000000 --- a/assets/bootstrap/js/npm.js +++ /dev/null @@ -1,13 +0,0 @@ -// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. -require('../../js/transition.js') -require('../../js/alert.js') -require('../../js/button.js') -require('../../js/carousel.js') -require('../../js/collapse.js') -require('../../js/dropdown.js') -require('../../js/modal.js') -require('../../js/tooltip.js') -require('../../js/popover.js') -require('../../js/scrollspy.js') -require('../../js/tab.js') -require('../../js/affix.js') \ No newline at end of file diff --git a/assets/css/animate.css b/assets/css/animate.css deleted file mode 100644 index 0f9fba11..00000000 --- a/assets/css/animate.css +++ /dev/null @@ -1,2848 +0,0 @@ -@charset "UTF-8"; - -/*! -Animate.css - http://daneden.me/animate -Licensed under the MIT license - -Copyright (c) 2013 Daniel Eden - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ - -.animated { - -webkit-animation-duration: 1s; - animation-duration: 1s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - z-index: 100; -} - -.animated.infinite { - -webkit-animation-iteration-count: infinite; - animation-iteration-count: infinite; -} - -.animated.hinge { - -webkit-animation-duration: 2s; - animation-duration: 2s; -} - -@-webkit-keyframes bounce { - 0%, 20%, 50%, 80%, 100% { - -webkit-transform: translateY(0); - transform: translateY(0); - } - - 40% { - -webkit-transform: translateY(-30px); - transform: translateY(-30px); - } - - 60% { - -webkit-transform: translateY(-15px); - transform: translateY(-15px); - } -} - -@keyframes bounce { - 0%, 20%, 50%, 80%, 100% { - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } - - 40% { - -webkit-transform: translateY(-30px); - -ms-transform: translateY(-30px); - transform: translateY(-30px); - } - - 60% { - -webkit-transform: translateY(-15px); - -ms-transform: translateY(-15px); - transform: translateY(-15px); - } -} - -.bounce { - -webkit-animation-name: bounce; - animation-name: bounce; -} - -@-webkit-keyframes flash { - 0%, 50%, 100% { - opacity: 1; - } - - 25%, 75% { - opacity: 0; - } -} - -@keyframes flash { - 0%, 50%, 100% { - opacity: 1; - } - - 25%, 75% { - opacity: 0; - } -} - -.flash { - -webkit-animation-name: flash; - animation-name: flash; -} - -/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ - -@-webkit-keyframes pulse { - 0% { - -webkit-transform: scale(1); - transform: scale(1); - } - - 50% { - -webkit-transform: scale(1.1); - transform: scale(1.1); - } - - 100% { - -webkit-transform: scale(1); - transform: scale(1); - } -} - -@keyframes pulse { - 0% { - -webkit-transform: scale(1); - -ms-transform: scale(1); - transform: scale(1); - } - - 50% { - -webkit-transform: scale(1.1); - -ms-transform: scale(1.1); - transform: scale(1.1); - } - - 100% { - -webkit-transform: scale(1); - -ms-transform: scale(1); - transform: scale(1); - } -} - -.pulse { - -webkit-animation-name: pulse; - animation-name: pulse; -} - -@-webkit-keyframes rubberBand { - 0% { - -webkit-transform: scale(1); - transform: scale(1); - } - - 30% { - -webkit-transform: scaleX(1.25) scaleY(0.75); - transform: scaleX(1.25) scaleY(0.75); - } - - 40% { - -webkit-transform: scaleX(0.75) scaleY(1.25); - transform: scaleX(0.75) scaleY(1.25); - } - - 60% { - -webkit-transform: scaleX(1.15) scaleY(0.85); - transform: scaleX(1.15) scaleY(0.85); - } - - 100% { - -webkit-transform: scale(1); - transform: scale(1); - } -} - -@keyframes rubberBand { - 0% { - -webkit-transform: scale(1); - -ms-transform: scale(1); - transform: scale(1); - } - - 30% { - -webkit-transform: scaleX(1.25) scaleY(0.75); - -ms-transform: scaleX(1.25) scaleY(0.75); - transform: scaleX(1.25) scaleY(0.75); - } - - 40% { - -webkit-transform: scaleX(0.75) scaleY(1.25); - -ms-transform: scaleX(0.75) scaleY(1.25); - transform: scaleX(0.75) scaleY(1.25); - } - - 60% { - -webkit-transform: scaleX(1.15) scaleY(0.85); - -ms-transform: scaleX(1.15) scaleY(0.85); - transform: scaleX(1.15) scaleY(0.85); - } - - 100% { - -webkit-transform: scale(1); - -ms-transform: scale(1); - transform: scale(1); - } -} - -.rubberBand { - -webkit-animation-name: rubberBand; - animation-name: rubberBand; -} - -@-webkit-keyframes shake { - 0%, 100% { - -webkit-transform: translateX(0); - transform: translateX(0); - } - - 10%, 30%, 50%, 70%, 90% { - -webkit-transform: translateX(-10px); - transform: translateX(-10px); - } - - 20%, 40%, 60%, 80% { - -webkit-transform: translateX(10px); - transform: translateX(10px); - } -} - -@keyframes shake { - 0%, 100% { - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } - - 10%, 30%, 50%, 70%, 90% { - -webkit-transform: translateX(-10px); - -ms-transform: translateX(-10px); - transform: translateX(-10px); - } - - 20%, 40%, 60%, 80% { - -webkit-transform: translateX(10px); - -ms-transform: translateX(10px); - transform: translateX(10px); - } -} - -.shake { - -webkit-animation-name: shake; - animation-name: shake; -} - -@-webkit-keyframes swing { - 20% { - -webkit-transform: rotate(15deg); - transform: rotate(15deg); - } - - 40% { - -webkit-transform: rotate(-10deg); - transform: rotate(-10deg); - } - - 60% { - -webkit-transform: rotate(5deg); - transform: rotate(5deg); - } - - 80% { - -webkit-transform: rotate(-5deg); - transform: rotate(-5deg); - } - - 100% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } -} - -@keyframes swing { - 20% { - -webkit-transform: rotate(15deg); - -ms-transform: rotate(15deg); - transform: rotate(15deg); - } - - 40% { - -webkit-transform: rotate(-10deg); - -ms-transform: rotate(-10deg); - transform: rotate(-10deg); - } - - 60% { - -webkit-transform: rotate(5deg); - -ms-transform: rotate(5deg); - transform: rotate(5deg); - } - - 80% { - -webkit-transform: rotate(-5deg); - -ms-transform: rotate(-5deg); - transform: rotate(-5deg); - } - - 100% { - -webkit-transform: rotate(0deg); - -ms-transform: rotate(0deg); - transform: rotate(0deg); - } -} - -.swing { - -webkit-transform-origin: top center; - -ms-transform-origin: top center; - transform-origin: top center; - -webkit-animation-name: swing; - animation-name: swing; -} - -@-webkit-keyframes tada { - 0% { - -webkit-transform: scale(1); - transform: scale(1); - } - - 10%, 20% { - -webkit-transform: scale(0.9) rotate(-3deg); - transform: scale(0.9) rotate(-3deg); - } - - 30%, 50%, 70%, 90% { - -webkit-transform: scale(1.1) rotate(3deg); - transform: scale(1.1) rotate(3deg); - } - - 40%, 60%, 80% { - -webkit-transform: scale(1.1) rotate(-3deg); - transform: scale(1.1) rotate(-3deg); - } - - 100% { - -webkit-transform: scale(1) rotate(0); - transform: scale(1) rotate(0); - } -} - -@keyframes tada { - 0% { - -webkit-transform: scale(1); - -ms-transform: scale(1); - transform: scale(1); - } - - 10%, 20% { - -webkit-transform: scale(0.9) rotate(-3deg); - -ms-transform: scale(0.9) rotate(-3deg); - transform: scale(0.9) rotate(-3deg); - } - - 30%, 50%, 70%, 90% { - -webkit-transform: scale(1.1) rotate(3deg); - -ms-transform: scale(1.1) rotate(3deg); - transform: scale(1.1) rotate(3deg); - } - - 40%, 60%, 80% { - -webkit-transform: scale(1.1) rotate(-3deg); - -ms-transform: scale(1.1) rotate(-3deg); - transform: scale(1.1) rotate(-3deg); - } - - 100% { - -webkit-transform: scale(1) rotate(0); - -ms-transform: scale(1) rotate(0); - transform: scale(1) rotate(0); - } -} - -.tada { - -webkit-animation-name: tada; - animation-name: tada; -} - -/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ - -@-webkit-keyframes wobble { - 0% { - -webkit-transform: translateX(0%); - transform: translateX(0%); - } - - 15% { - -webkit-transform: translateX(-25%) rotate(-5deg); - transform: translateX(-25%) rotate(-5deg); - } - - 30% { - -webkit-transform: translateX(20%) rotate(3deg); - transform: translateX(20%) rotate(3deg); - } - - 45% { - -webkit-transform: translateX(-15%) rotate(-3deg); - transform: translateX(-15%) rotate(-3deg); - } - - 60% { - -webkit-transform: translateX(10%) rotate(2deg); - transform: translateX(10%) rotate(2deg); - } - - 75% { - -webkit-transform: translateX(-5%) rotate(-1deg); - transform: translateX(-5%) rotate(-1deg); - } - - 100% { - -webkit-transform: translateX(0%); - transform: translateX(0%); - } -} - -@keyframes wobble { - 0% { - -webkit-transform: translateX(0%); - -ms-transform: translateX(0%); - transform: translateX(0%); - } - - 15% { - -webkit-transform: translateX(-25%) rotate(-5deg); - -ms-transform: translateX(-25%) rotate(-5deg); - transform: translateX(-25%) rotate(-5deg); - } - - 30% { - -webkit-transform: translateX(20%) rotate(3deg); - -ms-transform: translateX(20%) rotate(3deg); - transform: translateX(20%) rotate(3deg); - } - - 45% { - -webkit-transform: translateX(-15%) rotate(-3deg); - -ms-transform: translateX(-15%) rotate(-3deg); - transform: translateX(-15%) rotate(-3deg); - } - - 60% { - -webkit-transform: translateX(10%) rotate(2deg); - -ms-transform: translateX(10%) rotate(2deg); - transform: translateX(10%) rotate(2deg); - } - - 75% { - -webkit-transform: translateX(-5%) rotate(-1deg); - -ms-transform: translateX(-5%) rotate(-1deg); - transform: translateX(-5%) rotate(-1deg); - } - - 100% { - -webkit-transform: translateX(0%); - -ms-transform: translateX(0%); - transform: translateX(0%); - } -} - -.wobble { - -webkit-animation-name: wobble; - animation-name: wobble; -} - -@-webkit-keyframes bounceIn { - 0% { - opacity: 0; - -webkit-transform: scale(.3); - transform: scale(.3); - } - - 50% { - opacity: 1; - -webkit-transform: scale(1.05); - transform: scale(1.05); - } - - 70% { - -webkit-transform: scale(.9); - transform: scale(.9); - } - - 100% { - opacity: 1; - -webkit-transform: scale(1); - transform: scale(1); - } -} - -@keyframes bounceIn { - 0% { - opacity: 0; - -webkit-transform: scale(.3); - -ms-transform: scale(.3); - transform: scale(.3); - } - - 50% { - opacity: 1; - -webkit-transform: scale(1.05); - -ms-transform: scale(1.05); - transform: scale(1.05); - } - - 70% { - -webkit-transform: scale(.9); - -ms-transform: scale(.9); - transform: scale(.9); - } - - 100% { - opacity: 1; - -webkit-transform: scale(1); - -ms-transform: scale(1); - transform: scale(1); - } -} - -.bounceIn { - -webkit-animation-name: bounceIn; - animation-name: bounceIn; -} - -@-webkit-keyframes bounceInDown { - 0% { - opacity: 0; - -webkit-transform: translateY(-2000px); - transform: translateY(-2000px); - } - - 60% { - opacity: 1; - -webkit-transform: translateY(30px); - transform: translateY(30px); - } - - 80% { - -webkit-transform: translateY(-10px); - transform: translateY(-10px); - } - - 100% { - -webkit-transform: translateY(0); - transform: translateY(0); - } -} - -@keyframes bounceInDown { - 0% { - opacity: 0; - -webkit-transform: translateY(-2000px); - -ms-transform: translateY(-2000px); - transform: translateY(-2000px); - } - - 60% { - opacity: 1; - -webkit-transform: translateY(30px); - -ms-transform: translateY(30px); - transform: translateY(30px); - } - - 80% { - -webkit-transform: translateY(-10px); - -ms-transform: translateY(-10px); - transform: translateY(-10px); - } - - 100% { - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } -} - -.bounceInDown { - -webkit-animation-name: bounceInDown; - animation-name: bounceInDown; -} - -@-webkit-keyframes bounceInLeft { - 0% { - opacity: 0; - -webkit-transform: translateX(-2000px); - transform: translateX(-2000px); - } - - 60% { - opacity: 1; - -webkit-transform: translateX(30px); - transform: translateX(30px); - } - - 80% { - -webkit-transform: translateX(-10px); - transform: translateX(-10px); - } - - 100% { - -webkit-transform: translateX(0); - transform: translateX(0); - } -} - -@keyframes bounceInLeft { - 0% { - opacity: 0; - -webkit-transform: translateX(-2000px); - -ms-transform: translateX(-2000px); - transform: translateX(-2000px); - } - - 60% { - opacity: 1; - -webkit-transform: translateX(30px); - -ms-transform: translateX(30px); - transform: translateX(30px); - } - - 80% { - -webkit-transform: translateX(-10px); - -ms-transform: translateX(-10px); - transform: translateX(-10px); - } - - 100% { - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } -} - -.bounceInLeft { - -webkit-animation-name: bounceInLeft; - animation-name: bounceInLeft; -} - -@-webkit-keyframes bounceInRight { - 0% { - opacity: 0; - -webkit-transform: translateX(2000px); - transform: translateX(2000px); - } - - 60% { - opacity: 1; - -webkit-transform: translateX(-30px); - transform: translateX(-30px); - } - - 80% { - -webkit-transform: translateX(10px); - transform: translateX(10px); - } - - 100% { - -webkit-transform: translateX(0); - transform: translateX(0); - } -} - -@keyframes bounceInRight { - 0% { - opacity: 0; - -webkit-transform: translateX(2000px); - -ms-transform: translateX(2000px); - transform: translateX(2000px); - } - - 60% { - opacity: 1; - -webkit-transform: translateX(-30px); - -ms-transform: translateX(-30px); - transform: translateX(-30px); - } - - 80% { - -webkit-transform: translateX(10px); - -ms-transform: translateX(10px); - transform: translateX(10px); - } - - 100% { - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } -} - -.bounceInRight { - -webkit-animation-name: bounceInRight; - animation-name: bounceInRight; -} - -@-webkit-keyframes bounceInUp { - 0% { - opacity: 0; - -webkit-transform: translateY(2000px); - transform: translateY(2000px); - } - - 60% { - opacity: 1; - -webkit-transform: translateY(-30px); - transform: translateY(-30px); - } - - 80% { - -webkit-transform: translateY(10px); - transform: translateY(10px); - } - - 100% { - -webkit-transform: translateY(0); - transform: translateY(0); - } -} - -@keyframes bounceInUp { - 0% { - opacity: 0; - -webkit-transform: translateY(2000px); - -ms-transform: translateY(2000px); - transform: translateY(2000px); - } - - 60% { - opacity: 1; - -webkit-transform: translateY(-30px); - -ms-transform: translateY(-30px); - transform: translateY(-30px); - } - - 80% { - -webkit-transform: translateY(10px); - -ms-transform: translateY(10px); - transform: translateY(10px); - } - - 100% { - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } -} - -.bounceInUp { - -webkit-animation-name: bounceInUp; - animation-name: bounceInUp; -} - -@-webkit-keyframes bounceOut { - 0% { - -webkit-transform: scale(1); - transform: scale(1); - } - - 25% { - -webkit-transform: scale(.95); - transform: scale(.95); - } - - 50% { - opacity: 1; - -webkit-transform: scale(1.1); - transform: scale(1.1); - } - - 100% { - opacity: 0; - -webkit-transform: scale(.3); - transform: scale(.3); - } -} - -@keyframes bounceOut { - 0% { - -webkit-transform: scale(1); - -ms-transform: scale(1); - transform: scale(1); - } - - 25% { - -webkit-transform: scale(.95); - -ms-transform: scale(.95); - transform: scale(.95); - } - - 50% { - opacity: 1; - -webkit-transform: scale(1.1); - -ms-transform: scale(1.1); - transform: scale(1.1); - } - - 100% { - opacity: 0; - -webkit-transform: scale(.3); - -ms-transform: scale(.3); - transform: scale(.3); - } -} - -.bounceOut { - -webkit-animation-name: bounceOut; - animation-name: bounceOut; -} - -@-webkit-keyframes bounceOutDown { - 0% { - -webkit-transform: translateY(0); - transform: translateY(0); - } - - 20% { - opacity: 1; - -webkit-transform: translateY(-20px); - transform: translateY(-20px); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(2000px); - transform: translateY(2000px); - } -} - -@keyframes bounceOutDown { - 0% { - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } - - 20% { - opacity: 1; - -webkit-transform: translateY(-20px); - -ms-transform: translateY(-20px); - transform: translateY(-20px); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(2000px); - -ms-transform: translateY(2000px); - transform: translateY(2000px); - } -} - -.bounceOutDown { - -webkit-animation-name: bounceOutDown; - animation-name: bounceOutDown; -} - -@-webkit-keyframes bounceOutLeft { - 0% { - -webkit-transform: translateX(0); - transform: translateX(0); - } - - 20% { - opacity: 1; - -webkit-transform: translateX(20px); - transform: translateX(20px); - } - - 100% { - opacity: 0; - -webkit-transform: translateX(-2000px); - transform: translateX(-2000px); - } -} - -@keyframes bounceOutLeft { - 0% { - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } - - 20% { - opacity: 1; - -webkit-transform: translateX(20px); - -ms-transform: translateX(20px); - transform: translateX(20px); - } - - 100% { - opacity: 0; - -webkit-transform: translateX(-2000px); - -ms-transform: translateX(-2000px); - transform: translateX(-2000px); - } -} - -.bounceOutLeft { - -webkit-animation-name: bounceOutLeft; - animation-name: bounceOutLeft; -} - -@-webkit-keyframes bounceOutRight { - 0% { - -webkit-transform: translateX(0); - transform: translateX(0); - } - - 20% { - opacity: 1; - -webkit-transform: translateX(-20px); - transform: translateX(-20px); - } - - 100% { - opacity: 0; - -webkit-transform: translateX(2000px); - transform: translateX(2000px); - } -} - -@keyframes bounceOutRight { - 0% { - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } - - 20% { - opacity: 1; - -webkit-transform: translateX(-20px); - -ms-transform: translateX(-20px); - transform: translateX(-20px); - } - - 100% { - opacity: 0; - -webkit-transform: translateX(2000px); - -ms-transform: translateX(2000px); - transform: translateX(2000px); - } -} - -.bounceOutRight { - -webkit-animation-name: bounceOutRight; - animation-name: bounceOutRight; -} - -@-webkit-keyframes bounceOutUp { - 0% { - -webkit-transform: translateY(0); - transform: translateY(0); - } - - 20% { - opacity: 1; - -webkit-transform: translateY(20px); - transform: translateY(20px); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(-2000px); - transform: translateY(-2000px); - } -} - -@keyframes bounceOutUp { - 0% { - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } - - 20% { - opacity: 1; - -webkit-transform: translateY(20px); - -ms-transform: translateY(20px); - transform: translateY(20px); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(-2000px); - -ms-transform: translateY(-2000px); - transform: translateY(-2000px); - } -} - -.bounceOutUp { - -webkit-animation-name: bounceOutUp; - animation-name: bounceOutUp; -} - -@-webkit-keyframes fadeIn { - 0% { - opacity: 0; - } - - 100% { - opacity: 1; - } -} - -@keyframes fadeIn { - 0% { - opacity: 0; - } - - 100% { - opacity: 1; - } -} - -.fadeIn { - -webkit-animation-name: fadeIn; - animation-name: fadeIn; -} - -@-webkit-keyframes fadeInDown { - 0% { - opacity: 0; - -webkit-transform: translateY(-20px); - transform: translateY(-20px); - } - - 100% { - opacity: 1; - -webkit-transform: translateY(0); - transform: translateY(0); - } -} - -@keyframes fadeInDown { - 0% { - opacity: 0; - -webkit-transform: translateY(-20px); - -ms-transform: translateY(-20px); - transform: translateY(-20px); - } - - 100% { - opacity: 1; - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } -} - -.fadeInDown { - -webkit-animation-name: fadeInDown; - animation-name: fadeInDown; -} - -@-webkit-keyframes fadeInDownBig { - 0% { - opacity: 0; - -webkit-transform: translateY(-2000px); - transform: translateY(-2000px); - } - - 100% { - opacity: 1; - -webkit-transform: translateY(0); - transform: translateY(0); - } -} - -@keyframes fadeInDownBig { - 0% { - opacity: 0; - -webkit-transform: translateY(-2000px); - -ms-transform: translateY(-2000px); - transform: translateY(-2000px); - } - - 100% { - opacity: 1; - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } -} - -.fadeInDownBig { - -webkit-animation-name: fadeInDownBig; - animation-name: fadeInDownBig; -} - -@-webkit-keyframes fadeInLeft { - 0% { - opacity: 0; - -webkit-transform: translateX(-20px); - transform: translateX(-20px); - } - - 100% { - opacity: 1; - -webkit-transform: translateX(0); - transform: translateX(0); - } -} - -@keyframes fadeInLeft { - 0% { - opacity: 0; - -webkit-transform: translateX(-20px); - -ms-transform: translateX(-20px); - transform: translateX(-20px); - } - - 100% { - opacity: 1; - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } -} - -.fadeInLeft { - -webkit-animation-name: fadeInLeft; - animation-name: fadeInLeft; -} - -@-webkit-keyframes fadeInLeftBig { - 0% { - opacity: 0; - -webkit-transform: translateX(-2000px); - transform: translateX(-2000px); - } - - 100% { - opacity: 1; - -webkit-transform: translateX(0); - transform: translateX(0); - } -} - -@keyframes fadeInLeftBig { - 0% { - opacity: 0; - -webkit-transform: translateX(-2000px); - -ms-transform: translateX(-2000px); - transform: translateX(-2000px); - } - - 100% { - opacity: 1; - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } -} - -.fadeInLeftBig { - -webkit-animation-name: fadeInLeftBig; - animation-name: fadeInLeftBig; -} - -@-webkit-keyframes fadeInRight { - 0% { - opacity: 0; - -webkit-transform: translateX(20px); - transform: translateX(20px); - } - - 100% { - opacity: 1; - -webkit-transform: translateX(0); - transform: translateX(0); - } -} - -@keyframes fadeInRight { - 0% { - opacity: 0; - -webkit-transform: translateX(40px); - -ms-transform: translateX(40px); - transform: translateX(40px); - } - - 100% { - opacity: 1; - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } -} - -.fadeInRight { - -webkit-animation-name: fadeInRight; - animation-name: fadeInRight; -} - -@-webkit-keyframes fadeInRightBig { - 0% { - opacity: 0; - -webkit-transform: translateX(2000px); - transform: translateX(2000px); - } - - 100% { - opacity: 1; - -webkit-transform: translateX(0); - transform: translateX(0); - } -} - -@keyframes fadeInRightBig { - 0% { - opacity: 0; - -webkit-transform: translateX(2000px); - -ms-transform: translateX(2000px); - transform: translateX(2000px); - } - - 100% { - opacity: 1; - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } -} - -.fadeInRightBig { - -webkit-animation-name: fadeInRightBig; - animation-name: fadeInRightBig; -} - -@-webkit-keyframes fadeInUp { - 0% { - opacity: 0; - -webkit-transform: translateY(20px); - transform: translateY(20px); - } - - 100% { - opacity: 1; - -webkit-transform: translateY(0); - transform: translateY(0); - } -} - -@keyframes fadeInUp { - 0% { - opacity: 0; - -webkit-transform: translateY(20px); - -ms-transform: translateY(20px); - transform: translateY(20px); - } - - 100% { - opacity: 1; - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } -} - -.fadeInUp { - -webkit-animation-name: fadeInUp; - animation-name: fadeInUp; -} - -@-webkit-keyframes fadeInUpBig { - 0% { - opacity: 0; - -webkit-transform: translateY(2000px); - transform: translateY(2000px); - } - - 100% { - opacity: 1; - -webkit-transform: translateY(0); - transform: translateY(0); - } -} - -@keyframes fadeInUpBig { - 0% { - opacity: 0; - -webkit-transform: translateY(2000px); - -ms-transform: translateY(2000px); - transform: translateY(2000px); - } - - 100% { - opacity: 1; - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } -} - -.fadeInUpBig { - -webkit-animation-name: fadeInUpBig; - animation-name: fadeInUpBig; -} - -@-webkit-keyframes fadeOut { - 0% { - opacity: 1; - } - - 100% { - opacity: 0; - } -} - -@keyframes fadeOut { - 0% { - opacity: 1; - } - - 100% { - opacity: 0; - } -} - -.fadeOut { - -webkit-animation-name: fadeOut; - animation-name: fadeOut; -} - -@-webkit-keyframes fadeOutDown { - 0% { - opacity: 1; - -webkit-transform: translateY(0); - transform: translateY(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(20px); - transform: translateY(20px); - } -} - -@keyframes fadeOutDown { - 0% { - opacity: 1; - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(20px); - -ms-transform: translateY(20px); - transform: translateY(20px); - } -} - -.fadeOutDown { - -webkit-animation-name: fadeOutDown; - animation-name: fadeOutDown; -} - -@-webkit-keyframes fadeOutDownBig { - 0% { - opacity: 1; - -webkit-transform: translateY(0); - transform: translateY(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(2000px); - transform: translateY(2000px); - } -} - -@keyframes fadeOutDownBig { - 0% { - opacity: 1; - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(2000px); - -ms-transform: translateY(2000px); - transform: translateY(2000px); - } -} - -.fadeOutDownBig { - -webkit-animation-name: fadeOutDownBig; - animation-name: fadeOutDownBig; -} - -@-webkit-keyframes fadeOutLeft { - 0% { - opacity: 1; - -webkit-transform: translateX(0); - transform: translateX(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateX(-20px); - transform: translateX(-20px); - } -} - -@keyframes fadeOutLeft { - 0% { - opacity: 1; - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateX(-20px); - -ms-transform: translateX(-20px); - transform: translateX(-20px); - } -} - -.fadeOutLeft { - -webkit-animation-name: fadeOutLeft; - animation-name: fadeOutLeft; -} - -@-webkit-keyframes fadeOutLeftBig { - 0% { - opacity: 1; - -webkit-transform: translateX(0); - transform: translateX(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateX(-2000px); - transform: translateX(-2000px); - } -} - -@keyframes fadeOutLeftBig { - 0% { - opacity: 1; - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateX(-2000px); - -ms-transform: translateX(-2000px); - transform: translateX(-2000px); - } -} - -.fadeOutLeftBig { - -webkit-animation-name: fadeOutLeftBig; - animation-name: fadeOutLeftBig; -} - -@-webkit-keyframes fadeOutRight { - 0% { - opacity: 1; - -webkit-transform: translateX(0); - transform: translateX(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateX(20px); - transform: translateX(20px); - } -} - -@keyframes fadeOutRight { - 0% { - opacity: 1; - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateX(20px); - -ms-transform: translateX(20px); - transform: translateX(20px); - } -} - -.fadeOutRight { - -webkit-animation-name: fadeOutRight; - animation-name: fadeOutRight; -} - -@-webkit-keyframes fadeOutRightBig { - 0% { - opacity: 1; - -webkit-transform: translateX(0); - transform: translateX(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateX(2000px); - transform: translateX(2000px); - } -} - -@keyframes fadeOutRightBig { - 0% { - opacity: 1; - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateX(2000px); - -ms-transform: translateX(2000px); - transform: translateX(2000px); - } -} - -.fadeOutRightBig { - -webkit-animation-name: fadeOutRightBig; - animation-name: fadeOutRightBig; -} - -@-webkit-keyframes fadeOutUp { - 0% { - opacity: 1; - -webkit-transform: translateY(0); - transform: translateY(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(-20px); - transform: translateY(-20px); - } -} - -@keyframes fadeOutUp { - 0% { - opacity: 1; - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(-20px); - -ms-transform: translateY(-20px); - transform: translateY(-20px); - } -} - -.fadeOutUp { - -webkit-animation-name: fadeOutUp; - animation-name: fadeOutUp; -} - -@-webkit-keyframes fadeOutUpBig { - 0% { - opacity: 1; - -webkit-transform: translateY(0); - transform: translateY(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(-2000px); - transform: translateY(-2000px); - } -} - -@keyframes fadeOutUpBig { - 0% { - opacity: 1; - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(-2000px); - -ms-transform: translateY(-2000px); - transform: translateY(-2000px); - } -} - -.fadeOutUpBig { - -webkit-animation-name: fadeOutUpBig; - animation-name: fadeOutUpBig; -} - -@-webkit-keyframes flip { - 0% { - -webkit-transform: perspective(400px) translateZ(0) rotateY(0) scale(1); - transform: perspective(400px) translateZ(0) rotateY(0) scale(1); - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; - } - - 40% { - -webkit-transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1); - transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1); - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; - } - - 50% { - -webkit-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1); - transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 80% { - -webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95); - transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 100% { - -webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1); - transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } -} - -@keyframes flip { - 0% { - -webkit-transform: perspective(400px) translateZ(0) rotateY(0) scale(1); - -ms-transform: perspective(400px) translateZ(0) rotateY(0) scale(1); - transform: perspective(400px) translateZ(0) rotateY(0) scale(1); - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; - } - - 40% { - -webkit-transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1); - -ms-transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1); - transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1); - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; - } - - 50% { - -webkit-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1); - -ms-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1); - transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 80% { - -webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95); - -ms-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95); - transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 100% { - -webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1); - -ms-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1); - transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } -} - -.animated.flip { - -webkit-backface-visibility: visible; - -ms-backface-visibility: visible; - backface-visibility: visible; - -webkit-animation-name: flip; - animation-name: flip; -} - -@-webkit-keyframes flipInX { - 0% { - -webkit-transform: perspective(400px) rotateX(90deg); - transform: perspective(400px) rotateX(90deg); - opacity: 0; - } - - 40% { - -webkit-transform: perspective(400px) rotateX(-10deg); - transform: perspective(400px) rotateX(-10deg); - } - - 70% { - -webkit-transform: perspective(400px) rotateX(10deg); - transform: perspective(400px) rotateX(10deg); - } - - 100% { - -webkit-transform: perspective(400px) rotateX(0deg); - transform: perspective(400px) rotateX(0deg); - opacity: 1; - } -} - -@keyframes flipInX { - 0% { - -webkit-transform: perspective(400px) rotateX(90deg); - -ms-transform: perspective(400px) rotateX(90deg); - transform: perspective(400px) rotateX(90deg); - opacity: 0; - } - - 40% { - -webkit-transform: perspective(400px) rotateX(-10deg); - -ms-transform: perspective(400px) rotateX(-10deg); - transform: perspective(400px) rotateX(-10deg); - } - - 70% { - -webkit-transform: perspective(400px) rotateX(10deg); - -ms-transform: perspective(400px) rotateX(10deg); - transform: perspective(400px) rotateX(10deg); - } - - 100% { - -webkit-transform: perspective(400px) rotateX(0deg); - -ms-transform: perspective(400px) rotateX(0deg); - transform: perspective(400px) rotateX(0deg); - opacity: 1; - } -} - -.flipInX { - -webkit-backface-visibility: visible !important; - -ms-backface-visibility: visible !important; - backface-visibility: visible !important; - -webkit-animation-name: flipInX; - animation-name: flipInX; -} - -@-webkit-keyframes flipInY { - 0% { - -webkit-transform: perspective(400px) rotateY(90deg); - transform: perspective(400px) rotateY(90deg); - opacity: 0; - } - - 40% { - -webkit-transform: perspective(400px) rotateY(-10deg); - transform: perspective(400px) rotateY(-10deg); - } - - 70% { - -webkit-transform: perspective(400px) rotateY(10deg); - transform: perspective(400px) rotateY(10deg); - } - - 100% { - -webkit-transform: perspective(400px) rotateY(0deg); - transform: perspective(400px) rotateY(0deg); - opacity: 1; - } -} - -@keyframes flipInY { - 0% { - -webkit-transform: perspective(400px) rotateY(90deg); - -ms-transform: perspective(400px) rotateY(90deg); - transform: perspective(400px) rotateY(90deg); - opacity: 0; - } - - 40% { - -webkit-transform: perspective(400px) rotateY(-10deg); - -ms-transform: perspective(400px) rotateY(-10deg); - transform: perspective(400px) rotateY(-10deg); - } - - 70% { - -webkit-transform: perspective(400px) rotateY(10deg); - -ms-transform: perspective(400px) rotateY(10deg); - transform: perspective(400px) rotateY(10deg); - } - - 100% { - -webkit-transform: perspective(400px) rotateY(0deg); - -ms-transform: perspective(400px) rotateY(0deg); - transform: perspective(400px) rotateY(0deg); - opacity: 1; - } -} - -.flipInY { - -webkit-backface-visibility: visible !important; - -ms-backface-visibility: visible !important; - backface-visibility: visible !important; - -webkit-animation-name: flipInY; - animation-name: flipInY; -} - -@-webkit-keyframes flipOutX { - 0% { - -webkit-transform: perspective(400px) rotateX(0deg); - transform: perspective(400px) rotateX(0deg); - opacity: 1; - } - - 100% { - -webkit-transform: perspective(400px) rotateX(90deg); - transform: perspective(400px) rotateX(90deg); - opacity: 0; - } -} - -@keyframes flipOutX { - 0% { - -webkit-transform: perspective(400px) rotateX(0deg); - -ms-transform: perspective(400px) rotateX(0deg); - transform: perspective(400px) rotateX(0deg); - opacity: 1; - } - - 100% { - -webkit-transform: perspective(400px) rotateX(90deg); - -ms-transform: perspective(400px) rotateX(90deg); - transform: perspective(400px) rotateX(90deg); - opacity: 0; - } -} - -.flipOutX { - -webkit-animation-name: flipOutX; - animation-name: flipOutX; - -webkit-backface-visibility: visible !important; - -ms-backface-visibility: visible !important; - backface-visibility: visible !important; -} - -@-webkit-keyframes flipOutY { - 0% { - -webkit-transform: perspective(400px) rotateY(0deg); - transform: perspective(400px) rotateY(0deg); - opacity: 1; - } - - 100% { - -webkit-transform: perspective(400px) rotateY(90deg); - transform: perspective(400px) rotateY(90deg); - opacity: 0; - } -} - -@keyframes flipOutY { - 0% { - -webkit-transform: perspective(400px) rotateY(0deg); - -ms-transform: perspective(400px) rotateY(0deg); - transform: perspective(400px) rotateY(0deg); - opacity: 1; - } - - 100% { - -webkit-transform: perspective(400px) rotateY(90deg); - -ms-transform: perspective(400px) rotateY(90deg); - transform: perspective(400px) rotateY(90deg); - opacity: 0; - } -} - -.flipOutY { - -webkit-backface-visibility: visible !important; - -ms-backface-visibility: visible !important; - backface-visibility: visible !important; - -webkit-animation-name: flipOutY; - animation-name: flipOutY; -} - -@-webkit-keyframes lightSpeedIn { - 0% { - -webkit-transform: translateX(100%) skewX(-30deg); - transform: translateX(100%) skewX(-30deg); - opacity: 0; - } - - 60% { - -webkit-transform: translateX(-20%) skewX(30deg); - transform: translateX(-20%) skewX(30deg); - opacity: 1; - } - - 80% { - -webkit-transform: translateX(0%) skewX(-15deg); - transform: translateX(0%) skewX(-15deg); - opacity: 1; - } - - 100% { - -webkit-transform: translateX(0%) skewX(0deg); - transform: translateX(0%) skewX(0deg); - opacity: 1; - } -} - -@keyframes lightSpeedIn { - 0% { - -webkit-transform: translateX(100%) skewX(-30deg); - -ms-transform: translateX(100%) skewX(-30deg); - transform: translateX(100%) skewX(-30deg); - opacity: 0; - } - - 60% { - -webkit-transform: translateX(-20%) skewX(30deg); - -ms-transform: translateX(-20%) skewX(30deg); - transform: translateX(-20%) skewX(30deg); - opacity: 1; - } - - 80% { - -webkit-transform: translateX(0%) skewX(-15deg); - -ms-transform: translateX(0%) skewX(-15deg); - transform: translateX(0%) skewX(-15deg); - opacity: 1; - } - - 100% { - -webkit-transform: translateX(0%) skewX(0deg); - -ms-transform: translateX(0%) skewX(0deg); - transform: translateX(0%) skewX(0deg); - opacity: 1; - } -} - -.lightSpeedIn { - -webkit-animation-name: lightSpeedIn; - animation-name: lightSpeedIn; - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; -} - -@-webkit-keyframes lightSpeedOut { - 0% { - -webkit-transform: translateX(0%) skewX(0deg); - transform: translateX(0%) skewX(0deg); - opacity: 1; - } - - 100% { - -webkit-transform: translateX(100%) skewX(-30deg); - transform: translateX(100%) skewX(-30deg); - opacity: 0; - } -} - -@keyframes lightSpeedOut { - 0% { - -webkit-transform: translateX(0%) skewX(0deg); - -ms-transform: translateX(0%) skewX(0deg); - transform: translateX(0%) skewX(0deg); - opacity: 1; - } - - 100% { - -webkit-transform: translateX(100%) skewX(-30deg); - -ms-transform: translateX(100%) skewX(-30deg); - transform: translateX(100%) skewX(-30deg); - opacity: 0; - } -} - -.lightSpeedOut { - -webkit-animation-name: lightSpeedOut; - animation-name: lightSpeedOut; - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; -} - -@-webkit-keyframes rotateIn { - 0% { - -webkit-transform-origin: center center; - transform-origin: center center; - -webkit-transform: rotate(-200deg); - transform: rotate(-200deg); - opacity: 0; - } - - 100% { - -webkit-transform-origin: center center; - transform-origin: center center; - -webkit-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } -} - -@keyframes rotateIn { - 0% { - -webkit-transform-origin: center center; - -ms-transform-origin: center center; - transform-origin: center center; - -webkit-transform: rotate(-200deg); - -ms-transform: rotate(-200deg); - transform: rotate(-200deg); - opacity: 0; - } - - 100% { - -webkit-transform-origin: center center; - -ms-transform-origin: center center; - transform-origin: center center; - -webkit-transform: rotate(0); - -ms-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } -} - -.rotateIn { - -webkit-animation-name: rotateIn; - animation-name: rotateIn; -} - -@-webkit-keyframes rotateInDownLeft { - 0% { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate(-90deg); - transform: rotate(-90deg); - opacity: 0; - } - - 100% { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } -} - -@keyframes rotateInDownLeft { - 0% { - -webkit-transform-origin: left bottom; - -ms-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate(-90deg); - -ms-transform: rotate(-90deg); - transform: rotate(-90deg); - opacity: 0; - } - - 100% { - -webkit-transform-origin: left bottom; - -ms-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate(0); - -ms-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } -} - -.rotateInDownLeft { - -webkit-animation-name: rotateInDownLeft; - animation-name: rotateInDownLeft; -} - -@-webkit-keyframes rotateInDownRight { - 0% { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate(90deg); - transform: rotate(90deg); - opacity: 0; - } - - 100% { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } -} - -@keyframes rotateInDownRight { - 0% { - -webkit-transform-origin: right bottom; - -ms-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg); - opacity: 0; - } - - 100% { - -webkit-transform-origin: right bottom; - -ms-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate(0); - -ms-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } -} - -.rotateInDownRight { - -webkit-animation-name: rotateInDownRight; - animation-name: rotateInDownRight; -} - -@-webkit-keyframes rotateInUpLeft { - 0% { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate(90deg); - transform: rotate(90deg); - opacity: 0; - } - - 100% { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } -} - -@keyframes rotateInUpLeft { - 0% { - -webkit-transform-origin: left bottom; - -ms-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg); - opacity: 0; - } - - 100% { - -webkit-transform-origin: left bottom; - -ms-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate(0); - -ms-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } -} - -.rotateInUpLeft { - -webkit-animation-name: rotateInUpLeft; - animation-name: rotateInUpLeft; -} - -@-webkit-keyframes rotateInUpRight { - 0% { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate(-90deg); - transform: rotate(-90deg); - opacity: 0; - } - - 100% { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } -} - -@keyframes rotateInUpRight { - 0% { - -webkit-transform-origin: right bottom; - -ms-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate(-90deg); - -ms-transform: rotate(-90deg); - transform: rotate(-90deg); - opacity: 0; - } - - 100% { - -webkit-transform-origin: right bottom; - -ms-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate(0); - -ms-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } -} - -.rotateInUpRight { - -webkit-animation-name: rotateInUpRight; - animation-name: rotateInUpRight; -} - -@-webkit-keyframes rotateOut { - 0% { - -webkit-transform-origin: center center; - transform-origin: center center; - -webkit-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } - - 100% { - -webkit-transform-origin: center center; - transform-origin: center center; - -webkit-transform: rotate(200deg); - transform: rotate(200deg); - opacity: 0; - } -} - -@keyframes rotateOut { - 0% { - -webkit-transform-origin: center center; - -ms-transform-origin: center center; - transform-origin: center center; - -webkit-transform: rotate(0); - -ms-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } - - 100% { - -webkit-transform-origin: center center; - -ms-transform-origin: center center; - transform-origin: center center; - -webkit-transform: rotate(200deg); - -ms-transform: rotate(200deg); - transform: rotate(200deg); - opacity: 0; - } -} - -.rotateOut { - -webkit-animation-name: rotateOut; - animation-name: rotateOut; -} - -@-webkit-keyframes rotateOutDownLeft { - 0% { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } - - 100% { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate(90deg); - transform: rotate(90deg); - opacity: 0; - } -} - -@keyframes rotateOutDownLeft { - 0% { - -webkit-transform-origin: left bottom; - -ms-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate(0); - -ms-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } - - 100% { - -webkit-transform-origin: left bottom; - -ms-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg); - opacity: 0; - } -} - -.rotateOutDownLeft { - -webkit-animation-name: rotateOutDownLeft; - animation-name: rotateOutDownLeft; -} - -@-webkit-keyframes rotateOutDownRight { - 0% { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } - - 100% { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate(-90deg); - transform: rotate(-90deg); - opacity: 0; - } -} - -@keyframes rotateOutDownRight { - 0% { - -webkit-transform-origin: right bottom; - -ms-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate(0); - -ms-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } - - 100% { - -webkit-transform-origin: right bottom; - -ms-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate(-90deg); - -ms-transform: rotate(-90deg); - transform: rotate(-90deg); - opacity: 0; - } -} - -.rotateOutDownRight { - -webkit-animation-name: rotateOutDownRight; - animation-name: rotateOutDownRight; -} - -@-webkit-keyframes rotateOutUpLeft { - 0% { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } - - 100% { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate(-90deg); - transform: rotate(-90deg); - opacity: 0; - } -} - -@keyframes rotateOutUpLeft { - 0% { - -webkit-transform-origin: left bottom; - -ms-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate(0); - -ms-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } - - 100% { - -webkit-transform-origin: left bottom; - -ms-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate(-90deg); - -ms-transform: rotate(-90deg); - transform: rotate(-90deg); - opacity: 0; - } -} - -.rotateOutUpLeft { - -webkit-animation-name: rotateOutUpLeft; - animation-name: rotateOutUpLeft; -} - -@-webkit-keyframes rotateOutUpRight { - 0% { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } - - 100% { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate(90deg); - transform: rotate(90deg); - opacity: 0; - } -} - -@keyframes rotateOutUpRight { - 0% { - -webkit-transform-origin: right bottom; - -ms-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate(0); - -ms-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } - - 100% { - -webkit-transform-origin: right bottom; - -ms-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg); - opacity: 0; - } -} - -.rotateOutUpRight { - -webkit-animation-name: rotateOutUpRight; - animation-name: rotateOutUpRight; -} - -@-webkit-keyframes slideInDown { - 0% { - opacity: 0; - -webkit-transform: translateY(-2000px); - transform: translateY(-2000px); - } - - 100% { - -webkit-transform: translateY(0); - transform: translateY(0); - } -} - -@keyframes slideInDown { - 0% { - opacity: 0; - -webkit-transform: translateY(-2000px); - -ms-transform: translateY(-2000px); - transform: translateY(-2000px); - } - - 100% { - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } -} - -.slideInDown { - -webkit-animation-name: slideInDown; - animation-name: slideInDown; -} - -@-webkit-keyframes slideInLeft { - 0% { - opacity: 0; - -webkit-transform: translateX(-2000px); - transform: translateX(-2000px); - } - - 100% { - -webkit-transform: translateX(0); - transform: translateX(0); - } -} - -@keyframes slideInLeft { - 0% { - opacity: 0; - -webkit-transform: translateX(-2000px); - -ms-transform: translateX(-2000px); - transform: translateX(-2000px); - } - - 100% { - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } -} - -.slideInLeft { - -webkit-animation-name: slideInLeft; - animation-name: slideInLeft; -} - -@-webkit-keyframes slideInRight { - 0% { - opacity: 0; - -webkit-transform: translateX(2000px); - transform: translateX(2000px); - } - - 100% { - -webkit-transform: translateX(0); - transform: translateX(0); - } -} - -@keyframes slideInRight { - 0% { - opacity: 0; - -webkit-transform: translateX(2000px); - -ms-transform: translateX(2000px); - transform: translateX(2000px); - } - - 100% { - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } -} - -.slideInRight { - -webkit-animation-name: slideInRight; - animation-name: slideInRight; -} - -@-webkit-keyframes slideOutLeft { - 0% { - -webkit-transform: translateX(0); - transform: translateX(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateX(-2000px); - transform: translateX(-2000px); - } -} - -@keyframes slideOutLeft { - 0% { - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateX(-2000px); - -ms-transform: translateX(-2000px); - transform: translateX(-2000px); - } -} - -.slideOutLeft { - -webkit-animation-name: slideOutLeft; - animation-name: slideOutLeft; -} - -@-webkit-keyframes slideOutRight { - 0% { - -webkit-transform: translateX(0); - transform: translateX(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateX(2000px); - transform: translateX(2000px); - } -} - -@keyframes slideOutRight { - 0% { - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateX(2000px); - -ms-transform: translateX(2000px); - transform: translateX(2000px); - } -} - -.slideOutRight { - -webkit-animation-name: slideOutRight; - animation-name: slideOutRight; -} - -@-webkit-keyframes slideOutUp { - 0% { - -webkit-transform: translateY(0); - transform: translateY(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(-2000px); - transform: translateY(-2000px); - } -} - -@keyframes slideOutUp { - 0% { - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(-2000px); - -ms-transform: translateY(-2000px); - transform: translateY(-2000px); - } -} - -.slideOutUp { - -webkit-animation-name: slideOutUp; - animation-name: slideOutUp; -} - -@-webkit-keyframes slideOutDown { - 0% { - -webkit-transform: translateY(0); - transform: translateY(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(2000px); - transform: translateY(2000px); - } -} - -@keyframes slideOutDown { - 0% { - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(2000px); - -ms-transform: translateY(2000px); - transform: translateY(2000px); - } -} - -.slideOutDown { - -webkit-animation-name: slideOutDown; - animation-name: slideOutDown; -} - -@-webkit-keyframes hinge { - 0% { - -webkit-transform: rotate(0); - transform: rotate(0); - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - } - - 20%, 60% { - -webkit-transform: rotate(80deg); - transform: rotate(80deg); - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - } - - 40% { - -webkit-transform: rotate(60deg); - transform: rotate(60deg); - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - } - - 80% { - -webkit-transform: rotate(60deg) translateY(0); - transform: rotate(60deg) translateY(0); - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - opacity: 1; - } - - 100% { - -webkit-transform: translateY(700px); - transform: translateY(700px); - opacity: 0; - } -} - -@keyframes hinge { - 0% { - -webkit-transform: rotate(0); - -ms-transform: rotate(0); - transform: rotate(0); - -webkit-transform-origin: top left; - -ms-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - } - - 20%, 60% { - -webkit-transform: rotate(80deg); - -ms-transform: rotate(80deg); - transform: rotate(80deg); - -webkit-transform-origin: top left; - -ms-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - } - - 40% { - -webkit-transform: rotate(60deg); - -ms-transform: rotate(60deg); - transform: rotate(60deg); - -webkit-transform-origin: top left; - -ms-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - } - - 80% { - -webkit-transform: rotate(60deg) translateY(0); - -ms-transform: rotate(60deg) translateY(0); - transform: rotate(60deg) translateY(0); - -webkit-transform-origin: top left; - -ms-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - opacity: 1; - } - - 100% { - -webkit-transform: translateY(700px); - -ms-transform: translateY(700px); - transform: translateY(700px); - opacity: 0; - } -} - -.hinge { - -webkit-animation-name: hinge; - animation-name: hinge; -} - -/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ - -@-webkit-keyframes rollIn { - 0% { - opacity: 0; - -webkit-transform: translateX(-100%) rotate(-120deg); - transform: translateX(-100%) rotate(-120deg); - } - - 100% { - opacity: 1; - -webkit-transform: translateX(0px) rotate(0deg); - transform: translateX(0px) rotate(0deg); - } -} - -@keyframes rollIn { - 0% { - opacity: 0; - -webkit-transform: translateX(-100%) rotate(-120deg); - -ms-transform: translateX(-100%) rotate(-120deg); - transform: translateX(-100%) rotate(-120deg); - } - - 100% { - opacity: 1; - -webkit-transform: translateX(0px) rotate(0deg); - -ms-transform: translateX(0px) rotate(0deg); - transform: translateX(0px) rotate(0deg); - } -} - -.rollIn { - -webkit-animation-name: rollIn; - animation-name: rollIn; -} - -/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ - -@-webkit-keyframes rollOut { - 0% { - opacity: 1; - -webkit-transform: translateX(0px) rotate(0deg); - transform: translateX(0px) rotate(0deg); - } - - 100% { - opacity: 0; - -webkit-transform: translateX(100%) rotate(120deg); - transform: translateX(100%) rotate(120deg); - } -} - -@keyframes rollOut { - 0% { - opacity: 1; - -webkit-transform: translateX(0px) rotate(0deg); - -ms-transform: translateX(0px) rotate(0deg); - transform: translateX(0px) rotate(0deg); - } - - 100% { - opacity: 0; - -webkit-transform: translateX(100%) rotate(120deg); - -ms-transform: translateX(100%) rotate(120deg); - transform: translateX(100%) rotate(120deg); - } -} - -.rollOut { - -webkit-animation-name: rollOut; - animation-name: rollOut; -} \ No newline at end of file diff --git a/assets/css/bootstrap.css b/assets/css/bootstrap.css deleted file mode 100644 index 4165d414..00000000 --- a/assets/css/bootstrap.css +++ /dev/null @@ -1,6358 +0,0 @@ -/*! - * Bootstrap v3.3.0 (http://getbootstrap.com) - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ -html { - font-family: sans-serif; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; -} -body { - margin: 0; -} -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -menu, -nav, -section, -summary { - display: block; -} -audio, -canvas, -progress, -video { - display: inline-block; - vertical-align: baseline; -} -audio:not([controls]) { - display: none; - height: 0; -} -[hidden], -template { - display: none; -} -a { - background-color: transparent; -} -a:active, -a:hover { - outline: 0; -} -abbr[title] { - border-bottom: 1px dotted; -} -b, -strong { - font-weight: bold; -} -dfn { - font-style: italic; -} -h1 { - margin: .67em 0; - font-size: 2em; -} -mark { - color: #000; - background: #ff0; -} -small { - font-size: 80%; -} -sub, -sup { - position: relative; - font-size: 75%; - line-height: 0; - vertical-align: baseline; -} -sup { - top: -.5em; -} -sub { - bottom: -.25em; -} -img { - border: 0; -} -svg:not(:root) { - overflow: hidden; -} -figure { - margin: 1em 40px; -} -hr { - height: 0; - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} -pre { - overflow: auto; -} -code, -kbd, -pre, -samp { - font-family: monospace, monospace; - font-size: 1em; -} -button, -input, -optgroup, -select, -textarea { - margin: 0; - font: inherit; - color: inherit; -} -button { - overflow: visible; -} -button, -select { - text-transform: none; -} -button, -html input[type="button"], -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; - cursor: pointer; -} -button[disabled], -html input[disabled] { - cursor: default; -} -button::-moz-focus-inner, -input::-moz-focus-inner { - padding: 0; - border: 0; -} -input { - line-height: normal; -} -input[type="checkbox"], -input[type="radio"] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - padding: 0; -} -input[type="number"]::-webkit-inner-spin-button, -input[type="number"]::-webkit-outer-spin-button { - height: auto; -} -input[type="search"] { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; - -webkit-appearance: textfield; -} -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} -fieldset { - padding: .35em .625em .75em; - margin: 0 2px; - border: 1px solid #c0c0c0; -} -legend { - padding: 0; - border: 0; -} -textarea { - overflow: auto; -} -optgroup { - font-weight: bold; -} -table { - border-spacing: 0; - border-collapse: collapse; -} -td, -th { - padding: 0; -} -/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ -@media print { - *, - *:before, - *:after { - color: #000 !important; - text-shadow: none !important; - background: transparent !important; - -webkit-box-shadow: none !important; - box-shadow: none !important; - } - a, - a:visited { - text-decoration: underline; - } - a[href]:after { - content: " (" attr(href) ")"; - } - abbr[title]:after { - content: " (" attr(title) ")"; - } - a[href^="#"]:after, - a[href^="javascript:"]:after { - content: ""; - } - pre, - blockquote { - border: 1px solid #999; - - page-break-inside: avoid; - } - thead { - display: table-header-group; - } - tr, - img { - page-break-inside: avoid; - } - img { - max-width: 100% !important; - } - p, - h2, - h3 { - orphans: 3; - widows: 3; - } - h2, - h3 { - page-break-after: avoid; - } - select { - background: #fff !important; - } - .navbar { - display: none; - } - .btn > .caret, - .dropup > .btn > .caret { - border-top-color: #000 !important; - } - .label { - border: 1px solid #000; - } - .table { - border-collapse: collapse !important; - } - .table td, - .table th { - background-color: #fff !important; - } - .table-bordered th, - .table-bordered td { - border: 1px solid #ddd !important; - } -} -@font-face { - font-family: 'Glyphicons Halflings'; - - src: url('../fonts/glyphicons-halflings-regular.eot'); - src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); -} -.glyphicon { - position: relative; - top: 1px; - display: inline-block; - font-family: 'Glyphicons Halflings'; - font-style: normal; - font-weight: normal; - line-height: 1; - - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.glyphicon-asterisk:before { - content: "\2a"; -} -.glyphicon-plus:before { - content: "\2b"; -} -.glyphicon-euro:before, -.glyphicon-eur:before { - content: "\20ac"; -} -.glyphicon-minus:before { - content: "\2212"; -} -.glyphicon-cloud:before { - content: "\2601"; -} -.glyphicon-envelope:before { - content: "\2709"; -} -.glyphicon-pencil:before { - content: "\270f"; -} -.glyphicon-glass:before { - content: "\e001"; -} -.glyphicon-music:before { - content: "\e002"; -} -.glyphicon-search:before { - content: "\e003"; -} -.glyphicon-heart:before { - content: "\e005"; -} -.glyphicon-star:before { - content: "\e006"; -} -.glyphicon-star-empty:before { - content: "\e007"; -} -.glyphicon-user:before { - content: "\e008"; -} -.glyphicon-film:before { - content: "\e009"; -} -.glyphicon-th-large:before { - content: "\e010"; -} -.glyphicon-th:before { - content: "\e011"; -} -.glyphicon-th-list:before { - content: "\e012"; -} -.glyphicon-ok:before { - content: "\e013"; -} -.glyphicon-remove:before { - content: "\e014"; -} -.glyphicon-zoom-in:before { - content: "\e015"; -} -.glyphicon-zoom-out:before { - content: "\e016"; -} -.glyphicon-off:before { - content: "\e017"; -} -.glyphicon-signal:before { - content: "\e018"; -} -.glyphicon-cog:before { - content: "\e019"; -} -.glyphicon-trash:before { - content: "\e020"; -} -.glyphicon-home:before { - content: "\e021"; -} -.glyphicon-file:before { - content: "\e022"; -} -.glyphicon-time:before { - content: "\e023"; -} -.glyphicon-road:before { - content: "\e024"; -} -.glyphicon-download-alt:before { - content: "\e025"; -} -.glyphicon-download:before { - content: "\e026"; -} -.glyphicon-upload:before { - content: "\e027"; -} -.glyphicon-inbox:before { - content: "\e028"; -} -.glyphicon-play-circle:before { - content: "\e029"; -} -.glyphicon-repeat:before { - content: "\e030"; -} -.glyphicon-refresh:before { - content: "\e031"; -} -.glyphicon-list-alt:before { - content: "\e032"; -} -.glyphicon-lock:before { - content: "\e033"; -} -.glyphicon-flag:before { - content: "\e034"; -} -.glyphicon-headphones:before { - content: "\e035"; -} -.glyphicon-volume-off:before { - content: "\e036"; -} -.glyphicon-volume-down:before { - content: "\e037"; -} -.glyphicon-volume-up:before { - content: "\e038"; -} -.glyphicon-qrcode:before { - content: "\e039"; -} -.glyphicon-barcode:before { - content: "\e040"; -} -.glyphicon-tag:before { - content: "\e041"; -} -.glyphicon-tags:before { - content: "\e042"; -} -.glyphicon-book:before { - content: "\e043"; -} -.glyphicon-bookmark:before { - content: "\e044"; -} -.glyphicon-print:before { - content: "\e045"; -} -.glyphicon-camera:before { - content: "\e046"; -} -.glyphicon-font:before { - content: "\e047"; -} -.glyphicon-bold:before { - content: "\e048"; -} -.glyphicon-italic:before { - content: "\e049"; -} -.glyphicon-text-height:before { - content: "\e050"; -} -.glyphicon-text-width:before { - content: "\e051"; -} -.glyphicon-align-left:before { - content: "\e052"; -} -.glyphicon-align-center:before { - content: "\e053"; -} -.glyphicon-align-right:before { - content: "\e054"; -} -.glyphicon-align-justify:before { - content: "\e055"; -} -.glyphicon-list:before { - content: "\e056"; -} -.glyphicon-indent-left:before { - content: "\e057"; -} -.glyphicon-indent-right:before { - content: "\e058"; -} -.glyphicon-facetime-video:before { - content: "\e059"; -} -.glyphicon-picture:before { - content: "\e060"; -} -.glyphicon-map-marker:before { - content: "\e062"; -} -.glyphicon-adjust:before { - content: "\e063"; -} -.glyphicon-tint:before { - content: "\e064"; -} -.glyphicon-edit:before { - content: "\e065"; -} -.glyphicon-share:before { - content: "\e066"; -} -.glyphicon-check:before { - content: "\e067"; -} -.glyphicon-move:before { - content: "\e068"; -} -.glyphicon-step-backward:before { - content: "\e069"; -} -.glyphicon-fast-backward:before { - content: "\e070"; -} -.glyphicon-backward:before { - content: "\e071"; -} -.glyphicon-play:before { - content: "\e072"; -} -.glyphicon-pause:before { - content: "\e073"; -} -.glyphicon-stop:before { - content: "\e074"; -} -.glyphicon-forward:before { - content: "\e075"; -} -.glyphicon-fast-forward:before { - content: "\e076"; -} -.glyphicon-step-forward:before { - content: "\e077"; -} -.glyphicon-eject:before { - content: "\e078"; -} -.glyphicon-chevron-left:before { - content: "\e079"; -} -.glyphicon-chevron-right:before { - content: "\e080"; -} -.glyphicon-plus-sign:before { - content: "\e081"; -} -.glyphicon-minus-sign:before { - content: "\e082"; -} -.glyphicon-remove-sign:before { - content: "\e083"; -} -.glyphicon-ok-sign:before { - content: "\e084"; -} -.glyphicon-question-sign:before { - content: "\e085"; -} -.glyphicon-info-sign:before { - content: "\e086"; -} -.glyphicon-screenshot:before { - content: "\e087"; -} -.glyphicon-remove-circle:before { - content: "\e088"; -} -.glyphicon-ok-circle:before { - content: "\e089"; -} -.glyphicon-ban-circle:before { - content: "\e090"; -} -.glyphicon-arrow-left:before { - content: "\e091"; -} -.glyphicon-arrow-right:before { - content: "\e092"; -} -.glyphicon-arrow-up:before { - content: "\e093"; -} -.glyphicon-arrow-down:before { - content: "\e094"; -} -.glyphicon-share-alt:before { - content: "\e095"; -} -.glyphicon-resize-full:before { - content: "\e096"; -} -.glyphicon-resize-small:before { - content: "\e097"; -} -.glyphicon-exclamation-sign:before { - content: "\e101"; -} -.glyphicon-gift:before { - content: "\e102"; -} -.glyphicon-leaf:before { - content: "\e103"; -} -.glyphicon-fire:before { - content: "\e104"; -} -.glyphicon-eye-open:before { - content: "\e105"; -} -.glyphicon-eye-close:before { - content: "\e106"; -} -.glyphicon-warning-sign:before { - content: "\e107"; -} -.glyphicon-plane:before { - content: "\e108"; -} -.glyphicon-calendar:before { - content: "\e109"; -} -.glyphicon-random:before { - content: "\e110"; -} -.glyphicon-comment:before { - content: "\e111"; -} -.glyphicon-magnet:before { - content: "\e112"; -} -.glyphicon-chevron-up:before { - content: "\e113"; -} -.glyphicon-chevron-down:before { - content: "\e114"; -} -.glyphicon-retweet:before { - content: "\e115"; -} -.glyphicon-shopping-cart:before { - content: "\e116"; -} -.glyphicon-folder-close:before { - content: "\e117"; -} -.glyphicon-folder-open:before { - content: "\e118"; -} -.glyphicon-resize-vertical:before { - content: "\e119"; -} -.glyphicon-resize-horizontal:before { - content: "\e120"; -} -.glyphicon-hdd:before { - content: "\e121"; -} -.glyphicon-bullhorn:before { - content: "\e122"; -} -.glyphicon-bell:before { - content: "\e123"; -} -.glyphicon-certificate:before { - content: "\e124"; -} -.glyphicon-thumbs-up:before { - content: "\e125"; -} -.glyphicon-thumbs-down:before { - content: "\e126"; -} -.glyphicon-hand-right:before { - content: "\e127"; -} -.glyphicon-hand-left:before { - content: "\e128"; -} -.glyphicon-hand-up:before { - content: "\e129"; -} -.glyphicon-hand-down:before { - content: "\e130"; -} -.glyphicon-circle-arrow-right:before { - content: "\e131"; -} -.glyphicon-circle-arrow-left:before { - content: "\e132"; -} -.glyphicon-circle-arrow-up:before { - content: "\e133"; -} -.glyphicon-circle-arrow-down:before { - content: "\e134"; -} -.glyphicon-globe:before { - content: "\e135"; -} -.glyphicon-wrench:before { - content: "\e136"; -} -.glyphicon-tasks:before { - content: "\e137"; -} -.glyphicon-filter:before { - content: "\e138"; -} -.glyphicon-briefcase:before { - content: "\e139"; -} -.glyphicon-fullscreen:before { - content: "\e140"; -} -.glyphicon-dashboard:before { - content: "\e141"; -} -.glyphicon-paperclip:before { - content: "\e142"; -} -.glyphicon-heart-empty:before { - content: "\e143"; -} -.glyphicon-link:before { - content: "\e144"; -} -.glyphicon-phone:before { - content: "\e145"; -} -.glyphicon-pushpin:before { - content: "\e146"; -} -.glyphicon-usd:before { - content: "\e148"; -} -.glyphicon-gbp:before { - content: "\e149"; -} -.glyphicon-sort:before { - content: "\e150"; -} -.glyphicon-sort-by-alphabet:before { - content: "\e151"; -} -.glyphicon-sort-by-alphabet-alt:before { - content: "\e152"; -} -.glyphicon-sort-by-order:before { - content: "\e153"; -} -.glyphicon-sort-by-order-alt:before { - content: "\e154"; -} -.glyphicon-sort-by-attributes:before { - content: "\e155"; -} -.glyphicon-sort-by-attributes-alt:before { - content: "\e156"; -} -.glyphicon-unchecked:before { - content: "\e157"; -} -.glyphicon-expand:before { - content: "\e158"; -} -.glyphicon-collapse-down:before { - content: "\e159"; -} -.glyphicon-collapse-up:before { - content: "\e160"; -} -.glyphicon-log-in:before { - content: "\e161"; -} -.glyphicon-flash:before { - content: "\e162"; -} -.glyphicon-log-out:before { - content: "\e163"; -} -.glyphicon-new-window:before { - content: "\e164"; -} -.glyphicon-record:before { - content: "\e165"; -} -.glyphicon-save:before { - content: "\e166"; -} -.glyphicon-open:before { - content: "\e167"; -} -.glyphicon-saved:before { - content: "\e168"; -} -.glyphicon-import:before { - content: "\e169"; -} -.glyphicon-export:before { - content: "\e170"; -} -.glyphicon-send:before { - content: "\e171"; -} -.glyphicon-floppy-disk:before { - content: "\e172"; -} -.glyphicon-floppy-saved:before { - content: "\e173"; -} -.glyphicon-floppy-remove:before { - content: "\e174"; -} -.glyphicon-floppy-save:before { - content: "\e175"; -} -.glyphicon-floppy-open:before { - content: "\e176"; -} -.glyphicon-credit-card:before { - content: "\e177"; -} -.glyphicon-transfer:before { - content: "\e178"; -} -.glyphicon-cutlery:before { - content: "\e179"; -} -.glyphicon-header:before { - content: "\e180"; -} -.glyphicon-compressed:before { - content: "\e181"; -} -.glyphicon-earphone:before { - content: "\e182"; -} -.glyphicon-phone-alt:before { - content: "\e183"; -} -.glyphicon-tower:before { - content: "\e184"; -} -.glyphicon-stats:before { - content: "\e185"; -} -.glyphicon-sd-video:before { - content: "\e186"; -} -.glyphicon-hd-video:before { - content: "\e187"; -} -.glyphicon-subtitles:before { - content: "\e188"; -} -.glyphicon-sound-stereo:before { - content: "\e189"; -} -.glyphicon-sound-dolby:before { - content: "\e190"; -} -.glyphicon-sound-5-1:before { - content: "\e191"; -} -.glyphicon-sound-6-1:before { - content: "\e192"; -} -.glyphicon-sound-7-1:before { - content: "\e193"; -} -.glyphicon-copyright-mark:before { - content: "\e194"; -} -.glyphicon-registration-mark:before { - content: "\e195"; -} -.glyphicon-cloud-download:before { - content: "\e197"; -} -.glyphicon-cloud-upload:before { - content: "\e198"; -} -.glyphicon-tree-conifer:before { - content: "\e199"; -} -.glyphicon-tree-deciduous:before { - content: "\e200"; -} -* { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -*:before, -*:after { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -html { - font-size: 10px; - - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} -body { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - line-height: 1.42857143; - color: #333; - background-color: #fff; -} -input, -button, -select, -textarea { - font-family: inherit; - font-size: inherit; - line-height: inherit; -} -a { - color: #428bca; - text-decoration: none; -} -a:hover, -a:focus { - color: #2a6496; - text-decoration: underline; -} -a:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -figure { - margin: 0; -} -img { - vertical-align: middle; -} -.img-responsive, -.thumbnail > img, -.thumbnail a > img, -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - display: block; - max-width: 100%; - height: auto; -} -.img-rounded { - border-radius: 6px; -} -.img-thumbnail { - display: inline-block; - max-width: 100%; - height: auto; - padding: 4px; - line-height: 1.42857143; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 4px; - -webkit-transition: all .2s ease-in-out; - -o-transition: all .2s ease-in-out; - transition: all .2s ease-in-out; -} -.img-circle { - border-radius: 50%; -} -hr { - margin-top: 20px; - margin-bottom: 20px; - border: 0; - border-top: 1px solid #eee; -} -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; -} -.sr-only-focusable:active, -.sr-only-focusable:focus { - position: static; - width: auto; - height: auto; - margin: 0; - overflow: visible; - clip: auto; -} -h1, -h2, -h3, -h4, -h5, -h6, -.h1, -.h2, -.h3, -.h4, -.h5, -.h6 { - font-family: inherit; - font-weight: 500; - line-height: 1.1; - color: inherit; -} -h1 small, -h2 small, -h3 small, -h4 small, -h5 small, -h6 small, -.h1 small, -.h2 small, -.h3 small, -.h4 small, -.h5 small, -.h6 small, -h1 .small, -h2 .small, -h3 .small, -h4 .small, -h5 .small, -h6 .small, -.h1 .small, -.h2 .small, -.h3 .small, -.h4 .small, -.h5 .small, -.h6 .small { - font-weight: normal; - line-height: 1; - color: #777; -} -h1, -.h1, -h2, -.h2, -h3, -.h3 { - margin-top: 20px; - margin-bottom: 10px; -} -h1 small, -.h1 small, -h2 small, -.h2 small, -h3 small, -.h3 small, -h1 .small, -.h1 .small, -h2 .small, -.h2 .small, -h3 .small, -.h3 .small { - font-size: 65%; -} -h4, -.h4, -h5, -.h5, -h6, -.h6 { - margin-top: 10px; - margin-bottom: 10px; -} -h4 small, -.h4 small, -h5 small, -.h5 small, -h6 small, -.h6 small, -h4 .small, -.h4 .small, -h5 .small, -.h5 .small, -h6 .small, -.h6 .small { - font-size: 75%; -} -h1, -.h1 { - font-size: 36px; -} -h2, -.h2 { - font-size: 30px; -} -h3, -.h3 { - font-size: 24px; -} -h4, -.h4 { - font-size: 18px; -} -h5, -.h5 { - font-size: 14px; -} -h6, -.h6 { - font-size: 12px; -} -p { - margin: 0 0 10px; -} -.lead { - margin-bottom: 20px; - font-size: 16px; - font-weight: 300; - line-height: 1.4; -} -@media (min-width: 768px) { - .lead { - font-size: 21px; - } -} -small, -.small { - font-size: 85%; -} -mark, -.mark { - padding: .2em; - background-color: #fcf8e3; -} -.text-left { - text-align: left; -} -.text-right { - text-align: right; -} -.text-center { - text-align: center; -} -.text-justify { - text-align: justify; -} -.text-nowrap { - white-space: nowrap; -} -.text-lowercase { - text-transform: lowercase; -} -.text-uppercase { - text-transform: uppercase; -} -.text-capitalize { - text-transform: capitalize; -} -.text-muted { - color: #777; -} -.text-primary { - color: #428bca; -} -a.text-primary:hover { - color: #3071a9; -} -.text-success { - color: #3c763d; -} -a.text-success:hover { - color: #2b542c; -} -.text-info { - color: #31708f; -} -a.text-info:hover { - color: #245269; -} -.text-warning { - color: #8a6d3b; -} -a.text-warning:hover { - color: #66512c; -} -.text-danger { - color: #a94442; -} -a.text-danger:hover { - color: #843534; -} -.bg-primary { - color: #fff; - background-color: #428bca; -} -a.bg-primary:hover { - background-color: #3071a9; -} -.bg-success { - background-color: #dff0d8; -} -a.bg-success:hover { - background-color: #c1e2b3; -} -.bg-info { - background-color: #d9edf7; -} -a.bg-info:hover { - background-color: #afd9ee; -} -.bg-warning { - background-color: #fcf8e3; -} -a.bg-warning:hover { - background-color: #f7ecb5; -} -.bg-danger { - background-color: #f2dede; -} -a.bg-danger:hover { - background-color: #e4b9b9; -} -.page-header { - padding-bottom: 9px; - margin: 40px 0 20px; - border-bottom: 1px solid #eee; -} -ul, -ol { - margin-top: 0; - margin-bottom: 10px; -} -ul ul, -ol ul, -ul ol, -ol ol { - margin-bottom: 0; -} -.list-unstyled { - padding-left: 0; - list-style: none; -} -.list-inline { - padding-left: 0; - margin-left: -5px; - list-style: none; -} -.list-inline > li { - display: inline-block; - padding-right: 5px; - padding-left: 5px; -} -dl { - margin-top: 0; - margin-bottom: 20px; -} -dt, -dd { - line-height: 1.42857143; -} -dt { - font-weight: bold; -} -dd { - margin-left: 0; -} -@media (min-width: 768px) { - .dl-horizontal dt { - float: left; - width: 160px; - overflow: hidden; - clear: left; - text-align: right; - text-overflow: ellipsis; - white-space: nowrap; - } - .dl-horizontal dd { - margin-left: 180px; - } -} -abbr[title], -abbr[data-original-title] { - cursor: help; - border-bottom: 1px dotted #777; -} -.initialism { - font-size: 90%; - text-transform: uppercase; -} -blockquote { - padding: 10px 20px; - margin: 0 0 20px; - font-size: 17.5px; - border-left: 5px solid #eee; -} -blockquote p:last-child, -blockquote ul:last-child, -blockquote ol:last-child { - margin-bottom: 0; -} -blockquote footer, -blockquote small, -blockquote .small { - display: block; - font-size: 80%; - line-height: 1.42857143; - color: #777; -} -blockquote footer:before, -blockquote small:before, -blockquote .small:before { - content: '\2014 \00A0'; -} -.blockquote-reverse, -blockquote.pull-right { - padding-right: 15px; - padding-left: 0; - text-align: right; - border-right: 5px solid #eee; - border-left: 0; -} -.blockquote-reverse footer:before, -blockquote.pull-right footer:before, -.blockquote-reverse small:before, -blockquote.pull-right small:before, -.blockquote-reverse .small:before, -blockquote.pull-right .small:before { - content: ''; -} -.blockquote-reverse footer:after, -blockquote.pull-right footer:after, -.blockquote-reverse small:after, -blockquote.pull-right small:after, -.blockquote-reverse .small:after, -blockquote.pull-right .small:after { - content: '\00A0 \2014'; -} -address { - margin-bottom: 20px; - font-style: normal; - line-height: 1.42857143; -} -code, -kbd, -pre, -samp { - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; -} -code { - padding: 2px 4px; - font-size: 90%; - color: #c7254e; - background-color: #f9f2f4; - border-radius: 4px; -} -kbd { - padding: 2px 4px; - font-size: 90%; - color: #fff; - background-color: #333; - border-radius: 3px; - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); -} -kbd kbd { - padding: 0; - font-size: 100%; - font-weight: bold; - -webkit-box-shadow: none; - box-shadow: none; -} -pre { - display: block; - padding: 9.5px; - margin: 0 0 10px; - font-size: 13px; - line-height: 1.42857143; - color: #333; - word-break: break-all; - word-wrap: break-word; - background-color: #f5f5f5; - border: 1px solid #ccc; - border-radius: 4px; -} -pre code { - padding: 0; - font-size: inherit; - color: inherit; - white-space: pre-wrap; - background-color: transparent; - border-radius: 0; -} -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; -} -.container { - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; -} -@media (min-width: 768px) { - .container { - width: 750px; - } -} -@media (min-width: 992px) { - .container { - width: 970px; - } -} -@media (min-width: 1200px) { - .container { - width: 1170px; - } -} -.container-fluid { - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; -} -.row { - margin-right: -15px; - margin-left: -15px; -} -.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { - position: relative; - min-height: 1px; - padding-right: 15px; - padding-left: 15px; -} -.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { - float: left; -} -.col-xs-12 { - width: 100%; -} -.col-xs-11 { - width: 91.66666667%; -} -.col-xs-10 { - width: 83.33333333%; -} -.col-xs-9 { - width: 75%; -} -.col-xs-8 { - width: 66.66666667%; -} -.col-xs-7 { - width: 58.33333333%; -} -.col-xs-6 { - width: 50%; -} -.col-xs-5 { - width: 41.66666667%; -} -.col-xs-4 { - width: 33.33333333%; -} -.col-xs-3 { - width: 25%; -} -.col-xs-2 { - width: 16.66666667%; -} -.col-xs-1 { - width: 8.33333333%; -} -.col-xs-pull-12 { - right: 100%; -} -.col-xs-pull-11 { - right: 91.66666667%; -} -.col-xs-pull-10 { - right: 83.33333333%; -} -.col-xs-pull-9 { - right: 75%; -} -.col-xs-pull-8 { - right: 66.66666667%; -} -.col-xs-pull-7 { - right: 58.33333333%; -} -.col-xs-pull-6 { - right: 50%; -} -.col-xs-pull-5 { - right: 41.66666667%; -} -.col-xs-pull-4 { - right: 33.33333333%; -} -.col-xs-pull-3 { - right: 25%; -} -.col-xs-pull-2 { - right: 16.66666667%; -} -.col-xs-pull-1 { - right: 8.33333333%; -} -.col-xs-pull-0 { - right: auto; -} -.col-xs-push-12 { - left: 100%; -} -.col-xs-push-11 { - left: 91.66666667%; -} -.col-xs-push-10 { - left: 83.33333333%; -} -.col-xs-push-9 { - left: 75%; -} -.col-xs-push-8 { - left: 66.66666667%; -} -.col-xs-push-7 { - left: 58.33333333%; -} -.col-xs-push-6 { - left: 50%; -} -.col-xs-push-5 { - left: 41.66666667%; -} -.col-xs-push-4 { - left: 33.33333333%; -} -.col-xs-push-3 { - left: 25%; -} -.col-xs-push-2 { - left: 16.66666667%; -} -.col-xs-push-1 { - left: 8.33333333%; -} -.col-xs-push-0 { - left: auto; -} -.col-xs-offset-12 { - margin-left: 100%; -} -.col-xs-offset-11 { - margin-left: 91.66666667%; -} -.col-xs-offset-10 { - margin-left: 83.33333333%; -} -.col-xs-offset-9 { - margin-left: 75%; -} -.col-xs-offset-8 { - margin-left: 66.66666667%; -} -.col-xs-offset-7 { - margin-left: 58.33333333%; -} -.col-xs-offset-6 { - margin-left: 50%; -} -.col-xs-offset-5 { - margin-left: 41.66666667%; -} -.col-xs-offset-4 { - margin-left: 33.33333333%; -} -.col-xs-offset-3 { - margin-left: 25%; -} -.col-xs-offset-2 { - margin-left: 16.66666667%; -} -.col-xs-offset-1 { - margin-left: 8.33333333%; -} -.col-xs-offset-0 { - margin-left: 0; -} -@media (min-width: 768px) { - .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { - float: left; - } - .col-sm-12 { - width: 100%; - } - .col-sm-11 { - width: 91.66666667%; - } - .col-sm-10 { - width: 83.33333333%; - } - .col-sm-9 { - width: 75%; - } - .col-sm-8 { - width: 66.66666667%; - } - .col-sm-7 { - width: 58.33333333%; - } - .col-sm-6 { - width: 50%; - } - .col-sm-5 { - width: 41.66666667%; - } - .col-sm-4 { - width: 33.33333333%; - } - .col-sm-3 { - width: 25%; - } - .col-sm-2 { - width: 16.66666667%; - } - .col-sm-1 { - width: 8.33333333%; - } - .col-sm-pull-12 { - right: 100%; - } - .col-sm-pull-11 { - right: 91.66666667%; - } - .col-sm-pull-10 { - right: 83.33333333%; - } - .col-sm-pull-9 { - right: 75%; - } - .col-sm-pull-8 { - right: 66.66666667%; - } - .col-sm-pull-7 { - right: 58.33333333%; - } - .col-sm-pull-6 { - right: 50%; - } - .col-sm-pull-5 { - right: 41.66666667%; - } - .col-sm-pull-4 { - right: 33.33333333%; - } - .col-sm-pull-3 { - right: 25%; - } - .col-sm-pull-2 { - right: 16.66666667%; - } - .col-sm-pull-1 { - right: 8.33333333%; - } - .col-sm-pull-0 { - right: auto; - } - .col-sm-push-12 { - left: 100%; - } - .col-sm-push-11 { - left: 91.66666667%; - } - .col-sm-push-10 { - left: 83.33333333%; - } - .col-sm-push-9 { - left: 75%; - } - .col-sm-push-8 { - left: 66.66666667%; - } - .col-sm-push-7 { - left: 58.33333333%; - } - .col-sm-push-6 { - left: 50%; - } - .col-sm-push-5 { - left: 41.66666667%; - } - .col-sm-push-4 { - left: 33.33333333%; - } - .col-sm-push-3 { - left: 25%; - } - .col-sm-push-2 { - left: 16.66666667%; - } - .col-sm-push-1 { - left: 8.33333333%; - } - .col-sm-push-0 { - left: auto; - } - .col-sm-offset-12 { - margin-left: 100%; - } - .col-sm-offset-11 { - margin-left: 91.66666667%; - } - .col-sm-offset-10 { - margin-left: 83.33333333%; - } - .col-sm-offset-9 { - margin-left: 75%; - } - .col-sm-offset-8 { - margin-left: 66.66666667%; - } - .col-sm-offset-7 { - margin-left: 58.33333333%; - } - .col-sm-offset-6 { - margin-left: 50%; - } - .col-sm-offset-5 { - margin-left: 41.66666667%; - } - .col-sm-offset-4 { - margin-left: 33.33333333%; - } - .col-sm-offset-3 { - margin-left: 25%; - } - .col-sm-offset-2 { - margin-left: 16.66666667%; - } - .col-sm-offset-1 { - margin-left: 8.33333333%; - } - .col-sm-offset-0 { - margin-left: 0; - } -} -@media (min-width: 992px) { - .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { - float: left; - } - .col-md-12 { - width: 100%; - } - .col-md-11 { - width: 91.66666667%; - } - .col-md-10 { - width: 83.33333333%; - } - .col-md-9 { - width: 75%; - } - .col-md-8 { - width: 66.66666667%; - } - .col-md-7 { - width: 58.33333333%; - } - .col-md-6 { - width: 50%; - } - .col-md-5 { - width: 41.66666667%; - } - .col-md-4 { - width: 33.33333333%; - } - .col-md-3 { - width: 25%; - } - .col-md-2 { - width: 16.66666667%; - } - .col-md-1 { - width: 8.33333333%; - } - .col-md-pull-12 { - right: 100%; - } - .col-md-pull-11 { - right: 91.66666667%; - } - .col-md-pull-10 { - right: 83.33333333%; - } - .col-md-pull-9 { - right: 75%; - } - .col-md-pull-8 { - right: 66.66666667%; - } - .col-md-pull-7 { - right: 58.33333333%; - } - .col-md-pull-6 { - right: 50%; - } - .col-md-pull-5 { - right: 41.66666667%; - } - .col-md-pull-4 { - right: 33.33333333%; - } - .col-md-pull-3 { - right: 25%; - } - .col-md-pull-2 { - right: 16.66666667%; - } - .col-md-pull-1 { - right: 8.33333333%; - } - .col-md-pull-0 { - right: auto; - } - .col-md-push-12 { - left: 100%; - } - .col-md-push-11 { - left: 91.66666667%; - } - .col-md-push-10 { - left: 83.33333333%; - } - .col-md-push-9 { - left: 75%; - } - .col-md-push-8 { - left: 66.66666667%; - } - .col-md-push-7 { - left: 58.33333333%; - } - .col-md-push-6 { - left: 50%; - } - .col-md-push-5 { - left: 41.66666667%; - } - .col-md-push-4 { - left: 33.33333333%; - } - .col-md-push-3 { - left: 25%; - } - .col-md-push-2 { - left: 16.66666667%; - } - .col-md-push-1 { - left: 8.33333333%; - } - .col-md-push-0 { - left: auto; - } - .col-md-offset-12 { - margin-left: 100%; - } - .col-md-offset-11 { - margin-left: 91.66666667%; - } - .col-md-offset-10 { - margin-left: 83.33333333%; - } - .col-md-offset-9 { - margin-left: 75%; - } - .col-md-offset-8 { - margin-left: 66.66666667%; - } - .col-md-offset-7 { - margin-left: 58.33333333%; - } - .col-md-offset-6 { - margin-left: 50%; - } - .col-md-offset-5 { - margin-left: 41.66666667%; - } - .col-md-offset-4 { - margin-left: 33.33333333%; - } - .col-md-offset-3 { - margin-left: 25%; - } - .col-md-offset-2 { - margin-left: 16.66666667%; - } - .col-md-offset-1 { - margin-left: 8.33333333%; - } - .col-md-offset-0 { - margin-left: 0; - } -} -@media (min-width: 1200px) { - .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { - float: left; - } - .col-lg-12 { - width: 100%; - } - .col-lg-11 { - width: 91.66666667%; - } - .col-lg-10 { - width: 83.33333333%; - } - .col-lg-9 { - width: 75%; - } - .col-lg-8 { - width: 66.66666667%; - } - .col-lg-7 { - width: 58.33333333%; - } - .col-lg-6 { - width: 50%; - } - .col-lg-5 { - width: 41.66666667%; - } - .col-lg-4 { - width: 33.33333333%; - } - .col-lg-3 { - width: 25%; - } - .col-lg-2 { - width: 16.66666667%; - } - .col-lg-1 { - width: 8.33333333%; - } - .col-lg-pull-12 { - right: 100%; - } - .col-lg-pull-11 { - right: 91.66666667%; - } - .col-lg-pull-10 { - right: 83.33333333%; - } - .col-lg-pull-9 { - right: 75%; - } - .col-lg-pull-8 { - right: 66.66666667%; - } - .col-lg-pull-7 { - right: 58.33333333%; - } - .col-lg-pull-6 { - right: 50%; - } - .col-lg-pull-5 { - right: 41.66666667%; - } - .col-lg-pull-4 { - right: 33.33333333%; - } - .col-lg-pull-3 { - right: 25%; - } - .col-lg-pull-2 { - right: 16.66666667%; - } - .col-lg-pull-1 { - right: 8.33333333%; - } - .col-lg-pull-0 { - right: auto; - } - .col-lg-push-12 { - left: 100%; - } - .col-lg-push-11 { - left: 91.66666667%; - } - .col-lg-push-10 { - left: 83.33333333%; - } - .col-lg-push-9 { - left: 75%; - } - .col-lg-push-8 { - left: 66.66666667%; - } - .col-lg-push-7 { - left: 58.33333333%; - } - .col-lg-push-6 { - left: 50%; - } - .col-lg-push-5 { - left: 41.66666667%; - } - .col-lg-push-4 { - left: 33.33333333%; - } - .col-lg-push-3 { - left: 25%; - } - .col-lg-push-2 { - left: 16.66666667%; - } - .col-lg-push-1 { - left: 8.33333333%; - } - .col-lg-push-0 { - left: auto; - } - .col-lg-offset-12 { - margin-left: 100%; - } - .col-lg-offset-11 { - margin-left: 91.66666667%; - } - .col-lg-offset-10 { - margin-left: 83.33333333%; - } - .col-lg-offset-9 { - margin-left: 75%; - } - .col-lg-offset-8 { - margin-left: 66.66666667%; - } - .col-lg-offset-7 { - margin-left: 58.33333333%; - } - .col-lg-offset-6 { - margin-left: 50%; - } - .col-lg-offset-5 { - margin-left: 41.66666667%; - } - .col-lg-offset-4 { - margin-left: 33.33333333%; - } - .col-lg-offset-3 { - margin-left: 25%; - } - .col-lg-offset-2 { - margin-left: 16.66666667%; - } - .col-lg-offset-1 { - margin-left: 8.33333333%; - } - .col-lg-offset-0 { - margin-left: 0; - } -} -table { - background-color: transparent; -} -caption { - padding-top: 8px; - padding-bottom: 8px; - color: #777; - text-align: left; -} -th { - text-align: left; -} -.table { - width: 100%; - max-width: 100%; - margin-bottom: 20px; -} -.table > thead > tr > th, -.table > tbody > tr > th, -.table > tfoot > tr > th, -.table > thead > tr > td, -.table > tbody > tr > td, -.table > tfoot > tr > td { - padding: 8px; - line-height: 1.42857143; - vertical-align: top; - border-top: 1px solid #ddd; -} -.table > thead > tr > th { - vertical-align: bottom; - border-bottom: 2px solid #ddd; -} -.table > caption + thead > tr:first-child > th, -.table > colgroup + thead > tr:first-child > th, -.table > thead:first-child > tr:first-child > th, -.table > caption + thead > tr:first-child > td, -.table > colgroup + thead > tr:first-child > td, -.table > thead:first-child > tr:first-child > td { - border-top: 0; -} -.table > tbody + tbody { - border-top: 2px solid #ddd; -} -.table .table { - background-color: #fff; -} -.table-condensed > thead > tr > th, -.table-condensed > tbody > tr > th, -.table-condensed > tfoot > tr > th, -.table-condensed > thead > tr > td, -.table-condensed > tbody > tr > td, -.table-condensed > tfoot > tr > td { - padding: 5px; -} -.table-bordered { - border: 1px solid #ddd; -} -.table-bordered > thead > tr > th, -.table-bordered > tbody > tr > th, -.table-bordered > tfoot > tr > th, -.table-bordered > thead > tr > td, -.table-bordered > tbody > tr > td, -.table-bordered > tfoot > tr > td { - border: 1px solid #ddd; -} -.table-bordered > thead > tr > th, -.table-bordered > thead > tr > td { - border-bottom-width: 2px; -} -.table-striped > tbody > tr:nth-child(odd) { - background-color: #f9f9f9; -} -.table-hover > tbody > tr:hover { - background-color: #f5f5f5; -} -table col[class*="col-"] { - position: static; - display: table-column; - float: none; -} -table td[class*="col-"], -table th[class*="col-"] { - position: static; - display: table-cell; - float: none; -} -.table > thead > tr > td.active, -.table > tbody > tr > td.active, -.table > tfoot > tr > td.active, -.table > thead > tr > th.active, -.table > tbody > tr > th.active, -.table > tfoot > tr > th.active, -.table > thead > tr.active > td, -.table > tbody > tr.active > td, -.table > tfoot > tr.active > td, -.table > thead > tr.active > th, -.table > tbody > tr.active > th, -.table > tfoot > tr.active > th { - background-color: #f5f5f5; -} -.table-hover > tbody > tr > td.active:hover, -.table-hover > tbody > tr > th.active:hover, -.table-hover > tbody > tr.active:hover > td, -.table-hover > tbody > tr:hover > .active, -.table-hover > tbody > tr.active:hover > th { - background-color: #e8e8e8; -} -.table > thead > tr > td.success, -.table > tbody > tr > td.success, -.table > tfoot > tr > td.success, -.table > thead > tr > th.success, -.table > tbody > tr > th.success, -.table > tfoot > tr > th.success, -.table > thead > tr.success > td, -.table > tbody > tr.success > td, -.table > tfoot > tr.success > td, -.table > thead > tr.success > th, -.table > tbody > tr.success > th, -.table > tfoot > tr.success > th { - background-color: #dff0d8; -} -.table-hover > tbody > tr > td.success:hover, -.table-hover > tbody > tr > th.success:hover, -.table-hover > tbody > tr.success:hover > td, -.table-hover > tbody > tr:hover > .success, -.table-hover > tbody > tr.success:hover > th { - background-color: #d0e9c6; -} -.table > thead > tr > td.info, -.table > tbody > tr > td.info, -.table > tfoot > tr > td.info, -.table > thead > tr > th.info, -.table > tbody > tr > th.info, -.table > tfoot > tr > th.info, -.table > thead > tr.info > td, -.table > tbody > tr.info > td, -.table > tfoot > tr.info > td, -.table > thead > tr.info > th, -.table > tbody > tr.info > th, -.table > tfoot > tr.info > th { - background-color: #d9edf7; -} -.table-hover > tbody > tr > td.info:hover, -.table-hover > tbody > tr > th.info:hover, -.table-hover > tbody > tr.info:hover > td, -.table-hover > tbody > tr:hover > .info, -.table-hover > tbody > tr.info:hover > th { - background-color: #c4e3f3; -} -.table > thead > tr > td.warning, -.table > tbody > tr > td.warning, -.table > tfoot > tr > td.warning, -.table > thead > tr > th.warning, -.table > tbody > tr > th.warning, -.table > tfoot > tr > th.warning, -.table > thead > tr.warning > td, -.table > tbody > tr.warning > td, -.table > tfoot > tr.warning > td, -.table > thead > tr.warning > th, -.table > tbody > tr.warning > th, -.table > tfoot > tr.warning > th { - background-color: #fcf8e3; -} -.table-hover > tbody > tr > td.warning:hover, -.table-hover > tbody > tr > th.warning:hover, -.table-hover > tbody > tr.warning:hover > td, -.table-hover > tbody > tr:hover > .warning, -.table-hover > tbody > tr.warning:hover > th { - background-color: #faf2cc; -} -.table > thead > tr > td.danger, -.table > tbody > tr > td.danger, -.table > tfoot > tr > td.danger, -.table > thead > tr > th.danger, -.table > tbody > tr > th.danger, -.table > tfoot > tr > th.danger, -.table > thead > tr.danger > td, -.table > tbody > tr.danger > td, -.table > tfoot > tr.danger > td, -.table > thead > tr.danger > th, -.table > tbody > tr.danger > th, -.table > tfoot > tr.danger > th { - background-color: #f2dede; -} -.table-hover > tbody > tr > td.danger:hover, -.table-hover > tbody > tr > th.danger:hover, -.table-hover > tbody > tr.danger:hover > td, -.table-hover > tbody > tr:hover > .danger, -.table-hover > tbody > tr.danger:hover > th { - background-color: #ebcccc; -} -.table-responsive { - min-height: .01%; - overflow-x: auto; -} -@media screen and (max-width: 767px) { - .table-responsive { - width: 100%; - margin-bottom: 15px; - overflow-y: hidden; - -ms-overflow-style: -ms-autohiding-scrollbar; - border: 1px solid #ddd; - } - .table-responsive > .table { - margin-bottom: 0; - } - .table-responsive > .table > thead > tr > th, - .table-responsive > .table > tbody > tr > th, - .table-responsive > .table > tfoot > tr > th, - .table-responsive > .table > thead > tr > td, - .table-responsive > .table > tbody > tr > td, - .table-responsive > .table > tfoot > tr > td { - white-space: nowrap; - } - .table-responsive > .table-bordered { - border: 0; - } - .table-responsive > .table-bordered > thead > tr > th:first-child, - .table-responsive > .table-bordered > tbody > tr > th:first-child, - .table-responsive > .table-bordered > tfoot > tr > th:first-child, - .table-responsive > .table-bordered > thead > tr > td:first-child, - .table-responsive > .table-bordered > tbody > tr > td:first-child, - .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; - } - .table-responsive > .table-bordered > thead > tr > th:last-child, - .table-responsive > .table-bordered > tbody > tr > th:last-child, - .table-responsive > .table-bordered > tfoot > tr > th:last-child, - .table-responsive > .table-bordered > thead > tr > td:last-child, - .table-responsive > .table-bordered > tbody > tr > td:last-child, - .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; - } - .table-responsive > .table-bordered > tbody > tr:last-child > th, - .table-responsive > .table-bordered > tfoot > tr:last-child > th, - .table-responsive > .table-bordered > tbody > tr:last-child > td, - .table-responsive > .table-bordered > tfoot > tr:last-child > td { - border-bottom: 0; - } -} -fieldset { - min-width: 0; - padding: 0; - margin: 0; - border: 0; -} -legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: 20px; - font-size: 21px; - line-height: inherit; - color: #333; - border: 0; - border-bottom: 1px solid #e5e5e5; -} -label { - display: inline-block; - max-width: 100%; - margin-bottom: 5px; - font-weight: bold; -} -input[type="search"] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -input[type="radio"], -input[type="checkbox"] { - margin: 4px 0 0; - margin-top: 1px \9; - line-height: normal; -} -input[type="file"] { - display: block; -} -input[type="range"] { - display: block; - width: 100%; -} -select[multiple], -select[size] { - height: auto; -} -input[type="file"]:focus, -input[type="radio"]:focus, -input[type="checkbox"]:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -output { - display: block; - padding-top: 7px; - font-size: 14px; - line-height: 1.42857143; - color: #555; -} -.form-control { - display: block; - width: 100%; - height: 34px; - padding: 6px 12px; - font-size: 14px; - line-height: 1.42857143; - color: #555; - background-color: #fff; - background-image: none; - border: 1px solid #ccc; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; - -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; -} -.form-control:focus { - border-color: #66afe9; - outline: 0; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); -} -.form-control::-moz-placeholder { - color: #999; - opacity: 1; -} -.form-control:-ms-input-placeholder { - color: #999; -} -.form-control::-webkit-input-placeholder { - color: #999; -} -.form-control[disabled], -.form-control[readonly], -fieldset[disabled] .form-control { - cursor: not-allowed; - background-color: #eee; - opacity: 1; -} -textarea.form-control { - height: auto; -} -input[type="search"] { - -webkit-appearance: none; -} -input[type="date"], -input[type="time"], -input[type="datetime-local"], -input[type="month"] { - line-height: 34px; - line-height: 1.42857143 \0; -} -input[type="date"].input-sm, -input[type="time"].input-sm, -input[type="datetime-local"].input-sm, -input[type="month"].input-sm { - line-height: 30px; - line-height: 1.5 \0; -} -input[type="date"].input-lg, -input[type="time"].input-lg, -input[type="datetime-local"].input-lg, -input[type="month"].input-lg { - line-height: 46px; - line-height: 1.33 \0; -} -_:-ms-fullscreen, -:root input[type="date"], -_:-ms-fullscreen, -:root input[type="time"], -_:-ms-fullscreen, -:root input[type="datetime-local"], -_:-ms-fullscreen, -:root input[type="month"] { - line-height: 1.42857143; -} -_:-ms-fullscreen.input-sm, -:root input[type="date"].input-sm, -_:-ms-fullscreen.input-sm, -:root input[type="time"].input-sm, -_:-ms-fullscreen.input-sm, -:root input[type="datetime-local"].input-sm, -_:-ms-fullscreen.input-sm, -:root input[type="month"].input-sm { - line-height: 1.5; -} -_:-ms-fullscreen.input-lg, -:root input[type="date"].input-lg, -_:-ms-fullscreen.input-lg, -:root input[type="time"].input-lg, -_:-ms-fullscreen.input-lg, -:root input[type="datetime-local"].input-lg, -_:-ms-fullscreen.input-lg, -:root input[type="month"].input-lg { - line-height: 1.33; -} -.form-group { - margin-bottom: 15px; -} -.radio, -.checkbox { - position: relative; - display: block; - margin-top: 10px; - margin-bottom: 10px; -} -.radio label, -.checkbox label { - min-height: 20px; - padding-left: 20px; - margin-bottom: 0; - font-weight: normal; - cursor: pointer; -} -.radio input[type="radio"], -.radio-inline input[type="radio"], -.checkbox input[type="checkbox"], -.checkbox-inline input[type="checkbox"] { - position: absolute; - margin-top: 4px \9; - margin-left: -20px; -} -.radio + .radio, -.checkbox + .checkbox { - margin-top: -5px; -} -.radio-inline, -.checkbox-inline { - display: inline-block; - padding-left: 20px; - margin-bottom: 0; - font-weight: normal; - vertical-align: middle; - cursor: pointer; -} -.radio-inline + .radio-inline, -.checkbox-inline + .checkbox-inline { - margin-top: 0; - margin-left: 10px; -} -input[type="radio"][disabled], -input[type="checkbox"][disabled], -input[type="radio"].disabled, -input[type="checkbox"].disabled, -fieldset[disabled] input[type="radio"], -fieldset[disabled] input[type="checkbox"] { - cursor: not-allowed; -} -.radio-inline.disabled, -.checkbox-inline.disabled, -fieldset[disabled] .radio-inline, -fieldset[disabled] .checkbox-inline { - cursor: not-allowed; -} -.radio.disabled label, -.checkbox.disabled label, -fieldset[disabled] .radio label, -fieldset[disabled] .checkbox label { - cursor: not-allowed; -} -.form-control-static { - padding-top: 7px; - padding-bottom: 7px; - margin-bottom: 0; -} -.form-control-static.input-lg, -.form-control-static.input-sm { - padding-right: 0; - padding-left: 0; -} -.input-sm, -.form-group-sm .form-control { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -select.input-sm, -select.form-group-sm .form-control { - height: 30px; - line-height: 30px; -} -textarea.input-sm, -textarea.form-group-sm .form-control, -select[multiple].input-sm, -select[multiple].form-group-sm .form-control { - height: auto; -} -.input-lg, -.form-group-lg .form-control { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.33; - border-radius: 6px; -} -select.input-lg, -select.form-group-lg .form-control { - height: 46px; - line-height: 46px; -} -textarea.input-lg, -textarea.form-group-lg .form-control, -select[multiple].input-lg, -select[multiple].form-group-lg .form-control { - height: auto; -} -.has-feedback { - position: relative; -} -.has-feedback .form-control { - padding-right: 42.5px; -} -.form-control-feedback { - position: absolute; - top: 0; - right: 0; - z-index: 2; - display: block; - width: 34px; - height: 34px; - line-height: 34px; - text-align: center; - pointer-events: none; -} -.input-lg + .form-control-feedback { - width: 46px; - height: 46px; - line-height: 46px; -} -.input-sm + .form-control-feedback { - width: 30px; - height: 30px; - line-height: 30px; -} -.has-success .help-block, -.has-success .control-label, -.has-success .radio, -.has-success .checkbox, -.has-success .radio-inline, -.has-success .checkbox-inline, -.has-success.radio label, -.has-success.checkbox label, -.has-success.radio-inline label, -.has-success.checkbox-inline label { - color: #3c763d; -} -.has-success .form-control { - border-color: #3c763d; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -} -.has-success .form-control:focus { - border-color: #2b542c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; -} -.has-success .input-group-addon { - color: #3c763d; - background-color: #dff0d8; - border-color: #3c763d; -} -.has-success .form-control-feedback { - color: #3c763d; -} -.has-warning .help-block, -.has-warning .control-label, -.has-warning .radio, -.has-warning .checkbox, -.has-warning .radio-inline, -.has-warning .checkbox-inline, -.has-warning.radio label, -.has-warning.checkbox label, -.has-warning.radio-inline label, -.has-warning.checkbox-inline label { - color: #8a6d3b; -} -.has-warning .form-control { - border-color: #8a6d3b; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -} -.has-warning .form-control:focus { - border-color: #66512c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; -} -.has-warning .input-group-addon { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #8a6d3b; -} -.has-warning .form-control-feedback { - color: #8a6d3b; -} -.has-error .help-block, -.has-error .control-label, -.has-error .radio, -.has-error .checkbox, -.has-error .radio-inline, -.has-error .checkbox-inline, -.has-error.radio label, -.has-error.checkbox label, -.has-error.radio-inline label, -.has-error.checkbox-inline label { - color: #a94442; -} -.has-error .form-control { - border-color: #a94442; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -} -.has-error .form-control:focus { - border-color: #843534; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; -} -.has-error .input-group-addon { - color: #a94442; - background-color: #f2dede; - border-color: #a94442; -} -.has-error .form-control-feedback { - color: #a94442; -} -.has-feedback label ~ .form-control-feedback { - top: 25px; -} -.has-feedback label.sr-only ~ .form-control-feedback { - top: 0; -} -.help-block { - display: block; - margin-top: 5px; - margin-bottom: 10px; - color: #737373; -} -@media (min-width: 768px) { - .form-inline .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .form-inline .form-control-static { - display: inline-block; - } - .form-inline .input-group { - display: inline-table; - vertical-align: middle; - } - .form-inline .input-group .input-group-addon, - .form-inline .input-group .input-group-btn, - .form-inline .input-group .form-control { - width: auto; - } - .form-inline .input-group > .form-control { - width: 100%; - } - .form-inline .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio, - .form-inline .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio label, - .form-inline .checkbox label { - padding-left: 0; - } - .form-inline .radio input[type="radio"], - .form-inline .checkbox input[type="checkbox"] { - position: relative; - margin-left: 0; - } - .form-inline .has-feedback .form-control-feedback { - top: 0; - } -} -.form-horizontal .radio, -.form-horizontal .checkbox, -.form-horizontal .radio-inline, -.form-horizontal .checkbox-inline { - padding-top: 7px; - margin-top: 0; - margin-bottom: 0; -} -.form-horizontal .radio, -.form-horizontal .checkbox { - min-height: 27px; -} -.form-horizontal .form-group { - margin-right: -15px; - margin-left: -15px; -} -@media (min-width: 768px) { - .form-horizontal .control-label { - padding-top: 7px; - margin-bottom: 0; - text-align: right; - } -} -.form-horizontal .has-feedback .form-control-feedback { - right: 15px; -} -@media (min-width: 768px) { - .form-horizontal .form-group-lg .control-label { - padding-top: 14.3px; - } -} -@media (min-width: 768px) { - .form-horizontal .form-group-sm .control-label { - padding-top: 6px; - } -} -.btn { - display: inline-block; - padding: 6px 12px; - margin-bottom: 0; - font-size: 14px; - font-weight: normal; - line-height: 1.42857143; - text-align: center; - white-space: nowrap; - vertical-align: middle; - -ms-touch-action: manipulation; - touch-action: manipulation; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-image: none; - border: 1px solid transparent; - border-radius: 4px; -} -.btn:focus, -.btn:active:focus, -.btn.active:focus, -.btn.focus, -.btn:active.focus, -.btn.active.focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.btn:hover, -.btn:focus, -.btn.focus { - color: #333; - text-decoration: none; -} -.btn:active, -.btn.active { - background-image: none; - outline: 0; - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); -} -.btn.disabled, -.btn[disabled], -fieldset[disabled] .btn { - pointer-events: none; - cursor: not-allowed; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - box-shadow: none; - opacity: .65; -} -.btn-default { - color: #333; - background-color: #fff; - border-color: #ccc; -} -.btn-default:hover, -.btn-default:focus, -.btn-default.focus, -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - color: #333; - background-color: #e6e6e6; - border-color: #adadad; -} -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - background-image: none; -} -.btn-default.disabled, -.btn-default[disabled], -fieldset[disabled] .btn-default, -.btn-default.disabled:hover, -.btn-default[disabled]:hover, -fieldset[disabled] .btn-default:hover, -.btn-default.disabled:focus, -.btn-default[disabled]:focus, -fieldset[disabled] .btn-default:focus, -.btn-default.disabled.focus, -.btn-default[disabled].focus, -fieldset[disabled] .btn-default.focus, -.btn-default.disabled:active, -.btn-default[disabled]:active, -fieldset[disabled] .btn-default:active, -.btn-default.disabled.active, -.btn-default[disabled].active, -fieldset[disabled] .btn-default.active { - background-color: #fff; - border-color: #ccc; -} -.btn-default .badge { - color: #fff; - background-color: #333; -} -.btn-primary { - color: #fff; - background-color: #428bca; - border-color: #357ebd; -} -.btn-primary:hover, -.btn-primary:focus, -.btn-primary.focus, -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - color: #fff; - background-color: #3071a9; - border-color: #285e8e; -} -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - background-image: none; -} -.btn-primary.disabled, -.btn-primary[disabled], -fieldset[disabled] .btn-primary, -.btn-primary.disabled:hover, -.btn-primary[disabled]:hover, -fieldset[disabled] .btn-primary:hover, -.btn-primary.disabled:focus, -.btn-primary[disabled]:focus, -fieldset[disabled] .btn-primary:focus, -.btn-primary.disabled.focus, -.btn-primary[disabled].focus, -fieldset[disabled] .btn-primary.focus, -.btn-primary.disabled:active, -.btn-primary[disabled]:active, -fieldset[disabled] .btn-primary:active, -.btn-primary.disabled.active, -.btn-primary[disabled].active, -fieldset[disabled] .btn-primary.active { - background-color: #428bca; - border-color: #357ebd; -} -.btn-primary .badge { - color: #428bca; - background-color: #fff; -} -.btn-success { - color: #fff; - background-color: #5cb85c; - border-color: #4cae4c; -} -.btn-success:hover, -.btn-success:focus, -.btn-success.focus, -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - color: #fff; - background-color: #449d44; - border-color: #398439; -} -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - background-image: none; -} -.btn-success.disabled, -.btn-success[disabled], -fieldset[disabled] .btn-success, -.btn-success.disabled:hover, -.btn-success[disabled]:hover, -fieldset[disabled] .btn-success:hover, -.btn-success.disabled:focus, -.btn-success[disabled]:focus, -fieldset[disabled] .btn-success:focus, -.btn-success.disabled.focus, -.btn-success[disabled].focus, -fieldset[disabled] .btn-success.focus, -.btn-success.disabled:active, -.btn-success[disabled]:active, -fieldset[disabled] .btn-success:active, -.btn-success.disabled.active, -.btn-success[disabled].active, -fieldset[disabled] .btn-success.active { - background-color: #5cb85c; - border-color: #4cae4c; -} -.btn-success .badge { - color: #5cb85c; - background-color: #fff; -} -.btn-info { - color: #fff; - background-color: #5bc0de; - border-color: #46b8da; -} -.btn-info:hover, -.btn-info:focus, -.btn-info.focus, -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - color: #fff; - background-color: #31b0d5; - border-color: #269abc; -} -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - background-image: none; -} -.btn-info.disabled, -.btn-info[disabled], -fieldset[disabled] .btn-info, -.btn-info.disabled:hover, -.btn-info[disabled]:hover, -fieldset[disabled] .btn-info:hover, -.btn-info.disabled:focus, -.btn-info[disabled]:focus, -fieldset[disabled] .btn-info:focus, -.btn-info.disabled.focus, -.btn-info[disabled].focus, -fieldset[disabled] .btn-info.focus, -.btn-info.disabled:active, -.btn-info[disabled]:active, -fieldset[disabled] .btn-info:active, -.btn-info.disabled.active, -.btn-info[disabled].active, -fieldset[disabled] .btn-info.active { - background-color: #5bc0de; - border-color: #46b8da; -} -.btn-info .badge { - color: #5bc0de; - background-color: #fff; -} -.btn-warning { - color: #fff; - background-color: #f0ad4e; - border-color: #eea236; -} -.btn-warning:hover, -.btn-warning:focus, -.btn-warning.focus, -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - color: #fff; - background-color: #ec971f; - border-color: #d58512; -} -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - background-image: none; -} -.btn-warning.disabled, -.btn-warning[disabled], -fieldset[disabled] .btn-warning, -.btn-warning.disabled:hover, -.btn-warning[disabled]:hover, -fieldset[disabled] .btn-warning:hover, -.btn-warning.disabled:focus, -.btn-warning[disabled]:focus, -fieldset[disabled] .btn-warning:focus, -.btn-warning.disabled.focus, -.btn-warning[disabled].focus, -fieldset[disabled] .btn-warning.focus, -.btn-warning.disabled:active, -.btn-warning[disabled]:active, -fieldset[disabled] .btn-warning:active, -.btn-warning.disabled.active, -.btn-warning[disabled].active, -fieldset[disabled] .btn-warning.active { - background-color: #f0ad4e; - border-color: #eea236; -} -.btn-warning .badge { - color: #f0ad4e; - background-color: #fff; -} -.btn-danger { - color: #fff; - background-color: #d9534f; - border-color: #d43f3a; -} -.btn-danger:hover, -.btn-danger:focus, -.btn-danger.focus, -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - color: #fff; - background-color: #c9302c; - border-color: #ac2925; -} -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - background-image: none; -} -.btn-danger.disabled, -.btn-danger[disabled], -fieldset[disabled] .btn-danger, -.btn-danger.disabled:hover, -.btn-danger[disabled]:hover, -fieldset[disabled] .btn-danger:hover, -.btn-danger.disabled:focus, -.btn-danger[disabled]:focus, -fieldset[disabled] .btn-danger:focus, -.btn-danger.disabled.focus, -.btn-danger[disabled].focus, -fieldset[disabled] .btn-danger.focus, -.btn-danger.disabled:active, -.btn-danger[disabled]:active, -fieldset[disabled] .btn-danger:active, -.btn-danger.disabled.active, -.btn-danger[disabled].active, -fieldset[disabled] .btn-danger.active { - background-color: #d9534f; - border-color: #d43f3a; -} -.btn-danger .badge { - color: #d9534f; - background-color: #fff; -} -.btn-link { - font-weight: normal; - color: #428bca; - border-radius: 0; -} -.btn-link, -.btn-link:active, -.btn-link.active, -.btn-link[disabled], -fieldset[disabled] .btn-link { - background-color: transparent; - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-link, -.btn-link:hover, -.btn-link:focus, -.btn-link:active { - border-color: transparent; -} -.btn-link:hover, -.btn-link:focus { - color: #2a6496; - text-decoration: underline; - background-color: transparent; -} -.btn-link[disabled]:hover, -fieldset[disabled] .btn-link:hover, -.btn-link[disabled]:focus, -fieldset[disabled] .btn-link:focus { - color: #777; - text-decoration: none; -} -.btn-lg, -.btn-group-lg > .btn { - padding: 10px 16px; - font-size: 18px; - line-height: 1.33; - border-radius: 6px; -} -.btn-sm, -.btn-group-sm > .btn { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.btn-xs, -.btn-group-xs > .btn { - padding: 1px 5px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.btn-block { - display: block; - width: 100%; -} -.btn-block + .btn-block { - margin-top: 5px; -} -input[type="submit"].btn-block, -input[type="reset"].btn-block, -input[type="button"].btn-block { - width: 100%; -} -.fade { - opacity: 0; - -webkit-transition: opacity .15s linear; - -o-transition: opacity .15s linear; - transition: opacity .15s linear; -} -.fade.in { - opacity: 1; -} -.collapse { - display: none; - visibility: hidden; -} -.collapse.in { - display: block; - visibility: visible; -} -tr.collapse.in { - display: table-row; -} -tbody.collapse.in { - display: table-row-group; -} -.collapsing { - position: relative; - height: 0; - overflow: hidden; - -webkit-transition-timing-function: ease; - -o-transition-timing-function: ease; - transition-timing-function: ease; - -webkit-transition-duration: .35s; - -o-transition-duration: .35s; - transition-duration: .35s; - -webkit-transition-property: height, visibility; - -o-transition-property: height, visibility; - transition-property: height, visibility; -} -.caret { - display: inline-block; - width: 0; - height: 0; - margin-left: 2px; - vertical-align: middle; - border-top: 4px solid; - border-right: 4px solid transparent; - border-left: 4px solid transparent; -} -.dropdown { - position: relative; -} -.dropdown-toggle:focus { - outline: 0; -} -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 160px; - padding: 5px 0; - margin: 2px 0 0; - font-size: 14px; - text-align: left; - list-style: none; - background-color: #fff; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, .15); - border-radius: 4px; - -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); - box-shadow: 0 6px 12px rgba(0, 0, 0, .175); -} -.dropdown-menu.pull-right { - right: 0; - left: auto; -} -.dropdown-menu .divider { - height: 1px; - margin: 9px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.dropdown-menu > li > a { - display: block; - padding: 3px 20px; - clear: both; - font-weight: normal; - line-height: 1.42857143; - color: #333; - white-space: nowrap; -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - color: #262626; - text-decoration: none; - background-color: #f5f5f5; -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - color: #fff; - text-decoration: none; - background-color: #428bca; - outline: 0; -} -.dropdown-menu > .disabled > a, -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - color: #777; -} -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - text-decoration: none; - cursor: not-allowed; - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.open > .dropdown-menu { - display: block; -} -.open > a { - outline: 0; -} -.dropdown-menu-right { - right: 0; - left: auto; -} -.dropdown-menu-left { - right: auto; - left: 0; -} -.dropdown-header { - display: block; - padding: 3px 20px; - font-size: 12px; - line-height: 1.42857143; - color: #777; - white-space: nowrap; -} -.dropdown-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 990; -} -.pull-right > .dropdown-menu { - right: 0; - left: auto; -} -.dropup .caret, -.navbar-fixed-bottom .dropdown .caret { - content: ""; - border-top: 0; - border-bottom: 4px solid; -} -.dropup .dropdown-menu, -.navbar-fixed-bottom .dropdown .dropdown-menu { - top: auto; - bottom: 100%; - margin-bottom: 1px; -} -@media (min-width: 768px) { - .navbar-right .dropdown-menu { - right: 0; - left: auto; - } - .navbar-right .dropdown-menu-left { - right: auto; - left: 0; - } -} -.btn-group, -.btn-group-vertical { - position: relative; - display: inline-block; - vertical-align: middle; -} -.btn-group > .btn, -.btn-group-vertical > .btn { - position: relative; - float: left; -} -.btn-group > .btn:hover, -.btn-group-vertical > .btn:hover, -.btn-group > .btn:focus, -.btn-group-vertical > .btn:focus, -.btn-group > .btn:active, -.btn-group-vertical > .btn:active, -.btn-group > .btn.active, -.btn-group-vertical > .btn.active { - z-index: 2; -} -.btn-group > .btn:focus, -.btn-group-vertical > .btn:focus { - outline: 0; -} -.btn-group .btn + .btn, -.btn-group .btn + .btn-group, -.btn-group .btn-group + .btn, -.btn-group .btn-group + .btn-group { - margin-left: -1px; -} -.btn-toolbar { - margin-left: -5px; -} -.btn-toolbar .btn-group, -.btn-toolbar .input-group { - float: left; -} -.btn-toolbar > .btn, -.btn-toolbar > .btn-group, -.btn-toolbar > .input-group { - margin-left: 5px; -} -.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { - border-radius: 0; -} -.btn-group > .btn:first-child { - margin-left: 0; -} -.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.btn-group > .btn:last-child:not(:first-child), -.btn-group > .dropdown-toggle:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group > .btn-group { - float: left; -} -.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.btn-group > .btn-group:first-child > .btn:last-child, -.btn-group > .btn-group:first-child > .dropdown-toggle { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.btn-group > .btn-group:last-child > .btn:first-child { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group .dropdown-toggle:active, -.btn-group.open .dropdown-toggle { - outline: 0; -} -.btn-group > .btn + .dropdown-toggle { - padding-right: 8px; - padding-left: 8px; -} -.btn-group > .btn-lg + .dropdown-toggle { - padding-right: 12px; - padding-left: 12px; -} -.btn-group.open .dropdown-toggle { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); -} -.btn-group.open .dropdown-toggle.btn-link { - -webkit-box-shadow: none; - box-shadow: none; -} -.btn .caret { - margin-left: 0; -} -.btn-lg .caret { - border-width: 5px 5px 0; - border-bottom-width: 0; -} -.dropup .btn-lg .caret { - border-width: 0 5px 5px; -} -.btn-group-vertical > .btn, -.btn-group-vertical > .btn-group, -.btn-group-vertical > .btn-group > .btn { - display: block; - float: none; - width: 100%; - max-width: 100%; -} -.btn-group-vertical > .btn-group > .btn { - float: none; -} -.btn-group-vertical > .btn + .btn, -.btn-group-vertical > .btn + .btn-group, -.btn-group-vertical > .btn-group + .btn, -.btn-group-vertical > .btn-group + .btn-group { - margin-top: -1px; - margin-left: 0; -} -.btn-group-vertical > .btn:not(:first-child):not(:last-child) { - border-radius: 0; -} -.btn-group-vertical > .btn:first-child:not(:last-child) { - border-top-right-radius: 4px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn:last-child:not(:first-child) { - border-top-left-radius: 0; - border-top-right-radius: 0; - border-bottom-left-radius: 4px; -} -.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.btn-group-justified { - display: table; - width: 100%; - table-layout: fixed; - border-collapse: separate; -} -.btn-group-justified > .btn, -.btn-group-justified > .btn-group { - display: table-cell; - float: none; - width: 1%; -} -.btn-group-justified > .btn-group .btn { - width: 100%; -} -.btn-group-justified > .btn-group .dropdown-menu { - left: auto; -} -[data-toggle="buttons"] > .btn input[type="radio"], -[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], -[data-toggle="buttons"] > .btn input[type="checkbox"], -[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { - position: absolute; - clip: rect(0, 0, 0, 0); - pointer-events: none; -} -.input-group { - position: relative; - display: table; - border-collapse: separate; -} -.input-group[class*="col-"] { - float: none; - padding-right: 0; - padding-left: 0; -} -.input-group .form-control { - position: relative; - z-index: 2; - float: left; - width: 100%; - margin-bottom: 0; -} -.input-group-lg > .form-control, -.input-group-lg > .input-group-addon, -.input-group-lg > .input-group-btn > .btn { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.33; - border-radius: 6px; -} -select.input-group-lg > .form-control, -select.input-group-lg > .input-group-addon, -select.input-group-lg > .input-group-btn > .btn { - height: 46px; - line-height: 46px; -} -textarea.input-group-lg > .form-control, -textarea.input-group-lg > .input-group-addon, -textarea.input-group-lg > .input-group-btn > .btn, -select[multiple].input-group-lg > .form-control, -select[multiple].input-group-lg > .input-group-addon, -select[multiple].input-group-lg > .input-group-btn > .btn { - height: auto; -} -.input-group-sm > .form-control, -.input-group-sm > .input-group-addon, -.input-group-sm > .input-group-btn > .btn { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -select.input-group-sm > .form-control, -select.input-group-sm > .input-group-addon, -select.input-group-sm > .input-group-btn > .btn { - height: 30px; - line-height: 30px; -} -textarea.input-group-sm > .form-control, -textarea.input-group-sm > .input-group-addon, -textarea.input-group-sm > .input-group-btn > .btn, -select[multiple].input-group-sm > .form-control, -select[multiple].input-group-sm > .input-group-addon, -select[multiple].input-group-sm > .input-group-btn > .btn { - height: auto; -} -.input-group-addon, -.input-group-btn, -.input-group .form-control { - display: table-cell; -} -.input-group-addon:not(:first-child):not(:last-child), -.input-group-btn:not(:first-child):not(:last-child), -.input-group .form-control:not(:first-child):not(:last-child) { - border-radius: 0; -} -.input-group-addon, -.input-group-btn { - width: 1%; - white-space: nowrap; - vertical-align: middle; -} -.input-group-addon { - padding: 6px 12px; - font-size: 14px; - font-weight: normal; - line-height: 1; - color: #555; - text-align: center; - background-color: #eee; - border: 1px solid #ccc; - border-radius: 4px; -} -.input-group-addon.input-sm { - padding: 5px 10px; - font-size: 12px; - border-radius: 3px; -} -.input-group-addon.input-lg { - padding: 10px 16px; - font-size: 18px; - border-radius: 6px; -} -.input-group-addon input[type="radio"], -.input-group-addon input[type="checkbox"] { - margin-top: 0; -} -.input-group .form-control:first-child, -.input-group-addon:first-child, -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group > .btn, -.input-group-btn:first-child > .dropdown-toggle, -.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), -.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.input-group-addon:first-child { - border-right: 0; -} -.input-group .form-control:last-child, -.input-group-addon:last-child, -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group > .btn, -.input-group-btn:last-child > .dropdown-toggle, -.input-group-btn:first-child > .btn:not(:first-child), -.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.input-group-addon:last-child { - border-left: 0; -} -.input-group-btn { - position: relative; - font-size: 0; - white-space: nowrap; -} -.input-group-btn > .btn { - position: relative; -} -.input-group-btn > .btn + .btn { - margin-left: -1px; -} -.input-group-btn > .btn:hover, -.input-group-btn > .btn:focus, -.input-group-btn > .btn:active { - z-index: 2; -} -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group { - margin-right: -1px; -} -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group { - margin-left: -1px; -} -.nav { - padding-left: 0; - margin-bottom: 0; - list-style: none; -} -.nav > li { - position: relative; - display: block; -} -.nav > li > a { - position: relative; - display: block; - padding: 10px 15px; -} -.nav > li > a:hover, -.nav > li > a:focus { - text-decoration: none; - background-color: #eee; -} -.nav > li.disabled > a { - color: #777; -} -.nav > li.disabled > a:hover, -.nav > li.disabled > a:focus { - color: #777; - text-decoration: none; - cursor: not-allowed; - background-color: transparent; -} -.nav .open > a, -.nav .open > a:hover, -.nav .open > a:focus { - background-color: #eee; - border-color: #428bca; -} -.nav .nav-divider { - height: 1px; - margin: 9px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.nav > li > a > img { - max-width: none; -} -.nav-tabs { - border-bottom: 1px solid #ddd; -} -.nav-tabs > li { - float: left; - margin-bottom: -1px; -} -.nav-tabs > li > a { - margin-right: 2px; - line-height: 1.42857143; - border: 1px solid transparent; - border-radius: 4px 4px 0 0; -} -.nav-tabs > li > a:hover { - border-color: #eee #eee #ddd; -} -.nav-tabs > li.active > a, -.nav-tabs > li.active > a:hover, -.nav-tabs > li.active > a:focus { - color: #555; - cursor: default; - background-color: #fff; - border: 1px solid #ddd; - border-bottom-color: transparent; -} -.nav-tabs.nav-justified { - width: 100%; - border-bottom: 0; -} -.nav-tabs.nav-justified > li { - float: none; -} -.nav-tabs.nav-justified > li > a { - margin-bottom: 5px; - text-align: center; -} -.nav-tabs.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-tabs.nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs.nav-justified > li > a { - margin-right: 0; - border-radius: 4px; -} -.nav-tabs.nav-justified > .active > a, -.nav-tabs.nav-justified > .active > a:hover, -.nav-tabs.nav-justified > .active > a:focus { - border: 1px solid #ddd; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li > a { - border-bottom: 1px solid #ddd; - border-radius: 4px 4px 0 0; - } - .nav-tabs.nav-justified > .active > a, - .nav-tabs.nav-justified > .active > a:hover, - .nav-tabs.nav-justified > .active > a:focus { - border-bottom-color: #fff; - } -} -.nav-pills > li { - float: left; -} -.nav-pills > li > a { - border-radius: 4px; -} -.nav-pills > li + li { - margin-left: 2px; -} -.nav-pills > li.active > a, -.nav-pills > li.active > a:hover, -.nav-pills > li.active > a:focus { - color: #fff; - background-color: #428bca; -} -.nav-stacked > li { - float: none; -} -.nav-stacked > li + li { - margin-top: 2px; - margin-left: 0; -} -.nav-justified { - width: 100%; -} -.nav-justified > li { - float: none; -} -.nav-justified > li > a { - margin-bottom: 5px; - text-align: center; -} -.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; -} -@media (min-width: 768px) { - .nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs-justified { - border-bottom: 0; -} -.nav-tabs-justified > li > a { - margin-right: 0; - border-radius: 4px; -} -.nav-tabs-justified > .active > a, -.nav-tabs-justified > .active > a:hover, -.nav-tabs-justified > .active > a:focus { - border: 1px solid #ddd; -} -@media (min-width: 768px) { - .nav-tabs-justified > li > a { - border-bottom: 1px solid #ddd; - border-radius: 4px 4px 0 0; - } - .nav-tabs-justified > .active > a, - .nav-tabs-justified > .active > a:hover, - .nav-tabs-justified > .active > a:focus { - border-bottom-color: #fff; - } -} -.tab-content > .tab-pane { - display: none; - visibility: hidden; -} -.tab-content > .active { - display: block; - visibility: visible; -} -.nav-tabs .dropdown-menu { - margin-top: -1px; - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.navbar { - position: relative; - min-height: 50px; - margin-bottom: 20px; - border: 1px solid transparent; -} -@media (min-width: 768px) { - .navbar { - border-radius: 4px; - } -} -@media (min-width: 768px) { - .navbar-header { - float: left; - } -} -.navbar-collapse { - padding-right: 15px; - padding-left: 15px; - overflow-x: visible; - -webkit-overflow-scrolling: touch; - border-top: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); -} -.navbar-collapse.in { - overflow-y: auto; -} -@media (min-width: 768px) { - .navbar-collapse { - width: auto; - border-top: 0; - -webkit-box-shadow: none; - box-shadow: none; - } - .navbar-collapse.collapse { - display: block !important; - height: auto !important; - padding-bottom: 0; - overflow: visible !important; - visibility: visible !important; - } - .navbar-collapse.in { - overflow-y: visible; - } - .navbar-fixed-top .navbar-collapse, - .navbar-static-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - padding-right: 0; - padding-left: 0; - } -} -.navbar-fixed-top .navbar-collapse, -.navbar-fixed-bottom .navbar-collapse { - max-height: 340px; -} -@media (max-device-width: 480px) and (orientation: landscape) { - .navbar-fixed-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - max-height: 200px; - } -} -.container > .navbar-header, -.container-fluid > .navbar-header, -.container > .navbar-collapse, -.container-fluid > .navbar-collapse { - margin-right: -15px; - margin-left: -15px; -} -@media (min-width: 768px) { - .container > .navbar-header, - .container-fluid > .navbar-header, - .container > .navbar-collapse, - .container-fluid > .navbar-collapse { - margin-right: 0; - margin-left: 0; - } -} -.navbar-static-top { - z-index: 1000; - border-width: 0 0 1px; -} -@media (min-width: 768px) { - .navbar-static-top { - border-radius: 0; - } -} -.navbar-fixed-top, -.navbar-fixed-bottom { - position: fixed; - right: 0; - left: 0; - z-index: 1030; -} -@media (min-width: 768px) { - .navbar-fixed-top, - .navbar-fixed-bottom { - border-radius: 0; - } -} -.navbar-fixed-top { - top: 0; - border-width: 0 0 1px; -} -.navbar-fixed-bottom { - bottom: 0; - margin-bottom: 0; - border-width: 1px 0 0; -} -.navbar-brand { - float: left; - height: 50px; - padding: 15px 15px; - font-size: 18px; - line-height: 20px; -} -.navbar-brand:hover, -.navbar-brand:focus { - text-decoration: none; -} -.navbar-brand > img { - display: block; -} -@media (min-width: 768px) { - .navbar > .container .navbar-brand, - .navbar > .container-fluid .navbar-brand { - margin-left: -15px; - } -} -.navbar-toggle { - position: relative; - float: right; - padding: 9px 10px; - margin-top: 8px; - margin-right: 15px; - margin-bottom: 8px; - background-color: transparent; - background-image: none; - border: 1px solid transparent; - border-radius: 4px; -} -.navbar-toggle:focus { - outline: 0; -} -.navbar-toggle .icon-bar { - display: block; - width: 22px; - height: 2px; - border-radius: 1px; -} -.navbar-toggle .icon-bar + .icon-bar { - margin-top: 4px; -} -@media (min-width: 768px) { - .navbar-toggle { - display: none; - } -} -.navbar-nav { - margin: 7.5px -15px; -} -.navbar-nav > li > a { - padding-top: 10px; - padding-bottom: 10px; - line-height: 20px; -} -@media (max-width: 767px) { - .navbar-nav .open .dropdown-menu { - position: static; - float: none; - width: auto; - margin-top: 0; - background-color: transparent; - border: 0; - -webkit-box-shadow: none; - box-shadow: none; - } - .navbar-nav .open .dropdown-menu > li > a, - .navbar-nav .open .dropdown-menu .dropdown-header { - padding: 5px 15px 5px 25px; - } - .navbar-nav .open .dropdown-menu > li > a { - line-height: 20px; - } - .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-nav .open .dropdown-menu > li > a:focus { - background-image: none; - } -} -@media (min-width: 768px) { - .navbar-nav { - float: left; - margin: 0; - } - .navbar-nav > li { - float: left; - } - .navbar-nav > li > a { - padding-top: 15px; - padding-bottom: 15px; - } -} -.navbar-form { - padding: 10px 15px; - margin-top: 8px; - margin-right: -15px; - margin-bottom: 8px; - margin-left: -15px; - border-top: 1px solid transparent; - border-bottom: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); -} -@media (min-width: 768px) { - .navbar-form .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .navbar-form .form-control-static { - display: inline-block; - } - .navbar-form .input-group { - display: inline-table; - vertical-align: middle; - } - .navbar-form .input-group .input-group-addon, - .navbar-form .input-group .input-group-btn, - .navbar-form .input-group .form-control { - width: auto; - } - .navbar-form .input-group > .form-control { - width: 100%; - } - .navbar-form .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio, - .navbar-form .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio label, - .navbar-form .checkbox label { - padding-left: 0; - } - .navbar-form .radio input[type="radio"], - .navbar-form .checkbox input[type="checkbox"] { - position: relative; - margin-left: 0; - } - .navbar-form .has-feedback .form-control-feedback { - top: 0; - } -} -@media (max-width: 767px) { - .navbar-form .form-group { - margin-bottom: 5px; - } - .navbar-form .form-group:last-child { - margin-bottom: 0; - } -} -@media (min-width: 768px) { - .navbar-form { - width: auto; - padding-top: 0; - padding-bottom: 0; - margin-right: 0; - margin-left: 0; - border: 0; - -webkit-box-shadow: none; - box-shadow: none; - } -} -.navbar-nav > li > .dropdown-menu { - margin-top: 0; - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.navbar-btn { - margin-top: 8px; - margin-bottom: 8px; -} -.navbar-btn.btn-sm { - margin-top: 10px; - margin-bottom: 10px; -} -.navbar-btn.btn-xs { - margin-top: 14px; - margin-bottom: 14px; -} -.navbar-text { - margin-top: 15px; - margin-bottom: 15px; -} -@media (min-width: 768px) { - .navbar-text { - float: left; - margin-right: 15px; - margin-left: 15px; - } -} -@media (min-width: 768px) { - .navbar-left { - float: left !important; - } - .navbar-right { - float: right !important; - margin-right: -15px; - } - .navbar-right ~ .navbar-right { - margin-right: 0; - } -} -.navbar-default { - background-color: #f8f8f8; - border-color: #e7e7e7; -} -.navbar-default .navbar-brand { - color: #777; -} -.navbar-default .navbar-brand:hover, -.navbar-default .navbar-brand:focus { - color: #5e5e5e; - background-color: transparent; -} -.navbar-default .navbar-text { - color: #777; -} -.navbar-default .navbar-nav > li > a { - color: #777; -} -.navbar-default .navbar-nav > li > a:hover, -.navbar-default .navbar-nav > li > a:focus { - color: #333; - background-color: transparent; -} -.navbar-default .navbar-nav > .active > a, -.navbar-default .navbar-nav > .active > a:hover, -.navbar-default .navbar-nav > .active > a:focus { - color: #555; - background-color: #e7e7e7; -} -.navbar-default .navbar-nav > .disabled > a, -.navbar-default .navbar-nav > .disabled > a:hover, -.navbar-default .navbar-nav > .disabled > a:focus { - color: #ccc; - background-color: transparent; -} -.navbar-default .navbar-toggle { - border-color: #ddd; -} -.navbar-default .navbar-toggle:hover, -.navbar-default .navbar-toggle:focus { - background-color: #ddd; -} -.navbar-default .navbar-toggle .icon-bar { - background-color: #888; -} -.navbar-default .navbar-collapse, -.navbar-default .navbar-form { - border-color: #e7e7e7; -} -.navbar-default .navbar-nav > .open > a, -.navbar-default .navbar-nav > .open > a:hover, -.navbar-default .navbar-nav > .open > a:focus { - color: #555; - background-color: #e7e7e7; -} -@media (max-width: 767px) { - .navbar-default .navbar-nav .open .dropdown-menu > li > a { - color: #777; - } - .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { - color: #333; - background-color: transparent; - } - .navbar-default .navbar-nav .open .dropdown-menu > .active > a, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #555; - background-color: #e7e7e7; - } - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #ccc; - background-color: transparent; - } -} -.navbar-default .navbar-link { - color: #777; -} -.navbar-default .navbar-link:hover { - color: #333; -} -.navbar-default .btn-link { - color: #777; -} -.navbar-default .btn-link:hover, -.navbar-default .btn-link:focus { - color: #333; -} -.navbar-default .btn-link[disabled]:hover, -fieldset[disabled] .navbar-default .btn-link:hover, -.navbar-default .btn-link[disabled]:focus, -fieldset[disabled] .navbar-default .btn-link:focus { - color: #ccc; -} -.navbar-inverse { - background-color: #222; - border-color: #080808; -} -.navbar-inverse .navbar-brand { - color: #9d9d9d; -} -.navbar-inverse .navbar-brand:hover, -.navbar-inverse .navbar-brand:focus { - color: #fff; - background-color: transparent; -} -.navbar-inverse .navbar-text { - color: #9d9d9d; -} -.navbar-inverse .navbar-nav > li > a { - color: #9d9d9d; -} -.navbar-inverse .navbar-nav > li > a:hover, -.navbar-inverse .navbar-nav > li > a:focus { - color: #fff; - background-color: transparent; -} -.navbar-inverse .navbar-nav > .active > a, -.navbar-inverse .navbar-nav > .active > a:hover, -.navbar-inverse .navbar-nav > .active > a:focus { - color: #fff; - background-color: #080808; -} -.navbar-inverse .navbar-nav > .disabled > a, -.navbar-inverse .navbar-nav > .disabled > a:hover, -.navbar-inverse .navbar-nav > .disabled > a:focus { - color: #444; - background-color: transparent; -} -.navbar-inverse .navbar-toggle { - border-color: #333; -} -.navbar-inverse .navbar-toggle:hover, -.navbar-inverse .navbar-toggle:focus { - background-color: #333; -} -.navbar-inverse .navbar-toggle .icon-bar { - background-color: #fff; -} -.navbar-inverse .navbar-collapse, -.navbar-inverse .navbar-form { - border-color: #101010; -} -.navbar-inverse .navbar-nav > .open > a, -.navbar-inverse .navbar-nav > .open > a:hover, -.navbar-inverse .navbar-nav > .open > a:focus { - color: #fff; - background-color: #080808; -} -@media (max-width: 767px) { - .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { - border-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu .divider { - background-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { - color: #9d9d9d; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { - color: #fff; - background-color: transparent; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #fff; - background-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #444; - background-color: transparent; - } -} -.navbar-inverse .navbar-link { - color: #9d9d9d; -} -.navbar-inverse .navbar-link:hover { - color: #fff; -} -.navbar-inverse .btn-link { - color: #9d9d9d; -} -.navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link:focus { - color: #fff; -} -.navbar-inverse .btn-link[disabled]:hover, -fieldset[disabled] .navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link[disabled]:focus, -fieldset[disabled] .navbar-inverse .btn-link:focus { - color: #444; -} -.breadcrumb { - padding: 8px 15px; - margin-bottom: 20px; - list-style: none; - background-color: #f5f5f5; - border-radius: 4px; -} -.breadcrumb > li { - display: inline-block; -} -.breadcrumb > li + li:before { - padding: 0 5px; - color: #ccc; - content: "/\00a0"; -} -.breadcrumb > .active { - color: #777; -} -.pagination { - display: inline-block; - padding-left: 0; - margin: 20px 0; - border-radius: 4px; -} -.pagination > li { - display: inline; -} -.pagination > li > a, -.pagination > li > span { - position: relative; - float: left; - padding: 6px 12px; - margin-left: -1px; - line-height: 1.42857143; - color: #428bca; - text-decoration: none; - background-color: #fff; - border: 1px solid #ddd; -} -.pagination > li:first-child > a, -.pagination > li:first-child > span { - margin-left: 0; - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; -} -.pagination > li:last-child > a, -.pagination > li:last-child > span { - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; -} -.pagination > li > a:hover, -.pagination > li > span:hover, -.pagination > li > a:focus, -.pagination > li > span:focus { - color: #2a6496; - background-color: #eee; - border-color: #ddd; -} -.pagination > .active > a, -.pagination > .active > span, -.pagination > .active > a:hover, -.pagination > .active > span:hover, -.pagination > .active > a:focus, -.pagination > .active > span:focus { - z-index: 2; - color: #fff; - cursor: default; - background-color: #428bca; - border-color: #428bca; -} -.pagination > .disabled > span, -.pagination > .disabled > span:hover, -.pagination > .disabled > span:focus, -.pagination > .disabled > a, -.pagination > .disabled > a:hover, -.pagination > .disabled > a:focus { - color: #777; - cursor: not-allowed; - background-color: #fff; - border-color: #ddd; -} -.pagination-lg > li > a, -.pagination-lg > li > span { - padding: 10px 16px; - font-size: 18px; -} -.pagination-lg > li:first-child > a, -.pagination-lg > li:first-child > span { - border-top-left-radius: 6px; - border-bottom-left-radius: 6px; -} -.pagination-lg > li:last-child > a, -.pagination-lg > li:last-child > span { - border-top-right-radius: 6px; - border-bottom-right-radius: 6px; -} -.pagination-sm > li > a, -.pagination-sm > li > span { - padding: 5px 10px; - font-size: 12px; -} -.pagination-sm > li:first-child > a, -.pagination-sm > li:first-child > span { - border-top-left-radius: 3px; - border-bottom-left-radius: 3px; -} -.pagination-sm > li:last-child > a, -.pagination-sm > li:last-child > span { - border-top-right-radius: 3px; - border-bottom-right-radius: 3px; -} -.pager { - padding-left: 0; - margin: 20px 0; - text-align: center; - list-style: none; -} -.pager li { - display: inline; -} -.pager li > a, -.pager li > span { - display: inline-block; - padding: 5px 14px; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 15px; -} -.pager li > a:hover, -.pager li > a:focus { - text-decoration: none; - background-color: #eee; -} -.pager .next > a, -.pager .next > span { - float: right; -} -.pager .previous > a, -.pager .previous > span { - float: left; -} -.pager .disabled > a, -.pager .disabled > a:hover, -.pager .disabled > a:focus, -.pager .disabled > span { - color: #777; - cursor: not-allowed; - background-color: #fff; -} -.label { - display: inline; - padding: .2em .6em .3em; - font-size: 75%; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: .25em; -} -a.label:hover, -a.label:focus { - color: #fff; - text-decoration: none; - cursor: pointer; -} -.label:empty { - display: none; -} -.btn .label { - position: relative; - top: -1px; -} -.label-default { - background-color: #777; -} -.label-default[href]:hover, -.label-default[href]:focus { - background-color: #5e5e5e; -} -.label-primary { - background-color: #428bca; -} -.label-primary[href]:hover, -.label-primary[href]:focus { - background-color: #3071a9; -} -.label-success { - background-color: #5cb85c; -} -.label-success[href]:hover, -.label-success[href]:focus { - background-color: #449d44; -} -.label-info { - background-color: #5bc0de; -} -.label-info[href]:hover, -.label-info[href]:focus { - background-color: #31b0d5; -} -.label-warning { - background-color: #f0ad4e; -} -.label-warning[href]:hover, -.label-warning[href]:focus { - background-color: #ec971f; -} -.label-danger { - background-color: #d9534f; -} -.label-danger[href]:hover, -.label-danger[href]:focus { - background-color: #c9302c; -} -.badge { - display: inline-block; - min-width: 10px; - padding: 3px 7px; - font-size: 12px; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - background-color: #777; - border-radius: 10px; -} -.badge:empty { - display: none; -} -.btn .badge { - position: relative; - top: -1px; -} -.btn-xs .badge { - top: 0; - padding: 1px 5px; -} -a.badge:hover, -a.badge:focus { - color: #fff; - text-decoration: none; - cursor: pointer; -} -a.list-group-item.active > .badge, -.nav-pills > .active > a > .badge { - color: #428bca; - background-color: #fff; -} -.nav-pills > li > a > .badge { - margin-left: 3px; -} -.jumbotron { - padding: 30px 15px; - margin-bottom: 30px; - color: inherit; - background-color: #eee; -} -.jumbotron h1, -.jumbotron .h1 { - color: inherit; -} -.jumbotron p { - margin-bottom: 15px; - font-size: 21px; - font-weight: 200; -} -.jumbotron > hr { - border-top-color: #d5d5d5; -} -.container .jumbotron, -.container-fluid .jumbotron { - border-radius: 6px; -} -.jumbotron .container { - max-width: 100%; -} -@media screen and (min-width: 768px) { - .jumbotron { - padding: 48px 0; - } - .container .jumbotron { - padding-right: 60px; - padding-left: 60px; - } - .jumbotron h1, - .jumbotron .h1 { - font-size: 63px; - } -} -.thumbnail { - display: block; - padding: 4px; - margin-bottom: 20px; - line-height: 1.42857143; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 4px; - -webkit-transition: border .2s ease-in-out; - -o-transition: border .2s ease-in-out; - transition: border .2s ease-in-out; -} -.thumbnail > img, -.thumbnail a > img { - margin-right: auto; - margin-left: auto; -} -a.thumbnail:hover, -a.thumbnail:focus, -a.thumbnail.active { - border-color: #428bca; -} -.thumbnail .caption { - padding: 9px; - color: #333; -} -.alert { - padding: 15px; - margin-bottom: 20px; - border: 1px solid transparent; - border-radius: 4px; -} -.alert h4 { - margin-top: 0; - color: inherit; -} -.alert .alert-link { - font-weight: bold; -} -.alert > p, -.alert > ul { - margin-bottom: 0; -} -.alert > p + p { - margin-top: 5px; -} -.alert-dismissable, -.alert-dismissible { - padding-right: 35px; -} -.alert-dismissable .close, -.alert-dismissible .close { - position: relative; - top: -2px; - right: -21px; - color: inherit; -} -.alert-success { - color: #3c763d; - background-color: #dff0d8; - border-color: #d6e9c6; -} -.alert-success hr { - border-top-color: #c9e2b3; -} -.alert-success .alert-link { - color: #2b542c; -} -.alert-info { - color: #31708f; - background-color: #d9edf7; - border-color: #bce8f1; -} -.alert-info hr { - border-top-color: #a6e1ec; -} -.alert-info .alert-link { - color: #245269; -} -.alert-warning { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #faebcc; -} -.alert-warning hr { - border-top-color: #f7e1b5; -} -.alert-warning .alert-link { - color: #66512c; -} -.alert-danger { - color: #a94442; - background-color: #f2dede; - border-color: #ebccd1; -} -.alert-danger hr { - border-top-color: #e4b9c0; -} -.alert-danger .alert-link { - color: #843534; -} -@-webkit-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@-o-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -.progress { - height: 20px; - margin-bottom: 20px; - overflow: hidden; - background-color: #f5f5f5; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); -} -.progress-bar { - float: left; - width: 0; - height: 100%; - font-size: 12px; - line-height: 20px; - color: #fff; - text-align: center; - background-color: #428bca; - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); - -webkit-transition: width .6s ease; - -o-transition: width .6s ease; - transition: width .6s ease; -} -.progress-striped .progress-bar, -.progress-bar-striped { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - -webkit-background-size: 40px 40px; - background-size: 40px 40px; -} -.progress.active .progress-bar, -.progress-bar.active { - -webkit-animation: progress-bar-stripes 2s linear infinite; - -o-animation: progress-bar-stripes 2s linear infinite; - animation: progress-bar-stripes 2s linear infinite; -} -.progress-bar-success { - background-color: #5cb85c; -} -.progress-striped .progress-bar-success { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.progress-bar-info { - background-color: #5bc0de; -} -.progress-striped .progress-bar-info { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.progress-bar-warning { - background-color: #f0ad4e; -} -.progress-striped .progress-bar-warning { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.progress-bar-danger { - background-color: #d9534f; -} -.progress-striped .progress-bar-danger { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.media { - margin-top: 15px; -} -.media:first-child { - margin-top: 0; -} -.media-right, -.media > .pull-right { - padding-left: 10px; -} -.media-left, -.media > .pull-left { - padding-right: 10px; -} -.media-left, -.media-right, -.media-body { - display: table-cell; - vertical-align: top; -} -.media-middle { - vertical-align: middle; -} -.media-bottom { - vertical-align: bottom; -} -.media-heading { - margin-top: 0; - margin-bottom: 5px; -} -.media-list { - padding-left: 0; - list-style: none; -} -.list-group { - padding-left: 0; - margin-bottom: 20px; -} -.list-group-item { - position: relative; - display: block; - padding: 10px 15px; - margin-bottom: -1px; - background-color: #fff; - border: 1px solid #ddd; -} -.list-group-item:first-child { - border-top-left-radius: 4px; - border-top-right-radius: 4px; -} -.list-group-item:last-child { - margin-bottom: 0; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; -} -.list-group-item > .badge { - float: right; -} -.list-group-item > .badge + .badge { - margin-right: 5px; -} -a.list-group-item { - color: #555; -} -a.list-group-item .list-group-item-heading { - color: #333; -} -a.list-group-item:hover, -a.list-group-item:focus { - color: #555; - text-decoration: none; - background-color: #f5f5f5; -} -.list-group-item.disabled, -.list-group-item.disabled:hover, -.list-group-item.disabled:focus { - color: #777; - cursor: not-allowed; - background-color: #eee; -} -.list-group-item.disabled .list-group-item-heading, -.list-group-item.disabled:hover .list-group-item-heading, -.list-group-item.disabled:focus .list-group-item-heading { - color: inherit; -} -.list-group-item.disabled .list-group-item-text, -.list-group-item.disabled:hover .list-group-item-text, -.list-group-item.disabled:focus .list-group-item-text { - color: #777; -} -.list-group-item.active, -.list-group-item.active:hover, -.list-group-item.active:focus { - z-index: 2; - color: #fff; - background-color: #428bca; - border-color: #428bca; -} -.list-group-item.active .list-group-item-heading, -.list-group-item.active:hover .list-group-item-heading, -.list-group-item.active:focus .list-group-item-heading, -.list-group-item.active .list-group-item-heading > small, -.list-group-item.active:hover .list-group-item-heading > small, -.list-group-item.active:focus .list-group-item-heading > small, -.list-group-item.active .list-group-item-heading > .small, -.list-group-item.active:hover .list-group-item-heading > .small, -.list-group-item.active:focus .list-group-item-heading > .small { - color: inherit; -} -.list-group-item.active .list-group-item-text, -.list-group-item.active:hover .list-group-item-text, -.list-group-item.active:focus .list-group-item-text { - color: #e1edf7; -} -.list-group-item-success { - color: #3c763d; - background-color: #dff0d8; -} -a.list-group-item-success { - color: #3c763d; -} -a.list-group-item-success .list-group-item-heading { - color: inherit; -} -a.list-group-item-success:hover, -a.list-group-item-success:focus { - color: #3c763d; - background-color: #d0e9c6; -} -a.list-group-item-success.active, -a.list-group-item-success.active:hover, -a.list-group-item-success.active:focus { - color: #fff; - background-color: #3c763d; - border-color: #3c763d; -} -.list-group-item-info { - color: #31708f; - background-color: #d9edf7; -} -a.list-group-item-info { - color: #31708f; -} -a.list-group-item-info .list-group-item-heading { - color: inherit; -} -a.list-group-item-info:hover, -a.list-group-item-info:focus { - color: #31708f; - background-color: #c4e3f3; -} -a.list-group-item-info.active, -a.list-group-item-info.active:hover, -a.list-group-item-info.active:focus { - color: #fff; - background-color: #31708f; - border-color: #31708f; -} -.list-group-item-warning { - color: #8a6d3b; - background-color: #fcf8e3; -} -a.list-group-item-warning { - color: #8a6d3b; -} -a.list-group-item-warning .list-group-item-heading { - color: inherit; -} -a.list-group-item-warning:hover, -a.list-group-item-warning:focus { - color: #8a6d3b; - background-color: #faf2cc; -} -a.list-group-item-warning.active, -a.list-group-item-warning.active:hover, -a.list-group-item-warning.active:focus { - color: #fff; - background-color: #8a6d3b; - border-color: #8a6d3b; -} -.list-group-item-danger { - color: #a94442; - background-color: #f2dede; -} -a.list-group-item-danger { - color: #a94442; -} -a.list-group-item-danger .list-group-item-heading { - color: inherit; -} -a.list-group-item-danger:hover, -a.list-group-item-danger:focus { - color: #a94442; - background-color: #ebcccc; -} -a.list-group-item-danger.active, -a.list-group-item-danger.active:hover, -a.list-group-item-danger.active:focus { - color: #fff; - background-color: #a94442; - border-color: #a94442; -} -.list-group-item-heading { - margin-top: 0; - margin-bottom: 5px; -} -.list-group-item-text { - margin-bottom: 0; - line-height: 1.3; -} -.panel { - margin-bottom: 20px; - background-color: #fff; - border: 1px solid transparent; - border-radius: 4px; - -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05); - box-shadow: 0 1px 1px rgba(0, 0, 0, .05); -} -.panel-body { - padding: 15px; -} -.panel-heading { - padding: 10px 15px; - border-bottom: 1px solid transparent; - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel-heading > .dropdown .dropdown-toggle { - color: inherit; -} -.panel-title { - margin-top: 0; - margin-bottom: 0; - font-size: 16px; - color: inherit; -} -.panel-title > a { - color: inherit; -} -.panel-footer { - padding: 10px 15px; - background-color: #f5f5f5; - border-top: 1px solid #ddd; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .list-group, -.panel > .panel-collapse > .list-group { - margin-bottom: 0; -} -.panel > .list-group .list-group-item, -.panel > .panel-collapse > .list-group .list-group-item { - border-width: 1px 0; - border-radius: 0; -} -.panel > .list-group:first-child .list-group-item:first-child, -.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { - border-top: 0; - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .list-group:last-child .list-group-item:last-child, -.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { - border-bottom: 0; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel-heading + .list-group .list-group-item:first-child { - border-top-width: 0; -} -.list-group + .panel-footer { - border-top-width: 0; -} -.panel > .table, -.panel > .table-responsive > .table, -.panel > .panel-collapse > .table { - margin-bottom: 0; -} -.panel > .table caption, -.panel > .table-responsive > .table caption, -.panel > .panel-collapse > .table caption { - padding-right: 15px; - padding-left: 15px; -} -.panel > .table:first-child, -.panel > .table-responsive:first-child > .table:first-child { - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { - border-top-left-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { - border-top-right-radius: 3px; -} -.panel > .table:last-child, -.panel > .table-responsive:last-child > .table:last-child { - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { - border-bottom-right-radius: 3px; -} -.panel > .panel-body + .table, -.panel > .panel-body + .table-responsive, -.panel > .table + .panel-body, -.panel > .table-responsive + .panel-body { - border-top: 1px solid #ddd; -} -.panel > .table > tbody:first-child > tr:first-child th, -.panel > .table > tbody:first-child > tr:first-child td { - border-top: 0; -} -.panel > .table-bordered, -.panel > .table-responsive > .table-bordered { - border: 0; -} -.panel > .table-bordered > thead > tr > th:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, -.panel > .table-bordered > tbody > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, -.panel > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-bordered > thead > tr > td:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, -.panel > .table-bordered > tbody > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, -.panel > .table-bordered > tfoot > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; -} -.panel > .table-bordered > thead > tr > th:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, -.panel > .table-bordered > tbody > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, -.panel > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-bordered > thead > tr > td:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, -.panel > .table-bordered > tbody > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, -.panel > .table-bordered > tfoot > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; -} -.panel > .table-bordered > thead > tr:first-child > td, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, -.panel > .table-bordered > tbody > tr:first-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, -.panel > .table-bordered > thead > tr:first-child > th, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, -.panel > .table-bordered > tbody > tr:first-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { - border-bottom: 0; -} -.panel > .table-bordered > tbody > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, -.panel > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-bordered > tbody > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, -.panel > .table-bordered > tfoot > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { - border-bottom: 0; -} -.panel > .table-responsive { - margin-bottom: 0; - border: 0; -} -.panel-group { - margin-bottom: 20px; -} -.panel-group .panel { - margin-bottom: 0; - border-radius: 4px; -} -.panel-group .panel + .panel { - margin-top: 5px; -} -.panel-group .panel-heading { - border-bottom: 0; -} -.panel-group .panel-heading + .panel-collapse > .panel-body, -.panel-group .panel-heading + .panel-collapse > .list-group { - border-top: 1px solid #ddd; -} -.panel-group .panel-footer { - border-top: 0; -} -.panel-group .panel-footer + .panel-collapse .panel-body { - border-bottom: 1px solid #ddd; -} -.panel-default { - border-color: #ddd; -} -.panel-default > .panel-heading { - color: #333; - background-color: #f5f5f5; - border-color: #ddd; -} -.panel-default > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #ddd; -} -.panel-default > .panel-heading .badge { - color: #f5f5f5; - background-color: #333; -} -.panel-default > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #ddd; -} -.panel-primary { - border-color: #428bca; -} -.panel-primary > .panel-heading { - color: #fff; - background-color: #428bca; - border-color: #428bca; -} -.panel-primary > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #428bca; -} -.panel-primary > .panel-heading .badge { - color: #428bca; - background-color: #fff; -} -.panel-primary > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #428bca; -} -.panel-success { - border-color: #d6e9c6; -} -.panel-success > .panel-heading { - color: #3c763d; - background-color: #dff0d8; - border-color: #d6e9c6; -} -.panel-success > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #d6e9c6; -} -.panel-success > .panel-heading .badge { - color: #dff0d8; - background-color: #3c763d; -} -.panel-success > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #d6e9c6; -} -.panel-info { - border-color: #bce8f1; -} -.panel-info > .panel-heading { - color: #31708f; - background-color: #d9edf7; - border-color: #bce8f1; -} -.panel-info > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #bce8f1; -} -.panel-info > .panel-heading .badge { - color: #d9edf7; - background-color: #31708f; -} -.panel-info > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #bce8f1; -} -.panel-warning { - border-color: #faebcc; -} -.panel-warning > .panel-heading { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #faebcc; -} -.panel-warning > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #faebcc; -} -.panel-warning > .panel-heading .badge { - color: #fcf8e3; - background-color: #8a6d3b; -} -.panel-warning > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #faebcc; -} -.panel-danger { - border-color: #ebccd1; -} -.panel-danger > .panel-heading { - color: #a94442; - background-color: #f2dede; - border-color: #ebccd1; -} -.panel-danger > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #ebccd1; -} -.panel-danger > .panel-heading .badge { - color: #f2dede; - background-color: #a94442; -} -.panel-danger > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #ebccd1; -} -.embed-responsive { - position: relative; - display: block; - height: 0; - padding: 0; - overflow: hidden; -} -.embed-responsive .embed-responsive-item, -.embed-responsive iframe, -.embed-responsive embed, -.embed-responsive object, -.embed-responsive video { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 100%; - height: 100%; - border: 0; -} -.embed-responsive.embed-responsive-16by9 { - padding-bottom: 56.25%; -} -.embed-responsive.embed-responsive-4by3 { - padding-bottom: 75%; -} -.well { - min-height: 20px; - padding: 19px; - margin-bottom: 20px; - background-color: #f5f5f5; - border: 1px solid #e3e3e3; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); -} -.well blockquote { - border-color: #ddd; - border-color: rgba(0, 0, 0, .15); -} -.well-lg { - padding: 24px; - border-radius: 6px; -} -.well-sm { - padding: 9px; - border-radius: 3px; -} -.close { - float: right; - font-size: 21px; - font-weight: bold; - line-height: 1; - color: #000; - text-shadow: 0 1px 0 #fff; - filter: alpha(opacity=20); - opacity: .2; -} -.close:hover, -.close:focus { - color: #000; - text-decoration: none; - cursor: pointer; - filter: alpha(opacity=50); - opacity: .5; -} -button.close { - -webkit-appearance: none; - padding: 0; - cursor: pointer; - background: transparent; - border: 0; -} -.modal-open { - overflow: hidden; -} -.modal { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1040; - display: none; - overflow: hidden; - -webkit-overflow-scrolling: touch; - outline: 0; -} -.modal.fade .modal-dialog { - -webkit-transition: -webkit-transform .3s ease-out; - -o-transition: -o-transform .3s ease-out; - transition: transform .3s ease-out; - -webkit-transform: translate(0, -25%); - -ms-transform: translate(0, -25%); - -o-transform: translate(0, -25%); - transform: translate(0, -25%); -} -.modal.in .modal-dialog { - -webkit-transform: translate(0, 0); - -ms-transform: translate(0, 0); - -o-transform: translate(0, 0); - transform: translate(0, 0); -} -.modal-open .modal { - overflow-x: hidden; - overflow-y: auto; -} -.modal-dialog { - position: relative; - width: auto; - margin: 10px; -} -.modal-content { - position: relative; - background-color: #fff; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: 1px solid #999; - border: 1px solid rgba(0, 0, 0, .2); - border-radius: 6px; - outline: 0; - -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); - box-shadow: 0 3px 9px rgba(0, 0, 0, .5); -} -.modal-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - background-color: #000; -} -.modal-backdrop.fade { - filter: alpha(opacity=0); - opacity: 0; -} -.modal-backdrop.in { - filter: alpha(opacity=50); - opacity: .5; -} -.modal-header { - min-height: 16.42857143px; - padding: 15px; - border-bottom: 1px solid #e5e5e5; -} -.modal-header .close { - margin-top: -2px; -} -.modal-title { - margin: 0; - line-height: 1.42857143; -} -.modal-body { - position: relative; - padding: 15px; -} -.modal-footer { - padding: 15px; - text-align: right; - border-top: 1px solid #e5e5e5; -} -.modal-footer .btn + .btn { - margin-bottom: 0; - margin-left: 5px; -} -.modal-footer .btn-group .btn + .btn { - margin-left: -1px; -} -.modal-footer .btn-block + .btn-block { - margin-left: 0; -} -.modal-scrollbar-measure { - position: absolute; - top: -9999px; - width: 50px; - height: 50px; - overflow: scroll; -} -@media (min-width: 768px) { - .modal-dialog { - width: 600px; - margin: 30px auto; - } - .modal-content { - -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); - box-shadow: 0 5px 15px rgba(0, 0, 0, .5); - } - .modal-sm { - width: 300px; - } -} -@media (min-width: 992px) { - .modal-lg { - width: 900px; - } -} -.tooltip { - position: absolute; - z-index: 1070; - display: block; - font-size: 12px; - line-height: 1.4; - visibility: visible; - filter: alpha(opacity=0); - opacity: 0; -} -.tooltip.in { - filter: alpha(opacity=90); - opacity: .9; -} -.tooltip.top { - padding: 5px 0; - margin-top: -3px; -} -.tooltip.right { - padding: 0 5px; - margin-left: 3px; -} -.tooltip.bottom { - padding: 5px 0; - margin-top: 3px; -} -.tooltip.left { - padding: 0 5px; - margin-left: -3px; -} -.tooltip-inner { - max-width: 200px; - padding: 3px 8px; - color: #fff; - text-align: center; - text-decoration: none; - background-color: #000; - border-radius: 4px; -} -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.tooltip.top .tooltip-arrow { - bottom: 0; - left: 50%; - margin-left: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.top-left .tooltip-arrow { - bottom: 0; - left: 5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.top-right .tooltip-arrow { - right: 5px; - bottom: 0; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -5px; - border-width: 5px 5px 5px 0; - border-right-color: #000; -} -.tooltip.left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -5px; - border-width: 5px 0 5px 5px; - border-left-color: #000; -} -.tooltip.bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.tooltip.bottom-left .tooltip-arrow { - top: 0; - left: 5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.tooltip.bottom-right .tooltip-arrow { - top: 0; - right: 5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1060; - display: none; - max-width: 276px; - padding: 1px; - font-size: 14px; - font-weight: normal; - line-height: 1.42857143; - text-align: left; - white-space: normal; - background-color: #fff; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, .2); - border-radius: 6px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2); - box-shadow: 0 5px 10px rgba(0, 0, 0, .2); -} -.popover.top { - margin-top: -10px; -} -.popover.right { - margin-left: 10px; -} -.popover.bottom { - margin-top: 10px; -} -.popover.left { - margin-left: -10px; -} -.popover-title { - padding: 8px 14px; - margin: 0; - font-size: 14px; - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - border-radius: 5px 5px 0 0; -} -.popover-content { - padding: 9px 14px; -} -.popover > .arrow, -.popover > .arrow:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.popover > .arrow { - border-width: 11px; -} -.popover > .arrow:after { - content: ""; - border-width: 10px; -} -.popover.top > .arrow { - bottom: -11px; - left: 50%; - margin-left: -11px; - border-top-color: #999; - border-top-color: rgba(0, 0, 0, .25); - border-bottom-width: 0; -} -.popover.top > .arrow:after { - bottom: 1px; - margin-left: -10px; - content: " "; - border-top-color: #fff; - border-bottom-width: 0; -} -.popover.right > .arrow { - top: 50%; - left: -11px; - margin-top: -11px; - border-right-color: #999; - border-right-color: rgba(0, 0, 0, .25); - border-left-width: 0; -} -.popover.right > .arrow:after { - bottom: -10px; - left: 1px; - content: " "; - border-right-color: #fff; - border-left-width: 0; -} -.popover.bottom > .arrow { - top: -11px; - left: 50%; - margin-left: -11px; - border-top-width: 0; - border-bottom-color: #999; - border-bottom-color: rgba(0, 0, 0, .25); -} -.popover.bottom > .arrow:after { - top: 1px; - margin-left: -10px; - content: " "; - border-top-width: 0; - border-bottom-color: #fff; -} -.popover.left > .arrow { - top: 50%; - right: -11px; - margin-top: -11px; - border-right-width: 0; - border-left-color: #999; - border-left-color: rgba(0, 0, 0, .25); -} -.popover.left > .arrow:after { - right: 1px; - bottom: -10px; - content: " "; - border-right-width: 0; - border-left-color: #fff; -} -.carousel { - position: relative; -} -.carousel-inner { - position: relative; - width: 100%; - overflow: hidden; -} -.carousel-inner > .item { - position: relative; - display: none; - -webkit-transition: .6s ease-in-out left; - -o-transition: .6s ease-in-out left; - transition: .6s ease-in-out left; -} -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - line-height: 1; -} -@media all and (transform-3d), (-webkit-transform-3d) { - .carousel-inner > .item { - -webkit-transition: -webkit-transform .6s ease-in-out; - -o-transition: -o-transform .6s ease-in-out; - transition: transform .6s ease-in-out; - - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-perspective: 1000; - perspective: 1000; - } - .carousel-inner > .item.next, - .carousel-inner > .item.active.right { - left: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } - .carousel-inner > .item.prev, - .carousel-inner > .item.active.left { - left: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } - .carousel-inner > .item.next.left, - .carousel-inner > .item.prev.right, - .carousel-inner > .item.active { - left: 0; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} -.carousel-inner > .active, -.carousel-inner > .next, -.carousel-inner > .prev { - display: block; -} -.carousel-inner > .active { - left: 0; -} -.carousel-inner > .next, -.carousel-inner > .prev { - position: absolute; - top: 0; - width: 100%; -} -.carousel-inner > .next { - left: 100%; -} -.carousel-inner > .prev { - left: -100%; -} -.carousel-inner > .next.left, -.carousel-inner > .prev.right { - left: 0; -} -.carousel-inner > .active.left { - left: -100%; -} -.carousel-inner > .active.right { - left: 100%; -} -.carousel-control { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 15%; - font-size: 20px; - color: #fff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, .6); - filter: alpha(opacity=50); - opacity: .5; -} -.carousel-control.left { - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); - background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001))); - background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); - background-repeat: repeat-x; -} -.carousel-control.right { - right: 0; - left: auto; - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); - background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5))); - background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); - background-repeat: repeat-x; -} -.carousel-control:hover, -.carousel-control:focus { - color: #fff; - text-decoration: none; - filter: alpha(opacity=90); - outline: 0; - opacity: .9; -} -.carousel-control .icon-prev, -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-left, -.carousel-control .glyphicon-chevron-right { - position: absolute; - top: 50%; - z-index: 5; - display: inline-block; -} -.carousel-control .icon-prev, -.carousel-control .glyphicon-chevron-left { - left: 50%; - margin-left: -10px; -} -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-right { - right: 50%; - margin-right: -10px; -} -.carousel-control .icon-prev, -.carousel-control .icon-next { - width: 20px; - height: 20px; - margin-top: -10px; - font-family: serif; -} -.carousel-control .icon-prev:before { - content: '\2039'; -} -.carousel-control .icon-next:before { - content: '\203a'; -} -.carousel-indicators { - position: absolute; - bottom: 10px; - left: 50%; - z-index: 15; - width: 60%; - padding-left: 0; - margin-left: -30%; - text-align: center; - list-style: none; -} -.carousel-indicators li { - display: inline-block; - width: 10px; - height: 10px; - margin: 1px; - text-indent: -999px; - cursor: pointer; - background-color: #000 \9; - background-color: rgba(0, 0, 0, 0); - border: 1px solid #fff; - border-radius: 10px; -} -.carousel-indicators .active { - width: 12px; - height: 12px; - margin: 0; - background-color: #fff; -} -.carousel-caption { - position: absolute; - right: 15%; - bottom: 20px; - left: 15%; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: #fff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, .6); -} -.carousel-caption .btn { - text-shadow: none; -} -@media screen and (min-width: 768px) { - .carousel-control .glyphicon-chevron-left, - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-prev, - .carousel-control .icon-next { - width: 30px; - height: 30px; - margin-top: -15px; - font-size: 30px; - } - .carousel-control .glyphicon-chevron-left, - .carousel-control .icon-prev { - margin-left: -15px; - } - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-next { - margin-right: -15px; - } - .carousel-caption { - right: 20%; - left: 20%; - padding-bottom: 30px; - } - .carousel-indicators { - bottom: 20px; - } -} -.clearfix:before, -.clearfix:after, -.dl-horizontal dd:before, -.dl-horizontal dd:after, -.container:before, -.container:after, -.container-fluid:before, -.container-fluid:after, -.row:before, -.row:after, -.form-horizontal .form-group:before, -.form-horizontal .form-group:after, -.btn-toolbar:before, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:before, -.btn-group-vertical > .btn-group:after, -.nav:before, -.nav:after, -.navbar:before, -.navbar:after, -.navbar-header:before, -.navbar-header:after, -.navbar-collapse:before, -.navbar-collapse:after, -.pager:before, -.pager:after, -.panel-body:before, -.panel-body:after, -.modal-footer:before, -.modal-footer:after { - display: table; - content: " "; -} -.clearfix:after, -.dl-horizontal dd:after, -.container:after, -.container-fluid:after, -.row:after, -.form-horizontal .form-group:after, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:after, -.nav:after, -.navbar:after, -.navbar-header:after, -.navbar-collapse:after, -.pager:after, -.panel-body:after, -.modal-footer:after { - clear: both; -} -.center-block { - display: block; - margin-right: auto; - margin-left: auto; -} -.pull-right { - float: right !important; -} -.pull-left { - float: left !important; -} -.hide { - display: none !important; -} -.show { - display: block !important; -} -.invisible { - visibility: hidden; -} -.text-hide { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} -.hidden { - display: none !important; - visibility: hidden !important; -} -.affix { - position: fixed; -} -@-ms-viewport { - width: device-width; -} -.visible-xs, -.visible-sm, -.visible-md, -.visible-lg { - display: none !important; -} -.visible-xs-block, -.visible-xs-inline, -.visible-xs-inline-block, -.visible-sm-block, -.visible-sm-inline, -.visible-sm-inline-block, -.visible-md-block, -.visible-md-inline, -.visible-md-inline-block, -.visible-lg-block, -.visible-lg-inline, -.visible-lg-inline-block { - display: none !important; -} -@media (max-width: 767px) { - .visible-xs { - display: block !important; - } - table.visible-xs { - display: table; - } - tr.visible-xs { - display: table-row !important; - } - th.visible-xs, - td.visible-xs { - display: table-cell !important; - } -} -@media (max-width: 767px) { - .visible-xs-block { - display: block !important; - } -} -@media (max-width: 767px) { - .visible-xs-inline { - display: inline !important; - } -} -@media (max-width: 767px) { - .visible-xs-inline-block { - display: inline-block !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm { - display: block !important; - } - table.visible-sm { - display: table; - } - tr.visible-sm { - display: table-row !important; - } - th.visible-sm, - td.visible-sm { - display: table-cell !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-block { - display: block !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-inline { - display: inline !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-inline-block { - display: inline-block !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md { - display: block !important; - } - table.visible-md { - display: table; - } - tr.visible-md { - display: table-row !important; - } - th.visible-md, - td.visible-md { - display: table-cell !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-block { - display: block !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-inline { - display: inline !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-inline-block { - display: inline-block !important; - } -} -@media (min-width: 1200px) { - .visible-lg { - display: block !important; - } - table.visible-lg { - display: table; - } - tr.visible-lg { - display: table-row !important; - } - th.visible-lg, - td.visible-lg { - display: table-cell !important; - } -} -@media (min-width: 1200px) { - .visible-lg-block { - display: block !important; - } -} -@media (min-width: 1200px) { - .visible-lg-inline { - display: inline !important; - } -} -@media (min-width: 1200px) { - .visible-lg-inline-block { - display: inline-block !important; - } -} -@media (max-width: 767px) { - .hidden-xs { - display: none !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .hidden-sm { - display: none !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .hidden-md { - display: none !important; - } -} -@media (min-width: 1200px) { - .hidden-lg { - display: none !important; - } -} -.visible-print { - display: none !important; -} -@media print { - .visible-print { - display: block !important; - } - table.visible-print { - display: table; - } - tr.visible-print { - display: table-row !important; - } - th.visible-print, - td.visible-print { - display: table-cell !important; - } -} -.visible-print-block { - display: none !important; -} -@media print { - .visible-print-block { - display: block !important; - } -} -.visible-print-inline { - display: none !important; -} -@media print { - .visible-print-inline { - display: inline !important; - } -} -.visible-print-inline-block { - display: none !important; -} -@media print { - .visible-print-inline-block { - display: inline-block !important; - } -} -@media print { - .hidden-print { - display: none !important; - } -} -/*# sourceMappingURL=bootstrap.css.map */ diff --git a/assets/css/bootstrap.min.css b/assets/css/bootstrap.min.css deleted file mode 100644 index 4af8905e..00000000 --- a/assets/css/bootstrap.min.css +++ /dev/null @@ -1,5 +0,0 @@ -/*! - * Bootstrap v3.3.0 (http://getbootstrap.com) - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:before,:after{color:#000!important;text-shadow:none!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{line-height:34px;line-height:1.42857143 \0}input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px;line-height:1.5 \0}input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px;line-height:1.33 \0}_:-ms-fullscreen,:root input[type=date],_:-ms-fullscreen,:root input[type=time],_:-ms-fullscreen,:root input[type=datetime-local],_:-ms-fullscreen,:root input[type=month]{line-height:1.42857143}_:-ms-fullscreen.input-sm,:root input[type=date].input-sm,_:-ms-fullscreen.input-sm,:root input[type=time].input-sm,_:-ms-fullscreen.input-sm,:root input[type=datetime-local].input-sm,_:-ms-fullscreen.input-sm,:root input[type=month].input-sm{line-height:1.5}_:-ms-fullscreen.input-lg,:root input[type=date].input-lg,_:-ms-fullscreen.input-lg,:root input[type=time].input-lg,_:-ms-fullscreen.input-lg,:root input[type=datetime-local].input-lg,_:-ms-fullscreen.input-lg,:root input[type=month].input-lg{line-height:1.33}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{position:absolute;margin-top:4px \9;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled],input[type=checkbox][disabled],input[type=radio].disabled,input[type=checkbox].disabled,fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm,.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm,select.form-group-sm .form-control{height:30px;line-height:30px}textarea.input-sm,textarea.form-group-sm .form-control,select[multiple].input-sm,select[multiple].form-group-sm .form-control{height:auto}.input-lg,.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg,select.form-group-lg .form-control{height:46px;line-height:46px}textarea.input-lg,textarea.form-group-lg .form-control,select[multiple].input-lg,select[multiple].form-group-lg .form-control{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.3px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default.focus,.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary.focus,.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#3071a9;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success.focus,.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info.focus,.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning.focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger.focus,.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#428bca;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none;visibility:hidden}.collapse.in{display:block;visibility:visible}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#428bca;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=radio],[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none;visibility:hidden}.tab-content>.active{display:block;visibility:visible}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important;visibility:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#428bca;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#428bca;border-color:#428bca}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding:48px 0}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-right:15px;padding-left:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#428bca}.panel-primary>.panel-heading .badge{color:#428bca;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-size:12px;line-height:1.4;visibility:visible;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-size:14px;font-weight:400;line-height:1.42857143;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;perspective:1000}.carousel-inner>.item.next,.carousel-inner>.item.active.right{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{display:table;content:" "}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} \ No newline at end of file diff --git a/assets/css/patterns/congruent_pentagon.png b/assets/css/patterns/congruent_pentagon.png deleted file mode 100644 index c7126603..00000000 Binary files a/assets/css/patterns/congruent_pentagon.png and /dev/null differ diff --git a/assets/css/patterns/header-profile-skin-1.png b/assets/css/patterns/header-profile-skin-1.png deleted file mode 100644 index 41c5c089..00000000 Binary files a/assets/css/patterns/header-profile-skin-1.png and /dev/null differ diff --git a/assets/css/patterns/header-profile-skin-2.png b/assets/css/patterns/header-profile-skin-2.png deleted file mode 100644 index df46d46e..00000000 Binary files a/assets/css/patterns/header-profile-skin-2.png and /dev/null differ diff --git a/assets/css/patterns/header-profile-skin-3.png b/assets/css/patterns/header-profile-skin-3.png deleted file mode 100644 index 7a80132d..00000000 Binary files a/assets/css/patterns/header-profile-skin-3.png and /dev/null differ diff --git a/assets/css/patterns/header-profile.png b/assets/css/patterns/header-profile.png deleted file mode 100644 index 7dea7f2c..00000000 Binary files a/assets/css/patterns/header-profile.png and /dev/null differ diff --git a/assets/css/patterns/otis_redding.png b/assets/css/patterns/otis_redding.png deleted file mode 100644 index 7fa3533a..00000000 Binary files a/assets/css/patterns/otis_redding.png and /dev/null differ diff --git a/assets/css/patterns/shattered.png b/assets/css/patterns/shattered.png deleted file mode 100644 index 90ed42b8..00000000 Binary files a/assets/css/patterns/shattered.png and /dev/null differ diff --git a/assets/css/patterns/triangular.png b/assets/css/patterns/triangular.png deleted file mode 100644 index 7f41795c..00000000 Binary files a/assets/css/patterns/triangular.png and /dev/null differ diff --git a/assets/css/plugins/blueimp/css/blueimp-gallery-indicator.css b/assets/css/plugins/blueimp/css/blueimp-gallery-indicator.css deleted file mode 100644 index e47171a3..00000000 --- a/assets/css/plugins/blueimp/css/blueimp-gallery-indicator.css +++ /dev/null @@ -1,71 +0,0 @@ -@charset "UTF-8"; -/* - * blueimp Gallery Indicator CSS 1.1.0 - * https://github.com/blueimp/Gallery - * - * Copyright 2013, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/MIT - */ - -.blueimp-gallery > .indicator { - position: absolute; - top: auto; - right: 15px; - bottom: 15px; - left: 15px; - margin: 0 40px; - padding: 0; - list-style: none; - text-align: center; - line-height: 10px; - display: none; -} -.blueimp-gallery > .indicator > li { - display: inline-block; - width: 9px; - height: 9px; - margin: 6px 3px 0 3px; - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; - border: 1px solid transparent; - background: #ccc; - background: rgba(255, 255, 255, 0.25) center no-repeat; - border-radius: 5px; - box-shadow: 0 0 2px #000; - opacity: 0.5; - cursor: pointer; -} -.blueimp-gallery > .indicator > li:hover, -.blueimp-gallery > .indicator > .active { - background-color: #fff; - border-color: #fff; - opacity: 1; -} -.blueimp-gallery-controls > .indicator { - display: block; - /* Fix z-index issues (controls behind slide element) on Android: */ - -webkit-transform: translateZ(0); - -moz-transform: translateZ(0); - -ms-transform: translateZ(0); - -o-transform: translateZ(0); - transform: translateZ(0); -} -.blueimp-gallery-single > .indicator { - display: none; -} -.blueimp-gallery > .indicator { - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -/* IE7 fixes */ -*+html .blueimp-gallery > .indicator > li { - display: inline; -} diff --git a/assets/css/plugins/blueimp/css/blueimp-gallery-video.css b/assets/css/plugins/blueimp/css/blueimp-gallery-video.css deleted file mode 100644 index 59695647..00000000 --- a/assets/css/plugins/blueimp/css/blueimp-gallery-video.css +++ /dev/null @@ -1,87 +0,0 @@ -@charset "UTF-8"; -/* - * blueimp Gallery Video Factory CSS 1.3.0 - * https://github.com/blueimp/Gallery - * - * Copyright 2013, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/MIT - */ - -.blueimp-gallery > .slides > .slide > .video-content > img { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - margin: auto; - width: auto; - height: auto; - max-width: 100%; - max-height: 100%; - /* Prevent artifacts in Mozilla Firefox: */ - -moz-backface-visibility: hidden; -} -.blueimp-gallery > .slides > .slide > .video-content > video { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; -} -.blueimp-gallery > .slides > .slide > .video-content > iframe { - position: absolute; - top: 100%; - left: 0; - width: 100%; - height: 100%; - border: none; -} -.blueimp-gallery > .slides > .slide > .video-playing > iframe { - top: 0; -} -.blueimp-gallery > .slides > .slide > .video-content > a { - position: absolute; - top: 50%; - right: 0; - left: 0; - margin: -64px auto 0; - width: 128px; - height: 128px; - background: url(../img/video-play.png) center no-repeat; - opacity: 0.8; - cursor: pointer; -} -.blueimp-gallery > .slides > .slide > .video-content > a:hover { - opacity: 1; -} -.blueimp-gallery > .slides > .slide > .video-playing > a, -.blueimp-gallery > .slides > .slide > .video-playing > img { - display: none; -} -.blueimp-gallery > .slides > .slide > .video-content > video { - display: none; -} -.blueimp-gallery > .slides > .slide > .video-playing > video { - display: block; -} -.blueimp-gallery > .slides > .slide > .video-loading > a { - background: url(../img/loading.gif) center no-repeat; - background-size: 64px 64px; -} - -/* Replace PNGs with SVGs for capable browsers (excluding IE<9) */ -body:last-child .blueimp-gallery > .slides > .slide > .video-content:not(.video-loading) > a { - background-image: url(../img/video-play.svg); -} - -/* IE7 fixes */ -*+html .blueimp-gallery > .slides > .slide > .video-content { - height: 100%; -} -*+html .blueimp-gallery > .slides > .slide > .video-content > a { - left: 50%; - margin-left: -64px; -} diff --git a/assets/css/plugins/blueimp/css/blueimp-gallery.css b/assets/css/plugins/blueimp/css/blueimp-gallery.css deleted file mode 100644 index b860d786..00000000 --- a/assets/css/plugins/blueimp/css/blueimp-gallery.css +++ /dev/null @@ -1,226 +0,0 @@ -@charset "UTF-8"; -/* - * blueimp Gallery CSS 2.11.1 - * https://github.com/blueimp/Gallery - * - * Copyright 2013, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/MIT - */ - -.blueimp-gallery, -.blueimp-gallery > .slides > .slide > .slide-content { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - /* Prevent artifacts in Mozilla Firefox: */ - -moz-backface-visibility: hidden; -} -.blueimp-gallery > .slides > .slide > .slide-content { - margin: auto; - width: auto; - height: auto; - max-width: 100%; - max-height: 100%; - opacity: 1; -} -.blueimp-gallery { - position: fixed; - z-index: 999999; - overflow: hidden; - background: #000; - background: rgba(0, 0, 0, 0.9); - opacity: 0; - display: none; - direction: ltr; - -ms-touch-action: none; - touch-action: none; -} -.blueimp-gallery-carousel { - position: relative; - z-index: auto; - margin: 1em auto; - /* Set the carousel width/height ratio to 16/9: */ - padding-bottom: 56.25%; - box-shadow: 0 0 10px #000; - -ms-touch-action: pan-y; - touch-action: pan-y; -} -.blueimp-gallery-display { - display: block; - opacity: 1; -} -.blueimp-gallery > .slides { - position: relative; - height: 100%; - overflow: hidden; -} -.blueimp-gallery-carousel > .slides { - position: absolute; -} -.blueimp-gallery > .slides > .slide { - position: relative; - float: left; - height: 100%; - text-align: center; - -webkit-transition-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1.000); - -moz-transition-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1.000); - -ms-transition-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1.000); - -o-transition-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1.000); - transition-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1.000); -} -.blueimp-gallery, -.blueimp-gallery > .slides > .slide > .slide-content { - -webkit-transition: opacity 0.5s linear; - -moz-transition: opacity 0.5s linear; - -ms-transition: opacity 0.5s linear; - -o-transition: opacity 0.5s linear; - transition: opacity 0.5s linear; -} -.blueimp-gallery > .slides > .slide-loading { - background: url(../img/loading.gif) center no-repeat; - background-size: 64px 64px; -} -.blueimp-gallery > .slides > .slide-loading > .slide-content { - opacity: 0; -} -.blueimp-gallery > .slides > .slide-error { - background: url(../img/error.png) center no-repeat; -} -.blueimp-gallery > .slides > .slide-error > .slide-content { - display: none; -} -.blueimp-gallery > .prev, -.blueimp-gallery > .next { - position: absolute; - top: 50%; - left: 15px; - width: 40px; - height: 40px; - margin-top: -23px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 60px; - font-weight: 100; - line-height: 30px; - color: #fff; - text-decoration: none; - text-shadow: 0 0 2px #000; - text-align: center; - background: #222; - background: rgba(0, 0, 0, 0.5); - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; - border: 3px solid #fff; - -webkit-border-radius: 23px; - -moz-border-radius: 23px; - border-radius: 23px; - opacity: 0.5; - cursor: pointer; - display: none; -} -.blueimp-gallery > .next { - left: auto; - right: 15px; -} -.blueimp-gallery > .close, -.blueimp-gallery > .title { - position: absolute; - top: 15px; - left: 15px; - margin: 0 40px 0 0; - font-size: 20px; - line-height: 30px; - color: #fff; - text-shadow: 0 0 2px #000; - opacity: 0.8; - display: none; -} -.blueimp-gallery > .close { - padding: 15px; - right: 15px; - left: auto; - margin: -15px; - font-size: 30px; - text-decoration: none; - cursor: pointer; -} -.blueimp-gallery > .play-pause { - position: absolute; - right: 15px; - bottom: 15px; - width: 15px; - height: 15px; - background: url(../img/play-pause.png) 0 0 no-repeat; - cursor: pointer; - opacity: 0.5; - display: none; -} -.blueimp-gallery-playing > .play-pause { - background-position: -15px 0; -} -.blueimp-gallery > .prev:hover, -.blueimp-gallery > .next:hover, -.blueimp-gallery > .close:hover, -.blueimp-gallery > .title:hover, -.blueimp-gallery > .play-pause:hover { - color: #fff; - opacity: 1; -} -.blueimp-gallery-controls > .prev, -.blueimp-gallery-controls > .next, -.blueimp-gallery-controls > .close, -.blueimp-gallery-controls > .title, -.blueimp-gallery-controls > .play-pause { - display: block; - /* Fix z-index issues (controls behind slide element) on Android: */ - -webkit-transform: translateZ(0); - -moz-transform: translateZ(0); - -ms-transform: translateZ(0); - -o-transform: translateZ(0); - transform: translateZ(0); -} -.blueimp-gallery-single > .prev, -.blueimp-gallery-left > .prev, -.blueimp-gallery-single > .next, -.blueimp-gallery-right > .next, -.blueimp-gallery-single > .play-pause { - display: none; -} -.blueimp-gallery > .slides > .slide > .slide-content, -.blueimp-gallery > .prev, -.blueimp-gallery > .next, -.blueimp-gallery > .close, -.blueimp-gallery > .play-pause { - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -/* Replace PNGs with SVGs for capable browsers (excluding IE<9) */ -body:last-child .blueimp-gallery > .slides > .slide-error { - background-image: url(../img/error.svg); -} -body:last-child .blueimp-gallery > .play-pause { - width: 20px; - height: 20px; - background-size: 40px 20px; - background-image: url(../img/play-pause.svg); -} -body:last-child .blueimp-gallery-playing > .play-pause { - background-position: -20px 0; -} - -/* IE7 fixes */ -*+html .blueimp-gallery > .slides > .slide { - min-height: 300px; -} -*+html .blueimp-gallery > .slides > .slide > .slide-content { - position: relative; -} diff --git a/assets/css/plugins/blueimp/css/blueimp-gallery.min.css b/assets/css/plugins/blueimp/css/blueimp-gallery.min.css deleted file mode 100644 index c65eaa05..00000000 --- a/assets/css/plugins/blueimp/css/blueimp-gallery.min.css +++ /dev/null @@ -1 +0,0 @@ -@charset "UTF-8";.blueimp-gallery,.blueimp-gallery>.slides>.slide>.slide-content{position:absolute;top:0;right:0;bottom:0;left:0;-moz-backface-visibility:hidden}.blueimp-gallery>.slides>.slide>.slide-content{margin:auto;width:auto;height:auto;max-width:100%;max-height:100%;opacity:1}.blueimp-gallery{position:fixed;z-index:999999;overflow:hidden;background:#000;background:rgba(0,0,0,.9);opacity:0;display:none;direction:ltr;-ms-touch-action:none;touch-action:none}.blueimp-gallery-carousel{position:relative;z-index:auto;margin:1em auto;padding-bottom:56.25%;box-shadow:0 0 10px #000;-ms-touch-action:pan-y;touch-action:pan-y}.blueimp-gallery-display{display:block;opacity:1}.blueimp-gallery>.slides{position:relative;height:100%;overflow:hidden}.blueimp-gallery-carousel>.slides{position:absolute}.blueimp-gallery>.slides>.slide{position:relative;float:left;height:100%;text-align:center;-webkit-transition-timing-function:cubic-bezier(0.645,.045,.355,1);-moz-transition-timing-function:cubic-bezier(0.645,.045,.355,1);-ms-transition-timing-function:cubic-bezier(0.645,.045,.355,1);-o-transition-timing-function:cubic-bezier(0.645,.045,.355,1);transition-timing-function:cubic-bezier(0.645,.045,.355,1)}.blueimp-gallery,.blueimp-gallery>.slides>.slide>.slide-content{-webkit-transition:opacity .5s linear;-moz-transition:opacity .5s linear;-ms-transition:opacity .5s linear;-o-transition:opacity .5s linear;transition:opacity .5s linear}.blueimp-gallery>.slides>.slide-loading{background:url(../img/loading.gif) center no-repeat;background-size:64px 64px}.blueimp-gallery>.slides>.slide-loading>.slide-content{opacity:0}.blueimp-gallery>.slides>.slide-error{background:url(../img/error.png) center no-repeat}.blueimp-gallery>.slides>.slide-error>.slide-content{display:none}.blueimp-gallery>.prev,.blueimp-gallery>.next{position:absolute;top:50%;left:15px;width:40px;height:40px;margin-top:-23px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:60px;font-weight:100;line-height:30px;color:#fff;text-decoration:none;text-shadow:0 0 2px #000;text-align:center;background:#222;background:rgba(0,0,0,.5);-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;border:3px solid #fff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:.5;cursor:pointer;display:none}.blueimp-gallery>.next{left:auto;right:15px}.blueimp-gallery>.close,.blueimp-gallery>.title{position:absolute;top:15px;left:15px;margin:0 40px 0 0;font-size:20px;line-height:30px;color:#fff;text-shadow:0 0 2px #000;opacity:.8;display:none}.blueimp-gallery>.close{padding:15px;right:15px;left:auto;margin:-15px;font-size:30px;text-decoration:none;cursor:pointer}.blueimp-gallery>.play-pause{position:absolute;right:15px;bottom:15px;width:15px;height:15px;background:url(../img/play-pause.png) 0 0 no-repeat;cursor:pointer;opacity:.5;display:none}.blueimp-gallery-playing>.play-pause{background-position:-15px 0}.blueimp-gallery>.prev:hover,.blueimp-gallery>.next:hover,.blueimp-gallery>.close:hover,.blueimp-gallery>.title:hover,.blueimp-gallery>.play-pause:hover{color:#fff;opacity:1}.blueimp-gallery-controls>.prev,.blueimp-gallery-controls>.next,.blueimp-gallery-controls>.close,.blueimp-gallery-controls>.title,.blueimp-gallery-controls>.play-pause{display:block;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.blueimp-gallery-single>.prev,.blueimp-gallery-left>.prev,.blueimp-gallery-single>.next,.blueimp-gallery-right>.next,.blueimp-gallery-single>.play-pause{display:none}.blueimp-gallery>.slides>.slide>.slide-content,.blueimp-gallery>.prev,.blueimp-gallery>.next,.blueimp-gallery>.close,.blueimp-gallery>.play-pause{-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body:last-child .blueimp-gallery>.slides>.slide-error{background-image:url(../img/error.svg)}body:last-child .blueimp-gallery>.play-pause{width:20px;height:20px;background-size:40px 20px;background-image:url(../img/play-pause.svg)}body:last-child .blueimp-gallery-playing>.play-pause{background-position:-20px 0}*+html .blueimp-gallery>.slides>.slide{min-height:300px}*+html .blueimp-gallery>.slides>.slide>.slide-content{position:relative}@charset "UTF-8";.blueimp-gallery>.indicator{position:absolute;top:auto;right:15px;bottom:15px;left:15px;margin:0 40px;padding:0;list-style:none;text-align:center;line-height:10px;display:none}.blueimp-gallery>.indicator>li{display:inline-block;width:9px;height:9px;margin:6px 3px 0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;border:1px solid transparent;background:#ccc;background:rgba(255,255,255,.25)center no-repeat;border-radius:5px;box-shadow:0 0 2px #000;opacity:.5;cursor:pointer}.blueimp-gallery>.indicator>li:hover,.blueimp-gallery>.indicator>.active{background-color:#fff;border-color:#fff;opacity:1}.blueimp-gallery-controls>.indicator{display:block;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.blueimp-gallery-single>.indicator{display:none}.blueimp-gallery>.indicator{-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}*+html .blueimp-gallery>.indicator>li{display:inline}@charset "UTF-8";.blueimp-gallery>.slides>.slide>.video-content>img{position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;width:auto;height:auto;max-width:100%;max-height:100%;-moz-backface-visibility:hidden}.blueimp-gallery>.slides>.slide>.video-content>video{position:absolute;top:0;left:0;width:100%;height:100%}.blueimp-gallery>.slides>.slide>.video-content>iframe{position:absolute;top:100%;left:0;width:100%;height:100%;border:none}.blueimp-gallery>.slides>.slide>.video-playing>iframe{top:0}.blueimp-gallery>.slides>.slide>.video-content>a{position:absolute;top:50%;right:0;left:0;margin:-64px auto 0;width:128px;height:128px;background:url(../img/video-play.png) center no-repeat;opacity:.8;cursor:pointer}.blueimp-gallery>.slides>.slide>.video-content>a:hover{opacity:1}.blueimp-gallery>.slides>.slide>.video-playing>a,.blueimp-gallery>.slides>.slide>.video-playing>img{display:none}.blueimp-gallery>.slides>.slide>.video-content>video{display:none}.blueimp-gallery>.slides>.slide>.video-playing>video{display:block}.blueimp-gallery>.slides>.slide>.video-loading>a{background:url(../img/loading.gif) center no-repeat;background-size:64px 64px}body:last-child .blueimp-gallery>.slides>.slide>.video-content:not(.video-loading)>a{background-image:url(../img/video-play.svg)}*+html .blueimp-gallery>.slides>.slide>.video-content{height:100%}*+html .blueimp-gallery>.slides>.slide>.video-content>a{left:50%;margin-left:-64px} \ No newline at end of file diff --git a/assets/css/plugins/blueimp/css/demo.css b/assets/css/plugins/blueimp/css/demo.css deleted file mode 100644 index 7ed6bcc4..00000000 --- a/assets/css/plugins/blueimp/css/demo.css +++ /dev/null @@ -1,51 +0,0 @@ -/* - * blueimp Gallery Demo CSS 2.0.0 - * https://github.com/blueimp/Gallery - * - * Copyright 2013, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/MIT - */ - -body { - max-width: 750px; - margin: 0 auto; - padding: 1em; - font-family: 'Lucida Grande', 'Lucida Sans Unicode', Arial, sans-serif; - font-size: 1em; - line-height: 1.4em; - background: #222; - color: #fff; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; -} -a { - color: orange; - text-decoration: none; -} -img { - border: 0; - vertical-align: middle; -} -h1 { - line-height: 1em; -} -h2, -.links { - text-align: center; -} - -@media (min-width: 481px) { - .navigation { - list-style: none; - padding: 0; - } - .navigation li { - display: inline-block; - } - .navigation li:not(:first-child):before { - content: '| '; - } -} diff --git a/assets/css/plugins/blueimp/img/error.png b/assets/css/plugins/blueimp/img/error.png deleted file mode 100644 index a5577c33..00000000 Binary files a/assets/css/plugins/blueimp/img/error.png and /dev/null differ diff --git a/assets/css/plugins/blueimp/img/error.svg b/assets/css/plugins/blueimp/img/error.svg deleted file mode 100644 index 184206a1..00000000 --- a/assets/css/plugins/blueimp/img/error.svg +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="64" height="64"> - <circle cx="32" cy="32" r="25" stroke="red" stroke-width="7" fill="black" fill-opacity="0.2"/> - <rect x="28" y="7" width="8" height="50" fill="red" transform="rotate(45, 32, 32)"/> -</svg> diff --git a/assets/css/plugins/blueimp/img/loading.gif b/assets/css/plugins/blueimp/img/loading.gif deleted file mode 100644 index 90f28cbd..00000000 Binary files a/assets/css/plugins/blueimp/img/loading.gif and /dev/null differ diff --git a/assets/css/plugins/blueimp/img/play-pause.png b/assets/css/plugins/blueimp/img/play-pause.png deleted file mode 100644 index ece6cfb9..00000000 Binary files a/assets/css/plugins/blueimp/img/play-pause.png and /dev/null differ diff --git a/assets/css/plugins/blueimp/img/play-pause.svg b/assets/css/plugins/blueimp/img/play-pause.svg deleted file mode 100644 index a7f1f50c..00000000 --- a/assets/css/plugins/blueimp/img/play-pause.svg +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="30" height="15"> - <polygon points="2,1 2,14 13,7" stroke="black" stroke-width="1" fill="white"/> - <rect x="17" y="2" width="4" height="11" stroke="black" stroke-width="1" fill="white"/> - <rect x="24" y="2" width="4" height="11" stroke="black" stroke-width="1" fill="white"/> -</svg> diff --git a/assets/css/plugins/blueimp/img/video-play.png b/assets/css/plugins/blueimp/img/video-play.png deleted file mode 100644 index 353e3a59..00000000 Binary files a/assets/css/plugins/blueimp/img/video-play.png and /dev/null differ diff --git a/assets/css/plugins/blueimp/img/video-play.svg b/assets/css/plugins/blueimp/img/video-play.svg deleted file mode 100644 index b5ea206d..00000000 --- a/assets/css/plugins/blueimp/img/video-play.svg +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="64" height="64"> - <circle cx="32" cy="32" r="25" stroke="white" stroke-width="7" fill="black" fill-opacity="0.2"/> - <polygon points="26,22 26,42 43,32" fill="white"/> -</svg> diff --git a/assets/css/plugins/bootstrap-rtl/bootstrap-rtl.css b/assets/css/plugins/bootstrap-rtl/bootstrap-rtl.css deleted file mode 100644 index 404ecf42..00000000 --- a/assets/css/plugins/bootstrap-rtl/bootstrap-rtl.css +++ /dev/null @@ -1,1468 +0,0 @@ -/******************************************************************************* - * bootstrap-rtl (version 3.3.1) - * Author: Morteza Ansarinia (http://github.com/morteza) - * Created on: January 21,2015 - * Project: bootstrap-rtl - * Copyright: Unlicensed Public Domain - *******************************************************************************/ - -html { - direction: rtl; -} -body { - direction: rtl; -} -.list-unstyled { - padding-right: 0; - padding-left: initial; -} -.list-inline { - padding-right: 0; - padding-left: initial; - margin-right: -5px; - margin-left: 0; -} -dd { - margin-right: 0; - margin-left: initial; -} -@media (min-width: 768px) { - .dl-horizontal dt { - float: right; - clear: right; - text-align: left; - } - .dl-horizontal dd { - margin-right: 180px; - margin-left: 0; - } -} -blockquote { - border-right: 5px solid #eeeeee; - border-left: 0; -} -.blockquote-reverse, -blockquote.pull-left { - padding-left: 15px; - padding-right: 0; - border-left: 5px solid #eeeeee; - border-right: 0; - text-align: left; -} -.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { - position: relative; - min-height: 1px; - padding-left: 15px; - padding-right: 15px; -} -.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { - float: right; -} -.col-xs-12 { - width: 100%; -} -.col-xs-11 { - width: 91.66666667%; -} -.col-xs-10 { - width: 83.33333333%; -} -.col-xs-9 { - width: 75%; -} -.col-xs-8 { - width: 66.66666667%; -} -.col-xs-7 { - width: 58.33333333%; -} -.col-xs-6 { - width: 50%; -} -.col-xs-5 { - width: 41.66666667%; -} -.col-xs-4 { - width: 33.33333333%; -} -.col-xs-3 { - width: 25%; -} -.col-xs-2 { - width: 16.66666667%; -} -.col-xs-1 { - width: 8.33333333%; -} -.col-xs-pull-12 { - left: 100%; - right: auto; -} -.col-xs-pull-11 { - left: 91.66666667%; - right: auto; -} -.col-xs-pull-10 { - left: 83.33333333%; - right: auto; -} -.col-xs-pull-9 { - left: 75%; - right: auto; -} -.col-xs-pull-8 { - left: 66.66666667%; - right: auto; -} -.col-xs-pull-7 { - left: 58.33333333%; - right: auto; -} -.col-xs-pull-6 { - left: 50%; - right: auto; -} -.col-xs-pull-5 { - left: 41.66666667%; - right: auto; -} -.col-xs-pull-4 { - left: 33.33333333%; - right: auto; -} -.col-xs-pull-3 { - left: 25%; - right: auto; -} -.col-xs-pull-2 { - left: 16.66666667%; - right: auto; -} -.col-xs-pull-1 { - left: 8.33333333%; - right: auto; -} -.col-xs-pull-0 { - left: auto; - right: auto; -} -.col-xs-push-12 { - right: 100%; - left: 0; -} -.col-xs-push-11 { - right: 91.66666667%; - left: 0; -} -.col-xs-push-10 { - right: 83.33333333%; - left: 0; -} -.col-xs-push-9 { - right: 75%; - left: 0; -} -.col-xs-push-8 { - right: 66.66666667%; - left: 0; -} -.col-xs-push-7 { - right: 58.33333333%; - left: 0; -} -.col-xs-push-6 { - right: 50%; - left: 0; -} -.col-xs-push-5 { - right: 41.66666667%; - left: 0; -} -.col-xs-push-4 { - right: 33.33333333%; - left: 0; -} -.col-xs-push-3 { - right: 25%; - left: 0; -} -.col-xs-push-2 { - right: 16.66666667%; - left: 0; -} -.col-xs-push-1 { - right: 8.33333333%; - left: 0; -} -.col-xs-push-0 { - right: auto; - left: 0; -} -.col-xs-offset-12 { - margin-right: 100%; - margin-left: 0; -} -.col-xs-offset-11 { - margin-right: 91.66666667%; - margin-left: 0; -} -.col-xs-offset-10 { - margin-right: 83.33333333%; - margin-left: 0; -} -.col-xs-offset-9 { - margin-right: 75%; - margin-left: 0; -} -.col-xs-offset-8 { - margin-right: 66.66666667%; - margin-left: 0; -} -.col-xs-offset-7 { - margin-right: 58.33333333%; - margin-left: 0; -} -.col-xs-offset-6 { - margin-right: 50%; - margin-left: 0; -} -.col-xs-offset-5 { - margin-right: 41.66666667%; - margin-left: 0; -} -.col-xs-offset-4 { - margin-right: 33.33333333%; - margin-left: 0; -} -.col-xs-offset-3 { - margin-right: 25%; - margin-left: 0; -} -.col-xs-offset-2 { - margin-right: 16.66666667%; - margin-left: 0; -} -.col-xs-offset-1 { - margin-right: 8.33333333%; - margin-left: 0; -} -.col-xs-offset-0 { - margin-right: 0%; - margin-left: 0; -} -@media (min-width: 768px) { - .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { - float: right; - } - .col-sm-12 { - width: 100%; - } - .col-sm-11 { - width: 91.66666667%; - } - .col-sm-10 { - width: 83.33333333%; - } - .col-sm-9 { - width: 75%; - } - .col-sm-8 { - width: 66.66666667%; - } - .col-sm-7 { - width: 58.33333333%; - } - .col-sm-6 { - width: 50%; - } - .col-sm-5 { - width: 41.66666667%; - } - .col-sm-4 { - width: 33.33333333%; - } - .col-sm-3 { - width: 25%; - } - .col-sm-2 { - width: 16.66666667%; - } - .col-sm-1 { - width: 8.33333333%; - } - .col-sm-pull-12 { - left: 100%; - right: auto; - } - .col-sm-pull-11 { - left: 91.66666667%; - right: auto; - } - .col-sm-pull-10 { - left: 83.33333333%; - right: auto; - } - .col-sm-pull-9 { - left: 75%; - right: auto; - } - .col-sm-pull-8 { - left: 66.66666667%; - right: auto; - } - .col-sm-pull-7 { - left: 58.33333333%; - right: auto; - } - .col-sm-pull-6 { - left: 50%; - right: auto; - } - .col-sm-pull-5 { - left: 41.66666667%; - right: auto; - } - .col-sm-pull-4 { - left: 33.33333333%; - right: auto; - } - .col-sm-pull-3 { - left: 25%; - right: auto; - } - .col-sm-pull-2 { - left: 16.66666667%; - right: auto; - } - .col-sm-pull-1 { - left: 8.33333333%; - right: auto; - } - .col-sm-pull-0 { - left: auto; - right: auto; - } - .col-sm-push-12 { - right: 100%; - left: 0; - } - .col-sm-push-11 { - right: 91.66666667%; - left: 0; - } - .col-sm-push-10 { - right: 83.33333333%; - left: 0; - } - .col-sm-push-9 { - right: 75%; - left: 0; - } - .col-sm-push-8 { - right: 66.66666667%; - left: 0; - } - .col-sm-push-7 { - right: 58.33333333%; - left: 0; - } - .col-sm-push-6 { - right: 50%; - left: 0; - } - .col-sm-push-5 { - right: 41.66666667%; - left: 0; - } - .col-sm-push-4 { - right: 33.33333333%; - left: 0; - } - .col-sm-push-3 { - right: 25%; - left: 0; - } - .col-sm-push-2 { - right: 16.66666667%; - left: 0; - } - .col-sm-push-1 { - right: 8.33333333%; - left: 0; - } - .col-sm-push-0 { - right: auto; - left: 0; - } - .col-sm-offset-12 { - margin-right: 100%; - margin-left: 0; - } - .col-sm-offset-11 { - margin-right: 91.66666667%; - margin-left: 0; - } - .col-sm-offset-10 { - margin-right: 83.33333333%; - margin-left: 0; - } - .col-sm-offset-9 { - margin-right: 75%; - margin-left: 0; - } - .col-sm-offset-8 { - margin-right: 66.66666667%; - margin-left: 0; - } - .col-sm-offset-7 { - margin-right: 58.33333333%; - margin-left: 0; - } - .col-sm-offset-6 { - margin-right: 50%; - margin-left: 0; - } - .col-sm-offset-5 { - margin-right: 41.66666667%; - margin-left: 0; - } - .col-sm-offset-4 { - margin-right: 33.33333333%; - margin-left: 0; - } - .col-sm-offset-3 { - margin-right: 25%; - margin-left: 0; - } - .col-sm-offset-2 { - margin-right: 16.66666667%; - margin-left: 0; - } - .col-sm-offset-1 { - margin-right: 8.33333333%; - margin-left: 0; - } - .col-sm-offset-0 { - margin-right: 0%; - margin-left: 0; - } -} -@media (min-width: 992px) { - .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { - float: right; - } - .col-md-12 { - width: 100%; - } - .col-md-11 { - width: 91.66666667%; - } - .col-md-10 { - width: 83.33333333%; - } - .col-md-9 { - width: 75%; - } - .col-md-8 { - width: 66.66666667%; - } - .col-md-7 { - width: 58.33333333%; - } - .col-md-6 { - width: 50%; - } - .col-md-5 { - width: 41.66666667%; - } - .col-md-4 { - width: 33.33333333%; - } - .col-md-3 { - width: 25%; - } - .col-md-2 { - width: 16.66666667%; - } - .col-md-1 { - width: 8.33333333%; - } - .col-md-pull-12 { - left: 100%; - right: auto; - } - .col-md-pull-11 { - left: 91.66666667%; - right: auto; - } - .col-md-pull-10 { - left: 83.33333333%; - right: auto; - } - .col-md-pull-9 { - left: 75%; - right: auto; - } - .col-md-pull-8 { - left: 66.66666667%; - right: auto; - } - .col-md-pull-7 { - left: 58.33333333%; - right: auto; - } - .col-md-pull-6 { - left: 50%; - right: auto; - } - .col-md-pull-5 { - left: 41.66666667%; - right: auto; - } - .col-md-pull-4 { - left: 33.33333333%; - right: auto; - } - .col-md-pull-3 { - left: 25%; - right: auto; - } - .col-md-pull-2 { - left: 16.66666667%; - right: auto; - } - .col-md-pull-1 { - left: 8.33333333%; - right: auto; - } - .col-md-pull-0 { - left: auto; - right: auto; - } - .col-md-push-12 { - right: 100%; - left: 0; - } - .col-md-push-11 { - right: 91.66666667%; - left: 0; - } - .col-md-push-10 { - right: 83.33333333%; - left: 0; - } - .col-md-push-9 { - right: 75%; - left: 0; - } - .col-md-push-8 { - right: 66.66666667%; - left: 0; - } - .col-md-push-7 { - right: 58.33333333%; - left: 0; - } - .col-md-push-6 { - right: 50%; - left: 0; - } - .col-md-push-5 { - right: 41.66666667%; - left: 0; - } - .col-md-push-4 { - right: 33.33333333%; - left: 0; - } - .col-md-push-3 { - right: 25%; - left: 0; - } - .col-md-push-2 { - right: 16.66666667%; - left: 0; - } - .col-md-push-1 { - right: 8.33333333%; - left: 0; - } - .col-md-push-0 { - right: auto; - left: 0; - } - .col-md-offset-12 { - margin-right: 100%; - margin-left: 0; - } - .col-md-offset-11 { - margin-right: 91.66666667%; - margin-left: 0; - } - .col-md-offset-10 { - margin-right: 83.33333333%; - margin-left: 0; - } - .col-md-offset-9 { - margin-right: 75%; - margin-left: 0; - } - .col-md-offset-8 { - margin-right: 66.66666667%; - margin-left: 0; - } - .col-md-offset-7 { - margin-right: 58.33333333%; - margin-left: 0; - } - .col-md-offset-6 { - margin-right: 50%; - margin-left: 0; - } - .col-md-offset-5 { - margin-right: 41.66666667%; - margin-left: 0; - } - .col-md-offset-4 { - margin-right: 33.33333333%; - margin-left: 0; - } - .col-md-offset-3 { - margin-right: 25%; - margin-left: 0; - } - .col-md-offset-2 { - margin-right: 16.66666667%; - margin-left: 0; - } - .col-md-offset-1 { - margin-right: 8.33333333%; - margin-left: 0; - } - .col-md-offset-0 { - margin-right: 0%; - margin-left: 0; - } -} -@media (min-width: 1200px) { - .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { - float: right; - } - .col-lg-12 { - width: 100%; - } - .col-lg-11 { - width: 91.66666667%; - } - .col-lg-10 { - width: 83.33333333%; - } - .col-lg-9 { - width: 75%; - } - .col-lg-8 { - width: 66.66666667%; - } - .col-lg-7 { - width: 58.33333333%; - } - .col-lg-6 { - width: 50%; - } - .col-lg-5 { - width: 41.66666667%; - } - .col-lg-4 { - width: 33.33333333%; - } - .col-lg-3 { - width: 25%; - } - .col-lg-2 { - width: 16.66666667%; - } - .col-lg-1 { - width: 8.33333333%; - } - .col-lg-pull-12 { - left: 100%; - right: auto; - } - .col-lg-pull-11 { - left: 91.66666667%; - right: auto; - } - .col-lg-pull-10 { - left: 83.33333333%; - right: auto; - } - .col-lg-pull-9 { - left: 75%; - right: auto; - } - .col-lg-pull-8 { - left: 66.66666667%; - right: auto; - } - .col-lg-pull-7 { - left: 58.33333333%; - right: auto; - } - .col-lg-pull-6 { - left: 50%; - right: auto; - } - .col-lg-pull-5 { - left: 41.66666667%; - right: auto; - } - .col-lg-pull-4 { - left: 33.33333333%; - right: auto; - } - .col-lg-pull-3 { - left: 25%; - right: auto; - } - .col-lg-pull-2 { - left: 16.66666667%; - right: auto; - } - .col-lg-pull-1 { - left: 8.33333333%; - right: auto; - } - .col-lg-pull-0 { - left: auto; - right: auto; - } - .col-lg-push-12 { - right: 100%; - left: 0; - } - .col-lg-push-11 { - right: 91.66666667%; - left: 0; - } - .col-lg-push-10 { - right: 83.33333333%; - left: 0; - } - .col-lg-push-9 { - right: 75%; - left: 0; - } - .col-lg-push-8 { - right: 66.66666667%; - left: 0; - } - .col-lg-push-7 { - right: 58.33333333%; - left: 0; - } - .col-lg-push-6 { - right: 50%; - left: 0; - } - .col-lg-push-5 { - right: 41.66666667%; - left: 0; - } - .col-lg-push-4 { - right: 33.33333333%; - left: 0; - } - .col-lg-push-3 { - right: 25%; - left: 0; - } - .col-lg-push-2 { - right: 16.66666667%; - left: 0; - } - .col-lg-push-1 { - right: 8.33333333%; - left: 0; - } - .col-lg-push-0 { - right: auto; - left: 0; - } - .col-lg-offset-12 { - margin-right: 100%; - margin-left: 0; - } - .col-lg-offset-11 { - margin-right: 91.66666667%; - margin-left: 0; - } - .col-lg-offset-10 { - margin-right: 83.33333333%; - margin-left: 0; - } - .col-lg-offset-9 { - margin-right: 75%; - margin-left: 0; - } - .col-lg-offset-8 { - margin-right: 66.66666667%; - margin-left: 0; - } - .col-lg-offset-7 { - margin-right: 58.33333333%; - margin-left: 0; - } - .col-lg-offset-6 { - margin-right: 50%; - margin-left: 0; - } - .col-lg-offset-5 { - margin-right: 41.66666667%; - margin-left: 0; - } - .col-lg-offset-4 { - margin-right: 33.33333333%; - margin-left: 0; - } - .col-lg-offset-3 { - margin-right: 25%; - margin-left: 0; - } - .col-lg-offset-2 { - margin-right: 16.66666667%; - margin-left: 0; - } - .col-lg-offset-1 { - margin-right: 8.33333333%; - margin-left: 0; - } - .col-lg-offset-0 { - margin-right: 0%; - margin-left: 0; - } -} -caption { - text-align: right; -} -th { - text-align: right; -} -@media screen and (max-width: 767px) { - .table-responsive > .table-bordered { - border: 0; - } - .table-responsive > .table-bordered > thead > tr > th:first-child, - .table-responsive > .table-bordered > tbody > tr > th:first-child, - .table-responsive > .table-bordered > tfoot > tr > th:first-child, - .table-responsive > .table-bordered > thead > tr > td:first-child, - .table-responsive > .table-bordered > tbody > tr > td:first-child, - .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-right: 0; - border-left: initial; - } - .table-responsive > .table-bordered > thead > tr > th:last-child, - .table-responsive > .table-bordered > tbody > tr > th:last-child, - .table-responsive > .table-bordered > tfoot > tr > th:last-child, - .table-responsive > .table-bordered > thead > tr > td:last-child, - .table-responsive > .table-bordered > tbody > tr > td:last-child, - .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-left: 0; - border-right: initial; - } -} -.radio label, -.checkbox label { - padding-right: 20px; - padding-left: initial; -} -.radio input[type="radio"], -.radio-inline input[type="radio"], -.checkbox input[type="checkbox"], -.checkbox-inline input[type="checkbox"] { - margin-right: -20px; - margin-left: auto; -} -.radio-inline, -.checkbox-inline { - padding-right: 20px; - padding-left: 0; -} -.radio-inline + .radio-inline, -.checkbox-inline + .checkbox-inline { - margin-right: 10px; - margin-left: 0; -} -.has-feedback .form-control { - padding-left: 42.5px; - padding-right: 12px; -} -.form-control-feedback { - left: 0; - right: auto; -} -@media (min-width: 768px) { - .form-inline label { - padding-right: 0; - padding-left: initial; - } - .form-inline .radio input[type="radio"], - .form-inline .checkbox input[type="checkbox"] { - margin-right: 0; - margin-left: auto; - } -} -@media (min-width: 768px) { - .form-horizontal .control-label { - text-align: left; - } -} -.form-horizontal .has-feedback .form-control-feedback { - left: 15px; - right: auto; -} -.caret { - margin-right: 2px; - margin-left: 0; -} -.dropdown-menu { - right: 0; - left: auto; - float: left; - text-align: right; -} -.dropdown-menu.pull-right { - left: 0; - right: auto; - float: right; -} -.dropdown-menu-right { - left: auto; - right: 0; -} -.dropdown-menu-left { - left: 0; - right: auto; -} -@media (min-width: 768px) { - .navbar-right .dropdown-menu { - left: auto; - right: 0; - } - .navbar-right .dropdown-menu-left { - left: 0; - right: auto; - } -} -.btn-group > .btn, -.btn-group-vertical > .btn { - float: right; -} -.btn-group .btn + .btn, -.btn-group .btn + .btn-group, -.btn-group .btn-group + .btn, -.btn-group .btn-group + .btn-group { - margin-right: -1px; - margin-left: 0px; -} -.btn-toolbar { - margin-right: -5px; - margin-left: 0px; -} -.btn-toolbar .btn-group, -.btn-toolbar .input-group { - float: right; -} -.btn-toolbar > .btn, -.btn-toolbar > .btn-group, -.btn-toolbar > .input-group { - margin-right: 5px; - margin-left: 0px; -} -.btn-group > .btn:first-child { - margin-right: 0; -} -.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 0; - border-top-left-radius: 0; -} -.btn-group > .btn:last-child:not(:first-child), -.btn-group > .dropdown-toggle:not(:first-child) { - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; - border-bottom-right-radius: 0; - border-top-right-radius: 0; -} -.btn-group > .btn-group { - float: right; -} -.btn-group.btn-group-justified > .btn, -.btn-group.btn-group-justified > .btn-group { - float: none; -} -.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.btn-group > .btn-group:first-child > .btn:last-child, -.btn-group > .btn-group:first-child > .dropdown-toggle { - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 0; - border-top-left-radius: 0; -} -.btn-group > .btn-group:last-child > .btn:first-child { - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; - border-bottom-right-radius: 0; - border-top-right-radius: 0; -} -.btn .caret { - margin-right: 0; -} -.btn-group-vertical > .btn + .btn, -.btn-group-vertical > .btn + .btn-group, -.btn-group-vertical > .btn-group + .btn, -.btn-group-vertical > .btn-group + .btn-group { - margin-top: -1px; - margin-right: 0; -} -.input-group .form-control { - float: right; -} -.input-group .form-control:first-child, -.input-group-addon:first-child, -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group > .btn, -.input-group-btn:first-child > .dropdown-toggle, -.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), -.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { - border-bottom-right-radius: 4px; - border-top-right-radius: 4px; - border-bottom-left-radius: 0; - border-top-left-radius: 0; -} -.input-group-addon:first-child { - border-right-width: 1px; - border-right-style: solid; - border-left: 0px; -} -.input-group .form-control:last-child, -.input-group-addon:last-child, -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group > .btn, -.input-group-btn:last-child > .dropdown-toggle, -.input-group-btn:first-child > .btn:not(:first-child), -.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { - border-bottom-left-radius: 4px; - border-top-left-radius: 4px; - border-bottom-right-radius: 0; - border-top-right-radius: 0; -} -.input-group-addon:last-child { - border-left-width: 1px; - border-left-style: solid; - border-right: 0px; -} -.input-group-btn > .btn + .btn { - margin-right: -1px; - margin-left: auto; -} -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group { - margin-left: -1px; - margin-right: auto; -} -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group { - margin-right: -1px; - margin-left: auto; -} -.nav { - padding-right: 0; - padding-left: initial; -} -.nav-tabs > li { - float: right; -} -.nav-tabs > li > a { - margin-left: auto; - margin-right: -2px; - border-radius: 4px 4px 0 0; -} -.nav-pills > li { - float: right; -} -.nav-pills > li > a { - border-radius: 4px; -} -.nav-pills > li + li { - margin-right: 2px; - margin-left: auto; -} -.nav-stacked > li { - float: none; -} -.nav-stacked > li + li { - margin-right: 0; - margin-left: auto; -} -.nav-justified > .dropdown .dropdown-menu { - right: auto; -} -.nav-tabs-justified > li > a { - margin-left: 0; - margin-right: auto; -} -@media (min-width: 768px) { - .nav-tabs-justified > li > a { - border-radius: 4px 4px 0 0; - } -} -@media (min-width: 768px) { - .navbar-header { - float: right; - } -} -.navbar-collapse { - padding-right: 15px; - padding-left: 15px; -} -.navbar-brand { - float: right; -} -@media (min-width: 768px) { - .navbar > .container .navbar-brand, - .navbar > .container-fluid .navbar-brand { - margin-right: -15px; - margin-left: auto; - } -} -.navbar-toggle { - float: left; - margin-left: 15px; - margin-right: auto; -} -@media (max-width: 767px) { - .navbar-nav .open .dropdown-menu > li > a, - .navbar-nav .open .dropdown-menu .dropdown-header { - padding: 5px 25px 5px 15px; - } -} -@media (min-width: 768px) { - .navbar-nav { - float: right; - } - .navbar-nav > li { - float: right; - } -} -@media (min-width: 768px) { - .navbar-left.flip { - float: right !important; - } - .navbar-right:last-child { - margin-left: -15px; - margin-right: auto; - } - .navbar-right.flip { - float: left !important; - margin-left: -15px; - margin-right: auto; - } - .navbar-right .dropdown-menu { - left: 0; - right: auto; - } -} -@media (min-width: 768px) { - .navbar-text { - float: right; - } - .navbar-text.navbar-right:last-child { - margin-left: 0; - margin-right: auto; - } -} -.pagination { - padding-right: 0; -} -.pagination > li > a, -.pagination > li > span { - float: right; - margin-right: -1px; - margin-left: 0px; -} -.pagination > li:first-child > a, -.pagination > li:first-child > span { - margin-left: 0; - border-bottom-right-radius: 4px; - border-top-right-radius: 4px; - border-bottom-left-radius: 0; - border-top-left-radius: 0; -} -.pagination > li:last-child > a, -.pagination > li:last-child > span { - margin-right: -1px; - border-bottom-left-radius: 4px; - border-top-left-radius: 4px; - border-bottom-right-radius: 0; - border-top-right-radius: 0; -} -.pager { - padding-right: 0; - padding-left: initial; -} -.pager .next > a, -.pager .next > span { - float: left; -} -.pager .previous > a, -.pager .previous > span { - float: right; -} -.nav-pills > li > a > .badge { - margin-left: 0px; - margin-right: 3px; -} -.list-group-item > .badge { - float: left; -} -.list-group-item > .badge + .badge { - margin-left: 5px; - margin-right: auto; -} -.alert-dismissable, -.alert-dismissible { - padding-left: 35px; - padding-right: 15px; -} -.alert-dismissable .close, -.alert-dismissible .close { - right: auto; - left: -21px; -} -.progress-bar { - float: right; -} -.media > .pull-left { - margin-right: 10px; -} -.media > .pull-left.flip { - margin-right: 0; - margin-left: 10px; -} -.media > .pull-right { - margin-left: 10px; -} -.media > .pull-right.flip { - margin-left: 0; - margin-right: 10px; -} -.media-right, -.media > .pull-right { - padding-right: 10px; - padding-left: initial; -} -.media-left, -.media > .pull-left { - padding-left: 10px; - padding-right: initial; -} -.media-list { - padding-right: 0; - padding-left: initial; - list-style: none; -} -.list-group { - padding-right: 0; - padding-left: initial; -} -.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { - border-top-right-radius: 3px; - border-top-left-radius: 0; -} -.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { - border-top-left-radius: 3px; - border-top-right-radius: 0; -} -.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { - border-bottom-left-radius: 3px; - border-top-right-radius: 0; -} -.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { - border-bottom-right-radius: 3px; - border-top-left-radius: 0; -} -.panel > .table-bordered > thead > tr > th:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, -.panel > .table-bordered > tbody > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, -.panel > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-bordered > thead > tr > td:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, -.panel > .table-bordered > tbody > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, -.panel > .table-bordered > tfoot > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-right: 0; - border-left: none; -} -.panel > .table-bordered > thead > tr > th:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, -.panel > .table-bordered > tbody > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, -.panel > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-bordered > thead > tr > td:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, -.panel > .table-bordered > tbody > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, -.panel > .table-bordered > tfoot > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: none; - border-left: 0; -} -.embed-responsive .embed-responsive-item, -.embed-responsive iframe, -.embed-responsive embed, -.embed-responsive object { - right: 0; - left: auto; -} -.close { - float: left; -} -.modal-footer { - text-align: left; -} -.modal-footer .btn + .btn { - margin-left: auto; - margin-right: 5px; -} -.modal-footer .btn-group .btn + .btn { - margin-right: -1px; - margin-left: auto; -} -.modal-footer .btn-block + .btn-block { - margin-right: 0; - margin-left: auto; -} -.popover { - left: auto; - text-align: right; -} -.popover.top > .arrow { - right: 50%; - left: auto; - margin-right: -11px; - margin-left: auto; -} -.popover.top > .arrow:after { - margin-right: -10px; - margin-left: auto; -} -.popover.bottom > .arrow { - right: 50%; - left: auto; - margin-right: -11px; - margin-left: auto; -} -.popover.bottom > .arrow:after { - margin-right: -10px; - margin-left: auto; -} -.carousel-control { - right: 0; - bottom: 0; -} -.carousel-control.left { - right: auto; - left: 0; - background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.5) 0%), color-stop(rgba(0, 0, 0, 0.0001) 100%)); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); -} -.carousel-control.right { - left: auto; - right: 0; - background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.0001) 0%), color-stop(rgba(0, 0, 0, 0.5) 100%)); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); -} -.carousel-control .icon-prev, -.carousel-control .glyphicon-chevron-left { - left: 50%; - right: auto; - margin-right: -10px; -} -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-right { - right: 50%; - left: auto; - margin-left: -10px; -} -.carousel-indicators { - right: 50%; - left: 0; - margin-right: -30%; - margin-left: 0; - padding-left: 0; -} -@media screen and (min-width: 768px) { - .carousel-control .glyphicon-chevron-left, - .carousel-control .icon-prev { - margin-left: 0; - margin-right: -15px; - } - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-next { - margin-left: 0; - margin-right: -15px; - } - .carousel-caption { - left: 20%; - right: 20%; - padding-bottom: 30px; - } -} -.pull-right.flip { - float: left !important; -} -.pull-left.flip { - float: right !important; -} -/*# sourceMappingURL=bootstrap-rtl.css.map */ \ No newline at end of file diff --git a/assets/css/plugins/bootstrap-rtl/bootstrap-rtl.css.map b/assets/css/plugins/bootstrap-rtl/bootstrap-rtl.css.map deleted file mode 100644 index 4ee61fde..00000000 --- a/assets/css/plugins/bootstrap-rtl/bootstrap-rtl.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["less/normalize-rtl.less","less/type-rtl.less","less/mixins/grid-framework-rtl.less","less/grid-rtl.less","less/tables-rtl.less","less/forms-rtl.less","less/dropdowns-rtl.less","less/button-groups-rtl.less","bootstrap/less/mixins/border-radius.less","less/input-groups-rtl.less","less/navs-rtl.less","less/navbar-rtl.less","less/pagination-rtl.less","less/pager-rtl.less","less/badges-rtl.less","less/alerts-rtl.less","less/progress-bars-rtl.less","less/media-rtl.less","less/list-group-rtl.less","less/panels-rtl.less","less/responsive-embed-rtl.less","less/close-rtl.less","less/modals-rtl.less","less/popovers-rtl.less","less/carousel-rtl.less","less/mixins/gradients-rtl.less","less/utilities-rtl.less"],"names":[],"mappings":"AAIA;EACE,cAAA;;AAOF;EACE,cAAA;;ACNF;EACE,gBAAA;EACA,qBAAA;;AAIF;EALE,gBAAA;EACA,qBAAA;EAMA,kBAAA;EACA,cAAA;;AAGF;EACE,eAAA;EACA,oBAAA;;AAqBF,QAX6C;EAW7C,cAVI;IACE,YAAA;IACA,YAAA;IACA,gBAAA;;EAON,cALI;IACE,mBAAA;IACA,cAAA;;;AAMN;EACE,+BAAA;EACA,cAAA;;AAMF;AACA,UAAU;EACR,kBAAA;EACA,gBAAA;EACA,8BAAA;EACA,eAAA;EACA,gBAAA;;AC3CE;EACE,kBAAA;EAEA,eAAA;EAEA,kBAAA;EACA,mBAAA;;AAgBF;EACE,YAAA;;AAOJ,KAAK,EAAQ,CAAC;EACZ,WAAA;;AADF,KAAK,EAAQ,CAAC;EACZ,mBAAA;;AADF,KAAK,EAAQ,CAAC;EACZ,mBAAA;;AADF,KAAK,EAAQ,CAAC;EACZ,UAAA;;AADF,KAAK,EAAQ,CAAC;EACZ,mBAAA;;AADF,KAAK,EAAQ,CAAC;EACZ,mBAAA;;AADF,KAAK,EAAQ,CAAC;EACZ,UAAA;;AADF,KAAK,EAAQ,CAAC;EACZ,mBAAA;;AADF,KAAK,EAAQ,CAAC;EACZ,mBAAA;;AADF,KAAK,EAAQ,CAAC;EACZ,UAAA;;AADF,KAAK,EAAQ,CAAC;EACZ,mBAAA;;AADF,KAAK,EAAQ,CAAC;EACZ,kBAAA;;AAgBF,KAAK,EAAQ,MAAM;EACjB,UAAA;EACA,WAAA;;AAFF,KAAK,EAAQ,MAAM;EACjB,kBAAA;EACA,WAAA;;AAFF,KAAK,EAAQ,MAAM;EACjB,kBAAA;EACA,WAAA;;AAFF,KAAK,EAAQ,MAAM;EACjB,SAAA;EACA,WAAA;;AAFF,KAAK,EAAQ,MAAM;EACjB,kBAAA;EACA,WAAA;;AAFF,KAAK,EAAQ,MAAM;EACjB,kBAAA;EACA,WAAA;;AAFF,KAAK,EAAQ,MAAM;EACjB,SAAA;EACA,WAAA;;AAFF,KAAK,EAAQ,MAAM;EACjB,kBAAA;EACA,WAAA;;AAFF,KAAK,EAAQ,MAAM;EACjB,kBAAA;EACA,WAAA;;AAFF,KAAK,EAAQ,MAAM;EACjB,SAAA;EACA,WAAA;;AAFF,KAAK,EAAQ,MAAM;EACjB,kBAAA;EACA,WAAA;;AAFF,KAAK,EAAQ,MAAM;EACjB,iBAAA;EACA,WAAA;;AAIF,KAAK,EAAQ;EACX,UAAA;EACA,WAAA;;AApBF,KAAK,EAAQ,MAAM;EACjB,WAAA;EACA,OAAA;;AAFF,KAAK,EAAQ,MAAM;EACjB,mBAAA;EACA,OAAA;;AAFF,KAAK,EAAQ,MAAM;EACjB,mBAAA;EACA,OAAA;;AAFF,KAAK,EAAQ,MAAM;EACjB,UAAA;EACA,OAAA;;AAFF,KAAK,EAAQ,MAAM;EACjB,mBAAA;EACA,OAAA;;AAFF,KAAK,EAAQ,MAAM;EACjB,mBAAA;EACA,OAAA;;AAFF,KAAK,EAAQ,MAAM;EACjB,UAAA;EACA,OAAA;;AAFF,KAAK,EAAQ,MAAM;EACjB,mBAAA;EACA,OAAA;;AAFF,KAAK,EAAQ,MAAM;EACjB,mBAAA;EACA,OAAA;;AAFF,KAAK,EAAQ,MAAM;EACjB,UAAA;EACA,OAAA;;AAFF,KAAK,EAAQ,MAAM;EACjB,mBAAA;EACA,OAAA;;AAFF,KAAK,EAAQ,MAAM;EACjB,kBAAA;EACA,OAAA;;AAIF,KAAK,EAAQ;EACX,WAAA;EACA,OAAA;;AAgBF,KAAK,EAAQ,QAAQ;EACnB,kBAAA;EACA,cAAA;;AAFF,KAAK,EAAQ,QAAQ;EACnB,0BAAA;EACA,cAAA;;AAFF,KAAK,EAAQ,QAAQ;EACnB,0BAAA;EACA,cAAA;;AAFF,KAAK,EAAQ,QAAQ;EACnB,iBAAA;EACA,cAAA;;AAFF,KAAK,EAAQ,QAAQ;EACnB,0BAAA;EACA,cAAA;;AAFF,KAAK,EAAQ,QAAQ;EACnB,0BAAA;EACA,cAAA;;AAFF,KAAK,EAAQ,QAAQ;EACnB,iBAAA;EACA,cAAA;;AAFF,KAAK,EAAQ,QAAQ;EACnB,0BAAA;EACA,cAAA;;AAFF,KAAK,EAAQ,QAAQ;EACnB,0BAAA;EACA,cAAA;;AAFF,KAAK,EAAQ,QAAQ;EACnB,iBAAA;EACA,cAAA;;AAFF,KAAK,EAAQ,QAAQ;EACnB,0BAAA;EACA,cAAA;;AAFF,KAAK,EAAQ,QAAQ;EACnB,yBAAA;EACA,cAAA;;AAFF,KAAK,EAAQ,QAAQ;EACnB,gBAAA;EACA,cAAA;;AChDJ,QALmC;EDc/B;IACE,YAAA;;EAOJ,KAAK,EAAQ,CAAC;IACZ,WAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,UAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,UAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,UAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,kBAAA;;EAgBF,KAAK,EAAQ,MAAM;IACjB,UAAA;IACA,WAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,kBAAA;IACA,WAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,kBAAA;IACA,WAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,SAAA;IACA,WAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,kBAAA;IACA,WAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,kBAAA;IACA,WAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,SAAA;IACA,WAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,kBAAA;IACA,WAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,kBAAA;IACA,WAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,SAAA;IACA,WAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,kBAAA;IACA,WAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,iBAAA;IACA,WAAA;;EAIF,KAAK,EAAQ;IACX,UAAA;IACA,WAAA;;EApBF,KAAK,EAAQ,MAAM;IACjB,WAAA;IACA,OAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,mBAAA;IACA,OAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,mBAAA;IACA,OAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,UAAA;IACA,OAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,mBAAA;IACA,OAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,mBAAA;IACA,OAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,UAAA;IACA,OAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,mBAAA;IACA,OAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,mBAAA;IACA,OAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,UAAA;IACA,OAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,mBAAA;IACA,OAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,kBAAA;IACA,OAAA;;EAIF,KAAK,EAAQ;IACX,WAAA;IACA,OAAA;;EAgBF,KAAK,EAAQ,QAAQ;IACnB,kBAAA;IACA,cAAA;;EAFF,KAAK,EAAQ,QAAQ;IACnB,0BAAA;IACA,cAAA;;EAFF,KAAK,EAAQ,QAAQ;IACnB,0BAAA;IACA,cAAA;;EAFF,KAAK,EAAQ,QAAQ;IACnB,iBAAA;IACA,cAAA;;EAFF,KAAK,EAAQ,QAAQ;IACnB,0BAAA;IACA,cAAA;;EAFF,KAAK,EAAQ,QAAQ;IACnB,0BAAA;IACA,cAAA;;EAFF,KAAK,EAAQ,QAAQ;IACnB,iBAAA;IACA,cAAA;;EAFF,KAAK,EAAQ,QAAQ;IACnB,0BAAA;IACA,cAAA;;EAFF,KAAK,EAAQ,QAAQ;IACnB,0BAAA;IACA,cAAA;;EAFF,KAAK,EAAQ,QAAQ;IACnB,iBAAA;IACA,cAAA;;EAFF,KAAK,EAAQ,QAAQ;IACnB,0BAAA;IACA,cAAA;;EAFF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;IACA,cAAA;;EAFF,KAAK,EAAQ,QAAQ;IACnB,gBAAA;IACA,cAAA;;;ACvCJ,QALmC;EDK/B;IACE,YAAA;;EAOJ,KAAK,EAAQ,CAAC;IACZ,WAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,UAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,UAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,UAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,kBAAA;;EAgBF,KAAK,EAAQ,MAAM;IACjB,UAAA;IACA,WAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,kBAAA;IACA,WAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,kBAAA;IACA,WAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,SAAA;IACA,WAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,kBAAA;IACA,WAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,kBAAA;IACA,WAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,SAAA;IACA,WAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,kBAAA;IACA,WAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,kBAAA;IACA,WAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,SAAA;IACA,WAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,kBAAA;IACA,WAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,iBAAA;IACA,WAAA;;EAIF,KAAK,EAAQ;IACX,UAAA;IACA,WAAA;;EApBF,KAAK,EAAQ,MAAM;IACjB,WAAA;IACA,OAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,mBAAA;IACA,OAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,mBAAA;IACA,OAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,UAAA;IACA,OAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,mBAAA;IACA,OAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,mBAAA;IACA,OAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,UAAA;IACA,OAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,mBAAA;IACA,OAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,mBAAA;IACA,OAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,UAAA;IACA,OAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,mBAAA;IACA,OAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,kBAAA;IACA,OAAA;;EAIF,KAAK,EAAQ;IACX,WAAA;IACA,OAAA;;EAgBF,KAAK,EAAQ,QAAQ;IACnB,kBAAA;IACA,cAAA;;EAFF,KAAK,EAAQ,QAAQ;IACnB,0BAAA;IACA,cAAA;;EAFF,KAAK,EAAQ,QAAQ;IACnB,0BAAA;IACA,cAAA;;EAFF,KAAK,EAAQ,QAAQ;IACnB,iBAAA;IACA,cAAA;;EAFF,KAAK,EAAQ,QAAQ;IACnB,0BAAA;IACA,cAAA;;EAFF,KAAK,EAAQ,QAAQ;IACnB,0BAAA;IACA,cAAA;;EAFF,KAAK,EAAQ,QAAQ;IACnB,iBAAA;IACA,cAAA;;EAFF,KAAK,EAAQ,QAAQ;IACnB,0BAAA;IACA,cAAA;;EAFF,KAAK,EAAQ,QAAQ;IACnB,0BAAA;IACA,cAAA;;EAFF,KAAK,EAAQ,QAAQ;IACnB,iBAAA;IACA,cAAA;;EAFF,KAAK,EAAQ,QAAQ;IACnB,0BAAA;IACA,cAAA;;EAFF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;IACA,cAAA;;EAFF,KAAK,EAAQ,QAAQ;IACnB,gBAAA;IACA,cAAA;;;AChCJ,QAHmC;EDJ/B;IACE,YAAA;;EAOJ,KAAK,EAAQ,CAAC;IACZ,WAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,UAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,UAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,UAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,kBAAA;;EAgBF,KAAK,EAAQ,MAAM;IACjB,UAAA;IACA,WAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,kBAAA;IACA,WAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,kBAAA;IACA,WAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,SAAA;IACA,WAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,kBAAA;IACA,WAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,kBAAA;IACA,WAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,SAAA;IACA,WAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,kBAAA;IACA,WAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,kBAAA;IACA,WAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,SAAA;IACA,WAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,kBAAA;IACA,WAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,iBAAA;IACA,WAAA;;EAIF,KAAK,EAAQ;IACX,UAAA;IACA,WAAA;;EApBF,KAAK,EAAQ,MAAM;IACjB,WAAA;IACA,OAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,mBAAA;IACA,OAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,mBAAA;IACA,OAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,UAAA;IACA,OAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,mBAAA;IACA,OAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,mBAAA;IACA,OAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,UAAA;IACA,OAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,mBAAA;IACA,OAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,mBAAA;IACA,OAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,UAAA;IACA,OAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,mBAAA;IACA,OAAA;;EAFF,KAAK,EAAQ,MAAM;IACjB,kBAAA;IACA,OAAA;;EAIF,KAAK,EAAQ;IACX,WAAA;IACA,OAAA;;EAgBF,KAAK,EAAQ,QAAQ;IACnB,kBAAA;IACA,cAAA;;EAFF,KAAK,EAAQ,QAAQ;IACnB,0BAAA;IACA,cAAA;;EAFF,KAAK,EAAQ,QAAQ;IACnB,0BAAA;IACA,cAAA;;EAFF,KAAK,EAAQ,QAAQ;IACnB,iBAAA;IACA,cAAA;;EAFF,KAAK,EAAQ,QAAQ;IACnB,0BAAA;IACA,cAAA;;EAFF,KAAK,EAAQ,QAAQ;IACnB,0BAAA;IACA,cAAA;;EAFF,KAAK,EAAQ,QAAQ;IACnB,iBAAA;IACA,cAAA;;EAFF,KAAK,EAAQ,QAAQ;IACnB,0BAAA;IACA,cAAA;;EAFF,KAAK,EAAQ,QAAQ;IACnB,0BAAA;IACA,cAAA;;EAFF,KAAK,EAAQ,QAAQ;IACnB,iBAAA;IACA,cAAA;;EAFF,KAAK,EAAQ,QAAQ;IACnB,0BAAA;IACA,cAAA;;EAFF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;IACA,cAAA;;EAFF,KAAK,EAAQ,QAAQ;IACnB,gBAAA;IACA,cAAA;;;AExEJ;EACE,iBAAA;;AAGF;EACE,iBAAA;;AAoCF,mBA1BgD;EA0BhD,iBAvBI;IACE,SAAA;;EAsBN,iBAvBI,kBAIE,QAGE,KACE,KAAI;EAed,iBAvBI,kBAKE,QAEE,KACE,KAAI;EAed,iBAvBI,kBAME,QACE,KACE,KAAI;EAed,iBAvBI,kBAIE,QAGE,KAEE,KAAI;EAcd,iBAvBI,kBAKE,QAEE,KAEE,KAAI;EAcd,iBAvBI,kBAME,QACE,KAEE,KAAI;IACF,eAAA;IACA,oBAAA;;EAYZ,iBAvBI,kBAIE,QAGE,KAME,KAAI;EAUd,iBAvBI,kBAKE,QAEE,KAME,KAAI;EAUd,iBAvBI,kBAME,QACE,KAME,KAAI;EAUd,iBAvBI,kBAIE,QAGE,KAOE,KAAI;EASd,iBAvBI,kBAKE,QAEE,KAOE,KAAI;EASd,iBAvBI,kBAME,QACE,KAOE,KAAI;IACF,cAAA;IACA,qBAAA;;;AClCZ,MAGE;AAFF,SAEE;EACE,mBAAA;EACA,qBAAA;;AAGJ,MAAO,MAAK;AACZ,aAAc,MAAK;AACnB,SAAU,MAAK;AACf,gBAAiB,MAAK;EACpB,mBAAA;EACA,iBAAA;;AAIF;AACA;EACE,mBAAA;EACA,eAAA;;AAEF,aAAc;AACd,gBAAiB;EACf,kBAAA;EACA,cAAA;;AAGF,aAGE;EACE,oBAAA;EACA,mBAAA;;AAIJ;EACE,OAAA;EACA,WAAA;;AA+BF,QAdqC;EAcrC,YAZM;IACE,gBAAA;IACA,qBAAA;;EAUR,YAPI,OAAO,MAAK;EAOhB,YANI,UAAU,MAAK;IACb,eAAA;IACA,iBAAA;;;AAsBJ,QANmC;EAMnC,gBALE;IACE,gBAAA;;;AANN,gBAcE,cAAc;EACZ,UAAA;EACA,WAAA;;AC9FJ;EACE,iBAAA;EACA,cAAA;;AAIF;EACE,QAAA;EACA,UAAA;EACA,WAAA;EACA,iBAAA;;AAKA,cAAC;EACC,OAAA;EACA,WAAA;EACA,YAAA;;AAQJ;EACE,UAAA;EACA,QAAA;;AAQF;EACE,OAAA;EACA,WAAA;;AAoBF,QAb2C;EACzC,aACE;IApBF,UAAA;IACA,QAAA;;EAkBA,aAME;IAfF,OAAA;IACA,WAAA;;;ACtCF,UAEE;AADF,mBACE;EACE,YAAA;;AAKJ,UACE,KAAK;AADP,UAEE,KAAK;AAFP,UAGE,WAAW;AAHb,UAIE,WAAW;EACT,kBAAA;EACA,gBAAA;;AAKJ;EACE,kBAAA;EACA,gBAAA;;AAFF,YAIE;AAJF,YAKE;EACE,YAAA;;AANJ,YAQE;AARF,YASE;AATF,YAUE;EACE,iBAAA;EACA,gBAAA;;AAKJ,UAAW,OAAM;EACf,eAAA;;AACA,UAFS,OAAM,YAEd,IAAI,aAAa,IAAI;EACpB,4BAAA;EACA,+BAAA;EC9BF,4BAAA;EACG,yBAAA;;ADkCL,UAAW,OAAM,WAAW,IAAI;AAChC,UAAW,mBAAkB,IAAI;EAC7B,2BAAA;EACA,8BAAA;EC9CF,6BAAA;EACG,0BAAA;;ADkDL,UAAW;EACT,YAAA;;AAGF,UAAU,oBAAqB;AAC/B,UAAU,oBAAqB;EAC7B,WAAA;;AAGF,UAAW,aAAY,IAAI,cAAc,IAAI,aAAc;EACzD,gBAAA;;AAEF,UAAW,aAAY,YACrB,OAAM;AADR,UAAW,aAAY,YAErB;EACE,4BAAA;EACA,+BAAA;EC3DF,4BAAA;EACG,yBAAA;;AD8DL,UAAW,aAAY,WAAY,OAAM;EACrC,2BAAA;EACA,8BAAA;ECzEF,6BAAA;EACG,0BAAA;;AD6EL,IAAK;EACH,eAAA;;AAMF,mBAEE,OAAO;AAFT,mBAGE,OAAO;AAHT,mBAIE,aAAa;AAJf,mBAKE,aAAa;EACX,gBAAA;EACA,eAAA;;AE7FJ,YACE;EAIE,YAAA;;AAKJ,YAAa,cAAa;AAC1B,kBAAkB;AAClB,gBAAgB,YAAa;AAC7B,gBAAgB,YAAa,aAAa;AAC1C,gBAAgB,YAAa;AAC7B,gBAAgB,WAAY,OAAM,IAAI,aAAa,IAAI;AACvD,gBAAgB,WAAY,aAAY,IAAI,aAAc;EDfxD,+BAAA;EACG,4BAAA;EAOH,4BAAA;EACG,yBAAA;;ACUL,kBAAkB;EAChB,uBAAA;EACA,yBAAA;EACA,gBAAA;;AAEF,YAAa,cAAa;AAC1B,kBAAkB;AAClB,gBAAgB,WAAY;AAC5B,gBAAgB,WAAY,aAAa;AACzC,gBAAgB,WAAY;AAC5B,gBAAgB,YAAa,OAAM,IAAI;AACvC,gBAAgB,YAAa,aAAY,IAAI,cAAe;EDtB1D,8BAAA;EACG,2BAAA;EATH,6BAAA;EACG,0BAAA;;ACiCL,kBAAkB;EAChB,sBAAA;EACA,wBAAA;EACA,iBAAA;;AAKF,gBAIE,OACE;EACE,kBAAA;EACA,iBAAA;;AAKJ,gBAAC,YACC;AADF,gBAAC,YAEC;EACE,iBAAA;EACA,kBAAA;;AAGJ,gBAAC,WACC;AADF,gBAAC,WAEC;EACE,kBAAA;EACA,iBAAA;;AChEN;EACE,gBAAA;EACA,qBAAA;;AAQF,SACE;EACE,YAAA;;AAFJ,SACE,KAIE;EACE,iBAAA;EACA,kBAAA;EACA,0BAAA;;AAQN,UACE;EACE,YAAA;;AAFJ,UACE,KAIE;EACE,kBAAA;;AANN,UACE,KAOE;EACE,iBAAA;EACA,iBAAA;;AAON,YACE;EACE,WAAA;;AAFJ,YACE,KAEE;EACE,eAAA;EACA,iBAAA;;AAYN,cAEE,YAAY;EACV,WAAA;;AAOJ,mBAEE,KAAK;EAEH,cAAA;EACA,kBAAA;;AAQJ,QALqC;EAKrC,mBAJI,KAAK;IACH,0BAAA;;;ACzEN,QAH6C;EAG7C;IAFI,YAAA;;;AAeJ;EACE,mBAAA;EACA,kBAAA;;AAMF;EACE,YAAA;;AASF,QAP6C;EACzC,OAAQ,aAAa;EACrB,OAAQ,mBAAmB;IACzB,mBAAA;IACA,iBAAA;;;AAWN;EACE,WAAA;EACA,iBAAA;EACA,kBAAA;;AAqBA,QAV+C;EAU/C,WARE,MAAM,eACJ,KAAK;EAOT,WARE,MAAM,eAEJ;IACE,0BAAA;;;AAcR,QAR6C;EAQ7C;IAPI,YAAA;;EAOJ,WALI;IACE,YAAA;;;AAiCN,QA3B2C;EAGvC,YAAC;IACC,uBAAA;;EAKF,aAAC;IACC,kBAAA;IACA,kBAAA;;EAGF,aAAC;IACC,sBAAA;IACA,kBAAA;IACA,kBAAA;;EATJ,aAYE;IACE,OAAA;IACA,WAAA;;;AAoBN,QAT6C;EAS7C;IARI,YAAA;;EAGA,YAAC,aAAa;IACZ,cAAA;IACA,kBAAA;;;AC7HN;EACE,gBAAA;;AADF,WAGE,KACE;AAJJ,WAGE,KAEE;EACE,YAAA;EACA,kBAAA;EACA,gBAAA;;AAEF,WAPF,KAOG,YACC;AADF,WAPF,KAOG,YAEC;EACE,cAAA;EJTN,+BAAA;EACG,4BAAA;EAOH,4BAAA;EACG,yBAAA;;AIKD,WAfF,KAeG,WACC;AADF,WAfF,KAeG,WAEC;EACE,kBAAA;EJTN,8BAAA;EACG,2BAAA;EATH,6BAAA;EACG,0BAAA;;AKHL;EACE,gBAAA;EACA,qBAAA;;AAFF,MAIE,MACE;AALJ,MAIE,MAEE;EACE,WAAA;;AAPN,MAWE,UACE;AAZJ,MAWE,UAEE;EACE,YAAA;;ACXJ,UAAW,KAAK,IAAI;EAClB,gBAAA;EACA,iBAAA;;AAGF,gBAAiB;EACf,WAAA;;AAEF,gBAAiB,SAAI;EACnB,gBAAA;EACA,kBAAA;;ACTJ;AACA;EACC,kBAAA;EACA,mBAAA;;AAHD,kBAME;AALF,kBAKE;EACE,WAAA;EACA,WAAA;;ACZJ;EACE,YAAA;;ACCF,MACE;EACE,kBAAA;;AACA,MAFF,aAEG;EACC,eAAA;EACA,iBAAA;;AALN,MAQE;EACI,iBAAA;;AACF,MAFF,cAEG;EACC,cAAA;EACA,kBAAA;;AAKN;AACA,MAAO;EACL,mBAAA;EACA,qBAAA;;AAGF;AACA,MAAO;EACL,kBAAA;EACA,sBAAA;;AAQF;EACE,gBAAA;EACA,qBAAA;EACA,gBAAA;;ACnCF;EACE,gBAAA;EACA,qBAAA;;ACFF,MAEE,SAAQ,YAGN,QAAO,YAEL,KAAI,YACF,GAAE;AARV,MAGE,oBAAmB,YAAa,SAAQ,YAEtC,QAAO,YAEL,KAAI,YACF,GAAE;AARV,MAEE,SAAQ,YAIN,QAAO,YACL,KAAI,YACF,GAAE;AARV,MAGE,oBAAmB,YAAa,SAAQ,YAGtC,QAAO,YACL,KAAI,YACF,GAAE;AARV,MAEE,SAAQ,YAGN,QAAO,YAEL,KAAI,YAEF,GAAE;AATV,MAGE,oBAAmB,YAAa,SAAQ,YAEtC,QAAO,YAEL,KAAI,YAEF,GAAE;AATV,MAEE,SAAQ,YAIN,QAAO,YACL,KAAI,YAEF,GAAE;AATV,MAGE,oBAAmB,YAAa,SAAQ,YAGtC,QAAO,YACL,KAAI,YAEF,GAAE;EACA,4BAAA;EACA,yBAAA;;AAXV,MAEE,SAAQ,YAGN,QAAO,YAEL,KAAI,YAMF,GAAE;AAbV,MAGE,oBAAmB,YAAa,SAAQ,YAEtC,QAAO,YAEL,KAAI,YAMF,GAAE;AAbV,MAEE,SAAQ,YAIN,QAAO,YACL,KAAI,YAMF,GAAE;AAbV,MAGE,oBAAmB,YAAa,SAAQ,YAGtC,QAAO,YACL,KAAI,YAMF,GAAE;AAbV,MAEE,SAAQ,YAGN,QAAO,YAEL,KAAI,YAOF,GAAE;AAdV,MAGE,oBAAmB,YAAa,SAAQ,YAEtC,QAAO,YAEL,KAAI,YAOF,GAAE;AAdV,MAEE,SAAQ,YAIN,QAAO,YACL,KAAI,YAOF,GAAE;AAdV,MAGE,oBAAmB,YAAa,SAAQ,YAGtC,QAAO,YACL,KAAI,YAOF,GAAE;EACA,2BAAA;EACA,0BAAA;;AAhBV,MAsBE,SAAQ,WAGN,QAAO,WAEL,KAAI,WACF,GAAE;AA5BV,MAuBE,oBAAmB,WAAY,SAAQ,WAErC,QAAO,WAEL,KAAI,WACF,GAAE;AA5BV,MAsBE,SAAQ,WAIN,QAAO,WACL,KAAI,WACF,GAAE;AA5BV,MAuBE,oBAAmB,WAAY,SAAQ,WAGrC,QAAO,WACL,KAAI,WACF,GAAE;AA5BV,MAsBE,SAAQ,WAGN,QAAO,WAEL,KAAI,WAEF,GAAE;AA7BV,MAuBE,oBAAmB,WAAY,SAAQ,WAErC,QAAO,WAEL,KAAI,WAEF,GAAE;AA7BV,MAsBE,SAAQ,WAIN,QAAO,WACL,KAAI,WAEF,GAAE;AA7BV,MAuBE,oBAAmB,WAAY,SAAQ,WAGrC,QAAO,WACL,KAAI,WAEF,GAAE;EACA,8BAAA;EACA,0BAAA;;AA/BV,MAsBE,SAAQ,WAGN,QAAO,WAEL,KAAI,WAMF,GAAE;AAjCV,MAuBE,oBAAmB,WAAY,SAAQ,WAErC,QAAO,WAEL,KAAI,WAMF,GAAE;AAjCV,MAsBE,SAAQ,WAIN,QAAO,WACL,KAAI,WAMF,GAAE;AAjCV,MAuBE,oBAAmB,WAAY,SAAQ,WAGrC,QAAO,WACL,KAAI,WAMF,GAAE;AAjCV,MAsBE,SAAQ,WAGN,QAAO,WAEL,KAAI,WAOF,GAAE;AAlCV,MAuBE,oBAAmB,WAAY,SAAQ,WAErC,QAAO,WAEL,KAAI,WAOF,GAAE;AAlCV,MAsBE,SAAQ,WAIN,QAAO,WACL,KAAI,WAOF,GAAE;AAlCV,MAuBE,oBAAmB,WAAY,SAAQ,WAGrC,QAAO,WACL,KAAI,WAOF,GAAE;EACA,+BAAA;EACA,yBAAA;;AApCV,MAyCE,kBAEE,QAGE,KACE,KAAI;AA/CZ,MA0CE,oBAAoB,kBAClB,QAGE,KACE,KAAI;AA/CZ,MAyCE,kBAGE,QAEE,KACE,KAAI;AA/CZ,MA0CE,oBAAoB,kBAElB,QAEE,KACE,KAAI;AA/CZ,MAyCE,kBAIE,QACE,KACE,KAAI;AA/CZ,MA0CE,oBAAoB,kBAGlB,QACE,KACE,KAAI;AA/CZ,MAyCE,kBAEE,QAGE,KAEE,KAAI;AAhDZ,MA0CE,oBAAoB,kBAClB,QAGE,KAEE,KAAI;AAhDZ,MAyCE,kBAGE,QAEE,KAEE,KAAI;AAhDZ,MA0CE,oBAAoB,kBAElB,QAEE,KAEE,KAAI;AAhDZ,MAyCE,kBAIE,QACE,KAEE,KAAI;AAhDZ,MA0CE,oBAAoB,kBAGlB,QACE,KAEE,KAAI;EACF,eAAA;EACA,iBAAA;;AAlDV,MAyCE,kBAEE,QAGE,KAME,KAAI;AApDZ,MA0CE,oBAAoB,kBAClB,QAGE,KAME,KAAI;AApDZ,MAyCE,kBAGE,QAEE,KAME,KAAI;AApDZ,MA0CE,oBAAoB,kBAElB,QAEE,KAME,KAAI;AApDZ,MAyCE,kBAIE,QACE,KAME,KAAI;AApDZ,MA0CE,oBAAoB,kBAGlB,QACE,KAME,KAAI;AApDZ,MAyCE,kBAEE,QAGE,KAOE,KAAI;AArDZ,MA0CE,oBAAoB,kBAClB,QAGE,KAOE,KAAI;AArDZ,MAyCE,kBAGE,QAEE,KAOE,KAAI;AArDZ,MA0CE,oBAAoB,kBAElB,QAEE,KAOE,KAAI;AArDZ,MAyCE,kBAIE,QACE,KAOE,KAAI;AArDZ,MA0CE,oBAAoB,kBAGlB,QACE,KAOE,KAAI;EACF,kBAAA;EACA,cAAA;;AC5DV,iBAEE;AAFF,iBAGE;AAHF,iBAIE;AAJF,iBAKE;EACE,QAAA;EACA,UAAA;;ACNJ;EACE,WAAA;;ACDF;EACE,gBAAA;;AADF,aAIE,KAAK;EACH,iBAAA;EACA,iBAAA;;AANJ,aASE,WAAW,KAAK;EACd,kBAAA;EACA,iBAAA;;AAXJ,aAcE,WAAW;EACT,eAAA;EACA,iBAAA;;AChBJ;EACE,UAAA;EACA,iBAAA;;AAIA,QAAC,IAAK;EACJ,UAAA;EACA,UAAA;EACA,mBAAA;EACA,iBAAA;;AACA,QALD,IAAK,SAKH;EACC,mBAAA;EACA,iBAAA;;AAGJ,QAAC,OAAQ;EACP,UAAA;EACA,UAAA;EACA,mBAAA;EACA,iBAAA;;AACA,QALD,OAAQ,SAKN;EACC,mBAAA;EACA,iBAAA;;ACpBN;EACE,QAAA;EACA,SAAA;;AAGA,iBAAC;EACC,WAAA;EACA,OAAA;ECNA,kBAAkB,8BAA8B,mCAAyC,uCAAzF;EACA,kBAAkB,2EAAlB;EACA,kBAAkB,4EAAlB;EACA,2BAAA;EACA,sHAAA;;ADKF,iBAAC;EACC,UAAA;EACA,QAAA;ECXA,kBAAkB,8BAA8B,sCAAyC,oCAAzF;EACA,kBAAkB,2EAAlB;EACA,kBAAkB,4EAAlB;EACA,2BAAA;EACA,sHAAA;;ADLJ,iBAgBE;AAhBF,iBAiBE;EACE,SAAA;EACA,WAAA;EACA,mBAAA;;AApBJ,iBAsBE;AAtBF,iBAuBE;EACE,UAAA;EACA,UAAA;EACA,kBAAA;;AASJ;EACE,UAAA;EACA,OAAA;EACA,kBAAA;EACA,cAAA;EACA,eAAA;;AA4BF,mBAvB8C;EAG5C,iBACE;EADF,iBAEE;IACE,cAAA;IACA,mBAAA;;EAJJ,iBAME;EANF,iBAOE;IACE,cAAA;IACA,mBAAA;;EAKJ;IACE,SAAA;IACA,UAAA;IACA,oBAAA;;;AEnEF,WAAC;EACC,sBAAA;;AAIF,UAAC;EACC,uBAAA","sourcesContent":["//\n// 1. Set direction to RTL\n//\n\nhtml {\n direction: rtl;\n}\n\n//\n// Remove default margin.\n//\n\nbody {\n direction: rtl;\n}\n","//\n// RTL Typography\n// --------------------------------------------------\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n padding-right: 0;\n padding-left: initial;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n .list-unstyled();\n margin-right: -5px;\n margin-left: 0;\n}\n\ndd {\n margin-right: 0; // Undo browser default\n margin-left: initial;\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n.dl-horizontal {\n\n @media (min-width: @grid-float-breakpoint) {\n dt {\n float: right;\n clear: right;\n text-align: left;\n }\n dd {\n margin-right: @component-offset-horizontal;\n margin-left: 0;\n }\n }\n}\n\n// Blockquotes\nblockquote {\n border-right: 5px solid @blockquote-border-color;\n border-left: 0;\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-left {\n padding-left: 15px;\n padding-right: 0;\n border-left: 5px solid @blockquote-border-color;\n border-right: 0;\n text-align: left;\n}\n","// RTL Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-rtl-grid-columns() {\n // Common styles for all sizes of grid columns, widths 1-12\n .col(@index) { // initial\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n position: relative;\n // Prevent columns from collapsing when empty\n min-height: 1px;\n // Inner gutter via padding\n padding-left: (@grid-gutter-width / 2);\n padding-right: (@grid-gutter-width / 2);\n }\n }\n .col(1); // kickstart it\n}\n\n.float-rtl-grid-columns(@class) {\n .col(@index) { // initial\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n float: right;\n }\n }\n .col(1); // kickstart it\n}\n\n.calc-rtl-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n .col-@{class}-@{index} {\n width: percentage((@index / @grid-columns));\n }\n}\n.calc-rtl-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {\n .col-@{class}-push-@{index} {\n right: percentage((@index / @grid-columns));\n left: 0;\n }\n}\n.calc-rtl-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {\n .col-@{class}-push-0 {\n right: auto;\n left: 0;\n }\n}\n.calc-rtl-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {\n .col-@{class}-pull-@{index} {\n left: percentage((@index / @grid-columns));\n right: auto;\n }\n}\n.calc-rtl-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {\n .col-@{class}-pull-0 {\n left: auto;\n right: auto;\n }\n}\n.calc-rtl-grid-column(@index, @class, @type) when (@type = offset) {\n .col-@{class}-offset-@{index} {\n margin-right: percentage((@index / @grid-columns));\n margin-left: 0;\n }\n}\n\n// Basic looping in LESS\n.loop-rtl-grid-columns(@index, @class, @type) when (@index >= 0) {\n .calc-rtl-grid-column(@index, @class, @type);\n // next iteration\n .loop-rtl-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-rtl-grid(@class) {\n .float-rtl-grid-columns(@class);\n .loop-rtl-grid-columns(@grid-columns, @class, width);\n .loop-rtl-grid-columns(@grid-columns, @class, pull);\n .loop-rtl-grid-columns(@grid-columns, @class, push);\n .loop-rtl-grid-columns(@grid-columns, @class, offset);\n}\n","//\n// RTL Grid system\n// --------------------------------------------------\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-rtl-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-rtl-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n .make-rtl-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n .make-rtl-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n .make-rtl-grid(lg);\n}\n","//\n// Tables\n// --------------------------------------------------\n\n//TODO\ncaption {\n text-align: right;\n}\n\nth {\n text-align: right;\n}\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n @media screen and (max-width: @screen-xs-max) {\n\n // Special overrides for the bordered tables\n > .table-bordered {\n border: 0;\n\n // Nuke the appropriate borders so that the parent can handle them\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-right: 0;\n border-left: initial;\n }\n > th:last-child,\n > td:last-child {\n border-left: 0;\n border-right: initial;\n }\n }\n }\n\n }\n }\n}\n","//\n// RTL Forms\n// --------------------------------------------------\n\n\n.radio,\n.checkbox {\n\n label {\n padding-right: 20px;\n padding-left: initial;\n }\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n margin-right: -20px;\n margin-left: auto;\n}\n\n// Radios and checkboxes on same line\n.radio-inline,\n.checkbox-inline {\n padding-right: 20px;\n padding-left: 0;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-right: 10px; // space out consecutive inline controls\n margin-left: 0;\n}\n\n.has-feedback {\n\n // Ensure icons don't overlap text\n .form-control {\n padding-left: (@input-height-base * 1.25);\n padding-right: 12px;\n }\n}\n// Feedback icon (requires .glyphicon classes)\n.form-control-feedback {\n left: 0;\n right: auto;\n}\n\n// Inline forms\n//\n// Make forms appear inline(-block) by adding the `.form-inline` class. Inline\n// forms begin stacked on extra small (mobile) devices and then go inline when\n// viewports reach <768px.\n//\n// Requires wrapping inputs and labels with `.form-group` for proper display of\n// default HTML form controls and our custom form controls (e.g., input groups).\n//\n// Heads up! This is mixin-ed into `.navbar-form` in navbars.less.\n\n.form-inline {\n\n // Kick in the inline\n @media (min-width: @screen-sm-min) {\n\n label {\n padding-right: 0;\n padding-left: initial;\n }\n\n .radio input[type=\"radio\"],\n .checkbox input[type=\"checkbox\"] {\n margin-right: 0;\n margin-left: auto;\n }\n\n }\n}\n\n\n// Horizontal forms\n//\n// Horizontal forms are built on grid classes and allow you to create forms with\n// labels on the left and inputs on the right.\n\n.form-horizontal {\n\n // Reset spacing and right align labels, but scope to media queries so that\n // labels on narrow viewports stack the same as a default form example.\n @media (min-width: @screen-sm-min) {\n .control-label {\n text-align: left;\n }\n }\n\n // Validation states\n //\n // Reposition the icon because it's now within a grid column and columns have\n // `position: relative;` on them. Also accounts for the grid gutter padding.\n .has-feedback .form-control-feedback {\n left: (@grid-gutter-width / 2);\n right: auto;\n }\n}\n","//\n// RTL Dropdown menus\n// --------------------------------------------------\n\n// Dropdown arrow/caret\n.caret {\n margin-right: 2px;\n margin-left: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n right: 0;\n left: auto;\n float: left;\n text-align: right; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n\n // Aligns the dropdown menu to right\n //\n // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`\n &.pull-right {\n left: 0;\n right: auto;\n float: right;\n }\n}\n\n// Menu positioning\n//\n// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\n// menu with the parent.\n.dropdown-menu-right {\n left: auto; // Reset the default from `.dropdown-menu`\n right: 0;\n}\n// With v3, we enabled auto-flipping if you have a dropdown within a right\n// aligned nav component. To enable the undoing of that, we provide an override\n// to restore the default dropdown menu alignment.\n//\n// This is only for left-aligning a dropdown menu within a `.navbar-right` or\n// `.pull-right` nav component.\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-right {\n .dropdown-menu {\n .dropdown-menu-right();\n }\n // Necessary for overrides of the default right aligned menu.\n // Will remove come v4 in all likelihood.\n .dropdown-menu-left {\n .dropdown-menu-left();\n }\n }\n}\n\n","//\n// RTL Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n > .btn {\n float: right;\n }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n .btn + .btn,\n .btn + .btn-group,\n .btn-group + .btn,\n .btn-group + .btn-group {\n margin-right: -1px;\n margin-left: 0px;\n }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n margin-right: -5px; // Offset the first child's margin\n margin-left: 0px;\n\n .btn-group,\n .input-group {\n float: right;\n }\n > .btn,\n > .btn-group,\n > .input-group {\n margin-right: 5px;\n margin-left: 0px;\n }\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n margin-right: 0;\n &:not(:last-child):not(.dropdown-toggle) {\n border-top-right-radius: @border-radius-base;\n border-bottom-right-radius: @border-radius-base;\n .border-left-radius(0);\n }\n}\n// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-top-left-radius: @border-radius-base;\n border-bottom-left-radius: @border-radius-base;\n .border-right-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n float: right;\n}\n\n.btn-group.btn-group-justified > .btn,\n.btn-group.btn-group-justified > .btn-group {\n float: none;\n}\n\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child {\n > .btn:last-child,\n > .dropdown-toggle {\n border-top-right-radius: @border-radius-base;\n border-bottom-right-radius: @border-radius-base;\n .border-left-radius(0);\n }\n}\n.btn-group > .btn-group:last-child > .btn:first-child {\n border-top-left-radius: @border-radius-base;\n border-bottom-left-radius: @border-radius-base;\n .border-right-radius(0);\n}\n\n// Reposition the caret\n.btn .caret {\n margin-right: 0;\n}\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n\n > .btn + .btn,\n > .btn + .btn-group,\n > .btn-group + .btn,\n > .btn-group + .btn-group {\n margin-top: -1px;\n margin-right: 0;\n }\n}\n","// Single side border-radius\n\n.border-top-radius(@radius) {\n border-top-right-radius: @radius;\n border-top-left-radius: @radius;\n}\n.border-right-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-top-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n border-bottom-left-radius: @radius;\n border-top-left-radius: @radius;\n}\n","//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.input-group {\n .form-control {\n // IE9 fubars the placeholder attribute in text inputs and the arrows on\n // select elements in input groups. To fix it, we float the input. Details:\n // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\n float: right;\n }\n}\n\n// Reset rounded corners\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n .border-right-radius(@border-radius-base);\n .border-left-radius(0);\n}\n.input-group-addon:first-child {\n border-right-width: 1px;\n border-right-style: solid;\n border-left: 0px;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n .border-left-radius(@border-radius-base);\n .border-right-radius(0);\n}\n.input-group-addon:last-child {\n border-left-width: 1px;\n border-left-style: solid;\n border-right: 0px;\n}\n\n// Button input groups\n// -------------------------\n.input-group-btn {\n\n // Negative margin for spacing, position for bringing hovered/focused/actived\n // element above the siblings.\n > .btn {\n + .btn {\n margin-right: -1px;\n margin-left: auto;\n }\n }\n\n // Negative margin to only have a 1px border between the two\n &:first-child {\n > .btn,\n > .btn-group {\n margin-left: -1px;\n margin-right: auto;\n }\n }\n &:last-child {\n > .btn,\n > .btn-group {\n margin-right: -1px;\n margin-left: auto;\n }\n }\n}\n","//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// --------------------------------------------------\n\n.nav {\n padding-right: 0; // Override default ul/ol\n padding-left: initial;\n}\n\n\n// Tabs\n// -------------------------\n\n// Give the tabs something to sit on\n.nav-tabs {\n > li {\n float: right;\n\n // Actual tabs (as links)\n > a {\n margin-left: auto;\n margin-right: -2px;\n border-radius: @border-radius-base @border-radius-base 0 0;\n }\n }\n}\n\n\n// Pills\n// -------------------------\n.nav-pills {\n > li {\n float: right;\n\n // Links rendered as pills\n > a {\n border-radius: @nav-pills-border-radius;\n }\n + li {\n margin-right: 2px;\n margin-left: auto;\n }\n }\n}\n\n\n// Stacked pills\n.nav-stacked {\n > li {\n float: none;\n + li {\n margin-right: 0; // no need for this gap between nav items\n margin-left: auto;\n }\n }\n}\n\n\n// Nav variations\n// --------------------------------------------------\n\n// Justified nav links\n// -------------------------\n\n.nav-justified {\n\n > .dropdown .dropdown-menu {\n right: auto;\n }\n}\n\n// Move borders to anchors instead of bottom of list\n//\n// Mixin for adding on top the shared `.nav-justified` styles for our tabs\n.nav-tabs-justified {\n\n > li > a {\n // Override margin from .nav-tabs\n margin-left: 0;\n margin-right: auto;\n }\n\n @media (min-width: @screen-sm-min) {\n > li > a {\n border-radius: @border-radius-base @border-radius-base 0 0;\n }\n }\n}\n","//\n// RTL Navbars\n// --------------------------------------------------\n\n\n// Navbar heading\n//\n// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy\n// styling of responsive aspects.\n\n.navbar-header {\n\n @media (min-width: @grid-float-breakpoint) {\n float: right;\n }\n}\n\n\n// Navbar collapse (body)\n//\n// Group your navbar content into this for easy collapsing and expanding across\n// various device sizes. By default, this content is collapsed when <768px, but\n// will expand past that for a horizontal display.\n//\n// To start (on mobile devices) the navbar links, forms, and buttons are stacked\n// vertically and include a `max-height` to overflow in case you have too much\n// content for the user's viewport.\n\n.navbar-collapse {\n padding-right: @navbar-padding-horizontal;\n padding-left: @navbar-padding-horizontal;\n}\n\n\n// Brand/project name\n\n.navbar-brand {\n float: right;\n\n @media (min-width: @grid-float-breakpoint) {\n .navbar > .container &,\n .navbar > .container-fluid & {\n margin-right: -@navbar-padding-horizontal;\n margin-left: auto;\n }\n }\n}\n\n\n// Navbar toggle\n//\n// Custom button for toggling the `.navbar-collapse`, powered by the collapse\n// JavaScript plugin.\n\n.navbar-toggle {\n float: left;\n margin-left: @navbar-padding-horizontal;\n margin-right: auto;\n}\n\n\n// Navbar nav links\n//\n// Builds on top of the `.nav` components with its own modifier class to make\n// the nav the full height of the horizontal nav (above 768px).\n\n.navbar-nav {\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n > li > a,\n .dropdown-header {\n padding: 5px 25px 5px 15px;\n }\n }\n }\n\n // Uncollapse the nav\n @media (min-width: @grid-float-breakpoint) {\n float: right;\n\n > li {\n float: right;\n }\n\n }\n}\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-left {\n\n &.flip {\n float: right !important;\n }\n }\n\n .navbar-right {\n &:last-child {\n margin-left: -@navbar-padding-horizontal;\n margin-right: auto;\n }\n\n &.flip {\n float: left !important;\n margin-left: -@navbar-padding-horizontal;\n margin-right: auto;\n }\n\n .dropdown-menu {\n left: 0;\n right: auto;\n }\n }\n}\n\n// Text in navbars\n//\n// Add a class to make any element properly align itself vertically within the navbars.\n\n.navbar-text {\n\n @media (min-width: @grid-float-breakpoint) {\n float: right;\n\n // Outdent the form if last child to line up with content down the page\n &.navbar-right:last-child {\n margin-left: 0;\n margin-right: auto;\n }\n }\n}\n\n\n","//\n// RTL Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n padding-right: 0;\n\n > li {\n > a,\n > span {\n float: right; // Collapse white-space\n margin-right: -1px;\n margin-left: 0px;\n }\n &:first-child {\n > a,\n > span {\n margin-left: 0;\n .border-right-radius(@border-radius-base);\n .border-left-radius(0);\n }\n }\n &:last-child {\n > a,\n > span {\n margin-right: -1px;\n .border-left-radius(@border-radius-base);\n .border-right-radius(0);\n }\n }\n }\n\n}\n","//\n// RTL Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n padding-right: 0;\n padding-left: initial;\n\n .next {\n > a,\n > span {\n float: left;\n }\n }\n\n .previous {\n > a,\n > span {\n float: right;\n }\n }\n\n}\n","//\n// RTL Badges\n// --------------------------------------------------\n\n\n// Base class\n.badge {\n\n .nav-pills > li > a > & {\n margin-left: 0px;\n margin-right: 3px;\n }\n\n .list-group-item > & {\n float: left;\n }\n .list-group-item > & + & {\n margin-left: 5px;\n margin-right: auto;\n }\n}\n","//\n// RTL Alerts\n// --------------------------------------------------\n\n\n// Dismissable alerts\n//\n// Expand the left padding and account for the close button's positioning.\n\n.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0.\n.alert-dismissible {\n padding-left: (@alert-padding + 20);\n padding-right: (@alert-padding);\n\n // Adjust close link position\n .close {\n right: auto;\n left: -21px;\n }\n}\n","//\n// RTL Progress bars\n// --------------------------------------------------\n\n// Bar of progress\n.progress-bar {\n float: right;\n}\n","// RTL Media objects\n// --------------------------------------------------\n\n\n// Media image alignment\n// -------------------------\n\n.media {\n > .pull-left {\n margin-right: 10px;\n &.flip {\n margin-right: 0;\n margin-left: 10px;\n }\n }\n > .pull-right {\n margin-left: 10px;\n &.flip {\n margin-left: 0;\n margin-right: 10px;\n }\n }\n}\n\n.media-right,\n.media > .pull-right {\n padding-right: 10px;\n padding-left: initial;\n}\n\n.media-left,\n.media > .pull-left {\n padding-left: 10px;\n padding-right: initial;\n}\n\n\n// Media list variation\n// -------------------------\n\n// Undo default ul/ol styles\n.media-list {\n padding-right: 0;\n padding-left: initial;\n list-style: none;\n}\n\n","//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on <ul>, <ol>, or <div>.\n\n.list-group {\n padding-right: 0; // reset padding because ul and ol\n padding-left: initial;\n}\n\n","//\n// RTL Panels\n// --------------------------------------------------\n\n// Tables in panels\n//\n// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and\n// watch it go full width.\n\n.panel {\n // Add border top radius for first one\n > .table:first-child,\n > .table-responsive:first-child > .table:first-child {\n\n > thead:first-child,\n > tbody:first-child {\n > tr:first-child {\n td:first-child,\n th:first-child {\n border-top-right-radius: (@panel-border-radius - 1);\n border-top-left-radius: 0;\n }\n td:last-child,\n th:last-child {\n border-top-left-radius: (@panel-border-radius - 1);\n border-top-right-radius: 0;\n }\n }\n }\n }\n // Add border bottom radius for last one\n > .table:last-child,\n > .table-responsive:last-child > .table:last-child {\n\n > tbody:last-child,\n > tfoot:last-child {\n > tr:last-child {\n td:first-child,\n th:first-child {\n border-bottom-left-radius: (@panel-border-radius - 1);\n border-top-right-radius: 0;\n }\n td:last-child,\n th:last-child {\n border-bottom-right-radius: (@panel-border-radius - 1);\n border-top-left-radius: 0;\n }\n }\n }\n }\n > .table-bordered,\n > .table-responsive > .table-bordered {\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-right: 0;\n border-left: none;\n }\n > th:last-child,\n > td:last-child {\n border-right: none;\n border-left: 0;\n }\n }\n }\n }\n}\n","// RTL Embeds responsive\n//\n// Credit: Nicolas Gallagher and SUIT CSS.\n\n.embed-responsive {\n\n .embed-responsive-item,\n iframe,\n embed,\n object {\n right: 0;\n left: auto;\n }\n\n}\n","//\n// RTL Close icons\n// --------------------------------------------------\n\n\n.close {\n float: left;\n}\n","//\n// RTL Modals\n// --------------------------------------------------\n\n// Footer (for actions)\n.modal-footer {\n text-align: left; // right align buttons\n\n // Properly space out buttons\n .btn + .btn {\n margin-left: auto;\n margin-right: 5px;\n }\n // but override that for button groups\n .btn-group .btn + .btn {\n margin-right: -1px;\n margin-left: auto;\n }\n // and override it for block buttons as well\n .btn-block + .btn-block {\n margin-right: 0;\n margin-left: auto;\n }\n}\n","//\n// Popovers\n// --------------------------------------------------\n\n\n.popover {\n left: auto;\n text-align: right;\n}\n\n.popover {\n &.top > .arrow {\n right: 50%;\n left: auto;\n margin-right: -@popover-arrow-outer-width;\n margin-left: auto;\n &:after {\n margin-right: -@popover-arrow-width;\n margin-left: auto;\n }\n }\n &.bottom > .arrow {\n right: 50%;\n left: auto;\n margin-right: -@popover-arrow-outer-width;\n margin-left: auto;\n &:after {\n margin-right: -@popover-arrow-width;\n margin-left: auto;\n }\n }\n\n}\n","//\n// RTL Carousel\n// --------------------------------------------------\n\n\n// Left/right controls for nav\n// ---------------------------\n\n.carousel-control {\n right: 0;\n bottom: 0;\n\n // Set gradients for backgrounds\n &.left {\n right: auto;\n left: 0;\n #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001));\n }\n &.right {\n left: auto;\n right: 0;\n #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5));\n }\n\n .icon-prev,\n .glyphicon-chevron-left {\n left: 50%;\n right: auto;\n margin-right: -10px;\n }\n .icon-next,\n .glyphicon-chevron-right {\n right: 50%;\n left: auto;\n margin-left: -10px;\n }\n}\n\n// Optional indicator pips\n//\n// Add an unordered list with the following class and add a list item for each\n// slide your carousel holds.\n\n.carousel-indicators {\n right: 50%;\n left: 0;\n margin-right: -30%;\n margin-left: 0;\n padding-left: 0;\n\n}\n\n// Scale up controls for tablets and up\n@media screen and (min-width: @screen-sm-min) {\n\n // Scale up the controls a smidge\n .carousel-control {\n .glyphicon-chevron-left,\n .icon-prev {\n margin-left: 0;\n margin-right: -15px;\n }\n .glyphicon-chevron-right,\n .icon-next {\n margin-left: 0;\n margin-right: -15px;\n }\n }\n\n // Show and left align the captions\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n}\n","// RTL Gradients\n\n#gradient {\n\n // Horizontal gradient, from right to left\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #333; @end-color: #555; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, color-stop(@start-color @start-percent), color-stop(@end-color @end-percent)); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .horizontal-three-colors(@start-color: #c3325f; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #00b3ee) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n}\n","//\n// Temporary RTL style to fix bugs rapidly. \n// They will move to some place more appropriate later.\n// --------------------------------------------------\n\n.pull-right {\n &.flip {\n float: left !important;\n }\n}\n.pull-left {\n &.flip {\n float: right !important;\n }\n}\n"]} \ No newline at end of file diff --git a/assets/css/plugins/bootstrap-rtl/bootstrap-rtl.min.css b/assets/css/plugins/bootstrap-rtl/bootstrap-rtl.min.css deleted file mode 100644 index 8dac213e..00000000 --- a/assets/css/plugins/bootstrap-rtl/bootstrap-rtl.min.css +++ /dev/null @@ -1,9 +0,0 @@ -/******************************************************************************* - * bootstrap-rtl (version 3.3.1) - * Author: Morteza Ansarinia (http://github.com/morteza) - * Created on: January 21,2015 - * Project: bootstrap-rtl - * Copyright: Unlicensed Public Domain - *******************************************************************************/ - -html{direction:rtl}body{direction:rtl}.list-unstyled{padding-right:0;padding-left:initial}.list-inline{padding-right:0;padding-left:initial;margin-right:-5px;margin-left:0}dd{margin-right:0;margin-left:initial}@media (min-width:768px){.dl-horizontal dt{float:right;clear:right;text-align:left}.dl-horizontal dd{margin-right:180px;margin-left:0}}blockquote{border-right:5px solid #eee;border-left:0}.blockquote-reverse,blockquote.pull-left{padding-left:15px;padding-right:0;border-left:5px solid #eee;border-right:0;text-align:left}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:right}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{left:100%;right:auto}.col-xs-pull-11{left:91.66666667%;right:auto}.col-xs-pull-10{left:83.33333333%;right:auto}.col-xs-pull-9{left:75%;right:auto}.col-xs-pull-8{left:66.66666667%;right:auto}.col-xs-pull-7{left:58.33333333%;right:auto}.col-xs-pull-6{left:50%;right:auto}.col-xs-pull-5{left:41.66666667%;right:auto}.col-xs-pull-4{left:33.33333333%;right:auto}.col-xs-pull-3{left:25%;right:auto}.col-xs-pull-2{left:16.66666667%;right:auto}.col-xs-pull-1{left:8.33333333%;right:auto}.col-xs-pull-0{left:auto;right:auto}.col-xs-push-12{right:100%;left:0}.col-xs-push-11{right:91.66666667%;left:0}.col-xs-push-10{right:83.33333333%;left:0}.col-xs-push-9{right:75%;left:0}.col-xs-push-8{right:66.66666667%;left:0}.col-xs-push-7{right:58.33333333%;left:0}.col-xs-push-6{right:50%;left:0}.col-xs-push-5{right:41.66666667%;left:0}.col-xs-push-4{right:33.33333333%;left:0}.col-xs-push-3{right:25%;left:0}.col-xs-push-2{right:16.66666667%;left:0}.col-xs-push-1{right:8.33333333%;left:0}.col-xs-push-0{right:auto;left:0}.col-xs-offset-12{margin-right:100%;margin-left:0}.col-xs-offset-11{margin-right:91.66666667%;margin-left:0}.col-xs-offset-10{margin-right:83.33333333%;margin-left:0}.col-xs-offset-9{margin-right:75%;margin-left:0}.col-xs-offset-8{margin-right:66.66666667%;margin-left:0}.col-xs-offset-7{margin-right:58.33333333%;margin-left:0}.col-xs-offset-6{margin-right:50%;margin-left:0}.col-xs-offset-5{margin-right:41.66666667%;margin-left:0}.col-xs-offset-4{margin-right:33.33333333%;margin-left:0}.col-xs-offset-3{margin-right:25%;margin-left:0}.col-xs-offset-2{margin-right:16.66666667%;margin-left:0}.col-xs-offset-1{margin-right:8.33333333%;margin-left:0}.col-xs-offset-0{margin-right:0;margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:right}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{left:100%;right:auto}.col-sm-pull-11{left:91.66666667%;right:auto}.col-sm-pull-10{left:83.33333333%;right:auto}.col-sm-pull-9{left:75%;right:auto}.col-sm-pull-8{left:66.66666667%;right:auto}.col-sm-pull-7{left:58.33333333%;right:auto}.col-sm-pull-6{left:50%;right:auto}.col-sm-pull-5{left:41.66666667%;right:auto}.col-sm-pull-4{left:33.33333333%;right:auto}.col-sm-pull-3{left:25%;right:auto}.col-sm-pull-2{left:16.66666667%;right:auto}.col-sm-pull-1{left:8.33333333%;right:auto}.col-sm-pull-0{left:auto;right:auto}.col-sm-push-12{right:100%;left:0}.col-sm-push-11{right:91.66666667%;left:0}.col-sm-push-10{right:83.33333333%;left:0}.col-sm-push-9{right:75%;left:0}.col-sm-push-8{right:66.66666667%;left:0}.col-sm-push-7{right:58.33333333%;left:0}.col-sm-push-6{right:50%;left:0}.col-sm-push-5{right:41.66666667%;left:0}.col-sm-push-4{right:33.33333333%;left:0}.col-sm-push-3{right:25%;left:0}.col-sm-push-2{right:16.66666667%;left:0}.col-sm-push-1{right:8.33333333%;left:0}.col-sm-push-0{right:auto;left:0}.col-sm-offset-12{margin-right:100%;margin-left:0}.col-sm-offset-11{margin-right:91.66666667%;margin-left:0}.col-sm-offset-10{margin-right:83.33333333%;margin-left:0}.col-sm-offset-9{margin-right:75%;margin-left:0}.col-sm-offset-8{margin-right:66.66666667%;margin-left:0}.col-sm-offset-7{margin-right:58.33333333%;margin-left:0}.col-sm-offset-6{margin-right:50%;margin-left:0}.col-sm-offset-5{margin-right:41.66666667%;margin-left:0}.col-sm-offset-4{margin-right:33.33333333%;margin-left:0}.col-sm-offset-3{margin-right:25%;margin-left:0}.col-sm-offset-2{margin-right:16.66666667%;margin-left:0}.col-sm-offset-1{margin-right:8.33333333%;margin-left:0}.col-sm-offset-0{margin-right:0;margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:right}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{left:100%;right:auto}.col-md-pull-11{left:91.66666667%;right:auto}.col-md-pull-10{left:83.33333333%;right:auto}.col-md-pull-9{left:75%;right:auto}.col-md-pull-8{left:66.66666667%;right:auto}.col-md-pull-7{left:58.33333333%;right:auto}.col-md-pull-6{left:50%;right:auto}.col-md-pull-5{left:41.66666667%;right:auto}.col-md-pull-4{left:33.33333333%;right:auto}.col-md-pull-3{left:25%;right:auto}.col-md-pull-2{left:16.66666667%;right:auto}.col-md-pull-1{left:8.33333333%;right:auto}.col-md-pull-0{left:auto;right:auto}.col-md-push-12{right:100%;left:0}.col-md-push-11{right:91.66666667%;left:0}.col-md-push-10{right:83.33333333%;left:0}.col-md-push-9{right:75%;left:0}.col-md-push-8{right:66.66666667%;left:0}.col-md-push-7{right:58.33333333%;left:0}.col-md-push-6{right:50%;left:0}.col-md-push-5{right:41.66666667%;left:0}.col-md-push-4{right:33.33333333%;left:0}.col-md-push-3{right:25%;left:0}.col-md-push-2{right:16.66666667%;left:0}.col-md-push-1{right:8.33333333%;left:0}.col-md-push-0{right:auto;left:0}.col-md-offset-12{margin-right:100%;margin-left:0}.col-md-offset-11{margin-right:91.66666667%;margin-left:0}.col-md-offset-10{margin-right:83.33333333%;margin-left:0}.col-md-offset-9{margin-right:75%;margin-left:0}.col-md-offset-8{margin-right:66.66666667%;margin-left:0}.col-md-offset-7{margin-right:58.33333333%;margin-left:0}.col-md-offset-6{margin-right:50%;margin-left:0}.col-md-offset-5{margin-right:41.66666667%;margin-left:0}.col-md-offset-4{margin-right:33.33333333%;margin-left:0}.col-md-offset-3{margin-right:25%;margin-left:0}.col-md-offset-2{margin-right:16.66666667%;margin-left:0}.col-md-offset-1{margin-right:8.33333333%;margin-left:0}.col-md-offset-0{margin-right:0;margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:right}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{left:100%;right:auto}.col-lg-pull-11{left:91.66666667%;right:auto}.col-lg-pull-10{left:83.33333333%;right:auto}.col-lg-pull-9{left:75%;right:auto}.col-lg-pull-8{left:66.66666667%;right:auto}.col-lg-pull-7{left:58.33333333%;right:auto}.col-lg-pull-6{left:50%;right:auto}.col-lg-pull-5{left:41.66666667%;right:auto}.col-lg-pull-4{left:33.33333333%;right:auto}.col-lg-pull-3{left:25%;right:auto}.col-lg-pull-2{left:16.66666667%;right:auto}.col-lg-pull-1{left:8.33333333%;right:auto}.col-lg-pull-0{left:auto;right:auto}.col-lg-push-12{right:100%;left:0}.col-lg-push-11{right:91.66666667%;left:0}.col-lg-push-10{right:83.33333333%;left:0}.col-lg-push-9{right:75%;left:0}.col-lg-push-8{right:66.66666667%;left:0}.col-lg-push-7{right:58.33333333%;left:0}.col-lg-push-6{right:50%;left:0}.col-lg-push-5{right:41.66666667%;left:0}.col-lg-push-4{right:33.33333333%;left:0}.col-lg-push-3{right:25%;left:0}.col-lg-push-2{right:16.66666667%;left:0}.col-lg-push-1{right:8.33333333%;left:0}.col-lg-push-0{right:auto;left:0}.col-lg-offset-12{margin-right:100%;margin-left:0}.col-lg-offset-11{margin-right:91.66666667%;margin-left:0}.col-lg-offset-10{margin-right:83.33333333%;margin-left:0}.col-lg-offset-9{margin-right:75%;margin-left:0}.col-lg-offset-8{margin-right:66.66666667%;margin-left:0}.col-lg-offset-7{margin-right:58.33333333%;margin-left:0}.col-lg-offset-6{margin-right:50%;margin-left:0}.col-lg-offset-5{margin-right:41.66666667%;margin-left:0}.col-lg-offset-4{margin-right:33.33333333%;margin-left:0}.col-lg-offset-3{margin-right:25%;margin-left:0}.col-lg-offset-2{margin-right:16.66666667%;margin-left:0}.col-lg-offset-1{margin-right:8.33333333%;margin-left:0}.col-lg-offset-0{margin-right:0;margin-left:0}}caption{text-align:right}th{text-align:right}@media screen and (max-width:767px){.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-right:0;border-left:initial}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-left:0;border-right:initial}}.radio label,.checkbox label{padding-right:20px;padding-left:initial}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{margin-right:-20px;margin-left:auto}.radio-inline,.checkbox-inline{padding-right:20px;padding-left:0}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-right:10px;margin-left:0}.has-feedback .form-control{padding-left:42.5px;padding-right:12px}.form-control-feedback{left:0;right:auto}@media (min-width:768px){.form-inline label{padding-right:0;padding-left:initial}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{margin-right:0;margin-left:auto}}@media (min-width:768px){.form-horizontal .control-label{text-align:left}}.form-horizontal .has-feedback .form-control-feedback{left:15px;right:auto}.caret{margin-right:2px;margin-left:0}.dropdown-menu{right:0;left:auto;float:left;text-align:right}.dropdown-menu.pull-right{left:0;right:auto;float:right}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group>.btn,.btn-group-vertical>.btn{float:right}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-right:-1px;margin-left:0}.btn-toolbar{margin-right:-5px;margin-left:0}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:right}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-right:5px;margin-left:0}.btn-group>.btn:first-child{margin-right:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:4px;border-bottom-left-radius:4px;border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group{float:right}.btn-group.btn-group-justified>.btn,.btn-group.btn-group-justified>.btn-group{float:none}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-top-left-radius:4px;border-bottom-left-radius:4px;border-bottom-right-radius:0;border-top-right-radius:0}.btn .caret{margin-right:0}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-right:0}.input-group .form-control{float:right}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:4px;border-top-right-radius:4px;border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:first-child{border-right-width:1px;border-right-style:solid;border-left:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:last-child{border-left-width:1px;border-left-style:solid;border-right:0}.input-group-btn>.btn+.btn{margin-right:-1px;margin-left:auto}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-left:-1px;margin-right:auto}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-right:-1px;margin-left:auto}.nav{padding-right:0;padding-left:initial}.nav-tabs>li{float:right}.nav-tabs>li>a{margin-left:auto;margin-right:-2px;border-radius:4px 4px 0 0}.nav-pills>li{float:right}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-right:2px;margin-left:auto}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-right:0;margin-left:auto}.nav-justified>.dropdown .dropdown-menu{right:auto}.nav-tabs-justified>li>a{margin-left:0;margin-right:auto}@media (min-width:768px){.nav-tabs-justified>li>a{border-radius:4px 4px 0 0}}@media (min-width:768px){.navbar-header{float:right}}.navbar-collapse{padding-right:15px;padding-left:15px}.navbar-brand{float:right}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-right:-15px;margin-left:auto}}.navbar-toggle{float:left;margin-left:15px;margin-right:auto}@media (max-width:767px){.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 25px 5px 15px}}@media (min-width:768px){.navbar-nav{float:right}.navbar-nav>li{float:right}}@media (min-width:768px){.navbar-left.flip{float:right!important}.navbar-right:last-child{margin-left:-15px;margin-right:auto}.navbar-right.flip{float:left!important;margin-left:-15px;margin-right:auto}.navbar-right .dropdown-menu{left:0;right:auto}}@media (min-width:768px){.navbar-text{float:right}.navbar-text.navbar-right:last-child{margin-left:0;margin-right:auto}}.pagination{padding-right:0}.pagination>li>a,.pagination>li>span{float:right;margin-right:-1px;margin-left:0}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-right-radius:4px;border-top-right-radius:4px;border-bottom-left-radius:0;border-top-left-radius:0}.pagination>li:last-child>a,.pagination>li:last-child>span{margin-right:-1px;border-bottom-left-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-top-right-radius:0}.pager{padding-right:0;padding-left:initial}.pager .next>a,.pager .next>span{float:left}.pager .previous>a,.pager .previous>span{float:right}.nav-pills>li>a>.badge{margin-left:0;margin-right:3px}.list-group-item>.badge{float:left}.list-group-item>.badge+.badge{margin-left:5px;margin-right:auto}.alert-dismissable,.alert-dismissible{padding-left:35px;padding-right:15px}.alert-dismissable .close,.alert-dismissible .close{right:auto;left:-21px}.progress-bar{float:right}.media>.pull-left{margin-right:10px}.media>.pull-left.flip{margin-right:0;margin-left:10px}.media>.pull-right{margin-left:10px}.media>.pull-right.flip{margin-left:0;margin-right:10px}.media-right,.media>.pull-right{padding-right:10px;padding-left:initial}.media-left,.media>.pull-left{padding-left:10px;padding-right:initial}.media-list{padding-right:0;padding-left:initial;list-style:none}.list-group{padding-right:0;padding-left:initial}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-right-radius:3px;border-top-left-radius:0}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-left-radius:3px;border-top-right-radius:0}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px;border-top-right-radius:0}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px;border-top-left-radius:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-right:0;border-left:none}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:none;border-left:0}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object{right:0;left:auto}.close{float:left}.modal-footer{text-align:left}.modal-footer .btn+.btn{margin-left:auto;margin-right:5px}.modal-footer .btn-group .btn+.btn{margin-right:-1px;margin-left:auto}.modal-footer .btn-block+.btn-block{margin-right:0;margin-left:auto}.popover{left:auto;text-align:right}.popover.top>.arrow{right:50%;left:auto;margin-right:-11px;margin-left:auto}.popover.top>.arrow:after{margin-right:-10px;margin-left:auto}.popover.bottom>.arrow{right:50%;left:auto;margin-right:-11px;margin-left:auto}.popover.bottom>.arrow:after{margin-right:-10px;margin-left:auto}.carousel-control{right:0;bottom:0}.carousel-control.left{right:auto;left:0;background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.5)0),color-stop(rgba(0,0,0,.0001)100%));background-image:-o-linear-gradient(left,rgba(0,0,0,.5)0,rgba(0,0,0,.0001)100%);background-image:linear-gradient(to right,rgba(0,0,0,.5)0,rgba(0,0,0,.0001)100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.0001)0),color-stop(rgba(0,0,0,.5)100%));background-image:-o-linear-gradient(left,rgba(0,0,0,.0001)0,rgba(0,0,0,.5)100%);background-image:linear-gradient(to right,rgba(0,0,0,.0001)0,rgba(0,0,0,.5)100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;right:auto;margin-right:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;left:auto;margin-left:-10px}.carousel-indicators{right:50%;left:0;margin-right:-30%;margin-left:0;padding-left:0}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:0;margin-right:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-left:0;margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}}.pull-right.flip{float:left!important}.pull-left.flip{float:right!important} \ No newline at end of file diff --git a/assets/css/plugins/chosen/chosen-sprite.png b/assets/css/plugins/chosen/chosen-sprite.png deleted file mode 100644 index 3611ae4a..00000000 Binary files a/assets/css/plugins/chosen/chosen-sprite.png and /dev/null differ diff --git a/assets/css/plugins/chosen/chosen-sprite@2x.png b/assets/css/plugins/chosen/chosen-sprite@2x.png deleted file mode 100644 index ffe4d7d1..00000000 Binary files a/assets/css/plugins/chosen/chosen-sprite@2x.png and /dev/null differ diff --git a/assets/css/plugins/chosen/chosen.css b/assets/css/plugins/chosen/chosen.css deleted file mode 100644 index a7e9b5e1..00000000 --- a/assets/css/plugins/chosen/chosen.css +++ /dev/null @@ -1,429 +0,0 @@ -/*! -Chosen, a Select Box Enhancer for jQuery and Prototype -by Patrick Filler for Harvest, http://getharvest.com - -Version 1.1.0 -Full source at https://github.com/harvesthq/chosen -Copyright (c) 2011 Harvest http://getharvest.com - -MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md -This file is generated by `grunt build`, do not edit it by hand. -*/ - -/* @group Base */ -.chosen-container { - position: relative; - display: inline-block; - vertical-align: middle; - font-size: 13px; - zoom: 1; - *display: inline; - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; -} -.chosen-container .chosen-drop { - position: absolute; - top: 100%; - left: -9999px; - z-index: 1010; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - width: 100%; - border: 1px solid #aaa; - border-top: 0; - background: #fff; - box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15); -} -.chosen-container.chosen-with-drop .chosen-drop { - left: 0; -} -.chosen-container a { - cursor: pointer; -} - -/* @end */ -/* @group Single Chosen */ -.chosen-container-single .chosen-single { - position: relative; - display: block; - overflow: hidden; - padding: 0 0 0 8px; - height: 23px; - border: 1px solid #aaa; - border-radius: 5px; - background-color: #fff; - background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #ffffff), color-stop(50%, #f6f6f6), color-stop(52%, #eeeeee), color-stop(100%, #f4f4f4)); - background: -webkit-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%); - background: -moz-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%); - background: -o-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%); - background: linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%); - background-clip: padding-box; - box-shadow: 0 0 3px white inset, 0 1px 1px rgba(0, 0, 0, 0.1); - color: #444; - text-decoration: none; - white-space: nowrap; - line-height: 24px; -} -.chosen-container-single .chosen-default { - color: #999; -} -.chosen-container-single .chosen-single span { - display: block; - overflow: hidden; - margin-right: 26px; - text-overflow: ellipsis; - white-space: nowrap; -} -.chosen-container-single .chosen-single-with-deselect span { - margin-right: 38px; -} -.chosen-container-single .chosen-single abbr { - position: absolute; - top: 6px; - right: 26px; - display: block; - width: 12px; - height: 12px; - background: url('chosen-sprite.png') -42px 1px no-repeat; - font-size: 1px; -} -.chosen-container-single .chosen-single abbr:hover { - background-position: -42px -10px; -} -.chosen-container-single.chosen-disabled .chosen-single abbr:hover { - background-position: -42px -10px; -} -.chosen-container-single .chosen-single div { - position: absolute; - top: 0; - right: 0; - display: block; - width: 18px; - height: 100%; -} -.chosen-container-single .chosen-single div b { - display: block; - width: 100%; - height: 100%; - background: url('chosen-sprite.png') no-repeat 0px 2px; -} -.chosen-container-single .chosen-search { - position: relative; - z-index: 1010; - margin: 0; - padding: 3px 4px; - white-space: nowrap; -} -.chosen-container-single .chosen-search input[type="text"] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - margin: 1px 0; - padding: 4px 20px 4px 5px; - width: 100%; - height: auto; - outline: 0; - border: 1px solid #aaa; - background: white url('chosen-sprite.png') no-repeat 100% -20px; - background: url('chosen-sprite.png') no-repeat 100% -20px; - font-size: 1em; - font-family: sans-serif; - line-height: normal; - border-radius: 0; -} -.chosen-container-single .chosen-drop { - margin-top: -1px; - border-radius: 0 0 4px 4px; - background-clip: padding-box; -} -.chosen-container-single.chosen-container-single-nosearch .chosen-search { - position: absolute; - left: -9999px; -} - -/* @end */ -/* @group Results */ -.chosen-container .chosen-results { - position: relative; - overflow-x: hidden; - overflow-y: auto; - margin: 0 4px 4px 0; - padding: 0 0 0 4px; - max-height: 240px; - -webkit-overflow-scrolling: touch; -} -.chosen-container .chosen-results li { - display: none; - margin: 0; - padding: 5px 6px; - list-style: none; - line-height: 15px; - -webkit-touch-callout: none; -} -.chosen-container .chosen-results li.active-result { - display: list-item; - cursor: pointer; -} -.chosen-container .chosen-results li.disabled-result { - display: list-item; - color: #ccc; - cursor: default; -} -.chosen-container .chosen-results li.highlighted { - background-color: #3875d7; - background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #3875d7), color-stop(90%, #2a62bc)); - background-image: -webkit-linear-gradient(#3875d7 20%, #2a62bc 90%); - background-image: -moz-linear-gradient(#3875d7 20%, #2a62bc 90%); - background-image: -o-linear-gradient(#3875d7 20%, #2a62bc 90%); - background-image: linear-gradient(#3875d7 20%, #2a62bc 90%); - color: #fff; -} -.chosen-container .chosen-results li.no-results { - display: list-item; - background: #f4f4f4; -} -.chosen-container .chosen-results li.group-result { - display: list-item; - font-weight: bold; - cursor: default; -} -.chosen-container .chosen-results li.group-option { - padding-left: 15px; -} -.chosen-container .chosen-results li em { - font-style: normal; - text-decoration: underline; -} - -/* @end */ -/* @group Multi Chosen */ -.chosen-container-multi .chosen-choices { - -moz-box-sizing: border-box; - background-color: #FFFFFF; - border: 1px solid #CBD5DD; - border-radius: 2px; - cursor: text; - height: auto !important; - margin: 0; - min-height: 30px; - overflow: hidden; - padding: 2px; - position: relative; - width: 100%; -} -.chosen-container-multi .chosen-choices li { - float: left; - list-style: none; -} -.chosen-container-multi .chosen-choices li.search-field { - margin: 0; - padding: 0; - white-space: nowrap; -} -.chosen-container-multi .chosen-choices li.search-field input[type="text"] { - margin: 1px 0; - padding: 5px; - height: 25px; - outline: 0; - border: 0 !important; - background: transparent !important; - box-shadow: none; - color: #666; - font-size: 100%; - font-family: sans-serif; - line-height: normal; - border-radius: 0; -} -.chosen-container-multi .chosen-choices li.search-field .default { - color: #999; -} -.chosen-container-multi .chosen-choices li.search-choice { - position: relative; - margin: 3px 0 3px 5px; - padding: 3px 20px 3px 5px; - border: 1px solid #aaa; - border-radius: 3px; - background-color: #e4e4e4; - background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee)); - background-image: -webkit-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); - background-image: -moz-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); - background-image: -o-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); - background-image: linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); - background-clip: padding-box; - box-shadow: 0 0 2px white inset, 0 1px 0 rgba(0, 0, 0, 0.05); - color: #333; - line-height: 13px; - cursor: default; -} -.chosen-container-multi .chosen-choices li.search-choice .search-choice-close { - position: absolute; - top: 4px; - right: 3px; - display: block; - width: 12px; - height: 12px; - background: url('chosen-sprite.png') -42px 1px no-repeat; - font-size: 1px; -} -.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover { - background-position: -42px -10px; -} -.chosen-container-multi .chosen-choices li.search-choice-disabled { - padding-right: 5px; - border: 1px solid #ccc; - background-color: #e4e4e4; - background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee)); - background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); - background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); - background-image: -o-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); - background-image: linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); - color: #666; -} -.chosen-container-multi .chosen-choices li.search-choice-focus { - background: #d4d4d4; -} -.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close { - background-position: -42px -10px; -} -.chosen-container-multi .chosen-results { - margin: 0; - padding: 0; -} -.chosen-container-multi .chosen-drop .result-selected { - display: list-item; - color: #ccc; - cursor: default; -} - -/* @end */ -/* @group Active */ -.chosen-container-active .chosen-single { - border: 1px solid #5897fb; - box-shadow: 0 0 5px rgba(0, 0, 0, 0.3); -} -.chosen-container-active.chosen-with-drop .chosen-single { - border: 1px solid #aaa; - -moz-border-radius-bottomright: 0; - border-bottom-right-radius: 0; - -moz-border-radius-bottomleft: 0; - border-bottom-left-radius: 0; - background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #eeeeee), color-stop(80%, #ffffff)); - background-image: -webkit-linear-gradient(#eeeeee 20%, #ffffff 80%); - background-image: -moz-linear-gradient(#eeeeee 20%, #ffffff 80%); - background-image: -o-linear-gradient(#eeeeee 20%, #ffffff 80%); - background-image: linear-gradient(#eeeeee 20%, #ffffff 80%); - box-shadow: 0 1px 0 #fff inset; -} -.chosen-container-active.chosen-with-drop .chosen-single div { - border-left: none; - background: transparent; -} -.chosen-container-active.chosen-with-drop .chosen-single div b { - background-position: -18px 2px; -} -.chosen-container-active .chosen-choices { - border: 1px solid #5897fb; - box-shadow: 0 0 5px rgba(0, 0, 0, 0.3); -} -.chosen-container-active .chosen-choices li.search-field input[type="text"] { - color: #111 !important; -} - -/* @end */ -/* @group Disabled Support */ -.chosen-disabled { - opacity: 0.5 !important; - cursor: default; -} -.chosen-disabled .chosen-single { - cursor: default; -} -.chosen-disabled .chosen-choices .search-choice .search-choice-close { - cursor: default; -} - -/* @end */ -/* @group Right to Left */ -.chosen-rtl { - text-align: right; -} -.chosen-rtl .chosen-single { - overflow: visible; - padding: 0 8px 0 0; -} -.chosen-rtl .chosen-single span { - margin-right: 0; - margin-left: 26px; - direction: rtl; -} -.chosen-rtl .chosen-single-with-deselect span { - margin-left: 38px; -} -.chosen-rtl .chosen-single div { - right: auto; - left: 3px; -} -.chosen-rtl .chosen-single abbr { - right: auto; - left: 26px; -} -.chosen-rtl .chosen-choices li { - float: right; -} -.chosen-rtl .chosen-choices li.search-field input[type="text"] { - direction: rtl; -} -.chosen-rtl .chosen-choices li.search-choice { - margin: 3px 5px 3px 0; - padding: 3px 5px 3px 19px; -} -.chosen-rtl .chosen-choices li.search-choice .search-choice-close { - right: auto; - left: 4px; -} -.chosen-rtl.chosen-container-single-nosearch .chosen-search, -.chosen-rtl .chosen-drop { - left: 9999px; -} -.chosen-rtl.chosen-container-single .chosen-results { - margin: 0 0 4px 4px; - padding: 0 4px 0 0; -} -.chosen-rtl .chosen-results li.group-option { - padding-right: 15px; - padding-left: 0; -} -.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div { - border-right: none; -} -.chosen-rtl .chosen-search input[type="text"] { - padding: 4px 5px 4px 20px; - background: white url('chosen-sprite.png') no-repeat -30px -20px; - background: url('chosen-sprite.png') no-repeat -30px -20px; - direction: rtl; -} -.chosen-rtl.chosen-container-single .chosen-single div b { - background-position: 6px 2px; -} -.chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b { - background-position: -12px 2px; -} - -/* @end */ -/* @group Retina compatibility */ -@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-resolution: 144dpi) { - .chosen-rtl .chosen-search input[type="text"], - .chosen-container-single .chosen-single abbr, - .chosen-container-single .chosen-single div b, - .chosen-container-single .chosen-search input[type="text"], - .chosen-container-multi .chosen-choices .search-choice .search-choice-close, - .chosen-container .chosen-results-scroll-down span, - .chosen-container .chosen-results-scroll-up span { - background-image: url('chosen-sprite@2x.png') !important; - background-size: 52px 37px !important; - background-repeat: no-repeat !important; - } -} -/* @end */ diff --git a/assets/css/plugins/codemirror/ambiance.css b/assets/css/plugins/codemirror/ambiance.css deleted file mode 100644 index c844566e..00000000 --- a/assets/css/plugins/codemirror/ambiance.css +++ /dev/null @@ -1,77 +0,0 @@ -/* ambiance theme for codemirror */ - -/* Color scheme */ - -.cm-s-ambiance .cm-keyword { color: #cda869; } -.cm-s-ambiance .cm-atom { color: #CF7EA9; } -.cm-s-ambiance .cm-number { color: #78CF8A; } -.cm-s-ambiance .cm-def { color: #aac6e3; } -.cm-s-ambiance .cm-variable { color: #ffb795; } -.cm-s-ambiance .cm-variable-2 { color: #eed1b3; } -.cm-s-ambiance .cm-variable-3 { color: #faded3; } -.cm-s-ambiance .cm-property { color: #eed1b3; } -.cm-s-ambiance .cm-operator {color: #fa8d6a;} -.cm-s-ambiance .cm-comment { color: #555; font-style:italic; } -.cm-s-ambiance .cm-string { color: #8f9d6a; } -.cm-s-ambiance .cm-string-2 { color: #9d937c; } -.cm-s-ambiance .cm-meta { color: #D2A8A1; } -.cm-s-ambiance .cm-qualifier { color: yellow; } -.cm-s-ambiance .cm-builtin { color: #9999cc; } -.cm-s-ambiance .cm-bracket { color: #24C2C7; } -.cm-s-ambiance .cm-tag { color: #fee4ff } -.cm-s-ambiance .cm-attribute { color: #9B859D; } -.cm-s-ambiance .cm-header {color: blue;} -.cm-s-ambiance .cm-quote { color: #24C2C7; } -.cm-s-ambiance .cm-hr { color: pink; } -.cm-s-ambiance .cm-link { color: #F4C20B; } -.cm-s-ambiance .cm-special { color: #FF9D00; } -.cm-s-ambiance .cm-error { color: #AF2018; } - -.cm-s-ambiance .CodeMirror-matchingbracket { color: #0f0; } -.cm-s-ambiance .CodeMirror-nonmatchingbracket { color: #f22; } - -.cm-s-ambiance .CodeMirror-selected { - background: rgba(255, 255, 255, 0.15); -} -.cm-s-ambiance.CodeMirror-focused .CodeMirror-selected { - background: rgba(255, 255, 255, 0.10); -} - -/* Editor styling */ - -.cm-s-ambiance.CodeMirror { - line-height: 1.40em; - color: #E6E1DC; - background-color: #202020; - -webkit-box-shadow: inset 0 0 10px black; - -moz-box-shadow: inset 0 0 10px black; - box-shadow: inset 0 0 10px black; -} - -.cm-s-ambiance .CodeMirror-gutters { - background: #3D3D3D; - border-right: 1px solid #4D4D4D; - box-shadow: 0 10px 20px black; -} - -.cm-s-ambiance .CodeMirror-linenumber { - text-shadow: 0px 1px 1px #4d4d4d; - color: #111; - padding: 0 5px; -} - -.cm-s-ambiance .CodeMirror-guttermarker { color: #aaa; } -.cm-s-ambiance .CodeMirror-guttermarker-subtle { color: #111; } - -.cm-s-ambiance .CodeMirror-lines .CodeMirror-cursor { - border-left: 1px solid #7991E8; -} - -.cm-s-ambiance .CodeMirror-activeline-background { - background: none repeat scroll 0% 0% rgba(255, 255, 255, 0.031); -} - -.cm-s-ambiance.CodeMirror, -.cm-s-ambiance .CodeMirror-gutters { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAQAAAAHUWYVAABFFUlEQVQYGbzBCeDVU/74/6fj9HIcx/FRHx9JCFmzMyGRURhLZIkUsoeRfUjS2FNDtr6WkMhO9sm+S8maJfu+Jcsg+/o/c+Z4z/t97/vezy3z+z8ekGlnYICG/o7gdk+wmSHZ1z4pJItqapjoKXWahm8NmV6eOTbWUOp6/6a/XIg6GQqmenJ2lDHyvCFZ2cBDbmtHA043VFhHwXxClWmeYAdLhV00Bd85go8VmaFCkbVkzlQENzfBDZ5gtN7HwF0KDrTwJ0dypSOzpaKCMwQHKTIreYIxlmhXTzTWkVm+LTynZhiSBT3RZQ7aGfjGEd3qyXQ1FDymqbKxpspERQN2MiRjNZlFFQXfCNFm9nM1zpAsoYjmtRTc5ajwuaXc5xrWskT97RaKzAGe5ARHhVUsDbjKklziiX5WROcJwSNCNI+9w1Jwv4Zb2r7lCMZ4oq5C0EdTx+2GzNuKpJ+iFf38JEWkHJn9DNF7mmBDITrWEg0VWL3pHU20tSZnuqWu+R3BtYa8XxV1HO7GyD32UkOpL/yDloINFTmvtId+nmAjxRw40VMwVKiwrKLE4bK5UOVntYwhOcSSXKrJHKPJedocpGjVz/ZMIbnYUPB10/eKCrs5apqpgVmWzBYWpmtKHecJPjaUuEgRDDaU0oZghCJ6zNMQ5ZhDYx05r5v2muQdM0EILtXUsaKiQX9WMEUotagQzFbUNN6NUPC2nm5pxEWGCjMc3GdJHjSU2kORLK/JGSrkfGEIjncU/CYUnOipoYemwj8tST9NsJmB7TUVXtbUtXATJVZXBMvYeTXJfobgJUPmGMP/yFaWonaa6BcFO3nqcIqCozSZoZoSr1g4zJOzuyGnxTEX3lUEJ7WcZgme8ddaWvWJo2AJR9DZU3CUIbhCSG6ybSwN6qtJVnCU2svDTP2ZInOw2cBTrqtQahtNZn9NcJ4l2NaSmSkkP1noZWnVwkLmdUPOwLZEwy2Z3S3R+4rIG9hcbpPXHFVWcQdZkn2FOta3cKWQnNRC5g1LsJah4GCzSVsKnCOY5OAFRTBekyyryeyilhFKva75r4Mc0aWanGEaThcy31s439KKxTzJYY5WTHPU1FtIHjQU3Oip4xlNzj/lBw23dYZVliQa7WAXf4shetcQfatI+jWRDBPmyNeW6A1P5kdDgyYJlba0BIM8BZu1JfrFwItyjcAMR3K0BWOIrtMEXyhyrlVEx3ui5dUBjmB/Q3CXW85R4mBD0s7B+4q5tKUjOlb9qqmhi5AZ6GFIC5HXtOobdYGlVdMVbNJ8toNTFcHxnoL+muBagcctjWnbNMuR00uI7nQESwg5q2qqrKWIfrNUmeQocY6HuyxJV02wj36w00yhpmUFenv4p6fUkZYqLyuinx2RGOjhCXYyJF84oiU00YMOOhhquNdfbOB7gU88pY4xJO8LVdp6/q2voeB4R04vIdhSE40xZObx1HGGJ/ja0LBthFInKaLPPFzuCaYaoj8JjPME8yoyxo6zlBqkiUZYgq00OYMswbWO5NGmq+xhipxHLRW29ARjNKXO0wRnear8XSg4XFPLKEPUS1GqvyLwiuBUoa7zpZ0l5xxFwWmWZC1H5h5FwU8eQ7K+g8UcVY6TMQreVQT/8uQ8Z+ALIXnSEa2pYZQneE9RZbSBNYXfWYJzW/h/4j4Dp1tYVcFIC5019Vyi4ThPqSFCzjGWaHQTBU8q6vrVwgxP9Lkm840imWKpcLCjYTtrKuwvsKSnrvHCXGkSMk9p6lhckfRpIeis+N2PiszT+mFLspyGleUhDwcLrZqmyeylxwjBcKHEapqkmyangyLZRVOijwOtCY5SsG5zL0OwlCJ4y5KznF3EUNDDrinwiyLZRzOXtlBbK5ITHFGLp8Q0R6ab6mS7enI2cFrxOyHvOCFaT1HThS1krjCwqWeurCkk+willhCC+RSZnRXBiZaC5RXRIZYKp2lyfrHwiKPKR0JDzrdU2EFgpidawlFDR6FgXUMNa+g1FY3bUQh2cLCwosRdnuQTS/S+JVrGLeWIvtQUvONJxlqSQYYKpwoN2kaocLjdVsis4Mk80ESF2YpSkzwldjHkjFCUutI/r+EHDU8oCs6yzL3PhWiEooZdFMkymlas4AcI3KmoMMNSQ3tHzjGWCrcJJdYyZC7QFGwjRL9p+MrRkAGWzIaWCn9W0F3TsK01c2ZvQw0byvxuQU0r1lM0qJO7wW0kRIMdDTtXEdzi4VIh+EoIHm0mWtAtpCixlabgn83fKTI7anJe9ST7WIK1DMGpQmYeA58ImV6ezOGOzK2Kgq01pd60cKWiUi9Lievb/0vIDPHQ05Kzt4ddPckQBQtoaurjyHnek/nKzpQLrVgKPjIkh2v4uyezpv+Xoo7fPFXaGFp1vaLKxQ4uUpQQS5VuQs7BCq4xRJv7fwpVvvFEB3j+620haOuocqMhWd6TTPAEx+mdFNGHdranFe95WrWmIvlY4F1Dle2ECgc6cto7SryuqGGGha0tFQ5V53migUKmg6XKAo4qS3mik+0OZpAhOLeZKicacgaYcyx5hypYQE02ZA4xi/pNhOQxR4klNKyqacj+mpxnLTnnGSo85++3ZCZq6lrZkXlGEX3o+C9FieccJbZWVFjC0Yo1FZnJhoYMFoI1hEZ9r6hwg75HwzBNhbZCdJEfJwTPGzJvaKImw1yYX1HDAmpXR+ZJQ/SmgqMNVQb5vgamGwLtt7VwvP7Qk1xpiM5x5Cyv93E06MZmgs0Nya2azIKOYKCGBQQW97RmhKNKF02JZqHEJ4o58qp7X5EcZmc56trXEqzjCBZ1MFGR87Ql2tSTs6CGxS05PTzRQorkbw7aKoKXFDXsYW42VJih/q+FP2BdTzDTwVqOYB13liM50vG7wy28qagyuIXMeQI/Oqq8bcn5wJI50xH00CRntyfpL1T4hydYpoXgNiFzoIUTDZnLNRzh4TBHwbYGDvZkxmlyJloyr6tRihpeUG94GnKtIznREF0tzJG/OOr73JBcrSh1k6WuTprgLU+mnSGnv6Zge0NNz+kTDdH8nuAuTdJDCNb21LCiIuqlYbqGzT3RAoZofQfjFazkqeNWdYaGvYTM001EW2oKPvVk1ldUGSgUtHFwjKM1h9jnFcmy5lChoLNaQMGGDsYbKixlaMBmmsx1QjCfflwTfO/gckW0ruZ3jugKR3R5W9hGUWqCgxuFgsuaCHorotGKzGaeZB9DMsaTnKCpMtwTvOzhYk0rdrArKCqcaWmVk1+F372ur1YkKxgatI8Qfe1gIX9wE9FgS8ESmuABIXnRUbCapcKe+nO7slClSZFzpV/LkLncEb1qiO42fS3R855Su2mCLh62t1SYZZYVmKwIHjREF2uihTzB20JOkz7dkxzYQnK0UOU494wh+VWRc6Un2kpTaVgLDFEkJ/uhzRcI0YKGgpGWOlocBU/a4fKoJ/pEaNV6jip3+Es9VXY078rGnmAdf7t9ylPXS34RBSuYPs1UecZTU78WanhBCHpZ5sAoTz0LGZKjPf9TRypqWEiTvOFglL1fCEY3wY/++rbk7C8bWebA6p6om6PgOL2kp44TFJlVNBXae2rqqdZztOJpT87GQsE9jqCPIe9VReZuQ/CIgacsyZdCpIScSYqcZk8r+nsyCzhyfhOqHGOIvrLknC8wTpFcaYiGC/RU1NRbUeUpocQOnkRpGOrIOcNRx+1uA0UrzhSSt+VyS3SJpnFWkzNDqOFGIWcfR86DnmARTQ1HKIL33ExPiemeOhYSSjzlSUZZuE4TveoJLnBUOFof6KiysCbnAEcZgcUNTDOwkqWu3RWtmGpZwlHhJENdZ3miGz0lJlsKnjbwqSHQjpxnFDlTLLwqJPMZMjd7KrzkSG7VsxXBZE+F8YZkb01Oe00yyRK9psh5SYh29ySPKBo2ylNht7ZkZnsKenjKNJu9PNEyZpaCHv4Kt6RQsLvAVp7M9kIimmCUwGeWqLMmGuIotYMmWNpSahkhZw9FqZsVnKJhsjAHvtHMsTM9fCI06Dx/u3vfUXCqfsKRc4oFY2jMsoo/7DJDwZ1CsIKnJu+J9ldkpmiCxQx1rWjI+T9FwcWWzOuaYH0Hj7klNRVWEQpmaqosakiGNTFHdjS/qnUdmf0NJW5xsL0HhimCCZZSRzmSPTXJQ4aaztAwtZnoabebJ+htCaZ7Cm535ByoqXKbX1WRc4Eh2MkRXWzImVc96Cj4VdOKVxR84VdQsIUM8Psoou2byVHyZFuq7O8otbSQ2UAoeEWTudATLGSpZzVLlXVkPU2Jc+27lsw2jmg5T5VhbeE3BT083K9WsTTkFU/Osi0rC5lRlpwRHUiesNS0sOvmqGML1aRbPAxTJD9ZKtxuob+hhl8cwYGWpJ8nub7t5p6coYbMovZ1BTdaKn1jYD6h4GFDNFyT/Kqe1XCXphXHOKLZmuRSRdBPEfVUXQzJm5YGPGGJdvAEr7hHNdGZnuBvrpciGmopOLf5N0uVMy0FfYToJk90uUCbJupaVpO53UJXR2bVpoU00V2KOo4zMFrBd0Jtz2pa0clT5Q5L8IpQ177mWQejPMEJhuQjS10ref6HHjdEhy1P1EYR7GtO0uSsKJQYLiTnG1rVScj5lyazpqWGl5uBbRWl7m6ixGOOnEsMJR7z8J0n6KMnCdxhiNYQCoZ6CmYLnO8omC3MkW3bktlPmEt/VQQHejL3+dOE5FlPdK/Mq8hZxxJtLyRrepLThYKbLZxkSb5W52vYxNOaOxUF0yxMUPwBTYqCzy01XayYK0sJyWBLqX0MwU5CzoymRzV0EjjeUeLgDpTo6ij42ZAzvD01dHUUTPLU96MdLbBME8nFBn7zJCMtJcZokn8YoqU0FS5WFKyniHobguMcmW8N0XkWZjkyN3hqOMtS08r+/xTBwpZSZ3qiVRX8SzMHHjfUNFjgHEPmY9PL3ykEzxkSre/1ZD6z/NuznuB0RcE1TWTm9zRgfUWVJiG6yrzgmWPXC8EAR4Wxhlad0ZbgQyEz3pG5RVEwwDJH2mgKpjcTiCOzn1lfUWANFbZ2BA8balnEweJC9J0iuaeZoI+ippFCztEKVvckR2iice1JvhVytrQwUAZpgsubCPaU7xUe9vWnaOpaSBEspalykhC9bUlOMpT42ZHca6hyrqKmw/wMR8H5ZmdFoBVJb03O4UL0tSNnvIeRmkrLWqrs78gcrEn2tpcboh0UPOW3UUR9PMk4T4nnNKWmCjlrefhCwxRNztfmIQVdDElvS4m1/WuOujoZCs5XVOjtKPGokJzsYCtFYoWonSPT21DheU/wWhM19FcElwqNGOsp9Q8N/cwXaiND1MmeL1Q5XROtYYgGeFq1aTMsoMmcrKjQrOFQTQ1fmBYhmW6o8Jkjc7iDJRTBIo5kgJD5yMEYA3srCg7VFKwiVJkmRCc5ohGOKhsYMn/XBLdo5taZjlb9YAlGWRimqbCsoY7HFAXLa5I1HPRxMMsQDHFkWtRNniqT9UEeNjcE7RUlrCJ4R2CSJuqlKHWvJXjAUNcITYkenuBRB84TbeepcqTj3zZyFJzgYQdHnqfgI0ddUwS6GqWpsKWhjq9cV0vBAEMN2znq+EBfIWT+pClYw5xsTlJU6GeIBsjGmmANTzJZiIYpgrM0Oa8ZMjd7NP87jxhqGOhJlnQtjuQpB+8aEE00wZFznSJPyHxgH3HkPOsJFvYk8zqCHzTs1BYOa4J3PFU+UVRZxlHDM4YavlNUuMoRveiZA2d7grMNc2g+RbSCEKzmgYsUmWmazFJyoiOZ4KnyhKOGRzWJa0+moyV4TVHDzn51Awtqaphfk/lRQ08FX1iiqxTB/kLwd0VynKfEvI6cd4XMV5bMhZ7gZUWVzYQ6Nm2BYzxJbw3bGthEUUMfgbGeorae6DxHtJoZ6alhZ0+ytiVoK1R4z5PTrOECT/SugseEOlb1MMNR4VRNcJy+V1Hg9ONClSZFZjdHlc6W6FBLdJja2MC5hhpu0DBYEY1TFGwiFAxRRCsYkiM9JRb0JNMVkW6CZYT/2EiTGWmo8k+h4FhDNE7BvppoTSFnmCV5xZKzvcCdDo7VVPnIU+I+Rc68juApC90MwcFCsJ5hDqxgScYKreruyQwTqrzoqDCmhWi4IbhB0Yrt3RGa6GfDv52rKXWhh28dyZaWUvcZeMTBaZoSGyiCtRU5J8iviioHaErs7Jkj61syVzTTgOcUOQ8buFBTYWdL5g3T4qlpe0+wvD63heAXRfCCIed9RbCsp2CiI7raUOYOTU13N8PNHvpaGvayo4a3LLT1lDrVEPT2zLUlheB1R+ZTRfKWJ+dcocLJfi11vyJ51lLqJ0WD7tRwryezjiV5W28uJO9qykzX8JDe2lHl/9oyBwa2UMfOngpXCixvKdXTk3wrsKmiVYdZIqsoWEERjbcUNDuiaQomGoIbFdEHmsyWnuR+IeriKDVLnlawlyNHKwKlSU631PKep8J4Q+ayjkSLKYLhalNHlYvttb6fHm0p6OApsZ4l2VfdqZkjuysy6ysKLlckf1KUutCTs39bmCgEyyoasIWlVaMF7mgmWtBT8Kol5xpH9IGllo8cJdopcvZ2sImlDmMIbtDk3KIpeNiS08lQw11NFPTwVFlPP6pJ2gvRfI7gQUfmNAtf6Gs0wQxDsKGlVBdF8rCa3jzdwMaGHOsItrZk7hAyOzpK9VS06j5F49b0VNGOOfKs3lDToMsMBe9ZWtHFEgxTJLs7qrygKZjUnmCYoeAqeU6jqWuLJup4WghOdvCYJnrSkSzoyRkm5M2StQwVltPkfCAk58tET/CSg+8MUecmotMEnhBKfWBIZsg2ihruMJQaoIm+tkTLKEqspMh00w95gvFCQRtDwTT1gVDDSEVdlwqZfxoQRbK0g+tbiBZxzKlpnpypejdDwTaeOvorMk/IJE10h9CqRe28hhLbe0pMsdSwv4ZbhKivo2BjDWfL8UKJgeavwlwb5KlwhyE4u4XkGE2ytZCznKLCDZZq42VzT8HLCrpruFbIfOIINmh/qCdZ1ZBc65kLHR1Bkyf5zn6pN3SvGKIlFNGplhrO9QSXanLOMQTLCa0YJCRrCZm/CZmrLTm7WzCK4GJDiWUdFeYx1LCFg3NMd0XmCuF3Y5rITLDUsYS9zoHVzwnJoYpSTQoObyEzr4cFBNqYTopoaU/wkyLZ2lPhX/5Y95ulxGTV7KjhWrOZgl8MyUUafjYraNjNU1N3IWcjT5WzWqjwtoarHSUObGYO3GCJZpsBlnJGPd6ZYLyl1GdCA2625IwwJDP8GUKymbzuyPlZlvTUsaUh5zFDhRWFzPKKZLAlWdcQbObgF9tOqOsmB1dqcqYJmWstFbZRRI9poolmqiLnU0POvxScpah2iSL5UJNzgScY5+AuIbpO0YD3NCW+dLMszFSdFCWGqG6eVq2uYVNDdICGD6W7EPRWZEY5gpsE9rUkS3mijzzJnm6UpUFXG1hCUeVoS5WfNcFpblELL2qqrCvMvRfd45oalvKU2tiQ6ePJOVMRXase9iTtLJztPxJKLWpo2CRDcJwn2sWSLKIO1WQWNTCvpVUvOZhgSC40JD0dOctaSqzkCRbXsKlb11Oip6PCJ0IwSJM31j3akRxlP7Rwn6aGaUL0qiLnJkvB3xWZ2+Q1TfCwpQH3G0o92UzmX4o/oJNQMMSQc547wVHhdk+VCw01DFYEnTxzZKAm74QmeNNR1w6WzEhNK15VJzuCdxQ53dRUDws5KvwgBMOEgpcVNe0hZI6RXT1Jd0cyj5nsaEAHgVmGaJIlWdsc5Ui2ElrRR6jrRAttNMEAIWrTDFubkZaok7/AkzfIwfuWVq0jHzuCK4QabtLUMVPB3kJ0oyHTSVFlqMALilJf2Rf8k5aaHtMfayocLBS8L89oKoxpJvnAkDPa0qp5DAUTHKWmCcnthlou8iCKaFFLHWcINd1nyIwXqrSxMNmSs6KmoL2QrKuWtlQ5V0120xQ5vRyZS1rgFkWwhiOwiuQbR0OOVhQM9iS3tiXp4RawRPMp5tDletOOBL95MpM01dZTBM9pkn5qF010rIeHFcFZhmSGpYpTsI6nwhqe5C9ynhlpp5ophuRb6WcJFldkVnVEwwxVfrVkvnWUuNLCg5bgboFHPDlDPDmnK7hUrWiIbjadDclujlZcaokOFup4Ri1kacV6jmrrK1hN9bGwpKEBQ4Q6DvIUXOmo6U5LqQM6EPyiKNjVkPnJkDPNEaxhiFay5ExW1NXVUGqcpYYdPcGiCq7z/TSlbhL4pplWXKd7NZO5QQFrefhRQW/NHOsqcIglc4UhWklR8K0QzbAw08CBDnpbgqXdeD/QUsM4RZXDFBW6WJKe/mFPdH0LtBgiq57wFLzlyQzz82qYx5D5WJP5yVJDW01BfyHnS6HKO/reZqId1WGa4Hkh2kWodJ8i6KoIPlAj2hPt76CzXsVR6koPRzWTfKqIentatYpQw2me4AA3y1Kind3SwoOKZDcFXTwl9tWU6mfgRk9d71sKtlNwrjnYw5tC5n5LdKiGry3JKNlHEd3oaMCFHrazBPMp/uNJ+V7IudcSbeOIdjUEdwl0VHCOZo5t6YluEuaC9mQeMgSfOyKnYGFHcIeQ84yQWbuJYJpZw5CzglDH7gKnWqqM9ZTaXcN0TeYhR84eQtJT76JJ1lREe7WnnvsMmRc9FQ7SBBM9mV3lCUdmHk/S2RAMt0QjFNFqQpWjDPQ01DXWUdDBkXziKPjGEP3VP+zIWU2t7im41FOloyWzn/L6dkUy3VLDaZ6appgDLHPjJEsyvJngWEPUyVBiAaHCTEXwrLvSEbV1e1gKJniicWorC1MUrVjB3uDhJE/wgSOzk1DXpk0k73qCM8xw2UvD5kJmDUfOomqMpWCkJRlvKXGmoeBm18USjVIk04SClxTB6YrgLAPLWYK9HLUt5cmc0vYES8GnTeRc6skZbQkWdxRsIcyBRzx1DbTk9FbU0caTPOgJHhJKnOGIVhQqvKmo0llRw9sabrZkDtdg3PqaKi9oatjY8B+G371paMg6+mZFNNtQ04mWBq3rYLOmtWWQp8KJnpy9DdFensyjdqZ+yY40VJlH8wcdLzC8PZnvHMFUTZUrDTkLyQaGus5X5LzpYAf3i+e/ZlhqGqWhh6Ou6xTR9Z6oi5AZZtp7Mj2EEm8oSpxiYZCHU/1fbGdNNNRRoZMhmilEb2gqHOEJDtXkHK/JnG6IrvbPCwV3NhONVdS1thBMs1T4QOBcTWa2IzhMk2nW5Kyn9tXUtpv9RsG2msxk+ZsQzRQacJncpgke0+T8y5Fzj8BiGo7XlJjaTIlpQs7KFjpqGnKuoyEPeIKnFMkZHvopgh81ySxNFWvJWcKRs70j2FOT012IllEEO1n4pD1513Yg2ssQPOThOkvyrqHUdEXOSEsihmBbTbKX1kLBPWqWkLOqJbjB3GBIZmoa8qWl4CG/iZ7oiA72ZL7TJNeZUY7kFQftDcHHluBzRbCegzMtrRjVQpX2lgoPKKLJAkcbMl01XK2p7yhL8pCBbQ3BN2avJgKvttcrWDK3CiUOVxQ8ZP+pqXKyIxnmBymCg5vJjNfkPK4+c8cIfK8ocVt7kmfd/I5SR1hKvCzUtb+lhgc00ZaO6CyhIQP1Uv4yIZjload72PXX0OIJvnFU+0Zf6MhsJwTfW0r0UwQfW4LNLZl5HK261JCZ4qnBaAreVAS3WrjV0LBnNDUNNDToCEeFfwgcb4gOEqLRhirWkexrCEYKVV711DLYEE1XBEsp5tpTGjorkomKYF9FDXv7fR3BGwbettSxnyL53MBPjsxDZjMh+VUW9NRxq1DhVk+FSxQcaGjV9Pawv6eGByw5qzoy7xk4RsOShqjJwWKe/1pEEfzkobeD/dQJmpqedcyBTy2sr4nGNRH0c0SPWTLrqAc0OQcb/gemKgqucQT7ySWKCn2EUotoCvpZct7RO2sy/QW0IWcXd7pQRQyZVwT2USRO87uhjioTLKV2brpMUcMQRbKH/N2T+UlTpaMls6cmc6CCNy3JdYYSUzzJQ4oSD3oKLncULOiJvjBEC2oqnCJkJluCYy2ZQ5so9YYlZ1VLlQU1mXEW1jZERwj/MUSRc24TdexlqLKfQBtDTScJUV8FszXBEY5ktpD5Ur9hYB4Nb1iikw3JoYpkKX+RodRKFt53MMuRnKSpY31PwYaGaILh3wxJGz9TkTPEETxoCWZrgvOlmyMzxFEwVJE5xZKzvyJ4WxEc16Gd4Xe3Weq4XH2jKRikqOkGQ87hQnC7wBmGYLAnesX3M+S87eFATauuN+Qcrh7xIxXJbUIdMw3JGE3ylCWzrieaqCn4zhGM19TQ3z1oH1AX+pWEqIc7wNGAkULBo/ZxRaV9NNyh4Br3rCHZzbzmSfawBL0dNRwpW1kK9mxPXR9povcdrGSZK9c2k0xwFGzjuniCtRSZCZ6ccZ7gaktmgAOtKbG/JnOkJrjcQTdFMsxRQ2cLY3WTIrlCw1eWKn8R6pvt4GFDso3QoL4a3nLk3G6JrtME3dSenpx7PNFTmga0EaJTLQ061sEeQoWXhSo9LTXsaSjoJQRXeZLtDclbCrYzfzHHeaKjHCVOUkQHO3JeEepr56mhiyaYYKjjNU+Fed1wS5VlhWSqI/hYUdDOkaxiKehoyOnrCV5yBHtbWFqTHCCwtpDcYolesVR5yUzTZBb3RNMd0d6WP+SvhuBmRcGxnuQzT95IC285cr41cLGQ6aJJhmi4TMGempxeimBRQw1tFKV+8jd6KuzoSTqqDxzRtpZkurvKEHxlqXKRIjjfUNNXQsNOsRScoWFLT+YeRZVD3GRN0MdQcKqQjHDMrdGGVu3iYJpQx3WGUvfbmxwFfR20WBq0oYY7LMFhhgYtr8jpaEnaOzjawWWaTP8mMr0t/EPDPoqcnxTBI5o58L7uoWnMrpoqPwgVrlAUWE+V+TQl9rawoyP6QGAlQw2TPRX+YSkxyBC8Z6jhHkXBgQL7WII3DVFnRfCrBfxewv9D6xsyjys4VkhWb9pUU627JllV0YDNHMku/ldNMMXDEo4aFnAkk4U6frNEU4XgZUPmEKHUl44KrzmYamjAbh0JFvGnaTLPu1s9jPCwjFpYiN7z1DTOk/nc07CfDFzmCf7i+bfNHXhDtLeBXzTBT5rkMvWOIxpl4EMh2LGJBu2syDnAEx2naEhHDWMMzPZEhygyS1mS5RTJr5ZkoKbEUoYqr2kqdDUE8ztK7OaIntJkFrIECwv8LJTaVx5XJE86go8dFeZ3FN3rjabCAYpoYEeC9zzJVULBbmZhDyd7ko09ydpNZ3nm2Kee4FPPXHnYEF1nqOFEC08LUVcDvYXkJHW8gTaKCk9YGOeIJhqiE4ToPEepdp7IWFjdwnWaufGMwJJCMtUTTBBK9BGCOy2tGGrJTHIwyEOzp6aPzNMOtlZkDvcEWpP5SVNhfkvDxhmSazTJXYrM9U1E0xwFVwqZQwzJxw6+kGGGUj2FglGGmnb1/G51udRSMNlTw6GGnCcUwVcOpmsqTHa06o72sw1RL02p9z0VbnMLOaIX3QKaYKSCFQzBKEUNHTSc48k53RH9wxGMtpQa5KjjW0W0n6XCCCG4yxNNdhQ4R4l1Ff+2sSd6UFHiIEOyqqFgT01mEUMD+joy75jPhOA+oVVLm309FR4yVOlp4RhLiScNmSmaYF5Pw0STrOIoWMSR2UkRXOMp+M4SHW8o8Zoi6OZgjKOaFar8zZDzkWzvKOjkKBjmCXby8JahhjXULY4KlzgKLvAwxVGhvyd4zxB1d9T0piazmKLCVZY5sKiD0y2ZSYrkUEPUbIk+dlQ4SJHTR50k1DPaUWIdTZW9NJwnJMOECgd7ou/MnppMJ02O1VT4Wsh85MnZzcFTngpXGKo84qmwgKbCL/orR/SzJ2crA+t6Mp94KvxJUeIbT3CQu1uIdlQEOzlKfS3UMcrTiFmOuroocrZrT2AcmamOKg8YomeEKm/rlT2sociMaybaUlFhuqHCM2qIJ+rg4EcDFymiDSxzaHdPcpE62pD5kyM5SBMoA1PaUtfIthS85ig1VPiPPYXgYEMNk4Qq7TXBgo7oT57gPUdwgCHzhIVFPFU6OYJzHAX9m5oNrVjeE61miDrqQ4VSa1oiURTsKHC0IfjNwU2WzK6eqK8jWln4g15TVBnqmDteCJ501PGAocJhhqjZdtBEB6lnhLreFJKxmlKbeGrqLiSThVIbCdGzloasa6lpMQXHCME2boLpJgT7yWaemu6wBONbqGNVRS0PKIL7LckbjmQtR7K8I5qtqel+T/ChJTNIKLjdUMNIRyvOEko9YYl2cwQveBikCNawJKcLBbc7+JM92mysNvd/Fqp8a0k6CNEe7cnZrxlW0wQXaXjaktnRwNOGZKYiONwS7a1JVheq3WgJHlQUGKHKmp4KAxXR/ULURcNgoa4zhKSLpZR3kxRRb0NmD0OFn+UCS7CzI1nbP6+o4x47QZE5xRCt3ZagnYcvmpYQktXdk5YKXTzBC57kKEe0VVuiSYqapssMS3C9p2CKkHOg8B8Pa8p5atrIw3qezIWanMGa5HRDNF6RM9wcacl0N+Q8Z8hsIkSnaIIdHRUOEebAPy1zbCkhM062FCJtif7PU+UtoVXzWKqM1PxXO8cfdruhFQ/a6x3JKYagvVDhQEtNiyiiSQ7OsuRsZUku0CRNDs4Sog6KKjsZgk2bYJqijgsEenoKeniinRXBn/U3lgpPdyDZynQx8IiioMnCep5Ky8mjGs6Wty0l1hUQTcNWswS3WRp2kCNZwJG8omG8JphPUaFbC8lEfabwP7VtM9yoaNCAjpR41VNhrD9LkbN722v0CoZMByFzhaW+MyzRYEWFDQwN2M4/JiT76PuljT3VU/A36eaIThb+R9oZGOAJ9tewkgGvqOMNRWYjT/Cwu99Q8LqDE4TgbLWxJ1jaDDAERsFOFrobgjUsBScaguXU8kKm2RL19tRypSHnHNlHiIZqgufs4opgQdVdwxBNNFBR6kVFqb8ogimOzB6a6HTzrlDHEpYaxjiiA4TMQobkDg2vejjfwJGWmnbVFAw3H3hq2NyQfG7hz4aC+w3BbwbesG0swYayvpAs6++Ri1Vfzx93mFChvyN5xVHTS+0p9aqCAxyZ6ZacZyw5+7uuQkFPR9DDk9NOiE7X1PCYJVjVUqq7JlrHwWALF5nfHNGjApdpqgzx5OwilDhCiDYTgnc9waGW4BdLNNUQvOtpzDOWHDH8D7TR/A/85KljEQu3NREc4Pl/6B1Hhc8Umb5CsKMmGC9EPcxoT2amwHNCmeOEnOPbklnMkbOgIvO5UMOpQrS9UGVdt6iH/fURjhI/WOpaW9OKLYRod6HCUEdOX000wpDZQ6hwg6LgZfOqo1RfT/CrJzjekXOGhpc1VW71ZLbXyyp+93ILbC1kPtIEYx0FIx1VDrLoVzXRKRYWk809yYlC9ImcrinxtabKnzRJk3lAU1OLEN1j2zrYzr2myHRXJFf4h4QKT1qSTzTB5+ZNTzTRkAxX8FcLV2uS8eoQQ2aAkFzvCM72sJIcJET3WPjRk5wi32uSS9rfZajpWEvj9hW42F4o5NytSXYy8IKHay10VYdrcl4SkqscrXpMwyGOgtkajheSxdQqmpxP1L3t4R5PqasFnrQEjytq6qgp9Y09Qx9o4S1FzhUCn1kyHSzBWLemoSGvOqLNhZyBjmCaAUYpMgt4Ck7wBBMMwWKWgjsUwTaGVsxWC1mYoKiyqqeGKYqonSIRQ3KIkHO0pmAxTdBHkbOvfllfr+AA+7gnc50huVKYK393FOyg7rbPO/izI7hE4CnHHHnJ0ogNPRUGeUpsrZZTBJcrovUcJe51BPsr6GkJdhCCsZ6aTtMEb2pqWkqeVtDXE/QVggsU/Nl86d9RMF3DxvZTA58agu810RWawCiSzzXBeU3MMW9oyJUedvNEvQyNu1f10BSMddR1vaLCYpYa/mGocLSiYDcLbQz8aMn5iyF4xBNMs1P0QEOV7o5gaWGuzSeLue4tt3ro7y4Tgm4G/mopdZgl6q0o6KzJWE3mMksNr3r+a6CbT8g5wZNzT9O7fi/zpaOmnz3BRoqos+tv9zMbdpxsqDBOEewtJLt7cg5wtKKbvldpSzRRCD43VFheCI7yZLppggMVBS/KMAdHODJvOwq2NQSbKKKPLdFWQs7Fqo+mpl01JXYRgq8dnGLhTiFzqmWsUMdpllZdbKlyvSdYxhI9YghOtxR8LgSLWHK62mGGVoxzBE8LNWzqH9CUesQzFy5RQzTc56mhi6fgXEWwpKfE5Z7M05ZgZUPmo6auiv8YKzDYwWBLMErIbKHJvOwIrvEdhOBcQ9JdU1NHQ7CXn2XIDFBKU2WAgcX9UAUzDXWd5alwuyJ41Z9rjKLCL4aCp4WarhPm2rH+SaHUYE001JDZ2ZAzXPjdMpZWvC9wmqIB2lLhQ01D5jO06hghWMndbM7yRJMsoCj1vYbnFQVrW9jak3OlEJ3s/96+p33dEPRV5GxiqaGjIthUU6FFEZyqCa5qJrpBdzSw95IUnOPIrCUUjRZQFrbw5PR0R1qiYx3cb6nrWUMrBmmiBQxVHtTew5ICP/ip6g4hed/Akob/32wvBHsIOX83cI8hGeNeNPCIkPmXe8fPKx84OMSRM1MTdXSwjCZ4S30jVGhvqTRak/OVhgGazHuOCud5onEO1lJr6ecVyaOK6H7zqlBlIaHE0oroCgfvGJIdPcmfLNGLjpz7hZwZQpUbFME0A1cIJa7VNORkgfsMBatbKgwwJM9bSvQXeNOvbIjelg6WWvo5kvbKaJJNHexkKNHL9xRyFlH8Ti2riB5wVPhUk7nGkJnoCe428LR/wRGdYIlmWebCyxou1rCk4g/ShugBDX0V0ZQWkh0dOVsagkM0yV6OoLd5ye+pRlsCr0n+KiQrGuq5yJDzrTAXHtLUMduTDBVKrSm3eHL+6ijxhFDX9Z5gVU/wliHYTMiMFpKLNMEywu80wd3meoFmt6VbRMPenhrOc6DVe4pgXU8DnnHakLOIIrlF4FZPIw6R+zxBP0dyq6OOZ4Q5sLKCcz084ok+VsMMyQhNZmmBgX5xIXOEJTmi7VsGTvMTNdHHhpzdbE8Du2oKxgvBqQKdDDnTFOylCFaxR1syz2iqrOI/FEpNc3C6f11/7+ASS6l2inq2ciTrCCzgyemrCL5SVPjQkdPZUmGy2c9Sw9FtR1sS30RmsKPCS4rkIC/2U0MduwucYolGaPjKEyhzmiPYXagyWbYz8LWBDdzRimAXzxx4z8K9hpzlhLq+NiQ97HuKorMUfK/OVvC2JfiHUPCQI/q7J2gjK+tTDNxkCc4TMssqCs4TGtLVwQihyoAWgj9bosU80XGW6Ac9TJGziaUh5+hnFcHOnlaM1iRn29NaqGENTTTSUHCH2tWTeV0osUhH6psuVLjRUmGWhm6OZEshGeNowABHcJ2Bpy2ZszRcKkRXd2QuKVEeXnbfaEq825FguqfgfE2whlChSRMdron+LATTPQ2Z369t4B9C5gs/ylzv+CMmepIDPclFQl13W0rspPd1JOcbghGOEutqCv5qacURQl3dDKyvyJlqKXGPgcM9FfawJAMVmdcspcYKOZc4GjDYkFlK05olNMHyHn4zFNykyOxt99RkHlfwmiHo60l2EKI+mhreEKp080Tbug08BVPcgoqC5zWt+NLDTZ7oNSF51N1qie7Va3uCCwyZbkINf/NED6jzOsBdZjFN8oqG3wxVunqCSYYKf3EdhJyf9YWGf7tRU2oH3VHgPr1fe5J9hOgHd7xQ0y7qBwXr23aGErP0cm64JVjZwsOGqL+mhNgZmhJLW2oY4UhedsyBgzrCKrq7BmcpNVhR6jBPq64Vgi+kn6XE68pp8J5/+0wRHGOpsKenQn9DZntPzjRLZpDAdD2fnSgkG9tmIXnUwQ6WVighs7Yi2MxQ0N3CqYaCXkJ0oyOztMDJjmSSpcpvlrk0RMMOjmArQ04PRV1DO1FwhCVaUVPpKUM03JK5SxPsIWRu8/CGHi8UHChiqGFDTbSRJWeYUDDcH6vJWUxR4k1FXbMUwV6e4AJFXS8oMqsZKqzvYQ9DDQdZckY4aGsIhtlubbd2r3j4QBMoTamdPZk7O/Bf62lacZwneNjQoGcdVU7zJOd7ghsUHOkosagic6cnWc8+4gg285R6zZP5s1/LUbCKIznTwK36PkdwlOrl4U1LwfdCCa+IrvFkmgw1PCAUXKWo0sURXWcI2muKJlgyFzhynCY4RBOsqCjoI1R5zREco0n2Vt09BQtYSizgKNHfUmUrQ5UOCh51BFcLmY7umhYqXKQomOop8bUnWNNQcIiBcYaC6xzMNOS8JQQfeqKBmmglB+97ok/lfk3ygaHSyZaCRTzRxQo6GzLfa2jWBPepw+UmT7SQEJyiyRkhBLMVOfcoMjcK0eZChfUNzFAUzCsEN5vP/X1uP/n/aoMX+K+nw/Hjr/9xOo7j7Pju61tLcgvJpTWXNbfN5jLpi6VfCOviTktKlFusQixdEKWmEBUKNaIpjZRSSOXSgzaaKLdabrm1/9nZ+/f+vd/vz/v9+Xy+zZ7PRorYoZqyLrCwQdEAixxVOEXNNnjX2nUSRlkqGmWowk8lxR50JPy9Bo6qJXaXwNvREBvnThPEPrewryLhcAnj5WE15Fqi8W7R1sAuEu86S4ENikItFN4xkv9Af4nXSnUVcLiA9xzesFpivRRVeFKtsMRaKBhuSbjOELnAUtlSQUpXgdfB4Z1oSbnFEetbQ0IrAe+Y+pqnDcEJFj6S8LDZzZHwY4e3XONNlARraomNEt2bkvGsosA3ioyHm+6jCMbI59wqt4eeara28IzEmyPgoRaUOEDhTVdEJhmCoTWfC0p8aNkCp0oYqih2iqGi4yXeMkOsn4LdLLnmKfh/YogjNsPebeFGR4m9BJHLzB61XQ3BtpISfS2FugsK9FAtLWX1dCRcrCnUp44CNzuCowUZmxSRgYaE6Za0W2u/E7CVXCiI/UOR8aAm1+OSyE3mOUcwyc1zBBeoX1kiKy0Zfxck1Gsyulti11i83QTBF5Kg3pDQThFMVHiPSlK+0cSedng/VaS8bOZbtsBcTcZAR8JP5KeqQ1OYKAi20njdNNRpgnsU//K+JnaXJaGTomr7aYIphoRn9aeShJWKEq9LcozSF7QleEfDI5LYm5bgVkFkRwVDBCVu0DDIkGupo8TZBq+/pMQURYErJQmPKGKjNDkWOLx7Jd5QizdUweIaKrlP7SwJDhZvONjLkOsBBX9UpGxnydhXkfBLQ8IxgojQbLFnJf81JytSljclYYyEFyx0kVBvKWOFJmONpshGAcsduQY5giVNCV51eOdJYo/pLhbvM0uDHSevNKRcrKZIqnCtJeEsO95RoqcgGK4ocZcho1tTYtcZvH41pNQ7vA0WrhIfOSraIIntIAi+NXWCErdbkvrWwjRLrt0NKUdL6KSOscTOdMSOUtBHwL6OLA0vNSdynaWQEnCpIvKaIrJJEbvHkmuNhn6OjM8VkSGSqn1uYJCGHnq9I3aLhNME3t6GjIkO7xrNFumpyTNX/NrwX7CrIRiqqWijI9JO4d1iieykyfiposQIQ8YjjsjlBh6oHWbwRjgYJQn2NgSnNycmJAk3NiXhx44Sxykihxm8ybUwT1OVKySc7vi3OXVkdBJ4AyXBeksDXG0IhgtYY0lY5ahCD0ehborIk5aUWRJviMA7Xt5kyRjonrXENkm8yYqgs8VzgrJmClK20uMM3jRJ0FiQICQF9hdETlLQWRIb5ki6WDfWRPobvO6a4GP5mcOrNzDFELtTkONLh9dXE8xypEg7z8A9jkhrQ6Fhjlg/QVktJXxt4WXzT/03Q8IaQWSqIuEvloQ2mqC9Jfi7wRul4RX3pSPlzpoVlmCtI2jvKHCFhjcM3sN6lqF6HxnKelLjXWbwrpR4xzuCrTUZx2qq9oAh8p6ixCUGr78g8oyjRAtB5CZFwi80VerVpI0h+IeBxa6Zg6kWvpDHaioYYuEsRbDC3eOmC2JvGYLeioxGknL2UATNJN6hmtj1DlpLvDVmocYbrGCVJKOrg4X6DgddLA203BKMFngdJJFtFd7vJLm6KEpc5yjQrkk7M80SGe34X24nSex1Ra5Omgb71JKyg8SrU3i/kARKwWpH0kOGhKkObyfd0ZGjvyXlAkVZ4xRbYJ2irFMkFY1SwyWxr2oo4zlNiV+7zmaweFpT4kR3kaDAFW6xpSqzJay05FtYR4HmZhc9UxKbbfF2V8RG1MBmSaE+kmC6JnaRXK9gsiXhJHl/U0qM0WTcbyhwkYIvFGwjSbjfwhiJt8ZSQU+Bd5+marPMOkVkD0muxYLIfEuhh60x/J92itguihJSEMySVPQnTewnEm+620rTQEMsOfo4/kP/0ARvWjitlpSX7GxBgcMEsd3EEeYWvdytd+Saawi6aCIj1CkGb6Aj9rwhx16Cf3vAwFy5pyLhVonXzy51FDpdEblbkdJbUcEPDEFzQ8qNmhzzLTmmKWKbFCXeEuRabp6rxbvAtLF442QjQ+wEA9eL1xSR7Q0JXzlSHjJ4exq89yR0laScJ/FW6z4a73pFMEfDiRZvuvijIt86RaSFOl01riV2mD1UEvxGk/Geg5aWwGki1zgKPG9J2U8PEg8qYvMsZeytiTRXBMslCU8JSlxi8EabjwUldlDNLfzTUmCgxWsjqWCOHavYAqsknKFIO0yQ61VL5AVFxk6WhEaCAkdJgt9aSkzXlKNX2jEa79waYuc7gq0N3GDJGCBhoiTXUEPsdknCUE1CK0fwsiaylSF2uiDyO4XX3pFhNd7R4itFGc0k/ElBZwWvq+GC6szVeEoS/MZ+qylwpKNKv9Z469UOjqCjwlusicyTxG6VpNxcQ8IncoR4RhLbR+NdpGGmJWOcIzJGUuKPGpQg8rrG21dOMqQssJQ4RxH5jaUqnZuQ0F4Q+cjxLwPtpZbIAk3QTJHQWBE5S1BokoVtDd6lhqr9UpHSUxMcIYl9pojsb8h4SBOsMQcqvOWC2E8EVehqiJ1hrrAEbQxeK0NGZ0Gkq+guSRgniM23bIHVkqwx4hiHd7smaOyglyIyQuM978j4VS08J/A2G1KeMBRo4fBaSNhKUEZfQewVQ/C1I+MgfbEleEzCUw7mKXI0M3hd1EESVji8x5uQ41nxs1q4RMJCCXs7Iq9acpxn22oSDnQ/sJTxsCbHIYZiLyhY05TY0ZLIOQrGaSJDDN4t8pVaIrsqqFdEegtizc1iTew5Q4ayBDMUsQMkXocaYkc0hZua412siZ1rSXlR460zRJ5SlHGe5j801RLMlJTxtaOM3Q1pvxJ45zUlWFD7rsAbpfEm1JHxG0eh8w2R7QQVzBUw28FhFp5QZzq8t2rx2joqulYTWSuJdTYfWwqMFMcovFmSyJPNyLhE4E10pHzYjOC3huArRa571ZsGajQpQx38SBP5pyZB6lMU3khDnp0MBV51BE9o2E+TY5Ml2E8S7C0o6w1xvCZjf0HkVEHCzFoyNmqC+9wdcqN+Tp7jSDheE9ws8Y5V0NJCn2bk2tqSY4okdrEhx1iDN8cSudwepWmAGXKcJXK65H9to8jYQRH7SBF01ESUJdd0TayVInaWhLkOjlXE5irKGOnI6GSWGCJa482zBI9rCr0jyTVcEuzriC1vcr6mwFGSiqy5zMwxBH/TJHwjSPhL8+01kaaSUuMFKTcLEvaUePcrSmwn8DZrgikWb7CGPxkSjhQwrRk57tctmxLsb9sZvL9LSlyuSLlWkqOjwduo8b6Uv1DkmudIeFF2dHCgxVtk8dpIvHpBxhEOdhKk7OLIUSdJ+cSRY57B+0DgGUUlNfpthTfGkauzxrvTsUUaCVhlKeteTXCoJDCa2NOKhOmC4G1H8JBd4OBZReSRGkqcb/CO1PyLJTLB4j1q8JYaIutEjSLX8YKM+a6phdMsdLFUoV5RTm9JSkuDN8WcIon0NZMNZWh1q8C7SJEwV5HxrmnnTrf3KoJBlmCYI2ilSLlfEvlE4011NNgjgthzEua0oKK7JLE7HZHlEl60BLMVFewg4EWNt0ThrVNEVkkiTwpKXSWJzdRENgvKGq4IhjsiezgSFtsfCUq8qki5S1LRQeYQQ4nemmCkImWMw3tFUoUBZk4NOeZYEp4XRKTGa6wJjrWNHBVJR4m3FCnbuD6aak2WsMTh3SZImGCIPKNgsDpVwnsa70K31lCFJZYcwwSMFcQulGTsZuEaSdBXkPGZhu0FsdUO73RHjq8MPGGIfaGIbVTk6iuI3GFgucHrIQkmWSJdBd7BBu+uOryWAhY7+Lki9rK5wtEQzWwvtbqGhIMFwWRJsElsY4m9IIg9L6lCX0VklaPAYkfkZEGDnOWowlBJjtMUkcGK4Lg6EtoZInMUBVYLgn0UsdmCyCz7gIGHFfk+k1QwTh5We7A9x+IdJ6CvIkEagms0hR50eH9UnTQJ+2oiKyVlLFUE+8gBGu8MQ3CppUHesnjTHN4QB/UGPhCTHLFPHMFrCqa73gqObUJGa03wgbhHkrCfpEpzNLE7JDS25FMKhlhKKWKfCgqstLCPu1zBXy0J2ztwjtixBu8UTRn9LVtkmCN2iyFhtME70JHRQ1KVZXqKI/KNIKYMCYs1GUMEKbM1bKOI9LDXC7zbHS+bt+1MTWS9odA9DtrYtpbImQJ2VHh/lisEwaHqUk1kjKTAKknkBEXkbkdMGwq0dnhzLJF3NJH3JVwrqOB4Sca2hti75nmJN0WzxS6UxDYoEpxpa4htVlRjkYE7DZGzJVU72uC9IyhQL4i8YfGWSYLLNcHXloyz7QhNifmKSE9JgfGmuyLhc403Xm9vqcp6gXe3xuuv8F6VJNxkyTHEkHG2g0aKXL0MsXc1bGfgas2//dCONXiNLCX+5mB7eZIl1kHh7ajwpikyzlUUWOVOsjSQlsS+M0R+pPje/dzBXRZGO0rMtgQrLLG9VSu9n6CMXS3BhwYmSoIBhsjNBmZbgusE9BCPCP5triU4VhNbJfE+swSP27aayE8tuTpYYjtrYjMVGZdp2NpS1s6aBnKSHDsbKuplKbHM4a0wMFd/5/DmGyKrJSUaW4IBrqUhx0vyfzTBBLPIUcnZdrAkNsKR0sWRspumSns6Ch0v/qqIbBYUWKvPU/CFoyrDJGwSNFhbA/MlzKqjrO80hRbpKx0Jewsi/STftwGSlKc1JZyAzx05dhLEdnfQvhZOqiHWWEAHC7+30FuRcZUgaO5gpaIK+xsiHRUsqaPElTV40xQZQ107Q9BZE1nryDVGU9ZSQ47bmhBpLcYpUt7S+xuK/FiT8qKjwXYw5ypS2iuCv7q1gtgjhuBuB8LCFY5cUuCNtsQOFcT+4Ih9JX+k8Ea6v0iCIRZOtCT0Et00JW5UeC85Cg0ScK0k411HcG1zKtre3SeITBRk7WfwDhEvaYLTHP9le0m8By0JDwn4TlLW/aJOvGHxdjYUes+ScZigCkYQdNdEOhkiezgShqkx8ueKjI8lDfK2oNiOFvrZH1hS+tk7NV7nOmLHicGWEgubkXKdwdtZknCLJXaCpkrjZBtLZFsDP9CdxWsSr05Sxl6CMmoFbCOgryX40uDtamB7SVmXW4Ihlgpmq+00tBKUUa83WbjLUNkzDmY7cow1JDygyPGlhgGKYKz4vcV7QBNbJIgM11TUqZaMdwTeSguH6rOaw1JRKzaaGyxVm2EJ/uCIrVWUcZUkcp2grMsEjK+DMwS59jQk3Kd6SEq1d0S6uVmO4Bc1lDXTUcHjluCXEq+1OlBDj1pi9zgiXxnKuE0SqTXwhqbETW6RggMEnGl/q49UT2iCzgJvRwVXS2K/d6+ZkyUl7jawSVLit46EwxVljDZwoSQ20sDBihztHfk2yA8NVZghiXwrYHQdfKAOtzsayjhY9bY0yE2CWEeJ9xfzO423xhL5syS2TFJofO2pboHob0nY4GiAgRrvGQEDa/FWSsoaaYl0syRsEt3kWoH3B01shCXhTUWe9w3Bt44SC9QCh3eShQctwbaK2ApLroGCMlZrYqvlY3qYhM0aXpFkPOuoqJ3Dm6fxXrGwVF9gCWZagjPqznfkuMKQ8DPTQRO8ZqG1hPGKEm9IgpGW4DZDgTNriTxvFiq+Lz+0cKfp4wj6OCK9JSnzNSn9LFU7UhKZZMnYwcJ8s8yRsECScK4j5UOB95HFO0CzhY4xJxuCix0lDlEUeMdS6EZBkTsUkZ4K74dugyTXS7aNgL8aqjDfkCE0ZbwkCXpaWCKhl8P7VD5jxykivSyxyZrYERbe168LYu9ZYh86IkscgVLE7tWPKmJv11CgoyJltMEbrohtVAQfO4ImltiHEroYEs7RxAarVpY8AwXMcMReFOTYWe5iiLRQxJ5Q8DtJ8LQhWOhIeFESPGsILhbNDRljNbHzNRlTFbk2S3L0NOS6V1KFJYKUbSTcIIhM0wQ/s2TM0SRMNcQmSap3jCH4yhJZKSkwyRHpYYgsFeQ4U7xoCB7VVOExhXepo9ABBsYbvGWKXPME3lyH95YioZ0gssQRWWbI+FaSMkXijZXwgiTlYdPdkNLaETxlyDVIwqeaEus0aTcYcg0RVOkpR3CSJqIddK+90JCxzsDVloyrFd5ZAr4TBKfaWa6boEA7C7s6EpYaeFPjveooY72mjIccLHJ9HUwVlDhKkmutJDJBwnp1rvulJZggKDRfbXAkvC/4l3ozQOG9a8lxjx0i7nV4jSXc7vhe3OwIxjgSHjdEhhsif9YkPGlus3iLFDnWOFhtCZbJg0UbQcIaR67JjthoCyMEZRwhiXWyxO5QxI6w5NhT4U1WsJvDO60J34fW9hwzwlKij6ZAW9ne4L0s8C6XeBMEkd/LQy1VucBRot6QMlbivaBhoBgjqGiCJNhsqVp/S2SsG6DIONCR0dXhvWbJ+MRRZJkkuEjgDXJjFQW6SSL7GXK8Z2CZg7cVsbWGoKmEpzQ5elpiy8Ryg7dMkLLUEauzeO86CuwlSOlgYLojZWeJ9xM3S1PWfEfKl5ISLQ0MEKR8YOB2QfCxJBjrKPCN4f9MkaSsqoVXJBmP7EpFZ9UQfOoOFwSzBN4MQ8LsGrymlipcJQhmy0GaQjPqCHaXRwuCZwRbqK2Fg9wlClZqYicrIgMdZfxTQ0c7TBIbrChxmuzoKG8XRaSrIhhiyNFJkrC7oIAWMEOQa5aBekPCRknCo4IKPrYkvCDI8aYmY7WFtprgekcJZ3oLIqssCSMtFbQTJKwXYy3BY5oCh2iKPCpJOE+zRdpYgi6O2KmOAgvVCYaU4ySRek1sgyFhJ403QFHiVEmJHwtybO1gs8Hr5+BETQX3War0qZngYGgtVZtoqd6vFSk/UwdZElYqyjrF4HXUeFspIi9IGKf4j92pKGAdCYMVsbcV3kRF0N+R8LUd5PCsIGWoxDtBkCI0nKofdJQxT+LtZflvuc8Q3CjwWkq8KwUpHzkK/NmSsclCL0nseQdj5FRH5CNHSgtLiW80Of5HU9Hhlsga9bnBq3fEVltKfO5IaSTmGjjc4J0otcP7QsJUSQM8pEj5/wCuUuC2DWz8AAAAAElFTkSuQmCC"); -} diff --git a/assets/css/plugins/codemirror/codemirror.css b/assets/css/plugins/codemirror/codemirror.css deleted file mode 100644 index 68c67b17..00000000 --- a/assets/css/plugins/codemirror/codemirror.css +++ /dev/null @@ -1,309 +0,0 @@ -/* BASICS */ - -.CodeMirror { - /* Set height, width, borders, and global font properties here */ - font-family: monospace; - height: 300px; -} -.CodeMirror-scroll { - /* Set scrolling behaviour here */ - overflow: auto; -} - -/* PADDING */ - -.CodeMirror-lines { - padding: 4px 0; /* Vertical padding around content */ -} -.CodeMirror pre { - padding: 0 4px; /* Horizontal padding of content */ -} - -.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { - background-color: white; /* The little square between H and V scrollbars */ -} - -/* GUTTER */ - -.CodeMirror-gutters { - border-right: 1px solid #ddd; - background-color: #f7f7f7; - white-space: nowrap; -} -.CodeMirror-linenumbers {} -.CodeMirror-linenumber { - padding: 0 3px 0 5px; - min-width: 20px; - text-align: right; - color: #999; - -moz-box-sizing: content-box; - box-sizing: content-box; -} - -.CodeMirror-guttermarker { color: black; } -.CodeMirror-guttermarker-subtle { color: #999; } - -/* CURSOR */ - -.CodeMirror div.CodeMirror-cursor { - border-left: 1px solid black; -} -/* Shown when moving in bi-directional text */ -.CodeMirror div.CodeMirror-secondarycursor { - border-left: 1px solid silver; -} -.CodeMirror.cm-keymap-fat-cursor div.CodeMirror-cursor { - width: auto; - border: 0; - background: #7e7; -} -.CodeMirror.cm-keymap-fat-cursor div.CodeMirror-cursors { - z-index: 1; -} - -.cm-animate-fat-cursor { - width: auto; - border: 0; - -webkit-animation: blink 1.06s steps(1) infinite; - -moz-animation: blink 1.06s steps(1) infinite; - animation: blink 1.06s steps(1) infinite; -} -@-moz-keyframes blink { - 0% { background: #7e7; } - 50% { background: none; } - 100% { background: #7e7; } -} -@-webkit-keyframes blink { - 0% { background: #7e7; } - 50% { background: none; } - 100% { background: #7e7; } -} -@keyframes blink { - 0% { background: #7e7; } - 50% { background: none; } - 100% { background: #7e7; } -} - -/* Can style cursor different in overwrite (non-insert) mode */ -div.CodeMirror-overwrite div.CodeMirror-cursor {} - -.cm-tab { display: inline-block; text-decoration: inherit; } - -.CodeMirror-ruler { - border-left: 1px solid #ccc; - position: absolute; -} - -/* DEFAULT THEME */ - -.cm-s-default .cm-keyword {color: #708;} -.cm-s-default .cm-atom {color: #219;} -.cm-s-default .cm-number {color: #164;} -.cm-s-default .cm-def {color: #00f;} -.cm-s-default .cm-variable, -.cm-s-default .cm-punctuation, -.cm-s-default .cm-property, -.cm-s-default .cm-operator {} -.cm-s-default .cm-variable-2 {color: #05a;} -.cm-s-default .cm-variable-3 {color: #085;} -.cm-s-default .cm-comment {color: #a50;} -.cm-s-default .cm-string {color: #a11;} -.cm-s-default .cm-string-2 {color: #f50;} -.cm-s-default .cm-meta {color: #555;} -.cm-s-default .cm-qualifier {color: #555;} -.cm-s-default .cm-builtin {color: #30a;} -.cm-s-default .cm-bracket {color: #997;} -.cm-s-default .cm-tag {color: #170;} -.cm-s-default .cm-attribute {color: #00c;} -.cm-s-default .cm-header {color: blue;} -.cm-s-default .cm-quote {color: #090;} -.cm-s-default .cm-hr {color: #999;} -.cm-s-default .cm-link {color: #00c;} - -.cm-negative {color: #d44;} -.cm-positive {color: #292;} -.cm-header, .cm-strong {font-weight: bold;} -.cm-em {font-style: italic;} -.cm-link {text-decoration: underline;} - -.cm-s-default .cm-error {color: #f00;} -.cm-invalidchar {color: #f00;} - -/* Default styles for common addons */ - -div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;} -div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;} -.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); } -.CodeMirror-activeline-background {background: #e8f2ff;} - -/* STOP */ - -/* The rest of this file contains styles related to the mechanics of - the editor. You probably shouldn't touch them. */ - -.CodeMirror { - line-height: 1; - position: relative; - overflow: hidden; - background: white; - color: black; -} - -.CodeMirror-scroll { - /* 30px is the magic margin used to hide the element's real scrollbars */ - /* See overflow: hidden in .CodeMirror */ - margin-bottom: -30px; margin-right: -30px; - padding-bottom: 30px; - height: 100%; - outline: none; /* Prevent dragging from highlighting the element */ - position: relative; - -moz-box-sizing: content-box; - box-sizing: content-box; -} -.CodeMirror-sizer { - position: relative; - border-right: 30px solid transparent; - -moz-box-sizing: content-box; - box-sizing: content-box; -} - -/* The fake, visible scrollbars. Used to force redraw during scrolling - before actuall scrolling happens, thus preventing shaking and - flickering artifacts. */ -.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { - position: absolute; - z-index: 6; - display: none; -} -.CodeMirror-vscrollbar { - right: 0; top: 0; - overflow-x: hidden; - overflow-y: scroll; -} -.CodeMirror-hscrollbar { - bottom: 0; left: 0; - overflow-y: hidden; - overflow-x: scroll; -} -.CodeMirror-scrollbar-filler { - right: 0; bottom: 0; -} -.CodeMirror-gutter-filler { - left: 0; bottom: 0; -} - -.CodeMirror-gutters { - position: absolute; left: 0; top: 0; - padding-bottom: 30px; - z-index: 3; -} -.CodeMirror-gutter { - white-space: normal; - height: 100%; - -moz-box-sizing: content-box; - box-sizing: content-box; - padding-bottom: 30px; - margin-bottom: -32px; - display: inline-block; - /* Hack to make IE7 behave */ - *zoom:1; - *display:inline; -} -.CodeMirror-gutter-elt { - position: absolute; - cursor: default; - z-index: 4; -} - -.CodeMirror-lines { - cursor: text; - min-height: 1px; /* prevents collapsing before first draw */ -} -.CodeMirror pre { - /* Reset some styles that the rest of the page might have set */ - -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; - border-width: 0; - background: transparent; - font-family: inherit; - font-size: inherit; - margin: 0; - white-space: pre; - word-wrap: normal; - line-height: inherit; - color: inherit; - z-index: 2; - position: relative; - overflow: visible; -} -.CodeMirror-wrap pre { - word-wrap: break-word; - white-space: pre-wrap; - word-break: normal; -} - -.CodeMirror-linebackground { - position: absolute; - left: 0; right: 0; top: 0; bottom: 0; - z-index: 0; -} - -.CodeMirror-linewidget { - position: relative; - z-index: 2; - overflow: auto; -} - -.CodeMirror-widget {} - -.CodeMirror-wrap .CodeMirror-scroll { - overflow-x: hidden; -} - -.CodeMirror-measure { - position: absolute; - width: 100%; - height: 0; - overflow: hidden; - visibility: hidden; -} -.CodeMirror-measure pre { position: static; } - -.CodeMirror div.CodeMirror-cursor { - position: absolute; - border-right: none; - width: 0; -} - -div.CodeMirror-cursors { - visibility: hidden; - position: relative; - z-index: 3; -} -.CodeMirror-focused div.CodeMirror-cursors { - visibility: visible; -} - -.CodeMirror-selected { background: #d9d9d9; } -.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; } -.CodeMirror-crosshair { cursor: crosshair; } - -.cm-searching { - background: #ffa; - background: rgba(255, 255, 0, .4); -} - -/* IE7 hack to prevent it from returning funny offsetTops on the spans */ -.CodeMirror span { *vertical-align: text-bottom; } - -/* Used to force a border model for a node */ -.cm-force-border { padding-right: .1px; } - -@media print { - /* Hide the cursor when printing */ - .CodeMirror div.CodeMirror-cursors { - visibility: hidden; - } -} - -/* Help users use markselection to safely style text background */ -span.CodeMirror-selectedtext { background: none; } diff --git a/assets/css/plugins/colorpicker/bootstrap-colorpicker.min.css b/assets/css/plugins/colorpicker/bootstrap-colorpicker.min.css deleted file mode 100644 index 032cca2f..00000000 --- a/assets/css/plugins/colorpicker/bootstrap-colorpicker.min.css +++ /dev/null @@ -1,9 +0,0 @@ -/*! - * Bootstrap Colorpicker - * http://mjolnic.github.io/bootstrap-colorpicker/ - * - * Originally written by (c) 2012 Stefan Petre - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0.txt - * - */.colorpicker-saturation{float:left;width:100px;height:100px;cursor:crosshair;background-image:url("../images/bootstrap-colorpicker/saturation.png")}.colorpicker-saturation i{position:absolute;top:0;left:0;display:block;width:5px;height:5px;margin:-4px 0 0 -4px;border:1px solid #000;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.colorpicker-saturation i b{display:block;width:5px;height:5px;border:1px solid #fff;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.colorpicker-hue,.colorpicker-alpha{float:left;width:15px;height:100px;margin-bottom:4px;margin-left:4px;cursor:row-resize}.colorpicker-hue i,.colorpicker-alpha i{position:absolute;top:0;left:0;display:block;width:100%;height:1px;margin-top:-1px;background:#000;border-top:1px solid #fff}.colorpicker-hue{background-image:url("../images/bootstrap-colorpicker/hue.png")}.colorpicker-alpha{display:none;background-image:url("../images/bootstrap-colorpicker/alpha.png")}.colorpicker{top:0;left:0;z-index:2500;min-width:130px;padding:4px;margin-top:1px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*zoom:1}.colorpicker:before,.colorpicker:after{display:table;line-height:0;content:""}.colorpicker:after{clear:both}.colorpicker:before{position:absolute;top:-7px;left:6px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.colorpicker:after{position:absolute;top:-6px;left:7px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.colorpicker div{position:relative}.colorpicker.colorpicker-with-alpha{min-width:140px}.colorpicker.colorpicker-with-alpha .colorpicker-alpha{display:block}.colorpicker-color{height:10px;margin-top:5px;clear:both;background-image:url("../images/bootstrap-colorpicker/alpha.png");background-position:0 100%}.colorpicker-color div{height:10px}.colorpicker-element .input-group-addon i,.colorpicker-element .add-on i{display:inline-block;width:16px;height:16px;vertical-align:text-top;cursor:pointer}.colorpicker.colorpicker-inline{position:relative;z-index:auto;display:inline-block;float:none}.colorpicker.colorpicker-horizontal{width:110px;height:auto;min-width:110px}.colorpicker.colorpicker-horizontal .colorpicker-saturation{margin-bottom:4px}.colorpicker.colorpicker-horizontal .colorpicker-color{width:100px}.colorpicker.colorpicker-horizontal .colorpicker-hue,.colorpicker.colorpicker-horizontal .colorpicker-alpha{float:left;width:100px;height:15px;margin-bottom:4px;margin-left:0;cursor:col-resize}.colorpicker.colorpicker-horizontal .colorpicker-hue i,.colorpicker.colorpicker-horizontal .colorpicker-alpha i{position:absolute;top:0;left:0;display:block;width:1px;height:15px;margin-top:0;background:#fff;border:0}.colorpicker.colorpicker-horizontal .colorpicker-hue{background-image:url("../images/bootstrap-colorpicker/hue-horizontal.png")}.colorpicker.colorpicker-horizontal .colorpicker-alpha{background-image:url("../images/bootstrap-colorpicker/alpha-horizontal.png")}.colorpicker.colorpicker-hidden{display:none}.colorpicker.colorpicker-visible{display:block}.colorpicker-inline.colorpicker-visible{display:inline-block} \ No newline at end of file diff --git a/assets/css/plugins/cropper/cropper.min.css b/assets/css/plugins/cropper/cropper.min.css deleted file mode 100644 index 534bae19..00000000 --- a/assets/css/plugins/cropper/cropper.min.css +++ /dev/null @@ -1,9 +0,0 @@ -/*! - * Cropper v0.7.6-beta - * https://github.com/fengyuanchen/cropper - * - * Copyright 2014 Fengyuan Chen - * Released under the MIT license - */ - -.cropper-container{position:relative;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}.cropper-container img{width:100%;height:100%;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important}.cropper-modal,.cropper-canvas{position:absolute;top:0;right:0;bottom:0;left:0}.cropper-canvas{background-color:#fff;opacity:0;filter:alpha(opacity=0)}.cropper-modal{background-color:#000;opacity:.5;filter:alpha(opacity=50)}.cropper-dragger{position:absolute;top:10%;left:10%;width:80%;height:80%}.cropper-viewer{display:block;width:100%;height:100%;overflow:hidden;outline-width:1px;outline-style:solid;outline-color:#69f;outline-color:rgba(51,102,255,.75)}.cropper-dashed{position:absolute;display:block;border:0 dashed #fff;opacity:.5;filter:alpha(opacity=50)}.cropper-dashed.dashed-h{top:33.3%;left:0;width:100%;height:33.3%;border-top-width:1px;border-bottom-width:1px}.cropper-dashed.dashed-v{top:0;left:33.3%;width:33.3%;height:100%;border-right-width:1px;border-left-width:1px}.cropper-face,.cropper-line,.cropper-point{position:absolute;display:block;width:100%;height:100%;opacity:.1;filter:alpha(opacity=10)}.cropper-face{top:0;left:0;cursor:move;background-color:#fff}.cropper-line{background-color:#69f}.cropper-line.line-e{top:0;right:-3px;width:5px;cursor:e-resize}.cropper-line.line-n{top:-3px;left:0;height:5px;cursor:n-resize}.cropper-line.line-w{top:0;left:-3px;width:5px;cursor:w-resize}.cropper-line.line-s{bottom:-3px;left:0;height:5px;cursor:s-resize}.cropper-point{width:5px;height:5px;background-color:#69f;opacity:.75;filter:alpha(opacity=75)}.cropper-point.point-e{top:50%;right:-3px;margin-top:-3px;cursor:e-resize}.cropper-point.point-n{top:-3px;left:50%;margin-left:-3px;cursor:n-resize}.cropper-point.point-w{top:50%;left:-3px;margin-top:-3px;cursor:w-resize}.cropper-point.point-s{bottom:-3px;left:50%;margin-left:-3px;cursor:s-resize}.cropper-point.point-ne{top:-3px;right:-3px;cursor:ne-resize}.cropper-point.point-nw{top:-3px;left:-3px;cursor:nw-resize}.cropper-point.point-sw{bottom:-3px;left:-3px;cursor:sw-resize}.cropper-point.point-se{right:-3px;bottom:-3px;width:20px;height:20px;cursor:se-resize;opacity:1;filter:alpha(opacity=100)}.cropper-point.point-se:before{position:absolute;right:-50%;bottom:-50%;display:block;width:200%;height:200%;content:" ";background-color:#69f;opacity:0;filter:alpha(opacity=0)}@media (min-width:768px){.cropper-point.point-se{width:15px;height:15px}}@media (min-width:992px){.cropper-point.point-se{width:10px;height:10px}}@media (min-width:1200px){.cropper-point.point-se{width:5px;height:5px;opacity:.75;filter:alpha(opacity=75)}}.cropper-hidden{display:none!important}.cropper-invisible{position:fixed;top:0;left:0;z-index:-1;width:auto!important;max-width:none!important;height:auto!important;max-height:none!important;opacity:0;filter:alpha(opacity=0)}.cropper-move{cursor:move}.cropper-crop{cursor:crosshair}.cropper-disabled .cropper-canvas,.cropper-disabled .cropper-face,.cropper-disabled .cropper-line,.cropper-disabled .cropper-point{cursor:not-allowed} \ No newline at end of file diff --git a/assets/css/plugins/dataTables/dataTables.bootstrap.css b/assets/css/plugins/dataTables/dataTables.bootstrap.css deleted file mode 100644 index 74b488da..00000000 --- a/assets/css/plugins/dataTables/dataTables.bootstrap.css +++ /dev/null @@ -1,233 +0,0 @@ -div.dataTables_length label { - float: left; - text-align: left; - font-weight: normal; -} - -div.dataTables_length select { - width: 75px; -} - -div.dataTables_filter label { - float: right; - font-weight: normal; -} - -div.dataTables_filter input { - width: 16em; -} - -div.dataTables_info { - padding-top: 8px; -} - -div.dataTables_paginate { - float: right; - margin: 0; -} - -div.dataTables_paginate ul.pagination { - margin: 2px 0; - white-space: nowrap; -} - -table.dataTable, -table.dataTable td, -table.dataTable th { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} - -table.dataTable { - clear: both; - margin-top: 6px !important; - margin-bottom: 6px !important; - max-width: none !important; -} - -table.dataTable thead .sorting, -table.dataTable thead .sorting_asc, -table.dataTable thead .sorting_desc, -table.dataTable thead .sorting_asc_disabled, -table.dataTable thead .sorting_desc_disabled { - cursor: pointer; -} - -table.dataTable thead .sorting { - background: url('../images/sort_both.png') no-repeat center right; -} - -table.dataTable thead .sorting_asc { - background: url('../images/sort_asc.png') no-repeat center right; -} - -table.dataTable thead .sorting_desc { - background: url('../images/sort_desc.png') no-repeat center right; -} - -table.dataTable thead .sorting_asc_disabled { - background: url('../images/sort_asc_disabled.png') no-repeat center right; -} - -table.dataTable thead .sorting_desc_disabled { - background: url('../images/sort_desc_disabled.png') no-repeat center right; -} - -table.dataTable th:active { - outline: none; -} - -/* Scrolling */ - -div.dataTables_scrollHead table { - margin-bottom: 0 !important; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; -} - -div.dataTables_scrollHead table thead tr:last-child th:first-child, -div.dataTables_scrollHead table thead tr:last-child td:first-child { - border-bottom-left-radius: 0 !important; - border-bottom-right-radius: 0 !important; -} - -div.dataTables_scrollBody table { - margin-top: 0 !important; - margin-bottom: 0 !important; - border-top: none; -} - -div.dataTables_scrollBody tbody tr:first-child th, -div.dataTables_scrollBody tbody tr:first-child td { - border-top: none; -} - -div.dataTables_scrollFoot table { - margin-top: 0 !important; - border-top: none; -} - -/* - * TableTools styles - */ - -.table tbody tr.active td, -.table tbody tr.active th { - color: white; - background-color: #08C; -} - -.table tbody tr.active:hover td, -.table tbody tr.active:hover th { - background-color: #0075b0 !important; -} - -.table tbody tr.active a { - color: white; -} - -.table-striped tbody tr.active:nth-child(odd) td, -.table-striped tbody tr.active:nth-child(odd) th { - background-color: #017ebc; -} - -table.DTTT_selectable tbody tr { - cursor: pointer; -} - -div.DTTT .btn { - font-size: 12px; - color: #333 !important; -} - -div.DTTT .btn:hover { - text-decoration: none !important; -} - -ul.DTTT_dropdown.dropdown-menu { - z-index: 2003; -} - -ul.DTTT_dropdown.dropdown-menu a { - color: #333 !important; /* needed only when demo_page.css is included */ -} - -ul.DTTT_dropdown.dropdown-menu li { - position: relative; -} - -ul.DTTT_dropdown.dropdown-menu li:hover a { - color: white !important; - background-color: #0088cc; -} - -div.DTTT_collection_background { - z-index: 2002; -} - -/* TableTools information display */ - -div.DTTT_print_info.modal { - height: 150px; - margin-top: -75px; - text-align: center; -} - -div.DTTT_print_info h6 { - margin: 1em; - font-size: 28px; - font-weight: normal; - line-height: 28px; -} - -div.DTTT_print_info p { - font-size: 14px; - line-height: 20px; -} - -/* - * FixedColumns styles - */ - -div.DTFC_LeftHeadWrapper table, -div.DTFC_LeftFootWrapper table, -div.DTFC_RightHeadWrapper table, -div.DTFC_RightFootWrapper table, -table.DTFC_Cloned tr.even { - background-color: white; -} - -div.DTFC_RightHeadWrapper table, -div.DTFC_LeftHeadWrapper table { - margin-bottom: 0 !important; - border-top-right-radius: 0 !important; - border-bottom-left-radius: 0 !important; - border-bottom-right-radius: 0 !important; -} - -div.DTFC_RightHeadWrapper table thead tr:last-child th:first-child, -div.DTFC_RightHeadWrapper table thead tr:last-child td:first-child, -div.DTFC_LeftHeadWrapper table thead tr:last-child th:first-child, -div.DTFC_LeftHeadWrapper table thead tr:last-child td:first-child { - border-bottom-left-radius: 0 !important; - border-bottom-right-radius: 0 !important; -} - -div.DTFC_RightBodyWrapper table, -div.DTFC_LeftBodyWrapper table { - margin-bottom: 0 !important; - border-top: none; -} - -div.DTFC_RightBodyWrapper tbody tr:first-child th, -div.DTFC_RightBodyWrapper tbody tr:first-child td, -div.DTFC_LeftBodyWrapper tbody tr:first-child th, -div.DTFC_LeftBodyWrapper tbody tr:first-child td { - border-top: none; -} - -div.DTFC_RightFootWrapper table, -div.DTFC_LeftFootWrapper table { - border-top: none; -} \ No newline at end of file diff --git a/assets/css/plugins/dataTables/dataTables.responsive.css b/assets/css/plugins/dataTables/dataTables.responsive.css deleted file mode 100644 index 88dedbae..00000000 --- a/assets/css/plugins/dataTables/dataTables.responsive.css +++ /dev/null @@ -1,93 +0,0 @@ -table.dataTable.dtr-inline.collapsed tbody td:first-child, -table.dataTable.dtr-inline.collapsed tbody th:first-child { - position: relative; - padding-left: 30px; - cursor: pointer; -} -table.dataTable.dtr-inline.collapsed tbody td:first-child:before, -table.dataTable.dtr-inline.collapsed tbody th:first-child:before { - top: 8px; - left: 4px; - height: 16px; - width: 16px; - display: block; - position: absolute; - color: white; - border: 2px solid white; - border-radius: 16px; - text-align: center; - line-height: 14px; - box-shadow: 0 0 3px #444; - box-sizing: content-box; - content: '+'; - background-color: #31b131; -} -table.dataTable.dtr-inline.collapsed tbody td:first-child.dataTables_empty:before, -table.dataTable.dtr-inline.collapsed tbody th:first-child.dataTables_empty:before { - display: none; -} -table.dataTable.dtr-inline.collapsed tbody tr.parent td:first-child:before, -table.dataTable.dtr-inline.collapsed tbody tr.parent th:first-child:before { - content: '-'; - background-color: #d33333; -} -table.dataTable.dtr-inline.collapsed tbody tr.child td:before { - display: none; -} -table.dataTable.dtr-column tbody td.control, -table.dataTable.dtr-column tbody th.control { - position: relative; - cursor: pointer; -} -table.dataTable.dtr-column tbody td.control:before, -table.dataTable.dtr-column tbody th.control:before { - top: 50%; - left: 50%; - height: 16px; - width: 16px; - margin-top: -10px; - margin-left: -10px; - display: block; - position: absolute; - color: white; - border: 2px solid white; - border-radius: 16px; - text-align: center; - line-height: 14px; - box-shadow: 0 0 3px #444; - box-sizing: content-box; - content: '+'; - background-color: #31b131; -} -table.dataTable.dtr-column tbody tr.parent td.control:before, -table.dataTable.dtr-column tbody tr.parent th.control:before { - content: '-'; - background-color: #d33333; -} -table.dataTable tr.child { - padding: 0.5em 1em; -} -table.dataTable tr.child:hover { - background: transparent !important; -} -table.dataTable tr.child ul { - display: inline-block; - list-style-type: none; - margin: 0; - padding: 0; -} -table.dataTable tr.child ul li { - border-bottom: 1px solid #efefef; - padding: 0.5em 0; -} -table.dataTable tr.child ul li:first-child { - padding-top: 0; -} -table.dataTable tr.child ul li:last-child { - border-bottom: none; -} -table.dataTable tr.child span.dtr-title { - display: inline-block; - min-width: 75px; - font-weight: bold; -} diff --git a/assets/css/plugins/dataTables/dataTables.tableTools.min.css b/assets/css/plugins/dataTables/dataTables.tableTools.min.css deleted file mode 100644 index a6ffb818..00000000 --- a/assets/css/plugins/dataTables/dataTables.tableTools.min.css +++ /dev/null @@ -1 +0,0 @@ -div.DTTT_container{position:relative;float:right;margin-bottom:1em}@media screen and (max-width: 640px){div.DTTT_container{float:none !important;text-align:center}div.DTTT_container:after{visibility:hidden;display:block;content:"";clear:both;height:0}}button.DTTT_button,div.DTTT_button,a.DTTT_button{position:relative;display:inline-block;margin-right:3px;padding:5px 8px;border:1px solid #999;cursor:pointer;*cursor:hand;font-size:0.88em;color:black !important;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;-webkit-box-shadow:1px 1px 3px #ccc;-moz-box-shadow:1px 1px 3px #ccc;-ms-box-shadow:1px 1px 3px #ccc;-o-box-shadow:1px 1px 3px #ccc;box-shadow:1px 1px 3px #ccc;background:#ffffff;background:-webkit-linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);background:-moz-linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);background:-ms-linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);background:-o-linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);background:linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f9f9f9',GradientType=0 )}button.DTTT_button{height:30px;padding:3px 8px}.DTTT_button embed{outline:none}button.DTTT_button:hover,div.DTTT_button:hover,a.DTTT_button:hover{border:1px solid #666;text-decoration:none !important;-webkit-box-shadow:1px 1px 3px #999;-moz-box-shadow:1px 1px 3px #999;-ms-box-shadow:1px 1px 3px #999;-o-box-shadow:1px 1px 3px #999;box-shadow:1px 1px 3px #999;background:#f3f3f3;background:-webkit-linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%);background:-moz-linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%);background:-ms-linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%);background:-o-linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%);background:linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3f3f3', endColorstr='#f4f4f4',GradientType=0 )}button.DTTT_button:focus,div.DTTT_button:focus,a.DTTT_button:focus{border:1px solid #426c9e;text-shadow:0 1px 0 #c4def1;outline:none;background-color:#a3d0ef 100%;background-image:-webkit-linear-gradient(top, #a3d0ef 0%, #79ace9 65%, #a3d0ef 100%);background-image:-moz-linear-gradient(top, #a3d0ef 0%, #79ace9 65%, #a3d0ef 100%);background-image:-ms-linear-gradient(top, #a3d0ef 0%, #79ace9 65%, #a3d0ef 100%);background-image:-o-linear-gradient(top, #a3d0ef 0%, #79ace9 65%, #a3d0ef 100%);background-image:linear-gradient(top, #a3d0ef 0%, #79ace9 65%, #a3d0ef 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#a3d0ef', EndColorStr='#a3d0ef')}button.DTTT_button:active,div.DTTT_button:active,a.DTTT_button:active{-webkit-box-shadow:inset 1px 1px 3px #999999;-moz-box-shadow:inset 1px 1px 3px #999999;box-shadow:inset 1px 1px 3px #999999}button.DTTT_disabled,div.DTTT_disabled,a.DTTT_disabled{color:#999;border:1px solid #d0d0d0;background:#ffffff;background:-webkit-linear-gradient(top, #fff 0%, #f9f9f9 89%, #fafafa 100%);background:-moz-linear-gradient(top, #fff 0%, #f9f9f9 89%, #fafafa 100%);background:-ms-linear-gradient(top, #fff 0%, #f9f9f9 89%, #fafafa 100%);background:-o-linear-gradient(top, #fff 0%, #f9f9f9 89%, #fafafa 100%);background:linear-gradient(top, #fff 0%, #f9f9f9 89%, #fafafa 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#fafafa',GradientType=0 )}button.DTTT_button_collection span{padding-right:17px;background:url(../images/collection.png) no-repeat center right}button.DTTT_button_collection:hover span{padding-right:17px;background:#f0f0f0 url(../images/collection_hover.png) no-repeat center right}table.DTTT_selectable tbody tr{cursor:pointer;*cursor:hand}table.dataTable tr.DTTT_selected.odd{background-color:#9FAFD1}table.dataTable tr.DTTT_selected.odd td.sorting_1{background-color:#9FAFD1}table.dataTable tr.DTTT_selected.odd td.sorting_2{background-color:#9FAFD1}table.dataTable tr.DTTT_selected.odd td.sorting_3{background-color:#9FAFD1}table.dataTable tr.DTTT_selected.even{background-color:#B0BED9}table.dataTable tr.DTTT_selected.even td.sorting_1{background-color:#B0BED9}table.dataTable tr.DTTT_selected.even td.sorting_2{background-color:#B0BED9}table.dataTable tr.DTTT_selected.even td.sorting_3{background-color:#B0BED9}div.DTTT_collection{width:150px;padding:8px 8px 4px 8px;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.4);background-color:#f3f3f3;background-color:rgba(255,255,255,0.3);overflow:hidden;z-index:2002;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;-webkit-box-shadow:3px 3px 5px rgba(0,0,0,0.3);-moz-box-shadow:3px 3px 5px rgba(0,0,0,0.3);-ms-box-shadow:3px 3px 5px rgba(0,0,0,0.3);-o-box-shadow:3px 3px 5px rgba(0,0,0,0.3);box-shadow:3px 3px 5px rgba(0,0,0,0.3)}div.DTTT_collection_background{background:transparent url(../images/background.png) repeat top left;z-index:2001}div.DTTT_collection button.DTTT_button,div.DTTT_collection div.DTTT_button,div.DTTT_collection a.DTTT_button{position:relative;left:0;right:0;display:block;float:none;margin-bottom:4px;-webkit-box-shadow:1px 1px 3px #999;-moz-box-shadow:1px 1px 3px #999;-ms-box-shadow:1px 1px 3px #999;-o-box-shadow:1px 1px 3px #999;box-shadow:1px 1px 3px #999}.DTTT_print_info{position:fixed;top:50%;left:50%;width:400px;height:150px;margin-left:-200px;margin-top:-75px;text-align:center;color:#333;padding:10px 30px;background:#ffffff;background:-webkit-linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);background:-moz-linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);background:-ms-linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);background:-o-linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);background:linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f9f9f9',GradientType=0 );opacity:0.95;border:1px solid black;border:1px solid rgba(0,0,0,0.5);-webkit-border-radius:6px;-moz-border-radius:6px;-ms-border-radius:6px;-o-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.5);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.5);-ms-box-shadow:0 3px 7px rgba(0,0,0,0.5);-o-box-shadow:0 3px 7px rgba(0,0,0,0.5);box-shadow:0 3px 7px rgba(0,0,0,0.5)}.DTTT_print_info h6{font-weight:normal;font-size:28px;line-height:28px;margin:1em}.DTTT_print_info p{font-size:14px;line-height:20px} diff --git a/assets/css/plugins/datapicker/datepicker3.css b/assets/css/plugins/datapicker/datepicker3.css deleted file mode 100644 index d5203af6..00000000 --- a/assets/css/plugins/datapicker/datepicker3.css +++ /dev/null @@ -1,789 +0,0 @@ -/*! - * Datepicker for Bootstrap - * - * Copyright 2012 Stefan Petre - * Improvements by Andrew Rowls - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - */ -.datepicker { - padding: 4px; - border-radius: 4px; - direction: ltr; - /*.dow { - border-top: 1px solid #ddd !important; - }*/ -} -.datepicker-inline { - width: 220px; -} -.datepicker.datepicker-rtl { - direction: rtl; -} -.datepicker.datepicker-rtl table tr td span { - float: right; -} -.datepicker-dropdown { - top: 0; - left: 0; -} -.datepicker-dropdown:before { - content: ''; - display: inline-block; - border-left: 7px solid transparent; - border-right: 7px solid transparent; - border-bottom: 7px solid #ccc; - border-top: 0; - border-bottom-color: rgba(0, 0, 0, 0.2); - position: absolute; -} -.datepicker-dropdown:after { - content: ''; - display: inline-block; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #fff; - border-top: 0; - position: absolute; -} -.datepicker-dropdown.datepicker-orient-left:before { - left: 6px; -} -.datepicker-dropdown.datepicker-orient-left:after { - left: 7px; -} -.datepicker-dropdown.datepicker-orient-right:before { - right: 6px; -} -.datepicker-dropdown.datepicker-orient-right:after { - right: 7px; -} -.datepicker-dropdown.datepicker-orient-top:before { - top: -7px; -} -.datepicker-dropdown.datepicker-orient-top:after { - top: -6px; -} -.datepicker-dropdown.datepicker-orient-bottom:before { - bottom: -7px; - border-bottom: 0; - border-top: 7px solid #999; -} -.datepicker-dropdown.datepicker-orient-bottom:after { - bottom: -6px; - border-bottom: 0; - border-top: 6px solid #fff; -} -.datepicker > div { - display: none; -} -.datepicker.days div.datepicker-days { - display: block; -} -.datepicker.months div.datepicker-months { - display: block; -} -.datepicker.years div.datepicker-years { - display: block; -} -.datepicker table { - margin: 0; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.datepicker table tr td, -.datepicker table tr th { - text-align: center; - width: 30px; - height: 30px; - border-radius: 4px; - border: none; -} -.table-striped .datepicker table tr td, -.table-striped .datepicker table tr th { - background-color: transparent; -} -.datepicker table tr td.day:hover, -.datepicker table tr td.day.focused { - background: #eeeeee; - cursor: pointer; -} -.datepicker table tr td.old, -.datepicker table tr td.new { - color: #999999; -} -.datepicker table tr td.disabled, -.datepicker table tr td.disabled:hover { - background: none; - color: #999999; - cursor: default; -} -.datepicker table tr td.today, -.datepicker table tr td.today:hover, -.datepicker table tr td.today.disabled, -.datepicker table tr td.today.disabled:hover { - color: #000000; - background-color: #ffdb99; - border-color: #ffb733; -} -.datepicker table tr td.today:hover, -.datepicker table tr td.today:hover:hover, -.datepicker table tr td.today.disabled:hover, -.datepicker table tr td.today.disabled:hover:hover, -.datepicker table tr td.today:focus, -.datepicker table tr td.today:hover:focus, -.datepicker table tr td.today.disabled:focus, -.datepicker table tr td.today.disabled:hover:focus, -.datepicker table tr td.today:active, -.datepicker table tr td.today:hover:active, -.datepicker table tr td.today.disabled:active, -.datepicker table tr td.today.disabled:hover:active, -.datepicker table tr td.today.active, -.datepicker table tr td.today:hover.active, -.datepicker table tr td.today.disabled.active, -.datepicker table tr td.today.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td.today, -.open .dropdown-toggle.datepicker table tr td.today:hover, -.open .dropdown-toggle.datepicker table tr td.today.disabled, -.open .dropdown-toggle.datepicker table tr td.today.disabled:hover { - color: #000000; - background-color: #ffcd70; - border-color: #f59e00; -} -.datepicker table tr td.today:active, -.datepicker table tr td.today:hover:active, -.datepicker table tr td.today.disabled:active, -.datepicker table tr td.today.disabled:hover:active, -.datepicker table tr td.today.active, -.datepicker table tr td.today:hover.active, -.datepicker table tr td.today.disabled.active, -.datepicker table tr td.today.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td.today, -.open .dropdown-toggle.datepicker table tr td.today:hover, -.open .dropdown-toggle.datepicker table tr td.today.disabled, -.open .dropdown-toggle.datepicker table tr td.today.disabled:hover { - background-image: none; -} -.datepicker table tr td.today.disabled, -.datepicker table tr td.today:hover.disabled, -.datepicker table tr td.today.disabled.disabled, -.datepicker table tr td.today.disabled:hover.disabled, -.datepicker table tr td.today[disabled], -.datepicker table tr td.today:hover[disabled], -.datepicker table tr td.today.disabled[disabled], -.datepicker table tr td.today.disabled:hover[disabled], -fieldset[disabled] .datepicker table tr td.today, -fieldset[disabled] .datepicker table tr td.today:hover, -fieldset[disabled] .datepicker table tr td.today.disabled, -fieldset[disabled] .datepicker table tr td.today.disabled:hover, -.datepicker table tr td.today.disabled:hover, -.datepicker table tr td.today:hover.disabled:hover, -.datepicker table tr td.today.disabled.disabled:hover, -.datepicker table tr td.today.disabled:hover.disabled:hover, -.datepicker table tr td.today[disabled]:hover, -.datepicker table tr td.today:hover[disabled]:hover, -.datepicker table tr td.today.disabled[disabled]:hover, -.datepicker table tr td.today.disabled:hover[disabled]:hover, -fieldset[disabled] .datepicker table tr td.today:hover, -fieldset[disabled] .datepicker table tr td.today:hover:hover, -fieldset[disabled] .datepicker table tr td.today.disabled:hover, -fieldset[disabled] .datepicker table tr td.today.disabled:hover:hover, -.datepicker table tr td.today.disabled:focus, -.datepicker table tr td.today:hover.disabled:focus, -.datepicker table tr td.today.disabled.disabled:focus, -.datepicker table tr td.today.disabled:hover.disabled:focus, -.datepicker table tr td.today[disabled]:focus, -.datepicker table tr td.today:hover[disabled]:focus, -.datepicker table tr td.today.disabled[disabled]:focus, -.datepicker table tr td.today.disabled:hover[disabled]:focus, -fieldset[disabled] .datepicker table tr td.today:focus, -fieldset[disabled] .datepicker table tr td.today:hover:focus, -fieldset[disabled] .datepicker table tr td.today.disabled:focus, -fieldset[disabled] .datepicker table tr td.today.disabled:hover:focus, -.datepicker table tr td.today.disabled:active, -.datepicker table tr td.today:hover.disabled:active, -.datepicker table tr td.today.disabled.disabled:active, -.datepicker table tr td.today.disabled:hover.disabled:active, -.datepicker table tr td.today[disabled]:active, -.datepicker table tr td.today:hover[disabled]:active, -.datepicker table tr td.today.disabled[disabled]:active, -.datepicker table tr td.today.disabled:hover[disabled]:active, -fieldset[disabled] .datepicker table tr td.today:active, -fieldset[disabled] .datepicker table tr td.today:hover:active, -fieldset[disabled] .datepicker table tr td.today.disabled:active, -fieldset[disabled] .datepicker table tr td.today.disabled:hover:active, -.datepicker table tr td.today.disabled.active, -.datepicker table tr td.today:hover.disabled.active, -.datepicker table tr td.today.disabled.disabled.active, -.datepicker table tr td.today.disabled:hover.disabled.active, -.datepicker table tr td.today[disabled].active, -.datepicker table tr td.today:hover[disabled].active, -.datepicker table tr td.today.disabled[disabled].active, -.datepicker table tr td.today.disabled:hover[disabled].active, -fieldset[disabled] .datepicker table tr td.today.active, -fieldset[disabled] .datepicker table tr td.today:hover.active, -fieldset[disabled] .datepicker table tr td.today.disabled.active, -fieldset[disabled] .datepicker table tr td.today.disabled:hover.active { - background-color: #ffdb99; - border-color: #ffb733; -} -.datepicker table tr td.today:hover:hover { - color: #000; -} -.datepicker table tr td.today.active:hover { - color: #fff; -} -.datepicker table tr td.range, -.datepicker table tr td.range:hover, -.datepicker table tr td.range.disabled, -.datepicker table tr td.range.disabled:hover { - background: #eeeeee; - border-radius: 0; -} -.datepicker table tr td.range.today, -.datepicker table tr td.range.today:hover, -.datepicker table tr td.range.today.disabled, -.datepicker table tr td.range.today.disabled:hover { - color: #000000; - background-color: #f7ca77; - border-color: #f1a417; - border-radius: 0; -} -.datepicker table tr td.range.today:hover, -.datepicker table tr td.range.today:hover:hover, -.datepicker table tr td.range.today.disabled:hover, -.datepicker table tr td.range.today.disabled:hover:hover, -.datepicker table tr td.range.today:focus, -.datepicker table tr td.range.today:hover:focus, -.datepicker table tr td.range.today.disabled:focus, -.datepicker table tr td.range.today.disabled:hover:focus, -.datepicker table tr td.range.today:active, -.datepicker table tr td.range.today:hover:active, -.datepicker table tr td.range.today.disabled:active, -.datepicker table tr td.range.today.disabled:hover:active, -.datepicker table tr td.range.today.active, -.datepicker table tr td.range.today:hover.active, -.datepicker table tr td.range.today.disabled.active, -.datepicker table tr td.range.today.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td.range.today, -.open .dropdown-toggle.datepicker table tr td.range.today:hover, -.open .dropdown-toggle.datepicker table tr td.range.today.disabled, -.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover { - color: #000000; - background-color: #f4bb51; - border-color: #bf800c; -} -.datepicker table tr td.range.today:active, -.datepicker table tr td.range.today:hover:active, -.datepicker table tr td.range.today.disabled:active, -.datepicker table tr td.range.today.disabled:hover:active, -.datepicker table tr td.range.today.active, -.datepicker table tr td.range.today:hover.active, -.datepicker table tr td.range.today.disabled.active, -.datepicker table tr td.range.today.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td.range.today, -.open .dropdown-toggle.datepicker table tr td.range.today:hover, -.open .dropdown-toggle.datepicker table tr td.range.today.disabled, -.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover { - background-image: none; -} -.datepicker table tr td.range.today.disabled, -.datepicker table tr td.range.today:hover.disabled, -.datepicker table tr td.range.today.disabled.disabled, -.datepicker table tr td.range.today.disabled:hover.disabled, -.datepicker table tr td.range.today[disabled], -.datepicker table tr td.range.today:hover[disabled], -.datepicker table tr td.range.today.disabled[disabled], -.datepicker table tr td.range.today.disabled:hover[disabled], -fieldset[disabled] .datepicker table tr td.range.today, -fieldset[disabled] .datepicker table tr td.range.today:hover, -fieldset[disabled] .datepicker table tr td.range.today.disabled, -fieldset[disabled] .datepicker table tr td.range.today.disabled:hover, -.datepicker table tr td.range.today.disabled:hover, -.datepicker table tr td.range.today:hover.disabled:hover, -.datepicker table tr td.range.today.disabled.disabled:hover, -.datepicker table tr td.range.today.disabled:hover.disabled:hover, -.datepicker table tr td.range.today[disabled]:hover, -.datepicker table tr td.range.today:hover[disabled]:hover, -.datepicker table tr td.range.today.disabled[disabled]:hover, -.datepicker table tr td.range.today.disabled:hover[disabled]:hover, -fieldset[disabled] .datepicker table tr td.range.today:hover, -fieldset[disabled] .datepicker table tr td.range.today:hover:hover, -fieldset[disabled] .datepicker table tr td.range.today.disabled:hover, -fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:hover, -.datepicker table tr td.range.today.disabled:focus, -.datepicker table tr td.range.today:hover.disabled:focus, -.datepicker table tr td.range.today.disabled.disabled:focus, -.datepicker table tr td.range.today.disabled:hover.disabled:focus, -.datepicker table tr td.range.today[disabled]:focus, -.datepicker table tr td.range.today:hover[disabled]:focus, -.datepicker table tr td.range.today.disabled[disabled]:focus, -.datepicker table tr td.range.today.disabled:hover[disabled]:focus, -fieldset[disabled] .datepicker table tr td.range.today:focus, -fieldset[disabled] .datepicker table tr td.range.today:hover:focus, -fieldset[disabled] .datepicker table tr td.range.today.disabled:focus, -fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:focus, -.datepicker table tr td.range.today.disabled:active, -.datepicker table tr td.range.today:hover.disabled:active, -.datepicker table tr td.range.today.disabled.disabled:active, -.datepicker table tr td.range.today.disabled:hover.disabled:active, -.datepicker table tr td.range.today[disabled]:active, -.datepicker table tr td.range.today:hover[disabled]:active, -.datepicker table tr td.range.today.disabled[disabled]:active, -.datepicker table tr td.range.today.disabled:hover[disabled]:active, -fieldset[disabled] .datepicker table tr td.range.today:active, -fieldset[disabled] .datepicker table tr td.range.today:hover:active, -fieldset[disabled] .datepicker table tr td.range.today.disabled:active, -fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:active, -.datepicker table tr td.range.today.disabled.active, -.datepicker table tr td.range.today:hover.disabled.active, -.datepicker table tr td.range.today.disabled.disabled.active, -.datepicker table tr td.range.today.disabled:hover.disabled.active, -.datepicker table tr td.range.today[disabled].active, -.datepicker table tr td.range.today:hover[disabled].active, -.datepicker table tr td.range.today.disabled[disabled].active, -.datepicker table tr td.range.today.disabled:hover[disabled].active, -fieldset[disabled] .datepicker table tr td.range.today.active, -fieldset[disabled] .datepicker table tr td.range.today:hover.active, -fieldset[disabled] .datepicker table tr td.range.today.disabled.active, -fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.active { - background-color: #f7ca77; - border-color: #f1a417; -} -.datepicker table tr td.selected, -.datepicker table tr td.selected:hover, -.datepicker table tr td.selected.disabled, -.datepicker table tr td.selected.disabled:hover { - color: #ffffff; - background-color: #999999; - border-color: #555555; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} -.datepicker table tr td.selected:hover, -.datepicker table tr td.selected:hover:hover, -.datepicker table tr td.selected.disabled:hover, -.datepicker table tr td.selected.disabled:hover:hover, -.datepicker table tr td.selected:focus, -.datepicker table tr td.selected:hover:focus, -.datepicker table tr td.selected.disabled:focus, -.datepicker table tr td.selected.disabled:hover:focus, -.datepicker table tr td.selected:active, -.datepicker table tr td.selected:hover:active, -.datepicker table tr td.selected.disabled:active, -.datepicker table tr td.selected.disabled:hover:active, -.datepicker table tr td.selected.active, -.datepicker table tr td.selected:hover.active, -.datepicker table tr td.selected.disabled.active, -.datepicker table tr td.selected.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td.selected, -.open .dropdown-toggle.datepicker table tr td.selected:hover, -.open .dropdown-toggle.datepicker table tr td.selected.disabled, -.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover { - color: #ffffff; - background-color: #858585; - border-color: #373737; -} -.datepicker table tr td.selected:active, -.datepicker table tr td.selected:hover:active, -.datepicker table tr td.selected.disabled:active, -.datepicker table tr td.selected.disabled:hover:active, -.datepicker table tr td.selected.active, -.datepicker table tr td.selected:hover.active, -.datepicker table tr td.selected.disabled.active, -.datepicker table tr td.selected.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td.selected, -.open .dropdown-toggle.datepicker table tr td.selected:hover, -.open .dropdown-toggle.datepicker table tr td.selected.disabled, -.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover { - background-image: none; -} -.datepicker table tr td.selected.disabled, -.datepicker table tr td.selected:hover.disabled, -.datepicker table tr td.selected.disabled.disabled, -.datepicker table tr td.selected.disabled:hover.disabled, -.datepicker table tr td.selected[disabled], -.datepicker table tr td.selected:hover[disabled], -.datepicker table tr td.selected.disabled[disabled], -.datepicker table tr td.selected.disabled:hover[disabled], -fieldset[disabled] .datepicker table tr td.selected, -fieldset[disabled] .datepicker table tr td.selected:hover, -fieldset[disabled] .datepicker table tr td.selected.disabled, -fieldset[disabled] .datepicker table tr td.selected.disabled:hover, -.datepicker table tr td.selected.disabled:hover, -.datepicker table tr td.selected:hover.disabled:hover, -.datepicker table tr td.selected.disabled.disabled:hover, -.datepicker table tr td.selected.disabled:hover.disabled:hover, -.datepicker table tr td.selected[disabled]:hover, -.datepicker table tr td.selected:hover[disabled]:hover, -.datepicker table tr td.selected.disabled[disabled]:hover, -.datepicker table tr td.selected.disabled:hover[disabled]:hover, -fieldset[disabled] .datepicker table tr td.selected:hover, -fieldset[disabled] .datepicker table tr td.selected:hover:hover, -fieldset[disabled] .datepicker table tr td.selected.disabled:hover, -fieldset[disabled] .datepicker table tr td.selected.disabled:hover:hover, -.datepicker table tr td.selected.disabled:focus, -.datepicker table tr td.selected:hover.disabled:focus, -.datepicker table tr td.selected.disabled.disabled:focus, -.datepicker table tr td.selected.disabled:hover.disabled:focus, -.datepicker table tr td.selected[disabled]:focus, -.datepicker table tr td.selected:hover[disabled]:focus, -.datepicker table tr td.selected.disabled[disabled]:focus, -.datepicker table tr td.selected.disabled:hover[disabled]:focus, -fieldset[disabled] .datepicker table tr td.selected:focus, -fieldset[disabled] .datepicker table tr td.selected:hover:focus, -fieldset[disabled] .datepicker table tr td.selected.disabled:focus, -fieldset[disabled] .datepicker table tr td.selected.disabled:hover:focus, -.datepicker table tr td.selected.disabled:active, -.datepicker table tr td.selected:hover.disabled:active, -.datepicker table tr td.selected.disabled.disabled:active, -.datepicker table tr td.selected.disabled:hover.disabled:active, -.datepicker table tr td.selected[disabled]:active, -.datepicker table tr td.selected:hover[disabled]:active, -.datepicker table tr td.selected.disabled[disabled]:active, -.datepicker table tr td.selected.disabled:hover[disabled]:active, -fieldset[disabled] .datepicker table tr td.selected:active, -fieldset[disabled] .datepicker table tr td.selected:hover:active, -fieldset[disabled] .datepicker table tr td.selected.disabled:active, -fieldset[disabled] .datepicker table tr td.selected.disabled:hover:active, -.datepicker table tr td.selected.disabled.active, -.datepicker table tr td.selected:hover.disabled.active, -.datepicker table tr td.selected.disabled.disabled.active, -.datepicker table tr td.selected.disabled:hover.disabled.active, -.datepicker table tr td.selected[disabled].active, -.datepicker table tr td.selected:hover[disabled].active, -.datepicker table tr td.selected.disabled[disabled].active, -.datepicker table tr td.selected.disabled:hover[disabled].active, -fieldset[disabled] .datepicker table tr td.selected.active, -fieldset[disabled] .datepicker table tr td.selected:hover.active, -fieldset[disabled] .datepicker table tr td.selected.disabled.active, -fieldset[disabled] .datepicker table tr td.selected.disabled:hover.active { - background-color: #999999; - border-color: #555555; -} -.datepicker table tr td.active, -.datepicker table tr td.active:hover, -.datepicker table tr td.active.disabled, -.datepicker table tr td.active.disabled:hover { - color: #ffffff; - background-color: #428bca; - border-color: #357ebd; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} -.datepicker table tr td.active:hover, -.datepicker table tr td.active:hover:hover, -.datepicker table tr td.active.disabled:hover, -.datepicker table tr td.active.disabled:hover:hover, -.datepicker table tr td.active:focus, -.datepicker table tr td.active:hover:focus, -.datepicker table tr td.active.disabled:focus, -.datepicker table tr td.active.disabled:hover:focus, -.datepicker table tr td.active:active, -.datepicker table tr td.active:hover:active, -.datepicker table tr td.active.disabled:active, -.datepicker table tr td.active.disabled:hover:active, -.datepicker table tr td.active.active, -.datepicker table tr td.active:hover.active, -.datepicker table tr td.active.disabled.active, -.datepicker table tr td.active.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td.active, -.open .dropdown-toggle.datepicker table tr td.active:hover, -.open .dropdown-toggle.datepicker table tr td.active.disabled, -.open .dropdown-toggle.datepicker table tr td.active.disabled:hover { - color: #ffffff; - background-color: #3276b1; - border-color: #285e8e; -} -.datepicker table tr td.active:active, -.datepicker table tr td.active:hover:active, -.datepicker table tr td.active.disabled:active, -.datepicker table tr td.active.disabled:hover:active, -.datepicker table tr td.active.active, -.datepicker table tr td.active:hover.active, -.datepicker table tr td.active.disabled.active, -.datepicker table tr td.active.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td.active, -.open .dropdown-toggle.datepicker table tr td.active:hover, -.open .dropdown-toggle.datepicker table tr td.active.disabled, -.open .dropdown-toggle.datepicker table tr td.active.disabled:hover { - background-image: none; -} -.datepicker table tr td.active.disabled, -.datepicker table tr td.active:hover.disabled, -.datepicker table tr td.active.disabled.disabled, -.datepicker table tr td.active.disabled:hover.disabled, -.datepicker table tr td.active[disabled], -.datepicker table tr td.active:hover[disabled], -.datepicker table tr td.active.disabled[disabled], -.datepicker table tr td.active.disabled:hover[disabled], -fieldset[disabled] .datepicker table tr td.active, -fieldset[disabled] .datepicker table tr td.active:hover, -fieldset[disabled] .datepicker table tr td.active.disabled, -fieldset[disabled] .datepicker table tr td.active.disabled:hover, -.datepicker table tr td.active.disabled:hover, -.datepicker table tr td.active:hover.disabled:hover, -.datepicker table tr td.active.disabled.disabled:hover, -.datepicker table tr td.active.disabled:hover.disabled:hover, -.datepicker table tr td.active[disabled]:hover, -.datepicker table tr td.active:hover[disabled]:hover, -.datepicker table tr td.active.disabled[disabled]:hover, -.datepicker table tr td.active.disabled:hover[disabled]:hover, -fieldset[disabled] .datepicker table tr td.active:hover, -fieldset[disabled] .datepicker table tr td.active:hover:hover, -fieldset[disabled] .datepicker table tr td.active.disabled:hover, -fieldset[disabled] .datepicker table tr td.active.disabled:hover:hover, -.datepicker table tr td.active.disabled:focus, -.datepicker table tr td.active:hover.disabled:focus, -.datepicker table tr td.active.disabled.disabled:focus, -.datepicker table tr td.active.disabled:hover.disabled:focus, -.datepicker table tr td.active[disabled]:focus, -.datepicker table tr td.active:hover[disabled]:focus, -.datepicker table tr td.active.disabled[disabled]:focus, -.datepicker table tr td.active.disabled:hover[disabled]:focus, -fieldset[disabled] .datepicker table tr td.active:focus, -fieldset[disabled] .datepicker table tr td.active:hover:focus, -fieldset[disabled] .datepicker table tr td.active.disabled:focus, -fieldset[disabled] .datepicker table tr td.active.disabled:hover:focus, -.datepicker table tr td.active.disabled:active, -.datepicker table tr td.active:hover.disabled:active, -.datepicker table tr td.active.disabled.disabled:active, -.datepicker table tr td.active.disabled:hover.disabled:active, -.datepicker table tr td.active[disabled]:active, -.datepicker table tr td.active:hover[disabled]:active, -.datepicker table tr td.active.disabled[disabled]:active, -.datepicker table tr td.active.disabled:hover[disabled]:active, -fieldset[disabled] .datepicker table tr td.active:active, -fieldset[disabled] .datepicker table tr td.active:hover:active, -fieldset[disabled] .datepicker table tr td.active.disabled:active, -fieldset[disabled] .datepicker table tr td.active.disabled:hover:active, -.datepicker table tr td.active.disabled.active, -.datepicker table tr td.active:hover.disabled.active, -.datepicker table tr td.active.disabled.disabled.active, -.datepicker table tr td.active.disabled:hover.disabled.active, -.datepicker table tr td.active[disabled].active, -.datepicker table tr td.active:hover[disabled].active, -.datepicker table tr td.active.disabled[disabled].active, -.datepicker table tr td.active.disabled:hover[disabled].active, -fieldset[disabled] .datepicker table tr td.active.active, -fieldset[disabled] .datepicker table tr td.active:hover.active, -fieldset[disabled] .datepicker table tr td.active.disabled.active, -fieldset[disabled] .datepicker table tr td.active.disabled:hover.active { - background-color: #428bca; - border-color: #357ebd; -} -.datepicker table tr td span { - display: block; - width: 23%; - height: 54px; - line-height: 54px; - float: left; - margin: 1%; - cursor: pointer; - border-radius: 4px; -} -.datepicker table tr td span:hover { - background: #eeeeee; -} -.datepicker table tr td span.disabled, -.datepicker table tr td span.disabled:hover { - background: none; - color: #999999; - cursor: default; -} -.datepicker table tr td span.active, -.datepicker table tr td span.active:hover, -.datepicker table tr td span.active.disabled, -.datepicker table tr td span.active.disabled:hover { - color: #ffffff; - background-color: #428bca; - border-color: #357ebd; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} -.datepicker table tr td span.active:hover, -.datepicker table tr td span.active:hover:hover, -.datepicker table tr td span.active.disabled:hover, -.datepicker table tr td span.active.disabled:hover:hover, -.datepicker table tr td span.active:focus, -.datepicker table tr td span.active:hover:focus, -.datepicker table tr td span.active.disabled:focus, -.datepicker table tr td span.active.disabled:hover:focus, -.datepicker table tr td span.active:active, -.datepicker table tr td span.active:hover:active, -.datepicker table tr td span.active.disabled:active, -.datepicker table tr td span.active.disabled:hover:active, -.datepicker table tr td span.active.active, -.datepicker table tr td span.active:hover.active, -.datepicker table tr td span.active.disabled.active, -.datepicker table tr td span.active.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td span.active, -.open .dropdown-toggle.datepicker table tr td span.active:hover, -.open .dropdown-toggle.datepicker table tr td span.active.disabled, -.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover { - color: #ffffff; - background-color: #3276b1; - border-color: #285e8e; -} -.datepicker table tr td span.active:active, -.datepicker table tr td span.active:hover:active, -.datepicker table tr td span.active.disabled:active, -.datepicker table tr td span.active.disabled:hover:active, -.datepicker table tr td span.active.active, -.datepicker table tr td span.active:hover.active, -.datepicker table tr td span.active.disabled.active, -.datepicker table tr td span.active.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td span.active, -.open .dropdown-toggle.datepicker table tr td span.active:hover, -.open .dropdown-toggle.datepicker table tr td span.active.disabled, -.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover { - background-image: none; -} -.datepicker table tr td span.active.disabled, -.datepicker table tr td span.active:hover.disabled, -.datepicker table tr td span.active.disabled.disabled, -.datepicker table tr td span.active.disabled:hover.disabled, -.datepicker table tr td span.active[disabled], -.datepicker table tr td span.active:hover[disabled], -.datepicker table tr td span.active.disabled[disabled], -.datepicker table tr td span.active.disabled:hover[disabled], -fieldset[disabled] .datepicker table tr td span.active, -fieldset[disabled] .datepicker table tr td span.active:hover, -fieldset[disabled] .datepicker table tr td span.active.disabled, -fieldset[disabled] .datepicker table tr td span.active.disabled:hover, -.datepicker table tr td span.active.disabled:hover, -.datepicker table tr td span.active:hover.disabled:hover, -.datepicker table tr td span.active.disabled.disabled:hover, -.datepicker table tr td span.active.disabled:hover.disabled:hover, -.datepicker table tr td span.active[disabled]:hover, -.datepicker table tr td span.active:hover[disabled]:hover, -.datepicker table tr td span.active.disabled[disabled]:hover, -.datepicker table tr td span.active.disabled:hover[disabled]:hover, -fieldset[disabled] .datepicker table tr td span.active:hover, -fieldset[disabled] .datepicker table tr td span.active:hover:hover, -fieldset[disabled] .datepicker table tr td span.active.disabled:hover, -fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover, -.datepicker table tr td span.active.disabled:focus, -.datepicker table tr td span.active:hover.disabled:focus, -.datepicker table tr td span.active.disabled.disabled:focus, -.datepicker table tr td span.active.disabled:hover.disabled:focus, -.datepicker table tr td span.active[disabled]:focus, -.datepicker table tr td span.active:hover[disabled]:focus, -.datepicker table tr td span.active.disabled[disabled]:focus, -.datepicker table tr td span.active.disabled:hover[disabled]:focus, -fieldset[disabled] .datepicker table tr td span.active:focus, -fieldset[disabled] .datepicker table tr td span.active:hover:focus, -fieldset[disabled] .datepicker table tr td span.active.disabled:focus, -fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus, -.datepicker table tr td span.active.disabled:active, -.datepicker table tr td span.active:hover.disabled:active, -.datepicker table tr td span.active.disabled.disabled:active, -.datepicker table tr td span.active.disabled:hover.disabled:active, -.datepicker table tr td span.active[disabled]:active, -.datepicker table tr td span.active:hover[disabled]:active, -.datepicker table tr td span.active.disabled[disabled]:active, -.datepicker table tr td span.active.disabled:hover[disabled]:active, -fieldset[disabled] .datepicker table tr td span.active:active, -fieldset[disabled] .datepicker table tr td span.active:hover:active, -fieldset[disabled] .datepicker table tr td span.active.disabled:active, -fieldset[disabled] .datepicker table tr td span.active.disabled:hover:active, -.datepicker table tr td span.active.disabled.active, -.datepicker table tr td span.active:hover.disabled.active, -.datepicker table tr td span.active.disabled.disabled.active, -.datepicker table tr td span.active.disabled:hover.disabled.active, -.datepicker table tr td span.active[disabled].active, -.datepicker table tr td span.active:hover[disabled].active, -.datepicker table tr td span.active.disabled[disabled].active, -.datepicker table tr td span.active.disabled:hover[disabled].active, -fieldset[disabled] .datepicker table tr td span.active.active, -fieldset[disabled] .datepicker table tr td span.active:hover.active, -fieldset[disabled] .datepicker table tr td span.active.disabled.active, -fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active { - background-color: #428bca; - border-color: #357ebd; -} -.datepicker table tr td span.old, -.datepicker table tr td span.new { - color: #999999; -} -.datepicker th.datepicker-switch { - width: 145px; -} -.datepicker thead tr:first-child th, -.datepicker tfoot tr th { - cursor: pointer; -} -.datepicker thead tr:first-child th:hover, -.datepicker tfoot tr th:hover { - background: #eeeeee; -} -.datepicker .cw { - font-size: 10px; - width: 12px; - padding: 0 2px 0 5px; - vertical-align: middle; -} -.datepicker thead tr:first-child th.cw { - cursor: default; - background-color: transparent; -} -.input-group.date .input-group-addon i { - cursor: pointer; - width: 16px; - height: 16px; -} -.input-daterange input { - text-align: center; -} -.input-daterange input:first-child { - border-radius: 3px 0 0 3px; -} -.input-daterange input:last-child { - border-radius: 0 3px 3px 0; -} -.input-daterange .input-group-addon { - width: auto; - min-width: 16px; - padding: 4px 5px; - font-weight: normal; - line-height: 1.428571429; - text-align: center; - text-shadow: 0 1px 0 #fff; - vertical-align: middle; - background-color: #eeeeee; - border-width: 1px 0; - margin-left: -5px; - margin-right: -5px; -} -.datepicker.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - float: left; - display: none; - min-width: 160px; - list-style: none; - background-color: #ffffff; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 5px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -webkit-background-clip: padding-box; - -moz-background-clip: padding; - background-clip: padding-box; - *border-right-width: 2px; - *border-bottom-width: 2px; - color: #333333; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 13px; - line-height: 1.428571429; -} -.datepicker.dropdown-menu th, -.datepicker.dropdown-menu td { - padding: 4px 5px; -} diff --git a/assets/css/plugins/dropzone/basic.css b/assets/css/plugins/dropzone/basic.css deleted file mode 100644 index 83084dbe..00000000 --- a/assets/css/plugins/dropzone/basic.css +++ /dev/null @@ -1,155 +0,0 @@ -/* The MIT License */ -.dropzone, -.dropzone *, -.dropzone-previews, -.dropzone-previews * { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.dropzone { - position: relative; - border: 1px solid rgba(0,0,0,0.08); - background: rgba(0,0,0,0.02); - padding: 1em; -} -.dropzone.dz-clickable { - cursor: pointer; -} -.dropzone.dz-clickable .dz-message, -.dropzone.dz-clickable .dz-message span { - cursor: pointer; -} -.dropzone.dz-clickable * { - cursor: default; -} -.dropzone .dz-message { - opacity: 1; - -ms-filter: none; - filter: none; -} -.dropzone.dz-drag-hover { - border-color: rgba(0,0,0,0.15); - background: rgba(0,0,0,0.04); -} -.dropzone.dz-started .dz-message { - display: none; -} -.dropzone .dz-preview, -.dropzone-previews .dz-preview { - background: rgba(255,255,255,0.8); - position: relative; - display: inline-block; - margin: 17px; - vertical-align: top; - border: 1px solid #acacac; - padding: 6px 6px 6px 6px; -} -.dropzone .dz-preview.dz-file-preview [data-dz-thumbnail], -.dropzone-previews .dz-preview.dz-file-preview [data-dz-thumbnail] { - display: none; -} -.dropzone .dz-preview .dz-details, -.dropzone-previews .dz-preview .dz-details { - width: 100px; - height: 100px; - position: relative; - background: #ebebeb; - padding: 5px; - margin-bottom: 22px; -} -.dropzone .dz-preview .dz-details .dz-filename, -.dropzone-previews .dz-preview .dz-details .dz-filename { - overflow: hidden; - height: 100%; -} -.dropzone .dz-preview .dz-details img, -.dropzone-previews .dz-preview .dz-details img { - position: absolute; - top: 0; - left: 0; - width: 100px; - height: 100px; -} -.dropzone .dz-preview .dz-details .dz-size, -.dropzone-previews .dz-preview .dz-details .dz-size { - position: absolute; - bottom: -28px; - left: 3px; - height: 28px; - line-height: 28px; -} -.dropzone .dz-preview.dz-error .dz-error-mark, -.dropzone-previews .dz-preview.dz-error .dz-error-mark { - display: block; -} -.dropzone .dz-preview.dz-success .dz-success-mark, -.dropzone-previews .dz-preview.dz-success .dz-success-mark { - display: block; -} -.dropzone .dz-preview:hover .dz-details img, -.dropzone-previews .dz-preview:hover .dz-details img { - display: none; -} -.dropzone .dz-preview .dz-success-mark, -.dropzone-previews .dz-preview .dz-success-mark, -.dropzone .dz-preview .dz-error-mark, -.dropzone-previews .dz-preview .dz-error-mark { - display: none; - position: absolute; - width: 40px; - height: 40px; - font-size: 30px; - text-align: center; - right: -10px; - top: -10px; -} -.dropzone .dz-preview .dz-success-mark, -.dropzone-previews .dz-preview .dz-success-mark { - color: #8cc657; -} -.dropzone .dz-preview .dz-error-mark, -.dropzone-previews .dz-preview .dz-error-mark { - color: #ee162d; -} -.dropzone .dz-preview .dz-progress, -.dropzone-previews .dz-preview .dz-progress { - position: absolute; - top: 100px; - left: 6px; - right: 6px; - height: 6px; - background: #d7d7d7; - display: none; -} -.dropzone .dz-preview .dz-progress .dz-upload, -.dropzone-previews .dz-preview .dz-progress .dz-upload { - display: block; - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 0%; - background-color: #8cc657; -} -.dropzone .dz-preview.dz-processing .dz-progress, -.dropzone-previews .dz-preview.dz-processing .dz-progress { - display: block; -} -.dropzone .dz-preview .dz-error-message, -.dropzone-previews .dz-preview .dz-error-message { - display: none; - position: absolute; - top: -5px; - left: -20px; - background: rgba(245,245,245,0.8); - padding: 8px 10px; - color: #800; - min-width: 140px; - max-width: 500px; - z-index: 500; -} -.dropzone .dz-preview:hover.dz-error .dz-error-message, -.dropzone-previews .dz-preview:hover.dz-error .dz-error-message { - display: block; -} diff --git a/assets/css/plugins/dropzone/dropzone.css b/assets/css/plugins/dropzone/dropzone.css deleted file mode 100644 index fc18729c..00000000 --- a/assets/css/plugins/dropzone/dropzone.css +++ /dev/null @@ -1,410 +0,0 @@ -/* The MIT License */ -.dropzone, -.dropzone *, -.dropzone-previews, -.dropzone-previews * { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.dropzone { - position: relative; - border: 1px solid rgba(0,0,0,0.08); - background: rgba(0,0,0,0.02); - padding: 1em; -} -.dropzone.dz-clickable { - cursor: pointer; -} -.dropzone.dz-clickable .dz-message, -.dropzone.dz-clickable .dz-message span { - cursor: pointer; -} -.dropzone.dz-clickable * { - cursor: default; -} -.dropzone .dz-message { - opacity: 1; - -ms-filter: none; - filter: none; -} -.dropzone.dz-drag-hover { - border-color: rgba(0,0,0,0.15); - background: rgba(0,0,0,0.04); -} -.dropzone.dz-started .dz-message { - display: none; -} -.dropzone .dz-preview, -.dropzone-previews .dz-preview { - background: rgba(255,255,255,0.8); - position: relative; - display: inline-block; - margin: 17px; - vertical-align: top; - border: 1px solid #acacac; - padding: 6px 6px 6px 6px; -} -.dropzone .dz-preview.dz-file-preview [data-dz-thumbnail], -.dropzone-previews .dz-preview.dz-file-preview [data-dz-thumbnail] { - display: none; -} -.dropzone .dz-preview .dz-details, -.dropzone-previews .dz-preview .dz-details { - width: 100px; - height: 100px; - position: relative; - background: #ebebeb; - padding: 5px; - margin-bottom: 22px; -} -.dropzone .dz-preview .dz-details .dz-filename, -.dropzone-previews .dz-preview .dz-details .dz-filename { - overflow: hidden; - height: 100%; -} -.dropzone .dz-preview .dz-details img, -.dropzone-previews .dz-preview .dz-details img { - position: absolute; - top: 0; - left: 0; - width: 100px; - height: 100px; -} -.dropzone .dz-preview .dz-details .dz-size, -.dropzone-previews .dz-preview .dz-details .dz-size { - position: absolute; - bottom: -28px; - left: 3px; - height: 28px; - line-height: 28px; -} -.dropzone .dz-preview.dz-error .dz-error-mark, -.dropzone-previews .dz-preview.dz-error .dz-error-mark { - display: block; -} -.dropzone .dz-preview.dz-success .dz-success-mark, -.dropzone-previews .dz-preview.dz-success .dz-success-mark { - display: block; -} -.dropzone .dz-preview:hover .dz-details img, -.dropzone-previews .dz-preview:hover .dz-details img { - display: none; -} -.dropzone .dz-preview .dz-success-mark, -.dropzone-previews .dz-preview .dz-success-mark, -.dropzone .dz-preview .dz-error-mark, -.dropzone-previews .dz-preview .dz-error-mark { - display: none; - position: absolute; - width: 40px; - height: 40px; - font-size: 30px; - text-align: center; - right: -10px; - top: -10px; -} -.dropzone .dz-preview .dz-success-mark, -.dropzone-previews .dz-preview .dz-success-mark { - color: #8cc657; -} -.dropzone .dz-preview .dz-error-mark, -.dropzone-previews .dz-preview .dz-error-mark { - color: #ee162d; -} -.dropzone .dz-preview .dz-progress, -.dropzone-previews .dz-preview .dz-progress { - position: absolute; - top: 100px; - left: 6px; - right: 6px; - height: 6px; - background: #d7d7d7; - display: none; -} -.dropzone .dz-preview .dz-progress .dz-upload, -.dropzone-previews .dz-preview .dz-progress .dz-upload { - display: block; - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 0%; - background-color: #8cc657; -} -.dropzone .dz-preview.dz-processing .dz-progress, -.dropzone-previews .dz-preview.dz-processing .dz-progress { - display: block; -} -.dropzone .dz-preview .dz-error-message, -.dropzone-previews .dz-preview .dz-error-message { - display: none; - position: absolute; - top: -5px; - left: -20px; - background: rgba(245,245,245,0.8); - padding: 8px 10px; - color: #800; - min-width: 140px; - max-width: 500px; - z-index: 500; -} -.dropzone .dz-preview:hover.dz-error .dz-error-message, -.dropzone-previews .dz-preview:hover.dz-error .dz-error-message { - display: block; -} -.dropzone { - border: 1px solid rgba(0,0,0,0.03); - min-height: 360px; - -webkit-border-radius: 3px; - border-radius: 3px; - background: rgba(0,0,0,0.03); - padding: 23px; -} -.dropzone .dz-default.dz-message { - opacity: 1; - -ms-filter: none; - filter: none; - -webkit-transition: opacity 0.3s ease-in-out; - -moz-transition: opacity 0.3s ease-in-out; - -o-transition: opacity 0.3s ease-in-out; - -ms-transition: opacity 0.3s ease-in-out; - transition: opacity 0.3s ease-in-out; - background-image: url("../images/spritemap.png"); - background-repeat: no-repeat; - background-position: 0 0; - position: absolute; - width: 428px; - height: 123px; - margin-left: -214px; - margin-top: -61.5px; - top: 50%; - left: 50%; -} -@media all and (-webkit-min-device-pixel-ratio:1.5),(min--moz-device-pixel-ratio:1.5),(-o-min-device-pixel-ratio:1.5/1),(min-device-pixel-ratio:1.5),(min-resolution:138dpi),(min-resolution:1.5dppx) { - .dropzone .dz-default.dz-message { - background-image: url("../images/spritemap@2x.png"); - -webkit-background-size: 428px 406px; - -moz-background-size: 428px 406px; - background-size: 428px 406px; - } -} -.dropzone .dz-default.dz-message span { - display: none; -} -.dropzone.dz-square .dz-default.dz-message { - background-position: 0 -123px; - width: 268px; - margin-left: -134px; - height: 174px; - margin-top: -87px; -} -.dropzone.dz-drag-hover .dz-message { - opacity: 0.15; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=15)"; - filter: alpha(opacity=15); -} -.dropzone.dz-started .dz-message { - display: block; - opacity: 0; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; - filter: alpha(opacity=0); -} -.dropzone .dz-preview, -.dropzone-previews .dz-preview { - -webkit-box-shadow: 1px 1px 4px rgba(0,0,0,0.16); - box-shadow: 1px 1px 4px rgba(0,0,0,0.16); - font-size: 14px; -} -.dropzone .dz-preview.dz-image-preview:hover .dz-details img, -.dropzone-previews .dz-preview.dz-image-preview:hover .dz-details img { - display: block; - opacity: 0.1; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=10)"; - filter: alpha(opacity=10); -} -.dropzone .dz-preview.dz-success .dz-success-mark, -.dropzone-previews .dz-preview.dz-success .dz-success-mark { - opacity: 1; - -ms-filter: none; - filter: none; -} -.dropzone .dz-preview.dz-error .dz-error-mark, -.dropzone-previews .dz-preview.dz-error .dz-error-mark { - opacity: 1; - -ms-filter: none; - filter: none; -} -.dropzone .dz-preview.dz-error .dz-progress .dz-upload, -.dropzone-previews .dz-preview.dz-error .dz-progress .dz-upload { - background: #ee1e2d; -} -.dropzone .dz-preview .dz-error-mark, -.dropzone-previews .dz-preview .dz-error-mark, -.dropzone .dz-preview .dz-success-mark, -.dropzone-previews .dz-preview .dz-success-mark { - display: block; - opacity: 0; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; - filter: alpha(opacity=0); - -webkit-transition: opacity 0.4s ease-in-out; - -moz-transition: opacity 0.4s ease-in-out; - -o-transition: opacity 0.4s ease-in-out; - -ms-transition: opacity 0.4s ease-in-out; - transition: opacity 0.4s ease-in-out; - background-image: url("../images/spritemap.png"); - background-repeat: no-repeat; -} -@media all and (-webkit-min-device-pixel-ratio:1.5),(min--moz-device-pixel-ratio:1.5),(-o-min-device-pixel-ratio:1.5/1),(min-device-pixel-ratio:1.5),(min-resolution:138dpi),(min-resolution:1.5dppx) { - .dropzone .dz-preview .dz-error-mark, - .dropzone-previews .dz-preview .dz-error-mark, - .dropzone .dz-preview .dz-success-mark, - .dropzone-previews .dz-preview .dz-success-mark { - background-image: url("../images/spritemap@2x.png"); - -webkit-background-size: 428px 406px; - -moz-background-size: 428px 406px; - background-size: 428px 406px; - } -} -.dropzone .dz-preview .dz-error-mark span, -.dropzone-previews .dz-preview .dz-error-mark span, -.dropzone .dz-preview .dz-success-mark span, -.dropzone-previews .dz-preview .dz-success-mark span { - display: none; -} -.dropzone .dz-preview .dz-error-mark, -.dropzone-previews .dz-preview .dz-error-mark { - background-position: -268px -123px; -} -.dropzone .dz-preview .dz-success-mark, -.dropzone-previews .dz-preview .dz-success-mark { - background-position: -268px -163px; -} -.dropzone .dz-preview .dz-progress .dz-upload, -.dropzone-previews .dz-preview .dz-progress .dz-upload { - -webkit-animation: loading 0.4s linear infinite; - -moz-animation: loading 0.4s linear infinite; - -o-animation: loading 0.4s linear infinite; - -ms-animation: loading 0.4s linear infinite; - animation: loading 0.4s linear infinite; - -webkit-transition: width 0.3s ease-in-out; - -moz-transition: width 0.3s ease-in-out; - -o-transition: width 0.3s ease-in-out; - -ms-transition: width 0.3s ease-in-out; - transition: width 0.3s ease-in-out; - -webkit-border-radius: 2px; - border-radius: 2px; - position: absolute; - top: 0; - left: 0; - width: 0%; - height: 100%; - background-image: url("../images/spritemap.png"); - background-repeat: repeat-x; - background-position: 0px -400px; -} -@media all and (-webkit-min-device-pixel-ratio:1.5),(min--moz-device-pixel-ratio:1.5),(-o-min-device-pixel-ratio:1.5/1),(min-device-pixel-ratio:1.5),(min-resolution:138dpi),(min-resolution:1.5dppx) { - .dropzone .dz-preview .dz-progress .dz-upload, - .dropzone-previews .dz-preview .dz-progress .dz-upload { - background-image: url("../images/spritemap@2x.png"); - -webkit-background-size: 428px 406px; - -moz-background-size: 428px 406px; - background-size: 428px 406px; - } -} -.dropzone .dz-preview.dz-success .dz-progress, -.dropzone-previews .dz-preview.dz-success .dz-progress { - display: block; - opacity: 0; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; - filter: alpha(opacity=0); - -webkit-transition: opacity 0.4s ease-in-out; - -moz-transition: opacity 0.4s ease-in-out; - -o-transition: opacity 0.4s ease-in-out; - -ms-transition: opacity 0.4s ease-in-out; - transition: opacity 0.4s ease-in-out; -} -.dropzone .dz-preview .dz-error-message, -.dropzone-previews .dz-preview .dz-error-message { - display: block; - opacity: 0; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; - filter: alpha(opacity=0); - -webkit-transition: opacity 0.3s ease-in-out; - -moz-transition: opacity 0.3s ease-in-out; - -o-transition: opacity 0.3s ease-in-out; - -ms-transition: opacity 0.3s ease-in-out; - transition: opacity 0.3s ease-in-out; -} -.dropzone .dz-preview:hover.dz-error .dz-error-message, -.dropzone-previews .dz-preview:hover.dz-error .dz-error-message { - opacity: 1; - -ms-filter: none; - filter: none; -} -.dropzone a.dz-remove, -.dropzone-previews a.dz-remove { - background-image: -webkit-linear-gradient(top, #fafafa, #eee); - background-image: -moz-linear-gradient(top, #fafafa, #eee); - background-image: -o-linear-gradient(top, #fafafa, #eee); - background-image: -ms-linear-gradient(top, #fafafa, #eee); - background-image: linear-gradient(to bottom, #fafafa, #eee); - -webkit-border-radius: 2px; - border-radius: 2px; - border: 1px solid #eee; - text-decoration: none; - display: block; - padding: 4px 5px; - text-align: center; - color: #aaa; - margin-top: 26px; -} -.dropzone a.dz-remove:hover, -.dropzone-previews a.dz-remove:hover { - color: #666; -} -@-moz-keyframes loading { - 0% { - background-position: 0 -400px; - } - - 100% { - background-position: -7px -400px; - } -} -@-webkit-keyframes loading { - 0% { - background-position: 0 -400px; - } - - 100% { - background-position: -7px -400px; - } -} -@-o-keyframes loading { - 0% { - background-position: 0 -400px; - } - - 100% { - background-position: -7px -400px; - } -} -@-ms-keyframes loading { - 0% { - background-position: 0 -400px; - } - - 100% { - background-position: -7px -400px; - } -} -@keyframes loading { - 0% { - background-position: 0 -400px; - } - - 100% { - background-position: -7px -400px; - } -} diff --git a/assets/css/plugins/fullcalendar/fullcalendar.css b/assets/css/plugins/fullcalendar/fullcalendar.css deleted file mode 100644 index b2feb028..00000000 --- a/assets/css/plugins/fullcalendar/fullcalendar.css +++ /dev/null @@ -1,977 +0,0 @@ -/*! - * FullCalendar v2.2.0 Stylesheet - * Docs & License: http://arshaw.com/fullcalendar/ - * (c) 2013 Adam Shaw - */ - - -.fc { - direction: ltr; - text-align: left; -} - -.fc-rtl { - text-align: right; -} - -body .fc { /* extra precedence to overcome jqui */ - font-size: 1em; -} - - -/* Colors ---------------------------------------------------------------------------------------------------*/ - -.fc-unthemed th, -.fc-unthemed td, -.fc-unthemed hr, -.fc-unthemed thead, -.fc-unthemed tbody, -.fc-unthemed .fc-row, -.fc-unthemed .fc-popover { - border-color: #ddd; -} - -.fc-unthemed .fc-popover { - background-color: #fff; -} - -.fc-unthemed hr, -.fc-unthemed .fc-popover .fc-header { - background: #eee; -} - -.fc-unthemed .fc-popover .fc-header .fc-close { - color: #666; -} - -.fc-unthemed .fc-today { - background: #fcf8e3; -} - -.fc-highlight { /* when user is selecting cells */ - background: #bce8f1; - opacity: .3; - filter: alpha(opacity=30); /* for IE */ -} - -.fc-bgevent { /* default look for background events */ - background: rgb(143, 223, 130); - opacity: .3; - filter: alpha(opacity=30); /* for IE */ -} - -.fc-nonbusiness { /* default look for non-business-hours areas */ - /* will inherit .fc-bgevent's styles */ - background: #ccc; -} - - -/* Icons (inline elements with styled text that mock arrow icons) ---------------------------------------------------------------------------------------------------*/ - -.fc-icon { - display: inline-block; - font-size: 2em; - line-height: .5em; - height: .5em; /* will make the total height 1em */ - font-family: "Courier New", Courier, monospace; -} - -.fc-icon-left-single-arrow:after { - content: "\02039"; - font-weight: bold; -} - -.fc-icon-right-single-arrow:after { - content: "\0203A"; - font-weight: bold; -} - -.fc-icon-left-double-arrow:after { - content: "\000AB"; -} - -.fc-icon-right-double-arrow:after { - content: "\000BB"; -} - -.fc-icon-x:after { - content: "\000D7"; -} - - -/* Buttons (styled <button> tags, normalized to work cross-browser) ---------------------------------------------------------------------------------------------------*/ - -.fc button { - /* force height to include the border and padding */ - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - box-sizing: border-box; - - /* dimensions */ - margin: 0; - height: 2.1em; - padding: 0 .6em; - - /* text & cursor */ - font-size: 1em; /* normalize */ - white-space: nowrap; - cursor: pointer; -} - -/* Firefox has an annoying inner border */ -.fc button::-moz-focus-inner { margin: 0; padding: 0; } - -.fc-state-default { /* non-theme */ - border: 1px solid; -} - -.fc-state-default.fc-corner-left { /* non-theme */ - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; -} - -.fc-state-default.fc-corner-right { /* non-theme */ - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; -} - -/* icons in buttons */ - -.fc button .fc-icon { /* non-theme */ - position: relative; - top: .05em; /* seems to be a good adjustment across browsers */ - margin: 0 .1em; -} - -/* - button states - borrowed from twitter bootstrap (http://twitter.github.com/bootstrap/) -*/ - -.fc-state-default { - background-color: #f5f5f5; - background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); - background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); - background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); - background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); - background-repeat: repeat-x; - border-color: #e6e6e6 #e6e6e6 #bfbfbf; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - color: #333; - text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); -} - -.fc-state-hover, -.fc-state-down, -.fc-state-active, -.fc-state-disabled { - color: #333333; - background-color: #e6e6e6; -} - -.fc-state-hover { - color: #333333; - text-decoration: none; - background-position: 0 -15px; - -webkit-transition: background-position 0.1s linear; - -moz-transition: background-position 0.1s linear; - -o-transition: background-position 0.1s linear; - transition: background-position 0.1s linear; -} - -.fc-state-down, -.fc-state-active { - background-color: #cccccc; - background-image: none; - box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); -} - -.fc-state-disabled { - cursor: default; - background-image: none; - opacity: 0.65; - filter: alpha(opacity=65); - box-shadow: none; -} - - -/* Buttons Groups ---------------------------------------------------------------------------------------------------*/ - -.fc-button-group { - display: inline-block; -} - -/* -every button that is not first in a button group should scootch over one pixel and cover the -previous button's border... -*/ - -.fc .fc-button-group > * { /* extra precedence b/c buttons have margin set to zero */ - float: left; - margin: 0 0 0 -1px; -} - -.fc .fc-button-group > :first-child { /* same */ - margin-left: 0; -} - - -/* Popover ---------------------------------------------------------------------------------------------------*/ - -.fc-popover { - position: absolute; - box-shadow: 0 2px 6px rgba(0,0,0,.15); -} - -.fc-popover .fc-header { - padding: 2px 4px; -} - -.fc-popover .fc-header .fc-title { - margin: 0 2px; -} - -.fc-popover .fc-header .fc-close { - cursor: pointer; -} - -.fc-ltr .fc-popover .fc-header .fc-title, -.fc-rtl .fc-popover .fc-header .fc-close { - float: left; -} - -.fc-rtl .fc-popover .fc-header .fc-title, -.fc-ltr .fc-popover .fc-header .fc-close { - float: right; -} - -/* unthemed */ - -.fc-unthemed .fc-popover { - border-width: 1px; - border-style: solid; -} - -.fc-unthemed .fc-popover .fc-header .fc-close { - font-size: 25px; - margin-top: 4px; -} - -/* jqui themed */ - -.fc-popover > .ui-widget-header + .ui-widget-content { - border-top: 0; /* where they meet, let the header have the border */ -} - - -/* Misc Reusable Components ---------------------------------------------------------------------------------------------------*/ - -.fc hr { - height: 0; - margin: 0; - padding: 0 0 2px; /* height is unreliable across browsers, so use padding */ - border-style: solid; - border-width: 1px 0; -} - -.fc-clear { - clear: both; -} - -.fc-bg, -.fc-bgevent-skeleton, -.fc-highlight-skeleton, -.fc-helper-skeleton { - /* these element should always cling to top-left/right corners */ - position: absolute; - top: 0; - left: 0; - right: 0; -} - -.fc-bg { - bottom: 0; /* strech bg to bottom edge */ -} - -.fc-bg table { - height: 100%; /* strech bg to bottom edge */ -} - - -/* Tables ---------------------------------------------------------------------------------------------------*/ - -.fc table { - width: 100%; - table-layout: fixed; - border-collapse: collapse; - border-spacing: 0; - font-size: 1em; /* normalize cross-browser */ -} - -.fc th { - text-align: center; -} - -.fc th, -.fc td { - border-style: solid; - border-width: 1px; - padding: 0; - vertical-align: top; -} - -.fc td.fc-today { - border-style: double; /* overcome neighboring borders */ -} - - -/* Fake Table Rows ---------------------------------------------------------------------------------------------------*/ - -.fc .fc-row { /* extra precedence to overcome themes w/ .ui-widget-content forcing a 1px border */ - /* no visible border by default. but make available if need be (scrollbar width compensation) */ - border-style: solid; - border-width: 0; -} - -.fc-row table { - /* don't put left/right border on anything within a fake row. - the outer tbody will worry about this */ - border-left: 0 hidden transparent; - border-right: 0 hidden transparent; - - /* no bottom borders on rows */ - border-bottom: 0 hidden transparent; -} - -.fc-row:first-child table { - border-top: 0 hidden transparent; /* no top border on first row */ -} - - -/* Day Row (used within the header and the DayGrid) ---------------------------------------------------------------------------------------------------*/ - -.fc-row { - position: relative; -} - -.fc-row .fc-bg { - z-index: 1; -} - -/* highlighting cells & background event skeleton */ - -.fc-row .fc-bgevent-skeleton, -.fc-row .fc-highlight-skeleton { - bottom: 0; /* stretch skeleton to bottom of row */ -} - -.fc-row .fc-bgevent-skeleton table, -.fc-row .fc-highlight-skeleton table { - height: 100%; /* stretch skeleton to bottom of row */ -} - -.fc-row .fc-highlight-skeleton td, -.fc-row .fc-bgevent-skeleton td { - border-color: transparent; -} - -.fc-row .fc-bgevent-skeleton { - z-index: 2; - -} - -.fc-row .fc-highlight-skeleton { - z-index: 3; -} - -/* -row content (which contains day/week numbers and events) as well as "helper" (which contains -temporary rendered events). -*/ - -.fc-row .fc-content-skeleton { - position: relative; - z-index: 4; - padding-bottom: 2px; /* matches the space above the events */ -} - -.fc-row .fc-helper-skeleton { - z-index: 5; -} - -.fc-row .fc-content-skeleton td, -.fc-row .fc-helper-skeleton td { - /* see-through to the background below */ - background: none; /* in case <td>s are globally styled */ - border-color: transparent; - - /* don't put a border between events and/or the day number */ - border-bottom: 0; -} - -.fc-row .fc-content-skeleton tbody td, /* cells with events inside (so NOT the day number cell) */ -.fc-row .fc-helper-skeleton tbody td { - /* don't put a border between event cells */ - border-top: 0; -} - - -/* Scrolling Container ---------------------------------------------------------------------------------------------------*/ - -.fc-scroller { /* this class goes on elements for guaranteed vertical scrollbars */ - overflow-y: scroll; - overflow-x: hidden; -} - -.fc-scroller > * { /* we expect an immediate inner element */ - position: relative; /* re-scope all positions */ - width: 100%; /* hack to force re-sizing this inner element when scrollbars appear/disappear */ - overflow: hidden; /* don't let negative margins or absolute positioning create further scroll */ -} - - -/* Global Event Styles ---------------------------------------------------------------------------------------------------*/ - -.fc-event { - position: relative; /* for resize handle and other inner positioning */ - display: block; /* make the <a> tag block */ - font-size: .85em; - line-height: 1.3; - border-radius: 3px; - border: 1px solid #3a87ad; /* default BORDER color */ - background-color: #3a87ad; /* default BACKGROUND color */ - font-weight: normal; /* undo jqui's ui-widget-header bold */ -} - -/* overpower some of bootstrap's and jqui's styles on <a> tags */ -.fc-event, -.fc-event:hover, -.ui-widget .fc-event { - color: #fff; /* default TEXT color */ - text-decoration: none; /* if <a> has an href */ -} - -.fc-event[href], -.fc-event.fc-draggable { - cursor: pointer; /* give events with links and draggable events a hand mouse pointer */ -} - -.fc-not-allowed, /* causes a "warning" cursor. applied on body */ -.fc-not-allowed .fc-event { /* to override an event's custom cursor */ - cursor: not-allowed; -} - - -/* DayGrid events ----------------------------------------------------------------------------------------------------- -We use the full "fc-day-grid-event" class instead of using descendants because the event won't -be a descendant of the grid when it is being dragged. -*/ - -.fc-day-grid-event { - margin: 1px 2px 0; /* spacing between events and edges */ - padding: 0 1px; -} - -/* events that are continuing to/from another week. kill rounded corners and butt up against edge */ - -.fc-ltr .fc-day-grid-event.fc-not-start, -.fc-rtl .fc-day-grid-event.fc-not-end { - margin-left: 0; - border-left-width: 0; - padding-left: 1px; /* replace the border with padding */ - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} - -.fc-ltr .fc-day-grid-event.fc-not-end, -.fc-rtl .fc-day-grid-event.fc-not-start { - margin-right: 0; - border-right-width: 0; - padding-right: 1px; /* replace the border with padding */ - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -.fc-day-grid-event > .fc-content { /* force events to be one-line tall */ - white-space: nowrap; - overflow: hidden; -} - -.fc-day-grid-event .fc-time { - font-weight: bold; -} - -/* resize handle (outside of fc-content, so can go outside of bounds) */ - -.fc-day-grid-event .fc-resizer { - position: absolute; - top: 0; - bottom: 0; - width: 7px; -} - -.fc-ltr .fc-day-grid-event .fc-resizer { - right: -3px; - cursor: e-resize; -} - -.fc-rtl .fc-day-grid-event .fc-resizer { - left: -3px; - cursor: w-resize; -} - - -/* Event Limiting ---------------------------------------------------------------------------------------------------*/ - -/* "more" link that represents hidden events */ - -a.fc-more { - margin: 1px 3px; - font-size: .85em; - cursor: pointer; - text-decoration: none; -} - -a.fc-more:hover { - text-decoration: underline; -} - -.fc-limited { /* rows and cells that are hidden because of a "more" link */ - display: none; -} - -/* popover that appears when "more" link is clicked */ - -.fc-day-grid .fc-row { - z-index: 1; /* make the "more" popover one higher than this */ -} - -.fc-more-popover { - z-index: 2; - width: 220px; -} - -.fc-more-popover .fc-event-container { - padding: 10px; -} - -/* Toolbar ---------------------------------------------------------------------------------------------------*/ - -.fc-toolbar { - text-align: center; - margin-bottom: 1em; -} - -.fc-toolbar .fc-left { - float: left; -} - -.fc-toolbar .fc-right { - float: right; -} - -.fc-toolbar .fc-center { - display: inline-block; -} - -/* the things within each left/right/center section */ -.fc .fc-toolbar > * > * { /* extra precedence to override button border margins */ - float: left; - margin-left: .75em; -} - -/* the first thing within each left/center/right section */ -.fc .fc-toolbar > * > :first-child { /* extra precedence to override button border margins */ - margin-left: 0; -} - -/* title text */ - -.fc-toolbar h2 { - margin: 0; -} - -/* button layering (for border precedence) */ - -.fc-toolbar button { - position: relative; -} - -.fc-toolbar .fc-state-hover, -.fc-toolbar .ui-state-hover { - z-index: 2; -} - -.fc-toolbar .fc-state-down { - z-index: 3; -} - -.fc-toolbar .fc-state-active, -.fc-toolbar .ui-state-active { - z-index: 4; -} - -.fc-toolbar button:focus { - z-index: 5; -} - - -/* View Structure ---------------------------------------------------------------------------------------------------*/ - -/* undo twitter bootstrap's box-sizing rules. normalizes positioning techniques */ -/* don't do this for the toolbar because we'll want bootstrap to style those buttons as some pt */ -.fc-view-container *, -.fc-view-container *:before, -.fc-view-container *:after { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} - -.fc-view, /* scope positioning and z-index's for everything within the view */ -.fc-view > table { /* so dragged elements can be above the view's main element */ - position: relative; - z-index: 1; -} - -/* BasicView ---------------------------------------------------------------------------------------------------*/ - -/* day row structure */ - -.fc-basicWeek-view .fc-content-skeleton, -.fc-basicDay-view .fc-content-skeleton { - /* we are sure there are no day numbers in these views, so... */ - padding-top: 1px; /* add a pixel to make sure there are 2px padding above events */ - padding-bottom: 1em; /* ensure a space at bottom of cell for user selecting/clicking */ -} - -.fc-basic-view tbody .fc-row { - min-height: 4em; /* ensure that all rows are at least this tall */ -} - -/* a "rigid" row will take up a constant amount of height because content-skeleton is absolute */ - -.fc-row.fc-rigid { - overflow: hidden; -} - -.fc-row.fc-rigid .fc-content-skeleton { - position: absolute; - top: 0; - left: 0; - right: 0; -} - -/* week and day number styling */ - -.fc-basic-view .fc-week-number, -.fc-basic-view .fc-day-number { - padding: 0 2px; -} - -.fc-basic-view td.fc-week-number span, -.fc-basic-view td.fc-day-number { - padding-top: 2px; - padding-bottom: 2px; -} - -.fc-basic-view .fc-week-number { - text-align: center; -} - -.fc-basic-view .fc-week-number span { - /* work around the way we do column resizing and ensure a minimum width */ - display: inline-block; - min-width: 1.25em; -} - -.fc-ltr .fc-basic-view .fc-day-number { - text-align: right; -} - -.fc-rtl .fc-basic-view .fc-day-number { - text-align: left; -} - -.fc-day-number.fc-other-month { - opacity: 0.3; - filter: alpha(opacity=30); /* for IE */ - /* opacity with small font can sometimes look too faded - might want to set the 'color' property instead - making day-numbers bold also fixes the problem */ -} - -/* AgendaView all-day area ---------------------------------------------------------------------------------------------------*/ - -.fc-agenda-view .fc-day-grid { - position: relative; - z-index: 2; /* so the "more.." popover will be over the time grid */ -} - -.fc-agenda-view .fc-day-grid .fc-row { - min-height: 3em; /* all-day section will never get shorter than this */ -} - -.fc-agenda-view .fc-day-grid .fc-row .fc-content-skeleton { - padding-top: 1px; /* add a pixel to make sure there are 2px padding above events */ - padding-bottom: 1em; /* give space underneath events for clicking/selecting days */ -} - - -/* TimeGrid axis running down the side (for both the all-day area and the slot area) ---------------------------------------------------------------------------------------------------*/ - -.fc .fc-axis { /* .fc to overcome default cell styles */ - vertical-align: middle; - padding: 0 4px; - white-space: nowrap; -} - -.fc-ltr .fc-axis { - text-align: right; -} - -.fc-rtl .fc-axis { - text-align: left; -} - -.ui-widget td.fc-axis { - font-weight: normal; /* overcome jqui theme making it bold */ -} - - -/* TimeGrid Structure ---------------------------------------------------------------------------------------------------*/ - -.fc-time-grid-container, /* so scroll container's z-index is below all-day */ -.fc-time-grid { /* so slats/bg/content/etc positions get scoped within here */ - position: relative; - z-index: 1; -} - -.fc-time-grid { - min-height: 100%; /* so if height setting is 'auto', .fc-bg stretches to fill height */ -} - -.fc-time-grid table { /* don't put outer borders on slats/bg/content/etc */ - border: 0 hidden transparent; -} - -.fc-time-grid > .fc-bg { - z-index: 1; -} - -.fc-time-grid .fc-slats, -.fc-time-grid > hr { /* the <hr> AgendaView injects when grid is shorter than scroller */ - position: relative; - z-index: 2; -} - -.fc-time-grid .fc-bgevent-skeleton, -.fc-time-grid .fc-content-skeleton { - position: absolute; - top: 0; - left: 0; - right: 0; -} - -.fc-time-grid .fc-bgevent-skeleton { - z-index: 3; -} - -.fc-time-grid .fc-highlight-skeleton { - z-index: 4; -} - -.fc-time-grid .fc-content-skeleton { - z-index: 5; -} - -.fc-time-grid .fc-helper-skeleton { - z-index: 6; -} - - -/* TimeGrid Slats (lines that run horizontally) ---------------------------------------------------------------------------------------------------*/ - -.fc-slats td { - height: 1.5em; - border-bottom: 0; /* each cell is responsible for its top border */ -} - -.fc-slats .fc-minor td { - border-top-style: dotted; -} - -.fc-slats .ui-widget-content { /* for jqui theme */ - background: none; /* see through to fc-bg */ -} - - -/* TimeGrid Highlighting Slots ---------------------------------------------------------------------------------------------------*/ - -.fc-time-grid .fc-highlight-container { /* a div within a cell within the fc-highlight-skeleton */ - position: relative; /* scopes the left/right of the fc-highlight to be in the column */ -} - -.fc-time-grid .fc-highlight { - position: absolute; - left: 0; - right: 0; - /* top and bottom will be in by JS */ -} - - -/* TimeGrid Event Containment ---------------------------------------------------------------------------------------------------*/ - -.fc-time-grid .fc-event-container, /* a div within a cell within the fc-content-skeleton */ -.fc-time-grid .fc-bgevent-container { /* a div within a cell within the fc-bgevent-skeleton */ - position: relative; -} - -.fc-ltr .fc-time-grid .fc-event-container { /* space on the sides of events for LTR (default) */ - margin: 0 2.5% 0 2px; -} - -.fc-rtl .fc-time-grid .fc-event-container { /* space on the sides of events for RTL */ - margin: 0 2px 0 2.5%; -} - -.fc-time-grid .fc-event, -.fc-time-grid .fc-bgevent { - position: absolute; - z-index: 1; /* scope inner z-index's */ -} - -.fc-time-grid .fc-bgevent { - /* background events always span full width */ - left: 0; - right: 0; -} - - -/* TimeGrid Event Styling ----------------------------------------------------------------------------------------------------- -We use the full "fc-time-grid-event" class instead of using descendants because the event won't -be a descendant of the grid when it is being dragged. -*/ - -.fc-time-grid-event.fc-not-start { /* events that are continuing from another day */ - /* replace space made by the top border with padding */ - border-top-width: 0; - padding-top: 1px; - - /* remove top rounded corners */ - border-top-left-radius: 0; - border-top-right-radius: 0; -} - -.fc-time-grid-event.fc-not-end { - /* replace space made by the top border with padding */ - border-bottom-width: 0; - padding-bottom: 1px; - - /* remove bottom rounded corners */ - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; -} - -.fc-time-grid-event { - overflow: hidden; /* don't let the bg flow over rounded corners */ -} - -.fc-time-grid-event > .fc-content { /* contains the time and title, but no bg and resizer */ - position: relative; - z-index: 2; /* above the bg */ -} - -.fc-time-grid-event .fc-time, -.fc-time-grid-event .fc-title { - padding: 0 1px; -} - -.fc-time-grid-event .fc-time { - font-size: .85em; - white-space: nowrap; -} - -.fc-time-grid-event .fc-bg { - z-index: 1; - background: #fff; - opacity: .25; - filter: alpha(opacity=25); /* for IE */ -} - -/* short mode, where time and title are on the same line */ - -.fc-time-grid-event.fc-short .fc-content { - /* don't wrap to second line (now that contents will be inline) */ - white-space: nowrap; -} - -.fc-time-grid-event.fc-short .fc-time, -.fc-time-grid-event.fc-short .fc-title { - /* put the time and title on the same line */ - display: inline-block; - vertical-align: top; -} - -.fc-time-grid-event.fc-short .fc-time span { - display: none; /* don't display the full time text... */ -} - -.fc-time-grid-event.fc-short .fc-time:before { - content: attr(data-start); /* ...instead, display only the start time */ -} - -.fc-time-grid-event.fc-short .fc-time:after { - content: "\000A0-\000A0"; /* seperate with a dash, wrapped in nbsp's */ -} - -.fc-time-grid-event.fc-short .fc-title { - font-size: .85em; /* make the title text the same size as the time */ - padding: 0; /* undo padding from above */ -} - -/* resizer */ - -.fc-time-grid-event .fc-resizer { - position: absolute; - z-index: 3; /* above content */ - left: 0; - right: 0; - bottom: 0; - height: 8px; - overflow: hidden; - line-height: 8px; - font-size: 11px; - font-family: monospace; - text-align: center; - cursor: s-resize; -} - -.fc-time-grid-event .fc-resizer:after { - content: "="; -} diff --git a/assets/css/plugins/fullcalendar/fullcalendar.print.css b/assets/css/plugins/fullcalendar/fullcalendar.print.css deleted file mode 100644 index 78c8b924..00000000 --- a/assets/css/plugins/fullcalendar/fullcalendar.print.css +++ /dev/null @@ -1,202 +0,0 @@ -/*! - * FullCalendar v2.2.0 Print Stylesheet - * Docs & License: http://arshaw.com/fullcalendar/ - * (c) 2013 Adam Shaw - */ - -/* - * Include this stylesheet on your page to get a more printer-friendly calendar. - * When including this stylesheet, use the media='print' attribute of the <link> tag. - * Make sure to include this stylesheet IN ADDITION to the regular fullcalendar.css. - */ - -.fc { - max-width: 100% !important; -} - - -/* Global Event Restyling ---------------------------------------------------------------------------------------------------*/ - -.fc-event { - background: #fff !important; - color: #000 !important; - page-break-inside: avoid; -} - -.fc-event .fc-resizer { - display: none; -} - - -/* Table & Day-Row Restyling ---------------------------------------------------------------------------------------------------*/ - -th, -td, -hr, -thead, -tbody, -.fc-row { - border-color: #ccc !important; - background: #fff !important; -} - -/* kill the overlaid, absolutely-positioned common components */ -.fc-bg, -.fc-bgevent-skeleton, -.fc-highlight-skeleton, -.fc-helper-skeleton { - display: none; -} - -/* don't force a min-height on rows (for DayGrid) */ -.fc tbody .fc-row { - height: auto !important; /* undo height that JS set in distributeHeight */ - min-height: 0 !important; /* undo the min-height from each view's specific stylesheet */ -} - -.fc tbody .fc-row .fc-content-skeleton { - position: static; /* undo .fc-rigid */ - padding-bottom: 0 !important; /* use a more border-friendly method for this... */ -} - -.fc tbody .fc-row .fc-content-skeleton tbody tr:last-child td { /* only works in newer browsers */ - padding-bottom: 1em; /* ...gives space within the skeleton. also ensures min height in a way */ -} - -.fc tbody .fc-row .fc-content-skeleton table { - /* provides a min-height for the row, but only effective for IE, which exaggerates this value, - making it look more like 3em. for other browers, it will already be this tall */ - height: 1em; -} - - -/* Undo month-view event limiting. Display all events and hide the "more" links ---------------------------------------------------------------------------------------------------*/ - -.fc-more-cell, -.fc-more { - display: none !important; -} - -.fc tr.fc-limited { - display: table-row !important; -} - -.fc td.fc-limited { - display: table-cell !important; -} - -.fc-popover { - display: none; /* never display the "more.." popover in print mode */ -} - - -/* TimeGrid Restyling ---------------------------------------------------------------------------------------------------*/ - -/* undo the min-height 100% trick used to fill the container's height */ -.fc-time-grid { - min-height: 0 !important; -} - -/* don't display the side axis at all ("all-day" and time cells) */ -.fc-agenda-view .fc-axis { - display: none; -} - -/* don't display the horizontal lines */ -.fc-slats, -.fc-time-grid hr { /* this hr is used when height is underused and needs to be filled */ - display: none !important; /* important overrides inline declaration */ -} - -/* let the container that holds the events be naturally positioned and create real height */ -.fc-time-grid .fc-content-skeleton { - position: static; -} - -/* in case there are no events, we still want some height */ -.fc-time-grid .fc-content-skeleton table { - height: 4em; -} - -/* kill the horizontal spacing made by the event container. event margins will be done below */ -.fc-time-grid .fc-event-container { - margin: 0 !important; -} - - -/* TimeGrid *Event* Restyling ---------------------------------------------------------------------------------------------------*/ - -/* naturally position events, vertically stacking them */ -.fc-time-grid .fc-event { - position: static !important; - margin: 3px 2px !important; -} - -/* for events that continue to a future day, give the bottom border back */ -.fc-time-grid .fc-event.fc-not-end { - border-bottom-width: 1px !important; -} - -/* indicate the event continues via "..." text */ -.fc-time-grid .fc-event.fc-not-end:after { - content: "..."; -} - -/* for events that are continuations from previous days, give the top border back */ -.fc-time-grid .fc-event.fc-not-start { - border-top-width: 1px !important; -} - -/* indicate the event is a continuation via "..." text */ -.fc-time-grid .fc-event.fc-not-start:before { - content: "..."; -} - -/* time */ - -/* undo a previous declaration and let the time text span to a second line */ -.fc-time-grid .fc-event .fc-time { - white-space: normal !important; -} - -/* hide the the time that is normally displayed... */ -.fc-time-grid .fc-event .fc-time span { - display: none; -} - -/* ...replace it with a more verbose version (includes AM/PM) stored in an html attribute */ -.fc-time-grid .fc-event .fc-time:after { - content: attr(data-full); -} - - -/* Vertical Scroller & Containers ---------------------------------------------------------------------------------------------------*/ - -/* kill the scrollbars and allow natural height */ -.fc-scroller, -.fc-day-grid-container, /* these divs might be assigned height, which we need to cleared */ -.fc-time-grid-container { /* */ - overflow: visible !important; - height: auto !important; -} - -/* kill the horizontal border/padding used to compensate for scrollbars */ -.fc-row { - border: 0 !important; - margin: 0 !important; -} - - -/* Button Controls ---------------------------------------------------------------------------------------------------*/ - -.fc-button-group, -.fc button { - display: none; /* don't display any button-related controls */ -} diff --git a/assets/css/plugins/iCheck/custom.css b/assets/css/plugins/iCheck/custom.css deleted file mode 100644 index bddfe9b3..00000000 --- a/assets/css/plugins/iCheck/custom.css +++ /dev/null @@ -1,59 +0,0 @@ -/* iCheck plugin Square skin, green ------------------------------------ */ -.icheckbox_square-green, -.iradio_square-green { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 22px; - height: 22px; - background: url(green.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_square-green { - background-position: 0 0; -} -.icheckbox_square-green.hover { - background-position: -24px 0; -} -.icheckbox_square-green.checked { - background-position: -48px 0; -} -.icheckbox_square-green.disabled { - background-position: -72px 0; - cursor: default; -} -.icheckbox_square-green.checked.disabled { - background-position: -96px 0; -} - -.iradio_square-green { - background-position: -120px 0; -} -.iradio_square-green.hover { - background-position: -144px 0; -} -.iradio_square-green.checked { - background-position: -168px 0; -} -.iradio_square-green.disabled { - background-position: -192px 0; - cursor: default; -} -.iradio_square-green.checked.disabled { - background-position: -216px 0; -} - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_square-green, - .iradio_square-green { - background-image: url(green@2x.png); - -webkit-background-size: 240px 24px; - background-size: 240px 24px; - } -} \ No newline at end of file diff --git a/assets/css/plugins/iCheck/green.png b/assets/css/plugins/iCheck/green.png deleted file mode 100644 index 57fc5992..00000000 Binary files a/assets/css/plugins/iCheck/green.png and /dev/null differ diff --git a/assets/css/plugins/iCheck/green@2x.png b/assets/css/plugins/iCheck/green@2x.png deleted file mode 100644 index 3bda5beb..00000000 Binary files a/assets/css/plugins/iCheck/green@2x.png and /dev/null differ diff --git a/assets/css/plugins/images/bootstrap-colorpicker/alpha-horizontal.png b/assets/css/plugins/images/bootstrap-colorpicker/alpha-horizontal.png deleted file mode 100644 index d0a65c08..00000000 Binary files a/assets/css/plugins/images/bootstrap-colorpicker/alpha-horizontal.png and /dev/null differ diff --git a/assets/css/plugins/images/bootstrap-colorpicker/alpha.png b/assets/css/plugins/images/bootstrap-colorpicker/alpha.png deleted file mode 100644 index 38043f1c..00000000 Binary files a/assets/css/plugins/images/bootstrap-colorpicker/alpha.png and /dev/null differ diff --git a/assets/css/plugins/images/bootstrap-colorpicker/hue-horizontal.png b/assets/css/plugins/images/bootstrap-colorpicker/hue-horizontal.png deleted file mode 100644 index a0d9add8..00000000 Binary files a/assets/css/plugins/images/bootstrap-colorpicker/hue-horizontal.png and /dev/null differ diff --git a/assets/css/plugins/images/bootstrap-colorpicker/hue.png b/assets/css/plugins/images/bootstrap-colorpicker/hue.png deleted file mode 100644 index d89560e9..00000000 Binary files a/assets/css/plugins/images/bootstrap-colorpicker/hue.png and /dev/null differ diff --git a/assets/css/plugins/images/bootstrap-colorpicker/saturation.png b/assets/css/plugins/images/bootstrap-colorpicker/saturation.png deleted file mode 100644 index 594ae50e..00000000 Binary files a/assets/css/plugins/images/bootstrap-colorpicker/saturation.png and /dev/null differ diff --git a/assets/css/plugins/images/sort.png b/assets/css/plugins/images/sort.png deleted file mode 100644 index 337ff81f..00000000 Binary files a/assets/css/plugins/images/sort.png and /dev/null differ diff --git a/assets/css/plugins/images/sort_asc.png b/assets/css/plugins/images/sort_asc.png deleted file mode 100644 index 4a912e4e..00000000 Binary files a/assets/css/plugins/images/sort_asc.png and /dev/null differ diff --git a/assets/css/plugins/images/sort_desc.png b/assets/css/plugins/images/sort_desc.png deleted file mode 100644 index 7f4ace04..00000000 Binary files a/assets/css/plugins/images/sort_desc.png and /dev/null differ diff --git a/assets/css/plugins/images/sprite-skin-flat.png b/assets/css/plugins/images/sprite-skin-flat.png deleted file mode 100644 index 8356fc5d..00000000 Binary files a/assets/css/plugins/images/sprite-skin-flat.png and /dev/null differ diff --git a/assets/css/plugins/images/sprite-skin-flat2.png b/assets/css/plugins/images/sprite-skin-flat2.png deleted file mode 100644 index 21c52fde..00000000 Binary files a/assets/css/plugins/images/sprite-skin-flat2.png and /dev/null differ diff --git a/assets/css/plugins/images/sprite-skin-nice.png b/assets/css/plugins/images/sprite-skin-nice.png deleted file mode 100644 index d62f8188..00000000 Binary files a/assets/css/plugins/images/sprite-skin-nice.png and /dev/null differ diff --git a/assets/css/plugins/images/sprite-skin-simple.png b/assets/css/plugins/images/sprite-skin-simple.png deleted file mode 100644 index 3b7647d3..00000000 Binary files a/assets/css/plugins/images/sprite-skin-simple.png and /dev/null differ diff --git a/assets/css/plugins/images/spritemap.png b/assets/css/plugins/images/spritemap.png deleted file mode 100644 index d711b0f0..00000000 Binary files a/assets/css/plugins/images/spritemap.png and /dev/null differ diff --git a/assets/css/plugins/images/spritemap@2x.png b/assets/css/plugins/images/spritemap@2x.png deleted file mode 100644 index ed29b88b..00000000 Binary files a/assets/css/plugins/images/spritemap@2x.png and /dev/null differ diff --git a/assets/css/plugins/ionRangeSlider/ion.rangeSlider.css b/assets/css/plugins/ionRangeSlider/ion.rangeSlider.css deleted file mode 100644 index 052d477e..00000000 --- a/assets/css/plugins/ionRangeSlider/ion.rangeSlider.css +++ /dev/null @@ -1,126 +0,0 @@ -/* Ion.RangeSlider -// css version 1.8.5 -// by Denis Ineshin | ionden.com -// ===================================================================================================================*/ - -/* ===================================================================================================================== -// RangeSlider */ - -.irs { - position: relative; display: block; -} - .irs-line { - position: relative; display: block; - overflow: hidden; - } - .irs-line-left, .irs-line-mid, .irs-line-right { - position: absolute; display: block; - top: 0; - } - .irs-line-left { - left: 0; width: 10%; - } - .irs-line-mid { - left: 10%; width: 80%; - } - .irs-line-right { - right: 0; width: 10%; - } - - .irs-diapason { - position: absolute; display: block; - left: 0; width: 100%; - } - .irs-slider { - position: absolute; display: block; - cursor: default; - z-index: 1; - } - .irs-slider.single { - left: 10px; - } - .irs-slider.single:before { - position: absolute; display: block; content: ""; - top: -30%; left: -30%; - width: 160%; height: 160%; - background: rgba(0,0,0,0.0); - } - .irs-slider.from { - left: 100px; - } - .irs-slider.from:before { - position: absolute; display: block; content: ""; - top: -30%; left: -30%; - width: 130%; height: 160%; - background: rgba(0,0,0,0.0); - } - .irs-slider.to { - left: 300px; - } - .irs-slider.to:before { - position: absolute; display: block; content: ""; - top: -30%; left: 0; - width: 130%; height: 160%; - background: rgba(0,0,0,0.0); - } - .irs-slider.last { - z-index: 2; - } - - .irs-min { - position: absolute; display: block; - left: 0; - cursor: default; - } - .irs-max { - position: absolute; display: block; - right: 0; - cursor: default; - } - - .irs-from, .irs-to, .irs-single { - position: absolute; display: block; - top: 0; left: 0; - cursor: default; - white-space: nowrap; - } - - -.irs-grid { - position: absolute; display: none; - bottom: 0; left: 0; - width: 100%; height: 20px; -} -.irs-with-grid .irs-grid { - display: block; -} - .irs-grid-pol { - position: absolute; - top: 0; left: 0; - width: 1px; height: 8px; - background: #000; - } - .irs-grid-pol.small { - height: 4px; - } - .irs-grid-text { - position: absolute; - bottom: 0; left: 0; - width: 100px; - white-space: nowrap; - text-align: center; - font-size: 9px; line-height: 9px; - color: #000; - } - -.irs-disable-mask { - position: absolute; display: block; - top: 0; left: 0; - width: 100%; height: 100%; - cursor: default; - background: rgba(0,0,0,0.0); - z-index: 2; -} -.irs-disabled { - opacity: 0.4; -} \ No newline at end of file diff --git a/assets/css/plugins/ionRangeSlider/ion.rangeSlider.skinFlat.css b/assets/css/plugins/ionRangeSlider/ion.rangeSlider.skinFlat.css deleted file mode 100644 index c173227d..00000000 --- a/assets/css/plugins/ionRangeSlider/ion.rangeSlider.skinFlat.css +++ /dev/null @@ -1,89 +0,0 @@ -/* Ion.RangeSlider, Flat UI Skin -// css version 1.8.5 -// by Denis Ineshin | ionden.com -// ===================================================================================================================*/ - -/* ===================================================================================================================== -// Skin details */ - -.irs-line-mid, -.irs-line-left, -.irs-line-right, -.irs-diapason, -.irs-slider { - background: url(../images/sprite-skin-flat.png) repeat-x; -} - -.irs { - height: 40px; -} -.irs-with-grid { - height: 60px; -} -.irs-line { - height: 12px; top: 25px; -} - .irs-line-left { - height: 12px; - background-position: 0 -30px; - } - .irs-line-mid { - height: 12px; - background-position: 0 0; - } - .irs-line-right { - height: 12px; - background-position: 100% -30px; - } - -.irs-diapason { - height: 12px; top: 25px; - background-position: 0 -60px; -} - -.irs-slider { - width: 16px; height: 18px; - top: 22px; - background-position: 0 -90px; -} -#irs-active-slider, .irs-slider:hover { - background-position: 0 -120px; -} - -.irs-min, .irs-max { - color: #999; - font-size: 10px; line-height: 1.333; - text-shadow: none; - top: 0; padding: 1px 3px; - background: #e1e4e9; - border-radius: 4px; -} - -.irs-from, .irs-to, .irs-single { - color: #fff; - font-size: 10px; line-height: 1.333; - text-shadow: none; - padding: 1px 5px; - background: #ed5565; - border-radius: 4px; -} -.irs-from:after, .irs-to:after, .irs-single:after { - position: absolute; display: block; content: ""; - bottom: -6px; left: 50%; - width: 0; height: 0; - margin-left: -3px; - overflow: hidden; - border: 3px solid transparent; - border-top-color: #ed5565; -} - - -.irs-grid-pol { - background: #e1e4e9; -} -.irs-grid-text { - color: #999; -} - -.irs-disabled { -} \ No newline at end of file diff --git a/assets/css/plugins/ionRangeSlider/ion.rangeSlider.skinNice.css b/assets/css/plugins/ionRangeSlider/ion.rangeSlider.skinNice.css deleted file mode 100644 index 6ca0f188..00000000 --- a/assets/css/plugins/ionRangeSlider/ion.rangeSlider.skinNice.css +++ /dev/null @@ -1,85 +0,0 @@ -/* Ion.RangeSlider, Nice Skin -// css version 1.8.5 -// by Denis Ineshin | ionden.com -// ===================================================================================================================*/ - -/* ===================================================================================================================== -// Skin details */ - -.irs-line-mid, -.irs-line-left, -.irs-line-right, -.irs-diapason, -.irs-slider { - background: url(../img/sprite-skin-nice.png) repeat-x; -} - -.irs { - height: 40px; -} -.irs-with-grid { - height: 60px; -} -.irs-line { - height: 8px; top: 25px; -} - .irs-line-left { - height: 8px; - background-position: 0 -30px; - } - .irs-line-mid { - height: 8px; - background-position: 0 0; - } - .irs-line-right { - height: 8px; - background-position: 100% -30px; - } - -.irs-diapason { - height: 8px; top: 25px; - background-position: 0 -60px; -} - -.irs-slider { - width: 22px; height: 22px; - top: 17px; - background-position: 0 -90px; -} -#irs-active-slider, .irs-slider:hover { - background-position: 0 -120px; -} - -.irs-min, .irs-max { - color: #999; - font-size: 10px; line-height: 1.333; - text-shadow: none; - top: 0; padding: 1px 3px; - background: rgba(0,0,0,0.1); - border-radius: 3px; -} -.lt-ie9 .irs-min, .lt-ie9 .irs-max { - background: #ccc; -} - -.irs-from, .irs-to, .irs-single { - color: #fff; - font-size: 10px; line-height: 1.333; - text-shadow: none; - padding: 1px 5px; - background: rgba(0,0,0,0.3); - border-radius: 3px; -} -.lt-ie9 .irs-from, .lt-ie9 .irs-to, .lt-ie9 .irs-single { - background: #999; -} - -.irs-grid-pol { - background: #99a4ac; -} -.irs-grid-text { - color: #99a4ac; -} - -.irs-disabled { -} \ No newline at end of file diff --git a/assets/css/plugins/ionRangeSlider/ion.rangeSlider.skinSimple.css b/assets/css/plugins/ionRangeSlider/ion.rangeSlider.skinSimple.css deleted file mode 100644 index 7b2d90c5..00000000 --- a/assets/css/plugins/ionRangeSlider/ion.rangeSlider.skinSimple.css +++ /dev/null @@ -1,85 +0,0 @@ -/* Ion.RangeSlider, Simple Skin -// css version 1.8.5 -// by Denis Ineshin | ionden.com -// ===================================================================================================================*/ - -/* ===================================================================================================================== -// Skin details */ - -.irs-line-mid, -.irs-line-left, -.irs-line-right, -.irs-diapason, -.irs-slider { - background: url(../img/sprite-skin-simple.png) repeat-x; -} - -.irs { - height: 40px; -} -.irs-with-grid { - height: 60px; -} -.irs-line { - height: 6px; top: 25px; -} - .irs-line-left { - height: 6px; - background-position: 0 -30px; - } - .irs-line-mid { - height: 6px; - background-position: 0 0; - } - .irs-line-right { - height: 6px; - background-position: 100% -30px; - } - -.irs-diapason { - height: 6px; top: 25px; - background-position: 0 -60px; -} - -.irs-slider { - width: 8px; height: 15px; - top: 21px; - background-position: 0 -90px; -} -#irs-active-slider, .irs-slider:hover { - background-position: 0 -120px; -} - -.irs-min, .irs-max { - color: #c0c0c0; - font-size: 10px; line-height: 1.333; - text-shadow: none; - top: 0; padding: 1px 3px; - background: rgba(0,0,0,0.1); - border-radius: 3px; -} -.lt-ie9 .irs-min, .lt-ie9 .irs-max { - background: #3654b0; -} - -.irs-from, .irs-to, .irs-single { - color: #000; - font-size: 10px; line-height: 1.333; - text-shadow: none; - padding: 1px 5px; - background: rgba(255,255,255,0.8); - border-radius: 3px; -} -.lt-ie9 .irs-from, .lt-ie9 .irs-to, .lt-ie9 .irs-single { - background: #d8dff3; -} - -.irs-grid-pol { - background: #777; -} -.irs-grid-text { - color: #e0e0e0; -} - -.irs-disabled { -} \ No newline at end of file diff --git a/assets/css/plugins/jQueryUI/images/animated-overlay.gif b/assets/css/plugins/jQueryUI/images/animated-overlay.gif deleted file mode 100644 index d441f75e..00000000 Binary files a/assets/css/plugins/jQueryUI/images/animated-overlay.gif and /dev/null differ diff --git a/assets/css/plugins/jQueryUI/images/ui-bg_flat_0_aaaaaa_40x100.png b/assets/css/plugins/jQueryUI/images/ui-bg_flat_0_aaaaaa_40x100.png deleted file mode 100644 index fa61af9b..00000000 Binary files a/assets/css/plugins/jQueryUI/images/ui-bg_flat_0_aaaaaa_40x100.png and /dev/null differ diff --git a/assets/css/plugins/jQueryUI/images/ui-bg_flat_75_ffffff_40x100.png b/assets/css/plugins/jQueryUI/images/ui-bg_flat_75_ffffff_40x100.png deleted file mode 100644 index cacf9b48..00000000 Binary files a/assets/css/plugins/jQueryUI/images/ui-bg_flat_75_ffffff_40x100.png and /dev/null differ diff --git a/assets/css/plugins/jQueryUI/images/ui-bg_glass_55_fbf9ee_1x400.png b/assets/css/plugins/jQueryUI/images/ui-bg_glass_55_fbf9ee_1x400.png deleted file mode 100644 index f8b999ef..00000000 Binary files a/assets/css/plugins/jQueryUI/images/ui-bg_glass_55_fbf9ee_1x400.png and /dev/null differ diff --git a/assets/css/plugins/jQueryUI/images/ui-bg_glass_65_ffffff_1x400.png b/assets/css/plugins/jQueryUI/images/ui-bg_glass_65_ffffff_1x400.png deleted file mode 100644 index 1a77e449..00000000 Binary files a/assets/css/plugins/jQueryUI/images/ui-bg_glass_65_ffffff_1x400.png and /dev/null differ diff --git a/assets/css/plugins/jQueryUI/images/ui-bg_glass_75_dadada_1x400.png b/assets/css/plugins/jQueryUI/images/ui-bg_glass_75_dadada_1x400.png deleted file mode 100644 index a062b46d..00000000 Binary files a/assets/css/plugins/jQueryUI/images/ui-bg_glass_75_dadada_1x400.png and /dev/null differ diff --git a/assets/css/plugins/jQueryUI/images/ui-bg_glass_75_e6e6e6_1x400.png b/assets/css/plugins/jQueryUI/images/ui-bg_glass_75_e6e6e6_1x400.png deleted file mode 100644 index ffc09b84..00000000 Binary files a/assets/css/plugins/jQueryUI/images/ui-bg_glass_75_e6e6e6_1x400.png and /dev/null differ diff --git a/assets/css/plugins/jQueryUI/images/ui-bg_glass_95_fef1ec_1x400.png b/assets/css/plugins/jQueryUI/images/ui-bg_glass_95_fef1ec_1x400.png deleted file mode 100644 index b52de613..00000000 Binary files a/assets/css/plugins/jQueryUI/images/ui-bg_glass_95_fef1ec_1x400.png and /dev/null differ diff --git a/assets/css/plugins/jQueryUI/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/assets/css/plugins/jQueryUI/images/ui-bg_highlight-soft_75_cccccc_1x100.png deleted file mode 100644 index 41077175..00000000 Binary files a/assets/css/plugins/jQueryUI/images/ui-bg_highlight-soft_75_cccccc_1x100.png and /dev/null differ diff --git a/assets/css/plugins/jQueryUI/images/ui-icons_222222_256x240.png b/assets/css/plugins/jQueryUI/images/ui-icons_222222_256x240.png deleted file mode 100644 index c1cb1170..00000000 Binary files a/assets/css/plugins/jQueryUI/images/ui-icons_222222_256x240.png and /dev/null differ diff --git a/assets/css/plugins/jQueryUI/images/ui-icons_2e83ff_256x240.png b/assets/css/plugins/jQueryUI/images/ui-icons_2e83ff_256x240.png deleted file mode 100644 index 84b601bf..00000000 Binary files a/assets/css/plugins/jQueryUI/images/ui-icons_2e83ff_256x240.png and /dev/null differ diff --git a/assets/css/plugins/jQueryUI/images/ui-icons_454545_256x240.png b/assets/css/plugins/jQueryUI/images/ui-icons_454545_256x240.png deleted file mode 100644 index b6db1acd..00000000 Binary files a/assets/css/plugins/jQueryUI/images/ui-icons_454545_256x240.png and /dev/null differ diff --git a/assets/css/plugins/jQueryUI/images/ui-icons_888888_256x240.png b/assets/css/plugins/jQueryUI/images/ui-icons_888888_256x240.png deleted file mode 100644 index feea0e20..00000000 Binary files a/assets/css/plugins/jQueryUI/images/ui-icons_888888_256x240.png and /dev/null differ diff --git a/assets/css/plugins/jQueryUI/images/ui-icons_cd0a0a_256x240.png b/assets/css/plugins/jQueryUI/images/ui-icons_cd0a0a_256x240.png deleted file mode 100644 index ed5b6b09..00000000 Binary files a/assets/css/plugins/jQueryUI/images/ui-icons_cd0a0a_256x240.png and /dev/null differ diff --git a/assets/css/plugins/jQueryUI/jquery-ui-1.10.4.custom.min.css b/assets/css/plugins/jQueryUI/jquery-ui-1.10.4.custom.min.css deleted file mode 100644 index 17aea524..00000000 --- a/assets/css/plugins/jQueryUI/jquery-ui-1.10.4.custom.min.css +++ /dev/null @@ -1,7 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-11-12 -* http://jqueryui.com -* Includes: jquery.ui.theme.css -* To view and modify this theme, visit http://jqueryui.com/themeroller/ -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ - -.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url("images/ui-bg_flat_75_ffffff_40x100.png") 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url("images/ui-bg_highlight-soft_75_cccccc_1x100.png") 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url("images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url("images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url("images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_888888_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_454545_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_454545_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_2e83ff_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cd0a0a_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px} \ No newline at end of file diff --git a/assets/css/plugins/jasny/jasny-bootstrap.min.css b/assets/css/plugins/jasny/jasny-bootstrap.min.css deleted file mode 100644 index 257e0a4a..00000000 --- a/assets/css/plugins/jasny/jasny-bootstrap.min.css +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Jasny Bootstrap v3.1.2 (http://jasny.github.io/bootstrap) - * Copyright 2012-2014 Arnold Daniels - * Licensed under Apache-2.0 (https://github.com/jasny/bootstrap/blob/master/LICENSE) - */ - -.container-smooth{max-width:1170px}@media (min-width:1px){.container-smooth{width:auto}}.btn-labeled{padding-top:0;padding-bottom:0}.btn-label{position:relative;background:0 0;background:rgba(0,0,0,.15);display:inline-block;padding:6px 12px;left:-12px;border-radius:3px 0 0 3px}.btn-label.btn-label-right{left:auto;right:-12px;border-radius:0 3px 3px 0}.btn-lg .btn-label{padding:10px 16px;left:-16px;border-radius:5px 0 0 5px}.btn-lg .btn-label.btn-label-right{left:auto;right:-16px;border-radius:0 5px 5px 0}.btn-sm .btn-label{padding:5px 10px;left:-10px;border-radius:2px 0 0 2px}.btn-sm .btn-label.btn-label-right{left:auto;right:-10px;border-radius:0 2px 2px 0}.btn-xs .btn-label{padding:1px 5px;left:-5px;border-radius:2px 0 0 2px}.btn-xs .btn-label.btn-label-right{left:auto;right:-5px;border-radius:0 2px 2px 0}.nav-tabs-bottom{border-bottom:0;border-top:1px solid #ddd}.nav-tabs-bottom>li{margin-bottom:0;margin-top:-1px}.nav-tabs-bottom>li>a{border-radius:0 0 4px 4px}.nav-tabs-bottom>li>a:hover,.nav-tabs-bottom>li>a:focus,.nav-tabs-bottom>li.active>a,.nav-tabs-bottom>li.active>a:hover,.nav-tabs-bottom>li.active>a:focus{border:1px solid #ddd;border-top-color:transparent}.nav-tabs-left{border-bottom:0;border-right:1px solid #ddd}.nav-tabs-left>li{margin-bottom:0;margin-right:-1px;float:none}.nav-tabs-left>li>a{border-radius:4px 0 0 4px;margin-right:0;margin-bottom:2px}.nav-tabs-left>li>a:hover,.nav-tabs-left>li>a:focus,.nav-tabs-left>li.active>a,.nav-tabs-left>li.active>a:hover,.nav-tabs-left>li.active>a:focus{border:1px solid #ddd;border-right-color:transparent}.row>.nav-tabs-left{padding-right:0;padding-left:15px;margin-right:-1px;position:relative;z-index:1}.row>.nav-tabs-left+.tab-content{border-left:1px solid #ddd}.nav-tabs-right{border-bottom:0;border-left:1px solid #ddd}.nav-tabs-right>li{margin-bottom:0;margin-left:-1px;float:none}.nav-tabs-right>li>a{border-radius:0 4px 4px 0;margin-left:0;margin-bottom:2px}.nav-tabs-right>li>a:hover,.nav-tabs-right>li>a:focus,.nav-tabs-right>li.active>a,.nav-tabs-right>li.active>a:hover,.nav-tabs-right>li.active>a:focus{border:1px solid #ddd;border-left-color:transparent}.row>.nav-tabs-right{padding-left:0;padding-right:15px}.navmenu,.navbar-offcanvas{width:300px;height:100%;border-width:1px;border-style:solid;border-radius:4px}.navmenu-fixed-left,.navmenu-fixed-right,.navbar-offcanvas{position:fixed;z-index:1030;top:0;border-radius:0}.navmenu-fixed-left,.navbar-offcanvas.navmenu-fixed-left{left:0;right:auto;border-width:0 1px 0 0;bottom:0;overflow-y:auto}.navmenu-fixed-right,.navbar-offcanvas{left:auto;right:0;border-width:0 0 0 1px}.navmenu-nav{margin-bottom:10px}.navmenu-nav.dropdown-menu{position:static;margin:0;padding-top:0;float:none;border:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.navbar-offcanvas .navbar-nav{margin:0}@media (min-width:768px){.navbar-offcanvas{width:auto;border-top:0;box-shadow:none}.navbar-offcanvas.offcanvas{position:static;display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-offcanvas .navbar-nav.navbar-left:first-child{margin-left:-15px}.navbar-offcanvas .navbar-nav.navbar-right:last-child{margin-right:-15px}.navbar-offcanvas .navmenu-brand{display:none}}.navmenu-brand{display:block;font-size:18px;line-height:20px;padding:10px 15px;margin:10px 0}.navmenu-brand:hover,.navmenu-brand:focus{text-decoration:none}.navmenu-default,.navbar-default .navbar-offcanvas{background-color:#f8f8f8;border-color:#e7e7e7}.navmenu-default .navmenu-brand,.navbar-default .navbar-offcanvas .navmenu-brand{color:#777}.navmenu-default .navmenu-brand:hover,.navbar-default .navbar-offcanvas .navmenu-brand:hover,.navmenu-default .navmenu-brand:focus,.navbar-default .navbar-offcanvas .navmenu-brand:focus{color:#5e5e5e;background-color:transparent}.navmenu-default .navmenu-text,.navbar-default .navbar-offcanvas .navmenu-text{color:#777}.navmenu-default .navmenu-nav>.dropdown>a:hover .caret,.navbar-default .navbar-offcanvas .navmenu-nav>.dropdown>a:hover .caret,.navmenu-default .navmenu-nav>.dropdown>a:focus .caret,.navbar-default .navbar-offcanvas .navmenu-nav>.dropdown>a:focus .caret{border-top-color:#333;border-bottom-color:#333}.navmenu-default .navmenu-nav>.open>a,.navbar-default .navbar-offcanvas .navmenu-nav>.open>a,.navmenu-default .navmenu-nav>.open>a:hover,.navbar-default .navbar-offcanvas .navmenu-nav>.open>a:hover,.navmenu-default .navmenu-nav>.open>a:focus,.navbar-default .navbar-offcanvas .navmenu-nav>.open>a:focus{background-color:#e7e7e7;color:#555}.navmenu-default .navmenu-nav>.open>a .caret,.navbar-default .navbar-offcanvas .navmenu-nav>.open>a .caret,.navmenu-default .navmenu-nav>.open>a:hover .caret,.navbar-default .navbar-offcanvas .navmenu-nav>.open>a:hover .caret,.navmenu-default .navmenu-nav>.open>a:focus .caret,.navbar-default .navbar-offcanvas .navmenu-nav>.open>a:focus .caret{border-top-color:#555;border-bottom-color:#555}.navmenu-default .navmenu-nav>.dropdown>a .caret,.navbar-default .navbar-offcanvas .navmenu-nav>.dropdown>a .caret{border-top-color:#777;border-bottom-color:#777}.navmenu-default .navmenu-nav.dropdown-menu,.navbar-default .navbar-offcanvas .navmenu-nav.dropdown-menu{background-color:#e7e7e7}.navmenu-default .navmenu-nav.dropdown-menu>.divider,.navbar-default .navbar-offcanvas .navmenu-nav.dropdown-menu>.divider{background-color:#f8f8f8}.navmenu-default .navmenu-nav.dropdown-menu>.active>a,.navbar-default .navbar-offcanvas .navmenu-nav.dropdown-menu>.active>a,.navmenu-default .navmenu-nav.dropdown-menu>.active>a:hover,.navbar-default .navbar-offcanvas .navmenu-nav.dropdown-menu>.active>a:hover,.navmenu-default .navmenu-nav.dropdown-menu>.active>a:focus,.navbar-default .navbar-offcanvas .navmenu-nav.dropdown-menu>.active>a:focus{background-color:#d7d7d7}.navmenu-default .navmenu-nav>li>a,.navbar-default .navbar-offcanvas .navmenu-nav>li>a{color:#777}.navmenu-default .navmenu-nav>li>a:hover,.navbar-default .navbar-offcanvas .navmenu-nav>li>a:hover,.navmenu-default .navmenu-nav>li>a:focus,.navbar-default .navbar-offcanvas .navmenu-nav>li>a:focus{color:#333;background-color:transparent}.navmenu-default .navmenu-nav>.active>a,.navbar-default .navbar-offcanvas .navmenu-nav>.active>a,.navmenu-default .navmenu-nav>.active>a:hover,.navbar-default .navbar-offcanvas .navmenu-nav>.active>a:hover,.navmenu-default .navmenu-nav>.active>a:focus,.navbar-default .navbar-offcanvas .navmenu-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navmenu-default .navmenu-nav>.disabled>a,.navbar-default .navbar-offcanvas .navmenu-nav>.disabled>a,.navmenu-default .navmenu-nav>.disabled>a:hover,.navbar-default .navbar-offcanvas .navmenu-nav>.disabled>a:hover,.navmenu-default .navmenu-nav>.disabled>a:focus,.navbar-default .navbar-offcanvas .navmenu-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navmenu-inverse,.navbar-inverse .navbar-offcanvas{background-color:#222;border-color:#080808}.navmenu-inverse .navmenu-brand,.navbar-inverse .navbar-offcanvas .navmenu-brand{color:#999}.navmenu-inverse .navmenu-brand:hover,.navbar-inverse .navbar-offcanvas .navmenu-brand:hover,.navmenu-inverse .navmenu-brand:focus,.navbar-inverse .navbar-offcanvas .navmenu-brand:focus{color:#fff;background-color:transparent}.navmenu-inverse .navmenu-text,.navbar-inverse .navbar-offcanvas .navmenu-text{color:#999}.navmenu-inverse .navmenu-nav>.dropdown>a:hover .caret,.navbar-inverse .navbar-offcanvas .navmenu-nav>.dropdown>a:hover .caret,.navmenu-inverse .navmenu-nav>.dropdown>a:focus .caret,.navbar-inverse .navbar-offcanvas .navmenu-nav>.dropdown>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}.navmenu-inverse .navmenu-nav>.open>a,.navbar-inverse .navbar-offcanvas .navmenu-nav>.open>a,.navmenu-inverse .navmenu-nav>.open>a:hover,.navbar-inverse .navbar-offcanvas .navmenu-nav>.open>a:hover,.navmenu-inverse .navmenu-nav>.open>a:focus,.navbar-inverse .navbar-offcanvas .navmenu-nav>.open>a:focus{background-color:#080808;color:#fff}.navmenu-inverse .navmenu-nav>.open>a .caret,.navbar-inverse .navbar-offcanvas .navmenu-nav>.open>a .caret,.navmenu-inverse .navmenu-nav>.open>a:hover .caret,.navbar-inverse .navbar-offcanvas .navmenu-nav>.open>a:hover .caret,.navmenu-inverse .navmenu-nav>.open>a:focus .caret,.navbar-inverse .navbar-offcanvas .navmenu-nav>.open>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}.navmenu-inverse .navmenu-nav>.dropdown>a .caret,.navbar-inverse .navbar-offcanvas .navmenu-nav>.dropdown>a .caret{border-top-color:#999;border-bottom-color:#999}.navmenu-inverse .navmenu-nav.dropdown-menu,.navbar-inverse .navbar-offcanvas .navmenu-nav.dropdown-menu{background-color:#080808}.navmenu-inverse .navmenu-nav.dropdown-menu>.divider,.navbar-inverse .navbar-offcanvas .navmenu-nav.dropdown-menu>.divider{background-color:#222}.navmenu-inverse .navmenu-nav.dropdown-menu>.active>a,.navbar-inverse .navbar-offcanvas .navmenu-nav.dropdown-menu>.active>a,.navmenu-inverse .navmenu-nav.dropdown-menu>.active>a:hover,.navbar-inverse .navbar-offcanvas .navmenu-nav.dropdown-menu>.active>a:hover,.navmenu-inverse .navmenu-nav.dropdown-menu>.active>a:focus,.navbar-inverse .navbar-offcanvas .navmenu-nav.dropdown-menu>.active>a:focus{background-color:#000}.navmenu-inverse .navmenu-nav>li>a,.navbar-inverse .navbar-offcanvas .navmenu-nav>li>a{color:#999}.navmenu-inverse .navmenu-nav>li>a:hover,.navbar-inverse .navbar-offcanvas .navmenu-nav>li>a:hover,.navmenu-inverse .navmenu-nav>li>a:focus,.navbar-inverse .navbar-offcanvas .navmenu-nav>li>a:focus{color:#fff;background-color:transparent}.navmenu-inverse .navmenu-nav>.active>a,.navbar-inverse .navbar-offcanvas .navmenu-nav>.active>a,.navmenu-inverse .navmenu-nav>.active>a:hover,.navbar-inverse .navbar-offcanvas .navmenu-nav>.active>a:hover,.navmenu-inverse .navmenu-nav>.active>a:focus,.navbar-inverse .navbar-offcanvas .navmenu-nav>.active>a:focus{color:#fff;background-color:#080808}.navmenu-inverse .navmenu-nav>.disabled>a,.navbar-inverse .navbar-offcanvas .navmenu-nav>.disabled>a,.navmenu-inverse .navmenu-nav>.disabled>a:hover,.navbar-inverse .navbar-offcanvas .navmenu-nav>.disabled>a:hover,.navmenu-inverse .navmenu-nav>.disabled>a:focus,.navbar-inverse .navbar-offcanvas .navmenu-nav>.disabled>a:focus{color:#444;background-color:transparent}.alert-fixed-top,.alert-fixed-bottom{position:fixed;width:100%;z-index:1035;border-radius:0;margin:0;left:0}@media (min-width:992px){.alert-fixed-top,.alert-fixed-bottom{width:992px;left:50%;margin-left:-496px}}.alert-fixed-top{top:0;border-width:0 0 1px}@media (min-width:992px){.alert-fixed-top{border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-width:0 1px 1px}}.alert-fixed-bottom{bottom:0;border-width:1px 0 0}@media (min-width:992px){.alert-fixed-bottom{border-top-right-radius:4px;border-top-left-radius:4px;border-width:1px 1px 0}}.offcanvas{display:none}.offcanvas.in{display:block}@media (max-width:767px){.offcanvas-xs{display:none}.offcanvas-xs.in{display:block}}@media (max-width:991px){.offcanvas-sm{display:none}.offcanvas-sm.in{display:block}}@media (max-width:1199px){.offcanvas-md{display:none}.offcanvas-md.in{display:block}}.offcanvas-lg{display:none}.offcanvas-lg.in{display:block}.canvas-sliding{-webkit-transition:top .35s,left .35s,bottom .35s,right .35s;transition:top .35s,left .35s,bottom .35s,right .35s}.offcanvas-clone{height:0!important;width:0!important;overflow:hidden!important;border:none!important;margin:0!important;padding:0!important;position:absolute!important;top:auto!important;left:auto!important;bottom:0!important;right:0!important;opacity:0!important}.table.rowlink td:not(.rowlink-skip),.table .rowlink td:not(.rowlink-skip){cursor:pointer}.table.rowlink td:not(.rowlink-skip) a,.table .rowlink td:not(.rowlink-skip) a{color:inherit;font:inherit;text-decoration:inherit}.table-hover.rowlink tr:hover td,.table-hover .rowlink tr:hover td{background-color:#cfcfcf}.btn-file{overflow:hidden;position:relative;vertical-align:middle}.btn-file>input{position:absolute;top:0;right:0;margin:0;opacity:0;filter:alpha(opacity=0);font-size:23px;height:100%;width:100%;direction:ltr;cursor:pointer}.fileinput{margin-bottom:9px;display:inline-block}.fileinput .form-control{padding-top:7px;padding-bottom:5px;display:inline-block;margin-bottom:0;vertical-align:middle;cursor:text}.fileinput .thumbnail{overflow:hidden;display:inline-block;margin-bottom:5px;vertical-align:middle;text-align:center}.fileinput .thumbnail>img{max-height:100%}.fileinput .btn{vertical-align:middle}.fileinput-exists .fileinput-new,.fileinput-new .fileinput-exists{display:none}.fileinput-inline .fileinput-controls{display:inline}.fileinput-filename{vertical-align:middle;display:inline-block;overflow:hidden}.form-control .fileinput-filename{vertical-align:bottom}.fileinput.input-group{display:table}.fileinput.input-group>*{position:relative;z-index:2}.fileinput.input-group>.btn-file{z-index:1}.fileinput-new.input-group .btn-file,.fileinput-new .input-group .btn-file{border-radius:0 4px 4px 0}.fileinput-new.input-group .btn-file.btn-xs,.fileinput-new .input-group .btn-file.btn-xs,.fileinput-new.input-group .btn-file.btn-sm,.fileinput-new .input-group .btn-file.btn-sm{border-radius:0 3px 3px 0}.fileinput-new.input-group .btn-file.btn-lg,.fileinput-new .input-group .btn-file.btn-lg{border-radius:0 6px 6px 0}.form-group.has-warning .fileinput .fileinput-preview{color:#8a6d3b}.form-group.has-warning .fileinput .thumbnail{border-color:#faebcc}.form-group.has-error .fileinput .fileinput-preview{color:#a94442}.form-group.has-error .fileinput .thumbnail{border-color:#ebccd1}.form-group.has-success .fileinput .fileinput-preview{color:#3c763d}.form-group.has-success .fileinput .thumbnail{border-color:#d6e9c6}.input-group-addon:not(:first-child){border-left:0} \ No newline at end of file diff --git a/assets/css/plugins/jqGrid/ui.jqgrid.css b/assets/css/plugins/jqGrid/ui.jqgrid.css deleted file mode 100644 index 11594b11..00000000 --- a/assets/css/plugins/jqGrid/ui.jqgrid.css +++ /dev/null @@ -1,171 +0,0 @@ -/*Grid*/ -.ui-jqgrid {position: relative;} -.ui-jqgrid .ui-jqgrid-view {position: relative;left:0; top: 0; padding: 0; font-size:11px;} -/* caption*/ -.ui-jqgrid .ui-jqgrid-titlebar {padding: .3em .2em .2em .3em; position: relative; font-size: 12px; border-left: 0 none;border-right: 0 none; border-top: 0 none;} -.ui-jqgrid .ui-jqgrid-caption {text-align: left;} -.ui-jqgrid .ui-jqgrid-title { margin: .1em 0 .2em; } -.ui-jqgrid .ui-jqgrid-titlebar-close { position: absolute;top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height:18px; cursor:pointer;} -.ui-jqgrid .ui-jqgrid-titlebar-close span { display: block; margin: 1px; } -.ui-jqgrid .ui-jqgrid-titlebar-close:hover { padding: 0; } -/* header*/ -.ui-jqgrid .ui-jqgrid-hdiv {position: relative; margin: 0;padding: 0; overflow-x: hidden; border-left: 0 none !important; border-top : 0 none !important; border-right : 0 none !important;} -.ui-jqgrid .ui-jqgrid-hbox {float: left; padding-right: 20px;} -.ui-jqgrid .ui-jqgrid-htable {table-layout:fixed;margin:0;} -.ui-jqgrid .ui-jqgrid-htable th {height:22px;padding: 0 2px 0 2px;} -.ui-jqgrid .ui-jqgrid-htable th div {overflow: hidden; position:relative; height:17px;} -.ui-th-column, .ui-jqgrid .ui-jqgrid-htable th.ui-th-column {overflow: hidden;white-space: nowrap;text-align:center;border-top : 0 none;border-bottom : 0 none;} -.ui-th-ltr, .ui-jqgrid .ui-jqgrid-htable th.ui-th-ltr {border-left : 0 none;} -.ui-th-rtl, .ui-jqgrid .ui-jqgrid-htable th.ui-th-rtl {border-right : 0 none;} -.ui-first-th-ltr {border-right: 1px solid; } -.ui-first-th-rtl {border-left: 1px solid; } -.ui-jqgrid .ui-th-div-ie {white-space: nowrap; zoom :1; height:17px;} -.ui-jqgrid .ui-jqgrid-resize {height:20px !important;position: relative; cursor :e-resize;display: inline;overflow: hidden;} -.ui-jqgrid .ui-grid-ico-sort {overflow:hidden;position:absolute;display:inline; cursor: pointer !important;} -.ui-jqgrid .ui-icon-asc {margin-top:-3px; height:12px;} -.ui-jqgrid .ui-icon-desc {margin-top:3px;height:12px;} -.ui-jqgrid .ui-i-asc {margin-top:0;height:16px;} -.ui-jqgrid .ui-i-desc {margin-top:0;margin-left:13px;height:16px;} -.ui-jqgrid .ui-jqgrid-sortable {cursor:pointer;} -.ui-jqgrid tr.ui-search-toolbar th { border-top-width: 1px !important; border-top-color: inherit !important; border-top-style: ridge !important } -tr.ui-search-toolbar input {margin: 1px 0 0 0} -tr.ui-search-toolbar select {margin: 1px 0 0 0} -/* body */ -.ui-jqgrid .ui-jqgrid-bdiv {position: relative; margin: 0; padding:0; overflow: auto; text-align:left;} -.ui-jqgrid .ui-jqgrid-btable {table-layout:fixed; margin:0; outline-style: none; } -.ui-jqgrid tr.jqgrow { outline-style: none; } -.ui-jqgrid tr.jqgroup { outline-style: none; } -.ui-jqgrid tr.jqgrow td {font-weight: normal; overflow: hidden; white-space: pre; height: 22px;padding: 0 2px 0 2px;border-bottom-width: 1px; border-bottom-color: inherit; border-bottom-style: solid;} -.ui-jqgrid tr.jqgfirstrow td {padding: 0 2px 0 2px;border-right-width: 1px; border-right-style: solid;} -.ui-jqgrid tr.jqgroup td {font-weight: normal; overflow: hidden; white-space: pre; height: 22px;padding: 0 2px 0 2px;border-bottom-width: 1px; border-bottom-color: inherit; border-bottom-style: solid;} -.ui-jqgrid tr.jqfoot td {font-weight: bold; overflow: hidden; white-space: pre; height: 22px;padding: 0 2px 0 2px;border-bottom-width: 1px; border-bottom-color: inherit; border-bottom-style: solid;} -.ui-jqgrid tr.ui-row-ltr td {text-align:left;border-right-width: 1px; border-right-color: inherit; border-right-style: solid;} -.ui-jqgrid tr.ui-row-rtl td {text-align:right;border-left-width: 1px; border-left-color: inherit; border-left-style: solid;} -.ui-jqgrid td.jqgrid-rownum { padding: 0 2px 0 2px; margin: 0; border: 0 none;} -.ui-jqgrid .ui-jqgrid-resize-mark { width:2px; left:0; background-color:#777; cursor: e-resize; cursor: col-resize; position:absolute; top:0; height:100px; overflow:hidden; display:none; border:0 none; z-index: 99999;} -/* footer */ -.ui-jqgrid .ui-jqgrid-sdiv {position: relative; margin: 0;padding: 0; overflow: hidden; border-left: 0 none !important; border-top : 0 none !important; border-right : 0 none !important;} -.ui-jqgrid .ui-jqgrid-ftable {table-layout:fixed; margin-bottom:0;} -.ui-jqgrid tr.footrow td {font-weight: bold; overflow: hidden; white-space:nowrap; height: 21px;padding: 0 2px 0 2px;border-top-width: 1px; border-top-color: inherit; border-top-style: solid;} -.ui-jqgrid tr.footrow-ltr td {text-align:left;border-right-width: 1px; border-right-color: inherit; border-right-style: solid;} -.ui-jqgrid tr.footrow-rtl td {text-align:right;border-left-width: 1px; border-left-color: inherit; border-left-style: solid;} -/* Pager*/ -.ui-jqgrid .ui-jqgrid-pager { border-left: 0 none !important;border-right: 0 none !important; border-bottom: 0 none !important; margin: 0 !important; padding: 0 !important; position: relative; height: 25px;white-space: nowrap;overflow: hidden;font-size:11px;} -.ui-jqgrid .ui-pager-control {position: relative;} -.ui-jqgrid .ui-pg-table {position: relative; padding-bottom:2px; width:auto; margin: 0;} -.ui-jqgrid .ui-pg-table td {font-weight:normal; vertical-align:middle; padding:1px;} -.ui-jqgrid .ui-pg-button { height:19px !important;} -.ui-jqgrid .ui-pg-button span { display: block; margin: 1px; float:left;} -.ui-jqgrid .ui-pg-button:hover { padding: 0; } -.ui-jqgrid .ui-state-disabled:hover {padding:1px;} -.ui-jqgrid .ui-pg-input { height:13px;font-size:.8em; margin: 0;} -.ui-jqgrid .ui-pg-selbox {font-size:.8em; line-height:18px; display:block; height:18px; margin: 0;} -.ui-jqgrid .ui-separator {height: 18px; border-left: 1px solid #ccc ; border-right: 1px solid #ccc ; margin: 1px; float: right;} -.ui-jqgrid .ui-paging-info {font-weight: normal;height:19px; margin-top:3px;margin-right:4px;} -.ui-jqgrid .ui-jqgrid-pager .ui-pg-div {padding:1px 0;float:left;position:relative;} -.ui-jqgrid .ui-jqgrid-pager .ui-pg-button { cursor:pointer; } -.ui-jqgrid .ui-jqgrid-pager .ui-pg-div span.ui-icon {float:left;margin:0 2px;} -.ui-jqgrid td input, .ui-jqgrid td select .ui-jqgrid td textarea { margin: 0;} -.ui-jqgrid td textarea {width:auto;height:auto;} -.ui-jqgrid .ui-jqgrid-toppager {border-left: 0 none !important;border-right: 0 none !important; border-top: 0 none !important; margin: 0 !important; padding: 0 !important; position: relative; height: 25px !important;white-space: nowrap;overflow: hidden;} -.ui-jqgrid .ui-jqgrid-toppager .ui-pg-div {padding:1px 0;float:left;position:relative;} -.ui-jqgrid .ui-jqgrid-toppager .ui-pg-button { cursor:pointer; } -.ui-jqgrid .ui-jqgrid-toppager .ui-pg-div span.ui-icon {float:left;margin:0 2px;} -/*subgrid*/ -.ui-jqgrid .ui-jqgrid-btable .ui-sgcollapsed span {display: block;} -.ui-jqgrid .ui-subgrid {margin:0;padding:0; width:100%;} -.ui-jqgrid .ui-subgrid table {table-layout: fixed;} -.ui-jqgrid .ui-subgrid tr.ui-subtblcell td {height:18px;border-right-width: 1px; border-right-color: inherit; border-right-style: solid;border-bottom-width: 1px; border-bottom-color: inherit; border-bottom-style: solid;} -.ui-jqgrid .ui-subgrid td.subgrid-data {border-top: 0 none !important;} -.ui-jqgrid .ui-subgrid td.subgrid-cell {border-width: 0 0 1px 0;} -.ui-jqgrid .ui-th-subgrid {height:20px;} -/* loading */ -.ui-jqgrid .loading {position: absolute; top: 45%;left: 45%;width: auto;z-index:101;padding: 6px; margin: 5px;text-align: center;font-weight: bold;display: none;border-width: 2px !important; font-size:11px;} -.ui-jqgrid .jqgrid-overlay {display:none;z-index:100;} -/* IE * html .jqgrid-overlay {width: expression(this.parentNode.offsetWidth+'px');height: expression(this.parentNode.offsetHeight+'px');} */ -* .jqgrid-overlay iframe {position:absolute;top:0;left:0;z-index:-1;} -/* IE width: expression(this.parentNode.offsetWidth+'px');height: expression(this.parentNode.offsetHeight+'px');}*/ -/* end loading div */ -/* toolbar */ -.ui-jqgrid .ui-userdata {border-left: 0 none; border-right: 0 none; height : 21px;overflow: hidden; } -/*Modal Window */ -.ui-jqdialog { display: none; width: 300px; position: absolute; padding: .2em; font-size:11px; overflow:visible;} -.ui-jqdialog .ui-jqdialog-titlebar { padding: .3em .2em; position: relative; } -.ui-jqdialog .ui-jqdialog-title { margin: .1em 0 .2em; } -.ui-jqdialog .ui-jqdialog-titlebar-close { position: absolute; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; cursor:pointer;} - -.ui-jqdialog .ui-jqdialog-titlebar-close span { display: block; margin: 1px; } -.ui-jqdialog .ui-jqdialog-titlebar-close:hover, .ui-jqdialog .ui-jqdialog-titlebar-close:focus { padding: 0; } -.ui-jqdialog-content, .ui-jqdialog .ui-jqdialog-content { border: 0; padding: .3em .2em; background: none; height:auto;} -.ui-jqdialog .ui-jqconfirm {padding: .4em 1em; border-width:3px;position:absolute;bottom:10px;right:10px;overflow:visible;display:none;height:80px;width:220px;text-align:center;} -.ui-jqdialog>.ui-resizable-se { bottom: -3px; right: -3px} -.ui-jqgrid>.ui-resizable-se { bottom: -3px; right: -3px } -/* end Modal window*/ -/* Form edit */ -.ui-jqdialog-content .FormGrid {margin: 0;} -.ui-jqdialog-content .EditTable { width: 100%; margin-bottom:0;} -.ui-jqdialog-content .DelTable { width: 100%; margin-bottom:0;} -.EditTable td input, .EditTable td select, .EditTable td textarea {margin: 0;} -.EditTable td textarea { width:auto; height:auto;} -.ui-jqdialog-content td.EditButton {text-align: right;border-top: 0 none;border-left: 0 none;border-right: 0 none; padding-bottom:5px; padding-top:5px;} -.ui-jqdialog-content td.navButton {text-align: center; border-left: 0 none;border-top: 0 none;border-right: 0 none; padding-bottom:5px; padding-top:5px;} -.ui-jqdialog-content input.FormElement {padding:.3em} -.ui-jqdialog-content select.FormElement {padding:.3em} -.ui-jqdialog-content .data-line {padding-top:.1em;border: 0 none;} - -.ui-jqdialog-content .CaptionTD {vertical-align: middle;border: 0 none; padding: 2px;white-space: nowrap;} -.ui-jqdialog-content .DataTD {padding: 2px; border: 0 none; vertical-align: top;} -.ui-jqdialog-content .form-view-data {white-space:pre} -.fm-button { display: inline-block; margin:0 4px 0 0; padding: .4em .5em; text-decoration:none !important; cursor:pointer; position: relative; text-align: center; zoom: 1; } -.fm-button-icon-left { padding-left: 1.9em; } -.fm-button-icon-right { padding-right: 1.9em; } -.fm-button-icon-left .ui-icon { right: auto; left: .2em; margin-left: 0; position: absolute; top: 50%; margin-top: -8px; } -.fm-button-icon-right .ui-icon { left: auto; right: .2em; margin-left: 0; position: absolute; top: 50%; margin-top: -8px;} -#nData, #pData { float: left; margin:3px;padding: 0; width: 15px; } -/* End Eorm edit */ -/*.ui-jqgrid .edit-cell {}*/ -.ui-jqgrid .selected-row, div.ui-jqgrid .selected-row td {font-style : normal;border-left: 0 none;} -/* inline edit actions button*/ -.ui-inline-del.ui-state-hover span, .ui-inline-edit.ui-state-hover span, -.ui-inline-save.ui-state-hover span, .ui-inline-cancel.ui-state-hover span { - margin: -1px; -} -/* Tree Grid */ -.ui-jqgrid .tree-wrap {float: left; position: relative;height: 18px;white-space: nowrap;overflow: hidden;} -.ui-jqgrid .tree-minus {position: absolute; height: 18px; width: 18px; overflow: hidden;} -.ui-jqgrid .tree-plus {position: absolute; height: 18px; width: 18px; overflow: hidden;} -.ui-jqgrid .tree-leaf {position: absolute; height: 18px; width: 18px;overflow: hidden;} -.ui-jqgrid .treeclick {cursor: pointer;} -/* moda dialog */ -* iframe.jqm {position:absolute;top:0;left:0;z-index:-1;} -/* width: expression(this.parentNode.offsetWidth+'px');height: expression(this.parentNode.offsetHeight+'px');}*/ -.ui-jqgrid-dnd tr td {border-right-width: 1px; border-right-color: inherit; border-right-style: solid; height:20px} -/* RTL Support */ -.ui-jqgrid .ui-jqgrid-caption-rtl {text-align: right;} -.ui-jqgrid .ui-jqgrid-hbox-rtl {float: right; padding-left: 20px;} -.ui-jqgrid .ui-jqgrid-resize-ltr {float: right;margin: -2px -2px -2px 0;} -.ui-jqgrid .ui-jqgrid-resize-rtl {float: left;margin: -2px 0 -1px -3px;} -.ui-jqgrid .ui-sort-rtl {left:0;} -.ui-jqgrid .tree-wrap-ltr {float: left;} -.ui-jqgrid .tree-wrap-rtl {float: right;} -.ui-jqgrid .ui-ellipsis {-moz-text-overflow:ellipsis;text-overflow:ellipsis;} - -/* Toolbar Search Menu */ -.ui-search-menu { position: absolute; padding: 2px 5px;} -.ui-jqgrid .ui-search-table { padding: 0; border: 0 none; height:20px; width:100%;} -.ui-jqgrid .ui-search-table .ui-search-oper { width:20px; } -a.g-menu-item, a.soptclass, a.clearsearchclass { cursor: pointer; } -.ui-jqgrid .ui-search-table .ui-search-input>input, -.ui-jqgrid .ui-search-table .ui-search-input>select -{ - display: block; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - box-sizing: border-box; -} -.ui-jqgrid .ui-jqgrid-view input, -.ui-jqgrid .ui-jqgrid-view select, -.ui-jqgrid .ui-jqgrid-view textarea, -.ui-jqgrid .ui-jqgrid-view button { - font-size: 11px -} diff --git a/assets/css/plugins/jsTree/32px.png b/assets/css/plugins/jsTree/32px.png deleted file mode 100644 index 15327152..00000000 Binary files a/assets/css/plugins/jsTree/32px.png and /dev/null differ diff --git a/assets/css/plugins/jsTree/39px.png b/assets/css/plugins/jsTree/39px.png deleted file mode 100644 index 1b886dc0..00000000 Binary files a/assets/css/plugins/jsTree/39px.png and /dev/null differ diff --git a/assets/css/plugins/jsTree/40px.png b/assets/css/plugins/jsTree/40px.png deleted file mode 100644 index 1959347a..00000000 Binary files a/assets/css/plugins/jsTree/40px.png and /dev/null differ diff --git a/assets/css/plugins/jsTree/style.css b/assets/css/plugins/jsTree/style.css deleted file mode 100644 index bf641770..00000000 --- a/assets/css/plugins/jsTree/style.css +++ /dev/null @@ -1,1050 +0,0 @@ -/* jsTree default theme */ -.jstree-node, -.jstree-children, -.jstree-container-ul { - display: block; - margin: 0; - padding: 0; - list-style-type: none; - list-style-image: none; -} -.jstree-node { - white-space: nowrap; -} -.jstree-anchor { - display: inline-block; - color: black; - white-space: nowrap; - padding: 0 4px 0 1px; - margin: 0; - vertical-align: top; -} -.jstree-anchor:focus { - outline: 0; -} -.jstree-anchor, -.jstree-anchor:link, -.jstree-anchor:visited, -.jstree-anchor:hover, -.jstree-anchor:active { - text-decoration: none; - color: inherit; -} -.jstree-icon { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0; - vertical-align: top; - text-align: center; -} -.jstree-icon:empty { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0; - vertical-align: top; - text-align: center; -} -.jstree-ocl { - cursor: pointer; -} -.jstree-leaf > .jstree-ocl { - cursor: default; -} -.jstree .jstree-open > .jstree-children { - display: block; -} -.jstree .jstree-closed > .jstree-children, -.jstree .jstree-leaf > .jstree-children { - display: none; -} -.jstree-anchor > .jstree-themeicon { - margin-right: 2px; -} -.jstree-no-icons .jstree-themeicon, -.jstree-anchor > .jstree-themeicon-hidden { - display: none; -} -.jstree-rtl .jstree-anchor { - padding: 0 1px 0 4px; -} -.jstree-rtl .jstree-anchor > .jstree-themeicon { - margin-left: 2px; - margin-right: 0; -} -.jstree-rtl .jstree-node { - margin-left: 0; -} -.jstree-rtl .jstree-container-ul > .jstree-node { - margin-right: 0; -} -.jstree-wholerow-ul { - position: relative; - display: inline-block; - min-width: 100%; -} -.jstree-wholerow-ul .jstree-leaf > .jstree-ocl { - cursor: pointer; -} -.jstree-wholerow-ul .jstree-anchor, -.jstree-wholerow-ul .jstree-icon { - position: relative; -} -.jstree-wholerow-ul .jstree-wholerow { - width: 100%; - cursor: pointer; - position: absolute; - left: 0; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.vakata-context { - display: none; -} -.vakata-context, -.vakata-context ul { - margin: 0; - padding: 2px; - position: absolute; - background: #f5f5f5; - border: 1px solid #979797; - -moz-box-shadow: 5px 5px 4px -4px #666666; - -webkit-box-shadow: 2px 2px 2px #999999; - box-shadow: 2px 2px 2px #999999; -} -.vakata-context ul { - list-style: none; - left: 100%; - margin-top: -2.7em; - margin-left: -4px; -} -.vakata-context .vakata-context-right ul { - left: auto; - right: 100%; - margin-left: auto; - margin-right: -4px; -} -.vakata-context li { - list-style: none; - display: inline; -} -.vakata-context li > a { - display: block; - padding: 0 2em 0 2em; - text-decoration: none; - width: auto; - color: black; - white-space: nowrap; - line-height: 2.4em; - -moz-text-shadow: 1px 1px 0 white; - -webkit-text-shadow: 1px 1px 0 white; - text-shadow: 1px 1px 0 white; - -moz-border-radius: 1px; - -webkit-border-radius: 1px; - border-radius: 1px; -} -.vakata-context li > a:hover { - position: relative; - background-color: #e8eff7; - -moz-box-shadow: 0 0 2px #0a6aa1; - -webkit-box-shadow: 0 0 2px #0a6aa1; - box-shadow: 0 0 2px #0a6aa1; -} -.vakata-context li > a.vakata-context-parent { - background-image: url("data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAIORI4JlrqN1oMSnmmZDQUAOw=="); - background-position: right center; - background-repeat: no-repeat; -} -.vakata-context li > a:focus { - outline: 0; -} -.vakata-context .vakata-context-hover > a { - position: relative; - background-color: #e8eff7; - -moz-box-shadow: 0 0 2px #0a6aa1; - -webkit-box-shadow: 0 0 2px #0a6aa1; - box-shadow: 0 0 2px #0a6aa1; -} -.vakata-context .vakata-context-separator > a, -.vakata-context .vakata-context-separator > a:hover { - background: white; - border: 0; - border-top: 1px solid #e2e3e3; - height: 1px; - min-height: 1px; - max-height: 1px; - padding: 0; - margin: 0 0 0 2.4em; - border-left: 1px solid #e0e0e0; - -moz-text-shadow: 0 0 0 transparent; - -webkit-text-shadow: 0 0 0 transparent; - text-shadow: 0 0 0 transparent; - -moz-box-shadow: 0 0 0 transparent; - -webkit-box-shadow: 0 0 0 transparent; - box-shadow: 0 0 0 transparent; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.vakata-context .vakata-contextmenu-disabled a, -.vakata-context .vakata-contextmenu-disabled a:hover { - color: silver; - background-color: transparent; - border: 0; - box-shadow: 0 0 0; -} -.vakata-context li > a > i { - text-decoration: none; - display: inline-block; - width: 2.4em; - height: 2.4em; - background: transparent; - margin: 0 0 0 -2em; - vertical-align: top; - text-align: center; - line-height: 2.4em; -} -.vakata-context li > a > i:empty { - width: 2.4em; - line-height: 2.4em; -} -.vakata-context li > a .vakata-contextmenu-sep { - display: inline-block; - width: 1px; - height: 2.4em; - background: white; - margin: 0 0.5em 0 0; - border-left: 1px solid #e2e3e3; -} -.vakata-context .vakata-contextmenu-shortcut { - font-size: 0.8em; - color: silver; - opacity: 0.5; - display: none; -} -.vakata-context-rtl ul { - left: auto; - right: 100%; - margin-left: auto; - margin-right: -4px; -} -.vakata-context-rtl li > a.vakata-context-parent { - background-image: url("data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAINjI+AC7rWHIsPtmoxLAA7"); - background-position: left center; - background-repeat: no-repeat; -} -.vakata-context-rtl .vakata-context-separator > a { - margin: 0 2.4em 0 0; - border-left: 0; - border-right: 1px solid #e2e3e3; -} -.vakata-context-rtl .vakata-context-left ul { - right: auto; - left: 100%; - margin-left: -4px; - margin-right: auto; -} -.vakata-context-rtl li > a > i { - margin: 0 -2em 0 0; -} -.vakata-context-rtl li > a .vakata-contextmenu-sep { - margin: 0 0 0 0.5em; - border-left-color: white; - background: #e2e3e3; -} -#jstree-marker { - position: absolute; - top: 0; - left: 0; - margin: -5px 0 0 0; - padding: 0; - border-right: 0; - border-top: 5px solid transparent; - border-bottom: 5px solid transparent; - border-left: 5px solid; - width: 0; - height: 0; - font-size: 0; - line-height: 0; -} -#jstree-dnd { - line-height: 16px; - margin: 0; - padding: 4px; -} -#jstree-dnd .jstree-icon, -#jstree-dnd .jstree-copy { - display: inline-block; - text-decoration: none; - margin: 0 2px 0 0; - padding: 0; - width: 16px; - height: 16px; -} -#jstree-dnd .jstree-ok { - background: green; -} -#jstree-dnd .jstree-er { - background: red; -} -#jstree-dnd .jstree-copy { - margin: 0 2px 0 2px; -} -.jstree-default .jstree-node, -.jstree-default .jstree-icon { - background-repeat: no-repeat; - background-color: transparent; -} -.jstree-default .jstree-anchor, -.jstree-default .jstree-wholerow { - transition: background-color 0.15s, box-shadow 0.15s; -} -.jstree-default .jstree-hovered { - background: #e7f4f9; - border-radius: 2px; - box-shadow: inset 0 0 1px #cccccc; -} -.jstree-default .jstree-clicked { - background: #beebff; - border-radius: 2px; - box-shadow: inset 0 0 1px #999999; -} -.jstree-default .jstree-no-icons .jstree-anchor > .jstree-themeicon { - display: none; -} -.jstree-default .jstree-disabled { - background: transparent; - color: #666666; -} -.jstree-default .jstree-disabled.jstree-hovered { - background: transparent; - box-shadow: none; -} -.jstree-default .jstree-disabled.jstree-clicked { - background: #efefef; -} -.jstree-default .jstree-disabled > .jstree-icon { - opacity: 0.8; - filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'jstree-grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#jstree-grayscale"); - /* Firefox 10+ */ - filter: gray; - /* IE6-9 */ - -webkit-filter: grayscale(100%); - /* Chrome 19+ & Safari 6+ */ -} -.jstree-default .jstree-search { - font-style: italic; - color: #8b0000; - font-weight: bold; -} -.jstree-default .jstree-no-checkboxes .jstree-checkbox { - display: none !important; -} -.jstree-default.jstree-checkbox-no-clicked .jstree-clicked { - background: transparent; - box-shadow: none; -} -.jstree-default.jstree-checkbox-no-clicked .jstree-clicked.jstree-hovered { - background: #e7f4f9; -} -.jstree-default.jstree-checkbox-no-clicked > .jstree-wholerow-ul .jstree-wholerow-clicked { - background: transparent; -} -.jstree-default.jstree-checkbox-no-clicked > .jstree-wholerow-ul .jstree-wholerow-clicked.jstree-wholerow-hovered { - background: #e7f4f9; -} -.jstree-default > .jstree-striped { - background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAMAAAB/qqA+AAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMNAMM9s3UAAAAXSURBVHjajcEBAQAAAIKg/H/aCQZ70AUBjAATb6YPDgAAAABJRU5ErkJggg==") left top repeat; -} -.jstree-default > .jstree-wholerow-ul .jstree-hovered, -.jstree-default > .jstree-wholerow-ul .jstree-clicked { - background: transparent; - box-shadow: none; - border-radius: 0; -} -.jstree-default .jstree-wholerow { - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - box-sizing: border-box; -} -.jstree-default .jstree-wholerow-hovered { - background: #e7f4f9; -} -.jstree-default .jstree-wholerow-clicked { - background: #beebff; - background: -moz-linear-gradient(top, #beebff 0%, #a8e4ff 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #beebff), color-stop(100%, #a8e4ff)); - background: -webkit-linear-gradient(top, #beebff 0%, #a8e4ff 100%); - background: -o-linear-gradient(top, #beebff 0%, #a8e4ff 100%); - background: -ms-linear-gradient(top, #beebff 0%, #a8e4ff 100%); - background: linear-gradient(to bottom, #beebff 0%, #a8e4ff 100%); - /*filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='@color1', endColorstr='@color2',GradientType=0 );*/ -} -.jstree-default .jstree-node { - min-height: 24px; - line-height: 24px; - margin-left: 24px; - min-width: 24px; -} -.jstree-default .jstree-anchor { - line-height: 24px; - height: 24px; -} -.jstree-default .jstree-icon { - width: 24px; - height: 24px; - line-height: 24px; -} -.jstree-default .jstree-icon:empty { - width: 24px; - height: 24px; - line-height: 24px; -} -.jstree-default.jstree-rtl .jstree-node { - margin-right: 24px; -} -.jstree-default .jstree-wholerow { - height: 24px; -} -.jstree-default .jstree-node, -.jstree-default .jstree-icon { - background-image: url("32px.png"); -} -.jstree-default .jstree-node { - background-position: -292px -4px; - background-repeat: repeat-y; -} -.jstree-default .jstree-last { - background: transparent; -} -.jstree-default .jstree-open > .jstree-ocl { - background-position: -132px -4px; -} -.jstree-default .jstree-closed > .jstree-ocl { - background-position: -100px -4px; -} -.jstree-default .jstree-leaf > .jstree-ocl { - background-position: -68px -4px; -} -.jstree-default .jstree-themeicon { - background-position: -260px -4px; -} -.jstree-default > .jstree-no-dots .jstree-node, -.jstree-default > .jstree-no-dots .jstree-leaf > .jstree-ocl { - background: transparent; -} -.jstree-default > .jstree-no-dots .jstree-open > .jstree-ocl { - background-position: -36px -4px; -} -.jstree-default > .jstree-no-dots .jstree-closed > .jstree-ocl { - background-position: -4px -4px; -} -.jstree-default .jstree-disabled { - background: transparent; -} -.jstree-default .jstree-disabled.jstree-hovered { - background: transparent; -} -.jstree-default .jstree-disabled.jstree-clicked { - background: #efefef; -} -.jstree-default .jstree-checkbox { - background-position: -164px -4px; -} -.jstree-default .jstree-checkbox:hover { - background-position: -164px -36px; -} -.jstree-default.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox, -.jstree-default .jstree-checked > .jstree-checkbox { - background-position: -228px -4px; -} -.jstree-default.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover, -.jstree-default .jstree-checked > .jstree-checkbox:hover { - background-position: -228px -36px; -} -.jstree-default .jstree-anchor > .jstree-undetermined { - background-position: -196px -4px; -} -.jstree-default .jstree-anchor > .jstree-undetermined:hover { - background-position: -196px -36px; -} -.jstree-default > .jstree-striped { - background-size: auto 48px; -} -.jstree-default.jstree-rtl .jstree-node { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg=="); - background-position: 100% 1px; - background-repeat: repeat-y; -} -.jstree-default.jstree-rtl .jstree-last { - background: transparent; -} -.jstree-default.jstree-rtl .jstree-open > .jstree-ocl { - background-position: -132px -36px; -} -.jstree-default.jstree-rtl .jstree-closed > .jstree-ocl { - background-position: -100px -36px; -} -.jstree-default.jstree-rtl .jstree-leaf > .jstree-ocl { - background-position: -68px -36px; -} -.jstree-default.jstree-rtl > .jstree-no-dots .jstree-node, -.jstree-default.jstree-rtl > .jstree-no-dots .jstree-leaf > .jstree-ocl { - background: transparent; -} -.jstree-default.jstree-rtl > .jstree-no-dots .jstree-open > .jstree-ocl { - background-position: -36px -36px; -} -.jstree-default.jstree-rtl > .jstree-no-dots .jstree-closed > .jstree-ocl { - background-position: -4px -36px; -} -.jstree-default .jstree-themeicon-custom { - background-color: transparent; - background-image: none; - background-position: 0 0; -} -.jstree-default > .jstree-container-ul .jstree-loading > .jstree-ocl { - background: url("throbber.gif") center center no-repeat; -} -.jstree-default .jstree-file { - background: url("32px.png") -100px -68px no-repeat; -} -.jstree-default .jstree-folder { - background: url("32px.png") -260px -4px no-repeat; -} -.jstree-default > .jstree-container-ul > .jstree-node { - margin-left: 0; - margin-right: 0; -} -#jstree-dnd.jstree-default { - line-height: 24px; - padding: 0 4px; -} -#jstree-dnd.jstree-default .jstree-ok, -#jstree-dnd.jstree-default .jstree-er { - background-image: url("32px.png"); - background-repeat: no-repeat; - background-color: transparent; -} -#jstree-dnd.jstree-default i { - background: transparent; - width: 24px; - height: 24px; - line-height: 24px; -} -#jstree-dnd.jstree-default .jstree-ok { - background-position: -4px -68px; -} -#jstree-dnd.jstree-default .jstree-er { - background-position: -36px -68px; -} -.jstree-default.jstree-rtl .jstree-node { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg=="); -} -.jstree-default.jstree-rtl .jstree-last { - background: transparent; -} -.jstree-default-small .jstree-node { - min-height: 18px; - line-height: 18px; - margin-left: 18px; - min-width: 18px; -} -.jstree-default-small .jstree-anchor { - line-height: 18px; - height: 18px; -} -.jstree-default-small .jstree-icon { - width: 18px; - height: 18px; - line-height: 18px; -} -.jstree-default-small .jstree-icon:empty { - width: 18px; - height: 18px; - line-height: 18px; -} -.jstree-default-small.jstree-rtl .jstree-node { - margin-right: 18px; -} -.jstree-default-small .jstree-wholerow { - height: 18px; -} -.jstree-default-small .jstree-node, -.jstree-default-small .jstree-icon { - background-image: url("32px.png"); -} -.jstree-default-small .jstree-node { - background-position: -295px -7px; - background-repeat: repeat-y; -} -.jstree-default-small .jstree-last { - background: transparent; -} -.jstree-default-small .jstree-open > .jstree-ocl { - background-position: -135px -7px; -} -.jstree-default-small .jstree-closed > .jstree-ocl { - background-position: -103px -7px; -} -.jstree-default-small .jstree-leaf > .jstree-ocl { - background-position: -71px -7px; -} -.jstree-default-small .jstree-themeicon { - background-position: -263px -7px; -} -.jstree-default-small > .jstree-no-dots .jstree-node, -.jstree-default-small > .jstree-no-dots .jstree-leaf > .jstree-ocl { - background: transparent; -} -.jstree-default-small > .jstree-no-dots .jstree-open > .jstree-ocl { - background-position: -39px -7px; -} -.jstree-default-small > .jstree-no-dots .jstree-closed > .jstree-ocl { - background-position: -7px -7px; -} -.jstree-default-small .jstree-disabled { - background: transparent; -} -.jstree-default-small .jstree-disabled.jstree-hovered { - background: transparent; -} -.jstree-default-small .jstree-disabled.jstree-clicked { - background: #efefef; -} -.jstree-default-small .jstree-checkbox { - background-position: -167px -7px; -} -.jstree-default-small .jstree-checkbox:hover { - background-position: -167px -39px; -} -.jstree-default-small.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox, -.jstree-default-small .jstree-checked > .jstree-checkbox { - background-position: -231px -7px; -} -.jstree-default-small.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover, -.jstree-default-small .jstree-checked > .jstree-checkbox:hover { - background-position: -231px -39px; -} -.jstree-default-small .jstree-anchor > .jstree-undetermined { - background-position: -199px -7px; -} -.jstree-default-small .jstree-anchor > .jstree-undetermined:hover { - background-position: -199px -39px; -} -.jstree-default-small > .jstree-striped { - background-size: auto 36px; -} -.jstree-default-small.jstree-rtl .jstree-node { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg=="); - background-position: 100% 1px; - background-repeat: repeat-y; -} -.jstree-default-small.jstree-rtl .jstree-last { - background: transparent; -} -.jstree-default-small.jstree-rtl .jstree-open > .jstree-ocl { - background-position: -135px -39px; -} -.jstree-default-small.jstree-rtl .jstree-closed > .jstree-ocl { - background-position: -103px -39px; -} -.jstree-default-small.jstree-rtl .jstree-leaf > .jstree-ocl { - background-position: -71px -39px; -} -.jstree-default-small.jstree-rtl > .jstree-no-dots .jstree-node, -.jstree-default-small.jstree-rtl > .jstree-no-dots .jstree-leaf > .jstree-ocl { - background: transparent; -} -.jstree-default-small.jstree-rtl > .jstree-no-dots .jstree-open > .jstree-ocl { - background-position: -39px -39px; -} -.jstree-default-small.jstree-rtl > .jstree-no-dots .jstree-closed > .jstree-ocl { - background-position: -7px -39px; -} -.jstree-default-small .jstree-themeicon-custom { - background-color: transparent; - background-image: none; - background-position: 0 0; -} -.jstree-default-small > .jstree-container-ul .jstree-loading > .jstree-ocl { - background: url("throbber.gif") center center no-repeat; -} -.jstree-default-small .jstree-file { - background: url("32px.png") -103px -71px no-repeat; -} -.jstree-default-small .jstree-folder { - background: url("32px.png") -263px -7px no-repeat; -} -.jstree-default-small > .jstree-container-ul > .jstree-node { - margin-left: 0; - margin-right: 0; -} -#jstree-dnd.jstree-default-small { - line-height: 18px; - padding: 0 4px; -} -#jstree-dnd.jstree-default-small .jstree-ok, -#jstree-dnd.jstree-default-small .jstree-er { - background-image: url("32px.png"); - background-repeat: no-repeat; - background-color: transparent; -} -#jstree-dnd.jstree-default-small i { - background: transparent; - width: 18px; - height: 18px; - line-height: 18px; -} -#jstree-dnd.jstree-default-small .jstree-ok { - background-position: -7px -71px; -} -#jstree-dnd.jstree-default-small .jstree-er { - background-position: -39px -71px; -} -.jstree-default-small.jstree-rtl .jstree-node { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg=="); -} -.jstree-default-small.jstree-rtl .jstree-last { - background: transparent; -} -.jstree-default-large .jstree-node { - min-height: 32px; - line-height: 32px; - margin-left: 32px; - min-width: 32px; -} -.jstree-default-large .jstree-anchor { - line-height: 32px; - height: 32px; -} -.jstree-default-large .jstree-icon { - width: 32px; - height: 32px; - line-height: 32px; -} -.jstree-default-large .jstree-icon:empty { - width: 32px; - height: 32px; - line-height: 32px; -} -.jstree-default-large.jstree-rtl .jstree-node { - margin-right: 32px; -} -.jstree-default-large .jstree-wholerow { - height: 32px; -} -.jstree-default-large .jstree-node, -.jstree-default-large .jstree-icon { - background-image: url("32px.png"); -} -.jstree-default-large .jstree-node { - background-position: -288px 0px; - background-repeat: repeat-y; -} -.jstree-default-large .jstree-last { - background: transparent; -} -.jstree-default-large .jstree-open > .jstree-ocl { - background-position: -128px 0px; -} -.jstree-default-large .jstree-closed > .jstree-ocl { - background-position: -96px 0px; -} -.jstree-default-large .jstree-leaf > .jstree-ocl { - background-position: -64px 0px; -} -.jstree-default-large .jstree-themeicon { - background-position: -256px 0px; -} -.jstree-default-large > .jstree-no-dots .jstree-node, -.jstree-default-large > .jstree-no-dots .jstree-leaf > .jstree-ocl { - background: transparent; -} -.jstree-default-large > .jstree-no-dots .jstree-open > .jstree-ocl { - background-position: -32px 0px; -} -.jstree-default-large > .jstree-no-dots .jstree-closed > .jstree-ocl { - background-position: 0px 0px; -} -.jstree-default-large .jstree-disabled { - background: transparent; -} -.jstree-default-large .jstree-disabled.jstree-hovered { - background: transparent; -} -.jstree-default-large .jstree-disabled.jstree-clicked { - background: #efefef; -} -.jstree-default-large .jstree-checkbox { - background-position: -160px 0px; -} -.jstree-default-large .jstree-checkbox:hover { - background-position: -160px -32px; -} -.jstree-default-large.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox, -.jstree-default-large .jstree-checked > .jstree-checkbox { - background-position: -224px 0px; -} -.jstree-default-large.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover, -.jstree-default-large .jstree-checked > .jstree-checkbox:hover { - background-position: -224px -32px; -} -.jstree-default-large .jstree-anchor > .jstree-undetermined { - background-position: -192px 0px; -} -.jstree-default-large .jstree-anchor > .jstree-undetermined:hover { - background-position: -192px -32px; -} -.jstree-default-large > .jstree-striped { - background-size: auto 64px; -} -.jstree-default-large.jstree-rtl .jstree-node { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg=="); - background-position: 100% 1px; - background-repeat: repeat-y; -} -.jstree-default-large.jstree-rtl .jstree-last { - background: transparent; -} -.jstree-default-large.jstree-rtl .jstree-open > .jstree-ocl { - background-position: -128px -32px; -} -.jstree-default-large.jstree-rtl .jstree-closed > .jstree-ocl { - background-position: -96px -32px; -} -.jstree-default-large.jstree-rtl .jstree-leaf > .jstree-ocl { - background-position: -64px -32px; -} -.jstree-default-large.jstree-rtl > .jstree-no-dots .jstree-node, -.jstree-default-large.jstree-rtl > .jstree-no-dots .jstree-leaf > .jstree-ocl { - background: transparent; -} -.jstree-default-large.jstree-rtl > .jstree-no-dots .jstree-open > .jstree-ocl { - background-position: -32px -32px; -} -.jstree-default-large.jstree-rtl > .jstree-no-dots .jstree-closed > .jstree-ocl { - background-position: 0px -32px; -} -.jstree-default-large .jstree-themeicon-custom { - background-color: transparent; - background-image: none; - background-position: 0 0; -} -.jstree-default-large > .jstree-container-ul .jstree-loading > .jstree-ocl { - background: url("throbber.gif") center center no-repeat; -} -.jstree-default-large .jstree-file { - background: url("32px.png") -96px -64px no-repeat; -} -.jstree-default-large .jstree-folder { - background: url("32px.png") -256px 0px no-repeat; -} -.jstree-default-large > .jstree-container-ul > .jstree-node { - margin-left: 0; - margin-right: 0; -} -#jstree-dnd.jstree-default-large { - line-height: 32px; - padding: 0 4px; -} -#jstree-dnd.jstree-default-large .jstree-ok, -#jstree-dnd.jstree-default-large .jstree-er { - background-image: url("32px.png"); - background-repeat: no-repeat; - background-color: transparent; -} -#jstree-dnd.jstree-default-large i { - background: transparent; - width: 32px; - height: 32px; - line-height: 32px; -} -#jstree-dnd.jstree-default-large .jstree-ok { - background-position: 0px -64px; -} -#jstree-dnd.jstree-default-large .jstree-er { - background-position: -32px -64px; -} -.jstree-default-large.jstree-rtl .jstree-node { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg=="); -} -.jstree-default-large.jstree-rtl .jstree-last { - background: transparent; -} -@media (max-width: 768px) { - #jstree-dnd.jstree-dnd-responsive { - line-height: 40px; - font-weight: bold; - font-size: 1.1em; - text-shadow: 1px 1px white; - } - #jstree-dnd.jstree-dnd-responsive > i { - background: transparent; - width: 40px; - height: 40px; - } - #jstree-dnd.jstree-dnd-responsive > .jstree-ok { - background-image: url("40px.png"); - background-position: 0 -200px; - background-size: 120px 240px; - } - #jstree-dnd.jstree-dnd-responsive > .jstree-er { - background-image: url("40px.png"); - background-position: -40px -200px; - background-size: 120px 240px; - } - #jstree-marker.jstree-dnd-responsive { - border-left-width: 10px; - border-top-width: 10px; - border-bottom-width: 10px; - margin-top: -10px; - } -} -@media (max-width: 768px) { - .jstree-default-responsive { - /* - .jstree-open > .jstree-ocl, - .jstree-closed > .jstree-ocl { border-radius:20px; background-color:white; } - */ - } - .jstree-default-responsive .jstree-icon { - background-image: url("40px.png"); - } - .jstree-default-responsive .jstree-node, - .jstree-default-responsive .jstree-leaf > .jstree-ocl { - background: transparent; - } - .jstree-default-responsive .jstree-node { - min-height: 40px; - line-height: 40px; - margin-left: 40px; - min-width: 40px; - white-space: nowrap; - } - .jstree-default-responsive .jstree-anchor { - line-height: 40px; - height: 40px; - } - .jstree-default-responsive .jstree-icon, - .jstree-default-responsive .jstree-icon:empty { - width: 40px; - height: 40px; - line-height: 40px; - } - .jstree-default-responsive > .jstree-container-ul > .jstree-node { - margin-left: 0; - } - .jstree-default-responsive.jstree-rtl .jstree-node { - margin-left: 0; - margin-right: 40px; - } - .jstree-default-responsive.jstree-rtl .jstree-container-ul > .jstree-node { - margin-right: 0; - } - .jstree-default-responsive .jstree-ocl, - .jstree-default-responsive .jstree-themeicon, - .jstree-default-responsive .jstree-checkbox { - background-size: 120px 240px; - } - .jstree-default-responsive .jstree-leaf > .jstree-ocl { - background: transparent; - } - .jstree-default-responsive .jstree-open > .jstree-ocl { - background-position: 0 0px !important; - } - .jstree-default-responsive .jstree-closed > .jstree-ocl { - background-position: 0 -40px !important; - } - .jstree-default-responsive.jstree-rtl .jstree-closed > .jstree-ocl { - background-position: -40px 0px !important; - } - .jstree-default-responsive .jstree-themeicon { - background-position: -40px -40px; - } - .jstree-default-responsive .jstree-checkbox, - .jstree-default-responsive .jstree-checkbox:hover { - background-position: -40px -80px; - } - .jstree-default-responsive.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox, - .jstree-default-responsive.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover, - .jstree-default-responsive .jstree-checked > .jstree-checkbox, - .jstree-default-responsive .jstree-checked > .jstree-checkbox:hover { - background-position: 0 -80px; - } - .jstree-default-responsive .jstree-anchor > .jstree-undetermined, - .jstree-default-responsive .jstree-anchor > .jstree-undetermined:hover { - background-position: 0 -120px; - } - .jstree-default-responsive .jstree-anchor { - font-weight: bold; - font-size: 1.1em; - text-shadow: 1px 1px white; - } - .jstree-default-responsive > .jstree-striped { - background: transparent; - } - .jstree-default-responsive .jstree-wholerow { - border-top: 1px solid rgba(255, 255, 255, 0.7); - border-bottom: 1px solid rgba(64, 64, 64, 0.2); - background: #ebebeb; - height: 40px; - } - .jstree-default-responsive .jstree-wholerow-hovered { - background: #e7f4f9; - } - .jstree-default-responsive .jstree-wholerow-clicked { - background: #beebff; - } - .jstree-default-responsive .jstree-children .jstree-last > .jstree-wholerow { - box-shadow: inset 0 -6px 3px -5px #666666; - } - .jstree-default-responsive .jstree-children .jstree-open > .jstree-wholerow { - box-shadow: inset 0 6px 3px -5px #666666; - border-top: 0; - } - .jstree-default-responsive .jstree-children .jstree-open + .jstree-open { - box-shadow: none; - } - .jstree-default-responsive .jstree-node, - .jstree-default-responsive .jstree-icon, - .jstree-default-responsive .jstree-node > .jstree-ocl, - .jstree-default-responsive .jstree-themeicon, - .jstree-default-responsive .jstree-checkbox { - background-image: url("40px.png"); - background-size: 120px 240px; - } - .jstree-default-responsive .jstree-node { - background-position: -80px 0; - background-repeat: repeat-y; - } - .jstree-default-responsive .jstree-last { - background: transparent; - } - .jstree-default-responsive .jstree-leaf > .jstree-ocl { - background-position: -40px -120px; - } - .jstree-default-responsive .jstree-last > .jstree-ocl { - background-position: -40px -160px; - } - .jstree-default-responsive .jstree-themeicon-custom { - background-color: transparent; - background-image: none; - background-position: 0 0; - } - .jstree-default-responsive .jstree-file { - background: url("40px.png") 0 -160px no-repeat; - background-size: 120px 240px; - } - .jstree-default-responsive .jstree-folder { - background: url("40px.png") -40px -40px no-repeat; - background-size: 120px 240px; - } - .jstree-default-responsive > .jstree-container-ul > .jstree-node { - margin-left: 0; - margin-right: 0; - } -} diff --git a/assets/css/plugins/jsTree/style.min.css b/assets/css/plugins/jsTree/style.min.css deleted file mode 100644 index 4440528e..00000000 --- a/assets/css/plugins/jsTree/style.min.css +++ /dev/null @@ -1 +0,0 @@ -.jstree-node,.jstree-children,.jstree-container-ul{display:block;margin:0;padding:0;list-style-type:none;list-style-image:none}.jstree-node{white-space:nowrap}.jstree-anchor{display:inline-block;color:#000;white-space:nowrap;padding:0 4px 0 1px;margin:0;vertical-align:top}.jstree-anchor:focus{outline:0}.jstree-anchor,.jstree-anchor:link,.jstree-anchor:visited,.jstree-anchor:hover,.jstree-anchor:active{text-decoration:none;color:inherit}.jstree-icon{display:inline-block;text-decoration:none;margin:0;padding:0;vertical-align:top;text-align:center}.jstree-icon:empty{display:inline-block;text-decoration:none;margin:0;padding:0;vertical-align:top;text-align:center}.jstree-ocl{cursor:pointer}.jstree-leaf>.jstree-ocl{cursor:default}.jstree .jstree-open>.jstree-children{display:block}.jstree .jstree-closed>.jstree-children,.jstree .jstree-leaf>.jstree-children{display:none}.jstree-anchor>.jstree-themeicon{margin-right:2px}.jstree-no-icons .jstree-themeicon,.jstree-anchor>.jstree-themeicon-hidden{display:none}.jstree-rtl .jstree-anchor{padding:0 1px 0 4px}.jstree-rtl .jstree-anchor>.jstree-themeicon{margin-left:2px;margin-right:0}.jstree-rtl .jstree-node{margin-left:0}.jstree-rtl .jstree-container-ul>.jstree-node{margin-right:0}.jstree-wholerow-ul{position:relative;display:inline-block;min-width:100%}.jstree-wholerow-ul .jstree-leaf>.jstree-ocl{cursor:pointer}.jstree-wholerow-ul .jstree-anchor,.jstree-wholerow-ul .jstree-icon{position:relative}.jstree-wholerow-ul .jstree-wholerow{width:100%;cursor:pointer;position:absolute;left:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vakata-context{display:none}.vakata-context,.vakata-context ul{margin:0;padding:2px;position:absolute;background:#f5f5f5;border:1px solid #979797;-moz-box-shadow:5px 5px 4px -4px #666;-webkit-box-shadow:2px 2px 2px #999;box-shadow:2px 2px 2px #999}.vakata-context ul{list-style:none;left:100%;margin-top:-2.7em;margin-left:-4px}.vakata-context .vakata-context-right ul{left:auto;right:100%;margin-left:auto;margin-right:-4px}.vakata-context li{list-style:none;display:inline}.vakata-context li>a{display:block;padding:0 2em;text-decoration:none;width:auto;color:#000;white-space:nowrap;line-height:2.4em;-moz-text-shadow:1px 1px 0 #fff;-webkit-text-shadow:1px 1px 0 #fff;text-shadow:1px 1px 0 #fff;-moz-border-radius:1px;-webkit-border-radius:1px;border-radius:1px}.vakata-context li>a:hover{position:relative;background-color:#e8eff7;-moz-box-shadow:0 0 2px #0a6aa1;-webkit-box-shadow:0 0 2px #0a6aa1;box-shadow:0 0 2px #0a6aa1}.vakata-context li>a.vakata-context-parent{background-image:url(data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAIORI4JlrqN1oMSnmmZDQUAOw==);background-position:right center;background-repeat:no-repeat}.vakata-context li>a:focus{outline:0}.vakata-context .vakata-context-hover>a{position:relative;background-color:#e8eff7;-moz-box-shadow:0 0 2px #0a6aa1;-webkit-box-shadow:0 0 2px #0a6aa1;box-shadow:0 0 2px #0a6aa1}.vakata-context .vakata-context-separator>a,.vakata-context .vakata-context-separator>a:hover{background:#fff;border:0;border-top:1px solid #e2e3e3;height:1px;min-height:1px;max-height:1px;padding:0;margin:0 0 0 2.4em;border-left:1px solid #e0e0e0;-moz-text-shadow:0 0 0 transparent;-webkit-text-shadow:0 0 0 transparent;text-shadow:0 0 0 transparent;-moz-box-shadow:0 0 0 transparent;-webkit-box-shadow:0 0 0 transparent;box-shadow:0 0 0 transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.vakata-context .vakata-contextmenu-disabled a,.vakata-context .vakata-contextmenu-disabled a:hover{color:silver;background-color:transparent;border:0;box-shadow:0 0 0}.vakata-context li>a>i{text-decoration:none;display:inline-block;width:2.4em;height:2.4em;background:0 0;margin:0 0 0 -2em;vertical-align:top;text-align:center;line-height:2.4em}.vakata-context li>a>i:empty{width:2.4em;line-height:2.4em}.vakata-context li>a .vakata-contextmenu-sep{display:inline-block;width:1px;height:2.4em;background:#fff;margin:0 .5em 0 0;border-left:1px solid #e2e3e3}.vakata-context .vakata-contextmenu-shortcut{font-size:.8em;color:silver;opacity:.5;display:none}.vakata-context-rtl ul{left:auto;right:100%;margin-left:auto;margin-right:-4px}.vakata-context-rtl li>a.vakata-context-parent{background-image:url(data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAINjI+AC7rWHIsPtmoxLAA7);background-position:left center;background-repeat:no-repeat}.vakata-context-rtl .vakata-context-separator>a{margin:0 2.4em 0 0;border-left:0;border-right:1px solid #e2e3e3}.vakata-context-rtl .vakata-context-left ul{right:auto;left:100%;margin-left:-4px;margin-right:auto}.vakata-context-rtl li>a>i{margin:0 -2em 0 0}.vakata-context-rtl li>a .vakata-contextmenu-sep{margin:0 0 0 .5em;border-left-color:#fff;background:#e2e3e3}#jstree-marker{position:absolute;top:0;left:0;margin:-5px 0 0 0;padding:0;border-right:0;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid;width:0;height:0;font-size:0;line-height:0}#jstree-dnd{line-height:16px;margin:0;padding:4px}#jstree-dnd .jstree-icon,#jstree-dnd .jstree-copy{display:inline-block;text-decoration:none;margin:0 2px 0 0;padding:0;width:16px;height:16px}#jstree-dnd .jstree-ok{background:green}#jstree-dnd .jstree-er{background:red}#jstree-dnd .jstree-copy{margin:0 2px}.jstree-default .jstree-node,.jstree-default .jstree-icon{background-repeat:no-repeat;background-color:transparent}.jstree-default .jstree-anchor,.jstree-default .jstree-wholerow{transition:background-color .15s,box-shadow .15s}.jstree-default .jstree-hovered{background:#e7f4f9;border-radius:2px;box-shadow:inset 0 0 1px #ccc}.jstree-default .jstree-clicked{background:#beebff;border-radius:2px;box-shadow:inset 0 0 1px #999}.jstree-default .jstree-no-icons .jstree-anchor>.jstree-themeicon{display:none}.jstree-default .jstree-disabled{background:0 0;color:#666}.jstree-default .jstree-disabled.jstree-hovered{background:0 0;box-shadow:none}.jstree-default .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default .jstree-disabled>.jstree-icon{opacity:.8;filter:url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'jstree-grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default .jstree-search{font-style:italic;color:#8b0000;font-weight:700}.jstree-default .jstree-no-checkboxes .jstree-checkbox{display:none!important}.jstree-default.jstree-checkbox-no-clicked .jstree-clicked{background:0 0;box-shadow:none}.jstree-default.jstree-checkbox-no-clicked .jstree-clicked.jstree-hovered{background:#e7f4f9}.jstree-default.jstree-checkbox-no-clicked>.jstree-wholerow-ul .jstree-wholerow-clicked{background:0 0}.jstree-default.jstree-checkbox-no-clicked>.jstree-wholerow-ul .jstree-wholerow-clicked.jstree-wholerow-hovered{background:#e7f4f9}.jstree-default>.jstree-striped{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAMAAAB/qqA+AAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMNAMM9s3UAAAAXSURBVHjajcEBAQAAAIKg/H/aCQZ70AUBjAATb6YPDgAAAABJRU5ErkJggg==) left top repeat}.jstree-default>.jstree-wholerow-ul .jstree-hovered,.jstree-default>.jstree-wholerow-ul .jstree-clicked{background:0 0;box-shadow:none;border-radius:0}.jstree-default .jstree-wholerow{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.jstree-default .jstree-wholerow-hovered{background:#e7f4f9}.jstree-default .jstree-wholerow-clicked{background:#beebff;background:-moz-linear-gradient(top,#beebff 0,#a8e4ff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#beebff),color-stop(100%,#a8e4ff));background:-webkit-linear-gradient(top,#beebff 0,#a8e4ff 100%);background:-o-linear-gradient(top,#beebff 0,#a8e4ff 100%);background:-ms-linear-gradient(top,#beebff 0,#a8e4ff 100%);background:linear-gradient(to bottom,#beebff 0,#a8e4ff 100%)}.jstree-default .jstree-node{min-height:24px;line-height:24px;margin-left:24px;min-width:24px}.jstree-default .jstree-anchor{line-height:24px;height:24px}.jstree-default .jstree-icon{width:24px;height:24px;line-height:24px}.jstree-default .jstree-icon:empty{width:24px;height:24px;line-height:24px}.jstree-default.jstree-rtl .jstree-node{margin-right:24px}.jstree-default .jstree-wholerow{height:24px}.jstree-default .jstree-node,.jstree-default .jstree-icon{background-image:url(32px.png)}.jstree-default .jstree-node{background-position:-292px -4px;background-repeat:repeat-y}.jstree-default .jstree-last{background:0 0}.jstree-default .jstree-open>.jstree-ocl{background-position:-132px -4px}.jstree-default .jstree-closed>.jstree-ocl{background-position:-100px -4px}.jstree-default .jstree-leaf>.jstree-ocl{background-position:-68px -4px}.jstree-default .jstree-themeicon{background-position:-260px -4px}.jstree-default>.jstree-no-dots .jstree-node,.jstree-default>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-36px -4px}.jstree-default>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-4px -4px}.jstree-default .jstree-disabled{background:0 0}.jstree-default .jstree-disabled.jstree-hovered{background:0 0}.jstree-default .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default .jstree-checkbox{background-position:-164px -4px}.jstree-default .jstree-checkbox:hover{background-position:-164px -36px}.jstree-default.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default .jstree-checked>.jstree-checkbox{background-position:-228px -4px}.jstree-default.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default .jstree-checked>.jstree-checkbox:hover{background-position:-228px -36px}.jstree-default .jstree-anchor>.jstree-undetermined{background-position:-196px -4px}.jstree-default .jstree-anchor>.jstree-undetermined:hover{background-position:-196px -36px}.jstree-default>.jstree-striped{background-size:auto 48px}.jstree-default.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==);background-position:100% 1px;background-repeat:repeat-y}.jstree-default.jstree-rtl .jstree-last{background:0 0}.jstree-default.jstree-rtl .jstree-open>.jstree-ocl{background-position:-132px -36px}.jstree-default.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-100px -36px}.jstree-default.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-68px -36px}.jstree-default.jstree-rtl>.jstree-no-dots .jstree-node,.jstree-default.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-36px -36px}.jstree-default.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-4px -36px}.jstree-default .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(throbber.gif) center center no-repeat}.jstree-default .jstree-file{background:url(32px.png) -100px -68px no-repeat}.jstree-default .jstree-folder{background:url(32px.png) -260px -4px no-repeat}.jstree-default>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default{line-height:24px;padding:0 4px}#jstree-dnd.jstree-default .jstree-ok,#jstree-dnd.jstree-default .jstree-er{background-image:url(32px.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default i{background:0 0;width:24px;height:24px;line-height:24px}#jstree-dnd.jstree-default .jstree-ok{background-position:-4px -68px}#jstree-dnd.jstree-default .jstree-er{background-position:-36px -68px}.jstree-default.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==)}.jstree-default.jstree-rtl .jstree-last{background:0 0}.jstree-default-small .jstree-node{min-height:18px;line-height:18px;margin-left:18px;min-width:18px}.jstree-default-small .jstree-anchor{line-height:18px;height:18px}.jstree-default-small .jstree-icon{width:18px;height:18px;line-height:18px}.jstree-default-small .jstree-icon:empty{width:18px;height:18px;line-height:18px}.jstree-default-small.jstree-rtl .jstree-node{margin-right:18px}.jstree-default-small .jstree-wholerow{height:18px}.jstree-default-small .jstree-node,.jstree-default-small .jstree-icon{background-image:url(32px.png)}.jstree-default-small .jstree-node{background-position:-295px -7px;background-repeat:repeat-y}.jstree-default-small .jstree-last{background:0 0}.jstree-default-small .jstree-open>.jstree-ocl{background-position:-135px -7px}.jstree-default-small .jstree-closed>.jstree-ocl{background-position:-103px -7px}.jstree-default-small .jstree-leaf>.jstree-ocl{background-position:-71px -7px}.jstree-default-small .jstree-themeicon{background-position:-263px -7px}.jstree-default-small>.jstree-no-dots .jstree-node,.jstree-default-small>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-small>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-39px -7px}.jstree-default-small>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-7px -7px}.jstree-default-small .jstree-disabled{background:0 0}.jstree-default-small .jstree-disabled.jstree-hovered{background:0 0}.jstree-default-small .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default-small .jstree-checkbox{background-position:-167px -7px}.jstree-default-small .jstree-checkbox:hover{background-position:-167px -39px}.jstree-default-small.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-small .jstree-checked>.jstree-checkbox{background-position:-231px -7px}.jstree-default-small.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-small .jstree-checked>.jstree-checkbox:hover{background-position:-231px -39px}.jstree-default-small .jstree-anchor>.jstree-undetermined{background-position:-199px -7px}.jstree-default-small .jstree-anchor>.jstree-undetermined:hover{background-position:-199px -39px}.jstree-default-small>.jstree-striped{background-size:auto 36px}.jstree-default-small.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==);background-position:100% 1px;background-repeat:repeat-y}.jstree-default-small.jstree-rtl .jstree-last{background:0 0}.jstree-default-small.jstree-rtl .jstree-open>.jstree-ocl{background-position:-135px -39px}.jstree-default-small.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-103px -39px}.jstree-default-small.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-71px -39px}.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-node,.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-39px -39px}.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-7px -39px}.jstree-default-small .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-small>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(throbber.gif) center center no-repeat}.jstree-default-small .jstree-file{background:url(32px.png) -103px -71px no-repeat}.jstree-default-small .jstree-folder{background:url(32px.png) -263px -7px no-repeat}.jstree-default-small>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default-small{line-height:18px;padding:0 4px}#jstree-dnd.jstree-default-small .jstree-ok,#jstree-dnd.jstree-default-small .jstree-er{background-image:url(32px.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default-small i{background:0 0;width:18px;height:18px;line-height:18px}#jstree-dnd.jstree-default-small .jstree-ok{background-position:-7px -71px}#jstree-dnd.jstree-default-small .jstree-er{background-position:-39px -71px}.jstree-default-small.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg==)}.jstree-default-small.jstree-rtl .jstree-last{background:0 0}.jstree-default-large .jstree-node{min-height:32px;line-height:32px;margin-left:32px;min-width:32px}.jstree-default-large .jstree-anchor{line-height:32px;height:32px}.jstree-default-large .jstree-icon{width:32px;height:32px;line-height:32px}.jstree-default-large .jstree-icon:empty{width:32px;height:32px;line-height:32px}.jstree-default-large.jstree-rtl .jstree-node{margin-right:32px}.jstree-default-large .jstree-wholerow{height:32px}.jstree-default-large .jstree-node,.jstree-default-large .jstree-icon{background-image:url(32px.png)}.jstree-default-large .jstree-node{background-position:-288px 0;background-repeat:repeat-y}.jstree-default-large .jstree-last{background:0 0}.jstree-default-large .jstree-open>.jstree-ocl{background-position:-128px 0}.jstree-default-large .jstree-closed>.jstree-ocl{background-position:-96px 0}.jstree-default-large .jstree-leaf>.jstree-ocl{background-position:-64px 0}.jstree-default-large .jstree-themeicon{background-position:-256px 0}.jstree-default-large>.jstree-no-dots .jstree-node,.jstree-default-large>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-large>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-32px 0}.jstree-default-large>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:0 0}.jstree-default-large .jstree-disabled{background:0 0}.jstree-default-large .jstree-disabled.jstree-hovered{background:0 0}.jstree-default-large .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default-large .jstree-checkbox{background-position:-160px 0}.jstree-default-large .jstree-checkbox:hover{background-position:-160px -32px}.jstree-default-large.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-large .jstree-checked>.jstree-checkbox{background-position:-224px 0}.jstree-default-large.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-large .jstree-checked>.jstree-checkbox:hover{background-position:-224px -32px}.jstree-default-large .jstree-anchor>.jstree-undetermined{background-position:-192px 0}.jstree-default-large .jstree-anchor>.jstree-undetermined:hover{background-position:-192px -32px}.jstree-default-large>.jstree-striped{background-size:auto 64px}.jstree-default-large.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==);background-position:100% 1px;background-repeat:repeat-y}.jstree-default-large.jstree-rtl .jstree-last{background:0 0}.jstree-default-large.jstree-rtl .jstree-open>.jstree-ocl{background-position:-128px -32px}.jstree-default-large.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-96px -32px}.jstree-default-large.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-64px -32px}.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-node,.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-32px -32px}.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:0 -32px}.jstree-default-large .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-large>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(throbber.gif) center center no-repeat}.jstree-default-large .jstree-file{background:url(32px.png) -96px -64px no-repeat}.jstree-default-large .jstree-folder{background:url(32px.png) -256px 0 no-repeat}.jstree-default-large>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default-large{line-height:32px;padding:0 4px}#jstree-dnd.jstree-default-large .jstree-ok,#jstree-dnd.jstree-default-large .jstree-er{background-image:url(32px.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default-large i{background:0 0;width:32px;height:32px;line-height:32px}#jstree-dnd.jstree-default-large .jstree-ok{background-position:0 -64px}#jstree-dnd.jstree-default-large .jstree-er{background-position:-32px -64px}.jstree-default-large.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg==)}.jstree-default-large.jstree-rtl .jstree-last{background:0 0}@media (max-width:768px){#jstree-dnd.jstree-dnd-responsive{line-height:40px;font-weight:700;font-size:1.1em;text-shadow:1px 1px #fff}#jstree-dnd.jstree-dnd-responsive>i{background:0 0;width:40px;height:40px}#jstree-dnd.jstree-dnd-responsive>.jstree-ok{background-image:url(40px.png);background-position:0 -200px;background-size:120px 240px}#jstree-dnd.jstree-dnd-responsive>.jstree-er{background-image:url(40px.png);background-position:-40px -200px;background-size:120px 240px}#jstree-marker.jstree-dnd-responsive{border-left-width:10px;border-top-width:10px;border-bottom-width:10px;margin-top:-10px}}@media (max-width:768px){.jstree-default-responsive .jstree-icon{background-image:url(40px.png)}.jstree-default-responsive .jstree-node,.jstree-default-responsive .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-responsive .jstree-node{min-height:40px;line-height:40px;margin-left:40px;min-width:40px;white-space:nowrap}.jstree-default-responsive .jstree-anchor{line-height:40px;height:40px}.jstree-default-responsive .jstree-icon,.jstree-default-responsive .jstree-icon:empty{width:40px;height:40px;line-height:40px}.jstree-default-responsive>.jstree-container-ul>.jstree-node{margin-left:0}.jstree-default-responsive.jstree-rtl .jstree-node{margin-left:0;margin-right:40px}.jstree-default-responsive.jstree-rtl .jstree-container-ul>.jstree-node{margin-right:0}.jstree-default-responsive .jstree-ocl,.jstree-default-responsive .jstree-themeicon,.jstree-default-responsive .jstree-checkbox{background-size:120px 240px}.jstree-default-responsive .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-responsive .jstree-open>.jstree-ocl{background-position:0 0!important}.jstree-default-responsive .jstree-closed>.jstree-ocl{background-position:0 -40px!important}.jstree-default-responsive.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-40px 0!important}.jstree-default-responsive .jstree-themeicon{background-position:-40px -40px}.jstree-default-responsive .jstree-checkbox,.jstree-default-responsive .jstree-checkbox:hover{background-position:-40px -80px}.jstree-default-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-responsive .jstree-checked>.jstree-checkbox,.jstree-default-responsive .jstree-checked>.jstree-checkbox:hover{background-position:0 -80px}.jstree-default-responsive .jstree-anchor>.jstree-undetermined,.jstree-default-responsive .jstree-anchor>.jstree-undetermined:hover{background-position:0 -120px}.jstree-default-responsive .jstree-anchor{font-weight:700;font-size:1.1em;text-shadow:1px 1px #fff}.jstree-default-responsive>.jstree-striped{background:0 0}.jstree-default-responsive .jstree-wholerow{border-top:1px solid rgba(255,255,255,.7);border-bottom:1px solid rgba(64,64,64,.2);background:#ebebeb;height:40px}.jstree-default-responsive .jstree-wholerow-hovered{background:#e7f4f9}.jstree-default-responsive .jstree-wholerow-clicked{background:#beebff}.jstree-default-responsive .jstree-children .jstree-last>.jstree-wholerow{box-shadow:inset 0 -6px 3px -5px #666}.jstree-default-responsive .jstree-children .jstree-open>.jstree-wholerow{box-shadow:inset 0 6px 3px -5px #666;border-top:0}.jstree-default-responsive .jstree-children .jstree-open+.jstree-open{box-shadow:none}.jstree-default-responsive .jstree-node,.jstree-default-responsive .jstree-icon,.jstree-default-responsive .jstree-node>.jstree-ocl,.jstree-default-responsive .jstree-themeicon,.jstree-default-responsive .jstree-checkbox{background-image:url(40px.png);background-size:120px 240px}.jstree-default-responsive .jstree-node{background-position:-80px 0;background-repeat:repeat-y}.jstree-default-responsive .jstree-last{background:0 0}.jstree-default-responsive .jstree-leaf>.jstree-ocl{background-position:-40px -120px}.jstree-default-responsive .jstree-last>.jstree-ocl{background-position:-40px -160px}.jstree-default-responsive .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-responsive .jstree-file{background:url(40px.png) 0 -160px no-repeat;background-size:120px 240px}.jstree-default-responsive .jstree-folder{background:url(40px.png) -40px -40px no-repeat;background-size:120px 240px}.jstree-default-responsive>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}} \ No newline at end of file diff --git a/assets/css/plugins/jsTree/throbber.gif b/assets/css/plugins/jsTree/throbber.gif deleted file mode 100644 index 1b5b2fde..00000000 Binary files a/assets/css/plugins/jsTree/throbber.gif and /dev/null differ diff --git a/assets/css/plugins/morris/morris-0.4.3.min.css b/assets/css/plugins/morris/morris-0.4.3.min.css deleted file mode 100644 index 99a71344..00000000 --- a/assets/css/plugins/morris/morris-0.4.3.min.css +++ /dev/null @@ -1,2 +0,0 @@ -.morris-hover{position:absolute;z-index:1000;}.morris-hover.morris-default-style{border-radius:10px;padding:6px;color:#666;background:rgba(255, 255, 255, 0.8);border:solid 2px rgba(230, 230, 230, 0.8);font-family:sans-serif;font-size:12px;text-align:center;}.morris-hover.morris-default-style .morris-hover-row-label{font-weight:bold;margin:0.25em 0;} -.morris-hover.morris-default-style .morris-hover-point{white-space:nowrap;margin:0.1em 0;} \ No newline at end of file diff --git a/assets/css/plugins/nouslider/jquery.nouislider.css b/assets/css/plugins/nouslider/jquery.nouislider.css deleted file mode 100644 index 8bcf94cf..00000000 --- a/assets/css/plugins/nouslider/jquery.nouislider.css +++ /dev/null @@ -1,165 +0,0 @@ - -/* Functional styling; - * These styles are required for noUiSlider to function. - * You don't need to change these rules to apply your design. - */ -.noUi-target, -.noUi-target * { --webkit-touch-callout: none; --webkit-user-select: none; --ms-touch-action: none; --ms-user-select: none; --moz-user-select: none; --moz-box-sizing: border-box; - box-sizing: border-box; -} -.noUi-base { - width: 100%; - height: 100%; - position: relative; -} -.noUi-origin { - position: absolute; - right: 0; - top: 0; - left: 0; - bottom: 0; -} -.noUi-handle { - position: relative; - z-index: 1; -} -.noUi-stacking .noUi-handle { -/* This class is applied to the lower origin when - its values is > 50%. */ - z-index: 10; -} -.noUi-stacking + .noUi-origin { -/* Fix stacking order in IE7, which incorrectly - creates a new context for the origins. */ - *z-index: -1; -} -.noUi-state-tap .noUi-origin { --webkit-transition: left 0.3s, top 0.3s; - transition: left 0.3s, top 0.3s; -} -.noUi-state-drag * { - cursor: inherit !important; -} - -/* Slider size and handle placement; - */ -.noUi-horizontal { - height: 18px; -} -.noUi-horizontal .noUi-handle { - width: 34px; - height: 28px; - left: -17px; - top: -6px; -} -.noUi-horizontal.noUi-extended { - padding: 0 15px; -} -.noUi-horizontal.noUi-extended .noUi-origin { - right: -15px; -} -.noUi-vertical { - width: 18px; -} -.noUi-vertical .noUi-handle { - width: 28px; - height: 34px; - left: -6px; - top: -17px; -} -.noUi-vertical.noUi-extended { - padding: 15px 0; -} -.noUi-vertical.noUi-extended .noUi-origin { - bottom: -15px; -} - -/* Styling; - */ -.noUi-background { - background: #FAFAFA; - box-shadow: inset 0 1px 1px #f0f0f0; -} -.noUi-connect { - background: #3FB8AF; - box-shadow: inset 0 0 3px rgba(51,51,51,0.45); --webkit-transition: background 450ms; - transition: background 450ms; -} -.noUi-origin { - border-radius: 2px; -} -.noUi-target { - border-radius: 4px; - border: 1px solid #D3D3D3; - box-shadow: inset 0 1px 1px #F0F0F0, 0 3px 6px -5px #BBB; -} -.noUi-target.noUi-connect { - box-shadow: inset 0 0 3px rgba(51,51,51,0.45), 0 3px 6px -5px #BBB; -} - -/* Handles and cursors; - */ -.noUi-dragable { - cursor: w-resize; -} -.noUi-vertical .noUi-dragable { - cursor: n-resize; -} -.noUi-handle { - border: 1px solid #D9D9D9; - border-radius: 3px; - background: #FFF; - cursor: default; - box-shadow: inset 0 0 1px #FFF, - inset 0 1px 7px #EBEBEB, - 0 3px 6px -3px #BBB; -} -.noUi-active { - box-shadow: inset 0 0 1px #FFF, - inset 0 1px 7px #DDD, - 0 3px 6px -3px #BBB; -} - -/* Handle stripes; - */ -.noUi-handle:before, -.noUi-handle:after { - content: ""; - display: block; - position: absolute; - height: 14px; - width: 1px; - background: #E8E7E6; - left: 14px; - top: 6px; -} -.noUi-handle:after { - left: 17px; -} -.noUi-vertical .noUi-handle:before, -.noUi-vertical .noUi-handle:after { - width: 14px; - height: 1px; - left: 6px; - top: 14px; -} -.noUi-vertical .noUi-handle:after { - top: 17px; -} - -/* Disabled state; - */ -[disabled].noUi-connect, -[disabled] .noUi-connect { - background: #B8B8B8; -} -[disabled] .noUi-handle { - cursor: not-allowed; -} diff --git a/assets/css/plugins/social-buttons/social-buttons.css b/assets/css/plugins/social-buttons/social-buttons.css deleted file mode 100644 index 41d6abd7..00000000 --- a/assets/css/plugins/social-buttons/social-buttons.css +++ /dev/null @@ -1,68 +0,0 @@ -@import url(//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.min.css); -/* - * Social Buttons for Bootstrap - * - * Copyright 2013 Panayiotis Lipiridis - * Licensed under the MIT License - * - * https://github.com/lipis/bootstrap-social - */ - -.btn-social{position:relative;padding-left:44px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.btn-social :first-child{position:absolute;left:0;top:0;bottom:0;width:32px;line-height:34px;font-size:1.6em;text-align:center;border-right:1px solid rgba(0,0,0,0.2)} -.btn-social.btn-lg{padding-left:61px}.btn-social.btn-lg :first-child{line-height:45px;width:45px;font-size:1.8em} -.btn-social.btn-sm{padding-left:38px}.btn-social.btn-sm :first-child{line-height:28px;width:28px;font-size:1.4em} -.btn-social.btn-xs{padding-left:30px}.btn-social.btn-xs :first-child{line-height:20px;width:20px;font-size:1.2em} -.btn-social-icon{position:relative;padding-left:44px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:34px;width:34px;padding-left:0;padding-right:0}.btn-social-icon :first-child{position:absolute;left:0;top:0;bottom:0;width:32px;line-height:34px;font-size:1.6em;text-align:center;border-right:1px solid rgba(0,0,0,0.2)} -.btn-social-icon.btn-lg{padding-left:61px}.btn-social-icon.btn-lg :first-child{line-height:45px;width:45px;font-size:1.8em} -.btn-social-icon.btn-sm{padding-left:38px}.btn-social-icon.btn-sm :first-child{line-height:28px;width:28px;font-size:1.4em} -.btn-social-icon.btn-xs{padding-left:30px}.btn-social-icon.btn-xs :first-child{line-height:20px;width:20px;font-size:1.2em} -.btn-social-icon :first-child{border:none;text-align:center;width:100% !important} -.btn-social-icon.btn-lg{height:45px;width:45px;padding-left:0;padding-right:0} -.btn-social-icon.btn-sm{height:30px;width:30px;padding-left:0;padding-right:0} -.btn-social-icon.btn-xs{height:22px;width:22px;padding-left:0;padding-right:0} -.btn-bitbucket{color:#fff;background-color:#205081;border-color:rgba(0,0,0,0.2)}.btn-bitbucket:hover,.btn-bitbucket:focus,.btn-bitbucket:active,.btn-bitbucket.active,.open .dropdown-toggle.btn-bitbucket{color:#fff;background-color:#183c60;border-color:rgba(0,0,0,0.2)} -.btn-bitbucket:active,.btn-bitbucket.active,.open .dropdown-toggle.btn-bitbucket{background-image:none} -.btn-bitbucket.disabled,.btn-bitbucket[disabled],fieldset[disabled] .btn-bitbucket,.btn-bitbucket.disabled:hover,.btn-bitbucket[disabled]:hover,fieldset[disabled] .btn-bitbucket:hover,.btn-bitbucket.disabled:focus,.btn-bitbucket[disabled]:focus,fieldset[disabled] .btn-bitbucket:focus,.btn-bitbucket.disabled:active,.btn-bitbucket[disabled]:active,fieldset[disabled] .btn-bitbucket:active,.btn-bitbucket.disabled.active,.btn-bitbucket[disabled].active,fieldset[disabled] .btn-bitbucket.active{background-color:#205081;border-color:rgba(0,0,0,0.2)} -.btn-dropbox{color:#fff;background-color:#1087dd;border-color:rgba(0,0,0,0.2)}.btn-dropbox:hover,.btn-dropbox:focus,.btn-dropbox:active,.btn-dropbox.active,.open .dropdown-toggle.btn-dropbox{color:#fff;background-color:#0d70b7;border-color:rgba(0,0,0,0.2)} -.btn-dropbox:active,.btn-dropbox.active,.open .dropdown-toggle.btn-dropbox{background-image:none} -.btn-dropbox.disabled,.btn-dropbox[disabled],fieldset[disabled] .btn-dropbox,.btn-dropbox.disabled:hover,.btn-dropbox[disabled]:hover,fieldset[disabled] .btn-dropbox:hover,.btn-dropbox.disabled:focus,.btn-dropbox[disabled]:focus,fieldset[disabled] .btn-dropbox:focus,.btn-dropbox.disabled:active,.btn-dropbox[disabled]:active,fieldset[disabled] .btn-dropbox:active,.btn-dropbox.disabled.active,.btn-dropbox[disabled].active,fieldset[disabled] .btn-dropbox.active{background-color:#1087dd;border-color:rgba(0,0,0,0.2)} -.btn-facebook{color:#fff;background-color:#3b5998;border-color:rgba(0,0,0,0.2)}.btn-facebook:hover,.btn-facebook:focus,.btn-facebook:active,.btn-facebook.active,.open .dropdown-toggle.btn-facebook{color:#fff;background-color:#30487b;border-color:rgba(0,0,0,0.2)} -.btn-facebook:active,.btn-facebook.active,.open .dropdown-toggle.btn-facebook{background-image:none} -.btn-facebook.disabled,.btn-facebook[disabled],fieldset[disabled] .btn-facebook,.btn-facebook.disabled:hover,.btn-facebook[disabled]:hover,fieldset[disabled] .btn-facebook:hover,.btn-facebook.disabled:focus,.btn-facebook[disabled]:focus,fieldset[disabled] .btn-facebook:focus,.btn-facebook.disabled:active,.btn-facebook[disabled]:active,fieldset[disabled] .btn-facebook:active,.btn-facebook.disabled.active,.btn-facebook[disabled].active,fieldset[disabled] .btn-facebook.active{background-color:#3b5998;border-color:rgba(0,0,0,0.2)} -.btn-flickr{color:#fff;background-color:#ff0084;border-color:rgba(0,0,0,0.2)}.btn-flickr:hover,.btn-flickr:focus,.btn-flickr:active,.btn-flickr.active,.open .dropdown-toggle.btn-flickr{color:#fff;background-color:#d6006f;border-color:rgba(0,0,0,0.2)} -.btn-flickr:active,.btn-flickr.active,.open .dropdown-toggle.btn-flickr{background-image:none} -.btn-flickr.disabled,.btn-flickr[disabled],fieldset[disabled] .btn-flickr,.btn-flickr.disabled:hover,.btn-flickr[disabled]:hover,fieldset[disabled] .btn-flickr:hover,.btn-flickr.disabled:focus,.btn-flickr[disabled]:focus,fieldset[disabled] .btn-flickr:focus,.btn-flickr.disabled:active,.btn-flickr[disabled]:active,fieldset[disabled] .btn-flickr:active,.btn-flickr.disabled.active,.btn-flickr[disabled].active,fieldset[disabled] .btn-flickr.active{background-color:#ff0084;border-color:rgba(0,0,0,0.2)} -.btn-github{color:#fff;background-color:#444;border-color:rgba(0,0,0,0.2)}.btn-github:hover,.btn-github:focus,.btn-github:active,.btn-github.active,.open .dropdown-toggle.btn-github{color:#fff;background-color:#303030;border-color:rgba(0,0,0,0.2)} -.btn-github:active,.btn-github.active,.open .dropdown-toggle.btn-github{background-image:none} -.btn-github.disabled,.btn-github[disabled],fieldset[disabled] .btn-github,.btn-github.disabled:hover,.btn-github[disabled]:hover,fieldset[disabled] .btn-github:hover,.btn-github.disabled:focus,.btn-github[disabled]:focus,fieldset[disabled] .btn-github:focus,.btn-github.disabled:active,.btn-github[disabled]:active,fieldset[disabled] .btn-github:active,.btn-github.disabled.active,.btn-github[disabled].active,fieldset[disabled] .btn-github.active{background-color:#444;border-color:rgba(0,0,0,0.2)} -.btn-google-plus{color:#fff;background-color:#dd4b39;border-color:rgba(0,0,0,0.2)}.btn-google-plus:hover,.btn-google-plus:focus,.btn-google-plus:active,.btn-google-plus.active,.open .dropdown-toggle.btn-google-plus{color:#fff;background-color:#ca3523;border-color:rgba(0,0,0,0.2)} -.btn-google-plus:active,.btn-google-plus.active,.open .dropdown-toggle.btn-google-plus{background-image:none} -.btn-google-plus.disabled,.btn-google-plus[disabled],fieldset[disabled] .btn-google-plus,.btn-google-plus.disabled:hover,.btn-google-plus[disabled]:hover,fieldset[disabled] .btn-google-plus:hover,.btn-google-plus.disabled:focus,.btn-google-plus[disabled]:focus,fieldset[disabled] .btn-google-plus:focus,.btn-google-plus.disabled:active,.btn-google-plus[disabled]:active,fieldset[disabled] .btn-google-plus:active,.btn-google-plus.disabled.active,.btn-google-plus[disabled].active,fieldset[disabled] .btn-google-plus.active{background-color:#dd4b39;border-color:rgba(0,0,0,0.2)} -.btn-instagram{color:#fff;background-color:#517fa4;border-color:rgba(0,0,0,0.2)}.btn-instagram:hover,.btn-instagram:focus,.btn-instagram:active,.btn-instagram.active,.open .dropdown-toggle.btn-instagram{color:#fff;background-color:#446a89;border-color:rgba(0,0,0,0.2)} -.btn-instagram:active,.btn-instagram.active,.open .dropdown-toggle.btn-instagram{background-image:none} -.btn-instagram.disabled,.btn-instagram[disabled],fieldset[disabled] .btn-instagram,.btn-instagram.disabled:hover,.btn-instagram[disabled]:hover,fieldset[disabled] .btn-instagram:hover,.btn-instagram.disabled:focus,.btn-instagram[disabled]:focus,fieldset[disabled] .btn-instagram:focus,.btn-instagram.disabled:active,.btn-instagram[disabled]:active,fieldset[disabled] .btn-instagram:active,.btn-instagram.disabled.active,.btn-instagram[disabled].active,fieldset[disabled] .btn-instagram.active{background-color:#517fa4;border-color:rgba(0,0,0,0.2)} -.btn-linkedin{color:#fff;background-color:#007bb6;border-color:rgba(0,0,0,0.2)}.btn-linkedin:hover,.btn-linkedin:focus,.btn-linkedin:active,.btn-linkedin.active,.open .dropdown-toggle.btn-linkedin{color:#fff;background-color:#005f8d;border-color:rgba(0,0,0,0.2)} -.btn-linkedin:active,.btn-linkedin.active,.open .dropdown-toggle.btn-linkedin{background-image:none} -.btn-linkedin.disabled,.btn-linkedin[disabled],fieldset[disabled] .btn-linkedin,.btn-linkedin.disabled:hover,.btn-linkedin[disabled]:hover,fieldset[disabled] .btn-linkedin:hover,.btn-linkedin.disabled:focus,.btn-linkedin[disabled]:focus,fieldset[disabled] .btn-linkedin:focus,.btn-linkedin.disabled:active,.btn-linkedin[disabled]:active,fieldset[disabled] .btn-linkedin:active,.btn-linkedin.disabled.active,.btn-linkedin[disabled].active,fieldset[disabled] .btn-linkedin.active{background-color:#007bb6;border-color:rgba(0,0,0,0.2)} -.btn-pinterest{color:#fff;background-color:#cb2027;border-color:rgba(0,0,0,0.2)}.btn-pinterest:hover,.btn-pinterest:focus,.btn-pinterest:active,.btn-pinterest.active,.open .dropdown-toggle.btn-pinterest{color:#fff;background-color:#a81a20;border-color:rgba(0,0,0,0.2)} -.btn-pinterest:active,.btn-pinterest.active,.open .dropdown-toggle.btn-pinterest{background-image:none} -.btn-pinterest.disabled,.btn-pinterest[disabled],fieldset[disabled] .btn-pinterest,.btn-pinterest.disabled:hover,.btn-pinterest[disabled]:hover,fieldset[disabled] .btn-pinterest:hover,.btn-pinterest.disabled:focus,.btn-pinterest[disabled]:focus,fieldset[disabled] .btn-pinterest:focus,.btn-pinterest.disabled:active,.btn-pinterest[disabled]:active,fieldset[disabled] .btn-pinterest:active,.btn-pinterest.disabled.active,.btn-pinterest[disabled].active,fieldset[disabled] .btn-pinterest.active{background-color:#cb2027;border-color:rgba(0,0,0,0.2)} -.btn-tumblr{color:#fff;background-color:#2c4762;border-color:rgba(0,0,0,0.2)}.btn-tumblr:hover,.btn-tumblr:focus,.btn-tumblr:active,.btn-tumblr.active,.open .dropdown-toggle.btn-tumblr{color:#fff;background-color:#1f3346;border-color:rgba(0,0,0,0.2)} -.btn-tumblr:active,.btn-tumblr.active,.open .dropdown-toggle.btn-tumblr{background-image:none} -.btn-tumblr.disabled,.btn-tumblr[disabled],fieldset[disabled] .btn-tumblr,.btn-tumblr.disabled:hover,.btn-tumblr[disabled]:hover,fieldset[disabled] .btn-tumblr:hover,.btn-tumblr.disabled:focus,.btn-tumblr[disabled]:focus,fieldset[disabled] .btn-tumblr:focus,.btn-tumblr.disabled:active,.btn-tumblr[disabled]:active,fieldset[disabled] .btn-tumblr:active,.btn-tumblr.disabled.active,.btn-tumblr[disabled].active,fieldset[disabled] .btn-tumblr.active{background-color:#2c4762;border-color:rgba(0,0,0,0.2)} -.btn-twitter{color:#fff;background-color:#2ba9e1;border-color:rgba(0,0,0,0.2)}.btn-twitter:hover,.btn-twitter:focus,.btn-twitter:active,.btn-twitter.active,.open .dropdown-toggle.btn-twitter{color:#fff;background-color:#1c92c7;border-color:rgba(0,0,0,0.2)} -.btn-twitter:active,.btn-twitter.active,.open .dropdown-toggle.btn-twitter{background-image:none} -.btn-twitter.disabled,.btn-twitter[disabled],fieldset[disabled] .btn-twitter,.btn-twitter.disabled:hover,.btn-twitter[disabled]:hover,fieldset[disabled] .btn-twitter:hover,.btn-twitter.disabled:focus,.btn-twitter[disabled]:focus,fieldset[disabled] .btn-twitter:focus,.btn-twitter.disabled:active,.btn-twitter[disabled]:active,fieldset[disabled] .btn-twitter:active,.btn-twitter.disabled.active,.btn-twitter[disabled].active,fieldset[disabled] .btn-twitter.active{background-color:#2ba9e1;border-color:rgba(0,0,0,0.2)} -.btn-vk{color:#fff;background-color:#587ea3;border-color:rgba(0,0,0,0.2)}.btn-vk:hover,.btn-vk:focus,.btn-vk:active,.btn-vk.active,.open .dropdown-toggle.btn-vk{color:#fff;background-color:#4a6a89;border-color:rgba(0,0,0,0.2)} -.btn-vk:active,.btn-vk.active,.open .dropdown-toggle.btn-vk{background-image:none} -.btn-vk.disabled,.btn-vk[disabled],fieldset[disabled] .btn-vk,.btn-vk.disabled:hover,.btn-vk[disabled]:hover,fieldset[disabled] .btn-vk:hover,.btn-vk.disabled:focus,.btn-vk[disabled]:focus,fieldset[disabled] .btn-vk:focus,.btn-vk.disabled:active,.btn-vk[disabled]:active,fieldset[disabled] .btn-vk:active,.btn-vk.disabled.active,.btn-vk[disabled].active,fieldset[disabled] .btn-vk.active{background-color:#587ea3;border-color:rgba(0,0,0,0.2)} - - -/* - * Only for this example - not needed for the buttons - * ----------------------------------------------------- */ -.btn-social-icon {margin-bottom: 4px;} -.social-class .social-hex{font-family:Monaco,Menlo,Consolas,"Courier New",monospace;font-size:10px;opacity:.3;float:right} -.social-class li{margin-bottom:4px}.social-class li:hover .social-hex{opacity:1} -.social-class li:hover code{background-color:#e8e8ee} -.social-class code{cursor:default} \ No newline at end of file diff --git a/assets/css/plugins/steps/jquery.steps.css b/assets/css/plugins/steps/jquery.steps.css deleted file mode 100644 index 31af1730..00000000 --- a/assets/css/plugins/steps/jquery.steps.css +++ /dev/null @@ -1,380 +0,0 @@ -/* - Common -*/ - -.wizard, -.tabcontrol -{ - display: block; - width: 100%; - overflow: hidden; -} - -.wizard a, -.tabcontrol a -{ - outline: 0; -} - -.wizard ul, -.tabcontrol ul -{ - list-style: none !important; - padding: 0; - margin: 0; -} - -.wizard ul > li, -.tabcontrol ul > li -{ - display: block; - padding: 0; -} - -/* Accessibility */ -.wizard > .steps .current-info, -.tabcontrol > .steps .current-info -{ - position: absolute; - left: -999em; -} - -.wizard > .content > .title, -.tabcontrol > .content > .title -{ - position: absolute; - left: -999em; -} - - - -/* - Wizard -*/ - -.wizard > .steps -{ - position: relative; - display: block; - width: 100%; -} - -.wizard.vertical > .steps -{ - display: inline; - float: left; - width: 30%; -} - -.wizard > .steps > ul > li -{ - width: 25%; -} - -.wizard > .steps > ul > li, -.wizard > .actions > ul > li -{ - float: left; -} - -.wizard.vertical > .steps > ul > li -{ - float: none; - width: 100%; -} - -.wizard > .steps a, -.wizard > .steps a:hover, -.wizard > .steps a:active -{ - display: block; - width: auto; - margin: 0 0.5em 0.5em; - padding: 8px; - text-decoration: none; - - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; -} - -.wizard > .steps .disabled a, -.wizard > .steps .disabled a:hover, -.wizard > .steps .disabled a:active -{ - background: #eee; - color: #aaa; - cursor: default; -} - -.wizard > .steps .current a, -.wizard > .steps .current a:hover, -.wizard > .steps .current a:active -{ - background: #1AB394; - color: #fff; - cursor: default; -} - -.wizard > .steps .done a, -.wizard > .steps .done a:hover, -.wizard > .steps .done a:active -{ - background: #6fd1bd; - color: #fff; -} - -.wizard > .steps .error a, -.wizard > .steps .error a:hover, -.wizard > .steps .error a:active -{ - background: #ED5565 ; - color: #fff; -} - -.wizard > .content -{ - background: #eee; - display: block; - margin: 5px 5px 10px 5px; - min-height: 120px; - overflow: hidden; - position: relative; - width: auto; - - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; -} - -.wizard-big.wizard > .content { - min-height: 320px; -} -.wizard.vertical > .content -{ - display: inline; - float: left; - margin: 0 2.5% 0.5em 2.5%; - width: 65%; -} - -.wizard > .content > .body -{ - float: left; - position: absolute; - width: 95%; - height: 95%; - padding: 2.5%; -} - -.wizard > .content > .body ul -{ - list-style: disc !important; -} - -.wizard > .content > .body ul > li -{ - display: list-item; -} - -.wizard > .content > .body > iframe -{ - border: 0 none; - width: 100%; - height: 100%; -} - -.wizard > .content > .body input -{ - display: block; - border: 1px solid #ccc; -} - -.wizard > .content > .body input[type="checkbox"] -{ - display: inline-block; -} - -.wizard > .content > .body input.error -{ - background: rgb(251, 227, 228); - border: 1px solid #fbc2c4; - color: #8a1f11; -} - -.wizard > .content > .body label -{ - display: inline-block; - margin-bottom: 0.5em; -} - -.wizard > .content > .body label.error -{ - color: #8a1f11; - display: inline-block; - margin-left: 1.5em; -} - -.wizard > .actions -{ - position: relative; - display: block; - text-align: right; - width: 100%; -} - -.wizard.vertical > .actions -{ - display: inline; - float: right; - margin: 0 2.5%; - width: 95%; -} - -.wizard > .actions > ul -{ - display: inline-block; - text-align: right; -} - -.wizard > .actions > ul > li -{ - margin: 0 0.5em; -} - -.wizard.vertical > .actions > ul > li -{ - margin: 0 0 0 1em; -} - -.wizard > .actions a, -.wizard > .actions a:hover, -.wizard > .actions a:active -{ - background: #1AB394; - color: #fff; - display: block; - padding: 0.5em 1em; - text-decoration: none; - - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; -} - -.wizard > .actions .disabled a, -.wizard > .actions .disabled a:hover, -.wizard > .actions .disabled a:active -{ - background: #eee; - color: #aaa; -} - -.wizard > .loading -{ -} - -.wizard > .loading .spinner -{ -} - - - -/* - Tabcontrol -*/ - -.tabcontrol > .steps -{ - position: relative; - display: block; - width: 100%; -} - -.tabcontrol > .steps > ul -{ - position: relative; - margin: 6px 0 0 0; - top: 1px; - z-index: 1; -} - -.tabcontrol > .steps > ul > li -{ - float: left; - margin: 5px 2px 0 0; - padding: 1px; - - -webkit-border-top-left-radius: 5px; - -webkit-border-top-right-radius: 5px; - -moz-border-radius-topleft: 5px; - -moz-border-radius-topright: 5px; - border-top-left-radius: 5px; - border-top-right-radius: 5px; -} - -.tabcontrol > .steps > ul > li:hover -{ - background: #edecec; - border: 1px solid #bbb; - padding: 0; -} - -.tabcontrol > .steps > ul > li.current -{ - background: #fff; - border: 1px solid #bbb; - border-bottom: 0 none; - padding: 0 0 1px 0; - margin-top: 0; -} - -.tabcontrol > .steps > ul > li > a -{ - color: #5f5f5f; - display: inline-block; - border: 0 none; - margin: 0; - padding: 10px 30px; - text-decoration: none; -} - -.tabcontrol > .steps > ul > li > a:hover -{ - text-decoration: none; -} - -.tabcontrol > .steps > ul > li.current > a -{ - padding: 15px 30px 10px 30px; -} - -.tabcontrol > .content -{ - position: relative; - display: inline-block; - width: 100%; - height: 35em; - overflow: hidden; - border-top: 1px solid #bbb; - padding-top: 20px; -} - -.tabcontrol > .content > .body -{ - float: left; - position: absolute; - width: 95%; - height: 95%; - padding: 2.5%; -} - -.tabcontrol > .content > .body ul -{ - list-style: disc !important; -} - -.tabcontrol > .content > .body ul > li -{ - display: list-item; -} \ No newline at end of file diff --git a/assets/css/plugins/summernote/summernote-bs3.css b/assets/css/plugins/summernote/summernote-bs3.css deleted file mode 100644 index 5090cd9f..00000000 --- a/assets/css/plugins/summernote/summernote-bs3.css +++ /dev/null @@ -1,5970 +0,0 @@ -.note-editor { - /*! normalize.css v2.1.3 | MIT License | git.io/normalize */ - -} -.note-editor article, -.note-editor aside, -.note-editor details, -.note-editor figcaption, -.note-editor figure, -.note-editor footer, -.note-editor header, -.note-editor hgroup, -.note-editor main, -.note-editor nav, -.note-editor section, -.note-editor summary { - display: block; -} -.note-editor audio, -.note-editor canvas, -.note-editor video { - display: inline-block; -} -.note-editor audio:not([controls]) { - display: none; - height: 0; -} -.note-editor [hidden], -.note-editor template { - display: none; -} -.note-editor html { - font-family: sans-serif; - -ms-text-size-adjust: 100%; - -webkit-text-size-adjust: 100%; -} -.note-editor body { - margin: 0; -} -.note-editor a { - background: transparent; -} -.note-editor a:focus { - outline: thin dotted; -} -.note-editor a:active, -.note-editor a:hover { - outline: 0; -} -.note-editor h1 { - font-size: 2em; - margin: 0.67em 0; -} -.note-editor abbr[title] { - border-bottom: 1px dotted; -} -.note-editor b, -.note-editor strong { - font-weight: bold; -} -.note-editor dfn { - font-style: italic; -} -.note-editor hr { - -moz-box-sizing: content-box; - box-sizing: content-box; - height: 0; -} -.note-editor mark { - background: #ff0; - color: #000; -} -.note-editor code, -.note-editor kbd, -.note-editor pre, -.note-editor samp { - font-family: monospace, serif; - font-size: 1em; -} -.note-editor pre { - white-space: pre-wrap; -} -.note-editor q { - quotes: "\201C" "\201D" "\2018" "\2019"; -} -.note-editor small { - font-size: 80%; -} -.note-editor sub, -.note-editor sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} -.note-editor sup { - top: -0.5em; -} -.note-editor sub { - bottom: -0.25em; -} -.note-editor img { - border: 0; -} -.note-editor svg:not(:root) { - overflow: hidden; -} -.note-editor figure { - margin: 0; -} -.note-editor fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; -} -.note-editor legend { - border: 0; - padding: 0; -} -.note-editor button, -.note-editor input, -.note-editor select, -.note-editor textarea { - font-family: inherit; - font-size: 100%; - margin: 0; -} -.note-editor button, -.note-editor input { - line-height: normal; -} -.note-editor button, -.note-editor select { - text-transform: none; -} -.note-editor button, -.note-editor html input[type="button"], -.note-editor input[type="reset"], -.note-editor input[type="submit"] { - -webkit-appearance: button; - cursor: pointer; -} -.note-editor button[disabled], -.note-editor html input[disabled] { - cursor: default; -} -.note-editor input[type="checkbox"], -.note-editor input[type="radio"] { - box-sizing: border-box; - padding: 0; -} -.note-editor input[type="search"] { - -webkit-appearance: textfield; - -moz-box-sizing: content-box; - -webkit-box-sizing: content-box; - box-sizing: content-box; -} -.note-editor input[type="search"]::-webkit-search-cancel-button, -.note-editor input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} -.note-editor button::-moz-focus-inner, -.note-editor input::-moz-focus-inner { - border: 0; - padding: 0; -} -.note-editor textarea { - overflow: auto; - vertical-align: top; -} -.note-editor table { - border-collapse: collapse; - border-spacing: 0; -} -@media print { - .note-editor * { - text-shadow: none !important; - color: #000 !important; - background: transparent !important; - box-shadow: none !important; - } - .note-editor a, - .note-editor a:visited { - text-decoration: underline; - } - .note-editor a[href]:after { - content: " (" attr(href) ")"; - } - .note-editor abbr[title]:after { - content: " (" attr(title) ")"; - } - .note-editor .ir a:after, - .note-editor a[href^="javascript:"]:after, - .note-editor a[href^="#"]:after { - content: ""; - } - .note-editor pre, - .note-editor blockquote { - border: 1px solid #999; - page-break-inside: avoid; - } - .note-editor thead { - display: table-header-group; - } - .note-editor tr, - .note-editor img { - page-break-inside: avoid; - } - .note-editor img { - max-width: 100% !important; - } - @page { - margin: 2cm .5cm; - } - .note-editor p, - .note-editor h2, - .note-editor h3 { - orphans: 3; - widows: 3; - } - .note-editor h2, - .note-editor h3 { - page-break-after: avoid; - } - .note-editor .navbar { - display: none; - } - .note-editor .table td, - .note-editor .table th { - background-color: #fff !important; - } - .note-editor .btn > .caret, - .note-editor .dropup > .btn > .caret { - border-top-color: #000 !important; - } - .note-editor .label { - border: 1px solid #000; - } - .note-editor .table { - border-collapse: collapse !important; - } - .note-editor .table-bordered th, - .note-editor .table-bordered td { - border: 1px solid #ddd !important; - } -} -.note-editor *, -.note-editor *:before, -.note-editor *:after { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.note-editor html { - font-size: 62.5%; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} -.note-editor body { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - line-height: 1.428571429; - color: #333333; - background-color: #ffffff; -} -.note-editor input, -.note-editor button, -.note-editor select, -.note-editor textarea { - font-family: inherit; - font-size: inherit; - line-height: inherit; -} -.note-editor a { - color: #428bca; - text-decoration: none; -} -.note-editor a:hover, -.note-editor a:focus { - color: #2a6496; - text-decoration: underline; -} -.note-editor a:focus { - outline: thin dotted #333; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.note-editor img { - vertical-align: middle; -} -.note-editor .img-responsive { - display: block; - max-width: 100%; - height: auto; -} -.note-editor .img-rounded { - border-radius: 6px; -} -.note-editor .img-thumbnail { - padding: 4px; - line-height: 1.428571429; - background-color: #ffffff; - border: 1px solid #dddddd; - border-radius: 4px; - -webkit-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; - display: inline-block; - max-width: 100%; - height: auto; -} -.note-editor .img-circle { - border-radius: 50%; -} -.note-editor hr { - margin-top: 20px; - margin-bottom: 20px; - border: 0; - border-top: 1px solid #eeeeee; -} -.note-editor .sr-only { - position: absolute; - width: 1px; - height: 1px; - margin: -1px; - padding: 0; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; -} -.note-editor p { - margin: 0 0 10px; -} -.note-editor .lead { - margin-bottom: 20px; - font-size: 16px; - font-weight: 200; - line-height: 1.4; -} -@media (min-width: 768px) { - .note-editor .lead { - font-size: 21px; - } -} -.note-editor small, -.note-editor .small { - font-size: 85%; -} -.note-editor cite { - font-style: normal; -} -.note-editor .text-muted { - color: #999999; -} -.note-editor .text-primary { - color: #428bca; -} -.note-editor .text-primary:hover { - color: #3071a9; -} -.note-editor .text-warning { - color: #c09853; -} -.note-editor .text-warning:hover { - color: #a47e3c; -} -.note-editor .text-danger { - color: #b94a48; -} -.note-editor .text-danger:hover { - color: #953b39; -} -.note-editor .text-success { - color: #468847; -} -.note-editor .text-success:hover { - color: #356635; -} -.note-editor .text-info { - color: #3a87ad; -} -.note-editor .text-info:hover { - color: #2d6987; -} -.note-editor .text-left { - text-align: left; -} -.note-editor .text-right { - text-align: right; -} -.note-editor .text-center { - text-align: center; -} -.note-editor h1, -.note-editor h2, -.note-editor h3, -.note-editor h4, -.note-editor h5, -.note-editor h6, -.note-editor .h1, -.note-editor .h2, -.note-editor .h3, -.note-editor .h4, -.note-editor .h5, -.note-editor .h6 { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-weight: 500; - line-height: 1.1; - color: inherit; -} -.note-editor h1 small, -.note-editor h2 small, -.note-editor h3 small, -.note-editor h4 small, -.note-editor h5 small, -.note-editor h6 small, -.note-editor .h1 small, -.note-editor .h2 small, -.note-editor .h3 small, -.note-editor .h4 small, -.note-editor .h5 small, -.note-editor .h6 small, -.note-editor h1 .small, -.note-editor h2 .small, -.note-editor h3 .small, -.note-editor h4 .small, -.note-editor h5 .small, -.note-editor h6 .small, -.note-editor .h1 .small, -.note-editor .h2 .small, -.note-editor .h3 .small, -.note-editor .h4 .small, -.note-editor .h5 .small, -.note-editor .h6 .small { - font-weight: normal; - line-height: 1; - color: #999999; -} -.note-editor h1, -.note-editor h2, -.note-editor h3 { - margin-top: 20px; - margin-bottom: 10px; -} -.note-editor h1 small, -.note-editor h2 small, -.note-editor h3 small, -.note-editor h1 .small, -.note-editor h2 .small, -.note-editor h3 .small { - font-size: 65%; -} -.note-editor h4, -.note-editor h5, -.note-editor h6 { - margin-top: 10px; - margin-bottom: 10px; -} -.note-editor h4 small, -.note-editor h5 small, -.note-editor h6 small, -.note-editor h4 .small, -.note-editor h5 .small, -.note-editor h6 .small { - font-size: 75%; -} -.note-editor h1, -.note-editor .h1 { - font-size: 36px; -} -.note-editor h2, -.note-editor .h2 { - font-size: 30px; -} -.note-editor h3, -.note-editor .h3 { - font-size: 24px; -} -.note-editor h4, -.note-editor .h4 { - font-size: 18px; -} -.note-editor h5, -.note-editor .h5 { - font-size: 14px; -} -.note-editor h6, -.note-editor .h6 { - font-size: 12px; -} -.note-editor .page-header { - padding-bottom: 9px; - margin: 40px 0 20px; - border-bottom: 1px solid #eeeeee; -} -.note-editor ul, -.note-editor ol { - margin-top: 0; - margin-bottom: 10px; -} -.note-editor ul ul, -.note-editor ol ul, -.note-editor ul ol, -.note-editor ol ol { - margin-bottom: 0; -} -.note-editor .list-unstyled { - padding-left: 0; - list-style: none; -} -.note-editor .list-inline { - padding-left: 0; - list-style: none; -} -.note-editor .list-inline > li { - display: inline-block; - padding-left: 5px; - padding-right: 5px; -} -.note-editor dl { - margin-bottom: 20px; -} -.note-editor dt, -.note-editor dd { - line-height: 1.428571429; -} -.note-editor dt { - font-weight: bold; -} -.note-editor dd { - margin-left: 0; -} -@media (min-width: 768px) { - .note-editor .dl-horizontal dt { - float: left; - width: 160px; - clear: left; - text-align: right; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } - .note-editor .dl-horizontal dd { - margin-left: 180px; - } - .note-editor .dl-horizontal dd:before, - .note-editor .dl-horizontal dd:after { - content: " "; - /* 1 */ - - display: table; - /* 2 */ - - } - .note-editor .dl-horizontal dd:after { - clear: both; - } - .note-editor .dl-horizontal dd:before, - .note-editor .dl-horizontal dd:after { - content: " "; - /* 1 */ - - display: table; - /* 2 */ - - } - .note-editor .dl-horizontal dd:after { - clear: both; - } -} -.note-editor abbr[title], -.note-editor abbr[data-original-title] { - cursor: help; - border-bottom: 1px dotted #999999; -} -.note-editor abbr.initialism { - font-size: 90%; - text-transform: uppercase; -} -.note-editor blockquote { - padding: 10px 20px; - margin: 0 0 20px; - border-left: 5px solid #eeeeee; -} -.note-editor blockquote p { - font-size: 17.5px; - font-weight: 300; - line-height: 1.25; -} -.note-editor blockquote p:last-child { - margin-bottom: 0; -} -.note-editor blockquote small { - display: block; - line-height: 1.428571429; - color: #999999; -} -.note-editor blockquote small:before { - content: '\2014 \00A0'; -} -.note-editor blockquote.pull-right { - padding-right: 15px; - padding-left: 0; - border-right: 5px solid #eeeeee; - border-left: 0; -} -.note-editor blockquote.pull-right p, -.note-editor blockquote.pull-right small, -.note-editor blockquote.pull-right .small { - text-align: right; -} -.note-editor blockquote.pull-right small:before, -.note-editor blockquote.pull-right .small:before { - content: ''; -} -.note-editor blockquote.pull-right small:after, -.note-editor blockquote.pull-right .small:after { - content: '\00A0 \2014'; -} -.note-editor blockquote:before, -.note-editor blockquote:after { - content: ""; -} -.note-editor address { - margin-bottom: 20px; - font-style: normal; - line-height: 1.428571429; -} -.note-editor code, -.note-editor kdb, -.note-editor pre, -.note-editor samp { - font-family: Monaco, Menlo, Consolas, "Courier New", monospace; -} -.note-editor code { - padding: 2px 4px; - font-size: 90%; - color: #c7254e; - background-color: #f9f2f4; - white-space: nowrap; - border-radius: 4px; -} -.note-editor pre { - display: block; - padding: 9.5px; - margin: 0 0 10px; - font-size: 13px; - line-height: 1.428571429; - word-break: break-all; - word-wrap: break-word; - color: #333333; - background-color: #f5f5f5; - border: 1px solid #cccccc; - border-radius: 4px; -} -.note-editor pre code { - padding: 0; - font-size: inherit; - color: inherit; - white-space: pre-wrap; - background-color: transparent; - border-radius: 0; -} -.note-editor .pre-scrollable { - max-height: 340px; - overflow-y: scroll; -} -.note-editor .container { - margin-right: auto; - margin-left: auto; - padding-left: 15px; - padding-right: 15px; -} -.note-editor .container:before, -.note-editor .container:after { - content: " "; - /* 1 */ - - display: table; - /* 2 */ - -} -.note-editor .container:after { - clear: both; -} -.note-editor .container:before, -.note-editor .container:after { - content: " "; - /* 1 */ - - display: table; - /* 2 */ - -} -.note-editor .container:after { - clear: both; -} -.note-editor .row { - margin-left: -15px; - margin-right: -15px; -} -.note-editor .row:before, -.note-editor .row:after { - content: " "; - /* 1 */ - - display: table; - /* 2 */ - -} -.note-editor .row:after { - clear: both; -} -.note-editor .row:before, -.note-editor .row:after { - content: " "; - /* 1 */ - - display: table; - /* 2 */ - -} -.note-editor .row:after { - clear: both; -} -.note-editor .col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { - position: relative; - min-height: 1px; - padding-left: 15px; - padding-right: 15px; -} -.note-editor .col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11 { - float: left; -} -.note-editor .col-xs-12 { - width: 100%; -} -.note-editor .col-xs-11 { - width: 91.66666666666666%; -} -.note-editor .col-xs-10 { - width: 83.33333333333334%; -} -.note-editor .col-xs-9 { - width: 75%; -} -.note-editor .col-xs-8 { - width: 66.66666666666666%; -} -.note-editor .col-xs-7 { - width: 58.333333333333336%; -} -.note-editor .col-xs-6 { - width: 50%; -} -.note-editor .col-xs-5 { - width: 41.66666666666667%; -} -.note-editor .col-xs-4 { - width: 33.33333333333333%; -} -.note-editor .col-xs-3 { - width: 25%; -} -.note-editor .col-xs-2 { - width: 16.666666666666664%; -} -.note-editor .col-xs-1 { - width: 8.333333333333332%; -} -.note-editor .col-xs-pull-12 { - right: 100%; -} -.note-editor .col-xs-pull-11 { - right: 91.66666666666666%; -} -.note-editor .col-xs-pull-10 { - right: 83.33333333333334%; -} -.note-editor .col-xs-pull-9 { - right: 75%; -} -.note-editor .col-xs-pull-8 { - right: 66.66666666666666%; -} -.note-editor .col-xs-pull-7 { - right: 58.333333333333336%; -} -.note-editor .col-xs-pull-6 { - right: 50%; -} -.note-editor .col-xs-pull-5 { - right: 41.66666666666667%; -} -.note-editor .col-xs-pull-4 { - right: 33.33333333333333%; -} -.note-editor .col-xs-pull-3 { - right: 25%; -} -.note-editor .col-xs-pull-2 { - right: 16.666666666666664%; -} -.note-editor .col-xs-pull-1 { - right: 8.333333333333332%; -} -.note-editor .col-xs-push-12 { - left: 100%; -} -.note-editor .col-xs-push-11 { - left: 91.66666666666666%; -} -.note-editor .col-xs-push-10 { - left: 83.33333333333334%; -} -.note-editor .col-xs-push-9 { - left: 75%; -} -.note-editor .col-xs-push-8 { - left: 66.66666666666666%; -} -.note-editor .col-xs-push-7 { - left: 58.333333333333336%; -} -.note-editor .col-xs-push-6 { - left: 50%; -} -.note-editor .col-xs-push-5 { - left: 41.66666666666667%; -} -.note-editor .col-xs-push-4 { - left: 33.33333333333333%; -} -.note-editor .col-xs-push-3 { - left: 25%; -} -.note-editor .col-xs-push-2 { - left: 16.666666666666664%; -} -.note-editor .col-xs-push-1 { - left: 8.333333333333332%; -} -.note-editor .col-xs-offset-12 { - margin-left: 100%; -} -.note-editor .col-xs-offset-11 { - margin-left: 91.66666666666666%; -} -.note-editor .col-xs-offset-10 { - margin-left: 83.33333333333334%; -} -.note-editor .col-xs-offset-9 { - margin-left: 75%; -} -.note-editor .col-xs-offset-8 { - margin-left: 66.66666666666666%; -} -.note-editor .col-xs-offset-7 { - margin-left: 58.333333333333336%; -} -.note-editor .col-xs-offset-6 { - margin-left: 50%; -} -.note-editor .col-xs-offset-5 { - margin-left: 41.66666666666667%; -} -.note-editor .col-xs-offset-4 { - margin-left: 33.33333333333333%; -} -.note-editor .col-xs-offset-3 { - margin-left: 25%; -} -.note-editor .col-xs-offset-2 { - margin-left: 16.666666666666664%; -} -.note-editor .col-xs-offset-1 { - margin-left: 8.333333333333332%; -} -@media (min-width: 768px) { - .note-editor .container { - width: 750px; - } - .note-editor .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11 { - float: left; - } - .note-editor .col-sm-12 { - width: 100%; - } - .note-editor .col-sm-11 { - width: 91.66666666666666%; - } - .note-editor .col-sm-10 { - width: 83.33333333333334%; - } - .note-editor .col-sm-9 { - width: 75%; - } - .note-editor .col-sm-8 { - width: 66.66666666666666%; - } - .note-editor .col-sm-7 { - width: 58.333333333333336%; - } - .note-editor .col-sm-6 { - width: 50%; - } - .note-editor .col-sm-5 { - width: 41.66666666666667%; - } - .note-editor .col-sm-4 { - width: 33.33333333333333%; - } - .note-editor .col-sm-3 { - width: 25%; - } - .note-editor .col-sm-2 { - width: 16.666666666666664%; - } - .note-editor .col-sm-1 { - width: 8.333333333333332%; - } - .note-editor .col-sm-pull-12 { - right: 100%; - } - .note-editor .col-sm-pull-11 { - right: 91.66666666666666%; - } - .note-editor .col-sm-pull-10 { - right: 83.33333333333334%; - } - .note-editor .col-sm-pull-9 { - right: 75%; - } - .note-editor .col-sm-pull-8 { - right: 66.66666666666666%; - } - .note-editor .col-sm-pull-7 { - right: 58.333333333333336%; - } - .note-editor .col-sm-pull-6 { - right: 50%; - } - .note-editor .col-sm-pull-5 { - right: 41.66666666666667%; - } - .note-editor .col-sm-pull-4 { - right: 33.33333333333333%; - } - .note-editor .col-sm-pull-3 { - right: 25%; - } - .note-editor .col-sm-pull-2 { - right: 16.666666666666664%; - } - .note-editor .col-sm-pull-1 { - right: 8.333333333333332%; - } - .note-editor .col-sm-push-12 { - left: 100%; - } - .note-editor .col-sm-push-11 { - left: 91.66666666666666%; - } - .note-editor .col-sm-push-10 { - left: 83.33333333333334%; - } - .note-editor .col-sm-push-9 { - left: 75%; - } - .note-editor .col-sm-push-8 { - left: 66.66666666666666%; - } - .note-editor .col-sm-push-7 { - left: 58.333333333333336%; - } - .note-editor .col-sm-push-6 { - left: 50%; - } - .note-editor .col-sm-push-5 { - left: 41.66666666666667%; - } - .note-editor .col-sm-push-4 { - left: 33.33333333333333%; - } - .note-editor .col-sm-push-3 { - left: 25%; - } - .note-editor .col-sm-push-2 { - left: 16.666666666666664%; - } - .note-editor .col-sm-push-1 { - left: 8.333333333333332%; - } - .note-editor .col-sm-offset-12 { - margin-left: 100%; - } - .note-editor .col-sm-offset-11 { - margin-left: 91.66666666666666%; - } - .note-editor .col-sm-offset-10 { - margin-left: 83.33333333333334%; - } - .note-editor .col-sm-offset-9 { - margin-left: 75%; - } - .note-editor .col-sm-offset-8 { - margin-left: 66.66666666666666%; - } - .note-editor .col-sm-offset-7 { - margin-left: 58.333333333333336%; - } - .note-editor .col-sm-offset-6 { - margin-left: 50%; - } - .note-editor .col-sm-offset-5 { - margin-left: 41.66666666666667%; - } - .note-editor .col-sm-offset-4 { - margin-left: 33.33333333333333%; - } - .note-editor .col-sm-offset-3 { - margin-left: 25%; - } - .note-editor .col-sm-offset-2 { - margin-left: 16.666666666666664%; - } - .note-editor .col-sm-offset-1 { - margin-left: 8.333333333333332%; - } -} -@media (min-width: 992px) { - .note-editor .container { - width: 970px; - } - .note-editor .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11 { - float: left; - } - .note-editor .col-md-12 { - width: 100%; - } - .note-editor .col-md-11 { - width: 91.66666666666666%; - } - .note-editor .col-md-10 { - width: 83.33333333333334%; - } - .note-editor .col-md-9 { - width: 75%; - } - .note-editor .col-md-8 { - width: 66.66666666666666%; - } - .note-editor .col-md-7 { - width: 58.333333333333336%; - } - .note-editor .col-md-6 { - width: 50%; - } - .note-editor .col-md-5 { - width: 41.66666666666667%; - } - .note-editor .col-md-4 { - width: 33.33333333333333%; - } - .note-editor .col-md-3 { - width: 25%; - } - .note-editor .col-md-2 { - width: 16.666666666666664%; - } - .note-editor .col-md-1 { - width: 8.333333333333332%; - } - .note-editor .col-md-pull-12 { - right: 100%; - } - .note-editor .col-md-pull-11 { - right: 91.66666666666666%; - } - .note-editor .col-md-pull-10 { - right: 83.33333333333334%; - } - .note-editor .col-md-pull-9 { - right: 75%; - } - .note-editor .col-md-pull-8 { - right: 66.66666666666666%; - } - .note-editor .col-md-pull-7 { - right: 58.333333333333336%; - } - .note-editor .col-md-pull-6 { - right: 50%; - } - .note-editor .col-md-pull-5 { - right: 41.66666666666667%; - } - .note-editor .col-md-pull-4 { - right: 33.33333333333333%; - } - .note-editor .col-md-pull-3 { - right: 25%; - } - .note-editor .col-md-pull-2 { - right: 16.666666666666664%; - } - .note-editor .col-md-pull-1 { - right: 8.333333333333332%; - } - .note-editor .col-md-push-12 { - left: 100%; - } - .note-editor .col-md-push-11 { - left: 91.66666666666666%; - } - .note-editor .col-md-push-10 { - left: 83.33333333333334%; - } - .note-editor .col-md-push-9 { - left: 75%; - } - .note-editor .col-md-push-8 { - left: 66.66666666666666%; - } - .note-editor .col-md-push-7 { - left: 58.333333333333336%; - } - .note-editor .col-md-push-6 { - left: 50%; - } - .note-editor .col-md-push-5 { - left: 41.66666666666667%; - } - .note-editor .col-md-push-4 { - left: 33.33333333333333%; - } - .note-editor .col-md-push-3 { - left: 25%; - } - .note-editor .col-md-push-2 { - left: 16.666666666666664%; - } - .note-editor .col-md-push-1 { - left: 8.333333333333332%; - } - .note-editor .col-md-offset-12 { - margin-left: 100%; - } - .note-editor .col-md-offset-11 { - margin-left: 91.66666666666666%; - } - .note-editor .col-md-offset-10 { - margin-left: 83.33333333333334%; - } - .note-editor .col-md-offset-9 { - margin-left: 75%; - } - .note-editor .col-md-offset-8 { - margin-left: 66.66666666666666%; - } - .note-editor .col-md-offset-7 { - margin-left: 58.333333333333336%; - } - .note-editor .col-md-offset-6 { - margin-left: 50%; - } - .note-editor .col-md-offset-5 { - margin-left: 41.66666666666667%; - } - .note-editor .col-md-offset-4 { - margin-left: 33.33333333333333%; - } - .note-editor .col-md-offset-3 { - margin-left: 25%; - } - .note-editor .col-md-offset-2 { - margin-left: 16.666666666666664%; - } - .note-editor .col-md-offset-1 { - margin-left: 8.333333333333332%; - } -} -@media (min-width: 1200px) { - .note-editor .container { - width: 1170px; - } - .note-editor .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11 { - float: left; - } - .note-editor .col-lg-12 { - width: 100%; - } - .note-editor .col-lg-11 { - width: 91.66666666666666%; - } - .note-editor .col-lg-10 { - width: 83.33333333333334%; - } - .note-editor .col-lg-9 { - width: 75%; - } - .note-editor .col-lg-8 { - width: 66.66666666666666%; - } - .note-editor .col-lg-7 { - width: 58.333333333333336%; - } - .note-editor .col-lg-6 { - width: 50%; - } - .note-editor .col-lg-5 { - width: 41.66666666666667%; - } - .note-editor .col-lg-4 { - width: 33.33333333333333%; - } - .note-editor .col-lg-3 { - width: 25%; - } - .note-editor .col-lg-2 { - width: 16.666666666666664%; - } - .note-editor .col-lg-1 { - width: 8.333333333333332%; - } - .note-editor .col-lg-pull-12 { - right: 100%; - } - .note-editor .col-lg-pull-11 { - right: 91.66666666666666%; - } - .note-editor .col-lg-pull-10 { - right: 83.33333333333334%; - } - .note-editor .col-lg-pull-9 { - right: 75%; - } - .note-editor .col-lg-pull-8 { - right: 66.66666666666666%; - } - .note-editor .col-lg-pull-7 { - right: 58.333333333333336%; - } - .note-editor .col-lg-pull-6 { - right: 50%; - } - .note-editor .col-lg-pull-5 { - right: 41.66666666666667%; - } - .note-editor .col-lg-pull-4 { - right: 33.33333333333333%; - } - .note-editor .col-lg-pull-3 { - right: 25%; - } - .note-editor .col-lg-pull-2 { - right: 16.666666666666664%; - } - .note-editor .col-lg-pull-1 { - right: 8.333333333333332%; - } - .note-editor .col-lg-push-12 { - left: 100%; - } - .note-editor .col-lg-push-11 { - left: 91.66666666666666%; - } - .note-editor .col-lg-push-10 { - left: 83.33333333333334%; - } - .note-editor .col-lg-push-9 { - left: 75%; - } - .note-editor .col-lg-push-8 { - left: 66.66666666666666%; - } - .note-editor .col-lg-push-7 { - left: 58.333333333333336%; - } - .note-editor .col-lg-push-6 { - left: 50%; - } - .note-editor .col-lg-push-5 { - left: 41.66666666666667%; - } - .note-editor .col-lg-push-4 { - left: 33.33333333333333%; - } - .note-editor .col-lg-push-3 { - left: 25%; - } - .note-editor .col-lg-push-2 { - left: 16.666666666666664%; - } - .note-editor .col-lg-push-1 { - left: 8.333333333333332%; - } - .note-editor .col-lg-offset-12 { - margin-left: 100%; - } - .note-editor .col-lg-offset-11 { - margin-left: 91.66666666666666%; - } - .note-editor .col-lg-offset-10 { - margin-left: 83.33333333333334%; - } - .note-editor .col-lg-offset-9 { - margin-left: 75%; - } - .note-editor .col-lg-offset-8 { - margin-left: 66.66666666666666%; - } - .note-editor .col-lg-offset-7 { - margin-left: 58.333333333333336%; - } - .note-editor .col-lg-offset-6 { - margin-left: 50%; - } - .note-editor .col-lg-offset-5 { - margin-left: 41.66666666666667%; - } - .note-editor .col-lg-offset-4 { - margin-left: 33.33333333333333%; - } - .note-editor .col-lg-offset-3 { - margin-left: 25%; - } - .note-editor .col-lg-offset-2 { - margin-left: 16.666666666666664%; - } - .note-editor .col-lg-offset-1 { - margin-left: 8.333333333333332%; - } -} -.note-editor table { - max-width: 100%; - background-color: transparent; -} -.note-editor th { - text-align: left; -} -.note-editor .table { - width: 100%; - margin-bottom: 20px; -} -.note-editor .table > thead > tr > th, -.note-editor .table > tbody > tr > th, -.note-editor .table > tfoot > tr > th, -.note-editor .table > thead > tr > td, -.note-editor .table > tbody > tr > td, -.note-editor .table > tfoot > tr > td { - padding: 8px; - line-height: 1.428571429; - vertical-align: top; - border-top: 1px solid #dddddd; -} -.note-editor .table > thead > tr > th { - vertical-align: bottom; - border-bottom: 2px solid #dddddd; -} -.note-editor .table > caption + thead > tr:first-child > th, -.note-editor .table > colgroup + thead > tr:first-child > th, -.note-editor .table > thead:first-child > tr:first-child > th, -.note-editor .table > caption + thead > tr:first-child > td, -.note-editor .table > colgroup + thead > tr:first-child > td, -.note-editor .table > thead:first-child > tr:first-child > td { - border-top: 0; -} -.note-editor .table > tbody + tbody { - border-top: 2px solid #dddddd; -} -.note-editor .table .table { - background-color: #ffffff; -} -.note-editor .table-condensed > thead > tr > th, -.note-editor .table-condensed > tbody > tr > th, -.note-editor .table-condensed > tfoot > tr > th, -.note-editor .table-condensed > thead > tr > td, -.note-editor .table-condensed > tbody > tr > td, -.note-editor .table-condensed > tfoot > tr > td { - padding: 5px; -} -.note-editor .table-bordered { - border: 1px solid #dddddd; -} -.note-editor .table-bordered > thead > tr > th, -.note-editor .table-bordered > tbody > tr > th, -.note-editor .table-bordered > tfoot > tr > th, -.note-editor .table-bordered > thead > tr > td, -.note-editor .table-bordered > tbody > tr > td, -.note-editor .table-bordered > tfoot > tr > td { - border: 1px solid #dddddd; -} -.note-editor .table-bordered > thead > tr > th, -.note-editor .table-bordered > thead > tr > td { - border-bottom-width: 2px; -} -.note-editor .table-striped > tbody > tr:nth-child(odd) > td, -.note-editor .table-striped > tbody > tr:nth-child(odd) > th { - background-color: #f9f9f9; -} -.note-editor .table-hover > tbody > tr:hover > td, -.note-editor .table-hover > tbody > tr:hover > th { - background-color: #f5f5f5; -} -.note-editor table col[class*="col-"] { - float: none; - display: table-column; -} -.note-editor table td[class*="col-"], -.note-editor table th[class*="col-"] { - float: none; - display: table-cell; -} -.note-editor .table > thead > tr > td.active, -.note-editor .table > tbody > tr > td.active, -.note-editor .table > tfoot > tr > td.active, -.note-editor .table > thead > tr > th.active, -.note-editor .table > tbody > tr > th.active, -.note-editor .table > tfoot > tr > th.active, -.note-editor .table > thead > tr.active > td, -.note-editor .table > tbody > tr.active > td, -.note-editor .table > tfoot > tr.active > td, -.note-editor .table > thead > tr.active > th, -.note-editor .table > tbody > tr.active > th, -.note-editor .table > tfoot > tr.active > th { - background-color: #f5f5f5; -} -.note-editor .table > thead > tr > td.success, -.note-editor .table > tbody > tr > td.success, -.note-editor .table > tfoot > tr > td.success, -.note-editor .table > thead > tr > th.success, -.note-editor .table > tbody > tr > th.success, -.note-editor .table > tfoot > tr > th.success, -.note-editor .table > thead > tr.success > td, -.note-editor .table > tbody > tr.success > td, -.note-editor .table > tfoot > tr.success > td, -.note-editor .table > thead > tr.success > th, -.note-editor .table > tbody > tr.success > th, -.note-editor .table > tfoot > tr.success > th { - background-color: #dff0d8; - border-color: #d6e9c6; -} -.note-editor .table-hover > tbody > tr > td.success:hover, -.note-editor .table-hover > tbody > tr > th.success:hover, -.note-editor .table-hover > tbody > tr.success:hover > td, -.note-editor .table-hover > tbody > tr.success:hover > th { - background-color: #d0e9c6; - border-color: #c9e2b3; -} -.note-editor .table > thead > tr > td.danger, -.note-editor .table > tbody > tr > td.danger, -.note-editor .table > tfoot > tr > td.danger, -.note-editor .table > thead > tr > th.danger, -.note-editor .table > tbody > tr > th.danger, -.note-editor .table > tfoot > tr > th.danger, -.note-editor .table > thead > tr.danger > td, -.note-editor .table > tbody > tr.danger > td, -.note-editor .table > tfoot > tr.danger > td, -.note-editor .table > thead > tr.danger > th, -.note-editor .table > tbody > tr.danger > th, -.note-editor .table > tfoot > tr.danger > th { - background-color: #f2dede; - border-color: #ebccd1; -} -.note-editor .table-hover > tbody > tr > td.danger:hover, -.note-editor .table-hover > tbody > tr > th.danger:hover, -.note-editor .table-hover > tbody > tr.danger:hover > td, -.note-editor .table-hover > tbody > tr.danger:hover > th { - background-color: #ebcccc; - border-color: #e4b9c0; -} -.note-editor .table > thead > tr > td.warning, -.note-editor .table > tbody > tr > td.warning, -.note-editor .table > tfoot > tr > td.warning, -.note-editor .table > thead > tr > th.warning, -.note-editor .table > tbody > tr > th.warning, -.note-editor .table > tfoot > tr > th.warning, -.note-editor .table > thead > tr.warning > td, -.note-editor .table > tbody > tr.warning > td, -.note-editor .table > tfoot > tr.warning > td, -.note-editor .table > thead > tr.warning > th, -.note-editor .table > tbody > tr.warning > th, -.note-editor .table > tfoot > tr.warning > th { - background-color: #fcf8e3; - border-color: #faebcc; -} -.note-editor .table-hover > tbody > tr > td.warning:hover, -.note-editor .table-hover > tbody > tr > th.warning:hover, -.note-editor .table-hover > tbody > tr.warning:hover > td, -.note-editor .table-hover > tbody > tr.warning:hover > th { - background-color: #faf2cc; - border-color: #f7e1b5; -} -@media (max-width: 767px) { - .note-editor .table-responsive { - width: 100%; - margin-bottom: 15px; - overflow-y: hidden; - overflow-x: scroll; - -ms-overflow-style: -ms-autohiding-scrollbar; - border: 1px solid #dddddd; - -webkit-overflow-scrolling: touch; - } - .note-editor .table-responsive > .table { - margin-bottom: 0; - } - .note-editor .table-responsive > .table > thead > tr > th, - .note-editor .table-responsive > .table > tbody > tr > th, - .note-editor .table-responsive > .table > tfoot > tr > th, - .note-editor .table-responsive > .table > thead > tr > td, - .note-editor .table-responsive > .table > tbody > tr > td, - .note-editor .table-responsive > .table > tfoot > tr > td { - white-space: nowrap; - } - .note-editor .table-responsive > .table-bordered { - border: 0; - } - .note-editor .table-responsive > .table-bordered > thead > tr > th:first-child, - .note-editor .table-responsive > .table-bordered > tbody > tr > th:first-child, - .note-editor .table-responsive > .table-bordered > tfoot > tr > th:first-child, - .note-editor .table-responsive > .table-bordered > thead > tr > td:first-child, - .note-editor .table-responsive > .table-bordered > tbody > tr > td:first-child, - .note-editor .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; - } - .note-editor .table-responsive > .table-bordered > thead > tr > th:last-child, - .note-editor .table-responsive > .table-bordered > tbody > tr > th:last-child, - .note-editor .table-responsive > .table-bordered > tfoot > tr > th:last-child, - .note-editor .table-responsive > .table-bordered > thead > tr > td:last-child, - .note-editor .table-responsive > .table-bordered > tbody > tr > td:last-child, - .note-editor .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; - } - .note-editor .table-responsive > .table-bordered > tbody > tr:last-child > th, - .note-editor .table-responsive > .table-bordered > tfoot > tr:last-child > th, - .note-editor .table-responsive > .table-bordered > tbody > tr:last-child > td, - .note-editor .table-responsive > .table-bordered > tfoot > tr:last-child > td { - border-bottom: 0; - } -} -.note-editor fieldset { - padding: 0; - margin: 0; - border: 0; -} -.note-editor legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: 20px; - font-size: 21px; - line-height: inherit; - color: #333333; - border: 0; - border-bottom: 1px solid #e5e5e5; -} -.note-editor label { - display: inline-block; - margin-bottom: 5px; - font-weight: bold; -} -.note-editor input[type="search"] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.note-editor input[type="radio"], -.note-editor input[type="checkbox"] { - margin: 4px 0 0; - margin-top: 1px \9; - /* IE8-9 */ - - line-height: normal; -} -.note-editor input[type="file"] { - display: block; -} -.note-editor select[multiple], -.note-editor select[size] { - height: auto; -} -.note-editor select optgroup { - font-size: inherit; - font-style: inherit; - font-family: inherit; -} -.note-editor input[type="file"]:focus, -.note-editor input[type="radio"]:focus, -.note-editor input[type="checkbox"]:focus { - outline: thin dotted #333; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.note-editor input[type="number"]::-webkit-outer-spin-button, -.note-editor input[type="number"]::-webkit-inner-spin-button { - height: auto; -} -.note-editor output { - display: block; - padding-top: 7px; - font-size: 14px; - line-height: 1.428571429; - color: #555555; - vertical-align: middle; -} -.note-editor .form-control:-moz-placeholder { - color: #999999; -} -.note-editor .form-control::-moz-placeholder { - color: #999999; -} -.note-editor .form-control:-ms-input-placeholder { - color: #999999; -} -.note-editor .form-control::-webkit-input-placeholder { - color: #999999; -} -.note-editor .form-control { - display: block; - width: 100%; - height: 34px; - padding: 6px 12px; - font-size: 14px; - line-height: 1.428571429; - color: #555555; - vertical-align: middle; - background-color: #ffffff; - background-image: none; - border: 1px solid #cccccc; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; -} -.note-editor .form-control:focus { - border-color: #66afe9; - outline: 0; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); -} -.note-editor .form-control[disabled], -.note-editor .form-control[readonly], -fieldset[disabled] .note-editor .form-control { - cursor: not-allowed; - background-color: #eeeeee; -} -textarea.note-editor .form-control { - height: auto; -} -.note-editor .form-group { - margin-bottom: 15px; -} -.note-editor .radio, -.note-editor .checkbox { - display: block; - min-height: 20px; - margin-top: 10px; - margin-bottom: 10px; - padding-left: 20px; - vertical-align: middle; -} -.note-editor .radio label, -.note-editor .checkbox label { - display: inline; - margin-bottom: 0; - font-weight: normal; - cursor: pointer; -} -.note-editor .radio input[type="radio"], -.note-editor .radio-inline input[type="radio"], -.note-editor .checkbox input[type="checkbox"], -.note-editor .checkbox-inline input[type="checkbox"] { - float: left; - margin-left: -20px; -} -.note-editor .radio + .radio, -.note-editor .checkbox + .checkbox { - margin-top: -5px; -} -.note-editor .radio-inline, -.note-editor .checkbox-inline { - display: inline-block; - padding-left: 20px; - margin-bottom: 0; - vertical-align: middle; - font-weight: normal; - cursor: pointer; -} -.note-editor .radio-inline + .radio-inline, -.note-editor .checkbox-inline + .checkbox-inline { - margin-top: 0; - margin-left: 10px; -} -.note-editor input[type="radio"][disabled], -.note-editor input[type="checkbox"][disabled], -.note-editor .radio[disabled], -.note-editor .radio-inline[disabled], -.note-editor .checkbox[disabled], -.note-editor .checkbox-inline[disabled], -fieldset[disabled] .note-editor input[type="radio"], -fieldset[disabled] .note-editor input[type="checkbox"], -fieldset[disabled] .note-editor .radio, -fieldset[disabled] .note-editor .radio-inline, -fieldset[disabled] .note-editor .checkbox, -fieldset[disabled] .note-editor .checkbox-inline { - cursor: not-allowed; -} -.note-editor .input-sm { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -select.note-editor .input-sm { - height: 30px; - line-height: 30px; -} -textarea.note-editor .input-sm { - height: auto; -} -.note-editor .input-lg { - height: 45px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.33; - border-radius: 6px; -} -select.note-editor .input-lg { - height: 45px; - line-height: 45px; -} -textarea.note-editor .input-lg { - height: auto; -} -.note-editor .has-warning .help-block, -.note-editor .has-warning .control-label { - color: #c09853; -} -.note-editor .has-warning .form-control { - border-color: #c09853; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.note-editor .has-warning .form-control:focus { - border-color: #a47e3c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; -} -.note-editor .has-warning .input-group-addon { - color: #c09853; - border-color: #c09853; - background-color: #fcf8e3; -} -.note-editor .has-error .help-block, -.note-editor .has-error .control-label { - color: #b94a48; -} -.note-editor .has-error .form-control { - border-color: #b94a48; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.note-editor .has-error .form-control:focus { - border-color: #953b39; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; -} -.note-editor .has-error .input-group-addon { - color: #b94a48; - border-color: #b94a48; - background-color: #f2dede; -} -.note-editor .has-success .help-block, -.note-editor .has-success .control-label { - color: #468847; -} -.note-editor .has-success .form-control { - border-color: #468847; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.note-editor .has-success .form-control:focus { - border-color: #356635; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; -} -.note-editor .has-success .input-group-addon { - color: #468847; - border-color: #468847; - background-color: #dff0d8; -} -.note-editor .form-control-static { - margin-bottom: 0; -} -.note-editor .help-block { - display: block; - margin-top: 5px; - margin-bottom: 10px; - color: #737373; -} -@media (min-width: 768px) { - .note-editor .form-inline .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .note-editor .form-inline .form-control { - display: inline-block; - } - .note-editor .form-inline .radio, - .note-editor .form-inline .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - padding-left: 0; - } - .note-editor .form-inline .radio input[type="radio"], - .note-editor .form-inline .checkbox input[type="checkbox"] { - float: none; - margin-left: 0; - } -} -.note-editor .form-horizontal .control-label, -.note-editor .form-horizontal .radio, -.note-editor .form-horizontal .checkbox, -.note-editor .form-horizontal .radio-inline, -.note-editor .form-horizontal .checkbox-inline { - margin-top: 0; - margin-bottom: 0; - padding-top: 7px; -} -.note-editor .form-horizontal .form-group { - margin-left: -15px; - margin-right: -15px; -} -.note-editor .form-horizontal .form-group:before, -.note-editor .form-horizontal .form-group:after { - content: " "; - /* 1 */ - - display: table; - /* 2 */ - -} -.note-editor .form-horizontal .form-group:after { - clear: both; -} -.note-editor .form-horizontal .form-group:before, -.note-editor .form-horizontal .form-group:after { - content: " "; - /* 1 */ - - display: table; - /* 2 */ - -} -.note-editor .form-horizontal .form-group:after { - clear: both; -} -.note-editor .form-horizontal .form-control-static { - padding-top: 7px; -} -@media (min-width: 768px) { - .note-editor .form-horizontal .control-label { - text-align: right; - } -} -.note-editor .btn { - display: inline-block; - margin-bottom: 0; - font-weight: normal; - text-align: center; - vertical-align: middle; - cursor: pointer; - background-image: none; - border: 1px solid transparent; - white-space: nowrap; - padding: 6px 12px; - font-size: 14px; - line-height: 1.428571429; - border-radius: 4px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - -o-user-select: none; - user-select: none; -} -.note-editor .btn:focus { - outline: thin dotted #333; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.note-editor .btn:hover, -.note-editor .btn:focus { - color: #333333; - text-decoration: none; -} -.note-editor .btn:active, -.note-editor .btn.active { - outline: 0; - background-image: none; - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -} -.note-editor .btn.disabled, -.note-editor .btn[disabled], -fieldset[disabled] .note-editor .btn { - cursor: not-allowed; - pointer-events: none; - opacity: 0.65; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - box-shadow: none; -} -.note-editor .btn-default { - color: #333333; - background-color: #ffffff; - border-color: #cccccc; -} -.note-editor .btn-default:hover, -.note-editor .btn-default:focus, -.note-editor .btn-default:active, -.note-editor .btn-default.active, -.open .dropdown-toggle.note-editor .btn-default { - color: #333333; - background-color: #ebebeb; - border-color: #adadad; -} -.note-editor .btn-default:active, -.note-editor .btn-default.active, -.open .dropdown-toggle.note-editor .btn-default { - background-image: none; -} -.note-editor .btn-default.disabled, -.note-editor .btn-default[disabled], -fieldset[disabled] .note-editor .btn-default, -.note-editor .btn-default.disabled:hover, -.note-editor .btn-default[disabled]:hover, -fieldset[disabled] .note-editor .btn-default:hover, -.note-editor .btn-default.disabled:focus, -.note-editor .btn-default[disabled]:focus, -fieldset[disabled] .note-editor .btn-default:focus, -.note-editor .btn-default.disabled:active, -.note-editor .btn-default[disabled]:active, -fieldset[disabled] .note-editor .btn-default:active, -.note-editor .btn-default.disabled.active, -.note-editor .btn-default[disabled].active, -fieldset[disabled] .note-editor .btn-default.active { - background-color: #ffffff; - border-color: #cccccc; -} -.note-editor .btn-primary { - color: #ffffff; - background-color: #428bca; - border-color: #357ebd; -} -.note-editor .btn-primary:hover, -.note-editor .btn-primary:focus, -.note-editor .btn-primary:active, -.note-editor .btn-primary.active, -.open .dropdown-toggle.note-editor .btn-primary { - color: #ffffff; - background-color: #3276b1; - border-color: #285e8e; -} -.note-editor .btn-primary:active, -.note-editor .btn-primary.active, -.open .dropdown-toggle.note-editor .btn-primary { - background-image: none; -} -.note-editor .btn-primary.disabled, -.note-editor .btn-primary[disabled], -fieldset[disabled] .note-editor .btn-primary, -.note-editor .btn-primary.disabled:hover, -.note-editor .btn-primary[disabled]:hover, -fieldset[disabled] .note-editor .btn-primary:hover, -.note-editor .btn-primary.disabled:focus, -.note-editor .btn-primary[disabled]:focus, -fieldset[disabled] .note-editor .btn-primary:focus, -.note-editor .btn-primary.disabled:active, -.note-editor .btn-primary[disabled]:active, -fieldset[disabled] .note-editor .btn-primary:active, -.note-editor .btn-primary.disabled.active, -.note-editor .btn-primary[disabled].active, -fieldset[disabled] .note-editor .btn-primary.active { - background-color: #428bca; - border-color: #357ebd; -} -.note-editor .btn-warning { - color: #ffffff; - background-color: #f0ad4e; - border-color: #eea236; -} -.note-editor .btn-warning:hover, -.note-editor .btn-warning:focus, -.note-editor .btn-warning:active, -.note-editor .btn-warning.active, -.open .dropdown-toggle.note-editor .btn-warning { - color: #ffffff; - background-color: #ed9c28; - border-color: #d58512; -} -.note-editor .btn-warning:active, -.note-editor .btn-warning.active, -.open .dropdown-toggle.note-editor .btn-warning { - background-image: none; -} -.note-editor .btn-warning.disabled, -.note-editor .btn-warning[disabled], -fieldset[disabled] .note-editor .btn-warning, -.note-editor .btn-warning.disabled:hover, -.note-editor .btn-warning[disabled]:hover, -fieldset[disabled] .note-editor .btn-warning:hover, -.note-editor .btn-warning.disabled:focus, -.note-editor .btn-warning[disabled]:focus, -fieldset[disabled] .note-editor .btn-warning:focus, -.note-editor .btn-warning.disabled:active, -.note-editor .btn-warning[disabled]:active, -fieldset[disabled] .note-editor .btn-warning:active, -.note-editor .btn-warning.disabled.active, -.note-editor .btn-warning[disabled].active, -fieldset[disabled] .note-editor .btn-warning.active { - background-color: #f0ad4e; - border-color: #eea236; -} -.note-editor .btn-danger { - color: #ffffff; - background-color: #d9534f; - border-color: #d43f3a; -} -.note-editor .btn-danger:hover, -.note-editor .btn-danger:focus, -.note-editor .btn-danger:active, -.note-editor .btn-danger.active, -.open .dropdown-toggle.note-editor .btn-danger { - color: #ffffff; - background-color: #d2322d; - border-color: #ac2925; -} -.note-editor .btn-danger:active, -.note-editor .btn-danger.active, -.open .dropdown-toggle.note-editor .btn-danger { - background-image: none; -} -.note-editor .btn-danger.disabled, -.note-editor .btn-danger[disabled], -fieldset[disabled] .note-editor .btn-danger, -.note-editor .btn-danger.disabled:hover, -.note-editor .btn-danger[disabled]:hover, -fieldset[disabled] .note-editor .btn-danger:hover, -.note-editor .btn-danger.disabled:focus, -.note-editor .btn-danger[disabled]:focus, -fieldset[disabled] .note-editor .btn-danger:focus, -.note-editor .btn-danger.disabled:active, -.note-editor .btn-danger[disabled]:active, -fieldset[disabled] .note-editor .btn-danger:active, -.note-editor .btn-danger.disabled.active, -.note-editor .btn-danger[disabled].active, -fieldset[disabled] .note-editor .btn-danger.active { - background-color: #d9534f; - border-color: #d43f3a; -} -.note-editor .btn-success { - color: #ffffff; - background-color: #5cb85c; - border-color: #4cae4c; -} -.note-editor .btn-success:hover, -.note-editor .btn-success:focus, -.note-editor .btn-success:active, -.note-editor .btn-success.active, -.open .dropdown-toggle.note-editor .btn-success { - color: #ffffff; - background-color: #47a447; - border-color: #398439; -} -.note-editor .btn-success:active, -.note-editor .btn-success.active, -.open .dropdown-toggle.note-editor .btn-success { - background-image: none; -} -.note-editor .btn-success.disabled, -.note-editor .btn-success[disabled], -fieldset[disabled] .note-editor .btn-success, -.note-editor .btn-success.disabled:hover, -.note-editor .btn-success[disabled]:hover, -fieldset[disabled] .note-editor .btn-success:hover, -.note-editor .btn-success.disabled:focus, -.note-editor .btn-success[disabled]:focus, -fieldset[disabled] .note-editor .btn-success:focus, -.note-editor .btn-success.disabled:active, -.note-editor .btn-success[disabled]:active, -fieldset[disabled] .note-editor .btn-success:active, -.note-editor .btn-success.disabled.active, -.note-editor .btn-success[disabled].active, -fieldset[disabled] .note-editor .btn-success.active { - background-color: #5cb85c; - border-color: #4cae4c; -} -.note-editor .btn-info { - color: #ffffff; - background-color: #5bc0de; - border-color: #46b8da; -} -.note-editor .btn-info:hover, -.note-editor .btn-info:focus, -.note-editor .btn-info:active, -.note-editor .btn-info.active, -.open .dropdown-toggle.note-editor .btn-info { - color: #ffffff; - background-color: #39b3d7; - border-color: #269abc; -} -.note-editor .btn-info:active, -.note-editor .btn-info.active, -.open .dropdown-toggle.note-editor .btn-info { - background-image: none; -} -.note-editor .btn-info.disabled, -.note-editor .btn-info[disabled], -fieldset[disabled] .note-editor .btn-info, -.note-editor .btn-info.disabled:hover, -.note-editor .btn-info[disabled]:hover, -fieldset[disabled] .note-editor .btn-info:hover, -.note-editor .btn-info.disabled:focus, -.note-editor .btn-info[disabled]:focus, -fieldset[disabled] .note-editor .btn-info:focus, -.note-editor .btn-info.disabled:active, -.note-editor .btn-info[disabled]:active, -fieldset[disabled] .note-editor .btn-info:active, -.note-editor .btn-info.disabled.active, -.note-editor .btn-info[disabled].active, -fieldset[disabled] .note-editor .btn-info.active { - background-color: #5bc0de; - border-color: #46b8da; -} -.note-editor .btn-link { - color: #428bca; - font-weight: normal; - cursor: pointer; - border-radius: 0; -} -.note-editor .btn-link, -.note-editor .btn-link:active, -.note-editor .btn-link[disabled], -fieldset[disabled] .note-editor .btn-link { - background-color: transparent; - -webkit-box-shadow: none; - box-shadow: none; -} -.note-editor .btn-link, -.note-editor .btn-link:hover, -.note-editor .btn-link:focus, -.note-editor .btn-link:active { - border-color: transparent; -} -.note-editor .btn-link:hover, -.note-editor .btn-link:focus { - color: #2a6496; - text-decoration: underline; - background-color: transparent; -} -.note-editor .btn-link[disabled]:hover, -fieldset[disabled] .note-editor .btn-link:hover, -.note-editor .btn-link[disabled]:focus, -fieldset[disabled] .note-editor .btn-link:focus { - color: #999999; - text-decoration: none; -} -.note-editor .btn-lg { - padding: 10px 16px; - font-size: 18px; - line-height: 1.33; - border-radius: 6px; -} -.note-editor .btn-sm, -.note-editor .btn-xs { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.note-editor .btn-xs { - padding: 1px 5px; -} -.note-editor .btn-block { - display: block; - width: 100%; - padding-left: 0; - padding-right: 0; -} -.note-editor .btn-block + .btn-block { - margin-top: 5px; -} -.note-editor input[type="submit"].btn-block, -.note-editor input[type="reset"].btn-block, -.note-editor input[type="button"].btn-block { - width: 100%; -} -.note-editor .fade { - opacity: 0; - -webkit-transition: opacity 0.15s linear; - transition: opacity 0.15s linear; -} -.note-editor .fade.in { - opacity: 1; -} -.note-editor .collapse { - display: none; -} -.note-editor .collapse.in { - display: block; -} -.note-editor .collapsing { - position: relative; - height: 0; - overflow: hidden; - -webkit-transition: height 0.35s ease; - transition: height 0.35s ease; -} -@font-face { - font-family: 'Glyphicons Halflings'; - src: url('../fonts/glyphicons-halflings-regular.eot'); - src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); -} -.note-editor .glyphicon { - position: relative; - top: 1px; - display: inline-block; - font-family: 'Glyphicons Halflings'; - font-style: normal; - font-weight: normal; - line-height: 1; - -webkit-font-smoothing: antialiased; -} -.note-editor .glyphicon:empty { - width: 1em; -} -.note-editor .glyphicon-asterisk:before { - content: "\2a"; -} -.note-editor .glyphicon-plus:before { - content: "\2b"; -} -.note-editor .glyphicon-euro:before { - content: "\20ac"; -} -.note-editor .glyphicon-minus:before { - content: "\2212"; -} -.note-editor .glyphicon-cloud:before { - content: "\2601"; -} -.note-editor .glyphicon-envelope:before { - content: "\2709"; -} -.note-editor .glyphicon-pencil:before { - content: "\270f"; -} -.note-editor .glyphicon-glass:before { - content: "\e001"; -} -.note-editor .glyphicon-music:before { - content: "\e002"; -} -.note-editor .glyphicon-search:before { - content: "\e003"; -} -.note-editor .glyphicon-heart:before { - content: "\e005"; -} -.note-editor .glyphicon-star:before { - content: "\e006"; -} -.note-editor .glyphicon-star-empty:before { - content: "\e007"; -} -.note-editor .glyphicon-user:before { - content: "\e008"; -} -.note-editor .glyphicon-film:before { - content: "\e009"; -} -.note-editor .glyphicon-th-large:before { - content: "\e010"; -} -.note-editor .glyphicon-th:before { - content: "\e011"; -} -.note-editor .glyphicon-th-list:before { - content: "\e012"; -} -.note-editor .glyphicon-ok:before { - content: "\e013"; -} -.note-editor .glyphicon-remove:before { - content: "\e014"; -} -.note-editor .glyphicon-zoom-in:before { - content: "\e015"; -} -.note-editor .glyphicon-zoom-out:before { - content: "\e016"; -} -.note-editor .glyphicon-off:before { - content: "\e017"; -} -.note-editor .glyphicon-signal:before { - content: "\e018"; -} -.note-editor .glyphicon-cog:before { - content: "\e019"; -} -.note-editor .glyphicon-trash:before { - content: "\e020"; -} -.note-editor .glyphicon-home:before { - content: "\e021"; -} -.note-editor .glyphicon-file:before { - content: "\e022"; -} -.note-editor .glyphicon-time:before { - content: "\e023"; -} -.note-editor .glyphicon-road:before { - content: "\e024"; -} -.note-editor .glyphicon-download-alt:before { - content: "\e025"; -} -.note-editor .glyphicon-download:before { - content: "\e026"; -} -.note-editor .glyphicon-upload:before { - content: "\e027"; -} -.note-editor .glyphicon-inbox:before { - content: "\e028"; -} -.note-editor .glyphicon-play-circle:before { - content: "\e029"; -} -.note-editor .glyphicon-repeat:before { - content: "\e030"; -} -.note-editor .glyphicon-refresh:before { - content: "\e031"; -} -.note-editor .glyphicon-list-alt:before { - content: "\e032"; -} -.note-editor .glyphicon-lock:before { - content: "\e033"; -} -.note-editor .glyphicon-flag:before { - content: "\e034"; -} -.note-editor .glyphicon-headphones:before { - content: "\e035"; -} -.note-editor .glyphicon-volume-off:before { - content: "\e036"; -} -.note-editor .glyphicon-volume-down:before { - content: "\e037"; -} -.note-editor .glyphicon-volume-up:before { - content: "\e038"; -} -.note-editor .glyphicon-qrcode:before { - content: "\e039"; -} -.note-editor .glyphicon-barcode:before { - content: "\e040"; -} -.note-editor .glyphicon-tag:before { - content: "\e041"; -} -.note-editor .glyphicon-tags:before { - content: "\e042"; -} -.note-editor .glyphicon-book:before { - content: "\e043"; -} -.note-editor .glyphicon-bookmark:before { - content: "\e044"; -} -.note-editor .glyphicon-print:before { - content: "\e045"; -} -.note-editor .glyphicon-camera:before { - content: "\e046"; -} -.note-editor .glyphicon-font:before { - content: "\e047"; -} -.note-editor .glyphicon-bold:before { - content: "\e048"; -} -.note-editor .glyphicon-italic:before { - content: "\e049"; -} -.note-editor .glyphicon-text-height:before { - content: "\e050"; -} -.note-editor .glyphicon-text-width:before { - content: "\e051"; -} -.note-editor .glyphicon-align-left:before { - content: "\e052"; -} -.note-editor .glyphicon-align-center:before { - content: "\e053"; -} -.note-editor .glyphicon-align-right:before { - content: "\e054"; -} -.note-editor .glyphicon-align-justify:before { - content: "\e055"; -} -.note-editor .glyphicon-list:before { - content: "\e056"; -} -.note-editor .glyphicon-indent-left:before { - content: "\e057"; -} -.note-editor .glyphicon-indent-right:before { - content: "\e058"; -} -.note-editor .glyphicon-facetime-video:before { - content: "\e059"; -} -.note-editor .glyphicon-picture:before { - content: "\e060"; -} -.note-editor .glyphicon-map-marker:before { - content: "\e062"; -} -.note-editor .glyphicon-adjust:before { - content: "\e063"; -} -.note-editor .glyphicon-tint:before { - content: "\e064"; -} -.note-editor .glyphicon-edit:before { - content: "\e065"; -} -.note-editor .glyphicon-share:before { - content: "\e066"; -} -.note-editor .glyphicon-check:before { - content: "\e067"; -} -.note-editor .glyphicon-move:before { - content: "\e068"; -} -.note-editor .glyphicon-step-backward:before { - content: "\e069"; -} -.note-editor .glyphicon-fast-backward:before { - content: "\e070"; -} -.note-editor .glyphicon-backward:before { - content: "\e071"; -} -.note-editor .glyphicon-play:before { - content: "\e072"; -} -.note-editor .glyphicon-pause:before { - content: "\e073"; -} -.note-editor .glyphicon-stop:before { - content: "\e074"; -} -.note-editor .glyphicon-forward:before { - content: "\e075"; -} -.note-editor .glyphicon-fast-forward:before { - content: "\e076"; -} -.note-editor .glyphicon-step-forward:before { - content: "\e077"; -} -.note-editor .glyphicon-eject:before { - content: "\e078"; -} -.note-editor .glyphicon-chevron-left:before { - content: "\e079"; -} -.note-editor .glyphicon-chevron-right:before { - content: "\e080"; -} -.note-editor .glyphicon-plus-sign:before { - content: "\e081"; -} -.note-editor .glyphicon-minus-sign:before { - content: "\e082"; -} -.note-editor .glyphicon-remove-sign:before { - content: "\e083"; -} -.note-editor .glyphicon-ok-sign:before { - content: "\e084"; -} -.note-editor .glyphicon-question-sign:before { - content: "\e085"; -} -.note-editor .glyphicon-info-sign:before { - content: "\e086"; -} -.note-editor .glyphicon-screenshot:before { - content: "\e087"; -} -.note-editor .glyphicon-remove-circle:before { - content: "\e088"; -} -.note-editor .glyphicon-ok-circle:before { - content: "\e089"; -} -.note-editor .glyphicon-ban-circle:before { - content: "\e090"; -} -.note-editor .glyphicon-arrow-left:before { - content: "\e091"; -} -.note-editor .glyphicon-arrow-right:before { - content: "\e092"; -} -.note-editor .glyphicon-arrow-up:before { - content: "\e093"; -} -.note-editor .glyphicon-arrow-down:before { - content: "\e094"; -} -.note-editor .glyphicon-share-alt:before { - content: "\e095"; -} -.note-editor .glyphicon-resize-full:before { - content: "\e096"; -} -.note-editor .glyphicon-resize-small:before { - content: "\e097"; -} -.note-editor .glyphicon-exclamation-sign:before { - content: "\e101"; -} -.note-editor .glyphicon-gift:before { - content: "\e102"; -} -.note-editor .glyphicon-leaf:before { - content: "\e103"; -} -.note-editor .glyphicon-fire:before { - content: "\e104"; -} -.note-editor .glyphicon-eye-open:before { - content: "\e105"; -} -.note-editor .glyphicon-eye-close:before { - content: "\e106"; -} -.note-editor .glyphicon-warning-sign:before { - content: "\e107"; -} -.note-editor .glyphicon-plane:before { - content: "\e108"; -} -.note-editor .glyphicon-calendar:before { - content: "\e109"; -} -.note-editor .glyphicon-random:before { - content: "\e110"; -} -.note-editor .glyphicon-comment:before { - content: "\e111"; -} -.note-editor .glyphicon-magnet:before { - content: "\e112"; -} -.note-editor .glyphicon-chevron-up:before { - content: "\e113"; -} -.note-editor .glyphicon-chevron-down:before { - content: "\e114"; -} -.note-editor .glyphicon-retweet:before { - content: "\e115"; -} -.note-editor .glyphicon-shopping-cart:before { - content: "\e116"; -} -.note-editor .glyphicon-folder-close:before { - content: "\e117"; -} -.note-editor .glyphicon-folder-open:before { - content: "\e118"; -} -.note-editor .glyphicon-resize-vertical:before { - content: "\e119"; -} -.note-editor .glyphicon-resize-horizontal:before { - content: "\e120"; -} -.note-editor .glyphicon-hdd:before { - content: "\e121"; -} -.note-editor .glyphicon-bullhorn:before { - content: "\e122"; -} -.note-editor .glyphicon-bell:before { - content: "\e123"; -} -.note-editor .glyphicon-certificate:before { - content: "\e124"; -} -.note-editor .glyphicon-thumbs-up:before { - content: "\e125"; -} -.note-editor .glyphicon-thumbs-down:before { - content: "\e126"; -} -.note-editor .glyphicon-hand-right:before { - content: "\e127"; -} -.note-editor .glyphicon-hand-left:before { - content: "\e128"; -} -.note-editor .glyphicon-hand-up:before { - content: "\e129"; -} -.note-editor .glyphicon-hand-down:before { - content: "\e130"; -} -.note-editor .glyphicon-circle-arrow-right:before { - content: "\e131"; -} -.note-editor .glyphicon-circle-arrow-left:before { - content: "\e132"; -} -.note-editor .glyphicon-circle-arrow-up:before { - content: "\e133"; -} -.note-editor .glyphicon-circle-arrow-down:before { - content: "\e134"; -} -.note-editor .glyphicon-globe:before { - content: "\e135"; -} -.note-editor .glyphicon-wrench:before { - content: "\e136"; -} -.note-editor .glyphicon-tasks:before { - content: "\e137"; -} -.note-editor .glyphicon-filter:before { - content: "\e138"; -} -.note-editor .glyphicon-briefcase:before { - content: "\e139"; -} -.note-editor .glyphicon-fullscreen:before { - content: "\e140"; -} -.note-editor .glyphicon-dashboard:before { - content: "\e141"; -} -.note-editor .glyphicon-paperclip:before { - content: "\e142"; -} -.note-editor .glyphicon-heart-empty:before { - content: "\e143"; -} -.note-editor .glyphicon-link:before { - content: "\e144"; -} -.note-editor .glyphicon-phone:before { - content: "\e145"; -} -.note-editor .glyphicon-pushpin:before { - content: "\e146"; -} -.note-editor .glyphicon-usd:before { - content: "\e148"; -} -.note-editor .glyphicon-gbp:before { - content: "\e149"; -} -.note-editor .glyphicon-sort:before { - content: "\e150"; -} -.note-editor .glyphicon-sort-by-alphabet:before { - content: "\e151"; -} -.note-editor .glyphicon-sort-by-alphabet-alt:before { - content: "\e152"; -} -.note-editor .glyphicon-sort-by-order:before { - content: "\e153"; -} -.note-editor .glyphicon-sort-by-order-alt:before { - content: "\e154"; -} -.note-editor .glyphicon-sort-by-attributes:before { - content: "\e155"; -} -.note-editor .glyphicon-sort-by-attributes-alt:before { - content: "\e156"; -} -.note-editor .glyphicon-unchecked:before { - content: "\e157"; -} -.note-editor .glyphicon-expand:before { - content: "\e158"; -} -.note-editor .glyphicon-collapse-down:before { - content: "\e159"; -} -.note-editor .glyphicon-collapse-up:before { - content: "\e160"; -} -.note-editor .glyphicon-log-in:before { - content: "\e161"; -} -.note-editor .glyphicon-flash:before { - content: "\e162"; -} -.note-editor .glyphicon-log-out:before { - content: "\e163"; -} -.note-editor .glyphicon-new-window:before { - content: "\e164"; -} -.note-editor .glyphicon-record:before { - content: "\e165"; -} -.note-editor .glyphicon-save:before { - content: "\e166"; -} -.note-editor .glyphicon-open:before { - content: "\e167"; -} -.note-editor .glyphicon-saved:before { - content: "\e168"; -} -.note-editor .glyphicon-import:before { - content: "\e169"; -} -.note-editor .glyphicon-export:before { - content: "\e170"; -} -.note-editor .glyphicon-send:before { - content: "\e171"; -} -.note-editor .glyphicon-floppy-disk:before { - content: "\e172"; -} -.note-editor .glyphicon-floppy-saved:before { - content: "\e173"; -} -.note-editor .glyphicon-floppy-remove:before { - content: "\e174"; -} -.note-editor .glyphicon-floppy-save:before { - content: "\e175"; -} -.note-editor .glyphicon-floppy-open:before { - content: "\e176"; -} -.note-editor .glyphicon-credit-card:before { - content: "\e177"; -} -.note-editor .glyphicon-transfer:before { - content: "\e178"; -} -.note-editor .glyphicon-cutlery:before { - content: "\e179"; -} -.note-editor .glyphicon-header:before { - content: "\e180"; -} -.note-editor .glyphicon-compressed:before { - content: "\e181"; -} -.note-editor .glyphicon-earphone:before { - content: "\e182"; -} -.note-editor .glyphicon-phone-alt:before { - content: "\e183"; -} -.note-editor .glyphicon-tower:before { - content: "\e184"; -} -.note-editor .glyphicon-stats:before { - content: "\e185"; -} -.note-editor .glyphicon-sd-video:before { - content: "\e186"; -} -.note-editor .glyphicon-hd-video:before { - content: "\e187"; -} -.note-editor .glyphicon-subtitles:before { - content: "\e188"; -} -.note-editor .glyphicon-sound-stereo:before { - content: "\e189"; -} -.note-editor .glyphicon-sound-dolby:before { - content: "\e190"; -} -.note-editor .glyphicon-sound-5-1:before { - content: "\e191"; -} -.note-editor .glyphicon-sound-6-1:before { - content: "\e192"; -} -.note-editor .glyphicon-sound-7-1:before { - content: "\e193"; -} -.note-editor .glyphicon-copyright-mark:before { - content: "\e194"; -} -.note-editor .glyphicon-registration-mark:before { - content: "\e195"; -} -.note-editor .glyphicon-cloud-download:before { - content: "\e197"; -} -.note-editor .glyphicon-cloud-upload:before { - content: "\e198"; -} -.note-editor .glyphicon-tree-conifer:before { - content: "\e199"; -} -.note-editor .glyphicon-tree-deciduous:before { - content: "\e200"; -} -.note-editor .caret { - display: inline-block; - width: 0; - height: 0; - margin-left: 2px; - vertical-align: middle; - border-top: 4px solid #000000; - border-right: 4px solid transparent; - border-left: 4px solid transparent; - border-bottom: 0 dotted; -} -.note-editor .dropdown { - position: relative; -} -.note-editor .dropdown-toggle:focus { - outline: 0; -} -.note-editor .dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 160px; - padding: 5px 0; - margin: 2px 0 0; - list-style: none; - font-size: 14px; - background-color: #ffffff; - border: 1px solid #cccccc; - border: 1px solid rgba(0, 0, 0, 0.15); - border-radius: 4px; - -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); - box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); - background-clip: padding-box; -} -.note-editor .dropdown-menu.pull-right { - right: 0; - left: auto; -} -.note-editor .dropdown-menu .divider { - height: 1px; - margin: 9px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.note-editor .dropdown-menu > li > a { - display: block; - padding: 3px 20px; - clear: both; - font-weight: normal; - line-height: 1.428571429; - color: #333333; - white-space: nowrap; -} -.note-editor .dropdown-menu > li > a:hover, -.note-editor .dropdown-menu > li > a:focus { - text-decoration: none; - color: #262626; - background-color: #f5f5f5; -} -.note-editor .dropdown-menu > .active > a, -.note-editor .dropdown-menu > .active > a:hover, -.note-editor .dropdown-menu > .active > a:focus { - color: #ffffff; - text-decoration: none; - outline: 0; - background-color: #428bca; -} -.note-editor .dropdown-menu > .disabled > a, -.note-editor .dropdown-menu > .disabled > a:hover, -.note-editor .dropdown-menu > .disabled > a:focus { - color: #999999; -} -.note-editor .dropdown-menu > .disabled > a:hover, -.note-editor .dropdown-menu > .disabled > a:focus { - text-decoration: none; - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - cursor: not-allowed; -} -.note-editor .open > .dropdown-menu { - display: block; -} -.note-editor .open > a { - outline: 0; -} -.note-editor .dropdown-header { - display: block; - padding: 3px 20px; - font-size: 12px; - line-height: 1.428571429; - color: #999999; -} -.note-editor .dropdown-backdrop { - position: fixed; - left: 0; - right: 0; - bottom: 0; - top: 0; - z-index: 990; -} -.note-editor .pull-right > .dropdown-menu { - right: 0; - left: auto; -} -.note-editor .dropup .caret, -.note-editor .navbar-fixed-bottom .dropdown .caret { - border-top: 0 dotted; - border-bottom: 4px solid #000000; - content: ""; -} -.note-editor .dropup .dropdown-menu, -.note-editor .navbar-fixed-bottom .dropdown .dropdown-menu { - top: auto; - bottom: 100%; - margin-bottom: 1px; -} -@media (min-width: 768px) { - .note-editor .navbar-right .dropdown-menu { - right: 0; - left: auto; - } -} -.btn-default .note-editor .caret { - border-top-color: #333333; -} -.btn-primary .note-editor .caret, -.btn-success .note-editor .caret, -.btn-warning .note-editor .caret, -.btn-danger .note-editor .caret, -.btn-info .note-editor .caret { - border-top-color: #fff; -} -.note-editor .dropup .btn-default .caret { - border-bottom-color: #333333; -} -.note-editor .dropup .btn-primary .caret, -.note-editor .dropup .btn-success .caret, -.note-editor .dropup .btn-warning .caret, -.note-editor .dropup .btn-danger .caret, -.note-editor .dropup .btn-info .caret { - border-bottom-color: #fff; -} -.note-editor .btn-group, -.note-editor .btn-group-vertical { - position: relative; - display: inline-block; - vertical-align: middle; -} -.note-editor .btn-group > .btn, -.note-editor .btn-group-vertical > .btn { - position: relative; - float: left; -} -.note-editor .btn-group > .btn:hover, -.note-editor .btn-group-vertical > .btn:hover, -.note-editor .btn-group > .btn:focus, -.note-editor .btn-group-vertical > .btn:focus, -.note-editor .btn-group > .btn:active, -.note-editor .btn-group-vertical > .btn:active, -.note-editor .btn-group > .btn.active, -.note-editor .btn-group-vertical > .btn.active { - z-index: 2; -} -.note-editor .btn-group > .btn:focus, -.note-editor .btn-group-vertical > .btn:focus { - outline: none; -} -.note-editor .btn-group .btn + .btn, -.note-editor .btn-group .btn + .btn-group, -.note-editor .btn-group .btn-group + .btn, -.note-editor .btn-group .btn-group + .btn-group { - margin-left: -1px; -} -.note-editor .btn-toolbar:before, -.note-editor .btn-toolbar:after { - content: " "; - /* 1 */ - - display: table; - /* 2 */ - -} -.note-editor .btn-toolbar:after { - clear: both; -} -.note-editor .btn-toolbar:before, -.note-editor .btn-toolbar:after { - content: " "; - /* 1 */ - - display: table; - /* 2 */ - -} -.note-editor .btn-toolbar:after { - clear: both; -} -.note-editor .btn-toolbar .btn-group { - float: left; -} -.note-editor .btn-toolbar > .btn + .btn, -.note-editor .btn-toolbar > .btn-group + .btn, -.note-editor .btn-toolbar > .btn + .btn-group, -.note-editor .btn-toolbar > .btn-group + .btn-group { - margin-left: 5px; -} -.note-editor .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { - border-radius: 0; -} -.note-editor .btn-group > .btn:first-child { - margin-left: 0; -} -.note-editor .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { - border-bottom-right-radius: 0; - border-top-right-radius: 0; -} -.note-editor .btn-group > .btn:last-child:not(:first-child), -.note-editor .btn-group > .dropdown-toggle:not(:first-child) { - border-bottom-left-radius: 0; - border-top-left-radius: 0; -} -.note-editor .btn-group > .btn-group { - float: left; -} -.note-editor .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.note-editor .btn-group > .btn-group:first-child > .btn:last-child, -.note-editor .btn-group > .btn-group:first-child > .dropdown-toggle { - border-bottom-right-radius: 0; - border-top-right-radius: 0; -} -.note-editor .btn-group > .btn-group:last-child > .btn:first-child { - border-bottom-left-radius: 0; - border-top-left-radius: 0; -} -.note-editor .btn-group .dropdown-toggle:active, -.note-editor .btn-group.open .dropdown-toggle { - outline: 0; -} -.note-editor .btn-group-xs > .btn { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; - padding: 1px 5px; -} -.note-editor .btn-group-sm > .btn { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.note-editor .btn-group-lg > .btn { - padding: 10px 16px; - font-size: 18px; - line-height: 1.33; - border-radius: 6px; -} -.note-editor .btn-group > .btn + .dropdown-toggle { - padding-left: 5px; - padding-right: 5px; -} -.note-editor .btn-group > .btn-lg + .dropdown-toggle { - padding-left: 12px; - padding-right: 12px; -} -.note-editor .btn-group.open .dropdown-toggle { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -} -.note-editor .btn .caret { - margin-left: 0; -} -.note-editor .btn-lg .caret { - border-width: 5px 5px 0; - border-bottom-width: 0; -} -.note-editor .dropup .btn-lg .caret { - border-width: 0 5px 5px; -} -.note-editor .btn-group-vertical > .btn, -.note-editor .btn-group-vertical > .btn-group { - display: block; - float: none; - width: 100%; - max-width: 100%; -} -.note-editor .btn-group-vertical > .btn-group:before, -.note-editor .btn-group-vertical > .btn-group:after { - content: " "; - /* 1 */ - - display: table; - /* 2 */ - -} -.note-editor .btn-group-vertical > .btn-group:after { - clear: both; -} -.note-editor .btn-group-vertical > .btn-group:before, -.note-editor .btn-group-vertical > .btn-group:after { - content: " "; - /* 1 */ - - display: table; - /* 2 */ - -} -.note-editor .btn-group-vertical > .btn-group:after { - clear: both; -} -.note-editor .btn-group-vertical > .btn-group > .btn { - float: none; -} -.note-editor .btn-group-vertical > .btn + .btn, -.note-editor .btn-group-vertical > .btn + .btn-group, -.note-editor .btn-group-vertical > .btn-group + .btn, -.note-editor .btn-group-vertical > .btn-group + .btn-group { - margin-top: -1px; - margin-left: 0; -} -.note-editor .btn-group-vertical > .btn:not(:first-child):not(:last-child) { - border-radius: 0; -} -.note-editor .btn-group-vertical > .btn:first-child:not(:last-child) { - border-top-right-radius: 4px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.note-editor .btn-group-vertical > .btn:last-child:not(:first-child) { - border-bottom-left-radius: 4px; - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.note-editor .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.note-editor .btn-group-vertical > .btn-group:first-child > .btn:last-child, -.note-editor .btn-group-vertical > .btn-group:first-child > .dropdown-toggle { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.note-editor .btn-group-vertical > .btn-group:last-child > .btn:first-child { - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.note-editor .btn-group-justified { - display: table; - width: 100%; - table-layout: fixed; - border-collapse: separate; -} -.note-editor .btn-group-justified .btn { - float: none; - display: table-cell; - width: 1%; -} -.note-editor [data-toggle="buttons"] > .btn > input[type="radio"], -.note-editor [data-toggle="buttons"] > .btn > input[type="checkbox"] { - display: none; -} -.note-editor .input-group { - position: relative; - display: table; - border-collapse: separate; -} -.note-editor .input-group.col { - float: none; - padding-left: 0; - padding-right: 0; -} -.note-editor .input-group .form-control { - width: 100%; - margin-bottom: 0; -} -.note-editor .input-group-lg > .form-control, -.note-editor .input-group-lg > .input-group-addon, -.note-editor .input-group-lg > .input-group-btn > .btn { - height: 45px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.33; - border-radius: 6px; -} -select.note-editor .input-group-lg > .form-control, -select.note-editor .input-group-lg > .input-group-addon, -select.note-editor .input-group-lg > .input-group-btn > .btn { - height: 45px; - line-height: 45px; -} -textarea.note-editor .input-group-lg > .form-control, -textarea.note-editor .input-group-lg > .input-group-addon, -textarea.note-editor .input-group-lg > .input-group-btn > .btn { - height: auto; -} -.note-editor .input-group-sm > .form-control, -.note-editor .input-group-sm > .input-group-addon, -.note-editor .input-group-sm > .input-group-btn > .btn { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -select.note-editor .input-group-sm > .form-control, -select.note-editor .input-group-sm > .input-group-addon, -select.note-editor .input-group-sm > .input-group-btn > .btn { - height: 30px; - line-height: 30px; -} -textarea.note-editor .input-group-sm > .form-control, -textarea.note-editor .input-group-sm > .input-group-addon, -textarea.note-editor .input-group-sm > .input-group-btn > .btn { - height: auto; -} -.note-editor .input-group-addon, -.note-editor .input-group-btn, -.note-editor .input-group .form-control { - display: table-cell; -} -.note-editor .input-group-addon:not(:first-child):not(:last-child), -.note-editor .input-group-btn:not(:first-child):not(:last-child), -.note-editor .input-group .form-control:not(:first-child):not(:last-child) { - border-radius: 0; -} -.note-editor .input-group-addon, -.note-editor .input-group-btn { - width: 1%; - white-space: nowrap; - vertical-align: middle; -} -.note-editor .input-group-addon { - padding: 6px 12px; - font-size: 14px; - font-weight: normal; - line-height: 1; - color: #555555; - text-align: center; - background-color: #eeeeee; - border: 1px solid #cccccc; - border-radius: 4px; -} -.note-editor .input-group-addon.input-sm { - padding: 5px 10px; - font-size: 12px; - border-radius: 3px; -} -.note-editor .input-group-addon.input-lg { - padding: 10px 16px; - font-size: 18px; - border-radius: 6px; -} -.note-editor .input-group-addon input[type="radio"], -.note-editor .input-group-addon input[type="checkbox"] { - margin-top: 0; -} -.note-editor .input-group .form-control:first-child, -.note-editor .input-group-addon:first-child, -.note-editor .input-group-btn:first-child > .btn, -.note-editor .input-group-btn:first-child > .dropdown-toggle, -.note-editor .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) { - border-bottom-right-radius: 0; - border-top-right-radius: 0; -} -.note-editor .input-group-addon:first-child { - border-right: 0; -} -.note-editor .input-group .form-control:last-child, -.note-editor .input-group-addon:last-child, -.note-editor .input-group-btn:last-child > .btn, -.note-editor .input-group-btn:last-child > .dropdown-toggle, -.note-editor .input-group-btn:first-child > .btn:not(:first-child) { - border-bottom-left-radius: 0; - border-top-left-radius: 0; -} -.note-editor .input-group-addon:last-child { - border-left: 0; -} -.note-editor .input-group-btn { - position: relative; - white-space: nowrap; -} -.note-editor .input-group-btn:first-child > .btn { - margin-right: -1px; -} -.note-editor .input-group-btn:last-child > .btn { - margin-left: -1px; -} -.note-editor .input-group-btn > .btn { - position: relative; -} -.note-editor .input-group-btn > .btn + .btn { - margin-left: -4px; -} -.note-editor .input-group-btn > .btn:hover, -.note-editor .input-group-btn > .btn:active { - z-index: 2; -} -.note-editor .nav { - margin-bottom: 0; - padding-left: 0; - list-style: none; -} -.note-editor .nav:before, -.note-editor .nav:after { - content: " "; - /* 1 */ - - display: table; - /* 2 */ - -} -.note-editor .nav:after { - clear: both; -} -.note-editor .nav:before, -.note-editor .nav:after { - content: " "; - /* 1 */ - - display: table; - /* 2 */ - -} -.note-editor .nav:after { - clear: both; -} -.note-editor .nav > li { - position: relative; - display: block; -} -.note-editor .nav > li > a { - position: relative; - display: block; - padding: 10px 15px; -} -.note-editor .nav > li > a:hover, -.note-editor .nav > li > a:focus { - text-decoration: none; - background-color: #eeeeee; -} -.note-editor .nav > li.disabled > a { - color: #999999; -} -.note-editor .nav > li.disabled > a:hover, -.note-editor .nav > li.disabled > a:focus { - color: #999999; - text-decoration: none; - background-color: transparent; - cursor: not-allowed; -} -.note-editor .nav .open > a, -.note-editor .nav .open > a:hover, -.note-editor .nav .open > a:focus { - background-color: #eeeeee; - border-color: #428bca; -} -.note-editor .nav .open > a .caret, -.note-editor .nav .open > a:hover .caret, -.note-editor .nav .open > a:focus .caret { - border-top-color: #2a6496; - border-bottom-color: #2a6496; -} -.note-editor .nav .nav-divider { - height: 1px; - margin: 9px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.note-editor .nav > li > a > img { - max-width: none; -} -.note-editor .nav-tabs { - border-bottom: 1px solid #dddddd; -} -.note-editor .nav-tabs > li { - float: left; - margin-bottom: -1px; -} -.note-editor .nav-tabs > li > a { - margin-right: 2px; - line-height: 1.428571429; - border: 1px solid transparent; - border-radius: 4px 4px 0 0; -} -.note-editor .nav-tabs > li > a:hover { - border-color: #eeeeee #eeeeee #dddddd; -} -.note-editor .nav-tabs > li.active > a, -.note-editor .nav-tabs > li.active > a:hover, -.note-editor .nav-tabs > li.active > a:focus { - color: #555555; - background-color: #ffffff; - border: 1px solid #dddddd; - border-bottom-color: transparent; - cursor: default; -} -.note-editor .nav-tabs.nav-justified { - width: 100%; - border-bottom: 0; -} -.note-editor .nav-tabs.nav-justified > li { - float: none; -} -.note-editor .nav-tabs.nav-justified > li > a { - text-align: center; - margin-bottom: 5px; -} -@media (min-width: 768px) { - .note-editor .nav-tabs.nav-justified > li { - display: table-cell; - width: 1%; - } - .note-editor .nav-tabs.nav-justified > li > a { - margin-bottom: 0; - } -} -.note-editor .nav-tabs.nav-justified > li > a { - margin-right: 0; - border-radius: 4px; -} -.note-editor .nav-tabs.nav-justified > .active > a, -.note-editor .nav-tabs.nav-justified > .active > a:hover, -.note-editor .nav-tabs.nav-justified > .active > a:focus { - border: 1px solid #dddddd; -} -@media (min-width: 768px) { - .note-editor .nav-tabs.nav-justified > li > a { - border-bottom: 1px solid #dddddd; - border-radius: 4px 4px 0 0; - } - .note-editor .nav-tabs.nav-justified > .active > a, - .note-editor .nav-tabs.nav-justified > .active > a:hover, - .note-editor .nav-tabs.nav-justified > .active > a:focus { - border-bottom-color: #ffffff; - } -} -.note-editor .nav-pills > li { - float: left; -} -.note-editor .nav-pills > li > a { - border-radius: 4px; -} -.note-editor .nav-pills > li + li { - margin-left: 2px; -} -.note-editor .nav-pills > li.active > a, -.note-editor .nav-pills > li.active > a:hover, -.note-editor .nav-pills > li.active > a:focus { - color: #ffffff; - background-color: #428bca; -} -.note-editor .nav-pills > li.active > a .caret, -.note-editor .nav-pills > li.active > a:hover .caret, -.note-editor .nav-pills > li.active > a:focus .caret { - border-top-color: #ffffff; - border-bottom-color: #ffffff; -} -.note-editor .nav-stacked > li { - float: none; -} -.note-editor .nav-stacked > li + li { - margin-top: 2px; - margin-left: 0; -} -.note-editor .nav-justified { - width: 100%; -} -.note-editor .nav-justified > li { - float: none; -} -.note-editor .nav-justified > li > a { - text-align: center; - margin-bottom: 5px; -} -@media (min-width: 768px) { - .note-editor .nav-justified > li { - display: table-cell; - width: 1%; - } - .note-editor .nav-justified > li > a { - margin-bottom: 0; - } -} -.note-editor .nav-tabs-justified { - border-bottom: 0; -} -.note-editor .nav-tabs-justified > li > a { - margin-right: 0; - border-radius: 4px; -} -.note-editor .nav-tabs-justified > .active > a, -.note-editor .nav-tabs-justified > .active > a:hover, -.note-editor .nav-tabs-justified > .active > a:focus { - border: 1px solid #dddddd; -} -@media (min-width: 768px) { - .note-editor .nav-tabs-justified > li > a { - border-bottom: 1px solid #dddddd; - border-radius: 4px 4px 0 0; - } - .note-editor .nav-tabs-justified > .active > a, - .note-editor .nav-tabs-justified > .active > a:hover, - .note-editor .nav-tabs-justified > .active > a:focus { - border-bottom-color: #ffffff; - } -} -.note-editor .tab-content > .tab-pane { - display: none; -} -.note-editor .tab-content > .active { - display: block; -} -.note-editor .nav .caret { - border-top-color: #428bca; - border-bottom-color: #428bca; -} -.note-editor .nav a:hover .caret { - border-top-color: #2a6496; - border-bottom-color: #2a6496; -} -.note-editor .nav-tabs .dropdown-menu { - margin-top: -1px; - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.note-editor .navbar { - position: relative; - z-index: 1000; - min-height: 50px; - margin-bottom: 20px; - border: 1px solid transparent; -} -.note-editor .navbar:before, -.note-editor .navbar:after { - content: " "; - /* 1 */ - - display: table; - /* 2 */ - -} -.note-editor .navbar:after { - clear: both; -} -.note-editor .navbar:before, -.note-editor .navbar:after { - content: " "; - /* 1 */ - - display: table; - /* 2 */ - -} -.note-editor .navbar:after { - clear: both; -} -@media (min-width: 768px) { - .note-editor .navbar { - border-radius: 4px; - } -} -.note-editor .navbar-header:before, -.note-editor .navbar-header:after { - content: " "; - /* 1 */ - - display: table; - /* 2 */ - -} -.note-editor .navbar-header:after { - clear: both; -} -.note-editor .navbar-header:before, -.note-editor .navbar-header:after { - content: " "; - /* 1 */ - - display: table; - /* 2 */ - -} -.note-editor .navbar-header:after { - clear: both; -} -@media (min-width: 768px) { - .note-editor .navbar-header { - float: left; - } -} -.note-editor .navbar-collapse { - max-height: 340px; - overflow-x: visible; - padding-right: 15px; - padding-left: 15px; - border-top: 1px solid transparent; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); - -webkit-overflow-scrolling: touch; -} -.note-editor .navbar-collapse:before, -.note-editor .navbar-collapse:after { - content: " "; - /* 1 */ - - display: table; - /* 2 */ - -} -.note-editor .navbar-collapse:after { - clear: both; -} -.note-editor .navbar-collapse:before, -.note-editor .navbar-collapse:after { - content: " "; - /* 1 */ - - display: table; - /* 2 */ - -} -.note-editor .navbar-collapse:after { - clear: both; -} -.note-editor .navbar-collapse.in { - overflow-y: auto; -} -@media (min-width: 768px) { - .note-editor .navbar-collapse { - width: auto; - border-top: 0; - box-shadow: none; - } - .note-editor .navbar-collapse.collapse { - display: block !important; - height: auto !important; - padding-bottom: 0; - overflow: visible !important; - } - .note-editor .navbar-collapse.in { - overflow-y: visible; - } - .note-editor .navbar-collapse .navbar-nav.navbar-left:first-child { - margin-left: -15px; - } - .note-editor .navbar-collapse .navbar-nav.navbar-right:last-child { - margin-right: -15px; - } - .note-editor .navbar-collapse .navbar-text:last-child { - margin-right: 0; - } -} -.note-editor .container > .navbar-header, -.note-editor .container > .navbar-collapse { - margin-right: -15px; - margin-left: -15px; -} -@media (min-width: 768px) { - .note-editor .container > .navbar-header, - .note-editor .container > .navbar-collapse { - margin-right: 0; - margin-left: 0; - } -} -.note-editor .navbar-static-top { - border-width: 0 0 1px; -} -@media (min-width: 768px) { - .note-editor .navbar-static-top { - border-radius: 0; - } -} -.note-editor .navbar-fixed-top, -.note-editor .navbar-fixed-bottom { - position: fixed; - right: 0; - left: 0; - border-width: 0 0 1px; -} -@media (min-width: 768px) { - .note-editor .navbar-fixed-top, - .note-editor .navbar-fixed-bottom { - border-radius: 0; - } -} -.note-editor .navbar-fixed-top { - z-index: 1030; - top: 0; -} -.note-editor .navbar-fixed-bottom { - bottom: 0; - margin-bottom: 0; -} -.note-editor .navbar-brand { - float: left; - padding: 15px 15px; - font-size: 18px; - line-height: 20px; -} -.note-editor .navbar-brand:hover, -.note-editor .navbar-brand:focus { - text-decoration: none; -} -@media (min-width: 768px) { - .navbar > .container .note-editor .navbar-brand { - margin-left: -15px; - } -} -.note-editor .navbar-toggle { - position: relative; - float: right; - margin-right: 15px; - padding: 9px 10px; - margin-top: 8px; - margin-bottom: 8px; - background-color: transparent; - border: 1px solid transparent; - border-radius: 4px; -} -.note-editor .navbar-toggle .icon-bar { - display: block; - width: 22px; - height: 2px; - border-radius: 1px; -} -.note-editor .navbar-toggle .icon-bar + .icon-bar { - margin-top: 4px; -} -@media (min-width: 768px) { - .note-editor .navbar-toggle { - display: none; - } -} -.note-editor .navbar-nav { - margin: 7.5px -15px; -} -.note-editor .navbar-nav > li > a { - padding-top: 10px; - padding-bottom: 10px; - line-height: 20px; -} -@media (max-width: 767px) { - .note-editor .navbar-nav .open .dropdown-menu { - position: static; - float: none; - width: auto; - margin-top: 0; - background-color: transparent; - border: 0; - box-shadow: none; - } - .note-editor .navbar-nav .open .dropdown-menu > li > a, - .note-editor .navbar-nav .open .dropdown-menu .dropdown-header { - padding: 5px 15px 5px 25px; - } - .note-editor .navbar-nav .open .dropdown-menu > li > a { - line-height: 20px; - } - .note-editor .navbar-nav .open .dropdown-menu > li > a:hover, - .note-editor .navbar-nav .open .dropdown-menu > li > a:focus { - background-image: none; - } -} -@media (min-width: 768px) { - .note-editor .navbar-nav { - float: left; - margin: 0; - } - .note-editor .navbar-nav > li { - float: left; - } - .note-editor .navbar-nav > li > a { - padding-top: 15px; - padding-bottom: 15px; - } -} -@media (min-width: 768px) { - .note-editor .navbar-left { - float: left !important; - } - .note-editor .navbar-right { - float: right !important; - } -} -.note-editor .navbar-form { - margin-left: -15px; - margin-right: -15px; - padding: 10px 15px; - border-top: 1px solid transparent; - border-bottom: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); - margin-top: 8px; - margin-bottom: 8px; -} -@media (min-width: 768px) { - .note-editor .navbar-form .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .note-editor .navbar-form .form-control { - display: inline-block; - } - .note-editor .navbar-form .radio, - .note-editor .navbar-form .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - padding-left: 0; - } - .note-editor .navbar-form .radio input[type="radio"], - .note-editor .navbar-form .checkbox input[type="checkbox"] { - float: none; - margin-left: 0; - } -} -@media (max-width: 767px) { - .note-editor .navbar-form .form-group { - margin-bottom: 5px; - } -} -@media (min-width: 768px) { - .note-editor .navbar-form { - width: auto; - border: 0; - margin-left: 0; - margin-right: 0; - padding-top: 0; - padding-bottom: 0; - -webkit-box-shadow: none; - box-shadow: none; - } -} -.note-editor .navbar-nav > li > .dropdown-menu { - margin-top: 0; - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.note-editor .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.note-editor .navbar-nav.pull-right > li > .dropdown-menu, -.note-editor .navbar-nav > li > .dropdown-menu.pull-right { - left: auto; - right: 0; -} -.note-editor .navbar-btn { - margin-top: 8px; - margin-bottom: 8px; -} -.note-editor .navbar-text { - float: left; - margin-top: 15px; - margin-bottom: 15px; -} -@media (min-width: 768px) { - .note-editor .navbar-text { - margin-left: 15px; - margin-right: 15px; - } -} -.note-editor .navbar-default { - background-color: #f8f8f8; - border-color: #e7e7e7; -} -.note-editor .navbar-default .navbar-brand { - color: #777777; -} -.note-editor .navbar-default .navbar-brand:hover, -.note-editor .navbar-default .navbar-brand:focus { - color: #5e5e5e; - background-color: transparent; -} -.note-editor .navbar-default .navbar-text { - color: #777777; -} -.note-editor .navbar-default .navbar-nav > li > a { - color: #777777; -} -.note-editor .navbar-default .navbar-nav > li > a:hover, -.note-editor .navbar-default .navbar-nav > li > a:focus { - color: #333333; - background-color: transparent; -} -.note-editor .navbar-default .navbar-nav > .active > a, -.note-editor .navbar-default .navbar-nav > .active > a:hover, -.note-editor .navbar-default .navbar-nav > .active > a:focus { - color: #555555; - background-color: #e7e7e7; -} -.note-editor .navbar-default .navbar-nav > .disabled > a, -.note-editor .navbar-default .navbar-nav > .disabled > a:hover, -.note-editor .navbar-default .navbar-nav > .disabled > a:focus { - color: #cccccc; - background-color: transparent; -} -.note-editor .navbar-default .navbar-toggle { - border-color: #dddddd; -} -.note-editor .navbar-default .navbar-toggle:hover, -.note-editor .navbar-default .navbar-toggle:focus { - background-color: #dddddd; -} -.note-editor .navbar-default .navbar-toggle .icon-bar { - background-color: #cccccc; -} -.note-editor .navbar-default .navbar-collapse, -.note-editor .navbar-default .navbar-form { - border-color: #e7e7e7; -} -.note-editor .navbar-default .navbar-nav > .dropdown > a:hover .caret, -.note-editor .navbar-default .navbar-nav > .dropdown > a:focus .caret { - border-top-color: #333333; - border-bottom-color: #333333; -} -.note-editor .navbar-default .navbar-nav > .open > a, -.note-editor .navbar-default .navbar-nav > .open > a:hover, -.note-editor .navbar-default .navbar-nav > .open > a:focus { - background-color: #e7e7e7; - color: #555555; -} -.note-editor .navbar-default .navbar-nav > .open > a .caret, -.note-editor .navbar-default .navbar-nav > .open > a:hover .caret, -.note-editor .navbar-default .navbar-nav > .open > a:focus .caret { - border-top-color: #555555; - border-bottom-color: #555555; -} -.note-editor .navbar-default .navbar-nav > .dropdown > a .caret { - border-top-color: #777777; - border-bottom-color: #777777; -} -@media (max-width: 767px) { - .note-editor .navbar-default .navbar-nav .open .dropdown-menu > li > a { - color: #777777; - } - .note-editor .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, - .note-editor .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { - color: #333333; - background-color: transparent; - } - .note-editor .navbar-default .navbar-nav .open .dropdown-menu > .active > a, - .note-editor .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, - .note-editor .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #555555; - background-color: #e7e7e7; - } - .note-editor .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, - .note-editor .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .note-editor .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #cccccc; - background-color: transparent; - } -} -.note-editor .navbar-default .navbar-link { - color: #777777; -} -.note-editor .navbar-default .navbar-link:hover { - color: #333333; -} -.note-editor .navbar-inverse { - background-color: #222222; - border-color: #080808; -} -.note-editor .navbar-inverse .navbar-brand { - color: #999999; -} -.note-editor .navbar-inverse .navbar-brand:hover, -.note-editor .navbar-inverse .navbar-brand:focus { - color: #ffffff; - background-color: transparent; -} -.note-editor .navbar-inverse .navbar-text { - color: #999999; -} -.note-editor .navbar-inverse .navbar-nav > li > a { - color: #999999; -} -.note-editor .navbar-inverse .navbar-nav > li > a:hover, -.note-editor .navbar-inverse .navbar-nav > li > a:focus { - color: #ffffff; - background-color: transparent; -} -.note-editor .navbar-inverse .navbar-nav > .active > a, -.note-editor .navbar-inverse .navbar-nav > .active > a:hover, -.note-editor .navbar-inverse .navbar-nav > .active > a:focus { - color: #ffffff; - background-color: #080808; -} -.note-editor .navbar-inverse .navbar-nav > .disabled > a, -.note-editor .navbar-inverse .navbar-nav > .disabled > a:hover, -.note-editor .navbar-inverse .navbar-nav > .disabled > a:focus { - color: #444444; - background-color: transparent; -} -.note-editor .navbar-inverse .navbar-toggle { - border-color: #333333; -} -.note-editor .navbar-inverse .navbar-toggle:hover, -.note-editor .navbar-inverse .navbar-toggle:focus { - background-color: #333333; -} -.note-editor .navbar-inverse .navbar-toggle .icon-bar { - background-color: #ffffff; -} -.note-editor .navbar-inverse .navbar-collapse, -.note-editor .navbar-inverse .navbar-form { - border-color: #101010; -} -.note-editor .navbar-inverse .navbar-nav > .open > a, -.note-editor .navbar-inverse .navbar-nav > .open > a:hover, -.note-editor .navbar-inverse .navbar-nav > .open > a:focus { - background-color: #080808; - color: #ffffff; -} -.note-editor .navbar-inverse .navbar-nav > .dropdown > a:hover .caret { - border-top-color: #ffffff; - border-bottom-color: #ffffff; -} -.note-editor .navbar-inverse .navbar-nav > .dropdown > a .caret { - border-top-color: #999999; - border-bottom-color: #999999; -} -.note-editor .navbar-inverse .navbar-nav > .open > a .caret, -.note-editor .navbar-inverse .navbar-nav > .open > a:hover .caret, -.note-editor .navbar-inverse .navbar-nav > .open > a:focus .caret { - border-top-color: #ffffff; - border-bottom-color: #ffffff; -} -@media (max-width: 767px) { - .note-editor .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { - border-color: #080808; - } - .note-editor .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { - color: #999999; - } - .note-editor .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, - .note-editor .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { - color: #ffffff; - background-color: transparent; - } - .note-editor .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, - .note-editor .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, - .note-editor .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #ffffff; - background-color: #080808; - } - .note-editor .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, - .note-editor .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .note-editor .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #444444; - background-color: transparent; - } -} -.note-editor .navbar-inverse .navbar-link { - color: #999999; -} -.note-editor .navbar-inverse .navbar-link:hover { - color: #ffffff; -} -.note-editor .breadcrumb { - padding: 8px 15px; - margin-bottom: 20px; - list-style: none; - background-color: #f5f5f5; - border-radius: 4px; -} -.note-editor .breadcrumb > li { - display: inline-block; -} -.note-editor .breadcrumb > li + li:before { - content: "/\00a0"; - padding: 0 5px; - color: #cccccc; -} -.note-editor .breadcrumb > .active { - color: #999999; -} -.note-editor .pagination { - display: inline-block; - padding-left: 0; - margin: 20px 0; - border-radius: 4px; -} -.note-editor .pagination > li { - display: inline; -} -.note-editor .pagination > li > a, -.note-editor .pagination > li > span { - position: relative; - float: left; - padding: 6px 12px; - line-height: 1.428571429; - text-decoration: none; - background-color: #ffffff; - border: 1px solid #dddddd; - margin-left: -1px; -} -.note-editor .pagination > li:first-child > a, -.note-editor .pagination > li:first-child > span { - margin-left: 0; - border-bottom-left-radius: 4px; - border-top-left-radius: 4px; -} -.note-editor .pagination > li:last-child > a, -.note-editor .pagination > li:last-child > span { - border-bottom-right-radius: 4px; - border-top-right-radius: 4px; -} -.note-editor .pagination > li > a:hover, -.note-editor .pagination > li > span:hover, -.note-editor .pagination > li > a:focus, -.note-editor .pagination > li > span:focus { - background-color: #eeeeee; -} -.note-editor .pagination > .active > a, -.note-editor .pagination > .active > span, -.note-editor .pagination > .active > a:hover, -.note-editor .pagination > .active > span:hover, -.note-editor .pagination > .active > a:focus, -.note-editor .pagination > .active > span:focus { - z-index: 2; - color: #ffffff; - background-color: #428bca; - border-color: #428bca; - cursor: default; -} -.note-editor .pagination > .disabled > span, -.note-editor .pagination > .disabled > span:hover, -.note-editor .pagination > .disabled > span:focus, -.note-editor .pagination > .disabled > a, -.note-editor .pagination > .disabled > a:hover, -.note-editor .pagination > .disabled > a:focus { - color: #999999; - background-color: #ffffff; - border-color: #dddddd; - cursor: not-allowed; -} -.note-editor .pagination-lg > li > a, -.note-editor .pagination-lg > li > span { - padding: 10px 16px; - font-size: 18px; -} -.note-editor .pagination-lg > li:first-child > a, -.note-editor .pagination-lg > li:first-child > span { - border-bottom-left-radius: 6px; - border-top-left-radius: 6px; -} -.note-editor .pagination-lg > li:last-child > a, -.note-editor .pagination-lg > li:last-child > span { - border-bottom-right-radius: 6px; - border-top-right-radius: 6px; -} -.note-editor .pagination-sm > li > a, -.note-editor .pagination-sm > li > span { - padding: 5px 10px; - font-size: 12px; -} -.note-editor .pagination-sm > li:first-child > a, -.note-editor .pagination-sm > li:first-child > span { - border-bottom-left-radius: 3px; - border-top-left-radius: 3px; -} -.note-editor .pagination-sm > li:last-child > a, -.note-editor .pagination-sm > li:last-child > span { - border-bottom-right-radius: 3px; - border-top-right-radius: 3px; -} -.note-editor .pager { - padding-left: 0; - margin: 20px 0; - list-style: none; - text-align: center; -} -.note-editor .pager:before, -.note-editor .pager:after { - content: " "; - /* 1 */ - - display: table; - /* 2 */ - -} -.note-editor .pager:after { - clear: both; -} -.note-editor .pager:before, -.note-editor .pager:after { - content: " "; - /* 1 */ - - display: table; - /* 2 */ - -} -.note-editor .pager:after { - clear: both; -} -.note-editor .pager li { - display: inline; -} -.note-editor .pager li > a, -.note-editor .pager li > span { - display: inline-block; - padding: 5px 14px; - background-color: #ffffff; - border: 1px solid #dddddd; - border-radius: 15px; -} -.note-editor .pager li > a:hover, -.note-editor .pager li > a:focus { - text-decoration: none; - background-color: #eeeeee; -} -.note-editor .pager .next > a, -.note-editor .pager .next > span { - float: right; -} -.note-editor .pager .previous > a, -.note-editor .pager .previous > span { - float: left; -} -.note-editor .pager .disabled > a, -.note-editor .pager .disabled > a:hover, -.note-editor .pager .disabled > a:focus, -.note-editor .pager .disabled > span { - color: #999999; - background-color: #ffffff; - cursor: not-allowed; -} -.note-editor .label { - display: inline; - padding: .2em .6em .3em; - font-size: 75%; - font-weight: bold; - line-height: 1; - color: #ffffff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: .25em; -} -.note-editor .label[href]:hover, -.note-editor .label[href]:focus { - color: #ffffff; - text-decoration: none; - cursor: pointer; -} -.note-editor .label:empty { - display: none; -} -.note-editor .label-default { - background-color: #999999; -} -.note-editor .label-default[href]:hover, -.note-editor .label-default[href]:focus { - background-color: #808080; -} -.note-editor .label-primary { - background-color: #428bca; -} -.note-editor .label-primary[href]:hover, -.note-editor .label-primary[href]:focus { - background-color: #3071a9; -} -.note-editor .label-success { - background-color: #5cb85c; -} -.note-editor .label-success[href]:hover, -.note-editor .label-success[href]:focus { - background-color: #449d44; -} -.note-editor .label-info { - background-color: #5bc0de; -} -.note-editor .label-info[href]:hover, -.note-editor .label-info[href]:focus { - background-color: #31b0d5; -} -.note-editor .label-warning { - background-color: #f0ad4e; -} -.note-editor .label-warning[href]:hover, -.note-editor .label-warning[href]:focus { - background-color: #ec971f; -} -.note-editor .label-danger { - background-color: #d9534f; -} -.note-editor .label-danger[href]:hover, -.note-editor .label-danger[href]:focus { - background-color: #c9302c; -} -.note-editor .badge { - display: inline-block; - min-width: 10px; - padding: 3px 7px; - font-size: 12px; - font-weight: bold; - color: #ffffff; - line-height: 1; - vertical-align: baseline; - white-space: nowrap; - text-align: center; - background-color: #999999; - border-radius: 10px; -} -.note-editor .badge:empty { - display: none; -} -.note-editor a.badge:hover, -.note-editor a.badge:focus { - color: #ffffff; - text-decoration: none; - cursor: pointer; -} -.note-editor .btn .badge { - position: relative; - top: -1px; -} -.note-editor a.list-group-item.active > .badge, -.note-editor .nav-pills > .active > a > .badge { - color: #428bca; - background-color: #ffffff; -} -.note-editor .nav-pills > li > a > .badge { - margin-left: 3px; -} -.note-editor .jumbotron { - padding: 30px; - margin-bottom: 30px; - font-size: 21px; - font-weight: 200; - line-height: 2.1428571435; - color: inherit; - background-color: #eeeeee; -} -.note-editor .jumbotron h1 { - line-height: 1; - color: inherit; -} -.note-editor .jumbotron p { - line-height: 1.4; -} -.container .note-editor .jumbotron { - border-radius: 6px; -} -@media screen and (min-width: 768px) { - .note-editor .jumbotron { - padding-top: 48px; - padding-bottom: 48px; - } - .container .note-editor .jumbotron { - padding-left: 60px; - padding-right: 60px; - } - .note-editor .jumbotron h1 { - font-size: 63px; - } -} -.note-editor .thumbnail { - padding: 4px; - line-height: 1.428571429; - background-color: #ffffff; - border: 1px solid #dddddd; - border-radius: 4px; - -webkit-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; - display: inline-block; - max-width: 100%; - height: auto; - display: block; - margin-bottom: 20px; -} -.note-editor .thumbnail > img { - display: block; - max-width: 100%; - height: auto; -} -.note-editor a.thumbnail:hover, -.note-editor a.thumbnail:focus, -.note-editor a.thumbnail.active { - border-color: #428bca; -} -.note-editor .thumbnail > img { - margin-left: auto; - margin-right: auto; -} -.note-editor .thumbnail .caption { - padding: 9px; - color: #333333; -} -.note-editor .alert { - padding: 15px; - margin-bottom: 20px; - border: 1px solid transparent; - border-radius: 4px; -} -.note-editor .alert h4 { - margin-top: 0; - color: inherit; -} -.note-editor .alert .alert-link { - font-weight: bold; -} -.note-editor .alert > p, -.note-editor .alert > ul { - margin-bottom: 0; -} -.note-editor .alert > p + p { - margin-top: 5px; -} -.note-editor .alert-dismissable { - padding-right: 35px; -} -.note-editor .alert-dismissable .close { - position: relative; - top: -2px; - right: -21px; - color: inherit; -} -.note-editor .alert-success { - background-color: #dff0d8; - border-color: #d6e9c6; - color: #468847; -} -.note-editor .alert-success hr { - border-top-color: #c9e2b3; -} -.note-editor .alert-success .alert-link { - color: #356635; -} -.note-editor .alert-info { - background-color: #d9edf7; - border-color: #bce8f1; - color: #3a87ad; -} -.note-editor .alert-info hr { - border-top-color: #a6e1ec; -} -.note-editor .alert-info .alert-link { - color: #2d6987; -} -.note-editor .alert-warning { - background-color: #fcf8e3; - border-color: #faebcc; - color: #c09853; -} -.note-editor .alert-warning hr { - border-top-color: #f7e1b5; -} -.note-editor .alert-warning .alert-link { - color: #a47e3c; -} -.note-editor .alert-danger { - background-color: #f2dede; - border-color: #ebccd1; - color: #b94a48; -} -.note-editor .alert-danger hr { - border-top-color: #e4b9c0; -} -.note-editor .alert-danger .alert-link { - color: #953b39; -} -@-webkit-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@-moz-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@-o-keyframes progress-bar-stripes { - from { - background-position: 0 0; - } - to { - background-position: 40px 0; - } -} -@keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -.note-editor .progress { - overflow: hidden; - height: 20px; - margin-bottom: 20px; - background-color: #f5f5f5; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); -} -.note-editor .progress-bar { - float: left; - width: 0%; - height: 100%; - font-size: 12px; - line-height: 20px; - color: #ffffff; - text-align: center; - background-color: #428bca; - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - -webkit-transition: width 0.6s ease; - transition: width 0.6s ease; -} -.note-editor .progress-striped .progress-bar { - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-size: 40px 40px; -} -.note-editor .progress.active .progress-bar { - -webkit-animation: progress-bar-stripes 2s linear infinite; - -moz-animation: progress-bar-stripes 2s linear infinite; - -ms-animation: progress-bar-stripes 2s linear infinite; - -o-animation: progress-bar-stripes 2s linear infinite; - animation: progress-bar-stripes 2s linear infinite; -} -.note-editor .progress-bar-success { - background-color: #5cb85c; -} -.progress-striped .note-editor .progress-bar-success { - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.note-editor .progress-bar-info { - background-color: #5bc0de; -} -.progress-striped .note-editor .progress-bar-info { - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.note-editor .progress-bar-warning { - background-color: #f0ad4e; -} -.progress-striped .note-editor .progress-bar-warning { - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.note-editor .progress-bar-danger { - background-color: #d9534f; -} -.progress-striped .note-editor .progress-bar-danger { - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.note-editor .media, -.note-editor .media-body { - overflow: hidden; - zoom: 1; -} -.note-editor .media, -.note-editor .media .media { - margin-top: 15px; -} -.note-editor .media:first-child { - margin-top: 0; -} -.note-editor .media-object { - display: block; -} -.note-editor .media-heading { - margin: 0 0 5px; -} -.note-editor .media > .pull-left { - margin-right: 10px; -} -.note-editor .media > .pull-right { - margin-left: 10px; -} -.note-editor .media-list { - padding-left: 0; - list-style: none; -} -.note-editor .list-group { - margin-bottom: 20px; - padding-left: 0; -} -.note-editor .list-group-item { - position: relative; - display: block; - padding: 10px 15px; - margin-bottom: -1px; - background-color: #ffffff; - border: 1px solid #dddddd; -} -.note-editor .list-group-item:first-child { - border-top-right-radius: 4px; - border-top-left-radius: 4px; -} -.note-editor .list-group-item:last-child { - margin-bottom: 0; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; -} -.note-editor .list-group-item > .badge { - float: right; -} -.note-editor .list-group-item > .badge + .badge { - margin-right: 5px; -} -.note-editor a.list-group-item { - color: #555555; -} -.note-editor a.list-group-item .list-group-item-heading { - color: #333333; -} -.note-editor a.list-group-item:hover, -.note-editor a.list-group-item:focus { - text-decoration: none; - background-color: #f5f5f5; -} -.note-editor a.list-group-item.active, -.note-editor a.list-group-item.active:hover, -.note-editor a.list-group-item.active:focus { - z-index: 2; - color: #ffffff; - background-color: #428bca; - border-color: #428bca; -} -.note-editor a.list-group-item.active .list-group-item-heading, -.note-editor a.list-group-item.active:hover .list-group-item-heading, -.note-editor a.list-group-item.active:focus .list-group-item-heading { - color: inherit; -} -.note-editor a.list-group-item.active .list-group-item-text, -.note-editor a.list-group-item.active:hover .list-group-item-text, -.note-editor a.list-group-item.active:focus .list-group-item-text { - color: #e1edf7; -} -.note-editor .list-group-item-heading { - margin-top: 0; - margin-bottom: 5px; -} -.note-editor .list-group-item-text { - margin-bottom: 0; - line-height: 1.3; -} -.note-editor .panel { - margin-bottom: 20px; - background-color: #ffffff; - border: 1px solid transparent; - border-radius: 4px; - -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); -} -.note-editor .panel-body { - padding: 15px; -} -.note-editor .panel-body:before, -.note-editor .panel-body:after { - content: " "; - /* 1 */ - - display: table; - /* 2 */ - -} -.note-editor .panel-body:after { - clear: both; -} -.note-editor .panel-body:before, -.note-editor .panel-body:after { - content: " "; - /* 1 */ - - display: table; - /* 2 */ - -} -.note-editor .panel-body:after { - clear: both; -} -.note-editor .panel > .list-group { - margin-bottom: 0; -} -.note-editor .panel > .list-group .list-group-item { - border-width: 1px 0; -} -.note-editor .panel > .list-group .list-group-item:first-child { - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.note-editor .panel > .list-group .list-group-item:last-child { - border-bottom: 0; -} -.note-editor .panel-heading + .list-group .list-group-item:first-child { - border-top-width: 0; -} -.note-editor .panel > .table, -.note-editor .panel > .table-responsive { - margin-bottom: 0; -} -.note-editor .panel > .panel-body + .table, -.note-editor .panel > .panel-body + .table-responsive { - border-top: 1px solid #dddddd; -} -.note-editor .panel > .table-bordered, -.note-editor .panel > .table-responsive > .table-bordered { - border: 0; -} -.note-editor .panel > .table-bordered > thead > tr > th:first-child, -.note-editor .panel > .table-responsive > .table-bordered > thead > tr > th:first-child, -.note-editor .panel > .table-bordered > tbody > tr > th:first-child, -.note-editor .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, -.note-editor .panel > .table-bordered > tfoot > tr > th:first-child, -.note-editor .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, -.note-editor .panel > .table-bordered > thead > tr > td:first-child, -.note-editor .panel > .table-responsive > .table-bordered > thead > tr > td:first-child, -.note-editor .panel > .table-bordered > tbody > tr > td:first-child, -.note-editor .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, -.note-editor .panel > .table-bordered > tfoot > tr > td:first-child, -.note-editor .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; -} -.note-editor .panel > .table-bordered > thead > tr > th:last-child, -.note-editor .panel > .table-responsive > .table-bordered > thead > tr > th:last-child, -.note-editor .panel > .table-bordered > tbody > tr > th:last-child, -.note-editor .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, -.note-editor .panel > .table-bordered > tfoot > tr > th:last-child, -.note-editor .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, -.note-editor .panel > .table-bordered > thead > tr > td:last-child, -.note-editor .panel > .table-responsive > .table-bordered > thead > tr > td:last-child, -.note-editor .panel > .table-bordered > tbody > tr > td:last-child, -.note-editor .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, -.note-editor .panel > .table-bordered > tfoot > tr > td:last-child, -.note-editor .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; -} -.note-editor .panel > .table-bordered > thead > tr:last-child > th, -.note-editor .panel > .table-responsive > .table-bordered > thead > tr:last-child > th, -.note-editor .panel > .table-bordered > tbody > tr:last-child > th, -.note-editor .panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, -.note-editor .panel > .table-bordered > tfoot > tr:last-child > th, -.note-editor .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th, -.note-editor .panel > .table-bordered > thead > tr:last-child > td, -.note-editor .panel > .table-responsive > .table-bordered > thead > tr:last-child > td, -.note-editor .panel > .table-bordered > tbody > tr:last-child > td, -.note-editor .panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, -.note-editor .panel > .table-bordered > tfoot > tr:last-child > td, -.note-editor .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td { - border-bottom: 0; -} -.note-editor .panel-heading { - padding: 10px 15px; - border-bottom: 1px solid transparent; - border-top-right-radius: 3px; - border-top-left-radius: 3px; -} -.note-editor .panel-title { - margin-top: 0; - margin-bottom: 0; - font-size: 16px; -} -.note-editor .panel-title > a { - color: inherit; -} -.note-editor .panel-footer { - padding: 10px 15px; - background-color: #f5f5f5; - border-top: 1px solid #dddddd; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.note-editor .panel-group .panel { - margin-bottom: 0; - border-radius: 4px; - overflow: hidden; -} -.note-editor .panel-group .panel + .panel { - margin-top: 5px; -} -.note-editor .panel-group .panel-heading { - border-bottom: 0; -} -.note-editor .panel-group .panel-heading + .panel-collapse .panel-body { - border-top: 1px solid #dddddd; -} -.note-editor .panel-group .panel-footer { - border-top: 0; -} -.note-editor .panel-group .panel-footer + .panel-collapse .panel-body { - border-bottom: 1px solid #dddddd; -} -.note-editor .panel-default { - border-color: #dddddd; -} -.note-editor .panel-default > .panel-heading { - color: #333333; - background-color: #f5f5f5; - border-color: #dddddd; -} -.note-editor .panel-default > .panel-heading + .panel-collapse .panel-body { - border-top-color: #dddddd; -} -.note-editor .panel-default > .panel-footer + .panel-collapse .panel-body { - border-bottom-color: #dddddd; -} -.note-editor .panel-primary { - border-color: #428bca; -} -.note-editor .panel-primary > .panel-heading { - color: #ffffff; - background-color: #428bca; - border-color: #428bca; -} -.note-editor .panel-primary > .panel-heading + .panel-collapse .panel-body { - border-top-color: #428bca; -} -.note-editor .panel-primary > .panel-footer + .panel-collapse .panel-body { - border-bottom-color: #428bca; -} -.note-editor .panel-success { - border-color: #d6e9c6; -} -.note-editor .panel-success > .panel-heading { - color: #468847; - background-color: #dff0d8; - border-color: #d6e9c6; -} -.note-editor .panel-success > .panel-heading + .panel-collapse .panel-body { - border-top-color: #d6e9c6; -} -.note-editor .panel-success > .panel-footer + .panel-collapse .panel-body { - border-bottom-color: #d6e9c6; -} -.note-editor .panel-warning { - border-color: #faebcc; -} -.note-editor .panel-warning > .panel-heading { - color: #c09853; - background-color: #fcf8e3; - border-color: #faebcc; -} -.note-editor .panel-warning > .panel-heading + .panel-collapse .panel-body { - border-top-color: #faebcc; -} -.note-editor .panel-warning > .panel-footer + .panel-collapse .panel-body { - border-bottom-color: #faebcc; -} -.note-editor .panel-danger { - border-color: #ebccd1; -} -.note-editor .panel-danger > .panel-heading { - color: #b94a48; - background-color: #f2dede; - border-color: #ebccd1; -} -.note-editor .panel-danger > .panel-heading + .panel-collapse .panel-body { - border-top-color: #ebccd1; -} -.note-editor .panel-danger > .panel-footer + .panel-collapse .panel-body { - border-bottom-color: #ebccd1; -} -.note-editor .panel-info { - border-color: #bce8f1; -} -.note-editor .panel-info > .panel-heading { - color: #3a87ad; - background-color: #d9edf7; - border-color: #bce8f1; -} -.note-editor .panel-info > .panel-heading + .panel-collapse .panel-body { - border-top-color: #bce8f1; -} -.note-editor .panel-info > .panel-footer + .panel-collapse .panel-body { - border-bottom-color: #bce8f1; -} -.note-editor .well { - min-height: 20px; - padding: 19px; - margin-bottom: 20px; - background-color: #f5f5f5; - border: 1px solid #e3e3e3; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); -} -.note-editor .well blockquote { - border-color: #ddd; - border-color: rgba(0, 0, 0, 0.15); -} -.note-editor .well-lg { - padding: 24px; - border-radius: 6px; -} -.note-editor .well-sm { - padding: 9px; - border-radius: 3px; -} -.note-editor .close { - float: right; - font-size: 21px; - font-weight: bold; - line-height: 1; - color: #000000; - text-shadow: 0 1px 0 #ffffff; - opacity: 0.2; - filter: alpha(opacity=20); -} -.note-editor .close:hover, -.note-editor .close:focus { - color: #000000; - text-decoration: none; - cursor: pointer; - opacity: 0.5; - filter: alpha(opacity=50); -} -button.note-editor .close { - padding: 0; - cursor: pointer; - background: transparent; - border: 0; - -webkit-appearance: none; -} -.modal-open { - overflow: hidden; -} -.modal { - display: none; - overflow: auto; - overflow-y: scroll; - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1040; -} -.modal.fade .modal-dialog { - -webkit-transform: translate(0, -25%); - -ms-transform: translate(0, -25%); - transform: translate(0, -25%); - -webkit-transition: -webkit-transform 0.3s ease-out; - -moz-transition: -moz-transform 0.3s ease-out; - -o-transition: -o-transform 0.3s ease-out; - transition: transform 0.3s ease-out; -} -.modal.in .modal-dialog { - -webkit-transform: translate(0, 0); - -ms-transform: translate(0, 0); - transform: translate(0, 0); -} -.modal-dialog { - margin-left: auto; - margin-right: auto; - width: auto; - padding: 10px; - z-index: 1050; -} -.modal-content { - position: relative; - background-color: #ffffff; - border: 1px solid #999999; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 6px; - -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); - box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); - background-clip: padding-box; - outline: none; -} -.modal-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1030; - background-color: #000000; -} -.modal-backdrop.fade { - opacity: 0; - filter: alpha(opacity=0); -} -.modal-backdrop.in { - opacity: 0.5; - filter: alpha(opacity=50); -} -.modal-header { - padding: 15px; - border-bottom: 1px solid #e5e5e5; - min-height: 16.428571429px; -} -.modal-header .close { - margin-top: -2px; -} -.modal-title { - margin: 0; - line-height: 1.428571429; -} -.modal-body { - position: relative; - padding: 20px; -} -.modal-footer { - margin-top: 15px; - padding: 19px 20px 20px; - text-align: right; - border-top: 1px solid #e5e5e5; -} -.modal-footer:before, -.modal-footer:after { - content: " "; - /* 1 */ - - display: table; - /* 2 */ - -} -.modal-footer:after { - clear: both; -} -.modal-footer:before, -.modal-footer:after { - content: " "; - /* 1 */ - - display: table; - /* 2 */ - -} -.modal-footer:after { - clear: both; -} -.modal-footer .btn + .btn { - margin-left: 5px; - margin-bottom: 0; -} -.modal-footer .btn-group .btn + .btn { - margin-left: -1px; -} -.modal-footer .btn-block + .btn-block { - margin-left: 0; -} -@media screen and (min-width: 768px) { - .modal-dialog { - width: 600px; - padding-top: 30px; - padding-bottom: 30px; - } - .modal-content { - -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); - } -} -.tooltip { - position: absolute; - z-index: 1030; - display: block; - visibility: visible; - font-size: 12px; - line-height: 1.4; - opacity: 0; - filter: alpha(opacity=0); -} -.tooltip.in { - opacity: 0.9; - filter: alpha(opacity=90); -} -.tooltip.top { - margin-top: -3px; - padding: 5px 0; -} -.tooltip.right { - margin-left: 3px; - padding: 0 5px; -} -.tooltip.bottom { - margin-top: 3px; - padding: 5px 0; -} -.tooltip.left { - margin-left: -3px; - padding: 0 5px; -} -.tooltip-inner { - max-width: 200px; - padding: 3px 8px; - color: #ffffff; - text-align: center; - text-decoration: none; - background-color: #000000; - border-radius: 4px; -} -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.tooltip.top .tooltip-arrow { - bottom: 0; - left: 50%; - margin-left: -5px; - border-width: 5px 5px 0; - border-top-color: #000000; -} -.tooltip.top-left .tooltip-arrow { - bottom: 0; - left: 5px; - border-width: 5px 5px 0; - border-top-color: #000000; -} -.tooltip.top-right .tooltip-arrow { - bottom: 0; - right: 5px; - border-width: 5px 5px 0; - border-top-color: #000000; -} -.tooltip.right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -5px; - border-width: 5px 5px 5px 0; - border-right-color: #000000; -} -.tooltip.left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -5px; - border-width: 5px 0 5px 5px; - border-left-color: #000000; -} -.tooltip.bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000000; -} -.tooltip.bottom-left .tooltip-arrow { - top: 0; - left: 5px; - border-width: 0 5px 5px; - border-bottom-color: #000000; -} -.tooltip.bottom-right .tooltip-arrow { - top: 0; - right: 5px; - border-width: 0 5px 5px; - border-bottom-color: #000000; -} -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1010; - display: none; - max-width: 276px; - padding: 1px; - text-align: left; - background-color: #ffffff; - background-clip: padding-box; - border: 1px solid #cccccc; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 6px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - white-space: normal; -} -.popover.top { - margin-top: -10px; -} -.popover.right { - margin-left: 10px; -} -.popover.bottom { - margin-top: 10px; -} -.popover.left { - margin-left: -10px; -} -.popover-title { - margin: 0; - padding: 8px 14px; - font-size: 14px; - font-weight: normal; - line-height: 18px; - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - border-radius: 5px 5px 0 0; -} -.popover-content { - padding: 9px 14px; -} -.popover .arrow, -.popover .arrow:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.popover .arrow { - border-width: 11px; -} -.popover .arrow:after { - border-width: 10px; - content: ""; -} -.popover.top .arrow { - left: 50%; - margin-left: -11px; - border-bottom-width: 0; - border-top-color: #999999; - border-top-color: rgba(0, 0, 0, 0.25); - bottom: -11px; -} -.popover.top .arrow:after { - content: " "; - bottom: 1px; - margin-left: -10px; - border-bottom-width: 0; - border-top-color: #ffffff; -} -.popover.right .arrow { - top: 50%; - left: -11px; - margin-top: -11px; - border-left-width: 0; - border-right-color: #999999; - border-right-color: rgba(0, 0, 0, 0.25); -} -.popover.right .arrow:after { - content: " "; - left: 1px; - bottom: -10px; - border-left-width: 0; - border-right-color: #ffffff; -} -.popover.bottom .arrow { - left: 50%; - margin-left: -11px; - border-top-width: 0; - border-bottom-color: #999999; - border-bottom-color: rgba(0, 0, 0, 0.25); - top: -11px; -} -.popover.bottom .arrow:after { - content: " "; - top: 1px; - margin-left: -10px; - border-top-width: 0; - border-bottom-color: #ffffff; -} -.popover.left .arrow { - top: 50%; - right: -11px; - margin-top: -11px; - border-right-width: 0; - border-left-color: #999999; - border-left-color: rgba(0, 0, 0, 0.25); -} -.popover.left .arrow:after { - content: " "; - right: 1px; - border-right-width: 0; - border-left-color: #ffffff; - bottom: -10px; -} -.carousel { - position: relative; -} -.carousel-inner { - position: relative; - overflow: hidden; - width: 100%; -} -.carousel-inner > .item { - display: none; - position: relative; - -webkit-transition: 0.6s ease-in-out left; - transition: 0.6s ease-in-out left; -} -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - display: block; - max-width: 100%; - height: auto; - line-height: 1; -} -.carousel-inner > .active, -.carousel-inner > .next, -.carousel-inner > .prev { - display: block; -} -.carousel-inner > .active { - left: 0; -} -.carousel-inner > .next, -.carousel-inner > .prev { - position: absolute; - top: 0; - width: 100%; -} -.carousel-inner > .next { - left: 100%; -} -.carousel-inner > .prev { - left: -100%; -} -.carousel-inner > .next.left, -.carousel-inner > .prev.right { - left: 0; -} -.carousel-inner > .active.left { - left: -100%; -} -.carousel-inner > .active.right { - left: 100%; -} -.carousel-control { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 15%; - opacity: 0.5; - filter: alpha(opacity=50); - font-size: 20px; - color: #ffffff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); -} -.carousel-control.left { - background-image: -webkit-gradient(linear, 0% top, 100% top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.0001))); - background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.5) 0%), color-stop(rgba(0, 0, 0, 0.0001) 100%)); - background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); -} -.carousel-control.right { - left: auto; - right: 0; - background-image: -webkit-gradient(linear, 0% top, 100% top, from(rgba(0, 0, 0, 0.0001)), to(rgba(0, 0, 0, 0.5))); - background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.0001) 0%), color-stop(rgba(0, 0, 0, 0.5) 100%)); - background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); -} -.carousel-control:hover, -.carousel-control:focus { - color: #ffffff; - text-decoration: none; - opacity: 0.9; - filter: alpha(opacity=90); -} -.carousel-control .icon-prev, -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-left, -.carousel-control .glyphicon-chevron-right { - position: absolute; - top: 50%; - z-index: 5; - display: inline-block; -} -.carousel-control .icon-prev, -.carousel-control .glyphicon-chevron-left { - left: 50%; -} -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-right { - right: 50%; -} -.carousel-control .icon-prev, -.carousel-control .icon-next { - width: 20px; - height: 20px; - margin-top: -10px; - margin-left: -10px; - font-family: serif; -} -.carousel-control .icon-prev:before { - content: '\2039'; -} -.carousel-control .icon-next:before { - content: '\203a'; -} -.carousel-indicators { - position: absolute; - bottom: 10px; - left: 50%; - z-index: 15; - width: 60%; - margin-left: -30%; - padding-left: 0; - list-style: none; - text-align: center; -} -.carousel-indicators li { - display: inline-block; - width: 10px; - height: 10px; - margin: 1px; - text-indent: -999px; - border: 1px solid #ffffff; - border-radius: 10px; - cursor: pointer; -} -.carousel-indicators .active { - margin: 0; - width: 12px; - height: 12px; - background-color: #ffffff; -} -.carousel-caption { - position: absolute; - left: 15%; - right: 15%; - bottom: 20px; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: #ffffff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); -} -.carousel-caption .btn { - text-shadow: none; -} -@media screen and (min-width: 768px) { - .carousel-control .glyphicons-chevron-left, - .carousel-control .glyphicons-chevron-right, - .carousel-control .icon-prev, - .carousel-control .icon-next { - width: 30px; - height: 30px; - margin-top: -15px; - margin-left: -15px; - font-size: 30px; - } - .carousel-caption { - left: 20%; - right: 20%; - padding-bottom: 30px; - } - .carousel-indicators { - bottom: 20px; - } -} -.clearfix:before, -.clearfix:after { - content: " "; - /* 1 */ - - display: table; - /* 2 */ - -} -.clearfix:after { - clear: both; -} -.center-block { - display: block; - margin-left: auto; - margin-right: auto; -} -.pull-right { - float: right !important; -} -.pull-left { - float: left !important; -} -.hide { - display: none !important; -} -.show { - display: block !important; -} -.invisible { - visibility: hidden; -} -.text-hide { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} -.hidden { - display: none !important; - visibility: hidden !important; -} -.affix { - position: fixed; -} -@-ms-viewport { - width: device-width; -} -.visible-xs, -tr.visible-xs, -th.visible-xs, -td.visible-xs { - display: none !important; -} -@media (max-width: 767px) { - .visible-xs { - display: block !important; - } - tr.visible-xs { - display: table-row !important; - } - th.visible-xs, - td.visible-xs { - display: table-cell !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-xs.visible-sm { - display: block !important; - } - tr.visible-xs.visible-sm { - display: table-row !important; - } - th.visible-xs.visible-sm, - td.visible-xs.visible-sm { - display: table-cell !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-xs.visible-md { - display: block !important; - } - tr.visible-xs.visible-md { - display: table-row !important; - } - th.visible-xs.visible-md, - td.visible-xs.visible-md { - display: table-cell !important; - } -} -@media (min-width: 1200px) { - .visible-xs.visible-lg { - display: block !important; - } - tr.visible-xs.visible-lg { - display: table-row !important; - } - th.visible-xs.visible-lg, - td.visible-xs.visible-lg { - display: table-cell !important; - } -} -.visible-sm, -tr.visible-sm, -th.visible-sm, -td.visible-sm { - display: none !important; -} -@media (max-width: 767px) { - .visible-sm.visible-xs { - display: block !important; - } - tr.visible-sm.visible-xs { - display: table-row !important; - } - th.visible-sm.visible-xs, - td.visible-sm.visible-xs { - display: table-cell !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm { - display: block !important; - } - tr.visible-sm { - display: table-row !important; - } - th.visible-sm, - td.visible-sm { - display: table-cell !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-sm.visible-md { - display: block !important; - } - tr.visible-sm.visible-md { - display: table-row !important; - } - th.visible-sm.visible-md, - td.visible-sm.visible-md { - display: table-cell !important; - } -} -@media (min-width: 1200px) { - .visible-sm.visible-lg { - display: block !important; - } - tr.visible-sm.visible-lg { - display: table-row !important; - } - th.visible-sm.visible-lg, - td.visible-sm.visible-lg { - display: table-cell !important; - } -} -.visible-md, -tr.visible-md, -th.visible-md, -td.visible-md { - display: none !important; -} -@media (max-width: 767px) { - .visible-md.visible-xs { - display: block !important; - } - tr.visible-md.visible-xs { - display: table-row !important; - } - th.visible-md.visible-xs, - td.visible-md.visible-xs { - display: table-cell !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-md.visible-sm { - display: block !important; - } - tr.visible-md.visible-sm { - display: table-row !important; - } - th.visible-md.visible-sm, - td.visible-md.visible-sm { - display: table-cell !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md { - display: block !important; - } - tr.visible-md { - display: table-row !important; - } - th.visible-md, - td.visible-md { - display: table-cell !important; - } -} -@media (min-width: 1200px) { - .visible-md.visible-lg { - display: block !important; - } - tr.visible-md.visible-lg { - display: table-row !important; - } - th.visible-md.visible-lg, - td.visible-md.visible-lg { - display: table-cell !important; - } -} -.visible-lg, -tr.visible-lg, -th.visible-lg, -td.visible-lg { - display: none !important; -} -@media (max-width: 767px) { - .visible-lg.visible-xs { - display: block !important; - } - tr.visible-lg.visible-xs { - display: table-row !important; - } - th.visible-lg.visible-xs, - td.visible-lg.visible-xs { - display: table-cell !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-lg.visible-sm { - display: block !important; - } - tr.visible-lg.visible-sm { - display: table-row !important; - } - th.visible-lg.visible-sm, - td.visible-lg.visible-sm { - display: table-cell !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-lg.visible-md { - display: block !important; - } - tr.visible-lg.visible-md { - display: table-row !important; - } - th.visible-lg.visible-md, - td.visible-lg.visible-md { - display: table-cell !important; - } -} -@media (min-width: 1200px) { - .visible-lg { - display: block !important; - } - tr.visible-lg { - display: table-row !important; - } - th.visible-lg, - td.visible-lg { - display: table-cell !important; - } -} -.hidden-xs { - display: block !important; -} -tr.hidden-xs { - display: table-row !important; -} -th.hidden-xs, -td.hidden-xs { - display: table-cell !important; -} -@media (max-width: 767px) { - .hidden-xs, - tr.hidden-xs, - th.hidden-xs, - td.hidden-xs { - display: none !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .hidden-xs.hidden-sm, - tr.hidden-xs.hidden-sm, - th.hidden-xs.hidden-sm, - td.hidden-xs.hidden-sm { - display: none !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .hidden-xs.hidden-md, - tr.hidden-xs.hidden-md, - th.hidden-xs.hidden-md, - td.hidden-xs.hidden-md { - display: none !important; - } -} -@media (min-width: 1200px) { - .hidden-xs.hidden-lg, - tr.hidden-xs.hidden-lg, - th.hidden-xs.hidden-lg, - td.hidden-xs.hidden-lg { - display: none !important; - } -} -.hidden-sm { - display: block !important; -} -tr.hidden-sm { - display: table-row !important; -} -th.hidden-sm, -td.hidden-sm { - display: table-cell !important; -} -@media (max-width: 767px) { - .hidden-sm.hidden-xs, - tr.hidden-sm.hidden-xs, - th.hidden-sm.hidden-xs, - td.hidden-sm.hidden-xs { - display: none !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .hidden-sm, - tr.hidden-sm, - th.hidden-sm, - td.hidden-sm { - display: none !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .hidden-sm.hidden-md, - tr.hidden-sm.hidden-md, - th.hidden-sm.hidden-md, - td.hidden-sm.hidden-md { - display: none !important; - } -} -@media (min-width: 1200px) { - .hidden-sm.hidden-lg, - tr.hidden-sm.hidden-lg, - th.hidden-sm.hidden-lg, - td.hidden-sm.hidden-lg { - display: none !important; - } -} -.hidden-md { - display: block !important; -} -tr.hidden-md { - display: table-row !important; -} -th.hidden-md, -td.hidden-md { - display: table-cell !important; -} -@media (max-width: 767px) { - .hidden-md.hidden-xs, - tr.hidden-md.hidden-xs, - th.hidden-md.hidden-xs, - td.hidden-md.hidden-xs { - display: none !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .hidden-md.hidden-sm, - tr.hidden-md.hidden-sm, - th.hidden-md.hidden-sm, - td.hidden-md.hidden-sm { - display: none !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .hidden-md, - tr.hidden-md, - th.hidden-md, - td.hidden-md { - display: none !important; - } -} -@media (min-width: 1200px) { - .hidden-md.hidden-lg, - tr.hidden-md.hidden-lg, - th.hidden-md.hidden-lg, - td.hidden-md.hidden-lg { - display: none !important; - } -} -.hidden-lg { - display: block !important; -} -tr.hidden-lg { - display: table-row !important; -} -th.hidden-lg, -td.hidden-lg { - display: table-cell !important; -} -@media (max-width: 767px) { - .hidden-lg.hidden-xs, - tr.hidden-lg.hidden-xs, - th.hidden-lg.hidden-xs, - td.hidden-lg.hidden-xs { - display: none !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .hidden-lg.hidden-sm, - tr.hidden-lg.hidden-sm, - th.hidden-lg.hidden-sm, - td.hidden-lg.hidden-sm { - display: none !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .hidden-lg.hidden-md, - tr.hidden-lg.hidden-md, - th.hidden-lg.hidden-md, - td.hidden-lg.hidden-md { - display: none !important; - } -} -@media (min-width: 1200px) { - .hidden-lg, - tr.hidden-lg, - th.hidden-lg, - td.hidden-lg { - display: none !important; - } -} -.visible-print, -tr.visible-print, -th.visible-print, -td.visible-print { - display: none !important; -} -@media print { - .visible-print { - display: block !important; - } - tr.visible-print { - display: table-row !important; - } - th.visible-print, - td.visible-print { - display: table-cell !important; - } - .hidden-print, - tr.hidden-print, - th.hidden-print, - td.hidden-print { - display: none !important; - } -} diff --git a/assets/css/plugins/summernote/summernote.css b/assets/css/plugins/summernote/summernote.css deleted file mode 100644 index 46cad11e..00000000 --- a/assets/css/plugins/summernote/summernote.css +++ /dev/null @@ -1,446 +0,0 @@ -.note-editor { - height: 300px; -} - -.note-editor .note-dropzone { - position: absolute; - z-index: 1; - display: none; - color: #87cefa; - background-color: white; - border: 2px dashed #87cefa; - opacity: .95; - pointer-event: none -} - -.note-editor .note-dropzone .note-dropzone-message { - display: table-cell; - font-size: 28px; - font-weight: bold; - text-align: center; - vertical-align: middle -} - -.note-editor .note-dropzone.hover { - color: #098ddf; - border: 2px dashed #098ddf -} - -.note-editor.dragover .note-dropzone { - display: table -} - -.note-editor.fullscreen { - position: fixed; - top: 0; - left: 0; - z-index: 1050; - width: 100% -} - -.note-editor.fullscreen .note-editable { - background-color: white -} - -.note-editor.fullscreen .note-resizebar { - display: none -} - -.note-editor.codeview .note-editable { - display: none -} - -.note-editor.codeview .note-codable { - display: block -} - -.note-editor .note-toolbar { - padding-bottom: 5px; - padding-left: 10px; - padding-top: 5px; - margin: 0; - background-color: #f5f5f5; - border-bottom: 1px solid #E7EAEC -} - -.note-editor .note-toolbar > .btn-group { - margin-top: 5px; - margin-right: 5px; - margin-left: 0 -} - -.note-editor .note-toolbar .note-table .dropdown-menu { - min-width: 0; - padding: 5px -} - -.note-editor .note-toolbar .note-table .dropdown-menu .note-dimension-picker { - font-size: 18px -} - -.note-editor .note-toolbar .note-table .dropdown-menu .note-dimension-picker .note-dimension-picker-mousecatcher { - position: absolute !important; - z-index: 3; - width: 10em; - height: 10em; - cursor: pointer -} - -.note-editor .note-toolbar .note-table .dropdown-menu .note-dimension-picker .note-dimension-picker-unhighlighted { - position: relative !important; - z-index: 1; - width: 5em; - height: 5em; - background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIj4+Pjp6ekKlAqjAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKhmnaJzPAAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC') repeat -} - -.note-editor .note-toolbar .note-table .dropdown-menu .note-dimension-picker .note-dimension-picker-highlighted { - position: absolute !important; - z-index: 2; - width: 1em; - height: 1em; - background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIjd6vvD2f9LKLW+AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKwNDEVT0AAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC') repeat -} - -.note-editor .note-toolbar .note-style h1, .note-editor .note-toolbar .note-style h2, .note-editor .note-toolbar .note-style h3, .note-editor .note-toolbar .note-style h4, .note-editor .note-toolbar .note-style h5, .note-editor .note-toolbar .note-style h6, .note-editor .note-toolbar .note-style blockquote { - margin: 0 -} - -.note-editor .note-toolbar .note-color .dropdown-toggle { - width: 20px; - padding-left: 5px -} - -.note-editor .note-toolbar .note-color .dropdown-menu { - min-width: 290px -} - -.note-editor .note-toolbar .note-color .dropdown-menu .btn-group { - margin: 0 -} - -.note-editor .note-toolbar .note-color .dropdown-menu .btn-group:first-child { - margin: 0 5px -} - -.note-editor .note-toolbar .note-color .dropdown-menu .btn-group .note-palette-title { - margin: 2px 7px; - font-size: 12px; - text-align: center; - border-bottom: 1px solid #eee -} - -.note-editor .note-toolbar .note-color .dropdown-menu .btn-group .note-color-reset { - padding: 0 3px; - margin: 5px; - font-size: 12px; - cursor: pointer; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px -} - -.note-editor .note-toolbar .note-color .dropdown-menu .btn-group .note-color-reset:hover { - background: #eee -} - -.note-editor .note-toolbar .note-para .dropdown-menu { - min-width: 216px; - padding: 5px -} - -.note-editor .note-toolbar .note-para .dropdown-menu > div:first-child { - margin-right: 5px -} - -.note-editor .note-statusbar { - background-color: #f5f5f5 -} - -.note-editor .note-statusbar .note-resizebar { - width: 100%; - height: 8px; - cursor: s-resize; - border-top: 1px solid #a9a9a9 -} - -.note-editor .note-statusbar .note-resizebar .note-icon-bar { - width: 20px; - margin: 1px auto; - border-top: 1px solid #a9a9a9 -} - -.note-editor .note-popover .popover { - max-width: none -} - -.note-editor .note-popover .popover .popover-content { - padding: 5px -} - -.note-editor .note-popover .popover .popover-content a { - display: inline-block; - max-width: 200px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - vertical-align: middle -} - -.note-editor .note-popover .popover .popover-content .btn-group + .btn-group { - margin-left: 5px -} - -.note-editor .note-popover .popover .arrow { - left: 20px -} - -.note-editor .note-handle .note-control-selection { - position: absolute; - display: none; - border: 1px solid black -} - -.note-editor .note-handle .note-control-selection > div { - position: absolute -} - -.note-editor .note-handle .note-control-selection .note-control-selection-bg { - width: 100%; - height: 100%; - background-color: black; - -webkit-opacity: .3; - -khtml-opacity: .3; - -moz-opacity: .3; - opacity: .3; - -ms-filter: alpha(opacity=30); - filter: alpha(opacity=30) -} - -.note-editor .note-handle .note-control-selection .note-control-handle { - width: 7px; - height: 7px; - border: 1px solid black -} - -.note-editor .note-handle .note-control-selection .note-control-holder { - width: 7px; - height: 7px; - border: 1px solid black -} - -.note-editor .note-handle .note-control-selection .note-control-sizing { - width: 7px; - height: 7px; - background-color: white; - border: 1px solid black -} - -.note-editor .note-handle .note-control-selection .note-control-nw { - top: -5px; - left: -5px; - border-right: 0; - border-bottom: 0 -} - -.note-editor .note-handle .note-control-selection .note-control-ne { - top: -5px; - right: -5px; - border-bottom: 0; - border-left: none -} - -.note-editor .note-handle .note-control-selection .note-control-sw { - bottom: -5px; - left: -5px; - border-top: 0; - border-right: 0 -} - -.note-editor .note-handle .note-control-selection .note-control-se { - right: -5px; - bottom: -5px; - cursor: se-resize -} - -.note-editor .note-handle .note-control-selection .note-control-selection-info { - right: 0; - bottom: 0; - padding: 5px; - margin: 5px; - font-size: 12px; - color: white; - background-color: black; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; - -webkit-opacity: .7; - -khtml-opacity: .7; - -moz-opacity: .7; - opacity: .7; - -ms-filter: alpha(opacity=70); - filter: alpha(opacity=70) -} - -.note-editor .note-dialog > div { - display: none -} - -.note-editor .note-dialog .note-image-dialog .note-dropzone { - min-height: 100px; - margin-bottom: 10px; - font-size: 30px; - line-height: 4; - color: lightgray; - text-align: center; - border: 4px dashed lightgray -} - -.note-editor .note-dialog .note-help-dialog { - font-size: 12px; - color: #ccc; - background: transparent; - background-color: #222 !important; - border: 0; - -webkit-opacity: .9; - -khtml-opacity: .9; - -moz-opacity: .9; - opacity: .9; - -ms-filter: alpha(opacity=90); - filter: alpha(opacity=90) -} - -.note-editor .note-dialog .note-help-dialog .modal-content { - background: transparent; - border: 1px solid white; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none -} - -.note-editor .note-dialog .note-help-dialog a { - font-size: 12px; - color: white -} - -.note-editor .note-dialog .note-help-dialog .title { - padding-bottom: 5px; - font-size: 14px; - font-weight: bold; - color: white; - border-bottom: white 1px solid -} - -.note-editor .note-dialog .note-help-dialog .modal-close { - font-size: 14px; - color: #dd0; - cursor: pointer -} - -.note-editor .note-dialog .note-help-dialog .note-shortcut-layout { - width: 100% -} - -.note-editor .note-dialog .note-help-dialog .note-shortcut-layout td { - vertical-align: top -} - -.note-editor .note-dialog .note-help-dialog .note-shortcut { - margin-top: 8px -} - -.note-editor .note-dialog .note-help-dialog .note-shortcut th { - font-size: 13px; - color: #dd0; - text-align: left -} - -.note-editor .note-dialog .note-help-dialog .note-shortcut td:first-child { - min-width: 110px; - padding-right: 10px; - font-family: "Courier New"; - color: #dd0; - text-align: right -} - -.note-editor .note-editable { - padding: 20px; - overflow: auto; - outline: 0 -} - -.note-editor .note-editable[contenteditable="false"] { - background-color: #e5e5e5 -} - -.note-editor .note-codable { - display: none; - width: 100%; - padding: 10px; - margin-bottom: 0; - font-family: Menlo, Monaco, monospace, sans-serif; - font-size: 14px; - color: #ccc; - background-color: #222; - border: 0; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - box-shadow: none; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; - resize: none -} - -.note-editor .dropdown-menu { - min-width: 90px -} - -.note-editor .dropdown-menu.right { - right: 0; - left: auto -} - -.note-editor .dropdown-menu.right::before { - right: 9px; - left: auto !important -} - -.note-editor .dropdown-menu.right::after { - right: 10px; - left: auto !important -} - -.note-editor .dropdown-menu li a i { - color: deepskyblue; - visibility: hidden -} - -.note-editor .dropdown-menu li a.checked i { - visibility: visible -} - -.note-editor .note-fontsize-10 { - font-size: 10px -} - -.note-editor .note-color-palette { - line-height: 1 -} - -.note-editor .note-color-palette div .note-color-btn { - width: 17px; - height: 17px; - padding: 0; - margin: 0; - border: 1px solid #fff -} - -.note-editor .note-color-palette div .note-color-btn:hover { - border: 1px solid #000 -} \ No newline at end of file diff --git a/assets/css/plugins/switchery/switchery.css b/assets/css/plugins/switchery/switchery.css deleted file mode 100644 index dc119b6e..00000000 --- a/assets/css/plugins/switchery/switchery.css +++ /dev/null @@ -1,32 +0,0 @@ -/* - * - * Main stylesheet for Switchery. - * http://abpetkov.github.io/switchery/ - * - */ - -.switchery { - background-color: #fff; - border: 1px solid #dfdfdf; - border-radius: 20px; - cursor: pointer; - display: inline-block; - height: 30px; - position: relative; - vertical-align: middle; - width: 50px; - - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} - -.switchery > small { - background: #fff; - border-radius: 100%; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); - height: 30px; - position: absolute; - top: 0; - width: 30px; -} \ No newline at end of file diff --git a/assets/css/plugins/toastr/toastr.min.css b/assets/css/plugins/toastr/toastr.min.css deleted file mode 100644 index 567716ea..00000000 --- a/assets/css/plugins/toastr/toastr.min.css +++ /dev/null @@ -1,222 +0,0 @@ -.toast-title { - font-weight: 700 -} - -.toast-message { - -ms-word-wrap: break-word; - word-wrap: break-word -} - -.toast-message a, .toast-message label { - color: #fff -} - -.toast-message a:hover { - color: #ccc; - text-decoration: none -} - -.toast-close-button { - position: relative; - right: -.3em; - top: -.3em; - float: right; - font-size: 20px; - font-weight: 700; - color: #fff; - -webkit-text-shadow: 0 1px 0 #fff; - text-shadow: 0 1px 0 #fff; - opacity: .8; - -ms-filter: alpha(Opacity=80); - filter: alpha(opacity=80) -} - -.toast-close-button:focus, .toast-close-button:hover { - color: #000; - text-decoration: none; - cursor: pointer; - opacity: .4; - -ms-filter: alpha(Opacity=40); - filter: alpha(opacity=40) -} - -button.toast-close-button { - padding: 0; - cursor: pointer; - background: 0 0; - border: 0; - -webkit-appearance: none -} - -.toast-top-center { - top: 0; - right: 0; - width: 100% -} - -.toast-bottom-center { - bottom: 0; - right: 0; - width: 100% -} - -.toast-top-full-width { - top: 0; - right: 0; - width: 100% -} - -.toast-bottom-full-width { - bottom: 0; - right: 0; - width: 100% -} - -.toast-top-left { - top: 12px; - left: 12px -} - -.toast-top-right { - top: 12px; - right: 12px -} - -.toast-bottom-right { - right: 12px; - bottom: 12px -} - -.toast-bottom-left { - bottom: 12px; - left: 12px -} - -#toast-container { - position: fixed; - z-index: 999999 -} - -#toast-container * { - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - box-sizing: border-box -} - -#toast-container > div { - position: relative; - overflow: hidden; - margin: 0 0 6px; - padding: 15px 15px 15px 50px; - width: 300px; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; - background-position: 15px center; - background-repeat: no-repeat; - -moz-box-shadow: 0 0 12px #999; - -webkit-box-shadow: 0 0 12px #999; - box-shadow: 0 0 12px #999; - color: #fff; - opacity: .8; - -ms-filter: alpha(Opacity=80); - filter: alpha(opacity=80) -} - -#toast-container > :hover { - -moz-box-shadow: 0 0 12px #000; - -webkit-box-shadow: 0 0 12px #000; - box-shadow: 0 0 12px #000; - opacity: 1; - -ms-filter: alpha(Opacity=100); - filter: alpha(opacity=100); - cursor: pointer -} - -#toast-container > .toast-info { - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=) !important -} - -#toast-container > .toast-error { - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=) !important -} - -#toast-container > .toast-success { - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==) !important -} - -#toast-container > .toast-warning { - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=) !important -} - -#toast-container.toast-bottom-center > div, #toast-container.toast-top-center > div { - width: 300px; - margin: auto -} - -#toast-container.toast-bottom-full-width > div, #toast-container.toast-top-full-width > div { - width: 96%; - margin: auto -} - -.toast { - background-color: #030303 -} - -.toast-success { - background-color: #51a351 -} - -.toast-error { - background-color: #bd362f -} - -.toast-info { - background-color: #2f96b4 -} - -.toast-warning { - background-color: #f89406 -} - -.toast-progress { - position: absolute; - left: 0; - bottom: 0; - height: 4px; - background-color: #000; - opacity: .4; - -ms-filter: alpha(Opacity=40); - filter: alpha(opacity=40) -} - -@media all and (max-width: 240px) { - #toast-container > div { - padding: 8px 8px 8px 50px; - width: 11em - } - - #toast-container .toast-close-button { - right: -.2em; - top: -.2em - } -} - -@media all and (min-width: 241px) and (max-width: 480px) { - #toast-container > div { - padding: 8px 8px 8px 50px; - width: 18em - } - - #toast-container .toast-close-button { - right: -.2em; - top: -.2em - } -} - -@media all and (min-width: 481px) and (max-width: 768px) { - #toast-container > div { - padding: 15px 15px 15px 50px; - width: 25em - } -} \ No newline at end of file diff --git a/assets/css/style.css b/assets/css/style.css deleted file mode 100644 index aff29984..00000000 --- a/assets/css/style.css +++ /dev/null @@ -1,5037 +0,0 @@ -@import url("//fonts.googleapis.com/css?family=Open+Sans:300,400,600,700&amp;lang=en"); -/* - * - * INSPINIA - Responsive Admin Theme - * Copyright 2014 Webapplayers.com - * -*/ - -h1, -h2, -h3, -h4, -h5, -h6 { - font-weight: 100; -} -h1 { - font-size: 30px; -} -h2 { - font-size: 24px; -} -h3 { - font-size: 16px; -} -h4 { - font-size: 14px; -} -h5 { - font-size: 12px; -} -h6 { - font-size: 10px; -} -h3, -h4, -h5 { - margin-top: 5px; - font-weight: 600; -} -.nav > li > a { - color: #a7b1c2; - font-weight: 600; - padding: 14px 20px 14px 25px; -} -.nav.navbar-right > li > a { - color: #999c9e; -} -.nav > li.active > a { - color: #ffffff; -} -.navbar-default .nav > li > a:hover, -.navbar-default .nav > li > a:focus { - background-color: #293846; - color: white; -} -.nav .open > a, -.nav .open > a:hover, -.nav .open > a:focus { - background: #fff; -} -.nav.navbar-top-links > li > a:hover, -.nav.navbar-top-links > li > a:focus { - background-color: transparent; -} -.nav > li > a i { - margin-right: 6px; -} -.navbar { - border: 0; -} -.navbar-default { - background-color: transparent; - border-color: #2f4050; -} -.navbar-top-links li { - display: inline-block; -} -.navbar-top-links li:last-child { - margin-right: 40px; -} -.navbar-top-links li a { - padding: 20px 10px; - min-height: 50px; -} -.dropdown-menu { - border: medium none; - border-radius: 3px; - box-shadow: 0 0 3px rgba(86, 96, 117, 0.7); - display: none; - float: left; - font-size: 12px; - left: 0; - list-style: none outside none; - padding: 0; - position: absolute; - text-shadow: none; - top: 100%; - z-index: 1000; - border-radius: 2px; -} -.dropdown-menu > li > a { - border-radius: 3px; - color: inherit; - line-height: 25px; - margin: 4px; - text-align: left; - font-weight: normal; -} -.dropdown-menu > li > a.font-bold { - font-weight: 600; -} -.navbar-top-links .dropdown-menu li { - display: block; -} -.navbar-top-links .dropdown-menu li:last-child { - margin-right: 0; -} -.navbar-top-links .dropdown-menu li a { - padding: 3px 20px; - min-height: 0; -} -.navbar-top-links .dropdown-menu li a div { - white-space: normal; -} -.navbar-top-links .dropdown-messages, -.navbar-top-links .dropdown-tasks, -.navbar-top-links .dropdown-alerts { - width: 310px; - min-width: 0; -} -.navbar-top-links .dropdown-messages { - margin-left: 5px; -} -.navbar-top-links .dropdown-tasks { - margin-left: -59px; -} -.navbar-top-links .dropdown-alerts { - margin-left: -123px; -} -.navbar-top-links .dropdown-user { - right: 0; - left: auto; -} -.dropdown-messages, -.dropdown-alerts { - padding: 10px 10px 10px 10px; -} -.dropdown-messages li a, -.dropdown-alerts li a { - font-size: 12px; -} -.dropdown-messages li em, -.dropdown-alerts li em { - font-size: 10px; -} -.nav.navbar-top-links .dropdown-alerts a { - font-size: 12px; -} -.nav-header { - padding: 33px 25px; - background: url("patterns/header-profile.png") no-repeat; -} -.pace-done .nav-header { - transition: all 0.5s; -} -.nav > li.active { - - background: #3c8dbc; -} -.nav > li.hover { - - background: #3c8dbc; -} - -.nav.nav-second-level > li.active { - border: none; -} -.nav.nav-second-level.collapse[style] { - height: auto !important; -} -.nav-header a { - color: #DFE4ED; -} -.nav-header .text-muted { - color: #8095a8; -} -.minimalize-styl-2 { - padding: 4px 12px; - margin: 14px 5px 5px 20px; - font-size: 14px; - float: left; -} -.navbar-form-custom { - float: left; - height: 50px; - padding: 0; - width: 200px; - display: inline-table; -} -.navbar-form-custom .form-group { - margin-bottom: 0; -} -.nav.navbar-top-links a { - font-size: 14px; -} -.navbar-form-custom .form-control { - background: none repeat scroll 0 0 rgba(0, 0, 0, 0); - border: medium none; - font-size: 14px; - height: 60px; - margin: 0; - z-index: 2000; -} -.count-info .label { - line-height: 12px; - padding: 2px 5px; - position: absolute; - right: 6px; - top: 12px; -} -.arrow { - float: right; -} -.fa.arrow:before { - content: "\f104"; -} -.active > a > .fa.arrow:before { - content: "\f107"; -} -.nav-second-level li, -.nav-third-level li { - border-bottom: none !important; -} -.nav-second-level li a { - padding: 7px 10px 7px 10px; - padding-left: 52px; -} -.nav-third-level li a { - padding-left: 62px; -} -.nav-second-level li:last-child { - margin-bottom: 10px; -} -body:not(.fixed-sidebar).mini-navbar .nav li:hover > .nav-second-level, -.mini-navbar .nav li:focus > .nav-second-level { - display: block; - border-radius: 0 2px 2px 0; - min-width: 140px; - height: auto; -} -body.mini-navbar .navbar-default .nav > li > .nav-second-level li a { - font-size: 12px; - border-radius: 3px; -} -.fixed-nav .slimScrollDiv #side-menu { - padding-bottom: 60px; -} -.mini-navbar .nav-second-level li a { - padding: 10px 10px 10px 15px; -} -.mini-navbar .nav-second-level { - position: absolute; - left: 70px; - top: 0px; - background-color: #2f4050; - padding: 10px 10px 10px 10px; - font-size: 12px; -} -.mini-navbar li.active .nav-second-level { - left: 65px; -} -.navbar-default .special_link a { - background: #1ab394; - color: white; -} -.navbar-default .special_link a:hover { - background: #17987e !important; - color: white; -} -.navbar-default .special_link a span.label { - background: #fff; - color: #1ab394; -} -.navbar-default .landing_link a { - background: #1cc09f; - color: white; -} -.navbar-default .landing_link a:hover { - background: #1ab394 !important; - color: white; -} -.navbar-default .landing_link a span.label { - background: #fff; - color: #1cc09f; -} -.logo-element { - text-align: center; - font-size: 18px; - font-weight: 600; - color: white; - display: none; - padding: 18px 0; -} -.pace-done .navbar-static-side, -.pace-done .nav-header, -.pace-done li.active, -.pace-done #page-wrapper, -.pace-done .footer { - -webkit-transition: all 0.5s; - -moz-transition: all 0.5s; - -o-transition: all 0.5s; - transition: all 0.5s; -} -.navbar-fixed-top { - background: #fff; - transition-duration: 0.5s; - border-bottom: 1px solid #e7eaec !important; -} -.navbar-fixed-top, -.navbar-static-top { - background: #f3f3f4; -} -.fixed-nav #wrapper { - margin-top: 60px; -} -.fixed-nav .minimalize-styl-2 { - margin: 14px 5px 5px 15px; -} -.body-small .navbar-fixed-top { - margin-left: 0px; -} -body.mini-navbar .navbar-static-side { - width: 70px; -} -body.mini-navbar .profile-element, -body.mini-navbar .nav-label, -body.mini-navbar .navbar-default .nav li a span { - display: none; -} -body:not(.fixed-sidebar).mini-navbar .nav-second-level { - display: none; -} -body.mini-navbar .navbar-default .nav > li > a { - font-size: 16px; -} -body.mini-navbar .logo-element { - display: block; -} -body.mini-navbar .nav-header { - padding: 0; - background-color: #1ab394; -} -body.mini-navbar #page-wrapper { - margin: 0 0 0 70px; -} -body.fixed-sidebar.mini-navbar .footer { - margin: 0 0 0 0px; -} -body.mini-navbar #page-wrapper { - margin: 0 0 0 70px; -} -body.fixed-sidebar .navbar-static-side { - position: fixed; - width: 220px; - z-index: 101; - height: 100%; -} -body.fixed-sidebar.mini-navbar .navbar-static-side { - width: 0px; -} -body.fixed-sidebar.mini-navbar #page-wrapper { - margin: 0 0 0 0px; -} -body.body-small.fixed-sidebar.mini-navbar #page-wrapper { - margin: 0 0 0 220px; -} -body.body-small.fixed-sidebar.mini-navbar .navbar-static-side { - width: 220px; -} -.fixed-sidebar.mini-navbar .nav li:focus > .nav-second-level { - display: block; - height: auto; -} -body.fixed-sidebar.mini-navbar .navbar-default .nav > li > .nav-second-level li a { - font-size: 12px; - border-radius: 3px; -} -.fixed-sidebar.mini-navbar .nav-second-level li a { - padding: 10px 10px 10px 15px; -} -.fixed-sidebar.mini-navbar .nav-second-level { - position: relative; - padding: 0; - font-size: 13px; -} -.fixed-sidebar.mini-navbar li.active .nav-second-level { - left: 0px; -} -body.fixed-sidebar.mini-navbar .navbar-default .nav > li > a { - font-size: 13px; -} -body.fixed-sidebar.mini-navbar .nav-label, -body.fixed-sidebar.mini-navbar .navbar-default .nav li a span { - display: inline; -} -.fixed-sidebar.mini-navbar .nav-second-level li a { - padding: 7px 10px 7px 52px; -} -.fixed-sidebar.mini-navbar .nav-second-level { - left: 0px; -} -.top-navigation #page-wrapper { - margin-left: 0; -} -.top-navigation .pace .pace-progress { - left: 0; -} -.top-navigation .navbar-nav .dropdown-menu > .active > a { - background: white; - color: #1ab394; - font-weight: bold; -} -.white-bg .navbar-fixed-top, -.white-bg .navbar-static-top { - background: #fff; -} -.top-navigation .navbar { - margin-bottom: 0; -} -.top-navigation .nav > li > a { - padding: 15px 20px; - color: #676a6c; -} -.top-navigation .nav > li a:hover, -.top-navigation .nav > li a:focus { - background: #fff; - color: #1ab394; -} -.top-navigation .nav > li.active { - background: #fff; - border: none; -} -.top-navigation .nav > li.active > a { - color: #1ab394; -} -.top-navigation .navbar-right { - margin-right: 10px; -} -.top-navigation .navbar-nav .dropdown-menu { - box-shadow: none; - border: 1px solid #e7eaec; -} -.top-navigation .dropdown-menu > li > a { - margin: 0; - padding: 7px 20px; -} -.navbar .dropdown-menu { - margin-top: 0px; -} -.top-navigation .navbar-brand { - background: #1ab394; - color: #fff; - padding: 15px 25px; -} -.top-navigation .navbar-top-links li:last-child { - margin-right: 0; -} -.top-navigation.mini-navbar #page-wrapper, -.top-navigation.body-small.fixed-sidebar.mini-navbar #page-wrapper, -.mini-navbar .top-navigation #page-wrapper, -body-small.fixed-sidebar.mini-navbar .top-navigation #page-wrapper { - margin: 0; -} -.top-navigation.fixed-nav #wrapper, -.fixed-nav #wrapper.top-navigation { - margin-top: 50px; -} -.top-navigation .footer.fixed { - margin-left: 0 !important; -} -.top-navigation .wrapper.wrapper-content { - padding: 40px; -} -.top-navigation.body-small .wrapper.wrapper-content, -.body-small .top-navigation .wrapper.wrapper-content { - padding: 40px 0px 40px 0px; -} -.navbar-toggle { - background-color: #1ab394; - color: #fff; - padding: 6px 12px; - font-size: 14px; -} -.top-navigation .navbar-nav .open .dropdown-menu > li > a, -.top-navigation .navbar-nav .open .dropdown-menu .dropdown-header { - padding: 10px 15px 10px 20px; -} -@media (max-width: 768px) { - .top-navigation .navbar-header { - display: block; - float: none; - } -} -.menu-visible-lg, -.menu-visible-md { - display: none !important; -} -@media (min-width: 1200px) { - .menu-visible-lg { - display: block !important; - } -} -@media (min-width: 992px) { - .menu-visible-md { - display: block !important; - } -} -@media (max-width: 767px) { - .menu-visible-md { - display: block !important; - } - .menu-visible-lg { - display: block !important; - } -} -.btn { - border-radius: 3px; -} -.float-e-margins .btn { - margin-bottom: 5px; -} -.btn-w-m { - min-width: 120px; -} -.btn-primary.btn-outline { - color: #1ab394; -} -.btn-success.btn-outline { - color: #1c84c6; -} -.btn-info.btn-outline { - color: #23c6c8; -} -.btn-warning.btn-outline { - color: #f8ac59; -} -.btn-danger.btn-outline { - color: #ed5565; -} -.btn-primary.btn-outline:hover, -.btn-success.btn-outline:hover, -.btn-info.btn-outline:hover, -.btn-warning.btn-outline:hover, -.btn-danger.btn-outline:hover { - color: #fff; -} -.btn-primary { - background-color: #1ab394; - border-color: #1ab394; - color: #FFFFFF; -} -.btn-primary:hover, -.btn-primary:focus, -.btn-primary:active, -.btn-primary.active, -.open .dropdown-toggle.btn-primary { - background-color: #18a689; - border-color: #18a689; - color: #FFFFFF; -} -.btn-primary:active, -.btn-primary.active, -.open .dropdown-toggle.btn-primary { - background-image: none; -} -.btn-primary.disabled, -.btn-primary.disabled:hover, -.btn-primary.disabled:focus, -.btn-primary.disabled:active, -.btn-primary.disabled.active, -.btn-primary[disabled], -.btn-primary[disabled]:hover, -.btn-primary[disabled]:focus, -.btn-primary[disabled]:active, -.btn-primary.active[disabled], -fieldset[disabled] .btn-primary, -fieldset[disabled] .btn-primary:hover, -fieldset[disabled] .btn-primary:focus, -fieldset[disabled] .btn-primary:active, -fieldset[disabled] .btn-primary.active { - background-color: #1dc5a3; - border-color: #1dc5a3; -} -.btn-success { - background-color: #1c84c6; - border-color: #1c84c6; - color: #FFFFFF; -} -.btn-success:hover, -.btn-success:focus, -.btn-success:active, -.btn-success.active, -.open .dropdown-toggle.btn-success { - background-color: #1a7bb9; - border-color: #1a7bb9; - color: #FFFFFF; -} -.btn-success:active, -.btn-success.active, -.open .dropdown-toggle.btn-success { - background-image: none; -} -.btn-success.disabled, -.btn-success.disabled:hover, -.btn-success.disabled:focus, -.btn-success.disabled:active, -.btn-success.disabled.active, -.btn-success[disabled], -.btn-success[disabled]:hover, -.btn-success[disabled]:focus, -.btn-success[disabled]:active, -.btn-success.active[disabled], -fieldset[disabled] .btn-success, -fieldset[disabled] .btn-success:hover, -fieldset[disabled] .btn-success:focus, -fieldset[disabled] .btn-success:active, -fieldset[disabled] .btn-success.active { - background-color: #1f90d8; - border-color: #1f90d8; -} -.btn-info { - background-color: #23c6c8; - border-color: #23c6c8; - color: #FFFFFF; -} -.btn-info:hover, -.btn-info:focus, -.btn-info:active, -.btn-info.active, -.open .dropdown-toggle.btn-info { - background-color: #21b9bb; - border-color: #21b9bb; - color: #FFFFFF; -} -.btn-info:active, -.btn-info.active, -.open .dropdown-toggle.btn-info { - background-image: none; -} -.btn-info.disabled, -.btn-info.disabled:hover, -.btn-info.disabled:focus, -.btn-info.disabled:active, -.btn-info.disabled.active, -.btn-info[disabled], -.btn-info[disabled]:hover, -.btn-info[disabled]:focus, -.btn-info[disabled]:active, -.btn-info.active[disabled], -fieldset[disabled] .btn-info, -fieldset[disabled] .btn-info:hover, -fieldset[disabled] .btn-info:focus, -fieldset[disabled] .btn-info:active, -fieldset[disabled] .btn-info.active { - background-color: #26d7d9; - border-color: #26d7d9; -} -.btn-default { - background-color: #c2c2c2; - border-color: #c2c2c2; - color: #FFFFFF; -} -.btn-default:hover, -.btn-default:focus, -.btn-default:active, -.btn-default.active, -.open .dropdown-toggle.btn-default { - background-color: #bababa; - border-color: #bababa; - color: #FFFFFF; -} -.btn-default:active, -.btn-default.active, -.open .dropdown-toggle.btn-default { - background-image: none; -} -.btn-default.disabled, -.btn-default.disabled:hover, -.btn-default.disabled:focus, -.btn-default.disabled:active, -.btn-default.disabled.active, -.btn-default[disabled], -.btn-default[disabled]:hover, -.btn-default[disabled]:focus, -.btn-default[disabled]:active, -.btn-default.active[disabled], -fieldset[disabled] .btn-default, -fieldset[disabled] .btn-default:hover, -fieldset[disabled] .btn-default:focus, -fieldset[disabled] .btn-default:active, -fieldset[disabled] .btn-default.active { - background-color: #cccccc; - border-color: #cccccc; -} -.btn-warning { - background-color: #f8ac59; - border-color: #f8ac59; - color: #FFFFFF; -} -.btn-warning:hover, -.btn-warning:focus, -.btn-warning:active, -.btn-warning.active, -.open .dropdown-toggle.btn-warning { - background-color: #f7a54a; - border-color: #f7a54a; - color: #FFFFFF; -} -.btn-warning:active, -.btn-warning.active, -.open .dropdown-toggle.btn-warning { - background-image: none; -} -.btn-warning.disabled, -.btn-warning.disabled:hover, -.btn-warning.disabled:focus, -.btn-warning.disabled:active, -.btn-warning.disabled.active, -.btn-warning[disabled], -.btn-warning[disabled]:hover, -.btn-warning[disabled]:focus, -.btn-warning[disabled]:active, -.btn-warning.active[disabled], -fieldset[disabled] .btn-warning, -fieldset[disabled] .btn-warning:hover, -fieldset[disabled] .btn-warning:focus, -fieldset[disabled] .btn-warning:active, -fieldset[disabled] .btn-warning.active { - background-color: #f9b66d; - border-color: #f9b66d; -} -.btn-danger { - background-color: #ed5565; - border-color: #ed5565; - color: #FFFFFF; -} -.btn-danger:hover, -.btn-danger:focus, -.btn-danger:active, -.btn-danger.active, -.open .dropdown-toggle.btn-danger { - background-color: #ec4758; - border-color: #ec4758; - color: #FFFFFF; -} -.btn-danger:active, -.btn-danger.active, -.open .dropdown-toggle.btn-danger { - background-image: none; -} -.btn-danger.disabled, -.btn-danger.disabled:hover, -.btn-danger.disabled:focus, -.btn-danger.disabled:active, -.btn-danger.disabled.active, -.btn-danger[disabled], -.btn-danger[disabled]:hover, -.btn-danger[disabled]:focus, -.btn-danger[disabled]:active, -.btn-danger.active[disabled], -fieldset[disabled] .btn-danger, -fieldset[disabled] .btn-danger:hover, -fieldset[disabled] .btn-danger:focus, -fieldset[disabled] .btn-danger:active, -fieldset[disabled] .btn-danger.active { - background-color: #ef6776; - border-color: #ef6776; -} -.btn-link { - color: inherit; -} -.btn-link:hover, -.btn-link:focus, -.btn-link:active, -.btn-link.active, -.open .dropdown-toggle.btn-link { - color: #1c84c6; -} -.btn-link:active, -.btn-link.active, -.open .dropdown-toggle.btn-link { - background-image: none; -} -.btn-link.disabled, -.btn-link.disabled:hover, -.btn-link.disabled:focus, -.btn-link.disabled:active, -.btn-link.disabled.active, -.btn-link[disabled], -.btn-link[disabled]:hover, -.btn-link[disabled]:focus, -.btn-link[disabled]:active, -.btn-link.active[disabled], -fieldset[disabled] .btn-link, -fieldset[disabled] .btn-link:hover, -fieldset[disabled] .btn-link:focus, -fieldset[disabled] .btn-link:active, -fieldset[disabled] .btn-link.active { - color: #cacaca; -} -.btn-white { - color: inherit; - background: white; - border: 1px solid #e7eaec; -} -.btn-white:hover, -.btn-white:focus, -.btn-white:active, -.btn-white.active, -.open .dropdown-toggle.btn-white { - color: inherit; - border: 1px solid #d2d2d2; -} -.btn-white:active, -.btn-white.active { - box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15) inset; -} -.btn-white:active, -.btn-white.active, -.open .dropdown-toggle.btn-white { - background-image: none; -} -.btn-white.disabled, -.btn-white.disabled:hover, -.btn-white.disabled:focus, -.btn-white.disabled:active, -.btn-white.disabled.active, -.btn-white[disabled], -.btn-white[disabled]:hover, -.btn-white[disabled]:focus, -.btn-white[disabled]:active, -.btn-white.active[disabled], -fieldset[disabled] .btn-white, -fieldset[disabled] .btn-white:hover, -fieldset[disabled] .btn-white:focus, -fieldset[disabled] .btn-white:active, -fieldset[disabled] .btn-white.active { - color: #cacaca; -} -.form-control, -.form-control:focus, -.has-error .form-control:focus, -.has-success .form-control:focus, -.has-warning .form-control:focus, -.navbar-collapse, -.navbar-form, -.navbar-form-custom .form-control:focus, -.navbar-form-custom .form-control:hover, -.open .btn.dropdown-toggle, -.panel, -.popover, -.progress, -.progress-bar { - box-shadow: none; -} -.btn-outline { - color: inherit; - background-color: transparent; - transition: all .5s; -} -.btn-rounded { - border-radius: 50px; -} -.btn-large-dim { - width: 90px; - height: 90px; - font-size: 42px; -} -button.dim { - display: inline-block; - color: #fff; - text-decoration: none; - text-transform: uppercase; - text-align: center; - padding-top: 6px; - margin-right: 10px; - position: relative; - cursor: pointer; - border-radius: 5px; - font-weight: 600; - margin-bottom: 20px !important; -} -button.dim:active { - top: 3px; -} -button.btn-primary.dim { - box-shadow: inset 0px 0px 0px #16987e, 0px 5px 0px 0px #16987e, 0px 10px 5px #999999; -} -button.btn-primary.dim:active { - box-shadow: inset 0px 0px 0px #16987e, 0px 2px 0px 0px #16987e, 0px 5px 3px #999999; -} -button.btn-default.dim { - box-shadow: inset 0px 0px 0px #b3b3b3, 0px 5px 0px 0px #b3b3b3, 0px 10px 5px #999999; -} -button.btn-default.dim:active { - box-shadow: inset 0px 0px 0px #b3b3b3, 0px 2px 0px 0px #b3b3b3, 0px 5px 3px #999999; -} -button.btn-warning.dim { - box-shadow: inset 0px 0px 0px #f79d3c, 0px 5px 0px 0px #f79d3c, 0px 10px 5px #999999; -} -button.btn-warning.dim:active { - box-shadow: inset 0px 0px 0px #f79d3c, 0px 2px 0px 0px #f79d3c, 0px 5px 3px #999999; -} -button.btn-info.dim { - box-shadow: inset 0px 0px 0px #1eacae, 0px 5px 0px 0px #1eacae, 0px 10px 5px #999999; -} -button.btn-info.dim:active { - box-shadow: inset 0px 0px 0px #1eacae, 0px 2px 0px 0px #1eacae, 0px 5px 3px #999999; -} -button.btn-success.dim { - box-shadow: inset 0px 0px 0px #1872ab, 0px 5px 0px 0px #1872ab, 0px 10px 5px #999999; -} -button.btn-success.dim:active { - box-shadow: inset 0px 0px 0px #1872ab, 0px 2px 0px 0px #1872ab, 0px 5px 3px #999999; -} -button.btn-danger.dim { - box-shadow: inset 0px 0px 0px #ea394c, 0px 5px 0px 0px #ea394c, 0px 10px 5px #999999; -} -button.btn-danger.dim:active { - box-shadow: inset 0px 0px 0px #ea394c, 0px 2px 0px 0px #ea394c, 0px 5px 3px #999999; -} -button.dim:before { - font-size: 50px; - line-height: 1em; - font-weight: normal; - color: #fff; - display: block; - padding-top: 10px; -} -button.dim:active:before { - top: 7px; - font-size: 50px; -} -.label { - background-color: #d1dade; - color: #5e5e5e; - font-family: 'Open Sans'; - font-size: 10px; - font-weight: 600; - padding: 3px 8px; - text-shadow: none; -} -.badge { - background-color: #d1dade; - color: #5e5e5e; - font-family: 'Open Sans'; - font-size: 11px; - font-weight: 600; - padding-bottom: 4px; - padding-left: 6px; - padding-right: 6px; - text-shadow: none; -} -.label-primary, -.badge-primary { - background-color: #1ab394; - color: #FFFFFF; -} -.label-success, -.badge-success { - background-color: #1c84c6; - color: #FFFFFF; -} -.label-warning, -.badge-warning { - background-color: #f8ac59; - color: #FFFFFF; -} -.label-warning-light, -.badge-warning-light { - background-color: #f8ac59; - color: #ffffff; -} -.label-danger, -.badge-danger { - background-color: #ed5565; - color: #FFFFFF; -} -.label-info, -.badge-info { - background-color: #23c6c8; - color: #FFFFFF; -} -.label-inverse, -.badge-inverse { - background-color: #262626; - color: #FFFFFF; -} -.label-white, -.badge-white { - background-color: #FFFFFF; - color: #5E5E5E; -} -.label-white, -.badge-disable { - background-color: #2A2E36; - color: #8B91A0; -} -/* TOOGLE SWICH */ -.onoffswitch { - position: relative; - width: 64px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; -} -.onoffswitch-checkbox { - display: none; -} -.onoffswitch-label { - display: block; - overflow: hidden; - cursor: pointer; - border: 2px solid #1ab394; - border-radius: 2px; -} -.onoffswitch-inner { - width: 200%; - margin-left: -100%; - -moz-transition: margin 0.3s ease-in 0s; - -webkit-transition: margin 0.3s ease-in 0s; - -o-transition: margin 0.3s ease-in 0s; - transition: margin 0.3s ease-in 0s; -} -.onoffswitch-inner:before, -.onoffswitch-inner:after { - float: left; - width: 50%; - height: 20px; - padding: 0; - line-height: 20px; - font-size: 12px; - color: white; - font-family: Trebuchet, Arial, sans-serif; - font-weight: bold; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - box-sizing: border-box; -} -.onoffswitch-inner:before { - content: "ON"; - padding-left: 10px; - background-color: #1ab394; - color: #FFFFFF; -} -.onoffswitch-inner:after { - content: "OFF"; - padding-right: 10px; - background-color: #FFFFFF; - color: #999999; - text-align: right; -} -.onoffswitch-switch { - width: 20px; - margin: 0px; - background: #FFFFFF; - border: 2px solid #1ab394; - border-radius: 2px; - position: absolute; - top: 0; - bottom: 0; - right: 44px; - -moz-transition: all 0.3s ease-in 0s; - -webkit-transition: all 0.3s ease-in 0s; - -o-transition: all 0.3s ease-in 0s; - transition: all 0.3s ease-in 0s; -} -.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner { - margin-left: 0; -} -.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch { - right: 0px; -} -/* CHOSEN PLUGIN */ -.chosen-container-single .chosen-single { - background: #ffffff; - box-shadow: none; - -moz-box-sizing: border-box; - background-color: #FFFFFF; - border: 1px solid #CBD5DD; - border-radius: 2px; - cursor: text; - height: auto !important; - margin: 0; - min-height: 30px; - overflow: hidden; - padding: 4px 12px; - position: relative; - width: 100%; -} -.chosen-container-multi .chosen-choices li.search-choice { - background: #f1f1f1; - border: 1px solid #ededed; - border-radius: 2px; - box-shadow: none; - color: #333333; - cursor: default; - line-height: 13px; - margin: 3px 0 3px 5px; - padding: 3px 20px 3px 5px; - position: relative; -} -/* PAGINATIN */ -.pagination > .active > a, -.pagination > .active > span, -.pagination > .active > a:hover, -.pagination > .active > span:hover, -.pagination > .active > a:focus, -.pagination > .active > span:focus { - background-color: #f4f4f4; - border-color: #DDDDDD; - color: inherit; - cursor: default; - z-index: 2; -} -.pagination > li > a, -.pagination > li > span { - background-color: #FFFFFF; - border: 1px solid #DDDDDD; - color: inherit; - float: left; - line-height: 1.42857; - margin-left: -1px; - padding: 4px 10px; - position: relative; - text-decoration: none; -} -/* TOOLTIPS */ -.tooltip-inner { - background-color: #2F4050; -} -.tooltip.top .tooltip-arrow { - border-top-color: #2F4050; -} -.tooltip.right .tooltip-arrow { - border-right-color: #2F4050; -} -.tooltip.bottom .tooltip-arrow { - border-bottom-color: #2F4050; -} -.tooltip.left .tooltip-arrow { - border-left-color: #2F4050; -} -/* EASY PIE CHART*/ -.easypiechart { - position: relative; - text-align: center; -} -.easypiechart .h2 { - margin-left: 10px; - margin-top: 10px; - display: inline-block; -} -.easypiechart canvas { - top: 0; - left: 0; -} -.easypiechart .easypie-text { - line-height: 1; - position: absolute; - top: 33px; - width: 100%; - z-index: 1; -} -.easypiechart img { - margin-top: -4px; -} -.jqstooltip { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} -/* FULLCALENDAR */ -.fc-state-default { - background-color: #ffffff; - background-image: none; - background-repeat: repeat-x; - box-shadow: none; - color: #333333; - text-shadow: none; -} -.fc-state-default { - border: 1px solid; -} -.fc-button { - color: inherit; - border: 1px solid #e7eaec; - cursor: pointer; - display: inline-block; - height: 1.9em; - line-height: 1.9em; - overflow: hidden; - padding: 0 0.6em; - position: relative; - white-space: nowrap; -} -.fc-state-active { - background-color: #1ab394; - border-color: #1ab394; - color: #ffffff; -} -.fc-header-title h2 { - font-size: 16px; - font-weight: 600; - color: inherit; -} -.fc-content .fc-widget-header, -.fc-content .fc-widget-content { - border-color: #e7eaec; - font-weight: normal; -} -.fc-border-separate tbody { - background-color: #F8F8F8; -} -.fc-state-highlight { - background: none repeat scroll 0 0 #FCF8E3; -} -.external-event { - padding: 5px 10px; - border-radius: 2px; - cursor: pointer; - margin-bottom: 5px; -} -.fc-ltr .fc-event-hori.fc-event-end, -.fc-rtl .fc-event-hori.fc-event-start { - border-radius: 2px; -} -.fc-event, -.fc-agenda .fc-event-time, -.fc-event a { - padding: 4px 6px; - background-color: #1ab394; - /* background color */ - border-color: #1ab394; - /* border color */ -} -.fc-event-time, -.fc-event-title { - color: #717171; - padding: 0 1px; -} -.ui-calendar .fc-event-time, -.ui-calendar .fc-event-title { - color: #fff; -} -/* Chat */ -.chat-activity-list .chat-element { - border-bottom: 1px solid #e7eaec; -} -.chat-element:first-child { - margin-top: 0; -} -.chat-element { - padding-bottom: 15px; -} -.chat-element, -.chat-element .media { - margin-top: 15px; -} -.chat-element, -.media-body { - overflow: hidden; -} -.media-body { - display: block; -} -.chat-element > .pull-left { - margin-right: 10px; -} -.chat-element img.img-circle, -.dropdown-messages-box img.img-circle { - width: 38px; - height: 38px; -} -.chat-element .well { - border: 1px solid #e7eaec; - box-shadow: none; - margin-top: 10px; - margin-bottom: 5px; - padding: 10px 20px; - font-size: 11px; - line-height: 16px; -} -.chat-element .actions { - margin-top: 10px; -} -.chat-element .photos { - margin: 10px 0; -} -.right.chat-element > .pull-right { - margin-left: 10px; -} -.chat-photo { - max-height: 180px; - border-radius: 4px; - overflow: hidden; - margin-right: 10px; - margin-bottom: 10px; -} -.chat { - margin: 0; - padding: 0; - list-style: none; -} -.chat li { - margin-bottom: 10px; - padding-bottom: 5px; - border-bottom: 1px dotted #B3A9A9; -} -.chat li.left .chat-body { - margin-left: 60px; -} -.chat li.right .chat-body { - margin-right: 60px; -} -.chat li .chat-body p { - margin: 0; - color: #777777; -} -.panel .slidedown .glyphicon, -.chat .glyphicon { - margin-right: 5px; -} -.chat-panel .panel-body { - height: 350px; - overflow-y: scroll; -} -/* LIST GROUP */ -a.list-group-item.active, -a.list-group-item.active:hover, -a.list-group-item.active:focus { - background-color: #1ab394; - border-color: #1ab394; - color: #FFFFFF; - z-index: 2; -} -.list-group-item-heading { - margin-top: 10px; -} -.list-group-item-text { - margin: 0 0 10px; - color: inherit; - font-size: 12px; - line-height: inherit; -} -.no-padding .list-group-item { - border-left: none; - border-right: none; - border-bottom: none; -} -.no-padding .list-group-item:first-child { - border-left: none; - border-right: none; - border-bottom: none; - border-top: none; -} -.no-padding .list-group { - margin-bottom: 0; -} -.list-group-item { - background-color: inherit; - border: 1px solid #e7eaec; - display: block; - margin-bottom: -1px; - padding: 10px 15px; - position: relative; -} -/* FLOT CHART */ -.flot-chart { - display: block; - height: 200px; -} -.widget .flot-chart.dashboard-chart { - display: block; - height: 120px; - margin-top: 40px; -} -.flot-chart.dashboard-chart { - display: block; - height: 180px; - margin-top: 40px; -} -.flot-chart-content { - width: 100%; - height: 100%; -} -.flot-chart-pie-content { - width: 200px; - height: 200px; - margin: auto; -} -.jqstooltip { - position: absolute; - display: block; - left: 0px; - top: 0px; - visibility: hidden; - background: #2b303a; - background-color: rgba(43, 48, 58, 0.8); - color: white; - text-align: left; - white-space: nowrap; - z-index: 10000; - padding: 5px 5px 5px 5px; - min-height: 22px; - border-radius: 3px; -} -.jqsfield { - color: white; - text-align: left; -} -.h-200 { - min-height: 200px; -} -.legendLabel { - padding-left: 5px; -} -.stat-list li:first-child { - margin-top: 0; -} -.stat-list { - list-style: none; - padding: 0; - margin: 0; -} -.stat-percent { - float: right; -} -.stat-list li { - margin-top: 15px; - position: relative; -} -/* DATATABLES */ -table.dataTable thead .sorting, -table.dataTable thead .sorting_asc:after, -table.dataTable thead .sorting_desc, -table.dataTable thead .sorting_asc_disabled, -table.dataTable thead .sorting_desc_disabled { - background: transparent; -} -table.dataTable thead .sorting_asc:after { - float: right; - font-family: fontawesome; -} -table.dataTable thead .sorting_desc:after { - content: "\f0dd"; - float: right; - font-family: fontawesome; -} -table.dataTable thead .sorting:after { - content: "\f0dc"; - float: right; - font-family: fontawesome; - color: rgba(50, 50, 50, 0.5); -} -.dataTables_wrapper { - padding-bottom: 30px; -} -/* CIRCLE */ -.img-circle { - border-radius: 50%; -} -.btn-circle { - width: 30px; - height: 30px; - padding: 6px 0; - border-radius: 15px; - text-align: center; - font-size: 12px; - line-height: 1.428571429; -} -.btn-circle.btn-lg { - width: 50px; - height: 50px; - padding: 10px 16px; - border-radius: 25px; - font-size: 18px; - line-height: 1.33; -} -.btn-circle.btn-xl { - width: 70px; - height: 70px; - padding: 10px 16px; - border-radius: 35px; - font-size: 24px; - line-height: 1.33; -} -.show-grid [class^="col-"] { - padding-top: 10px; - padding-bottom: 10px; - border: 1px solid #ddd; - background-color: #eee !important; -} -.show-grid { - margin: 15px 0; -} -/* ANIMATION */ -.css-animation-box h1 { - font-size: 44px; -} -.animation-efect-links a { - padding: 4px 6px; - font-size: 12px; -} -#animation_box { - background-color: #f9f8f8; - border-radius: 16px; - width: 80%; - margin: 0 auto; - padding-top: 80px; -} -.animation-text-box { - position: absolute; - margin-top: 40px; - left: 50%; - margin-left: -100px; - width: 200px; -} -.animation-text-info { - position: absolute; - margin-top: -60px; - left: 50%; - margin-left: -100px; - width: 200px; - font-size: 10px; -} -.animation-text-box h2 { - font-size: 54px; - font-weight: 600; - margin-bottom: 5px; -} -.animation-text-box p { - font-size: 12px; - text-transform: uppercase; -} -/* PEACE */ -.pace .pace-progress { - background: #1ab394; - position: fixed; - z-index: 2000; - top: 0px; - left: 220px; - height: 2px; - -webkit-transition: width 1s; - -moz-transition: width 1s; - -o-transition: width 1s; - transition: width 1s; -} -.body-small .pace .pace-progress { - left: 0px; -} -.pace-inactive { - display: none; -} -/* WIDGETS */ -.widget { - border-radius: 5px; - padding: 15px 20px; - margin-bottom: 10px; - margin-top: 10px; -} -.widget.style1 h2 { - font-size: 30px; -} -.widget h2, -.widget h3 { - margin-top: 5px; - margin-bottom: 0; -} -.widget-text-box { - padding: 20px; - border: 1px solid #e7eaec; - background: #ffffff; -} -.widget-head-color-box { - border-radius: 5px 5px 0px 0px; - margin-top: 10px; -} -.widget .flot-chart { - height: 100px; -} -.vertical-align div { - display: inline-block; - vertical-align: middle; -} -.vertical-align h2, -.vertical-align h3 { - margin: 0; -} -.todo-list { - list-style: none outside none; - margin: 0; - padding: 0; - font-size: 14px; -} -.todo-list.small-list { - font-size: 12px; -} -.todo-list.small-list > li { - background: #f3f3f4; - border-left: none; - border-right: none; - border-radius: 4px; - color: inherit; - margin-bottom: 2px; - padding: 6px 6px 6px 12px; -} -.todo-list.small-list .btn-xs, -.todo-list.small-list .btn-group-xs > .btn { - border-radius: 5px; - font-size: 10px; - line-height: 1.5; - padding: 1px 2px 1px 5px; -} -.todo-list > li { - background: #f3f3f4; - border-left: 6px solid #e7eaec; - border-right: 6px solid #e7eaec; - border-radius: 4px; - color: inherit; - margin-bottom: 2px; - padding: 10px; -} -.todo-list .handle { - cursor: move; - display: inline-block; - font-size: 16px; - margin: 0 5px; -} -.todo-list > li .label { - font-size: 9px; - margin-left: 10px; -} -.check-link { - font-size: 16px; -} -.todo-completed { - text-decoration: line-through; -} -.geo-statistic h1 { - font-size: 36px; - margin-bottom: 0; -} -.glyphicon.fa { - font-family: "FontAwesome"; -} -/* INPUTS */ -.inline { - display: inline-block !important; -} -.input-s-sm { - width: 120px; -} -.input-s { - width: 200px; -} -.input-s-lg { - width: 250px; -} -.i-checks { - padding-left: 0; -} -.form-control, -.single-line { - background-color: #FFFFFF; - background-image: none; - border: 1px solid #e5e6e7; - border-radius: 1px; - color: inherit; - display: block; - padding: 6px 12px; - transition: border-color 0.15s ease-in-out 0s, box-shadow 0.15s ease-in-out 0s; - width: 100%; - font-size: 14px; -} -.form-control:focus, -.single-line:focus { - border-color: #1ab394; -} -.has-success .form-control { - border-color: #1ab394; -} -.has-warning .form-control { - border-color: #f8ac59; -} -.has-error .form-control { - border-color: #ed5565; -} -.has-success .control-label { - color: #1ab394; -} -.has-warning .control-label { - color: #f8ac59; -} -.has-error .control-label { - color: #ed5565; -} -.input-group-addon { - background-color: #fff; - border: 1px solid #E5E6E7; - border-radius: 1px; - color: inherit; - font-size: 14px; - font-weight: 400; - line-height: 1; - padding: 6px 12px; - text-align: center; -} -.spinner-buttons.input-group-btn .btn-xs { - line-height: 1.13; -} -.spinner-buttons.input-group-btn { - width: 20%; -} -.noUi-connect { - background: none repeat scroll 0 0 #1ab394; - box-shadow: none; -} -.slider_red .noUi-connect { - background: none repeat scroll 0 0 #ed5565; - box-shadow: none; -} -/* UI Sortable */ -.ui-sortable .ibox-title { - cursor: move; -} -.ui-sortable-placeholder { - border: 1px dashed #cecece !important; - visibility: visible !important; - background: #e7eaec; -} -.ibox.ui-sortable-placeholder { - margin: 0px 0px 23px !important; -} -/* SWITCHES */ -.onoffswitch { - position: relative; - width: 54px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; -} -.onoffswitch-checkbox { - display: none; -} -.onoffswitch-label { - display: block; - overflow: hidden; - cursor: pointer; - border: 2px solid #1AB394; - border-radius: 3px; -} -.onoffswitch-inner { - display: block; - width: 200%; - margin-left: -100%; - -moz-transition: margin 0.3s ease-in 0s; - -webkit-transition: margin 0.3s ease-in 0s; - -o-transition: margin 0.3s ease-in 0s; - transition: margin 0.3s ease-in 0s; -} -.onoffswitch-inner:before, -.onoffswitch-inner:after { - display: block; - float: left; - width: 50%; - height: 16px; - padding: 0; - line-height: 16px; - font-size: 10px; - color: white; - font-family: Trebuchet, Arial, sans-serif; - font-weight: bold; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - box-sizing: border-box; -} -.onoffswitch-inner:before { - content: "ON"; - padding-left: 7px; - background-color: #1AB394; - color: #FFFFFF; -} -.onoffswitch-inner:after { - content: "OFF"; - padding-right: 7px; - background-color: #FFFFFF; - color: #919191; - text-align: right; -} -.onoffswitch-switch { - display: block; - width: 18px; - margin: 0px; - background: #FFFFFF; - border: 2px solid #1AB394; - border-radius: 3px; - position: absolute; - top: 0; - bottom: 0; - right: 36px; - -moz-transition: all 0.3s ease-in 0s; - -webkit-transition: all 0.3s ease-in 0s; - -o-transition: all 0.3s ease-in 0s; - transition: all 0.3s ease-in 0s; -} -.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner { - margin-left: 0; -} -.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch { - right: 0px; -} -/* jqGrid */ -.ui-jqgrid { - -moz-box-sizing: content-box; -} -.ui-jqgrid-btable { - border-collapse: separate; -} -.ui-jqgrid-htable { - border-collapse: separate; -} -.ui-jqgrid-titlebar { - height: 40px; - line-height: 15px; - color: #676a6c; - background-color: #F9F9F9; - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); -} -.ui-jqgrid .ui-jqgrid-title { - float: left; - margin: 1.1em 1em 0.2em; -} -.ui-jqgrid .ui-jqgrid-titlebar { - position: relative; - border-left: 0px solid; - border-right: 0px solid; - border-top: 0px solid; -} -.ui-widget-header { - background: none; - background-image: none; - background-color: #f5f5f6; - text-transform: uppercase; - border-top-left-radius: 0px; - border-top-right-radius: 0px; -} -.ui-jqgrid tr.ui-row-ltr td { - border-right-color: inherit; - border-right-style: solid; - border-right-width: 1px; - text-align: left; - border-color: #DDDDDD; - background-color: inherit; -} -.ui-search-toolbar input[type="text"] { - font-size: 12px; - height: 15px; - border: 1px solid #CCCCCC; - border-radius: 0px; -} -.ui-state-default, -.ui-widget-content .ui-state-default, -.ui-widget-header .ui-state-default { - background: #F9F9F9; - border: 1px solid #DDDDDD; - line-height: 15px; - font-weight: bold; - color: #676a6c; - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); -} -.ui-widget-content { - box-sizing: content-box; -} -.ui-icon-triangle-1-n { - background-position: 1px -16px; -} -.ui-jqgrid tr.ui-search-toolbar th { - border-top-width: 0px !important; - border-top-color: inherit !important; - border-top-style: ridge !important; -} -.ui-state-hover, -.ui-widget-content .ui-state-hover, -.ui-state-focus, -.ui-widget-content .ui-state-focus, -.ui-widget-header .ui-state-focus { - background: #f5f5f5; - border-collapse: separate; -} -.ui-state-highlight, -.ui-widget-content .ui-state-highlight, -.ui-widget-header .ui-state-highlight { - background: #f2fbff; -} -.ui-state-active, -.ui-widget-content .ui-state-active, -.ui-widget-header .ui-state-active { - border: 1px solid #dddddd; - background: #ffffff; - font-weight: normal; - color: #212121; -} -.ui-jqgrid .ui-pg-input { - font-size: inherit; - width: 50px; - border: 1px solid #CCCCCC; - height: 15px; -} -.ui-jqgrid .ui-pg-selbox { - display: block; - font-size: 1em; - height: 25px; - line-height: 18px; - margin: 0; - width: auto; -} -.ui-jqgrid .ui-pager-control { - position: relative; -} -.ui-jqgrid .ui-jqgrid-pager { - height: 32px; - position: relative; -} -.ui-pg-table .navtable .ui-corner-all { - border-radius: 0px; -} -.ui-jqgrid .ui-pg-button:hover { - padding: 1px; - border: 0px; -} -.ui-jqgrid .loading { - position: absolute; - top: 45%; - left: 45%; - width: auto; - height: auto; - z-index: 101; - padding: 6px; - margin: 5px; - text-align: center; - font-weight: bold; - display: none; - border-width: 2px !important; - font-size: 11px; -} -.ui-jqgrid .form-control { - height: 10px; - width: auto; - display: inline; - padding: 10px 12px; -} -.ui-jqgrid-pager { - height: 32px; -} -.ui-corner-all, -.ui-corner-top, -.ui-corner-left, -.ui-corner-tl { - border-top-left-radius: 0; -} -.ui-corner-all, -.ui-corner-top, -.ui-corner-right, -.ui-corner-tr { - border-top-right-radius: 0; -} -.ui-corner-all, -.ui-corner-bottom, -.ui-corner-left, -.ui-corner-bl { - border-bottom-left-radius: 0; -} -.ui-corner-all, -.ui-corner-bottom, -.ui-corner-right, -.ui-corner-br { - border-bottom-right-radius: 0; -} -.ui-widget-content { - border: 1px solid #ddd; -} -.ui-jqgrid .ui-jqgrid-titlebar { - padding: 0; -} -.ui-jqgrid .ui-jqgrid-titlebar { - border-bottom: 1px solid #ddd; -} -.ui-jqgrid tr.jqgrow td { - padding: 6px; -} -.ui-jqdialog .ui-jqdialog-titlebar { - padding: 10px 10px; -} -.ui-jqdialog .ui-jqdialog-title { - float: none !important; -} -.ui-jqdialog > .ui-resizable-se { - position: absolute; -} -/* Nestable list */ -.dd { - position: relative; - display: block; - margin: 0; - padding: 0; - list-style: none; - font-size: 13px; - line-height: 20px; -} -.dd-list { - display: block; - position: relative; - margin: 0; - padding: 0; - list-style: none; -} -.dd-list .dd-list { - padding-left: 30px; -} -.dd-collapsed .dd-list { - display: none; -} -.dd-item, -.dd-empty, -.dd-placeholder { - display: block; - position: relative; - margin: 0; - padding: 0; - min-height: 20px; - font-size: 13px; - line-height: 20px; -} -.dd-handle { - display: block; - margin: 5px 0; - padding: 5px 10px; - color: #333; - text-decoration: none; - border: 1px solid #e7eaec; - background: #f5f5f5; - -webkit-border-radius: 3px; - border-radius: 3px; - box-sizing: border-box; - -moz-box-sizing: border-box; -} -.dd-handle span { - font-weight: bold; -} -.dd-handle:hover { - background: #f0f0f0; - cursor: pointer; - font-weight: bold; -} -.dd-item > button { - display: block; - position: relative; - cursor: pointer; - float: left; - width: 25px; - height: 20px; - margin: 5px 0; - padding: 0; - text-indent: 100%; - white-space: nowrap; - overflow: hidden; - border: 0; - background: transparent; - font-size: 12px; - line-height: 1; - text-align: center; - font-weight: bold; -} -.dd-item > button:before { - content: '+'; - display: block; - position: absolute; - width: 100%; - text-align: center; - text-indent: 0; -} -.dd-item > button[data-action="collapse"]:before { - content: '-'; -} -#nestable2 .dd-item > button { - font-family: FontAwesome; - height: 34px; - width: 33px; - color: #c1c1c1; -} -#nestable2 .dd-item > button:before { - content: "\f067"; -} -#nestable2 .dd-item > button[data-action="collapse"]:before { - content: "\f068"; -} -.dd-placeholder, -.dd-empty { - margin: 5px 0; - padding: 0; - min-height: 30px; - background: #f2fbff; - border: 1px dashed #b6bcbf; - box-sizing: border-box; - -moz-box-sizing: border-box; -} -.dd-empty { - border: 1px dashed #bbb; - min-height: 100px; - background-color: #e5e5e5; - background-image: -webkit-linear-gradient(45deg, #ffffff 25%, transparent 25%, transparent 75%, #ffffff 75%, #ffffff), -webkit-linear-gradient(45deg, #ffffff 25%, transparent 25%, transparent 75%, #ffffff 75%, #ffffff); - background-image: -moz-linear-gradient(45deg, #ffffff 25%, transparent 25%, transparent 75%, #ffffff 75%, #ffffff), -moz-linear-gradient(45deg, #ffffff 25%, transparent 25%, transparent 75%, #ffffff 75%, #ffffff); - background-image: linear-gradient(45deg, #ffffff 25%, transparent 25%, transparent 75%, #ffffff 75%, #ffffff), linear-gradient(45deg, #ffffff 25%, transparent 25%, transparent 75%, #ffffff 75%, #ffffff); - background-size: 60px 60px; - background-position: 0 0, 30px 30px; -} -.dd-dragel { - position: absolute; - z-index: 9999; - pointer-events: none; -} -.dd-dragel > .dd-item .dd-handle { - margin-top: 0; -} -.dd-dragel .dd-handle { - -webkit-box-shadow: 2px 4px 6px 0 rgba(0, 0, 0, 0.1); - box-shadow: 2px 4px 6px 0 rgba(0, 0, 0, 0.1); -} -/** -* Nestable Extras -*/ -.nestable-lists { - display: block; - clear: both; - padding: 30px 0; - width: 100%; - border: 0; - border-top: 2px solid #ddd; - border-bottom: 2px solid #ddd; -} -#nestable-menu { - padding: 0; - margin: 10px 0 20px 0; -} -#nestable-output, -#nestable2-output { - width: 100%; - font-size: 0.75em; - line-height: 1.333333em; - font-family: open sans, lucida grande, lucida sans unicode, helvetica, arial, sans-serif; - padding: 5px; - box-sizing: border-box; - -moz-box-sizing: border-box; -} -#nestable2 .dd-handle { - color: inherit; - border: 1px dashed #e7eaec; - background: #f3f3f4; - padding: 10px; -} -#nestable2 .dd-handle:hover { - /*background: #bbb;*/ -} -#nestable2 span.label { - margin-right: 10px; -} -#nestable-output, -#nestable2-output { - font-size: 12px; - padding: 25px; - box-sizing: border-box; - -moz-box-sizing: border-box; -} -/* CodeMirror */ -.CodeMirror { - border: 1px solid #eee; - height: auto; -} -.CodeMirror-scroll { - overflow-y: hidden; - overflow-x: auto; -} -/* Google Maps */ -.google-map { - height: 300px; -} -/* Validation */ -label.error { - color: #cc5965; - display: inline-block; - margin-left: 5px; -} -.form-control.error { - border: 1px dotted #cc5965; -} -/* ngGrid */ -.gridStyle { - border: 1px solid #d4d4d4; - width: 100%; - height: 400px; -} -.gridStyle2 { - border: 1px solid #d4d4d4; - width: 500px; - height: 300px; -} -.ngH eaderCell { - border-right: none; - border-bottom: 1px solid #e7eaec; -} -.ngCell { - border-right: none; -} -.ngTopPanel { - background: #F5F5F6; -} -.ngRow.even { - background: #f9f9f9; -} -.ngRow.selected { - background: #EBF2F1; -} -.ngRow { - border-bottom: 1px solid #e7eaec; -} -.ngCell { - background-color: transparent; -} -.ngHeaderCell { - border-right: none; -} -/* Toastr custom style */ -#toast-container > .toast { - background-image: none !important; -} -#toast-container > .toast:before { - position: fixed; - font-family: FontAwesome; - font-size: 24px; - line-height: 24px; - float: left; - color: #FFF; - padding-right: 0.5em; - margin: auto 0.5em auto -1.5em; -} -#toast-container > .toast-warning:before { - content: "\f003"; -} -#toast-container > .toast-error:before { - content: "\f001"; -} -#toast-container > .toast-info:before { - content: "\f005"; -} -#toast-container > .toast-success:before { - content: "\f00C"; -} -#toast-container > div { - -moz-box-shadow: 0 0 3px #999; - -webkit-box-shadow: 0 0 3px #999; - box-shadow: 0 0 3px #999; - opacity: .9; - -ms-filter: alpha(opacity=90); - filter: alpha(opacity=90); -} -#toast-container > :hover { - -moz-box-shadow: 0 0 4px #999; - -webkit-box-shadow: 0 0 4px #999; - box-shadow: 0 0 4px #999; - opacity: 1; - -ms-filter: alpha(opacity=100); - filter: alpha(opacity=100); - cursor: pointer; -} -.toast { - background-color: #1ab394; -} -.toast-success { - background-color: #1ab394; -} -.toast-error { - background-color: #ed5565; -} -.toast-info { - background-color: #23c6c8; -} -.toast-warning { - background-color: #f8ac59; -} -.toast-top-full-width { - margin-top: 20px; -} -.toast-bottom-full-width { - margin-bottom: 20px; -} -/* Notifie */ -.cg-notify-message.inspinia-notify { - background: #fff; - padding: 0; - box-shadow: 0 0 1px rgba(0, 0, 0, 0.1), 0 2px 4px rgba(0, 0, 0, 0.2); - -webkit-box-shadow: 0 0 1 px rgba(0, 0, 0, 0.1), 0 2 px 4 px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 0 1 px rgba(0, 0, 0, 0.1), 0 2 px 4 px rgba(0, 0, 0, 0.2); - border: none ; - margin-top: 30px; - color: inherit; -} -.inspinia-notify.alert-warning { - border-left: 6px solid #f8ac59; -} -.inspinia-notify.alert-success { - border-left: 6px solid #1c84c6; -} -.inspinia-notify.alert-danger { - border-left: 6px solid #ed5565; -} -.inspinia-notify.alert-info { - border-left: 6px solid #1ab394; -} -/* Image cropper style */ -.img-container, -.img-preview { - overflow: hidden; - text-align: center; - width: 100%; -} -.img-preview-sm { - height: 130px; - width: 200px; -} -/* Forum styles */ -.forum-post-container .media { - margin: 10px 10px 10px 10px; - padding: 20px 10px 20px 10px; - border-bottom: 1px solid #f1f1f1; -} -.forum-avatar { - float: left; - margin-right: 20px; - text-align: center; - width: 110px; -} -.forum-avatar .img-circle { - height: 48px; - width: 48px; -} -.author-info { - color: #676a6c; - font-size: 11px; - margin-top: 5px; - text-align: center; -} -.forum-post-info { - padding: 9px 12px 6px 12px; - background: #f9f9f9; - border: 1px solid #f1f1f1; -} -.media-body > .media { - background: #f9f9f9; - border-radius: 3px; - border: 1px solid #f1f1f1; -} -.forum-post-container .media-body .photos { - margin: 10px 0; -} -.forum-photo { - max-width: 140px; - border-radius: 3px; -} -.media-body > .media .forum-avatar { - width: 70px; - margin-right: 10px; -} -.media-body > .media .forum-avatar .img-circle { - height: 38px; - width: 38px; -} -.mid-icon { - font-size: 66px; -} -.forum-item { - margin: 10px 0; - padding: 10px 0 20px; - border-bottom: 1px solid #f1f1f1; -} -.views-number { - font-size: 24px; - line-height: 18px; - font-weight: 400; -} -.forum-container, -.forum-post-container { - padding: 30px !important; -} -.forum-item small { - color: #999; -} -.forum-item .forum-sub-title { - color: #999; - margin-left: 50px; -} -.forum-title { - margin: 15px 0 15px 0; -} -.forum-info { - text-align: center; -} -.forum-desc { - color: #999; -} -.forum-icon { - float: left; - width: 30px; - margin-right: 20px; - text-align: center; -} -a.forum-item-title { - color: inherit; - display: block; - font-size: 18px; - font-weight: 600; -} -a.forum-item-title:hover { - color: inherit; -} -.forum-icon .fa { - font-size: 30px; - margin-top: 8px; - color: #9b9b9b; -} -.forum-item.active .fa { - color: #1ab394; -} -.forum-item.active a.forum-item-title { - color: #1ab394; -} -@media (max-width: 992px) { - .forum-info { - margin: 15px 0 10px 0px; - /* Comment this is you want to show forum info in small devices */ - display: none; - } - .forum-desc { - float: none !important; - } -} -/* New Timeline style */ -.vertical-container { - /* this class is used to give a max-width to the element it is applied to, and center it horizontally when it reaches that max-width */ - width: 90%; - max-width: 1170px; - margin: 0 auto; -} -.vertical-container::after { - /* clearfix */ - content: ''; - display: table; - clear: both; -} -#vertical-timeline { - position: relative; - padding: 0; - margin-top: 2em; - margin-bottom: 2em; -} -#vertical-timeline::before { - content: ''; - position: absolute; - top: 0; - left: 18px; - height: 100%; - width: 4px; - background: #f1f1f1; -} -.vertical-timeline-content .btn { - float: right; -} -#vertical-timeline.light-timeline:before { - background: #e7eaec; -} -.dark-timeline .vertical-timeline-content:before { - border-color: transparent #f5f5f5 transparent transparent ; -} -.dark-timeline.center-orientation .vertical-timeline-content:before { - border-color: transparent transparent transparent #f5f5f5; -} -.dark-timeline .vertical-timeline-block:nth-child(2n) .vertical-timeline-content:before, -.dark-timeline.center-orientation .vertical-timeline-block:nth-child(2n) .vertical-timeline-content:before { - border-color: transparent #f5f5f5 transparent transparent; -} -.dark-timeline .vertical-timeline-content, -.dark-timeline.center-orientation .vertical-timeline-content { - background: #f5f5f5; -} -@media only screen and (min-width: 1170px) { - #vertical-timeline.center-orientation { - margin-top: 3em; - margin-bottom: 3em; - } - #vertical-timeline.center-orientation:before { - left: 50%; - margin-left: -2px; - } -} -@media only screen and (max-width: 1170px) { - .center-orientation.dark-timeline .vertical-timeline-content:before { - border-color: transparent #f5f5f5 transparent transparent; - } -} -.vertical-timeline-block { - position: relative; - margin: 2em 0; -} -.vertical-timeline-block:after { - content: ""; - display: table; - clear: both; -} -.vertical-timeline-block:first-child { - margin-top: 0; -} -.vertical-timeline-block:last-child { - margin-bottom: 0; -} -@media only screen and (min-width: 1170px) { - .center-orientation .vertical-timeline-block { - margin: 4em 0; - } - .center-orientation .vertical-timeline-block:first-child { - margin-top: 0; - } - .center-orientation .vertical-timeline-block:last-child { - margin-bottom: 0; - } -} -.vertical-timeline-icon { - position: absolute; - top: 0; - left: 0; - width: 40px; - height: 40px; - border-radius: 50%; - font-size: 16px; - border: 3px solid #f1f1f1; - text-align: center; -} -.vertical-timeline-icon i { - display: block; - width: 24px; - height: 24px; - position: relative; - left: 50%; - top: 50%; - margin-left: -12px; - margin-top: -9px; -} -@media only screen and (min-width: 1170px) { - .center-orientation .vertical-timeline-icon { - width: 50px; - height: 50px; - left: 50%; - margin-left: -25px; - -webkit-transform: translateZ(0); - -webkit-backface-visibility: hidden; - font-size: 19px; - } - .center-orientation .vertical-timeline-icon i { - margin-left: -12px; - margin-top: -10px; - } - .center-orientation .cssanimations .vertical-timeline-icon.is-hidden { - visibility: hidden; - } -} -.vertical-timeline-content { - position: relative; - margin-left: 60px; - background: white; - border-radius: 0.25em; - padding: 1em; -} -.vertical-timeline-content:after { - content: ""; - display: table; - clear: both; -} -.vertical-timeline-content h2 { - font-weight: 400; - margin-top: 4px; -} -.vertical-timeline-content p { - margin: 1em 0; - line-height: 1.6; -} -.vertical-timeline-content .vertical-date { - float: left; - font-weight: 500; -} -.vertical-date small { - color: #1ab394; - font-weight: 400; -} -.vertical-timeline-content::before { - content: ''; - position: absolute; - top: 16px; - right: 100%; - height: 0; - width: 0; - border: 7px solid transparent; - border-right: 7px solid white; -} -@media only screen and (min-width: 768px) { - .vertical-timeline-content h2 { - font-size: 18px; - } - .vertical-timeline-content p { - font-size: 13px; - } -} -@media only screen and (min-width: 1170px) { - .center-orientation .vertical-timeline-content { - margin-left: 0; - padding: 1.6em; - width: 45%; - } - .center-orientation .vertical-timeline-content::before { - top: 24px; - left: 100%; - border-color: transparent; - border-left-color: white; - } - .center-orientation .vertical-timeline-content .btn { - float: left; - } - .center-orientation .vertical-timeline-content .vertical-date { - position: absolute; - width: 100%; - left: 122%; - top: 2px; - font-size: 14px; - } - .center-orientation .vertical-timeline-block:nth-child(even) .vertical-timeline-content { - float: right; - } - .center-orientation .vertical-timeline-block:nth-child(even) .vertical-timeline-content::before { - top: 24px; - left: auto; - right: 100%; - border-color: transparent; - border-right-color: white; - } - .center-orientation .vertical-timeline-block:nth-child(even) .vertical-timeline-content .btn { - float: right; - } - .center-orientation .vertical-timeline-block:nth-child(even) .vertical-timeline-content .vertical-date { - left: auto; - right: 122%; - text-align: right; - } - .center-orientation .cssanimations .vertical-timeline-content.is-hidden { - visibility: hidden; - } -} -.sidebard-panel { - width: 220px; - background: #ebebed; - padding: 10px 20px; - position: absolute; - right: 0; -} -.sidebard-panel .feed-element img.img-circle { - width: 32px; - height: 32px; -} -.sidebard-panel .feed-element, -.media-body, -.sidebard-panel p { - font-size: 12px; -} -.sidebard-panel .feed-element { - margin-top: 20px; - padding-bottom: 0; -} -.sidebard-panel .list-group { - margin-bottom: 10px; -} -.sidebard-panel .list-group .list-group-item { - padding: 5px 0; - font-size: 12px; - border: 0; -} -.sidebar-content .wrapper, -.wrapper.sidebar-content { - padding-right: 230px !important; -} -.body-small .sidebar-content .wrapper, -.body-small .wrapper.sidebar-content { - padding-right: 20px !important; -} -body { - font-family: "open sans", "Helvetica Neue", Helvetica, Arial, sans-serif; - background-color: #2f4050; - font-size: 13px; - color: #676a6c; - overflow-x: hidden; -} -body.boxed-layout { - background: url('patterns/shattered.png'); -} -body.boxed-layout #wrapper { - background-color: #2f4050; - max-width: 1200px; - margin: 0 auto; - -webkit-box-shadow: 0px 0px 5px 0px rgba(0, 0, 0, 0.75); - -moz-box-shadow: 0px 0px 5px 0px rgba(0, 0, 0, 0.75); - box-shadow: 0px 0px 5px 0px rgba(0, 0, 0, 0.75); -} -.top-navigation.boxed-layout #wrapper, -.boxed-layout #wrapper.top-navigation { - max-width: 1300px !important; -} -.block { - display: block; -} -.clear { - display: block; - overflow: hidden; -} -a { - cursor: pointer; -} -a:hover, -a:focus { - text-decoration: none; -} -.border-bottom { - border-bottom: 1px solid #e7eaec !important; -} -.font-bold { - font-weight: 600; -} -.font-noraml { - font-weight: 400; -} -.text-uppercase { - text-transform: uppercase; -} -.b-r { - border-right: 1px solid #e7eaec; -} -.hr-line-dashed { - border-top: 1px dashed #e7eaec; - color: #ffffff; - background-color: #ffffff; - height: 1px; - margin: 20px 0; -} -.hr-line-solid { - border-bottom: 1px solid #e7eaec; - background-color: rgba(0, 0, 0, 0); - border-style: solid !important; - margin-top: 15px; - margin-bottom: 15px; -} -video { - width: 100% !important; - height: auto !important; -} -/* GALLERY */ -.gallery > .row > div { - margin-bottom: 15px; -} -.fancybox img { - margin-bottom: 5px; - /* Only for demo */ - width: 24%; -} -/* Summernote text editor */ -.note-editor { - height: auto; - min-height: 300px; -} -/* MODAL */ -.modal-content { - background-clip: padding-box; - background-color: #FFFFFF; - border: 1px solid rgba(0, 0, 0, 0); - border-radius: 4px; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); - outline: 0 none; - position: relative; -} -.modal-dialog { - z-index: 1200; -} -.modal-body { - padding: 20px 30px 30px 30px; -} -.inmodal .modal-body { - background: #f8fafb; -} -.inmodal .modal-header { - padding: 30px 15px; - text-align: center; -} -.animated.modal.fade .modal-dialog { - -webkit-transform: none; - -ms-transform: none; - -o-transform: none; - transform: none; -} -.inmodal .modal-title { - font-size: 26px; -} -.inmodal .modal-icon { - font-size: 84px; - color: #e2e3e3; -} -.modal-footer { - margin-top: 0; -} -/* WRAPPERS */ -#wrapper { - width: 100%; - overflow-x: hidden; -} -.wrapper { - padding: 0 20px; -} -.wrapper-content { - padding: 20px 10px 40px; -} -#page-wrapper { - padding: 0 15px; - min-height: 568px; - position: relative !important; -} -@media (min-width: 768px) { - #page-wrapper { - position: inherit; - margin: 0 0 0 240px; - min-height: 1000px; - } -} -.title-action { - text-align: right; - padding-top: 30px; -} -.ibox-content h1, -.ibox-content h2, -.ibox-content h3, -.ibox-content h4, -.ibox-content h5, -.ibox-title h1, -.ibox-title h2, -.ibox-title h3, -.ibox-title h4, -.ibox-title h5 { - margin-top: 5px; -} -ul.unstyled, -ol.unstyled { - list-style: none outside none; - margin-left: 0; -} -.big-icon { - font-size: 160px; - color: #e5e6e7; -} -/* FOOTER */ -.footer { - background: none repeat scroll 0 0 white; - border-top: 1px solid #e7eaec; - bottom: 0; - left: 0; - padding: 10px 20px; - position: absolute; - right: 0; -} -.footer.fixed_full { - position: fixed; - bottom: 0; - left: 0; - right: 0; - z-index: 1000; - padding: 10px 20px; - background: white; - border-top: 1px solid #e7eaec; -} -.footer.fixed { - position: fixed; - bottom: 0; - left: 0; - right: 0; - z-index: 1000; - padding: 10px 20px; - background: white; - border-top: 1px solid #e7eaec; - margin-left: 220px; -} -body.mini-navbar .footer.fixed, -body.body-small.mini-navbar .footer.fixed { - margin: 0 0 0 70px; -} -body.fixed-sidebar.body-small.mini-navbar .footer.fixed { - margin: 0 0 0 220px; -} -body.body-small .footer.fixed { - margin-left: 0px; -} -/* PANELS */ -.page-heading { - border-top: 0; - padding: 0px 10px 20px 10px; -} -.panel-heading h1, -.panel-heading h2 { - margin-bottom: 5px; -} -/* TABLES */ -.table-bordered { - border: 1px solid #EBEBEB; -} -.table-bordered > thead > tr > th, -.table-bordered > thead > tr > td { - background-color: #F5F5F6; - border-bottom-width: 1px; -} -.table-bordered > thead > tr > th, -.table-bordered > tbody > tr > th, -.table-bordered > tfoot > tr > th, -.table-bordered > thead > tr > td, -.table-bordered > tbody > tr > td, -.table-bordered > tfoot > tr > td { - border: 1px solid #e7e7e7; -} -.table > thead > tr > th { - border-bottom: 1px solid #DDDDDD; - vertical-align: bottom; -} -.table > thead > tr > th, -.table > tbody > tr > th, -.table > tfoot > tr > th, -.table > thead > tr > td, -.table > tbody > tr > td, -.table > tfoot > tr > td { - border-top: 1px solid #e7eaec; - line-height: 1.42857; - padding: 8px; - vertical-align: top; -} -/* PANELS */ -.panel.blank-panel { - background: none; - margin: 0; -} -.blank-panel .panel-heading { - padding-bottom: 0; -} -.nav-tabs > li.active > a, -.nav-tabs > li.active > a:hover, -.nav-tabs > li.active > a:focus { - -moz-border-bottom-colors: none; - -moz-border-left-colors: none; - -moz-border-right-colors: none; - -moz-border-top-colors: none; - background: none; - border-color: #dddddd #dddddd rgba(0, 0, 0, 0); - border-bottom: #f3f3f4; - border-image: none; - border-style: solid; - border-width: 1px; - color: #555555; - cursor: default; -} -.nav.nav-tabs li { - background: none; - border: none; -} -.nav-tabs > li > a { - color: #A7B1C2; - font-weight: 600; - padding: 10px 20px 10px 25px; -} -.nav-tabs > li > a:hover, -.nav-tabs > li > a:focus { - background-color: #e6e6e6; - color: #676a6c; -} -.ui-tab .tab-content { - padding: 20px 0px; -} -/* GLOBAL */ -.no-padding { - padding: 0 !important; -} -.no-borders { - border: none !important; -} -.no-margins { - margin: 0 !important; -} -.no-top-border { - border-top: 0 !important; -} -.ibox-content.text-box { - padding-bottom: 0px; - padding-top: 15px; -} -.border-left-right { - border-left: 1px solid #e7eaec; - border-right: 1px solid #e7eaec; - border-top: none; - border-bottom: none; -} -.full-width { - width: 100% !important; -} -.link-block { - font-size: 12px; - padding: 10px; -} -.nav.navbar-top-links .link-block a { - font-size: 12px; -} -.link-block a { - font-size: 10px; - color: inherit; -} -body.mini-navbar .branding { - display: none; -} -img.circle-border { - border: 6px solid #FFFFFF; - border-radius: 50%; -} -.branding { - float: left; - color: #FFFFFF; - font-size: 18px; - font-weight: 600; - padding: 17px 20px; - text-align: center; - background-color: #1ab394; -} -.login-panel { - margin-top: 25%; -} -.icons-box h3 { - margin-top: 10px; - margin-bottom: 10px; -} -.icons-box .infont a i { - font-size: 25px; - display: block; - color: #676a6c; -} -.icons-box .infont a { - color: #a6a8a9; -} -.icons-box .infont a { - padding: 10px; - margin: 1px; - display: block; -} -.ui-draggable .ibox-title { - cursor: move; -} -.breadcrumb { - background-color: #ffffff; - padding: 0; - margin-bottom: 0; -} -.breadcrumb > li a { - color: inherit; -} -.breadcrumb > .active { - color: inherit; -} -code { - background-color: #F9F2F4; - border-radius: 4px; - color: #ca4440; - font-size: 90%; - padding: 2px 4px; - white-space: nowrap; -} -.ibox { - clear: both; - margin-bottom: 25px; - margin-top: 0; - padding: 0; -} -.ibox:after, -.ibox:before { - display: table; -} -.ibox-title { - -moz-border-bottom-colors: none; - -moz-border-left-colors: none; - -moz-border-right-colors: none; - -moz-border-top-colors: none; - background-color: #ffffff; - border-color: #e7eaec; - border-image: none; - border-style: solid solid none; - border-width: 4px 0px 0; - color: inherit; - margin-bottom: 0; - padding: 14px 15px 7px; - height: 48px; -} -.ibox-content { - background-color: #ffffff; - color: inherit; - padding: 15px 20px 20px 20px; - border-color: #e7eaec; - border-image: none; - border-style: solid solid none; - border-width: 1px 0px; -} -table.table-mail tr td { - padding: 12px; -} -.table-mail .check-mail { - padding-left: 20px; -} -.table-mail .mail-date { - padding-right: 20px; -} -.star-mail, -.check-mail { - width: 40px; -} -.unread td a, -.unread td { - font-weight: 600; - color: inherit; -} -.read td a, -.read td { - font-weight: normal; - color: inherit; -} -.unread td { - background-color: #f9f8f8; -} -.ibox-content { - clear: both; -} -.ibox-heading { - background-color: #f3f6fb; - border-bottom: none; -} -.ibox-heading h3 { - font-weight: 200; - font-size: 24px; -} -.ibox-title h5 { - display: inline-block; - font-size: 14px; - margin: 0 0 7px; - padding: 0; - text-overflow: ellipsis; - float: left; -} -.ibox-title .label { - float: left; - margin-left: 4px; -} -.ibox-tools { - display: inline-block; - float: right; - margin-top: 0; - position: relative; - padding: 0; -} -.ibox-tools a { - cursor: pointer; - margin-left: 5px; - color: #c4c4c4; -} -.ibox-tools a.btn-primary { - color: #fff; -} -.ibox-tools .dropdown-menu > li > a { - padding: 4px 10px; - font-size: 12px; -} -.ibox .open > .dropdown-menu { - left: auto; - right: 0; -} -/* BACKGROUNDS */ -.gray-bg { - background-color: #f3f3f4; -} -.white-bg { - background-color: #ffffff; -} -.navy-bg { - background-color: #1ab394; - color: #ffffff; -} -.blue-bg { - background-color: #1c84c6; - color: #ffffff; -} -.lazur-bg { - background-color: #23c6c8; - color: #ffffff; -} -.yellow-bg { - background-color: #f8ac59; - color: #ffffff; -} -.red-bg { - background-color: #ed5565; - color: #ffffff; -} -.black-bg { - background-color: #262626; -} -.panel-primary { - border-color: #1ab394; -} -.panel-primary > .panel-heading { - background-color: #1ab394; - border-color: #1ab394; -} -.panel-success { - border-color: #1c84c6; -} -.panel-success > .panel-heading { - background-color: #1c84c6; - border-color: #1c84c6; - color: #ffffff; -} -.panel-info { - border-color: #23c6c8; -} -.panel-info > .panel-heading { - background-color: #23c6c8; - border-color: #23c6c8; - color: #ffffff; -} -.panel-warning { - border-color: #f8ac59; -} -.panel-warning > .panel-heading { - background-color: #f8ac59; - border-color: #f8ac59; - color: #ffffff; -} -.panel-danger { - border-color: #ed5565; -} -.panel-danger > .panel-heading { - background-color: #ed5565; - border-color: #ed5565; - color: #ffffff; -} -.progress-bar { - background-color: #1ab394; -} -.progress-small, -.progress-small .progress-bar { - height: 10px; -} -.progress-small, -.progress-mini { - margin-top: 5px; -} -.progress-mini, -.progress-mini .progress-bar { - height: 5px; - margin-bottom: 0px; -} -.progress-bar-navy-light { - background-color: #3dc7ab; -} -.progress-bar-success { - background-color: #1c84c6; -} -.progress-bar-info { - background-color: #23c6c8; -} -.progress-bar-warning { - background-color: #f8ac59; -} -.progress-bar-danger { - background-color: #ed5565; -} -.panel-title { - font-size: inherit; -} -.jumbotron { - border-radius: 6px; - padding: 40px; -} -.jumbotron h1 { - margin-top: 0; -} -/* COLORS */ -.text-navy { - color: #1ab394; -} -.text-primary { - color: inherit; -} -.text-success { - color: #1c84c6; -} -.text-info { - color: #23c6c8; -} -.text-warning { - color: #f8ac59; -} -.text-danger { - color: #ed5565; -} -.text-muted { - color: #888888; -} -.simple_tag { - background-color: #f3f3f4; - border: 1px solid #e7eaec; - border-radius: 2px; - color: inherit; - font-size: 10px; - margin-right: 5px; - margin-top: 5px; - padding: 5px 12px; - display: inline-block; -} -.img-shadow { - -webkit-box-shadow: 0px 0px 3px 0px #919191; - -moz-box-shadow: 0px 0px 3px 0px #919191; - box-shadow: 0px 0px 3px 0px #919191; -} -/* For handle diferent bg color in AngularJS version */ -.dashboards\.dashboard_2 nav.navbar, -.dashboards\.dashboard_3 nav.navbar, -.mailbox\.inbox nav.navbar, -.mailbox\.email_view nav.navbar, -.mailbox\.email_compose nav.navbar, -.dashboards\.dashboard_4_1 nav.navbar { - background: #fff; -} -/* For handle diferent bg color in MVC version */ -.Dashboard_2 .navbar.navbar-static-top, -.Dashboard_3 .navbar.navbar-static-top, -.Dashboard_4_1 .navbar.navbar-static-top, -.ComposeEmail .navbar.navbar-static-top, -.EmailView .navbar.navbar-static-top, -.Inbox .navbar.navbar-static-top { - background: #fff; -} -/* MARGINS & PADDINGS */ -.p-xxs { - padding: 5px; -} -.p-xs { - padding: 10px; -} -.p-sm { - padding: 15px; -} -.p-m { - padding: 20px; -} -.p-md { - padding: 25px; -} -.p-lg { - padding: 30px; -} -.p-xl { - padding: 40px; -} -.m-xxs { - margin: 2px 4px; -} -.m-xs { - margin: 5px; -} -.m-sm { - margin: 10px; -} -.m { - margin: 15px; -} -.m-md { - margin: 20px; -} -.m-lg { - margin: 30px; -} -.m-xl { - margin: 50px; -} -.m-n { - margin: 0 !important; -} -.m-l-none { - margin-left: 0; -} -.m-l-xs { - margin-left: 5px; -} -.m-l-sm { - margin-left: 10px; -} -.m-l { - margin-left: 15px; -} -.m-l-md { - margin-left: 20px; -} -.m-l-lg { - margin-left: 30px; -} -.m-l-xl { - margin-left: 40px; -} -.m-l-n-xxs { - margin-left: -1px; -} -.m-l-n-xs { - margin-left: -5px; -} -.m-l-n-sm { - margin-left: -10px; -} -.m-l-n { - margin-left: -15px; -} -.m-l-n-md { - margin-left: -20px; -} -.m-l-n-lg { - margin-left: -30px; -} -.m-l-n-xl { - margin-left: -40px; -} -.m-t-none { - margin-top: 0; -} -.m-t-xxs { - margin-top: 1px; -} -.m-t-xs { - margin-top: 5px; -} -.m-t-sm { - margin-top: 10px; -} -.m-t { - margin-top: 15px; -} -.m-t-md { - margin-top: 20px; -} -.m-t-lg { - margin-top: 30px; -} -.m-t-xl { - margin-top: 40px; -} -.m-t-n-xxs { - margin-top: -1px; -} -.m-t-n-xs { - margin-top: -5px; -} -.m-t-n-sm { - margin-top: -10px; -} -.m-t-n { - margin-top: -15px; -} -.m-t-n-md { - margin-top: -20px; -} -.m-t-n-lg { - margin-top: -30px; -} -.m-t-n-xl { - margin-top: -40px; -} -.m-r-none { - margin-right: 0; -} -.m-r-xxs { - margin-right: 1px; -} -.m-r-xs { - margin-right: 5px; -} -.m-r-sm { - margin-right: 10px; -} -.m-r { - margin-right: 15px; -} -.m-r-md { - margin-right: 20px; -} -.m-r-lg { - margin-right: 30px; -} -.m-r-xl { - margin-right: 40px; -} -.m-r-n-xxs { - margin-right: -1px; -} -.m-r-n-xs { - margin-right: -5px; -} -.m-r-n-sm { - margin-right: -10px; -} -.m-r-n { - margin-right: -15px; -} -.m-r-n-md { - margin-right: -20px; -} -.m-r-n-lg { - margin-right: -30px; -} -.m-r-n-xl { - margin-right: -40px; -} -.m-b-none { - margin-bottom: 0; -} -.m-b-xxs { - margin-bottom: 1px; -} -.m-b-xs { - margin-bottom: 5px; -} -.m-b-sm { - margin-bottom: 10px; -} -.m-b { - margin-bottom: 15px; -} -.m-b-md { - margin-bottom: 20px; -} -.m-b-lg { - margin-bottom: 30px; -} -.m-b-xl { - margin-bottom: 40px; -} -.m-b-n-xxs { - margin-bottom: -1px; -} -.m-b-n-xs { - margin-bottom: -5px; -} -.m-b-n-sm { - margin-bottom: -10px; -} -.m-b-n { - margin-bottom: -15px; -} -.m-b-n-md { - margin-bottom: -20px; -} -.m-b-n-lg { - margin-bottom: -30px; -} -.m-b-n-xl { - margin-bottom: -40px; -} -.space-15 { - margin: 15px 0; -} -.space-20 { - margin: 20px 0; -} -.space-25 { - margin: 25px 0; -} -.space-30 { - margin: 30px 0; -} -body.modal-open { - padding-right: inherit !important; -} -/* SEARCH PAGE */ -.search-form { - margin-top: 10px; -} -.search-result h3 { - margin-bottom: 0; - color: #1E0FBE; -} -.search-result .search-link { - color: #006621; -} -.search-result p { - font-size: 12px; - margin-top: 5px; -} -/* CONTACTS */ -.contact-box { - background-color: #ffffff; - border: 1px solid #e7eaec; - padding: 20px; - margin-bottom: 20px; -} -.contact-box a { - color: inherit; -} -/* INVOICE */ -.invoice-table tbody > tr > td:last-child, -.invoice-table tbody > tr > td:nth-child(4), -.invoice-table tbody > tr > td:nth-child(3), -.invoice-table tbody > tr > td:nth-child(2) { - text-align: right; -} -.invoice-table thead > tr > th:last-child, -.invoice-table thead > tr > th:nth-child(4), -.invoice-table thead > tr > th:nth-child(3), -.invoice-table thead > tr > th:nth-child(2) { - text-align: right; -} -.invoice-total > tbody > tr > td:first-child { - text-align: right; -} -.invoice-total > tbody > tr > td { - border: 0 none; -} -.invoice-total > tbody > tr > td:last-child { - border-bottom: 1px solid #DDDDDD; - text-align: right; - width: 15%; -} -/* ERROR & LOGIN & LOCKSCREEN*/ -.middle-box { - height: 400px; - width: 400px; - position: absolute; - top: 50%; - left: 50%; - margin-top: -250px; - margin-left: -200px; - z-index: 100; -} -.lockscreen.middle-box { - width: 200px; - margin-left: -100px; - margin-top: -190px; -} -.loginscreen.middle-box { - width: 300px; - margin-left: -150px; - margin-top: -330px; -} -.loginColumns { - width: 760px; - margin: 8% auto 0; -} -.logo-name { - color: #e6e6e6; - font-size: 180px; - font-weight: 800; - letter-spacing: -10px; - margin-bottom: 0px; -} -.middle-box h1 { - font-size: 170px; -} -.wrapper .middle-box { - margin-top: 140px; -} -.lock-word { - z-index: 10; - position: absolute; - top: 50%; - left: 50%; - margin-top: -180px; - margin-left: -470px; -} -.lock-word span { - font-size: 100px; - font-weight: 600; - color: #e9e9e9; - display: inline-block; -} -.lock-word .first-word { - margin-right: 160px; -} -/* DASBOARD */ -.dashboard-header { - border-top: 0; - padding: 20px 20px 20px 20px; -} -.dashboard-header h2 { - margin-top: 10px; - font-size: 26px; -} -.fist-item { - border-top: none !important; -} -.statistic-box { - margin-top: 40px; -} -.dashboard-header .list-group-item span.label { - margin-right: 10px; -} -.list-group.clear-list .list-group-item { - border-top: 1px solid #e7eaec; - border-bottom: 0; - border-right: 0; - border-left: 0; - padding: 10px 0; -} -ul.clear-list:first-child { - border-top: none !important; -} -/* Intimeline */ -.timeline-item .date i { - position: absolute; - top: 0; - right: 0; - padding: 5px; - width: 30px; - text-align: center; - border-top: 1px solid #e7eaec; - border-bottom: 1px solid #e7eaec; - border-left: 1px solid #e7eaec; - background: #f8f8f8; -} -.timeline-item .date { - text-align: right; - width: 110px; - position: relative; - padding-top: 30px; -} -.timeline-item .content { - border-left: 1px solid #e7eaec; - border-top: 1px solid #e7eaec; - padding-top: 10px; - min-height: 100px; -} -.timeline-item .content:hover { - background: #f6f6f6; -} -/* PIN BOARD */ -ul.notes li, -ul.tag-list li { - list-style: none; -} -ul.notes li h4 { - margin-top: 20px; - font-size: 16px; -} -ul.notes li div { - text-decoration: none; - color: #000; - background: #ffc; - display: block; - height: 140px; - width: 140px; - padding: 1em; - position: relative; -} -ul.notes li div small { - position: absolute; - top: 5px; - right: 5px; - font-size: 10px; -} -ul.notes li div a { - position: absolute; - right: 10px; - bottom: 10px; - color: inherit; -} -ul.notes li { - margin: 10px 40px 50px 0px; - float: left; -} -ul.notes li div p { - font-size: 12px; -} -ul.notes li div { - text-decoration: none; - color: #000; - background: #ffc; - display: block; - height: 140px; - width: 140px; - padding: 1em; - /* Firefox */ - -moz-box-shadow: 5px 5px 2px #212121; - /* Safari+Chrome */ - -webkit-box-shadow: 5px 5px 2px rgba(33, 33, 33, 0.7); - /* Opera */ - box-shadow: 5px 5px 2px rgba(33, 33, 33, 0.7); -} -ul.notes li div { - -webkit-transform: rotate(-6deg); - -o-transform: rotate(-6deg); - -moz-transform: rotate(-6deg); -} -ul.notes li:nth-child(even) div { - -o-transform: rotate(4deg); - -webkit-transform: rotate(4deg); - -moz-transform: rotate(4deg); - position: relative; - top: 5px; -} -ul.notes li:nth-child(3n) div { - -o-transform: rotate(-3deg); - -webkit-transform: rotate(-3deg); - -moz-transform: rotate(-3deg); - position: relative; - top: -5px; -} -ul.notes li:nth-child(5n) div { - -o-transform: rotate(5deg); - -webkit-transform: rotate(5deg); - -moz-transform: rotate(5deg); - position: relative; - top: -10px; -} -ul.notes li div:hover, -ul.notes li div:focus { - -webkit-transform: scale(1.1); - -moz-transform: scale(1.1); - -o-transform: scale(1.1); - position: relative; - z-index: 5; -} -ul.notes li div { - text-decoration: none; - color: #000; - background: #ffc; - display: block; - height: 210px; - width: 210px; - padding: 1em; - -moz-box-shadow: 5px 5px 7px #212121; - -webkit-box-shadow: 5px 5px 7px rgba(33, 33, 33, 0.7); - box-shadow: 5px 5px 7px rgba(33, 33, 33, 0.7); - -moz-transition: -moz-transform 0.15s linear; - -o-transition: -o-transform 0.15s linear; - -webkit-transition: -webkit-transform 0.15s linear; -} -/* FILE MANAGER */ -.file-box { - float: left; - width: 220px; -} -.file-manager h5 { - text-transform: uppercase; -} -.file-manager { - list-style: none outside none; - margin: 0; - padding: 0; -} -.folder-list li a { - color: #666666; - display: block; - padding: 5px 0; -} -.folder-list li { - border-bottom: 1px solid #e7eaec; - display: block; -} -.folder-list li i { - margin-right: 8px; - color: #3d4d5d; -} -.category-list li a { - color: #666666; - display: block; - padding: 5px 0; -} -.category-list li { - display: block; -} -.category-list li i { - margin-right: 8px; - color: #3d4d5d; -} -.category-list li a .text-navy { - color: #1ab394; -} -.category-list li a .text-primary { - color: #1c84c6; -} -.category-list li a .text-info { - color: #23c6c8; -} -.category-list li a .text-danger { - color: #EF5352; -} -.category-list li a .text-warning { - color: #F8AC59; -} -.file-manager h5.tag-title { - margin-top: 20px; -} -.tag-list li { - float: left; -} -.tag-list li a { - font-size: 10px; - background-color: #f3f3f4; - padding: 5px 12px; - color: inherit; - border-radius: 2px; - border: 1px solid #e7eaec; - margin-right: 5px; - margin-top: 5px; - display: block; -} -.file { - border: 1px solid #e7eaec; - padding: 0; - background-color: #ffffff; - position: relative; - margin-bottom: 20px; - margin-right: 20px; -} -.file-manager .hr-line-dashed { - margin: 15px 0; -} -.file .icon, -.file .image { - height: 100px; - overflow: hidden; -} -.file .icon { - padding: 15px 10px; - text-align: center; -} -.file-control { - color: inherit; - font-size: 11px; - margin-right: 10px; -} -.file-control.active { - text-decoration: underline; -} -.file .icon i { - font-size: 70px; - color: #dadada; -} -.file .file-name { - padding: 10px; - background-color: #f8f8f8; - border-top: 1px solid #e7eaec; -} -.file-name small { - color: #676a6c; -} -.corner { - position: absolute; - display: inline-block; - width: 0; - height: 0; - line-height: 0; - border: 0.6em solid transparent; - border-right: 0.6em solid #f1f1f1; - border-bottom: 0.6em solid #f1f1f1; - right: 0em; - bottom: 0em; -} -a.compose-mail { - padding: 8px 10px; -} -.mail-search { - max-width: 300px; -} -/* PROFILE */ -.profile-content { - border-top: none !important; -} -.feed-activity-list .feed-element { - border-bottom: 1px solid #e7eaec; -} -.feed-element:first-child { - margin-top: 0; -} -.feed-element { - padding-bottom: 15px; -} -.feed-element, -.feed-element .media { - margin-top: 15px; -} -.feed-element, -.media-body { - overflow: hidden; -} -.feed-element > .pull-left { - margin-right: 10px; -} -.feed-element img.img-circle, -.dropdown-messages-box img.img-circle { - width: 38px; - height: 38px; -} -.feed-element .well { - border: 1px solid #e7eaec; - box-shadow: none; - margin-top: 10px; - margin-bottom: 5px; - padding: 10px 20px; - font-size: 11px; - line-height: 16px; -} -.feed-element .actions { - margin-top: 10px; -} -.feed-element .photos { - margin: 10px 0; -} -.feed-photo { - max-height: 180px; - border-radius: 4px; - overflow: hidden; - margin-right: 10px; - margin-bottom: 10px; -} -/* MAILBOX */ -.mail-box { - background-color: #ffffff; - border: 1px solid #e7eaec; - border-top: 0; - padding: 0px; - margin-bottom: 20px; -} -.mail-box-header { - background-color: #ffffff; - border: 1px solid #e7eaec; - border-bottom: 0; - padding: 30px 20px 20px 20px; -} -.mail-box-header h2 { - margin-top: 0px; -} -.mailbox-content .tag-list li a { - background: #ffffff; -} -.mail-body { - border-top: 1px solid #e7eaec; - padding: 20px; -} -.mail-text { - border-top: 1px solid #e7eaec; -} -.mail-text .note-toolbar { - padding: 10px 15px; -} -.mail-body .form-group { - margin-bottom: 5px; -} -.mail-text .note-editor .note-toolbar { - background-color: #F9F8F8; -} -.mail-attachment { - border-top: 1px solid #e7eaec; - padding: 20px; - font-size: 12px; -} -.mailbox-content { - background: none; - border: none; - padding: 10px; -} -.mail-ontact { - width: 23%; -} -/* PROJECTS */ -.project-people, -.project-actions { - text-align: right; - vertical-align: middle; -} -dd.project-people { - text-align: left; - margin-top: 5px; -} -.project-people img { - width: 32px; - height: 32px; -} -.project-title a { - font-size: 14px; - color: #676a6c; - font-weight: 600; -} -.project-list table tr td { - border-top: none; - border-bottom: 1px solid #e7eaec; - padding: 15px 10px; - vertical-align: middle; -} -.project-manager .tag-list li a { - font-size: 10px; - background-color: white; - padding: 5px 12px; - color: inherit; - border-radius: 2px; - border: 1px solid #e7eaec; - margin-right: 5px; - margin-top: 5px; - display: block; -} -.project-files li a { - font-size: 11px; - color: #676a6c; - margin-left: 10px; - line-height: 22px; -} -/* FAQ */ -.faq-item { - padding: 20px; - margin-bottom: 2px; - background: #fff; -} -.faq-question { - font-size: 18px; - font-weight: 600; - color: #1ab394; - display: block; -} -.faq-question:hover { - color: #179d82; -} -.faq-answer { - margin-top: 10px; - background: #f3f3f4; - border: 1px solid #e7eaec; - border-radius: 3px; - padding: 15px; -} -.faq-item .tag-item { - background: #f3f3f4; - padding: 2px 6px; - font-size: 10px; - text-transform: uppercase; -} -/* Chat view */ -.message-input { - height: 90px !important; -} -.chat-avatar { - white: 36px; - height: 36px; - float: left; - margin-right: 10px; -} -.chat-user-name { - padding: 10px; -} -.chat-user { - padding: 8px 10px; - border-bottom: 1px solid #e7eaec; -} -.chat-user a { - color: inherit; -} -/*------------------------*/ -.chat-view .ibox-content { - /*height: 500px;*/ -} -.theme-config-box { - z-index: 1; -} -.chat-view { - z-index: 20012; -} -.chat-users, -.chat-statistic { - margin-left: -30px; -} -@media (max-width: 992px) { - .chat-users, - .chat-statistic { - margin-left: 0px; - } -} -.chat-view .ibox-content { - padding: 0; -} -.chat-message { - padding: 10px 20px; -} -.message-avatar { - height: 48px; - width: 48px; - border: 1px solid #e7eaec; - border-radius: 4px; - margin-top: 1px; -} -.chat-discussion .chat-message:nth-child(2n+1) .message-avatar { - float: left; - margin-right: 10px; -} -.chat-discussion .chat-message:nth-child(2n) .message-avatar { - float: right; - margin-left: 10px; -} -.message { - background-color: #fff; - border: 1px solid #e7eaec; - text-align: left; - display: block; - padding: 10px 20px; - position: relative; - border-radius: 4px; -} -.chat-discussion .chat-message:nth-child(2n+1) .message-date { - float: right; -} -.chat-discussion .chat-message:nth-child(2n) .message-date { - float: left; -} -.chat-discussion .chat-message:nth-child(2n+1) .message { - text-align: left; - margin-left: 55px; -} -.chat-discussion .chat-message:nth-child(2n) .message { - text-align: right; - margin-right: 55px; -} -.message-date { - font-size: 10px; - color: #888888; -} -.message-content { - display: block; -} -.chat-discussion { - background: #eee; - padding: 15px; - height: 400px; - overflow-y: auto; -} -.chat-users { - overflow-y: auto; - height: 400px; -} -.chat-message-form .form-group { - margin-bottom: 0; -} -/* jsTree */ -.jstree-open > .jstree-anchor > .fa-folder:before { - content: "\f07c"; -} -.jstree-default .jstree-icon.none { - width: 0; -} -body.rtls { - /* Theme config */ -} -body.rtls #page-wrapper { - margin: 0 220px 0 0; -} -body.rtls .nav-second-level li a { - padding: 7px 35px 7px 10px; -} -body.rtls .ibox-title h5 { - float: right; -} -body.rtls .pull-right { - float: left !important; -} -body.rtls .pull-left { - float: right !important; -} -body.rtls .ibox-tools { - float: left; -} -body.rtls .stat-percent { - float: left; -} -body.rtls .navbar-right { - float: left !important; -} -body.rtls .navbar-top-links li:last-child { - margin-left: 40px; - margin-right: 0; -} -body.rtls .minimalize-styl-2 { - float: right; - margin: 14px 20px 5px 5px; -} -body.rtls .feed-element > .pull-left { - margin-left: 10px; - margin-right: 0; -} -body.rtls .timeline-item .date { - text-align: left; -} -body.rtls .timeline-item .date i { - left: 0; - right: auto; -} -body.rtls .timeline-item .content { - border-right: 1px solid #e7eaec; - border-left: none; -} -body.rtls .theme-config { - left: 0; - right: auto; -} -body.rtls .spin-icon { - border-radius: 0 20px 20px 0; -} -body.rtls .toast-close-button { - float: left; -} -body.rtls #toast-container > .toast:before { - margin: auto -1.5em auto 0.5em; -} -body.rtls #toast-container > div { - padding: 15px 50px 15px 15px; -} -body.rtls .center-orientation .vertical-timeline-icon i { - margin-left: 0; - margin-right: -12px; -} -body.rtls .vertical-timeline-icon i { - right: 50%; - left: auto; - margin-left: auto; - margin-right: -12px; -} -body.rtls .file-box { - float: right; -} -body.rtls ul.notes li { - float: right; -} -body.rtls .chat-users, -body.rtls .chat-statistic { - margin-right: -30px; - margin-left: auto; -} -body.rtls .dropdown-menu > li > a { - text-align: right; -} -body.rtls .b-r { - border-left: 1px solid #e7eaec; - border-right: none; -} -body.rtls .dd-list .dd-list { - padding-right: 30px; - padding-left: 0; -} -body.rtls .dd-item > button { - float: right; -} -body.rtls .theme-config-box { - margin-left: -220px; - margin-right: 0; -} -body.rtls .theme-config-box.show { - margin-left: 0; - margin-right: 0; -} -body.rtls .spin-icon { - right: 0; - left: auto; -} -body.rtls .skin-setttings { - margin-right: 40px; - margin-left: 0; -} -body.rtls .skin-setttings { - direction: ltr; -} -body.rtls .footer.fixed { - margin-right: 220px; - margin-left: 0; -} -@media (max-width: 992px) { - body.rtls .chat-users, - body.rtls .chat-statistic { - margin-right: 0px; - } -} -body.rtls.mini-navbar .footer.fixed, -body.body-small.mini-navbar .footer.fixed { - margin: 0 70px 0 0; -} -body.rtls.mini-navbar.fixed-sidebar .footer.fixed, -body.body-small.mini-navbar .footer.fixed { - margin: 0 0 0 0; -} -body.rtls.top-navigation .navbar-toggle { - float: right; - margin-left: 15px; - margin-right: 15px; -} -.body-small.rtls.top-navigation .navbar-header { - float: none; -} -body.rtls.top-navigation #page-wrapper { - margin: 0; -} -body.rtls.mini-navbar #page-wrapper { - margin: 0 70px 0 0; -} -body.rtls.mini-navbar.fixed-sidebar #page-wrapper { - margin: 0 0 0 0; -} -body.rtls.body-small.fixed-sidebar.mini-navbar #page-wrapper { - margin: 0 220px 0 0; -} -body.rtls.body-small.fixed-sidebar.mini-navbar .navbar-static-side { - width: 220px; -} -.body-small.rtls .navbar-fixed-top { - margin-right: 0px; -} -.body-small.rtls .navbar-header { - float: right; -} -body.rtls .navbar-top-links li:last-child { - margin-left: 20px; -} -body.rtls .top-navigation #page-wrapper, -body.rtls.mini-navbar .top-navigation #page-wrapper, -body.rtls.mini-navbar.top-navigation #page-wrapper { - margin: 0; -} -body.rtls .top-navigation .footer.fixed, -body.rtls.top-navigation .footer.fixed { - margin: 0; -} -@media (max-width: 768px) { - body.rtls .navbar-top-links li:last-child { - margin-left: 20px; - } - .body-small.rtls #page-wrapper { - position: inherit; - margin: 0 0 0 0px; - min-height: 1000px; - } - .body-small.rtls .navbar-static-side { - display: none; - z-index: 101; - position: absolute; - width: 70px; - } - .body-small.rtls.mini-navbar .navbar-static-side { - display: block; - } - .rtls.fixed-sidebar.body-small .navbar-static-side { - display: none; - z-index: 101; - position: fixed; - width: 220px; - } - .rtls.fixed-sidebar.body-small.mini-navbar .navbar-static-side { - display: block; - } -} -.rtls .ltr-support { - direction: ltr; -} -/* - * - * This is style for skin config - * Use only in demo theme - * -*/ -.theme-config { - position: absolute; - top: 90px; - right: 0px; - overflow: hidden; -} -.theme-config-box { - margin-right: -220px; - position: relative; - z-index: 2000; - transition-duration: 0.8s; -} -.theme-config-box.show { - margin-right: 0px; -} -.spin-icon { - background: #1ab394; - position: absolute; - padding: 7px 10px 7px 13px; - border-radius: 20px 0px 0px 20px; - font-size: 16px; - top: 0; - left: 0px; - width: 40px; - color: #fff; - cursor: pointer; -} -.skin-setttings { - width: 220px; - margin-left: 40px; - background: #f3f3f4; -} -.skin-setttings .title { - background: #efefef; - text-align: center; - text-transform: uppercase; - font-weight: 600; - display: block; - padding: 10px 15px; - font-size: 12px; -} -.setings-item { - padding: 10px 30px; -} -.setings-item.skin { - text-align: center; -} -.setings-item .switch { - float: right; -} -.skin-name a { - text-transform: uppercase; -} -.setings-item a { - color: #fff; -} -.default-skin, -.blue-skin, -.ultra-skin, -.yellow-skin { - text-align: center; -} -.default-skin { - font-weight: 600; - background: #1ab394; -} -.default-skin:hover { - background: #199d82; -} -.blue-skin { - font-weight: 600; - background: url("patterns/header-profile-skin-1.png") repeat scroll 0 0; -} -.blue-skin:hover { - background: #0d8ddb; -} -.yellow-skin { - font-weight: 600; - background: url("patterns/header-profile-skin-3.png") repeat scroll 0 100%; -} -.yellow-skin:hover { - background: #ce8735; -} -.ultra-skin { - font-weight: 600; - background: url("patterns/header-profile-skin-2.png") repeat scroll 0 0; -} -.ultra-skin:hover { - background: #1a2d40; -} -/* - * - * SKIN 1 - INSPINIA - Responsive Admin Theme - * NAME - Blue light - * -*/ -.skin-1 .minimalize-styl-2 { - margin: 14px 5px 5px 30px; -} -.skin-1 .navbar-top-links li:last-child { - margin-right: 30px; -} -.skin-1.fixed-nav .minimalize-styl-2 { - margin: 14px 5px 5px 15px; -} -.skin-1 .spin-icon { - background: #0e9aef !important; -} -.skin-1 .nav-header { - background: #0e9aef; - background: url('patterns/header-profile-skin-1.png'); -} -.skin-1.mini-navbar .nav-second-level { - background: #3e495f; -} -.skin-1 .breadcrumb { - background: transparent; -} -.skin-1 .page-heading { - border: none; -} -.skin-1 .nav > li.active { - background: #3a4459; -} -.skin-1 .nav > li > a { - color: #9ea6b9; -} -.skin-1 .nav > li.active > a { - color: #fff; -} -.skin-1 .navbar-minimalize { - background: #0e9aef; - border-color: #0e9aef; -} -body.skin-1 { - background: #3e495f; -} -.skin-1 .navbar-static-top { - background: #ffffff; -} -.skin-1 .dashboard-header { - background: transparent; - border-bottom: none !important; - border-top: none; - padding: 20px 30px 10px 30px; -} -.fixed-nav.skin-1 .navbar-fixed-top { - background: #fff; -} -.skin-1 .wrapper-content { - padding: 30px 15px; -} -.skin-1 #page-wrapper { - background: #f4f6fa; -} -.skin-1 .ibox-title, -.skin-1 .ibox-content { - border-width: 1px; -} -.skin-1 .ibox-content:last-child { - border-style: solid solid solid solid; -} -.skin-1 .nav > li.active { - border: none; -} -.skin-1 .nav-header { - padding: 35px 25px 25px 25px; -} -.skin-1 .nav-header a.dropdown-toggle { - color: #fff; - margin-top: 10px; -} -.skin-1 .nav-header a.dropdown-toggle .text-muted { - color: #fff; - opacity: 0.8; -} -.skin-1 .profile-element { - text-align: center; -} -.skin-1 .img-circle { - border-radius: 5px; -} -.skin-1 .navbar-default .nav > li > a:hover, -.skin-1 .navbar-default .nav > li > a:focus { - background: #3a4459; - color: #fff; -} -.skin-1 .nav.nav-tabs > li.active > a { - color: #555; -} -.skin-1 .nav.nav-tabs > li.active { - background: transparent; -} -/* - * - * SKIN 2 - INSPINIA - Responsive Admin Theme - * NAME - Inspinia Ultra - * -*/ -body.skin-2 { - color: #565758 !important; -} -.skin-2 .minimalize-styl-2 { - margin: 14px 5px 5px 25px; -} -.skin-2 .navbar-top-links li:last-child { - margin-right: 25px; -} -.skin-2 .spin-icon { - background: #23c6c8 !important; -} -.skin-2 .nav-header { - background: #23c6c8; - background: url('patterns/header-profile-skin-2.png'); -} -.skin-2.mini-navbar .nav-second-level { - background: #ededed; -} -.skin-2 .breadcrumb { - background: transparent; -} -.skin-2.fixed-nav .minimalize-styl-2 { - margin: 14px 5px 5px 15px; -} -.skin-2 .page-heading { - border: none; - background: rgba(255, 255, 255, 0.7); -} -.skin-2 .nav > li.active { - background: #e0e0e0; -} -.skin-2 .logo-element { - padding: 17px 0; -} -.skin-2 .nav > li > a, -.skin-2 .welcome-message { - color: #edf6ff; -} -.skin-2 #top-search::-moz-placeholder { - color: #edf6ff; - opacity: 0.5; -} -.skin-2 #side-menu > li > a, -.skin-2 .nav.nav-second-level > li > a { - color: #586b7d; -} -.skin-2 .nav > li.active > a { - color: #213a53; -} -.skin-2.mini-navbar .nav-header { - background: #213a53; -} -.skin-2 .navbar-minimalize { - background: #23c6c8; - border-color: #23c6c8; -} -.skin-2 .border-bottom { - border-bottom: none !important; -} -.skin-2 #top-search { - color: #fff; -} -body.skin-2 #wrapper { - background-color: #ededed; -} -.skin-2 .navbar-static-top { - background: #213a53; -} -.fixed-nav.skin-2 .navbar-fixed-top { - background: #213a53; - border-bottom: none !important; -} -.skin-2 .nav-header { - padding: 30px 25px 30px 25px; -} -.skin-2 .dashboard-header { - background: rgba(255, 255, 255, 0.4); - border-bottom: none !important; - border-top: none; - padding: 20px 30px 20px 30px; -} -.skin-2 .wrapper-content { - padding: 30px 15px; -} -.skin-2 .dashoard-1 .wrapper-content { - padding: 0px 30px 25px 30px; -} -.skin-2 .ibox-title { - background: rgba(255, 255, 255, 0.7); - border: none; - margin-bottom: 1px; -} -.skin-2 .ibox-content { - background: rgba(255, 255, 255, 0.4); - border: none !important; -} -.skin-2 #page-wrapper { - background: #f6f6f6; - background: -webkit-radial-gradient(center, ellipse cover, #f6f6f6 20%, #d5d5d5 100%); - background: -o-radial-gradient(center, ellipse cover, #f6f6f6 20%, #d5d5d5 100%); - background: -ms-radial-gradient(center, ellipse cover, #f6f6f6 20%, #d5d5d5 100%); - background: radial-gradient(ellipse at center, #f6f6f6 20%, #d5d5d5 100%); - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#f6f6f6, endColorstr=#d5d5d5)"; -} -.skin-2 .ibox-title, -.skin-2 .ibox-content { - border-width: 1px; -} -.skin-2 .ibox-content:last-child { - border-style: solid solid solid solid; -} -.skin-2 .nav > li.active { - border: none; -} -.skin-2 .nav-header a.dropdown-toggle { - color: #edf6ff; - margin-top: 10px; -} -.skin-2 .nav-header a.dropdown-toggle .text-muted { - color: #edf6ff; - opacity: 0.8; -} -.skin-2 .img-circle { - border-radius: 10px; -} -.skin-2 .nav.navbar-top-links > li > a:hover, -.skin-2 .nav.navbar-top-links > li > a:focus { - background: #1a2d41; -} -.skin-2 .navbar-default .nav > li > a:hover, -.skin-2 .navbar-default .nav > li > a:focus { - background: #e0e0e0; - color: #213a53; -} -.skin-2 .nav.nav-tabs > li.active > a { - color: #555; -} -.skin-2 .nav.nav-tabs > li.active { - background: transparent; -} -/* - * - * SKIN 3 - INSPINIA - Responsive Admin Theme - * NAME - Yellow/purple - * -*/ -.skin-3 .minimalize-styl-2 { - margin: 14px 5px 5px 30px; -} -.skin-3 .navbar-top-links li:last-child { - margin-right: 30px; -} -.skin-3.fixed-nav .minimalize-styl-2 { - margin: 14px 5px 5px 15px; -} -.skin-3 .spin-icon { - background: #ecba52 !important; -} -body.boxed-layout.skin-3 #wrapper { - background: #3e2c42; -} -.skin-3 .nav-header { - background: #ecba52; - background: url('patterns/header-profile-skin-3.png'); -} -.skin-3.mini-navbar .nav-second-level { - background: #3e2c42; -} -.skin-3 .breadcrumb { - background: transparent; -} -.skin-3 .page-heading { - border: none; -} -.skin-3 .nav > li.active { - background: #38283c; -} -.fixed-nav.skin-3 .navbar-fixed-top { - background: #fff; -} -.skin-3 .nav > li > a { - color: #948b96; -} -.skin-3 .nav > li.active > a { - color: #fff; -} -.skin-3 .navbar-minimalize { - background: #ecba52; - border-color: #ecba52; -} -body.skin-3 { - background: #3e2c42; -} -.skin-3 .navbar-static-top { - background: #ffffff; -} -.skin-3 .dashboard-header { - background: transparent; - border-bottom: none !important; - border-top: none; - padding: 20px 30px 10px 30px; -} -.skin-3 .wrapper-content { - padding: 30px 15px; -} -.skin-3 #page-wrapper { - background: #f4f6fa; -} -.skin-3 .ibox-title, -.skin-3 .ibox-content { - border-width: 1px; -} -.skin-3 .ibox-content:last-child { - border-style: solid solid solid solid; -} -.skin-3 .nav > li.active { - border: none; -} -.skin-3 .nav-header { - padding: 35px 25px 25px 25px; -} -.skin-3 .nav-header a.dropdown-toggle { - color: #fff; - margin-top: 10px; -} -.skin-3 .nav-header a.dropdown-toggle .text-muted { - color: #fff; - opacity: 0.8; -} -.skin-3 .profile-element { - text-align: center; -} -.skin-3 .img-circle { - border-radius: 5px; -} -.skin-3 .navbar-default .nav > li > a:hover, -.skin-3 .navbar-default .nav > li > a:focus { - background: #38283c; - color: #fff; -} -.skin-3 .nav.nav-tabs > li.active > a { - color: #555; -} -.skin-3 .nav.nav-tabs > li.active { - background: transparent; -} -@media (min-width: 768px) { - #page-wrapper { - position: inherit; - margin: 0 0 0 220px; - min-height: 1200px; - } - .navbar-static-side { - z-index: 101; - position: absolute; - width: 220px; - } - .navbar-top-links .dropdown-messages, - .navbar-top-links .dropdown-tasks, - .navbar-top-links .dropdown-alerts { - margin-left: auto; - } -} -@media (max-width: 768px) { - #page-wrapper { - position: inherit; - margin: 0 0 0 0px; - min-height: 1000px; - } - .body-small .navbar-static-side { - display: none; - z-index: 101; - position: absolute; - width: 70px; - } - .body-small.mini-navbar .navbar-static-side { - display: block; - } - .lock-word { - display: none; - } - .navbar-form-custom { - display: none; - } - .navbar-header { - display: inline; - float: left; - } - .sidebard-panel { - z-index: 2; - position: relative; - width: auto; - min-height: 100% !important; - } - .sidebar-content .wrapper { - padding-right: 0px; - z-index: 1; - } - .fixed-sidebar.body-small .navbar-static-side { - display: none; - z-index: 101; - position: fixed; - width: 220px; - } - .fixed-sidebar.body-small.mini-navbar .navbar-static-side { - display: block; - } -} -@media (max-width: 350px) { - .timeline-item .date { - text-align: left; - width: 110px; - position: relative; - padding-top: 30px; - } - .timeline-item .date i { - position: absolute; - top: 0; - left: 15px; - padding: 5px; - width: 30px; - text-align: center; - border: 1px solid #e7eaec; - background: #f8f8f8; - } - .timeline-item .content { - border-left: none; - border-top: 1px solid #e7eaec; - padding-top: 10px; - min-height: 100px; - } - .nav.navbar-top-links li.dropdown { - display: none; - } -} -/* Only demo */ -@media (max-width: 1000px) { - .welcome-message { - display: none; - } -} diff --git a/assets/css/style.min.css b/assets/css/style.min.css deleted file mode 100644 index c87256c5..00000000 --- a/assets/css/style.min.css +++ /dev/null @@ -1 +0,0 @@ -@import url(//fonts.googleapis.com/css?family=Open+Sans:300,400,600,700&amp;lang=en);h1,h2,h3,h4,h5,h6{font-weight:100}h1{font-size:30px}h2{font-size:24px}h3{font-size:16px}h4{font-size:14px}h5{font-size:12px}h6{font-size:10px}h3,h4,h5{margin-top:5px;font-weight:600}.nav>li>a{color:#a7b1c2;font-weight:600;padding:14px 20px 14px 25px}.nav.navbar-right>li>a{color:#999c9e}.nav>li.active>a{color:#fff}.navbar-default .nav>li>a:focus,.navbar-default .nav>li>a:hover{background-color:#293846;color:#fff}.nav.navbar-top-links>li>a:focus,.nav.navbar-top-links>li>a:hover{background-color:#ececec}.nav>li>a i{margin-right:6px}.navbar{border:0}.navbar-default{background-color:transparent;border-color:#2f4050}.navbar-top-links li{display:inline-block}.navbar-top-links li:last-child{margin-right:40px}.navbar-top-links li a{padding:20px 10px;min-height:50px}.dropdown-menu{border:none;box-shadow:0 0 3px rgba(86,96,117,.7);display:none;float:left;font-size:12px;left:0;list-style:none;padding:0;position:absolute;text-shadow:none;top:100%;z-index:1000;border-radius:2px}.dropdown-menu>li>a{border-radius:3px;color:inherit;line-height:25px;margin:4px;text-align:left;font-weight:400}.dropdown-menu>li>a.font-bold{font-weight:600}.navbar-top-links .dropdown-menu li{display:block}.navbar-top-links .dropdown-menu li:last-child{margin-right:0}.navbar-top-links .dropdown-menu li a{padding:3px 20px;min-height:0}.navbar-top-links .dropdown-menu li a div{white-space:normal}.navbar-top-links .dropdown-alerts,.navbar-top-links .dropdown-messages,.navbar-top-links .dropdown-tasks{width:310px;min-width:0}.navbar-top-links .dropdown-messages{margin-left:5px}.navbar-top-links .dropdown-tasks{margin-left:-59px}.navbar-top-links .dropdown-alerts{margin-left:-123px}.navbar-top-links .dropdown-user{right:0;left:auto}.dropdown-alerts,.dropdown-messages{padding:10px}.dropdown-alerts li a,.dropdown-messages li a{font-size:12px}.dropdown-alerts li em,.dropdown-messages li em{font-size:10px}.nav.navbar-top-links .dropdown-alerts a{font-size:12px}.nav-header{padding:33px 25px;background:url(patterns/header-profile.png) no-repeat}.nav>li.active{ background:#3c8dbc;}.nav.nav-second-level>li.active{border:none}.nav.nav-second-level.collapse[style]{height:auto!important}.nav-header a{color:#DFE4ED}.nav-header .text-muted{color:#8095a8}.minimalize-styl-2{padding:4px 12px;margin:14px 5px 5px 20px;font-size:14px;float:left}.navbar-form-custom{float:left;height:50px;padding:0;width:200px;display:inline-table}.navbar-form-custom .form-group{margin-bottom:0}.nav.navbar-top-links a{font-size:14px}.navbar-form-custom .form-control{background:none;border:none;font-size:14px;height:60px;margin:0;z-index:2000}.count-info .label{line-height:12px;padding:2px 5px;position:absolute;right:6px;top:12px}.arrow{float:right}.fa.arrow:before{content:"\f104"}.active>a>.fa.arrow:before{content:"\f107"}.nav-second-level li,.nav-third-level li{border-bottom:none!important}.nav-second-level li a{padding:7px 10px 7px 52px}.nav-third-level li a{padding-left:62px}.nav-second-level li:last-child{margin-bottom:10px}.mini-navbar .nav li:focus>.nav-second-level,body:not(.fixed-sidebar).mini-navbar .nav li:hover>.nav-second-level{display:block;border-radius:0 2px 2px 0;min-width:140px;height:auto}body.mini-navbar .navbar-default .nav>li>.nav-second-level li a{font-size:12px;border-radius:3px}.fixed-nav .slimScrollDiv #side-menu{padding-bottom:60px}.mini-navbar .nav-second-level li a{padding:10px 10px 10px 15px}.mini-navbar .nav-second-level{position:absolute;left:70px;top:0;background-color:#2f4050;padding:10px;font-size:12px}.mini-navbar li.active .nav-second-level{left:65px}.navbar-default .special_link a{background:#1ab394;color:#fff}.navbar-default .special_link a:hover{background:#17987e!important;color:#fff}.navbar-default .special_link a span.label{background:#fff;color:#1ab394}.navbar-default .landing_link a{background:#1cc09f;color:#fff}.navbar-default .landing_link a:hover{background:#1ab394!important;color:#fff}.navbar-default .landing_link a span.label{background:#fff;color:#1cc09f}.logo-element{text-align:center;font-size:18px;font-weight:600;color:#fff;display:none;padding:18px 0}.pace-done #page-wrapper,.pace-done .footer,.pace-done .nav-header,.pace-done .navbar-static-side,.pace-done li.active{-webkit-transition:all .5s;-moz-transition:all .5s;-o-transition:all .5s;transition:all .5s}.navbar-fixed-top{transition-duration:.5s;border-bottom:1px solid #e7eaec!important}.navbar-fixed-top,.navbar-static-top{background:#f3f3f4}.fixed-nav #wrapper{margin-top:60px}.fixed-nav .minimalize-styl-2{margin:14px 5px 5px 15px}.body-small .navbar-fixed-top{margin-left:0}body.mini-navbar .navbar-static-side{width:70px}body.mini-navbar .nav-label,body.mini-navbar .navbar-default .nav li a span,body.mini-navbar .profile-element,body:not(.fixed-sidebar).mini-navbar .nav-second-level{display:none}body.mini-navbar .navbar-default .nav>li>a{font-size:16px}body.mini-navbar .logo-element{display:block}body.mini-navbar .nav-header{padding:0;background-color:#1ab394}body.fixed-sidebar.mini-navbar .footer{margin:0}body.mini-navbar #page-wrapper{margin:0 0 0 70px}body.fixed-sidebar .navbar-static-side{position:fixed;width:220px;z-index:101;height:100%}body.fixed-sidebar.mini-navbar .navbar-static-side{width:0}body.fixed-sidebar.mini-navbar #page-wrapper{margin:0}body.body-small.fixed-sidebar.mini-navbar #page-wrapper{margin:0 0 0 220px}body.body-small.fixed-sidebar.mini-navbar .navbar-static-side{width:220px}.fixed-sidebar.mini-navbar .nav li:focus>.nav-second-level{display:block;height:auto}body.fixed-sidebar.mini-navbar .navbar-default .nav>li>.nav-second-level li a{font-size:12px;border-radius:3px}.fixed-sidebar.mini-navbar .nav-second-level{position:relative;padding:0;font-size:13px}.fixed-sidebar.mini-navbar li.active .nav-second-level{left:0}body.fixed-sidebar.mini-navbar .navbar-default .nav>li>a{font-size:13px}body.fixed-sidebar.mini-navbar .nav-label,body.fixed-sidebar.mini-navbar .navbar-default .nav li a span{display:inline}.fixed-sidebar.mini-navbar .nav-second-level li a{padding:7px 10px 7px 52px}.fixed-sidebar.mini-navbar .nav-second-level{left:0}.btn{border-radius:3px}.float-e-margins .btn{margin-bottom:5px}.btn-w-m{min-width:120px}.btn-primary.btn-outline{color:#1ab394}.btn-success.btn-outline{color:#1c84c6}.btn-info.btn-outline{color:#23c6c8}.btn-warning.btn-outline{color:#f8ac59}.btn-danger.btn-outline{color:#ed5565}.btn-danger.btn-outline:hover,.btn-info.btn-outline:hover,.btn-primary.btn-outline:hover,.btn-success.btn-outline:hover,.btn-warning.btn-outline:hover{color:#fff}.btn-primary{background-color:#1ab394;border-color:#1ab394;color:#FFF}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{background-color:#18a689;border-color:#18a689;color:#FFF}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.active[disabled],.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#1dc5a3;border-color:#1dc5a3}.btn-success{background-color:#1c84c6;border-color:#1c84c6;color:#FFF}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{background-color:#1a7bb9;border-color:#1a7bb9;color:#FFF}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.active[disabled],.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#1f90d8;border-color:#1f90d8}.btn-info{background-color:#23c6c8;border-color:#23c6c8;color:#FFF}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{background-color:#21b9bb;border-color:#21b9bb;color:#FFF}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.active[disabled],.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#26d7d9;border-color:#26d7d9}.btn-default{background-color:#c2c2c2;border-color:#c2c2c2;color:#FFF}.btn-default.active,.btn-default:active,.btn-default:focus,.btn-default:hover,.open .dropdown-toggle.btn-default{background-color:#bababa;border-color:#bababa;color:#FFF}.btn-default.active,.btn-default:active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.active[disabled],.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#ccc;border-color:#ccc}.btn-warning{background-color:#f8ac59;border-color:#f8ac59;color:#FFF}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{background-color:#f7a54a;border-color:#f7a54a;color:#FFF}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.active[disabled],.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f9b66d;border-color:#f9b66d}.btn-danger{background-color:#ed5565;border-color:#ed5565;color:#FFF}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{background-color:#ec4758;border-color:#ec4758;color:#FFF}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.active[disabled],.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#ef6776;border-color:#ef6776}.btn-link{color:inherit}.btn-link.active,.btn-link:active,.btn-link:focus,.btn-link:hover,.open .dropdown-toggle.btn-link{color:#1c84c6}.btn-link.active,.btn-link:active,.open .dropdown-toggle.btn-link{background-image:none}.btn-link.active[disabled],.btn-link.disabled,.btn-link.disabled.active,.btn-link.disabled:active,.btn-link.disabled:focus,.btn-link.disabled:hover,.btn-link[disabled],.btn-link[disabled]:active,.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link,fieldset[disabled] .btn-link.active,fieldset[disabled] .btn-link:active,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#cacaca}.btn-white{color:inherit;background:#fff;border:1px solid #e7eaec}.btn-white.active,.btn-white:active,.btn-white:focus,.btn-white:hover,.open .dropdown-toggle.btn-white{color:inherit;border:1px solid #d2d2d2}.btn-white.active,.btn-white:active{box-shadow:0 2px 5px rgba(0,0,0,.15) inset}.btn-white.active,.btn-white:active,.open .dropdown-toggle.btn-white{background-image:none}.btn-white.active[disabled],.btn-white.disabled,.btn-white.disabled.active,.btn-white.disabled:active,.btn-white.disabled:focus,.btn-white.disabled:hover,.btn-white[disabled],.btn-white[disabled]:active,.btn-white[disabled]:focus,.btn-white[disabled]:hover,fieldset[disabled] .btn-white,fieldset[disabled] .btn-white.active,fieldset[disabled] .btn-white:active,fieldset[disabled] .btn-white:focus,fieldset[disabled] .btn-white:hover{color:#cacaca}.form-control,.form-control:focus,.has-error .form-control:focus,.has-success .form-control:focus,.has-warning .form-control:focus,.navbar-collapse,.navbar-form,.navbar-form-custom .form-control:focus,.navbar-form-custom .form-control:hover,.open .btn.dropdown-toggle,.panel,.popover,.progress,.progress-bar{box-shadow:none}.btn-outline{color:inherit;background-color:transparent;transition:all .5s}.btn-rounded{border-radius:50px}.btn-large-dim{width:90px;height:90px;font-size:42px}button.dim{display:inline-block;color:#fff;text-decoration:none;text-transform:uppercase;text-align:center;padding-top:6px;margin-right:10px;position:relative;cursor:pointer;border-radius:5px;font-weight:600;margin-bottom:20px!important}button.dim:active{top:3px}button.btn-primary.dim{box-shadow:inset 0 0 0 #16987e,0 5px 0 0 #16987e,0 10px 5px #999}button.btn-primary.dim:active{box-shadow:inset 0 0 0 #16987e,0 2px 0 0 #16987e,0 5px 3px #999}button.btn-default.dim{box-shadow:inset 0 0 0 #b3b3b3,0 5px 0 0 #b3b3b3,0 10px 5px #999}button.btn-default.dim:active{box-shadow:inset 0 0 0 #b3b3b3,0 2px 0 0 #b3b3b3,0 5px 3px #999}button.btn-warning.dim{box-shadow:inset 0 0 0 #f79d3c,0 5px 0 0 #f79d3c,0 10px 5px #999}button.btn-warning.dim:active{box-shadow:inset 0 0 0 #f79d3c,0 2px 0 0 #f79d3c,0 5px 3px #999}button.btn-info.dim{box-shadow:inset 0 0 0 #1eacae,0 5px 0 0 #1eacae,0 10px 5px #999}button.btn-info.dim:active{box-shadow:inset 0 0 0 #1eacae,0 2px 0 0 #1eacae,0 5px 3px #999}button.btn-success.dim{box-shadow:inset 0 0 0 #1872ab,0 5px 0 0 #1872ab,0 10px 5px #999}button.btn-success.dim:active{box-shadow:inset 0 0 0 #1872ab,0 2px 0 0 #1872ab,0 5px 3px #999}button.btn-danger.dim{box-shadow:inset 0 0 0 #ea394c,0 5px 0 0 #ea394c,0 10px 5px #999}button.btn-danger.dim:active{box-shadow:inset 0 0 0 #ea394c,0 2px 0 0 #ea394c,0 5px 3px #999}button.dim:before{font-size:50px;line-height:1em;font-weight:400;color:#fff;display:block;padding-top:10px}button.dim:active:before{top:7px;font-size:50px}.label{background-color:#d1dade;color:#5e5e5e;font-family:'Open Sans';font-size:10px;font-weight:600;padding:3px 8px;text-shadow:none}.badge{background-color:#d1dade;color:#5e5e5e;font-family:'Open Sans';font-size:11px;font-weight:600;padding-bottom:4px;padding-left:6px;padding-right:6px;text-shadow:none}.badge-primary,.label-primary{background-color:#1ab394;color:#FFF}.badge-success,.label-success{background-color:#1c84c6;color:#FFF}.badge-warning,.label-warning{background-color:#f8ac59;color:#FFF}.badge-warning-light,.label-warning-light{background-color:#f8ac59;color:#fff}.badge-danger,.label-danger{background-color:#ed5565;color:#FFF}.badge-info,.label-info{background-color:#23c6c8;color:#FFF}.badge-inverse,.label-inverse{background-color:#262626;color:#FFF}.badge-white,.label-white{background-color:#FFF;color:#5E5E5E}.badge-disable,.label-white{background-color:#2A2E36;color:#8B91A0}.chosen-container-single .chosen-single{background:#FFF;box-shadow:none;-moz-box-sizing:border-box;border:1px solid #CBD5DD;border-radius:2px;cursor:text;height:auto!important;margin:0;min-height:30px;overflow:hidden;padding:4px 12px;position:relative;width:100%}.chosen-container-multi .chosen-choices li.search-choice{background:#f1f1f1;border:1px solid #ededed;border-radius:2px;box-shadow:none;color:#333;cursor:default;line-height:13px;margin:3px 0 3px 5px;padding:3px 20px 3px 5px;position:relative}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{background-color:#f4f4f4;border-color:#DDD;color:inherit;cursor:default;z-index:2}.pagination>li>a,.pagination>li>span{background-color:#FFF;border:1px solid #DDD;color:inherit;float:left;line-height:1.42857;margin-left:-1px;padding:4px 10px;position:relative;text-decoration:none}.tooltip-inner{background-color:#2F4050}.tooltip.top .tooltip-arrow{border-top-color:#2F4050}.tooltip.right .tooltip-arrow{border-right-color:#2F4050}.tooltip.bottom .tooltip-arrow{border-bottom-color:#2F4050}.tooltip.left .tooltip-arrow{border-left-color:#2F4050}.easypiechart{position:relative;text-align:center}.easypiechart .h2{margin-left:10px;margin-top:10px;display:inline-block}.easypiechart canvas{top:0;left:0}.easypiechart .easypie-text{line-height:1;position:absolute;top:33px;width:100%;z-index:1}.easypiechart img{margin-top:-4px}.jqstooltip{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.fc-state-default{background-color:#fff;background-image:none;background-repeat:repeat-x;box-shadow:none;color:#333;text-shadow:none;border:1px solid}.fc-button{color:inherit;border:1px solid #e7eaec;cursor:pointer;display:inline-block;height:1.9em;line-height:1.9em;overflow:hidden;padding:0 .6em;position:relative;white-space:nowrap}.fc-state-active{background-color:#1ab394;border-color:#1ab394;color:#fff}.fc-header-title h2{font-size:16px;font-weight:600;color:inherit}.fc-content .fc-widget-content,.fc-content .fc-widget-header{border-color:#e7eaec;font-weight:400}.fc-border-separate tbody{background-color:#F8F8F8}.fc-state-highlight{background:#FCF8E3}.external-event{padding:5px 10px;border-radius:2px;cursor:pointer;margin-bottom:5px}.fc-ltr .fc-event-hori.fc-event-end,.fc-rtl .fc-event-hori.fc-event-start{border-radius:2px}.fc-agenda .fc-event-time,.fc-event,.fc-event a{padding:4px 6px;background-color:#1ab394;border-color:#1ab394}.fc-event-time,.fc-event-title{color:#717171;padding:0 1px}.ui-calendar .fc-event-time,.ui-calendar .fc-event-title{color:#fff}.chat-activity-list .chat-element{border-bottom:1px solid #e7eaec}.chat-element:first-child{margin-top:0}.chat-element{padding-bottom:15px}.chat-element,.chat-element .media{margin-top:15px}.chat-element,.media-body{overflow:hidden}.media-body{display:block}.chat-element>.pull-left{margin-right:10px}.chat-element img.img-circle,.dropdown-messages-box img.img-circle{width:38px;height:38px}.chat-element .well{border:1px solid #e7eaec;box-shadow:none;margin-top:10px;margin-bottom:5px;padding:10px 20px;font-size:11px;line-height:16px}.chat-element .actions{margin-top:10px}.chat-element .photos{margin:10px 0}.right.chat-element>.pull-right{margin-left:10px}.chat-photo{max-height:180px;border-radius:4px;overflow:hidden;margin-right:10px;margin-bottom:10px}.chat{margin:0;padding:0;list-style:none}.chat li{margin-bottom:10px;padding-bottom:5px;border-bottom:1px dotted #B3A9A9}.chat li.left .chat-body{margin-left:60px}.chat li.right .chat-body{margin-right:60px}.chat li .chat-body p{margin:0;color:#777}.chat .glyphicon,.panel .slidedown .glyphicon{margin-right:5px}.chat-panel .panel-body{height:350px;overflow-y:scroll}a.list-group-item.active,a.list-group-item.active:focus,a.list-group-item.active:hover{background-color:#1ab394;border-color:#1ab394;color:#FFF;z-index:2}.list-group-item-heading{margin-top:10px}.list-group-item-text{margin:0 0 10px;color:inherit;font-size:12px;line-height:inherit}.no-padding .list-group-item{border-left:none;border-right:none;border-bottom:none}.no-padding .list-group-item:first-child{border-left:none;border-right:none;border-bottom:none;border-top:none}.no-padding .list-group{margin-bottom:0}.list-group-item{background-color:inherit;border:1px solid #e7eaec;display:block;margin-bottom:-1px;padding:10px 15px;position:relative}.flot-chart{display:block;height:200px}.widget .flot-chart.dashboard-chart{display:block;height:120px;margin-top:40px}.flot-chart.dashboard-chart{display:block;height:180px;margin-top:40px}.flot-chart-content{width:100%;height:100%}.flot-chart-pie-content{width:200px;height:200px;margin:auto}.jqstooltip{position:absolute;display:block;left:0;top:0;visibility:hidden;background:#2b303a;background:rgba(43,48,58,.8);color:#fff;text-align:left;white-space:nowrap;z-index:10000;padding:5px;min-height:22px;border-radius:3px}.jqsfield{color:#fff;text-align:left}.h-200{min-height:200px}.legendLabel{padding-left:5px}.stat-list li:first-child{margin-top:0}.stat-list{list-style:none;padding:0;margin:0}.stat-percent{float:right}.stat-list li{margin-top:15px;position:relative}table.dataTable thead .sorting,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_desc_disabled{background:0 0}table.dataTable thead .sorting_asc:after{float:right;font-family:fontawesome}table.dataTable thead .sorting_desc:after{content:"\f0dd";float:right;font-family:fontawesome}table.dataTable thead .sorting:after{content:"\f0dc";float:right;font-family:fontawesome;color:rgba(50,50,50,.5)}.img-circle{border-radius:50%}.btn-circle{width:30px;height:30px;padding:6px 0;border-radius:15px;text-align:center;font-size:12px;line-height:1.428571429}.btn-circle.btn-lg{width:50px;height:50px;padding:10px 16px;border-radius:25px;font-size:18px;line-height:1.33}.btn-circle.btn-xl{width:70px;height:70px;padding:10px 16px;border-radius:35px;font-size:24px;line-height:1.33}.show-grid [class^=col-]{padding-top:10px;padding-bottom:10px;border:1px solid #ddd;background-color:#eee!important}.show-grid{margin:15px 0}.css-animation-box h1{font-size:44px}.animation-efect-links a{padding:4px 6px;font-size:12px}#animation_box{background-color:#f9f8f8;border-radius:16px;width:80%;margin:0 auto;padding-top:80px}.animation-text-box{position:absolute;margin-top:40px;left:50%;margin-left:-100px;width:200px}.animation-text-info{position:absolute;margin-top:-60px;left:50%;margin-left:-100px;width:200px;font-size:10px}.animation-text-box h2{font-size:54px;font-weight:600;margin-bottom:5px}.animation-text-box p{font-size:12px;text-transform:uppercase}.pace .pace-progress{background:#1ab394;position:fixed;z-index:2000;top:0;left:220px;height:2px;-webkit-transition:width 1s;-moz-transition:width 1s;-o-transition:width 1s;transition:width 1s}.body-small .pace .pace-progress{left:0}.pace-inactive{display:none}.widget{border-radius:5px;padding:15px 20px;margin-bottom:10px;margin-top:10px}.widget.style1 h2{font-size:30px}.widget h2,.widget h3{margin-top:5px;margin-bottom:0}.widget-text-box{padding:20px;border:1px solid #e7eaec;background:#fff}.widget-head-color-box{border-radius:5px 5px 0 0;margin-top:10px}.widget .flot-chart{height:100px}.vertical-align div{display:inline-block;vertical-align:middle}.vertical-align h2,.vertical-align h3{margin:0}.todo-list{list-style:none;margin:0;padding:0;font-size:14px}.todo-list.small-list{font-size:12px}.todo-list.small-list>li{background:#f3f3f4;border-left:none;border-right:none;border-radius:4px;color:inherit;margin-bottom:2px;padding:6px 6px 6px 12px}.todo-list.small-list .btn-group-xs>.btn,.todo-list.small-list .btn-xs{border-radius:5px;font-size:10px;line-height:1.5;padding:1px 2px 1px 5px}.todo-list>li{background:#f3f3f4;border-left:6px solid #e7eaec;border-right:6px solid #e7eaec;border-radius:4px;color:inherit;margin-bottom:2px;padding:10px}.todo-list .handle{cursor:move;display:inline-block;font-size:16px;margin:0 5px}.todo-list>li .label{font-size:9px;margin-left:10px}.check-link{font-size:16px}.todo-completed{text-decoration:line-through}.geo-statistic h1{font-size:36px;margin-bottom:0}.inline{display:inline-block!important}.input-s-sm{width:120px}.input-s{width:200px}.input-s-lg{width:250px}.i-checks{padding-left:0}.form-control{background-color:#FFF;background-image:none;border:1px solid #e5e6e7;border-radius:1px;color:inherit;display:block;padding:6px 12px;transition:border-color .15s ease-in-out 0s,box-shadow .15s ease-in-out 0s;width:100%}.form-control:focus,.has-success .form-control{border-color:#1ab394}.has-warning .form-control{border-color:#f8ac59}.has-error .form-control{border-color:#ed5565}.has-success .control-label{color:#1ab394}.has-warning .control-label{color:#f8ac59}.has-error .control-label{color:#ed5565}.input-group-addon{background-color:#fff;border:1px solid #E5E6E7;border-radius:1px;color:inherit;font-size:14px;font-weight:400;line-height:1;padding:6px 12px;text-align:center}.spinner-buttons.input-group-btn .btn-xs{line-height:1.13}.spinner-buttons.input-group-btn{width:20%}.noUi-connect{background:#1ab394;box-shadow:none}.slider_red .noUi-connect{background:#ed5565;box-shadow:none}.ui-sortable .ibox-title{cursor:move}.ui-sortable-placeholder{border:1px dashed #cecece!important;visibility:visible!important;background:#e7eaec}.ibox.ui-sortable-placeholder{margin:0 0 23px!important}.onoffswitch{position:relative;width:54px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.onoffswitch-checkbox{display:none}.onoffswitch-label{display:block;overflow:hidden;cursor:pointer;border:2px solid #1AB394;border-radius:3px}.onoffswitch-inner{display:block;width:200%;margin-left:-100%;-moz-transition:margin .3s ease-in 0s;-webkit-transition:margin .3s ease-in 0s;-o-transition:margin .3s ease-in 0s;transition:margin .3s ease-in 0s}.onoffswitch-inner:after,.onoffswitch-inner:before{display:block;float:left;width:50%;height:16px;padding:0;line-height:16px;font-size:10px;font-family:Trebuchet,Arial,sans-serif;font-weight:700;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.onoffswitch-inner:before{content:"ON";padding-left:7px;background-color:#1AB394;color:#FFF}.onoffswitch-inner:after{content:"OFF";padding-right:7px;background-color:#FFF;color:#919191;text-align:right}.onoffswitch-switch{display:block;width:18px;margin:0;background:#FFF;border:2px solid #1AB394;border-radius:3px;position:absolute;top:0;bottom:0;right:36px;-moz-transition:all .3s ease-in 0s;-webkit-transition:all .3s ease-in 0s;-o-transition:all .3s ease-in 0s;transition:all .3s ease-in 0s}.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-inner{margin-left:0}.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-switch{right:0}.ui-jqgrid{-moz-box-sizing:content-box}.ui-jqgrid-btable,.ui-jqgrid-htable{border-collapse:separate}.ui-jqgrid-titlebar{height:40px;line-height:15px;color:#676a6c;background-color:#F9F9F9;text-shadow:0 1px 0 rgba(255,255,255,.5)}.ui-jqgrid .ui-jqgrid-title{float:left;margin:1.1em 1em .2em}.ui-jqgrid .ui-jqgrid-titlebar{position:relative;border-left:0 solid;border-right:0 solid;border-top:0 solid}.ui-widget-header{background:#f5f5f6;text-transform:uppercase;border-top-left-radius:0;border-top-right-radius:0}.ui-jqgrid tr.ui-row-ltr td{border-right-style:solid;border-right-width:1px;text-align:left;border-color:#DDD;background-color:inherit}.ui-search-toolbar input[type=text]{font-size:12px;height:15px;border:1px solid #CCC;border-radius:0}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{background:#F9F9F9;border:1px solid #DDD;line-height:15px;font-weight:700;color:#676a6c;text-shadow:0 1px 0 rgba(255,255,255,.5)}.ui-widget-content{box-sizing:content-box}.ui-icon-triangle-1-n{background-position:1px -16px}.ui-jqgrid tr.ui-search-toolbar th{border-top-width:0!important;border-top-color:inherit!important;border-top-style:ridge!important}.ui-state-focus,.ui-state-hover,.ui-widget-content .ui-state-focus,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-focus{background:#f5f5f5;border-collapse:separate}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{background:#f2fbff}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #ddd;background:#fff;font-weight:400;color:#212121}.ui-jqgrid .ui-pg-input{font-size:inherit;width:50px;border:1px solid #CCC;height:15px}.ui-jqgrid .ui-pg-selbox{display:block;font-size:1em;height:25px;line-height:18px;margin:0;width:auto}.ui-jqgrid .ui-pager-control{position:relative}.ui-jqgrid .ui-jqgrid-pager{height:32px;position:relative}.ui-pg-table .navtable .ui-corner-all{border-radius:0}.ui-jqgrid .ui-pg-button:hover{padding:1px;border:0}.ui-jqgrid .loading{position:absolute;top:45%;left:45%;width:auto;height:auto;z-index:101;padding:6px;margin:5px;text-align:center;font-weight:700;display:none;border-width:2px!important;font-size:11px}.ui-jqgrid .form-control{height:10px;width:auto;display:inline;padding:10px 12px}.ui-jqgrid-pager{height:32px}.ui-corner-all,.ui-corner-left,.ui-corner-tl,.ui-corner-top{border-top-left-radius:0}.ui-corner-all,.ui-corner-right,.ui-corner-top,.ui-corner-tr{border-top-right-radius:0}.ui-corner-all,.ui-corner-bl,.ui-corner-bottom,.ui-corner-left{border-bottom-left-radius:0}.ui-corner-all,.ui-corner-bottom,.ui-corner-br,.ui-corner-right{border-bottom-right-radius:0}.ui-widget-content{border:1px solid #ddd}.ui-jqgrid .ui-jqgrid-titlebar{padding:0;border-bottom:1px solid #ddd}.ui-jqgrid tr.jqgrow td{padding:6px}.ui-jqdialog .ui-jqdialog-titlebar{padding:10px}.ui-jqdialog .ui-jqdialog-title{float:none!important}.ui-jqdialog>.ui-resizable-se{position:absolute}.dd{position:relative;display:block;margin:0;padding:0;list-style:none;font-size:13px;line-height:20px}.dd-list{display:block;position:relative;margin:0;padding:0;list-style:none}.dd-list .dd-list{padding-left:30px}.dd-collapsed .dd-list{display:none}.dd-empty,.dd-item,.dd-placeholder{display:block;position:relative;margin:0;padding:0;min-height:20px;font-size:13px;line-height:20px}.dd-handle{display:block;margin:5px 0;padding:5px 10px;color:#333;text-decoration:none;border:1px solid #e7eaec;background:#f5f5f5;-webkit-border-radius:3px;border-radius:3px;box-sizing:border-box;-moz-box-sizing:border-box}.dd-handle span{font-weight:700}.dd-handle:hover{background:#f0f0f0;cursor:pointer;font-weight:700}.dd-item>button{display:block;position:relative;cursor:pointer;float:left;width:25px;height:20px;margin:5px 0;padding:0;text-indent:100%;white-space:nowrap;overflow:hidden;border:0;background:0 0;font-size:12px;line-height:1;text-align:center;font-weight:700}.dd-item>button:before{content:'+';display:block;position:absolute;width:100%;text-align:center;text-indent:0}.dd-item>button[data-action=collapse]:before{content:'-'}#nestable2 .dd-item>button{font-family:FontAwesome;height:34px;width:33px;color:#c1c1c1}#nestable2 .dd-item>button:before{content:"\f067"}#nestable2 .dd-item>button[data-action=collapse]:before{content:"\f068"}.dd-empty,.dd-placeholder{margin:5px 0;padding:0;min-height:30px;background:#f2fbff;border:1px dashed #b6bcbf;box-sizing:border-box;-moz-box-sizing:border-box}.dd-empty{border:1px dashed #bbb;min-height:100px;background-color:#e5e5e5;background-image:-webkit-linear-gradient(45deg,#fff 25%,transparent 25%,transparent 75%,#fff 75%,#fff),-webkit-linear-gradient(45deg,#fff 25%,transparent 25%,transparent 75%,#fff 75%,#fff);background-image:-moz-linear-gradient(45deg,#fff 25%,transparent 25%,transparent 75%,#fff 75%,#fff),-moz-linear-gradient(45deg,#fff 25%,transparent 25%,transparent 75%,#fff 75%,#fff);background-image:linear-gradient(45deg,#fff 25%,transparent 25%,transparent 75%,#fff 75%,#fff),linear-gradient(45deg,#fff 25%,transparent 25%,transparent 75%,#fff 75%,#fff);background-size:60px 60px;background-position:0 0,30px 30px}.dd-dragel{position:absolute;z-index:9999}.dd-dragel>.dd-item .dd-handle{margin-top:0}.dd-dragel .dd-handle{-webkit-box-shadow:2px 4px 6px 0 rgba(0,0,0,.1);box-shadow:2px 4px 6px 0 rgba(0,0,0,.1)}.nestable-lists{display:block;clear:both;padding:30px 0;width:100%;border:0;border-top:2px solid #ddd;border-bottom:2px solid #ddd}#nestable-menu{padding:0;margin:10px 0 20px}#nestable-output,#nestable2-output{width:100%;line-height:1.333333em;font-family:open sans,lucida grande,lucida sans unicode,helvetica,arial,sans-serif}#nestable2 .dd-handle{color:inherit;border:1px dashed #e7eaec;background:#f3f3f4;padding:10px}#nestable2 span.label{margin-right:10px}#nestable-output,#nestable2-output{font-size:12px;padding:25px;box-sizing:border-box;-moz-box-sizing:border-box}.CodeMirror{border:1px solid #eee;height:auto}.CodeMirror-scroll{overflow-y:hidden;overflow-x:auto}.google-map{height:300px}label.error{color:#cc5965;display:inline-block;margin-left:5px}.form-control.error{border:1px dotted #cc5965}.gridStyle{border:1px solid #d4d4d4;width:100%;height:400px}.gridStyle2{border:1px solid #d4d4d4;width:500px;height:300px}.ngH eaderCell{border-right:none;border-bottom:1px solid #e7eaec}.ngCell{border-right:none}.ngTopPanel{background:#F5F5F6}.ngRow.even{background:#f9f9f9}.ngRow.selected{background:#EBF2F1}.ngRow{border-bottom:1px solid #e7eaec}.ngCell{background-color:transparent}.ngHeaderCell{border-right:none}.sidebard-panel{width:220px;background:#ebebed;padding:10px 20px;position:absolute;right:0}.sidebard-panel .feed-element img.img-circle{width:32px;height:32px}.media-body,.sidebard-panel .feed-element,.sidebard-panel p{font-size:12px}.sidebard-panel .feed-element{margin-top:20px;padding-bottom:0}.sidebard-panel .list-group{margin-bottom:10px}.sidebard-panel .list-group .list-group-item{padding:5px 0;font-size:12px;border:0}.sidebar-content .wrapper,.wrapper.sidebar-content{padding-right:230px!important}.body-small .sidebar-content .wrapper,.body-small .wrapper.sidebar-content{padding-right:20px!important}body{font-family:"open sans","Helvetica Neue",Helvetica,Arial,sans-serif;background-color:#2f4050;font-size:13px;color:#676a6c;overflow-x:hidden}body.boxed-layout{background:url(patterns/shattered.png)}body.boxed-layout #wrapper{background-color:#2f4050;max-width:1200px;margin:0 auto;-webkit-box-shadow:0 0 5px 0 rgba(0,0,0,.75);-moz-box-shadow:0 0 5px 0 rgba(0,0,0,.75);box-shadow:0 0 5px 0 rgba(0,0,0,.75)}.block{display:block}.clear{display:block;overflow:hidden}a{cursor:pointer}a:focus,a:hover{text-decoration:none}.border-bottom{border-bottom:1px solid #e7eaec!important}.font-bold{font-weight:600}.font-noraml{font-weight:400}.text-uppercase{text-transform:uppercase}.b-r{border-right:1px solid #e7eaec}.hr-line-dashed{border-top:1px dashed #e7eaec;color:#fff;background-color:#fff;height:1px;margin:20px 0}.hr-line-solid{border-bottom:1px solid #e7eaec;background-color:transparent;border-style:solid!important;margin-top:15px;margin-bottom:15px}video{width:100%!important;height:auto!important}.gallery>.row>div{margin-bottom:15px}.fancybox img{margin-bottom:5px;width:24%}.modal-content{background-clip:padding-box;background-color:#FFF;border:1px solid transparent;border-radius:4px;box-shadow:0 1px 3px rgba(0,0,0,.3);outline:0;position:relative}.modal-dialog{z-index:1200}.modal-body{padding:20px 30px 30px}.inmodal .modal-body{background:#f8fafb}.inmodal .modal-header{padding:30px 15px;text-align:center}.animated.modal.fade .modal-dialog{-webkit-transform:none;-ms-transform:none;-o-transform:none;transform:none}.inmodal .modal-title{font-size:26px}.inmodal .modal-icon{font-size:84px;color:#e2e3e3}.modal-footer{margin-top:0}#wrapper{width:100%;overflow-x:hidden}.wrapper{padding:0 20px}.wrapper-content{padding:20px 10px 40px}#page-wrapper{padding:0 15px;min-height:568px;position:relative!important}@media (min-width:768px){#page-wrapper{position:inherit;margin:0 0 0 240px;min-height:1000px}}.title-action{text-align:right;padding-top:30px}.ibox-content h1,.ibox-content h2,.ibox-content h3,.ibox-content h4,.ibox-content h5,.ibox-title h1,.ibox-title h2,.ibox-title h3,.ibox-title h4,.ibox-title h5{margin-top:5px}ol.unstyled,ul.unstyled{list-style:none;margin-left:0}.big-icon{font-size:160px;color:#e5e6e7}.footer{background:#fff;border-top:1px solid #e7eaec;bottom:0;left:0;padding:10px 20px;position:absolute;right:0}.footer.fixed_full{position:fixed;bottom:0;left:0;right:0;z-index:1000;padding:10px 20px;background:#fff;border-top:1px solid #e7eaec}.footer.fixed{position:fixed;bottom:0;left:0;right:0;z-index:1000;padding:10px 20px;background:#fff;border-top:1px solid #e7eaec;margin-left:220px}body.body-small.mini-navbar .footer.fixed,body.mini-navbar .footer.fixed{margin:0 0 0 70px}body.fixed-sidebar.body-small.mini-navbar .footer.fixed{margin:0 0 0 220px}body.body-small .footer.fixed{margin-left:0}.page-heading{border-top:4px solid #e7eaec;padding:0 10px 20px}.panel-heading h1,.panel-heading h2{margin-bottom:5px}.table-bordered{border:1px solid #EBEBEB}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{background-color:#F5F5F6}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #e7e7e7}.table>thead>tr>th{border-bottom:1px solid #DDD}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{border-top:1px solid #e7eaec;line-height:1.42857;padding:8px;vertical-align:top}.panel.blank-panel{background:0 0;margin:0}.blank-panel .panel-heading{padding-bottom:0}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{-moz-border-bottom-colors:none;-moz-border-left-colors:none;-moz-border-right-colors:none;-moz-border-top-colors:none;background:0 0;border-color:#ddd #ddd transparent;border-bottom:#f3f3f4;border-image:none;border-style:solid;border-width:1px;color:#555;cursor:default}.nav.nav-tabs li{background:0 0;border:none}.nav-tabs>li>a{color:#A7B1C2;font-weight:600;padding:10px 20px 10px 25px}.nav-tabs>li>a:focus,.nav-tabs>li>a:hover{background-color:#e6e6e6;color:#676a6c}.ui-tab .tab-content{padding:20px 0}.no-padding{padding:0!important}.no-borders{border:none!important}.no-margins{margin:0!important}.no-top-border{border-top:0!important}.ibox-content.text-box{padding-bottom:0;padding-top:15px}.border-left-right{border-left:1px solid #e7eaec;border-right:1px solid #e7eaec;border-top:none;border-bottom:none}.full-width{width:100%!important}.link-block{font-size:12px;padding:10px}.nav.navbar-top-links .link-block a{font-size:12px}.link-block a{font-size:10px;color:inherit}body.mini-navbar .branding{display:none}img.circle-border{border:6px solid #FFF;border-radius:50%}.branding{float:left;color:#FFF;font-size:18px;font-weight:600;padding:17px 20px;text-align:center;background-color:#1ab394}.login-panel{margin-top:25%}.icons-box h3{margin-top:10px;margin-bottom:10px}.icons-box .infont a i{font-size:25px;display:block;color:#676a6c}.icons-box .infont a{color:#a6a8a9;padding:10px;margin:1px;display:block}.ui-draggable .ibox-title{cursor:move}.breadcrumb{background-color:#fff;padding:0;margin-bottom:0}.breadcrumb>.active,.breadcrumb>li a{color:inherit}code{background-color:#F9F2F4;border-radius:4px;color:#ca4440;font-size:90%;padding:2px 4px;white-space:nowrap}.ibox{clear:both;margin-bottom:25px;margin-top:0;padding:0}.ibox:after,.ibox:before{display:table}.ibox-title{-moz-border-bottom-colors:none;-moz-border-left-colors:none;-moz-border-right-colors:none;-moz-border-top-colors:none;background-color:#fff;border-color:#e7eaec;border-image:none;border-style:solid solid none;border-width:4px 0 0;color:inherit;margin-bottom:0;padding:14px 15px 7px;height:48px}.ibox-content{background-color:#fff;color:inherit;padding:15px 20px 20px;border-color:#e7eaec;border-image:none;border-style:solid solid none;border-width:1px 0}table.table-mail tr td{padding:12px}.table-mail .check-mail{padding-left:20px}.table-mail .mail-date{padding-right:20px}.check-mail,.star-mail{width:40px}.unread td,.unread td a{font-weight:600;color:inherit}.read td,.read td a{font-weight:400;color:inherit}.unread td{background-color:#f9f8f8}.ibox-content{clear:both}.ibox-heading{background-color:#f3f6fb;border-bottom:none}.ibox-heading h3{font-weight:200;font-size:24px}.ibox-title h5{display:inline-block;font-size:14px;margin:0 0 7px;padding:0;text-overflow:ellipsis;float:left}.ibox-title .label{float:left;margin-left:4px}.ibox-tools{display:inline-block;float:right;margin-top:0;position:relative;padding:0}.ibox-tools a{cursor:pointer;margin-left:5px;color:#c4c4c4}.ibox-tools a.btn-primary{color:#fff}.ibox-tools .dropdown-menu>li>a{padding:4px 10px;font-size:12px}.gray-bg{background-color:#f3f3f4}.white-bg{background-color:#fff}.navy-bg{background-color:#1ab394;color:#fff}.blue-bg{background-color:#1c84c6;color:#fff}.lazur-bg{background-color:#23c6c8;color:#fff}.yellow-bg{background-color:#f8ac59;color:#fff}.red-bg{background-color:#ed5565;color:#fff}.black-bg{background-color:#262626}.panel-primary{border-color:#1ab394}.panel-primary>.panel-heading{background-color:#1ab394;border-color:#1ab394}.panel-success{border-color:#1c84c6}.panel-success>.panel-heading{background-color:#1c84c6;border-color:#1c84c6;color:#fff}.panel-info{border-color:#23c6c8}.panel-info>.panel-heading{background-color:#23c6c8;border-color:#23c6c8;color:#fff}.panel-warning{border-color:#f8ac59}.panel-warning>.panel-heading{background-color:#f8ac59;border-color:#f8ac59;color:#fff}.panel-danger{border-color:#ed5565}.panel-danger>.panel-heading{background-color:#ed5565;border-color:#ed5565;color:#fff}.progress-bar{background-color:#1ab394}.progress-small,.progress-small .progress-bar{height:10px}.progress-mini,.progress-small{margin-top:5px}.progress-mini,.progress-mini .progress-bar{height:5px;margin-bottom:0}.progress-bar-navy-light{background-color:#3dc7ab}.progress-bar-success{background-color:#1c84c6}.progress-bar-info{background-color:#23c6c8}.progress-bar-warning{background-color:#f8ac59}.progress-bar-danger{background-color:#ed5565}.panel-title{font-size:inherit}.jumbotron{border-radius:6px}.jumbotron h1{margin-top:0}.text-navy{color:#1ab394}.text-primary{color:inherit}.text-success{color:#1c84c6}.text-info{color:#23c6c8}.text-warning{color:#f8ac59}.text-danger{color:#ed5565}.text-muted{color:#888}.dashboard_2 nav.navbar,.dashboard_3 nav.navbar,.email_compose nav.navbar,.email_view nav.navbar,.inbox nav.navbar{background:#fff}.p-xxs{padding:5px}.p-xs{padding:10px}.p-sm{padding:15px}.p-m{padding:20px}.p-md{padding:25px}.p-lg{padding:30px}.p-xl{padding:40px}.m-xxs{margin:2px 4px}.m-xs{margin:5px}.m-sm{margin:10px}.m{margin:15px}.m-md{margin:20px}.m-lg{margin:30px}.m-xl{margin:50px}.m-n{margin:0!important}.m-l-none{margin-left:0}.m-l-xs{margin-left:5px}.m-l-sm{margin-left:10px}.m-l{margin-left:15px}.m-l-md{margin-left:20px}.m-l-lg{margin-left:30px}.m-l-xl{margin-left:40px}.m-l-n-xxs{margin-left:-1px}.m-l-n-xs{margin-left:-5px}.m-l-n-sm{margin-left:-10px}.m-l-n{margin-left:-15px}.m-l-n-md{margin-left:-20px}.m-l-n-lg{margin-left:-30px}.m-l-n-xl{margin-left:-40px}.m-t-none{margin-top:0}.m-t-xxs{margin-top:1px}.m-t-xs{margin-top:5px}.m-t-sm{margin-top:10px}.m-t{margin-top:15px}.m-t-md{margin-top:20px}.m-t-lg{margin-top:30px}.m-t-xl{margin-top:40px}.m-t-n-xxs{margin-top:-1px}.m-t-n-xs{margin-top:-5px}.m-t-n-sm{margin-top:-10px}.m-t-n{margin-top:-15px}.m-t-n-md{margin-top:-20px}.m-t-n-lg{margin-top:-30px}.m-t-n-xl{margin-top:-40px}.m-r-none{margin-right:0}.m-r-xxs{margin-right:1px}.m-r-xs{margin-right:5px}.m-r-sm{margin-right:10px}.m-r{margin-right:15px}.m-r-md{margin-right:20px}.m-r-lg{margin-right:30px}.m-r-xl{margin-right:40px}.m-r-n-xxs{margin-right:-1px}.m-r-n-xs{margin-right:-5px}.m-r-n-sm{margin-right:-10px}.m-r-n{margin-right:-15px}.m-r-n-md{margin-right:-20px}.m-r-n-lg{margin-right:-30px}.m-r-n-xl{margin-right:-40px}.m-b-none{margin-bottom:0}.m-b-xxs{margin-bottom:1px}.m-b-xs{margin-bottom:5px}.m-b-sm{margin-bottom:10px}.m-b{margin-bottom:15px}.m-b-md{margin-bottom:20px}.m-b-lg{margin-bottom:30px}.m-b-xl{margin-bottom:40px}.m-b-n-xxs{margin-bottom:-1px}.m-b-n-xs{margin-bottom:-5px}.m-b-n-sm{margin-bottom:-10px}.m-b-n{margin-bottom:-15px}.m-b-n-md{margin-bottom:-20px}.m-b-n-lg{margin-bottom:-30px}.m-b-n-xl{margin-bottom:-40px}.space-15{margin:15px 0}.space-20{margin:20px 0}.space-25{margin:25px 0}.space-30{margin:30px 0}body.modal-open{padding-right:inherit!important}.search-form{margin-top:10px}.search-result h3{margin-bottom:0;color:#1E0FBE}.search-result .search-link{color:#006621}.search-result p{font-size:12px;margin-top:5px}.contact-box{background-color:#fff;border:1px solid #e7eaec;padding:20px;margin-bottom:20px}.contact-box a{color:inherit}.invoice-table tbody>tr>td:last-child,.invoice-table tbody>tr>td:nth-child(2),.invoice-table tbody>tr>td:nth-child(3),.invoice-table tbody>tr>td:nth-child(4),.invoice-table thead>tr>th:last-child,.invoice-table thead>tr>th:nth-child(2),.invoice-table thead>tr>th:nth-child(3),.invoice-table thead>tr>th:nth-child(4),.invoice-total>tbody>tr>td:first-child{text-align:right}.invoice-total>tbody>tr>td{border:0}.invoice-total>tbody>tr>td:last-child{border-bottom:1px solid #DDD;text-align:right;width:15%}.middle-box{height:400px;width:400px;position:absolute;top:50%;left:50%;margin-top:-250px;margin-left:-200px;z-index:100}.lockscreen.middle-box{width:200px;margin-left:-100px;margin-top:-190px}.loginscreen.middle-box{width:300px;margin-left:-150px;margin-top:-330px}.logo-name{color:#e6e6e6;font-size:180px;font-weight:800;letter-spacing:-10px;margin-bottom:0}.middle-box h1{font-size:170px}.wrapper .middle-box{margin-top:140px}.lock-word{z-index:10;position:absolute;top:50%;left:50%;margin-top:-180px;margin-left:-470px}.lock-word span{font-size:100px;font-weight:600;color:#e9e9e9;display:inline-block}.lock-word .first-word{margin-right:160px}.dashboard-header{border-top:4px solid #e7eaec;padding:20px}.dashboard-header h2{margin-top:10px;font-size:26px}.fist-item{border-top:none!important}.statistic-box{margin-top:40px}.dashboard-header .list-group-item span.label{margin-right:10px}.list-group.clear-list .list-group-item{border-top:1px solid #e7eaec;border-bottom:0;border-right:0;border-left:0;padding:10px 0}ul.clear-list:first-child{border-top:none!important}.timeline-item .date i{position:absolute;top:0;right:0;padding:5px;width:30px;text-align:center;border-top:1px solid #e7eaec;border-bottom:1px solid #e7eaec;border-left:1px solid #e7eaec;background:#f8f8f8}.timeline-item .date{text-align:right;width:110px;position:relative;padding-top:30px}.timeline-item .content{border-left:1px solid #e7eaec;border-top:1px solid #e7eaec;padding-top:10px;min-height:100px}.timeline-item .content:hover{background:#f6f6f6}ul.notes li,ul.tag-list li{list-style:none}ul.notes li h4{margin-top:20px;font-size:16px}ul.notes li div{position:relative}ul.notes li div small{position:absolute;top:5px;right:5px;font-size:10px}ul.notes li div a{position:absolute;right:10px;bottom:10px;color:inherit}ul.notes li{margin:10px 40px 50px 0;float:left}ul.notes li div p{font-size:12px}ul.notes li div{-webkit-transform:rotate(-6deg);-o-transform:rotate(-6deg);-moz-transform:rotate(-6deg)}ul.notes li:nth-child(even) div{-o-transform:rotate(4deg);-webkit-transform:rotate(4deg);-moz-transform:rotate(4deg);position:relative;top:5px}ul.notes li:nth-child(3n) div{-o-transform:rotate(-3deg);-webkit-transform:rotate(-3deg);-moz-transform:rotate(-3deg);position:relative;top:-5px}ul.notes li:nth-child(5n) div{-o-transform:rotate(5deg);-webkit-transform:rotate(5deg);-moz-transform:rotate(5deg);position:relative;top:-10px}ul.notes li div:focus,ul.notes li div:hover{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-o-transform:scale(1.1);position:relative;z-index:5}ul.notes li div{text-decoration:none;color:#000;background:#ffc;display:block;height:210px;width:210px;padding:1em;-moz-box-shadow:5px 5px 7px #212121;-webkit-box-shadow:5px 5px 7px rgba(33,33,33,.7);box-shadow:5px 5px 7px rgba(33,33,33,.7);-moz-transition:-moz-transform .15s linear;-o-transition:-o-transform .15s linear;-webkit-transition:-webkit-transform .15s linear}.file-box{float:left;width:220px}.file-manager h5{text-transform:uppercase}.file-manager{list-style:none;margin:0;padding:0}.folder-list li a{color:#666;display:block;padding:5px 0}.folder-list li{border-bottom:1px solid #e7eaec;display:block}.folder-list li i{margin-right:8px;color:#3d4d5d}.category-list li a{color:#666;display:block;padding:5px 0}.category-list li{display:block}.category-list li i{margin-right:8px;color:#3d4d5d}.category-list li a .text-navy{color:#1ab394}.category-list li a .text-primary{color:#1c84c6}.category-list li a .text-info{color:#23c6c8}.category-list li a .text-danger{color:#EF5352}.category-list li a .text-warning{color:#F8AC59}.file-manager h5.tag-title{margin-top:20px}.file-manager .tag-list li{float:left}.file-manager .tag-list li a{font-size:10px;background-color:#f3f3f4;padding:5px 12px;color:inherit;border-radius:2px;border:1px solid #e7eaec;margin-right:5px;margin-top:5px;display:block}.file{border:1px solid #e7eaec;padding:0;background-color:#fff;position:relative;margin-bottom:20px;margin-right:20px}.file-manager .hr-line-dashed{margin:15px 0}.file .icon,.file .image{height:100px;overflow:hidden}.file .icon{padding:15px 10px;text-align:center}.file-control{color:inherit;font-size:11px;margin-right:10px}.file-control.active{text-decoration:underline}.file .icon i{font-size:70px;color:#dadada}.file .file-name{padding:10px;background-color:#f8f8f8;border-top:1px solid #e7eaec}.file-name small{color:#676a6c}.corner{position:absolute;display:inline-block;width:0;height:0;line-height:0;border:.6em solid transparent;border-right:.6em solid #f1f1f1;border-bottom:.6em solid #f1f1f1;right:0;bottom:0}a.compose-mail{padding:8px 10px}.mail-search{max-width:300px}.profile-content{border-top:none!important}.feed-activity-list .feed-element{border-bottom:1px solid #e7eaec}.feed-element:first-child{margin-top:0}.feed-element{padding-bottom:15px}.feed-element,.feed-element .media{margin-top:15px}.feed-element,.media-body{overflow:hidden}.feed-element>.pull-left{margin-right:10px}.dropdown-messages-box img.img-circle,.feed-element img.img-circle{width:38px;height:38px}.feed-element .well{border:1px solid #e7eaec;box-shadow:none;margin-top:10px;margin-bottom:5px;padding:10px 20px;font-size:11px;line-height:16px}.feed-element .actions{margin-top:10px}.feed-element .photos{margin:10px 0}.feed-photo{max-height:180px;border-radius:4px;overflow:hidden;margin-right:10px;margin-bottom:10px}.mail-box{background-color:#fff;border:1px solid #e7eaec;border-top:0;padding:0;margin-bottom:20px}.mail-box-header{background-color:#fff;border:1px solid #e7eaec;border-bottom:0;padding:30px 20px 20px}.mail-box-header h2{margin-top:0}.mailbox-content .tag-list li a{background:#fff}.mail-body{border-top:1px solid #e7eaec;padding:20px}.mail-text{border-top:1px solid #e7eaec}.mail-text .note-toolbar{padding:10px 15px}.mail-body .form-group{margin-bottom:5px}.mail-text .note-editor .note-toolbar{background-color:#F9F8F8}.mail-attachment{border-top:1px solid #e7eaec;padding:20px;font-size:12px}.mailbox-content{background:0 0;border:none;padding:10px}.mail-ontact{width:23%}.project-actions,.project-people{text-align:right;vertical-align:middle}dd.project-people{text-align:left;margin-top:5px}.project-people img{width:32px;height:32px}.project-title a{font-size:14px;color:#676a6c;font-weight:600}.project-list table tr td{border-top:none;border-bottom:1px solid #e7eaec;padding:15px 10px;vertical-align:middle}.project-manager .tag-list li a{font-size:10px;background-color:#fff;padding:5px 12px;color:inherit;border-radius:2px;border:1px solid #e7eaec;margin-right:5px;margin-top:5px;display:block}.project-files li a{font-size:11px;color:#676a6c;margin-left:10px;line-height:22px}.faq-item{padding:20px;margin-bottom:2px;background:#fff}.faq-question{font-size:18px;font-weight:600;color:#1ab394;display:block}.faq-question:hover{color:#179d82}.faq-answer{margin-top:10px;background:#f3f3f4;border:1px solid #e7eaec;border-radius:3px;padding:15px}.faq-item .tag-item{background:#f3f3f4;padding:2px 6px;font-size:10px;text-transform:uppercase}.theme-config{position:absolute;top:90px;right:0;overflow:hidden}.theme-config-box{margin-right:-220px;position:relative;z-index:2000;transition-duration:.8s}.theme-config-box.show{margin-right:0}.spin-icon{background:#1ab394;position:absolute;padding:7px 10px 7px 13px;border-radius:20px 0 0 20px;font-size:16px;top:0;left:0;width:40px;color:#fff;cursor:pointer}.skin-setttings{width:220px;margin-left:40px;background:#f3f3f4}.skin-setttings .title{background:#efefef;text-align:center;text-transform:uppercase;font-weight:600;display:block;padding:10px 15px;font-size:12px}.setings-item{padding:10px 30px}.setings-item.skin{text-align:center}.setings-item .switch{float:right}.skin-name a{text-transform:uppercase}.setings-item a{color:#fff}.blue-skin,.default-skin,.ultra-skin,.yellow-skin{text-align:center}.default-skin{font-weight:600;background:#1ab394}.default-skin:hover{background:#199d82}.blue-skin{font-weight:600;background:url(patterns/header-profile-skin-1.png)}.blue-skin:hover{background:#0d8ddb}.yellow-skin{font-weight:600;background:url(patterns/header-profile-skin-3.png) 0 100%}.yellow-skin:hover{background:#ce8735}.ultra-skin{font-weight:600;background:url(patterns/header-profile-skin-2.png)}.ultra-skin:hover{background:#1a2d40}.skin-1 .minimalize-styl-2{margin:14px 5px 5px 30px}.skin-1 .navbar-top-links li:last-child{margin-right:30px}.skin-1.fixed-nav .minimalize-styl-2{margin:14px 5px 5px 15px}.skin-1 .spin-icon{background:#0e9aef!important}.skin-1 .nav-header{background:url(patterns/header-profile-skin-1.png)}.skin-1.mini-navbar .nav-second-level{background:#3e495f}.skin-1 .breadcrumb{background:0 0}.skin-1 .page-heading{border:none}.skin-1 .nav>li.active{background:#3a4459}.skin-1 .nav>li>a{color:#9ea6b9}.skin-1 .nav>li.active>a{color:#fff}.skin-1 .navbar-minimalize{background:#0e9aef;border-color:#0e9aef}body.skin-1{background:#3e495f}.skin-1 .navbar-static-top{background:#fff}.skin-1 .dashboard-header{background:0 0;border-bottom:none!important;border-top:none;padding:20px 30px 10px}.fixed-nav.skin-1 .navbar-fixed-top{background:#fff}.skin-1 .wrapper-content{padding:30px 15px}.skin-1 #page-wrapper{background:#f4f6fa}.skin-1 .ibox-content,.skin-1 .ibox-title{border-width:1px}.skin-1 .ibox-content:last-child{border-style:solid}.skin-1 .nav>li.active{border:none}.skin-1 .nav-header{padding:35px 25px 25px}.skin-1 .nav-header a.dropdown-toggle{color:#fff;margin-top:10px}.skin-1 .nav-header a.dropdown-toggle .text-muted{color:#fff;opacity:.8}.skin-1 .profile-element{text-align:center}.skin-1 .img-circle{border-radius:5px}.skin-1 .navbar-default .nav>li>a:focus,.skin-1 .navbar-default .nav>li>a:hover{background:#3a4459;color:#fff}body.skin-2{color:#565758!important}.skin-2 .minimalize-styl-2{margin:14px 5px 5px 25px}.skin-2 .navbar-top-links li:last-child{margin-right:25px}.skin-2 .spin-icon{background:#23c6c8!important}.skin-2 .nav-header{background:url(patterns/header-profile-skin-2.png)}.skin-2.mini-navbar .nav-second-level{background:#ededed}.skin-2 .breadcrumb{background:0 0}.skin-2.fixed-nav .minimalize-styl-2{margin:14px 5px 5px 15px}.skin-2 .page-heading{border:none;background:rgba(255,255,255,.7)}.skin-2 .nav>li.active{background:#e0e0e0}.skin-2 .logo-element{padding:17px 0}.skin-2 .nav>li>a,.skin-2 .welcome-message{color:#edf6ff}.skin-2 #top-search::-moz-placeholder{color:#edf6ff;opacity:.5}.skin-2 #side-menu>li>a,.skin-2 .nav.nav-second-level>li>a{color:#586b7d}.skin-2 .nav>li.active>a{color:#213a53}.skin-2.mini-navbar .nav-header{background:#213a53}.skin-2 .navbar-minimalize{background:#23c6c8;border-color:#23c6c8}.skin-2 .border-bottom{border-bottom:none!important}.skin-2 #top-search{color:#fff}body.skin-2 #wrapper{background-color:#ededed}.skin-2 .navbar-static-top{background:#213a53}.fixed-nav.skin-2 .navbar-fixed-top{background:#213a53;border-bottom:none!important}.skin-2 .nav-header{padding:30px 25px}.skin-2 .dashboard-header{background:rgba(255,255,255,.4);border-bottom:none!important;border-top:none;padding:20px 30px}.skin-2 .wrapper-content{padding:30px 15px}.skin-2 .dashoard-1 .wrapper-content{padding:0 30px 25px}.skin-2 .ibox-title{background:rgba(255,255,255,.7);border:none;margin-bottom:1px}.skin-2 .ibox-content{background:rgba(255,255,255,.4);border:none!important}.skin-2 #page-wrapper{background:#f6f6f6;background:-webkit-radial-gradient(center,ellipse cover,#f6f6f6 20%,#d5d5d5 100%);background:-o-radial-gradient(center,ellipse cover,#f6f6f6 20%,#d5d5d5 100%);background:-ms-radial-gradient(center,ellipse cover,#f6f6f6 20%,#d5d5d5 100%);background:radial-gradient(ellipse at center,#f6f6f6 20%,#d5d5d5 100%);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#f6f6f6, endColorstr=#d5d5d5)"}.skin-2 .ibox-content,.skin-2 .ibox-title{border-width:1px}.skin-2 .ibox-content:last-child{border-style:solid}.skin-2 .nav>li.active{border:none}.skin-2 .nav-header a.dropdown-toggle{color:#edf6ff;margin-top:10px}.skin-2 .nav-header a.dropdown-toggle .text-muted{color:#edf6ff;opacity:.8}.skin-2 .img-circle{border-radius:10px}.skin-2 .nav.navbar-top-links>li>a:focus,.skin-2 .nav.navbar-top-links>li>a:hover{background:#1a2d41}.skin-2 .navbar-default .nav>li>a:focus,.skin-2 .navbar-default .nav>li>a:hover{background:#e0e0e0;color:#213a53}.skin-3 .minimalize-styl-2{margin:14px 5px 5px 30px}.skin-3 .navbar-top-links li:last-child{margin-right:30px}.skin-3.fixed-nav .minimalize-styl-2{margin:14px 5px 5px 15px}.skin-3 .spin-icon{background:#ecba52!important}body.boxed-layout.skin-3 #wrapper{background:#3e2c42}.skin-3 .nav-header{background:url(patterns/header-profile-skin-3.png)}.skin-3.mini-navbar .nav-second-level{background:#3e2c42}.skin-3 .breadcrumb{background:0 0}.skin-3 .page-heading{border:none}.skin-3 .nav>li.active{background:#38283c}.fixed-nav.skin-3 .navbar-fixed-top{background:#fff}.skin-3 .nav>li>a{color:#948b96}.skin-3 .nav>li.active>a{color:#fff}.skin-3 .navbar-minimalize{background:#ecba52;border-color:#ecba52}body.skin-3{background:#3e2c42}.skin-3 .navbar-static-top{background:#fff}.skin-3 .dashboard-header{background:0 0;border-bottom:none!important;border-top:none;padding:20px 30px 10px}.skin-3 .wrapper-content{padding:30px 15px}.skin-3 #page-wrapper{background:#f4f6fa}.skin-3 .ibox-content,.skin-3 .ibox-title{border-width:1px}.skin-3 .ibox-content:last-child{border-style:solid}.skin-3 .nav>li.active{border:none}.skin-3 .nav-header{padding:35px 25px 25px}.skin-3 .nav-header a.dropdown-toggle{color:#fff;margin-top:10px}.skin-3 .nav-header a.dropdown-toggle .text-muted{color:#fff;opacity:.8}.skin-3 .profile-element{text-align:center}.skin-3 .img-circle{border-radius:5px}.skin-3 .navbar-default .nav>li>a:focus,.skin-3 .navbar-default .nav>li>a:hover{background:#38283c;color:#fff}@media (min-width:768px){#page-wrapper{position:inherit;margin:0 0 0 220px;min-height:1200px}.navbar-static-side{z-index:101;position:absolute;width:220px}.navbar-top-links .dropdown-alerts,.navbar-top-links .dropdown-messages,.navbar-top-links .dropdown-tasks{margin-left:auto}}@media (max-width:768px){#page-wrapper{position:inherit;margin:0;min-height:1000px}.body-small .navbar-static-side{display:none;z-index:1;position:absolute;width:70px}.body-small.mini-navbar .navbar-static-side{display:block}.lock-word,.navbar-form-custom{display:none}.navbar-header{display:inline;float:left}.sidebard-panel{z-index:2;position:relative;width:auto;min-height:100%!important}.sidebar-content .wrapper{padding-right:0;z-index:1}.fixed-sidebar.body-small .navbar-static-side{display:none;z-index:1;position:fixed;width:220px}.fixed-sidebar.body-small.mini-navbar .navbar-static-side{display:block}}@media (max-width:350px){.timeline-item .date{text-align:left;width:110px;position:relative;padding-top:30px}.timeline-item .date i{position:absolute;top:0;left:15px;padding:5px;width:30px;text-align:center;border:1px solid #e7eaec;background:#f8f8f8}.timeline-item .content{border-left:none;border-top:1px solid #e7eaec;padding-top:10px;min-height:100px}.nav.navbar-top-links li.dropdown{display:none}}@media (max-width:1000px){.welcome-message{display:none}} \ No newline at end of file diff --git a/assets/dist/css/AdminLTE.css b/assets/dist/css/AdminLTE.css deleted file mode 100644 index 147a6485..00000000 --- a/assets/dist/css/AdminLTE.css +++ /dev/null @@ -1,4362 +0,0 @@ -@import url(https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic); -/*! - * AdminLTE v2.1.0 - * Author: Almsaeed Studio - * Website: Almsaeed Studio <http://almsaeedstudio.com> - * License: Open source - MIT - * Please visit http://opensource.org/licenses/MIT for more information -!*/ -/* - * Core: Genral Layout Style - * ------------------------- - */ -html, -body { - min-height: 100%; -} -.layout-boxed html, -.layout-boxed body { - height: 100%; -} -body { - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-family: 'Source Sans Pro', 'Helvetica Neue', Helvetica, Arial, sans-serif; - font-weight: 400; - overflow-x: hidden; - overflow-y: auto; -} -/* Layout */ -.wrapper { - min-height: 100%; - position: relative; - overflow: hidden!important; -} -.wrapper:before, -.wrapper:after { - content: " "; - display: table; -} -.wrapper:after { - clear: both; -} -.layout-boxed .wrapper { - max-width: 1250px; - margin: 0 auto; - min-height: 100%; - box-shadow: 0 0 8px rgba(0, 0, 0, 0.5); - position: relative; -} -.layout-boxed { - background: url('../img/boxed-bg.jpg') repeat fixed; -} -/* - * Content Wrapper - contains the main content - * ```.right-side has been deprecated as of v2.0.0 in favor of .content-wrapper ``` - */ -.content-wrapper, -.right-side, -.main-footer { - -webkit-transition: -webkit-transform 0.3s ease-in-out, margin 0.3s ease-in-out; - -moz-transition: -moz-transform 0.3s ease-in-out, margin 0.3s ease-in-out; - -o-transition: -o-transform 0.3s ease-in-out, margin 0.3s ease-in-out; - transition: transform 0.3s ease-in-out, margin 0.3s ease-in-out; - margin-left: 230px; - z-index: 820; -} -.layout-top-nav .content-wrapper, -.layout-top-nav .right-side, -.layout-top-nav .main-footer { - margin-left: 0; -} -@media (max-width: 767px) { - .content-wrapper, - .right-side, - .main-footer { - margin-left: 0; - } -} -@media (min-width: 768px) { - .sidebar-collapse .content-wrapper, - .sidebar-collapse .right-side, - .sidebar-collapse .main-footer { - margin-left: 0; - } -} -@media (max-width: 767px) { - .sidebar-open .content-wrapper, - .sidebar-open .right-side, - .sidebar-open .main-footer { - -webkit-transform: translate(230px, 0); - -ms-transform: translate(230px, 0); - -o-transform: translate(230px, 0); - transform: translate(230px, 0); - } -} -.content-wrapper, -.right-side { - min-height: 100%; - background-color: #ecf0f5; - z-index: 800; -} -.main-footer { - background: #fff; - padding: 15px; - color: #444; - border-top: 1px solid #d2d6de; -} -/* Fixed layout */ -.fixed .main-header, -.fixed .main-sidebar, -.fixed .left-side { - position: fixed; -} -.fixed .main-header { - top: 0; - right: 0; - left: 0; -} -.fixed .content-wrapper, -.fixed .right-side { - padding-top: 50px; -} -@media (max-width: 767px) { - .fixed .content-wrapper, - .fixed .right-side { - padding-top: 100px; - } -} -.fixed.layout-boxed .wrapper { - max-width: 100%; -} -/* Content */ -.content { - min-height: 250px; - padding: 15px; - margin-right: auto; - margin-left: auto; - padding-left: 15px; - padding-right: 15px; -} -/* H1 - H6 font */ -h1, -h2, -h3, -h4, -h5, -h6, -.h1, -.h2, -.h3, -.h4, -.h5, -.h6 { - font-family: 'Source Sans Pro', sans-serif; -} -/* General Links */ -a { - color: #3c8dbc; -} -a:hover, -a:active, -a:focus { - outline: none; - text-decoration: none; - color: #72afd2; -} -/* Page Header */ -.page-header { - margin: 10px 0 20px 0; - font-size: 22px; -} -.page-header > small { - color: #666; - display: block; - margin-top: 5px; -} -/* - * Component: Main Header - * ---------------------- - */ -.main-header { - position: relative; - max-height: 100px; - z-index: 1030; -} -.main-header > .navbar { - -webkit-transition: margin-left 0.3s ease-in-out; - -o-transition: margin-left 0.3s ease-in-out; - transition: margin-left 0.3s ease-in-out; - margin-bottom: 0; - margin-left: 230px; - border: none; - min-height: 50px; - border-radius: 0; -} -.layout-top-nav .main-header > .navbar { - margin-left: 0!important; -} -.main-header #navbar-search-input { - background: rgba(255, 255, 255, 0.2); - border-color: transparent; -} -.main-header #navbar-search-input:focus, -.main-header #navbar-search-input:active { - border-color: rgba(0, 0, 0, 0.1) !important; - background: rgba(255, 255, 255, 0.9); -} -.main-header #navbar-search-input::-moz-placeholder { - color: #ccc; - opacity: 1; -} -.main-header #navbar-search-input:-ms-input-placeholder { - color: #ccc; -} -.main-header #navbar-search-input::-webkit-input-placeholder { - color: #ccc; -} -.main-header .navbar-custom-menu, -.main-header .navbar-right { - float: right; -} -@media (max-width: 991px) { - .main-header .navbar-custom-menu a, - .main-header .navbar-right a { - color: inherit; - background: transparent; - } -} -@media (max-width: 767px) { - .main-header .navbar-right { - float: none; - } - .navbar-collapse .main-header .navbar-right { - margin: 7.5px -15px; - } - .main-header .navbar-right > li { - color: inherit; - border: 0; - } -} -.main-header .sidebar-toggle { - float: left; - background-color: transparent; - background-image: none; - padding: 15px 15px; - font-family: fontAwesome; -} -.main-header .sidebar-toggle:before { - content: "\f0c9"; -} -.main-header .sidebar-toggle:hover { - color: #fff; -} -.main-header .sidebar-toggle:focus, -.main-header .sidebar-toggle:active { - background: transparent; -} -.main-header .sidebar-toggle .icon-bar { - display: none; -} -.main-header .navbar .nav > li.user > a > .fa, -.main-header .navbar .nav > li.user > a > .glyphicon, -.main-header .navbar .nav > li.user > a > .ion { - margin-right: 5px; -} -.main-header .navbar .nav > li > a > .label { - position: absolute; - top: 9px; - right: 7px; - text-align: center; - font-size: 9px; - padding: 2px 3px; - line-height: .9; -} -.main-header .logo { - -webkit-transition: width 0.3s ease-in-out; - -o-transition: width 0.3s ease-in-out; - transition: width 0.3s ease-in-out; - display: block; - float: left; - height: 50px; - font-size: 20px; - line-height: 50px; - text-align: center; - width: 230px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - padding: 0 15px; - font-weight: 300; - overflow: hidden; -} -.main-header .logo .logo-lg { - display: block; -} -.main-header .logo .logo-mini { - display: none; -} -.main-header .navbar-brand { - color: #fff; -} -.content-header { - position: relative; - padding: 15px 15px 0 15px; -} -.content-header > h1 { - margin: 0; - font-size: 24px; -} -.content-header > h1 > small { - font-size: 15px; - display: inline-block; - padding-left: 4px; - font-weight: 300; -} -.content-header > .breadcrumb { - float: right; - background: transparent; - margin-top: 0px; - margin-bottom: 0; - font-size: 12px; - padding: 7px 5px; - position: absolute; - top: 15px; - right: 10px; - border-radius: 2px; -} -.content-header > .breadcrumb > li > a { - color: #444; - text-decoration: none; - display: inline-block; -} -.content-header > .breadcrumb > li > a > .fa, -.content-header > .breadcrumb > li > a > .glyphicon, -.content-header > .breadcrumb > li > a > .ion { - margin-right: 5px; -} -.content-header > .breadcrumb > li + li:before { - content: '>\00a0'; -} -@media (max-width: 991px) { - .content-header > .breadcrumb { - position: relative; - margin-top: 5px; - top: 0; - right: 0; - float: none; - background: #d2d6de; - padding-left: 10px; - } - .content-header > .breadcrumb li:before { - color: #97a0b3; - } -} -.navbar-toggle { - color: #fff; - border: 0; - margin: 0; - padding: 15px 15px; -} -@media (max-width: 991px) { - .navbar-custom-menu .navbar-nav > li { - float: left; - } - .navbar-custom-menu .navbar-nav { - margin: 0; - float: left; - } - .navbar-custom-menu .navbar-nav > li > a { - padding-top: 15px; - padding-bottom: 15px; - line-height: 20px; - } -} -@media (max-width: 767px) { - .main-header { - position: relative; - } - .main-header .logo, - .main-header .navbar { - width: 100%; - float: none; - position: relative!important; - } - .main-header .navbar { - margin: 0; - } - .main-header .navbar-custom-menu { - float: right; - } - .main-sidebar, - .left-side { - padding-top: 100px!important; - } -} -@media (max-width: 991px) { - .navbar-collapse.pull-left { - float: none!important; - } - .navbar-collapse.pull-left + .navbar-custom-menu { - display: block; - position: absolute; - top: 0; - right: 40px; - } -} -/* - * Component: Sidebar - * ------------------ - */ -.main-sidebar, -.left-side { - position: absolute; - top: 0; - left: 0; - padding-top: 50px; - min-height: 100%; - width: 230px; - z-index: 810; - -webkit-transition: -webkit-transform 0.3s ease-in-out, width 0.3s ease-in-out; - -moz-transition: -moz-transform 0.3s ease-in-out, width 0.3s ease-in-out; - -o-transition: -o-transform 0.3s ease-in-out, width 0.3s ease-in-out; - transition: transform 0.3s ease-in-out, width 0.3s ease-in-out; -} -@media (max-width: 767px) { - .main-sidebar, - .left-side { - -webkit-transform: translate(-230px, 0); - -ms-transform: translate(-230px, 0); - -o-transform: translate(-230px, 0); - transform: translate(-230px, 0); - } -} -@media (min-width: 768px) { - .sidebar-collapse .main-sidebar, - .sidebar-collapse .left-side { - -webkit-transform: translate(-230px, 0); - -ms-transform: translate(-230px, 0); - -o-transform: translate(-230px, 0); - transform: translate(-230px, 0); - } -} -@media (max-width: 767px) { - .sidebar-open .main-sidebar, - .sidebar-open .left-side { - -webkit-transform: translate(0, 0); - -ms-transform: translate(0, 0); - -o-transform: translate(0, 0); - transform: translate(0, 0); - } -} -.sidebar { - padding-bottom: 10px; -} -.sidebar-form input:focus { - border-color: transparent!important; -} -.user-panel { - position: relative; - width: 100%; - padding: 10px; - overflow: hidden; -} -.user-panel:before, -.user-panel:after { - content: " "; - display: table; -} -.user-panel:after { - clear: both; -} -.user-panel > .image > img { - width: 100%; - max-width: 45px; - height: auto; -} -.user-panel > .info { - padding: 5px 5px 5px 15px; - line-height: 1; - position: absolute; - left: 55px; -} -.user-panel > .info > p { - font-weight: 600; - margin-bottom: 9px; -} -.user-panel > .info > a { - text-decoration: none; - padding-right: 5px; - margin-top: 3px; - font-size: 11px; -} -.user-panel > .info > a > .fa, -.user-panel > .info > a > .ion, -.user-panel > .info > a > .glyphicon { - margin-right: 3px; -} -.sidebar-menu { - list-style: none; - margin: 0; - padding: 0; -} -.sidebar-menu > li { - position: relative; - margin: 0; - padding: 0; -} -.sidebar-menu > li > a { - padding: 12px 5px 12px 15px; - display: block; -} -.sidebar-menu > li > a > .fa, -.sidebar-menu > li > a > .glyphicon, -.sidebar-menu > li > a > .ion { - width: 20px; -} -.sidebar-menu > li .label, -.sidebar-menu > li .badge { - margin-top: 3px; - margin-right: 5px; -} -.sidebar-menu li.header { - padding: 10px 25px 10px 15px; - font-size: 12px; -} -.sidebar-menu li > a > .fa-angle-left { - width: auto; - height: auto; - padding: 0; - margin-right: 10px; - margin-top: 3px; -} -.sidebar-menu li.active > a > .fa-angle-left { - -webkit-transform: rotate(-90deg); - -ms-transform: rotate(-90deg); - -o-transform: rotate(-90deg); - transform: rotate(-90deg); -} -.sidebar-menu li.active > .treeview-menu { - display: block; -} -.sidebar-menu .treeview-menu { - display: none; - list-style: none; - padding: 0; - margin: 0; - padding-left: 5px; -} -.sidebar-menu .treeview-menu .treeview-menu { - padding-left: 20px; -} -.sidebar-menu .treeview-menu > li { - margin: 0; -} -.sidebar-menu .treeview-menu > li > a { - padding: 5px 5px 5px 15px; - display: block; - font-size: 14px; -} -.sidebar-menu .treeview-menu > li > a > .fa, -.sidebar-menu .treeview-menu > li > a > .glyphicon, -.sidebar-menu .treeview-menu > li > a > .ion { - width: 20px; -} -.sidebar-menu .treeview-menu > li > a > .fa-angle-left, -.sidebar-menu .treeview-menu > li > a > .fa-angle-down { - width: auto; -} -/* - * Component: Sidebar Mini - */ -@media (min-width: 768px) { - .sidebar-mini.sidebar-collapse .content-wrapper, - .sidebar-mini.sidebar-collapse .right-side, - .sidebar-mini.sidebar-collapse .main-footer { - margin-left: 50px!important; - z-index: 840; - } - .sidebar-mini.sidebar-collapse .main-sidebar { - -webkit-transform: translate(0, 0); - -ms-transform: translate(0, 0); - -o-transform: translate(0, 0); - transform: translate(0, 0); - width: 50px!important; - z-index: 850; - } - .sidebar-mini.sidebar-collapse .sidebar-menu > li { - position: relative; - } - .sidebar-mini.sidebar-collapse .sidebar-menu > li > a { - margin-right: 0; - } - .sidebar-mini.sidebar-collapse .sidebar-menu > li > a > span { - border-top-right-radius: 4px; - } - .sidebar-mini.sidebar-collapse .sidebar-menu > li:not(.treeview) > a > span { - border-bottom-right-radius: 4px; - } - .sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { - padding-top: 5px; - padding-bottom: 5px; - border-bottom-right-radius: 4px; - } - .sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > span:not(.pull-right), - .sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > .treeview-menu { - display: block!important; - position: absolute; - width: 180px; - left: 50px; - } - .sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > span { - top: 0; - margin-left: -3px; - padding: 12px 5px 12px 20px; - background-color: inherit; - } - .sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > .treeview-menu { - top: 44px; - margin-left: 0; - } - .sidebar-mini.sidebar-collapse .main-sidebar .user-panel > .info, - .sidebar-mini.sidebar-collapse .sidebar-form, - .sidebar-mini.sidebar-collapse .sidebar-menu > li > a > span, - .sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu, - .sidebar-mini.sidebar-collapse .sidebar-menu > li > a > .pull-right, - .sidebar-mini.sidebar-collapse .sidebar-menu li.header { - display: none!important; - } - .sidebar-mini.sidebar-collapse .main-header .logo { - width: 50px; - } - .sidebar-mini.sidebar-collapse .main-header .logo > .logo-mini { - display: block; - margin-left: -15px; - margin-right: -15px; - font-size: 18px; - } - .sidebar-mini.sidebar-collapse .main-header .logo > .logo-lg { - display: none; - } - .sidebar-mini.sidebar-collapse .main-header .navbar { - margin-left: 50px; - } -} -.sidebar-menu, -.main-sidebar .user-panel, -.sidebar-menu > li.header { - white-space: nowrap!important; - overflow: hidden; -} -.sidebar-menu:hover { - overflow: visible; -} -.sidebar-form, -.sidebar-menu > li.header { - overflow: hidden; - text-overflow: clip; -} -.sidebar-menu li > a { - position: relative; -} -.sidebar-menu li > a > .pull-right { - position: absolute; - top: 50%; - right: 10px; - margin-top: -7px; -} -/* - * Component: Control sidebar. By default, this is the right sidebar. - */ -.control-sidebar-bg { - position: fixed; - z-index: 1000; - bottom: 0; -} -.control-sidebar-bg, -.control-sidebar { - top: 0; - right: -230px; - width: 230px; - -webkit-transition: right 0.3s ease-in-out; - -o-transition: right 0.3s ease-in-out; - transition: right 0.3s ease-in-out; -} -.control-sidebar { - position: absolute; - padding-top: 50px; - z-index: 1010; -} -@media (max-width: 768px) { - .control-sidebar { - padding-top: 100px; - } -} -.control-sidebar > .tab-content { - padding: 10px 15px; -} -.control-sidebar.control-sidebar-open, -.control-sidebar.control-sidebar-open + .control-sidebar-bg { - right: 0; -} -.control-sidebar-open .control-sidebar-bg, -.control-sidebar-open .control-sidebar { - right: 0; -} -@media (min-width: 768px) { - .control-sidebar-open .content-wrapper, - .control-sidebar-open .right-side, - .control-sidebar-open .main-footer { - margin-right: 230px; - } -} -.control-sidebar-tabs > li:first-of-type > a { - margin-left: 1px; -} -.control-sidebar-tabs > li:first-of-type > a, -.control-sidebar-tabs > li:first-of-type > a:hover { - border-left-width: 0!important; -} -.control-sidebar-tabs > li > a { - border-radius: 0 !important; -} -.control-sidebar-tabs > li > a, -.control-sidebar-tabs > li > a:hover { - border-top: none; - border-right: none; - border-left: 1px solid transparent!important; - border-bottom: 1px solid transparent!important; -} -.control-sidebar-tabs > li > a .icon { - font-size: 16px; -} -.control-sidebar-tabs > li.active > a, -.control-sidebar-tabs > li.active > a:hover, -.control-sidebar-tabs > li.active > a:focus, -.control-sidebar-tabs > li.active > a:active { - border-top: none!important; - border-right: none!important; - border-bottom: none!important; -} -@media (max-width: 768px) { - .control-sidebar-tabs { - display: table; - } - .control-sidebar-tabs > li { - display: table-cell !important; - } -} -.control-sidebar-heading { - font-weight: 400; - font-size: 16px; - padding: 10px 0; - margin-bottom: 10px; -} -.control-sidebar-subheading { - display: block; - font-weight: 400; - font-size: 14px; -} -.control-sidebar-menu { - list-style: none; - padding: 0; - margin: 0 -15px; -} -.control-sidebar-menu > li > a { - display: block; - padding: 10px 15px; -} -.control-sidebar-menu > li > a:before, -.control-sidebar-menu > li > a:after { - content: " "; - display: table; -} -.control-sidebar-menu > li > a:after { - clear: both; -} -.control-sidebar-menu > li > a > .control-sidebar-subheading { - margin-top: 0; -} -.control-sidebar-menu .menu-icon { - float: left; - width: 35px; - height: 35px; - border-radius: 50%; - text-align: center; - line-height: 35px; -} -.control-sidebar-menu .menu-info { - margin-left: 45px; - margin-top: 3px; -} -.control-sidebar-menu .menu-info > .control-sidebar-subheading { - margin: 0; -} -.control-sidebar-menu .menu-info > p { - margin: 0; - font-size: 11px; -} -.control-sidebar-menu .progress { - margin: 0; -} -.control-sidebar-dark { - color: #b8c7ce; -} -.control-sidebar-dark, -.control-sidebar-dark + .control-sidebar-bg { - background: #222d32; -} -.control-sidebar-dark .control-sidebar-tabs { - border-bottom: #1c2529; -} -.control-sidebar-dark .control-sidebar-tabs > li > a { - background: #181f23; - color: #b8c7ce; -} -.control-sidebar-dark .control-sidebar-tabs > li > a, -.control-sidebar-dark .control-sidebar-tabs > li > a:hover { - border-left-color: #141a1d !important; - border-bottom-color: #141a1d !important; -} -.control-sidebar-dark .control-sidebar-tabs > li > a:hover, -.control-sidebar-dark .control-sidebar-tabs > li > a:focus, -.control-sidebar-dark .control-sidebar-tabs > li > a:active { - background: #1c2529; -} -.control-sidebar-dark .control-sidebar-tabs > li.active > a, -.control-sidebar-dark .control-sidebar-tabs > li.active > a:hover, -.control-sidebar-dark .control-sidebar-tabs > li.active > a:focus, -.control-sidebar-dark .control-sidebar-tabs > li.active > a:active { - background: #222d32; - color: #fff; -} -.control-sidebar-dark .control-sidebar-heading, -.control-sidebar-dark .control-sidebar-subheading { - color: #fff; -} -.control-sidebar-dark .control-sidebar-menu > li > a:hover { - background: #1e282c; -} -.control-sidebar-dark .control-sidebar-menu > li > a .menu-info > p { - color: #b8c7ce; -} -.control-sidebar-light { - color: #5e5e5e; -} -.control-sidebar-light, -.control-sidebar-light + .control-sidebar-bg { - background: #f9fafc; - border-left: 1px solid #d2d6de; -} -.control-sidebar-light .control-sidebar-tabs { - border-bottom: #d2d6de; -} -.control-sidebar-light .control-sidebar-tabs > li > a { - background: #e8ecf4; - color: #444444; -} -.control-sidebar-light .control-sidebar-tabs > li > a, -.control-sidebar-light .control-sidebar-tabs > li > a:hover { - border-left-color: #d2d6de !important; - border-bottom-color: #d2d6de !important; -} -.control-sidebar-light .control-sidebar-tabs > li > a:hover, -.control-sidebar-light .control-sidebar-tabs > li > a:focus, -.control-sidebar-light .control-sidebar-tabs > li > a:active { - background: #eff1f7; -} -.control-sidebar-light .control-sidebar-tabs > li.active > a, -.control-sidebar-light .control-sidebar-tabs > li.active > a:hover, -.control-sidebar-light .control-sidebar-tabs > li.active > a:focus, -.control-sidebar-light .control-sidebar-tabs > li.active > a:active { - background: #f9fafc; - color: #111; -} -.control-sidebar-light .control-sidebar-heading, -.control-sidebar-light .control-sidebar-subheading { - color: #111; -} -.control-sidebar-light .control-sidebar-menu { - margin-left: -14px; -} -.control-sidebar-light .control-sidebar-menu > li > a:hover { - background: #f4f4f5; -} -.control-sidebar-light .control-sidebar-menu > li > a .menu-info > p { - color: #5e5e5e; -} -/* - * Component: Dropdown menus - * ------------------------- - */ -/*Dropdowns in general*/ -.dropdown-menu { - box-shadow: none; - border-color: #eee; -} -.dropdown-menu > li > a { - color: #777; -} -.dropdown-menu > li > a > .glyphicon, -.dropdown-menu > li > a > .fa, -.dropdown-menu > li > a > .ion { - margin-right: 10px; -} -.dropdown-menu > li > a:hover { - background-color: #e1e3e9; - color: #333; -} -.dropdown-menu > .divider { - background-color: #eee; -} -.navbar-nav .dropdown-menu { - -webkit-box-shadow: none !important; - box-shadow: none !important; -} -.navbar-nav > .notifications-menu, -.navbar-nav > .messages-menu, -.navbar-nav > .tasks-menu { - position: relative; -} -.navbar-nav > .notifications-menu > .dropdown-menu, -.navbar-nav > .messages-menu > .dropdown-menu, -.navbar-nav > .tasks-menu > .dropdown-menu { - width: 280px; - padding: 0 0 0 0!important; - margin: 0!important; - top: 100%; -} -.navbar-nav > .notifications-menu > .dropdown-menu > li, -.navbar-nav > .messages-menu > .dropdown-menu > li, -.navbar-nav > .tasks-menu > .dropdown-menu > li { - position: relative; -} -.navbar-nav > .notifications-menu > .dropdown-menu > li.header, -.navbar-nav > .messages-menu > .dropdown-menu > li.header, -.navbar-nav > .tasks-menu > .dropdown-menu > li.header { - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; - background-color: #ffffff; - padding: 7px 10px; - border-bottom: 1px solid #f4f4f4; - color: #444444; - font-size: 14px; -} -.navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a, -.navbar-nav > .messages-menu > .dropdown-menu > li.footer > a, -.navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a { - border-top-left-radius: 0px; - border-top-right-radius: 0px; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; - font-size: 12px; - background-color: #fff; - padding: 7px 10px; - border-bottom: 1px solid #eeeeee; - color: #444!important; - text-align: center; -} -@media (max-width: 991px) { - .navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a, - .navbar-nav > .messages-menu > .dropdown-menu > li.footer > a, - .navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a { - background: #fff!important; - color: #444!important; - } -} -.navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a:hover, -.navbar-nav > .messages-menu > .dropdown-menu > li.footer > a:hover, -.navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a:hover { - text-decoration: none; - font-weight: normal; -} -.navbar-nav > .notifications-menu > .dropdown-menu > li .menu, -.navbar-nav > .messages-menu > .dropdown-menu > li .menu, -.navbar-nav > .tasks-menu > .dropdown-menu > li .menu { - max-height: 200px; - margin: 0; - padding: 0; - list-style: none; - overflow-x: hidden; -} -.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a, -.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a, -.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a { - display: block; - white-space: nowrap; - /* Prevent text from breaking */ - border-bottom: 1px solid #f4f4f4; -} -.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a:hover, -.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:hover, -.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a:hover { - background: #f4f4f4; - text-decoration: none; -} -.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a { - color: #444444; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - padding: 10px; -} -.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .glyphicon, -.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .fa, -.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .ion { - width: 20px; -} -.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a { - margin: 0px; - padding: 10px 10px; -} -.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > div > img { - margin: auto 10px auto auto; - width: 40px; - height: 40px; -} -.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > h4 { - padding: 0; - margin: 0 0 0 45px; - color: #444444; - font-size: 15px; - position: relative; -} -.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > h4 > small { - color: #999999; - font-size: 10px; - position: absolute; - top: 0px; - right: 0px; -} -.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > p { - margin: 0 0 0 45px; - font-size: 12px; - color: #888888; -} -.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:before, -.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after { - content: " "; - display: table; -} -.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after { - clear: both; -} -.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a { - padding: 10px; -} -.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a > h3 { - font-size: 14px; - padding: 0; - margin: 0 0 10px 0; - color: #666666; -} -.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a > .progress { - padding: 0; - margin: 0; -} -.navbar-nav > .user-menu > .dropdown-menu { - border-top-right-radius: 0; - border-top-left-radius: 0; - padding: 1px 0 0 0; - border-top-width: 0; - width: 280px; -} -.navbar-nav > .user-menu > .dropdown-menu, -.navbar-nav > .user-menu > .dropdown-menu > .user-body { - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; -} -.navbar-nav > .user-menu > .dropdown-menu > li.user-header { - height: 175px; - padding: 10px; - text-align: center; -} -.navbar-nav > .user-menu > .dropdown-menu > li.user-header > img { - z-index: 5; - height: 90px; - width: 90px; - border: 3px solid; - border-color: transparent; - border-color: rgba(255, 255, 255, 0.2); -} -.navbar-nav > .user-menu > .dropdown-menu > li.user-header > p { - z-index: 5; - color: #fff; - color: rgba(255, 255, 255, 0.8); - font-size: 17px; - margin-top: 10px; -} -.navbar-nav > .user-menu > .dropdown-menu > li.user-header > p > small { - display: block; - font-size: 12px; -} -.navbar-nav > .user-menu > .dropdown-menu > .user-body { - padding: 15px; - border-bottom: 1px solid #f4f4f4; - border-top: 1px solid #dddddd; -} -.navbar-nav > .user-menu > .dropdown-menu > .user-body:before, -.navbar-nav > .user-menu > .dropdown-menu > .user-body:after { - content: " "; - display: table; -} -.navbar-nav > .user-menu > .dropdown-menu > .user-body:after { - clear: both; -} -.navbar-nav > .user-menu > .dropdown-menu > .user-body a { - color: #444 !important; -} -@media (max-width: 991px) { - .navbar-nav > .user-menu > .dropdown-menu > .user-body a { - background: #fff !important; - color: #444 !important; - } -} -.navbar-nav > .user-menu > .dropdown-menu > .user-footer { - background-color: #f9f9f9; - padding: 10px; -} -.navbar-nav > .user-menu > .dropdown-menu > .user-footer:before, -.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after { - content: " "; - display: table; -} -.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after { - clear: both; -} -.navbar-nav > .user-menu > .dropdown-menu > .user-footer .btn-default { - color: #666666; -} -.navbar-nav > .user-menu .user-image { - float: left; - width: 25px; - height: 25px; - border-radius: 50%; - margin-right: 10px; - margin-top: -2px; -} -@media (max-width: 767px) { - .navbar-nav > .user-menu .user-image { - float: none; - margin-right: 0; - margin-top: -8px; - line-height: 10px; - } -} -/* Add fade animation to dropdown menus by appending - the class .animated-dropdown-menu to the .dropdown-menu ul (or ol)*/ -.open:not(.dropup) > .animated-dropdown-menu { - backface-visibility: visible !important; - -webkit-animation: flipInX 0.7s both; - -o-animation: flipInX 0.7s both; - animation: flipInX 0.7s both; -} -@keyframes flipInX { - 0% { - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transition-timing-function: ease-in; - opacity: 0; - } - 40% { - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transition-timing-function: ease-in; - } - 60% { - transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - opacity: 1; - } - 80% { - transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - } - 100% { - transform: perspective(400px); - } -} -@-webkit-keyframes flipInX { - 0% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - -webkit-transition-timing-function: ease-in; - opacity: 0; - } - 40% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - -webkit-transition-timing-function: ease-in; - } - 60% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - opacity: 1; - } - 80% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - } - 100% { - -webkit-transform: perspective(400px); - } -} -/* Fix dropdown menu in navbars */ -.navbar-custom-menu > .navbar-nav > li { - position: relative; -} -.navbar-custom-menu > .navbar-nav > li > .dropdown-menu { - position: absolute; - right: 0; - left: auto; -} -@media (max-width: 991px) { - .navbar-custom-menu > .navbar-nav { - float: right; - } - .navbar-custom-menu > .navbar-nav > li { - position: static; - } - .navbar-custom-menu > .navbar-nav > li > .dropdown-menu { - position: absolute; - right: 5%; - left: auto; - border: 1px solid #ddd; - background: #fff; - } -} -/* - * Component: Form - * --------------- - */ -.form-control { - border-radius: 0px !important; - box-shadow: none; - border-color: #d2d6de; -} -.form-control:focus { - border-color: #3c8dbc !important; - box-shadow: none; -} -.form-control::-moz-placeholder { - color: #bbb; - opacity: 1; -} -.form-control:-ms-input-placeholder { - color: #bbb; -} -.form-control::-webkit-input-placeholder { - color: #bbb; -} -.form-control:not(select) { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; -} -.form-group.has-success label { - color: #00a65a; -} -.form-group.has-success .form-control { - border-color: #00a65a !important; - box-shadow: none; -} -.form-group.has-warning label { - color: #f39c12; -} -.form-group.has-warning .form-control { - border-color: #f39c12 !important; - box-shadow: none; -} -.form-group.has-error label { - color: #dd4b39; -} -.form-group.has-error .form-control { - border-color: #dd4b39 !important; - box-shadow: none; -} -/* Input group */ -.input-group .input-group-addon { - border-radius: 0px; - border-color: #d2d6de; - background-color: #fff; -} -/* button groups */ -.btn-group-vertical .btn.btn-flat:first-of-type, -.btn-group-vertical .btn.btn-flat:last-of-type { - border-radius: 0; -} -.icheck > label { - padding-left: 0; -} -/* - * Component: Progress Bar - * ----------------------- - */ -.progress, -.progress > .progress-bar { - -webkit-box-shadow: none; - box-shadow: none; -} -.progress, -.progress > .progress-bar, -.progress .progress-bar, -.progress > .progress-bar .progress-bar { - border-radius: 1px; -} -/* size variation */ -.progress.sm, -.progress-sm { - height: 10px; -} -.progress.sm, -.progress-sm, -.progress.sm .progress-bar, -.progress-sm .progress-bar { - border-radius: 1px; -} -.progress.xs, -.progress-xs { - height: 7px; -} -.progress.xs, -.progress-xs, -.progress.xs .progress-bar, -.progress-xs .progress-bar { - border-radius: 1px; -} -.progress.xxs, -.progress-xxs { - height: 3px; -} -.progress.xxs, -.progress-xxs, -.progress.xxs .progress-bar, -.progress-xxs .progress-bar { - border-radius: 1px; -} -/* Vertical bars */ -.progress.vertical { - position: relative; - width: 30px; - height: 200px; - display: inline-block; - margin-right: 10px; -} -.progress.vertical > .progress-bar { - width: 100%!important; - position: absolute; - bottom: 0; -} -.progress.vertical.sm, -.progress.vertical.progress-sm { - width: 20px; -} -.progress.vertical.xs, -.progress.vertical.progress-xs { - width: 10px; -} -.progress.vertical.xxs, -.progress.vertical.progress-xxs { - width: 3px; -} -.progress-group .progress-text { - font-weight: 600; -} -.progress-group .progress-number { - float: right; -} -/* Remove margins from progress bars when put in a table */ -.table tr > td .progress { - margin: 0; -} -.progress-bar-light-blue, -.progress-bar-primary { - background-color: #3c8dbc; -} -.progress-striped .progress-bar-light-blue, -.progress-striped .progress-bar-primary { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-bar-green, -.progress-bar-success { - background-color: #00a65a; -} -.progress-striped .progress-bar-green, -.progress-striped .progress-bar-success { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-bar-aqua, -.progress-bar-info { - background-color: #00c0ef; -} -.progress-striped .progress-bar-aqua, -.progress-striped .progress-bar-info { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-bar-yellow, -.progress-bar-warning { - background-color: #f39c12; -} -.progress-striped .progress-bar-yellow, -.progress-striped .progress-bar-warning { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-bar-red, -.progress-bar-danger { - background-color: #dd4b39; -} -.progress-striped .progress-bar-red, -.progress-striped .progress-bar-danger { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -/* - * Component: Small Box - * -------------------- - */ -.small-box { - border-radius: 2px; - position: relative; - display: block; - margin-bottom: 20px; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); -} -.small-box > .inner { - padding: 10px; -} -.small-box > .small-box-footer { - position: relative; - text-align: center; - padding: 3px 0; - color: #fff; - color: rgba(255, 255, 255, 0.8); - display: block; - z-index: 10; - background: rgba(0, 0, 0, 0.1); - text-decoration: none; -} -.small-box > .small-box-footer:hover { - color: #fff; - background: rgba(0, 0, 0, 0.15); -} -.small-box h3 { - font-size: 38px; - font-weight: bold; - margin: 0 0 10px 0; - white-space: nowrap; - padding: 0; -} -.small-box p { - font-size: 15px; -} -.small-box p > small { - display: block; - color: #f9f9f9; - font-size: 13px; - margin-top: 5px; -} -.small-box h3, -.small-box p { - z-index: 5px; -} -.small-box .icon { - -webkit-transition: all 0.3s linear; - -o-transition: all 0.3s linear; - transition: all 0.3s linear; - position: absolute; - top: -10px; - right: 10px; - z-index: 0; - font-size: 90px; - color: rgba(0, 0, 0, 0.15); -} -.small-box:hover { - text-decoration: none; - color: #f9f9f9; -} -.small-box:hover .icon { - font-size: 95px; -} -@media (max-width: 767px) { - .small-box { - text-align: center; - } - .small-box .icon { - display: none; - } - .small-box p { - font-size: 12px; - } -} -/* - * Component: Box - * -------------- - */ -.box { - position: relative; - border-radius: 3px; - background: #ffffff; - border-top: 3px solid #d2d6de; - margin-bottom: 20px; - width: 100%; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); -} -.box.box-primary { - border-top-color: #3c8dbc; -} -.box.box-info { - border-top-color: #00c0ef; -} -.box.box-danger { - border-top-color: #dd4b39; -} -.box.box-warning { - border-top-color: #f39c12; -} -.box.box-success { - border-top-color: #00a65a; -} -.box.box-default { - border-top-color: #d2d6de; -} -.box.collapsed-box .box-body, -.box.collapsed-box .box-footer { - display: none; -} -.box .nav-stacked > li { - border-bottom: 1px solid #f4f4f4; - margin: 0; -} -.box .nav-stacked > li:last-of-type { - border-bottom: none; -} -.box.height-control .box-body { - max-height: 300px; - overflow: auto; -} -.box .border-right { - border-right: 1px solid #f4f4f4; -} -.box .border-left { - border-left: 1px solid #f4f4f4; -} -.box.box-solid { - border-top: 0px; -} -.box.box-solid > .box-header .btn.btn-default { - background: transparent; -} -.box.box-solid > .box-header .btn:hover, -.box.box-solid > .box-header a:hover { - background: rgba(0, 0, 0, 0.1) !important; -} -.box.box-solid.box-default { - border: 1px solid #d2d6de; -} -.box.box-solid.box-default > .box-header { - color: #444444; - background: #d2d6de; - background-color: #d2d6de; -} -.box.box-solid.box-default > .box-header a, -.box.box-solid.box-default > .box-header .btn { - color: #444444; -} -.box.box-solid.box-primary { - border: 1px solid #3c8dbc; -} -.box.box-solid.box-primary > .box-header { - color: #ffffff; - background: #3c8dbc; - background-color: #3c8dbc; -} -.box.box-solid.box-primary > .box-header a, -.box.box-solid.box-primary > .box-header .btn { - color: #ffffff; -} -.box.box-solid.box-info { - border: 1px solid #00c0ef; -} -.box.box-solid.box-info > .box-header { - color: #ffffff; - background: #00c0ef; - background-color: #00c0ef; -} -.box.box-solid.box-info > .box-header a, -.box.box-solid.box-info > .box-header .btn { - color: #ffffff; -} -.box.box-solid.box-danger { - border: 1px solid #dd4b39; -} -.box.box-solid.box-danger > .box-header { - color: #ffffff; - background: #dd4b39; - background-color: #dd4b39; -} -.box.box-solid.box-danger > .box-header a, -.box.box-solid.box-danger > .box-header .btn { - color: #ffffff; -} -.box.box-solid.box-warning { - border: 1px solid #f39c12; -} -.box.box-solid.box-warning > .box-header { - color: #ffffff; - background: #f39c12; - background-color: #f39c12; -} -.box.box-solid.box-warning > .box-header a, -.box.box-solid.box-warning > .box-header .btn { - color: #ffffff; -} -.box.box-solid.box-success { - border: 1px solid #00a65a; -} -.box.box-solid.box-success > .box-header { - color: #ffffff; - background: #00a65a; - background-color: #00a65a; -} -.box.box-solid.box-success > .box-header a, -.box.box-solid.box-success > .box-header .btn { - color: #ffffff; -} -.box.box-solid > .box-header > .box-tools .btn { - border: 0; - box-shadow: none; -} -.box.box-solid[class*='bg'] > .box-header { - color: #fff; -} -.box .box-group > .box { - margin-bottom: 5px; -} -.box .knob-label { - text-align: center; - color: #333; - font-weight: 100; - font-size: 12px; - margin-bottom: 0.3em; -} -.box > .overlay, -.overlay-wrapper > .overlay, -.box > .loading-img, -.overlay-wrapper > .loading-img { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; -} -.box .overlay, -.overlay-wrapper .overlay { - z-index: 50; - background: rgba(255, 255, 255, 0.7); - border-radius: 3px; -} -.box .overlay > .fa, -.overlay-wrapper .overlay > .fa { - position: absolute; - top: 50%; - left: 50%; - margin-left: -15px; - margin-top: -15px; - color: #000; - font-size: 30px; -} -.box .overlay.dark, -.overlay-wrapper .overlay.dark { - background: rgba(0, 0, 0, 0.5); -} -.box-header:before, -.box-body:before, -.box-footer:before, -.box-header:after, -.box-body:after, -.box-footer:after { - content: " "; - display: table; -} -.box-header:after, -.box-body:after, -.box-footer:after { - clear: both; -} -.box-header { - color: #444; - display: block; - padding: 10px; - position: relative; -} -.box-header.with-border { - border-bottom: 1px solid #f4f4f4; -} -.collapsed-box .box-header.with-border { - border-bottom: none; -} -.box-header > .fa, -.box-header > .glyphicon, -.box-header > .ion, -.box-header .box-title { - display: inline-block; - font-size: 18px; - margin: 0; - line-height: 1; -} -.box-header > .fa, -.box-header > .glyphicon, -.box-header > .ion { - margin-right: 5px; -} -.box-header > .box-tools { - position: absolute; - right: 10px; - top: 5px; -} -.box-header > .box-tools [data-toggle="tooltip"] { - position: relative; -} -.box-header > .box-tools.pull-right .dropdown-menu { - right: 0; - left: auto; -} -.btn-box-tool { - padding: 5px; - font-size: 12px; - background: transparent; - box-shadow: none!important; - color: #97a0b3; -} -.open .btn-box-tool, -.btn-box-tool:hover { - color: #606c84; -} -.btn-box-tool:active { - outline: none!important; -} -.box-body { - border-top-left-radius: 0; - border-top-right-radius: 0; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; - padding: 10px; -} -.no-header .box-body { - border-top-right-radius: 3px; - border-top-left-radius: 3px; -} -.box-body > .table { - margin-bottom: 0; -} -.box-body .fc { - margin-top: 5px; -} -.box-body .full-width-chart { - margin: -19px; -} -.box-body.no-padding .full-width-chart { - margin: -9px; -} -.box-body .box-pane { - border-top-left-radius: 0; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 3px; -} -.box-body .box-pane-right { - border-top-left-radius: 0; - border-top-right-radius: 0; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 0; -} -.box-footer { - border-top-left-radius: 0; - border-top-right-radius: 0; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; - border-top: 1px solid #f4f4f4; - padding: 10px; - background-color: #ffffff; -} -.chart-legend { - margin: 10px 0; -} -@media (max-width: 991px) { - .chart-legend > li { - float: left; - margin-right: 10px; - } -} -/* Widget: TODO LIST */ -.todo-list { - margin: 0; - padding: 0px 0px; - list-style: none; - overflow: auto; -} -.todo-list > li { - border-radius: 2px; - padding: 10px; - background: #f4f4f4; - margin-bottom: 2px; - border-left: 2px solid #e6e7e8; - color: #444; -} -.todo-list > li:last-of-type { - margin-bottom: 0; -} -.todo-list > li.danger { - border-left-color: #dd4b39; -} -.todo-list > li.warning { - border-left-color: #f39c12; -} -.todo-list > li.info { - border-left-color: #00c0ef; -} -.todo-list > li.success { - border-left-color: #00a65a; -} -.todo-list > li.primary { - border-left-color: #3c8dbc; -} -.todo-list > li > input[type='checkbox'] { - margin: 0 10px 0 5px; -} -.todo-list > li .text { - display: inline-block; - margin-left: 5px; - font-weight: 600; -} -.todo-list > li .label { - margin-left: 10px; - font-size: 9px; -} -.todo-list > li .tools { - display: none; - float: right; - color: #dd4b39; -} -.todo-list > li .tools > .fa, -.todo-list > li .tools > .glyphicon, -.todo-list > li .tools > .ion { - margin-right: 5px; - cursor: pointer; -} -.todo-list > li:hover .tools { - display: inline-block; -} -.todo-list > li.done { - color: #999; -} -.todo-list > li.done .text { - text-decoration: line-through; - font-weight: 500; -} -.todo-list > li.done .label { - background: #d2d6de !important; -} -.todo-list .handle { - display: inline-block; - cursor: move; - margin: 0 5px; -} -/* Chat widget (DEPRECATED - this will be removed in the next major release. Use Direct Chat instead)*/ -.chat { - padding: 5px 20px 5px 10px; -} -.chat .item { - margin-bottom: 10px; -} -.chat .item:before, -.chat .item:after { - content: " "; - display: table; -} -.chat .item:after { - clear: both; -} -.chat .item > img { - width: 40px; - height: 40px; - border: 2px solid transparent; - border-radius: 50% !important; -} -.chat .item > img.online { - border: 2px solid #00a65a; -} -.chat .item > img.offline { - border: 2px solid #dd4b39; -} -.chat .item > .message { - margin-left: 55px; - margin-top: -40px; -} -.chat .item > .message > .name { - display: block; - font-weight: 600; -} -.chat .item > .attachment { - border-radius: 3px; - background: #f4f4f4; - margin-left: 65px; - margin-right: 15px; - padding: 10px; -} -.chat .item > .attachment > h4 { - margin: 0 0 5px 0; - font-weight: 600; - font-size: 14px; -} -.chat .item > .attachment > p, -.chat .item > .attachment > .filename { - font-weight: 600; - font-size: 13px; - font-style: italic; - margin: 0; -} -.chat .item > .attachment:before, -.chat .item > .attachment:after { - content: " "; - display: table; -} -.chat .item > .attachment:after { - clear: both; -} -.box-input { - max-width: 200px; -} -/* - * Component: Info Box - * ------------------- - */ -.info-box { - display: block; - min-height: 90px; - background: #fff; - width: 100%; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); - border-radius: 2px; - margin-bottom: 15px; -} -.info-box small { - font-size: 14px; -} -.info-box .progress { - background: rgba(0, 0, 0, 0.2); - margin: 5px -10px 5px -10px; - height: 2px; -} -.info-box .progress, -.info-box .progress .progress-bar { - border-radius: 0; -} -.info-box .progress .progress-bar { - background: #fff; -} -.info-box-icon { - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; - display: block; - float: left; - height: 90px; - width: 90px; - text-align: center; - font-size: 45px; - line-height: 90px; - background: rgba(0, 0, 0, 0.2); -} -.info-box-content { - padding: 5px 10px; - margin-left: 90px; -} -.info-box-number { - display: block; - font-weight: bold; - font-size: 18px; -} -.progress-description, -.info-box-text { - display: block; - font-size: 14px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} -.info-box-text { - text-transform: uppercase; -} -.info-box-more { - display: block; -} -.progress-description { - margin: 0; -} -/* - * Component: Timeline - * ------------------- - */ -.timeline { - position: relative; - margin: 0 0 30px 0; - padding: 0; - list-style: none; -} -.timeline:before { - content: ''; - position: absolute; - top: 0px; - bottom: 0; - width: 4px; - background: #ddd; - left: 31px; - margin: 0; - border-radius: 2px; -} -.timeline > li { - position: relative; - margin-right: 10px; - margin-bottom: 15px; -} -.timeline > li:before, -.timeline > li:after { - content: " "; - display: table; -} -.timeline > li:after { - clear: both; -} -.timeline > li > .timeline-item { - -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); - border-radius: 3px; - margin-top: 0px; - background: #fff; - color: #444; - margin-left: 60px; - margin-right: 15px; - padding: 0; - position: relative; -} -.timeline > li > .timeline-item > .time { - color: #999; - float: right; - padding: 10px; - font-size: 12px; -} -.timeline > li > .timeline-item > .timeline-header { - margin: 0; - color: #555; - border-bottom: 1px solid #f4f4f4; - padding: 10px; - font-size: 16px; - line-height: 1.1; -} -.timeline > li > .timeline-item > .timeline-header > a { - font-weight: 600; -} -.timeline > li > .timeline-item > .timeline-body, -.timeline > li > .timeline-item > .timeline-footer { - padding: 10px; -} -.timeline > li.time-label > span { - font-weight: 600; - padding: 5px; - display: inline-block; - background-color: #fff; - border-radius: 4px; -} -.timeline > li > .fa, -.timeline > li > .glyphicon, -.timeline > li > .ion { - width: 30px; - height: 30px; - font-size: 15px; - line-height: 30px; - position: absolute; - color: #666; - background: #d2d6de; - border-radius: 50%; - text-align: center; - left: 18px; - top: 0; -} -/* - * Component: Button - * ----------------- - */ -.btn { - border-radius: 3px; - -webkit-box-shadow: none; - box-shadow: none; - border: 1px solid transparent; -} -.btn.uppercase { - text-transform: uppercase; -} -.btn.btn-flat { - border-radius: 0; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - border-width: 1px; -} -.btn:active { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - -moz-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -} -.btn:focus { - outline: none; -} -.btn.btn-file { - position: relative; - overflow: hidden; -} -.btn.btn-file > input[type='file'] { - position: absolute; - top: 0; - right: 0; - min-width: 100%; - min-height: 100%; - font-size: 100px; - text-align: right; - opacity: 0; - filter: alpha(opacity=0); - outline: none; - background: white; - cursor: inherit; - display: block; -} -.btn-default { - background-color: #f4f4f4; - color: #444; - border-color: #ddd; -} -.btn-default:hover, -.btn-default:active, -.btn-default.hover { - background-color: #e7e7e7 !important; -} -.btn-primary { - background-color: #3c8dbc; - border-color: #367fa9; -} -.btn-primary:hover, -.btn-primary:active, -.btn-primary.hover { - background-color: #367fa9; -} -.btn-success { - background-color: #00a65a; - border-color: #008d4c; -} -.btn-success:hover, -.btn-success:active, -.btn-success.hover { - background-color: #008d4c; -} -.btn-info { - background-color: #00c0ef; - border-color: #00acd6; -} -.btn-info:hover, -.btn-info:active, -.btn-info.hover { - background-color: #00acd6; -} -.btn-danger { - background-color: #dd4b39; - border-color: #d73925; -} -.btn-danger:hover, -.btn-danger:active, -.btn-danger.hover { - background-color: #d73925; -} -.btn-warning { - background-color: #f39c12; - border-color: #e08e0b; -} -.btn-warning:hover, -.btn-warning:active, -.btn-warning.hover { - background-color: #e08e0b; -} -.btn-outline { - border: 1px solid #fff; - background: transparent; - color: #fff; -} -.btn-outline:hover, -.btn-outline:focus, -.btn-outline:active { - color: rgba(255, 255, 255, 0.7); - border-color: rgba(255, 255, 255, 0.7); -} -.btn-link { - -webkit-box-shadow: none; - box-shadow: none; -} -.btn[class*='bg-']:hover { - -webkit-box-shadow: inset 0 0 100px rgba(0, 0, 0, 0.2); - box-shadow: inset 0 0 100px rgba(0, 0, 0, 0.2); -} -.btn-app { - border-radius: 3px; - position: relative; - padding: 15px 5px; - margin: 0 0 10px 10px; - min-width: 80px; - height: 60px; - text-align: center; - color: #666; - border: 1px solid #ddd; - background-color: #f4f4f4; - font-size: 12px; -} -.btn-app > .fa, -.btn-app > .glyphicon, -.btn-app > .ion { - font-size: 20px; - display: block; -} -.btn-app:hover { - background: #f4f4f4; - color: #444; - border-color: #aaa; -} -.btn-app:active, -.btn-app:focus { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - -moz-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -} -.btn-app > .badge { - position: absolute; - top: -3px; - right: -10px; - font-size: 10px; - font-weight: 400; -} -/* - * Component: Callout - * ------------------ - */ -.callout { - border-radius: 3px; - margin: 0 0 20px 0; - padding: 15px 30px 15px 15px; - border-left: 5px solid #eee; -} -.callout a { - color: #fff; - text-decoration: underline; -} -.callout a:hover { - color: #eee; -} -.callout h4 { - margin-top: 0; - font-weight: 600; -} -.callout p:last-child { - margin-bottom: 0; -} -.callout code, -.callout .highlight { - background-color: #fff; -} -.callout.callout-danger { - border-color: #c23321; -} -.callout.callout-warning { - border-color: #c87f0a; -} -.callout.callout-info { - border-color: #0097bc; -} -.callout.callout-success { - border-color: #00733e; -} -/* - * Component: alert - * ---------------- - */ -.alert { - border-radius: 3px; -} -.alert h4 { - font-weight: 600; -} -.alert .icon { - margin-right: 10px; -} -.alert .close { - color: #000; - opacity: 0.2; - filter: alpha(opacity=20); -} -.alert .close:hover { - opacity: 0.5; - filter: alpha(opacity=50); -} -.alert a { - color: #fff; - text-decoration: underline; -} -.alert-success { - border-color: #008d4c; -} -.alert-danger, -.alert-error { - border-color: #d73925; -} -.alert-warning { - border-color: #e08e0b; -} -.alert-info { - border-color: #00acd6; -} -/* - * Component: Nav - * -------------- - */ -.nav > li > a:hover, -.nav > li > a:active, -.nav > li > a:focus { - color: #444; - background: #f7f7f7; -} -/* NAV PILLS */ -.nav-pills > li > a { - border-radius: 0; - border-top: 3px solid transparent; - color: #444; -} -.nav-pills > li > a > .fa, -.nav-pills > li > a > .glyphicon, -.nav-pills > li > a > .ion { - margin-right: 5px; -} -.nav-pills > li.active > a, -.nav-pills > li.active > a:hover, -.nav-pills > li.active > a:focus { - border-top-color: #3c8dbc; -} -.nav-pills > li.active > a { - font-weight: 600; -} -/* NAV STACKED */ -.nav-stacked > li > a { - border-radius: 0; - border-top: 0; - border-left: 3px solid transparent; - color: #444; -} -.nav-stacked > li.active > a, -.nav-stacked > li.active > a:hover { - border-top: 0; - border-left-color: #3c8dbc; -} -.nav-stacked > li.header { - border-bottom: 1px solid #ddd; - color: #777; - margin-bottom: 10px; - padding: 5px 10px; - text-transform: uppercase; -} -/* NAV TABS */ -.nav-tabs-custom { - margin-bottom: 20px; - background: #fff; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); - border-radius: 3px; -} -.nav-tabs-custom > .nav-tabs { - margin: 0; - border-bottom-color: #f4f4f4; - border-top-right-radius: 3px; - border-top-left-radius: 3px; -} -.nav-tabs-custom > .nav-tabs > li { - border-top: 3px solid transparent; - margin-bottom: -2px; - margin-right: 5px; -} -.nav-tabs-custom > .nav-tabs > li > a { - color: #444; - border-radius: 0 !important; -} -.nav-tabs-custom > .nav-tabs > li > a, -.nav-tabs-custom > .nav-tabs > li > a:hover { - background: transparent; - margin: 0; -} -.nav-tabs-custom > .nav-tabs > li > a:hover { - color: #999; -} -.nav-tabs-custom > .nav-tabs > li:not(.active) > a:hover, -.nav-tabs-custom > .nav-tabs > li:not(.active) > a:focus, -.nav-tabs-custom > .nav-tabs > li:not(.active) > a:active { - border-color: transparent; -} -.nav-tabs-custom > .nav-tabs > li.active { - border-top-color: #3c8dbc; -} -.nav-tabs-custom > .nav-tabs > li.active > a, -.nav-tabs-custom > .nav-tabs > li.active:hover > a { - background-color: #fff; - color: #444; -} -.nav-tabs-custom > .nav-tabs > li.active > a { - border-top-color: transparent; - border-left-color: #f4f4f4; - border-right-color: #f4f4f4; -} -.nav-tabs-custom > .nav-tabs > li:first-of-type { - margin-left: 0; -} -.nav-tabs-custom > .nav-tabs > li:first-of-type.active > a { - border-left-color: transparent; -} -.nav-tabs-custom > .nav-tabs.pull-right { - float: none!important; -} -.nav-tabs-custom > .nav-tabs.pull-right > li { - float: right; -} -.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type { - margin-right: 0; -} -.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type > a { - border-left-width: 1px; -} -.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type.active > a { - border-left-color: #f4f4f4; - border-right-color: transparent; -} -.nav-tabs-custom > .nav-tabs > li.header { - line-height: 35px; - padding: 0 10px; - font-size: 20px; - color: #444; -} -.nav-tabs-custom > .nav-tabs > li.header > .fa, -.nav-tabs-custom > .nav-tabs > li.header > .glyphicon, -.nav-tabs-custom > .nav-tabs > li.header > .ion { - margin-right: 5px; -} -.nav-tabs-custom > .tab-content { - background: #fff; - padding: 10px; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.nav-tabs-custom .dropdown.open > a:active, -.nav-tabs-custom .dropdown.open > a:focus { - background: transparent; - color: #999; -} -/* PAGINATION */ -.pagination > li > a { - background: #fafafa; - color: #666; - border-radius: 0 !important; -} -/* - * Component: Products List - * ------------------------ - */ -.products-list { - list-style: none; - margin: 0; - padding: 0; -} -.products-list > .item { - border-radius: 3px; - -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); - padding: 10px 0; - background: #fff; -} -.products-list > .item:before, -.products-list > .item:after { - content: " "; - display: table; -} -.products-list > .item:after { - clear: both; -} -.products-list .product-img { - float: left; -} -.products-list .product-img img { - width: 50px; - height: 50px; -} -.products-list .product-info { - margin-left: 60px; -} -.products-list .product-title { - font-weight: 600; -} -.products-list .product-description { - display: block; - color: #999; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} -.product-list-in-box > .item { - -webkit-box-shadow: none; - box-shadow: none; - border-radius: 0; - border-bottom: 1px solid #f4f4f4; -} -.product-list-in-box > .item:last-of-type { - border-bottom-width: 0; -} -/* - * Component: Table - * ---------------- - */ -.table > thead > tr > th, -.table > tbody > tr > th, -.table > tfoot > tr > th, -.table > thead > tr > td, -.table > tbody > tr > td, -.table > tfoot > tr > td { - border-top: 1px solid #f4f4f4; -} -.table > thead > tr > th { - border-bottom: 2px solid #f4f4f4; -} -.table tr td .progress { - margin-top: 5px; -} -.table-bordered { - border: 1px solid #f4f4f4; -} -.table-bordered > thead > tr > th, -.table-bordered > tbody > tr > th, -.table-bordered > tfoot > tr > th, -.table-bordered > thead > tr > td, -.table-bordered > tbody > tr > td, -.table-bordered > tfoot > tr > td { - border: 1px solid #f4f4f4; -} -.table-bordered > thead > tr > th, -.table-bordered > thead > tr > td { - border-bottom-width: 2px; -} -.table.no-border, -.table.no-border td, -.table.no-border th { - border: 0; -} -/* .text-center in tables */ -table.text-center, -table.text-center td, -table.text-center th { - text-align: center; -} -.table.align th { - text-align: left; -} -.table.align td { - text-align: right; -} -/* - * Component: Label - * ---------------- - */ -.label-default { - background-color: #d2d6de; - color: #444; -} -/* - * Component: Direct Chat - * ---------------------- - */ -.direct-chat .box-body { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; - position: relative; - overflow-x: hidden; - padding: 0; -} -.direct-chat.chat-pane-open .direct-chat-contacts { - -webkit-transform: translate(0, 0); - -ms-transform: translate(0, 0); - -o-transform: translate(0, 0); - transform: translate(0, 0); -} -.direct-chat-messages { - -webkit-transform: translate(0, 0); - -ms-transform: translate(0, 0); - -o-transform: translate(0, 0); - transform: translate(0, 0); - padding: 10px; - height: 250px; - overflow: auto; -} -.direct-chat-msg, -.direct-chat-text { - display: block; -} -.direct-chat-msg { - margin-bottom: 10px; -} -.direct-chat-msg:before, -.direct-chat-msg:after { - content: " "; - display: table; -} -.direct-chat-msg:after { - clear: both; -} -.direct-chat-messages, -.direct-chat-contacts { - -webkit-transition: -webkit-transform 0.5s ease-in-out; - -moz-transition: -moz-transform 0.5s ease-in-out; - -o-transition: -o-transform 0.5s ease-in-out; - transition: transform 0.5s ease-in-out; -} -.direct-chat-text { - border-radius: 5px; - position: relative; - padding: 5px 10px; - background: #d2d6de; - border: 1px solid #d2d6de; - margin: 5px 0 0 50px; - color: #444444; -} -.direct-chat-text:after, -.direct-chat-text:before { - position: absolute; - right: 100%; - top: 15px; - border: solid transparent; - border-right-color: #d2d6de; - content: ' '; - height: 0; - width: 0; - pointer-events: none; -} -.direct-chat-text:after { - border-width: 5px; - margin-top: -5px; -} -.direct-chat-text:before { - border-width: 6px; - margin-top: -6px; -} -.right .direct-chat-text { - margin-right: 50px; - margin-left: 0; -} -.right .direct-chat-text:after, -.right .direct-chat-text:before { - right: auto; - left: 100%; - border-right-color: transparent; - border-left-color: #d2d6de; -} -.direct-chat-img { - border-radius: 50%; - float: left; - width: 40px; - height: 40px; -} -.right .direct-chat-img { - float: right; -} -.direct-chat-info { - display: block; - margin-bottom: 2px; - font-size: 12px; -} -.direct-chat-name { - font-weight: 600; -} -.direct-chat-timestamp { - color: #999; -} -.direct-chat-contacts-open .direct-chat-contacts { - -webkit-transform: translate(0, 0); - -ms-transform: translate(0, 0); - -o-transform: translate(0, 0); - transform: translate(0, 0); -} -.direct-chat-contacts { - -webkit-transform: translate(101%, 0); - -ms-transform: translate(101%, 0); - -o-transform: translate(101%, 0); - transform: translate(101%, 0); - position: absolute; - top: 0; - bottom: 0; - height: 250px; - width: 100%; - background: #222d32; - color: #fff; - overflow: auto; -} -.contacts-list > li { - border-bottom: 1px solid rgba(0, 0, 0, 0.2); - padding: 10px; - margin: 0; -} -.contacts-list > li:before, -.contacts-list > li:after { - content: " "; - display: table; -} -.contacts-list > li:after { - clear: both; -} -.contacts-list > li:last-of-type { - border-bottom: none; -} -.contacts-list-img { - border-radius: 50%; - width: 40px; - float: left; -} -.contacts-list-info { - margin-left: 45px; - color: #fff; -} -.contacts-list-name, -.contacts-list-status { - display: block; -} -.contacts-list-name { - font-weight: 600; -} -.contacts-list-status { - font-size: 12px; -} -.contacts-list-date { - color: #aaa; - font-weight: normal; -} -.contacts-list-msg { - color: #999; -} -.direct-chat-danger .right > .direct-chat-text { - background: #dd4b39; - border-color: #dd4b39; - color: #ffffff; -} -.direct-chat-danger .right > .direct-chat-text:after, -.direct-chat-danger .right > .direct-chat-text:before { - border-left-color: #dd4b39; -} -.direct-chat-primary .right > .direct-chat-text { - background: #3c8dbc; - border-color: #3c8dbc; - color: #ffffff; -} -.direct-chat-primary .right > .direct-chat-text:after, -.direct-chat-primary .right > .direct-chat-text:before { - border-left-color: #3c8dbc; -} -.direct-chat-warning .right > .direct-chat-text { - background: #f39c12; - border-color: #f39c12; - color: #ffffff; -} -.direct-chat-warning .right > .direct-chat-text:after, -.direct-chat-warning .right > .direct-chat-text:before { - border-left-color: #f39c12; -} -.direct-chat-info .right > .direct-chat-text { - background: #00c0ef; - border-color: #00c0ef; - color: #ffffff; -} -.direct-chat-info .right > .direct-chat-text:after, -.direct-chat-info .right > .direct-chat-text:before { - border-left-color: #00c0ef; -} -.direct-chat-success .right > .direct-chat-text { - background: #00a65a; - border-color: #00a65a; - color: #ffffff; -} -.direct-chat-success .right > .direct-chat-text:after, -.direct-chat-success .right > .direct-chat-text:before { - border-left-color: #00a65a; -} -/* - * Component: Users List - * --------------------- - */ -.users-list > li { - width: 25%; - float: left; - padding: 10px; - text-align: center; -} -.users-list > li img { - border-radius: 50%; - max-width: 100%; - height: auto; -} -.users-list > li > a:hover, -.users-list > li > a:hover .users-list-name { - color: #999; -} -.users-list-name, -.users-list-date { - display: block; -} -.users-list-name { - font-weight: 600; - color: #444; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} -.users-list-date { - color: #999; - font-size: 12px; -} -/* - * Component: Carousel - * ------------------- - */ -.carousel-control { - background-image: none!important; -} -.carousel-control > .fa { - font-size: 40px; - position: absolute; - top: 50%; - z-index: 5; - display: inline-block; - margin-top: -20px; -} -/* - * Component: modal - * ---------------- - */ -.modal { - background: rgba(0, 0, 0, 0.3); -} -.modal-content { - border-radius: 0; - -webkit-box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125) !important; - box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125) !important; - border: 0; -} -@media (min-width: 768px) { - .modal-content { - -webkit-box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125) !important; - box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125) !important; - } -} -.modal-header { - border-bottom-color: #f4f4f4; -} -.modal-footer { - border-top-color: #f4f4f4; -} -.modal-primary .modal-header, -.modal-primary .modal-footer { - border-color: #307095; -} -.modal-warning .modal-header, -.modal-warning .modal-footer { - border-color: #c87f0a; -} -.modal-info .modal-header, -.modal-info .modal-footer { - border-color: #0097bc; -} -.modal-success .modal-header, -.modal-success .modal-footer { - border-color: #00733e; -} -.modal-danger .modal-header, -.modal-danger .modal-footer { - border-color: #c23321; -} -/* - * Page: Mailbox - * ------------- - */ -.mailbox-messages > .table { - margin: 0; -} -.mailbox-controls { - padding: 5px; -} -.mailbox-controls.with-border { - border-bottom: 1px solid #f4f4f4; -} -.mailbox-read-info { - border-bottom: 1px solid #f4f4f4; - padding: 10px; -} -.mailbox-read-info h3 { - font-size: 20px; - margin: 0; -} -.mailbox-read-info h5 { - margin: 0; - padding: 5px 0 0 0; -} -.mailbox-read-time { - color: #999; - font-size: 13px; -} -.mailbox-read-message { - padding: 10px; -} -.mailbox-attachments li { - float: left; - width: 200px; - border: 1px solid #eee; - margin-bottom: 10px; - margin-right: 10px; -} -.mailbox-attachment-name { - font-weight: bold; - color: #666; -} -.mailbox-attachment-icon, -.mailbox-attachment-info, -.mailbox-attachment-size { - display: block; -} -.mailbox-attachment-info { - padding: 10px; - background: #f4f4f4; -} -.mailbox-attachment-size { - color: #999; - font-size: 12px; -} -.mailbox-attachment-icon { - text-align: center; - font-size: 65px; - color: #666; - padding: 20px 10px; -} -.mailbox-attachment-icon.has-img { - padding: 0; -} -.mailbox-attachment-icon.has-img > img { - max-width: 100%; - height: auto; -} -/* - * Page: Lock Screen - * ----------------- - */ -/* ADD THIS CLASS TO THE <BODY> TAG */ -.lockscreen { - background: #d2d6de; -} -.lockscreen-logo { - font-size: 35px; - text-align: center; - margin-bottom: 25px; - font-weight: 300; -} -.lockscreen-logo a { - color: #444; -} -.lockscreen-wrapper { - max-width: 400px; - margin: 0 auto; - margin-top: 10%; -} -/* User name [optional] */ -.lockscreen .lockscreen-name { - text-align: center; - font-weight: 600; -} -/* Will contain the image and the sign in form */ -.lockscreen-item { - border-radius: 4px; - padding: 0; - background: #fff; - position: relative; - margin: 10px auto 30px auto; - width: 290px; -} -/* User image */ -.lockscreen-image { - border-radius: 50%; - position: absolute; - left: -10px; - top: -25px; - background: #fff; - padding: 5px; - z-index: 10; -} -.lockscreen-image > img { - border-radius: 50%; - width: 70px; - height: 70px; -} -/* Contains the password input and the login button */ -.lockscreen-credentials { - margin-left: 70px; -} -.lockscreen-credentials .form-control { - border: 0 !important; -} -.lockscreen-credentials .btn { - background-color: #fff; - border: 0; - padding: 0 10px; -} -.lockscreen-footer { - margin-top: 10px; -} -/* - * Page: Login & Register - * ---------------------- - */ -.login-logo, -.register-logo { - font-size: 35px; - text-align: center; - margin-bottom: 25px; - font-weight: 300; -} -.login-logo a, -.register-logo a { - color: #444; -} -.login-page, -.register-page { - background: #d2d6de; -} -.login-box, -.register-box { - width: 360px; - margin: 7% auto; -} -@media (max-width: 768px) { - .login-box, - .register-box { - width: 90%; - margin-top: 20px; - } -} -.login-box-body, -.register-box-body { - background: #fff; - padding: 20px; - color: #444; - border-top: 0; - color: #666; -} -.login-box-body .form-control-feedback, -.register-box-body .form-control-feedback { - color: #777; -} -.login-box-msg, -.register-box-msg { - margin: 0; - text-align: center; - padding: 0 20px 20px 20px; -} -.social-auth-links { - margin: 10px 0; -} -/* - * Page: 400 and 500 error pages - * ------------------------------ - */ -.error-page { - width: 600px; - margin: 20px auto 0 auto; -} -@media (max-width: 991px) { - .error-page { - width: 100%; - } -} -.error-page > .headline { - float: left; - font-size: 100px; - font-weight: 300; -} -@media (max-width: 991px) { - .error-page > .headline { - float: none; - text-align: center; - } -} -.error-page > .error-content { - margin-left: 190px; - display: block; -} -@media (max-width: 991px) { - .error-page > .error-content { - margin-left: 0; - } -} -.error-page > .error-content > h3 { - font-weight: 300; - font-size: 25px; -} -@media (max-width: 991px) { - .error-page > .error-content > h3 { - text-align: center; - } -} -/* - * Page: Invoice - * ------------- - */ -.invoice { - position: relative; - background: #fff; - border: 1px solid #f4f4f4; - padding: 20px; - margin: 10px 25px; -} -.invoice-title { - margin-top: 0; -} -/* - * Plugin: Social Buttons - * ---------------------- - */ -.btn-social { - position: relative; - padding-left: 44px !important; - text-align: left; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} -.btn-social :first-child { - position: absolute; - left: 0; - top: 0; - bottom: 0; - width: 32px !important; - line-height: 34px !important; - font-size: 1.6em!important; - text-align: center; - border-right: 1px solid rgba(0, 0, 0, 0.2); -} -.btn-social.btn-lg { - padding-left: 61px !important; -} -.btn-social.btn-lg :first-child { - line-height: 45px; - width: 45px; - font-size: 1.8em; -} -.btn-social.btn-sm { - padding-left: 38px !important; -} -.btn-social.btn-sm :first-child { - line-height: 28px; - width: 28px; - font-size: 1.4em; -} -.btn-social.btn-xs { - padding-left: 30px !important; -} -.btn-social.btn-xs :first-child { - line-height: 20px; - width: 20px; - font-size: 1.2em; -} -.btn-social-icon { - position: relative; - padding-left: 44px !important; - text-align: left; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - height: 34px; - width: 34px; - padding: 0; -} -.btn-social-icon :first-child { - position: absolute; - left: 0; - top: 0; - bottom: 0; - width: 32px !important; - line-height: 34px !important; - font-size: 1.6em!important; - text-align: center; - border-right: 1px solid rgba(0, 0, 0, 0.2); -} -.btn-social-icon.btn-lg { - padding-left: 61px !important; -} -.btn-social-icon.btn-lg :first-child { - line-height: 45px; - width: 45px; - font-size: 1.8em; -} -.btn-social-icon.btn-sm { - padding-left: 38px !important; -} -.btn-social-icon.btn-sm :first-child { - line-height: 28px; - width: 28px; - font-size: 1.4em; -} -.btn-social-icon.btn-xs { - padding-left: 30px !important; -} -.btn-social-icon.btn-xs :first-child { - line-height: 20px; - width: 20px; - font-size: 1.2em; -} -.btn-social-icon :first-child { - border: none; - text-align: center; - width: 100%!important; -} -.btn-social-icon.btn-lg { - height: 45px; - width: 45px; - padding-left: 0; - padding-right: 0; -} -.btn-social-icon.btn-sm { - height: 30px; - width: 30px; - padding-left: 0; - padding-right: 0; -} -.btn-social-icon.btn-xs { - height: 22px; - width: 22px; - padding-left: 0; - padding-right: 0; -} -.btn-bitbucket { - color: #ffffff; - background-color: #205081; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-bitbucket:hover, -.btn-bitbucket:focus, -.btn-bitbucket.focus, -.btn-bitbucket:active, -.btn-bitbucket.active, -.open > .dropdown-toggle.btn-bitbucket { - color: #ffffff; - background-color: #163758; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-bitbucket:active, -.btn-bitbucket.active, -.open > .dropdown-toggle.btn-bitbucket { - background-image: none; -} -.btn-bitbucket.disabled, -.btn-bitbucket[disabled], -fieldset[disabled] .btn-bitbucket, -.btn-bitbucket.disabled:hover, -.btn-bitbucket[disabled]:hover, -fieldset[disabled] .btn-bitbucket:hover, -.btn-bitbucket.disabled:focus, -.btn-bitbucket[disabled]:focus, -fieldset[disabled] .btn-bitbucket:focus, -.btn-bitbucket.disabled.focus, -.btn-bitbucket[disabled].focus, -fieldset[disabled] .btn-bitbucket.focus, -.btn-bitbucket.disabled:active, -.btn-bitbucket[disabled]:active, -fieldset[disabled] .btn-bitbucket:active, -.btn-bitbucket.disabled.active, -.btn-bitbucket[disabled].active, -fieldset[disabled] .btn-bitbucket.active { - background-color: #205081; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-bitbucket .badge { - color: #205081; - background-color: #ffffff; -} -.btn-dropbox { - color: #ffffff; - background-color: #1087dd; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-dropbox:hover, -.btn-dropbox:focus, -.btn-dropbox.focus, -.btn-dropbox:active, -.btn-dropbox.active, -.open > .dropdown-toggle.btn-dropbox { - color: #ffffff; - background-color: #0d6aad; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-dropbox:active, -.btn-dropbox.active, -.open > .dropdown-toggle.btn-dropbox { - background-image: none; -} -.btn-dropbox.disabled, -.btn-dropbox[disabled], -fieldset[disabled] .btn-dropbox, -.btn-dropbox.disabled:hover, -.btn-dropbox[disabled]:hover, -fieldset[disabled] .btn-dropbox:hover, -.btn-dropbox.disabled:focus, -.btn-dropbox[disabled]:focus, -fieldset[disabled] .btn-dropbox:focus, -.btn-dropbox.disabled.focus, -.btn-dropbox[disabled].focus, -fieldset[disabled] .btn-dropbox.focus, -.btn-dropbox.disabled:active, -.btn-dropbox[disabled]:active, -fieldset[disabled] .btn-dropbox:active, -.btn-dropbox.disabled.active, -.btn-dropbox[disabled].active, -fieldset[disabled] .btn-dropbox.active { - background-color: #1087dd; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-dropbox .badge { - color: #1087dd; - background-color: #ffffff; -} -.btn-facebook { - color: #ffffff; - background-color: #3b5998; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-facebook:hover, -.btn-facebook:focus, -.btn-facebook.focus, -.btn-facebook:active, -.btn-facebook.active, -.open > .dropdown-toggle.btn-facebook { - color: #ffffff; - background-color: #2d4373; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-facebook:active, -.btn-facebook.active, -.open > .dropdown-toggle.btn-facebook { - background-image: none; -} -.btn-facebook.disabled, -.btn-facebook[disabled], -fieldset[disabled] .btn-facebook, -.btn-facebook.disabled:hover, -.btn-facebook[disabled]:hover, -fieldset[disabled] .btn-facebook:hover, -.btn-facebook.disabled:focus, -.btn-facebook[disabled]:focus, -fieldset[disabled] .btn-facebook:focus, -.btn-facebook.disabled.focus, -.btn-facebook[disabled].focus, -fieldset[disabled] .btn-facebook.focus, -.btn-facebook.disabled:active, -.btn-facebook[disabled]:active, -fieldset[disabled] .btn-facebook:active, -.btn-facebook.disabled.active, -.btn-facebook[disabled].active, -fieldset[disabled] .btn-facebook.active { - background-color: #3b5998; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-facebook .badge { - color: #3b5998; - background-color: #ffffff; -} -.btn-flickr { - color: #ffffff; - background-color: #ff0084; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-flickr:hover, -.btn-flickr:focus, -.btn-flickr.focus, -.btn-flickr:active, -.btn-flickr.active, -.open > .dropdown-toggle.btn-flickr { - color: #ffffff; - background-color: #cc006a; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-flickr:active, -.btn-flickr.active, -.open > .dropdown-toggle.btn-flickr { - background-image: none; -} -.btn-flickr.disabled, -.btn-flickr[disabled], -fieldset[disabled] .btn-flickr, -.btn-flickr.disabled:hover, -.btn-flickr[disabled]:hover, -fieldset[disabled] .btn-flickr:hover, -.btn-flickr.disabled:focus, -.btn-flickr[disabled]:focus, -fieldset[disabled] .btn-flickr:focus, -.btn-flickr.disabled.focus, -.btn-flickr[disabled].focus, -fieldset[disabled] .btn-flickr.focus, -.btn-flickr.disabled:active, -.btn-flickr[disabled]:active, -fieldset[disabled] .btn-flickr:active, -.btn-flickr.disabled.active, -.btn-flickr[disabled].active, -fieldset[disabled] .btn-flickr.active { - background-color: #ff0084; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-flickr .badge { - color: #ff0084; - background-color: #ffffff; -} -.btn-foursquare { - color: #ffffff; - background-color: #0072b1; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-foursquare:hover, -.btn-foursquare:focus, -.btn-foursquare.focus, -.btn-foursquare:active, -.btn-foursquare.active, -.open > .dropdown-toggle.btn-foursquare { - color: #ffffff; - background-color: #00517e; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-foursquare:active, -.btn-foursquare.active, -.open > .dropdown-toggle.btn-foursquare { - background-image: none; -} -.btn-foursquare.disabled, -.btn-foursquare[disabled], -fieldset[disabled] .btn-foursquare, -.btn-foursquare.disabled:hover, -.btn-foursquare[disabled]:hover, -fieldset[disabled] .btn-foursquare:hover, -.btn-foursquare.disabled:focus, -.btn-foursquare[disabled]:focus, -fieldset[disabled] .btn-foursquare:focus, -.btn-foursquare.disabled.focus, -.btn-foursquare[disabled].focus, -fieldset[disabled] .btn-foursquare.focus, -.btn-foursquare.disabled:active, -.btn-foursquare[disabled]:active, -fieldset[disabled] .btn-foursquare:active, -.btn-foursquare.disabled.active, -.btn-foursquare[disabled].active, -fieldset[disabled] .btn-foursquare.active { - background-color: #0072b1; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-foursquare .badge { - color: #0072b1; - background-color: #ffffff; -} -.btn-github { - color: #ffffff; - background-color: #444444; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-github:hover, -.btn-github:focus, -.btn-github.focus, -.btn-github:active, -.btn-github.active, -.open > .dropdown-toggle.btn-github { - color: #ffffff; - background-color: #2b2b2b; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-github:active, -.btn-github.active, -.open > .dropdown-toggle.btn-github { - background-image: none; -} -.btn-github.disabled, -.btn-github[disabled], -fieldset[disabled] .btn-github, -.btn-github.disabled:hover, -.btn-github[disabled]:hover, -fieldset[disabled] .btn-github:hover, -.btn-github.disabled:focus, -.btn-github[disabled]:focus, -fieldset[disabled] .btn-github:focus, -.btn-github.disabled.focus, -.btn-github[disabled].focus, -fieldset[disabled] .btn-github.focus, -.btn-github.disabled:active, -.btn-github[disabled]:active, -fieldset[disabled] .btn-github:active, -.btn-github.disabled.active, -.btn-github[disabled].active, -fieldset[disabled] .btn-github.active { - background-color: #444444; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-github .badge { - color: #444444; - background-color: #ffffff; -} -.btn-google-plus { - color: #ffffff; - background-color: #dd4b39; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-google-plus:hover, -.btn-google-plus:focus, -.btn-google-plus.focus, -.btn-google-plus:active, -.btn-google-plus.active, -.open > .dropdown-toggle.btn-google-plus { - color: #ffffff; - background-color: #c23321; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-google-plus:active, -.btn-google-plus.active, -.open > .dropdown-toggle.btn-google-plus { - background-image: none; -} -.btn-google-plus.disabled, -.btn-google-plus[disabled], -fieldset[disabled] .btn-google-plus, -.btn-google-plus.disabled:hover, -.btn-google-plus[disabled]:hover, -fieldset[disabled] .btn-google-plus:hover, -.btn-google-plus.disabled:focus, -.btn-google-plus[disabled]:focus, -fieldset[disabled] .btn-google-plus:focus, -.btn-google-plus.disabled.focus, -.btn-google-plus[disabled].focus, -fieldset[disabled] .btn-google-plus.focus, -.btn-google-plus.disabled:active, -.btn-google-plus[disabled]:active, -fieldset[disabled] .btn-google-plus:active, -.btn-google-plus.disabled.active, -.btn-google-plus[disabled].active, -fieldset[disabled] .btn-google-plus.active { - background-color: #dd4b39; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-google-plus .badge { - color: #dd4b39; - background-color: #ffffff; -} -.btn-instagram { - color: #ffffff; - background-color: #3f729b; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-instagram:hover, -.btn-instagram:focus, -.btn-instagram.focus, -.btn-instagram:active, -.btn-instagram.active, -.open > .dropdown-toggle.btn-instagram { - color: #ffffff; - background-color: #305777; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-instagram:active, -.btn-instagram.active, -.open > .dropdown-toggle.btn-instagram { - background-image: none; -} -.btn-instagram.disabled, -.btn-instagram[disabled], -fieldset[disabled] .btn-instagram, -.btn-instagram.disabled:hover, -.btn-instagram[disabled]:hover, -fieldset[disabled] .btn-instagram:hover, -.btn-instagram.disabled:focus, -.btn-instagram[disabled]:focus, -fieldset[disabled] .btn-instagram:focus, -.btn-instagram.disabled.focus, -.btn-instagram[disabled].focus, -fieldset[disabled] .btn-instagram.focus, -.btn-instagram.disabled:active, -.btn-instagram[disabled]:active, -fieldset[disabled] .btn-instagram:active, -.btn-instagram.disabled.active, -.btn-instagram[disabled].active, -fieldset[disabled] .btn-instagram.active { - background-color: #3f729b; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-instagram .badge { - color: #3f729b; - background-color: #ffffff; -} -.btn-linkedin { - color: #ffffff; - background-color: #007bb6; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-linkedin:hover, -.btn-linkedin:focus, -.btn-linkedin.focus, -.btn-linkedin:active, -.btn-linkedin.active, -.open > .dropdown-toggle.btn-linkedin { - color: #ffffff; - background-color: #005983; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-linkedin:active, -.btn-linkedin.active, -.open > .dropdown-toggle.btn-linkedin { - background-image: none; -} -.btn-linkedin.disabled, -.btn-linkedin[disabled], -fieldset[disabled] .btn-linkedin, -.btn-linkedin.disabled:hover, -.btn-linkedin[disabled]:hover, -fieldset[disabled] .btn-linkedin:hover, -.btn-linkedin.disabled:focus, -.btn-linkedin[disabled]:focus, -fieldset[disabled] .btn-linkedin:focus, -.btn-linkedin.disabled.focus, -.btn-linkedin[disabled].focus, -fieldset[disabled] .btn-linkedin.focus, -.btn-linkedin.disabled:active, -.btn-linkedin[disabled]:active, -fieldset[disabled] .btn-linkedin:active, -.btn-linkedin.disabled.active, -.btn-linkedin[disabled].active, -fieldset[disabled] .btn-linkedin.active { - background-color: #007bb6; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-linkedin .badge { - color: #007bb6; - background-color: #ffffff; -} -.btn-tumblr { - color: #ffffff; - background-color: #2c4762; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-tumblr:hover, -.btn-tumblr:focus, -.btn-tumblr.focus, -.btn-tumblr:active, -.btn-tumblr.active, -.open > .dropdown-toggle.btn-tumblr { - color: #ffffff; - background-color: #1c2d3f; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-tumblr:active, -.btn-tumblr.active, -.open > .dropdown-toggle.btn-tumblr { - background-image: none; -} -.btn-tumblr.disabled, -.btn-tumblr[disabled], -fieldset[disabled] .btn-tumblr, -.btn-tumblr.disabled:hover, -.btn-tumblr[disabled]:hover, -fieldset[disabled] .btn-tumblr:hover, -.btn-tumblr.disabled:focus, -.btn-tumblr[disabled]:focus, -fieldset[disabled] .btn-tumblr:focus, -.btn-tumblr.disabled.focus, -.btn-tumblr[disabled].focus, -fieldset[disabled] .btn-tumblr.focus, -.btn-tumblr.disabled:active, -.btn-tumblr[disabled]:active, -fieldset[disabled] .btn-tumblr:active, -.btn-tumblr.disabled.active, -.btn-tumblr[disabled].active, -fieldset[disabled] .btn-tumblr.active { - background-color: #2c4762; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-tumblr .badge { - color: #2c4762; - background-color: #ffffff; -} -.btn-twitter { - color: #ffffff; - background-color: #55acee; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-twitter:hover, -.btn-twitter:focus, -.btn-twitter.focus, -.btn-twitter:active, -.btn-twitter.active, -.open > .dropdown-toggle.btn-twitter { - color: #ffffff; - background-color: #2795e9; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-twitter:active, -.btn-twitter.active, -.open > .dropdown-toggle.btn-twitter { - background-image: none; -} -.btn-twitter.disabled, -.btn-twitter[disabled], -fieldset[disabled] .btn-twitter, -.btn-twitter.disabled:hover, -.btn-twitter[disabled]:hover, -fieldset[disabled] .btn-twitter:hover, -.btn-twitter.disabled:focus, -.btn-twitter[disabled]:focus, -fieldset[disabled] .btn-twitter:focus, -.btn-twitter.disabled.focus, -.btn-twitter[disabled].focus, -fieldset[disabled] .btn-twitter.focus, -.btn-twitter.disabled:active, -.btn-twitter[disabled]:active, -fieldset[disabled] .btn-twitter:active, -.btn-twitter.disabled.active, -.btn-twitter[disabled].active, -fieldset[disabled] .btn-twitter.active { - background-color: #55acee; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-twitter .badge { - color: #55acee; - background-color: #ffffff; -} -.btn-vk { - color: #ffffff; - background-color: #587ea3; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-vk:hover, -.btn-vk:focus, -.btn-vk.focus, -.btn-vk:active, -.btn-vk.active, -.open > .dropdown-toggle.btn-vk { - color: #ffffff; - background-color: #466482; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-vk:active, -.btn-vk.active, -.open > .dropdown-toggle.btn-vk { - background-image: none; -} -.btn-vk.disabled, -.btn-vk[disabled], -fieldset[disabled] .btn-vk, -.btn-vk.disabled:hover, -.btn-vk[disabled]:hover, -fieldset[disabled] .btn-vk:hover, -.btn-vk.disabled:focus, -.btn-vk[disabled]:focus, -fieldset[disabled] .btn-vk:focus, -.btn-vk.disabled.focus, -.btn-vk[disabled].focus, -fieldset[disabled] .btn-vk.focus, -.btn-vk.disabled:active, -.btn-vk[disabled]:active, -fieldset[disabled] .btn-vk:active, -.btn-vk.disabled.active, -.btn-vk[disabled].active, -fieldset[disabled] .btn-vk.active { - background-color: #587ea3; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-vk .badge { - color: #587ea3; - background-color: #ffffff; -} -/* - * Plugin: Full Calendar - * --------------------- - */ -.fc-button { - background: #f4f4f4; - background-image: none; - color: #444; - border-color: #ddd; - border-bottom-color: #ddd; -} -.fc-button:hover, -.fc-button:active, -.fc-button.hover { - background-color: #e9e9e9; -} -.fc-header-title h2 { - font-size: 15px; - line-height: 1.6em; - color: #666; - margin-left: 10px; -} -.fc-header-right { - padding-right: 10px; -} -.fc-header-left { - padding-left: 10px; -} -.fc-widget-header { - background: #fafafa; -} -.fc-grid { - width: 100%; - border: 0; -} -.fc-widget-header:first-of-type, -.fc-widget-content:first-of-type { - border-left: 0; - border-right: 0; -} -.fc-widget-header:last-of-type, -.fc-widget-content:last-of-type { - border-right: 0; -} -.fc-toolbar { - padding: 10px; - margin: 0; -} -.fc-day-number { - font-size: 20px; - font-weight: 300; - padding-right: 10px; -} -.fc-color-picker { - list-style: none; - margin: 0; - padding: 0; -} -.fc-color-picker > li { - float: left; - font-size: 30px; - margin-right: 5px; - line-height: 30px; -} -.fc-color-picker > li .fa { - -webkit-transition: -webkit-transform linear 0.3s; - -moz-transition: -moz-transform linear 0.3s; - -o-transition: -o-transform linear 0.3s; - transition: transform linear 0.3s; -} -.fc-color-picker > li .fa:hover { - -webkit-transform: rotate(30deg); - -ms-transform: rotate(30deg); - -o-transform: rotate(30deg); - transform: rotate(30deg); -} -#add-new-event { - -webkit-transition: all linear 0.3s; - -o-transition: all linear 0.3s; - transition: all linear 0.3s; -} -.external-event { - padding: 5px 10px; - font-weight: bold; - margin-bottom: 4px; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); - text-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); - border-radius: 3px; - cursor: move; -} -.external-event:hover { - box-shadow: inset 0 0 90px rgba(0, 0, 0, 0.2); -} -/* - * General: Miscellaneous - * ---------------------- - */ -.pad { - padding: 10px; -} -.margin { - margin: 10px; -} -.margin-bottom { - margin-bottom: 20px; -} -.inline { - display: inline; - width: auto; -} -.description-block { - display: block; - margin: 10px 0; - text-align: center; -} -.description-block.margin-bottom { - margin-bottom: 25px; -} -.description-block > .description-header { - margin: 0; - padding: 0; - font-weight: 600; - font-size: 16px; -} -.description-block > .description-text { - text-transform: uppercase; -} -.bg-red, -.bg-yellow, -.bg-aqua, -.bg-blue, -.bg-light-blue, -.bg-green, -.bg-navy, -.bg-teal, -.bg-olive, -.bg-lime, -.bg-orange, -.bg-fuchsia, -.bg-purple, -.bg-maroon, -.bg-black, -.bg-red-active, -.bg-yellow-active, -.bg-aqua-active, -.bg-blue-active, -.bg-light-blue-active, -.bg-green-active, -.bg-navy-active, -.bg-teal-active, -.bg-olive-active, -.bg-lime-active, -.bg-orange-active, -.bg-fuchsia-active, -.bg-purple-active, -.bg-maroon-active, -.bg-black-active, -.callout.callout-danger, -.callout.callout-warning, -.callout.callout-info, -.callout.callout-success, -.alert-success, -.alert-danger, -.alert-error, -.alert-warning, -.alert-info, -.label-danger, -.label-info, -.label-waring, -.label-primary, -.label-success, -.modal-primary .modal-body, -.modal-primary .modal-header, -.modal-primary .modal-footer, -.modal-warning .modal-body, -.modal-warning .modal-header, -.modal-warning .modal-footer, -.modal-info .modal-body, -.modal-info .modal-header, -.modal-info .modal-footer, -.modal-success .modal-body, -.modal-success .modal-header, -.modal-success .modal-footer, -.modal-danger .modal-body, -.modal-danger .modal-header, -.modal-danger .modal-footer { - color: #fff !important; -} -.bg-gray { - color: #000; - background-color: #d2d6de !important; -} -.bg-black { - background-color: #111111 !important; -} -.bg-red, -.callout.callout-danger, -.alert-danger, -.alert-error, -.label-danger, -.modal-danger .modal-body { - background-color: #dd4b39 !important; -} -.bg-yellow, -.callout.callout-warning, -.alert-warning, -.label-waring, -.modal-warning .modal-body { - background-color: #f39c12 !important; -} -.bg-aqua, -.callout.callout-info, -.alert-info, -.label-info, -.modal-info .modal-body { - background-color: #00c0ef !important; -} -.bg-blue { - background-color: #0073b7 !important; -} -.bg-light-blue, -.label-primary, -.modal-primary .modal-body { - background-color: #3c8dbc !important; -} -.bg-green, -.callout.callout-success, -.alert-success, -.label-success, -.modal-success .modal-body { - background-color: #00a65a !important; -} -.bg-navy { - background-color: #001f3f !important; -} -.bg-teal { - background-color: #39cccc !important; -} -.bg-olive { - background-color: #3d9970 !important; -} -.bg-lime { - background-color: #01ff70 !important; -} -.bg-orange { - background-color: #ff851b !important; -} -.bg-fuchsia { - background-color: #f012be !important; -} -.bg-purple { - background-color: #605ca8 !important; -} -.bg-maroon { - background-color: #d81b60 !important; -} -.bg-gray-active { - color: #000; - background-color: #b5bbc8 !important; -} -.bg-black-active { - background-color: #000000 !important; -} -.bg-red-active, -.modal-danger .modal-header, -.modal-danger .modal-footer { - background-color: #d33724 !important; -} -.bg-yellow-active, -.modal-warning .modal-header, -.modal-warning .modal-footer { - background-color: #db8b0b !important; -} -.bg-aqua-active, -.modal-info .modal-header, -.modal-info .modal-footer { - background-color: #00a7d0 !important; -} -.bg-blue-active { - background-color: #005384 !important; -} -.bg-light-blue-active, -.modal-primary .modal-header, -.modal-primary .modal-footer { - background-color: #357ca5 !important; -} -.bg-green-active, -.modal-success .modal-header, -.modal-success .modal-footer { - background-color: #008d4c !important; -} -.bg-navy-active { - background-color: #001a35 !important; -} -.bg-teal-active { - background-color: #30bbbb !important; -} -.bg-olive-active { - background-color: #368763 !important; -} -.bg-lime-active { - background-color: #00e765 !important; -} -.bg-orange-active { - background-color: #ff7701 !important; -} -.bg-fuchsia-active { - background-color: #db0ead !important; -} -.bg-purple-active { - background-color: #555299 !important; -} -.bg-maroon-active { - background-color: #ca195a !important; -} -[class^="bg-"].disabled { - opacity: 0.65; - filter: alpha(opacity=65); -} -.text-red { - color: #dd4b39 !important; -} -.text-yellow { - color: #f39c12 !important; -} -.text-aqua { - color: #00c0ef !important; -} -.text-blue { - color: #0073b7 !important; -} -.text-black { - color: #111111 !important; -} -.text-light-blue { - color: #3c8dbc !important; -} -.text-green { - color: #00a65a !important; -} -.text-gray { - color: #d2d6de !important; -} -.text-navy { - color: #001f3f !important; -} -.text-teal { - color: #39cccc !important; -} -.text-olive { - color: #3d9970 !important; -} -.text-lime { - color: #01ff70 !important; -} -.text-orange { - color: #ff851b !important; -} -.text-fuchsia { - color: #f012be !important; -} -.text-purple { - color: #605ca8 !important; -} -.text-maroon { - color: #d81b60 !important; -} -.hide { - display: none !important; -} -.no-border { - border: 0px !important; -} -.no-padding { - padding: 0px !important; -} -.no-margin { - margin: 0px !important; -} -.no-shadow { - box-shadow: none!important; -} -.list-unstyled, -.chart-legend, -.contacts-list, -.users-list, -.mailbox-attachments { - list-style: none; - margin: 0; - padding: 0; -} -.flat { - border-radius: 0 !important; -} -.text-bold, -.text-bold.table td, -.text-bold.table th { - font-weight: 700; -} -.jqstooltip { - padding: 5px!important; - width: auto!important; - height: auto!important; -} -.bg-teal-gradient { - background: #39cccc !important; - background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #39cccc), color-stop(1, #7adddd)) !important; - background: -ms-linear-gradient(bottom, #39cccc, #7adddd) !important; - background: -moz-linear-gradient(center bottom, #39cccc 0%, #7adddd 100%) !important; - background: -o-linear-gradient(#7adddd, #39cccc) !important; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7adddd', endColorstr='#39cccc', GradientType=0) !important; - color: #fff; -} -.bg-light-blue-gradient { - background: #3c8dbc !important; - background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #3c8dbc), color-stop(1, #67a8ce)) !important; - background: -ms-linear-gradient(bottom, #3c8dbc, #67a8ce) !important; - background: -moz-linear-gradient(center bottom, #3c8dbc 0%, #67a8ce 100%) !important; - background: -o-linear-gradient(#67a8ce, #3c8dbc) !important; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#67a8ce', endColorstr='#3c8dbc', GradientType=0) !important; - color: #fff; -} -.bg-blue-gradient { - background: #0073b7 !important; - background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #0073b7), color-stop(1, #0089db)) !important; - background: -ms-linear-gradient(bottom, #0073b7, #0089db) !important; - background: -moz-linear-gradient(center bottom, #0073b7 0%, #0089db 100%) !important; - background: -o-linear-gradient(#0089db, #0073b7) !important; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0089db', endColorstr='#0073b7', GradientType=0) !important; - color: #fff; -} -.bg-aqua-gradient { - background: #00c0ef !important; - background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #00c0ef), color-stop(1, #14d1ff)) !important; - background: -ms-linear-gradient(bottom, #00c0ef, #14d1ff) !important; - background: -moz-linear-gradient(center bottom, #00c0ef 0%, #14d1ff 100%) !important; - background: -o-linear-gradient(#14d1ff, #00c0ef) !important; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#14d1ff', endColorstr='#00c0ef', GradientType=0) !important; - color: #fff; -} -.bg-yellow-gradient { - background: #f39c12 !important; - background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #f39c12), color-stop(1, #f7bc60)) !important; - background: -ms-linear-gradient(bottom, #f39c12, #f7bc60) !important; - background: -moz-linear-gradient(center bottom, #f39c12 0%, #f7bc60 100%) !important; - background: -o-linear-gradient(#f7bc60, #f39c12) !important; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f7bc60', endColorstr='#f39c12', GradientType=0) !important; - color: #fff; -} -.bg-purple-gradient { - background: #605ca8 !important; - background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #605ca8), color-stop(1, #9491c4)) !important; - background: -ms-linear-gradient(bottom, #605ca8, #9491c4) !important; - background: -moz-linear-gradient(center bottom, #605ca8 0%, #9491c4 100%) !important; - background: -o-linear-gradient(#9491c4, #605ca8) !important; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#9491c4', endColorstr='#605ca8', GradientType=0) !important; - color: #fff; -} -.bg-green-gradient { - background: #00a65a !important; - background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #00a65a), color-stop(1, #00ca6d)) !important; - background: -ms-linear-gradient(bottom, #00a65a, #00ca6d) !important; - background: -moz-linear-gradient(center bottom, #00a65a 0%, #00ca6d 100%) !important; - background: -o-linear-gradient(#00ca6d, #00a65a) !important; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ca6d', endColorstr='#00a65a', GradientType=0) !important; - color: #fff; -} -.bg-red-gradient { - background: #dd4b39 !important; - background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #dd4b39), color-stop(1, #e47365)) !important; - background: -ms-linear-gradient(bottom, #dd4b39, #e47365) !important; - background: -moz-linear-gradient(center bottom, #dd4b39 0%, #e47365 100%) !important; - background: -o-linear-gradient(#e47365, #dd4b39) !important; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e47365', endColorstr='#dd4b39', GradientType=0) !important; - color: #fff; -} -.bg-black-gradient { - background: #111111 !important; - background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #111111), color-stop(1, #2b2b2b)) !important; - background: -ms-linear-gradient(bottom, #111111, #2b2b2b) !important; - background: -moz-linear-gradient(center bottom, #111111 0%, #2b2b2b 100%) !important; - background: -o-linear-gradient(#2b2b2b, #111111) !important; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#2b2b2b', endColorstr='#111111', GradientType=0) !important; - color: #fff; -} -.bg-maroon-gradient { - background: #d81b60 !important; - background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #d81b60), color-stop(1, #e73f7c)) !important; - background: -ms-linear-gradient(bottom, #d81b60, #e73f7c) !important; - background: -moz-linear-gradient(center bottom, #d81b60 0%, #e73f7c 100%) !important; - background: -o-linear-gradient(#e73f7c, #d81b60) !important; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e73f7c', endColorstr='#d81b60', GradientType=0) !important; - color: #fff; -} -.connectedSortable { - min-height: 100px; -} -.ui-helper-hidden-accessible { - border: 0; - clip: rect(0 0 0 0); - height: 1px; - margin: -1px; - overflow: hidden; - padding: 0; - position: absolute; - width: 1px; -} -.sort-highlight { - background: #f4f4f4; - border: 1px dashed #ddd; - margin-bottom: 10px; -} -.full-opacity-hover { - opacity: 0.65; - filter: alpha(opacity=65); -} -.full-opacity-hover:hover { - opacity: 1; - filter: alpha(opacity=100); -} -.chart { - position: relative; - overflow: hidden; - width: 100%; -} -.chart svg, -.chart canvas { - width: 100%!important; -} -/* - * Misc: print - * ----------- - */ -@media print { - .no-print, - .main-sidebar, - .left-side, - .main-header, - .content-header { - display: none!important; - } - .content-wrapper, - .right-side, - .main-footer { - margin-left: 0!important; - min-height: 0!important; - -webkit-transform: translate(0, 0) !important; - -ms-transform: translate(0, 0) !important; - -o-transform: translate(0, 0) !important; - transform: translate(0, 0) !important; - } - .fixed .content-wrapper, - .fixed .right-side { - padding-top: 0!important; - } - .invoice { - width: 100%; - border: 0; - margin: 0; - padding: 0; - } - .invoice-col { - float: left; - width: 33.3333333%; - } - .table-responsive { - overflow: auto; - } - .table-responsive > .table tr th, - .table-responsive > .table tr td { - white-space: normal!important; - } -} diff --git a/assets/dist/css/AdminLTE.min.css b/assets/dist/css/AdminLTE.min.css deleted file mode 100644 index b148a1cb..00000000 --- a/assets/dist/css/AdminLTE.min.css +++ /dev/null @@ -1,12 +0,0 @@ -@import url(https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic);/*! - * AdminLTE v2.1.0 - * Author: Almsaeed Studio - * Website: Almsaeed Studio <http://almsaeedstudio.com> - * License: Open source - MIT - * Please visit http://opensource.org/licenses/MIT for more information -!*/html,body{min-height:100%}.layout-boxed html,.layout-boxed body{height:100%}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:'Source Sans Pro','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;overflow-x:hidden;overflow-y:auto}.wrapper{min-height:100%;position:relative;overflow:hidden!important}.wrapper:before,.wrapper:after{content:" ";display:table}.wrapper:after{clear:both}.layout-boxed .wrapper{max-width:1250px;margin:0 auto;min-height:100%;box-shadow:0 0 8px rgba(0,0,0,0.5);position:relative}.layout-boxed{background:url('../img/boxed-bg.jpg') repeat fixed}.content-wrapper,.right-side,.main-footer{-webkit-transition:-webkit-transform .3s ease-in-out,margin .3s ease-in-out;-moz-transition:-moz-transform .3s ease-in-out,margin .3s ease-in-out;-o-transition:-o-transform .3s ease-in-out,margin .3s ease-in-out;transition:transform .3s ease-in-out,margin .3s ease-in-out;margin-left:230px;z-index:820}.layout-top-nav .content-wrapper,.layout-top-nav .right-side,.layout-top-nav .main-footer{margin-left:0}@media (max-width:767px){.content-wrapper,.right-side,.main-footer{margin-left:0}}@media (min-width:768px){.sidebar-collapse .content-wrapper,.sidebar-collapse .right-side,.sidebar-collapse .main-footer{margin-left:0}}@media (max-width:767px){.sidebar-open .content-wrapper,.sidebar-open .right-side,.sidebar-open .main-footer{-webkit-transform:translate(230px, 0);-ms-transform:translate(230px, 0);-o-transform:translate(230px, 0);transform:translate(230px, 0)}}.content-wrapper,.right-side{min-height:100%;background-color:#ecf0f5;z-index:800}.main-footer{background:#fff;padding:15px;color:#444;border-top:1px solid #d2d6de}.fixed .main-header,.fixed .main-sidebar,.fixed .left-side{position:fixed}.fixed .main-header{top:0;right:0;left:0}.fixed .content-wrapper,.fixed .right-side{padding-top:50px}@media (max-width:767px){.fixed .content-wrapper,.fixed .right-side{padding-top:100px}}.fixed.layout-boxed .wrapper{max-width:100%}.content{min-height:250px;padding:15px;margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:'Source Sans Pro',sans-serif}a{color:#3c8dbc}a:hover,a:active,a:focus{outline:none;text-decoration:none;color:#72afd2}.page-header{margin:10px 0 20px 0;font-size:22px}.page-header>small{color:#666;display:block;margin-top:5px}.main-header{position:relative;max-height:100px;z-index:1030}.main-header>.navbar{-webkit-transition:margin-left .3s ease-in-out;-o-transition:margin-left .3s ease-in-out;transition:margin-left .3s ease-in-out;margin-bottom:0;margin-left:230px;border:none;min-height:50px;border-radius:0}.layout-top-nav .main-header>.navbar{margin-left:0!important}.main-header #navbar-search-input{background:rgba(255,255,255,0.2);border-color:transparent}.main-header #navbar-search-input:focus,.main-header #navbar-search-input:active{border-color:rgba(0,0,0,0.1) !important;background:rgba(255,255,255,0.9)}.main-header #navbar-search-input::-moz-placeholder{color:#f4f4f4;opacity:1}.main-header #navbar-search-input:-ms-input-placeholder{color:#f4f4f4;}.main-header #navbar-search-input::-webkit-input-placeholder{color:#f4f4f4;}.main-header .navbar-custom-menu,.main-header .navbar-right{float:right}@media (max-width:991px){.main-header .navbar-custom-menu a,.main-header .navbar-right a{color:inherit;background:transparent}}@media (max-width:767px){.main-header .navbar-right{float:none}.navbar-collapse .main-header .navbar-right{margin:7.5px -15px}.main-header .navbar-right>li{color:inherit;border:0}}.main-header .sidebar-toggle{float:left;background-color:transparent;background-image:none;padding:15px 15px;font-family:fontAwesome}.main-header .sidebar-toggle:before{content:"\f0c9"}.main-header .sidebar-toggle:hover{color:#fff}.main-header .sidebar-toggle:focus,.main-header .sidebar-toggle:active{background:transparent}.main-header .sidebar-toggle .icon-bar{display:none}.main-header .navbar .nav>li.user>a>.fa,.main-header .navbar .nav>li.user>a>.glyphicon,.main-header .navbar .nav>li.user>a>.ion{margin-right:5px}.main-header .navbar .nav>li>a>.label{position:absolute;top:9px;right:7px;text-align:center;font-size:9px;padding:2px 3px;line-height:.9}.main-header .logo{-webkit-transition:width .3s ease-in-out;-o-transition:width .3s ease-in-out;transition:width .3s ease-in-out;display:block;float:left;height:50px;font-size:20px;line-height:50px;text-align:center;width:230px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;padding:0 15px;font-weight:300;overflow:hidden}.main-header .logo .logo-lg{display:block}.main-header .logo .logo-mini{display:none}.main-header .navbar-brand{color:#fff}.content-header{position:relative;padding:15px 15px 0 15px}.content-header>h1{margin:0;font-size:24px}.content-header>h1>small{font-size:15px;display:inline-block;padding-left:4px;font-weight:300}.content-header>.breadcrumb{float:right;background:transparent;margin-top:0px;margin-bottom:0;font-size:12px;padding:7px 5px;position:absolute;top:15px;right:10px;border-radius:2px}.content-header>.breadcrumb>li>a{color:#444;text-decoration:none;display:inline-block}.content-header>.breadcrumb>li>a>.fa,.content-header>.breadcrumb>li>a>.glyphicon,.content-header>.breadcrumb>li>a>.ion{margin-right:5px}.content-header>.breadcrumb>li+li:before{content:'>\00a0'}@media (max-width:991px){.content-header>.breadcrumb{position:relative;margin-top:5px;top:0;right:0;float:none;background:#d2d6de;padding-left:10px}.content-header>.breadcrumb li:before{color:#97a0b3}}.navbar-toggle{color:#fff;border:0;margin:0;padding:15px 15px}@media (max-width:991px){.navbar-custom-menu .navbar-nav>li{float:left}.navbar-custom-menu .navbar-nav{margin:0;float:left}.navbar-custom-menu .navbar-nav>li>a{padding-top:15px;padding-bottom:15px;line-height:20px}}@media (max-width:767px){.main-header{position:relative}.main-header .logo,.main-header .navbar{width:100%;float:none;position:relative!important}.main-header .navbar{margin:0}.main-header .navbar-custom-menu{float:right}.main-sidebar,.left-side{padding-top:100px!important}}@media (max-width:991px){.navbar-collapse.pull-left{float:none!important}.navbar-collapse.pull-left+.navbar-custom-menu{display:block;position:absolute;top:0;right:40px}}.main-sidebar,.left-side{position:absolute;top:0;left:0;padding-top:50px;min-height:100%;width:230px;z-index:810;-webkit-transition:-webkit-transform .3s ease-in-out,width .3s ease-in-out;-moz-transition:-moz-transform .3s ease-in-out,width .3s ease-in-out;-o-transition:-o-transform .3s ease-in-out,width .3s ease-in-out;transition:transform .3s ease-in-out,width .3s ease-in-out}@media (max-width:767px){.main-sidebar,.left-side{-webkit-transform:translate(-230px, 0);-ms-transform:translate(-230px, 0);-o-transform:translate(-230px, 0);transform:translate(-230px, 0)}}@media (min-width:768px){.sidebar-collapse .main-sidebar,.sidebar-collapse .left-side{-webkit-transform:translate(-230px, 0);-ms-transform:translate(-230px, 0);-o-transform:translate(-230px, 0);transform:translate(-230px, 0)}}@media (max-width:767px){.sidebar-open .main-sidebar,.sidebar-open .left-side{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}}.sidebar{padding-bottom:10px}.sidebar-form input:focus{border-color:transparent!important}.user-panel{position:relative;width:100%;padding:10px;overflow:hidden}.user-panel:before,.user-panel:after{content:" ";display:table}.user-panel:after{clear:both}.user-panel>.image>img{width:100%;max-width:45px;height:auto}.user-panel>.info{padding:5px 5px 5px 15px;line-height:1;position:absolute;left:55px}.user-panel>.info>p{font-weight:600;margin-bottom:9px}.user-panel>.info>a{text-decoration:none;padding-right:5px;margin-top:3px;font-size:11px}.user-panel>.info>a>.fa,.user-panel>.info>a>.ion,.user-panel>.info>a>.glyphicon{margin-right:3px}.sidebar-menu{list-style:none;margin:0;padding:0}.sidebar-menu>li{position:relative;margin:0;padding:0}.sidebar-menu>li>a{padding:12px 5px 12px 15px;display:block}.sidebar-menu>li>a>.fa,.sidebar-menu>li>a>.glyphicon,.sidebar-menu>li>a>.ion{width:20px}.sidebar-menu>li .label,.sidebar-menu>li .badge{margin-top:3px;margin-right:5px}.sidebar-menu li.header{padding:10px 25px 10px 15px;font-size:12px}.sidebar-menu li>a>.fa-angle-left{width:auto;height:auto;padding:0;margin-right:10px;margin-top:3px}.sidebar-menu li.active>a>.fa-angle-left{-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg)}.sidebar-menu li.active>.treeview-menu{display:block}.sidebar-menu .treeview-menu{display:none;list-style:none;padding:0;margin:0;padding-left:5px}.sidebar-menu .treeview-menu .treeview-menu{padding-left:20px}.sidebar-menu .treeview-menu>li{margin:0}.sidebar-menu .treeview-menu>li>a{padding:5px 5px 5px 15px;display:block;font-size:14px}.sidebar-menu .treeview-menu>li>a>.fa,.sidebar-menu .treeview-menu>li>a>.glyphicon,.sidebar-menu .treeview-menu>li>a>.ion{width:20px}.sidebar-menu .treeview-menu>li>a>.fa-angle-left,.sidebar-menu .treeview-menu>li>a>.fa-angle-down{width:auto}@media (min-width:768px){.sidebar-mini.sidebar-collapse .content-wrapper,.sidebar-mini.sidebar-collapse .right-side,.sidebar-mini.sidebar-collapse .main-footer{margin-left:50px!important;z-index:840}.sidebar-mini.sidebar-collapse .main-sidebar{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0);width:50px!important;z-index:850}.sidebar-mini.sidebar-collapse .sidebar-menu>li{position:relative}.sidebar-mini.sidebar-collapse .sidebar-menu>li>a{margin-right:0}.sidebar-mini.sidebar-collapse .sidebar-menu>li>a>span{border-top-right-radius:4px}.sidebar-mini.sidebar-collapse .sidebar-menu>li:not(.treeview)>a>span{border-bottom-right-radius:4px}.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{padding-top:5px;padding-bottom:5px;border-bottom-right-radius:4px}.sidebar-mini.sidebar-collapse .sidebar-menu>li:hover>a>span:not(.pull-right),.sidebar-mini.sidebar-collapse .sidebar-menu>li:hover>.treeview-menu{display:block!important;position:absolute;width:180px;left:50px}.sidebar-mini.sidebar-collapse .sidebar-menu>li:hover>a>span{top:0;margin-left:-3px;padding:12px 5px 12px 20px;background-color:inherit}.sidebar-mini.sidebar-collapse .sidebar-menu>li:hover>.treeview-menu{top:44px;margin-left:0}.sidebar-mini.sidebar-collapse .main-sidebar .user-panel>.info,.sidebar-mini.sidebar-collapse .sidebar-form,.sidebar-mini.sidebar-collapse .sidebar-menu>li>a>span,.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu,.sidebar-mini.sidebar-collapse .sidebar-menu>li>a>.pull-right,.sidebar-mini.sidebar-collapse .sidebar-menu li.header{display:none!important}.sidebar-mini.sidebar-collapse .main-header .logo{width:50px}.sidebar-mini.sidebar-collapse .main-header .logo>.logo-mini{display:block;margin-left:-15px;margin-right:-15px;font-size:18px}.sidebar-mini.sidebar-collapse .main-header .logo>.logo-lg{display:none}.sidebar-mini.sidebar-collapse .main-header .navbar{margin-left:50px}}.sidebar-menu,.main-sidebar .user-panel,.sidebar-menu>li.header{white-space:nowrap!important;overflow:hidden}.sidebar-menu:hover{overflow:visible}.sidebar-form,.sidebar-menu>li.header{overflow:hidden;text-overflow:clip}.sidebar-menu li>a{position:relative}.sidebar-menu li>a>.pull-right{position:absolute;top:50%;right:10px;margin-top:-7px}.control-sidebar-bg{position:fixed;z-index:1000;bottom:0}.control-sidebar-bg,.control-sidebar{top:0;right:-230px;width:230px;-webkit-transition:right .3s ease-in-out;-o-transition:right .3s ease-in-out;transition:right .3s ease-in-out}.control-sidebar{position:absolute;padding-top:50px;z-index:1010}@media (max-width:768px){.control-sidebar{padding-top:100px}}.control-sidebar>.tab-content{padding:10px 15px}.control-sidebar.control-sidebar-open,.control-sidebar.control-sidebar-open+.control-sidebar-bg{right:0}.control-sidebar-open .control-sidebar-bg,.control-sidebar-open .control-sidebar{right:0}@media (min-width:768px){.control-sidebar-open .content-wrapper,.control-sidebar-open .right-side,.control-sidebar-open .main-footer{margin-right:230px}}.control-sidebar-tabs>li:first-of-type>a{margin-left:1px}.control-sidebar-tabs>li:first-of-type>a,.control-sidebar-tabs>li:first-of-type>a:hover{border-left-width:0!important}.control-sidebar-tabs>li>a{border-radius:0 !important}.control-sidebar-tabs>li>a,.control-sidebar-tabs>li>a:hover{border-top:none;border-right:none;border-left:1px solid transparent!important;border-bottom:1px solid transparent!important}.control-sidebar-tabs>li>a .icon{font-size:16px}.control-sidebar-tabs>li.active>a,.control-sidebar-tabs>li.active>a:hover,.control-sidebar-tabs>li.active>a:focus,.control-sidebar-tabs>li.active>a:active{border-top:none!important;border-right:none!important;border-bottom:none!important}@media (max-width:768px){.control-sidebar-tabs{display:table}.control-sidebar-tabs>li{display:table-cell !important}}.control-sidebar-heading{font-weight:400;font-size:16px;padding:10px 0;margin-bottom:10px}.control-sidebar-subheading{display:block;font-weight:400;font-size:14px}.control-sidebar-menu{list-style:none;padding:0;margin:0 -15px}.control-sidebar-menu>li>a{display:block;padding:10px 15px}.control-sidebar-menu>li>a:before,.control-sidebar-menu>li>a:after{content:" ";display:table}.control-sidebar-menu>li>a:after{clear:both}.control-sidebar-menu>li>a>.control-sidebar-subheading{margin-top:0}.control-sidebar-menu .menu-icon{float:left;width:35px;height:35px;border-radius:50%;text-align:center;line-height:35px}.control-sidebar-menu .menu-info{margin-left:45px;margin-top:3px}.control-sidebar-menu .menu-info>.control-sidebar-subheading{margin:0}.control-sidebar-menu .menu-info>p{margin:0;font-size:11px}.control-sidebar-menu .progress{margin:0}.control-sidebar-dark{color:#b8c7ce}.control-sidebar-dark,.control-sidebar-dark+.control-sidebar-bg{background:#222d32}.control-sidebar-dark .control-sidebar-tabs{border-bottom:#1c2529}.control-sidebar-dark .control-sidebar-tabs>li>a{background:#181f23;color:#b8c7ce}.control-sidebar-dark .control-sidebar-tabs>li>a,.control-sidebar-dark .control-sidebar-tabs>li>a:hover{border-left-color:#141a1d !important;border-bottom-color:#141a1d !important}.control-sidebar-dark .control-sidebar-tabs>li>a:hover,.control-sidebar-dark .control-sidebar-tabs>li>a:focus,.control-sidebar-dark .control-sidebar-tabs>li>a:active{background:#1c2529}.control-sidebar-dark .control-sidebar-tabs>li.active>a,.control-sidebar-dark .control-sidebar-tabs>li.active>a:hover,.control-sidebar-dark .control-sidebar-tabs>li.active>a:focus,.control-sidebar-dark .control-sidebar-tabs>li.active>a:active{background:#222d32;color:#fff}.control-sidebar-dark .control-sidebar-heading,.control-sidebar-dark .control-sidebar-subheading{color:#fff}.control-sidebar-dark .control-sidebar-menu>li>a:hover{background:#1e282c}.control-sidebar-dark .control-sidebar-menu>li>a .menu-info>p{color:#b8c7ce}.control-sidebar-light{color:#5e5e5e}.control-sidebar-light,.control-sidebar-light+.control-sidebar-bg{background:#f9fafc;border-left:1px solid #d2d6de}.control-sidebar-light .control-sidebar-tabs{border-bottom:#d2d6de}.control-sidebar-light .control-sidebar-tabs>li>a{background:#e8ecf4;color:#444}.control-sidebar-light .control-sidebar-tabs>li>a,.control-sidebar-light .control-sidebar-tabs>li>a:hover{border-left-color:#d2d6de !important;border-bottom-color:#d2d6de !important}.control-sidebar-light .control-sidebar-tabs>li>a:hover,.control-sidebar-light .control-sidebar-tabs>li>a:focus,.control-sidebar-light .control-sidebar-tabs>li>a:active{background:#eff1f7}.control-sidebar-light .control-sidebar-tabs>li.active>a,.control-sidebar-light .control-sidebar-tabs>li.active>a:hover,.control-sidebar-light .control-sidebar-tabs>li.active>a:focus,.control-sidebar-light .control-sidebar-tabs>li.active>a:active{background:#f9fafc;color:#111}.control-sidebar-light .control-sidebar-heading,.control-sidebar-light .control-sidebar-subheading{color:#111}.control-sidebar-light .control-sidebar-menu{margin-left:-14px}.control-sidebar-light .control-sidebar-menu>li>a:hover{background:#f4f4f5}.control-sidebar-light .control-sidebar-menu>li>a .menu-info>p{color:#5e5e5e}.dropdown-menu{box-shadow:none;border-color:#eee}.dropdown-menu>li>a{color:#777}.dropdown-menu>li>a>.glyphicon,.dropdown-menu>li>a>.fa,.dropdown-menu>li>a>.ion{margin-right:10px}.dropdown-menu>li>a:hover{background-color:#e1e3e9;color:#333}.dropdown-menu>.divider{background-color:#eee}.navbar-nav .dropdown-menu{-webkit-box-shadow:none !important;box-shadow:none !important}.navbar-nav>.notifications-menu,.navbar-nav>.messages-menu,.navbar-nav>.tasks-menu{position:relative}.navbar-nav>.notifications-menu>.dropdown-menu,.navbar-nav>.messages-menu>.dropdown-menu,.navbar-nav>.tasks-menu>.dropdown-menu{width:280px;padding:0 0 0 0!important;margin:0!important;top:100%}.navbar-nav>.notifications-menu>.dropdown-menu>li,.navbar-nav>.messages-menu>.dropdown-menu>li,.navbar-nav>.tasks-menu>.dropdown-menu>li{position:relative}.navbar-nav>.notifications-menu>.dropdown-menu>li.header,.navbar-nav>.messages-menu>.dropdown-menu>li.header,.navbar-nav>.tasks-menu>.dropdown-menu>li.header{border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0;background-color:#ffffff;padding:7px 10px;border-bottom:1px solid #f4f4f4;color:#444444;font-size:14px}.navbar-nav>.notifications-menu>.dropdown-menu>li.footer>a,.navbar-nav>.messages-menu>.dropdown-menu>li.footer>a,.navbar-nav>.tasks-menu>.dropdown-menu>li.footer>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px;font-size:12px;background-color:#fff;padding:7px 10px;border-bottom:1px solid #eeeeee;color:#444!important;text-align:center}@media (max-width:991px){.navbar-nav>.notifications-menu>.dropdown-menu>li.footer>a,.navbar-nav>.messages-menu>.dropdown-menu>li.footer>a,.navbar-nav>.tasks-menu>.dropdown-menu>li.footer>a{background:#fff!important;color:#444!important}}.navbar-nav>.notifications-menu>.dropdown-menu>li.footer>a:hover,.navbar-nav>.messages-menu>.dropdown-menu>li.footer>a:hover,.navbar-nav>.tasks-menu>.dropdown-menu>li.footer>a:hover{text-decoration:none;font-weight:normal}.navbar-nav>.notifications-menu>.dropdown-menu>li .menu,.navbar-nav>.messages-menu>.dropdown-menu>li .menu,.navbar-nav>.tasks-menu>.dropdown-menu>li .menu{max-height:200px;margin:0;padding:0;list-style:none;overflow-x:hidden}.navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a,.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a,.navbar-nav>.tasks-menu>.dropdown-menu>li .menu>li>a{display:block;white-space:nowrap;border-bottom:1px solid #f4f4f4}.navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a:hover,.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a:hover,.navbar-nav>.tasks-menu>.dropdown-menu>li .menu>li>a:hover{background:#f4f4f4;text-decoration:none}.navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a{color:#444444;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:10px}.navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a>.glyphicon,.navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a>.fa,.navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a>.ion{width:20px}.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a{margin:0px;padding:10px 10px}.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a>div>img{margin:auto 10px auto auto;width:40px;height:40px}.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a>h4{padding:0;margin:0 0 0 45px;color:#444444;font-size:15px;position:relative}.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a>h4>small{color:#999999;font-size:10px;position:absolute;top:0px;right:0px}.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a>p{margin:0 0 0 45px;font-size:12px;color:#888888}.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a:before,.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a:after{content:" ";display:table}.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a:after{clear:both}.navbar-nav>.tasks-menu>.dropdown-menu>li .menu>li>a{padding:10px}.navbar-nav>.tasks-menu>.dropdown-menu>li .menu>li>a>h3{font-size:14px;padding:0;margin:0 0 10px 0;color:#666666}.navbar-nav>.tasks-menu>.dropdown-menu>li .menu>li>a>.progress{padding:0;margin:0}.navbar-nav>.user-menu>.dropdown-menu{border-top-right-radius:0;border-top-left-radius:0;padding:1px 0 0 0;border-top-width:0;width:280px}.navbar-nav>.user-menu>.dropdown-menu,.navbar-nav>.user-menu>.dropdown-menu>.user-body{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.navbar-nav>.user-menu>.dropdown-menu>li.user-header{height:175px;padding:10px;text-align:center}.navbar-nav>.user-menu>.dropdown-menu>li.user-header>img{z-index:5;height:90px;width:90px;border:3px solid;border-color:transparent;border-color:rgba(255,255,255,0.2)}.navbar-nav>.user-menu>.dropdown-menu>li.user-header>p{z-index:5;color:#fff;color:rgba(255,255,255,0.8);font-size:17px;margin-top:10px}.navbar-nav>.user-menu>.dropdown-menu>li.user-header>p>small{display:block;font-size:12px}.navbar-nav>.user-menu>.dropdown-menu>.user-body{padding:15px;border-bottom:1px solid #f4f4f4;border-top:1px solid #dddddd}.navbar-nav>.user-menu>.dropdown-menu>.user-body:before,.navbar-nav>.user-menu>.dropdown-menu>.user-body:after{content:" ";display:table}.navbar-nav>.user-menu>.dropdown-menu>.user-body:after{clear:both}.navbar-nav>.user-menu>.dropdown-menu>.user-body a{color:#444 !important}@media (max-width:991px){.navbar-nav>.user-menu>.dropdown-menu>.user-body a{background:#fff !important;color:#444 !important}}.navbar-nav>.user-menu>.dropdown-menu>.user-footer{background-color:#f9f9f9;padding:10px}.navbar-nav>.user-menu>.dropdown-menu>.user-footer:before,.navbar-nav>.user-menu>.dropdown-menu>.user-footer:after{content:" ";display:table}.navbar-nav>.user-menu>.dropdown-menu>.user-footer:after{clear:both}.navbar-nav>.user-menu>.dropdown-menu>.user-footer .btn-default{color:#666666}.navbar-nav>.user-menu .user-image{float:left;width:25px;height:25px;border-radius:50%;margin-right:10px;margin-top:-2px}@media (max-width:767px){.navbar-nav>.user-menu .user-image{float:none;margin-right:0;margin-top:-8px;line-height:10px}}.open:not(.dropup)>.animated-dropdown-menu{backface-visibility:visible !important;-webkit-animation:flipInX .7s both;-o-animation:flipInX .7s both;animation:flipInX .7s both}@keyframes flipInX{0%{transform:perspective(400px) rotate3d(1, 0, 0, 90deg);transition-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotate3d(1, 0, 0, -20deg);transition-timing-function:ease-in}60%{transform:perspective(400px) rotate3d(1, 0, 0, 10deg);opacity:1}80%{transform:perspective(400px) rotate3d(1, 0, 0, -5deg)}100%{transform:perspective(400px)}}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1, 0, 0, 90deg);-webkit-transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1, 0, 0, -20deg);-webkit-transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1, 0, 0, 10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1, 0, 0, -5deg)}100%{-webkit-transform:perspective(400px)}}.navbar-custom-menu>.navbar-nav>li{position:relative}.navbar-custom-menu>.navbar-nav>li>.dropdown-menu{position:absolute;right:0;left:auto}@media (max-width:991px){.navbar-custom-menu>.navbar-nav{float:right}.navbar-custom-menu>.navbar-nav>li{position:static}.navbar-custom-menu>.navbar-nav>li>.dropdown-menu{position:absolute;right:5%;left:auto;border:1px solid #ddd;background:#fff}}.form-control{border-radius:0 !important;box-shadow:none;border-color:#d2d6de}.form-control:focus{border-color:#3c8dbc !important;box-shadow:none}.form-control::-moz-placeholder{color:#bbb;opacity:1}.form-control:-ms-input-placeholder{color:#bbb}.form-control::-webkit-input-placeholder{color:#bbb}.form-control:not(select){-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-group.has-success label{color:#00a65a}.form-group.has-success .form-control{border-color:#00a65a !important;box-shadow:none}.form-group.has-warning label{color:#f39c12}.form-group.has-warning .form-control{border-color:#f39c12 !important;box-shadow:none}.form-group.has-error label{color:#dd4b39}.form-group.has-error .form-control{border-color:#dd4b39 !important;box-shadow:none}.input-group .input-group-addon{border-radius:0;border-color:#d2d6de;background-color:#fff}.btn-group-vertical .btn.btn-flat:first-of-type,.btn-group-vertical .btn.btn-flat:last-of-type{border-radius:0}.icheck>label{padding-left:0}.progress,.progress>.progress-bar{-webkit-box-shadow:none;box-shadow:none}.progress,.progress>.progress-bar,.progress .progress-bar,.progress>.progress-bar .progress-bar{border-radius:1px}.progress.sm,.progress-sm{height:10px}.progress.sm,.progress-sm,.progress.sm .progress-bar,.progress-sm .progress-bar{border-radius:1px}.progress.xs,.progress-xs{height:7px}.progress.xs,.progress-xs,.progress.xs .progress-bar,.progress-xs .progress-bar{border-radius:1px}.progress.xxs,.progress-xxs{height:3px}.progress.xxs,.progress-xxs,.progress.xxs .progress-bar,.progress-xxs .progress-bar{border-radius:1px}.progress.vertical{position:relative;width:30px;height:200px;display:inline-block;margin-right:10px}.progress.vertical>.progress-bar{width:100%!important;position:absolute;bottom:0}.progress.vertical.sm,.progress.vertical.progress-sm{width:20px}.progress.vertical.xs,.progress.vertical.progress-xs{width:10px}.progress.vertical.xxs,.progress.vertical.progress-xxs{width:3px}.progress-group .progress-text{font-weight:600}.progress-group .progress-number{float:right}.table tr>td .progress{margin:0}.progress-bar-light-blue,.progress-bar-primary{background-color:#3c8dbc}.progress-striped .progress-bar-light-blue,.progress-striped .progress-bar-primary{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-green,.progress-bar-success{background-color:#00a65a}.progress-striped .progress-bar-green,.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-aqua,.progress-bar-info{background-color:#00c0ef}.progress-striped .progress-bar-aqua,.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-yellow,.progress-bar-warning{background-color:#f39c12}.progress-striped .progress-bar-yellow,.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-red,.progress-bar-danger{background-color:#dd4b39}.progress-striped .progress-bar-red,.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.small-box{border-radius:2px;position:relative;display:block;margin-bottom:20px;box-shadow:0 1px 1px rgba(0,0,0,0.1)}.small-box>.inner{padding:10px}.small-box>.small-box-footer{position:relative;text-align:center;padding:3px 0;color:#fff;color:rgba(255,255,255,0.8);display:block;z-index:10;background:rgba(0,0,0,0.1);text-decoration:none}.small-box>.small-box-footer:hover{color:#fff;background:rgba(0,0,0,0.15)}.small-box h3{font-size:38px;font-weight:bold;margin:0 0 10px 0;white-space:nowrap;padding:0}.small-box p{font-size:15px}.small-box p>small{display:block;color:#f9f9f9;font-size:13px;margin-top:5px}.small-box h3,.small-box p{z-index:5px}.small-box .icon{-webkit-transition:all .3s linear;-o-transition:all .3s linear;transition:all .3s linear;position:absolute;top:-10px;right:10px;z-index:0;font-size:90px;color:rgba(0,0,0,0.15)}.small-box:hover{text-decoration:none;color:#f9f9f9}.small-box:hover .icon{font-size:95px}@media (max-width:767px){.small-box{text-align:center}.small-box .icon{display:none}.small-box p{font-size:12px}}.box{position:relative;border-radius:3px;background:#ffffff;border-top:3px solid #d2d6de;margin-bottom:20px;width:100%;box-shadow:0 1px 1px rgba(0,0,0,0.1)}.box.box-primary{border-top-color:#3c8dbc}.box.box-info{border-top-color:#00c0ef}.box.box-danger{border-top-color:#dd4b39}.box.box-warning{border-top-color:#f39c12}.box.box-success{border-top-color:#00a65a}.box.box-default{border-top-color:#d2d6de}.box.collapsed-box .box-body,.box.collapsed-box .box-footer{display:none}.box .nav-stacked>li{border-bottom:1px solid #f4f4f4;margin:0}.box .nav-stacked>li:last-of-type{border-bottom:none}.box.height-control .box-body{max-height:300px;overflow:auto}.box .border-right{border-right:1px solid #f4f4f4}.box .border-left{border-left:1px solid #f4f4f4}.box.box-solid{border-top:0px}.box.box-solid>.box-header .btn.btn-default{background:transparent}.box.box-solid>.box-header .btn:hover,.box.box-solid>.box-header a:hover{background:rgba(0,0,0,0.1) !important}.box.box-solid.box-default{border:1px solid #d2d6de}.box.box-solid.box-default>.box-header{color:#444;background:#d2d6de;background-color:#d2d6de}.box.box-solid.box-default>.box-header a,.box.box-solid.box-default>.box-header .btn{color:#444}.box.box-solid.box-primary{border:1px solid #3c8dbc}.box.box-solid.box-primary>.box-header{color:#fff;background:#3c8dbc;background-color:#3c8dbc}.box.box-solid.box-primary>.box-header a,.box.box-solid.box-primary>.box-header .btn{color:#fff}.box.box-solid.box-info{border:1px solid #00c0ef}.box.box-solid.box-info>.box-header{color:#fff;background:#00c0ef;background-color:#00c0ef}.box.box-solid.box-info>.box-header a,.box.box-solid.box-info>.box-header .btn{color:#fff}.box.box-solid.box-danger{border:1px solid #dd4b39}.box.box-solid.box-danger>.box-header{color:#fff;background:#dd4b39;background-color:#dd4b39}.box.box-solid.box-danger>.box-header a,.box.box-solid.box-danger>.box-header .btn{color:#fff}.box.box-solid.box-warning{border:1px solid #f39c12}.box.box-solid.box-warning>.box-header{color:#fff;background:#f39c12;background-color:#f39c12}.box.box-solid.box-warning>.box-header a,.box.box-solid.box-warning>.box-header .btn{color:#fff}.box.box-solid.box-success{border:1px solid #00a65a}.box.box-solid.box-success>.box-header{color:#fff;background:#00a65a;background-color:#00a65a}.box.box-solid.box-success>.box-header a,.box.box-solid.box-success>.box-header .btn{color:#fff}.box.box-solid>.box-header>.box-tools .btn{border:0;box-shadow:none}.box.box-solid[class*='bg']>.box-header{color:#fff}.box .box-group>.box{margin-bottom:5px}.box .knob-label{text-align:center;color:#333;font-weight:100;font-size:12px;margin-bottom:0.3em}.box>.overlay,.overlay-wrapper>.overlay,.box>.loading-img,.overlay-wrapper>.loading-img{position:absolute;top:0;left:0;width:100%;height:100%}.box .overlay,.overlay-wrapper .overlay{z-index:50;background:rgba(255,255,255,0.7);border-radius:3px}.box .overlay>.fa,.overlay-wrapper .overlay>.fa{position:absolute;top:50%;left:50%;margin-left:-15px;margin-top:-15px;color:#000;font-size:30px}.box .overlay.dark,.overlay-wrapper .overlay.dark{background:rgba(0,0,0,0.5)}.box-header:before,.box-body:before,.box-footer:before,.box-header:after,.box-body:after,.box-footer:after{content:" ";display:table}.box-header:after,.box-body:after,.box-footer:after{clear:both}.box-header{color:#444;display:block;padding:10px;position:relative}.box-header.with-border{border-bottom:1px solid #f4f4f4}.collapsed-box .box-header.with-border{border-bottom:none}.box-header>.fa,.box-header>.glyphicon,.box-header>.ion,.box-header .box-title{display:inline-block;font-size:18px;margin:0;line-height:1}.box-header>.fa,.box-header>.glyphicon,.box-header>.ion{margin-right:5px}.box-header>.box-tools{position:absolute;right:10px;top:5px}.box-header>.box-tools [data-toggle="tooltip"]{position:relative}.box-header>.box-tools.pull-right .dropdown-menu{right:0;left:auto}.btn-box-tool{padding:5px;font-size:12px;background:transparent;box-shadow:none!important;color:#97a0b3}.open .btn-box-tool,.btn-box-tool:hover{color:#606c84}.btn-box-tool:active{outline:none!important}.box-body{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;padding:10px}.no-header .box-body{border-top-right-radius:3px;border-top-left-radius:3px}.box-body>.table{margin-bottom:0}.box-body .fc{margin-top:5px}.box-body .full-width-chart{margin:-19px}.box-body.no-padding .full-width-chart{margin:-9px}.box-body .box-pane{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:3px}.box-body .box-pane-right{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:0}.box-footer{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-top:1px solid #f4f4f4;padding:10px;background-color:#fff}.chart-legend{margin:10px 0}@media (max-width:991px){.chart-legend>li{float:left;margin-right:10px}}.todo-list{margin:0;padding:0px 0px;list-style:none;overflow:auto}.todo-list>li{border-radius:2px;padding:10px;background:#f4f4f4;margin-bottom:2px;border-left:2px solid #e6e7e8;color:#444}.todo-list>li:last-of-type{margin-bottom:0}.todo-list>li.danger{border-left-color:#dd4b39}.todo-list>li.warning{border-left-color:#f39c12}.todo-list>li.info{border-left-color:#00c0ef}.todo-list>li.success{border-left-color:#00a65a}.todo-list>li.primary{border-left-color:#3c8dbc}.todo-list>li>input[type='checkbox']{margin:0 10px 0 5px}.todo-list>li .text{display:inline-block;margin-left:5px;font-weight:600}.todo-list>li .label{margin-left:10px;font-size:9px}.todo-list>li .tools{display:none;float:right;color:#dd4b39}.todo-list>li .tools>.fa,.todo-list>li .tools>.glyphicon,.todo-list>li .tools>.ion{margin-right:5px;cursor:pointer}.todo-list>li:hover .tools{display:inline-block}.todo-list>li.done{color:#999}.todo-list>li.done .text{text-decoration:line-through;font-weight:500}.todo-list>li.done .label{background:#d2d6de !important}.todo-list .handle{display:inline-block;cursor:move;margin:0 5px}.chat{padding:5px 20px 5px 10px}.chat .item{margin-bottom:10px}.chat .item:before,.chat .item:after{content:" ";display:table}.chat .item:after{clear:both}.chat .item>img{width:40px;height:40px;border:2px solid transparent;border-radius:50% !important}.chat .item>img.online{border:2px solid #00a65a}.chat .item>img.offline{border:2px solid #dd4b39}.chat .item>.message{margin-left:55px;margin-top:-40px}.chat .item>.message>.name{display:block;font-weight:600}.chat .item>.attachment{border-radius:3px;background:#f4f4f4;margin-left:65px;margin-right:15px;padding:10px}.chat .item>.attachment>h4{margin:0 0 5px 0;font-weight:600;font-size:14px}.chat .item>.attachment>p,.chat .item>.attachment>.filename{font-weight:600;font-size:13px;font-style:italic;margin:0}.chat .item>.attachment:before,.chat .item>.attachment:after{content:" ";display:table}.chat .item>.attachment:after{clear:both}.box-input{max-width:200px}.info-box{display:block;min-height:90px;background:#fff;width:100%;box-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:2px;margin-bottom:15px}.info-box small{font-size:14px}.info-box .progress{background:rgba(0,0,0,0.2);margin:5px -10px 5px -10px;height:2px}.info-box .progress,.info-box .progress .progress-bar{border-radius:0}.info-box .progress .progress-bar{background:#fff}.info-box-icon{border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px;display:block;float:left;height:90px;width:90px;text-align:center;font-size:45px;line-height:90px;background:rgba(0,0,0,0.2)}.info-box-content{padding:5px 10px;margin-left:90px}.info-box-number{display:block;font-weight:bold;font-size:18px}.progress-description,.info-box-text{display:block;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.info-box-text{text-transform:uppercase}.info-box-more{display:block}.progress-description{margin:0}.timeline{position:relative;margin:0 0 30px 0;padding:0;list-style:none}.timeline:before{content:'';position:absolute;top:0px;bottom:0;width:4px;background:#ddd;left:31px;margin:0;border-radius:2px}.timeline>li{position:relative;margin-right:10px;margin-bottom:15px}.timeline>li:before,.timeline>li:after{content:" ";display:table}.timeline>li:after{clear:both}.timeline>li>.timeline-item{-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:3px;margin-top:0px;background:#fff;color:#444;margin-left:60px;margin-right:15px;padding:0;position:relative}.timeline>li>.timeline-item>.time{color:#999;float:right;padding:10px;font-size:12px}.timeline>li>.timeline-item>.timeline-header{margin:0;color:#555;border-bottom:1px solid #f4f4f4;padding:10px;font-size:16px;line-height:1.1}.timeline>li>.timeline-item>.timeline-header>a{font-weight:600}.timeline>li>.timeline-item>.timeline-body,.timeline>li>.timeline-item>.timeline-footer{padding:10px}.timeline>li.time-label>span{font-weight:600;padding:5px;display:inline-block;background-color:#fff;border-radius:4px}.timeline>li>.fa,.timeline>li>.glyphicon,.timeline>li>.ion{width:30px;height:30px;font-size:15px;line-height:30px;position:absolute;color:#666;background:#d2d6de;border-radius:50%;text-align:center;left:18px;top:0}.btn{border-radius:3px;-webkit-box-shadow:none;box-shadow:none;border:1px solid transparent}.btn.uppercase{text-transform:uppercase}.btn.btn-flat{border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;border-width:1px}.btn:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn:focus{outline:none}.btn.btn-file{position:relative;overflow:hidden}.btn.btn-file>input[type='file']{position:absolute;top:0;right:0;min-width:100%;min-height:100%;font-size:100px;text-align:right;opacity:0;filter:alpha(opacity=0);outline:none;background:white;cursor:inherit;display:block}.btn-default{background-color:#f4f4f4;color:#444;border-color:#ddd}.btn-default:hover,.btn-default:active,.btn-default.hover{background-color:#e7e7e7 !important}.btn-primary{background-color:#3c8dbc;border-color:#367fa9}.btn-primary:hover,.btn-primary:active,.btn-primary.hover{background-color:#367fa9}.btn-success{background-color:#00a65a;border-color:#008d4c}.btn-success:hover,.btn-success:active,.btn-success.hover{background-color:#008d4c}.btn-info{background-color:#00c0ef;border-color:#00acd6}.btn-info:hover,.btn-info:active,.btn-info.hover{background-color:#00acd6}.btn-danger{background-color:#dd4b39;border-color:#d73925}.btn-danger:hover,.btn-danger:active,.btn-danger.hover{background-color:#d73925}.btn-warning{background-color:#f39c12;border-color:#e08e0b}.btn-warning:hover,.btn-warning:active,.btn-warning.hover{background-color:#e08e0b}.btn-outline{border:1px solid #fff;background:transparent;color:#fff}.btn-outline:hover,.btn-outline:focus,.btn-outline:active{color:rgba(255,255,255,0.7);border-color:rgba(255,255,255,0.7)}.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn[class*='bg-']:hover{-webkit-box-shadow:inset 0 0 100px rgba(0,0,0,0.2);box-shadow:inset 0 0 100px rgba(0,0,0,0.2)}.btn-app{border-radius:3px;position:relative;padding:15px 5px;margin:0 0 10px 10px;min-width:80px;height:60px;text-align:center;color:#666;border:1px solid #ddd;background-color:#f4f4f4;font-size:12px}.btn-app>.fa,.btn-app>.glyphicon,.btn-app>.ion{font-size:20px;display:block}.btn-app:hover{background:#f4f4f4;color:#444;border-color:#aaa}.btn-app:active,.btn-app:focus{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-app>.badge{position:absolute;top:-3px;right:-10px;font-size:10px;font-weight:400}.callout{border-radius:3px;margin:0 0 20px 0;padding:15px 30px 15px 15px;border-left:5px solid #eee}.callout a{color:#fff;text-decoration:underline}.callout a:hover{color:#eee}.callout h4{margin-top:0;font-weight:600}.callout p:last-child{margin-bottom:0}.callout code,.callout .highlight{background-color:#fff}.callout.callout-danger{border-color:#c23321}.callout.callout-warning{border-color:#c87f0a}.callout.callout-info{border-color:#0097bc}.callout.callout-success{border-color:#00733e}.alert{border-radius:3px}.alert h4{font-weight:600}.alert .icon{margin-right:10px}.alert .close{color:#000;opacity:.2;filter:alpha(opacity=20)}.alert .close:hover{opacity:.5;filter:alpha(opacity=50)}.alert a{color:#fff;text-decoration:underline}.alert-success{border-color:#008d4c}.alert-danger,.alert-error{border-color:#d73925}.alert-warning{border-color:#e08e0b}.alert-info{border-color:#00acd6}.nav>li>a:hover,.nav>li>a:active,.nav>li>a:focus{color:#444;background:#f7f7f7}.nav-pills>li>a{border-radius:0;border-top:3px solid transparent;color:#444}.nav-pills>li>a>.fa,.nav-pills>li>a>.glyphicon,.nav-pills>li>a>.ion{margin-right:5px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{border-top-color:#3c8dbc}.nav-pills>li.active>a{font-weight:600}.nav-stacked>li>a{border-radius:0;border-top:0;border-left:3px solid transparent;color:#444}.nav-stacked>li.active>a,.nav-stacked>li.active>a:hover{border-top:0;border-left-color:#3c8dbc}.nav-stacked>li.header{border-bottom:1px solid #ddd;color:#777;margin-bottom:10px;padding:5px 10px;text-transform:uppercase}.nav-tabs-custom{margin-bottom:20px;background:#fff;box-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:3px}.nav-tabs-custom>.nav-tabs{margin:0;border-bottom-color:#f4f4f4;border-top-right-radius:3px;border-top-left-radius:3px}.nav-tabs-custom>.nav-tabs>li{border-top:3px solid transparent;margin-bottom:-2px;margin-right:5px}.nav-tabs-custom>.nav-tabs>li>a{color:#444;border-radius:0 !important}.nav-tabs-custom>.nav-tabs>li>a,.nav-tabs-custom>.nav-tabs>li>a:hover{background:transparent;margin:0}.nav-tabs-custom>.nav-tabs>li>a:hover{color:#999}.nav-tabs-custom>.nav-tabs>li:not(.active)>a:hover,.nav-tabs-custom>.nav-tabs>li:not(.active)>a:focus,.nav-tabs-custom>.nav-tabs>li:not(.active)>a:active{border-color:transparent}.nav-tabs-custom>.nav-tabs>li.active{border-top-color:#3c8dbc}.nav-tabs-custom>.nav-tabs>li.active>a,.nav-tabs-custom>.nav-tabs>li.active:hover>a{background-color:#fff;color:#444}.nav-tabs-custom>.nav-tabs>li.active>a{border-top-color:transparent;border-left-color:#f4f4f4;border-right-color:#f4f4f4}.nav-tabs-custom>.nav-tabs>li:first-of-type{margin-left:0}.nav-tabs-custom>.nav-tabs>li:first-of-type.active>a{border-left-color:transparent}.nav-tabs-custom>.nav-tabs.pull-right{float:none!important}.nav-tabs-custom>.nav-tabs.pull-right>li{float:right}.nav-tabs-custom>.nav-tabs.pull-right>li:first-of-type{margin-right:0}.nav-tabs-custom>.nav-tabs.pull-right>li:first-of-type>a{border-left-width:1px}.nav-tabs-custom>.nav-tabs.pull-right>li:first-of-type.active>a{border-left-color:#f4f4f4;border-right-color:transparent}.nav-tabs-custom>.nav-tabs>li.header{line-height:35px;padding:0 10px;font-size:20px;color:#444}.nav-tabs-custom>.nav-tabs>li.header>.fa,.nav-tabs-custom>.nav-tabs>li.header>.glyphicon,.nav-tabs-custom>.nav-tabs>li.header>.ion{margin-right:5px}.nav-tabs-custom>.tab-content{background:#fff;padding:10px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.nav-tabs-custom .dropdown.open>a:active,.nav-tabs-custom .dropdown.open>a:focus{background:transparent;color:#999}.pagination>li>a{background:#fafafa;color:#666;border-radius:0 !important}.products-list{list-style:none;margin:0;padding:0}.products-list>.item{border-radius:3px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1);padding:10px 0;background:#fff}.products-list>.item:before,.products-list>.item:after{content:" ";display:table}.products-list>.item:after{clear:both}.products-list .product-img{float:left}.products-list .product-img img{width:50px;height:50px}.products-list .product-info{margin-left:60px}.products-list .product-title{font-weight:600}.products-list .product-description{display:block;color:#999;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.product-list-in-box>.item{-webkit-box-shadow:none;box-shadow:none;border-radius:0;border-bottom:1px solid #f4f4f4}.product-list-in-box>.item:last-of-type{border-bottom-width:0}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{border-top:1px solid #f4f4f4}.table>thead>tr>th{border-bottom:2px solid #f4f4f4}.table tr td .progress{margin-top:5px}.table-bordered{border:1px solid #f4f4f4}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #f4f4f4}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table.no-border,.table.no-border td,.table.no-border th{border:0}table.text-center,table.text-center td,table.text-center th{text-align:center}.table.align th{text-align:left}.table.align td{text-align:right}.label-default{background-color:#d2d6de;color:#444}.direct-chat .box-body{border-bottom-right-radius:0;border-bottom-left-radius:0;position:relative;overflow-x:hidden;padding:0}.direct-chat.chat-pane-open .direct-chat-contacts{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.direct-chat-messages{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0);padding:10px;height:250px;overflow:auto}.direct-chat-msg,.direct-chat-text{display:block}.direct-chat-msg{margin-bottom:10px}.direct-chat-msg:before,.direct-chat-msg:after{content:" ";display:table}.direct-chat-msg:after{clear:both}.direct-chat-messages,.direct-chat-contacts{-webkit-transition:-webkit-transform .5s ease-in-out;-moz-transition:-moz-transform .5s ease-in-out;-o-transition:-o-transform .5s ease-in-out;transition:transform .5s ease-in-out}.direct-chat-text{border-radius:5px;position:relative;padding:5px 10px;background:#d2d6de;border:1px solid #d2d6de;margin:5px 0 0 50px;color:#444}.direct-chat-text:after,.direct-chat-text:before{position:absolute;right:100%;top:15px;border:solid transparent;border-right-color:#d2d6de;content:' ';height:0;width:0;pointer-events:none}.direct-chat-text:after{border-width:5px;margin-top:-5px}.direct-chat-text:before{border-width:6px;margin-top:-6px}.right .direct-chat-text{margin-right:50px;margin-left:0}.right .direct-chat-text:after,.right .direct-chat-text:before{right:auto;left:100%;border-right-color:transparent;border-left-color:#d2d6de}.direct-chat-img{border-radius:50%;float:left;width:40px;height:40px}.right .direct-chat-img{float:right}.direct-chat-info{display:block;margin-bottom:2px;font-size:12px}.direct-chat-name{font-weight:600}.direct-chat-timestamp{color:#999}.direct-chat-contacts-open .direct-chat-contacts{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.direct-chat-contacts{-webkit-transform:translate(101%, 0);-ms-transform:translate(101%, 0);-o-transform:translate(101%, 0);transform:translate(101%, 0);position:absolute;top:0;bottom:0;height:250px;width:100%;background:#222d32;color:#fff;overflow:auto}.contacts-list>li{border-bottom:1px solid rgba(0,0,0,0.2);padding:10px;margin:0}.contacts-list>li:before,.contacts-list>li:after{content:" ";display:table}.contacts-list>li:after{clear:both}.contacts-list>li:last-of-type{border-bottom:none}.contacts-list-img{border-radius:50%;width:40px;float:left}.contacts-list-info{margin-left:45px;color:#fff}.contacts-list-name,.contacts-list-status{display:block}.contacts-list-name{font-weight:600}.contacts-list-status{font-size:12px}.contacts-list-date{color:#aaa;font-weight:normal}.contacts-list-msg{color:#999}.direct-chat-danger .right>.direct-chat-text{background:#dd4b39;border-color:#dd4b39;color:#fff}.direct-chat-danger .right>.direct-chat-text:after,.direct-chat-danger .right>.direct-chat-text:before{border-left-color:#dd4b39}.direct-chat-primary .right>.direct-chat-text{background:#3c8dbc;border-color:#3c8dbc;color:#fff}.direct-chat-primary .right>.direct-chat-text:after,.direct-chat-primary .right>.direct-chat-text:before{border-left-color:#3c8dbc}.direct-chat-warning .right>.direct-chat-text{background:#f39c12;border-color:#f39c12;color:#fff}.direct-chat-warning .right>.direct-chat-text:after,.direct-chat-warning .right>.direct-chat-text:before{border-left-color:#f39c12}.direct-chat-info .right>.direct-chat-text{background:#00c0ef;border-color:#00c0ef;color:#fff}.direct-chat-info .right>.direct-chat-text:after,.direct-chat-info .right>.direct-chat-text:before{border-left-color:#00c0ef}.direct-chat-success .right>.direct-chat-text{background:#00a65a;border-color:#00a65a;color:#fff}.direct-chat-success .right>.direct-chat-text:after,.direct-chat-success .right>.direct-chat-text:before{border-left-color:#00a65a}.users-list>li{width:25%;float:left;padding:10px;text-align:center}.users-list>li img{border-radius:50%;max-width:100%;height:auto}.users-list>li>a:hover,.users-list>li>a:hover .users-list-name{color:#999}.users-list-name,.users-list-date{display:block}.users-list-name{font-weight:600;color:#444;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.users-list-date{color:#999;font-size:12px}.carousel-control{background-image:none!important}.carousel-control>.fa{font-size:40px;position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-20px}.modal{background:rgba(0,0,0,0.3)}.modal-content{border-radius:0;-webkit-box-shadow:0 2px 3px rgba(0,0,0,0.125) !important;box-shadow:0 2px 3px rgba(0,0,0,0.125) !important;border:0}@media (min-width:768px){.modal-content{-webkit-box-shadow:0 2px 3px rgba(0,0,0,0.125) !important;box-shadow:0 2px 3px rgba(0,0,0,0.125) !important}}.modal-header{border-bottom-color:#f4f4f4}.modal-footer{border-top-color:#f4f4f4}.modal-primary .modal-header,.modal-primary .modal-footer{border-color:#307095}.modal-warning .modal-header,.modal-warning .modal-footer{border-color:#c87f0a}.modal-info .modal-header,.modal-info .modal-footer{border-color:#0097bc}.modal-success .modal-header,.modal-success .modal-footer{border-color:#00733e}.modal-danger .modal-header,.modal-danger .modal-footer{border-color:#c23321}.mailbox-messages>.table{margin:0}.mailbox-controls{padding:5px}.mailbox-controls.with-border{border-bottom:1px solid #f4f4f4}.mailbox-read-info{border-bottom:1px solid #f4f4f4;padding:10px}.mailbox-read-info h3{font-size:20px;margin:0}.mailbox-read-info h5{margin:0;padding:5px 0 0 0}.mailbox-read-time{color:#999;font-size:13px}.mailbox-read-message{padding:10px}.mailbox-attachments li{float:left;width:200px;border:1px solid #eee;margin-bottom:10px;margin-right:10px}.mailbox-attachment-name{font-weight:bold;color:#666}.mailbox-attachment-icon,.mailbox-attachment-info,.mailbox-attachment-size{display:block}.mailbox-attachment-info{padding:10px;background:#f4f4f4}.mailbox-attachment-size{color:#999;font-size:12px}.mailbox-attachment-icon{text-align:center;font-size:65px;color:#666;padding:20px 10px}.mailbox-attachment-icon.has-img{padding:0}.mailbox-attachment-icon.has-img>img{max-width:100%;height:auto}.lockscreen{background:#d2d6de}.lockscreen-logo{font-size:35px;text-align:center;margin-bottom:25px;font-weight:300}.lockscreen-logo a{color:#444}.lockscreen-wrapper{max-width:400px;margin:0 auto;margin-top:10%}.lockscreen .lockscreen-name{text-align:center;font-weight:600}.lockscreen-item{border-radius:4px;padding:0;background:#fff;position:relative;margin:10px auto 30px auto;width:290px}.lockscreen-image{border-radius:50%;position:absolute;left:-10px;top:-25px;background:#fff;padding:5px;z-index:10}.lockscreen-image>img{border-radius:50%;width:70px;height:70px}.lockscreen-credentials{margin-left:70px}.lockscreen-credentials .form-control{border:0 !important}.lockscreen-credentials .btn{background-color:#fff;border:0;padding:0 10px}.lockscreen-footer{margin-top:10px}.login-logo,.register-logo{font-size:35px;text-align:center;margin-bottom:25px;font-weight:300}.login-logo a,.register-logo a{color:#444}.login-page,.register-page{background:#d2d6de}.login-box,.register-box{width:360px;margin:7% auto}@media (max-width:768px){.login-box,.register-box{width:90%;margin-top:20px}}.login-box-body,.register-box-body{background:#fff;padding:20px;color:#444;border-top:0;color:#666}.login-box-body .form-control-feedback,.register-box-body .form-control-feedback{color:#777}.login-box-msg,.register-box-msg{margin:0;text-align:center;padding:0 20px 20px 20px}.social-auth-links{margin:10px 0}.error-page{width:600px;margin:20px auto 0 auto}@media (max-width:991px){.error-page{width:100%}}.error-page>.headline{float:left;font-size:100px;font-weight:300}@media (max-width:991px){.error-page>.headline{float:none;text-align:center}}.error-page>.error-content{margin-left:190px;display:block}@media (max-width:991px){.error-page>.error-content{margin-left:0}}.error-page>.error-content>h3{font-weight:300;font-size:25px}@media (max-width:991px){.error-page>.error-content>h3{text-align:center}}.invoice{position:relative;background:#fff;border:1px solid #f4f4f4;padding:20px;margin:10px 25px}.invoice-title{margin-top:0}.btn-social{position:relative;padding-left:44px !important;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.btn-social :first-child{position:absolute;left:0;top:0;bottom:0;width:32px !important;line-height:34px !important;font-size:1.6em!important;text-align:center;border-right:1px solid rgba(0,0,0,0.2)}.btn-social.btn-lg{padding-left:61px !important}.btn-social.btn-lg :first-child{line-height:45px;width:45px;font-size:1.8em}.btn-social.btn-sm{padding-left:38px !important}.btn-social.btn-sm :first-child{line-height:28px;width:28px;font-size:1.4em}.btn-social.btn-xs{padding-left:30px !important}.btn-social.btn-xs :first-child{line-height:20px;width:20px;font-size:1.2em}.btn-social-icon{position:relative;padding-left:44px !important;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:34px;width:34px;padding:0}.btn-social-icon :first-child{position:absolute;left:0;top:0;bottom:0;width:32px !important;line-height:34px !important;font-size:1.6em!important;text-align:center;border-right:1px solid rgba(0,0,0,0.2)}.btn-social-icon.btn-lg{padding-left:61px !important}.btn-social-icon.btn-lg :first-child{line-height:45px;width:45px;font-size:1.8em}.btn-social-icon.btn-sm{padding-left:38px !important}.btn-social-icon.btn-sm :first-child{line-height:28px;width:28px;font-size:1.4em}.btn-social-icon.btn-xs{padding-left:30px !important}.btn-social-icon.btn-xs :first-child{line-height:20px;width:20px;font-size:1.2em}.btn-social-icon :first-child{border:none;text-align:center;width:100%!important}.btn-social-icon.btn-lg{height:45px;width:45px;padding-left:0;padding-right:0}.btn-social-icon.btn-sm{height:30px;width:30px;padding-left:0;padding-right:0}.btn-social-icon.btn-xs{height:22px;width:22px;padding-left:0;padding-right:0}.btn-bitbucket{color:#fff;background-color:#205081;border-color:rgba(0,0,0,0.2)}.btn-bitbucket:hover,.btn-bitbucket:focus,.btn-bitbucket.focus,.btn-bitbucket:active,.btn-bitbucket.active,.open>.dropdown-toggle.btn-bitbucket{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2)}.btn-bitbucket:active,.btn-bitbucket.active,.open>.dropdown-toggle.btn-bitbucket{background-image:none}.btn-bitbucket.disabled,.btn-bitbucket[disabled],fieldset[disabled] .btn-bitbucket,.btn-bitbucket.disabled:hover,.btn-bitbucket[disabled]:hover,fieldset[disabled] .btn-bitbucket:hover,.btn-bitbucket.disabled:focus,.btn-bitbucket[disabled]:focus,fieldset[disabled] .btn-bitbucket:focus,.btn-bitbucket.disabled.focus,.btn-bitbucket[disabled].focus,fieldset[disabled] .btn-bitbucket.focus,.btn-bitbucket.disabled:active,.btn-bitbucket[disabled]:active,fieldset[disabled] .btn-bitbucket:active,.btn-bitbucket.disabled.active,.btn-bitbucket[disabled].active,fieldset[disabled] .btn-bitbucket.active{background-color:#205081;border-color:rgba(0,0,0,0.2)}.btn-bitbucket .badge{color:#205081;background-color:#fff}.btn-dropbox{color:#fff;background-color:#1087dd;border-color:rgba(0,0,0,0.2)}.btn-dropbox:hover,.btn-dropbox:focus,.btn-dropbox.focus,.btn-dropbox:active,.btn-dropbox.active,.open>.dropdown-toggle.btn-dropbox{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2)}.btn-dropbox:active,.btn-dropbox.active,.open>.dropdown-toggle.btn-dropbox{background-image:none}.btn-dropbox.disabled,.btn-dropbox[disabled],fieldset[disabled] .btn-dropbox,.btn-dropbox.disabled:hover,.btn-dropbox[disabled]:hover,fieldset[disabled] .btn-dropbox:hover,.btn-dropbox.disabled:focus,.btn-dropbox[disabled]:focus,fieldset[disabled] .btn-dropbox:focus,.btn-dropbox.disabled.focus,.btn-dropbox[disabled].focus,fieldset[disabled] .btn-dropbox.focus,.btn-dropbox.disabled:active,.btn-dropbox[disabled]:active,fieldset[disabled] .btn-dropbox:active,.btn-dropbox.disabled.active,.btn-dropbox[disabled].active,fieldset[disabled] .btn-dropbox.active{background-color:#1087dd;border-color:rgba(0,0,0,0.2)}.btn-dropbox .badge{color:#1087dd;background-color:#fff}.btn-facebook{color:#fff;background-color:#3b5998;border-color:rgba(0,0,0,0.2)}.btn-facebook:hover,.btn-facebook:focus,.btn-facebook.focus,.btn-facebook:active,.btn-facebook.active,.open>.dropdown-toggle.btn-facebook{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2)}.btn-facebook:active,.btn-facebook.active,.open>.dropdown-toggle.btn-facebook{background-image:none}.btn-facebook.disabled,.btn-facebook[disabled],fieldset[disabled] .btn-facebook,.btn-facebook.disabled:hover,.btn-facebook[disabled]:hover,fieldset[disabled] .btn-facebook:hover,.btn-facebook.disabled:focus,.btn-facebook[disabled]:focus,fieldset[disabled] .btn-facebook:focus,.btn-facebook.disabled.focus,.btn-facebook[disabled].focus,fieldset[disabled] .btn-facebook.focus,.btn-facebook.disabled:active,.btn-facebook[disabled]:active,fieldset[disabled] .btn-facebook:active,.btn-facebook.disabled.active,.btn-facebook[disabled].active,fieldset[disabled] .btn-facebook.active{background-color:#3b5998;border-color:rgba(0,0,0,0.2)}.btn-facebook .badge{color:#3b5998;background-color:#fff}.btn-flickr{color:#fff;background-color:#ff0084;border-color:rgba(0,0,0,0.2)}.btn-flickr:hover,.btn-flickr:focus,.btn-flickr.focus,.btn-flickr:active,.btn-flickr.active,.open>.dropdown-toggle.btn-flickr{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2)}.btn-flickr:active,.btn-flickr.active,.open>.dropdown-toggle.btn-flickr{background-image:none}.btn-flickr.disabled,.btn-flickr[disabled],fieldset[disabled] .btn-flickr,.btn-flickr.disabled:hover,.btn-flickr[disabled]:hover,fieldset[disabled] .btn-flickr:hover,.btn-flickr.disabled:focus,.btn-flickr[disabled]:focus,fieldset[disabled] .btn-flickr:focus,.btn-flickr.disabled.focus,.btn-flickr[disabled].focus,fieldset[disabled] .btn-flickr.focus,.btn-flickr.disabled:active,.btn-flickr[disabled]:active,fieldset[disabled] .btn-flickr:active,.btn-flickr.disabled.active,.btn-flickr[disabled].active,fieldset[disabled] .btn-flickr.active{background-color:#ff0084;border-color:rgba(0,0,0,0.2)}.btn-flickr .badge{color:#ff0084;background-color:#fff}.btn-foursquare{color:#fff;background-color:#0072b1;border-color:rgba(0,0,0,0.2)}.btn-foursquare:hover,.btn-foursquare:focus,.btn-foursquare.focus,.btn-foursquare:active,.btn-foursquare.active,.open>.dropdown-toggle.btn-foursquare{color:#fff;background-color:#00517e;border-color:rgba(0,0,0,0.2)}.btn-foursquare:active,.btn-foursquare.active,.open>.dropdown-toggle.btn-foursquare{background-image:none}.btn-foursquare.disabled,.btn-foursquare[disabled],fieldset[disabled] .btn-foursquare,.btn-foursquare.disabled:hover,.btn-foursquare[disabled]:hover,fieldset[disabled] .btn-foursquare:hover,.btn-foursquare.disabled:focus,.btn-foursquare[disabled]:focus,fieldset[disabled] .btn-foursquare:focus,.btn-foursquare.disabled.focus,.btn-foursquare[disabled].focus,fieldset[disabled] .btn-foursquare.focus,.btn-foursquare.disabled:active,.btn-foursquare[disabled]:active,fieldset[disabled] .btn-foursquare:active,.btn-foursquare.disabled.active,.btn-foursquare[disabled].active,fieldset[disabled] .btn-foursquare.active{background-color:#0072b1;border-color:rgba(0,0,0,0.2)}.btn-foursquare .badge{color:#0072b1;background-color:#fff}.btn-github{color:#fff;background-color:#444;border-color:rgba(0,0,0,0.2)}.btn-github:hover,.btn-github:focus,.btn-github.focus,.btn-github:active,.btn-github.active,.open>.dropdown-toggle.btn-github{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2)}.btn-github:active,.btn-github.active,.open>.dropdown-toggle.btn-github{background-image:none}.btn-github.disabled,.btn-github[disabled],fieldset[disabled] .btn-github,.btn-github.disabled:hover,.btn-github[disabled]:hover,fieldset[disabled] .btn-github:hover,.btn-github.disabled:focus,.btn-github[disabled]:focus,fieldset[disabled] .btn-github:focus,.btn-github.disabled.focus,.btn-github[disabled].focus,fieldset[disabled] .btn-github.focus,.btn-github.disabled:active,.btn-github[disabled]:active,fieldset[disabled] .btn-github:active,.btn-github.disabled.active,.btn-github[disabled].active,fieldset[disabled] .btn-github.active{background-color:#444;border-color:rgba(0,0,0,0.2)}.btn-github .badge{color:#444;background-color:#fff}.btn-google-plus{color:#fff;background-color:#dd4b39;border-color:rgba(0,0,0,0.2)}.btn-google-plus:hover,.btn-google-plus:focus,.btn-google-plus.focus,.btn-google-plus:active,.btn-google-plus.active,.open>.dropdown-toggle.btn-google-plus{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2)}.btn-google-plus:active,.btn-google-plus.active,.open>.dropdown-toggle.btn-google-plus{background-image:none}.btn-google-plus.disabled,.btn-google-plus[disabled],fieldset[disabled] .btn-google-plus,.btn-google-plus.disabled:hover,.btn-google-plus[disabled]:hover,fieldset[disabled] .btn-google-plus:hover,.btn-google-plus.disabled:focus,.btn-google-plus[disabled]:focus,fieldset[disabled] .btn-google-plus:focus,.btn-google-plus.disabled.focus,.btn-google-plus[disabled].focus,fieldset[disabled] .btn-google-plus.focus,.btn-google-plus.disabled:active,.btn-google-plus[disabled]:active,fieldset[disabled] .btn-google-plus:active,.btn-google-plus.disabled.active,.btn-google-plus[disabled].active,fieldset[disabled] .btn-google-plus.active{background-color:#dd4b39;border-color:rgba(0,0,0,0.2)}.btn-google-plus .badge{color:#dd4b39;background-color:#fff}.btn-instagram{color:#fff;background-color:#3f729b;border-color:rgba(0,0,0,0.2)}.btn-instagram:hover,.btn-instagram:focus,.btn-instagram.focus,.btn-instagram:active,.btn-instagram.active,.open>.dropdown-toggle.btn-instagram{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2)}.btn-instagram:active,.btn-instagram.active,.open>.dropdown-toggle.btn-instagram{background-image:none}.btn-instagram.disabled,.btn-instagram[disabled],fieldset[disabled] .btn-instagram,.btn-instagram.disabled:hover,.btn-instagram[disabled]:hover,fieldset[disabled] .btn-instagram:hover,.btn-instagram.disabled:focus,.btn-instagram[disabled]:focus,fieldset[disabled] .btn-instagram:focus,.btn-instagram.disabled.focus,.btn-instagram[disabled].focus,fieldset[disabled] .btn-instagram.focus,.btn-instagram.disabled:active,.btn-instagram[disabled]:active,fieldset[disabled] .btn-instagram:active,.btn-instagram.disabled.active,.btn-instagram[disabled].active,fieldset[disabled] .btn-instagram.active{background-color:#3f729b;border-color:rgba(0,0,0,0.2)}.btn-instagram .badge{color:#3f729b;background-color:#fff}.btn-linkedin{color:#fff;background-color:#007bb6;border-color:rgba(0,0,0,0.2)}.btn-linkedin:hover,.btn-linkedin:focus,.btn-linkedin.focus,.btn-linkedin:active,.btn-linkedin.active,.open>.dropdown-toggle.btn-linkedin{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2)}.btn-linkedin:active,.btn-linkedin.active,.open>.dropdown-toggle.btn-linkedin{background-image:none}.btn-linkedin.disabled,.btn-linkedin[disabled],fieldset[disabled] .btn-linkedin,.btn-linkedin.disabled:hover,.btn-linkedin[disabled]:hover,fieldset[disabled] .btn-linkedin:hover,.btn-linkedin.disabled:focus,.btn-linkedin[disabled]:focus,fieldset[disabled] .btn-linkedin:focus,.btn-linkedin.disabled.focus,.btn-linkedin[disabled].focus,fieldset[disabled] .btn-linkedin.focus,.btn-linkedin.disabled:active,.btn-linkedin[disabled]:active,fieldset[disabled] .btn-linkedin:active,.btn-linkedin.disabled.active,.btn-linkedin[disabled].active,fieldset[disabled] .btn-linkedin.active{background-color:#007bb6;border-color:rgba(0,0,0,0.2)}.btn-linkedin .badge{color:#007bb6;background-color:#fff}.btn-tumblr{color:#fff;background-color:#2c4762;border-color:rgba(0,0,0,0.2)}.btn-tumblr:hover,.btn-tumblr:focus,.btn-tumblr.focus,.btn-tumblr:active,.btn-tumblr.active,.open>.dropdown-toggle.btn-tumblr{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2)}.btn-tumblr:active,.btn-tumblr.active,.open>.dropdown-toggle.btn-tumblr{background-image:none}.btn-tumblr.disabled,.btn-tumblr[disabled],fieldset[disabled] .btn-tumblr,.btn-tumblr.disabled:hover,.btn-tumblr[disabled]:hover,fieldset[disabled] .btn-tumblr:hover,.btn-tumblr.disabled:focus,.btn-tumblr[disabled]:focus,fieldset[disabled] .btn-tumblr:focus,.btn-tumblr.disabled.focus,.btn-tumblr[disabled].focus,fieldset[disabled] .btn-tumblr.focus,.btn-tumblr.disabled:active,.btn-tumblr[disabled]:active,fieldset[disabled] .btn-tumblr:active,.btn-tumblr.disabled.active,.btn-tumblr[disabled].active,fieldset[disabled] .btn-tumblr.active{background-color:#2c4762;border-color:rgba(0,0,0,0.2)}.btn-tumblr .badge{color:#2c4762;background-color:#fff}.btn-twitter{color:#fff;background-color:#55acee;border-color:rgba(0,0,0,0.2)}.btn-twitter:hover,.btn-twitter:focus,.btn-twitter.focus,.btn-twitter:active,.btn-twitter.active,.open>.dropdown-toggle.btn-twitter{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2)}.btn-twitter:active,.btn-twitter.active,.open>.dropdown-toggle.btn-twitter{background-image:none}.btn-twitter.disabled,.btn-twitter[disabled],fieldset[disabled] .btn-twitter,.btn-twitter.disabled:hover,.btn-twitter[disabled]:hover,fieldset[disabled] .btn-twitter:hover,.btn-twitter.disabled:focus,.btn-twitter[disabled]:focus,fieldset[disabled] .btn-twitter:focus,.btn-twitter.disabled.focus,.btn-twitter[disabled].focus,fieldset[disabled] .btn-twitter.focus,.btn-twitter.disabled:active,.btn-twitter[disabled]:active,fieldset[disabled] .btn-twitter:active,.btn-twitter.disabled.active,.btn-twitter[disabled].active,fieldset[disabled] .btn-twitter.active{background-color:#55acee;border-color:rgba(0,0,0,0.2)}.btn-twitter .badge{color:#55acee;background-color:#fff}.btn-vk{color:#fff;background-color:#587ea3;border-color:rgba(0,0,0,0.2)}.btn-vk:hover,.btn-vk:focus,.btn-vk.focus,.btn-vk:active,.btn-vk.active,.open>.dropdown-toggle.btn-vk{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2)}.btn-vk:active,.btn-vk.active,.open>.dropdown-toggle.btn-vk{background-image:none}.btn-vk.disabled,.btn-vk[disabled],fieldset[disabled] .btn-vk,.btn-vk.disabled:hover,.btn-vk[disabled]:hover,fieldset[disabled] .btn-vk:hover,.btn-vk.disabled:focus,.btn-vk[disabled]:focus,fieldset[disabled] .btn-vk:focus,.btn-vk.disabled.focus,.btn-vk[disabled].focus,fieldset[disabled] .btn-vk.focus,.btn-vk.disabled:active,.btn-vk[disabled]:active,fieldset[disabled] .btn-vk:active,.btn-vk.disabled.active,.btn-vk[disabled].active,fieldset[disabled] .btn-vk.active{background-color:#587ea3;border-color:rgba(0,0,0,0.2)}.btn-vk .badge{color:#587ea3;background-color:#fff}.fc-button{background:#f4f4f4;background-image:none;color:#444;border-color:#ddd;border-bottom-color:#ddd}.fc-button:hover,.fc-button:active,.fc-button.hover{background-color:#e9e9e9}.fc-header-title h2{font-size:15px;line-height:1.6em;color:#666;margin-left:10px}.fc-header-right{padding-right:10px}.fc-header-left{padding-left:10px}.fc-widget-header{background:#fafafa}.fc-grid{width:100%;border:0}.fc-widget-header:first-of-type,.fc-widget-content:first-of-type{border-left:0;border-right:0}.fc-widget-header:last-of-type,.fc-widget-content:last-of-type{border-right:0}.fc-toolbar{padding:10px;margin:0}.fc-day-number{font-size:20px;font-weight:300;padding-right:10px}.fc-color-picker{list-style:none;margin:0;padding:0}.fc-color-picker>li{float:left;font-size:30px;margin-right:5px;line-height:30px}.fc-color-picker>li .fa{-webkit-transition:-webkit-transform linear .3s;-moz-transition:-moz-transform linear .3s;-o-transition:-o-transform linear .3s;transition:transform linear .3s}.fc-color-picker>li .fa:hover{-webkit-transform:rotate(30deg);-ms-transform:rotate(30deg);-o-transform:rotate(30deg);transform:rotate(30deg)}#add-new-event{-webkit-transition:all linear .3s;-o-transition:all linear .3s;transition:all linear .3s}.external-event{padding:5px 10px;font-weight:bold;margin-bottom:4px;box-shadow:0 1px 1px rgba(0,0,0,0.1);text-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:3px;cursor:move}.external-event:hover{box-shadow:inset 0 0 90px rgba(0,0,0,0.2)}.pad{padding:10px}.margin{margin:10px}.margin-bottom{margin-bottom:20px}.inline{display:inline;width:auto}.description-block{display:block;margin:10px 0;text-align:center}.description-block.margin-bottom{margin-bottom:25px}.description-block>.description-header{margin:0;padding:0;font-weight:600;font-size:16px}.description-block>.description-text{text-transform:uppercase}.bg-red,.bg-yellow,.bg-aqua,.bg-blue,.bg-light-blue,.bg-green,.bg-navy,.bg-teal,.bg-olive,.bg-lime,.bg-orange,.bg-fuchsia,.bg-purple,.bg-maroon,.bg-black,.bg-red-active,.bg-yellow-active,.bg-aqua-active,.bg-blue-active,.bg-light-blue-active,.bg-green-active,.bg-navy-active,.bg-teal-active,.bg-olive-active,.bg-lime-active,.bg-orange-active,.bg-fuchsia-active,.bg-purple-active,.bg-maroon-active,.bg-black-active,.callout.callout-danger,.callout.callout-warning,.callout.callout-info,.callout.callout-success,.alert-success,.alert-danger,.alert-error,.alert-warning,.alert-info,.label-danger,.label-info,.label-waring,.label-primary,.label-success,.modal-primary .modal-body,.modal-primary .modal-header,.modal-primary .modal-footer,.modal-warning .modal-body,.modal-warning .modal-header,.modal-warning .modal-footer,.modal-info .modal-body,.modal-info .modal-header,.modal-info .modal-footer,.modal-success .modal-body,.modal-success .modal-header,.modal-success .modal-footer,.modal-danger .modal-body,.modal-danger .modal-header,.modal-danger .modal-footer{color:#fff !important}.bg-gray{color:#000;background-color:#d2d6de !important}.bg-black{background-color:#111 !important}.bg-red,.callout.callout-danger,.alert-danger,.alert-error,.label-danger,.modal-danger .modal-body{background-color:#dd4b39 !important}.bg-yellow,.callout.callout-warning,.alert-warning,.label-waring,.modal-warning .modal-body{background-color:#f39c12 !important}.bg-aqua,.callout.callout-info,.alert-info,.label-info,.modal-info .modal-body{background-color:#00c0ef !important}.bg-blue{background-color:#0073b7 !important}.bg-light-blue,.label-primary,.modal-primary .modal-body{background-color:#3c8dbc !important}.bg-green,.callout.callout-success,.alert-success,.label-success,.modal-success .modal-body{background-color:#00a65a !important}.bg-navy{background-color:#001f3f !important}.bg-teal{background-color:#39cccc !important}.bg-olive{background-color:#3d9970 !important}.bg-lime{background-color:#01ff70 !important}.bg-orange{background-color:#ff851b !important}.bg-fuchsia{background-color:#f012be !important}.bg-purple{background-color:#605ca8 !important}.bg-maroon{background-color:#d81b60 !important}.bg-gray-active{color:#000;background-color:#b5bbc8 !important}.bg-black-active{background-color:#000 !important}.bg-red-active,.modal-danger .modal-header,.modal-danger .modal-footer{background-color:#d33724 !important}.bg-yellow-active,.modal-warning .modal-header,.modal-warning .modal-footer{background-color:#db8b0b !important}.bg-aqua-active,.modal-info .modal-header,.modal-info .modal-footer{background-color:#00a7d0 !important}.bg-blue-active{background-color:#005384 !important}.bg-light-blue-active,.modal-primary .modal-header,.modal-primary .modal-footer{background-color:#357ca5 !important}.bg-green-active,.modal-success .modal-header,.modal-success .modal-footer{background-color:#008d4c !important}.bg-navy-active{background-color:#001a35 !important}.bg-teal-active{background-color:#30bbbb !important}.bg-olive-active{background-color:#368763 !important}.bg-lime-active{background-color:#00e765 !important}.bg-orange-active{background-color:#ff7701 !important}.bg-fuchsia-active{background-color:#db0ead !important}.bg-purple-active{background-color:#555299 !important}.bg-maroon-active{background-color:#ca195a !important}[class^="bg-"].disabled{opacity:.65;filter:alpha(opacity=65)}.text-red{color:#dd4b39 !important}.text-yellow{color:#f39c12 !important}.text-aqua{color:#00c0ef !important}.text-blue{color:#0073b7 !important}.text-black{color:#111 !important}.text-light-blue{color:#3c8dbc !important}.text-green{color:#00a65a !important}.text-gray{color:#d2d6de !important}.text-navy{color:#001f3f !important}.text-teal{color:#39cccc !important}.text-olive{color:#3d9970 !important}.text-lime{color:#01ff70 !important}.text-orange{color:#ff851b !important}.text-fuchsia{color:#f012be !important}.text-purple{color:#605ca8 !important}.text-maroon{color:#d81b60 !important}.hide{display:none !important}.no-border{border:0px !important}.no-padding{padding:0px !important}.no-margin{margin:0px !important}.no-shadow{box-shadow:none!important}.list-unstyled,.chart-legend,.contacts-list,.users-list,.mailbox-attachments{list-style:none;margin:0;padding:0}.flat{border-radius:0 !important}.text-bold,.text-bold.table td,.text-bold.table th{font-weight:700}.jqstooltip{padding:5px!important;width:auto!important;height:auto!important}.bg-teal-gradient{background:#39cccc !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #39cccc), color-stop(1, #7adddd)) !important;background:-ms-linear-gradient(bottom, #39cccc, #7adddd) !important;background:-moz-linear-gradient(center bottom, #39cccc 0, #7adddd 100%) !important;background:-o-linear-gradient(#7adddd, #39cccc) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#7adddd', endColorstr='#39cccc', GradientType=0) !important;color:#fff}.bg-light-blue-gradient{background:#3c8dbc !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #3c8dbc), color-stop(1, #67a8ce)) !important;background:-ms-linear-gradient(bottom, #3c8dbc, #67a8ce) !important;background:-moz-linear-gradient(center bottom, #3c8dbc 0, #67a8ce 100%) !important;background:-o-linear-gradient(#67a8ce, #3c8dbc) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#67a8ce', endColorstr='#3c8dbc', GradientType=0) !important;color:#fff}.bg-blue-gradient{background:#0073b7 !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #0073b7), color-stop(1, #0089db)) !important;background:-ms-linear-gradient(bottom, #0073b7, #0089db) !important;background:-moz-linear-gradient(center bottom, #0073b7 0, #0089db 100%) !important;background:-o-linear-gradient(#0089db, #0073b7) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0089db', endColorstr='#0073b7', GradientType=0) !important;color:#fff}.bg-aqua-gradient{background:#00c0ef !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #00c0ef), color-stop(1, #14d1ff)) !important;background:-ms-linear-gradient(bottom, #00c0ef, #14d1ff) !important;background:-moz-linear-gradient(center bottom, #00c0ef 0, #14d1ff 100%) !important;background:-o-linear-gradient(#14d1ff, #00c0ef) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#14d1ff', endColorstr='#00c0ef', GradientType=0) !important;color:#fff}.bg-yellow-gradient{background:#f39c12 !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #f39c12), color-stop(1, #f7bc60)) !important;background:-ms-linear-gradient(bottom, #f39c12, #f7bc60) !important;background:-moz-linear-gradient(center bottom, #f39c12 0, #f7bc60 100%) !important;background:-o-linear-gradient(#f7bc60, #f39c12) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f7bc60', endColorstr='#f39c12', GradientType=0) !important;color:#fff}.bg-purple-gradient{background:#605ca8 !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #605ca8), color-stop(1, #9491c4)) !important;background:-ms-linear-gradient(bottom, #605ca8, #9491c4) !important;background:-moz-linear-gradient(center bottom, #605ca8 0, #9491c4 100%) !important;background:-o-linear-gradient(#9491c4, #605ca8) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#9491c4', endColorstr='#605ca8', GradientType=0) !important;color:#fff}.bg-green-gradient{background:#00a65a !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #00a65a), color-stop(1, #00ca6d)) !important;background:-ms-linear-gradient(bottom, #00a65a, #00ca6d) !important;background:-moz-linear-gradient(center bottom, #00a65a 0, #00ca6d 100%) !important;background:-o-linear-gradient(#00ca6d, #00a65a) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ca6d', endColorstr='#00a65a', GradientType=0) !important;color:#fff}.bg-red-gradient{background:#dd4b39 !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #dd4b39), color-stop(1, #e47365)) !important;background:-ms-linear-gradient(bottom, #dd4b39, #e47365) !important;background:-moz-linear-gradient(center bottom, #dd4b39 0, #e47365 100%) !important;background:-o-linear-gradient(#e47365, #dd4b39) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#e47365', endColorstr='#dd4b39', GradientType=0) !important;color:#fff}.bg-black-gradient{background:#111 !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #111), color-stop(1, #2b2b2b)) !important;background:-ms-linear-gradient(bottom, #111, #2b2b2b) !important;background:-moz-linear-gradient(center bottom, #111 0, #2b2b2b 100%) !important;background:-o-linear-gradient(#2b2b2b, #111) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#2b2b2b', endColorstr='#111111', GradientType=0) !important;color:#fff}.bg-maroon-gradient{background:#d81b60 !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #d81b60), color-stop(1, #e73f7c)) !important;background:-ms-linear-gradient(bottom, #d81b60, #e73f7c) !important;background:-moz-linear-gradient(center bottom, #d81b60 0, #e73f7c 100%) !important;background:-o-linear-gradient(#e73f7c, #d81b60) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#e73f7c', endColorstr='#d81b60', GradientType=0) !important;color:#fff}.connectedSortable{min-height:100px}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sort-highlight{background:#f4f4f4;border:1px dashed #ddd;margin-bottom:10px}.full-opacity-hover{opacity:.65;filter:alpha(opacity=65)}.full-opacity-hover:hover{opacity:1;filter:alpha(opacity=100)}.chart{position:relative;overflow:hidden;width:100%}.chart svg,.chart canvas{width:100%!important}@media print{.no-print,.main-sidebar,.left-side,.main-header,.content-header{display:none!important}.content-wrapper,.right-side,.main-footer{margin-left:0!important;min-height:0!important;-webkit-transform:translate(0, 0) !important;-ms-transform:translate(0, 0) !important;-o-transform:translate(0, 0) !important;transform:translate(0, 0) !important}.fixed .content-wrapper,.fixed .right-side{padding-top:0!important}.invoice{width:100%;border:0;margin:0;padding:0}.invoice-col{float:left;width:33.3333333%}.table-responsive{overflow:auto}.table-responsive>.table tr th,.table-responsive>.table tr td{white-space:normal!important}} - - - - - \ No newline at end of file diff --git a/assets/dist/css/images/add.png b/assets/dist/css/images/add.png deleted file mode 100644 index 29bb191b..00000000 Binary files a/assets/dist/css/images/add.png and /dev/null differ diff --git a/assets/dist/css/images/bg.gif b/assets/dist/css/images/bg.gif deleted file mode 100644 index 9ab78a2e..00000000 Binary files a/assets/dist/css/images/bg.gif and /dev/null differ diff --git a/assets/dist/css/images/btn-sprite.gif b/assets/dist/css/images/btn-sprite.gif deleted file mode 100644 index e827ba35..00000000 Binary files a/assets/dist/css/images/btn-sprite.gif and /dev/null differ diff --git a/assets/dist/css/images/close.png b/assets/dist/css/images/close.png deleted file mode 100644 index 2fc2ebcf..00000000 Binary files a/assets/dist/css/images/close.png and /dev/null differ diff --git a/assets/dist/css/images/ddn.png b/assets/dist/css/images/ddn.png deleted file mode 100644 index 2178f11e..00000000 Binary files a/assets/dist/css/images/ddn.png and /dev/null differ diff --git a/assets/dist/css/images/dn.png b/assets/dist/css/images/dn.png deleted file mode 100644 index a19083be..00000000 Binary files a/assets/dist/css/images/dn.png and /dev/null differ diff --git a/assets/dist/css/images/edit.png b/assets/dist/css/images/edit.png deleted file mode 100644 index 8f819bf3..00000000 Binary files a/assets/dist/css/images/edit.png and /dev/null differ diff --git a/assets/dist/css/images/error.png b/assets/dist/css/images/error.png deleted file mode 100644 index 3dd3b55d..00000000 Binary files a/assets/dist/css/images/error.png and /dev/null differ diff --git a/assets/dist/css/images/export.png b/assets/dist/css/images/export.png deleted file mode 100644 index 0f77b7d8..00000000 Binary files a/assets/dist/css/images/export.png and /dev/null differ diff --git a/assets/dist/css/images/fhbg.gif b/assets/dist/css/images/fhbg.gif deleted file mode 100644 index 8d459a30..00000000 Binary files a/assets/dist/css/images/fhbg.gif and /dev/null differ diff --git a/assets/dist/css/images/first.gif b/assets/dist/css/images/first.gif deleted file mode 100644 index 7623e738..00000000 Binary files a/assets/dist/css/images/first.gif and /dev/null differ diff --git a/assets/dist/css/images/hl.png b/assets/dist/css/images/hl.png deleted file mode 100644 index 6248e45d..00000000 Binary files a/assets/dist/css/images/hl.png and /dev/null differ diff --git a/assets/dist/css/images/index.html b/assets/dist/css/images/index.html deleted file mode 100644 index c942a79c..00000000 --- a/assets/dist/css/images/index.html +++ /dev/null @@ -1,10 +0,0 @@ -<html> -<head> - <title>403 Forbidden</title> -</head> -<body> - -<p>Directory access is forbidden.</p> - -</body> -</html> \ No newline at end of file diff --git a/assets/dist/css/images/last.gif b/assets/dist/css/images/last.gif deleted file mode 100644 index 61483e99..00000000 Binary files a/assets/dist/css/images/last.gif and /dev/null differ diff --git a/assets/dist/css/images/line.gif b/assets/dist/css/images/line.gif deleted file mode 100644 index c76a16e9..00000000 Binary files a/assets/dist/css/images/line.gif and /dev/null differ diff --git a/assets/dist/css/images/load.gif b/assets/dist/css/images/load.gif deleted file mode 100644 index 68f01d04..00000000 Binary files a/assets/dist/css/images/load.gif and /dev/null differ diff --git a/assets/dist/css/images/load.png b/assets/dist/css/images/load.png deleted file mode 100644 index d65defbc..00000000 Binary files a/assets/dist/css/images/load.png and /dev/null differ diff --git a/assets/dist/css/images/magnifier.png b/assets/dist/css/images/magnifier.png deleted file mode 100644 index cf3d97f7..00000000 Binary files a/assets/dist/css/images/magnifier.png and /dev/null differ diff --git a/assets/dist/css/images/next.gif b/assets/dist/css/images/next.gif deleted file mode 100644 index 2cd62ccb..00000000 Binary files a/assets/dist/css/images/next.gif and /dev/null differ diff --git a/assets/dist/css/images/prev.gif b/assets/dist/css/images/prev.gif deleted file mode 100644 index b440a29a..00000000 Binary files a/assets/dist/css/images/prev.gif and /dev/null differ diff --git a/assets/dist/css/images/print.png b/assets/dist/css/images/print.png deleted file mode 100644 index cc17b26b..00000000 Binary files a/assets/dist/css/images/print.png and /dev/null differ diff --git a/assets/dist/css/images/success.png b/assets/dist/css/images/success.png deleted file mode 100644 index 89c8129a..00000000 Binary files a/assets/dist/css/images/success.png and /dev/null differ diff --git a/assets/dist/css/images/up.png b/assets/dist/css/images/up.png deleted file mode 100644 index 000c0656..00000000 Binary files a/assets/dist/css/images/up.png and /dev/null differ diff --git a/assets/dist/css/images/uup.png b/assets/dist/css/images/uup.png deleted file mode 100644 index 660db638..00000000 Binary files a/assets/dist/css/images/uup.png and /dev/null differ diff --git a/assets/dist/css/images/wbg.gif b/assets/dist/css/images/wbg.gif deleted file mode 100644 index 8046089a..00000000 Binary files a/assets/dist/css/images/wbg.gif and /dev/null differ diff --git a/assets/dist/css/skins/_all-skins.css b/assets/dist/css/skins/_all-skins.css deleted file mode 100644 index 05489153..00000000 --- a/assets/dist/css/skins/_all-skins.css +++ /dev/null @@ -1,1787 +0,0 @@ -/* - * Skin: Blue - * ---------- - */ -.skin-blue .main-header .navbar { - background-color: #3c8dbc; -} -.skin-blue .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-blue .main-header .navbar .nav > li > a:hover, -.skin-blue .main-header .navbar .nav > li > a:active, -.skin-blue .main-header .navbar .nav > li > a:focus, -.skin-blue .main-header .navbar .nav .open > a, -.skin-blue .main-header .navbar .nav .open > a:hover, -.skin-blue .main-header .navbar .nav .open > a:focus { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-blue .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-blue .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-blue .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-blue .main-header .navbar .sidebar-toggle:hover { - background-color: #367fa9; -} -@media (max-width: 767px) { - .skin-blue .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-blue .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-blue .main-header .navbar .dropdown-menu li a:hover { - background: #367fa9; - } -} -.skin-blue .main-header .logo { - background-color: #367fa9; - color: #ffffff; - border-bottom: 0px solid transparent; -} -.skin-blue .main-header .logo:hover { - background-color: #357ca5; -} -.skin-blue .main-header li.user-header { - background-color: #3c8dbc; -} -.skin-blue .content-header { - background: transparent; -} -.skin-blue .wrapper, -.skin-blue .main-sidebar, -.skin-blue .left-side { - background-color: #222d32; -} -.skin-blue .user-panel > .info, -.skin-blue .user-panel > .info > a { - color: #fff; -} -.skin-blue .sidebar-menu > li.header { - color: #4b646f; - background: #1a2226; -} -.skin-blue .sidebar-menu > li > a { - border-left: 3px solid transparent; -} -.skin-blue .sidebar-menu > li:hover > a, -.skin-blue .sidebar-menu > li.active > a { - color: #ffffff; - background: #1e282c; - border-left-color: #3c8dbc; -} -.skin-blue .sidebar-menu > li > .treeview-menu { - margin: 0 1px; - background: #2c3b41; -} -.skin-blue .sidebar a { - color: #b8c7ce; -} -.skin-blue .sidebar a:hover { - text-decoration: none; -} -.skin-blue .treeview-menu > li > a { - color: #8aa4af; -} -.skin-blue .treeview-menu > li.active > a, -.skin-blue .treeview-menu > li > a:hover { - color: #ffffff; -} -.skin-blue .sidebar-form { - border-radius: 3px; - border: 1px solid #374850; - margin: 10px 10px; -} -.skin-blue .sidebar-form input[type="text"], -.skin-blue .sidebar-form .btn { - box-shadow: none; - background-color: #374850; - border: 1px solid transparent; - height: 35px; - -webkit-transition: all 0.3s ease-in-out; - -o-transition: all 0.3s ease-in-out; - transition: all 0.3s ease-in-out; -} -.skin-blue .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px !important; - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; - border-bottom-left-radius: 2px !important; -} -.skin-blue .sidebar-form input[type="text"]:focus, -.skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-blue .sidebar-form .btn { - color: #999; - border-top-left-radius: 0 !important; - border-top-right-radius: 2px !important; - border-bottom-right-radius: 2px !important; - border-bottom-left-radius: 0 !important; -} -.skin-blue.layout-top-nav .main-header > .logo { - background-color: #3c8dbc; - color: #ffffff; - border-bottom: 0px solid transparent; -} -.skin-blue.layout-top-nav .main-header > .logo:hover { - background-color: #3b8ab8; -} -/* - * Skin: Blue - * ---------- - */ -.skin-blue-light .main-header .navbar { - background-color: #3c8dbc; -} -.skin-blue-light .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-blue-light .main-header .navbar .nav > li > a:hover, -.skin-blue-light .main-header .navbar .nav > li > a:active, -.skin-blue-light .main-header .navbar .nav > li > a:focus, -.skin-blue-light .main-header .navbar .nav .open > a, -.skin-blue-light .main-header .navbar .nav .open > a:hover, -.skin-blue-light .main-header .navbar .nav .open > a:focus { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-blue-light .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-blue-light .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-blue-light .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-blue-light .main-header .navbar .sidebar-toggle:hover { - background-color: #367fa9; -} -@media (max-width: 767px) { - .skin-blue-light .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-blue-light .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-blue-light .main-header .navbar .dropdown-menu li a:hover { - background: #367fa9; - } -} -.skin-blue-light .main-header .logo { - background-color: #3c8dbc; - color: #ffffff; - border-bottom: 0px solid transparent; -} -.skin-blue-light .main-header .logo:hover { - background-color: #3b8ab8; -} -.skin-blue-light .main-header li.user-header { - background-color: #3c8dbc; -} -.skin-blue-light .content-header { - background: transparent; -} -.skin-blue-light .wrapper, -.skin-blue-light .main-sidebar, -.skin-blue-light .left-side { - background-color: #f9fafc; -} -.skin-blue-light .content-wrapper, -.skin-blue-light .main-footer { - border-left: 1px solid #d2d6de; -} -.skin-blue-light .user-panel > .info, -.skin-blue-light .user-panel > .info > a { - color: #444444; -} -.skin-blue-light .sidebar-menu > li { - -webkit-transition: border-left-color 0.3s ease; - -o-transition: border-left-color 0.3s ease; - transition: border-left-color 0.3s ease; -} -.skin-blue-light .sidebar-menu > li.header { - color: #848484; - background: #f9fafc; -} -.skin-blue-light .sidebar-menu > li > a { - border-left: 3px solid transparent; - font-weight: 600; -} -.skin-blue-light .sidebar-menu > li:hover > a, -.skin-blue-light .sidebar-menu > li.active > a { - color: #000000; - background: #f4f4f5; -} -.skin-blue-light .sidebar-menu > li.active { - border-left-color: #3c8dbc; -} -.skin-blue-light .sidebar-menu > li.active > a { - font-weight: 600; -} -.skin-blue-light .sidebar-menu > li > .treeview-menu { - background: #f4f4f5; -} -.skin-blue-light .sidebar a { - color: #444444; -} -.skin-blue-light .sidebar a:hover { - text-decoration: none; -} -.skin-blue-light .treeview-menu > li > a { - color: #777777; -} -.skin-blue-light .treeview-menu > li.active > a, -.skin-blue-light .treeview-menu > li > a:hover { - color: #000000; -} -.skin-blue-light .treeview-menu > li.active > a { - font-weight: 600; -} -.skin-blue-light .sidebar-form { - border-radius: 3px; - border: 1px solid #d2d6de; - margin: 10px 10px; -} -.skin-blue-light .sidebar-form input[type="text"], -.skin-blue-light .sidebar-form .btn { - box-shadow: none; - background-color: #fff; - border: 1px solid transparent; - height: 35px; - -webkit-transition: all 0.3s ease-in-out; - -o-transition: all 0.3s ease-in-out; - transition: all 0.3s ease-in-out; -} -.skin-blue-light .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px !important; - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; - border-bottom-left-radius: 2px !important; -} -.skin-blue-light .sidebar-form input[type="text"]:focus, -.skin-blue-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-blue-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-blue-light .sidebar-form .btn { - color: #999; - border-top-left-radius: 0 !important; - border-top-right-radius: 2px !important; - border-bottom-right-radius: 2px !important; - border-bottom-left-radius: 0 !important; -} -@media (min-width: 768px) { - .skin-blue-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { - border-left: 1px solid #d2d6de; - } -} -.skin-blue-light .main-footer { - border-top-color: #d2d6de; -} -.skin-blue.layout-top-nav .main-header > .logo { - background-color: #3c8dbc; - color: #ffffff; - border-bottom: 0px solid transparent; -} -.skin-blue.layout-top-nav .main-header > .logo:hover { - background-color: #3b8ab8; -} -/* - * Skin: Black - * ----------- - */ -/* skin-black navbar */ -.skin-black .main-header { - -webkit-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05); -} -.skin-black .main-header .navbar-toggle { - color: #333; -} -.skin-black .main-header .navbar-brand { - color: #333; - border-right: 1px solid #eee; -} -.skin-black .main-header > .navbar { - background-color: #ffffff; -} -.skin-black .main-header > .navbar .nav > li > a { - color: #333333; -} -.skin-black .main-header > .navbar .nav > li > a:hover, -.skin-black .main-header > .navbar .nav > li > a:active, -.skin-black .main-header > .navbar .nav > li > a:focus, -.skin-black .main-header > .navbar .nav .open > a, -.skin-black .main-header > .navbar .nav .open > a:hover, -.skin-black .main-header > .navbar .nav .open > a:focus { - background: #ffffff; - color: #999999; -} -.skin-black .main-header > .navbar .sidebar-toggle { - color: #333333; -} -.skin-black .main-header > .navbar .sidebar-toggle:hover { - color: #999999; - background: #ffffff; -} -.skin-black .main-header > .navbar > .sidebar-toggle { - color: #333; - border-right: 1px solid #eee; -} -.skin-black .main-header > .navbar .navbar-nav > li > a { - border-right: 1px solid #eee; -} -.skin-black .main-header > .navbar .navbar-custom-menu .navbar-nav > li > a, -.skin-black .main-header > .navbar .navbar-right > li > a { - border-left: 1px solid #eee; - border-right-width: 0; -} -.skin-black .main-header > .logo { - background-color: #ffffff; - color: #333333; - border-bottom: 0px solid transparent; - border-right: 1px solid #eee; -} -.skin-black .main-header > .logo:hover { - background-color: #fcfcfc; -} -@media (max-width: 767px) { - .skin-black .main-header > .logo { - background-color: #222222; - color: #ffffff; - border-bottom: 0px solid transparent; - border-right: none; - } - .skin-black .main-header > .logo:hover { - background-color: #1f1f1f; - } -} -.skin-black .main-header li.user-header { - background-color: #222; -} -.skin-black .content-header { - background: transparent; - box-shadow: none; -} -.skin-black .wrapper, -.skin-black .main-sidebar, -.skin-black .left-side { - background-color: #222d32; -} -.skin-black .user-panel > .info, -.skin-black .user-panel > .info > a { - color: #fff; -} -.skin-black .sidebar-menu > li.header { - color: #4b646f; - background: #1a2226; -} -.skin-black .sidebar-menu > li > a { - border-left: 3px solid transparent; -} -.skin-black .sidebar-menu > li:hover > a, -.skin-black .sidebar-menu > li.active > a { - color: #ffffff; - background: #1e282c; - border-left-color: #ffffff; -} -.skin-black .sidebar-menu > li > .treeview-menu { - margin: 0 1px; - background: #2c3b41; -} -.skin-black .sidebar a { - color: #b8c7ce; -} -.skin-black .sidebar a:hover { - text-decoration: none; -} -.skin-black .treeview-menu > li > a { - color: #8aa4af; -} -.skin-black .treeview-menu > li.active > a, -.skin-black .treeview-menu > li > a:hover { - color: #ffffff; -} -.skin-black .sidebar-form { - border-radius: 3px; - border: 1px solid #374850; - margin: 10px 10px; -} -.skin-black .sidebar-form input[type="text"], -.skin-black .sidebar-form .btn { - box-shadow: none; - background-color: #374850; - border: 1px solid transparent; - height: 35px; - -webkit-transition: all 0.3s ease-in-out; - -o-transition: all 0.3s ease-in-out; - transition: all 0.3s ease-in-out; -} -.skin-black .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px !important; - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; - border-bottom-left-radius: 2px !important; -} -.skin-black .sidebar-form input[type="text"]:focus, -.skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-black .sidebar-form .btn { - color: #999; - border-top-left-radius: 0 !important; - border-top-right-radius: 2px !important; - border-bottom-right-radius: 2px !important; - border-bottom-left-radius: 0 !important; -} -/* - * Skin: Black - * ----------- - */ -/* skin-black navbar */ -.skin-black-light .main-header { - -webkit-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05); -} -.skin-black-light .main-header .navbar-toggle { - color: #333; -} -.skin-black-light .main-header .navbar-brand { - color: #333; - border-right: 1px solid #eee; -} -.skin-black-light .main-header > .navbar { - background-color: #ffffff; -} -.skin-black-light .main-header > .navbar .nav > li > a { - color: #333333; -} -.skin-black-light .main-header > .navbar .nav > li > a:hover, -.skin-black-light .main-header > .navbar .nav > li > a:active, -.skin-black-light .main-header > .navbar .nav > li > a:focus, -.skin-black-light .main-header > .navbar .nav .open > a, -.skin-black-light .main-header > .navbar .nav .open > a:hover, -.skin-black-light .main-header > .navbar .nav .open > a:focus { - background: #ffffff; - color: #999999; -} -.skin-black-light .main-header > .navbar .sidebar-toggle { - color: #333333; -} -.skin-black-light .main-header > .navbar .sidebar-toggle:hover { - color: #999999; - background: #ffffff; -} -.skin-black-light .main-header > .navbar > .sidebar-toggle { - color: #333; - border-right: 1px solid #eee; -} -.skin-black-light .main-header > .navbar .navbar-nav > li > a { - border-right: 1px solid #eee; -} -.skin-black-light .main-header > .navbar .navbar-custom-menu .navbar-nav > li > a, -.skin-black-light .main-header > .navbar .navbar-right > li > a { - border-left: 1px solid #eee; - border-right-width: 0; -} -.skin-black-light .main-header > .logo { - background-color: #ffffff; - color: #333333; - border-bottom: 0px solid transparent; - border-right: 1px solid #eee; -} -.skin-black-light .main-header > .logo:hover { - background-color: #fcfcfc; -} -@media (max-width: 767px) { - .skin-black-light .main-header > .logo { - background-color: #222222; - color: #ffffff; - border-bottom: 0px solid transparent; - border-right: none; - } - .skin-black-light .main-header > .logo:hover { - background-color: #1f1f1f; - } -} -.skin-black-light .main-header li.user-header { - background-color: #222; -} -.skin-black-light .content-header { - background: transparent; - box-shadow: none; -} -.skin-black-light .wrapper, -.skin-black-light .main-sidebar, -.skin-black-light .left-side { - background-color: #f9fafc; -} -.skin-black-light .content-wrapper, -.skin-black-light .main-footer { - border-left: 1px solid #d2d6de; -} -.skin-black-light .user-panel > .info, -.skin-black-light .user-panel > .info > a { - color: #444444; -} -.skin-black-light .sidebar-menu > li { - -webkit-transition: border-left-color 0.3s ease; - -o-transition: border-left-color 0.3s ease; - transition: border-left-color 0.3s ease; -} -.skin-black-light .sidebar-menu > li.header { - color: #848484; - background: #f9fafc; -} -.skin-black-light .sidebar-menu > li > a { - border-left: 3px solid transparent; - font-weight: 600; -} -.skin-black-light .sidebar-menu > li:hover > a, -.skin-black-light .sidebar-menu > li.active > a { - color: #000000; - background: #f4f4f5; -} -.skin-black-light .sidebar-menu > li.active { - border-left-color: #ffffff; -} -.skin-black-light .sidebar-menu > li.active > a { - font-weight: 600; -} -.skin-black-light .sidebar-menu > li > .treeview-menu { - background: #f4f4f5; -} -.skin-black-light .sidebar a { - color: #444444; -} -.skin-black-light .sidebar a:hover { - text-decoration: none; -} -.skin-black-light .treeview-menu > li > a { - color: #777777; -} -.skin-black-light .treeview-menu > li.active > a, -.skin-black-light .treeview-menu > li > a:hover { - color: #000000; -} -.skin-black-light .treeview-menu > li.active > a { - font-weight: 600; -} -.skin-black-light .sidebar-form { - border-radius: 3px; - border: 1px solid #d2d6de; - margin: 10px 10px; -} -.skin-black-light .sidebar-form input[type="text"], -.skin-black-light .sidebar-form .btn { - box-shadow: none; - background-color: #fff; - border: 1px solid transparent; - height: 35px; - -webkit-transition: all 0.3s ease-in-out; - -o-transition: all 0.3s ease-in-out; - transition: all 0.3s ease-in-out; -} -.skin-black-light .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px !important; - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; - border-bottom-left-radius: 2px !important; -} -.skin-black-light .sidebar-form input[type="text"]:focus, -.skin-black-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-black-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-black-light .sidebar-form .btn { - color: #999; - border-top-left-radius: 0 !important; - border-top-right-radius: 2px !important; - border-bottom-right-radius: 2px !important; - border-bottom-left-radius: 0 !important; -} -@media (min-width: 768px) { - .skin-black-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { - border-left: 1px solid #d2d6de; - } -} -/* - * Skin: Green - * ----------- - */ -.skin-green .main-header .navbar { - background-color: #00a65a; -} -.skin-green .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-green .main-header .navbar .nav > li > a:hover, -.skin-green .main-header .navbar .nav > li > a:active, -.skin-green .main-header .navbar .nav > li > a:focus, -.skin-green .main-header .navbar .nav .open > a, -.skin-green .main-header .navbar .nav .open > a:hover, -.skin-green .main-header .navbar .nav .open > a:focus { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-green .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-green .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-green .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-green .main-header .navbar .sidebar-toggle:hover { - background-color: #008d4c; -} -@media (max-width: 767px) { - .skin-green .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-green .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-green .main-header .navbar .dropdown-menu li a:hover { - background: #008d4c; - } -} -.skin-green .main-header .logo { - background-color: #008d4c; - color: #ffffff; - border-bottom: 0px solid transparent; -} -.skin-green .main-header .logo:hover { - background-color: #008749; -} -.skin-green .main-header li.user-header { - background-color: #00a65a; -} -.skin-green .content-header { - background: transparent; -} -.skin-green .wrapper, -.skin-green .main-sidebar, -.skin-green .left-side { - background-color: #222d32; -} -.skin-green .user-panel > .info, -.skin-green .user-panel > .info > a { - color: #fff; -} -.skin-green .sidebar-menu > li.header { - color: #4b646f; - background: #1a2226; -} -.skin-green .sidebar-menu > li > a { - border-left: 3px solid transparent; -} -.skin-green .sidebar-menu > li:hover > a, -.skin-green .sidebar-menu > li.active > a { - color: #ffffff; - background: #1e282c; - border-left-color: #00a65a; -} -.skin-green .sidebar-menu > li > .treeview-menu { - margin: 0 1px; - background: #2c3b41; -} -.skin-green .sidebar a { - color: #b8c7ce; -} -.skin-green .sidebar a:hover { - text-decoration: none; -} -.skin-green .treeview-menu > li > a { - color: #8aa4af; -} -.skin-green .treeview-menu > li.active > a, -.skin-green .treeview-menu > li > a:hover { - color: #ffffff; -} -.skin-green .sidebar-form { - border-radius: 3px; - border: 1px solid #374850; - margin: 10px 10px; -} -.skin-green .sidebar-form input[type="text"], -.skin-green .sidebar-form .btn { - box-shadow: none; - background-color: #374850; - border: 1px solid transparent; - height: 35px; - -webkit-transition: all 0.3s ease-in-out; - -o-transition: all 0.3s ease-in-out; - transition: all 0.3s ease-in-out; -} -.skin-green .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px !important; - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; - border-bottom-left-radius: 2px !important; -} -.skin-green .sidebar-form input[type="text"]:focus, -.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-green .sidebar-form .btn { - color: #999; - border-top-left-radius: 0 !important; - border-top-right-radius: 2px !important; - border-bottom-right-radius: 2px !important; - border-bottom-left-radius: 0 !important; -} -/* - * Skin: Green - * ----------- - */ -.skin-green-light .main-header .navbar { - background-color: #00a65a; -} -.skin-green-light .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-green-light .main-header .navbar .nav > li > a:hover, -.skin-green-light .main-header .navbar .nav > li > a:active, -.skin-green-light .main-header .navbar .nav > li > a:focus, -.skin-green-light .main-header .navbar .nav .open > a, -.skin-green-light .main-header .navbar .nav .open > a:hover, -.skin-green-light .main-header .navbar .nav .open > a:focus { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-green-light .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-green-light .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-green-light .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-green-light .main-header .navbar .sidebar-toggle:hover { - background-color: #008d4c; -} -@media (max-width: 767px) { - .skin-green-light .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-green-light .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-green-light .main-header .navbar .dropdown-menu li a:hover { - background: #008d4c; - } -} -.skin-green-light .main-header .logo { - background-color: #00a65a; - color: #ffffff; - border-bottom: 0px solid transparent; -} -.skin-green-light .main-header .logo:hover { - background-color: #00a157; -} -.skin-green-light .main-header li.user-header { - background-color: #00a65a; -} -.skin-green-light .content-header { - background: transparent; -} -.skin-green-light .wrapper, -.skin-green-light .main-sidebar, -.skin-green-light .left-side { - background-color: #f9fafc; -} -.skin-green-light .content-wrapper, -.skin-green-light .main-footer { - border-left: 1px solid #d2d6de; -} -.skin-green-light .user-panel > .info, -.skin-green-light .user-panel > .info > a { - color: #444444; -} -.skin-green-light .sidebar-menu > li { - -webkit-transition: border-left-color 0.3s ease; - -o-transition: border-left-color 0.3s ease; - transition: border-left-color 0.3s ease; -} -.skin-green-light .sidebar-menu > li.header { - color: #848484; - background: #f9fafc; -} -.skin-green-light .sidebar-menu > li > a { - border-left: 3px solid transparent; - font-weight: 600; -} -.skin-green-light .sidebar-menu > li:hover > a, -.skin-green-light .sidebar-menu > li.active > a { - color: #000000; - background: #f4f4f5; -} -.skin-green-light .sidebar-menu > li.active { - border-left-color: #00a65a; -} -.skin-green-light .sidebar-menu > li.active > a { - font-weight: 600; -} -.skin-green-light .sidebar-menu > li > .treeview-menu { - background: #f4f4f5; -} -.skin-green-light .sidebar a { - color: #444444; -} -.skin-green-light .sidebar a:hover { - text-decoration: none; -} -.skin-green-light .treeview-menu > li > a { - color: #777777; -} -.skin-green-light .treeview-menu > li.active > a, -.skin-green-light .treeview-menu > li > a:hover { - color: #000000; -} -.skin-green-light .treeview-menu > li.active > a { - font-weight: 600; -} -.skin-green-light .sidebar-form { - border-radius: 3px; - border: 1px solid #d2d6de; - margin: 10px 10px; -} -.skin-green-light .sidebar-form input[type="text"], -.skin-green-light .sidebar-form .btn { - box-shadow: none; - background-color: #fff; - border: 1px solid transparent; - height: 35px; - -webkit-transition: all 0.3s ease-in-out; - -o-transition: all 0.3s ease-in-out; - transition: all 0.3s ease-in-out; -} -.skin-green-light .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px !important; - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; - border-bottom-left-radius: 2px !important; -} -.skin-green-light .sidebar-form input[type="text"]:focus, -.skin-green-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-green-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-green-light .sidebar-form .btn { - color: #999; - border-top-left-radius: 0 !important; - border-top-right-radius: 2px !important; - border-bottom-right-radius: 2px !important; - border-bottom-left-radius: 0 !important; -} -@media (min-width: 768px) { - .skin-green-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { - border-left: 1px solid #d2d6de; - } -} -/* - * Skin: Red - * --------- - */ -.skin-red .main-header .navbar { - background-color: #dd4b39; -} -.skin-red .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-red .main-header .navbar .nav > li > a:hover, -.skin-red .main-header .navbar .nav > li > a:active, -.skin-red .main-header .navbar .nav > li > a:focus, -.skin-red .main-header .navbar .nav .open > a, -.skin-red .main-header .navbar .nav .open > a:hover, -.skin-red .main-header .navbar .nav .open > a:focus { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-red .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-red .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-red .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-red .main-header .navbar .sidebar-toggle:hover { - background-color: #d73925; -} -@media (max-width: 767px) { - .skin-red .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-red .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-red .main-header .navbar .dropdown-menu li a:hover { - background: #d73925; - } -} -.skin-red .main-header .logo { - background-color: #d73925; - color: #ffffff; - border-bottom: 0px solid transparent; -} -.skin-red .main-header .logo:hover { - background-color: #d33724; -} -.skin-red .main-header li.user-header { - background-color: #dd4b39; -} -.skin-red .content-header { - background: transparent; -} -.skin-red .wrapper, -.skin-red .main-sidebar, -.skin-red .left-side { - background-color: #222d32; -} -.skin-red .user-panel > .info, -.skin-red .user-panel > .info > a { - color: #fff; -} -.skin-red .sidebar-menu > li.header { - color: #4b646f; - background: #1a2226; -} -.skin-red .sidebar-menu > li > a { - border-left: 3px solid transparent; -} -.skin-red .sidebar-menu > li:hover > a, -.skin-red .sidebar-menu > li.active > a { - color: #ffffff; - background: #1e282c; - border-left-color: #dd4b39; -} -.skin-red .sidebar-menu > li > .treeview-menu { - margin: 0 1px; - background: #2c3b41; -} -.skin-red .sidebar a { - color: #b8c7ce; -} -.skin-red .sidebar a:hover { - text-decoration: none; -} -.skin-red .treeview-menu > li > a { - color: #8aa4af; -} -.skin-red .treeview-menu > li.active > a, -.skin-red .treeview-menu > li > a:hover { - color: #ffffff; -} -.skin-red .sidebar-form { - border-radius: 3px; - border: 1px solid #374850; - margin: 10px 10px; -} -.skin-red .sidebar-form input[type="text"], -.skin-red .sidebar-form .btn { - box-shadow: none; - background-color: #374850; - border: 1px solid transparent; - height: 35px; - -webkit-transition: all 0.3s ease-in-out; - -o-transition: all 0.3s ease-in-out; - transition: all 0.3s ease-in-out; -} -.skin-red .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px !important; - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; - border-bottom-left-radius: 2px !important; -} -.skin-red .sidebar-form input[type="text"]:focus, -.skin-red .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-red .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-red .sidebar-form .btn { - color: #999; - border-top-left-radius: 0 !important; - border-top-right-radius: 2px !important; - border-bottom-right-radius: 2px !important; - border-bottom-left-radius: 0 !important; -} -/* - * Skin: Red - * --------- - */ -.skin-red-light .main-header .navbar { - background-color: #dd4b39; -} -.skin-red-light .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-red-light .main-header .navbar .nav > li > a:hover, -.skin-red-light .main-header .navbar .nav > li > a:active, -.skin-red-light .main-header .navbar .nav > li > a:focus, -.skin-red-light .main-header .navbar .nav .open > a, -.skin-red-light .main-header .navbar .nav .open > a:hover, -.skin-red-light .main-header .navbar .nav .open > a:focus { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-red-light .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-red-light .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-red-light .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-red-light .main-header .navbar .sidebar-toggle:hover { - background-color: #d73925; -} -@media (max-width: 767px) { - .skin-red-light .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-red-light .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-red-light .main-header .navbar .dropdown-menu li a:hover { - background: #d73925; - } -} -.skin-red-light .main-header .logo { - background-color: #dd4b39; - color: #ffffff; - border-bottom: 0px solid transparent; -} -.skin-red-light .main-header .logo:hover { - background-color: #dc4735; -} -.skin-red-light .main-header li.user-header { - background-color: #dd4b39; -} -.skin-red-light .content-header { - background: transparent; -} -.skin-red-light .wrapper, -.skin-red-light .main-sidebar, -.skin-red-light .left-side { - background-color: #f9fafc; -} -.skin-red-light .content-wrapper, -.skin-red-light .main-footer { - border-left: 1px solid #d2d6de; -} -.skin-red-light .user-panel > .info, -.skin-red-light .user-panel > .info > a { - color: #444444; -} -.skin-red-light .sidebar-menu > li { - -webkit-transition: border-left-color 0.3s ease; - -o-transition: border-left-color 0.3s ease; - transition: border-left-color 0.3s ease; -} -.skin-red-light .sidebar-menu > li.header { - color: #848484; - background: #f9fafc; -} -.skin-red-light .sidebar-menu > li > a { - border-left: 3px solid transparent; - font-weight: 600; -} -.skin-red-light .sidebar-menu > li:hover > a, -.skin-red-light .sidebar-menu > li.active > a { - color: #000000; - background: #f4f4f5; -} -.skin-red-light .sidebar-menu > li.active { - border-left-color: #dd4b39; -} -.skin-red-light .sidebar-menu > li.active > a { - font-weight: 600; -} -.skin-red-light .sidebar-menu > li > .treeview-menu { - background: #f4f4f5; -} -.skin-red-light .sidebar a { - color: #444444; -} -.skin-red-light .sidebar a:hover { - text-decoration: none; -} -.skin-red-light .treeview-menu > li > a { - color: #777777; -} -.skin-red-light .treeview-menu > li.active > a, -.skin-red-light .treeview-menu > li > a:hover { - color: #000000; -} -.skin-red-light .treeview-menu > li.active > a { - font-weight: 600; -} -.skin-red-light .sidebar-form { - border-radius: 3px; - border: 1px solid #d2d6de; - margin: 10px 10px; -} -.skin-red-light .sidebar-form input[type="text"], -.skin-red-light .sidebar-form .btn { - box-shadow: none; - background-color: #fff; - border: 1px solid transparent; - height: 35px; - -webkit-transition: all 0.3s ease-in-out; - -o-transition: all 0.3s ease-in-out; - transition: all 0.3s ease-in-out; -} -.skin-red-light .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px !important; - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; - border-bottom-left-radius: 2px !important; -} -.skin-red-light .sidebar-form input[type="text"]:focus, -.skin-red-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-red-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-red-light .sidebar-form .btn { - color: #999; - border-top-left-radius: 0 !important; - border-top-right-radius: 2px !important; - border-bottom-right-radius: 2px !important; - border-bottom-left-radius: 0 !important; -} -@media (min-width: 768px) { - .skin-red-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { - border-left: 1px solid #d2d6de; - } -} -/* - * Skin: Yellow - * ------------ - */ -.skin-yellow .main-header .navbar { - background-color: #f39c12; -} -.skin-yellow .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-yellow .main-header .navbar .nav > li > a:hover, -.skin-yellow .main-header .navbar .nav > li > a:active, -.skin-yellow .main-header .navbar .nav > li > a:focus, -.skin-yellow .main-header .navbar .nav .open > a, -.skin-yellow .main-header .navbar .nav .open > a:hover, -.skin-yellow .main-header .navbar .nav .open > a:focus { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-yellow .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-yellow .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-yellow .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-yellow .main-header .navbar .sidebar-toggle:hover { - background-color: #e08e0b; -} -@media (max-width: 767px) { - .skin-yellow .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-yellow .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-yellow .main-header .navbar .dropdown-menu li a:hover { - background: #e08e0b; - } -} -.skin-yellow .main-header .logo { - background-color: #e08e0b; - color: #ffffff; - border-bottom: 0px solid transparent; -} -.skin-yellow .main-header .logo:hover { - background-color: #db8b0b; -} -.skin-yellow .main-header li.user-header { - background-color: #f39c12; -} -.skin-yellow .content-header { - background: transparent; -} -.skin-yellow .wrapper, -.skin-yellow .main-sidebar, -.skin-yellow .left-side { - background-color: #222d32; -} -.skin-yellow .user-panel > .info, -.skin-yellow .user-panel > .info > a { - color: #fff; -} -.skin-yellow .sidebar-menu > li.header { - color: #4b646f; - background: #1a2226; -} -.skin-yellow .sidebar-menu > li > a { - border-left: 3px solid transparent; -} -.skin-yellow .sidebar-menu > li:hover > a, -.skin-yellow .sidebar-menu > li.active > a { - color: #ffffff; - background: #1e282c; - border-left-color: #f39c12; -} -.skin-yellow .sidebar-menu > li > .treeview-menu { - margin: 0 1px; - background: #2c3b41; -} -.skin-yellow .sidebar a { - color: #b8c7ce; -} -.skin-yellow .sidebar a:hover { - text-decoration: none; -} -.skin-yellow .treeview-menu > li > a { - color: #8aa4af; -} -.skin-yellow .treeview-menu > li.active > a, -.skin-yellow .treeview-menu > li > a:hover { - color: #ffffff; -} -.skin-yellow .sidebar-form { - border-radius: 3px; - border: 1px solid #374850; - margin: 10px 10px; -} -.skin-yellow .sidebar-form input[type="text"], -.skin-yellow .sidebar-form .btn { - box-shadow: none; - background-color: #374850; - border: 1px solid transparent; - height: 35px; - -webkit-transition: all 0.3s ease-in-out; - -o-transition: all 0.3s ease-in-out; - transition: all 0.3s ease-in-out; -} -.skin-yellow .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px !important; - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; - border-bottom-left-radius: 2px !important; -} -.skin-yellow .sidebar-form input[type="text"]:focus, -.skin-yellow .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-yellow .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-yellow .sidebar-form .btn { - color: #999; - border-top-left-radius: 0 !important; - border-top-right-radius: 2px !important; - border-bottom-right-radius: 2px !important; - border-bottom-left-radius: 0 !important; -} -/* - * Skin: Yellow - * ------------ - */ -.skin-yellow-light .main-header .navbar { - background-color: #f39c12; -} -.skin-yellow-light .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-yellow-light .main-header .navbar .nav > li > a:hover, -.skin-yellow-light .main-header .navbar .nav > li > a:active, -.skin-yellow-light .main-header .navbar .nav > li > a:focus, -.skin-yellow-light .main-header .navbar .nav .open > a, -.skin-yellow-light .main-header .navbar .nav .open > a:hover, -.skin-yellow-light .main-header .navbar .nav .open > a:focus { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-yellow-light .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-yellow-light .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-yellow-light .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-yellow-light .main-header .navbar .sidebar-toggle:hover { - background-color: #e08e0b; -} -@media (max-width: 767px) { - .skin-yellow-light .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-yellow-light .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-yellow-light .main-header .navbar .dropdown-menu li a:hover { - background: #e08e0b; - } -} -.skin-yellow-light .main-header .logo { - background-color: #f39c12; - color: #ffffff; - border-bottom: 0px solid transparent; -} -.skin-yellow-light .main-header .logo:hover { - background-color: #f39a0d; -} -.skin-yellow-light .main-header li.user-header { - background-color: #f39c12; -} -.skin-yellow-light .content-header { - background: transparent; -} -.skin-yellow-light .wrapper, -.skin-yellow-light .main-sidebar, -.skin-yellow-light .left-side { - background-color: #f9fafc; -} -.skin-yellow-light .content-wrapper, -.skin-yellow-light .main-footer { - border-left: 1px solid #d2d6de; -} -.skin-yellow-light .user-panel > .info, -.skin-yellow-light .user-panel > .info > a { - color: #444444; -} -.skin-yellow-light .sidebar-menu > li { - -webkit-transition: border-left-color 0.3s ease; - -o-transition: border-left-color 0.3s ease; - transition: border-left-color 0.3s ease; -} -.skin-yellow-light .sidebar-menu > li.header { - color: #848484; - background: #f9fafc; -} -.skin-yellow-light .sidebar-menu > li > a { - border-left: 3px solid transparent; - font-weight: 600; -} -.skin-yellow-light .sidebar-menu > li:hover > a, -.skin-yellow-light .sidebar-menu > li.active > a { - color: #000000; - background: #f4f4f5; -} -.skin-yellow-light .sidebar-menu > li.active { - border-left-color: #f39c12; -} -.skin-yellow-light .sidebar-menu > li.active > a { - font-weight: 600; -} -.skin-yellow-light .sidebar-menu > li > .treeview-menu { - background: #f4f4f5; -} -.skin-yellow-light .sidebar a { - color: #444444; -} -.skin-yellow-light .sidebar a:hover { - text-decoration: none; -} -.skin-yellow-light .treeview-menu > li > a { - color: #777777; -} -.skin-yellow-light .treeview-menu > li.active > a, -.skin-yellow-light .treeview-menu > li > a:hover { - color: #000000; -} -.skin-yellow-light .treeview-menu > li.active > a { - font-weight: 600; -} -.skin-yellow-light .sidebar-form { - border-radius: 3px; - border: 1px solid #d2d6de; - margin: 10px 10px; -} -.skin-yellow-light .sidebar-form input[type="text"], -.skin-yellow-light .sidebar-form .btn { - box-shadow: none; - background-color: #fff; - border: 1px solid transparent; - height: 35px; - -webkit-transition: all 0.3s ease-in-out; - -o-transition: all 0.3s ease-in-out; - transition: all 0.3s ease-in-out; -} -.skin-yellow-light .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px !important; - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; - border-bottom-left-radius: 2px !important; -} -.skin-yellow-light .sidebar-form input[type="text"]:focus, -.skin-yellow-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-yellow-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-yellow-light .sidebar-form .btn { - color: #999; - border-top-left-radius: 0 !important; - border-top-right-radius: 2px !important; - border-bottom-right-radius: 2px !important; - border-bottom-left-radius: 0 !important; -} -@media (min-width: 768px) { - .skin-yellow-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { - border-left: 1px solid #d2d6de; - } -} -/* - * Skin: Purple - * ------------ - */ -.skin-purple .main-header .navbar { - background-color: #605ca8; -} -.skin-purple .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-purple .main-header .navbar .nav > li > a:hover, -.skin-purple .main-header .navbar .nav > li > a:active, -.skin-purple .main-header .navbar .nav > li > a:focus, -.skin-purple .main-header .navbar .nav .open > a, -.skin-purple .main-header .navbar .nav .open > a:hover, -.skin-purple .main-header .navbar .nav .open > a:focus { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-purple .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-purple .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-purple .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-purple .main-header .navbar .sidebar-toggle:hover { - background-color: #555299; -} -@media (max-width: 767px) { - .skin-purple .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-purple .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-purple .main-header .navbar .dropdown-menu li a:hover { - background: #555299; - } -} -.skin-purple .main-header .logo { - background-color: #555299; - color: #ffffff; - border-bottom: 0px solid transparent; -} -.skin-purple .main-header .logo:hover { - background-color: #545096; -} -.skin-purple .main-header li.user-header { - background-color: #605ca8; -} -.skin-purple .content-header { - background: transparent; -} -.skin-purple .wrapper, -.skin-purple .main-sidebar, -.skin-purple .left-side { - background-color: #222d32; -} -.skin-purple .user-panel > .info, -.skin-purple .user-panel > .info > a { - color: #fff; -} -.skin-purple .sidebar-menu > li.header { - color: #4b646f; - background: #1a2226; -} -.skin-purple .sidebar-menu > li > a { - border-left: 3px solid transparent; -} -.skin-purple .sidebar-menu > li:hover > a, -.skin-purple .sidebar-menu > li.active > a { - color: #ffffff; - background: #1e282c; - border-left-color: #605ca8; -} -.skin-purple .sidebar-menu > li > .treeview-menu { - margin: 0 1px; - background: #2c3b41; -} -.skin-purple .sidebar a { - color: #b8c7ce; -} -.skin-purple .sidebar a:hover { - text-decoration: none; -} -.skin-purple .treeview-menu > li > a { - color: #8aa4af; -} -.skin-purple .treeview-menu > li.active > a, -.skin-purple .treeview-menu > li > a:hover { - color: #ffffff; -} -.skin-purple .sidebar-form { - border-radius: 3px; - border: 1px solid #374850; - margin: 10px 10px; -} -.skin-purple .sidebar-form input[type="text"], -.skin-purple .sidebar-form .btn { - box-shadow: none; - background-color: #374850; - border: 1px solid transparent; - height: 35px; - -webkit-transition: all 0.3s ease-in-out; - -o-transition: all 0.3s ease-in-out; - transition: all 0.3s ease-in-out; -} -.skin-purple .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px !important; - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; - border-bottom-left-radius: 2px !important; -} -.skin-purple .sidebar-form input[type="text"]:focus, -.skin-purple .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-purple .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-purple .sidebar-form .btn { - color: #999; - border-top-left-radius: 0 !important; - border-top-right-radius: 2px !important; - border-bottom-right-radius: 2px !important; - border-bottom-left-radius: 0 !important; -} -/* - * Skin: Purple - * ------------ - */ -.skin-purple-light .main-header .navbar { - background-color: #605ca8; -} -.skin-purple-light .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-purple-light .main-header .navbar .nav > li > a:hover, -.skin-purple-light .main-header .navbar .nav > li > a:active, -.skin-purple-light .main-header .navbar .nav > li > a:focus, -.skin-purple-light .main-header .navbar .nav .open > a, -.skin-purple-light .main-header .navbar .nav .open > a:hover, -.skin-purple-light .main-header .navbar .nav .open > a:focus { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-purple-light .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-purple-light .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-purple-light .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-purple-light .main-header .navbar .sidebar-toggle:hover { - background-color: #555299; -} -@media (max-width: 767px) { - .skin-purple-light .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-purple-light .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-purple-light .main-header .navbar .dropdown-menu li a:hover { - background: #555299; - } -} -.skin-purple-light .main-header .logo { - background-color: #605ca8; - color: #ffffff; - border-bottom: 0px solid transparent; -} -.skin-purple-light .main-header .logo:hover { - background-color: #5d59a6; -} -.skin-purple-light .main-header li.user-header { - background-color: #605ca8; -} -.skin-purple-light .content-header { - background: transparent; -} -.skin-purple-light .wrapper, -.skin-purple-light .main-sidebar, -.skin-purple-light .left-side { - background-color: #f9fafc; -} -.skin-purple-light .content-wrapper, -.skin-purple-light .main-footer { - border-left: 1px solid #d2d6de; -} -.skin-purple-light .user-panel > .info, -.skin-purple-light .user-panel > .info > a { - color: #444444; -} -.skin-purple-light .sidebar-menu > li { - -webkit-transition: border-left-color 0.3s ease; - -o-transition: border-left-color 0.3s ease; - transition: border-left-color 0.3s ease; -} -.skin-purple-light .sidebar-menu > li.header { - color: #848484; - background: #f9fafc; -} -.skin-purple-light .sidebar-menu > li > a { - border-left: 3px solid transparent; - font-weight: 600; -} -.skin-purple-light .sidebar-menu > li:hover > a, -.skin-purple-light .sidebar-menu > li.active > a { - color: #000000; - background: #f4f4f5; -} -.skin-purple-light .sidebar-menu > li.active { - border-left-color: #605ca8; -} -.skin-purple-light .sidebar-menu > li.active > a { - font-weight: 600; -} -.skin-purple-light .sidebar-menu > li > .treeview-menu { - background: #f4f4f5; -} -.skin-purple-light .sidebar a { - color: #444444; -} -.skin-purple-light .sidebar a:hover { - text-decoration: none; -} -.skin-purple-light .treeview-menu > li > a { - color: #777777; -} -.skin-purple-light .treeview-menu > li.active > a, -.skin-purple-light .treeview-menu > li > a:hover { - color: #000000; -} -.skin-purple-light .treeview-menu > li.active > a { - font-weight: 600; -} -.skin-purple-light .sidebar-form { - border-radius: 3px; - border: 1px solid #d2d6de; - margin: 10px 10px; -} -.skin-purple-light .sidebar-form input[type="text"], -.skin-purple-light .sidebar-form .btn { - box-shadow: none; - background-color: #fff; - border: 1px solid transparent; - height: 35px; - -webkit-transition: all 0.3s ease-in-out; - -o-transition: all 0.3s ease-in-out; - transition: all 0.3s ease-in-out; -} -.skin-purple-light .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px !important; - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; - border-bottom-left-radius: 2px !important; -} -.skin-purple-light .sidebar-form input[type="text"]:focus, -.skin-purple-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-purple-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-purple-light .sidebar-form .btn { - color: #999; - border-top-left-radius: 0 !important; - border-top-right-radius: 2px !important; - border-bottom-right-radius: 2px !important; - border-bottom-left-radius: 0 !important; -} -@media (min-width: 768px) { - .skin-purple-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { - border-left: 1px solid #d2d6de; - } -} diff --git a/assets/dist/css/skins/_all-skins.min.css b/assets/dist/css/skins/_all-skins.min.css deleted file mode 100644 index b08086cb..00000000 --- a/assets/dist/css/skins/_all-skins.min.css +++ /dev/null @@ -1 +0,0 @@ -.skin-blue .main-header .navbar{background-color:#3c8dbc}.skin-blue .main-header .navbar .nav>li>a{color:#fff}.skin-blue .main-header .navbar .nav>li>a:hover,.skin-blue .main-header .navbar .nav>li>a:active,.skin-blue .main-header .navbar .nav>li>a:focus,.skin-blue .main-header .navbar .nav .open>a,.skin-blue .main-header .navbar .nav .open>a:hover,.skin-blue .main-header .navbar .nav .open>a:focus{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-blue .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-blue .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue .main-header .navbar .sidebar-toggle:hover{background-color:#367fa9}@media (max-width:767px){.skin-blue .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-blue .main-header .navbar .dropdown-menu li a{color:#fff}.skin-blue .main-header .navbar .dropdown-menu li a:hover{background:#367fa9}}.skin-blue .main-header .logo{background-color:#367fa9;color:#fff;border-bottom:0 solid transparent}.skin-blue .main-header .logo:hover{background-color:#357ca5}.skin-blue .main-header li.user-header{background-color:#3c8dbc}.skin-blue .content-header{background:transparent}.skin-blue .wrapper,.skin-blue .main-sidebar,.skin-blue .left-side{background-color:#222d32}.skin-blue .user-panel>.info,.skin-blue .user-panel>.info>a{color:#fff}.skin-blue .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-blue .sidebar-menu>li>a{border-left:3px solid transparent}.skin-blue .sidebar-menu>li:hover>a,.skin-blue .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#3c8dbc}.skin-blue .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-blue .sidebar a{color:#b8c7ce}.skin-blue .sidebar a:hover{text-decoration:none}.skin-blue .treeview-menu>li>a{color:#8aa4af}.skin-blue .treeview-menu>li.active>a,.skin-blue .treeview-menu>li>a:hover{color:#fff}.skin-blue .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-blue .sidebar-form input[type="text"],.skin-blue .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-blue .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important;border-bottom-left-radius:2px !important}.skin-blue .sidebar-form input[type="text"]:focus,.skin-blue .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-blue .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-blue .sidebar-form .btn{color:#999;border-top-left-radius:0 !important;border-top-right-radius:2px !important;border-bottom-right-radius:2px !important;border-bottom-left-radius:0 !important}.skin-blue.layout-top-nav .main-header>.logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue.layout-top-nav .main-header>.logo:hover{background-color:#3b8ab8}.skin-blue-light .main-header .navbar{background-color:#3c8dbc}.skin-blue-light .main-header .navbar .nav>li>a{color:#fff}.skin-blue-light .main-header .navbar .nav>li>a:hover,.skin-blue-light .main-header .navbar .nav>li>a:active,.skin-blue-light .main-header .navbar .nav>li>a:focus,.skin-blue-light .main-header .navbar .nav .open>a,.skin-blue-light .main-header .navbar .nav .open>a:hover,.skin-blue-light .main-header .navbar .nav .open>a:focus{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-blue-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-blue-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue-light .main-header .navbar .sidebar-toggle:hover{background-color:#367fa9}@media (max-width:767px){.skin-blue-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-blue-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-blue-light .main-header .navbar .dropdown-menu li a:hover{background:#367fa9}}.skin-blue-light .main-header .logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue-light .main-header .logo:hover{background-color:#3b8ab8}.skin-blue-light .main-header li.user-header{background-color:#3c8dbc}.skin-blue-light .content-header{background:transparent}.skin-blue-light .wrapper,.skin-blue-light .main-sidebar,.skin-blue-light .left-side{background-color:#f9fafc}.skin-blue-light .content-wrapper,.skin-blue-light .main-footer{border-left:1px solid #d2d6de}.skin-blue-light .user-panel>.info,.skin-blue-light .user-panel>.info>a{color:#444}.skin-blue-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-blue-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-blue-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-blue-light .sidebar-menu>li:hover>a,.skin-blue-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-blue-light .sidebar-menu>li.active{border-left-color:#3c8dbc}.skin-blue-light .sidebar-menu>li.active>a{font-weight:600}.skin-blue-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-blue-light .sidebar a{color:#444}.skin-blue-light .sidebar a:hover{text-decoration:none}.skin-blue-light .treeview-menu>li>a{color:#777}.skin-blue-light .treeview-menu>li.active>a,.skin-blue-light .treeview-menu>li>a:hover{color:#000}.skin-blue-light .treeview-menu>li.active>a{font-weight:600}.skin-blue-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-blue-light .sidebar-form input[type="text"],.skin-blue-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-blue-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important;border-bottom-left-radius:2px !important}.skin-blue-light .sidebar-form input[type="text"]:focus,.skin-blue-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-blue-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-blue-light .sidebar-form .btn{color:#999;border-top-left-radius:0 !important;border-top-right-radius:2px !important;border-bottom-right-radius:2px !important;border-bottom-left-radius:0 !important}@media (min-width:768px){.skin-blue-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}.skin-blue-light .main-footer{border-top-color:#d2d6de}.skin-blue.layout-top-nav .main-header>.logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue.layout-top-nav .main-header>.logo:hover{background-color:#3b8ab8}.skin-black .main-header{-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.skin-black .main-header .navbar-toggle{color:#333}.skin-black .main-header .navbar-brand{color:#333;border-right:1px solid #eee}.skin-black .main-header>.navbar{background-color:#fff}.skin-black .main-header>.navbar .nav>li>a{color:#333}.skin-black .main-header>.navbar .nav>li>a:hover,.skin-black .main-header>.navbar .nav>li>a:active,.skin-black .main-header>.navbar .nav>li>a:focus,.skin-black .main-header>.navbar .nav .open>a,.skin-black .main-header>.navbar .nav .open>a:hover,.skin-black .main-header>.navbar .nav .open>a:focus{background:#fff;color:#999}.skin-black .main-header>.navbar .sidebar-toggle{color:#333}.skin-black .main-header>.navbar .sidebar-toggle:hover{color:#999;background:#fff}.skin-black .main-header>.navbar>.sidebar-toggle{color:#333;border-right:1px solid #eee}.skin-black .main-header>.navbar .navbar-nav>li>a{border-right:1px solid #eee}.skin-black .main-header>.navbar .navbar-custom-menu .navbar-nav>li>a,.skin-black .main-header>.navbar .navbar-right>li>a{border-left:1px solid #eee;border-right-width:0}.skin-black .main-header>.logo{background-color:#fff;color:#333;border-bottom:0 solid transparent;border-right:1px solid #eee}.skin-black .main-header>.logo:hover{background-color:#fcfcfc}@media (max-width:767px){.skin-black .main-header>.logo{background-color:#222;color:#fff;border-bottom:0 solid transparent;border-right:none}.skin-black .main-header>.logo:hover{background-color:#1f1f1f}}.skin-black .main-header li.user-header{background-color:#222}.skin-black .content-header{background:transparent;box-shadow:none}.skin-black .wrapper,.skin-black .main-sidebar,.skin-black .left-side{background-color:#222d32}.skin-black .user-panel>.info,.skin-black .user-panel>.info>a{color:#fff}.skin-black .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-black .sidebar-menu>li>a{border-left:3px solid transparent}.skin-black .sidebar-menu>li:hover>a,.skin-black .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#fff}.skin-black .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-black .sidebar a{color:#b8c7ce}.skin-black .sidebar a:hover{text-decoration:none}.skin-black .treeview-menu>li>a{color:#8aa4af}.skin-black .treeview-menu>li.active>a,.skin-black .treeview-menu>li>a:hover{color:#fff}.skin-black .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-black .sidebar-form input[type="text"],.skin-black .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-black .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important;border-bottom-left-radius:2px !important}.skin-black .sidebar-form input[type="text"]:focus,.skin-black .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-black .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-black .sidebar-form .btn{color:#999;border-top-left-radius:0 !important;border-top-right-radius:2px !important;border-bottom-right-radius:2px !important;border-bottom-left-radius:0 !important}.skin-black-light .main-header{-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.skin-black-light .main-header .navbar-toggle{color:#333}.skin-black-light .main-header .navbar-brand{color:#333;border-right:1px solid #eee}.skin-black-light .main-header>.navbar{background-color:#fff}.skin-black-light .main-header>.navbar .nav>li>a{color:#333}.skin-black-light .main-header>.navbar .nav>li>a:hover,.skin-black-light .main-header>.navbar .nav>li>a:active,.skin-black-light .main-header>.navbar .nav>li>a:focus,.skin-black-light .main-header>.navbar .nav .open>a,.skin-black-light .main-header>.navbar .nav .open>a:hover,.skin-black-light .main-header>.navbar .nav .open>a:focus{background:#fff;color:#999}.skin-black-light .main-header>.navbar .sidebar-toggle{color:#333}.skin-black-light .main-header>.navbar .sidebar-toggle:hover{color:#999;background:#fff}.skin-black-light .main-header>.navbar>.sidebar-toggle{color:#333;border-right:1px solid #eee}.skin-black-light .main-header>.navbar .navbar-nav>li>a{border-right:1px solid #eee}.skin-black-light .main-header>.navbar .navbar-custom-menu .navbar-nav>li>a,.skin-black-light .main-header>.navbar .navbar-right>li>a{border-left:1px solid #eee;border-right-width:0}.skin-black-light .main-header>.logo{background-color:#fff;color:#333;border-bottom:0 solid transparent;border-right:1px solid #eee}.skin-black-light .main-header>.logo:hover{background-color:#fcfcfc}@media (max-width:767px){.skin-black-light .main-header>.logo{background-color:#222;color:#fff;border-bottom:0 solid transparent;border-right:none}.skin-black-light .main-header>.logo:hover{background-color:#1f1f1f}}.skin-black-light .main-header li.user-header{background-color:#222}.skin-black-light .content-header{background:transparent;box-shadow:none}.skin-black-light .wrapper,.skin-black-light .main-sidebar,.skin-black-light .left-side{background-color:#f9fafc}.skin-black-light .content-wrapper,.skin-black-light .main-footer{border-left:1px solid #d2d6de}.skin-black-light .user-panel>.info,.skin-black-light .user-panel>.info>a{color:#444}.skin-black-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-black-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-black-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-black-light .sidebar-menu>li:hover>a,.skin-black-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-black-light .sidebar-menu>li.active{border-left-color:#fff}.skin-black-light .sidebar-menu>li.active>a{font-weight:600}.skin-black-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-black-light .sidebar a{color:#444}.skin-black-light .sidebar a:hover{text-decoration:none}.skin-black-light .treeview-menu>li>a{color:#777}.skin-black-light .treeview-menu>li.active>a,.skin-black-light .treeview-menu>li>a:hover{color:#000}.skin-black-light .treeview-menu>li.active>a{font-weight:600}.skin-black-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-black-light .sidebar-form input[type="text"],.skin-black-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-black-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important;border-bottom-left-radius:2px !important}.skin-black-light .sidebar-form input[type="text"]:focus,.skin-black-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-black-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-black-light .sidebar-form .btn{color:#999;border-top-left-radius:0 !important;border-top-right-radius:2px !important;border-bottom-right-radius:2px !important;border-bottom-left-radius:0 !important}@media (min-width:768px){.skin-black-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}.skin-green .main-header .navbar{background-color:#00a65a}.skin-green .main-header .navbar .nav>li>a{color:#fff}.skin-green .main-header .navbar .nav>li>a:hover,.skin-green .main-header .navbar .nav>li>a:active,.skin-green .main-header .navbar .nav>li>a:focus,.skin-green .main-header .navbar .nav .open>a,.skin-green .main-header .navbar .nav .open>a:hover,.skin-green .main-header .navbar .nav .open>a:focus{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-green .main-header .navbar .sidebar-toggle{color:#fff}.skin-green .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-green .main-header .navbar .sidebar-toggle{color:#fff}.skin-green .main-header .navbar .sidebar-toggle:hover{background-color:#008d4c}@media (max-width:767px){.skin-green .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-green .main-header .navbar .dropdown-menu li a{color:#fff}.skin-green .main-header .navbar .dropdown-menu li a:hover{background:#008d4c}}.skin-green .main-header .logo{background-color:#008d4c;color:#fff;border-bottom:0 solid transparent}.skin-green .main-header .logo:hover{background-color:#008749}.skin-green .main-header li.user-header{background-color:#00a65a}.skin-green .content-header{background:transparent}.skin-green .wrapper,.skin-green .main-sidebar,.skin-green .left-side{background-color:#222d32}.skin-green .user-panel>.info,.skin-green .user-panel>.info>a{color:#fff}.skin-green .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-green .sidebar-menu>li>a{border-left:3px solid transparent}.skin-green .sidebar-menu>li:hover>a,.skin-green .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#00a65a}.skin-green .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-green .sidebar a{color:#b8c7ce}.skin-green .sidebar a:hover{text-decoration:none}.skin-green .treeview-menu>li>a{color:#8aa4af}.skin-green .treeview-menu>li.active>a,.skin-green .treeview-menu>li>a:hover{color:#fff}.skin-green .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-green .sidebar-form input[type="text"],.skin-green .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-green .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important;border-bottom-left-radius:2px !important}.skin-green .sidebar-form input[type="text"]:focus,.skin-green .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-green .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-green .sidebar-form .btn{color:#999;border-top-left-radius:0 !important;border-top-right-radius:2px !important;border-bottom-right-radius:2px !important;border-bottom-left-radius:0 !important}.skin-green-light .main-header .navbar{background-color:#00a65a}.skin-green-light .main-header .navbar .nav>li>a{color:#fff}.skin-green-light .main-header .navbar .nav>li>a:hover,.skin-green-light .main-header .navbar .nav>li>a:active,.skin-green-light .main-header .navbar .nav>li>a:focus,.skin-green-light .main-header .navbar .nav .open>a,.skin-green-light .main-header .navbar .nav .open>a:hover,.skin-green-light .main-header .navbar .nav .open>a:focus{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-green-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-green-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-green-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-green-light .main-header .navbar .sidebar-toggle:hover{background-color:#008d4c}@media (max-width:767px){.skin-green-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-green-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-green-light .main-header .navbar .dropdown-menu li a:hover{background:#008d4c}}.skin-green-light .main-header .logo{background-color:#00a65a;color:#fff;border-bottom:0 solid transparent}.skin-green-light .main-header .logo:hover{background-color:#00a157}.skin-green-light .main-header li.user-header{background-color:#00a65a}.skin-green-light .content-header{background:transparent}.skin-green-light .wrapper,.skin-green-light .main-sidebar,.skin-green-light .left-side{background-color:#f9fafc}.skin-green-light .content-wrapper,.skin-green-light .main-footer{border-left:1px solid #d2d6de}.skin-green-light .user-panel>.info,.skin-green-light .user-panel>.info>a{color:#444}.skin-green-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-green-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-green-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-green-light .sidebar-menu>li:hover>a,.skin-green-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-green-light .sidebar-menu>li.active{border-left-color:#00a65a}.skin-green-light .sidebar-menu>li.active>a{font-weight:600}.skin-green-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-green-light .sidebar a{color:#444}.skin-green-light .sidebar a:hover{text-decoration:none}.skin-green-light .treeview-menu>li>a{color:#777}.skin-green-light .treeview-menu>li.active>a,.skin-green-light .treeview-menu>li>a:hover{color:#000}.skin-green-light .treeview-menu>li.active>a{font-weight:600}.skin-green-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-green-light .sidebar-form input[type="text"],.skin-green-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-green-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important;border-bottom-left-radius:2px !important}.skin-green-light .sidebar-form input[type="text"]:focus,.skin-green-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-green-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-green-light .sidebar-form .btn{color:#999;border-top-left-radius:0 !important;border-top-right-radius:2px !important;border-bottom-right-radius:2px !important;border-bottom-left-radius:0 !important}@media (min-width:768px){.skin-green-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}.skin-red .main-header .navbar{background-color:#dd4b39}.skin-red .main-header .navbar .nav>li>a{color:#fff}.skin-red .main-header .navbar .nav>li>a:hover,.skin-red .main-header .navbar .nav>li>a:active,.skin-red .main-header .navbar .nav>li>a:focus,.skin-red .main-header .navbar .nav .open>a,.skin-red .main-header .navbar .nav .open>a:hover,.skin-red .main-header .navbar .nav .open>a:focus{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-red .main-header .navbar .sidebar-toggle{color:#fff}.skin-red .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-red .main-header .navbar .sidebar-toggle{color:#fff}.skin-red .main-header .navbar .sidebar-toggle:hover{background-color:#d73925}@media (max-width:767px){.skin-red .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-red .main-header .navbar .dropdown-menu li a{color:#fff}.skin-red .main-header .navbar .dropdown-menu li a:hover{background:#d73925}}.skin-red .main-header .logo{background-color:#d73925;color:#fff;border-bottom:0 solid transparent}.skin-red .main-header .logo:hover{background-color:#d33724}.skin-red .main-header li.user-header{background-color:#dd4b39}.skin-red .content-header{background:transparent}.skin-red .wrapper,.skin-red .main-sidebar,.skin-red .left-side{background-color:#222d32}.skin-red .user-panel>.info,.skin-red .user-panel>.info>a{color:#fff}.skin-red .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-red .sidebar-menu>li>a{border-left:3px solid transparent}.skin-red .sidebar-menu>li:hover>a,.skin-red .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#dd4b39}.skin-red .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-red .sidebar a{color:#b8c7ce}.skin-red .sidebar a:hover{text-decoration:none}.skin-red .treeview-menu>li>a{color:#8aa4af}.skin-red .treeview-menu>li.active>a,.skin-red .treeview-menu>li>a:hover{color:#fff}.skin-red .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-red .sidebar-form input[type="text"],.skin-red .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-red .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important;border-bottom-left-radius:2px !important}.skin-red .sidebar-form input[type="text"]:focus,.skin-red .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-red .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-red .sidebar-form .btn{color:#999;border-top-left-radius:0 !important;border-top-right-radius:2px !important;border-bottom-right-radius:2px !important;border-bottom-left-radius:0 !important}.skin-red-light .main-header .navbar{background-color:#dd4b39}.skin-red-light .main-header .navbar .nav>li>a{color:#fff}.skin-red-light .main-header .navbar .nav>li>a:hover,.skin-red-light .main-header .navbar .nav>li>a:active,.skin-red-light .main-header .navbar .nav>li>a:focus,.skin-red-light .main-header .navbar .nav .open>a,.skin-red-light .main-header .navbar .nav .open>a:hover,.skin-red-light .main-header .navbar .nav .open>a:focus{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-red-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-red-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-red-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-red-light .main-header .navbar .sidebar-toggle:hover{background-color:#d73925}@media (max-width:767px){.skin-red-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-red-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-red-light .main-header .navbar .dropdown-menu li a:hover{background:#d73925}}.skin-red-light .main-header .logo{background-color:#dd4b39;color:#fff;border-bottom:0 solid transparent}.skin-red-light .main-header .logo:hover{background-color:#dc4735}.skin-red-light .main-header li.user-header{background-color:#dd4b39}.skin-red-light .content-header{background:transparent}.skin-red-light .wrapper,.skin-red-light .main-sidebar,.skin-red-light .left-side{background-color:#f9fafc}.skin-red-light .content-wrapper,.skin-red-light .main-footer{border-left:1px solid #d2d6de}.skin-red-light .user-panel>.info,.skin-red-light .user-panel>.info>a{color:#444}.skin-red-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-red-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-red-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-red-light .sidebar-menu>li:hover>a,.skin-red-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-red-light .sidebar-menu>li.active{border-left-color:#dd4b39}.skin-red-light .sidebar-menu>li.active>a{font-weight:600}.skin-red-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-red-light .sidebar a{color:#444}.skin-red-light .sidebar a:hover{text-decoration:none}.skin-red-light .treeview-menu>li>a{color:#777}.skin-red-light .treeview-menu>li.active>a,.skin-red-light .treeview-menu>li>a:hover{color:#000}.skin-red-light .treeview-menu>li.active>a{font-weight:600}.skin-red-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-red-light .sidebar-form input[type="text"],.skin-red-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-red-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important;border-bottom-left-radius:2px !important}.skin-red-light .sidebar-form input[type="text"]:focus,.skin-red-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-red-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-red-light .sidebar-form .btn{color:#999;border-top-left-radius:0 !important;border-top-right-radius:2px !important;border-bottom-right-radius:2px !important;border-bottom-left-radius:0 !important}@media (min-width:768px){.skin-red-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}.skin-yellow .main-header .navbar{background-color:#f39c12}.skin-yellow .main-header .navbar .nav>li>a{color:#fff}.skin-yellow .main-header .navbar .nav>li>a:hover,.skin-yellow .main-header .navbar .nav>li>a:active,.skin-yellow .main-header .navbar .nav>li>a:focus,.skin-yellow .main-header .navbar .nav .open>a,.skin-yellow .main-header .navbar .nav .open>a:hover,.skin-yellow .main-header .navbar .nav .open>a:focus{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-yellow .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-yellow .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow .main-header .navbar .sidebar-toggle:hover{background-color:#e08e0b}@media (max-width:767px){.skin-yellow .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-yellow .main-header .navbar .dropdown-menu li a{color:#fff}.skin-yellow .main-header .navbar .dropdown-menu li a:hover{background:#e08e0b}}.skin-yellow .main-header .logo{background-color:#e08e0b;color:#fff;border-bottom:0 solid transparent}.skin-yellow .main-header .logo:hover{background-color:#db8b0b}.skin-yellow .main-header li.user-header{background-color:#f39c12}.skin-yellow .content-header{background:transparent}.skin-yellow .wrapper,.skin-yellow .main-sidebar,.skin-yellow .left-side{background-color:#222d32}.skin-yellow .user-panel>.info,.skin-yellow .user-panel>.info>a{color:#fff}.skin-yellow .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-yellow .sidebar-menu>li>a{border-left:3px solid transparent}.skin-yellow .sidebar-menu>li:hover>a,.skin-yellow .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#f39c12}.skin-yellow .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-yellow .sidebar a{color:#b8c7ce}.skin-yellow .sidebar a:hover{text-decoration:none}.skin-yellow .treeview-menu>li>a{color:#8aa4af}.skin-yellow .treeview-menu>li.active>a,.skin-yellow .treeview-menu>li>a:hover{color:#fff}.skin-yellow .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-yellow .sidebar-form input[type="text"],.skin-yellow .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-yellow .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important;border-bottom-left-radius:2px !important}.skin-yellow .sidebar-form input[type="text"]:focus,.skin-yellow .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-yellow .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-yellow .sidebar-form .btn{color:#999;border-top-left-radius:0 !important;border-top-right-radius:2px !important;border-bottom-right-radius:2px !important;border-bottom-left-radius:0 !important}.skin-yellow-light .main-header .navbar{background-color:#f39c12}.skin-yellow-light .main-header .navbar .nav>li>a{color:#fff}.skin-yellow-light .main-header .navbar .nav>li>a:hover,.skin-yellow-light .main-header .navbar .nav>li>a:active,.skin-yellow-light .main-header .navbar .nav>li>a:focus,.skin-yellow-light .main-header .navbar .nav .open>a,.skin-yellow-light .main-header .navbar .nav .open>a:hover,.skin-yellow-light .main-header .navbar .nav .open>a:focus{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-yellow-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-yellow-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow-light .main-header .navbar .sidebar-toggle:hover{background-color:#e08e0b}@media (max-width:767px){.skin-yellow-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-yellow-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-yellow-light .main-header .navbar .dropdown-menu li a:hover{background:#e08e0b}}.skin-yellow-light .main-header .logo{background-color:#f39c12;color:#fff;border-bottom:0 solid transparent}.skin-yellow-light .main-header .logo:hover{background-color:#f39a0d}.skin-yellow-light .main-header li.user-header{background-color:#f39c12}.skin-yellow-light .content-header{background:transparent}.skin-yellow-light .wrapper,.skin-yellow-light .main-sidebar,.skin-yellow-light .left-side{background-color:#f9fafc}.skin-yellow-light .content-wrapper,.skin-yellow-light .main-footer{border-left:1px solid #d2d6de}.skin-yellow-light .user-panel>.info,.skin-yellow-light .user-panel>.info>a{color:#444}.skin-yellow-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-yellow-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-yellow-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-yellow-light .sidebar-menu>li:hover>a,.skin-yellow-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-yellow-light .sidebar-menu>li.active{border-left-color:#f39c12}.skin-yellow-light .sidebar-menu>li.active>a{font-weight:600}.skin-yellow-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-yellow-light .sidebar a{color:#444}.skin-yellow-light .sidebar a:hover{text-decoration:none}.skin-yellow-light .treeview-menu>li>a{color:#777}.skin-yellow-light .treeview-menu>li.active>a,.skin-yellow-light .treeview-menu>li>a:hover{color:#000}.skin-yellow-light .treeview-menu>li.active>a{font-weight:600}.skin-yellow-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-yellow-light .sidebar-form input[type="text"],.skin-yellow-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-yellow-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important;border-bottom-left-radius:2px !important}.skin-yellow-light .sidebar-form input[type="text"]:focus,.skin-yellow-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-yellow-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-yellow-light .sidebar-form .btn{color:#999;border-top-left-radius:0 !important;border-top-right-radius:2px !important;border-bottom-right-radius:2px !important;border-bottom-left-radius:0 !important}@media (min-width:768px){.skin-yellow-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}.skin-purple .main-header .navbar{background-color:#605ca8}.skin-purple .main-header .navbar .nav>li>a{color:#fff}.skin-purple .main-header .navbar .nav>li>a:hover,.skin-purple .main-header .navbar .nav>li>a:active,.skin-purple .main-header .navbar .nav>li>a:focus,.skin-purple .main-header .navbar .nav .open>a,.skin-purple .main-header .navbar .nav .open>a:hover,.skin-purple .main-header .navbar .nav .open>a:focus{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-purple .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-purple .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple .main-header .navbar .sidebar-toggle:hover{background-color:#555299}@media (max-width:767px){.skin-purple .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-purple .main-header .navbar .dropdown-menu li a{color:#fff}.skin-purple .main-header .navbar .dropdown-menu li a:hover{background:#555299}}.skin-purple .main-header .logo{background-color:#555299;color:#fff;border-bottom:0 solid transparent}.skin-purple .main-header .logo:hover{background-color:#545096}.skin-purple .main-header li.user-header{background-color:#605ca8}.skin-purple .content-header{background:transparent}.skin-purple .wrapper,.skin-purple .main-sidebar,.skin-purple .left-side{background-color:#222d32}.skin-purple .user-panel>.info,.skin-purple .user-panel>.info>a{color:#fff}.skin-purple .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-purple .sidebar-menu>li>a{border-left:3px solid transparent}.skin-purple .sidebar-menu>li:hover>a,.skin-purple .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#605ca8}.skin-purple .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-purple .sidebar a{color:#b8c7ce}.skin-purple .sidebar a:hover{text-decoration:none}.skin-purple .treeview-menu>li>a{color:#8aa4af}.skin-purple .treeview-menu>li.active>a,.skin-purple .treeview-menu>li>a:hover{color:#fff}.skin-purple .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-purple .sidebar-form input[type="text"],.skin-purple .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-purple .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important;border-bottom-left-radius:2px !important}.skin-purple .sidebar-form input[type="text"]:focus,.skin-purple .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-purple .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-purple .sidebar-form .btn{color:#999;border-top-left-radius:0 !important;border-top-right-radius:2px !important;border-bottom-right-radius:2px !important;border-bottom-left-radius:0 !important}.skin-purple-light .main-header .navbar{background-color:#605ca8}.skin-purple-light .main-header .navbar .nav>li>a{color:#fff}.skin-purple-light .main-header .navbar .nav>li>a:hover,.skin-purple-light .main-header .navbar .nav>li>a:active,.skin-purple-light .main-header .navbar .nav>li>a:focus,.skin-purple-light .main-header .navbar .nav .open>a,.skin-purple-light .main-header .navbar .nav .open>a:hover,.skin-purple-light .main-header .navbar .nav .open>a:focus{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-purple-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-purple-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple-light .main-header .navbar .sidebar-toggle:hover{background-color:#555299}@media (max-width:767px){.skin-purple-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-purple-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-purple-light .main-header .navbar .dropdown-menu li a:hover{background:#555299}}.skin-purple-light .main-header .logo{background-color:#605ca8;color:#fff;border-bottom:0 solid transparent}.skin-purple-light .main-header .logo:hover{background-color:#5d59a6}.skin-purple-light .main-header li.user-header{background-color:#605ca8}.skin-purple-light .content-header{background:transparent}.skin-purple-light .wrapper,.skin-purple-light .main-sidebar,.skin-purple-light .left-side{background-color:#f9fafc}.skin-purple-light .content-wrapper,.skin-purple-light .main-footer{border-left:1px solid #d2d6de}.skin-purple-light .user-panel>.info,.skin-purple-light .user-panel>.info>a{color:#444}.skin-purple-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-purple-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-purple-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-purple-light .sidebar-menu>li:hover>a,.skin-purple-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-purple-light .sidebar-menu>li.active{border-left-color:#605ca8}.skin-purple-light .sidebar-menu>li.active>a{font-weight:600}.skin-purple-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-purple-light .sidebar a{color:#444}.skin-purple-light .sidebar a:hover{text-decoration:none}.skin-purple-light .treeview-menu>li>a{color:#777}.skin-purple-light .treeview-menu>li.active>a,.skin-purple-light .treeview-menu>li>a:hover{color:#000}.skin-purple-light .treeview-menu>li.active>a{font-weight:600}.skin-purple-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-purple-light .sidebar-form input[type="text"],.skin-purple-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-purple-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important;border-bottom-left-radius:2px !important}.skin-purple-light .sidebar-form input[type="text"]:focus,.skin-purple-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-purple-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-purple-light .sidebar-form .btn{color:#999;border-top-left-radius:0 !important;border-top-right-radius:2px !important;border-bottom-right-radius:2px !important;border-bottom-left-radius:0 !important}@media (min-width:768px){.skin-purple-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}} \ No newline at end of file diff --git a/assets/dist/css/skins/skin-black-light.css b/assets/dist/css/skins/skin-black-light.css deleted file mode 100644 index e0b6e62f..00000000 --- a/assets/dist/css/skins/skin-black-light.css +++ /dev/null @@ -1,175 +0,0 @@ -/* - * Skin: Black - * ----------- - */ -/* skin-black navbar */ -.skin-black-light .main-header { - -webkit-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05); -} -.skin-black-light .main-header .navbar-toggle { - color: #333; -} -.skin-black-light .main-header .navbar-brand { - color: #333; - border-right: 1px solid #eee; -} -.skin-black-light .main-header > .navbar { - background-color: #ffffff; -} -.skin-black-light .main-header > .navbar .nav > li > a { - color: #333333; -} -.skin-black-light .main-header > .navbar .nav > li > a:hover, -.skin-black-light .main-header > .navbar .nav > li > a:active, -.skin-black-light .main-header > .navbar .nav > li > a:focus, -.skin-black-light .main-header > .navbar .nav .open > a, -.skin-black-light .main-header > .navbar .nav .open > a:hover, -.skin-black-light .main-header > .navbar .nav .open > a:focus { - background: #ffffff; - color: #999999; -} -.skin-black-light .main-header > .navbar .sidebar-toggle { - color: #333333; -} -.skin-black-light .main-header > .navbar .sidebar-toggle:hover { - color: #999999; - background: #ffffff; -} -.skin-black-light .main-header > .navbar > .sidebar-toggle { - color: #333; - border-right: 1px solid #eee; -} -.skin-black-light .main-header > .navbar .navbar-nav > li > a { - border-right: 1px solid #eee; -} -.skin-black-light .main-header > .navbar .navbar-custom-menu .navbar-nav > li > a, -.skin-black-light .main-header > .navbar .navbar-right > li > a { - border-left: 1px solid #eee; - border-right-width: 0; -} -.skin-black-light .main-header > .logo { - background-color: #ffffff; - color: #333333; - border-bottom: 0px solid transparent; - border-right: 1px solid #eee; -} -.skin-black-light .main-header > .logo:hover { - background-color: #fcfcfc; -} -@media (max-width: 767px) { - .skin-black-light .main-header > .logo { - background-color: #222222; - color: #ffffff; - border-bottom: 0px solid transparent; - border-right: none; - } - .skin-black-light .main-header > .logo:hover { - background-color: #1f1f1f; - } -} -.skin-black-light .main-header li.user-header { - background-color: #222; -} -.skin-black-light .content-header { - background: transparent; - box-shadow: none; -} -.skin-black-light .wrapper, -.skin-black-light .main-sidebar, -.skin-black-light .left-side { - background-color: #f9fafc; -} -.skin-black-light .content-wrapper, -.skin-black-light .main-footer { - border-left: 1px solid #d2d6de; -} -.skin-black-light .user-panel > .info, -.skin-black-light .user-panel > .info > a { - color: #444444; -} -.skin-black-light .sidebar-menu > li { - -webkit-transition: border-left-color 0.3s ease; - -o-transition: border-left-color 0.3s ease; - transition: border-left-color 0.3s ease; -} -.skin-black-light .sidebar-menu > li.header { - color: #848484; - background: #f9fafc; -} -.skin-black-light .sidebar-menu > li > a { - border-left: 3px solid transparent; - font-weight: 600; -} -.skin-black-light .sidebar-menu > li:hover > a, -.skin-black-light .sidebar-menu > li.active > a { - color: #000000; - background: #f4f4f5; -} -.skin-black-light .sidebar-menu > li.active { - border-left-color: #ffffff; -} -.skin-black-light .sidebar-menu > li.active > a { - font-weight: 600; -} -.skin-black-light .sidebar-menu > li > .treeview-menu { - background: #f4f4f5; -} -.skin-black-light .sidebar a { - color: #444444; -} -.skin-black-light .sidebar a:hover { - text-decoration: none; -} -.skin-black-light .treeview-menu > li > a { - color: #777777; -} -.skin-black-light .treeview-menu > li.active > a, -.skin-black-light .treeview-menu > li > a:hover { - color: #000000; -} -.skin-black-light .treeview-menu > li.active > a { - font-weight: 600; -} -.skin-black-light .sidebar-form { - border-radius: 3px; - border: 1px solid #d2d6de; - margin: 10px 10px; -} -.skin-black-light .sidebar-form input[type="text"], -.skin-black-light .sidebar-form .btn { - box-shadow: none; - background-color: #fff; - border: 1px solid transparent; - height: 35px; - -webkit-transition: all 0.3s ease-in-out; - -o-transition: all 0.3s ease-in-out; - transition: all 0.3s ease-in-out; -} -.skin-black-light .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px !important; - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; - border-bottom-left-radius: 2px !important; -} -.skin-black-light .sidebar-form input[type="text"]:focus, -.skin-black-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-black-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-black-light .sidebar-form .btn { - color: #999; - border-top-left-radius: 0 !important; - border-top-right-radius: 2px !important; - border-bottom-right-radius: 2px !important; - border-bottom-left-radius: 0 !important; -} -@media (min-width: 768px) { - .skin-black-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { - border-left: 1px solid #d2d6de; - } -} diff --git a/assets/dist/css/skins/skin-black-light.min.css b/assets/dist/css/skins/skin-black-light.min.css deleted file mode 100644 index 179355de..00000000 --- a/assets/dist/css/skins/skin-black-light.min.css +++ /dev/null @@ -1 +0,0 @@ -.skin-black-light .main-header{-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.skin-black-light .main-header .navbar-toggle{color:#333}.skin-black-light .main-header .navbar-brand{color:#333;border-right:1px solid #eee}.skin-black-light .main-header>.navbar{background-color:#fff}.skin-black-light .main-header>.navbar .nav>li>a{color:#333}.skin-black-light .main-header>.navbar .nav>li>a:hover,.skin-black-light .main-header>.navbar .nav>li>a:active,.skin-black-light .main-header>.navbar .nav>li>a:focus,.skin-black-light .main-header>.navbar .nav .open>a,.skin-black-light .main-header>.navbar .nav .open>a:hover,.skin-black-light .main-header>.navbar .nav .open>a:focus{background:#fff;color:#999}.skin-black-light .main-header>.navbar .sidebar-toggle{color:#333}.skin-black-light .main-header>.navbar .sidebar-toggle:hover{color:#999;background:#fff}.skin-black-light .main-header>.navbar>.sidebar-toggle{color:#333;border-right:1px solid #eee}.skin-black-light .main-header>.navbar .navbar-nav>li>a{border-right:1px solid #eee}.skin-black-light .main-header>.navbar .navbar-custom-menu .navbar-nav>li>a,.skin-black-light .main-header>.navbar .navbar-right>li>a{border-left:1px solid #eee;border-right-width:0}.skin-black-light .main-header>.logo{background-color:#fff;color:#333;border-bottom:0 solid transparent;border-right:1px solid #eee}.skin-black-light .main-header>.logo:hover{background-color:#fcfcfc}@media (max-width:767px){.skin-black-light .main-header>.logo{background-color:#222;color:#fff;border-bottom:0 solid transparent;border-right:none}.skin-black-light .main-header>.logo:hover{background-color:#1f1f1f}}.skin-black-light .main-header li.user-header{background-color:#222}.skin-black-light .content-header{background:transparent;box-shadow:none}.skin-black-light .wrapper,.skin-black-light .main-sidebar,.skin-black-light .left-side{background-color:#f9fafc}.skin-black-light .content-wrapper,.skin-black-light .main-footer{border-left:1px solid #d2d6de}.skin-black-light .user-panel>.info,.skin-black-light .user-panel>.info>a{color:#444}.skin-black-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-black-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-black-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-black-light .sidebar-menu>li:hover>a,.skin-black-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-black-light .sidebar-menu>li.active{border-left-color:#fff}.skin-black-light .sidebar-menu>li.active>a{font-weight:600}.skin-black-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-black-light .sidebar a{color:#444}.skin-black-light .sidebar a:hover{text-decoration:none}.skin-black-light .treeview-menu>li>a{color:#777}.skin-black-light .treeview-menu>li.active>a,.skin-black-light .treeview-menu>li>a:hover{color:#000}.skin-black-light .treeview-menu>li.active>a{font-weight:600}.skin-black-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-black-light .sidebar-form input[type="text"],.skin-black-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-black-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important;border-bottom-left-radius:2px !important}.skin-black-light .sidebar-form input[type="text"]:focus,.skin-black-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-black-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-black-light .sidebar-form .btn{color:#999;border-top-left-radius:0 !important;border-top-right-radius:2px !important;border-bottom-right-radius:2px !important;border-bottom-left-radius:0 !important}@media (min-width:768px){.skin-black-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}} \ No newline at end of file diff --git a/assets/dist/css/skins/skin-black.css b/assets/dist/css/skins/skin-black.css deleted file mode 100644 index 721f9acf..00000000 --- a/assets/dist/css/skins/skin-black.css +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Skin: Black - * ----------- - */ -/* skin-black navbar */ -.skin-black .main-header { - -webkit-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05); -} -.skin-black .main-header .navbar-toggle { - color: #333; -} -.skin-black .main-header .navbar-brand { - color: #333; - border-right: 1px solid #eee; -} -.skin-black .main-header > .navbar { - background-color: #ffffff; -} -.skin-black .main-header > .navbar .nav > li > a { - color: #333333; -} -.skin-black .main-header > .navbar .nav > li > a:hover, -.skin-black .main-header > .navbar .nav > li > a:active, -.skin-black .main-header > .navbar .nav > li > a:focus, -.skin-black .main-header > .navbar .nav .open > a, -.skin-black .main-header > .navbar .nav .open > a:hover, -.skin-black .main-header > .navbar .nav .open > a:focus { - background: #ffffff; - color: #999999; -} -.skin-black .main-header > .navbar .sidebar-toggle { - color: #333333; -} -.skin-black .main-header > .navbar .sidebar-toggle:hover { - color: #999999; - background: #ffffff; -} -.skin-black .main-header > .navbar > .sidebar-toggle { - color: #333; - border-right: 1px solid #eee; -} -.skin-black .main-header > .navbar .navbar-nav > li > a { - border-right: 1px solid #eee; -} -.skin-black .main-header > .navbar .navbar-custom-menu .navbar-nav > li > a, -.skin-black .main-header > .navbar .navbar-right > li > a { - border-left: 1px solid #eee; - border-right-width: 0; -} -.skin-black .main-header > .logo { - background-color: #ffffff; - color: #333333; - border-bottom: 0px solid transparent; - border-right: 1px solid #eee; -} -.skin-black .main-header > .logo:hover { - background-color: #fcfcfc; -} -@media (max-width: 767px) { - .skin-black .main-header > .logo { - background-color: #222222; - color: #ffffff; - border-bottom: 0px solid transparent; - border-right: none; - } - .skin-black .main-header > .logo:hover { - background-color: #1f1f1f; - } -} -.skin-black .main-header li.user-header { - background-color: #222; -} -.skin-black .content-header { - background: transparent; - box-shadow: none; -} -.skin-black .wrapper, -.skin-black .main-sidebar, -.skin-black .left-side { - background-color: #222d32; -} -.skin-black .user-panel > .info, -.skin-black .user-panel > .info > a { - color: #fff; -} -.skin-black .sidebar-menu > li.header { - color: #4b646f; - background: #1a2226; -} -.skin-black .sidebar-menu > li > a { - border-left: 3px solid transparent; -} -.skin-black .sidebar-menu > li:hover > a, -.skin-black .sidebar-menu > li.active > a { - color: #ffffff; - background: #1e282c; - border-left-color: #ffffff; -} -.skin-black .sidebar-menu > li > .treeview-menu { - margin: 0 1px; - background: #2c3b41; -} -.skin-black .sidebar a { - color: #b8c7ce; -} -.skin-black .sidebar a:hover { - text-decoration: none; -} -.skin-black .treeview-menu > li > a { - color: #8aa4af; -} -.skin-black .treeview-menu > li.active > a, -.skin-black .treeview-menu > li > a:hover { - color: #ffffff; -} -.skin-black .sidebar-form { - border-radius: 3px; - border: 1px solid #374850; - margin: 10px 10px; -} -.skin-black .sidebar-form input[type="text"], -.skin-black .sidebar-form .btn { - box-shadow: none; - background-color: #374850; - border: 1px solid transparent; - height: 35px; - -webkit-transition: all 0.3s ease-in-out; - -o-transition: all 0.3s ease-in-out; - transition: all 0.3s ease-in-out; -} -.skin-black .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px !important; - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; - border-bottom-left-radius: 2px !important; -} -.skin-black .sidebar-form input[type="text"]:focus, -.skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-black .sidebar-form .btn { - color: #999; - border-top-left-radius: 0 !important; - border-top-right-radius: 2px !important; - border-bottom-right-radius: 2px !important; - border-bottom-left-radius: 0 !important; -} diff --git a/assets/dist/css/skins/skin-black.min.css b/assets/dist/css/skins/skin-black.min.css deleted file mode 100644 index 28ccfcde..00000000 --- a/assets/dist/css/skins/skin-black.min.css +++ /dev/null @@ -1 +0,0 @@ -.skin-black .main-header{-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.skin-black .main-header .navbar-toggle{color:#333}.skin-black .main-header .navbar-brand{color:#333;border-right:1px solid #eee}.skin-black .main-header>.navbar{background-color:#fff}.skin-black .main-header>.navbar .nav>li>a{color:#333}.skin-black .main-header>.navbar .nav>li>a:hover,.skin-black .main-header>.navbar .nav>li>a:active,.skin-black .main-header>.navbar .nav>li>a:focus,.skin-black .main-header>.navbar .nav .open>a,.skin-black .main-header>.navbar .nav .open>a:hover,.skin-black .main-header>.navbar .nav .open>a:focus{background:#fff;color:#999}.skin-black .main-header>.navbar .sidebar-toggle{color:#333}.skin-black .main-header>.navbar .sidebar-toggle:hover{color:#999;background:#fff}.skin-black .main-header>.navbar>.sidebar-toggle{color:#333;border-right:1px solid #eee}.skin-black .main-header>.navbar .navbar-nav>li>a{border-right:1px solid #eee}.skin-black .main-header>.navbar .navbar-custom-menu .navbar-nav>li>a,.skin-black .main-header>.navbar .navbar-right>li>a{border-left:1px solid #eee;border-right-width:0}.skin-black .main-header>.logo{background-color:#fff;color:#333;border-bottom:0 solid transparent;border-right:1px solid #eee}.skin-black .main-header>.logo:hover{background-color:#fcfcfc}@media (max-width:767px){.skin-black .main-header>.logo{background-color:#222;color:#fff;border-bottom:0 solid transparent;border-right:none}.skin-black .main-header>.logo:hover{background-color:#1f1f1f}}.skin-black .main-header li.user-header{background-color:#222}.skin-black .content-header{background:transparent;box-shadow:none}.skin-black .wrapper,.skin-black .main-sidebar,.skin-black .left-side{background-color:#222d32}.skin-black .user-panel>.info,.skin-black .user-panel>.info>a{color:#fff}.skin-black .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-black .sidebar-menu>li>a{border-left:3px solid transparent}.skin-black .sidebar-menu>li:hover>a,.skin-black .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#fff}.skin-black .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-black .sidebar a{color:#b8c7ce}.skin-black .sidebar a:hover{text-decoration:none}.skin-black .treeview-menu>li>a{color:#8aa4af}.skin-black .treeview-menu>li.active>a,.skin-black .treeview-menu>li>a:hover{color:#fff}.skin-black .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-black .sidebar-form input[type="text"],.skin-black .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-black .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important;border-bottom-left-radius:2px !important}.skin-black .sidebar-form input[type="text"]:focus,.skin-black .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-black .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-black .sidebar-form .btn{color:#999;border-top-left-radius:0 !important;border-top-right-radius:2px !important;border-bottom-right-radius:2px !important;border-bottom-left-radius:0 !important} \ No newline at end of file diff --git a/assets/dist/css/skins/skin-blue-light.css b/assets/dist/css/skins/skin-blue-light.css deleted file mode 100644 index 277e61a3..00000000 --- a/assets/dist/css/skins/skin-blue-light.css +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Skin: Blue - * ---------- - */ -.skin-blue-light .main-header .navbar { - background-color: #3c8dbc; -} -.skin-blue-light .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-blue-light .main-header .navbar .nav > li > a:hover, -.skin-blue-light .main-header .navbar .nav > li > a:active, -.skin-blue-light .main-header .navbar .nav > li > a:focus, -.skin-blue-light .main-header .navbar .nav .open > a, -.skin-blue-light .main-header .navbar .nav .open > a:hover, -.skin-blue-light .main-header .navbar .nav .open > a:focus { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-blue-light .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-blue-light .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-blue-light .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-blue-light .main-header .navbar .sidebar-toggle:hover { - background-color: #367fa9; -} -@media (max-width: 767px) { - .skin-blue-light .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-blue-light .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-blue-light .main-header .navbar .dropdown-menu li a:hover { - background: #367fa9; - } -} -.skin-blue-light .main-header .logo { - background-color: #3c8dbc; - color: #ffffff; - border-bottom: 0px solid transparent; -} -.skin-blue-light .main-header .logo:hover { - background-color: #3b8ab8; -} -.skin-blue-light .main-header li.user-header { - background-color: #3c8dbc; -} -.skin-blue-light .content-header { - background: transparent; -} -.skin-blue-light .wrapper, -.skin-blue-light .main-sidebar, -.skin-blue-light .left-side { - background-color: #f9fafc; -} -.skin-blue-light .content-wrapper, -.skin-blue-light .main-footer { - border-left: 1px solid #d2d6de; -} -.skin-blue-light .user-panel > .info, -.skin-blue-light .user-panel > .info > a { - color: #444444; -} -.skin-blue-light .sidebar-menu > li { - -webkit-transition: border-left-color 0.3s ease; - -o-transition: border-left-color 0.3s ease; - transition: border-left-color 0.3s ease; -} -.skin-blue-light .sidebar-menu > li.header { - color: #848484; - background: #f9fafc; -} -.skin-blue-light .sidebar-menu > li > a { - border-left: 3px solid transparent; - font-weight: 600; -} -.skin-blue-light .sidebar-menu > li:hover > a, -.skin-blue-light .sidebar-menu > li.active > a { - color: #000000; - background: #f4f4f5; -} -.skin-blue-light .sidebar-menu > li.active { - border-left-color: #3c8dbc; -} -.skin-blue-light .sidebar-menu > li.active > a { - font-weight: 600; -} -.skin-blue-light .sidebar-menu > li > .treeview-menu { - background: #f4f4f5; -} -.skin-blue-light .sidebar a { - color: #444444; -} -.skin-blue-light .sidebar a:hover { - text-decoration: none; -} -.skin-blue-light .treeview-menu > li > a { - color: #777777; -} -.skin-blue-light .treeview-menu > li.active > a, -.skin-blue-light .treeview-menu > li > a:hover { - color: #000000; -} -.skin-blue-light .treeview-menu > li.active > a { - font-weight: 600; -} -.skin-blue-light .sidebar-form { - border-radius: 3px; - border: 1px solid #d2d6de; - margin: 10px 10px; -} -.skin-blue-light .sidebar-form input[type="text"], -.skin-blue-light .sidebar-form .btn { - box-shadow: none; - background-color: #fff; - border: 1px solid transparent; - height: 35px; - -webkit-transition: all 0.3s ease-in-out; - -o-transition: all 0.3s ease-in-out; - transition: all 0.3s ease-in-out; -} -.skin-blue-light .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px !important; - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; - border-bottom-left-radius: 2px !important; -} -.skin-blue-light .sidebar-form input[type="text"]:focus, -.skin-blue-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-blue-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-blue-light .sidebar-form .btn { - color: #999; - border-top-left-radius: 0 !important; - border-top-right-radius: 2px !important; - border-bottom-right-radius: 2px !important; - border-bottom-left-radius: 0 !important; -} -@media (min-width: 768px) { - .skin-blue-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { - border-left: 1px solid #d2d6de; - } -} -.skin-blue-light .main-footer { - border-top-color: #d2d6de; -} -.skin-blue.layout-top-nav .main-header > .logo { - background-color: #3c8dbc; - color: #ffffff; - border-bottom: 0px solid transparent; -} -.skin-blue.layout-top-nav .main-header > .logo:hover { - background-color: #3b8ab8; -} diff --git a/assets/dist/css/skins/skin-blue-light.min.css b/assets/dist/css/skins/skin-blue-light.min.css deleted file mode 100644 index f07c5b68..00000000 --- a/assets/dist/css/skins/skin-blue-light.min.css +++ /dev/null @@ -1 +0,0 @@ -.skin-blue-light .main-header .navbar{background-color:#3c8dbc}.skin-blue-light .main-header .navbar .nav>li>a{color:#fff}.skin-blue-light .main-header .navbar .nav>li>a:hover,.skin-blue-light .main-header .navbar .nav>li>a:active,.skin-blue-light .main-header .navbar .nav>li>a:focus,.skin-blue-light .main-header .navbar .nav .open>a,.skin-blue-light .main-header .navbar .nav .open>a:hover,.skin-blue-light .main-header .navbar .nav .open>a:focus{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-blue-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-blue-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue-light .main-header .navbar .sidebar-toggle:hover{background-color:#367fa9}@media (max-width:767px){.skin-blue-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-blue-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-blue-light .main-header .navbar .dropdown-menu li a:hover{background:#367fa9}}.skin-blue-light .main-header .logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue-light .main-header .logo:hover{background-color:#3b8ab8}.skin-blue-light .main-header li.user-header{background-color:#3c8dbc}.skin-blue-light .content-header{background:transparent}.skin-blue-light .wrapper,.skin-blue-light .main-sidebar,.skin-blue-light .left-side{background-color:#f9fafc}.skin-blue-light .content-wrapper,.skin-blue-light .main-footer{border-left:1px solid #d2d6de}.skin-blue-light .user-panel>.info,.skin-blue-light .user-panel>.info>a{color:#444}.skin-blue-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-blue-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-blue-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-blue-light .sidebar-menu>li:hover>a,.skin-blue-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-blue-light .sidebar-menu>li.active{border-left-color:#3c8dbc}.skin-blue-light .sidebar-menu>li.active>a{font-weight:600}.skin-blue-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-blue-light .sidebar a{color:#444}.skin-blue-light .sidebar a:hover{text-decoration:none}.skin-blue-light .treeview-menu>li>a{color:#777}.skin-blue-light .treeview-menu>li.active>a,.skin-blue-light .treeview-menu>li>a:hover{color:#000}.skin-blue-light .treeview-menu>li.active>a{font-weight:600}.skin-blue-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-blue-light .sidebar-form input[type="text"],.skin-blue-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-blue-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important;border-bottom-left-radius:2px !important}.skin-blue-light .sidebar-form input[type="text"]:focus,.skin-blue-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-blue-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-blue-light .sidebar-form .btn{color:#999;border-top-left-radius:0 !important;border-top-right-radius:2px !important;border-bottom-right-radius:2px !important;border-bottom-left-radius:0 !important}@media (min-width:768px){.skin-blue-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}.skin-blue-light .main-footer{border-top-color:#d2d6de}.skin-blue.layout-top-nav .main-header>.logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue.layout-top-nav .main-header>.logo:hover{background-color:#3b8ab8} \ No newline at end of file diff --git a/assets/dist/css/skins/skin-blue.css b/assets/dist/css/skins/skin-blue.css deleted file mode 100644 index 1c35c357..00000000 --- a/assets/dist/css/skins/skin-blue.css +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Skin: Blue - * ---------- - */ -.skin-blue .main-header .navbar { - background-color: #3c8dbc; -} -.skin-blue .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-blue .main-header .navbar .nav > li > a:hover, -.skin-blue .main-header .navbar .nav > li > a:active, -.skin-blue .main-header .navbar .nav > li > a:focus, -.skin-blue .main-header .navbar .nav .open > a, -.skin-blue .main-header .navbar .nav .open > a:hover, -.skin-blue .main-header .navbar .nav .open > a:focus { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-blue .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-blue .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-blue .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-blue .main-header .navbar .sidebar-toggle:hover { - background-color: #367fa9; -} -@media (max-width: 767px) { - .skin-blue .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-blue .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-blue .main-header .navbar .dropdown-menu li a:hover { - background: #367fa9; - } -} -.skin-blue .main-header .logo { - background-color: #367fa9; - color: #ffffff; - border-bottom: 0px solid transparent; -} -.skin-blue .main-header .logo:hover { - background-color: #357ca5; -} -.skin-blue .main-header li.user-header { - background-color: #3c8dbc; -} -.skin-blue .content-header { - background: transparent; -} -.skin-blue .wrapper, -.skin-blue .main-sidebar, -.skin-blue .left-side { - background-color: #222d32; -} -.skin-blue .user-panel > .info, -.skin-blue .user-panel > .info > a { - color: #fff; -} -.skin-blue .sidebar-menu > li.header { - color: #4b646f; - background: #1a2226; -} -.skin-blue .sidebar-menu > li > a { - border-left: 3px solid transparent; -} -.skin-blue .sidebar-menu > li:hover > a, -.skin-blue .sidebar-menu > li.active > a { - color: #ffffff; - background: #1e282c; - border-left-color: #3c8dbc; -} -.skin-blue .sidebar-menu > li > .treeview-menu { - margin: 0 1px; - background: #2c3b41; -} -.skin-blue .sidebar a { - color: #b8c7ce; -} -.skin-blue .sidebar a:hover { - text-decoration: none; -} -.skin-blue .treeview-menu > li > a { - color: #8aa4af; -} -.skin-blue .treeview-menu > li.active > a, -.skin-blue .treeview-menu > li > a:hover { - color: #ffffff; -} -.skin-blue .sidebar-form { - border-radius: 3px; - border: 1px solid #374850; - margin: 10px 10px; -} -.skin-blue .sidebar-form input[type="text"], -.skin-blue .sidebar-form .btn { - box-shadow: none; - background-color: #374850; - border: 1px solid transparent; - height: 35px; - -webkit-transition: all 0.3s ease-in-out; - -o-transition: all 0.3s ease-in-out; - transition: all 0.3s ease-in-out; -} -.skin-blue .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px !important; - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; - border-bottom-left-radius: 2px !important; -} -.skin-blue .sidebar-form input[type="text"]:focus, -.skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-blue .sidebar-form .btn { - color: #999; - border-top-left-radius: 0 !important; - border-top-right-radius: 2px !important; - border-bottom-right-radius: 2px !important; - border-bottom-left-radius: 0 !important; -} -.skin-blue.layout-top-nav .main-header > .logo { - background-color: #3c8dbc; - color: #ffffff; - border-bottom: 0px solid transparent; -} -.skin-blue.layout-top-nav .main-header > .logo:hover { - background-color: #3b8ab8; -} diff --git a/assets/dist/css/skins/skin-blue.min.css b/assets/dist/css/skins/skin-blue.min.css deleted file mode 100644 index 944d9f76..00000000 --- a/assets/dist/css/skins/skin-blue.min.css +++ /dev/null @@ -1 +0,0 @@ -.skin-blue .main-header .navbar{background-color:#3c8dbc}.skin-blue .main-header .navbar .nav>li>a{color:#fff}.skin-blue .main-header .navbar .nav>li>a:hover,.skin-blue .main-header .navbar .nav>li>a:active,.skin-blue .main-header .navbar .nav>li>a:focus,.skin-blue .main-header .navbar .nav .open>a,.skin-blue .main-header .navbar .nav .open>a:hover,.skin-blue .main-header .navbar .nav .open>a:focus{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-blue .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-blue .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue .main-header .navbar .sidebar-toggle:hover{background-color:#367fa9}@media (max-width:767px){.skin-blue .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-blue .main-header .navbar .dropdown-menu li a{color:#fff}.skin-blue .main-header .navbar .dropdown-menu li a:hover{background:#367fa9}}.skin-blue .main-header .logo{background-color:#367fa9;color:#fff;border-bottom:0 solid transparent}.skin-blue .main-header .logo:hover{background-color:#357ca5}.skin-blue .main-header li.user-header{background-color:#3c8dbc}.skin-blue .content-header{background:transparent}.skin-blue .wrapper,.skin-blue .main-sidebar,.skin-blue .left-side{background-color:#222d32}.skin-blue .user-panel>.info,.skin-blue .user-panel>.info>a{color:#fff}.skin-blue .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-blue .sidebar-menu>li>a{border-left:3px solid transparent}.skin-blue .sidebar-menu>li:hover>a,.skin-blue .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#3c8dbc}.skin-blue .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-blue .sidebar a{color:#b8c7ce}.skin-blue .sidebar a:hover{text-decoration:none}.skin-blue .treeview-menu>li>a{color:#8aa4af}.skin-blue .treeview-menu>li.active>a,.skin-blue .treeview-menu>li>a:hover{color:#fff}.skin-blue .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-blue .sidebar-form input[type="text"],.skin-blue .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-blue .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important;border-bottom-left-radius:2px !important}.skin-blue .sidebar-form input[type="text"]:focus,.skin-blue .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-blue .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-blue .sidebar-form .btn{color:#999;border-top-left-radius:0 !important;border-top-right-radius:2px !important;border-bottom-right-radius:2px !important;border-bottom-left-radius:0 !important}.skin-blue.layout-top-nav .main-header>.logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue.layout-top-nav .main-header>.logo:hover{background-color:#3b8ab8} \ No newline at end of file diff --git a/assets/dist/css/skins/skin-green-light.css b/assets/dist/css/skins/skin-green-light.css deleted file mode 100644 index d4a4edbe..00000000 --- a/assets/dist/css/skins/skin-green-light.css +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Skin: Green - * ----------- - */ -.skin-green-light .main-header .navbar { - background-color: #00a65a; -} -.skin-green-light .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-green-light .main-header .navbar .nav > li > a:hover, -.skin-green-light .main-header .navbar .nav > li > a:active, -.skin-green-light .main-header .navbar .nav > li > a:focus, -.skin-green-light .main-header .navbar .nav .open > a, -.skin-green-light .main-header .navbar .nav .open > a:hover, -.skin-green-light .main-header .navbar .nav .open > a:focus { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-green-light .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-green-light .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-green-light .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-green-light .main-header .navbar .sidebar-toggle:hover { - background-color: #008d4c; -} -@media (max-width: 767px) { - .skin-green-light .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-green-light .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-green-light .main-header .navbar .dropdown-menu li a:hover { - background: #008d4c; - } -} -.skin-green-light .main-header .logo { - background-color: #00a65a; - color: #ffffff; - border-bottom: 0px solid transparent; -} -.skin-green-light .main-header .logo:hover { - background-color: #00a157; -} -.skin-green-light .main-header li.user-header { - background-color: #00a65a; -} -.skin-green-light .content-header { - background: transparent; -} -.skin-green-light .wrapper, -.skin-green-light .main-sidebar, -.skin-green-light .left-side { - background-color: #f9fafc; -} -.skin-green-light .content-wrapper, -.skin-green-light .main-footer { - border-left: 1px solid #d2d6de; -} -.skin-green-light .user-panel > .info, -.skin-green-light .user-panel > .info > a { - color: #444444; -} -.skin-green-light .sidebar-menu > li { - -webkit-transition: border-left-color 0.3s ease; - -o-transition: border-left-color 0.3s ease; - transition: border-left-color 0.3s ease; -} -.skin-green-light .sidebar-menu > li.header { - color: #848484; - background: #f9fafc; -} -.skin-green-light .sidebar-menu > li > a { - border-left: 3px solid transparent; - font-weight: 600; -} -.skin-green-light .sidebar-menu > li:hover > a, -.skin-green-light .sidebar-menu > li.active > a { - color: #000000; - background: #f4f4f5; -} -.skin-green-light .sidebar-menu > li.active { - border-left-color: #00a65a; -} -.skin-green-light .sidebar-menu > li.active > a { - font-weight: 600; -} -.skin-green-light .sidebar-menu > li > .treeview-menu { - background: #f4f4f5; -} -.skin-green-light .sidebar a { - color: #444444; -} -.skin-green-light .sidebar a:hover { - text-decoration: none; -} -.skin-green-light .treeview-menu > li > a { - color: #777777; -} -.skin-green-light .treeview-menu > li.active > a, -.skin-green-light .treeview-menu > li > a:hover { - color: #000000; -} -.skin-green-light .treeview-menu > li.active > a { - font-weight: 600; -} -.skin-green-light .sidebar-form { - border-radius: 3px; - border: 1px solid #d2d6de; - margin: 10px 10px; -} -.skin-green-light .sidebar-form input[type="text"], -.skin-green-light .sidebar-form .btn { - box-shadow: none; - background-color: #fff; - border: 1px solid transparent; - height: 35px; - -webkit-transition: all 0.3s ease-in-out; - -o-transition: all 0.3s ease-in-out; - transition: all 0.3s ease-in-out; -} -.skin-green-light .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px !important; - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; - border-bottom-left-radius: 2px !important; -} -.skin-green-light .sidebar-form input[type="text"]:focus, -.skin-green-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-green-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-green-light .sidebar-form .btn { - color: #999; - border-top-left-radius: 0 !important; - border-top-right-radius: 2px !important; - border-bottom-right-radius: 2px !important; - border-bottom-left-radius: 0 !important; -} -@media (min-width: 768px) { - .skin-green-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { - border-left: 1px solid #d2d6de; - } -} diff --git a/assets/dist/css/skins/skin-green-light.min.css b/assets/dist/css/skins/skin-green-light.min.css deleted file mode 100644 index 9d9b7c2f..00000000 --- a/assets/dist/css/skins/skin-green-light.min.css +++ /dev/null @@ -1 +0,0 @@ -.skin-green-light .main-header .navbar{background-color:#00a65a}.skin-green-light .main-header .navbar .nav>li>a{color:#fff}.skin-green-light .main-header .navbar .nav>li>a:hover,.skin-green-light .main-header .navbar .nav>li>a:active,.skin-green-light .main-header .navbar .nav>li>a:focus,.skin-green-light .main-header .navbar .nav .open>a,.skin-green-light .main-header .navbar .nav .open>a:hover,.skin-green-light .main-header .navbar .nav .open>a:focus{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-green-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-green-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-green-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-green-light .main-header .navbar .sidebar-toggle:hover{background-color:#008d4c}@media (max-width:767px){.skin-green-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-green-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-green-light .main-header .navbar .dropdown-menu li a:hover{background:#008d4c}}.skin-green-light .main-header .logo{background-color:#00a65a;color:#fff;border-bottom:0 solid transparent}.skin-green-light .main-header .logo:hover{background-color:#00a157}.skin-green-light .main-header li.user-header{background-color:#00a65a}.skin-green-light .content-header{background:transparent}.skin-green-light .wrapper,.skin-green-light .main-sidebar,.skin-green-light .left-side{background-color:#f9fafc}.skin-green-light .content-wrapper,.skin-green-light .main-footer{border-left:1px solid #d2d6de}.skin-green-light .user-panel>.info,.skin-green-light .user-panel>.info>a{color:#444}.skin-green-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-green-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-green-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-green-light .sidebar-menu>li:hover>a,.skin-green-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-green-light .sidebar-menu>li.active{border-left-color:#00a65a}.skin-green-light .sidebar-menu>li.active>a{font-weight:600}.skin-green-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-green-light .sidebar a{color:#444}.skin-green-light .sidebar a:hover{text-decoration:none}.skin-green-light .treeview-menu>li>a{color:#777}.skin-green-light .treeview-menu>li.active>a,.skin-green-light .treeview-menu>li>a:hover{color:#000}.skin-green-light .treeview-menu>li.active>a{font-weight:600}.skin-green-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-green-light .sidebar-form input[type="text"],.skin-green-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-green-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important;border-bottom-left-radius:2px !important}.skin-green-light .sidebar-form input[type="text"]:focus,.skin-green-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-green-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-green-light .sidebar-form .btn{color:#999;border-top-left-radius:0 !important;border-top-right-radius:2px !important;border-bottom-right-radius:2px !important;border-bottom-left-radius:0 !important}@media (min-width:768px){.skin-green-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}} \ No newline at end of file diff --git a/assets/dist/css/skins/skin-green.css b/assets/dist/css/skins/skin-green.css deleted file mode 100644 index 8b712d30..00000000 --- a/assets/dist/css/skins/skin-green.css +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Skin: Green - * ----------- - */ -.skin-green .main-header .navbar { - background-color: #00a65a; -} -.skin-green .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-green .main-header .navbar .nav > li > a:hover, -.skin-green .main-header .navbar .nav > li > a:active, -.skin-green .main-header .navbar .nav > li > a:focus, -.skin-green .main-header .navbar .nav .open > a, -.skin-green .main-header .navbar .nav .open > a:hover, -.skin-green .main-header .navbar .nav .open > a:focus { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-green .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-green .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-green .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-green .main-header .navbar .sidebar-toggle:hover { - background-color: #008d4c; -} -@media (max-width: 767px) { - .skin-green .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-green .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-green .main-header .navbar .dropdown-menu li a:hover { - background: #008d4c; - } -} -.skin-green .main-header .logo { - background-color: #008d4c; - color: #ffffff; - border-bottom: 0px solid transparent; -} -.skin-green .main-header .logo:hover { - background-color: #008749; -} -.skin-green .main-header li.user-header { - background-color: #00a65a; -} -.skin-green .content-header { - background: transparent; -} -.skin-green .wrapper, -.skin-green .main-sidebar, -.skin-green .left-side { - background-color: #222d32; -} -.skin-green .user-panel > .info, -.skin-green .user-panel > .info > a { - color: #fff; -} -.skin-green .sidebar-menu > li.header { - color: #4b646f; - background: #1a2226; -} -.skin-green .sidebar-menu > li > a { - border-left: 3px solid transparent; -} -.skin-green .sidebar-menu > li:hover > a, -.skin-green .sidebar-menu > li.active > a { - color: #ffffff; - background: #1e282c; - border-left-color: #00a65a; -} -.skin-green .sidebar-menu > li > .treeview-menu { - margin: 0 1px; - background: #2c3b41; -} -.skin-green .sidebar a { - color: #b8c7ce; -} -.skin-green .sidebar a:hover { - text-decoration: none; -} -.skin-green .treeview-menu > li > a { - color: #8aa4af; -} -.skin-green .treeview-menu > li.active > a, -.skin-green .treeview-menu > li > a:hover { - color: #ffffff; -} -.skin-green .sidebar-form { - border-radius: 3px; - border: 1px solid #374850; - margin: 10px 10px; -} -.skin-green .sidebar-form input[type="text"], -.skin-green .sidebar-form .btn { - box-shadow: none; - background-color: #374850; - border: 1px solid transparent; - height: 35px; - -webkit-transition: all 0.3s ease-in-out; - -o-transition: all 0.3s ease-in-out; - transition: all 0.3s ease-in-out; -} -.skin-green .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px !important; - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; - border-bottom-left-radius: 2px !important; -} -.skin-green .sidebar-form input[type="text"]:focus, -.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-green .sidebar-form .btn { - color: #999; - border-top-left-radius: 0 !important; - border-top-right-radius: 2px !important; - border-bottom-right-radius: 2px !important; - border-bottom-left-radius: 0 !important; -} diff --git a/assets/dist/css/skins/skin-green.min.css b/assets/dist/css/skins/skin-green.min.css deleted file mode 100644 index ed7331cb..00000000 --- a/assets/dist/css/skins/skin-green.min.css +++ /dev/null @@ -1 +0,0 @@ -.skin-green .main-header .navbar{background-color:#00a65a}.skin-green .main-header .navbar .nav>li>a{color:#fff}.skin-green .main-header .navbar .nav>li>a:hover,.skin-green .main-header .navbar .nav>li>a:active,.skin-green .main-header .navbar .nav>li>a:focus,.skin-green .main-header .navbar .nav .open>a,.skin-green .main-header .navbar .nav .open>a:hover,.skin-green .main-header .navbar .nav .open>a:focus{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-green .main-header .navbar .sidebar-toggle{color:#fff}.skin-green .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-green .main-header .navbar .sidebar-toggle{color:#fff}.skin-green .main-header .navbar .sidebar-toggle:hover{background-color:#008d4c}@media (max-width:767px){.skin-green .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-green .main-header .navbar .dropdown-menu li a{color:#fff}.skin-green .main-header .navbar .dropdown-menu li a:hover{background:#008d4c}}.skin-green .main-header .logo{background-color:#008d4c;color:#fff;border-bottom:0 solid transparent}.skin-green .main-header .logo:hover{background-color:#008749}.skin-green .main-header li.user-header{background-color:#00a65a}.skin-green .content-header{background:transparent}.skin-green .wrapper,.skin-green .main-sidebar,.skin-green .left-side{background-color:#222d32}.skin-green .user-panel>.info,.skin-green .user-panel>.info>a{color:#fff}.skin-green .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-green .sidebar-menu>li>a{border-left:3px solid transparent}.skin-green .sidebar-menu>li:hover>a,.skin-green .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#00a65a}.skin-green .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-green .sidebar a{color:#b8c7ce}.skin-green .sidebar a:hover{text-decoration:none}.skin-green .treeview-menu>li>a{color:#8aa4af}.skin-green .treeview-menu>li.active>a,.skin-green .treeview-menu>li>a:hover{color:#fff}.skin-green .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-green .sidebar-form input[type="text"],.skin-green .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-green .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important;border-bottom-left-radius:2px !important}.skin-green .sidebar-form input[type="text"]:focus,.skin-green .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-green .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-green .sidebar-form .btn{color:#999;border-top-left-radius:0 !important;border-top-right-radius:2px !important;border-bottom-right-radius:2px !important;border-bottom-left-radius:0 !important} \ No newline at end of file diff --git a/assets/dist/css/skins/skin-purple-light.css b/assets/dist/css/skins/skin-purple-light.css deleted file mode 100644 index 6ad2fb8d..00000000 --- a/assets/dist/css/skins/skin-purple-light.css +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Skin: Purple - * ------------ - */ -.skin-purple-light .main-header .navbar { - background-color: #605ca8; -} -.skin-purple-light .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-purple-light .main-header .navbar .nav > li > a:hover, -.skin-purple-light .main-header .navbar .nav > li > a:active, -.skin-purple-light .main-header .navbar .nav > li > a:focus, -.skin-purple-light .main-header .navbar .nav .open > a, -.skin-purple-light .main-header .navbar .nav .open > a:hover, -.skin-purple-light .main-header .navbar .nav .open > a:focus { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-purple-light .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-purple-light .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-purple-light .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-purple-light .main-header .navbar .sidebar-toggle:hover { - background-color: #555299; -} -@media (max-width: 767px) { - .skin-purple-light .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-purple-light .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-purple-light .main-header .navbar .dropdown-menu li a:hover { - background: #555299; - } -} -.skin-purple-light .main-header .logo { - background-color: #605ca8; - color: #ffffff; - border-bottom: 0px solid transparent; -} -.skin-purple-light .main-header .logo:hover { - background-color: #5d59a6; -} -.skin-purple-light .main-header li.user-header { - background-color: #605ca8; -} -.skin-purple-light .content-header { - background: transparent; -} -.skin-purple-light .wrapper, -.skin-purple-light .main-sidebar, -.skin-purple-light .left-side { - background-color: #f9fafc; -} -.skin-purple-light .content-wrapper, -.skin-purple-light .main-footer { - border-left: 1px solid #d2d6de; -} -.skin-purple-light .user-panel > .info, -.skin-purple-light .user-panel > .info > a { - color: #444444; -} -.skin-purple-light .sidebar-menu > li { - -webkit-transition: border-left-color 0.3s ease; - -o-transition: border-left-color 0.3s ease; - transition: border-left-color 0.3s ease; -} -.skin-purple-light .sidebar-menu > li.header { - color: #848484; - background: #f9fafc; -} -.skin-purple-light .sidebar-menu > li > a { - border-left: 3px solid transparent; - font-weight: 600; -} -.skin-purple-light .sidebar-menu > li:hover > a, -.skin-purple-light .sidebar-menu > li.active > a { - color: #000000; - background: #f4f4f5; -} -.skin-purple-light .sidebar-menu > li.active { - border-left-color: #605ca8; -} -.skin-purple-light .sidebar-menu > li.active > a { - font-weight: 600; -} -.skin-purple-light .sidebar-menu > li > .treeview-menu { - background: #f4f4f5; -} -.skin-purple-light .sidebar a { - color: #444444; -} -.skin-purple-light .sidebar a:hover { - text-decoration: none; -} -.skin-purple-light .treeview-menu > li > a { - color: #777777; -} -.skin-purple-light .treeview-menu > li.active > a, -.skin-purple-light .treeview-menu > li > a:hover { - color: #000000; -} -.skin-purple-light .treeview-menu > li.active > a { - font-weight: 600; -} -.skin-purple-light .sidebar-form { - border-radius: 3px; - border: 1px solid #d2d6de; - margin: 10px 10px; -} -.skin-purple-light .sidebar-form input[type="text"], -.skin-purple-light .sidebar-form .btn { - box-shadow: none; - background-color: #fff; - border: 1px solid transparent; - height: 35px; - -webkit-transition: all 0.3s ease-in-out; - -o-transition: all 0.3s ease-in-out; - transition: all 0.3s ease-in-out; -} -.skin-purple-light .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px !important; - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; - border-bottom-left-radius: 2px !important; -} -.skin-purple-light .sidebar-form input[type="text"]:focus, -.skin-purple-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-purple-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-purple-light .sidebar-form .btn { - color: #999; - border-top-left-radius: 0 !important; - border-top-right-radius: 2px !important; - border-bottom-right-radius: 2px !important; - border-bottom-left-radius: 0 !important; -} -@media (min-width: 768px) { - .skin-purple-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { - border-left: 1px solid #d2d6de; - } -} diff --git a/assets/dist/css/skins/skin-purple-light.min.css b/assets/dist/css/skins/skin-purple-light.min.css deleted file mode 100644 index a57a2d26..00000000 --- a/assets/dist/css/skins/skin-purple-light.min.css +++ /dev/null @@ -1 +0,0 @@ -.skin-purple-light .main-header .navbar{background-color:#605ca8}.skin-purple-light .main-header .navbar .nav>li>a{color:#fff}.skin-purple-light .main-header .navbar .nav>li>a:hover,.skin-purple-light .main-header .navbar .nav>li>a:active,.skin-purple-light .main-header .navbar .nav>li>a:focus,.skin-purple-light .main-header .navbar .nav .open>a,.skin-purple-light .main-header .navbar .nav .open>a:hover,.skin-purple-light .main-header .navbar .nav .open>a:focus{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-purple-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-purple-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple-light .main-header .navbar .sidebar-toggle:hover{background-color:#555299}@media (max-width:767px){.skin-purple-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-purple-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-purple-light .main-header .navbar .dropdown-menu li a:hover{background:#555299}}.skin-purple-light .main-header .logo{background-color:#605ca8;color:#fff;border-bottom:0 solid transparent}.skin-purple-light .main-header .logo:hover{background-color:#5d59a6}.skin-purple-light .main-header li.user-header{background-color:#605ca8}.skin-purple-light .content-header{background:transparent}.skin-purple-light .wrapper,.skin-purple-light .main-sidebar,.skin-purple-light .left-side{background-color:#f9fafc}.skin-purple-light .content-wrapper,.skin-purple-light .main-footer{border-left:1px solid #d2d6de}.skin-purple-light .user-panel>.info,.skin-purple-light .user-panel>.info>a{color:#444}.skin-purple-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-purple-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-purple-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-purple-light .sidebar-menu>li:hover>a,.skin-purple-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-purple-light .sidebar-menu>li.active{border-left-color:#605ca8}.skin-purple-light .sidebar-menu>li.active>a{font-weight:600}.skin-purple-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-purple-light .sidebar a{color:#444}.skin-purple-light .sidebar a:hover{text-decoration:none}.skin-purple-light .treeview-menu>li>a{color:#777}.skin-purple-light .treeview-menu>li.active>a,.skin-purple-light .treeview-menu>li>a:hover{color:#000}.skin-purple-light .treeview-menu>li.active>a{font-weight:600}.skin-purple-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-purple-light .sidebar-form input[type="text"],.skin-purple-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-purple-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important;border-bottom-left-radius:2px !important}.skin-purple-light .sidebar-form input[type="text"]:focus,.skin-purple-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-purple-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-purple-light .sidebar-form .btn{color:#999;border-top-left-radius:0 !important;border-top-right-radius:2px !important;border-bottom-right-radius:2px !important;border-bottom-left-radius:0 !important}@media (min-width:768px){.skin-purple-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}} \ No newline at end of file diff --git a/assets/dist/css/skins/skin-purple.css b/assets/dist/css/skins/skin-purple.css deleted file mode 100644 index b041b2ef..00000000 --- a/assets/dist/css/skins/skin-purple.css +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Skin: Purple - * ------------ - */ -.skin-purple .main-header .navbar { - background-color: #605ca8; -} -.skin-purple .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-purple .main-header .navbar .nav > li > a:hover, -.skin-purple .main-header .navbar .nav > li > a:active, -.skin-purple .main-header .navbar .nav > li > a:focus, -.skin-purple .main-header .navbar .nav .open > a, -.skin-purple .main-header .navbar .nav .open > a:hover, -.skin-purple .main-header .navbar .nav .open > a:focus { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-purple .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-purple .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-purple .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-purple .main-header .navbar .sidebar-toggle:hover { - background-color: #555299; -} -@media (max-width: 767px) { - .skin-purple .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-purple .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-purple .main-header .navbar .dropdown-menu li a:hover { - background: #555299; - } -} -.skin-purple .main-header .logo { - background-color: #555299; - color: #ffffff; - border-bottom: 0px solid transparent; -} -.skin-purple .main-header .logo:hover { - background-color: #545096; -} -.skin-purple .main-header li.user-header { - background-color: #605ca8; -} -.skin-purple .content-header { - background: transparent; -} -.skin-purple .wrapper, -.skin-purple .main-sidebar, -.skin-purple .left-side { - background-color: #222d32; -} -.skin-purple .user-panel > .info, -.skin-purple .user-panel > .info > a { - color: #fff; -} -.skin-purple .sidebar-menu > li.header { - color: #4b646f; - background: #1a2226; -} -.skin-purple .sidebar-menu > li > a { - border-left: 3px solid transparent; -} -.skin-purple .sidebar-menu > li:hover > a, -.skin-purple .sidebar-menu > li.active > a { - color: #ffffff; - background: #1e282c; - border-left-color: #605ca8; -} -.skin-purple .sidebar-menu > li > .treeview-menu { - margin: 0 1px; - background: #2c3b41; -} -.skin-purple .sidebar a { - color: #b8c7ce; -} -.skin-purple .sidebar a:hover { - text-decoration: none; -} -.skin-purple .treeview-menu > li > a { - color: #8aa4af; -} -.skin-purple .treeview-menu > li.active > a, -.skin-purple .treeview-menu > li > a:hover { - color: #ffffff; -} -.skin-purple .sidebar-form { - border-radius: 3px; - border: 1px solid #374850; - margin: 10px 10px; -} -.skin-purple .sidebar-form input[type="text"], -.skin-purple .sidebar-form .btn { - box-shadow: none; - background-color: #374850; - border: 1px solid transparent; - height: 35px; - -webkit-transition: all 0.3s ease-in-out; - -o-transition: all 0.3s ease-in-out; - transition: all 0.3s ease-in-out; -} -.skin-purple .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px !important; - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; - border-bottom-left-radius: 2px !important; -} -.skin-purple .sidebar-form input[type="text"]:focus, -.skin-purple .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-purple .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-purple .sidebar-form .btn { - color: #999; - border-top-left-radius: 0 !important; - border-top-right-radius: 2px !important; - border-bottom-right-radius: 2px !important; - border-bottom-left-radius: 0 !important; -} diff --git a/assets/dist/css/skins/skin-purple.min.css b/assets/dist/css/skins/skin-purple.min.css deleted file mode 100644 index 27a4582c..00000000 --- a/assets/dist/css/skins/skin-purple.min.css +++ /dev/null @@ -1 +0,0 @@ -.skin-purple .main-header .navbar{background-color:#605ca8}.skin-purple .main-header .navbar .nav>li>a{color:#fff}.skin-purple .main-header .navbar .nav>li>a:hover,.skin-purple .main-header .navbar .nav>li>a:active,.skin-purple .main-header .navbar .nav>li>a:focus,.skin-purple .main-header .navbar .nav .open>a,.skin-purple .main-header .navbar .nav .open>a:hover,.skin-purple .main-header .navbar .nav .open>a:focus{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-purple .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-purple .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple .main-header .navbar .sidebar-toggle:hover{background-color:#555299}@media (max-width:767px){.skin-purple .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-purple .main-header .navbar .dropdown-menu li a{color:#fff}.skin-purple .main-header .navbar .dropdown-menu li a:hover{background:#555299}}.skin-purple .main-header .logo{background-color:#555299;color:#fff;border-bottom:0 solid transparent}.skin-purple .main-header .logo:hover{background-color:#545096}.skin-purple .main-header li.user-header{background-color:#605ca8}.skin-purple .content-header{background:transparent}.skin-purple .wrapper,.skin-purple .main-sidebar,.skin-purple .left-side{background-color:#222d32}.skin-purple .user-panel>.info,.skin-purple .user-panel>.info>a{color:#fff}.skin-purple .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-purple .sidebar-menu>li>a{border-left:3px solid transparent}.skin-purple .sidebar-menu>li:hover>a,.skin-purple .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#605ca8}.skin-purple .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-purple .sidebar a{color:#b8c7ce}.skin-purple .sidebar a:hover{text-decoration:none}.skin-purple .treeview-menu>li>a{color:#8aa4af}.skin-purple .treeview-menu>li.active>a,.skin-purple .treeview-menu>li>a:hover{color:#fff}.skin-purple .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-purple .sidebar-form input[type="text"],.skin-purple .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-purple .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important;border-bottom-left-radius:2px !important}.skin-purple .sidebar-form input[type="text"]:focus,.skin-purple .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-purple .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-purple .sidebar-form .btn{color:#999;border-top-left-radius:0 !important;border-top-right-radius:2px !important;border-bottom-right-radius:2px !important;border-bottom-left-radius:0 !important} \ No newline at end of file diff --git a/assets/dist/css/skins/skin-red-light.css b/assets/dist/css/skins/skin-red-light.css deleted file mode 100644 index 8dd3faf0..00000000 --- a/assets/dist/css/skins/skin-red-light.css +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Skin: Red - * --------- - */ -.skin-red-light .main-header .navbar { - background-color: #dd4b39; -} -.skin-red-light .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-red-light .main-header .navbar .nav > li > a:hover, -.skin-red-light .main-header .navbar .nav > li > a:active, -.skin-red-light .main-header .navbar .nav > li > a:focus, -.skin-red-light .main-header .navbar .nav .open > a, -.skin-red-light .main-header .navbar .nav .open > a:hover, -.skin-red-light .main-header .navbar .nav .open > a:focus { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-red-light .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-red-light .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-red-light .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-red-light .main-header .navbar .sidebar-toggle:hover { - background-color: #d73925; -} -@media (max-width: 767px) { - .skin-red-light .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-red-light .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-red-light .main-header .navbar .dropdown-menu li a:hover { - background: #d73925; - } -} -.skin-red-light .main-header .logo { - background-color: #dd4b39; - color: #ffffff; - border-bottom: 0px solid transparent; -} -.skin-red-light .main-header .logo:hover { - background-color: #dc4735; -} -.skin-red-light .main-header li.user-header { - background-color: #dd4b39; -} -.skin-red-light .content-header { - background: transparent; -} -.skin-red-light .wrapper, -.skin-red-light .main-sidebar, -.skin-red-light .left-side { - background-color: #f9fafc; -} -.skin-red-light .content-wrapper, -.skin-red-light .main-footer { - border-left: 1px solid #d2d6de; -} -.skin-red-light .user-panel > .info, -.skin-red-light .user-panel > .info > a { - color: #444444; -} -.skin-red-light .sidebar-menu > li { - -webkit-transition: border-left-color 0.3s ease; - -o-transition: border-left-color 0.3s ease; - transition: border-left-color 0.3s ease; -} -.skin-red-light .sidebar-menu > li.header { - color: #848484; - background: #f9fafc; -} -.skin-red-light .sidebar-menu > li > a { - border-left: 3px solid transparent; - font-weight: 600; -} -.skin-red-light .sidebar-menu > li:hover > a, -.skin-red-light .sidebar-menu > li.active > a { - color: #000000; - background: #f4f4f5; -} -.skin-red-light .sidebar-menu > li.active { - border-left-color: #dd4b39; -} -.skin-red-light .sidebar-menu > li.active > a { - font-weight: 600; -} -.skin-red-light .sidebar-menu > li > .treeview-menu { - background: #f4f4f5; -} -.skin-red-light .sidebar a { - color: #444444; -} -.skin-red-light .sidebar a:hover { - text-decoration: none; -} -.skin-red-light .treeview-menu > li > a { - color: #777777; -} -.skin-red-light .treeview-menu > li.active > a, -.skin-red-light .treeview-menu > li > a:hover { - color: #000000; -} -.skin-red-light .treeview-menu > li.active > a { - font-weight: 600; -} -.skin-red-light .sidebar-form { - border-radius: 3px; - border: 1px solid #d2d6de; - margin: 10px 10px; -} -.skin-red-light .sidebar-form input[type="text"], -.skin-red-light .sidebar-form .btn { - box-shadow: none; - background-color: #fff; - border: 1px solid transparent; - height: 35px; - -webkit-transition: all 0.3s ease-in-out; - -o-transition: all 0.3s ease-in-out; - transition: all 0.3s ease-in-out; -} -.skin-red-light .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px !important; - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; - border-bottom-left-radius: 2px !important; -} -.skin-red-light .sidebar-form input[type="text"]:focus, -.skin-red-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-red-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-red-light .sidebar-form .btn { - color: #999; - border-top-left-radius: 0 !important; - border-top-right-radius: 2px !important; - border-bottom-right-radius: 2px !important; - border-bottom-left-radius: 0 !important; -} -@media (min-width: 768px) { - .skin-red-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { - border-left: 1px solid #d2d6de; - } -} diff --git a/assets/dist/css/skins/skin-red-light.min.css b/assets/dist/css/skins/skin-red-light.min.css deleted file mode 100644 index 231269e2..00000000 --- a/assets/dist/css/skins/skin-red-light.min.css +++ /dev/null @@ -1 +0,0 @@ -.skin-red-light .main-header .navbar{background-color:#dd4b39}.skin-red-light .main-header .navbar .nav>li>a{color:#fff}.skin-red-light .main-header .navbar .nav>li>a:hover,.skin-red-light .main-header .navbar .nav>li>a:active,.skin-red-light .main-header .navbar .nav>li>a:focus,.skin-red-light .main-header .navbar .nav .open>a,.skin-red-light .main-header .navbar .nav .open>a:hover,.skin-red-light .main-header .navbar .nav .open>a:focus{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-red-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-red-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-red-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-red-light .main-header .navbar .sidebar-toggle:hover{background-color:#d73925}@media (max-width:767px){.skin-red-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-red-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-red-light .main-header .navbar .dropdown-menu li a:hover{background:#d73925}}.skin-red-light .main-header .logo{background-color:#dd4b39;color:#fff;border-bottom:0 solid transparent}.skin-red-light .main-header .logo:hover{background-color:#dc4735}.skin-red-light .main-header li.user-header{background-color:#dd4b39}.skin-red-light .content-header{background:transparent}.skin-red-light .wrapper,.skin-red-light .main-sidebar,.skin-red-light .left-side{background-color:#f9fafc}.skin-red-light .content-wrapper,.skin-red-light .main-footer{border-left:1px solid #d2d6de}.skin-red-light .user-panel>.info,.skin-red-light .user-panel>.info>a{color:#444}.skin-red-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-red-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-red-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-red-light .sidebar-menu>li:hover>a,.skin-red-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-red-light .sidebar-menu>li.active{border-left-color:#dd4b39}.skin-red-light .sidebar-menu>li.active>a{font-weight:600}.skin-red-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-red-light .sidebar a{color:#444}.skin-red-light .sidebar a:hover{text-decoration:none}.skin-red-light .treeview-menu>li>a{color:#777}.skin-red-light .treeview-menu>li.active>a,.skin-red-light .treeview-menu>li>a:hover{color:#000}.skin-red-light .treeview-menu>li.active>a{font-weight:600}.skin-red-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-red-light .sidebar-form input[type="text"],.skin-red-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-red-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important;border-bottom-left-radius:2px !important}.skin-red-light .sidebar-form input[type="text"]:focus,.skin-red-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-red-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-red-light .sidebar-form .btn{color:#999;border-top-left-radius:0 !important;border-top-right-radius:2px !important;border-bottom-right-radius:2px !important;border-bottom-left-radius:0 !important}@media (min-width:768px){.skin-red-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}} \ No newline at end of file diff --git a/assets/dist/css/skins/skin-red.css b/assets/dist/css/skins/skin-red.css deleted file mode 100644 index cec45488..00000000 --- a/assets/dist/css/skins/skin-red.css +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Skin: Red - * --------- - */ -.skin-red .main-header .navbar { - background-color: #dd4b39; -} -.skin-red .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-red .main-header .navbar .nav > li > a:hover, -.skin-red .main-header .navbar .nav > li > a:active, -.skin-red .main-header .navbar .nav > li > a:focus, -.skin-red .main-header .navbar .nav .open > a, -.skin-red .main-header .navbar .nav .open > a:hover, -.skin-red .main-header .navbar .nav .open > a:focus { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-red .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-red .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-red .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-red .main-header .navbar .sidebar-toggle:hover { - background-color: #d73925; -} -@media (max-width: 767px) { - .skin-red .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-red .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-red .main-header .navbar .dropdown-menu li a:hover { - background: #d73925; - } -} -.skin-red .main-header .logo { - background-color: #d73925; - color: #ffffff; - border-bottom: 0px solid transparent; -} -.skin-red .main-header .logo:hover { - background-color: #d33724; -} -.skin-red .main-header li.user-header { - background-color: #dd4b39; -} -.skin-red .content-header { - background: transparent; -} -.skin-red .wrapper, -.skin-red .main-sidebar, -.skin-red .left-side { - background-color: #222d32; -} -.skin-red .user-panel > .info, -.skin-red .user-panel > .info > a { - color: #fff; -} -.skin-red .sidebar-menu > li.header { - color: #4b646f; - background: #1a2226; -} -.skin-red .sidebar-menu > li > a { - border-left: 3px solid transparent; -} -.skin-red .sidebar-menu > li:hover > a, -.skin-red .sidebar-menu > li.active > a { - color: #ffffff; - background: #1e282c; - border-left-color: #dd4b39; -} -.skin-red .sidebar-menu > li > .treeview-menu { - margin: 0 1px; - background: #2c3b41; -} -.skin-red .sidebar a { - color: #b8c7ce; -} -.skin-red .sidebar a:hover { - text-decoration: none; -} -.skin-red .treeview-menu > li > a { - color: #8aa4af; -} -.skin-red .treeview-menu > li.active > a, -.skin-red .treeview-menu > li > a:hover { - color: #ffffff; -} -.skin-red .sidebar-form { - border-radius: 3px; - border: 1px solid #374850; - margin: 10px 10px; -} -.skin-red .sidebar-form input[type="text"], -.skin-red .sidebar-form .btn { - box-shadow: none; - background-color: #374850; - border: 1px solid transparent; - height: 35px; - -webkit-transition: all 0.3s ease-in-out; - -o-transition: all 0.3s ease-in-out; - transition: all 0.3s ease-in-out; -} -.skin-red .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px !important; - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; - border-bottom-left-radius: 2px !important; -} -.skin-red .sidebar-form input[type="text"]:focus, -.skin-red .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-red .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-red .sidebar-form .btn { - color: #999; - border-top-left-radius: 0 !important; - border-top-right-radius: 2px !important; - border-bottom-right-radius: 2px !important; - border-bottom-left-radius: 0 !important; -} diff --git a/assets/dist/css/skins/skin-red.min.css b/assets/dist/css/skins/skin-red.min.css deleted file mode 100644 index e78f1f7a..00000000 --- a/assets/dist/css/skins/skin-red.min.css +++ /dev/null @@ -1 +0,0 @@ -.skin-red .main-header .navbar{background-color:#dd4b39}.skin-red .main-header .navbar .nav>li>a{color:#fff}.skin-red .main-header .navbar .nav>li>a:hover,.skin-red .main-header .navbar .nav>li>a:active,.skin-red .main-header .navbar .nav>li>a:focus,.skin-red .main-header .navbar .nav .open>a,.skin-red .main-header .navbar .nav .open>a:hover,.skin-red .main-header .navbar .nav .open>a:focus{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-red .main-header .navbar .sidebar-toggle{color:#fff}.skin-red .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-red .main-header .navbar .sidebar-toggle{color:#fff}.skin-red .main-header .navbar .sidebar-toggle:hover{background-color:#d73925}@media (max-width:767px){.skin-red .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-red .main-header .navbar .dropdown-menu li a{color:#fff}.skin-red .main-header .navbar .dropdown-menu li a:hover{background:#d73925}}.skin-red .main-header .logo{background-color:#d73925;color:#fff;border-bottom:0 solid transparent}.skin-red .main-header .logo:hover{background-color:#d33724}.skin-red .main-header li.user-header{background-color:#dd4b39}.skin-red .content-header{background:transparent}.skin-red .wrapper,.skin-red .main-sidebar,.skin-red .left-side{background-color:#222d32}.skin-red .user-panel>.info,.skin-red .user-panel>.info>a{color:#fff}.skin-red .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-red .sidebar-menu>li>a{border-left:3px solid transparent}.skin-red .sidebar-menu>li:hover>a,.skin-red .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#dd4b39}.skin-red .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-red .sidebar a{color:#b8c7ce}.skin-red .sidebar a:hover{text-decoration:none}.skin-red .treeview-menu>li>a{color:#8aa4af}.skin-red .treeview-menu>li.active>a,.skin-red .treeview-menu>li>a:hover{color:#fff}.skin-red .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-red .sidebar-form input[type="text"],.skin-red .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-red .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important;border-bottom-left-radius:2px !important}.skin-red .sidebar-form input[type="text"]:focus,.skin-red .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-red .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-red .sidebar-form .btn{color:#999;border-top-left-radius:0 !important;border-top-right-radius:2px !important;border-bottom-right-radius:2px !important;border-bottom-left-radius:0 !important} \ No newline at end of file diff --git a/assets/dist/css/skins/skin-yellow-light.css b/assets/dist/css/skins/skin-yellow-light.css deleted file mode 100644 index f32a1cf4..00000000 --- a/assets/dist/css/skins/skin-yellow-light.css +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Skin: Yellow - * ------------ - */ -.skin-yellow-light .main-header .navbar { - background-color: #f39c12; -} -.skin-yellow-light .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-yellow-light .main-header .navbar .nav > li > a:hover, -.skin-yellow-light .main-header .navbar .nav > li > a:active, -.skin-yellow-light .main-header .navbar .nav > li > a:focus, -.skin-yellow-light .main-header .navbar .nav .open > a, -.skin-yellow-light .main-header .navbar .nav .open > a:hover, -.skin-yellow-light .main-header .navbar .nav .open > a:focus { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-yellow-light .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-yellow-light .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-yellow-light .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-yellow-light .main-header .navbar .sidebar-toggle:hover { - background-color: #e08e0b; -} -@media (max-width: 767px) { - .skin-yellow-light .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-yellow-light .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-yellow-light .main-header .navbar .dropdown-menu li a:hover { - background: #e08e0b; - } -} -.skin-yellow-light .main-header .logo { - background-color: #f39c12; - color: #ffffff; - border-bottom: 0px solid transparent; -} -.skin-yellow-light .main-header .logo:hover { - background-color: #f39a0d; -} -.skin-yellow-light .main-header li.user-header { - background-color: #f39c12; -} -.skin-yellow-light .content-header { - background: transparent; -} -.skin-yellow-light .wrapper, -.skin-yellow-light .main-sidebar, -.skin-yellow-light .left-side { - background-color: #f9fafc; -} -.skin-yellow-light .content-wrapper, -.skin-yellow-light .main-footer { - border-left: 1px solid #d2d6de; -} -.skin-yellow-light .user-panel > .info, -.skin-yellow-light .user-panel > .info > a { - color: #444444; -} -.skin-yellow-light .sidebar-menu > li { - -webkit-transition: border-left-color 0.3s ease; - -o-transition: border-left-color 0.3s ease; - transition: border-left-color 0.3s ease; -} -.skin-yellow-light .sidebar-menu > li.header { - color: #848484; - background: #f9fafc; -} -.skin-yellow-light .sidebar-menu > li > a { - border-left: 3px solid transparent; - font-weight: 600; -} -.skin-yellow-light .sidebar-menu > li:hover > a, -.skin-yellow-light .sidebar-menu > li.active > a { - color: #000000; - background: #f4f4f5; -} -.skin-yellow-light .sidebar-menu > li.active { - border-left-color: #f39c12; -} -.skin-yellow-light .sidebar-menu > li.active > a { - font-weight: 600; -} -.skin-yellow-light .sidebar-menu > li > .treeview-menu { - background: #f4f4f5; -} -.skin-yellow-light .sidebar a { - color: #444444; -} -.skin-yellow-light .sidebar a:hover { - text-decoration: none; -} -.skin-yellow-light .treeview-menu > li > a { - color: #777777; -} -.skin-yellow-light .treeview-menu > li.active > a, -.skin-yellow-light .treeview-menu > li > a:hover { - color: #000000; -} -.skin-yellow-light .treeview-menu > li.active > a { - font-weight: 600; -} -.skin-yellow-light .sidebar-form { - border-radius: 3px; - border: 1px solid #d2d6de; - margin: 10px 10px; -} -.skin-yellow-light .sidebar-form input[type="text"], -.skin-yellow-light .sidebar-form .btn { - box-shadow: none; - background-color: #fff; - border: 1px solid transparent; - height: 35px; - -webkit-transition: all 0.3s ease-in-out; - -o-transition: all 0.3s ease-in-out; - transition: all 0.3s ease-in-out; -} -.skin-yellow-light .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px !important; - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; - border-bottom-left-radius: 2px !important; -} -.skin-yellow-light .sidebar-form input[type="text"]:focus, -.skin-yellow-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-yellow-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-yellow-light .sidebar-form .btn { - color: #999; - border-top-left-radius: 0 !important; - border-top-right-radius: 2px !important; - border-bottom-right-radius: 2px !important; - border-bottom-left-radius: 0 !important; -} -@media (min-width: 768px) { - .skin-yellow-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { - border-left: 1px solid #d2d6de; - } -} diff --git a/assets/dist/css/skins/skin-yellow-light.min.css b/assets/dist/css/skins/skin-yellow-light.min.css deleted file mode 100644 index acbe19e1..00000000 --- a/assets/dist/css/skins/skin-yellow-light.min.css +++ /dev/null @@ -1 +0,0 @@ -.skin-yellow-light .main-header .navbar{background-color:#f39c12}.skin-yellow-light .main-header .navbar .nav>li>a{color:#fff}.skin-yellow-light .main-header .navbar .nav>li>a:hover,.skin-yellow-light .main-header .navbar .nav>li>a:active,.skin-yellow-light .main-header .navbar .nav>li>a:focus,.skin-yellow-light .main-header .navbar .nav .open>a,.skin-yellow-light .main-header .navbar .nav .open>a:hover,.skin-yellow-light .main-header .navbar .nav .open>a:focus{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-yellow-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-yellow-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow-light .main-header .navbar .sidebar-toggle:hover{background-color:#e08e0b}@media (max-width:767px){.skin-yellow-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-yellow-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-yellow-light .main-header .navbar .dropdown-menu li a:hover{background:#e08e0b}}.skin-yellow-light .main-header .logo{background-color:#f39c12;color:#fff;border-bottom:0 solid transparent}.skin-yellow-light .main-header .logo:hover{background-color:#f39a0d}.skin-yellow-light .main-header li.user-header{background-color:#f39c12}.skin-yellow-light .content-header{background:transparent}.skin-yellow-light .wrapper,.skin-yellow-light .main-sidebar,.skin-yellow-light .left-side{background-color:#f9fafc}.skin-yellow-light .content-wrapper,.skin-yellow-light .main-footer{border-left:1px solid #d2d6de}.skin-yellow-light .user-panel>.info,.skin-yellow-light .user-panel>.info>a{color:#444}.skin-yellow-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-yellow-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-yellow-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-yellow-light .sidebar-menu>li:hover>a,.skin-yellow-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-yellow-light .sidebar-menu>li.active{border-left-color:#f39c12}.skin-yellow-light .sidebar-menu>li.active>a{font-weight:600}.skin-yellow-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-yellow-light .sidebar a{color:#444}.skin-yellow-light .sidebar a:hover{text-decoration:none}.skin-yellow-light .treeview-menu>li>a{color:#777}.skin-yellow-light .treeview-menu>li.active>a,.skin-yellow-light .treeview-menu>li>a:hover{color:#000}.skin-yellow-light .treeview-menu>li.active>a{font-weight:600}.skin-yellow-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-yellow-light .sidebar-form input[type="text"],.skin-yellow-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-yellow-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important;border-bottom-left-radius:2px !important}.skin-yellow-light .sidebar-form input[type="text"]:focus,.skin-yellow-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-yellow-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-yellow-light .sidebar-form .btn{color:#999;border-top-left-radius:0 !important;border-top-right-radius:2px !important;border-bottom-right-radius:2px !important;border-bottom-left-radius:0 !important}@media (min-width:768px){.skin-yellow-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}} \ No newline at end of file diff --git a/assets/dist/css/skins/skin-yellow.css b/assets/dist/css/skins/skin-yellow.css deleted file mode 100644 index a852689d..00000000 --- a/assets/dist/css/skins/skin-yellow.css +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Skin: Yellow - * ------------ - */ -.skin-yellow .main-header .navbar { - background-color: #f39c12; -} -.skin-yellow .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-yellow .main-header .navbar .nav > li > a:hover, -.skin-yellow .main-header .navbar .nav > li > a:active, -.skin-yellow .main-header .navbar .nav > li > a:focus, -.skin-yellow .main-header .navbar .nav .open > a, -.skin-yellow .main-header .navbar .nav .open > a:hover, -.skin-yellow .main-header .navbar .nav .open > a:focus { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-yellow .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-yellow .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-yellow .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-yellow .main-header .navbar .sidebar-toggle:hover { - background-color: #e08e0b; -} -@media (max-width: 767px) { - .skin-yellow .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-yellow .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-yellow .main-header .navbar .dropdown-menu li a:hover { - background: #e08e0b; - } -} -.skin-yellow .main-header .logo { - background-color: #e08e0b; - color: #ffffff; - border-bottom: 0px solid transparent; -} -.skin-yellow .main-header .logo:hover { - background-color: #db8b0b; -} -.skin-yellow .main-header li.user-header { - background-color: #f39c12; -} -.skin-yellow .content-header { - background: transparent; -} -.skin-yellow .wrapper, -.skin-yellow .main-sidebar, -.skin-yellow .left-side { - background-color: #222d32; -} -.skin-yellow .user-panel > .info, -.skin-yellow .user-panel > .info > a { - color: #fff; -} -.skin-yellow .sidebar-menu > li.header { - color: #4b646f; - background: #1a2226; -} -.skin-yellow .sidebar-menu > li > a { - border-left: 3px solid transparent; -} -.skin-yellow .sidebar-menu > li:hover > a, -.skin-yellow .sidebar-menu > li.active > a { - color: #ffffff; - background: #1e282c; - border-left-color: #f39c12; -} -.skin-yellow .sidebar-menu > li > .treeview-menu { - margin: 0 1px; - background: #2c3b41; -} -.skin-yellow .sidebar a { - color: #b8c7ce; -} -.skin-yellow .sidebar a:hover { - text-decoration: none; -} -.skin-yellow .treeview-menu > li > a { - color: #8aa4af; -} -.skin-yellow .treeview-menu > li.active > a, -.skin-yellow .treeview-menu > li > a:hover { - color: #ffffff; -} -.skin-yellow .sidebar-form { - border-radius: 3px; - border: 1px solid #374850; - margin: 10px 10px; -} -.skin-yellow .sidebar-form input[type="text"], -.skin-yellow .sidebar-form .btn { - box-shadow: none; - background-color: #374850; - border: 1px solid transparent; - height: 35px; - -webkit-transition: all 0.3s ease-in-out; - -o-transition: all 0.3s ease-in-out; - transition: all 0.3s ease-in-out; -} -.skin-yellow .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px !important; - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; - border-bottom-left-radius: 2px !important; -} -.skin-yellow .sidebar-form input[type="text"]:focus, -.skin-yellow .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-yellow .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-yellow .sidebar-form .btn { - color: #999; - border-top-left-radius: 0 !important; - border-top-right-radius: 2px !important; - border-bottom-right-radius: 2px !important; - border-bottom-left-radius: 0 !important; -} diff --git a/assets/dist/css/skins/skin-yellow.min.css b/assets/dist/css/skins/skin-yellow.min.css deleted file mode 100644 index c6df4f07..00000000 --- a/assets/dist/css/skins/skin-yellow.min.css +++ /dev/null @@ -1 +0,0 @@ -.skin-yellow .main-header .navbar{background-color:#f39c12}.skin-yellow .main-header .navbar .nav>li>a{color:#fff}.skin-yellow .main-header .navbar .nav>li>a:hover,.skin-yellow .main-header .navbar .nav>li>a:active,.skin-yellow .main-header .navbar .nav>li>a:focus,.skin-yellow .main-header .navbar .nav .open>a,.skin-yellow .main-header .navbar .nav .open>a:hover,.skin-yellow .main-header .navbar .nav .open>a:focus{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-yellow .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-yellow .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow .main-header .navbar .sidebar-toggle:hover{background-color:#e08e0b}@media (max-width:767px){.skin-yellow .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-yellow .main-header .navbar .dropdown-menu li a{color:#fff}.skin-yellow .main-header .navbar .dropdown-menu li a:hover{background:#e08e0b}}.skin-yellow .main-header .logo{background-color:#e08e0b;color:#fff;border-bottom:0 solid transparent}.skin-yellow .main-header .logo:hover{background-color:#db8b0b}.skin-yellow .main-header li.user-header{background-color:#f39c12}.skin-yellow .content-header{background:transparent}.skin-yellow .wrapper,.skin-yellow .main-sidebar,.skin-yellow .left-side{background-color:#222d32}.skin-yellow .user-panel>.info,.skin-yellow .user-panel>.info>a{color:#fff}.skin-yellow .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-yellow .sidebar-menu>li>a{border-left:3px solid transparent}.skin-yellow .sidebar-menu>li:hover>a,.skin-yellow .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#f39c12}.skin-yellow .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-yellow .sidebar a{color:#b8c7ce}.skin-yellow .sidebar a:hover{text-decoration:none}.skin-yellow .treeview-menu>li>a{color:#8aa4af}.skin-yellow .treeview-menu>li.active>a,.skin-yellow .treeview-menu>li>a:hover{color:#fff}.skin-yellow .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-yellow .sidebar-form input[type="text"],.skin-yellow .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-yellow .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important;border-bottom-left-radius:2px !important}.skin-yellow .sidebar-form input[type="text"]:focus,.skin-yellow .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-yellow .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-yellow .sidebar-form .btn{color:#999;border-top-left-radius:0 !important;border-top-right-radius:2px !important;border-bottom-right-radius:2px !important;border-bottom-left-radius:0 !important} \ No newline at end of file diff --git a/assets/dist/img/avatar.png b/assets/dist/img/avatar.png deleted file mode 100644 index 0ef6233d..00000000 Binary files a/assets/dist/img/avatar.png and /dev/null differ diff --git a/assets/dist/img/avatar04.png b/assets/dist/img/avatar04.png deleted file mode 100644 index 63fa709b..00000000 Binary files a/assets/dist/img/avatar04.png and /dev/null differ diff --git a/assets/dist/img/avatar2.png b/assets/dist/img/avatar2.png deleted file mode 100644 index 5330c223..00000000 Binary files a/assets/dist/img/avatar2.png and /dev/null differ diff --git a/assets/dist/img/avatar3.png b/assets/dist/img/avatar3.png deleted file mode 100644 index b1afb21b..00000000 Binary files a/assets/dist/img/avatar3.png and /dev/null differ diff --git a/assets/dist/img/avatar5.png b/assets/dist/img/avatar5.png deleted file mode 100644 index 29ce6343..00000000 Binary files a/assets/dist/img/avatar5.png and /dev/null differ diff --git a/assets/dist/img/boxed-bg.jpg b/assets/dist/img/boxed-bg.jpg deleted file mode 100644 index e47586ab..00000000 Binary files a/assets/dist/img/boxed-bg.jpg and /dev/null differ diff --git a/assets/dist/img/boxed-bg.png b/assets/dist/img/boxed-bg.png deleted file mode 100644 index 2f9f1ad0..00000000 Binary files a/assets/dist/img/boxed-bg.png and /dev/null differ diff --git a/assets/dist/img/credit/american-express.png b/assets/dist/img/credit/american-express.png deleted file mode 100644 index fbe9ce2c..00000000 Binary files a/assets/dist/img/credit/american-express.png and /dev/null differ diff --git a/assets/dist/img/credit/cirrus.png b/assets/dist/img/credit/cirrus.png deleted file mode 100644 index 03d2bd6a..00000000 Binary files a/assets/dist/img/credit/cirrus.png and /dev/null differ diff --git a/assets/dist/img/credit/mastercard.png b/assets/dist/img/credit/mastercard.png deleted file mode 100644 index f709adba..00000000 Binary files a/assets/dist/img/credit/mastercard.png and /dev/null differ diff --git a/assets/dist/img/credit/mestro.png b/assets/dist/img/credit/mestro.png deleted file mode 100644 index c22ddeaf..00000000 Binary files a/assets/dist/img/credit/mestro.png and /dev/null differ diff --git a/assets/dist/img/credit/paypal.png b/assets/dist/img/credit/paypal.png deleted file mode 100644 index a7e1458f..00000000 Binary files a/assets/dist/img/credit/paypal.png and /dev/null differ diff --git a/assets/dist/img/credit/paypal2.png b/assets/dist/img/credit/paypal2.png deleted file mode 100644 index b0ca241b..00000000 Binary files a/assets/dist/img/credit/paypal2.png and /dev/null differ diff --git a/assets/dist/img/credit/visa.png b/assets/dist/img/credit/visa.png deleted file mode 100644 index 7099cdf4..00000000 Binary files a/assets/dist/img/credit/visa.png and /dev/null differ diff --git a/assets/dist/img/default-50x50.gif b/assets/dist/img/default-50x50.gif deleted file mode 100644 index 2f5a14a5..00000000 Binary files a/assets/dist/img/default-50x50.gif and /dev/null differ diff --git a/assets/dist/img/icons.png b/assets/dist/img/icons.png deleted file mode 100644 index 1663a0bd..00000000 Binary files a/assets/dist/img/icons.png and /dev/null differ diff --git a/assets/dist/img/logo.png b/assets/dist/img/logo.png deleted file mode 100644 index 21cf3a71..00000000 Binary files a/assets/dist/img/logo.png and /dev/null differ diff --git a/assets/dist/img/red.png b/assets/dist/img/red.png deleted file mode 100644 index 5b1bfd28..00000000 Binary files a/assets/dist/img/red.png and /dev/null differ diff --git a/assets/dist/jquery.loader.css b/assets/dist/jquery.loader.css deleted file mode 100644 index 8826a55d..00000000 --- a/assets/dist/jquery.loader.css +++ /dev/null @@ -1,73 +0,0 @@ -/* .loader ------------------------------------------------------------------------------------------*/ -.loader { - height: 40px; - left: 50%; - margin: -20px 0 0 -20px; - overflow: hidden; - position: absolute; - right: 0; - top: 50%; - width: 40px; - z-index: 1999; -} -.loader .loader-load { - background: #000000 url(loader.gif) no-repeat 50% 50%; - -webkit-border-radius: 5px; - -khtml-border-radius: 5px; - -moz-border-radius: 5px; - -ms-border-radius: 5px; - -o-border-radius: 5px; - border-radius: 5px; - cursor: pointer; - height: 40px; - left: 50%; - margin: -20px 0 0 -20px; - -webkit-opacity: 0.8; - -khtml-opacity: 0.8; - -moz-opacity: 0.8; - -ms-opacity: 0.8; - -o-opacity: 0.8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80); - opacity: 0.8; - overflow: hidden; - position: absolute; - top: 50%; - width: 40px; - z-index: 1000; -} -.loader .loader-overlay { - background: #000; - bottom: 0; - display: none; - height: 100%; - left: 0; - -webkit-opacity: 0.6; - -khtml-opacity: 0.6; - -moz-opacity: 0.6; - -ms-opacity: 0.6; - -o-opacity: 0.6; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; - filter: alpha(opacity=60); - opacity: 0.6; - position: absolute; - right: 0; - top: 0; - width: 100%; -} -.loader.hide { - display: none !important; -} -.loader.overlay { - bottom: 0; - height: 100%; - left: 0; - margin: 0; - right: 0; - top: 0; - width: 100%; -} -.loader.overlay .loader-overlay { - display: block; -} diff --git a/assets/dist/jquery.loader.js b/assets/dist/jquery.loader.js deleted file mode 100644 index 6bf3b3b0..00000000 --- a/assets/dist/jquery.loader.js +++ /dev/null @@ -1,111 +0,0 @@ -/** - * jQuery.loader Plugin - * @author Stéphan Zych <info@monkeymonk.be> - * @copyriht 2010-2011 Stéphan Zych <info@monkeymonk.be> - * @license New BSD License <http://creativecommons.org/licenses/BSD/> - */ - -(function ($) { - "use strict"; - - - var render = function (template, data) { - for (var k in data) { - template = template.replace(new RegExp('{' + k + '}', 'g'), data[k]); - } - - return template; - }; // render - - var Loader = function () { - var defaults = { - className: 'loader', - - tpl: '<div class="{className} hide"><div class="{className}-load"></div><div class="{className}-overlay"></div></div>', - - delay: 200, - loader: true, - overlay: true, - - onHide: function () {}, - onShow: function () {} - }; // defaults - - var init = function (oParams) { - return this.each(function () { - defaults = $.extend({}, defaults, oParams); - - var $self = $(this), $loader; - - $self.append(render(defaults.tpl, defaults)); - $loader = $('> .' + defaults.className, $self); - - if (defaults.overlay) { - $loader.addClass('overlay'); - } - - if (defaults.loader) { - $('.' + defaults.className + '-load', $loader) - .on('click', function () { - $self.loader('hide', defaults.onHide); - }); - } - }); - }; // init - - var show = function (oParams) { - defaults = $.extend({}, defaults, oParams); - - var self = this, $self = $(self), $loader = $('> .' + defaults.className + ':first', $self); - - if (!$loader.length) { - init.call(self, oParams); - $loader = $('> .' + defaults.className + ':first', $self); - } - - $loader.fadeIn(defaults.delay, function () { - $loader.removeClass('hide'); - - defaults.onShow(defaults); - }); - }; // show - - var hide = function (onHide) { - defaults = $.extend({}, defaults, {onHide: onHide}); - - var self = this, $self = $(self), $loader = $('> .' + defaults.className + ':first', $self); - - if ($loader.length) { - $loader.fadeOut(defaults.delay, function () { - $loader.addClass('hide'); - - defaults.onHide(defaults); - }); - } - }; // hide - - return { - init: init, - show: show, - hide: hide - }; - }; // Loader - - - $.fn.loader = function (options) { - if (!$.data(this, 'loader')) { - $.data(this, 'loader', new Loader(this, options)); - } - - var plugin = $.data(this, 'loader'); - - if (plugin[options]) { - return plugin[options].apply(this, Array.prototype.slice.call(arguments, 1)); - } else if (typeof options === 'object' || !options) { - return plugin.init.apply(this, arguments); - } else { - $.error('Method "' + arguments[0] + '" does not exist in $.loader plugin!'); - } - }; // $.fn.loader - -} (jQuery)); // jQuery.loader() by Stéphan Zych (monkeymonk.be) \ No newline at end of file diff --git a/assets/dist/js/app.js b/assets/dist/js/app.js deleted file mode 100644 index 87b430d2..00000000 --- a/assets/dist/js/app.js +++ /dev/null @@ -1,703 +0,0 @@ -/*! AdminLTE app.js - * ================ - * Main JS application file for AdminLTE v2. This file - * should be included in all pages. It controls some layout - * options and implements exclusive AdminLTE plugins. - * - * @Author Almsaeed Studio - * @Support <http://www.almsaeedstudio.com> - * @Email <support@almsaeedstudio.com> - * @version 2.1.0 - * @license MIT <http://opensource.org/licenses/MIT> - */ - -'use strict'; - -//Make sure jQuery has been loaded before app.js -if (typeof jQuery === "undefined") { - throw new Error("AdminLTE requires jQuery"); -} - -/* AdminLTE - * - * @type Object - * @description $.AdminLTE is the main object for the template's app. - * It's used for implementing functions and options related - * to the template. Keeping everything wrapped in an object - * prevents conflict with other plugins and is a better - * way to organize our code. - */ -$.AdminLTE = {}; - -/* -------------------- - * - AdminLTE Options - - * -------------------- - * Modify these options to suit your implementation - */ -$.AdminLTE.options = { - //Add slimscroll to navbar menus - //This requires you to load the slimscroll plugin - //in every page before app.js - navbarMenuSlimscroll: true, - navbarMenuSlimscrollWidth: "3px", //The width of the scroll bar - navbarMenuHeight: "200px", //The height of the inner menu - //Sidebar push menu toggle button selector - sidebarToggleSelector: "[data-toggle='offcanvas']", - //Activate sidebar push menu - sidebarPushMenu: true, - //Activate sidebar slimscroll if the fixed layout is set (requires SlimScroll Plugin) - sidebarSlimScroll: true, - //Enable sidebar expand on hover effect for sidebar mini - //This option is forced to true if both the fixed layout and sidebar mini - //are used together - sidebarExpandOnHover: false, - //BoxRefresh Plugin - enableBoxRefresh: true, - //Bootstrap.js tooltip - enableBSToppltip: true, - BSTooltipSelector: "[data-toggle='tooltip']", - //Enable Fast Click. Fastclick.js creates a more - //native touch experience with touch devices. If you - //choose to enable the plugin, make sure you load the script - //before AdminLTE's app.js - enableFastclick: true, - //Control Sidebar Options - enableControlSidebar: true, - controlSidebarOptions: { - //Which button should trigger the open/close event - toggleBtnSelector: "[data-toggle='control-sidebar']", - //The sidebar selector - selector: ".control-sidebar", - //Enable slide over content - slide: true - }, - //Box Widget Plugin. Enable this plugin - //to allow boxes to be collapsed and/or removed - enableBoxWidget: true, - //Box Widget plugin options - boxWidgetOptions: { - boxWidgetIcons: { - //Collapse icon - collapse: 'fa-minus', - //Open icon - open: 'fa-plus', - //Remove icon - remove: 'fa-times' - }, - boxWidgetSelectors: { - //Remove button selector - remove: '[data-widget="remove"]', - //Collapse button selector - collapse: '[data-widget="collapse"]' - } - }, - //Direct Chat plugin options - directChat: { - //Enable direct chat by default - enable: true, - //The button to open and close the chat contacts pane - contactToggleSelector: '[data-widget="chat-pane-toggle"]' - }, - //Define the set of colors to use globally around the website - colors: { - lightBlue: "#3c8dbc", - red: "#f56954", - green: "#00a65a", - aqua: "#00c0ef", - yellow: "#f39c12", - blue: "#0073b7", - navy: "#001F3F", - teal: "#39CCCC", - olive: "#3D9970", - lime: "#01FF70", - orange: "#FF851B", - fuchsia: "#F012BE", - purple: "#8E24AA", - maroon: "#D81B60", - black: "#222222", - gray: "#d2d6de" - }, - //The standard screen sizes that bootstrap uses. - //If you change these in the variables.less file, change - //them here too. - screenSizes: { - xs: 480, - sm: 768, - md: 992, - lg: 1200 - } -}; - -/* ------------------ - * - Implementation - - * ------------------ - * The next block of code implements AdminLTE's - * functions and plugins as specified by the - * options above. - */ -$(function () { - //Extend options if external options exist - if (typeof AdminLTEOptions !== "undefined") { - $.extend(true, - $.AdminLTE.options, - AdminLTEOptions); - } - - //Easy access to options - var o = $.AdminLTE.options; - - //Set up the object - _init(); - - //Activate the layout maker - $.AdminLTE.layout.activate(); - - //Enable sidebar tree view controls - $.AdminLTE.tree('.sidebar'); - - //Enable control sidebar - if (o.enableControlSidebar) { - $.AdminLTE.controlSidebar.activate(); - } - - //Add slimscroll to navbar dropdown - if (o.navbarMenuSlimscroll && typeof $.fn.slimscroll != 'undefined') { - $(".navbar .menu").slimscroll({ - height: o.navbarMenuHeight, - alwaysVisible: false, - size: o.navbarMenuSlimscrollWidth - }).css("width", "100%"); - } - - //Activate sidebar push menu - if (o.sidebarPushMenu) { - $.AdminLTE.pushMenu.activate(o.sidebarToggleSelector); - } - - //Activate Bootstrap tooltip - if (o.enableBSToppltip) { - $('body').tooltip({ - selector: o.BSTooltipSelector - }); - } - - //Activate box widget - if (o.enableBoxWidget) { - $.AdminLTE.boxWidget.activate(); - } - - //Activate fast click - if (o.enableFastclick && typeof FastClick != 'undefined') { - FastClick.attach(document.body); - } - - //Activate direct chat widget - if (o.directChat.enable) { - $(o.directChat.contactToggleSelector).on('click', function () { - var box = $(this).parents('.direct-chat').first(); - box.toggleClass('direct-chat-contacts-open'); - }); - } - - /* - * INITIALIZE BUTTON TOGGLE - * ------------------------ - */ - $('.btn-group[data-toggle="btn-toggle"]').each(function () { - var group = $(this); - $(this).find(".btn").on('click', function (e) { - group.find(".btn.active").removeClass("active"); - $(this).addClass("active"); - e.preventDefault(); - }); - - }); -}); - -/* ---------------------------------- - * - Initialize the AdminLTE Object - - * ---------------------------------- - * All AdminLTE functions are implemented below. - */ -function _init() { - - /* Layout - * ====== - * Fixes the layout height in case min-height fails. - * - * @type Object - * @usage $.AdminLTE.layout.activate() - * $.AdminLTE.layout.fix() - * $.AdminLTE.layout.fixSidebar() - */ - $.AdminLTE.layout = { - activate: function () { - var _this = this; - _this.fix(); - _this.fixSidebar(); - $(window, ".wrapper").resize(function () { - _this.fix(); - _this.fixSidebar(); - }); - }, - fix: function () { - //Get window height and the wrapper height - var neg = $('.main-header').outerHeight() + $('.main-footer').outerHeight(); - var window_height = $(window).height(); - var sidebar_height = $(".sidebar").height(); - //Set the min-height of the content and sidebar based on the - //the height of the document. - if ($("body").hasClass("fixed")) { - $(".content-wrapper, .right-side").css('min-height', window_height - $('.main-footer').outerHeight()); - } else { - var postSetWidth; - if (window_height >= sidebar_height) { - $(".content-wrapper, .right-side").css('min-height', window_height - neg); - postSetWidth = window_height - neg; - } else { - $(".content-wrapper, .right-side").css('min-height', sidebar_height); - postSetWidth = sidebar_height; - } - - //Fix for the control sidebar height - var controlSidebar = $($.AdminLTE.options.controlSidebarOptions.selector); - if (typeof controlSidebar !== "undefined") { - if (controlSidebar.height() > postSetWidth) - $(".content-wrapper, .right-side").css('min-height', controlSidebar.height()); - } - - } - }, - fixSidebar: function () { - //Make sure the body tag has the .fixed class - if (!$("body").hasClass("fixed")) { - if (typeof $.fn.slimScroll != 'undefined') { - $(".sidebar").slimScroll({destroy: true}).height("auto"); - } - return; - } else if (typeof $.fn.slimScroll == 'undefined' && console) { - console.error("Error: the fixed layout requires the slimscroll plugin!"); - } - //Enable slimscroll for fixed layout - if ($.AdminLTE.options.sidebarSlimScroll) { - if (typeof $.fn.slimScroll != 'undefined') { - //Destroy if it exists - $(".sidebar").slimScroll({destroy: true}).height("auto"); - //Add slimscroll - $(".sidebar").slimscroll({ - height: ($(window).height() - $(".main-header").height()) + "px", - color: "rgba(0,0,0,0.2)", - size: "3px" - }); - } - } - } - }; - - /* PushMenu() - * ========== - * Adds the push menu functionality to the sidebar. - * - * @type Function - * @usage: $.AdminLTE.pushMenu("[data-toggle='offcanvas']") - */ - $.AdminLTE.pushMenu = { - activate: function (toggleBtn) { - //Get the screen sizes - var screenSizes = $.AdminLTE.options.screenSizes; - - //Enable sidebar toggle - $(toggleBtn).on('click', function (e) { - e.preventDefault(); - - //Enable sidebar push menu - if ($(window).width() > (screenSizes.sm - 1)) { - $("body").toggleClass('sidebar-collapse'); - } - //Handle sidebar push menu for small screens - else { - if ($("body").hasClass('sidebar-open')) { - $("body").removeClass('sidebar-open'); - $("body").removeClass('sidebar-collapse') - } else { - $("body").addClass('sidebar-open'); - } - } - }); - - $(".content-wrapper").click(function () { - //Enable hide menu when clicking on the content-wrapper on small screens - if ($(window).width() <= (screenSizes.sm - 1) && $("body").hasClass("sidebar-open")) { - $("body").removeClass('sidebar-open'); - } - }); - - //Enable expand on hover for sidebar mini - if ($.AdminLTE.options.sidebarExpandOnHover - || ($('body').hasClass('fixed') - && $('body').hasClass('sidebar-mini'))) { - this.expandOnHover(); - } - - }, - expandOnHover: function () { - var _this = this; - var screenWidth = $.AdminLTE.options.screenSizes.sm - 1; - //Expand sidebar on hover - $('.main-sidebar').hover(function () { - if ($('body').hasClass('sidebar-mini') - && $("body").hasClass('sidebar-collapse') - && $(window).width() > screenWidth) { - _this.expand(); - } - }, function () { - if ($('body').hasClass('sidebar-mini') - && $('body').hasClass('sidebar-expanded-on-hover') - && $(window).width() > screenWidth) { - _this.collapse(); - } - }); - }, - expand: function () { - $("body").removeClass('sidebar-collapse').addClass('sidebar-expanded-on-hover'); - }, - collapse: function () { - if ($('body').hasClass('sidebar-expanded-on-hover')) { - $('body').removeClass('sidebar-expanded-on-hover').addClass('sidebar-collapse'); - } - } - }; - - /* Tree() - * ====== - * Converts the sidebar into a multilevel - * tree view menu. - * - * @type Function - * @Usage: $.AdminLTE.tree('.sidebar') - */ - $.AdminLTE.tree = function (menu) { - var _this = this; - - $("li a", $(menu)).on('click', function (e) { - //Get the clicked link and the next element - var $this = $(this); - var checkElement = $this.next(); - - //Check if the next element is a menu and is visible - if ((checkElement.is('.treeview-menu')) && (checkElement.is(':visible'))) { - //Close the menu - checkElement.slideUp('normal', function () { - checkElement.removeClass('menu-open'); - //Fix the layout in case the sidebar stretches over the height of the window - //_this.layout.fix(); - }); - checkElement.parent("li").removeClass("active"); - } - //If the menu is not visible - else if ((checkElement.is('.treeview-menu')) && (!checkElement.is(':visible'))) { - //Get the parent menu - var parent = $this.parents('ul').first(); - //Close all open menus within the parent - var ul = parent.find('ul:visible').slideUp('normal'); - //Remove the menu-open class from the parent - ul.removeClass('menu-open'); - //Get the parent li - var parent_li = $this.parent("li"); - - //Open the target menu and add the menu-open class - checkElement.slideDown('normal', function () { - //Add the class active to the parent li - checkElement.addClass('menu-open'); - parent.find('li.active').removeClass('active'); - parent_li.addClass('active'); - //Fix the layout in case the sidebar stretches over the height of the window - _this.layout.fix(); - }); - } - //if this isn't a link, prevent the page from being redirected - if (checkElement.is('.treeview-menu')) { - e.preventDefault(); - } - }); - }; - - /* ControlSidebar - * ============== - * Adds functionality to the right sidebar - * - * @type Object - * @usage $.AdminLTE.controlSidebar.activate(options) - */ - $.AdminLTE.controlSidebar = { - //instantiate the object - activate: function () { - //Get the object - var _this = this; - //Update options - var o = $.AdminLTE.options.controlSidebarOptions; - //Get the sidebar - var sidebar = $(o.selector); - //The toggle button - var btn = $(o.toggleBtnSelector); - - //Listen to the click event - btn.on('click', function (e) { - e.preventDefault(); - //If the sidebar is not open - if (!sidebar.hasClass('control-sidebar-open') - && !$('body').hasClass('control-sidebar-open')) { - //Open the sidebar - _this.open(sidebar, o.slide); - } else { - _this.close(sidebar, o.slide); - } - }); - - //If the body has a boxed layout, fix the sidebar bg position - var bg = $(".control-sidebar-bg"); - _this._fix(bg); - - //If the body has a fixed layout, make the control sidebar fixed - if ($('body').hasClass('fixed')) { - _this._fixForFixed(sidebar); - } else { - //If the content height is less than the sidebar's height, force max height - if ($('.content-wrapper, .right-side').height() < sidebar.height()) { - _this._fixForContent(sidebar); - } - } - }, - //Open the control sidebar - open: function (sidebar, slide) { - var _this = this; - //Slide over content - if (slide) { - sidebar.addClass('control-sidebar-open'); - } else { - //Push the content by adding the open class to the body instead - //of the sidebar itself - $('body').addClass('control-sidebar-open'); - } - }, - //Close the control sidebar - close: function (sidebar, slide) { - if (slide) { - sidebar.removeClass('control-sidebar-open'); - } else { - $('body').removeClass('control-sidebar-open'); - } - }, - _fix: function (sidebar) { - var _this = this; - if ($("body").hasClass('layout-boxed')) { - sidebar.css('position', 'absolute'); - sidebar.height($(".wrapper").height()); - $(window).resize(function () { - _this._fix(sidebar); - }); - } else { - sidebar.css({ - 'position': 'fixed', - 'height': 'auto' - }); - } - }, - _fixForFixed: function (sidebar) { - sidebar.css({ - 'position': 'fixed', - 'max-height': '100%', - 'overflow': 'auto', - 'padding-bottom': '50px' - }); - }, - _fixForContent: function (sidebar) { - $(".content-wrapper, .right-side").css('min-height', sidebar.height()); - } - }; - - /* BoxWidget - * ========= - * BoxWidget is a plugin to handle collapsing and - * removing boxes from the screen. - * - * @type Object - * @usage $.AdminLTE.boxWidget.activate() - * Set all your options in the main $.AdminLTE.options object - */ - $.AdminLTE.boxWidget = { - selectors: $.AdminLTE.options.boxWidgetOptions.boxWidgetSelectors, - icons: $.AdminLTE.options.boxWidgetOptions.boxWidgetIcons, - activate: function () { - var _this = this; - //Listen for collapse event triggers - $(_this.selectors.collapse).on('click', function (e) { - e.preventDefault(); - _this.collapse($(this)); - }); - - //Listen for remove event triggers - $(_this.selectors.remove).on('click', function (e) { - e.preventDefault(); - _this.remove($(this)); - }); - }, - collapse: function (element) { - var _this = this; - //Find the box parent - var box = element.parents(".box").first(); - //Find the body and the footer - var box_content = box.find("> .box-body, > .box-footer"); - if (!box.hasClass("collapsed-box")) { - //Convert minus into plus - element.children(":first") - .removeClass(_this.icons.collapse) - .addClass(_this.icons.open); - //Hide the content - box_content.slideUp(300, function () { - box.addClass("collapsed-box"); - }); - } else { - //Convert plus into minus - element.children(":first") - .removeClass(_this.icons.open) - .addClass(_this.icons.collapse); - //Show the content - box_content.slideDown(300, function () { - box.removeClass("collapsed-box"); - }); - } - }, - remove: function (element) { - //Find the box parent - var box = element.parents(".box").first(); - box.slideUp(); - } - }; -} - -/* ------------------ - * - Custom Plugins - - * ------------------ - * All custom plugins are defined below. - */ - -/* - * BOX REFRESH BUTTON - * ------------------ - * This is a custom plugin to use with the component BOX. It allows you to add - * a refresh button to the box. It converts the box's state to a loading state. - * - * @type plugin - * @usage $("#box-widget").boxRefresh( options ); - */ -(function ($) { - - $.fn.boxRefresh = function (options) { - - // Render options - var settings = $.extend({ - //Refresh button selector - trigger: ".refresh-btn", - //File source to be loaded (e.g: ajax/src.php) - source: "", - //Callbacks - onLoadStart: function (box) { - }, //Right after the button has been clicked - onLoadDone: function (box) { - } //When the source has been loaded - - }, options); - - //The overlay - var overlay = $('<div class="overlay"><div class="fa fa-refresh fa-spin"></div></div>'); - - return this.each(function () { - //if a source is specified - if (settings.source === "") { - if (console) { - console.log("Please specify a source first - boxRefresh()"); - } - return; - } - //the box - var box = $(this); - //the button - var rBtn = box.find(settings.trigger).first(); - - //On trigger click - rBtn.on('click', function (e) { - e.preventDefault(); - //Add loading overlay - start(box); - - //Perform ajax call - box.find(".box-body").load(settings.source, function () { - done(box); - }); - }); - }); - - function start(box) { - //Add overlay and loading img - box.append(overlay); - - settings.onLoadStart.call(box); - } - - function done(box) { - //Remove overlay and loading img - box.find(overlay).remove(); - - settings.onLoadDone.call(box); - } - - }; - -})(jQuery); - -/* - * TODO LIST CUSTOM PLUGIN - * ----------------------- - * This plugin depends on iCheck plugin for checkbox and radio inputs - * - * @type plugin - * @usage $("#todo-widget").todolist( options ); - */ -(function ($) { - - $.fn.todolist = function (options) { - // Render options - var settings = $.extend({ - //When the user checks the input - onCheck: function (ele) { - }, - //When the user unchecks the input - onUncheck: function (ele) { - } - }, options); - - return this.each(function () { - - if (typeof $.fn.iCheck != 'undefined') { - $('input', this).on('ifChecked', function (event) { - var ele = $(this).parents("li").first(); - ele.toggleClass("done"); - settings.onCheck.call(ele); - }); - - $('input', this).on('ifUnchecked', function (event) { - var ele = $(this).parents("li").first(); - ele.toggleClass("done"); - settings.onUncheck.call(ele); - }); - } else { - $('input', this).on('change', function (event) { - var ele = $(this).parents("li").first(); - ele.toggleClass("done"); - settings.onCheck.call(ele); - }); - } - }); - }; -}(jQuery)); \ No newline at end of file diff --git a/assets/dist/js/app.min.js b/assets/dist/js/app.min.js deleted file mode 100644 index e61cc0fa..00000000 --- a/assets/dist/js/app.min.js +++ /dev/null @@ -1,13 +0,0 @@ -/*! AdminLTE app.js - * ================ - * Main JS application file for AdminLTE v2. This file - * should be included in all pages. It controls some layout - * options and implements exclusive AdminLTE plugins. - * - * @Author Almsaeed Studio - * @Support <http://www.almsaeedstudio.com> - * @Email <support@almsaeedstudio.com> - * @version 2.1.0 - * @license MIT <http://opensource.org/licenses/MIT> - */ -"use strict";function _init(){$.AdminLTE.layout={activate:function(){var a=this;a.fix(),a.fixSidebar(),$(window,".wrapper").resize(function(){a.fix(),a.fixSidebar()})},fix:function(){var a=$(".main-header").outerHeight()+$(".main-footer").outerHeight(),b=$(window).height(),c=$(".sidebar").height();if($("body").hasClass("fixed"))$(".content-wrapper, .right-side").css("min-height",b-$(".main-footer").outerHeight());else{var d;b>=c?($(".content-wrapper, .right-side").css("min-height",b-a),d=b-a):($(".content-wrapper, .right-side").css("min-height",c),d=c);var e=$($.AdminLTE.options.controlSidebarOptions.selector);"undefined"!=typeof e&&e.height()>d&&$(".content-wrapper, .right-side").css("min-height",e.height())}},fixSidebar:function(){return $("body").hasClass("fixed")?("undefined"==typeof $.fn.slimScroll&&console&&console.error("Error: the fixed layout requires the slimscroll plugin!"),void($.AdminLTE.options.sidebarSlimScroll&&"undefined"!=typeof $.fn.slimScroll&&($(".sidebar").slimScroll({destroy:!0}).height("auto"),$(".sidebar").slimscroll({height:$(window).height()-$(".main-header").height()+"px",color:"rgba(0,0,0,0.2)",size:"3px"})))):void("undefined"!=typeof $.fn.slimScroll&&$(".sidebar").slimScroll({destroy:!0}).height("auto"))}},$.AdminLTE.pushMenu={activate:function(a){var b=$.AdminLTE.options.screenSizes;$(a).on("click",function(a){a.preventDefault(),$(window).width()>b.sm-1?$("body").toggleClass("sidebar-collapse"):$("body").hasClass("sidebar-open")?($("body").removeClass("sidebar-open"),$("body").removeClass("sidebar-collapse")):$("body").addClass("sidebar-open")}),$(".content-wrapper").click(function(){$(window).width()<=b.sm-1&&$("body").hasClass("sidebar-open")&&$("body").removeClass("sidebar-open")}),($.AdminLTE.options.sidebarExpandOnHover||$("body").hasClass("fixed")&&$("body").hasClass("sidebar-mini"))&&this.expandOnHover()},expandOnHover:function(){var a=this,b=$.AdminLTE.options.screenSizes.sm-1;$(".main-sidebar").hover(function(){$("body").hasClass("sidebar-mini")&&$("body").hasClass("sidebar-collapse")&&$(window).width()>b&&a.expand()},function(){$("body").hasClass("sidebar-mini")&&$("body").hasClass("sidebar-expanded-on-hover")&&$(window).width()>b&&a.collapse()})},expand:function(){$("body").removeClass("sidebar-collapse").addClass("sidebar-expanded-on-hover")},collapse:function(){$("body").hasClass("sidebar-expanded-on-hover")&&$("body").removeClass("sidebar-expanded-on-hover").addClass("sidebar-collapse")}},$.AdminLTE.tree=function(a){var b=this;$("li a",$(a)).on("click",function(a){var c=$(this),d=c.next();if(d.is(".treeview-menu")&&d.is(":visible"))d.slideUp("normal",function(){d.removeClass("menu-open")}),d.parent("li").removeClass("active");else if(d.is(".treeview-menu")&&!d.is(":visible")){var e=c.parents("ul").first(),f=e.find("ul:visible").slideUp("normal");f.removeClass("menu-open");var g=c.parent("li");d.slideDown("normal",function(){d.addClass("menu-open"),e.find("li.active").removeClass("active"),g.addClass("active"),b.layout.fix()})}d.is(".treeview-menu")&&a.preventDefault()})},$.AdminLTE.controlSidebar={activate:function(){var a=this,b=$.AdminLTE.options.controlSidebarOptions,c=$(b.selector),d=$(b.toggleBtnSelector);d.on("click",function(d){d.preventDefault(),c.hasClass("control-sidebar-open")||$("body").hasClass("control-sidebar-open")?a.close(c,b.slide):a.open(c,b.slide)});var e=$(".control-sidebar-bg");a._fix(e),$("body").hasClass("fixed")?a._fixForFixed(c):$(".content-wrapper, .right-side").height()<c.height()&&a._fixForContent(c)},open:function(a,b){b?a.addClass("control-sidebar-open"):$("body").addClass("control-sidebar-open")},close:function(a,b){b?a.removeClass("control-sidebar-open"):$("body").removeClass("control-sidebar-open")},_fix:function(a){var b=this;$("body").hasClass("layout-boxed")?(a.css("position","absolute"),a.height($(".wrapper").height()),$(window).resize(function(){b._fix(a)})):a.css({position:"fixed",height:"auto"})},_fixForFixed:function(a){a.css({position:"fixed","max-height":"100%",overflow:"auto","padding-bottom":"50px"})},_fixForContent:function(a){$(".content-wrapper, .right-side").css("min-height",a.height())}},$.AdminLTE.boxWidget={selectors:$.AdminLTE.options.boxWidgetOptions.boxWidgetSelectors,icons:$.AdminLTE.options.boxWidgetOptions.boxWidgetIcons,activate:function(){var a=this;$(a.selectors.collapse).on("click",function(b){b.preventDefault(),a.collapse($(this))}),$(a.selectors.remove).on("click",function(b){b.preventDefault(),a.remove($(this))})},collapse:function(a){var b=this,c=a.parents(".box").first(),d=c.find("> .box-body, > .box-footer");c.hasClass("collapsed-box")?(a.children(":first").removeClass(b.icons.open).addClass(b.icons.collapse),d.slideDown(300,function(){c.removeClass("collapsed-box")})):(a.children(":first").removeClass(b.icons.collapse).addClass(b.icons.open),d.slideUp(300,function(){c.addClass("collapsed-box")}))},remove:function(a){var b=a.parents(".box").first();b.slideUp()}}}if("undefined"==typeof jQuery)throw new Error("AdminLTE requires jQuery");$.AdminLTE={},$.AdminLTE.options={navbarMenuSlimscroll:!0,navbarMenuSlimscrollWidth:"3px",navbarMenuHeight:"200px",sidebarToggleSelector:"[data-toggle='offcanvas']",sidebarPushMenu:!0,sidebarSlimScroll:!0,sidebarExpandOnHover:!1,enableBoxRefresh:!0,enableBSToppltip:!0,BSTooltipSelector:"[data-toggle='tooltip']",enableFastclick:!0,enableControlSidebar:!0,controlSidebarOptions:{toggleBtnSelector:"[data-toggle='control-sidebar']",selector:".control-sidebar",slide:!0},enableBoxWidget:!0,boxWidgetOptions:{boxWidgetIcons:{collapse:"fa-minus",open:"fa-plus",remove:"fa-times"},boxWidgetSelectors:{remove:'[data-widget="remove"]',collapse:'[data-widget="collapse"]'}},directChat:{enable:!0,contactToggleSelector:'[data-widget="chat-pane-toggle"]'},colors:{lightBlue:"#3c8dbc",red:"#f56954",green:"#00a65a",aqua:"#00c0ef",yellow:"#f39c12",blue:"#0073b7",navy:"#001F3F",teal:"#39CCCC",olive:"#3D9970",lime:"#01FF70",orange:"#FF851B",fuchsia:"#F012BE",purple:"#8E24AA",maroon:"#D81B60",black:"#222222",gray:"#d2d6de"},screenSizes:{xs:480,sm:768,md:992,lg:1200}},$(function(){"undefined"!=typeof AdminLTEOptions&&$.extend(!0,$.AdminLTE.options,AdminLTEOptions);var a=$.AdminLTE.options;_init(),$.AdminLTE.layout.activate(),$.AdminLTE.tree(".sidebar"),a.enableControlSidebar&&$.AdminLTE.controlSidebar.activate(),a.navbarMenuSlimscroll&&"undefined"!=typeof $.fn.slimscroll&&$(".navbar .menu").slimscroll({height:a.navbarMenuHeight,alwaysVisible:!1,size:a.navbarMenuSlimscrollWidth}).css("width","100%"),a.sidebarPushMenu&&$.AdminLTE.pushMenu.activate(a.sidebarToggleSelector),a.enableBSToppltip&&$("body").tooltip({selector:a.BSTooltipSelector}),a.enableBoxWidget&&$.AdminLTE.boxWidget.activate(),a.enableFastclick&&"undefined"!=typeof FastClick&&FastClick.attach(document.body),a.directChat.enable&&$(a.directChat.contactToggleSelector).on("click",function(){var a=$(this).parents(".direct-chat").first();a.toggleClass("direct-chat-contacts-open")}),$('.btn-group[data-toggle="btn-toggle"]').each(function(){var a=$(this);$(this).find(".btn").on("click",function(b){a.find(".btn.active").removeClass("active"),$(this).addClass("active"),b.preventDefault()})})}),function(a){a.fn.boxRefresh=function(b){function c(a){a.append(f),e.onLoadStart.call(a)}function d(a){a.find(f).remove(),e.onLoadDone.call(a)}var e=a.extend({trigger:".refresh-btn",source:"",onLoadStart:function(a){},onLoadDone:function(a){}},b),f=a('<div class="overlay"><div class="fa fa-refresh fa-spin"></div></div>');return this.each(function(){if(""===e.source)return void(console&&console.log("Please specify a source first - boxRefresh()"));var b=a(this),f=b.find(e.trigger).first();f.on("click",function(a){a.preventDefault(),c(b),b.find(".box-body").load(e.source,function(){d(b)})})})}}(jQuery),function(a){a.fn.todolist=function(b){var c=a.extend({onCheck:function(a){},onUncheck:function(a){}},b);return this.each(function(){"undefined"!=typeof a.fn.iCheck?(a("input",this).on("ifChecked",function(b){var d=a(this).parents("li").first();d.toggleClass("done"),c.onCheck.call(d)}),a("input",this).on("ifUnchecked",function(b){var d=a(this).parents("li").first();d.toggleClass("done"),c.onUncheck.call(d)})):a("input",this).on("change",function(b){var d=a(this).parents("li").first();d.toggleClass("done"),c.onCheck.call(d)})})}}(jQuery); \ No newline at end of file diff --git a/assets/dist/js/demo.js b/assets/dist/js/demo.js deleted file mode 100644 index c9bc74d7..00000000 --- a/assets/dist/js/demo.js +++ /dev/null @@ -1,335 +0,0 @@ -/** - * AdminLTE Demo Menu - * ------------------ - * You should not use this file in production. - * This file is for demo purposes only. - */ -(function ($, AdminLTE) { - - /** - * List of all the available skins - * - * @type Array - */ - var my_skins = [ - "skin-blue", - "skin-black", - "skin-red", - "skin-yellow", - "skin-purple", - "skin-green", - "skin-blue-light", - "skin-black-light", - "skin-red-light", - "skin-yellow-light", - "skin-purple-light", - "skin-green-light" - ]; - - //Create the new tab - var tab_pane = $("<div />", { - "id": "control-sidebar-theme-demo-options-tab", - "class": "tab-pane active" - }); - - //Create the tab button - var tab_button = $("<li />", {"class": "active"}) - .html("<a href='#control-sidebar-theme-demo-options-tab' data-toggle='tab'>" - + "<i class='fa fa-wrench'></i>" - + "</a>"); - - //Add the tab button to the right sidebar tabs - $("[href='#control-sidebar-home-tab']") - .parent() - .before(tab_button); - - //Create the menu - var demo_settings = $("<div />"); - - //Layout options - demo_settings.append( - "<h4 class='control-sidebar-heading'>" - + "Layout Options" - + "</h4>" - //Fixed layout - + "<div class='form-group'>" - + "<label class='control-sidebar-subheading'>" - + "<input type='checkbox' data-layout='fixed' class='pull-right'/> " - + "Fixed layout" - + "</label>" - + "<p>Activate the fixed layout. You can't use fixed and boxed layouts together</p>" - + "</div>" - //Boxed layout - + "<div class='form-group'>" - + "<label class='control-sidebar-subheading'>" - + "<input type='checkbox' data-layout='layout-boxed'class='pull-right'/> " - + "Boxed Layout" - + "</label>" - + "<p>Activate the boxed layout</p>" - + "</div>" - //Sidebar Toggle - + "<div class='form-group'>" - + "<label class='control-sidebar-subheading'>" - + "<input type='checkbox' data-layout='sidebar-collapse' class='pull-right'/> " - + "Toggle Sidebar" - + "</label>" - + "<p>Toggle the left sidebar's state (open or collapse)</p>" - + "</div>" - //Sidebar mini expand on hover toggle - + "<div class='form-group'>" - + "<label class='control-sidebar-subheading'>" - + "<input type='checkbox' data-enable='expandOnHover' class='pull-right'/> " - + "Sidebar Expand on Hover" - + "</label>" - + "<p>Let the sidebar mini expand on hover</p>" - + "</div>" - //Control Sidebar Toggle - + "<div class='form-group'>" - + "<label class='control-sidebar-subheading'>" - + "<input type='checkbox' data-controlsidebar='control-sidebar-open' class='pull-right'/> " - + "Toggle Right Sidebar Slide" - + "</label>" - + "<p>Toggle between slide over content and push content effects</p>" - + "</div>" - //Control Sidebar Skin Toggle - + "<div class='form-group'>" - + "<label class='control-sidebar-subheading'>" - + "<input type='checkbox' data-sidebarskin='toggle' class='pull-right'/> " - + "Toggle Right Sidebar Skin" - + "</label>" - + "<p>Toggle between dark and light skins for the right sidebar</p>" - + "</div>" - ); - var skins_list = $("<ul />", {"class": 'list-unstyled clearfix'}); - - //Dark sidebar skins - var skin_blue = - $("<li />", {style: "float:left; width: 33.33333%; padding: 5px;"}) - .append("<a href='javascript:void(0);' data-skin='skin-blue' style='display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)' class='clearfix full-opacity-hover'>" - + "<div><span style='display:block; width: 20%; float: left; height: 7px; background: #367fa9;'></span><span class='bg-light-blue' style='display:block; width: 80%; float: left; height: 7px;'></span></div>" - + "<div><span style='display:block; width: 20%; float: left; height: 20px; background: #222d32;'></span><span style='display:block; width: 80%; float: left; height: 20px; background: #f4f5f7;'></span></div>" - + "</a>" - + "<p class='text-center no-margin'>Blue</p>"); - skins_list.append(skin_blue); - var skin_black = - $("<li />", {style: "float:left; width: 33.33333%; padding: 5px;"}) - .append("<a href='javascript:void(0);' data-skin='skin-black' style='display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)' class='clearfix full-opacity-hover'>" - + "<div style='box-shadow: 0 0 2px rgba(0,0,0,0.1)' class='clearfix'><span style='display:block; width: 20%; float: left; height: 7px; background: #fefefe;'></span><span style='display:block; width: 80%; float: left; height: 7px; background: #fefefe;'></span></div>" - + "<div><span style='display:block; width: 20%; float: left; height: 20px; background: #222;'></span><span style='display:block; width: 80%; float: left; height: 20px; background: #f4f5f7;'></span></div>" - + "</a>" - + "<p class='text-center no-margin'>Black</p>"); - skins_list.append(skin_black); - var skin_purple = - $("<li />", {style: "float:left; width: 33.33333%; padding: 5px;"}) - .append("<a href='javascript:void(0);' data-skin='skin-purple' style='display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)' class='clearfix full-opacity-hover'>" - + "<div><span style='display:block; width: 20%; float: left; height: 7px;' class='bg-purple-active'></span><span class='bg-purple' style='display:block; width: 80%; float: left; height: 7px;'></span></div>" - + "<div><span style='display:block; width: 20%; float: left; height: 20px; background: #222d32;'></span><span style='display:block; width: 80%; float: left; height: 20px; background: #f4f5f7;'></span></div>" - + "</a>" - + "<p class='text-center no-margin'>Purple</p>"); - skins_list.append(skin_purple); - var skin_green = - $("<li />", {style: "float:left; width: 33.33333%; padding: 5px;"}) - .append("<a href='javascript:void(0);' data-skin='skin-green' style='display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)' class='clearfix full-opacity-hover'>" - + "<div><span style='display:block; width: 20%; float: left; height: 7px;' class='bg-green-active'></span><span class='bg-green' style='display:block; width: 80%; float: left; height: 7px;'></span></div>" - + "<div><span style='display:block; width: 20%; float: left; height: 20px; background: #222d32;'></span><span style='display:block; width: 80%; float: left; height: 20px; background: #f4f5f7;'></span></div>" - + "</a>" - + "<p class='text-center no-margin'>Green</p>"); - skins_list.append(skin_green); - var skin_red = - $("<li />", {style: "float:left; width: 33.33333%; padding: 5px;"}) - .append("<a href='javascript:void(0);' data-skin='skin-red' style='display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)' class='clearfix full-opacity-hover'>" - + "<div><span style='display:block; width: 20%; float: left; height: 7px;' class='bg-red-active'></span><span class='bg-red' style='display:block; width: 80%; float: left; height: 7px;'></span></div>" - + "<div><span style='display:block; width: 20%; float: left; height: 20px; background: #222d32;'></span><span style='display:block; width: 80%; float: left; height: 20px; background: #f4f5f7;'></span></div>" - + "</a>" - + "<p class='text-center no-margin'>Red</p>"); - skins_list.append(skin_red); - var skin_yellow = - $("<li />", {style: "float:left; width: 33.33333%; padding: 5px;"}) - .append("<a href='javascript:void(0);' data-skin='skin-yellow' style='display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)' class='clearfix full-opacity-hover'>" - + "<div><span style='display:block; width: 20%; float: left; height: 7px;' class='bg-yellow-active'></span><span class='bg-yellow' style='display:block; width: 80%; float: left; height: 7px;'></span></div>" - + "<div><span style='display:block; width: 20%; float: left; height: 20px; background: #222d32;'></span><span style='display:block; width: 80%; float: left; height: 20px; background: #f4f5f7;'></span></div>" - + "</a>" - + "<p class='text-center no-margin'>Yellow</p>"); - skins_list.append(skin_yellow); - - //Light sidebar skins - var skin_blue_light = - $("<li />", {style: "float:left; width: 33.33333%; padding: 5px;"}) - .append("<a href='javascript:void(0);' data-skin='skin-blue-light' style='display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)' class='clearfix full-opacity-hover'>" - + "<div><span style='display:block; width: 20%; float: left; height: 7px; background: #367fa9;'></span><span class='bg-light-blue' style='display:block; width: 80%; float: left; height: 7px;'></span></div>" - + "<div><span style='display:block; width: 20%; float: left; height: 20px; background: #f9fafc;'></span><span style='display:block; width: 80%; float: left; height: 20px; background: #f4f5f7;'></span></div>" - + "</a>" - + "<p class='text-center no-margin' style='font-size: 12px'>Blue Light</p>"); - skins_list.append(skin_blue_light); - var skin_black_light = - $("<li />", {style: "float:left; width: 33.33333%; padding: 5px;"}) - .append("<a href='javascript:void(0);' data-skin='skin-black-light' style='display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)' class='clearfix full-opacity-hover'>" - + "<div style='box-shadow: 0 0 2px rgba(0,0,0,0.1)' class='clearfix'><span style='display:block; width: 20%; float: left; height: 7px; background: #fefefe;'></span><span style='display:block; width: 80%; float: left; height: 7px; background: #fefefe;'></span></div>" - + "<div><span style='display:block; width: 20%; float: left; height: 20px; background: #f9fafc;'></span><span style='display:block; width: 80%; float: left; height: 20px; background: #f4f5f7;'></span></div>" - + "</a>" - + "<p class='text-center no-margin' style='font-size: 12px'>Black Light</p>"); - skins_list.append(skin_black_light); - var skin_purple_light = - $("<li />", {style: "float:left; width: 33.33333%; padding: 5px;"}) - .append("<a href='javascript:void(0);' data-skin='skin-purple-light' style='display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)' class='clearfix full-opacity-hover'>" - + "<div><span style='display:block; width: 20%; float: left; height: 7px;' class='bg-purple-active'></span><span class='bg-purple' style='display:block; width: 80%; float: left; height: 7px;'></span></div>" - + "<div><span style='display:block; width: 20%; float: left; height: 20px; background: #f9fafc;'></span><span style='display:block; width: 80%; float: left; height: 20px; background: #f4f5f7;'></span></div>" - + "</a>" - + "<p class='text-center no-margin' style='font-size: 12px'>Purple Light</p>"); - skins_list.append(skin_purple_light); - var skin_green_light = - $("<li />", {style: "float:left; width: 33.33333%; padding: 5px;"}) - .append("<a href='javascript:void(0);' data-skin='skin-green-light' style='display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)' class='clearfix full-opacity-hover'>" - + "<div><span style='display:block; width: 20%; float: left; height: 7px;' class='bg-green-active'></span><span class='bg-green' style='display:block; width: 80%; float: left; height: 7px;'></span></div>" - + "<div><span style='display:block; width: 20%; float: left; height: 20px; background: #f9fafc;'></span><span style='display:block; width: 80%; float: left; height: 20px; background: #f4f5f7;'></span></div>" - + "</a>" - + "<p class='text-center no-margin' style='font-size: 12px'>Green Light</p>"); - skins_list.append(skin_green_light); - var skin_red_light = - $("<li />", {style: "float:left; width: 33.33333%; padding: 5px;"}) - .append("<a href='javascript:void(0);' data-skin='skin-red-light' style='display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)' class='clearfix full-opacity-hover'>" - + "<div><span style='display:block; width: 20%; float: left; height: 7px;' class='bg-red-active'></span><span class='bg-red' style='display:block; width: 80%; float: left; height: 7px;'></span></div>" - + "<div><span style='display:block; width: 20%; float: left; height: 20px; background: #f9fafc;'></span><span style='display:block; width: 80%; float: left; height: 20px; background: #f4f5f7;'></span></div>" - + "</a>" - + "<p class='text-center no-margin' style='font-size: 12px'>Red Light</p>"); - skins_list.append(skin_red_light); - var skin_yellow_light = - $("<li />", {style: "float:left; width: 33.33333%; padding: 5px;"}) - .append("<a href='javascript:void(0);' data-skin='skin-yellow-light' style='display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)' class='clearfix full-opacity-hover'>" - + "<div><span style='display:block; width: 20%; float: left; height: 7px;' class='bg-yellow-active'></span><span class='bg-yellow' style='display:block; width: 80%; float: left; height: 7px;'></span></div>" - + "<div><span style='display:block; width: 20%; float: left; height: 20px; background: #f9fafc;'></span><span style='display:block; width: 80%; float: left; height: 20px; background: #f4f5f7;'></span></div>" - + "</a>" - + "<p class='text-center no-margin' style='font-size: 12px;'>Yellow Light</p>"); - skins_list.append(skin_yellow_light); - - demo_settings.append("<h4 class='control-sidebar-heading'>Skins</h4>"); - demo_settings.append(skins_list); - - tab_pane.append(demo_settings); - $("#control-sidebar-home-tab").after(tab_pane); - - setup(); - - /** - * Toggles layout classes - * - * @param String cls the layout class to toggle - * @returns void - */ - function change_layout(cls) { - $("body").toggleClass(cls); - AdminLTE.layout.fixSidebar(); - //Fix the problem with right sidebar and layout boxed - if (cls == "layout-boxed") - AdminLTE.controlSidebar._fix($(".control-sidebar-bg")); - if ($('body').hasClass('fixed') && cls == 'fixed') { - AdminLTE.pushMenu.expandOnHover(); - AdminLTE.controlSidebar._fixForFixed($('.control-sidebar')); - AdminLTE.layout.activate(); - } - } - - /** - * Replaces the old skin with the new skin - * @param String cls the new skin class - * @returns Boolean false to prevent link's default action - */ - function change_skin(cls) { - $.each(my_skins, function (i) { - $("body").removeClass(my_skins[i]); - }); - - $("body").addClass(cls); - store('skin', cls); - return false; - } - - /** - * Store a new settings in the browser - * - * @param String name Name of the setting - * @param String val Value of the setting - * @returns void - */ - function store(name, val) { - if (typeof (Storage) !== "undefined") { - localStorage.setItem(name, val); - } else { - alert('Please use a modern browser to properly view this template!'); - } - } - - /** - * Get a prestored setting - * - * @param String name Name of of the setting - * @returns String The value of the setting | null - */ - function get(name) { - if (typeof (Storage) !== "undefined") { - return localStorage.getItem(name); - } else { - alert('Please use a modern browser to properly view this template!'); - } - } - - /** - * Retrieve default settings and apply them to the template - * - * @returns void - */ - function setup() { - var tmp = get('skin'); - if (tmp && $.inArray(tmp, my_skins)) - change_skin(tmp); - - //Add the change skin listener - $("[data-skin]").on('click', function (e) { - e.preventDefault(); - change_skin($(this).data('skin')); - }); - - //Add the layout manager - $("[data-layout]").on('click', function () { - change_layout($(this).data('layout')); - }); - - $("[data-controlsidebar]").on('click', function () { - change_layout($(this).data('controlsidebar')); - var slide = !AdminLTE.options.controlSidebarOptions.slide; - AdminLTE.options.controlSidebarOptions.slide = slide; - if (!slide) - $('.control-sidebar').removeClass('control-sidebar-open'); - }); - - $("[data-sidebarskin='toggle']").on('click', function () { - var sidebar = $(".control-sidebar"); - if (sidebar.hasClass("control-sidebar-dark")) { - sidebar.removeClass("control-sidebar-dark") - sidebar.addClass("control-sidebar-light") - } else { - sidebar.removeClass("control-sidebar-light") - sidebar.addClass("control-sidebar-dark") - } - }); - - $("[data-enable='expandOnHover']").on('click', function () { - $(this).attr('disabled', true); - AdminLTE.pushMenu.expandOnHover(); - if(!$('body').hasClass('sidebar-collapse')) - $("[data-layout='sidebar-collapse']").click(); - }); - - // Reset options - if($('body').hasClass('fixed')) { - $("[data-layout='fixed']").attr('checked', 'checked'); - } - if($('body').hasClass('layout-boxed')) { - $("[data-layout='layout-boxed']").attr('checked', 'checked'); - } - if($('body').hasClass('sidebar-collapse')) { - $("[data-layout='sidebar-collapse']").attr('checked', 'checked'); - } - - } -})(jQuery, $.AdminLTE); \ No newline at end of file diff --git a/assets/dist/js/pages/dashboard.js b/assets/dist/js/pages/dashboard.js deleted file mode 100644 index ddbdac3d..00000000 --- a/assets/dist/js/pages/dashboard.js +++ /dev/null @@ -1,234 +0,0 @@ -/* - * Author: Abdullah A Almsaeed - * Date: 4 Jan 2014 - * Description: - * This is a demo file used only for the main dashboard (index.html) - **/ -"use strict"; - -$(function () { - - //Make the dashboard widgets sortable Using jquery UI - $(".connectedSortable").sortable({ - placeholder: "sort-highlight", - connectWith: ".connectedSortable", - handle: ".box-header, .nav-tabs", - forcePlaceholderSize: true, - zIndex: 999999 - }); - $(".connectedSortable .box-header, .connectedSortable .nav-tabs-custom").css("cursor", "move"); - - //jQuery UI sortable for the todo list - $(".todo-list").sortable({ - placeholder: "sort-highlight", - handle: ".handle", - forcePlaceholderSize: true, - zIndex: 999999 - }); - - //bootstrap WYSIHTML5 - text editor - $(".textarea").wysihtml5(); - - $('.daterange').daterangepicker( - { - ranges: { - 'Today': [moment(), moment()], - 'Yesterday': [moment().subtract('days', 1), moment().subtract('days', 1)], - 'Last 7 Days': [moment().subtract('days', 6), moment()], - 'Last 30 Days': [moment().subtract('days', 29), moment()], - 'This Month': [moment().startOf('month'), moment().endOf('month')], - 'Last Month': [moment().subtract('month', 1).startOf('month'), moment().subtract('month', 1).endOf('month')] - }, - startDate: moment().subtract('days', 29), - endDate: moment() - }, - function (start, end) { - alert("You chose: " + start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY')); - }); - - /* jQueryKnob */ - $(".knob").knob(); - - //jvectormap data - var visitorsData = { - "US": 398, //USA - "SA": 400, //Saudi Arabia - "CA": 1000, //Canada - "DE": 500, //Germany - "FR": 760, //France - "CN": 300, //China - "AU": 700, //Australia - "BR": 600, //Brazil - "IN": 800, //India - "GB": 320, //Great Britain - "RU": 3000 //Russia - }; - //World map by jvectormap - $('#world-map').vectorMap({ - map: 'world_mill_en', - backgroundColor: "transparent", - regionStyle: { - initial: { - fill: '#e4e4e4', - "fill-opacity": 1, - stroke: 'none', - "stroke-width": 0, - "stroke-opacity": 1 - } - }, - series: { - regions: [{ - values: visitorsData, - scale: ["#92c1dc", "#ebf4f9"], - normalizeFunction: 'polynomial' - }] - }, - onRegionLabelShow: function (e, el, code) { - if (typeof visitorsData[code] != "undefined") - el.html(el.html() + ': ' + visitorsData[code] + ' new visitors'); - } - }); - - //Sparkline charts - var myvalues = [1000, 1200, 920, 927, 931, 1027, 819, 930, 1021]; - $('#sparkline-1').sparkline(myvalues, { - type: 'line', - lineColor: '#92c1dc', - fillColor: "#ebf4f9", - height: '50', - width: '80' - }); - myvalues = [515, 519, 520, 522, 652, 810, 370, 627, 319, 630, 921]; - $('#sparkline-2').sparkline(myvalues, { - type: 'line', - lineColor: '#92c1dc', - fillColor: "#ebf4f9", - height: '50', - width: '80' - }); - myvalues = [15, 19, 20, 22, 33, 27, 31, 27, 19, 30, 21]; - $('#sparkline-3').sparkline(myvalues, { - type: 'line', - lineColor: '#92c1dc', - fillColor: "#ebf4f9", - height: '50', - width: '80' - }); - - //The Calender - $("#calendar").datepicker(); - - //SLIMSCROLL FOR CHAT WIDGET - $('#chat-box').slimScroll({ - height: '250px' - }); - - /* Morris.js Charts */ - // Sales chart - var area = new Morris.Area({ - element: 'revenue-chart', - resize: true, - data: [ - {y: '2011 Q1', item1: 2666, item2: 2666}, - {y: '2011 Q2', item1: 2778, item2: 2294}, - {y: '2011 Q3', item1: 4912, item2: 1969}, - {y: '2011 Q4', item1: 3767, item2: 3597}, - {y: '2012 Q1', item1: 6810, item2: 1914}, - {y: '2012 Q2', item1: 5670, item2: 4293}, - {y: '2012 Q3', item1: 4820, item2: 3795}, - {y: '2012 Q4', item1: 15073, item2: 5967}, - {y: '2013 Q1', item1: 10687, item2: 4460}, - {y: '2013 Q2', item1: 8432, item2: 5713} - ], - xkey: 'y', - ykeys: ['item1', 'item2'], - labels: ['Item 1', 'Item 2'], - lineColors: ['#a0d0e0', '#3c8dbc'], - hideHover: 'auto' - }); - var line = new Morris.Line({ - element: 'line-chart', - resize: true, - data: [ - {y: '2011 Q1', item1: 2666}, - {y: '2011 Q2', item1: 2778}, - {y: '2011 Q3', item1: 4912}, - {y: '2011 Q4', item1: 3767}, - {y: '2012 Q1', item1: 6810}, - {y: '2012 Q2', item1: 5670}, - {y: '2012 Q3', item1: 4820}, - {y: '2012 Q4', item1: 15073}, - {y: '2013 Q1', item1: 10687}, - {y: '2013 Q2', item1: 8432} - ], - xkey: 'y', - ykeys: ['item1'], - labels: ['Item 1'], - lineColors: ['#efefef'], - lineWidth: 2, - hideHover: 'auto', - gridTextColor: "#fff", - gridStrokeWidth: 0.4, - pointSize: 4, - pointStrokeColors: ["#efefef"], - gridLineColor: "#efefef", - gridTextFamily: "Open Sans", - gridTextSize: 10 - }); - - //Donut Chart - var donut = new Morris.Donut({ - element: 'sales-chart', - resize: true, - colors: ["#3c8dbc", "#f56954", "#00a65a"], - data: [ - {label: "Download Sales", value: 12}, - {label: "In-Store Sales", value: 30}, - {label: "Mail-Order Sales", value: 20} - ], - hideHover: 'auto' - }); - - //Fix for charts under tabs - $('.box ul.nav a').on('shown.bs.tab', function (e) { - area.redraw(); - donut.redraw(); - }); - - - /* BOX REFRESH PLUGIN EXAMPLE (usage with morris charts) */ - $("#loading-example").boxRefresh({ - source: "ajax/dashboard-boxrefresh-demo.php", - onLoadDone: function (box) { - bar = new Morris.Bar({ - element: 'bar-chart', - resize: true, - data: [ - {y: '2006', a: 100, b: 90}, - {y: '2007', a: 75, b: 65}, - {y: '2008', a: 50, b: 40}, - {y: '2009', a: 75, b: 65}, - {y: '2010', a: 50, b: 40}, - {y: '2011', a: 75, b: 65}, - {y: '2012', a: 100, b: 90} - ], - barColors: ['#00a65a', '#f56954'], - xkey: 'y', - ykeys: ['a', 'b'], - labels: ['CPU', 'DISK'], - hideHover: 'auto' - }); - } - }); - - /* The todo list plugin */ - $(".todo-list").todolist({ - onCheck: function (ele) { - console.log("The element has been checked") - }, - onUncheck: function (ele) { - console.log("The element has been unchecked") - } - }); - -}); \ No newline at end of file diff --git a/assets/dist/js/pages/dashboard2.js b/assets/dist/js/pages/dashboard2.js deleted file mode 100644 index 472641af..00000000 --- a/assets/dist/js/pages/dashboard2.js +++ /dev/null @@ -1,274 +0,0 @@ -'use strict'; -$(function () { - - /* ChartJS - * ------- - * Here we will create a few charts using ChartJS - */ - - //----------------------- - //- MONTHLY SALES CHART - - //----------------------- - - // Get context with jQuery - using jQuery's .get() method. - var salesChartCanvas = $("#salesChart").get(0).getContext("2d"); - // This will get the first returned node in the jQuery collection. - var salesChart = new Chart(salesChartCanvas); - - var salesChartData = { - labels: ["January", "February", "March", "April", "May", "June", "July"], - datasets: [ - { - label: "Electronics", - fillColor: "rgb(210, 214, 222)", - strokeColor: "rgb(210, 214, 222)", - pointColor: "rgb(210, 214, 222)", - pointStrokeColor: "#c1c7d1", - pointHighlightFill: "#fff", - pointHighlightStroke: "rgb(220,220,220)", - data: [65, 59, 80, 81, 56, 55, 40] - }, - { - label: "Digital Goods", - fillColor: "rgba(60,141,188,0.9)", - strokeColor: "rgba(60,141,188,0.8)", - pointColor: "#3b8bba", - pointStrokeColor: "rgba(60,141,188,1)", - pointHighlightFill: "#fff", - pointHighlightStroke: "rgba(60,141,188,1)", - data: [28, 48, 40, 19, 86, 27, 90] - } - ] - }; - - var salesChartOptions = { - //Boolean - If we should show the scale at all - showScale: true, - //Boolean - Whether grid lines are shown across the chart - scaleShowGridLines: false, - //String - Colour of the grid lines - scaleGridLineColor: "rgba(0,0,0,.05)", - //Number - Width of the grid lines - scaleGridLineWidth: 1, - //Boolean - Whether to show horizontal lines (except X axis) - scaleShowHorizontalLines: true, - //Boolean - Whether to show vertical lines (except Y axis) - scaleShowVerticalLines: true, - //Boolean - Whether the line is curved between points - bezierCurve: true, - //Number - Tension of the bezier curve between points - bezierCurveTension: 0.3, - //Boolean - Whether to show a dot for each point - pointDot: false, - //Number - Radius of each point dot in pixels - pointDotRadius: 4, - //Number - Pixel width of point dot stroke - pointDotStrokeWidth: 1, - //Number - amount extra to add to the radius to cater for hit detection outside the drawn point - pointHitDetectionRadius: 20, - //Boolean - Whether to show a stroke for datasets - datasetStroke: true, - //Number - Pixel width of dataset stroke - datasetStrokeWidth: 2, - //Boolean - Whether to fill the dataset with a color - datasetFill: true, - //String - A legend template - legendTemplate: "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<datasets.length; i++){%><li><span style=\"background-color:<%=datasets[i].lineColor%>\"></span><%=datasets[i].label%></li><%}%></ul>", - //Boolean - whether to maintain the starting aspect ratio or not when responsive, if set to false, will take up entire container - maintainAspectRatio: false, - //Boolean - whether to make the chart responsive to window resizing - responsive: true - }; - - //Create the line chart - salesChart.Line(salesChartData, salesChartOptions); - - //--------------------------- - //- END MONTHLY SALES CHART - - //--------------------------- - - //------------- - //- PIE CHART - - //------------- - // Get context with jQuery - using jQuery's .get() method. - var pieChartCanvas = $("#pieChart").get(0).getContext("2d"); - var pieChart = new Chart(pieChartCanvas); - var PieData = [ - { - value: 700, - color: "#f56954", - highlight: "#f56954", - label: "Chrome" - }, - { - value: 500, - color: "#00a65a", - highlight: "#00a65a", - label: "IE" - }, - { - value: 400, - color: "#f39c12", - highlight: "#f39c12", - label: "FireFox" - }, - { - value: 600, - color: "#00c0ef", - highlight: "#00c0ef", - label: "Safari" - }, - { - value: 300, - color: "#3c8dbc", - highlight: "#3c8dbc", - label: "Opera" - }, - { - value: 100, - color: "#d2d6de", - highlight: "#d2d6de", - label: "Navigator" - } - ]; - var pieOptions = { - //Boolean - Whether we should show a stroke on each segment - segmentShowStroke: true, - //String - The colour of each segment stroke - segmentStrokeColor: "#fff", - //Number - The width of each segment stroke - segmentStrokeWidth: 1, - //Number - The percentage of the chart that we cut out of the middle - percentageInnerCutout: 50, // This is 0 for Pie charts - //Number - Amount of animation steps - animationSteps: 100, - //String - Animation easing effect - animationEasing: "easeOutBounce", - //Boolean - Whether we animate the rotation of the Doughnut - animateRotate: true, - //Boolean - Whether we animate scaling the Doughnut from the centre - animateScale: false, - //Boolean - whether to make the chart responsive to window resizing - responsive: true, - // Boolean - whether to maintain the starting aspect ratio or not when responsive, if set to false, will take up entire container - maintainAspectRatio: false, - //String - A legend template - legendTemplate: "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<segments.length; i++){%><li><span style=\"background-color:<%=segments[i].fillColor%>\"></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>", - //String - A tooltip template - tooltipTemplate: "<%=value %> <%=label%> users" - }; - //Create pie or douhnut chart - // You can switch between pie and douhnut using the method below. - pieChart.Doughnut(PieData, pieOptions); - //----------------- - //- END PIE CHART - - //----------------- - - /* jVector Maps - * ------------ - * Create a world map with markers - */ - $('#world-map-markers').vectorMap({ - map: 'world_mill_en', - normalizeFunction: 'polynomial', - hoverOpacity: 0.7, - hoverColor: false, - backgroundColor: 'transparent', - regionStyle: { - initial: { - fill: 'rgba(210, 214, 222, 1)', - "fill-opacity": 1, - stroke: 'none', - "stroke-width": 0, - "stroke-opacity": 1 - }, - hover: { - "fill-opacity": 0.7, - cursor: 'pointer' - }, - selected: { - fill: 'yellow' - }, - selectedHover: { - } - }, - markerStyle: { - initial: { - fill: '#00a65a', - stroke: '#111' - } - }, - markers: [ - {latLng: [41.90, 12.45], name: 'Vatican City'}, - {latLng: [43.73, 7.41], name: 'Monaco'}, - {latLng: [-0.52, 166.93], name: 'Nauru'}, - {latLng: [-8.51, 179.21], name: 'Tuvalu'}, - {latLng: [43.93, 12.46], name: 'San Marino'}, - {latLng: [47.14, 9.52], name: 'Liechtenstein'}, - {latLng: [7.11, 171.06], name: 'Marshall Islands'}, - {latLng: [17.3, -62.73], name: 'Saint Kitts and Nevis'}, - {latLng: [3.2, 73.22], name: 'Maldives'}, - {latLng: [35.88, 14.5], name: 'Malta'}, - {latLng: [12.05, -61.75], name: 'Grenada'}, - {latLng: [13.16, -61.23], name: 'Saint Vincent and the Grenadines'}, - {latLng: [13.16, -59.55], name: 'Barbados'}, - {latLng: [17.11, -61.85], name: 'Antigua and Barbuda'}, - {latLng: [-4.61, 55.45], name: 'Seychelles'}, - {latLng: [7.35, 134.46], name: 'Palau'}, - {latLng: [42.5, 1.51], name: 'Andorra'}, - {latLng: [14.01, -60.98], name: 'Saint Lucia'}, - {latLng: [6.91, 158.18], name: 'Federated States of Micronesia'}, - {latLng: [1.3, 103.8], name: 'Singapore'}, - {latLng: [1.46, 173.03], name: 'Kiribati'}, - {latLng: [-21.13, -175.2], name: 'Tonga'}, - {latLng: [15.3, -61.38], name: 'Dominica'}, - {latLng: [-20.2, 57.5], name: 'Mauritius'}, - {latLng: [26.02, 50.55], name: 'Bahrain'}, - {latLng: [0.33, 6.73], name: 'São Tomé and Príncipe'} - ] - }); - - /* SPARKLINE CHARTS - * ---------------- - * Create a inline charts with spark line - */ - - //----------------- - //- SPARKLINE BAR - - //----------------- - $('.sparkbar').each(function () { - var $this = $(this); - $this.sparkline('html', { - type: 'bar', - height: $this.data('height') ? $this.data('height') : '30', - barColor: $this.data('color') - }); - }); - - //----------------- - //- SPARKLINE PIE - - //----------------- - $('.sparkpie').each(function () { - var $this = $(this); - $this.sparkline('html', { - type: 'pie', - height: $this.data('height') ? $this.data('height') : '90', - sliceColors: $this.data('color') - }); - }); - - //------------------ - //- SPARKLINE LINE - - //------------------ - $('.sparkline').each(function () { - var $this = $(this); - $this.sparkline('html', { - type: 'line', - height: $this.data('height') ? $this.data('height') : '90', - width: '100%', - lineColor: $this.data('linecolor'), - fillColor: $this.data('fillcolor'), - spotColor: $this.data('spotcolor') - }); - }); -}); \ No newline at end of file diff --git a/assets/dist/loader.gif b/assets/dist/loader.gif deleted file mode 100644 index 01586176..00000000 Binary files a/assets/dist/loader.gif and /dev/null differ diff --git a/assets/dist/sweetalert.css b/assets/dist/sweetalert.css deleted file mode 100644 index f2af7e3a..00000000 --- a/assets/dist/sweetalert.css +++ /dev/null @@ -1,935 +0,0 @@ -body.stop-scrolling { - height: 100%; - overflow: hidden; } - -.sweet-overlay { - background-color: black; - /* IE8 */ - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; - /* IE8 */ - background-color: rgba(0, 0, 0, 0.4); - position: fixed; - left: 0; - right: 0; - top: 0; - bottom: 0; - display: none; - z-index: 10000; } - -.sweet-alert { - background-color: white; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; - width: 478px; - padding: 17px; - border-radius: 5px; - text-align: center; - position: fixed; - left: 50%; - top: 50%; - margin-left: -256px; - margin-top: -200px; - overflow: hidden; - display: none; - z-index: 99999; } - @media all and (max-width: 540px) { - .sweet-alert { - width: auto; - margin-left: 0; - margin-right: 0; - left: 15px; - right: 15px; } } - .sweet-alert h2 { - color: #575757; - font-size: 30px; - text-align: center; - font-weight: 600; - text-transform: none; - position: relative; - margin: 25px 0; - padding: 0; - line-height: 40px; - display: block; } - .sweet-alert p { - color: #797979; - font-size: 16px; - text-align: center; - font-weight: 300; - position: relative; - text-align: inherit; - float: none; - margin: 0; - padding: 0; - line-height: normal; } - .sweet-alert fieldset { - border: none; - position: relative; } - .sweet-alert .sa-error-container { - background-color: #f1f1f1; - margin-left: -17px; - margin-right: -17px; - overflow: hidden; - padding: 0 10px; - max-height: 0; - webkit-transition: padding 0.15s, max-height 0.15s; - transition: padding 0.15s, max-height 0.15s; } - .sweet-alert .sa-error-container.show { - padding: 10px 0; - max-height: 100px; - webkit-transition: padding 0.2s, max-height 0.2s; - transition: padding 0.25s, max-height 0.25s; } - .sweet-alert .sa-error-container .icon { - display: inline-block; - width: 24px; - height: 24px; - border-radius: 50%; - background-color: #ea7d7d; - color: white; - line-height: 24px; - text-align: center; - margin-right: 3px; } - .sweet-alert .sa-error-container p { - display: inline-block; } - .sweet-alert .sa-input-error { - position: absolute; - top: 29px; - right: 26px; - width: 20px; - height: 20px; - opacity: 0; - -webkit-transform: scale(0.5); - transform: scale(0.5); - -webkit-transform-origin: 50% 50%; - transform-origin: 50% 50%; - -webkit-transition: all 0.1s; - transition: all 0.1s; } - .sweet-alert .sa-input-error::before, .sweet-alert .sa-input-error::after { - content: ""; - width: 20px; - height: 6px; - background-color: #f06e57; - border-radius: 3px; - position: absolute; - top: 50%; - margin-top: -4px; - left: 50%; - margin-left: -9px; } - .sweet-alert .sa-input-error::before { - -webkit-transform: rotate(-45deg); - transform: rotate(-45deg); } - .sweet-alert .sa-input-error::after { - -webkit-transform: rotate(45deg); - transform: rotate(45deg); } - .sweet-alert .sa-input-error.show { - opacity: 1; - -webkit-transform: scale(1); - transform: scale(1); } - .sweet-alert input { - width: 100%; - box-sizing: border-box; - border-radius: 3px; - border: 1px solid #d7d7d7; - height: 43px; - margin-top: 10px; - margin-bottom: 17px; - font-size: 18px; - box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.06); - padding: 0 12px; - display: none; - -webkit-transition: all 0.3s; - transition: all 0.3s; } - .sweet-alert input:focus { - outline: none; - box-shadow: 0px 0px 3px #c4e6f5; - border: 1px solid #b4dbed; } - .sweet-alert input:focus::-moz-placeholder { - transition: opacity 0.3s 0.03s ease; - opacity: 0.5; } - .sweet-alert input:focus:-ms-input-placeholder { - transition: opacity 0.3s 0.03s ease; - opacity: 0.5; } - .sweet-alert input:focus::-webkit-input-placeholder { - transition: opacity 0.3s 0.03s ease; - opacity: 0.5; } - .sweet-alert input::-moz-placeholder { - color: #bdbdbd; } - .sweet-alert input::-ms-clear { - display: none; } - .sweet-alert input:-ms-input-placeholder { - color: #bdbdbd; } - .sweet-alert input::-webkit-input-placeholder { - color: #bdbdbd; } - .sweet-alert.show-input input { - display: block; } - .sweet-alert .sa-confirm-button-container { - display: inline-block; - position: relative; } - .sweet-alert .la-ball-fall { - position: absolute; - left: 50%; - top: 50%; - margin-left: -27px; - margin-top: 4px; - opacity: 0; - visibility: hidden; } - .sweet-alert button { - background-color: #8CD4F5; - color: white; - border: none; - box-shadow: none; - font-size: 17px; - font-weight: 500; - -webkit-border-radius: 4px; - border-radius: 5px; - padding: 10px 32px; - margin: 26px 5px 0 5px; - cursor: pointer; } - .sweet-alert button:focus { - outline: none; - box-shadow: 0 0 2px rgba(128, 179, 235, 0.5), inset 0 0 0 1px rgba(0, 0, 0, 0.05); } - .sweet-alert button:hover { - background-color: #7ecff4; } - .sweet-alert button:active { - background-color: #5dc2f1; } - .sweet-alert button.cancel { - background-color: #C1C1C1; } - .sweet-alert button.cancel:hover { - background-color: #b9b9b9; } - .sweet-alert button.cancel:active { - background-color: #a8a8a8; } - .sweet-alert button.cancel:focus { - box-shadow: rgba(197, 205, 211, 0.8) 0px 0px 2px, rgba(0, 0, 0, 0.0470588) 0px 0px 0px 1px inset !important; } - .sweet-alert button[disabled] { - opacity: .6; - cursor: default; } - .sweet-alert button.confirm[disabled] { - color: transparent; } - .sweet-alert button.confirm[disabled] ~ .la-ball-fall { - opacity: 1; - visibility: visible; - transition-delay: 0s; } - .sweet-alert button::-moz-focus-inner { - border: 0; } - .sweet-alert[data-has-cancel-button=false] button { - box-shadow: none !important; } - .sweet-alert[data-has-confirm-button=false][data-has-cancel-button=false] { - padding-bottom: 40px; } - .sweet-alert .sa-icon { - width: 80px; - height: 80px; - border: 4px solid gray; - -webkit-border-radius: 40px; - border-radius: 40px; - border-radius: 50%; - margin: 20px auto; - padding: 0; - position: relative; - box-sizing: content-box; } - .sweet-alert .sa-icon.sa-error { - border-color: #F27474; } - .sweet-alert .sa-icon.sa-error .sa-x-mark { - position: relative; - display: block; } - .sweet-alert .sa-icon.sa-error .sa-line { - position: absolute; - height: 5px; - width: 47px; - background-color: #F27474; - display: block; - top: 37px; - border-radius: 2px; } - .sweet-alert .sa-icon.sa-error .sa-line.sa-left { - -webkit-transform: rotate(45deg); - transform: rotate(45deg); - left: 17px; } - .sweet-alert .sa-icon.sa-error .sa-line.sa-right { - -webkit-transform: rotate(-45deg); - transform: rotate(-45deg); - right: 16px; } - .sweet-alert .sa-icon.sa-warning { - border-color: #F8BB86; } - .sweet-alert .sa-icon.sa-warning .sa-body { - position: absolute; - width: 5px; - height: 47px; - left: 50%; - top: 10px; - -webkit-border-radius: 2px; - border-radius: 2px; - margin-left: -2px; - background-color: #F8BB86; } - .sweet-alert .sa-icon.sa-warning .sa-dot { - position: absolute; - width: 7px; - height: 7px; - -webkit-border-radius: 50%; - border-radius: 50%; - margin-left: -3px; - left: 50%; - bottom: 10px; - background-color: #F8BB86; } - .sweet-alert .sa-icon.sa-info { - border-color: #C9DAE1; } - .sweet-alert .sa-icon.sa-info::before { - content: ""; - position: absolute; - width: 5px; - height: 29px; - left: 50%; - bottom: 17px; - border-radius: 2px; - margin-left: -2px; - background-color: #C9DAE1; } - .sweet-alert .sa-icon.sa-info::after { - content: ""; - position: absolute; - width: 7px; - height: 7px; - border-radius: 50%; - margin-left: -3px; - top: 19px; - background-color: #C9DAE1; - left: 50%; } - .sweet-alert .sa-icon.sa-success { - border-color: #A5DC86; } - .sweet-alert .sa-icon.sa-success::before, .sweet-alert .sa-icon.sa-success::after { - content: ''; - -webkit-border-radius: 40px; - border-radius: 40px; - border-radius: 50%; - position: absolute; - width: 60px; - height: 120px; - background: white; - -webkit-transform: rotate(45deg); - transform: rotate(45deg); } - .sweet-alert .sa-icon.sa-success::before { - -webkit-border-radius: 120px 0 0 120px; - border-radius: 120px 0 0 120px; - top: -7px; - left: -33px; - -webkit-transform: rotate(-45deg); - transform: rotate(-45deg); - -webkit-transform-origin: 60px 60px; - transform-origin: 60px 60px; } - .sweet-alert .sa-icon.sa-success::after { - -webkit-border-radius: 0 120px 120px 0; - border-radius: 0 120px 120px 0; - top: -11px; - left: 30px; - -webkit-transform: rotate(-45deg); - transform: rotate(-45deg); - -webkit-transform-origin: 0px 60px; - transform-origin: 0px 60px; } - .sweet-alert .sa-icon.sa-success .sa-placeholder { - width: 80px; - height: 80px; - border: 4px solid rgba(165, 220, 134, 0.2); - -webkit-border-radius: 40px; - border-radius: 40px; - border-radius: 50%; - box-sizing: content-box; - position: absolute; - left: -4px; - top: -4px; - z-index: 2; } - .sweet-alert .sa-icon.sa-success .sa-fix { - width: 5px; - height: 90px; - background-color: white; - position: absolute; - left: 28px; - top: 8px; - z-index: 1; - -webkit-transform: rotate(-45deg); - transform: rotate(-45deg); } - .sweet-alert .sa-icon.sa-success .sa-line { - height: 5px; - background-color: #A5DC86; - display: block; - border-radius: 2px; - position: absolute; - z-index: 2; } - .sweet-alert .sa-icon.sa-success .sa-line.sa-tip { - width: 25px; - left: 14px; - top: 46px; - -webkit-transform: rotate(45deg); - transform: rotate(45deg); } - .sweet-alert .sa-icon.sa-success .sa-line.sa-long { - width: 47px; - right: 8px; - top: 38px; - -webkit-transform: rotate(-45deg); - transform: rotate(-45deg); } - .sweet-alert .sa-icon.sa-custom { - background-size: contain; - border-radius: 0; - border: none; - background-position: center center; - background-repeat: no-repeat; } - -/* - * Animations - */ -@-webkit-keyframes showSweetAlert { - 0% { - transform: scale(0.7); - -webkit-transform: scale(0.7); } - 45% { - transform: scale(1.05); - -webkit-transform: scale(1.05); } - 80% { - transform: scale(0.95); - -webkit-transform: scale(0.95); } - 100% { - transform: scale(1); - -webkit-transform: scale(1); } } - -@keyframes showSweetAlert { - 0% { - transform: scale(0.7); - -webkit-transform: scale(0.7); } - 45% { - transform: scale(1.05); - -webkit-transform: scale(1.05); } - 80% { - transform: scale(0.95); - -webkit-transform: scale(0.95); } - 100% { - transform: scale(1); - -webkit-transform: scale(1); } } - -@-webkit-keyframes hideSweetAlert { - 0% { - transform: scale(1); - -webkit-transform: scale(1); } - 100% { - transform: scale(0.5); - -webkit-transform: scale(0.5); } } - -@keyframes hideSweetAlert { - 0% { - transform: scale(1); - -webkit-transform: scale(1); } - 100% { - transform: scale(0.5); - -webkit-transform: scale(0.5); } } - -@-webkit-keyframes slideFromTop { - 0% { - top: 0%; } - 100% { - top: 50%; } } - -@keyframes slideFromTop { - 0% { - top: 0%; } - 100% { - top: 50%; } } - -@-webkit-keyframes slideToTop { - 0% { - top: 50%; } - 100% { - top: 0%; } } - -@keyframes slideToTop { - 0% { - top: 50%; } - 100% { - top: 0%; } } - -@-webkit-keyframes slideFromBottom { - 0% { - top: 70%; } - 100% { - top: 50%; } } - -@keyframes slideFromBottom { - 0% { - top: 70%; } - 100% { - top: 50%; } } - -@-webkit-keyframes slideToBottom { - 0% { - top: 50%; } - 100% { - top: 70%; } } - -@keyframes slideToBottom { - 0% { - top: 50%; } - 100% { - top: 70%; } } - -.showSweetAlert[data-animation=pop] { - -webkit-animation: showSweetAlert 0.3s; - animation: showSweetAlert 0.3s; } - -.showSweetAlert[data-animation=none] { - -webkit-animation: none; - animation: none; } - -.showSweetAlert[data-animation=slide-from-top] { - -webkit-animation: slideFromTop 0.3s; - animation: slideFromTop 0.3s; } - -.showSweetAlert[data-animation=slide-from-bottom] { - -webkit-animation: slideFromBottom 0.3s; - animation: slideFromBottom 0.3s; } - -.hideSweetAlert[data-animation=pop] { - -webkit-animation: hideSweetAlert 0.2s; - animation: hideSweetAlert 0.2s; } - -.hideSweetAlert[data-animation=none] { - -webkit-animation: none; - animation: none; } - -.hideSweetAlert[data-animation=slide-from-top] { - -webkit-animation: slideToTop 0.4s; - animation: slideToTop 0.4s; } - -.hideSweetAlert[data-animation=slide-from-bottom] { - -webkit-animation: slideToBottom 0.3s; - animation: slideToBottom 0.3s; } - -@-webkit-keyframes animateSuccessTip { - 0% { - width: 0; - left: 1px; - top: 19px; } - 54% { - width: 0; - left: 1px; - top: 19px; } - 70% { - width: 50px; - left: -8px; - top: 37px; } - 84% { - width: 17px; - left: 21px; - top: 48px; } - 100% { - width: 25px; - left: 14px; - top: 45px; } } - -@keyframes animateSuccessTip { - 0% { - width: 0; - left: 1px; - top: 19px; } - 54% { - width: 0; - left: 1px; - top: 19px; } - 70% { - width: 50px; - left: -8px; - top: 37px; } - 84% { - width: 17px; - left: 21px; - top: 48px; } - 100% { - width: 25px; - left: 14px; - top: 45px; } } - -@-webkit-keyframes animateSuccessLong { - 0% { - width: 0; - right: 46px; - top: 54px; } - 65% { - width: 0; - right: 46px; - top: 54px; } - 84% { - width: 55px; - right: 0px; - top: 35px; } - 100% { - width: 47px; - right: 8px; - top: 38px; } } - -@keyframes animateSuccessLong { - 0% { - width: 0; - right: 46px; - top: 54px; } - 65% { - width: 0; - right: 46px; - top: 54px; } - 84% { - width: 55px; - right: 0px; - top: 35px; } - 100% { - width: 47px; - right: 8px; - top: 38px; } } - -@-webkit-keyframes rotatePlaceholder { - 0% { - transform: rotate(-45deg); - -webkit-transform: rotate(-45deg); } - 5% { - transform: rotate(-45deg); - -webkit-transform: rotate(-45deg); } - 12% { - transform: rotate(-405deg); - -webkit-transform: rotate(-405deg); } - 100% { - transform: rotate(-405deg); - -webkit-transform: rotate(-405deg); } } - -@keyframes rotatePlaceholder { - 0% { - transform: rotate(-45deg); - -webkit-transform: rotate(-45deg); } - 5% { - transform: rotate(-45deg); - -webkit-transform: rotate(-45deg); } - 12% { - transform: rotate(-405deg); - -webkit-transform: rotate(-405deg); } - 100% { - transform: rotate(-405deg); - -webkit-transform: rotate(-405deg); } } - -.animateSuccessTip { - -webkit-animation: animateSuccessTip 0.75s; - animation: animateSuccessTip 0.75s; } - -.animateSuccessLong { - -webkit-animation: animateSuccessLong 0.75s; - animation: animateSuccessLong 0.75s; } - -.sa-icon.sa-success.animate::after { - -webkit-animation: rotatePlaceholder 4.25s ease-in; - animation: rotatePlaceholder 4.25s ease-in; } - -@-webkit-keyframes animateErrorIcon { - 0% { - transform: rotateX(100deg); - -webkit-transform: rotateX(100deg); - opacity: 0; } - 100% { - transform: rotateX(0deg); - -webkit-transform: rotateX(0deg); - opacity: 1; } } - -@keyframes animateErrorIcon { - 0% { - transform: rotateX(100deg); - -webkit-transform: rotateX(100deg); - opacity: 0; } - 100% { - transform: rotateX(0deg); - -webkit-transform: rotateX(0deg); - opacity: 1; } } - -.animateErrorIcon { - -webkit-animation: animateErrorIcon 0.5s; - animation: animateErrorIcon 0.5s; } - -@-webkit-keyframes animateXMark { - 0% { - transform: scale(0.4); - -webkit-transform: scale(0.4); - margin-top: 26px; - opacity: 0; } - 50% { - transform: scale(0.4); - -webkit-transform: scale(0.4); - margin-top: 26px; - opacity: 0; } - 80% { - transform: scale(1.15); - -webkit-transform: scale(1.15); - margin-top: -6px; } - 100% { - transform: scale(1); - -webkit-transform: scale(1); - margin-top: 0; - opacity: 1; } } - -@keyframes animateXMark { - 0% { - transform: scale(0.4); - -webkit-transform: scale(0.4); - margin-top: 26px; - opacity: 0; } - 50% { - transform: scale(0.4); - -webkit-transform: scale(0.4); - margin-top: 26px; - opacity: 0; } - 80% { - transform: scale(1.15); - -webkit-transform: scale(1.15); - margin-top: -6px; } - 100% { - transform: scale(1); - -webkit-transform: scale(1); - margin-top: 0; - opacity: 1; } } - -.animateXMark { - -webkit-animation: animateXMark 0.5s; - animation: animateXMark 0.5s; } - -@-webkit-keyframes pulseWarning { - 0% { - border-color: #F8D486; } - 100% { - border-color: #F8BB86; } } - -@keyframes pulseWarning { - 0% { - border-color: #F8D486; } - 100% { - border-color: #F8BB86; } } - -.pulseWarning { - -webkit-animation: pulseWarning 0.75s infinite alternate; - animation: pulseWarning 0.75s infinite alternate; } - -@-webkit-keyframes pulseWarningIns { - 0% { - background-color: #F8D486; } - 100% { - background-color: #F8BB86; } } - -@keyframes pulseWarningIns { - 0% { - background-color: #F8D486; } - 100% { - background-color: #F8BB86; } } - -.pulseWarningIns { - -webkit-animation: pulseWarningIns 0.75s infinite alternate; - animation: pulseWarningIns 0.75s infinite alternate; } - -@-webkit-keyframes rotate-loading { - 0% { - transform: rotate(0deg); } - 100% { - transform: rotate(360deg); } } - -@keyframes rotate-loading { - 0% { - transform: rotate(0deg); } - 100% { - transform: rotate(360deg); } } - -/* Internet Explorer 9 has some special quirks that are fixed here */ -/* The icons are not animated. */ -/* This file is automatically merged into sweet-alert.min.js through Gulp */ -/* Error icon */ -.sweet-alert .sa-icon.sa-error .sa-line.sa-left { - -ms-transform: rotate(45deg) \9; } - -.sweet-alert .sa-icon.sa-error .sa-line.sa-right { - -ms-transform: rotate(-45deg) \9; } - -/* Success icon */ -.sweet-alert .sa-icon.sa-success { - border-color: transparent\9; } - -.sweet-alert .sa-icon.sa-success .sa-line.sa-tip { - -ms-transform: rotate(45deg) \9; } - -.sweet-alert .sa-icon.sa-success .sa-line.sa-long { - -ms-transform: rotate(-45deg) \9; } - -/*! - * Load Awesome v1.1.0 (http://github.danielcardoso.net/load-awesome/) - * Copyright 2015 Daniel Cardoso <@DanielCardoso> - * Licensed under MIT - */ -.la-ball-fall, -.la-ball-fall > div { - position: relative; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; } - -.la-ball-fall { - display: block; - font-size: 0; - color: #fff; } - -.la-ball-fall.la-dark { - color: #333; } - -.la-ball-fall > div { - display: inline-block; - float: none; - background-color: currentColor; - border: 0 solid currentColor; } - -.la-ball-fall { - width: 54px; - height: 18px; } - -.la-ball-fall > div { - width: 10px; - height: 10px; - margin: 4px; - border-radius: 100%; - opacity: 0; - -webkit-animation: ball-fall 1s ease-in-out infinite; - -moz-animation: ball-fall 1s ease-in-out infinite; - -o-animation: ball-fall 1s ease-in-out infinite; - animation: ball-fall 1s ease-in-out infinite; } - -.la-ball-fall > div:nth-child(1) { - -webkit-animation-delay: -200ms; - -moz-animation-delay: -200ms; - -o-animation-delay: -200ms; - animation-delay: -200ms; } - -.la-ball-fall > div:nth-child(2) { - -webkit-animation-delay: -100ms; - -moz-animation-delay: -100ms; - -o-animation-delay: -100ms; - animation-delay: -100ms; } - -.la-ball-fall > div:nth-child(3) { - -webkit-animation-delay: 0ms; - -moz-animation-delay: 0ms; - -o-animation-delay: 0ms; - animation-delay: 0ms; } - -.la-ball-fall.la-sm { - width: 26px; - height: 8px; } - -.la-ball-fall.la-sm > div { - width: 4px; - height: 4px; - margin: 2px; } - -.la-ball-fall.la-2x { - width: 108px; - height: 36px; } - -.la-ball-fall.la-2x > div { - width: 20px; - height: 20px; - margin: 8px; } - -.la-ball-fall.la-3x { - width: 162px; - height: 54px; } - -.la-ball-fall.la-3x > div { - width: 30px; - height: 30px; - margin: 12px; } - -/* - * Animation - */ -@-webkit-keyframes ball-fall { - 0% { - opacity: 0; - -webkit-transform: translateY(-145%); - transform: translateY(-145%); } - 10% { - opacity: .5; } - 20% { - opacity: 1; - -webkit-transform: translateY(0); - transform: translateY(0); } - 80% { - opacity: 1; - -webkit-transform: translateY(0); - transform: translateY(0); } - 90% { - opacity: .5; } - 100% { - opacity: 0; - -webkit-transform: translateY(145%); - transform: translateY(145%); } } - -@-moz-keyframes ball-fall { - 0% { - opacity: 0; - -moz-transform: translateY(-145%); - transform: translateY(-145%); } - 10% { - opacity: .5; } - 20% { - opacity: 1; - -moz-transform: translateY(0); - transform: translateY(0); } - 80% { - opacity: 1; - -moz-transform: translateY(0); - transform: translateY(0); } - 90% { - opacity: .5; } - 100% { - opacity: 0; - -moz-transform: translateY(145%); - transform: translateY(145%); } } - -@-o-keyframes ball-fall { - 0% { - opacity: 0; - -o-transform: translateY(-145%); - transform: translateY(-145%); } - 10% { - opacity: .5; } - 20% { - opacity: 1; - -o-transform: translateY(0); - transform: translateY(0); } - 80% { - opacity: 1; - -o-transform: translateY(0); - transform: translateY(0); } - 90% { - opacity: .5; } - 100% { - opacity: 0; - -o-transform: translateY(145%); - transform: translateY(145%); } } - -@keyframes ball-fall { - 0% { - opacity: 0; - -webkit-transform: translateY(-145%); - -moz-transform: translateY(-145%); - -o-transform: translateY(-145%); - transform: translateY(-145%); } - 10% { - opacity: .5; } - 20% { - opacity: 1; - -webkit-transform: translateY(0); - -moz-transform: translateY(0); - -o-transform: translateY(0); - transform: translateY(0); } - 80% { - opacity: 1; - -webkit-transform: translateY(0); - -moz-transform: translateY(0); - -o-transform: translateY(0); - transform: translateY(0); } - 90% { - opacity: .5; } - 100% { - opacity: 0; - -webkit-transform: translateY(145%); - -moz-transform: translateY(145%); - -o-transform: translateY(145%); - transform: translateY(145%); } } diff --git a/assets/dist/sweetalert.min.js b/assets/dist/sweetalert.min.js deleted file mode 100644 index 500bf92c..00000000 --- a/assets/dist/sweetalert.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(e,t,n){"use strict";!function o(e,t,n){function a(s,l){if(!t[s]){if(!e[s]){var i="function"==typeof require&&require;if(!l&&i)return i(s,!0);if(r)return r(s,!0);var u=new Error("Cannot find module '"+s+"'");throw u.code="MODULE_NOT_FOUND",u}var c=t[s]={exports:{}};e[s][0].call(c.exports,function(t){var n=e[s][1][t];return a(n?n:t)},c,c.exports,o,e,t,n)}return t[s].exports}for(var r="function"==typeof require&&require,s=0;s<n.length;s++)a(n[s]);return a}({1:[function(o,a,r){function s(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(r,"__esModule",{value:!0});var l,i,u,c,d=o("./modules/handle-dom"),f=o("./modules/utils"),p=o("./modules/handle-swal-dom"),m=o("./modules/handle-click"),v=o("./modules/handle-key"),y=s(v),b=o("./modules/default-params"),h=s(b),g=o("./modules/set-params"),w=s(g);r["default"]=u=c=function(){function o(e){var t=a;return t[e]===n?h["default"][e]:t[e]}var a=arguments[0];if((0,d.addClass)(t.body,"stop-scrolling"),(0,p.resetInput)(),a===n)return(0,f.logStr)("SweetAlert expects at least 1 attribute!"),!1;var r=(0,f.extend)({},h["default"]);switch(typeof a){case"string":r.title=a,r.text=arguments[1]||"",r.type=arguments[2]||"";break;case"object":if(a.title===n)return(0,f.logStr)('Missing "title" argument!'),!1;r.title=a.title;for(var s in h["default"])r[s]=o(s);r.confirmButtonText=r.showCancelButton?"Confirm":h["default"].confirmButtonText,r.confirmButtonText=o("confirmButtonText"),r.doneFunction=arguments[1]||null;break;default:return(0,f.logStr)('Unexpected type of argument! Expected "string" or "object", got '+typeof a),!1}(0,w["default"])(r),(0,p.fixVerticalPosition)(),(0,p.openModal)(arguments[1]);for(var u=(0,p.getModal)(),v=u.querySelectorAll("button"),b=["onclick","onmouseover","onmouseout","onmousedown","onmouseup","onfocus"],g=function(e){return(0,m.handleButton)(e,r,u)},C=0;C<v.length;C++)for(var S=0;S<b.length;S++){var x=b[S];v[C][x]=g}(0,p.getOverlay)().onclick=g,l=e.onkeydown;var k=function(e){return(0,y["default"])(e,r,u)};e.onkeydown=k,e.onfocus=function(){setTimeout(function(){i!==n&&(i.focus(),i=n)},0)},c.enableButtons()},u.setDefaults=c.setDefaults=function(e){if(!e)throw new Error("userParams is required");if("object"!=typeof e)throw new Error("userParams has to be a object");(0,f.extend)(h["default"],e)},u.close=c.close=function(){var o=(0,p.getModal)();(0,d.fadeOut)((0,p.getOverlay)(),5),(0,d.fadeOut)(o,5),(0,d.removeClass)(o,"showSweetAlert"),(0,d.addClass)(o,"hideSweetAlert"),(0,d.removeClass)(o,"visible");var a=o.querySelector(".sa-icon.sa-success");(0,d.removeClass)(a,"animate"),(0,d.removeClass)(a.querySelector(".sa-tip"),"animateSuccessTip"),(0,d.removeClass)(a.querySelector(".sa-long"),"animateSuccessLong");var r=o.querySelector(".sa-icon.sa-error");(0,d.removeClass)(r,"animateErrorIcon"),(0,d.removeClass)(r.querySelector(".sa-x-mark"),"animateXMark");var s=o.querySelector(".sa-icon.sa-warning");return(0,d.removeClass)(s,"pulseWarning"),(0,d.removeClass)(s.querySelector(".sa-body"),"pulseWarningIns"),(0,d.removeClass)(s.querySelector(".sa-dot"),"pulseWarningIns"),setTimeout(function(){var e=o.getAttribute("data-custom-class");(0,d.removeClass)(o,e)},300),(0,d.removeClass)(t.body,"stop-scrolling"),e.onkeydown=l,e.previousActiveElement&&e.previousActiveElement.focus(),i=n,clearTimeout(o.timeout),!0},u.showInputError=c.showInputError=function(e){var t=(0,p.getModal)(),n=t.querySelector(".sa-input-error");(0,d.addClass)(n,"show");var o=t.querySelector(".sa-error-container");(0,d.addClass)(o,"show"),o.querySelector("p").innerHTML=e,setTimeout(function(){u.enableButtons()},1),t.querySelector("input").focus()},u.resetInputError=c.resetInputError=function(e){if(e&&13===e.keyCode)return!1;var t=(0,p.getModal)(),n=t.querySelector(".sa-input-error");(0,d.removeClass)(n,"show");var o=t.querySelector(".sa-error-container");(0,d.removeClass)(o,"show")},u.disableButtons=c.disableButtons=function(e){var t=(0,p.getModal)(),n=t.querySelector("button.confirm"),o=t.querySelector("button.cancel");n.disabled=!0,o.disabled=!0},u.enableButtons=c.enableButtons=function(e){var t=(0,p.getModal)(),n=t.querySelector("button.confirm"),o=t.querySelector("button.cancel");n.disabled=!1,o.disabled=!1},"undefined"!=typeof e?e.sweetAlert=e.swal=u:(0,f.logStr)("SweetAlert is a frontend module!"),a.exports=r["default"]},{"./modules/default-params":2,"./modules/handle-click":3,"./modules/handle-dom":4,"./modules/handle-key":5,"./modules/handle-swal-dom":6,"./modules/set-params":8,"./modules/utils":9}],2:[function(e,t,n){Object.defineProperty(n,"__esModule",{value:!0});var o={title:"",text:"",type:null,allowOutsideClick:!1,showConfirmButton:!0,showCancelButton:!1,closeOnConfirm:!0,closeOnCancel:!0,confirmButtonText:"OK",confirmButtonColor:"#8CD4F5",cancelButtonText:"Cancel",imageUrl:null,imageSize:null,timer:null,customClass:"",html:!1,animation:!0,allowEscapeKey:!0,inputType:"text",inputPlaceholder:"",inputValue:"",showLoaderOnConfirm:!1};n["default"]=o,t.exports=n["default"]},{}],3:[function(t,n,o){Object.defineProperty(o,"__esModule",{value:!0});var a=t("./utils"),r=(t("./handle-swal-dom"),t("./handle-dom")),s=function(t,n,o){function s(e){m&&n.confirmButtonColor&&(p.style.backgroundColor=e)}var u,c,d,f=t||e.event,p=f.target||f.srcElement,m=-1!==p.className.indexOf("confirm"),v=-1!==p.className.indexOf("sweet-overlay"),y=(0,r.hasClass)(o,"visible"),b=n.doneFunction&&"true"===o.getAttribute("data-has-done-function");switch(m&&n.confirmButtonColor&&(u=n.confirmButtonColor,c=(0,a.colorLuminance)(u,-.04),d=(0,a.colorLuminance)(u,-.14)),f.type){case"mouseover":s(c);break;case"mouseout":s(u);break;case"mousedown":s(d);break;case"mouseup":s(c);break;case"focus":var h=o.querySelector("button.confirm"),g=o.querySelector("button.cancel");m?g.style.boxShadow="none":h.style.boxShadow="none";break;case"click":var w=o===p,C=(0,r.isDescendant)(o,p);if(!w&&!C&&y&&!n.allowOutsideClick)break;m&&b&&y?l(o,n):b&&y||v?i(o,n):(0,r.isDescendant)(o,p)&&"BUTTON"===p.tagName&&sweetAlert.close()}},l=function(e,t){var n=!0;(0,r.hasClass)(e,"show-input")&&(n=e.querySelector("input").value,n||(n="")),t.doneFunction(n),t.closeOnConfirm&&sweetAlert.close(),t.showLoaderOnConfirm&&sweetAlert.disableButtons()},i=function(e,t){var n=String(t.doneFunction).replace(/\s/g,""),o="function("===n.substring(0,9)&&")"!==n.substring(9,10);o&&t.doneFunction(!1),t.closeOnCancel&&sweetAlert.close()};o["default"]={handleButton:s,handleConfirm:l,handleCancel:i},n.exports=o["default"]},{"./handle-dom":4,"./handle-swal-dom":6,"./utils":9}],4:[function(n,o,a){Object.defineProperty(a,"__esModule",{value:!0});var r=function(e,t){return new RegExp(" "+t+" ").test(" "+e.className+" ")},s=function(e,t){r(e,t)||(e.className+=" "+t)},l=function(e,t){var n=" "+e.className.replace(/[\t\r\n]/g," ")+" ";if(r(e,t)){for(;n.indexOf(" "+t+" ")>=0;)n=n.replace(" "+t+" "," ");e.className=n.replace(/^\s+|\s+$/g,"")}},i=function(e){var n=t.createElement("div");return n.appendChild(t.createTextNode(e)),n.innerHTML},u=function(e){e.style.opacity="",e.style.display="block"},c=function(e){if(e&&!e.length)return u(e);for(var t=0;t<e.length;++t)u(e[t])},d=function(e){e.style.opacity="",e.style.display="none"},f=function(e){if(e&&!e.length)return d(e);for(var t=0;t<e.length;++t)d(e[t])},p=function(e,t){for(var n=t.parentNode;null!==n;){if(n===e)return!0;n=n.parentNode}return!1},m=function(e){e.style.left="-9999px",e.style.display="block";var t,n=e.clientHeight;return t="undefined"!=typeof getComputedStyle?parseInt(getComputedStyle(e).getPropertyValue("padding-top"),10):parseInt(e.currentStyle.padding),e.style.left="",e.style.display="none","-"+parseInt((n+t)/2)+"px"},v=function(e,t){if(+e.style.opacity<1){t=t||16,e.style.opacity=0,e.style.display="block";var n=+new Date,o=function a(){e.style.opacity=+e.style.opacity+(new Date-n)/100,n=+new Date,+e.style.opacity<1&&setTimeout(a,t)};o()}e.style.display="block"},y=function(e,t){t=t||16,e.style.opacity=1;var n=+new Date,o=function a(){e.style.opacity=+e.style.opacity-(new Date-n)/100,n=+new Date,+e.style.opacity>0?setTimeout(a,t):e.style.display="none"};o()},b=function(n){if("function"==typeof MouseEvent){var o=new MouseEvent("click",{view:e,bubbles:!1,cancelable:!0});n.dispatchEvent(o)}else if(t.createEvent){var a=t.createEvent("MouseEvents");a.initEvent("click",!1,!1),n.dispatchEvent(a)}else t.createEventObject?n.fireEvent("onclick"):"function"==typeof n.onclick&&n.onclick()},h=function(t){"function"==typeof t.stopPropagation?(t.stopPropagation(),t.preventDefault()):e.event&&e.event.hasOwnProperty("cancelBubble")&&(e.event.cancelBubble=!0)};a.hasClass=r,a.addClass=s,a.removeClass=l,a.escapeHtml=i,a._show=u,a.show=c,a._hide=d,a.hide=f,a.isDescendant=p,a.getTopMargin=m,a.fadeIn=v,a.fadeOut=y,a.fireClick=b,a.stopEventPropagation=h},{}],5:[function(t,o,a){Object.defineProperty(a,"__esModule",{value:!0});var r=t("./handle-dom"),s=t("./handle-swal-dom"),l=function(t,o,a){var l=t||e.event,i=l.keyCode||l.which,u=a.querySelector("button.confirm"),c=a.querySelector("button.cancel"),d=a.querySelectorAll("button[tabindex]");if(-1!==[9,13,32,27].indexOf(i)){for(var f=l.target||l.srcElement,p=-1,m=0;m<d.length;m++)if(f===d[m]){p=m;break}9===i?(f=-1===p?u:p===d.length-1?d[0]:d[p+1],(0,r.stopEventPropagation)(l),f.focus(),o.confirmButtonColor&&(0,s.setFocusStyle)(f,o.confirmButtonColor)):13===i?("INPUT"===f.tagName&&(f=u,u.focus()),f=-1===p?u:n):27===i&&o.allowEscapeKey===!0?(f=c,(0,r.fireClick)(f,l)):f=n}};a["default"]=l,o.exports=a["default"]},{"./handle-dom":4,"./handle-swal-dom":6}],6:[function(n,o,a){function r(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(a,"__esModule",{value:!0});var s=n("./utils"),l=n("./handle-dom"),i=n("./default-params"),u=r(i),c=n("./injected-html"),d=r(c),f=".sweet-alert",p=".sweet-overlay",m=function(){var e=t.createElement("div");for(e.innerHTML=d["default"];e.firstChild;)t.body.appendChild(e.firstChild)},v=function x(){var e=t.querySelector(f);return e||(m(),e=x()),e},y=function(){var e=v();return e?e.querySelector("input"):void 0},b=function(){return t.querySelector(p)},h=function(e,t){var n=(0,s.hexToRgb)(t);e.style.boxShadow="0 0 2px rgba("+n+", 0.8), inset 0 0 0 1px rgba(0, 0, 0, 0.05)"},g=function(n){var o=v();(0,l.fadeIn)(b(),10),(0,l.show)(o),(0,l.addClass)(o,"showSweetAlert"),(0,l.removeClass)(o,"hideSweetAlert"),e.previousActiveElement=t.activeElement;var a=o.querySelector("button.confirm");a.focus(),setTimeout(function(){(0,l.addClass)(o,"visible")},500);var r=o.getAttribute("data-timer");if("null"!==r&&""!==r){var s=n;o.timeout=setTimeout(function(){var e=(s||null)&&"true"===o.getAttribute("data-has-done-function");e?s(null):sweetAlert.close()},r)}},w=function(){var e=v(),t=y();(0,l.removeClass)(e,"show-input"),t.value=u["default"].inputValue,t.setAttribute("type",u["default"].inputType),t.setAttribute("placeholder",u["default"].inputPlaceholder),C()},C=function(e){if(e&&13===e.keyCode)return!1;var t=v(),n=t.querySelector(".sa-input-error");(0,l.removeClass)(n,"show");var o=t.querySelector(".sa-error-container");(0,l.removeClass)(o,"show")},S=function(){var e=v();e.style.marginTop=(0,l.getTopMargin)(v())};a.sweetAlertInitialize=m,a.getModal=v,a.getOverlay=b,a.getInput=y,a.setFocusStyle=h,a.openModal=g,a.resetInput=w,a.resetInputError=C,a.fixVerticalPosition=S},{"./default-params":2,"./handle-dom":4,"./injected-html":7,"./utils":9}],7:[function(e,t,n){Object.defineProperty(n,"__esModule",{value:!0});var o='<div class="sweet-overlay" tabIndex="-1"></div><div class="sweet-alert"><div class="sa-icon sa-error">\n <span class="sa-x-mark">\n <span class="sa-line sa-left"></span>\n <span class="sa-line sa-right"></span>\n </span>\n </div><div class="sa-icon sa-warning">\n <span class="sa-body"></span>\n <span class="sa-dot"></span>\n </div><div class="sa-icon sa-info"></div><div class="sa-icon sa-success">\n <span class="sa-line sa-tip"></span>\n <span class="sa-line sa-long"></span>\n\n <div class="sa-placeholder"></div>\n <div class="sa-fix"></div>\n </div><div class="sa-icon sa-custom"></div><h2>Title</h2>\n <p>Text</p>\n <fieldset>\n <input type="text" tabIndex="3" />\n <div class="sa-input-error"></div>\n </fieldset><div class="sa-error-container">\n <div class="icon">!</div>\n <p>Not valid!</p>\n </div><div class="sa-button-container">\n <button class="cancel" tabIndex="2">Cancel</button>\n <div class="sa-confirm-button-container">\n <button class="confirm" tabIndex="1">OK</button><div class="la-ball-fall">\n <div></div>\n <div></div>\n <div></div>\n </div>\n </div>\n </div></div>';n["default"]=o,t.exports=n["default"]},{}],8:[function(e,t,o){Object.defineProperty(o,"__esModule",{value:!0});var a=e("./utils"),r=e("./handle-swal-dom"),s=e("./handle-dom"),l=["error","warning","info","success","input","prompt"],i=function(e){var t=(0,r.getModal)(),o=t.querySelector("h2"),i=t.querySelector("p"),u=t.querySelector("button.cancel"),c=t.querySelector("button.confirm");if(o.innerHTML=e.html?e.title:(0,s.escapeHtml)(e.title).split("\n").join("<br>"),i.innerHTML=e.html?e.text:(0,s.escapeHtml)(e.text||"").split("\n").join("<br>"),e.text&&(0,s.show)(i),e.customClass)(0,s.addClass)(t,e.customClass),t.setAttribute("data-custom-class",e.customClass);else{var d=t.getAttribute("data-custom-class");(0,s.removeClass)(t,d),t.setAttribute("data-custom-class","")}if((0,s.hide)(t.querySelectorAll(".sa-icon")),e.type&&!(0,a.isIE8)()){var f=function(){for(var o=!1,a=0;a<l.length;a++)if(e.type===l[a]){o=!0;break}if(!o)return logStr("Unknown alert type: "+e.type),{v:!1};var i=["success","error","warning","info"],u=n;-1!==i.indexOf(e.type)&&(u=t.querySelector(".sa-icon.sa-"+e.type),(0,s.show)(u));var c=(0,r.getInput)();switch(e.type){case"success":(0,s.addClass)(u,"animate"),(0,s.addClass)(u.querySelector(".sa-tip"),"animateSuccessTip"),(0,s.addClass)(u.querySelector(".sa-long"),"animateSuccessLong");break;case"error":(0,s.addClass)(u,"animateErrorIcon"),(0,s.addClass)(u.querySelector(".sa-x-mark"),"animateXMark");break;case"warning":(0,s.addClass)(u,"pulseWarning"),(0,s.addClass)(u.querySelector(".sa-body"),"pulseWarningIns"),(0,s.addClass)(u.querySelector(".sa-dot"),"pulseWarningIns");break;case"input":case"prompt":c.setAttribute("type",e.inputType),c.value=e.inputValue,c.setAttribute("placeholder",e.inputPlaceholder),(0,s.addClass)(t,"show-input"),setTimeout(function(){c.focus(),c.addEventListener("keyup",swal.resetInputError)},400)}}();if("object"==typeof f)return f.v}if(e.imageUrl){var p=t.querySelector(".sa-icon.sa-custom");p.style.backgroundImage="url("+e.imageUrl+")",(0,s.show)(p);var m=80,v=80;if(e.imageSize){var y=e.imageSize.toString().split("x"),b=y[0],h=y[1];b&&h?(m=b,v=h):logStr("Parameter imageSize expects value with format WIDTHxHEIGHT, got "+e.imageSize)}p.setAttribute("style",p.getAttribute("style")+"width:"+m+"px; height:"+v+"px")}t.setAttribute("data-has-cancel-button",e.showCancelButton),e.showCancelButton?u.style.display="inline-block":(0,s.hide)(u),t.setAttribute("data-has-confirm-button",e.showConfirmButton),e.showConfirmButton?c.style.display="inline-block":(0,s.hide)(c),e.cancelButtonText&&(u.innerHTML=(0,s.escapeHtml)(e.cancelButtonText)),e.confirmButtonText&&(c.innerHTML=(0,s.escapeHtml)(e.confirmButtonText)),e.confirmButtonColor&&(c.style.backgroundColor=e.confirmButtonColor,c.style.borderLeftColor=e.confirmLoadingButtonColor,c.style.borderRightColor=e.confirmLoadingButtonColor,(0,r.setFocusStyle)(c,e.confirmButtonColor)),t.setAttribute("data-allow-outside-click",e.allowOutsideClick);var g=!!e.doneFunction;t.setAttribute("data-has-done-function",g),e.animation?"string"==typeof e.animation?t.setAttribute("data-animation",e.animation):t.setAttribute("data-animation","pop"):t.setAttribute("data-animation","none"),t.setAttribute("data-timer",e.timer)};o["default"]=i,t.exports=o["default"]},{"./handle-dom":4,"./handle-swal-dom":6,"./utils":9}],9:[function(t,n,o){Object.defineProperty(o,"__esModule",{value:!0});var a=function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e},r=function(e){var t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?parseInt(t[1],16)+", "+parseInt(t[2],16)+", "+parseInt(t[3],16):null},s=function(){return e.attachEvent&&!e.addEventListener},l=function(t){"undefined"!=typeof e&&e.console&&e.console.log("SweetAlert: "+t)},i=function(e,t){e=String(e).replace(/[^0-9a-f]/gi,""),e.length<6&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),t=t||0;var n,o,a="#";for(o=0;3>o;o++)n=parseInt(e.substr(2*o,2),16),n=Math.round(Math.min(Math.max(0,n+n*t),255)).toString(16),a+=("00"+n).substr(n.length);return a};o.extend=a,o.hexToRgb=r,o.isIE8=s,o.logStr=l,o.colorLuminance=i},{}]},{},[1]),"function"==typeof define&&define.amd?define(function(){return sweetAlert}):"undefined"!=typeof module&&module.exports&&(module.exports=sweetAlert)}(window,document); \ No newline at end of file diff --git a/assets/email_templates/action.html b/assets/email_templates/action.html deleted file mode 100644 index 89aadac8..00000000 --- a/assets/email_templates/action.html +++ /dev/null @@ -1,63 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta name="viewport" content="width=device-width" /> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title>Actionable emails e.g. reset password</title> - <link href="styles.css" media="all" rel="stylesheet" type="text/css" /> -</head> - -<body> - -<table class="body-wrap"> - <tr> - <td></td> - <td class="container" width="600"> - <div class="content"> - <table class="main" width="100%" cellpadding="0" cellspacing="0"> - <tr> - <td class="content-wrap"> - <table cellpadding="0" cellspacing="0"> - <tr> - <td> - <img class="img-responsive" src="img/header.jpg"/> - </td> - </tr> - <tr> - <td class="content-block"> - <h3>Welcom in basic email template</h3> - </td> - </tr> - <tr> - <td class="content-block"> - Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries. - </td> - </tr> - <tr> - <td class="content-block"> - We may need to send you critical information about our service and it is important that we have an accurate email address. - </td> - </tr> - <tr> - <td class="content-block aligncenter"> - <a href="#" class="btn-primary">Confirm email address</a> - </td> - </tr> - </table> - </td> - </tr> - </table> - <div class="footer"> - <table width="100%"> - <tr> - <td class="aligncenter content-block">Follow <a href="#">@Company</a> on Twitter.</td> - </tr> - </table> - </div></div> - </td> - <td></td> - </tr> -</table> - -</body> -</html> diff --git a/assets/email_templates/alert.html b/assets/email_templates/alert.html deleted file mode 100644 index 2bcf1366..00000000 --- a/assets/email_templates/alert.html +++ /dev/null @@ -1,63 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta name="viewport" content="width=device-width" /> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title>Alerts e.g. approaching your limit</title> - <link href="styles.css" media="all" rel="stylesheet" type="text/css" /> -</head> - -<body> - -<table class="body-wrap"> - <tr> - <td></td> - <td class="container" width="600"> - <div class="content"> - <table class="main" width="100%" cellpadding="0" cellspacing="0"> - <tr> - <td class="alert alert-good"> - Info: You're approaching your limit. Please upgrade. - </td> - </tr> - <tr> - <td class="content-wrap"> - <table width="100%" cellpadding="0" cellspacing="0"> - <tr> - <td class="content-block"> - You have <strong>1 free report</strong> remaining. - </td> - </tr> - <tr> - <td class="content-block"> - It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. - </td> - </tr> - <tr> - <td class="content-block"> - <a href="#" class="btn-primary">Upgrade my account</a> - </td> - </tr> - <tr> - <td class="content-block"> - Thanks for choosing Company Inc. - </td> - </tr> - </table> - </td> - </tr> - </table> - <div class="footer"> - <table width="100%"> - <tr> - <td class="aligncenter content-block"><a href="#">Unsubscribe</a> from these alerts.</td> - </tr> - </table> - </div></div> - </td> - <td></td> - </tr> -</table> - -</body> -</html> diff --git a/assets/email_templates/billing.html b/assets/email_templates/billing.html deleted file mode 100644 index 46a2c800..00000000 --- a/assets/email_templates/billing.html +++ /dev/null @@ -1,84 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta name="viewport" content="width=device-width" /> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title>Billing e.g. invoices and receipts</title> - <link href="styles.css" media="all" rel="stylesheet" type="text/css" /> -</head> - -<body> - -<table class="body-wrap"> - <tr> - <td></td> - <td class="container" width="600"> - <div class="content"> - <table class="main" width="100%" cellpadding="0" cellspacing="0"> - <tr> - <td class="content-wrap aligncenter"> - <table width="100%" cellpadding="0" cellspacing="0"> - <tr> - <td class="content-block"> - <h2>Thanks for using INSPINIA</h2> - </td> - </tr> - <tr> - <td class="content-block"> - <table class="invoice"> - <tr> - <td>Anna Smith<br>Invoice #12345<br>June 01 2015</td> - </tr> - <tr> - <td> - <table class="invoice-items" cellpadding="0" cellspacing="0"> - <tr> - <td>Service 1</td> - <td class="alignright">$ 20.00</td> - </tr> - <tr> - <td>Service 2</td> - <td class="alignright">$ 10.00</td> - </tr> - <tr> - <td>Service 3</td> - <td class="alignright">$ 6.00</td> - </tr> - <tr class="total"> - <td class="alignright" width="80%">Total</td> - <td class="alignright">$ 36.00</td> - </tr> - </table> - </td> - </tr> - </table> - </td> - </tr> - <tr> - <td class="content-block"> - <a href="#">View in browser</a> - </td> - </tr> - <tr> - <td class="content-block"> - Company Inc. 123 Van Ness, San Francisco 94102 - </td> - </tr> - </table> - </td> - </tr> - </table> - <div class="footer"> - <table width="100%"> - <tr> - <td class="aligncenter content-block">Questions? Email <a href="mailto:">support@company.inc</a></td> - </tr> - </table> - </div></div> - </td> - <td></td> - </tr> -</table> - -</body> -</html> diff --git a/assets/email_templates/img/header.jpg b/assets/email_templates/img/header.jpg deleted file mode 100644 index b6a7e139..00000000 Binary files a/assets/email_templates/img/header.jpg and /dev/null differ diff --git a/assets/email_templates/styles.css b/assets/email_templates/styles.css deleted file mode 100644 index 94632185..00000000 --- a/assets/email_templates/styles.css +++ /dev/null @@ -1,264 +0,0 @@ -/* ------------------------------------- - GLOBAL - A very basic CSS reset -------------------------------------- */ -* { - margin: 0; - padding: 0; - font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; - box-sizing: border-box; - font-size: 14px; -} - -img { - max-width: 100%; -} - -body { - -webkit-font-smoothing: antialiased; - -webkit-text-size-adjust: none; - width: 100% !important; - height: 100%; - line-height: 1.6; -} - -/* Let's make sure all tables have defaults */ -table td { - vertical-align: top; -} - -/* ------------------------------------- - BODY & CONTAINER -------------------------------------- */ -body { - background-color: #f6f6f6; -} - -.body-wrap { - background-color: #f6f6f6; - width: 100%; -} - -.container { - display: block !important; - max-width: 600px !important; - margin: 0 auto !important; - /* makes it centered */ - clear: both !important; -} - -.content { - max-width: 600px; - margin: 0 auto; - display: block; - padding: 20px; -} - -/* ------------------------------------- - HEADER, FOOTER, MAIN -------------------------------------- */ -.main { - background: #fff; - border: 1px solid #e9e9e9; - border-radius: 3px; -} - -.content-wrap { - padding: 20px; -} - -.content-block { - padding: 0 0 20px; -} - -.header { - width: 100%; - margin-bottom: 20px; -} - -.footer { - width: 100%; - clear: both; - color: #999; - padding: 20px; -} -.footer a { - color: #999; -} -.footer p, .footer a, .footer unsubscribe, .footer td { - font-size: 12px; -} - -/* ------------------------------------- - TYPOGRAPHY -------------------------------------- */ -h1, h2, h3 { - font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; - color: #000; - margin: 40px 0 0; - line-height: 1.2; - font-weight: 400; -} - -h1 { - font-size: 32px; - font-weight: 500; -} - -h2 { - font-size: 24px; -} - -h3 { - font-size: 18px; -} - -h4 { - font-size: 14px; - font-weight: 600; -} - -p, ul, ol { - margin-bottom: 10px; - font-weight: normal; -} -p li, ul li, ol li { - margin-left: 5px; - list-style-position: inside; -} - -/* ------------------------------------- - LINKS & BUTTONS -------------------------------------- */ -a { - color: #1ab394; - text-decoration: underline; -} - -.btn-primary { - text-decoration: none; - color: #FFF; - background-color: #1ab394; - border: solid #1ab394; - border-width: 5px 10px; - line-height: 2; - font-weight: bold; - text-align: center; - cursor: pointer; - display: inline-block; - border-radius: 5px; - text-transform: capitalize; -} - -/* ------------------------------------- - OTHER STYLES THAT MIGHT BE USEFUL -------------------------------------- */ -.last { - margin-bottom: 0; -} - -.first { - margin-top: 0; -} - -.aligncenter { - text-align: center; -} - -.alignright { - text-align: right; -} - -.alignleft { - text-align: left; -} - -.clear { - clear: both; -} - -/* ------------------------------------- - ALERTS - Change the class depending on warning email, good email or bad email -------------------------------------- */ -.alert { - font-size: 16px; - color: #fff; - font-weight: 500; - padding: 20px; - text-align: center; - border-radius: 3px 3px 0 0; -} -.alert a { - color: #fff; - text-decoration: none; - font-weight: 500; - font-size: 16px; -} -.alert.alert-warning { - background: #f8ac59; -} -.alert.alert-bad { - background: #ed5565; -} -.alert.alert-good { - background: #1ab394; -} - -/* ------------------------------------- - INVOICE - Styles for the billing table -------------------------------------- */ -.invoice { - margin: 40px auto; - text-align: left; - width: 80%; -} -.invoice td { - padding: 5px 0; -} -.invoice .invoice-items { - width: 100%; -} -.invoice .invoice-items td { - border-top: #eee 1px solid; -} -.invoice .invoice-items .total td { - border-top: 2px solid #333; - border-bottom: 2px solid #333; - font-weight: 700; -} - -/* ------------------------------------- - RESPONSIVE AND MOBILE FRIENDLY STYLES -------------------------------------- */ -@media only screen and (max-width: 640px) { - h1, h2, h3, h4 { - font-weight: 600 !important; - margin: 20px 0 5px !important; - } - - h1 { - font-size: 22px !important; - } - - h2 { - font-size: 18px !important; - } - - h3 { - font-size: 16px !important; - } - - .container { - width: 100% !important; - } - - .content, .content-wrap { - padding: 10px !important; - } - - .invoice { - width: 100% !important; - } -} diff --git a/assets/font-awesome/css/font-awesome.css b/assets/font-awesome/css/font-awesome.css deleted file mode 100644 index 2dcdc220..00000000 --- a/assets/font-awesome/css/font-awesome.css +++ /dev/null @@ -1,1801 +0,0 @@ -/*! - * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */ -/* FONT PATH - * -------------------------- */ -@font-face { - font-family: 'FontAwesome'; - src: url('../fonts/fontawesome-webfont.eot?v=4.3.0'); - src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.3.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.3.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.3.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.3.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular') format('svg'); - font-weight: normal; - font-style: normal; -} -.fa { - display: inline-block; - font: normal normal normal 14px/1 FontAwesome; - font-size: inherit; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - transform: translate(0, 0); -} -/* makes the font 33% larger relative to the icon container */ -.fa-lg { - font-size: 1.33333333em; - line-height: 0.75em; - vertical-align: -15%; -} -.fa-2x { - font-size: 2em; -} -.fa-3x { - font-size: 3em; -} -.fa-4x { - font-size: 4em; -} -.fa-5x { - font-size: 5em; -} -.fa-fw { - width: 1.28571429em; - text-align: center; -} -.fa-ul { - padding-left: 0; - margin-left: 2.14285714em; - list-style-type: none; -} -.fa-ul > li { - position: relative; -} -.fa-li { - position: absolute; - left: -2.14285714em; - width: 2.14285714em; - top: 0.14285714em; - text-align: center; -} -.fa-li.fa-lg { - left: -1.85714286em; -} -.fa-border { - padding: .2em .25em .15em; - border: solid 0.08em #eeeeee; - border-radius: .1em; -} -.pull-right { - float: right; -} -.pull-left { - float: left; -} -.fa.pull-left { - margin-right: .3em; -} -.fa.pull-right { - margin-left: .3em; -} -.fa-spin { - -webkit-animation: fa-spin 2s infinite linear; - animation: fa-spin 2s infinite linear; -} -.fa-pulse { - -webkit-animation: fa-spin 1s infinite steps(8); - animation: fa-spin 1s infinite steps(8); -} -@-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} -@keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} -.fa-rotate-90 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg); -} -.fa-rotate-180 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); - -webkit-transform: rotate(180deg); - -ms-transform: rotate(180deg); - transform: rotate(180deg); -} -.fa-rotate-270 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); - -webkit-transform: rotate(270deg); - -ms-transform: rotate(270deg); - transform: rotate(270deg); -} -.fa-flip-horizontal { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); - -webkit-transform: scale(-1, 1); - -ms-transform: scale(-1, 1); - transform: scale(-1, 1); -} -.fa-flip-vertical { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); - -webkit-transform: scale(1, -1); - -ms-transform: scale(1, -1); - transform: scale(1, -1); -} -:root .fa-rotate-90, -:root .fa-rotate-180, -:root .fa-rotate-270, -:root .fa-flip-horizontal, -:root .fa-flip-vertical { - filter: none; -} -.fa-stack { - position: relative; - display: inline-block; - width: 2em; - height: 2em; - line-height: 2em; - vertical-align: middle; -} -.fa-stack-1x, -.fa-stack-2x { - position: absolute; - left: 0; - width: 100%; - text-align: center; -} -.fa-stack-1x { - line-height: inherit; -} -.fa-stack-2x { - font-size: 2em; -} -.fa-inverse { - color: #ffffff; -} -/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen - readers do not read off random characters that represent icons */ -.fa-glass:before { - content: "\f000"; -} -.fa-music:before { - content: "\f001"; -} -.fa-search:before { - content: "\f002"; -} -.fa-envelope-o:before { - content: "\f003"; -} -.fa-heart:before { - content: "\f004"; -} -.fa-star:before { - content: "\f005"; -} -.fa-star-o:before { - content: "\f006"; -} -.fa-user:before { - content: "\f007"; -} -.fa-film:before { - content: "\f008"; -} -.fa-th-large:before { - content: "\f009"; -} -.fa-th:before { - content: "\f00a"; -} -.fa-th-list:before { - content: "\f00b"; -} -.fa-check:before { - content: "\f00c"; -} -.fa-remove:before, -.fa-close:before, -.fa-times:before { - content: "\f00d"; -} -.fa-search-plus:before { - content: "\f00e"; -} -.fa-search-minus:before { - content: "\f010"; -} -.fa-power-off:before { - content: "\f011"; -} -.fa-signal:before { - content: "\f012"; -} -.fa-gear:before, -.fa-cog:before { - content: "\f013"; -} -.fa-trash-o:before { - content: "\f014"; -} -.fa-home:before { - content: "\f015"; -} -.fa-file-o:before { - content: "\f016"; -} -.fa-clock-o:before { - content: "\f017"; -} -.fa-road:before { - content: "\f018"; -} -.fa-download:before { - content: "\f019"; -} -.fa-arrow-circle-o-down:before { - content: "\f01a"; -} -.fa-arrow-circle-o-up:before { - content: "\f01b"; -} -.fa-inbox:before { - content: "\f01c"; -} -.fa-play-circle-o:before { - content: "\f01d"; -} -.fa-rotate-right:before, -.fa-repeat:before { - content: "\f01e"; -} -.fa-refresh:before { - content: "\f021"; -} -.fa-list-alt:before { - content: "\f022"; -} -.fa-lock:before { - content: "\f023"; -} -.fa-flag:before { - content: "\f024"; -} -.fa-headphones:before { - content: "\f025"; -} -.fa-volume-off:before { - content: "\f026"; -} -.fa-volume-down:before { - content: "\f027"; -} -.fa-volume-up:before { - content: "\f028"; -} -.fa-qrcode:before { - content: "\f029"; -} -.fa-barcode:before { - content: "\f02a"; -} -.fa-tag:before { - content: "\f02b"; -} -.fa-tags:before { - content: "\f02c"; -} -.fa-book:before { - content: "\f02d"; -} -.fa-bookmark:before { - content: "\f02e"; -} -.fa-print:before { - content: "\f02f"; -} -.fa-camera:before { - content: "\f030"; -} -.fa-font:before { - content: "\f031"; -} -.fa-bold:before { - content: "\f032"; -} -.fa-italic:before { - content: "\f033"; -} -.fa-text-height:before { - content: "\f034"; -} -.fa-text-width:before { - content: "\f035"; -} -.fa-align-left:before { - content: "\f036"; -} -.fa-align-center:before { - content: "\f037"; -} -.fa-align-right:before { - content: "\f038"; -} -.fa-align-justify:before { - content: "\f039"; -} -.fa-list:before { - content: "\f03a"; -} -.fa-dedent:before, -.fa-outdent:before { - content: "\f03b"; -} -.fa-indent:before { - content: "\f03c"; -} -.fa-video-camera:before { - content: "\f03d"; -} -.fa-photo:before, -.fa-image:before, -.fa-picture-o:before { - content: "\f03e"; -} -.fa-pencil:before { - content: "\f040"; -} -.fa-map-marker:before { - content: "\f041"; -} -.fa-adjust:before { - content: "\f042"; -} -.fa-tint:before { - content: "\f043"; -} -.fa-edit:before, -.fa-pencil-square-o:before { - content: "\f044"; -} -.fa-share-square-o:before { - content: "\f045"; -} -.fa-check-square-o:before { - content: "\f046"; -} -.fa-arrows:before { - content: "\f047"; -} -.fa-step-backward:before { - content: "\f048"; -} -.fa-fast-backward:before { - content: "\f049"; -} -.fa-backward:before { - content: "\f04a"; -} -.fa-play:before { - content: "\f04b"; -} -.fa-pause:before { - content: "\f04c"; -} -.fa-stop:before { - content: "\f04d"; -} -.fa-forward:before { - content: "\f04e"; -} -.fa-fast-forward:before { - content: "\f050"; -} -.fa-step-forward:before { - content: "\f051"; -} -.fa-eject:before { - content: "\f052"; -} -.fa-chevron-left:before { - content: "\f053"; -} -.fa-chevron-right:before { - content: "\f054"; -} -.fa-plus-circle:before { - content: "\f055"; -} -.fa-minus-circle:before { - content: "\f056"; -} -.fa-times-circle:before { - content: "\f057"; -} -.fa-check-circle:before { - content: "\f058"; -} -.fa-question-circle:before { - content: "\f059"; -} -.fa-info-circle:before { - content: "\f05a"; -} -.fa-crosshairs:before { - content: "\f05b"; -} -.fa-times-circle-o:before { - content: "\f05c"; -} -.fa-check-circle-o:before { - content: "\f05d"; -} -.fa-ban:before { - content: "\f05e"; -} -.fa-arrow-left:before { - content: "\f060"; -} -.fa-arrow-right:before { - content: "\f061"; -} -.fa-arrow-up:before { - content: "\f062"; -} -.fa-arrow-down:before { - content: "\f063"; -} -.fa-mail-forward:before, -.fa-share:before { - content: "\f064"; -} -.fa-expand:before { - content: "\f065"; -} -.fa-compress:before { - content: "\f066"; -} -.fa-plus:before { - content: "\f067"; -} -.fa-minus:before { - content: "\f068"; -} -.fa-asterisk:before { - content: "\f069"; -} -.fa-exclamation-circle:before { - content: "\f06a"; -} -.fa-gift:before { - content: "\f06b"; -} -.fa-leaf:before { - content: "\f06c"; -} -.fa-fire:before { - content: "\f06d"; -} -.fa-eye:before { - content: "\f06e"; -} -.fa-eye-slash:before { - content: "\f070"; -} -.fa-warning:before, -.fa-exclamation-triangle:before { - content: "\f071"; -} -.fa-plane:before { - content: "\f072"; -} -.fa-calendar:before { - content: "\f073"; -} -.fa-random:before { - content: "\f074"; -} -.fa-comment:before { - content: "\f075"; -} -.fa-magnet:before { - content: "\f076"; -} -.fa-chevron-up:before { - content: "\f077"; -} -.fa-chevron-down:before { - content: "\f078"; -} -.fa-retweet:before { - content: "\f079"; -} -.fa-shopping-cart:before { - content: "\f07a"; -} -.fa-folder:before { - content: "\f07b"; -} -.fa-folder-open:before { - content: "\f07c"; -} -.fa-arrows-v:before { - content: "\f07d"; -} -.fa-arrows-h:before { - content: "\f07e"; -} -.fa-bar-chart-o:before, -.fa-bar-chart:before { - content: "\f080"; -} -.fa-twitter-square:before { - content: "\f081"; -} -.fa-facebook-square:before { - content: "\f082"; -} -.fa-camera-retro:before { - content: "\f083"; -} -.fa-key:before { - content: "\f084"; -} -.fa-gears:before, -.fa-cogs:before { - content: "\f085"; -} -.fa-comments:before { - content: "\f086"; -} -.fa-thumbs-o-up:before { - content: "\f087"; -} -.fa-thumbs-o-down:before { - content: "\f088"; -} -.fa-star-half:before { - content: "\f089"; -} -.fa-heart-o:before { - content: "\f08a"; -} -.fa-sign-out:before { - content: "\f08b"; -} -.fa-linkedin-square:before { - content: "\f08c"; -} -.fa-thumb-tack:before { - content: "\f08d"; -} -.fa-external-link:before { - content: "\f08e"; -} -.fa-sign-in:before { - content: "\f090"; -} -.fa-trophy:before { - content: "\f091"; -} -.fa-github-square:before { - content: "\f092"; -} -.fa-upload:before { - content: "\f093"; -} -.fa-lemon-o:before { - content: "\f094"; -} -.fa-phone:before { - content: "\f095"; -} -.fa-square-o:before { - content: "\f096"; -} -.fa-bookmark-o:before { - content: "\f097"; -} -.fa-phone-square:before { - content: "\f098"; -} -.fa-twitter:before { - content: "\f099"; -} -.fa-facebook-f:before, -.fa-facebook:before { - content: "\f09a"; -} -.fa-github:before { - content: "\f09b"; -} -.fa-unlock:before { - content: "\f09c"; -} -.fa-credit-card:before { - content: "\f09d"; -} -.fa-rss:before { - content: "\f09e"; -} -.fa-hdd-o:before { - content: "\f0a0"; -} -.fa-bullhorn:before { - content: "\f0a1"; -} -.fa-bell:before { - content: "\f0f3"; -} -.fa-certificate:before { - content: "\f0a3"; -} -.fa-hand-o-right:before { - content: "\f0a4"; -} -.fa-hand-o-left:before { - content: "\f0a5"; -} -.fa-hand-o-up:before { - content: "\f0a6"; -} -.fa-hand-o-down:before { - content: "\f0a7"; -} -.fa-arrow-circle-left:before { - content: "\f0a8"; -} -.fa-arrow-circle-right:before { - content: "\f0a9"; -} -.fa-arrow-circle-up:before { - content: "\f0aa"; -} -.fa-arrow-circle-down:before { - content: "\f0ab"; -} -.fa-globe:before { - content: "\f0ac"; -} -.fa-wrench:before { - content: "\f0ad"; -} -.fa-tasks:before { - content: "\f0ae"; -} -.fa-filter:before { - content: "\f0b0"; -} -.fa-briefcase:before { - content: "\f0b1"; -} -.fa-arrows-alt:before { - content: "\f0b2"; -} -.fa-group:before, -.fa-users:before { - content: "\f0c0"; -} -.fa-chain:before, -.fa-link:before { - content: "\f0c1"; -} -.fa-cloud:before { - content: "\f0c2"; -} -.fa-flask:before { - content: "\f0c3"; -} -.fa-cut:before, -.fa-scissors:before { - content: "\f0c4"; -} -.fa-copy:before, -.fa-files-o:before { - content: "\f0c5"; -} -.fa-paperclip:before { - content: "\f0c6"; -} -.fa-save:before, -.fa-floppy-o:before { - content: "\f0c7"; -} -.fa-square:before { - content: "\f0c8"; -} -.fa-navicon:before, -.fa-reorder:before, -.fa-bars:before { - content: "\f0c9"; -} -.fa-list-ul:before { - content: "\f0ca"; -} -.fa-list-ol:before { - content: "\f0cb"; -} -.fa-strikethrough:before { - content: "\f0cc"; -} -.fa-underline:before { - content: "\f0cd"; -} -.fa-table:before { - content: "\f0ce"; -} -.fa-magic:before { - content: "\f0d0"; -} -.fa-truck:before { - content: "\f0d1"; -} -.fa-pinterest:before { - content: "\f0d2"; -} -.fa-pinterest-square:before { - content: "\f0d3"; -} -.fa-google-plus-square:before { - content: "\f0d4"; -} -.fa-google-plus:before { - content: "\f0d5"; -} -.fa-money:before { - content: "\f0d6"; -} -.fa-caret-down:before { - content: "\f0d7"; -} -.fa-caret-up:before { - content: "\f0d8"; -} -.fa-caret-left:before { - content: "\f0d9"; -} -.fa-caret-right:before { - content: "\f0da"; -} -.fa-columns:before { - content: "\f0db"; -} -.fa-unsorted:before, -.fa-sort:before { - content: "\f0dc"; -} -.fa-sort-down:before, -.fa-sort-desc:before { - content: "\f0dd"; -} -.fa-sort-up:before, -.fa-sort-asc:before { - content: "\f0de"; -} -.fa-envelope:before { - content: "\f0e0"; -} -.fa-linkedin:before { - content: "\f0e1"; -} -.fa-rotate-left:before, -.fa-undo:before { - content: "\f0e2"; -} -.fa-legal:before, -.fa-gavel:before { - content: "\f0e3"; -} -.fa-dashboard:before, -.fa-tachometer:before { - content: "\f0e4"; -} -.fa-comment-o:before { - content: "\f0e5"; -} -.fa-comments-o:before { - content: "\f0e6"; -} -.fa-flash:before, -.fa-bolt:before { - content: "\f0e7"; -} -.fa-sitemap:before { - content: "\f0e8"; -} -.fa-umbrella:before { - content: "\f0e9"; -} -.fa-paste:before, -.fa-clipboard:before { - content: "\f0ea"; -} -.fa-lightbulb-o:before { - content: "\f0eb"; -} -.fa-exchange:before { - content: "\f0ec"; -} -.fa-cloud-download:before { - content: "\f0ed"; -} -.fa-cloud-upload:before { - content: "\f0ee"; -} -.fa-user-md:before { - content: "\f0f0"; -} -.fa-stethoscope:before { - content: "\f0f1"; -} -.fa-suitcase:before { - content: "\f0f2"; -} -.fa-bell-o:before { - content: "\f0a2"; -} -.fa-coffee:before { - content: "\f0f4"; -} -.fa-cutlery:before { - content: "\f0f5"; -} -.fa-file-text-o:before { - content: "\f0f6"; -} -.fa-building-o:before { - content: "\f0f7"; -} -.fa-hospital-o:before { - content: "\f0f8"; -} -.fa-ambulance:before { - content: "\f0f9"; -} -.fa-medkit:before { - content: "\f0fa"; -} -.fa-fighter-jet:before { - content: "\f0fb"; -} -.fa-beer:before { - content: "\f0fc"; -} -.fa-h-square:before { - content: "\f0fd"; -} -.fa-plus-square:before { - content: "\f0fe"; -} -.fa-angle-double-left:before { - content: "\f100"; -} -.fa-angle-double-right:before { - content: "\f101"; -} -.fa-angle-double-up:before { - content: "\f102"; -} -.fa-angle-double-down:before { - content: "\f103"; -} -.fa-angle-left:before { - content: "\f104"; -} -.fa-angle-right:before { - content: "\f105"; -} -.fa-angle-up:before { - content: "\f106"; -} -.fa-angle-down:before { - content: "\f107"; -} -.fa-desktop:before { - content: "\f108"; -} -.fa-laptop:before { - content: "\f109"; -} -.fa-tablet:before { - content: "\f10a"; -} -.fa-mobile-phone:before, -.fa-mobile:before { - content: "\f10b"; -} -.fa-circle-o:before { - content: "\f10c"; -} -.fa-quote-left:before { - content: "\f10d"; -} -.fa-quote-right:before { - content: "\f10e"; -} -.fa-spinner:before { - content: "\f110"; -} -.fa-circle:before { - content: "\f111"; -} -.fa-mail-reply:before, -.fa-reply:before { - content: "\f112"; -} -.fa-github-alt:before { - content: "\f113"; -} -.fa-folder-o:before { - content: "\f114"; -} -.fa-folder-open-o:before { - content: "\f115"; -} -.fa-smile-o:before { - content: "\f118"; -} -.fa-frown-o:before { - content: "\f119"; -} -.fa-meh-o:before { - content: "\f11a"; -} -.fa-gamepad:before { - content: "\f11b"; -} -.fa-keyboard-o:before { - content: "\f11c"; -} -.fa-flag-o:before { - content: "\f11d"; -} -.fa-flag-checkered:before { - content: "\f11e"; -} -.fa-terminal:before { - content: "\f120"; -} -.fa-code:before { - content: "\f121"; -} -.fa-mail-reply-all:before, -.fa-reply-all:before { - content: "\f122"; -} -.fa-star-half-empty:before, -.fa-star-half-full:before, -.fa-star-half-o:before { - content: "\f123"; -} -.fa-location-arrow:before { - content: "\f124"; -} -.fa-crop:before { - content: "\f125"; -} -.fa-code-fork:before { - content: "\f126"; -} -.fa-unlink:before, -.fa-chain-broken:before { - content: "\f127"; -} -.fa-question:before { - content: "\f128"; -} -.fa-info:before { - content: "\f129"; -} -.fa-exclamation:before { - content: "\f12a"; -} -.fa-superscript:before { - content: "\f12b"; -} -.fa-subscript:before { - content: "\f12c"; -} -.fa-eraser:before { - content: "\f12d"; -} -.fa-puzzle-piece:before { - content: "\f12e"; -} -.fa-microphone:before { - content: "\f130"; -} -.fa-microphone-slash:before { - content: "\f131"; -} -.fa-shield:before { - content: "\f132"; -} -.fa-calendar-o:before { - content: "\f133"; -} -.fa-fire-extinguisher:before { - content: "\f134"; -} -.fa-rocket:before { - content: "\f135"; -} -.fa-maxcdn:before { - content: "\f136"; -} -.fa-chevron-circle-left:before { - content: "\f137"; -} -.fa-chevron-circle-right:before { - content: "\f138"; -} -.fa-chevron-circle-up:before { - content: "\f139"; -} -.fa-chevron-circle-down:before { - content: "\f13a"; -} -.fa-html5:before { - content: "\f13b"; -} -.fa-css3:before { - content: "\f13c"; -} -.fa-anchor:before { - content: "\f13d"; -} -.fa-unlock-alt:before { - content: "\f13e"; -} -.fa-bullseye:before { - content: "\f140"; -} -.fa-ellipsis-h:before { - content: "\f141"; -} -.fa-ellipsis-v:before { - content: "\f142"; -} -.fa-rss-square:before { - content: "\f143"; -} -.fa-play-circle:before { - content: "\f144"; -} -.fa-ticket:before { - content: "\f145"; -} -.fa-minus-square:before { - content: "\f146"; -} -.fa-minus-square-o:before { - content: "\f147"; -} -.fa-level-up:before { - content: "\f148"; -} -.fa-level-down:before { - content: "\f149"; -} -.fa-check-square:before { - content: "\f14a"; -} -.fa-pencil-square:before { - content: "\f14b"; -} -.fa-external-link-square:before { - content: "\f14c"; -} -.fa-share-square:before { - content: "\f14d"; -} -.fa-compass:before { - content: "\f14e"; -} -.fa-toggle-down:before, -.fa-caret-square-o-down:before { - content: "\f150"; -} -.fa-toggle-up:before, -.fa-caret-square-o-up:before { - content: "\f151"; -} -.fa-toggle-right:before, -.fa-caret-square-o-right:before { - content: "\f152"; -} -.fa-euro:before, -.fa-eur:before { - content: "\f153"; -} -.fa-gbp:before { - content: "\f154"; -} -.fa-dollar:before, -.fa-usd:before { - content: "\f155"; -} -.fa-rupee:before, -.fa-inr:before { - content: "\f156"; -} -.fa-cny:before, -.fa-rmb:before, -.fa-yen:before, -.fa-jpy:before { - content: "\f157"; -} -.fa-ruble:before, -.fa-rouble:before, -.fa-rub:before { - content: "\f158"; -} -.fa-won:before, -.fa-krw:before { - content: "\f159"; -} -.fa-bitcoin:before, -.fa-btc:before { - content: "\f15a"; -} -.fa-file:before { - content: "\f15b"; -} -.fa-file-text:before { - content: "\f15c"; -} -.fa-sort-alpha-asc:before { - content: "\f15d"; -} -.fa-sort-alpha-desc:before { - content: "\f15e"; -} -.fa-sort-amount-asc:before { - content: "\f160"; -} -.fa-sort-amount-desc:before { - content: "\f161"; -} -.fa-sort-numeric-asc:before { - content: "\f162"; -} -.fa-sort-numeric-desc:before { - content: "\f163"; -} -.fa-thumbs-up:before { - content: "\f164"; -} -.fa-thumbs-down:before { - content: "\f165"; -} -.fa-youtube-square:before { - content: "\f166"; -} -.fa-youtube:before { - content: "\f167"; -} -.fa-xing:before { - content: "\f168"; -} -.fa-xing-square:before { - content: "\f169"; -} -.fa-youtube-play:before { - content: "\f16a"; -} -.fa-dropbox:before { - content: "\f16b"; -} -.fa-stack-overflow:before { - content: "\f16c"; -} -.fa-instagram:before { - content: "\f16d"; -} -.fa-flickr:before { - content: "\f16e"; -} -.fa-adn:before { - content: "\f170"; -} -.fa-bitbucket:before { - content: "\f171"; -} -.fa-bitbucket-square:before { - content: "\f172"; -} -.fa-tumblr:before { - content: "\f173"; -} -.fa-tumblr-square:before { - content: "\f174"; -} -.fa-long-arrow-down:before { - content: "\f175"; -} -.fa-long-arrow-up:before { - content: "\f176"; -} -.fa-long-arrow-left:before { - content: "\f177"; -} -.fa-long-arrow-right:before { - content: "\f178"; -} -.fa-apple:before { - content: "\f179"; -} -.fa-windows:before { - content: "\f17a"; -} -.fa-android:before { - content: "\f17b"; -} -.fa-linux:before { - content: "\f17c"; -} -.fa-dribbble:before { - content: "\f17d"; -} -.fa-skype:before { - content: "\f17e"; -} -.fa-foursquare:before { - content: "\f180"; -} -.fa-trello:before { - content: "\f181"; -} -.fa-female:before { - content: "\f182"; -} -.fa-male:before { - content: "\f183"; -} -.fa-gittip:before, -.fa-gratipay:before { - content: "\f184"; -} -.fa-sun-o:before { - content: "\f185"; -} -.fa-moon-o:before { - content: "\f186"; -} -.fa-archive:before { - content: "\f187"; -} -.fa-bug:before { - content: "\f188"; -} -.fa-vk:before { - content: "\f189"; -} -.fa-weibo:before { - content: "\f18a"; -} -.fa-renren:before { - content: "\f18b"; -} -.fa-pagelines:before { - content: "\f18c"; -} -.fa-stack-exchange:before { - content: "\f18d"; -} -.fa-arrow-circle-o-right:before { - content: "\f18e"; -} -.fa-arrow-circle-o-left:before { - content: "\f190"; -} -.fa-toggle-left:before, -.fa-caret-square-o-left:before { - content: "\f191"; -} -.fa-dot-circle-o:before { - content: "\f192"; -} -.fa-wheelchair:before { - content: "\f193"; -} -.fa-vimeo-square:before { - content: "\f194"; -} -.fa-turkish-lira:before, -.fa-try:before { - content: "\f195"; -} -.fa-plus-square-o:before { - content: "\f196"; -} -.fa-space-shuttle:before { - content: "\f197"; -} -.fa-slack:before { - content: "\f198"; -} -.fa-envelope-square:before { - content: "\f199"; -} -.fa-wordpress:before { - content: "\f19a"; -} -.fa-openid:before { - content: "\f19b"; -} -.fa-institution:before, -.fa-bank:before, -.fa-university:before { - content: "\f19c"; -} -.fa-mortar-board:before, -.fa-graduation-cap:before { - content: "\f19d"; -} -.fa-yahoo:before { - content: "\f19e"; -} -.fa-google:before { - content: "\f1a0"; -} -.fa-reddit:before { - content: "\f1a1"; -} -.fa-reddit-square:before { - content: "\f1a2"; -} -.fa-stumbleupon-circle:before { - content: "\f1a3"; -} -.fa-stumbleupon:before { - content: "\f1a4"; -} -.fa-delicious:before { - content: "\f1a5"; -} -.fa-digg:before { - content: "\f1a6"; -} -.fa-pied-piper:before { - content: "\f1a7"; -} -.fa-pied-piper-alt:before { - content: "\f1a8"; -} -.fa-drupal:before { - content: "\f1a9"; -} -.fa-joomla:before { - content: "\f1aa"; -} -.fa-language:before { - content: "\f1ab"; -} -.fa-fax:before { - content: "\f1ac"; -} -.fa-building:before { - content: "\f1ad"; -} -.fa-child:before { - content: "\f1ae"; -} -.fa-paw:before { - content: "\f1b0"; -} -.fa-spoon:before { - content: "\f1b1"; -} -.fa-cube:before { - content: "\f1b2"; -} -.fa-cubes:before { - content: "\f1b3"; -} -.fa-behance:before { - content: "\f1b4"; -} -.fa-behance-square:before { - content: "\f1b5"; -} -.fa-steam:before { - content: "\f1b6"; -} -.fa-steam-square:before { - content: "\f1b7"; -} -.fa-recycle:before { - content: "\f1b8"; -} -.fa-automobile:before, -.fa-car:before { - content: "\f1b9"; -} -.fa-cab:before, -.fa-taxi:before { - content: "\f1ba"; -} -.fa-tree:before { - content: "\f1bb"; -} -.fa-spotify:before { - content: "\f1bc"; -} -.fa-deviantart:before { - content: "\f1bd"; -} -.fa-soundcloud:before { - content: "\f1be"; -} -.fa-database:before { - content: "\f1c0"; -} -.fa-file-pdf-o:before { - content: "\f1c1"; -} -.fa-file-word-o:before { - content: "\f1c2"; -} -.fa-file-excel-o:before { - content: "\f1c3"; -} -.fa-file-powerpoint-o:before { - content: "\f1c4"; -} -.fa-file-photo-o:before, -.fa-file-picture-o:before, -.fa-file-image-o:before { - content: "\f1c5"; -} -.fa-file-zip-o:before, -.fa-file-archive-o:before { - content: "\f1c6"; -} -.fa-file-sound-o:before, -.fa-file-audio-o:before { - content: "\f1c7"; -} -.fa-file-movie-o:before, -.fa-file-video-o:before { - content: "\f1c8"; -} -.fa-file-code-o:before { - content: "\f1c9"; -} -.fa-vine:before { - content: "\f1ca"; -} -.fa-codepen:before { - content: "\f1cb"; -} -.fa-jsfiddle:before { - content: "\f1cc"; -} -.fa-life-bouy:before, -.fa-life-buoy:before, -.fa-life-saver:before, -.fa-support:before, -.fa-life-ring:before { - content: "\f1cd"; -} -.fa-circle-o-notch:before { - content: "\f1ce"; -} -.fa-ra:before, -.fa-rebel:before { - content: "\f1d0"; -} -.fa-ge:before, -.fa-empire:before { - content: "\f1d1"; -} -.fa-git-square:before { - content: "\f1d2"; -} -.fa-git:before { - content: "\f1d3"; -} -.fa-hacker-news:before { - content: "\f1d4"; -} -.fa-tencent-weibo:before { - content: "\f1d5"; -} -.fa-qq:before { - content: "\f1d6"; -} -.fa-wechat:before, -.fa-weixin:before { - content: "\f1d7"; -} -.fa-send:before, -.fa-paper-plane:before { - content: "\f1d8"; -} -.fa-send-o:before, -.fa-paper-plane-o:before { - content: "\f1d9"; -} -.fa-history:before { - content: "\f1da"; -} -.fa-genderless:before, -.fa-circle-thin:before { - content: "\f1db"; -} -.fa-header:before { - content: "\f1dc"; -} -.fa-paragraph:before { - content: "\f1dd"; -} -.fa-sliders:before { - content: "\f1de"; -} -.fa-share-alt:before { - content: "\f1e0"; -} -.fa-share-alt-square:before { - content: "\f1e1"; -} -.fa-bomb:before { - content: "\f1e2"; -} -.fa-soccer-ball-o:before, -.fa-futbol-o:before { - content: "\f1e3"; -} -.fa-tty:before { - content: "\f1e4"; -} -.fa-binoculars:before { - content: "\f1e5"; -} -.fa-plug:before { - content: "\f1e6"; -} -.fa-slideshare:before { - content: "\f1e7"; -} -.fa-twitch:before { - content: "\f1e8"; -} -.fa-yelp:before { - content: "\f1e9"; -} -.fa-newspaper-o:before { - content: "\f1ea"; -} -.fa-wifi:before { - content: "\f1eb"; -} -.fa-calculator:before { - content: "\f1ec"; -} -.fa-paypal:before { - content: "\f1ed"; -} -.fa-google-wallet:before { - content: "\f1ee"; -} -.fa-cc-visa:before { - content: "\f1f0"; -} -.fa-cc-mastercard:before { - content: "\f1f1"; -} -.fa-cc-discover:before { - content: "\f1f2"; -} -.fa-cc-amex:before { - content: "\f1f3"; -} -.fa-cc-paypal:before { - content: "\f1f4"; -} -.fa-cc-stripe:before { - content: "\f1f5"; -} -.fa-bell-slash:before { - content: "\f1f6"; -} -.fa-bell-slash-o:before { - content: "\f1f7"; -} -.fa-trash:before { - content: "\f1f8"; -} -.fa-copyright:before { - content: "\f1f9"; -} -.fa-at:before { - content: "\f1fa"; -} -.fa-eyedropper:before { - content: "\f1fb"; -} -.fa-paint-brush:before { - content: "\f1fc"; -} -.fa-birthday-cake:before { - content: "\f1fd"; -} -.fa-area-chart:before { - content: "\f1fe"; -} -.fa-pie-chart:before { - content: "\f200"; -} -.fa-line-chart:before { - content: "\f201"; -} -.fa-lastfm:before { - content: "\f202"; -} -.fa-lastfm-square:before { - content: "\f203"; -} -.fa-toggle-off:before { - content: "\f204"; -} -.fa-toggle-on:before { - content: "\f205"; -} -.fa-bicycle:before { - content: "\f206"; -} -.fa-bus:before { - content: "\f207"; -} -.fa-ioxhost:before { - content: "\f208"; -} -.fa-angellist:before { - content: "\f209"; -} -.fa-cc:before { - content: "\f20a"; -} -.fa-shekel:before, -.fa-sheqel:before, -.fa-ils:before { - content: "\f20b"; -} -.fa-meanpath:before { - content: "\f20c"; -} -.fa-buysellads:before { - content: "\f20d"; -} -.fa-connectdevelop:before { - content: "\f20e"; -} -.fa-dashcube:before { - content: "\f210"; -} -.fa-forumbee:before { - content: "\f211"; -} -.fa-leanpub:before { - content: "\f212"; -} -.fa-sellsy:before { - content: "\f213"; -} -.fa-shirtsinbulk:before { - content: "\f214"; -} -.fa-simplybuilt:before { - content: "\f215"; -} -.fa-skyatlas:before { - content: "\f216"; -} -.fa-cart-plus:before { - content: "\f217"; -} -.fa-cart-arrow-down:before { - content: "\f218"; -} -.fa-diamond:before { - content: "\f219"; -} -.fa-ship:before { - content: "\f21a"; -} -.fa-user-secret:before { - content: "\f21b"; -} -.fa-motorcycle:before { - content: "\f21c"; -} -.fa-street-view:before { - content: "\f21d"; -} -.fa-heartbeat:before { - content: "\f21e"; -} -.fa-venus:before { - content: "\f221"; -} -.fa-mars:before { - content: "\f222"; -} -.fa-mercury:before { - content: "\f223"; -} -.fa-transgender:before { - content: "\f224"; -} -.fa-transgender-alt:before { - content: "\f225"; -} -.fa-venus-double:before { - content: "\f226"; -} -.fa-mars-double:before { - content: "\f227"; -} -.fa-venus-mars:before { - content: "\f228"; -} -.fa-mars-stroke:before { - content: "\f229"; -} -.fa-mars-stroke-v:before { - content: "\f22a"; -} -.fa-mars-stroke-h:before { - content: "\f22b"; -} -.fa-neuter:before { - content: "\f22c"; -} -.fa-facebook-official:before { - content: "\f230"; -} -.fa-pinterest-p:before { - content: "\f231"; -} -.fa-whatsapp:before { - content: "\f232"; -} -.fa-server:before { - content: "\f233"; -} -.fa-user-plus:before { - content: "\f234"; -} -.fa-user-times:before { - content: "\f235"; -} -.fa-hotel:before, -.fa-bed:before { - content: "\f236"; -} -.fa-viacoin:before { - content: "\f237"; -} -.fa-train:before { - content: "\f238"; -} -.fa-subway:before { - content: "\f239"; -} -.fa-medium:before { - content: "\f23a"; -} diff --git a/assets/font-awesome/css/font-awesome.min.css b/assets/font-awesome/css/font-awesome.min.css deleted file mode 100644 index 24fcc04c..00000000 --- a/assets/font-awesome/css/font-awesome.min.css +++ /dev/null @@ -1,4 +0,0 @@ -/*! - * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.3.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.3.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.3.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.3.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.3.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-genderless:before,.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"} \ No newline at end of file diff --git a/assets/font-awesome/fonts/FontAwesome.otf b/assets/font-awesome/fonts/FontAwesome.otf deleted file mode 100644 index f7936cc1..00000000 Binary files a/assets/font-awesome/fonts/FontAwesome.otf and /dev/null differ diff --git a/assets/font-awesome/fonts/fontawesome-webfont.eot b/assets/font-awesome/fonts/fontawesome-webfont.eot deleted file mode 100644 index 33b2bb80..00000000 Binary files a/assets/font-awesome/fonts/fontawesome-webfont.eot and /dev/null differ diff --git a/assets/font-awesome/fonts/fontawesome-webfont.svg b/assets/font-awesome/fonts/fontawesome-webfont.svg deleted file mode 100644 index 1ee89d43..00000000 --- a/assets/font-awesome/fonts/fontawesome-webfont.svg +++ /dev/null @@ -1,565 +0,0 @@ -<?xml version="1.0" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1"> -<metadata></metadata> -<defs> -<font id="fontawesomeregular" horiz-adv-x="1536" > -<font-face units-per-em="1792" ascent="1536" descent="-256" /> -<missing-glyph horiz-adv-x="448" /> -<glyph unicode=" " horiz-adv-x="448" /> -<glyph unicode="&#x09;" horiz-adv-x="448" /> -<glyph unicode="&#xa0;" horiz-adv-x="448" /> -<glyph unicode="&#xa8;" horiz-adv-x="1792" /> -<glyph unicode="&#xa9;" horiz-adv-x="1792" /> -<glyph unicode="&#xae;" horiz-adv-x="1792" /> -<glyph unicode="&#xb4;" horiz-adv-x="1792" /> -<glyph unicode="&#xc6;" horiz-adv-x="1792" /> -<glyph unicode="&#xd8;" horiz-adv-x="1792" /> -<glyph unicode="&#x2000;" horiz-adv-x="768" /> -<glyph unicode="&#x2001;" horiz-adv-x="1537" /> -<glyph unicode="&#x2002;" horiz-adv-x="768" /> -<glyph unicode="&#x2003;" horiz-adv-x="1537" /> -<glyph unicode="&#x2004;" horiz-adv-x="512" /> -<glyph unicode="&#x2005;" horiz-adv-x="384" /> -<glyph unicode="&#x2006;" horiz-adv-x="256" /> -<glyph unicode="&#x2007;" horiz-adv-x="256" /> -<glyph unicode="&#x2008;" horiz-adv-x="192" /> -<glyph unicode="&#x2009;" horiz-adv-x="307" /> -<glyph unicode="&#x200a;" horiz-adv-x="85" /> -<glyph unicode="&#x202f;" horiz-adv-x="307" /> -<glyph unicode="&#x205f;" horiz-adv-x="384" /> -<glyph unicode="&#x2122;" horiz-adv-x="1792" /> -<glyph unicode="&#x221e;" horiz-adv-x="1792" /> -<glyph unicode="&#x2260;" horiz-adv-x="1792" /> -<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" /> -<glyph unicode="&#xf000;" horiz-adv-x="1792" d="M1699 1350q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45t45 19h320v768l-632 632q-43 43 -43 78q0 23 18 36.5t38 17.5t43 4h1408q23 0 43 -4t38 -17.5t18 -36.5z" /> -<glyph unicode="&#xf001;" d="M1536 1312v-1120q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v537l-768 -237v-709q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89 t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v967q0 31 19 56.5t49 35.5l832 256q12 4 28 4q40 0 68 -28t28 -68z" /> -<glyph unicode="&#xf002;" horiz-adv-x="1664" d="M1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -52 -38 -90t-90 -38q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5 t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" /> -<glyph unicode="&#xf003;" horiz-adv-x="1792" d="M1664 32v768q-32 -36 -69 -66q-268 -206 -426 -338q-51 -43 -83 -67t-86.5 -48.5t-102.5 -24.5h-1h-1q-48 0 -102.5 24.5t-86.5 48.5t-83 67q-158 132 -426 338q-37 30 -69 66v-768q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1664 1083v11v13.5t-0.5 13 t-3 12.5t-5.5 9t-9 7.5t-14 2.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5q0 -168 147 -284q193 -152 401 -317q6 -5 35 -29.5t46 -37.5t44.5 -31.5t50.5 -27.5t43 -9h1h1q20 0 43 9t50.5 27.5t44.5 31.5t46 37.5t35 29.5q208 165 401 317q54 43 100.5 115.5t46.5 131.5z M1792 1120v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" /> -<glyph unicode="&#xf004;" horiz-adv-x="1792" d="M896 -128q-26 0 -44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600 q-18 -18 -44 -18z" /> -<glyph unicode="&#xf005;" horiz-adv-x="1664" d="M1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -21 -10.5 -35.5t-30.5 -14.5q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455 l502 -73q56 -9 56 -46z" /> -<glyph unicode="&#xf006;" horiz-adv-x="1664" d="M1137 532l306 297l-422 62l-189 382l-189 -382l-422 -62l306 -297l-73 -421l378 199l377 -199zM1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -50 -41 -50q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500 l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46z" /> -<glyph unicode="&#xf007;" horiz-adv-x="1408" d="M1408 131q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q9 0 42 -21.5t74.5 -48t108 -48t133.5 -21.5t133.5 21.5t108 48t74.5 48t42 21.5q61 0 111.5 -20t85.5 -53.5t62 -81 t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" /> -<glyph unicode="&#xf008;" horiz-adv-x="1920" d="M384 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 320v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 704v128q0 26 -19 45t-45 19h-128 q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 -64v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM384 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45 t45 -19h128q26 0 45 19t19 45zM1792 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 704v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1792 320v128 q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 704v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19 t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1920 1248v-1344q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1344q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" /> -<glyph unicode="&#xf009;" horiz-adv-x="1664" d="M768 512v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM768 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 512v-384q0 -52 -38 -90t-90 -38 h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" /> -<glyph unicode="&#xf00a;" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 288v-192q0 -40 -28 -68t-68 -28h-320 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68z" /> -<glyph unicode="&#xf00b;" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-960 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h960q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68z" /> -<glyph unicode="&#xf00c;" horiz-adv-x="1792" d="M1671 970q0 -40 -28 -68l-724 -724l-136 -136q-28 -28 -68 -28t-68 28l-136 136l-362 362q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -295l656 657q28 28 68 28t68 -28l136 -136q28 -28 28 -68z" /> -<glyph unicode="&#xf00d;" horiz-adv-x="1408" d="M1298 214q0 -40 -28 -68l-136 -136q-28 -28 -68 -28t-68 28l-294 294l-294 -294q-28 -28 -68 -28t-68 28l-136 136q-28 28 -28 68t28 68l294 294l-294 294q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -294l294 294q28 28 68 28t68 -28l136 -136q28 -28 28 -68 t-28 -68l-294 -294l294 -294q28 -28 28 -68z" /> -<glyph unicode="&#xf00e;" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-224q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v224h-224q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h224v224q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-224h224 q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5 t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" /> -<glyph unicode="&#xf010;" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-576q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h576q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5z M1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z " /> -<glyph unicode="&#xf011;" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61t-298 61t-245 164t-164 245t-61 298q0 182 80.5 343t226.5 270q43 32 95.5 25t83.5 -50q32 -42 24.5 -94.5t-49.5 -84.5q-98 -74 -151.5 -181t-53.5 -228q0 -104 40.5 -198.5t109.5 -163.5t163.5 -109.5 t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5q0 121 -53.5 228t-151.5 181q-42 32 -49.5 84.5t24.5 94.5q31 43 84 50t95 -25q146 -109 226.5 -270t80.5 -343zM896 1408v-640q0 -52 -38 -90t-90 -38t-90 38t-38 90v640q0 52 38 90t90 38t90 -38t38 -90z" /> -<glyph unicode="&#xf012;" horiz-adv-x="1792" d="M256 96v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 224v-320q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 480v-576q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1408 864v-960q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1376v-1472q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1472q0 14 9 23t23 9h192q14 0 23 -9t9 -23z" /> -<glyph unicode="&#xf013;" d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1536 749v-222q0 -12 -8 -23t-20 -13l-185 -28q-19 -54 -39 -91q35 -50 107 -138q10 -12 10 -25t-9 -23q-27 -37 -99 -108t-94 -71q-12 0 -26 9l-138 108q-44 -23 -91 -38 q-16 -136 -29 -186q-7 -28 -36 -28h-222q-14 0 -24.5 8.5t-11.5 21.5l-28 184q-49 16 -90 37l-141 -107q-10 -9 -25 -9q-14 0 -25 11q-126 114 -165 168q-7 10 -7 23q0 12 8 23q15 21 51 66.5t54 70.5q-27 50 -41 99l-183 27q-13 2 -21 12.5t-8 23.5v222q0 12 8 23t19 13 l186 28q14 46 39 92q-40 57 -107 138q-10 12 -10 24q0 10 9 23q26 36 98.5 107.5t94.5 71.5q13 0 26 -10l138 -107q44 23 91 38q16 136 29 186q7 28 36 28h222q14 0 24.5 -8.5t11.5 -21.5l28 -184q49 -16 90 -37l142 107q9 9 24 9q13 0 25 -10q129 -119 165 -170q7 -8 7 -22 q0 -12 -8 -23q-15 -21 -51 -66.5t-54 -70.5q26 -50 41 -98l183 -28q13 -2 21 -12.5t8 -23.5z" /> -<glyph unicode="&#xf014;" horiz-adv-x="1408" d="M512 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM768 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1024 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1152 76v948h-896v-948q0 -22 7 -40.5t14.5 -27t10.5 -8.5h832q3 0 10.5 8.5t14.5 27t7 40.5zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832 q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" /> -<glyph unicode="&#xf015;" horiz-adv-x="1664" d="M1408 544v-480q0 -26 -19 -45t-45 -19h-384v384h-256v-384h-384q-26 0 -45 19t-19 45v480q0 1 0.5 3t0.5 3l575 474l575 -474q1 -2 1 -6zM1631 613l-62 -74q-8 -9 -21 -11h-3q-13 0 -21 7l-692 577l-692 -577q-12 -8 -24 -7q-13 2 -21 11l-62 74q-8 10 -7 23.5t11 21.5 l719 599q32 26 76 26t76 -26l244 -204v195q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-408l219 -182q10 -8 11 -21.5t-7 -23.5z" /> -<glyph unicode="&#xf016;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z " /> -<glyph unicode="&#xf017;" d="M896 992v-448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf018;" horiz-adv-x="1920" d="M1111 540v4l-24 320q-1 13 -11 22.5t-23 9.5h-186q-13 0 -23 -9.5t-11 -22.5l-24 -320v-4q-1 -12 8 -20t21 -8h244q12 0 21 8t8 20zM1870 73q0 -73 -46 -73h-704q13 0 22 9.5t8 22.5l-20 256q-1 13 -11 22.5t-23 9.5h-272q-13 0 -23 -9.5t-11 -22.5l-20 -256 q-1 -13 8 -22.5t22 -9.5h-704q-46 0 -46 73q0 54 26 116l417 1044q8 19 26 33t38 14h339q-13 0 -23 -9.5t-11 -22.5l-15 -192q-1 -14 8 -23t22 -9h166q13 0 22 9t8 23l-15 192q-1 13 -11 22.5t-23 9.5h339q20 0 38 -14t26 -33l417 -1044q26 -62 26 -116z" /> -<glyph unicode="&#xf019;" horiz-adv-x="1664" d="M1280 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 416v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h465l135 -136 q58 -56 136 -56t136 56l136 136h464q40 0 68 -28t28 -68zM1339 985q17 -41 -14 -70l-448 -448q-18 -19 -45 -19t-45 19l-448 448q-31 29 -14 70q17 39 59 39h256v448q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-448h256q42 0 59 -39z" /> -<glyph unicode="&#xf01a;" d="M1120 608q0 -12 -10 -24l-319 -319q-11 -9 -23 -9t-23 9l-320 320q-15 16 -7 35q8 20 30 20h192v352q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-352h192q14 0 23 -9t9 -23zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273 t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf01b;" d="M1118 660q-8 -20 -30 -20h-192v-352q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v352h-192q-14 0 -23 9t-9 23q0 12 10 24l319 319q11 9 23 9t23 -9l320 -320q15 -16 7 -35zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198 t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf01c;" d="M1023 576h316q-1 3 -2.5 8t-2.5 8l-212 496h-708l-212 -496q-1 -2 -2.5 -8t-2.5 -8h316l95 -192h320zM1536 546v-482q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v482q0 62 25 123l238 552q10 25 36.5 42t52.5 17h832q26 0 52.5 -17t36.5 -42l238 -552 q25 -61 25 -123z" /> -<glyph unicode="&#xf01d;" d="M1184 640q0 -37 -32 -55l-544 -320q-15 -9 -32 -9q-16 0 -32 8q-32 19 -32 56v640q0 37 32 56q33 18 64 -1l544 -320q32 -18 32 -55zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf01e;" d="M1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l138 138q-148 137 -349 137q-104 0 -198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5q119 0 225 52t179 147q7 10 23 12q14 0 25 -9 l137 -138q9 -8 9.5 -20.5t-7.5 -22.5q-109 -132 -264 -204.5t-327 -72.5q-156 0 -298 61t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q147 0 284.5 -55.5t244.5 -156.5l130 129q29 31 70 14q39 -17 39 -59z" /> -<glyph unicode="&#xf021;" d="M1511 480q0 -5 -1 -7q-64 -268 -268 -434.5t-478 -166.5q-146 0 -282.5 55t-243.5 157l-129 -129q-19 -19 -45 -19t-45 19t-19 45v448q0 26 19 45t45 19h448q26 0 45 -19t19 -45t-19 -45l-137 -137q71 -66 161 -102t187 -36q134 0 250 65t186 179q11 17 53 117 q8 23 30 23h192q13 0 22.5 -9.5t9.5 -22.5zM1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-26 0 -45 19t-19 45t19 45l138 138q-148 137 -349 137q-134 0 -250 -65t-186 -179q-11 -17 -53 -117q-8 -23 -30 -23h-199q-13 0 -22.5 9.5t-9.5 22.5v7q65 268 270 434.5t480 166.5 q146 0 284 -55.5t245 -156.5l130 129q19 19 45 19t45 -19t19 -45z" /> -<glyph unicode="&#xf022;" horiz-adv-x="1792" d="M384 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M384 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1536 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5z M1536 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5zM1536 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5 t9.5 -22.5zM1664 160v832q0 13 -9.5 22.5t-22.5 9.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1792 1248v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47 t47 -113z" /> -<glyph unicode="&#xf023;" horiz-adv-x="1152" d="M320 768h512v192q0 106 -75 181t-181 75t-181 -75t-75 -181v-192zM1152 672v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v192q0 184 132 316t316 132t316 -132t132 -316v-192h32q40 0 68 -28t28 -68z" /> -<glyph unicode="&#xf024;" horiz-adv-x="1792" d="M320 1280q0 -72 -64 -110v-1266q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v1266q-64 38 -64 110q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -25 -12.5 -38.5t-39.5 -27.5q-215 -116 -369 -116q-61 0 -123.5 22t-108.5 48 t-115.5 48t-142.5 22q-192 0 -464 -146q-17 -9 -33 -9q-26 0 -45 19t-19 45v742q0 32 31 55q21 14 79 43q236 120 421 120q107 0 200 -29t219 -88q38 -19 88 -19q54 0 117.5 21t110 47t88 47t54.5 21q26 0 45 -19t19 -45z" /> -<glyph unicode="&#xf025;" horiz-adv-x="1664" d="M1664 650q0 -166 -60 -314l-20 -49l-185 -33q-22 -83 -90.5 -136.5t-156.5 -53.5v-32q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-32q71 0 130 -35.5t93 -95.5l68 12q29 95 29 193q0 148 -88 279t-236.5 209t-315.5 78 t-315.5 -78t-236.5 -209t-88 -279q0 -98 29 -193l68 -12q34 60 93 95.5t130 35.5v32q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v32q-88 0 -156.5 53.5t-90.5 136.5l-185 33l-20 49q-60 148 -60 314q0 151 67 291t179 242.5 t266 163.5t320 61t320 -61t266 -163.5t179 -242.5t67 -291z" /> -<glyph unicode="&#xf026;" horiz-adv-x="768" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45z" /> -<glyph unicode="&#xf027;" horiz-adv-x="1152" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142z" /> -<glyph unicode="&#xf028;" horiz-adv-x="1664" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142zM1408 640q0 -153 -85 -282.5t-225 -188.5q-13 -5 -25 -5q-27 0 -46 19t-19 45q0 39 39 59q56 29 76 44q74 54 115.5 135.5t41.5 173.5t-41.5 173.5 t-115.5 135.5q-20 15 -76 44q-39 20 -39 59q0 26 19 45t45 19q13 0 26 -5q140 -59 225 -188.5t85 -282.5zM1664 640q0 -230 -127 -422.5t-338 -283.5q-13 -5 -26 -5q-26 0 -45 19t-19 45q0 36 39 59q7 4 22.5 10.5t22.5 10.5q46 25 82 51q123 91 192 227t69 289t-69 289 t-192 227q-36 26 -82 51q-7 4 -22.5 10.5t-22.5 10.5q-39 23 -39 59q0 26 19 45t45 19q13 0 26 -5q211 -91 338 -283.5t127 -422.5z" /> -<glyph unicode="&#xf029;" horiz-adv-x="1408" d="M384 384v-128h-128v128h128zM384 1152v-128h-128v128h128zM1152 1152v-128h-128v128h128zM128 129h384v383h-384v-383zM128 896h384v384h-384v-384zM896 896h384v384h-384v-384zM640 640v-640h-640v640h640zM1152 128v-128h-128v128h128zM1408 128v-128h-128v128h128z M1408 640v-384h-384v128h-128v-384h-128v640h384v-128h128v128h128zM640 1408v-640h-640v640h640zM1408 1408v-640h-640v640h640z" /> -<glyph unicode="&#xf02a;" horiz-adv-x="1792" d="M63 0h-63v1408h63v-1408zM126 1h-32v1407h32v-1407zM220 1h-31v1407h31v-1407zM377 1h-31v1407h31v-1407zM534 1h-62v1407h62v-1407zM660 1h-31v1407h31v-1407zM723 1h-31v1407h31v-1407zM786 1h-31v1407h31v-1407zM943 1h-63v1407h63v-1407zM1100 1h-63v1407h63v-1407z M1226 1h-63v1407h63v-1407zM1352 1h-63v1407h63v-1407zM1446 1h-63v1407h63v-1407zM1635 1h-94v1407h94v-1407zM1698 1h-32v1407h32v-1407zM1792 0h-63v1408h63v-1408z" /> -<glyph unicode="&#xf02b;" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91z" /> -<glyph unicode="&#xf02c;" horiz-adv-x="1920" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91zM1899 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-36 0 -59 14t-53 45l470 470q37 37 37 90q0 52 -37 91l-715 714q-38 38 -102 64.5t-117 26.5h224q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91z" /> -<glyph unicode="&#xf02d;" horiz-adv-x="1664" d="M1639 1058q40 -57 18 -129l-275 -906q-19 -64 -76.5 -107.5t-122.5 -43.5h-923q-77 0 -148.5 53.5t-99.5 131.5q-24 67 -2 127q0 4 3 27t4 37q1 8 -3 21.5t-3 19.5q2 11 8 21t16.5 23.5t16.5 23.5q23 38 45 91.5t30 91.5q3 10 0.5 30t-0.5 28q3 11 17 28t17 23 q21 36 42 92t25 90q1 9 -2.5 32t0.5 28q4 13 22 30.5t22 22.5q19 26 42.5 84.5t27.5 96.5q1 8 -3 25.5t-2 26.5q2 8 9 18t18 23t17 21q8 12 16.5 30.5t15 35t16 36t19.5 32t26.5 23.5t36 11.5t47.5 -5.5l-1 -3q38 9 51 9h761q74 0 114 -56t18 -130l-274 -906 q-36 -119 -71.5 -153.5t-128.5 -34.5h-869q-27 0 -38 -15q-11 -16 -1 -43q24 -70 144 -70h923q29 0 56 15.5t35 41.5l300 987q7 22 5 57q38 -15 59 -43zM575 1056q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5 t-16.5 -22.5zM492 800q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5z" /> -<glyph unicode="&#xf02e;" horiz-adv-x="1280" d="M1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048z" /> -<glyph unicode="&#xf02f;" horiz-adv-x="1664" d="M384 0h896v256h-896v-256zM384 640h896v384h-160q-40 0 -68 28t-28 68v160h-640v-640zM1536 576q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 576v-416q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-160q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68 v160h-224q-13 0 -22.5 9.5t-9.5 22.5v416q0 79 56.5 135.5t135.5 56.5h64v544q0 40 28 68t68 28h672q40 0 88 -20t76 -48l152 -152q28 -28 48 -76t20 -88v-256h64q79 0 135.5 -56.5t56.5 -135.5z" /> -<glyph unicode="&#xf030;" horiz-adv-x="1920" d="M960 864q119 0 203.5 -84.5t84.5 -203.5t-84.5 -203.5t-203.5 -84.5t-203.5 84.5t-84.5 203.5t84.5 203.5t203.5 84.5zM1664 1280q106 0 181 -75t75 -181v-896q0 -106 -75 -181t-181 -75h-1408q-106 0 -181 75t-75 181v896q0 106 75 181t181 75h224l51 136 q19 49 69.5 84.5t103.5 35.5h512q53 0 103.5 -35.5t69.5 -84.5l51 -136h224zM960 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> -<glyph unicode="&#xf031;" horiz-adv-x="1664" d="M725 977l-170 -450q33 0 136.5 -2t160.5 -2q19 0 57 2q-87 253 -184 452zM0 -128l2 79q23 7 56 12.5t57 10.5t49.5 14.5t44.5 29t31 50.5l237 616l280 724h75h53q8 -14 11 -21l205 -480q33 -78 106 -257.5t114 -274.5q15 -34 58 -144.5t72 -168.5q20 -45 35 -57 q19 -15 88 -29.5t84 -20.5q6 -38 6 -57q0 -4 -0.5 -13t-0.5 -13q-63 0 -190 8t-191 8q-76 0 -215 -7t-178 -8q0 43 4 78l131 28q1 0 12.5 2.5t15.5 3.5t14.5 4.5t15 6.5t11 8t9 11t2.5 14q0 16 -31 96.5t-72 177.5t-42 100l-450 2q-26 -58 -76.5 -195.5t-50.5 -162.5 q0 -22 14 -37.5t43.5 -24.5t48.5 -13.5t57 -8.5t41 -4q1 -19 1 -58q0 -9 -2 -27q-58 0 -174.5 10t-174.5 10q-8 0 -26.5 -4t-21.5 -4q-80 -14 -188 -14z" /> -<glyph unicode="&#xf032;" horiz-adv-x="1408" d="M555 15q74 -32 140 -32q376 0 376 335q0 114 -41 180q-27 44 -61.5 74t-67.5 46.5t-80.5 25t-84 10.5t-94.5 2q-73 0 -101 -10q0 -53 -0.5 -159t-0.5 -158q0 -8 -1 -67.5t-0.5 -96.5t4.5 -83.5t12 -66.5zM541 761q42 -7 109 -7q82 0 143 13t110 44.5t74.5 89.5t25.5 142 q0 70 -29 122.5t-79 82t-108 43.5t-124 14q-50 0 -130 -13q0 -50 4 -151t4 -152q0 -27 -0.5 -80t-0.5 -79q0 -46 1 -69zM0 -128l2 94q15 4 85 16t106 27q7 12 12.5 27t8.5 33.5t5.5 32.5t3 37.5t0.5 34v35.5v30q0 982 -22 1025q-4 8 -22 14.5t-44.5 11t-49.5 7t-48.5 4.5 t-30.5 3l-4 83q98 2 340 11.5t373 9.5q23 0 68.5 -0.5t67.5 -0.5q70 0 136.5 -13t128.5 -42t108 -71t74 -104.5t28 -137.5q0 -52 -16.5 -95.5t-39 -72t-64.5 -57.5t-73 -45t-84 -40q154 -35 256.5 -134t102.5 -248q0 -100 -35 -179.5t-93.5 -130.5t-138 -85.5t-163.5 -48.5 t-176 -14q-44 0 -132 3t-132 3q-106 0 -307 -11t-231 -12z" /> -<glyph unicode="&#xf033;" horiz-adv-x="1024" d="M0 -126l17 85q6 2 81.5 21.5t111.5 37.5q28 35 41 101q1 7 62 289t114 543.5t52 296.5v25q-24 13 -54.5 18.5t-69.5 8t-58 5.5l19 103q33 -2 120 -6.5t149.5 -7t120.5 -2.5q48 0 98.5 2.5t121 7t98.5 6.5q-5 -39 -19 -89q-30 -10 -101.5 -28.5t-108.5 -33.5 q-8 -19 -14 -42.5t-9 -40t-7.5 -45.5t-6.5 -42q-27 -148 -87.5 -419.5t-77.5 -355.5q-2 -9 -13 -58t-20 -90t-16 -83.5t-6 -57.5l1 -18q17 -4 185 -31q-3 -44 -16 -99q-11 0 -32.5 -1.5t-32.5 -1.5q-29 0 -87 10t-86 10q-138 2 -206 2q-51 0 -143 -9t-121 -11z" /> -<glyph unicode="&#xf034;" horiz-adv-x="1792" d="M1744 128q33 0 42 -18.5t-11 -44.5l-126 -162q-20 -26 -49 -26t-49 26l-126 162q-20 26 -11 44.5t42 18.5h80v1024h-80q-33 0 -42 18.5t11 44.5l126 162q20 26 49 26t49 -26l126 -162q20 -26 11 -44.5t-42 -18.5h-80v-1024h80zM81 1407l54 -27q12 -5 211 -5q44 0 132 2 t132 2q36 0 107.5 -0.5t107.5 -0.5h293q6 0 21 -0.5t20.5 0t16 3t17.5 9t15 17.5l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 48t-14.5 73.5t-7.5 35.5q-6 8 -12 12.5t-15.5 6t-13 2.5t-18 0.5t-16.5 -0.5 q-17 0 -66.5 0.5t-74.5 0.5t-64 -2t-71 -6q-9 -81 -8 -136q0 -94 2 -388t2 -455q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27 q19 42 19 383q0 101 -3 303t-3 303v117q0 2 0.5 15.5t0.5 25t-1 25.5t-3 24t-5 14q-11 12 -162 12q-33 0 -93 -12t-80 -26q-19 -13 -34 -72.5t-31.5 -111t-42.5 -53.5q-42 26 -56 44v383z" /> -<glyph unicode="&#xf035;" d="M81 1407l54 -27q12 -5 211 -5q44 0 132 2t132 2q70 0 246.5 1t304.5 0.5t247 -4.5q33 -1 56 31l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 47.5t-15 73.5t-7 36q-10 13 -27 19q-5 2 -66 2q-30 0 -93 1t-103 1 t-94 -2t-96 -7q-9 -81 -8 -136l1 -152v52q0 -55 1 -154t1.5 -180t0.5 -153q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27 q7 16 11.5 74t6 145.5t1.5 155t-0.5 153.5t-0.5 89q0 7 -2.5 21.5t-2.5 22.5q0 7 0.5 44t1 73t0 76.5t-3 67.5t-6.5 32q-11 12 -162 12q-41 0 -163 -13.5t-138 -24.5q-19 -12 -34 -71.5t-31.5 -111.5t-42.5 -54q-42 26 -56 44v383zM1310 125q12 0 42 -19.5t57.5 -41.5 t59.5 -49t36 -30q26 -21 26 -49t-26 -49q-4 -3 -36 -30t-59.5 -49t-57.5 -41.5t-42 -19.5q-13 0 -20.5 10.5t-10 28.5t-2.5 33.5t1.5 33t1.5 19.5h-1024q0 -2 1.5 -19.5t1.5 -33t-2.5 -33.5t-10 -28.5t-20.5 -10.5q-12 0 -42 19.5t-57.5 41.5t-59.5 49t-36 30q-26 21 -26 49 t26 49q4 3 36 30t59.5 49t57.5 41.5t42 19.5q13 0 20.5 -10.5t10 -28.5t2.5 -33.5t-1.5 -33t-1.5 -19.5h1024q0 2 -1.5 19.5t-1.5 33t2.5 33.5t10 28.5t20.5 10.5z" /> -<glyph unicode="&#xf036;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" /> -<glyph unicode="&#xf037;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h896q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45t-45 -19 h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h640q26 0 45 -19t19 -45z" /> -<glyph unicode="&#xf038;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" /> -<glyph unicode="&#xf039;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" /> -<glyph unicode="&#xf03a;" horiz-adv-x="1792" d="M256 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM256 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5 t9.5 -22.5zM256 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344 q13 0 22.5 -9.5t9.5 -22.5zM256 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192 q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5z" /> -<glyph unicode="&#xf03b;" horiz-adv-x="1792" d="M384 992v-576q0 -13 -9.5 -22.5t-22.5 -9.5q-14 0 -23 9l-288 288q-9 9 -9 23t9 23l288 288q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" /> -<glyph unicode="&#xf03c;" horiz-adv-x="1792" d="M352 704q0 -14 -9 -23l-288 -288q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v576q0 13 9.5 22.5t22.5 9.5q14 0 23 -9l288 -288q9 -9 9 -23zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" /> -<glyph unicode="&#xf03d;" horiz-adv-x="1792" d="M1792 1184v-1088q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-403 403v-166q0 -119 -84.5 -203.5t-203.5 -84.5h-704q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h704q119 0 203.5 -84.5t84.5 -203.5v-165l403 402q18 19 45 19q12 0 25 -5 q39 -17 39 -59z" /> -<glyph unicode="&#xf03e;" horiz-adv-x="1920" d="M640 960q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 576v-448h-1408v192l320 320l160 -160l512 512zM1760 1280h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216 q0 13 -9.5 22.5t-22.5 9.5zM1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" /> -<glyph unicode="&#xf040;" d="M363 0l91 91l-235 235l-91 -91v-107h128v-128h107zM886 928q0 22 -22 22q-10 0 -17 -7l-542 -542q-7 -7 -7 -17q0 -22 22 -22q10 0 17 7l542 542q7 7 7 17zM832 1120l416 -416l-832 -832h-416v416zM1515 1024q0 -53 -37 -90l-166 -166l-416 416l166 165q36 38 90 38 q53 0 91 -38l235 -234q37 -39 37 -91z" /> -<glyph unicode="&#xf041;" horiz-adv-x="1024" d="M768 896q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1024 896q0 -109 -33 -179l-364 -774q-16 -33 -47.5 -52t-67.5 -19t-67.5 19t-46.5 52l-365 774q-33 70 -33 179q0 212 150 362t362 150t362 -150t150 -362z" /> -<glyph unicode="&#xf042;" d="M768 96v1088q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf043;" horiz-adv-x="1024" d="M512 384q0 36 -20 69q-1 1 -15.5 22.5t-25.5 38t-25 44t-21 50.5q-4 16 -21 16t-21 -16q-7 -23 -21 -50.5t-25 -44t-25.5 -38t-15.5 -22.5q-20 -33 -20 -69q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 512q0 -212 -150 -362t-362 -150t-362 150t-150 362 q0 145 81 275q6 9 62.5 90.5t101 151t99.5 178t83 201.5q9 30 34 47t51 17t51.5 -17t33.5 -47q28 -93 83 -201.5t99.5 -178t101 -151t62.5 -90.5q81 -127 81 -275z" /> -<glyph unicode="&#xf044;" horiz-adv-x="1792" d="M888 352l116 116l-152 152l-116 -116v-56h96v-96h56zM1328 1072q-16 16 -33 -1l-350 -350q-17 -17 -1 -33t33 1l350 350q17 17 1 33zM1408 478v-190q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-14 -14 -32 -8q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v126q0 13 9 22l64 64q15 15 35 7t20 -29zM1312 1216l288 -288l-672 -672h-288v288zM1756 1084l-92 -92 l-288 288l92 92q28 28 68 28t68 -28l152 -152q28 -28 28 -68t-28 -68z" /> -<glyph unicode="&#xf045;" horiz-adv-x="1664" d="M1408 547v-259q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h255v0q13 0 22.5 -9.5t9.5 -22.5q0 -27 -26 -32q-77 -26 -133 -60q-10 -4 -16 -4h-112q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832 q66 0 113 47t47 113v214q0 19 18 29q28 13 54 37q16 16 35 8q21 -9 21 -29zM1645 1043l-384 -384q-18 -19 -45 -19q-12 0 -25 5q-39 17 -39 59v192h-160q-323 0 -438 -131q-119 -137 -74 -473q3 -23 -20 -34q-8 -2 -12 -2q-16 0 -26 13q-10 14 -21 31t-39.5 68.5t-49.5 99.5 t-38.5 114t-17.5 122q0 49 3.5 91t14 90t28 88t47 81.5t68.5 74t94.5 61.5t124.5 48.5t159.5 30.5t196.5 11h160v192q0 42 39 59q13 5 25 5q26 0 45 -19l384 -384q19 -19 19 -45t-19 -45z" /> -<glyph unicode="&#xf046;" horiz-adv-x="1664" d="M1408 606v-318q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-10 -10 -23 -10q-3 0 -9 2q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832 q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v254q0 13 9 22l64 64q10 10 23 10q6 0 12 -3q20 -8 20 -29zM1639 1095l-814 -814q-24 -24 -57 -24t-57 24l-430 430q-24 24 -24 57t24 57l110 110q24 24 57 24t57 -24l263 -263l647 647q24 24 57 24t57 -24l110 -110 q24 -24 24 -57t-24 -57z" /> -<glyph unicode="&#xf047;" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-384v-384h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v384h-384v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45 t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h384v384h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-384h384v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" /> -<glyph unicode="&#xf048;" horiz-adv-x="1024" d="M979 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19z" /> -<glyph unicode="&#xf049;" horiz-adv-x="1792" d="M1747 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19l710 710 q19 19 32 13t13 -32v-710q4 11 13 19z" /> -<glyph unicode="&#xf04a;" horiz-adv-x="1664" d="M1619 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-8 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-19 19 -19 45t19 45l710 710q19 19 32 13t13 -32v-710q5 11 13 19z" /> -<glyph unicode="&#xf04b;" horiz-adv-x="1408" d="M1384 609l-1328 -738q-23 -13 -39.5 -3t-16.5 36v1472q0 26 16.5 36t39.5 -3l1328 -738q23 -13 23 -31t-23 -31z" /> -<glyph unicode="&#xf04c;" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45zM640 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45z" /> -<glyph unicode="&#xf04d;" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" /> -<glyph unicode="&#xf04e;" horiz-adv-x="1664" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q19 -19 19 -45t-19 -45l-710 -710q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" /> -<glyph unicode="&#xf050;" horiz-adv-x="1792" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19l-710 -710 q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" /> -<glyph unicode="&#xf051;" horiz-adv-x="1024" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19z" /> -<glyph unicode="&#xf052;" horiz-adv-x="1538" d="M14 557l710 710q19 19 45 19t45 -19l710 -710q19 -19 13 -32t-32 -13h-1472q-26 0 -32 13t13 32zM1473 0h-1408q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19z" /> -<glyph unicode="&#xf053;" horiz-adv-x="1280" d="M1171 1235l-531 -531l531 -531q19 -19 19 -45t-19 -45l-166 -166q-19 -19 -45 -19t-45 19l-742 742q-19 19 -19 45t19 45l742 742q19 19 45 19t45 -19l166 -166q19 -19 19 -45t-19 -45z" /> -<glyph unicode="&#xf054;" horiz-adv-x="1280" d="M1107 659l-742 -742q-19 -19 -45 -19t-45 19l-166 166q-19 19 -19 45t19 45l531 531l-531 531q-19 19 -19 45t19 45l166 166q19 19 45 19t45 -19l742 -742q19 -19 19 -45t-19 -45z" /> -<glyph unicode="&#xf055;" d="M1216 576v128q0 26 -19 45t-45 19h-256v256q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-256h-256q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h256v-256q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v256h256q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5 t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf056;" d="M1216 576v128q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 t103 -385.5z" /> -<glyph unicode="&#xf057;" d="M1149 414q0 26 -19 45l-181 181l181 181q19 19 19 45q0 27 -19 46l-90 90q-19 19 -46 19q-26 0 -45 -19l-181 -181l-181 181q-19 19 -45 19q-27 0 -46 -19l-90 -90q-19 -19 -19 -46q0 -26 19 -45l181 -181l-181 -181q-19 -19 -19 -45q0 -27 19 -46l90 -90q19 -19 46 -19 q26 0 45 19l181 181l181 -181q19 -19 45 -19q27 0 46 19l90 90q19 19 19 46zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf058;" d="M1284 802q0 28 -18 46l-91 90q-19 19 -45 19t-45 -19l-408 -407l-226 226q-19 19 -45 19t-45 -19l-91 -90q-18 -18 -18 -46q0 -27 18 -45l362 -362q19 -19 45 -19q27 0 46 19l543 543q18 18 18 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf059;" d="M896 160v192q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h192q14 0 23 9t9 23zM1152 832q0 88 -55.5 163t-138.5 116t-170 41q-243 0 -371 -213q-15 -24 8 -42l132 -100q7 -6 19 -6q16 0 25 12q53 68 86 92q34 24 86 24q48 0 85.5 -26t37.5 -59 q0 -38 -20 -61t-68 -45q-63 -28 -115.5 -86.5t-52.5 -125.5v-36q0 -14 9 -23t23 -9h192q14 0 23 9t9 23q0 19 21.5 49.5t54.5 49.5q32 18 49 28.5t46 35t44.5 48t28 60.5t12.5 81zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf05a;" d="M1024 160v160q0 14 -9 23t-23 9h-96v512q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h96v-320h-96q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h448q14 0 23 9t9 23zM896 1056v160q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23 t23 -9h192q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf05b;" d="M1197 512h-109q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h109q-32 108 -112.5 188.5t-188.5 112.5v-109q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v109q-108 -32 -188.5 -112.5t-112.5 -188.5h109q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-109 q32 -108 112.5 -188.5t188.5 -112.5v109q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-109q108 32 188.5 112.5t112.5 188.5zM1536 704v-128q0 -26 -19 -45t-45 -19h-143q-37 -161 -154.5 -278.5t-278.5 -154.5v-143q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v143 q-161 37 -278.5 154.5t-154.5 278.5h-143q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h143q37 161 154.5 278.5t278.5 154.5v143q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-143q161 -37 278.5 -154.5t154.5 -278.5h143q26 0 45 -19t19 -45z" /> -<glyph unicode="&#xf05c;" d="M1097 457l-146 -146q-10 -10 -23 -10t-23 10l-137 137l-137 -137q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23t10 23l137 137l-137 137q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l137 -137l137 137q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23 l-137 -137l137 -137q10 -10 10 -23t-10 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5 t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf05d;" d="M1171 723l-422 -422q-19 -19 -45 -19t-45 19l-294 294q-19 19 -19 45t19 45l102 102q19 19 45 19t45 -19l147 -147l275 275q19 19 45 19t45 -19l102 -102q19 -19 19 -45t-19 -45zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198 t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf05e;" d="M1312 643q0 161 -87 295l-754 -753q137 -89 297 -89q111 0 211.5 43.5t173.5 116.5t116 174.5t43 212.5zM313 344l755 754q-135 91 -300 91q-148 0 -273 -73t-198 -199t-73 -274q0 -162 89 -299zM1536 643q0 -157 -61 -300t-163.5 -246t-245 -164t-298.5 -61t-298.5 61 t-245 164t-163.5 246t-61 300t61 299.5t163.5 245.5t245 164t298.5 61t298.5 -61t245 -164t163.5 -245.5t61 -299.5z" /> -<glyph unicode="&#xf060;" d="M1536 640v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -90 -37q-52 0 -91 37l-651 652q-37 37 -37 90q0 52 37 91l651 650q38 38 91 38q52 0 90 -38l75 -74q38 -38 38 -91t-38 -91l-293 -293h704q52 0 84.5 -37.5 t32.5 -90.5z" /> -<glyph unicode="&#xf061;" d="M1472 576q0 -54 -37 -91l-651 -651q-39 -37 -91 -37q-51 0 -90 37l-75 75q-38 38 -38 91t38 91l293 293h-704q-52 0 -84.5 37.5t-32.5 90.5v128q0 53 32.5 90.5t84.5 37.5h704l-293 294q-38 36 -38 90t38 90l75 75q38 38 90 38q53 0 91 -38l651 -651q37 -35 37 -90z" /> -<glyph unicode="&#xf062;" horiz-adv-x="1664" d="M1611 565q0 -51 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-294 293v-704q0 -52 -37.5 -84.5t-90.5 -32.5h-128q-53 0 -90.5 32.5t-37.5 84.5v704l-294 -293q-36 -38 -90 -38t-90 38l-75 75q-38 38 -38 90q0 53 38 91l651 651q35 37 90 37q54 0 91 -37l651 -651 q37 -39 37 -91z" /> -<glyph unicode="&#xf063;" horiz-adv-x="1664" d="M1611 704q0 -53 -37 -90l-651 -652q-39 -37 -91 -37q-53 0 -90 37l-651 652q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l294 -294v704q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-704l294 294q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" /> -<glyph unicode="&#xf064;" horiz-adv-x="1792" d="M1792 896q0 -26 -19 -45l-512 -512q-19 -19 -45 -19t-45 19t-19 45v256h-224q-98 0 -175.5 -6t-154 -21.5t-133 -42.5t-105.5 -69.5t-80 -101t-48.5 -138.5t-17.5 -181q0 -55 5 -123q0 -6 2.5 -23.5t2.5 -26.5q0 -15 -8.5 -25t-23.5 -10q-16 0 -28 17q-7 9 -13 22 t-13.5 30t-10.5 24q-127 285 -127 451q0 199 53 333q162 403 875 403h224v256q0 26 19 45t45 19t45 -19l512 -512q19 -19 19 -45z" /> -<glyph unicode="&#xf065;" d="M755 480q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23zM1536 1344v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332 q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45z" /> -<glyph unicode="&#xf066;" d="M768 576v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45zM1523 1248q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45 t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23z" /> -<glyph unicode="&#xf067;" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-416v-416q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v416h-416q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h416v416q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-416h416q40 0 68 -28t28 -68z" /> -<glyph unicode="&#xf068;" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-1216q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h1216q40 0 68 -28t28 -68z" /> -<glyph unicode="&#xf069;" horiz-adv-x="1664" d="M1482 486q46 -26 59.5 -77.5t-12.5 -97.5l-64 -110q-26 -46 -77.5 -59.5t-97.5 12.5l-266 153v-307q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v307l-266 -153q-46 -26 -97.5 -12.5t-77.5 59.5l-64 110q-26 46 -12.5 97.5t59.5 77.5l266 154l-266 154 q-46 26 -59.5 77.5t12.5 97.5l64 110q26 46 77.5 59.5t97.5 -12.5l266 -153v307q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-307l266 153q46 26 97.5 12.5t77.5 -59.5l64 -110q26 -46 12.5 -97.5t-59.5 -77.5l-266 -154z" /> -<glyph unicode="&#xf06a;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM896 161v190q0 14 -9 23.5t-22 9.5h-192q-13 0 -23 -10t-10 -23v-190q0 -13 10 -23t23 -10h192 q13 0 22 9.5t9 23.5zM894 505l18 621q0 12 -10 18q-10 8 -24 8h-220q-14 0 -24 -8q-10 -6 -10 -18l17 -621q0 -10 10 -17.5t24 -7.5h185q14 0 23.5 7.5t10.5 17.5z" /> -<glyph unicode="&#xf06b;" d="M928 180v56v468v192h-320v-192v-468v-56q0 -25 18 -38.5t46 -13.5h192q28 0 46 13.5t18 38.5zM472 1024h195l-126 161q-26 31 -69 31q-40 0 -68 -28t-28 -68t28 -68t68 -28zM1160 1120q0 40 -28 68t-68 28q-43 0 -69 -31l-125 -161h194q40 0 68 28t28 68zM1536 864v-320 q0 -14 -9 -23t-23 -9h-96v-416q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v416h-96q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h440q-93 0 -158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5q107 0 168 -77l128 -165l128 165q61 77 168 77q93 0 158.5 -65.5t65.5 -158.5 t-65.5 -158.5t-158.5 -65.5h440q14 0 23 -9t9 -23z" /> -<glyph unicode="&#xf06c;" horiz-adv-x="1792" d="M1280 832q0 26 -19 45t-45 19q-172 0 -318 -49.5t-259.5 -134t-235.5 -219.5q-19 -21 -19 -45q0 -26 19 -45t45 -19q24 0 45 19q27 24 74 71t67 66q137 124 268.5 176t313.5 52q26 0 45 19t19 45zM1792 1030q0 -95 -20 -193q-46 -224 -184.5 -383t-357.5 -268 q-214 -108 -438 -108q-148 0 -286 47q-15 5 -88 42t-96 37q-16 0 -39.5 -32t-45 -70t-52.5 -70t-60 -32q-30 0 -51 11t-31 24t-27 42q-2 4 -6 11t-5.5 10t-3 9.5t-1.5 13.5q0 35 31 73.5t68 65.5t68 56t31 48q0 4 -14 38t-16 44q-9 51 -9 104q0 115 43.5 220t119 184.5 t170.5 139t204 95.5q55 18 145 25.5t179.5 9t178.5 6t163.5 24t113.5 56.5l29.5 29.5t29.5 28t27 20t36.5 16t43.5 4.5q39 0 70.5 -46t47.5 -112t24 -124t8 -96z" /> -<glyph unicode="&#xf06d;" horiz-adv-x="1408" d="M1408 -160v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1152 896q0 -78 -24.5 -144t-64 -112.5t-87.5 -88t-96 -77.5t-87.5 -72t-64 -81.5t-24.5 -96.5q0 -96 67 -224l-4 1l1 -1 q-90 41 -160 83t-138.5 100t-113.5 122.5t-72.5 150.5t-27.5 184q0 78 24.5 144t64 112.5t87.5 88t96 77.5t87.5 72t64 81.5t24.5 96.5q0 94 -66 224l3 -1l-1 1q90 -41 160 -83t138.5 -100t113.5 -122.5t72.5 -150.5t27.5 -184z" /> -<glyph unicode="&#xf06e;" horiz-adv-x="1792" d="M1664 576q-152 236 -381 353q61 -104 61 -225q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 121 61 225q-229 -117 -381 -353q133 -205 333.5 -326.5t434.5 -121.5t434.5 121.5t333.5 326.5zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5 t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1792 576q0 -34 -20 -69q-140 -230 -376.5 -368.5t-499.5 -138.5t-499.5 139t-376.5 368q-20 35 -20 69t20 69q140 229 376.5 368t499.5 139t499.5 -139t376.5 -368q20 -35 20 -69z" /> -<glyph unicode="&#xf070;" horiz-adv-x="1792" d="M555 201l78 141q-87 63 -136 159t-49 203q0 121 61 225q-229 -117 -381 -353q167 -258 427 -375zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1307 1151q0 -7 -1 -9 q-105 -188 -315 -566t-316 -567l-49 -89q-10 -16 -28 -16q-12 0 -134 70q-16 10 -16 28q0 12 44 87q-143 65 -263.5 173t-208.5 245q-20 31 -20 69t20 69q153 235 380 371t496 136q89 0 180 -17l54 97q10 16 28 16q5 0 18 -6t31 -15.5t33 -18.5t31.5 -18.5t19.5 -11.5 q16 -10 16 -27zM1344 704q0 -139 -79 -253.5t-209 -164.5l280 502q8 -45 8 -84zM1792 576q0 -35 -20 -69q-39 -64 -109 -145q-150 -172 -347.5 -267t-419.5 -95l74 132q212 18 392.5 137t301.5 307q-115 179 -282 294l63 112q95 -64 182.5 -153t144.5 -184q20 -34 20 -69z " /> -<glyph unicode="&#xf071;" horiz-adv-x="1792" d="M1024 161v190q0 14 -9.5 23.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -23.5v-190q0 -14 9.5 -23.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 23.5zM1022 535l18 459q0 12 -10 19q-13 11 -24 11h-220q-11 0 -24 -11q-10 -7 -10 -21l17 -457q0 -10 10 -16.5t24 -6.5h185 q14 0 23.5 6.5t10.5 16.5zM1008 1469l768 -1408q35 -63 -2 -126q-17 -29 -46.5 -46t-63.5 -17h-1536q-34 0 -63.5 17t-46.5 46q-37 63 -2 126l768 1408q17 31 47 49t65 18t65 -18t47 -49z" /> -<glyph unicode="&#xf072;" horiz-adv-x="1408" d="M1376 1376q44 -52 12 -148t-108 -172l-161 -161l160 -696q5 -19 -12 -33l-128 -96q-7 -6 -19 -6q-4 0 -7 1q-15 3 -21 16l-279 508l-259 -259l53 -194q5 -17 -8 -31l-96 -96q-9 -9 -23 -9h-2q-15 2 -24 13l-189 252l-252 189q-11 7 -13 23q-1 13 9 25l96 97q9 9 23 9 q6 0 8 -1l194 -53l259 259l-508 279q-14 8 -17 24q-2 16 9 27l128 128q14 13 30 8l665 -159l160 160q76 76 172 108t148 -12z" /> -<glyph unicode="&#xf073;" horiz-adv-x="1664" d="M128 -128h288v288h-288v-288zM480 -128h320v288h-320v-288zM128 224h288v320h-288v-320zM480 224h320v320h-320v-320zM128 608h288v288h-288v-288zM864 -128h320v288h-320v-288zM480 608h320v288h-320v-288zM1248 -128h288v288h-288v-288zM864 224h320v320h-320v-320z M512 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1248 224h288v320h-288v-320zM864 608h320v288h-320v-288zM1248 608h288v288h-288v-288zM1280 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64 q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47 h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" /> -<glyph unicode="&#xf074;" horiz-adv-x="1792" d="M666 1055q-60 -92 -137 -273q-22 45 -37 72.5t-40.5 63.5t-51 56.5t-63 35t-81.5 14.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q250 0 410 -225zM1792 256q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192q-32 0 -85 -0.5t-81 -1t-73 1 t-71 5t-64 10.5t-63 18.5t-58 28.5t-59 40t-55 53.5t-56 69.5q59 93 136 273q22 -45 37 -72.5t40.5 -63.5t51 -56.5t63 -35t81.5 -14.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1792 1152q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5 v192h-256q-48 0 -87 -15t-69 -45t-51 -61.5t-45 -77.5q-32 -62 -78 -171q-29 -66 -49.5 -111t-54 -105t-64 -100t-74 -83t-90 -68.5t-106.5 -42t-128 -16.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q48 0 87 15t69 45t51 61.5t45 77.5q32 62 78 171q29 66 49.5 111 t54 105t64 100t74 83t90 68.5t106.5 42t128 16.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" /> -<glyph unicode="&#xf075;" horiz-adv-x="1792" d="M1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22q-17 -2 -30.5 9t-17.5 29v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281 q0 130 71 248.5t191 204.5t286 136.5t348 50.5q244 0 450 -85.5t326 -233t120 -321.5z" /> -<glyph unicode="&#xf076;" d="M1536 704v-128q0 -201 -98.5 -362t-274 -251.5t-395.5 -90.5t-395.5 90.5t-274 251.5t-98.5 362v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -52 23.5 -90t53.5 -57t71 -30t64 -13t44 -2t44 2t64 13t71 30t53.5 57t23.5 90v128q0 26 19 45t45 19h384 q26 0 45 -19t19 -45zM512 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45zM1536 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45z" /> -<glyph unicode="&#xf077;" horiz-adv-x="1792" d="M1683 205l-166 -165q-19 -19 -45 -19t-45 19l-531 531l-531 -531q-19 -19 -45 -19t-45 19l-166 165q-19 19 -19 45.5t19 45.5l742 741q19 19 45 19t45 -19l742 -741q19 -19 19 -45.5t-19 -45.5z" /> -<glyph unicode="&#xf078;" horiz-adv-x="1792" d="M1683 728l-742 -741q-19 -19 -45 -19t-45 19l-742 741q-19 19 -19 45.5t19 45.5l166 165q19 19 45 19t45 -19l531 -531l531 531q19 19 45 19t45 -19l166 -165q19 -19 19 -45.5t-19 -45.5z" /> -<glyph unicode="&#xf079;" horiz-adv-x="1920" d="M1280 32q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-8 0 -13.5 2t-9 7t-5.5 8t-3 11.5t-1 11.5v13v11v160v416h-192q-26 0 -45 19t-19 45q0 24 15 41l320 384q19 22 49 22t49 -22l320 -384q15 -17 15 -41q0 -26 -19 -45t-45 -19h-192v-384h576q16 0 25 -11l160 -192q7 -11 7 -21 zM1920 448q0 -24 -15 -41l-320 -384q-20 -23 -49 -23t-49 23l-320 384q-15 17 -15 41q0 26 19 45t45 19h192v384h-576q-16 0 -25 12l-160 192q-7 9 -7 20q0 13 9.5 22.5t22.5 9.5h960q8 0 13.5 -2t9 -7t5.5 -8t3 -11.5t1 -11.5v-13v-11v-160v-416h192q26 0 45 -19t19 -45z " /> -<glyph unicode="&#xf07a;" horiz-adv-x="1664" d="M640 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1536 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1664 1088v-512q0 -24 -16.5 -42.5t-40.5 -21.5l-1044 -122q13 -60 13 -70q0 -16 -24 -64h920q26 0 45 -19t19 -45 t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 11 8 31.5t16 36t21.5 40t15.5 29.5l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t19.5 -15.5t13 -24.5t8 -26t5.5 -29.5t4.5 -26h1201q26 0 45 -19t19 -45z" /> -<glyph unicode="&#xf07b;" horiz-adv-x="1664" d="M1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" /> -<glyph unicode="&#xf07c;" horiz-adv-x="1920" d="M1879 584q0 -31 -31 -66l-336 -396q-43 -51 -120.5 -86.5t-143.5 -35.5h-1088q-34 0 -60.5 13t-26.5 43q0 31 31 66l336 396q43 51 120.5 86.5t143.5 35.5h1088q34 0 60.5 -13t26.5 -43zM1536 928v-160h-832q-94 0 -197 -47.5t-164 -119.5l-337 -396l-5 -6q0 4 -0.5 12.5 t-0.5 12.5v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158z" /> -<glyph unicode="&#xf07d;" horiz-adv-x="768" d="M704 1216q0 -26 -19 -45t-45 -19h-128v-1024h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v1024h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45z" /> -<glyph unicode="&#xf07e;" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-1024v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h1024v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" /> -<glyph unicode="&#xf080;" horiz-adv-x="2048" d="M640 640v-512h-256v512h256zM1024 1152v-1024h-256v1024h256zM2048 0v-128h-2048v1536h128v-1408h1920zM1408 896v-768h-256v768h256zM1792 1280v-1152h-256v1152h256z" /> -<glyph unicode="&#xf081;" d="M1280 926q-56 -25 -121 -34q68 40 93 117q-65 -38 -134 -51q-61 66 -153 66q-87 0 -148.5 -61.5t-61.5 -148.5q0 -29 5 -48q-129 7 -242 65t-192 155q-29 -50 -29 -106q0 -114 91 -175q-47 1 -100 26v-2q0 -75 50 -133.5t123 -72.5q-29 -8 -51 -8q-13 0 -39 4 q21 -63 74.5 -104t121.5 -42q-116 -90 -261 -90q-26 0 -50 3q148 -94 322 -94q112 0 210 35.5t168 95t120.5 137t75 162t24.5 168.5q0 18 -1 27q63 45 105 109zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5 t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="&#xf082;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-188v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-532q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960z" /> -<glyph unicode="&#xf083;" horiz-adv-x="1792" d="M928 704q0 14 -9 23t-23 9q-66 0 -113 -47t-47 -113q0 -14 9 -23t23 -9t23 9t9 23q0 40 28 68t68 28q14 0 23 9t9 23zM1152 574q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM128 0h1536v128h-1536v-128zM1280 574q0 159 -112.5 271.5 t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM256 1216h384v128h-384v-128zM128 1024h1536v118v138h-828l-64 -128h-644v-128zM1792 1280v-1280q0 -53 -37.5 -90.5t-90.5 -37.5h-1536q-53 0 -90.5 37.5t-37.5 90.5v1280 q0 53 37.5 90.5t90.5 37.5h1536q53 0 90.5 -37.5t37.5 -90.5z" /> -<glyph unicode="&#xf084;" horiz-adv-x="1792" d="M832 1024q0 80 -56 136t-136 56t-136 -56t-56 -136q0 -42 19 -83q-41 19 -83 19q-80 0 -136 -56t-56 -136t56 -136t136 -56t136 56t56 136q0 42 -19 83q41 -19 83 -19q80 0 136 56t56 136zM1683 320q0 -17 -49 -66t-66 -49q-9 0 -28.5 16t-36.5 33t-38.5 40t-24.5 26 l-96 -96l220 -220q28 -28 28 -68q0 -42 -39 -81t-81 -39q-40 0 -68 28l-671 671q-176 -131 -365 -131q-163 0 -265.5 102.5t-102.5 265.5q0 160 95 313t248 248t313 95q163 0 265.5 -102.5t102.5 -265.5q0 -189 -131 -365l355 -355l96 96q-3 3 -26 24.5t-40 38.5t-33 36.5 t-16 28.5q0 17 49 66t66 49q13 0 23 -10q6 -6 46 -44.5t82 -79.5t86.5 -86t73 -78t28.5 -41z" /> -<glyph unicode="&#xf085;" horiz-adv-x="1920" d="M896 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1664 128q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1152q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1280 731v-185q0 -10 -7 -19.5t-16 -10.5l-155 -24q-11 -35 -32 -76q34 -48 90 -115q7 -10 7 -20q0 -12 -7 -19q-23 -30 -82.5 -89.5t-78.5 -59.5q-11 0 -21 7l-115 90q-37 -19 -77 -31q-11 -108 -23 -155q-7 -24 -30 -24h-186q-11 0 -20 7.5t-10 17.5 l-23 153q-34 10 -75 31l-118 -89q-7 -7 -20 -7q-11 0 -21 8q-144 133 -144 160q0 9 7 19q10 14 41 53t47 61q-23 44 -35 82l-152 24q-10 1 -17 9.5t-7 19.5v185q0 10 7 19.5t16 10.5l155 24q11 35 32 76q-34 48 -90 115q-7 11 -7 20q0 12 7 20q22 30 82 89t79 59q11 0 21 -7 l115 -90q34 18 77 32q11 108 23 154q7 24 30 24h186q11 0 20 -7.5t10 -17.5l23 -153q34 -10 75 -31l118 89q8 7 20 7q11 0 21 -8q144 -133 144 -160q0 -9 -7 -19q-12 -16 -42 -54t-45 -60q23 -48 34 -82l152 -23q10 -2 17 -10.5t7 -19.5zM1920 198v-140q0 -16 -149 -31 q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20 t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31zM1920 1222v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68 q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70 q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31z" /> -<glyph unicode="&#xf086;" horiz-adv-x="1792" d="M1408 768q0 -139 -94 -257t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224 q0 139 94 257t256.5 186.5t353.5 68.5t353.5 -68.5t256.5 -186.5t94 -257zM1792 512q0 -120 -71 -224.5t-195 -176.5q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7 q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230z" /> -<glyph unicode="&#xf087;" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 768q0 51 -39 89.5t-89 38.5h-352q0 58 48 159.5t48 160.5q0 98 -32 145t-128 47q-26 -26 -38 -85t-30.5 -125.5t-59.5 -109.5q-22 -23 -77 -91q-4 -5 -23 -30t-31.5 -41t-34.5 -42.5 t-40 -44t-38.5 -35.5t-40 -27t-35.5 -9h-32v-640h32q13 0 31.5 -3t33 -6.5t38 -11t35 -11.5t35.5 -12.5t29 -10.5q211 -73 342 -73h121q192 0 192 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5q32 1 53.5 47t21.5 81zM1536 769 q0 -89 -49 -163q9 -33 9 -69q0 -77 -38 -144q3 -21 3 -43q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5h-36h-93q-96 0 -189.5 22.5t-216.5 65.5q-116 40 -138 40h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h274q36 24 137 155q58 75 107 128 q24 25 35.5 85.5t30.5 126.5t62 108q39 37 90 37q84 0 151 -32.5t102 -101.5t35 -186q0 -93 -48 -192h176q104 0 180 -76t76 -179z" /> -<glyph unicode="&#xf088;" d="M256 1088q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 512q0 35 -21.5 81t-53.5 47q15 17 25 47.5t10 55.5q0 69 -53 119q18 32 18 69t-17.5 73.5t-47.5 52.5q5 30 5 56q0 85 -49 126t-136 41h-128q-131 0 -342 -73q-5 -2 -29 -10.5 t-35.5 -12.5t-35 -11.5t-38 -11t-33 -6.5t-31.5 -3h-32v-640h32q16 0 35.5 -9t40 -27t38.5 -35.5t40 -44t34.5 -42.5t31.5 -41t23 -30q55 -68 77 -91q41 -43 59.5 -109.5t30.5 -125.5t38 -85q96 0 128 47t32 145q0 59 -48 160.5t-48 159.5h352q50 0 89 38.5t39 89.5z M1536 511q0 -103 -76 -179t-180 -76h-176q48 -99 48 -192q0 -118 -35 -186q-35 -69 -102 -101.5t-151 -32.5q-51 0 -90 37q-34 33 -54 82t-25.5 90.5t-17.5 84.5t-31 64q-48 50 -107 127q-101 131 -137 155h-274q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5 h288q22 0 138 40q128 44 223 66t200 22h112q140 0 226.5 -79t85.5 -216v-5q60 -77 60 -178q0 -22 -3 -43q38 -67 38 -144q0 -36 -9 -69q49 -74 49 -163z" /> -<glyph unicode="&#xf089;" horiz-adv-x="896" d="M832 1504v-1339l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41z" /> -<glyph unicode="&#xf08a;" horiz-adv-x="1792" d="M1664 940q0 81 -21.5 143t-55 98.5t-81.5 59.5t-94 31t-98 8t-112 -25.5t-110.5 -64t-86.5 -72t-60 -61.5q-18 -22 -49 -22t-49 22q-24 28 -60 61.5t-86.5 72t-110.5 64t-112 25.5t-98 -8t-94 -31t-81.5 -59.5t-55 -98.5t-21.5 -143q0 -168 187 -355l581 -560l580 559 q188 188 188 356zM1792 940q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5 q224 0 351 -124t127 -344z" /> -<glyph unicode="&#xf08b;" horiz-adv-x="1664" d="M640 96q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h320q13 0 22.5 -9.5t9.5 -22.5q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-66 0 -113 -47t-47 -113v-704 q0 -66 47 -113t113 -47h288h11h13t11.5 -1t11.5 -3t8 -5.5t7 -9t2 -13.5zM1568 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45z" /> -<glyph unicode="&#xf08c;" d="M237 122h231v694h-231v-694zM483 1030q-1 52 -36 86t-93 34t-94.5 -34t-36.5 -86q0 -51 35.5 -85.5t92.5 -34.5h1q59 0 95 34.5t36 85.5zM1068 122h231v398q0 154 -73 233t-193 79q-136 0 -209 -117h2v101h-231q3 -66 0 -694h231v388q0 38 7 56q15 35 45 59.5t74 24.5 q116 0 116 -157v-371zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="&#xf08d;" horiz-adv-x="1152" d="M480 672v448q0 14 -9 23t-23 9t-23 -9t-9 -23v-448q0 -14 9 -23t23 -9t23 9t9 23zM1152 320q0 -26 -19 -45t-45 -19h-429l-51 -483q-2 -12 -10.5 -20.5t-20.5 -8.5h-1q-27 0 -32 27l-76 485h-404q-26 0 -45 19t-19 45q0 123 78.5 221.5t177.5 98.5v512q-52 0 -90 38 t-38 90t38 90t90 38h640q52 0 90 -38t38 -90t-38 -90t-90 -38v-512q99 0 177.5 -98.5t78.5 -221.5z" /> -<glyph unicode="&#xf08e;" horiz-adv-x="1792" d="M1408 608v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1792 1472v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45z" /> -<glyph unicode="&#xf090;" d="M1184 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45zM1536 992v-704q0 -119 -84.5 -203.5t-203.5 -84.5h-320q-13 0 -22.5 9.5t-9.5 22.5 q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q66 0 113 47t47 113v704q0 66 -47 113t-113 47h-288h-11h-13t-11.5 1t-11.5 3t-8 5.5t-7 9t-2 13.5q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="&#xf091;" horiz-adv-x="1664" d="M458 653q-74 162 -74 371h-256v-96q0 -78 94.5 -162t235.5 -113zM1536 928v96h-256q0 -209 -74 -371q141 29 235.5 113t94.5 162zM1664 1056v-128q0 -71 -41.5 -143t-112 -130t-173 -97.5t-215.5 -44.5q-42 -54 -95 -95q-38 -34 -52.5 -72.5t-14.5 -89.5q0 -54 30.5 -91 t97.5 -37q75 0 133.5 -45.5t58.5 -114.5v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 69 58.5 114.5t133.5 45.5q67 0 97.5 37t30.5 91q0 51 -14.5 89.5t-52.5 72.5q-53 41 -95 95q-113 5 -215.5 44.5t-173 97.5t-112 130t-41.5 143v128q0 40 28 68t68 28h288v96 q0 66 47 113t113 47h576q66 0 113 -47t47 -113v-96h288q40 0 68 -28t28 -68z" /> -<glyph unicode="&#xf092;" d="M394 184q-8 -9 -20 3q-13 11 -4 19q8 9 20 -3q12 -11 4 -19zM352 245q9 -12 0 -19q-8 -6 -17 7t0 18q9 7 17 -6zM291 305q-5 -7 -13 -2q-10 5 -7 12q3 5 13 2q10 -5 7 -12zM322 271q-6 -7 -16 3q-9 11 -2 16q6 6 16 -3q9 -11 2 -16zM451 159q-4 -12 -19 -6q-17 4 -13 15 t19 7q16 -5 13 -16zM514 154q0 -11 -16 -11q-17 -2 -17 11q0 11 16 11q17 2 17 -11zM572 164q2 -10 -14 -14t-18 8t14 15q16 2 18 -9zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-224q-16 0 -24.5 1t-19.5 5t-16 14.5t-5 27.5v239q0 97 -52 142q57 6 102.5 18t94 39 t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103 q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -103t0.5 -68q0 -22 -11 -33.5t-22 -13t-33 -1.5 h-224q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="&#xf093;" horiz-adv-x="1664" d="M1280 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 288v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h427q21 -56 70.5 -92 t110.5 -36h256q61 0 110.5 36t70.5 92h427q40 0 68 -28t28 -68zM1339 936q-17 -40 -59 -40h-256v-448q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v448h-256q-42 0 -59 40q-17 39 14 69l448 448q18 19 45 19t45 -19l448 -448q31 -30 14 -69z" /> -<glyph unicode="&#xf094;" d="M1407 710q0 44 -7 113.5t-18 96.5q-12 30 -17 44t-9 36.5t-4 48.5q0 23 5 68.5t5 67.5q0 37 -10 55q-4 1 -13 1q-19 0 -58 -4.5t-59 -4.5q-60 0 -176 24t-175 24q-43 0 -94.5 -11.5t-85 -23.5t-89.5 -34q-137 -54 -202 -103q-96 -73 -159.5 -189.5t-88 -236t-24.5 -248.5 q0 -40 12.5 -120t12.5 -121q0 -23 -11 -66.5t-11 -65.5t12 -36.5t34 -14.5q24 0 72.5 11t73.5 11q57 0 169.5 -15.5t169.5 -15.5q181 0 284 36q129 45 235.5 152.5t166 245.5t59.5 275zM1535 712q0 -165 -70 -327.5t-196 -288t-281 -180.5q-124 -44 -326 -44 q-57 0 -170 14.5t-169 14.5q-24 0 -72.5 -14.5t-73.5 -14.5q-73 0 -123.5 55.5t-50.5 128.5q0 24 11 68t11 67q0 40 -12.5 120.5t-12.5 121.5q0 111 18 217.5t54.5 209.5t100.5 194t150 156q78 59 232 120q194 78 316 78q60 0 175.5 -24t173.5 -24q19 0 57 5t58 5 q81 0 118 -50.5t37 -134.5q0 -23 -5 -68t-5 -68q0 -10 1 -18.5t3 -17t4 -13.5t6.5 -16t6.5 -17q16 -40 25 -118.5t9 -136.5z" /> -<glyph unicode="&#xf095;" horiz-adv-x="1408" d="M1408 296q0 -27 -10 -70.5t-21 -68.5q-21 -50 -122 -106q-94 -51 -186 -51q-27 0 -52.5 3.5t-57.5 12.5t-47.5 14.5t-55.5 20.5t-49 18q-98 35 -175 83q-128 79 -264.5 215.5t-215.5 264.5q-48 77 -83 175q-3 9 -18 49t-20.5 55.5t-14.5 47.5t-12.5 57.5t-3.5 52.5 q0 92 51 186q56 101 106 122q25 11 68.5 21t70.5 10q14 0 21 -3q18 -6 53 -76q11 -19 30 -54t35 -63.5t31 -53.5q3 -4 17.5 -25t21.5 -35.5t7 -28.5q0 -20 -28.5 -50t-62 -55t-62 -53t-28.5 -46q0 -9 5 -22.5t8.5 -20.5t14 -24t11.5 -19q76 -137 174 -235t235 -174 q2 -1 19 -11.5t24 -14t20.5 -8.5t22.5 -5q18 0 46 28.5t53 62t55 62t50 28.5q14 0 28.5 -7t35.5 -21.5t25 -17.5q25 -15 53.5 -31t63.5 -35t54 -30q70 -35 76 -53q3 -7 3 -21z" /> -<glyph unicode="&#xf096;" horiz-adv-x="1408" d="M1120 1280h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="&#xf097;" horiz-adv-x="1280" d="M1152 1280h-1024v-1242l423 406l89 85l89 -85l423 -406v1242zM1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289 q0 34 19.5 62t52.5 41q21 9 44 9h1048z" /> -<glyph unicode="&#xf098;" d="M1280 343q0 11 -2 16q-3 8 -38.5 29.5t-88.5 49.5l-53 29q-5 3 -19 13t-25 15t-21 5q-18 0 -47 -32.5t-57 -65.5t-44 -33q-7 0 -16.5 3.5t-15.5 6.5t-17 9.5t-14 8.5q-99 55 -170.5 126.5t-126.5 170.5q-2 3 -8.5 14t-9.5 17t-6.5 15.5t-3.5 16.5q0 13 20.5 33.5t45 38.5 t45 39.5t20.5 36.5q0 10 -5 21t-15 25t-13 19q-3 6 -15 28.5t-25 45.5t-26.5 47.5t-25 40.5t-16.5 18t-16 2q-48 0 -101 -22q-46 -21 -80 -94.5t-34 -130.5q0 -16 2.5 -34t5 -30.5t9 -33t10 -29.5t12.5 -33t11 -30q60 -164 216.5 -320.5t320.5 -216.5q6 -2 30 -11t33 -12.5 t29.5 -10t33 -9t30.5 -5t34 -2.5q57 0 130.5 34t94.5 80q22 53 22 101zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="&#xf099;" horiz-adv-x="1664" d="M1620 1128q-67 -98 -162 -167q1 -14 1 -42q0 -130 -38 -259.5t-115.5 -248.5t-184.5 -210.5t-258 -146t-323 -54.5q-271 0 -496 145q35 -4 78 -4q225 0 401 138q-105 2 -188 64.5t-114 159.5q33 -5 61 -5q43 0 85 11q-112 23 -185.5 111.5t-73.5 205.5v4q68 -38 146 -41 q-66 44 -105 115t-39 154q0 88 44 163q121 -149 294.5 -238.5t371.5 -99.5q-8 38 -8 74q0 134 94.5 228.5t228.5 94.5q140 0 236 -102q109 21 205 78q-37 -115 -142 -178q93 10 186 50z" /> -<glyph unicode="&#xf09a;" horiz-adv-x="1024" d="M959 1524v-264h-157q-86 0 -116 -36t-30 -108v-189h293l-39 -296h-254v-759h-306v759h-255v296h255v218q0 186 104 288.5t277 102.5q147 0 228 -12z" /> -<glyph unicode="&#xf09b;" d="M1536 640q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -39.5 7t-12.5 30v211q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5 q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23 q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -89t0.5 -54q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf09c;" horiz-adv-x="1664" d="M1664 960v-256q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-192h96q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h672v192q0 185 131.5 316.5t316.5 131.5 t316.5 -131.5t131.5 -316.5z" /> -<glyph unicode="&#xf09d;" horiz-adv-x="1920" d="M1760 1408q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600zM160 1280q-13 0 -22.5 -9.5t-9.5 -22.5v-224h1664v224q0 13 -9.5 22.5t-22.5 9.5h-1600zM1760 0q13 0 22.5 9.5t9.5 22.5v608h-1664v-608 q0 -13 9.5 -22.5t22.5 -9.5h1600zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" /> -<glyph unicode="&#xf09e;" horiz-adv-x="1408" d="M384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 69q2 -28 -17 -48q-18 -21 -47 -21h-135q-25 0 -43 16.5t-20 41.5q-22 229 -184.5 391.5t-391.5 184.5q-25 2 -41.5 20t-16.5 43v135q0 29 21 47q17 17 43 17h5q160 -13 306 -80.5 t259 -181.5q114 -113 181.5 -259t80.5 -306zM1408 67q2 -27 -18 -47q-18 -20 -46 -20h-143q-26 0 -44.5 17.5t-19.5 42.5q-12 215 -101 408.5t-231.5 336t-336 231.5t-408.5 102q-25 1 -42.5 19.5t-17.5 43.5v143q0 28 20 46q18 18 44 18h3q262 -13 501.5 -120t425.5 -294 q187 -186 294 -425.5t120 -501.5z" /> -<glyph unicode="&#xf0a0;" d="M1040 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1296 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1408 160v320q0 13 -9.5 22.5t-22.5 9.5 h-1216q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5zM178 640h1180l-157 482q-4 13 -16 21.5t-26 8.5h-782q-14 0 -26 -8.5t-16 -21.5zM1536 480v-320q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v320q0 25 16 75 l197 606q17 53 63 86t101 33h782q55 0 101 -33t63 -86l197 -606q16 -50 16 -75z" /> -<glyph unicode="&#xf0a1;" horiz-adv-x="1792" d="M1664 896q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5v-384q0 -52 -38 -90t-90 -38q-417 347 -812 380q-58 -19 -91 -66t-31 -100.5t40 -92.5q-20 -33 -23 -65.5t6 -58t33.5 -55t48 -50t61.5 -50.5q-29 -58 -111.5 -83t-168.5 -11.5t-132 55.5q-7 23 -29.5 87.5 t-32 94.5t-23 89t-15 101t3.5 98.5t22 110.5h-122q-66 0 -113 47t-47 113v192q0 66 47 113t113 47h480q435 0 896 384q52 0 90 -38t38 -90v-384zM1536 292v954q-394 -302 -768 -343v-270q377 -42 768 -341z" /> -<glyph unicode="&#xf0a2;" horiz-adv-x="1792" d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM246 128h1300q-266 300 -266 832q0 51 -24 105t-69 103t-121.5 80.5t-169.5 31.5t-169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -532 -266 -832z M1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5 t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" /> -<glyph unicode="&#xf0a3;" d="M1376 640l138 -135q30 -28 20 -70q-12 -41 -52 -51l-188 -48l53 -186q12 -41 -19 -70q-29 -31 -70 -19l-186 53l-48 -188q-10 -40 -51 -52q-12 -2 -19 -2q-31 0 -51 22l-135 138l-135 -138q-28 -30 -70 -20q-41 11 -51 52l-48 188l-186 -53q-41 -12 -70 19q-31 29 -19 70 l53 186l-188 48q-40 10 -52 51q-10 42 20 70l138 135l-138 135q-30 28 -20 70q12 41 52 51l188 48l-53 186q-12 41 19 70q29 31 70 19l186 -53l48 188q10 41 51 51q41 12 70 -19l135 -139l135 139q29 30 70 19q41 -10 51 -51l48 -188l186 53q41 12 70 -19q31 -29 19 -70 l-53 -186l188 -48q40 -10 52 -51q10 -42 -20 -70z" /> -<glyph unicode="&#xf0a4;" horiz-adv-x="1792" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 768q0 51 -39 89.5t-89 38.5h-576q0 20 15 48.5t33 55t33 68t15 84.5q0 67 -44.5 97.5t-115.5 30.5q-24 0 -90 -139q-24 -44 -37 -65q-40 -64 -112 -145q-71 -81 -101 -106 q-69 -57 -140 -57h-32v-640h32q72 0 167 -32t193.5 -64t179.5 -32q189 0 189 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5h331q52 0 90 38t38 90zM1792 769q0 -105 -75.5 -181t-180.5 -76h-169q-4 -62 -37 -119q3 -21 3 -43 q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5q-133 0 -322 69q-164 59 -223 59h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h288q10 0 21.5 4.5t23.5 14t22.5 18t24 22.5t20.5 21.5t19 21.5t14 17q65 74 100 129q13 21 33 62t37 72t40.5 63t55 49.5 t69.5 17.5q125 0 206.5 -67t81.5 -189q0 -68 -22 -128h374q104 0 180 -76t76 -179z" /> -<glyph unicode="&#xf0a5;" horiz-adv-x="1792" d="M1376 128h32v640h-32q-35 0 -67.5 12t-62.5 37t-50 46t-49 54q-2 3 -3.5 4.5t-4 4.5t-4.5 5q-72 81 -112 145q-14 22 -38 68q-1 3 -10.5 22.5t-18.5 36t-20 35.5t-21.5 30.5t-18.5 11.5q-71 0 -115.5 -30.5t-44.5 -97.5q0 -43 15 -84.5t33 -68t33 -55t15 -48.5h-576 q-50 0 -89 -38.5t-39 -89.5q0 -52 38 -90t90 -38h331q-15 -17 -25 -47.5t-10 -55.5q0 -69 53 -119q-18 -32 -18 -69t17.5 -73.5t47.5 -52.5q-4 -24 -4 -56q0 -85 48.5 -126t135.5 -41q84 0 183 32t194 64t167 32zM1664 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45 t45 -19t45 19t19 45zM1792 768v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-288q-59 0 -223 -59q-190 -69 -317 -69q-142 0 -230 77.5t-87 217.5l1 5q-61 76 -61 178q0 22 3 43q-33 57 -37 119h-169q-105 0 -180.5 76t-75.5 181q0 103 76 179t180 76h374q-22 60 -22 128 q0 122 81.5 189t206.5 67q38 0 69.5 -17.5t55 -49.5t40.5 -63t37 -72t33 -62q35 -55 100 -129q2 -3 14 -17t19 -21.5t20.5 -21.5t24 -22.5t22.5 -18t23.5 -14t21.5 -4.5h288q53 0 90.5 -37.5t37.5 -90.5z" /> -<glyph unicode="&#xf0a6;" d="M1280 -64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 700q0 189 -167 189q-26 0 -56 -5q-16 30 -52.5 47.5t-73.5 17.5t-69 -18q-50 53 -119 53q-25 0 -55.5 -10t-47.5 -25v331q0 52 -38 90t-90 38q-51 0 -89.5 -39t-38.5 -89v-576 q-20 0 -48.5 15t-55 33t-68 33t-84.5 15q-67 0 -97.5 -44.5t-30.5 -115.5q0 -24 139 -90q44 -24 65 -37q64 -40 145 -112q81 -71 106 -101q57 -69 57 -140v-32h640v32q0 72 32 167t64 193.5t32 179.5zM1536 705q0 -133 -69 -322q-59 -164 -59 -223v-288q0 -53 -37.5 -90.5 t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5v288q0 10 -4.5 21.5t-14 23.5t-18 22.5t-22.5 24t-21.5 20.5t-21.5 19t-17 14q-74 65 -129 100q-21 13 -62 33t-72 37t-63 40.5t-49.5 55t-17.5 69.5q0 125 67 206.5t189 81.5q68 0 128 -22v374q0 104 76 180t179 76 q105 0 181 -75.5t76 -180.5v-169q62 -4 119 -37q21 3 43 3q101 0 178 -60q139 1 219.5 -85t80.5 -227z" /> -<glyph unicode="&#xf0a7;" d="M1408 576q0 84 -32 183t-64 194t-32 167v32h-640v-32q0 -35 -12 -67.5t-37 -62.5t-46 -50t-54 -49q-9 -8 -14 -12q-81 -72 -145 -112q-22 -14 -68 -38q-3 -1 -22.5 -10.5t-36 -18.5t-35.5 -20t-30.5 -21.5t-11.5 -18.5q0 -71 30.5 -115.5t97.5 -44.5q43 0 84.5 15t68 33 t55 33t48.5 15v-576q0 -50 38.5 -89t89.5 -39q52 0 90 38t38 90v331q46 -35 103 -35q69 0 119 53q32 -18 69 -18t73.5 17.5t52.5 47.5q24 -4 56 -4q85 0 126 48.5t41 135.5zM1280 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 580 q0 -142 -77.5 -230t-217.5 -87l-5 1q-76 -61 -178 -61q-22 0 -43 3q-54 -30 -119 -37v-169q0 -105 -76 -180.5t-181 -75.5q-103 0 -179 76t-76 180v374q-54 -22 -128 -22q-121 0 -188.5 81.5t-67.5 206.5q0 38 17.5 69.5t49.5 55t63 40.5t72 37t62 33q55 35 129 100 q3 2 17 14t21.5 19t21.5 20.5t22.5 24t18 22.5t14 23.5t4.5 21.5v288q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-288q0 -59 59 -223q69 -190 69 -317z" /> -<glyph unicode="&#xf0a8;" d="M1280 576v128q0 26 -19 45t-45 19h-502l189 189q19 19 19 45t-19 45l-91 91q-18 18 -45 18t-45 -18l-362 -362l-91 -91q-18 -18 -18 -45t18 -45l91 -91l362 -362q18 -18 45 -18t45 18l91 91q18 18 18 45t-18 45l-189 189h502q26 0 45 19t19 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf0a9;" d="M1285 640q0 27 -18 45l-91 91l-362 362q-18 18 -45 18t-45 -18l-91 -91q-18 -18 -18 -45t18 -45l189 -189h-502q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h502l-189 -189q-19 -19 -19 -45t19 -45l91 -91q18 -18 45 -18t45 18l362 362l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf0aa;" d="M1284 641q0 27 -18 45l-362 362l-91 91q-18 18 -45 18t-45 -18l-91 -91l-362 -362q-18 -18 -18 -45t18 -45l91 -91q18 -18 45 -18t45 18l189 189v-502q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v502l189 -189q19 -19 45 -19t45 19l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf0ab;" d="M1284 639q0 27 -18 45l-91 91q-18 18 -45 18t-45 -18l-189 -189v502q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-502l-189 189q-19 19 -45 19t-45 -19l-91 -91q-18 -18 -18 -45t18 -45l362 -362l91 -91q18 -18 45 -18t45 18l91 91l362 362q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf0ac;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1042 887q-2 -1 -9.5 -9.5t-13.5 -9.5q2 0 4.5 5t5 11t3.5 7q6 7 22 15q14 6 52 12q34 8 51 -11 q-2 2 9.5 13t14.5 12q3 2 15 4.5t15 7.5l2 22q-12 -1 -17.5 7t-6.5 21q0 -2 -6 -8q0 7 -4.5 8t-11.5 -1t-9 -1q-10 3 -15 7.5t-8 16.5t-4 15q-2 5 -9.5 10.5t-9.5 10.5q-1 2 -2.5 5.5t-3 6.5t-4 5.5t-5.5 2.5t-7 -5t-7.5 -10t-4.5 -5q-3 2 -6 1.5t-4.5 -1t-4.5 -3t-5 -3.5 q-3 -2 -8.5 -3t-8.5 -2q15 5 -1 11q-10 4 -16 3q9 4 7.5 12t-8.5 14h5q-1 4 -8.5 8.5t-17.5 8.5t-13 6q-8 5 -34 9.5t-33 0.5q-5 -6 -4.5 -10.5t4 -14t3.5 -12.5q1 -6 -5.5 -13t-6.5 -12q0 -7 14 -15.5t10 -21.5q-3 -8 -16 -16t-16 -12q-5 -8 -1.5 -18.5t10.5 -16.5 q2 -2 1.5 -4t-3.5 -4.5t-5.5 -4t-6.5 -3.5l-3 -2q-11 -5 -20.5 6t-13.5 26q-7 25 -16 30q-23 8 -29 -1q-5 13 -41 26q-25 9 -58 4q6 1 0 15q-7 15 -19 12q3 6 4 17.5t1 13.5q3 13 12 23q1 1 7 8.5t9.5 13.5t0.5 6q35 -4 50 11q5 5 11.5 17t10.5 17q9 6 14 5.5t14.5 -5.5 t14.5 -5q14 -1 15.5 11t-7.5 20q12 -1 3 17q-5 7 -8 9q-12 4 -27 -5q-8 -4 2 -8q-1 1 -9.5 -10.5t-16.5 -17.5t-16 5q-1 1 -5.5 13.5t-9.5 13.5q-8 0 -16 -15q3 8 -11 15t-24 8q19 12 -8 27q-7 4 -20.5 5t-19.5 -4q-5 -7 -5.5 -11.5t5 -8t10.5 -5.5t11.5 -4t8.5 -3 q14 -10 8 -14q-2 -1 -8.5 -3.5t-11.5 -4.5t-6 -4q-3 -4 0 -14t-2 -14q-5 5 -9 17.5t-7 16.5q7 -9 -25 -6l-10 1q-4 0 -16 -2t-20.5 -1t-13.5 8q-4 8 0 20q1 4 4 2q-4 3 -11 9.5t-10 8.5q-46 -15 -94 -41q6 -1 12 1q5 2 13 6.5t10 5.5q34 14 42 7l5 5q14 -16 20 -25 q-7 4 -30 1q-20 -6 -22 -12q7 -12 5 -18q-4 3 -11.5 10t-14.5 11t-15 5q-16 0 -22 -1q-146 -80 -235 -222q7 -7 12 -8q4 -1 5 -9t2.5 -11t11.5 3q9 -8 3 -19q1 1 44 -27q19 -17 21 -21q3 -11 -10 -18q-1 2 -9 9t-9 4q-3 -5 0.5 -18.5t10.5 -12.5q-7 0 -9.5 -16t-2.5 -35.5 t-1 -23.5l2 -1q-3 -12 5.5 -34.5t21.5 -19.5q-13 -3 20 -43q6 -8 8 -9q3 -2 12 -7.5t15 -10t10 -10.5q4 -5 10 -22.5t14 -23.5q-2 -6 9.5 -20t10.5 -23q-1 0 -2.5 -1t-2.5 -1q3 -7 15.5 -14t15.5 -13q1 -3 2 -10t3 -11t8 -2q2 20 -24 62q-15 25 -17 29q-3 5 -5.5 15.5 t-4.5 14.5q2 0 6 -1.5t8.5 -3.5t7.5 -4t2 -3q-3 -7 2 -17.5t12 -18.5t17 -19t12 -13q6 -6 14 -19.5t0 -13.5q9 0 20 -10t17 -20q5 -8 8 -26t5 -24q2 -7 8.5 -13.5t12.5 -9.5l16 -8t13 -7q5 -2 18.5 -10.5t21.5 -11.5q10 -4 16 -4t14.5 2.5t13.5 3.5q15 2 29 -15t21 -21 q36 -19 55 -11q-2 -1 0.5 -7.5t8 -15.5t9 -14.5t5.5 -8.5q5 -6 18 -15t18 -15q6 4 7 9q-3 -8 7 -20t18 -10q14 3 14 32q-31 -15 -49 18q0 1 -2.5 5.5t-4 8.5t-2.5 8.5t0 7.5t5 3q9 0 10 3.5t-2 12.5t-4 13q-1 8 -11 20t-12 15q-5 -9 -16 -8t-16 9q0 -1 -1.5 -5.5t-1.5 -6.5 q-13 0 -15 1q1 3 2.5 17.5t3.5 22.5q1 4 5.5 12t7.5 14.5t4 12.5t-4.5 9.5t-17.5 2.5q-19 -1 -26 -20q-1 -3 -3 -10.5t-5 -11.5t-9 -7q-7 -3 -24 -2t-24 5q-13 8 -22.5 29t-9.5 37q0 10 2.5 26.5t3 25t-5.5 24.5q3 2 9 9.5t10 10.5q2 1 4.5 1.5t4.5 0t4 1.5t3 6q-1 1 -4 3 q-3 3 -4 3q7 -3 28.5 1.5t27.5 -1.5q15 -11 22 2q0 1 -2.5 9.5t-0.5 13.5q5 -27 29 -9q3 -3 15.5 -5t17.5 -5q3 -2 7 -5.5t5.5 -4.5t5 0.5t8.5 6.5q10 -14 12 -24q11 -40 19 -44q7 -3 11 -2t4.5 9.5t0 14t-1.5 12.5l-1 8v18l-1 8q-15 3 -18.5 12t1.5 18.5t15 18.5q1 1 8 3.5 t15.5 6.5t12.5 8q21 19 15 35q7 0 11 9q-1 0 -5 3t-7.5 5t-4.5 2q9 5 2 16q5 3 7.5 11t7.5 10q9 -12 21 -2q7 8 1 16q5 7 20.5 10.5t18.5 9.5q7 -2 8 2t1 12t3 12q4 5 15 9t13 5l17 11q3 4 0 4q18 -2 31 11q10 11 -6 20q3 6 -3 9.5t-15 5.5q3 1 11.5 0.5t10.5 1.5 q15 10 -7 16q-17 5 -43 -12zM879 10q206 36 351 189q-3 3 -12.5 4.5t-12.5 3.5q-18 7 -24 8q1 7 -2.5 13t-8 9t-12.5 8t-11 7q-2 2 -7 6t-7 5.5t-7.5 4.5t-8.5 2t-10 -1l-3 -1q-3 -1 -5.5 -2.5t-5.5 -3t-4 -3t0 -2.5q-21 17 -36 22q-5 1 -11 5.5t-10.5 7t-10 1.5t-11.5 -7 q-5 -5 -6 -15t-2 -13q-7 5 0 17.5t2 18.5q-3 6 -10.5 4.5t-12 -4.5t-11.5 -8.5t-9 -6.5t-8.5 -5.5t-8.5 -7.5q-3 -4 -6 -12t-5 -11q-2 4 -11.5 6.5t-9.5 5.5q2 -10 4 -35t5 -38q7 -31 -12 -48q-27 -25 -29 -40q-4 -22 12 -26q0 -7 -8 -20.5t-7 -21.5q0 -6 2 -16z" /> -<glyph unicode="&#xf0ad;" horiz-adv-x="1664" d="M384 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1028 484l-682 -682q-37 -37 -90 -37q-52 0 -91 37l-106 108q-38 36 -38 90q0 53 38 91l681 681q39 -98 114.5 -173.5t173.5 -114.5zM1662 919q0 -39 -23 -106q-47 -134 -164.5 -217.5 t-258.5 -83.5q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q58 0 121.5 -16.5t107.5 -46.5q16 -11 16 -28t-16 -28l-293 -169v-224l193 -107q5 3 79 48.5t135.5 81t70.5 35.5q15 0 23.5 -10t8.5 -25z" /> -<glyph unicode="&#xf0ae;" horiz-adv-x="1792" d="M1024 128h640v128h-640v-128zM640 640h1024v128h-1024v-128zM1280 1152h384v128h-384v-128zM1792 320v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 832v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19 t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" /> -<glyph unicode="&#xf0b0;" horiz-adv-x="1408" d="M1403 1241q17 -41 -14 -70l-493 -493v-742q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-256 256q-19 19 -19 45v486l-493 493q-31 29 -14 70q17 39 59 39h1280q42 0 59 -39z" /> -<glyph unicode="&#xf0b1;" horiz-adv-x="1792" d="M640 1280h512v128h-512v-128zM1792 640v-480q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v480h672v-160q0 -26 19 -45t45 -19h320q26 0 45 19t19 45v160h672zM1024 640v-128h-256v128h256zM1792 1120v-384h-1792v384q0 66 47 113t113 47h352v160q0 40 28 68 t68 28h576q40 0 68 -28t28 -68v-160h352q66 0 113 -47t47 -113z" /> -<glyph unicode="&#xf0b2;" d="M1283 995l-355 -355l355 -355l144 144q29 31 70 14q39 -17 39 -59v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l144 144l-355 355l-355 -355l144 -144q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l144 -144 l355 355l-355 355l-144 -144q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v448q0 26 19 45t45 19h448q42 0 59 -40q17 -39 -14 -69l-144 -144l355 -355l355 355l-144 144q-31 30 -14 69q17 40 59 40h448q26 0 45 -19t19 -45v-448q0 -42 -39 -59q-13 -5 -25 -5q-26 0 -45 19z " /> -<glyph unicode="&#xf0c0;" horiz-adv-x="1920" d="M593 640q-162 -5 -265 -128h-134q-82 0 -138 40.5t-56 118.5q0 353 124 353q6 0 43.5 -21t97.5 -42.5t119 -21.5q67 0 133 23q-5 -37 -5 -66q0 -139 81 -256zM1664 3q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5 t43 97.5t62 81t85.5 53.5t111.5 20q10 0 43 -21.5t73 -48t107 -48t135 -21.5t135 21.5t107 48t73 48t43 21.5q61 0 111.5 -20t85.5 -53.5t62 -81t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM640 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75 t75 -181zM1344 896q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5zM1920 671q0 -78 -56 -118.5t-138 -40.5h-134q-103 123 -265 128q81 117 81 256q0 29 -5 66q66 -23 133 -23q59 0 119 21.5t97.5 42.5 t43.5 21q124 0 124 -353zM1792 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181z" /> -<glyph unicode="&#xf0c1;" horiz-adv-x="1664" d="M1456 320q0 40 -28 68l-208 208q-28 28 -68 28q-42 0 -72 -32q3 -3 19 -18.5t21.5 -21.5t15 -19t13 -25.5t3.5 -27.5q0 -40 -28 -68t-68 -28q-15 0 -27.5 3.5t-25.5 13t-19 15t-21.5 21.5t-18.5 19q-33 -31 -33 -73q0 -40 28 -68l206 -207q27 -27 68 -27q40 0 68 26 l147 146q28 28 28 67zM753 1025q0 40 -28 68l-206 207q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l208 -208q27 -27 68 -27q42 0 72 31q-3 3 -19 18.5t-21.5 21.5t-15 19t-13 25.5t-3.5 27.5q0 40 28 68t68 28q15 0 27.5 -3.5t25.5 -13t19 -15 t21.5 -21.5t18.5 -19q33 31 33 73zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-206 207q-83 83 -83 203q0 123 88 209l-88 88q-86 -88 -208 -88q-120 0 -204 84l-208 208q-84 84 -84 204t85 203l147 146q83 83 203 83q121 0 204 -85l206 -207 q83 -83 83 -203q0 -123 -88 -209l88 -88q86 88 208 88q120 0 204 -84l208 -208q84 -84 84 -204z" /> -<glyph unicode="&#xf0c2;" horiz-adv-x="1920" d="M1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5q0 132 71 241.5t187 163.5q-2 28 -2 43q0 212 150 362t362 150q158 0 286.5 -88t187.5 -230q70 62 166 62q106 0 181 -75t75 -181q0 -75 -41 -138q129 -30 213 -134.5t84 -239.5z " /> -<glyph unicode="&#xf0c3;" horiz-adv-x="1664" d="M1527 88q56 -89 21.5 -152.5t-140.5 -63.5h-1152q-106 0 -140.5 63.5t21.5 152.5l503 793v399h-64q-26 0 -45 19t-19 45t19 45t45 19h512q26 0 45 -19t19 -45t-19 -45t-45 -19h-64v-399zM748 813l-272 -429h712l-272 429l-20 31v37v399h-128v-399v-37z" /> -<glyph unicode="&#xf0c4;" horiz-adv-x="1792" d="M960 640q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1260 576l507 -398q28 -20 25 -56q-5 -35 -35 -51l-128 -64q-13 -7 -29 -7q-17 0 -31 8l-690 387l-110 -66q-8 -4 -12 -5q14 -49 10 -97q-7 -77 -56 -147.5t-132 -123.5q-132 -84 -277 -84 q-136 0 -222 78q-90 84 -79 207q7 76 56 147t131 124q132 84 278 84q83 0 151 -31q9 13 22 22l122 73l-122 73q-13 9 -22 22q-68 -31 -151 -31q-146 0 -278 84q-82 53 -131 124t-56 147q-5 59 15.5 113t63.5 93q85 79 222 79q145 0 277 -84q83 -52 132 -123t56 -148 q4 -48 -10 -97q4 -1 12 -5l110 -66l690 387q14 8 31 8q16 0 29 -7l128 -64q30 -16 35 -51q3 -36 -25 -56zM579 836q46 42 21 108t-106 117q-92 59 -192 59q-74 0 -113 -36q-46 -42 -21 -108t106 -117q92 -59 192 -59q74 0 113 36zM494 91q81 51 106 117t-21 108 q-39 36 -113 36q-100 0 -192 -59q-81 -51 -106 -117t21 -108q39 -36 113 -36q100 0 192 59zM672 704l96 -58v11q0 36 33 56l14 8l-79 47l-26 -26q-3 -3 -10 -11t-12 -12q-2 -2 -4 -3.5t-3 -2.5zM896 480l96 -32l736 576l-128 64l-768 -431v-113l-160 -96l9 -8q2 -2 7 -6 q4 -4 11 -12t11 -12l26 -26zM1600 64l128 64l-520 408l-177 -138q-2 -3 -13 -7z" /> -<glyph unicode="&#xf0c5;" horiz-adv-x="1792" d="M1696 1152q40 0 68 -28t28 -68v-1216q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v288h-544q-40 0 -68 28t-28 68v672q0 40 20 88t48 76l408 408q28 28 76 48t88 20h416q40 0 68 -28t28 -68v-328q68 40 128 40h416zM1152 939l-299 -299h299v299zM512 1323l-299 -299 h299v299zM708 676l316 316v416h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h512v256q0 40 20 88t48 76zM1664 -128v1152h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h896z" /> -<glyph unicode="&#xf0c6;" horiz-adv-x="1408" d="M1404 151q0 -117 -79 -196t-196 -79q-135 0 -235 100l-777 776q-113 115 -113 271q0 159 110 270t269 111q158 0 273 -113l605 -606q10 -10 10 -22q0 -16 -30.5 -46.5t-46.5 -30.5q-13 0 -23 10l-606 607q-79 77 -181 77q-106 0 -179 -75t-73 -181q0 -105 76 -181 l776 -777q63 -63 145 -63q64 0 106 42t42 106q0 82 -63 145l-581 581q-26 24 -60 24q-29 0 -48 -19t-19 -48q0 -32 25 -59l410 -410q10 -10 10 -22q0 -16 -31 -47t-47 -31q-12 0 -22 10l-410 410q-63 61 -63 149q0 82 57 139t139 57q88 0 149 -63l581 -581q100 -98 100 -235 z" /> -<glyph unicode="&#xf0c7;" d="M384 0h768v384h-768v-384zM1280 0h128v896q0 14 -10 38.5t-20 34.5l-281 281q-10 10 -34 20t-39 10v-416q0 -40 -28 -68t-68 -28h-576q-40 0 -68 28t-28 68v416h-128v-1280h128v416q0 40 28 68t68 28h832q40 0 68 -28t28 -68v-416zM896 928v320q0 13 -9.5 22.5t-22.5 9.5 h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5zM1536 896v-928q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h928q40 0 88 -20t76 -48l280 -280q28 -28 48 -76t20 -88z" /> -<glyph unicode="&#xf0c8;" d="M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="&#xf0c9;" d="M1536 192v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 704v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 1216v-128q0 -26 -19 -45 t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" /> -<glyph unicode="&#xf0ca;" horiz-adv-x="1792" d="M384 128q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 640q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1152q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z M1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" /> -<glyph unicode="&#xf0cb;" horiz-adv-x="1792" d="M381 -84q0 -80 -54.5 -126t-135.5 -46q-106 0 -172 66l57 88q49 -45 106 -45q29 0 50.5 14.5t21.5 42.5q0 64 -105 56l-26 56q8 10 32.5 43.5t42.5 54t37 38.5v1q-16 0 -48.5 -1t-48.5 -1v-53h-106v152h333v-88l-95 -115q51 -12 81 -49t30 -88zM383 543v-159h-362 q-6 36 -6 54q0 51 23.5 93t56.5 68t66 47.5t56.5 43.5t23.5 45q0 25 -14.5 38.5t-39.5 13.5q-46 0 -81 -58l-85 59q24 51 71.5 79.5t105.5 28.5q73 0 123 -41.5t50 -112.5q0 -50 -34 -91.5t-75 -64.5t-75.5 -50.5t-35.5 -52.5h127v60h105zM1792 224v-192q0 -13 -9.5 -22.5 t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1123v-99h-335v99h107q0 41 0.5 122t0.5 121v12h-2q-8 -17 -50 -54l-71 76l136 127h106v-404h108zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5 t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" /> -<glyph unicode="&#xf0cc;" horiz-adv-x="1792" d="M1760 640q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1728q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h1728zM483 704q-28 35 -51 80q-48 97 -48 188q0 181 134 309q133 127 393 127q50 0 167 -19q66 -12 177 -48q10 -38 21 -118q14 -123 14 -183q0 -18 -5 -45l-12 -3l-84 6 l-14 2q-50 149 -103 205q-88 91 -210 91q-114 0 -182 -59q-67 -58 -67 -146q0 -73 66 -140t279 -129q69 -20 173 -66q58 -28 95 -52h-743zM990 448h411q7 -39 7 -92q0 -111 -41 -212q-23 -55 -71 -104q-37 -35 -109 -81q-80 -48 -153 -66q-80 -21 -203 -21q-114 0 -195 23 l-140 40q-57 16 -72 28q-8 8 -8 22v13q0 108 -2 156q-1 30 0 68l2 37v44l102 2q15 -34 30 -71t22.5 -56t12.5 -27q35 -57 80 -94q43 -36 105 -57q59 -22 132 -22q64 0 139 27q77 26 122 86q47 61 47 129q0 84 -81 157q-34 29 -137 71z" /> -<glyph unicode="&#xf0cd;" d="M48 1313q-37 2 -45 4l-3 88q13 1 40 1q60 0 112 -4q132 -7 166 -7q86 0 168 3q116 4 146 5q56 0 86 2l-1 -14l2 -64v-9q-60 -9 -124 -9q-60 0 -79 -25q-13 -14 -13 -132q0 -13 0.5 -32.5t0.5 -25.5l1 -229l14 -280q6 -124 51 -202q35 -59 96 -92q88 -47 177 -47 q104 0 191 28q56 18 99 51q48 36 65 64q36 56 53 114q21 73 21 229q0 79 -3.5 128t-11 122.5t-13.5 159.5l-4 59q-5 67 -24 88q-34 35 -77 34l-100 -2l-14 3l2 86h84l205 -10q76 -3 196 10l18 -2q6 -38 6 -51q0 -7 -4 -31q-45 -12 -84 -13q-73 -11 -79 -17q-15 -15 -15 -41 q0 -7 1.5 -27t1.5 -31q8 -19 22 -396q6 -195 -15 -304q-15 -76 -41 -122q-38 -65 -112 -123q-75 -57 -182 -89q-109 -33 -255 -33q-167 0 -284 46q-119 47 -179 122q-61 76 -83 195q-16 80 -16 237v333q0 188 -17 213q-25 36 -147 39zM1536 -96v64q0 14 -9 23t-23 9h-1472 q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h1472q14 0 23 9t9 23z" /> -<glyph unicode="&#xf0ce;" horiz-adv-x="1664" d="M512 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23 v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 160v192 q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192 q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1664 1248v-1088q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1344q66 0 113 -47t47 -113 z" /> -<glyph unicode="&#xf0d0;" horiz-adv-x="1664" d="M1190 955l293 293l-107 107l-293 -293zM1637 1248q0 -27 -18 -45l-1286 -1286q-18 -18 -45 -18t-45 18l-198 198q-18 18 -18 45t18 45l1286 1286q18 18 45 18t45 -18l198 -198q18 -18 18 -45zM286 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM636 1276 l196 -60l-196 -60l-60 -196l-60 196l-196 60l196 60l60 196zM1566 798l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM926 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98z" /> -<glyph unicode="&#xf0d1;" horiz-adv-x="1792" d="M640 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM256 640h384v256h-158q-13 0 -22 -9l-195 -195q-9 -9 -9 -22v-30zM1536 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1792 1216v-1024q0 -15 -4 -26.5t-13.5 -18.5 t-16.5 -11.5t-23.5 -6t-22.5 -2t-25.5 0t-22.5 0.5q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-64q-3 0 -22.5 -0.5t-25.5 0t-22.5 2t-23.5 6t-16.5 11.5t-13.5 18.5t-4 26.5q0 26 19 45t45 19v320q0 8 -0.5 35t0 38 t2.5 34.5t6.5 37t14 30.5t22.5 30l198 198q19 19 50.5 32t58.5 13h160v192q0 26 19 45t45 19h1024q26 0 45 -19t19 -45z" /> -<glyph unicode="&#xf0d2;" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103q-111 0 -218 32q59 93 78 164q9 34 54 211q20 -39 73 -67.5t114 -28.5q121 0 216 68.5t147 188.5t52 270q0 114 -59.5 214t-172.5 163t-255 63q-105 0 -196 -29t-154.5 -77t-109 -110.5t-67 -129.5t-21.5 -134 q0 -104 40 -183t117 -111q30 -12 38 20q2 7 8 31t8 30q6 23 -11 43q-51 61 -51 151q0 151 104.5 259.5t273.5 108.5q151 0 235.5 -82t84.5 -213q0 -170 -68.5 -289t-175.5 -119q-61 0 -98 43.5t-23 104.5q8 35 26.5 93.5t30 103t11.5 75.5q0 50 -27 83t-77 33 q-62 0 -105 -57t-43 -142q0 -73 25 -122l-99 -418q-17 -70 -13 -177q-206 91 -333 281t-127 423q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf0d3;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-725q85 122 108 210q9 34 53 209q21 -39 73.5 -67t112.5 -28q181 0 295.5 147.5t114.5 373.5q0 84 -35 162.5t-96.5 139t-152.5 97t-197 36.5q-104 0 -194.5 -28.5t-153 -76.5 t-107.5 -109.5t-66.5 -128t-21.5 -132.5q0 -102 39.5 -180t116.5 -110q13 -5 23.5 0t14.5 19q10 44 15 61q6 23 -11 42q-50 62 -50 150q0 150 103.5 256.5t270.5 106.5q149 0 232.5 -81t83.5 -210q0 -168 -67.5 -286t-173.5 -118q-60 0 -97 43.5t-23 103.5q8 34 26.5 92.5 t29.5 102t11 74.5q0 49 -26.5 81.5t-75.5 32.5q-61 0 -103.5 -56.5t-42.5 -139.5q0 -72 24 -121l-98 -414q-24 -100 -7 -254h-183q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960z" /> -<glyph unicode="&#xf0d4;" d="M829 318q0 -76 -58.5 -112.5t-139.5 -36.5q-41 0 -80.5 9.5t-75.5 28.5t-58 53t-22 78q0 46 25 80t65.5 51.5t82 25t84.5 7.5q20 0 31 -2q2 -1 23 -16.5t26 -19t23 -18t24.5 -22t19 -22.5t17 -26t9 -26.5t4.5 -31.5zM755 863q0 -60 -33 -99.5t-92 -39.5q-53 0 -93 42.5 t-57.5 96.5t-17.5 106q0 61 32 104t92 43q53 0 93.5 -45t58 -101t17.5 -107zM861 1120l88 64h-265q-85 0 -161 -32t-127.5 -98t-51.5 -153q0 -93 64.5 -154.5t158.5 -61.5q22 0 43 3q-13 -29 -13 -54q0 -44 40 -94q-175 -12 -257 -63q-47 -29 -75.5 -73t-28.5 -95 q0 -43 18.5 -77.5t48.5 -56.5t69 -37t77.5 -21t76.5 -6q60 0 120.5 15.5t113.5 46t86 82.5t33 117q0 49 -20 89.5t-49 66.5t-58 47.5t-49 44t-20 44.5t15.5 42.5t37.5 39.5t44 42t37.5 59.5t15.5 82.5q0 60 -22.5 99.5t-72.5 90.5h83zM1152 672h128v64h-128v128h-64v-128 h-128v-64h128v-160h64v160zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="&#xf0d5;" horiz-adv-x="1664" d="M735 740q0 -36 32 -70.5t77.5 -68t90.5 -73.5t77 -104t32 -142q0 -90 -48 -173q-72 -122 -211 -179.5t-298 -57.5q-132 0 -246.5 41.5t-171.5 137.5q-37 60 -37 131q0 81 44.5 150t118.5 115q131 82 404 100q-32 42 -47.5 74t-15.5 73q0 36 21 85q-46 -4 -68 -4 q-148 0 -249.5 96.5t-101.5 244.5q0 82 36 159t99 131q77 66 182.5 98t217.5 32h418l-138 -88h-131q74 -63 112 -133t38 -160q0 -72 -24.5 -129.5t-59 -93t-69.5 -65t-59.5 -61.5t-24.5 -66zM589 836q38 0 78 16.5t66 43.5q53 57 53 159q0 58 -17 125t-48.5 129.5 t-84.5 103.5t-117 41q-42 0 -82.5 -19.5t-65.5 -52.5q-47 -59 -47 -160q0 -46 10 -97.5t31.5 -103t52 -92.5t75 -67t96.5 -26zM591 -37q58 0 111.5 13t99 39t73 73t27.5 109q0 25 -7 49t-14.5 42t-27 41.5t-29.5 35t-38.5 34.5t-36.5 29t-41.5 30t-36.5 26q-16 2 -48 2 q-53 0 -105 -7t-107.5 -25t-97 -46t-68.5 -74.5t-27 -105.5q0 -70 35 -123.5t91.5 -83t119 -44t127.5 -14.5zM1401 839h213v-108h-213v-219h-105v219h-212v108h212v217h105v-217z" /> -<glyph unicode="&#xf0d6;" horiz-adv-x="1920" d="M768 384h384v96h-128v448h-114l-148 -137l77 -80q42 37 55 57h2v-288h-128v-96zM1280 640q0 -70 -21 -142t-59.5 -134t-101.5 -101t-138 -39t-138 39t-101.5 101t-59.5 134t-21 142t21 142t59.5 134t101.5 101t138 39t138 -39t101.5 -101t59.5 -134t21 -142zM1792 384 v512q-106 0 -181 75t-75 181h-1152q0 -106 -75 -181t-181 -75v-512q106 0 181 -75t75 -181h1152q0 106 75 181t181 75zM1920 1216v-1152q0 -26 -19 -45t-45 -19h-1792q-26 0 -45 19t-19 45v1152q0 26 19 45t45 19h1792q26 0 45 -19t19 -45z" /> -<glyph unicode="&#xf0d7;" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" /> -<glyph unicode="&#xf0d8;" horiz-adv-x="1024" d="M1024 320q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" /> -<glyph unicode="&#xf0d9;" horiz-adv-x="640" d="M640 1088v-896q0 -26 -19 -45t-45 -19t-45 19l-448 448q-19 19 -19 45t19 45l448 448q19 19 45 19t45 -19t19 -45z" /> -<glyph unicode="&#xf0da;" horiz-adv-x="640" d="M576 640q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19t-19 45v896q0 26 19 45t45 19t45 -19l448 -448q19 -19 19 -45z" /> -<glyph unicode="&#xf0db;" horiz-adv-x="1664" d="M160 0h608v1152h-640v-1120q0 -13 9.5 -22.5t22.5 -9.5zM1536 32v1120h-640v-1152h608q13 0 22.5 9.5t9.5 22.5zM1664 1248v-1216q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1344q66 0 113 -47t47 -113z" /> -<glyph unicode="&#xf0dc;" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45zM1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" /> -<glyph unicode="&#xf0dd;" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" /> -<glyph unicode="&#xf0de;" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" /> -<glyph unicode="&#xf0e0;" horiz-adv-x="1792" d="M1792 826v-794q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v794q44 -49 101 -87q362 -246 497 -345q57 -42 92.5 -65.5t94.5 -48t110 -24.5h1h1q51 0 110 24.5t94.5 48t92.5 65.5q170 123 498 345q57 39 100 87zM1792 1120q0 -79 -49 -151t-122 -123 q-376 -261 -468 -325q-10 -7 -42.5 -30.5t-54 -38t-52 -32.5t-57.5 -27t-50 -9h-1h-1q-23 0 -50 9t-57.5 27t-52 32.5t-54 38t-42.5 30.5q-91 64 -262 182.5t-205 142.5q-62 42 -117 115.5t-55 136.5q0 78 41.5 130t118.5 52h1472q65 0 112.5 -47t47.5 -113z" /> -<glyph unicode="&#xf0e1;" d="M349 911v-991h-330v991h330zM370 1217q1 -73 -50.5 -122t-135.5 -49h-2q-82 0 -132 49t-50 122q0 74 51.5 122.5t134.5 48.5t133 -48.5t51 -122.5zM1536 488v-568h-329v530q0 105 -40.5 164.5t-126.5 59.5q-63 0 -105.5 -34.5t-63.5 -85.5q-11 -30 -11 -81v-553h-329 q2 399 2 647t-1 296l-1 48h329v-144h-2q20 32 41 56t56.5 52t87 43.5t114.5 15.5q171 0 275 -113.5t104 -332.5z" /> -<glyph unicode="&#xf0e2;" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298z" /> -<glyph unicode="&#xf0e3;" horiz-adv-x="1792" d="M1771 0q0 -53 -37 -90l-107 -108q-39 -37 -91 -37q-53 0 -90 37l-363 364q-38 36 -38 90q0 53 43 96l-256 256l-126 -126q-14 -14 -34 -14t-34 14q2 -2 12.5 -12t12.5 -13t10 -11.5t10 -13.5t6 -13.5t5.5 -16.5t1.5 -18q0 -38 -28 -68q-3 -3 -16.5 -18t-19 -20.5 t-18.5 -16.5t-22 -15.5t-22 -9t-26 -4.5q-40 0 -68 28l-408 408q-28 28 -28 68q0 13 4.5 26t9 22t15.5 22t16.5 18.5t20.5 19t18 16.5q30 28 68 28q10 0 18 -1.5t16.5 -5.5t13.5 -6t13.5 -10t11.5 -10t13 -12.5t12 -12.5q-14 14 -14 34t14 34l348 348q14 14 34 14t34 -14 q-2 2 -12.5 12t-12.5 13t-10 11.5t-10 13.5t-6 13.5t-5.5 16.5t-1.5 18q0 38 28 68q3 3 16.5 18t19 20.5t18.5 16.5t22 15.5t22 9t26 4.5q40 0 68 -28l408 -408q28 -28 28 -68q0 -13 -4.5 -26t-9 -22t-15.5 -22t-16.5 -18.5t-20.5 -19t-18 -16.5q-30 -28 -68 -28 q-10 0 -18 1.5t-16.5 5.5t-13.5 6t-13.5 10t-11.5 10t-13 12.5t-12 12.5q14 -14 14 -34t-14 -34l-126 -126l256 -256q43 43 96 43q52 0 91 -37l363 -363q37 -39 37 -91z" /> -<glyph unicode="&#xf0e4;" horiz-adv-x="1792" d="M384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM576 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1004 351l101 382q6 26 -7.5 48.5t-38.5 29.5 t-48 -6.5t-30 -39.5l-101 -382q-60 -5 -107 -43.5t-63 -98.5q-20 -77 20 -146t117 -89t146 20t89 117q16 60 -6 117t-72 91zM1664 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 1024q0 53 -37.5 90.5 t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1472 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 384q0 -261 -141 -483q-19 -29 -54 -29h-1402q-35 0 -54 29 q-141 221 -141 483q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" /> -<glyph unicode="&#xf0e5;" horiz-adv-x="1792" d="M896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640 q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 174 120 321.5 t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" /> -<glyph unicode="&#xf0e6;" horiz-adv-x="1792" d="M704 1152q-153 0 -286 -52t-211.5 -141t-78.5 -191q0 -82 53 -158t149 -132l97 -56l-35 -84q34 20 62 39l44 31l53 -10q78 -14 153 -14q153 0 286 52t211.5 141t78.5 191t-78.5 191t-211.5 141t-286 52zM704 1280q191 0 353.5 -68.5t256.5 -186.5t94 -257t-94 -257 t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224q0 139 94 257t256.5 186.5 t353.5 68.5zM1526 111q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129 q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230q0 -120 -71 -224.5t-195 -176.5z" /> -<glyph unicode="&#xf0e7;" horiz-adv-x="896" d="M885 970q18 -20 7 -44l-540 -1157q-13 -25 -42 -25q-4 0 -14 2q-17 5 -25.5 19t-4.5 30l197 808l-406 -101q-4 -1 -12 -1q-18 0 -31 11q-18 15 -13 39l201 825q4 14 16 23t28 9h328q19 0 32 -12.5t13 -29.5q0 -8 -5 -18l-171 -463l396 98q8 2 12 2q19 0 34 -15z" /> -<glyph unicode="&#xf0e8;" horiz-adv-x="1792" d="M1792 288v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192q0 52 38 90t90 38h512v192h-96q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-96v-192h512q52 0 90 -38t38 -90v-192h96q40 0 68 -28t28 -68 z" /> -<glyph unicode="&#xf0e9;" horiz-adv-x="1664" d="M896 708v-580q0 -104 -76 -180t-180 -76t-180 76t-76 180q0 26 19 45t45 19t45 -19t19 -45q0 -50 39 -89t89 -39t89 39t39 89v580q33 11 64 11t64 -11zM1664 681q0 -13 -9.5 -22.5t-22.5 -9.5q-11 0 -23 10q-49 46 -93 69t-102 23q-68 0 -128 -37t-103 -97 q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -28 -17q-18 0 -29 17q-4 6 -14.5 24t-17.5 28q-43 60 -102.5 97t-127.5 37t-127.5 -37t-102.5 -97q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -29 -17q-17 0 -28 17q-4 6 -14.5 24t-17.5 28q-43 60 -103 97t-128 37q-58 0 -102 -23t-93 -69 q-12 -10 -23 -10q-13 0 -22.5 9.5t-9.5 22.5q0 5 1 7q45 183 172.5 319.5t298 204.5t360.5 68q140 0 274.5 -40t246.5 -113.5t194.5 -187t115.5 -251.5q1 -2 1 -7zM896 1408v-98q-42 2 -64 2t-64 -2v98q0 26 19 45t45 19t45 -19t19 -45z" /> -<glyph unicode="&#xf0ea;" horiz-adv-x="1792" d="M768 -128h896v640h-416q-40 0 -68 28t-28 68v416h-384v-1152zM1024 1312v64q0 13 -9.5 22.5t-22.5 9.5h-704q-13 0 -22.5 -9.5t-9.5 -22.5v-64q0 -13 9.5 -22.5t22.5 -9.5h704q13 0 22.5 9.5t9.5 22.5zM1280 640h299l-299 299v-299zM1792 512v-672q0 -40 -28 -68t-68 -28 h-960q-40 0 -68 28t-28 68v160h-544q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1088q40 0 68 -28t28 -68v-328q21 -13 36 -28l408 -408q28 -28 48 -76t20 -88z" /> -<glyph unicode="&#xf0eb;" horiz-adv-x="1024" d="M736 960q0 -13 -9.5 -22.5t-22.5 -9.5t-22.5 9.5t-9.5 22.5q0 46 -54 71t-106 25q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5q50 0 99.5 -16t87 -54t37.5 -90zM896 960q0 72 -34.5 134t-90 101.5t-123 62t-136.5 22.5t-136.5 -22.5t-123 -62t-90 -101.5t-34.5 -134 q0 -101 68 -180q10 -11 30.5 -33t30.5 -33q128 -153 141 -298h228q13 145 141 298q10 11 30.5 33t30.5 33q68 79 68 180zM1024 960q0 -155 -103 -268q-45 -49 -74.5 -87t-59.5 -95.5t-34 -107.5q47 -28 47 -82q0 -37 -25 -64q25 -27 25 -64q0 -52 -45 -81q13 -23 13 -47 q0 -46 -31.5 -71t-77.5 -25q-20 -44 -60 -70t-87 -26t-87 26t-60 70q-46 0 -77.5 25t-31.5 71q0 24 13 47q-45 29 -45 81q0 37 25 64q-25 27 -25 64q0 54 47 82q-4 50 -34 107.5t-59.5 95.5t-74.5 87q-103 113 -103 268q0 99 44.5 184.5t117 142t164 89t186.5 32.5 t186.5 -32.5t164 -89t117 -142t44.5 -184.5z" /> -<glyph unicode="&#xf0ec;" horiz-adv-x="1792" d="M1792 352v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5q-12 0 -24 10l-319 320q-9 9 -9 22q0 14 9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h1376q13 0 22.5 -9.5t9.5 -22.5zM1792 896q0 -14 -9 -23l-320 -320q-9 -9 -23 -9 q-13 0 -22.5 9.5t-9.5 22.5v192h-1376q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1376v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" /> -<glyph unicode="&#xf0ed;" horiz-adv-x="1920" d="M1280 608q0 14 -9 23t-23 9h-224v352q0 13 -9.5 22.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-352h-224q-13 0 -22.5 -9.5t-9.5 -22.5q0 -14 9 -23l352 -352q9 -9 23 -9t23 9l351 351q10 12 10 24zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" /> -<glyph unicode="&#xf0ee;" horiz-adv-x="1920" d="M1280 672q0 14 -9 23l-352 352q-9 9 -23 9t-23 -9l-351 -351q-10 -12 -10 -24q0 -14 9 -23t23 -9h224v-352q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5v352h224q13 0 22.5 9.5t9.5 22.5zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" /> -<glyph unicode="&#xf0f0;" horiz-adv-x="1408" d="M384 192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 68 5.5 131t24 138t47.5 132.5t81 103t120 60.5q-22 -52 -22 -120v-203q-58 -20 -93 -70t-35 -111q0 -80 56 -136t136 -56 t136 56t56 136q0 61 -35.5 111t-92.5 70v203q0 62 25 93q132 -104 295 -104t295 104q25 -31 25 -93v-64q-106 0 -181 -75t-75 -181v-89q-32 -29 -32 -71q0 -40 28 -68t68 -28t68 28t28 68q0 42 -32 71v89q0 52 38 90t90 38t90 -38t38 -90v-89q-32 -29 -32 -71q0 -40 28 -68 t68 -28t68 28t28 68q0 42 -32 71v89q0 68 -34.5 127.5t-93.5 93.5q0 10 0.5 42.5t0 48t-2.5 41.5t-7 47t-13 40q68 -15 120 -60.5t81 -103t47.5 -132.5t24 -138t5.5 -131zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5 t271.5 -112.5t112.5 -271.5z" /> -<glyph unicode="&#xf0f1;" horiz-adv-x="1408" d="M1280 832q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 832q0 -62 -35.5 -111t-92.5 -70v-395q0 -159 -131.5 -271.5t-316.5 -112.5t-316.5 112.5t-131.5 271.5v132q-164 20 -274 128t-110 252v512q0 26 19 45t45 19q6 0 16 -2q17 30 47 48 t65 18q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5q-33 0 -64 18v-402q0 -106 94 -181t226 -75t226 75t94 181v402q-31 -18 -64 -18q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5q35 0 65 -18t47 -48q10 2 16 2q26 0 45 -19t19 -45v-512q0 -144 -110 -252 t-274 -128v-132q0 -106 94 -181t226 -75t226 75t94 181v395q-57 21 -92.5 70t-35.5 111q0 80 56 136t136 56t136 -56t56 -136z" /> -<glyph unicode="&#xf0f2;" horiz-adv-x="1792" d="M640 1152h512v128h-512v-128zM288 1152v-1280h-64q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h64zM1408 1152v-1280h-1024v1280h128v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h128zM1792 928v-832q0 -92 -66 -158t-158 -66h-64v1280h64q92 0 158 -66 t66 -158z" /> -<glyph unicode="&#xf0f3;" horiz-adv-x="1792" d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5 t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" /> -<glyph unicode="&#xf0f4;" horiz-adv-x="1920" d="M1664 896q0 80 -56 136t-136 56h-64v-384h64q80 0 136 56t56 136zM0 128h1792q0 -106 -75 -181t-181 -75h-1280q-106 0 -181 75t-75 181zM1856 896q0 -159 -112.5 -271.5t-271.5 -112.5h-64v-32q0 -92 -66 -158t-158 -66h-704q-92 0 -158 66t-66 158v736q0 26 19 45 t45 19h1152q159 0 271.5 -112.5t112.5 -271.5z" /> -<glyph unicode="&#xf0f5;" horiz-adv-x="1408" d="M640 1472v-640q0 -61 -35.5 -111t-92.5 -70v-779q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v779q-57 20 -92.5 70t-35.5 111v640q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45 t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45zM1408 1472v-1600q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v512h-224q-13 0 -22.5 9.5t-9.5 22.5v800q0 132 94 226t226 94h256q26 0 45 -19t19 -45z" /> -<glyph unicode="&#xf0f6;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M384 736q0 14 9 23t23 9h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64zM1120 512q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704zM1120 256q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704 q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704z" /> -<glyph unicode="&#xf0f7;" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1536h-1152v-1536h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM1408 1472v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280q26 0 45 -19t19 -45z" /> -<glyph unicode="&#xf0f8;" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1152h-256v-32q0 -40 -28 -68t-68 -28h-448q-40 0 -68 28t-28 68v32h-256v-1152h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM896 1056v320q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-96h-128v96q0 13 -9.5 22.5 t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v96h128v-96q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1408 1088v-1280q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1280q0 26 19 45t45 19h320 v288q0 40 28 68t68 28h448q40 0 68 -28t28 -68v-288h320q26 0 45 -19t19 -45z" /> -<glyph unicode="&#xf0f9;" horiz-adv-x="1920" d="M640 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM256 640h384v256h-158q-14 -2 -22 -9l-195 -195q-7 -12 -9 -22v-30zM1536 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1664 800v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM1920 1344v-1152 q0 -26 -19 -45t-45 -19h-192q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-128q-26 0 -45 19t-19 45t19 45t45 19v416q0 26 13 58t32 51l198 198q19 19 51 32t58 13h160v320q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" /> -<glyph unicode="&#xf0fa;" horiz-adv-x="1792" d="M1280 416v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM640 1152h512v128h-512v-128zM256 1152v-1280h-32 q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h32zM1440 1152v-1280h-1088v1280h160v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h160zM1792 928v-832q0 -92 -66 -158t-158 -66h-32v1280h32q92 0 158 -66t66 -158z" /> -<glyph unicode="&#xf0fb;" horiz-adv-x="1920" d="M1920 576q-1 -32 -288 -96l-352 -32l-224 -64h-64l-293 -352h69q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-96h-160h-64v32h64v416h-160l-192 -224h-96l-32 32v192h32v32h128v8l-192 24v128l192 24v8h-128v32h-32v192l32 32h96l192 -224h160v416h-64v32h64h160h96 q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-69l293 -352h64l224 -64l352 -32q261 -58 287 -93z" /> -<glyph unicode="&#xf0fc;" horiz-adv-x="1664" d="M640 640v384h-256v-256q0 -53 37.5 -90.5t90.5 -37.5h128zM1664 192v-192h-1152v192l128 192h-128q-159 0 -271.5 112.5t-112.5 271.5v320l-64 64l32 128h480l32 128h960l32 -192l-64 -32v-800z" /> -<glyph unicode="&#xf0fd;" d="M1280 192v896q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-512v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-896q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h512v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="&#xf0fe;" d="M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="&#xf100;" horiz-adv-x="1024" d="M627 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23zM1011 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23z" /> -<glyph unicode="&#xf101;" horiz-adv-x="1024" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM979 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23 l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" /> -<glyph unicode="&#xf102;" horiz-adv-x="1152" d="M1075 224q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM1075 608q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393 q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" /> -<glyph unicode="&#xf103;" horiz-adv-x="1152" d="M1075 672q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23zM1075 1056q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" /> -<glyph unicode="&#xf104;" horiz-adv-x="640" d="M627 992q0 -13 -10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" /> -<glyph unicode="&#xf105;" horiz-adv-x="640" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" /> -<glyph unicode="&#xf106;" horiz-adv-x="1152" d="M1075 352q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" /> -<glyph unicode="&#xf107;" horiz-adv-x="1152" d="M1075 800q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" /> -<glyph unicode="&#xf108;" horiz-adv-x="1920" d="M1792 544v832q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1376v-1088q0 -66 -47 -113t-113 -47h-544q0 -37 16 -77.5t32 -71t16 -43.5q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19 t-19 45q0 14 16 44t32 70t16 78h-544q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" /> -<glyph unicode="&#xf109;" horiz-adv-x="1920" d="M416 256q-66 0 -113 47t-47 113v704q0 66 47 113t113 47h1088q66 0 113 -47t47 -113v-704q0 -66 -47 -113t-113 -47h-1088zM384 1120v-704q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5v704q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5z M1760 192h160v-96q0 -40 -47 -68t-113 -28h-1600q-66 0 -113 28t-47 68v96h160h1600zM1040 96q16 0 16 16t-16 16h-160q-16 0 -16 -16t16 -16h160z" /> -<glyph unicode="&#xf10a;" horiz-adv-x="1152" d="M640 128q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1024 288v960q0 13 -9.5 22.5t-22.5 9.5h-832q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h832q13 0 22.5 9.5t9.5 22.5zM1152 1248v-1088q0 -66 -47 -113t-113 -47h-832 q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h832q66 0 113 -47t47 -113z" /> -<glyph unicode="&#xf10b;" horiz-adv-x="768" d="M464 128q0 33 -23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5t56.5 23.5t23.5 56.5zM672 288v704q0 13 -9.5 22.5t-22.5 9.5h-512q-13 0 -22.5 -9.5t-9.5 -22.5v-704q0 -13 9.5 -22.5t22.5 -9.5h512q13 0 22.5 9.5t9.5 22.5zM480 1136 q0 16 -16 16h-160q-16 0 -16 -16t16 -16h160q16 0 16 16zM768 1152v-1024q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v1024q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" /> -<glyph unicode="&#xf10c;" d="M768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103 t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf10d;" horiz-adv-x="1664" d="M768 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z M1664 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z" /> -<glyph unicode="&#xf10e;" horiz-adv-x="1664" d="M768 1216v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136zM1664 1216 v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136z" /> -<glyph unicode="&#xf110;" horiz-adv-x="1792" d="M526 142q0 -53 -37.5 -90.5t-90.5 -37.5q-52 0 -90 38t-38 90q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1024 -64q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM320 640q0 -53 -37.5 -90.5t-90.5 -37.5 t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1522 142q0 -52 -38 -90t-90 -38q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM558 1138q0 -66 -47 -113t-113 -47t-113 47t-47 113t47 113t113 47t113 -47t47 -113z M1728 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1088 1344q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1618 1138q0 -93 -66 -158.5t-158 -65.5q-93 0 -158.5 65.5t-65.5 158.5 q0 92 65.5 158t158.5 66q92 0 158 -66t66 -158z" /> -<glyph unicode="&#xf111;" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf112;" horiz-adv-x="1792" d="M1792 416q0 -166 -127 -451q-3 -7 -10.5 -24t-13.5 -30t-13 -22q-12 -17 -28 -17q-15 0 -23.5 10t-8.5 25q0 9 2.5 26.5t2.5 23.5q5 68 5 123q0 101 -17.5 181t-48.5 138.5t-80 101t-105.5 69.5t-133 42.5t-154 21.5t-175.5 6h-224v-256q0 -26 -19 -45t-45 -19t-45 19 l-512 512q-19 19 -19 45t19 45l512 512q19 19 45 19t45 -19t19 -45v-256h224q713 0 875 -403q53 -134 53 -333z" /> -<glyph unicode="&#xf113;" horiz-adv-x="1664" d="M640 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1280 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1440 320 q0 120 -69 204t-187 84q-41 0 -195 -21q-71 -11 -157 -11t-157 11q-152 21 -195 21q-118 0 -187 -84t-69 -204q0 -88 32 -153.5t81 -103t122 -60t140 -29.5t149 -7h168q82 0 149 7t140 29.5t122 60t81 103t32 153.5zM1664 496q0 -207 -61 -331q-38 -77 -105.5 -133t-141 -86 t-170 -47.5t-171.5 -22t-167 -4.5q-78 0 -142 3t-147.5 12.5t-152.5 30t-137 51.5t-121 81t-86 115q-62 123 -62 331q0 237 136 396q-27 82 -27 170q0 116 51 218q108 0 190 -39.5t189 -123.5q147 35 309 35q148 0 280 -32q105 82 187 121t189 39q51 -102 51 -218 q0 -87 -27 -168q136 -160 136 -398z" /> -<glyph unicode="&#xf114;" horiz-adv-x="1664" d="M1536 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68v-960q0 -40 28 -68t68 -28h1216q40 0 68 28t28 68zM1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320 q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" /> -<glyph unicode="&#xf115;" horiz-adv-x="1920" d="M1781 605q0 35 -53 35h-1088q-40 0 -85.5 -21.5t-71.5 -52.5l-294 -363q-18 -24 -18 -40q0 -35 53 -35h1088q40 0 86 22t71 53l294 363q18 22 18 39zM640 768h768v160q0 40 -28 68t-68 28h-576q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68 v-853l256 315q44 53 116 87.5t140 34.5zM1909 605q0 -62 -46 -120l-295 -363q-43 -53 -116 -87.5t-140 -34.5h-1088q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158v-160h192q54 0 99 -24.5t67 -70.5q15 -32 15 -68z " /> -<glyph unicode="&#xf116;" horiz-adv-x="1792" /> -<glyph unicode="&#xf117;" horiz-adv-x="1792" /> -<glyph unicode="&#xf118;" d="M1134 461q-37 -121 -138 -195t-228 -74t-228 74t-138 195q-8 25 4 48.5t38 31.5q25 8 48.5 -4t31.5 -38q25 -80 92.5 -129.5t151.5 -49.5t151.5 49.5t92.5 129.5q8 26 32 38t49 4t37 -31.5t4 -48.5zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5 t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf119;" d="M1134 307q8 -25 -4 -48.5t-37 -31.5t-49 4t-32 38q-25 80 -92.5 129.5t-151.5 49.5t-151.5 -49.5t-92.5 -129.5q-8 -26 -31.5 -38t-48.5 -4q-26 8 -38 31.5t-4 48.5q37 121 138 195t228 74t228 -74t138 -195zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204 t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf11a;" d="M1152 448q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h640q26 0 45 -19t19 -45zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf11b;" horiz-adv-x="1920" d="M832 448v128q0 14 -9 23t-23 9h-192v192q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-192h-192q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h192v-192q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v192h192q14 0 23 9t9 23zM1408 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1920 512q0 -212 -150 -362t-362 -150q-192 0 -338 128h-220q-146 -128 -338 -128q-212 0 -362 150 t-150 362t150 362t362 150h896q212 0 362 -150t150 -362z" /> -<glyph unicode="&#xf11c;" horiz-adv-x="1920" d="M384 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM512 624v-96q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h224q16 0 16 -16zM384 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 368v-96q0 -16 -16 -16 h-864q-16 0 -16 16v96q0 16 16 16h864q16 0 16 -16zM768 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM640 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1024 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16 h96q16 0 16 -16zM896 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1280 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1152 880v-96 q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 880v-352q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h112v240q0 16 16 16h96q16 0 16 -16zM1792 128v896h-1664v-896 h1664zM1920 1024v-896q0 -53 -37.5 -90.5t-90.5 -37.5h-1664q-53 0 -90.5 37.5t-37.5 90.5v896q0 53 37.5 90.5t90.5 37.5h1664q53 0 90.5 -37.5t37.5 -90.5z" /> -<glyph unicode="&#xf11d;" horiz-adv-x="1792" d="M1664 491v616q-169 -91 -306 -91q-82 0 -145 32q-100 49 -184 76.5t-178 27.5q-173 0 -403 -127v-599q245 113 433 113q55 0 103.5 -7.5t98 -26t77 -31t82.5 -39.5l28 -14q44 -22 101 -22q120 0 293 92zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9 h-64q-14 0 -23 9t-9 23v1266q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102 q-15 -9 -33 -9q-16 0 -32 8q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" /> -<glyph unicode="&#xf11e;" horiz-adv-x="1792" d="M832 536v192q-181 -16 -384 -117v-185q205 96 384 110zM832 954v197q-172 -8 -384 -126v-189q215 111 384 118zM1664 491v184q-235 -116 -384 -71v224q-20 6 -39 15q-5 3 -33 17t-34.5 17t-31.5 15t-34.5 15.5t-32.5 13t-36 12.5t-35 8.5t-39.5 7.5t-39.5 4t-44 2 q-23 0 -49 -3v-222h19q102 0 192.5 -29t197.5 -82q19 -9 39 -15v-188q42 -17 91 -17q120 0 293 92zM1664 918v189q-169 -91 -306 -91q-45 0 -78 8v-196q148 -42 384 90zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v1266 q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102q-15 -9 -33 -9q-16 0 -32 8 q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" /> -<glyph unicode="&#xf120;" horiz-adv-x="1664" d="M585 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23zM1664 96v-64q0 -14 -9 -23t-23 -9h-960q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h960q14 0 23 -9 t9 -23z" /> -<glyph unicode="&#xf121;" horiz-adv-x="1920" d="M617 137l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23zM1208 1204l-373 -1291q-4 -13 -15.5 -19.5t-23.5 -2.5l-62 17q-13 4 -19.5 15.5t-2.5 24.5 l373 1291q4 13 15.5 19.5t23.5 2.5l62 -17q13 -4 19.5 -15.5t2.5 -24.5zM1865 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23z" /> -<glyph unicode="&#xf122;" horiz-adv-x="1792" d="M640 454v-70q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-69l-397 -398q-19 -19 -19 -45t19 -45zM1792 416q0 -58 -17 -133.5t-38.5 -138t-48 -125t-40.5 -90.5l-20 -40q-8 -17 -28 -17q-6 0 -9 1 q-25 8 -23 34q43 400 -106 565q-64 71 -170.5 110.5t-267.5 52.5v-251q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-262q411 -28 599 -221q169 -173 169 -509z" /> -<glyph unicode="&#xf123;" horiz-adv-x="1664" d="M1186 579l257 250l-356 52l-66 10l-30 60l-159 322v-963l59 -31l318 -168l-60 355l-12 66zM1638 841l-363 -354l86 -500q5 -33 -6 -51.5t-34 -18.5q-17 0 -40 12l-449 236l-449 -236q-23 -12 -40 -12q-23 0 -34 18.5t-6 51.5l86 500l-364 354q-32 32 -23 59.5t54 34.5 l502 73l225 455q20 41 49 41q28 0 49 -41l225 -455l502 -73q45 -7 54 -34.5t-24 -59.5z" /> -<glyph unicode="&#xf124;" horiz-adv-x="1408" d="M1401 1187l-640 -1280q-17 -35 -57 -35q-5 0 -15 2q-22 5 -35.5 22.5t-13.5 39.5v576h-576q-22 0 -39.5 13.5t-22.5 35.5t4 42t29 30l1280 640q13 7 29 7q27 0 45 -19q15 -14 18.5 -34.5t-6.5 -39.5z" /> -<glyph unicode="&#xf125;" horiz-adv-x="1664" d="M557 256h595v595zM512 301l595 595h-595v-595zM1664 224v-192q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v224h-864q-14 0 -23 9t-9 23v864h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224v224q0 14 9 23t23 9h192q14 0 23 -9t9 -23 v-224h851l246 247q10 9 23 9t23 -9q9 -10 9 -23t-9 -23l-247 -246v-851h224q14 0 23 -9t9 -23z" /> -<glyph unicode="&#xf126;" horiz-adv-x="1024" d="M288 64q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM288 1216q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM928 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1024 1088q0 -52 -26 -96.5t-70 -69.5 q-2 -287 -226 -414q-68 -38 -203 -81q-128 -40 -169.5 -71t-41.5 -100v-26q44 -25 70 -69.5t26 -96.5q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 52 26 96.5t70 69.5v820q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136q0 -52 -26 -96.5t-70 -69.5v-497 q54 26 154 57q55 17 87.5 29.5t70.5 31t59 39.5t40.5 51t28 69.5t8.5 91.5q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136z" /> -<glyph unicode="&#xf127;" horiz-adv-x="1664" d="M439 265l-256 -256q-10 -9 -23 -9q-12 0 -23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23zM608 224v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM384 448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23t9 23t23 9h320 q14 0 23 -9t9 -23zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-334 335q-21 21 -42 56l239 18l273 -274q27 -27 68 -27.5t68 26.5l147 146q28 28 28 67q0 40 -28 68l-274 275l18 239q35 -21 56 -42l336 -336q84 -86 84 -204zM1031 1044l-239 -18 l-273 274q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l274 -274l-18 -240q-35 21 -56 42l-336 336q-84 86 -84 204q0 120 85 203l147 146q83 83 203 83q121 0 204 -85l334 -335q21 -21 42 -56zM1664 960q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9 t-9 23t9 23t23 9h320q14 0 23 -9t9 -23zM1120 1504v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM1527 1353l-256 -256q-11 -9 -23 -9t-23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" /> -<glyph unicode="&#xf128;" horiz-adv-x="1024" d="M704 280v-240q0 -16 -12 -28t-28 -12h-240q-16 0 -28 12t-12 28v240q0 16 12 28t28 12h240q16 0 28 -12t12 -28zM1020 880q0 -54 -15.5 -101t-35 -76.5t-55 -59.5t-57.5 -43.5t-61 -35.5q-41 -23 -68.5 -65t-27.5 -67q0 -17 -12 -32.5t-28 -15.5h-240q-15 0 -25.5 18.5 t-10.5 37.5v45q0 83 65 156.5t143 108.5q59 27 84 56t25 76q0 42 -46.5 74t-107.5 32q-65 0 -108 -29q-35 -25 -107 -115q-13 -16 -31 -16q-12 0 -25 8l-164 125q-13 10 -15.5 25t5.5 28q160 266 464 266q80 0 161 -31t146 -83t106 -127.5t41 -158.5z" /> -<glyph unicode="&#xf129;" horiz-adv-x="640" d="M640 192v-128q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64v384h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-576h64q26 0 45 -19t19 -45zM512 1344v-192q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v192 q0 26 19 45t45 19h256q26 0 45 -19t19 -45z" /> -<glyph unicode="&#xf12a;" horiz-adv-x="640" d="M512 288v-224q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v224q0 26 19 45t45 19h256q26 0 45 -19t19 -45zM542 1344l-28 -768q-1 -26 -20.5 -45t-45.5 -19h-256q-26 0 -45.5 19t-20.5 45l-28 768q-1 26 17.5 45t44.5 19h320q26 0 44.5 -19t17.5 -45z" /> -<glyph unicode="&#xf12b;" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1534 846v-206h-514l-3 27 q-4 28 -4 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q83 65 188 65q110 0 178 -59.5t68 -158.5q0 -56 -24.5 -103t-62 -76.5t-81.5 -58.5t-82 -50.5t-65.5 -51.5t-30.5 -63h232v80 h126z" /> -<glyph unicode="&#xf12c;" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1536 -50v-206h-514l-4 27 q-3 45 -3 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q80 65 188 65q110 0 178 -59.5t68 -158.5q0 -66 -34.5 -118.5t-84 -86t-99.5 -62.5t-87 -63t-41 -73h232v80h126z" /> -<glyph unicode="&#xf12d;" horiz-adv-x="1920" d="M896 128l336 384h-768l-336 -384h768zM1909 1205q15 -34 9.5 -71.5t-30.5 -65.5l-896 -1024q-38 -44 -96 -44h-768q-38 0 -69.5 20.5t-47.5 54.5q-15 34 -9.5 71.5t30.5 65.5l896 1024q38 44 96 44h768q38 0 69.5 -20.5t47.5 -54.5z" /> -<glyph unicode="&#xf12e;" horiz-adv-x="1664" d="M1664 438q0 -81 -44.5 -135t-123.5 -54q-41 0 -77.5 17.5t-59 38t-56.5 38t-71 17.5q-110 0 -110 -124q0 -39 16 -115t15 -115v-5q-22 0 -33 -1q-34 -3 -97.5 -11.5t-115.5 -13.5t-98 -5q-61 0 -103 26.5t-42 83.5q0 37 17.5 71t38 56.5t38 59t17.5 77.5q0 79 -54 123.5 t-135 44.5q-84 0 -143 -45.5t-59 -127.5q0 -43 15 -83t33.5 -64.5t33.5 -53t15 -50.5q0 -45 -46 -89q-37 -35 -117 -35q-95 0 -245 24q-9 2 -27.5 4t-27.5 4l-13 2q-1 0 -3 1q-2 0 -2 1v1024q2 -1 17.5 -3.5t34 -5t21.5 -3.5q150 -24 245 -24q80 0 117 35q46 44 46 89 q0 22 -15 50.5t-33.5 53t-33.5 64.5t-15 83q0 82 59 127.5t144 45.5q80 0 134 -44.5t54 -123.5q0 -41 -17.5 -77.5t-38 -59t-38 -56.5t-17.5 -71q0 -57 42 -83.5t103 -26.5q64 0 180 15t163 17v-2q-1 -2 -3.5 -17.5t-5 -34t-3.5 -21.5q-24 -150 -24 -245q0 -80 35 -117 q44 -46 89 -46q22 0 50.5 15t53 33.5t64.5 33.5t83 15q82 0 127.5 -59t45.5 -143z" /> -<glyph unicode="&#xf130;" horiz-adv-x="1152" d="M1152 832v-128q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-217 24 -364.5 187.5t-147.5 384.5v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -185 131.5 -316.5t316.5 -131.5 t316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45zM896 1216v-512q0 -132 -94 -226t-226 -94t-226 94t-94 226v512q0 132 94 226t226 94t226 -94t94 -226z" /> -<glyph unicode="&#xf131;" horiz-adv-x="1408" d="M271 591l-101 -101q-42 103 -42 214v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -53 15 -113zM1385 1193l-361 -361v-128q0 -132 -94 -226t-226 -94q-55 0 -109 19l-96 -96q97 -51 205 -51q185 0 316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45v-128 q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-125 13 -235 81l-254 -254q-10 -10 -23 -10t-23 10l-82 82q-10 10 -10 23t10 23l1234 1234q10 10 23 10t23 -10l82 -82q10 -10 10 -23 t-10 -23zM1005 1325l-621 -621v512q0 132 94 226t226 94q102 0 184.5 -59t116.5 -152z" /> -<glyph unicode="&#xf132;" horiz-adv-x="1280" d="M1088 576v640h-448v-1137q119 63 213 137q235 184 235 360zM1280 1344v-768q0 -86 -33.5 -170.5t-83 -150t-118 -127.5t-126.5 -103t-121 -77.5t-89.5 -49.5t-42.5 -20q-12 -6 -26 -6t-26 6q-16 7 -42.5 20t-89.5 49.5t-121 77.5t-126.5 103t-118 127.5t-83 150 t-33.5 170.5v768q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" /> -<glyph unicode="&#xf133;" horiz-adv-x="1664" d="M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280 q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" /> -<glyph unicode="&#xf134;" horiz-adv-x="1408" d="M512 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 1376v-320q0 -16 -12 -25q-8 -7 -20 -7q-4 0 -7 1l-448 96q-11 2 -18 11t-7 20h-256v-102q111 -23 183.5 -111t72.5 -203v-800q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v800 q0 106 62.5 190.5t161.5 114.5v111h-32q-59 0 -115 -23.5t-91.5 -53t-66 -66.5t-40.5 -53.5t-14 -24.5q-17 -35 -57 -35q-16 0 -29 7q-23 12 -31.5 37t3.5 49q5 10 14.5 26t37.5 53.5t60.5 70t85 67t108.5 52.5q-25 42 -25 86q0 66 47 113t113 47t113 -47t47 -113 q0 -33 -14 -64h302q0 11 7 20t18 11l448 96q3 1 7 1q12 0 20 -7q12 -9 12 -25z" /> -<glyph unicode="&#xf135;" horiz-adv-x="1664" d="M1440 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1664 1376q0 -249 -75.5 -430.5t-253.5 -360.5q-81 -80 -195 -176l-20 -379q-2 -16 -16 -26l-384 -224q-7 -4 -16 -4q-12 0 -23 9l-64 64q-13 14 -8 32l85 276l-281 281l-276 -85q-3 -1 -9 -1 q-14 0 -23 9l-64 64q-17 19 -5 39l224 384q10 14 26 16l379 20q96 114 176 195q188 187 358 258t431 71q14 0 24 -9.5t10 -22.5z" /> -<glyph unicode="&#xf136;" horiz-adv-x="1792" d="M1745 763l-164 -763h-334l178 832q13 56 -15 88q-27 33 -83 33h-169l-204 -953h-334l204 953h-286l-204 -953h-334l204 953l-153 327h1276q101 0 189.5 -40.5t147.5 -113.5q60 -73 81 -168.5t0 -194.5z" /> -<glyph unicode="&#xf137;" d="M909 141l102 102q19 19 19 45t-19 45l-307 307l307 307q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf138;" d="M717 141l454 454q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l307 -307l-307 -307q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf139;" d="M1165 397l102 102q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l307 307l307 -307q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf13a;" d="M813 237l454 454q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-307 -307l-307 307q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf13b;" horiz-adv-x="1408" d="M1130 939l16 175h-884l47 -534h612l-22 -228l-197 -53l-196 53l-13 140h-175l22 -278l362 -100h4v1l359 99l50 544h-644l-15 181h674zM0 1408h1408l-128 -1438l-578 -162l-574 162z" /> -<glyph unicode="&#xf13c;" horiz-adv-x="1792" d="M275 1408h1505l-266 -1333l-804 -267l-698 267l71 356h297l-29 -147l422 -161l486 161l68 339h-1208l58 297h1209l38 191h-1208z" /> -<glyph unicode="&#xf13d;" horiz-adv-x="1792" d="M960 1280q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1792 352v-352q0 -22 -20 -30q-8 -2 -12 -2q-13 0 -23 9l-93 93q-119 -143 -318.5 -226.5t-429.5 -83.5t-429.5 83.5t-318.5 226.5l-93 -93q-9 -9 -23 -9q-4 0 -12 2q-20 8 -20 30v352 q0 14 9 23t23 9h352q22 0 30 -20q8 -19 -7 -35l-100 -100q67 -91 189.5 -153.5t271.5 -82.5v647h-192q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h192v163q-58 34 -93 92.5t-35 128.5q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128.5t-93 -92.5v-163h192q26 0 45 -19 t19 -45v-128q0 -26 -19 -45t-45 -19h-192v-647q149 20 271.5 82.5t189.5 153.5l-100 100q-15 16 -7 35q8 20 30 20h352q14 0 23 -9t9 -23z" /> -<glyph unicode="&#xf13e;" horiz-adv-x="1152" d="M1056 768q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v320q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45q0 106 -75 181t-181 75t-181 -75t-75 -181 v-320h736z" /> -<glyph unicode="&#xf140;" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM1152 640q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM1280 640q0 -212 -150 -362t-362 -150t-362 150 t-150 362t150 362t362 150t362 -150t150 -362zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf141;" horiz-adv-x="1408" d="M384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM896 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM1408 800v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" /> -<glyph unicode="&#xf142;" horiz-adv-x="384" d="M384 288v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 1312v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" /> -<glyph unicode="&#xf143;" d="M512 256q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM863 162q-13 232 -177 396t-396 177q-14 1 -24 -9t-10 -23v-128q0 -13 8.5 -22t21.5 -10q154 -11 264 -121t121 -264q1 -13 10 -21.5t22 -8.5h128q13 0 23 10 t9 24zM1247 161q-5 154 -56 297.5t-139.5 260t-205 205t-260 139.5t-297.5 56q-14 1 -23 -9q-10 -10 -10 -23v-128q0 -13 9 -22t22 -10q204 -7 378 -111.5t278.5 -278.5t111.5 -378q1 -13 10 -22t22 -9h128q13 0 23 10q11 9 9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="&#xf144;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1152 585q32 18 32 55t-32 55l-544 320q-31 19 -64 1q-32 -19 -32 -56v-640q0 -37 32 -56 q16 -8 32 -8q17 0 32 9z" /> -<glyph unicode="&#xf145;" horiz-adv-x="1792" d="M1024 1084l316 -316l-572 -572l-316 316zM813 105l618 618q19 19 19 45t-19 45l-362 362q-18 18 -45 18t-45 -18l-618 -618q-19 -19 -19 -45t19 -45l362 -362q18 -18 45 -18t45 18zM1702 742l-907 -908q-37 -37 -90.5 -37t-90.5 37l-126 126q56 56 56 136t-56 136 t-136 56t-136 -56l-125 126q-37 37 -37 90.5t37 90.5l907 906q37 37 90.5 37t90.5 -37l125 -125q-56 -56 -56 -136t56 -136t136 -56t136 56l126 -125q37 -37 37 -90.5t-37 -90.5z" /> -<glyph unicode="&#xf146;" d="M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" /> -<glyph unicode="&#xf147;" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h832q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5 t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="&#xf148;" horiz-adv-x="1024" d="M1018 933q-18 -37 -58 -37h-192v-864q0 -14 -9 -23t-23 -9h-704q-21 0 -29 18q-8 20 4 35l160 192q9 11 25 11h320v640h-192q-40 0 -58 37q-17 37 9 68l320 384q18 22 49 22t49 -22l320 -384q27 -32 9 -68z" /> -<glyph unicode="&#xf149;" horiz-adv-x="1024" d="M32 1280h704q13 0 22.5 -9.5t9.5 -23.5v-863h192q40 0 58 -37t-9 -69l-320 -384q-18 -22 -49 -22t-49 22l-320 384q-26 31 -9 69q18 37 58 37h192v640h-320q-14 0 -25 11l-160 192q-13 14 -4 34q9 19 29 19z" /> -<glyph unicode="&#xf14a;" d="M685 237l614 614q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-467 -467l-211 211q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l358 -358q19 -19 45 -19t45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5 t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="&#xf14b;" d="M404 428l152 -152l-52 -52h-56v96h-96v56zM818 818q14 -13 -3 -30l-291 -291q-17 -17 -30 -3q-14 13 3 30l291 291q17 17 30 3zM544 128l544 544l-288 288l-544 -544v-288h288zM1152 736l92 92q28 28 28 68t-28 68l-152 152q-28 28 -68 28t-68 -28l-92 -92zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="&#xf14c;" d="M1280 608v480q0 26 -19 45t-45 19h-480q-42 0 -59 -39q-17 -41 14 -70l144 -144l-534 -534q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l534 534l144 -144q18 -19 45 -19q12 0 25 5q39 17 39 59zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="&#xf14d;" d="M1005 435l352 352q19 19 19 45t-19 45l-352 352q-30 31 -69 14q-40 -17 -40 -59v-160q-119 0 -216 -19.5t-162.5 -51t-114 -79t-76.5 -95.5t-44.5 -109t-21.5 -111.5t-5 -110.5q0 -181 167 -404q10 -12 25 -12q7 0 13 3q22 9 19 33q-44 354 62 473q46 52 130 75.5 t224 23.5v-160q0 -42 40 -59q12 -5 24 -5q26 0 45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="&#xf14e;" d="M640 448l256 128l-256 128v-256zM1024 1039v-542l-512 -256v542zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf150;" d="M1145 861q18 -35 -5 -66l-320 -448q-19 -27 -52 -27t-52 27l-320 448q-23 31 -5 66q17 35 57 35h640q40 0 57 -35zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="&#xf151;" d="M1145 419q-17 -35 -57 -35h-640q-40 0 -57 35q-18 35 5 66l320 448q19 27 52 27t52 -27l320 -448q23 -31 5 -66zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="&#xf152;" d="M1088 640q0 -33 -27 -52l-448 -320q-31 -23 -66 -5q-35 17 -35 57v640q0 40 35 57q35 18 66 -5l448 -320q27 -19 27 -52zM1280 160v960q0 14 -9 23t-23 9h-960q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h960q14 0 23 9t9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="&#xf153;" horiz-adv-x="1024" d="M976 229l35 -159q3 -12 -3 -22.5t-17 -14.5l-5 -1q-4 -2 -10.5 -3.5t-16 -4.5t-21.5 -5.5t-25.5 -5t-30 -5t-33.5 -4.5t-36.5 -3t-38.5 -1q-234 0 -409 130.5t-238 351.5h-95q-13 0 -22.5 9.5t-9.5 22.5v113q0 13 9.5 22.5t22.5 9.5h66q-2 57 1 105h-67q-14 0 -23 9 t-9 23v114q0 14 9 23t23 9h98q67 210 243.5 338t400.5 128q102 0 194 -23q11 -3 20 -15q6 -11 3 -24l-43 -159q-3 -13 -14 -19.5t-24 -2.5l-4 1q-4 1 -11.5 2.5l-17.5 3.5t-22.5 3.5t-26 3t-29 2.5t-29.5 1q-126 0 -226 -64t-150 -176h468q16 0 25 -12q10 -12 7 -26 l-24 -114q-5 -26 -32 -26h-488q-3 -37 0 -105h459q15 0 25 -12q9 -12 6 -27l-24 -112q-2 -11 -11 -18.5t-20 -7.5h-387q48 -117 149.5 -185.5t228.5 -68.5q18 0 36 1.5t33.5 3.5t29.5 4.5t24.5 5t18.5 4.5l12 3l5 2q13 5 26 -2q12 -7 15 -21z" /> -<glyph unicode="&#xf154;" horiz-adv-x="1024" d="M1020 399v-367q0 -14 -9 -23t-23 -9h-956q-14 0 -23 9t-9 23v150q0 13 9.5 22.5t22.5 9.5h97v383h-95q-14 0 -23 9.5t-9 22.5v131q0 14 9 23t23 9h95v223q0 171 123.5 282t314.5 111q185 0 335 -125q9 -8 10 -20.5t-7 -22.5l-103 -127q-9 -11 -22 -12q-13 -2 -23 7 q-5 5 -26 19t-69 32t-93 18q-85 0 -137 -47t-52 -123v-215h305q13 0 22.5 -9t9.5 -23v-131q0 -13 -9.5 -22.5t-22.5 -9.5h-305v-379h414v181q0 13 9 22.5t23 9.5h162q14 0 23 -9.5t9 -22.5z" /> -<glyph unicode="&#xf155;" horiz-adv-x="1024" d="M978 351q0 -153 -99.5 -263.5t-258.5 -136.5v-175q0 -14 -9 -23t-23 -9h-135q-13 0 -22.5 9.5t-9.5 22.5v175q-66 9 -127.5 31t-101.5 44.5t-74 48t-46.5 37.5t-17.5 18q-17 21 -2 41l103 135q7 10 23 12q15 2 24 -9l2 -2q113 -99 243 -125q37 -8 74 -8q81 0 142.5 43 t61.5 122q0 28 -15 53t-33.5 42t-58.5 37.5t-66 32t-80 32.5q-39 16 -61.5 25t-61.5 26.5t-62.5 31t-56.5 35.5t-53.5 42.5t-43.5 49t-35.5 58t-21 66.5t-8.5 78q0 138 98 242t255 134v180q0 13 9.5 22.5t22.5 9.5h135q14 0 23 -9t9 -23v-176q57 -6 110.5 -23t87 -33.5 t63.5 -37.5t39 -29t15 -14q17 -18 5 -38l-81 -146q-8 -15 -23 -16q-14 -3 -27 7q-3 3 -14.5 12t-39 26.5t-58.5 32t-74.5 26t-85.5 11.5q-95 0 -155 -43t-60 -111q0 -26 8.5 -48t29.5 -41.5t39.5 -33t56 -31t60.5 -27t70 -27.5q53 -20 81 -31.5t76 -35t75.5 -42.5t62 -50 t53 -63.5t31.5 -76.5t13 -94z" /> -<glyph unicode="&#xf156;" horiz-adv-x="898" d="M898 1066v-102q0 -14 -9 -23t-23 -9h-168q-23 -144 -129 -234t-276 -110q167 -178 459 -536q14 -16 4 -34q-8 -18 -29 -18h-195q-16 0 -25 12q-306 367 -498 571q-9 9 -9 22v127q0 13 9.5 22.5t22.5 9.5h112q132 0 212.5 43t102.5 125h-427q-14 0 -23 9t-9 23v102 q0 14 9 23t23 9h413q-57 113 -268 113h-145q-13 0 -22.5 9.5t-9.5 22.5v133q0 14 9 23t23 9h832q14 0 23 -9t9 -23v-102q0 -14 -9 -23t-23 -9h-233q47 -61 64 -144h171q14 0 23 -9t9 -23z" /> -<glyph unicode="&#xf157;" horiz-adv-x="1027" d="M603 0h-172q-13 0 -22.5 9t-9.5 23v330h-288q-13 0 -22.5 9t-9.5 23v103q0 13 9.5 22.5t22.5 9.5h288v85h-288q-13 0 -22.5 9t-9.5 23v104q0 13 9.5 22.5t22.5 9.5h214l-321 578q-8 16 0 32q10 16 28 16h194q19 0 29 -18l215 -425q19 -38 56 -125q10 24 30.5 68t27.5 61 l191 420q8 19 29 19h191q17 0 27 -16q9 -14 1 -31l-313 -579h215q13 0 22.5 -9.5t9.5 -22.5v-104q0 -14 -9.5 -23t-22.5 -9h-290v-85h290q13 0 22.5 -9.5t9.5 -22.5v-103q0 -14 -9.5 -23t-22.5 -9h-290v-330q0 -13 -9.5 -22.5t-22.5 -9.5z" /> -<glyph unicode="&#xf158;" horiz-adv-x="1280" d="M1043 971q0 100 -65 162t-171 62h-320v-448h320q106 0 171 62t65 162zM1280 971q0 -193 -126.5 -315t-326.5 -122h-340v-118h505q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-505v-192q0 -14 -9.5 -23t-22.5 -9h-167q-14 0 -23 9t-9 23v192h-224q-14 0 -23 9t-9 23v128 q0 14 9 23t23 9h224v118h-224q-14 0 -23 9t-9 23v149q0 13 9 22.5t23 9.5h224v629q0 14 9 23t23 9h539q200 0 326.5 -122t126.5 -315z" /> -<glyph unicode="&#xf159;" horiz-adv-x="1792" d="M514 341l81 299h-159l75 -300q1 -1 1 -3t1 -3q0 1 0.5 3.5t0.5 3.5zM630 768l35 128h-292l32 -128h225zM822 768h139l-35 128h-70zM1271 340l78 300h-162l81 -299q0 -1 0.5 -3.5t1.5 -3.5q0 1 0.5 3t0.5 3zM1382 768l33 128h-297l34 -128h230zM1792 736v-64q0 -14 -9 -23 t-23 -9h-213l-164 -616q-7 -24 -31 -24h-159q-24 0 -31 24l-166 616h-209l-167 -616q-7 -24 -31 -24h-159q-11 0 -19.5 7t-10.5 17l-160 616h-208q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h175l-33 128h-142q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h109l-89 344q-5 15 5 28 q10 12 26 12h137q26 0 31 -24l90 -360h359l97 360q7 24 31 24h126q24 0 31 -24l98 -360h365l93 360q5 24 31 24h137q16 0 26 -12q10 -13 5 -28l-91 -344h111q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-145l-34 -128h179q14 0 23 -9t9 -23z" /> -<glyph unicode="&#xf15a;" horiz-adv-x="1280" d="M1167 896q18 -182 -131 -258q117 -28 175 -103t45 -214q-7 -71 -32.5 -125t-64.5 -89t-97 -58.5t-121.5 -34.5t-145.5 -15v-255h-154v251q-80 0 -122 1v-252h-154v255q-18 0 -54 0.5t-55 0.5h-200l31 183h111q50 0 58 51v402h16q-6 1 -16 1v287q-13 68 -89 68h-111v164 l212 -1q64 0 97 1v252h154v-247q82 2 122 2v245h154v-252q79 -7 140 -22.5t113 -45t82.5 -78t36.5 -114.5zM952 351q0 36 -15 64t-37 46t-57.5 30.5t-65.5 18.5t-74 9t-69 3t-64.5 -1t-47.5 -1v-338q8 0 37 -0.5t48 -0.5t53 1.5t58.5 4t57 8.5t55.5 14t47.5 21t39.5 30 t24.5 40t9.5 51zM881 827q0 33 -12.5 58.5t-30.5 42t-48 28t-55 16.5t-61.5 8t-58 2.5t-54 -1t-39.5 -0.5v-307q5 0 34.5 -0.5t46.5 0t50 2t55 5.5t51.5 11t48.5 18.5t37 27t27 38.5t9 51z" /> -<glyph unicode="&#xf15b;" d="M1024 1024v472q22 -14 36 -28l408 -408q14 -14 28 -36h-472zM896 992q0 -40 28 -68t68 -28h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544z" /> -<glyph unicode="&#xf15c;" d="M1468 1060q14 -14 28 -36h-472v472q22 -14 36 -28zM992 896h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544q0 -40 28 -68t68 -28zM1152 160v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704 q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23z" /> -<glyph unicode="&#xf15d;" horiz-adv-x="1664" d="M1191 1128h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1572 -23 v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -11v-2l14 2q9 2 30 2h248v119h121zM1661 874v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162 l230 -662h70z" /> -<glyph unicode="&#xf15e;" horiz-adv-x="1664" d="M1191 104h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1661 -150 v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162l230 -662h70zM1572 1001v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -10v-3l14 3q9 1 30 1h248 v119h121z" /> -<glyph unicode="&#xf160;" horiz-adv-x="1792" d="M736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1792 -32v-192q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832 q14 0 23 -9t9 -23zM1600 480v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1408 992v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1216 1504v-192q0 -14 -9 -23t-23 -9h-256 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23z" /> -<glyph unicode="&#xf161;" horiz-adv-x="1792" d="M1216 -32v-192q0 -14 -9 -23t-23 -9h-256q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192 q14 0 23 -9t9 -23zM1408 480v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1600 992v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1792 1504v-192q0 -14 -9 -23t-23 -9h-832 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832q14 0 23 -9t9 -23z" /> -<glyph unicode="&#xf162;" d="M1346 223q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23 zM1486 165q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5 t82 -252.5zM1456 882v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165z" /> -<glyph unicode="&#xf163;" d="M1346 1247q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9 t9 -23zM1456 -142v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165zM1486 1189q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13 q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5t82 -252.5z" /> -<glyph unicode="&#xf164;" horiz-adv-x="1664" d="M256 192q0 26 -19 45t-45 19q-27 0 -45.5 -19t-18.5 -45q0 -27 18.5 -45.5t45.5 -18.5q26 0 45 18.5t19 45.5zM416 704v-640q0 -26 -19 -45t-45 -19h-288q-26 0 -45 19t-19 45v640q0 26 19 45t45 19h288q26 0 45 -19t19 -45zM1600 704q0 -86 -55 -149q15 -44 15 -76 q3 -76 -43 -137q17 -56 0 -117q-15 -57 -54 -94q9 -112 -49 -181q-64 -76 -197 -78h-36h-76h-17q-66 0 -144 15.5t-121.5 29t-120.5 39.5q-123 43 -158 44q-26 1 -45 19.5t-19 44.5v641q0 25 18 43.5t43 20.5q24 2 76 59t101 121q68 87 101 120q18 18 31 48t17.5 48.5 t13.5 60.5q7 39 12.5 61t19.5 52t34 50q19 19 45 19q46 0 82.5 -10.5t60 -26t40 -40.5t24 -45t12 -50t5 -45t0.5 -39q0 -38 -9.5 -76t-19 -60t-27.5 -56q-3 -6 -10 -18t-11 -22t-8 -24h277q78 0 135 -57t57 -135z" /> -<glyph unicode="&#xf165;" horiz-adv-x="1664" d="M256 960q0 -26 -19 -45t-45 -19q-27 0 -45.5 19t-18.5 45q0 27 18.5 45.5t45.5 18.5q26 0 45 -18.5t19 -45.5zM416 448v640q0 26 -19 45t-45 19h-288q-26 0 -45 -19t-19 -45v-640q0 -26 19 -45t45 -19h288q26 0 45 19t19 45zM1545 597q55 -61 55 -149q-1 -78 -57.5 -135 t-134.5 -57h-277q4 -14 8 -24t11 -22t10 -18q18 -37 27 -57t19 -58.5t10 -76.5q0 -24 -0.5 -39t-5 -45t-12 -50t-24 -45t-40 -40.5t-60 -26t-82.5 -10.5q-26 0 -45 19q-20 20 -34 50t-19.5 52t-12.5 61q-9 42 -13.5 60.5t-17.5 48.5t-31 48q-33 33 -101 120q-49 64 -101 121 t-76 59q-25 2 -43 20.5t-18 43.5v641q0 26 19 44.5t45 19.5q35 1 158 44q77 26 120.5 39.5t121.5 29t144 15.5h17h76h36q133 -2 197 -78q58 -69 49 -181q39 -37 54 -94q17 -61 0 -117q46 -61 43 -137q0 -32 -15 -76z" /> -<glyph unicode="&#xf166;" d="M919 233v157q0 50 -29 50q-17 0 -33 -16v-224q16 -16 33 -16q29 0 29 49zM1103 355h66v34q0 51 -33 51t-33 -51v-34zM532 621v-70h-80v-423h-74v423h-78v70h232zM733 495v-367h-67v40q-39 -45 -76 -45q-33 0 -42 28q-6 16 -6 54v290h66v-270q0 -24 1 -26q1 -15 15 -15 q20 0 42 31v280h67zM985 384v-146q0 -52 -7 -73q-12 -42 -53 -42q-35 0 -68 41v-36h-67v493h67v-161q32 40 68 40q41 0 53 -42q7 -21 7 -74zM1236 255v-9q0 -29 -2 -43q-3 -22 -15 -40q-27 -40 -80 -40q-52 0 -81 38q-21 27 -21 86v129q0 59 20 86q29 38 80 38t78 -38 q21 -28 21 -86v-76h-133v-65q0 -51 34 -51q24 0 30 26q0 1 0.5 7t0.5 16.5v21.5h68zM785 1079v-156q0 -51 -32 -51t-32 51v156q0 52 32 52t32 -52zM1318 366q0 177 -19 260q-10 44 -43 73.5t-76 34.5q-136 15 -412 15q-275 0 -411 -15q-44 -5 -76.5 -34.5t-42.5 -73.5 q-20 -87 -20 -260q0 -176 20 -260q10 -43 42.5 -73t75.5 -35q137 -15 412 -15t412 15q43 5 75.5 35t42.5 73q20 84 20 260zM563 1017l90 296h-75l-51 -195l-53 195h-78l24 -69t23 -69q35 -103 46 -158v-201h74v201zM852 936v130q0 58 -21 87q-29 38 -78 38q-51 0 -78 -38 q-21 -29 -21 -87v-130q0 -58 21 -87q27 -38 78 -38q49 0 78 38q21 27 21 87zM1033 816h67v370h-67v-283q-22 -31 -42 -31q-15 0 -16 16q-1 2 -1 26v272h-67v-293q0 -37 6 -55q11 -27 43 -27q36 0 77 45v-40zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="&#xf167;" d="M971 292v-211q0 -67 -39 -67q-23 0 -45 22v301q22 22 45 22q39 0 39 -67zM1309 291v-46h-90v46q0 68 45 68t45 -68zM343 509h107v94h-312v-94h105v-569h100v569zM631 -60h89v494h-89v-378q-30 -42 -57 -42q-18 0 -21 21q-1 3 -1 35v364h-89v-391q0 -49 8 -73 q12 -37 58 -37q48 0 102 61v-54zM1060 88v197q0 73 -9 99q-17 56 -71 56q-50 0 -93 -54v217h-89v-663h89v48q45 -55 93 -55q54 0 71 55q9 27 9 100zM1398 98v13h-91q0 -51 -2 -61q-7 -36 -40 -36q-46 0 -46 69v87h179v103q0 79 -27 116q-39 51 -106 51q-68 0 -107 -51 q-28 -37 -28 -116v-173q0 -79 29 -116q39 -51 108 -51q72 0 108 53q18 27 21 54q2 9 2 58zM790 1011v210q0 69 -43 69t-43 -69v-210q0 -70 43 -70t43 70zM1509 260q0 -234 -26 -350q-14 -59 -58 -99t-102 -46q-184 -21 -555 -21t-555 21q-58 6 -102.5 46t-57.5 99 q-26 112 -26 350q0 234 26 350q14 59 58 99t103 47q183 20 554 20t555 -20q58 -7 102.5 -47t57.5 -99q26 -112 26 -350zM511 1536h102l-121 -399v-271h-100v271q-14 74 -61 212q-37 103 -65 187h106l71 -263zM881 1203v-175q0 -81 -28 -118q-37 -51 -106 -51q-67 0 -105 51 q-28 38 -28 118v175q0 80 28 117q38 51 105 51q69 0 106 -51q28 -37 28 -117zM1216 1365v-499h-91v55q-53 -62 -103 -62q-46 0 -59 37q-8 24 -8 75v394h91v-367q0 -33 1 -35q3 -22 21 -22q27 0 57 43v381h91z" /> -<glyph unicode="&#xf168;" horiz-adv-x="1408" d="M597 869q-10 -18 -257 -456q-27 -46 -65 -46h-239q-21 0 -31 17t0 36l253 448q1 0 0 1l-161 279q-12 22 -1 37q9 15 32 15h239q40 0 66 -45zM1403 1511q11 -16 0 -37l-528 -934v-1l336 -615q11 -20 1 -37q-10 -15 -32 -15h-239q-42 0 -66 45l-339 622q18 32 531 942 q25 45 64 45h241q22 0 31 -15z" /> -<glyph unicode="&#xf169;" d="M685 771q0 1 -126 222q-21 34 -52 34h-184q-18 0 -26 -11q-7 -12 1 -29l125 -216v-1l-196 -346q-9 -14 0 -28q8 -13 24 -13h185q31 0 50 36zM1309 1268q-7 12 -24 12h-187q-30 0 -49 -35l-411 -729q1 -2 262 -481q20 -35 52 -35h184q18 0 25 12q8 13 -1 28l-260 476v1 l409 723q8 16 0 28zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="&#xf16a;" horiz-adv-x="1792" d="M1280 640q0 37 -30 54l-512 320q-31 20 -65 2q-33 -18 -33 -56v-640q0 -38 33 -56q16 -8 31 -8q20 0 34 10l512 320q30 17 30 54zM1792 640q0 -96 -1 -150t-8.5 -136.5t-22.5 -147.5q-16 -73 -69 -123t-124 -58q-222 -25 -671 -25t-671 25q-71 8 -124.5 58t-69.5 123 q-14 65 -21.5 147.5t-8.5 136.5t-1 150t1 150t8.5 136.5t22.5 147.5q16 73 69 123t124 58q222 25 671 25t671 -25q71 -8 124.5 -58t69.5 -123q14 -65 21.5 -147.5t8.5 -136.5t1 -150z" /> -<glyph unicode="&#xf16b;" horiz-adv-x="1792" d="M402 829l494 -305l-342 -285l-490 319zM1388 274v-108l-490 -293v-1l-1 1l-1 -1v1l-489 293v108l147 -96l342 284v2l1 -1l1 1v-2l343 -284zM554 1418l342 -285l-494 -304l-338 270zM1390 829l338 -271l-489 -319l-343 285zM1239 1418l489 -319l-338 -270l-494 304z" /> -<glyph unicode="&#xf16c;" horiz-adv-x="1408" d="M928 135v-151l-707 -1v151zM1169 481v-701l-1 -35v-1h-1132l-35 1h-1v736h121v-618h928v618h120zM241 393l704 -65l-13 -150l-705 65zM309 709l683 -183l-39 -146l-683 183zM472 1058l609 -360l-77 -130l-609 360zM832 1389l398 -585l-124 -85l-399 584zM1285 1536 l121 -697l-149 -26l-121 697z" /> -<glyph unicode="&#xf16d;" d="M1362 110v648h-135q20 -63 20 -131q0 -126 -64 -232.5t-174 -168.5t-240 -62q-197 0 -337 135.5t-140 327.5q0 68 20 131h-141v-648q0 -26 17.5 -43.5t43.5 -17.5h1069q25 0 43 17.5t18 43.5zM1078 643q0 124 -90.5 211.5t-218.5 87.5q-127 0 -217.5 -87.5t-90.5 -211.5 t90.5 -211.5t217.5 -87.5q128 0 218.5 87.5t90.5 211.5zM1362 1003v165q0 28 -20 48.5t-49 20.5h-174q-29 0 -49 -20.5t-20 -48.5v-165q0 -29 20 -49t49 -20h174q29 0 49 20t20 49zM1536 1211v-1142q0 -81 -58 -139t-139 -58h-1142q-81 0 -139 58t-58 139v1142q0 81 58 139 t139 58h1142q81 0 139 -58t58 -139z" /> -<glyph unicode="&#xf16e;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM698 640q0 88 -62 150t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150zM1262 640q0 88 -62 150 t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150z" /> -<glyph unicode="&#xf170;" d="M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf171;" horiz-adv-x="1408" d="M815 677q8 -63 -50.5 -101t-111.5 -6q-39 17 -53.5 58t-0.5 82t52 58q36 18 72.5 12t64 -35.5t27.5 -67.5zM926 698q-14 107 -113 164t-197 13q-63 -28 -100.5 -88.5t-34.5 -129.5q4 -91 77.5 -155t165.5 -56q91 8 152 84t50 168zM1165 1240q-20 27 -56 44.5t-58 22 t-71 12.5q-291 47 -566 -2q-43 -7 -66 -12t-55 -22t-50 -43q30 -28 76 -45.5t73.5 -22t87.5 -11.5q228 -29 448 -1q63 8 89.5 12t72.5 21.5t75 46.5zM1222 205q-8 -26 -15.5 -76.5t-14 -84t-28.5 -70t-58 -56.5q-86 -48 -189.5 -71.5t-202 -22t-201.5 18.5q-46 8 -81.5 18 t-76.5 27t-73 43.5t-52 61.5q-25 96 -57 292l6 16l18 9q223 -148 506.5 -148t507.5 148q21 -6 24 -23t-5 -45t-8 -37zM1403 1166q-26 -167 -111 -655q-5 -30 -27 -56t-43.5 -40t-54.5 -31q-252 -126 -610 -88q-248 27 -394 139q-15 12 -25.5 26.5t-17 35t-9 34t-6 39.5 t-5.5 35q-9 50 -26.5 150t-28 161.5t-23.5 147.5t-22 158q3 26 17.5 48.5t31.5 37.5t45 30t46 22.5t48 18.5q125 46 313 64q379 37 676 -50q155 -46 215 -122q16 -20 16.5 -51t-5.5 -54z" /> -<glyph unicode="&#xf172;" d="M848 666q0 43 -41 66t-77 1q-43 -20 -42.5 -72.5t43.5 -70.5q39 -23 81 4t36 72zM928 682q8 -66 -36 -121t-110 -61t-119 40t-56 113q-2 49 25.5 93t72.5 64q70 31 141.5 -10t81.5 -118zM1100 1073q-20 -21 -53.5 -34t-53 -16t-63.5 -8q-155 -20 -324 0q-44 6 -63 9.5 t-52.5 16t-54.5 32.5q13 19 36 31t40 15.5t47 8.5q198 35 408 1q33 -5 51 -8.5t43 -16t39 -31.5zM1142 327q0 7 5.5 26.5t3 32t-17.5 16.5q-161 -106 -365 -106t-366 106l-12 -6l-5 -12q26 -154 41 -210q47 -81 204 -108q249 -46 428 53q34 19 49 51.5t22.5 85.5t12.5 71z M1272 1020q9 53 -8 75q-43 55 -155 88q-216 63 -487 36q-132 -12 -226 -46q-38 -15 -59.5 -25t-47 -34t-29.5 -54q8 -68 19 -138t29 -171t24 -137q1 -5 5 -31t7 -36t12 -27t22 -28q105 -80 284 -100q259 -28 440 63q24 13 39.5 23t31 29t19.5 40q48 267 80 473zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="&#xf173;" horiz-adv-x="1024" d="M944 207l80 -237q-23 -35 -111 -66t-177 -32q-104 -2 -190.5 26t-142.5 74t-95 106t-55.5 120t-16.5 118v544h-168v215q72 26 129 69.5t91 90t58 102t34 99t15 88.5q1 5 4.5 8.5t7.5 3.5h244v-424h333v-252h-334v-518q0 -30 6.5 -56t22.5 -52.5t49.5 -41.5t81.5 -14 q78 2 134 29z" /> -<glyph unicode="&#xf174;" d="M1136 75l-62 183q-44 -22 -103 -22q-36 -1 -62 10.5t-38.5 31.5t-17.5 40.5t-5 43.5v398h257v194h-256v326h-188q-8 0 -9 -10q-5 -44 -17.5 -87t-39 -95t-77 -95t-118.5 -68v-165h130v-418q0 -57 21.5 -115t65 -111t121 -85.5t176.5 -30.5q69 1 136.5 25t85.5 50z M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="&#xf175;" horiz-adv-x="768" d="M765 237q8 -19 -5 -35l-350 -384q-10 -10 -23 -10q-14 0 -24 10l-355 384q-13 16 -5 35q9 19 29 19h224v1248q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1248h224q21 0 29 -19z" /> -<glyph unicode="&#xf176;" horiz-adv-x="768" d="M765 1043q-9 -19 -29 -19h-224v-1248q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1248h-224q-21 0 -29 19t5 35l350 384q10 10 23 10q14 0 24 -10l355 -384q13 -16 5 -35z" /> -<glyph unicode="&#xf177;" horiz-adv-x="1792" d="M1792 736v-192q0 -14 -9 -23t-23 -9h-1248v-224q0 -21 -19 -29t-35 5l-384 350q-10 10 -10 23q0 14 10 24l384 354q16 14 35 6q19 -9 19 -29v-224h1248q14 0 23 -9t9 -23z" /> -<glyph unicode="&#xf178;" horiz-adv-x="1792" d="M1728 643q0 -14 -10 -24l-384 -354q-16 -14 -35 -6q-19 9 -19 29v224h-1248q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h1248v224q0 21 19 29t35 -5l384 -350q10 -10 10 -23z" /> -<glyph unicode="&#xf179;" horiz-adv-x="1408" d="M1393 321q-39 -125 -123 -250q-129 -196 -257 -196q-49 0 -140 32q-86 32 -151 32q-61 0 -142 -33q-81 -34 -132 -34q-152 0 -301 259q-147 261 -147 503q0 228 113 374q112 144 284 144q72 0 177 -30q104 -30 138 -30q45 0 143 34q102 34 173 34q119 0 213 -65 q52 -36 104 -100q-79 -67 -114 -118q-65 -94 -65 -207q0 -124 69 -223t158 -126zM1017 1494q0 -61 -29 -136q-30 -75 -93 -138q-54 -54 -108 -72q-37 -11 -104 -17q3 149 78 257q74 107 250 148q1 -3 2.5 -11t2.5 -11q0 -4 0.5 -10t0.5 -10z" /> -<glyph unicode="&#xf17a;" horiz-adv-x="1664" d="M682 530v-651l-682 94v557h682zM682 1273v-659h-682v565zM1664 530v-786l-907 125v661h907zM1664 1408v-794h-907v669z" /> -<glyph unicode="&#xf17b;" horiz-adv-x="1408" d="M493 1053q16 0 27.5 11.5t11.5 27.5t-11.5 27.5t-27.5 11.5t-27 -11.5t-11 -27.5t11 -27.5t27 -11.5zM915 1053q16 0 27 11.5t11 27.5t-11 27.5t-27 11.5t-27.5 -11.5t-11.5 -27.5t11.5 -27.5t27.5 -11.5zM103 869q42 0 72 -30t30 -72v-430q0 -43 -29.5 -73t-72.5 -30 t-73 30t-30 73v430q0 42 30 72t73 30zM1163 850v-666q0 -46 -32 -78t-77 -32h-75v-227q0 -43 -30 -73t-73 -30t-73 30t-30 73v227h-138v-227q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73l-1 227h-74q-46 0 -78 32t-32 78v666h918zM931 1255q107 -55 171 -153.5t64 -215.5 h-925q0 117 64 215.5t172 153.5l-71 131q-7 13 5 20q13 6 20 -6l72 -132q95 42 201 42t201 -42l72 132q7 12 20 6q12 -7 5 -20zM1408 767v-430q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73v430q0 43 30 72.5t72 29.5q43 0 73 -29.5t30 -72.5z" /> -<glyph unicode="&#xf17c;" d="M663 1125q-11 -1 -15.5 -10.5t-8.5 -9.5q-5 -1 -5 5q0 12 19 15h10zM750 1111q-4 -1 -11.5 6.5t-17.5 4.5q24 11 32 -2q3 -6 -3 -9zM399 684q-4 1 -6 -3t-4.5 -12.5t-5.5 -13.5t-10 -13q-7 -10 -1 -12q4 -1 12.5 7t12.5 18q1 3 2 7t2 6t1.5 4.5t0.5 4v3t-1 2.5t-3 2z M1254 325q0 18 -55 42q4 15 7.5 27.5t5 26t3 21.5t0.5 22.5t-1 19.5t-3.5 22t-4 20.5t-5 25t-5.5 26.5q-10 48 -47 103t-72 75q24 -20 57 -83q87 -162 54 -278q-11 -40 -50 -42q-31 -4 -38.5 18.5t-8 83.5t-11.5 107q-9 39 -19.5 69t-19.5 45.5t-15.5 24.5t-13 15t-7.5 7 q-14 62 -31 103t-29.5 56t-23.5 33t-15 40q-4 21 6 53.5t4.5 49.5t-44.5 25q-15 3 -44.5 18t-35.5 16q-8 1 -11 26t8 51t36 27q37 3 51 -30t4 -58q-11 -19 -2 -26.5t30 -0.5q13 4 13 36v37q-5 30 -13.5 50t-21 30.5t-23.5 15t-27 7.5q-107 -8 -89 -134q0 -15 -1 -15 q-9 9 -29.5 10.5t-33 -0.5t-15.5 5q1 57 -16 90t-45 34q-27 1 -41.5 -27.5t-16.5 -59.5q-1 -15 3.5 -37t13 -37.5t15.5 -13.5q10 3 16 14q4 9 -7 8q-7 0 -15.5 14.5t-9.5 33.5q-1 22 9 37t34 14q17 0 27 -21t9.5 -39t-1.5 -22q-22 -15 -31 -29q-8 -12 -27.5 -23.5 t-20.5 -12.5q-13 -14 -15.5 -27t7.5 -18q14 -8 25 -19.5t16 -19t18.5 -13t35.5 -6.5q47 -2 102 15q2 1 23 7t34.5 10.5t29.5 13t21 17.5q9 14 20 8q5 -3 6.5 -8.5t-3 -12t-16.5 -9.5q-20 -6 -56.5 -21.5t-45.5 -19.5q-44 -19 -70 -23q-25 -5 -79 2q-10 2 -9 -2t17 -19 q25 -23 67 -22q17 1 36 7t36 14t33.5 17.5t30 17t24.5 12t17.5 2.5t8.5 -11q0 -2 -1 -4.5t-4 -5t-6 -4.5t-8.5 -5t-9 -4.5t-10 -5t-9.5 -4.5q-28 -14 -67.5 -44t-66.5 -43t-49 -1q-21 11 -63 73q-22 31 -25 22q-1 -3 -1 -10q0 -25 -15 -56.5t-29.5 -55.5t-21 -58t11.5 -63 q-23 -6 -62.5 -90t-47.5 -141q-2 -18 -1.5 -69t-5.5 -59q-8 -24 -29 -3q-32 31 -36 94q-2 28 4 56q4 19 -1 18l-4 -5q-36 -65 10 -166q5 -12 25 -28t24 -20q20 -23 104 -90.5t93 -76.5q16 -15 17.5 -38t-14 -43t-45.5 -23q8 -15 29 -44.5t28 -54t7 -70.5q46 24 7 92 q-4 8 -10.5 16t-9.5 12t-2 6q3 5 13 9.5t20 -2.5q46 -52 166 -36q133 15 177 87q23 38 34 30q12 -6 10 -52q-1 -25 -23 -92q-9 -23 -6 -37.5t24 -15.5q3 19 14.5 77t13.5 90q2 21 -6.5 73.5t-7.5 97t23 70.5q15 18 51 18q1 37 34.5 53t72.5 10.5t60 -22.5zM626 1152 q3 17 -2.5 30t-11.5 15q-9 2 -9 -7q2 -5 5 -6q10 0 7 -15q-3 -20 8 -20q3 0 3 3zM1045 955q-2 8 -6.5 11.5t-13 5t-14.5 5.5q-5 3 -9.5 8t-7 8t-5.5 6.5t-4 4t-4 -1.5q-14 -16 7 -43.5t39 -31.5q9 -1 14.5 8t3.5 20zM867 1168q0 11 -5 19.5t-11 12.5t-9 3q-14 -1 -7 -7l4 -2 q14 -4 18 -31q0 -3 8 2zM921 1401q0 2 -2.5 5t-9 7t-9.5 6q-15 15 -24 15q-9 -1 -11.5 -7.5t-1 -13t-0.5 -12.5q-1 -4 -6 -10.5t-6 -9t3 -8.5q4 -3 8 0t11 9t15 9q1 1 9 1t15 2t9 7zM1486 60q20 -12 31 -24.5t12 -24t-2.5 -22.5t-15.5 -22t-23.5 -19.5t-30 -18.5 t-31.5 -16.5t-32 -15.5t-27 -13q-38 -19 -85.5 -56t-75.5 -64q-17 -16 -68 -19.5t-89 14.5q-18 9 -29.5 23.5t-16.5 25.5t-22 19.5t-47 9.5q-44 1 -130 1q-19 0 -57 -1.5t-58 -2.5q-44 -1 -79.5 -15t-53.5 -30t-43.5 -28.5t-53.5 -11.5q-29 1 -111 31t-146 43q-19 4 -51 9.5 t-50 9t-39.5 9.5t-33.5 14.5t-17 19.5q-10 23 7 66.5t18 54.5q1 16 -4 40t-10 42.5t-4.5 36.5t10.5 27q14 12 57 14t60 12q30 18 42 35t12 51q21 -73 -32 -106q-32 -20 -83 -15q-34 3 -43 -10q-13 -15 5 -57q2 -6 8 -18t8.5 -18t4.5 -17t1 -22q0 -15 -17 -49t-14 -48 q3 -17 37 -26q20 -6 84.5 -18.5t99.5 -20.5q24 -6 74 -22t82.5 -23t55.5 -4q43 6 64.5 28t23 48t-7.5 58.5t-19 52t-20 36.5q-121 190 -169 242q-68 74 -113 40q-11 -9 -15 15q-3 16 -2 38q1 29 10 52t24 47t22 42q8 21 26.5 72t29.5 78t30 61t39 54q110 143 124 195 q-12 112 -16 310q-2 90 24 151.5t106 104.5q39 21 104 21q53 1 106 -13.5t89 -41.5q57 -42 91.5 -121.5t29.5 -147.5q-5 -95 30 -214q34 -113 133 -218q55 -59 99.5 -163t59.5 -191q8 -49 5 -84.5t-12 -55.5t-20 -22q-10 -2 -23.5 -19t-27 -35.5t-40.5 -33.5t-61 -14 q-18 1 -31.5 5t-22.5 13.5t-13.5 15.5t-11.5 20.5t-9 19.5q-22 37 -41 30t-28 -49t7 -97q20 -70 1 -195q-10 -65 18 -100.5t73 -33t85 35.5q59 49 89.5 66.5t103.5 42.5q53 18 77 36.5t18.5 34.5t-25 28.5t-51.5 23.5q-33 11 -49.5 48t-15 72.5t15.5 47.5q1 -31 8 -56.5 t14.5 -40.5t20.5 -28.5t21 -19t21.5 -13t16.5 -9.5z" /> -<glyph unicode="&#xf17d;" d="M1024 36q-42 241 -140 498h-2l-2 -1q-16 -6 -43 -16.5t-101 -49t-137 -82t-131 -114.5t-103 -148l-15 11q184 -150 418 -150q132 0 256 52zM839 643q-21 49 -53 111q-311 -93 -673 -93q-1 -7 -1 -21q0 -124 44 -236.5t124 -201.5q50 89 123.5 166.5t142.5 124.5t130.5 81 t99.5 48l37 13q4 1 13 3.5t13 4.5zM732 855q-120 213 -244 378q-138 -65 -234 -186t-128 -272q302 0 606 80zM1416 536q-210 60 -409 29q87 -239 128 -469q111 75 185 189.5t96 250.5zM611 1277q-1 0 -2 -1q1 1 2 1zM1201 1132q-185 164 -433 164q-76 0 -155 -19 q131 -170 246 -382q69 26 130 60.5t96.5 61.5t65.5 57t37.5 40.5zM1424 647q-3 232 -149 410l-1 -1q-9 -12 -19 -24.5t-43.5 -44.5t-71 -60.5t-100 -65t-131.5 -64.5q25 -53 44 -95q2 -6 6.5 -17.5t7.5 -16.5q36 5 74.5 7t73.5 2t69 -1.5t64 -4t56.5 -5.5t48 -6.5t36.5 -6 t25 -4.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf17e;" d="M1173 473q0 50 -19.5 91.5t-48.5 68.5t-73 49t-82.5 34t-87.5 23l-104 24q-30 7 -44 10.5t-35 11.5t-30 16t-16.5 21t-7.5 30q0 77 144 77q43 0 77 -12t54 -28.5t38 -33.5t40 -29t48 -12q47 0 75.5 32t28.5 77q0 55 -56 99.5t-142 67.5t-182 23q-68 0 -132 -15.5 t-119.5 -47t-89 -87t-33.5 -128.5q0 -61 19 -106.5t56 -75.5t80 -48.5t103 -32.5l146 -36q90 -22 112 -36q32 -20 32 -60q0 -39 -40 -64.5t-105 -25.5q-51 0 -91.5 16t-65 38.5t-45.5 45t-46 38.5t-54 16q-50 0 -75.5 -30t-25.5 -75q0 -92 122 -157.5t291 -65.5 q73 0 140 18.5t122.5 53.5t88.5 93.5t33 131.5zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5q-130 0 -234 80q-77 -16 -150 -16q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5q0 73 16 150q-80 104 -80 234q0 159 112.5 271.5t271.5 112.5q130 0 234 -80 q77 16 150 16q143 0 273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -73 -16 -150q80 -104 80 -234z" /> -<glyph unicode="&#xf180;" horiz-adv-x="1280" d="M1000 1102l37 194q5 23 -9 40t-35 17h-712q-23 0 -38.5 -17t-15.5 -37v-1101q0 -7 6 -1l291 352q23 26 38 33.5t48 7.5h239q22 0 37 14.5t18 29.5q24 130 37 191q4 21 -11.5 40t-36.5 19h-294q-29 0 -48 19t-19 48v42q0 29 19 47.5t48 18.5h346q18 0 35 13.5t20 29.5z M1227 1324q-15 -73 -53.5 -266.5t-69.5 -350t-35 -173.5q-6 -22 -9 -32.5t-14 -32.5t-24.5 -33t-38.5 -21t-58 -10h-271q-13 0 -22 -10q-8 -9 -426 -494q-22 -25 -58.5 -28.5t-48.5 5.5q-55 22 -55 98v1410q0 55 38 102.5t120 47.5h888q95 0 127 -53t10 -159zM1227 1324 l-158 -790q4 17 35 173.5t69.5 350t53.5 266.5z" /> -<glyph unicode="&#xf181;" d="M704 192v1024q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-1024q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1376 576v640q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-640q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408 q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" /> -<glyph unicode="&#xf182;" horiz-adv-x="1280" d="M1280 480q0 -40 -28 -68t-68 -28q-51 0 -80 43l-227 341h-45v-132l247 -411q9 -15 9 -33q0 -26 -19 -45t-45 -19h-192v-272q0 -46 -33 -79t-79 -33h-160q-46 0 -79 33t-33 79v272h-192q-26 0 -45 19t-19 45q0 18 9 33l247 411v132h-45l-227 -341q-29 -43 -80 -43 q-40 0 -68 28t-28 68q0 29 16 53l256 384q73 107 176 107h384q103 0 176 -107l256 -384q16 -24 16 -53zM864 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" /> -<glyph unicode="&#xf183;" horiz-adv-x="1024" d="M1024 832v-416q0 -40 -28 -68t-68 -28t-68 28t-28 68v352h-64v-912q0 -46 -33 -79t-79 -33t-79 33t-33 79v464h-64v-464q0 -46 -33 -79t-79 -33t-79 33t-33 79v912h-64v-352q0 -40 -28 -68t-68 -28t-68 28t-28 68v416q0 80 56 136t136 56h640q80 0 136 -56t56 -136z M736 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" /> -<glyph unicode="&#xf184;" d="M773 234l350 473q16 22 24.5 59t-6 85t-61.5 79q-40 26 -83 25.5t-73.5 -17.5t-54.5 -45q-36 -40 -96 -40q-59 0 -95 40q-24 28 -54.5 45t-73.5 17.5t-84 -25.5q-46 -31 -60.5 -79t-6 -85t24.5 -59zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf185;" horiz-adv-x="1792" d="M1472 640q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5zM1748 363q-4 -15 -20 -20l-292 -96v-306q0 -16 -13 -26q-15 -10 -29 -4 l-292 94l-180 -248q-10 -13 -26 -13t-26 13l-180 248l-292 -94q-14 -6 -29 4q-13 10 -13 26v306l-292 96q-16 5 -20 20q-5 17 4 29l180 248l-180 248q-9 13 -4 29q4 15 20 20l292 96v306q0 16 13 26q15 10 29 4l292 -94l180 248q9 12 26 12t26 -12l180 -248l292 94 q14 6 29 -4q13 -10 13 -26v-306l292 -96q16 -5 20 -20q5 -16 -4 -29l-180 -248l180 -248q9 -12 4 -29z" /> -<glyph unicode="&#xf186;" d="M1262 233q-54 -9 -110 -9q-182 0 -337 90t-245 245t-90 337q0 192 104 357q-201 -60 -328.5 -229t-127.5 -384q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51q144 0 273.5 61.5t220.5 171.5zM1465 318q-94 -203 -283.5 -324.5t-413.5 -121.5q-156 0 -298 61 t-245 164t-164 245t-61 298q0 153 57.5 292.5t156 241.5t235.5 164.5t290 68.5q44 2 61 -39q18 -41 -15 -72q-86 -78 -131.5 -181.5t-45.5 -218.5q0 -148 73 -273t198 -198t273 -73q118 0 228 51q41 18 72 -13q14 -14 17.5 -34t-4.5 -38z" /> -<glyph unicode="&#xf187;" horiz-adv-x="1792" d="M1088 704q0 26 -19 45t-45 19h-256q-26 0 -45 -19t-19 -45t19 -45t45 -19h256q26 0 45 19t19 45zM1664 896v-960q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v960q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1728 1344v-256q0 -26 -19 -45t-45 -19h-1536 q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1536q26 0 45 -19t19 -45z" /> -<glyph unicode="&#xf188;" horiz-adv-x="1664" d="M1632 576q0 -26 -19 -45t-45 -19h-224q0 -171 -67 -290l208 -209q19 -19 19 -45t-19 -45q-18 -19 -45 -19t-45 19l-198 197q-5 -5 -15 -13t-42 -28.5t-65 -36.5t-82 -29t-97 -13v896h-128v-896q-51 0 -101.5 13.5t-87 33t-66 39t-43.5 32.5l-15 14l-183 -207 q-20 -21 -48 -21q-24 0 -43 16q-19 18 -20.5 44.5t15.5 46.5l202 227q-58 114 -58 274h-224q-26 0 -45 19t-19 45t19 45t45 19h224v294l-173 173q-19 19 -19 45t19 45t45 19t45 -19l173 -173h844l173 173q19 19 45 19t45 -19t19 -45t-19 -45l-173 -173v-294h224q26 0 45 -19 t19 -45zM1152 1152h-640q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5z" /> -<glyph unicode="&#xf189;" horiz-adv-x="1920" d="M1917 1016q23 -64 -150 -294q-24 -32 -65 -85q-78 -100 -90 -131q-17 -41 14 -81q17 -21 81 -82h1l1 -1l1 -1l2 -2q141 -131 191 -221q3 -5 6.5 -12.5t7 -26.5t-0.5 -34t-25 -27.5t-59 -12.5l-256 -4q-24 -5 -56 5t-52 22l-20 12q-30 21 -70 64t-68.5 77.5t-61 58 t-56.5 15.5q-3 -1 -8 -3.5t-17 -14.5t-21.5 -29.5t-17 -52t-6.5 -77.5q0 -15 -3.5 -27.5t-7.5 -18.5l-4 -5q-18 -19 -53 -22h-115q-71 -4 -146 16.5t-131.5 53t-103 66t-70.5 57.5l-25 24q-10 10 -27.5 30t-71.5 91t-106 151t-122.5 211t-130.5 272q-6 16 -6 27t3 16l4 6 q15 19 57 19l274 2q12 -2 23 -6.5t16 -8.5l5 -3q16 -11 24 -32q20 -50 46 -103.5t41 -81.5l16 -29q29 -60 56 -104t48.5 -68.5t41.5 -38.5t34 -14t27 5q2 1 5 5t12 22t13.5 47t9.5 81t0 125q-2 40 -9 73t-14 46l-6 12q-25 34 -85 43q-13 2 5 24q17 19 38 30q53 26 239 24 q82 -1 135 -13q20 -5 33.5 -13.5t20.5 -24t10.5 -32t3.5 -45.5t-1 -55t-2.5 -70.5t-1.5 -82.5q0 -11 -1 -42t-0.5 -48t3.5 -40.5t11.5 -39t22.5 -24.5q8 -2 17 -4t26 11t38 34.5t52 67t68 107.5q60 104 107 225q4 10 10 17.5t11 10.5l4 3l5 2.5t13 3t20 0.5l288 2 q39 5 64 -2.5t31 -16.5z" /> -<glyph unicode="&#xf18a;" horiz-adv-x="1792" d="M675 252q21 34 11 69t-45 50q-34 14 -73 1t-60 -46q-22 -34 -13 -68.5t43 -50.5t74.5 -2.5t62.5 47.5zM769 373q8 13 3.5 26.5t-17.5 18.5q-14 5 -28.5 -0.5t-21.5 -18.5q-17 -31 13 -45q14 -5 29 0.5t22 18.5zM943 266q-45 -102 -158 -150t-224 -12 q-107 34 -147.5 126.5t6.5 187.5q47 93 151.5 139t210.5 19q111 -29 158.5 -119.5t2.5 -190.5zM1255 426q-9 96 -89 170t-208.5 109t-274.5 21q-223 -23 -369.5 -141.5t-132.5 -264.5q9 -96 89 -170t208.5 -109t274.5 -21q223 23 369.5 141.5t132.5 264.5zM1563 422 q0 -68 -37 -139.5t-109 -137t-168.5 -117.5t-226 -83t-270.5 -31t-275 33.5t-240.5 93t-171.5 151t-65 199.5q0 115 69.5 245t197.5 258q169 169 341.5 236t246.5 -7q65 -64 20 -209q-4 -14 -1 -20t10 -7t14.5 0.5t13.5 3.5l6 2q139 59 246 59t153 -61q45 -63 0 -178 q-2 -13 -4.5 -20t4.5 -12.5t12 -7.5t17 -6q57 -18 103 -47t80 -81.5t34 -116.5zM1489 1046q42 -47 54.5 -108.5t-6.5 -117.5q-8 -23 -29.5 -34t-44.5 -4q-23 8 -34 29.5t-4 44.5q20 63 -24 111t-107 35q-24 -5 -45 8t-25 37q-5 24 8 44.5t37 25.5q60 13 119 -5.5t101 -65.5z M1670 1209q87 -96 112.5 -222.5t-13.5 -241.5q-9 -27 -34 -40t-52 -4t-40 34t-5 52q28 82 10 172t-80 158q-62 69 -148 95.5t-173 8.5q-28 -6 -52 9.5t-30 43.5t9.5 51.5t43.5 29.5q123 26 244 -11.5t208 -134.5z" /> -<glyph unicode="&#xf18b;" d="M1133 -34q-171 -94 -368 -94q-196 0 -367 94q138 87 235.5 211t131.5 268q35 -144 132.5 -268t235.5 -211zM638 1394v-485q0 -252 -126.5 -459.5t-330.5 -306.5q-181 215 -181 495q0 187 83.5 349.5t229.5 269.5t325 137zM1536 638q0 -280 -181 -495 q-204 99 -330.5 306.5t-126.5 459.5v485q179 -30 325 -137t229.5 -269.5t83.5 -349.5z" /> -<glyph unicode="&#xf18c;" horiz-adv-x="1408" d="M1402 433q-32 -80 -76 -138t-91 -88.5t-99 -46.5t-101.5 -14.5t-96.5 8.5t-86.5 22t-69.5 27.5t-46 22.5l-17 10q-113 -228 -289.5 -359.5t-384.5 -132.5q-19 0 -32 13t-13 32t13 31.5t32 12.5q173 1 322.5 107.5t251.5 294.5q-36 -14 -72 -23t-83 -13t-91 2.5t-93 28.5 t-92 59t-84.5 100t-74.5 146q114 47 214 57t167.5 -7.5t124.5 -56.5t88.5 -77t56.5 -82q53 131 79 291q-7 -1 -18 -2.5t-46.5 -2.5t-69.5 0.5t-81.5 10t-88.5 23t-84 42.5t-75 65t-54.5 94.5t-28.5 127.5q70 28 133.5 36.5t112.5 -1t92 -30t73.5 -50t56 -61t42 -63t27.5 -56 t16 -39.5l4 -16q12 122 12 195q-8 6 -21.5 16t-49 44.5t-63.5 71.5t-54 93t-33 112.5t12 127t70 138.5q73 -25 127.5 -61.5t84.5 -76.5t48 -85t20.5 -89t-0.5 -85.5t-13 -76.5t-19 -62t-17 -42l-7 -15q1 -5 1 -50.5t-1 -71.5q3 7 10 18.5t30.5 43t50.5 58t71 55.5t91.5 44.5 t112 14.5t132.5 -24q-2 -78 -21.5 -141.5t-50 -104.5t-69.5 -71.5t-81.5 -45.5t-84.5 -24t-80 -9.5t-67.5 1t-46.5 4.5l-17 3q-23 -147 -73 -283q6 7 18 18.5t49.5 41t77.5 52.5t99.5 42t117.5 20t129 -23.5t137 -77.5z" /> -<glyph unicode="&#xf18d;" horiz-adv-x="1280" d="M1259 283v-66q0 -85 -57.5 -144.5t-138.5 -59.5h-57l-260 -269v269h-529q-81 0 -138.5 59.5t-57.5 144.5v66h1238zM1259 609v-255h-1238v255h1238zM1259 937v-255h-1238v255h1238zM1259 1077v-67h-1238v67q0 84 57.5 143.5t138.5 59.5h846q81 0 138.5 -59.5t57.5 -143.5z " /> -<glyph unicode="&#xf18e;" d="M1152 640q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf190;" d="M1152 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-192q0 -14 -9 -23t-23 -9q-12 0 -24 10l-319 319q-9 9 -9 23t9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h352q13 0 22.5 -9.5t9.5 -22.5zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf191;" d="M1024 960v-640q0 -26 -19 -45t-45 -19q-20 0 -37 12l-448 320q-27 19 -27 52t27 52l448 320q17 12 37 12q26 0 45 -19t19 -45zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5z M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="&#xf192;" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5 t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf193;" horiz-adv-x="1664" d="M1023 349l102 -204q-58 -179 -210 -290t-339 -111q-156 0 -288.5 77.5t-210 210t-77.5 288.5q0 181 104.5 330t274.5 211l17 -131q-122 -54 -195 -165.5t-73 -244.5q0 -185 131.5 -316.5t316.5 -131.5q126 0 232.5 65t165 175.5t49.5 236.5zM1571 249l58 -114l-256 -128 q-13 -7 -29 -7q-40 0 -57 35l-239 477h-472q-24 0 -42.5 16.5t-21.5 40.5l-96 779q-2 16 6 42q14 51 57 82.5t97 31.5q66 0 113 -47t47 -113q0 -69 -52 -117.5t-120 -41.5l37 -289h423v-128h-407l16 -128h455q40 0 57 -35l228 -455z" /> -<glyph unicode="&#xf194;" d="M1254 899q16 85 -21 132q-52 65 -187 45q-17 -3 -41 -12.5t-57.5 -30.5t-64.5 -48.5t-59.5 -70t-44.5 -91.5q80 7 113.5 -16t26.5 -99q-5 -52 -52 -143q-43 -78 -71 -99q-44 -32 -87 14q-23 24 -37.5 64.5t-19 73t-10 84t-8.5 71.5q-23 129 -34 164q-12 37 -35.5 69 t-50.5 40q-57 16 -127 -25q-54 -32 -136.5 -106t-122.5 -102v-7q16 -8 25.5 -26t21.5 -20q21 -3 54.5 8.5t58 10.5t41.5 -30q11 -18 18.5 -38.5t15 -48t12.5 -40.5q17 -46 53 -187q36 -146 57 -197q42 -99 103 -125q43 -12 85 -1.5t76 31.5q131 77 250 237 q104 139 172.5 292.5t82.5 226.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="&#xf195;" horiz-adv-x="1152" d="M1152 704q0 -191 -94.5 -353t-256.5 -256.5t-353 -94.5h-160q-14 0 -23 9t-9 23v611l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v93l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v250q0 14 9 23t23 9h160 q14 0 23 -9t9 -23v-181l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-93l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-487q188 13 318 151t130 328q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" /> -<glyph unicode="&#xf196;" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-352v-352q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v352h-352q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h352v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-352h352q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832 q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="&#xf197;" horiz-adv-x="2176" d="M620 416q-110 -64 -268 -64h-128v64h-64q-13 0 -22.5 23.5t-9.5 56.5q0 24 7 49q-58 2 -96.5 10.5t-38.5 20.5t38.5 20.5t96.5 10.5q-7 25 -7 49q0 33 9.5 56.5t22.5 23.5h64v64h128q158 0 268 -64h1113q42 -7 106.5 -18t80.5 -14q89 -15 150 -40.5t83.5 -47.5t22.5 -40 t-22.5 -40t-83.5 -47.5t-150 -40.5q-16 -3 -80.5 -14t-106.5 -18h-1113zM1739 668q53 -36 53 -92t-53 -92l81 -30q68 48 68 122t-68 122zM625 400h1015q-217 -38 -456 -80q-57 0 -113 -24t-83 -48l-28 -24l-288 -288q-26 -26 -70.5 -45t-89.5 -19h-96l-93 464h29 q157 0 273 64zM352 816h-29l93 464h96q46 0 90 -19t70 -45l288 -288q4 -4 11 -10.5t30.5 -23t48.5 -29t61.5 -23t72.5 -10.5l456 -80h-1015q-116 64 -273 64z" /> -<glyph unicode="&#xf198;" horiz-adv-x="1664" d="M1519 760q62 0 103.5 -40.5t41.5 -101.5q0 -97 -93 -130l-172 -59l56 -167q7 -21 7 -47q0 -59 -42 -102t-101 -43q-47 0 -85.5 27t-53.5 72l-55 165l-310 -106l55 -164q8 -24 8 -47q0 -59 -42 -102t-102 -43q-47 0 -85 27t-53 72l-55 163l-153 -53q-29 -9 -50 -9 q-61 0 -101.5 40t-40.5 101q0 47 27.5 85t71.5 53l156 53l-105 313l-156 -54q-26 -8 -48 -8q-60 0 -101 40.5t-41 100.5q0 47 27.5 85t71.5 53l157 53l-53 159q-8 24 -8 47q0 60 42 102.5t102 42.5q47 0 85 -27t53 -72l54 -160l310 105l-54 160q-8 24 -8 47q0 59 42.5 102 t101.5 43q47 0 85.5 -27.5t53.5 -71.5l53 -161l162 55q21 6 43 6q60 0 102.5 -39.5t42.5 -98.5q0 -45 -30 -81.5t-74 -51.5l-157 -54l105 -316l164 56q24 8 46 8zM725 498l310 105l-105 315l-310 -107z" /> -<glyph unicode="&#xf199;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM1280 352v436q-31 -35 -64 -55q-34 -22 -132.5 -85t-151.5 -99q-98 -69 -164 -69v0v0q-66 0 -164 69 q-46 32 -141.5 92.5t-142.5 92.5q-12 8 -33 27t-31 27v-436q0 -40 28 -68t68 -28h832q40 0 68 28t28 68zM1280 925q0 41 -27.5 70t-68.5 29h-832q-40 0 -68 -28t-28 -68q0 -37 30.5 -76.5t67.5 -64.5q47 -32 137.5 -89t129.5 -83q3 -2 17 -11.5t21 -14t21 -13t23.5 -13 t21.5 -9.5t22.5 -7.5t20.5 -2.5t20.5 2.5t22.5 7.5t21.5 9.5t23.5 13t21 13t21 14t17 11.5l267 174q35 23 66.5 62.5t31.5 73.5z" /> -<glyph unicode="&#xf19a;" horiz-adv-x="1792" d="M127 640q0 163 67 313l367 -1005q-196 95 -315 281t-119 411zM1415 679q0 -19 -2.5 -38.5t-10 -49.5t-11.5 -44t-17.5 -59t-17.5 -58l-76 -256l-278 826q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-75 1 -202 10q-12 1 -20.5 -5t-11.5 -15t-1.5 -18.5t9 -16.5 t19.5 -8l80 -8l120 -328l-168 -504l-280 832q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-7 0 -23 0.5t-26 0.5q105 160 274.5 253.5t367.5 93.5q147 0 280.5 -53t238.5 -149h-10q-55 0 -92 -40.5t-37 -95.5q0 -12 2 -24t4 -21.5t8 -23t9 -21t12 -22.5t12.5 -21 t14.5 -24t14 -23q63 -107 63 -212zM909 573l237 -647q1 -6 5 -11q-126 -44 -255 -44q-112 0 -217 32zM1570 1009q95 -174 95 -369q0 -209 -104 -385.5t-279 -278.5l235 678q59 169 59 276q0 42 -6 79zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286 t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 -215q173 0 331.5 68t273 182.5t182.5 273t68 331.5t-68 331.5t-182.5 273t-273 182.5t-331.5 68t-331.5 -68t-273 -182.5t-182.5 -273t-68 -331.5t68 -331.5t182.5 -273 t273 -182.5t331.5 -68z" /> -<glyph unicode="&#xf19b;" horiz-adv-x="1792" d="M1086 1536v-1536l-272 -128q-228 20 -414 102t-293 208.5t-107 272.5q0 140 100.5 263.5t275 205.5t391.5 108v-172q-217 -38 -356.5 -150t-139.5 -255q0 -152 154.5 -267t388.5 -145v1360zM1755 954l37 -390l-525 114l147 83q-119 70 -280 99v172q277 -33 481 -157z" /> -<glyph unicode="&#xf19c;" horiz-adv-x="2048" d="M960 1536l960 -384v-128h-128q0 -26 -20.5 -45t-48.5 -19h-1526q-28 0 -48.5 19t-20.5 45h-128v128zM256 896h256v-768h128v768h256v-768h128v768h256v-768h128v768h256v-768h59q28 0 48.5 -19t20.5 -45v-64h-1664v64q0 26 20.5 45t48.5 19h59v768zM1851 -64 q28 0 48.5 -19t20.5 -45v-128h-1920v128q0 26 20.5 45t48.5 19h1782z" /> -<glyph unicode="&#xf19d;" horiz-adv-x="2304" d="M1774 700l18 -316q4 -69 -82 -128t-235 -93.5t-323 -34.5t-323 34.5t-235 93.5t-82 128l18 316l574 -181q22 -7 48 -7t48 7zM2304 1024q0 -23 -22 -31l-1120 -352q-4 -1 -10 -1t-10 1l-652 206q-43 -34 -71 -111.5t-34 -178.5q63 -36 63 -109q0 -69 -58 -107l58 -433 q2 -14 -8 -25q-9 -11 -24 -11h-192q-15 0 -24 11q-10 11 -8 25l58 433q-58 38 -58 107q0 73 65 111q11 207 98 330l-333 104q-22 8 -22 31t22 31l1120 352q4 1 10 1t10 -1l1120 -352q22 -8 22 -31z" /> -<glyph unicode="&#xf19e;" d="M859 579l13 -707q-62 11 -105 11q-41 0 -105 -11l13 707q-40 69 -168.5 295.5t-216.5 374.5t-181 287q58 -15 108 -15q43 0 111 15q63 -111 133.5 -229.5t167 -276.5t138.5 -227q37 61 109.5 177.5t117.5 190t105 176t107 189.5q54 -14 107 -14q56 0 114 14v0 q-28 -39 -60 -88.5t-49.5 -78.5t-56.5 -96t-49 -84q-146 -248 -353 -610z" /> -<glyph unicode="&#xf1a0;" horiz-adv-x="1280" d="M981 197q0 25 -7 49t-14.5 42t-27 41.5t-29.5 35t-38.5 34.5t-36.5 29t-41.5 30t-36.5 26q-16 2 -49 2q-53 0 -104.5 -7t-107 -25t-97 -46t-68.5 -74.5t-27 -105.5q0 -56 23.5 -102t61 -75.5t87 -50t100 -29t101.5 -8.5q58 0 111.5 13t99 39t73 73t27.5 109zM864 1055 q0 59 -17 125.5t-48 129t-84 103.5t-117 41q-42 0 -82.5 -19.5t-66.5 -52.5q-46 -59 -46 -160q0 -46 10 -97.5t31.5 -103t52 -92.5t75 -67t96.5 -26q37 0 77.5 16.5t65.5 43.5q53 56 53 159zM752 1536h417l-137 -88h-132q75 -63 113 -133t38 -160q0 -72 -24.5 -129.5 t-59.5 -93t-69.5 -65t-59 -61.5t-24.5 -66q0 -36 32 -70.5t77 -68t90.5 -73.5t77.5 -104t32 -142q0 -91 -49 -173q-71 -122 -209.5 -179.5t-298.5 -57.5q-132 0 -246.5 41.5t-172.5 137.5q-36 59 -36 131q0 81 44.5 150t118.5 115q131 82 404 100q-32 41 -47.5 73.5 t-15.5 73.5q0 40 21 85q-46 -4 -68 -4q-148 0 -249.5 96.5t-101.5 244.5q0 82 36 159t99 131q76 66 182 98t218 32z" /> -<glyph unicode="&#xf1a1;" horiz-adv-x="2304" d="M1509 107q0 -14 -12 -29q-52 -59 -147.5 -83t-196.5 -24q-252 0 -346 107q-12 15 -12 29q0 17 12 29.5t29 12.5q15 0 30 -12q58 -49 125.5 -66t159.5 -17t160 17t127 66q15 12 30 12q17 0 29 -12.5t12 -29.5zM978 498q0 -61 -43 -104t-104 -43q-60 0 -104.5 43.5 t-44.5 103.5q0 61 44 105t105 44t104 -44t43 -105zM1622 498q0 -61 -43 -104t-104 -43q-60 0 -104.5 43.5t-44.5 103.5q0 61 44 105t105 44t104 -44t43 -105zM415 793q-39 27 -88 27q-66 0 -113 -47t-47 -113q0 -72 54 -121q53 141 194 254zM2020 382q0 222 -249 387 q-128 85 -291.5 126.5t-331.5 41.5t-331.5 -41.5t-292.5 -126.5q-249 -165 -249 -387t249 -387q129 -85 292.5 -126.5t331.5 -41.5t331.5 41.5t291.5 126.5q249 165 249 387zM2137 660q0 66 -47 113t-113 47q-50 0 -93 -30q140 -114 192 -256q61 48 61 126zM1993 1335 q0 49 -34.5 83.5t-82.5 34.5q-49 0 -83.5 -34.5t-34.5 -83.5q0 -48 34.5 -82.5t83.5 -34.5q48 0 82.5 34.5t34.5 82.5zM2220 660q0 -65 -33 -122t-89 -90q5 -35 5 -66q0 -139 -79 -255.5t-208 -201.5q-140 -92 -313.5 -136.5t-354.5 -44.5t-355 44.5t-314 136.5 q-129 85 -208 201.5t-79 255.5q0 36 6 71q-53 33 -83.5 88.5t-30.5 118.5q0 100 71 171.5t172 71.5q91 0 159 -60q265 170 638 177l144 456q10 29 40 29q24 0 384 -90q24 55 74 88t110 33q82 0 141 -59t59 -142t-59 -141.5t-141 -58.5q-83 0 -141.5 58.5t-59.5 140.5 l-339 80l-125 -395q349 -15 603 -179q71 63 163 63q101 0 172 -71.5t71 -171.5z" /> -<glyph unicode="&#xf1a2;" d="M950 393q7 7 17.5 7t17.5 -7t7 -18t-7 -18q-65 -64 -208 -64h-1h-1q-143 0 -207 64q-8 7 -8 18t8 18q7 7 17.5 7t17.5 -7q49 -51 172 -51h1h1q122 0 173 51zM671 613q0 -37 -26 -64t-63 -27t-63 27t-26 64t26 63t63 26t63 -26t26 -63zM1214 1049q-29 0 -50 21t-21 50 q0 30 21 51t50 21q30 0 51 -21t21 -51q0 -29 -21 -50t-51 -21zM1216 1408q132 0 226 -94t94 -227v-894q0 -133 -94 -227t-226 -94h-896q-132 0 -226 94t-94 227v894q0 133 94 227t226 94h896zM1321 596q35 14 57 45.5t22 70.5q0 51 -36 87.5t-87 36.5q-60 0 -98 -48 q-151 107 -375 115l83 265l206 -49q1 -50 36.5 -85t84.5 -35q50 0 86 35.5t36 85.5t-36 86t-86 36q-36 0 -66 -20.5t-45 -53.5l-227 54q-9 2 -17.5 -2.5t-11.5 -14.5l-95 -302q-224 -4 -381 -113q-36 43 -93 43q-51 0 -87 -36.5t-36 -87.5q0 -37 19.5 -67.5t52.5 -45.5 q-7 -25 -7 -54q0 -98 74 -181.5t201.5 -132t278.5 -48.5q150 0 277.5 48.5t201.5 132t74 181.5q0 27 -6 54zM971 702q37 0 63 -26t26 -63t-26 -64t-63 -27t-63 27t-26 64t26 63t63 26z" /> -<glyph unicode="&#xf1a3;" d="M866 697l90 27v62q0 79 -58 135t-138 56t-138 -55.5t-58 -134.5v-283q0 -20 -14 -33.5t-33 -13.5t-32.5 13.5t-13.5 33.5v120h-151v-122q0 -82 57.5 -139t139.5 -57q81 0 138.5 56.5t57.5 136.5v280q0 19 13.5 33t33.5 14q19 0 32.5 -14t13.5 -33v-54zM1199 502v122h-150 v-126q0 -20 -13.5 -33.5t-33.5 -13.5q-19 0 -32.5 14t-13.5 33v123l-90 -26l-60 28v-123q0 -80 58 -137t139 -57t138.5 57t57.5 139zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103 t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf1a4;" horiz-adv-x="1920" d="M1062 824v118q0 42 -30 72t-72 30t-72 -30t-30 -72v-612q0 -175 -126 -299t-303 -124q-178 0 -303.5 125.5t-125.5 303.5v266h328v-262q0 -43 30 -72.5t72 -29.5t72 29.5t30 72.5v620q0 171 126.5 292t301.5 121q176 0 302 -122t126 -294v-136l-195 -58zM1592 602h328 v-266q0 -178 -125.5 -303.5t-303.5 -125.5q-177 0 -303 124.5t-126 300.5v268l131 -61l195 58v-270q0 -42 30 -71.5t72 -29.5t72 29.5t30 71.5v275z" /> -<glyph unicode="&#xf1a5;" d="M1472 160v480h-704v704h-480q-93 0 -158.5 -65.5t-65.5 -158.5v-480h704v-704h480q93 0 158.5 65.5t65.5 158.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" /> -<glyph unicode="&#xf1a6;" horiz-adv-x="2048" d="M328 1254h204v-983h-532v697h328v286zM328 435v369h-123v-369h123zM614 968v-697h205v697h-205zM614 1254v-204h205v204h-205zM901 968h533v-942h-533v163h328v82h-328v697zM1229 435v369h-123v-369h123zM1516 968h532v-942h-532v163h327v82h-327v697zM1843 435v369h-123 v-369h123z" /> -<glyph unicode="&#xf1a7;" d="M1046 516q0 -64 -38 -109t-91 -45q-43 0 -70 15v277q28 17 70 17q53 0 91 -45.5t38 -109.5zM703 944q0 -64 -38 -109.5t-91 -45.5q-43 0 -70 15v277q28 17 70 17q53 0 91 -45t38 -109zM1265 513q0 134 -88 229t-213 95q-20 0 -39 -3q-23 -78 -78 -136q-87 -95 -211 -101 v-636l211 41v206q51 -19 117 -19q125 0 213 95t88 229zM922 940q0 134 -88.5 229t-213.5 95q-74 0 -141 -36h-186v-840l211 41v206q55 -19 116 -19q125 0 213.5 95t88.5 229zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="&#xf1a8;" horiz-adv-x="2038" d="M1222 607q75 3 143.5 -20.5t118 -58.5t101 -94.5t84 -108t75.5 -120.5q33 -56 78.5 -109t75.5 -80.5t99 -88.5q-48 -30 -108.5 -57.5t-138.5 -59t-114 -47.5q-44 37 -74 115t-43.5 164.5t-33 180.5t-42.5 168.5t-72.5 123t-122.5 48.5l-10 -2l-6 -4q4 -5 13 -14 q6 -5 28 -23.5t25.5 -22t19 -18t18 -20.5t11.5 -21t10.5 -27.5t4.5 -31t4 -40.5l1 -33q1 -26 -2.5 -57.5t-7.5 -52t-12.5 -58.5t-11.5 -53q-35 1 -101 -9.5t-98 -10.5q-39 0 -72 10q-2 16 -2 47q0 74 3 96q2 13 31.5 41.5t57 59t26.5 51.5q-24 2 -43 -24 q-36 -53 -111.5 -99.5t-136.5 -46.5q-25 0 -75.5 63t-106.5 139.5t-84 96.5q-6 4 -27 30q-482 -112 -513 -112q-16 0 -28 11t-12 27q0 15 8.5 26.5t22.5 14.5l486 106q-8 14 -8 25t5.5 17.5t16 11.5t20 7t23 4.5t18.5 4.5q4 1 15.5 7.5t17.5 6.5q15 0 28 -16t20 -33 q163 37 172 37q17 0 29.5 -11t12.5 -28q0 -15 -8.5 -26t-23.5 -14l-182 -40l-1 -16q-1 -26 81.5 -117.5t104.5 -91.5q47 0 119 80t72 129q0 36 -23.5 53t-51 18.5t-51 11.5t-23.5 34q0 16 10 34l-68 19q43 44 43 117q0 26 -5 58q82 16 144 16q44 0 71.5 -1.5t48.5 -8.5 t31 -13.5t20.5 -24.5t15.5 -33.5t17 -47.5t24 -60l50 25q-3 -40 -23 -60t-42.5 -21t-40 -6.5t-16.5 -20.5zM1282 842q-5 5 -13.5 15.5t-12 14.5t-10.5 11.5t-10 10.5l-8 8t-8.5 7.5t-8 5t-8.5 4.5q-7 3 -14.5 5t-20.5 2.5t-22 0.5h-32.5h-37.5q-126 0 -217 -43 q16 30 36 46.5t54 29.5t65.5 36t46 36.5t50 55t43.5 50.5q12 -9 28 -31.5t32 -36.5t38 -13l12 1v-76l22 -1q247 95 371 190q28 21 50 39t42.5 37.5t33 31t29.5 34t24 31t24.5 37t23 38t27 47.5t29.5 53l7 9q-2 -53 -43 -139q-79 -165 -205 -264t-306 -142q-14 -3 -42 -7.5 t-50 -9.5t-39 -14q3 -19 24.5 -46t21.5 -34q0 -11 -26 -30zM1061 -79q39 26 131.5 47.5t146.5 21.5q9 0 22.5 -15.5t28 -42.5t26 -50t24 -51t14.5 -33q-121 -45 -244 -45q-61 0 -125 11zM822 568l48 12l109 -177l-73 -48zM1323 51q3 -15 3 -16q0 -7 -17.5 -14.5t-46 -13 t-54 -9.5t-53.5 -7.5t-32 -4.5l-7 43q21 2 60.5 8.5t72 10t60.5 3.5h14zM866 679l-96 -20l-6 17q10 1 32.5 7t34.5 6q19 0 35 -10zM1061 45h31l10 -83l-41 -12v95zM1950 1535v1v-1zM1950 1535l-1 -5l-2 -2l1 3zM1950 1535l1 1z" /> -<glyph unicode="&#xf1a9;" d="M1167 -50q-5 19 -24 5q-30 -22 -87 -39t-131 -17q-129 0 -193 49q-5 4 -13 4q-11 0 -26 -12q-7 -6 -7.5 -16t7.5 -20q34 -32 87.5 -46t102.5 -12.5t99 4.5q41 4 84.5 20.5t65 30t28.5 20.5q12 12 7 29zM1128 65q-19 47 -39 61q-23 15 -76 15q-47 0 -71 -10 q-29 -12 -78 -56q-26 -24 -12 -44q9 -8 17.5 -4.5t31.5 23.5q3 2 10.5 8.5t10.5 8.5t10 7t11.5 7t12.5 5t15 4.5t16.5 2.5t20.5 1q27 0 44.5 -7.5t23 -14.5t13.5 -22q10 -17 12.5 -20t12.5 1q23 12 14 34zM1483 346q0 22 -5 44.5t-16.5 45t-34 36.5t-52.5 14 q-33 0 -97 -41.5t-129 -83.5t-101 -42q-27 -1 -63.5 19t-76 49t-83.5 58t-100 49t-111 19q-115 -1 -197 -78.5t-84 -178.5q-2 -112 74 -164q29 -20 62.5 -28.5t103.5 -8.5q57 0 132 32.5t134 71t120 70.5t93 31q26 -1 65 -31.5t71.5 -67t68 -67.5t55.5 -32q35 -3 58.5 14 t55.5 63q28 41 42.5 101t14.5 106zM1536 506q0 -164 -62 -304.5t-166 -236t-242.5 -149.5t-290.5 -54t-293 57.5t-247.5 157t-170.5 241.5t-64 302q0 89 19.5 172.5t49 145.5t70.5 118.5t78.5 94t78.5 69.5t64.5 46.5t42.5 24.5q14 8 51 26.5t54.5 28.5t48 30t60.5 44 q36 28 58 72.5t30 125.5q129 -155 186 -193q44 -29 130 -68t129 -66q21 -13 39 -25t60.5 -46.5t76 -70.5t75 -95t69 -122t47 -148.5t19.5 -177.5z" /> -<glyph unicode="&#xf1aa;" d="M1070 463l-160 -160l-151 -152l-30 -30q-65 -64 -151.5 -87t-171.5 -2q-16 -70 -72 -115t-129 -45q-85 0 -145 60.5t-60 145.5q0 72 44.5 128t113.5 72q-22 86 1 173t88 152l12 12l151 -152l-11 -11q-37 -37 -37 -89t37 -90q37 -37 89 -37t89 37l30 30l151 152l161 160z M729 1145l12 -12l-152 -152l-12 12q-37 37 -89 37t-89 -37t-37 -89.5t37 -89.5l29 -29l152 -152l160 -160l-151 -152l-161 160l-151 152l-30 30q-68 67 -90 159.5t5 179.5q-70 15 -115 71t-45 129q0 85 60 145.5t145 60.5q76 0 133.5 -49t69.5 -123q84 20 169.5 -3.5 t149.5 -87.5zM1536 78q0 -85 -60 -145.5t-145 -60.5q-74 0 -131 47t-71 118q-86 -28 -179.5 -6t-161.5 90l-11 12l151 152l12 -12q37 -37 89 -37t89 37t37 89t-37 89l-30 30l-152 152l-160 160l152 152l160 -160l152 -152l29 -30q64 -64 87.5 -150.5t2.5 -171.5 q76 -11 126.5 -68.5t50.5 -134.5zM1534 1202q0 -77 -51 -135t-127 -69q26 -85 3 -176.5t-90 -158.5l-12 -12l-151 152l12 12q37 37 37 89t-37 89t-89 37t-89 -37l-30 -30l-152 -152l-160 -160l-152 152l161 160l152 152l29 30q67 67 159 89.5t178 -3.5q11 75 68.5 126 t135.5 51q85 0 145 -60.5t60 -145.5z" /> -<glyph unicode="&#xf1ab;" d="M654 458q-1 -3 -12.5 0.5t-31.5 11.5l-20 9q-44 20 -87 49q-7 5 -41 31.5t-38 28.5q-67 -103 -134 -181q-81 -95 -105 -110q-4 -2 -19.5 -4t-18.5 0q6 4 82 92q21 24 85.5 115t78.5 118q17 30 51 98.5t36 77.5q-8 1 -110 -33q-8 -2 -27.5 -7.5t-34.5 -9.5t-17 -5 q-2 -2 -2 -10.5t-1 -9.5q-5 -10 -31 -15q-23 -7 -47 0q-18 4 -28 21q-4 6 -5 23q6 2 24.5 5t29.5 6q58 16 105 32q100 35 102 35q10 2 43 19.5t44 21.5q9 3 21.5 8t14.5 5.5t6 -0.5q2 -12 -1 -33q0 -2 -12.5 -27t-26.5 -53.5t-17 -33.5q-25 -50 -77 -131l64 -28 q12 -6 74.5 -32t67.5 -28q4 -1 10.5 -25.5t4.5 -30.5zM449 944q3 -15 -4 -28q-12 -23 -50 -38q-30 -12 -60 -12q-26 3 -49 26q-14 15 -18 41l1 3q3 -3 19.5 -5t26.5 0t58 16q36 12 55 14q17 0 21 -17zM1147 815l63 -227l-139 42zM39 15l694 232v1032l-694 -233v-1031z M1280 332l102 -31l-181 657l-100 31l-216 -536l102 -31l45 110l211 -65zM777 1294l573 -184v380zM1088 -29l158 -13l-54 -160l-40 66q-130 -83 -276 -108q-58 -12 -91 -12h-84q-79 0 -199.5 39t-183.5 85q-8 7 -8 16q0 8 5 13.5t13 5.5q4 0 18 -7.5t30.5 -16.5t20.5 -11 q73 -37 159.5 -61.5t157.5 -24.5q95 0 167 14.5t157 50.5q15 7 30.5 15.5t34 19t28.5 16.5zM1536 1050v-1079l-774 246q-14 -6 -375 -127.5t-368 -121.5q-13 0 -18 13q0 1 -1 3v1078q3 9 4 10q5 6 20 11q106 35 149 50v384l558 -198q2 0 160.5 55t316 108.5t161.5 53.5 q20 0 20 -21v-418z" /> -<glyph unicode="&#xf1ac;" horiz-adv-x="1792" d="M288 1152q66 0 113 -47t47 -113v-1088q0 -66 -47 -113t-113 -47h-128q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h128zM1664 989q58 -34 93 -93t35 -128v-768q0 -106 -75 -181t-181 -75h-864q-66 0 -113 47t-47 113v1536q0 40 28 68t68 28h672q40 0 88 -20t76 -48 l152 -152q28 -28 48 -76t20 -88v-163zM928 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 512v128q0 14 -9 23 t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128 q14 0 23 9t9 23zM1184 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 256v128q0 14 -9 23t-23 9h-128 q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1536 896v256h-160q-40 0 -68 28t-28 68v160h-640v-512h896z" /> -<glyph unicode="&#xf1ad;" d="M1344 1536q26 0 45 -19t19 -45v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280zM512 1248v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 992v-64q0 -14 9 -23t23 -9h64q14 0 23 9 t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 736v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 480v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM384 160v64 q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64 q14 0 23 9t9 23zM384 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 -96v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9 t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM896 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 928v64 q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 160v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64 q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9 t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23z" /> -<glyph unicode="&#xf1ae;" horiz-adv-x="1280" d="M1188 988l-292 -292v-824q0 -46 -33 -79t-79 -33t-79 33t-33 79v384h-64v-384q0 -46 -33 -79t-79 -33t-79 33t-33 79v824l-292 292q-28 28 -28 68t28 68t68 28t68 -28l228 -228h368l228 228q28 28 68 28t68 -28t28 -68t-28 -68zM864 1152q0 -93 -65.5 -158.5 t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" /> -<glyph unicode="&#xf1b0;" horiz-adv-x="1664" d="M780 1064q0 -60 -19 -113.5t-63 -92.5t-105 -39q-76 0 -138 57.5t-92 135.5t-30 151q0 60 19 113.5t63 92.5t105 39q77 0 138.5 -57.5t91.5 -135t30 -151.5zM438 581q0 -80 -42 -139t-119 -59q-76 0 -141.5 55.5t-100.5 133.5t-35 152q0 80 42 139.5t119 59.5 q76 0 141.5 -55.5t100.5 -134t35 -152.5zM832 608q118 0 255 -97.5t229 -237t92 -254.5q0 -46 -17 -76.5t-48.5 -45t-64.5 -20t-76 -5.5q-68 0 -187.5 45t-182.5 45q-66 0 -192.5 -44.5t-200.5 -44.5q-183 0 -183 146q0 86 56 191.5t139.5 192.5t187.5 146t193 59zM1071 819 q-61 0 -105 39t-63 92.5t-19 113.5q0 74 30 151.5t91.5 135t138.5 57.5q61 0 105 -39t63 -92.5t19 -113.5q0 -73 -30 -151t-92 -135.5t-138 -57.5zM1503 923q77 0 119 -59.5t42 -139.5q0 -74 -35 -152t-100.5 -133.5t-141.5 -55.5q-77 0 -119 59t-42 139q0 74 35 152.5 t100.5 134t141.5 55.5z" /> -<glyph unicode="&#xf1b1;" horiz-adv-x="768" d="M704 1008q0 -145 -57 -243.5t-152 -135.5l45 -821q2 -26 -16 -45t-44 -19h-192q-26 0 -44 19t-16 45l45 821q-95 37 -152 135.5t-57 243.5q0 128 42.5 249.5t117.5 200t160 78.5t160 -78.5t117.5 -200t42.5 -249.5z" /> -<glyph unicode="&#xf1b2;" horiz-adv-x="1792" d="M896 -93l640 349v636l-640 -233v-752zM832 772l698 254l-698 254l-698 -254zM1664 1024v-768q0 -35 -18 -65t-49 -47l-704 -384q-28 -16 -61 -16t-61 16l-704 384q-31 17 -49 47t-18 65v768q0 40 23 73t61 47l704 256q22 8 44 8t44 -8l704 -256q38 -14 61 -47t23 -73z " /> -<glyph unicode="&#xf1b3;" horiz-adv-x="2304" d="M640 -96l384 192v314l-384 -164v-342zM576 358l404 173l-404 173l-404 -173zM1664 -96l384 192v314l-384 -164v-342zM1600 358l404 173l-404 173l-404 -173zM1152 651l384 165v266l-384 -164v-267zM1088 1030l441 189l-441 189l-441 -189zM2176 512v-416q0 -36 -19 -67 t-52 -47l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-5 2 -7 4q-2 -2 -7 -4l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-33 16 -52 47t-19 67v416q0 38 21.5 70t56.5 48l434 186v400q0 38 21.5 70t56.5 48l448 192q23 10 50 10t50 -10l448 -192q35 -16 56.5 -48t21.5 -70 v-400l434 -186q36 -16 57 -48t21 -70z" /> -<glyph unicode="&#xf1b4;" horiz-adv-x="2048" d="M1848 1197h-511v-124h511v124zM1596 771q-90 0 -146 -52.5t-62 -142.5h408q-18 195 -200 195zM1612 186q63 0 122 32t76 87h221q-100 -307 -427 -307q-214 0 -340.5 132t-126.5 347q0 208 130.5 345.5t336.5 137.5q138 0 240.5 -68t153 -179t50.5 -248q0 -17 -2 -47h-658 q0 -111 57.5 -171.5t166.5 -60.5zM277 236h296q205 0 205 167q0 180 -199 180h-302v-347zM277 773h281q78 0 123.5 36.5t45.5 113.5q0 144 -190 144h-260v-294zM0 1282h594q87 0 155 -14t126.5 -47.5t90 -96.5t31.5 -154q0 -181 -172 -263q114 -32 172 -115t58 -204 q0 -75 -24.5 -136.5t-66 -103.5t-98.5 -71t-121 -42t-134 -13h-611v1260z" /> -<glyph unicode="&#xf1b5;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM499 1041h-371v-787h382q117 0 197 57.5t80 170.5q0 158 -143 200q107 52 107 164q0 57 -19.5 96.5 t-56.5 60.5t-79 29.5t-97 8.5zM477 723h-176v184h163q119 0 119 -90q0 -94 -106 -94zM486 388h-185v217h189q124 0 124 -113q0 -104 -128 -104zM1136 356q-68 0 -104 38t-36 107h411q1 10 1 30q0 132 -74.5 220.5t-203.5 88.5q-128 0 -210 -86t-82 -216q0 -135 79 -217 t213 -82q205 0 267 191h-138q-11 -34 -47.5 -54t-75.5 -20zM1126 722q113 0 124 -122h-254q4 56 39 89t91 33zM964 988h319v-77h-319v77z" /> -<glyph unicode="&#xf1b6;" horiz-adv-x="1792" d="M1582 954q0 -101 -71.5 -172.5t-172.5 -71.5t-172.5 71.5t-71.5 172.5t71.5 172.5t172.5 71.5t172.5 -71.5t71.5 -172.5zM812 212q0 104 -73 177t-177 73q-27 0 -54 -6l104 -42q77 -31 109.5 -106.5t1.5 -151.5q-31 -77 -107 -109t-152 -1q-21 8 -62 24.5t-61 24.5 q32 -60 91 -96.5t130 -36.5q104 0 177 73t73 177zM1642 953q0 126 -89.5 215.5t-215.5 89.5q-127 0 -216.5 -89.5t-89.5 -215.5q0 -127 89.5 -216t216.5 -89q126 0 215.5 89t89.5 216zM1792 953q0 -189 -133.5 -322t-321.5 -133l-437 -319q-12 -129 -109 -218t-229 -89 q-121 0 -214 76t-118 192l-230 92v429l389 -157q79 48 173 48q13 0 35 -2l284 407q2 187 135.5 319t320.5 132q188 0 321.5 -133.5t133.5 -321.5z" /> -<glyph unicode="&#xf1b7;" d="M1242 889q0 80 -57 136.5t-137 56.5t-136.5 -57t-56.5 -136q0 -80 56.5 -136.5t136.5 -56.5t137 56.5t57 136.5zM632 301q0 -83 -58 -140.5t-140 -57.5q-56 0 -103 29t-72 77q52 -20 98 -40q60 -24 120 1.5t85 86.5q24 60 -1.5 120t-86.5 84l-82 33q22 5 42 5 q82 0 140 -57.5t58 -140.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v153l172 -69q20 -92 93.5 -152t168.5 -60q104 0 181 70t87 173l345 252q150 0 255.5 105.5t105.5 254.5q0 150 -105.5 255.5t-255.5 105.5 q-148 0 -253 -104.5t-107 -252.5l-225 -322q-9 1 -28 1q-75 0 -137 -37l-297 119v468q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5zM1289 887q0 -100 -71 -170.5t-171 -70.5t-170.5 70.5t-70.5 170.5t70.5 171t170.5 71q101 0 171.5 -70.5t70.5 -171.5z " /> -<glyph unicode="&#xf1b8;" horiz-adv-x="1792" d="M836 367l-15 -368l-2 -22l-420 29q-36 3 -67 31.5t-47 65.5q-11 27 -14.5 55t4 65t12 55t21.5 64t19 53q78 -12 509 -28zM449 953l180 -379l-147 92q-63 -72 -111.5 -144.5t-72.5 -125t-39.5 -94.5t-18.5 -63l-4 -21l-190 357q-17 26 -18 56t6 47l8 18q35 63 114 188 l-140 86zM1680 436l-188 -359q-12 -29 -36.5 -46.5t-43.5 -20.5l-18 -4q-71 -7 -219 -12l8 -164l-230 367l211 362l7 -173q170 -16 283 -5t170 33zM895 1360q-47 -63 -265 -435l-317 187l-19 12l225 356q20 31 60 45t80 10q24 -2 48.5 -12t42 -21t41.5 -33t36 -34.5 t36 -39.5t32 -35zM1550 1053l212 -363q18 -37 12.5 -76t-27.5 -74q-13 -20 -33 -37t-38 -28t-48.5 -22t-47 -16t-51.5 -14t-46 -12q-34 72 -265 436l313 195zM1407 1279l142 83l-220 -373l-419 20l151 86q-34 89 -75 166t-75.5 123.5t-64.5 80t-47 46.5l-17 13l405 -1 q31 3 58 -10.5t39 -28.5l11 -15q39 -61 112 -190z" /> -<glyph unicode="&#xf1b9;" horiz-adv-x="2048" d="M480 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM516 768h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5zM1888 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM2048 544v-384 q0 -14 -9 -23t-23 -9h-96v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-1024v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5t179 63.5h768q98 0 179 -63.5t104 -157.5 l105 -419h28q93 0 158.5 -65.5t65.5 -158.5z" /> -<glyph unicode="&#xf1ba;" horiz-adv-x="2048" d="M1824 640q93 0 158.5 -65.5t65.5 -158.5v-384q0 -14 -9 -23t-23 -9h-96v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-1024v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5 t179 63.5h128v224q0 14 9 23t23 9h448q14 0 23 -9t9 -23v-224h128q98 0 179 -63.5t104 -157.5l105 -419h28zM320 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM516 640h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5z M1728 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47z" /> -<glyph unicode="&#xf1bb;" d="M1504 64q0 -26 -19 -45t-45 -19h-462q1 -17 6 -87.5t5 -108.5q0 -25 -18 -42.5t-43 -17.5h-320q-25 0 -43 17.5t-18 42.5q0 38 5 108.5t6 87.5h-462q-26 0 -45 19t-19 45t19 45l402 403h-229q-26 0 -45 19t-19 45t19 45l402 403h-197q-26 0 -45 19t-19 45t19 45l384 384 q19 19 45 19t45 -19l384 -384q19 -19 19 -45t-19 -45t-45 -19h-197l402 -403q19 -19 19 -45t-19 -45t-45 -19h-229l402 -403q19 -19 19 -45z" /> -<glyph unicode="&#xf1bc;" d="M1127 326q0 32 -30 51q-193 115 -447 115q-133 0 -287 -34q-42 -9 -42 -52q0 -20 13.5 -34.5t35.5 -14.5q5 0 37 8q132 27 243 27q226 0 397 -103q19 -11 33 -11q19 0 33 13.5t14 34.5zM1223 541q0 40 -35 61q-237 141 -548 141q-153 0 -303 -42q-48 -13 -48 -64 q0 -25 17.5 -42.5t42.5 -17.5q7 0 37 8q122 33 251 33q279 0 488 -124q24 -13 38 -13q25 0 42.5 17.5t17.5 42.5zM1331 789q0 47 -40 70q-126 73 -293 110.5t-343 37.5q-204 0 -364 -47q-23 -7 -38.5 -25.5t-15.5 -48.5q0 -31 20.5 -52t51.5 -21q11 0 40 8q133 37 307 37 q159 0 309.5 -34t253.5 -95q21 -12 40 -12q29 0 50.5 20.5t21.5 51.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf1bd;" horiz-adv-x="1024" d="M1024 1233l-303 -582l24 -31h279v-415h-507l-44 -30l-142 -273l-30 -30h-301v303l303 583l-24 30h-279v415h507l44 30l142 273l30 30h301v-303z" /> -<glyph unicode="&#xf1be;" horiz-adv-x="2304" d="M784 164l16 241l-16 523q-1 10 -7.5 17t-16.5 7q-9 0 -16 -7t-7 -17l-14 -523l14 -241q1 -10 7.5 -16.5t15.5 -6.5q22 0 24 23zM1080 193l11 211l-12 586q0 16 -13 24q-8 5 -16 5t-16 -5q-13 -8 -13 -24l-1 -6l-10 -579q0 -1 11 -236v-1q0 -10 6 -17q9 -11 23 -11 q11 0 20 9q9 7 9 20zM35 533l20 -128l-20 -126q-2 -9 -9 -9t-9 9l-17 126l17 128q2 9 9 9t9 -9zM121 612l26 -207l-26 -203q-2 -9 -10 -9q-9 0 -9 10l-23 202l23 207q0 9 9 9q8 0 10 -9zM401 159zM213 650l25 -245l-25 -237q0 -11 -11 -11q-10 0 -12 11l-21 237l21 245 q2 12 12 12q11 0 11 -12zM307 657l23 -252l-23 -244q-2 -13 -14 -13q-13 0 -13 13l-21 244l21 252q0 13 13 13q12 0 14 -13zM401 639l21 -234l-21 -246q-2 -16 -16 -16q-6 0 -10.5 4.5t-4.5 11.5l-20 246l20 234q0 6 4.5 10.5t10.5 4.5q14 0 16 -15zM784 164zM495 785 l21 -380l-21 -246q0 -7 -5 -12.5t-12 -5.5q-16 0 -18 18l-18 246l18 380q2 18 18 18q7 0 12 -5.5t5 -12.5zM589 871l19 -468l-19 -244q0 -8 -5.5 -13.5t-13.5 -5.5q-18 0 -20 19l-16 244l16 468q2 19 20 19q8 0 13.5 -5.5t5.5 -13.5zM687 911l18 -506l-18 -242 q-2 -21 -22 -21q-19 0 -21 21l-16 242l16 506q0 9 6.5 15.5t14.5 6.5q9 0 15 -6.5t7 -15.5zM1079 169v0v0zM881 915l15 -510l-15 -239q0 -10 -7.5 -17.5t-17.5 -7.5t-17 7t-8 18l-14 239l14 510q0 11 7.5 18t17.5 7t17.5 -7t7.5 -18zM980 896l14 -492l-14 -236q0 -11 -8 -19 t-19 -8t-19 8t-9 19l-12 236l12 492q1 12 9 20t19 8t18.5 -8t8.5 -20zM1192 404l-14 -231v0q0 -13 -9 -22t-22 -9t-22 9t-10 22l-6 114l-6 117l12 636v3q2 15 12 24q9 7 20 7q8 0 15 -5q14 -8 16 -26zM2304 423q0 -117 -83 -199.5t-200 -82.5h-786q-13 2 -22 11t-9 22v899 q0 23 28 33q85 34 181 34q195 0 338 -131.5t160 -323.5q53 22 110 22q117 0 200 -83t83 -201z" /> -<glyph unicode="&#xf1c0;" d="M768 768q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 0q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127 t443 -43zM768 384q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 1536q208 0 385 -34.5t280 -93.5t103 -128v-128q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5 t-103 128v128q0 69 103 128t280 93.5t385 34.5z" /> -<glyph unicode="&#xf1c1;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M894 465q33 -26 84 -56q59 7 117 7q147 0 177 -49q16 -22 2 -52q0 -1 -1 -2l-2 -2v-1q-6 -38 -71 -38q-48 0 -115 20t-130 53q-221 -24 -392 -83q-153 -262 -242 -262q-15 0 -28 7l-24 12q-1 1 -6 5q-10 10 -6 36q9 40 56 91.5t132 96.5q14 9 23 -6q2 -2 2 -4q52 85 107 197 q68 136 104 262q-24 82 -30.5 159.5t6.5 127.5q11 40 42 40h21h1q23 0 35 -15q18 -21 9 -68q-2 -6 -4 -8q1 -3 1 -8v-30q-2 -123 -14 -192q55 -164 146 -238zM318 54q52 24 137 158q-51 -40 -87.5 -84t-49.5 -74zM716 974q-15 -42 -2 -132q1 7 7 44q0 3 7 43q1 4 4 8 q-1 1 -1 2t-0.5 1.5t-0.5 1.5q-1 22 -13 36q0 -1 -1 -2v-2zM592 313q135 54 284 81q-2 1 -13 9.5t-16 13.5q-76 67 -127 176q-27 -86 -83 -197q-30 -56 -45 -83zM1238 329q-24 24 -140 24q76 -28 124 -28q14 0 18 1q0 1 -2 3z" /> -<glyph unicode="&#xf1c2;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M233 768v-107h70l164 -661h159l128 485q7 20 10 46q2 16 2 24h4l3 -24q1 -3 3.5 -20t5.5 -26l128 -485h159l164 661h70v107h-300v-107h90l-99 -438q-5 -20 -7 -46l-2 -21h-4l-3 21q-1 5 -4 21t-5 25l-144 545h-114l-144 -545q-2 -9 -4.5 -24.5t-3.5 -21.5l-4 -21h-4l-2 21 q-2 26 -7 46l-99 438h90v107h-300z" /> -<glyph unicode="&#xf1c3;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M429 106v-106h281v106h-75l103 161q5 7 10 16.5t7.5 13.5t3.5 4h2q1 -4 5 -10q2 -4 4.5 -7.5t6 -8t6.5 -8.5l107 -161h-76v-106h291v106h-68l-192 273l195 282h67v107h-279v-107h74l-103 -159q-4 -7 -10 -16.5t-9 -13.5l-2 -3h-2q-1 4 -5 10q-6 11 -17 23l-106 159h76v107 h-290v-107h68l189 -272l-194 -283h-68z" /> -<glyph unicode="&#xf1c4;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M416 106v-106h327v106h-93v167h137q76 0 118 15q67 23 106.5 87t39.5 146q0 81 -37 141t-100 87q-48 19 -130 19h-368v-107h92v-555h-92zM769 386h-119v268h120q52 0 83 -18q56 -33 56 -115q0 -89 -62 -120q-31 -15 -78 -15z" /> -<glyph unicode="&#xf1c5;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M1280 320v-320h-1024v192l192 192l128 -128l384 384zM448 512q-80 0 -136 56t-56 136t56 136t136 56t136 -56t56 -136t-56 -136t-136 -56z" /> -<glyph unicode="&#xf1c6;" d="M640 1152v128h-128v-128h128zM768 1024v128h-128v-128h128zM640 896v128h-128v-128h128zM768 768v128h-128v-128h128zM1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400 v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-128v-128h-128v128h-512v-1536h1280zM781 593l107 -349q8 -27 8 -52q0 -83 -72.5 -137.5t-183.5 -54.5t-183.5 54.5t-72.5 137.5q0 25 8 52q21 63 120 396v128h128v-128h79 q22 0 39 -13t23 -34zM640 128q53 0 90.5 19t37.5 45t-37.5 45t-90.5 19t-90.5 -19t-37.5 -45t37.5 -45t90.5 -19z" /> -<glyph unicode="&#xf1c7;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M620 686q20 -8 20 -30v-544q0 -22 -20 -30q-8 -2 -12 -2q-12 0 -23 9l-166 167h-131q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h131l166 167q16 15 35 7zM1037 -3q31 0 50 24q129 159 129 363t-129 363q-16 21 -43 24t-47 -14q-21 -17 -23.5 -43.5t14.5 -47.5 q100 -123 100 -282t-100 -282q-17 -21 -14.5 -47.5t23.5 -42.5q18 -15 40 -15zM826 145q27 0 47 20q87 93 87 219t-87 219q-18 19 -45 20t-46 -17t-20 -44.5t18 -46.5q52 -57 52 -131t-52 -131q-19 -20 -18 -46.5t20 -44.5q20 -17 44 -17z" /> -<glyph unicode="&#xf1c8;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M768 768q52 0 90 -38t38 -90v-384q0 -52 -38 -90t-90 -38h-384q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h384zM1260 766q20 -8 20 -30v-576q0 -22 -20 -30q-8 -2 -12 -2q-14 0 -23 9l-265 266v90l265 266q9 9 23 9q4 0 12 -2z" /> -<glyph unicode="&#xf1c9;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M480 768q8 11 21 12.5t24 -6.5l51 -38q11 -8 12.5 -21t-6.5 -24l-182 -243l182 -243q8 -11 6.5 -24t-12.5 -21l-51 -38q-11 -8 -24 -6.5t-21 12.5l-226 301q-14 19 0 38zM1282 467q14 -19 0 -38l-226 -301q-8 -11 -21 -12.5t-24 6.5l-51 38q-11 8 -12.5 21t6.5 24l182 243 l-182 243q-8 11 -6.5 24t12.5 21l51 38q11 8 24 6.5t21 -12.5zM662 6q-13 2 -20.5 13t-5.5 24l138 831q2 13 13 20.5t24 5.5l63 -10q13 -2 20.5 -13t5.5 -24l-138 -831q-2 -13 -13 -20.5t-24 -5.5z" /> -<glyph unicode="&#xf1ca;" d="M1497 709v-198q-101 -23 -198 -23q-65 -136 -165.5 -271t-181.5 -215.5t-128 -106.5q-80 -45 -162 3q-28 17 -60.5 43.5t-85 83.5t-102.5 128.5t-107.5 184t-105.5 244t-91.5 314.5t-70.5 390h283q26 -218 70 -398.5t104.5 -317t121.5 -235.5t140 -195q169 169 287 406 q-142 72 -223 220t-81 333q0 192 104 314.5t284 122.5q178 0 273 -105.5t95 -297.5q0 -159 -58 -286q-7 -1 -19.5 -3t-46 -2t-63 6t-62 25.5t-50.5 51.5q31 103 31 184q0 87 -29 132t-79 45q-53 0 -85 -49.5t-32 -140.5q0 -186 105 -293.5t267 -107.5q62 0 121 14z" /> -<glyph unicode="&#xf1cb;" horiz-adv-x="1792" d="M216 367l603 -402v359l-334 223zM154 511l193 129l-193 129v-258zM973 -35l603 402l-269 180l-334 -223v-359zM896 458l272 182l-272 182l-272 -182zM485 733l334 223v359l-603 -402zM1445 640l193 -129v258zM1307 733l269 180l-603 402v-359zM1792 913v-546 q0 -41 -34 -64l-819 -546q-21 -13 -43 -13t-43 13l-819 546q-34 23 -34 64v546q0 41 34 64l819 546q21 13 43 13t43 -13l819 -546q34 -23 34 -64z" /> -<glyph unicode="&#xf1cc;" horiz-adv-x="2048" d="M1800 764q111 -46 179.5 -145.5t68.5 -221.5q0 -164 -118 -280.5t-285 -116.5q-4 0 -11.5 0.5t-10.5 0.5h-1209h-1h-2h-5q-170 10 -288 125.5t-118 280.5q0 110 55 203t147 147q-12 39 -12 82q0 115 82 196t199 81q95 0 172 -58q75 154 222.5 248t326.5 94 q166 0 306 -80.5t221.5 -218.5t81.5 -301q0 -6 -0.5 -18t-0.5 -18zM468 498q0 -122 84 -193t208 -71q137 0 240 99q-16 20 -47.5 56.5t-43.5 50.5q-67 -65 -144 -65q-55 0 -93.5 33.5t-38.5 87.5q0 53 38.5 87t91.5 34q44 0 84.5 -21t73 -55t65 -75t69 -82t77 -75t97 -55 t121.5 -21q121 0 204.5 71.5t83.5 190.5q0 121 -84 192t-207 71q-143 0 -241 -97q14 -16 29.5 -34t34.5 -40t29 -34q66 64 142 64q52 0 92 -33t40 -84q0 -57 -37 -91.5t-94 -34.5q-43 0 -82.5 21t-72 55t-65.5 75t-69.5 82t-77.5 75t-96.5 55t-118.5 21q-122 0 -207 -70.5 t-85 -189.5z" /> -<glyph unicode="&#xf1cd;" horiz-adv-x="1792" d="M896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 1408q-190 0 -361 -90l194 -194q82 28 167 28t167 -28l194 194q-171 90 -361 90zM218 279l194 194 q-28 82 -28 167t28 167l-194 194q-90 -171 -90 -361t90 -361zM896 -128q190 0 361 90l-194 194q-82 -28 -167 -28t-167 28l-194 -194q171 -90 361 -90zM896 256q159 0 271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5 t271.5 -112.5zM1380 473l194 -194q90 171 90 361t-90 361l-194 -194q28 -82 28 -167t-28 -167z" /> -<glyph unicode="&#xf1ce;" horiz-adv-x="1792" d="M1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348q0 222 101 414.5t276.5 317t390.5 155.5v-260q-221 -45 -366.5 -221t-145.5 -406q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5 q0 230 -145.5 406t-366.5 221v260q215 -31 390.5 -155.5t276.5 -317t101 -414.5z" /> -<glyph unicode="&#xf1d0;" horiz-adv-x="1792" d="M19 662q8 217 116 406t305 318h5q0 -1 -1 -3q-8 -8 -28 -33.5t-52 -76.5t-60 -110.5t-44.5 -135.5t-14 -150.5t39 -157.5t108.5 -154q50 -50 102 -69.5t90.5 -11.5t69.5 23.5t47 32.5l16 16q39 51 53 116.5t6.5 122.5t-21 107t-26.5 80l-14 29q-10 25 -30.5 49.5t-43 41 t-43.5 29.5t-35 19l-13 6l104 115q39 -17 78 -52t59 -61l19 -27q1 48 -18.5 103.5t-40.5 87.5l-20 31l161 183l160 -181q-33 -46 -52.5 -102.5t-22.5 -90.5l-4 -33q22 37 61.5 72.5t67.5 52.5l28 17l103 -115q-44 -14 -85 -50t-60 -65l-19 -29q-31 -56 -48 -133.5t-7 -170 t57 -156.5q33 -45 77.5 -60.5t85 -5.5t76 26.5t57.5 33.5l21 16q60 53 96.5 115t48.5 121.5t10 121.5t-18 118t-37 107.5t-45.5 93t-45 72t-34.5 47.5l-13 17q-14 13 -7 13l10 -3q40 -29 62.5 -46t62 -50t64 -58t58.5 -65t55.5 -77t45.5 -88t38 -103t23.5 -117t10.5 -136 q3 -259 -108 -465t-312 -321t-456 -115q-185 0 -351 74t-283.5 198t-184 293t-60.5 353z" /> -<glyph unicode="&#xf1d1;" horiz-adv-x="1792" d="M874 -102v-66q-208 6 -385 109.5t-283 275.5l58 34q29 -49 73 -99l65 57q148 -168 368 -212l-17 -86q65 -12 121 -13zM276 428l-83 -28q22 -60 49 -112l-57 -33q-98 180 -98 385t98 385l57 -33q-30 -56 -49 -112l82 -28q-35 -100 -35 -212q0 -109 36 -212zM1528 251 l58 -34q-106 -172 -283 -275.5t-385 -109.5v66q56 1 121 13l-17 86q220 44 368 212l65 -57q44 50 73 99zM1377 805l-233 -80q14 -42 14 -85t-14 -85l232 -80q-31 -92 -98 -169l-185 162q-57 -67 -147 -85l48 -241q-52 -10 -98 -10t-98 10l48 241q-90 18 -147 85l-185 -162 q-67 77 -98 169l232 80q-14 42 -14 85t14 85l-233 80q33 93 99 169l185 -162q59 68 147 86l-48 240q44 10 98 10t98 -10l-48 -240q88 -18 147 -86l185 162q66 -76 99 -169zM874 1448v-66q-65 -2 -121 -13l17 -86q-220 -42 -368 -211l-65 56q-38 -42 -73 -98l-57 33 q106 172 282 275.5t385 109.5zM1705 640q0 -205 -98 -385l-57 33q27 52 49 112l-83 28q36 103 36 212q0 112 -35 212l82 28q-19 56 -49 112l57 33q98 -180 98 -385zM1585 1063l-57 -33q-35 56 -73 98l-65 -56q-148 169 -368 211l17 86q-56 11 -121 13v66q209 -6 385 -109.5 t282 -275.5zM1748 640q0 173 -67.5 331t-181.5 272t-272 181.5t-331 67.5t-331 -67.5t-272 -181.5t-181.5 -272t-67.5 -331t67.5 -331t181.5 -272t272 -181.5t331 -67.5t331 67.5t272 181.5t181.5 272t67.5 331zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71 t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" /> -<glyph unicode="&#xf1d2;" d="M582 228q0 -66 -93 -66q-107 0 -107 63q0 64 98 64q102 0 102 -61zM546 694q0 -85 -74 -85q-77 0 -77 84q0 90 77 90q36 0 55 -25.5t19 -63.5zM712 769v125q-78 -29 -135 -29q-50 29 -110 29q-86 0 -145 -57t-59 -143q0 -50 29.5 -102t73.5 -67v-3q-38 -17 -38 -85 q0 -53 41 -77v-3q-113 -37 -113 -139q0 -45 20 -78.5t54 -51t72 -25.5t81 -8q224 0 224 188q0 67 -48 99t-126 46q-27 5 -51.5 20.5t-24.5 39.5q0 44 49 52q77 15 122 70t45 134q0 24 -10 52q37 9 49 13zM771 350h137q-2 27 -2 82v387q0 46 2 69h-137q3 -23 3 -71v-392 q0 -50 -3 -75zM1280 366v121q-30 -21 -68 -21q-53 0 -53 82v225h52q9 0 26.5 -1t26.5 -1v117h-105q0 82 3 102h-140q4 -24 4 -55v-47h-60v-117q36 3 37 3q3 0 11 -0.5t12 -0.5v-2h-2v-217q0 -37 2.5 -64t11.5 -56.5t24.5 -48.5t43.5 -31t66 -12q64 0 108 24zM924 1072 q0 36 -24 63.5t-60 27.5t-60.5 -27t-24.5 -64q0 -36 25 -62.5t60 -26.5t59.5 27t24.5 62zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="&#xf1d3;" horiz-adv-x="1792" d="M595 22q0 100 -165 100q-158 0 -158 -104q0 -101 172 -101q151 0 151 105zM536 777q0 61 -30 102t-89 41q-124 0 -124 -145q0 -135 124 -135q119 0 119 137zM805 1101v-202q-36 -12 -79 -22q16 -43 16 -84q0 -127 -73 -216.5t-197 -112.5q-40 -8 -59.5 -27t-19.5 -58 q0 -31 22.5 -51.5t58 -32t78.5 -22t86 -25.5t78.5 -37.5t58 -64t22.5 -98.5q0 -304 -363 -304q-69 0 -130 12.5t-116 41t-87.5 82t-32.5 127.5q0 165 182 225v4q-67 41 -67 126q0 109 63 137v4q-72 24 -119.5 108.5t-47.5 165.5q0 139 95 231.5t235 92.5q96 0 178 -47 q98 0 218 47zM1123 220h-222q4 45 4 134v609q0 94 -4 128h222q-4 -33 -4 -124v-613q0 -89 4 -134zM1724 442v-196q-71 -39 -174 -39q-62 0 -107 20t-70 50t-39.5 78t-18.5 92t-4 103v351h2v4q-7 0 -19 1t-18 1q-21 0 -59 -6v190h96v76q0 54 -6 89h227q-6 -41 -6 -165h171 v-190q-15 0 -43.5 2t-42.5 2h-85v-365q0 -131 87 -131q61 0 109 33zM1148 1389q0 -58 -39 -101.5t-96 -43.5q-58 0 -98 43.5t-40 101.5q0 59 39.5 103t98.5 44q58 0 96.5 -44.5t38.5 -102.5z" /> -<glyph unicode="&#xf1d4;" d="M825 547l343 588h-150q-21 -39 -63.5 -118.5t-68 -128.5t-59.5 -118.5t-60 -128.5h-3q-21 48 -44.5 97t-52 105.5t-46.5 92t-54 104.5t-49 95h-150l323 -589v-435h134v436zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="&#xf1d5;" horiz-adv-x="1280" d="M842 964q0 -80 -57 -136.5t-136 -56.5q-60 0 -111 35q-62 -67 -115 -146q-247 -371 -202 -859q1 -22 -12.5 -38.5t-34.5 -18.5h-5q-20 0 -35 13.5t-17 33.5q-14 126 -3.5 247.5t29.5 217t54 186t69 155.5t74 125q61 90 132 165q-16 35 -16 77q0 80 56.5 136.5t136.5 56.5 t136.5 -56.5t56.5 -136.5zM1223 953q0 -158 -78 -292t-212.5 -212t-292.5 -78q-64 0 -131 14q-21 5 -32.5 23.5t-6.5 39.5q5 20 23 31.5t39 7.5q51 -13 108 -13q97 0 186 38t153 102t102 153t38 186t-38 186t-102 153t-153 102t-186 38t-186 -38t-153 -102t-102 -153 t-38 -186q0 -114 52 -218q10 -20 3.5 -40t-25.5 -30t-39.5 -3t-30.5 26q-64 123 -64 265q0 119 46.5 227t124.5 186t186 124t226 46q158 0 292.5 -78t212.5 -212.5t78 -292.5z" /> -<glyph unicode="&#xf1d6;" horiz-adv-x="1792" d="M270 730q-8 19 -8 52q0 20 11 49t24 45q-1 22 7.5 53t22.5 43q0 139 92.5 288.5t217.5 209.5q139 66 324 66q133 0 266 -55q49 -21 90 -48t71 -56t55 -68t42 -74t32.5 -84.5t25.5 -89.5t22 -98l1 -5q55 -83 55 -150q0 -14 -9 -40t-9 -38q0 -1 1.5 -3.5t3.5 -5t2 -3.5 q77 -114 120.5 -214.5t43.5 -208.5q0 -43 -19.5 -100t-55.5 -57q-9 0 -19.5 7.5t-19 17.5t-19 26t-16 26.5t-13.5 26t-9 17.5q-1 1 -3 1l-5 -4q-59 -154 -132 -223q20 -20 61.5 -38.5t69 -41.5t35.5 -65q-2 -4 -4 -16t-7 -18q-64 -97 -302 -97q-53 0 -110.5 9t-98 20 t-104.5 30q-15 5 -23 7q-14 4 -46 4.5t-40 1.5q-41 -45 -127.5 -65t-168.5 -20q-35 0 -69 1.5t-93 9t-101 20.5t-74.5 40t-32.5 64q0 40 10 59.5t41 48.5q11 2 40.5 13t49.5 12q4 0 14 2q2 2 2 4l-2 3q-48 11 -108 105.5t-73 156.5l-5 3q-4 0 -12 -20q-18 -41 -54.5 -74.5 t-77.5 -37.5h-1q-4 0 -6 4.5t-5 5.5q-23 54 -23 100q0 275 252 466z" /> -<glyph unicode="&#xf1d7;" horiz-adv-x="2048" d="M580 1075q0 41 -25 66t-66 25q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 66 24.5t25 65.5zM1323 568q0 28 -25.5 50t-65.5 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q40 0 65.5 22t25.5 51zM1087 1075q0 41 -24.5 66t-65.5 25 q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 65.5 24.5t24.5 65.5zM1722 568q0 28 -26 50t-65 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q39 0 65 22t26 51zM1456 965q-31 4 -70 4q-169 0 -311 -77t-223.5 -208.5t-81.5 -287.5 q0 -78 23 -152q-35 -3 -68 -3q-26 0 -50 1.5t-55 6.5t-44.5 7t-54.5 10.5t-50 10.5l-253 -127l72 218q-290 203 -290 490q0 169 97.5 311t264 223.5t363.5 81.5q176 0 332.5 -66t262 -182.5t136.5 -260.5zM2048 404q0 -117 -68.5 -223.5t-185.5 -193.5l55 -181l-199 109 q-150 -37 -218 -37q-169 0 -311 70.5t-223.5 191.5t-81.5 264t81.5 264t223.5 191.5t311 70.5q161 0 303 -70.5t227.5 -192t85.5 -263.5z" /> -<glyph unicode="&#xf1d8;" horiz-adv-x="1792" d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-453 185l-242 -295q-18 -23 -49 -23q-13 0 -22 4q-19 7 -30.5 23.5t-11.5 36.5v349l864 1059l-1069 -925l-395 162q-37 14 -40 55q-2 40 32 59l1664 960q15 9 32 9q20 0 36 -11z" /> -<glyph unicode="&#xf1d9;" horiz-adv-x="1792" d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-527 215l-298 -327q-18 -21 -47 -21q-14 0 -23 4q-19 7 -30 23.5t-11 36.5v452l-472 193q-37 14 -40 55q-3 39 32 59l1664 960q35 21 68 -2zM1422 26l221 1323l-1434 -827l336 -137 l863 639l-478 -797z" /> -<glyph unicode="&#xf1da;" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298zM896 928v-448q0 -14 -9 -23 t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23z" /> -<glyph unicode="&#xf1db;" d="M768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf1dc;" horiz-adv-x="1792" d="M1682 -128q-44 0 -132.5 3.5t-133.5 3.5q-44 0 -132 -3.5t-132 -3.5q-24 0 -37 20.5t-13 45.5q0 31 17 46t39 17t51 7t45 15q33 21 33 140l-1 391q0 21 -1 31q-13 4 -50 4h-675q-38 0 -51 -4q-1 -10 -1 -31l-1 -371q0 -142 37 -164q16 -10 48 -13t57 -3.5t45 -15 t20 -45.5q0 -26 -12.5 -48t-36.5 -22q-47 0 -139.5 3.5t-138.5 3.5q-43 0 -128 -3.5t-127 -3.5q-23 0 -35.5 21t-12.5 45q0 30 15.5 45t36 17.5t47.5 7.5t42 15q33 23 33 143l-1 57v813q0 3 0.5 26t0 36.5t-1.5 38.5t-3.5 42t-6.5 36.5t-11 31.5t-16 18q-15 10 -45 12t-53 2 t-41 14t-18 45q0 26 12 48t36 22q46 0 138.5 -3.5t138.5 -3.5q42 0 126.5 3.5t126.5 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17 -43.5t-38.5 -14.5t-49.5 -4t-43 -13q-35 -21 -35 -160l1 -320q0 -21 1 -32q13 -3 39 -3h699q25 0 38 3q1 11 1 32l1 320q0 139 -35 160 q-18 11 -58.5 12.5t-66 13t-25.5 49.5q0 26 12.5 48t37.5 22q44 0 132 -3.5t132 -3.5q43 0 129 3.5t129 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17.5 -44t-40 -14.5t-51.5 -3t-44 -12.5q-35 -23 -35 -161l1 -943q0 -119 34 -140q16 -10 46 -13.5t53.5 -4.5t41.5 -15.5t18 -44.5 q0 -26 -12 -48t-36 -22z" /> -<glyph unicode="&#xf1dd;" horiz-adv-x="1280" d="M1278 1347v-73q0 -29 -18.5 -61t-42.5 -32q-50 0 -54 -1q-26 -6 -32 -31q-3 -11 -3 -64v-1152q0 -25 -18 -43t-43 -18h-108q-25 0 -43 18t-18 43v1218h-143v-1218q0 -25 -17.5 -43t-43.5 -18h-108q-26 0 -43.5 18t-17.5 43v496q-147 12 -245 59q-126 58 -192 179 q-64 117 -64 259q0 166 88 286q88 118 209 159q111 37 417 37h479q25 0 43 -18t18 -43z" /> -<glyph unicode="&#xf1de;" d="M352 128v-128h-352v128h352zM704 256q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM864 640v-128h-864v128h864zM224 1152v-128h-224v128h224zM1536 128v-128h-736v128h736zM576 1280q26 0 45 -19t19 -45v-256 q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1216 768q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1536 640v-128h-224v128h224zM1536 1152v-128h-864v128h864z" /> -<glyph unicode="&#xf1e0;" d="M1216 512q133 0 226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5t-226.5 93.5t-93.5 226.5q0 12 2 34l-360 180q-92 -86 -218 -86q-133 0 -226.5 93.5t-93.5 226.5t93.5 226.5t226.5 93.5q126 0 218 -86l360 180q-2 22 -2 34q0 133 93.5 226.5t226.5 93.5 t226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5q-126 0 -218 86l-360 -180q2 -22 2 -34t-2 -34l360 -180q92 86 218 86z" /> -<glyph unicode="&#xf1e1;" d="M1280 341q0 88 -62.5 151t-150.5 63q-84 0 -145 -58l-241 120q2 16 2 23t-2 23l241 120q61 -58 145 -58q88 0 150.5 63t62.5 151t-62.5 150.5t-150.5 62.5t-151 -62.5t-63 -150.5q0 -7 2 -23l-241 -120q-62 57 -145 57q-88 0 -150.5 -62.5t-62.5 -150.5t62.5 -150.5 t150.5 -62.5q83 0 145 57l241 -120q-2 -16 -2 -23q0 -88 63 -150.5t151 -62.5t150.5 62.5t62.5 150.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="&#xf1e2;" horiz-adv-x="1792" d="M571 947q-10 25 -34 35t-49 0q-108 -44 -191 -127t-127 -191q-10 -25 0 -49t35 -34q13 -5 24 -5q42 0 60 40q34 84 98.5 148.5t148.5 98.5q25 11 35 35t0 49zM1513 1303l46 -46l-244 -243l68 -68q19 -19 19 -45.5t-19 -45.5l-64 -64q89 -161 89 -343q0 -143 -55.5 -273.5 t-150 -225t-225 -150t-273.5 -55.5t-273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5q182 0 343 -89l64 64q19 19 45.5 19t45.5 -19l68 -68zM1521 1359q-10 -10 -22 -10q-13 0 -23 10l-91 90q-9 10 -9 23t9 23q10 9 23 9t23 -9l90 -91 q10 -9 10 -22.5t-10 -22.5zM1751 1129q-11 -9 -23 -9t-23 9l-90 91q-10 9 -10 22.5t10 22.5q9 10 22.5 10t22.5 -10l91 -90q9 -10 9 -23t-9 -23zM1792 1312q0 -14 -9 -23t-23 -9h-96q-14 0 -23 9t-9 23t9 23t23 9h96q14 0 23 -9t9 -23zM1600 1504v-96q0 -14 -9 -23t-23 -9 t-23 9t-9 23v96q0 14 9 23t23 9t23 -9t9 -23zM1751 1449l-91 -90q-10 -10 -22 -10q-13 0 -23 10q-10 9 -10 22.5t10 22.5l90 91q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" /> -<glyph unicode="&#xf1e3;" horiz-adv-x="1792" d="M609 720l287 208l287 -208l-109 -336h-355zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM1515 186q149 203 149 454v3l-102 -89l-240 224l63 323 l134 -12q-150 206 -389 282l53 -124l-287 -159l-287 159l53 124q-239 -76 -389 -282l135 12l62 -323l-240 -224l-102 89v-3q0 -251 149 -454l30 132l326 -40l139 -298l-116 -69q117 -39 240 -39t240 39l-116 69l139 298l326 40z" /> -<glyph unicode="&#xf1e4;" horiz-adv-x="1792" d="M448 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM256 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM832 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM66 768q-28 0 -47 19t-19 46v129h514v-129q0 -27 -19 -46t-46 -19h-383zM1216 224v-192q0 -14 -9 -23t-23 -9h-192 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1600 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23 zM1408 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1016v-13h-514v10q0 104 -382 102q-382 -1 -382 -102v-10h-514v13q0 17 8.5 43t34 64t65.5 75.5t110.5 76t160 67.5t224 47.5t293.5 18.5t293 -18.5t224 -47.5 t160.5 -67.5t110.5 -76t65.5 -75.5t34 -64t8.5 -43zM1792 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 962v-129q0 -27 -19 -46t-46 -19h-384q-27 0 -46 19t-19 46v129h514z" /> -<glyph unicode="&#xf1e5;" horiz-adv-x="1792" d="M704 1216v-768q0 -26 -19 -45t-45 -19v-576q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v512l249 873q7 23 31 23h424zM1024 1216v-704h-256v704h256zM1792 320v-512q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v576q-26 0 -45 19t-19 45v768h424q24 0 31 -23z M736 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23zM1408 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23z" /> -<glyph unicode="&#xf1e6;" horiz-adv-x="1792" d="M1755 1083q37 -37 37 -90t-37 -91l-401 -400l150 -150l-160 -160q-163 -163 -389.5 -186.5t-411.5 100.5l-362 -362h-181v181l362 362q-124 185 -100.5 411.5t186.5 389.5l160 160l150 -150l400 401q38 37 91 37t90 -37t37 -90.5t-37 -90.5l-400 -401l234 -234l401 400 q38 37 91 37t90 -37z" /> -<glyph unicode="&#xf1e7;" horiz-adv-x="1792" d="M873 796q0 -83 -63.5 -142.5t-152.5 -59.5t-152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59t152.5 -59t63.5 -143zM1375 796q0 -83 -63 -142.5t-153 -59.5q-89 0 -152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59q90 0 153 -59t63 -143zM1600 616v667q0 87 -32 123.5 t-111 36.5h-1112q-83 0 -112.5 -34t-29.5 -126v-673q43 -23 88.5 -40t81 -28t81 -18.5t71 -11t70 -4t58.5 -0.5t56.5 2t44.5 2q68 1 95 -27q6 -6 10 -9q26 -25 61 -51q7 91 118 87q5 0 36.5 -1.5t43 -2t45.5 -1t53 1t54.5 4.5t61 8.5t62 13.5t67 19.5t67.5 27t72 34.5z M1763 621q-121 -149 -372 -252q84 -285 -23 -465q-66 -113 -183 -148q-104 -32 -182 15q-86 51 -82 164l-1 326v1q-8 2 -24.5 6t-23.5 5l-1 -338q4 -114 -83 -164q-79 -47 -183 -15q-117 36 -182 150q-105 180 -22 463q-251 103 -372 252q-25 37 -4 63t60 -1q3 -2 11 -7 t11 -8v694q0 72 47 123t114 51h1257q67 0 114 -51t47 -123v-694l21 15q39 27 60 1t-4 -63z" /> -<glyph unicode="&#xf1e8;" horiz-adv-x="1792" d="M896 1102v-434h-145v434h145zM1294 1102v-434h-145v434h145zM1294 342l253 254v795h-1194v-1049h326v-217l217 217h398zM1692 1536v-1013l-434 -434h-326l-217 -217h-217v217h-398v1158l109 289h1483z" /> -<glyph unicode="&#xf1e9;" d="M773 217v-127q-1 -292 -6 -305q-12 -32 -51 -40q-54 -9 -181.5 38t-162.5 89q-13 15 -17 36q-1 12 4 26q4 10 34 47t181 216q1 0 60 70q15 19 39.5 24.5t49.5 -3.5q24 -10 37.5 -29t12.5 -42zM624 468q-3 -55 -52 -70l-120 -39q-275 -88 -292 -88q-35 2 -54 36 q-12 25 -17 75q-8 76 1 166.5t30 124.5t56 32q13 0 202 -77q70 -29 115 -47l84 -34q23 -9 35.5 -30.5t11.5 -48.5zM1450 171q-7 -54 -91.5 -161t-135.5 -127q-37 -14 -63 7q-14 10 -184 287l-47 77q-14 21 -11.5 46t19.5 46q35 43 83 26q1 -1 119 -40q203 -66 242 -79.5 t47 -20.5q28 -22 22 -61zM778 803q5 -102 -54 -122q-58 -17 -114 71l-378 598q-8 35 19 62q41 43 207.5 89.5t224.5 31.5q40 -10 49 -45q3 -18 22 -305.5t24 -379.5zM1440 695q3 -39 -26 -59q-15 -10 -329 -86q-67 -15 -91 -23l1 2q-23 -6 -46 4t-37 32q-30 47 0 87 q1 1 75 102q125 171 150 204t34 39q28 19 65 2q48 -23 123 -133.5t81 -167.5v-3z" /> -<glyph unicode="&#xf1ea;" horiz-adv-x="2048" d="M1024 1024h-384v-384h384v384zM1152 384v-128h-640v128h640zM1152 1152v-640h-640v640h640zM1792 384v-128h-512v128h512zM1792 640v-128h-512v128h512zM1792 896v-128h-512v128h512zM1792 1152v-128h-512v128h512zM256 192v960h-128v-960q0 -26 19 -45t45 -19t45 19 t19 45zM1920 192v1088h-1536v-1088q0 -33 -11 -64h1483q26 0 45 19t19 45zM2048 1408v-1216q0 -80 -56 -136t-136 -56h-1664q-80 0 -136 56t-56 136v1088h256v128h1792z" /> -<glyph unicode="&#xf1eb;" horiz-adv-x="2048" d="M1024 13q-20 0 -93 73.5t-73 93.5q0 32 62.5 54t103.5 22t103.5 -22t62.5 -54q0 -20 -73 -93.5t-93 -73.5zM1294 284q-2 0 -40 25t-101.5 50t-128.5 25t-128.5 -25t-101 -50t-40.5 -25q-18 0 -93.5 75t-75.5 93q0 13 10 23q78 77 196 121t233 44t233 -44t196 -121 q10 -10 10 -23q0 -18 -75.5 -93t-93.5 -75zM1567 556q-11 0 -23 8q-136 105 -252 154.5t-268 49.5q-85 0 -170.5 -22t-149 -53t-113.5 -62t-79 -53t-31 -22q-17 0 -92 75t-75 93q0 12 10 22q132 132 320 205t380 73t380 -73t320 -205q10 -10 10 -22q0 -18 -75 -93t-92 -75z M1838 827q-11 0 -22 9q-179 157 -371.5 236.5t-420.5 79.5t-420.5 -79.5t-371.5 -236.5q-11 -9 -22 -9q-17 0 -92.5 75t-75.5 93q0 13 10 23q187 186 445 288t527 102t527 -102t445 -288q10 -10 10 -23q0 -18 -75.5 -93t-92.5 -75z" /> -<glyph unicode="&#xf1ec;" horiz-adv-x="1792" d="M384 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5 t37.5 90.5zM384 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 768q0 53 -37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1536 0v384q0 52 -38 90t-90 38t-90 -38t-38 -90v-384q0 -52 38 -90t90 -38t90 38t38 90zM1152 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5z M1536 1088v256q0 26 -19 45t-45 19h-1280q-26 0 -45 -19t-19 -45v-256q0 -26 19 -45t45 -19h1280q26 0 45 19t19 45zM1536 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1408v-1536q0 -52 -38 -90t-90 -38 h-1408q-52 0 -90 38t-38 90v1536q0 52 38 90t90 38h1408q52 0 90 -38t38 -90z" /> -<glyph unicode="&#xf1ed;" horiz-adv-x="1792" d="M1112 1090q0 159 -237 159h-70q-32 0 -59.5 -21.5t-34.5 -52.5l-63 -276q-2 -5 -2 -16q0 -24 17 -39.5t41 -15.5h53q69 0 128.5 13t112.5 41t83.5 81.5t30.5 126.5zM1716 938q0 -265 -220 -428q-219 -161 -612 -161h-61q-32 0 -59 -21.5t-34 -52.5l-73 -316 q-8 -36 -40.5 -61.5t-69.5 -25.5h-213q-31 0 -53 20t-22 51q0 10 13 65h151q34 0 64 23.5t38 56.5l73 316q8 33 37.5 57t63.5 24h61q390 0 607 160t217 421q0 129 -51 207q183 -92 183 -335zM1533 1123q0 -264 -221 -428q-218 -161 -612 -161h-60q-32 0 -59.5 -22t-34.5 -53 l-73 -315q-8 -36 -40 -61.5t-69 -25.5h-214q-31 0 -52.5 19.5t-21.5 51.5q0 8 2 20l300 1301q8 36 40.5 61.5t69.5 25.5h444q68 0 125 -4t120.5 -15t113.5 -30t96.5 -50.5t77.5 -74t49.5 -103.5t18.5 -136z" /> -<glyph unicode="&#xf1ee;" horiz-adv-x="1792" d="M602 949q19 -61 31 -123.5t17 -141.5t-14 -159t-62 -145q-21 81 -67 157t-95.5 127t-99 90.5t-78.5 57.5t-33 19q-62 34 -81.5 100t14.5 128t101 81.5t129 -14.5q138 -83 238 -177zM927 1236q11 -25 20.5 -46t36.5 -100.5t42.5 -150.5t25.5 -179.5t0 -205.5t-47.5 -209.5 t-105.5 -208.5q-51 -72 -138 -72q-54 0 -98 31q-57 40 -69 109t28 127q60 85 81 195t13 199.5t-32 180.5t-39 128t-22 52q-31 63 -8.5 129.5t85.5 97.5q34 17 75 17q47 0 88.5 -25t63.5 -69zM1248 567q-17 -160 -72 -311q-17 131 -63 246q25 174 -5 361q-27 178 -94 342 q114 -90 212 -211q9 -37 15 -80q26 -179 7 -347zM1520 1440q9 -17 23.5 -49.5t43.5 -117.5t50.5 -178t34 -227.5t5 -269t-47 -300t-112.5 -323.5q-22 -48 -66 -75.5t-95 -27.5q-39 0 -74 16q-67 31 -92.5 100t4.5 136q58 126 90 257.5t37.5 239.5t-3.5 213.5t-26.5 180.5 t-38.5 138.5t-32.5 90t-15.5 32.5q-34 65 -11.5 135.5t87.5 104.5q37 20 81 20q49 0 91.5 -25.5t66.5 -70.5z" /> -<glyph unicode="&#xf1f0;" horiz-adv-x="2304" d="M1975 546h-138q14 37 66 179l3 9q4 10 10 26t9 26l12 -55zM531 611l-58 295q-11 54 -75 54h-268l-2 -13q311 -79 403 -336zM710 960l-162 -438l-17 89q-26 70 -85 129.5t-131 88.5l135 -510h175l261 641h-176zM849 318h166l104 642h-166zM1617 944q-69 27 -149 27 q-123 0 -201 -59t-79 -153q-1 -102 145 -174q48 -23 67 -41t19 -39q0 -30 -30 -46t-69 -16q-86 0 -156 33l-22 11l-23 -144q74 -34 185 -34q130 -1 208.5 59t80.5 160q0 106 -140 174q-49 25 -71 42t-22 38q0 22 24.5 38.5t70.5 16.5q70 1 124 -24l15 -8zM2042 960h-128 q-65 0 -87 -54l-246 -588h174l35 96h212q5 -22 20 -96h154zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" /> -<glyph unicode="&#xf1f1;" horiz-adv-x="2304" d="M671 603h-13q-47 0 -47 -32q0 -22 20 -22q17 0 28 15t12 39zM1066 639h62v3q1 4 0.5 6.5t-1 7t-2 8t-4.5 6.5t-7.5 5t-11.5 2q-28 0 -36 -38zM1606 603h-12q-48 0 -48 -32q0 -22 20 -22q17 0 28 15t12 39zM1925 629q0 41 -30 41q-19 0 -31 -20t-12 -51q0 -42 28 -42 q20 0 32.5 20t12.5 52zM480 770h87l-44 -262h-56l32 201l-71 -201h-39l-4 200l-34 -200h-53l44 262h81l2 -163zM733 663q0 -6 -4 -42q-16 -101 -17 -113h-47l1 22q-20 -26 -58 -26q-23 0 -37.5 16t-14.5 42q0 39 26 60.5t73 21.5q14 0 23 -1q0 3 0.5 5.5t1 4.5t0.5 3 q0 20 -36 20q-29 0 -59 -10q0 4 7 48q38 11 67 11q74 0 74 -62zM889 721l-8 -49q-22 3 -41 3q-27 0 -27 -17q0 -8 4.5 -12t21.5 -11q40 -19 40 -60q0 -72 -87 -71q-34 0 -58 6q0 2 7 49q29 -8 51 -8q32 0 32 19q0 7 -4.5 11.5t-21.5 12.5q-43 20 -43 59q0 72 84 72 q30 0 50 -4zM977 721h28l-7 -52h-29q-2 -17 -6.5 -40.5t-7 -38.5t-2.5 -18q0 -16 19 -16q8 0 16 2l-8 -47q-21 -7 -40 -7q-43 0 -45 47q0 12 8 56q3 20 25 146h55zM1180 648q0 -23 -7 -52h-111q-3 -22 10 -33t38 -11q30 0 58 14l-9 -54q-30 -8 -57 -8q-95 0 -95 95 q0 55 27.5 90.5t69.5 35.5q35 0 55.5 -21t20.5 -56zM1319 722q-13 -23 -22 -62q-22 2 -31 -24t-25 -128h-56l3 14q22 130 29 199h51l-3 -33q14 21 25.5 29.5t28.5 4.5zM1506 763l-9 -57q-28 14 -50 14q-31 0 -51 -27.5t-20 -70.5q0 -30 13.5 -47t38.5 -17q21 0 48 13 l-10 -59q-28 -8 -50 -8q-45 0 -71.5 30.5t-26.5 82.5q0 70 35.5 114.5t91.5 44.5q26 0 61 -13zM1668 663q0 -18 -4 -42q-13 -79 -17 -113h-46l1 22q-20 -26 -59 -26q-23 0 -37 16t-14 42q0 39 25.5 60.5t72.5 21.5q15 0 23 -1q2 7 2 13q0 20 -36 20q-29 0 -59 -10q0 4 8 48 q38 11 67 11q73 0 73 -62zM1809 722q-14 -24 -21 -62q-23 2 -31.5 -23t-25.5 -129h-56l3 14q19 104 29 199h52q0 -11 -4 -33q15 21 26.5 29.5t27.5 4.5zM1950 770h56l-43 -262h-53l3 19q-23 -23 -52 -23q-31 0 -49.5 24t-18.5 64q0 53 27.5 92t64.5 39q31 0 53 -29z M2061 640q0 148 -72.5 273t-198 198t-273.5 73q-181 0 -328 -110q127 -116 171 -284h-50q-44 150 -158 253q-114 -103 -158 -253h-50q44 168 171 284q-147 110 -328 110q-148 0 -273.5 -73t-198 -198t-72.5 -273t72.5 -273t198 -198t273.5 -73q181 0 328 110 q-120 111 -165 264h50q46 -138 152 -233q106 95 152 233h50q-45 -153 -165 -264q147 -110 328 -110q148 0 273.5 73t198 198t72.5 273zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" /> -<glyph unicode="&#xf1f2;" horiz-adv-x="2304" d="M313 759q0 -51 -36 -84q-29 -26 -89 -26h-17v220h17q61 0 89 -27q36 -31 36 -83zM2089 824q0 -52 -64 -52h-19v101h20q63 0 63 -49zM380 759q0 74 -50 120.5t-129 46.5h-95v-333h95q74 0 119 38q60 51 60 128zM410 593h65v333h-65v-333zM730 694q0 40 -20.5 62t-75.5 42 q-29 10 -39.5 19t-10.5 23q0 16 13.5 26.5t34.5 10.5q29 0 53 -27l34 44q-41 37 -98 37q-44 0 -74 -27.5t-30 -67.5q0 -35 18 -55.5t64 -36.5q37 -13 45 -19q19 -12 19 -34q0 -20 -14 -33.5t-36 -13.5q-48 0 -71 44l-42 -40q44 -64 115 -64q51 0 83 30.5t32 79.5zM1008 604 v77q-37 -37 -78 -37q-49 0 -80.5 32.5t-31.5 82.5q0 48 31.5 81.5t77.5 33.5q43 0 81 -38v77q-40 20 -80 20q-74 0 -125.5 -50.5t-51.5 -123.5t51 -123.5t125 -50.5q42 0 81 19zM2240 0v527q-65 -40 -144.5 -84t-237.5 -117t-329.5 -137.5t-417.5 -134.5t-504 -118h1569 q26 0 45 19t19 45zM1389 757q0 75 -53 128t-128 53t-128 -53t-53 -128t53 -128t128 -53t128 53t53 128zM1541 584l144 342h-71l-90 -224l-89 224h-71l142 -342h35zM1714 593h184v56h-119v90h115v56h-115v74h119v57h-184v-333zM2105 593h80l-105 140q76 16 76 94q0 47 -31 73 t-87 26h-97v-333h65v133h9zM2304 1274v-1268q0 -56 -38.5 -95t-93.5 -39h-2040q-55 0 -93.5 39t-38.5 95v1268q0 56 38.5 95t93.5 39h2040q55 0 93.5 -39t38.5 -95z" /> -<glyph unicode="&#xf1f3;" horiz-adv-x="2304" d="M119 854h89l-45 108zM740 328l74 79l-70 79h-163v-49h142v-55h-142v-54h159zM898 406l99 -110v217zM1186 453q0 33 -40 33h-84v-69h83q41 0 41 36zM1475 457q0 29 -42 29h-82v-61h81q43 0 43 32zM1197 923q0 29 -42 29h-82v-60h81q43 0 43 31zM1656 854h89l-44 108z M699 1009v-271h-66v212l-94 -212h-57l-94 212v-212h-132l-25 60h-135l-25 -60h-70l116 271h96l110 -257v257h106l85 -184l77 184h108zM1255 453q0 -20 -5.5 -35t-14 -25t-22.5 -16.5t-26 -10t-31.5 -4.5t-31.5 -1t-32.5 0.5t-29.5 0.5v-91h-126l-80 90l-83 -90h-256v271h260 l80 -89l82 89h207q109 0 109 -89zM964 794v-56h-217v271h217v-57h-152v-49h148v-55h-148v-54h152zM2304 235v-229q0 -55 -38.5 -94.5t-93.5 -39.5h-2040q-55 0 -93.5 39.5t-38.5 94.5v678h111l25 61h55l25 -61h218v46l19 -46h113l20 47v-47h541v99l10 1q10 0 10 -14v-86h279 v23q23 -12 55 -18t52.5 -6.5t63 0.5t51.5 1l25 61h56l25 -61h227v58l34 -58h182v378h-180v-44l-25 44h-185v-44l-23 44h-249q-69 0 -109 -22v22h-172v-22q-24 22 -73 22h-628l-43 -97l-43 97h-198v-44l-22 44h-169l-78 -179v391q0 55 38.5 94.5t93.5 39.5h2040 q55 0 93.5 -39.5t38.5 -94.5v-678h-120q-51 0 -81 -22v22h-177q-55 0 -78 -22v22h-316v-22q-31 22 -87 22h-209v-22q-23 22 -91 22h-234l-54 -58l-50 58h-349v-378h343l55 59l52 -59h211v89h21q59 0 90 13v-102h174v99h8q8 0 10 -2t2 -10v-87h529q57 0 88 24v-24h168 q60 0 95 17zM1546 469q0 -23 -12 -43t-34 -29q25 -9 34 -26t9 -46v-54h-65v45q0 33 -12 43.5t-46 10.5h-69v-99h-65v271h154q48 0 77 -15t29 -58zM1269 936q0 -24 -12.5 -44t-33.5 -29q26 -9 34.5 -25.5t8.5 -46.5v-53h-65q0 9 0.5 26.5t0 25t-3 18.5t-8.5 16t-17.5 8.5 t-29.5 3.5h-70v-98h-64v271l153 -1q49 0 78 -14.5t29 -57.5zM1798 327v-56h-216v271h216v-56h-151v-49h148v-55h-148v-54zM1372 1009v-271h-66v271h66zM2065 357q0 -86 -102 -86h-126v58h126q34 0 34 25q0 16 -17 21t-41.5 5t-49.5 3.5t-42 22.5t-17 55q0 39 26 60t66 21 h130v-57h-119q-36 0 -36 -25q0 -16 17.5 -20.5t42 -4t49 -2.5t42 -21.5t17.5 -54.5zM2304 407v-101q-24 -35 -88 -35h-125v58h125q33 0 33 25q0 13 -12.5 19t-31 5.5t-40 2t-40 8t-31 24t-12.5 48.5q0 39 26.5 60t66.5 21h129v-57h-118q-36 0 -36 -25q0 -20 29 -22t68.5 -5 t56.5 -26zM2139 1008v-270h-92l-122 203v-203h-132l-26 60h-134l-25 -60h-75q-129 0 -129 133q0 138 133 138h63v-59q-7 0 -28 1t-28.5 0.5t-23 -2t-21.5 -6.5t-14.5 -13.5t-11.5 -23t-3 -33.5q0 -38 13.5 -58t49.5 -20h29l92 213h97l109 -256v256h99l114 -188v188h66z" /> -<glyph unicode="&#xf1f4;" horiz-adv-x="2304" d="M322 689h-15q-19 0 -19 18q0 28 19 85q5 15 15 19.5t28 4.5q77 0 77 -49q0 -41 -30.5 -59.5t-74.5 -18.5zM664 528q-47 0 -47 29q0 62 123 62l3 -3q-5 -88 -79 -88zM1438 687h-15q-19 0 -19 19q0 28 19 85q5 15 14.5 19t28.5 4q77 0 77 -49q0 -41 -30.5 -59.5 t-74.5 -18.5zM1780 527q-47 0 -47 30q0 62 123 62l3 -3q-5 -89 -79 -89zM373 894h-128q-8 0 -14.5 -4t-8.5 -7.5t-7 -12.5q-3 -7 -45 -190t-42 -192q0 -7 5.5 -12.5t13.5 -5.5h62q25 0 32.5 34.5l15 69t32.5 34.5q47 0 87.5 7.5t80.5 24.5t63.5 52.5t23.5 84.5 q0 36 -14.5 61t-41 36.5t-53.5 15.5t-62 4zM719 798q-38 0 -74 -6q-2 0 -8.5 -1t-9 -1.5l-7.5 -1.5t-7.5 -2t-6.5 -3t-6.5 -4t-5 -5t-4.5 -7t-4 -9q-9 -29 -9 -39t9 -10q5 0 21.5 5t19.5 6q30 8 58 8q74 0 74 -36q0 -11 -10 -14q-8 -2 -18 -3t-21.5 -1.5t-17.5 -1.5 q-38 -4 -64.5 -10t-56.5 -19.5t-45.5 -39t-15.5 -62.5q0 -38 26 -59.5t64 -21.5q24 0 45.5 6.5t33 13t38.5 23.5q-3 -7 -3 -15t5.5 -13.5t12.5 -5.5h56q1 1 7 3.5t7.5 3.5t5 3.5t5 5.5t2.5 8l45 194q4 13 4 30q0 81 -145 81zM1247 793h-74q-22 0 -39 -23q-5 -7 -29.5 -51 t-46.5 -81.5t-26 -38.5l-5 4q0 77 -27 166q-1 5 -3.5 8.5t-6 6.5t-6.5 5t-8.5 3t-8.5 1.5t-9.5 1t-9 0.5h-10h-8.5q-38 0 -38 -21l1 -5q5 -53 25 -151t25 -143q2 -16 2 -24q0 -19 -30.5 -61.5t-30.5 -58.5q0 -13 40 -13q61 0 76 25l245 415q10 20 10 26q0 9 -8 9zM1489 892 h-129q-18 0 -29 -23q-6 -13 -46.5 -191.5t-40.5 -190.5q0 -20 43 -20h7.5h9h9t9.5 1t8.5 2t8.5 3t6.5 4.5t5.5 6t3 8.5l21 91q2 10 10.5 17t19.5 7q47 0 87.5 7t80.5 24.5t63.5 52.5t23.5 84q0 36 -14.5 61t-41 36.5t-53.5 15.5t-62 4zM1835 798q-26 0 -74 -6 q-38 -6 -48 -16q-7 -8 -11 -19q-8 -24 -8 -39q0 -10 8 -10q1 0 41 12q30 8 58 8q74 0 74 -36q0 -12 -10 -14q-4 -1 -57 -7q-38 -4 -64.5 -10t-56.5 -19.5t-45.5 -39t-15.5 -62.5t26 -58.5t64 -21.5q24 0 45 6t34 13t38 24q-3 -15 -3 -16q0 -5 2 -8.5t6.5 -5.5t8 -3.5 t10.5 -2t9.5 -0.5h9.5h8q42 0 48 25l45 194q3 15 3 31q0 81 -145 81zM2157 889h-55q-25 0 -33 -40q-10 -44 -36.5 -167t-42.5 -190v-5q0 -16 16 -18h1h57q10 0 18.5 6.5t10.5 16.5l83 374h-1l1 5q0 7 -5.5 12.5t-13.5 5.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048 q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" /> -<glyph unicode="&#xf1f5;" horiz-adv-x="2304" d="M1597 633q0 -69 -21 -106q-19 -35 -52 -35q-23 0 -41 9v224q29 30 57 30q57 0 57 -122zM2035 669h-110q6 98 56 98q51 0 54 -98zM476 534q0 59 -33 91.5t-101 57.5q-36 13 -52 24t-16 25q0 26 38 26q58 0 124 -33l18 112q-67 32 -149 32q-77 0 -123 -38q-48 -39 -48 -109 q0 -58 32.5 -90.5t99.5 -56.5q39 -14 54.5 -25.5t15.5 -27.5q0 -31 -48 -31q-29 0 -70 12.5t-72 30.5l-18 -113q72 -41 168 -41q81 0 129 37q51 41 51 117zM771 749l19 111h-96v135l-129 -21l-18 -114l-46 -8l-17 -103h62v-219q0 -84 44 -120q38 -30 111 -30q32 0 79 11v118 q-32 -7 -44 -7q-42 0 -42 50v197h77zM1087 724v139q-15 3 -28 3q-32 0 -55.5 -16t-33.5 -46l-10 56h-131v-471h150v306q26 31 82 31q16 0 26 -2zM1124 389h150v471h-150v-471zM1746 638q0 122 -45 179q-40 52 -111 52q-64 0 -117 -56l-8 47h-132v-645l150 25v151 q36 -11 68 -11q83 0 134 56q61 65 61 202zM1278 986q0 33 -23 56t-56 23t-56 -23t-23 -56t23 -56.5t56 -23.5t56 23.5t23 56.5zM2176 629q0 113 -48 176q-50 64 -144 64q-96 0 -151.5 -66t-55.5 -180q0 -128 63 -188q55 -55 161 -55q101 0 160 40l-16 103q-57 -31 -128 -31 q-43 0 -63 19q-23 19 -28 66h248q2 14 2 52zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" /> -<glyph unicode="&#xf1f6;" horiz-adv-x="2048" d="M1558 684q61 -356 298 -556q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5zM1024 -176q16 0 16 16t-16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5zM2026 1424q8 -10 7.5 -23.5t-10.5 -22.5 l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5 l418 363q10 8 23.5 7t21.5 -11z" /> -<glyph unicode="&#xf1f7;" horiz-adv-x="2048" d="M1040 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM503 315l877 760q-42 88 -132.5 146.5t-223.5 58.5q-93 0 -169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -384 -137 -645zM1856 128 q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5l149 129h757q-166 187 -227 459l111 97q61 -356 298 -556zM1942 1520l84 -96q8 -10 7.5 -23.5t-10.5 -22.5l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161 q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5l418 363q10 8 23.5 7t21.5 -11z" /> -<glyph unicode="&#xf1f8;" horiz-adv-x="1408" d="M512 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM768 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1024 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704 q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167 q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" /> -<glyph unicode="&#xf1f9;" d="M1150 462v-109q0 -50 -36.5 -89t-94 -60.5t-118 -32.5t-117.5 -11q-205 0 -342.5 139t-137.5 346q0 203 136 339t339 136q34 0 75.5 -4.5t93 -18t92.5 -34t69 -56.5t28 -81v-109q0 -16 -16 -16h-118q-16 0 -16 16v70q0 43 -65.5 67.5t-137.5 24.5q-140 0 -228.5 -91.5 t-88.5 -237.5q0 -151 91.5 -249.5t233.5 -98.5q68 0 138 24t70 66v70q0 7 4.5 11.5t10.5 4.5h119q6 0 11 -4.5t5 -11.5zM768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5 t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf1fa;" d="M972 761q0 108 -53.5 169t-147.5 61q-63 0 -124 -30.5t-110 -84.5t-79.5 -137t-30.5 -180q0 -112 53.5 -173t150.5 -61q96 0 176 66.5t122.5 166t42.5 203.5zM1536 640q0 -111 -37 -197t-98.5 -135t-131.5 -74.5t-145 -27.5q-6 0 -15.5 -0.5t-16.5 -0.5q-95 0 -142 53 q-28 33 -33 83q-52 -66 -131.5 -110t-173.5 -44q-161 0 -249.5 95.5t-88.5 269.5q0 157 66 290t179 210.5t246 77.5q87 0 155 -35.5t106 -99.5l2 19l11 56q1 6 5.5 12t9.5 6h118q5 0 13 -11q5 -5 3 -16l-120 -614q-5 -24 -5 -48q0 -39 12.5 -52t44.5 -13q28 1 57 5.5t73 24 t77 50t57 89.5t24 137q0 292 -174 466t-466 174q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51q228 0 405 144q11 9 24 8t21 -12l41 -49q8 -12 7 -24q-2 -13 -12 -22q-102 -83 -227.5 -128t-258.5 -45q-156 0 -298 61 t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q344 0 556 -212t212 -556z" /> -<glyph unicode="&#xf1fb;" horiz-adv-x="1792" d="M1698 1442q94 -94 94 -226.5t-94 -225.5l-225 -223l104 -104q10 -10 10 -23t-10 -23l-210 -210q-10 -10 -23 -10t-23 10l-105 105l-603 -603q-37 -37 -90 -37h-203l-256 -128l-64 64l128 256v203q0 53 37 90l603 603l-105 105q-10 10 -10 23t10 23l210 210q10 10 23 10 t23 -10l104 -104l223 225q93 94 225.5 94t226.5 -94zM512 64l576 576l-192 192l-576 -576v-192h192z" /> -<glyph unicode="&#xf1fc;" horiz-adv-x="1792" d="M1615 1536q70 0 122.5 -46.5t52.5 -116.5q0 -63 -45 -151q-332 -629 -465 -752q-97 -91 -218 -91q-126 0 -216.5 92.5t-90.5 219.5q0 128 92 212l638 579q59 54 130 54zM706 502q39 -76 106.5 -130t150.5 -76l1 -71q4 -213 -129.5 -347t-348.5 -134q-123 0 -218 46.5 t-152.5 127.5t-86.5 183t-29 220q7 -5 41 -30t62 -44.5t59 -36.5t46 -17q41 0 55 37q25 66 57.5 112.5t69.5 76t88 47.5t103 25.5t125 10.5z" /> -<glyph unicode="&#xf1fd;" horiz-adv-x="1792" d="M1792 128v-384h-1792v384q45 0 85 14t59 27.5t47 37.5q30 27 51.5 38t56.5 11t55.5 -11t52.5 -38q29 -25 47 -38t58 -27t86 -14q45 0 85 14.5t58 27t48 37.5q21 19 32.5 27t31 15t43.5 7q35 0 56.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14t85 14t59 27.5t47 37.5 q30 27 51.5 38t56.5 11q34 0 55.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14zM1792 448v-192q-35 0 -55.5 11t-52.5 38q-29 25 -47 38t-58 27t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-22 -19 -33 -27t-31 -15t-44 -7q-35 0 -56.5 11t-51.5 38q-29 25 -47 38t-58 27 t-86 14q-45 0 -85 -14.5t-58 -27t-48 -37.5q-21 -19 -32.5 -27t-31 -15t-43.5 -7q-35 0 -56.5 11t-51.5 38q-28 24 -47 37.5t-59 27.5t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-30 -27 -51.5 -38t-56.5 -11v192q0 80 56 136t136 56h64v448h256v-448h256v448h256v-448h256v448 h256v-448h64q80 0 136 -56t56 -136zM512 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1024 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51 t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1536 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150z" /> -<glyph unicode="&#xf1fe;" horiz-adv-x="2048" d="M2048 0v-128h-2048v1536h128v-1408h1920zM1664 1024l256 -896h-1664v576l448 576l576 -576z" /> -<glyph unicode="&#xf200;" horiz-adv-x="1792" d="M768 646l546 -546q-106 -108 -247.5 -168t-298.5 -60q-209 0 -385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103v-762zM955 640h773q0 -157 -60 -298.5t-168 -247.5zM1664 768h-768v768q209 0 385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="&#xf201;" horiz-adv-x="2048" d="M2048 0v-128h-2048v1536h128v-1408h1920zM1920 1248v-435q0 -21 -19.5 -29.5t-35.5 7.5l-121 121l-633 -633q-10 -10 -23 -10t-23 10l-233 233l-416 -416l-192 192l585 585q10 10 23 10t23 -10l233 -233l464 464l-121 121q-16 16 -7.5 35.5t29.5 19.5h435q14 0 23 -9 t9 -23z" /> -<glyph unicode="&#xf202;" horiz-adv-x="1792" d="M1292 832q0 -6 10 -41q10 -29 25 -49.5t41 -34t44 -20t55 -16.5q325 -91 325 -332q0 -146 -105.5 -242.5t-254.5 -96.5q-59 0 -111.5 18.5t-91.5 45.5t-77 74.5t-63 87.5t-53.5 103.5t-43.5 103t-39.5 106.5t-35.5 95q-32 81 -61.5 133.5t-73.5 96.5t-104 64t-142 20 q-96 0 -183 -55.5t-138 -144.5t-51 -185q0 -160 106.5 -279.5t263.5 -119.5q177 0 258 95q56 63 83 116l84 -152q-15 -34 -44 -70l1 -1q-131 -152 -388 -152q-147 0 -269.5 79t-190.5 207.5t-68 274.5q0 105 43.5 206t116 176.5t172 121.5t204.5 46q87 0 159 -19t123.5 -50 t95 -80t72.5 -99t58.5 -117t50.5 -124.5t50 -130.5t55 -127q96 -200 233 -200q81 0 138.5 48.5t57.5 128.5q0 42 -19 72t-50.5 46t-72.5 31.5t-84.5 27t-87.5 34t-81 52t-65 82t-39 122.5q-3 16 -3 33q0 110 87.5 192t198.5 78q78 -3 120.5 -14.5t90.5 -53.5h-1 q12 -11 23 -24.5t26 -36t19 -27.5l-129 -99q-26 49 -54 70v1q-23 21 -97 21q-49 0 -84 -33t-35 -83z" /> -<glyph unicode="&#xf203;" d="M1432 484q0 173 -234 239q-35 10 -53 16.5t-38 25t-29 46.5q0 2 -2 8.5t-3 12t-1 7.5q0 36 24.5 59.5t60.5 23.5q54 0 71 -15h-1q20 -15 39 -51l93 71q-39 54 -49 64q-33 29 -67.5 39t-85.5 10q-80 0 -142 -57.5t-62 -137.5q0 -7 2 -23q16 -96 64.5 -140t148.5 -73 q29 -8 49 -15.5t45 -21.5t38.5 -34.5t13.5 -46.5v-5q1 -58 -40.5 -93t-100.5 -35q-97 0 -167 144q-23 47 -51.5 121.5t-48 125.5t-54 110.5t-74 95.5t-103.5 60.5t-147 24.5q-101 0 -192 -56t-144 -148t-50 -192v-1q4 -108 50.5 -199t133.5 -147.5t196 -56.5q186 0 279 110 q20 27 31 51l-60 109q-42 -80 -99 -116t-146 -36q-115 0 -191 87t-76 204q0 105 82 189t186 84q112 0 170 -53.5t104 -172.5q8 -21 25.5 -68.5t28.5 -76.5t31.5 -74.5t38.5 -74t45.5 -62.5t55.5 -53.5t66 -33t80 -13.5q107 0 183 69.5t76 174.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="&#xf204;" horiz-adv-x="2048" d="M1152 640q0 104 -40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM1920 640q0 104 -40.5 198.5 t-109.5 163.5t-163.5 109.5t-198.5 40.5h-386q119 -90 188.5 -224t69.5 -288t-69.5 -288t-188.5 -224h386q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM2048 640q0 -130 -51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5 t-136.5 204t-51 248.5t51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5z" /> -<glyph unicode="&#xf205;" horiz-adv-x="2048" d="M0 640q0 130 51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5t-51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5t-136.5 204t-51 248.5zM1408 128q104 0 198.5 40.5t163.5 109.5 t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5z" /> -<glyph unicode="&#xf206;" horiz-adv-x="2304" d="M762 384h-314q-40 0 -57.5 35t6.5 67l188 251q-65 31 -137 31q-132 0 -226 -94t-94 -226t94 -226t226 -94q115 0 203 72.5t111 183.5zM576 512h186q-18 85 -75 148zM1056 512l288 384h-480l-99 -132q105 -103 126 -252h165zM2176 448q0 132 -94 226t-226 94 q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94t226 94t94 226zM2304 448q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 97 39.5 183.5t109.5 149.5l-65 98l-353 -469 q-18 -26 -51 -26h-197q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q114 0 215 -55l137 183h-224q-26 0 -45 19t-19 45t19 45t45 19h384v-128h435l-85 128h-222q-26 0 -45 19t-19 45t19 45t45 19h256q33 0 53 -28l267 -400 q91 44 192 44q185 0 316.5 -131.5t131.5 -316.5z" /> -<glyph unicode="&#xf207;" d="M384 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1408 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1362 716l-72 384q-5 23 -22.5 37.5t-40.5 14.5 h-918q-23 0 -40.5 -14.5t-22.5 -37.5l-72 -384q-5 -30 14 -53t49 -23h1062q30 0 49 23t14 53zM1136 1328q0 20 -14 34t-34 14h-640q-20 0 -34 -14t-14 -34t14 -34t34 -14h640q20 0 34 14t14 34zM1536 603v-603h-128v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5v128h-768v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5v128h-128v603q0 112 25 223l103 454q9 78 97.5 137t230 89t312.5 30t312.5 -30t230 -89t97.5 -137l105 -454q23 -102 23 -223z" /> -<glyph unicode="&#xf208;" horiz-adv-x="2048" d="M1463 704q0 -35 -25 -60.5t-61 -25.5h-702q-36 0 -61 25.5t-25 60.5t25 60.5t61 25.5h702q36 0 61 -25.5t25 -60.5zM1677 704q0 86 -23 170h-982q-36 0 -61 25t-25 60q0 36 25 61t61 25h908q-88 143 -235 227t-320 84q-177 0 -327.5 -87.5t-238 -237.5t-87.5 -327 q0 -86 23 -170h982q36 0 61 -25t25 -60q0 -36 -25 -61t-61 -25h-908q88 -143 235.5 -227t320.5 -84q132 0 253 51.5t208 139t139 208t52 253.5zM2048 959q0 -35 -25 -60t-61 -25h-131q17 -85 17 -170q0 -167 -65.5 -319.5t-175.5 -263t-262.5 -176t-319.5 -65.5 q-246 0 -448.5 133t-301.5 350h-189q-36 0 -61 25t-25 61q0 35 25 60t61 25h132q-17 85 -17 170q0 167 65.5 319.5t175.5 263t262.5 176t320.5 65.5q245 0 447.5 -133t301.5 -350h188q36 0 61 -25t25 -61z" /> -<glyph unicode="&#xf209;" horiz-adv-x="1280" d="M953 1158l-114 -328l117 -21q165 451 165 518q0 56 -38 56q-57 0 -130 -225zM654 471l33 -88q37 42 71 67l-33 5.5t-38.5 7t-32.5 8.5zM362 1367q0 -98 159 -521q18 10 49 10q15 0 75 -5l-121 351q-75 220 -123 220q-19 0 -29 -17.5t-10 -37.5zM283 608q0 -36 51.5 -119 t117.5 -153t100 -70q14 0 25.5 13t11.5 27q0 24 -32 102q-13 32 -32 72t-47.5 89t-61.5 81t-62 32q-20 0 -45.5 -27t-25.5 -47zM125 273q0 -41 25 -104q59 -145 183.5 -227t281.5 -82q227 0 382 170q152 169 152 427q0 43 -1 67t-11.5 62t-30.5 56q-56 49 -211.5 75.5 t-270.5 26.5q-37 0 -49 -11q-12 -5 -12 -35q0 -34 21.5 -60t55.5 -40t77.5 -23.5t87.5 -11.5t85 -4t70 0h23q24 0 40 -19q15 -19 19 -55q-28 -28 -96 -54q-61 -22 -93 -46q-64 -46 -108.5 -114t-44.5 -137q0 -31 18.5 -88.5t18.5 -87.5l-3 -12q-4 -12 -4 -14 q-137 10 -146 216q-8 -2 -41 -2q2 -7 2 -21q0 -53 -40.5 -89.5t-94.5 -36.5q-82 0 -166.5 78t-84.5 159q0 34 33 67q52 -64 60 -76q77 -104 133 -104q12 0 26.5 8.5t14.5 20.5q0 34 -87.5 145t-116.5 111q-43 0 -70 -44.5t-27 -90.5zM11 264q0 101 42.5 163t136.5 88 q-28 74 -28 104q0 62 61 123t122 61q29 0 70 -15q-163 462 -163 567q0 80 41 130.5t119 50.5q131 0 325 -581q6 -17 8 -23q6 16 29 79.5t43.5 118.5t54 127.5t64.5 123t70.5 86.5t76.5 36q71 0 112 -49t41 -122q0 -108 -159 -550q61 -15 100.5 -46t58.5 -78t26 -93.5 t7 -110.5q0 -150 -47 -280t-132 -225t-211 -150t-278 -55q-111 0 -223 42q-149 57 -258 191.5t-109 286.5z" /> -<glyph unicode="&#xf20a;" horiz-adv-x="2048" d="M785 528h207q-14 -158 -98.5 -248.5t-214.5 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-203q-5 64 -35.5 99t-81.5 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t40 -51.5t66 -18q95 0 109 139zM1497 528h206 q-14 -158 -98 -248.5t-214 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-204q-4 64 -35 99t-81 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t39.5 -51.5t65.5 -18q49 0 76.5 38t33.5 101zM1856 647q0 207 -15.5 307 t-60.5 161q-6 8 -13.5 14t-21.5 15t-16 11q-86 63 -697 63q-625 0 -710 -63q-5 -4 -17.5 -11.5t-21 -14t-14.5 -14.5q-45 -60 -60 -159.5t-15 -308.5q0 -208 15 -307.5t60 -160.5q6 -8 15 -15t20.5 -14t17.5 -12q44 -33 239.5 -49t470.5 -16q610 0 697 65q5 4 17 11t20.5 14 t13.5 16q46 60 61 159t15 309zM2048 1408v-1536h-2048v1536h2048z" /> -<glyph unicode="&#xf20b;" d="M992 912v-496q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v496q0 112 -80 192t-192 80h-272v-1152q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v1344q0 14 9 23t23 9h464q135 0 249 -66.5t180.5 -180.5t66.5 -249zM1376 1376v-880q0 -135 -66.5 -249t-180.5 -180.5 t-249 -66.5h-464q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h160q14 0 23 -9t9 -23v-768h272q112 0 192 80t80 192v880q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" /> -<glyph unicode="&#xf20c;" d="M1311 694v-114q0 -24 -13.5 -38t-37.5 -14h-202q-24 0 -38 14t-14 38v114q0 24 14 38t38 14h202q24 0 37.5 -14t13.5 -38zM821 464v250q0 53 -32.5 85.5t-85.5 32.5h-133q-68 0 -96 -52q-28 52 -96 52h-130q-53 0 -85.5 -32.5t-32.5 -85.5v-250q0 -22 21 -22h55 q22 0 22 22v230q0 24 13.5 38t38.5 14h94q24 0 38 -14t14 -38v-230q0 -22 21 -22h54q22 0 22 22v230q0 24 14 38t38 14h97q24 0 37.5 -14t13.5 -38v-230q0 -22 22 -22h55q21 0 21 22zM1410 560v154q0 53 -33 85.5t-86 32.5h-264q-53 0 -86 -32.5t-33 -85.5v-410 q0 -21 22 -21h55q21 0 21 21v180q31 -42 94 -42h191q53 0 86 32.5t33 85.5zM1536 1176v-1072q0 -96 -68 -164t-164 -68h-1072q-96 0 -164 68t-68 164v1072q0 96 68 164t164 68h1072q96 0 164 -68t68 -164z" /> -<glyph unicode="&#xf20d;" d="M915 450h-294l147 551zM1001 128h311l-324 1024h-440l-324 -1024h311l383 314zM1536 1120v-960q0 -118 -85 -203t-203 -85h-960q-118 0 -203 85t-85 203v960q0 118 85 203t203 85h960q118 0 203 -85t85 -203z" /> -<glyph unicode="&#xf20e;" horiz-adv-x="2048" d="M2048 641q0 -21 -13 -36.5t-33 -19.5l-205 -356q3 -9 3 -18q0 -20 -12.5 -35.5t-32.5 -19.5l-193 -337q3 -8 3 -16q0 -23 -16.5 -40t-40.5 -17q-25 0 -41 18h-400q-17 -20 -43 -20t-43 20h-399q-17 -20 -43 -20q-23 0 -40 16.5t-17 40.5q0 8 4 20l-193 335 q-20 4 -32.5 19.5t-12.5 35.5q0 9 3 18l-206 356q-20 5 -32.5 20.5t-12.5 35.5q0 21 13.5 36.5t33.5 19.5l199 344q0 1 -0.5 3t-0.5 3q0 36 34 51l209 363q-4 10 -4 18q0 24 17 40.5t40 16.5q26 0 44 -21h396q16 21 43 21t43 -21h398q18 21 44 21q23 0 40 -16.5t17 -40.5 q0 -6 -4 -18l207 -358q23 -1 39 -17.5t16 -38.5q0 -13 -7 -27l187 -324q19 -4 31.5 -19.5t12.5 -35.5zM1063 -158h389l-342 354h-143l-342 -354h360q18 16 39 16t39 -16zM112 654q1 -4 1 -13q0 -10 -2 -15l208 -360q2 0 4.5 -1t5.5 -2.5l5 -2.5l188 199v347l-187 194 q-13 -8 -29 -10zM986 1438h-388l190 -200l554 200h-280q-16 -16 -38 -16t-38 16zM1689 226q1 6 5 11l-64 68l-17 -79h76zM1583 226l22 105l-252 266l-296 -307l63 -64h463zM1495 -142l16 28l65 310h-427l333 -343q8 4 13 5zM578 -158h5l342 354h-373v-335l4 -6q14 -5 22 -13 zM552 226h402l64 66l-309 321l-157 -166v-221zM359 226h163v189l-168 -177q4 -8 5 -12zM358 1051q0 -1 0.5 -2t0.5 -2q0 -16 -8 -29l171 -177v269zM552 1121v-311l153 -157l297 314l-223 236zM556 1425l-4 -8v-264l205 74l-191 201q-6 -2 -10 -3zM1447 1438h-16l-621 -224 l213 -225zM1023 946l-297 -315l311 -319l296 307zM688 634l-136 141v-284zM1038 270l-42 -44h85zM1374 618l238 -251l132 624l-3 5l-1 1zM1718 1018q-8 13 -8 29v2l-216 376q-5 1 -13 5l-437 -463l310 -327zM522 1142v223l-163 -282zM522 196h-163l163 -283v283zM1607 196 l-48 -227l130 227h-82zM1729 266l207 361q-2 10 -2 14q0 1 3 16l-171 296l-129 -612l77 -82q5 3 15 7z" /> -<glyph unicode="&#xf210;" d="M0 856q0 131 91.5 226.5t222.5 95.5h742l352 358v-1470q0 -132 -91.5 -227t-222.5 -95h-780q-131 0 -222.5 95t-91.5 227v790zM1232 102l-176 180v425q0 46 -32 79t-78 33h-484q-46 0 -78 -33t-32 -79v-492q0 -46 32.5 -79.5t77.5 -33.5h770z" /> -<glyph unicode="&#xf211;" d="M934 1386q-317 -121 -556 -362.5t-358 -560.5q-20 89 -20 176q0 208 102.5 384.5t278.5 279t384 102.5q82 0 169 -19zM1203 1267q93 -65 164 -155q-389 -113 -674.5 -400.5t-396.5 -676.5q-93 72 -155 162q112 386 395 671t667 399zM470 -67q115 356 379.5 622t619.5 384 q40 -92 54 -195q-292 -120 -516 -345t-343 -518q-103 14 -194 52zM1536 -125q-193 50 -367 115q-135 -84 -290 -107q109 205 274 370.5t369 275.5q-21 -152 -101 -284q65 -175 115 -370z" /> -<glyph unicode="&#xf212;" horiz-adv-x="2048" d="M1893 1144l155 -1272q-131 0 -257 57q-200 91 -393 91q-226 0 -374 -148q-148 148 -374 148q-193 0 -393 -91q-128 -57 -252 -57h-5l155 1272q224 127 482 127q233 0 387 -106q154 106 387 106q258 0 482 -127zM1398 157q129 0 232 -28.5t260 -93.5l-124 1021 q-171 78 -368 78q-224 0 -374 -141q-150 141 -374 141q-197 0 -368 -78l-124 -1021q105 43 165.5 65t148.5 39.5t178 17.5q202 0 374 -108q172 108 374 108zM1438 191l-55 907q-211 -4 -359 -155q-152 155 -374 155q-176 0 -336 -66l-114 -941q124 51 228.5 76t221.5 25 q209 0 374 -102q172 107 374 102z" /> -<glyph unicode="&#xf213;" horiz-adv-x="2048" d="M1500 165v733q0 21 -15 36t-35 15h-93q-20 0 -35 -15t-15 -36v-733q0 -20 15 -35t35 -15h93q20 0 35 15t15 35zM1216 165v531q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-531q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM924 165v429q0 20 -15 35t-35 15h-101 q-20 0 -35 -15t-15 -35v-429q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM632 165v362q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-362q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM2048 311q0 -166 -118 -284t-284 -118h-1244q-166 0 -284 118t-118 284 q0 116 63 214.5t168 148.5q-10 34 -10 73q0 113 80.5 193.5t193.5 80.5q102 0 180 -67q45 183 194 300t338 117q149 0 275 -73.5t199.5 -199.5t73.5 -275q0 -66 -14 -122q135 -33 221 -142.5t86 -247.5z" /> -<glyph unicode="&#xf214;" d="M0 1536h1536v-1392l-776 -338l-760 338v1392zM1436 209v926h-1336v-926l661 -294zM1436 1235v201h-1336v-201h1336zM181 937v-115h-37v115h37zM181 789v-115h-37v115h37zM181 641v-115h-37v115h37zM181 493v-115h-37v115h37zM181 345v-115h-37v115h37zM207 202l15 34 l105 -47l-15 -33zM343 142l15 34l105 -46l-15 -34zM478 82l15 34l105 -46l-15 -34zM614 23l15 33l104 -46l-15 -34zM797 10l105 46l15 -33l-105 -47zM932 70l105 46l15 -34l-105 -46zM1068 130l105 46l15 -34l-105 -46zM1203 189l105 47l15 -34l-105 -46zM259 1389v-36h-114 v36h114zM421 1389v-36h-115v36h115zM583 1389v-36h-115v36h115zM744 1389v-36h-114v36h114zM906 1389v-36h-114v36h114zM1068 1389v-36h-115v36h115zM1230 1389v-36h-115v36h115zM1391 1389v-36h-114v36h114zM181 1049v-79h-37v115h115v-36h-78zM421 1085v-36h-115v36h115z M583 1085v-36h-115v36h115zM744 1085v-36h-114v36h114zM906 1085v-36h-114v36h114zM1068 1085v-36h-115v36h115zM1230 1085v-36h-115v36h115zM1355 970v79h-78v36h115v-115h-37zM1355 822v115h37v-115h-37zM1355 674v115h37v-115h-37zM1355 526v115h37v-115h-37zM1355 378 v115h37v-115h-37zM1355 230v115h37v-115h-37zM760 265q-129 0 -221 91.5t-92 221.5q0 129 92 221t221 92q130 0 221.5 -92t91.5 -221q0 -130 -91.5 -221.5t-221.5 -91.5zM595 646q0 -36 19.5 -56.5t49.5 -25t64 -7t64 -2t49.5 -9t19.5 -30.5q0 -49 -112 -49q-97 0 -123 51 h-3l-31 -63q67 -42 162 -42q29 0 56.5 5t55.5 16t45.5 33t17.5 53q0 46 -27.5 69.5t-67.5 27t-79.5 3t-67 5t-27.5 25.5q0 21 20.5 33t40.5 15t41 3q34 0 70.5 -11t51.5 -34h3l30 58q-3 1 -21 8.5t-22.5 9t-19.5 7t-22 7t-20 4.5t-24 4t-23 1q-29 0 -56.5 -5t-54 -16.5 t-43 -34t-16.5 -53.5z" /> -<glyph unicode="&#xf215;" horiz-adv-x="2048" d="M863 504q0 112 -79.5 191.5t-191.5 79.5t-191 -79.5t-79 -191.5t79 -191t191 -79t191.5 79t79.5 191zM1726 505q0 112 -79 191t-191 79t-191.5 -79t-79.5 -191q0 -113 79.5 -192t191.5 -79t191 79.5t79 191.5zM2048 1314v-1348q0 -44 -31.5 -75.5t-76.5 -31.5h-1832 q-45 0 -76.5 31.5t-31.5 75.5v1348q0 44 31.5 75.5t76.5 31.5h431q44 0 76 -31.5t32 -75.5v-161h754v161q0 44 32 75.5t76 31.5h431q45 0 76.5 -31.5t31.5 -75.5z" /> -<glyph unicode="&#xf216;" horiz-adv-x="2048" d="M1430 953zM1690 749q148 0 253 -98.5t105 -244.5q0 -157 -109 -261.5t-267 -104.5q-85 0 -162 27.5t-138 73.5t-118 106t-109 126.5t-103.5 132.5t-108.5 126t-117 106t-136 73.5t-159 27.5q-154 0 -251.5 -91.5t-97.5 -244.5q0 -157 104 -250t263 -93q100 0 208 37.5 t193 98.5q5 4 21 18.5t30 24t22 9.5q14 0 24.5 -10.5t10.5 -24.5q0 -24 -60 -77q-101 -88 -234.5 -142t-260.5 -54q-133 0 -245.5 58t-180 165t-67.5 241q0 205 141.5 341t347.5 136q120 0 226.5 -43.5t185.5 -113t151.5 -153t139 -167.5t133.5 -153.5t149.5 -113 t172.5 -43.5q102 0 168.5 61.5t66.5 162.5q0 95 -64.5 159t-159.5 64q-30 0 -81.5 -18.5t-68.5 -18.5q-20 0 -35.5 15t-15.5 35q0 18 8.5 57t8.5 59q0 159 -107.5 263t-266.5 104q-58 0 -111.5 -18.5t-84 -40.5t-55.5 -40.5t-33 -18.5q-15 0 -25.5 10.5t-10.5 25.5 q0 19 25 46q59 67 147 103.5t182 36.5q191 0 318 -125.5t127 -315.5q0 -37 -4 -66q57 15 115 15z" /> -<glyph unicode="&#xf217;" horiz-adv-x="1664" d="M1216 832q0 26 -19 45t-45 19h-128v128q0 26 -19 45t-45 19t-45 -19t-19 -45v-128h-128q-26 0 -45 -19t-19 -45t19 -45t45 -19h128v-128q0 -26 19 -45t45 -19t45 19t19 45v128h128q26 0 45 19t19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920 q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" /> -<glyph unicode="&#xf218;" horiz-adv-x="1792" d="M1280 832q0 26 -19 45t-45 19t-45 -19l-147 -146v293q0 26 -19 45t-45 19t-45 -19t-19 -45v-293l-147 146q-19 19 -45 19t-45 -19t-19 -45t19 -45l256 -256q19 -19 45 -19t45 19l256 256q19 19 19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920 q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" /> -<glyph unicode="&#xf219;" horiz-adv-x="2048" d="M212 768l623 -665l-300 665h-323zM1024 -4l349 772h-698zM538 896l204 384h-262l-288 -384h346zM1213 103l623 665h-323zM683 896h682l-204 384h-274zM1510 896h346l-288 384h-262zM1651 1382l384 -512q14 -18 13 -41.5t-17 -40.5l-960 -1024q-18 -20 -47 -20t-47 20 l-960 1024q-16 17 -17 40.5t13 41.5l384 512q18 26 51 26h1152q33 0 51 -26z" /> -<glyph unicode="&#xf21a;" horiz-adv-x="2048" d="M1811 -19q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83 q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83 q19 19 45 19t45 -19l83 -83zM237 19q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -82l83 82q19 19 45 19t45 -19l83 -82l64 64v293l-210 314q-17 26 -7 56.5t40 40.5l177 58v299h128v128h256v128h256v-128h256v-128h128v-299l177 -58q30 -10 40 -40.5t-7 -56.5l-210 -314 v-293l19 18q19 19 45 19t45 -19l83 -82l83 82q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83 q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83zM640 1152v-128l384 128l384 -128v128h-128v128h-512v-128h-128z" /> -<glyph unicode="&#xf21b;" d="M576 0l96 448l-96 128l-128 64zM832 0l128 640l-128 -64l-96 -128zM992 1010q-2 4 -4 6q-10 8 -96 8q-70 0 -167 -19q-7 -2 -21 -2t-21 2q-97 19 -167 19q-86 0 -96 -8q-2 -2 -4 -6q2 -18 4 -27q2 -3 7.5 -6.5t7.5 -10.5q2 -4 7.5 -20.5t7 -20.5t7.5 -17t8.5 -17t9 -14 t12 -13.5t14 -9.5t17.5 -8t20.5 -4t24.5 -2q36 0 59 12.5t32.5 30t14.5 34.5t11.5 29.5t17.5 12.5h12q11 0 17.5 -12.5t11.5 -29.5t14.5 -34.5t32.5 -30t59 -12.5q13 0 24.5 2t20.5 4t17.5 8t14 9.5t12 13.5t9 14t8.5 17t7.5 17t7 20.5t7.5 20.5q2 7 7.5 10.5t7.5 6.5 q2 9 4 27zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 61 4.5 118t19 125.5t37.5 123.5t63.5 103.5t93.5 74.5l-90 220h214q-22 64 -22 128q0 12 2 32q-194 40 -194 96q0 57 210 99q17 62 51.5 134t70.5 114q32 37 76 37q30 0 84 -31t84 -31t84 31 t84 31q44 0 76 -37q36 -42 70.5 -114t51.5 -134q210 -42 210 -99q0 -56 -194 -96q7 -81 -20 -160h214l-82 -225q63 -33 107.5 -96.5t65.5 -143.5t29 -151.5t8 -148.5z" /> -<glyph unicode="&#xf21c;" horiz-adv-x="2304" d="M2301 500q12 -103 -22 -198.5t-99 -163.5t-158.5 -106t-196.5 -31q-161 11 -279.5 125t-134.5 274q-12 111 27.5 210.5t118.5 170.5l-71 107q-96 -80 -151 -194t-55 -244q0 -27 -18.5 -46.5t-45.5 -19.5h-256h-69q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5 t-131.5 316.5t131.5 316.5t316.5 131.5q76 0 152 -27l24 45q-123 110 -304 110h-64q-26 0 -45 19t-19 45t19 45t45 19h128q78 0 145 -13.5t116.5 -38.5t71.5 -39.5t51 -36.5h512h115l-85 128h-222q-30 0 -49 22.5t-14 52.5q4 23 23 38t43 15h253q33 0 53 -28l70 -105 l114 114q19 19 46 19h101q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-179l115 -172q131 63 275 36q143 -26 244 -134.5t118 -253.5zM448 128q115 0 203 72.5t111 183.5h-314q-35 0 -55 31q-18 32 -1 63l147 277q-47 13 -91 13q-132 0 -226 -94t-94 -226t94 -226 t226 -94zM1856 128q132 0 226 94t94 226t-94 226t-226 94q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94z" /> -<glyph unicode="&#xf21d;" d="M1408 0q0 -63 -61.5 -113.5t-164 -81t-225 -46t-253.5 -15.5t-253.5 15.5t-225 46t-164 81t-61.5 113.5q0 49 33 88.5t91 66.5t118 44.5t131 29.5q26 5 48 -10.5t26 -41.5q5 -26 -10.5 -48t-41.5 -26q-58 -10 -106 -23.5t-76.5 -25.5t-48.5 -23.5t-27.5 -19.5t-8.5 -12 q3 -11 27 -26.5t73 -33t114 -32.5t160.5 -25t201.5 -10t201.5 10t160.5 25t114 33t73 33.5t27 27.5q-1 4 -8.5 11t-27.5 19t-48.5 23.5t-76.5 25t-106 23.5q-26 4 -41.5 26t-10.5 48q4 26 26 41.5t48 10.5q71 -12 131 -29.5t118 -44.5t91 -66.5t33 -88.5zM1024 896v-384 q0 -26 -19 -45t-45 -19h-64v-384q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v384h-64q-26 0 -45 19t-19 45v384q0 53 37.5 90.5t90.5 37.5h384q53 0 90.5 -37.5t37.5 -90.5zM928 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5 t158.5 -65.5t65.5 -158.5z" /> -<glyph unicode="&#xf21e;" horiz-adv-x="1792" d="M1280 512h305q-5 -6 -10 -10.5t-9 -7.5l-3 -4l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-5 2 -21 20h369q22 0 39.5 13.5t22.5 34.5l70 281l190 -667q6 -20 23 -33t39 -13q21 0 38 13t23 33l146 485l56 -112q18 -35 57 -35zM1792 940q0 -145 -103 -300h-369l-111 221 q-8 17 -25.5 27t-36.5 8q-45 -5 -56 -46l-129 -430l-196 686q-6 20 -23.5 33t-39.5 13t-39 -13.5t-22 -34.5l-116 -464h-423q-103 155 -103 300q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124 t127 -344z" /> -<glyph unicode="&#xf221;" horiz-adv-x="1280" d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292 q11 134 80.5 249t182 188t245.5 88q170 19 319 -54t236 -212t87 -306zM128 960q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5z" /> -<glyph unicode="&#xf222;" horiz-adv-x="1792" d="M1280 1504q0 14 9 23t23 9h416q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-419 -420q87 -104 129.5 -236.5t30.5 -276.5q-22 -250 -200.5 -431t-428.5 -206q-163 -17 -314 39.5t-256.5 162t-162 256.5t-39.5 314q25 250 206 428.5 t431 200.5q144 12 276.5 -30.5t236.5 -129.5l419 419h-261q-14 0 -23 9t-9 23v64zM704 -128q117 0 223.5 45.5t184 123t123 184t45.5 223.5t-45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123 t223.5 -45.5z" /> -<glyph unicode="&#xf223;" horiz-adv-x="1280" d="M830 1220q145 -72 233.5 -210.5t88.5 -305.5q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5 t-147.5 384.5q0 167 88.5 305.5t233.5 210.5q-165 96 -228 273q-6 16 3.5 29.5t26.5 13.5h69q21 0 29 -20q44 -106 140 -171t214 -65t214 65t140 171q8 20 37 20h61q17 0 26.5 -13.5t3.5 -29.5q-63 -177 -228 -273zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> -<glyph unicode="&#xf224;" d="M1024 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64 q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-149 16 -270.5 103t-186.5 223.5t-53 291.5q16 204 160 353.5t347 172.5q118 14 228 -19t198 -103l255 254h-134q-14 0 -23 9t-9 23v64zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> -<glyph unicode="&#xf225;" horiz-adv-x="1792" d="M1280 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64 q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5t-147.5 384.5q0 201 126 359l-52 53l-101 -111q-9 -10 -22 -10.5t-23 7.5l-48 44q-10 8 -10.5 21.5t8.5 23.5l105 115l-111 112v-134q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9 t-9 23v288q0 26 19 45t45 19h288q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-133l106 -107l86 94q9 10 22 10.5t23 -7.5l48 -44q10 -8 10.5 -21.5t-8.5 -23.5l-90 -99l57 -56q158 126 359 126t359 -126l255 254h-134q-14 0 -23 9t-9 23v64zM832 256q185 0 316.5 131.5 t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> -<glyph unicode="&#xf226;" horiz-adv-x="1792" d="M1790 1007q12 -155 -52.5 -292t-186 -224t-271.5 -103v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-512v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23 t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292q17 206 164.5 356.5t352.5 169.5q206 21 377 -94q171 115 377 94q205 -19 352.5 -169.5t164.5 -356.5zM896 647q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM576 512q115 0 218 57q-154 165 -154 391 q0 224 154 391q-103 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5zM1152 128v260q-137 15 -256 94q-119 -79 -256 -94v-260h512zM1216 512q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5q-115 0 -218 -57q154 -167 154 -391 q0 -226 -154 -391q103 -57 218 -57z" /> -<glyph unicode="&#xf227;" horiz-adv-x="1920" d="M1536 1120q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-31 -182 -166 -312t-318 -156q-210 -29 -384.5 80t-241.5 300q-117 6 -221 57.5t-177.5 133t-113.5 192.5t-32 230 q9 135 78 252t182 191.5t248 89.5q118 14 227.5 -19t198.5 -103l255 254h-134q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q59 -74 93 -169q182 -9 328 -124l255 254h-134q-14 0 -23 9 t-9 23v64zM1024 704q0 20 -4 58q-162 -25 -271 -150t-109 -292q0 -20 4 -58q162 25 271 150t109 292zM128 704q0 -168 111 -294t276 -149q-3 29 -3 59q0 210 135 369.5t338 196.5q-53 120 -163.5 193t-245.5 73q-185 0 -316.5 -131.5t-131.5 -316.5zM1088 -128 q185 0 316.5 131.5t131.5 316.5q0 168 -111 294t-276 149q3 -29 3 -59q0 -210 -135 -369.5t-338 -196.5q53 -120 163.5 -193t245.5 -73z" /> -<glyph unicode="&#xf228;" horiz-adv-x="2048" d="M1664 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-32 -180 -164.5 -310t-313.5 -157q-223 -34 -409 90q-117 -78 -256 -93v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23 t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-155 17 -279.5 109.5t-187 237.5t-39.5 307q25 187 159.5 322.5t320.5 164.5q224 34 410 -90q146 97 320 97q201 0 359 -126l255 254h-134q-14 0 -23 9 t-9 23v64zM896 391q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM128 704q0 -185 131.5 -316.5t316.5 -131.5q117 0 218 57q-154 167 -154 391t154 391q-101 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5zM1216 256q185 0 316.5 131.5t131.5 316.5 t-131.5 316.5t-316.5 131.5q-117 0 -218 -57q154 -167 154 -391t-154 -391q101 -57 218 -57z" /> -<glyph unicode="&#xf229;" horiz-adv-x="1792" d="M1728 1536q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-229 -230l156 -156q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-156 157l-99 -100q87 -104 129.5 -236.5t30.5 -276.5q-22 -250 -200.5 -431t-428.5 -206q-163 -17 -314 39.5 t-256.5 162t-162 256.5t-39.5 314q25 250 206 428.5t431 200.5q144 12 276.5 -30.5t236.5 -129.5l99 99l-156 156q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l156 -156l229 229h-261q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h416zM1280 448q0 117 -45.5 223.5t-123 184t-184 123 t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5z" /> -<glyph unicode="&#xf22a;" horiz-adv-x="1280" d="M640 892q217 -24 364.5 -187.5t147.5 -384.5q0 -167 -87 -306t-236 -212t-319 -54q-133 15 -245.5 88t-182 188t-80.5 249q-12 155 52.5 292t186 224t271.5 103v132h-160q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h160v165l-92 -92q-10 -9 -23 -9t-22 9l-46 46q-9 9 -9 22 t9 23l202 201q19 19 45 19t45 -19l202 -201q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-92 92v-165h160q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-160v-132zM576 -128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5 t131.5 -316.5t316.5 -131.5z" /> -<glyph unicode="&#xf22b;" horiz-adv-x="2048" d="M2029 685q19 -19 19 -45t-19 -45l-294 -294q-9 -10 -22.5 -10t-22.5 10l-45 45q-10 9 -10 22.5t10 22.5l185 185h-294v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-131q-12 -119 -67 -226t-139 -183.5t-196.5 -121.5t-234.5 -45q-180 0 -330.5 91t-234.5 247 t-74 337q8 162 94 300t226.5 219.5t302.5 85.5q166 4 310.5 -71.5t235.5 -208.5t107 -296h131v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224h294l-185 185q-10 9 -10 22.5t10 22.5l45 45q9 10 22.5 10t22.5 -10zM640 128q104 0 198.5 40.5t163.5 109.5t109.5 163.5 t40.5 198.5t-40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5z" /> -<glyph unicode="&#xf22c;" horiz-adv-x="1280" d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-612q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v612q-217 24 -364.5 187.5t-147.5 384.5q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5zM576 512q185 0 316.5 131.5 t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> -<glyph unicode="&#xf22d;" horiz-adv-x="1792" /> -<glyph unicode="&#xf22e;" horiz-adv-x="1792" /> -<glyph unicode="&#xf22f;" horiz-adv-x="1792" /> -<glyph unicode="&#xf230;" d="M1451 1408q35 0 60 -25t25 -60v-1366q0 -35 -25 -60t-60 -25h-391v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-735q-35 0 -60 25t-25 60v1366q0 35 25 60t60 25h1366z" /> -<glyph unicode="&#xf231;" horiz-adv-x="1280" d="M0 939q0 108 37.5 203.5t103.5 166.5t152 123t185 78t202 26q158 0 294 -66.5t221 -193.5t85 -287q0 -96 -19 -188t-60 -177t-100 -149.5t-145 -103t-189 -38.5q-68 0 -135 32t-96 88q-10 -39 -28 -112.5t-23.5 -95t-20.5 -71t-26 -71t-32 -62.5t-46 -77.5t-62 -86.5 l-14 -5l-9 10q-15 157 -15 188q0 92 21.5 206.5t66.5 287.5t52 203q-32 65 -32 169q0 83 52 156t132 73q61 0 95 -40.5t34 -102.5q0 -66 -44 -191t-44 -187q0 -63 45 -104.5t109 -41.5q55 0 102 25t78.5 68t56 95t38 110.5t20 111t6.5 99.5q0 173 -109.5 269.5t-285.5 96.5 q-200 0 -334 -129.5t-134 -328.5q0 -44 12.5 -85t27 -65t27 -45.5t12.5 -30.5q0 -28 -15 -73t-37 -45q-2 0 -17 3q-51 15 -90.5 56t-61 94.5t-32.5 108t-11 106.5z" /> -<glyph unicode="&#xf232;" d="M985 562q13 0 97.5 -44t89.5 -53q2 -5 2 -15q0 -33 -17 -76q-16 -39 -71 -65.5t-102 -26.5q-57 0 -190 62q-98 45 -170 118t-148 185q-72 107 -71 194v8q3 91 74 158q24 22 52 22q6 0 18 -1.5t19 -1.5q19 0 26.5 -6.5t15.5 -27.5q8 -20 33 -88t25 -75q0 -21 -34.5 -57.5 t-34.5 -46.5q0 -7 5 -15q34 -73 102 -137q56 -53 151 -101q12 -7 22 -7q15 0 54 48.5t52 48.5zM782 32q127 0 243.5 50t200.5 134t134 200.5t50 243.5t-50 243.5t-134 200.5t-200.5 134t-243.5 50t-243.5 -50t-200.5 -134t-134 -200.5t-50 -243.5q0 -203 120 -368l-79 -233 l242 77q158 -104 345 -104zM782 1414q153 0 292.5 -60t240.5 -161t161 -240.5t60 -292.5t-60 -292.5t-161 -240.5t-240.5 -161t-292.5 -60q-195 0 -365 94l-417 -134l136 405q-108 178 -108 389q0 153 60 292.5t161 240.5t240.5 161t292.5 60z" /> -<glyph unicode="&#xf233;" horiz-adv-x="1792" d="M128 128h1024v128h-1024v-128zM128 640h1024v128h-1024v-128zM1696 192q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM128 1152h1024v128h-1024v-128zM1696 704q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1696 1216 q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1792 384v-384h-1792v384h1792zM1792 896v-384h-1792v384h1792zM1792 1408v-384h-1792v384h1792z" /> -<glyph unicode="&#xf234;" horiz-adv-x="2048" d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1664 512h352q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-352q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5 t-9.5 22.5v352h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v352q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5v-352zM928 288q0 -52 38 -90t90 -38h256v-238q-68 -50 -171 -50h-874q-121 0 -194 69t-73 190q0 53 3.5 103.5t14 109t26.5 108.5 t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q79 -61 154.5 -91.5t164.5 -30.5t164.5 30.5t154.5 91.5q20 17 39 17q132 0 217 -96h-223q-52 0 -90 -38t-38 -90v-192z" /> -<glyph unicode="&#xf235;" horiz-adv-x="2048" d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1781 320l249 -249q9 -9 9 -23q0 -13 -9 -22l-136 -136q-9 -9 -22 -9q-14 0 -23 9l-249 249l-249 -249q-9 -9 -23 -9q-13 0 -22 9l-136 136 q-9 9 -9 22q0 14 9 23l249 249l-249 249q-9 9 -9 23q0 13 9 22l136 136q9 9 22 9q14 0 23 -9l249 -249l249 249q9 9 23 9q13 0 22 -9l136 -136q9 -9 9 -22q0 -14 -9 -23zM1283 320l-181 -181q-37 -37 -37 -91q0 -53 37 -90l83 -83q-21 -3 -44 -3h-874q-121 0 -194 69 t-73 190q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q154 -122 319 -122t319 122q20 17 39 17q28 0 57 -6q-28 -27 -41 -50t-13 -56q0 -54 37 -91z" /> -<glyph unicode="&#xf236;" horiz-adv-x="2048" d="M256 512h1728q26 0 45 -19t19 -45v-448h-256v256h-1536v-256h-256v1216q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-704zM832 832q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM2048 576v64q0 159 -112.5 271.5t-271.5 112.5h-704 q-26 0 -45 -19t-19 -45v-384h1152z" /> -<glyph unicode="&#xf237;" d="M1536 1536l-192 -448h192v-192h-274l-55 -128h329v-192h-411l-357 -832l-357 832h-411v192h329l-55 128h-274v192h192l-192 448h256l323 -768h378l323 768h256zM768 320l108 256h-216z" /> -<glyph unicode="&#xf238;" d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM768 192q80 0 136 56t56 136t-56 136t-136 56 t-136 -56t-56 -136t56 -136t136 -56zM1344 768v512h-1152v-512h1152z" /> -<glyph unicode="&#xf239;" d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM288 224q66 0 113 47t47 113t-47 113t-113 47 t-113 -47t-47 -113t47 -113t113 -47zM704 768v512h-544v-512h544zM1248 224q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM1408 768v512h-576v-512h576z" /> -<glyph unicode="&#xf23a;" horiz-adv-x="1792" d="M1792 204v-209h-642v209h134v926h-6l-314 -1135h-243l-310 1135h-8v-926h135v-209h-538v209h69q21 0 43 19.5t22 37.5v881q0 18 -22 40t-43 22h-69v209h672l221 -821h6l223 821h670v-209h-71q-19 0 -41 -22t-22 -40v-881q0 -18 21.5 -37.5t41.5 -19.5h71z" /> -<glyph unicode="&#xf23b;" horiz-adv-x="1792" /> -<glyph unicode="&#xf23c;" horiz-adv-x="1792" /> -<glyph unicode="&#xf23d;" horiz-adv-x="1792" /> -<glyph unicode="&#xf23e;" horiz-adv-x="1792" /> -<glyph unicode="&#xf500;" horiz-adv-x="1792" /> -</font> -</defs></svg> \ No newline at end of file diff --git a/assets/font-awesome/fonts/fontawesome-webfont.ttf b/assets/font-awesome/fonts/fontawesome-webfont.ttf deleted file mode 100644 index ed9372f8..00000000 Binary files a/assets/font-awesome/fonts/fontawesome-webfont.ttf and /dev/null differ diff --git a/assets/font-awesome/fonts/fontawesome-webfont.woff b/assets/font-awesome/fonts/fontawesome-webfont.woff deleted file mode 100644 index 8b280b98..00000000 Binary files a/assets/font-awesome/fonts/fontawesome-webfont.woff and /dev/null differ diff --git a/assets/font-awesome/fonts/fontawesome-webfont.woff2 b/assets/font-awesome/fonts/fontawesome-webfont.woff2 deleted file mode 100644 index 3311d585..00000000 Binary files a/assets/font-awesome/fonts/fontawesome-webfont.woff2 and /dev/null differ diff --git a/assets/font-awesome/less/animated.less b/assets/font-awesome/less/animated.less deleted file mode 100644 index 66ad52a5..00000000 --- a/assets/font-awesome/less/animated.less +++ /dev/null @@ -1,34 +0,0 @@ -// Animated Icons -// -------------------------- - -.@{fa-css-prefix}-spin { - -webkit-animation: fa-spin 2s infinite linear; - animation: fa-spin 2s infinite linear; -} - -.@{fa-css-prefix}-pulse { - -webkit-animation: fa-spin 1s infinite steps(8); - animation: fa-spin 1s infinite steps(8); -} - -@-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} - -@keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} diff --git a/assets/font-awesome/less/bordered-pulled.less b/assets/font-awesome/less/bordered-pulled.less deleted file mode 100644 index 0c90eb56..00000000 --- a/assets/font-awesome/less/bordered-pulled.less +++ /dev/null @@ -1,16 +0,0 @@ -// Bordered & Pulled -// ------------------------- - -.@{fa-css-prefix}-border { - padding: .2em .25em .15em; - border: solid .08em @fa-border-color; - border-radius: .1em; -} - -.pull-right { float: right; } -.pull-left { float: left; } - -.@{fa-css-prefix} { - &.pull-left { margin-right: .3em; } - &.pull-right { margin-left: .3em; } -} diff --git a/assets/font-awesome/less/core.less b/assets/font-awesome/less/core.less deleted file mode 100644 index f814f1e1..00000000 --- a/assets/font-awesome/less/core.less +++ /dev/null @@ -1,13 +0,0 @@ -// Base Class Definition -// ------------------------- - -.@{fa-css-prefix} { - display: inline-block; - font: normal normal normal @fa-font-size-base/1 FontAwesome; // shortening font declaration - font-size: inherit; // can't have font-size inherit on line above, so need to override - text-rendering: auto; // optimizelegibility throws things off #1094 - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - transform: translate(0, 0); // ensures no half-pixel rendering in firefox - -} diff --git a/assets/font-awesome/less/fixed-width.less b/assets/font-awesome/less/fixed-width.less deleted file mode 100644 index 110289f2..00000000 --- a/assets/font-awesome/less/fixed-width.less +++ /dev/null @@ -1,6 +0,0 @@ -// Fixed Width Icons -// ------------------------- -.@{fa-css-prefix}-fw { - width: (18em / 14); - text-align: center; -} diff --git a/assets/font-awesome/less/font-awesome.less b/assets/font-awesome/less/font-awesome.less deleted file mode 100644 index 1f45c63d..00000000 --- a/assets/font-awesome/less/font-awesome.less +++ /dev/null @@ -1,17 +0,0 @@ -/*! - * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */ - -@import "variables.less"; -@import "mixins.less"; -@import "path.less"; -@import "core.less"; -@import "larger.less"; -@import "fixed-width.less"; -@import "list.less"; -@import "bordered-pulled.less"; -@import "animated.less"; -@import "rotated-flipped.less"; -@import "stacked.less"; -@import "icons.less"; diff --git a/assets/font-awesome/less/icons.less b/assets/font-awesome/less/icons.less deleted file mode 100644 index c265de5a..00000000 --- a/assets/font-awesome/less/icons.less +++ /dev/null @@ -1,596 +0,0 @@ -/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen - readers do not read off random characters that represent icons */ - -.@{fa-css-prefix}-glass:before { content: @fa-var-glass; } -.@{fa-css-prefix}-music:before { content: @fa-var-music; } -.@{fa-css-prefix}-search:before { content: @fa-var-search; } -.@{fa-css-prefix}-envelope-o:before { content: @fa-var-envelope-o; } -.@{fa-css-prefix}-heart:before { content: @fa-var-heart; } -.@{fa-css-prefix}-star:before { content: @fa-var-star; } -.@{fa-css-prefix}-star-o:before { content: @fa-var-star-o; } -.@{fa-css-prefix}-user:before { content: @fa-var-user; } -.@{fa-css-prefix}-film:before { content: @fa-var-film; } -.@{fa-css-prefix}-th-large:before { content: @fa-var-th-large; } -.@{fa-css-prefix}-th:before { content: @fa-var-th; } -.@{fa-css-prefix}-th-list:before { content: @fa-var-th-list; } -.@{fa-css-prefix}-check:before { content: @fa-var-check; } -.@{fa-css-prefix}-remove:before, -.@{fa-css-prefix}-close:before, -.@{fa-css-prefix}-times:before { content: @fa-var-times; } -.@{fa-css-prefix}-search-plus:before { content: @fa-var-search-plus; } -.@{fa-css-prefix}-search-minus:before { content: @fa-var-search-minus; } -.@{fa-css-prefix}-power-off:before { content: @fa-var-power-off; } -.@{fa-css-prefix}-signal:before { content: @fa-var-signal; } -.@{fa-css-prefix}-gear:before, -.@{fa-css-prefix}-cog:before { content: @fa-var-cog; } -.@{fa-css-prefix}-trash-o:before { content: @fa-var-trash-o; } -.@{fa-css-prefix}-home:before { content: @fa-var-home; } -.@{fa-css-prefix}-file-o:before { content: @fa-var-file-o; } -.@{fa-css-prefix}-clock-o:before { content: @fa-var-clock-o; } -.@{fa-css-prefix}-road:before { content: @fa-var-road; } -.@{fa-css-prefix}-download:before { content: @fa-var-download; } -.@{fa-css-prefix}-arrow-circle-o-down:before { content: @fa-var-arrow-circle-o-down; } -.@{fa-css-prefix}-arrow-circle-o-up:before { content: @fa-var-arrow-circle-o-up; } -.@{fa-css-prefix}-inbox:before { content: @fa-var-inbox; } -.@{fa-css-prefix}-play-circle-o:before { content: @fa-var-play-circle-o; } -.@{fa-css-prefix}-rotate-right:before, -.@{fa-css-prefix}-repeat:before { content: @fa-var-repeat; } -.@{fa-css-prefix}-refresh:before { content: @fa-var-refresh; } -.@{fa-css-prefix}-list-alt:before { content: @fa-var-list-alt; } -.@{fa-css-prefix}-lock:before { content: @fa-var-lock; } -.@{fa-css-prefix}-flag:before { content: @fa-var-flag; } -.@{fa-css-prefix}-headphones:before { content: @fa-var-headphones; } -.@{fa-css-prefix}-volume-off:before { content: @fa-var-volume-off; } -.@{fa-css-prefix}-volume-down:before { content: @fa-var-volume-down; } -.@{fa-css-prefix}-volume-up:before { content: @fa-var-volume-up; } -.@{fa-css-prefix}-qrcode:before { content: @fa-var-qrcode; } -.@{fa-css-prefix}-barcode:before { content: @fa-var-barcode; } -.@{fa-css-prefix}-tag:before { content: @fa-var-tag; } -.@{fa-css-prefix}-tags:before { content: @fa-var-tags; } -.@{fa-css-prefix}-book:before { content: @fa-var-book; } -.@{fa-css-prefix}-bookmark:before { content: @fa-var-bookmark; } -.@{fa-css-prefix}-print:before { content: @fa-var-print; } -.@{fa-css-prefix}-camera:before { content: @fa-var-camera; } -.@{fa-css-prefix}-font:before { content: @fa-var-font; } -.@{fa-css-prefix}-bold:before { content: @fa-var-bold; } -.@{fa-css-prefix}-italic:before { content: @fa-var-italic; } -.@{fa-css-prefix}-text-height:before { content: @fa-var-text-height; } -.@{fa-css-prefix}-text-width:before { content: @fa-var-text-width; } -.@{fa-css-prefix}-align-left:before { content: @fa-var-align-left; } -.@{fa-css-prefix}-align-center:before { content: @fa-var-align-center; } -.@{fa-css-prefix}-align-right:before { content: @fa-var-align-right; } -.@{fa-css-prefix}-align-justify:before { content: @fa-var-align-justify; } -.@{fa-css-prefix}-list:before { content: @fa-var-list; } -.@{fa-css-prefix}-dedent:before, -.@{fa-css-prefix}-outdent:before { content: @fa-var-outdent; } -.@{fa-css-prefix}-indent:before { content: @fa-var-indent; } -.@{fa-css-prefix}-video-camera:before { content: @fa-var-video-camera; } -.@{fa-css-prefix}-photo:before, -.@{fa-css-prefix}-image:before, -.@{fa-css-prefix}-picture-o:before { content: @fa-var-picture-o; } -.@{fa-css-prefix}-pencil:before { content: @fa-var-pencil; } -.@{fa-css-prefix}-map-marker:before { content: @fa-var-map-marker; } -.@{fa-css-prefix}-adjust:before { content: @fa-var-adjust; } -.@{fa-css-prefix}-tint:before { content: @fa-var-tint; } -.@{fa-css-prefix}-edit:before, -.@{fa-css-prefix}-pencil-square-o:before { content: @fa-var-pencil-square-o; } -.@{fa-css-prefix}-share-square-o:before { content: @fa-var-share-square-o; } -.@{fa-css-prefix}-check-square-o:before { content: @fa-var-check-square-o; } -.@{fa-css-prefix}-arrows:before { content: @fa-var-arrows; } -.@{fa-css-prefix}-step-backward:before { content: @fa-var-step-backward; } -.@{fa-css-prefix}-fast-backward:before { content: @fa-var-fast-backward; } -.@{fa-css-prefix}-backward:before { content: @fa-var-backward; } -.@{fa-css-prefix}-play:before { content: @fa-var-play; } -.@{fa-css-prefix}-pause:before { content: @fa-var-pause; } -.@{fa-css-prefix}-stop:before { content: @fa-var-stop; } -.@{fa-css-prefix}-forward:before { content: @fa-var-forward; } -.@{fa-css-prefix}-fast-forward:before { content: @fa-var-fast-forward; } -.@{fa-css-prefix}-step-forward:before { content: @fa-var-step-forward; } -.@{fa-css-prefix}-eject:before { content: @fa-var-eject; } -.@{fa-css-prefix}-chevron-left:before { content: @fa-var-chevron-left; } -.@{fa-css-prefix}-chevron-right:before { content: @fa-var-chevron-right; } -.@{fa-css-prefix}-plus-circle:before { content: @fa-var-plus-circle; } -.@{fa-css-prefix}-minus-circle:before { content: @fa-var-minus-circle; } -.@{fa-css-prefix}-times-circle:before { content: @fa-var-times-circle; } -.@{fa-css-prefix}-check-circle:before { content: @fa-var-check-circle; } -.@{fa-css-prefix}-question-circle:before { content: @fa-var-question-circle; } -.@{fa-css-prefix}-info-circle:before { content: @fa-var-info-circle; } -.@{fa-css-prefix}-crosshairs:before { content: @fa-var-crosshairs; } -.@{fa-css-prefix}-times-circle-o:before { content: @fa-var-times-circle-o; } -.@{fa-css-prefix}-check-circle-o:before { content: @fa-var-check-circle-o; } -.@{fa-css-prefix}-ban:before { content: @fa-var-ban; } -.@{fa-css-prefix}-arrow-left:before { content: @fa-var-arrow-left; } -.@{fa-css-prefix}-arrow-right:before { content: @fa-var-arrow-right; } -.@{fa-css-prefix}-arrow-up:before { content: @fa-var-arrow-up; } -.@{fa-css-prefix}-arrow-down:before { content: @fa-var-arrow-down; } -.@{fa-css-prefix}-mail-forward:before, -.@{fa-css-prefix}-share:before { content: @fa-var-share; } -.@{fa-css-prefix}-expand:before { content: @fa-var-expand; } -.@{fa-css-prefix}-compress:before { content: @fa-var-compress; } -.@{fa-css-prefix}-plus:before { content: @fa-var-plus; } -.@{fa-css-prefix}-minus:before { content: @fa-var-minus; } -.@{fa-css-prefix}-asterisk:before { content: @fa-var-asterisk; } -.@{fa-css-prefix}-exclamation-circle:before { content: @fa-var-exclamation-circle; } -.@{fa-css-prefix}-gift:before { content: @fa-var-gift; } -.@{fa-css-prefix}-leaf:before { content: @fa-var-leaf; } -.@{fa-css-prefix}-fire:before { content: @fa-var-fire; } -.@{fa-css-prefix}-eye:before { content: @fa-var-eye; } -.@{fa-css-prefix}-eye-slash:before { content: @fa-var-eye-slash; } -.@{fa-css-prefix}-warning:before, -.@{fa-css-prefix}-exclamation-triangle:before { content: @fa-var-exclamation-triangle; } -.@{fa-css-prefix}-plane:before { content: @fa-var-plane; } -.@{fa-css-prefix}-calendar:before { content: @fa-var-calendar; } -.@{fa-css-prefix}-random:before { content: @fa-var-random; } -.@{fa-css-prefix}-comment:before { content: @fa-var-comment; } -.@{fa-css-prefix}-magnet:before { content: @fa-var-magnet; } -.@{fa-css-prefix}-chevron-up:before { content: @fa-var-chevron-up; } -.@{fa-css-prefix}-chevron-down:before { content: @fa-var-chevron-down; } -.@{fa-css-prefix}-retweet:before { content: @fa-var-retweet; } -.@{fa-css-prefix}-shopping-cart:before { content: @fa-var-shopping-cart; } -.@{fa-css-prefix}-folder:before { content: @fa-var-folder; } -.@{fa-css-prefix}-folder-open:before { content: @fa-var-folder-open; } -.@{fa-css-prefix}-arrows-v:before { content: @fa-var-arrows-v; } -.@{fa-css-prefix}-arrows-h:before { content: @fa-var-arrows-h; } -.@{fa-css-prefix}-bar-chart-o:before, -.@{fa-css-prefix}-bar-chart:before { content: @fa-var-bar-chart; } -.@{fa-css-prefix}-twitter-square:before { content: @fa-var-twitter-square; } -.@{fa-css-prefix}-facebook-square:before { content: @fa-var-facebook-square; } -.@{fa-css-prefix}-camera-retro:before { content: @fa-var-camera-retro; } -.@{fa-css-prefix}-key:before { content: @fa-var-key; } -.@{fa-css-prefix}-gears:before, -.@{fa-css-prefix}-cogs:before { content: @fa-var-cogs; } -.@{fa-css-prefix}-comments:before { content: @fa-var-comments; } -.@{fa-css-prefix}-thumbs-o-up:before { content: @fa-var-thumbs-o-up; } -.@{fa-css-prefix}-thumbs-o-down:before { content: @fa-var-thumbs-o-down; } -.@{fa-css-prefix}-star-half:before { content: @fa-var-star-half; } -.@{fa-css-prefix}-heart-o:before { content: @fa-var-heart-o; } -.@{fa-css-prefix}-sign-out:before { content: @fa-var-sign-out; } -.@{fa-css-prefix}-linkedin-square:before { content: @fa-var-linkedin-square; } -.@{fa-css-prefix}-thumb-tack:before { content: @fa-var-thumb-tack; } -.@{fa-css-prefix}-external-link:before { content: @fa-var-external-link; } -.@{fa-css-prefix}-sign-in:before { content: @fa-var-sign-in; } -.@{fa-css-prefix}-trophy:before { content: @fa-var-trophy; } -.@{fa-css-prefix}-github-square:before { content: @fa-var-github-square; } -.@{fa-css-prefix}-upload:before { content: @fa-var-upload; } -.@{fa-css-prefix}-lemon-o:before { content: @fa-var-lemon-o; } -.@{fa-css-prefix}-phone:before { content: @fa-var-phone; } -.@{fa-css-prefix}-square-o:before { content: @fa-var-square-o; } -.@{fa-css-prefix}-bookmark-o:before { content: @fa-var-bookmark-o; } -.@{fa-css-prefix}-phone-square:before { content: @fa-var-phone-square; } -.@{fa-css-prefix}-twitter:before { content: @fa-var-twitter; } -.@{fa-css-prefix}-facebook-f:before, -.@{fa-css-prefix}-facebook:before { content: @fa-var-facebook; } -.@{fa-css-prefix}-github:before { content: @fa-var-github; } -.@{fa-css-prefix}-unlock:before { content: @fa-var-unlock; } -.@{fa-css-prefix}-credit-card:before { content: @fa-var-credit-card; } -.@{fa-css-prefix}-rss:before { content: @fa-var-rss; } -.@{fa-css-prefix}-hdd-o:before { content: @fa-var-hdd-o; } -.@{fa-css-prefix}-bullhorn:before { content: @fa-var-bullhorn; } -.@{fa-css-prefix}-bell:before { content: @fa-var-bell; } -.@{fa-css-prefix}-certificate:before { content: @fa-var-certificate; } -.@{fa-css-prefix}-hand-o-right:before { content: @fa-var-hand-o-right; } -.@{fa-css-prefix}-hand-o-left:before { content: @fa-var-hand-o-left; } -.@{fa-css-prefix}-hand-o-up:before { content: @fa-var-hand-o-up; } -.@{fa-css-prefix}-hand-o-down:before { content: @fa-var-hand-o-down; } -.@{fa-css-prefix}-arrow-circle-left:before { content: @fa-var-arrow-circle-left; } -.@{fa-css-prefix}-arrow-circle-right:before { content: @fa-var-arrow-circle-right; } -.@{fa-css-prefix}-arrow-circle-up:before { content: @fa-var-arrow-circle-up; } -.@{fa-css-prefix}-arrow-circle-down:before { content: @fa-var-arrow-circle-down; } -.@{fa-css-prefix}-globe:before { content: @fa-var-globe; } -.@{fa-css-prefix}-wrench:before { content: @fa-var-wrench; } -.@{fa-css-prefix}-tasks:before { content: @fa-var-tasks; } -.@{fa-css-prefix}-filter:before { content: @fa-var-filter; } -.@{fa-css-prefix}-briefcase:before { content: @fa-var-briefcase; } -.@{fa-css-prefix}-arrows-alt:before { content: @fa-var-arrows-alt; } -.@{fa-css-prefix}-group:before, -.@{fa-css-prefix}-users:before { content: @fa-var-users; } -.@{fa-css-prefix}-chain:before, -.@{fa-css-prefix}-link:before { content: @fa-var-link; } -.@{fa-css-prefix}-cloud:before { content: @fa-var-cloud; } -.@{fa-css-prefix}-flask:before { content: @fa-var-flask; } -.@{fa-css-prefix}-cut:before, -.@{fa-css-prefix}-scissors:before { content: @fa-var-scissors; } -.@{fa-css-prefix}-copy:before, -.@{fa-css-prefix}-files-o:before { content: @fa-var-files-o; } -.@{fa-css-prefix}-paperclip:before { content: @fa-var-paperclip; } -.@{fa-css-prefix}-save:before, -.@{fa-css-prefix}-floppy-o:before { content: @fa-var-floppy-o; } -.@{fa-css-prefix}-square:before { content: @fa-var-square; } -.@{fa-css-prefix}-navicon:before, -.@{fa-css-prefix}-reorder:before, -.@{fa-css-prefix}-bars:before { content: @fa-var-bars; } -.@{fa-css-prefix}-list-ul:before { content: @fa-var-list-ul; } -.@{fa-css-prefix}-list-ol:before { content: @fa-var-list-ol; } -.@{fa-css-prefix}-strikethrough:before { content: @fa-var-strikethrough; } -.@{fa-css-prefix}-underline:before { content: @fa-var-underline; } -.@{fa-css-prefix}-table:before { content: @fa-var-table; } -.@{fa-css-prefix}-magic:before { content: @fa-var-magic; } -.@{fa-css-prefix}-truck:before { content: @fa-var-truck; } -.@{fa-css-prefix}-pinterest:before { content: @fa-var-pinterest; } -.@{fa-css-prefix}-pinterest-square:before { content: @fa-var-pinterest-square; } -.@{fa-css-prefix}-google-plus-square:before { content: @fa-var-google-plus-square; } -.@{fa-css-prefix}-google-plus:before { content: @fa-var-google-plus; } -.@{fa-css-prefix}-money:before { content: @fa-var-money; } -.@{fa-css-prefix}-caret-down:before { content: @fa-var-caret-down; } -.@{fa-css-prefix}-caret-up:before { content: @fa-var-caret-up; } -.@{fa-css-prefix}-caret-left:before { content: @fa-var-caret-left; } -.@{fa-css-prefix}-caret-right:before { content: @fa-var-caret-right; } -.@{fa-css-prefix}-columns:before { content: @fa-var-columns; } -.@{fa-css-prefix}-unsorted:before, -.@{fa-css-prefix}-sort:before { content: @fa-var-sort; } -.@{fa-css-prefix}-sort-down:before, -.@{fa-css-prefix}-sort-desc:before { content: @fa-var-sort-desc; } -.@{fa-css-prefix}-sort-up:before, -.@{fa-css-prefix}-sort-asc:before { content: @fa-var-sort-asc; } -.@{fa-css-prefix}-envelope:before { content: @fa-var-envelope; } -.@{fa-css-prefix}-linkedin:before { content: @fa-var-linkedin; } -.@{fa-css-prefix}-rotate-left:before, -.@{fa-css-prefix}-undo:before { content: @fa-var-undo; } -.@{fa-css-prefix}-legal:before, -.@{fa-css-prefix}-gavel:before { content: @fa-var-gavel; } -.@{fa-css-prefix}-dashboard:before, -.@{fa-css-prefix}-tachometer:before { content: @fa-var-tachometer; } -.@{fa-css-prefix}-comment-o:before { content: @fa-var-comment-o; } -.@{fa-css-prefix}-comments-o:before { content: @fa-var-comments-o; } -.@{fa-css-prefix}-flash:before, -.@{fa-css-prefix}-bolt:before { content: @fa-var-bolt; } -.@{fa-css-prefix}-sitemap:before { content: @fa-var-sitemap; } -.@{fa-css-prefix}-umbrella:before { content: @fa-var-umbrella; } -.@{fa-css-prefix}-paste:before, -.@{fa-css-prefix}-clipboard:before { content: @fa-var-clipboard; } -.@{fa-css-prefix}-lightbulb-o:before { content: @fa-var-lightbulb-o; } -.@{fa-css-prefix}-exchange:before { content: @fa-var-exchange; } -.@{fa-css-prefix}-cloud-download:before { content: @fa-var-cloud-download; } -.@{fa-css-prefix}-cloud-upload:before { content: @fa-var-cloud-upload; } -.@{fa-css-prefix}-user-md:before { content: @fa-var-user-md; } -.@{fa-css-prefix}-stethoscope:before { content: @fa-var-stethoscope; } -.@{fa-css-prefix}-suitcase:before { content: @fa-var-suitcase; } -.@{fa-css-prefix}-bell-o:before { content: @fa-var-bell-o; } -.@{fa-css-prefix}-coffee:before { content: @fa-var-coffee; } -.@{fa-css-prefix}-cutlery:before { content: @fa-var-cutlery; } -.@{fa-css-prefix}-file-text-o:before { content: @fa-var-file-text-o; } -.@{fa-css-prefix}-building-o:before { content: @fa-var-building-o; } -.@{fa-css-prefix}-hospital-o:before { content: @fa-var-hospital-o; } -.@{fa-css-prefix}-ambulance:before { content: @fa-var-ambulance; } -.@{fa-css-prefix}-medkit:before { content: @fa-var-medkit; } -.@{fa-css-prefix}-fighter-jet:before { content: @fa-var-fighter-jet; } -.@{fa-css-prefix}-beer:before { content: @fa-var-beer; } -.@{fa-css-prefix}-h-square:before { content: @fa-var-h-square; } -.@{fa-css-prefix}-plus-square:before { content: @fa-var-plus-square; } -.@{fa-css-prefix}-angle-double-left:before { content: @fa-var-angle-double-left; } -.@{fa-css-prefix}-angle-double-right:before { content: @fa-var-angle-double-right; } -.@{fa-css-prefix}-angle-double-up:before { content: @fa-var-angle-double-up; } -.@{fa-css-prefix}-angle-double-down:before { content: @fa-var-angle-double-down; } -.@{fa-css-prefix}-angle-left:before { content: @fa-var-angle-left; } -.@{fa-css-prefix}-angle-right:before { content: @fa-var-angle-right; } -.@{fa-css-prefix}-angle-up:before { content: @fa-var-angle-up; } -.@{fa-css-prefix}-angle-down:before { content: @fa-var-angle-down; } -.@{fa-css-prefix}-desktop:before { content: @fa-var-desktop; } -.@{fa-css-prefix}-laptop:before { content: @fa-var-laptop; } -.@{fa-css-prefix}-tablet:before { content: @fa-var-tablet; } -.@{fa-css-prefix}-mobile-phone:before, -.@{fa-css-prefix}-mobile:before { content: @fa-var-mobile; } -.@{fa-css-prefix}-circle-o:before { content: @fa-var-circle-o; } -.@{fa-css-prefix}-quote-left:before { content: @fa-var-quote-left; } -.@{fa-css-prefix}-quote-right:before { content: @fa-var-quote-right; } -.@{fa-css-prefix}-spinner:before { content: @fa-var-spinner; } -.@{fa-css-prefix}-circle:before { content: @fa-var-circle; } -.@{fa-css-prefix}-mail-reply:before, -.@{fa-css-prefix}-reply:before { content: @fa-var-reply; } -.@{fa-css-prefix}-github-alt:before { content: @fa-var-github-alt; } -.@{fa-css-prefix}-folder-o:before { content: @fa-var-folder-o; } -.@{fa-css-prefix}-folder-open-o:before { content: @fa-var-folder-open-o; } -.@{fa-css-prefix}-smile-o:before { content: @fa-var-smile-o; } -.@{fa-css-prefix}-frown-o:before { content: @fa-var-frown-o; } -.@{fa-css-prefix}-meh-o:before { content: @fa-var-meh-o; } -.@{fa-css-prefix}-gamepad:before { content: @fa-var-gamepad; } -.@{fa-css-prefix}-keyboard-o:before { content: @fa-var-keyboard-o; } -.@{fa-css-prefix}-flag-o:before { content: @fa-var-flag-o; } -.@{fa-css-prefix}-flag-checkered:before { content: @fa-var-flag-checkered; } -.@{fa-css-prefix}-terminal:before { content: @fa-var-terminal; } -.@{fa-css-prefix}-code:before { content: @fa-var-code; } -.@{fa-css-prefix}-mail-reply-all:before, -.@{fa-css-prefix}-reply-all:before { content: @fa-var-reply-all; } -.@{fa-css-prefix}-star-half-empty:before, -.@{fa-css-prefix}-star-half-full:before, -.@{fa-css-prefix}-star-half-o:before { content: @fa-var-star-half-o; } -.@{fa-css-prefix}-location-arrow:before { content: @fa-var-location-arrow; } -.@{fa-css-prefix}-crop:before { content: @fa-var-crop; } -.@{fa-css-prefix}-code-fork:before { content: @fa-var-code-fork; } -.@{fa-css-prefix}-unlink:before, -.@{fa-css-prefix}-chain-broken:before { content: @fa-var-chain-broken; } -.@{fa-css-prefix}-question:before { content: @fa-var-question; } -.@{fa-css-prefix}-info:before { content: @fa-var-info; } -.@{fa-css-prefix}-exclamation:before { content: @fa-var-exclamation; } -.@{fa-css-prefix}-superscript:before { content: @fa-var-superscript; } -.@{fa-css-prefix}-subscript:before { content: @fa-var-subscript; } -.@{fa-css-prefix}-eraser:before { content: @fa-var-eraser; } -.@{fa-css-prefix}-puzzle-piece:before { content: @fa-var-puzzle-piece; } -.@{fa-css-prefix}-microphone:before { content: @fa-var-microphone; } -.@{fa-css-prefix}-microphone-slash:before { content: @fa-var-microphone-slash; } -.@{fa-css-prefix}-shield:before { content: @fa-var-shield; } -.@{fa-css-prefix}-calendar-o:before { content: @fa-var-calendar-o; } -.@{fa-css-prefix}-fire-extinguisher:before { content: @fa-var-fire-extinguisher; } -.@{fa-css-prefix}-rocket:before { content: @fa-var-rocket; } -.@{fa-css-prefix}-maxcdn:before { content: @fa-var-maxcdn; } -.@{fa-css-prefix}-chevron-circle-left:before { content: @fa-var-chevron-circle-left; } -.@{fa-css-prefix}-chevron-circle-right:before { content: @fa-var-chevron-circle-right; } -.@{fa-css-prefix}-chevron-circle-up:before { content: @fa-var-chevron-circle-up; } -.@{fa-css-prefix}-chevron-circle-down:before { content: @fa-var-chevron-circle-down; } -.@{fa-css-prefix}-html5:before { content: @fa-var-html5; } -.@{fa-css-prefix}-css3:before { content: @fa-var-css3; } -.@{fa-css-prefix}-anchor:before { content: @fa-var-anchor; } -.@{fa-css-prefix}-unlock-alt:before { content: @fa-var-unlock-alt; } -.@{fa-css-prefix}-bullseye:before { content: @fa-var-bullseye; } -.@{fa-css-prefix}-ellipsis-h:before { content: @fa-var-ellipsis-h; } -.@{fa-css-prefix}-ellipsis-v:before { content: @fa-var-ellipsis-v; } -.@{fa-css-prefix}-rss-square:before { content: @fa-var-rss-square; } -.@{fa-css-prefix}-play-circle:before { content: @fa-var-play-circle; } -.@{fa-css-prefix}-ticket:before { content: @fa-var-ticket; } -.@{fa-css-prefix}-minus-square:before { content: @fa-var-minus-square; } -.@{fa-css-prefix}-minus-square-o:before { content: @fa-var-minus-square-o; } -.@{fa-css-prefix}-level-up:before { content: @fa-var-level-up; } -.@{fa-css-prefix}-level-down:before { content: @fa-var-level-down; } -.@{fa-css-prefix}-check-square:before { content: @fa-var-check-square; } -.@{fa-css-prefix}-pencil-square:before { content: @fa-var-pencil-square; } -.@{fa-css-prefix}-external-link-square:before { content: @fa-var-external-link-square; } -.@{fa-css-prefix}-share-square:before { content: @fa-var-share-square; } -.@{fa-css-prefix}-compass:before { content: @fa-var-compass; } -.@{fa-css-prefix}-toggle-down:before, -.@{fa-css-prefix}-caret-square-o-down:before { content: @fa-var-caret-square-o-down; } -.@{fa-css-prefix}-toggle-up:before, -.@{fa-css-prefix}-caret-square-o-up:before { content: @fa-var-caret-square-o-up; } -.@{fa-css-prefix}-toggle-right:before, -.@{fa-css-prefix}-caret-square-o-right:before { content: @fa-var-caret-square-o-right; } -.@{fa-css-prefix}-euro:before, -.@{fa-css-prefix}-eur:before { content: @fa-var-eur; } -.@{fa-css-prefix}-gbp:before { content: @fa-var-gbp; } -.@{fa-css-prefix}-dollar:before, -.@{fa-css-prefix}-usd:before { content: @fa-var-usd; } -.@{fa-css-prefix}-rupee:before, -.@{fa-css-prefix}-inr:before { content: @fa-var-inr; } -.@{fa-css-prefix}-cny:before, -.@{fa-css-prefix}-rmb:before, -.@{fa-css-prefix}-yen:before, -.@{fa-css-prefix}-jpy:before { content: @fa-var-jpy; } -.@{fa-css-prefix}-ruble:before, -.@{fa-css-prefix}-rouble:before, -.@{fa-css-prefix}-rub:before { content: @fa-var-rub; } -.@{fa-css-prefix}-won:before, -.@{fa-css-prefix}-krw:before { content: @fa-var-krw; } -.@{fa-css-prefix}-bitcoin:before, -.@{fa-css-prefix}-btc:before { content: @fa-var-btc; } -.@{fa-css-prefix}-file:before { content: @fa-var-file; } -.@{fa-css-prefix}-file-text:before { content: @fa-var-file-text; } -.@{fa-css-prefix}-sort-alpha-asc:before { content: @fa-var-sort-alpha-asc; } -.@{fa-css-prefix}-sort-alpha-desc:before { content: @fa-var-sort-alpha-desc; } -.@{fa-css-prefix}-sort-amount-asc:before { content: @fa-var-sort-amount-asc; } -.@{fa-css-prefix}-sort-amount-desc:before { content: @fa-var-sort-amount-desc; } -.@{fa-css-prefix}-sort-numeric-asc:before { content: @fa-var-sort-numeric-asc; } -.@{fa-css-prefix}-sort-numeric-desc:before { content: @fa-var-sort-numeric-desc; } -.@{fa-css-prefix}-thumbs-up:before { content: @fa-var-thumbs-up; } -.@{fa-css-prefix}-thumbs-down:before { content: @fa-var-thumbs-down; } -.@{fa-css-prefix}-youtube-square:before { content: @fa-var-youtube-square; } -.@{fa-css-prefix}-youtube:before { content: @fa-var-youtube; } -.@{fa-css-prefix}-xing:before { content: @fa-var-xing; } -.@{fa-css-prefix}-xing-square:before { content: @fa-var-xing-square; } -.@{fa-css-prefix}-youtube-play:before { content: @fa-var-youtube-play; } -.@{fa-css-prefix}-dropbox:before { content: @fa-var-dropbox; } -.@{fa-css-prefix}-stack-overflow:before { content: @fa-var-stack-overflow; } -.@{fa-css-prefix}-instagram:before { content: @fa-var-instagram; } -.@{fa-css-prefix}-flickr:before { content: @fa-var-flickr; } -.@{fa-css-prefix}-adn:before { content: @fa-var-adn; } -.@{fa-css-prefix}-bitbucket:before { content: @fa-var-bitbucket; } -.@{fa-css-prefix}-bitbucket-square:before { content: @fa-var-bitbucket-square; } -.@{fa-css-prefix}-tumblr:before { content: @fa-var-tumblr; } -.@{fa-css-prefix}-tumblr-square:before { content: @fa-var-tumblr-square; } -.@{fa-css-prefix}-long-arrow-down:before { content: @fa-var-long-arrow-down; } -.@{fa-css-prefix}-long-arrow-up:before { content: @fa-var-long-arrow-up; } -.@{fa-css-prefix}-long-arrow-left:before { content: @fa-var-long-arrow-left; } -.@{fa-css-prefix}-long-arrow-right:before { content: @fa-var-long-arrow-right; } -.@{fa-css-prefix}-apple:before { content: @fa-var-apple; } -.@{fa-css-prefix}-windows:before { content: @fa-var-windows; } -.@{fa-css-prefix}-android:before { content: @fa-var-android; } -.@{fa-css-prefix}-linux:before { content: @fa-var-linux; } -.@{fa-css-prefix}-dribbble:before { content: @fa-var-dribbble; } -.@{fa-css-prefix}-skype:before { content: @fa-var-skype; } -.@{fa-css-prefix}-foursquare:before { content: @fa-var-foursquare; } -.@{fa-css-prefix}-trello:before { content: @fa-var-trello; } -.@{fa-css-prefix}-female:before { content: @fa-var-female; } -.@{fa-css-prefix}-male:before { content: @fa-var-male; } -.@{fa-css-prefix}-gittip:before, -.@{fa-css-prefix}-gratipay:before { content: @fa-var-gratipay; } -.@{fa-css-prefix}-sun-o:before { content: @fa-var-sun-o; } -.@{fa-css-prefix}-moon-o:before { content: @fa-var-moon-o; } -.@{fa-css-prefix}-archive:before { content: @fa-var-archive; } -.@{fa-css-prefix}-bug:before { content: @fa-var-bug; } -.@{fa-css-prefix}-vk:before { content: @fa-var-vk; } -.@{fa-css-prefix}-weibo:before { content: @fa-var-weibo; } -.@{fa-css-prefix}-renren:before { content: @fa-var-renren; } -.@{fa-css-prefix}-pagelines:before { content: @fa-var-pagelines; } -.@{fa-css-prefix}-stack-exchange:before { content: @fa-var-stack-exchange; } -.@{fa-css-prefix}-arrow-circle-o-right:before { content: @fa-var-arrow-circle-o-right; } -.@{fa-css-prefix}-arrow-circle-o-left:before { content: @fa-var-arrow-circle-o-left; } -.@{fa-css-prefix}-toggle-left:before, -.@{fa-css-prefix}-caret-square-o-left:before { content: @fa-var-caret-square-o-left; } -.@{fa-css-prefix}-dot-circle-o:before { content: @fa-var-dot-circle-o; } -.@{fa-css-prefix}-wheelchair:before { content: @fa-var-wheelchair; } -.@{fa-css-prefix}-vimeo-square:before { content: @fa-var-vimeo-square; } -.@{fa-css-prefix}-turkish-lira:before, -.@{fa-css-prefix}-try:before { content: @fa-var-try; } -.@{fa-css-prefix}-plus-square-o:before { content: @fa-var-plus-square-o; } -.@{fa-css-prefix}-space-shuttle:before { content: @fa-var-space-shuttle; } -.@{fa-css-prefix}-slack:before { content: @fa-var-slack; } -.@{fa-css-prefix}-envelope-square:before { content: @fa-var-envelope-square; } -.@{fa-css-prefix}-wordpress:before { content: @fa-var-wordpress; } -.@{fa-css-prefix}-openid:before { content: @fa-var-openid; } -.@{fa-css-prefix}-institution:before, -.@{fa-css-prefix}-bank:before, -.@{fa-css-prefix}-university:before { content: @fa-var-university; } -.@{fa-css-prefix}-mortar-board:before, -.@{fa-css-prefix}-graduation-cap:before { content: @fa-var-graduation-cap; } -.@{fa-css-prefix}-yahoo:before { content: @fa-var-yahoo; } -.@{fa-css-prefix}-google:before { content: @fa-var-google; } -.@{fa-css-prefix}-reddit:before { content: @fa-var-reddit; } -.@{fa-css-prefix}-reddit-square:before { content: @fa-var-reddit-square; } -.@{fa-css-prefix}-stumbleupon-circle:before { content: @fa-var-stumbleupon-circle; } -.@{fa-css-prefix}-stumbleupon:before { content: @fa-var-stumbleupon; } -.@{fa-css-prefix}-delicious:before { content: @fa-var-delicious; } -.@{fa-css-prefix}-digg:before { content: @fa-var-digg; } -.@{fa-css-prefix}-pied-piper:before { content: @fa-var-pied-piper; } -.@{fa-css-prefix}-pied-piper-alt:before { content: @fa-var-pied-piper-alt; } -.@{fa-css-prefix}-drupal:before { content: @fa-var-drupal; } -.@{fa-css-prefix}-joomla:before { content: @fa-var-joomla; } -.@{fa-css-prefix}-language:before { content: @fa-var-language; } -.@{fa-css-prefix}-fax:before { content: @fa-var-fax; } -.@{fa-css-prefix}-building:before { content: @fa-var-building; } -.@{fa-css-prefix}-child:before { content: @fa-var-child; } -.@{fa-css-prefix}-paw:before { content: @fa-var-paw; } -.@{fa-css-prefix}-spoon:before { content: @fa-var-spoon; } -.@{fa-css-prefix}-cube:before { content: @fa-var-cube; } -.@{fa-css-prefix}-cubes:before { content: @fa-var-cubes; } -.@{fa-css-prefix}-behance:before { content: @fa-var-behance; } -.@{fa-css-prefix}-behance-square:before { content: @fa-var-behance-square; } -.@{fa-css-prefix}-steam:before { content: @fa-var-steam; } -.@{fa-css-prefix}-steam-square:before { content: @fa-var-steam-square; } -.@{fa-css-prefix}-recycle:before { content: @fa-var-recycle; } -.@{fa-css-prefix}-automobile:before, -.@{fa-css-prefix}-car:before { content: @fa-var-car; } -.@{fa-css-prefix}-cab:before, -.@{fa-css-prefix}-taxi:before { content: @fa-var-taxi; } -.@{fa-css-prefix}-tree:before { content: @fa-var-tree; } -.@{fa-css-prefix}-spotify:before { content: @fa-var-spotify; } -.@{fa-css-prefix}-deviantart:before { content: @fa-var-deviantart; } -.@{fa-css-prefix}-soundcloud:before { content: @fa-var-soundcloud; } -.@{fa-css-prefix}-database:before { content: @fa-var-database; } -.@{fa-css-prefix}-file-pdf-o:before { content: @fa-var-file-pdf-o; } -.@{fa-css-prefix}-file-word-o:before { content: @fa-var-file-word-o; } -.@{fa-css-prefix}-file-excel-o:before { content: @fa-var-file-excel-o; } -.@{fa-css-prefix}-file-powerpoint-o:before { content: @fa-var-file-powerpoint-o; } -.@{fa-css-prefix}-file-photo-o:before, -.@{fa-css-prefix}-file-picture-o:before, -.@{fa-css-prefix}-file-image-o:before { content: @fa-var-file-image-o; } -.@{fa-css-prefix}-file-zip-o:before, -.@{fa-css-prefix}-file-archive-o:before { content: @fa-var-file-archive-o; } -.@{fa-css-prefix}-file-sound-o:before, -.@{fa-css-prefix}-file-audio-o:before { content: @fa-var-file-audio-o; } -.@{fa-css-prefix}-file-movie-o:before, -.@{fa-css-prefix}-file-video-o:before { content: @fa-var-file-video-o; } -.@{fa-css-prefix}-file-code-o:before { content: @fa-var-file-code-o; } -.@{fa-css-prefix}-vine:before { content: @fa-var-vine; } -.@{fa-css-prefix}-codepen:before { content: @fa-var-codepen; } -.@{fa-css-prefix}-jsfiddle:before { content: @fa-var-jsfiddle; } -.@{fa-css-prefix}-life-bouy:before, -.@{fa-css-prefix}-life-buoy:before, -.@{fa-css-prefix}-life-saver:before, -.@{fa-css-prefix}-support:before, -.@{fa-css-prefix}-life-ring:before { content: @fa-var-life-ring; } -.@{fa-css-prefix}-circle-o-notch:before { content: @fa-var-circle-o-notch; } -.@{fa-css-prefix}-ra:before, -.@{fa-css-prefix}-rebel:before { content: @fa-var-rebel; } -.@{fa-css-prefix}-ge:before, -.@{fa-css-prefix}-empire:before { content: @fa-var-empire; } -.@{fa-css-prefix}-git-square:before { content: @fa-var-git-square; } -.@{fa-css-prefix}-git:before { content: @fa-var-git; } -.@{fa-css-prefix}-hacker-news:before { content: @fa-var-hacker-news; } -.@{fa-css-prefix}-tencent-weibo:before { content: @fa-var-tencent-weibo; } -.@{fa-css-prefix}-qq:before { content: @fa-var-qq; } -.@{fa-css-prefix}-wechat:before, -.@{fa-css-prefix}-weixin:before { content: @fa-var-weixin; } -.@{fa-css-prefix}-send:before, -.@{fa-css-prefix}-paper-plane:before { content: @fa-var-paper-plane; } -.@{fa-css-prefix}-send-o:before, -.@{fa-css-prefix}-paper-plane-o:before { content: @fa-var-paper-plane-o; } -.@{fa-css-prefix}-history:before { content: @fa-var-history; } -.@{fa-css-prefix}-genderless:before, -.@{fa-css-prefix}-circle-thin:before { content: @fa-var-circle-thin; } -.@{fa-css-prefix}-header:before { content: @fa-var-header; } -.@{fa-css-prefix}-paragraph:before { content: @fa-var-paragraph; } -.@{fa-css-prefix}-sliders:before { content: @fa-var-sliders; } -.@{fa-css-prefix}-share-alt:before { content: @fa-var-share-alt; } -.@{fa-css-prefix}-share-alt-square:before { content: @fa-var-share-alt-square; } -.@{fa-css-prefix}-bomb:before { content: @fa-var-bomb; } -.@{fa-css-prefix}-soccer-ball-o:before, -.@{fa-css-prefix}-futbol-o:before { content: @fa-var-futbol-o; } -.@{fa-css-prefix}-tty:before { content: @fa-var-tty; } -.@{fa-css-prefix}-binoculars:before { content: @fa-var-binoculars; } -.@{fa-css-prefix}-plug:before { content: @fa-var-plug; } -.@{fa-css-prefix}-slideshare:before { content: @fa-var-slideshare; } -.@{fa-css-prefix}-twitch:before { content: @fa-var-twitch; } -.@{fa-css-prefix}-yelp:before { content: @fa-var-yelp; } -.@{fa-css-prefix}-newspaper-o:before { content: @fa-var-newspaper-o; } -.@{fa-css-prefix}-wifi:before { content: @fa-var-wifi; } -.@{fa-css-prefix}-calculator:before { content: @fa-var-calculator; } -.@{fa-css-prefix}-paypal:before { content: @fa-var-paypal; } -.@{fa-css-prefix}-google-wallet:before { content: @fa-var-google-wallet; } -.@{fa-css-prefix}-cc-visa:before { content: @fa-var-cc-visa; } -.@{fa-css-prefix}-cc-mastercard:before { content: @fa-var-cc-mastercard; } -.@{fa-css-prefix}-cc-discover:before { content: @fa-var-cc-discover; } -.@{fa-css-prefix}-cc-amex:before { content: @fa-var-cc-amex; } -.@{fa-css-prefix}-cc-paypal:before { content: @fa-var-cc-paypal; } -.@{fa-css-prefix}-cc-stripe:before { content: @fa-var-cc-stripe; } -.@{fa-css-prefix}-bell-slash:before { content: @fa-var-bell-slash; } -.@{fa-css-prefix}-bell-slash-o:before { content: @fa-var-bell-slash-o; } -.@{fa-css-prefix}-trash:before { content: @fa-var-trash; } -.@{fa-css-prefix}-copyright:before { content: @fa-var-copyright; } -.@{fa-css-prefix}-at:before { content: @fa-var-at; } -.@{fa-css-prefix}-eyedropper:before { content: @fa-var-eyedropper; } -.@{fa-css-prefix}-paint-brush:before { content: @fa-var-paint-brush; } -.@{fa-css-prefix}-birthday-cake:before { content: @fa-var-birthday-cake; } -.@{fa-css-prefix}-area-chart:before { content: @fa-var-area-chart; } -.@{fa-css-prefix}-pie-chart:before { content: @fa-var-pie-chart; } -.@{fa-css-prefix}-line-chart:before { content: @fa-var-line-chart; } -.@{fa-css-prefix}-lastfm:before { content: @fa-var-lastfm; } -.@{fa-css-prefix}-lastfm-square:before { content: @fa-var-lastfm-square; } -.@{fa-css-prefix}-toggle-off:before { content: @fa-var-toggle-off; } -.@{fa-css-prefix}-toggle-on:before { content: @fa-var-toggle-on; } -.@{fa-css-prefix}-bicycle:before { content: @fa-var-bicycle; } -.@{fa-css-prefix}-bus:before { content: @fa-var-bus; } -.@{fa-css-prefix}-ioxhost:before { content: @fa-var-ioxhost; } -.@{fa-css-prefix}-angellist:before { content: @fa-var-angellist; } -.@{fa-css-prefix}-cc:before { content: @fa-var-cc; } -.@{fa-css-prefix}-shekel:before, -.@{fa-css-prefix}-sheqel:before, -.@{fa-css-prefix}-ils:before { content: @fa-var-ils; } -.@{fa-css-prefix}-meanpath:before { content: @fa-var-meanpath; } -.@{fa-css-prefix}-buysellads:before { content: @fa-var-buysellads; } -.@{fa-css-prefix}-connectdevelop:before { content: @fa-var-connectdevelop; } -.@{fa-css-prefix}-dashcube:before { content: @fa-var-dashcube; } -.@{fa-css-prefix}-forumbee:before { content: @fa-var-forumbee; } -.@{fa-css-prefix}-leanpub:before { content: @fa-var-leanpub; } -.@{fa-css-prefix}-sellsy:before { content: @fa-var-sellsy; } -.@{fa-css-prefix}-shirtsinbulk:before { content: @fa-var-shirtsinbulk; } -.@{fa-css-prefix}-simplybuilt:before { content: @fa-var-simplybuilt; } -.@{fa-css-prefix}-skyatlas:before { content: @fa-var-skyatlas; } -.@{fa-css-prefix}-cart-plus:before { content: @fa-var-cart-plus; } -.@{fa-css-prefix}-cart-arrow-down:before { content: @fa-var-cart-arrow-down; } -.@{fa-css-prefix}-diamond:before { content: @fa-var-diamond; } -.@{fa-css-prefix}-ship:before { content: @fa-var-ship; } -.@{fa-css-prefix}-user-secret:before { content: @fa-var-user-secret; } -.@{fa-css-prefix}-motorcycle:before { content: @fa-var-motorcycle; } -.@{fa-css-prefix}-street-view:before { content: @fa-var-street-view; } -.@{fa-css-prefix}-heartbeat:before { content: @fa-var-heartbeat; } -.@{fa-css-prefix}-venus:before { content: @fa-var-venus; } -.@{fa-css-prefix}-mars:before { content: @fa-var-mars; } -.@{fa-css-prefix}-mercury:before { content: @fa-var-mercury; } -.@{fa-css-prefix}-transgender:before { content: @fa-var-transgender; } -.@{fa-css-prefix}-transgender-alt:before { content: @fa-var-transgender-alt; } -.@{fa-css-prefix}-venus-double:before { content: @fa-var-venus-double; } -.@{fa-css-prefix}-mars-double:before { content: @fa-var-mars-double; } -.@{fa-css-prefix}-venus-mars:before { content: @fa-var-venus-mars; } -.@{fa-css-prefix}-mars-stroke:before { content: @fa-var-mars-stroke; } -.@{fa-css-prefix}-mars-stroke-v:before { content: @fa-var-mars-stroke-v; } -.@{fa-css-prefix}-mars-stroke-h:before { content: @fa-var-mars-stroke-h; } -.@{fa-css-prefix}-neuter:before { content: @fa-var-neuter; } -.@{fa-css-prefix}-facebook-official:before { content: @fa-var-facebook-official; } -.@{fa-css-prefix}-pinterest-p:before { content: @fa-var-pinterest-p; } -.@{fa-css-prefix}-whatsapp:before { content: @fa-var-whatsapp; } -.@{fa-css-prefix}-server:before { content: @fa-var-server; } -.@{fa-css-prefix}-user-plus:before { content: @fa-var-user-plus; } -.@{fa-css-prefix}-user-times:before { content: @fa-var-user-times; } -.@{fa-css-prefix}-hotel:before, -.@{fa-css-prefix}-bed:before { content: @fa-var-bed; } -.@{fa-css-prefix}-viacoin:before { content: @fa-var-viacoin; } -.@{fa-css-prefix}-train:before { content: @fa-var-train; } -.@{fa-css-prefix}-subway:before { content: @fa-var-subway; } -.@{fa-css-prefix}-medium:before { content: @fa-var-medium; } diff --git a/assets/font-awesome/less/larger.less b/assets/font-awesome/less/larger.less deleted file mode 100644 index c9d64677..00000000 --- a/assets/font-awesome/less/larger.less +++ /dev/null @@ -1,13 +0,0 @@ -// Icon Sizes -// ------------------------- - -/* makes the font 33% larger relative to the icon container */ -.@{fa-css-prefix}-lg { - font-size: (4em / 3); - line-height: (3em / 4); - vertical-align: -15%; -} -.@{fa-css-prefix}-2x { font-size: 2em; } -.@{fa-css-prefix}-3x { font-size: 3em; } -.@{fa-css-prefix}-4x { font-size: 4em; } -.@{fa-css-prefix}-5x { font-size: 5em; } diff --git a/assets/font-awesome/less/list.less b/assets/font-awesome/less/list.less deleted file mode 100644 index 0b440382..00000000 --- a/assets/font-awesome/less/list.less +++ /dev/null @@ -1,19 +0,0 @@ -// List Icons -// ------------------------- - -.@{fa-css-prefix}-ul { - padding-left: 0; - margin-left: @fa-li-width; - list-style-type: none; - > li { position: relative; } -} -.@{fa-css-prefix}-li { - position: absolute; - left: -@fa-li-width; - width: @fa-li-width; - top: (2em / 14); - text-align: center; - &.@{fa-css-prefix}-lg { - left: (-@fa-li-width + (4em / 14)); - } -} diff --git a/assets/font-awesome/less/mixins.less b/assets/font-awesome/less/mixins.less deleted file mode 100644 index c97f4604..00000000 --- a/assets/font-awesome/less/mixins.less +++ /dev/null @@ -1,27 +0,0 @@ -// Mixins -// -------------------------- - -.fa-icon() { - display: inline-block; - font: normal normal normal @fa-font-size-base/1 FontAwesome; // shortening font declaration - font-size: inherit; // can't have font-size inherit on line above, so need to override - text-rendering: auto; // optimizelegibility throws things off #1094 - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - transform: translate(0, 0); // ensures no half-pixel rendering in firefox - -} - -.fa-icon-rotate(@degrees, @rotation) { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation); - -webkit-transform: rotate(@degrees); - -ms-transform: rotate(@degrees); - transform: rotate(@degrees); -} - -.fa-icon-flip(@horiz, @vert, @rotation) { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation, mirror=1); - -webkit-transform: scale(@horiz, @vert); - -ms-transform: scale(@horiz, @vert); - transform: scale(@horiz, @vert); -} diff --git a/assets/font-awesome/less/path.less b/assets/font-awesome/less/path.less deleted file mode 100644 index 9211e665..00000000 --- a/assets/font-awesome/less/path.less +++ /dev/null @@ -1,15 +0,0 @@ -/* FONT PATH - * -------------------------- */ - -@font-face { - font-family: 'FontAwesome'; - src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}'); - src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'), - url('@{fa-font-path}/fontawesome-webfont.woff2?v=@{fa-version}') format('woff2'), - url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'), - url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'), - url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg'); -// src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts - font-weight: normal; - font-style: normal; -} diff --git a/assets/font-awesome/less/rotated-flipped.less b/assets/font-awesome/less/rotated-flipped.less deleted file mode 100644 index f6ba8147..00000000 --- a/assets/font-awesome/less/rotated-flipped.less +++ /dev/null @@ -1,20 +0,0 @@ -// Rotated & Flipped Icons -// ------------------------- - -.@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); } -.@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); } -.@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); } - -.@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); } -.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); } - -// Hook for IE8-9 -// ------------------------- - -:root .@{fa-css-prefix}-rotate-90, -:root .@{fa-css-prefix}-rotate-180, -:root .@{fa-css-prefix}-rotate-270, -:root .@{fa-css-prefix}-flip-horizontal, -:root .@{fa-css-prefix}-flip-vertical { - filter: none; -} diff --git a/assets/font-awesome/less/spinning.less b/assets/font-awesome/less/spinning.less deleted file mode 100644 index 6e1564e0..00000000 --- a/assets/font-awesome/less/spinning.less +++ /dev/null @@ -1,29 +0,0 @@ -// Spinning Icons -// -------------------------- - -.@{fa-css-prefix}-spin { - -webkit-animation: fa-spin 2s infinite linear; - animation: fa-spin 2s infinite linear; -} - -@-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} - -@keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} diff --git a/assets/font-awesome/less/stacked.less b/assets/font-awesome/less/stacked.less deleted file mode 100644 index fc53fb0e..00000000 --- a/assets/font-awesome/less/stacked.less +++ /dev/null @@ -1,20 +0,0 @@ -// Stacked Icons -// ------------------------- - -.@{fa-css-prefix}-stack { - position: relative; - display: inline-block; - width: 2em; - height: 2em; - line-height: 2em; - vertical-align: middle; -} -.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x { - position: absolute; - left: 0; - width: 100%; - text-align: center; -} -.@{fa-css-prefix}-stack-1x { line-height: inherit; } -.@{fa-css-prefix}-stack-2x { font-size: 2em; } -.@{fa-css-prefix}-inverse { color: @fa-inverse; } diff --git a/assets/font-awesome/less/variables.less b/assets/font-awesome/less/variables.less deleted file mode 100644 index d526064c..00000000 --- a/assets/font-awesome/less/variables.less +++ /dev/null @@ -1,606 +0,0 @@ -// Variables -// -------------------------- - -@fa-font-path: "../fonts"; -@fa-font-size-base: 14px; -//@fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.3.0/fonts"; // for referencing Bootstrap CDN font files directly -@fa-css-prefix: fa; -@fa-version: "4.3.0"; -@fa-border-color: #eee; -@fa-inverse: #fff; -@fa-li-width: (30em / 14); - -@fa-var-adjust: "\f042"; -@fa-var-adn: "\f170"; -@fa-var-align-center: "\f037"; -@fa-var-align-justify: "\f039"; -@fa-var-align-left: "\f036"; -@fa-var-align-right: "\f038"; -@fa-var-ambulance: "\f0f9"; -@fa-var-anchor: "\f13d"; -@fa-var-android: "\f17b"; -@fa-var-angellist: "\f209"; -@fa-var-angle-double-down: "\f103"; -@fa-var-angle-double-left: "\f100"; -@fa-var-angle-double-right: "\f101"; -@fa-var-angle-double-up: "\f102"; -@fa-var-angle-down: "\f107"; -@fa-var-angle-left: "\f104"; -@fa-var-angle-right: "\f105"; -@fa-var-angle-up: "\f106"; -@fa-var-apple: "\f179"; -@fa-var-archive: "\f187"; -@fa-var-area-chart: "\f1fe"; -@fa-var-arrow-circle-down: "\f0ab"; -@fa-var-arrow-circle-left: "\f0a8"; -@fa-var-arrow-circle-o-down: "\f01a"; -@fa-var-arrow-circle-o-left: "\f190"; -@fa-var-arrow-circle-o-right: "\f18e"; -@fa-var-arrow-circle-o-up: "\f01b"; -@fa-var-arrow-circle-right: "\f0a9"; -@fa-var-arrow-circle-up: "\f0aa"; -@fa-var-arrow-down: "\f063"; -@fa-var-arrow-left: "\f060"; -@fa-var-arrow-right: "\f061"; -@fa-var-arrow-up: "\f062"; -@fa-var-arrows: "\f047"; -@fa-var-arrows-alt: "\f0b2"; -@fa-var-arrows-h: "\f07e"; -@fa-var-arrows-v: "\f07d"; -@fa-var-asterisk: "\f069"; -@fa-var-at: "\f1fa"; -@fa-var-automobile: "\f1b9"; -@fa-var-backward: "\f04a"; -@fa-var-ban: "\f05e"; -@fa-var-bank: "\f19c"; -@fa-var-bar-chart: "\f080"; -@fa-var-bar-chart-o: "\f080"; -@fa-var-barcode: "\f02a"; -@fa-var-bars: "\f0c9"; -@fa-var-bed: "\f236"; -@fa-var-beer: "\f0fc"; -@fa-var-behance: "\f1b4"; -@fa-var-behance-square: "\f1b5"; -@fa-var-bell: "\f0f3"; -@fa-var-bell-o: "\f0a2"; -@fa-var-bell-slash: "\f1f6"; -@fa-var-bell-slash-o: "\f1f7"; -@fa-var-bicycle: "\f206"; -@fa-var-binoculars: "\f1e5"; -@fa-var-birthday-cake: "\f1fd"; -@fa-var-bitbucket: "\f171"; -@fa-var-bitbucket-square: "\f172"; -@fa-var-bitcoin: "\f15a"; -@fa-var-bold: "\f032"; -@fa-var-bolt: "\f0e7"; -@fa-var-bomb: "\f1e2"; -@fa-var-book: "\f02d"; -@fa-var-bookmark: "\f02e"; -@fa-var-bookmark-o: "\f097"; -@fa-var-briefcase: "\f0b1"; -@fa-var-btc: "\f15a"; -@fa-var-bug: "\f188"; -@fa-var-building: "\f1ad"; -@fa-var-building-o: "\f0f7"; -@fa-var-bullhorn: "\f0a1"; -@fa-var-bullseye: "\f140"; -@fa-var-bus: "\f207"; -@fa-var-buysellads: "\f20d"; -@fa-var-cab: "\f1ba"; -@fa-var-calculator: "\f1ec"; -@fa-var-calendar: "\f073"; -@fa-var-calendar-o: "\f133"; -@fa-var-camera: "\f030"; -@fa-var-camera-retro: "\f083"; -@fa-var-car: "\f1b9"; -@fa-var-caret-down: "\f0d7"; -@fa-var-caret-left: "\f0d9"; -@fa-var-caret-right: "\f0da"; -@fa-var-caret-square-o-down: "\f150"; -@fa-var-caret-square-o-left: "\f191"; -@fa-var-caret-square-o-right: "\f152"; -@fa-var-caret-square-o-up: "\f151"; -@fa-var-caret-up: "\f0d8"; -@fa-var-cart-arrow-down: "\f218"; -@fa-var-cart-plus: "\f217"; -@fa-var-cc: "\f20a"; -@fa-var-cc-amex: "\f1f3"; -@fa-var-cc-discover: "\f1f2"; -@fa-var-cc-mastercard: "\f1f1"; -@fa-var-cc-paypal: "\f1f4"; -@fa-var-cc-stripe: "\f1f5"; -@fa-var-cc-visa: "\f1f0"; -@fa-var-certificate: "\f0a3"; -@fa-var-chain: "\f0c1"; -@fa-var-chain-broken: "\f127"; -@fa-var-check: "\f00c"; -@fa-var-check-circle: "\f058"; -@fa-var-check-circle-o: "\f05d"; -@fa-var-check-square: "\f14a"; -@fa-var-check-square-o: "\f046"; -@fa-var-chevron-circle-down: "\f13a"; -@fa-var-chevron-circle-left: "\f137"; -@fa-var-chevron-circle-right: "\f138"; -@fa-var-chevron-circle-up: "\f139"; -@fa-var-chevron-down: "\f078"; -@fa-var-chevron-left: "\f053"; -@fa-var-chevron-right: "\f054"; -@fa-var-chevron-up: "\f077"; -@fa-var-child: "\f1ae"; -@fa-var-circle: "\f111"; -@fa-var-circle-o: "\f10c"; -@fa-var-circle-o-notch: "\f1ce"; -@fa-var-circle-thin: "\f1db"; -@fa-var-clipboard: "\f0ea"; -@fa-var-clock-o: "\f017"; -@fa-var-close: "\f00d"; -@fa-var-cloud: "\f0c2"; -@fa-var-cloud-download: "\f0ed"; -@fa-var-cloud-upload: "\f0ee"; -@fa-var-cny: "\f157"; -@fa-var-code: "\f121"; -@fa-var-code-fork: "\f126"; -@fa-var-codepen: "\f1cb"; -@fa-var-coffee: "\f0f4"; -@fa-var-cog: "\f013"; -@fa-var-cogs: "\f085"; -@fa-var-columns: "\f0db"; -@fa-var-comment: "\f075"; -@fa-var-comment-o: "\f0e5"; -@fa-var-comments: "\f086"; -@fa-var-comments-o: "\f0e6"; -@fa-var-compass: "\f14e"; -@fa-var-compress: "\f066"; -@fa-var-connectdevelop: "\f20e"; -@fa-var-copy: "\f0c5"; -@fa-var-copyright: "\f1f9"; -@fa-var-credit-card: "\f09d"; -@fa-var-crop: "\f125"; -@fa-var-crosshairs: "\f05b"; -@fa-var-css3: "\f13c"; -@fa-var-cube: "\f1b2"; -@fa-var-cubes: "\f1b3"; -@fa-var-cut: "\f0c4"; -@fa-var-cutlery: "\f0f5"; -@fa-var-dashboard: "\f0e4"; -@fa-var-dashcube: "\f210"; -@fa-var-database: "\f1c0"; -@fa-var-dedent: "\f03b"; -@fa-var-delicious: "\f1a5"; -@fa-var-desktop: "\f108"; -@fa-var-deviantart: "\f1bd"; -@fa-var-diamond: "\f219"; -@fa-var-digg: "\f1a6"; -@fa-var-dollar: "\f155"; -@fa-var-dot-circle-o: "\f192"; -@fa-var-download: "\f019"; -@fa-var-dribbble: "\f17d"; -@fa-var-dropbox: "\f16b"; -@fa-var-drupal: "\f1a9"; -@fa-var-edit: "\f044"; -@fa-var-eject: "\f052"; -@fa-var-ellipsis-h: "\f141"; -@fa-var-ellipsis-v: "\f142"; -@fa-var-empire: "\f1d1"; -@fa-var-envelope: "\f0e0"; -@fa-var-envelope-o: "\f003"; -@fa-var-envelope-square: "\f199"; -@fa-var-eraser: "\f12d"; -@fa-var-eur: "\f153"; -@fa-var-euro: "\f153"; -@fa-var-exchange: "\f0ec"; -@fa-var-exclamation: "\f12a"; -@fa-var-exclamation-circle: "\f06a"; -@fa-var-exclamation-triangle: "\f071"; -@fa-var-expand: "\f065"; -@fa-var-external-link: "\f08e"; -@fa-var-external-link-square: "\f14c"; -@fa-var-eye: "\f06e"; -@fa-var-eye-slash: "\f070"; -@fa-var-eyedropper: "\f1fb"; -@fa-var-facebook: "\f09a"; -@fa-var-facebook-f: "\f09a"; -@fa-var-facebook-official: "\f230"; -@fa-var-facebook-square: "\f082"; -@fa-var-fast-backward: "\f049"; -@fa-var-fast-forward: "\f050"; -@fa-var-fax: "\f1ac"; -@fa-var-female: "\f182"; -@fa-var-fighter-jet: "\f0fb"; -@fa-var-file: "\f15b"; -@fa-var-file-archive-o: "\f1c6"; -@fa-var-file-audio-o: "\f1c7"; -@fa-var-file-code-o: "\f1c9"; -@fa-var-file-excel-o: "\f1c3"; -@fa-var-file-image-o: "\f1c5"; -@fa-var-file-movie-o: "\f1c8"; -@fa-var-file-o: "\f016"; -@fa-var-file-pdf-o: "\f1c1"; -@fa-var-file-photo-o: "\f1c5"; -@fa-var-file-picture-o: "\f1c5"; -@fa-var-file-powerpoint-o: "\f1c4"; -@fa-var-file-sound-o: "\f1c7"; -@fa-var-file-text: "\f15c"; -@fa-var-file-text-o: "\f0f6"; -@fa-var-file-video-o: "\f1c8"; -@fa-var-file-word-o: "\f1c2"; -@fa-var-file-zip-o: "\f1c6"; -@fa-var-files-o: "\f0c5"; -@fa-var-film: "\f008"; -@fa-var-filter: "\f0b0"; -@fa-var-fire: "\f06d"; -@fa-var-fire-extinguisher: "\f134"; -@fa-var-flag: "\f024"; -@fa-var-flag-checkered: "\f11e"; -@fa-var-flag-o: "\f11d"; -@fa-var-flash: "\f0e7"; -@fa-var-flask: "\f0c3"; -@fa-var-flickr: "\f16e"; -@fa-var-floppy-o: "\f0c7"; -@fa-var-folder: "\f07b"; -@fa-var-folder-o: "\f114"; -@fa-var-folder-open: "\f07c"; -@fa-var-folder-open-o: "\f115"; -@fa-var-font: "\f031"; -@fa-var-forumbee: "\f211"; -@fa-var-forward: "\f04e"; -@fa-var-foursquare: "\f180"; -@fa-var-frown-o: "\f119"; -@fa-var-futbol-o: "\f1e3"; -@fa-var-gamepad: "\f11b"; -@fa-var-gavel: "\f0e3"; -@fa-var-gbp: "\f154"; -@fa-var-ge: "\f1d1"; -@fa-var-gear: "\f013"; -@fa-var-gears: "\f085"; -@fa-var-genderless: "\f1db"; -@fa-var-gift: "\f06b"; -@fa-var-git: "\f1d3"; -@fa-var-git-square: "\f1d2"; -@fa-var-github: "\f09b"; -@fa-var-github-alt: "\f113"; -@fa-var-github-square: "\f092"; -@fa-var-gittip: "\f184"; -@fa-var-glass: "\f000"; -@fa-var-globe: "\f0ac"; -@fa-var-google: "\f1a0"; -@fa-var-google-plus: "\f0d5"; -@fa-var-google-plus-square: "\f0d4"; -@fa-var-google-wallet: "\f1ee"; -@fa-var-graduation-cap: "\f19d"; -@fa-var-gratipay: "\f184"; -@fa-var-group: "\f0c0"; -@fa-var-h-square: "\f0fd"; -@fa-var-hacker-news: "\f1d4"; -@fa-var-hand-o-down: "\f0a7"; -@fa-var-hand-o-left: "\f0a5"; -@fa-var-hand-o-right: "\f0a4"; -@fa-var-hand-o-up: "\f0a6"; -@fa-var-hdd-o: "\f0a0"; -@fa-var-header: "\f1dc"; -@fa-var-headphones: "\f025"; -@fa-var-heart: "\f004"; -@fa-var-heart-o: "\f08a"; -@fa-var-heartbeat: "\f21e"; -@fa-var-history: "\f1da"; -@fa-var-home: "\f015"; -@fa-var-hospital-o: "\f0f8"; -@fa-var-hotel: "\f236"; -@fa-var-html5: "\f13b"; -@fa-var-ils: "\f20b"; -@fa-var-image: "\f03e"; -@fa-var-inbox: "\f01c"; -@fa-var-indent: "\f03c"; -@fa-var-info: "\f129"; -@fa-var-info-circle: "\f05a"; -@fa-var-inr: "\f156"; -@fa-var-instagram: "\f16d"; -@fa-var-institution: "\f19c"; -@fa-var-ioxhost: "\f208"; -@fa-var-italic: "\f033"; -@fa-var-joomla: "\f1aa"; -@fa-var-jpy: "\f157"; -@fa-var-jsfiddle: "\f1cc"; -@fa-var-key: "\f084"; -@fa-var-keyboard-o: "\f11c"; -@fa-var-krw: "\f159"; -@fa-var-language: "\f1ab"; -@fa-var-laptop: "\f109"; -@fa-var-lastfm: "\f202"; -@fa-var-lastfm-square: "\f203"; -@fa-var-leaf: "\f06c"; -@fa-var-leanpub: "\f212"; -@fa-var-legal: "\f0e3"; -@fa-var-lemon-o: "\f094"; -@fa-var-level-down: "\f149"; -@fa-var-level-up: "\f148"; -@fa-var-life-bouy: "\f1cd"; -@fa-var-life-buoy: "\f1cd"; -@fa-var-life-ring: "\f1cd"; -@fa-var-life-saver: "\f1cd"; -@fa-var-lightbulb-o: "\f0eb"; -@fa-var-line-chart: "\f201"; -@fa-var-link: "\f0c1"; -@fa-var-linkedin: "\f0e1"; -@fa-var-linkedin-square: "\f08c"; -@fa-var-linux: "\f17c"; -@fa-var-list: "\f03a"; -@fa-var-list-alt: "\f022"; -@fa-var-list-ol: "\f0cb"; -@fa-var-list-ul: "\f0ca"; -@fa-var-location-arrow: "\f124"; -@fa-var-lock: "\f023"; -@fa-var-long-arrow-down: "\f175"; -@fa-var-long-arrow-left: "\f177"; -@fa-var-long-arrow-right: "\f178"; -@fa-var-long-arrow-up: "\f176"; -@fa-var-magic: "\f0d0"; -@fa-var-magnet: "\f076"; -@fa-var-mail-forward: "\f064"; -@fa-var-mail-reply: "\f112"; -@fa-var-mail-reply-all: "\f122"; -@fa-var-male: "\f183"; -@fa-var-map-marker: "\f041"; -@fa-var-mars: "\f222"; -@fa-var-mars-double: "\f227"; -@fa-var-mars-stroke: "\f229"; -@fa-var-mars-stroke-h: "\f22b"; -@fa-var-mars-stroke-v: "\f22a"; -@fa-var-maxcdn: "\f136"; -@fa-var-meanpath: "\f20c"; -@fa-var-medium: "\f23a"; -@fa-var-medkit: "\f0fa"; -@fa-var-meh-o: "\f11a"; -@fa-var-mercury: "\f223"; -@fa-var-microphone: "\f130"; -@fa-var-microphone-slash: "\f131"; -@fa-var-minus: "\f068"; -@fa-var-minus-circle: "\f056"; -@fa-var-minus-square: "\f146"; -@fa-var-minus-square-o: "\f147"; -@fa-var-mobile: "\f10b"; -@fa-var-mobile-phone: "\f10b"; -@fa-var-money: "\f0d6"; -@fa-var-moon-o: "\f186"; -@fa-var-mortar-board: "\f19d"; -@fa-var-motorcycle: "\f21c"; -@fa-var-music: "\f001"; -@fa-var-navicon: "\f0c9"; -@fa-var-neuter: "\f22c"; -@fa-var-newspaper-o: "\f1ea"; -@fa-var-openid: "\f19b"; -@fa-var-outdent: "\f03b"; -@fa-var-pagelines: "\f18c"; -@fa-var-paint-brush: "\f1fc"; -@fa-var-paper-plane: "\f1d8"; -@fa-var-paper-plane-o: "\f1d9"; -@fa-var-paperclip: "\f0c6"; -@fa-var-paragraph: "\f1dd"; -@fa-var-paste: "\f0ea"; -@fa-var-pause: "\f04c"; -@fa-var-paw: "\f1b0"; -@fa-var-paypal: "\f1ed"; -@fa-var-pencil: "\f040"; -@fa-var-pencil-square: "\f14b"; -@fa-var-pencil-square-o: "\f044"; -@fa-var-phone: "\f095"; -@fa-var-phone-square: "\f098"; -@fa-var-photo: "\f03e"; -@fa-var-picture-o: "\f03e"; -@fa-var-pie-chart: "\f200"; -@fa-var-pied-piper: "\f1a7"; -@fa-var-pied-piper-alt: "\f1a8"; -@fa-var-pinterest: "\f0d2"; -@fa-var-pinterest-p: "\f231"; -@fa-var-pinterest-square: "\f0d3"; -@fa-var-plane: "\f072"; -@fa-var-play: "\f04b"; -@fa-var-play-circle: "\f144"; -@fa-var-play-circle-o: "\f01d"; -@fa-var-plug: "\f1e6"; -@fa-var-plus: "\f067"; -@fa-var-plus-circle: "\f055"; -@fa-var-plus-square: "\f0fe"; -@fa-var-plus-square-o: "\f196"; -@fa-var-power-off: "\f011"; -@fa-var-print: "\f02f"; -@fa-var-puzzle-piece: "\f12e"; -@fa-var-qq: "\f1d6"; -@fa-var-qrcode: "\f029"; -@fa-var-question: "\f128"; -@fa-var-question-circle: "\f059"; -@fa-var-quote-left: "\f10d"; -@fa-var-quote-right: "\f10e"; -@fa-var-ra: "\f1d0"; -@fa-var-random: "\f074"; -@fa-var-rebel: "\f1d0"; -@fa-var-recycle: "\f1b8"; -@fa-var-reddit: "\f1a1"; -@fa-var-reddit-square: "\f1a2"; -@fa-var-refresh: "\f021"; -@fa-var-remove: "\f00d"; -@fa-var-renren: "\f18b"; -@fa-var-reorder: "\f0c9"; -@fa-var-repeat: "\f01e"; -@fa-var-reply: "\f112"; -@fa-var-reply-all: "\f122"; -@fa-var-retweet: "\f079"; -@fa-var-rmb: "\f157"; -@fa-var-road: "\f018"; -@fa-var-rocket: "\f135"; -@fa-var-rotate-left: "\f0e2"; -@fa-var-rotate-right: "\f01e"; -@fa-var-rouble: "\f158"; -@fa-var-rss: "\f09e"; -@fa-var-rss-square: "\f143"; -@fa-var-rub: "\f158"; -@fa-var-ruble: "\f158"; -@fa-var-rupee: "\f156"; -@fa-var-save: "\f0c7"; -@fa-var-scissors: "\f0c4"; -@fa-var-search: "\f002"; -@fa-var-search-minus: "\f010"; -@fa-var-search-plus: "\f00e"; -@fa-var-sellsy: "\f213"; -@fa-var-send: "\f1d8"; -@fa-var-send-o: "\f1d9"; -@fa-var-server: "\f233"; -@fa-var-share: "\f064"; -@fa-var-share-alt: "\f1e0"; -@fa-var-share-alt-square: "\f1e1"; -@fa-var-share-square: "\f14d"; -@fa-var-share-square-o: "\f045"; -@fa-var-shekel: "\f20b"; -@fa-var-sheqel: "\f20b"; -@fa-var-shield: "\f132"; -@fa-var-ship: "\f21a"; -@fa-var-shirtsinbulk: "\f214"; -@fa-var-shopping-cart: "\f07a"; -@fa-var-sign-in: "\f090"; -@fa-var-sign-out: "\f08b"; -@fa-var-signal: "\f012"; -@fa-var-simplybuilt: "\f215"; -@fa-var-sitemap: "\f0e8"; -@fa-var-skyatlas: "\f216"; -@fa-var-skype: "\f17e"; -@fa-var-slack: "\f198"; -@fa-var-sliders: "\f1de"; -@fa-var-slideshare: "\f1e7"; -@fa-var-smile-o: "\f118"; -@fa-var-soccer-ball-o: "\f1e3"; -@fa-var-sort: "\f0dc"; -@fa-var-sort-alpha-asc: "\f15d"; -@fa-var-sort-alpha-desc: "\f15e"; -@fa-var-sort-amount-asc: "\f160"; -@fa-var-sort-amount-desc: "\f161"; -@fa-var-sort-asc: "\f0de"; -@fa-var-sort-desc: "\f0dd"; -@fa-var-sort-down: "\f0dd"; -@fa-var-sort-numeric-asc: "\f162"; -@fa-var-sort-numeric-desc: "\f163"; -@fa-var-sort-up: "\f0de"; -@fa-var-soundcloud: "\f1be"; -@fa-var-space-shuttle: "\f197"; -@fa-var-spinner: "\f110"; -@fa-var-spoon: "\f1b1"; -@fa-var-spotify: "\f1bc"; -@fa-var-square: "\f0c8"; -@fa-var-square-o: "\f096"; -@fa-var-stack-exchange: "\f18d"; -@fa-var-stack-overflow: "\f16c"; -@fa-var-star: "\f005"; -@fa-var-star-half: "\f089"; -@fa-var-star-half-empty: "\f123"; -@fa-var-star-half-full: "\f123"; -@fa-var-star-half-o: "\f123"; -@fa-var-star-o: "\f006"; -@fa-var-steam: "\f1b6"; -@fa-var-steam-square: "\f1b7"; -@fa-var-step-backward: "\f048"; -@fa-var-step-forward: "\f051"; -@fa-var-stethoscope: "\f0f1"; -@fa-var-stop: "\f04d"; -@fa-var-street-view: "\f21d"; -@fa-var-strikethrough: "\f0cc"; -@fa-var-stumbleupon: "\f1a4"; -@fa-var-stumbleupon-circle: "\f1a3"; -@fa-var-subscript: "\f12c"; -@fa-var-subway: "\f239"; -@fa-var-suitcase: "\f0f2"; -@fa-var-sun-o: "\f185"; -@fa-var-superscript: "\f12b"; -@fa-var-support: "\f1cd"; -@fa-var-table: "\f0ce"; -@fa-var-tablet: "\f10a"; -@fa-var-tachometer: "\f0e4"; -@fa-var-tag: "\f02b"; -@fa-var-tags: "\f02c"; -@fa-var-tasks: "\f0ae"; -@fa-var-taxi: "\f1ba"; -@fa-var-tencent-weibo: "\f1d5"; -@fa-var-terminal: "\f120"; -@fa-var-text-height: "\f034"; -@fa-var-text-width: "\f035"; -@fa-var-th: "\f00a"; -@fa-var-th-large: "\f009"; -@fa-var-th-list: "\f00b"; -@fa-var-thumb-tack: "\f08d"; -@fa-var-thumbs-down: "\f165"; -@fa-var-thumbs-o-down: "\f088"; -@fa-var-thumbs-o-up: "\f087"; -@fa-var-thumbs-up: "\f164"; -@fa-var-ticket: "\f145"; -@fa-var-times: "\f00d"; -@fa-var-times-circle: "\f057"; -@fa-var-times-circle-o: "\f05c"; -@fa-var-tint: "\f043"; -@fa-var-toggle-down: "\f150"; -@fa-var-toggle-left: "\f191"; -@fa-var-toggle-off: "\f204"; -@fa-var-toggle-on: "\f205"; -@fa-var-toggle-right: "\f152"; -@fa-var-toggle-up: "\f151"; -@fa-var-train: "\f238"; -@fa-var-transgender: "\f224"; -@fa-var-transgender-alt: "\f225"; -@fa-var-trash: "\f1f8"; -@fa-var-trash-o: "\f014"; -@fa-var-tree: "\f1bb"; -@fa-var-trello: "\f181"; -@fa-var-trophy: "\f091"; -@fa-var-truck: "\f0d1"; -@fa-var-try: "\f195"; -@fa-var-tty: "\f1e4"; -@fa-var-tumblr: "\f173"; -@fa-var-tumblr-square: "\f174"; -@fa-var-turkish-lira: "\f195"; -@fa-var-twitch: "\f1e8"; -@fa-var-twitter: "\f099"; -@fa-var-twitter-square: "\f081"; -@fa-var-umbrella: "\f0e9"; -@fa-var-underline: "\f0cd"; -@fa-var-undo: "\f0e2"; -@fa-var-university: "\f19c"; -@fa-var-unlink: "\f127"; -@fa-var-unlock: "\f09c"; -@fa-var-unlock-alt: "\f13e"; -@fa-var-unsorted: "\f0dc"; -@fa-var-upload: "\f093"; -@fa-var-usd: "\f155"; -@fa-var-user: "\f007"; -@fa-var-user-md: "\f0f0"; -@fa-var-user-plus: "\f234"; -@fa-var-user-secret: "\f21b"; -@fa-var-user-times: "\f235"; -@fa-var-users: "\f0c0"; -@fa-var-venus: "\f221"; -@fa-var-venus-double: "\f226"; -@fa-var-venus-mars: "\f228"; -@fa-var-viacoin: "\f237"; -@fa-var-video-camera: "\f03d"; -@fa-var-vimeo-square: "\f194"; -@fa-var-vine: "\f1ca"; -@fa-var-vk: "\f189"; -@fa-var-volume-down: "\f027"; -@fa-var-volume-off: "\f026"; -@fa-var-volume-up: "\f028"; -@fa-var-warning: "\f071"; -@fa-var-wechat: "\f1d7"; -@fa-var-weibo: "\f18a"; -@fa-var-weixin: "\f1d7"; -@fa-var-whatsapp: "\f232"; -@fa-var-wheelchair: "\f193"; -@fa-var-wifi: "\f1eb"; -@fa-var-windows: "\f17a"; -@fa-var-won: "\f159"; -@fa-var-wordpress: "\f19a"; -@fa-var-wrench: "\f0ad"; -@fa-var-xing: "\f168"; -@fa-var-xing-square: "\f169"; -@fa-var-yahoo: "\f19e"; -@fa-var-yelp: "\f1e9"; -@fa-var-yen: "\f157"; -@fa-var-youtube: "\f167"; -@fa-var-youtube-play: "\f16a"; -@fa-var-youtube-square: "\f166"; - diff --git a/assets/font-awesome/scss/_animated.scss b/assets/font-awesome/scss/_animated.scss deleted file mode 100644 index 8a020dbf..00000000 --- a/assets/font-awesome/scss/_animated.scss +++ /dev/null @@ -1,34 +0,0 @@ -// Spinning Icons -// -------------------------- - -.#{$fa-css-prefix}-spin { - -webkit-animation: fa-spin 2s infinite linear; - animation: fa-spin 2s infinite linear; -} - -.#{$fa-css-prefix}-pulse { - -webkit-animation: fa-spin 1s infinite steps(8); - animation: fa-spin 1s infinite steps(8); -} - -@-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} - -@keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} diff --git a/assets/font-awesome/scss/_bordered-pulled.scss b/assets/font-awesome/scss/_bordered-pulled.scss deleted file mode 100644 index 9d3fdf3a..00000000 --- a/assets/font-awesome/scss/_bordered-pulled.scss +++ /dev/null @@ -1,16 +0,0 @@ -// Bordered & Pulled -// ------------------------- - -.#{$fa-css-prefix}-border { - padding: .2em .25em .15em; - border: solid .08em $fa-border-color; - border-radius: .1em; -} - -.pull-right { float: right; } -.pull-left { float: left; } - -.#{$fa-css-prefix} { - &.pull-left { margin-right: .3em; } - &.pull-right { margin-left: .3em; } -} diff --git a/assets/font-awesome/scss/_core.scss b/assets/font-awesome/scss/_core.scss deleted file mode 100644 index 5a2db9d5..00000000 --- a/assets/font-awesome/scss/_core.scss +++ /dev/null @@ -1,13 +0,0 @@ -// Base Class Definition -// ------------------------- - -.#{$fa-css-prefix} { - display: inline-block; - font: normal normal normal #{$fa-font-size-base}/1 FontAwesome; // shortening font declaration - font-size: inherit; // can't have font-size inherit on line above, so need to override - text-rendering: auto; // optimizelegibility throws things off #1094 - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - transform: translate(0, 0); // ensures no half-pixel rendering in firefox - -} diff --git a/assets/font-awesome/scss/_fixed-width.scss b/assets/font-awesome/scss/_fixed-width.scss deleted file mode 100644 index b221c981..00000000 --- a/assets/font-awesome/scss/_fixed-width.scss +++ /dev/null @@ -1,6 +0,0 @@ -// Fixed Width Icons -// ------------------------- -.#{$fa-css-prefix}-fw { - width: (18em / 14); - text-align: center; -} diff --git a/assets/font-awesome/scss/_icons.scss b/assets/font-awesome/scss/_icons.scss deleted file mode 100644 index fbcfe812..00000000 --- a/assets/font-awesome/scss/_icons.scss +++ /dev/null @@ -1,596 +0,0 @@ -/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen - readers do not read off random characters that represent icons */ - -.#{$fa-css-prefix}-glass:before { content: $fa-var-glass; } -.#{$fa-css-prefix}-music:before { content: $fa-var-music; } -.#{$fa-css-prefix}-search:before { content: $fa-var-search; } -.#{$fa-css-prefix}-envelope-o:before { content: $fa-var-envelope-o; } -.#{$fa-css-prefix}-heart:before { content: $fa-var-heart; } -.#{$fa-css-prefix}-star:before { content: $fa-var-star; } -.#{$fa-css-prefix}-star-o:before { content: $fa-var-star-o; } -.#{$fa-css-prefix}-user:before { content: $fa-var-user; } -.#{$fa-css-prefix}-film:before { content: $fa-var-film; } -.#{$fa-css-prefix}-th-large:before { content: $fa-var-th-large; } -.#{$fa-css-prefix}-th:before { content: $fa-var-th; } -.#{$fa-css-prefix}-th-list:before { content: $fa-var-th-list; } -.#{$fa-css-prefix}-check:before { content: $fa-var-check; } -.#{$fa-css-prefix}-remove:before, -.#{$fa-css-prefix}-close:before, -.#{$fa-css-prefix}-times:before { content: $fa-var-times; } -.#{$fa-css-prefix}-search-plus:before { content: $fa-var-search-plus; } -.#{$fa-css-prefix}-search-minus:before { content: $fa-var-search-minus; } -.#{$fa-css-prefix}-power-off:before { content: $fa-var-power-off; } -.#{$fa-css-prefix}-signal:before { content: $fa-var-signal; } -.#{$fa-css-prefix}-gear:before, -.#{$fa-css-prefix}-cog:before { content: $fa-var-cog; } -.#{$fa-css-prefix}-trash-o:before { content: $fa-var-trash-o; } -.#{$fa-css-prefix}-home:before { content: $fa-var-home; } -.#{$fa-css-prefix}-file-o:before { content: $fa-var-file-o; } -.#{$fa-css-prefix}-clock-o:before { content: $fa-var-clock-o; } -.#{$fa-css-prefix}-road:before { content: $fa-var-road; } -.#{$fa-css-prefix}-download:before { content: $fa-var-download; } -.#{$fa-css-prefix}-arrow-circle-o-down:before { content: $fa-var-arrow-circle-o-down; } -.#{$fa-css-prefix}-arrow-circle-o-up:before { content: $fa-var-arrow-circle-o-up; } -.#{$fa-css-prefix}-inbox:before { content: $fa-var-inbox; } -.#{$fa-css-prefix}-play-circle-o:before { content: $fa-var-play-circle-o; } -.#{$fa-css-prefix}-rotate-right:before, -.#{$fa-css-prefix}-repeat:before { content: $fa-var-repeat; } -.#{$fa-css-prefix}-refresh:before { content: $fa-var-refresh; } -.#{$fa-css-prefix}-list-alt:before { content: $fa-var-list-alt; } -.#{$fa-css-prefix}-lock:before { content: $fa-var-lock; } -.#{$fa-css-prefix}-flag:before { content: $fa-var-flag; } -.#{$fa-css-prefix}-headphones:before { content: $fa-var-headphones; } -.#{$fa-css-prefix}-volume-off:before { content: $fa-var-volume-off; } -.#{$fa-css-prefix}-volume-down:before { content: $fa-var-volume-down; } -.#{$fa-css-prefix}-volume-up:before { content: $fa-var-volume-up; } -.#{$fa-css-prefix}-qrcode:before { content: $fa-var-qrcode; } -.#{$fa-css-prefix}-barcode:before { content: $fa-var-barcode; } -.#{$fa-css-prefix}-tag:before { content: $fa-var-tag; } -.#{$fa-css-prefix}-tags:before { content: $fa-var-tags; } -.#{$fa-css-prefix}-book:before { content: $fa-var-book; } -.#{$fa-css-prefix}-bookmark:before { content: $fa-var-bookmark; } -.#{$fa-css-prefix}-print:before { content: $fa-var-print; } -.#{$fa-css-prefix}-camera:before { content: $fa-var-camera; } -.#{$fa-css-prefix}-font:before { content: $fa-var-font; } -.#{$fa-css-prefix}-bold:before { content: $fa-var-bold; } -.#{$fa-css-prefix}-italic:before { content: $fa-var-italic; } -.#{$fa-css-prefix}-text-height:before { content: $fa-var-text-height; } -.#{$fa-css-prefix}-text-width:before { content: $fa-var-text-width; } -.#{$fa-css-prefix}-align-left:before { content: $fa-var-align-left; } -.#{$fa-css-prefix}-align-center:before { content: $fa-var-align-center; } -.#{$fa-css-prefix}-align-right:before { content: $fa-var-align-right; } -.#{$fa-css-prefix}-align-justify:before { content: $fa-var-align-justify; } -.#{$fa-css-prefix}-list:before { content: $fa-var-list; } -.#{$fa-css-prefix}-dedent:before, -.#{$fa-css-prefix}-outdent:before { content: $fa-var-outdent; } -.#{$fa-css-prefix}-indent:before { content: $fa-var-indent; } -.#{$fa-css-prefix}-video-camera:before { content: $fa-var-video-camera; } -.#{$fa-css-prefix}-photo:before, -.#{$fa-css-prefix}-image:before, -.#{$fa-css-prefix}-picture-o:before { content: $fa-var-picture-o; } -.#{$fa-css-prefix}-pencil:before { content: $fa-var-pencil; } -.#{$fa-css-prefix}-map-marker:before { content: $fa-var-map-marker; } -.#{$fa-css-prefix}-adjust:before { content: $fa-var-adjust; } -.#{$fa-css-prefix}-tint:before { content: $fa-var-tint; } -.#{$fa-css-prefix}-edit:before, -.#{$fa-css-prefix}-pencil-square-o:before { content: $fa-var-pencil-square-o; } -.#{$fa-css-prefix}-share-square-o:before { content: $fa-var-share-square-o; } -.#{$fa-css-prefix}-check-square-o:before { content: $fa-var-check-square-o; } -.#{$fa-css-prefix}-arrows:before { content: $fa-var-arrows; } -.#{$fa-css-prefix}-step-backward:before { content: $fa-var-step-backward; } -.#{$fa-css-prefix}-fast-backward:before { content: $fa-var-fast-backward; } -.#{$fa-css-prefix}-backward:before { content: $fa-var-backward; } -.#{$fa-css-prefix}-play:before { content: $fa-var-play; } -.#{$fa-css-prefix}-pause:before { content: $fa-var-pause; } -.#{$fa-css-prefix}-stop:before { content: $fa-var-stop; } -.#{$fa-css-prefix}-forward:before { content: $fa-var-forward; } -.#{$fa-css-prefix}-fast-forward:before { content: $fa-var-fast-forward; } -.#{$fa-css-prefix}-step-forward:before { content: $fa-var-step-forward; } -.#{$fa-css-prefix}-eject:before { content: $fa-var-eject; } -.#{$fa-css-prefix}-chevron-left:before { content: $fa-var-chevron-left; } -.#{$fa-css-prefix}-chevron-right:before { content: $fa-var-chevron-right; } -.#{$fa-css-prefix}-plus-circle:before { content: $fa-var-plus-circle; } -.#{$fa-css-prefix}-minus-circle:before { content: $fa-var-minus-circle; } -.#{$fa-css-prefix}-times-circle:before { content: $fa-var-times-circle; } -.#{$fa-css-prefix}-check-circle:before { content: $fa-var-check-circle; } -.#{$fa-css-prefix}-question-circle:before { content: $fa-var-question-circle; } -.#{$fa-css-prefix}-info-circle:before { content: $fa-var-info-circle; } -.#{$fa-css-prefix}-crosshairs:before { content: $fa-var-crosshairs; } -.#{$fa-css-prefix}-times-circle-o:before { content: $fa-var-times-circle-o; } -.#{$fa-css-prefix}-check-circle-o:before { content: $fa-var-check-circle-o; } -.#{$fa-css-prefix}-ban:before { content: $fa-var-ban; } -.#{$fa-css-prefix}-arrow-left:before { content: $fa-var-arrow-left; } -.#{$fa-css-prefix}-arrow-right:before { content: $fa-var-arrow-right; } -.#{$fa-css-prefix}-arrow-up:before { content: $fa-var-arrow-up; } -.#{$fa-css-prefix}-arrow-down:before { content: $fa-var-arrow-down; } -.#{$fa-css-prefix}-mail-forward:before, -.#{$fa-css-prefix}-share:before { content: $fa-var-share; } -.#{$fa-css-prefix}-expand:before { content: $fa-var-expand; } -.#{$fa-css-prefix}-compress:before { content: $fa-var-compress; } -.#{$fa-css-prefix}-plus:before { content: $fa-var-plus; } -.#{$fa-css-prefix}-minus:before { content: $fa-var-minus; } -.#{$fa-css-prefix}-asterisk:before { content: $fa-var-asterisk; } -.#{$fa-css-prefix}-exclamation-circle:before { content: $fa-var-exclamation-circle; } -.#{$fa-css-prefix}-gift:before { content: $fa-var-gift; } -.#{$fa-css-prefix}-leaf:before { content: $fa-var-leaf; } -.#{$fa-css-prefix}-fire:before { content: $fa-var-fire; } -.#{$fa-css-prefix}-eye:before { content: $fa-var-eye; } -.#{$fa-css-prefix}-eye-slash:before { content: $fa-var-eye-slash; } -.#{$fa-css-prefix}-warning:before, -.#{$fa-css-prefix}-exclamation-triangle:before { content: $fa-var-exclamation-triangle; } -.#{$fa-css-prefix}-plane:before { content: $fa-var-plane; } -.#{$fa-css-prefix}-calendar:before { content: $fa-var-calendar; } -.#{$fa-css-prefix}-random:before { content: $fa-var-random; } -.#{$fa-css-prefix}-comment:before { content: $fa-var-comment; } -.#{$fa-css-prefix}-magnet:before { content: $fa-var-magnet; } -.#{$fa-css-prefix}-chevron-up:before { content: $fa-var-chevron-up; } -.#{$fa-css-prefix}-chevron-down:before { content: $fa-var-chevron-down; } -.#{$fa-css-prefix}-retweet:before { content: $fa-var-retweet; } -.#{$fa-css-prefix}-shopping-cart:before { content: $fa-var-shopping-cart; } -.#{$fa-css-prefix}-folder:before { content: $fa-var-folder; } -.#{$fa-css-prefix}-folder-open:before { content: $fa-var-folder-open; } -.#{$fa-css-prefix}-arrows-v:before { content: $fa-var-arrows-v; } -.#{$fa-css-prefix}-arrows-h:before { content: $fa-var-arrows-h; } -.#{$fa-css-prefix}-bar-chart-o:before, -.#{$fa-css-prefix}-bar-chart:before { content: $fa-var-bar-chart; } -.#{$fa-css-prefix}-twitter-square:before { content: $fa-var-twitter-square; } -.#{$fa-css-prefix}-facebook-square:before { content: $fa-var-facebook-square; } -.#{$fa-css-prefix}-camera-retro:before { content: $fa-var-camera-retro; } -.#{$fa-css-prefix}-key:before { content: $fa-var-key; } -.#{$fa-css-prefix}-gears:before, -.#{$fa-css-prefix}-cogs:before { content: $fa-var-cogs; } -.#{$fa-css-prefix}-comments:before { content: $fa-var-comments; } -.#{$fa-css-prefix}-thumbs-o-up:before { content: $fa-var-thumbs-o-up; } -.#{$fa-css-prefix}-thumbs-o-down:before { content: $fa-var-thumbs-o-down; } -.#{$fa-css-prefix}-star-half:before { content: $fa-var-star-half; } -.#{$fa-css-prefix}-heart-o:before { content: $fa-var-heart-o; } -.#{$fa-css-prefix}-sign-out:before { content: $fa-var-sign-out; } -.#{$fa-css-prefix}-linkedin-square:before { content: $fa-var-linkedin-square; } -.#{$fa-css-prefix}-thumb-tack:before { content: $fa-var-thumb-tack; } -.#{$fa-css-prefix}-external-link:before { content: $fa-var-external-link; } -.#{$fa-css-prefix}-sign-in:before { content: $fa-var-sign-in; } -.#{$fa-css-prefix}-trophy:before { content: $fa-var-trophy; } -.#{$fa-css-prefix}-github-square:before { content: $fa-var-github-square; } -.#{$fa-css-prefix}-upload:before { content: $fa-var-upload; } -.#{$fa-css-prefix}-lemon-o:before { content: $fa-var-lemon-o; } -.#{$fa-css-prefix}-phone:before { content: $fa-var-phone; } -.#{$fa-css-prefix}-square-o:before { content: $fa-var-square-o; } -.#{$fa-css-prefix}-bookmark-o:before { content: $fa-var-bookmark-o; } -.#{$fa-css-prefix}-phone-square:before { content: $fa-var-phone-square; } -.#{$fa-css-prefix}-twitter:before { content: $fa-var-twitter; } -.#{$fa-css-prefix}-facebook-f:before, -.#{$fa-css-prefix}-facebook:before { content: $fa-var-facebook; } -.#{$fa-css-prefix}-github:before { content: $fa-var-github; } -.#{$fa-css-prefix}-unlock:before { content: $fa-var-unlock; } -.#{$fa-css-prefix}-credit-card:before { content: $fa-var-credit-card; } -.#{$fa-css-prefix}-rss:before { content: $fa-var-rss; } -.#{$fa-css-prefix}-hdd-o:before { content: $fa-var-hdd-o; } -.#{$fa-css-prefix}-bullhorn:before { content: $fa-var-bullhorn; } -.#{$fa-css-prefix}-bell:before { content: $fa-var-bell; } -.#{$fa-css-prefix}-certificate:before { content: $fa-var-certificate; } -.#{$fa-css-prefix}-hand-o-right:before { content: $fa-var-hand-o-right; } -.#{$fa-css-prefix}-hand-o-left:before { content: $fa-var-hand-o-left; } -.#{$fa-css-prefix}-hand-o-up:before { content: $fa-var-hand-o-up; } -.#{$fa-css-prefix}-hand-o-down:before { content: $fa-var-hand-o-down; } -.#{$fa-css-prefix}-arrow-circle-left:before { content: $fa-var-arrow-circle-left; } -.#{$fa-css-prefix}-arrow-circle-right:before { content: $fa-var-arrow-circle-right; } -.#{$fa-css-prefix}-arrow-circle-up:before { content: $fa-var-arrow-circle-up; } -.#{$fa-css-prefix}-arrow-circle-down:before { content: $fa-var-arrow-circle-down; } -.#{$fa-css-prefix}-globe:before { content: $fa-var-globe; } -.#{$fa-css-prefix}-wrench:before { content: $fa-var-wrench; } -.#{$fa-css-prefix}-tasks:before { content: $fa-var-tasks; } -.#{$fa-css-prefix}-filter:before { content: $fa-var-filter; } -.#{$fa-css-prefix}-briefcase:before { content: $fa-var-briefcase; } -.#{$fa-css-prefix}-arrows-alt:before { content: $fa-var-arrows-alt; } -.#{$fa-css-prefix}-group:before, -.#{$fa-css-prefix}-users:before { content: $fa-var-users; } -.#{$fa-css-prefix}-chain:before, -.#{$fa-css-prefix}-link:before { content: $fa-var-link; } -.#{$fa-css-prefix}-cloud:before { content: $fa-var-cloud; } -.#{$fa-css-prefix}-flask:before { content: $fa-var-flask; } -.#{$fa-css-prefix}-cut:before, -.#{$fa-css-prefix}-scissors:before { content: $fa-var-scissors; } -.#{$fa-css-prefix}-copy:before, -.#{$fa-css-prefix}-files-o:before { content: $fa-var-files-o; } -.#{$fa-css-prefix}-paperclip:before { content: $fa-var-paperclip; } -.#{$fa-css-prefix}-save:before, -.#{$fa-css-prefix}-floppy-o:before { content: $fa-var-floppy-o; } -.#{$fa-css-prefix}-square:before { content: $fa-var-square; } -.#{$fa-css-prefix}-navicon:before, -.#{$fa-css-prefix}-reorder:before, -.#{$fa-css-prefix}-bars:before { content: $fa-var-bars; } -.#{$fa-css-prefix}-list-ul:before { content: $fa-var-list-ul; } -.#{$fa-css-prefix}-list-ol:before { content: $fa-var-list-ol; } -.#{$fa-css-prefix}-strikethrough:before { content: $fa-var-strikethrough; } -.#{$fa-css-prefix}-underline:before { content: $fa-var-underline; } -.#{$fa-css-prefix}-table:before { content: $fa-var-table; } -.#{$fa-css-prefix}-magic:before { content: $fa-var-magic; } -.#{$fa-css-prefix}-truck:before { content: $fa-var-truck; } -.#{$fa-css-prefix}-pinterest:before { content: $fa-var-pinterest; } -.#{$fa-css-prefix}-pinterest-square:before { content: $fa-var-pinterest-square; } -.#{$fa-css-prefix}-google-plus-square:before { content: $fa-var-google-plus-square; } -.#{$fa-css-prefix}-google-plus:before { content: $fa-var-google-plus; } -.#{$fa-css-prefix}-money:before { content: $fa-var-money; } -.#{$fa-css-prefix}-caret-down:before { content: $fa-var-caret-down; } -.#{$fa-css-prefix}-caret-up:before { content: $fa-var-caret-up; } -.#{$fa-css-prefix}-caret-left:before { content: $fa-var-caret-left; } -.#{$fa-css-prefix}-caret-right:before { content: $fa-var-caret-right; } -.#{$fa-css-prefix}-columns:before { content: $fa-var-columns; } -.#{$fa-css-prefix}-unsorted:before, -.#{$fa-css-prefix}-sort:before { content: $fa-var-sort; } -.#{$fa-css-prefix}-sort-down:before, -.#{$fa-css-prefix}-sort-desc:before { content: $fa-var-sort-desc; } -.#{$fa-css-prefix}-sort-up:before, -.#{$fa-css-prefix}-sort-asc:before { content: $fa-var-sort-asc; } -.#{$fa-css-prefix}-envelope:before { content: $fa-var-envelope; } -.#{$fa-css-prefix}-linkedin:before { content: $fa-var-linkedin; } -.#{$fa-css-prefix}-rotate-left:before, -.#{$fa-css-prefix}-undo:before { content: $fa-var-undo; } -.#{$fa-css-prefix}-legal:before, -.#{$fa-css-prefix}-gavel:before { content: $fa-var-gavel; } -.#{$fa-css-prefix}-dashboard:before, -.#{$fa-css-prefix}-tachometer:before { content: $fa-var-tachometer; } -.#{$fa-css-prefix}-comment-o:before { content: $fa-var-comment-o; } -.#{$fa-css-prefix}-comments-o:before { content: $fa-var-comments-o; } -.#{$fa-css-prefix}-flash:before, -.#{$fa-css-prefix}-bolt:before { content: $fa-var-bolt; } -.#{$fa-css-prefix}-sitemap:before { content: $fa-var-sitemap; } -.#{$fa-css-prefix}-umbrella:before { content: $fa-var-umbrella; } -.#{$fa-css-prefix}-paste:before, -.#{$fa-css-prefix}-clipboard:before { content: $fa-var-clipboard; } -.#{$fa-css-prefix}-lightbulb-o:before { content: $fa-var-lightbulb-o; } -.#{$fa-css-prefix}-exchange:before { content: $fa-var-exchange; } -.#{$fa-css-prefix}-cloud-download:before { content: $fa-var-cloud-download; } -.#{$fa-css-prefix}-cloud-upload:before { content: $fa-var-cloud-upload; } -.#{$fa-css-prefix}-user-md:before { content: $fa-var-user-md; } -.#{$fa-css-prefix}-stethoscope:before { content: $fa-var-stethoscope; } -.#{$fa-css-prefix}-suitcase:before { content: $fa-var-suitcase; } -.#{$fa-css-prefix}-bell-o:before { content: $fa-var-bell-o; } -.#{$fa-css-prefix}-coffee:before { content: $fa-var-coffee; } -.#{$fa-css-prefix}-cutlery:before { content: $fa-var-cutlery; } -.#{$fa-css-prefix}-file-text-o:before { content: $fa-var-file-text-o; } -.#{$fa-css-prefix}-building-o:before { content: $fa-var-building-o; } -.#{$fa-css-prefix}-hospital-o:before { content: $fa-var-hospital-o; } -.#{$fa-css-prefix}-ambulance:before { content: $fa-var-ambulance; } -.#{$fa-css-prefix}-medkit:before { content: $fa-var-medkit; } -.#{$fa-css-prefix}-fighter-jet:before { content: $fa-var-fighter-jet; } -.#{$fa-css-prefix}-beer:before { content: $fa-var-beer; } -.#{$fa-css-prefix}-h-square:before { content: $fa-var-h-square; } -.#{$fa-css-prefix}-plus-square:before { content: $fa-var-plus-square; } -.#{$fa-css-prefix}-angle-double-left:before { content: $fa-var-angle-double-left; } -.#{$fa-css-prefix}-angle-double-right:before { content: $fa-var-angle-double-right; } -.#{$fa-css-prefix}-angle-double-up:before { content: $fa-var-angle-double-up; } -.#{$fa-css-prefix}-angle-double-down:before { content: $fa-var-angle-double-down; } -.#{$fa-css-prefix}-angle-left:before { content: $fa-var-angle-left; } -.#{$fa-css-prefix}-angle-right:before { content: $fa-var-angle-right; } -.#{$fa-css-prefix}-angle-up:before { content: $fa-var-angle-up; } -.#{$fa-css-prefix}-angle-down:before { content: $fa-var-angle-down; } -.#{$fa-css-prefix}-desktop:before { content: $fa-var-desktop; } -.#{$fa-css-prefix}-laptop:before { content: $fa-var-laptop; } -.#{$fa-css-prefix}-tablet:before { content: $fa-var-tablet; } -.#{$fa-css-prefix}-mobile-phone:before, -.#{$fa-css-prefix}-mobile:before { content: $fa-var-mobile; } -.#{$fa-css-prefix}-circle-o:before { content: $fa-var-circle-o; } -.#{$fa-css-prefix}-quote-left:before { content: $fa-var-quote-left; } -.#{$fa-css-prefix}-quote-right:before { content: $fa-var-quote-right; } -.#{$fa-css-prefix}-spinner:before { content: $fa-var-spinner; } -.#{$fa-css-prefix}-circle:before { content: $fa-var-circle; } -.#{$fa-css-prefix}-mail-reply:before, -.#{$fa-css-prefix}-reply:before { content: $fa-var-reply; } -.#{$fa-css-prefix}-github-alt:before { content: $fa-var-github-alt; } -.#{$fa-css-prefix}-folder-o:before { content: $fa-var-folder-o; } -.#{$fa-css-prefix}-folder-open-o:before { content: $fa-var-folder-open-o; } -.#{$fa-css-prefix}-smile-o:before { content: $fa-var-smile-o; } -.#{$fa-css-prefix}-frown-o:before { content: $fa-var-frown-o; } -.#{$fa-css-prefix}-meh-o:before { content: $fa-var-meh-o; } -.#{$fa-css-prefix}-gamepad:before { content: $fa-var-gamepad; } -.#{$fa-css-prefix}-keyboard-o:before { content: $fa-var-keyboard-o; } -.#{$fa-css-prefix}-flag-o:before { content: $fa-var-flag-o; } -.#{$fa-css-prefix}-flag-checkered:before { content: $fa-var-flag-checkered; } -.#{$fa-css-prefix}-terminal:before { content: $fa-var-terminal; } -.#{$fa-css-prefix}-code:before { content: $fa-var-code; } -.#{$fa-css-prefix}-mail-reply-all:before, -.#{$fa-css-prefix}-reply-all:before { content: $fa-var-reply-all; } -.#{$fa-css-prefix}-star-half-empty:before, -.#{$fa-css-prefix}-star-half-full:before, -.#{$fa-css-prefix}-star-half-o:before { content: $fa-var-star-half-o; } -.#{$fa-css-prefix}-location-arrow:before { content: $fa-var-location-arrow; } -.#{$fa-css-prefix}-crop:before { content: $fa-var-crop; } -.#{$fa-css-prefix}-code-fork:before { content: $fa-var-code-fork; } -.#{$fa-css-prefix}-unlink:before, -.#{$fa-css-prefix}-chain-broken:before { content: $fa-var-chain-broken; } -.#{$fa-css-prefix}-question:before { content: $fa-var-question; } -.#{$fa-css-prefix}-info:before { content: $fa-var-info; } -.#{$fa-css-prefix}-exclamation:before { content: $fa-var-exclamation; } -.#{$fa-css-prefix}-superscript:before { content: $fa-var-superscript; } -.#{$fa-css-prefix}-subscript:before { content: $fa-var-subscript; } -.#{$fa-css-prefix}-eraser:before { content: $fa-var-eraser; } -.#{$fa-css-prefix}-puzzle-piece:before { content: $fa-var-puzzle-piece; } -.#{$fa-css-prefix}-microphone:before { content: $fa-var-microphone; } -.#{$fa-css-prefix}-microphone-slash:before { content: $fa-var-microphone-slash; } -.#{$fa-css-prefix}-shield:before { content: $fa-var-shield; } -.#{$fa-css-prefix}-calendar-o:before { content: $fa-var-calendar-o; } -.#{$fa-css-prefix}-fire-extinguisher:before { content: $fa-var-fire-extinguisher; } -.#{$fa-css-prefix}-rocket:before { content: $fa-var-rocket; } -.#{$fa-css-prefix}-maxcdn:before { content: $fa-var-maxcdn; } -.#{$fa-css-prefix}-chevron-circle-left:before { content: $fa-var-chevron-circle-left; } -.#{$fa-css-prefix}-chevron-circle-right:before { content: $fa-var-chevron-circle-right; } -.#{$fa-css-prefix}-chevron-circle-up:before { content: $fa-var-chevron-circle-up; } -.#{$fa-css-prefix}-chevron-circle-down:before { content: $fa-var-chevron-circle-down; } -.#{$fa-css-prefix}-html5:before { content: $fa-var-html5; } -.#{$fa-css-prefix}-css3:before { content: $fa-var-css3; } -.#{$fa-css-prefix}-anchor:before { content: $fa-var-anchor; } -.#{$fa-css-prefix}-unlock-alt:before { content: $fa-var-unlock-alt; } -.#{$fa-css-prefix}-bullseye:before { content: $fa-var-bullseye; } -.#{$fa-css-prefix}-ellipsis-h:before { content: $fa-var-ellipsis-h; } -.#{$fa-css-prefix}-ellipsis-v:before { content: $fa-var-ellipsis-v; } -.#{$fa-css-prefix}-rss-square:before { content: $fa-var-rss-square; } -.#{$fa-css-prefix}-play-circle:before { content: $fa-var-play-circle; } -.#{$fa-css-prefix}-ticket:before { content: $fa-var-ticket; } -.#{$fa-css-prefix}-minus-square:before { content: $fa-var-minus-square; } -.#{$fa-css-prefix}-minus-square-o:before { content: $fa-var-minus-square-o; } -.#{$fa-css-prefix}-level-up:before { content: $fa-var-level-up; } -.#{$fa-css-prefix}-level-down:before { content: $fa-var-level-down; } -.#{$fa-css-prefix}-check-square:before { content: $fa-var-check-square; } -.#{$fa-css-prefix}-pencil-square:before { content: $fa-var-pencil-square; } -.#{$fa-css-prefix}-external-link-square:before { content: $fa-var-external-link-square; } -.#{$fa-css-prefix}-share-square:before { content: $fa-var-share-square; } -.#{$fa-css-prefix}-compass:before { content: $fa-var-compass; } -.#{$fa-css-prefix}-toggle-down:before, -.#{$fa-css-prefix}-caret-square-o-down:before { content: $fa-var-caret-square-o-down; } -.#{$fa-css-prefix}-toggle-up:before, -.#{$fa-css-prefix}-caret-square-o-up:before { content: $fa-var-caret-square-o-up; } -.#{$fa-css-prefix}-toggle-right:before, -.#{$fa-css-prefix}-caret-square-o-right:before { content: $fa-var-caret-square-o-right; } -.#{$fa-css-prefix}-euro:before, -.#{$fa-css-prefix}-eur:before { content: $fa-var-eur; } -.#{$fa-css-prefix}-gbp:before { content: $fa-var-gbp; } -.#{$fa-css-prefix}-dollar:before, -.#{$fa-css-prefix}-usd:before { content: $fa-var-usd; } -.#{$fa-css-prefix}-rupee:before, -.#{$fa-css-prefix}-inr:before { content: $fa-var-inr; } -.#{$fa-css-prefix}-cny:before, -.#{$fa-css-prefix}-rmb:before, -.#{$fa-css-prefix}-yen:before, -.#{$fa-css-prefix}-jpy:before { content: $fa-var-jpy; } -.#{$fa-css-prefix}-ruble:before, -.#{$fa-css-prefix}-rouble:before, -.#{$fa-css-prefix}-rub:before { content: $fa-var-rub; } -.#{$fa-css-prefix}-won:before, -.#{$fa-css-prefix}-krw:before { content: $fa-var-krw; } -.#{$fa-css-prefix}-bitcoin:before, -.#{$fa-css-prefix}-btc:before { content: $fa-var-btc; } -.#{$fa-css-prefix}-file:before { content: $fa-var-file; } -.#{$fa-css-prefix}-file-text:before { content: $fa-var-file-text; } -.#{$fa-css-prefix}-sort-alpha-asc:before { content: $fa-var-sort-alpha-asc; } -.#{$fa-css-prefix}-sort-alpha-desc:before { content: $fa-var-sort-alpha-desc; } -.#{$fa-css-prefix}-sort-amount-asc:before { content: $fa-var-sort-amount-asc; } -.#{$fa-css-prefix}-sort-amount-desc:before { content: $fa-var-sort-amount-desc; } -.#{$fa-css-prefix}-sort-numeric-asc:before { content: $fa-var-sort-numeric-asc; } -.#{$fa-css-prefix}-sort-numeric-desc:before { content: $fa-var-sort-numeric-desc; } -.#{$fa-css-prefix}-thumbs-up:before { content: $fa-var-thumbs-up; } -.#{$fa-css-prefix}-thumbs-down:before { content: $fa-var-thumbs-down; } -.#{$fa-css-prefix}-youtube-square:before { content: $fa-var-youtube-square; } -.#{$fa-css-prefix}-youtube:before { content: $fa-var-youtube; } -.#{$fa-css-prefix}-xing:before { content: $fa-var-xing; } -.#{$fa-css-prefix}-xing-square:before { content: $fa-var-xing-square; } -.#{$fa-css-prefix}-youtube-play:before { content: $fa-var-youtube-play; } -.#{$fa-css-prefix}-dropbox:before { content: $fa-var-dropbox; } -.#{$fa-css-prefix}-stack-overflow:before { content: $fa-var-stack-overflow; } -.#{$fa-css-prefix}-instagram:before { content: $fa-var-instagram; } -.#{$fa-css-prefix}-flickr:before { content: $fa-var-flickr; } -.#{$fa-css-prefix}-adn:before { content: $fa-var-adn; } -.#{$fa-css-prefix}-bitbucket:before { content: $fa-var-bitbucket; } -.#{$fa-css-prefix}-bitbucket-square:before { content: $fa-var-bitbucket-square; } -.#{$fa-css-prefix}-tumblr:before { content: $fa-var-tumblr; } -.#{$fa-css-prefix}-tumblr-square:before { content: $fa-var-tumblr-square; } -.#{$fa-css-prefix}-long-arrow-down:before { content: $fa-var-long-arrow-down; } -.#{$fa-css-prefix}-long-arrow-up:before { content: $fa-var-long-arrow-up; } -.#{$fa-css-prefix}-long-arrow-left:before { content: $fa-var-long-arrow-left; } -.#{$fa-css-prefix}-long-arrow-right:before { content: $fa-var-long-arrow-right; } -.#{$fa-css-prefix}-apple:before { content: $fa-var-apple; } -.#{$fa-css-prefix}-windows:before { content: $fa-var-windows; } -.#{$fa-css-prefix}-android:before { content: $fa-var-android; } -.#{$fa-css-prefix}-linux:before { content: $fa-var-linux; } -.#{$fa-css-prefix}-dribbble:before { content: $fa-var-dribbble; } -.#{$fa-css-prefix}-skype:before { content: $fa-var-skype; } -.#{$fa-css-prefix}-foursquare:before { content: $fa-var-foursquare; } -.#{$fa-css-prefix}-trello:before { content: $fa-var-trello; } -.#{$fa-css-prefix}-female:before { content: $fa-var-female; } -.#{$fa-css-prefix}-male:before { content: $fa-var-male; } -.#{$fa-css-prefix}-gittip:before, -.#{$fa-css-prefix}-gratipay:before { content: $fa-var-gratipay; } -.#{$fa-css-prefix}-sun-o:before { content: $fa-var-sun-o; } -.#{$fa-css-prefix}-moon-o:before { content: $fa-var-moon-o; } -.#{$fa-css-prefix}-archive:before { content: $fa-var-archive; } -.#{$fa-css-prefix}-bug:before { content: $fa-var-bug; } -.#{$fa-css-prefix}-vk:before { content: $fa-var-vk; } -.#{$fa-css-prefix}-weibo:before { content: $fa-var-weibo; } -.#{$fa-css-prefix}-renren:before { content: $fa-var-renren; } -.#{$fa-css-prefix}-pagelines:before { content: $fa-var-pagelines; } -.#{$fa-css-prefix}-stack-exchange:before { content: $fa-var-stack-exchange; } -.#{$fa-css-prefix}-arrow-circle-o-right:before { content: $fa-var-arrow-circle-o-right; } -.#{$fa-css-prefix}-arrow-circle-o-left:before { content: $fa-var-arrow-circle-o-left; } -.#{$fa-css-prefix}-toggle-left:before, -.#{$fa-css-prefix}-caret-square-o-left:before { content: $fa-var-caret-square-o-left; } -.#{$fa-css-prefix}-dot-circle-o:before { content: $fa-var-dot-circle-o; } -.#{$fa-css-prefix}-wheelchair:before { content: $fa-var-wheelchair; } -.#{$fa-css-prefix}-vimeo-square:before { content: $fa-var-vimeo-square; } -.#{$fa-css-prefix}-turkish-lira:before, -.#{$fa-css-prefix}-try:before { content: $fa-var-try; } -.#{$fa-css-prefix}-plus-square-o:before { content: $fa-var-plus-square-o; } -.#{$fa-css-prefix}-space-shuttle:before { content: $fa-var-space-shuttle; } -.#{$fa-css-prefix}-slack:before { content: $fa-var-slack; } -.#{$fa-css-prefix}-envelope-square:before { content: $fa-var-envelope-square; } -.#{$fa-css-prefix}-wordpress:before { content: $fa-var-wordpress; } -.#{$fa-css-prefix}-openid:before { content: $fa-var-openid; } -.#{$fa-css-prefix}-institution:before, -.#{$fa-css-prefix}-bank:before, -.#{$fa-css-prefix}-university:before { content: $fa-var-university; } -.#{$fa-css-prefix}-mortar-board:before, -.#{$fa-css-prefix}-graduation-cap:before { content: $fa-var-graduation-cap; } -.#{$fa-css-prefix}-yahoo:before { content: $fa-var-yahoo; } -.#{$fa-css-prefix}-google:before { content: $fa-var-google; } -.#{$fa-css-prefix}-reddit:before { content: $fa-var-reddit; } -.#{$fa-css-prefix}-reddit-square:before { content: $fa-var-reddit-square; } -.#{$fa-css-prefix}-stumbleupon-circle:before { content: $fa-var-stumbleupon-circle; } -.#{$fa-css-prefix}-stumbleupon:before { content: $fa-var-stumbleupon; } -.#{$fa-css-prefix}-delicious:before { content: $fa-var-delicious; } -.#{$fa-css-prefix}-digg:before { content: $fa-var-digg; } -.#{$fa-css-prefix}-pied-piper:before { content: $fa-var-pied-piper; } -.#{$fa-css-prefix}-pied-piper-alt:before { content: $fa-var-pied-piper-alt; } -.#{$fa-css-prefix}-drupal:before { content: $fa-var-drupal; } -.#{$fa-css-prefix}-joomla:before { content: $fa-var-joomla; } -.#{$fa-css-prefix}-language:before { content: $fa-var-language; } -.#{$fa-css-prefix}-fax:before { content: $fa-var-fax; } -.#{$fa-css-prefix}-building:before { content: $fa-var-building; } -.#{$fa-css-prefix}-child:before { content: $fa-var-child; } -.#{$fa-css-prefix}-paw:before { content: $fa-var-paw; } -.#{$fa-css-prefix}-spoon:before { content: $fa-var-spoon; } -.#{$fa-css-prefix}-cube:before { content: $fa-var-cube; } -.#{$fa-css-prefix}-cubes:before { content: $fa-var-cubes; } -.#{$fa-css-prefix}-behance:before { content: $fa-var-behance; } -.#{$fa-css-prefix}-behance-square:before { content: $fa-var-behance-square; } -.#{$fa-css-prefix}-steam:before { content: $fa-var-steam; } -.#{$fa-css-prefix}-steam-square:before { content: $fa-var-steam-square; } -.#{$fa-css-prefix}-recycle:before { content: $fa-var-recycle; } -.#{$fa-css-prefix}-automobile:before, -.#{$fa-css-prefix}-car:before { content: $fa-var-car; } -.#{$fa-css-prefix}-cab:before, -.#{$fa-css-prefix}-taxi:before { content: $fa-var-taxi; } -.#{$fa-css-prefix}-tree:before { content: $fa-var-tree; } -.#{$fa-css-prefix}-spotify:before { content: $fa-var-spotify; } -.#{$fa-css-prefix}-deviantart:before { content: $fa-var-deviantart; } -.#{$fa-css-prefix}-soundcloud:before { content: $fa-var-soundcloud; } -.#{$fa-css-prefix}-database:before { content: $fa-var-database; } -.#{$fa-css-prefix}-file-pdf-o:before { content: $fa-var-file-pdf-o; } -.#{$fa-css-prefix}-file-word-o:before { content: $fa-var-file-word-o; } -.#{$fa-css-prefix}-file-excel-o:before { content: $fa-var-file-excel-o; } -.#{$fa-css-prefix}-file-powerpoint-o:before { content: $fa-var-file-powerpoint-o; } -.#{$fa-css-prefix}-file-photo-o:before, -.#{$fa-css-prefix}-file-picture-o:before, -.#{$fa-css-prefix}-file-image-o:before { content: $fa-var-file-image-o; } -.#{$fa-css-prefix}-file-zip-o:before, -.#{$fa-css-prefix}-file-archive-o:before { content: $fa-var-file-archive-o; } -.#{$fa-css-prefix}-file-sound-o:before, -.#{$fa-css-prefix}-file-audio-o:before { content: $fa-var-file-audio-o; } -.#{$fa-css-prefix}-file-movie-o:before, -.#{$fa-css-prefix}-file-video-o:before { content: $fa-var-file-video-o; } -.#{$fa-css-prefix}-file-code-o:before { content: $fa-var-file-code-o; } -.#{$fa-css-prefix}-vine:before { content: $fa-var-vine; } -.#{$fa-css-prefix}-codepen:before { content: $fa-var-codepen; } -.#{$fa-css-prefix}-jsfiddle:before { content: $fa-var-jsfiddle; } -.#{$fa-css-prefix}-life-bouy:before, -.#{$fa-css-prefix}-life-buoy:before, -.#{$fa-css-prefix}-life-saver:before, -.#{$fa-css-prefix}-support:before, -.#{$fa-css-prefix}-life-ring:before { content: $fa-var-life-ring; } -.#{$fa-css-prefix}-circle-o-notch:before { content: $fa-var-circle-o-notch; } -.#{$fa-css-prefix}-ra:before, -.#{$fa-css-prefix}-rebel:before { content: $fa-var-rebel; } -.#{$fa-css-prefix}-ge:before, -.#{$fa-css-prefix}-empire:before { content: $fa-var-empire; } -.#{$fa-css-prefix}-git-square:before { content: $fa-var-git-square; } -.#{$fa-css-prefix}-git:before { content: $fa-var-git; } -.#{$fa-css-prefix}-hacker-news:before { content: $fa-var-hacker-news; } -.#{$fa-css-prefix}-tencent-weibo:before { content: $fa-var-tencent-weibo; } -.#{$fa-css-prefix}-qq:before { content: $fa-var-qq; } -.#{$fa-css-prefix}-wechat:before, -.#{$fa-css-prefix}-weixin:before { content: $fa-var-weixin; } -.#{$fa-css-prefix}-send:before, -.#{$fa-css-prefix}-paper-plane:before { content: $fa-var-paper-plane; } -.#{$fa-css-prefix}-send-o:before, -.#{$fa-css-prefix}-paper-plane-o:before { content: $fa-var-paper-plane-o; } -.#{$fa-css-prefix}-history:before { content: $fa-var-history; } -.#{$fa-css-prefix}-genderless:before, -.#{$fa-css-prefix}-circle-thin:before { content: $fa-var-circle-thin; } -.#{$fa-css-prefix}-header:before { content: $fa-var-header; } -.#{$fa-css-prefix}-paragraph:before { content: $fa-var-paragraph; } -.#{$fa-css-prefix}-sliders:before { content: $fa-var-sliders; } -.#{$fa-css-prefix}-share-alt:before { content: $fa-var-share-alt; } -.#{$fa-css-prefix}-share-alt-square:before { content: $fa-var-share-alt-square; } -.#{$fa-css-prefix}-bomb:before { content: $fa-var-bomb; } -.#{$fa-css-prefix}-soccer-ball-o:before, -.#{$fa-css-prefix}-futbol-o:before { content: $fa-var-futbol-o; } -.#{$fa-css-prefix}-tty:before { content: $fa-var-tty; } -.#{$fa-css-prefix}-binoculars:before { content: $fa-var-binoculars; } -.#{$fa-css-prefix}-plug:before { content: $fa-var-plug; } -.#{$fa-css-prefix}-slideshare:before { content: $fa-var-slideshare; } -.#{$fa-css-prefix}-twitch:before { content: $fa-var-twitch; } -.#{$fa-css-prefix}-yelp:before { content: $fa-var-yelp; } -.#{$fa-css-prefix}-newspaper-o:before { content: $fa-var-newspaper-o; } -.#{$fa-css-prefix}-wifi:before { content: $fa-var-wifi; } -.#{$fa-css-prefix}-calculator:before { content: $fa-var-calculator; } -.#{$fa-css-prefix}-paypal:before { content: $fa-var-paypal; } -.#{$fa-css-prefix}-google-wallet:before { content: $fa-var-google-wallet; } -.#{$fa-css-prefix}-cc-visa:before { content: $fa-var-cc-visa; } -.#{$fa-css-prefix}-cc-mastercard:before { content: $fa-var-cc-mastercard; } -.#{$fa-css-prefix}-cc-discover:before { content: $fa-var-cc-discover; } -.#{$fa-css-prefix}-cc-amex:before { content: $fa-var-cc-amex; } -.#{$fa-css-prefix}-cc-paypal:before { content: $fa-var-cc-paypal; } -.#{$fa-css-prefix}-cc-stripe:before { content: $fa-var-cc-stripe; } -.#{$fa-css-prefix}-bell-slash:before { content: $fa-var-bell-slash; } -.#{$fa-css-prefix}-bell-slash-o:before { content: $fa-var-bell-slash-o; } -.#{$fa-css-prefix}-trash:before { content: $fa-var-trash; } -.#{$fa-css-prefix}-copyright:before { content: $fa-var-copyright; } -.#{$fa-css-prefix}-at:before { content: $fa-var-at; } -.#{$fa-css-prefix}-eyedropper:before { content: $fa-var-eyedropper; } -.#{$fa-css-prefix}-paint-brush:before { content: $fa-var-paint-brush; } -.#{$fa-css-prefix}-birthday-cake:before { content: $fa-var-birthday-cake; } -.#{$fa-css-prefix}-area-chart:before { content: $fa-var-area-chart; } -.#{$fa-css-prefix}-pie-chart:before { content: $fa-var-pie-chart; } -.#{$fa-css-prefix}-line-chart:before { content: $fa-var-line-chart; } -.#{$fa-css-prefix}-lastfm:before { content: $fa-var-lastfm; } -.#{$fa-css-prefix}-lastfm-square:before { content: $fa-var-lastfm-square; } -.#{$fa-css-prefix}-toggle-off:before { content: $fa-var-toggle-off; } -.#{$fa-css-prefix}-toggle-on:before { content: $fa-var-toggle-on; } -.#{$fa-css-prefix}-bicycle:before { content: $fa-var-bicycle; } -.#{$fa-css-prefix}-bus:before { content: $fa-var-bus; } -.#{$fa-css-prefix}-ioxhost:before { content: $fa-var-ioxhost; } -.#{$fa-css-prefix}-angellist:before { content: $fa-var-angellist; } -.#{$fa-css-prefix}-cc:before { content: $fa-var-cc; } -.#{$fa-css-prefix}-shekel:before, -.#{$fa-css-prefix}-sheqel:before, -.#{$fa-css-prefix}-ils:before { content: $fa-var-ils; } -.#{$fa-css-prefix}-meanpath:before { content: $fa-var-meanpath; } -.#{$fa-css-prefix}-buysellads:before { content: $fa-var-buysellads; } -.#{$fa-css-prefix}-connectdevelop:before { content: $fa-var-connectdevelop; } -.#{$fa-css-prefix}-dashcube:before { content: $fa-var-dashcube; } -.#{$fa-css-prefix}-forumbee:before { content: $fa-var-forumbee; } -.#{$fa-css-prefix}-leanpub:before { content: $fa-var-leanpub; } -.#{$fa-css-prefix}-sellsy:before { content: $fa-var-sellsy; } -.#{$fa-css-prefix}-shirtsinbulk:before { content: $fa-var-shirtsinbulk; } -.#{$fa-css-prefix}-simplybuilt:before { content: $fa-var-simplybuilt; } -.#{$fa-css-prefix}-skyatlas:before { content: $fa-var-skyatlas; } -.#{$fa-css-prefix}-cart-plus:before { content: $fa-var-cart-plus; } -.#{$fa-css-prefix}-cart-arrow-down:before { content: $fa-var-cart-arrow-down; } -.#{$fa-css-prefix}-diamond:before { content: $fa-var-diamond; } -.#{$fa-css-prefix}-ship:before { content: $fa-var-ship; } -.#{$fa-css-prefix}-user-secret:before { content: $fa-var-user-secret; } -.#{$fa-css-prefix}-motorcycle:before { content: $fa-var-motorcycle; } -.#{$fa-css-prefix}-street-view:before { content: $fa-var-street-view; } -.#{$fa-css-prefix}-heartbeat:before { content: $fa-var-heartbeat; } -.#{$fa-css-prefix}-venus:before { content: $fa-var-venus; } -.#{$fa-css-prefix}-mars:before { content: $fa-var-mars; } -.#{$fa-css-prefix}-mercury:before { content: $fa-var-mercury; } -.#{$fa-css-prefix}-transgender:before { content: $fa-var-transgender; } -.#{$fa-css-prefix}-transgender-alt:before { content: $fa-var-transgender-alt; } -.#{$fa-css-prefix}-venus-double:before { content: $fa-var-venus-double; } -.#{$fa-css-prefix}-mars-double:before { content: $fa-var-mars-double; } -.#{$fa-css-prefix}-venus-mars:before { content: $fa-var-venus-mars; } -.#{$fa-css-prefix}-mars-stroke:before { content: $fa-var-mars-stroke; } -.#{$fa-css-prefix}-mars-stroke-v:before { content: $fa-var-mars-stroke-v; } -.#{$fa-css-prefix}-mars-stroke-h:before { content: $fa-var-mars-stroke-h; } -.#{$fa-css-prefix}-neuter:before { content: $fa-var-neuter; } -.#{$fa-css-prefix}-facebook-official:before { content: $fa-var-facebook-official; } -.#{$fa-css-prefix}-pinterest-p:before { content: $fa-var-pinterest-p; } -.#{$fa-css-prefix}-whatsapp:before { content: $fa-var-whatsapp; } -.#{$fa-css-prefix}-server:before { content: $fa-var-server; } -.#{$fa-css-prefix}-user-plus:before { content: $fa-var-user-plus; } -.#{$fa-css-prefix}-user-times:before { content: $fa-var-user-times; } -.#{$fa-css-prefix}-hotel:before, -.#{$fa-css-prefix}-bed:before { content: $fa-var-bed; } -.#{$fa-css-prefix}-viacoin:before { content: $fa-var-viacoin; } -.#{$fa-css-prefix}-train:before { content: $fa-var-train; } -.#{$fa-css-prefix}-subway:before { content: $fa-var-subway; } -.#{$fa-css-prefix}-medium:before { content: $fa-var-medium; } diff --git a/assets/font-awesome/scss/_larger.scss b/assets/font-awesome/scss/_larger.scss deleted file mode 100644 index 41e9a818..00000000 --- a/assets/font-awesome/scss/_larger.scss +++ /dev/null @@ -1,13 +0,0 @@ -// Icon Sizes -// ------------------------- - -/* makes the font 33% larger relative to the icon container */ -.#{$fa-css-prefix}-lg { - font-size: (4em / 3); - line-height: (3em / 4); - vertical-align: -15%; -} -.#{$fa-css-prefix}-2x { font-size: 2em; } -.#{$fa-css-prefix}-3x { font-size: 3em; } -.#{$fa-css-prefix}-4x { font-size: 4em; } -.#{$fa-css-prefix}-5x { font-size: 5em; } diff --git a/assets/font-awesome/scss/_list.scss b/assets/font-awesome/scss/_list.scss deleted file mode 100644 index 7d1e4d54..00000000 --- a/assets/font-awesome/scss/_list.scss +++ /dev/null @@ -1,19 +0,0 @@ -// List Icons -// ------------------------- - -.#{$fa-css-prefix}-ul { - padding-left: 0; - margin-left: $fa-li-width; - list-style-type: none; - > li { position: relative; } -} -.#{$fa-css-prefix}-li { - position: absolute; - left: -$fa-li-width; - width: $fa-li-width; - top: (2em / 14); - text-align: center; - &.#{$fa-css-prefix}-lg { - left: -$fa-li-width + (4em / 14); - } -} diff --git a/assets/font-awesome/scss/_mixins.scss b/assets/font-awesome/scss/_mixins.scss deleted file mode 100644 index 6b7f1609..00000000 --- a/assets/font-awesome/scss/_mixins.scss +++ /dev/null @@ -1,27 +0,0 @@ -// Mixins -// -------------------------- - -@mixin fa-icon() { - display: inline-block; - font: normal normal normal #{$fa-font-size-base}/1 FontAwesome; // shortening font declaration - font-size: inherit; // can't have font-size inherit on line above, so need to override - text-rendering: auto; // optimizelegibility throws things off #1094 - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - transform: translate(0, 0); // ensures no half-pixel rendering in firefox - -} - -@mixin fa-icon-rotate($degrees, $rotation) { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}); - -webkit-transform: rotate($degrees); - -ms-transform: rotate($degrees); - transform: rotate($degrees); -} - -@mixin fa-icon-flip($horiz, $vert, $rotation) { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}); - -webkit-transform: scale($horiz, $vert); - -ms-transform: scale($horiz, $vert); - transform: scale($horiz, $vert); -} diff --git a/assets/font-awesome/scss/_path.scss b/assets/font-awesome/scss/_path.scss deleted file mode 100644 index bb457c23..00000000 --- a/assets/font-awesome/scss/_path.scss +++ /dev/null @@ -1,15 +0,0 @@ -/* FONT PATH - * -------------------------- */ - -@font-face { - font-family: 'FontAwesome'; - src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}'); - src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'), - url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'), - url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'), - url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'), - url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg'); -// src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts - font-weight: normal; - font-style: normal; -} diff --git a/assets/font-awesome/scss/_rotated-flipped.scss b/assets/font-awesome/scss/_rotated-flipped.scss deleted file mode 100644 index a3558fd0..00000000 --- a/assets/font-awesome/scss/_rotated-flipped.scss +++ /dev/null @@ -1,20 +0,0 @@ -// Rotated & Flipped Icons -// ------------------------- - -.#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); } -.#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); } -.#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); } - -.#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } -.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } - -// Hook for IE8-9 -// ------------------------- - -:root .#{$fa-css-prefix}-rotate-90, -:root .#{$fa-css-prefix}-rotate-180, -:root .#{$fa-css-prefix}-rotate-270, -:root .#{$fa-css-prefix}-flip-horizontal, -:root .#{$fa-css-prefix}-flip-vertical { - filter: none; -} diff --git a/assets/font-awesome/scss/_spinning.scss b/assets/font-awesome/scss/_spinning.scss deleted file mode 100644 index 002c5d5c..00000000 --- a/assets/font-awesome/scss/_spinning.scss +++ /dev/null @@ -1,29 +0,0 @@ -// Spinning Icons -// -------------------------- - -.#{$fa-css-prefix}-spin { - -webkit-animation: fa-spin 2s infinite linear; - animation: fa-spin 2s infinite linear; -} - -@-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} - -@keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} diff --git a/assets/font-awesome/scss/_stacked.scss b/assets/font-awesome/scss/_stacked.scss deleted file mode 100644 index aef74036..00000000 --- a/assets/font-awesome/scss/_stacked.scss +++ /dev/null @@ -1,20 +0,0 @@ -// Stacked Icons -// ------------------------- - -.#{$fa-css-prefix}-stack { - position: relative; - display: inline-block; - width: 2em; - height: 2em; - line-height: 2em; - vertical-align: middle; -} -.#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x { - position: absolute; - left: 0; - width: 100%; - text-align: center; -} -.#{$fa-css-prefix}-stack-1x { line-height: inherit; } -.#{$fa-css-prefix}-stack-2x { font-size: 2em; } -.#{$fa-css-prefix}-inverse { color: $fa-inverse; } diff --git a/assets/font-awesome/scss/_variables.scss b/assets/font-awesome/scss/_variables.scss deleted file mode 100644 index 9b7210e2..00000000 --- a/assets/font-awesome/scss/_variables.scss +++ /dev/null @@ -1,606 +0,0 @@ -// Variables -// -------------------------- - -$fa-font-path: "../fonts" !default; -$fa-font-size-base: 14px !default; -//$fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.3.0/fonts" !default; // for referencing Bootstrap CDN font files directly -$fa-css-prefix: fa !default; -$fa-version: "4.3.0" !default; -$fa-border-color: #eee !default; -$fa-inverse: #fff !default; -$fa-li-width: (30em / 14) !default; - -$fa-var-adjust: "\f042"; -$fa-var-adn: "\f170"; -$fa-var-align-center: "\f037"; -$fa-var-align-justify: "\f039"; -$fa-var-align-left: "\f036"; -$fa-var-align-right: "\f038"; -$fa-var-ambulance: "\f0f9"; -$fa-var-anchor: "\f13d"; -$fa-var-android: "\f17b"; -$fa-var-angellist: "\f209"; -$fa-var-angle-double-down: "\f103"; -$fa-var-angle-double-left: "\f100"; -$fa-var-angle-double-right: "\f101"; -$fa-var-angle-double-up: "\f102"; -$fa-var-angle-down: "\f107"; -$fa-var-angle-left: "\f104"; -$fa-var-angle-right: "\f105"; -$fa-var-angle-up: "\f106"; -$fa-var-apple: "\f179"; -$fa-var-archive: "\f187"; -$fa-var-area-chart: "\f1fe"; -$fa-var-arrow-circle-down: "\f0ab"; -$fa-var-arrow-circle-left: "\f0a8"; -$fa-var-arrow-circle-o-down: "\f01a"; -$fa-var-arrow-circle-o-left: "\f190"; -$fa-var-arrow-circle-o-right: "\f18e"; -$fa-var-arrow-circle-o-up: "\f01b"; -$fa-var-arrow-circle-right: "\f0a9"; -$fa-var-arrow-circle-up: "\f0aa"; -$fa-var-arrow-down: "\f063"; -$fa-var-arrow-left: "\f060"; -$fa-var-arrow-right: "\f061"; -$fa-var-arrow-up: "\f062"; -$fa-var-arrows: "\f047"; -$fa-var-arrows-alt: "\f0b2"; -$fa-var-arrows-h: "\f07e"; -$fa-var-arrows-v: "\f07d"; -$fa-var-asterisk: "\f069"; -$fa-var-at: "\f1fa"; -$fa-var-automobile: "\f1b9"; -$fa-var-backward: "\f04a"; -$fa-var-ban: "\f05e"; -$fa-var-bank: "\f19c"; -$fa-var-bar-chart: "\f080"; -$fa-var-bar-chart-o: "\f080"; -$fa-var-barcode: "\f02a"; -$fa-var-bars: "\f0c9"; -$fa-var-bed: "\f236"; -$fa-var-beer: "\f0fc"; -$fa-var-behance: "\f1b4"; -$fa-var-behance-square: "\f1b5"; -$fa-var-bell: "\f0f3"; -$fa-var-bell-o: "\f0a2"; -$fa-var-bell-slash: "\f1f6"; -$fa-var-bell-slash-o: "\f1f7"; -$fa-var-bicycle: "\f206"; -$fa-var-binoculars: "\f1e5"; -$fa-var-birthday-cake: "\f1fd"; -$fa-var-bitbucket: "\f171"; -$fa-var-bitbucket-square: "\f172"; -$fa-var-bitcoin: "\f15a"; -$fa-var-bold: "\f032"; -$fa-var-bolt: "\f0e7"; -$fa-var-bomb: "\f1e2"; -$fa-var-book: "\f02d"; -$fa-var-bookmark: "\f02e"; -$fa-var-bookmark-o: "\f097"; -$fa-var-briefcase: "\f0b1"; -$fa-var-btc: "\f15a"; -$fa-var-bug: "\f188"; -$fa-var-building: "\f1ad"; -$fa-var-building-o: "\f0f7"; -$fa-var-bullhorn: "\f0a1"; -$fa-var-bullseye: "\f140"; -$fa-var-bus: "\f207"; -$fa-var-buysellads: "\f20d"; -$fa-var-cab: "\f1ba"; -$fa-var-calculator: "\f1ec"; -$fa-var-calendar: "\f073"; -$fa-var-calendar-o: "\f133"; -$fa-var-camera: "\f030"; -$fa-var-camera-retro: "\f083"; -$fa-var-car: "\f1b9"; -$fa-var-caret-down: "\f0d7"; -$fa-var-caret-left: "\f0d9"; -$fa-var-caret-right: "\f0da"; -$fa-var-caret-square-o-down: "\f150"; -$fa-var-caret-square-o-left: "\f191"; -$fa-var-caret-square-o-right: "\f152"; -$fa-var-caret-square-o-up: "\f151"; -$fa-var-caret-up: "\f0d8"; -$fa-var-cart-arrow-down: "\f218"; -$fa-var-cart-plus: "\f217"; -$fa-var-cc: "\f20a"; -$fa-var-cc-amex: "\f1f3"; -$fa-var-cc-discover: "\f1f2"; -$fa-var-cc-mastercard: "\f1f1"; -$fa-var-cc-paypal: "\f1f4"; -$fa-var-cc-stripe: "\f1f5"; -$fa-var-cc-visa: "\f1f0"; -$fa-var-certificate: "\f0a3"; -$fa-var-chain: "\f0c1"; -$fa-var-chain-broken: "\f127"; -$fa-var-check: "\f00c"; -$fa-var-check-circle: "\f058"; -$fa-var-check-circle-o: "\f05d"; -$fa-var-check-square: "\f14a"; -$fa-var-check-square-o: "\f046"; -$fa-var-chevron-circle-down: "\f13a"; -$fa-var-chevron-circle-left: "\f137"; -$fa-var-chevron-circle-right: "\f138"; -$fa-var-chevron-circle-up: "\f139"; -$fa-var-chevron-down: "\f078"; -$fa-var-chevron-left: "\f053"; -$fa-var-chevron-right: "\f054"; -$fa-var-chevron-up: "\f077"; -$fa-var-child: "\f1ae"; -$fa-var-circle: "\f111"; -$fa-var-circle-o: "\f10c"; -$fa-var-circle-o-notch: "\f1ce"; -$fa-var-circle-thin: "\f1db"; -$fa-var-clipboard: "\f0ea"; -$fa-var-clock-o: "\f017"; -$fa-var-close: "\f00d"; -$fa-var-cloud: "\f0c2"; -$fa-var-cloud-download: "\f0ed"; -$fa-var-cloud-upload: "\f0ee"; -$fa-var-cny: "\f157"; -$fa-var-code: "\f121"; -$fa-var-code-fork: "\f126"; -$fa-var-codepen: "\f1cb"; -$fa-var-coffee: "\f0f4"; -$fa-var-cog: "\f013"; -$fa-var-cogs: "\f085"; -$fa-var-columns: "\f0db"; -$fa-var-comment: "\f075"; -$fa-var-comment-o: "\f0e5"; -$fa-var-comments: "\f086"; -$fa-var-comments-o: "\f0e6"; -$fa-var-compass: "\f14e"; -$fa-var-compress: "\f066"; -$fa-var-connectdevelop: "\f20e"; -$fa-var-copy: "\f0c5"; -$fa-var-copyright: "\f1f9"; -$fa-var-credit-card: "\f09d"; -$fa-var-crop: "\f125"; -$fa-var-crosshairs: "\f05b"; -$fa-var-css3: "\f13c"; -$fa-var-cube: "\f1b2"; -$fa-var-cubes: "\f1b3"; -$fa-var-cut: "\f0c4"; -$fa-var-cutlery: "\f0f5"; -$fa-var-dashboard: "\f0e4"; -$fa-var-dashcube: "\f210"; -$fa-var-database: "\f1c0"; -$fa-var-dedent: "\f03b"; -$fa-var-delicious: "\f1a5"; -$fa-var-desktop: "\f108"; -$fa-var-deviantart: "\f1bd"; -$fa-var-diamond: "\f219"; -$fa-var-digg: "\f1a6"; -$fa-var-dollar: "\f155"; -$fa-var-dot-circle-o: "\f192"; -$fa-var-download: "\f019"; -$fa-var-dribbble: "\f17d"; -$fa-var-dropbox: "\f16b"; -$fa-var-drupal: "\f1a9"; -$fa-var-edit: "\f044"; -$fa-var-eject: "\f052"; -$fa-var-ellipsis-h: "\f141"; -$fa-var-ellipsis-v: "\f142"; -$fa-var-empire: "\f1d1"; -$fa-var-envelope: "\f0e0"; -$fa-var-envelope-o: "\f003"; -$fa-var-envelope-square: "\f199"; -$fa-var-eraser: "\f12d"; -$fa-var-eur: "\f153"; -$fa-var-euro: "\f153"; -$fa-var-exchange: "\f0ec"; -$fa-var-exclamation: "\f12a"; -$fa-var-exclamation-circle: "\f06a"; -$fa-var-exclamation-triangle: "\f071"; -$fa-var-expand: "\f065"; -$fa-var-external-link: "\f08e"; -$fa-var-external-link-square: "\f14c"; -$fa-var-eye: "\f06e"; -$fa-var-eye-slash: "\f070"; -$fa-var-eyedropper: "\f1fb"; -$fa-var-facebook: "\f09a"; -$fa-var-facebook-f: "\f09a"; -$fa-var-facebook-official: "\f230"; -$fa-var-facebook-square: "\f082"; -$fa-var-fast-backward: "\f049"; -$fa-var-fast-forward: "\f050"; -$fa-var-fax: "\f1ac"; -$fa-var-female: "\f182"; -$fa-var-fighter-jet: "\f0fb"; -$fa-var-file: "\f15b"; -$fa-var-file-archive-o: "\f1c6"; -$fa-var-file-audio-o: "\f1c7"; -$fa-var-file-code-o: "\f1c9"; -$fa-var-file-excel-o: "\f1c3"; -$fa-var-file-image-o: "\f1c5"; -$fa-var-file-movie-o: "\f1c8"; -$fa-var-file-o: "\f016"; -$fa-var-file-pdf-o: "\f1c1"; -$fa-var-file-photo-o: "\f1c5"; -$fa-var-file-picture-o: "\f1c5"; -$fa-var-file-powerpoint-o: "\f1c4"; -$fa-var-file-sound-o: "\f1c7"; -$fa-var-file-text: "\f15c"; -$fa-var-file-text-o: "\f0f6"; -$fa-var-file-video-o: "\f1c8"; -$fa-var-file-word-o: "\f1c2"; -$fa-var-file-zip-o: "\f1c6"; -$fa-var-files-o: "\f0c5"; -$fa-var-film: "\f008"; -$fa-var-filter: "\f0b0"; -$fa-var-fire: "\f06d"; -$fa-var-fire-extinguisher: "\f134"; -$fa-var-flag: "\f024"; -$fa-var-flag-checkered: "\f11e"; -$fa-var-flag-o: "\f11d"; -$fa-var-flash: "\f0e7"; -$fa-var-flask: "\f0c3"; -$fa-var-flickr: "\f16e"; -$fa-var-floppy-o: "\f0c7"; -$fa-var-folder: "\f07b"; -$fa-var-folder-o: "\f114"; -$fa-var-folder-open: "\f07c"; -$fa-var-folder-open-o: "\f115"; -$fa-var-font: "\f031"; -$fa-var-forumbee: "\f211"; -$fa-var-forward: "\f04e"; -$fa-var-foursquare: "\f180"; -$fa-var-frown-o: "\f119"; -$fa-var-futbol-o: "\f1e3"; -$fa-var-gamepad: "\f11b"; -$fa-var-gavel: "\f0e3"; -$fa-var-gbp: "\f154"; -$fa-var-ge: "\f1d1"; -$fa-var-gear: "\f013"; -$fa-var-gears: "\f085"; -$fa-var-genderless: "\f1db"; -$fa-var-gift: "\f06b"; -$fa-var-git: "\f1d3"; -$fa-var-git-square: "\f1d2"; -$fa-var-github: "\f09b"; -$fa-var-github-alt: "\f113"; -$fa-var-github-square: "\f092"; -$fa-var-gittip: "\f184"; -$fa-var-glass: "\f000"; -$fa-var-globe: "\f0ac"; -$fa-var-google: "\f1a0"; -$fa-var-google-plus: "\f0d5"; -$fa-var-google-plus-square: "\f0d4"; -$fa-var-google-wallet: "\f1ee"; -$fa-var-graduation-cap: "\f19d"; -$fa-var-gratipay: "\f184"; -$fa-var-group: "\f0c0"; -$fa-var-h-square: "\f0fd"; -$fa-var-hacker-news: "\f1d4"; -$fa-var-hand-o-down: "\f0a7"; -$fa-var-hand-o-left: "\f0a5"; -$fa-var-hand-o-right: "\f0a4"; -$fa-var-hand-o-up: "\f0a6"; -$fa-var-hdd-o: "\f0a0"; -$fa-var-header: "\f1dc"; -$fa-var-headphones: "\f025"; -$fa-var-heart: "\f004"; -$fa-var-heart-o: "\f08a"; -$fa-var-heartbeat: "\f21e"; -$fa-var-history: "\f1da"; -$fa-var-home: "\f015"; -$fa-var-hospital-o: "\f0f8"; -$fa-var-hotel: "\f236"; -$fa-var-html5: "\f13b"; -$fa-var-ils: "\f20b"; -$fa-var-image: "\f03e"; -$fa-var-inbox: "\f01c"; -$fa-var-indent: "\f03c"; -$fa-var-info: "\f129"; -$fa-var-info-circle: "\f05a"; -$fa-var-inr: "\f156"; -$fa-var-instagram: "\f16d"; -$fa-var-institution: "\f19c"; -$fa-var-ioxhost: "\f208"; -$fa-var-italic: "\f033"; -$fa-var-joomla: "\f1aa"; -$fa-var-jpy: "\f157"; -$fa-var-jsfiddle: "\f1cc"; -$fa-var-key: "\f084"; -$fa-var-keyboard-o: "\f11c"; -$fa-var-krw: "\f159"; -$fa-var-language: "\f1ab"; -$fa-var-laptop: "\f109"; -$fa-var-lastfm: "\f202"; -$fa-var-lastfm-square: "\f203"; -$fa-var-leaf: "\f06c"; -$fa-var-leanpub: "\f212"; -$fa-var-legal: "\f0e3"; -$fa-var-lemon-o: "\f094"; -$fa-var-level-down: "\f149"; -$fa-var-level-up: "\f148"; -$fa-var-life-bouy: "\f1cd"; -$fa-var-life-buoy: "\f1cd"; -$fa-var-life-ring: "\f1cd"; -$fa-var-life-saver: "\f1cd"; -$fa-var-lightbulb-o: "\f0eb"; -$fa-var-line-chart: "\f201"; -$fa-var-link: "\f0c1"; -$fa-var-linkedin: "\f0e1"; -$fa-var-linkedin-square: "\f08c"; -$fa-var-linux: "\f17c"; -$fa-var-list: "\f03a"; -$fa-var-list-alt: "\f022"; -$fa-var-list-ol: "\f0cb"; -$fa-var-list-ul: "\f0ca"; -$fa-var-location-arrow: "\f124"; -$fa-var-lock: "\f023"; -$fa-var-long-arrow-down: "\f175"; -$fa-var-long-arrow-left: "\f177"; -$fa-var-long-arrow-right: "\f178"; -$fa-var-long-arrow-up: "\f176"; -$fa-var-magic: "\f0d0"; -$fa-var-magnet: "\f076"; -$fa-var-mail-forward: "\f064"; -$fa-var-mail-reply: "\f112"; -$fa-var-mail-reply-all: "\f122"; -$fa-var-male: "\f183"; -$fa-var-map-marker: "\f041"; -$fa-var-mars: "\f222"; -$fa-var-mars-double: "\f227"; -$fa-var-mars-stroke: "\f229"; -$fa-var-mars-stroke-h: "\f22b"; -$fa-var-mars-stroke-v: "\f22a"; -$fa-var-maxcdn: "\f136"; -$fa-var-meanpath: "\f20c"; -$fa-var-medium: "\f23a"; -$fa-var-medkit: "\f0fa"; -$fa-var-meh-o: "\f11a"; -$fa-var-mercury: "\f223"; -$fa-var-microphone: "\f130"; -$fa-var-microphone-slash: "\f131"; -$fa-var-minus: "\f068"; -$fa-var-minus-circle: "\f056"; -$fa-var-minus-square: "\f146"; -$fa-var-minus-square-o: "\f147"; -$fa-var-mobile: "\f10b"; -$fa-var-mobile-phone: "\f10b"; -$fa-var-money: "\f0d6"; -$fa-var-moon-o: "\f186"; -$fa-var-mortar-board: "\f19d"; -$fa-var-motorcycle: "\f21c"; -$fa-var-music: "\f001"; -$fa-var-navicon: "\f0c9"; -$fa-var-neuter: "\f22c"; -$fa-var-newspaper-o: "\f1ea"; -$fa-var-openid: "\f19b"; -$fa-var-outdent: "\f03b"; -$fa-var-pagelines: "\f18c"; -$fa-var-paint-brush: "\f1fc"; -$fa-var-paper-plane: "\f1d8"; -$fa-var-paper-plane-o: "\f1d9"; -$fa-var-paperclip: "\f0c6"; -$fa-var-paragraph: "\f1dd"; -$fa-var-paste: "\f0ea"; -$fa-var-pause: "\f04c"; -$fa-var-paw: "\f1b0"; -$fa-var-paypal: "\f1ed"; -$fa-var-pencil: "\f040"; -$fa-var-pencil-square: "\f14b"; -$fa-var-pencil-square-o: "\f044"; -$fa-var-phone: "\f095"; -$fa-var-phone-square: "\f098"; -$fa-var-photo: "\f03e"; -$fa-var-picture-o: "\f03e"; -$fa-var-pie-chart: "\f200"; -$fa-var-pied-piper: "\f1a7"; -$fa-var-pied-piper-alt: "\f1a8"; -$fa-var-pinterest: "\f0d2"; -$fa-var-pinterest-p: "\f231"; -$fa-var-pinterest-square: "\f0d3"; -$fa-var-plane: "\f072"; -$fa-var-play: "\f04b"; -$fa-var-play-circle: "\f144"; -$fa-var-play-circle-o: "\f01d"; -$fa-var-plug: "\f1e6"; -$fa-var-plus: "\f067"; -$fa-var-plus-circle: "\f055"; -$fa-var-plus-square: "\f0fe"; -$fa-var-plus-square-o: "\f196"; -$fa-var-power-off: "\f011"; -$fa-var-print: "\f02f"; -$fa-var-puzzle-piece: "\f12e"; -$fa-var-qq: "\f1d6"; -$fa-var-qrcode: "\f029"; -$fa-var-question: "\f128"; -$fa-var-question-circle: "\f059"; -$fa-var-quote-left: "\f10d"; -$fa-var-quote-right: "\f10e"; -$fa-var-ra: "\f1d0"; -$fa-var-random: "\f074"; -$fa-var-rebel: "\f1d0"; -$fa-var-recycle: "\f1b8"; -$fa-var-reddit: "\f1a1"; -$fa-var-reddit-square: "\f1a2"; -$fa-var-refresh: "\f021"; -$fa-var-remove: "\f00d"; -$fa-var-renren: "\f18b"; -$fa-var-reorder: "\f0c9"; -$fa-var-repeat: "\f01e"; -$fa-var-reply: "\f112"; -$fa-var-reply-all: "\f122"; -$fa-var-retweet: "\f079"; -$fa-var-rmb: "\f157"; -$fa-var-road: "\f018"; -$fa-var-rocket: "\f135"; -$fa-var-rotate-left: "\f0e2"; -$fa-var-rotate-right: "\f01e"; -$fa-var-rouble: "\f158"; -$fa-var-rss: "\f09e"; -$fa-var-rss-square: "\f143"; -$fa-var-rub: "\f158"; -$fa-var-ruble: "\f158"; -$fa-var-rupee: "\f156"; -$fa-var-save: "\f0c7"; -$fa-var-scissors: "\f0c4"; -$fa-var-search: "\f002"; -$fa-var-search-minus: "\f010"; -$fa-var-search-plus: "\f00e"; -$fa-var-sellsy: "\f213"; -$fa-var-send: "\f1d8"; -$fa-var-send-o: "\f1d9"; -$fa-var-server: "\f233"; -$fa-var-share: "\f064"; -$fa-var-share-alt: "\f1e0"; -$fa-var-share-alt-square: "\f1e1"; -$fa-var-share-square: "\f14d"; -$fa-var-share-square-o: "\f045"; -$fa-var-shekel: "\f20b"; -$fa-var-sheqel: "\f20b"; -$fa-var-shield: "\f132"; -$fa-var-ship: "\f21a"; -$fa-var-shirtsinbulk: "\f214"; -$fa-var-shopping-cart: "\f07a"; -$fa-var-sign-in: "\f090"; -$fa-var-sign-out: "\f08b"; -$fa-var-signal: "\f012"; -$fa-var-simplybuilt: "\f215"; -$fa-var-sitemap: "\f0e8"; -$fa-var-skyatlas: "\f216"; -$fa-var-skype: "\f17e"; -$fa-var-slack: "\f198"; -$fa-var-sliders: "\f1de"; -$fa-var-slideshare: "\f1e7"; -$fa-var-smile-o: "\f118"; -$fa-var-soccer-ball-o: "\f1e3"; -$fa-var-sort: "\f0dc"; -$fa-var-sort-alpha-asc: "\f15d"; -$fa-var-sort-alpha-desc: "\f15e"; -$fa-var-sort-amount-asc: "\f160"; -$fa-var-sort-amount-desc: "\f161"; -$fa-var-sort-asc: "\f0de"; -$fa-var-sort-desc: "\f0dd"; -$fa-var-sort-down: "\f0dd"; -$fa-var-sort-numeric-asc: "\f162"; -$fa-var-sort-numeric-desc: "\f163"; -$fa-var-sort-up: "\f0de"; -$fa-var-soundcloud: "\f1be"; -$fa-var-space-shuttle: "\f197"; -$fa-var-spinner: "\f110"; -$fa-var-spoon: "\f1b1"; -$fa-var-spotify: "\f1bc"; -$fa-var-square: "\f0c8"; -$fa-var-square-o: "\f096"; -$fa-var-stack-exchange: "\f18d"; -$fa-var-stack-overflow: "\f16c"; -$fa-var-star: "\f005"; -$fa-var-star-half: "\f089"; -$fa-var-star-half-empty: "\f123"; -$fa-var-star-half-full: "\f123"; -$fa-var-star-half-o: "\f123"; -$fa-var-star-o: "\f006"; -$fa-var-steam: "\f1b6"; -$fa-var-steam-square: "\f1b7"; -$fa-var-step-backward: "\f048"; -$fa-var-step-forward: "\f051"; -$fa-var-stethoscope: "\f0f1"; -$fa-var-stop: "\f04d"; -$fa-var-street-view: "\f21d"; -$fa-var-strikethrough: "\f0cc"; -$fa-var-stumbleupon: "\f1a4"; -$fa-var-stumbleupon-circle: "\f1a3"; -$fa-var-subscript: "\f12c"; -$fa-var-subway: "\f239"; -$fa-var-suitcase: "\f0f2"; -$fa-var-sun-o: "\f185"; -$fa-var-superscript: "\f12b"; -$fa-var-support: "\f1cd"; -$fa-var-table: "\f0ce"; -$fa-var-tablet: "\f10a"; -$fa-var-tachometer: "\f0e4"; -$fa-var-tag: "\f02b"; -$fa-var-tags: "\f02c"; -$fa-var-tasks: "\f0ae"; -$fa-var-taxi: "\f1ba"; -$fa-var-tencent-weibo: "\f1d5"; -$fa-var-terminal: "\f120"; -$fa-var-text-height: "\f034"; -$fa-var-text-width: "\f035"; -$fa-var-th: "\f00a"; -$fa-var-th-large: "\f009"; -$fa-var-th-list: "\f00b"; -$fa-var-thumb-tack: "\f08d"; -$fa-var-thumbs-down: "\f165"; -$fa-var-thumbs-o-down: "\f088"; -$fa-var-thumbs-o-up: "\f087"; -$fa-var-thumbs-up: "\f164"; -$fa-var-ticket: "\f145"; -$fa-var-times: "\f00d"; -$fa-var-times-circle: "\f057"; -$fa-var-times-circle-o: "\f05c"; -$fa-var-tint: "\f043"; -$fa-var-toggle-down: "\f150"; -$fa-var-toggle-left: "\f191"; -$fa-var-toggle-off: "\f204"; -$fa-var-toggle-on: "\f205"; -$fa-var-toggle-right: "\f152"; -$fa-var-toggle-up: "\f151"; -$fa-var-train: "\f238"; -$fa-var-transgender: "\f224"; -$fa-var-transgender-alt: "\f225"; -$fa-var-trash: "\f1f8"; -$fa-var-trash-o: "\f014"; -$fa-var-tree: "\f1bb"; -$fa-var-trello: "\f181"; -$fa-var-trophy: "\f091"; -$fa-var-truck: "\f0d1"; -$fa-var-try: "\f195"; -$fa-var-tty: "\f1e4"; -$fa-var-tumblr: "\f173"; -$fa-var-tumblr-square: "\f174"; -$fa-var-turkish-lira: "\f195"; -$fa-var-twitch: "\f1e8"; -$fa-var-twitter: "\f099"; -$fa-var-twitter-square: "\f081"; -$fa-var-umbrella: "\f0e9"; -$fa-var-underline: "\f0cd"; -$fa-var-undo: "\f0e2"; -$fa-var-university: "\f19c"; -$fa-var-unlink: "\f127"; -$fa-var-unlock: "\f09c"; -$fa-var-unlock-alt: "\f13e"; -$fa-var-unsorted: "\f0dc"; -$fa-var-upload: "\f093"; -$fa-var-usd: "\f155"; -$fa-var-user: "\f007"; -$fa-var-user-md: "\f0f0"; -$fa-var-user-plus: "\f234"; -$fa-var-user-secret: "\f21b"; -$fa-var-user-times: "\f235"; -$fa-var-users: "\f0c0"; -$fa-var-venus: "\f221"; -$fa-var-venus-double: "\f226"; -$fa-var-venus-mars: "\f228"; -$fa-var-viacoin: "\f237"; -$fa-var-video-camera: "\f03d"; -$fa-var-vimeo-square: "\f194"; -$fa-var-vine: "\f1ca"; -$fa-var-vk: "\f189"; -$fa-var-volume-down: "\f027"; -$fa-var-volume-off: "\f026"; -$fa-var-volume-up: "\f028"; -$fa-var-warning: "\f071"; -$fa-var-wechat: "\f1d7"; -$fa-var-weibo: "\f18a"; -$fa-var-weixin: "\f1d7"; -$fa-var-whatsapp: "\f232"; -$fa-var-wheelchair: "\f193"; -$fa-var-wifi: "\f1eb"; -$fa-var-windows: "\f17a"; -$fa-var-won: "\f159"; -$fa-var-wordpress: "\f19a"; -$fa-var-wrench: "\f0ad"; -$fa-var-xing: "\f168"; -$fa-var-xing-square: "\f169"; -$fa-var-yahoo: "\f19e"; -$fa-var-yelp: "\f1e9"; -$fa-var-yen: "\f157"; -$fa-var-youtube: "\f167"; -$fa-var-youtube-play: "\f16a"; -$fa-var-youtube-square: "\f166"; - diff --git a/assets/font-awesome/scss/font-awesome.scss b/assets/font-awesome/scss/font-awesome.scss deleted file mode 100644 index 388ac6b0..00000000 --- a/assets/font-awesome/scss/font-awesome.scss +++ /dev/null @@ -1,17 +0,0 @@ -/*! - * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */ - -@import "variables"; -@import "mixins"; -@import "path"; -@import "core"; -@import "larger"; -@import "fixed-width"; -@import "list"; -@import "bordered-pulled"; -@import "animated"; -@import "rotated-flipped"; -@import "stacked"; -@import "icons"; diff --git a/assets/fonts/OpenSans/OpenSans-Bold.ttf b/assets/fonts/OpenSans/OpenSans-Bold.ttf deleted file mode 100644 index fd79d43b..00000000 Binary files a/assets/fonts/OpenSans/OpenSans-Bold.ttf and /dev/null differ diff --git a/assets/fonts/OpenSans/OpenSans-BoldItalic.ttf b/assets/fonts/OpenSans/OpenSans-BoldItalic.ttf deleted file mode 100644 index 9bc80095..00000000 Binary files a/assets/fonts/OpenSans/OpenSans-BoldItalic.ttf and /dev/null differ diff --git a/assets/fonts/OpenSans/OpenSans-ExtraBold.ttf b/assets/fonts/OpenSans/OpenSans-ExtraBold.ttf deleted file mode 100644 index 21f6f84a..00000000 Binary files a/assets/fonts/OpenSans/OpenSans-ExtraBold.ttf and /dev/null differ diff --git a/assets/fonts/OpenSans/OpenSans-ExtraBoldItalic.ttf b/assets/fonts/OpenSans/OpenSans-ExtraBoldItalic.ttf deleted file mode 100644 index 31cb6883..00000000 Binary files a/assets/fonts/OpenSans/OpenSans-ExtraBoldItalic.ttf and /dev/null differ diff --git a/assets/fonts/OpenSans/OpenSans-Italic.ttf b/assets/fonts/OpenSans/OpenSans-Italic.ttf deleted file mode 100644 index c90da48f..00000000 Binary files a/assets/fonts/OpenSans/OpenSans-Italic.ttf and /dev/null differ diff --git a/assets/fonts/OpenSans/OpenSans-Light.ttf b/assets/fonts/OpenSans/OpenSans-Light.ttf deleted file mode 100644 index 0d381897..00000000 Binary files a/assets/fonts/OpenSans/OpenSans-Light.ttf and /dev/null differ diff --git a/assets/fonts/OpenSans/OpenSans-LightItalic.ttf b/assets/fonts/OpenSans/OpenSans-LightItalic.ttf deleted file mode 100644 index 68299c4b..00000000 Binary files a/assets/fonts/OpenSans/OpenSans-LightItalic.ttf and /dev/null differ diff --git a/assets/fonts/OpenSans/OpenSans-Regular.ttf b/assets/fonts/OpenSans/OpenSans-Regular.ttf deleted file mode 100644 index db433349..00000000 Binary files a/assets/fonts/OpenSans/OpenSans-Regular.ttf and /dev/null differ diff --git a/assets/fonts/OpenSans/OpenSans-Semibold.ttf b/assets/fonts/OpenSans/OpenSans-Semibold.ttf deleted file mode 100644 index 1a7679e3..00000000 Binary files a/assets/fonts/OpenSans/OpenSans-Semibold.ttf and /dev/null differ diff --git a/assets/fonts/OpenSans/OpenSans-SemiboldItalic.ttf b/assets/fonts/OpenSans/OpenSans-SemiboldItalic.ttf deleted file mode 100644 index 59b6d16b..00000000 Binary files a/assets/fonts/OpenSans/OpenSans-SemiboldItalic.ttf and /dev/null differ diff --git a/assets/fonts/glyphicons-halflings-regular.eot b/assets/fonts/glyphicons-halflings-regular.eot deleted file mode 100644 index 4a4ca865..00000000 Binary files a/assets/fonts/glyphicons-halflings-regular.eot and /dev/null differ diff --git a/assets/fonts/glyphicons-halflings-regular.svg b/assets/fonts/glyphicons-halflings-regular.svg deleted file mode 100644 index 25691af8..00000000 --- a/assets/fonts/glyphicons-halflings-regular.svg +++ /dev/null @@ -1,229 +0,0 @@ -<?xml version="1.0" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > -<svg xmlns="http://www.w3.org/2000/svg"> -<metadata></metadata> -<defs> -<font id="glyphicons_halflingsregular" horiz-adv-x="1200" > -<font-face units-per-em="1200" ascent="960" descent="-240" /> -<missing-glyph horiz-adv-x="500" /> -<glyph /> -<glyph /> -<glyph unicode="&#xd;" /> -<glyph unicode=" " /> -<glyph unicode="*" d="M100 500v200h259l-183 183l141 141l183 -183v259h200v-259l183 183l141 -141l-183 -183h259v-200h-259l183 -183l-141 -141l-183 183v-259h-200v259l-183 -183l-141 141l183 183h-259z" /> -<glyph unicode="+" d="M0 400v300h400v400h300v-400h400v-300h-400v-400h-300v400h-400z" /> -<glyph unicode="&#xa0;" /> -<glyph unicode="&#x2000;" horiz-adv-x="652" /> -<glyph unicode="&#x2001;" horiz-adv-x="1304" /> -<glyph unicode="&#x2002;" horiz-adv-x="652" /> -<glyph unicode="&#x2003;" horiz-adv-x="1304" /> -<glyph unicode="&#x2004;" horiz-adv-x="434" /> -<glyph unicode="&#x2005;" horiz-adv-x="326" /> -<glyph unicode="&#x2006;" horiz-adv-x="217" /> -<glyph unicode="&#x2007;" horiz-adv-x="217" /> -<glyph unicode="&#x2008;" horiz-adv-x="163" /> -<glyph unicode="&#x2009;" horiz-adv-x="260" /> -<glyph unicode="&#x200a;" horiz-adv-x="72" /> -<glyph unicode="&#x202f;" horiz-adv-x="260" /> -<glyph unicode="&#x205f;" horiz-adv-x="326" /> -<glyph unicode="&#x20ac;" d="M100 500l100 100h113q0 47 5 100h-218l100 100h135q37 167 112 257q117 141 297 141q242 0 354 -189q60 -103 66 -209h-181q0 55 -25.5 99t-63.5 68t-75 36.5t-67 12.5q-24 0 -52.5 -10t-62.5 -32t-65.5 -67t-50.5 -107h379l-100 -100h-300q-6 -46 -6 -100h406l-100 -100 h-300q9 -74 33 -132t52.5 -91t62 -54.5t59 -29t46.5 -7.5q29 0 66 13t75 37t63.5 67.5t25.5 96.5h174q-31 -172 -128 -278q-107 -117 -274 -117q-205 0 -324 158q-36 46 -69 131.5t-45 205.5h-217z" /> -<glyph unicode="&#x2212;" d="M200 400h900v300h-900v-300z" /> -<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" /> -<glyph unicode="&#x2601;" d="M-14 494q0 -80 56.5 -137t135.5 -57h750q120 0 205 86.5t85 207.5t-85 207t-205 86q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5z" /> -<glyph unicode="&#x2709;" d="M0 100l400 400l200 -200l200 200l400 -400h-1200zM0 300v600l300 -300zM0 1100l600 -603l600 603h-1200zM900 600l300 300v-600z" /> -<glyph unicode="&#x270f;" d="M-13 -13l333 112l-223 223zM187 403l214 -214l614 614l-214 214zM887 1103l214 -214l99 92q13 13 13 32.5t-13 33.5l-153 153q-15 13 -33 13t-33 -13z" /> -<glyph unicode="&#xe001;" d="M0 1200h1200l-500 -550v-550h300v-100h-800v100h300v550z" /> -<glyph unicode="&#xe002;" d="M14 84q18 -55 86 -75.5t147 5.5q65 21 109 69t44 90v606l600 155v-521q-64 16 -138 -7q-79 -26 -122.5 -83t-25.5 -111q18 -55 86 -75.5t147 4.5q70 23 111.5 63.5t41.5 95.5v881q0 10 -7 15.5t-17 2.5l-752 -193q-10 -3 -17 -12.5t-7 -19.5v-689q-64 17 -138 -7 q-79 -25 -122.5 -82t-25.5 -112z" /> -<glyph unicode="&#xe003;" d="M23 693q0 200 142 342t342 142t342 -142t142 -342q0 -142 -78 -261l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342zM176 693q0 -136 97 -233t234 -97t233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5 t-234 -97t-97 -233z" /> -<glyph unicode="&#xe005;" d="M100 784q0 64 28 123t73 100.5t104.5 64t119 20.5t120 -38.5t104.5 -104.5q48 69 109.5 105t121.5 38t118.5 -20.5t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-149.5 152.5t-126.5 127.5 t-94 124.5t-33.5 117.5z" /> -<glyph unicode="&#xe006;" d="M-72 800h479l146 400h2l146 -400h472l-382 -278l145 -449l-384 275l-382 -275l146 447zM168 71l2 1z" /> -<glyph unicode="&#xe007;" d="M-72 800h479l146 400h2l146 -400h472l-382 -278l145 -449l-384 275l-382 -275l146 447zM168 71l2 1zM237 700l196 -142l-73 -226l192 140l195 -141l-74 229l193 140h-235l-77 211l-78 -211h-239z" /> -<glyph unicode="&#xe008;" d="M0 0v143l400 257v100q-37 0 -68.5 74.5t-31.5 125.5v200q0 124 88 212t212 88t212 -88t88 -212v-200q0 -51 -31.5 -125.5t-68.5 -74.5v-100l400 -257v-143h-1200z" /> -<glyph unicode="&#xe009;" d="M0 0v1100h1200v-1100h-1200zM100 100h100v100h-100v-100zM100 300h100v100h-100v-100zM100 500h100v100h-100v-100zM100 700h100v100h-100v-100zM100 900h100v100h-100v-100zM300 100h600v400h-600v-400zM300 600h600v400h-600v-400zM1000 100h100v100h-100v-100z M1000 300h100v100h-100v-100zM1000 500h100v100h-100v-100zM1000 700h100v100h-100v-100zM1000 900h100v100h-100v-100z" /> -<glyph unicode="&#xe010;" d="M0 50v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5zM0 650v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5zM600 50v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5zM600 650v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5z" /> -<glyph unicode="&#xe011;" d="M0 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM0 450v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5zM0 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5 t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 450v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5 v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM800 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM800 450v200q0 21 14.5 35.5t35.5 14.5h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM800 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5z" /> -<glyph unicode="&#xe012;" d="M0 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM0 450q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v200q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5 t-14.5 -35.5v-200zM0 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 50v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5 t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5zM400 450v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5zM400 850v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5 v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5z" /> -<glyph unicode="&#xe013;" d="M29 454l419 -420l818 820l-212 212l-607 -607l-206 207z" /> -<glyph unicode="&#xe014;" d="M106 318l282 282l-282 282l212 212l282 -282l282 282l212 -212l-282 -282l282 -282l-212 -212l-282 282l-282 -282z" /> -<glyph unicode="&#xe015;" d="M23 693q0 200 142 342t342 142t342 -142t142 -342q0 -142 -78 -261l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342zM176 693q0 -136 97 -233t234 -97t233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5 t-234 -97t-97 -233zM300 600v200h100v100h200v-100h100v-200h-100v-100h-200v100h-100z" /> -<glyph unicode="&#xe016;" d="M23 694q0 200 142 342t342 142t342 -142t142 -342q0 -141 -78 -262l300 -299q7 -7 7 -18t-7 -18l-109 -109q-8 -8 -18 -8t-18 8l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342zM176 694q0 -136 97 -233t234 -97t233.5 97t96.5 233t-96.5 233t-233.5 97t-234 -97 t-97 -233zM300 601h400v200h-400v-200z" /> -<glyph unicode="&#xe017;" d="M23 600q0 183 105 331t272 210v-166q-103 -55 -165 -155t-62 -220q0 -177 125 -302t302 -125t302 125t125 302q0 120 -62 220t-165 155v166q167 -62 272 -210t105 -331q0 -118 -45.5 -224.5t-123 -184t-184 -123t-224.5 -45.5t-224.5 45.5t-184 123t-123 184t-45.5 224.5 zM500 750q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v400q0 21 -14.5 35.5t-35.5 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-400z" /> -<glyph unicode="&#xe018;" d="M100 1h200v300h-200v-300zM400 1v500h200v-500h-200zM700 1v800h200v-800h-200zM1000 1v1200h200v-1200h-200z" /> -<glyph unicode="&#xe019;" d="M26 601q0 -33 6 -74l151 -38l2 -6q14 -49 38 -93l3 -5l-80 -134q45 -59 105 -105l133 81l5 -3q45 -26 94 -39l5 -2l38 -151q40 -5 74 -5q27 0 74 5l38 151l6 2q46 13 93 39l5 3l134 -81q56 44 104 105l-80 134l3 5q24 44 39 93l1 6l152 38q5 40 5 74q0 28 -5 73l-152 38 l-1 6q-16 51 -39 93l-3 5l80 134q-44 58 -104 105l-134 -81l-5 3q-45 25 -93 39l-6 1l-38 152q-40 5 -74 5q-27 0 -74 -5l-38 -152l-5 -1q-50 -14 -94 -39l-5 -3l-133 81q-59 -47 -105 -105l80 -134l-3 -5q-25 -47 -38 -93l-2 -6l-151 -38q-6 -48 -6 -73zM385 601 q0 88 63 151t152 63t152 -63t63 -151q0 -89 -63 -152t-152 -63t-152 63t-63 152z" /> -<glyph unicode="&#xe020;" d="M100 1025v50q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-50q0 -11 -7 -18t-18 -7h-1050q-11 0 -18 7t-7 18zM200 100v800h900v-800q0 -41 -29.5 -71t-70.5 -30h-700q-41 0 -70.5 30 t-29.5 71zM300 100h100v700h-100v-700zM500 100h100v700h-100v-700zM500 1100h300v100h-300v-100zM700 100h100v700h-100v-700zM900 100h100v700h-100v-700z" /> -<glyph unicode="&#xe021;" d="M1 601l656 644l644 -644h-200v-600h-300v400h-300v-400h-300v600h-200z" /> -<glyph unicode="&#xe022;" d="M100 25v1150q0 11 7 18t18 7h475v-500h400v-675q0 -11 -7 -18t-18 -7h-850q-11 0 -18 7t-7 18zM700 800v300l300 -300h-300z" /> -<glyph unicode="&#xe023;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM500 500v400h100 v-300h200v-100h-300z" /> -<glyph unicode="&#xe024;" d="M-100 0l431 1200h209l-21 -300h162l-20 300h208l431 -1200h-538l-41 400h-242l-40 -400h-539zM488 500h224l-27 300h-170z" /> -<glyph unicode="&#xe025;" d="M0 0v400h490l-290 300h200v500h300v-500h200l-290 -300h490v-400h-1100zM813 200h175v100h-175v-100z" /> -<glyph unicode="&#xe026;" d="M1 600q0 122 47.5 233t127.5 191t191 127.5t233 47.5t233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 -127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233zM188 600q0 -170 121 -291t291 -121t291 121t121 291t-121 291t-291 121 t-291 -121t-121 -291zM350 600h150v300h200v-300h150l-250 -300z" /> -<glyph unicode="&#xe027;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM350 600l250 300 l250 -300h-150v-300h-200v300h-150z" /> -<glyph unicode="&#xe028;" d="M0 25v475l200 700h800l199 -700l1 -475q0 -11 -7 -18t-18 -7h-1150q-11 0 -18 7t-7 18zM200 500h200l50 -200h300l50 200h200l-97 500h-606z" /> -<glyph unicode="&#xe029;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM500 397v401 l297 -200z" /> -<glyph unicode="&#xe030;" d="M23 600q0 -118 45.5 -224.5t123 -184t184 -123t224.5 -45.5t224.5 45.5t184 123t123 184t45.5 224.5h-150q0 -177 -125 -302t-302 -125t-302 125t-125 302t125 302t302 125q136 0 246 -81l-146 -146h400v400l-145 -145q-157 122 -355 122q-118 0 -224.5 -45.5t-184 -123 t-123 -184t-45.5 -224.5z" /> -<glyph unicode="&#xe031;" d="M23 600q0 118 45.5 224.5t123 184t184 123t224.5 45.5q198 0 355 -122l145 145v-400h-400l147 147q-112 80 -247 80q-177 0 -302 -125t-125 -302h-150zM100 0v400h400l-147 -147q112 -80 247 -80q177 0 302 125t125 302h150q0 -118 -45.5 -224.5t-123 -184t-184 -123 t-224.5 -45.5q-198 0 -355 122z" /> -<glyph unicode="&#xe032;" d="M100 0h1100v1200h-1100v-1200zM200 100v900h900v-900h-900zM300 200v100h100v-100h-100zM300 400v100h100v-100h-100zM300 600v100h100v-100h-100zM300 800v100h100v-100h-100zM500 200h500v100h-500v-100zM500 400v100h500v-100h-500zM500 600v100h500v-100h-500z M500 800v100h500v-100h-500z" /> -<glyph unicode="&#xe033;" d="M0 100v600q0 41 29.5 70.5t70.5 29.5h100v200q0 82 59 141t141 59h300q82 0 141 -59t59 -141v-200h100q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-900q-41 0 -70.5 29.5t-29.5 70.5zM400 800h300v150q0 21 -14.5 35.5t-35.5 14.5h-200 q-21 0 -35.5 -14.5t-14.5 -35.5v-150z" /> -<glyph unicode="&#xe034;" d="M100 0v1100h100v-1100h-100zM300 400q60 60 127.5 84t127.5 17.5t122 -23t119 -30t110 -11t103 42t91 120.5v500q-40 -81 -101.5 -115.5t-127.5 -29.5t-138 25t-139.5 40t-125.5 25t-103 -29.5t-65 -115.5v-500z" /> -<glyph unicode="&#xe035;" d="M0 275q0 -11 7 -18t18 -7h50q11 0 18 7t7 18v300q0 127 70.5 231.5t184.5 161.5t245 57t245 -57t184.5 -161.5t70.5 -231.5v-300q0 -11 7 -18t18 -7h50q11 0 18 7t7 18v300q0 116 -49.5 227t-131 192.5t-192.5 131t-227 49.5t-227 -49.5t-192.5 -131t-131 -192.5 t-49.5 -227v-300zM200 20v460q0 8 6 14t14 6h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14zM800 20v460q0 8 6 14t14 6h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14z" /> -<glyph unicode="&#xe036;" d="M0 400h300l300 -200v800l-300 -200h-300v-400zM688 459l141 141l-141 141l71 71l141 -141l141 141l71 -71l-141 -141l141 -141l-71 -71l-141 141l-141 -141z" /> -<glyph unicode="&#xe037;" d="M0 400h300l300 -200v800l-300 -200h-300v-400zM700 857l69 53q111 -135 111 -310q0 -169 -106 -302l-67 54q86 110 86 248q0 146 -93 257z" /> -<glyph unicode="&#xe038;" d="M0 401v400h300l300 200v-800l-300 200h-300zM702 858l69 53q111 -135 111 -310q0 -170 -106 -303l-67 55q86 110 86 248q0 145 -93 257zM889 951l7 -8q123 -151 123 -344q0 -189 -119 -339l-7 -8l81 -66l6 8q142 178 142 405q0 230 -144 408l-6 8z" /> -<glyph unicode="&#xe039;" d="M0 0h500v500h-200v100h-100v-100h-200v-500zM0 600h100v100h400v100h100v100h-100v300h-500v-600zM100 100v300h300v-300h-300zM100 800v300h300v-300h-300zM200 200v100h100v-100h-100zM200 900h100v100h-100v-100zM500 500v100h300v-300h200v-100h-100v-100h-200v100 h-100v100h100v200h-200zM600 0v100h100v-100h-100zM600 1000h100v-300h200v-300h300v200h-200v100h200v500h-600v-200zM800 800v300h300v-300h-300zM900 0v100h300v-100h-300zM900 900v100h100v-100h-100zM1100 200v100h100v-100h-100z" /> -<glyph unicode="&#xe040;" d="M0 200h100v1000h-100v-1000zM100 0v100h300v-100h-300zM200 200v1000h100v-1000h-100zM500 0v91h100v-91h-100zM500 200v1000h200v-1000h-200zM700 0v91h100v-91h-100zM800 200v1000h100v-1000h-100zM900 0v91h200v-91h-200zM1000 200v1000h200v-1000h-200z" /> -<glyph unicode="&#xe041;" d="M0 700l1 475q0 10 7.5 17.5t17.5 7.5h474l700 -700l-500 -500zM148 953q0 -42 29 -71q30 -30 71.5 -30t71.5 30q29 29 29 71t-29 71q-30 30 -71.5 30t-71.5 -30q-29 -29 -29 -71z" /> -<glyph unicode="&#xe042;" d="M1 700l1 475q0 11 7 18t18 7h474l700 -700l-500 -500zM148 953q0 -42 30 -71q29 -30 71 -30t71 30q30 29 30 71t-30 71q-29 30 -71 30t-71 -30q-30 -29 -30 -71zM701 1200h100l700 -700l-500 -500l-50 50l450 450z" /> -<glyph unicode="&#xe043;" d="M100 0v1025l175 175h925v-1000l-100 -100v1000h-750l-100 -100h750v-1000h-900z" /> -<glyph unicode="&#xe044;" d="M200 0l450 444l450 -443v1150q0 20 -14.5 35t-35.5 15h-800q-21 0 -35.5 -15t-14.5 -35v-1151z" /> -<glyph unicode="&#xe045;" d="M0 100v700h200l100 -200h600l100 200h200v-700h-200v200h-800v-200h-200zM253 829l40 -124h592l62 124l-94 346q-2 11 -10 18t-18 7h-450q-10 0 -18 -7t-10 -18zM281 24l38 152q2 10 11.5 17t19.5 7h500q10 0 19.5 -7t11.5 -17l38 -152q2 -10 -3.5 -17t-15.5 -7h-600 q-10 0 -15.5 7t-3.5 17z" /> -<glyph unicode="&#xe046;" d="M0 200q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-150q-4 8 -11.5 21.5t-33 48t-53 61t-69 48t-83.5 21.5h-200q-41 0 -82 -20.5t-70 -50t-52 -59t-34 -50.5l-12 -20h-150q-41 0 -70.5 -29.5t-29.5 -70.5v-600z M356 500q0 100 72 172t172 72t172 -72t72 -172t-72 -172t-172 -72t-172 72t-72 172zM494 500q0 -44 31 -75t75 -31t75 31t31 75t-31 75t-75 31t-75 -31t-31 -75zM900 700v100h100v-100h-100z" /> -<glyph unicode="&#xe047;" d="M53 0h365v66q-41 0 -72 11t-49 38t1 71l92 234h391l82 -222q16 -45 -5.5 -88.5t-74.5 -43.5v-66h417v66q-34 1 -74 43q-18 19 -33 42t-21 37l-6 13l-385 998h-93l-399 -1006q-24 -48 -52 -75q-12 -12 -33 -25t-36 -20l-15 -7v-66zM416 521l178 457l46 -140l116 -317h-340 z" /> -<glyph unicode="&#xe048;" d="M100 0v89q41 7 70.5 32.5t29.5 65.5v827q0 28 -1 39.5t-5.5 26t-15.5 21t-29 14t-49 14.5v71l471 -1q120 0 213 -88t93 -228q0 -55 -11.5 -101.5t-28 -74t-33.5 -47.5t-28 -28l-12 -7q8 -3 21.5 -9t48 -31.5t60.5 -58t47.5 -91.5t21.5 -129q0 -84 -59 -156.5t-142 -111 t-162 -38.5h-500zM400 200h161q89 0 153 48.5t64 132.5q0 90 -62.5 154.5t-156.5 64.5h-159v-400zM400 700h139q76 0 130 61.5t54 138.5q0 82 -84 130.5t-239 48.5v-379z" /> -<glyph unicode="&#xe049;" d="M200 0v57q77 7 134.5 40.5t65.5 80.5l173 849q10 56 -10 74t-91 37q-6 1 -10.5 2.5t-9.5 2.5v57h425l2 -57q-33 -8 -62 -25.5t-46 -37t-29.5 -38t-17.5 -30.5l-5 -12l-128 -825q-10 -52 14 -82t95 -36v-57h-500z" /> -<glyph unicode="&#xe050;" d="M-75 200h75v800h-75l125 167l125 -167h-75v-800h75l-125 -167zM300 900v300h150h700h150v-300h-50q0 29 -8 48.5t-18.5 30t-33.5 15t-39.5 5.5t-50.5 1h-200v-850l100 -50v-100h-400v100l100 50v850h-200q-34 0 -50.5 -1t-40 -5.5t-33.5 -15t-18.5 -30t-8.5 -48.5h-49z " /> -<glyph unicode="&#xe051;" d="M33 51l167 125v-75h800v75l167 -125l-167 -125v75h-800v-75zM100 901v300h150h700h150v-300h-50q0 29 -8 48.5t-18 30t-33.5 15t-40 5.5t-50.5 1h-200v-650l100 -50v-100h-400v100l100 50v650h-200q-34 0 -50.5 -1t-39.5 -5.5t-33.5 -15t-18.5 -30t-8 -48.5h-50z" /> -<glyph unicode="&#xe052;" d="M0 50q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 350q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 -35.5 v-100zM0 650q0 -20 14.5 -35t35.5 -15h1000q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1000q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 950q0 -20 14.5 -35t35.5 -15h600q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-600q-21 0 -35.5 -14.5 t-14.5 -35.5v-100z" /> -<glyph unicode="&#xe053;" d="M0 50q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 650q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5 v-100zM200 350q0 -20 14.5 -35t35.5 -15h700q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-700q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM200 950q0 -20 14.5 -35t35.5 -15h700q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-700q-21 0 -35.5 -14.5 t-14.5 -35.5v-100z" /> -<glyph unicode="&#xe054;" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1000q-21 0 -35.5 15 t-14.5 35zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-600 q-21 0 -35.5 15t-14.5 35z" /> -<glyph unicode="&#xe055;" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM0 350v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15 t-14.5 35zM0 650v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM0 950v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100 q-21 0 -35.5 15t-14.5 35z" /> -<glyph unicode="&#xe056;" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM0 350v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15 t-14.5 35zM0 650v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM0 950v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15 t-14.5 35zM300 50v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800 q-21 0 -35.5 15t-14.5 35zM300 650v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM300 950v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15 h-800q-21 0 -35.5 15t-14.5 35z" /> -<glyph unicode="&#xe057;" d="M-101 500v100h201v75l166 -125l-166 -125v75h-201zM300 0h100v1100h-100v-1100zM500 50q0 -20 14.5 -35t35.5 -15h600q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 350q0 -20 14.5 -35t35.5 -15h300q20 0 35 15t15 35 v100q0 21 -15 35.5t-35 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 650q0 -20 14.5 -35t35.5 -15h500q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 950q0 -20 14.5 -35t35.5 -15h100q20 0 35 15t15 35v100 q0 21 -15 35.5t-35 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-100z" /> -<glyph unicode="&#xe058;" d="M1 50q0 -20 14.5 -35t35.5 -15h600q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 350q0 -20 14.5 -35t35.5 -15h300q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 650 q0 -20 14.5 -35t35.5 -15h500q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 950q0 -20 14.5 -35t35.5 -15h100q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM801 0v1100h100v-1100 h-100zM934 550l167 -125v75h200v100h-200v75z" /> -<glyph unicode="&#xe059;" d="M0 275v650q0 31 22 53t53 22h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53zM900 600l300 300v-600z" /> -<glyph unicode="&#xe060;" d="M0 44v1012q0 18 13 31t31 13h1112q19 0 31.5 -13t12.5 -31v-1012q0 -18 -12.5 -31t-31.5 -13h-1112q-18 0 -31 13t-13 31zM100 263l247 182l298 -131l-74 156l293 318l236 -288v500h-1000v-737zM208 750q0 56 39 95t95 39t95 -39t39 -95t-39 -95t-95 -39t-95 39t-39 95z " /> -<glyph unicode="&#xe062;" d="M148 745q0 124 60.5 231.5t165 172t226.5 64.5q123 0 227 -63t164.5 -169.5t60.5 -229.5t-73 -272q-73 -114 -166.5 -237t-150.5 -189l-57 -66q-10 9 -27 26t-66.5 70.5t-96 109t-104 135.5t-100.5 155q-63 139 -63 262zM342 772q0 -107 75.5 -182.5t181.5 -75.5 q107 0 182.5 75.5t75.5 182.5t-75.5 182t-182.5 75t-182 -75.5t-75 -181.5z" /> -<glyph unicode="&#xe063;" d="M1 600q0 122 47.5 233t127.5 191t191 127.5t233 47.5t233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 -127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233zM173 600q0 -177 125.5 -302t301.5 -125v854q-176 0 -301.5 -125 t-125.5 -302z" /> -<glyph unicode="&#xe064;" d="M117 406q0 94 34 186t88.5 172.5t112 159t115 177t87.5 194.5q21 -71 57.5 -142.5t76 -130.5t83 -118.5t82 -117t70 -116t50 -125.5t18.5 -136q0 -89 -39 -165.5t-102 -126.5t-140 -79.5t-156 -33.5q-114 6 -211.5 53t-161.5 139t-64 210zM243 414q14 -82 59.5 -136 t136.5 -80l16 98q-7 6 -18 17t-34 48t-33 77q-15 73 -14 143.5t10 122.5l9 51q-92 -110 -119.5 -185t-12.5 -156z" /> -<glyph unicode="&#xe065;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5q366 -6 397 -14l-186 -186h-311q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v125l200 200v-225q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5 t-117.5 282.5zM436 341l161 50l412 412l-114 113l-405 -405zM995 1015l113 -113l113 113l-21 85l-92 28z" /> -<glyph unicode="&#xe066;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h261l2 -80q-133 -32 -218 -120h-145q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-53q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5 zM423 524q30 38 81.5 64t103 35.5t99 14t77.5 3.5l29 -1v-209l360 324l-359 318v-216q-7 0 -19 -1t-48 -8t-69.5 -18.5t-76.5 -37t-76.5 -59t-62 -88t-39.5 -121.5z" /> -<glyph unicode="&#xe067;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q61 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-169q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5 t-117.5 282.5zM342 632l283 -284l567 567l-137 137l-430 -431l-146 147z" /> -<glyph unicode="&#xe068;" d="M0 603l300 296v-198h200v200h-200l300 300l295 -300h-195v-200h200v198l300 -296l-300 -300v198h-200v-200h195l-295 -300l-300 300h200v200h-200v-198z" /> -<glyph unicode="&#xe069;" d="M200 50v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-437l500 487v-1100l-500 488v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5z" /> -<glyph unicode="&#xe070;" d="M0 50v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-437l500 487v-487l500 487v-1100l-500 488v-488l-500 488v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5z" /> -<glyph unicode="&#xe071;" d="M136 550l564 550v-487l500 487v-1100l-500 488v-488z" /> -<glyph unicode="&#xe072;" d="M200 0l900 550l-900 550v-1100z" /> -<glyph unicode="&#xe073;" d="M200 150q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v800q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5t-14.5 -35.5v-800zM600 150q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v800q0 21 -14.5 35.5t-35.5 14.5h-200 q-21 0 -35.5 -14.5t-14.5 -35.5v-800z" /> -<glyph unicode="&#xe074;" d="M200 150q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 15t14.5 35v800q0 21 -14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 -35.5v-800z" /> -<glyph unicode="&#xe075;" d="M0 0v1100l500 -487v487l564 -550l-564 -550v488z" /> -<glyph unicode="&#xe076;" d="M0 0v1100l500 -487v487l500 -487v437q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-500 -488v488z" /> -<glyph unicode="&#xe077;" d="M300 0v1100l500 -487v437q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438z" /> -<glyph unicode="&#xe078;" d="M100 250v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5zM100 500h1100l-550 564z" /> -<glyph unicode="&#xe079;" d="M185 599l592 -592l240 240l-353 353l353 353l-240 240z" /> -<glyph unicode="&#xe080;" d="M272 194l353 353l-353 353l241 240l572 -571l21 -22l-1 -1v-1l-592 -591z" /> -<glyph unicode="&#xe081;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM300 500h200v-200h200v200h200v200h-200v200h-200v-200h-200v-200z" /> -<glyph unicode="&#xe082;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM300 500h600v200h-600v-200z" /> -<glyph unicode="&#xe083;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM246 459l213 -213l141 142l141 -142l213 213l-142 141l142 141l-213 212l-141 -141l-141 142l-212 -213l141 -141 z" /> -<glyph unicode="&#xe084;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM270 551l276 -277l411 411l-175 174l-236 -236l-102 102z" /> -<glyph unicode="&#xe085;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM364 700h143q4 0 11.5 -1t11 -1t6.5 3t3 9t1 11t3.5 8.5t3.5 6t5.5 4t6.5 2.5t9 1.5t9 0.5h11.5h12.5 q19 0 30 -10t11 -26q0 -22 -4 -28t-27 -22q-5 -1 -12.5 -3t-27 -13.5t-34 -27t-26.5 -46t-11 -68.5h200q5 3 14 8t31.5 25.5t39.5 45.5t31 69t14 94q0 51 -17.5 89t-42 58t-58.5 32t-58.5 15t-51.5 3q-50 0 -90.5 -12t-75 -38.5t-53.5 -74.5t-19 -114zM500 300h200v100h-200 v-100z" /> -<glyph unicode="&#xe086;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM400 300h400v100h-100v300h-300v-100h100v-200h-100v-100zM500 800h200v100h-200v-100z" /> -<glyph unicode="&#xe087;" d="M0 500v200h195q31 125 98.5 199.5t206.5 100.5v200h200v-200q54 -20 113 -60t112.5 -105.5t71.5 -134.5h203v-200h-203q-25 -102 -116.5 -186t-180.5 -117v-197h-200v197q-140 27 -208 102.5t-98 200.5h-194zM290 500q24 -73 79.5 -127.5t130.5 -78.5v206h200v-206 q149 48 201 206h-201v200h200q-25 74 -75.5 127t-124.5 77v-204h-200v203q-75 -23 -130 -77t-79 -126h209v-200h-210z" /> -<glyph unicode="&#xe088;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM356 465l135 135 l-135 135l109 109l135 -135l135 135l109 -109l-135 -135l135 -135l-109 -109l-135 135l-135 -135z" /> -<glyph unicode="&#xe089;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM322 537l141 141 l87 -87l204 205l142 -142l-346 -345z" /> -<glyph unicode="&#xe090;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -115 62 -215l568 567q-100 62 -216 62q-171 0 -292.5 -121.5t-121.5 -292.5zM391 245q97 -59 209 -59q171 0 292.5 121.5t121.5 292.5 q0 112 -59 209z" /> -<glyph unicode="&#xe091;" d="M0 547l600 453v-300h600v-300h-600v-301z" /> -<glyph unicode="&#xe092;" d="M0 400v300h600v300l600 -453l-600 -448v301h-600z" /> -<glyph unicode="&#xe093;" d="M204 600l450 600l444 -600h-298v-600h-300v600h-296z" /> -<glyph unicode="&#xe094;" d="M104 600h296v600h300v-600h298l-449 -600z" /> -<glyph unicode="&#xe095;" d="M0 200q6 132 41 238.5t103.5 193t184 138t271.5 59.5v271l600 -453l-600 -448v301q-95 -2 -183 -20t-170 -52t-147 -92.5t-100 -135.5z" /> -<glyph unicode="&#xe096;" d="M0 0v400l129 -129l294 294l142 -142l-294 -294l129 -129h-400zM635 777l142 -142l294 294l129 -129v400h-400l129 -129z" /> -<glyph unicode="&#xe097;" d="M34 176l295 295l-129 129h400v-400l-129 130l-295 -295zM600 600v400l129 -129l295 295l142 -141l-295 -295l129 -130h-400z" /> -<glyph unicode="&#xe101;" d="M23 600q0 118 45.5 224.5t123 184t184 123t224.5 45.5t224.5 -45.5t184 -123t123 -184t45.5 -224.5t-45.5 -224.5t-123 -184t-184 -123t-224.5 -45.5t-224.5 45.5t-184 123t-123 184t-45.5 224.5zM456 851l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5 t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5h-207q-21 0 -33 -14.5t-8 -34.5zM500 300h200v100h-200v-100z" /> -<glyph unicode="&#xe102;" d="M0 800h100v-200h400v300h200v-300h400v200h100v100h-111q1 1 1 6.5t-1.5 15t-3.5 17.5l-34 172q-11 39 -41.5 63t-69.5 24q-32 0 -61 -17l-239 -144q-22 -13 -40 -35q-19 24 -40 36l-238 144q-33 18 -62 18q-39 0 -69.5 -23t-40.5 -61l-35 -177q-2 -8 -3 -18t-1 -15v-6 h-111v-100zM100 0h400v400h-400v-400zM200 900q-3 0 14 48t36 96l18 47l213 -191h-281zM700 0v400h400v-400h-400zM731 900l202 197q5 -12 12 -32.5t23 -64t25 -72t7 -28.5h-269z" /> -<glyph unicode="&#xe103;" d="M0 -22v143l216 193q-9 53 -13 83t-5.5 94t9 113t38.5 114t74 124q47 60 99.5 102.5t103 68t127.5 48t145.5 37.5t184.5 43.5t220 58.5q0 -189 -22 -343t-59 -258t-89 -181.5t-108.5 -120t-122 -68t-125.5 -30t-121.5 -1.5t-107.5 12.5t-87.5 17t-56.5 7.5l-99 -55z M238.5 300.5q19.5 -6.5 86.5 76.5q55 66 367 234q70 38 118.5 69.5t102 79t99 111.5t86.5 148q22 50 24 60t-6 19q-7 5 -17 5t-26.5 -14.5t-33.5 -39.5q-35 -51 -113.5 -108.5t-139.5 -89.5l-61 -32q-369 -197 -458 -401q-48 -111 -28.5 -117.5z" /> -<glyph unicode="&#xe104;" d="M111 408q0 -33 5 -63q9 -56 44 -119.5t105 -108.5q31 -21 64 -16t62 23.5t57 49.5t48 61.5t35 60.5q32 66 39 184.5t-13 157.5q79 -80 122 -164t26 -184q-5 -33 -20.5 -69.5t-37.5 -80.5q-10 -19 -14.5 -29t-12 -26t-9 -23.5t-3 -19t2.5 -15.5t11 -9.5t19.5 -5t30.5 2.5 t42 8q57 20 91 34t87.5 44.5t87 64t65.5 88.5t47 122q38 172 -44.5 341.5t-246.5 278.5q22 -44 43 -129q39 -159 -32 -154q-15 2 -33 9q-79 33 -120.5 100t-44 175.5t48.5 257.5q-13 -8 -34 -23.5t-72.5 -66.5t-88.5 -105.5t-60 -138t-8 -166.5q2 -12 8 -41.5t8 -43t6 -39.5 t3.5 -39.5t-1 -33.5t-6 -31.5t-13.5 -24t-21 -20.5t-31 -12q-38 -10 -67 13t-40.5 61.5t-15 81.5t10.5 75q-52 -46 -83.5 -101t-39 -107t-7.5 -85z" /> -<glyph unicode="&#xe105;" d="M-61 600l26 40q6 10 20 30t49 63.5t74.5 85.5t97 90t116.5 83.5t132.5 59t145.5 23.5t145.5 -23.5t132.5 -59t116.5 -83.5t97 -90t74.5 -85.5t49 -63.5t20 -30l26 -40l-26 -40q-6 -10 -20 -30t-49 -63.5t-74.5 -85.5t-97 -90t-116.5 -83.5t-132.5 -59t-145.5 -23.5 t-145.5 23.5t-132.5 59t-116.5 83.5t-97 90t-74.5 85.5t-49 63.5t-20 30zM120 600q7 -10 40.5 -58t56 -78.5t68 -77.5t87.5 -75t103 -49.5t125 -21.5t123.5 20t100.5 45.5t85.5 71.5t66.5 75.5t58 81.5t47 66q-1 1 -28.5 37.5t-42 55t-43.5 53t-57.5 63.5t-58.5 54 q49 -74 49 -163q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 85 46 158q-102 -87 -226 -258zM377 656q49 -124 154 -191l105 105q-37 24 -75 72t-57 84l-20 36z" /> -<glyph unicode="&#xe106;" d="M-61 600l26 40q6 10 20 30t49 63.5t74.5 85.5t97 90t116.5 83.5t132.5 59t145.5 23.5q61 0 121 -17l37 142h148l-314 -1200h-148l37 143q-82 21 -165 71.5t-140 102t-109.5 112t-72 88.5t-29.5 43zM120 600q210 -282 393 -336l37 141q-107 18 -178.5 101.5t-71.5 193.5 q0 85 46 158q-102 -87 -226 -258zM377 656q49 -124 154 -191l47 47l23 87q-30 28 -59 69t-44 68l-14 26zM780 161l38 145q22 15 44.5 34t46 44t40.5 44t41 50.5t33.5 43.5t33 44t24.5 34q-97 127 -140 175l39 146q67 -54 131.5 -125.5t87.5 -103.5t36 -52l26 -40l-26 -40 q-7 -12 -25.5 -38t-63.5 -79.5t-95.5 -102.5t-124 -100t-146.5 -79z" /> -<glyph unicode="&#xe107;" d="M-97.5 34q13.5 -34 50.5 -34h1294q37 0 50.5 35.5t-7.5 67.5l-642 1056q-20 34 -48 36.5t-48 -29.5l-642 -1066q-21 -32 -7.5 -66zM155 200l445 723l445 -723h-345v100h-200v-100h-345zM500 600l100 -300l100 300v100h-200v-100z" /> -<glyph unicode="&#xe108;" d="M100 262v41q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44t106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -91 100 -113v-64q0 -20 -13 -28.5t-32 0.5l-94 78h-222l-94 -78q-19 -9 -32 -0.5t-13 28.5 v64q0 22 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5z" /> -<glyph unicode="&#xe109;" d="M0 50q0 -20 14.5 -35t35.5 -15h1000q21 0 35.5 15t14.5 35v750h-1100v-750zM0 900h1100v150q0 21 -14.5 35.5t-35.5 14.5h-150v100h-100v-100h-500v100h-100v-100h-150q-21 0 -35.5 -14.5t-14.5 -35.5v-150zM100 100v100h100v-100h-100zM100 300v100h100v-100h-100z M100 500v100h100v-100h-100zM300 100v100h100v-100h-100zM300 300v100h100v-100h-100zM300 500v100h100v-100h-100zM500 100v100h100v-100h-100zM500 300v100h100v-100h-100zM500 500v100h100v-100h-100zM700 100v100h100v-100h-100zM700 300v100h100v-100h-100zM700 500 v100h100v-100h-100zM900 100v100h100v-100h-100zM900 300v100h100v-100h-100zM900 500v100h100v-100h-100z" /> -<glyph unicode="&#xe110;" d="M0 200v200h259l600 600h241v198l300 -295l-300 -300v197h-159l-600 -600h-341zM0 800h259l122 -122l141 142l-181 180h-341v-200zM678 381l141 142l122 -123h159v198l300 -295l-300 -300v197h-241z" /> -<glyph unicode="&#xe111;" d="M0 400v600q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5z" /> -<glyph unicode="&#xe112;" d="M100 600v200h300v-250q0 -113 6 -145q17 -92 102 -117q39 -11 92 -11q37 0 66.5 5.5t50 15.5t36 24t24 31.5t14 37.5t7 42t2.5 45t0 47v25v250h300v-200q0 -42 -3 -83t-15 -104t-31.5 -116t-58 -109.5t-89 -96.5t-129 -65.5t-174.5 -25.5t-174.5 25.5t-129 65.5t-89 96.5 t-58 109.5t-31.5 116t-15 104t-3 83zM100 900v300h300v-300h-300zM800 900v300h300v-300h-300z" /> -<glyph unicode="&#xe113;" d="M-30 411l227 -227l352 353l353 -353l226 227l-578 579z" /> -<glyph unicode="&#xe114;" d="M70 797l580 -579l578 579l-226 227l-353 -353l-352 353z" /> -<glyph unicode="&#xe115;" d="M-198 700l299 283l300 -283h-203v-400h385l215 -200h-800v600h-196zM402 1000l215 -200h381v-400h-198l299 -283l299 283h-200v600h-796z" /> -<glyph unicode="&#xe116;" d="M18 939q-5 24 10 42q14 19 39 19h896l38 162q5 17 18.5 27.5t30.5 10.5h94q20 0 35 -14.5t15 -35.5t-15 -35.5t-35 -14.5h-54l-201 -961q-2 -4 -6 -10.5t-19 -17.5t-33 -11h-31v-50q0 -20 -14.5 -35t-35.5 -15t-35.5 15t-14.5 35v50h-300v-50q0 -20 -14.5 -35t-35.5 -15 t-35.5 15t-14.5 35v50h-50q-21 0 -35.5 15t-14.5 35q0 21 14.5 35.5t35.5 14.5h535l48 200h-633q-32 0 -54.5 21t-27.5 43z" /> -<glyph unicode="&#xe117;" d="M0 0v800h1200v-800h-1200zM0 900v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500v-100h-1200z" /> -<glyph unicode="&#xe118;" d="M1 0l300 700h1200l-300 -700h-1200zM1 400v600h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500v-200h-1000z" /> -<glyph unicode="&#xe119;" d="M302 300h198v600h-198l298 300l298 -300h-198v-600h198l-298 -300z" /> -<glyph unicode="&#xe120;" d="M0 600l300 298v-198h600v198l300 -298l-300 -297v197h-600v-197z" /> -<glyph unicode="&#xe121;" d="M0 100v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM31 400l172 739q5 22 23 41.5t38 19.5h672q19 0 37.5 -22.5t23.5 -45.5l172 -732h-1138zM800 100h100v100h-100v-100z M1000 100h100v100h-100v-100z" /> -<glyph unicode="&#xe122;" d="M-101 600v50q0 24 25 49t50 38l25 13v-250l-11 5.5t-24 14t-30 21.5t-24 27.5t-11 31.5zM100 500v250v8v8v7t0.5 7t1.5 5.5t2 5t3 4t4.5 3.5t6 1.5t7.5 0.5h200l675 250v-850l-675 200h-38l47 -276q2 -12 -3 -17.5t-11 -6t-21 -0.5h-8h-83q-20 0 -34.5 14t-18.5 35 q-55 337 -55 351zM1100 200v850q0 21 14.5 35.5t35.5 14.5q20 0 35 -14.5t15 -35.5v-850q0 -20 -15 -35t-35 -15q-21 0 -35.5 15t-14.5 35z" /> -<glyph unicode="&#xe123;" d="M74 350q0 21 13.5 35.5t33.5 14.5h18l117 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3 32t29 13h94q20 0 29 -10.5t3 -29.5q-18 -36 -18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q20 0 33.5 -14.5t13.5 -35.5q0 -20 -13 -40t-31 -27q-8 -3 -23 -8.5 t-65 -20t-103 -25t-132.5 -19.5t-158.5 -9q-125 0 -245.5 20.5t-178.5 40.5l-58 20q-18 7 -31 27.5t-13 40.5zM497 110q12 -49 40 -79.5t63 -30.5t63 30.5t39 79.5q-48 -6 -102 -6t-103 6z" /> -<glyph unicode="&#xe124;" d="M21 445l233 -45l-78 -224l224 78l45 -233l155 179l155 -179l45 233l224 -78l-78 224l234 45l-180 155l180 156l-234 44l78 225l-224 -78l-45 233l-155 -180l-155 180l-45 -233l-224 78l78 -225l-233 -44l179 -156z" /> -<glyph unicode="&#xe125;" d="M0 200h200v600h-200v-600zM300 275q0 -75 100 -75h61q124 -100 139 -100h250q46 0 83 57l238 344q29 31 29 74v100q0 44 -30.5 84.5t-69.5 40.5h-328q28 118 28 125v150q0 44 -30.5 84.5t-69.5 40.5h-50q-27 0 -51 -20t-38 -48l-96 -198l-145 -196q-20 -26 -20 -63v-400z M400 300v375l150 213l100 212h50v-175l-50 -225h450v-125l-250 -375h-214l-136 100h-100z" /> -<glyph unicode="&#xe126;" d="M0 400v600h200v-600h-200zM300 525v400q0 75 100 75h61q124 100 139 100h250q46 0 83 -57l238 -344q29 -31 29 -74v-100q0 -44 -30.5 -84.5t-69.5 -40.5h-328q28 -118 28 -125v-150q0 -44 -30.5 -84.5t-69.5 -40.5h-50q-27 0 -51 20t-38 48l-96 198l-145 196 q-20 26 -20 63zM400 525l150 -212l100 -213h50v175l-50 225h450v125l-250 375h-214l-136 -100h-100v-375z" /> -<glyph unicode="&#xe127;" d="M8 200v600h200v-600h-200zM308 275v525q0 17 14 35.5t28 28.5l14 9l362 230q14 6 25 6q17 0 29 -12l109 -112q14 -14 14 -34q0 -18 -11 -32l-85 -121h302q85 0 138.5 -38t53.5 -110t-54.5 -111t-138.5 -39h-107l-130 -339q-7 -22 -20.5 -41.5t-28.5 -19.5h-341 q-7 0 -90 81t-83 94zM408 289l100 -89h293l131 339q6 21 19.5 41t28.5 20h203q16 0 25 15t9 36q0 20 -9 34.5t-25 14.5h-457h-6.5h-7.5t-6.5 0.5t-6 1t-5 1.5t-5.5 2.5t-4 4t-4 5.5q-5 12 -5 20q0 14 10 27l147 183l-86 83l-339 -236v-503z" /> -<glyph unicode="&#xe128;" d="M-101 651q0 72 54 110t139 38l302 -1l-85 121q-11 16 -11 32q0 21 14 34l109 113q13 12 29 12q11 0 25 -6l365 -230q7 -4 17 -10.5t26.5 -26t16.5 -36.5v-526q0 -13 -86 -93.5t-94 -80.5h-341q-16 0 -29.5 20t-19.5 41l-130 339h-107q-84 0 -139 39t-55 111zM-1 601h222 q15 0 28.5 -20.5t19.5 -40.5l131 -339h293l107 89v502l-343 237l-87 -83l145 -184q10 -11 10 -26q0 -11 -5 -20q-1 -3 -3.5 -5.5l-4 -4t-5 -2.5t-5.5 -1.5t-6.5 -1t-6.5 -0.5h-7.5h-6.5h-476v-100zM1000 201v600h200v-600h-200z" /> -<glyph unicode="&#xe129;" d="M97 719l230 -363q4 -6 10.5 -15.5t26 -25t36.5 -15.5h525q13 0 94 83t81 90v342q0 15 -20 28.5t-41 19.5l-339 131v106q0 84 -39 139t-111 55t-110 -53.5t-38 -138.5v-302l-121 84q-15 12 -33.5 11.5t-32.5 -13.5l-112 -110q-22 -22 -6 -53zM172 739l83 86l183 -146 q22 -18 47 -5q3 1 5.5 3.5l4 4t2.5 5t1.5 5.5t1 6.5t0.5 6.5v7.5v6.5v456q0 22 25 31t50 -0.5t25 -30.5v-202q0 -16 20 -29.5t41 -19.5l339 -130v-294l-89 -100h-503zM400 0v200h600v-200h-600z" /> -<glyph unicode="&#xe130;" d="M2 585q-16 -31 6 -53l112 -110q13 -13 32 -13.5t34 10.5l121 85q0 -51 -0.5 -153.5t-0.5 -148.5q0 -84 38.5 -138t110.5 -54t111 55t39 139v106l339 131q20 6 40.5 19.5t20.5 28.5v342q0 7 -81 90t-94 83h-525q-17 0 -35.5 -14t-28.5 -28l-10 -15zM77 565l236 339h503 l89 -100v-294l-340 -130q-20 -6 -40 -20t-20 -29v-202q0 -22 -25 -31t-50 0t-25 31v456v14.5t-1.5 11.5t-5 12t-9.5 7q-24 13 -46 -5l-184 -146zM305 1104v200h600v-200h-600z" /> -<glyph unicode="&#xe131;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q162 0 299.5 -80t217.5 -218t80 -300t-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM298 701l2 -201h300l-2 -194l402 294l-402 298v-197h-300z" /> -<glyph unicode="&#xe132;" d="M0 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t231.5 47.5q122 0 232.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-218 -217.5t-300 -80t-299.5 80t-217.5 217.5t-80 299.5zM200 600l402 -294l-2 194h300l2 201h-300v197z" /> -<glyph unicode="&#xe133;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q162 0 299.5 -80t217.5 -218t80 -300t-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM300 600h200v-300h200v300h200l-300 400z" /> -<glyph unicode="&#xe134;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q162 0 299.5 -80t217.5 -218t80 -300t-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM300 600l300 -400l300 400h-200v300h-200v-300h-200z" /> -<glyph unicode="&#xe135;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM254 780q-8 -33 5.5 -92.5t7.5 -87.5q0 -9 17 -44t16 -60 q12 0 23 -5.5t23 -15t20 -13.5q24 -12 108 -42q22 -8 53 -31.5t59.5 -38.5t57.5 -11q8 -18 -15 -55t-20 -57q42 -71 87 -80q0 -6 -3 -15.5t-3.5 -14.5t4.5 -17q104 -3 221 112q30 29 47 47t34.5 49t20.5 62q-14 9 -37 9.5t-36 7.5q-14 7 -49 15t-52 19q-9 0 -39.5 -0.5 t-46.5 -1.5t-39 -6.5t-39 -16.5q-50 -35 -66 -12q-4 2 -3.5 25.5t0.5 25.5q-6 13 -26.5 17t-24.5 7q2 22 -2 41t-16.5 28t-38.5 -20q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q12 -19 32 -37.5t34 -27.5l14 -8q0 3 9.5 39.5t5.5 57.5 q-4 23 14.5 44.5t22.5 31.5q5 14 10 35t8.5 31t15.5 22.5t34 21.5q-6 18 10 37q8 0 23.5 -1.5t24.5 -1.5t20.5 4.5t20.5 15.5q-10 23 -30.5 42.5t-38 30t-49 26.5t-43.5 23q11 39 2 44q31 -13 58 -14.5t39 3.5l11 4q7 36 -16.5 53.5t-64.5 28.5t-56 23q-19 -3 -37 0 q-15 -12 -36.5 -21t-34.5 -12t-44 -8t-39 -6q-15 -3 -45.5 0.5t-45.5 -2.5q-21 -7 -52 -26.5t-34 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -90.5t-29.5 -79.5zM518 916q3 12 16 30t16 25q10 -10 18.5 -10t14 6t14.5 14.5t16 12.5q0 -24 17 -66.5t17 -43.5 q-9 2 -31 5t-36 5t-32 8t-30 14zM692 1003h1h-1z" /> -<glyph unicode="&#xe136;" d="M0 164.5q0 21.5 15 37.5l600 599q-33 101 6 201.5t135 154.5q164 92 306 -9l-259 -138l145 -232l251 126q13 -175 -151 -267q-123 -70 -253 -23l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5z" /> -<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M0 196v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM0 596v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5zM0 996v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM600 596h500v100h-500v-100zM800 196h300v100h-300v-100zM900 996h200v100h-200v-100z" /> -<glyph unicode="&#xe138;" d="M100 1100v100h1000v-100h-1000zM150 1000h900l-350 -500v-300l-200 -200v500z" /> -<glyph unicode="&#xe139;" d="M0 200v200h1200v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM0 500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500z M500 1000h200v100h-200v-100z" /> -<glyph unicode="&#xe140;" d="M0 0v400l129 -129l200 200l142 -142l-200 -200l129 -129h-400zM0 800l129 129l200 -200l142 142l-200 200l129 129h-400v-400zM729 329l142 142l200 -200l129 129v-400h-400l129 129zM729 871l200 200l-129 129h400v-400l-129 129l-200 -200z" /> -<glyph unicode="&#xe141;" d="M0 596q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM182 596q0 -172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM291 655 q0 23 15.5 38.5t38.5 15.5t39 -16t16 -38q0 -23 -16 -39t-39 -16q-22 0 -38 16t-16 39zM400 850q0 22 16 38.5t39 16.5q22 0 38 -16t16 -39t-16 -39t-38 -16q-23 0 -39 16.5t-16 38.5zM514 609q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 22 16 38.5t39 16.5 q22 0 38 -16t16 -39t-16 -39t-38 -16q-14 0 -29 10l-55 -145q17 -22 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5zM800 655q0 22 16 38t39 16t38.5 -15.5t15.5 -38.5t-16 -39t-38 -16q-23 0 -39 16t-16 39z" /> -<glyph unicode="&#xe142;" d="M-40 375q-13 -95 35 -173q35 -57 94 -89t129 -32q63 0 119 28q33 16 65 40.5t52.5 45.5t59.5 64q40 44 57 61l394 394q35 35 47 84t-3 96q-27 87 -117 104q-20 2 -29 2q-46 0 -78.5 -16.5t-67.5 -51.5l-389 -396l-7 -7l69 -67l377 373q20 22 39 38q23 23 50 23 q38 0 53 -36q16 -39 -20 -75l-547 -547q-52 -52 -125 -52q-55 0 -100 33t-54 96q-5 35 2.5 66t31.5 63t42 50t56 54q24 21 44 41l348 348q52 52 82.5 79.5t84 54t107.5 26.5q25 0 48 -4q95 -17 154 -94.5t51 -175.5q-7 -101 -98 -192l-252 -249l-253 -256l7 -7l69 -60 l517 511q67 67 95 157t11 183q-16 87 -67 154t-130 103q-69 33 -152 33q-107 0 -197 -55q-40 -24 -111 -95l-512 -512q-68 -68 -81 -163z" /> -<glyph unicode="&#xe143;" d="M80 784q0 131 98.5 229.5t230.5 98.5q143 0 241 -129q103 129 246 129q129 0 226 -98.5t97 -229.5q0 -46 -17.5 -91t-61 -99t-77 -89.5t-104.5 -105.5q-197 -191 -293 -322l-17 -23l-16 23q-43 58 -100 122.5t-92 99.5t-101 100q-71 70 -104.5 105.5t-77 89.5t-61 99 t-17.5 91zM250 784q0 -27 30.5 -70t61.5 -75.5t95 -94.5l22 -22q93 -90 190 -201q82 92 195 203l12 12q64 62 97.5 97t64.5 79t31 72q0 71 -48 119.5t-105 48.5q-74 0 -132 -83l-118 -171l-114 174q-51 80 -123 80q-60 0 -109.5 -49.5t-49.5 -118.5z" /> -<glyph unicode="&#xe144;" d="M57 353q0 -95 66 -159l141 -142q68 -66 159 -66q93 0 159 66l283 283q66 66 66 159t-66 159l-141 141q-8 9 -19 17l-105 -105l212 -212l-389 -389l-247 248l95 95l-18 18q-46 45 -75 101l-55 -55q-66 -66 -66 -159zM269 706q0 -93 66 -159l141 -141q7 -7 19 -17l105 105 l-212 212l389 389l247 -247l-95 -96l18 -17q47 -49 77 -100l29 29q35 35 62.5 88t27.5 96q0 93 -66 159l-141 141q-66 66 -159 66q-95 0 -159 -66l-283 -283q-66 -64 -66 -159z" /> -<glyph unicode="&#xe145;" d="M200 100v953q0 21 30 46t81 48t129 38t163 15t162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5zM300 300h600v700h-600v-700zM496 150q0 -43 30.5 -73.5t73.5 -30.5t73.5 30.5t30.5 73.5t-30.5 73.5t-73.5 30.5 t-73.5 -30.5t-30.5 -73.5z" /> -<glyph unicode="&#xe146;" d="M0 0l303 380l207 208l-210 212h300l267 279l-35 36q-15 14 -15 35t15 35q14 15 35 15t35 -15l283 -282q15 -15 15 -36t-15 -35q-14 -15 -35 -15t-35 15l-36 35l-279 -267v-300l-212 210l-208 -207z" /> -<glyph unicode="&#xe148;" d="M295 433h139q5 -77 48.5 -126.5t117.5 -64.5v335q-6 1 -15.5 4t-11.5 3q-46 14 -79 26.5t-72 36t-62.5 52t-40 72.5t-16.5 99q0 92 44 159.5t109 101t144 40.5v78h100v-79q38 -4 72.5 -13.5t75.5 -31.5t71 -53.5t51.5 -84t24.5 -118.5h-159q-8 72 -35 109.5t-101 50.5 v-307l64 -14q34 -7 64 -16.5t70 -31.5t67.5 -52t47.5 -80.5t20 -112.5q0 -139 -89 -224t-244 -96v-77h-100v78q-152 17 -237 104q-40 40 -52.5 93.5t-15.5 139.5zM466 889q0 -29 8 -51t16.5 -34t29.5 -22.5t31 -13.5t38 -10q7 -2 11 -3v274q-61 -8 -97.5 -37.5t-36.5 -102.5 zM700 237q170 18 170 151q0 64 -44 99.5t-126 60.5v-311z" /> -<glyph unicode="&#xe149;" d="M100 600v100h166q-24 49 -44 104q-10 26 -14.5 55.5t-3 72.5t25 90t68.5 87q97 88 263 88q129 0 230 -89t101 -208h-153q0 52 -34 89.5t-74 51.5t-76 14q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -28 16.5 -69.5t28 -62.5t41.5 -72h241v-100h-197q8 -50 -2.5 -115 t-31.5 -94q-41 -59 -99 -113q35 11 84 18t70 7q33 1 103 -16t103 -17q76 0 136 30l50 -147q-41 -25 -80.5 -36.5t-59 -13t-61.5 -1.5q-23 0 -128 33t-155 29q-39 -4 -82 -17t-66 -25l-24 -11l-55 145l16.5 11t15.5 10t13.5 9.5t14.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221z" /> -<glyph unicode="&#xe150;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM602 900l298 300l298 -300h-198v-900h-200v900h-198z" /> -<glyph unicode="&#xe151;" d="M2 300h198v900h200v-900h198l-298 -300zM700 0v200h100v-100h200v-100h-300zM700 400v100h300v-200h-99v-100h-100v100h99v100h-200zM700 700v500h300v-500h-100v100h-100v-100h-100zM801 900h100v200h-100v-200z" /> -<glyph unicode="&#xe152;" d="M2 300h198v900h200v-900h198l-298 -300zM700 0v500h300v-500h-100v100h-100v-100h-100zM700 700v200h100v-100h200v-100h-300zM700 1100v100h300v-200h-99v-100h-100v100h99v100h-200zM801 200h100v200h-100v-200z" /> -<glyph unicode="&#xe153;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM800 100v400h300v-500h-100v100h-200zM800 1100v100h200v-500h-100v400h-100zM901 200h100v200h-100v-200z" /> -<glyph unicode="&#xe154;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM800 400v100h200v-500h-100v400h-100zM800 800v400h300v-500h-100v100h-200zM901 900h100v200h-100v-200z" /> -<glyph unicode="&#xe155;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM700 100v200h500v-200h-500zM700 400v200h400v-200h-400zM700 700v200h300v-200h-300zM700 1000v200h200v-200h-200z" /> -<glyph unicode="&#xe156;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM700 100v200h200v-200h-200zM700 400v200h300v-200h-300zM700 700v200h400v-200h-400zM700 1000v200h500v-200h-500z" /> -<glyph unicode="&#xe157;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q162 0 281 -118.5t119 -281.5v-300q0 -165 -118.5 -282.5t-281.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500z" /> -<glyph unicode="&#xe158;" d="M0 400v300q0 163 119 281.5t281 118.5h300q165 0 282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-163 0 -281.5 117.5t-118.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM400 300l333 250l-333 250v-500z" /> -<glyph unicode="&#xe159;" d="M0 400v300q0 163 117.5 281.5t282.5 118.5h300q163 0 281.5 -119t118.5 -281v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM300 700l250 -333l250 333h-500z" /> -<glyph unicode="&#xe160;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q165 0 282.5 -117.5t117.5 -282.5v-300q0 -162 -118.5 -281t-281.5 -119h-300q-165 0 -282.5 118.5t-117.5 281.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM300 400h500l-250 333z" /> -<glyph unicode="&#xe161;" d="M0 400v300h300v200l400 -350l-400 -350v200h-300zM500 0v200h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-500v200h400q165 0 282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-400z" /> -<glyph unicode="&#xe162;" d="M217 519q8 -19 31 -19h302q-155 -438 -160 -458q-5 -21 4 -32l9 -8h9q14 0 26 15q11 13 274.5 321.5t264.5 308.5q14 19 5 36q-8 17 -31 17l-301 -1q1 4 78 219.5t79 227.5q2 15 -5 27l-9 9h-9q-15 0 -25 -16q-4 -6 -98 -111.5t-228.5 -257t-209.5 -237.5q-16 -19 -6 -41 z" /> -<glyph unicode="&#xe163;" d="M0 400q0 -165 117.5 -282.5t282.5 -117.5h300q47 0 100 15v185h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5h500v185q-14 4 -114 7.5t-193 5.5l-93 2q-165 0 -282.5 -117.5t-117.5 -282.5v-300zM600 400v300h300v200l400 -350l-400 -350v200h-300z " /> -<glyph unicode="&#xe164;" d="M0 400q0 -165 117.5 -282.5t282.5 -117.5h300q163 0 281.5 117.5t118.5 282.5v98l-78 73l-122 -123v-148q0 -41 -29.5 -70.5t-70.5 -29.5h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5h156l118 122l-74 78h-100q-165 0 -282.5 -117.5t-117.5 -282.5 v-300zM496 709l353 342l-149 149h500v-500l-149 149l-342 -353z" /> -<glyph unicode="&#xe165;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM406 600 q0 80 57 137t137 57t137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137z" /> -<glyph unicode="&#xe166;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 800l445 -500l450 500h-295v400h-300v-400h-300zM900 150h100v50h-100v-50z" /> -<glyph unicode="&#xe167;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 700h300v-300h300v300h295l-445 500zM900 150h100v50h-100v-50z" /> -<glyph unicode="&#xe168;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 705l305 -305l596 596l-154 155l-442 -442l-150 151zM900 150h100v50h-100v-50z" /> -<glyph unicode="&#xe169;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 988l97 -98l212 213l-97 97zM200 400l697 1l3 699l-250 -239l-149 149l-212 -212l149 -149zM900 150h100v50h-100v-50z" /> -<glyph unicode="&#xe170;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM200 612l212 -212l98 97l-213 212zM300 1200l239 -250l-149 -149l212 -212l149 148l249 -237l-1 697zM900 150h100v50h-100v-50z" /> -<glyph unicode="&#xe171;" d="M23 415l1177 784v-1079l-475 272l-310 -393v416h-392zM494 210l672 938l-672 -712v-226z" /> -<glyph unicode="&#xe172;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-850q0 -21 -15 -35.5t-35 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 1000h100v200h-100v-200z" /> -<glyph unicode="&#xe173;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-218l-276 -275l-120 120l-126 -127h-378v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM581 306l123 123l120 -120l353 352l123 -123l-475 -476zM600 1000h100v200h-100v-200z" /> -<glyph unicode="&#xe174;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-269l-103 -103l-170 170l-298 -298h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 1000h100v200h-100v-200zM700 133l170 170l-170 170l127 127l170 -170l170 170l127 -128l-170 -169l170 -170 l-127 -127l-170 170l-170 -170z" /> -<glyph unicode="&#xe175;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-300h-400v-200h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 300l300 -300l300 300h-200v300h-200v-300h-200zM600 1000v200h100v-200h-100z" /> -<glyph unicode="&#xe176;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-402l-200 200l-298 -298h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 300h200v-300h200v300h200l-300 300zM600 1000v200h100v-200h-100z" /> -<glyph unicode="&#xe177;" d="M0 250q0 -21 14.5 -35.5t35.5 -14.5h1100q21 0 35.5 14.5t14.5 35.5v550h-1200v-550zM0 900h1200v150q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-150zM100 300v200h400v-200h-400z" /> -<glyph unicode="&#xe178;" d="M0 400l300 298v-198h400v-200h-400v-198zM100 800v200h100v-200h-100zM300 800v200h100v-200h-100zM500 800v200h400v198l300 -298l-300 -298v198h-400zM800 300v200h100v-200h-100zM1000 300h100v200h-100v-200z" /> -<glyph unicode="&#xe179;" d="M100 700v400l50 100l50 -100v-300h100v300l50 100l50 -100v-300h100v300l50 100l50 -100v-400l-100 -203v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447zM800 597q0 -29 10.5 -55.5t25 -43t29 -28.5t25.5 -18l10 -5v-397q0 -21 14.5 -35.5 t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v1106q0 31 -18 40.5t-44 -7.5l-276 -116q-25 -17 -43.5 -51.5t-18.5 -65.5v-359z" /> -<glyph unicode="&#xe180;" d="M100 0h400v56q-75 0 -87.5 6t-12.5 44v394h500v-394q0 -38 -12.5 -44t-87.5 -6v-56h400v56q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v888q0 22 25 34.5t50 13.5l25 2v56h-400v-56q75 0 87.5 -6t12.5 -44v-394h-500v394q0 38 12.5 44t87.5 6v56h-400v-56q4 0 11 -0.5 t24 -3t30 -7t24 -15t11 -24.5v-888q0 -22 -25 -34.5t-50 -13.5l-25 -2v-56z" /> -<glyph unicode="&#xe181;" d="M0 300q0 -41 29.5 -70.5t70.5 -29.5h300q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-300q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM100 100h400l200 200h105l295 98v-298h-425l-100 -100h-375zM100 300v200h300v-200h-300zM100 600v200h300v-200h-300z M100 1000h400l200 -200v-98l295 98h105v200h-425l-100 100h-375zM700 402v163l400 133v-163z" /> -<glyph unicode="&#xe182;" d="M16.5 974.5q0.5 -21.5 16 -90t46.5 -140t104 -177.5t175 -208q103 -103 207.5 -176t180 -103.5t137 -47t92.5 -16.5l31 1l163 162q17 18 13.5 41t-22.5 37l-192 136q-19 14 -45 12t-42 -19l-118 -118q-142 101 -268 227t-227 268l118 118q17 17 20 41.5t-11 44.5 l-139 194q-14 19 -36.5 22t-40.5 -14l-162 -162q-1 -11 -0.5 -32.5z" /> -<glyph unicode="&#xe183;" d="M0 50v212q0 20 10.5 45.5t24.5 39.5l365 303v50q0 4 1 10.5t12 22.5t30 28.5t60 23t97 10.5t97 -10t60 -23.5t30 -27.5t12 -24l1 -10v-50l365 -303q14 -14 24.5 -39.5t10.5 -45.5v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-20 0 -35 14.5t-15 35.5zM0 712 q0 -21 14.5 -33.5t34.5 -8.5l202 33q20 4 34.5 21t14.5 38v146q141 24 300 24t300 -24v-146q0 -21 14.5 -38t34.5 -21l202 -33q20 -4 34.5 8.5t14.5 33.5v200q-6 8 -19 20.5t-63 45t-112 57t-171 45t-235 20.5q-92 0 -175 -10.5t-141.5 -27t-108.5 -36.5t-81.5 -40 t-53.5 -36.5t-31 -27.5l-9 -10v-200z" /> -<glyph unicode="&#xe184;" d="M100 0v100h1100v-100h-1100zM175 200h950l-125 150v250l100 100v400h-100v-200h-100v200h-200v-200h-100v200h-200v-200h-100v200h-100v-400l100 -100v-250z" /> -<glyph unicode="&#xe185;" d="M100 0h300v400q0 41 -29.5 70.5t-70.5 29.5h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-400zM500 0v1000q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-1000h-300zM900 0v700q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-700h-300z" /> -<glyph unicode="&#xe186;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v300h-200v100h200v100h-300v-300h200v-100h-200v-100zM600 300h200v100h100v300h-100v100h-200v-500 zM700 400v300h100v-300h-100z" /> -<glyph unicode="&#xe187;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h100v200h100v-200h100v500h-100v-200h-100v200h-100v-500zM600 300h200v100h100v300h-100v100h-200v-500 zM700 400v300h100v-300h-100z" /> -<glyph unicode="&#xe188;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v100h-200v300h200v100h-300v-500zM600 300h300v100h-200v300h200v100h-300v-500z" /> -<glyph unicode="&#xe189;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 550l300 -150v300zM600 400l300 150l-300 150v-300z" /> -<glyph unicode="&#xe190;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300v500h700v-500h-700zM300 400h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130v-300zM575 549 q0 -65 27 -107t68 -42h130v300h-130q-38 0 -66.5 -43t-28.5 -108z" /> -<glyph unicode="&#xe191;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v300h-200v100h200v100h-300v-300h200v-100h-200v-100zM601 300h100v100h-100v-100zM700 700h100 v-400h100v500h-200v-100z" /> -<glyph unicode="&#xe192;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v400h-200v100h-100v-500zM301 400v200h100v-200h-100zM601 300h100v100h-100v-100zM700 700h100 v-400h100v500h-200v-100z" /> -<glyph unicode="&#xe193;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 700v100h300v-300h-99v-100h-100v100h99v200h-200zM201 300v100h100v-100h-100zM601 300v100h100v-100h-100z M700 700v100h200v-500h-100v400h-100z" /> -<glyph unicode="&#xe194;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM400 500v200 l100 100h300v-100h-300v-200h300v-100h-300z" /> -<glyph unicode="&#xe195;" d="M0 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM182 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM400 400v400h300 l100 -100v-100h-100v100h-200v-100h200v-100h-200v-100h-100zM700 400v100h100v-100h-100z" /> -<glyph unicode="&#xe197;" d="M-14 494q0 -80 56.5 -137t135.5 -57h222v300h400v-300h128q120 0 205 86.5t85 207.5t-85 207t-205 86q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5zM300 200h200v300h200v-300h200 l-300 -300z" /> -<glyph unicode="&#xe198;" d="M-14 494q0 -80 56.5 -137t135.5 -57h8l414 414l403 -403q94 26 154.5 104.5t60.5 178.5q0 120 -85 206.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5zM300 200l300 300 l300 -300h-200v-300h-200v300h-200z" /> -<glyph unicode="&#xe199;" d="M100 200h400v-155l-75 -45h350l-75 45v155h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170z" /> -<glyph unicode="&#xe200;" d="M121 700q0 -53 28.5 -97t75.5 -65q-4 -16 -4 -38q0 -74 52.5 -126.5t126.5 -52.5q56 0 100 30v-306l-75 -45h350l-75 45v306q46 -30 100 -30q74 0 126.5 52.5t52.5 126.5q0 24 -9 55q50 32 79.5 83t29.5 112q0 90 -61.5 155.5t-150.5 71.5q-26 89 -99.5 145.5 t-167.5 56.5q-116 0 -197.5 -81.5t-81.5 -197.5q0 -4 1 -11.5t1 -11.5q-14 2 -23 2q-74 0 -126.5 -52.5t-52.5 -126.5z" /> -</font> -</defs></svg> \ No newline at end of file diff --git a/assets/fonts/glyphicons-halflings-regular.ttf b/assets/fonts/glyphicons-halflings-regular.ttf deleted file mode 100644 index 67fa00bf..00000000 Binary files a/assets/fonts/glyphicons-halflings-regular.ttf and /dev/null differ diff --git a/assets/fonts/glyphicons-halflings-regular.woff b/assets/fonts/glyphicons-halflings-regular.woff deleted file mode 100644 index 8c54182a..00000000 Binary files a/assets/fonts/glyphicons-halflings-regular.woff and /dev/null differ diff --git a/assets/images/404.png b/assets/images/404.png deleted file mode 100644 index 95d6df9f..00000000 Binary files a/assets/images/404.png and /dev/null differ diff --git a/assets/images/access.png b/assets/images/access.png deleted file mode 100644 index 56530fc5..00000000 Binary files a/assets/images/access.png and /dev/null differ diff --git a/assets/images/access1.png b/assets/images/access1.png deleted file mode 100644 index b7fc76c4..00000000 Binary files a/assets/images/access1.png and /dev/null differ diff --git a/assets/images/access2.jpg b/assets/images/access2.jpg deleted file mode 100644 index 30e553c4..00000000 Binary files a/assets/images/access2.jpg and /dev/null differ diff --git a/assets/images/access3.jpg b/assets/images/access3.jpg deleted file mode 100644 index d388ddb4..00000000 Binary files a/assets/images/access3.jpg and /dev/null differ diff --git a/assets/index.html b/assets/index.html deleted file mode 100644 index 1e0c4388..00000000 --- a/assets/index.html +++ /dev/null @@ -1,891 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - - <title>Siddharth Industries</title> - - <link href="css/bootstrap.min.css" rel="stylesheet"> - <link href="font-awesome/css/font-awesome.css" rel="stylesheet"> - - <!-- Morris --> - <link href="css/plugins/morris/morris-0.4.3.min.css" rel="stylesheet"> - - <link href="css/animate.css" rel="stylesheet"> - <link href="css/style.css" rel="stylesheet"> - -</head> - -<body> - <div id="wrapper"> - <nav class="navbar-default navbar-static-side" role="navigation"> - <div class="sidebar-collapse"> - <ul class="nav" id="side-menu"> - <li class="nav-header"> - <div class="dropdown profile-element"> <span> - <img alt="image" class="img-circle" src="img/profile_small.jpg" /> - </span> - <a data-toggle="dropdown" class="dropdown-toggle" href="#"> - <span class="clear"> <span class="block m-t-xs"> <strong class="font-bold">saravana</strong> - </span> <span class="text-muted text-xs block">Admin <b class="caret"></b></span> </span> </a> - <ul class="dropdown-menu animated fadeInRight m-t-xs"> - <li><a href="profile.html">Profile</a></li> - <li><a href="contacts.html">Contacts</a></li> - <li><a href="mailbox.html">Mailbox</a></li> - <li class="divider"></li> - <li><a href="login.html">Logout</a></li> - </ul> - </div> - - </li> - <li class="active"> - <a href="index.html"><i class="fa fa-home"></i> <span class="nav-label">Home</span></a> - - </li> - <li> - <a href="purchase_order.html"><i class="fa fa-cart-plus"></i> <span class="nav-label">Purchase Order</span></a> - - </li> - <li> - <a href="supplier.html"><i class="fa fa-users"></i> <span class="nav-label">Supplier Details</span></a> - - </li> - <li> - <a href="raw_material.html"><i class="fa fa-cogs"></i> <span class="nav-label">Raw Material Details</span></a> - - </li> - <li> - <a href="register.html"><i class="fa fa-user"></i> <span class="nav-label">Create New User</span></a> - </li> - <!-- <li> - <a href="layouts.html"><i class="fa fa-diamond"></i> <span class="nav-label">Layouts</span> <span class="label label-primary pull-right">NEW</span></a> - </li> - <li> - <a href="#"><i class="fa fa-bar-chart-o"></i> <span class="nav-label">Graphs</span><span class="fa arrow"></span></a> - <ul class="nav nav-second-level"> - <li><a href="graph_flot.html">Flot Charts</a></li> - <li><a href="graph_morris.html">Morris.js Charts</a></li> - <li><a href="graph_rickshaw.html">Rickshaw Charts</a></li> - <li><a href="graph_chartjs.html">Chart.js</a></li> - <li><a href="graph_peity.html">Peity Charts</a></li> - <li><a href="graph_sparkline.html">Sparkline Charts</a></li> - </ul> - </li> - <li> - <a href="mailbox.html"><i class="fa fa-envelope"></i> <span class="nav-label">Mailbox </span><span class="label label-warning pull-right">16/24</span></a> - <ul class="nav nav-second-level"> - <li><a href="mailbox.html">Inbox</a></li> - <li><a href="mail_detail.html">Email view</a></li> - <li><a href="mail_compose.html">Compose email</a></li> - <li><a href="email_template.html">Email templates</a></li> - </ul> - </li> - <li> - <a href="widgets.html"><i class="fa fa-flask"></i> <span class="nav-label">Widgets</span> </a> - </li> - <li> - <a href="#"><i class="fa fa-edit"></i> <span class="nav-label">Forms</span><span class="fa arrow"></span></a> - <ul class="nav nav-second-level"> - <li><a href="form_basic.html">Basic form</a></li> - <li><a href="form_advanced.html">Advanced Plugins</a></li> - <li><a href="form_wizard.html">Wizard</a></li> - <li><a href="form_file_upload.html">File Upload</a></li> - <li><a href="form_editors.html">Text Editor</a></li> - </ul> - </li> - <li> - <a href="#"><i class="fa fa-desktop"></i> <span class="nav-label">App Views</span> <span class="pull-right label label-primary">SPECIAL</span></a> - <ul class="nav nav-second-level"> - <li><a href="contacts.html">Contacts</a></li> - <li><a href="profile.html">Profile</a></li> - <li><a href="projects.html">Projects</a></li> - <li><a href="project_detail.html">Project detail</a></li> - <li><a href="file_manager.html">File manager</a></li> - <li><a href="calendar.html">Calendar</a></li> - <li><a href="faq.html">FAQ</a></li> - <li><a href="timeline.html">Timeline</a></li> - <li><a href="pin_board.html">Pin board</a></li> - </ul> - </li> - <li> - <a href="#"><i class="fa fa-files-o"></i> <span class="nav-label">Other Pages</span><span class="fa arrow"></span></a> - <ul class="nav nav-second-level"> - <li><a href="search_results.html">Search results</a></li> - <li><a href="lockscreen.html">Lockscreen</a></li> - <li><a href="invoice.html">Invoice</a></li> - <li><a href="login.html">Login</a></li> - <li><a href="login_two_columns.html">Login v.2</a></li> - <li><a href="register.html">Register</a></li> - <li><a href="404.html">404 Page</a></li> - <li><a href="500.html">500 Page</a></li> - <li><a href="empty_page.html">Empty page</a></li> - </ul> - </li> - <li> - <a href="#"><i class="fa fa-globe"></i> <span class="nav-label">Miscellaneous</span><span class="label label-info pull-right">NEW</span></a> - <ul class="nav nav-second-level"> - <li><a href="toastr_notifications.html">Notification</a></li> - <li><a href="nestable_list.html">Nestable list</a></li> - <li><a href="timeline_2.html">Timeline v.2</a></li> - <li><a href="forum_main.html">Forum view</a></li> - <li><a href="google_maps.html">Google maps</a></li> - <li><a href="code_editor.html">Code editor</a></li> - <li><a href="modal_window.html">Modal window</a></li> - <li><a href="validation.html">Validation</a></li> - <li><a href="tree_view.html">Tree view</a></li> - <li><a href="chat_view.html">Chat view</a></li> - </ul> - </li> - <li> - <a href="#"><i class="fa fa-flask"></i> <span class="nav-label">UI Elements</span><span class="fa arrow"></span></a> - <ul class="nav nav-second-level"> - <li><a href="typography.html">Typography</a></li> - <li><a href="icons.html">Icons</a></li> - <li><a href="draggable_panels.html">Draggable Panels</a></li> - <li><a href="buttons.html">Buttons</a></li> - <li><a href="video.html">Video</a></li> - <li><a href="tabs_panels.html">Tabs & Panels</a></li> - <li><a href="notifications.html">Notifications & Tooltips</a></li> - <li><a href="badges_labels.html">Badges, Labels, Progress</a></li> - </ul> - </li> - - <li> - <a href="grid_options.html"><i class="fa fa-laptop"></i> <span class="nav-label">Grid options</span></a> - </li> - <li> - <a href="#"><i class="fa fa-table"></i> <span class="nav-label">Tables</span><span class="fa arrow"></span></a> - <ul class="nav nav-second-level"> - <li><a href="table_basic.html">Static Tables</a></li> - <li><a href="table_data_tables.html">Data Tables</a></li> - <li><a href="jq_grid.html">jqGrid</a></li> - </ul> - </li> - <li> - <a href="#"><i class="fa fa-picture-o"></i> <span class="nav-label">Gallery</span><span class="fa arrow"></span></a> - <ul class="nav nav-second-level"> - <li><a href="basic_gallery.html">Lightbox Gallery</a></li> - <li><a href="carousel.html">Bootstrap Carusela</a></li> - - </ul> - </li> - <li> - <a href="#"><i class="fa fa-sitemap"></i> <span class="nav-label">Menu Levels </span><span class="fa arrow"></span></a> - <ul class="nav nav-second-level"> - <li> - <a href="#">Third Level <span class="fa arrow"></span></a> - <ul class="nav nav-third-level"> - <li> - <a href="#">Third Level Item</a> - </li> - <li> - <a href="#">Third Level Item</a> - </li> - <li> - <a href="#">Third Level Item</a> - </li> - - </ul> - </li> - <li><a href="#">Second Level Item</a></li> - <li> - <a href="#">Second Level Item</a></li> - <li> - <a href="#">Second Level Item</a></li> - </ul> - </li> - <li> - <a href="css_animation.html"><i class="fa fa-magic"></i> <span class="nav-label">CSS Animations </span><span class="label label-info pull-right">62</span></a> - </li> - <li class="landing_link"> - <a target="_blank" href="Landing_page/index.html"><i class="fa fa-star"></i> <span class="nav-label">Landing Page</span> <span class="label label-warning pull-right">NEW</span></a> - </li> - <li class="special_link"> - <a href="package.html"><i class="fa fa-database"></i> <span class="nav-label">Package</span></a> - </li>--> - </ul> - - </div> - </nav> - - <div id="page-wrapper" class="gray-bg"> - <div class="row border-bottom"> - <nav class="navbar navbar-static-top white-bg" role="navigation" style="margin-bottom: 0"> - <div class="navbar-header"> - <a class="navbar-minimalize minimalize-styl-2 btn btn-primary " href="#"><i class="fa fa-bars"></i> </a> - <form role="search" class="navbar-form-custom" method="post" action="search_results.html"> - <div class="form-group"> - <input type="text" placeholder="Search for something..." class="form-control" name="top-search" id="top-search"> - </div> - </form> - </div> - <ul class="nav navbar-top-links navbar-right"> - <li> - <span class="m-r-sm text-muted welcome-message">Welcome to Siddharth Industries</span> - </li> - <!-- <li class="dropdown"> - <a class="dropdown-toggle count-info" data-toggle="dropdown" href="#"> - <i class="fa fa-envelope"></i> <span class="label label-warning">16</span> - </a> - <ul class="dropdown-menu dropdown-messages"> - <li> - <div class="dropdown-messages-box"> - <a href="profile.html" class="pull-left"> - <img alt="image" class="img-circle" src="img/a7.jpg"> - </a> - <div> - <small class="pull-right">46h ago</small> - <strong>Mike Loreipsum</strong> started following <strong>Monica Smith</strong>. <br> - <small class="text-muted">3 days ago at 7:58 pm - 10.06.2014</small> - </div> - </div> - </li> - <li class="divider"></li> - <li> - <div class="dropdown-messages-box"> - <a href="profile.html" class="pull-left"> - <img alt="image" class="img-circle" src="img/a4.jpg"> - </a> - <div> - <small class="pull-right text-navy">5h ago</small> - <strong>Chris Johnatan Overtunk</strong> started following <strong>Monica Smith</strong>. <br> - <small class="text-muted">Yesterday 1:21 pm - 11.06.2014</small> - </div> - </div> - </li> - <li class="divider"></li> - <li> - <div class="dropdown-messages-box"> - <a href="profile.html" class="pull-left"> - <img alt="image" class="img-circle" src="img/profile.jpg"> - </a> - <div> - <small class="pull-right">23h ago</small> - <strong>Monica Smith</strong> love <strong>Kim Smith</strong>. <br> - <small class="text-muted">2 days ago at 2:30 am - 11.06.2014</small> - </div> - </div> - </li> - <li class="divider"></li> - <li> - <div class="text-center link-block"> - <a href="mailbox.html"> - <i class="fa fa-envelope"></i> <strong>Read All Messages</strong> - </a> - </div> - </li> - </ul> - </li> - <li class="dropdown"> - <a class="dropdown-toggle count-info" data-toggle="dropdown" href="#"> - <i class="fa fa-bell"></i> <span class="label label-primary">8</span> - </a> - <ul class="dropdown-menu dropdown-alerts"> - <li> - <a href="mailbox.html"> - <div> - <i class="fa fa-envelope fa-fw"></i> You have 16 messages - <span class="pull-right text-muted small">4 minutes ago</span> - </div> - </a> - </li> - <li class="divider"></li> - <li> - <a href="profile.html"> - <div> - <i class="fa fa-twitter fa-fw"></i> 3 New Followers - <span class="pull-right text-muted small">12 minutes ago</span> - </div> - </a> - </li> - <li class="divider"></li> - <li> - <a href="grid_options.html"> - <div> - <i class="fa fa-upload fa-fw"></i> Server Rebooted - <span class="pull-right text-muted small">4 minutes ago</span> - </div> - </a> - </li> - <li class="divider"></li> - <li> - <div class="text-center link-block"> - <a href="notifications.html"> - <strong>See All Alerts</strong> - <i class="fa fa-angle-right"></i> - </a> - </div> - </li> - </ul> - </li>--> - - - <li> - <a href="login.html"> - <i class="fa fa-sign-out"></i> Log out - </a> - </li> - </ul> - - </nav> - </div> - - - <div class="wrapper wrapper-content"> - <div class="row"> - <div class="col-md-2"> - <div class="ibox float-e-margins"> - <div class="ibox-title"> - <span class="label label-success pull-right">Monthly</span> - <h5>Views</h5> - </div> - <div class="ibox-content"> - <h1 class="no-margins">386,200</h1> - <div class="stat-percent font-bold text-success">98% <i class="fa fa-bolt"></i></div> - <small>Total views</small> - </div> - </div> - </div> - <div class="col-md-2"> - <div class="ibox float-e-margins"> - <div class="ibox-title"> - <span class="label label-info pull-right">Annual</span> - <h5>Orders</h5> - </div> - <div class="ibox-content"> - <h1 class="no-margins">80,800</h1> - <div class="stat-percent font-bold text-info">20% <i class="fa fa-level-up"></i></div> - <small>New orders</small> - </div> - </div> - </div> - - <div class="col-md-4"> - <div class="ibox float-e-margins"> - <div class="ibox-title"> - <span class="label label-primary pull-right">Today</span> - <h5>Vistits</h5> - </div> - <div class="ibox-content"> - - <div class="row"> - <div class="col-md-6"> - <h1 class="no-margins">$ 406,420</h1> - <div class="font-bold text-navy">44% <i class="fa fa-level-up"></i> <small>Rapid pace</small></div> - </div> - <div class="col-md-6"> - <h1 class="no-margins">206,120</h1> - <div class="font-bold text-navy">22% <i class="fa fa-level-up"></i> <small>Slow pace</small></div> - </div> - </div> - - - </div> - </div> - </div> - <div class="col-md-4"> - <div class="ibox float-e-margins"> - <div class="ibox-title"> - <h5>Monthly income</h5> - <div class="ibox-tools"> - <span class="label label-primary">Updated 12.2015</span> - </div> - </div> - <div class="ibox-content no-padding"> - <div class="flot-chart m-t-lg" style="height: 55px;"> - <div class="flot-chart-content" id="flot-chart1"></div> - </div> - </div> - - </div> - </div> - </div> - <div class="row"> - <div class="col-lg-8"> - <div class="ibox float-e-margins"> - <div class="ibox-content"> - <div> - <span class="pull-right text-right"> - <small>Average value of sales in the past month in: <strong>United states</strong></small> - <br/> - All sales: 162,862 - </span> - <h3 class="font-bold no-margins"> - Half-year revenue margin - </h3> - <small>Sales marketing.</small> - </div> - - <div class="m-t-sm"> - - <div class="row"> - <div class="col-md-8"> - <div> - <canvas id="lineChart" height="114"></canvas> - </div> - </div> - <div class="col-md-4"> - <ul class="stat-list m-t-lg"> - <li> - <h2 class="no-margins">2,346</h2> - <small>Total orders in period</small> - <div class="progress progress-mini"> - <div class="progress-bar" style="width: 48%;"></div> - </div> - </li> - <li> - <h2 class="no-margins ">4,422</h2> - <small>Orders in last month</small> - <div class="progress progress-mini"> - <div class="progress-bar" style="width: 60%;"></div> - </div> - </li> - </ul> - </div> - </div> - - </div> - - <div class="m-t-md"> - <small class="pull-right"> - <i class="fa fa-clock-o"> </i> - Update on 16.07.2015 - </small> - <small> - <strong>Analysis of sales:</strong> The value has been changed over time, and last month reached a level over $50,000. - </small> - </div> - - </div> - </div> - </div> - <div class="col-lg-4"> - <div class="ibox float-e-margins"> - <div class="ibox-title"> - <span class="label label-warning pull-right">Data has changed</span> - <h5>User activity</h5> - </div> - <div class="ibox-content"> - <div class="row"> - <div class="col-xs-4"> - <small class="stats-label">Pages / Visit</small> - <h4>236 321.80</h4> - </div> - - <div class="col-xs-4"> - <small class="stats-label">% New Visits</small> - <h4>46.11%</h4> - </div> - <div class="col-xs-4"> - <small class="stats-label">Last week</small> - <h4>432.021</h4> - </div> - </div> - </div> - <div class="ibox-content"> - <div class="row"> - <div class="col-xs-4"> - <small class="stats-label">Pages / Visit</small> - <h4>643 321.10</h4> - </div> - - <div class="col-xs-4"> - <small class="stats-label">% New Visits</small> - <h4>92.43%</h4> - </div> - <div class="col-xs-4"> - <small class="stats-label">Last week</small> - <h4>564.554</h4> - </div> - </div> - </div> - <div class="ibox-content"> - <div class="row"> - <div class="col-xs-4"> - <small class="stats-label">Pages / Visit</small> - <h4>436 547.20</h4> - </div> - - <div class="col-xs-4"> - <small class="stats-label">% New Visits</small> - <h4>150.23%</h4> - </div> - <div class="col-xs-4"> - <small class="stats-label">Last week</small> - <h4>124.990</h4> - </div> - </div> - </div> - </div> - </div> - - </div> - - <div class="row"> - - <div class="col-lg-12"> - <div class="ibox float-e-margins"> - <div class="ibox-title"> - <h5>Custom responsive table </h5> - <div class="ibox-tools"> - <a class="collapse-link"> - <i class="fa fa-chevron-up"></i> - </a> - <a class="dropdown-toggle" data-toggle="dropdown" href="#"> - <i class="fa fa-wrench"></i> - </a> - <ul class="dropdown-menu dropdown-user"> - <li><a href="#">Config option 1</a> - </li> - <li><a href="#">Config option 2</a> - </li> - </ul> - <a class="close-link"> - <i class="fa fa-times"></i> - </a> - </div> - </div> - <div class="ibox-content"> - <div class="row"> - <div class="col-sm-9 m-b-xs"> - <div data-toggle="buttons" class="btn-group"> - <label class="btn btn-sm btn-white"> <input type="radio" id="option1" name="options"> Day </label> - <label class="btn btn-sm btn-white active"> <input type="radio" id="option2" name="options"> Week </label> - <label class="btn btn-sm btn-white"> <input type="radio" id="option3" name="options"> Month </label> - </div> - </div> - <div class="col-sm-3"> - <div class="input-group"><input type="text" placeholder="Search" class="input-sm form-control"> <span class="input-group-btn"> - <button type="button" class="btn btn-sm btn-primary"> Go!</button> </span></div> - </div> - </div> - <div class="table-responsive"> - <table class="table table-striped"> - <thead> - <tr> - - <th>#</th> - <th>Project </th> - <th>Name </th> - <th>Phone </th> - <th>Company </th> - <th>Completed </th> - <th>Task</th> - <th>Date</th> - <th>Action</th> - </tr> - </thead> - <tbody> - <tr> - <td>1</td> - <td>Project <small>This is example of project</small></td> - <td>Patrick Smith</td> - <td>0800 051213</td> - <td>Inceptos Hymenaeos Ltd</td> - <td><span class="pie">0.52/1.561</span></td> - <td>20%</td> - <td>Jul 14, 2013</td> - <td><a href="#"><i class="fa fa-check text-navy"></i></a></td> - </tr> - <tr> - <td>2</td> - <td>Alpha project</td> - <td>Alice Jackson</td> - <td>0500 780909</td> - <td>Nec Euismod In Company</td> - <td><span class="pie">6,9</span></td> - <td>40%</td> - <td>Jul 16, 2013</td> - <td><a href="#"><i class="fa fa-check text-navy"></i></a></td> - </tr> - <tr> - <td>3</td> - <td>Betha project</td> - <td>John Smith</td> - <td>0800 1111</td> - <td>Erat Volutpat</td> - <td><span class="pie">3,1</span></td> - <td>75%</td> - <td>Jul 18, 2013</td> - <td><a href="#"><i class="fa fa-check text-navy"></i></a></td> - </tr> - <tr> - <td>4</td> - <td>Gamma project</td> - <td>Anna Jordan</td> - <td>(016977) 0648</td> - <td>Tellus Ltd</td> - <td><span class="pie">4,9</span></td> - <td>18%</td> - <td>Jul 22, 2013</td> - <td><a href="#"><i class="fa fa-check text-navy"></i></a></td> - </tr> - <tr> - <td>2</td> - <td>Alpha project</td> - <td>Alice Jackson</td> - <td>0500 780909</td> - <td>Nec Euismod In Company</td> - <td><span class="pie">6,9</span></td> - <td>40%</td> - <td>Jul 16, 2013</td> - <td><a href="#"><i class="fa fa-check text-navy"></i></a></td> - </tr> - <tr> - <td>1</td> - <td>Project <small>This is example of project</small></td> - <td>Patrick Smith</td> - <td>0800 051213</td> - <td>Inceptos Hymenaeos Ltd</td> - <td><span class="pie">0.52/1.561</span></td> - <td>20%</td> - <td>Jul 14, 2013</td> - <td><a href="#"><i class="fa fa-check text-navy"></i></a></td> - </tr> - <tr> - <td>4</td> - <td>Gamma project</td> - <td>Anna Jordan</td> - <td>(016977) 0648</td> - <td>Tellus Ltd</td> - <td><span class="pie">4,9</span></td> - <td>18%</td> - <td>Jul 22, 2013</td> - <td><a href="#"><i class="fa fa-check text-navy"></i></a></td> - </tr> - <tr> - <td>1</td> - <td>Project <small>This is example of project</small></td> - <td>Patrick Smith</td> - <td>0800 051213</td> - <td>Inceptos Hymenaeos Ltd</td> - <td><span class="pie">0.52/1.561</span></td> - <td>20%</td> - <td>Jul 14, 2013</td> - <td><a href="#"><i class="fa fa-check text-navy"></i></a></td> - </tr> - <tr> - <td>2</td> - <td>Alpha project</td> - <td>Alice Jackson</td> - <td>0500 780909</td> - <td>Nec Euismod In Company</td> - <td><span class="pie">6,9</span></td> - <td>40%</td> - <td>Jul 16, 2013</td> - <td><a href="#"><i class="fa fa-check text-navy"></i></a></td> - </tr> - <tr> - <td>3</td> - <td>Betha project</td> - <td>John Smith</td> - <td>0800 1111</td> - <td>Erat Volutpat</td> - <td><span class="pie">3,1</span></td> - <td>75%</td> - <td>Jul 18, 2013</td> - <td><a href="#"><i class="fa fa-check text-navy"></i></a></td> - </tr> - <tr> - <td>4</td> - <td>Gamma project</td> - <td>Anna Jordan</td> - <td>(016977) 0648</td> - <td>Tellus Ltd</td> - <td><span class="pie">4,9</span></td> - <td>18%</td> - <td>Jul 22, 2013</td> - <td><a href="#"><i class="fa fa-check text-navy"></i></a></td> - </tr> - <tr> - <td>2</td> - <td>Alpha project</td> - <td>Alice Jackson</td> - <td>0500 780909</td> - <td>Nec Euismod In Company</td> - <td><span class="pie">6,9</span></td> - <td>40%</td> - <td>Jul 16, 2013</td> - <td><a href="#"><i class="fa fa-check text-navy"></i></a></td> - </tr> - <tr> - <td>1</td> - <td>Project <small>This is example of project</small></td> - <td>Patrick Smith</td> - <td>0800 051213</td> - <td>Inceptos Hymenaeos Ltd</td> - <td><span class="pie">0.52/1.561</span></td> - <td>20%</td> - <td>Jul 14, 2013</td> - <td><a href="#"><i class="fa fa-check text-navy"></i></a></td> - </tr> - <tr> - <td>4</td> - <td>Gamma project</td> - <td>Anna Jordan</td> - <td>(016977) 0648</td> - <td>Tellus Ltd</td> - <td><span class="pie">4,9</span></td> - <td>18%</td> - <td>Jul 22, 2013</td> - <td><a href="#"><i class="fa fa-check text-navy"></i></a></td> - </tr> - </tbody> - </table> - </div> - - </div> - </div> - </div> - - </div> - - - </div> - - - <div class="footer"> - <div class="pull-right"> - 10GB of <strong>250GB</strong> Free. - </div> - <div> - <strong>Copyright</strong> Example Company &copy; 2014-2015 - </div> - </div> - - </div> - </div> - - <!-- Mainly scripts --> - <script src="js/jquery-2.1.1.js"></script> - <script src="js/bootstrap.min.js"></script> - <script src="js/plugins/metisMenu/jquery.metisMenu.js"></script> - <script src="js/plugins/slimscroll/jquery.slimscroll.min.js"></script> - - <!-- Flot --> - <script src="js/plugins/flot/jquery.flot.js"></script> - <script src="js/plugins/flot/jquery.flot.tooltip.min.js"></script> - <script src="js/plugins/flot/jquery.flot.spline.js"></script> - <script src="js/plugins/flot/jquery.flot.resize.js"></script> - <script src="js/plugins/flot/jquery.flot.pie.js"></script> - <script src="js/plugins/flot/jquery.flot.symbol.js"></script> - <script src="js/plugins/flot/curvedLines.js"></script> - - <!-- Peity --> - <script src="js/plugins/peity/jquery.peity.min.js"></script> - <script src="js/demo/peity-demo.js"></script> - - <!-- Custom and plugin javascript --> - <script src="js/inspinia.js"></script> - <script src="js/plugins/pace/pace.min.js"></script> - - <!-- jQuery UI --> - <script src="js/plugins/jquery-ui/jquery-ui.min.js"></script> - - <!-- Jvectormap --> - <script src="js/plugins/jvectormap/jquery-jvectormap-1.2.2.min.js"></script> - <script src="js/plugins/jvectormap/jquery-jvectormap-world-mill-en.js"></script> - - <!-- Sparkline --> - <script src="js/plugins/sparkline/jquery.sparkline.min.js"></script> - - <!-- Sparkline demo data --> - <script src="js/demo/sparkline-demo.js"></script> - - <!-- ChartJS--> - <script src="js/plugins/chartJs/Chart.min.js"></script> - - <script> - $(document).ready(function() { - - - var d1 = [[1262304000000, 6], [1264982400000, 3057], [1267401600000, 20434], [1270080000000, 31982], [1272672000000, 26602], [1275350400000, 27826], [1277942400000, 24302], [1280620800000, 24237], [1283299200000, 21004], [1285891200000, 12144], [1288569600000, 10577], [1291161600000, 10295]]; - var d2 = [[1262304000000, 5], [1264982400000, 200], [1267401600000, 1605], [1270080000000, 6129], [1272672000000, 11643], [1275350400000, 19055], [1277942400000, 30062], [1280620800000, 39197], [1283299200000, 37000], [1285891200000, 27000], [1288569600000, 21000], [1291161600000, 17000]]; - - var data1 = [ - { label: "Data 1", data: d1, color: '#17a084'}, - { label: "Data 2", data: d2, color: '#127e68' } - ]; - $.plot($("#flot-chart1"), data1, { - xaxis: { - tickDecimals: 0 - }, - series: { - lines: { - show: true, - fill: true, - fillColor: { - colors: [{ - opacity: 1 - }, { - opacity: 1 - }] - }, - }, - points: { - width: 0.1, - show: false - }, - }, - grid: { - show: false, - borderWidth: 0 - }, - legend: { - show: false, - } - }); - - var lineData = { - labels: ["January", "February", "March", "April", "May", "June", "July"], - datasets: [ - { - label: "Example dataset", - fillColor: "rgba(220,220,220,0.5)", - strokeColor: "rgba(220,220,220,1)", - pointColor: "rgba(220,220,220,1)", - pointStrokeColor: "#fff", - pointHighlightFill: "#fff", - pointHighlightStroke: "rgba(220,220,220,1)", - data: [65, 59, 40, 51, 36, 25, 40] - }, - { - label: "Example dataset", - fillColor: "rgba(26,179,148,0.5)", - strokeColor: "rgba(26,179,148,0.7)", - pointColor: "rgba(26,179,148,1)", - pointStrokeColor: "#fff", - pointHighlightFill: "#fff", - pointHighlightStroke: "rgba(26,179,148,1)", - data: [48, 48, 60, 39, 56, 37, 30] - } - ] - }; - - var lineOptions = { - scaleShowGridLines: true, - scaleGridLineColor: "rgba(0,0,0,.05)", - scaleGridLineWidth: 1, - bezierCurve: true, - bezierCurveTension: 0.4, - pointDot: true, - pointDotRadius: 4, - pointDotStrokeWidth: 1, - pointHitDetectionRadius: 20, - datasetStroke: true, - datasetStrokeWidth: 2, - datasetFill: true, - responsive: true, - }; - - - var ctx = document.getElementById("lineChart").getContext("2d"); - var myNewChart = new Chart(ctx).Line(lineData, lineOptions); - - }); - </script> -</body> -</html> diff --git a/assets/jQueryUI/jquery-ui-1.10.3.js b/assets/jQueryUI/jquery-ui-1.10.3.js deleted file mode 100644 index c9a0affb..00000000 --- a/assets/jQueryUI/jquery-ui-1.10.3.js +++ /dev/null @@ -1,8709 +0,0 @@ -/*! jQuery UI - v1.10.3 - 2013-12-25 -* http://jqueryui.com -* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.position.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.sortable.js, jquery.ui.autocomplete.js, jquery.ui.menu.js, jquery.ui.effect.js, jquery.ui.effect-blind.js, jquery.ui.effect-bounce.js, jquery.ui.effect-clip.js, jquery.ui.effect-drop.js, jquery.ui.effect-explode.js, jquery.ui.effect-fade.js, jquery.ui.effect-fold.js, jquery.ui.effect-highlight.js, jquery.ui.effect-pulsate.js, jquery.ui.effect-scale.js, jquery.ui.effect-shake.js, jquery.ui.effect-slide.js, jquery.ui.effect-transfer.js -* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ - -(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 ); -(function( $, undefined ) { - -var uuid = 0, - slice = Array.prototype.slice, - _cleanData = $.cleanData; -$.cleanData = function( elems ) { - for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) { - try { - $( elem ).triggerHandler( "remove" ); - // http://bugs.jquery.com/ticket/8235 - } catch( e ) {} - } - _cleanData( elems ); -}; - -$.widget = function( name, base, prototype ) { - var fullName, existingConstructor, constructor, basePrototype, - // proxiedPrototype allows the provided prototype to remain unmodified - // so that it can be used as a mixin for multiple widgets (#8876) - proxiedPrototype = {}, - namespace = name.split( "." )[ 0 ]; - - name = name.split( "." )[ 1 ]; - fullName = namespace + "-" + name; - - if ( !prototype ) { - prototype = base; - base = $.Widget; - } - - // create selector for plugin - $.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) { - return !!$.data( elem, fullName ); - }; - - $[ namespace ] = $[ namespace ] || {}; - existingConstructor = $[ namespace ][ name ]; - constructor = $[ namespace ][ name ] = function( options, element ) { - // allow instantiation without "new" keyword - if ( !this._createWidget ) { - return new constructor( options, element ); - } - - // allow instantiation without initializing for simple inheritance - // must use "new" keyword (the code above always passes args) - if ( arguments.length ) { - this._createWidget( options, element ); - } - }; - // extend with the existing constructor to carry over any static properties - $.extend( constructor, existingConstructor, { - version: prototype.version, - // copy the object used to create the prototype in case we need to - // redefine the widget later - _proto: $.extend( {}, prototype ), - // track widgets that inherit from this widget in case this widget is - // redefined after a widget inherits from it - _childConstructors: [] - }); - - basePrototype = new base(); - // we need to make the options hash a property directly on the new instance - // otherwise we'll modify the options hash on the prototype that we're - // inheriting from - basePrototype.options = $.widget.extend( {}, basePrototype.options ); - $.each( prototype, function( prop, value ) { - if ( !$.isFunction( value ) ) { - proxiedPrototype[ prop ] = value; - return; - } - proxiedPrototype[ prop ] = (function() { - var _super = function() { - return base.prototype[ prop ].apply( this, arguments ); - }, - _superApply = function( args ) { - return base.prototype[ prop ].apply( this, args ); - }; - return function() { - var __super = this._super, - __superApply = this._superApply, - returnValue; - - this._super = _super; - this._superApply = _superApply; - - returnValue = value.apply( this, arguments ); - - this._super = __super; - this._superApply = __superApply; - - return returnValue; - }; - })(); - }); - constructor.prototype = $.widget.extend( basePrototype, { - // TODO: remove support for widgetEventPrefix - // always use the name + a colon as the prefix, e.g., draggable:start - // don't prefix for widgets that aren't DOM-based - widgetEventPrefix: existingConstructor ? basePrototype.widgetEventPrefix : name - }, proxiedPrototype, { - constructor: constructor, - namespace: namespace, - widgetName: name, - widgetFullName: fullName - }); - - // If this widget is being redefined then we need to find all widgets that - // are inheriting from it and redefine all of them so that they inherit from - // the new version of this widget. We're essentially trying to replace one - // level in the prototype chain. - if ( existingConstructor ) { - $.each( existingConstructor._childConstructors, function( i, child ) { - var childPrototype = child.prototype; - - // redefine the child widget using the same prototype that was - // originally used, but inherit from the new version of the base - $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto ); - }); - // remove the list of existing child constructors from the old constructor - // so the old child constructors can be garbage collected - delete existingConstructor._childConstructors; - } else { - base._childConstructors.push( constructor ); - } - - $.widget.bridge( name, constructor ); -}; - -$.widget.extend = function( target ) { - var input = slice.call( arguments, 1 ), - inputIndex = 0, - inputLength = input.length, - key, - value; - for ( ; inputIndex < inputLength; inputIndex++ ) { - for ( key in input[ inputIndex ] ) { - value = input[ inputIndex ][ key ]; - if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) { - // Clone objects - if ( $.isPlainObject( value ) ) { - target[ key ] = $.isPlainObject( target[ key ] ) ? - $.widget.extend( {}, target[ key ], value ) : - // Don't extend strings, arrays, etc. with objects - $.widget.extend( {}, value ); - // Copy everything else by reference - } else { - target[ key ] = value; - } - } - } - } - return target; -}; - -$.widget.bridge = function( name, object ) { - var fullName = object.prototype.widgetFullName || name; - $.fn[ name ] = function( options ) { - var isMethodCall = typeof options === "string", - args = slice.call( arguments, 1 ), - returnValue = this; - - // allow multiple hashes to be passed on init - options = !isMethodCall && args.length ? - $.widget.extend.apply( null, [ options ].concat(args) ) : - options; - - if ( isMethodCall ) { - this.each(function() { - var methodValue, - instance = $.data( this, fullName ); - if ( !instance ) { - return $.error( "cannot call methods on " + name + " prior to initialization; " + - "attempted to call method '" + options + "'" ); - } - if ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === "_" ) { - return $.error( "no such method '" + options + "' for " + name + " widget instance" ); - } - methodValue = instance[ options ].apply( instance, args ); - if ( methodValue !== instance && methodValue !== undefined ) { - returnValue = methodValue && methodValue.jquery ? - returnValue.pushStack( methodValue.get() ) : - methodValue; - return false; - } - }); - } else { - this.each(function() { - var instance = $.data( this, fullName ); - if ( instance ) { - instance.option( options || {} )._init(); - } else { - $.data( this, fullName, new object( options, this ) ); - } - }); - } - - return returnValue; - }; -}; - -$.Widget = function( /* options, element */ ) {}; -$.Widget._childConstructors = []; - -$.Widget.prototype = { - widgetName: "widget", - widgetEventPrefix: "", - defaultElement: "<div>", - options: { - disabled: false, - - // callbacks - create: null - }, - _createWidget: function( options, element ) { - element = $( element || this.defaultElement || this )[ 0 ]; - this.element = $( element ); - this.uuid = uuid++; - this.eventNamespace = "." + this.widgetName + this.uuid; - this.options = $.widget.extend( {}, - this.options, - this._getCreateOptions(), - options ); - - this.bindings = $(); - this.hoverable = $(); - this.focusable = $(); - - if ( element !== this ) { - $.data( element, this.widgetFullName, this ); - this._on( true, this.element, { - remove: function( event ) { - if ( event.target === element ) { - this.destroy(); - } - } - }); - this.document = $( element.style ? - // element within the document - element.ownerDocument : - // element is window or document - element.document || element ); - this.window = $( this.document[0].defaultView || this.document[0].parentWindow ); - } - - this._create(); - this._trigger( "create", null, this._getCreateEventData() ); - this._init(); - }, - _getCreateOptions: $.noop, - _getCreateEventData: $.noop, - _create: $.noop, - _init: $.noop, - - destroy: function() { - this._destroy(); - // we can probably remove the unbind calls in 2.0 - // all event bindings should go through this._on() - this.element - .unbind( this.eventNamespace ) - // 1.9 BC for #7810 - // TODO remove dual storage - .removeData( this.widgetName ) - .removeData( this.widgetFullName ) - // support: jquery <1.6.3 - // http://bugs.jquery.com/ticket/9413 - .removeData( $.camelCase( this.widgetFullName ) ); - this.widget() - .unbind( this.eventNamespace ) - .removeAttr( "aria-disabled" ) - .removeClass( - this.widgetFullName + "-disabled " + - "ui-state-disabled" ); - - // clean up events and states - this.bindings.unbind( this.eventNamespace ); - this.hoverable.removeClass( "ui-state-hover" ); - this.focusable.removeClass( "ui-state-focus" ); - }, - _destroy: $.noop, - - widget: function() { - return this.element; - }, - - option: function( key, value ) { - var options = key, - parts, - curOption, - i; - - if ( arguments.length === 0 ) { - // don't return a reference to the internal hash - return $.widget.extend( {}, this.options ); - } - - if ( typeof key === "string" ) { - // handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } } - options = {}; - parts = key.split( "." ); - key = parts.shift(); - if ( parts.length ) { - curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] ); - for ( i = 0; i < parts.length - 1; i++ ) { - curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {}; - curOption = curOption[ parts[ i ] ]; - } - key = parts.pop(); - if ( value === undefined ) { - return curOption[ key ] === undefined ? null : curOption[ key ]; - } - curOption[ key ] = value; - } else { - if ( value === undefined ) { - return this.options[ key ] === undefined ? null : this.options[ key ]; - } - options[ key ] = value; - } - } - - this._setOptions( options ); - - return this; - }, - _setOptions: function( options ) { - var key; - - for ( key in options ) { - this._setOption( key, options[ key ] ); - } - - return this; - }, - _setOption: function( key, value ) { - this.options[ key ] = value; - - if ( key === "disabled" ) { - this.widget() - .toggleClass( this.widgetFullName + "-disabled ui-state-disabled", !!value ) - .attr( "aria-disabled", value ); - this.hoverable.removeClass( "ui-state-hover" ); - this.focusable.removeClass( "ui-state-focus" ); - } - - return this; - }, - - enable: function() { - return this._setOption( "disabled", false ); - }, - disable: function() { - return this._setOption( "disabled", true ); - }, - - _on: function( suppressDisabledCheck, element, handlers ) { - var delegateElement, - instance = this; - - // no suppressDisabledCheck flag, shuffle arguments - if ( typeof suppressDisabledCheck !== "boolean" ) { - handlers = element; - element = suppressDisabledCheck; - suppressDisabledCheck = false; - } - - // no element argument, shuffle and use this.element - if ( !handlers ) { - handlers = element; - element = this.element; - delegateElement = this.widget(); - } else { - // accept selectors, DOM elements - element = delegateElement = $( element ); - this.bindings = this.bindings.add( element ); - } - - $.each( handlers, function( event, handler ) { - function handlerProxy() { - // allow widgets to customize the disabled handling - // - disabled as an array instead of boolean - // - disabled class as method for disabling individual parts - if ( !suppressDisabledCheck && - ( instance.options.disabled === true || - $( this ).hasClass( "ui-state-disabled" ) ) ) { - return; - } - return ( typeof handler === "string" ? instance[ handler ] : handler ) - .apply( instance, arguments ); - } - - // copy the guid so direct unbinding works - if ( typeof handler !== "string" ) { - handlerProxy.guid = handler.guid = - handler.guid || handlerProxy.guid || $.guid++; - } - - var match = event.match( /^(\w+)\s*(.*)$/ ), - eventName = match[1] + instance.eventNamespace, - selector = match[2]; - if ( selector ) { - delegateElement.delegate( selector, eventName, handlerProxy ); - } else { - element.bind( eventName, handlerProxy ); - } - }); - }, - - _off: function( element, eventName ) { - eventName = (eventName || "").split( " " ).join( this.eventNamespace + " " ) + this.eventNamespace; - element.unbind( eventName ).undelegate( eventName ); - }, - - _delay: function( handler, delay ) { - function handlerProxy() { - return ( typeof handler === "string" ? instance[ handler ] : handler ) - .apply( instance, arguments ); - } - var instance = this; - return setTimeout( handlerProxy, delay || 0 ); - }, - - _hoverable: function( element ) { - this.hoverable = this.hoverable.add( element ); - this._on( element, { - mouseenter: function( event ) { - $( event.currentTarget ).addClass( "ui-state-hover" ); - }, - mouseleave: function( event ) { - $( event.currentTarget ).removeClass( "ui-state-hover" ); - } - }); - }, - - _focusable: function( element ) { - this.focusable = this.focusable.add( element ); - this._on( element, { - focusin: function( event ) { - $( event.currentTarget ).addClass( "ui-state-focus" ); - }, - focusout: function( event ) { - $( event.currentTarget ).removeClass( "ui-state-focus" ); - } - }); - }, - - _trigger: function( type, event, data ) { - var prop, orig, - callback = this.options[ type ]; - - data = data || {}; - event = $.Event( event ); - event.type = ( type === this.widgetEventPrefix ? - type : - this.widgetEventPrefix + type ).toLowerCase(); - // the original event may come from any element - // so we need to reset the target on the new event - event.target = this.element[ 0 ]; - - // copy original event properties over to the new event - orig = event.originalEvent; - if ( orig ) { - for ( prop in orig ) { - if ( !( prop in event ) ) { - event[ prop ] = orig[ prop ]; - } - } - } - - this.element.trigger( event, data ); - return !( $.isFunction( callback ) && - callback.apply( this.element[0], [ event ].concat( data ) ) === false || - event.isDefaultPrevented() ); - } -}; - -$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) { - $.Widget.prototype[ "_" + method ] = function( element, options, callback ) { - if ( typeof options === "string" ) { - options = { effect: options }; - } - var hasOptions, - effectName = !options ? - method : - options === true || typeof options === "number" ? - defaultEffect : - options.effect || defaultEffect; - options = options || {}; - if ( typeof options === "number" ) { - options = { duration: options }; - } - hasOptions = !$.isEmptyObject( options ); - options.complete = callback; - if ( options.delay ) { - element.delay( options.delay ); - } - if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) { - element[ method ]( options ); - } else if ( effectName !== method && element[ effectName ] ) { - element[ effectName ]( options.duration, options.easing, callback ); - } else { - element.queue(function( next ) { - $( this )[ method ](); - if ( callback ) { - callback.call( element[ 0 ] ); - } - next(); - }); - } - }; -}); - -})( jQuery ); -(function( $, undefined ) { - -var mouseHandled = false; -$( document ).mouseup( function() { - mouseHandled = false; -}); - -$.widget("ui.mouse", { - version: "1.10.3", - options: { - cancel: "input,textarea,button,select,option", - distance: 1, - delay: 0 - }, - _mouseInit: function() { - var that = this; - - this.element - .bind("mousedown."+this.widgetName, function(event) { - return that._mouseDown(event); - }) - .bind("click."+this.widgetName, function(event) { - if (true === $.data(event.target, that.widgetName + ".preventClickEvent")) { - $.removeData(event.target, that.widgetName + ".preventClickEvent"); - event.stopImmediatePropagation(); - return false; - } - }); - - this.started = false; - }, - - // TODO: make sure destroying one instance of mouse doesn't mess with - // other instances of mouse - _mouseDestroy: function() { - this.element.unbind("."+this.widgetName); - if ( this._mouseMoveDelegate ) { - $(document) - .unbind("mousemove."+this.widgetName, this._mouseMoveDelegate) - .unbind("mouseup."+this.widgetName, this._mouseUpDelegate); - } - }, - - _mouseDown: function(event) { - // don't let more than one widget handle mouseStart - if( mouseHandled ) { return; } - - // we may have missed mouseup (out of window) - (this._mouseStarted && this._mouseUp(event)); - - this._mouseDownEvent = event; - - var that = this, - btnIsLeft = (event.which === 1), - // event.target.nodeName works around a bug in IE 8 with - // disabled inputs (#7620) - elIsCancel = (typeof this.options.cancel === "string" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false); - if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) { - return true; - } - - this.mouseDelayMet = !this.options.delay; - if (!this.mouseDelayMet) { - this._mouseDelayTimer = setTimeout(function() { - that.mouseDelayMet = true; - }, this.options.delay); - } - - if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { - this._mouseStarted = (this._mouseStart(event) !== false); - if (!this._mouseStarted) { - event.preventDefault(); - return true; - } - } - - // Click event may never have fired (Gecko & Opera) - if (true === $.data(event.target, this.widgetName + ".preventClickEvent")) { - $.removeData(event.target, this.widgetName + ".preventClickEvent"); - } - - // these delegates are required to keep context - this._mouseMoveDelegate = function(event) { - return that._mouseMove(event); - }; - this._mouseUpDelegate = function(event) { - return that._mouseUp(event); - }; - $(document) - .bind("mousemove."+this.widgetName, this._mouseMoveDelegate) - .bind("mouseup."+this.widgetName, this._mouseUpDelegate); - - event.preventDefault(); - - mouseHandled = true; - return true; - }, - - _mouseMove: function(event) { - // IE mouseup check - mouseup happened when mouse was out of window - if ($.ui.ie && ( !document.documentMode || document.documentMode < 9 ) && !event.button) { - return this._mouseUp(event); - } - - if (this._mouseStarted) { - this._mouseDrag(event); - return event.preventDefault(); - } - - if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { - this._mouseStarted = - (this._mouseStart(this._mouseDownEvent, event) !== false); - (this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event)); - } - - return !this._mouseStarted; - }, - - _mouseUp: function(event) { - $(document) - .unbind("mousemove."+this.widgetName, this._mouseMoveDelegate) - .unbind("mouseup."+this.widgetName, this._mouseUpDelegate); - - if (this._mouseStarted) { - this._mouseStarted = false; - - if (event.target === this._mouseDownEvent.target) { - $.data(event.target, this.widgetName + ".preventClickEvent", true); - } - - this._mouseStop(event); - } - - return false; - }, - - _mouseDistanceMet: function(event) { - return (Math.max( - Math.abs(this._mouseDownEvent.pageX - event.pageX), - Math.abs(this._mouseDownEvent.pageY - event.pageY) - ) >= this.options.distance - ); - }, - - _mouseDelayMet: function(/* event */) { - return this.mouseDelayMet; - }, - - // These are placeholder methods, to be overriden by extending plugin - _mouseStart: function(/* event */) {}, - _mouseDrag: function(/* event */) {}, - _mouseStop: function(/* event */) {}, - _mouseCapture: function(/* event */) { return true; } -}); - -})(jQuery); -(function( $, undefined ) { - -$.ui = $.ui || {}; - -var cachedScrollbarWidth, - max = Math.max, - abs = Math.abs, - round = Math.round, - rhorizontal = /left|center|right/, - rvertical = /top|center|bottom/, - roffset = /[\+\-]\d+(\.[\d]+)?%?/, - rposition = /^\w+/, - rpercent = /%$/, - _position = $.fn.position; - -function getOffsets( offsets, width, height ) { - return [ - parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ), - parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 ) - ]; -} - -function parseCss( element, property ) { - return parseInt( $.css( element, property ), 10 ) || 0; -} - -function getDimensions( elem ) { - var raw = elem[0]; - if ( raw.nodeType === 9 ) { - return { - width: elem.width(), - height: elem.height(), - offset: { top: 0, left: 0 } - }; - } - if ( $.isWindow( raw ) ) { - return { - width: elem.width(), - height: elem.height(), - offset: { top: elem.scrollTop(), left: elem.scrollLeft() } - }; - } - if ( raw.preventDefault ) { - return { - width: 0, - height: 0, - offset: { top: raw.pageY, left: raw.pageX } - }; - } - return { - width: elem.outerWidth(), - height: elem.outerHeight(), - offset: elem.offset() - }; -} - -$.position = { - scrollbarWidth: function() { - if ( cachedScrollbarWidth !== undefined ) { - return cachedScrollbarWidth; - } - var w1, w2, - div = $( "<div style='display:block;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>" ), - innerDiv = div.children()[0]; - - $( "body" ).append( div ); - w1 = innerDiv.offsetWidth; - div.css( "overflow", "scroll" ); - - w2 = innerDiv.offsetWidth; - - if ( w1 === w2 ) { - w2 = div[0].clientWidth; - } - - div.remove(); - - return (cachedScrollbarWidth = w1 - w2); - }, - getScrollInfo: function( within ) { - var overflowX = within.isWindow ? "" : within.element.css( "overflow-x" ), - overflowY = within.isWindow ? "" : within.element.css( "overflow-y" ), - hasOverflowX = overflowX === "scroll" || - ( overflowX === "auto" && within.width < within.element[0].scrollWidth ), - hasOverflowY = overflowY === "scroll" || - ( overflowY === "auto" && within.height < within.element[0].scrollHeight ); - return { - width: hasOverflowY ? $.position.scrollbarWidth() : 0, - height: hasOverflowX ? $.position.scrollbarWidth() : 0 - }; - }, - getWithinInfo: function( element ) { - var withinElement = $( element || window ), - isWindow = $.isWindow( withinElement[0] ); - return { - element: withinElement, - isWindow: isWindow, - offset: withinElement.offset() || { left: 0, top: 0 }, - scrollLeft: withinElement.scrollLeft(), - scrollTop: withinElement.scrollTop(), - width: isWindow ? withinElement.width() : withinElement.outerWidth(), - height: isWindow ? withinElement.height() : withinElement.outerHeight() - }; - } -}; - -$.fn.position = function( options ) { - if ( !options || !options.of ) { - return _position.apply( this, arguments ); - } - - // make a copy, we don't want to modify arguments - options = $.extend( {}, options ); - - var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions, - target = $( options.of ), - within = $.position.getWithinInfo( options.within ), - scrollInfo = $.position.getScrollInfo( within ), - collision = ( options.collision || "flip" ).split( " " ), - offsets = {}; - - dimensions = getDimensions( target ); - if ( target[0].preventDefault ) { - // force left top to allow flipping - options.at = "left top"; - } - targetWidth = dimensions.width; - targetHeight = dimensions.height; - targetOffset = dimensions.offset; - // clone to reuse original targetOffset later - basePosition = $.extend( {}, targetOffset ); - - // force my and at to have valid horizontal and vertical positions - // if a value is missing or invalid, it will be converted to center - $.each( [ "my", "at" ], function() { - var pos = ( options[ this ] || "" ).split( " " ), - horizontalOffset, - verticalOffset; - - if ( pos.length === 1) { - pos = rhorizontal.test( pos[ 0 ] ) ? - pos.concat( [ "center" ] ) : - rvertical.test( pos[ 0 ] ) ? - [ "center" ].concat( pos ) : - [ "center", "center" ]; - } - pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center"; - pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center"; - - // calculate offsets - horizontalOffset = roffset.exec( pos[ 0 ] ); - verticalOffset = roffset.exec( pos[ 1 ] ); - offsets[ this ] = [ - horizontalOffset ? horizontalOffset[ 0 ] : 0, - verticalOffset ? verticalOffset[ 0 ] : 0 - ]; - - // reduce to just the positions without the offsets - options[ this ] = [ - rposition.exec( pos[ 0 ] )[ 0 ], - rposition.exec( pos[ 1 ] )[ 0 ] - ]; - }); - - // normalize collision option - if ( collision.length === 1 ) { - collision[ 1 ] = collision[ 0 ]; - } - - if ( options.at[ 0 ] === "right" ) { - basePosition.left += targetWidth; - } else if ( options.at[ 0 ] === "center" ) { - basePosition.left += targetWidth / 2; - } - - if ( options.at[ 1 ] === "bottom" ) { - basePosition.top += targetHeight; - } else if ( options.at[ 1 ] === "center" ) { - basePosition.top += targetHeight / 2; - } - - atOffset = getOffsets( offsets.at, targetWidth, targetHeight ); - basePosition.left += atOffset[ 0 ]; - basePosition.top += atOffset[ 1 ]; - - return this.each(function() { - var collisionPosition, using, - elem = $( this ), - elemWidth = elem.outerWidth(), - elemHeight = elem.outerHeight(), - marginLeft = parseCss( this, "marginLeft" ), - marginTop = parseCss( this, "marginTop" ), - collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) + scrollInfo.width, - collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) + scrollInfo.height, - position = $.extend( {}, basePosition ), - myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() ); - - if ( options.my[ 0 ] === "right" ) { - position.left -= elemWidth; - } else if ( options.my[ 0 ] === "center" ) { - position.left -= elemWidth / 2; - } - - if ( options.my[ 1 ] === "bottom" ) { - position.top -= elemHeight; - } else if ( options.my[ 1 ] === "center" ) { - position.top -= elemHeight / 2; - } - - position.left += myOffset[ 0 ]; - position.top += myOffset[ 1 ]; - - // if the browser doesn't support fractions, then round for consistent results - if ( !$.support.offsetFractions ) { - position.left = round( position.left ); - position.top = round( position.top ); - } - - collisionPosition = { - marginLeft: marginLeft, - marginTop: marginTop - }; - - $.each( [ "left", "top" ], function( i, dir ) { - if ( $.ui.position[ collision[ i ] ] ) { - $.ui.position[ collision[ i ] ][ dir ]( position, { - targetWidth: targetWidth, - targetHeight: targetHeight, - elemWidth: elemWidth, - elemHeight: elemHeight, - collisionPosition: collisionPosition, - collisionWidth: collisionWidth, - collisionHeight: collisionHeight, - offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ], - my: options.my, - at: options.at, - within: within, - elem : elem - }); - } - }); - - if ( options.using ) { - // adds feedback as second argument to using callback, if present - using = function( props ) { - var left = targetOffset.left - position.left, - right = left + targetWidth - elemWidth, - top = targetOffset.top - position.top, - bottom = top + targetHeight - elemHeight, - feedback = { - target: { - element: target, - left: targetOffset.left, - top: targetOffset.top, - width: targetWidth, - height: targetHeight - }, - element: { - element: elem, - left: position.left, - top: position.top, - width: elemWidth, - height: elemHeight - }, - horizontal: right < 0 ? "left" : left > 0 ? "right" : "center", - vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle" - }; - if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) { - feedback.horizontal = "center"; - } - if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) { - feedback.vertical = "middle"; - } - if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) { - feedback.important = "horizontal"; - } else { - feedback.important = "vertical"; - } - options.using.call( this, props, feedback ); - }; - } - - elem.offset( $.extend( position, { using: using } ) ); - }); -}; - -$.ui.position = { - fit: { - left: function( position, data ) { - var within = data.within, - withinOffset = within.isWindow ? within.scrollLeft : within.offset.left, - outerWidth = within.width, - collisionPosLeft = position.left - data.collisionPosition.marginLeft, - overLeft = withinOffset - collisionPosLeft, - overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset, - newOverRight; - - // element is wider than within - if ( data.collisionWidth > outerWidth ) { - // element is initially over the left side of within - if ( overLeft > 0 && overRight <= 0 ) { - newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset; - position.left += overLeft - newOverRight; - // element is initially over right side of within - } else if ( overRight > 0 && overLeft <= 0 ) { - position.left = withinOffset; - // element is initially over both left and right sides of within - } else { - if ( overLeft > overRight ) { - position.left = withinOffset + outerWidth - data.collisionWidth; - } else { - position.left = withinOffset; - } - } - // too far left -> align with left edge - } else if ( overLeft > 0 ) { - position.left += overLeft; - // too far right -> align with right edge - } else if ( overRight > 0 ) { - position.left -= overRight; - // adjust based on position and margin - } else { - position.left = max( position.left - collisionPosLeft, position.left ); - } - }, - top: function( position, data ) { - var within = data.within, - withinOffset = within.isWindow ? within.scrollTop : within.offset.top, - outerHeight = data.within.height, - collisionPosTop = position.top - data.collisionPosition.marginTop, - overTop = withinOffset - collisionPosTop, - overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset, - newOverBottom; - - // element is taller than within - if ( data.collisionHeight > outerHeight ) { - // element is initially over the top of within - if ( overTop > 0 && overBottom <= 0 ) { - newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset; - position.top += overTop - newOverBottom; - // element is initially over bottom of within - } else if ( overBottom > 0 && overTop <= 0 ) { - position.top = withinOffset; - // element is initially over both top and bottom of within - } else { - if ( overTop > overBottom ) { - position.top = withinOffset + outerHeight - data.collisionHeight; - } else { - position.top = withinOffset; - } - } - // too far up -> align with top - } else if ( overTop > 0 ) { - position.top += overTop; - // too far down -> align with bottom edge - } else if ( overBottom > 0 ) { - position.top -= overBottom; - // adjust based on position and margin - } else { - position.top = max( position.top - collisionPosTop, position.top ); - } - } - }, - flip: { - left: function( position, data ) { - var within = data.within, - withinOffset = within.offset.left + within.scrollLeft, - outerWidth = within.width, - offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left, - collisionPosLeft = position.left - data.collisionPosition.marginLeft, - overLeft = collisionPosLeft - offsetLeft, - overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft, - myOffset = data.my[ 0 ] === "left" ? - -data.elemWidth : - data.my[ 0 ] === "right" ? - data.elemWidth : - 0, - atOffset = data.at[ 0 ] === "left" ? - data.targetWidth : - data.at[ 0 ] === "right" ? - -data.targetWidth : - 0, - offset = -2 * data.offset[ 0 ], - newOverRight, - newOverLeft; - - if ( overLeft < 0 ) { - newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset; - if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) { - position.left += myOffset + atOffset + offset; - } - } - else if ( overRight > 0 ) { - newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft; - if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) { - position.left += myOffset + atOffset + offset; - } - } - }, - top: function( position, data ) { - var within = data.within, - withinOffset = within.offset.top + within.scrollTop, - outerHeight = within.height, - offsetTop = within.isWindow ? within.scrollTop : within.offset.top, - collisionPosTop = position.top - data.collisionPosition.marginTop, - overTop = collisionPosTop - offsetTop, - overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop, - top = data.my[ 1 ] === "top", - myOffset = top ? - -data.elemHeight : - data.my[ 1 ] === "bottom" ? - data.elemHeight : - 0, - atOffset = data.at[ 1 ] === "top" ? - data.targetHeight : - data.at[ 1 ] === "bottom" ? - -data.targetHeight : - 0, - offset = -2 * data.offset[ 1 ], - newOverTop, - newOverBottom; - if ( overTop < 0 ) { - newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset; - if ( ( position.top + myOffset + atOffset + offset) > overTop && ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) ) { - position.top += myOffset + atOffset + offset; - } - } - else if ( overBottom > 0 ) { - newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop; - if ( ( position.top + myOffset + atOffset + offset) > overBottom && ( newOverTop > 0 || abs( newOverTop ) < overBottom ) ) { - position.top += myOffset + atOffset + offset; - } - } - } - }, - flipfit: { - left: function() { - $.ui.position.flip.left.apply( this, arguments ); - $.ui.position.fit.left.apply( this, arguments ); - }, - top: function() { - $.ui.position.flip.top.apply( this, arguments ); - $.ui.position.fit.top.apply( this, arguments ); - } - } -}; - -// fraction support test -(function () { - var testElement, testElementParent, testElementStyle, offsetLeft, i, - body = document.getElementsByTagName( "body" )[ 0 ], - div = document.createElement( "div" ); - - //Create a "fake body" for testing based on method used in jQuery.support - testElement = document.createElement( body ? "div" : "body" ); - testElementStyle = { - visibility: "hidden", - width: 0, - height: 0, - border: 0, - margin: 0, - background: "none" - }; - if ( body ) { - $.extend( testElementStyle, { - position: "absolute", - left: "-1000px", - top: "-1000px" - }); - } - for ( i in testElementStyle ) { - testElement.style[ i ] = testElementStyle[ i ]; - } - testElement.appendChild( div ); - testElementParent = body || document.documentElement; - testElementParent.insertBefore( testElement, testElementParent.firstChild ); - - div.style.cssText = "position: absolute; left: 10.7432222px;"; - - offsetLeft = $( div ).offset().left; - $.support.offsetFractions = offsetLeft > 10 && offsetLeft < 11; - - testElement.innerHTML = ""; - testElementParent.removeChild( testElement ); -})(); - -}( jQuery ) ); -(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); -(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); -(function( $, undefined ) { - -function num(v) { - return parseInt(v, 10) || 0; -} - -function isNumber(value) { - return !isNaN(parseInt(value, 10)); -} - -$.widget("ui.resizable", $.ui.mouse, { - version: "1.10.3", - widgetEventPrefix: "resize", - options: { - alsoResize: false, - animate: false, - animateDuration: "slow", - animateEasing: "swing", - aspectRatio: false, - autoHide: false, - containment: false, - ghost: false, - grid: false, - handles: "e,s,se", - helper: false, - maxHeight: null, - maxWidth: null, - minHeight: 10, - minWidth: 10, - // See #7960 - zIndex: 90, - - // callbacks - resize: null, - start: null, - stop: null - }, - _create: function() { - - var n, i, handle, axis, hname, - that = this, - o = this.options; - this.element.addClass("ui-resizable"); - - $.extend(this, { - _aspectRatio: !!(o.aspectRatio), - aspectRatio: o.aspectRatio, - originalElement: this.element, - _proportionallyResizeElements: [], - _helper: o.helper || o.ghost || o.animate ? o.helper || "ui-resizable-helper" : null - }); - - //Wrap the element if it cannot hold child nodes - if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)) { - - //Create a wrapper element and set the wrapper to the new current internal element - this.element.wrap( - $("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({ - position: this.element.css("position"), - width: this.element.outerWidth(), - height: this.element.outerHeight(), - top: this.element.css("top"), - left: this.element.css("left") - }) - ); - - //Overwrite the original this.element - this.element = this.element.parent().data( - "ui-resizable", this.element.data("ui-resizable") - ); - - this.elementIsWrapper = true; - - //Move margins to the wrapper - this.element.css({ marginLeft: this.originalElement.css("marginLeft"), marginTop: this.originalElement.css("marginTop"), marginRight: this.originalElement.css("marginRight"), marginBottom: this.originalElement.css("marginBottom") }); - this.originalElement.css({ marginLeft: 0, marginTop: 0, marginRight: 0, marginBottom: 0}); - - //Prevent Safari textarea resize - this.originalResizeStyle = this.originalElement.css("resize"); - this.originalElement.css("resize", "none"); - - //Push the actual element to our proportionallyResize internal array - this._proportionallyResizeElements.push(this.originalElement.css({ position: "static", zoom: 1, display: "block" })); - - // avoid IE jump (hard set the margin) - this.originalElement.css({ margin: this.originalElement.css("margin") }); - - // fix handlers offset - this._proportionallyResize(); - - } - - this.handles = o.handles || (!$(".ui-resizable-handle", this.element).length ? "e,s,se" : { n: ".ui-resizable-n", e: ".ui-resizable-e", s: ".ui-resizable-s", w: ".ui-resizable-w", se: ".ui-resizable-se", sw: ".ui-resizable-sw", ne: ".ui-resizable-ne", nw: ".ui-resizable-nw" }); - if(this.handles.constructor === String) { - - if ( this.handles === "all") { - this.handles = "n,e,s,w,se,sw,ne,nw"; - } - - n = this.handles.split(","); - this.handles = {}; - - for(i = 0; i < n.length; i++) { - - handle = $.trim(n[i]); - hname = "ui-resizable-"+handle; - axis = $("<div class='ui-resizable-handle " + hname + "'></div>"); - - // Apply zIndex to all handles - see #7960 - axis.css({ zIndex: o.zIndex }); - - //TODO : What's going on here? - if ("se" === handle) { - axis.addClass("ui-icon ui-icon-gripsmall-diagonal-se"); - } - - //Insert into internal handles object and append to element - this.handles[handle] = ".ui-resizable-"+handle; - this.element.append(axis); - } - - } - - this._renderAxis = function(target) { - - var i, axis, padPos, padWrapper; - - target = target || this.element; - - for(i in this.handles) { - - if(this.handles[i].constructor === String) { - this.handles[i] = $(this.handles[i], this.element).show(); - } - - //Apply pad to wrapper element, needed to fix axis position (textarea, inputs, scrolls) - if (this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i)) { - - axis = $(this.handles[i], this.element); - - //Checking the correct pad and border - padWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth(); - - //The padding type i have to apply... - padPos = [ "padding", - /ne|nw|n/.test(i) ? "Top" : - /se|sw|s/.test(i) ? "Bottom" : - /^e$/.test(i) ? "Right" : "Left" ].join(""); - - target.css(padPos, padWrapper); - - this._proportionallyResize(); - - } - - //TODO: What's that good for? There's not anything to be executed left - if(!$(this.handles[i]).length) { - - } - } - }; - - //TODO: make renderAxis a prototype function - this._renderAxis(this.element); - - this._handles = $(".ui-resizable-handle", this.element) - .disableSelection(); - - //Matching axis name - this._handles.mouseover(function() { - if (!that.resizing) { - if (this.className) { - axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i); - } - //Axis, default = se - that.axis = axis && axis[1] ? axis[1] : "se"; - } - }); - - //If we want to auto hide the elements - if (o.autoHide) { - this._handles.hide(); - $(this.element) - .addClass("ui-resizable-autohide") - .mouseenter(function() { - if (o.disabled) { - return; - } - $(this).removeClass("ui-resizable-autohide"); - that._handles.show(); - }) - .mouseleave(function(){ - if (o.disabled) { - return; - } - if (!that.resizing) { - $(this).addClass("ui-resizable-autohide"); - that._handles.hide(); - } - }); - } - - //Initialize the mouse interaction - this._mouseInit(); - - }, - - _destroy: function() { - - this._mouseDestroy(); - - var wrapper, - _destroy = function(exp) { - $(exp).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing") - .removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove(); - }; - - //TODO: Unwrap at same DOM position - if (this.elementIsWrapper) { - _destroy(this.element); - wrapper = this.element; - this.originalElement.css({ - position: wrapper.css("position"), - width: wrapper.outerWidth(), - height: wrapper.outerHeight(), - top: wrapper.css("top"), - left: wrapper.css("left") - }).insertAfter( wrapper ); - wrapper.remove(); - } - - this.originalElement.css("resize", this.originalResizeStyle); - _destroy(this.originalElement); - - return this; - }, - - _mouseCapture: function(event) { - var i, handle, - capture = false; - - for (i in this.handles) { - handle = $(this.handles[i])[0]; - if (handle === event.target || $.contains(handle, event.target)) { - capture = true; - } - } - - return !this.options.disabled && capture; - }, - - _mouseStart: function(event) { - - var curleft, curtop, cursor, - o = this.options, - iniPos = this.element.position(), - el = this.element; - - this.resizing = true; - - // bugfix for http://dev.jquery.com/ticket/1749 - if ( (/absolute/).test( el.css("position") ) ) { - el.css({ position: "absolute", top: el.css("top"), left: el.css("left") }); - } else if (el.is(".ui-draggable")) { - el.css({ position: "absolute", top: iniPos.top, left: iniPos.left }); - } - - this._renderProxy(); - - curleft = num(this.helper.css("left")); - curtop = num(this.helper.css("top")); - - if (o.containment) { - curleft += $(o.containment).scrollLeft() || 0; - curtop += $(o.containment).scrollTop() || 0; - } - - //Store needed variables - this.offset = this.helper.offset(); - this.position = { left: curleft, top: curtop }; - this.size = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() }; - this.originalSize = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() }; - this.originalPosition = { left: curleft, top: curtop }; - this.sizeDiff = { width: el.outerWidth() - el.width(), height: el.outerHeight() - el.height() }; - this.originalMousePosition = { left: event.pageX, top: event.pageY }; - - //Aspect Ratio - this.aspectRatio = (typeof o.aspectRatio === "number") ? o.aspectRatio : ((this.originalSize.width / this.originalSize.height) || 1); - - cursor = $(".ui-resizable-" + this.axis).css("cursor"); - $("body").css("cursor", cursor === "auto" ? this.axis + "-resize" : cursor); - - el.addClass("ui-resizable-resizing"); - this._propagate("start", event); - return true; - }, - - _mouseDrag: function(event) { - - //Increase performance, avoid regex - var data, - el = this.helper, props = {}, - smp = this.originalMousePosition, - a = this.axis, - prevTop = this.position.top, - prevLeft = this.position.left, - prevWidth = this.size.width, - prevHeight = this.size.height, - dx = (event.pageX-smp.left)||0, - dy = (event.pageY-smp.top)||0, - trigger = this._change[a]; - - if (!trigger) { - return false; - } - - // Calculate the attrs that will be change - data = trigger.apply(this, [event, dx, dy]); - - // Put this in the mouseDrag handler since the user can start pressing shift while resizing - this._updateVirtualBoundaries(event.shiftKey); - if (this._aspectRatio || event.shiftKey) { - data = this._updateRatio(data, event); - } - - data = this._respectSize(data, event); - - this._updateCache(data); - - // plugins callbacks need to be called first - this._propagate("resize", event); - - if (this.position.top !== prevTop) { - props.top = this.position.top + "px"; - } - if (this.position.left !== prevLeft) { - props.left = this.position.left + "px"; - } - if (this.size.width !== prevWidth) { - props.width = this.size.width + "px"; - } - if (this.size.height !== prevHeight) { - props.height = this.size.height + "px"; - } - el.css(props); - - if (!this._helper && this._proportionallyResizeElements.length) { - this._proportionallyResize(); - } - - // Call the user callback if the element was resized - if ( ! $.isEmptyObject(props) ) { - this._trigger("resize", event, this.ui()); - } - - return false; - }, - - _mouseStop: function(event) { - - this.resizing = false; - var pr, ista, soffseth, soffsetw, s, left, top, - o = this.options, that = this; - - if(this._helper) { - - pr = this._proportionallyResizeElements; - ista = pr.length && (/textarea/i).test(pr[0].nodeName); - soffseth = ista && $.ui.hasScroll(pr[0], "left") /* TODO - jump height */ ? 0 : that.sizeDiff.height; - soffsetw = ista ? 0 : that.sizeDiff.width; - - s = { width: (that.helper.width() - soffsetw), height: (that.helper.height() - soffseth) }; - left = (parseInt(that.element.css("left"), 10) + (that.position.left - that.originalPosition.left)) || null; - top = (parseInt(that.element.css("top"), 10) + (that.position.top - that.originalPosition.top)) || null; - - if (!o.animate) { - this.element.css($.extend(s, { top: top, left: left })); - } - - that.helper.height(that.size.height); - that.helper.width(that.size.width); - - if (this._helper && !o.animate) { - this._proportionallyResize(); - } - } - - $("body").css("cursor", "auto"); - - this.element.removeClass("ui-resizable-resizing"); - - this._propagate("stop", event); - - if (this._helper) { - this.helper.remove(); - } - - return false; - - }, - - _updateVirtualBoundaries: function(forceAspectRatio) { - var pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b, - o = this.options; - - b = { - minWidth: isNumber(o.minWidth) ? o.minWidth : 0, - maxWidth: isNumber(o.maxWidth) ? o.maxWidth : Infinity, - minHeight: isNumber(o.minHeight) ? o.minHeight : 0, - maxHeight: isNumber(o.maxHeight) ? o.maxHeight : Infinity - }; - - if(this._aspectRatio || forceAspectRatio) { - // We want to create an enclosing box whose aspect ration is the requested one - // First, compute the "projected" size for each dimension based on the aspect ratio and other dimension - pMinWidth = b.minHeight * this.aspectRatio; - pMinHeight = b.minWidth / this.aspectRatio; - pMaxWidth = b.maxHeight * this.aspectRatio; - pMaxHeight = b.maxWidth / this.aspectRatio; - - if(pMinWidth > b.minWidth) { - b.minWidth = pMinWidth; - } - if(pMinHeight > b.minHeight) { - b.minHeight = pMinHeight; - } - if(pMaxWidth < b.maxWidth) { - b.maxWidth = pMaxWidth; - } - if(pMaxHeight < b.maxHeight) { - b.maxHeight = pMaxHeight; - } - } - this._vBoundaries = b; - }, - - _updateCache: function(data) { - this.offset = this.helper.offset(); - if (isNumber(data.left)) { - this.position.left = data.left; - } - if (isNumber(data.top)) { - this.position.top = data.top; - } - if (isNumber(data.height)) { - this.size.height = data.height; - } - if (isNumber(data.width)) { - this.size.width = data.width; - } - }, - - _updateRatio: function( data ) { - - var cpos = this.position, - csize = this.size, - a = this.axis; - - if (isNumber(data.height)) { - data.width = (data.height * this.aspectRatio); - } else if (isNumber(data.width)) { - data.height = (data.width / this.aspectRatio); - } - - if (a === "sw") { - data.left = cpos.left + (csize.width - data.width); - data.top = null; - } - if (a === "nw") { - data.top = cpos.top + (csize.height - data.height); - data.left = cpos.left + (csize.width - data.width); - } - - return data; - }, - - _respectSize: function( data ) { - - var o = this._vBoundaries, - a = this.axis, - ismaxw = isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width), ismaxh = isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height), - isminw = isNumber(data.width) && o.minWidth && (o.minWidth > data.width), isminh = isNumber(data.height) && o.minHeight && (o.minHeight > data.height), - dw = this.originalPosition.left + this.originalSize.width, - dh = this.position.top + this.size.height, - cw = /sw|nw|w/.test(a), ch = /nw|ne|n/.test(a); - if (isminw) { - data.width = o.minWidth; - } - if (isminh) { - data.height = o.minHeight; - } - if (ismaxw) { - data.width = o.maxWidth; - } - if (ismaxh) { - data.height = o.maxHeight; - } - - if (isminw && cw) { - data.left = dw - o.minWidth; - } - if (ismaxw && cw) { - data.left = dw - o.maxWidth; - } - if (isminh && ch) { - data.top = dh - o.minHeight; - } - if (ismaxh && ch) { - data.top = dh - o.maxHeight; - } - - // fixing jump error on top/left - bug #2330 - if (!data.width && !data.height && !data.left && data.top) { - data.top = null; - } else if (!data.width && !data.height && !data.top && data.left) { - data.left = null; - } - - return data; - }, - - _proportionallyResize: function() { - - if (!this._proportionallyResizeElements.length) { - return; - } - - var i, j, borders, paddings, prel, - element = this.helper || this.element; - - for ( i=0; i < this._proportionallyResizeElements.length; i++) { - - prel = this._proportionallyResizeElements[i]; - - if (!this.borderDif) { - this.borderDif = []; - borders = [prel.css("borderTopWidth"), prel.css("borderRightWidth"), prel.css("borderBottomWidth"), prel.css("borderLeftWidth")]; - paddings = [prel.css("paddingTop"), prel.css("paddingRight"), prel.css("paddingBottom"), prel.css("paddingLeft")]; - - for ( j = 0; j < borders.length; j++ ) { - this.borderDif[ j ] = ( parseInt( borders[ j ], 10 ) || 0 ) + ( parseInt( paddings[ j ], 10 ) || 0 ); - } - } - - prel.css({ - height: (element.height() - this.borderDif[0] - this.borderDif[2]) || 0, - width: (element.width() - this.borderDif[1] - this.borderDif[3]) || 0 - }); - - } - - }, - - _renderProxy: function() { - - var el = this.element, o = this.options; - this.elementOffset = el.offset(); - - if(this._helper) { - - this.helper = this.helper || $("<div style='overflow:hidden;'></div>"); - - this.helper.addClass(this._helper).css({ - width: this.element.outerWidth() - 1, - height: this.element.outerHeight() - 1, - position: "absolute", - left: this.elementOffset.left +"px", - top: this.elementOffset.top +"px", - zIndex: ++o.zIndex //TODO: Don't modify option - }); - - this.helper - .appendTo("body") - .disableSelection(); - - } else { - this.helper = this.element; - } - - }, - - _change: { - e: function(event, dx) { - return { width: this.originalSize.width + dx }; - }, - w: function(event, dx) { - var cs = this.originalSize, sp = this.originalPosition; - return { left: sp.left + dx, width: cs.width - dx }; - }, - n: function(event, dx, dy) { - var cs = this.originalSize, sp = this.originalPosition; - return { top: sp.top + dy, height: cs.height - dy }; - }, - s: function(event, dx, dy) { - return { height: this.originalSize.height + dy }; - }, - se: function(event, dx, dy) { - return $.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [event, dx, dy])); - }, - sw: function(event, dx, dy) { - return $.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [event, dx, dy])); - }, - ne: function(event, dx, dy) { - return $.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [event, dx, dy])); - }, - nw: function(event, dx, dy) { - return $.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [event, dx, dy])); - } - }, - - _propagate: function(n, event) { - $.ui.plugin.call(this, n, [event, this.ui()]); - (n !== "resize" && this._trigger(n, event, this.ui())); - }, - - plugins: {}, - - ui: function() { - return { - originalElement: this.originalElement, - element: this.element, - helper: this.helper, - position: this.position, - size: this.size, - originalSize: this.originalSize, - originalPosition: this.originalPosition - }; - } - -}); - -/* - * Resizable Extensions - */ - -$.ui.plugin.add("resizable", "animate", { - - stop: function( event ) { - var that = $(this).data("ui-resizable"), - o = that.options, - pr = that._proportionallyResizeElements, - ista = pr.length && (/textarea/i).test(pr[0].nodeName), - soffseth = ista && $.ui.hasScroll(pr[0], "left") /* TODO - jump height */ ? 0 : that.sizeDiff.height, - soffsetw = ista ? 0 : that.sizeDiff.width, - style = { width: (that.size.width - soffsetw), height: (that.size.height - soffseth) }, - left = (parseInt(that.element.css("left"), 10) + (that.position.left - that.originalPosition.left)) || null, - top = (parseInt(that.element.css("top"), 10) + (that.position.top - that.originalPosition.top)) || null; - - that.element.animate( - $.extend(style, top && left ? { top: top, left: left } : {}), { - duration: o.animateDuration, - easing: o.animateEasing, - step: function() { - - var data = { - width: parseInt(that.element.css("width"), 10), - height: parseInt(that.element.css("height"), 10), - top: parseInt(that.element.css("top"), 10), - left: parseInt(that.element.css("left"), 10) - }; - - if (pr && pr.length) { - $(pr[0]).css({ width: data.width, height: data.height }); - } - - // propagating resize, and updating values for each animation step - that._updateCache(data); - that._propagate("resize", event); - - } - } - ); - } - -}); - -$.ui.plugin.add("resizable", "containment", { - - start: function() { - var element, p, co, ch, cw, width, height, - that = $(this).data("ui-resizable"), - o = that.options, - el = that.element, - oc = o.containment, - ce = (oc instanceof $) ? oc.get(0) : (/parent/.test(oc)) ? el.parent().get(0) : oc; - - if (!ce) { - return; - } - - that.containerElement = $(ce); - - if (/document/.test(oc) || oc === document) { - that.containerOffset = { left: 0, top: 0 }; - that.containerPosition = { left: 0, top: 0 }; - - that.parentData = { - element: $(document), left: 0, top: 0, - width: $(document).width(), height: $(document).height() || document.body.parentNode.scrollHeight - }; - } - - // i'm a node, so compute top, left, right, bottom - else { - element = $(ce); - p = []; - $([ "Top", "Right", "Left", "Bottom" ]).each(function(i, name) { p[i] = num(element.css("padding" + name)); }); - - that.containerOffset = element.offset(); - that.containerPosition = element.position(); - that.containerSize = { height: (element.innerHeight() - p[3]), width: (element.innerWidth() - p[1]) }; - - co = that.containerOffset; - ch = that.containerSize.height; - cw = that.containerSize.width; - width = ($.ui.hasScroll(ce, "left") ? ce.scrollWidth : cw ); - height = ($.ui.hasScroll(ce) ? ce.scrollHeight : ch); - - that.parentData = { - element: ce, left: co.left, top: co.top, width: width, height: height - }; - } - }, - - resize: function( event ) { - var woset, hoset, isParent, isOffsetRelative, - that = $(this).data("ui-resizable"), - o = that.options, - co = that.containerOffset, cp = that.position, - pRatio = that._aspectRatio || event.shiftKey, - cop = { top:0, left:0 }, ce = that.containerElement; - - if (ce[0] !== document && (/static/).test(ce.css("position"))) { - cop = co; - } - - if (cp.left < (that._helper ? co.left : 0)) { - that.size.width = that.size.width + (that._helper ? (that.position.left - co.left) : (that.position.left - cop.left)); - if (pRatio) { - that.size.height = that.size.width / that.aspectRatio; - } - that.position.left = o.helper ? co.left : 0; - } - - if (cp.top < (that._helper ? co.top : 0)) { - that.size.height = that.size.height + (that._helper ? (that.position.top - co.top) : that.position.top); - if (pRatio) { - that.size.width = that.size.height * that.aspectRatio; - } - that.position.top = that._helper ? co.top : 0; - } - - that.offset.left = that.parentData.left+that.position.left; - that.offset.top = that.parentData.top+that.position.top; - - woset = Math.abs( (that._helper ? that.offset.left - cop.left : (that.offset.left - cop.left)) + that.sizeDiff.width ); - hoset = Math.abs( (that._helper ? that.offset.top - cop.top : (that.offset.top - co.top)) + that.sizeDiff.height ); - - isParent = that.containerElement.get(0) === that.element.parent().get(0); - isOffsetRelative = /relative|absolute/.test(that.containerElement.css("position")); - - if(isParent && isOffsetRelative) { - woset -= that.parentData.left; - } - - if (woset + that.size.width >= that.parentData.width) { - that.size.width = that.parentData.width - woset; - if (pRatio) { - that.size.height = that.size.width / that.aspectRatio; - } - } - - if (hoset + that.size.height >= that.parentData.height) { - that.size.height = that.parentData.height - hoset; - if (pRatio) { - that.size.width = that.size.height * that.aspectRatio; - } - } - }, - - stop: function(){ - var that = $(this).data("ui-resizable"), - o = that.options, - co = that.containerOffset, - cop = that.containerPosition, - ce = that.containerElement, - helper = $(that.helper), - ho = helper.offset(), - w = helper.outerWidth() - that.sizeDiff.width, - h = helper.outerHeight() - that.sizeDiff.height; - - if (that._helper && !o.animate && (/relative/).test(ce.css("position"))) { - $(this).css({ left: ho.left - cop.left - co.left, width: w, height: h }); - } - - if (that._helper && !o.animate && (/static/).test(ce.css("position"))) { - $(this).css({ left: ho.left - cop.left - co.left, width: w, height: h }); - } - - } -}); - -$.ui.plugin.add("resizable", "alsoResize", { - - start: function () { - var that = $(this).data("ui-resizable"), - o = that.options, - _store = function (exp) { - $(exp).each(function() { - var el = $(this); - el.data("ui-resizable-alsoresize", { - width: parseInt(el.width(), 10), height: parseInt(el.height(), 10), - left: parseInt(el.css("left"), 10), top: parseInt(el.css("top"), 10) - }); - }); - }; - - if (typeof(o.alsoResize) === "object" && !o.alsoResize.parentNode) { - if (o.alsoResize.length) { o.alsoResize = o.alsoResize[0]; _store(o.alsoResize); } - else { $.each(o.alsoResize, function (exp) { _store(exp); }); } - }else{ - _store(o.alsoResize); - } - }, - - resize: function (event, ui) { - var that = $(this).data("ui-resizable"), - o = that.options, - os = that.originalSize, - op = that.originalPosition, - delta = { - height: (that.size.height - os.height) || 0, width: (that.size.width - os.width) || 0, - top: (that.position.top - op.top) || 0, left: (that.position.left - op.left) || 0 - }, - - _alsoResize = function (exp, c) { - $(exp).each(function() { - var el = $(this), start = $(this).data("ui-resizable-alsoresize"), style = {}, - css = c && c.length ? c : el.parents(ui.originalElement[0]).length ? ["width", "height"] : ["width", "height", "top", "left"]; - - $.each(css, function (i, prop) { - var sum = (start[prop]||0) + (delta[prop]||0); - if (sum && sum >= 0) { - style[prop] = sum || null; - } - }); - - el.css(style); - }); - }; - - if (typeof(o.alsoResize) === "object" && !o.alsoResize.nodeType) { - $.each(o.alsoResize, function (exp, c) { _alsoResize(exp, c); }); - }else{ - _alsoResize(o.alsoResize); - } - }, - - stop: function () { - $(this).removeData("resizable-alsoresize"); - } -}); - -$.ui.plugin.add("resizable", "ghost", { - - start: function() { - - var that = $(this).data("ui-resizable"), o = that.options, cs = that.size; - - that.ghost = that.originalElement.clone(); - that.ghost - .css({ opacity: 0.25, display: "block", position: "relative", height: cs.height, width: cs.width, margin: 0, left: 0, top: 0 }) - .addClass("ui-resizable-ghost") - .addClass(typeof o.ghost === "string" ? o.ghost : ""); - - that.ghost.appendTo(that.helper); - - }, - - resize: function(){ - var that = $(this).data("ui-resizable"); - if (that.ghost) { - that.ghost.css({ position: "relative", height: that.size.height, width: that.size.width }); - } - }, - - stop: function() { - var that = $(this).data("ui-resizable"); - if (that.ghost && that.helper) { - that.helper.get(0).removeChild(that.ghost.get(0)); - } - } - -}); - -$.ui.plugin.add("resizable", "grid", { - - resize: function() { - var that = $(this).data("ui-resizable"), - o = that.options, - cs = that.size, - os = that.originalSize, - op = that.originalPosition, - a = that.axis, - grid = typeof o.grid === "number" ? [o.grid, o.grid] : o.grid, - gridX = (grid[0]||1), - gridY = (grid[1]||1), - ox = Math.round((cs.width - os.width) / gridX) * gridX, - oy = Math.round((cs.height - os.height) / gridY) * gridY, - newWidth = os.width + ox, - newHeight = os.height + oy, - isMaxWidth = o.maxWidth && (o.maxWidth < newWidth), - isMaxHeight = o.maxHeight && (o.maxHeight < newHeight), - isMinWidth = o.minWidth && (o.minWidth > newWidth), - isMinHeight = o.minHeight && (o.minHeight > newHeight); - - o.grid = grid; - - if (isMinWidth) { - newWidth = newWidth + gridX; - } - if (isMinHeight) { - newHeight = newHeight + gridY; - } - if (isMaxWidth) { - newWidth = newWidth - gridX; - } - if (isMaxHeight) { - newHeight = newHeight - gridY; - } - - if (/^(se|s|e)$/.test(a)) { - that.size.width = newWidth; - that.size.height = newHeight; - } else if (/^(ne)$/.test(a)) { - that.size.width = newWidth; - that.size.height = newHeight; - that.position.top = op.top - oy; - } else if (/^(sw)$/.test(a)) { - that.size.width = newWidth; - that.size.height = newHeight; - that.position.left = op.left - ox; - } else { - that.size.width = newWidth; - that.size.height = newHeight; - that.position.top = op.top - oy; - that.position.left = op.left - ox; - } - } - -}); - -})(jQuery); -(function( $, undefined ) { - -$.widget("ui.selectable", $.ui.mouse, { - version: "1.10.3", - options: { - appendTo: "body", - autoRefresh: true, - distance: 0, - filter: "*", - tolerance: "touch", - - // callbacks - selected: null, - selecting: null, - start: null, - stop: null, - unselected: null, - unselecting: null - }, - _create: function() { - var selectees, - that = this; - - this.element.addClass("ui-selectable"); - - this.dragged = false; - - // cache selectee children based on filter - this.refresh = function() { - selectees = $(that.options.filter, that.element[0]); - selectees.addClass("ui-selectee"); - selectees.each(function() { - var $this = $(this), - pos = $this.offset(); - $.data(this, "selectable-item", { - element: this, - $element: $this, - left: pos.left, - top: pos.top, - right: pos.left + $this.outerWidth(), - bottom: pos.top + $this.outerHeight(), - startselected: false, - selected: $this.hasClass("ui-selected"), - selecting: $this.hasClass("ui-selecting"), - unselecting: $this.hasClass("ui-unselecting") - }); - }); - }; - this.refresh(); - - this.selectees = selectees.addClass("ui-selectee"); - - this._mouseInit(); - - this.helper = $("<div class='ui-selectable-helper'></div>"); - }, - - _destroy: function() { - this.selectees - .removeClass("ui-selectee") - .removeData("selectable-item"); - this.element - .removeClass("ui-selectable ui-selectable-disabled"); - this._mouseDestroy(); - }, - - _mouseStart: function(event) { - var that = this, - options = this.options; - - this.opos = [event.pageX, event.pageY]; - - if (this.options.disabled) { - return; - } - - this.selectees = $(options.filter, this.element[0]); - - this._trigger("start", event); - - $(options.appendTo).append(this.helper); - // position helper (lasso) - this.helper.css({ - "left": event.pageX, - "top": event.pageY, - "width": 0, - "height": 0 - }); - - if (options.autoRefresh) { - this.refresh(); - } - - this.selectees.filter(".ui-selected").each(function() { - var selectee = $.data(this, "selectable-item"); - selectee.startselected = true; - if (!event.metaKey && !event.ctrlKey) { - selectee.$element.removeClass("ui-selected"); - selectee.selected = false; - selectee.$element.addClass("ui-unselecting"); - selectee.unselecting = true; - // selectable UNSELECTING callback - that._trigger("unselecting", event, { - unselecting: selectee.element - }); - } - }); - - $(event.target).parents().addBack().each(function() { - var doSelect, - selectee = $.data(this, "selectable-item"); - if (selectee) { - doSelect = (!event.metaKey && !event.ctrlKey) || !selectee.$element.hasClass("ui-selected"); - selectee.$element - .removeClass(doSelect ? "ui-unselecting" : "ui-selected") - .addClass(doSelect ? "ui-selecting" : "ui-unselecting"); - selectee.unselecting = !doSelect; - selectee.selecting = doSelect; - selectee.selected = doSelect; - // selectable (UN)SELECTING callback - if (doSelect) { - that._trigger("selecting", event, { - selecting: selectee.element - }); - } else { - that._trigger("unselecting", event, { - unselecting: selectee.element - }); - } - return false; - } - }); - - }, - - _mouseDrag: function(event) { - - this.dragged = true; - - if (this.options.disabled) { - return; - } - - var tmp, - that = this, - options = this.options, - x1 = this.opos[0], - y1 = this.opos[1], - x2 = event.pageX, - y2 = event.pageY; - - if (x1 > x2) { tmp = x2; x2 = x1; x1 = tmp; } - if (y1 > y2) { tmp = y2; y2 = y1; y1 = tmp; } - this.helper.css({left: x1, top: y1, width: x2-x1, height: y2-y1}); - - this.selectees.each(function() { - var selectee = $.data(this, "selectable-item"), - hit = false; - - //prevent helper from being selected if appendTo: selectable - if (!selectee || selectee.element === that.element[0]) { - return; - } - - if (options.tolerance === "touch") { - hit = ( !(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1) ); - } else if (options.tolerance === "fit") { - hit = (selectee.left > x1 && selectee.right < x2 && selectee.top > y1 && selectee.bottom < y2); - } - - if (hit) { - // SELECT - if (selectee.selected) { - selectee.$element.removeClass("ui-selected"); - selectee.selected = false; - } - if (selectee.unselecting) { - selectee.$element.removeClass("ui-unselecting"); - selectee.unselecting = false; - } - if (!selectee.selecting) { - selectee.$element.addClass("ui-selecting"); - selectee.selecting = true; - // selectable SELECTING callback - that._trigger("selecting", event, { - selecting: selectee.element - }); - } - } else { - // UNSELECT - if (selectee.selecting) { - if ((event.metaKey || event.ctrlKey) && selectee.startselected) { - selectee.$element.removeClass("ui-selecting"); - selectee.selecting = false; - selectee.$element.addClass("ui-selected"); - selectee.selected = true; - } else { - selectee.$element.removeClass("ui-selecting"); - selectee.selecting = false; - if (selectee.startselected) { - selectee.$element.addClass("ui-unselecting"); - selectee.unselecting = true; - } - // selectable UNSELECTING callback - that._trigger("unselecting", event, { - unselecting: selectee.element - }); - } - } - if (selectee.selected) { - if (!event.metaKey && !event.ctrlKey && !selectee.startselected) { - selectee.$element.removeClass("ui-selected"); - selectee.selected = false; - - selectee.$element.addClass("ui-unselecting"); - selectee.unselecting = true; - // selectable UNSELECTING callback - that._trigger("unselecting", event, { - unselecting: selectee.element - }); - } - } - } - }); - - return false; - }, - - _mouseStop: function(event) { - var that = this; - - this.dragged = false; - - $(".ui-unselecting", this.element[0]).each(function() { - var selectee = $.data(this, "selectable-item"); - selectee.$element.removeClass("ui-unselecting"); - selectee.unselecting = false; - selectee.startselected = false; - that._trigger("unselected", event, { - unselected: selectee.element - }); - }); - $(".ui-selecting", this.element[0]).each(function() { - var selectee = $.data(this, "selectable-item"); - selectee.$element.removeClass("ui-selecting").addClass("ui-selected"); - selectee.selecting = false; - selectee.selected = true; - selectee.startselected = true; - that._trigger("selected", event, { - selected: selectee.element - }); - }); - this._trigger("stop", event); - - this.helper.remove(); - - return false; - } - -}); - -})(jQuery); -(function( $, undefined ) { - -/*jshint loopfunc: true */ - -function isOverAxis( x, reference, size ) { - return ( x > reference ) && ( x < ( reference + size ) ); -} - -function isFloating(item) { - return (/left|right/).test(item.css("float")) || (/inline|table-cell/).test(item.css("display")); -} - -$.widget("ui.sortable", $.ui.mouse, { - version: "1.10.3", - widgetEventPrefix: "sort", - ready: false, - options: { - appendTo: "parent", - axis: false, - connectWith: false, - containment: false, - cursor: "auto", - cursorAt: false, - dropOnEmpty: true, - forcePlaceholderSize: false, - forceHelperSize: false, - grid: false, - handle: false, - helper: "original", - items: "> *", - opacity: false, - placeholder: false, - revert: false, - scroll: true, - scrollSensitivity: 20, - scrollSpeed: 20, - scope: "default", - tolerance: "intersect", - zIndex: 1000, - - // callbacks - activate: null, - beforeStop: null, - change: null, - deactivate: null, - out: null, - over: null, - receive: null, - remove: null, - sort: null, - start: null, - stop: null, - update: null - }, - _create: function() { - - var o = this.options; - this.containerCache = {}; - this.element.addClass("ui-sortable"); - - //Get the items - this.refresh(); - - //Let's determine if the items are being displayed horizontally - this.floating = this.items.length ? o.axis === "x" || isFloating(this.items[0].item) : false; - - //Let's determine the parent's offset - this.offset = this.element.offset(); - - //Initialize mouse events for interaction - this._mouseInit(); - - //We're ready to go - this.ready = true; - - }, - - _destroy: function() { - this.element - .removeClass("ui-sortable ui-sortable-disabled"); - this._mouseDestroy(); - - for ( var i = this.items.length - 1; i >= 0; i-- ) { - this.items[i].item.removeData(this.widgetName + "-item"); - } - - return this; - }, - - _setOption: function(key, value){ - if ( key === "disabled" ) { - this.options[ key ] = value; - - this.widget().toggleClass( "ui-sortable-disabled", !!value ); - } else { - // Don't call widget base _setOption for disable as it adds ui-state-disabled class - $.Widget.prototype._setOption.apply(this, arguments); - } - }, - - _mouseCapture: function(event, overrideHandle) { - var currentItem = null, - validHandle = false, - that = this; - - if (this.reverting) { - return false; - } - - if(this.options.disabled || this.options.type === "static") { - return false; - } - - //We have to refresh the items data once first - this._refreshItems(event); - - //Find out if the clicked node (or one of its parents) is a actual item in this.items - $(event.target).parents().each(function() { - if($.data(this, that.widgetName + "-item") === that) { - currentItem = $(this); - return false; - } - }); - if($.data(event.target, that.widgetName + "-item") === that) { - currentItem = $(event.target); - } - - if(!currentItem) { - return false; - } - if(this.options.handle && !overrideHandle) { - $(this.options.handle, currentItem).find("*").addBack().each(function() { - if(this === event.target) { - validHandle = true; - } - }); - if(!validHandle) { - return false; - } - } - - this.currentItem = currentItem; - this._removeCurrentsFromItems(); - return true; - - }, - - _mouseStart: function(event, overrideHandle, noActivation) { - - var i, body, - o = this.options; - - this.currentContainer = this; - - //We only need to call refreshPositions, because the refreshItems call has been moved to mouseCapture - this.refreshPositions(); - - //Create and append the visible helper - this.helper = this._createHelper(event); - - //Cache the helper size - this._cacheHelperProportions(); - - /* - * - Position generation - - * This block generates everything position related - it's the core of draggables. - */ - - //Cache the margins of the original element - this._cacheMargins(); - - //Get the next scrolling parent - this.scrollParent = this.helper.scrollParent(); - - //The element's absolute position on the page minus margins - this.offset = this.currentItem.offset(); - this.offset = { - top: this.offset.top - this.margins.top, - left: this.offset.left - this.margins.left - }; - - $.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 - }); - - // Only after we got the offset, we can change the helper's position to absolute - // TODO: Still need to figure out a way to make relative sorting possible - this.helper.css("position", "absolute"); - this.cssPosition = this.helper.css("position"); - - //Generate the original position - this.originalPosition = 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)); - - //Cache the former DOM position - this.domPosition = { prev: this.currentItem.prev()[0], parent: this.currentItem.parent()[0] }; - - //If the helper is not the original, hide the original so it's not playing any role during the drag, won't cause anything bad this way - if(this.helper[0] !== this.currentItem[0]) { - this.currentItem.hide(); - } - - //Create the placeholder - this._createPlaceholder(); - - //Set a containment if given in the options - if(o.containment) { - this._setContainment(); - } - - if( o.cursor && o.cursor !== "auto" ) { // cursor option - body = this.document.find( "body" ); - - // support: IE - this.storedCursor = body.css( "cursor" ); - body.css( "cursor", o.cursor ); - - this.storedStylesheet = $( "<style>*{ cursor: "+o.cursor+" !important; }</style>" ).appendTo( body ); - } - - if(o.opacity) { // opacity option - if (this.helper.css("opacity")) { - this._storedOpacity = this.helper.css("opacity"); - } - this.helper.css("opacity", o.opacity); - } - - if(o.zIndex) { // zIndex option - if (this.helper.css("zIndex")) { - this._storedZIndex = this.helper.css("zIndex"); - } - this.helper.css("zIndex", o.zIndex); - } - - //Prepare scrolling - if(this.scrollParent[0] !== document && this.scrollParent[0].tagName !== "HTML") { - this.overflowOffset = this.scrollParent.offset(); - } - - //Call callbacks - this._trigger("start", event, this._uiHash()); - - //Recache the helper size - if(!this._preserveHelperProportions) { - this._cacheHelperProportions(); - } - - - //Post "activate" events to possible containers - if( !noActivation ) { - for ( i = this.containers.length - 1; i >= 0; i-- ) { - this.containers[ i ]._trigger( "activate", event, this._uiHash( this ) ); - } - } - - //Prepare possible droppables - if($.ui.ddmanager) { - $.ui.ddmanager.current = this; - } - - if ($.ui.ddmanager && !o.dropBehaviour) { - $.ui.ddmanager.prepareOffsets(this, event); - } - - this.dragging = true; - - this.helper.addClass("ui-sortable-helper"); - this._mouseDrag(event); //Execute the drag once - this causes the helper not to be visible before getting its correct position - return true; - - }, - - _mouseDrag: function(event) { - var i, item, itemElement, intersection, - o = this.options, - scrolled = false; - - //Compute the helpers position - this.position = this._generatePosition(event); - this.positionAbs = this._convertPositionTo("absolute"); - - if (!this.lastPositionAbs) { - this.lastPositionAbs = this.positionAbs; - } - - //Do scrolling - if(this.options.scroll) { - if(this.scrollParent[0] !== document && this.scrollParent[0].tagName !== "HTML") { - - if((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) { - this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed; - } else if(event.pageY - this.overflowOffset.top < o.scrollSensitivity) { - this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed; - } - - if((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) { - this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed; - } else if(event.pageX - this.overflowOffset.left < o.scrollSensitivity) { - this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed; - } - - } else { - - 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(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(this, event); - } - } - - //Regenerate the absolute position used for position checks - this.positionAbs = this._convertPositionTo("absolute"); - - //Set the helper 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"; - } - - //Rearrange - for (i = this.items.length - 1; i >= 0; i--) { - - //Cache variables and intersection, continue if no intersection - item = this.items[i]; - itemElement = item.item[0]; - intersection = this._intersectsWithPointer(item); - if (!intersection) { - continue; - } - - // Only put the placeholder inside the current Container, skip all - // items form other containers. This works because when moving - // an item from one container to another the - // currentContainer is switched before the placeholder is moved. - // - // Without this moving items in "sub-sortables" can cause the placeholder to jitter - // beetween the outer and inner container. - if (item.instance !== this.currentContainer) { - continue; - } - - // cannot intersect with itself - // no useless actions that have been done before - // no action if the item moved is the parent of the item checked - if (itemElement !== this.currentItem[0] && - this.placeholder[intersection === 1 ? "next" : "prev"]()[0] !== itemElement && - !$.contains(this.placeholder[0], itemElement) && - (this.options.type === "semi-dynamic" ? !$.contains(this.element[0], itemElement) : true) - ) { - - this.direction = intersection === 1 ? "down" : "up"; - - if (this.options.tolerance === "pointer" || this._intersectsWithSides(item)) { - this._rearrange(event, item); - } else { - break; - } - - this._trigger("change", event, this._uiHash()); - break; - } - } - - //Post events to containers - this._contactContainers(event); - - //Interconnect with droppables - if($.ui.ddmanager) { - $.ui.ddmanager.drag(this, event); - } - - //Call callbacks - this._trigger("sort", event, this._uiHash()); - - this.lastPositionAbs = this.positionAbs; - return false; - - }, - - _mouseStop: function(event, noPropagation) { - - if(!event) { - return; - } - - //If we are using droppables, inform the manager about the drop - if ($.ui.ddmanager && !this.options.dropBehaviour) { - $.ui.ddmanager.drop(this, event); - } - - if(this.options.revert) { - var that = this, - cur = this.placeholder.offset(), - axis = this.options.axis, - animation = {}; - - if ( !axis || axis === "x" ) { - animation.left = cur.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] === document.body ? 0 : this.offsetParent[0].scrollLeft); - } - if ( !axis || axis === "y" ) { - animation.top = cur.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] === document.body ? 0 : this.offsetParent[0].scrollTop); - } - this.reverting = true; - $(this.helper).animate( animation, parseInt(this.options.revert, 10) || 500, function() { - that._clear(event); - }); - } else { - this._clear(event, noPropagation); - } - - return false; - - }, - - cancel: function() { - - if(this.dragging) { - - this._mouseUp({ target: null }); - - if(this.options.helper === "original") { - this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"); - } else { - this.currentItem.show(); - } - - //Post deactivating events to containers - for (var i = this.containers.length - 1; i >= 0; i--){ - this.containers[i]._trigger("deactivate", null, this._uiHash(this)); - if(this.containers[i].containerCache.over) { - this.containers[i]._trigger("out", null, this._uiHash(this)); - this.containers[i].containerCache.over = 0; - } - } - - } - - if (this.placeholder) { - //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node! - if(this.placeholder[0].parentNode) { - this.placeholder[0].parentNode.removeChild(this.placeholder[0]); - } - if(this.options.helper !== "original" && this.helper && this.helper[0].parentNode) { - this.helper.remove(); - } - - $.extend(this, { - helper: null, - dragging: false, - reverting: false, - _noFinalSort: null - }); - - if(this.domPosition.prev) { - $(this.domPosition.prev).after(this.currentItem); - } else { - $(this.domPosition.parent).prepend(this.currentItem); - } - } - - return this; - - }, - - serialize: function(o) { - - var items = this._getItemsAsjQuery(o && o.connected), - str = []; - o = o || {}; - - $(items).each(function() { - var res = ($(o.item || this).attr(o.attribute || "id") || "").match(o.expression || (/(.+)[\-=_](.+)/)); - if (res) { - str.push((o.key || res[1]+"[]")+"="+(o.key && o.expression ? res[1] : res[2])); - } - }); - - if(!str.length && o.key) { - str.push(o.key + "="); - } - - return str.join("&"); - - }, - - toArray: function(o) { - - var items = this._getItemsAsjQuery(o && o.connected), - ret = []; - - o = o || {}; - - items.each(function() { ret.push($(o.item || this).attr(o.attribute || "id") || ""); }); - return ret; - - }, - - /* Be careful with the following core functions */ - _intersectsWith: function(item) { - - var x1 = this.positionAbs.left, - x2 = x1 + this.helperProportions.width, - y1 = this.positionAbs.top, - y2 = y1 + this.helperProportions.height, - l = item.left, - r = l + item.width, - t = item.top, - b = t + item.height, - dyClick = this.offset.click.top, - dxClick = this.offset.click.left, - isOverElementHeight = ( this.options.axis === "x" ) || ( ( y1 + dyClick ) > t && ( y1 + dyClick ) < b ), - isOverElementWidth = ( this.options.axis === "y" ) || ( ( x1 + dxClick ) > l && ( x1 + dxClick ) < r ), - isOverElement = isOverElementHeight && isOverElementWidth; - - if ( this.options.tolerance === "pointer" || - this.options.forcePointerForContainers || - (this.options.tolerance !== "pointer" && this.helperProportions[this.floating ? "width" : "height"] > item[this.floating ? "width" : "height"]) - ) { - return isOverElement; - } else { - - return (l < x1 + (this.helperProportions.width / 2) && // Right Half - x2 - (this.helperProportions.width / 2) < r && // Left Half - t < y1 + (this.helperProportions.height / 2) && // Bottom Half - y2 - (this.helperProportions.height / 2) < b ); // Top Half - - } - }, - - _intersectsWithPointer: function(item) { - - var isOverElementHeight = (this.options.axis === "x") || isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height), - isOverElementWidth = (this.options.axis === "y") || isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width), - isOverElement = isOverElementHeight && isOverElementWidth, - verticalDirection = this._getDragVerticalDirection(), - horizontalDirection = this._getDragHorizontalDirection(); - - if (!isOverElement) { - return false; - } - - return this.floating ? - ( ((horizontalDirection && horizontalDirection === "right") || verticalDirection === "down") ? 2 : 1 ) - : ( verticalDirection && (verticalDirection === "down" ? 2 : 1) ); - - }, - - _intersectsWithSides: function(item) { - - var isOverBottomHalf = isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + (item.height/2), item.height), - isOverRightHalf = isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + (item.width/2), item.width), - verticalDirection = this._getDragVerticalDirection(), - horizontalDirection = this._getDragHorizontalDirection(); - - if (this.floating && horizontalDirection) { - return ((horizontalDirection === "right" && isOverRightHalf) || (horizontalDirection === "left" && !isOverRightHalf)); - } else { - return verticalDirection && ((verticalDirection === "down" && isOverBottomHalf) || (verticalDirection === "up" && !isOverBottomHalf)); - } - - }, - - _getDragVerticalDirection: function() { - var delta = this.positionAbs.top - this.lastPositionAbs.top; - return delta !== 0 && (delta > 0 ? "down" : "up"); - }, - - _getDragHorizontalDirection: function() { - var delta = this.positionAbs.left - this.lastPositionAbs.left; - return delta !== 0 && (delta > 0 ? "right" : "left"); - }, - - refresh: function(event) { - this._refreshItems(event); - this.refreshPositions(); - return this; - }, - - _connectWith: function() { - var options = this.options; - return options.connectWith.constructor === String ? [options.connectWith] : options.connectWith; - }, - - _getItemsAsjQuery: function(connected) { - - var i, j, cur, inst, - items = [], - queries = [], - connectWith = this._connectWith(); - - if(connectWith && connected) { - for (i = connectWith.length - 1; i >= 0; i--){ - cur = $(connectWith[i]); - for ( j = cur.length - 1; j >= 0; j--){ - inst = $.data(cur[j], this.widgetFullName); - if(inst && inst !== this && !inst.options.disabled) { - queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), inst]); - } - } - } - } - - queries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { options: this.options, item: this.currentItem }) : $(this.options.items, this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), this]); - - for (i = queries.length - 1; i >= 0; i--){ - queries[i][0].each(function() { - items.push(this); - }); - } - - return $(items); - - }, - - _removeCurrentsFromItems: function() { - - var list = this.currentItem.find(":data(" + this.widgetName + "-item)"); - - this.items = $.grep(this.items, function (item) { - for (var j=0; j < list.length; j++) { - if(list[j] === item.item[0]) { - return false; - } - } - return true; - }); - - }, - - _refreshItems: function(event) { - - this.items = []; - this.containers = [this]; - - var i, j, cur, inst, targetData, _queries, item, queriesLength, - items = this.items, - queries = [[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { item: this.currentItem }) : $(this.options.items, this.element), this]], - connectWith = this._connectWith(); - - if(connectWith && this.ready) { //Shouldn't be run the first time through due to massive slow-down - for (i = connectWith.length - 1; i >= 0; i--){ - cur = $(connectWith[i]); - for (j = cur.length - 1; j >= 0; j--){ - inst = $.data(cur[j], this.widgetFullName); - if(inst && inst !== this && !inst.options.disabled) { - queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, { item: this.currentItem }) : $(inst.options.items, inst.element), inst]); - this.containers.push(inst); - } - } - } - } - - for (i = queries.length - 1; i >= 0; i--) { - targetData = queries[i][1]; - _queries = queries[i][0]; - - for (j=0, queriesLength = _queries.length; j < queriesLength; j++) { - item = $(_queries[j]); - - item.data(this.widgetName + "-item", targetData); // Data for target checking (mouse manager) - - items.push({ - item: item, - instance: targetData, - width: 0, height: 0, - left: 0, top: 0 - }); - } - } - - }, - - refreshPositions: function(fast) { - - //This has to be redone because due to the item being moved out/into the offsetParent, the offsetParent's position will change - if(this.offsetParent && this.helper) { - this.offset.parent = this._getParentOffset(); - } - - var i, item, t, p; - - for (i = this.items.length - 1; i >= 0; i--){ - item = this.items[i]; - - //We ignore calculating positions of all connected containers when we're not over them - if(item.instance !== this.currentContainer && this.currentContainer && item.item[0] !== this.currentItem[0]) { - continue; - } - - t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item; - - if (!fast) { - item.width = t.outerWidth(); - item.height = t.outerHeight(); - } - - p = t.offset(); - item.left = p.left; - item.top = p.top; - } - - if(this.options.custom && this.options.custom.refreshContainers) { - this.options.custom.refreshContainers.call(this); - } else { - for (i = this.containers.length - 1; i >= 0; i--){ - p = this.containers[i].element.offset(); - this.containers[i].containerCache.left = p.left; - this.containers[i].containerCache.top = p.top; - this.containers[i].containerCache.width = this.containers[i].element.outerWidth(); - this.containers[i].containerCache.height = this.containers[i].element.outerHeight(); - } - } - - return this; - }, - - _createPlaceholder: function(that) { - that = that || this; - var className, - o = that.options; - - if(!o.placeholder || o.placeholder.constructor === String) { - className = o.placeholder; - o.placeholder = { - element: function() { - - var nodeName = that.currentItem[0].nodeName.toLowerCase(), - element = $( "<" + nodeName + ">", that.document[0] ) - .addClass(className || that.currentItem[0].className+" ui-sortable-placeholder") - .removeClass("ui-sortable-helper"); - - if ( nodeName === "tr" ) { - that.currentItem.children().each(function() { - $( "<td>&#160;</td>", that.document[0] ) - .attr( "colspan", $( this ).attr( "colspan" ) || 1 ) - .appendTo( element ); - }); - } else if ( nodeName === "img" ) { - element.attr( "src", that.currentItem.attr( "src" ) ); - } - - if ( !className ) { - element.css( "visibility", "hidden" ); - } - - return element; - }, - update: function(container, p) { - - // 1. If a className is set as 'placeholder option, we don't force sizes - the class is responsible for that - // 2. The option 'forcePlaceholderSize can be enabled to force it even if a class name is specified - if(className && !o.forcePlaceholderSize) { - return; - } - - //If the element doesn't have a actual height by itself (without styles coming from a stylesheet), it receives the inline height from the dragged item - if(!p.height()) { p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css("paddingTop")||0, 10) - parseInt(that.currentItem.css("paddingBottom")||0, 10)); } - if(!p.width()) { p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css("paddingLeft")||0, 10) - parseInt(that.currentItem.css("paddingRight")||0, 10)); } - } - }; - } - - //Create the placeholder - that.placeholder = $(o.placeholder.element.call(that.element, that.currentItem)); - - //Append it after the actual current item - that.currentItem.after(that.placeholder); - - //Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317) - o.placeholder.update(that, that.placeholder); - - }, - - _contactContainers: function(event) { - var i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, base, cur, nearBottom, floating, - innermostContainer = null, - innermostIndex = null; - - // get innermost container that intersects with item - for (i = this.containers.length - 1; i >= 0; i--) { - - // never consider a container that's located within the item itself - if($.contains(this.currentItem[0], this.containers[i].element[0])) { - continue; - } - - if(this._intersectsWith(this.containers[i].containerCache)) { - - // if we've already found a container and it's more "inner" than this, then continue - if(innermostContainer && $.contains(this.containers[i].element[0], innermostContainer.element[0])) { - continue; - } - - innermostContainer = this.containers[i]; - innermostIndex = i; - - } else { - // container doesn't intersect. trigger "out" event if necessary - if(this.containers[i].containerCache.over) { - this.containers[i]._trigger("out", event, this._uiHash(this)); - this.containers[i].containerCache.over = 0; - } - } - - } - - // if no intersecting containers found, return - if(!innermostContainer) { - return; - } - - // move the item into the container if it's not there already - if(this.containers.length === 1) { - if (!this.containers[innermostIndex].containerCache.over) { - this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)); - this.containers[innermostIndex].containerCache.over = 1; - } - } else { - - //When entering a new container, we will find the item with the least distance and append our item near it - dist = 10000; - itemWithLeastDistance = null; - floating = innermostContainer.floating || isFloating(this.currentItem); - posProperty = floating ? "left" : "top"; - sizeProperty = floating ? "width" : "height"; - base = this.positionAbs[posProperty] + this.offset.click[posProperty]; - for (j = this.items.length - 1; j >= 0; j--) { - if(!$.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) { - continue; - } - if(this.items[j].item[0] === this.currentItem[0]) { - continue; - } - if (floating && !isOverAxis(this.positionAbs.top + this.offset.click.top, this.items[j].top, this.items[j].height)) { - continue; - } - cur = this.items[j].item.offset()[posProperty]; - nearBottom = false; - if(Math.abs(cur - base) > Math.abs(cur + this.items[j][sizeProperty] - base)){ - nearBottom = true; - cur += this.items[j][sizeProperty]; - } - - if(Math.abs(cur - base) < dist) { - dist = Math.abs(cur - base); itemWithLeastDistance = this.items[j]; - this.direction = nearBottom ? "up": "down"; - } - } - - //Check if dropOnEmpty is enabled - if(!itemWithLeastDistance && !this.options.dropOnEmpty) { - return; - } - - if(this.currentContainer === this.containers[innermostIndex]) { - return; - } - - itemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true); - this._trigger("change", event, this._uiHash()); - this.containers[innermostIndex]._trigger("change", event, this._uiHash(this)); - this.currentContainer = this.containers[innermostIndex]; - - //Update the placeholder - this.options.placeholder.update(this.currentContainer, this.placeholder); - - this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)); - this.containers[innermostIndex].containerCache.over = 1; - } - - - }, - - _createHelper: function(event) { - - var o = this.options, - helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : (o.helper === "clone" ? this.currentItem.clone() : this.currentItem); - - //Add the helper to the DOM if that didn't happen already - if(!helper.parents("body").length) { - $(o.appendTo !== "parent" ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]); - } - - if(helper[0] === this.currentItem[0]) { - this._storedCSS = { width: this.currentItem[0].style.width, height: this.currentItem[0].style.height, position: this.currentItem.css("position"), top: this.currentItem.css("top"), left: this.currentItem.css("left") }; - } - - if(!helper[0].style.width || o.forceHelperSize) { - helper.width(this.currentItem.width()); - } - if(!helper[0].style.height || o.forceHelperSize) { - helper.height(this.currentItem.height()); - } - - 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 - this.offsetParent = this.helper.offsetParent(); - 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 - // with an 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.currentItem.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.currentItem.css("marginLeft"),10) || 0), - top: (parseInt(this.currentItem.css("marginTop"),10) || 0) - }; - }, - - _cacheHelperProportions: function() { - this.helperProportions = { - width: this.helper.outerWidth(), - height: this.helper.outerHeight() - }; - }, - - _setContainment: function() { - - var ce, co, over, - o = this.options; - if(o.containment === "parent") { - o.containment = this.helper[0].parentNode; - } - if(o.containment === "document" || o.containment === "window") { - this.containment = [ - 0 - this.offset.relative.left - this.offset.parent.left, - 0 - this.offset.relative.top - this.offset.parent.top, - $(o.containment === "document" ? document : window).width() - this.helperProportions.width - this.margins.left, - ($(o.containment === "document" ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top - ]; - } - - if(!(/^(document|window|parent)$/).test(o.containment)) { - ce = $(o.containment)[0]; - co = $(o.containment).offset(); - over = ($(ce).css("overflow") !== "hidden"); - - this.containment = [ - co.left + (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0) - this.margins.left, - co.top + (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0) - this.margins.top, - co.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left, - co.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top - ]; - } - - }, - - _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, - scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); - - 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() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * 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() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod) - ) - }; - - }, - - _generatePosition: function(event) { - - var top, left, - o = this.options, - pageX = event.pageX, - pageY = event.pageY, - scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); - - // This is another very weird special case that only happens for relative elements: - // 1. If the css position is relative - // 2. and the scroll parent is the document or similar to the offset parent - // we have to refresh the relative offset during the scroll so there are no jumps - if(this.cssPosition === "relative" && !(this.scrollParent[0] !== document && this.scrollParent[0] !== this.offsetParent[0])) { - this.offset.relative = this._getRelativeOffset(); - } - - /* - * - Position constraining - - * Constrain the position to a mix of grid, containment. - */ - - if(this.originalPosition) { //If we are not dragging yet, we won't check for options - - if(this.containment) { - if(event.pageX - this.offset.click.left < this.containment[0]) { - pageX = this.containment[0] + this.offset.click.left; - } - if(event.pageY - this.offset.click.top < this.containment[1]) { - pageY = this.containment[1] + this.offset.click.top; - } - if(event.pageX - this.offset.click.left > this.containment[2]) { - pageX = this.containment[2] + this.offset.click.left; - } - if(event.pageY - this.offset.click.top > this.containment[3]) { - pageY = this.containment[3] + this.offset.click.top; - } - } - - if(o.grid) { - top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1]; - pageY = this.containment ? ( (top - this.offset.click.top >= this.containment[1] && top - this.offset.click.top <= this.containment[3]) ? top : ((top - this.offset.click.top >= this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top; - - left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0]; - pageX = this.containment ? ( (left - this.offset.click.left >= this.containment[0] && left - this.offset.click.left <= this.containment[2]) ? left : ((left - this.offset.click.left >= this.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() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) )) - ), - 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() : scrollIsRootNode ? 0 : scroll.scrollLeft() )) - ) - }; - - }, - - _rearrange: function(event, i, a, hardRefresh) { - - a ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(this.placeholder[0], (this.direction === "down" ? i.item[0] : i.item[0].nextSibling)); - - //Various things done here to improve the performance: - // 1. we create a setTimeout, that calls refreshPositions - // 2. on the instance, we have a counter variable, that get's higher after every append - // 3. on the local scope, we copy the counter variable, and check in the timeout, if it's still the same - // 4. this lets only the last addition to the timeout stack through - this.counter = this.counter ? ++this.counter : 1; - var counter = this.counter; - - this._delay(function() { - if(counter === this.counter) { - this.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove - } - }); - - }, - - _clear: function(event, noPropagation) { - - this.reverting = false; - // We delay all events that have to be triggered to after the point where the placeholder has been removed and - // everything else normalized again - var i, - delayedTriggers = []; - - // We first have to update the dom position of the actual currentItem - // Note: don't do it if the current item is already removed (by a user), or it gets reappended (see #4088) - if(!this._noFinalSort && this.currentItem.parent().length) { - this.placeholder.before(this.currentItem); - } - this._noFinalSort = null; - - if(this.helper[0] === this.currentItem[0]) { - for(i in this._storedCSS) { - if(this._storedCSS[i] === "auto" || this._storedCSS[i] === "static") { - this._storedCSS[i] = ""; - } - } - this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"); - } else { - this.currentItem.show(); - } - - if(this.fromOutside && !noPropagation) { - delayedTriggers.push(function(event) { this._trigger("receive", event, this._uiHash(this.fromOutside)); }); - } - if((this.fromOutside || this.domPosition.prev !== this.currentItem.prev().not(".ui-sortable-helper")[0] || this.domPosition.parent !== this.currentItem.parent()[0]) && !noPropagation) { - delayedTriggers.push(function(event) { this._trigger("update", event, this._uiHash()); }); //Trigger update callback if the DOM position has changed - } - - // Check if the items Container has Changed and trigger appropriate - // events. - if (this !== this.currentContainer) { - if(!noPropagation) { - delayedTriggers.push(function(event) { this._trigger("remove", event, this._uiHash()); }); - delayedTriggers.push((function(c) { return function(event) { c._trigger("receive", event, this._uiHash(this)); }; }).call(this, this.currentContainer)); - delayedTriggers.push((function(c) { return function(event) { c._trigger("update", event, this._uiHash(this)); }; }).call(this, this.currentContainer)); - } - } - - - //Post events to containers - for (i = this.containers.length - 1; i >= 0; i--){ - if(!noPropagation) { - delayedTriggers.push((function(c) { return function(event) { c._trigger("deactivate", event, this._uiHash(this)); }; }).call(this, this.containers[i])); - } - if(this.containers[i].containerCache.over) { - delayedTriggers.push((function(c) { return function(event) { c._trigger("out", event, this._uiHash(this)); }; }).call(this, this.containers[i])); - this.containers[i].containerCache.over = 0; - } - } - - //Do what was originally in plugins - if ( this.storedCursor ) { - this.document.find( "body" ).css( "cursor", this.storedCursor ); - this.storedStylesheet.remove(); - } - if(this._storedOpacity) { - this.helper.css("opacity", this._storedOpacity); - } - if(this._storedZIndex) { - this.helper.css("zIndex", this._storedZIndex === "auto" ? "" : this._storedZIndex); - } - - this.dragging = false; - if(this.cancelHelperRemoval) { - if(!noPropagation) { - this._trigger("beforeStop", event, this._uiHash()); - for (i=0; i < delayedTriggers.length; i++) { - delayedTriggers[i].call(this, event); - } //Trigger all delayed events - this._trigger("stop", event, this._uiHash()); - } - - this.fromOutside = false; - return false; - } - - if(!noPropagation) { - this._trigger("beforeStop", event, this._uiHash()); - } - - //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node! - this.placeholder[0].parentNode.removeChild(this.placeholder[0]); - - if(this.helper[0] !== this.currentItem[0]) { - this.helper.remove(); - } - this.helper = null; - - if(!noPropagation) { - for (i=0; i < delayedTriggers.length; i++) { - delayedTriggers[i].call(this, event); - } //Trigger all delayed events - this._trigger("stop", event, this._uiHash()); - } - - this.fromOutside = false; - return true; - - }, - - _trigger: function() { - if ($.Widget.prototype._trigger.apply(this, arguments) === false) { - this.cancel(); - } - }, - - _uiHash: function(_inst) { - var inst = _inst || this; - return { - helper: inst.helper, - placeholder: inst.placeholder || $([]), - position: inst.position, - originalPosition: inst.originalPosition, - offset: inst.positionAbs, - item: inst.currentItem, - sender: _inst ? _inst.element : null - }; - } - -}); - -})(jQuery); -(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 )); -(function( $, undefined ) { - -$.widget( "ui.menu", { - version: "1.10.3", - defaultElement: "<ul>", - delay: 300, - options: { - icons: { - submenu: "ui-icon-carat-1-e" - }, - menus: "ul", - position: { - my: "left top", - at: "right top" - }, - role: "menu", - - // callbacks - blur: null, - focus: null, - select: null - }, - - _create: function() { - this.activeMenu = this.element; - // flag used to prevent firing of the click handler - // as the event bubbles up through nested menus - this.mouseHandled = false; - this.element - .uniqueId() - .addClass( "ui-menu ui-widget ui-widget-content ui-corner-all" ) - .toggleClass( "ui-menu-icons", !!this.element.find( ".ui-icon" ).length ) - .attr({ - role: this.options.role, - tabIndex: 0 - }) - // need to catch all clicks on disabled menu - // not possible through _on - .bind( "click" + this.eventNamespace, $.proxy(function( event ) { - if ( this.options.disabled ) { - event.preventDefault(); - } - }, this )); - - if ( this.options.disabled ) { - this.element - .addClass( "ui-state-disabled" ) - .attr( "aria-disabled", "true" ); - } - - this._on({ - // Prevent focus from sticking to links inside menu after clicking - // them (focus should always stay on UL during navigation). - "mousedown .ui-menu-item > a": function( event ) { - event.preventDefault(); - }, - "click .ui-state-disabled > a": function( event ) { - event.preventDefault(); - }, - "click .ui-menu-item:has(a)": function( event ) { - var target = $( event.target ).closest( ".ui-menu-item" ); - if ( !this.mouseHandled && target.not( ".ui-state-disabled" ).length ) { - this.mouseHandled = true; - - this.select( event ); - // Open submenu on click - if ( target.has( ".ui-menu" ).length ) { - this.expand( event ); - } else if ( !this.element.is( ":focus" ) ) { - // Redirect focus to the menu - this.element.trigger( "focus", [ true ] ); - - // If the active item is on the top level, let it stay active. - // Otherwise, blur the active item since it is no longer visible. - if ( this.active && this.active.parents( ".ui-menu" ).length === 1 ) { - clearTimeout( this.timer ); - } - } - } - }, - "mouseenter .ui-menu-item": function( event ) { - var target = $( event.currentTarget ); - // Remove ui-state-active class from siblings of the newly focused menu item - // to avoid a jump caused by adjacent elements both having a class with a border - target.siblings().children( ".ui-state-active" ).removeClass( "ui-state-active" ); - this.focus( event, target ); - }, - mouseleave: "collapseAll", - "mouseleave .ui-menu": "collapseAll", - focus: function( event, keepActiveItem ) { - // If there's already an active item, keep it active - // If not, activate the first item - var item = this.active || this.element.children( ".ui-menu-item" ).eq( 0 ); - - if ( !keepActiveItem ) { - this.focus( event, item ); - } - }, - blur: function( event ) { - this._delay(function() { - if ( !$.contains( this.element[0], this.document[0].activeElement ) ) { - this.collapseAll( event ); - } - }); - }, - keydown: "_keydown" - }); - - this.refresh(); - - // Clicks outside of a menu collapse any open menus - this._on( this.document, { - click: function( event ) { - if ( !$( event.target ).closest( ".ui-menu" ).length ) { - this.collapseAll( event ); - } - - // Reset the mouseHandled flag - this.mouseHandled = false; - } - }); - }, - - _destroy: function() { - // Destroy (sub)menus - this.element - .removeAttr( "aria-activedescendant" ) - .find( ".ui-menu" ).addBack() - .removeClass( "ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons" ) - .removeAttr( "role" ) - .removeAttr( "tabIndex" ) - .removeAttr( "aria-labelledby" ) - .removeAttr( "aria-expanded" ) - .removeAttr( "aria-hidden" ) - .removeAttr( "aria-disabled" ) - .removeUniqueId() - .show(); - - // Destroy menu items - this.element.find( ".ui-menu-item" ) - .removeClass( "ui-menu-item" ) - .removeAttr( "role" ) - .removeAttr( "aria-disabled" ) - .children( "a" ) - .removeUniqueId() - .removeClass( "ui-corner-all ui-state-hover" ) - .removeAttr( "tabIndex" ) - .removeAttr( "role" ) - .removeAttr( "aria-haspopup" ) - .children().each( function() { - var elem = $( this ); - if ( elem.data( "ui-menu-submenu-carat" ) ) { - elem.remove(); - } - }); - - // Destroy menu dividers - this.element.find( ".ui-menu-divider" ).removeClass( "ui-menu-divider ui-widget-content" ); - }, - - _keydown: function( event ) { - /*jshint maxcomplexity:20*/ - var match, prev, character, skip, regex, - preventDefault = true; - - function escape( value ) { - return value.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" ); - } - - switch ( event.keyCode ) { - case $.ui.keyCode.PAGE_UP: - this.previousPage( event ); - break; - case $.ui.keyCode.PAGE_DOWN: - this.nextPage( event ); - break; - case $.ui.keyCode.HOME: - this._move( "first", "first", event ); - break; - case $.ui.keyCode.END: - this._move( "last", "last", event ); - break; - case $.ui.keyCode.UP: - this.previous( event ); - break; - case $.ui.keyCode.DOWN: - this.next( event ); - break; - case $.ui.keyCode.LEFT: - this.collapse( event ); - break; - case $.ui.keyCode.RIGHT: - if ( this.active && !this.active.is( ".ui-state-disabled" ) ) { - this.expand( event ); - } - break; - case $.ui.keyCode.ENTER: - case $.ui.keyCode.SPACE: - this._activate( event ); - break; - case $.ui.keyCode.ESCAPE: - this.collapse( event ); - break; - default: - preventDefault = false; - prev = this.previousFilter || ""; - character = String.fromCharCode( event.keyCode ); - skip = false; - - clearTimeout( this.filterTimer ); - - if ( character === prev ) { - skip = true; - } else { - character = prev + character; - } - - regex = new RegExp( "^" + escape( character ), "i" ); - match = this.activeMenu.children( ".ui-menu-item" ).filter(function() { - return regex.test( $( this ).children( "a" ).text() ); - }); - match = skip && match.index( this.active.next() ) !== -1 ? - this.active.nextAll( ".ui-menu-item" ) : - match; - - // If no matches on the current filter, reset to the last character pressed - // to move down the menu to the first item that starts with that character - if ( !match.length ) { - character = String.fromCharCode( event.keyCode ); - regex = new RegExp( "^" + escape( character ), "i" ); - match = this.activeMenu.children( ".ui-menu-item" ).filter(function() { - return regex.test( $( this ).children( "a" ).text() ); - }); - } - - if ( match.length ) { - this.focus( event, match ); - if ( match.length > 1 ) { - this.previousFilter = character; - this.filterTimer = this._delay(function() { - delete this.previousFilter; - }, 1000 ); - } else { - delete this.previousFilter; - } - } else { - delete this.previousFilter; - } - } - - if ( preventDefault ) { - event.preventDefault(); - } - }, - - _activate: function( event ) { - if ( !this.active.is( ".ui-state-disabled" ) ) { - if ( this.active.children( "a[aria-haspopup='true']" ).length ) { - this.expand( event ); - } else { - this.select( event ); - } - } - }, - - refresh: function() { - var menus, - icon = this.options.icons.submenu, - submenus = this.element.find( this.options.menus ); - - // Initialize nested menus - submenus.filter( ":not(.ui-menu)" ) - .addClass( "ui-menu ui-widget ui-widget-content ui-corner-all" ) - .hide() - .attr({ - role: this.options.role, - "aria-hidden": "true", - "aria-expanded": "false" - }) - .each(function() { - var menu = $( this ), - item = menu.prev( "a" ), - submenuCarat = $( "<span>" ) - .addClass( "ui-menu-icon ui-icon " + icon ) - .data( "ui-menu-submenu-carat", true ); - - item - .attr( "aria-haspopup", "true" ) - .prepend( submenuCarat ); - menu.attr( "aria-labelledby", item.attr( "id" ) ); - }); - - menus = submenus.add( this.element ); - - // Don't refresh list items that are already adapted - menus.children( ":not(.ui-menu-item):has(a)" ) - .addClass( "ui-menu-item" ) - .attr( "role", "presentation" ) - .children( "a" ) - .uniqueId() - .addClass( "ui-corner-all" ) - .attr({ - tabIndex: -1, - role: this._itemRole() - }); - - // Initialize unlinked menu-items containing spaces and/or dashes only as dividers - menus.children( ":not(.ui-menu-item)" ).each(function() { - var item = $( this ); - // hyphen, em dash, en dash - if ( !/[^\-\u2014\u2013\s]/.test( item.text() ) ) { - item.addClass( "ui-widget-content ui-menu-divider" ); - } - }); - - // Add aria-disabled attribute to any disabled menu item - menus.children( ".ui-state-disabled" ).attr( "aria-disabled", "true" ); - - // If the active item has been removed, blur the menu - if ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) { - this.blur(); - } - }, - - _itemRole: function() { - return { - menu: "menuitem", - listbox: "option" - }[ this.options.role ]; - }, - - _setOption: function( key, value ) { - if ( key === "icons" ) { - this.element.find( ".ui-menu-icon" ) - .removeClass( this.options.icons.submenu ) - .addClass( value.submenu ); - } - this._super( key, value ); - }, - - focus: function( event, item ) { - var nested, focused; - this.blur( event, event && event.type === "focus" ); - - this._scrollIntoView( item ); - - this.active = item.first(); - focused = this.active.children( "a" ).addClass( "ui-state-focus" ); - // Only update aria-activedescendant if there's a role - // otherwise we assume focus is managed elsewhere - if ( this.options.role ) { - this.element.attr( "aria-activedescendant", focused.attr( "id" ) ); - } - - // Highlight active parent menu item, if any - this.active - .parent() - .closest( ".ui-menu-item" ) - .children( "a:first" ) - .addClass( "ui-state-active" ); - - if ( event && event.type === "keydown" ) { - this._close(); - } else { - this.timer = this._delay(function() { - this._close(); - }, this.delay ); - } - - nested = item.children( ".ui-menu" ); - if ( nested.length && ( /^mouse/.test( event.type ) ) ) { - this._startOpening(nested); - } - this.activeMenu = item.parent(); - - this._trigger( "focus", event, { item: item } ); - }, - - _scrollIntoView: function( item ) { - var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight; - if ( this._hasScroll() ) { - borderTop = parseFloat( $.css( this.activeMenu[0], "borderTopWidth" ) ) || 0; - paddingTop = parseFloat( $.css( this.activeMenu[0], "paddingTop" ) ) || 0; - offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop; - scroll = this.activeMenu.scrollTop(); - elementHeight = this.activeMenu.height(); - itemHeight = item.height(); - - if ( offset < 0 ) { - this.activeMenu.scrollTop( scroll + offset ); - } else if ( offset + itemHeight > elementHeight ) { - this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight ); - } - } - }, - - blur: function( event, fromFocus ) { - if ( !fromFocus ) { - clearTimeout( this.timer ); - } - - if ( !this.active ) { - return; - } - - this.active.children( "a" ).removeClass( "ui-state-focus" ); - this.active = null; - - this._trigger( "blur", event, { item: this.active } ); - }, - - _startOpening: function( submenu ) { - clearTimeout( this.timer ); - - // Don't open if already open fixes a Firefox bug that caused a .5 pixel - // shift in the submenu position when mousing over the carat icon - if ( submenu.attr( "aria-hidden" ) !== "true" ) { - return; - } - - this.timer = this._delay(function() { - this._close(); - this._open( submenu ); - }, this.delay ); - }, - - _open: function( submenu ) { - var position = $.extend({ - of: this.active - }, this.options.position ); - - clearTimeout( this.timer ); - this.element.find( ".ui-menu" ).not( submenu.parents( ".ui-menu" ) ) - .hide() - .attr( "aria-hidden", "true" ); - - submenu - .show() - .removeAttr( "aria-hidden" ) - .attr( "aria-expanded", "true" ) - .position( position ); - }, - - collapseAll: function( event, all ) { - clearTimeout( this.timer ); - this.timer = this._delay(function() { - // If we were passed an event, look for the submenu that contains the event - var currentMenu = all ? this.element : - $( event && event.target ).closest( this.element.find( ".ui-menu" ) ); - - // If we found no valid submenu ancestor, use the main menu to close all sub menus anyway - if ( !currentMenu.length ) { - currentMenu = this.element; - } - - this._close( currentMenu ); - - this.blur( event ); - this.activeMenu = currentMenu; - }, this.delay ); - }, - - // With no arguments, closes the currently active menu - if nothing is active - // it closes all menus. If passed an argument, it will search for menus BELOW - _close: function( startMenu ) { - if ( !startMenu ) { - startMenu = this.active ? this.active.parent() : this.element; - } - - startMenu - .find( ".ui-menu" ) - .hide() - .attr( "aria-hidden", "true" ) - .attr( "aria-expanded", "false" ) - .end() - .find( "a.ui-state-active" ) - .removeClass( "ui-state-active" ); - }, - - collapse: function( event ) { - var newItem = this.active && - this.active.parent().closest( ".ui-menu-item", this.element ); - if ( newItem && newItem.length ) { - this._close(); - this.focus( event, newItem ); - } - }, - - expand: function( event ) { - var newItem = this.active && - this.active - .children( ".ui-menu " ) - .children( ".ui-menu-item" ) - .first(); - - if ( newItem && newItem.length ) { - this._open( newItem.parent() ); - - // Delay so Firefox will not hide activedescendant change in expanding submenu from AT - this._delay(function() { - this.focus( event, newItem ); - }); - } - }, - - next: function( event ) { - this._move( "next", "first", event ); - }, - - previous: function( event ) { - this._move( "prev", "last", event ); - }, - - isFirstItem: function() { - return this.active && !this.active.prevAll( ".ui-menu-item" ).length; - }, - - isLastItem: function() { - return this.active && !this.active.nextAll( ".ui-menu-item" ).length; - }, - - _move: function( direction, filter, event ) { - var next; - if ( this.active ) { - if ( direction === "first" || direction === "last" ) { - next = this.active - [ direction === "first" ? "prevAll" : "nextAll" ]( ".ui-menu-item" ) - .eq( -1 ); - } else { - next = this.active - [ direction + "All" ]( ".ui-menu-item" ) - .eq( 0 ); - } - } - if ( !next || !next.length || !this.active ) { - next = this.activeMenu.children( ".ui-menu-item" )[ filter ](); - } - - this.focus( event, next ); - }, - - nextPage: function( event ) { - var item, base, height; - - if ( !this.active ) { - this.next( event ); - return; - } - if ( this.isLastItem() ) { - return; - } - if ( this._hasScroll() ) { - base = this.active.offset().top; - height = this.element.height(); - this.active.nextAll( ".ui-menu-item" ).each(function() { - item = $( this ); - return item.offset().top - base - height < 0; - }); - - this.focus( event, item ); - } else { - this.focus( event, this.activeMenu.children( ".ui-menu-item" ) - [ !this.active ? "first" : "last" ]() ); - } - }, - - previousPage: function( event ) { - var item, base, height; - if ( !this.active ) { - this.next( event ); - return; - } - if ( this.isFirstItem() ) { - return; - } - if ( this._hasScroll() ) { - base = this.active.offset().top; - height = this.element.height(); - this.active.prevAll( ".ui-menu-item" ).each(function() { - item = $( this ); - return item.offset().top - base + height > 0; - }); - - this.focus( event, item ); - } else { - this.focus( event, this.activeMenu.children( ".ui-menu-item" ).first() ); - } - }, - - _hasScroll: function() { - return this.element.outerHeight() < this.element.prop( "scrollHeight" ); - }, - - select: function( event ) { - // TODO: It should never be possible to not have an active item at this - // point, but the tests don't trigger mouseenter before click. - this.active = this.active || $( event.target ).closest( ".ui-menu-item" ); - var ui = { item: this.active }; - if ( !this.active.has( ".ui-menu" ).length ) { - this.collapseAll( event, true ); - } - this._trigger( "select", event, ui ); - } -}); - -}( jQuery )); -(function($, undefined) { - -var dataSpace = "ui-effects-"; - -$.effects = { - effect: {} -}; - -/*! - * jQuery Color Animations v2.1.2 - * https://github.com/jquery/jquery-color - * - * Copyright 2013 jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * Date: Wed Jan 16 08:47:09 2013 -0600 - */ -(function( jQuery, undefined ) { - - var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor", - - // plusequals test for += 100 -= 100 - rplusequals = /^([\-+])=\s*(\d+\.?\d*)/, - // a set of RE's that can match strings and generate color tuples. - stringParsers = [{ - re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, - parse: function( execResult ) { - return [ - execResult[ 1 ], - execResult[ 2 ], - execResult[ 3 ], - execResult[ 4 ] - ]; - } - }, { - re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, - parse: function( execResult ) { - return [ - execResult[ 1 ] * 2.55, - execResult[ 2 ] * 2.55, - execResult[ 3 ] * 2.55, - execResult[ 4 ] - ]; - } - }, { - // this regex ignores A-F because it's compared against an already lowercased string - re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/, - parse: function( execResult ) { - return [ - parseInt( execResult[ 1 ], 16 ), - parseInt( execResult[ 2 ], 16 ), - parseInt( execResult[ 3 ], 16 ) - ]; - } - }, { - // this regex ignores A-F because it's compared against an already lowercased string - re: /#([a-f0-9])([a-f0-9])([a-f0-9])/, - parse: function( execResult ) { - return [ - parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ), - parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ), - parseInt( execResult[ 3 ] + execResult[ 3 ], 16 ) - ]; - } - }, { - re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, - space: "hsla", - parse: function( execResult ) { - return [ - execResult[ 1 ], - execResult[ 2 ] / 100, - execResult[ 3 ] / 100, - execResult[ 4 ] - ]; - } - }], - - // jQuery.Color( ) - color = jQuery.Color = function( color, green, blue, alpha ) { - return new jQuery.Color.fn.parse( color, green, blue, alpha ); - }, - spaces = { - rgba: { - props: { - red: { - idx: 0, - type: "byte" - }, - green: { - idx: 1, - type: "byte" - }, - blue: { - idx: 2, - type: "byte" - } - } - }, - - hsla: { - props: { - hue: { - idx: 0, - type: "degrees" - }, - saturation: { - idx: 1, - type: "percent" - }, - lightness: { - idx: 2, - type: "percent" - } - } - } - }, - propTypes = { - "byte": { - floor: true, - max: 255 - }, - "percent": { - max: 1 - }, - "degrees": { - mod: 360, - floor: true - } - }, - support = color.support = {}, - - // element for support tests - supportElem = jQuery( "<p>" )[ 0 ], - - // colors = jQuery.Color.names - colors, - - // local aliases of functions called often - each = jQuery.each; - -// determine rgba support immediately -supportElem.style.cssText = "background-color:rgba(1,1,1,.5)"; -support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1; - -// define cache name and alpha properties -// for rgba and hsla spaces -each( spaces, function( spaceName, space ) { - space.cache = "_" + spaceName; - space.props.alpha = { - idx: 3, - type: "percent", - def: 1 - }; -}); - -function clamp( value, prop, allowEmpty ) { - var type = propTypes[ prop.type ] || {}; - - if ( value == null ) { - return (allowEmpty || !prop.def) ? null : prop.def; - } - - // ~~ is an short way of doing floor for positive numbers - value = type.floor ? ~~value : parseFloat( value ); - - // IE will pass in empty strings as value for alpha, - // which will hit this case - if ( isNaN( value ) ) { - return prop.def; - } - - if ( type.mod ) { - // we add mod before modding to make sure that negatives values - // get converted properly: -10 -> 350 - return (value + type.mod) % type.mod; - } - - // for now all property types without mod have min and max - return 0 > value ? 0 : type.max < value ? type.max : value; -} - -function stringParse( string ) { - var inst = color(), - rgba = inst._rgba = []; - - string = string.toLowerCase(); - - each( stringParsers, function( i, parser ) { - var parsed, - match = parser.re.exec( string ), - values = match && parser.parse( match ), - spaceName = parser.space || "rgba"; - - if ( values ) { - parsed = inst[ spaceName ]( values ); - - // if this was an rgba parse the assignment might happen twice - // oh well.... - inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ]; - rgba = inst._rgba = parsed._rgba; - - // exit each( stringParsers ) here because we matched - return false; - } - }); - - // Found a stringParser that handled it - if ( rgba.length ) { - - // if this came from a parsed string, force "transparent" when alpha is 0 - // chrome, (and maybe others) return "transparent" as rgba(0,0,0,0) - if ( rgba.join() === "0,0,0,0" ) { - jQuery.extend( rgba, colors.transparent ); - } - return inst; - } - - // named colors - return colors[ string ]; -} - -color.fn = jQuery.extend( color.prototype, { - parse: function( red, green, blue, alpha ) { - if ( red === undefined ) { - this._rgba = [ null, null, null, null ]; - return this; - } - if ( red.jquery || red.nodeType ) { - red = jQuery( red ).css( green ); - green = undefined; - } - - var inst = this, - type = jQuery.type( red ), - rgba = this._rgba = []; - - // more than 1 argument specified - assume ( red, green, blue, alpha ) - if ( green !== undefined ) { - red = [ red, green, blue, alpha ]; - type = "array"; - } - - if ( type === "string" ) { - return this.parse( stringParse( red ) || colors._default ); - } - - if ( type === "array" ) { - each( spaces.rgba.props, function( key, prop ) { - rgba[ prop.idx ] = clamp( red[ prop.idx ], prop ); - }); - return this; - } - - if ( type === "object" ) { - if ( red instanceof color ) { - each( spaces, function( spaceName, space ) { - if ( red[ space.cache ] ) { - inst[ space.cache ] = red[ space.cache ].slice(); - } - }); - } else { - each( spaces, function( spaceName, space ) { - var cache = space.cache; - each( space.props, function( key, prop ) { - - // if the cache doesn't exist, and we know how to convert - if ( !inst[ cache ] && space.to ) { - - // if the value was null, we don't need to copy it - // if the key was alpha, we don't need to copy it either - if ( key === "alpha" || red[ key ] == null ) { - return; - } - inst[ cache ] = space.to( inst._rgba ); - } - - // this is the only case where we allow nulls for ALL properties. - // call clamp with alwaysAllowEmpty - inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true ); - }); - - // everything defined but alpha? - if ( inst[ cache ] && jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) { - // use the default of 1 - inst[ cache ][ 3 ] = 1; - if ( space.from ) { - inst._rgba = space.from( inst[ cache ] ); - } - } - }); - } - return this; - } - }, - is: function( compare ) { - var is = color( compare ), - same = true, - inst = this; - - each( spaces, function( _, space ) { - var localCache, - isCache = is[ space.cache ]; - if (isCache) { - localCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || []; - each( space.props, function( _, prop ) { - if ( isCache[ prop.idx ] != null ) { - same = ( isCache[ prop.idx ] === localCache[ prop.idx ] ); - return same; - } - }); - } - return same; - }); - return same; - }, - _space: function() { - var used = [], - inst = this; - each( spaces, function( spaceName, space ) { - if ( inst[ space.cache ] ) { - used.push( spaceName ); - } - }); - return used.pop(); - }, - transition: function( other, distance ) { - var end = color( other ), - spaceName = end._space(), - space = spaces[ spaceName ], - startColor = this.alpha() === 0 ? color( "transparent" ) : this, - start = startColor[ space.cache ] || space.to( startColor._rgba ), - result = start.slice(); - - end = end[ space.cache ]; - each( space.props, function( key, prop ) { - var index = prop.idx, - startValue = start[ index ], - endValue = end[ index ], - type = propTypes[ prop.type ] || {}; - - // if null, don't override start value - if ( endValue === null ) { - return; - } - // if null - use end - if ( startValue === null ) { - result[ index ] = endValue; - } else { - if ( type.mod ) { - if ( endValue - startValue > type.mod / 2 ) { - startValue += type.mod; - } else if ( startValue - endValue > type.mod / 2 ) { - startValue -= type.mod; - } - } - result[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop ); - } - }); - return this[ spaceName ]( result ); - }, - blend: function( opaque ) { - // if we are already opaque - return ourself - if ( this._rgba[ 3 ] === 1 ) { - return this; - } - - var rgb = this._rgba.slice(), - a = rgb.pop(), - blend = color( opaque )._rgba; - - return color( jQuery.map( rgb, function( v, i ) { - return ( 1 - a ) * blend[ i ] + a * v; - })); - }, - toRgbaString: function() { - var prefix = "rgba(", - rgba = jQuery.map( this._rgba, function( v, i ) { - return v == null ? ( i > 2 ? 1 : 0 ) : v; - }); - - if ( rgba[ 3 ] === 1 ) { - rgba.pop(); - prefix = "rgb("; - } - - return prefix + rgba.join() + ")"; - }, - toHslaString: function() { - var prefix = "hsla(", - hsla = jQuery.map( this.hsla(), function( v, i ) { - if ( v == null ) { - v = i > 2 ? 1 : 0; - } - - // catch 1 and 2 - if ( i && i < 3 ) { - v = Math.round( v * 100 ) + "%"; - } - return v; - }); - - if ( hsla[ 3 ] === 1 ) { - hsla.pop(); - prefix = "hsl("; - } - return prefix + hsla.join() + ")"; - }, - toHexString: function( includeAlpha ) { - var rgba = this._rgba.slice(), - alpha = rgba.pop(); - - if ( includeAlpha ) { - rgba.push( ~~( alpha * 255 ) ); - } - - return "#" + jQuery.map( rgba, function( v ) { - - // default to 0 when nulls exist - v = ( v || 0 ).toString( 16 ); - return v.length === 1 ? "0" + v : v; - }).join(""); - }, - toString: function() { - return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString(); - } -}); -color.fn.parse.prototype = color.fn; - -// hsla conversions adapted from: -// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021 - -function hue2rgb( p, q, h ) { - h = ( h + 1 ) % 1; - if ( h * 6 < 1 ) { - return p + (q - p) * h * 6; - } - if ( h * 2 < 1) { - return q; - } - if ( h * 3 < 2 ) { - return p + (q - p) * ((2/3) - h) * 6; - } - return p; -} - -spaces.hsla.to = function ( rgba ) { - if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) { - return [ null, null, null, rgba[ 3 ] ]; - } - var r = rgba[ 0 ] / 255, - g = rgba[ 1 ] / 255, - b = rgba[ 2 ] / 255, - a = rgba[ 3 ], - max = Math.max( r, g, b ), - min = Math.min( r, g, b ), - diff = max - min, - add = max + min, - l = add * 0.5, - h, s; - - if ( min === max ) { - h = 0; - } else if ( r === max ) { - h = ( 60 * ( g - b ) / diff ) + 360; - } else if ( g === max ) { - h = ( 60 * ( b - r ) / diff ) + 120; - } else { - h = ( 60 * ( r - g ) / diff ) + 240; - } - - // chroma (diff) == 0 means greyscale which, by definition, saturation = 0% - // otherwise, saturation is based on the ratio of chroma (diff) to lightness (add) - if ( diff === 0 ) { - s = 0; - } else if ( l <= 0.5 ) { - s = diff / add; - } else { - s = diff / ( 2 - add ); - } - return [ Math.round(h) % 360, s, l, a == null ? 1 : a ]; -}; - -spaces.hsla.from = function ( hsla ) { - if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) { - return [ null, null, null, hsla[ 3 ] ]; - } - var h = hsla[ 0 ] / 360, - s = hsla[ 1 ], - l = hsla[ 2 ], - a = hsla[ 3 ], - q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s, - p = 2 * l - q; - - return [ - Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ), - Math.round( hue2rgb( p, q, h ) * 255 ), - Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ), - a - ]; -}; - - -each( spaces, function( spaceName, space ) { - var props = space.props, - cache = space.cache, - to = space.to, - from = space.from; - - // makes rgba() and hsla() - color.fn[ spaceName ] = function( value ) { - - // generate a cache for this space if it doesn't exist - if ( to && !this[ cache ] ) { - this[ cache ] = to( this._rgba ); - } - if ( value === undefined ) { - return this[ cache ].slice(); - } - - var ret, - type = jQuery.type( value ), - arr = ( type === "array" || type === "object" ) ? value : arguments, - local = this[ cache ].slice(); - - each( props, function( key, prop ) { - var val = arr[ type === "object" ? key : prop.idx ]; - if ( val == null ) { - val = local[ prop.idx ]; - } - local[ prop.idx ] = clamp( val, prop ); - }); - - if ( from ) { - ret = color( from( local ) ); - ret[ cache ] = local; - return ret; - } else { - return color( local ); - } - }; - - // makes red() green() blue() alpha() hue() saturation() lightness() - each( props, function( key, prop ) { - // alpha is included in more than one space - if ( color.fn[ key ] ) { - return; - } - color.fn[ key ] = function( value ) { - var vtype = jQuery.type( value ), - fn = ( key === "alpha" ? ( this._hsla ? "hsla" : "rgba" ) : spaceName ), - local = this[ fn ](), - cur = local[ prop.idx ], - match; - - if ( vtype === "undefined" ) { - return cur; - } - - if ( vtype === "function" ) { - value = value.call( this, cur ); - vtype = jQuery.type( value ); - } - if ( value == null && prop.empty ) { - return this; - } - if ( vtype === "string" ) { - match = rplusequals.exec( value ); - if ( match ) { - value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 ); - } - } - local[ prop.idx ] = value; - return this[ fn ]( local ); - }; - }); -}); - -// add cssHook and .fx.step function for each named hook. -// accept a space separated string of properties -color.hook = function( hook ) { - var hooks = hook.split( " " ); - each( hooks, function( i, hook ) { - jQuery.cssHooks[ hook ] = { - set: function( elem, value ) { - var parsed, curElem, - backgroundColor = ""; - - if ( value !== "transparent" && ( jQuery.type( value ) !== "string" || ( parsed = stringParse( value ) ) ) ) { - value = color( parsed || value ); - if ( !support.rgba && value._rgba[ 3 ] !== 1 ) { - curElem = hook === "backgroundColor" ? elem.parentNode : elem; - while ( - (backgroundColor === "" || backgroundColor === "transparent") && - curElem && curElem.style - ) { - try { - backgroundColor = jQuery.css( curElem, "backgroundColor" ); - curElem = curElem.parentNode; - } catch ( e ) { - } - } - - value = value.blend( backgroundColor && backgroundColor !== "transparent" ? - backgroundColor : - "_default" ); - } - - value = value.toRgbaString(); - } - try { - elem.style[ hook ] = value; - } catch( e ) { - // wrapped to prevent IE from throwing errors on "invalid" values like 'auto' or 'inherit' - } - } - }; - jQuery.fx.step[ hook ] = function( fx ) { - if ( !fx.colorInit ) { - fx.start = color( fx.elem, hook ); - fx.end = color( fx.end ); - fx.colorInit = true; - } - jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) ); - }; - }); - -}; - -color.hook( stepHooks ); - -jQuery.cssHooks.borderColor = { - expand: function( value ) { - var expanded = {}; - - each( [ "Top", "Right", "Bottom", "Left" ], function( i, part ) { - expanded[ "border" + part + "Color" ] = value; - }); - return expanded; - } -}; - -// Basic color names only. -// Usage of any of the other color names requires adding yourself or including -// jquery.color.svg-names.js. -colors = jQuery.Color.names = { - // 4.1. Basic color keywords - aqua: "#00ffff", - black: "#000000", - blue: "#0000ff", - fuchsia: "#ff00ff", - gray: "#808080", - green: "#008000", - lime: "#00ff00", - maroon: "#800000", - navy: "#000080", - olive: "#808000", - purple: "#800080", - red: "#ff0000", - silver: "#c0c0c0", - teal: "#008080", - white: "#ffffff", - yellow: "#ffff00", - - // 4.2.3. "transparent" color keyword - transparent: [ null, null, null, 0 ], - - _default: "#ffffff" -}; - -})( jQuery ); - - -/******************************************************************************/ -/****************************** CLASS ANIMATIONS ******************************/ -/******************************************************************************/ -(function() { - -var classAnimationActions = [ "add", "remove", "toggle" ], - shorthandStyles = { - border: 1, - borderBottom: 1, - borderColor: 1, - borderLeft: 1, - borderRight: 1, - borderTop: 1, - borderWidth: 1, - margin: 1, - padding: 1 - }; - -$.each([ "borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle" ], function( _, prop ) { - $.fx.step[ prop ] = function( fx ) { - if ( fx.end !== "none" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) { - jQuery.style( fx.elem, prop, fx.end ); - fx.setAttr = true; - } - }; -}); - -function getElementStyles( elem ) { - var key, len, - style = elem.ownerDocument.defaultView ? - elem.ownerDocument.defaultView.getComputedStyle( elem, null ) : - elem.currentStyle, - styles = {}; - - if ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) { - len = style.length; - while ( len-- ) { - key = style[ len ]; - if ( typeof style[ key ] === "string" ) { - styles[ $.camelCase( key ) ] = style[ key ]; - } - } - // support: Opera, IE <9 - } else { - for ( key in style ) { - if ( typeof style[ key ] === "string" ) { - styles[ key ] = style[ key ]; - } - } - } - - return styles; -} - - -function styleDifference( oldStyle, newStyle ) { - var diff = {}, - name, value; - - for ( name in newStyle ) { - value = newStyle[ name ]; - if ( oldStyle[ name ] !== value ) { - if ( !shorthandStyles[ name ] ) { - if ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) { - diff[ name ] = value; - } - } - } - } - - return diff; -} - -// support: jQuery <1.8 -if ( !$.fn.addBack ) { - $.fn.addBack = function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter( selector ) - ); - }; -} - -$.effects.animateClass = function( value, duration, easing, callback ) { - var o = $.speed( duration, easing, callback ); - - return this.queue( function() { - var animated = $( this ), - baseClass = animated.attr( "class" ) || "", - applyClassChange, - allAnimations = o.children ? animated.find( "*" ).addBack() : animated; - - // map the animated objects to store the original styles. - allAnimations = allAnimations.map(function() { - var el = $( this ); - return { - el: el, - start: getElementStyles( this ) - }; - }); - - // apply class change - applyClassChange = function() { - $.each( classAnimationActions, function(i, action) { - if ( value[ action ] ) { - animated[ action + "Class" ]( value[ action ] ); - } - }); - }; - applyClassChange(); - - // map all animated objects again - calculate new styles and diff - allAnimations = allAnimations.map(function() { - this.end = getElementStyles( this.el[ 0 ] ); - this.diff = styleDifference( this.start, this.end ); - return this; - }); - - // apply original class - animated.attr( "class", baseClass ); - - // map all animated objects again - this time collecting a promise - allAnimations = allAnimations.map(function() { - var styleInfo = this, - dfd = $.Deferred(), - opts = $.extend({}, o, { - queue: false, - complete: function() { - dfd.resolve( styleInfo ); - } - }); - - this.el.animate( this.diff, opts ); - return dfd.promise(); - }); - - // once all animations have completed: - $.when.apply( $, allAnimations.get() ).done(function() { - - // set the final class - applyClassChange(); - - // for each animated element, - // clear all css properties that were animated - $.each( arguments, function() { - var el = this.el; - $.each( this.diff, function(key) { - el.css( key, "" ); - }); - }); - - // this is guarnteed to be there if you use jQuery.speed() - // it also handles dequeuing the next anim... - o.complete.call( animated[ 0 ] ); - }); - }); -}; - -$.fn.extend({ - addClass: (function( orig ) { - return function( classNames, speed, easing, callback ) { - return speed ? - $.effects.animateClass.call( this, - { add: classNames }, speed, easing, callback ) : - orig.apply( this, arguments ); - }; - })( $.fn.addClass ), - - removeClass: (function( orig ) { - return function( classNames, speed, easing, callback ) { - return arguments.length > 1 ? - $.effects.animateClass.call( this, - { remove: classNames }, speed, easing, callback ) : - orig.apply( this, arguments ); - }; - })( $.fn.removeClass ), - - toggleClass: (function( orig ) { - return function( classNames, force, speed, easing, callback ) { - if ( typeof force === "boolean" || force === undefined ) { - if ( !speed ) { - // without speed parameter - return orig.apply( this, arguments ); - } else { - return $.effects.animateClass.call( this, - (force ? { add: classNames } : { remove: classNames }), - speed, easing, callback ); - } - } else { - // without force parameter - return $.effects.animateClass.call( this, - { toggle: classNames }, force, speed, easing ); - } - }; - })( $.fn.toggleClass ), - - switchClass: function( remove, add, speed, easing, callback) { - return $.effects.animateClass.call( this, { - add: add, - remove: remove - }, speed, easing, callback ); - } -}); - -})(); - -/******************************************************************************/ -/*********************************** EFFECTS **********************************/ -/******************************************************************************/ - -(function() { - -$.extend( $.effects, { - version: "1.10.3", - - // Saves a set of properties in a data storage - save: function( element, set ) { - for( var i=0; i < set.length; i++ ) { - if ( set[ i ] !== null ) { - element.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] ); - } - } - }, - - // Restores a set of previously saved properties from a data storage - restore: function( element, set ) { - var val, i; - for( i=0; i < set.length; i++ ) { - if ( set[ i ] !== null ) { - val = element.data( dataSpace + set[ i ] ); - // support: jQuery 1.6.2 - // http://bugs.jquery.com/ticket/9917 - // jQuery 1.6.2 incorrectly returns undefined for any falsy value. - // We can't differentiate between "" and 0 here, so we just assume - // empty string since it's likely to be a more common value... - if ( val === undefined ) { - val = ""; - } - element.css( set[ i ], val ); - } - } - }, - - setMode: function( el, mode ) { - if (mode === "toggle") { - mode = el.is( ":hidden" ) ? "show" : "hide"; - } - return mode; - }, - - // Translates a [top,left] array into a baseline value - // this should be a little more flexible in the future to handle a string & hash - getBaseline: function( origin, original ) { - var y, x; - switch ( origin[ 0 ] ) { - case "top": y = 0; break; - case "middle": y = 0.5; break; - case "bottom": y = 1; break; - default: y = origin[ 0 ] / original.height; - } - switch ( origin[ 1 ] ) { - case "left": x = 0; break; - case "center": x = 0.5; break; - case "right": x = 1; break; - default: x = origin[ 1 ] / original.width; - } - return { - x: x, - y: y - }; - }, - - // Wraps the element around a wrapper that copies position properties - createWrapper: function( element ) { - - // if the element is already wrapped, return it - if ( element.parent().is( ".ui-effects-wrapper" )) { - return element.parent(); - } - - // wrap the element - var props = { - width: element.outerWidth(true), - height: element.outerHeight(true), - "float": element.css( "float" ) - }, - wrapper = $( "<div></div>" ) - .addClass( "ui-effects-wrapper" ) - .css({ - fontSize: "100%", - background: "transparent", - border: "none", - margin: 0, - padding: 0 - }), - // Store the size in case width/height are defined in % - Fixes #5245 - size = { - width: element.width(), - height: element.height() - }, - active = document.activeElement; - - // support: Firefox - // Firefox incorrectly exposes anonymous content - // https://bugzilla.mozilla.org/show_bug.cgi?id=561664 - try { - active.id; - } catch( e ) { - active = document.body; - } - - element.wrap( wrapper ); - - // Fixes #7595 - Elements lose focus when wrapped. - if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { - $( active ).focus(); - } - - wrapper = element.parent(); //Hotfix for jQuery 1.4 since some change in wrap() seems to actually lose the reference to the wrapped element - - // transfer positioning properties to the wrapper - if ( element.css( "position" ) === "static" ) { - wrapper.css({ position: "relative" }); - element.css({ position: "relative" }); - } else { - $.extend( props, { - position: element.css( "position" ), - zIndex: element.css( "z-index" ) - }); - $.each([ "top", "left", "bottom", "right" ], function(i, pos) { - props[ pos ] = element.css( pos ); - if ( isNaN( parseInt( props[ pos ], 10 ) ) ) { - props[ pos ] = "auto"; - } - }); - element.css({ - position: "relative", - top: 0, - left: 0, - right: "auto", - bottom: "auto" - }); - } - element.css(size); - - return wrapper.css( props ).show(); - }, - - removeWrapper: function( element ) { - var active = document.activeElement; - - if ( element.parent().is( ".ui-effects-wrapper" ) ) { - element.parent().replaceWith( element ); - - // Fixes #7595 - Elements lose focus when wrapped. - if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { - $( active ).focus(); - } - } - - - return element; - }, - - setTransition: function( element, list, factor, value ) { - value = value || {}; - $.each( list, function( i, x ) { - var unit = element.cssUnit( x ); - if ( unit[ 0 ] > 0 ) { - value[ x ] = unit[ 0 ] * factor + unit[ 1 ]; - } - }); - return value; - } -}); - -// return an effect options object for the given parameters: -function _normalizeArguments( effect, options, speed, callback ) { - - // allow passing all options as the first parameter - if ( $.isPlainObject( effect ) ) { - options = effect; - effect = effect.effect; - } - - // convert to an object - effect = { effect: effect }; - - // catch (effect, null, ...) - if ( options == null ) { - options = {}; - } - - // catch (effect, callback) - if ( $.isFunction( options ) ) { - callback = options; - speed = null; - options = {}; - } - - // catch (effect, speed, ?) - if ( typeof options === "number" || $.fx.speeds[ options ] ) { - callback = speed; - speed = options; - options = {}; - } - - // catch (effect, options, callback) - if ( $.isFunction( speed ) ) { - callback = speed; - speed = null; - } - - // add options to effect - if ( options ) { - $.extend( effect, options ); - } - - speed = speed || options.duration; - effect.duration = $.fx.off ? 0 : - typeof speed === "number" ? speed : - speed in $.fx.speeds ? $.fx.speeds[ speed ] : - $.fx.speeds._default; - - effect.complete = callback || options.complete; - - return effect; -} - -function standardAnimationOption( option ) { - // Valid standard speeds (nothing, number, named speed) - if ( !option || typeof option === "number" || $.fx.speeds[ option ] ) { - return true; - } - - // Invalid strings - treat as "normal" speed - if ( typeof option === "string" && !$.effects.effect[ option ] ) { - return true; - } - - // Complete callback - if ( $.isFunction( option ) ) { - return true; - } - - // Options hash (but not naming an effect) - if ( typeof option === "object" && !option.effect ) { - return true; - } - - // Didn't match any standard API - return false; -} - -$.fn.extend({ - effect: function( /* effect, options, speed, callback */ ) { - var args = _normalizeArguments.apply( this, arguments ), - mode = args.mode, - queue = args.queue, - effectMethod = $.effects.effect[ args.effect ]; - - if ( $.fx.off || !effectMethod ) { - // delegate to the original method (e.g., .show()) if possible - if ( mode ) { - return this[ mode ]( args.duration, args.complete ); - } else { - return this.each( function() { - if ( args.complete ) { - args.complete.call( this ); - } - }); - } - } - - function run( next ) { - var elem = $( this ), - complete = args.complete, - mode = args.mode; - - function done() { - if ( $.isFunction( complete ) ) { - complete.call( elem[0] ); - } - if ( $.isFunction( next ) ) { - next(); - } - } - - // If the element already has the correct final state, delegate to - // the core methods so the internal tracking of "olddisplay" works. - if ( elem.is( ":hidden" ) ? mode === "hide" : mode === "show" ) { - elem[ mode ](); - done(); - } else { - effectMethod.call( elem[0], args, done ); - } - } - - return queue === false ? this.each( run ) : this.queue( queue || "fx", run ); - }, - - show: (function( orig ) { - return function( option ) { - if ( standardAnimationOption( option ) ) { - return orig.apply( this, arguments ); - } else { - var args = _normalizeArguments.apply( this, arguments ); - args.mode = "show"; - return this.effect.call( this, args ); - } - }; - })( $.fn.show ), - - hide: (function( orig ) { - return function( option ) { - if ( standardAnimationOption( option ) ) { - return orig.apply( this, arguments ); - } else { - var args = _normalizeArguments.apply( this, arguments ); - args.mode = "hide"; - return this.effect.call( this, args ); - } - }; - })( $.fn.hide ), - - toggle: (function( orig ) { - return function( option ) { - if ( standardAnimationOption( option ) || typeof option === "boolean" ) { - return orig.apply( this, arguments ); - } else { - var args = _normalizeArguments.apply( this, arguments ); - args.mode = "toggle"; - return this.effect.call( this, args ); - } - }; - })( $.fn.toggle ), - - // helper functions - cssUnit: function(key) { - var style = this.css( key ), - val = []; - - $.each( [ "em", "px", "%", "pt" ], function( i, unit ) { - if ( style.indexOf( unit ) > 0 ) { - val = [ parseFloat( style ), unit ]; - } - }); - return val; - } -}); - -})(); - -/******************************************************************************/ -/*********************************** EASING ***********************************/ -/******************************************************************************/ - -(function() { - -// based on easing equations from Robert Penner (http://www.robertpenner.com/easing) - -var baseEasings = {}; - -$.each( [ "Quad", "Cubic", "Quart", "Quint", "Expo" ], function( i, name ) { - baseEasings[ name ] = function( p ) { - return Math.pow( p, i + 2 ); - }; -}); - -$.extend( baseEasings, { - Sine: function ( p ) { - return 1 - Math.cos( p * Math.PI / 2 ); - }, - Circ: function ( p ) { - return 1 - Math.sqrt( 1 - p * p ); - }, - Elastic: function( p ) { - return p === 0 || p === 1 ? p : - -Math.pow( 2, 8 * (p - 1) ) * Math.sin( ( (p - 1) * 80 - 7.5 ) * Math.PI / 15 ); - }, - Back: function( p ) { - return p * p * ( 3 * p - 2 ); - }, - Bounce: function ( p ) { - var pow2, - bounce = 4; - - while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {} - return 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 ); - } -}); - -$.each( baseEasings, function( name, easeIn ) { - $.easing[ "easeIn" + name ] = easeIn; - $.easing[ "easeOut" + name ] = function( p ) { - return 1 - easeIn( 1 - p ); - }; - $.easing[ "easeInOut" + name ] = function( p ) { - return p < 0.5 ? - easeIn( p * 2 ) / 2 : - 1 - easeIn( p * -2 + 2 ) / 2; - }; -}); - -})(); - -})(jQuery); -(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); -(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); -(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); -(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); -(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); -(function( $, undefined ) { - -$.effects.effect.fade = function( o, done ) { - var el = $( this ), - mode = $.effects.setMode( el, o.mode || "toggle" ); - - el.animate({ - opacity: mode - }, { - queue: false, - duration: o.duration, - easing: o.easing, - complete: done - }); -}; - -})( jQuery ); -(function( $, undefined ) { - -$.effects.effect.fold = 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", - hide = mode === "hide", - size = o.size || 15, - percent = /([0-9]+)%/.exec( size ), - horizFirst = !!o.horizFirst, - widthFirst = show !== horizFirst, - ref = widthFirst ? [ "width", "height" ] : [ "height", "width" ], - duration = o.duration / 2, - wrapper, distance, - animation1 = {}, - animation2 = {}; - - $.effects.save( el, props ); - el.show(); - - // Create Wrapper - wrapper = $.effects.createWrapper( el ).css({ - overflow: "hidden" - }); - distance = widthFirst ? - [ wrapper.width(), wrapper.height() ] : - [ wrapper.height(), wrapper.width() ]; - - if ( percent ) { - size = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ]; - } - if ( show ) { - wrapper.css( horizFirst ? { - height: 0, - width: size - } : { - height: size, - width: 0 - }); - } - - // Animation - animation1[ ref[ 0 ] ] = show ? distance[ 0 ] : size; - animation2[ ref[ 1 ] ] = show ? distance[ 1 ] : 0; - - // Animate - wrapper - .animate( animation1, duration, o.easing ) - .animate( animation2, duration, o.easing, function() { - if ( hide ) { - el.hide(); - } - $.effects.restore( el, props ); - $.effects.removeWrapper( el ); - done(); - }); - -}; - -})(jQuery); -(function( $, undefined ) { - -$.effects.effect.highlight = function( o, done ) { - var elem = $( this ), - props = [ "backgroundImage", "backgroundColor", "opacity" ], - mode = $.effects.setMode( elem, o.mode || "show" ), - animation = { - backgroundColor: elem.css( "backgroundColor" ) - }; - - if (mode === "hide") { - animation.opacity = 0; - } - - $.effects.save( elem, props ); - - elem - .show() - .css({ - backgroundImage: "none", - backgroundColor: o.color || "#ffff99" - }) - .animate( animation, { - queue: false, - duration: o.duration, - easing: o.easing, - complete: function() { - if ( mode === "hide" ) { - elem.hide(); - } - $.effects.restore( elem, props ); - done(); - } - }); -}; - -})(jQuery); -(function( $, undefined ) { - -$.effects.effect.pulsate = function( o, done ) { - var elem = $( this ), - mode = $.effects.setMode( elem, o.mode || "show" ), - show = mode === "show", - hide = mode === "hide", - showhide = ( show || mode === "hide" ), - - // showing or hiding leaves of the "last" animation - anims = ( ( o.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ), - duration = o.duration / anims, - animateTo = 0, - queue = elem.queue(), - queuelen = queue.length, - i; - - if ( show || !elem.is(":visible")) { - elem.css( "opacity", 0 ).show(); - animateTo = 1; - } - - // anims - 1 opacity "toggles" - for ( i = 1; i < anims; i++ ) { - elem.animate({ - opacity: animateTo - }, duration, o.easing ); - animateTo = 1 - animateTo; - } - - elem.animate({ - opacity: animateTo - }, duration, o.easing); - - elem.queue(function() { - if ( hide ) { - elem.hide(); - } - done(); - }); - - // We just queued up "anims" animations, we need to put them next in the queue - if ( queuelen > 1 ) { - queue.splice.apply( queue, - [ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) ); - } - elem.dequeue(); -}; - -})(jQuery); -(function( $, undefined ) { - -$.effects.effect.puff = function( o, done ) { - var elem = $( this ), - mode = $.effects.setMode( elem, o.mode || "hide" ), - hide = mode === "hide", - percent = parseInt( o.percent, 10 ) || 150, - factor = percent / 100, - original = { - height: elem.height(), - width: elem.width(), - outerHeight: elem.outerHeight(), - outerWidth: elem.outerWidth() - }; - - $.extend( o, { - effect: "scale", - queue: false, - fade: true, - mode: mode, - complete: done, - percent: hide ? percent : 100, - from: hide ? - original : - { - height: original.height * factor, - width: original.width * factor, - outerHeight: original.outerHeight * factor, - outerWidth: original.outerWidth * factor - } - }); - - elem.effect( o ); -}; - -$.effects.effect.scale = function( o, done ) { - - // Create element - var el = $( this ), - options = $.extend( true, {}, o ), - mode = $.effects.setMode( el, o.mode || "effect" ), - percent = parseInt( o.percent, 10 ) || - ( parseInt( o.percent, 10 ) === 0 ? 0 : ( mode === "hide" ? 0 : 100 ) ), - direction = o.direction || "both", - origin = o.origin, - original = { - height: el.height(), - width: el.width(), - outerHeight: el.outerHeight(), - outerWidth: el.outerWidth() - }, - factor = { - y: direction !== "horizontal" ? (percent / 100) : 1, - x: direction !== "vertical" ? (percent / 100) : 1 - }; - - // We are going to pass this effect to the size effect: - options.effect = "size"; - options.queue = false; - options.complete = done; - - // Set default origin and restore for show/hide - if ( mode !== "effect" ) { - options.origin = origin || ["middle","center"]; - options.restore = true; - } - - options.from = o.from || ( mode === "show" ? { - height: 0, - width: 0, - outerHeight: 0, - outerWidth: 0 - } : original ); - options.to = { - height: original.height * factor.y, - width: original.width * factor.x, - outerHeight: original.outerHeight * factor.y, - outerWidth: original.outerWidth * factor.x - }; - - // Fade option to support puff - if ( options.fade ) { - if ( mode === "show" ) { - options.from.opacity = 0; - options.to.opacity = 1; - } - if ( mode === "hide" ) { - options.from.opacity = 1; - options.to.opacity = 0; - } - } - - // Animate - el.effect( options ); - -}; - -$.effects.effect.size = function( o, done ) { - - // Create element - var original, baseline, factor, - el = $( this ), - props0 = [ "position", "top", "bottom", "left", "right", "width", "height", "overflow", "opacity" ], - - // Always restore - props1 = [ "position", "top", "bottom", "left", "right", "overflow", "opacity" ], - - // Copy for children - props2 = [ "width", "height", "overflow" ], - cProps = [ "fontSize" ], - vProps = [ "borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom" ], - hProps = [ "borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight" ], - - // Set options - mode = $.effects.setMode( el, o.mode || "effect" ), - restore = o.restore || mode !== "effect", - scale = o.scale || "both", - origin = o.origin || [ "middle", "center" ], - position = el.css( "position" ), - props = restore ? props0 : props1, - zero = { - height: 0, - width: 0, - outerHeight: 0, - outerWidth: 0 - }; - - if ( mode === "show" ) { - el.show(); - } - original = { - height: el.height(), - width: el.width(), - outerHeight: el.outerHeight(), - outerWidth: el.outerWidth() - }; - - if ( o.mode === "toggle" && mode === "show" ) { - el.from = o.to || zero; - el.to = o.from || original; - } else { - el.from = o.from || ( mode === "show" ? zero : original ); - el.to = o.to || ( mode === "hide" ? zero : original ); - } - - // Set scaling factor - factor = { - from: { - y: el.from.height / original.height, - x: el.from.width / original.width - }, - to: { - y: el.to.height / original.height, - x: el.to.width / original.width - } - }; - - // Scale the css box - if ( scale === "box" || scale === "both" ) { - - // Vertical props scaling - if ( factor.from.y !== factor.to.y ) { - props = props.concat( vProps ); - el.from = $.effects.setTransition( el, vProps, factor.from.y, el.from ); - el.to = $.effects.setTransition( el, vProps, factor.to.y, el.to ); - } - - // Horizontal props scaling - if ( factor.from.x !== factor.to.x ) { - props = props.concat( hProps ); - el.from = $.effects.setTransition( el, hProps, factor.from.x, el.from ); - el.to = $.effects.setTransition( el, hProps, factor.to.x, el.to ); - } - } - - // Scale the content - if ( scale === "content" || scale === "both" ) { - - // Vertical props scaling - if ( factor.from.y !== factor.to.y ) { - props = props.concat( cProps ).concat( props2 ); - el.from = $.effects.setTransition( el, cProps, factor.from.y, el.from ); - el.to = $.effects.setTransition( el, cProps, factor.to.y, el.to ); - } - } - - $.effects.save( el, props ); - el.show(); - $.effects.createWrapper( el ); - el.css( "overflow", "hidden" ).css( el.from ); - - // Adjust - if (origin) { // Calculate baseline shifts - baseline = $.effects.getBaseline( origin, original ); - el.from.top = ( original.outerHeight - el.outerHeight() ) * baseline.y; - el.from.left = ( original.outerWidth - el.outerWidth() ) * baseline.x; - el.to.top = ( original.outerHeight - el.to.outerHeight ) * baseline.y; - el.to.left = ( original.outerWidth - el.to.outerWidth ) * baseline.x; - } - el.css( el.from ); // set top & left - - // Animate - if ( scale === "content" || scale === "both" ) { // Scale the children - - // Add margins/font-size - vProps = vProps.concat([ "marginTop", "marginBottom" ]).concat(cProps); - hProps = hProps.concat([ "marginLeft", "marginRight" ]); - props2 = props0.concat(vProps).concat(hProps); - - el.find( "*[width]" ).each( function(){ - var child = $( this ), - c_original = { - height: child.height(), - width: child.width(), - outerHeight: child.outerHeight(), - outerWidth: child.outerWidth() - }; - if (restore) { - $.effects.save(child, props2); - } - - child.from = { - height: c_original.height * factor.from.y, - width: c_original.width * factor.from.x, - outerHeight: c_original.outerHeight * factor.from.y, - outerWidth: c_original.outerWidth * factor.from.x - }; - child.to = { - height: c_original.height * factor.to.y, - width: c_original.width * factor.to.x, - outerHeight: c_original.height * factor.to.y, - outerWidth: c_original.width * factor.to.x - }; - - // Vertical props scaling - if ( factor.from.y !== factor.to.y ) { - child.from = $.effects.setTransition( child, vProps, factor.from.y, child.from ); - child.to = $.effects.setTransition( child, vProps, factor.to.y, child.to ); - } - - // Horizontal props scaling - if ( factor.from.x !== factor.to.x ) { - child.from = $.effects.setTransition( child, hProps, factor.from.x, child.from ); - child.to = $.effects.setTransition( child, hProps, factor.to.x, child.to ); - } - - // Animate children - child.css( child.from ); - child.animate( child.to, o.duration, o.easing, function() { - - // Restore children - if ( restore ) { - $.effects.restore( child, props2 ); - } - }); - }); - } - - // Animate - el.animate( el.to, { - queue: false, - duration: o.duration, - easing: o.easing, - complete: function() { - if ( el.to.opacity === 0 ) { - el.css( "opacity", el.from.opacity ); - } - if( mode === "hide" ) { - el.hide(); - } - $.effects.restore( el, props ); - if ( !restore ) { - - // we need to calculate our new positioning based on the scaling - if ( position === "static" ) { - el.css({ - position: "relative", - top: el.to.top, - left: el.to.left - }); - } else { - $.each([ "top", "left" ], function( idx, pos ) { - el.css( pos, function( _, str ) { - var val = parseInt( str, 10 ), - toRef = idx ? el.to.left : el.to.top; - - // if original was "auto", recalculate the new value from wrapper - if ( str === "auto" ) { - return toRef + "px"; - } - - return val + toRef + "px"; - }); - }); - } - } - - $.effects.removeWrapper( el ); - done(); - } - }); - -}; - -})(jQuery); -(function( $, undefined ) { - -$.effects.effect.shake = function( o, done ) { - - var el = $( this ), - props = [ "position", "top", "bottom", "left", "right", "height", "width" ], - mode = $.effects.setMode( el, o.mode || "effect" ), - direction = o.direction || "left", - distance = o.distance || 20, - times = o.times || 3, - anims = times * 2 + 1, - speed = Math.round(o.duration/anims), - ref = (direction === "up" || direction === "down") ? "top" : "left", - positiveMotion = (direction === "up" || direction === "left"), - animation = {}, - animation1 = {}, - animation2 = {}, - i, - - // we will need to re-assemble the queue to stack our animations in place - queue = el.queue(), - queuelen = queue.length; - - $.effects.save( el, props ); - el.show(); - $.effects.createWrapper( el ); - - // Animation - animation[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance; - animation1[ ref ] = ( positiveMotion ? "+=" : "-=" ) + distance * 2; - animation2[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance * 2; - - // Animate - el.animate( animation, speed, o.easing ); - - // Shakes - for ( i = 1; i < times; i++ ) { - el.animate( animation1, speed, o.easing ).animate( animation2, speed, o.easing ); - } - el - .animate( animation1, speed, o.easing ) - .animate( animation, speed / 2, o.easing ) - .queue(function() { - if ( mode === "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); -(function( $, undefined ) { - -$.effects.effect.slide = function( o, done ) { - - // Create element - var el = $( this ), - props = [ "position", "top", "bottom", "left", "right", "width", "height" ], - mode = $.effects.setMode( el, o.mode || "show" ), - show = mode === "show", - direction = o.direction || "left", - ref = (direction === "up" || direction === "down") ? "top" : "left", - positiveMotion = (direction === "up" || direction === "left"), - distance, - animation = {}; - - // Adjust - $.effects.save( el, props ); - el.show(); - distance = o.distance || el[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ); - - $.effects.createWrapper( el ).css({ - overflow: "hidden" - }); - - if ( show ) { - el.css( ref, positiveMotion ? (isNaN(distance) ? "-" + distance : -distance) : distance ); - } - - // Animation - animation[ ref ] = ( show ? - ( positiveMotion ? "+=" : "-=") : - ( positiveMotion ? "-=" : "+=")) + - 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); -(function( $, undefined ) { - -$.effects.effect.transfer = function( o, done ) { - var elem = $( this ), - target = $( o.to ), - targetFixed = target.css( "position" ) === "fixed", - body = $("body"), - fixTop = targetFixed ? body.scrollTop() : 0, - fixLeft = targetFixed ? body.scrollLeft() : 0, - endPosition = target.offset(), - animation = { - top: endPosition.top - fixTop , - left: endPosition.left - fixLeft , - height: target.innerHeight(), - width: target.innerWidth() - }, - startPosition = elem.offset(), - transfer = $( "<div class='ui-effects-transfer'></div>" ) - .appendTo( document.body ) - .addClass( o.className ) - .css({ - top: startPosition.top - fixTop , - left: startPosition.left - fixLeft , - height: elem.innerHeight(), - width: elem.innerWidth(), - position: targetFixed ? "fixed" : "absolute" - }) - .animate( animation, o.duration, o.easing, function() { - transfer.remove(); - done(); - }); -}; - -})(jQuery); diff --git a/assets/jQueryUI/jquery-ui-1.10.3.min.js b/assets/jQueryUI/jquery-ui-1.10.3.min.js deleted file mode 100644 index 3a7bfd51..00000000 --- a/assets/jQueryUI/jquery-ui-1.10.3.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! jQuery UI - v1.10.3 - 2013-12-25 -* http://jqueryui.com -* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.position.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.sortable.js, jquery.ui.autocomplete.js, jquery.ui.menu.js, jquery.ui.effect.js, jquery.ui.effect-blind.js, jquery.ui.effect-bounce.js, jquery.ui.effect-clip.js, jquery.ui.effect-drop.js, jquery.ui.effect-explode.js, jquery.ui.effect-fade.js, jquery.ui.effect-fold.js, jquery.ui.effect-highlight.js, jquery.ui.effect-pulsate.js, jquery.ui.effect-scale.js, jquery.ui.effect-shake.js, jquery.ui.effect-slide.js, jquery.ui.effect-transfer.js -* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ - -(function(e,t){function i(t,i){var s,n,r,o=t.nodeName.toLowerCase();return"area"===o?(s=t.parentNode,n=s.name,t.href&&n&&"map"===s.nodeName.toLowerCase()?(r=e("img[usemap=#"+n+"]")[0],!!r&&a(r)):!1):(/input|select|textarea|button|object/.test(o)?!t.disabled:"a"===o?t.href||i:i)&&a(t)}function a(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}var s=0,n=/^ui-id-\d+$/;e.ui=e.ui||{},e.extend(e.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}}),e.fn.extend({focus:function(t){return function(i,a){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),a&&a.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),scrollParent:function(){var t;return t=e.ui.ie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(e.css(this,"position"))&&/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!t.length?e(document):t},zIndex:function(i){if(i!==t)return this.css("zIndex",i);if(this.length)for(var a,s,n=e(this[0]);n.length&&n[0]!==document;){if(a=n.css("position"),("absolute"===a||"relative"===a||"fixed"===a)&&(s=parseInt(n.css("zIndex"),10),!isNaN(s)&&0!==s))return s;n=n.parent()}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++s)})},removeUniqueId:function(){return this.each(function(){n.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,a){return!!e.data(t,a[3])},focusable:function(t){return i(t,!isNaN(e.attr(t,"tabindex")))},tabbable:function(t){var a=e.attr(t,"tabindex"),s=isNaN(a);return(s||a>=0)&&i(t,!s)}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(i,a){function s(t,i,a,s){return e.each(n,function(){i-=parseFloat(e.css(t,"padding"+this))||0,a&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),s&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var n="Width"===a?["Left","Right"]:["Top","Bottom"],r=a.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+a]=function(i){return i===t?o["inner"+a].call(this):this.each(function(){e(this).css(r,s(this,i)+"px")})},e.fn["outer"+a]=function(t,i){return"number"!=typeof t?o["outer"+a].call(this,t):this.each(function(){e(this).css(r,s(this,t,!0,i)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.support.selectstart="onselectstart"in document.createElement("div"),e.fn.extend({disableSelection:function(){return this.bind((e.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),e.extend(e.ui,{plugin:{add:function(t,i,a){var s,n=e.ui[t].prototype;for(s in a)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([i,a[s]])},call:function(e,t,i){var a,s=e.plugins[t];if(s&&e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType)for(a=0;s.length>a;a++)e.options[s[a][0]]&&s[a][1].apply(e.element,i)}},hasScroll:function(t,i){if("hidden"===e(t).css("overflow"))return!1;var a=i&&"left"===i?"scrollLeft":"scrollTop",s=!1;return t[a]>0?!0:(t[a]=1,s=t[a]>0,t[a]=0,s)}})})(jQuery);(function(e,t){var i=0,s=Array.prototype.slice,a=e.cleanData;e.cleanData=function(t){for(var i,s=0;null!=(i=t[s]);s++)try{e(i).triggerHandler("remove")}catch(n){}a(t)},e.widget=function(i,s,a){var n,r,o,h,l={},u=i.split(".")[0];i=i.split(".")[1],n=u+"-"+i,a||(a=s,s=e.Widget),e.expr[":"][n.toLowerCase()]=function(t){return!!e.data(t,n)},e[u]=e[u]||{},r=e[u][i],o=e[u][i]=function(e,i){return this._createWidget?(arguments.length&&this._createWidget(e,i),t):new o(e,i)},e.extend(o,r,{version:a.version,_proto:e.extend({},a),_childConstructors:[]}),h=new s,h.options=e.widget.extend({},h.options),e.each(a,function(i,a){return e.isFunction(a)?(l[i]=function(){var e=function(){return s.prototype[i].apply(this,arguments)},t=function(e){return s.prototype[i].apply(this,e)};return function(){var i,s=this._super,n=this._superApply;return this._super=e,this._superApply=t,i=a.apply(this,arguments),this._super=s,this._superApply=n,i}}(),t):(l[i]=a,t)}),o.prototype=e.widget.extend(h,{widgetEventPrefix:r?h.widgetEventPrefix:i},l,{constructor:o,namespace:u,widgetName:i,widgetFullName:n}),r?(e.each(r._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete r._childConstructors):s._childConstructors.push(o),e.widget.bridge(i,o)},e.widget.extend=function(i){for(var a,n,r=s.call(arguments,1),o=0,h=r.length;h>o;o++)for(a in r[o])n=r[o][a],r[o].hasOwnProperty(a)&&n!==t&&(i[a]=e.isPlainObject(n)?e.isPlainObject(i[a])?e.widget.extend({},i[a],n):e.widget.extend({},n):n);return i},e.widget.bridge=function(i,a){var n=a.prototype.widgetFullName||i;e.fn[i]=function(r){var o="string"==typeof r,h=s.call(arguments,1),l=this;return r=!o&&h.length?e.widget.extend.apply(null,[r].concat(h)):r,o?this.each(function(){var s,a=e.data(this,n);return a?e.isFunction(a[r])&&"_"!==r.charAt(0)?(s=a[r].apply(a,h),s!==a&&s!==t?(l=s&&s.jquery?l.pushStack(s.get()):s,!1):t):e.error("no such method '"+r+"' for "+i+" widget instance"):e.error("cannot call methods on "+i+" prior to initialization; "+"attempted to call method '"+r+"'")}):this.each(function(){var t=e.data(this,n);t?t.option(r||{})._init():e.data(this,n,new a(r,this))}),l}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,s){s=e(s||this.defaultElement||this)[0],this.element=e(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this.bindings=e(),this.hoverable=e(),this.focusable=e(),s!==this&&(e.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===s&&this.destroy()}}),this.document=e(s.style?s.ownerDocument:s.document||s),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(i,s){var a,n,r,o=i;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof i)if(o={},a=i.split("."),i=a.shift(),a.length){for(n=o[i]=e.widget.extend({},this.options[i]),r=0;a.length-1>r;r++)n[a[r]]=n[a[r]]||{},n=n[a[r]];if(i=a.pop(),s===t)return n[i]===t?null:n[i];n[i]=s}else{if(s===t)return this.options[i]===t?null:this.options[i];o[i]=s}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!t).attr("aria-disabled",t),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_on:function(i,s,a){var n,r=this;"boolean"!=typeof i&&(a=s,s=i,i=!1),a?(s=n=e(s),this.bindings=this.bindings.add(s)):(a=s,s=this.element,n=this.widget()),e.each(a,function(a,o){function h(){return i||r.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof o?r[o]:o).apply(r,arguments):t}"string"!=typeof o&&(h.guid=o.guid=o.guid||h.guid||e.guid++);var l=a.match(/^(\w+)\s*(.*)$/),u=l[1]+r.eventNamespace,c=l[2];c?n.delegate(c,u,h):s.bind(u,h)})},_off:function(e,t){t=(t||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.unbind(t).undelegate(t)},_delay:function(e,t){function i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,s){var a,n,r=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],n=i.originalEvent)for(a in n)a in i||(i[a]=n[a]);return this.element.trigger(i,s),!(e.isFunction(r)&&r.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,a,n){"string"==typeof a&&(a={effect:a});var r,o=a?a===!0||"number"==typeof a?i:a.effect||i:t;a=a||{},"number"==typeof a&&(a={duration:a}),r=!e.isEmptyObject(a),a.complete=n,a.delay&&s.delay(a.delay),r&&e.effects&&e.effects.effect[o]?s[t](a):o!==t&&s[o]?s[o](a.duration,a.easing,n):s.queue(function(i){e(this)[t](),n&&n.call(s[0]),i()})}})})(jQuery);(function(e){var t=!1;e(document).mouseup(function(){t=!1}),e.widget("ui.mouse",{version:"1.10.3",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(i){return!0===e.data(i.target,t.widgetName+".preventClickEvent")?(e.removeData(i.target,t.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):undefined}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(i){if(!t){this._mouseStarted&&this._mouseUp(i),this._mouseDownEvent=i;var s=this,a=1===i.which,n="string"==typeof this.options.cancel&&i.target.nodeName?e(i.target).closest(this.options.cancel).length:!1;return a&&!n&&this._mouseCapture(i)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){s.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(i)&&this._mouseDelayMet(i)&&(this._mouseStarted=this._mouseStart(i)!==!1,!this._mouseStarted)?(i.preventDefault(),!0):(!0===e.data(i.target,this.widgetName+".preventClickEvent")&&e.removeData(i.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return s._mouseMove(e)},this._mouseUpDelegate=function(e){return s._mouseUp(e)},e(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),i.preventDefault(),t=!0,!0)):!0}},_mouseMove:function(t){return e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button?this._mouseUp(t):this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}})})(jQuery);(function(e,t){function i(e,t,i){return[parseFloat(e[0])*(p.test(e[0])?t/100:1),parseFloat(e[1])*(p.test(e[1])?i/100:1)]}function s(t,i){return parseInt(e.css(t,i),10)||0}function a(t){var i=t[0];return 9===i.nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:e.isWindow(i)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()}}e.ui=e.ui||{};var n,r=Math.max,o=Math.abs,h=Math.round,l=/left|center|right/,u=/top|center|bottom/,c=/[\+\-]\d+(\.[\d]+)?%?/,d=/^\w+/,p=/%$/,f=e.fn.position;e.position={scrollbarWidth:function(){if(n!==t)return n;var i,s,a=e("<div style='display:block;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),r=a.children()[0];return e("body").append(a),i=r.offsetWidth,a.css("overflow","scroll"),s=r.offsetWidth,i===s&&(s=a[0].clientWidth),a.remove(),n=i-s},getScrollInfo:function(t){var i=t.isWindow?"":t.element.css("overflow-x"),s=t.isWindow?"":t.element.css("overflow-y"),a="scroll"===i||"auto"===i&&t.width<t.element[0].scrollWidth,n="scroll"===s||"auto"===s&&t.height<t.element[0].scrollHeight;return{width:n?e.position.scrollbarWidth():0,height:a?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var i=e(t||window),s=e.isWindow(i[0]);return{element:i,isWindow:s,offset:i.offset()||{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:s?i.width():i.outerWidth(),height:s?i.height():i.outerHeight()}}},e.fn.position=function(t){if(!t||!t.of)return f.apply(this,arguments);t=e.extend({},t);var n,p,m,g,v,y,b=e(t.of),_=e.position.getWithinInfo(t.within),x=e.position.getScrollInfo(_),k=(t.collision||"flip").split(" "),w={};return y=a(b),b[0].preventDefault&&(t.at="left top"),p=y.width,m=y.height,g=y.offset,v=e.extend({},g),e.each(["my","at"],function(){var e,i,s=(t[this]||"").split(" ");1===s.length&&(s=l.test(s[0])?s.concat(["center"]):u.test(s[0])?["center"].concat(s):["center","center"]),s[0]=l.test(s[0])?s[0]:"center",s[1]=u.test(s[1])?s[1]:"center",e=c.exec(s[0]),i=c.exec(s[1]),w[this]=[e?e[0]:0,i?i[0]:0],t[this]=[d.exec(s[0])[0],d.exec(s[1])[0]]}),1===k.length&&(k[1]=k[0]),"right"===t.at[0]?v.left+=p:"center"===t.at[0]&&(v.left+=p/2),"bottom"===t.at[1]?v.top+=m:"center"===t.at[1]&&(v.top+=m/2),n=i(w.at,p,m),v.left+=n[0],v.top+=n[1],this.each(function(){var a,l,u=e(this),c=u.outerWidth(),d=u.outerHeight(),f=s(this,"marginLeft"),y=s(this,"marginTop"),D=c+f+s(this,"marginRight")+x.width,T=d+y+s(this,"marginBottom")+x.height,M=e.extend({},v),S=i(w.my,u.outerWidth(),u.outerHeight());"right"===t.my[0]?M.left-=c:"center"===t.my[0]&&(M.left-=c/2),"bottom"===t.my[1]?M.top-=d:"center"===t.my[1]&&(M.top-=d/2),M.left+=S[0],M.top+=S[1],e.support.offsetFractions||(M.left=h(M.left),M.top=h(M.top)),a={marginLeft:f,marginTop:y},e.each(["left","top"],function(i,s){e.ui.position[k[i]]&&e.ui.position[k[i]][s](M,{targetWidth:p,targetHeight:m,elemWidth:c,elemHeight:d,collisionPosition:a,collisionWidth:D,collisionHeight:T,offset:[n[0]+S[0],n[1]+S[1]],my:t.my,at:t.at,within:_,elem:u})}),t.using&&(l=function(e){var i=g.left-M.left,s=i+p-c,a=g.top-M.top,n=a+m-d,h={target:{element:b,left:g.left,top:g.top,width:p,height:m},element:{element:u,left:M.left,top:M.top,width:c,height:d},horizontal:0>s?"left":i>0?"right":"center",vertical:0>n?"top":a>0?"bottom":"middle"};c>p&&p>o(i+s)&&(h.horizontal="center"),d>m&&m>o(a+n)&&(h.vertical="middle"),h.important=r(o(i),o(s))>r(o(a),o(n))?"horizontal":"vertical",t.using.call(this,e,h)}),u.offset(e.extend(M,{using:l}))})},e.ui.position={fit:{left:function(e,t){var i,s=t.within,a=s.isWindow?s.scrollLeft:s.offset.left,n=s.width,o=e.left-t.collisionPosition.marginLeft,h=a-o,l=o+t.collisionWidth-n-a;t.collisionWidth>n?h>0&&0>=l?(i=e.left+h+t.collisionWidth-n-a,e.left+=h-i):e.left=l>0&&0>=h?a:h>l?a+n-t.collisionWidth:a:h>0?e.left+=h:l>0?e.left-=l:e.left=r(e.left-o,e.left)},top:function(e,t){var i,s=t.within,a=s.isWindow?s.scrollTop:s.offset.top,n=t.within.height,o=e.top-t.collisionPosition.marginTop,h=a-o,l=o+t.collisionHeight-n-a;t.collisionHeight>n?h>0&&0>=l?(i=e.top+h+t.collisionHeight-n-a,e.top+=h-i):e.top=l>0&&0>=h?a:h>l?a+n-t.collisionHeight:a:h>0?e.top+=h:l>0?e.top-=l:e.top=r(e.top-o,e.top)}},flip:{left:function(e,t){var i,s,a=t.within,n=a.offset.left+a.scrollLeft,r=a.width,h=a.isWindow?a.scrollLeft:a.offset.left,l=e.left-t.collisionPosition.marginLeft,u=l-h,c=l+t.collisionWidth-r-h,d="left"===t.my[0]?-t.elemWidth:"right"===t.my[0]?t.elemWidth:0,p="left"===t.at[0]?t.targetWidth:"right"===t.at[0]?-t.targetWidth:0,f=-2*t.offset[0];0>u?(i=e.left+d+p+f+t.collisionWidth-r-n,(0>i||o(u)>i)&&(e.left+=d+p+f)):c>0&&(s=e.left-t.collisionPosition.marginLeft+d+p+f-h,(s>0||c>o(s))&&(e.left+=d+p+f))},top:function(e,t){var i,s,a=t.within,n=a.offset.top+a.scrollTop,r=a.height,h=a.isWindow?a.scrollTop:a.offset.top,l=e.top-t.collisionPosition.marginTop,u=l-h,c=l+t.collisionHeight-r-h,d="top"===t.my[1],p=d?-t.elemHeight:"bottom"===t.my[1]?t.elemHeight:0,f="top"===t.at[1]?t.targetHeight:"bottom"===t.at[1]?-t.targetHeight:0,m=-2*t.offset[1];0>u?(s=e.top+p+f+m+t.collisionHeight-r-n,e.top+p+f+m>u&&(0>s||o(u)>s)&&(e.top+=p+f+m)):c>0&&(i=e.top-t.collisionPosition.marginTop+p+f+m-h,e.top+p+f+m>c&&(i>0||c>o(i))&&(e.top+=p+f+m))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,i,s,a,n,r=document.getElementsByTagName("body")[0],o=document.createElement("div");t=document.createElement(r?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},r&&e.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(n in s)t.style[n]=s[n];t.appendChild(o),i=r||document.documentElement,i.insertBefore(t,i.firstChild),o.style.cssText="position: absolute; left: 10.7432222px;",a=e(o).offset().left,e.support.offsetFractions=a>10&&11>a,t.innerHTML="",i.removeChild(t)}()})(jQuery);(function(e){e.widget("ui.draggable",e.ui.mouse,{version:"1.10.3",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"!==this.options.helper||/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._mouseInit()},_destroy:function(){this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy()},_mouseCapture:function(t){var i=this.options;return this.helper||i.disabled||e(t.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(t),this.handle?(e(i.iframeFix===!0?"iframe":i.iframeFix).each(function(){e("<div class='ui-draggable-iframeFix' style='background: #fff;'></div>").css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(e(this).offset()).appendTo("body")}),!0):!1)},_mouseStart:function(t){var i=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offsetParent=this.helper.offsetParent(),this.offsetParentCssPosition=this.offsetParent.css("position"),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},this.offset.scroll=!1,e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_mouseDrag:function(t,i){if("fixed"===this.offsetParentCssPosition&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),!i){var a=this._uiHash();if(this._trigger("drag",t,a)===!1)return this._mouseUp({}),!1;this.position=a.position}return this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var i=this,a=!1;return e.ui.ddmanager&&!this.options.dropBehaviour&&(a=e.ui.ddmanager.drop(this,t)),this.dropped&&(a=this.dropped,this.dropped=!1),"original"!==this.options.helper||e.contains(this.element[0].ownerDocument,this.element[0])?("invalid"===this.options.revert&&!a||"valid"===this.options.revert&&a||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,a)?e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",t)!==!1&&i._clear()}):this._trigger("stop",t)!==!1&&this._clear(),!1):!1},_mouseUp:function(t){return e("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){return this.options.handle?!!e(t.target).closest(this.element.find(this.options.handle)).length:!0},_createHelper:function(t){var i=this.options,a=e.isFunction(i.helper)?e(i.helper.apply(this.element[0],[t])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return a.parents("body").length||a.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),a[0]===this.element[0]||/(fixed|absolute)/.test(a.css("position"))||a.css("position","absolute"),a},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&e.ui.ie)&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var e=this.element.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,a,s=this.options;return s.containment?"window"===s.containment?(this.containment=[e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,e(window).scrollLeft()+e(window).width()-this.helperProportions.width-this.margins.left,e(window).scrollTop()+(e(window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],undefined):"document"===s.containment?(this.containment=[0,0,e(document).width()-this.helperProportions.width-this.margins.left,(e(document).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],undefined):s.containment.constructor===Array?(this.containment=s.containment,undefined):("parent"===s.containment&&(s.containment=this.helper[0].parentNode),i=e(s.containment),a=i[0],a&&(t="hidden"!==i.css("overflow"),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(t?Math.max(a.scrollWidth,a.offsetWidth):a.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(a.scrollHeight,a.offsetHeight):a.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=i),undefined):(this.containment=null,undefined)},_convertPositionTo:function(t,i){i||(i=this.position);var a="absolute"===t?1:-1,s="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent;return this.offset.scroll||(this.offset.scroll={top:s.scrollTop(),left:s.scrollLeft()}),{top:i.top+this.offset.relative.top*a+this.offset.parent.top*a-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():this.offset.scroll.top)*a,left:i.left+this.offset.relative.left*a+this.offset.parent.left*a-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():this.offset.scroll.left)*a}},_generatePosition:function(t){var i,a,s,n,r=this.options,o="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,l=t.pageX,h=t.pageY;return this.offset.scroll||(this.offset.scroll={top:o.scrollTop(),left:o.scrollLeft()}),this.originalPosition&&(this.containment&&(this.relative_container?(a=this.relative_container.offset(),i=[this.containment[0]+a.left,this.containment[1]+a.top,this.containment[2]+a.left,this.containment[3]+a.top]):i=this.containment,t.pageX-this.offset.click.left<i[0]&&(l=i[0]+this.offset.click.left),t.pageY-this.offset.click.top<i[1]&&(h=i[1]+this.offset.click.top),t.pageX-this.offset.click.left>i[2]&&(l=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(h=i[3]+this.offset.click.top)),r.grid&&(s=r.grid[1]?this.originalPageY+Math.round((h-this.originalPageY)/r.grid[1])*r.grid[1]:this.originalPageY,h=i?s-this.offset.click.top>=i[1]||s-this.offset.click.top>i[3]?s:s-this.offset.click.top>=i[1]?s-r.grid[1]:s+r.grid[1]:s,n=r.grid[0]?this.originalPageX+Math.round((l-this.originalPageX)/r.grid[0])*r.grid[0]:this.originalPageX,l=i?n-this.offset.click.left>=i[0]||n-this.offset.click.left>i[2]?n:n-this.offset.click.left>=i[0]?n-r.grid[0]:n+r.grid[0]:n)),{top:h-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():this.offset.scroll.top),left:l-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():this.offset.scroll.left)}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1},_trigger:function(t,i,a){return a=a||this._uiHash(),e.ui.plugin.call(this,t,[i,a]),"drag"===t&&(this.positionAbs=this._convertPositionTo("absolute")),e.Widget.prototype._trigger.call(this,t,i,a)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,i){var a=e(this).data("ui-draggable"),s=a.options,n=e.extend({},i,{item:a.element});a.sortables=[],e(s.connectToSortable).each(function(){var i=e.data(this,"ui-sortable");i&&!i.options.disabled&&(a.sortables.push({instance:i,shouldRevert:i.options.revert}),i.refreshPositions(),i._trigger("activate",t,n))})},stop:function(t,i){var a=e(this).data("ui-draggable"),s=e.extend({},i,{item:a.element});e.each(a.sortables,function(){this.instance.isOver?(this.instance.isOver=0,a.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=this.shouldRevert),this.instance._mouseStop(t),this.instance.options.helper=this.instance.options._helper,"original"===a.options.helper&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",t,s))})},drag:function(t,i){var a=e(this).data("ui-draggable"),s=this;e.each(a.sortables,function(){var n=!1,r=this;this.instance.positionAbs=a.positionAbs,this.instance.helperProportions=a.helperProportions,this.instance.offset.click=a.offset.click,this.instance._intersectsWith(this.instance.containerCache)&&(n=!0,e.each(a.sortables,function(){return this.instance.positionAbs=a.positionAbs,this.instance.helperProportions=a.helperProportions,this.instance.offset.click=a.offset.click,this!==r&&this.instance._intersectsWith(this.instance.containerCache)&&e.contains(r.instance.element[0],this.instance.element[0])&&(n=!1),n})),n?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=e(s).clone().removeAttr("id").appendTo(this.instance.element).data("ui-sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return i.helper[0]},t.target=this.instance.currentItem[0],this.instance._mouseCapture(t,!0),this.instance._mouseStart(t,!0,!0),this.instance.offset.click.top=a.offset.click.top,this.instance.offset.click.left=a.offset.click.left,this.instance.offset.parent.left-=a.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=a.offset.parent.top-this.instance.offset.parent.top,a._trigger("toSortable",t),a.dropped=this.instance.element,a.currentItem=a.element,this.instance.fromOutside=a),this.instance.currentItem&&this.instance._mouseDrag(t)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",t,this.instance._uiHash(this.instance)),this.instance._mouseStop(t,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),a._trigger("fromSortable",t),a.dropped=!1)})}}),e.ui.plugin.add("draggable","cursor",{start:function(){var t=e("body"),i=e(this).data("ui-draggable").options;t.css("cursor")&&(i._cursor=t.css("cursor")),t.css("cursor",i.cursor)},stop:function(){var t=e(this).data("ui-draggable").options;t._cursor&&e("body").css("cursor",t._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,i){var a=e(i.helper),s=e(this).data("ui-draggable").options;a.css("opacity")&&(s._opacity=a.css("opacity")),a.css("opacity",s.opacity)},stop:function(t,i){var a=e(this).data("ui-draggable").options;a._opacity&&e(i.helper).css("opacity",a._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(){var t=e(this).data("ui-draggable");t.scrollParent[0]!==document&&"HTML"!==t.scrollParent[0].tagName&&(t.overflowOffset=t.scrollParent.offset())},drag:function(t){var i=e(this).data("ui-draggable"),a=i.options,s=!1;i.scrollParent[0]!==document&&"HTML"!==i.scrollParent[0].tagName?(a.axis&&"x"===a.axis||(i.overflowOffset.top+i.scrollParent[0].offsetHeight-t.pageY<a.scrollSensitivity?i.scrollParent[0].scrollTop=s=i.scrollParent[0].scrollTop+a.scrollSpeed:t.pageY-i.overflowOffset.top<a.scrollSensitivity&&(i.scrollParent[0].scrollTop=s=i.scrollParent[0].scrollTop-a.scrollSpeed)),a.axis&&"y"===a.axis||(i.overflowOffset.left+i.scrollParent[0].offsetWidth-t.pageX<a.scrollSensitivity?i.scrollParent[0].scrollLeft=s=i.scrollParent[0].scrollLeft+a.scrollSpeed:t.pageX-i.overflowOffset.left<a.scrollSensitivity&&(i.scrollParent[0].scrollLeft=s=i.scrollParent[0].scrollLeft-a.scrollSpeed))):(a.axis&&"x"===a.axis||(t.pageY-e(document).scrollTop()<a.scrollSensitivity?s=e(document).scrollTop(e(document).scrollTop()-a.scrollSpeed):e(window).height()-(t.pageY-e(document).scrollTop())<a.scrollSensitivity&&(s=e(document).scrollTop(e(document).scrollTop()+a.scrollSpeed))),a.axis&&"y"===a.axis||(t.pageX-e(document).scrollLeft()<a.scrollSensitivity?s=e(document).scrollLeft(e(document).scrollLeft()-a.scrollSpeed):e(window).width()-(t.pageX-e(document).scrollLeft())<a.scrollSensitivity&&(s=e(document).scrollLeft(e(document).scrollLeft()+a.scrollSpeed)))),s!==!1&&e.ui.ddmanager&&!a.dropBehaviour&&e.ui.ddmanager.prepareOffsets(i,t)}}),e.ui.plugin.add("draggable","snap",{start:function(){var t=e(this).data("ui-draggable"),i=t.options;t.snapElements=[],e(i.snap.constructor!==String?i.snap.items||":data(ui-draggable)":i.snap).each(function(){var i=e(this),a=i.offset();this!==t.element[0]&&t.snapElements.push({item:this,width:i.outerWidth(),height:i.outerHeight(),top:a.top,left:a.left})})},drag:function(t,i){var a,s,n,r,o,l,h,u,d,c,p=e(this).data("ui-draggable"),f=p.options,m=f.snapTolerance,g=i.offset.left,v=g+p.helperProportions.width,y=i.offset.top,b=y+p.helperProportions.height;for(d=p.snapElements.length-1;d>=0;d--)o=p.snapElements[d].left,l=o+p.snapElements[d].width,h=p.snapElements[d].top,u=h+p.snapElements[d].height,o-m>v||g>l+m||h-m>b||y>u+m||!e.contains(p.snapElements[d].item.ownerDocument,p.snapElements[d].item)?(p.snapElements[d].snapping&&p.options.snap.release&&p.options.snap.release.call(p.element,t,e.extend(p._uiHash(),{snapItem:p.snapElements[d].item})),p.snapElements[d].snapping=!1):("inner"!==f.snapMode&&(a=m>=Math.abs(h-b),s=m>=Math.abs(u-y),n=m>=Math.abs(o-v),r=m>=Math.abs(l-g),a&&(i.position.top=p._convertPositionTo("relative",{top:h-p.helperProportions.height,left:0}).top-p.margins.top),s&&(i.position.top=p._convertPositionTo("relative",{top:u,left:0}).top-p.margins.top),n&&(i.position.left=p._convertPositionTo("relative",{top:0,left:o-p.helperProportions.width}).left-p.margins.left),r&&(i.position.left=p._convertPositionTo("relative",{top:0,left:l}).left-p.margins.left)),c=a||s||n||r,"outer"!==f.snapMode&&(a=m>=Math.abs(h-y),s=m>=Math.abs(u-b),n=m>=Math.abs(o-g),r=m>=Math.abs(l-v),a&&(i.position.top=p._convertPositionTo("relative",{top:h,left:0}).top-p.margins.top),s&&(i.position.top=p._convertPositionTo("relative",{top:u-p.helperProportions.height,left:0}).top-p.margins.top),n&&(i.position.left=p._convertPositionTo("relative",{top:0,left:o}).left-p.margins.left),r&&(i.position.left=p._convertPositionTo("relative",{top:0,left:l-p.helperProportions.width}).left-p.margins.left)),!p.snapElements[d].snapping&&(a||s||n||r||c)&&p.options.snap.snap&&p.options.snap.snap.call(p.element,t,e.extend(p._uiHash(),{snapItem:p.snapElements[d].item})),p.snapElements[d].snapping=a||s||n||r||c)}}),e.ui.plugin.add("draggable","stack",{start:function(){var t,i=this.data("ui-draggable").options,a=e.makeArray(e(i.stack)).sort(function(t,i){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(i).css("zIndex"),10)||0)});a.length&&(t=parseInt(e(a[0]).css("zIndex"),10)||0,e(a).each(function(i){e(this).css("zIndex",t+i)}),this.css("zIndex",t+a.length))}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,i){var a=e(i.helper),s=e(this).data("ui-draggable").options;a.css("zIndex")&&(s._zIndex=a.css("zIndex")),a.css("zIndex",s.zIndex)},stop:function(t,i){var a=e(this).data("ui-draggable").options;a._zIndex&&e(i.helper).css("zIndex",a._zIndex)}})})(jQuery);(function(e){function t(e,t,i){return e>t&&t+i>e}e.widget("ui.droppable",{version:"1.10.3",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t=this.options,i=t.accept;this.isover=!1,this.isout=!0,this.accept=e.isFunction(i)?i:function(e){return e.is(i)},this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight},e.ui.ddmanager.droppables[t.scope]=e.ui.ddmanager.droppables[t.scope]||[],e.ui.ddmanager.droppables[t.scope].push(this),t.addClasses&&this.element.addClass("ui-droppable")},_destroy:function(){for(var t=0,i=e.ui.ddmanager.droppables[this.options.scope];i.length>t;t++)i[t]===this&&i.splice(t,1);this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(t,i){"accept"===t&&(this.accept=e.isFunction(i)?i:function(e){return e.is(i)}),e.Widget.prototype._setOption.apply(this,arguments)},_activate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),i&&this._trigger("activate",t,this.ui(i))},_deactivate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),i&&this._trigger("deactivate",t,this.ui(i))},_over:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",t,this.ui(i)))},_out:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",t,this.ui(i)))},_drop:function(t,i){var a=i||e.ui.ddmanager.current,s=!1;return a&&(a.currentItem||a.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var t=e.data(this,"ui-droppable");return t.options.greedy&&!t.options.disabled&&t.options.scope===a.options.scope&&t.accept.call(t.element[0],a.currentItem||a.element)&&e.ui.intersect(a,e.extend(t,{offset:t.element.offset()}),t.options.tolerance)?(s=!0,!1):undefined}),s?!1:this.accept.call(this.element[0],a.currentItem||a.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(a)),this.element):!1):!1},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),e.ui.intersect=function(e,i,a){if(!i.offset)return!1;var s,n,r=(e.positionAbs||e.position.absolute).left,o=r+e.helperProportions.width,l=(e.positionAbs||e.position.absolute).top,h=l+e.helperProportions.height,u=i.offset.left,d=u+i.proportions.width,c=i.offset.top,p=c+i.proportions.height;switch(a){case"fit":return r>=u&&d>=o&&l>=c&&p>=h;case"intersect":return r+e.helperProportions.width/2>u&&d>o-e.helperProportions.width/2&&l+e.helperProportions.height/2>c&&p>h-e.helperProportions.height/2;case"pointer":return s=(e.positionAbs||e.position.absolute).left+(e.clickOffset||e.offset.click).left,n=(e.positionAbs||e.position.absolute).top+(e.clickOffset||e.offset.click).top,t(n,c,i.proportions.height)&&t(s,u,i.proportions.width);case"touch":return(l>=c&&p>=l||h>=c&&p>=h||c>l&&h>p)&&(r>=u&&d>=r||o>=u&&d>=o||u>r&&o>d);default:return!1}},e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,i){var a,s,n=e.ui.ddmanager.droppables[t.options.scope]||[],r=i?i.type:null,o=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();e:for(a=0;n.length>a;a++)if(!(n[a].options.disabled||t&&!n[a].accept.call(n[a].element[0],t.currentItem||t.element))){for(s=0;o.length>s;s++)if(o[s]===n[a].element[0]){n[a].proportions.height=0;continue e}n[a].visible="none"!==n[a].element.css("display"),n[a].visible&&("mousedown"===r&&n[a]._activate.call(n[a],i),n[a].offset=n[a].element.offset(),n[a].proportions={width:n[a].element[0].offsetWidth,height:n[a].element[0].offsetHeight})}},drop:function(t,i){var a=!1;return e.each((e.ui.ddmanager.droppables[t.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&e.ui.intersect(t,this,this.options.tolerance)&&(a=this._drop.call(this,i)||a),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),a},dragStart:function(t,i){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)})},drag:function(t,i){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,i),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var a,s,n,r=e.ui.intersect(t,this,this.options.tolerance),o=!r&&this.isover?"isout":r&&!this.isover?"isover":null;o&&(this.options.greedy&&(s=this.options.scope,n=this.element.parents(":data(ui-droppable)").filter(function(){return e.data(this,"ui-droppable").options.scope===s}),n.length&&(a=e.data(n[0],"ui-droppable"),a.greedyChild="isover"===o)),a&&"isover"===o&&(a.isover=!1,a.isout=!0,a._out.call(a,i)),this[o]=!0,this["isout"===o?"isover":"isout"]=!1,this["isover"===o?"_over":"_out"].call(this,i),a&&"isout"===o&&(a.isout=!1,a.isover=!0,a._over.call(a,i)))}})},dragStop:function(t,i){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)}}})(jQuery);(function(e){function t(e){return parseInt(e,10)||0}function i(e){return!isNaN(parseInt(e,10))}e.widget("ui.resizable",e.ui.mouse,{version:"1.10.3",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_create:function(){var t,i,s,a,n,r=this,o=this.options;if(this.element.addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!o.aspectRatio,aspectRatio:o.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:o.helper||o.ghost||o.animate?o.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(e("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.data("ui-resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=o.handles||(e(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),t=this.handles.split(","),this.handles={},i=0;t.length>i;i++)s=e.trim(t[i]),n="ui-resizable-"+s,a=e("<div class='ui-resizable-handle "+n+"'></div>"),a.css({zIndex:o.zIndex}),"se"===s&&a.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(a);this._renderAxis=function(t){var i,s,a,n;t=t||this.element;for(i in this.handles)this.handles[i].constructor===String&&(this.handles[i]=e(this.handles[i],this.element).show()),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)&&(s=e(this.handles[i],this.element),n=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),a=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),t.css(a,n),this._proportionallyResize()),e(this.handles[i]).length},this._renderAxis(this.element),this._handles=e(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){r.resizing||(this.className&&(a=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=a&&a[1]?a[1]:"se")}),o.autoHide&&(this._handles.hide(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){o.disabled||(e(this).removeClass("ui-resizable-autohide"),r._handles.show())}).mouseleave(function(){o.disabled||r.resizing||(e(this).addClass("ui-resizable-autohide"),r._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t,i=function(t){e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),t=this.element,this.originalElement.css({position:t.css("position"),width:t.outerWidth(),height:t.outerHeight(),top:t.css("top"),left:t.css("left")}).insertAfter(t),t.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_mouseCapture:function(t){var i,s,a=!1;for(i in this.handles)s=e(this.handles[i])[0],(s===t.target||e.contains(s,t.target))&&(a=!0);return!this.options.disabled&&a},_mouseStart:function(i){var s,a,n,r=this.options,o=this.element.position(),h=this.element;return this.resizing=!0,/absolute/.test(h.css("position"))?h.css({position:"absolute",top:h.css("top"),left:h.css("left")}):h.is(".ui-draggable")&&h.css({position:"absolute",top:o.top,left:o.left}),this._renderProxy(),s=t(this.helper.css("left")),a=t(this.helper.css("top")),r.containment&&(s+=e(r.containment).scrollLeft()||0,a+=e(r.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:s,top:a},this.size=this._helper?{width:h.outerWidth(),height:h.outerHeight()}:{width:h.width(),height:h.height()},this.originalSize=this._helper?{width:h.outerWidth(),height:h.outerHeight()}:{width:h.width(),height:h.height()},this.originalPosition={left:s,top:a},this.sizeDiff={width:h.outerWidth()-h.width(),height:h.outerHeight()-h.height()},this.originalMousePosition={left:i.pageX,top:i.pageY},this.aspectRatio="number"==typeof r.aspectRatio?r.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=e(".ui-resizable-"+this.axis).css("cursor"),e("body").css("cursor","auto"===n?this.axis+"-resize":n),h.addClass("ui-resizable-resizing"),this._propagate("start",i),!0},_mouseDrag:function(t){var i,s=this.helper,a={},n=this.originalMousePosition,r=this.axis,o=this.position.top,h=this.position.left,l=this.size.width,u=this.size.height,c=t.pageX-n.left||0,d=t.pageY-n.top||0,p=this._change[r];return p?(i=p.apply(this,[t,c,d]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(i=this._updateRatio(i,t)),i=this._respectSize(i,t),this._updateCache(i),this._propagate("resize",t),this.position.top!==o&&(a.top=this.position.top+"px"),this.position.left!==h&&(a.left=this.position.left+"px"),this.size.width!==l&&(a.width=this.size.width+"px"),this.size.height!==u&&(a.height=this.size.height+"px"),s.css(a),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),e.isEmptyObject(a)||this._trigger("resize",t,this.ui()),!1):!1},_mouseStop:function(t){this.resizing=!1;var i,s,a,n,r,o,h,l=this.options,u=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),a=s&&e.ui.hasScroll(i[0],"left")?0:u.sizeDiff.height,n=s?0:u.sizeDiff.width,r={width:u.helper.width()-n,height:u.helper.height()-a},o=parseInt(u.element.css("left"),10)+(u.position.left-u.originalPosition.left)||null,h=parseInt(u.element.css("top"),10)+(u.position.top-u.originalPosition.top)||null,l.animate||this.element.css(e.extend(r,{top:h,left:o})),u.helper.height(u.size.height),u.helper.width(u.size.width),this._helper&&!l.animate&&this._proportionallyResize()),e("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updateVirtualBoundaries:function(e){var t,s,a,n,r,o=this.options;r={minWidth:i(o.minWidth)?o.minWidth:0,maxWidth:i(o.maxWidth)?o.maxWidth:1/0,minHeight:i(o.minHeight)?o.minHeight:0,maxHeight:i(o.maxHeight)?o.maxHeight:1/0},(this._aspectRatio||e)&&(t=r.minHeight*this.aspectRatio,a=r.minWidth/this.aspectRatio,s=r.maxHeight*this.aspectRatio,n=r.maxWidth/this.aspectRatio,t>r.minWidth&&(r.minWidth=t),a>r.minHeight&&(r.minHeight=a),r.maxWidth>s&&(r.maxWidth=s),r.maxHeight>n&&(r.maxHeight=n)),this._vBoundaries=r},_updateCache:function(e){this.offset=this.helper.offset(),i(e.left)&&(this.position.left=e.left),i(e.top)&&(this.position.top=e.top),i(e.height)&&(this.size.height=e.height),i(e.width)&&(this.size.width=e.width)},_updateRatio:function(e){var t=this.position,s=this.size,a=this.axis;return i(e.height)?e.width=e.height*this.aspectRatio:i(e.width)&&(e.height=e.width/this.aspectRatio),"sw"===a&&(e.left=t.left+(s.width-e.width),e.top=null),"nw"===a&&(e.top=t.top+(s.height-e.height),e.left=t.left+(s.width-e.width)),e},_respectSize:function(e){var t=this._vBoundaries,s=this.axis,a=i(e.width)&&t.maxWidth&&t.maxWidth<e.width,n=i(e.height)&&t.maxHeight&&t.maxHeight<e.height,r=i(e.width)&&t.minWidth&&t.minWidth>e.width,o=i(e.height)&&t.minHeight&&t.minHeight>e.height,h=this.originalPosition.left+this.originalSize.width,l=this.position.top+this.size.height,u=/sw|nw|w/.test(s),c=/nw|ne|n/.test(s);return r&&(e.width=t.minWidth),o&&(e.height=t.minHeight),a&&(e.width=t.maxWidth),n&&(e.height=t.maxHeight),r&&u&&(e.left=h-t.minWidth),a&&u&&(e.left=h-t.maxWidth),o&&c&&(e.top=l-t.minHeight),n&&c&&(e.top=l-t.maxHeight),e.width||e.height||e.left||!e.top?e.width||e.height||e.top||!e.left||(e.left=null):e.top=null,e},_proportionallyResize:function(){if(this._proportionallyResizeElements.length){var e,t,i,s,a,n=this.helper||this.element;for(e=0;this._proportionallyResizeElements.length>e;e++){if(a=this._proportionallyResizeElements[e],!this.borderDif)for(this.borderDif=[],i=[a.css("borderTopWidth"),a.css("borderRightWidth"),a.css("borderBottomWidth"),a.css("borderLeftWidth")],s=[a.css("paddingTop"),a.css("paddingRight"),a.css("paddingBottom"),a.css("paddingLeft")],t=0;i.length>t;t++)this.borderDif[t]=(parseInt(i[t],10)||0)+(parseInt(s[t],10)||0);a.css({height:n.height()-this.borderDif[0]-this.borderDif[2]||0,width:n.width()-this.borderDif[1]-this.borderDif[3]||0})}}},_renderProxy:function(){var t=this.element,i=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||e("<div style='overflow:hidden;'></div>"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(e,t){return{width:this.originalSize.width+t}},w:function(e,t){var i=this.originalSize,s=this.originalPosition;return{left:s.left+t,width:i.width-t}},n:function(e,t,i){var s=this.originalSize,a=this.originalPosition;return{top:a.top+i,height:s.height-i}},s:function(e,t,i){return{height:this.originalSize.height+i}},se:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},sw:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,i,s]))},ne:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},nw:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,i,s]))}},_propagate:function(t,i){e.ui.plugin.call(this,t,[i,this.ui()]),"resize"!==t&&this._trigger(t,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),e.ui.plugin.add("resizable","animate",{stop:function(t){var i=e(this).data("ui-resizable"),s=i.options,a=i._proportionallyResizeElements,n=a.length&&/textarea/i.test(a[0].nodeName),r=n&&e.ui.hasScroll(a[0],"left")?0:i.sizeDiff.height,o=n?0:i.sizeDiff.width,h={width:i.size.width-o,height:i.size.height-r},l=parseInt(i.element.css("left"),10)+(i.position.left-i.originalPosition.left)||null,u=parseInt(i.element.css("top"),10)+(i.position.top-i.originalPosition.top)||null;i.element.animate(e.extend(h,u&&l?{top:u,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseInt(i.element.css("width"),10),height:parseInt(i.element.css("height"),10),top:parseInt(i.element.css("top"),10),left:parseInt(i.element.css("left"),10)};a&&a.length&&e(a[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(){var i,s,a,n,r,o,h,l=e(this).data("ui-resizable"),u=l.options,c=l.element,d=u.containment,p=d instanceof e?d.get(0):/parent/.test(d)?c.parent().get(0):d;p&&(l.containerElement=e(p),/document/.test(d)||d===document?(l.containerOffset={left:0,top:0},l.containerPosition={left:0,top:0},l.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}):(i=e(p),s=[],e(["Top","Right","Left","Bottom"]).each(function(e,a){s[e]=t(i.css("padding"+a))}),l.containerOffset=i.offset(),l.containerPosition=i.position(),l.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},a=l.containerOffset,n=l.containerSize.height,r=l.containerSize.width,o=e.ui.hasScroll(p,"left")?p.scrollWidth:r,h=e.ui.hasScroll(p)?p.scrollHeight:n,l.parentData={element:p,left:a.left,top:a.top,width:o,height:h}))},resize:function(t){var i,s,a,n,r=e(this).data("ui-resizable"),o=r.options,h=r.containerOffset,l=r.position,u=r._aspectRatio||t.shiftKey,c={top:0,left:0},d=r.containerElement;d[0]!==document&&/static/.test(d.css("position"))&&(c=h),l.left<(r._helper?h.left:0)&&(r.size.width=r.size.width+(r._helper?r.position.left-h.left:r.position.left-c.left),u&&(r.size.height=r.size.width/r.aspectRatio),r.position.left=o.helper?h.left:0),l.top<(r._helper?h.top:0)&&(r.size.height=r.size.height+(r._helper?r.position.top-h.top:r.position.top),u&&(r.size.width=r.size.height*r.aspectRatio),r.position.top=r._helper?h.top:0),r.offset.left=r.parentData.left+r.position.left,r.offset.top=r.parentData.top+r.position.top,i=Math.abs((r._helper?r.offset.left-c.left:r.offset.left-c.left)+r.sizeDiff.width),s=Math.abs((r._helper?r.offset.top-c.top:r.offset.top-h.top)+r.sizeDiff.height),a=r.containerElement.get(0)===r.element.parent().get(0),n=/relative|absolute/.test(r.containerElement.css("position")),a&&n&&(i-=r.parentData.left),i+r.size.width>=r.parentData.width&&(r.size.width=r.parentData.width-i,u&&(r.size.height=r.size.width/r.aspectRatio)),s+r.size.height>=r.parentData.height&&(r.size.height=r.parentData.height-s,u&&(r.size.width=r.size.height*r.aspectRatio))},stop:function(){var t=e(this).data("ui-resizable"),i=t.options,s=t.containerOffset,a=t.containerPosition,n=t.containerElement,r=e(t.helper),o=r.offset(),h=r.outerWidth()-t.sizeDiff.width,l=r.outerHeight()-t.sizeDiff.height;t._helper&&!i.animate&&/relative/.test(n.css("position"))&&e(this).css({left:o.left-a.left-s.left,width:h,height:l}),t._helper&&!i.animate&&/static/.test(n.css("position"))&&e(this).css({left:o.left-a.left-s.left,width:h,height:l})}}),e.ui.plugin.add("resizable","alsoResize",{start:function(){var t=e(this).data("ui-resizable"),i=t.options,s=function(t){e(t).each(function(){var t=e(this);t.data("ui-resizable-alsoresize",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css("left"),10),top:parseInt(t.css("top"),10)})})};"object"!=typeof i.alsoResize||i.alsoResize.parentNode?s(i.alsoResize):i.alsoResize.length?(i.alsoResize=i.alsoResize[0],s(i.alsoResize)):e.each(i.alsoResize,function(e){s(e)})},resize:function(t,i){var s=e(this).data("ui-resizable"),a=s.options,n=s.originalSize,r=s.originalPosition,o={height:s.size.height-n.height||0,width:s.size.width-n.width||0,top:s.position.top-r.top||0,left:s.position.left-r.left||0},h=function(t,s){e(t).each(function(){var t=e(this),a=e(this).data("ui-resizable-alsoresize"),n={},r=s&&s.length?s:t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(r,function(e,t){var i=(a[t]||0)+(o[t]||0);i&&i>=0&&(n[t]=i||null)}),t.css(n)})};"object"!=typeof a.alsoResize||a.alsoResize.nodeType?h(a.alsoResize):e.each(a.alsoResize,function(e,t){h(e,t)})},stop:function(){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","ghost",{start:function(){var t=e(this).data("ui-resizable"),i=t.options,s=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof i.ghost?i.ghost:""),t.ghost.appendTo(t.helper)},resize:function(){var t=e(this).data("ui-resizable");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=e(this).data("ui-resizable");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(){var t=e(this).data("ui-resizable"),i=t.options,s=t.size,a=t.originalSize,n=t.originalPosition,r=t.axis,o="number"==typeof i.grid?[i.grid,i.grid]:i.grid,h=o[0]||1,l=o[1]||1,u=Math.round((s.width-a.width)/h)*h,c=Math.round((s.height-a.height)/l)*l,d=a.width+u,p=a.height+c,f=i.maxWidth&&d>i.maxWidth,m=i.maxHeight&&p>i.maxHeight,g=i.minWidth&&i.minWidth>d,v=i.minHeight&&i.minHeight>p;i.grid=o,g&&(d+=h),v&&(p+=l),f&&(d-=h),m&&(p-=l),/^(se|s|e)$/.test(r)?(t.size.width=d,t.size.height=p):/^(ne)$/.test(r)?(t.size.width=d,t.size.height=p,t.position.top=n.top-c):/^(sw)$/.test(r)?(t.size.width=d,t.size.height=p,t.position.left=n.left-u):(t.size.width=d,t.size.height=p,t.position.top=n.top-c,t.position.left=n.left-u)}})})(jQuery);(function(e){e.widget("ui.selectable",e.ui.mouse,{version:"1.10.3",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var t,i=this;this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){t=e(i.options.filter,i.element[0]),t.addClass("ui-selectee"),t.each(function(){var t=e(this),i=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:i.left,top:i.top,right:i.left+t.outerWidth(),bottom:i.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=t.addClass("ui-selectee"),this._mouseInit(),this.helper=e("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(t){var i=this,s=this.options;this.opos=[t.pageX,t.pageY],this.options.disabled||(this.selectees=e(s.filter,this.element[0]),this._trigger("start",t),e(s.appendTo).append(this.helper),this.helper.css({left:t.pageX,top:t.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=e.data(this,"selectable-item");s.startselected=!0,t.metaKey||t.ctrlKey||(s.$element.removeClass("ui-selected"),s.selected=!1,s.$element.addClass("ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",t,{unselecting:s.element}))}),e(t.target).parents().addBack().each(function(){var s,a=e.data(this,"selectable-item");return a?(s=!t.metaKey&&!t.ctrlKey||!a.$element.hasClass("ui-selected"),a.$element.removeClass(s?"ui-unselecting":"ui-selected").addClass(s?"ui-selecting":"ui-unselecting"),a.unselecting=!s,a.selecting=s,a.selected=s,s?i._trigger("selecting",t,{selecting:a.element}):i._trigger("unselecting",t,{unselecting:a.element}),!1):undefined}))},_mouseDrag:function(t){if(this.dragged=!0,!this.options.disabled){var i,s=this,a=this.options,n=this.opos[0],r=this.opos[1],o=t.pageX,h=t.pageY;return n>o&&(i=o,o=n,n=i),r>h&&(i=h,h=r,r=i),this.helper.css({left:n,top:r,width:o-n,height:h-r}),this.selectees.each(function(){var i=e.data(this,"selectable-item"),l=!1;i&&i.element!==s.element[0]&&("touch"===a.tolerance?l=!(i.left>o||n>i.right||i.top>h||r>i.bottom):"fit"===a.tolerance&&(l=i.left>n&&o>i.right&&i.top>r&&h>i.bottom),l?(i.selected&&(i.$element.removeClass("ui-selected"),i.selected=!1),i.unselecting&&(i.$element.removeClass("ui-unselecting"),i.unselecting=!1),i.selecting||(i.$element.addClass("ui-selecting"),i.selecting=!0,s._trigger("selecting",t,{selecting:i.element}))):(i.selecting&&((t.metaKey||t.ctrlKey)&&i.startselected?(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.$element.addClass("ui-selected"),i.selected=!0):(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.startselected&&(i.$element.addClass("ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",t,{unselecting:i.element}))),i.selected&&(t.metaKey||t.ctrlKey||i.startselected||(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",t,{unselecting:i.element})))))}),!1}},_mouseStop:function(t){var i=this;return this.dragged=!1,e(".ui-unselecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",t,{unselected:s.element})}),e(".ui-selecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-selecting").addClass("ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",t,{selected:s.element})}),this._trigger("stop",t),this.helper.remove(),!1}})})(jQuery);(function(e){function t(e,t,i){return e>t&&t+i>e}function i(e){return/left|right/.test(e.css("float"))||/inline|table-cell/.test(e.css("display"))}e.widget("ui.sortable",e.ui.mouse,{version:"1.10.3",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_create:function(){var e=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?"x"===e.axis||i(this.items[0].item):!1,this.offset=this.element.offset(),this._mouseInit(),this.ready=!0},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_setOption:function(t,i){"disabled"===t?(this.options[t]=i,this.widget().toggleClass("ui-sortable-disabled",!!i)):e.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(t,i){var s=null,a=!1,n=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(t),e(t.target).parents().each(function(){return e.data(this,n.widgetName+"-item")===n?(s=e(this),!1):undefined}),e.data(t.target,n.widgetName+"-item")===n&&(s=e(t.target)),s?!this.options.handle||i||(e(this.options.handle,s).find("*").addBack().each(function(){this===t.target&&(a=!0)}),a)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(t,i,s){var a,n,r=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,r.cursorAt&&this._adjustOffsetFromHelper(r.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),r.containment&&this._setContainment(),r.cursor&&"auto"!==r.cursor&&(n=this.document.find("body"),this.storedCursor=n.css("cursor"),n.css("cursor",r.cursor),this.storedStylesheet=e("<style>*{ cursor: "+r.cursor+" !important; }</style>").appendTo(n)),r.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",r.opacity)),r.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",r.zIndex)),this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(a=this.containers.length-1;a>=0;a--)this.containers[a]._trigger("activate",t,this._uiHash(this));return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!r.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){var i,s,a,n,r=this.options,o=!1;for(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<r.scrollSensitivity?this.scrollParent[0].scrollTop=o=this.scrollParent[0].scrollTop+r.scrollSpeed:t.pageY-this.overflowOffset.top<r.scrollSensitivity&&(this.scrollParent[0].scrollTop=o=this.scrollParent[0].scrollTop-r.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<r.scrollSensitivity?this.scrollParent[0].scrollLeft=o=this.scrollParent[0].scrollLeft+r.scrollSpeed:t.pageX-this.overflowOffset.left<r.scrollSensitivity&&(this.scrollParent[0].scrollLeft=o=this.scrollParent[0].scrollLeft-r.scrollSpeed)):(t.pageY-e(document).scrollTop()<r.scrollSensitivity?o=e(document).scrollTop(e(document).scrollTop()-r.scrollSpeed):e(window).height()-(t.pageY-e(document).scrollTop())<r.scrollSensitivity&&(o=e(document).scrollTop(e(document).scrollTop()+r.scrollSpeed)),t.pageX-e(document).scrollLeft()<r.scrollSensitivity?o=e(document).scrollLeft(e(document).scrollLeft()-r.scrollSpeed):e(window).width()-(t.pageX-e(document).scrollLeft())<r.scrollSensitivity&&(o=e(document).scrollLeft(e(document).scrollLeft()+r.scrollSpeed))),o!==!1&&e.ui.ddmanager&&!r.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],a=s.item[0],n=this._intersectsWithPointer(s),n&&s.instance===this.currentContainer&&a!==this.currentItem[0]&&this.placeholder[1===n?"next":"prev"]()[0]!==a&&!e.contains(this.placeholder[0],a)&&("semi-dynamic"===this.options.type?!e.contains(this.element[0],a):!0)){if(this.direction=1===n?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(t,s),this._trigger("change",t,this._uiHash());break}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,i){if(t){if(e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t),this.options.revert){var s=this,a=this.placeholder.offset(),n=this.options.axis,r={};n&&"x"!==n||(r.left=a.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollLeft)),n&&"y"!==n||(r.top=a.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,e(this.helper).animate(r,parseInt(this.options.revert,10)||500,function(){s._clear(t)})}else this._clear(t,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},e(i).each(function(){var i=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[\-=_](.+)/);i&&s.push((t.key||i[1]+"[]")+"="+(t.key&&t.expression?i[1]:i[2]))}),!s.length&&t.key&&s.push(t.key+"="),s.join("&")},toArray:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},i.each(function(){s.push(e(t.item||this).attr(t.attribute||"id")||"")}),s},_intersectsWith:function(e){var t=this.positionAbs.left,i=t+this.helperProportions.width,s=this.positionAbs.top,a=s+this.helperProportions.height,n=e.left,r=n+e.width,o=e.top,h=o+e.height,l=this.offset.click.top,u=this.offset.click.left,c="x"===this.options.axis||s+l>o&&h>s+l,d="y"===this.options.axis||t+u>n&&r>t+u,p=c&&d;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?p:t+this.helperProportions.width/2>n&&r>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>o&&h>a-this.helperProportions.height/2},_intersectsWithPointer:function(e){var i="x"===this.options.axis||t(this.positionAbs.top+this.offset.click.top,e.top,e.height),s="y"===this.options.axis||t(this.positionAbs.left+this.offset.click.left,e.left,e.width),a=i&&s,n=this._getDragVerticalDirection(),r=this._getDragHorizontalDirection();return a?this.floating?r&&"right"===r||"down"===n?2:1:n&&("down"===n?2:1):!1},_intersectsWithSides:function(e){var i=t(this.positionAbs.top+this.offset.click.top,e.top+e.height/2,e.height),s=t(this.positionAbs.left+this.offset.click.left,e.left+e.width/2,e.width),a=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&s||"left"===n&&!s:a&&("down"===a&&i||"up"===a&&!i)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return 0!==e&&(e>0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return 0!==e&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor===String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){var i,s,a,n,r=[],o=[],h=this._connectWith();if(h&&t)for(i=h.length-1;i>=0;i--)for(a=e(h[i]),s=a.length-1;s>=0;s--)n=e.data(a[s],this.widgetFullName),n&&n!==this&&!n.options.disabled&&o.push([e.isFunction(n.options.items)?n.options.items.call(n.element):e(n.options.items,n.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),n]);for(o.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),i=o.length-1;i>=0;i--)o[i][0].each(function(){r.push(this)});return e(r)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var i=0;t.length>i;i++)if(t[i]===e.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var i,s,a,n,r,o,h,l,u=this.items,c=[[e.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):e(this.options.items,this.element),this]],d=this._connectWith();if(d&&this.ready)for(i=d.length-1;i>=0;i--)for(a=e(d[i]),s=a.length-1;s>=0;s--)n=e.data(a[s],this.widgetFullName),n&&n!==this&&!n.options.disabled&&(c.push([e.isFunction(n.options.items)?n.options.items.call(n.element[0],t,{item:this.currentItem}):e(n.options.items,n.element),n]),this.containers.push(n));for(i=c.length-1;i>=0;i--)for(r=c[i][1],o=c[i][0],s=0,l=o.length;l>s;s++)h=e(o[s]),h.data(this.widgetName+"-item",r),u.push({item:h,instance:r,width:0,height:0,left:0,top:0})},refreshPositions:function(t){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,a,n;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(a=this.options.toleranceElement?e(this.options.toleranceElement,s.item):s.item,t||(s.width=a.outerWidth(),s.height=a.outerHeight()),n=a.offset(),s.left=n.left,s.top=n.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)n=this.containers[i].element.offset(),this.containers[i].containerCache.left=n.left,this.containers[i].containerCache.top=n.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(t){t=t||this;var i,s=t.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=t.currentItem[0].nodeName.toLowerCase(),a=e("<"+s+">",t.document[0]).addClass(i||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tr"===s?t.currentItem.children().each(function(){e("<td>&#160;</td>",t.document[0]).attr("colspan",e(this).attr("colspan")||1).appendTo(a)}):"img"===s&&a.attr("src",t.currentItem.attr("src")),i||a.css("visibility","hidden"),a},update:function(e,a){(!i||s.forcePlaceholderSize)&&(a.height()||a.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),a.width()||a.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10)))}}),t.placeholder=e(s.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),s.placeholder.update(t,t.placeholder)},_contactContainers:function(s){var a,n,r,o,h,l,u,c,d,p,f=null,m=null;for(a=this.containers.length-1;a>=0;a--)if(!e.contains(this.currentItem[0],this.containers[a].element[0]))if(this._intersectsWith(this.containers[a].containerCache)){if(f&&e.contains(this.containers[a].element[0],f.element[0]))continue;f=this.containers[a],m=a}else this.containers[a].containerCache.over&&(this.containers[a]._trigger("out",s,this._uiHash(this)),this.containers[a].containerCache.over=0);if(f)if(1===this.containers.length)this.containers[m].containerCache.over||(this.containers[m]._trigger("over",s,this._uiHash(this)),this.containers[m].containerCache.over=1);else{for(r=1e4,o=null,p=f.floating||i(this.currentItem),h=p?"left":"top",l=p?"width":"height",u=this.positionAbs[h]+this.offset.click[h],n=this.items.length-1;n>=0;n--)e.contains(this.containers[m].element[0],this.items[n].item[0])&&this.items[n].item[0]!==this.currentItem[0]&&(!p||t(this.positionAbs.top+this.offset.click.top,this.items[n].top,this.items[n].height))&&(c=this.items[n].item.offset()[h],d=!1,Math.abs(c-u)>Math.abs(c+this.items[n][l]-u)&&(d=!0,c+=this.items[n][l]),r>Math.abs(c-u)&&(r=Math.abs(c-u),o=this.items[n],this.direction=d?"up":"down"));if(!o&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[m])return;o?this._rearrange(s,o,null,!0):this._rearrange(s,null,this.containers[m].element,!0),this._trigger("change",s,this._uiHash()),this.containers[m]._trigger("change",s,this._uiHash(this)),this.currentContainer=this.containers[m],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[m]._trigger("over",s,this._uiHash(this)),this.containers[m].containerCache.over=1}},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper)?e(i.helper.apply(this.element[0],[t,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||e("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&e.ui.ie)&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,a=this.options;"parent"===a.containment&&(a.containment=this.helper[0].parentNode),("document"===a.containment||"window"===a.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,e("document"===a.containment?document:window).width()-this.helperProportions.width-this.margins.left,(e("document"===a.containment?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(a.containment)||(t=e(a.containment)[0],i=e(a.containment).offset(),s="hidden"!==e(t).css("overflow"),this.containment=[i.left+(parseInt(e(t).css("borderLeftWidth"),10)||0)+(parseInt(e(t).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(e(t).css("borderTopWidth"),10)||0)+(parseInt(e(t).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(e(t).css("borderLeftWidth"),10)||0)-(parseInt(e(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(e(t).css("borderTopWidth"),10)||0)-(parseInt(e(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,i){i||(i=this.position);var s="absolute"===t?1:-1,a="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,n=/(html|body)/i.test(a[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():n?0:a.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():n?0:a.scrollLeft())*s}},_generatePosition:function(t){var i,s,a=this.options,n=t.pageX,r=t.pageY,o="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(o[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==document&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(n=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(r=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(n=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(r=this.containment[3]+this.offset.click.top)),a.grid&&(i=this.originalPageY+Math.round((r-this.originalPageY)/a.grid[1])*a.grid[1],r=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-a.grid[1]:i+a.grid[1]:i,s=this.originalPageX+Math.round((n-this.originalPageX)/a.grid[0])*a.grid[0],n=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-a.grid[0]:s+a.grid[0]:s)),{top:r-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:o.scrollTop()),left:n-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:o.scrollLeft())}},_rearrange:function(e,t,i,s){i?i[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var a=this.counter;this._delay(function(){a===this.counter&&this.refreshPositions(!s)})},_clear:function(e,t){this.reverting=!1;var i,s=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(i in this._storedCSS)("auto"===this._storedCSS[i]||"static"===this._storedCSS[i])&&(this._storedCSS[i]="");this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!t&&s.push(function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||t||s.push(function(e){this._trigger("update",e,this._uiHash())}),this!==this.currentContainer&&(t||(s.push(function(e){this._trigger("remove",e,this._uiHash())}),s.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),s.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),i=this.containers.length-1;i>=0;i--)t||s.push(function(e){return function(t){e._trigger("deactivate",t,this._uiHash(this))}}.call(this,this.containers[i])),this.containers[i].containerCache.over&&(s.push(function(e){return function(t){e._trigger("out",t,this._uiHash(this))}}.call(this,this.containers[i])),this.containers[i].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,this.cancelHelperRemoval){if(!t){for(this._trigger("beforeStop",e,this._uiHash()),i=0;s.length>i;i++)s[i].call(this,e);this._trigger("stop",e,this._uiHash())}return this.fromOutside=!1,!1}if(t||this._trigger("beforeStop",e,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null,!t){for(i=0;s.length>i;i++)s[i].call(this,e);this._trigger("stop",e,this._uiHash())}return this.fromOutside=!1,!0},_trigger:function(){e.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(t){var i=t||this;return{helper:i.helper,placeholder:i.placeholder||e([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:t?t.element:null}}})})(jQuery);(function(e){var t=0;e.widget("ui.autocomplete",{version:"1.10.3",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},pending:0,_create:function(){var t,i,a,s=this.element[0].nodeName.toLowerCase(),n="textarea"===s,r="input"===s;this.isMultiLine=n?!0:r?!1:this.element.prop("isContentEditable"),this.valueMethod=this.element[n||r?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(s){if(this.element.prop("readOnly"))return t=!0,a=!0,i=!0,undefined;t=!1,a=!1,i=!1;var n=e.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:t=!0,this._move("previousPage",s);break;case n.PAGE_DOWN:t=!0,this._move("nextPage",s);break;case n.UP:t=!0,this._keyEvent("previous",s);break;case n.DOWN:t=!0,this._keyEvent("next",s);break;case n.ENTER:case n.NUMPAD_ENTER:this.menu.active&&(t=!0,s.preventDefault(),this.menu.select(s));break;case n.TAB:this.menu.active&&this.menu.select(s);break;case n.ESCAPE:this.menu.element.is(":visible")&&(this._value(this.term),this.close(s),s.preventDefault());break;default:i=!0,this._searchTimeout(s)}},keypress:function(a){if(t)return t=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&a.preventDefault(),undefined;if(!i){var s=e.ui.keyCode;switch(a.keyCode){case s.PAGE_UP:this._move("previousPage",a);break;case s.PAGE_DOWN:this._move("nextPage",a);break;case s.UP:this._keyEvent("previous",a);break;case s.DOWN:this._keyEvent("next",a)}}},input:function(e){return a?(a=!1,e.preventDefault(),undefined):(this._searchTimeout(e),undefined)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,undefined):(clearTimeout(this.searching),this.close(e),this._change(e),undefined)}}),this._initSource(),this.menu=e("<ul>").addClass("ui-autocomplete ui-front").appendTo(this._appendTo()).menu({role:null}).hide().data("ui-menu"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var i=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(a){a.target===t.element[0]||a.target===i||e.contains(i,a.target)||t.close()})})},menufocus:function(t,i){if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)}),undefined;var a=i.item.data("ui-autocomplete-item");!1!==this._trigger("focus",t,{item:a})?t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(a.value):this.liveRegion.text(a.value)},menuselect:function(e,t){var i=t.item.data("ui-autocomplete-item"),a=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=a,this._delay(function(){this.previous=a,this.selectedItem=i})),!1!==this._trigger("select",e,{item:i})&&this._value(i.value),this.term=this._value(),this.close(e),this.selectedItem=i}}),this.liveRegion=e("<span>",{role:"status","aria-live":"polite"}).addClass("ui-helper-hidden-accessible").insertBefore(this.element),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),"source"===e&&this._initSource(),"appendTo"===e&&this.menu.element.appendTo(this._appendTo()),"disabled"===e&&t&&this.xhr&&this.xhr.abort()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_initSource:function(){var t,i,a=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(i,a){a(e.ui.autocomplete.filter(t,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(t,s){a.xhr&&a.xhr.abort(),a.xhr=e.ajax({url:i,data:t,dataType:"json",success:function(e){s(e)},error:function(){s([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){this.term!==this._value()&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){return e=null!=e?e:this._value(),this.term=this._value(),e.length<this.options.minLength?this.close(t):this._trigger("search",t)!==!1?this._search(e):undefined},_search:function(e){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var e=this,i=++t;return function(a){i===t&&e.__response(a),e.pending--,e.pending||e.element.removeClass("ui-autocomplete-loading")}},__response:function(e){e&&(e=this._normalize(e)),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:e.map(t,function(t){return"string"==typeof t?{label:t,value:t}:e.extend({label:t.label||t.value,value:t.value||t.label},t)})},_suggest:function(t){var i=this.menu.element.empty();this._renderMenu(i,t),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(e.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(t,i){var a=this;e.each(i,function(e,i){a._renderItemData(t,i)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,i){return e("<li>").append(e("<a>").text(i.label)).appendTo(t)},_move:function(e,t){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)?(this._value(this.term),this.menu.blur(),undefined):(this.menu[e](t),undefined):(this.search(null,t),undefined)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(e,t),t.preventDefault())}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,i){var a=RegExp(e.ui.autocomplete.escapeRegex(i),"i");return e.grep(t,function(e){return a.test(e.label||e.value||e)})}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var t;this._superApply(arguments),this.options.disabled||this.cancelSearch||(t=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.text(t))}})})(jQuery);(function(e){e.widget("ui.menu",{version:"1.10.3",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content ui-corner-all").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}).bind("click"+this.eventNamespace,e.proxy(function(e){this.options.disabled&&e.preventDefault()},this)),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item > a":function(e){e.preventDefault()},"click .ui-state-disabled > a":function(e){e.preventDefault()},"click .ui-menu-item:has(a)":function(t){var i=e(t.target).closest(".ui-menu-item");!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.mouseHandled=!0,this.select(t),i.has(".ui-menu").length?this.expand(t):this.element.is(":focus")||(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){var i=e(t.currentTarget);i.siblings().children(".ui-state-active").removeClass("ui-state-active"),this.focus(t,i)},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var i=this.active||this.element.children(".ui-menu-item").eq(0);t||this.focus(e,i)},blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){e(t.target).closest(".ui-menu").length||this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeClass("ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").children("a").removeUniqueId().removeClass("ui-corner-all ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var t=e(this);t.data("ui-menu-submenu-carat")&&t.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(t){function i(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}var s,a,n,r,o,h=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:h=!1,a=this.previousFilter||"",n=String.fromCharCode(t.keyCode),r=!1,clearTimeout(this.filterTimer),n===a?r=!0:n=a+n,o=RegExp("^"+i(n),"i"),s=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())}),s=r&&-1!==s.index(this.active.next())?this.active.nextAll(".ui-menu-item"):s,s.length||(n=String.fromCharCode(t.keyCode),o=RegExp("^"+i(n),"i"),s=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())})),s.length?(this.focus(t,s),s.length>1?(this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter):delete this.previousFilter}h&&t.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.children("a[aria-haspopup='true']").length?this.expand(e):this.select(e))},refresh:function(){var t,i=this.options.icons.submenu,s=this.element.find(this.options.menus);s.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-corner-all").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=e(this),s=t.prev("a"),a=e("<span>").addClass("ui-menu-icon ui-icon "+i).data("ui-menu-submenu-carat",!0);s.attr("aria-haspopup","true").prepend(a),t.attr("aria-labelledby",s.attr("id"))}),t=s.add(this.element),t.children(":not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","presentation").children("a").uniqueId().addClass("ui-corner-all").attr({tabIndex:-1,role:this._itemRole()}),t.children(":not(.ui-menu-item)").each(function(){var t=e(this);/[^\-\u2014\u2013\s]/.test(t.text())||t.addClass("ui-widget-content ui-menu-divider")}),t.children(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(e,t){"icons"===e&&this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(t.submenu),this._super(e,t)},focus:function(e,t){var i,s;this.blur(e,e&&"focus"===e.type),this._scrollIntoView(t),this.active=t.first(),s=this.active.children("a").addClass("ui-state-focus"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),this.active.parent().closest(".ui-menu-item").children("a:first").addClass("ui-state-active"),e&&"keydown"===e.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=t.children(".ui-menu"),i.length&&/^mouse/.test(e.type)&&this._startOpening(i),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var i,s,a,n,r,o;this._hasScroll()&&(i=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,a=t.offset().top-this.activeMenu.offset().top-i-s,n=this.activeMenu.scrollTop(),r=this.activeMenu.height(),o=t.height(),0>a?this.activeMenu.scrollTop(n+a):a+o>r&&this.activeMenu.scrollTop(n+a-r+o))},blur:function(e,t){t||clearTimeout(this.timer),this.active&&(this.active.children("a").removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active}))},_startOpening:function(e){clearTimeout(this.timer),"true"===e.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(e)},this.delay))},_open:function(t){var i=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(t,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(t),this.activeMenu=s},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find("a.ui-state-active").removeClass("ui-state-active")},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").children(".ui-menu-item").first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(e,t,i){var s;this.active&&(s="first"===e||"last"===e?this.active["first"===e?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[e+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.children(".ui-menu-item")[t]()),this.focus(i,s)},nextPage:function(t){var i,s,a;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,a=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=e(this),0>i.offset().top-s-a}),this.focus(t,i)):this.focus(t,this.activeMenu.children(".ui-menu-item")[this.active?"last":"first"]())),undefined):(this.next(t),undefined)},previousPage:function(t){var i,s,a;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,a=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=e(this),i.offset().top-s+a>0}),this.focus(t,i)):this.focus(t,this.activeMenu.children(".ui-menu-item").first())),undefined):(this.next(t),undefined)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||e(t.target).closest(".ui-menu-item");var i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,i)}})})(jQuery);(function(e,t){var i="ui-effects-";e.effects={effect:{}},function(e,t){function i(e,t,i){var s=c[t.type]||{};return null==e?i||!t.def?null:t.def:(e=s.floor?~~e:parseFloat(e),isNaN(e)?t.def:s.mod?(e+s.mod)%s.mod:0>e?0:e>s.max?s.max:e)}function s(i){var s=l(),a=s._rgba=[];return i=i.toLowerCase(),f(h,function(e,n){var r,o=n.re.exec(i),h=o&&n.parse(o),l=n.space||"rgba";return h?(r=s[l](h),s[u[l].cache]=r[u[l].cache],a=s._rgba=r._rgba,!1):t}),a.length?("0,0,0,0"===a.join()&&e.extend(a,n.transparent),s):n[i]}function a(e,t,i){return i=(i+1)%1,1>6*i?e+6*(t-e)*i:1>2*i?t:2>3*i?e+6*(t-e)*(2/3-i):e}var n,r="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",o=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[2.55*e[1],2.55*e[2],2.55*e[3],e[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(e){return[e[1],e[2]/100,e[3]/100,e[4]]}}],l=e.Color=function(t,i,s,a){return new e.Color.fn.parse(t,i,s,a)},u={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},c={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},d=l.support={},p=e("<p>")[0],f=e.each;p.style.cssText="background-color:rgba(1,1,1,.5)",d.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(u,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),l.fn=e.extend(l.prototype,{parse:function(a,r,o,h){if(a===t)return this._rgba=[null,null,null,null],this;(a.jquery||a.nodeType)&&(a=e(a).css(r),r=t);var c=this,d=e.type(a),p=this._rgba=[];return r!==t&&(a=[a,r,o,h],d="array"),"string"===d?this.parse(s(a)||n._default):"array"===d?(f(u.rgba.props,function(e,t){p[t.idx]=i(a[t.idx],t)}),this):"object"===d?(a instanceof l?f(u,function(e,t){a[t.cache]&&(c[t.cache]=a[t.cache].slice())}):f(u,function(t,s){var n=s.cache;f(s.props,function(e,t){if(!c[n]&&s.to){if("alpha"===e||null==a[e])return;c[n]=s.to(c._rgba)}c[n][t.idx]=i(a[e],t,!0)}),c[n]&&0>e.inArray(null,c[n].slice(0,3))&&(c[n][3]=1,s.from&&(c._rgba=s.from(c[n])))}),this):t},is:function(e){var i=l(e),s=!0,a=this;return f(u,function(e,n){var r,o=i[n.cache];return o&&(r=a[n.cache]||n.to&&n.to(a._rgba)||[],f(n.props,function(e,i){return null!=o[i.idx]?s=o[i.idx]===r[i.idx]:t})),s}),s},_space:function(){var e=[],t=this;return f(u,function(i,s){t[s.cache]&&e.push(i)}),e.pop()},transition:function(e,t){var s=l(e),a=s._space(),n=u[a],r=0===this.alpha()?l("transparent"):this,o=r[n.cache]||n.to(r._rgba),h=o.slice();return s=s[n.cache],f(n.props,function(e,a){var n=a.idx,r=o[n],l=s[n],u=c[a.type]||{};null!==l&&(null===r?h[n]=l:(u.mod&&(l-r>u.mod/2?r+=u.mod:r-l>u.mod/2&&(r-=u.mod)),h[n]=i((l-r)*t+r,a)))}),this[a](h)},blend:function(t){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),a=l(t)._rgba;return l(e.map(i,function(e,t){return(1-s)*a[t]+s*e}))},toRgbaString:function(){var t="rgba(",i=e.map(this._rgba,function(e,t){return null==e?t>2?1:0:e});return 1===i[3]&&(i.pop(),t="rgb("),t+i.join()+")"},toHslaString:function(){var t="hsla(",i=e.map(this.hsla(),function(e,t){return null==e&&(e=t>2?1:0),t&&3>t&&(e=Math.round(100*e)+"%"),e});return 1===i[3]&&(i.pop(),t="hsl("),t+i.join()+")"},toHexString:function(t){var i=this._rgba.slice(),s=i.pop();return t&&i.push(~~(255*s)),"#"+e.map(i,function(e){return e=(e||0).toString(16),1===e.length?"0"+e:e}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,u.hsla.to=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t,i,s=e[0]/255,a=e[1]/255,n=e[2]/255,r=e[3],o=Math.max(s,a,n),h=Math.min(s,a,n),l=o-h,u=o+h,c=.5*u;return t=h===o?0:s===o?60*(a-n)/l+360:a===o?60*(n-s)/l+120:60*(s-a)/l+240,i=0===l?0:.5>=c?l/u:l/(2-u),[Math.round(t)%360,i,c,null==r?1:r]},u.hsla.from=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t=e[0]/360,i=e[1],s=e[2],n=e[3],r=.5>=s?s*(1+i):s+i-s*i,o=2*s-r;return[Math.round(255*a(o,r,t+1/3)),Math.round(255*a(o,r,t)),Math.round(255*a(o,r,t-1/3)),n]},f(u,function(s,a){var n=a.props,r=a.cache,h=a.to,u=a.from;l.fn[s]=function(s){if(h&&!this[r]&&(this[r]=h(this._rgba)),s===t)return this[r].slice();var a,o=e.type(s),c="array"===o||"object"===o?s:arguments,d=this[r].slice();return f(n,function(e,t){var s=c["object"===o?e:t.idx];null==s&&(s=d[t.idx]),d[t.idx]=i(s,t)}),u?(a=l(u(d)),a[r]=d,a):l(d)},f(n,function(t,i){l.fn[t]||(l.fn[t]=function(a){var n,r=e.type(a),h="alpha"===t?this._hsla?"hsla":"rgba":s,l=this[h](),u=l[i.idx];return"undefined"===r?u:("function"===r&&(a=a.call(this,u),r=e.type(a)),null==a&&i.empty?this:("string"===r&&(n=o.exec(a),n&&(a=u+parseFloat(n[2])*("+"===n[1]?1:-1))),l[i.idx]=a,this[h](l)))})})}),l.hook=function(t){var i=t.split(" ");f(i,function(t,i){e.cssHooks[i]={set:function(t,a){var n,r,o="";if("transparent"!==a&&("string"!==e.type(a)||(n=s(a)))){if(a=l(n||a),!d.rgba&&1!==a._rgba[3]){for(r="backgroundColor"===i?t.parentNode:t;(""===o||"transparent"===o)&&r&&r.style;)try{o=e.css(r,"backgroundColor"),r=r.parentNode}catch(h){}a=a.blend(o&&"transparent"!==o?o:"_default")}a=a.toRgbaString()}try{t.style[i]=a}catch(h){}}},e.fx.step[i]=function(t){t.colorInit||(t.start=l(t.elem,i),t.end=l(t.end),t.colorInit=!0),e.cssHooks[i].set(t.elem,t.start.transition(t.end,t.pos))}})},l.hook(r),e.cssHooks.borderColor={expand:function(e){var t={};return f(["Top","Right","Bottom","Left"],function(i,s){t["border"+s+"Color"]=e}),t}},n=e.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(jQuery),function(){function i(t){var i,s,a=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,n={};if(a&&a.length&&a[0]&&a[a[0]])for(s=a.length;s--;)i=a[s],"string"==typeof a[i]&&(n[e.camelCase(i)]=a[i]);else for(i in a)"string"==typeof a[i]&&(n[i]=a[i]);return n}function s(t,i){var s,a,r={};for(s in i)a=i[s],t[s]!==a&&(n[s]||(e.fx.step[s]||!isNaN(parseFloat(a)))&&(r[s]=a));return r}var a=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,i){e.fx.step[i]=function(e){("none"!==e.end&&!e.setAttr||1===e.pos&&!e.setAttr)&&(jQuery.style(e.elem,i,e.end),e.setAttr=!0)}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e.effects.animateClass=function(t,n,r,o){var h=e.speed(n,r,o);return this.queue(function(){var n,r=e(this),o=r.attr("class")||"",l=h.children?r.find("*").addBack():r;l=l.map(function(){var t=e(this);return{el:t,start:i(this)}}),n=function(){e.each(a,function(e,i){t[i]&&r[i+"Class"](t[i])})},n(),l=l.map(function(){return this.end=i(this.el[0]),this.diff=s(this.start,this.end),this}),r.attr("class",o),l=l.map(function(){var t=this,i=e.Deferred(),s=e.extend({},h,{queue:!1,complete:function(){i.resolve(t)}});return this.el.animate(this.diff,s),i.promise()}),e.when.apply(e,l.get()).done(function(){n(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),h.complete.call(r[0])})})},e.fn.extend({addClass:function(t){return function(i,s,a,n){return s?e.effects.animateClass.call(this,{add:i},s,a,n):t.apply(this,arguments)}}(e.fn.addClass),removeClass:function(t){return function(i,s,a,n){return arguments.length>1?e.effects.animateClass.call(this,{remove:i},s,a,n):t.apply(this,arguments)}}(e.fn.removeClass),toggleClass:function(i){return function(s,a,n,r,o){return"boolean"==typeof a||a===t?n?e.effects.animateClass.call(this,a?{add:s}:{remove:s},n,r,o):i.apply(this,arguments):e.effects.animateClass.call(this,{toggle:s},a,n,r)}}(e.fn.toggleClass),switchClass:function(t,i,s,a,n){return e.effects.animateClass.call(this,{add:i,remove:t},s,a,n)}})}(),function(){function s(t,i,s,a){return e.isPlainObject(t)&&(i=t,t=t.effect),t={effect:t},null==i&&(i={}),e.isFunction(i)&&(a=i,s=null,i={}),("number"==typeof i||e.fx.speeds[i])&&(a=s,s=i,i={}),e.isFunction(s)&&(a=s,s=null),i&&e.extend(t,i),s=s||i.duration,t.duration=e.fx.off?0:"number"==typeof s?s:s in e.fx.speeds?e.fx.speeds[s]:e.fx.speeds._default,t.complete=a||i.complete,t}function a(t){return!t||"number"==typeof t||e.fx.speeds[t]?!0:"string"!=typeof t||e.effects.effect[t]?e.isFunction(t)?!0:"object"!=typeof t||t.effect?!1:!0:!0}e.extend(e.effects,{version:"1.10.3",save:function(e,t){for(var s=0;t.length>s;s++)null!==t[s]&&e.data(i+t[s],e[0].style[t[s]])},restore:function(e,s){var a,n;for(n=0;s.length>n;n++)null!==s[n]&&(a=e.data(i+s[n]),a===t&&(a=""),e.css(s[n],a))},setMode:function(e,t){return"toggle"===t&&(t=e.is(":hidden")?"show":"hide"),t},getBaseline:function(e,t){var i,s;switch(e[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=e[0]/t.height}switch(e[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=e[1]/t.width}return{x:s,y:i}},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var i={width:t.outerWidth(!0),height:t.outerHeight(!0),"float":t.css("float")},s=e("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),a={width:t.width(),height:t.height()},n=document.activeElement;try{n.id}catch(r){n=document.body}return t.wrap(s),(t[0]===n||e.contains(t[0],n))&&e(n).focus(),s=t.parent(),"static"===t.css("position")?(s.css({position:"relative"}),t.css({position:"relative"})):(e.extend(i,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,s){i[s]=t.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(a),s.css(i).show()},removeWrapper:function(t){var i=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===i||e.contains(t[0],i))&&e(i).focus()),t},setTransition:function(t,i,s,a){return a=a||{},e.each(i,function(e,i){var n=t.cssUnit(i);n[0]>0&&(a[i]=n[0]*s+n[1])}),a}}),e.fn.extend({effect:function(){function t(t){function s(){e.isFunction(n)&&n.call(a[0]),e.isFunction(t)&&t()}var a=e(this),n=i.complete,o=i.mode;(a.is(":hidden")?"hide"===o:"show"===o)?(a[o](),s()):r.call(a[0],i,s)}var i=s.apply(this,arguments),a=i.mode,n=i.queue,r=e.effects.effect[i.effect];return e.fx.off||!r?a?this[a](i.duration,i.complete):this.each(function(){i.complete&&i.complete.call(this)}):n===!1?this.each(t):this.queue(n||"fx",t)},show:function(e){return function(t){if(a(t))return e.apply(this,arguments);var i=s.apply(this,arguments);return i.mode="show",this.effect.call(this,i)}}(e.fn.show),hide:function(e){return function(t){if(a(t))return e.apply(this,arguments);var i=s.apply(this,arguments);return i.mode="hide",this.effect.call(this,i)}}(e.fn.hide),toggle:function(e){return function(t){if(a(t)||"boolean"==typeof t)return e.apply(this,arguments);var i=s.apply(this,arguments);return i.mode="toggle",this.effect.call(this,i)}}(e.fn.toggle),cssUnit:function(t){var i=this.css(t),s=[];return e.each(["em","px","%","pt"],function(e,t){i.indexOf(t)>0&&(s=[parseFloat(i),t])}),s}})}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,i){t[i]=function(t){return Math.pow(t,e+2)}}),e.extend(t,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return 0===e||1===e?e:-Math.pow(2,8*(e-1))*Math.sin((80*(e-1)-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){for(var t,i=4;((t=Math.pow(2,--i))-1)/11>e;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*t-2)/22-e,2)}}),e.each(t,function(t,i){e.easing["easeIn"+t]=i,e.easing["easeOut"+t]=function(e){return 1-i(1-e)},e.easing["easeInOut"+t]=function(e){return.5>e?i(2*e)/2:1-i(-2*e+2)/2}})}()})(jQuery);(function(e){var t=/up|down|vertical/,i=/up|left|vertical|horizontal/;e.effects.effect.blind=function(a,s){var n,r,o,l=e(this),h=["position","top","bottom","left","right","height","width"],u=e.effects.setMode(l,a.mode||"hide"),d=a.direction||"up",c=t.test(d),p=c?"height":"width",f=c?"top":"left",m=i.test(d),g={},v="show"===u;l.parent().is(".ui-effects-wrapper")?e.effects.save(l.parent(),h):e.effects.save(l,h),l.show(),n=e.effects.createWrapper(l).css({overflow:"hidden"}),r=n[p](),o=parseFloat(n.css(f))||0,g[p]=v?r:0,m||(l.css(c?"bottom":"right",0).css(c?"top":"left","auto").css({position:"absolute"}),g[f]=v?o:r+o),v&&(n.css(p,0),m||n.css(f,o+r)),n.animate(g,{duration:a.duration,easing:a.easing,queue:!1,complete:function(){"hide"===u&&l.hide(),e.effects.restore(l,h),e.effects.removeWrapper(l),s()}})}})(jQuery);(function(e){e.effects.effect.bounce=function(t,i){var a,s,n,r=e(this),o=["position","top","bottom","left","right","height","width"],l=e.effects.setMode(r,t.mode||"effect"),h="hide"===l,u="show"===l,d=t.direction||"up",c=t.distance,p=t.times||5,f=2*p+(u||h?1:0),m=t.duration/f,g=t.easing,v="up"===d||"down"===d?"top":"left",y="up"===d||"left"===d,b=r.queue(),_=b.length;for((u||h)&&o.push("opacity"),e.effects.save(r,o),r.show(),e.effects.createWrapper(r),c||(c=r["top"===v?"outerHeight":"outerWidth"]()/3),u&&(n={opacity:1},n[v]=0,r.css("opacity",0).css(v,y?2*-c:2*c).animate(n,m,g)),h&&(c/=Math.pow(2,p-1)),n={},n[v]=0,a=0;p>a;a++)s={},s[v]=(y?"-=":"+=")+c,r.animate(s,m,g).animate(n,m,g),c=h?2*c:c/2;h&&(s={opacity:0},s[v]=(y?"-=":"+=")+c,r.animate(s,m,g)),r.queue(function(){h&&r.hide(),e.effects.restore(r,o),e.effects.removeWrapper(r),i()}),_>1&&b.splice.apply(b,[1,0].concat(b.splice(_,f+1))),r.dequeue()}})(jQuery);(function(e){e.effects.effect.clip=function(t,i){var a,s,n,r=e(this),o=["position","top","bottom","left","right","height","width"],l=e.effects.setMode(r,t.mode||"hide"),h="show"===l,u=t.direction||"vertical",d="vertical"===u,c=d?"height":"width",p=d?"top":"left",f={};e.effects.save(r,o),r.show(),a=e.effects.createWrapper(r).css({overflow:"hidden"}),s="IMG"===r[0].tagName?a:r,n=s[c](),h&&(s.css(c,0),s.css(p,n/2)),f[c]=h?n:0,f[p]=h?0:n/2,s.animate(f,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){h||r.hide(),e.effects.restore(r,o),e.effects.removeWrapper(r),i()}})}})(jQuery);(function(e){e.effects.effect.drop=function(t,i){var a,s=e(this),n=["position","top","bottom","left","right","opacity","height","width"],r=e.effects.setMode(s,t.mode||"hide"),o="show"===r,l=t.direction||"left",h="up"===l||"down"===l?"top":"left",u="up"===l||"left"===l?"pos":"neg",d={opacity:o?1:0};e.effects.save(s,n),s.show(),e.effects.createWrapper(s),a=t.distance||s["top"===h?"outerHeight":"outerWidth"](!0)/2,o&&s.css("opacity",0).css(h,"pos"===u?-a:a),d[h]=(o?"pos"===u?"+=":"-=":"pos"===u?"-=":"+=")+a,s.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===r&&s.hide(),e.effects.restore(s,n),e.effects.removeWrapper(s),i()}})}})(jQuery);(function(e){e.effects.effect.explode=function(t,i){function s(){b.push(this),b.length===d*c&&a()}function a(){p.css({visibility:"visible"}),e(b).remove(),m||p.hide(),i()}var n,r,o,l,h,u,d=t.pieces?Math.round(Math.sqrt(t.pieces)):3,c=d,p=e(this),f=e.effects.setMode(p,t.mode||"hide"),m="show"===f,g=p.show().css("visibility","hidden").offset(),v=Math.ceil(p.outerWidth()/c),y=Math.ceil(p.outerHeight()/d),b=[];for(n=0;d>n;n++)for(l=g.top+n*y,u=n-(d-1)/2,r=0;c>r;r++)o=g.left+r*v,h=r-(c-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-r*v,top:-n*y}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:v,height:y,left:o+(m?h*v:0),top:l+(m?u*y:0),opacity:m?0:1}).animate({left:o+(m?0:h*v),top:l+(m?0:u*y),opacity:m?1:0},t.duration||500,t.easing,s)}})(jQuery);(function(e){e.effects.effect.fade=function(t,i){var s=e(this),a=e.effects.setMode(s,t.mode||"toggle");s.animate({opacity:a},{queue:!1,duration:t.duration,easing:t.easing,complete:i})}})(jQuery);(function(e){e.effects.effect.fold=function(t,i){var s,a,n=e(this),r=["position","top","bottom","left","right","height","width"],o=e.effects.setMode(n,t.mode||"hide"),l="show"===o,h="hide"===o,u=t.size||15,d=/([0-9]+)%/.exec(u),c=!!t.horizFirst,p=l!==c,f=p?["width","height"]:["height","width"],m=t.duration/2,g={},v={};e.effects.save(n,r),n.show(),s=e.effects.createWrapper(n).css({overflow:"hidden"}),a=p?[s.width(),s.height()]:[s.height(),s.width()],d&&(u=parseInt(d[1],10)/100*a[h?0:1]),l&&s.css(c?{height:0,width:u}:{height:u,width:0}),g[f[0]]=l?a[0]:u,v[f[1]]=l?a[1]:0,s.animate(g,m,t.easing).animate(v,m,t.easing,function(){h&&n.hide(),e.effects.restore(n,r),e.effects.removeWrapper(n),i()})}})(jQuery);(function(e){e.effects.effect.highlight=function(t,i){var s=e(this),a=["backgroundImage","backgroundColor","opacity"],n=e.effects.setMode(s,t.mode||"show"),r={backgroundColor:s.css("backgroundColor")};"hide"===n&&(r.opacity=0),e.effects.save(s,a),s.show().css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(r,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===n&&s.hide(),e.effects.restore(s,a),i()}})}})(jQuery);(function(e){e.effects.effect.pulsate=function(t,i){var s,a=e(this),n=e.effects.setMode(a,t.mode||"show"),r="show"===n,o="hide"===n,l=r||"hide"===n,h=2*(t.times||5)+(l?1:0),u=t.duration/h,d=0,c=a.queue(),p=c.length;for((r||!a.is(":visible"))&&(a.css("opacity",0).show(),d=1),s=1;h>s;s++)a.animate({opacity:d},u,t.easing),d=1-d;a.animate({opacity:d},u,t.easing),a.queue(function(){o&&a.hide(),i()}),p>1&&c.splice.apply(c,[1,0].concat(c.splice(p,h+1))),a.dequeue()}})(jQuery);(function(e){e.effects.effect.puff=function(t,i){var s=e(this),a=e.effects.setMode(s,t.mode||"hide"),n="hide"===a,r=parseInt(t.percent,10)||150,o=r/100,h={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()};e.extend(t,{effect:"scale",queue:!1,fade:!0,mode:a,complete:i,percent:n?r:100,from:n?h:{height:h.height*o,width:h.width*o,outerHeight:h.outerHeight*o,outerWidth:h.outerWidth*o}}),s.effect(t)},e.effects.effect.scale=function(t,i){var s=e(this),a=e.extend(!0,{},t),n=e.effects.setMode(s,t.mode||"effect"),r=parseInt(t.percent,10)||(0===parseInt(t.percent,10)?0:"hide"===n?0:100),o=t.direction||"both",h=t.origin,l={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()},u={y:"horizontal"!==o?r/100:1,x:"vertical"!==o?r/100:1};a.effect="size",a.queue=!1,a.complete=i,"effect"!==n&&(a.origin=h||["middle","center"],a.restore=!0),a.from=t.from||("show"===n?{height:0,width:0,outerHeight:0,outerWidth:0}:l),a.to={height:l.height*u.y,width:l.width*u.x,outerHeight:l.outerHeight*u.y,outerWidth:l.outerWidth*u.x},a.fade&&("show"===n&&(a.from.opacity=0,a.to.opacity=1),"hide"===n&&(a.from.opacity=1,a.to.opacity=0)),s.effect(a)},e.effects.effect.size=function(t,i){var s,a,n,r=e(this),o=["position","top","bottom","left","right","width","height","overflow","opacity"],h=["position","top","bottom","left","right","overflow","opacity"],l=["width","height","overflow"],u=["fontSize"],d=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],c=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=e.effects.setMode(r,t.mode||"effect"),f=t.restore||"effect"!==p,m=t.scale||"both",g=t.origin||["middle","center"],v=r.css("position"),y=f?o:h,b={height:0,width:0,outerHeight:0,outerWidth:0};"show"===p&&r.show(),s={height:r.height(),width:r.width(),outerHeight:r.outerHeight(),outerWidth:r.outerWidth()},"toggle"===t.mode&&"show"===p?(r.from=t.to||b,r.to=t.from||s):(r.from=t.from||("show"===p?b:s),r.to=t.to||("hide"===p?b:s)),n={from:{y:r.from.height/s.height,x:r.from.width/s.width},to:{y:r.to.height/s.height,x:r.to.width/s.width}},("box"===m||"both"===m)&&(n.from.y!==n.to.y&&(y=y.concat(d),r.from=e.effects.setTransition(r,d,n.from.y,r.from),r.to=e.effects.setTransition(r,d,n.to.y,r.to)),n.from.x!==n.to.x&&(y=y.concat(c),r.from=e.effects.setTransition(r,c,n.from.x,r.from),r.to=e.effects.setTransition(r,c,n.to.x,r.to))),("content"===m||"both"===m)&&n.from.y!==n.to.y&&(y=y.concat(u).concat(l),r.from=e.effects.setTransition(r,u,n.from.y,r.from),r.to=e.effects.setTransition(r,u,n.to.y,r.to)),e.effects.save(r,y),r.show(),e.effects.createWrapper(r),r.css("overflow","hidden").css(r.from),g&&(a=e.effects.getBaseline(g,s),r.from.top=(s.outerHeight-r.outerHeight())*a.y,r.from.left=(s.outerWidth-r.outerWidth())*a.x,r.to.top=(s.outerHeight-r.to.outerHeight)*a.y,r.to.left=(s.outerWidth-r.to.outerWidth)*a.x),r.css(r.from),("content"===m||"both"===m)&&(d=d.concat(["marginTop","marginBottom"]).concat(u),c=c.concat(["marginLeft","marginRight"]),l=o.concat(d).concat(c),r.find("*[width]").each(function(){var i=e(this),s={height:i.height(),width:i.width(),outerHeight:i.outerHeight(),outerWidth:i.outerWidth()};f&&e.effects.save(i,l),i.from={height:s.height*n.from.y,width:s.width*n.from.x,outerHeight:s.outerHeight*n.from.y,outerWidth:s.outerWidth*n.from.x},i.to={height:s.height*n.to.y,width:s.width*n.to.x,outerHeight:s.height*n.to.y,outerWidth:s.width*n.to.x},n.from.y!==n.to.y&&(i.from=e.effects.setTransition(i,d,n.from.y,i.from),i.to=e.effects.setTransition(i,d,n.to.y,i.to)),n.from.x!==n.to.x&&(i.from=e.effects.setTransition(i,c,n.from.x,i.from),i.to=e.effects.setTransition(i,c,n.to.x,i.to)),i.css(i.from),i.animate(i.to,t.duration,t.easing,function(){f&&e.effects.restore(i,l)})})),r.animate(r.to,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){0===r.to.opacity&&r.css("opacity",r.from.opacity),"hide"===p&&r.hide(),e.effects.restore(r,y),f||("static"===v?r.css({position:"relative",top:r.to.top,left:r.to.left}):e.each(["top","left"],function(e,t){r.css(t,function(t,i){var s=parseInt(i,10),a=e?r.to.left:r.to.top;return"auto"===i?a+"px":s+a+"px"})})),e.effects.removeWrapper(r),i()}})}})(jQuery);(function(e){e.effects.effect.shake=function(t,i){var s,a=e(this),n=["position","top","bottom","left","right","height","width"],r=e.effects.setMode(a,t.mode||"effect"),o=t.direction||"left",h=t.distance||20,l=t.times||3,u=2*l+1,d=Math.round(t.duration/u),c="up"===o||"down"===o?"top":"left",p="up"===o||"left"===o,f={},m={},g={},v=a.queue(),y=v.length;for(e.effects.save(a,n),a.show(),e.effects.createWrapper(a),f[c]=(p?"-=":"+=")+h,m[c]=(p?"+=":"-=")+2*h,g[c]=(p?"-=":"+=")+2*h,a.animate(f,d,t.easing),s=1;l>s;s++)a.animate(m,d,t.easing).animate(g,d,t.easing);a.animate(m,d,t.easing).animate(f,d/2,t.easing).queue(function(){"hide"===r&&a.hide(),e.effects.restore(a,n),e.effects.removeWrapper(a),i()}),y>1&&v.splice.apply(v,[1,0].concat(v.splice(y,u+1))),a.dequeue()}})(jQuery);(function(e){e.effects.effect.slide=function(t,i){var s,a=e(this),n=["position","top","bottom","left","right","width","height"],r=e.effects.setMode(a,t.mode||"show"),o="show"===r,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h,d={};e.effects.save(a,n),a.show(),s=t.distance||a["top"===l?"outerHeight":"outerWidth"](!0),e.effects.createWrapper(a).css({overflow:"hidden"}),o&&a.css(l,u?isNaN(s)?"-"+s:-s:s),d[l]=(o?u?"+=":"-=":u?"-=":"+=")+s,a.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===r&&a.hide(),e.effects.restore(a,n),e.effects.removeWrapper(a),i()}})}})(jQuery);(function(e){e.effects.effect.transfer=function(t,i){var s=e(this),a=e(t.to),n="fixed"===a.css("position"),r=e("body"),o=n?r.scrollTop():0,h=n?r.scrollLeft():0,l=a.offset(),u={top:l.top-o,left:l.left-h,height:a.innerHeight(),width:a.innerWidth()},d=s.offset(),c=e("<div class='ui-effects-transfer'></div>").appendTo(document.body).addClass(t.className).css({top:d.top-o,left:d.left-h,height:s.innerHeight(),width:s.innerWidth(),position:n?"fixed":"absolute"}).animate(u,t.duration,t.easing,function(){c.remove(),i()})}})(jQuery); \ No newline at end of file diff --git a/assets/js/CreatePOValidation.js b/assets/js/CreatePOValidation.js deleted file mode 100644 index 0c136c3e..00000000 --- a/assets/js/CreatePOValidation.js +++ /dev/null @@ -1,205 +0,0 @@ -/** -/** - * File : CreatePOValidation.js - * - * This file contain the validation of edit Create Po - * - * @author Gandhimathi - */ -$(document).ready(function(){ - - - - - //Initialize Select2 Elements - $("#drpSupplier").select2(); - - -}); -function myFunction() { - - if(validate()) - { - var input = $('#POType').val(); - - $('#' + input).modal('show'); - } - -} -function validate() -{ - var PoType = $('#POType').val(); - var currencyType = $('#currencytype').val(); - if($('#PODate').val() == '') - { - alert('Please Enter the Purchase Order date'); - $('#PODate').focus(); - return false; - } - else if($('#drpSupplier').val() == "0") - { - alert('Please Select the Supplier details'); - $('#drpSupplier').focus(); - return false; - } - else if($('#DeliveryAddr').val() == '') - { - alert('Please Enter the Delivery Address'); - $('#DeliveryAddr').focus(); - return false; - } - else if($('#Deliverydt').val() == '' && $('#Scheduleby').val() == '') - { - alert('Please Enter the Delivery Date'); - $('#Deliverydt').focus(); - return false; - } - else if(PoType=='CAPITAL' ){ -alert(PoType); - if(currencyType=='0'){ - alert('Please Select the Currency Type'); - $('#currencytype').focus(); - return false; -} - else if($('#ExchangeRt').val()==''){ - alert('Please Enter the Exchange Rate'); - $('#ExchangeRt').focus(); - return false; - } - else{ - return true; - } - - - } - - else - { - return true; - } -} - - -function validateRevenueTax() - { - if($('#ReqNo').val() == "0") - { - alert('Please select the Requisition Number'); - $('#ReqNo').focus(); - return false; - } - else if($('#CostCenter').val() == "0") - { - alert('Please select the Cost center'); - $('#CostCenter').focus(); - return false; - } - else if($('#MaterialCode').val() == "0") - { - alert('Please select the Material Code'); - $('#MaterialCode').focus(); - return false; - } - else if($('#Quantity').val() == '') - { - alert('Please Enter the Quantity value'); - $('#Quantity').focus(); - return false; - } - else if($('#Rate').val() == '') - { - alert('Please Enter the Rate of the Item'); - $('#Rate').focus(); - return false; - } - else - { - return true; - } - } - -function calculateTotalValue() - { - var Packaging = $('#txtAfterPackaging').val() == '' ? '0.00' : $('#txtAfterPackaging').val(); - var ExciseDuty = $('#txtAfterExciseDuty').val() == '' ? '0.00' : $('#txtAfterExciseDuty').val(); - var Vat = $('#txtAfterVat').val() == '' ? '0.00' : $('#txtAfterVat').val(); - var CST = $('#txtAfterCST').val() == '' ? '0.00' : $('#txtAfterCST').val(); - var GST = $('#txtAfterGST').val() == '' ? '0.00' : $('#txtAfterGST').val(); - var OtherTax = $('#txtAfterOtherTax').val() == '' ? '0.00' : $('#txtAfterOtherTax').val(); - var Freight = $('#txtAfterFreight').val() == '' ? '0.00' : $('#txtAfterFreight').val(); - var Insurance = $('#txtInsurance').val() == '' ? '0.00' : $('#txtInsurance').val(); - var Discount = $('#txtAfterDiscount').val() == '' ? '0.00' : $('#txtAfterDiscount').val(); - var BasicVal = $('#txtBasicValue').val() == '' ? '0.00' : $('#txtBasicValue').val(); - - var totvalue = ( parseFloat(BasicVal) + parseFloat(Packaging)+ parseFloat(ExciseDuty)+ parseFloat(Vat) + parseFloat(CST)+ parseFloat(GST) + parseFloat(OtherTax) + parseFloat(Freight) + parseFloat(Insurance)) - parseFloat(Discount); - - var tot = parseFloat(totvalue).toFixed(2); - - $('#txtTotalOrderValue').val(tot); - - validateExceedLimit(); - ExceedQuantityCheck(); - } -function calculateTaxValue() - { - var Packaging = $('#txtAfterPackaging').val() == '' ? '0.00' : $('#txtAfterPackaging').val(); - var ExciseDuty = $('#txtAfterExciseDuty').val() == '' ? '0.00' : $('#txtAfterExciseDuty').val(); - var Vat = $('#txtAfterVat').val() == '' ? '0.00' : $('#txtAfterVat').val(); - var CST = $('#txtAfterCST').val() == '' ? '0.00' : $('#txtAfterCST').val(); - var GST = $('#txtAfterGST').val() == '' ? '0.00' : $('#txtAfterGST').val(); - var OtherTax = $('#txtAfterOtherTax').val() == '' ? '0.00' : $('#txtAfterOtherTax').val(); - var Freight = $('#txtAfterFreight').val() == '' ? '0.00' : $('#txtAfterFreight').val(); - var Insurance = $('#txtInsurance').val() == '' ? '0.00' : $('#txtInsurance').val(); - var Discount = $('#txtAfterDiscount').val() == '' ? '0.00' : $('#txtAfterDiscount').val(); - - - var totvalue = ( parseFloat(Packaging)+ parseFloat(ExciseDuty)+ parseFloat(Vat) + parseFloat(CST)+ parseFloat(GST) + parseFloat(OtherTax) + parseFloat(Freight) + parseFloat(Insurance)) - parseFloat(Discount) ; - - var tot = parseFloat(totvalue).toFixed(2); - //alert('tot:'+tot); - return tot; - } - - - function validateExceedLimit() - { - var avalbudAmt = parseFloat($('#AvlBudAmt').val()); - var basicAmountRate = parseFloat($('#txtBasicValue').val()); - var totalAmount = parseFloat($('#txtTotalOrderValue').val()); - - if(basicAmountRate > avalbudAmt || totalAmount > avalbudAmt) - { - alert('Basic amount is exceeding the Budget Limit.Please adjust the product value.'); - $('#Rate').focus(); - return false; - } - else - { - return true; - } - - } - - -function isNumberKey(evt) - { - var charCode = (evt.which) ? evt.which : evt.keyCode; - if (charCode != 46 && charCode > 31 - && (charCode < 48 || charCode > 57)) - return false; - - return true; - } -function change(){ - ExceedQuantityCheck(); - if($('#Quantity').val() != '' && $('#Rate').val() != '') - { - var txtQuantity = parseFloat( $('#Quantity').val()); - var txtUnitPrice = parseFloat($('#Rate').val()); - var Tot = txtQuantity * txtUnitPrice - $('#txtBasicValue').val(Tot); - calculateTotalValue(); - - } - -} diff --git a/assets/js/CreatePOValidation.js~ b/assets/js/CreatePOValidation.js~ deleted file mode 100644 index 28597352..00000000 --- a/assets/js/CreatePOValidation.js~ +++ /dev/null @@ -1,184 +0,0 @@ -/** -/** - * File : CreatePOValidation.js - * - * This file contain the validation of edit Create Po - * - * @author Gandhimathi - */ -$(document).ready(function(){ - - - - - //Initialize Select2 Elements - $("#drpSupplier").select2(); - - -}); -function myFunction() { - - if(validate()) - { - var input = $('#POType').val(); - - $('#' + input).modal('show'); - } - -} -function validate() -{ - - if($('#PODate').val() == '') - { - alert('Please Enter the Purchase Order date'); - $('#PODate').focus(); - return false; - } - else if($('#drpSupplier').val() == "0") - { - alert('Please Select the Supplier details'); - $('#drpSupplier').focus(); - return false; - } - else if($('#DeliveryAddr').val() == '') - { - alert('Please Enter the Delivery Address'); - $('#DeliveryAddr').focus(); - return false; - } - else if($('#Deliverydt').val() == '' && $('#Scheduleby').val() == '') - { - alert('Please Enter the Delivery Date'); - $('#Deliverydt').focus(); - return false; - } - - else - { - return true; - } -} - - -function validateRevenueTax() - { - if($('#ReqNo').val() == "0") - { - alert('Please select the Requisition Number'); - $('#ReqNo').focus(); - return false; - } - else if($('#CostCenter').val() == "0") - { - alert('Please select the Cost center'); - $('#CostCenter').focus(); - return false; - } - else if($('#MaterialCode').val() == "0") - { - alert('Please select the Material Code'); - $('#MaterialCode').focus(); - return false; - } - else if($('#Quantity').val() == '') - { - alert('Please Enter the Quantity value'); - $('#Quantity').focus(); - return false; - } - else if($('#Rate').val() == '') - { - alert('Please Enter the Rate of the Item'); - $('#Rate').focus(); - return false; - } - else - { - return true; - } - } - -function calculateTotalValue() - { - var Packaging = $('#txtAfterPackaging').val() == '' ? '0.00' : $('#txtAfterPackaging').val(); - var ExciseDuty = $('#txtAfterExciseDuty').val() == '' ? '0.00' : $('#txtAfterExciseDuty').val(); - var Vat = $('#txtAfterVat').val() == '' ? '0.00' : $('#txtAfterVat').val(); - var CST = $('#txtAfterCST').val() == '' ? '0.00' : $('#txtAfterCST').val(); - var GST = $('#txtAfterGST').val() == '' ? '0.00' : $('#txtAfterGST').val(); - var OtherTax = $('#txtAfterOtherTax').val() == '' ? '0.00' : $('#txtAfterOtherTax').val(); - var Freight = $('#txtAfterFreight').val() == '' ? '0.00' : $('#txtAfterFreight').val(); - var Insurance = $('#txtInsurance').val() == '' ? '0.00' : $('#txtInsurance').val(); - var Discount = $('#txtAfterDiscount').val() == '' ? '0.00' : $('#txtAfterDiscount').val(); - var BasicVal = $('#txtBasicValue').val() == '' ? '0.00' : $('#txtBasicValue').val(); - - var totvalue = ( parseFloat(BasicVal) + parseFloat(Packaging)+ parseFloat(ExciseDuty)+ parseFloat(Vat) + parseFloat(CST)+ parseFloat(GST) + parseFloat(OtherTax) + parseFloat(Freight) + parseFloat(Insurance)) - parseFloat(Discount); - - var tot = parseFloat(totvalue).toFixed(2); - - $('#txtTotalOrderValue').val(tot); - validateExceedLimit(); - } -function calculateTaxValue() - { - var Packaging = $('#txtAfterPackaging').val() == '' ? '0.00' : $('#txtAfterPackaging').val(); - var ExciseDuty = $('#txtAfterExciseDuty').val() == '' ? '0.00' : $('#txtAfterExciseDuty').val(); - var Vat = $('#txtAfterVat').val() == '' ? '0.00' : $('#txtAfterVat').val(); - var CST = $('#txtAfterCST').val() == '' ? '0.00' : $('#txtAfterCST').val(); - var GST = $('#txtAfterGST').val() == '' ? '0.00' : $('#txtAfterGST').val(); - var OtherTax = $('#txtAfterOtherTax').val() == '' ? '0.00' : $('#txtAfterOtherTax').val(); - var Freight = $('#txtAfterFreight').val() == '' ? '0.00' : $('#txtAfterFreight').val(); - var Insurance = $('#txtInsurance').val() == '' ? '0.00' : $('#txtInsurance').val(); - var Discount = $('#txtAfterDiscount').val() == '' ? '0.00' : $('#txtAfterDiscount').val(); - - - var totvalue = ( parseFloat(Packaging)+ parseFloat(ExciseDuty)+ parseFloat(Vat) + parseFloat(CST)+ parseFloat(GST) + parseFloat(OtherTax) + parseFloat(Freight) + parseFloat(Insurance)) - parseFloat(Discount) ; - - var tot = parseFloat(totvalue).toFixed(2); - //alert('tot:'+tot); - return tot; - } - - - function validateExceedLimit() - { - var avalbudAmt = parseFloat($('#AvlBudAmt').val()); - var basicAmountRate = parseFloat($('#txtBasicValue').val()); - var totalAmount = parseFloat($('#txtTotalOrderValue').val()); - - if(basicAmountRate > avalbudAmt || totalAmount > avalbudAmt) - { - alert('Basic amount is exceeding the Budget Limit.Please adjust the product value.'); - $('#Rate').focus(); - return false; - } - else - { - return true; - } - - } - - -function isNumberKey(evt) - { - var charCode = (evt.which) ? evt.which : evt.keyCode; - if (charCode != 46 && charCode > 31 - && (charCode < 48 || charCode > 57)) - return false; - - return true; - } -function change(){ - ExceedQuantityCheck(); - if($('#Quantity').val() != '' && $('#Rate').val() != '') - { - var txtQuantity = parseFloat( $('#Quantity').val()); - var txtUnitPrice = parseFloat($('#Rate').val()); - var Tot = txtQuantity * txtUnitPrice - $('#txtBasicValue').val(Tot); - calculateTotalValue(); - - } - -} diff --git a/assets/js/addUser.js b/assets/js/addUser.js deleted file mode 100644 index dbbe08b3..00000000 --- a/assets/js/addUser.js +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File : addUser.js - * - * This file contain the validation of add user form - * - * Using validation plugin : jquery.validate.js - * - * @author Kishor Mali - */ - -$(document).ready(function(){ - - var addUserForm = $("#addUser"); - - var validator = addUserForm.validate({ - - rules:{ - fname :{ required : true }, - email : { required : true, email : true, remote : { url : baseURL + "checkEmailExists", type :"post"} }, - password : { required : true }, - cpassword : {required : true, equalTo: "#password"}, - mobile : { required : true, digits : true }, - role : { required : true, selected : true} - }, - messages:{ - fname :{ required : "This field is required" }, - email : { required : "This field is required", email : "Please enter valid email address", remote : "Email already taken" }, - password : { required : "This field is required" }, - cpassword : {required : "This field is required", equalTo: "Please enter same password" }, - mobile : { required : "This field is required", digits : "Please enter numbers only" }, - role : { required : "This field is required", selected : "Please select atleast one option" } - } - }); -}); diff --git a/assets/js/bootstrap.js b/assets/js/bootstrap.js deleted file mode 100644 index 8dff365f..00000000 --- a/assets/js/bootstrap.js +++ /dev/null @@ -1,2276 +0,0 @@ -/*! - * Bootstrap v3.3.0 (http://getbootstrap.com) - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -if (typeof jQuery === 'undefined') { - throw new Error('Bootstrap\'s JavaScript requires jQuery') -} - -+function ($) { - var version = $.fn.jquery.split(' ')[0].split('.') - if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) { - throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher') - } -}(jQuery); - -/* ======================================================================== - * Bootstrap: transition.js v3.3.0 - * http://getbootstrap.com/javascript/#transitions - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) - // ============================================================ - - function transitionEnd() { - var el = document.createElement('bootstrap') - - var transEndEventNames = { - WebkitTransition : 'webkitTransitionEnd', - MozTransition : 'transitionend', - OTransition : 'oTransitionEnd otransitionend', - transition : 'transitionend' - } - - for (var name in transEndEventNames) { - if (el.style[name] !== undefined) { - return { end: transEndEventNames[name] } - } - } - - return false // explicit for ie8 ( ._.) - } - - // http://blog.alexmaccaw.com/css-transitions - $.fn.emulateTransitionEnd = function (duration) { - var called = false - var $el = this - $(this).one('bsTransitionEnd', function () { called = true }) - var callback = function () { if (!called) $($el).trigger($.support.transition.end) } - setTimeout(callback, duration) - return this - } - - $(function () { - $.support.transition = transitionEnd() - - if (!$.support.transition) return - - $.event.special.bsTransitionEnd = { - bindType: $.support.transition.end, - delegateType: $.support.transition.end, - handle: function (e) { - if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) - } - } - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: alert.js v3.3.0 - * http://getbootstrap.com/javascript/#alerts - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // ALERT CLASS DEFINITION - // ====================== - - var dismiss = '[data-dismiss="alert"]' - var Alert = function (el) { - $(el).on('click', dismiss, this.close) - } - - Alert.VERSION = '3.3.0' - - Alert.TRANSITION_DURATION = 150 - - Alert.prototype.close = function (e) { - var $this = $(this) - var selector = $this.attr('data-target') - - if (!selector) { - selector = $this.attr('href') - selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 - } - - var $parent = $(selector) - - if (e) e.preventDefault() - - if (!$parent.length) { - $parent = $this.closest('.alert') - } - - $parent.trigger(e = $.Event('close.bs.alert')) - - if (e.isDefaultPrevented()) return - - $parent.removeClass('in') - - function removeElement() { - // detach from parent, fire event then clean up data - $parent.detach().trigger('closed.bs.alert').remove() - } - - $.support.transition && $parent.hasClass('fade') ? - $parent - .one('bsTransitionEnd', removeElement) - .emulateTransitionEnd(Alert.TRANSITION_DURATION) : - removeElement() - } - - - // ALERT PLUGIN DEFINITION - // ======================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.alert') - - if (!data) $this.data('bs.alert', (data = new Alert(this))) - if (typeof option == 'string') data[option].call($this) - }) - } - - var old = $.fn.alert - - $.fn.alert = Plugin - $.fn.alert.Constructor = Alert - - - // ALERT NO CONFLICT - // ================= - - $.fn.alert.noConflict = function () { - $.fn.alert = old - return this - } - - - // ALERT DATA-API - // ============== - - $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: button.js v3.3.0 - * http://getbootstrap.com/javascript/#buttons - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // BUTTON PUBLIC CLASS DEFINITION - // ============================== - - var Button = function (element, options) { - this.$element = $(element) - this.options = $.extend({}, Button.DEFAULTS, options) - this.isLoading = false - } - - Button.VERSION = '3.3.0' - - Button.DEFAULTS = { - loadingText: 'loading...' - } - - Button.prototype.setState = function (state) { - var d = 'disabled' - var $el = this.$element - var val = $el.is('input') ? 'val' : 'html' - var data = $el.data() - - state = state + 'Text' - - if (data.resetText == null) $el.data('resetText', $el[val]()) - - // push to event loop to allow forms to submit - setTimeout($.proxy(function () { - $el[val](data[state] == null ? this.options[state] : data[state]) - - if (state == 'loadingText') { - this.isLoading = true - $el.addClass(d).attr(d, d) - } else if (this.isLoading) { - this.isLoading = false - $el.removeClass(d).removeAttr(d) - } - }, this), 0) - } - - Button.prototype.toggle = function () { - var changed = true - var $parent = this.$element.closest('[data-toggle="buttons"]') - - if ($parent.length) { - var $input = this.$element.find('input') - if ($input.prop('type') == 'radio') { - if ($input.prop('checked') && this.$element.hasClass('active')) changed = false - else $parent.find('.active').removeClass('active') - } - if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change') - } else { - this.$element.attr('aria-pressed', !this.$element.hasClass('active')) - } - - if (changed) this.$element.toggleClass('active') - } - - - // BUTTON PLUGIN DEFINITION - // ======================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.button') - var options = typeof option == 'object' && option - - if (!data) $this.data('bs.button', (data = new Button(this, options))) - - if (option == 'toggle') data.toggle() - else if (option) data.setState(option) - }) - } - - var old = $.fn.button - - $.fn.button = Plugin - $.fn.button.Constructor = Button - - - // BUTTON NO CONFLICT - // ================== - - $.fn.button.noConflict = function () { - $.fn.button = old - return this - } - - - // BUTTON DATA-API - // =============== - - $(document) - .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { - var $btn = $(e.target) - if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') - Plugin.call($btn, 'toggle') - e.preventDefault() - }) - .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { - $(e.target).closest('.btn').toggleClass('focus', e.type == 'focus') - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: carousel.js v3.3.0 - * http://getbootstrap.com/javascript/#carousel - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // CAROUSEL CLASS DEFINITION - // ========================= - - var Carousel = function (element, options) { - this.$element = $(element) - this.$indicators = this.$element.find('.carousel-indicators') - this.options = options - this.paused = - this.sliding = - this.interval = - this.$active = - this.$items = null - - this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) - - this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element - .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) - .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) - } - - Carousel.VERSION = '3.3.0' - - Carousel.TRANSITION_DURATION = 600 - - Carousel.DEFAULTS = { - interval: 5000, - pause: 'hover', - wrap: true, - keyboard: true - } - - Carousel.prototype.keydown = function (e) { - switch (e.which) { - case 37: this.prev(); break - case 39: this.next(); break - default: return - } - - e.preventDefault() - } - - Carousel.prototype.cycle = function (e) { - e || (this.paused = false) - - this.interval && clearInterval(this.interval) - - this.options.interval - && !this.paused - && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) - - return this - } - - Carousel.prototype.getItemIndex = function (item) { - this.$items = item.parent().children('.item') - return this.$items.index(item || this.$active) - } - - Carousel.prototype.getItemForDirection = function (direction, active) { - var delta = direction == 'prev' ? -1 : 1 - var activeIndex = this.getItemIndex(active) - var itemIndex = (activeIndex + delta) % this.$items.length - return this.$items.eq(itemIndex) - } - - Carousel.prototype.to = function (pos) { - var that = this - var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) - - if (pos > (this.$items.length - 1) || pos < 0) return - - if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" - if (activeIndex == pos) return this.pause().cycle() - - return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) - } - - Carousel.prototype.pause = function (e) { - e || (this.paused = true) - - if (this.$element.find('.next, .prev').length && $.support.transition) { - this.$element.trigger($.support.transition.end) - this.cycle(true) - } - - this.interval = clearInterval(this.interval) - - return this - } - - Carousel.prototype.next = function () { - if (this.sliding) return - return this.slide('next') - } - - Carousel.prototype.prev = function () { - if (this.sliding) return - return this.slide('prev') - } - - Carousel.prototype.slide = function (type, next) { - var $active = this.$element.find('.item.active') - var $next = next || this.getItemForDirection(type, $active) - var isCycling = this.interval - var direction = type == 'next' ? 'left' : 'right' - var fallback = type == 'next' ? 'first' : 'last' - var that = this - - if (!$next.length) { - if (!this.options.wrap) return - $next = this.$element.find('.item')[fallback]() - } - - if ($next.hasClass('active')) return (this.sliding = false) - - var relatedTarget = $next[0] - var slideEvent = $.Event('slide.bs.carousel', { - relatedTarget: relatedTarget, - direction: direction - }) - this.$element.trigger(slideEvent) - if (slideEvent.isDefaultPrevented()) return - - this.sliding = true - - isCycling && this.pause() - - if (this.$indicators.length) { - this.$indicators.find('.active').removeClass('active') - var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) - $nextIndicator && $nextIndicator.addClass('active') - } - - var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" - if ($.support.transition && this.$element.hasClass('slide')) { - $next.addClass(type) - $next[0].offsetWidth // force reflow - $active.addClass(direction) - $next.addClass(direction) - $active - .one('bsTransitionEnd', function () { - $next.removeClass([type, direction].join(' ')).addClass('active') - $active.removeClass(['active', direction].join(' ')) - that.sliding = false - setTimeout(function () { - that.$element.trigger(slidEvent) - }, 0) - }) - .emulateTransitionEnd(Carousel.TRANSITION_DURATION) - } else { - $active.removeClass('active') - $next.addClass('active') - this.sliding = false - this.$element.trigger(slidEvent) - } - - isCycling && this.cycle() - - return this - } - - - // CAROUSEL PLUGIN DEFINITION - // ========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.carousel') - var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) - var action = typeof option == 'string' ? option : options.slide - - if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) - if (typeof option == 'number') data.to(option) - else if (action) data[action]() - else if (options.interval) data.pause().cycle() - }) - } - - var old = $.fn.carousel - - $.fn.carousel = Plugin - $.fn.carousel.Constructor = Carousel - - - // CAROUSEL NO CONFLICT - // ==================== - - $.fn.carousel.noConflict = function () { - $.fn.carousel = old - return this - } - - - // CAROUSEL DATA-API - // ================= - - var clickHandler = function (e) { - var href - var $this = $(this) - var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 - if (!$target.hasClass('carousel')) return - var options = $.extend({}, $target.data(), $this.data()) - var slideIndex = $this.attr('data-slide-to') - if (slideIndex) options.interval = false - - Plugin.call($target, options) - - if (slideIndex) { - $target.data('bs.carousel').to(slideIndex) - } - - e.preventDefault() - } - - $(document) - .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) - .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) - - $(window).on('load', function () { - $('[data-ride="carousel"]').each(function () { - var $carousel = $(this) - Plugin.call($carousel, $carousel.data()) - }) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: collapse.js v3.3.0 - * http://getbootstrap.com/javascript/#collapse - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // COLLAPSE PUBLIC CLASS DEFINITION - // ================================ - - var Collapse = function (element, options) { - this.$element = $(element) - this.options = $.extend({}, Collapse.DEFAULTS, options) - this.$trigger = $(this.options.trigger).filter('[href="#' + element.id + '"], [data-target="#' + element.id + '"]') - this.transitioning = null - - if (this.options.parent) { - this.$parent = this.getParent() - } else { - this.addAriaAndCollapsedClass(this.$element, this.$trigger) - } - - if (this.options.toggle) this.toggle() - } - - Collapse.VERSION = '3.3.0' - - Collapse.TRANSITION_DURATION = 350 - - Collapse.DEFAULTS = { - toggle: true, - trigger: '[data-toggle="collapse"]' - } - - Collapse.prototype.dimension = function () { - var hasWidth = this.$element.hasClass('width') - return hasWidth ? 'width' : 'height' - } - - Collapse.prototype.show = function () { - if (this.transitioning || this.$element.hasClass('in')) return - - var activesData - var actives = this.$parent && this.$parent.find('> .panel').children('.in, .collapsing') - - if (actives && actives.length) { - activesData = actives.data('bs.collapse') - if (activesData && activesData.transitioning) return - } - - var startEvent = $.Event('show.bs.collapse') - this.$element.trigger(startEvent) - if (startEvent.isDefaultPrevented()) return - - if (actives && actives.length) { - Plugin.call(actives, 'hide') - activesData || actives.data('bs.collapse', null) - } - - var dimension = this.dimension() - - this.$element - .removeClass('collapse') - .addClass('collapsing')[dimension](0) - .attr('aria-expanded', true) - - this.$trigger - .removeClass('collapsed') - .attr('aria-expanded', true) - - this.transitioning = 1 - - var complete = function () { - this.$element - .removeClass('collapsing') - .addClass('collapse in')[dimension]('') - this.transitioning = 0 - this.$element - .trigger('shown.bs.collapse') - } - - if (!$.support.transition) return complete.call(this) - - var scrollSize = $.camelCase(['scroll', dimension].join('-')) - - this.$element - .one('bsTransitionEnd', $.proxy(complete, this)) - .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]) - } - - Collapse.prototype.hide = function () { - if (this.transitioning || !this.$element.hasClass('in')) return - - var startEvent = $.Event('hide.bs.collapse') - this.$element.trigger(startEvent) - if (startEvent.isDefaultPrevented()) return - - var dimension = this.dimension() - - this.$element[dimension](this.$element[dimension]())[0].offsetHeight - - this.$element - .addClass('collapsing') - .removeClass('collapse in') - .attr('aria-expanded', false) - - this.$trigger - .addClass('collapsed') - .attr('aria-expanded', false) - - this.transitioning = 1 - - var complete = function () { - this.transitioning = 0 - this.$element - .removeClass('collapsing') - .addClass('collapse') - .trigger('hidden.bs.collapse') - } - - if (!$.support.transition) return complete.call(this) - - this.$element - [dimension](0) - .one('bsTransitionEnd', $.proxy(complete, this)) - .emulateTransitionEnd(Collapse.TRANSITION_DURATION) - } - - Collapse.prototype.toggle = function () { - this[this.$element.hasClass('in') ? 'hide' : 'show']() - } - - Collapse.prototype.getParent = function () { - return $(this.options.parent) - .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') - .each($.proxy(function (i, element) { - var $element = $(element) - this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) - }, this)) - .end() - } - - Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { - var isOpen = $element.hasClass('in') - - $element.attr('aria-expanded', isOpen) - $trigger - .toggleClass('collapsed', !isOpen) - .attr('aria-expanded', isOpen) - } - - function getTargetFromTrigger($trigger) { - var href - var target = $trigger.attr('data-target') - || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 - - return $(target) - } - - - // COLLAPSE PLUGIN DEFINITION - // ========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.collapse') - var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) - - if (!data && options.toggle && option == 'show') options.toggle = false - if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.collapse - - $.fn.collapse = Plugin - $.fn.collapse.Constructor = Collapse - - - // COLLAPSE NO CONFLICT - // ==================== - - $.fn.collapse.noConflict = function () { - $.fn.collapse = old - return this - } - - - // COLLAPSE DATA-API - // ================= - - $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { - var $this = $(this) - - if (!$this.attr('data-target')) e.preventDefault() - - var $target = getTargetFromTrigger($this) - var data = $target.data('bs.collapse') - var option = data ? 'toggle' : $.extend({}, $this.data(), { trigger: this }) - - Plugin.call($target, option) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: dropdown.js v3.3.0 - * http://getbootstrap.com/javascript/#dropdowns - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // DROPDOWN CLASS DEFINITION - // ========================= - - var backdrop = '.dropdown-backdrop' - var toggle = '[data-toggle="dropdown"]' - var Dropdown = function (element) { - $(element).on('click.bs.dropdown', this.toggle) - } - - Dropdown.VERSION = '3.3.0' - - Dropdown.prototype.toggle = function (e) { - var $this = $(this) - - if ($this.is('.disabled, :disabled')) return - - var $parent = getParent($this) - var isActive = $parent.hasClass('open') - - clearMenus() - - if (!isActive) { - if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { - // if mobile we use a backdrop because click events don't delegate - $('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus) - } - - var relatedTarget = { relatedTarget: this } - $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget)) - - if (e.isDefaultPrevented()) return - - $this - .trigger('focus') - .attr('aria-expanded', 'true') - - $parent - .toggleClass('open') - .trigger('shown.bs.dropdown', relatedTarget) - } - - return false - } - - Dropdown.prototype.keydown = function (e) { - if (!/(38|40|27|32)/.test(e.which)) return - - var $this = $(this) - - e.preventDefault() - e.stopPropagation() - - if ($this.is('.disabled, :disabled')) return - - var $parent = getParent($this) - var isActive = $parent.hasClass('open') - - if ((!isActive && e.which != 27) || (isActive && e.which == 27)) { - if (e.which == 27) $parent.find(toggle).trigger('focus') - return $this.trigger('click') - } - - var desc = ' li:not(.divider):visible a' - var $items = $parent.find('[role="menu"]' + desc + ', [role="listbox"]' + desc) - - if (!$items.length) return - - var index = $items.index(e.target) - - if (e.which == 38 && index > 0) index-- // up - if (e.which == 40 && index < $items.length - 1) index++ // down - if (!~index) index = 0 - - $items.eq(index).trigger('focus') - } - - function clearMenus(e) { - if (e && e.which === 3) return - $(backdrop).remove() - $(toggle).each(function () { - var $this = $(this) - var $parent = getParent($this) - var relatedTarget = { relatedTarget: this } - - if (!$parent.hasClass('open')) return - - $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)) - - if (e.isDefaultPrevented()) return - - $this.attr('aria-expanded', 'false') - $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget) - }) - } - - function getParent($this) { - var selector = $this.attr('data-target') - - if (!selector) { - selector = $this.attr('href') - selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 - } - - var $parent = selector && $(selector) - - return $parent && $parent.length ? $parent : $this.parent() - } - - - // DROPDOWN PLUGIN DEFINITION - // ========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.dropdown') - - if (!data) $this.data('bs.dropdown', (data = new Dropdown(this))) - if (typeof option == 'string') data[option].call($this) - }) - } - - var old = $.fn.dropdown - - $.fn.dropdown = Plugin - $.fn.dropdown.Constructor = Dropdown - - - // DROPDOWN NO CONFLICT - // ==================== - - $.fn.dropdown.noConflict = function () { - $.fn.dropdown = old - return this - } - - - // APPLY TO STANDARD DROPDOWN ELEMENTS - // =================================== - - $(document) - .on('click.bs.dropdown.data-api', clearMenus) - .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) - .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) - .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown) - .on('keydown.bs.dropdown.data-api', '[role="menu"]', Dropdown.prototype.keydown) - .on('keydown.bs.dropdown.data-api', '[role="listbox"]', Dropdown.prototype.keydown) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: modal.js v3.3.0 - * http://getbootstrap.com/javascript/#modals - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // MODAL CLASS DEFINITION - // ====================== - - var Modal = function (element, options) { - this.options = options - this.$body = $(document.body) - this.$element = $(element) - this.$backdrop = - this.isShown = null - this.scrollbarWidth = 0 - - if (this.options.remote) { - this.$element - .find('.modal-content') - .load(this.options.remote, $.proxy(function () { - this.$element.trigger('loaded.bs.modal') - }, this)) - } - } - - Modal.VERSION = '3.3.0' - - Modal.TRANSITION_DURATION = 300 - Modal.BACKDROP_TRANSITION_DURATION = 150 - - Modal.DEFAULTS = { - backdrop: true, - keyboard: true, - show: true - } - - Modal.prototype.toggle = function (_relatedTarget) { - return this.isShown ? this.hide() : this.show(_relatedTarget) - } - - Modal.prototype.show = function (_relatedTarget) { - var that = this - var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget }) - - this.$element.trigger(e) - - if (this.isShown || e.isDefaultPrevented()) return - - this.isShown = true - - this.checkScrollbar() - this.$body.addClass('modal-open') - - this.setScrollbar() - this.escape() - - this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this)) - - this.backdrop(function () { - var transition = $.support.transition && that.$element.hasClass('fade') - - if (!that.$element.parent().length) { - that.$element.appendTo(that.$body) // don't move modals dom position - } - - that.$element - .show() - .scrollTop(0) - - if (transition) { - that.$element[0].offsetWidth // force reflow - } - - that.$element - .addClass('in') - .attr('aria-hidden', false) - - that.enforceFocus() - - var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget }) - - transition ? - that.$element.find('.modal-dialog') // wait for modal to slide in - .one('bsTransitionEnd', function () { - that.$element.trigger('focus').trigger(e) - }) - .emulateTransitionEnd(Modal.TRANSITION_DURATION) : - that.$element.trigger('focus').trigger(e) - }) - } - - Modal.prototype.hide = function (e) { - if (e) e.preventDefault() - - e = $.Event('hide.bs.modal') - - this.$element.trigger(e) - - if (!this.isShown || e.isDefaultPrevented()) return - - this.isShown = false - - this.escape() - - $(document).off('focusin.bs.modal') - - this.$element - .removeClass('in') - .attr('aria-hidden', true) - .off('click.dismiss.bs.modal') - - $.support.transition && this.$element.hasClass('fade') ? - this.$element - .one('bsTransitionEnd', $.proxy(this.hideModal, this)) - .emulateTransitionEnd(Modal.TRANSITION_DURATION) : - this.hideModal() - } - - Modal.prototype.enforceFocus = function () { - $(document) - .off('focusin.bs.modal') // guard against infinite focus loop - .on('focusin.bs.modal', $.proxy(function (e) { - if (this.$element[0] !== e.target && !this.$element.has(e.target).length) { - this.$element.trigger('focus') - } - }, this)) - } - - Modal.prototype.escape = function () { - if (this.isShown && this.options.keyboard) { - this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) { - e.which == 27 && this.hide() - }, this)) - } else if (!this.isShown) { - this.$element.off('keydown.dismiss.bs.modal') - } - } - - Modal.prototype.hideModal = function () { - var that = this - this.$element.hide() - this.backdrop(function () { - that.$body.removeClass('modal-open') - that.resetScrollbar() - that.$element.trigger('hidden.bs.modal') - }) - } - - Modal.prototype.removeBackdrop = function () { - this.$backdrop && this.$backdrop.remove() - this.$backdrop = null - } - - Modal.prototype.backdrop = function (callback) { - var that = this - var animate = this.$element.hasClass('fade') ? 'fade' : '' - - if (this.isShown && this.options.backdrop) { - var doAnimate = $.support.transition && animate - - this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />') - .prependTo(this.$element) - .on('click.dismiss.bs.modal', $.proxy(function (e) { - if (e.target !== e.currentTarget) return - this.options.backdrop == 'static' - ? this.$element[0].focus.call(this.$element[0]) - : this.hide.call(this) - }, this)) - - if (doAnimate) this.$backdrop[0].offsetWidth // force reflow - - this.$backdrop.addClass('in') - - if (!callback) return - - doAnimate ? - this.$backdrop - .one('bsTransitionEnd', callback) - .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : - callback() - - } else if (!this.isShown && this.$backdrop) { - this.$backdrop.removeClass('in') - - var callbackRemove = function () { - that.removeBackdrop() - callback && callback() - } - $.support.transition && this.$element.hasClass('fade') ? - this.$backdrop - .one('bsTransitionEnd', callbackRemove) - .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : - callbackRemove() - - } else if (callback) { - callback() - } - } - - Modal.prototype.checkScrollbar = function () { - this.scrollbarWidth = this.measureScrollbar() - } - - Modal.prototype.setScrollbar = function () { - var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10) - if (this.scrollbarWidth) this.$body.css('padding-right', bodyPad + this.scrollbarWidth) - } - - Modal.prototype.resetScrollbar = function () { - this.$body.css('padding-right', '') - } - - Modal.prototype.measureScrollbar = function () { // thx walsh - if (document.body.clientWidth >= window.innerWidth) return 0 - var scrollDiv = document.createElement('div') - scrollDiv.className = 'modal-scrollbar-measure' - this.$body.append(scrollDiv) - var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth - this.$body[0].removeChild(scrollDiv) - return scrollbarWidth - } - - - // MODAL PLUGIN DEFINITION - // ======================= - - function Plugin(option, _relatedTarget) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.modal') - var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option) - - if (!data) $this.data('bs.modal', (data = new Modal(this, options))) - if (typeof option == 'string') data[option](_relatedTarget) - else if (options.show) data.show(_relatedTarget) - }) - } - - var old = $.fn.modal - - $.fn.modal = Plugin - $.fn.modal.Constructor = Modal - - - // MODAL NO CONFLICT - // ================= - - $.fn.modal.noConflict = function () { - $.fn.modal = old - return this - } - - - // MODAL DATA-API - // ============== - - $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) { - var $this = $(this) - var href = $this.attr('href') - var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7 - var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) - - if ($this.is('a')) e.preventDefault() - - $target.one('show.bs.modal', function (showEvent) { - if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown - $target.one('hidden.bs.modal', function () { - $this.is(':visible') && $this.trigger('focus') - }) - }) - Plugin.call($target, option, this) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: tooltip.js v3.3.0 - * http://getbootstrap.com/javascript/#tooltip - * Inspired by the original jQuery.tipsy by Jason Frame - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // TOOLTIP PUBLIC CLASS DEFINITION - // =============================== - - var Tooltip = function (element, options) { - this.type = - this.options = - this.enabled = - this.timeout = - this.hoverState = - this.$element = null - - this.init('tooltip', element, options) - } - - Tooltip.VERSION = '3.3.0' - - Tooltip.TRANSITION_DURATION = 150 - - Tooltip.DEFAULTS = { - animation: true, - placement: 'top', - selector: false, - template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>', - trigger: 'hover focus', - title: '', - delay: 0, - html: false, - container: false, - viewport: { - selector: 'body', - padding: 0 - } - } - - Tooltip.prototype.init = function (type, element, options) { - this.enabled = true - this.type = type - this.$element = $(element) - this.options = this.getOptions(options) - this.$viewport = this.options.viewport && $(this.options.viewport.selector || this.options.viewport) - - var triggers = this.options.trigger.split(' ') - - for (var i = triggers.length; i--;) { - var trigger = triggers[i] - - if (trigger == 'click') { - this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) - } else if (trigger != 'manual') { - var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' - var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' - - this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) - this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) - } - } - - this.options.selector ? - (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : - this.fixTitle() - } - - Tooltip.prototype.getDefaults = function () { - return Tooltip.DEFAULTS - } - - Tooltip.prototype.getOptions = function (options) { - options = $.extend({}, this.getDefaults(), this.$element.data(), options) - - if (options.delay && typeof options.delay == 'number') { - options.delay = { - show: options.delay, - hide: options.delay - } - } - - return options - } - - Tooltip.prototype.getDelegateOptions = function () { - var options = {} - var defaults = this.getDefaults() - - this._options && $.each(this._options, function (key, value) { - if (defaults[key] != value) options[key] = value - }) - - return options - } - - Tooltip.prototype.enter = function (obj) { - var self = obj instanceof this.constructor ? - obj : $(obj.currentTarget).data('bs.' + this.type) - - if (self && self.$tip && self.$tip.is(':visible')) { - self.hoverState = 'in' - return - } - - if (!self) { - self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) - $(obj.currentTarget).data('bs.' + this.type, self) - } - - clearTimeout(self.timeout) - - self.hoverState = 'in' - - if (!self.options.delay || !self.options.delay.show) return self.show() - - self.timeout = setTimeout(function () { - if (self.hoverState == 'in') self.show() - }, self.options.delay.show) - } - - Tooltip.prototype.leave = function (obj) { - var self = obj instanceof this.constructor ? - obj : $(obj.currentTarget).data('bs.' + this.type) - - if (!self) { - self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) - $(obj.currentTarget).data('bs.' + this.type, self) - } - - clearTimeout(self.timeout) - - self.hoverState = 'out' - - if (!self.options.delay || !self.options.delay.hide) return self.hide() - - self.timeout = setTimeout(function () { - if (self.hoverState == 'out') self.hide() - }, self.options.delay.hide) - } - - Tooltip.prototype.show = function () { - var e = $.Event('show.bs.' + this.type) - - if (this.hasContent() && this.enabled) { - this.$element.trigger(e) - - var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]) - if (e.isDefaultPrevented() || !inDom) return - var that = this - - var $tip = this.tip() - - var tipId = this.getUID(this.type) - - this.setContent() - $tip.attr('id', tipId) - this.$element.attr('aria-describedby', tipId) - - if (this.options.animation) $tip.addClass('fade') - - var placement = typeof this.options.placement == 'function' ? - this.options.placement.call(this, $tip[0], this.$element[0]) : - this.options.placement - - var autoToken = /\s?auto?\s?/i - var autoPlace = autoToken.test(placement) - if (autoPlace) placement = placement.replace(autoToken, '') || 'top' - - $tip - .detach() - .css({ top: 0, left: 0, display: 'block' }) - .addClass(placement) - .data('bs.' + this.type, this) - - this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) - - var pos = this.getPosition() - var actualWidth = $tip[0].offsetWidth - var actualHeight = $tip[0].offsetHeight - - if (autoPlace) { - var orgPlacement = placement - var $container = this.options.container ? $(this.options.container) : this.$element.parent() - var containerDim = this.getPosition($container) - - placement = placement == 'bottom' && pos.bottom + actualHeight > containerDim.bottom ? 'top' : - placement == 'top' && pos.top - actualHeight < containerDim.top ? 'bottom' : - placement == 'right' && pos.right + actualWidth > containerDim.width ? 'left' : - placement == 'left' && pos.left - actualWidth < containerDim.left ? 'right' : - placement - - $tip - .removeClass(orgPlacement) - .addClass(placement) - } - - var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight) - - this.applyPlacement(calculatedOffset, placement) - - var complete = function () { - var prevHoverState = that.hoverState - that.$element.trigger('shown.bs.' + that.type) - that.hoverState = null - - if (prevHoverState == 'out') that.leave(that) - } - - $.support.transition && this.$tip.hasClass('fade') ? - $tip - .one('bsTransitionEnd', complete) - .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : - complete() - } - } - - Tooltip.prototype.applyPlacement = function (offset, placement) { - var $tip = this.tip() - var width = $tip[0].offsetWidth - var height = $tip[0].offsetHeight - - // manually read margins because getBoundingClientRect includes difference - var marginTop = parseInt($tip.css('margin-top'), 10) - var marginLeft = parseInt($tip.css('margin-left'), 10) - - // we must check for NaN for ie 8/9 - if (isNaN(marginTop)) marginTop = 0 - if (isNaN(marginLeft)) marginLeft = 0 - - offset.top = offset.top + marginTop - offset.left = offset.left + marginLeft - - // $.fn.offset doesn't round pixel values - // so we use setOffset directly with our own function B-0 - $.offset.setOffset($tip[0], $.extend({ - using: function (props) { - $tip.css({ - top: Math.round(props.top), - left: Math.round(props.left) - }) - } - }, offset), 0) - - $tip.addClass('in') - - // check to see if placing tip in new offset caused the tip to resize itself - var actualWidth = $tip[0].offsetWidth - var actualHeight = $tip[0].offsetHeight - - if (placement == 'top' && actualHeight != height) { - offset.top = offset.top + height - actualHeight - } - - var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight) - - if (delta.left) offset.left += delta.left - else offset.top += delta.top - - var isVertical = /top|bottom/.test(placement) - var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight - var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight' - - $tip.offset(offset) - this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical) - } - - Tooltip.prototype.replaceArrow = function (delta, dimension, isHorizontal) { - this.arrow() - .css(isHorizontal ? 'left' : 'top', 50 * (1 - delta / dimension) + '%') - .css(isHorizontal ? 'top' : 'left', '') - } - - Tooltip.prototype.setContent = function () { - var $tip = this.tip() - var title = this.getTitle() - - $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) - $tip.removeClass('fade in top bottom left right') - } - - Tooltip.prototype.hide = function (callback) { - var that = this - var $tip = this.tip() - var e = $.Event('hide.bs.' + this.type) - - function complete() { - if (that.hoverState != 'in') $tip.detach() - that.$element - .removeAttr('aria-describedby') - .trigger('hidden.bs.' + that.type) - callback && callback() - } - - this.$element.trigger(e) - - if (e.isDefaultPrevented()) return - - $tip.removeClass('in') - - $.support.transition && this.$tip.hasClass('fade') ? - $tip - .one('bsTransitionEnd', complete) - .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : - complete() - - this.hoverState = null - - return this - } - - Tooltip.prototype.fixTitle = function () { - var $e = this.$element - if ($e.attr('title') || typeof ($e.attr('data-original-title')) != 'string') { - $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') - } - } - - Tooltip.prototype.hasContent = function () { - return this.getTitle() - } - - Tooltip.prototype.getPosition = function ($element) { - $element = $element || this.$element - - var el = $element[0] - var isBody = el.tagName == 'BODY' - - var elRect = el.getBoundingClientRect() - if (elRect.width == null) { - // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093 - elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top }) - } - var elOffset = isBody ? { top: 0, left: 0 } : $element.offset() - var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() } - var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null - - return $.extend({}, elRect, scroll, outerDims, elOffset) - } - - Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { - return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : - placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : - placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : - /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width } - - } - - Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) { - var delta = { top: 0, left: 0 } - if (!this.$viewport) return delta - - var viewportPadding = this.options.viewport && this.options.viewport.padding || 0 - var viewportDimensions = this.getPosition(this.$viewport) - - if (/right|left/.test(placement)) { - var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll - var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight - if (topEdgeOffset < viewportDimensions.top) { // top overflow - delta.top = viewportDimensions.top - topEdgeOffset - } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow - delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset - } - } else { - var leftEdgeOffset = pos.left - viewportPadding - var rightEdgeOffset = pos.left + viewportPadding + actualWidth - if (leftEdgeOffset < viewportDimensions.left) { // left overflow - delta.left = viewportDimensions.left - leftEdgeOffset - } else if (rightEdgeOffset > viewportDimensions.width) { // right overflow - delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset - } - } - - return delta - } - - Tooltip.prototype.getTitle = function () { - var title - var $e = this.$element - var o = this.options - - title = $e.attr('data-original-title') - || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) - - return title - } - - Tooltip.prototype.getUID = function (prefix) { - do prefix += ~~(Math.random() * 1000000) - while (document.getElementById(prefix)) - return prefix - } - - Tooltip.prototype.tip = function () { - return (this.$tip = this.$tip || $(this.options.template)) - } - - Tooltip.prototype.arrow = function () { - return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')) - } - - Tooltip.prototype.enable = function () { - this.enabled = true - } - - Tooltip.prototype.disable = function () { - this.enabled = false - } - - Tooltip.prototype.toggleEnabled = function () { - this.enabled = !this.enabled - } - - Tooltip.prototype.toggle = function (e) { - var self = this - if (e) { - self = $(e.currentTarget).data('bs.' + this.type) - if (!self) { - self = new this.constructor(e.currentTarget, this.getDelegateOptions()) - $(e.currentTarget).data('bs.' + this.type, self) - } - } - - self.tip().hasClass('in') ? self.leave(self) : self.enter(self) - } - - Tooltip.prototype.destroy = function () { - var that = this - clearTimeout(this.timeout) - this.hide(function () { - that.$element.off('.' + that.type).removeData('bs.' + that.type) - }) - } - - - // TOOLTIP PLUGIN DEFINITION - // ========================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.tooltip') - var options = typeof option == 'object' && option - var selector = options && options.selector - - if (!data && option == 'destroy') return - if (selector) { - if (!data) $this.data('bs.tooltip', (data = {})) - if (!data[selector]) data[selector] = new Tooltip(this, options) - } else { - if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options))) - } - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.tooltip - - $.fn.tooltip = Plugin - $.fn.tooltip.Constructor = Tooltip - - - // TOOLTIP NO CONFLICT - // =================== - - $.fn.tooltip.noConflict = function () { - $.fn.tooltip = old - return this - } - -}(jQuery); - -/* ======================================================================== - * Bootstrap: popover.js v3.3.0 - * http://getbootstrap.com/javascript/#popovers - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // POPOVER PUBLIC CLASS DEFINITION - // =============================== - - var Popover = function (element, options) { - this.init('popover', element, options) - } - - if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') - - Popover.VERSION = '3.3.0' - - Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { - placement: 'right', - trigger: 'click', - content: '', - template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>' - }) - - - // NOTE: POPOVER EXTENDS tooltip.js - // ================================ - - Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype) - - Popover.prototype.constructor = Popover - - Popover.prototype.getDefaults = function () { - return Popover.DEFAULTS - } - - Popover.prototype.setContent = function () { - var $tip = this.tip() - var title = this.getTitle() - var content = this.getContent() - - $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) - $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events - this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text' - ](content) - - $tip.removeClass('fade top bottom left right in') - - // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do - // this manually by checking the contents. - if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide() - } - - Popover.prototype.hasContent = function () { - return this.getTitle() || this.getContent() - } - - Popover.prototype.getContent = function () { - var $e = this.$element - var o = this.options - - return $e.attr('data-content') - || (typeof o.content == 'function' ? - o.content.call($e[0]) : - o.content) - } - - Popover.prototype.arrow = function () { - return (this.$arrow = this.$arrow || this.tip().find('.arrow')) - } - - Popover.prototype.tip = function () { - if (!this.$tip) this.$tip = $(this.options.template) - return this.$tip - } - - - // POPOVER PLUGIN DEFINITION - // ========================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.popover') - var options = typeof option == 'object' && option - var selector = options && options.selector - - if (!data && option == 'destroy') return - if (selector) { - if (!data) $this.data('bs.popover', (data = {})) - if (!data[selector]) data[selector] = new Popover(this, options) - } else { - if (!data) $this.data('bs.popover', (data = new Popover(this, options))) - } - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.popover - - $.fn.popover = Plugin - $.fn.popover.Constructor = Popover - - - // POPOVER NO CONFLICT - // =================== - - $.fn.popover.noConflict = function () { - $.fn.popover = old - return this - } - -}(jQuery); - -/* ======================================================================== - * Bootstrap: scrollspy.js v3.3.0 - * http://getbootstrap.com/javascript/#scrollspy - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // SCROLLSPY CLASS DEFINITION - // ========================== - - function ScrollSpy(element, options) { - var process = $.proxy(this.process, this) - - this.$body = $('body') - this.$scrollElement = $(element).is('body') ? $(window) : $(element) - this.options = $.extend({}, ScrollSpy.DEFAULTS, options) - this.selector = (this.options.target || '') + ' .nav li > a' - this.offsets = [] - this.targets = [] - this.activeTarget = null - this.scrollHeight = 0 - - this.$scrollElement.on('scroll.bs.scrollspy', process) - this.refresh() - this.process() - } - - ScrollSpy.VERSION = '3.3.0' - - ScrollSpy.DEFAULTS = { - offset: 10 - } - - ScrollSpy.prototype.getScrollHeight = function () { - return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight) - } - - ScrollSpy.prototype.refresh = function () { - var offsetMethod = 'offset' - var offsetBase = 0 - - if (!$.isWindow(this.$scrollElement[0])) { - offsetMethod = 'position' - offsetBase = this.$scrollElement.scrollTop() - } - - this.offsets = [] - this.targets = [] - this.scrollHeight = this.getScrollHeight() - - var self = this - - this.$body - .find(this.selector) - .map(function () { - var $el = $(this) - var href = $el.data('target') || $el.attr('href') - var $href = /^#./.test(href) && $(href) - - return ($href - && $href.length - && $href.is(':visible') - && [[$href[offsetMethod]().top + offsetBase, href]]) || null - }) - .sort(function (a, b) { return a[0] - b[0] }) - .each(function () { - self.offsets.push(this[0]) - self.targets.push(this[1]) - }) - } - - ScrollSpy.prototype.process = function () { - var scrollTop = this.$scrollElement.scrollTop() + this.options.offset - var scrollHeight = this.getScrollHeight() - var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height() - var offsets = this.offsets - var targets = this.targets - var activeTarget = this.activeTarget - var i - - if (this.scrollHeight != scrollHeight) { - this.refresh() - } - - if (scrollTop >= maxScroll) { - return activeTarget != (i = targets[targets.length - 1]) && this.activate(i) - } - - if (activeTarget && scrollTop < offsets[0]) { - this.activeTarget = null - return this.clear() - } - - for (i = offsets.length; i--;) { - activeTarget != targets[i] - && scrollTop >= offsets[i] - && (!offsets[i + 1] || scrollTop <= offsets[i + 1]) - && this.activate(targets[i]) - } - } - - ScrollSpy.prototype.activate = function (target) { - this.activeTarget = target - - this.clear() - - var selector = this.selector + - '[data-target="' + target + '"],' + - this.selector + '[href="' + target + '"]' - - var active = $(selector) - .parents('li') - .addClass('active') - - if (active.parent('.dropdown-menu').length) { - active = active - .closest('li.dropdown') - .addClass('active') - } - - active.trigger('activate.bs.scrollspy') - } - - ScrollSpy.prototype.clear = function () { - $(this.selector) - .parentsUntil(this.options.target, '.active') - .removeClass('active') - } - - - // SCROLLSPY PLUGIN DEFINITION - // =========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.scrollspy') - var options = typeof option == 'object' && option - - if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.scrollspy - - $.fn.scrollspy = Plugin - $.fn.scrollspy.Constructor = ScrollSpy - - - // SCROLLSPY NO CONFLICT - // ===================== - - $.fn.scrollspy.noConflict = function () { - $.fn.scrollspy = old - return this - } - - - // SCROLLSPY DATA-API - // ================== - - $(window).on('load.bs.scrollspy.data-api', function () { - $('[data-spy="scroll"]').each(function () { - var $spy = $(this) - Plugin.call($spy, $spy.data()) - }) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: tab.js v3.3.0 - * http://getbootstrap.com/javascript/#tabs - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // TAB CLASS DEFINITION - // ==================== - - var Tab = function (element) { - this.element = $(element) - } - - Tab.VERSION = '3.3.0' - - Tab.TRANSITION_DURATION = 150 - - Tab.prototype.show = function () { - var $this = this.element - var $ul = $this.closest('ul:not(.dropdown-menu)') - var selector = $this.data('target') - - if (!selector) { - selector = $this.attr('href') - selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 - } - - if ($this.parent('li').hasClass('active')) return - - var $previous = $ul.find('.active:last a') - var hideEvent = $.Event('hide.bs.tab', { - relatedTarget: $this[0] - }) - var showEvent = $.Event('show.bs.tab', { - relatedTarget: $previous[0] - }) - - $previous.trigger(hideEvent) - $this.trigger(showEvent) - - if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return - - var $target = $(selector) - - this.activate($this.closest('li'), $ul) - this.activate($target, $target.parent(), function () { - $previous.trigger({ - type: 'hidden.bs.tab', - relatedTarget: $this[0] - }) - $this.trigger({ - type: 'shown.bs.tab', - relatedTarget: $previous[0] - }) - }) - } - - Tab.prototype.activate = function (element, container, callback) { - var $active = container.find('> .active') - var transition = callback - && $.support.transition - && (($active.length && $active.hasClass('fade')) || !!container.find('> .fade').length) - - function next() { - $active - .removeClass('active') - .find('> .dropdown-menu > .active') - .removeClass('active') - .end() - .find('[data-toggle="tab"]') - .attr('aria-expanded', false) - - element - .addClass('active') - .find('[data-toggle="tab"]') - .attr('aria-expanded', true) - - if (transition) { - element[0].offsetWidth // reflow for transition - element.addClass('in') - } else { - element.removeClass('fade') - } - - if (element.parent('.dropdown-menu')) { - element - .closest('li.dropdown') - .addClass('active') - .end() - .find('[data-toggle="tab"]') - .attr('aria-expanded', true) - } - - callback && callback() - } - - $active.length && transition ? - $active - .one('bsTransitionEnd', next) - .emulateTransitionEnd(Tab.TRANSITION_DURATION) : - next() - - $active.removeClass('in') - } - - - // TAB PLUGIN DEFINITION - // ===================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.tab') - - if (!data) $this.data('bs.tab', (data = new Tab(this))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.tab - - $.fn.tab = Plugin - $.fn.tab.Constructor = Tab - - - // TAB NO CONFLICT - // =============== - - $.fn.tab.noConflict = function () { - $.fn.tab = old - return this - } - - - // TAB DATA-API - // ============ - - var clickHandler = function (e) { - e.preventDefault() - Plugin.call($(this), 'show') - } - - $(document) - .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler) - .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: affix.js v3.3.0 - * http://getbootstrap.com/javascript/#affix - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // AFFIX CLASS DEFINITION - // ====================== - - var Affix = function (element, options) { - this.options = $.extend({}, Affix.DEFAULTS, options) - - this.$target = $(this.options.target) - .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) - .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) - - this.$element = $(element) - this.affixed = - this.unpin = - this.pinnedOffset = null - - this.checkPosition() - } - - Affix.VERSION = '3.3.0' - - Affix.RESET = 'affix affix-top affix-bottom' - - Affix.DEFAULTS = { - offset: 0, - target: window - } - - Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) { - var scrollTop = this.$target.scrollTop() - var position = this.$element.offset() - var targetHeight = this.$target.height() - - if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false - - if (this.affixed == 'bottom') { - if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom' - return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom' - } - - var initializing = this.affixed == null - var colliderTop = initializing ? scrollTop : position.top - var colliderHeight = initializing ? targetHeight : height - - if (offsetTop != null && colliderTop <= offsetTop) return 'top' - if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom' - - return false - } - - Affix.prototype.getPinnedOffset = function () { - if (this.pinnedOffset) return this.pinnedOffset - this.$element.removeClass(Affix.RESET).addClass('affix') - var scrollTop = this.$target.scrollTop() - var position = this.$element.offset() - return (this.pinnedOffset = position.top - scrollTop) - } - - Affix.prototype.checkPositionWithEventLoop = function () { - setTimeout($.proxy(this.checkPosition, this), 1) - } - - Affix.prototype.checkPosition = function () { - if (!this.$element.is(':visible')) return - - var height = this.$element.height() - var offset = this.options.offset - var offsetTop = offset.top - var offsetBottom = offset.bottom - var scrollHeight = $('body').height() - - if (typeof offset != 'object') offsetBottom = offsetTop = offset - if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) - if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element) - - var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom) - - if (this.affixed != affix) { - if (this.unpin != null) this.$element.css('top', '') - - var affixType = 'affix' + (affix ? '-' + affix : '') - var e = $.Event(affixType + '.bs.affix') - - this.$element.trigger(e) - - if (e.isDefaultPrevented()) return - - this.affixed = affix - this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null - - this.$element - .removeClass(Affix.RESET) - .addClass(affixType) - .trigger(affixType.replace('affix', 'affixed') + '.bs.affix') - } - - if (affix == 'bottom') { - this.$element.offset({ - top: scrollHeight - height - offsetBottom - }) - } - } - - - // AFFIX PLUGIN DEFINITION - // ======================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.affix') - var options = typeof option == 'object' && option - - if (!data) $this.data('bs.affix', (data = new Affix(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.affix - - $.fn.affix = Plugin - $.fn.affix.Constructor = Affix - - - // AFFIX NO CONFLICT - // ================= - - $.fn.affix.noConflict = function () { - $.fn.affix = old - return this - } - - - // AFFIX DATA-API - // ============== - - $(window).on('load', function () { - $('[data-spy="affix"]').each(function () { - var $spy = $(this) - var data = $spy.data() - - data.offset = data.offset || {} - - if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom - if (data.offsetTop != null) data.offset.top = data.offsetTop - - Plugin.call($spy, data) - }) - }) - -}(jQuery); diff --git a/assets/js/bootstrap.min.js b/assets/js/bootstrap.min.js deleted file mode 100644 index 63866bcb..00000000 --- a/assets/js/bootstrap.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Bootstrap v3.3.0 (http://getbootstrap.com) - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ -if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.0",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.0",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active"));a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus","focus"==b.type)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.0",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c="prev"==a?-1:1,d=this.getItemIndex(b),e=(d+c)%this.$items.length;return this.$items.eq(e)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i="next"==b?"first":"last",j=this;if(!f.length){if(!this.options.wrap)return;f=this.$element.find(".item")[i]()}if(f.hasClass("active"))return this.sliding=!1;var k=f[0],l=a.Event("slide.bs.carousel",{relatedTarget:k,direction:h});if(this.$element.trigger(l),!l.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var m=a(this.$indicators.children()[this.getItemIndex(f)]);m&&m.addClass("active")}var n=a.Event("slid.bs.carousel",{relatedTarget:k,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),j.sliding=!1,setTimeout(function(){j.$element.trigger(n)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(n)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&"show"==b&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a(this.options.trigger).filter('[href="#'+b.id+'"], [data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.0",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0,trigger:'[data-toggle="collapse"]'},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.find("> .panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":a.extend({},e.data(),{trigger:this});c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=c(d),f={relatedTarget:this};e.hasClass("open")&&(e.trigger(b=a.Event("hide.bs.dropdown",f)),b.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f)))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.0",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(b){if(/(38|40|27|32)/.test(b.which)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var e=c(d),g=e.hasClass("open");if(!g&&27!=b.which||g&&27==b.which)return 27==b.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.divider):visible a",i=e.find('[role="menu"]'+h+', [role="listbox"]'+h);if(i.length){var j=i.index(b.target);38==b.which&&j>0&&j--,40==b.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f,g.prototype.keydown).on("keydown.bs.dropdown.data-api",'[role="menu"]',g.prototype.keydown).on("keydown.bs.dropdown.data-api",'[role="listbox"]',g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$backdrop=this.isShown=null,this.scrollbarWidth=0,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.3.0",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.$body.addClass("modal-open"),this.setScrollbar(),this.escape(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),e&&d.$element[0].offsetWidth,d.$element.addClass("in").attr("aria-hidden",!1),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$element.find(".modal-dialog").one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a('<div class="modal-backdrop '+e+'" />').prependTo(this.$element).on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.checkScrollbar=function(){this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.scrollbarWidth&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right","")},c.prototype.measureScrollbar=function(){if(document.body.clientWidth>=window.innerWidth)return 0;var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b,g=f&&f.selector;(e||"destroy"!=b)&&(g?(e||d.data("bs.tooltip",e={}),e[g]||(e[g]=new c(this,f))):e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};c.VERSION="3.3.0",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c&&c.$tip&&c.$tip.is(":visible")?void(c.hoverState="in"):(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.options.container?a(this.options.container):this.$element.parent(),p=this.getPosition(o);h="bottom"==h&&k.bottom+m>p.bottom?"top":"top"==h&&k.top-m<p.top?"bottom":"right"==h&&k.right+l>p.width?"left":"left"==h&&k.left-l<p.left?"right":h,f.removeClass(n).addClass(h)}var q=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(q,h);var r=function(){var a=e.hoverState;e.$element.trigger("shown.bs."+e.type),e.hoverState=null,"out"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",r).emulateTransitionEnd(c.TRANSITION_DURATION):r()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top=b.top+g,b.left=b.left+h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?"left":"top",50*(1-a/b)+"%").css(c?"top":"left","")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(b){function d(){"in"!=e.hoverState&&f.detach(),e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),b&&b()}var e=this,f=this.tip(),g=a.Event("hide.bs."+this.type);return this.$element.trigger(g),g.isDefaultPrevented()?void 0:(f.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=d?{top:0,left:0}:b.offset(),g={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},h=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,g,h,f)},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type)})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b,g=f&&f.selector;(e||"destroy"!=b)&&(g?(e||d.data("bs.popover",e={}),e[g]||(e[g]=new c(this,f))):e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.0",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},c.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){var e=a.proxy(this.process,this);this.$body=a("body"),this.$scrollElement=a(a(c).is("body")?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",e),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.0",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b="offset",c=0;a.isWindow(this.$scrollElement[0])||(b="position",c=this.$scrollElement.scrollTop()),this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight();var d=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+c,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){d.offsets.push(this[0]),d.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,this.clear();var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.3.0",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e) -}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.0",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=i?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=a("body").height();"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/assets/js/common.js b/assets/js/common.js deleted file mode 100644 index 912ff293..00000000 --- a/assets/js/common.js +++ /dev/null @@ -1,37 +0,0 @@ -/** - * @author Kishor Mali - */ - - -jQuery(document).ready(function(){ - - jQuery(document).on("click", ".deleteUser", function(){ - var userId = $(this).data("userid"), - hitURL = baseURL + "deleteUser", - currentRow = $(this); - - var confirmation = confirm("Are you sure to delete this user ?"); - - if(confirmation) - { - jQuery.ajax({ - type : "POST", - dataType : "json", - url : hitURL, - data : { userId : userId } - }).done(function(data){ - console.log(data); - currentRow.parents('tr').remove(); - if(data.status = true) { alert("User successfully deleted"); } - else if(data.status = false) { alert("User deletion failed"); } - else { alert("Access denied..!"); } - }); - } - }); - - - jQuery(document).on("click", ".searchList", function(){ - - }); - -}); diff --git a/assets/js/demo/chartjs-demo.js b/assets/js/demo/chartjs-demo.js deleted file mode 100644 index d82bdc9c..00000000 --- a/assets/js/demo/chartjs-demo.js +++ /dev/null @@ -1,217 +0,0 @@ -$(function () { - - var lineData = { - labels: ["January", "February", "March", "April", "May", "June", "July"], - datasets: [ - { - label: "Example dataset", - fillColor: "rgba(220,220,220,0.5)", - strokeColor: "rgba(220,220,220,1)", - pointColor: "rgba(220,220,220,1)", - pointStrokeColor: "#fff", - pointHighlightFill: "#fff", - pointHighlightStroke: "rgba(220,220,220,1)", - data: [65, 59, 80, 81, 56, 55, 40] - }, - { - label: "Example dataset", - fillColor: "rgba(26,179,148,0.5)", - strokeColor: "rgba(26,179,148,0.7)", - pointColor: "rgba(26,179,148,1)", - pointStrokeColor: "#fff", - pointHighlightFill: "#fff", - pointHighlightStroke: "rgba(26,179,148,1)", - data: [28, 48, 40, 19, 86, 27, 90] - } - ] - }; - - var lineOptions = { - scaleShowGridLines: true, - scaleGridLineColor: "rgba(0,0,0,.05)", - scaleGridLineWidth: 1, - bezierCurve: true, - bezierCurveTension: 0.4, - pointDot: true, - pointDotRadius: 4, - pointDotStrokeWidth: 1, - pointHitDetectionRadius: 20, - datasetStroke: true, - datasetStrokeWidth: 2, - datasetFill: true, - responsive: true, - }; - - - var ctx = document.getElementById("lineChart").getContext("2d"); - var myNewChart = new Chart(ctx).Line(lineData, lineOptions); - - var barData = { - labels: ["January", "February", "March", "April", "May", "June", "July"], - datasets: [ - { - label: "My First dataset", - fillColor: "rgba(220,220,220,0.5)", - strokeColor: "rgba(220,220,220,0.8)", - highlightFill: "rgba(220,220,220,0.75)", - highlightStroke: "rgba(220,220,220,1)", - data: [65, 59, 80, 81, 56, 55, 40] - }, - { - label: "My Second dataset", - fillColor: "rgba(26,179,148,0.5)", - strokeColor: "rgba(26,179,148,0.8)", - highlightFill: "rgba(26,179,148,0.75)", - highlightStroke: "rgba(26,179,148,1)", - data: [28, 48, 40, 19, 86, 27, 90] - } - ] - }; - - var barOptions = { - scaleBeginAtZero: true, - scaleShowGridLines: true, - scaleGridLineColor: "rgba(0,0,0,.05)", - scaleGridLineWidth: 1, - barShowStroke: true, - barStrokeWidth: 2, - barValueSpacing: 5, - barDatasetSpacing: 1, - responsive: true, - } - - - var ctx = document.getElementById("barChart").getContext("2d"); - var myNewChart = new Chart(ctx).Bar(barData, barOptions); - - var polarData = [ - { - value: 300, - color: "#a3e1d4", - highlight: "#1ab394", - label: "App" - }, - { - value: 140, - color: "#dedede", - highlight: "#1ab394", - label: "Software" - }, - { - value: 200, - color: "#b5b8cf", - highlight: "#1ab394", - label: "Laptop" - } - ]; - - var polarOptions = { - scaleShowLabelBackdrop: true, - scaleBackdropColor: "rgba(255,255,255,0.75)", - scaleBeginAtZero: true, - scaleBackdropPaddingY: 1, - scaleBackdropPaddingX: 1, - scaleShowLine: true, - segmentShowStroke: true, - segmentStrokeColor: "#fff", - segmentStrokeWidth: 2, - animationSteps: 100, - animationEasing: "easeOutBounce", - animateRotate: true, - animateScale: false, - responsive: true, - - }; - - var ctx = document.getElementById("polarChart").getContext("2d"); - var myNewChart = new Chart(ctx).PolarArea(polarData, polarOptions); - - var doughnutData = [ - { - value: 300, - color: "#a3e1d4", - highlight: "#1ab394", - label: "App" - }, - { - value: 50, - color: "#dedede", - highlight: "#1ab394", - label: "Software" - }, - { - value: 100, - color: "#b5b8cf", - highlight: "#1ab394", - label: "Laptop" - } - ]; - - var doughnutOptions = { - segmentShowStroke: true, - segmentStrokeColor: "#fff", - segmentStrokeWidth: 2, - percentageInnerCutout: 45, // This is 0 for Pie charts - animationSteps: 100, - animationEasing: "easeOutBounce", - animateRotate: true, - animateScale: false, - responsive: true, - }; - - - var ctx = document.getElementById("doughnutChart").getContext("2d"); - var myNewChart = new Chart(ctx).Doughnut(doughnutData, doughnutOptions); - - - var radarData = { - labels: ["Eating", "Drinking", "Sleeping", "Designing", "Coding", "Cycling", "Running"], - datasets: [ - { - label: "My First dataset", - fillColor: "rgba(220,220,220,0.2)", - strokeColor: "rgba(220,220,220,1)", - pointColor: "rgba(220,220,220,1)", - pointStrokeColor: "#fff", - pointHighlightFill: "#fff", - pointHighlightStroke: "rgba(220,220,220,1)", - data: [65, 59, 90, 81, 56, 55, 40] - }, - { - label: "My Second dataset", - fillColor: "rgba(26,179,148,0.2)", - strokeColor: "rgba(26,179,148,1)", - pointColor: "rgba(26,179,148,1)", - pointStrokeColor: "#fff", - pointHighlightFill: "#fff", - pointHighlightStroke: "rgba(151,187,205,1)", - data: [28, 48, 40, 19, 96, 27, 100] - } - ] - }; - - var radarOptions = { - scaleShowLine: true, - angleShowLineOut: true, - scaleShowLabels: false, - scaleBeginAtZero: true, - angleLineColor: "rgba(0,0,0,.1)", - angleLineWidth: 1, - pointLabelFontFamily: "'Arial'", - pointLabelFontStyle: "normal", - pointLabelFontSize: 10, - pointLabelFontColor: "#666", - pointDot: true, - pointDotRadius: 3, - pointDotStrokeWidth: 1, - pointHitDetectionRadius: 20, - datasetStroke: true, - datasetStrokeWidth: 2, - datasetFill: true, - responsive: true, - } - - var ctx = document.getElementById("radarChart").getContext("2d"); - var myNewChart = new Chart(ctx).Radar(radarData, radarOptions); - -}); \ No newline at end of file diff --git a/assets/js/demo/dashboard-demo.js b/assets/js/demo/dashboard-demo.js deleted file mode 100644 index e5e23f60..00000000 --- a/assets/js/demo/dashboard-demo.js +++ /dev/null @@ -1,117 +0,0 @@ -$(function() { - - Morris.Area({ - element: 'morris-area-chart', - data: [{ - period: '2010 Q1', - iphone: 2666, - ipad: null, - itouch: 2647 - }, { - period: '2010 Q2', - iphone: 2778, - ipad: 2294, - itouch: 2441 - }, { - period: '2010 Q3', - iphone: 4912, - ipad: 1969, - itouch: 2501 - }, { - period: '2010 Q4', - iphone: 3767, - ipad: 3597, - itouch: 5689 - }, { - period: '2011 Q1', - iphone: 6810, - ipad: 1914, - itouch: 2293 - }, { - period: '2011 Q2', - iphone: 5670, - ipad: 4293, - itouch: 1881 - }, { - period: '2011 Q3', - iphone: 4820, - ipad: 3795, - itouch: 1588 - }, { - period: '2011 Q4', - iphone: 15073, - ipad: 5967, - itouch: 5175 - }, { - period: '2012 Q1', - iphone: 10687, - ipad: 4460, - itouch: 2028 - }, { - period: '2012 Q2', - iphone: 8432, - ipad: 5713, - itouch: 1791 - }], - xkey: 'period', - ykeys: ['iphone', 'ipad', 'itouch'], - labels: ['iPhone', 'iPad', 'iPod Touch'], - pointSize: 2, - hideHover: 'auto', - resize: true - }); - - Morris.Donut({ - element: 'morris-donut-chart', - data: [{ - label: "Download Sales", - value: 12 - }, { - label: "In-Store Sales", - value: 30 - }, { - label: "Mail-Order Sales", - value: 20 - }], - resize: true - }); - - Morris.Bar({ - element: 'morris-bar-chart', - data: [{ - y: '2006', - a: 100, - b: 90 - }, { - y: '2007', - a: 75, - b: 65 - }, { - y: '2008', - a: 50, - b: 40 - }, { - y: '2009', - a: 75, - b: 65 - }, { - y: '2010', - a: 50, - b: 40 - }, { - y: '2011', - a: 75, - b: 65 - }, { - y: '2012', - a: 100, - b: 90 - }], - xkey: 'y', - ykeys: ['a', 'b'], - labels: ['Series A', 'Series B'], - hideHover: 'auto', - resize: true - }); - -}); diff --git a/assets/js/demo/flot-demo.js b/assets/js/demo/flot-demo.js deleted file mode 100644 index 6af373a3..00000000 --- a/assets/js/demo/flot-demo.js +++ /dev/null @@ -1,308 +0,0 @@ -//Flot Bar Chart -$(function() { - var barOptions = { - series: { - bars: { - show: true, - barWidth: 0.6, - fill: true, - fillColor: { - colors: [{ - opacity: 0.8 - }, { - opacity: 0.8 - }] - } - } - }, - xaxis: { - tickDecimals: 0 - }, - colors: ["#1ab394"], - grid: { - color: "#999999", - hoverable: true, - clickable: true, - tickColor: "#D4D4D4", - borderWidth:0 - }, - legend: { - show: false - }, - tooltip: true, - tooltipOpts: { - content: "x: %x, y: %y" - } - }; - var barData = { - label: "bar", - data: [ - [1, 34], - [2, 25], - [3, 19], - [4, 34], - [5, 32], - [6, 44] - ] - }; - $.plot($("#flot-bar-chart"), [barData], barOptions); - -}); - -$(function() { - var barOptions = { - series: { - lines: { - show: true, - lineWidth: 2, - fill: true, - fillColor: { - colors: [{ - opacity: 0.0 - }, { - opacity: 0.0 - }] - } - } - }, - xaxis: { - tickDecimals: 0 - }, - colors: ["#1ab394"], - grid: { - color: "#999999", - hoverable: true, - clickable: true, - tickColor: "#D4D4D4", - borderWidth:0 - }, - legend: { - show: false - }, - tooltip: true, - tooltipOpts: { - content: "x: %x, y: %y" - } - }; - var barData = { - label: "bar", - data: [ - [1, 34], - [2, 25], - [3, 19], - [4, 34], - [5, 32], - [6, 44] - ] - }; - $.plot($("#flot-line-chart"), [barData], barOptions); - -}); -//Flot Pie Chart -$(function() { - - var data = [{ - label: "Sales 1", - data: 21, - color: "#d3d3d3", - }, { - label: "Sales 2", - data: 3, - color: "#bababa", - }, { - label: "Sales 3", - data: 15, - color: "#79d2c0", - }, { - label: "Sales 4", - data: 52, - color: "#1ab394", - }]; - - var plotObj = $.plot($("#flot-pie-chart"), data, { - series: { - pie: { - show: true - } - }, - grid: { - hoverable: true - }, - tooltip: true, - tooltipOpts: { - content: "%p.0%, %s", // show percentages, rounding to 2 decimal places - shifts: { - x: 20, - y: 0 - }, - defaultTheme: false - } - }); - -}); - -$(function() { - - var container = $("#flot-line-chart-moving"); - - // Determine how many data points to keep based on the placeholder's initial size; - // this gives us a nice high-res plot while avoiding more than one point per pixel. - - var maximum = container.outerWidth() / 2 || 300; - - // - - var data = []; - - function getRandomData() { - - if (data.length) { - data = data.slice(1); - } - - while (data.length < maximum) { - var previous = data.length ? data[data.length - 1] : 50; - var y = previous + Math.random() * 10 - 5; - data.push(y < 0 ? 0 : y > 100 ? 100 : y); - } - - // zip the generated y values with the x values - - var res = []; - for (var i = 0; i < data.length; ++i) { - res.push([i, data[i]]) - } - - return res; - } - - series = [{ - data: getRandomData(), - lines: { - fill: true - } - }]; - - - var plot = $.plot(container, series, { - grid: { - - color: "#999999", - tickColor: "#D4D4D4", - borderWidth:0, - minBorderMargin: 20, - labelMargin: 10, - backgroundColor: { - colors: ["#ffffff", "#ffffff"] - }, - margin: { - top: 8, - bottom: 20, - left: 20 - }, - markings: function(axes) { - var markings = []; - var xaxis = axes.xaxis; - for (var x = Math.floor(xaxis.min); x < xaxis.max; x += xaxis.tickSize * 2) { - markings.push({ - xaxis: { - from: x, - to: x + xaxis.tickSize - }, - color: "#fff" - }); - } - return markings; - } - }, - colors: ["#1ab394"], - xaxis: { - tickFormatter: function() { - return ""; - } - }, - yaxis: { - min: 0, - max: 110 - }, - legend: { - show: true - } - }); - - // Update the random dataset at 25FPS for a smoothly-animating chart - - setInterval(function updateRandom() { - series[0].data = getRandomData(); - plot.setData(series); - plot.draw(); - }, 40); - -}); - -//Flot Multiple Axes Line Chart -$(function() { - var oilprices = [ [1167692400000, 61.05], [1167778800000, 58.32], [1167865200000, 57.35], [1167951600000, 56.31], [1168210800000, 55.55], [1168297200000, 55.64], [1168383600000, 54.02], [1168470000000, 51.88], [1168556400000, 52.99], [1168815600000, 52.99], [1168902000000, 51.21], [1168988400000, 52.24], [1169074800000, 50.48], [1169161200000, 51.99], [1169420400000, 51.13], [1169506800000, 55.04], [1169593200000, 55.37], [1169679600000, 54.23], [1169766000000, 55.42], [1170025200000, 54.01], [1170111600000, 56.97], [1170198000000, 58.14], [1170284400000, 58.14], [1170370800000, 59.02], [1170630000000, 58.74], [1170716400000, 58.88], [1170802800000, 57.71], [1170889200000, 59.71], [1170975600000, 59.89], [1171234800000, 57.81], [1171321200000, 59.06], [1171407600000, 58.00], [1171494000000, 57.99], [1171580400000, 59.39], [1171839600000, 59.39], [1171926000000, 58.07], [1172012400000, 60.07], [1172098800000, 61.14], [1172444400000, 61.39], [1172530800000, 61.46], [1172617200000, 61.79], [1172703600000, 62.00], [1172790000000, 60.07], [1173135600000, 60.69], [1173222000000, 61.82], [1173308400000, 60.05], [1173654000000, 58.91], [1173740400000, 57.93], [1173826800000, 58.16], [1173913200000, 57.55], [1173999600000, 57.11], [1174258800000, 56.59], [1174345200000, 59.61], [1174518000000, 61.69], [1174604400000, 62.28], [1174860000000, 62.91], [1174946400000, 62.93], [1175032800000, 64.03], [1175119200000, 66.03], [1175205600000, 65.87], [1175464800000, 64.64], [1175637600000, 64.38], [1175724000000, 64.28], [1175810400000, 64.28], [1176069600000, 61.51], [1176156000000, 61.89], [1176242400000, 62.01], [1176328800000, 63.85], [1176415200000, 63.63], [1176674400000, 63.61], [1176760800000, 63.10], [1176847200000, 63.13], [1176933600000, 61.83], [1177020000000, 63.38], [1177279200000, 64.58], [1177452000000, 65.84], [1177538400000, 65.06], [1177624800000, 66.46], [1177884000000, 64.40], [1178056800000, 63.68], [1178143200000, 63.19], [1178229600000, 61.93], [1178488800000, 61.47], [1178575200000, 61.55], [1178748000000, 61.81], [1178834400000, 62.37], [1179093600000, 62.46], [1179180000000, 63.17], [1179266400000, 62.55], [1179352800000, 64.94], [1179698400000, 66.27], [1179784800000, 65.50], [1179871200000, 65.77], [1179957600000, 64.18], [1180044000000, 65.20], [1180389600000, 63.15], [1180476000000, 63.49], [1180562400000, 65.08], [1180908000000, 66.30], [1180994400000, 65.96], [1181167200000, 66.93], [1181253600000, 65.98], [1181599200000, 65.35], [1181685600000, 66.26], [1181858400000, 68.00], [1182117600000, 69.09], [1182204000000, 69.10], [1182290400000, 68.19], [1182376800000, 68.19], [1182463200000, 69.14], [1182722400000, 68.19], [1182808800000, 67.77], [1182895200000, 68.97], [1182981600000, 69.57], [1183068000000, 70.68], [1183327200000, 71.09], [1183413600000, 70.92], [1183586400000, 71.81], [1183672800000, 72.81], [1183932000000, 72.19], [1184018400000, 72.56], [1184191200000, 72.50], [1184277600000, 74.15], [1184623200000, 75.05], [1184796000000, 75.92], [1184882400000, 75.57], [1185141600000, 74.89], [1185228000000, 73.56], [1185314400000, 75.57], [1185400800000, 74.95], [1185487200000, 76.83], [1185832800000, 78.21], [1185919200000, 76.53], [1186005600000, 76.86], [1186092000000, 76.00], [1186437600000, 71.59], [1186696800000, 71.47], [1186956000000, 71.62], [1187042400000, 71.00], [1187301600000, 71.98], [1187560800000, 71.12], [1187647200000, 69.47], [1187733600000, 69.26], [1187820000000, 69.83], [1187906400000, 71.09], [1188165600000, 71.73], [1188338400000, 73.36], [1188511200000, 74.04], [1188856800000, 76.30], [1189116000000, 77.49], [1189461600000, 78.23], [1189548000000, 79.91], [1189634400000, 80.09], [1189720800000, 79.10], [1189980000000, 80.57], [1190066400000, 81.93], [1190239200000, 83.32], [1190325600000, 81.62], [1190584800000, 80.95], [1190671200000, 79.53], [1190757600000, 80.30], [1190844000000, 82.88], [1190930400000, 81.66], [1191189600000, 80.24], [1191276000000, 80.05], [1191362400000, 79.94], [1191448800000, 81.44], [1191535200000, 81.22], [1191794400000, 79.02], [1191880800000, 80.26], [1191967200000, 80.30], [1192053600000, 83.08], [1192140000000, 83.69], [1192399200000, 86.13], [1192485600000, 87.61], [1192572000000, 87.40], [1192658400000, 89.47], [1192744800000, 88.60], [1193004000000, 87.56], [1193090400000, 87.56], [1193176800000, 87.10], [1193263200000, 91.86], [1193612400000, 93.53], [1193698800000, 94.53], [1193871600000, 95.93], [1194217200000, 93.98], [1194303600000, 96.37], [1194476400000, 95.46], [1194562800000, 96.32], [1195081200000, 93.43], [1195167600000, 95.10], [1195426800000, 94.64], [1195513200000, 95.10], [1196031600000, 97.70], [1196118000000, 94.42], [1196204400000, 90.62], [1196290800000, 91.01], [1196377200000, 88.71], [1196636400000, 88.32], [1196809200000, 90.23], [1196982000000, 88.28], [1197241200000, 87.86], [1197327600000, 90.02], [1197414000000, 92.25], [1197586800000, 90.63], [1197846000000, 90.63], [1197932400000, 90.49], [1198018800000, 91.24], [1198105200000, 91.06], [1198191600000, 90.49], [1198710000000, 96.62], [1198796400000, 96.00], [1199142000000, 99.62], [1199314800000, 99.18], [1199401200000, 95.09], [1199660400000, 96.33], [1199833200000, 95.67], [1200351600000, 91.90], [1200438000000, 90.84], [1200524400000, 90.13], [1200610800000, 90.57], [1200956400000, 89.21], [1201042800000, 86.99], [1201129200000, 89.85], [1201474800000, 90.99], [1201561200000, 91.64], [1201647600000, 92.33], [1201734000000, 91.75], [1202079600000, 90.02], [1202166000000, 88.41], [1202252400000, 87.14], [1202338800000, 88.11], [1202425200000, 91.77], [1202770800000, 92.78], [1202857200000, 93.27], [1202943600000, 95.46], [1203030000000, 95.46], [1203289200000, 101.74], [1203462000000, 98.81], [1203894000000, 100.88], [1204066800000, 99.64], [1204153200000, 102.59], [1204239600000, 101.84], [1204498800000, 99.52], [1204585200000, 99.52], [1204671600000, 104.52], [1204758000000, 105.47], [1204844400000, 105.15], [1205103600000, 108.75], [1205276400000, 109.92], [1205362800000, 110.33], [1205449200000, 110.21], [1205708400000, 105.68], [1205967600000, 101.84], [1206313200000, 100.86], [1206399600000, 101.22], [1206486000000, 105.90], [1206572400000, 107.58], [1206658800000, 105.62], [1206914400000, 101.58], [1207000800000, 100.98], [1207173600000, 103.83], [1207260000000, 106.23], [1207605600000, 108.50], [1207778400000, 110.11], [1207864800000, 110.14], [1208210400000, 113.79], [1208296800000, 114.93], [1208383200000, 114.86], [1208728800000, 117.48], [1208815200000, 118.30], [1208988000000, 116.06], [1209074400000, 118.52], [1209333600000, 118.75], [1209420000000, 113.46], [1209592800000, 112.52], [1210024800000, 121.84], [1210111200000, 123.53], [1210197600000, 123.69], [1210543200000, 124.23], [1210629600000, 125.80], [1210716000000, 126.29], [1211148000000, 127.05], [1211320800000, 129.07], [1211493600000, 132.19], [1211839200000, 128.85], [1212357600000, 127.76], [1212703200000, 138.54], [1212962400000, 136.80], [1213135200000, 136.38], [1213308000000, 134.86], [1213653600000, 134.01], [1213740000000, 136.68], [1213912800000, 135.65], [1214172000000, 134.62], [1214258400000, 134.62], [1214344800000, 134.62], [1214431200000, 139.64], [1214517600000, 140.21], [1214776800000, 140.00], [1214863200000, 140.97], [1214949600000, 143.57], [1215036000000, 145.29], [1215381600000, 141.37], [1215468000000, 136.04], [1215727200000, 146.40], [1215986400000, 145.18], [1216072800000, 138.74], [1216159200000, 134.60], [1216245600000, 129.29], [1216332000000, 130.65], [1216677600000, 127.95], [1216850400000, 127.95], [1217282400000, 122.19], [1217455200000, 124.08], [1217541600000, 125.10], [1217800800000, 121.41], [1217887200000, 119.17], [1217973600000, 118.58], [1218060000000, 120.02], [1218405600000, 114.45], [1218492000000, 113.01], [1218578400000, 116.00], [1218751200000, 113.77], [1219010400000, 112.87], [1219096800000, 114.53], [1219269600000, 114.98], [1219356000000, 114.98], [1219701600000, 116.27], [1219788000000, 118.15], [1219874400000, 115.59], [1219960800000, 115.46], [1220306400000, 109.71], [1220392800000, 109.35], [1220565600000, 106.23], [1220824800000, 106.34] ]; - var exchangerates = [ [1167606000000, 0.7580], [1167692400000, 0.7580], [1167778800000, 0.75470], [1167865200000, 0.75490], [1167951600000, 0.76130], [1168038000000, 0.76550], [1168124400000, 0.76930], [1168210800000, 0.76940], [1168297200000, 0.76880], [1168383600000, 0.76780], [1168470000000, 0.77080], [1168556400000, 0.77270], [1168642800000, 0.77490], [1168729200000, 0.77410], [1168815600000, 0.77410], [1168902000000, 0.77320], [1168988400000, 0.77270], [1169074800000, 0.77370], [1169161200000, 0.77240], [1169247600000, 0.77120], [1169334000000, 0.7720], [1169420400000, 0.77210], [1169506800000, 0.77170], [1169593200000, 0.77040], [1169679600000, 0.7690], [1169766000000, 0.77110], [1169852400000, 0.7740], [1169938800000, 0.77450], [1170025200000, 0.77450], [1170111600000, 0.7740], [1170198000000, 0.77160], [1170284400000, 0.77130], [1170370800000, 0.76780], [1170457200000, 0.76880], [1170543600000, 0.77180], [1170630000000, 0.77180], [1170716400000, 0.77280], [1170802800000, 0.77290], [1170889200000, 0.76980], [1170975600000, 0.76850], [1171062000000, 0.76810], [1171148400000, 0.7690], [1171234800000, 0.7690], [1171321200000, 0.76980], [1171407600000, 0.76990], [1171494000000, 0.76510], [1171580400000, 0.76130], [1171666800000, 0.76160], [1171753200000, 0.76140], [1171839600000, 0.76140], [1171926000000, 0.76070], [1172012400000, 0.76020], [1172098800000, 0.76110], [1172185200000, 0.76220], [1172271600000, 0.76150], [1172358000000, 0.75980], [1172444400000, 0.75980], [1172530800000, 0.75920], [1172617200000, 0.75730], [1172703600000, 0.75660], [1172790000000, 0.75670], [1172876400000, 0.75910], [1172962800000, 0.75820], [1173049200000, 0.75850], [1173135600000, 0.76130], [1173222000000, 0.76310], [1173308400000, 0.76150], [1173394800000, 0.760], [1173481200000, 0.76130], [1173567600000, 0.76270], [1173654000000, 0.76270], [1173740400000, 0.76080], [1173826800000, 0.75830], [1173913200000, 0.75750], [1173999600000, 0.75620], [1174086000000, 0.7520], [1174172400000, 0.75120], [1174258800000, 0.75120], [1174345200000, 0.75170], [1174431600000, 0.7520], [1174518000000, 0.75110], [1174604400000, 0.7480], [1174690800000, 0.75090], [1174777200000, 0.75310], [1174860000000, 0.75310], [1174946400000, 0.75270], [1175032800000, 0.74980], [1175119200000, 0.74930], [1175205600000, 0.75040], [1175292000000, 0.750], [1175378400000, 0.74910], [1175464800000, 0.74910], [1175551200000, 0.74850], [1175637600000, 0.74840], [1175724000000, 0.74920], [1175810400000, 0.74710], [1175896800000, 0.74590], [1175983200000, 0.74770], [1176069600000, 0.74770], [1176156000000, 0.74830], [1176242400000, 0.74580], [1176328800000, 0.74480], [1176415200000, 0.7430], [1176501600000, 0.73990], [1176588000000, 0.73950], [1176674400000, 0.73950], [1176760800000, 0.73780], [1176847200000, 0.73820], [1176933600000, 0.73620], [1177020000000, 0.73550], [1177106400000, 0.73480], [1177192800000, 0.73610], [1177279200000, 0.73610], [1177365600000, 0.73650], [1177452000000, 0.73620], [1177538400000, 0.73310], [1177624800000, 0.73390], [1177711200000, 0.73440], [1177797600000, 0.73270], [1177884000000, 0.73270], [1177970400000, 0.73360], [1178056800000, 0.73330], [1178143200000, 0.73590], [1178229600000, 0.73590], [1178316000000, 0.73720], [1178402400000, 0.7360], [1178488800000, 0.7360], [1178575200000, 0.7350], [1178661600000, 0.73650], [1178748000000, 0.73840], [1178834400000, 0.73950], [1178920800000, 0.74130], [1179007200000, 0.73970], [1179093600000, 0.73960], [1179180000000, 0.73850], [1179266400000, 0.73780], [1179352800000, 0.73660], [1179439200000, 0.740], [1179525600000, 0.74110], [1179612000000, 0.74060], [1179698400000, 0.74050], [1179784800000, 0.74140], [1179871200000, 0.74310], [1179957600000, 0.74310], [1180044000000, 0.74380], [1180130400000, 0.74430], [1180216800000, 0.74430], [1180303200000, 0.74430], [1180389600000, 0.74340], [1180476000000, 0.74290], [1180562400000, 0.74420], [1180648800000, 0.7440], [1180735200000, 0.74390], [1180821600000, 0.74370], [1180908000000, 0.74370], [1180994400000, 0.74290], [1181080800000, 0.74030], [1181167200000, 0.73990], [1181253600000, 0.74180], [1181340000000, 0.74680], [1181426400000, 0.7480], [1181512800000, 0.7480], [1181599200000, 0.7490], [1181685600000, 0.74940], [1181772000000, 0.75220], [1181858400000, 0.75150], [1181944800000, 0.75020], [1182031200000, 0.74720], [1182117600000, 0.74720], [1182204000000, 0.74620], [1182290400000, 0.74550], [1182376800000, 0.74490], [1182463200000, 0.74670], [1182549600000, 0.74580], [1182636000000, 0.74270], [1182722400000, 0.74270], [1182808800000, 0.7430], [1182895200000, 0.74290], [1182981600000, 0.7440], [1183068000000, 0.7430], [1183154400000, 0.74220], [1183240800000, 0.73880], [1183327200000, 0.73880], [1183413600000, 0.73690], [1183500000000, 0.73450], [1183586400000, 0.73450], [1183672800000, 0.73450], [1183759200000, 0.73520], [1183845600000, 0.73410], [1183932000000, 0.73410], [1184018400000, 0.7340], [1184104800000, 0.73240], [1184191200000, 0.72720], [1184277600000, 0.72640], [1184364000000, 0.72550], [1184450400000, 0.72580], [1184536800000, 0.72580], [1184623200000, 0.72560], [1184709600000, 0.72570], [1184796000000, 0.72470], [1184882400000, 0.72430], [1184968800000, 0.72440], [1185055200000, 0.72350], [1185141600000, 0.72350], [1185228000000, 0.72350], [1185314400000, 0.72350], [1185400800000, 0.72620], [1185487200000, 0.72880], [1185573600000, 0.73010], [1185660000000, 0.73370], [1185746400000, 0.73370], [1185832800000, 0.73240], [1185919200000, 0.72970], [1186005600000, 0.73170], [1186092000000, 0.73150], [1186178400000, 0.72880], [1186264800000, 0.72630], [1186351200000, 0.72630], [1186437600000, 0.72420], [1186524000000, 0.72530], [1186610400000, 0.72640], [1186696800000, 0.7270], [1186783200000, 0.73120], [1186869600000, 0.73050], [1186956000000, 0.73050], [1187042400000, 0.73180], [1187128800000, 0.73580], [1187215200000, 0.74090], [1187301600000, 0.74540], [1187388000000, 0.74370], [1187474400000, 0.74240], [1187560800000, 0.74240], [1187647200000, 0.74150], [1187733600000, 0.74190], [1187820000000, 0.74140], [1187906400000, 0.73770], [1187992800000, 0.73550], [1188079200000, 0.73150], [1188165600000, 0.73150], [1188252000000, 0.7320], [1188338400000, 0.73320], [1188424800000, 0.73460], [1188511200000, 0.73280], [1188597600000, 0.73230], [1188684000000, 0.7340], [1188770400000, 0.7340], [1188856800000, 0.73360], [1188943200000, 0.73510], [1189029600000, 0.73460], [1189116000000, 0.73210], [1189202400000, 0.72940], [1189288800000, 0.72660], [1189375200000, 0.72660], [1189461600000, 0.72540], [1189548000000, 0.72420], [1189634400000, 0.72130], [1189720800000, 0.71970], [1189807200000, 0.72090], [1189893600000, 0.7210], [1189980000000, 0.7210], [1190066400000, 0.7210], [1190152800000, 0.72090], [1190239200000, 0.71590], [1190325600000, 0.71330], [1190412000000, 0.71050], [1190498400000, 0.70990], [1190584800000, 0.70990], [1190671200000, 0.70930], [1190757600000, 0.70930], [1190844000000, 0.70760], [1190930400000, 0.7070], [1191016800000, 0.70490], [1191103200000, 0.70120], [1191189600000, 0.70110], [1191276000000, 0.70190], [1191362400000, 0.70460], [1191448800000, 0.70630], [1191535200000, 0.70890], [1191621600000, 0.70770], [1191708000000, 0.70770], [1191794400000, 0.70770], [1191880800000, 0.70910], [1191967200000, 0.71180], [1192053600000, 0.70790], [1192140000000, 0.70530], [1192226400000, 0.7050], [1192312800000, 0.70550], [1192399200000, 0.70550], [1192485600000, 0.70450], [1192572000000, 0.70510], [1192658400000, 0.70510], [1192744800000, 0.70170], [1192831200000, 0.70], [1192917600000, 0.69950], [1193004000000, 0.69940], [1193090400000, 0.70140], [1193176800000, 0.70360], [1193263200000, 0.70210], [1193349600000, 0.70020], [1193436000000, 0.69670], [1193522400000, 0.6950], [1193612400000, 0.6950], [1193698800000, 0.69390], [1193785200000, 0.6940], [1193871600000, 0.69220], [1193958000000, 0.69190], [1194044400000, 0.69140], [1194130800000, 0.68940], [1194217200000, 0.68910], [1194303600000, 0.69040], [1194390000000, 0.6890], [1194476400000, 0.68340], [1194562800000, 0.68230], [1194649200000, 0.68070], [1194735600000, 0.68150], [1194822000000, 0.68150], [1194908400000, 0.68470], [1194994800000, 0.68590], [1195081200000, 0.68220], [1195167600000, 0.68270], [1195254000000, 0.68370], [1195340400000, 0.68230], [1195426800000, 0.68220], [1195513200000, 0.68220], [1195599600000, 0.67920], [1195686000000, 0.67460], [1195772400000, 0.67350], [1195858800000, 0.67310], [1195945200000, 0.67420], [1196031600000, 0.67440], [1196118000000, 0.67390], [1196204400000, 0.67310], [1196290800000, 0.67610], [1196377200000, 0.67610], [1196463600000, 0.67850], [1196550000000, 0.68180], [1196636400000, 0.68360], [1196722800000, 0.68230], [1196809200000, 0.68050], [1196895600000, 0.67930], [1196982000000, 0.68490], [1197068400000, 0.68330], [1197154800000, 0.68250], [1197241200000, 0.68250], [1197327600000, 0.68160], [1197414000000, 0.67990], [1197500400000, 0.68130], [1197586800000, 0.68090], [1197673200000, 0.68680], [1197759600000, 0.69330], [1197846000000, 0.69330], [1197932400000, 0.69450], [1198018800000, 0.69440], [1198105200000, 0.69460], [1198191600000, 0.69640], [1198278000000, 0.69650], [1198364400000, 0.69560], [1198450800000, 0.69560], [1198537200000, 0.6950], [1198623600000, 0.69480], [1198710000000, 0.69280], [1198796400000, 0.68870], [1198882800000, 0.68240], [1198969200000, 0.67940], [1199055600000, 0.67940], [1199142000000, 0.68030], [1199228400000, 0.68550], [1199314800000, 0.68240], [1199401200000, 0.67910], [1199487600000, 0.67830], [1199574000000, 0.67850], [1199660400000, 0.67850], [1199746800000, 0.67970], [1199833200000, 0.680], [1199919600000, 0.68030], [1200006000000, 0.68050], [1200092400000, 0.6760], [1200178800000, 0.6770], [1200265200000, 0.6770], [1200351600000, 0.67360], [1200438000000, 0.67260], [1200524400000, 0.67640], [1200610800000, 0.68210], [1200697200000, 0.68310], [1200783600000, 0.68420], [1200870000000, 0.68420], [1200956400000, 0.68870], [1201042800000, 0.69030], [1201129200000, 0.68480], [1201215600000, 0.68240], [1201302000000, 0.67880], [1201388400000, 0.68140], [1201474800000, 0.68140], [1201561200000, 0.67970], [1201647600000, 0.67690], [1201734000000, 0.67650], [1201820400000, 0.67330], [1201906800000, 0.67290], [1201993200000, 0.67580], [1202079600000, 0.67580], [1202166000000, 0.6750], [1202252400000, 0.6780], [1202338800000, 0.68330], [1202425200000, 0.68560], [1202511600000, 0.69030], [1202598000000, 0.68960], [1202684400000, 0.68960], [1202770800000, 0.68820], [1202857200000, 0.68790], [1202943600000, 0.68620], [1203030000000, 0.68520], [1203116400000, 0.68230], [1203202800000, 0.68130], [1203289200000, 0.68130], [1203375600000, 0.68220], [1203462000000, 0.68020], [1203548400000, 0.68020], [1203634800000, 0.67840], [1203721200000, 0.67480], [1203807600000, 0.67470], [1203894000000, 0.67470], [1203980400000, 0.67480], [1204066800000, 0.67330], [1204153200000, 0.6650], [1204239600000, 0.66110], [1204326000000, 0.65830], [1204412400000, 0.6590], [1204498800000, 0.6590], [1204585200000, 0.65810], [1204671600000, 0.65780], [1204758000000, 0.65740], [1204844400000, 0.65320], [1204930800000, 0.65020], [1205017200000, 0.65140], [1205103600000, 0.65140], [1205190000000, 0.65070], [1205276400000, 0.6510], [1205362800000, 0.64890], [1205449200000, 0.64240], [1205535600000, 0.64060], [1205622000000, 0.63820], [1205708400000, 0.63820], [1205794800000, 0.63410], [1205881200000, 0.63440], [1205967600000, 0.63780], [1206054000000, 0.64390], [1206140400000, 0.64780], [1206226800000, 0.64810], [1206313200000, 0.64810], [1206399600000, 0.64940], [1206486000000, 0.64380], [1206572400000, 0.63770], [1206658800000, 0.63290], [1206745200000, 0.63360], [1206831600000, 0.63330], [1206914400000, 0.63330], [1207000800000, 0.6330], [1207087200000, 0.63710], [1207173600000, 0.64030], [1207260000000, 0.63960], [1207346400000, 0.63640], [1207432800000, 0.63560], [1207519200000, 0.63560], [1207605600000, 0.63680], [1207692000000, 0.63570], [1207778400000, 0.63540], [1207864800000, 0.6320], [1207951200000, 0.63320], [1208037600000, 0.63280], [1208124000000, 0.63310], [1208210400000, 0.63420], [1208296800000, 0.63210], [1208383200000, 0.63020], [1208469600000, 0.62780], [1208556000000, 0.63080], [1208642400000, 0.63240], [1208728800000, 0.63240], [1208815200000, 0.63070], [1208901600000, 0.62770], [1208988000000, 0.62690], [1209074400000, 0.63350], [1209160800000, 0.63920], [1209247200000, 0.640], [1209333600000, 0.64010], [1209420000000, 0.63960], [1209506400000, 0.64070], [1209592800000, 0.64230], [1209679200000, 0.64290], [1209765600000, 0.64720], [1209852000000, 0.64850], [1209938400000, 0.64860], [1210024800000, 0.64670], [1210111200000, 0.64440], [1210197600000, 0.64670], [1210284000000, 0.65090], [1210370400000, 0.64780], [1210456800000, 0.64610], [1210543200000, 0.64610], [1210629600000, 0.64680], [1210716000000, 0.64490], [1210802400000, 0.6470], [1210888800000, 0.64610], [1210975200000, 0.64520], [1211061600000, 0.64220], [1211148000000, 0.64220], [1211234400000, 0.64250], [1211320800000, 0.64140], [1211407200000, 0.63660], [1211493600000, 0.63460], [1211580000000, 0.6350], [1211666400000, 0.63460], [1211752800000, 0.63460], [1211839200000, 0.63430], [1211925600000, 0.63460], [1212012000000, 0.63790], [1212098400000, 0.64160], [1212184800000, 0.64420], [1212271200000, 0.64310], [1212357600000, 0.64310], [1212444000000, 0.64350], [1212530400000, 0.6440], [1212616800000, 0.64730], [1212703200000, 0.64690], [1212789600000, 0.63860], [1212876000000, 0.63560], [1212962400000, 0.6340], [1213048800000, 0.63460], [1213135200000, 0.6430], [1213221600000, 0.64520], [1213308000000, 0.64670], [1213394400000, 0.65060], [1213480800000, 0.65040], [1213567200000, 0.65030], [1213653600000, 0.64810], [1213740000000, 0.64510], [1213826400000, 0.6450], [1213912800000, 0.64410], [1213999200000, 0.64140], [1214085600000, 0.64090], [1214172000000, 0.64090], [1214258400000, 0.64280], [1214344800000, 0.64310], [1214431200000, 0.64180], [1214517600000, 0.63710], [1214604000000, 0.63490], [1214690400000, 0.63330], [1214776800000, 0.63340], [1214863200000, 0.63380], [1214949600000, 0.63420], [1215036000000, 0.6320], [1215122400000, 0.63180], [1215208800000, 0.6370], [1215295200000, 0.63680], [1215381600000, 0.63680], [1215468000000, 0.63830], [1215554400000, 0.63710], [1215640800000, 0.63710], [1215727200000, 0.63550], [1215813600000, 0.6320], [1215900000000, 0.62770], [1215986400000, 0.62760], [1216072800000, 0.62910], [1216159200000, 0.62740], [1216245600000, 0.62930], [1216332000000, 0.63110], [1216418400000, 0.6310], [1216504800000, 0.63120], [1216591200000, 0.63120], [1216677600000, 0.63040], [1216764000000, 0.62940], [1216850400000, 0.63480], [1216936800000, 0.63780], [1217023200000, 0.63680], [1217109600000, 0.63680], [1217196000000, 0.63680], [1217282400000, 0.6360], [1217368800000, 0.6370], [1217455200000, 0.64180], [1217541600000, 0.64110], [1217628000000, 0.64350], [1217714400000, 0.64270], [1217800800000, 0.64270], [1217887200000, 0.64190], [1217973600000, 0.64460], [1218060000000, 0.64680], [1218146400000, 0.64870], [1218232800000, 0.65940], [1218319200000, 0.66660], [1218405600000, 0.66660], [1218492000000, 0.66780], [1218578400000, 0.67120], [1218664800000, 0.67050], [1218751200000, 0.67180], [1218837600000, 0.67840], [1218924000000, 0.68110], [1219010400000, 0.68110], [1219096800000, 0.67940], [1219183200000, 0.68040], [1219269600000, 0.67810], [1219356000000, 0.67560], [1219442400000, 0.67350], [1219528800000, 0.67630], [1219615200000, 0.67620], [1219701600000, 0.67770], [1219788000000, 0.68150], [1219874400000, 0.68020], [1219960800000, 0.6780], [1220047200000, 0.67960], [1220133600000, 0.68170], [1220220000000, 0.68170], [1220306400000, 0.68320], [1220392800000, 0.68770], [1220479200000, 0.69120], [1220565600000, 0.69140], [1220652000000, 0.70090], [1220738400000, 0.70120], [1220824800000, 0.7010], [1220911200000, 0.70050] - ]; - - function euroFormatter(v, axis) { - return v.toFixed(axis.tickDecimals) + "€"; - } - - function doPlot(position) { - $.plot($("#flot-line-chart-multi"), [{ - data: oilprices, - label: "Oil price ($)" - }, { - data: exchangerates, - label: "USD/EUR exchange rate", - yaxis: 2 - }], { - xaxes: [{ - mode: 'time' - }], - yaxes: [{ - min: 0 - }, { - // align if we are to the right - alignTicksWithAxis: position == "right" ? 1 : null, - position: position, - tickFormatter: euroFormatter - }], - legend: { - position: 'sw' - }, - colors: ["#1ab394"], - grid: { - color: "#999999", - hoverable: true, - clickable: true, - tickColor: "#D4D4D4", - borderWidth:0, - hoverable: true //IMPORTANT! this is needed for tooltip to work, - - }, - tooltip: true, - tooltipOpts: { - content: "%s for %x was %y", - xDateFormat: "%y-%0m-%0d", - - onHover: function(flotItem, $tooltipEl) { - // console.log(flotItem, $tooltipEl); - } - } - - }); - } - - doPlot("right"); - - $("button").click(function() { - doPlot($(this).text()); - }); -}); - - - - diff --git a/assets/js/demo/flot-demo2.js b/assets/js/demo/flot-demo2.js deleted file mode 100644 index daa29c97..00000000 --- a/assets/js/demo/flot-demo2.js +++ /dev/null @@ -1,377 +0,0 @@ -//Flot Pie Chart Devices -$(function() { - - var data = [{ - label: "iPhone", - data: 21, - color: "#d3d3d3", - }, { - label: "Samsung", - data: 3, - color: "#bababa", - }, { - label: "Windows", - data: 15, - color: "#79d2c0", - }, { - label: "Blackberry", - data: 52, - color: "#1ab394", - }]; - - var plotObj = $.plot($("#flot-pie-chart-devices"), data, { - series: { - pie: { - show: true - } - }, - grid: { - hoverable: true - }, - tooltip: true, - tooltipOpts: { - content: "%p.0%, %s", // show percentages, rounding to 2 decimal places - shifts: { - x: 20, - y: 0 - }, - defaultTheme: false - } - }); - -}); - -//Flot Pie Chart Browsers -$(function() { - - var data = [{ - label: "Chrome", - data: 21, - color: "#d3d3d3", - }, { - label: "Firefox", - data: 3, - color: "#bababa", - }, { - label: "IE", - data: 15, - color: "#79d2c0", - }, { - label: "Safari", - data: 52, - color: "#1ab394", - }]; - - var plotObj = $.plot($("#flot-pie-chart-browsers"), data, { - series: { - pie: { - show: true - } - }, - grid: { - hoverable: true - }, - tooltip: true, - tooltipOpts: { - content: "%p.0%, %s", // show percentages, rounding to 2 decimal places - shifts: { - x: 20, - y: 0 - }, - defaultTheme: false - } - }); - -}); - -//Flot Pie Chart Sources -$(function() { - - var data = [{ - label: "Client 1", - data: 21, - color: "#d3d3d3", - }, { - label: "Client 2", - data: 3, - color: "#bababa", - }, { - label: "Client 3", - data: 15, - color: "#79d2c0", - }, { - label: "Client 4", - data: 52, - color: "#1ab394", - }]; - - var plotObj = $.plot($("#flot-pie-chart-sources"), data, { - series: { - pie: { - show: true - } - }, - grid: { - hoverable: true - }, - tooltip: true, - tooltipOpts: { - content: "%p.0%, %s", // show percentages, rounding to 2 decimal places - shifts: { - x: 20, - y: 0 - }, - defaultTheme: false - } - }); - -}); - - -//Flot Pie Chart Carriers -$(function() { - - var data = [{ - label: "Carriers 1", - data: 21, - color: "#d3d3d3", - }, { - label: "Carriers 2", - data: 3, - color: "#bababa", - }, { - label: "Carriers 3", - data: 15, - color: "#79d2c0", - }, { - label: "Carriers 4", - data: 52, - color: "#1ab394", - }]; - - var plotObj = $.plot($("#flot-pie-chart-carriers"), data, { - series: { - pie: { - show: true - } - }, - grid: { - hoverable: true - }, - tooltip: true, - tooltipOpts: { - content: "%p.0%, %s", // show percentages, rounding to 2 decimal places - shifts: { - x: 20, - y: 0 - }, - defaultTheme: false - } - }); - -}); - -//Flot Pie Chart Gender -$(function() { - - var data = [{ - label: "Male", - data: 50, - color: "#d3d3d3", - },{ - label: "Female", - data: 50, - color: "#1ab394", - }]; - - var plotObj = $.plot($("#flot-pie-chart-gender"), data, { - series: { - pie: { - show: true - } - }, - grid: { - hoverable: true - }, - tooltip: true, - tooltipOpts: { - content: "%p.0%, %s", // show percentages, rounding to 2 decimal places - shifts: { - x: 20, - y: 0 - }, - defaultTheme: false - } - }); - -}); - -//Flot Pie Chart Age groups -$(function() { - - var data = [{ - label: "18/24", - data: 21, - color: "#d3d3d3", - }, { - label: "24/34", - data: 3, - color: "#bababa", - }, { - label: "35/44", - data: 15, - color: "#79d2c0", - }, { - label: "45/54", - data: 37, - color: "#1ab394", - }, { - label: ">55", - data: 15, - color: "#79d2c0", - }]; - - var plotObj = $.plot($("#flot-pie-chart-age-groups"), data, { - series: { - pie: { - show: true - } - }, - grid: { - hoverable: true - }, - tooltip: true, - tooltipOpts: { - content: "%p.0%, %s", // show percentages, rounding to 2 decimal places - shifts: { - x: 20, - y: 0 - }, - defaultTheme: false - } - }); - -}); - -//Flot Pie Chart Spending power -$(function() { - - var data = [{ - label: "High", - data: 20, - color: "#d3d3d3", - }, { - label: "Medium", - data: 40, - color: "#1ab394", - }, { - label: "Low", - data: 40, - color: "#79d2c0", - }]; - - var plotObj = $.plot($("#flot-pie-chart-spending-power"), data, { - series: { - pie: { - show: true - } - }, - grid: { - hoverable: true - }, - tooltip: true, - tooltipOpts: { - content: "%p.0%, %s", // show percentages, rounding to 2 decimal places - shifts: { - x: 20, - y: 0 - }, - defaultTheme: false - } - }); - -}); - -//Flot Pie Chart User type -$(function() { - - var data = [{ - label: "Business", - data: 60, - color: "#1ab394", - }, { - label: "Private", - data: 40, - color: "#79d2c0", - }]; - - var plotObj = $.plot($("#flot-pie-chart-user-type"), data, { - series: { - pie: { - show: true - } - }, - grid: { - hoverable: true - }, - tooltip: true, - tooltipOpts: { - content: "%p.0%, %s", // show percentages, rounding to 2 decimal places - shifts: { - x: 20, - y: 0 - }, - defaultTheme: false - } - }); - -}); - -//Flot Pie Chart Interest -$(function() { - - var data = [{ - label: "Auto", - data: 21, - color: "#d3d3d3", - }, { - label: "Sports", - data: 3, - color: "#bababa", - }, { - label: "Health", - data: 15, - color: "#79d2c0", - }, { - label: "Education", - data: 37, - color: "#1ab394", - }, { - label: "Other", - data: 15, - color: "#79d2c0", - }]; - - var plotObj = $.plot($("#flot-pie-chart-interest"), data, { - series: { - pie: { - show: true - } - }, - grid: { - hoverable: true - }, - tooltip: true, - tooltipOpts: { - content: "%p.0%, %s", // show percentages, rounding to 2 decimal places - shifts: { - x: 20, - y: 0 - }, - defaultTheme: false - } - }); - -}); - - diff --git a/assets/js/demo/morris-demo.js b/assets/js/demo/morris-demo.js deleted file mode 100644 index b9d0fe92..00000000 --- a/assets/js/demo/morris-demo.js +++ /dev/null @@ -1,89 +0,0 @@ -$(function() { - - Morris.Line({ - element: 'morris-one-line-chart', - data: [ - { year: '2008', value: 5 }, - { year: '2009', value: 10 }, - { year: '2010', value: 8 }, - { year: '2011', value: 22 }, - { year: '2012', value: 8 }, - { year: '2014', value: 10 }, - { year: '2015', value: 5 } - ], - xkey: 'year', - ykeys: ['value'], - resize: true, - lineWidth:4, - labels: ['Value'], - lineColors: ['#1ab394'], - pointSize:5, - }); - - Morris.Area({ - element: 'morris-area-chart', - data: [{ period: '2010 Q1', iphone: 2666, ipad: null, itouch: 2647 }, - { period: '2010 Q2', iphone: 2778, ipad: 2294, itouch: 2441 }, - { period: '2010 Q3', iphone: 4912, ipad: 1969, itouch: 2501 }, - { period: '2010 Q4', iphone: 3767, ipad: 3597, itouch: 5689 }, - { period: '2011 Q1', iphone: 6810, ipad: 1914, itouch: 2293 }, - { period: '2011 Q2', iphone: 5670, ipad: 4293, itouch: 1881 }, - { period: '2011 Q3', iphone: 4820, ipad: 3795, itouch: 1588 }, - { period: '2011 Q4', iphone: 15073, ipad: 5967, itouch: 5175 }, - { period: '2012 Q1', iphone: 10687, ipad: 4460, itouch: 2028 }, - { period: '2012 Q2', iphone: 8432, ipad: 5713, itouch: 1791 } ], - xkey: 'period', - ykeys: ['iphone', 'ipad', 'itouch'], - labels: ['iPhone', 'iPad', 'iPod Touch'], - pointSize: 2, - hideHover: 'auto', - resize: true, - lineColors: ['#87d6c6', '#54cdb4','#1ab394'], - lineWidth:2, - pointSize:1, - }); - - Morris.Donut({ - element: 'morris-donut-chart', - data: [{ label: "Download Sales", value: 12 }, - { label: "In-Store Sales", value: 30 }, - { label: "Mail-Order Sales", value: 20 } ], - resize: true, - colors: ['#87d6c6', '#54cdb4','#1ab394'], - }); - - Morris.Bar({ - element: 'morris-bar-chart', - data: [{ y: '2006', a: 60, b: 50 }, - { y: '2007', a: 75, b: 65 }, - { y: '2008', a: 50, b: 40 }, - { y: '2009', a: 75, b: 65 }, - { y: '2010', a: 50, b: 40 }, - { y: '2011', a: 75, b: 65 }, - { y: '2012', a: 100, b: 90 } ], - xkey: 'y', - ykeys: ['a', 'b'], - labels: ['Series A', 'Series B'], - hideHover: 'auto', - resize: true, - barColors: ['#1ab394', '#cacaca'], - }); - - Morris.Line({ - element: 'morris-line-chart', - data: [{ y: '2006', a: 100, b: 90 }, - { y: '2007', a: 75, b: 65 }, - { y: '2008', a: 50, b: 40 }, - { y: '2009', a: 75, b: 65 }, - { y: '2010', a: 50, b: 40 }, - { y: '2011', a: 75, b: 65 }, - { y: '2012', a: 100, b: 90 } ], - xkey: 'y', - ykeys: ['a', 'b'], - labels: ['Series A', 'Series B'], - hideHover: 'auto', - resize: true, - lineColors: ['#54cdb4','#1ab394'], - }); - -}); diff --git a/assets/js/demo/peity-demo.js b/assets/js/demo/peity-demo.js deleted file mode 100644 index 93cb5a3e..00000000 --- a/assets/js/demo/peity-demo.js +++ /dev/null @@ -1,33 +0,0 @@ -$(function() { - $("span.pie").peity("pie", { - fill: ['#1ab394', '#d7d7d7', '#ffffff'] - }) - - $(".line").peity("line",{ - fill: '#1ab394', - stroke:'#169c81', - }) - - $(".bar").peity("bar", { - fill: ["#1ab394", "#d7d7d7"] - }) - - $(".bar_dashboard").peity("bar", { - fill: ["#1ab394", "#d7d7d7"], - width:100 - }) - - var updatingChart = $(".updating-chart").peity("line", { fill: '#1ab394',stroke:'#169c81', width: 64 }) - - setInterval(function() { - var random = Math.round(Math.random() * 10) - var values = updatingChart.text().split(",") - values.shift() - values.push(random) - - updatingChart - .text(values.join(",")) - .change() - }, 1000); - -}); diff --git a/assets/js/demo/rickshaw-demo.js b/assets/js/demo/rickshaw-demo.js deleted file mode 100644 index 9c8a1089..00000000 --- a/assets/js/demo/rickshaw-demo.js +++ /dev/null @@ -1,103 +0,0 @@ -$(function() { - var graph = new Rickshaw.Graph( { - element: document.querySelector("#chart"), - series: [{ - color: '#1ab394', - data: [ - { x: 0, y: 40 }, - { x: 1, y: 49 }, - { x: 2, y: 38 }, - { x: 3, y: 30 }, - { x: 4, y: 32 } ] - }] - }); - graph.render(); - - var graph2 = new Rickshaw.Graph( { - element: document.querySelector("#rickshaw_multi"), - renderer: 'area', - stroke: true, - series: [ { - data: [ { x: 0, y: 40 }, { x: 1, y: 49 }, { x: 2, y: 38 }, { x: 3, y: 20 }, { x: 4, y: 16 } ], - color: '#1ab394', - stroke: '#17997f' - }, { - data: [ { x: 0, y: 22 }, { x: 1, y: 25 }, { x: 2, y: 38 }, { x: 3, y: 44 }, { x: 4, y: 46 } ], - color: '#eeeeee', - stroke: '#d7d7d7' - } ] - } ); - graph2.renderer.unstack = true; - graph2.render(); - - var graph3 = new Rickshaw.Graph({ - element: document.querySelector("#rickshaw_line"), - renderer: 'line', - series: [ { - data: [ { x: 0, y: 40 }, { x: 1, y: 49 }, { x: 2, y: 38 }, { x: 3, y: 30 }, { x: 4, y: 32 } ], - color: '#1ab394' - } ] - } ); - graph3.render(); - - var graph4 = new Rickshaw.Graph({ - element: document.querySelector("#rickshaw_multi_line"), - renderer: 'line', - series: [{ - data: [ { x: 0, y: 40 }, { x: 1, y: 49 }, { x: 2, y: 38 }, { x: 3, y: 30 }, { x: 4, y: 32 } ], - color: '#1ab394' - }, { - data: [ { x: 0, y: 20 }, { x: 1, y: 24 }, { x: 2, y: 19 }, { x: 3, y: 15 }, { x: 4, y: 16 } ], - color: '#d7d7d7' - }] - }); - graph4.render(); - - var graph5 = new Rickshaw.Graph( { - element: document.querySelector("#rickshaw_bars"), - renderer: 'bar', - series: [ { - data: [ { x: 0, y: 40 }, { x: 1, y: 49 }, { x: 2, y: 38 }, { x: 3, y: 30 }, { x: 4, y: 32 } ], - color: '#1ab394' - } ] - } ); - graph5.render(); - - var graph6 = new Rickshaw.Graph( { - element: document.querySelector("#rickshaw_bars_stacked"), - renderer: 'bar', - series: [ - { - data: [ { x: 0, y: 40 }, { x: 1, y: 49 }, { x: 2, y: 38 }, { x: 3, y: 30 }, { x: 4, y: 32 } ], - color: '#1ab394' - }, { - data: [ { x: 0, y: 20 }, { x: 1, y: 24 }, { x: 2, y: 19 }, { x: 3, y: 15 }, { x: 4, y: 16 } ], - color: '#d7d7d7' - } ] - } ); - graph6.render(); - - var graph7 = new Rickshaw.Graph( { - element: document.querySelector("#rickshaw_scatterplot"), - renderer: 'scatterplot', - stroke: true, - padding: { top: 0.05, left: 0.05, right: 0.05 }, - series: [ { - data: [ { x: 0, y: 15 }, - { x: 1, y: 18 }, - { x: 2, y: 10 }, - { x: 3, y: 12 }, - { x: 4, y: 15 }, - { x: 5, y: 24 }, - { x: 6, y: 28 }, - { x: 7, y: 31 }, - { x: 8, y: 22 }, - { x: 9, y: 18 }, - { x: 10, y: 16 } - ], - color: '#1ab394' - } ] - } ); - graph7.render(); - -}); \ No newline at end of file diff --git a/assets/js/demo/sparkline-demo.js b/assets/js/demo/sparkline-demo.js deleted file mode 100644 index c3332237..00000000 --- a/assets/js/demo/sparkline-demo.js +++ /dev/null @@ -1,51 +0,0 @@ -$(function () { - $("#sparkline1").sparkline([34, 43, 43, 35, 44, 32, 44, 52, 25], { - type: 'line', - lineColor: '#17997f', - fillColor: '#1ab394', - }); - $("#sparkline2").sparkline([5, 6, 7, 2, 0, -4, -2, 4], { - type: 'bar', - barColor: '#1ab394', - negBarColor: '#c6c6c6'}); - - $("#sparkline3").sparkline([1, 1, 2], { - type: 'pie', - sliceColors: ['#1ab394', '#b3b3b3', '#e4f0fb']}); - - $("#sparkline4").sparkline([34, 43, 43, 35, 44, 32, 15, 22, 46, 33, 86, 54, 73, 53, 12, 53, 23, 65, 23, 63, 53, 42, 34, 56, 76, 15, 54, 23, 44], { - type: 'line', - lineColor: '#17997f', - fillColor: '#ffffff', - }); - - $("#sparkline5").sparkline([1, 1, 0, 1, -1, -1, 1, -1, 0, 0, 1, 1], { - type: 'tristate', - posBarColor: '#1ab394', - negBarColor: '#bfbfbf'}); - - - $("#sparkline6").sparkline([4, 6, 7, 7, 4, 3, 2, 1, 4, 4, 5, 6, 3, 4, 5, 8, 7, 6, 9, 3, 2, 4, 1, 5, 6, 4, 3, 7, ], { - type: 'discrete', - lineColor: '#1ab394'}); - - $("#sparkline7").sparkline([52, 12, 44], { - type: 'pie', - height: '150px', - sliceColors: ['#1ab394', '#b3b3b3', '#e4f0fb']}); - - $("#sparkline8").sparkline([5, 6, 7, 2, 0, 4, 2, 4, 5, 7, 2, 4, 12, 14, 4, 2, 14, 12, 7], { - type: 'bar', - barWidth: 8, - height: '150px', - barColor: '#1ab394', - negBarColor: '#c6c6c6'}); - - $("#sparkline9").sparkline([34, 43, 43, 35, 44, 32, 15, 22, 46, 33, 86, 54, 73, 53, 12, 53, 23, 65, 23, 63, 53, 42, 34, 56, 76, 15, 54, 23, 44], { - type: 'line', - lineWidth: 1, - height: '150px', - lineColor: '#17997f', - fillColor: '#ffffff', - }); -}); diff --git a/assets/js/editUser.js b/assets/js/editUser.js deleted file mode 100644 index 07ef0326..00000000 --- a/assets/js/editUser.js +++ /dev/null @@ -1,29 +0,0 @@ -/** - * File : editUser.js - * - * This file contain the validation of edit user form - * - * @author Kishor Mali - */ -$(document).ready(function(){ - - var editUserForm = $("#editUser"); - - var validator = editUserForm.validate({ - - rules:{ - fname :{ required : true }, - email : { required : true, email : true, remote : { url : baseURL + "checkEmailExists", type :"post", data : { userId : function(){ return $("#userId").val(); } } } }, - cpassword : {equalTo: "#password"}, - mobile : { required : true, digits : true }, - role : { required : true, selected : true} - }, - messages:{ - fname :{ required : "This field is required" }, - email : { required : "This field is required", email : "Please enter valid email address", remote : "Email already taken" }, - cpassword : {equalTo: "Please enter same password" }, - mobile : { required : "This field is required", digits : "Please enter numbers only" }, - role : { required : "This field is required", selected : "Please select atleast one option" } - } - }); -}); \ No newline at end of file diff --git a/assets/js/inspinia.js b/assets/js/inspinia.js deleted file mode 100644 index 2c7173e1..00000000 --- a/assets/js/inspinia.js +++ /dev/null @@ -1,151 +0,0 @@ -// Custom scripts -$(document).ready(function () { - - // MetsiMenu - $('#side-menu').metisMenu(); - - // Collapse ibox function - $('.collapse-link:not(.binded)').addClass("binded").click( function() { - var ibox = $(this).closest('div.ibox'); - var button = $(this).find('i'); - var content = ibox.find('div.ibox-content'); - content.slideToggle(200); - button.toggleClass('fa-chevron-up').toggleClass('fa-chevron-down'); - ibox.toggleClass('').toggleClass('border-bottom'); - setTimeout(function () { - ibox.resize(); - ibox.find('[id^=map-]').resize(); - }, 50); - }); - - // Close ibox function - $('.close-link:not(.binded)').addClass("binded").click( function() { - var content = $(this).closest('div.ibox'); - content.remove(); - }); - - // Small todo handler - $('.check-link:not(.binded)').addClass("binded").click( function(){ - var button = $(this).find('i'); - var label = $(this).next('span'); - button.toggleClass('fa-check-square').toggleClass('fa-square-o'); - label.toggleClass('todo-completed'); - return false; - }); - - // Append config box / Only for demo purpose - /* - $.get("skin-config.html", function (data) { - $('body').append(data); - }); - */ - - // minimalize menu - $('.navbar-minimalize:not(.binded)').addClass("binded").click(function () { - $("body").toggleClass("mini-navbar"); - SmoothlyMenu(); - }) - - // tooltips - $('.tooltip-demo').tooltip({ - selector: "[data-toggle=tooltip]", - container: "body" - }) - - // Move modal to body - // Fix Bootstrap backdrop issu with animation.css - $('.modal').appendTo("body") - - // Full height of sidebar - function fix_height() { - var heightWithoutNavbar = $("body > #wrapper").height() - 61; - $(".sidebard-panel").css("min-height", heightWithoutNavbar + "px"); - } - fix_height(); - - // Fixed Sidebar - // unComment this only whe you have a fixed-sidebar - // $(window).bind("load", function() { - // if($("body").hasClass('fixed-sidebar')) { - // $('.sidebar-collapse').slimScroll({ - // height: '100%', - // railOpacity: 0.9, - // }); - // } - // }) - - $(window).bind("load resize click scroll", function() { - if(!$("body").hasClass('body-small')) { - fix_height(); - } - }) - - $("[data-toggle=popover]") - .popover(); -}); - - -// For demo purpose - animation css script -window.animationHover = function(element, animation){ - element = $(element); - element.hover( - function() { - element.addClass('animated ' + animation); - }, - function(){ - //wait for animation to finish before removing classes - window.setTimeout( function(){ - element.removeClass('animated ' + animation); - }, 2000); - }); -}; - -// Minimalize menu when screen is less than 768px -$(function() { - $(window).bind("load resize", function() { - if ($(this).width() < 769) { - $('body').addClass('body-small') - } else { - $('body').removeClass('body-small') - } - }) -}) - -window.SmoothlyMenu = function() { - if (!$('body').hasClass('mini-navbar') || $('body').hasClass('body-small')) { - // Hide menu in order to smoothly turn on when maximize menu - $('#side-menu').hide(); - // For smoothly turn on menu - setTimeout( - function () { - $('#side-menu').fadeIn(500); - }, 100); - } else if ($('body').hasClass('fixed-sidebar')){ - $('#side-menu').hide(); - setTimeout( - function () { - $('#side-menu').fadeIn(500); - }, 300); - } else { - // Remove all inline style from jquery fadeIn function to reset menu state - $('#side-menu').removeAttr('style'); - } -}; - -// Dragable panels -window.WinMove = function() { - var element = "[class*=col]"; - var handle = ".ibox-title"; - var connect = "[class*=col]"; - $(element).sortable( - { - handle: handle, - connectWith: connect, - tolerance: 'pointer', - forcePlaceholderSize: true, - opacity: 0.8, - }) - .disableSelection(); -}; - - diff --git a/assets/js/jQuery-2.1.4.min.js b/assets/js/jQuery-2.1.4.min.js deleted file mode 100644 index 49990d6e..00000000 --- a/assets/js/jQuery-2.1.4.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b="length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function qa(){}qa.prototype=d.filters=d.pseudos,d.setFilters=new qa,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function ra(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){ -return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=L.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,R=["Top","Right","Bottom","Left"],S=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement("div")),c=l.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||l,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||0)-(d&&d.clientLeft||e&&e.clientLeft||0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||0)-(d&&d.clientTop||e&&e.clientTop||0)),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=l),3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==_()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?Z:$):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=Z,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!0),L.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-1;e?L.access(d,b,e):(d.removeEventListener(a,c,!0),L.remove(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=$;else if(!d)return this;return 1===e&&(f=d,d=function(a){return n().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=$),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var aa=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ba=/<([\w:]+)/,ca=/<|&#?\w+;/,da=/<(?:script|style|link)/i,ea=/checked\s*(?:[^=]|=\s*.checked.)/i,fa=/^$|\/(?:java|ecma)script/i,ga=/^true\/(.*)/,ha=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ia={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ia.optgroup=ia.option,ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead,ia.th=ia.td;function ja(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function ka(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function la(a){var b=ga.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function ma(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function na(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function oa(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pa(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=oa(h),f=oa(a),d=0,e=f.length;e>d;d++)pa(f[d],g[d]);if(b)if(c)for(f=f||oa(a),g=g||oa(h),d=0,e=f.length;e>d;d++)na(f[d],g[d]);else na(a,h);return g=oa(h,"script"),g.length>0&&ma(g,!i&&oa(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(ca.test(e)){f=f||k.appendChild(b.createElement("div")),g=(ba.exec(e)||["",""])[1].toLowerCase(),h=ia[g]||ia._default,f.innerHTML=h[1]+e.replace(aa,"<$1></$2>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=oa(k.appendChild(e),"script"),i&&ma(f),c)){j=0;while(e=f[j++])fa.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(oa(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&ma(oa(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(oa(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!da.test(a)&&!ia[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(aa,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(oa(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(oa(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&ea.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(oa(c,"script"),ka),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,oa(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,la),j=0;g>j;j++)h=f[j],fa.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(ha,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qa,ra={};function sa(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function ta(a){var b=l,c=ra[a];return c||(c=sa(a,b),"none"!==c&&c||(qa=(qa||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=qa[0].contentDocument,b.write(),b.close(),c=sa(a,b),qa.detach()),ra[a]=c),c}var ua=/^margin/,va=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),wa=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)};function xa(a,b,c){var d,e,f,g,h=a.style;return c=c||wa(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),va.test(g)&&ua.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function ya(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement("div"),f=l.createElement("div");if(f.style){f.style.backgroundClip="content-box",f.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===f.style.backgroundClip,e.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",e.appendChild(f);function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",f.innerHTML="",d.appendChild(e);var g=a.getComputedStyle(f,null);b="1%"!==g.top,c="4px"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div"));return c.style.cssText=f.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",f.style.width="1px",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),f.removeChild(c),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var za=/^(none|table(?!-c[ea]).+)/,Aa=new RegExp("^("+Q+")(.*)$","i"),Ba=new RegExp("^([+-])=("+Q+")","i"),Ca={position:"absolute",visibility:"hidden",display:"block"},Da={letterSpacing:"0",fontWeight:"400"},Ea=["Webkit","O","Moz","ms"];function Fa(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Ea.length;while(e--)if(b=Ea[e]+c,b in a)return b;return d}function Ga(a,b,c){var d=Aa.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Ha(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+R[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+R[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+R[f]+"Width",!0,e))):(g+=n.css(a,"padding"+R[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+R[f]+"Width",!0,e)));return g}function Ia(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=wa(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=xa(a,b,f),(0>e||null==e)&&(e=a.style[b]),va.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Ha(a,b,c||(g?"border":"content"),d,f)+"px"}function Ja(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",ta(d.nodeName)))):(e=S(d),"none"===c&&e||L.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xa(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fa(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Ba.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fa(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xa(a,b,d)),"normal"===e&&b in Da&&(e=Da[b]),""===c||c?(f=parseFloat(e),c===!0||n.isNumeric(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?za.test(n.css(a,"display"))&&0===a.offsetWidth?n.swap(a,Ca,function(){return Ia(a,b,d)}):Ia(a,b,d):void 0},set:function(a,c,d){var e=d&&wa(a);return Ga(a,c,d?Ha(a,b,d,"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),n.cssHooks.marginRight=ya(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},xa,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ua.test(a)||(n.cssHooks[a+b].set=Ga)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=wa(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Ja(this,!0)},hide:function(){return Ja(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Ka(a,b,c,d,e){return new Ka.prototype.init(a,b,c,d,e)}n.Tween=Ka,Ka.prototype={constructor:Ka,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Ka.propHooks[this.prop];return a&&a.get?a.get(this):Ka.propHooks._default.get(this)},run:function(a){var b,c=Ka.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ka.propHooks._default.set(this),this}},Ka.prototype.init.prototype=Ka.prototype,Ka.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Ka.propHooks.scrollTop=Ka.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=Ka.prototype.init,n.fx.step={};var La,Ma,Na=/^(?:toggle|show|hide)$/,Oa=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),Pa=/queueHooks$/,Qa=[Va],Ra={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Oa.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&Oa.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function Sa(){return setTimeout(function(){La=void 0}),La=n.now()}function Ta(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ua(a,b,c){for(var d,e=(Ra[b]||[]).concat(Ra["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Va(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?L.get(a,"olddisplay")||ta(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Na.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?ta(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=L.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ua(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function Wa(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xa(a,b,c){var d,e,f=0,g=Qa.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=La||Sa(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:La||Sa(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wa(k,j.opts.specialEasing);g>f;f++)if(d=Qa[f].call(j,a,k,j.opts))return d;return n.map(k,Ua,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xa,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Ra[c]=Ra[c]||[],Ra[c].unshift(b)},prefilter:function(a,b){b?Qa.unshift(a):Qa.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xa(this,n.extend({},a),f);(e||L.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pa.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Ta(b,!0),a,d,e)}}),n.each({slideDown:Ta("show"),slideUp:Ta("hide"),slideToggle:Ta("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(La=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),La=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Ma||(Ma=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(Ma),Ma=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=l.createElement("input"),b=l.createElement("select"),c=b.appendChild(l.createElement("option"));a.type="checkbox",k.checkOn=""!==a.value,k.optSelected=c.selected,b.disabled=!0,k.optDisabled=!c.disabled,a=l.createElement("input"),a.value="t",a.type="radio",k.radioValue="t"===a.value}();var Ya,Za,$a=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return J(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Za:Ya)), -void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),Za={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$a[b]||n.find.attr;$a[b]=function(a,b,d){var e,f;return d||(f=$a[b],$a[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$a[b]=f),e}});var _a=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute("tabindex")||_a.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ab=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ab," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||"string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ab," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ab," ").indexOf(b)>=0)return!0;return!1}});var bb=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var cb=n.now(),db=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(a){var b,c;if(!a||"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,"text/xml")}catch(d){b=void 0}return(!b||b.getElementsByTagName("parsererror").length)&&n.error("Invalid XML: "+a),b};var eb=/#.*$/,fb=/([?&])_=[^&]*/,gb=/^(.*?):[ \t]*([^\r\n]*)$/gm,hb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,ib=/^(?:GET|HEAD)$/,jb=/^\/\//,kb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,lb={},mb={},nb="*/".concat("*"),ob=a.location.href,pb=kb.exec(ob.toLowerCase())||[];function qb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function rb(a,b,c,d){var e={},f=a===mb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function sb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function tb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function ub(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:ob,type:"GET",isLocal:hb.test(pb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":nb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?sb(sb(a,n.ajaxSettings),b):sb(n.ajaxSettings,a)},ajaxPrefilter:qb(lb),ajaxTransport:qb(mb),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=gb.exec(e))f[b[1].toLowerCase()]=b[2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||ob)+"").replace(eb,"").replace(jb,pb[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=kb.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[1]===pb[1]&&h[2]===pb[2]&&(h[3]||("http:"===h[1]?"80":"443"))===(pb[3]||("http:"===pb[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),rb(lb,k,b,v),2===t)return v;i=n.event&&k.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!ib.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(db.test(d)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=fb.test(d)?d.replace(fb,"$1_="+cb++):d+(db.test(d)?"&":"?")+"_="+cb++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader("If-Modified-Since",n.lastModified[d]),n.etag[d]&&v.setRequestHeader("If-None-Match",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+nb+"; q=0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(j in{success:1,error:1,complete:1})v[j](k[j]);if(c=rb(mb,k,b,v)){v.readyState=1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=tb(k,v,f)),u=ub(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(n.etag[d]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var vb=/%20/g,wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&").replace(vb,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Bb=0,Cb={},Db={0:200,1223:204},Eb=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Cb)Cb[a]()}),k.cors=!!Eb&&"withCredentials"in Eb,k.ajax=Eb=!!Eb,n.ajaxTransport(function(a){var b;return k.cors||Eb&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Bb;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Cb[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Db[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Cb[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n("<script>").prop({async:!0,charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&e("error"===a.type?404:200,a.type)}),l.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Fb=[],Gb=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Fb.pop()||n.expando+"_"+cb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Gb.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Gb.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Gb,"$1"+e):b.jsonp!==!1&&(b.url+=(db.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Fb.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||l;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var Hb=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Hb)return Hb.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e,dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var Ib=a.document.documentElement;function Jb(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Jb(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Ib;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Ib})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(b,c){var d="pageYOffset"===c;n.fn[b]=function(e){return J(this,function(b,e,f){var g=Jb(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=ya(k.pixelPosition,function(a,c){return c?(c=xa(a,b),va.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return J(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Kb=a.jQuery,Lb=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Lb),b&&a.jQuery===n&&(a.jQuery=Kb),n},typeof b===U&&(a.jQuery=a.$=n),n}); diff --git a/assets/js/jquery-1.12.4.js b/assets/js/jquery-1.12.4.js deleted file mode 100644 index 1c988105..00000000 --- a/assets/js/jquery-1.12.4.js +++ /dev/null @@ -1,11008 +0,0 @@ -/*! - * jQuery JavaScript Library v1.12.4 - * http://jquery.com/ - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2016-05-20T17:17Z - */ - -(function( global, factory ) { - - if ( typeof module === "object" && typeof module.exports === "object" ) { - // For CommonJS and CommonJS-like environments where a proper `window` - // is present, execute the factory and get jQuery. - // For environments that do not have a `window` with a `document` - // (such as Node.js), expose a factory as module.exports. - // This accentuates the need for the creation of a real `window`. - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info. - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Support: Firefox 18+ -// Can't be in strict mode, several libs including ASP.NET trace -// the stack via arguments.caller.callee and Firefox dies if -// you try to trace through "use strict" call chains. (#13335) -//"use strict"; -var deletedIds = []; - -var document = window.document; - -var slice = deletedIds.slice; - -var concat = deletedIds.concat; - -var push = deletedIds.push; - -var indexOf = deletedIds.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var support = {}; - - - -var - version = "1.12.4", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }, - - // Support: Android<4.1, IE<9 - // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, - - // Matches dashed string for camelizing - rmsPrefix = /^-ms-/, - rdashAlpha = /-([\da-z])/gi, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return letter.toUpperCase(); - }; - -jQuery.fn = jQuery.prototype = { - - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // Start with an empty selector - selector: "", - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num != null ? - - // Return just the one element from the set - ( num < 0 ? this[ num + this.length ] : this[ num ] ) : - - // Return all the elements in a clean array - slice.call( this ); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - ret.context = this.context; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - each: function( callback ) { - return jQuery.each( this, callback ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map( this, function( elem, i ) { - return callback.call( elem, i, elem ); - } ) ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: deletedIds.sort, - splice: deletedIds.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var src, copyIsArray, copy, name, options, clone, - target = arguments[ 0 ] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { - target = {}; - } - - // extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - - // Only deal with non-null/undefined values - if ( ( options = arguments[ i ] ) != null ) { - - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject( copy ) || - ( copyIsArray = jQuery.isArray( copy ) ) ) ) { - - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray( src ) ? src : []; - - } else { - clone = src && jQuery.isPlainObject( src ) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend( { - - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - // See test/unit/core.js for details concerning isFunction. - // Since version 1.3, DOM methods and functions like alert - // aren't supported. They return false on IE (#2968). - isFunction: function( obj ) { - return jQuery.type( obj ) === "function"; - }, - - isArray: Array.isArray || function( obj ) { - return jQuery.type( obj ) === "array"; - }, - - isWindow: function( obj ) { - /* jshint eqeqeq: false */ - return obj != null && obj == obj.window; - }, - - isNumeric: function( obj ) { - - // parseFloat NaNs numeric-cast false positives (null|true|false|"") - // ...but misinterprets leading-number strings, particularly hex literals ("0x...") - // subtraction forces infinities to NaN - // adding 1 corrects loss of precision from parseFloat (#15100) - var realStringObj = obj && obj.toString(); - return !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0; - }, - - isEmptyObject: function( obj ) { - var name; - for ( name in obj ) { - return false; - } - return true; - }, - - isPlainObject: function( obj ) { - var key; - - // Must be an Object. - // Because of IE, we also have to check the presence of the constructor property. - // Make sure that DOM nodes and window objects don't pass through, as well - if ( !obj || jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { - return false; - } - - try { - - // Not own constructor property must be Object - if ( obj.constructor && - !hasOwn.call( obj, "constructor" ) && - !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) { - return false; - } - } catch ( e ) { - - // IE8,9 Will throw exceptions on certain host objects #9897 - return false; - } - - // Support: IE<9 - // Handle iteration over inherited properties before own properties. - if ( !support.ownFirst ) { - for ( key in obj ) { - return hasOwn.call( obj, key ); - } - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - for ( key in obj ) {} - - return key === undefined || hasOwn.call( obj, key ); - }, - - type: function( obj ) { - if ( obj == null ) { - return obj + ""; - } - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call( obj ) ] || "object" : - typeof obj; - }, - - // Workarounds based on findings by Jim Driscoll - // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context - globalEval: function( data ) { - if ( data && jQuery.trim( data ) ) { - - // We use execScript on Internet Explorer - // We use an anonymous function so that context is window - // rather than jQuery in Firefox - ( window.execScript || function( data ) { - window[ "eval" ].call( window, data ); // jscs:ignore requireDotNotation - } )( data ); - } - }, - - // Convert dashed to camelCase; used by the css and data modules - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - }, - - each: function( obj, callback ) { - var length, i = 0; - - if ( isArrayLike( obj ) ) { - length = obj.length; - for ( ; i < length; i++ ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } else { - for ( i in obj ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } - - return obj; - }, - - // Support: Android<4.1, IE<9 - trim: function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArrayLike( Object( arr ) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - var len; - - if ( arr ) { - if ( indexOf ) { - return indexOf.call( arr, elem, i ); - } - - len = arr.length; - i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; - - for ( ; i < len; i++ ) { - - // Skip accessing in sparse arrays - if ( i in arr && arr[ i ] === elem ) { - return i; - } - } - } - - return -1; - }, - - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - while ( j < len ) { - first[ i++ ] = second[ j++ ]; - } - - // Support: IE<9 - // Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists) - if ( len !== len ) { - while ( second[ j ] !== undefined ) { - first[ i++ ] = second[ j++ ]; - } - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var length, value, - i = 0, - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArrayLike( elems ) ) { - length = elems.length; - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - var args, proxy, tmp; - - if ( typeof context === "string" ) { - tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - args = slice.call( arguments, 2 ); - proxy = function() { - return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; - }, - - now: function() { - return +( new Date() ); - }, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -} ); - -// JSHint would error on this code due to the Symbol not being defined in ES5. -// Defining this global in .jshintrc would create a danger of using the global -// unguarded in another place, it seems safer to just disable JSHint for these -// three lines. -/* jshint ignore: start */ -if ( typeof Symbol === "function" ) { - jQuery.fn[ Symbol.iterator ] = deletedIds[ Symbol.iterator ]; -} -/* jshint ignore: end */ - -// Populate the class2type map -jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), -function( i, name ) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -} ); - -function isArrayLike( obj ) { - - // Support: iOS 8.2 (not reproducible in simulator) - // `in` check used to prevent JIT error (gh-2145) - // hasOwn isn't used here due to false negatives - // regarding Nodelist length in IE - var length = !!obj && "length" in obj && obj.length, - type = jQuery.type( obj ); - - if ( type === "function" || jQuery.isWindow( obj ) ) { - return false; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/*! - * Sizzle CSS Selector Engine v2.2.1 - * http://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2015-10-17 - */ -(function( window ) { - -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + 1 * new Date(), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // General-purpose constants - MAX_NEGATIVE = 1 << 31, - - // Instance methods - hasOwn = ({}).hasOwnProperty, - arr = [], - pop = arr.pop, - push_native = arr.push, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf as it's faster than native - // http://jsperf.com/thor-indexof-vs-for/5 - indexOf = function( list, elem ) { - var i = 0, - len = list.length; - for ( ; i < len; i++ ) { - if ( list[i] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - - // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + - "*\\]", - - pseudos = ":(" + identifier + ")(?:\\((" + - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rwhitespace = new RegExp( whitespace + "+", "g" ), - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), - - rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + identifier + ")" ), - "CLASS": new RegExp( "^\\.(" + identifier + ")" ), - "TAG": new RegExp( "^(" + identifier + "|[*])" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - rescape = /'|\\/g, - - // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox<24 - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : - high < 0 ? - // BMP codepoint - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }, - - // Used for iframes - // See setDocument() - // Removing the function wrapper causes a "Permission Denied" - // error in IE - unloadHandler = function() { - setDocument(); - }; - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - (arr = slice.call( preferredDoc.childNodes )), - preferredDoc.childNodes - ); - // Support: Android<4.0 - // Detect silently failing push.apply - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - push_native.apply( target, slice.call(els) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var m, i, elem, nid, nidselect, match, groups, newSelector, - newContext = context && context.ownerDocument, - - // nodeType defaults to 9, since context defaults to document - nodeType = context ? context.nodeType : 9; - - results = results || []; - - // Return early from calls with invalid selector or context - if ( typeof selector !== "string" || !selector || - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { - - return results; - } - - // Try to shortcut find operations (as opposed to filters) in HTML documents - if ( !seed ) { - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } - context = context || document; - - if ( documentIsHTML ) { - - // If the selector is sufficiently simple, try using a "get*By*" DOM method - // (excepting DocumentFragment context, where the methods don't exist) - if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { - - // ID selector - if ( (m = match[1]) ) { - - // Document context - if ( nodeType === 9 ) { - if ( (elem = context.getElementById( m )) ) { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - - // Element context - } else { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( newContext && (elem = newContext.getElementById( m )) && - contains( context, elem ) && - elem.id === m ) { - - results.push( elem ); - return results; - } - } - - // Type selector - } else if ( match[2] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Class selector - } else if ( (m = match[3]) && support.getElementsByClassName && - context.getElementsByClassName ) { - - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // Take advantage of querySelectorAll - if ( support.qsa && - !compilerCache[ selector + " " ] && - (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { - - if ( nodeType !== 1 ) { - newContext = context; - newSelector = selector; - - // qSA looks outside Element context, which is not what we want - // Thanks to Andrew Dupont for this workaround technique - // Support: IE <=8 - // Exclude object elements - } else if ( context.nodeName.toLowerCase() !== "object" ) { - - // Capture the context ID, setting it first if necessary - if ( (nid = context.getAttribute( "id" )) ) { - nid = nid.replace( rescape, "\\$&" ); - } else { - context.setAttribute( "id", (nid = expando) ); - } - - // Prefix every selector in the list - groups = tokenize( selector ); - i = groups.length; - nidselect = ridentifier.test( nid ) ? "#" + nid : "[id='" + nid + "']"; - while ( i-- ) { - groups[i] = nidselect + " " + toSelector( groups[i] ); - } - newSelector = groups.join( "," ); - - // Expand context for sibling selectors - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || - context; - } - - if ( newSelector ) { - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch ( qsaError ) { - } finally { - if ( nid === expando ) { - context.removeAttribute( "id" ); - } - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {function(string, object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return (cache[ key + " " ] = value); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created div and expects a boolean result - */ -function assert( fn ) { - var div = document.createElement("div"); - - try { - return !!fn( div ); - } catch (e) { - return false; - } finally { - // Remove from its parent by default - if ( div.parentNode ) { - div.parentNode.removeChild( div ); - } - // release memory in IE - div = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split("|"), - i = arr.length; - - while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - ( ~b.sourceIndex || MAX_NEGATIVE ) - - ( ~a.sourceIndex || MAX_NEGATIVE ); - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { - argument = +argument; - return markFunction(function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== "undefined" && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = elem && (elem.ownerDocument || elem).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, parent, - doc = node ? node.ownerDocument || node : preferredDoc; - - // Return early if doc is invalid or already selected - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Update global variables - document = doc; - docElem = document.documentElement; - documentIsHTML = !isXML( document ); - - // Support: IE 9-11, Edge - // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) - if ( (parent = document.defaultView) && parent.top !== parent ) { - // Support: IE 11 - if ( parent.addEventListener ) { - parent.addEventListener( "unload", unloadHandler, false ); - - // Support: IE 9 - 10 only - } else if ( parent.attachEvent ) { - parent.attachEvent( "onunload", unloadHandler ); - } - } - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties - // (excepting IE8 booleans) - support.attributes = assert(function( div ) { - div.className = "i"; - return !div.getAttribute("className"); - }); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( div ) { - div.appendChild( document.createComment("") ); - return !div.getElementsByTagName("*").length; - }); - - // Support: IE<9 - support.getElementsByClassName = rnative.test( document.getElementsByClassName ); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert(function( div ) { - docElem.appendChild( div ).id = expando; - return !document.getElementsByName || !document.getElementsByName( expando ).length; - }); - - // ID find and filter - if ( support.getById ) { - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var m = context.getElementById( id ); - return m ? [ m ] : []; - } - }; - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute("id") === attrId; - }; - }; - } else { - // Support: IE6/7 - // getElementById is not reliable as a find shortcut - delete Expr.find["ID"]; - - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== "undefined" && - elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - } - - // Tag - Expr.find["TAG"] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( tag ); - - // DocumentFragment nodes don't have gEBTN - } else if ( support.qsa ) { - return context.querySelectorAll( tag ); - } - } : - - function( tag, context ) { - var elem, - tmp = [], - i = 0, - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( (elem = results[i++]) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { - if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See http://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function( div ) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // http://bugs.jquery.com/ticket/12359 - docElem.appendChild( div ).innerHTML = "<a id='" + expando + "'></a>" + - "<select id='" + expando + "-\r\\' msallowcapture=''>" + - "<option selected=''></option></select>"; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( div.querySelectorAll("[msallowcapture^='']").length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !div.querySelectorAll("[selected]").length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ - if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push("~="); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); - } - - // Support: Safari 8+, iOS 8+ - // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibing-combinator selector` fails - if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push(".#.+[+~]"); - } - }); - - assert(function( div ) { - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = document.createElement("input"); - input.setAttribute( "type", "hidden" ); - div.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( div.querySelectorAll("[name=d]").length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":enabled").length ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Opera 10-11 does not throw on post-comma invalid pseudos - div.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { - - assert(function( div ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( div, "div" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( div, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - }); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully self-exclusive - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); - } : - function( a, b ) { - if ( b ) { - while ( (b = b.parentNode) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { - - // Choose the first element that is related to our preferred document - if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { - return -1; - } - if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - return a === document ? -1 : - b === document ? 1 : - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( (cur = cur.parentNode) ) { - ap.unshift( cur ); - } - cur = b; - while ( (cur = cur.parentNode) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : - 0; - }; - - return document; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - // Make sure that attribute selectors are quoted - expr = expr.replace( rattributeQuotes, "='$1']" ); - - if ( support.matchesSelector && documentIsHTML && - !compilerCache[ expr + " " ] && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch (e) {} - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - (val = elem.getAttributeNode(name)) && val.specified ? - val.value : - null; -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - while ( (node = elem[i++]) ) { - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); - - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[1] = match[1].toLowerCase(); - - if ( match[1].slice( 0, 3 ) === "nth" ) { - // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); - - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[6] && match[2]; - - if ( matchExpr["CHILD"].test( match[0] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[3] ) { - match[2] = match[4] || match[5] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && - // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { - - // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { return true; } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); - }); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - }; - }, - - "CHILD": function( type, what, argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, context, xml ) { - var cache, uniqueCache, outerCache, node, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType, - diff = false; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( (node = node[ dir ]) ) { - if ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) { - - return false; - } - } - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - - // Seek `elem` from a previously-cached index - - // ...in a gzip-friendly way - node = parent; - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex && cache[ 2 ]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( (node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - } else { - // Use previously-cached element index if available - if ( useCache ) { - // ...in a gzip-friendly way - node = elem; - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex; - } - - // xml :nth-child(...) - // or :nth-last-child(...) or :nth(-last)?-of-type(...) - if ( diff === false ) { - // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { - - if ( ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) && - ++diff ) { - - // Cache the index of each encountered element - if ( useCache ) { - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - uniqueCache[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); - } - }) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - // Potentially complex pseudos - "not": markFunction(function( selector ) { - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); - } - } - }) : - function( elem, context, xml ) { - input[0] = elem; - matcher( input, null, xml, results ); - // Don't keep the element (issue #299) - input[0] = null; - return !results.pop(); - }; - }), - - "has": markFunction(function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - }), - - "contains": markFunction(function( text ) { - text = text.replace( runescape, funescape ); - return function( elem ) { - return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; - }; - }), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - // lang value must be a valid identifier - if ( !ridentifier.test(lang || "") ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( (elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); - return false; - }; - }), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); - }, - - // Boolean properties - "enabled": function( elem ) { - return elem.disabled === false; - }, - - "disabled": function( elem ) { - return elem.disabled === true; - }, - - "checked": function( elem ) { - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); - }, - - "selected": function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo(function() { - return [ 0 ]; - }), - - "last": createPositionalPseudo(function( matchIndexes, length ) { - return [ length - 1 ]; - }), - - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - }), - - "even": createPositionalPseudo(function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "odd": createPositionalPseudo(function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }) - } -}; - -Expr.pseudos["nth"] = Expr.pseudos["eq"]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { - if ( match ) { - // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; - } - groups.push( (tokens = []) ); - } - - matched = false; - - // Combinators - if ( (match = rcombinators.exec( soFar )) ) { - matched = match.shift(); - tokens.push({ - value: matched, - // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - }); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { - matched = match.shift(); - tokens.push({ - value: matched, - type: type, - matches: match - }); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[i].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - checkNonElements = base && dir === "parentNode", - doneName = done++; - - return combinator.first ? - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, uniqueCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching - if ( xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); - - if ( (oldCache = uniqueCache[ dir ]) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return (newCache[ 2 ] = oldCache[ 2 ]); - } else { - // Reuse newcache so results back-propagate to previous elements - uniqueCache[ dir ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { - return true; - } - } - } - } - } - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[0]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction(function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) ) { - // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); - } - } - postFinder( null, (matcherOut = []), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { - - seed[temp] = !(results[temp] = elem); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - }); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - // Avoid hanging onto element (issue #299) - checkContext = null; - return ret; - } ]; - - for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; - } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), - len = elems.length; - - if ( outermost ) { - outermostContext = context === document || context || outermost; - } - - // Add elements passing elementMatchers directly to results - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id - for ( ; i !== len && (elem = elems[i]) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - if ( !context && elem.ownerDocument !== document ) { - setDocument( elem ); - xml = !documentIsHTML; - } - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context || document, xml) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // `i` is now the count of elements visited above, and adding it to `matchedCount` - // makes the latter nonnegative. - matchedCount += i; - - // Apply set filters to unmatched elements - // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` - // equals `i`), unless we didn't visit _any_ elements in the above loop because we have - // no element matchers and no seed. - // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that - // case, which will result in a "00" `matchedCount` that differs from `i` but is also - // numerically zero. - if ( bySet && i !== matchedCount ) { - j = 0; - while ( (matcher = setMatchers[j++]) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[i] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( (selector = compiled.selector || selector) ); - - results = results || []; - - // Try to minimize operations if there is only one selector in the list and no seed - // (the latter of which guarantees us context) - if ( match.length === 1 ) { - - // Reduce context if the leading compound selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - support.getById && context.nodeType === 9 && documentIsHTML && - Expr.relative[ tokens[1].type ] ) { - - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[i]; - - // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { - break; - } - if ( (find = Expr.find[ type ]) ) { - // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context - )) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - !context || rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; - -// Support: Chrome 14-35+ -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert(function( div1 ) { - // Should return 1, but returns 4 (following) - return div1.compareDocumentPosition( document.createElement("div") ) & 1; -}); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert(function( div ) { - div.innerHTML = "<a href='#'></a>"; - return div.firstChild.getAttribute("href") === "#" ; -}) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - }); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert(function( div ) { - div.innerHTML = "<input/>"; - div.firstChild.setAttribute( "value", "" ); - return div.firstChild.getAttribute( "value" ) === ""; -}) ) { - addHandle( "value", function( elem, name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - }); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert(function( div ) { - return div.getAttribute("disabled") == null; -}) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - (val = elem.getAttributeNode( name )) && val.specified ? - val.value : - null; - } - }); -} - -return Sizzle; - -})( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[ ":" ] = jQuery.expr.pseudos; -jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; - - - -var dir = function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; -}; - - -var siblings = function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; -}; - - -var rneedsContext = jQuery.expr.match.needsContext; - -var rsingleTag = ( /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/ ); - - - -var risSimple = /^.[^:#\[\.,]*$/; - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - /* jshint -W018 */ - return !!qualifier.call( elem, i, elem ) !== not; - } ); - - } - - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - } ); - - } - - if ( typeof qualifier === "string" ) { - if ( risSimple.test( qualifier ) ) { - return jQuery.filter( qualifier, elements, not ); - } - - qualifier = jQuery.filter( qualifier, elements ); - } - - return jQuery.grep( elements, function( elem ) { - return ( jQuery.inArray( elem, qualifier ) > -1 ) !== not; - } ); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 && elem.nodeType === 1 ? - jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : - jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - } ) ); -}; - -jQuery.fn.extend( { - find: function( selector ) { - var i, - ret = [], - self = this, - len = self.length; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter( function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - } ) ); - } - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - // Needed because $( selector, context ) becomes $( context ).find( selector ) - ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); - ret.selector = this.selector ? this.selector + " " + selector : selector; - return ret; - }, - filter: function( selector ) { - return this.pushStack( winnow( this, selector || [], false ) ); - }, - not: function( selector ) { - return this.pushStack( winnow( this, selector || [], true ) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -} ); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // A simple way to check for HTML strings - // Prioritize #id over <tag> to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, - - init = jQuery.fn.init = function( selector, context, root ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // init accepts an alternate rootjQuery - // so migrate can support jQuery.sub (gh-2101) - root = root || rootjQuery; - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector.charAt( 0 ) === "<" && - selector.charAt( selector.length - 1 ) === ">" && - selector.length >= 3 ) { - - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && ( match[ 1 ] || !context ) ) { - - // HANDLE: $(html) -> $(array) - if ( match[ 1 ] ) { - context = context instanceof jQuery ? context[ 0 ] : context; - - // scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[ 1 ], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - - // Properties of context are called as methods if possible - if ( jQuery.isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[ 2 ] ); - - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - - // Handle the case where IE and Opera return items - // by name instead of ID - if ( elem.id !== match[ 2 ] ) { - return rootjQuery.find( selector ); - } - - // Otherwise, we inject the element directly into the jQuery object - this.length = 1; - this[ 0 ] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || root ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this.context = this[ 0 ] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return typeof root.ready !== "undefined" ? - root.ready( selector ) : - - // Execute immediately if ready is not present - selector( jQuery ); - } - - if ( selector.selector !== undefined ) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - - // methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend( { - has: function( target ) { - var i, - targets = jQuery( target, this ), - len = targets.length; - - return this.filter( function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( this, targets[ i ] ) ) { - return true; - } - } - } ); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? - jQuery( selectors, context || this.context ) : - 0; - - for ( ; i < l; i++ ) { - for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { - - // Always skip document fragments - if ( cur.nodeType < 11 && ( pos ? - pos.index( cur ) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector( cur, selectors ) ) ) { - - matched.push( cur ); - break; - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); - }, - - // Determine the position of an element within - // the matched set of elements - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // index in selector - if ( typeof elem === "string" ) { - return jQuery.inArray( this[ 0 ], jQuery( elem ) ); - } - - // Locate the position of the desired element - return jQuery.inArray( - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem, this ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.uniqueSort( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter( selector ) - ); - } -} ); - -function sibling( cur, dir ) { - do { - cur = cur[ dir ]; - } while ( cur && cur.nodeType !== 1 ); - - return cur; -} - -jQuery.each( { - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return siblings( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return siblings( elem.firstChild ); - }, - contents: function( elem ) { - return jQuery.nodeName( elem, "iframe" ) ? - elem.contentDocument || elem.contentWindow.document : - jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var ret = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - ret = jQuery.filter( selector, ret ); - } - - if ( this.length > 1 ) { - - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - ret = jQuery.uniqueSort( ret ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - ret = ret.reverse(); - } - } - - return this.pushStack( ret ); - }; -} ); -var rnotwhite = ( /\S+/g ); - - - -// Convert String-formatted options into Object-formatted ones -function createOptions( options ) { - var object = {}; - jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { - object[ flag ] = true; - } ); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - createOptions( options ) : - jQuery.extend( {}, options ); - - var // Flag to know if list is currently firing - firing, - - // Last fire value for non-forgettable lists - memory, - - // Flag to know if list was already fired - fired, - - // Flag to prevent firing - locked, - - // Actual callback list - list = [], - - // Queue of execution data for repeatable lists - queue = [], - - // Index of currently firing callback (modified by add/remove as needed) - firingIndex = -1, - - // Fire callbacks - fire = function() { - - // Enforce single-firing - locked = options.once; - - // Execute callbacks for all pending executions, - // respecting firingIndex overrides and runtime changes - fired = firing = true; - for ( ; queue.length; firingIndex = -1 ) { - memory = queue.shift(); - while ( ++firingIndex < list.length ) { - - // Run callback and check for early termination - if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && - options.stopOnFalse ) { - - // Jump to end and forget the data so .add doesn't re-fire - firingIndex = list.length; - memory = false; - } - } - } - - // Forget the data if we're done with it - if ( !options.memory ) { - memory = false; - } - - firing = false; - - // Clean up if we're done firing for good - if ( locked ) { - - // Keep an empty list if we have data for future add calls - if ( memory ) { - list = []; - - // Otherwise, this object is spent - } else { - list = ""; - } - } - }, - - // Actual Callbacks object - self = { - - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - - // If we have memory from a past run, we should fire after adding - if ( memory && !firing ) { - firingIndex = list.length - 1; - queue.push( memory ); - } - - ( function add( args ) { - jQuery.each( args, function( _, arg ) { - if ( jQuery.isFunction( arg ) ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { - - // Inspect recursively - add( arg ); - } - } ); - } )( arguments ); - - if ( memory && !firing ) { - fire(); - } - } - return this; - }, - - // Remove a callback from the list - remove: function() { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - - // Handle firing indexes - if ( index <= firingIndex ) { - firingIndex--; - } - } - } ); - return this; - }, - - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? - jQuery.inArray( fn, list ) > -1 : - list.length > 0; - }, - - // Remove all callbacks from the list - empty: function() { - if ( list ) { - list = []; - } - return this; - }, - - // Disable .fire and .add - // Abort any current/pending executions - // Clear all callbacks and values - disable: function() { - locked = queue = []; - list = memory = ""; - return this; - }, - disabled: function() { - return !list; - }, - - // Disable .fire - // Also disable .add unless we have memory (since it would have no effect) - // Abort any pending executions - lock: function() { - locked = true; - if ( !memory ) { - self.disable(); - } - return this; - }, - locked: function() { - return !!locked; - }, - - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( !locked ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - queue.push( args ); - if ( !firing ) { - fire(); - } - } - return this; - }, - - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -jQuery.extend( { - - Deferred: function( func ) { - var tuples = [ - - // action, add listener, listener list, final state - [ "resolve", "done", jQuery.Callbacks( "once memory" ), "resolved" ], - [ "reject", "fail", jQuery.Callbacks( "once memory" ), "rejected" ], - [ "notify", "progress", jQuery.Callbacks( "memory" ) ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - then: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - return jQuery.Deferred( function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; - - // deferred[ done | fail | progress ] for forwarding actions to newDefer - deferred[ tuple[ 1 ] ]( function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise() - .progress( newDefer.notify ) - .done( newDefer.resolve ) - .fail( newDefer.reject ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( - this === promise ? newDefer.promise() : this, - fn ? [ returned ] : arguments - ); - } - } ); - } ); - fns = null; - } ).promise(); - }, - - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Keep pipe for back-compat - promise.pipe = promise.then; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 3 ]; - - // promise[ done | fail | progress ] = list.add - promise[ tuple[ 1 ] ] = list.add; - - // Handle state - if ( stateString ) { - list.add( function() { - - // state = [ resolved | rejected ] - state = stateString; - - // [ reject_list | resolve_list ].disable; progress_list.lock - }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); - } - - // deferred[ resolve | reject | notify ] - deferred[ tuple[ 0 ] ] = function() { - deferred[ tuple[ 0 ] + "With" ]( this === deferred ? promise : this, arguments ); - return this; - }; - deferred[ tuple[ 0 ] + "With" ] = list.fireWith; - } ); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( subordinate /* , ..., subordinateN */ ) { - var i = 0, - resolveValues = slice.call( arguments ), - length = resolveValues.length, - - // the count of uncompleted subordinates - remaining = length !== 1 || - ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, - - // the master Deferred. - // If resolveValues consist of only a single Deferred, just use that. - deferred = remaining === 1 ? subordinate : jQuery.Deferred(), - - // Update function for both resolve and progress values - updateFunc = function( i, contexts, values ) { - return function( value ) { - contexts[ i ] = this; - values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( values === progressValues ) { - deferred.notifyWith( contexts, values ); - - } else if ( !( --remaining ) ) { - deferred.resolveWith( contexts, values ); - } - }; - }, - - progressValues, progressContexts, resolveContexts; - - // add listeners to Deferred subordinates; treat others as resolved - if ( length > 1 ) { - progressValues = new Array( length ); - progressContexts = new Array( length ); - resolveContexts = new Array( length ); - for ( ; i < length; i++ ) { - if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { - resolveValues[ i ].promise() - .progress( updateFunc( i, progressContexts, progressValues ) ) - .done( updateFunc( i, resolveContexts, resolveValues ) ) - .fail( deferred.reject ); - } else { - --remaining; - } - } - } - - // if we're not waiting on anything, resolve the master - if ( !remaining ) { - deferred.resolveWith( resolveContexts, resolveValues ); - } - - return deferred.promise(); - } -} ); - - -// The deferred used on DOM ready -var readyList; - -jQuery.fn.ready = function( fn ) { - - // Add the callback - jQuery.ready.promise().done( fn ); - - return this; -}; - -jQuery.extend( { - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Hold (or release) the ready event - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.triggerHandler ) { - jQuery( document ).triggerHandler( "ready" ); - jQuery( document ).off( "ready" ); - } - } -} ); - -/** - * Clean-up method for dom ready events - */ -function detach() { - if ( document.addEventListener ) { - document.removeEventListener( "DOMContentLoaded", completed ); - window.removeEventListener( "load", completed ); - - } else { - document.detachEvent( "onreadystatechange", completed ); - window.detachEvent( "onload", completed ); - } -} - -/** - * The ready event handler and self cleanup method - */ -function completed() { - - // readyState === "complete" is good enough for us to call the dom ready in oldIE - if ( document.addEventListener || - window.event.type === "load" || - document.readyState === "complete" ) { - - detach(); - jQuery.ready(); - } -} - -jQuery.ready.promise = function( obj ) { - if ( !readyList ) { - - readyList = jQuery.Deferred(); - - // Catch cases where $(document).ready() is called - // after the browser event has already occurred. - // Support: IE6-10 - // Older IE sometimes signals "interactive" too soon - if ( document.readyState === "complete" || - ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { - - // Handle it asynchronously to allow scripts the opportunity to delay ready - window.setTimeout( jQuery.ready ); - - // Standards-based browsers support DOMContentLoaded - } else if ( document.addEventListener ) { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed ); - - // If IE event model is used - } else { - - // Ensure firing before onload, maybe late but safe also for iframes - document.attachEvent( "onreadystatechange", completed ); - - // A fallback to window.onload, that will always work - window.attachEvent( "onload", completed ); - - // If IE and not a frame - // continually check to see if the document is ready - var top = false; - - try { - top = window.frameElement == null && document.documentElement; - } catch ( e ) {} - - if ( top && top.doScroll ) { - ( function doScrollCheck() { - if ( !jQuery.isReady ) { - - try { - - // Use the trick by Diego Perini - // http://javascript.nwbox.com/IEContentLoaded/ - top.doScroll( "left" ); - } catch ( e ) { - return window.setTimeout( doScrollCheck, 50 ); - } - - // detach all dom ready events - detach(); - - // and execute any waiting functions - jQuery.ready(); - } - } )(); - } - } - } - return readyList.promise( obj ); -}; - -// Kick off the DOM ready check even if the user does not -jQuery.ready.promise(); - - - - -// Support: IE<9 -// Iteration over object's inherited properties before its own -var i; -for ( i in jQuery( support ) ) { - break; -} -support.ownFirst = i === "0"; - -// Note: most support tests are defined in their respective modules. -// false until the test is run -support.inlineBlockNeedsLayout = false; - -// Execute ASAP in case we need to set body.style.zoom -jQuery( function() { - - // Minified: var a,b,c,d - var val, div, body, container; - - body = document.getElementsByTagName( "body" )[ 0 ]; - if ( !body || !body.style ) { - - // Return for frameset docs that don't have a body - return; - } - - // Setup - div = document.createElement( "div" ); - container = document.createElement( "div" ); - container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; - body.appendChild( container ).appendChild( div ); - - if ( typeof div.style.zoom !== "undefined" ) { - - // Support: IE<8 - // Check if natively block-level elements act like inline-block - // elements when setting their display to 'inline' and giving - // them layout - div.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1"; - - support.inlineBlockNeedsLayout = val = div.offsetWidth === 3; - if ( val ) { - - // Prevent IE 6 from affecting layout for positioned elements #11048 - // Prevent IE from shrinking the body in IE 7 mode #12869 - // Support: IE<8 - body.style.zoom = 1; - } - } - - body.removeChild( container ); -} ); - - -( function() { - var div = document.createElement( "div" ); - - // Support: IE<9 - support.deleteExpando = true; - try { - delete div.test; - } catch ( e ) { - support.deleteExpando = false; - } - - // Null elements to avoid leaks in IE. - div = null; -} )(); -var acceptData = function( elem ) { - var noData = jQuery.noData[ ( elem.nodeName + " " ).toLowerCase() ], - nodeType = +elem.nodeType || 1; - - // Do not set data on non-element DOM nodes because it will not be cleared (#8335). - return nodeType !== 1 && nodeType !== 9 ? - false : - - // Nodes accept data unless otherwise specified; rejection can be conditional - !noData || noData !== true && elem.getAttribute( "classid" ) === noData; -}; - - - - -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /([A-Z])/g; - -function dataAttr( elem, key, data ) { - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - - var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); - - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - - // Only convert to a number if it doesn't change the string - +data + "" === data ? +data : - rbrace.test( data ) ? jQuery.parseJSON( data ) : - data; - } catch ( e ) {} - - // Make sure we set the data so it isn't changed later - jQuery.data( elem, key, data ); - - } else { - data = undefined; - } - } - - return data; -} - -// checks a cache object for emptiness -function isEmptyDataObject( obj ) { - var name; - for ( name in obj ) { - - // if the public data object is empty, the private is still empty - if ( name === "data" && jQuery.isEmptyObject( obj[ name ] ) ) { - continue; - } - if ( name !== "toJSON" ) { - return false; - } - } - - return true; -} - -function internalData( elem, name, data, pvt /* Internal Use Only */ ) { - if ( !acceptData( elem ) ) { - return; - } - - var ret, thisCache, - internalKey = jQuery.expando, - - // We have to handle DOM nodes and JS objects differently because IE6-7 - // can't GC object references properly across the DOM-JS boundary - isNode = elem.nodeType, - - // Only DOM nodes need the global jQuery cache; JS object data is - // attached directly to the object so GC can occur automatically - cache = isNode ? jQuery.cache : elem, - - // Only defining an ID for JS objects if its cache already exists allows - // the code to shortcut on the same path as a DOM node with no cache - id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; - - // Avoid doing any more work than we need to when trying to get data on an - // object that has no data at all - if ( ( !id || !cache[ id ] || ( !pvt && !cache[ id ].data ) ) && - data === undefined && typeof name === "string" ) { - return; - } - - if ( !id ) { - - // Only DOM nodes need a new unique ID for each element since their data - // ends up in the global cache - if ( isNode ) { - id = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++; - } else { - id = internalKey; - } - } - - if ( !cache[ id ] ) { - - // Avoid exposing jQuery metadata on plain JS objects when the object - // is serialized using JSON.stringify - cache[ id ] = isNode ? {} : { toJSON: jQuery.noop }; - } - - // An object can be passed to jQuery.data instead of a key/value pair; this gets - // shallow copied over onto the existing cache - if ( typeof name === "object" || typeof name === "function" ) { - if ( pvt ) { - cache[ id ] = jQuery.extend( cache[ id ], name ); - } else { - cache[ id ].data = jQuery.extend( cache[ id ].data, name ); - } - } - - thisCache = cache[ id ]; - - // jQuery data() is stored in a separate object inside the object's internal data - // cache in order to avoid key collisions between internal data and user-defined - // data. - if ( !pvt ) { - if ( !thisCache.data ) { - thisCache.data = {}; - } - - thisCache = thisCache.data; - } - - if ( data !== undefined ) { - thisCache[ jQuery.camelCase( name ) ] = data; - } - - // Check for both converted-to-camel and non-converted data property names - // If a data property was specified - if ( typeof name === "string" ) { - - // First Try to find as-is property data - ret = thisCache[ name ]; - - // Test for null|undefined property data - if ( ret == null ) { - - // Try to find the camelCased property - ret = thisCache[ jQuery.camelCase( name ) ]; - } - } else { - ret = thisCache; - } - - return ret; -} - -function internalRemoveData( elem, name, pvt ) { - if ( !acceptData( elem ) ) { - return; - } - - var thisCache, i, - isNode = elem.nodeType, - - // See jQuery.data for more information - cache = isNode ? jQuery.cache : elem, - id = isNode ? elem[ jQuery.expando ] : jQuery.expando; - - // If there is already no cache entry for this object, there is no - // purpose in continuing - if ( !cache[ id ] ) { - return; - } - - if ( name ) { - - thisCache = pvt ? cache[ id ] : cache[ id ].data; - - if ( thisCache ) { - - // Support array or space separated string names for data keys - if ( !jQuery.isArray( name ) ) { - - // try the string as a key before any manipulation - if ( name in thisCache ) { - name = [ name ]; - } else { - - // split the camel cased version by spaces unless a key with the spaces exists - name = jQuery.camelCase( name ); - if ( name in thisCache ) { - name = [ name ]; - } else { - name = name.split( " " ); - } - } - } else { - - // If "name" is an array of keys... - // When data is initially created, via ("key", "val") signature, - // keys will be converted to camelCase. - // Since there is no way to tell _how_ a key was added, remove - // both plain key and camelCase key. #12786 - // This will only penalize the array argument path. - name = name.concat( jQuery.map( name, jQuery.camelCase ) ); - } - - i = name.length; - while ( i-- ) { - delete thisCache[ name[ i ] ]; - } - - // If there is no data left in the cache, we want to continue - // and let the cache object itself get destroyed - if ( pvt ? !isEmptyDataObject( thisCache ) : !jQuery.isEmptyObject( thisCache ) ) { - return; - } - } - } - - // See jQuery.data for more information - if ( !pvt ) { - delete cache[ id ].data; - - // Don't destroy the parent cache unless the internal data object - // had been the only thing left in it - if ( !isEmptyDataObject( cache[ id ] ) ) { - return; - } - } - - // Destroy the cache - if ( isNode ) { - jQuery.cleanData( [ elem ], true ); - - // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) - /* jshint eqeqeq: false */ - } else if ( support.deleteExpando || cache != cache.window ) { - /* jshint eqeqeq: true */ - delete cache[ id ]; - - // When all else fails, undefined - } else { - cache[ id ] = undefined; - } -} - -jQuery.extend( { - cache: {}, - - // The following elements (space-suffixed to avoid Object.prototype collisions) - // throw uncatchable exceptions if you attempt to set expando properties - noData: { - "applet ": true, - "embed ": true, - - // ...but Flash objects (which have this classid) *can* handle expandos - "object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" - }, - - hasData: function( elem ) { - elem = elem.nodeType ? jQuery.cache[ elem[ jQuery.expando ] ] : elem[ jQuery.expando ]; - return !!elem && !isEmptyDataObject( elem ); - }, - - data: function( elem, name, data ) { - return internalData( elem, name, data ); - }, - - removeData: function( elem, name ) { - return internalRemoveData( elem, name ); - }, - - // For internal use only. - _data: function( elem, name, data ) { - return internalData( elem, name, data, true ); - }, - - _removeData: function( elem, name ) { - return internalRemoveData( elem, name, true ); - } -} ); - -jQuery.fn.extend( { - data: function( key, value ) { - var i, name, data, - elem = this[ 0 ], - attrs = elem && elem.attributes; - - // Special expections of .data basically thwart jQuery.access, - // so implement the relevant behavior ourselves - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = jQuery.data( elem ); - - if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE11+ - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.slice( 5 ) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - jQuery._data( elem, "parsedAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each( function() { - jQuery.data( this, key ); - } ); - } - - return arguments.length > 1 ? - - // Sets one value - this.each( function() { - jQuery.data( this, key, value ); - } ) : - - // Gets one value - // Try to fetch any internally stored data first - elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined; - }, - - removeData: function( key ) { - return this.each( function() { - jQuery.removeData( this, key ); - } ); - } -} ); - - -jQuery.extend( { - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = jQuery._data( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || jQuery.isArray( data ) ) { - queue = jQuery._data( elem, type, jQuery.makeArray( data ) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // not intended for public consumption - generates a queueHooks object, - // or returns the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return jQuery._data( elem, key ) || jQuery._data( elem, key, { - empty: jQuery.Callbacks( "once memory" ).add( function() { - jQuery._removeData( elem, type + "queue" ); - jQuery._removeData( elem, key ); - } ) - } ); - } -} ); - -jQuery.fn.extend( { - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[ 0 ], type ); - } - - return data === undefined ? - this : - this.each( function() { - var queue = jQuery.queue( this, type, data ); - - // ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - } ); - }, - dequeue: function( type ) { - return this.each( function() { - jQuery.dequeue( this, type ); - } ); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = jQuery._data( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -} ); - - -( function() { - var shrinkWrapBlocksVal; - - support.shrinkWrapBlocks = function() { - if ( shrinkWrapBlocksVal != null ) { - return shrinkWrapBlocksVal; - } - - // Will be changed later if needed. - shrinkWrapBlocksVal = false; - - // Minified: var b,c,d - var div, body, container; - - body = document.getElementsByTagName( "body" )[ 0 ]; - if ( !body || !body.style ) { - - // Test fired too early or in an unsupported environment, exit. - return; - } - - // Setup - div = document.createElement( "div" ); - container = document.createElement( "div" ); - container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; - body.appendChild( container ).appendChild( div ); - - // Support: IE6 - // Check if elements with layout shrink-wrap their children - if ( typeof div.style.zoom !== "undefined" ) { - - // Reset CSS: box-sizing; display; margin; border - div.style.cssText = - - // Support: Firefox<29, Android 2.3 - // Vendor-prefix box-sizing - "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" + - "box-sizing:content-box;display:block;margin:0;border:0;" + - "padding:1px;width:1px;zoom:1"; - div.appendChild( document.createElement( "div" ) ).style.width = "5px"; - shrinkWrapBlocksVal = div.offsetWidth !== 3; - } - - body.removeChild( container ); - - return shrinkWrapBlocksVal; - }; - -} )(); -var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; - -var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); - - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var isHidden = function( elem, el ) { - - // isHidden might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - return jQuery.css( elem, "display" ) === "none" || - !jQuery.contains( elem.ownerDocument, elem ); - }; - - - -function adjustCSS( elem, prop, valueParts, tween ) { - var adjusted, - scale = 1, - maxIterations = 20, - currentValue = tween ? - function() { return tween.cur(); } : - function() { return jQuery.css( elem, prop, "" ); }, - initial = currentValue(), - unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), - - // Starting value computation is required for potential unit mismatches - initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && - rcssNum.exec( jQuery.css( elem, prop ) ); - - if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { - - // Trust units reported by jQuery.css - unit = unit || initialInUnit[ 3 ]; - - // Make sure we update the tween properties later on - valueParts = valueParts || []; - - // Iteratively approximate from a nonzero starting point - initialInUnit = +initial || 1; - - do { - - // If previous iteration zeroed out, double until we get *something*. - // Use string for doubling so we don't accidentally see scale as unchanged below - scale = scale || ".5"; - - // Adjust and apply - initialInUnit = initialInUnit / scale; - jQuery.style( elem, prop, initialInUnit + unit ); - - // Update scale, tolerating zero or NaN from tween.cur() - // Break the loop if scale is unchanged or perfect, or if we've just had enough. - } while ( - scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations - ); - } - - if ( valueParts ) { - initialInUnit = +initialInUnit || +initial || 0; - - // Apply relative offset (+=/-=) if specified - adjusted = valueParts[ 1 ] ? - initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : - +valueParts[ 2 ]; - if ( tween ) { - tween.unit = unit; - tween.start = initialInUnit; - tween.end = adjusted; - } - } - return adjusted; -} - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - length = elems.length, - bulk = key == null; - - // Sets many values - if ( jQuery.type( key ) === "object" ) { - chainable = true; - for ( i in key ) { - access( elems, fn, i, key[ i ], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !jQuery.isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < length; i++ ) { - fn( - elems[ i ], - key, - raw ? value : value.call( elems[ i ], i, fn( elems[ i ], key ) ) - ); - } - } - } - - return chainable ? - elems : - - // Gets - bulk ? - fn.call( elems ) : - length ? fn( elems[ 0 ], key ) : emptyGet; -}; -var rcheckableType = ( /^(?:checkbox|radio)$/i ); - -var rtagName = ( /<([\w:-]+)/ ); - -var rscriptType = ( /^$|\/(?:java|ecma)script/i ); - -var rleadingWhitespace = ( /^\s+/ ); - -var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|" + - "details|dialog|figcaption|figure|footer|header|hgroup|main|" + - "mark|meter|nav|output|picture|progress|section|summary|template|time|video"; - - - -function createSafeFragment( document ) { - var list = nodeNames.split( "|" ), - safeFrag = document.createDocumentFragment(); - - if ( safeFrag.createElement ) { - while ( list.length ) { - safeFrag.createElement( - list.pop() - ); - } - } - return safeFrag; -} - - -( function() { - var div = document.createElement( "div" ), - fragment = document.createDocumentFragment(), - input = document.createElement( "input" ); - - // Setup - div.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>"; - - // IE strips leading whitespace when .innerHTML is used - support.leadingWhitespace = div.firstChild.nodeType === 3; - - // Make sure that tbody elements aren't automatically inserted - // IE will insert them into empty tables - support.tbody = !div.getElementsByTagName( "tbody" ).length; - - // Make sure that link elements get serialized correctly by innerHTML - // This requires a wrapper element in IE - support.htmlSerialize = !!div.getElementsByTagName( "link" ).length; - - // Makes sure cloning an html5 element does not cause problems - // Where outerHTML is undefined, this still works - support.html5Clone = - document.createElement( "nav" ).cloneNode( true ).outerHTML !== "<:nav></:nav>"; - - // Check if a disconnected checkbox will retain its checked - // value of true after appended to the DOM (IE6/7) - input.type = "checkbox"; - input.checked = true; - fragment.appendChild( input ); - support.appendChecked = input.checked; - - // Make sure textarea (and checkbox) defaultValue is properly cloned - // Support: IE6-IE11+ - div.innerHTML = "<textarea>x</textarea>"; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; - - // #11217 - WebKit loses check when the name is after the checked attribute - fragment.appendChild( div ); - - // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (#14901) - input = document.createElement( "input" ); - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3 - // old WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE<9 - // Cloned elements keep attachEvent handlers, we use addEventListener on IE9+ - support.noCloneEvent = !!div.addEventListener; - - // Support: IE<9 - // Since attributes and properties are the same in IE, - // cleanData must set properties to undefined rather than use removeAttribute - div[ jQuery.expando ] = 1; - support.attributes = !div.getAttribute( jQuery.expando ); -} )(); - - -// We have to close these tags to support XHTML (#13200) -var wrapMap = { - option: [ 1, "<select multiple='multiple'>", "</select>" ], - legend: [ 1, "<fieldset>", "</fieldset>" ], - area: [ 1, "<map>", "</map>" ], - - // Support: IE8 - param: [ 1, "<object>", "</object>" ], - thead: [ 1, "<table>", "</table>" ], - tr: [ 2, "<table><tbody>", "</tbody></table>" ], - col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ], - td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ], - - // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, - // unless wrapped in a div with non-breaking characters in front of it. - _default: support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X<div>", "</div>" ] -}; - -// Support: IE8-IE9 -wrapMap.optgroup = wrapMap.option; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - - -function getAll( context, tag ) { - var elems, elem, - i = 0, - found = typeof context.getElementsByTagName !== "undefined" ? - context.getElementsByTagName( tag || "*" ) : - typeof context.querySelectorAll !== "undefined" ? - context.querySelectorAll( tag || "*" ) : - undefined; - - if ( !found ) { - for ( found = [], elems = context.childNodes || context; - ( elem = elems[ i ] ) != null; - i++ - ) { - if ( !tag || jQuery.nodeName( elem, tag ) ) { - found.push( elem ); - } else { - jQuery.merge( found, getAll( elem, tag ) ); - } - } - } - - return tag === undefined || tag && jQuery.nodeName( context, tag ) ? - jQuery.merge( [ context ], found ) : - found; -} - - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var elem, - i = 0; - for ( ; ( elem = elems[ i ] ) != null; i++ ) { - jQuery._data( - elem, - "globalEval", - !refElements || jQuery._data( refElements[ i ], "globalEval" ) - ); - } -} - - -var rhtml = /<|&#?\w+;/, - rtbody = /<tbody/i; - -function fixDefaultChecked( elem ) { - if ( rcheckableType.test( elem.type ) ) { - elem.defaultChecked = elem.checked; - } -} - -function buildFragment( elems, context, scripts, selection, ignored ) { - var j, elem, contains, - tmp, tag, tbody, wrap, - l = elems.length, - - // Ensure a safe fragment - safe = createSafeFragment( context ), - - nodes = [], - i = 0; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( jQuery.type( elem ) === "object" ) { - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || safe.appendChild( context.createElement( "div" ) ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - - tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; - - // Descend through wrappers to the right content - j = wrap[ 0 ]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Manually add leading whitespace removed by IE - if ( !support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { - nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[ 0 ] ) ); - } - - // Remove IE's autoinserted <tbody> from table fragments - if ( !support.tbody ) { - - // String was a <table>, *may* have spurious <tbody> - elem = tag === "table" && !rtbody.test( elem ) ? - tmp.firstChild : - - // String was a bare <thead> or <tfoot> - wrap[ 1 ] === "<table>" && !rtbody.test( elem ) ? - tmp : - 0; - - j = elem && elem.childNodes.length; - while ( j-- ) { - if ( jQuery.nodeName( ( tbody = elem.childNodes[ j ] ), "tbody" ) && - !tbody.childNodes.length ) { - - elem.removeChild( tbody ); - } - } - } - - jQuery.merge( nodes, tmp.childNodes ); - - // Fix #12392 for WebKit and IE > 9 - tmp.textContent = ""; - - // Fix #12392 for oldIE - while ( tmp.firstChild ) { - tmp.removeChild( tmp.firstChild ); - } - - // Remember the top-level container for proper cleanup - tmp = safe.lastChild; - } - } - } - - // Fix #11356: Clear elements from fragment - if ( tmp ) { - safe.removeChild( tmp ); - } - - // Reset defaultChecked for any radios and checkboxes - // about to be appended to the DOM in IE 6/7 (#8060) - if ( !support.appendChecked ) { - jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); - } - - i = 0; - while ( ( elem = nodes[ i++ ] ) ) { - - // Skip elements already in the context collection (trac-4087) - if ( selection && jQuery.inArray( elem, selection ) > -1 ) { - if ( ignored ) { - ignored.push( elem ); - } - - continue; - } - - contains = jQuery.contains( elem.ownerDocument, elem ); - - // Append to fragment - tmp = getAll( safe.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( contains ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( ( elem = tmp[ j++ ] ) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - tmp = null; - - return safe; -} - - -( function() { - var i, eventName, - div = document.createElement( "div" ); - - // Support: IE<9 (lack submit/change bubble), Firefox (lack focus(in | out) events) - for ( i in { submit: true, change: true, focusin: true } ) { - eventName = "on" + i; - - if ( !( support[ i ] = eventName in window ) ) { - - // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) - div.setAttribute( eventName, "t" ); - support[ i ] = div.attributes[ eventName ].expando === false; - } - } - - // Null elements to avoid leaks in IE. - div = null; -} )(); - - -var rformElems = /^(?:input|select|textarea)$/i, - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, - rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -// Support: IE9 -// See #13393 for more info -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -function on( elem, types, selector, data, fn, one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - on( elem, type, selector, data, types[ type ], one ); - } - return elem; - } - - if ( data == null && fn == null ) { - - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return elem; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return elem.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - } ); -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - var tmp, events, t, handleObjIn, - special, eventHandle, handleObj, - handlers, type, namespaces, origType, - elemData = jQuery._data( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !( events = elemData.events ) ) { - events = elemData.events = {}; - } - if ( !( eventHandle = elemData.handle ) ) { - eventHandle = elemData.handle = function( e ) { - - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && - ( !e || jQuery.event.triggered !== e.type ) ? - jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : - undefined; - }; - - // Add elem as a property of the handle fn to prevent a memory leak - // with IE non-native events - eventHandle.elem = elem; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend( { - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join( "." ) - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !( handlers = events[ type ] ) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener/attachEvent if the special events handler returns false - if ( !special.setup || - special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - - // Bind the global event handler to the element - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle, false ); - - } else if ( elem.attachEvent ) { - elem.attachEvent( "on" + type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - // Nullify elem to prevent memory leaks in IE - elem = null; - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - var j, handleObj, tmp, - origCount, t, events, - special, handlers, type, - namespaces, origType, - elemData = jQuery.hasData( elem ) && jQuery._data( elem ); - - if ( !elemData || !( events = elemData.events ) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[ 2 ] && - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || - selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || - special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - delete elemData.handle; - - // removeData also checks for emptiness and clears the expando if empty - // so use it instead of delete - jQuery._removeData( elem, "events" ); - } - }, - - trigger: function( event, data, elem, onlyHandlers ) { - var handle, ontype, cur, - bubbleType, special, tmp, i, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; - - cur = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf( "." ) > -1 ) { - - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split( "." ); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf( ":" ) < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join( "." ); - event.rnamespace = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === ( elem.ownerDocument || document ) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { - - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && - jQuery._data( cur, "handle" ); - - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( - ( !special._default || - special._default.apply( eventPath.pop(), data ) === false - ) && acceptData( elem ) - ) { - - // Call a native DOM method on the target with the same name name as the event. - // Can't use an .isFunction() check here because IE6/7 fails that test. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - try { - elem[ type ](); - } catch ( e ) { - - // IE<9 dies on focus/blur to hidden element (#1486,#12518) - // only reproducible on winXP IE8 native, not IE9 in IE8 mode - } - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - dispatch: function( event ) { - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( event ); - - var i, j, ret, matched, handleObj, - handlerQueue = [], - args = slice.call( arguments ), - handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[ 0 ] = event; - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( ( handleObj = matched.handlers[ j++ ] ) && - !event.isImmediatePropagationStopped() ) { - - // Triggered event must either 1) have no namespace, or 2) have namespace(s) - // a subset or equal to those in the bound event (both can have no namespace). - if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || - handleObj.handler ).apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( ( event.result = ret ) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, matches, sel, handleObj, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Support (at least): Chrome, IE9 - // Find delegate handlers - // Black-hole SVG <use> instance trees (#13180) - // - // Support: Firefox<=42+ - // Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343) - if ( delegateCount && cur.nodeType && - ( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) { - - /* jshint eqeqeq: false */ - for ( ; cur != this; cur = cur.parentNode || this ) { - /* jshint eqeqeq: true */ - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== "click" ) ) { - matches = []; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matches[ sel ] === undefined ) { - matches[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) > -1 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matches[ sel ] ) { - matches.push( handleObj ); - } - } - if ( matches.length ) { - handlerQueue.push( { elem: cur, handlers: matches } ); - } - } - } - } - - // Add the remaining (directly-bound) handlers - if ( delegateCount < handlers.length ) { - handlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } ); - } - - return handlerQueue; - }, - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // Create a writable copy of the event object and normalize some properties - var i, prop, copy, - type = event.type, - originalEvent = event, - fixHook = this.fixHooks[ type ]; - - if ( !fixHook ) { - this.fixHooks[ type ] = fixHook = - rmouseEvent.test( type ) ? this.mouseHooks : - rkeyEvent.test( type ) ? this.keyHooks : - {}; - } - copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; - - event = new jQuery.Event( originalEvent ); - - i = copy.length; - while ( i-- ) { - prop = copy[ i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Support: IE<9 - // Fix target property (#1925) - if ( !event.target ) { - event.target = originalEvent.srcElement || document; - } - - // Support: Safari 6-8+ - // Target should not be a text node (#504, #13143) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - // Support: IE<9 - // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) - event.metaKey = !!event.metaKey; - - return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; - }, - - // Includes some event props shared by KeyEvent and MouseEvent - props: ( "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase " + - "metaKey relatedTarget shiftKey target timeStamp view which" ).split( " " ), - - fixHooks: {}, - - keyHooks: { - props: "char charCode key keyCode".split( " " ), - filter: function( event, original ) { - - // Add which for key events - if ( event.which == null ) { - event.which = original.charCode != null ? original.charCode : original.keyCode; - } - - return event; - } - }, - - mouseHooks: { - props: ( "button buttons clientX clientY fromElement offsetX offsetY " + - "pageX pageY screenX screenY toElement" ).split( " " ), - filter: function( event, original ) { - var body, eventDoc, doc, - button = original.button, - fromElement = original.fromElement; - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && original.clientX != null ) { - eventDoc = event.target.ownerDocument || document; - doc = eventDoc.documentElement; - body = eventDoc.body; - - event.pageX = original.clientX + - ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); - event.pageY = original.clientY + - ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - - ( doc && doc.clientTop || body && body.clientTop || 0 ); - } - - // Add relatedTarget, if necessary - if ( !event.relatedTarget && fromElement ) { - event.relatedTarget = fromElement === event.target ? - original.toElement : - fromElement; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && button !== undefined ) { - event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); - } - - return event; - } - }, - - special: { - load: { - - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - focus: { - - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== safeActiveElement() && this.focus ) { - try { - this.focus(); - return false; - } catch ( e ) { - - // Support: IE<9 - // If we error on focus to hidden element (#1486, #12518), - // let .trigger() run the handlers - } - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === safeActiveElement() && this.blur ) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, - click: { - - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { - this.click(); - return false; - } - }, - - // For cross-browser consistency, don't fire native .click() on links - _default: function( event ) { - return jQuery.nodeName( event.target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - }, - - // Piggyback on a donor event to simulate a different one - simulate: function( type, elem, event ) { - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true - - // Previously, `originalEvent: {}` was set here, so stopPropagation call - // would not be triggered on donor event, since in our own - // jQuery.event.stopPropagation function we had a check for existence of - // originalEvent.stopPropagation method, so, consequently it would be a noop. - // - // Guard for simulated events was moved to jQuery.event.stopPropagation function - // since `originalEvent` should point to the original event for the - // constancy with other events and for more focused logic - } - ); - - jQuery.event.trigger( e, null, elem ); - - if ( e.isDefaultPrevented() ) { - event.preventDefault(); - } - } -}; - -jQuery.removeEvent = document.removeEventListener ? - function( elem, type, handle ) { - - // This "if" is needed for plain objects - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle ); - } - } : - function( elem, type, handle ) { - var name = "on" + type; - - if ( elem.detachEvent ) { - - // #8545, #7054, preventing memory leaks for custom events in IE6-8 - // detachEvent needed property on element, by name of that event, - // to properly expose it to GC - if ( typeof elem[ name ] === "undefined" ) { - elem[ name ] = null; - } - - elem.detachEvent( name, handle ); - } - }; - -jQuery.Event = function( src, props ) { - - // Allow instantiation without the 'new' keyword - if ( !( this instanceof jQuery.Event ) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - - // Support: IE < 9, Android < 4.0 - src.returnValue === false ? - returnTrue : - returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - constructor: jQuery.Event, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - if ( !e ) { - return; - } - - // If preventDefault exists, run it on the original event - if ( e.preventDefault ) { - e.preventDefault(); - - // Support: IE - // Otherwise set the returnValue property of the original event to false - } else { - e.returnValue = false; - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( !e || this.isSimulated ) { - return; - } - - // If stopPropagation exists, run it on the original event - if ( e.stopPropagation ) { - e.stopPropagation(); - } - - // Support: IE - // Set the cancelBubble property of the original event to true - e.cancelBubble = true; - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && e.stopImmediatePropagation ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Create mouseenter/leave events using mouseover/out and event-time checks -// so that event delegation works in jQuery. -// Do the same for pointerenter/pointerleave and pointerover/pointerout -// -// Support: Safari 7 only -// Safari sends mouseenter too often; see: -// https://code.google.com/p/chromium/issues/detail?id=470258 -// for the description of the bug (it existed in older Chrome versions as well). -jQuery.each( { - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mouseenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -} ); - -// IE submit delegation -if ( !support.submit ) { - - jQuery.event.special.submit = { - setup: function() { - - // Only need this for delegated form submit events - if ( jQuery.nodeName( this, "form" ) ) { - return false; - } - - // Lazy-add a submit handler when a descendant form may potentially be submitted - jQuery.event.add( this, "click._submit keypress._submit", function( e ) { - - // Node name check avoids a VML-related crash in IE (#9807) - var elem = e.target, - form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? - - // Support: IE <=8 - // We use jQuery.prop instead of elem.form - // to allow fixing the IE8 delegated submit issue (gh-2332) - // by 3rd party polyfills/workarounds. - jQuery.prop( elem, "form" ) : - undefined; - - if ( form && !jQuery._data( form, "submit" ) ) { - jQuery.event.add( form, "submit._submit", function( event ) { - event._submitBubble = true; - } ); - jQuery._data( form, "submit", true ); - } - } ); - - // return undefined since we don't need an event listener - }, - - postDispatch: function( event ) { - - // If form was submitted by the user, bubble the event up the tree - if ( event._submitBubble ) { - delete event._submitBubble; - if ( this.parentNode && !event.isTrigger ) { - jQuery.event.simulate( "submit", this.parentNode, event ); - } - } - }, - - teardown: function() { - - // Only need this for delegated form submit events - if ( jQuery.nodeName( this, "form" ) ) { - return false; - } - - // Remove delegated handlers; cleanData eventually reaps submit handlers attached above - jQuery.event.remove( this, "._submit" ); - } - }; -} - -// IE change delegation and checkbox/radio fix -if ( !support.change ) { - - jQuery.event.special.change = { - - setup: function() { - - if ( rformElems.test( this.nodeName ) ) { - - // IE doesn't fire change on a check/radio until blur; trigger it on click - // after a propertychange. Eat the blur-change in special.change.handle. - // This still fires onchange a second time for check/radio after blur. - if ( this.type === "checkbox" || this.type === "radio" ) { - jQuery.event.add( this, "propertychange._change", function( event ) { - if ( event.originalEvent.propertyName === "checked" ) { - this._justChanged = true; - } - } ); - jQuery.event.add( this, "click._change", function( event ) { - if ( this._justChanged && !event.isTrigger ) { - this._justChanged = false; - } - - // Allow triggered, simulated change events (#11500) - jQuery.event.simulate( "change", this, event ); - } ); - } - return false; - } - - // Delegated event; lazy-add a change handler on descendant inputs - jQuery.event.add( this, "beforeactivate._change", function( e ) { - var elem = e.target; - - if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "change" ) ) { - jQuery.event.add( elem, "change._change", function( event ) { - if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { - jQuery.event.simulate( "change", this.parentNode, event ); - } - } ); - jQuery._data( elem, "change", true ); - } - } ); - }, - - handle: function( event ) { - var elem = event.target; - - // Swallow native change events from checkbox/radio, we already triggered them above - if ( this !== elem || event.isSimulated || event.isTrigger || - ( elem.type !== "radio" && elem.type !== "checkbox" ) ) { - - return event.handleObj.handler.apply( this, arguments ); - } - }, - - teardown: function() { - jQuery.event.remove( this, "._change" ); - - return !rformElems.test( this.nodeName ); - } - }; -} - -// Support: Firefox -// Firefox doesn't have focus(in | out) events -// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 -// -// Support: Chrome, Safari -// focus(in | out) events fire after focus & blur events, -// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order -// Related ticket - https://code.google.com/p/chromium/issues/detail?id=449857 -if ( !support.focusin ) { - jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - var doc = this.ownerDocument || this, - attaches = jQuery._data( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - jQuery._data( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this, - attaches = jQuery._data( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - jQuery._removeData( doc, fix ); - } else { - jQuery._data( doc, fix, attaches ); - } - } - }; - } ); -} - -jQuery.fn.extend( { - - on: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn ); - }, - one: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? - handleObj.origType + "." + handleObj.namespace : - handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each( function() { - jQuery.event.remove( this, types, fn, selector ); - } ); - }, - - trigger: function( type, data ) { - return this.each( function() { - jQuery.event.trigger( type, data, this ); - } ); - }, - triggerHandler: function( type, data ) { - var elem = this[ 0 ]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -} ); - - -var rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, - rnoshimcache = new RegExp( "<(?:" + nodeNames + ")[\\s/>]", "i" ), - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi, - - // Support: IE 10-11, Edge 10240+ - // In IE/Edge using regex groups here causes severe slowdowns. - // See https://connect.microsoft.com/IE/feedback/details/1736512/ - rnoInnerhtml = /<script|<style|<link/i, - - // checked="checked" or checked - rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, - rscriptTypeMasked = /^true\/(.*)/, - rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g, - safeFragment = createSafeFragment( document ), - fragmentDiv = safeFragment.appendChild( document.createElement( "div" ) ); - -// Support: IE<8 -// Manipulating tables requires a tbody -function manipulationTarget( elem, content ) { - return jQuery.nodeName( elem, "table" ) && - jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? - - elem.getElementsByTagName( "tbody" )[ 0 ] || - elem.appendChild( elem.ownerDocument.createElement( "tbody" ) ) : - elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = ( jQuery.find.attr( elem, "type" ) !== null ) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - var match = rscriptTypeMasked.exec( elem.type ); - if ( match ) { - elem.type = match[ 1 ]; - } else { - elem.removeAttribute( "type" ); - } - return elem; -} - -function cloneCopyEvent( src, dest ) { - if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { - return; - } - - var type, i, l, - oldData = jQuery._data( src ), - curData = jQuery._data( dest, oldData ), - events = oldData.events; - - if ( events ) { - delete curData.handle; - curData.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - - // make the cloned public data object a copy from the original - if ( curData.data ) { - curData.data = jQuery.extend( {}, curData.data ); - } -} - -function fixCloneNodeIssues( src, dest ) { - var nodeName, e, data; - - // We do not need to do anything for non-Elements - if ( dest.nodeType !== 1 ) { - return; - } - - nodeName = dest.nodeName.toLowerCase(); - - // IE6-8 copies events bound via attachEvent when using cloneNode. - if ( !support.noCloneEvent && dest[ jQuery.expando ] ) { - data = jQuery._data( dest ); - - for ( e in data.events ) { - jQuery.removeEvent( dest, e, data.handle ); - } - - // Event data gets referenced instead of copied if the expando gets copied too - dest.removeAttribute( jQuery.expando ); - } - - // IE blanks contents when cloning scripts, and tries to evaluate newly-set text - if ( nodeName === "script" && dest.text !== src.text ) { - disableScript( dest ).text = src.text; - restoreScript( dest ); - - // IE6-10 improperly clones children of object elements using classid. - // IE10 throws NoModificationAllowedError if parent is null, #12132. - } else if ( nodeName === "object" ) { - if ( dest.parentNode ) { - dest.outerHTML = src.outerHTML; - } - - // This path appears unavoidable for IE9. When cloning an object - // element in IE9, the outerHTML strategy above is not sufficient. - // If the src has innerHTML and the destination does not, - // copy the src.innerHTML into the dest.innerHTML. #10324 - if ( support.html5Clone && ( src.innerHTML && !jQuery.trim( dest.innerHTML ) ) ) { - dest.innerHTML = src.innerHTML; - } - - } else if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - - // IE6-8 fails to persist the checked state of a cloned checkbox - // or radio button. Worse, IE6-7 fail to give the cloned element - // a checked appearance if the defaultChecked value isn't also set - - dest.defaultChecked = dest.checked = src.checked; - - // IE6-7 get confused and end up setting the value of a cloned - // checkbox/radio button to an empty string instead of "on" - if ( dest.value !== src.value ) { - dest.value = src.value; - } - - // IE6-8 fails to return the selected option to the default selected - // state when cloning options - } else if ( nodeName === "option" ) { - dest.defaultSelected = dest.selected = src.defaultSelected; - - // IE6-8 fails to set the defaultValue to the correct value when - // cloning other types of input fields - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -function domManip( collection, args, callback, ignored ) { - - // Flatten any nested arrays - args = concat.apply( [], args ); - - var first, node, hasScripts, - scripts, doc, fragment, - i = 0, - l = collection.length, - iNoClone = l - 1, - value = args[ 0 ], - isFunction = jQuery.isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( isFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return collection.each( function( index ) { - var self = collection.eq( index ); - if ( isFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - domManip( self, args, callback, ignored ); - } ); - } - - if ( l ) { - fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - // Require either new content or an interest in ignored elements to invoke the callback - if ( first || ignored ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item - // instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - - // Support: Android<4.1, PhantomJS<2 - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( collection[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !jQuery._data( node, "globalEval" ) && - jQuery.contains( doc, node ) ) { - - if ( node.src ) { - - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl ) { - jQuery._evalUrl( node.src ); - } - } else { - jQuery.globalEval( - ( node.text || node.textContent || node.innerHTML || "" ) - .replace( rcleanScript, "" ) - ); - } - } - } - } - - // Fix #11809: Avoid leaking memory - fragment = first = null; - } - } - - return collection; -} - -function remove( elem, selector, keepData ) { - var node, - elems = selector ? jQuery.filter( selector, elem ) : elem, - i = 0; - - for ( ; ( node = elems[ i ] ) != null; i++ ) { - - if ( !keepData && node.nodeType === 1 ) { - jQuery.cleanData( getAll( node ) ); - } - - if ( node.parentNode ) { - if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { - setGlobalEval( getAll( node, "script" ) ); - } - node.parentNode.removeChild( node ); - } - } - - return elem; -} - -jQuery.extend( { - htmlPrefilter: function( html ) { - return html.replace( rxhtmlTag, "<$1></$2>" ); - }, - - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var destElements, node, clone, i, srcElements, - inPage = jQuery.contains( elem.ownerDocument, elem ); - - if ( support.html5Clone || jQuery.isXMLDoc( elem ) || - !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { - - clone = elem.cloneNode( true ); - - // IE<=8 does not properly clone detached, unknown element nodes - } else { - fragmentDiv.innerHTML = elem.outerHTML; - fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); - } - - if ( ( !support.noCloneEvent || !support.noCloneChecked ) && - ( elem.nodeType === 1 || elem.nodeType === 11 ) && !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - // Fix all IE cloning issues - for ( i = 0; ( node = srcElements[ i ] ) != null; ++i ) { - - // Ensure that the destination node is not null; Fixes #9587 - if ( destElements[ i ] ) { - fixCloneNodeIssues( node, destElements[ i ] ); - } - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0; ( node = srcElements[ i ] ) != null; i++ ) { - cloneCopyEvent( node, destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - destElements = srcElements = node = null; - - // Return the cloned set - return clone; - }, - - cleanData: function( elems, /* internal */ forceAcceptData ) { - var elem, type, id, data, - i = 0, - internalKey = jQuery.expando, - cache = jQuery.cache, - attributes = support.attributes, - special = jQuery.event.special; - - for ( ; ( elem = elems[ i ] ) != null; i++ ) { - if ( forceAcceptData || acceptData( elem ) ) { - - id = elem[ internalKey ]; - data = id && cache[ id ]; - - if ( data ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Remove cache only if it was not already removed by jQuery.event.remove - if ( cache[ id ] ) { - - delete cache[ id ]; - - // Support: IE<9 - // IE does not allow us to delete expando properties from nodes - // IE creates expando attributes along with the property - // IE does not have a removeAttribute function on Document nodes - if ( !attributes && typeof elem.removeAttribute !== "undefined" ) { - elem.removeAttribute( internalKey ); - - // Webkit & Blink performance suffers when deleting properties - // from DOM nodes, so set to undefined instead - // https://code.google.com/p/chromium/issues/detail?id=378607 - } else { - elem[ internalKey ] = undefined; - } - - deletedIds.push( id ); - } - } - } - } - } -} ); - -jQuery.fn.extend( { - - // Keep domManip exposed until 3.0 (gh-2225) - domManip: domManip, - - detach: function( selector ) { - return remove( this, selector, true ); - }, - - remove: function( selector ) { - return remove( this, selector ); - }, - - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().append( - ( this[ 0 ] && this[ 0 ].ownerDocument || document ).createTextNode( value ) - ); - }, null, value, arguments.length ); - }, - - append: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - } ); - }, - - prepend: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - } ); - }, - - before: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - } ); - }, - - after: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - } ); - }, - - empty: function() { - var elem, - i = 0; - - for ( ; ( elem = this[ i ] ) != null; i++ ) { - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - } - - // Remove any remaining nodes - while ( elem.firstChild ) { - elem.removeChild( elem.firstChild ); - } - - // If this is a select, ensure that it displays empty (#12336) - // Support: IE<9 - if ( elem.options && jQuery.nodeName( elem, "select" ) ) { - elem.options.length = 0; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - } ); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined ) { - return elem.nodeType === 1 ? - elem.innerHTML.replace( rinlinejQuery, "" ) : - undefined; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - ( support.htmlSerialize || !rnoshimcache.test( value ) ) && - ( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = jQuery.htmlPrefilter( value ); - - try { - for ( ; i < l; i++ ) { - - // Remove element nodes and prevent memory leaks - elem = this[ i ] || {}; - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch ( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var ignored = []; - - // Make the changes, replacing each non-ignored context element with the new content - return domManip( this, arguments, function( elem ) { - var parent = this.parentNode; - - if ( jQuery.inArray( this, ignored ) < 0 ) { - jQuery.cleanData( getAll( this ) ); - if ( parent ) { - parent.replaceChild( elem, this ); - } - } - - // Force callback invocation - }, ignored ); - } -} ); - -jQuery.each( { - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - i = 0, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -} ); - - -var iframe, - elemdisplay = { - - // Support: Firefox - // We have to pre-define these values for FF (#10227) - HTML: "block", - BODY: "block" - }; - -/** - * Retrieve the actual display of a element - * @param {String} name nodeName of the element - * @param {Object} doc Document object - */ - -// Called only from within defaultDisplay -function actualDisplay( name, doc ) { - var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), - - display = jQuery.css( elem[ 0 ], "display" ); - - // We don't have any data stored on the element, - // so use "detach" method as fast way to get rid of the element - elem.detach(); - - return display; -} - -/** - * Try to determine the default display value of an element - * @param {String} nodeName - */ -function defaultDisplay( nodeName ) { - var doc = document, - display = elemdisplay[ nodeName ]; - - if ( !display ) { - display = actualDisplay( nodeName, doc ); - - // If the simple way fails, read from inside an iframe - if ( display === "none" || !display ) { - - // Use the already-created iframe if possible - iframe = ( iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" ) ) - .appendTo( doc.documentElement ); - - // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse - doc = ( iframe[ 0 ].contentWindow || iframe[ 0 ].contentDocument ).document; - - // Support: IE - doc.write(); - doc.close(); - - display = actualDisplay( nodeName, doc ); - iframe.detach(); - } - - // Store the correct default display - elemdisplay[ nodeName ] = display; - } - - return display; -} -var rmargin = ( /^margin/ ); - -var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); - -var swap = function( elem, options, callback, args ) { - var ret, name, - old = {}; - - // Remember the old values, and insert the new ones - for ( name in options ) { - old[ name ] = elem.style[ name ]; - elem.style[ name ] = options[ name ]; - } - - ret = callback.apply( elem, args || [] ); - - // Revert the old values - for ( name in options ) { - elem.style[ name ] = old[ name ]; - } - - return ret; -}; - - -var documentElement = document.documentElement; - - - -( function() { - var pixelPositionVal, pixelMarginRightVal, boxSizingReliableVal, - reliableHiddenOffsetsVal, reliableMarginRightVal, reliableMarginLeftVal, - container = document.createElement( "div" ), - div = document.createElement( "div" ); - - // Finish early in limited (non-browser) environments - if ( !div.style ) { - return; - } - - div.style.cssText = "float:left;opacity:.5"; - - // Support: IE<9 - // Make sure that element opacity exists (as opposed to filter) - support.opacity = div.style.opacity === "0.5"; - - // Verify style float existence - // (IE uses styleFloat instead of cssFloat) - support.cssFloat = !!div.style.cssFloat; - - div.style.backgroundClip = "content-box"; - div.cloneNode( true ).style.backgroundClip = ""; - support.clearCloneStyle = div.style.backgroundClip === "content-box"; - - container = document.createElement( "div" ); - container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" + - "padding:0;margin-top:1px;position:absolute"; - div.innerHTML = ""; - container.appendChild( div ); - - // Support: Firefox<29, Android 2.3 - // Vendor-prefix box-sizing - support.boxSizing = div.style.boxSizing === "" || div.style.MozBoxSizing === "" || - div.style.WebkitBoxSizing === ""; - - jQuery.extend( support, { - reliableHiddenOffsets: function() { - if ( pixelPositionVal == null ) { - computeStyleTests(); - } - return reliableHiddenOffsetsVal; - }, - - boxSizingReliable: function() { - - // We're checking for pixelPositionVal here instead of boxSizingReliableVal - // since that compresses better and they're computed together anyway. - if ( pixelPositionVal == null ) { - computeStyleTests(); - } - return boxSizingReliableVal; - }, - - pixelMarginRight: function() { - - // Support: Android 4.0-4.3 - if ( pixelPositionVal == null ) { - computeStyleTests(); - } - return pixelMarginRightVal; - }, - - pixelPosition: function() { - if ( pixelPositionVal == null ) { - computeStyleTests(); - } - return pixelPositionVal; - }, - - reliableMarginRight: function() { - - // Support: Android 2.3 - if ( pixelPositionVal == null ) { - computeStyleTests(); - } - return reliableMarginRightVal; - }, - - reliableMarginLeft: function() { - - // Support: IE <=8 only, Android 4.0 - 4.3 only, Firefox <=3 - 37 - if ( pixelPositionVal == null ) { - computeStyleTests(); - } - return reliableMarginLeftVal; - } - } ); - - function computeStyleTests() { - var contents, divStyle, - documentElement = document.documentElement; - - // Setup - documentElement.appendChild( container ); - - div.style.cssText = - - // Support: Android 2.3 - // Vendor-prefix box-sizing - "-webkit-box-sizing:border-box;box-sizing:border-box;" + - "position:relative;display:block;" + - "margin:auto;border:1px;padding:1px;" + - "top:1%;width:50%"; - - // Support: IE<9 - // Assume reasonable values in the absence of getComputedStyle - pixelPositionVal = boxSizingReliableVal = reliableMarginLeftVal = false; - pixelMarginRightVal = reliableMarginRightVal = true; - - // Check for getComputedStyle so that this code is not run in IE<9. - if ( window.getComputedStyle ) { - divStyle = window.getComputedStyle( div ); - pixelPositionVal = ( divStyle || {} ).top !== "1%"; - reliableMarginLeftVal = ( divStyle || {} ).marginLeft === "2px"; - boxSizingReliableVal = ( divStyle || { width: "4px" } ).width === "4px"; - - // Support: Android 4.0 - 4.3 only - // Some styles come back with percentage values, even though they shouldn't - div.style.marginRight = "50%"; - pixelMarginRightVal = ( divStyle || { marginRight: "4px" } ).marginRight === "4px"; - - // Support: Android 2.3 only - // Div with explicit width and no margin-right incorrectly - // gets computed margin-right based on width of container (#3333) - // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right - contents = div.appendChild( document.createElement( "div" ) ); - - // Reset CSS: box-sizing; display; margin; border; padding - contents.style.cssText = div.style.cssText = - - // Support: Android 2.3 - // Vendor-prefix box-sizing - "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" + - "box-sizing:content-box;display:block;margin:0;border:0;padding:0"; - contents.style.marginRight = contents.style.width = "0"; - div.style.width = "1px"; - - reliableMarginRightVal = - !parseFloat( ( window.getComputedStyle( contents ) || {} ).marginRight ); - - div.removeChild( contents ); - } - - // Support: IE6-8 - // First check that getClientRects works as expected - // Check if table cells still have offsetWidth/Height when they are set - // to display:none and there are still other visible table cells in a - // table row; if so, offsetWidth/Height are not reliable for use when - // determining if an element has been hidden directly using - // display:none (it is still safe to use offsets if a parent element is - // hidden; don safety goggles and see bug #4512 for more information). - div.style.display = "none"; - reliableHiddenOffsetsVal = div.getClientRects().length === 0; - if ( reliableHiddenOffsetsVal ) { - div.style.display = ""; - div.innerHTML = "<table><tr><td></td><td>t</td></tr></table>"; - div.childNodes[ 0 ].style.borderCollapse = "separate"; - contents = div.getElementsByTagName( "td" ); - contents[ 0 ].style.cssText = "margin:0;border:0;padding:0;display:none"; - reliableHiddenOffsetsVal = contents[ 0 ].offsetHeight === 0; - if ( reliableHiddenOffsetsVal ) { - contents[ 0 ].style.display = ""; - contents[ 1 ].style.display = "none"; - reliableHiddenOffsetsVal = contents[ 0 ].offsetHeight === 0; - } - } - - // Teardown - documentElement.removeChild( container ); - } - -} )(); - - -var getStyles, curCSS, - rposition = /^(top|right|bottom|left)$/; - -if ( window.getComputedStyle ) { - getStyles = function( elem ) { - - // Support: IE<=11+, Firefox<=30+ (#15098, #14150) - // IE throws on elements created in popups - // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" - var view = elem.ownerDocument.defaultView; - - if ( !view || !view.opener ) { - view = window; - } - - return view.getComputedStyle( elem ); - }; - - curCSS = function( elem, name, computed ) { - var width, minWidth, maxWidth, ret, - style = elem.style; - - computed = computed || getStyles( elem ); - - // getPropertyValue is only needed for .css('filter') in IE9, see #12537 - ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined; - - // Support: Opera 12.1x only - // Fall back to style even without computed - // computed is undefined for elems on document fragments - if ( ( ret === "" || ret === undefined ) && !jQuery.contains( elem.ownerDocument, elem ) ) { - ret = jQuery.style( elem, name ); - } - - if ( computed ) { - - // A tribute to the "awesome hack by Dean Edwards" - // Chrome < 17 and Safari 5.0 uses "computed value" - // instead of "used value" for margin-right - // Safari 5.1.7 (at least) returns percentage for a larger set of values, - // but width seems to be reliably pixels - // this is against the CSSOM draft spec: - // http://dev.w3.org/csswg/cssom/#resolved-values - if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) { - - // Remember the original values - width = style.width; - minWidth = style.minWidth; - maxWidth = style.maxWidth; - - // Put in the new values to get a computed value out - style.minWidth = style.maxWidth = style.width = ret; - ret = computed.width; - - // Revert the changed values - style.width = width; - style.minWidth = minWidth; - style.maxWidth = maxWidth; - } - } - - // Support: IE - // IE returns zIndex value as an integer. - return ret === undefined ? - ret : - ret + ""; - }; -} else if ( documentElement.currentStyle ) { - getStyles = function( elem ) { - return elem.currentStyle; - }; - - curCSS = function( elem, name, computed ) { - var left, rs, rsLeft, ret, - style = elem.style; - - computed = computed || getStyles( elem ); - ret = computed ? computed[ name ] : undefined; - - // Avoid setting ret to empty string here - // so we don't default to auto - if ( ret == null && style && style[ name ] ) { - ret = style[ name ]; - } - - // From the awesome hack by Dean Edwards - // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 - - // If we're not dealing with a regular pixel number - // but a number that has a weird ending, we need to convert it to pixels - // but not position css attributes, as those are - // proportional to the parent element instead - // and we can't measure the parent instead because it - // might trigger a "stacking dolls" problem - if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) { - - // Remember the original values - left = style.left; - rs = elem.runtimeStyle; - rsLeft = rs && rs.left; - - // Put in the new values to get a computed value out - if ( rsLeft ) { - rs.left = elem.currentStyle.left; - } - style.left = name === "fontSize" ? "1em" : ret; - ret = style.pixelLeft + "px"; - - // Revert the changed values - style.left = left; - if ( rsLeft ) { - rs.left = rsLeft; - } - } - - // Support: IE - // IE returns zIndex value as an integer. - return ret === undefined ? - ret : - ret + "" || "auto"; - }; -} - - - - -function addGetHookIf( conditionFn, hookFn ) { - - // Define the hook, we'll check on the first run if it's really needed. - return { - get: function() { - if ( conditionFn() ) { - - // Hook not needed (or it's not possible to use it due - // to missing dependency), remove it. - delete this.get; - return; - } - - // Hook needed; redefine it so that the support test is not executed again. - return ( this.get = hookFn ).apply( this, arguments ); - } - }; -} - - -var - - ralpha = /alpha\([^)]*\)/i, - ropacity = /opacity\s*=\s*([^)]*)/i, - - // swappable if display is none or starts with table except - // "table", "table-cell", or "table-caption" - // see here for display values: - // https://developer.mozilla.org/en-US/docs/CSS/display - rdisplayswap = /^(none|table(?!-c[ea]).+)/, - rnumsplit = new RegExp( "^(" + pnum + ")(.*)$", "i" ), - - cssShow = { position: "absolute", visibility: "hidden", display: "block" }, - cssNormalTransform = { - letterSpacing: "0", - fontWeight: "400" - }, - - cssPrefixes = [ "Webkit", "O", "Moz", "ms" ], - emptyStyle = document.createElement( "div" ).style; - - -// return a css property mapped to a potentially vendor prefixed property -function vendorPropName( name ) { - - // shortcut for names that are not vendor prefixed - if ( name in emptyStyle ) { - return name; - } - - // check for vendor prefixed names - var capName = name.charAt( 0 ).toUpperCase() + name.slice( 1 ), - i = cssPrefixes.length; - - while ( i-- ) { - name = cssPrefixes[ i ] + capName; - if ( name in emptyStyle ) { - return name; - } - } -} - -function showHide( elements, show ) { - var display, elem, hidden, - values = [], - index = 0, - length = elements.length; - - for ( ; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - - values[ index ] = jQuery._data( elem, "olddisplay" ); - display = elem.style.display; - if ( show ) { - - // Reset the inline display of this element to learn if it is - // being hidden by cascaded rules or not - if ( !values[ index ] && display === "none" ) { - elem.style.display = ""; - } - - // Set elements which have been overridden with display: none - // in a stylesheet to whatever the default browser style is - // for such an element - if ( elem.style.display === "" && isHidden( elem ) ) { - values[ index ] = - jQuery._data( elem, "olddisplay", defaultDisplay( elem.nodeName ) ); - } - } else { - hidden = isHidden( elem ); - - if ( display && display !== "none" || !hidden ) { - jQuery._data( - elem, - "olddisplay", - hidden ? display : jQuery.css( elem, "display" ) - ); - } - } - } - - // Set the display of most of the elements in a second loop - // to avoid the constant reflow - for ( index = 0; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - if ( !show || elem.style.display === "none" || elem.style.display === "" ) { - elem.style.display = show ? values[ index ] || "" : "none"; - } - } - - return elements; -} - -function setPositiveNumber( elem, value, subtract ) { - var matches = rnumsplit.exec( value ); - return matches ? - - // Guard against undefined "subtract", e.g., when used as in cssHooks - Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) : - value; -} - -function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { - var i = extra === ( isBorderBox ? "border" : "content" ) ? - - // If we already have the right measurement, avoid augmentation - 4 : - - // Otherwise initialize for horizontal or vertical properties - name === "width" ? 1 : 0, - - val = 0; - - for ( ; i < 4; i += 2 ) { - - // both box models exclude margin, so add it if we want it - if ( extra === "margin" ) { - val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); - } - - if ( isBorderBox ) { - - // border-box includes padding, so remove it if we want content - if ( extra === "content" ) { - val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - } - - // at this point, extra isn't border nor margin, so remove border - if ( extra !== "margin" ) { - val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } else { - - // at this point, extra isn't content, so add padding - val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - - // at this point, extra isn't content nor padding, so add border - if ( extra !== "padding" ) { - val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } - } - - return val; -} - -function getWidthOrHeight( elem, name, extra ) { - - // Start with offset property, which is equivalent to the border-box value - var valueIsBorderBox = true, - val = name === "width" ? elem.offsetWidth : elem.offsetHeight, - styles = getStyles( elem ), - isBorderBox = support.boxSizing && - jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; - - // some non-html elements return undefined for offsetWidth, so check for null/undefined - // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285 - // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668 - if ( val <= 0 || val == null ) { - - // Fall back to computed then uncomputed css if necessary - val = curCSS( elem, name, styles ); - if ( val < 0 || val == null ) { - val = elem.style[ name ]; - } - - // Computed unit is not pixels. Stop here and return. - if ( rnumnonpx.test( val ) ) { - return val; - } - - // we need the check for style in case a browser which returns unreliable values - // for getComputedStyle silently falls back to the reliable elem.style - valueIsBorderBox = isBorderBox && - ( support.boxSizingReliable() || val === elem.style[ name ] ); - - // Normalize "", auto, and prepare for extra - val = parseFloat( val ) || 0; - } - - // use the active box-sizing model to add/subtract irrelevant styles - return ( val + - augmentWidthOrHeight( - elem, - name, - extra || ( isBorderBox ? "border" : "content" ), - valueIsBorderBox, - styles - ) - ) + "px"; -} - -jQuery.extend( { - - // Add in style property hooks for overriding the default - // behavior of getting and setting a style property - cssHooks: { - opacity: { - get: function( elem, computed ) { - if ( computed ) { - - // We should always get a number back from opacity - var ret = curCSS( elem, "opacity" ); - return ret === "" ? "1" : ret; - } - } - } - }, - - // Don't automatically add "px" to these possibly-unitless properties - cssNumber: { - "animationIterationCount": true, - "columnCount": true, - "fillOpacity": true, - "flexGrow": true, - "flexShrink": true, - "fontWeight": true, - "lineHeight": true, - "opacity": true, - "order": true, - "orphans": true, - "widows": true, - "zIndex": true, - "zoom": true - }, - - // Add in properties whose names you wish to fix before - // setting or getting the value - cssProps: { - - // normalize float css property - "float": support.cssFloat ? "cssFloat" : "styleFloat" - }, - - // Get and set the style property on a DOM Node - style: function( elem, name, value, extra ) { - - // Don't set styles on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { - return; - } - - // Make sure that we're working with the right name - var ret, type, hooks, - origName = jQuery.camelCase( name ), - style = elem.style; - - name = jQuery.cssProps[ origName ] || - ( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName ); - - // gets hook for the prefixed version - // followed by the unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // Check if we're setting a value - if ( value !== undefined ) { - type = typeof value; - - // Convert "+=" or "-=" to relative numbers (#7345) - if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { - value = adjustCSS( elem, name, ret ); - - // Fixes bug #9237 - type = "number"; - } - - // Make sure that null and NaN values aren't set. See: #7116 - if ( value == null || value !== value ) { - return; - } - - // If a number was passed in, add the unit (except for certain CSS properties) - if ( type === "number" ) { - value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); - } - - // Fixes #8908, it can be done more correctly by specifing setters in cssHooks, - // but it would mean to define eight - // (for every problematic property) identical functions - if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { - style[ name ] = "inherit"; - } - - // If a hook was provided, use that value, otherwise just set the specified value - if ( !hooks || !( "set" in hooks ) || - ( value = hooks.set( elem, value, extra ) ) !== undefined ) { - - // Support: IE - // Swallow errors from 'invalid' CSS values (#5509) - try { - style[ name ] = value; - } catch ( e ) {} - } - - } else { - - // If a hook was provided get the non-computed value from there - if ( hooks && "get" in hooks && - ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { - - return ret; - } - - // Otherwise just get the value from the style object - return style[ name ]; - } - }, - - css: function( elem, name, extra, styles ) { - var num, val, hooks, - origName = jQuery.camelCase( name ); - - // Make sure that we're working with the right name - name = jQuery.cssProps[ origName ] || - ( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName ); - - // gets hook for the prefixed version - // followed by the unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // If a hook was provided get the computed value from there - if ( hooks && "get" in hooks ) { - val = hooks.get( elem, true, extra ); - } - - // Otherwise, if a way to get the computed value exists, use that - if ( val === undefined ) { - val = curCSS( elem, name, styles ); - } - - //convert "normal" to computed value - if ( val === "normal" && name in cssNormalTransform ) { - val = cssNormalTransform[ name ]; - } - - // Return, converting to number if forced or a qualifier was provided and val looks numeric - if ( extra === "" || extra ) { - num = parseFloat( val ); - return extra === true || isFinite( num ) ? num || 0 : val; - } - return val; - } -} ); - -jQuery.each( [ "height", "width" ], function( i, name ) { - jQuery.cssHooks[ name ] = { - get: function( elem, computed, extra ) { - if ( computed ) { - - // certain elements can have dimension info if we invisibly show them - // however, it must have a current display style that would benefit from this - return rdisplayswap.test( jQuery.css( elem, "display" ) ) && - elem.offsetWidth === 0 ? - swap( elem, cssShow, function() { - return getWidthOrHeight( elem, name, extra ); - } ) : - getWidthOrHeight( elem, name, extra ); - } - }, - - set: function( elem, value, extra ) { - var styles = extra && getStyles( elem ); - return setPositiveNumber( elem, value, extra ? - augmentWidthOrHeight( - elem, - name, - extra, - support.boxSizing && - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - styles - ) : 0 - ); - } - }; -} ); - -if ( !support.opacity ) { - jQuery.cssHooks.opacity = { - get: function( elem, computed ) { - - // IE uses filters for opacity - return ropacity.test( ( computed && elem.currentStyle ? - elem.currentStyle.filter : - elem.style.filter ) || "" ) ? - ( 0.01 * parseFloat( RegExp.$1 ) ) + "" : - computed ? "1" : ""; - }, - - set: function( elem, value ) { - var style = elem.style, - currentStyle = elem.currentStyle, - opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "", - filter = currentStyle && currentStyle.filter || style.filter || ""; - - // IE has trouble with opacity if it does not have layout - // Force it by setting the zoom level - style.zoom = 1; - - // if setting opacity to 1, and no other filters exist - - // attempt to remove filter attribute #6652 - // if value === "", then remove inline opacity #12685 - if ( ( value >= 1 || value === "" ) && - jQuery.trim( filter.replace( ralpha, "" ) ) === "" && - style.removeAttribute ) { - - // Setting style.filter to null, "" & " " still leave "filter:" in the cssText - // if "filter:" is present at all, clearType is disabled, we want to avoid this - // style.removeAttribute is IE Only, but so apparently is this code path... - style.removeAttribute( "filter" ); - - // if there is no filter style applied in a css rule - // or unset inline opacity, we are done - if ( value === "" || currentStyle && !currentStyle.filter ) { - return; - } - } - - // otherwise, set new filter values - style.filter = ralpha.test( filter ) ? - filter.replace( ralpha, opacity ) : - filter + " " + opacity; - } - }; -} - -jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight, - function( elem, computed ) { - if ( computed ) { - return swap( elem, { "display": "inline-block" }, - curCSS, [ elem, "marginRight" ] ); - } - } -); - -jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, - function( elem, computed ) { - if ( computed ) { - return ( - parseFloat( curCSS( elem, "marginLeft" ) ) || - - // Support: IE<=11+ - // Running getBoundingClientRect on a disconnected node in IE throws an error - // Support: IE8 only - // getClientRects() errors on disconnected elems - ( jQuery.contains( elem.ownerDocument, elem ) ? - elem.getBoundingClientRect().left - - swap( elem, { marginLeft: 0 }, function() { - return elem.getBoundingClientRect().left; - } ) : - 0 - ) - ) + "px"; - } - } -); - -// These hooks are used by animate to expand properties -jQuery.each( { - margin: "", - padding: "", - border: "Width" -}, function( prefix, suffix ) { - jQuery.cssHooks[ prefix + suffix ] = { - expand: function( value ) { - var i = 0, - expanded = {}, - - // assumes a single number if not a string - parts = typeof value === "string" ? value.split( " " ) : [ value ]; - - for ( ; i < 4; i++ ) { - expanded[ prefix + cssExpand[ i ] + suffix ] = - parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; - } - - return expanded; - } - }; - - if ( !rmargin.test( prefix ) ) { - jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; - } -} ); - -jQuery.fn.extend( { - css: function( name, value ) { - return access( this, function( elem, name, value ) { - var styles, len, - map = {}, - i = 0; - - if ( jQuery.isArray( name ) ) { - styles = getStyles( elem ); - len = name.length; - - for ( ; i < len; i++ ) { - map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); - } - - return map; - } - - return value !== undefined ? - jQuery.style( elem, name, value ) : - jQuery.css( elem, name ); - }, name, value, arguments.length > 1 ); - }, - show: function() { - return showHide( this, true ); - }, - hide: function() { - return showHide( this ); - }, - toggle: function( state ) { - if ( typeof state === "boolean" ) { - return state ? this.show() : this.hide(); - } - - return this.each( function() { - if ( isHidden( this ) ) { - jQuery( this ).show(); - } else { - jQuery( this ).hide(); - } - } ); - } -} ); - - -function Tween( elem, options, prop, end, easing ) { - return new Tween.prototype.init( elem, options, prop, end, easing ); -} -jQuery.Tween = Tween; - -Tween.prototype = { - constructor: Tween, - init: function( elem, options, prop, end, easing, unit ) { - this.elem = elem; - this.prop = prop; - this.easing = easing || jQuery.easing._default; - this.options = options; - this.start = this.now = this.cur(); - this.end = end; - this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); - }, - cur: function() { - var hooks = Tween.propHooks[ this.prop ]; - - return hooks && hooks.get ? - hooks.get( this ) : - Tween.propHooks._default.get( this ); - }, - run: function( percent ) { - var eased, - hooks = Tween.propHooks[ this.prop ]; - - if ( this.options.duration ) { - this.pos = eased = jQuery.easing[ this.easing ]( - percent, this.options.duration * percent, 0, 1, this.options.duration - ); - } else { - this.pos = eased = percent; - } - this.now = ( this.end - this.start ) * eased + this.start; - - if ( this.options.step ) { - this.options.step.call( this.elem, this.now, this ); - } - - if ( hooks && hooks.set ) { - hooks.set( this ); - } else { - Tween.propHooks._default.set( this ); - } - return this; - } -}; - -Tween.prototype.init.prototype = Tween.prototype; - -Tween.propHooks = { - _default: { - get: function( tween ) { - var result; - - // Use a property on the element directly when it is not a DOM element, - // or when there is no matching style property that exists. - if ( tween.elem.nodeType !== 1 || - tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { - return tween.elem[ tween.prop ]; - } - - // passing an empty string as a 3rd parameter to .css will automatically - // attempt a parseFloat and fallback to a string if the parse fails - // so, simple values such as "10px" are parsed to Float. - // complex values such as "rotate(1rad)" are returned as is. - result = jQuery.css( tween.elem, tween.prop, "" ); - - // Empty strings, null, undefined and "auto" are converted to 0. - return !result || result === "auto" ? 0 : result; - }, - set: function( tween ) { - - // use step hook for back compat - use cssHook if its there - use .style if its - // available and use plain properties where available - if ( jQuery.fx.step[ tween.prop ] ) { - jQuery.fx.step[ tween.prop ]( tween ); - } else if ( tween.elem.nodeType === 1 && - ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || - jQuery.cssHooks[ tween.prop ] ) ) { - jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); - } else { - tween.elem[ tween.prop ] = tween.now; - } - } - } -}; - -// Support: IE <=9 -// Panic based approach to setting things on disconnected nodes - -Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { - set: function( tween ) { - if ( tween.elem.nodeType && tween.elem.parentNode ) { - tween.elem[ tween.prop ] = tween.now; - } - } -}; - -jQuery.easing = { - linear: function( p ) { - return p; - }, - swing: function( p ) { - return 0.5 - Math.cos( p * Math.PI ) / 2; - }, - _default: "swing" -}; - -jQuery.fx = Tween.prototype.init; - -// Back Compat <1.8 extension point -jQuery.fx.step = {}; - - - - -var - fxNow, timerId, - rfxtypes = /^(?:toggle|show|hide)$/, - rrun = /queueHooks$/; - -// Animations created synchronously will run synchronously -function createFxNow() { - window.setTimeout( function() { - fxNow = undefined; - } ); - return ( fxNow = jQuery.now() ); -} - -// Generate parameters to create a standard animation -function genFx( type, includeWidth ) { - var which, - attrs = { height: type }, - i = 0; - - // if we include width, step value is 1 to do all cssExpand values, - // if we don't include width, step value is 2 to skip over Left and Right - includeWidth = includeWidth ? 1 : 0; - for ( ; i < 4 ; i += 2 - includeWidth ) { - which = cssExpand[ i ]; - attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; - } - - if ( includeWidth ) { - attrs.opacity = attrs.width = type; - } - - return attrs; -} - -function createTween( value, prop, animation ) { - var tween, - collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), - index = 0, - length = collection.length; - for ( ; index < length; index++ ) { - if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { - - // we're done with this property - return tween; - } - } -} - -function defaultPrefilter( elem, props, opts ) { - /* jshint validthis: true */ - var prop, value, toggle, tween, hooks, oldfire, display, checkDisplay, - anim = this, - orig = {}, - style = elem.style, - hidden = elem.nodeType && isHidden( elem ), - dataShow = jQuery._data( elem, "fxshow" ); - - // handle queue: false promises - if ( !opts.queue ) { - hooks = jQuery._queueHooks( elem, "fx" ); - if ( hooks.unqueued == null ) { - hooks.unqueued = 0; - oldfire = hooks.empty.fire; - hooks.empty.fire = function() { - if ( !hooks.unqueued ) { - oldfire(); - } - }; - } - hooks.unqueued++; - - anim.always( function() { - - // doing this makes sure that the complete handler will be called - // before this completes - anim.always( function() { - hooks.unqueued--; - if ( !jQuery.queue( elem, "fx" ).length ) { - hooks.empty.fire(); - } - } ); - } ); - } - - // height/width overflow pass - if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) { - - // Make sure that nothing sneaks out - // Record all 3 overflow attributes because IE does not - // change the overflow attribute when overflowX and - // overflowY are set to the same value - opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; - - // Set display property to inline-block for height/width - // animations on inline elements that are having width/height animated - display = jQuery.css( elem, "display" ); - - // Test default display if display is currently "none" - checkDisplay = display === "none" ? - jQuery._data( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display; - - if ( checkDisplay === "inline" && jQuery.css( elem, "float" ) === "none" ) { - - // inline-level elements accept inline-block; - // block-level elements need to be inline with layout - if ( !support.inlineBlockNeedsLayout || defaultDisplay( elem.nodeName ) === "inline" ) { - style.display = "inline-block"; - } else { - style.zoom = 1; - } - } - } - - if ( opts.overflow ) { - style.overflow = "hidden"; - if ( !support.shrinkWrapBlocks() ) { - anim.always( function() { - style.overflow = opts.overflow[ 0 ]; - style.overflowX = opts.overflow[ 1 ]; - style.overflowY = opts.overflow[ 2 ]; - } ); - } - } - - // show/hide pass - for ( prop in props ) { - value = props[ prop ]; - if ( rfxtypes.exec( value ) ) { - delete props[ prop ]; - toggle = toggle || value === "toggle"; - if ( value === ( hidden ? "hide" : "show" ) ) { - - // If there is dataShow left over from a stopped hide or show - // and we are going to proceed with show, we should pretend to be hidden - if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { - hidden = true; - } else { - continue; - } - } - orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); - - // Any non-fx value stops us from restoring the original display value - } else { - display = undefined; - } - } - - if ( !jQuery.isEmptyObject( orig ) ) { - if ( dataShow ) { - if ( "hidden" in dataShow ) { - hidden = dataShow.hidden; - } - } else { - dataShow = jQuery._data( elem, "fxshow", {} ); - } - - // store state if its toggle - enables .stop().toggle() to "reverse" - if ( toggle ) { - dataShow.hidden = !hidden; - } - if ( hidden ) { - jQuery( elem ).show(); - } else { - anim.done( function() { - jQuery( elem ).hide(); - } ); - } - anim.done( function() { - var prop; - jQuery._removeData( elem, "fxshow" ); - for ( prop in orig ) { - jQuery.style( elem, prop, orig[ prop ] ); - } - } ); - for ( prop in orig ) { - tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); - - if ( !( prop in dataShow ) ) { - dataShow[ prop ] = tween.start; - if ( hidden ) { - tween.end = tween.start; - tween.start = prop === "width" || prop === "height" ? 1 : 0; - } - } - } - - // If this is a noop like .hide().hide(), restore an overwritten display value - } else if ( ( display === "none" ? defaultDisplay( elem.nodeName ) : display ) === "inline" ) { - style.display = display; - } -} - -function propFilter( props, specialEasing ) { - var index, name, easing, value, hooks; - - // camelCase, specialEasing and expand cssHook pass - for ( index in props ) { - name = jQuery.camelCase( index ); - easing = specialEasing[ name ]; - value = props[ index ]; - if ( jQuery.isArray( value ) ) { - easing = value[ 1 ]; - value = props[ index ] = value[ 0 ]; - } - - if ( index !== name ) { - props[ name ] = value; - delete props[ index ]; - } - - hooks = jQuery.cssHooks[ name ]; - if ( hooks && "expand" in hooks ) { - value = hooks.expand( value ); - delete props[ name ]; - - // not quite $.extend, this wont overwrite keys already present. - // also - reusing 'index' from above because we have the correct "name" - for ( index in value ) { - if ( !( index in props ) ) { - props[ index ] = value[ index ]; - specialEasing[ index ] = easing; - } - } - } else { - specialEasing[ name ] = easing; - } - } -} - -function Animation( elem, properties, options ) { - var result, - stopped, - index = 0, - length = Animation.prefilters.length, - deferred = jQuery.Deferred().always( function() { - - // don't match elem in the :animated selector - delete tick.elem; - } ), - tick = function() { - if ( stopped ) { - return false; - } - var currentTime = fxNow || createFxNow(), - remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), - - // Support: Android 2.3 - // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) - temp = remaining / animation.duration || 0, - percent = 1 - temp, - index = 0, - length = animation.tweens.length; - - for ( ; index < length ; index++ ) { - animation.tweens[ index ].run( percent ); - } - - deferred.notifyWith( elem, [ animation, percent, remaining ] ); - - if ( percent < 1 && length ) { - return remaining; - } else { - deferred.resolveWith( elem, [ animation ] ); - return false; - } - }, - animation = deferred.promise( { - elem: elem, - props: jQuery.extend( {}, properties ), - opts: jQuery.extend( true, { - specialEasing: {}, - easing: jQuery.easing._default - }, options ), - originalProperties: properties, - originalOptions: options, - startTime: fxNow || createFxNow(), - duration: options.duration, - tweens: [], - createTween: function( prop, end ) { - var tween = jQuery.Tween( elem, animation.opts, prop, end, - animation.opts.specialEasing[ prop ] || animation.opts.easing ); - animation.tweens.push( tween ); - return tween; - }, - stop: function( gotoEnd ) { - var index = 0, - - // if we are going to the end, we want to run all the tweens - // otherwise we skip this part - length = gotoEnd ? animation.tweens.length : 0; - if ( stopped ) { - return this; - } - stopped = true; - for ( ; index < length ; index++ ) { - animation.tweens[ index ].run( 1 ); - } - - // resolve when we played the last frame - // otherwise, reject - if ( gotoEnd ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - deferred.resolveWith( elem, [ animation, gotoEnd ] ); - } else { - deferred.rejectWith( elem, [ animation, gotoEnd ] ); - } - return this; - } - } ), - props = animation.props; - - propFilter( props, animation.opts.specialEasing ); - - for ( ; index < length ; index++ ) { - result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); - if ( result ) { - if ( jQuery.isFunction( result.stop ) ) { - jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = - jQuery.proxy( result.stop, result ); - } - return result; - } - } - - jQuery.map( props, createTween, animation ); - - if ( jQuery.isFunction( animation.opts.start ) ) { - animation.opts.start.call( elem, animation ); - } - - jQuery.fx.timer( - jQuery.extend( tick, { - elem: elem, - anim: animation, - queue: animation.opts.queue - } ) - ); - - // attach callbacks from options - return animation.progress( animation.opts.progress ) - .done( animation.opts.done, animation.opts.complete ) - .fail( animation.opts.fail ) - .always( animation.opts.always ); -} - -jQuery.Animation = jQuery.extend( Animation, { - - tweeners: { - "*": [ function( prop, value ) { - var tween = this.createTween( prop, value ); - adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); - return tween; - } ] - }, - - tweener: function( props, callback ) { - if ( jQuery.isFunction( props ) ) { - callback = props; - props = [ "*" ]; - } else { - props = props.match( rnotwhite ); - } - - var prop, - index = 0, - length = props.length; - - for ( ; index < length ; index++ ) { - prop = props[ index ]; - Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; - Animation.tweeners[ prop ].unshift( callback ); - } - }, - - prefilters: [ defaultPrefilter ], - - prefilter: function( callback, prepend ) { - if ( prepend ) { - Animation.prefilters.unshift( callback ); - } else { - Animation.prefilters.push( callback ); - } - } -} ); - -jQuery.speed = function( speed, easing, fn ) { - var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { - complete: fn || !fn && easing || - jQuery.isFunction( speed ) && speed, - duration: speed, - easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing - }; - - opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration : - opt.duration in jQuery.fx.speeds ? - jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default; - - // normalize opt.queue - true/undefined/null -> "fx" - if ( opt.queue == null || opt.queue === true ) { - opt.queue = "fx"; - } - - // Queueing - opt.old = opt.complete; - - opt.complete = function() { - if ( jQuery.isFunction( opt.old ) ) { - opt.old.call( this ); - } - - if ( opt.queue ) { - jQuery.dequeue( this, opt.queue ); - } - }; - - return opt; -}; - -jQuery.fn.extend( { - fadeTo: function( speed, to, easing, callback ) { - - // show any hidden elements after setting opacity to 0 - return this.filter( isHidden ).css( "opacity", 0 ).show() - - // animate to the value specified - .end().animate( { opacity: to }, speed, easing, callback ); - }, - animate: function( prop, speed, easing, callback ) { - var empty = jQuery.isEmptyObject( prop ), - optall = jQuery.speed( speed, easing, callback ), - doAnimation = function() { - - // Operate on a copy of prop so per-property easing won't be lost - var anim = Animation( this, jQuery.extend( {}, prop ), optall ); - - // Empty animations, or finishing resolves immediately - if ( empty || jQuery._data( this, "finish" ) ) { - anim.stop( true ); - } - }; - doAnimation.finish = doAnimation; - - return empty || optall.queue === false ? - this.each( doAnimation ) : - this.queue( optall.queue, doAnimation ); - }, - stop: function( type, clearQueue, gotoEnd ) { - var stopQueue = function( hooks ) { - var stop = hooks.stop; - delete hooks.stop; - stop( gotoEnd ); - }; - - if ( typeof type !== "string" ) { - gotoEnd = clearQueue; - clearQueue = type; - type = undefined; - } - if ( clearQueue && type !== false ) { - this.queue( type || "fx", [] ); - } - - return this.each( function() { - var dequeue = true, - index = type != null && type + "queueHooks", - timers = jQuery.timers, - data = jQuery._data( this ); - - if ( index ) { - if ( data[ index ] && data[ index ].stop ) { - stopQueue( data[ index ] ); - } - } else { - for ( index in data ) { - if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { - stopQueue( data[ index ] ); - } - } - } - - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && - ( type == null || timers[ index ].queue === type ) ) { - - timers[ index ].anim.stop( gotoEnd ); - dequeue = false; - timers.splice( index, 1 ); - } - } - - // start the next in the queue if the last step wasn't forced - // timers currently will call their complete callbacks, which will dequeue - // but only if they were gotoEnd - if ( dequeue || !gotoEnd ) { - jQuery.dequeue( this, type ); - } - } ); - }, - finish: function( type ) { - if ( type !== false ) { - type = type || "fx"; - } - return this.each( function() { - var index, - data = jQuery._data( this ), - queue = data[ type + "queue" ], - hooks = data[ type + "queueHooks" ], - timers = jQuery.timers, - length = queue ? queue.length : 0; - - // enable finishing flag on private data - data.finish = true; - - // empty the queue first - jQuery.queue( this, type, [] ); - - if ( hooks && hooks.stop ) { - hooks.stop.call( this, true ); - } - - // look for any active animations, and finish them - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && timers[ index ].queue === type ) { - timers[ index ].anim.stop( true ); - timers.splice( index, 1 ); - } - } - - // look for any animations in the old queue and finish them - for ( index = 0; index < length; index++ ) { - if ( queue[ index ] && queue[ index ].finish ) { - queue[ index ].finish.call( this ); - } - } - - // turn off finishing flag - delete data.finish; - } ); - } -} ); - -jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) { - var cssFn = jQuery.fn[ name ]; - jQuery.fn[ name ] = function( speed, easing, callback ) { - return speed == null || typeof speed === "boolean" ? - cssFn.apply( this, arguments ) : - this.animate( genFx( name, true ), speed, easing, callback ); - }; -} ); - -// Generate shortcuts for custom animations -jQuery.each( { - slideDown: genFx( "show" ), - slideUp: genFx( "hide" ), - slideToggle: genFx( "toggle" ), - fadeIn: { opacity: "show" }, - fadeOut: { opacity: "hide" }, - fadeToggle: { opacity: "toggle" } -}, function( name, props ) { - jQuery.fn[ name ] = function( speed, easing, callback ) { - return this.animate( props, speed, easing, callback ); - }; -} ); - -jQuery.timers = []; -jQuery.fx.tick = function() { - var timer, - timers = jQuery.timers, - i = 0; - - fxNow = jQuery.now(); - - for ( ; i < timers.length; i++ ) { - timer = timers[ i ]; - - // Checks the timer has not already been removed - if ( !timer() && timers[ i ] === timer ) { - timers.splice( i--, 1 ); - } - } - - if ( !timers.length ) { - jQuery.fx.stop(); - } - fxNow = undefined; -}; - -jQuery.fx.timer = function( timer ) { - jQuery.timers.push( timer ); - if ( timer() ) { - jQuery.fx.start(); - } else { - jQuery.timers.pop(); - } -}; - -jQuery.fx.interval = 13; - -jQuery.fx.start = function() { - if ( !timerId ) { - timerId = window.setInterval( jQuery.fx.tick, jQuery.fx.interval ); - } -}; - -jQuery.fx.stop = function() { - window.clearInterval( timerId ); - timerId = null; -}; - -jQuery.fx.speeds = { - slow: 600, - fast: 200, - - // Default speed - _default: 400 -}; - - -// Based off of the plugin by Clint Helfers, with permission. -// http://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ -jQuery.fn.delay = function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; - type = type || "fx"; - - return this.queue( type, function( next, hooks ) { - var timeout = window.setTimeout( next, time ); - hooks.stop = function() { - window.clearTimeout( timeout ); - }; - } ); -}; - - -( function() { - var a, - input = document.createElement( "input" ), - div = document.createElement( "div" ), - select = document.createElement( "select" ), - opt = select.appendChild( document.createElement( "option" ) ); - - // Setup - div = document.createElement( "div" ); - div.setAttribute( "className", "t" ); - div.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>"; - a = div.getElementsByTagName( "a" )[ 0 ]; - - // Support: Windows Web Apps (WWA) - // `type` must use .setAttribute for WWA (#14901) - input.setAttribute( "type", "checkbox" ); - div.appendChild( input ); - - a = div.getElementsByTagName( "a" )[ 0 ]; - - // First batch of tests. - a.style.cssText = "top:1px"; - - // Test setAttribute on camelCase class. - // If it works, we need attrFixes when doing get/setAttribute (ie6/7) - support.getSetAttribute = div.className !== "t"; - - // Get the style information from getAttribute - // (IE uses .cssText instead) - support.style = /top/.test( a.getAttribute( "style" ) ); - - // Make sure that URLs aren't manipulated - // (IE normalizes it by default) - support.hrefNormalized = a.getAttribute( "href" ) === "/a"; - - // Check the default checkbox/radio value ("" on WebKit; "on" elsewhere) - support.checkOn = !!input.value; - - // Make sure that a selected-by-default option has a working selected property. - // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) - support.optSelected = opt.selected; - - // Tests for enctype support on a form (#6743) - support.enctype = !!document.createElement( "form" ).enctype; - - // Make sure that the options inside disabled selects aren't marked as disabled - // (WebKit marks them as disabled) - select.disabled = true; - support.optDisabled = !opt.disabled; - - // Support: IE8 only - // Check if we can trust getAttribute("value") - input = document.createElement( "input" ); - input.setAttribute( "value", "" ); - support.input = input.getAttribute( "value" ) === ""; - - // Check if an input maintains its value after becoming a radio - input.value = "t"; - input.setAttribute( "type", "radio" ); - support.radioValue = input.value === "t"; -} )(); - - -var rreturn = /\r/g, - rspaces = /[\x20\t\r\n\f]+/g; - -jQuery.fn.extend( { - val: function( value ) { - var hooks, ret, isFunction, - elem = this[ 0 ]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.type ] || - jQuery.valHooks[ elem.nodeName.toLowerCase() ]; - - if ( - hooks && - "get" in hooks && - ( ret = hooks.get( elem, "value" ) ) !== undefined - ) { - return ret; - } - - ret = elem.value; - - return typeof ret === "string" ? - - // handle most common string cases - ret.replace( rreturn, "" ) : - - // handle cases where value is null/undef or number - ret == null ? "" : ret; - } - - return; - } - - isFunction = jQuery.isFunction( value ); - - return this.each( function( i ) { - var val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( isFunction ) { - val = value.call( this, i, jQuery( this ).val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - } else if ( typeof val === "number" ) { - val += ""; - } else if ( jQuery.isArray( val ) ) { - val = jQuery.map( val, function( value ) { - return value == null ? "" : value + ""; - } ); - } - - hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - } ); - } -} ); - -jQuery.extend( { - valHooks: { - option: { - get: function( elem ) { - var val = jQuery.find.attr( elem, "value" ); - return val != null ? - val : - - // Support: IE10-11+ - // option.text throws exceptions (#14686, #14858) - // Strip and collapse whitespace - // https://html.spec.whatwg.org/#strip-and-collapse-whitespace - jQuery.trim( jQuery.text( elem ) ).replace( rspaces, " " ); - } - }, - select: { - get: function( elem ) { - var value, option, - options = elem.options, - index = elem.selectedIndex, - one = elem.type === "select-one" || index < 0, - values = one ? null : [], - max = one ? index + 1 : options.length, - i = index < 0 ? - max : - one ? index : 0; - - // Loop through all the selected options - for ( ; i < max; i++ ) { - option = options[ i ]; - - // oldIE doesn't update selected after form reset (#2551) - if ( ( option.selected || i === index ) && - - // Don't return options that are disabled or in a disabled optgroup - ( support.optDisabled ? - !option.disabled : - option.getAttribute( "disabled" ) === null ) && - ( !option.parentNode.disabled || - !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - }, - - set: function( elem, value ) { - var optionSet, option, - options = elem.options, - values = jQuery.makeArray( value ), - i = options.length; - - while ( i-- ) { - option = options[ i ]; - - if ( jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 ) { - - // Support: IE6 - // When new option element is added to select box we need to - // force reflow of newly added node in order to workaround delay - // of initialization properties - try { - option.selected = optionSet = true; - - } catch ( _ ) { - - // Will be executed only in IE6 - option.scrollHeight; - } - - } else { - option.selected = false; - } - } - - // Force browsers to behave consistently when non-matching value is set - if ( !optionSet ) { - elem.selectedIndex = -1; - } - - return options; - } - } - } -} ); - -// Radios and checkboxes getter/setter -jQuery.each( [ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - set: function( elem, value ) { - if ( jQuery.isArray( value ) ) { - return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); - } - } - }; - if ( !support.checkOn ) { - jQuery.valHooks[ this ].get = function( elem ) { - return elem.getAttribute( "value" ) === null ? "on" : elem.value; - }; - } -} ); - - - - -var nodeHook, boolHook, - attrHandle = jQuery.expr.attrHandle, - ruseDefault = /^(?:checked|selected)$/i, - getSetAttribute = support.getSetAttribute, - getSetInput = support.input; - -jQuery.fn.extend( { - attr: function( name, value ) { - return access( this, jQuery.attr, name, value, arguments.length > 1 ); - }, - - removeAttr: function( name ) { - return this.each( function() { - jQuery.removeAttr( this, name ); - } ); - } -} ); - -jQuery.extend( { - attr: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set attributes on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - // Fallback to prop when attributes are not supported - if ( typeof elem.getAttribute === "undefined" ) { - return jQuery.prop( elem, name, value ); - } - - // All attributes are lowercase - // Grab necessary hook if one is defined - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - name = name.toLowerCase(); - hooks = jQuery.attrHooks[ name ] || - ( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook ); - } - - if ( value !== undefined ) { - if ( value === null ) { - jQuery.removeAttr( elem, name ); - return; - } - - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - elem.setAttribute( name, value + "" ); - return value; - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - ret = jQuery.find.attr( elem, name ); - - // Non-existent attributes return null, we normalize to undefined - return ret == null ? undefined : ret; - }, - - attrHooks: { - type: { - set: function( elem, value ) { - if ( !support.radioValue && value === "radio" && - jQuery.nodeName( elem, "input" ) ) { - - // Setting the type on a radio button after the value resets the value in IE8-9 - // Reset value to default in case type is set after value during creation - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - } - }, - - removeAttr: function( elem, value ) { - var name, propName, - i = 0, - attrNames = value && value.match( rnotwhite ); - - if ( attrNames && elem.nodeType === 1 ) { - while ( ( name = attrNames[ i++ ] ) ) { - propName = jQuery.propFix[ name ] || name; - - // Boolean attributes get special treatment (#10870) - if ( jQuery.expr.match.bool.test( name ) ) { - - // Set corresponding property to false - if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) { - elem[ propName ] = false; - - // Support: IE<9 - // Also clear defaultChecked/defaultSelected (if appropriate) - } else { - elem[ jQuery.camelCase( "default-" + name ) ] = - elem[ propName ] = false; - } - - // See #9699 for explanation of this approach (setting first, then removal) - } else { - jQuery.attr( elem, name, "" ); - } - - elem.removeAttribute( getSetAttribute ? name : propName ); - } - } - } -} ); - -// Hooks for boolean attributes -boolHook = { - set: function( elem, value, name ) { - if ( value === false ) { - - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) { - - // IE<8 needs the *property* name - elem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name ); - - } else { - - // Support: IE<9 - // Use defaultChecked and defaultSelected for oldIE - elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true; - } - return name; - } -}; - -jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { - var getter = attrHandle[ name ] || jQuery.find.attr; - - if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) { - attrHandle[ name ] = function( elem, name, isXML ) { - var ret, handle; - if ( !isXML ) { - - // Avoid an infinite loop by temporarily removing this function from the getter - handle = attrHandle[ name ]; - attrHandle[ name ] = ret; - ret = getter( elem, name, isXML ) != null ? - name.toLowerCase() : - null; - attrHandle[ name ] = handle; - } - return ret; - }; - } else { - attrHandle[ name ] = function( elem, name, isXML ) { - if ( !isXML ) { - return elem[ jQuery.camelCase( "default-" + name ) ] ? - name.toLowerCase() : - null; - } - }; - } -} ); - -// fix oldIE attroperties -if ( !getSetInput || !getSetAttribute ) { - jQuery.attrHooks.value = { - set: function( elem, value, name ) { - if ( jQuery.nodeName( elem, "input" ) ) { - - // Does not return so that setAttribute is also used - elem.defaultValue = value; - } else { - - // Use nodeHook if defined (#1954); otherwise setAttribute is fine - return nodeHook && nodeHook.set( elem, value, name ); - } - } - }; -} - -// IE6/7 do not support getting/setting some attributes with get/setAttribute -if ( !getSetAttribute ) { - - // Use this for any attribute in IE6/7 - // This fixes almost every IE6/7 issue - nodeHook = { - set: function( elem, value, name ) { - - // Set the existing or create a new attribute node - var ret = elem.getAttributeNode( name ); - if ( !ret ) { - elem.setAttributeNode( - ( ret = elem.ownerDocument.createAttribute( name ) ) - ); - } - - ret.value = value += ""; - - // Break association with cloned elements by also using setAttribute (#9646) - if ( name === "value" || value === elem.getAttribute( name ) ) { - return value; - } - } - }; - - // Some attributes are constructed with empty-string values when not defined - attrHandle.id = attrHandle.name = attrHandle.coords = - function( elem, name, isXML ) { - var ret; - if ( !isXML ) { - return ( ret = elem.getAttributeNode( name ) ) && ret.value !== "" ? - ret.value : - null; - } - }; - - // Fixing value retrieval on a button requires this module - jQuery.valHooks.button = { - get: function( elem, name ) { - var ret = elem.getAttributeNode( name ); - if ( ret && ret.specified ) { - return ret.value; - } - }, - set: nodeHook.set - }; - - // Set contenteditable to false on removals(#10429) - // Setting to empty string throws an error as an invalid value - jQuery.attrHooks.contenteditable = { - set: function( elem, value, name ) { - nodeHook.set( elem, value === "" ? false : value, name ); - } - }; - - // Set width and height to auto instead of 0 on empty string( Bug #8150 ) - // This is for removals - jQuery.each( [ "width", "height" ], function( i, name ) { - jQuery.attrHooks[ name ] = { - set: function( elem, value ) { - if ( value === "" ) { - elem.setAttribute( name, "auto" ); - return value; - } - } - }; - } ); -} - -if ( !support.style ) { - jQuery.attrHooks.style = { - get: function( elem ) { - - // Return undefined in the case of empty string - // Note: IE uppercases css property names, but if we were to .toLowerCase() - // .cssText, that would destroy case sensitivity in URL's, like in "background" - return elem.style.cssText || undefined; - }, - set: function( elem, value ) { - return ( elem.style.cssText = value + "" ); - } - }; -} - - - - -var rfocusable = /^(?:input|select|textarea|button|object)$/i, - rclickable = /^(?:a|area)$/i; - -jQuery.fn.extend( { - prop: function( name, value ) { - return access( this, jQuery.prop, name, value, arguments.length > 1 ); - }, - - removeProp: function( name ) { - name = jQuery.propFix[ name ] || name; - return this.each( function() { - - // try/catch handles cases where IE balks (such as removing a property on window) - try { - this[ name ] = undefined; - delete this[ name ]; - } catch ( e ) {} - } ); - } -} ); - -jQuery.extend( { - prop: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set properties on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - return ( elem[ name ] = value ); - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - return elem[ name ]; - }, - - propHooks: { - tabIndex: { - get: function( elem ) { - - // elem.tabIndex doesn't always return the - // correct value when it hasn't been explicitly set - // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - // Use proper attribute retrieval(#12072) - var tabindex = jQuery.find.attr( elem, "tabindex" ); - - return tabindex ? - parseInt( tabindex, 10 ) : - rfocusable.test( elem.nodeName ) || - rclickable.test( elem.nodeName ) && elem.href ? - 0 : - -1; - } - } - }, - - propFix: { - "for": "htmlFor", - "class": "className" - } -} ); - -// Some attributes require a special call on IE -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !support.hrefNormalized ) { - - // href/src property should get the full normalized URL (#10299/#12915) - jQuery.each( [ "href", "src" ], function( i, name ) { - jQuery.propHooks[ name ] = { - get: function( elem ) { - return elem.getAttribute( name, 4 ); - } - }; - } ); -} - -// Support: Safari, IE9+ -// Accessing the selectedIndex property -// forces the browser to respect setting selected -// on the option -// The getter ensures a default option is selected -// when in an optgroup -if ( !support.optSelected ) { - jQuery.propHooks.selected = { - get: function( elem ) { - var parent = elem.parentNode; - - if ( parent ) { - parent.selectedIndex; - - // Make sure that it also works with optgroups, see #5701 - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - return null; - }, - set: function( elem ) { - var parent = elem.parentNode; - if ( parent ) { - parent.selectedIndex; - - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - } - }; -} - -jQuery.each( [ - "tabIndex", - "readOnly", - "maxLength", - "cellSpacing", - "cellPadding", - "rowSpan", - "colSpan", - "useMap", - "frameBorder", - "contentEditable" -], function() { - jQuery.propFix[ this.toLowerCase() ] = this; -} ); - -// IE6/7 call enctype encoding -if ( !support.enctype ) { - jQuery.propFix.enctype = "encoding"; -} - - - - -var rclass = /[\t\r\n\f]/g; - -function getClass( elem ) { - return jQuery.attr( elem, "class" ) || ""; -} - -jQuery.fn.extend( { - addClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( jQuery.isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - if ( typeof value === "string" && value ) { - classes = value.match( rnotwhite ) || []; - - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - cur = elem.nodeType === 1 && - ( " " + curValue + " " ).replace( rclass, " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - if ( cur.indexOf( " " + clazz + " " ) < 0 ) { - cur += clazz + " "; - } - } - - // only assign if different to avoid unneeded rendering. - finalValue = jQuery.trim( cur ); - if ( curValue !== finalValue ) { - jQuery.attr( elem, "class", finalValue ); - } - } - } - } - - return this; - }, - - removeClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( jQuery.isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - if ( !arguments.length ) { - return this.attr( "class", "" ); - } - - if ( typeof value === "string" && value ) { - classes = value.match( rnotwhite ) || []; - - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - - // This expression is here for better compressibility (see addClass) - cur = elem.nodeType === 1 && - ( " " + curValue + " " ).replace( rclass, " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - - // Remove *all* instances - while ( cur.indexOf( " " + clazz + " " ) > -1 ) { - cur = cur.replace( " " + clazz + " ", " " ); - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = jQuery.trim( cur ); - if ( curValue !== finalValue ) { - jQuery.attr( elem, "class", finalValue ); - } - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value; - - if ( typeof stateVal === "boolean" && type === "string" ) { - return stateVal ? this.addClass( value ) : this.removeClass( value ); - } - - if ( jQuery.isFunction( value ) ) { - return this.each( function( i ) { - jQuery( this ).toggleClass( - value.call( this, i, getClass( this ), stateVal ), - stateVal - ); - } ); - } - - return this.each( function() { - var className, i, self, classNames; - - if ( type === "string" ) { - - // Toggle individual class names - i = 0; - self = jQuery( this ); - classNames = value.match( rnotwhite ) || []; - - while ( ( className = classNames[ i++ ] ) ) { - - // Check each className given, space separated list - if ( self.hasClass( className ) ) { - self.removeClass( className ); - } else { - self.addClass( className ); - } - } - - // Toggle whole class name - } else if ( value === undefined || type === "boolean" ) { - className = getClass( this ); - if ( className ) { - - // store className if set - jQuery._data( this, "__className__", className ); - } - - // If the element has a class name or if we're passed "false", - // then remove the whole classname (if there was one, the above saved it). - // Otherwise bring back whatever was previously saved (if anything), - // falling back to the empty string if nothing was stored. - jQuery.attr( this, "class", - className || value === false ? - "" : - jQuery._data( this, "__className__" ) || "" - ); - } - } ); - }, - - hasClass: function( selector ) { - var className, elem, - i = 0; - - className = " " + selector + " "; - while ( ( elem = this[ i++ ] ) ) { - if ( elem.nodeType === 1 && - ( " " + getClass( elem ) + " " ).replace( rclass, " " ) - .indexOf( className ) > -1 - ) { - return true; - } - } - - return false; - } -} ); - - - - -// Return jQuery for attributes-only inclusion - - -jQuery.each( ( "blur focus focusin focusout load resize scroll unload click dblclick " + - "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + - "change select submit keydown keypress keyup error contextmenu" ).split( " " ), - function( i, name ) { - - // Handle event binding - jQuery.fn[ name ] = function( data, fn ) { - return arguments.length > 0 ? - this.on( name, null, data, fn ) : - this.trigger( name ); - }; -} ); - -jQuery.fn.extend( { - hover: function( fnOver, fnOut ) { - return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); - } -} ); - - -var location = window.location; - -var nonce = jQuery.now(); - -var rquery = ( /\?/ ); - - - -var rvalidtokens = /(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g; - -jQuery.parseJSON = function( data ) { - - // Attempt to parse using the native JSON parser first - if ( window.JSON && window.JSON.parse ) { - - // Support: Android 2.3 - // Workaround failure to string-cast null input - return window.JSON.parse( data + "" ); - } - - var requireNonComma, - depth = null, - str = jQuery.trim( data + "" ); - - // Guard against invalid (and possibly dangerous) input by ensuring that nothing remains - // after removing valid tokens - return str && !jQuery.trim( str.replace( rvalidtokens, function( token, comma, open, close ) { - - // Force termination if we see a misplaced comma - if ( requireNonComma && comma ) { - depth = 0; - } - - // Perform no more replacements after returning to outermost depth - if ( depth === 0 ) { - return token; - } - - // Commas must not follow "[", "{", or "," - requireNonComma = open || comma; - - // Determine new depth - // array/object open ("[" or "{"): depth += true - false (increment) - // array/object close ("]" or "}"): depth += false - true (decrement) - // other cases ("," or primitive): depth += true - true (numeric cast) - depth += !close - !open; - - // Remove this token - return ""; - } ) ) ? - ( Function( "return " + str ) )() : - jQuery.error( "Invalid JSON: " + data ); -}; - - -// Cross-browser xml parsing -jQuery.parseXML = function( data ) { - var xml, tmp; - if ( !data || typeof data !== "string" ) { - return null; - } - try { - if ( window.DOMParser ) { // Standard - tmp = new window.DOMParser(); - xml = tmp.parseFromString( data, "text/xml" ); - } else { // IE - xml = new window.ActiveXObject( "Microsoft.XMLDOM" ); - xml.async = "false"; - xml.loadXML( data ); - } - } catch ( e ) { - xml = undefined; - } - if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { - jQuery.error( "Invalid XML: " + data ); - } - return xml; -}; - - -var - rhash = /#.*$/, - rts = /([?&])_=[^&]*/, - - // IE leaves an \r character at EOL - rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, - - // #7653, #8125, #8152: local protocol detection - rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, - rnoContent = /^(?:GET|HEAD)$/, - rprotocol = /^\/\//, - rurl = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/, - - /* Prefilters - * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) - * 2) These are called: - * - BEFORE asking for a transport - * - AFTER param serialization (s.data is a string if s.processData is true) - * 3) key is the dataType - * 4) the catchall symbol "*" can be used - * 5) execution will start with transport dataType and THEN continue down to "*" if needed - */ - prefilters = {}, - - /* Transports bindings - * 1) key is the dataType - * 2) the catchall symbol "*" can be used - * 3) selection will start with transport dataType and THEN go to "*" if needed - */ - transports = {}, - - // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression - allTypes = "*/".concat( "*" ), - - // Document location - ajaxLocation = location.href, - - // Segment location into parts - ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || []; - -// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport -function addToPrefiltersOrTransports( structure ) { - - // dataTypeExpression is optional and defaults to "*" - return function( dataTypeExpression, func ) { - - if ( typeof dataTypeExpression !== "string" ) { - func = dataTypeExpression; - dataTypeExpression = "*"; - } - - var dataType, - i = 0, - dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || []; - - if ( jQuery.isFunction( func ) ) { - - // For each dataType in the dataTypeExpression - while ( ( dataType = dataTypes[ i++ ] ) ) { - - // Prepend if requested - if ( dataType.charAt( 0 ) === "+" ) { - dataType = dataType.slice( 1 ) || "*"; - ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); - - // Otherwise append - } else { - ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); - } - } - } - }; -} - -// Base inspection function for prefilters and transports -function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { - - var inspected = {}, - seekingTransport = ( structure === transports ); - - function inspect( dataType ) { - var selected; - inspected[ dataType ] = true; - jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { - var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); - if ( typeof dataTypeOrTransport === "string" && - !seekingTransport && !inspected[ dataTypeOrTransport ] ) { - - options.dataTypes.unshift( dataTypeOrTransport ); - inspect( dataTypeOrTransport ); - return false; - } else if ( seekingTransport ) { - return !( selected = dataTypeOrTransport ); - } - } ); - return selected; - } - - return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); -} - -// A special extend for ajax options -// that takes "flat" options (not to be deep extended) -// Fixes #9887 -function ajaxExtend( target, src ) { - var deep, key, - flatOptions = jQuery.ajaxSettings.flatOptions || {}; - - for ( key in src ) { - if ( src[ key ] !== undefined ) { - ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; - } - } - if ( deep ) { - jQuery.extend( true, target, deep ); - } - - return target; -} - -/* Handles responses to an ajax request: - * - finds the right dataType (mediates between content-type and expected dataType) - * - returns the corresponding response - */ -function ajaxHandleResponses( s, jqXHR, responses ) { - var firstDataType, ct, finalDataType, type, - contents = s.contents, - dataTypes = s.dataTypes; - - // Remove auto dataType and get content-type in the process - while ( dataTypes[ 0 ] === "*" ) { - dataTypes.shift(); - if ( ct === undefined ) { - ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); - } - } - - // Check if we're dealing with a known content-type - if ( ct ) { - for ( type in contents ) { - if ( contents[ type ] && contents[ type ].test( ct ) ) { - dataTypes.unshift( type ); - break; - } - } - } - - // Check to see if we have a response for the expected dataType - if ( dataTypes[ 0 ] in responses ) { - finalDataType = dataTypes[ 0 ]; - } else { - - // Try convertible dataTypes - for ( type in responses ) { - if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { - finalDataType = type; - break; - } - if ( !firstDataType ) { - firstDataType = type; - } - } - - // Or just use first one - finalDataType = finalDataType || firstDataType; - } - - // If we found a dataType - // We add the dataType to the list if needed - // and return the corresponding response - if ( finalDataType ) { - if ( finalDataType !== dataTypes[ 0 ] ) { - dataTypes.unshift( finalDataType ); - } - return responses[ finalDataType ]; - } -} - -/* Chain conversions given the request and the original response - * Also sets the responseXXX fields on the jqXHR instance - */ -function ajaxConvert( s, response, jqXHR, isSuccess ) { - var conv2, current, conv, tmp, prev, - converters = {}, - - // Work with a copy of dataTypes in case we need to modify it for conversion - dataTypes = s.dataTypes.slice(); - - // Create converters map with lowercased keys - if ( dataTypes[ 1 ] ) { - for ( conv in s.converters ) { - converters[ conv.toLowerCase() ] = s.converters[ conv ]; - } - } - - current = dataTypes.shift(); - - // Convert to each sequential dataType - while ( current ) { - - if ( s.responseFields[ current ] ) { - jqXHR[ s.responseFields[ current ] ] = response; - } - - // Apply the dataFilter if provided - if ( !prev && isSuccess && s.dataFilter ) { - response = s.dataFilter( response, s.dataType ); - } - - prev = current; - current = dataTypes.shift(); - - if ( current ) { - - // There's only work to do if current dataType is non-auto - if ( current === "*" ) { - - current = prev; - - // Convert response if prev dataType is non-auto and differs from current - } else if ( prev !== "*" && prev !== current ) { - - // Seek a direct converter - conv = converters[ prev + " " + current ] || converters[ "* " + current ]; - - // If none found, seek a pair - if ( !conv ) { - for ( conv2 in converters ) { - - // If conv2 outputs current - tmp = conv2.split( " " ); - if ( tmp[ 1 ] === current ) { - - // If prev can be converted to accepted input - conv = converters[ prev + " " + tmp[ 0 ] ] || - converters[ "* " + tmp[ 0 ] ]; - if ( conv ) { - - // Condense equivalence converters - if ( conv === true ) { - conv = converters[ conv2 ]; - - // Otherwise, insert the intermediate dataType - } else if ( converters[ conv2 ] !== true ) { - current = tmp[ 0 ]; - dataTypes.unshift( tmp[ 1 ] ); - } - break; - } - } - } - } - - // Apply converter (if not an equivalence) - if ( conv !== true ) { - - // Unless errors are allowed to bubble, catch and return them - if ( conv && s[ "throws" ] ) { // jscs:ignore requireDotNotation - response = conv( response ); - } else { - try { - response = conv( response ); - } catch ( e ) { - return { - state: "parsererror", - error: conv ? e : "No conversion from " + prev + " to " + current - }; - } - } - } - } - } - } - - return { state: "success", data: response }; -} - -jQuery.extend( { - - // Counter for holding the number of active queries - active: 0, - - // Last-Modified header cache for next request - lastModified: {}, - etag: {}, - - ajaxSettings: { - url: ajaxLocation, - type: "GET", - isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ), - global: true, - processData: true, - async: true, - contentType: "application/x-www-form-urlencoded; charset=UTF-8", - /* - timeout: 0, - data: null, - dataType: null, - username: null, - password: null, - cache: null, - throws: false, - traditional: false, - headers: {}, - */ - - accepts: { - "*": allTypes, - text: "text/plain", - html: "text/html", - xml: "application/xml, text/xml", - json: "application/json, text/javascript" - }, - - contents: { - xml: /\bxml\b/, - html: /\bhtml/, - json: /\bjson\b/ - }, - - responseFields: { - xml: "responseXML", - text: "responseText", - json: "responseJSON" - }, - - // Data converters - // Keys separate source (or catchall "*") and destination types with a single space - converters: { - - // Convert anything to text - "* text": String, - - // Text to html (true = no transformation) - "text html": true, - - // Evaluate text as a json expression - "text json": jQuery.parseJSON, - - // Parse text as xml - "text xml": jQuery.parseXML - }, - - // For options that shouldn't be deep extended: - // you can add your own custom options here if - // and when you create one that shouldn't be - // deep extended (see ajaxExtend) - flatOptions: { - url: true, - context: true - } - }, - - // Creates a full fledged settings object into target - // with both ajaxSettings and settings fields. - // If target is omitted, writes into ajaxSettings. - ajaxSetup: function( target, settings ) { - return settings ? - - // Building a settings object - ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : - - // Extending ajaxSettings - ajaxExtend( jQuery.ajaxSettings, target ); - }, - - ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), - ajaxTransport: addToPrefiltersOrTransports( transports ), - - // Main method - ajax: function( url, options ) { - - // If url is an object, simulate pre-1.5 signature - if ( typeof url === "object" ) { - options = url; - url = undefined; - } - - // Force options to be an object - options = options || {}; - - var - - // Cross-domain detection vars - parts, - - // Loop variable - i, - - // URL without anti-cache param - cacheURL, - - // Response headers as string - responseHeadersString, - - // timeout handle - timeoutTimer, - - // To know if global events are to be dispatched - fireGlobals, - - transport, - - // Response headers - responseHeaders, - - // Create the final options object - s = jQuery.ajaxSetup( {}, options ), - - // Callbacks context - callbackContext = s.context || s, - - // Context for global events is callbackContext if it is a DOM node or jQuery collection - globalEventContext = s.context && - ( callbackContext.nodeType || callbackContext.jquery ) ? - jQuery( callbackContext ) : - jQuery.event, - - // Deferreds - deferred = jQuery.Deferred(), - completeDeferred = jQuery.Callbacks( "once memory" ), - - // Status-dependent callbacks - statusCode = s.statusCode || {}, - - // Headers (they are sent all at once) - requestHeaders = {}, - requestHeadersNames = {}, - - // The jqXHR state - state = 0, - - // Default abort message - strAbort = "canceled", - - // Fake xhr - jqXHR = { - readyState: 0, - - // Builds headers hashtable if needed - getResponseHeader: function( key ) { - var match; - if ( state === 2 ) { - if ( !responseHeaders ) { - responseHeaders = {}; - while ( ( match = rheaders.exec( responseHeadersString ) ) ) { - responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ]; - } - } - match = responseHeaders[ key.toLowerCase() ]; - } - return match == null ? null : match; - }, - - // Raw string - getAllResponseHeaders: function() { - return state === 2 ? responseHeadersString : null; - }, - - // Caches the header - setRequestHeader: function( name, value ) { - var lname = name.toLowerCase(); - if ( !state ) { - name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name; - requestHeaders[ name ] = value; - } - return this; - }, - - // Overrides response content-type header - overrideMimeType: function( type ) { - if ( !state ) { - s.mimeType = type; - } - return this; - }, - - // Status-dependent callbacks - statusCode: function( map ) { - var code; - if ( map ) { - if ( state < 2 ) { - for ( code in map ) { - - // Lazy-add the new callback in a way that preserves old ones - statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; - } - } else { - - // Execute the appropriate callbacks - jqXHR.always( map[ jqXHR.status ] ); - } - } - return this; - }, - - // Cancel the request - abort: function( statusText ) { - var finalText = statusText || strAbort; - if ( transport ) { - transport.abort( finalText ); - } - done( 0, finalText ); - return this; - } - }; - - // Attach deferreds - deferred.promise( jqXHR ).complete = completeDeferred.add; - jqXHR.success = jqXHR.done; - jqXHR.error = jqXHR.fail; - - // Remove hash character (#7531: and string promotion) - // Add protocol if not provided (#5866: IE7 issue with protocol-less urls) - // Handle falsy url in the settings object (#10093: consistency with old signature) - // We also use the url parameter if available - s.url = ( ( url || s.url || ajaxLocation ) + "" ) - .replace( rhash, "" ) - .replace( rprotocol, ajaxLocParts[ 1 ] + "//" ); - - // Alias method option to type as per ticket #12004 - s.type = options.method || options.type || s.method || s.type; - - // Extract dataTypes list - s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ]; - - // A cross-domain request is in order when we have a protocol:host:port mismatch - if ( s.crossDomain == null ) { - parts = rurl.exec( s.url.toLowerCase() ); - s.crossDomain = !!( parts && - ( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] || - ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !== - ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) ) - ); - } - - // Convert data if not already a string - if ( s.data && s.processData && typeof s.data !== "string" ) { - s.data = jQuery.param( s.data, s.traditional ); - } - - // Apply prefilters - inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); - - // If request was aborted inside a prefilter, stop there - if ( state === 2 ) { - return jqXHR; - } - - // We can fire global events as of now if asked to - // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) - fireGlobals = jQuery.event && s.global; - - // Watch for a new set of requests - if ( fireGlobals && jQuery.active++ === 0 ) { - jQuery.event.trigger( "ajaxStart" ); - } - - // Uppercase the type - s.type = s.type.toUpperCase(); - - // Determine if request has content - s.hasContent = !rnoContent.test( s.type ); - - // Save the URL in case we're toying with the If-Modified-Since - // and/or If-None-Match header later on - cacheURL = s.url; - - // More options handling for requests with no content - if ( !s.hasContent ) { - - // If data is available, append data to url - if ( s.data ) { - cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data ); - - // #9682: remove data so that it's not used in an eventual retry - delete s.data; - } - - // Add anti-cache in url if needed - if ( s.cache === false ) { - s.url = rts.test( cacheURL ) ? - - // If there is already a '_' parameter, set its value - cacheURL.replace( rts, "$1_=" + nonce++ ) : - - // Otherwise add one to the end - cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++; - } - } - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - if ( jQuery.lastModified[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); - } - if ( jQuery.etag[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); - } - } - - // Set the correct header, if data is being sent - if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { - jqXHR.setRequestHeader( "Content-Type", s.contentType ); - } - - // Set the Accepts header for the server, depending on the dataType - jqXHR.setRequestHeader( - "Accept", - s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? - s.accepts[ s.dataTypes[ 0 ] ] + - ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : - s.accepts[ "*" ] - ); - - // Check for headers option - for ( i in s.headers ) { - jqXHR.setRequestHeader( i, s.headers[ i ] ); - } - - // Allow custom headers/mimetypes and early abort - if ( s.beforeSend && - ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) { - - // Abort if not done already and return - return jqXHR.abort(); - } - - // aborting is no longer a cancellation - strAbort = "abort"; - - // Install callbacks on deferreds - for ( i in { success: 1, error: 1, complete: 1 } ) { - jqXHR[ i ]( s[ i ] ); - } - - // Get transport - transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); - - // If no transport, we auto-abort - if ( !transport ) { - done( -1, "No Transport" ); - } else { - jqXHR.readyState = 1; - - // Send global event - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); - } - - // If request was aborted inside ajaxSend, stop there - if ( state === 2 ) { - return jqXHR; - } - - // Timeout - if ( s.async && s.timeout > 0 ) { - timeoutTimer = window.setTimeout( function() { - jqXHR.abort( "timeout" ); - }, s.timeout ); - } - - try { - state = 1; - transport.send( requestHeaders, done ); - } catch ( e ) { - - // Propagate exception as error if not done - if ( state < 2 ) { - done( -1, e ); - - // Simply rethrow otherwise - } else { - throw e; - } - } - } - - // Callback for when everything is done - function done( status, nativeStatusText, responses, headers ) { - var isSuccess, success, error, response, modified, - statusText = nativeStatusText; - - // Called once - if ( state === 2 ) { - return; - } - - // State is "done" now - state = 2; - - // Clear timeout if it exists - if ( timeoutTimer ) { - window.clearTimeout( timeoutTimer ); - } - - // Dereference transport for early garbage collection - // (no matter how long the jqXHR object will be used) - transport = undefined; - - // Cache response headers - responseHeadersString = headers || ""; - - // Set readyState - jqXHR.readyState = status > 0 ? 4 : 0; - - // Determine if successful - isSuccess = status >= 200 && status < 300 || status === 304; - - // Get response data - if ( responses ) { - response = ajaxHandleResponses( s, jqXHR, responses ); - } - - // Convert no matter what (that way responseXXX fields are always set) - response = ajaxConvert( s, response, jqXHR, isSuccess ); - - // If successful, handle type chaining - if ( isSuccess ) { - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - modified = jqXHR.getResponseHeader( "Last-Modified" ); - if ( modified ) { - jQuery.lastModified[ cacheURL ] = modified; - } - modified = jqXHR.getResponseHeader( "etag" ); - if ( modified ) { - jQuery.etag[ cacheURL ] = modified; - } - } - - // if no content - if ( status === 204 || s.type === "HEAD" ) { - statusText = "nocontent"; - - // if not modified - } else if ( status === 304 ) { - statusText = "notmodified"; - - // If we have data, let's convert it - } else { - statusText = response.state; - success = response.data; - error = response.error; - isSuccess = !error; - } - } else { - - // We extract error from statusText - // then normalize statusText and status for non-aborts - error = statusText; - if ( status || !statusText ) { - statusText = "error"; - if ( status < 0 ) { - status = 0; - } - } - } - - // Set data for the fake xhr object - jqXHR.status = status; - jqXHR.statusText = ( nativeStatusText || statusText ) + ""; - - // Success/Error - if ( isSuccess ) { - deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); - } else { - deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); - } - - // Status-dependent callbacks - jqXHR.statusCode( statusCode ); - statusCode = undefined; - - if ( fireGlobals ) { - globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", - [ jqXHR, s, isSuccess ? success : error ] ); - } - - // Complete - completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); - - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); - - // Handle the global AJAX counter - if ( !( --jQuery.active ) ) { - jQuery.event.trigger( "ajaxStop" ); - } - } - } - - return jqXHR; - }, - - getJSON: function( url, data, callback ) { - return jQuery.get( url, data, callback, "json" ); - }, - - getScript: function( url, callback ) { - return jQuery.get( url, undefined, callback, "script" ); - } -} ); - -jQuery.each( [ "get", "post" ], function( i, method ) { - jQuery[ method ] = function( url, data, callback, type ) { - - // shift arguments if data argument was omitted - if ( jQuery.isFunction( data ) ) { - type = type || callback; - callback = data; - data = undefined; - } - - // The url can be an options object (which then must have .url) - return jQuery.ajax( jQuery.extend( { - url: url, - type: method, - dataType: type, - data: data, - success: callback - }, jQuery.isPlainObject( url ) && url ) ); - }; -} ); - - -jQuery._evalUrl = function( url ) { - return jQuery.ajax( { - url: url, - - // Make this explicit, since user can override this through ajaxSetup (#11264) - type: "GET", - dataType: "script", - cache: true, - async: false, - global: false, - "throws": true - } ); -}; - - -jQuery.fn.extend( { - wrapAll: function( html ) { - if ( jQuery.isFunction( html ) ) { - return this.each( function( i ) { - jQuery( this ).wrapAll( html.call( this, i ) ); - } ); - } - - if ( this[ 0 ] ) { - - // The elements to wrap the target around - var wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); - - if ( this[ 0 ].parentNode ) { - wrap.insertBefore( this[ 0 ] ); - } - - wrap.map( function() { - var elem = this; - - while ( elem.firstChild && elem.firstChild.nodeType === 1 ) { - elem = elem.firstChild; - } - - return elem; - } ).append( this ); - } - - return this; - }, - - wrapInner: function( html ) { - if ( jQuery.isFunction( html ) ) { - return this.each( function( i ) { - jQuery( this ).wrapInner( html.call( this, i ) ); - } ); - } - - return this.each( function() { - var self = jQuery( this ), - contents = self.contents(); - - if ( contents.length ) { - contents.wrapAll( html ); - - } else { - self.append( html ); - } - } ); - }, - - wrap: function( html ) { - var isFunction = jQuery.isFunction( html ); - - return this.each( function( i ) { - jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html ); - } ); - }, - - unwrap: function() { - return this.parent().each( function() { - if ( !jQuery.nodeName( this, "body" ) ) { - jQuery( this ).replaceWith( this.childNodes ); - } - } ).end(); - } -} ); - - -function getDisplay( elem ) { - return elem.style && elem.style.display || jQuery.css( elem, "display" ); -} - -function filterHidden( elem ) { - - // Disconnected elements are considered hidden - if ( !jQuery.contains( elem.ownerDocument || document, elem ) ) { - return true; - } - while ( elem && elem.nodeType === 1 ) { - if ( getDisplay( elem ) === "none" || elem.type === "hidden" ) { - return true; - } - elem = elem.parentNode; - } - return false; -} - -jQuery.expr.filters.hidden = function( elem ) { - - // Support: Opera <= 12.12 - // Opera reports offsetWidths and offsetHeights less than zero on some elements - return support.reliableHiddenOffsets() ? - ( elem.offsetWidth <= 0 && elem.offsetHeight <= 0 && - !elem.getClientRects().length ) : - filterHidden( elem ); -}; - -jQuery.expr.filters.visible = function( elem ) { - return !jQuery.expr.filters.hidden( elem ); -}; - - - - -var r20 = /%20/g, - rbracket = /\[\]$/, - rCRLF = /\r?\n/g, - rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, - rsubmittable = /^(?:input|select|textarea|keygen)/i; - -function buildParams( prefix, obj, traditional, add ) { - var name; - - if ( jQuery.isArray( obj ) ) { - - // Serialize array item. - jQuery.each( obj, function( i, v ) { - if ( traditional || rbracket.test( prefix ) ) { - - // Treat each array item as a scalar. - add( prefix, v ); - - } else { - - // Item is non-scalar (array or object), encode its numeric index. - buildParams( - prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", - v, - traditional, - add - ); - } - } ); - - } else if ( !traditional && jQuery.type( obj ) === "object" ) { - - // Serialize object item. - for ( name in obj ) { - buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); - } - - } else { - - // Serialize scalar item. - add( prefix, obj ); - } -} - -// Serialize an array of form elements or a set of -// key/values into a query string -jQuery.param = function( a, traditional ) { - var prefix, - s = [], - add = function( key, value ) { - - // If value is a function, invoke it and return its value - value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value ); - s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value ); - }; - - // Set traditional to true for jQuery <= 1.3.2 behavior. - if ( traditional === undefined ) { - traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional; - } - - // If an array was passed in, assume that it is an array of form elements. - if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { - - // Serialize the form elements - jQuery.each( a, function() { - add( this.name, this.value ); - } ); - - } else { - - // If traditional, encode the "old" way (the way 1.3.2 or older - // did it), otherwise encode params recursively. - for ( prefix in a ) { - buildParams( prefix, a[ prefix ], traditional, add ); - } - } - - // Return the resulting serialization - return s.join( "&" ).replace( r20, "+" ); -}; - -jQuery.fn.extend( { - serialize: function() { - return jQuery.param( this.serializeArray() ); - }, - serializeArray: function() { - return this.map( function() { - - // Can add propHook for "elements" to filter or add form elements - var elements = jQuery.prop( this, "elements" ); - return elements ? jQuery.makeArray( elements ) : this; - } ) - .filter( function() { - var type = this.type; - - // Use .is(":disabled") so that fieldset[disabled] works - return this.name && !jQuery( this ).is( ":disabled" ) && - rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && - ( this.checked || !rcheckableType.test( type ) ); - } ) - .map( function( i, elem ) { - var val = jQuery( this ).val(); - - return val == null ? - null : - jQuery.isArray( val ) ? - jQuery.map( val, function( val ) { - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ) : - { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ).get(); - } -} ); - - -// Create the request object -// (This is still attached to ajaxSettings for backward compatibility) -jQuery.ajaxSettings.xhr = window.ActiveXObject !== undefined ? - - // Support: IE6-IE8 - function() { - - // XHR cannot access local files, always use ActiveX for that case - if ( this.isLocal ) { - return createActiveXHR(); - } - - // Support: IE 9-11 - // IE seems to error on cross-domain PATCH requests when ActiveX XHR - // is used. In IE 9+ always use the native XHR. - // Note: this condition won't catch Edge as it doesn't define - // document.documentMode but it also doesn't support ActiveX so it won't - // reach this code. - if ( document.documentMode > 8 ) { - return createStandardXHR(); - } - - // Support: IE<9 - // oldIE XHR does not support non-RFC2616 methods (#13240) - // See http://msdn.microsoft.com/en-us/library/ie/ms536648(v=vs.85).aspx - // and http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9 - // Although this check for six methods instead of eight - // since IE also does not support "trace" and "connect" - return /^(get|post|head|put|delete|options)$/i.test( this.type ) && - createStandardXHR() || createActiveXHR(); - } : - - // For all other browsers, use the standard XMLHttpRequest object - createStandardXHR; - -var xhrId = 0, - xhrCallbacks = {}, - xhrSupported = jQuery.ajaxSettings.xhr(); - -// Support: IE<10 -// Open requests must be manually aborted on unload (#5280) -// See https://support.microsoft.com/kb/2856746 for more info -if ( window.attachEvent ) { - window.attachEvent( "onunload", function() { - for ( var key in xhrCallbacks ) { - xhrCallbacks[ key ]( undefined, true ); - } - } ); -} - -// Determine support properties -support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); -xhrSupported = support.ajax = !!xhrSupported; - -// Create transport if the browser can provide an xhr -if ( xhrSupported ) { - - jQuery.ajaxTransport( function( options ) { - - // Cross domain only allowed if supported through XMLHttpRequest - if ( !options.crossDomain || support.cors ) { - - var callback; - - return { - send: function( headers, complete ) { - var i, - xhr = options.xhr(), - id = ++xhrId; - - // Open the socket - xhr.open( - options.type, - options.url, - options.async, - options.username, - options.password - ); - - // Apply custom fields if provided - if ( options.xhrFields ) { - for ( i in options.xhrFields ) { - xhr[ i ] = options.xhrFields[ i ]; - } - } - - // Override mime type if needed - if ( options.mimeType && xhr.overrideMimeType ) { - xhr.overrideMimeType( options.mimeType ); - } - - // X-Requested-With header - // For cross-domain requests, seeing as conditions for a preflight are - // akin to a jigsaw puzzle, we simply never set it to be sure. - // (it can always be set on a per-request basis or even using ajaxSetup) - // For same-domain requests, won't change header if already provided. - if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { - headers[ "X-Requested-With" ] = "XMLHttpRequest"; - } - - // Set headers - for ( i in headers ) { - - // Support: IE<9 - // IE's ActiveXObject throws a 'Type Mismatch' exception when setting - // request header to a null-value. - // - // To keep consistent with other XHR implementations, cast the value - // to string and ignore `undefined`. - if ( headers[ i ] !== undefined ) { - xhr.setRequestHeader( i, headers[ i ] + "" ); - } - } - - // Do send the request - // This may raise an exception which is actually - // handled in jQuery.ajax (so no try/catch here) - xhr.send( ( options.hasContent && options.data ) || null ); - - // Listener - callback = function( _, isAbort ) { - var status, statusText, responses; - - // Was never called and is aborted or complete - if ( callback && ( isAbort || xhr.readyState === 4 ) ) { - - // Clean up - delete xhrCallbacks[ id ]; - callback = undefined; - xhr.onreadystatechange = jQuery.noop; - - // Abort manually if needed - if ( isAbort ) { - if ( xhr.readyState !== 4 ) { - xhr.abort(); - } - } else { - responses = {}; - status = xhr.status; - - // Support: IE<10 - // Accessing binary-data responseText throws an exception - // (#11426) - if ( typeof xhr.responseText === "string" ) { - responses.text = xhr.responseText; - } - - // Firefox throws an exception when accessing - // statusText for faulty cross-domain requests - try { - statusText = xhr.statusText; - } catch ( e ) { - - // We normalize with Webkit giving an empty statusText - statusText = ""; - } - - // Filter status for non standard behaviors - - // If the request is local and we have data: assume a success - // (success with no data won't get notified, that's the best we - // can do given current implementations) - if ( !status && options.isLocal && !options.crossDomain ) { - status = responses.text ? 200 : 404; - - // IE - #1450: sometimes returns 1223 when it should be 204 - } else if ( status === 1223 ) { - status = 204; - } - } - } - - // Call complete if needed - if ( responses ) { - complete( status, statusText, responses, xhr.getAllResponseHeaders() ); - } - }; - - // Do send the request - // `xhr.send` may raise an exception, but it will be - // handled in jQuery.ajax (so no try/catch here) - if ( !options.async ) { - - // If we're in sync mode we fire the callback - callback(); - } else if ( xhr.readyState === 4 ) { - - // (IE6 & IE7) if it's in cache and has been - // retrieved directly we need to fire the callback - window.setTimeout( callback ); - } else { - - // Register the callback, but delay it in case `xhr.send` throws - // Add to the list of active xhr callbacks - xhr.onreadystatechange = xhrCallbacks[ id ] = callback; - } - }, - - abort: function() { - if ( callback ) { - callback( undefined, true ); - } - } - }; - } - } ); -} - -// Functions to create xhrs -function createStandardXHR() { - try { - return new window.XMLHttpRequest(); - } catch ( e ) {} -} - -function createActiveXHR() { - try { - return new window.ActiveXObject( "Microsoft.XMLHTTP" ); - } catch ( e ) {} -} - - - - -// Install script dataType -jQuery.ajaxSetup( { - accepts: { - script: "text/javascript, application/javascript, " + - "application/ecmascript, application/x-ecmascript" - }, - contents: { - script: /\b(?:java|ecma)script\b/ - }, - converters: { - "text script": function( text ) { - jQuery.globalEval( text ); - return text; - } - } -} ); - -// Handle cache's special case and global -jQuery.ajaxPrefilter( "script", function( s ) { - if ( s.cache === undefined ) { - s.cache = false; - } - if ( s.crossDomain ) { - s.type = "GET"; - s.global = false; - } -} ); - -// Bind script tag hack transport -jQuery.ajaxTransport( "script", function( s ) { - - // This transport only deals with cross domain requests - if ( s.crossDomain ) { - - var script, - head = document.head || jQuery( "head" )[ 0 ] || document.documentElement; - - return { - - send: function( _, callback ) { - - script = document.createElement( "script" ); - - script.async = true; - - if ( s.scriptCharset ) { - script.charset = s.scriptCharset; - } - - script.src = s.url; - - // Attach handlers for all browsers - script.onload = script.onreadystatechange = function( _, isAbort ) { - - if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) { - - // Handle memory leak in IE - script.onload = script.onreadystatechange = null; - - // Remove the script - if ( script.parentNode ) { - script.parentNode.removeChild( script ); - } - - // Dereference the script - script = null; - - // Callback if not abort - if ( !isAbort ) { - callback( 200, "success" ); - } - } - }; - - // Circumvent IE6 bugs with base elements (#2709 and #4378) by prepending - // Use native DOM manipulation to avoid our domManip AJAX trickery - head.insertBefore( script, head.firstChild ); - }, - - abort: function() { - if ( script ) { - script.onload( undefined, true ); - } - } - }; - } -} ); - - - - -var oldCallbacks = [], - rjsonp = /(=)\?(?=&|$)|\?\?/; - -// Default jsonp settings -jQuery.ajaxSetup( { - jsonp: "callback", - jsonpCallback: function() { - var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) ); - this[ callback ] = true; - return callback; - } -} ); - -// Detect, normalize options and install callbacks for jsonp requests -jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { - - var callbackName, overwritten, responseContainer, - jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ? - "url" : - typeof s.data === "string" && - ( s.contentType || "" ) - .indexOf( "application/x-www-form-urlencoded" ) === 0 && - rjsonp.test( s.data ) && "data" - ); - - // Handle iff the expected data type is "jsonp" or we have a parameter to set - if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) { - - // Get callback name, remembering preexisting value associated with it - callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ? - s.jsonpCallback() : - s.jsonpCallback; - - // Insert callback into url or form data - if ( jsonProp ) { - s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName ); - } else if ( s.jsonp !== false ) { - s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName; - } - - // Use data converter to retrieve json after script execution - s.converters[ "script json" ] = function() { - if ( !responseContainer ) { - jQuery.error( callbackName + " was not called" ); - } - return responseContainer[ 0 ]; - }; - - // force json dataType - s.dataTypes[ 0 ] = "json"; - - // Install callback - overwritten = window[ callbackName ]; - window[ callbackName ] = function() { - responseContainer = arguments; - }; - - // Clean-up function (fires after converters) - jqXHR.always( function() { - - // If previous value didn't exist - remove it - if ( overwritten === undefined ) { - jQuery( window ).removeProp( callbackName ); - - // Otherwise restore preexisting value - } else { - window[ callbackName ] = overwritten; - } - - // Save back as free - if ( s[ callbackName ] ) { - - // make sure that re-using the options doesn't screw things around - s.jsonpCallback = originalSettings.jsonpCallback; - - // save the callback name for future use - oldCallbacks.push( callbackName ); - } - - // Call if it was a function and we have a response - if ( responseContainer && jQuery.isFunction( overwritten ) ) { - overwritten( responseContainer[ 0 ] ); - } - - responseContainer = overwritten = undefined; - } ); - - // Delegate to script - return "script"; - } -} ); - - - - -// data: string of html -// context (optional): If specified, the fragment will be created in this context, -// defaults to document -// keepScripts (optional): If true, will include scripts passed in the html string -jQuery.parseHTML = function( data, context, keepScripts ) { - if ( !data || typeof data !== "string" ) { - return null; - } - if ( typeof context === "boolean" ) { - keepScripts = context; - context = false; - } - context = context || document; - - var parsed = rsingleTag.exec( data ), - scripts = !keepScripts && []; - - // Single tag - if ( parsed ) { - return [ context.createElement( parsed[ 1 ] ) ]; - } - - parsed = buildFragment( [ data ], context, scripts ); - - if ( scripts && scripts.length ) { - jQuery( scripts ).remove(); - } - - return jQuery.merge( [], parsed.childNodes ); -}; - - -// Keep a copy of the old load method -var _load = jQuery.fn.load; - -/** - * Load a url into a page - */ -jQuery.fn.load = function( url, params, callback ) { - if ( typeof url !== "string" && _load ) { - return _load.apply( this, arguments ); - } - - var selector, type, response, - self = this, - off = url.indexOf( " " ); - - if ( off > -1 ) { - selector = jQuery.trim( url.slice( off, url.length ) ); - url = url.slice( 0, off ); - } - - // If it's a function - if ( jQuery.isFunction( params ) ) { - - // We assume that it's the callback - callback = params; - params = undefined; - - // Otherwise, build a param string - } else if ( params && typeof params === "object" ) { - type = "POST"; - } - - // If we have elements to modify, make the request - if ( self.length > 0 ) { - jQuery.ajax( { - url: url, - - // If "type" variable is undefined, then "GET" method will be used. - // Make value of this field explicit since - // user can override it through ajaxSetup method - type: type || "GET", - dataType: "html", - data: params - } ).done( function( responseText ) { - - // Save response for use in complete callback - response = arguments; - - self.html( selector ? - - // If a selector was specified, locate the right elements in a dummy div - // Exclude scripts to avoid IE 'Permission Denied' errors - jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) : - - // Otherwise use the full result - responseText ); - - // If the request succeeds, this function gets "data", "status", "jqXHR" - // but they are ignored because response was set above. - // If it fails, this function gets "jqXHR", "status", "error" - } ).always( callback && function( jqXHR, status ) { - self.each( function() { - callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] ); - } ); - } ); - } - - return this; -}; - - - - -// Attach a bunch of functions for handling common AJAX events -jQuery.each( [ - "ajaxStart", - "ajaxStop", - "ajaxComplete", - "ajaxError", - "ajaxSuccess", - "ajaxSend" -], function( i, type ) { - jQuery.fn[ type ] = function( fn ) { - return this.on( type, fn ); - }; -} ); - - - - -jQuery.expr.filters.animated = function( elem ) { - return jQuery.grep( jQuery.timers, function( fn ) { - return elem === fn.elem; - } ).length; -}; - - - - - -/** - * Gets a window from an element - */ -function getWindow( elem ) { - return jQuery.isWindow( elem ) ? - elem : - elem.nodeType === 9 ? - elem.defaultView || elem.parentWindow : - false; -} - -jQuery.offset = { - setOffset: function( elem, options, i ) { - var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition, - position = jQuery.css( elem, "position" ), - curElem = jQuery( elem ), - props = {}; - - // set position first, in-case top/left are set even on static elem - if ( position === "static" ) { - elem.style.position = "relative"; - } - - curOffset = curElem.offset(); - curCSSTop = jQuery.css( elem, "top" ); - curCSSLeft = jQuery.css( elem, "left" ); - calculatePosition = ( position === "absolute" || position === "fixed" ) && - jQuery.inArray( "auto", [ curCSSTop, curCSSLeft ] ) > -1; - - // need to be able to calculate position if either top or left - // is auto and position is either absolute or fixed - if ( calculatePosition ) { - curPosition = curElem.position(); - curTop = curPosition.top; - curLeft = curPosition.left; - } else { - curTop = parseFloat( curCSSTop ) || 0; - curLeft = parseFloat( curCSSLeft ) || 0; - } - - if ( jQuery.isFunction( options ) ) { - - // Use jQuery.extend here to allow modification of coordinates argument (gh-1848) - options = options.call( elem, i, jQuery.extend( {}, curOffset ) ); - } - - if ( options.top != null ) { - props.top = ( options.top - curOffset.top ) + curTop; - } - if ( options.left != null ) { - props.left = ( options.left - curOffset.left ) + curLeft; - } - - if ( "using" in options ) { - options.using.call( elem, props ); - } else { - curElem.css( props ); - } - } -}; - -jQuery.fn.extend( { - offset: function( options ) { - if ( arguments.length ) { - return options === undefined ? - this : - this.each( function( i ) { - jQuery.offset.setOffset( this, options, i ); - } ); - } - - var docElem, win, - box = { top: 0, left: 0 }, - elem = this[ 0 ], - doc = elem && elem.ownerDocument; - - if ( !doc ) { - return; - } - - docElem = doc.documentElement; - - // Make sure it's not a disconnected DOM node - if ( !jQuery.contains( docElem, elem ) ) { - return box; - } - - // If we don't have gBCR, just use 0,0 rather than error - // BlackBerry 5, iOS 3 (original iPhone) - if ( typeof elem.getBoundingClientRect !== "undefined" ) { - box = elem.getBoundingClientRect(); - } - win = getWindow( doc ); - return { - top: box.top + ( win.pageYOffset || docElem.scrollTop ) - ( docElem.clientTop || 0 ), - left: box.left + ( win.pageXOffset || docElem.scrollLeft ) - ( docElem.clientLeft || 0 ) - }; - }, - - position: function() { - if ( !this[ 0 ] ) { - return; - } - - var offsetParent, offset, - parentOffset = { top: 0, left: 0 }, - elem = this[ 0 ]; - - // Fixed elements are offset from window (parentOffset = {top:0, left: 0}, - // because it is its only offset parent - if ( jQuery.css( elem, "position" ) === "fixed" ) { - - // we assume that getBoundingClientRect is available when computed position is fixed - offset = elem.getBoundingClientRect(); - } else { - - // Get *real* offsetParent - offsetParent = this.offsetParent(); - - // Get correct offsets - offset = this.offset(); - if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) { - parentOffset = offsetParent.offset(); - } - - // Add offsetParent borders - parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true ); - parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true ); - } - - // Subtract parent offsets and element margins - // note: when an element has margin: auto the offsetLeft and marginLeft - // are the same in Safari causing offset.left to incorrectly be 0 - return { - top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ), - left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true ) - }; - }, - - offsetParent: function() { - return this.map( function() { - var offsetParent = this.offsetParent; - - while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && - jQuery.css( offsetParent, "position" ) === "static" ) ) { - offsetParent = offsetParent.offsetParent; - } - return offsetParent || documentElement; - } ); - } -} ); - -// Create scrollLeft and scrollTop methods -jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) { - var top = /Y/.test( prop ); - - jQuery.fn[ method ] = function( val ) { - return access( this, function( elem, method, val ) { - var win = getWindow( elem ); - - if ( val === undefined ) { - return win ? ( prop in win ) ? win[ prop ] : - win.document.documentElement[ method ] : - elem[ method ]; - } - - if ( win ) { - win.scrollTo( - !top ? val : jQuery( win ).scrollLeft(), - top ? val : jQuery( win ).scrollTop() - ); - - } else { - elem[ method ] = val; - } - }, method, val, arguments.length, null ); - }; -} ); - -// Support: Safari<7-8+, Chrome<37-44+ -// Add the top/left cssHooks using jQuery.fn.position -// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084 -// getComputedStyle returns percent when specified for top/left/bottom/right -// rather than make the css module depend on the offset module, we just check for it here -jQuery.each( [ "top", "left" ], function( i, prop ) { - jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition, - function( elem, computed ) { - if ( computed ) { - computed = curCSS( elem, prop ); - - // if curCSS returns percentage, fallback to offset - return rnumnonpx.test( computed ) ? - jQuery( elem ).position()[ prop ] + "px" : - computed; - } - } - ); -} ); - - -// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods -jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { - jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, - function( defaultExtra, funcName ) { - - // margin is only for outerHeight, outerWidth - jQuery.fn[ funcName ] = function( margin, value ) { - var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ), - extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" ); - - return access( this, function( elem, type, value ) { - var doc; - - if ( jQuery.isWindow( elem ) ) { - - // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there - // isn't a whole lot we can do. See pull request at this URL for discussion: - // https://github.com/jquery/jquery/pull/764 - return elem.document.documentElement[ "client" + name ]; - } - - // Get document width or height - if ( elem.nodeType === 9 ) { - doc = elem.documentElement; - - // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], - // whichever is greatest - // unfortunately, this causes bug #3838 in IE6/8 only, - // but there is currently no good, small way to fix it. - return Math.max( - elem.body[ "scroll" + name ], doc[ "scroll" + name ], - elem.body[ "offset" + name ], doc[ "offset" + name ], - doc[ "client" + name ] - ); - } - - return value === undefined ? - - // Get width or height on the element, requesting but not forcing parseFloat - jQuery.css( elem, type, extra ) : - - // Set width or height on the element - jQuery.style( elem, type, value, extra ); - }, type, chainable ? margin : undefined, chainable, null ); - }; - } ); -} ); - - -jQuery.fn.extend( { - - bind: function( types, data, fn ) { - return this.on( types, null, data, fn ); - }, - unbind: function( types, fn ) { - return this.off( types, null, fn ); - }, - - delegate: function( selector, types, data, fn ) { - return this.on( types, selector, data, fn ); - }, - undelegate: function( selector, types, fn ) { - - // ( namespace ) or ( selector, types [, fn] ) - return arguments.length === 1 ? - this.off( selector, "**" ) : - this.off( types, selector || "**", fn ); - } -} ); - -// The number of elements contained in the matched element set -jQuery.fn.size = function() { - return this.length; -}; - -jQuery.fn.andSelf = jQuery.fn.addBack; - - - - -// Register as a named AMD module, since jQuery can be concatenated with other -// files that may use define, but not via a proper concatenation script that -// understands anonymous AMD modules. A named AMD is safest and most robust -// way to register. Lowercase jquery is used because AMD module names are -// derived from file names, and jQuery is normally delivered in a lowercase -// file name. Do this after creating the global so that if an AMD module wants -// to call noConflict to hide this version of jQuery, it will work. - -// Note that for maximum portability, libraries that are not jQuery should -// declare themselves as anonymous modules, and avoid setting a global if an -// AMD loader is present. jQuery is a special case. For more information, see -// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon - -if ( typeof define === "function" && define.amd ) { - define( "jquery", [], function() { - return jQuery; - } ); -} - - - -var - - // Map over jQuery in case of overwrite - _jQuery = window.jQuery, - - // Map over the $ in case of overwrite - _$ = window.$; - -jQuery.noConflict = function( deep ) { - if ( window.$ === jQuery ) { - window.$ = _$; - } - - if ( deep && window.jQuery === jQuery ) { - window.jQuery = _jQuery; - } - - return jQuery; -}; - -// Expose jQuery and $ identifiers, even in -// AMD (#7102#comment:10, https://github.com/jquery/jquery/pull/557) -// and CommonJS for browser emulators (#13566) -if ( !noGlobal ) { - window.jQuery = window.$ = jQuery; -} - -return jQuery; -})); \ No newline at end of file diff --git a/assets/js/jquery-1.12.4.min.js b/assets/js/jquery-1.12.4.min.js deleted file mode 100644 index b0ecadde..00000000 --- a/assets/js/jquery-1.12.4.min.js +++ /dev/null @@ -1,5 +0,0 @@ -/*! jQuery v1.12.4 | (c) jQuery Foundation | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="1.12.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(!l.ownFirst)for(b in a)return k.call(a,b);for(b in a);return void 0===b||k.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(h)return h.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=e.call(arguments,2),d=function(){return a.apply(b||this,c.concat(e.call(arguments)))},d.guid=a.guid=a.guid||n.guid++,d):void 0},now:function(){return+new Date},support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=la(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=ma(b);function pa(){}pa.prototype=d.filters=d.pseudos,d.setFilters=new pa,g=fa.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=R.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=S.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(Q," ")}),h=h.slice(c.length));for(g in d.filter)!(e=W[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fa.error(a):z(a,i).slice(0)};function qa(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}if(f=d.getElementById(e[2]),f&&f.parentNode){if(f.id!==e[2])return A.find(a);this.length=1,this[0]=f}return this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||(e=n.uniqueSort(e)),D.test(a)&&(e=e.reverse())),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){n.each(b,function(b,c){n.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==n.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return n.each(arguments,function(a,b){var c;while((c=n.inArray(b,f,c))>-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=!0,c||j.disable(),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.addEventListener?(d.removeEventListener("DOMContentLoaded",K),a.removeEventListener("load",K)):(d.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(d.addEventListener||"load"===a.event.type||"complete"===d.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll)a.setTimeout(n.ready);else if(d.addEventListener)d.addEventListener("DOMContentLoaded",K),a.addEventListener("load",K);else{d.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&d.documentElement}catch(e){}c&&c.doScroll&&!function f(){if(!n.isReady){try{c.doScroll("left")}catch(b){return a.setTimeout(f,50)}J(),n.ready()}}()}return I.promise(b)},n.ready.promise();var L;for(L in n(l))break;l.ownFirst="0"===L,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c,e;c=d.getElementsByTagName("body")[0],c&&c.style&&(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",l.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(e))}),function(){var a=d.createElement("div");l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}a=null}();var M=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b},N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0; -}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(M(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),"object"!=typeof b&&"function"!=typeof b||(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f}}function S(a,b,c){if(M(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=void 0)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=n._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}}),function(){var a;l.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,e;return c=d.getElementsByTagName("body")[0],c&&c.style?(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(d.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(e),a):void 0}}();var T=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,U=new RegExp("^(?:([+-])=|)("+T+")([a-z%]*)$","i"),V=["Top","Right","Bottom","Left"],W=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)};function X(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return n.css(a,b,"")},i=h(),j=c&&c[3]||(n.cssNumber[b]?"":"px"),k=(n.cssNumber[b]||"px"!==j&&+i)&&U.exec(n.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,n.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var Y=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)Y(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},Z=/^(?:checkbox|radio)$/i,$=/<([\w:-]+)/,_=/^$|\/(?:java|ecma)script/i,aa=/^\s+/,ba="abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video";function ca(a){var b=ba.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}!function(){var a=d.createElement("div"),b=d.createDocumentFragment(),c=d.createElement("input");a.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",l.leadingWhitespace=3===a.firstChild.nodeType,l.tbody=!a.getElementsByTagName("tbody").length,l.htmlSerialize=!!a.getElementsByTagName("link").length,l.html5Clone="<:nav></:nav>"!==d.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,b.appendChild(c),l.appendChecked=c.checked,a.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!a.cloneNode(!0).lastChild.defaultValue,b.appendChild(a),c=d.createElement("input"),c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),a.appendChild(c),l.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!!a.addEventListener,a[n.expando]=1,l.attributes=!a.getAttribute(n.expando)}();var da={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:l.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]};da.optgroup=da.option,da.tbody=da.tfoot=da.colgroup=da.caption=da.thead,da.th=da.td;function ea(a,b){var c,d,e=0,f="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,ea(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function fa(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}var ga=/<|&#?\w+;/,ha=/<tbody/i;function ia(a){Z.test(a.type)&&(a.defaultChecked=a.checked)}function ja(a,b,c,d,e){for(var f,g,h,i,j,k,m,o=a.length,p=ca(b),q=[],r=0;o>r;r++)if(g=a[r],g||0===g)if("object"===n.type(g))n.merge(q,g.nodeType?[g]:g);else if(ga.test(g)){i=i||p.appendChild(b.createElement("div")),j=($.exec(g)||["",""])[1].toLowerCase(),m=da[j]||da._default,i.innerHTML=m[1]+n.htmlPrefilter(g)+m[2],f=m[0];while(f--)i=i.lastChild;if(!l.leadingWhitespace&&aa.test(g)&&q.push(b.createTextNode(aa.exec(g)[0])),!l.tbody){g="table"!==j||ha.test(g)?"<table>"!==m[1]||ha.test(g)?0:i:i.firstChild,f=g&&g.childNodes.length;while(f--)n.nodeName(k=g.childNodes[f],"tbody")&&!k.childNodes.length&&g.removeChild(k)}n.merge(q,i.childNodes),i.textContent="";while(i.firstChild)i.removeChild(i.firstChild);i=p.lastChild}else q.push(b.createTextNode(g));i&&p.removeChild(i),l.appendChecked||n.grep(ea(q,"input"),ia),r=0;while(g=q[r++])if(d&&n.inArray(g,d)>-1)e&&e.push(g);else if(h=n.contains(g.ownerDocument,g),i=ea(p.appendChild(g),"script"),h&&fa(i),c){f=0;while(g=i[f++])_.test(g.type||"")&&c.push(g)}return i=null,p}!function(){var b,c,e=d.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b]=c in a)||(e.setAttribute(c,"t"),l[b]=e.attributes[c].expando===!1);e=null}();var ka=/^(?:input|select|textarea)$/i,la=/^key/,ma=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,na=/^(?:focusinfocus|focusoutblur)$/,oa=/^([^.]*)(?:\.(.+)|)/;function pa(){return!0}function qa(){return!1}function ra(){try{return d.activeElement}catch(a){}}function sa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)sa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=qa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return"undefined"==typeof n||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(G)||[""],h=b.length;while(h--)f=oa.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=oa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(i=m=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!na.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),h=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),l=n.event.special[q]||{},f||!l.trigger||l.trigger.apply(e,c)!==!1)){if(!f&&!l.noBubble&&!n.isWindow(e)){for(j=l.delegateType||q,na.test(j+q)||(i=i.parentNode);i;i=i.parentNode)p.push(i),m=i;m===(e.ownerDocument||d)&&p.push(m.defaultView||m.parentWindow||a)}o=0;while((i=p[o++])&&!b.isPropagationStopped())b.type=o>1?j:l.bindType||q,g=(n._data(i,"events")||{})[b.type]&&n._data(i,"handle"),g&&g.apply(i,c),g=h&&i[h],g&&g.apply&&M(i)&&(b.result=g.apply(i,c),b.result===!1&&b.preventDefault());if(b.type=q,!f&&!b.isDefaultPrevented()&&(!l._default||l._default.apply(p.pop(),c)===!1)&&M(e)&&h&&e[q]&&!n.isWindow(e)){m=e[h],m&&(e[h]=null),n.event.triggered=q;try{e[q]()}catch(s){}n.event.triggered=void 0,m&&(e[h]=m)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[n.expando])return a;var b,c,e,f=a.type,g=a,h=this.fixHooks[f];h||(this.fixHooks[f]=h=ma.test(f)?this.mouseHooks:la.test(f)?this.keyHooks:{}),e=h.props?this.props.concat(h.props):this.props,a=new n.Event(g),b=e.length;while(b--)c=e[b],a[c]=g[c];return a.target||(a.target=g.srcElement||d),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,h.filter?h.filter(a,g):a},props:"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,e,f,g=b.button,h=b.fromElement;return null==a.pageX&&null!=b.clientX&&(e=a.target.ownerDocument||d,f=e.documentElement,c=e.body,a.pageX=b.clientX+(f&&f.scrollLeft||c&&c.scrollLeft||0)-(f&&f.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(f&&f.scrollTop||c&&c.scrollTop||0)-(f&&f.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&h&&(a.relatedTarget=h===a.target?b.toElement:h),a.which||void 0===g||(a.which=1&g?1:2&g?3:4&g?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==ra()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===ra()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return n.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c){var d=n.extend(new n.Event,c,{type:a,isSimulated:!0});n.event.trigger(d,null,b),d.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=d.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)}:function(a,b,c){var d="on"+b;a.detachEvent&&("undefined"==typeof a[d]&&(a[d]=null),a.detachEvent(d,c))},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?pa:qa):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={constructor:n.Event,isDefaultPrevented:qa,isPropagationStopped:qa,isImmediatePropagationStopped:qa,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=pa,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=pa,a&&!this.isSimulated&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=pa,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||n.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),l.submit||(n.event.special.submit={setup:function(){return n.nodeName(this,"form")?!1:void n.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=n.nodeName(b,"input")||n.nodeName(b,"button")?n.prop(b,"form"):void 0;c&&!n._data(c,"submit")&&(n.event.add(c,"submit._submit",function(a){a._submitBubble=!0}),n._data(c,"submit",!0))})},postDispatch:function(a){a._submitBubble&&(delete a._submitBubble,this.parentNode&&!a.isTrigger&&n.event.simulate("submit",this.parentNode,a))},teardown:function(){return n.nodeName(this,"form")?!1:void n.event.remove(this,"._submit")}}),l.change||(n.event.special.change={setup:function(){return ka.test(this.nodeName)?("checkbox"!==this.type&&"radio"!==this.type||(n.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._justChanged=!0)}),n.event.add(this,"click._change",function(a){this._justChanged&&!a.isTrigger&&(this._justChanged=!1),n.event.simulate("change",this,a)})),!1):void n.event.add(this,"beforeactivate._change",function(a){var b=a.target;ka.test(b.nodeName)&&!n._data(b,"change")&&(n.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||n.event.simulate("change",this.parentNode,a)}),n._data(b,"change",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return n.event.remove(this,"._change"),!ka.test(this.nodeName)}}),l.focusin||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a))};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=n._data(d,b);e||d.addEventListener(a,c,!0),n._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=n._data(d,b)-1;e?n._data(d,b,e):(d.removeEventListener(a,c,!0),n._removeData(d,b))}}}),n.fn.extend({on:function(a,b,c,d){return sa(this,a,b,c,d)},one:function(a,b,c,d){return sa(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=qa),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var ta=/ jQuery\d+="(?:null|\d+)"/g,ua=new RegExp("<(?:"+ba+")[\\s/>]","i"),va=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,wa=/<script|<style|<link/i,xa=/checked\s*(?:[^=]|=\s*.checked.)/i,ya=/^true\/(.*)/,za=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,Aa=ca(d),Ba=Aa.appendChild(d.createElement("div"));function Ca(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function Da(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function Ea(a){var b=ya.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Fa(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Ga(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(Da(b).text=a.text,Ea(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&Z.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}}function Ha(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&xa.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(o&&(k=ja(b,a[0].ownerDocument,!1,a,d),e=k.firstChild,1===k.childNodes.length&&(k=e),e||d)){for(i=n.map(ea(k,"script"),Da),h=i.length;o>m;m++)g=k,m!==p&&(g=n.clone(g,!0,!0),h&&n.merge(i,ea(g,"script"))),c.call(a[m],g,m);if(h)for(j=i[i.length-1].ownerDocument,n.map(i,Ea),m=0;h>m;m++)g=i[m],_.test(g.type||"")&&!n._data(g,"globalEval")&&n.contains(j,g)&&(g.src?n._evalUrl&&n._evalUrl(g.src):n.globalEval((g.text||g.textContent||g.innerHTML||"").replace(za,"")));k=e=null}return a}function Ia(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(ea(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&fa(ea(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(va,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!ua.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(Ba.innerHTML=a.outerHTML,Ba.removeChild(f=Ba.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=ea(f),h=ea(a),g=0;null!=(e=h[g]);++g)d[g]&&Ga(e,d[g]);if(b)if(c)for(h=h||ea(a),d=d||ea(f),g=0;null!=(e=h[g]);g++)Fa(e,d[g]);else Fa(a,f);return d=ea(f,"script"),d.length>0&&fa(d,!i&&ea(a,"script")),d=h=e=null,f},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.attributes,m=n.event.special;null!=(d=a[h]);h++)if((b||M(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k||"undefined"==typeof d.removeAttribute?d[i]=void 0:d.removeAttribute(i),c.push(f))}}}),n.fn.extend({domManip:Ha,detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return Y(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||d).createTextNode(a))},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(ea(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return Y(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(ta,""):void 0;if("string"==typeof a&&!wa.test(a)&&(l.htmlSerialize||!ua.test(a))&&(l.leadingWhitespace||!aa.test(a))&&!da[($.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ea(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ha(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(ea(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],f=n(a),h=f.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(f[d])[b](c),g.apply(e,c.get());return this.pushStack(e)}});var Ja,Ka={HTML:"block",BODY:"block"};function La(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function Ma(a){var b=d,c=Ka[a];return c||(c=La(a,b),"none"!==c&&c||(Ja=(Ja||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Ja[0].contentWindow||Ja[0].contentDocument).document,b.write(),b.close(),c=La(a,b),Ja.detach()),Ka[a]=c),c}var Na=/^margin/,Oa=new RegExp("^("+T+")(?!px)[a-z%]+$","i"),Pa=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e},Qa=d.documentElement;!function(){var b,c,e,f,g,h,i=d.createElement("div"),j=d.createElement("div");if(j.style){j.style.cssText="float:left;opacity:.5",l.opacity="0.5"===j.style.opacity,l.cssFloat=!!j.style.cssFloat,j.style.backgroundClip="content-box",j.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===j.style.backgroundClip,i=d.createElement("div"),i.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",j.innerHTML="",i.appendChild(j),l.boxSizing=""===j.style.boxSizing||""===j.style.MozBoxSizing||""===j.style.WebkitBoxSizing,n.extend(l,{reliableHiddenOffsets:function(){return null==b&&k(),f},boxSizingReliable:function(){return null==b&&k(),e},pixelMarginRight:function(){return null==b&&k(),c},pixelPosition:function(){return null==b&&k(),b},reliableMarginRight:function(){return null==b&&k(),g},reliableMarginLeft:function(){return null==b&&k(),h}});function k(){var k,l,m=d.documentElement;m.appendChild(i),j.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",b=e=h=!1,c=g=!0,a.getComputedStyle&&(l=a.getComputedStyle(j),b="1%"!==(l||{}).top,h="2px"===(l||{}).marginLeft,e="4px"===(l||{width:"4px"}).width,j.style.marginRight="50%",c="4px"===(l||{marginRight:"4px"}).marginRight,k=j.appendChild(d.createElement("div")),k.style.cssText=j.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",k.style.marginRight=k.style.width="0",j.style.width="1px",g=!parseFloat((a.getComputedStyle(k)||{}).marginRight),j.removeChild(k)),j.style.display="none",f=0===j.getClientRects().length,f&&(j.style.display="",j.innerHTML="<table><tr><td></td><td>t</td></tr></table>",j.childNodes[0].style.borderCollapse="separate",k=j.getElementsByTagName("td"),k[0].style.cssText="margin:0;border:0;padding:0;display:none",f=0===k[0].offsetHeight,f&&(k[0].style.display="",k[1].style.display="none",f=0===k[0].offsetHeight)),m.removeChild(i)}}}();var Ra,Sa,Ta=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ra=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)},Sa=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ra(a),g=c?c.getPropertyValue(b)||c[b]:void 0,""!==g&&void 0!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),c&&!l.pixelMarginRight()&&Oa.test(g)&&Na.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f),void 0===g?g:g+""}):Qa.currentStyle&&(Ra=function(a){return a.currentStyle},Sa=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ra(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Oa.test(g)&&!Ta.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Ua(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Va=/alpha\([^)]*\)/i,Wa=/opacity\s*=\s*([^)]*)/i,Xa=/^(none|table(?!-c[ea]).+)/,Ya=new RegExp("^("+T+")(.*)$","i"),Za={position:"absolute",visibility:"hidden",display:"block"},$a={letterSpacing:"0",fontWeight:"400"},_a=["Webkit","O","Moz","ms"],ab=d.createElement("div").style;function bb(a){if(a in ab)return a;var b=a.charAt(0).toUpperCase()+a.slice(1),c=_a.length;while(c--)if(a=_a[c]+b,a in ab)return a}function cb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=n._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&W(d)&&(f[g]=n._data(d,"olddisplay",Ma(d.nodeName)))):(e=W(d),(c&&"none"!==c||!e)&&n._data(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function db(a,b,c){var d=Ya.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function eb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+V[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+V[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+V[f]+"Width",!0,e))):(g+=n.css(a,"padding"+V[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+V[f]+"Width",!0,e)));return g}function fb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ra(a),g=l.boxSizing&&"border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Sa(a,b,f),(0>e||null==e)&&(e=a.style[b]),Oa.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+eb(a,b,c||(g?"border":"content"),d,f)+"px"}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Sa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":l.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;if(b=n.cssProps[h]||(n.cssProps[h]=bb(h)||h),g=n.cssHooks[b]||n.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=U.exec(c))&&e[1]&&(c=X(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(n.cssNumber[h]?"":"px")),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=bb(h)||h),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Sa(a,b,d)),"normal"===f&&b in $a&&(f=$a[b]),""===c||c?(e=parseFloat(f),c===!0||isFinite(e)?e||0:f):f}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?Xa.test(n.css(a,"display"))&&0===a.offsetWidth?Pa(a,Za,function(){return fb(a,b,d)}):fb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ra(a);return db(a,c,d?eb(a,b,d,l.boxSizing&&"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),l.opacity||(n.cssHooks.opacity={get:function(a,b){return Wa.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=n.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===n.trim(f.replace(Va,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Va.test(f)?f.replace(Va,e):f+" "+e)}}),n.cssHooks.marginRight=Ua(l.reliableMarginRight,function(a,b){return b?Pa(a,{display:"inline-block"},Sa,[a,"marginRight"]):void 0}),n.cssHooks.marginLeft=Ua(l.reliableMarginLeft,function(a,b){return b?(parseFloat(Sa(a,"marginLeft"))||(n.contains(a.ownerDocument,a)?a.getBoundingClientRect().left-Pa(a,{ -marginLeft:0},function(){return a.getBoundingClientRect().left}):0))+"px":void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+V[d]+b]=f[d]||f[d-2]||f[0];return e}},Na.test(a)||(n.cssHooks[a+b].set=db)}),n.fn.extend({css:function(a,b){return Y(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Ra(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return cb(this,!0)},hide:function(){return cb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){W(this)?n(this).show():n(this).hide()})}});function gb(a,b,c,d,e){return new gb.prototype.init(a,b,c,d,e)}n.Tween=gb,gb.prototype={constructor:gb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||n.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=gb.propHooks[this.prop];return a&&a.get?a.get(this):gb.propHooks._default.get(this)},run:function(a){var b,c=gb.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):gb.propHooks._default.set(this),this}},gb.prototype.init.prototype=gb.prototype,gb.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[n.cssProps[a.prop]]&&!n.cssHooks[a.prop]?a.elem[a.prop]=a.now:n.style(a.elem,a.prop,a.now+a.unit)}}},gb.propHooks.scrollTop=gb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},n.fx=gb.prototype.init,n.fx.step={};var hb,ib,jb=/^(?:toggle|show|hide)$/,kb=/queueHooks$/;function lb(){return a.setTimeout(function(){hb=void 0}),hb=n.now()}function mb(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=V[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function nb(a,b,c){for(var d,e=(qb.tweeners[b]||[]).concat(qb.tweeners["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ob(a,b,c){var d,e,f,g,h,i,j,k,m=this,o={},p=a.style,q=a.nodeType&&W(a),r=n._data(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,m.always(function(){m.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=n.css(a,"display"),k="none"===j?n._data(a,"olddisplay")||Ma(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(l.inlineBlockNeedsLayout&&"inline"!==Ma(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",l.shrinkWrapBlocks()||m.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],jb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(o))"inline"===("none"===j?Ma(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=n._data(a,"fxshow",{}),f&&(r.hidden=!q),q?n(a).show():m.done(function(){n(a).hide()}),m.done(function(){var b;n._removeData(a,"fxshow");for(b in o)n.style(a,b,o[b])});for(d in o)g=nb(q?r[d]:0,d,m),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function pb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function qb(a,b,c){var d,e,f=0,g=qb.prefilters.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=hb||lb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{},easing:n.easing._default},c),originalProperties:b,originalOptions:c,startTime:hb||lb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(pb(k,j.opts.specialEasing);g>f;f++)if(d=qb.prefilters[f].call(j,a,k,j.opts))return n.isFunction(d.stop)&&(n._queueHooks(j.elem,j.opts.queue).stop=n.proxy(d.stop,d)),d;return n.map(k,nb,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(qb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return X(c.elem,a,U.exec(b),c),c}]},tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.match(G);for(var c,d=0,e=a.length;e>d;d++)c=a[d],qb.tweeners[c]=qb.tweeners[c]||[],qb.tweeners[c].unshift(b)},prefilters:[ob],prefilter:function(a,b){b?qb.prefilters.unshift(a):qb.prefilters.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,null!=d.queue&&d.queue!==!0||(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(W).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=qb(this,n.extend({},a),f);(e||n._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=n._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&kb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=n._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(mb(b,!0),a,d,e)}}),n.each({slideDown:mb("show"),slideUp:mb("hide"),slideToggle:mb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=n.timers,c=0;for(hb=n.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||n.fx.stop(),hb=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){ib||(ib=a.setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){a.clearInterval(ib),ib=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(b,c){return b=n.fx?n.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a,b=d.createElement("input"),c=d.createElement("div"),e=d.createElement("select"),f=e.appendChild(d.createElement("option"));c=d.createElement("div"),c.setAttribute("className","t"),c.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=c.getElementsByTagName("a")[0],b.setAttribute("type","checkbox"),c.appendChild(b),a=c.getElementsByTagName("a")[0],a.style.cssText="top:1px",l.getSetAttribute="t"!==c.className,l.style=/top/.test(a.getAttribute("style")),l.hrefNormalized="/a"===a.getAttribute("href"),l.checkOn=!!b.value,l.optSelected=f.selected,l.enctype=!!d.createElement("form").enctype,e.disabled=!0,l.optDisabled=!f.disabled,b=d.createElement("input"),b.setAttribute("value",""),l.input=""===b.getAttribute("value"),b.value="t",b.setAttribute("type","radio"),l.radioValue="t"===b.value}();var rb=/\r/g,sb=/[\x20\t\r\n\f]+/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a)).replace(sb," ")}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],(c.selected||i===e)&&(l.optDisabled?!c.disabled:null===c.getAttribute("disabled"))&&(!c.parentNode.disabled||!n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)if(d=e[g],n.inArray(n.valHooks.option.get(d),f)>-1)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>-1:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var tb,ub,vb=n.expr.attrHandle,wb=/^(?:checked|selected)$/i,xb=l.getSetAttribute,yb=l.input;n.fn.extend({attr:function(a,b){return Y(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),e=n.attrHooks[b]||(n.expr.match.bool.test(b)?ub:tb)),void 0!==c?null===c?void n.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=n.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(G);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)?yb&&xb||!wb.test(c)?a[d]=!1:a[n.camelCase("default-"+c)]=a[d]=!1:n.attr(a,c,""),a.removeAttribute(xb?c:d)}}),ub={set:function(a,b,c){return b===!1?n.removeAttr(a,c):yb&&xb||!wb.test(c)?a.setAttribute(!xb&&n.propFix[c]||c,c):a[n.camelCase("default-"+c)]=a[c]=!0,c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=vb[b]||n.find.attr;yb&&xb||!wb.test(b)?vb[b]=function(a,b,d){var e,f;return d||(f=vb[b],vb[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,vb[b]=f),e}:vb[b]=function(a,b,c){return c?void 0:a[n.camelCase("default-"+b)]?b.toLowerCase():null}}),yb&&xb||(n.attrHooks.value={set:function(a,b,c){return n.nodeName(a,"input")?void(a.defaultValue=b):tb&&tb.set(a,b,c)}}),xb||(tb={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},vb.id=vb.name=vb.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},n.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:tb.set},n.attrHooks.contenteditable={set:function(a,b,c){tb.set(a,""===b?!1:b,c)}},n.each(["width","height"],function(a,b){n.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),l.style||(n.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var zb=/^(?:input|select|textarea|button|object)$/i,Ab=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return Y(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return a=n.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),n.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&n.isXMLDoc(a)||(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):zb.test(a.nodeName)||Ab.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),l.hrefNormalized||n.each(["href","src"],function(a,b){n.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this}),l.enctype||(n.propFix.enctype="encoding");var Bb=/[\t\r\n\f]/g;function Cb(a){return n.attr(a,"class")||""}n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,Cb(this)))});if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=Cb(c),d=1===c.nodeType&&(" "+e+" ").replace(Bb," ")){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=n.trim(d),e!==h&&n.attr(c,"class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,Cb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=Cb(c),d=1===c.nodeType&&(" "+e+" ").replace(Bb," ")){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=n.trim(d),e!==h&&n.attr(c,"class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):n.isFunction(a)?this.each(function(c){n(this).toggleClass(a.call(this,c,Cb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=n(this),f=a.match(G)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=Cb(this),b&&n._data(this,"__className__",b),n.attr(this,"class",b||a===!1?"":n._data(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+Cb(c)+" ").replace(Bb," ").indexOf(b)>-1)return!0;return!1}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Db=a.location,Eb=n.now(),Fb=/\?/,Gb=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;n.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=n.trim(b+"");return e&&!n.trim(e.replace(Gb,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():n.error("Invalid JSON: "+b)},n.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new a.DOMParser,c=d.parseFromString(b,"text/xml")):(c=new a.ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var Hb=/#.*$/,Ib=/([?&])_=[^&]*/,Jb=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Kb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Lb=/^(?:GET|HEAD)$/,Mb=/^\/\//,Nb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ob={},Pb={},Qb="*/".concat("*"),Rb=Db.href,Sb=Nb.exec(Rb.toLowerCase())||[];function Tb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(G)||[];if(n.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Ub(a,b,c,d){var e={},f=a===Pb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Vb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&n.extend(!0,a,c),a}function Wb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Xb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Rb,type:"GET",isLocal:Kb.test(Sb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Qb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Vb(Vb(a,n.ajaxSettings),b):Vb(n.ajaxSettings,a)},ajaxPrefilter:Tb(Ob),ajaxTransport:Tb(Pb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var d,e,f,g,h,i,j,k,l=n.ajaxSetup({},c),m=l.context||l,o=l.context&&(m.nodeType||m.jquery)?n(m):n.event,p=n.Deferred(),q=n.Callbacks("once memory"),r=l.statusCode||{},s={},t={},u=0,v="canceled",w={readyState:0,getResponseHeader:function(a){var b;if(2===u){if(!k){k={};while(b=Jb.exec(g))k[b[1].toLowerCase()]=b[2]}b=k[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===u?g:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return u||(a=t[c]=t[c]||a,s[a]=b),this},overrideMimeType:function(a){return u||(l.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>u)for(b in a)r[b]=[r[b],a[b]];else w.always(a[w.status]);return this},abort:function(a){var b=a||v;return j&&j.abort(b),y(0,b),this}};if(p.promise(w).complete=q.add,w.success=w.done,w.error=w.fail,l.url=((b||l.url||Rb)+"").replace(Hb,"").replace(Mb,Sb[1]+"//"),l.type=c.method||c.type||l.method||l.type,l.dataTypes=n.trim(l.dataType||"*").toLowerCase().match(G)||[""],null==l.crossDomain&&(d=Nb.exec(l.url.toLowerCase()),l.crossDomain=!(!d||d[1]===Sb[1]&&d[2]===Sb[2]&&(d[3]||("http:"===d[1]?"80":"443"))===(Sb[3]||("http:"===Sb[1]?"80":"443")))),l.data&&l.processData&&"string"!=typeof l.data&&(l.data=n.param(l.data,l.traditional)),Ub(Ob,l,c,w),2===u)return w;i=n.event&&l.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),l.type=l.type.toUpperCase(),l.hasContent=!Lb.test(l.type),f=l.url,l.hasContent||(l.data&&(f=l.url+=(Fb.test(f)?"&":"?")+l.data,delete l.data),l.cache===!1&&(l.url=Ib.test(f)?f.replace(Ib,"$1_="+Eb++):f+(Fb.test(f)?"&":"?")+"_="+Eb++)),l.ifModified&&(n.lastModified[f]&&w.setRequestHeader("If-Modified-Since",n.lastModified[f]),n.etag[f]&&w.setRequestHeader("If-None-Match",n.etag[f])),(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&w.setRequestHeader("Content-Type",l.contentType),w.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+("*"!==l.dataTypes[0]?", "+Qb+"; q=0.01":""):l.accepts["*"]);for(e in l.headers)w.setRequestHeader(e,l.headers[e]);if(l.beforeSend&&(l.beforeSend.call(m,w,l)===!1||2===u))return w.abort();v="abort";for(e in{success:1,error:1,complete:1})w[e](l[e]);if(j=Ub(Pb,l,c,w)){if(w.readyState=1,i&&o.trigger("ajaxSend",[w,l]),2===u)return w;l.async&&l.timeout>0&&(h=a.setTimeout(function(){w.abort("timeout")},l.timeout));try{u=1,j.send(s,y)}catch(x){if(!(2>u))throw x;y(-1,x)}}else y(-1,"No Transport");function y(b,c,d,e){var k,s,t,v,x,y=c;2!==u&&(u=2,h&&a.clearTimeout(h),j=void 0,g=e||"",w.readyState=b>0?4:0,k=b>=200&&300>b||304===b,d&&(v=Wb(l,w,d)),v=Xb(l,v,w,k),k?(l.ifModified&&(x=w.getResponseHeader("Last-Modified"),x&&(n.lastModified[f]=x),x=w.getResponseHeader("etag"),x&&(n.etag[f]=x)),204===b||"HEAD"===l.type?y="nocontent":304===b?y="notmodified":(y=v.state,s=v.data,t=v.error,k=!t)):(t=y,!b&&y||(y="error",0>b&&(b=0))),w.status=b,w.statusText=(c||y)+"",k?p.resolveWith(m,[s,y,w]):p.rejectWith(m,[w,y,t]),w.statusCode(r),r=void 0,i&&o.trigger(k?"ajaxSuccess":"ajaxError",[w,l,k?s:t]),q.fireWith(m,[w,y]),i&&(o.trigger("ajaxComplete",[w,l]),--n.active||n.event.trigger("ajaxStop")))}return w},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax(n.extend({url:a,type:b,dataType:e,data:c,success:d},n.isPlainObject(a)&&a))}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){if(n.isFunction(a))return this.each(function(b){n(this).wrapAll(a.call(this,b))});if(this[0]){var b=n(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return n.isFunction(a)?this.each(function(b){n(this).wrapInner(a.call(this,b))}):this.each(function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}});function Yb(a){return a.style&&a.style.display||n.css(a,"display")}function Zb(a){if(!n.contains(a.ownerDocument||d,a))return!0;while(a&&1===a.nodeType){if("none"===Yb(a)||"hidden"===a.type)return!0;a=a.parentNode}return!1}n.expr.filters.hidden=function(a){return l.reliableHiddenOffsets()?a.offsetWidth<=0&&a.offsetHeight<=0&&!a.getClientRects().length:Zb(a)},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var $b=/%20/g,_b=/\[\]$/,ac=/\r?\n/g,bc=/^(?:submit|button|image|reset|file)$/i,cc=/^(?:input|select|textarea|keygen)/i;function dc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||_b.test(a)?d(a,e):dc(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)dc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)dc(c,a[c],b,e);return d.join("&").replace($b,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&cc.test(this.nodeName)&&!bc.test(a)&&(this.checked||!Z.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(ac,"\r\n")}}):{name:b.name,value:c.replace(ac,"\r\n")}}).get()}}),n.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return this.isLocal?ic():d.documentMode>8?hc():/^(get|post|head|put|delete|options)$/i.test(this.type)&&hc()||ic()}:hc;var ec=0,fc={},gc=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in fc)fc[a](void 0,!0)}),l.cors=!!gc&&"withCredentials"in gc,gc=l.ajax=!!gc,gc&&n.ajaxTransport(function(b){if(!b.crossDomain||l.cors){var c;return{send:function(d,e){var f,g=b.xhr(),h=++ec;if(g.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(f in b.xhrFields)g[f]=b.xhrFields[f];b.mimeType&&g.overrideMimeType&&g.overrideMimeType(b.mimeType),b.crossDomain||d["X-Requested-With"]||(d["X-Requested-With"]="XMLHttpRequest");for(f in d)void 0!==d[f]&&g.setRequestHeader(f,d[f]+"");g.send(b.hasContent&&b.data||null),c=function(a,d){var f,i,j;if(c&&(d||4===g.readyState))if(delete fc[h],c=void 0,g.onreadystatechange=n.noop,d)4!==g.readyState&&g.abort();else{j={},f=g.status,"string"==typeof g.responseText&&(j.text=g.responseText);try{i=g.statusText}catch(k){i=""}f||!b.isLocal||b.crossDomain?1223===f&&(f=204):f=j.text?200:404}j&&e(f,i,j,g.getAllResponseHeaders())},b.async?4===g.readyState?a.setTimeout(c):g.onreadystatechange=fc[h]=c:c()},abort:function(){c&&c(void 0,!0)}}}});function hc(){try{return new a.XMLHttpRequest}catch(b){}}function ic(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=d.head||n("head")[0]||d.documentElement;return{send:function(e,f){b=d.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||f(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var jc=[],kc=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=jc.pop()||n.expando+"_"+Eb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(kc.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&kc.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(kc,"$1"+e):b.jsonp!==!1&&(b.url+=(Fb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?n(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,jc.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||d;var e=x.exec(a),f=!c&&[];return e?[b.createElement(e[1])]:(e=ja([a],b,f),f&&f.length&&n(f).remove(),n.merge([],e.childNodes))};var lc=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&lc)return lc.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=n.trim(a.slice(h,a.length)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};function mc(a){return n.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&n.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,n.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,n.contains(b,e)?("undefined"!=typeof e.getBoundingClientRect&&(d=e.getBoundingClientRect()),c=mc(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===n.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(c=a.offset()),c.top+=n.css(a[0],"borderTopWidth",!0),c.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-n.css(d,"marginTop",!0),left:b.left-c.left-n.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Qa})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);n.fn[a]=function(d){return Y(this,function(a,d,e){var f=mc(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?n(f).scrollLeft():e,c?e:n(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Ua(l.pixelPosition,function(a,c){return c?(c=Sa(a,b),Oa.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({ -padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return Y(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var nc=a.jQuery,oc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=oc),b&&a.jQuery===n&&(a.jQuery=nc),n},b||(a.jQuery=a.$=n),n}); \ No newline at end of file diff --git a/assets/js/jquery-2.1.1.js b/assets/js/jquery-2.1.1.js deleted file mode 100644 index 9ed2acc6..00000000 --- a/assets/js/jquery-2.1.1.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v2.1.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.1",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="<select msallowclip=''><option selected=''></option></select>",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=lb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=mb(b);function pb(){}pb.prototype=d.filters=d.pseudos,d.setFilters=new pb,g=fb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fb.error(a):z(a,i).slice(0)};function qb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+Math.random()}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b) -},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=L.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,R=["Top","Right","Bottom","Left"],S=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement("div")),c=l.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||l,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||0)-(d&&d.clientLeft||e&&e.clientLeft||0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||0)-(d&&d.clientTop||e&&e.clientTop||0)),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=l),3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==_()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?Z:$):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=Z,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!0),L.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-1;e?L.access(d,b,e):(d.removeEventListener(a,c,!0),L.remove(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=$;else if(!d)return this;return 1===e&&(f=d,d=function(a){return n().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=$),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var ab=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bb=/<([\w:]+)/,cb=/<|&#?\w+;/,db=/<(?:script|style|link)/i,eb=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/^$|\/(?:java|ecma)script/i,gb=/^true\/(.*)/,hb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ib={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function kb(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=0,e=f.length;e>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=0,e=f.length;e>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,"script"),g.length>0&&mb(g,!i&&ob(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement("div")),g=(bb.exec(e)||["",""])[1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[1]+e.replace(ab,"<$1></$2>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=ob(k.appendChild(e),"script"),i&&mb(f),c)){j=0;while(e=f[j++])fb.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(ob(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&mb(ob(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(ob(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!db.test(a)&&!ib[(bb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ab,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ob(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(ob(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&eb.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(ob(c,"script"),kb),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,ob(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,lb),j=0;g>j;j++)h=f[j],fb.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(hb,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function tb(a){var b=l,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(qb||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=qb[0].contentDocument,b.write(),b.close(),c=sb(a,b),qb.detach()),rb[a]=c),c}var ub=/^margin/,vb=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),wb=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)};function xb(a,b,c){var d,e,f,g,h=a.style;return c=c||wb(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),vb.test(g)&&ub.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function yb(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement("div"),f=l.createElement("div");if(f.style){f.style.backgroundClip="content-box",f.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===f.style.backgroundClip,e.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",e.appendChild(f);function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",f.innerHTML="",d.appendChild(e);var g=a.getComputedStyle(f,null);b="1%"!==g.top,c="4px"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div"));return c.style.cssText=f.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",f.style.width="1px",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var zb=/^(none|table(?!-c[ea]).+)/,Ab=new RegExp("^("+Q+")(.*)$","i"),Bb=new RegExp("^([+-])=("+Q+")","i"),Cb={position:"absolute",visibility:"hidden",display:"block"},Db={letterSpacing:"0",fontWeight:"400"},Eb=["Webkit","O","Moz","ms"];function Fb(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Eb.length;while(e--)if(b=Eb[e]+c,b in a)return b;return d}function Gb(a,b,c){var d=Ab.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Hb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+R[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+R[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+R[f]+"Width",!0,e))):(g+=n.css(a,"padding"+R[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+R[f]+"Width",!0,e)));return g}function Ib(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=wb(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=xb(a,b,f),(0>e||null==e)&&(e=a.style[b]),vb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Hb(a,b,c||(g?"border":"content"),d,f)+"px"}function Jb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",tb(d.nodeName)))):(e=S(d),"none"===c&&e||L.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Bb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xb(a,b,d)),"normal"===e&&b in Db&&(e=Db[b]),""===c||c?(f=parseFloat(e),c===!0||n.isNumeric(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?zb.test(n.css(a,"display"))&&0===a.offsetWidth?n.swap(a,Cb,function(){return Ib(a,b,d)}):Ib(a,b,d):void 0},set:function(a,c,d){var e=d&&wb(a);return Gb(a,c,d?Hb(a,b,d,"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),n.cssHooks.marginRight=yb(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},xb,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ub.test(a)||(n.cssHooks[a+b].set=Gb)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=wb(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Jb(this,!0)},hide:function(){return Jb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Kb(a,b,c,d,e){return new Kb.prototype.init(a,b,c,d,e)}n.Tween=Kb,Kb.prototype={constructor:Kb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Kb.propHooks[this.prop];return a&&a.get?a.get(this):Kb.propHooks._default.get(this)},run:function(a){var b,c=Kb.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Kb.propHooks._default.set(this),this}},Kb.prototype.init.prototype=Kb.prototype,Kb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Kb.propHooks.scrollTop=Kb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=Kb.prototype.init,n.fx.step={};var Lb,Mb,Nb=/^(?:toggle|show|hide)$/,Ob=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),Pb=/queueHooks$/,Qb=[Vb],Rb={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Ob.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&Ob.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function Sb(){return setTimeout(function(){Lb=void 0}),Lb=n.now()}function Tb(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ub(a,b,c){for(var d,e=(Rb[b]||[]).concat(Rb["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Vb(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?L.get(a,"olddisplay")||tb(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Nb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?tb(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=L.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ub(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function Wb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xb(a,b,c){var d,e,f=0,g=Qb.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Lb||Sb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:Lb||Sb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wb(k,j.opts.specialEasing);g>f;f++)if(d=Qb[f].call(j,a,k,j.opts))return d;return n.map(k,Ub,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xb,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Rb[c]=Rb[c]||[],Rb[c].unshift(b)},prefilter:function(a,b){b?Qb.unshift(a):Qb.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xb(this,n.extend({},a),f);(e||L.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Tb(b,!0),a,d,e)}}),n.each({slideDown:Tb("show"),slideUp:Tb("hide"),slideToggle:Tb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(Lb=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),Lb=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Mb||(Mb=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(Mb),Mb=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=l.createElement("input"),b=l.createElement("select"),c=b.appendChild(l.createElement("option"));a.type="checkbox",k.checkOn=""!==a.value,k.optSelected=c.selected,b.disabled=!0,k.optDisabled=!c.disabled,a=l.createElement("input"),a.value="t",a.type="radio",k.radioValue="t"===a.value}();var Yb,Zb,$b=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return J(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Zb:Yb)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b)) -},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),Zb={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$b[b]||n.find.attr;$b[b]=function(a,b,d){var e,f;return d||(f=$b[b],$b[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$b[b]=f),e}});var _b=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute("tabindex")||_b.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ac=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||"string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ac," ").indexOf(b)>=0)return!0;return!1}});var bc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var cc=n.now(),dc=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(a){var b,c;if(!a||"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,"text/xml")}catch(d){b=void 0}return(!b||b.getElementsByTagName("parsererror").length)&&n.error("Invalid XML: "+a),b};var ec,fc,gc=/#.*$/,hc=/([?&])_=[^&]*/,ic=/^(.*?):[ \t]*([^\r\n]*)$/gm,jc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,kc=/^(?:GET|HEAD)$/,lc=/^\/\//,mc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,nc={},oc={},pc="*/".concat("*");try{fc=location.href}catch(qc){fc=l.createElement("a"),fc.href="",fc=fc.href}ec=mc.exec(fc.toLowerCase())||[];function rc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function sc(a,b,c,d){var e={},f=a===oc;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function tc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function uc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function vc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:fc,type:"GET",isLocal:jc.test(ec[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":pc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?tc(tc(a,n.ajaxSettings),b):tc(n.ajaxSettings,a)},ajaxPrefilter:rc(nc),ajaxTransport:rc(oc),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=ic.exec(e))f[b[1].toLowerCase()]=b[2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||fc)+"").replace(gc,"").replace(lc,ec[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=mc.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[1]===ec[1]&&h[2]===ec[2]&&(h[3]||("http:"===h[1]?"80":"443"))===(ec[3]||("http:"===ec[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),sc(nc,k,b,v),2===t)return v;i=k.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!kc.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(dc.test(d)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=hc.test(d)?d.replace(hc,"$1_="+cc++):d+(dc.test(d)?"&":"?")+"_="+cc++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader("If-Modified-Since",n.lastModified[d]),n.etag[d]&&v.setRequestHeader("If-None-Match",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+pc+"; q=0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(j in{success:1,error:1,complete:1})v[j](k[j]);if(c=sc(oc,k,b,v)){v.readyState=1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=uc(k,v,f)),u=vc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(n.etag[d]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var wc=/%20/g,xc=/\[\]$/,yc=/\r?\n/g,zc=/^(?:submit|button|image|reset|file)$/i,Ac=/^(?:input|select|textarea|keygen)/i;function Bc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||xc.test(a)?d(a,e):Bc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Bc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Bc(c,a[c],b,e);return d.join("&").replace(wc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Ac.test(this.nodeName)&&!zc.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(yc,"\r\n")}}):{name:b.name,value:c.replace(yc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Cc=0,Dc={},Ec={0:200,1223:204},Fc=n.ajaxSettings.xhr();a.ActiveXObject&&n(a).on("unload",function(){for(var a in Dc)Dc[a]()}),k.cors=!!Fc&&"withCredentials"in Fc,k.ajax=Fc=!!Fc,n.ajaxTransport(function(a){var b;return k.cors||Fc&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Cc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Dc[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Ec[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Dc[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n("<script>").prop({async:!0,charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&e("error"===a.type?404:200,a.type)}),l.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Gc=[],Hc=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Gc.pop()||n.expando+"_"+cc++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Hc.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Hc.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Hc,"$1"+e):b.jsonp!==!1&&(b.url+=(dc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Gc.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||l;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var Ic=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Ic)return Ic.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e,dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var Jc=a.document.documentElement;function Kc(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Kc(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Jc;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Jc})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(b,c){var d="pageYOffset"===c;n.fn[b]=function(e){return J(this,function(b,e,f){var g=Kc(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=yb(k.pixelPosition,function(a,c){return c?(c=xb(a,b),vb.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return J(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Lc=a.jQuery,Mc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Mc),b&&a.jQuery===n&&(a.jQuery=Lc),n},typeof b===U&&(a.jQuery=a.$=n),n}); \ No newline at end of file diff --git a/assets/js/jquery-ui-1.10.4.min.js b/assets/js/jquery-ui-1.10.4.min.js deleted file mode 100644 index d2da7b53..00000000 --- a/assets/js/jquery-ui-1.10.4.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-04-02 -* http://jqueryui.com -* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.position.js, jquery.ui.accordion.js, jquery.ui.autocomplete.js, jquery.ui.button.js, jquery.ui.datepicker.js, jquery.ui.dialog.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.effect.js, jquery.ui.effect-blind.js, jquery.ui.effect-bounce.js, jquery.ui.effect-clip.js, jquery.ui.effect-drop.js, jquery.ui.effect-explode.js, jquery.ui.effect-fade.js, jquery.ui.effect-fold.js, jquery.ui.effect-highlight.js, jquery.ui.effect-pulsate.js, jquery.ui.effect-scale.js, jquery.ui.effect-shake.js, jquery.ui.effect-slide.js, jquery.ui.effect-transfer.js, jquery.ui.menu.js, jquery.ui.progressbar.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.slider.js, jquery.ui.sortable.js, jquery.ui.spinner.js, jquery.ui.tabs.js, jquery.ui.tooltip.js -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ - -(function(e,t){function i(t,i){var s,a,o,r=t.nodeName.toLowerCase();return"area"===r?(s=t.parentNode,a=s.name,t.href&&a&&"map"===s.nodeName.toLowerCase()?(o=e("img[usemap=#"+a+"]")[0],!!o&&n(o)):!1):(/input|select|textarea|button|object/.test(r)?!t.disabled:"a"===r?t.href||i:i)&&n(t)}function n(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}var s=0,a=/^ui-id-\d+$/;e.ui=e.ui||{},e.extend(e.ui,{version:"1.10.4",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}}),e.fn.extend({focus:function(t){return function(i,n){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),n&&n.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),scrollParent:function(){var t;return t=e.ui.ie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(e.css(this,"position"))&&/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!t.length?e(document):t},zIndex:function(i){if(i!==t)return this.css("zIndex",i);if(this.length)for(var n,s,a=e(this[0]);a.length&&a[0]!==document;){if(n=a.css("position"),("absolute"===n||"relative"===n||"fixed"===n)&&(s=parseInt(a.css("zIndex"),10),!isNaN(s)&&0!==s))return s;a=a.parent()}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++s)})},removeUniqueId:function(){return this.each(function(){a.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,n){return!!e.data(t,n[3])},focusable:function(t){return i(t,!isNaN(e.attr(t,"tabindex")))},tabbable:function(t){var n=e.attr(t,"tabindex"),s=isNaN(n);return(s||n>=0)&&i(t,!s)}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(i,n){function s(t,i,n,s){return e.each(a,function(){i-=parseFloat(e.css(t,"padding"+this))||0,n&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),s&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var a="Width"===n?["Left","Right"]:["Top","Bottom"],o=n.toLowerCase(),r={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+n]=function(i){return i===t?r["inner"+n].call(this):this.each(function(){e(this).css(o,s(this,i)+"px")})},e.fn["outer"+n]=function(t,i){return"number"!=typeof t?r["outer"+n].call(this,t):this.each(function(){e(this).css(o,s(this,t,!0,i)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.support.selectstart="onselectstart"in document.createElement("div"),e.fn.extend({disableSelection:function(){return this.bind((e.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),e.extend(e.ui,{plugin:{add:function(t,i,n){var s,a=e.ui[t].prototype;for(s in n)a.plugins[s]=a.plugins[s]||[],a.plugins[s].push([i,n[s]])},call:function(e,t,i){var n,s=e.plugins[t];if(s&&e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType)for(n=0;s.length>n;n++)e.options[s[n][0]]&&s[n][1].apply(e.element,i)}},hasScroll:function(t,i){if("hidden"===e(t).css("overflow"))return!1;var n=i&&"left"===i?"scrollLeft":"scrollTop",s=!1;return t[n]>0?!0:(t[n]=1,s=t[n]>0,t[n]=0,s)}})})(jQuery);(function(t,e){var i=0,s=Array.prototype.slice,n=t.cleanData;t.cleanData=function(e){for(var i,s=0;null!=(i=e[s]);s++)try{t(i).triggerHandler("remove")}catch(o){}n(e)},t.widget=function(i,s,n){var o,a,r,h,l={},c=i.split(".")[0];i=i.split(".")[1],o=c+"-"+i,n||(n=s,s=t.Widget),t.expr[":"][o.toLowerCase()]=function(e){return!!t.data(e,o)},t[c]=t[c]||{},a=t[c][i],r=t[c][i]=function(t,i){return this._createWidget?(arguments.length&&this._createWidget(t,i),e):new r(t,i)},t.extend(r,a,{version:n.version,_proto:t.extend({},n),_childConstructors:[]}),h=new s,h.options=t.widget.extend({},h.options),t.each(n,function(i,n){return t.isFunction(n)?(l[i]=function(){var t=function(){return s.prototype[i].apply(this,arguments)},e=function(t){return s.prototype[i].apply(this,t)};return function(){var i,s=this._super,o=this._superApply;return this._super=t,this._superApply=e,i=n.apply(this,arguments),this._super=s,this._superApply=o,i}}(),e):(l[i]=n,e)}),r.prototype=t.widget.extend(h,{widgetEventPrefix:a?h.widgetEventPrefix||i:i},l,{constructor:r,namespace:c,widgetName:i,widgetFullName:o}),a?(t.each(a._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,r,i._proto)}),delete a._childConstructors):s._childConstructors.push(r),t.widget.bridge(i,r)},t.widget.extend=function(i){for(var n,o,a=s.call(arguments,1),r=0,h=a.length;h>r;r++)for(n in a[r])o=a[r][n],a[r].hasOwnProperty(n)&&o!==e&&(i[n]=t.isPlainObject(o)?t.isPlainObject(i[n])?t.widget.extend({},i[n],o):t.widget.extend({},o):o);return i},t.widget.bridge=function(i,n){var o=n.prototype.widgetFullName||i;t.fn[i]=function(a){var r="string"==typeof a,h=s.call(arguments,1),l=this;return a=!r&&h.length?t.widget.extend.apply(null,[a].concat(h)):a,r?this.each(function(){var s,n=t.data(this,o);return n?t.isFunction(n[a])&&"_"!==a.charAt(0)?(s=n[a].apply(n,h),s!==n&&s!==e?(l=s&&s.jquery?l.pushStack(s.get()):s,!1):e):t.error("no such method '"+a+"' for "+i+" widget instance"):t.error("cannot call methods on "+i+" prior to initialization; "+"attempted to call method '"+a+"'")}):this.each(function(){var e=t.data(this,o);e?e.option(a||{})._init():t.data(this,o,new n(a,this))}),l}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this.bindings=t(),this.hoverable=t(),this.focusable=t(),s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:t.noop,_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(t.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:t.noop,widget:function(){return this.element},option:function(i,s){var n,o,a,r=i;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof i)if(r={},n=i.split("."),i=n.shift(),n.length){for(o=r[i]=t.widget.extend({},this.options[i]),a=0;n.length-1>a;a++)o[n[a]]=o[n[a]]||{},o=o[n[a]];if(i=n.pop(),1===arguments.length)return o[i]===e?null:o[i];o[i]=s}else{if(1===arguments.length)return this.options[i]===e?null:this.options[i];r[i]=s}return this._setOptions(r),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return this.options[t]=e,"disabled"===t&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!e).attr("aria-disabled",e),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_on:function(i,s,n){var o,a=this;"boolean"!=typeof i&&(n=s,s=i,i=!1),n?(s=o=t(s),this.bindings=this.bindings.add(s)):(n=s,s=this.element,o=this.widget()),t.each(n,function(n,r){function h(){return i||a.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof r?a[r]:r).apply(a,arguments):e}"string"!=typeof r&&(h.guid=r.guid=r.guid||h.guid||t.guid++);var l=n.match(/^(\w+)\s*(.*)$/),c=l[1]+a.eventNamespace,u=l[2];u?o.delegate(u,c,h):s.bind(c,h)})},_off:function(t,e){e=(e||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(e).undelegate(e)},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){t(e.currentTarget).addClass("ui-state-hover")},mouseleave:function(e){t(e.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){t(e.currentTarget).addClass("ui-state-focus")},focusout:function(e){t(e.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}})})(jQuery);(function(t){var e=!1;t(document).mouseup(function(){e=!1}),t.widget("ui.mouse",{version:"1.10.4",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.bind("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).bind("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):undefined}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&t(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(i){if(!e){this._mouseStarted&&this._mouseUp(i),this._mouseDownEvent=i;var s=this,n=1===i.which,a="string"==typeof this.options.cancel&&i.target.nodeName?t(i.target).closest(this.options.cancel).length:!1;return n&&!a&&this._mouseCapture(i)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){s.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(i)&&this._mouseDelayMet(i)&&(this._mouseStarted=this._mouseStart(i)!==!1,!this._mouseStarted)?(i.preventDefault(),!0):(!0===t.data(i.target,this.widgetName+".preventClickEvent")&&t.removeData(i.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return s._mouseMove(t)},this._mouseUpDelegate=function(t){return s._mouseUp(t)},t(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),i.preventDefault(),e=!0,!0)):!0}},_mouseMove:function(e){return t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button?this._mouseUp(e):this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){return t(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),!1},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}})})(jQuery);(function(t,e){function i(t,e,i){return[parseFloat(t[0])*(p.test(t[0])?e/100:1),parseFloat(t[1])*(p.test(t[1])?i/100:1)]}function s(e,i){return parseInt(t.css(e,i),10)||0}function n(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}t.ui=t.ui||{};var a,o=Math.max,r=Math.abs,l=Math.round,h=/left|center|right/,c=/top|center|bottom/,u=/[\+\-]\d+(\.[\d]+)?%?/,d=/^\w+/,p=/%$/,f=t.fn.position;t.position={scrollbarWidth:function(){if(a!==e)return a;var i,s,n=t("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),o=n.children()[0];return t("body").append(n),i=o.offsetWidth,n.css("overflow","scroll"),s=o.offsetWidth,i===s&&(s=n[0].clientWidth),n.remove(),a=i-s},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.width<e.element[0].scrollWidth,a="scroll"===s||"auto"===s&&e.height<e.element[0].scrollHeight;return{width:a?t.position.scrollbarWidth():0,height:n?t.position.scrollbarWidth():0}},getWithinInfo:function(e){var i=t(e||window),s=t.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType;return{element:i,isWindow:s,isDocument:n,offset:i.offset()||{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:s?i.width():i.outerWidth(),height:s?i.height():i.outerHeight()}}},t.fn.position=function(e){if(!e||!e.of)return f.apply(this,arguments);e=t.extend({},e);var a,p,g,m,v,_,b=t(e.of),y=t.position.getWithinInfo(e.within),k=t.position.getScrollInfo(y),w=(e.collision||"flip").split(" "),D={};return _=n(b),b[0].preventDefault&&(e.at="left top"),p=_.width,g=_.height,m=_.offset,v=t.extend({},m),t.each(["my","at"],function(){var t,i,s=(e[this]||"").split(" ");1===s.length&&(s=h.test(s[0])?s.concat(["center"]):c.test(s[0])?["center"].concat(s):["center","center"]),s[0]=h.test(s[0])?s[0]:"center",s[1]=c.test(s[1])?s[1]:"center",t=u.exec(s[0]),i=u.exec(s[1]),D[this]=[t?t[0]:0,i?i[0]:0],e[this]=[d.exec(s[0])[0],d.exec(s[1])[0]]}),1===w.length&&(w[1]=w[0]),"right"===e.at[0]?v.left+=p:"center"===e.at[0]&&(v.left+=p/2),"bottom"===e.at[1]?v.top+=g:"center"===e.at[1]&&(v.top+=g/2),a=i(D.at,p,g),v.left+=a[0],v.top+=a[1],this.each(function(){var n,h,c=t(this),u=c.outerWidth(),d=c.outerHeight(),f=s(this,"marginLeft"),_=s(this,"marginTop"),x=u+f+s(this,"marginRight")+k.width,C=d+_+s(this,"marginBottom")+k.height,M=t.extend({},v),T=i(D.my,c.outerWidth(),c.outerHeight());"right"===e.my[0]?M.left-=u:"center"===e.my[0]&&(M.left-=u/2),"bottom"===e.my[1]?M.top-=d:"center"===e.my[1]&&(M.top-=d/2),M.left+=T[0],M.top+=T[1],t.support.offsetFractions||(M.left=l(M.left),M.top=l(M.top)),n={marginLeft:f,marginTop:_},t.each(["left","top"],function(i,s){t.ui.position[w[i]]&&t.ui.position[w[i]][s](M,{targetWidth:p,targetHeight:g,elemWidth:u,elemHeight:d,collisionPosition:n,collisionWidth:x,collisionHeight:C,offset:[a[0]+T[0],a[1]+T[1]],my:e.my,at:e.at,within:y,elem:c})}),e.using&&(h=function(t){var i=m.left-M.left,s=i+p-u,n=m.top-M.top,a=n+g-d,l={target:{element:b,left:m.left,top:m.top,width:p,height:g},element:{element:c,left:M.left,top:M.top,width:u,height:d},horizontal:0>s?"left":i>0?"right":"center",vertical:0>a?"top":n>0?"bottom":"middle"};u>p&&p>r(i+s)&&(l.horizontal="center"),d>g&&g>r(n+a)&&(l.vertical="middle"),l.important=o(r(i),r(s))>o(r(n),r(a))?"horizontal":"vertical",e.using.call(this,t,l)}),c.offset(t.extend(M,{using:h}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,l=n-r,h=r+e.collisionWidth-a-n;e.collisionWidth>a?l>0&&0>=h?(i=t.left+l+e.collisionWidth-a-n,t.left+=l-i):t.left=h>0&&0>=l?n:l>h?n+a-e.collisionWidth:n:l>0?t.left+=l:h>0?t.left-=h:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,l=n-r,h=r+e.collisionHeight-a-n;e.collisionHeight>a?l>0&&0>=h?(i=t.top+l+e.collisionHeight-a-n,t.top+=l-i):t.top=h>0&&0>=l?n:l>h?n+a-e.collisionHeight:n:l>0?t.top+=l:h>0?t.top-=h:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,a=n.offset.left+n.scrollLeft,o=n.width,l=n.isWindow?n.scrollLeft:n.offset.left,h=t.left-e.collisionPosition.marginLeft,c=h-l,u=h+e.collisionWidth-o-l,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-o-a,(0>i||r(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-l,(s>0||u>r(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,a=n.offset.top+n.scrollTop,o=n.height,l=n.isWindow?n.scrollTop:n.offset.top,h=t.top-e.collisionPosition.marginTop,c=h-l,u=h+e.collisionHeight-o-l,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-o-a,t.top+p+f+g>c&&(0>s||r(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-l,t.top+p+f+g>u&&(i>0||u>r(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}},function(){var e,i,s,n,a,o=document.getElementsByTagName("body")[0],r=document.createElement("div");e=document.createElement(o?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},o&&t.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(a in s)e.style[a]=s[a];e.appendChild(r),i=o||document.documentElement,i.insertBefore(e,i.firstChild),r.style.cssText="position: absolute; left: 10.7432222px;",n=t(r).offset().left,t.support.offsetFractions=n>10&&11>n,e.innerHTML="",i.removeChild(e)}()})(jQuery);(function(e){var t=0,i={},a={};i.height=i.paddingTop=i.paddingBottom=i.borderTopWidth=i.borderBottomWidth="hide",a.height=a.paddingTop=a.paddingBottom=a.borderTopWidth=a.borderBottomWidth="show",e.widget("ui.accordion",{version:"1.10.4",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},_create:function(){var t=this.options;this.prevShow=this.prevHide=e(),this.element.addClass("ui-accordion ui-widget ui-helper-reset").attr("role","tablist"),t.collapsible||t.active!==!1&&null!=t.active||(t.active=0),this._processPanels(),0>t.active&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():e(),content:this.active.length?this.active.next():e()}},_createIcons:function(){var t=this.options.icons;t&&(e("<span>").addClass("ui-accordion-header-icon ui-icon "+t.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(t.header).addClass(t.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),this._destroyIcons(),e=this.headers.next().css("display","").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),"content"!==this.options.heightStyle&&e.css("height","")},_setOption:function(e,t){return"active"===e?(this._activate(t),undefined):("event"===e&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),"collapsible"!==e||t||this.options.active!==!1||this._activate(0),"icons"===e&&(this._destroyIcons(),t&&this._createIcons()),"disabled"===e&&this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!t),undefined)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var i=e.ui.keyCode,a=this.headers.length,s=this.headers.index(t.target),n=!1;switch(t.keyCode){case i.RIGHT:case i.DOWN:n=this.headers[(s+1)%a];break;case i.LEFT:case i.UP:n=this.headers[(s-1+a)%a];break;case i.SPACE:case i.ENTER:this._eventHandler(t);break;case i.HOME:n=this.headers[0];break;case i.END:n=this.headers[a-1]}n&&(e(t.target).attr("tabIndex",-1),e(n).attr("tabIndex",0),n.focus(),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===e.ui.keyCode.UP&&t.ctrlKey&&e(t.currentTarget).prev().focus()},refresh:function(){var t=this.options;this._processPanels(),t.active===!1&&t.collapsible===!0||!this.headers.length?(t.active=!1,this.active=e()):t.active===!1?this._activate(0):this.active.length&&!e.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=e()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){this.headers=this.element.find(this.options.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all"),this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").filter(":not(.ui-accordion-content-active)").hide()},_refresh:function(){var i,a=this.options,s=a.heightStyle,n=this.element.parent(),r=this.accordionId="ui-accordion-"+(this.element.attr("id")||++t);this.active=this._findActive(a.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(t){var i=e(this),a=i.attr("id"),s=i.next(),n=s.attr("id");a||(a=r+"-header-"+t,i.attr("id",a)),n||(n=r+"-panel-"+t,s.attr("id",n)),i.attr("aria-controls",n),s.attr("aria-labelledby",a)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(a.event),"fill"===s?(i=n.height(),this.element.siblings(":visible").each(function(){var t=e(this),a=t.css("position");"absolute"!==a&&"fixed"!==a&&(i-=t.outerHeight(!0))}),this.headers.each(function(){i-=e(this).outerHeight(!0)}),this.headers.next().each(function(){e(this).height(Math.max(0,i-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===s&&(i=0,this.headers.next().each(function(){i=Math.max(i,e(this).css("height","").height())}).height(i))},_activate:function(t){var i=this._findActive(t)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):e()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&e.each(t.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var i=this.options,a=this.active,s=e(t.currentTarget),n=s[0]===a[0],r=n&&i.collapsible,o=r?e():s.next(),h=a.next(),d={oldHeader:a,oldPanel:h,newHeader:r?e():s,newPanel:o};t.preventDefault(),n&&!i.collapsible||this._trigger("beforeActivate",t,d)===!1||(i.active=r?!1:this.headers.index(s),this.active=n?e():s,this._toggle(d),a.removeClass("ui-accordion-header-active ui-state-active"),i.icons&&a.children(".ui-accordion-header-icon").removeClass(i.icons.activeHeader).addClass(i.icons.header),n||(s.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),i.icons&&s.children(".ui-accordion-header-icon").removeClass(i.icons.header).addClass(i.icons.activeHeader),s.next().addClass("ui-accordion-content-active")))},_toggle:function(t){var i=t.newPanel,a=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=a,this.options.animate?this._animate(i,a,t):(a.hide(),i.show(),this._toggleComplete(t)),a.attr({"aria-hidden":"true"}),a.prev().attr("aria-selected","false"),i.length&&a.length?a.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===e(this).attr("tabIndex")}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true",tabIndex:0,"aria-expanded":"true"})},_animate:function(e,t,s){var n,r,o,h=this,d=0,c=e.length&&(!t.length||e.index()<t.index()),l=this.options.animate||{},u=c&&l.down||l,v=function(){h._toggleComplete(s)};return"number"==typeof u&&(o=u),"string"==typeof u&&(r=u),r=r||u.easing||l.easing,o=o||u.duration||l.duration,t.length?e.length?(n=e.show().outerHeight(),t.animate(i,{duration:o,easing:r,step:function(e,t){t.now=Math.round(e)}}),e.hide().animate(a,{duration:o,easing:r,complete:v,step:function(e,i){i.now=Math.round(e),"height"!==i.prop?d+=i.now:"content"!==h.options.heightStyle&&(i.now=Math.round(n-t.outerHeight()-d),d=0)}}),undefined):t.animate(i,o,r,v):e.animate(a,o,r,v)},_toggleComplete:function(e){var t=e.oldPanel;t.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"),t.length&&(t.parent()[0].className=t.parent()[0].className),this._trigger("activate",null,e)}})})(jQuery);(function(e){e.widget("ui.autocomplete",{version:"1.10.4",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var t,i,s,n=this.element[0].nodeName.toLowerCase(),a="textarea"===n,o="input"===n;this.isMultiLine=a?!0:o?!1:this.element.prop("isContentEditable"),this.valueMethod=this.element[a||o?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return t=!0,s=!0,i=!0,undefined;t=!1,s=!1,i=!1;var a=e.ui.keyCode;switch(n.keyCode){case a.PAGE_UP:t=!0,this._move("previousPage",n);break;case a.PAGE_DOWN:t=!0,this._move("nextPage",n);break;case a.UP:t=!0,this._keyEvent("previous",n);break;case a.DOWN:t=!0,this._keyEvent("next",n);break;case a.ENTER:case a.NUMPAD_ENTER:this.menu.active&&(t=!0,n.preventDefault(),this.menu.select(n));break;case a.TAB:this.menu.active&&this.menu.select(n);break;case a.ESCAPE:this.menu.element.is(":visible")&&(this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(t)return t=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),undefined;if(!i){var n=e.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(e){return s?(s=!1,e.preventDefault(),undefined):(this._searchTimeout(e),undefined)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,undefined):(clearTimeout(this.searching),this.close(e),this._change(e),undefined)}}),this._initSource(),this.menu=e("<ul>").addClass("ui-autocomplete ui-front").appendTo(this._appendTo()).menu({role:null}).hide().data("ui-menu"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var i=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(s){s.target===t.element[0]||s.target===i||e.contains(i,s.target)||t.close()})})},menufocus:function(t,i){if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)}),undefined;var s=i.item.data("ui-autocomplete-item");!1!==this._trigger("focus",t,{item:s})?t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value):this.liveRegion.text(s.value)},menuselect:function(e,t){var i=t.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",e,{item:i})&&this._value(i.value),this.term=this._value(),this.close(e),this.selectedItem=i}}),this.liveRegion=e("<span>",{role:"status","aria-live":"polite"}).addClass("ui-helper-hidden-accessible").insertBefore(this.element),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),"source"===e&&this._initSource(),"appendTo"===e&&this.menu.element.appendTo(this._appendTo()),"disabled"===e&&t&&this.xhr&&this.xhr.abort()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_initSource:function(){var t,i,s=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(i,s){s(e.ui.autocomplete.filter(t,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(t,n){s.xhr&&s.xhr.abort(),s.xhr=e.ajax({url:i,data:t,dataType:"json",success:function(e){n(e)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){this.term!==this._value()&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){return e=null!=e?e:this._value(),this.term=this._value(),e.length<this.options.minLength?this.close(t):this._trigger("search",t)!==!1?this._search(e):undefined},_search:function(e){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var t=++this.requestIndex;return e.proxy(function(e){t===this.requestIndex&&this.__response(e),this.pending--,this.pending||this.element.removeClass("ui-autocomplete-loading")},this)},__response:function(e){e&&(e=this._normalize(e)),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:e.map(t,function(t){return"string"==typeof t?{label:t,value:t}:e.extend({label:t.label||t.value,value:t.value||t.label},t)})},_suggest:function(t){var i=this.menu.element.empty();this._renderMenu(i,t),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(e.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(t,i){var s=this;e.each(i,function(e,i){s._renderItemData(t,i)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,i){return e("<li>").append(e("<a>").text(i.label)).appendTo(t)},_move:function(e,t){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)?(this._value(this.term),this.menu.blur(),undefined):(this.menu[e](t),undefined):(this.search(null,t),undefined)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(e,t),t.preventDefault())}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,i){var s=RegExp(e.ui.autocomplete.escapeRegex(i),"i");return e.grep(t,function(e){return s.test(e.label||e.value||e)})}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var t;this._superApply(arguments),this.options.disabled||this.cancelSearch||(t=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.text(t))}})})(jQuery);(function(e){var t,i="ui-button ui-widget ui-state-default ui-corner-all",n="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",s=function(){var t=e(this);setTimeout(function(){t.find(":ui-button").button("refresh")},1)},a=function(t){var i=t.name,n=t.form,s=e([]);return i&&(i=i.replace(/'/g,"\\'"),s=n?e(n).find("[name='"+i+"']"):e("[name='"+i+"']",t.ownerDocument).filter(function(){return!this.form})),s};e.widget("ui.button",{version:"1.10.4",defaultElement:"<button>",options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset"+this.eventNamespace).bind("reset"+this.eventNamespace,s),"boolean"!=typeof this.options.disabled?this.options.disabled=!!this.element.prop("disabled"):this.element.prop("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var n=this,o=this.options,r="checkbox"===this.type||"radio"===this.type,h=r?"":"ui-state-active";null===o.label&&(o.label="input"===this.type?this.buttonElement.val():this.buttonElement.html()),this._hoverable(this.buttonElement),this.buttonElement.addClass(i).attr("role","button").bind("mouseenter"+this.eventNamespace,function(){o.disabled||this===t&&e(this).addClass("ui-state-active")}).bind("mouseleave"+this.eventNamespace,function(){o.disabled||e(this).removeClass(h)}).bind("click"+this.eventNamespace,function(e){o.disabled&&(e.preventDefault(),e.stopImmediatePropagation())}),this._on({focus:function(){this.buttonElement.addClass("ui-state-focus")},blur:function(){this.buttonElement.removeClass("ui-state-focus")}}),r&&this.element.bind("change"+this.eventNamespace,function(){n.refresh()}),"checkbox"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){return o.disabled?!1:undefined}):"radio"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){if(o.disabled)return!1;e(this).addClass("ui-state-active"),n.buttonElement.attr("aria-pressed","true");var t=n.element[0];a(t).not(t).map(function(){return e(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown"+this.eventNamespace,function(){return o.disabled?!1:(e(this).addClass("ui-state-active"),t=this,n.document.one("mouseup",function(){t=null}),undefined)}).bind("mouseup"+this.eventNamespace,function(){return o.disabled?!1:(e(this).removeClass("ui-state-active"),undefined)}).bind("keydown"+this.eventNamespace,function(t){return o.disabled?!1:((t.keyCode===e.ui.keyCode.SPACE||t.keyCode===e.ui.keyCode.ENTER)&&e(this).addClass("ui-state-active"),undefined)}).bind("keyup"+this.eventNamespace+" blur"+this.eventNamespace,function(){e(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(t){t.keyCode===e.ui.keyCode.SPACE&&e(this).click()})),this._setOption("disabled",o.disabled),this._resetButton()},_determineButtonType:function(){var e,t,i;this.type=this.element.is("[type=checkbox]")?"checkbox":this.element.is("[type=radio]")?"radio":this.element.is("input")?"input":"button","checkbox"===this.type||"radio"===this.type?(e=this.element.parents().last(),t="label[for='"+this.element.attr("id")+"']",this.buttonElement=e.find(t),this.buttonElement.length||(e=e.length?e.siblings():this.element.siblings(),this.buttonElement=e.filter(t),this.buttonElement.length||(this.buttonElement=e.find(t))),this.element.addClass("ui-helper-hidden-accessible"),i=this.element.is(":checked"),i&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.prop("aria-pressed",i)):this.buttonElement=this.element},widget:function(){return this.buttonElement},_destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(i+" ui-state-active "+n).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title")},_setOption:function(e,t){return this._super(e,t),"disabled"===e?(this.element.prop("disabled",!!t),t&&this.buttonElement.removeClass("ui-state-focus"),undefined):(this._resetButton(),undefined)},refresh:function(){var t=this.element.is("input, button")?this.element.is(":disabled"):this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOption("disabled",t),"radio"===this.type?a(this.element[0]).each(function(){e(this).is(":checked")?e(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):e(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):"checkbox"===this.type&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if("input"===this.type)return this.options.label&&this.element.val(this.options.label),undefined;var t=this.buttonElement.removeClass(n),i=e("<span></span>",this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(t.empty()).text(),s=this.options.icons,a=s.primary&&s.secondary,o=[];s.primary||s.secondary?(this.options.text&&o.push("ui-button-text-icon"+(a?"s":s.primary?"-primary":"-secondary")),s.primary&&t.prepend("<span class='ui-button-icon-primary ui-icon "+s.primary+"'></span>"),s.secondary&&t.append("<span class='ui-button-icon-secondary ui-icon "+s.secondary+"'></span>"),this.options.text||(o.push(a?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||t.attr("title",e.trim(i)))):o.push("ui-button-text-only"),t.addClass(o.join(" "))}}),e.widget("ui.buttonset",{version:"1.10.4",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(e,t){"disabled"===e&&this.buttons.button("option",e,t),this._super(e,t)},refresh:function(){var t="rtl"===this.element.css("direction");this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(t?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(t?"ui-corner-left":"ui-corner-right").end().end()},_destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy")}})})(jQuery);(function(e,t){function i(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},e.extend(this._defaults,this.regional[""]),this.dpDiv=a(e("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function a(t){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.delegate(i,"mouseout",function(){e(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).removeClass("ui-datepicker-next-hover")}).delegate(i,"mouseover",function(){e.datepicker._isDisabledDatepicker(n.inline?t.parent()[0]:n.input[0])||(e(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),e(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).addClass("ui-datepicker-next-hover"))})}function s(t,i){e.extend(t,i);for(var a in i)null==i[a]&&(t[a]=i[a]);return t}e.extend(e.ui,{datepicker:{version:"1.10.4"}});var n,r="datepicker";e.extend(i.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return s(this._defaults,e||{}),this},_attachDatepicker:function(t,i){var a,s,n;a=t.nodeName.toLowerCase(),s="div"===a||"span"===a,t.id||(this.uuid+=1,t.id="dp"+this.uuid),n=this._newInst(e(t),s),n.settings=e.extend({},i||{}),"input"===a?this._connectDatepicker(t,n):s&&this._inlineDatepicker(t,n)},_newInst:function(t,i){var s=t[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:s,input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?a(e("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(t,i){var a=e(t);i.append=e([]),i.trigger=e([]),a.hasClass(this.markerClassName)||(this._attachments(a,i),a.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp),this._autoSize(i),e.data(t,r,i),i.settings.disabled&&this._disableDatepicker(t))},_attachments:function(t,i){var a,s,n,r=this._get(i,"appendText"),o=this._get(i,"isRTL");i.append&&i.append.remove(),r&&(i.append=e("<span class='"+this._appendClass+"'>"+r+"</span>"),t[o?"before":"after"](i.append)),t.unbind("focus",this._showDatepicker),i.trigger&&i.trigger.remove(),a=this._get(i,"showOn"),("focus"===a||"both"===a)&&t.focus(this._showDatepicker),("button"===a||"both"===a)&&(s=this._get(i,"buttonText"),n=this._get(i,"buttonImage"),i.trigger=e(this._get(i,"buttonImageOnly")?e("<img/>").addClass(this._triggerClass).attr({src:n,alt:s,title:s}):e("<button type='button'></button>").addClass(this._triggerClass).html(n?e("<img/>").attr({src:n,alt:s,title:s}):s)),t[o?"before":"after"](i.trigger),i.trigger.click(function(){return e.datepicker._datepickerShowing&&e.datepicker._lastInput===t[0]?e.datepicker._hideDatepicker():e.datepicker._datepickerShowing&&e.datepicker._lastInput!==t[0]?(e.datepicker._hideDatepicker(),e.datepicker._showDatepicker(t[0])):e.datepicker._showDatepicker(t[0]),!1}))},_autoSize:function(e){if(this._get(e,"autoSize")&&!e.inline){var t,i,a,s,n=new Date(2009,11,20),r=this._get(e,"dateFormat");r.match(/[DM]/)&&(t=function(e){for(i=0,a=0,s=0;e.length>s;s++)e[s].length>i&&(i=e[s].length,a=s);return a},n.setMonth(t(this._get(e,r.match(/MM/)?"monthNames":"monthNamesShort"))),n.setDate(t(this._get(e,r.match(/DD/)?"dayNames":"dayNamesShort"))+20-n.getDay())),e.input.attr("size",this._formatDate(e,n).length)}},_inlineDatepicker:function(t,i){var a=e(t);a.hasClass(this.markerClassName)||(a.addClass(this.markerClassName).append(i.dpDiv),e.data(t,r,i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(t),i.dpDiv.css("display","block"))},_dialogDatepicker:function(t,i,a,n,o){var u,c,h,l,d,p=this._dialogInst;return p||(this.uuid+=1,u="dp"+this.uuid,this._dialogInput=e("<input type='text' id='"+u+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.keydown(this._doKeyDown),e("body").append(this._dialogInput),p=this._dialogInst=this._newInst(this._dialogInput,!1),p.settings={},e.data(this._dialogInput[0],r,p)),s(p.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(p,i):i,this._dialogInput.val(i),this._pos=o?o.length?o:[o.pageX,o.pageY]:null,this._pos||(c=document.documentElement.clientWidth,h=document.documentElement.clientHeight,l=document.documentElement.scrollLeft||document.body.scrollLeft,d=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[c/2-100+l,h/2-150+d]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),p.settings.onSelect=a,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),e.blockUI&&e.blockUI(this.dpDiv),e.data(this._dialogInput[0],r,p),this},_destroyDatepicker:function(t){var i,a=e(t),s=e.data(t,r);a.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),e.removeData(t,r),"input"===i?(s.append.remove(),s.trigger.remove(),a.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):("div"===i||"span"===i)&&a.removeClass(this.markerClassName).empty())},_enableDatepicker:function(t){var i,a,s=e(t),n=e.data(t,r);s.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.disabled=!1,n.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(a=s.children("."+this._inlineClass),a.children().removeClass("ui-state-disabled"),a.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}))},_disableDatepicker:function(t){var i,a,s=e(t),n=e.data(t,r);s.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.disabled=!0,n.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(a=s.children("."+this._inlineClass),a.children().addClass("ui-state-disabled"),a.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}),this._disabledInputs[this._disabledInputs.length]=t)},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;this._disabledInputs.length>t;t++)if(this._disabledInputs[t]===e)return!0;return!1},_getInst:function(t){try{return e.data(t,r)}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(i,a,n){var r,o,u,c,h=this._getInst(i);return 2===arguments.length&&"string"==typeof a?"defaults"===a?e.extend({},e.datepicker._defaults):h?"all"===a?e.extend({},h.settings):this._get(h,a):null:(r=a||{},"string"==typeof a&&(r={},r[a]=n),h&&(this._curInst===h&&this._hideDatepicker(),o=this._getDateDatepicker(i,!0),u=this._getMinMaxDate(h,"min"),c=this._getMinMaxDate(h,"max"),s(h.settings,r),null!==u&&r.dateFormat!==t&&r.minDate===t&&(h.settings.minDate=this._formatDate(h,u)),null!==c&&r.dateFormat!==t&&r.maxDate===t&&(h.settings.maxDate=this._formatDate(h,c)),"disabled"in r&&(r.disabled?this._disableDatepicker(i):this._enableDatepicker(i)),this._attachments(e(i),h),this._autoSize(h),this._setDate(h,o),this._updateAlternate(h),this._updateDatepicker(h)),t)},_changeDatepicker:function(e,t,i){this._optionDatepicker(e,t,i)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var i=this._getInst(e);i&&(this._setDate(i,t),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(e,t){var i=this._getInst(e);return i&&!i.inline&&this._setDateFromField(i,t),i?this._getDate(i):null},_doKeyDown:function(t){var i,a,s,n=e.datepicker._getInst(t.target),r=!0,o=n.dpDiv.is(".ui-datepicker-rtl");if(n._keyEvent=!0,e.datepicker._datepickerShowing)switch(t.keyCode){case 9:e.datepicker._hideDatepicker(),r=!1;break;case 13:return s=e("td."+e.datepicker._dayOverClass+":not(."+e.datepicker._currentClass+")",n.dpDiv),s[0]&&e.datepicker._selectDay(t.target,n.selectedMonth,n.selectedYear,s[0]),i=e.datepicker._get(n,"onSelect"),i?(a=e.datepicker._formatDate(n),i.apply(n.input?n.input[0]:null,[a,n])):e.datepicker._hideDatepicker(),!1;case 27:e.datepicker._hideDatepicker();break;case 33:e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(n,"stepBigMonths"):-e.datepicker._get(n,"stepMonths"),"M");break;case 34:e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(n,"stepBigMonths"):+e.datepicker._get(n,"stepMonths"),"M");break;case 35:(t.ctrlKey||t.metaKey)&&e.datepicker._clearDate(t.target),r=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&e.datepicker._gotoToday(t.target),r=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,o?1:-1,"D"),r=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(n,"stepBigMonths"):-e.datepicker._get(n,"stepMonths"),"M");break;case 38:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,-7,"D"),r=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,o?-1:1,"D"),r=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(n,"stepBigMonths"):+e.datepicker._get(n,"stepMonths"),"M");break;case 40:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,7,"D"),r=t.ctrlKey||t.metaKey;break;default:r=!1}else 36===t.keyCode&&t.ctrlKey?e.datepicker._showDatepicker(this):r=!1;r&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(i){var a,s,n=e.datepicker._getInst(i.target);return e.datepicker._get(n,"constrainInput")?(a=e.datepicker._possibleChars(e.datepicker._get(n,"dateFormat")),s=String.fromCharCode(null==i.charCode?i.keyCode:i.charCode),i.ctrlKey||i.metaKey||" ">s||!a||a.indexOf(s)>-1):t},_doKeyUp:function(t){var i,a=e.datepicker._getInst(t.target);if(a.input.val()!==a.lastVal)try{i=e.datepicker.parseDate(e.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,e.datepicker._getFormatConfig(a)),i&&(e.datepicker._setDateFromField(a),e.datepicker._updateAlternate(a),e.datepicker._updateDatepicker(a))}catch(s){}return!0},_showDatepicker:function(t){if(t=t.target||t,"input"!==t.nodeName.toLowerCase()&&(t=e("input",t.parentNode)[0]),!e.datepicker._isDisabledDatepicker(t)&&e.datepicker._lastInput!==t){var i,a,n,r,o,u,c;i=e.datepicker._getInst(t),e.datepicker._curInst&&e.datepicker._curInst!==i&&(e.datepicker._curInst.dpDiv.stop(!0,!0),i&&e.datepicker._datepickerShowing&&e.datepicker._hideDatepicker(e.datepicker._curInst.input[0])),a=e.datepicker._get(i,"beforeShow"),n=a?a.apply(t,[t,i]):{},n!==!1&&(s(i.settings,n),i.lastVal=null,e.datepicker._lastInput=t,e.datepicker._setDateFromField(i),e.datepicker._inDialog&&(t.value=""),e.datepicker._pos||(e.datepicker._pos=e.datepicker._findPos(t),e.datepicker._pos[1]+=t.offsetHeight),r=!1,e(t).parents().each(function(){return r|="fixed"===e(this).css("position"),!r}),o={left:e.datepicker._pos[0],top:e.datepicker._pos[1]},e.datepicker._pos=null,i.dpDiv.empty(),i.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),e.datepicker._updateDatepicker(i),o=e.datepicker._checkOffset(i,o,r),i.dpDiv.css({position:e.datepicker._inDialog&&e.blockUI?"static":r?"fixed":"absolute",display:"none",left:o.left+"px",top:o.top+"px"}),i.inline||(u=e.datepicker._get(i,"showAnim"),c=e.datepicker._get(i,"duration"),i.dpDiv.zIndex(e(t).zIndex()+1),e.datepicker._datepickerShowing=!0,e.effects&&e.effects.effect[u]?i.dpDiv.show(u,e.datepicker._get(i,"showOptions"),c):i.dpDiv[u||"show"](u?c:null),e.datepicker._shouldFocusInput(i)&&i.input.focus(),e.datepicker._curInst=i))}},_updateDatepicker:function(t){this.maxRows=4,n=t,t.dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t),t.dpDiv.find("."+this._dayOverClass+" a").mouseover();var i,a=this._getNumberOfMonths(t),s=a[1],r=17;t.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),s>1&&t.dpDiv.addClass("ui-datepicker-multi-"+s).css("width",r*s+"em"),t.dpDiv[(1!==a[0]||1!==a[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),t.dpDiv[(this._get(t,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),t===e.datepicker._curInst&&e.datepicker._datepickerShowing&&e.datepicker._shouldFocusInput(t)&&t.input.focus(),t.yearshtml&&(i=t.yearshtml,setTimeout(function(){i===t.yearshtml&&t.yearshtml&&t.dpDiv.find("select.ui-datepicker-year:first").replaceWith(t.yearshtml),i=t.yearshtml=null},0))},_shouldFocusInput:function(e){return e.input&&e.input.is(":visible")&&!e.input.is(":disabled")&&!e.input.is(":focus")},_checkOffset:function(t,i,a){var s=t.dpDiv.outerWidth(),n=t.dpDiv.outerHeight(),r=t.input?t.input.outerWidth():0,o=t.input?t.input.outerHeight():0,u=document.documentElement.clientWidth+(a?0:e(document).scrollLeft()),c=document.documentElement.clientHeight+(a?0:e(document).scrollTop());return i.left-=this._get(t,"isRTL")?s-r:0,i.left-=a&&i.left===t.input.offset().left?e(document).scrollLeft():0,i.top-=a&&i.top===t.input.offset().top+o?e(document).scrollTop():0,i.left-=Math.min(i.left,i.left+s>u&&u>s?Math.abs(i.left+s-u):0),i.top-=Math.min(i.top,i.top+n>c&&c>n?Math.abs(n+o):0),i},_findPos:function(t){for(var i,a=this._getInst(t),s=this._get(a,"isRTL");t&&("hidden"===t.type||1!==t.nodeType||e.expr.filters.hidden(t));)t=t[s?"previousSibling":"nextSibling"];return i=e(t).offset(),[i.left,i.top]},_hideDatepicker:function(t){var i,a,s,n,o=this._curInst;!o||t&&o!==e.data(t,r)||this._datepickerShowing&&(i=this._get(o,"showAnim"),a=this._get(o,"duration"),s=function(){e.datepicker._tidyDialog(o)},e.effects&&(e.effects.effect[i]||e.effects[i])?o.dpDiv.hide(i,e.datepicker._get(o,"showOptions"),a,s):o.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?a:null,s),i||s(),this._datepickerShowing=!1,n=this._get(o,"onClose"),n&&n.apply(o.input?o.input[0]:null,[o.input?o.input.val():"",o]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),e.blockUI&&(e.unblockUI(),e("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(t){if(e.datepicker._curInst){var i=e(t.target),a=e.datepicker._getInst(i[0]);(i[0].id!==e.datepicker._mainDivId&&0===i.parents("#"+e.datepicker._mainDivId).length&&!i.hasClass(e.datepicker.markerClassName)&&!i.closest("."+e.datepicker._triggerClass).length&&e.datepicker._datepickerShowing&&(!e.datepicker._inDialog||!e.blockUI)||i.hasClass(e.datepicker.markerClassName)&&e.datepicker._curInst!==a)&&e.datepicker._hideDatepicker()}},_adjustDate:function(t,i,a){var s=e(t),n=this._getInst(s[0]);this._isDisabledDatepicker(s[0])||(this._adjustInstDate(n,i+("M"===a?this._get(n,"showCurrentAtPos"):0),a),this._updateDatepicker(n))},_gotoToday:function(t){var i,a=e(t),s=this._getInst(a[0]);this._get(s,"gotoCurrent")&&s.currentDay?(s.selectedDay=s.currentDay,s.drawMonth=s.selectedMonth=s.currentMonth,s.drawYear=s.selectedYear=s.currentYear):(i=new Date,s.selectedDay=i.getDate(),s.drawMonth=s.selectedMonth=i.getMonth(),s.drawYear=s.selectedYear=i.getFullYear()),this._notifyChange(s),this._adjustDate(a)},_selectMonthYear:function(t,i,a){var s=e(t),n=this._getInst(s[0]);n["selected"+("M"===a?"Month":"Year")]=n["draw"+("M"===a?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(n),this._adjustDate(s)},_selectDay:function(t,i,a,s){var n,r=e(t);e(s).hasClass(this._unselectableClass)||this._isDisabledDatepicker(r[0])||(n=this._getInst(r[0]),n.selectedDay=n.currentDay=e("a",s).html(),n.selectedMonth=n.currentMonth=i,n.selectedYear=n.currentYear=a,this._selectDate(t,this._formatDate(n,n.currentDay,n.currentMonth,n.currentYear)))},_clearDate:function(t){var i=e(t);this._selectDate(i,"")},_selectDate:function(t,i){var a,s=e(t),n=this._getInst(s[0]);i=null!=i?i:this._formatDate(n),n.input&&n.input.val(i),this._updateAlternate(n),a=this._get(n,"onSelect"),a?a.apply(n.input?n.input[0]:null,[i,n]):n.input&&n.input.trigger("change"),n.inline?this._updateDatepicker(n):(this._hideDatepicker(),this._lastInput=n.input[0],"object"!=typeof n.input[0]&&n.input.focus(),this._lastInput=null)},_updateAlternate:function(t){var i,a,s,n=this._get(t,"altField");n&&(i=this._get(t,"altFormat")||this._get(t,"dateFormat"),a=this._getDate(t),s=this.formatDate(i,a,this._getFormatConfig(t)),e(n).each(function(){e(this).val(s)}))},noWeekends:function(e){var t=e.getDay();return[t>0&&6>t,""]},iso8601Week:function(e){var t,i=new Date(e.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),t=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((t-i)/864e5)/7)+1},parseDate:function(i,a,s){if(null==i||null==a)throw"Invalid arguments";if(a="object"==typeof a?""+a:a+"",""===a)return null;var n,r,o,u,c=0,h=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,l="string"!=typeof h?h:(new Date).getFullYear()%100+parseInt(h,10),d=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,p=(s?s.dayNames:null)||this._defaults.dayNames,g=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,m=(s?s.monthNames:null)||this._defaults.monthNames,f=-1,_=-1,v=-1,k=-1,y=!1,b=function(e){var t=i.length>n+1&&i.charAt(n+1)===e;return t&&n++,t},D=function(e){var t=b(e),i="@"===e?14:"!"===e?20:"y"===e&&t?4:"o"===e?3:2,s=RegExp("^\\d{1,"+i+"}"),n=a.substring(c).match(s);if(!n)throw"Missing number at position "+c;return c+=n[0].length,parseInt(n[0],10)},w=function(i,s,n){var r=-1,o=e.map(b(i)?n:s,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)});if(e.each(o,function(e,i){var s=i[1];return a.substr(c,s.length).toLowerCase()===s.toLowerCase()?(r=i[0],c+=s.length,!1):t}),-1!==r)return r+1;throw"Unknown name at position "+c},M=function(){if(a.charAt(c)!==i.charAt(n))throw"Unexpected literal at position "+c;c++};for(n=0;i.length>n;n++)if(y)"'"!==i.charAt(n)||b("'")?M():y=!1;else switch(i.charAt(n)){case"d":v=D("d");break;case"D":w("D",d,p);break;case"o":k=D("o");break;case"m":_=D("m");break;case"M":_=w("M",g,m);break;case"y":f=D("y");break;case"@":u=new Date(D("@")),f=u.getFullYear(),_=u.getMonth()+1,v=u.getDate();break;case"!":u=new Date((D("!")-this._ticksTo1970)/1e4),f=u.getFullYear(),_=u.getMonth()+1,v=u.getDate();break;case"'":b("'")?M():y=!0;break;default:M()}if(a.length>c&&(o=a.substr(c),!/^\s+/.test(o)))throw"Extra/unparsed characters found in date: "+o;if(-1===f?f=(new Date).getFullYear():100>f&&(f+=(new Date).getFullYear()-(new Date).getFullYear()%100+(l>=f?0:-100)),k>-1)for(_=1,v=k;;){if(r=this._getDaysInMonth(f,_-1),r>=v)break;_++,v-=r}if(u=this._daylightSavingAdjust(new Date(f,_-1,v)),u.getFullYear()!==f||u.getMonth()+1!==_||u.getDate()!==v)throw"Invalid date";return u},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(e,t,i){if(!t)return"";var a,s=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,n=(i?i.dayNames:null)||this._defaults.dayNames,r=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,o=(i?i.monthNames:null)||this._defaults.monthNames,u=function(t){var i=e.length>a+1&&e.charAt(a+1)===t;return i&&a++,i},c=function(e,t,i){var a=""+t;if(u(e))for(;i>a.length;)a="0"+a;return a},h=function(e,t,i,a){return u(e)?a[t]:i[t]},l="",d=!1;if(t)for(a=0;e.length>a;a++)if(d)"'"!==e.charAt(a)||u("'")?l+=e.charAt(a):d=!1;else switch(e.charAt(a)){case"d":l+=c("d",t.getDate(),2);break;case"D":l+=h("D",t.getDay(),s,n);break;case"o":l+=c("o",Math.round((new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()-new Date(t.getFullYear(),0,0).getTime())/864e5),3);break;case"m":l+=c("m",t.getMonth()+1,2);break;case"M":l+=h("M",t.getMonth(),r,o);break;case"y":l+=u("y")?t.getFullYear():(10>t.getYear()%100?"0":"")+t.getYear()%100;break;case"@":l+=t.getTime();break;case"!":l+=1e4*t.getTime()+this._ticksTo1970;break;case"'":u("'")?l+="'":d=!0;break;default:l+=e.charAt(a)}return l},_possibleChars:function(e){var t,i="",a=!1,s=function(i){var a=e.length>t+1&&e.charAt(t+1)===i;return a&&t++,a};for(t=0;e.length>t;t++)if(a)"'"!==e.charAt(t)||s("'")?i+=e.charAt(t):a=!1;else switch(e.charAt(t)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":s("'")?i+="'":a=!0;break;default:i+=e.charAt(t)}return i},_get:function(e,i){return e.settings[i]!==t?e.settings[i]:this._defaults[i]},_setDateFromField:function(e,t){if(e.input.val()!==e.lastVal){var i=this._get(e,"dateFormat"),a=e.lastVal=e.input?e.input.val():null,s=this._getDefaultDate(e),n=s,r=this._getFormatConfig(e);try{n=this.parseDate(i,a,r)||s}catch(o){a=t?"":a}e.selectedDay=n.getDate(),e.drawMonth=e.selectedMonth=n.getMonth(),e.drawYear=e.selectedYear=n.getFullYear(),e.currentDay=a?n.getDate():0,e.currentMonth=a?n.getMonth():0,e.currentYear=a?n.getFullYear():0,this._adjustInstDate(e)}},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(t,i,a){var s=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},n=function(i){try{return e.datepicker.parseDate(e.datepicker._get(t,"dateFormat"),i,e.datepicker._getFormatConfig(t))}catch(a){}for(var s=(i.toLowerCase().match(/^c/)?e.datepicker._getDate(t):null)||new Date,n=s.getFullYear(),r=s.getMonth(),o=s.getDate(),u=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,c=u.exec(i);c;){switch(c[2]||"d"){case"d":case"D":o+=parseInt(c[1],10);break;case"w":case"W":o+=7*parseInt(c[1],10);break;case"m":case"M":r+=parseInt(c[1],10),o=Math.min(o,e.datepicker._getDaysInMonth(n,r));break;case"y":case"Y":n+=parseInt(c[1],10),o=Math.min(o,e.datepicker._getDaysInMonth(n,r))}c=u.exec(i)}return new Date(n,r,o)},r=null==i||""===i?a:"string"==typeof i?n(i):"number"==typeof i?isNaN(i)?a:s(i):new Date(i.getTime());return r=r&&"Invalid Date"==""+r?a:r,r&&(r.setHours(0),r.setMinutes(0),r.setSeconds(0),r.setMilliseconds(0)),this._daylightSavingAdjust(r)},_daylightSavingAdjust:function(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,i){var a=!t,s=e.selectedMonth,n=e.selectedYear,r=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=r.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=r.getMonth(),e.drawYear=e.selectedYear=e.currentYear=r.getFullYear(),s===e.selectedMonth&&n===e.selectedYear||i||this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(a?"":this._formatDate(e))},_getDate:function(e){var t=!e.currentYear||e.input&&""===e.input.val()?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return t},_attachHandlers:function(t){var i=this._get(t,"stepMonths"),a="#"+t.id.replace(/\\\\/g,"\\");t.dpDiv.find("[data-handler]").map(function(){var t={prev:function(){e.datepicker._adjustDate(a,-i,"M")},next:function(){e.datepicker._adjustDate(a,+i,"M")},hide:function(){e.datepicker._hideDatepicker()},today:function(){e.datepicker._gotoToday(a)},selectDay:function(){return e.datepicker._selectDay(a,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return e.datepicker._selectMonthYear(a,this,"M"),!1},selectYear:function(){return e.datepicker._selectMonthYear(a,this,"Y"),!1}};e(this).bind(this.getAttribute("data-event"),t[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t,i,a,s,n,r,o,u,c,h,l,d,p,g,m,f,_,v,k,y,b,D,w,M,C,x,I,N,T,A,E,S,Y,F,P,O,j,K,R,H=new Date,W=this._daylightSavingAdjust(new Date(H.getFullYear(),H.getMonth(),H.getDate())),L=this._get(e,"isRTL"),U=this._get(e,"showButtonPanel"),B=this._get(e,"hideIfNoPrevNext"),z=this._get(e,"navigationAsDateFormat"),q=this._getNumberOfMonths(e),G=this._get(e,"showCurrentAtPos"),J=this._get(e,"stepMonths"),Q=1!==q[0]||1!==q[1],V=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),$=this._getMinMaxDate(e,"min"),X=this._getMinMaxDate(e,"max"),Z=e.drawMonth-G,et=e.drawYear;if(0>Z&&(Z+=12,et--),X)for(t=this._daylightSavingAdjust(new Date(X.getFullYear(),X.getMonth()-q[0]*q[1]+1,X.getDate())),t=$&&$>t?$:t;this._daylightSavingAdjust(new Date(et,Z,1))>t;)Z--,0>Z&&(Z=11,et--);for(e.drawMonth=Z,e.drawYear=et,i=this._get(e,"prevText"),i=z?this.formatDate(i,this._daylightSavingAdjust(new Date(et,Z-J,1)),this._getFormatConfig(e)):i,a=this._canAdjustMonth(e,-1,et,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(L?"e":"w")+"'>"+i+"</span></a>":B?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(L?"e":"w")+"'>"+i+"</span></a>",s=this._get(e,"nextText"),s=z?this.formatDate(s,this._daylightSavingAdjust(new Date(et,Z+J,1)),this._getFormatConfig(e)):s,n=this._canAdjustMonth(e,1,et,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+s+"'><span class='ui-icon ui-icon-circle-triangle-"+(L?"w":"e")+"'>"+s+"</span></a>":B?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+s+"'><span class='ui-icon ui-icon-circle-triangle-"+(L?"w":"e")+"'>"+s+"</span></a>",r=this._get(e,"currentText"),o=this._get(e,"gotoCurrent")&&e.currentDay?V:W,r=z?this.formatDate(r,o,this._getFormatConfig(e)):r,u=e.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(e,"closeText")+"</button>",c=U?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(L?u:"")+(this._isInRange(e,o)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+r+"</button>":"")+(L?"":u)+"</div>":"",h=parseInt(this._get(e,"firstDay"),10),h=isNaN(h)?0:h,l=this._get(e,"showWeek"),d=this._get(e,"dayNames"),p=this._get(e,"dayNamesMin"),g=this._get(e,"monthNames"),m=this._get(e,"monthNamesShort"),f=this._get(e,"beforeShowDay"),_=this._get(e,"showOtherMonths"),v=this._get(e,"selectOtherMonths"),k=this._getDefaultDate(e),y="",D=0;q[0]>D;D++){for(w="",this.maxRows=4,M=0;q[1]>M;M++){if(C=this._daylightSavingAdjust(new Date(et,Z,e.selectedDay)),x=" ui-corner-all",I="",Q){if(I+="<div class='ui-datepicker-group",q[1]>1)switch(M){case 0:I+=" ui-datepicker-group-first",x=" ui-corner-"+(L?"right":"left");break;case q[1]-1:I+=" ui-datepicker-group-last",x=" ui-corner-"+(L?"left":"right");break;default:I+=" ui-datepicker-group-middle",x=""}I+="'>"}for(I+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+x+"'>"+(/all|left/.test(x)&&0===D?L?n:a:"")+(/all|right/.test(x)&&0===D?L?a:n:"")+this._generateMonthYearHeader(e,Z,et,$,X,D>0||M>0,g,m)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",N=l?"<th class='ui-datepicker-week-col'>"+this._get(e,"weekHeader")+"</th>":"",b=0;7>b;b++)T=(b+h)%7,N+="<th"+((b+h+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+d[T]+"'>"+p[T]+"</span></th>";for(I+=N+"</tr></thead><tbody>",A=this._getDaysInMonth(et,Z),et===e.selectedYear&&Z===e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,A)),E=(this._getFirstDayOfMonth(et,Z)-h+7)%7,S=Math.ceil((E+A)/7),Y=Q?this.maxRows>S?this.maxRows:S:S,this.maxRows=Y,F=this._daylightSavingAdjust(new Date(et,Z,1-E)),P=0;Y>P;P++){for(I+="<tr>",O=l?"<td class='ui-datepicker-week-col'>"+this._get(e,"calculateWeek")(F)+"</td>":"",b=0;7>b;b++)j=f?f.apply(e.input?e.input[0]:null,[F]):[!0,""],K=F.getMonth()!==Z,R=K&&!v||!j[0]||$&&$>F||X&&F>X,O+="<td class='"+((b+h+6)%7>=5?" ui-datepicker-week-end":"")+(K?" ui-datepicker-other-month":"")+(F.getTime()===C.getTime()&&Z===e.selectedMonth&&e._keyEvent||k.getTime()===F.getTime()&&k.getTime()===C.getTime()?" "+this._dayOverClass:"")+(R?" "+this._unselectableClass+" ui-state-disabled":"")+(K&&!_?"":" "+j[1]+(F.getTime()===V.getTime()?" "+this._currentClass:"")+(F.getTime()===W.getTime()?" ui-datepicker-today":""))+"'"+(K&&!_||!j[2]?"":" title='"+j[2].replace(/'/g,"&#39;")+"'")+(R?"":" data-handler='selectDay' data-event='click' data-month='"+F.getMonth()+"' data-year='"+F.getFullYear()+"'")+">"+(K&&!_?"&#xa0;":R?"<span class='ui-state-default'>"+F.getDate()+"</span>":"<a class='ui-state-default"+(F.getTime()===W.getTime()?" ui-state-highlight":"")+(F.getTime()===V.getTime()?" ui-state-active":"")+(K?" ui-priority-secondary":"")+"' href='#'>"+F.getDate()+"</a>")+"</td>",F.setDate(F.getDate()+1),F=this._daylightSavingAdjust(F);I+=O+"</tr>"}Z++,Z>11&&(Z=0,et++),I+="</tbody></table>"+(Q?"</div>"+(q[0]>0&&M===q[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),w+=I}y+=w}return y+=c,e._keyEvent=!1,y},_generateMonthYearHeader:function(e,t,i,a,s,n,r,o){var u,c,h,l,d,p,g,m,f=this._get(e,"changeMonth"),_=this._get(e,"changeYear"),v=this._get(e,"showMonthAfterYear"),k="<div class='ui-datepicker-title'>",y="";if(n||!f)y+="<span class='ui-datepicker-month'>"+r[t]+"</span>";else{for(u=a&&a.getFullYear()===i,c=s&&s.getFullYear()===i,y+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",h=0;12>h;h++)(!u||h>=a.getMonth())&&(!c||s.getMonth()>=h)&&(y+="<option value='"+h+"'"+(h===t?" selected='selected'":"")+">"+o[h]+"</option>");y+="</select>"}if(v||(k+=y+(!n&&f&&_?"":"&#xa0;")),!e.yearshtml)if(e.yearshtml="",n||!_)k+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(l=this._get(e,"yearRange").split(":"),d=(new Date).getFullYear(),p=function(e){var t=e.match(/c[+\-].*/)?i+parseInt(e.substring(1),10):e.match(/[+\-].*/)?d+parseInt(e,10):parseInt(e,10); -return isNaN(t)?d:t},g=p(l[0]),m=Math.max(g,p(l[1]||"")),g=a?Math.max(g,a.getFullYear()):g,m=s?Math.min(m,s.getFullYear()):m,e.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";m>=g;g++)e.yearshtml+="<option value='"+g+"'"+(g===i?" selected='selected'":"")+">"+g+"</option>";e.yearshtml+="</select>",k+=e.yearshtml,e.yearshtml=null}return k+=this._get(e,"yearSuffix"),v&&(k+=(!n&&f&&_?"":"&#xa0;")+y),k+="</div>"},_adjustInstDate:function(e,t,i){var a=e.drawYear+("Y"===i?t:0),s=e.drawMonth+("M"===i?t:0),n=Math.min(e.selectedDay,this._getDaysInMonth(a,s))+("D"===i?t:0),r=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(a,s,n)));e.selectedDay=r.getDate(),e.drawMonth=e.selectedMonth=r.getMonth(),e.drawYear=e.selectedYear=r.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(e)},_restrictMinMax:function(e,t){var i=this._getMinMaxDate(e,"min"),a=this._getMinMaxDate(e,"max"),s=i&&i>t?i:t;return a&&s>a?a:s},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,"numberOfMonths");return null==t?[1,1]:"number"==typeof t?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return new Date(e,t,1).getDay()},_canAdjustMonth:function(e,t,i,a){var s=this._getNumberOfMonths(e),n=this._daylightSavingAdjust(new Date(i,a+(0>t?t:s[0]*s[1]),1));return 0>t&&n.setDate(this._getDaysInMonth(n.getFullYear(),n.getMonth())),this._isInRange(e,n)},_isInRange:function(e,t){var i,a,s=this._getMinMaxDate(e,"min"),n=this._getMinMaxDate(e,"max"),r=null,o=null,u=this._get(e,"yearRange");return u&&(i=u.split(":"),a=(new Date).getFullYear(),r=parseInt(i[0],10),o=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(r+=a),i[1].match(/[+\-].*/)&&(o+=a)),(!s||t.getTime()>=s.getTime())&&(!n||t.getTime()<=n.getTime())&&(!r||t.getFullYear()>=r)&&(!o||o>=t.getFullYear())},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return t="string"!=typeof t?t:(new Date).getFullYear()%100+parseInt(t,10),{shortYearCutoff:t,dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,i,a){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var s=t?"object"==typeof t?t:this._daylightSavingAdjust(new Date(a,i,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),s,this._getFormatConfig(e))}}),e.fn.datepicker=function(t){if(!this.length)return this;e.datepicker.initialized||(e(document).mousedown(e.datepicker._checkExternalClick),e.datepicker.initialized=!0),0===e("#"+e.datepicker._mainDivId).length&&e("body").append(e.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof t||"isDisabled"!==t&&"getDate"!==t&&"widget"!==t?"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof t?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this].concat(i)):e.datepicker._attachDatepicker(this,t)}):e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i))},e.datepicker=new i,e.datepicker.initialized=!1,e.datepicker.uuid=(new Date).getTime(),e.datepicker.version="1.10.4"})(jQuery);(function(e){var t={buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},i={maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0};e.widget("ui.dialog",{version:"1.10.4",options:{appendTo:"body",autoOpen:!0,buttons:[],closeOnEscape:!0,closeText:"close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var i=e(this).css(t).offset().top;0>i&&e(this).css("top",t.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),this.options.title=this.options.title||this.originalTitle,this._createWrapper(),this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(this.uiDialog),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&e.fn.draggable&&this._makeDraggable(),this.options.resizable&&e.fn.resizable&&this._makeResizable(),this._isOpen=!1},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var t=this.options.appendTo;return t&&(t.jquery||t.nodeType)?e(t):this.document.find(t||"body").eq(0)},_destroy:function(){var e,t=this.originalPosition;this._destroyOverlay(),this.element.removeUniqueId().removeClass("ui-dialog-content ui-widget-content").css(this.originalCss).detach(),this.uiDialog.stop(!0,!0).remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),e=t.parent.children().eq(t.index),e.length&&e[0]!==this.element[0]?e.before(this.element):t.parent.append(this.element)},widget:function(){return this.uiDialog},disable:e.noop,enable:e.noop,close:function(t){var i,a=this;if(this._isOpen&&this._trigger("beforeClose",t)!==!1){if(this._isOpen=!1,this._destroyOverlay(),!this.opener.filter(":focusable").focus().length)try{i=this.document[0].activeElement,i&&"body"!==i.nodeName.toLowerCase()&&e(i).blur()}catch(s){}this._hide(this.uiDialog,this.options.hide,function(){a._trigger("close",t)})}},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(e,t){var i=!!this.uiDialog.nextAll(":visible").insertBefore(this.uiDialog).length;return i&&!t&&this._trigger("focus",e),i},open:function(){var t=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),undefined):(this._isOpen=!0,this.opener=e(this.document[0].activeElement),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._trigger("open"),undefined)},_focusTabbable:function(){var e=this.element.find("[autofocus]");e.length||(e=this.element.find(":tabbable")),e.length||(e=this.uiDialogButtonPane.find(":tabbable")),e.length||(e=this.uiDialogTitlebarClose.filter(":tabbable")),e.length||(e=this.uiDialog),e.eq(0).focus()},_keepFocus:function(t){function i(){var t=this.document[0].activeElement,i=this.uiDialog[0]===t||e.contains(this.uiDialog[0],t);i||this._focusTabbable()}t.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=e("<div>").addClass("ui-dialog ui-widget ui-widget-content ui-corner-all ui-front "+this.options.dialogClass).hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===e.ui.keyCode.ESCAPE)return t.preventDefault(),this.close(t),undefined;if(t.keyCode===e.ui.keyCode.TAB){var i=this.uiDialog.find(":tabbable"),a=i.filter(":first"),s=i.filter(":last");t.target!==s[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==a[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(s.focus(1),t.preventDefault()):(a.focus(1),t.preventDefault())}},mousedown:function(e){this._moveToTop(e)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=e("<div>").addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(this.uiDialog),this._on(this.uiDialogTitlebar,{mousedown:function(t){e(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.focus()}}),this.uiDialogTitlebarClose=e("<button type='button'></button>").button({label:this.options.closeText,icons:{primary:"ui-icon-closethick"},text:!1}).addClass("ui-dialog-titlebar-close").appendTo(this.uiDialogTitlebar),this._on(this.uiDialogTitlebarClose,{click:function(e){e.preventDefault(),this.close(e)}}),t=e("<span>").uniqueId().addClass("ui-dialog-title").prependTo(this.uiDialogTitlebar),this._title(t),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(e){this.options.title||e.html("&#160;"),e.text(this.options.title)},_createButtonPane:function(){this.uiDialogButtonPane=e("<div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),this.uiButtonSet=e("<div>").addClass("ui-dialog-buttonset").appendTo(this.uiDialogButtonPane),this._createButtons()},_createButtons:function(){var t=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),e.isEmptyObject(i)||e.isArray(i)&&!i.length?(this.uiDialog.removeClass("ui-dialog-buttons"),undefined):(e.each(i,function(i,a){var s,n;a=e.isFunction(a)?{click:a,text:i}:a,a=e.extend({type:"button"},a),s=a.click,a.click=function(){s.apply(t.element[0],arguments)},n={icons:a.icons,text:a.showText},delete a.icons,delete a.showText,e("<button></button>",a).button(n).appendTo(t.uiButtonSet)}),this.uiDialog.addClass("ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),undefined)},_makeDraggable:function(){function t(e){return{position:e.position,offset:e.offset}}var i=this,a=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(a,s){e(this).addClass("ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",a,t(s))},drag:function(e,a){i._trigger("drag",e,t(a))},stop:function(s,n){a.position=[n.position.left-i.document.scrollLeft(),n.position.top-i.document.scrollTop()],e(this).removeClass("ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",s,t(n))}})},_makeResizable:function(){function t(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}var i=this,a=this.options,s=a.resizable,n=this.uiDialog.css("position"),r="string"==typeof s?s:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:a.maxWidth,maxHeight:a.maxHeight,minWidth:a.minWidth,minHeight:this._minHeight(),handles:r,start:function(a,s){e(this).addClass("ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",a,t(s))},resize:function(e,a){i._trigger("resize",e,t(a))},stop:function(s,n){a.height=e(this).height(),a.width=e(this).width(),e(this).removeClass("ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",s,t(n))}}).css("position",n)},_minHeight:function(){var e=this.options;return"auto"===e.height?e.minHeight:Math.min(e.minHeight,e.height)},_position:function(){var e=this.uiDialog.is(":visible");e||this.uiDialog.show(),this.uiDialog.position(this.options.position),e||this.uiDialog.hide()},_setOptions:function(a){var s=this,n=!1,r={};e.each(a,function(e,a){s._setOption(e,a),e in t&&(n=!0),e in i&&(r[e]=a)}),n&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",r)},_setOption:function(e,t){var i,a,s=this.uiDialog;"dialogClass"===e&&s.removeClass(this.options.dialogClass).addClass(t),"disabled"!==e&&(this._super(e,t),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:""+t}),"draggable"===e&&(i=s.is(":data(ui-draggable)"),i&&!t&&s.draggable("destroy"),!i&&t&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(a=s.is(":data(ui-resizable)"),a&&!t&&s.resizable("destroy"),a&&"string"==typeof t&&s.resizable("option","handles",t),a||t===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var e,t,i,a=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),a.minWidth>a.width&&(a.width=a.minWidth),e=this.uiDialog.css({height:"auto",width:a.width}).outerHeight(),t=Math.max(0,a.minHeight-e),i="number"==typeof a.maxHeight?Math.max(0,a.maxHeight-e):"none","auto"===a.height?this.element.css({minHeight:t,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,a.height-e)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=e(this);return e("<div>").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return e(t.target).closest(".ui-dialog").length?!0:!!e(t.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var t=this,i=this.widgetFullName;e.ui.dialog.overlayInstances||this._delay(function(){e.ui.dialog.overlayInstances&&this.document.bind("focusin.dialog",function(a){t._allowInteraction(a)||(a.preventDefault(),e(".ui-dialog:visible:last .ui-dialog-content").data(i)._focusTabbable())})}),this.overlay=e("<div>").addClass("ui-widget-overlay ui-front").appendTo(this._appendTo()),this._on(this.overlay,{mousedown:"_keepFocus"}),e.ui.dialog.overlayInstances++}},_destroyOverlay:function(){this.options.modal&&this.overlay&&(e.ui.dialog.overlayInstances--,e.ui.dialog.overlayInstances||this.document.unbind("focusin.dialog"),this.overlay.remove(),this.overlay=null)}}),e.ui.dialog.overlayInstances=0,e.uiBackCompat!==!1&&e.widget("ui.dialog",e.ui.dialog,{_position:function(){var t,i=this.options.position,a=[],s=[0,0];i?(("string"==typeof i||"object"==typeof i&&"0"in i)&&(a=i.split?i.split(" "):[i[0],i[1]],1===a.length&&(a[1]=a[0]),e.each(["left","top"],function(e,t){+a[e]===a[e]&&(s[e]=a[e],a[e]=t)}),i={my:a[0]+(0>s[0]?s[0]:"+"+s[0])+" "+a[1]+(0>s[1]?s[1]:"+"+s[1]),at:a.join(" ")}),i=e.extend({},e.ui.dialog.prototype.options.position,i)):i=e.ui.dialog.prototype.options.position,t=this.uiDialog.is(":visible"),t||this.uiDialog.show(),this.uiDialog.position(i),t||this.uiDialog.hide()}})})(jQuery);(function(t){t.widget("ui.draggable",t.ui.mouse,{version:"1.10.4",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"!==this.options.helper||/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._mouseInit()},_destroy:function(){this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy()},_mouseCapture:function(e){var i=this.options;return this.helper||i.disabled||t(e.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(e),this.handle?(t(i.iframeFix===!0?"iframe":i.iframeFix).each(function(){t("<div class='ui-draggable-iframeFix' style='background: #fff;'></div>").css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(t(this).offset()).appendTo("body")}),!0):!1)},_mouseStart:function(e){var i=this.options;return this.helper=this._createHelper(e),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),t.ui.ddmanager&&(t.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offsetParent=this.helper.offsetParent(),this.offsetParentCssPosition=this.offsetParent.css("position"),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},this.offset.scroll=!1,t.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",e)===!1?(this._clear(),!1):(this._cacheHelperProportions(),t.ui.ddmanager&&!i.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this._mouseDrag(e,!0),t.ui.ddmanager&&t.ui.ddmanager.dragStart(this,e),!0)},_mouseDrag:function(e,i){if("fixed"===this.offsetParentCssPosition&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(e),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",e,s)===!1)return this._mouseUp({}),!1;this.position=s.position}return this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),!1},_mouseStop:function(e){var i=this,s=!1;return t.ui.ddmanager&&!this.options.dropBehaviour&&(s=t.ui.ddmanager.drop(this,e)),this.dropped&&(s=this.dropped,this.dropped=!1),"original"!==this.options.helper||t.contains(this.element[0].ownerDocument,this.element[0])?("invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||t.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?t(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",e)!==!1&&i._clear()}):this._trigger("stop",e)!==!1&&this._clear(),!1):!1},_mouseUp:function(e){return t("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),t.ui.ddmanager&&t.ui.ddmanager.dragStop(this,e),t.ui.mouse.prototype._mouseUp.call(this,e)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(e){return this.options.handle?!!t(e.target).closest(this.element.find(this.options.handle)).length:!0},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper)?t(i.helper.apply(this.element[0],[e])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return s.parents("body").length||s.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s[0]===this.element[0]||/(fixed|absolute)/.test(s.css("position"))||s.css("position","absolute"),s},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_getParentOffset:function(){var e=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&t.ui.ie)&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var t=this.element.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options;return n.containment?"window"===n.containment?(this.containment=[t(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,t(window).scrollLeft()+t(window).width()-this.helperProportions.width-this.margins.left,t(window).scrollTop()+(t(window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],undefined):"document"===n.containment?(this.containment=[0,0,t(document).width()-this.helperProportions.width-this.margins.left,(t(document).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],undefined):n.containment.constructor===Array?(this.containment=n.containment,undefined):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=t(n.containment),s=i[0],s&&(e="hidden"!==i.css("overflow"),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(e?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(e?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=i),undefined):(this.containment=null,undefined)},_convertPositionTo:function(e,i){i||(i=this.position);var s="absolute"===e?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent;return this.offset.scroll||(this.offset.scroll={top:n.scrollTop(),left:n.scrollLeft()}),{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():this.offset.scroll.top)*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():this.offset.scroll.left)*s}},_generatePosition:function(e){var i,s,n,a,o=this.options,r="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,l=e.pageX,h=e.pageY;return this.offset.scroll||(this.offset.scroll={top:r.scrollTop(),left:r.scrollLeft()}),this.originalPosition&&(this.containment&&(this.relative_container?(s=this.relative_container.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,e.pageX-this.offset.click.left<i[0]&&(l=i[0]+this.offset.click.left),e.pageY-this.offset.click.top<i[1]&&(h=i[1]+this.offset.click.top),e.pageX-this.offset.click.left>i[2]&&(l=i[2]+this.offset.click.left),e.pageY-this.offset.click.top>i[3]&&(h=i[3]+this.offset.click.top)),o.grid&&(n=o.grid[1]?this.originalPageY+Math.round((h-this.originalPageY)/o.grid[1])*o.grid[1]:this.originalPageY,h=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-o.grid[1]:n+o.grid[1]:n,a=o.grid[0]?this.originalPageX+Math.round((l-this.originalPageX)/o.grid[0])*o.grid[0]:this.originalPageX,l=i?a-this.offset.click.left>=i[0]||a-this.offset.click.left>i[2]?a:a-this.offset.click.left>=i[0]?a-o.grid[0]:a+o.grid[0]:a)),{top:h-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():this.offset.scroll.top),left:l-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():this.offset.scroll.left)}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1},_trigger:function(e,i,s){return s=s||this._uiHash(),t.ui.plugin.call(this,e,[i,s]),"drag"===e&&(this.positionAbs=this._convertPositionTo("absolute")),t.Widget.prototype._trigger.call(this,e,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),t.ui.plugin.add("draggable","connectToSortable",{start:function(e,i){var s=t(this).data("ui-draggable"),n=s.options,a=t.extend({},i,{item:s.element});s.sortables=[],t(n.connectToSortable).each(function(){var i=t.data(this,"ui-sortable");i&&!i.options.disabled&&(s.sortables.push({instance:i,shouldRevert:i.options.revert}),i.refreshPositions(),i._trigger("activate",e,a))})},stop:function(e,i){var s=t(this).data("ui-draggable"),n=t.extend({},i,{item:s.element});t.each(s.sortables,function(){this.instance.isOver?(this.instance.isOver=0,s.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=this.shouldRevert),this.instance._mouseStop(e),this.instance.options.helper=this.instance.options._helper,"original"===s.options.helper&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",e,n))})},drag:function(e,i){var s=t(this).data("ui-draggable"),n=this;t.each(s.sortables,function(){var a=!1,o=this;this.instance.positionAbs=s.positionAbs,this.instance.helperProportions=s.helperProportions,this.instance.offset.click=s.offset.click,this.instance._intersectsWith(this.instance.containerCache)&&(a=!0,t.each(s.sortables,function(){return this.instance.positionAbs=s.positionAbs,this.instance.helperProportions=s.helperProportions,this.instance.offset.click=s.offset.click,this!==o&&this.instance._intersectsWith(this.instance.containerCache)&&t.contains(o.instance.element[0],this.instance.element[0])&&(a=!1),a})),a?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=t(n).clone().removeAttr("id").appendTo(this.instance.element).data("ui-sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return i.helper[0]},e.target=this.instance.currentItem[0],this.instance._mouseCapture(e,!0),this.instance._mouseStart(e,!0,!0),this.instance.offset.click.top=s.offset.click.top,this.instance.offset.click.left=s.offset.click.left,this.instance.offset.parent.left-=s.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=s.offset.parent.top-this.instance.offset.parent.top,s._trigger("toSortable",e),s.dropped=this.instance.element,s.currentItem=s.element,this.instance.fromOutside=s),this.instance.currentItem&&this.instance._mouseDrag(e)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",e,this.instance._uiHash(this.instance)),this.instance._mouseStop(e,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),s._trigger("fromSortable",e),s.dropped=!1)})}}),t.ui.plugin.add("draggable","cursor",{start:function(){var e=t("body"),i=t(this).data("ui-draggable").options;e.css("cursor")&&(i._cursor=e.css("cursor")),e.css("cursor",i.cursor)},stop:function(){var e=t(this).data("ui-draggable").options;e._cursor&&t("body").css("cursor",e._cursor)}}),t.ui.plugin.add("draggable","opacity",{start:function(e,i){var s=t(i.helper),n=t(this).data("ui-draggable").options;s.css("opacity")&&(n._opacity=s.css("opacity")),s.css("opacity",n.opacity)},stop:function(e,i){var s=t(this).data("ui-draggable").options;s._opacity&&t(i.helper).css("opacity",s._opacity)}}),t.ui.plugin.add("draggable","scroll",{start:function(){var e=t(this).data("ui-draggable");e.scrollParent[0]!==document&&"HTML"!==e.scrollParent[0].tagName&&(e.overflowOffset=e.scrollParent.offset())},drag:function(e){var i=t(this).data("ui-draggable"),s=i.options,n=!1;i.scrollParent[0]!==document&&"HTML"!==i.scrollParent[0].tagName?(s.axis&&"x"===s.axis||(i.overflowOffset.top+i.scrollParent[0].offsetHeight-e.pageY<s.scrollSensitivity?i.scrollParent[0].scrollTop=n=i.scrollParent[0].scrollTop+s.scrollSpeed:e.pageY-i.overflowOffset.top<s.scrollSensitivity&&(i.scrollParent[0].scrollTop=n=i.scrollParent[0].scrollTop-s.scrollSpeed)),s.axis&&"y"===s.axis||(i.overflowOffset.left+i.scrollParent[0].offsetWidth-e.pageX<s.scrollSensitivity?i.scrollParent[0].scrollLeft=n=i.scrollParent[0].scrollLeft+s.scrollSpeed:e.pageX-i.overflowOffset.left<s.scrollSensitivity&&(i.scrollParent[0].scrollLeft=n=i.scrollParent[0].scrollLeft-s.scrollSpeed))):(s.axis&&"x"===s.axis||(e.pageY-t(document).scrollTop()<s.scrollSensitivity?n=t(document).scrollTop(t(document).scrollTop()-s.scrollSpeed):t(window).height()-(e.pageY-t(document).scrollTop())<s.scrollSensitivity&&(n=t(document).scrollTop(t(document).scrollTop()+s.scrollSpeed))),s.axis&&"y"===s.axis||(e.pageX-t(document).scrollLeft()<s.scrollSensitivity?n=t(document).scrollLeft(t(document).scrollLeft()-s.scrollSpeed):t(window).width()-(e.pageX-t(document).scrollLeft())<s.scrollSensitivity&&(n=t(document).scrollLeft(t(document).scrollLeft()+s.scrollSpeed)))),n!==!1&&t.ui.ddmanager&&!s.dropBehaviour&&t.ui.ddmanager.prepareOffsets(i,e)}}),t.ui.plugin.add("draggable","snap",{start:function(){var e=t(this).data("ui-draggable"),i=e.options;e.snapElements=[],t(i.snap.constructor!==String?i.snap.items||":data(ui-draggable)":i.snap).each(function(){var i=t(this),s=i.offset();this!==e.element[0]&&e.snapElements.push({item:this,width:i.outerWidth(),height:i.outerHeight(),top:s.top,left:s.left})})},drag:function(e,i){var s,n,a,o,r,l,h,c,u,d,p=t(this).data("ui-draggable"),g=p.options,f=g.snapTolerance,m=i.offset.left,_=m+p.helperProportions.width,v=i.offset.top,b=v+p.helperProportions.height;for(u=p.snapElements.length-1;u>=0;u--)r=p.snapElements[u].left,l=r+p.snapElements[u].width,h=p.snapElements[u].top,c=h+p.snapElements[u].height,r-f>_||m>l+f||h-f>b||v>c+f||!t.contains(p.snapElements[u].item.ownerDocument,p.snapElements[u].item)?(p.snapElements[u].snapping&&p.options.snap.release&&p.options.snap.release.call(p.element,e,t.extend(p._uiHash(),{snapItem:p.snapElements[u].item})),p.snapElements[u].snapping=!1):("inner"!==g.snapMode&&(s=f>=Math.abs(h-b),n=f>=Math.abs(c-v),a=f>=Math.abs(r-_),o=f>=Math.abs(l-m),s&&(i.position.top=p._convertPositionTo("relative",{top:h-p.helperProportions.height,left:0}).top-p.margins.top),n&&(i.position.top=p._convertPositionTo("relative",{top:c,left:0}).top-p.margins.top),a&&(i.position.left=p._convertPositionTo("relative",{top:0,left:r-p.helperProportions.width}).left-p.margins.left),o&&(i.position.left=p._convertPositionTo("relative",{top:0,left:l}).left-p.margins.left)),d=s||n||a||o,"outer"!==g.snapMode&&(s=f>=Math.abs(h-v),n=f>=Math.abs(c-b),a=f>=Math.abs(r-m),o=f>=Math.abs(l-_),s&&(i.position.top=p._convertPositionTo("relative",{top:h,left:0}).top-p.margins.top),n&&(i.position.top=p._convertPositionTo("relative",{top:c-p.helperProportions.height,left:0}).top-p.margins.top),a&&(i.position.left=p._convertPositionTo("relative",{top:0,left:r}).left-p.margins.left),o&&(i.position.left=p._convertPositionTo("relative",{top:0,left:l-p.helperProportions.width}).left-p.margins.left)),!p.snapElements[u].snapping&&(s||n||a||o||d)&&p.options.snap.snap&&p.options.snap.snap.call(p.element,e,t.extend(p._uiHash(),{snapItem:p.snapElements[u].item})),p.snapElements[u].snapping=s||n||a||o||d)}}),t.ui.plugin.add("draggable","stack",{start:function(){var e,i=this.data("ui-draggable").options,s=t.makeArray(t(i.stack)).sort(function(e,i){return(parseInt(t(e).css("zIndex"),10)||0)-(parseInt(t(i).css("zIndex"),10)||0)});s.length&&(e=parseInt(t(s[0]).css("zIndex"),10)||0,t(s).each(function(i){t(this).css("zIndex",e+i)}),this.css("zIndex",e+s.length))}}),t.ui.plugin.add("draggable","zIndex",{start:function(e,i){var s=t(i.helper),n=t(this).data("ui-draggable").options;s.css("zIndex")&&(n._zIndex=s.css("zIndex")),s.css("zIndex",n.zIndex)},stop:function(e,i){var s=t(this).data("ui-draggable").options;s._zIndex&&t(i.helper).css("zIndex",s._zIndex)}})})(jQuery);(function(t){function e(t,e,i){return t>e&&e+i>t}t.widget("ui.droppable",{version:"1.10.4",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var e,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=t.isFunction(s)?s:function(t){return t.is(s)},this.proportions=function(){return arguments.length?(e=arguments[0],undefined):e?e:e={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},t.ui.ddmanager.droppables[i.scope]=t.ui.ddmanager.droppables[i.scope]||[],t.ui.ddmanager.droppables[i.scope].push(this),i.addClasses&&this.element.addClass("ui-droppable")},_destroy:function(){for(var e=0,i=t.ui.ddmanager.droppables[this.options.scope];i.length>e;e++)i[e]===this&&i.splice(e,1);this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(e,i){"accept"===e&&(this.accept=t.isFunction(i)?i:function(t){return t.is(i)}),t.Widget.prototype._setOption.apply(this,arguments)},_activate:function(e){var i=t.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),i&&this._trigger("activate",e,this.ui(i))},_deactivate:function(e){var i=t.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),i&&this._trigger("deactivate",e,this.ui(i))},_over:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",e,this.ui(i)))},_out:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",e,this.ui(i)))},_drop:function(e,i){var s=i||t.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var e=t.data(this,"ui-droppable");return e.options.greedy&&!e.options.disabled&&e.options.scope===s.options.scope&&e.accept.call(e.element[0],s.currentItem||s.element)&&t.ui.intersect(s,t.extend(e,{offset:e.element.offset()}),e.options.tolerance)?(n=!0,!1):undefined}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",e,this.ui(s)),this.element):!1):!1},ui:function(t){return{draggable:t.currentItem||t.element,helper:t.helper,position:t.position,offset:t.positionAbs}}}),t.ui.intersect=function(t,i,s){if(!i.offset)return!1;var n,a,o=(t.positionAbs||t.position.absolute).left,r=(t.positionAbs||t.position.absolute).top,l=o+t.helperProportions.width,h=r+t.helperProportions.height,c=i.offset.left,u=i.offset.top,d=c+i.proportions().width,p=u+i.proportions().height;switch(s){case"fit":return o>=c&&d>=l&&r>=u&&p>=h;case"intersect":return o+t.helperProportions.width/2>c&&d>l-t.helperProportions.width/2&&r+t.helperProportions.height/2>u&&p>h-t.helperProportions.height/2;case"pointer":return n=(t.positionAbs||t.position.absolute).left+(t.clickOffset||t.offset.click).left,a=(t.positionAbs||t.position.absolute).top+(t.clickOffset||t.offset.click).top,e(a,u,i.proportions().height)&&e(n,c,i.proportions().width);case"touch":return(r>=u&&p>=r||h>=u&&p>=h||u>r&&h>p)&&(o>=c&&d>=o||l>=c&&d>=l||c>o&&l>d);default:return!1}},t.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(e,i){var s,n,a=t.ui.ddmanager.droppables[e.options.scope]||[],o=i?i.type:null,r=(e.currentItem||e.element).find(":data(ui-droppable)").addBack();t:for(s=0;a.length>s;s++)if(!(a[s].options.disabled||e&&!a[s].accept.call(a[s].element[0],e.currentItem||e.element))){for(n=0;r.length>n;n++)if(r[n]===a[s].element[0]){a[s].proportions().height=0;continue t}a[s].visible="none"!==a[s].element.css("display"),a[s].visible&&("mousedown"===o&&a[s]._activate.call(a[s],i),a[s].offset=a[s].element.offset(),a[s].proportions({width:a[s].element[0].offsetWidth,height:a[s].element[0].offsetHeight}))}},drop:function(e,i){var s=!1;return t.each((t.ui.ddmanager.droppables[e.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&t.ui.intersect(e,this,this.options.tolerance)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(e,i){e.element.parentsUntil("body").bind("scroll.droppable",function(){e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)})},drag:function(e,i){e.options.refreshPositions&&t.ui.ddmanager.prepareOffsets(e,i),t.each(t.ui.ddmanager.droppables[e.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,a,o=t.ui.intersect(e,this,this.options.tolerance),r=!o&&this.isover?"isout":o&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,a=this.element.parents(":data(ui-droppable)").filter(function(){return t.data(this,"ui-droppable").options.scope===n}),a.length&&(s=t.data(a[0],"ui-droppable"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(e,i){e.element.parentsUntil("body").unbind("scroll.droppable"),e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)}}})(jQuery);(function(t,e){var i="ui-effects-";t.effects={effect:{}},function(t,e){function i(t,e,i){var s=u[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:0>t?0:t>s.max?s.max:t)}function s(i){var s=h(),n=s._rgba=[];return i=i.toLowerCase(),f(l,function(t,a){var o,r=a.re.exec(i),l=r&&a.parse(r),h=a.space||"rgba";return l?(o=s[h](l),s[c[h].cache]=o[c[h].cache],n=s._rgba=o._rgba,!1):e}),n.length?("0,0,0,0"===n.join()&&t.extend(n,a.transparent),s):a[i]}function n(t,e,i){return i=(i+1)%1,1>6*i?t+6*(e-t)*i:1>2*i?e:2>3*i?t+6*(e-t)*(2/3-i):t}var a,o="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,l=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[t[1],t[2],t[3],t[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[2.55*t[1],2.55*t[2],2.55*t[3],t[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(t){return[t[1],t[2]/100,t[3]/100,t[4]]}}],h=t.Color=function(e,i,s,n){return new t.Color.fn.parse(e,i,s,n)},c={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},u={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},d=h.support={},p=t("<p>")[0],f=t.each;p.style.cssText="background-color:rgba(1,1,1,.5)",d.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(c,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),h.fn=t.extend(h.prototype,{parse:function(n,o,r,l){if(n===e)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=t(n).css(o),o=e);var u=this,d=t.type(n),p=this._rgba=[];return o!==e&&(n=[n,o,r,l],d="array"),"string"===d?this.parse(s(n)||a._default):"array"===d?(f(c.rgba.props,function(t,e){p[e.idx]=i(n[e.idx],e)}),this):"object"===d?(n instanceof h?f(c,function(t,e){n[e.cache]&&(u[e.cache]=n[e.cache].slice())}):f(c,function(e,s){var a=s.cache;f(s.props,function(t,e){if(!u[a]&&s.to){if("alpha"===t||null==n[t])return;u[a]=s.to(u._rgba)}u[a][e.idx]=i(n[t],e,!0)}),u[a]&&0>t.inArray(null,u[a].slice(0,3))&&(u[a][3]=1,s.from&&(u._rgba=s.from(u[a])))}),this):e},is:function(t){var i=h(t),s=!0,n=this;return f(c,function(t,a){var o,r=i[a.cache];return r&&(o=n[a.cache]||a.to&&a.to(n._rgba)||[],f(a.props,function(t,i){return null!=r[i.idx]?s=r[i.idx]===o[i.idx]:e})),s}),s},_space:function(){var t=[],e=this;return f(c,function(i,s){e[s.cache]&&t.push(i)}),t.pop()},transition:function(t,e){var s=h(t),n=s._space(),a=c[n],o=0===this.alpha()?h("transparent"):this,r=o[a.cache]||a.to(o._rgba),l=r.slice();return s=s[a.cache],f(a.props,function(t,n){var a=n.idx,o=r[a],h=s[a],c=u[n.type]||{};null!==h&&(null===o?l[a]=h:(c.mod&&(h-o>c.mod/2?o+=c.mod:o-h>c.mod/2&&(o-=c.mod)),l[a]=i((h-o)*e+o,n)))}),this[n](l)},blend:function(e){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=h(e)._rgba;return h(t.map(i,function(t,e){return(1-s)*n[e]+s*t}))},toRgbaString:function(){var e="rgba(",i=t.map(this._rgba,function(t,e){return null==t?e>2?1:0:t});return 1===i[3]&&(i.pop(),e="rgb("),e+i.join()+")"},toHslaString:function(){var e="hsla(",i=t.map(this.hsla(),function(t,e){return null==t&&(t=e>2?1:0),e&&3>e&&(t=Math.round(100*t)+"%"),t});return 1===i[3]&&(i.pop(),e="hsl("),e+i.join()+")"},toHexString:function(e){var i=this._rgba.slice(),s=i.pop();return e&&i.push(~~(255*s)),"#"+t.map(i,function(t){return t=(t||0).toString(16),1===t.length?"0"+t:t}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),h.fn.parse.prototype=h.fn,c.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e,i,s=t[0]/255,n=t[1]/255,a=t[2]/255,o=t[3],r=Math.max(s,n,a),l=Math.min(s,n,a),h=r-l,c=r+l,u=.5*c;return e=l===r?0:s===r?60*(n-a)/h+360:n===r?60*(a-s)/h+120:60*(s-n)/h+240,i=0===h?0:.5>=u?h/c:h/(2-c),[Math.round(e)%360,i,u,null==o?1:o]},c.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,i=t[1],s=t[2],a=t[3],o=.5>=s?s*(1+i):s+i-s*i,r=2*s-o;return[Math.round(255*n(r,o,e+1/3)),Math.round(255*n(r,o,e)),Math.round(255*n(r,o,e-1/3)),a]},f(c,function(s,n){var a=n.props,o=n.cache,l=n.to,c=n.from;h.fn[s]=function(s){if(l&&!this[o]&&(this[o]=l(this._rgba)),s===e)return this[o].slice();var n,r=t.type(s),u="array"===r||"object"===r?s:arguments,d=this[o].slice();return f(a,function(t,e){var s=u["object"===r?t:e.idx];null==s&&(s=d[e.idx]),d[e.idx]=i(s,e)}),c?(n=h(c(d)),n[o]=d,n):h(d)},f(a,function(e,i){h.fn[e]||(h.fn[e]=function(n){var a,o=t.type(n),l="alpha"===e?this._hsla?"hsla":"rgba":s,h=this[l](),c=h[i.idx];return"undefined"===o?c:("function"===o&&(n=n.call(this,c),o=t.type(n)),null==n&&i.empty?this:("string"===o&&(a=r.exec(n),a&&(n=c+parseFloat(a[2])*("+"===a[1]?1:-1))),h[i.idx]=n,this[l](h)))})})}),h.hook=function(e){var i=e.split(" ");f(i,function(e,i){t.cssHooks[i]={set:function(e,n){var a,o,r="";if("transparent"!==n&&("string"!==t.type(n)||(a=s(n)))){if(n=h(a||n),!d.rgba&&1!==n._rgba[3]){for(o="backgroundColor"===i?e.parentNode:e;(""===r||"transparent"===r)&&o&&o.style;)try{r=t.css(o,"backgroundColor"),o=o.parentNode}catch(l){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{e.style[i]=n}catch(l){}}},t.fx.step[i]=function(e){e.colorInit||(e.start=h(e.elem,i),e.end=h(e.end),e.colorInit=!0),t.cssHooks[i].set(e.elem,e.start.transition(e.end,e.pos))}})},h.hook(o),t.cssHooks.borderColor={expand:function(t){var e={};return f(["Top","Right","Bottom","Left"],function(i,s){e["border"+s+"Color"]=t}),e}},a=t.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(jQuery),function(){function i(e){var i,s,n=e.ownerDocument.defaultView?e.ownerDocument.defaultView.getComputedStyle(e,null):e.currentStyle,a={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(a[t.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(a[i]=n[i]);return a}function s(e,i){var s,n,o={};for(s in i)n=i[s],e[s]!==n&&(a[s]||(t.fx.step[s]||!isNaN(parseFloat(n)))&&(o[s]=n));return o}var n=["add","remove","toggle"],a={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};t.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(e,i){t.fx.step[i]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(jQuery.style(t.elem,i,t.end),t.setAttr=!0)}}),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.effects.animateClass=function(e,a,o,r){var l=t.speed(a,o,r);return this.queue(function(){var a,o=t(this),r=o.attr("class")||"",h=l.children?o.find("*").addBack():o;h=h.map(function(){var e=t(this);return{el:e,start:i(this)}}),a=function(){t.each(n,function(t,i){e[i]&&o[i+"Class"](e[i])})},a(),h=h.map(function(){return this.end=i(this.el[0]),this.diff=s(this.start,this.end),this}),o.attr("class",r),h=h.map(function(){var e=this,i=t.Deferred(),s=t.extend({},l,{queue:!1,complete:function(){i.resolve(e)}});return this.el.animate(this.diff,s),i.promise()}),t.when.apply(t,h.get()).done(function(){a(),t.each(arguments,function(){var e=this.el;t.each(this.diff,function(t){e.css(t,"")})}),l.complete.call(o[0])})})},t.fn.extend({addClass:function(e){return function(i,s,n,a){return s?t.effects.animateClass.call(this,{add:i},s,n,a):e.apply(this,arguments)}}(t.fn.addClass),removeClass:function(e){return function(i,s,n,a){return arguments.length>1?t.effects.animateClass.call(this,{remove:i},s,n,a):e.apply(this,arguments)}}(t.fn.removeClass),toggleClass:function(i){return function(s,n,a,o,r){return"boolean"==typeof n||n===e?a?t.effects.animateClass.call(this,n?{add:s}:{remove:s},a,o,r):i.apply(this,arguments):t.effects.animateClass.call(this,{toggle:s},n,a,o)}}(t.fn.toggleClass),switchClass:function(e,i,s,n,a){return t.effects.animateClass.call(this,{add:i,remove:e},s,n,a)}})}(),function(){function s(e,i,s,n){return t.isPlainObject(e)&&(i=e,e=e.effect),e={effect:e},null==i&&(i={}),t.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||t.fx.speeds[i])&&(n=s,s=i,i={}),t.isFunction(s)&&(n=s,s=null),i&&t.extend(e,i),s=s||i.duration,e.duration=t.fx.off?0:"number"==typeof s?s:s in t.fx.speeds?t.fx.speeds[s]:t.fx.speeds._default,e.complete=n||i.complete,e}function n(e){return!e||"number"==typeof e||t.fx.speeds[e]?!0:"string"!=typeof e||t.effects.effect[e]?t.isFunction(e)?!0:"object"!=typeof e||e.effect?!1:!0:!0}t.extend(t.effects,{version:"1.10.4",save:function(t,e){for(var s=0;e.length>s;s++)null!==e[s]&&t.data(i+e[s],t[0].style[e[s]])},restore:function(t,s){var n,a;for(a=0;s.length>a;a++)null!==s[a]&&(n=t.data(i+s[a]),n===e&&(n=""),t.css(s[a],n))},setMode:function(t,e){return"toggle"===e&&(e=t.is(":hidden")?"show":"hide"),e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createWrapper:function(e){if(e.parent().is(".ui-effects-wrapper"))return e.parent();var i={width:e.outerWidth(!0),height:e.outerHeight(!0),"float":e.css("float")},s=t("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:e.width(),height:e.height()},a=document.activeElement;try{a.id}catch(o){a=document.body}return e.wrap(s),(e[0]===a||t.contains(e[0],a))&&t(a).focus(),s=e.parent(),"static"===e.css("position")?(s.css({position:"relative"}),e.css({position:"relative"})):(t.extend(i,{position:e.css("position"),zIndex:e.css("z-index")}),t.each(["top","left","bottom","right"],function(t,s){i[s]=e.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),e.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),e.css(n),s.css(i).show()},removeWrapper:function(e){var i=document.activeElement;return e.parent().is(".ui-effects-wrapper")&&(e.parent().replaceWith(e),(e[0]===i||t.contains(e[0],i))&&t(i).focus()),e},setTransition:function(e,i,s,n){return n=n||{},t.each(i,function(t,i){var a=e.cssUnit(i);a[0]>0&&(n[i]=a[0]*s+a[1])}),n}}),t.fn.extend({effect:function(){function e(e){function s(){t.isFunction(a)&&a.call(n[0]),t.isFunction(e)&&e()}var n=t(this),a=i.complete,r=i.mode;(n.is(":hidden")?"hide"===r:"show"===r)?(n[r](),s()):o.call(n[0],i,s)}var i=s.apply(this,arguments),n=i.mode,a=i.queue,o=t.effects.effect[i.effect];return t.fx.off||!o?n?this[n](i.duration,i.complete):this.each(function(){i.complete&&i.complete.call(this)}):a===!1?this.each(e):this.queue(a||"fx",e)},show:function(t){return function(e){if(n(e))return t.apply(this,arguments);var i=s.apply(this,arguments);return i.mode="show",this.effect.call(this,i)}}(t.fn.show),hide:function(t){return function(e){if(n(e))return t.apply(this,arguments);var i=s.apply(this,arguments);return i.mode="hide",this.effect.call(this,i)}}(t.fn.hide),toggle:function(t){return function(e){if(n(e)||"boolean"==typeof e)return t.apply(this,arguments);var i=s.apply(this,arguments);return i.mode="toggle",this.effect.call(this,i)}}(t.fn.toggle),cssUnit:function(e){var i=this.css(e),s=[];return t.each(["em","px","%","pt"],function(t,e){i.indexOf(e)>0&&(s=[parseFloat(i),e])}),s}})}(),function(){var e={};t.each(["Quad","Cubic","Quart","Quint","Expo"],function(t,i){e[i]=function(e){return Math.pow(e,t+2)}}),t.extend(e,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;((e=Math.pow(2,--i))-1)/11>t;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),t.each(e,function(e,i){t.easing["easeIn"+e]=i,t.easing["easeOut"+e]=function(t){return 1-i(1-t)},t.easing["easeInOut"+e]=function(t){return.5>t?i(2*t)/2:1-i(-2*t+2)/2}})}()})(jQuery);(function(t){var e=/up|down|vertical/,i=/up|left|vertical|horizontal/;t.effects.effect.blind=function(s,n){var a,o,r,l=t(this),h=["position","top","bottom","left","right","height","width"],c=t.effects.setMode(l,s.mode||"hide"),u=s.direction||"up",d=e.test(u),p=d?"height":"width",f=d?"top":"left",g=i.test(u),m={},v="show"===c;l.parent().is(".ui-effects-wrapper")?t.effects.save(l.parent(),h):t.effects.save(l,h),l.show(),a=t.effects.createWrapper(l).css({overflow:"hidden"}),o=a[p](),r=parseFloat(a.css(f))||0,m[p]=v?o:0,g||(l.css(d?"bottom":"right",0).css(d?"top":"left","auto").css({position:"absolute"}),m[f]=v?r:o+r),v&&(a.css(p,0),g||a.css(f,r+o)),a.animate(m,{duration:s.duration,easing:s.easing,queue:!1,complete:function(){"hide"===c&&l.hide(),t.effects.restore(l,h),t.effects.removeWrapper(l),n()}})}})(jQuery);(function(t){t.effects.effect.bounce=function(e,i){var s,n,a,o=t(this),r=["position","top","bottom","left","right","height","width"],l=t.effects.setMode(o,e.mode||"effect"),h="hide"===l,c="show"===l,u=e.direction||"up",d=e.distance,p=e.times||5,f=2*p+(c||h?1:0),g=e.duration/f,m=e.easing,v="up"===u||"down"===u?"top":"left",_="up"===u||"left"===u,b=o.queue(),y=b.length;for((c||h)&&r.push("opacity"),t.effects.save(o,r),o.show(),t.effects.createWrapper(o),d||(d=o["top"===v?"outerHeight":"outerWidth"]()/3),c&&(a={opacity:1},a[v]=0,o.css("opacity",0).css(v,_?2*-d:2*d).animate(a,g,m)),h&&(d/=Math.pow(2,p-1)),a={},a[v]=0,s=0;p>s;s++)n={},n[v]=(_?"-=":"+=")+d,o.animate(n,g,m).animate(a,g,m),d=h?2*d:d/2;h&&(n={opacity:0},n[v]=(_?"-=":"+=")+d,o.animate(n,g,m)),o.queue(function(){h&&o.hide(),t.effects.restore(o,r),t.effects.removeWrapper(o),i()}),y>1&&b.splice.apply(b,[1,0].concat(b.splice(y,f+1))),o.dequeue()}})(jQuery);(function(t){t.effects.effect.clip=function(e,i){var s,n,a,o=t(this),r=["position","top","bottom","left","right","height","width"],l=t.effects.setMode(o,e.mode||"hide"),h="show"===l,c=e.direction||"vertical",u="vertical"===c,d=u?"height":"width",p=u?"top":"left",f={};t.effects.save(o,r),o.show(),s=t.effects.createWrapper(o).css({overflow:"hidden"}),n="IMG"===o[0].tagName?s:o,a=n[d](),h&&(n.css(d,0),n.css(p,a/2)),f[d]=h?a:0,f[p]=h?0:a/2,n.animate(f,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){h||o.hide(),t.effects.restore(o,r),t.effects.removeWrapper(o),i()}})}})(jQuery);(function(t){t.effects.effect.drop=function(e,i){var s,n=t(this),a=["position","top","bottom","left","right","opacity","height","width"],o=t.effects.setMode(n,e.mode||"hide"),r="show"===o,l=e.direction||"left",h="up"===l||"down"===l?"top":"left",c="up"===l||"left"===l?"pos":"neg",u={opacity:r?1:0};t.effects.save(n,a),n.show(),t.effects.createWrapper(n),s=e.distance||n["top"===h?"outerHeight":"outerWidth"](!0)/2,r&&n.css("opacity",0).css(h,"pos"===c?-s:s),u[h]=(r?"pos"===c?"+=":"-=":"pos"===c?"-=":"+=")+s,n.animate(u,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){"hide"===o&&n.hide(),t.effects.restore(n,a),t.effects.removeWrapper(n),i()}})}})(jQuery);(function(t){t.effects.effect.explode=function(e,i){function s(){b.push(this),b.length===u*d&&n()}function n(){p.css({visibility:"visible"}),t(b).remove(),g||p.hide(),i()}var a,o,r,l,h,c,u=e.pieces?Math.round(Math.sqrt(e.pieces)):3,d=u,p=t(this),f=t.effects.setMode(p,e.mode||"hide"),g="show"===f,m=p.show().css("visibility","hidden").offset(),v=Math.ceil(p.outerWidth()/d),_=Math.ceil(p.outerHeight()/u),b=[];for(a=0;u>a;a++)for(l=m.top+a*_,c=a-(u-1)/2,o=0;d>o;o++)r=m.left+o*v,h=o-(d-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-o*v,top:-a*_}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:v,height:_,left:r+(g?h*v:0),top:l+(g?c*_:0),opacity:g?0:1}).animate({left:r+(g?0:h*v),top:l+(g?0:c*_),opacity:g?1:0},e.duration||500,e.easing,s)}})(jQuery);(function(t){t.effects.effect.fade=function(e,i){var s=t(this),n=t.effects.setMode(s,e.mode||"toggle");s.animate({opacity:n},{queue:!1,duration:e.duration,easing:e.easing,complete:i})}})(jQuery);(function(t){t.effects.effect.fold=function(e,i){var s,n,a=t(this),o=["position","top","bottom","left","right","height","width"],r=t.effects.setMode(a,e.mode||"hide"),l="show"===r,h="hide"===r,c=e.size||15,u=/([0-9]+)%/.exec(c),d=!!e.horizFirst,p=l!==d,f=p?["width","height"]:["height","width"],g=e.duration/2,m={},v={};t.effects.save(a,o),a.show(),s=t.effects.createWrapper(a).css({overflow:"hidden"}),n=p?[s.width(),s.height()]:[s.height(),s.width()],u&&(c=parseInt(u[1],10)/100*n[h?0:1]),l&&s.css(d?{height:0,width:c}:{height:c,width:0}),m[f[0]]=l?n[0]:c,v[f[1]]=l?n[1]:0,s.animate(m,g,e.easing).animate(v,g,e.easing,function(){h&&a.hide(),t.effects.restore(a,o),t.effects.removeWrapper(a),i()})}})(jQuery);(function(t){t.effects.effect.highlight=function(e,i){var s=t(this),n=["backgroundImage","backgroundColor","opacity"],a=t.effects.setMode(s,e.mode||"show"),o={backgroundColor:s.css("backgroundColor")};"hide"===a&&(o.opacity=0),t.effects.save(s,n),s.show().css({backgroundImage:"none",backgroundColor:e.color||"#ffff99"}).animate(o,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){"hide"===a&&s.hide(),t.effects.restore(s,n),i()}})}})(jQuery);(function(t){t.effects.effect.pulsate=function(e,i){var s,n=t(this),a=t.effects.setMode(n,e.mode||"show"),o="show"===a,r="hide"===a,l=o||"hide"===a,h=2*(e.times||5)+(l?1:0),c=e.duration/h,u=0,d=n.queue(),p=d.length;for((o||!n.is(":visible"))&&(n.css("opacity",0).show(),u=1),s=1;h>s;s++)n.animate({opacity:u},c,e.easing),u=1-u;n.animate({opacity:u},c,e.easing),n.queue(function(){r&&n.hide(),i()}),p>1&&d.splice.apply(d,[1,0].concat(d.splice(p,h+1))),n.dequeue()}})(jQuery);(function(t){t.effects.effect.puff=function(e,i){var s=t(this),n=t.effects.setMode(s,e.mode||"hide"),a="hide"===n,o=parseInt(e.percent,10)||150,r=o/100,l={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()};t.extend(e,{effect:"scale",queue:!1,fade:!0,mode:n,complete:i,percent:a?o:100,from:a?l:{height:l.height*r,width:l.width*r,outerHeight:l.outerHeight*r,outerWidth:l.outerWidth*r}}),s.effect(e)},t.effects.effect.scale=function(e,i){var s=t(this),n=t.extend(!0,{},e),a=t.effects.setMode(s,e.mode||"effect"),o=parseInt(e.percent,10)||(0===parseInt(e.percent,10)?0:"hide"===a?0:100),r=e.direction||"both",l=e.origin,h={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()},c={y:"horizontal"!==r?o/100:1,x:"vertical"!==r?o/100:1};n.effect="size",n.queue=!1,n.complete=i,"effect"!==a&&(n.origin=l||["middle","center"],n.restore=!0),n.from=e.from||("show"===a?{height:0,width:0,outerHeight:0,outerWidth:0}:h),n.to={height:h.height*c.y,width:h.width*c.x,outerHeight:h.outerHeight*c.y,outerWidth:h.outerWidth*c.x},n.fade&&("show"===a&&(n.from.opacity=0,n.to.opacity=1),"hide"===a&&(n.from.opacity=1,n.to.opacity=0)),s.effect(n)},t.effects.effect.size=function(e,i){var s,n,a,o=t(this),r=["position","top","bottom","left","right","width","height","overflow","opacity"],l=["position","top","bottom","left","right","overflow","opacity"],h=["width","height","overflow"],c=["fontSize"],u=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],d=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=t.effects.setMode(o,e.mode||"effect"),f=e.restore||"effect"!==p,g=e.scale||"both",m=e.origin||["middle","center"],v=o.css("position"),_=f?r:l,b={height:0,width:0,outerHeight:0,outerWidth:0};"show"===p&&o.show(),s={height:o.height(),width:o.width(),outerHeight:o.outerHeight(),outerWidth:o.outerWidth()},"toggle"===e.mode&&"show"===p?(o.from=e.to||b,o.to=e.from||s):(o.from=e.from||("show"===p?b:s),o.to=e.to||("hide"===p?b:s)),a={from:{y:o.from.height/s.height,x:o.from.width/s.width},to:{y:o.to.height/s.height,x:o.to.width/s.width}},("box"===g||"both"===g)&&(a.from.y!==a.to.y&&(_=_.concat(u),o.from=t.effects.setTransition(o,u,a.from.y,o.from),o.to=t.effects.setTransition(o,u,a.to.y,o.to)),a.from.x!==a.to.x&&(_=_.concat(d),o.from=t.effects.setTransition(o,d,a.from.x,o.from),o.to=t.effects.setTransition(o,d,a.to.x,o.to))),("content"===g||"both"===g)&&a.from.y!==a.to.y&&(_=_.concat(c).concat(h),o.from=t.effects.setTransition(o,c,a.from.y,o.from),o.to=t.effects.setTransition(o,c,a.to.y,o.to)),t.effects.save(o,_),o.show(),t.effects.createWrapper(o),o.css("overflow","hidden").css(o.from),m&&(n=t.effects.getBaseline(m,s),o.from.top=(s.outerHeight-o.outerHeight())*n.y,o.from.left=(s.outerWidth-o.outerWidth())*n.x,o.to.top=(s.outerHeight-o.to.outerHeight)*n.y,o.to.left=(s.outerWidth-o.to.outerWidth)*n.x),o.css(o.from),("content"===g||"both"===g)&&(u=u.concat(["marginTop","marginBottom"]).concat(c),d=d.concat(["marginLeft","marginRight"]),h=r.concat(u).concat(d),o.find("*[width]").each(function(){var i=t(this),s={height:i.height(),width:i.width(),outerHeight:i.outerHeight(),outerWidth:i.outerWidth()};f&&t.effects.save(i,h),i.from={height:s.height*a.from.y,width:s.width*a.from.x,outerHeight:s.outerHeight*a.from.y,outerWidth:s.outerWidth*a.from.x},i.to={height:s.height*a.to.y,width:s.width*a.to.x,outerHeight:s.height*a.to.y,outerWidth:s.width*a.to.x},a.from.y!==a.to.y&&(i.from=t.effects.setTransition(i,u,a.from.y,i.from),i.to=t.effects.setTransition(i,u,a.to.y,i.to)),a.from.x!==a.to.x&&(i.from=t.effects.setTransition(i,d,a.from.x,i.from),i.to=t.effects.setTransition(i,d,a.to.x,i.to)),i.css(i.from),i.animate(i.to,e.duration,e.easing,function(){f&&t.effects.restore(i,h)})})),o.animate(o.to,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){0===o.to.opacity&&o.css("opacity",o.from.opacity),"hide"===p&&o.hide(),t.effects.restore(o,_),f||("static"===v?o.css({position:"relative",top:o.to.top,left:o.to.left}):t.each(["top","left"],function(t,e){o.css(e,function(e,i){var s=parseInt(i,10),n=t?o.to.left:o.to.top;return"auto"===i?n+"px":s+n+"px"})})),t.effects.removeWrapper(o),i()}})}})(jQuery);(function(t){t.effects.effect.shake=function(e,i){var s,n=t(this),a=["position","top","bottom","left","right","height","width"],o=t.effects.setMode(n,e.mode||"effect"),r=e.direction||"left",l=e.distance||20,h=e.times||3,c=2*h+1,u=Math.round(e.duration/c),d="up"===r||"down"===r?"top":"left",p="up"===r||"left"===r,f={},g={},m={},v=n.queue(),_=v.length;for(t.effects.save(n,a),n.show(),t.effects.createWrapper(n),f[d]=(p?"-=":"+=")+l,g[d]=(p?"+=":"-=")+2*l,m[d]=(p?"-=":"+=")+2*l,n.animate(f,u,e.easing),s=1;h>s;s++)n.animate(g,u,e.easing).animate(m,u,e.easing);n.animate(g,u,e.easing).animate(f,u/2,e.easing).queue(function(){"hide"===o&&n.hide(),t.effects.restore(n,a),t.effects.removeWrapper(n),i()}),_>1&&v.splice.apply(v,[1,0].concat(v.splice(_,c+1))),n.dequeue()}})(jQuery);(function(t){t.effects.effect.slide=function(e,i){var s,n=t(this),a=["position","top","bottom","left","right","width","height"],o=t.effects.setMode(n,e.mode||"show"),r="show"===o,l=e.direction||"left",h="up"===l||"down"===l?"top":"left",c="up"===l||"left"===l,u={};t.effects.save(n,a),n.show(),s=e.distance||n["top"===h?"outerHeight":"outerWidth"](!0),t.effects.createWrapper(n).css({overflow:"hidden"}),r&&n.css(h,c?isNaN(s)?"-"+s:-s:s),u[h]=(r?c?"+=":"-=":c?"-=":"+=")+s,n.animate(u,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){"hide"===o&&n.hide(),t.effects.restore(n,a),t.effects.removeWrapper(n),i()}})}})(jQuery);(function(t){t.effects.effect.transfer=function(e,i){var s=t(this),n=t(e.to),a="fixed"===n.css("position"),o=t("body"),r=a?o.scrollTop():0,l=a?o.scrollLeft():0,h=n.offset(),c={top:h.top-r,left:h.left-l,height:n.innerHeight(),width:n.innerWidth()},u=s.offset(),d=t("<div class='ui-effects-transfer'></div>").appendTo(document.body).addClass(e.className).css({top:u.top-r,left:u.left-l,height:s.innerHeight(),width:s.innerWidth(),position:a?"fixed":"absolute"}).animate(c,e.duration,e.easing,function(){d.remove(),i()})}})(jQuery);(function(t){t.widget("ui.menu",{version:"1.10.4",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content ui-corner-all").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}).bind("click"+this.eventNamespace,t.proxy(function(t){this.options.disabled&&t.preventDefault()},this)),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item > a":function(t){t.preventDefault()},"click .ui-state-disabled > a":function(t){t.preventDefault()},"click .ui-menu-item:has(a)":function(e){var i=t(e.target).closest(".ui-menu-item");!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&t(this.document[0].activeElement).closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){var i=t(e.currentTarget);i.siblings().children(".ui-state-active").removeClass("ui-state-active"),this.focus(e,i)},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.children(".ui-menu-item").eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){t.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(e){t(e.target).closest(".ui-menu").length||this.collapseAll(e),this.mouseHandled=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeClass("ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").children("a").removeUniqueId().removeClass("ui-corner-all ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var e=t(this);e.data("ui-menu-submenu-carat")&&e.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(e){function i(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}var s,n,a,o,r,l=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:l=!1,n=this.previousFilter||"",a=String.fromCharCode(e.keyCode),o=!1,clearTimeout(this.filterTimer),a===n?o=!0:a=n+a,r=RegExp("^"+i(a),"i"),s=this.activeMenu.children(".ui-menu-item").filter(function(){return r.test(t(this).children("a").text())}),s=o&&-1!==s.index(this.active.next())?this.active.nextAll(".ui-menu-item"):s,s.length||(a=String.fromCharCode(e.keyCode),r=RegExp("^"+i(a),"i"),s=this.activeMenu.children(".ui-menu-item").filter(function(){return r.test(t(this).children("a").text())})),s.length?(this.focus(e,s),s.length>1?(this.previousFilter=a,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter):delete this.previousFilter}l&&e.preventDefault()},_activate:function(t){this.active.is(".ui-state-disabled")||(this.active.children("a[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i=this.options.icons.submenu,s=this.element.find(this.options.menus);this.element.toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length),s.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-corner-all").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),s=e.prev("a"),n=t("<span>").addClass("ui-menu-icon ui-icon "+i).data("ui-menu-submenu-carat",!0);s.attr("aria-haspopup","true").prepend(n),e.attr("aria-labelledby",s.attr("id"))}),e=s.add(this.element),e.children(":not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","presentation").children("a").uniqueId().addClass("ui-corner-all").attr({tabIndex:-1,role:this._itemRole()}),e.children(":not(.ui-menu-item)").each(function(){var e=t(this);/[^\-\u2014\u2013\s]/.test(e.text())||e.addClass("ui-widget-content ui-menu-divider")}),e.children(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){"icons"===t&&this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(e.submenu),this._super(t,e)},focus:function(t,e){var i,s;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children("a").addClass("ui-state-focus"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),this.active.parent().closest(".ui-menu-item").children("a:first").addClass("ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,a,o,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,a=this.activeMenu.scrollTop(),o=this.activeMenu.height(),r=e.height(),0>n?this.activeMenu.scrollTop(a+n):n+r>o&&this.activeMenu.scrollTop(a+n-o+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this.active.children("a").removeClass("ui-state-focus"),this.active=null,this._trigger("blur",t,{item:this.active}))},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find("a.ui-state-active").removeClass("ui-state-active")},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").children(".ui-menu-item").first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.children(".ui-menu-item")[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.children(".ui-menu-item")[this.active?"last":"first"]())),undefined):(this.next(e),undefined)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.children(".ui-menu-item").first())),undefined):(this.next(e),undefined)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(e){this.active=this.active||t(e.target).closest(".ui-menu-item");var i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(e,!0),this._trigger("select",e,i)}})})(jQuery);(function(t,e){t.widget("ui.progressbar",{version:"1.10.4",options:{max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min}),this.valueDiv=t("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(t){return t===e?this.options.value:(this.options.value=this._constrainedValue(t),this._refreshValue(),e)},_constrainedValue:function(t){return t===e&&(t=this.options.value),this.indeterminate=t===!1,"number"!=typeof t&&(t=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var e=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||e>this.min).toggleClass("ui-corner-right",e===this.options.max).width(i.toFixed(0)+"%"),this.element.toggleClass("ui-progressbar-indeterminate",this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=t("<div class='ui-progressbar-overlay'></div>").appendTo(this.valueDiv))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":e}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),e===this.options.max&&this._trigger("complete")}})})(jQuery);(function(t){function e(t){return parseInt(t,10)||0}function i(t){return!isNaN(parseInt(t,10))}t.widget("ui.resizable",t.ui.mouse,{version:"1.10.4",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_create:function(){var e,i,s,n,a,o=this,r=this.options;if(this.element.addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!r.aspectRatio,aspectRatio:r.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:r.helper||r.ghost||r.animate?r.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(t("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.data("ui-resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=r.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),e=this.handles.split(","),this.handles={},i=0;e.length>i;i++)s=t.trim(e[i]),a="ui-resizable-"+s,n=t("<div class='ui-resizable-handle "+a+"'></div>"),n.css({zIndex:r.zIndex}),"se"===s&&n.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(n);this._renderAxis=function(e){var i,s,n,a;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String&&(this.handles[i]=t(this.handles[i],this.element).show()),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)&&(s=t(this.handles[i],this.element),a=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,a),this._proportionallyResize()),t(this.handles[i]).length},this._renderAxis(this.element),this._handles=t(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){o.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),o.axis=n&&n[1]?n[1]:"se")}),r.autoHide&&(this._handles.hide(),t(this.element).addClass("ui-resizable-autohide").mouseenter(function(){r.disabled||(t(this).removeClass("ui-resizable-autohide"),o._handles.show())}).mouseleave(function(){r.disabled||o.resizing||(t(this).addClass("ui-resizable-autohide"),o._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(i){var s,n,a,o=this.options,r=this.element.position(),h=this.element;return this.resizing=!0,/absolute/.test(h.css("position"))?h.css({position:"absolute",top:h.css("top"),left:h.css("left")}):h.is(".ui-draggable")&&h.css({position:"absolute",top:r.top,left:r.left}),this._renderProxy(),s=e(this.helper.css("left")),n=e(this.helper.css("top")),o.containment&&(s+=t(o.containment).scrollLeft()||0,n+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:s,top:n},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:h.width(),height:h.height()},this.originalSize=this._helper?{width:h.outerWidth(),height:h.outerHeight()}:{width:h.width(),height:h.height()},this.originalPosition={left:s,top:n},this.sizeDiff={width:h.outerWidth()-h.width(),height:h.outerHeight()-h.height()},this.originalMousePosition={left:i.pageX,top:i.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,a=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===a?this.axis+"-resize":a),h.addClass("ui-resizable-resizing"),this._propagate("start",i),!0},_mouseDrag:function(e){var i,s=this.helper,n={},a=this.originalMousePosition,o=this.axis,r=this.position.top,h=this.position.left,l=this.size.width,c=this.size.height,u=e.pageX-a.left||0,d=e.pageY-a.top||0,p=this._change[o];return p?(i=p.apply(this,[e,u,d]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),this.position.top!==r&&(n.top=this.position.top+"px"),this.position.left!==h&&(n.left=this.position.left+"px"),this.size.width!==l&&(n.width=this.size.width+"px"),this.size.height!==c&&(n.height=this.size.height+"px"),s.css(n),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(n)||this._trigger("resize",e,this.ui()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,a,o,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&t.ui.hasScroll(i[0],"left")?0:c.sizeDiff.height,a=s?0:c.sizeDiff.width,o={width:c.helper.width()-a,height:c.helper.height()-n},r=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null,h=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(o,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updateVirtualBoundaries:function(t){var e,s,n,a,o,r=this.options;o={minWidth:i(r.minWidth)?r.minWidth:0,maxWidth:i(r.maxWidth)?r.maxWidth:1/0,minHeight:i(r.minHeight)?r.minHeight:0,maxHeight:i(r.maxHeight)?r.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,n=o.minWidth/this.aspectRatio,s=o.maxHeight*this.aspectRatio,a=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),n>o.minHeight&&(o.minHeight=n),o.maxWidth>s&&(o.maxWidth=s),o.maxHeight>a&&(o.maxHeight=a)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),i(t.left)&&(this.position.left=t.left),i(t.top)&&(this.position.top=t.top),i(t.height)&&(this.size.height=t.height),i(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,s=this.size,n=this.axis;return i(t.height)?t.width=t.height*this.aspectRatio:i(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===n&&(t.left=e.left+(s.width-t.width),t.top=null),"nw"===n&&(t.top=e.top+(s.height-t.height),t.left=e.left+(s.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,s=this.axis,n=i(t.width)&&e.maxWidth&&e.maxWidth<t.width,a=i(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=i(t.width)&&e.minWidth&&e.minWidth>t.width,r=i(t.height)&&e.minHeight&&e.minHeight>t.height,h=this.originalPosition.left+this.originalSize.width,l=this.position.top+this.size.height,c=/sw|nw|w/.test(s),u=/nw|ne|n/.test(s);return o&&(t.width=e.minWidth),r&&(t.height=e.minHeight),n&&(t.width=e.maxWidth),a&&(t.height=e.maxHeight),o&&c&&(t.left=h-e.minWidth),n&&c&&(t.left=h-e.maxWidth),r&&u&&(t.top=l-e.minHeight),a&&u&&(t.top=l-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_proportionallyResize:function(){if(this._proportionallyResizeElements.length){var t,e,i,s,n,a=this.helper||this.element;for(t=0;this._proportionallyResizeElements.length>t;t++){if(n=this._proportionallyResizeElements[t],!this.borderDif)for(this.borderDif=[],i=[n.css("borderTopWidth"),n.css("borderRightWidth"),n.css("borderBottomWidth"),n.css("borderLeftWidth")],s=[n.css("paddingTop"),n.css("paddingRight"),n.css("paddingBottom"),n.css("paddingLeft")],e=0;i.length>e;e++)this.borderDif[e]=(parseInt(i[e],10)||0)+(parseInt(s[e],10)||0);n.css({height:a.height()-this.borderDif[0]-this.borderDif[2]||0,width:a.width()-this.borderDif[1]-this.borderDif[3]||0})}}},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("<div style='overflow:hidden;'></div>"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).data("ui-resizable"),s=i.options,n=i._proportionallyResizeElements,a=n.length&&/textarea/i.test(n[0].nodeName),o=a&&t.ui.hasScroll(n[0],"left")?0:i.sizeDiff.height,r=a?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-o},l=parseInt(i.element.css("left"),10)+(i.position.left-i.originalPosition.left)||null,c=parseInt(i.element.css("top"),10)+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseInt(i.element.css("width"),10),height:parseInt(i.element.css("height"),10),top:parseInt(i.element.css("top"),10),left:parseInt(i.element.css("left"),10)};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var i,s,n,a,o,r,h,l=t(this).data("ui-resizable"),c=l.options,u=l.element,d=c.containment,p=d instanceof t?d.get(0):/parent/.test(d)?u.parent().get(0):d;p&&(l.containerElement=t(p),/document/.test(d)||d===document?(l.containerOffset={left:0,top:0},l.containerPosition={left:0,top:0},l.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(i=t(p),s=[],t(["Top","Right","Left","Bottom"]).each(function(t,n){s[t]=e(i.css("padding"+n))}),l.containerOffset=i.offset(),l.containerPosition=i.position(),l.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},n=l.containerOffset,a=l.containerSize.height,o=l.containerSize.width,r=t.ui.hasScroll(p,"left")?p.scrollWidth:o,h=t.ui.hasScroll(p)?p.scrollHeight:a,l.parentData={element:p,left:n.left,top:n.top,width:r,height:h}))},resize:function(e){var i,s,n,a,o=t(this).data("ui-resizable"),r=o.options,h=o.containerOffset,l=o.position,c=o._aspectRatio||e.shiftKey,u={top:0,left:0},d=o.containerElement;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(o._helper?h.left:0)&&(o.size.width=o.size.width+(o._helper?o.position.left-h.left:o.position.left-u.left),c&&(o.size.height=o.size.width/o.aspectRatio),o.position.left=r.helper?h.left:0),l.top<(o._helper?h.top:0)&&(o.size.height=o.size.height+(o._helper?o.position.top-h.top:o.position.top),c&&(o.size.width=o.size.height*o.aspectRatio),o.position.top=o._helper?h.top:0),o.offset.left=o.parentData.left+o.position.left,o.offset.top=o.parentData.top+o.position.top,i=Math.abs((o._helper?o.offset.left-u.left:o.offset.left-u.left)+o.sizeDiff.width),s=Math.abs((o._helper?o.offset.top-u.top:o.offset.top-h.top)+o.sizeDiff.height),n=o.containerElement.get(0)===o.element.parent().get(0),a=/relative|absolute/.test(o.containerElement.css("position")),n&&a&&(i-=Math.abs(o.parentData.left)),i+o.size.width>=o.parentData.width&&(o.size.width=o.parentData.width-i,c&&(o.size.height=o.size.width/o.aspectRatio)),s+o.size.height>=o.parentData.height&&(o.size.height=o.parentData.height-s,c&&(o.size.width=o.size.height*o.aspectRatio))},stop:function(){var e=t(this).data("ui-resizable"),i=e.options,s=e.containerOffset,n=e.containerPosition,a=e.containerElement,o=t(e.helper),r=o.offset(),h=o.outerWidth()-e.sizeDiff.width,l=o.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(a.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(a.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).data("ui-resizable"),i=e.options,s=function(e){t(e).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseInt(e.width(),10),height:parseInt(e.height(),10),left:parseInt(e.css("left"),10),top:parseInt(e.css("top"),10)})})};"object"!=typeof i.alsoResize||i.alsoResize.parentNode?s(i.alsoResize):i.alsoResize.length?(i.alsoResize=i.alsoResize[0],s(i.alsoResize)):t.each(i.alsoResize,function(t){s(t)})},resize:function(e,i){var s=t(this).data("ui-resizable"),n=s.options,a=s.originalSize,o=s.originalPosition,r={height:s.size.height-a.height||0,width:s.size.width-a.width||0,top:s.position.top-o.top||0,left:s.position.left-o.left||0},h=function(e,s){t(e).each(function(){var e=t(this),n=t(this).data("ui-resizable-alsoresize"),a={},o=s&&s.length?s:e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(n[e]||0)+(r[e]||0);i&&i>=0&&(a[e]=i||null)}),e.css(a)})};"object"!=typeof n.alsoResize||n.alsoResize.nodeType?h(n.alsoResize):t.each(n.alsoResize,function(t,e){h(t,e)})},stop:function(){t(this).removeData("resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).data("ui-resizable"),i=e.options,s=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof i.ghost?i.ghost:""),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).data("ui-resizable");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).data("ui-resizable");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e=t(this).data("ui-resizable"),i=e.options,s=e.size,n=e.originalSize,a=e.originalPosition,o=e.axis,r="number"==typeof i.grid?[i.grid,i.grid]:i.grid,h=r[0]||1,l=r[1]||1,c=Math.round((s.width-n.width)/h)*h,u=Math.round((s.height-n.height)/l)*l,d=n.width+c,p=n.height+u,f=i.maxWidth&&d>i.maxWidth,g=i.maxHeight&&p>i.maxHeight,m=i.minWidth&&i.minWidth>d,v=i.minHeight&&i.minHeight>p;i.grid=r,m&&(d+=h),v&&(p+=l),f&&(d-=h),g&&(p-=l),/^(se|s|e)$/.test(o)?(e.size.width=d,e.size.height=p):/^(ne)$/.test(o)?(e.size.width=d,e.size.height=p,e.position.top=a.top-u):/^(sw)$/.test(o)?(e.size.width=d,e.size.height=p,e.position.left=a.left-c):(p-l>0?(e.size.height=p,e.position.top=a.top-u):(e.size.height=l,e.position.top=a.top+n.height-l),d-h>0?(e.size.width=d,e.position.left=a.left-c):(e.size.width=h,e.position.left=a.left+n.width-h))}})})(jQuery);(function(t){t.widget("ui.selectable",t.ui.mouse,{version:"1.10.4",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var e,i=this;this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){e=t(i.options.filter,i.element[0]),e.addClass("ui-selectee"),e.each(function(){var e=t(this),i=e.offset();t.data(this,"selectable-item",{element:this,$element:e,left:i.left,top:i.top,right:i.left+e.outerWidth(),bottom:i.top+e.outerHeight(),startselected:!1,selected:e.hasClass("ui-selected"),selecting:e.hasClass("ui-selecting"),unselecting:e.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=e.addClass("ui-selectee"),this._mouseInit(),this.helper=t("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(e){var i=this,s=this.options;this.opos=[e.pageX,e.pageY],this.options.disabled||(this.selectees=t(s.filter,this.element[0]),this._trigger("start",e),t(s.appendTo).append(this.helper),this.helper.css({left:e.pageX,top:e.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=t.data(this,"selectable-item");s.startselected=!0,e.metaKey||e.ctrlKey||(s.$element.removeClass("ui-selected"),s.selected=!1,s.$element.addClass("ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",e,{unselecting:s.element}))}),t(e.target).parents().addBack().each(function(){var s,n=t.data(this,"selectable-item");return n?(s=!e.metaKey&&!e.ctrlKey||!n.$element.hasClass("ui-selected"),n.$element.removeClass(s?"ui-unselecting":"ui-selected").addClass(s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",e,{selecting:n.element}):i._trigger("unselecting",e,{unselecting:n.element}),!1):undefined}))},_mouseDrag:function(e){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,a=this.opos[0],o=this.opos[1],r=e.pageX,l=e.pageY;return a>r&&(i=r,r=a,a=i),o>l&&(i=l,l=o,o=i),this.helper.css({left:a,top:o,width:r-a,height:l-o}),this.selectees.each(function(){var i=t.data(this,"selectable-item"),h=!1;i&&i.element!==s.element[0]&&("touch"===n.tolerance?h=!(i.left>r||a>i.right||i.top>l||o>i.bottom):"fit"===n.tolerance&&(h=i.left>a&&r>i.right&&i.top>o&&l>i.bottom),h?(i.selected&&(i.$element.removeClass("ui-selected"),i.selected=!1),i.unselecting&&(i.$element.removeClass("ui-unselecting"),i.unselecting=!1),i.selecting||(i.$element.addClass("ui-selecting"),i.selecting=!0,s._trigger("selecting",e,{selecting:i.element}))):(i.selecting&&((e.metaKey||e.ctrlKey)&&i.startselected?(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.$element.addClass("ui-selected"),i.selected=!0):(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.startselected&&(i.$element.addClass("ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",e,{unselecting:i.element}))),i.selected&&(e.metaKey||e.ctrlKey||i.startselected||(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",e,{unselecting:i.element})))))}),!1}},_mouseStop:function(e){var i=this;return this.dragged=!1,t(".ui-unselecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");s.$element.removeClass("ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",e,{unselected:s.element})}),t(".ui-selecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");s.$element.removeClass("ui-selecting").addClass("ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",e,{selected:s.element})}),this._trigger("stop",e),this.helper.remove(),!1}})})(jQuery);(function(t){var e=5;t.widget("ui.slider",t.ui.mouse,{version:"1.10.4",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"),this._refresh(),this._setOption("disabled",this.options.disabled),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var e,i,s=this.options,n=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),a="<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>",o=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),e=n.length;i>e;e++)o.push(a);this.handles=n.add(t(o.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.each(function(e){t(this).data("ui-slider-handle-index",e)})},_createRange:function(){var e=this.options,i="";e.range?(e.range===!0&&(e.values?e.values.length&&2!==e.values.length?e.values=[e.values[0],e.values[0]]:t.isArray(e.values)&&(e.values=e.values.slice(0)):e.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?this.range.removeClass("ui-slider-range-min ui-slider-range-max").css({left:"",bottom:""}):(this.range=t("<div></div>").appendTo(this.element),i="ui-slider-range ui-widget-header ui-corner-all"),this.range.addClass(i+("min"===e.range||"max"===e.range?" ui-slider-range-"+e.range:""))):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){var t=this.handles.add(this.range).filter("a");this._off(t),this._on(t,this._handleEvents),this._hoverable(t),this._focusable(t)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(e){var i,s,n,a,o,r,l,h,u=this,c=this.options;return c.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:e.pageX,y:e.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(e){var i=Math.abs(s-u.values(e));(n>i||n===i&&(e===u._lastChangedValue||u.values(e)===c.min))&&(n=i,a=t(this),o=e)}),r=this._start(e,o),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=o,a.addClass("ui-state-active").focus(),l=a.offset(),h=!t(e.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=h?{left:0,top:0}:{left:e.pageX-l.left-a.width()/2,top:e.pageY-l.top-a.height()/2-(parseInt(a.css("borderTopWidth"),10)||0)-(parseInt(a.css("borderBottomWidth"),10)||0)+(parseInt(a.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(e,o,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,i),!1},_mouseStop:function(t){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,i,s,n,a;return"horizontal"===this.orientation?(e=this.elementSize.width,i=t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,i=t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/e,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),a=this._valueMin()+s*n,this._trimAlignValue(a)},_start:function(t,e){var i={handle:this.handles[e],value:this.value()};return this.options.values&&this.options.values.length&&(i.value=this.values(e),i.values=this.values()),this._trigger("start",t,i)},_slide:function(t,e,i){var s,n,a;this.options.values&&this.options.values.length?(s=this.values(e?0:1),2===this.options.values.length&&this.options.range===!0&&(0===e&&i>s||1===e&&s>i)&&(i=s),i!==this.values(e)&&(n=this.values(),n[e]=i,a=this._trigger("slide",t,{handle:this.handles[e],value:i,values:n}),s=this.values(e?0:1),a!==!1&&this.values(e,i))):i!==this.value()&&(a=this._trigger("slide",t,{handle:this.handles[e],value:i}),a!==!1&&this.value(i))},_stop:function(t,e){var i={handle:this.handles[e],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(e),i.values=this.values()),this._trigger("stop",t,i)},_change:function(t,e){if(!this._keySliding&&!this._mouseSliding){var i={handle:this.handles[e],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(e),i.values=this.values()),this._lastChangedValue=e,this._trigger("change",t,i)}},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),this._change(null,0),undefined):this._value()},values:function(e,i){var s,n,a;if(arguments.length>1)return this.options.values[e]=this._trimAlignValue(i),this._refreshValue(),this._change(null,e),undefined;if(!arguments.length)return this._values();if(!t.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(e):this.value();for(s=this.options.values,n=arguments[0],a=0;s.length>a;a+=1)s[a]=this._trimAlignValue(n[a]),this._change(null,a);this._refreshValue()},_setOption:function(e,i){var s,n=0;switch("range"===e&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),t.isArray(this.options.values)&&(n=this.options.values.length),t.Widget.prototype._setOption.apply(this,arguments),e){case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue();break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=0;n>s;s+=1)this._change(null,s);this._animateOff=!1;break;case"min":case"max":this._animateOff=!0,this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_value:function(){var t=this.options.value;return t=this._trimAlignValue(t)},_values:function(t){var e,i,s;if(arguments.length)return e=this.options.values[t],e=this._trimAlignValue(e);if(this.options.values&&this.options.values.length){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(t){if(this._valueMin()>=t)return this._valueMin();if(t>=this._valueMax())return this._valueMax();var e=this.options.step>0?this.options.step:1,i=(t-this._valueMin())%e,s=t-i;return 2*Math.abs(i)>=e&&(s+=i>0?e:-e),parseFloat(s.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var e,i,s,n,a,o=this.options.range,r=this.options,l=this,h=this._animateOff?!1:r.animate,u={};this.options.values&&this.options.values.length?this.handles.each(function(s){i=100*((l.values(s)-l._valueMin())/(l._valueMax()-l._valueMin())),u["horizontal"===l.orientation?"left":"bottom"]=i+"%",t(this).stop(1,1)[h?"animate":"css"](u,r.animate),l.options.range===!0&&("horizontal"===l.orientation?(0===s&&l.range.stop(1,1)[h?"animate":"css"]({left:i+"%"},r.animate),1===s&&l.range[h?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:r.animate})):(0===s&&l.range.stop(1,1)[h?"animate":"css"]({bottom:i+"%"},r.animate),1===s&&l.range[h?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:r.animate}))),e=i}):(s=this.value(),n=this._valueMin(),a=this._valueMax(),i=a!==n?100*((s-n)/(a-n)):0,u["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[h?"animate":"css"](u,r.animate),"min"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[h?"animate":"css"]({width:i+"%"},r.animate),"max"===o&&"horizontal"===this.orientation&&this.range[h?"animate":"css"]({width:100-i+"%"},{queue:!1,duration:r.animate}),"min"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[h?"animate":"css"]({height:i+"%"},r.animate),"max"===o&&"vertical"===this.orientation&&this.range[h?"animate":"css"]({height:100-i+"%"},{queue:!1,duration:r.animate}))},_handleEvents:{keydown:function(i){var s,n,a,o,r=t(i.target).data("ui-slider-handle-index");switch(i.keyCode){case t.ui.keyCode.HOME:case t.ui.keyCode.END:case t.ui.keyCode.PAGE_UP:case t.ui.keyCode.PAGE_DOWN:case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(i.preventDefault(),!this._keySliding&&(this._keySliding=!0,t(i.target).addClass("ui-state-active"),s=this._start(i,r),s===!1))return}switch(o=this.options.step,n=a=this.options.values&&this.options.values.length?this.values(r):this.value(),i.keyCode){case t.ui.keyCode.HOME:a=this._valueMin();break;case t.ui.keyCode.END:a=this._valueMax();break;case t.ui.keyCode.PAGE_UP:a=this._trimAlignValue(n+(this._valueMax()-this._valueMin())/e);break;case t.ui.keyCode.PAGE_DOWN:a=this._trimAlignValue(n-(this._valueMax()-this._valueMin())/e);break;case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:if(n===this._valueMax())return;a=this._trimAlignValue(n+o);break;case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(n===this._valueMin())return;a=this._trimAlignValue(n-o)}this._slide(i,r,a)},click:function(t){t.preventDefault()},keyup:function(e){var i=t(e.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(e,i),this._change(e,i),t(e.target).removeClass("ui-state-active"))}}})})(jQuery);(function(t){function e(t,e,i){return t>e&&e+i>t}function i(t){return/left|right/.test(t.css("float"))||/inline|table-cell/.test(t.css("display"))}t.widget("ui.sortable",t.ui.mouse,{version:"1.10.4",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_create:function(){var t=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?"x"===t.axis||i(this.items[0].item):!1,this.offset=this.element.offset(),this._mouseInit(),this.ready=!0},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var t=this.items.length-1;t>=0;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_setOption:function(e,i){"disabled"===e?(this.options[e]=i,this.widget().toggleClass("ui-sortable-disabled",!!i)):t.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(e,i){var s=null,n=!1,o=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(e),t(e.target).parents().each(function(){return t.data(this,o.widgetName+"-item")===o?(s=t(this),!1):undefined}),t.data(e.target,o.widgetName+"-item")===o&&(s=t(e.target)),s?!this.options.handle||i||(t(this.options.handle,s).find("*").addBack().each(function(){this===e.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(e,i,s){var n,o,a=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(e),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},t.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,a.cursorAt&&this._adjustOffsetFromHelper(a.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),a.containment&&this._setContainment(),a.cursor&&"auto"!==a.cursor&&(o=this.document.find("body"),this.storedCursor=o.css("cursor"),o.css("cursor",a.cursor),this.storedStylesheet=t("<style>*{ cursor: "+a.cursor+" !important; }</style>").appendTo(o)),a.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",a.opacity)),a.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",a.zIndex)),this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",e,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",e,this._uiHash(this));return t.ui.ddmanager&&(t.ui.ddmanager.current=this),t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(e),!0},_mouseDrag:function(e){var i,s,n,o,a=this.options,r=!1;for(this.position=this._generatePosition(e),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-e.pageY<a.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+a.scrollSpeed:e.pageY-this.overflowOffset.top<a.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-a.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-e.pageX<a.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+a.scrollSpeed:e.pageX-this.overflowOffset.left<a.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-a.scrollSpeed)):(e.pageY-t(document).scrollTop()<a.scrollSensitivity?r=t(document).scrollTop(t(document).scrollTop()-a.scrollSpeed):t(window).height()-(e.pageY-t(document).scrollTop())<a.scrollSensitivity&&(r=t(document).scrollTop(t(document).scrollTop()+a.scrollSpeed)),e.pageX-t(document).scrollLeft()<a.scrollSensitivity?r=t(document).scrollLeft(t(document).scrollLeft()-a.scrollSpeed):t(window).width()-(e.pageX-t(document).scrollLeft())<a.scrollSensitivity&&(r=t(document).scrollLeft(t(document).scrollLeft()+a.scrollSpeed))),r!==!1&&t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],n=s.item[0],o=this._intersectsWithPointer(s),o&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===o?"next":"prev"]()[0]!==n&&!t.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!t.contains(this.element[0],n):!0)){if(this.direction=1===o?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(e,s),this._trigger("change",e,this._uiHash());break}return this._contactContainers(e),t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),this._trigger("sort",e,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(e,i){if(e){if(t.ui.ddmanager&&!this.options.dropBehaviour&&t.ui.ddmanager.drop(this,e),this.options.revert){var s=this,n=this.placeholder.offset(),o=this.options.axis,a={};o&&"x"!==o||(a.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollLeft)),o&&"y"!==o||(a.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,t(this.helper).animate(a,parseInt(this.options.revert,10)||500,function(){s._clear(e)})}else this._clear(e,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var e=this.containers.length-1;e>=0;e--)this.containers[e]._trigger("deactivate",null,this._uiHash(this)),this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",null,this._uiHash(this)),this.containers[e].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),t.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?t(this.domPosition.prev).after(this.currentItem):t(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},t(i).each(function(){var i=(t(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);i&&s.push((e.key||i[1]+"[]")+"="+(e.key&&e.expression?i[1]:i[2]))}),!s.length&&e.key&&s.push(e.key+"="),s.join("&")},toArray:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},i.each(function(){s.push(t(e.item||this).attr(e.attribute||"id")||"")}),s},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,o=t.left,a=o+t.width,r=t.top,h=r+t.height,l=this.offset.click.top,c=this.offset.click.left,u="x"===this.options.axis||s+l>r&&h>s+l,d="y"===this.options.axis||e+c>o&&a>e+c,p=u&&d;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>t[this.floating?"width":"height"]?p:e+this.helperProportions.width/2>o&&a>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(t){var i="x"===this.options.axis||e(this.positionAbs.top+this.offset.click.top,t.top,t.height),s="y"===this.options.axis||e(this.positionAbs.left+this.offset.click.left,t.left,t.width),n=i&&s,o=this._getDragVerticalDirection(),a=this._getDragHorizontalDirection();return n?this.floating?a&&"right"===a||"down"===o?2:1:o&&("down"===o?2:1):!1},_intersectsWithSides:function(t){var i=e(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),s=e(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),n=this._getDragVerticalDirection(),o=this._getDragHorizontalDirection();return this.floating&&o?"right"===o&&s||"left"===o&&!s:n&&("down"===n&&i||"up"===n&&!i)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!==t&&(t>0?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!==t&&(t>0?"right":"left")},refresh:function(t){return this._refreshItems(t),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(e){function i(){r.push(this)}var s,n,o,a,r=[],h=[],l=this._connectWith();if(l&&e)for(s=l.length-1;s>=0;s--)for(o=t(l[s]),n=o.length-1;n>=0;n--)a=t.data(o[n],this.widgetFullName),a&&a!==this&&!a.options.disabled&&h.push([t.isFunction(a.options.items)?a.options.items.call(a.element):t(a.options.items,a.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),a]);for(h.push([t.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):t(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=h.length-1;s>=0;s--)h[s][0].each(i);return t(r)},_removeCurrentsFromItems:function(){var e=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=t.grep(this.items,function(t){for(var i=0;e.length>i;i++)if(e[i]===t.item[0])return!1;return!0})},_refreshItems:function(e){this.items=[],this.containers=[this];var i,s,n,o,a,r,h,l,c=this.items,u=[[t.isFunction(this.options.items)?this.options.items.call(this.element[0],e,{item:this.currentItem}):t(this.options.items,this.element),this]],d=this._connectWith();if(d&&this.ready)for(i=d.length-1;i>=0;i--)for(n=t(d[i]),s=n.length-1;s>=0;s--)o=t.data(n[s],this.widgetFullName),o&&o!==this&&!o.options.disabled&&(u.push([t.isFunction(o.options.items)?o.options.items.call(o.element[0],e,{item:this.currentItem}):t(o.options.items,o.element),o]),this.containers.push(o));for(i=u.length-1;i>=0;i--)for(a=u[i][1],r=u[i][0],s=0,l=r.length;l>s;s++)h=t(r[s]),h.data(this.widgetName+"-item",a),c.push({item:h,instance:a,width:0,height:0,left:0,top:0})},refreshPositions:function(e){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,o;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?t(this.options.toleranceElement,s.item):s.item,e||(s.width=n.outerWidth(),s.height=n.outerHeight()),o=n.offset(),s.left=o.left,s.top=o.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)o=this.containers[i].element.offset(),this.containers[i].containerCache.left=o.left,this.containers[i].containerCache.top=o.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(e){e=e||this;var i,s=e.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=e.currentItem[0].nodeName.toLowerCase(),n=t("<"+s+">",e.document[0]).addClass(i||e.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tr"===s?e.currentItem.children().each(function(){t("<td>&#160;</td>",e.document[0]).attr("colspan",t(this).attr("colspan")||1).appendTo(n)}):"img"===s&&n.attr("src",e.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(t,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(e.currentItem.innerHeight()-parseInt(e.currentItem.css("paddingTop")||0,10)-parseInt(e.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(e.currentItem.innerWidth()-parseInt(e.currentItem.css("paddingLeft")||0,10)-parseInt(e.currentItem.css("paddingRight")||0,10)))}}),e.placeholder=t(s.placeholder.element.call(e.element,e.currentItem)),e.currentItem.after(e.placeholder),s.placeholder.update(e,e.placeholder)},_contactContainers:function(s){var n,o,a,r,h,l,c,u,d,p,f=null,g=null;for(n=this.containers.length-1;n>=0;n--)if(!t.contains(this.currentItem[0],this.containers[n].element[0]))if(this._intersectsWith(this.containers[n].containerCache)){if(f&&t.contains(this.containers[n].element[0],f.element[0]))continue;f=this.containers[n],g=n}else this.containers[n].containerCache.over&&(this.containers[n]._trigger("out",s,this._uiHash(this)),this.containers[n].containerCache.over=0);if(f)if(1===this.containers.length)this.containers[g].containerCache.over||(this.containers[g]._trigger("over",s,this._uiHash(this)),this.containers[g].containerCache.over=1);else{for(a=1e4,r=null,p=f.floating||i(this.currentItem),h=p?"left":"top",l=p?"width":"height",c=this.positionAbs[h]+this.offset.click[h],o=this.items.length-1;o>=0;o--)t.contains(this.containers[g].element[0],this.items[o].item[0])&&this.items[o].item[0]!==this.currentItem[0]&&(!p||e(this.positionAbs.top+this.offset.click.top,this.items[o].top,this.items[o].height))&&(u=this.items[o].item.offset()[h],d=!1,Math.abs(u-c)>Math.abs(u+this.items[o][l]-c)&&(d=!0,u+=this.items[o][l]),a>Math.abs(u-c)&&(a=Math.abs(u-c),r=this.items[o],this.direction=d?"up":"down"));if(!r&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[g])return;r?this._rearrange(s,r,null,!0):this._rearrange(s,null,this.containers[g].element,!0),this._trigger("change",s,this._uiHash()),this.containers[g]._trigger("change",s,this._uiHash(this)),this.currentContainer=this.containers[g],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[g]._trigger("over",s,this._uiHash(this)),this.containers[g].containerCache.over=1}},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper)?t(i.helper.apply(this.element[0],[e,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||t("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var e=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&t.ui.ie)&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var t=this.currentItem.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,t("document"===n.containment?document:window).width()-this.helperProportions.width-this.margins.left,(t("document"===n.containment?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(e=t(n.containment)[0],i=t(n.containment).offset(),s="hidden"!==t(e).css("overflow"),this.containment=[i.left+(parseInt(t(e).css("borderLeftWidth"),10)||0)+(parseInt(t(e).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(t(e).css("borderTopWidth"),10)||0)+(parseInt(t(e).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(e.scrollWidth,e.offsetWidth):e.offsetWidth)-(parseInt(t(e).css("borderLeftWidth"),10)||0)-(parseInt(t(e).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(e.scrollHeight,e.offsetHeight):e.offsetHeight)-(parseInt(t(e).css("borderTopWidth"),10)||0)-(parseInt(t(e).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(e,i){i||(i=this.position);var s="absolute"===e?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())*s}},_generatePosition:function(e){var i,s,n=this.options,o=e.pageX,a=e.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==document&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(e.pageX-this.offset.click.left<this.containment[0]&&(o=this.containment[0]+this.offset.click.left),e.pageY-this.offset.click.top<this.containment[1]&&(a=this.containment[1]+this.offset.click.top),e.pageX-this.offset.click.left>this.containment[2]&&(o=this.containment[2]+this.offset.click.left),e.pageY-this.offset.click.top>this.containment[3]&&(a=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((a-this.originalPageY)/n.grid[1])*n.grid[1],a=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((o-this.originalPageX)/n.grid[0])*n.grid[0],o=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){function i(t,e,i){return function(s){i._trigger(t,s,e._uiHash(e))}}this.reverting=!1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!e&&n.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||n.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(n.push(function(t){this._trigger("remove",t,this._uiHash())}),n.push(function(t){return function(e){t._trigger("receive",e,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(t){return function(e){t._trigger("update",e,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)e||n.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,this.cancelHelperRemoval){if(!e){for(this._trigger("beforeStop",t,this._uiHash()),s=0;n.length>s;s++)n[s].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!1}if(e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null,!e){for(s=0;n.length>s;s++)n[s].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!0},_trigger:function(){t.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(e){var i=e||this;return{helper:i.helper,placeholder:i.placeholder||t([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:e?e.element:null}}})})(jQuery);(function(t){function e(t){return function(){var e=this.element.val();t.apply(this,arguments),this._refresh(),e!==this.element.val()&&this._trigger("change")}}t.widget("ui.spinner",{version:"1.10.4",defaultElement:"<input>",widgetEventPrefix:"spin",options:{culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var e={},i=this.element;return t.each(["min","max","step"],function(t,s){var n=i.attr(s);void 0!==n&&n.length&&(e[s]=n)}),e},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t),void 0)},mousewheel:function(t,e){if(e){if(!this.spinning&&!this._start(t))return!1;this._spin((e>0?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},"mousedown .ui-spinner-button":function(e){function i(){var t=this.element[0]===this.document[0].activeElement;t||(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),e.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(e)!==!1&&this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(e){return t(e.currentTarget).hasClass("ui-state-active")?this._start(e)===!1?!1:(this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var t=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this.element.attr("role","spinbutton"),this.buttons=t.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(.5*t.height())&&t.height()>0&&t.height(t.height()),this.options.disabled&&this.disable()},_keydown:function(e){var i=this.options,s=t.ui.keyCode;switch(e.keyCode){case s.UP:return this._repeat(null,1,e),!0;case s.DOWN:return this._repeat(null,-1,e),!0;case s.PAGE_UP:return this._repeat(null,i.page,e),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,e),!0}return!1},_uiSpinnerHtml:function(){return"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"},_buttonHtml:function(){return"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'><span class='ui-icon "+this.options.icons.up+"'>&#9650;</span>"+"</a>"+"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>"+"<span class='ui-icon "+this.options.icons.down+"'>&#9660;</span>"+"</a>"},_start:function(t){return this.spinning||this._trigger("start",t)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&this._trigger("spin",e,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(e){var i=this.options.incremental;return i?t.isFunction(i)?i(e):Math.floor(e*e*e/5e4-e*e/500+17*e/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_adjustValue:function(t){var e,i,s=this.options;return e=null!==s.min?s.min:0,i=t-e,i=Math.round(i/s.step)*s.step,t=e+i,t=parseFloat(t.toFixed(this._precision())),null!==s.max&&t>s.max?s.max:null!==s.min&&s.min>t?s.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",t))},_setOption:function(t,e){if("culture"===t||"numberFormat"===t){var i=this._parse(this.element.val());return this.options[t]=e,this.element.val(this._format(i)),void 0}("max"===t||"min"===t||"step"===t)&&"string"==typeof e&&(e=this._parse(e)),"icons"===t&&(this.buttons.first().find(".ui-icon").removeClass(this.options.icons.up).addClass(e.up),this.buttons.last().find(".ui-icon").removeClass(this.options.icons.down).addClass(e.down)),this._super(t,e),"disabled"===t&&(e?(this.element.prop("disabled",!0),this.buttons.button("disable")):(this.element.prop("disabled",!1),this.buttons.button("enable")))},_setOptions:e(function(t){this._super(t),this._value(this.element.val())}),_parse:function(t){return"string"==typeof t&&""!==t&&(t=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t),""===t||isNaN(t)?null:t},_format:function(t){return""===t?"":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},_value:function(t,e){var i;""!==t&&(i=this._parse(t),null!==i&&(e||(i=this._adjustValue(i)),t=this._format(i))),this.element.val(t),this._refresh()},_destroy:function(){this.element.removeClass("ui-spinner-input").prop("disabled",!1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:e(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:e(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:e(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:e(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){return arguments.length?(e(this._value).call(this,t),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}})})(jQuery);(function(t,e){function i(){return++n}function s(t){return t=t.cloneNode(!1),t.hash.length>1&&decodeURIComponent(t.href.replace(a,""))===decodeURIComponent(location.href.replace(a,""))}var n=0,a=/#.*$/;t.widget("ui.tabs",{version:"1.10.4",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_create:function(){var e=this,i=this.options;this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",i.collapsible).delegate(".ui-tabs-nav > li","mousedown"+this.eventNamespace,function(e){t(this).is(".ui-state-disabled")&&e.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){t(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this._processTabs(),i.active=this._initialActive(),t.isArray(i.disabled)&&(i.disabled=t.unique(i.disabled.concat(t.map(this.tabs.filter(".ui-state-disabled"),function(t){return e.tabs.index(t)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):t(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var i=this.options.active,s=this.options.collapsible,n=location.hash.substring(1);return null===i&&(n&&this.tabs.each(function(s,a){return t(a).attr("aria-controls")===n?(i=s,!1):e}),null===i&&(i=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===i||-1===i)&&(i=this.tabs.length?0:!1)),i!==!1&&(i=this.tabs.index(this.tabs.eq(i)),-1===i&&(i=s?!1:0)),!s&&i===!1&&this.anchors.length&&(i=0),i},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):t()}},_tabKeydown:function(i){var s=t(this.document[0].activeElement).closest("li"),n=this.tabs.index(s),a=!0;if(!this._handlePageNav(i)){switch(i.keyCode){case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:n++;break;case t.ui.keyCode.UP:case t.ui.keyCode.LEFT:a=!1,n--;break;case t.ui.keyCode.END:n=this.anchors.length-1;break;case t.ui.keyCode.HOME:n=0;break;case t.ui.keyCode.SPACE:return i.preventDefault(),clearTimeout(this.activating),this._activate(n),e;case t.ui.keyCode.ENTER:return i.preventDefault(),clearTimeout(this.activating),this._activate(n===this.options.active?!1:n),e;default:return}i.preventDefault(),clearTimeout(this.activating),n=this._focusNextTab(n,a),i.ctrlKey||(s.attr("aria-selected","false"),this.tabs.eq(n).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",n)},this.delay))}},_panelKeydown:function(e){this._handlePageNav(e)||e.ctrlKey&&e.keyCode===t.ui.keyCode.UP&&(e.preventDefault(),this.active.focus())},_handlePageNav:function(i){return i.altKey&&i.keyCode===t.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):i.altKey&&i.keyCode===t.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):e},_findNextTab:function(e,i){function s(){return e>n&&(e=0),0>e&&(e=n),e}for(var n=this.tabs.length-1;-1!==t.inArray(s(),this.options.disabled);)e=i?e+1:e-1;return e},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).focus(),t},_setOption:function(t,i){return"active"===t?(this._activate(i),e):"disabled"===t?(this._setupDisabled(i),e):(this._super(t,i),"collapsible"===t&&(this.element.toggleClass("ui-tabs-collapsible",i),i||this.options.active!==!1||this._activate(0)),"event"===t&&this._setupEvents(i),"heightStyle"===t&&this._setupHeightStyle(i),e)},_tabId:function(t){return t.attr("aria-controls")||"ui-tabs-"+i()},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var e=this.options,i=this.tablist.children(":has(a[href])");e.disabled=t.map(i.filter(".ui-state-disabled"),function(t){return i.index(t)}),this._processTabs(),e.active!==!1&&this.anchors.length?this.active.length&&!t.contains(this.tablist[0],this.active[0])?this.tabs.length===e.disabled.length?(e.active=!1,this.active=t()):this._activate(this._findNextTab(Math.max(0,e.active-1),!1)):e.active=this.tabs.index(this.active):(e.active=!1,this.active=t()),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-expanded":"false","aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-expanded":"true","aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var e=this;this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist"),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return t("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=t(),this.anchors.each(function(i,n){var a,o,r,h=t(n).uniqueId().attr("id"),l=t(n).closest("li"),c=l.attr("aria-controls");s(n)?(a=n.hash,o=e.element.find(e._sanitizeSelector(a))):(r=e._tabId(l),a="#"+r,o=e.element.find(a),o.length||(o=e._createPanel(r),o.insertAfter(e.panels[i-1]||e.tablist)),o.attr("aria-live","polite")),o.length&&(e.panels=e.panels.add(o)),c&&l.data("ui-tabs-aria-controls",c),l.attr({"aria-controls":a.substring(1),"aria-labelledby":h}),o.attr("aria-labelledby",h)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel")},_getList:function(){return this.tablist||this.element.find("ol,ul").eq(0)},_createPanel:function(e){return t("<div>").attr("id",e).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(e){t.isArray(e)&&(e.length?e.length===this.anchors.length&&(e=!0):e=!1);for(var i,s=0;i=this.tabs[s];s++)e===!0||-1!==t.inArray(s,e)?t(i).addClass("ui-state-disabled").attr("aria-disabled","true"):t(i).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=e},_setupEvents:function(e){var i={click:function(t){t.preventDefault()}};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(e){var i,s=this.element.parent();"fill"===e?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var e=t(this),s=e.css("position");"absolute"!==s&&"fixed"!==s&&(i-=e.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=t(this).outerHeight(!0)}),this.panels.each(function(){t(this).height(Math.max(0,i-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.panels.each(function(){i=Math.max(i,t(this).height("").height())}).height(i))},_eventHandler:function(e){var i=this.options,s=this.active,n=t(e.currentTarget),a=n.closest("li"),o=a[0]===s[0],r=o&&i.collapsible,h=r?t():this._getPanelForTab(a),l=s.length?this._getPanelForTab(s):t(),c={oldTab:s,oldPanel:l,newTab:r?t():a,newPanel:h};e.preventDefault(),a.hasClass("ui-state-disabled")||a.hasClass("ui-tabs-loading")||this.running||o&&!i.collapsible||this._trigger("beforeActivate",e,c)===!1||(i.active=r?!1:this.tabs.index(a),this.active=o?t():a,this.xhr&&this.xhr.abort(),l.length||h.length||t.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(a),e),this._toggle(e,c))},_toggle:function(e,i){function s(){a.running=!1,a._trigger("activate",e,i)}function n(){i.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),o.length&&a.options.show?a._show(o,a.options.show,s):(o.show(),s())}var a=this,o=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),n()}):(i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),r.hide(),n()),r.attr({"aria-expanded":"false","aria-hidden":"true"}),i.oldTab.attr("aria-selected","false"),o.length&&r.length?i.oldTab.attr("tabIndex",-1):o.length&&this.tabs.filter(function(){return 0===t(this).attr("tabIndex")}).attr("tabIndex",-1),o.attr({"aria-expanded":"true","aria-hidden":"false"}),i.newTab.attr({"aria-selected":"true",tabIndex:0})},_activate:function(e){var i,s=this._findActive(e);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return e===!1?t():this.tabs.eq(e)},_getIndex:function(t){return"string"==typeof t&&(t=this.anchors.index(this.anchors.filter("[href$='"+t+"']"))),t},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){t.data(this,"ui-tabs-destroy")?t(this).remove():t(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var e=t(this),i=e.data("ui-tabs-aria-controls");i?e.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):e.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(i){var s=this.options.disabled;s!==!1&&(i===e?s=!1:(i=this._getIndex(i),s=t.isArray(s)?t.map(s,function(t){return t!==i?t:null}):t.map(this.tabs,function(t,e){return e!==i?e:null})),this._setupDisabled(s))},disable:function(i){var s=this.options.disabled;if(s!==!0){if(i===e)s=!0;else{if(i=this._getIndex(i),-1!==t.inArray(i,s))return;s=t.isArray(s)?t.merge([i],s).sort():[i]}this._setupDisabled(s)}},load:function(e,i){e=this._getIndex(e);var n=this,a=this.tabs.eq(e),o=a.find(".ui-tabs-anchor"),r=this._getPanelForTab(a),h={tab:a,panel:r};s(o[0])||(this.xhr=t.ajax(this._ajaxSettings(o,i,h)),this.xhr&&"canceled"!==this.xhr.statusText&&(a.addClass("ui-tabs-loading"),r.attr("aria-busy","true"),this.xhr.success(function(t){setTimeout(function(){r.html(t),n._trigger("load",i,h)},1)}).complete(function(t,e){setTimeout(function(){"abort"===e&&n.panels.stop(!1,!0),a.removeClass("ui-tabs-loading"),r.removeAttr("aria-busy"),t===n.xhr&&delete n.xhr},1)})))},_ajaxSettings:function(e,i,s){var n=this;return{url:e.attr("href"),beforeSend:function(e,a){return n._trigger("beforeLoad",i,t.extend({jqXHR:e,ajaxSettings:a},s))}}},_getPanelForTab:function(e){var i=t(e).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}})})(jQuery);(function(t){function e(e,i){var s=(e.attr("aria-describedby")||"").split(/\s+/);s.push(i),e.data("ui-tooltip-id",i).attr("aria-describedby",t.trim(s.join(" ")))}function i(e){var i=e.data("ui-tooltip-id"),s=(e.attr("aria-describedby")||"").split(/\s+/),n=t.inArray(i,s);-1!==n&&s.splice(n,1),e.removeData("ui-tooltip-id"),s=t.trim(s.join(" ")),s?e.attr("aria-describedby",s):e.removeAttr("aria-describedby")}var s=0;t.widget("ui.tooltip",{version:"1.10.4",options:{content:function(){var e=t(this).attr("title")||"";return t("<a>").text(e).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable()},_setOption:function(e,i){var s=this;return"disabled"===e?(this[i?"_disable":"_enable"](),this.options[e]=i,void 0):(this._super(e,i),"content"===e&&t.each(this.tooltips,function(t,e){s._updateContent(e)}),void 0)},_disable:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur");n.target=n.currentTarget=s[0],e.close(n,!0)}),this.element.find(this.options.items).addBack().each(function(){var e=t(this);e.is("[title]")&&e.data("ui-tooltip-title",e.attr("title")).attr("title","")})},_enable:function(){this.element.find(this.options.items).addBack().each(function(){var e=t(this);e.data("ui-tooltip-title")&&e.attr("title",e.data("ui-tooltip-title"))})},open:function(e){var i=this,s=t(e?e.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),e&&"mouseover"===e.type&&s.parents().each(function(){var e,s=t(this);s.data("ui-tooltip-open")&&(e=t.Event("blur"),e.target=e.currentTarget=this,i.close(e,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._updateContent(s,e))},_updateContent:function(t,e){var i,s=this.options.content,n=this,o=e?e.type:null;return"string"==typeof s?this._open(e,t,s):(i=s.call(t[0],function(i){t.data("ui-tooltip-open")&&n._delay(function(){e&&(e.type=o),this._open(e,t,i)})}),i&&this._open(e,t,i),void 0)},_open:function(i,s,n){function o(t){l.of=t,a.is(":hidden")||a.position(l)}var a,r,h,l=t.extend({},this.options.position);if(n){if(a=this._find(s),a.length)return a.find(".ui-tooltip-content").html(n),void 0;s.is("[title]")&&(i&&"mouseover"===i.type?s.attr("title",""):s.removeAttr("title")),a=this._tooltip(s),e(s,a.attr("id")),a.find(".ui-tooltip-content").html(n),this.options.track&&i&&/^mouse/.test(i.type)?(this._on(this.document,{mousemove:o}),o(i)):a.position(t.extend({of:s},this.options.position)),a.hide(),this._show(a,this.options.show),this.options.show&&this.options.show.delay&&(h=this.delayedShow=setInterval(function(){a.is(":visible")&&(o(l.of),clearInterval(h))},t.fx.interval)),this._trigger("open",i,{tooltip:a}),r={keyup:function(e){if(e.keyCode===t.ui.keyCode.ESCAPE){var i=t.Event(e);i.currentTarget=s[0],this.close(i,!0)}},remove:function(){this._removeTooltip(a)}},i&&"mouseover"!==i.type||(r.mouseleave="close"),i&&"focusin"!==i.type||(r.focusout="close"),this._on(!0,s,r)}},close:function(e){var s=this,n=t(e?e.currentTarget:this.element),o=this._find(n);this.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&n.attr("title",n.data("ui-tooltip-title")),i(n),o.stop(!0),this._hide(o,this.options.hide,function(){s._removeTooltip(t(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),e&&"mouseleave"===e.type&&t.each(this.parents,function(e,i){t(i.element).attr("title",i.title),delete s.parents[e]}),this.closing=!0,this._trigger("close",e,{tooltip:o}),this.closing=!1)},_tooltip:function(e){var i="ui-tooltip-"+s++,n=t("<div>").attr({id:i,role:"tooltip"}).addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||""));return t("<div>").addClass("ui-tooltip-content").appendTo(n),n.appendTo(this.document[0].body),this.tooltips[i]=e,n},_find:function(e){var i=e.data("ui-tooltip-id");return i?t("#"+i):t()},_removeTooltip:function(t){t.remove(),delete this.tooltips[t.attr("id")]},_destroy:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur");n.target=n.currentTarget=s[0],e.close(n,!0),t("#"+i).remove(),s.data("ui-tooltip-title")&&(s.attr("title",s.data("ui-tooltip-title")),s.removeData("ui-tooltip-title"))})}})})(jQuery); \ No newline at end of file diff --git a/assets/js/jquery-ui.custom.min.js b/assets/js/jquery-ui.custom.min.js deleted file mode 100644 index 08557807..00000000 --- a/assets/js/jquery-ui.custom.min.js +++ /dev/null @@ -1,16 +0,0 @@ -/*! jQuery UI - v1.11.2 - 2014-10-17 - * http://jqueryui.com - * Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -(function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(jQuery)})(function(e){function t(t,s){var n,a,o,r=t.nodeName.toLowerCase();return"area"===r?(n=t.parentNode,a=n.name,t.href&&a&&"map"===n.nodeName.toLowerCase()?(o=e("img[usemap='#"+a+"']")[0],!!o&&i(o)):!1):(/input|select|textarea|button|object/.test(r)?!t.disabled:"a"===r?t.href||s:s)&&i(t)}function i(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}e.ui=e.ui||{},e.extend(e.ui,{version:"1.11.2",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({scrollParent:function(t){var i=this.css("position"),s="absolute"===i,n=t?/(auto|scroll|hidden)/:/(auto|scroll)/,a=this.parents().filter(function(){var t=e(this);return s&&"static"===t.css("position")?!1:n.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==i&&a.length?a:e(this[0].ownerDocument||document)},uniqueId:function(){var e=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++e)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,s){return!!e.data(t,s[3])},focusable:function(i){return t(i,!isNaN(e.attr(i,"tabindex")))},tabbable:function(i){var s=e.attr(i,"tabindex"),n=isNaN(s);return(n||s>=0)&&t(i,!n)}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(t,i){function s(t,i,s,a){return e.each(n,function(){i-=parseFloat(e.css(t,"padding"+this))||0,s&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),a&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],a=i.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+i]=function(t){return void 0===t?o["inner"+i].call(this):this.each(function(){e(this).css(a,s(this,t)+"px")})},e.fn["outer"+i]=function(t,n){return"number"!=typeof t?o["outer"+i].call(this,t):this.each(function(){e(this).css(a,s(this,t,!0,n)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.fn.extend({focus:function(t){return function(i,s){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),s&&s.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),disableSelection:function(){var e="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.bind(e+".ui-disableSelection",function(e){e.preventDefault()})}}(),enableSelection:function(){return this.unbind(".ui-disableSelection")},zIndex:function(t){if(void 0!==t)return this.css("zIndex",t);if(this.length)for(var i,s,n=e(this[0]);n.length&&n[0]!==document;){if(i=n.css("position"),("absolute"===i||"relative"===i||"fixed"===i)&&(s=parseInt(n.css("zIndex"),10),!isNaN(s)&&0!==s))return s;n=n.parent()}return 0}}),e.ui.plugin={add:function(t,i,s){var n,a=e.ui[t].prototype;for(n in s)a.plugins[n]=a.plugins[n]||[],a.plugins[n].push([i,s[n]])},call:function(e,t,i,s){var n,a=e.plugins[t];if(a&&(s||e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType))for(n=0;a.length>n;n++)e.options[a[n][0]]&&a[n][1].apply(e.element,i)}}}); -/*! jQuery UI - v1.11.2 - 2014-10-17 - * http://jqueryui.com - * Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -(function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(jQuery)})(function(e){var t=0,i=Array.prototype.slice;return e.cleanData=function(t){return function(i){var s,n,a;for(a=0;null!=(n=i[a]);a++)try{s=e._data(n,"events"),s&&s.remove&&e(n).triggerHandler("remove")}catch(o){}t(i)}}(e.cleanData),e.widget=function(t,i,s){var n,a,o,r,h={},l=t.split(".")[0];return t=t.split(".")[1],n=l+"-"+t,s||(s=i,i=e.Widget),e.expr[":"][n.toLowerCase()]=function(t){return!!e.data(t,n)},e[l]=e[l]||{},a=e[l][t],o=e[l][t]=function(e,t){return this._createWidget?(arguments.length&&this._createWidget(e,t),void 0):new o(e,t)},e.extend(o,a,{version:s.version,_proto:e.extend({},s),_childConstructors:[]}),r=new i,r.options=e.widget.extend({},r.options),e.each(s,function(t,s){return e.isFunction(s)?(h[t]=function(){var e=function(){return i.prototype[t].apply(this,arguments)},n=function(e){return i.prototype[t].apply(this,e)};return function(){var t,i=this._super,a=this._superApply;return this._super=e,this._superApply=n,t=s.apply(this,arguments),this._super=i,this._superApply=a,t}}(),void 0):(h[t]=s,void 0)}),o.prototype=e.widget.extend(r,{widgetEventPrefix:a?r.widgetEventPrefix||t:t},h,{constructor:o,namespace:l,widgetName:t,widgetFullName:n}),a?(e.each(a._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete a._childConstructors):i._childConstructors.push(o),e.widget.bridge(t,o),o},e.widget.extend=function(t){for(var s,n,a=i.call(arguments,1),o=0,r=a.length;r>o;o++)for(s in a[o])n=a[o][s],a[o].hasOwnProperty(s)&&void 0!==n&&(t[s]=e.isPlainObject(n)?e.isPlainObject(t[s])?e.widget.extend({},t[s],n):e.widget.extend({},n):n);return t},e.widget.bridge=function(t,s){var n=s.prototype.widgetFullName||t;e.fn[t]=function(a){var o="string"==typeof a,r=i.call(arguments,1),h=this;return a=!o&&r.length?e.widget.extend.apply(null,[a].concat(r)):a,o?this.each(function(){var i,s=e.data(this,n);return"instance"===a?(h=s,!1):s?e.isFunction(s[a])&&"_"!==a.charAt(0)?(i=s[a].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):e.error("no such method '"+a+"' for "+t+" widget instance"):e.error("cannot call methods on "+t+" prior to initialization; "+"attempted to call method '"+a+"'")}):this.each(function(){var t=e.data(this,n);t?(t.option(a||{}),t._init&&t._init()):e.data(this,n,new s(a,this))}),h}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(i,s){s=e(s||this.defaultElement||this)[0],this.element=e(s),this.uuid=t++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=e(),this.hoverable=e(),this.focusable=e(),s!==this&&(e.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===s&&this.destroy()}}),this.document=e(s.style?s.ownerDocument:s.document||s),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this.options=e.widget.extend({},this.options,this._getCreateOptions(),i),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(t,i){var s,n,a,o=t;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof t)if(o={},s=t.split("."),t=s.shift(),s.length){for(n=o[t]=e.widget.extend({},this.options[t]),a=0;s.length-1>a;a++)n[s[a]]=n[s[a]]||{},n=n[s[a]];if(t=s.pop(),1===arguments.length)return void 0===n[t]?null:n[t];n[t]=i}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=i}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled",!!t),t&&(this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus"))),this},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_on:function(t,i,s){var n,a=this;"boolean"!=typeof t&&(s=i,i=t,t=!1),s?(i=n=e(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),e.each(s,function(s,o){function r(){return t||a.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof o?a[o]:o).apply(a,arguments):void 0}"string"!=typeof o&&(r.guid=o.guid=o.guid||r.guid||e.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+a.eventNamespace,u=h[2];u?n.delegate(u,l,r):i.bind(l,r)})},_off:function(t,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(i).undelegate(i),this.bindings=e(this.bindings.not(t).get()),this.focusable=e(this.focusable.not(t).get()),this.hoverable=e(this.hoverable.not(t).get())},_delay:function(e,t){function i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,s){var n,a,o=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],a=i.originalEvent)for(n in a)n in i||(i[n]=a[n]);return this.element.trigger(i,s),!(e.isFunction(o)&&o.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,n,a){"string"==typeof n&&(n={effect:n});var o,r=n?n===!0||"number"==typeof n?i:n.effect||i:t;n=n||{},"number"==typeof n&&(n={duration:n}),o=!e.isEmptyObject(n),n.complete=a,n.delay&&s.delay(n.delay),o&&e.effects&&e.effects.effect[r]?s[t](n):r!==t&&s[r]?s[r](n.duration,n.easing,a):s.queue(function(i){e(this)[t](),a&&a.call(s[0]),i()})}}),e.widget}); -/*! jQuery UI - v1.11.2 - 2014-10-17 - * http://jqueryui.com - * Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -(function(e){"function"==typeof define&&define.amd?define(["jquery","./widget"],e):e(jQuery)})(function(e){var t=!1;return e(document).mouseup(function(){t=!1}),e.widget("ui.mouse",{version:"1.11.2",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(i){return!0===e.data(i.target,t.widgetName+".preventClickEvent")?(e.removeData(i.target,t.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(i){if(!t){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(i),this._mouseDownEvent=i;var s=this,n=1===i.which,a="string"==typeof this.options.cancel&&i.target.nodeName?e(i.target).closest(this.options.cancel).length:!1;return n&&!a&&this._mouseCapture(i)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){s.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(i)&&this._mouseDelayMet(i)&&(this._mouseStarted=this._mouseStart(i)!==!1,!this._mouseStarted)?(i.preventDefault(),!0):(!0===e.data(i.target,this.widgetName+".preventClickEvent")&&e.removeData(i.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return s._mouseMove(e)},this._mouseUpDelegate=function(e){return s._mouseUp(e)},this.document.bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),i.preventDefault(),t=!0,!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button)return this._mouseUp(t);if(!t.which)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(i){return this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,i.target===this._mouseDownEvent.target&&e.data(i.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(i)),t=!1,!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}})}); -/*! jQuery UI - v1.11.2 - 2014-10-17 - * http://jqueryui.com - * Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -(function(e){"function"==typeof define&&define.amd?define(["jquery","./core","./mouse","./widget"],e):e(jQuery)})(function(e){return e.widget("ui.draggable",e.ui.mouse,{version:"1.11.2",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._setHandleClassName(),this._mouseInit()},_setOption:function(e,t){this._super(e,t),"handle"===e&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(t){var i=this.options;return this._blurActiveElement(t),this.helper||i.disabled||e(t.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(t),this.handle?(this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(t){this.iframeBlocks=this.document.find(t).map(function(){var t=e(this);return e("<div>").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var i=this.document[0];if(this.handleElement.is(t.target))try{i.activeElement&&"body"!==i.activeElement.nodeName.toLowerCase()&&e(i.activeElement).blur()}catch(s){}},_mouseStart:function(t){var i=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===e(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(t),this.originalPosition=this.position=this._generatePosition(t,!1),this.originalPageX=t.pageX,this.originalPageY=t.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._normalizeRightBottom(),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_refreshOffsets:function(e){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:e.pageX-this.offset.left,top:e.pageY-this.offset.top}},_mouseDrag:function(t,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",t,s)===!1)return this._mouseUp({}),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var i=this,s=!1;return e.ui.ddmanager&&!this.options.dropBehaviour&&(s=e.ui.ddmanager.drop(this,t)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",t)!==!1&&i._clear()}):this._trigger("stop",t)!==!1&&this._clear(),!1},_mouseUp:function(t){return this._unblockFrames(),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),this.handleElement.is(t.target)&&this.element.focus(),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){return this.options.handle?!!e(t.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this.handleElement.addClass("ui-draggable-handle")},_removeHandleClassName:function(){this.handleElement.removeClass("ui-draggable-handle")},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper),n=s?e(i.helper.apply(this.element[0],[t])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(e){return/(html|body)/i.test(e.tagName)||e===this.document[0]},_getParentOffset:function(){var t=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var e=this.element.position(),t=this._isRootNode(this.scrollParent[0]);return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+(t?0:this.scrollParent.scrollTop()),left:e.left-(parseInt(this.helper.css("left"),10)||0)+(t?0:this.scrollParent.scrollLeft())}},_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 t,i,s,n=this.options,a=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,e(window).scrollLeft()+e(window).width()-this.helperProportions.width-this.margins.left,e(window).scrollTop()+(e(window).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,e(a).width()-this.helperProportions.width-this.margins.left,(e(a).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=e(n.containment),s=i[0],s&&(t=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(t?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0)},_convertPositionTo:function(e,t){t||(t=this.position);var i="absolute"===e?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:t.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:t.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(e,t){var i,s,n,a,o=this.options,r=this._isRootNode(this.scrollParent[0]),h=e.pageX,l=e.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),t&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,e.pageX-this.offset.click.left<i[0]&&(h=i[0]+this.offset.click.left),e.pageY-this.offset.click.top<i[1]&&(l=i[1]+this.offset.click.top),e.pageX-this.offset.click.left>i[2]&&(h=i[2]+this.offset.click.left),e.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),o.grid&&(n=o.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/o.grid[1])*o.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-o.grid[1]:n+o.grid[1]:n,a=o.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/o.grid[0])*o.grid[0]:this.originalPageX,h=i?a-this.offset.click.left>=i[0]||a-this.offset.click.left>i[2]?a:a-this.offset.click.left>=i[0]?a-o.grid[0]:a+o.grid[0]:a),"y"===o.axis&&(h=this.originalPageX),"x"===o.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_normalizeRightBottom:function(){"y"!==this.options.axis&&"auto"!==this.helper.css("right")&&(this.helper.width(this.helper.width()),this.helper.css("right","auto")),"x"!==this.options.axis&&"auto"!==this.helper.css("bottom")&&(this.helper.height(this.helper.height()),this.helper.css("bottom","auto"))},_trigger:function(t,i,s){return s=s||this._uiHash(),e.ui.plugin.call(this,t,[i,s,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),e.Widget.prototype._trigger.call(this,t,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,i,s){var n=e.extend({},i,{item:s.element});s.sortables=[],e(s.options.connectToSortable).each(function(){var i=e(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",t,n))})},stop:function(t,i,s){var n=e.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,e.each(s.sortables,function(){var e=this;e.isOver?(e.isOver=0,s.cancelHelperRemoval=!0,e.cancelHelperRemoval=!1,e._storedCSS={position:e.placeholder.css("position"),top:e.placeholder.css("top"),left:e.placeholder.css("left")},e._mouseStop(t),e.options.helper=e.options._helper):(e.cancelHelperRemoval=!0,e._trigger("deactivate",t,n))})},drag:function(t,i,s){e.each(s.sortables,function(){var n=!1,a=this;a.positionAbs=s.positionAbs,a.helperProportions=s.helperProportions,a.offset.click=s.offset.click,a._intersectsWith(a.containerCache)&&(n=!0,e.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==a&&this._intersectsWith(this.containerCache)&&e.contains(a.element[0],this.element[0])&&(n=!1),n})),n?(a.isOver||(a.isOver=1,a.currentItem=i.helper.appendTo(a.element).data("ui-sortable-item",!0),a.options._helper=a.options.helper,a.options.helper=function(){return i.helper[0]},t.target=a.currentItem[0],a._mouseCapture(t,!0),a._mouseStart(t,!0,!0),a.offset.click.top=s.offset.click.top,a.offset.click.left=s.offset.click.left,a.offset.parent.left-=s.offset.parent.left-a.offset.parent.left,a.offset.parent.top-=s.offset.parent.top-a.offset.parent.top,s._trigger("toSortable",t),s.dropped=a.element,e.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,a.fromOutside=s),a.currentItem&&(a._mouseDrag(t),i.position=a.position)):a.isOver&&(a.isOver=0,a.cancelHelperRemoval=!0,a.options._revert=a.options.revert,a.options.revert=!1,a._trigger("out",t,a._uiHash(a)),a._mouseStop(t,!0),a.options.revert=a.options._revert,a.options.helper=a.options._helper,a.placeholder&&a.placeholder.remove(),s._refreshOffsets(t),i.position=s._generatePosition(t,!0),s._trigger("fromSortable",t),s.dropped=!1,e.each(s.sortables,function(){this.refreshPositions()}))})}}),e.ui.plugin.add("draggable","cursor",{start:function(t,i,s){var n=e("body"),a=s.options;n.css("cursor")&&(a._cursor=n.css("cursor")),n.css("cursor",a.cursor)},stop:function(t,i,s){var n=s.options;n._cursor&&e("body").css("cursor",n._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("opacity")&&(a._opacity=n.css("opacity")),n.css("opacity",a.opacity)},stop:function(t,i,s){var n=s.options;n._opacity&&e(i.helper).css("opacity",n._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(e,t,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,i,s){var n=s.options,a=!1,o=s.scrollParentNotHidden[0],r=s.document[0];o!==r&&"HTML"!==o.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+o.offsetHeight-t.pageY<n.scrollSensitivity?o.scrollTop=a=o.scrollTop+n.scrollSpeed:t.pageY-s.overflowOffset.top<n.scrollSensitivity&&(o.scrollTop=a=o.scrollTop-n.scrollSpeed)),n.axis&&"y"===n.axis||(s.overflowOffset.left+o.offsetWidth-t.pageX<n.scrollSensitivity?o.scrollLeft=a=o.scrollLeft+n.scrollSpeed:t.pageX-s.overflowOffset.left<n.scrollSensitivity&&(o.scrollLeft=a=o.scrollLeft-n.scrollSpeed))):(n.axis&&"x"===n.axis||(t.pageY-e(r).scrollTop()<n.scrollSensitivity?a=e(r).scrollTop(e(r).scrollTop()-n.scrollSpeed):e(window).height()-(t.pageY-e(r).scrollTop())<n.scrollSensitivity&&(a=e(r).scrollTop(e(r).scrollTop()+n.scrollSpeed))),n.axis&&"y"===n.axis||(t.pageX-e(r).scrollLeft()<n.scrollSensitivity?a=e(r).scrollLeft(e(r).scrollLeft()-n.scrollSpeed):e(window).width()-(t.pageX-e(r).scrollLeft())<n.scrollSensitivity&&(a=e(r).scrollLeft(e(r).scrollLeft()+n.scrollSpeed)))),a!==!1&&e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(s,t)}}),e.ui.plugin.add("draggable","snap",{start:function(t,i,s){var n=s.options;s.snapElements=[],e(n.snap.constructor!==String?n.snap.items||":data(ui-draggable)":n.snap).each(function(){var t=e(this),i=t.offset();this!==s.element[0]&&s.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:i.top,left:i.left})})},drag:function(t,i,s){var n,a,o,r,h,l,u,d,c,f,p=s.options,m=p.snapTolerance,g=i.offset.left,v=g+s.helperProportions.width,y=i.offset.top,_=y+s.helperProportions.height;for(c=s.snapElements.length-1;c>=0;c--)h=s.snapElements[c].left-s.margins.left,l=h+s.snapElements[c].width,u=s.snapElements[c].top-s.margins.top,d=u+s.snapElements[c].height,h-m>v||g>l+m||u-m>_||y>d+m||!e.contains(s.snapElements[c].item.ownerDocument,s.snapElements[c].item)?(s.snapElements[c].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=!1):("inner"!==p.snapMode&&(n=m>=Math.abs(u-_),a=m>=Math.abs(d-y),o=m>=Math.abs(h-v),r=m>=Math.abs(l-g),n&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.top=s._convertPositionTo("relative",{top:d,left:0}).top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),f=n||a||o||r,"outer"!==p.snapMode&&(n=m>=Math.abs(u-y),a=m>=Math.abs(d-_),o=m>=Math.abs(h-g),r=m>=Math.abs(l-v),n&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.top=s._convertPositionTo("relative",{top:d-s.helperProportions.height,left:0}).top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[c].snapping&&(n||a||o||r||f)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=n||a||o||r||f)}}),e.ui.plugin.add("draggable","stack",{start:function(t,i,s){var n,a=s.options,o=e.makeArray(e(a.stack)).sort(function(t,i){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(i).css("zIndex"),10)||0)});o.length&&(n=parseInt(e(o[0]).css("zIndex"),10)||0,e(o).each(function(t){e(this).css("zIndex",n+t)}),this.css("zIndex",n+o.length))}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("zIndex")&&(a._zIndex=n.css("zIndex")),n.css("zIndex",a.zIndex)},stop:function(t,i,s){var n=s.options;n._zIndex&&e(i.helper).css("zIndex",n._zIndex)}}),e.ui.draggable}); \ No newline at end of file diff --git a/assets/js/jquery.autocomplete.js b/assets/js/jquery.autocomplete.js deleted file mode 100644 index d000f92a..00000000 --- a/assets/js/jquery.autocomplete.js +++ /dev/null @@ -1,980 +0,0 @@ -/** -* Ajax Autocomplete for jQuery, version 1.2.16 -* (c) 2014 Tomas Kirda -* -* Ajax Autocomplete for jQuery is freely distributable under the terms of an MIT-style license. -* For details, see the web site: https://github.com/devbridge/jQuery-Autocomplete -*/ - -/*jslint browser: true, white: true, plusplus: true, vars: true */ -/*global define, window, document, jQuery, exports, require */ - -// Expose plugin as an AMD module if AMD loader is present: -(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // AMD. Register as an anonymous module. - define(['jquery'], factory); - } else if (typeof exports === 'object' && typeof require === 'function') { - // Browserify - factory(require('jquery')); - } else { - // Browser globals - factory(jQuery); - } -}(function ($) { - 'use strict'; - - var - utils = (function () { - return { - escapeRegExChars: function (value) { - return value.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); - }, - createNode: function (containerClass) { - var div = document.createElement('div'); - div.className = containerClass; - div.style.position = 'absolute'; - div.style.display = 'none'; - return div; - } - }; - }()), - - keys = { - ESC: 27, - TAB: 9, - RETURN: 13, - LEFT: 37, - UP: 38, - RIGHT: 39, - DOWN: 40 - }; - - function Autocomplete(el, options) { - //alert($('select[name=booking_r_city]').val()); - var noop = function () { }, - that = this, - defaults = { - ajaxSettings: {}, - autoSelectFirst: false, - appendTo: document.body, - serviceUrl: null, - lookup: null, - onSelect: null, - width: 'auto', - minChars: 1, - maxHeight: 300, - deferRequestBy: 0, - params: { }, - formatResult: Autocomplete.formatResult, - delimiter: null, - zIndex: 9999, - type: 'POST', - noCache: false, - onSearchStart: noop, - onSearchComplete: noop, - onSearchError: noop, - preserveInput: false, - containerClass: 'autocomplete-suggestions', - tabDisabled: false, - dataType: 'text', - currentRequest: null, - triggerSelectOnValidInput: true, - preventBadQueries: true, - lookupFilter: function (suggestion, originalQuery, queryLowerCase) { - return suggestion.value.toLowerCase().indexOf(queryLowerCase) !== -1; - }, - paramName: 'query', - transformResult: function (response) { - return typeof response === 'string' ? $.parseJSON(response) :response; - }, - showNoSuggestionNotice: false, - noSuggestionNotice: 'No results', - orientation: 'bottom', - forceFixPosition: false - }; - - // Shared variables: - that.element = el; - that.el = $(el); - that.suggestions = []; - that.badQueries = []; - that.selectedIndex = -1; - that.currentValue = that.element.value; - that.intervalId = 0; - that.cachedResponse = {}; - that.onChangeInterval = null; - that.onChange = null; - that.isLocal = false; - that.suggestionsContainer = null; - that.noSuggestionsContainer = null; - that.options = $.extend({}, defaults, options); - that.classes = { - selected: 'autocomplete-selected', - suggestion: 'autocomplete-suggestion' - }; - that.hint = null; - that.hintValue = ''; - that.selection = null; - - // Initialize and set options: - that.initialize(); - that.setOptions(options); - } - - Autocomplete.utils = utils; - - $.Autocomplete = Autocomplete; - - Autocomplete.formatResult = function (suggestion, currentValue) { - var pattern = '(' + utils.escapeRegExChars(currentValue) + ')'; - - return suggestion.value.replace(new RegExp(pattern, 'gi'), '<strong>$1<\/strong>'); - }; - - Autocomplete.prototype = { - - killerFn: null, - - initialize: function () { - var that = this, - suggestionSelector = '.' + that.classes.suggestion, - selected = that.classes.selected, - options = that.options, - container; - - // Remove autocomplete attribute to prevent native suggestions: - that.element.setAttribute('autocomplete', 'off'); - - that.killerFn = function (e) { - if ($(e.target).closest('.' + that.options.containerClass).length === 0) { - that.killSuggestions(); - that.disableKillerFn(); - } - }; - - // html() deals with many types: htmlString or Element or Array or jQuery - that.noSuggestionsContainer = $('<div class="autocomplete-no-suggestion"></div>') - .html(this.options.noSuggestionNotice).get(0); - - that.suggestionsContainer = Autocomplete.utils.createNode(options.containerClass); - - container = $(that.suggestionsContainer); - - container.appendTo(options.appendTo); - - // Only set width if it was provided: - if (options.width !== 'auto') { - container.width(options.width); - } - - // Listen for mouse over event on suggestions list: - container.on('mouseover.autocomplete', suggestionSelector, function () { - that.activate($(this).data('index')); - }); - - // Deselect active element when mouse leaves suggestions container: - container.on('mouseout.autocomplete', function () { - that.selectedIndex = -1; - container.children('.' + selected).removeClass(selected); - }); - - // Listen for click event on suggestions list: - container.on('click.autocomplete', suggestionSelector, function () { - that.select($(this).data('index')); - }); - - that.fixPositionCapture = function () { - if (that.visible) { - that.fixPosition(); - } - }; - - $(window).on('resize.autocomplete', that.fixPositionCapture); - - that.el.on('keydown.autocomplete', function (e) { that.onKeyPress(e); }); - that.el.on('keyup.autocomplete', function (e) { that.onKeyUp(e); }); - that.el.on('blur.autocomplete', function () { that.onBlur(); }); - that.el.on('focus.autocomplete', function () { that.onFocus(); }); - that.el.on('change.autocomplete', function (e) { that.onKeyUp(e); }); - that.el.on('input.autocomplete', function (e) { that.onKeyUp(e); }); - }, - - onFocus: function () { - var that = this; - that.fixPosition(); - if (that.options.minChars <= that.el.val().length) { - that.onValueChange(); - } - }, - - onBlur: function () { - this.enableKillerFn(); - }, - - setOptions: function (suppliedOptions) { - var that = this, - options = that.options; - - $.extend(options, suppliedOptions); - - that.isLocal = $.isArray(options.lookup); - - if (that.isLocal) { - options.lookup = that.verifySuggestionsFormat(options.lookup); - } - - options.orientation = that.validateOrientation(options.orientation, 'bottom'); - - // Adjust height, width and z-index: - $(that.suggestionsContainer).css({ - 'max-height': options.maxHeight + 'px', - 'width': options.width + 'px', - 'z-index': options.zIndex - }); - }, - - - clearCache: function () { - this.cachedResponse = {}; - this.badQueries = []; - }, - - clear: function () { - this.clearCache(); - this.currentValue = ''; - this.suggestions = []; - }, - - disable: function () { - var that = this; - that.disabled = true; - clearInterval(that.onChangeInterval); - if (that.currentRequest) { - that.currentRequest.abort(); - } - }, - - enable: function () { - this.disabled = false; - }, - - fixPosition: function () { - // Use only when container has already its content - - var that = this, - $container = $(that.suggestionsContainer), - containerParent = $container.parent().get(0); - // Fix position automatically when appended to body. - // In other cases force parameter must be given. - if (containerParent !== document.body && !that.options.forceFixPosition) { - return; - } - - // Choose orientation - var orientation = that.options.orientation, - containerHeight = $container.outerHeight(), - height = that.el.outerHeight(), - offset = that.el.offset(), - styles = { 'top': offset.top, 'left': offset.left }; - - if (orientation === 'auto') { - var viewPortHeight = $(window).height(), - scrollTop = $(window).scrollTop(), - topOverflow = -scrollTop + offset.top - containerHeight, - bottomOverflow = scrollTop + viewPortHeight - (offset.top + height + containerHeight); - - orientation = (Math.max(topOverflow, bottomOverflow) === topOverflow) ? 'top' : 'bottom'; - } - - if (orientation === 'top') { - styles.top += -containerHeight; - } else { - styles.top += height; - } - - // If container is not positioned to body, - // correct its position using offset parent offset - if(containerParent !== document.body) { - var opacity = $container.css('opacity'), - parentOffsetDiff; - - if (!that.visible){ - $container.css('opacity', 0).show(); - } - - parentOffsetDiff = $container.offsetParent().offset(); - styles.top -= parentOffsetDiff.top; - styles.left -= parentOffsetDiff.left; - - if (!that.visible){ - $container.css('opacity', opacity).hide(); - } - } - - // -2px to account for suggestions border. - if (that.options.width === 'auto') { - styles.width = (that.el.outerWidth() - 2) + 'px'; - } - - $container.css(styles); - }, - - enableKillerFn: function () { - var that = this; - $(document).on('click.autocomplete', that.killerFn); - }, - - disableKillerFn: function () { - var that = this; - $(document).off('click.autocomplete', that.killerFn); - }, - - killSuggestions: function () { - var that = this; - that.stopKillSuggestions(); - that.intervalId = window.setInterval(function () { - that.hide(); - that.stopKillSuggestions(); - }, 50); - }, - - stopKillSuggestions: function () { - window.clearInterval(this.intervalId); - }, - - isCursorAtEnd: function () { - var that = this, - valLength = that.el.val().length, - selectionStart = that.element.selectionStart, - range; - - if (typeof selectionStart === 'number') { - return selectionStart === valLength; - } - if (document.selection) { - range = document.selection.createRange(); - range.moveStart('character', -valLength); - return valLength === range.text.length; - } - return true; - }, - - onKeyPress: function (e) { - var that = this; - - // If suggestions are hidden and user presses arrow down, display suggestions: - if (!that.disabled && !that.visible && e.which === keys.DOWN && that.currentValue) { - that.suggest(); - return; - } - - if (that.disabled || !that.visible) { - return; - } - - switch (e.which) { - case keys.ESC: - that.el.val(that.currentValue); - that.hide(); - break; - case keys.RIGHT: - if (that.hint && that.options.onHint && that.isCursorAtEnd()) { - that.selectHint(); - break; - } - return; - case keys.TAB: - if (that.hint && that.options.onHint) { - that.selectHint(); - return; - } - if (that.selectedIndex === -1) { - that.hide(); - return; - } - that.select(that.selectedIndex); - if (that.options.tabDisabled === false) { - return; - } - break; - case keys.RETURN: - if (that.selectedIndex === -1) { - that.hide(); - return; - } - that.select(that.selectedIndex); - break; - case keys.UP: - that.moveUp(); - break; - case keys.DOWN: - that.moveDown(); - break; - default: - return; - } - - // Cancel event if function did not return: - e.stopImmediatePropagation(); - e.preventDefault(); - }, - - onKeyUp: function (e) { - var that = this; - - if (that.disabled) { - return; - } - - switch (e.which) { - case keys.UP: - case keys.DOWN: - return; - } - - clearInterval(that.onChangeInterval); - - if (that.currentValue !== that.el.val()) { - that.findBestHint(); - if (that.options.deferRequestBy > 0) { - // Defer lookup in case when value changes very quickly: - that.onChangeInterval = setInterval(function () { - that.onValueChange(); - }, that.options.deferRequestBy); - } else { - that.onValueChange(); - } - } - }, - - onValueChange: function () { - var that = this, - options = that.options, - value = that.el.val(), - query = that.getQuery(value), - index; - - if (that.selection && that.currentValue !== query) { - that.selection = null; - (options.onInvalidateSelection || $.noop).call(that.element); - } - - clearInterval(that.onChangeInterval); - that.currentValue = value; - that.selectedIndex = -1; - - // Check existing suggestion for the match before proceeding: - if (options.triggerSelectOnValidInput) { - index = that.findSuggestionIndex(query); - if (index !== -1) { - that.select(index); - return; - } - } - - if (query.length < options.minChars) { - that.hide(); - } else { - that.getSuggestions(query); - } - }, - - findSuggestionIndex: function (query) { - var that = this, - index = -1, - queryLowerCase = query.toLowerCase(); - - $.each(that.suggestions, function (i, suggestion) { - if (suggestion.value.toLowerCase() === queryLowerCase) { - index = i; - return false; - } - }); - - return index; - }, - - getQuery: function (value) { - var delimiter = this.options.delimiter, - parts; - - if (!delimiter) { - return value; - } - parts = value.split(delimiter); - return $.trim(parts[parts.length - 1]); - }, - - getSuggestionsLocal: function (query) { - var that = this, - options = that.options, - queryLowerCase = query.toLowerCase(), - filter = options.lookupFilter, - limit = parseInt(options.lookupLimit, 10), - data; - - data = { - suggestions: $.grep(options.lookup, function (suggestion) { - return filter(suggestion, query, queryLowerCase); - }) - }; - - if (limit && data.suggestions.length > limit) { - data.suggestions = data.suggestions.slice(0, limit); - } - - return data; - }, - - getSuggestions: function (q) { - var response, - that = this, - options = that.options, - serviceUrl = options.serviceUrl, - params, - cacheKey, - ajaxSettings; - - options.params[options.paramName] = q; - params = options.ignoreParams ? null : options.params; - - if (options.onSearchStart.call(that.element, options.params) === false) { - return; - } - - if ($.isFunction(options.lookup)){ - options.lookup(q, function (data) { - that.suggestions = data.suggestions; - that.suggest(); - options.onSearchComplete.call(that.element, q, data.suggestions); - }); - return; - } - - if (that.isLocal) { - response = that.getSuggestionsLocal(q); - } else { - if ($.isFunction(serviceUrl)) { - serviceUrl = serviceUrl.call(that.element, q); - } - cacheKey = serviceUrl + '?' + $.param(params || {}); - response = that.cachedResponse[cacheKey]; - } - - if (response && $.isArray(response.suggestions)) { - that.suggestions = response.suggestions; - that.suggest(); - options.onSearchComplete.call(that.element, q, response.suggestions); - } else if (!that.isBadQuery(q)) { - if (that.currentRequest) { - that.currentRequest.abort(); - } - - //var strings = 'city_name='+$('select[name=booking_r_city]').val(); - ajaxSettings = { - url: serviceUrl, - - data: options.params, - type: options.type, - dataType: options.dataType - }; - - $.extend(ajaxSettings, options.ajaxSettings); - - that.currentRequest = $.ajax(ajaxSettings).done(function (data) { - var result; - that.currentRequest = null; - result = options.transformResult(data); - that.processResponse(result, q, cacheKey); - options.onSearchComplete.call(that.element, q, result.suggestions); - }).fail(function (jqXHR, textStatus, errorThrown) { - options.onSearchError.call(that.element, q, jqXHR, textStatus, errorThrown); - }); - } else { - options.onSearchComplete.call(that.element, q, []); - } - }, - - isBadQuery: function (q) { - if (!this.options.preventBadQueries){ - return false; - } - - var badQueries = this.badQueries, - i = badQueries.length; - - while (i--) { - if (q.indexOf(badQueries[i]) === 0) { - return true; - } - } - - return false; - }, - - hide: function () { - var that = this; - that.visible = false; - that.selectedIndex = -1; - clearInterval(that.onChangeInterval); - $(that.suggestionsContainer).hide(); - that.signalHint(null); - }, - - suggest: function () { - if (this.suggestions.length === 0) { - if (this.options.showNoSuggestionNotice) { - this.noSuggestions(); - } else { - this.hide(); - } - return; - } - - var that = this, - options = that.options, - groupBy = options.groupBy, - formatResult = options.formatResult, - value = that.getQuery(that.currentValue), - className = that.classes.suggestion, - classSelected = that.classes.selected, - container = $(that.suggestionsContainer), - noSuggestionsContainer = $(that.noSuggestionsContainer), - beforeRender = options.beforeRender, - html = '', - category, - formatGroup = function (suggestion, index) { - var currentCategory = suggestion.data[groupBy]; - - if (category === currentCategory){ - return ''; - } - - category = currentCategory; - - return '<div class="autocomplete-group"><strong>' + category + '</strong></div>'; - }, - index; - - if (options.triggerSelectOnValidInput) { - index = that.findSuggestionIndex(value); - if (index !== -1) { - that.select(index); - return; - } - } - - // Build suggestions inner HTML: - $.each(that.suggestions, function (i, suggestion) { - if (groupBy){ - html += formatGroup(suggestion, value, i); - } - - html += '<div class="' + className + '" data-index="' + i + '">' + formatResult(suggestion, value) + '</div>'; - }); - - this.adjustContainerWidth(); - - noSuggestionsContainer.detach(); - container.html(html); - - if ($.isFunction(beforeRender)) { - beforeRender.call(that.element, container); - } - - that.fixPosition(); - container.show(); - - // Select first value by default: - if (options.autoSelectFirst) { - that.selectedIndex = 0; - container.scrollTop(0); - container.children().first().addClass(classSelected); - } - - that.visible = true; - that.findBestHint(); - }, - - noSuggestions: function() { - var that = this, - container = $(that.suggestionsContainer), - noSuggestionsContainer = $(that.noSuggestionsContainer); - - this.adjustContainerWidth(); - - // Some explicit steps. Be careful here as it easy to get - // noSuggestionsContainer removed from DOM if not detached properly. - noSuggestionsContainer.detach(); - container.empty(); // clean suggestions if any - container.append(noSuggestionsContainer); - - that.fixPosition(); - - container.show(); - that.visible = true; - }, - - adjustContainerWidth: function() { - var that = this, - options = that.options, - width, - container = $(that.suggestionsContainer); - - // If width is auto, adjust width before displaying suggestions, - // because if instance was created before input had width, it will be zero. - // Also it adjusts if input width has changed. - // -2px to account for suggestions border. - if (options.width === 'auto') { - width = that.el.outerWidth() - 2; - container.width(width > 0 ? width : 300); - } - }, - - findBestHint: function () { - var that = this, - value = that.el.val().toLowerCase(), - bestMatch = null; - - if (!value) { - return; - } - - $.each(that.suggestions, function (i, suggestion) { - var foundMatch = suggestion.value.toLowerCase().indexOf(value) === 0; - if (foundMatch) { - bestMatch = suggestion; - } - return !foundMatch; - }); - - that.signalHint(bestMatch); - }, - - signalHint: function (suggestion) { - var hintValue = '', - that = this; - if (suggestion) { - hintValue = that.currentValue + suggestion.value.substr(that.currentValue.length); - } - if (that.hintValue !== hintValue) { - that.hintValue = hintValue; - that.hint = suggestion; - (this.options.onHint || $.noop)(hintValue); - } - }, - - verifySuggestionsFormat: function (suggestions) { - - // If suggestions is string array, convert them to supported format: - if (suggestions.length && typeof suggestions[0] === 'string') { - return $.map(suggestions, function (value) { - return { value: value, data: null }; - }); - } - - return suggestions; - }, - - validateOrientation: function(orientation, fallback) { - orientation = $.trim(orientation || '').toLowerCase(); - - if($.inArray(orientation, ['auto', 'bottom', 'top']) === -1){ - orientation = fallback; - } - - return orientation; - }, - - processResponse: function (result, originalQuery, cacheKey) { - var that = this, - options = that.options; - - result.suggestions = that.verifySuggestionsFormat(result.suggestions); - - // Cache results if cache is not disabled: - if (!options.noCache) { - that.cachedResponse[cacheKey] = result; - if (options.preventBadQueries && result.suggestions.length === 0) { - that.badQueries.push(originalQuery); - } - } - - // Return if originalQuery is not matching current query: - if (originalQuery !== that.getQuery(that.currentValue)) { - return; - } - - that.suggestions = result.suggestions; - that.suggest(); - }, - - activate: function (index) { - var that = this, - activeItem, - selected = that.classes.selected, - container = $(that.suggestionsContainer), - children = container.find('.' + that.classes.suggestion); - - container.find('.' + selected).removeClass(selected); - - that.selectedIndex = index; - - if (that.selectedIndex !== -1 && children.length > that.selectedIndex) { - activeItem = children.get(that.selectedIndex); - $(activeItem).addClass(selected); - return activeItem; - } - - return null; - }, - - selectHint: function () { - var that = this, - i = $.inArray(that.hint, that.suggestions); - - that.select(i); - }, - - select: function (i) { - var that = this; - that.hide(); - that.onSelect(i); - }, - - moveUp: function () { - var that = this; - - if (that.selectedIndex === -1) { - return; - } - - if (that.selectedIndex === 0) { - $(that.suggestionsContainer).children().first().removeClass(that.classes.selected); - that.selectedIndex = -1; - that.el.val(that.currentValue); - that.findBestHint(); - return; - } - - that.adjustScroll(that.selectedIndex - 1); - }, - - moveDown: function () { - var that = this; - - if (that.selectedIndex === (that.suggestions.length - 1)) { - return; - } - - that.adjustScroll(that.selectedIndex + 1); - }, - - adjustScroll: function (index) { - var that = this, - activeItem = that.activate(index); - - if (!activeItem) { - return; - } - - var offsetTop, - upperBound, - lowerBound, - heightDelta = $(activeItem).outerHeight(); - - offsetTop = activeItem.offsetTop; - upperBound = $(that.suggestionsContainer).scrollTop(); - lowerBound = upperBound + that.options.maxHeight - heightDelta; - - if (offsetTop < upperBound) { - $(that.suggestionsContainer).scrollTop(offsetTop); - } else if (offsetTop > lowerBound) { - $(that.suggestionsContainer).scrollTop(offsetTop - that.options.maxHeight + heightDelta); - } - - if (!that.options.preserveInput) { - that.el.val(that.getValue(that.suggestions[index].value)); - } - that.signalHint(null); - }, - - onSelect: function (index) { - var that = this, - onSelectCallback = that.options.onSelect, - suggestion = that.suggestions[index]; - - that.currentValue = that.getValue(suggestion.value); - - if (that.currentValue !== that.el.val() && !that.options.preserveInput) { - that.el.val(that.currentValue); - } - - that.signalHint(null); - that.suggestions = []; - that.selection = suggestion; - - if ($.isFunction(onSelectCallback)) { - onSelectCallback.call(that.element, suggestion); - } - }, - - getValue: function (value) { - var that = this, - delimiter = that.options.delimiter, - currentValue, - parts; - - if (!delimiter) { - return value; - } - - currentValue = that.currentValue; - parts = currentValue.split(delimiter); - - if (parts.length === 1) { - return value; - } - - return currentValue.substr(0, currentValue.length - parts[parts.length - 1].length) + value; - }, - - dispose: function () { - var that = this; - that.el.off('.autocomplete').removeData('autocomplete'); - that.disableKillerFn(); - $(window).off('resize.autocomplete', that.fixPositionCapture); - $(that.suggestionsContainer).remove(); - } - }; - - // Create chainable jQuery plugin: - $.fn.autocomplete = $.fn.devbridgeAutocomplete = function (options, args) { - var dataKey = 'autocomplete'; - // If function invoked without argument return - // instance of the first matched element: - if (arguments.length === 0) { - return this.first().data(dataKey); - } - - return this.each(function () { - var inputElement = $(this), - instance = inputElement.data(dataKey); - - if (typeof options === 'string') { - if (instance && typeof instance[options] === 'function') { - instance[options](args); - } - } else { - // If instance already exists, destroy it: - if (instance && instance.dispose) { - instance.dispose(); - } - instance = new Autocomplete(this, options); - inputElement.data(dataKey, instance); - } - }); - }; -})); diff --git a/assets/js/jquery.jeditable.js b/assets/js/jquery.jeditable.js deleted file mode 100644 index 1d066d45..00000000 --- a/assets/js/jquery.jeditable.js +++ /dev/null @@ -1,546 +0,0 @@ -/* - * Jeditable - jQuery in place edit plugin - * - * Copyright (c) 2006-2013 Mika Tuupola, Dylan Verheul - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/mit-license.php - * - * Project home: - * http://www.appelsiini.net/projects/jeditable - * - * Based on editable by Dylan Verheul <dylan_at_dyve.net>: - * http://www.dyve.net/jquery/?editable - * - */ - -/** - * Version 1.7.3 - * - * ** means there is basic unit tests for this parameter. - * - * @name Jeditable - * @type jQuery - * @param String target (POST) URL or function to send edited content to ** - * @param Hash options additional options - * @param String options[method] method to use to send edited content (POST or PUT) ** - * @param Function options[callback] Function to run after submitting edited content ** - * @param String options[name] POST parameter name of edited content - * @param String options[id] POST parameter name of edited div id - * @param Hash options[submitdata] Extra parameters to send when submitting edited content. - * @param String options[type] text, textarea or select (or any 3rd party input type) ** - * @param Integer options[rows] number of rows if using textarea ** - * @param Integer options[cols] number of columns if using textarea ** - * @param Mixed options[height] 'auto', 'none' or height in pixels ** - * @param Mixed options[width] 'auto', 'none' or width in pixels ** - * @param String options[loadurl] URL to fetch input content before editing ** - * @param String options[loadtype] Request type for load url. Should be GET or POST. - * @param String options[loadtext] Text to display while loading external content. - * @param Mixed options[loaddata] Extra parameters to pass when fetching content before editing. - * @param Mixed options[data] Or content given as paramameter. String or function.** - * @param String options[indicator] indicator html to show when saving - * @param String options[tooltip] optional tooltip text via title attribute ** - * @param String options[event] jQuery event such as 'click' of 'dblclick' ** - * @param String options[submit] submit button value, empty means no button ** - * @param String options[cancel] cancel button value, empty means no button ** - * @param String options[cssclass] CSS class to apply to input form. 'inherit' to copy from parent. ** - * @param String options[style] Style to apply to input form 'inherit' to copy from parent. ** - * @param String options[select] true or false, when true text is highlighted ?? - * @param String options[placeholder] Placeholder text or html to insert when element is empty. ** - * @param String options[onblur] 'cancel', 'submit', 'ignore' or function ?? - * - * @param Function options[onsubmit] function(settings, original) { ... } called before submit - * @param Function options[onreset] function(settings, original) { ... } called before reset - * @param Function options[onerror] function(settings, original, xhr) { ... } called on error - * - * @param Hash options[ajaxoptions] jQuery Ajax options. See docs.jquery.com. - * - */ - -(function($) { - - $.fn.editable = function(target, options) { - - if ('disable' == target) { - $(this).data('disabled.editable', true); - return; - } - if ('enable' == target) { - $(this).data('disabled.editable', false); - return; - } - if ('destroy' == target) { - $(this) - .unbind($(this).data('event.editable')) - .removeData('disabled.editable') - .removeData('event.editable'); - return; - } - - var settings = $.extend({}, $.fn.editable.defaults, {target:target}, options); - - /* setup some functions */ - var plugin = $.editable.types[settings.type].plugin || function() { }; - var submit = $.editable.types[settings.type].submit || function() { }; - var buttons = $.editable.types[settings.type].buttons - || $.editable.types['defaults'].buttons; - var content = $.editable.types[settings.type].content - || $.editable.types['defaults'].content; - var element = $.editable.types[settings.type].element - || $.editable.types['defaults'].element; - var reset = $.editable.types[settings.type].reset - || $.editable.types['defaults'].reset; - var callback = settings.callback || function() { }; - var onedit = settings.onedit || function() { }; - var onsubmit = settings.onsubmit || function() { }; - var onreset = settings.onreset || function() { }; - var onerror = settings.onerror || reset; - - /* Show tooltip. */ - if (settings.tooltip) { - $(this).attr('title', settings.tooltip); - } - - settings.autowidth = 'auto' == settings.width; - settings.autoheight = 'auto' == settings.height; - - return this.each(function() { - - /* Save this to self because this changes when scope changes. */ - var self = this; - - /* Inlined block elements lose their width and height after first edit. */ - /* Save them for later use as workaround. */ - var savedwidth = $(self).width(); - var savedheight = $(self).height(); - - /* Save so it can be later used by $.editable('destroy') */ - $(this).data('event.editable', settings.event); - - /* If element is empty add something clickable (if requested) */ - if (!$.trim($(this).html())) { - $(this).html(settings.placeholder); - } - - $(this).bind(settings.event, function(e) { - - /* Abort if element is disabled. */ - if (true === $(this).data('disabled.editable')) { - return; - } - - /* Prevent throwing an exeption if edit field is clicked again. */ - if (self.editing) { - return; - } - - /* Abort if onedit hook returns false. */ - if (false === onedit.apply(this, [settings, self])) { - return; - } - - /* Prevent default action and bubbling. */ - e.preventDefault(); - e.stopPropagation(); - - /* Remove tooltip. */ - if (settings.tooltip) { - $(self).removeAttr('title'); - } - - /* Figure out how wide and tall we are, saved width and height. */ - /* Workaround for http://dev.jquery.com/ticket/2190 */ - if (0 == $(self).width()) { - settings.width = savedwidth; - settings.height = savedheight; - } else { - if (settings.width != 'none') { - settings.width = - settings.autowidth ? $(self).width() : settings.width; - } - if (settings.height != 'none') { - settings.height = - settings.autoheight ? $(self).height() : settings.height; - } - } - - /* Remove placeholder text, replace is here because of IE. */ - if ($(this).html().toLowerCase().replace(/(;|"|\/)/g, '') == - settings.placeholder.toLowerCase().replace(/(;|"|\/)/g, '')) { - $(this).html(''); - } - - self.editing = true; - self.revert = $(self).html(); - $(self).html(''); - - /* Create the form object. */ - var form = $('<form />'); - - /* Apply css or style or both. */ - if (settings.cssclass) { - if ('inherit' == settings.cssclass) { - form.attr('class', $(self).attr('class')); - } else { - form.attr('class', settings.cssclass); - } - } - - if (settings.style) { - if ('inherit' == settings.style) { - form.attr('style', $(self).attr('style')); - /* IE needs the second line or display wont be inherited. */ - form.css('display', $(self).css('display')); - } else { - form.attr('style', settings.style); - } - } - - /* Add main input element to form and store it in input. */ - var input = element.apply(form, [settings, self]); - - /* Set input content via POST, GET, given data or existing value. */ - var input_content; - - if (settings.loadurl) { - var t = setTimeout(function() { - input.disabled = true; - content.apply(form, [settings.loadtext, settings, self]); - }, 100); - - var loaddata = {}; - loaddata[settings.id] = self.id; - if ($.isFunction(settings.loaddata)) { - $.extend(loaddata, settings.loaddata.apply(self, [self.revert, settings])); - } else { - $.extend(loaddata, settings.loaddata); - } - $.ajax({ - type : settings.loadtype, - url : settings.loadurl, - data : loaddata, - async : false, - success: function(result) { - window.clearTimeout(t); - input_content = result; - input.disabled = false; - } - }); - } else if (settings.data) { - input_content = settings.data; - if ($.isFunction(settings.data)) { - input_content = settings.data.apply(self, [self.revert, settings]); - } - } else { - input_content = self.revert; - } - content.apply(form, [input_content, settings, self]); - - input.attr('name', settings.name); - - /* Add buttons to the form. */ - buttons.apply(form, [settings, self]); - - /* Add created form to self. */ - $(self).append(form); - - /* Attach 3rd party plugin if requested. */ - plugin.apply(form, [settings, self]); - - /* Focus to first visible form element. */ - $(':input:visible:enabled:first', form).focus(); - - /* Highlight input contents when requested. */ - if (settings.select) { - input.select(); - } - - /* discard changes if pressing esc */ - input.keydown(function(e) { - if (e.keyCode == 27) { - e.preventDefault(); - reset.apply(form, [settings, self]); - } - }); - - /* Discard, submit or nothing with changes when clicking outside. */ - /* Do nothing is usable when navigating with tab. */ - var t; - if ('cancel' == settings.onblur) { - input.blur(function(e) { - /* Prevent canceling if submit was clicked. */ - t = setTimeout(function() { - reset.apply(form, [settings, self]); - }, 500); - }); - } else if ('submit' == settings.onblur) { - input.blur(function(e) { - /* Prevent double submit if submit was clicked. */ - t = setTimeout(function() { - form.submit(); - }, 200); - }); - } else if ($.isFunction(settings.onblur)) { - input.blur(function(e) { - settings.onblur.apply(self, [input.val(), settings]); - }); - } else { - input.blur(function(e) { - /* TODO: maybe something here */ - }); - } - - form.submit(function(e) { - - if (t) { - clearTimeout(t); - } - - /* Do no submit. */ - e.preventDefault(); - - /* Call before submit hook. */ - /* If it returns false abort submitting. */ - if (false !== onsubmit.apply(form, [settings, self])) { - /* Custom inputs call before submit hook. */ - /* If it returns false abort submitting. */ - if (false !== submit.apply(form, [settings, self])) { - - /* Check if given target is function */ - if ($.isFunction(settings.target)) { - var str = settings.target.apply(self, [input.val(), settings]); - $(self).html(str); - self.editing = false; - callback.apply(self, [self.innerHTML, settings]); - /* TODO: this is not dry */ - if (!$.trim($(self).html())) { - $(self).html(settings.placeholder); - } - } else { - /* Add edited content and id of edited element to POST. */ - var submitdata = {}; - submitdata[settings.name] = input.val(); - submitdata[settings.id] = self.id; - /* Add extra data to be POST:ed. */ - if ($.isFunction(settings.submitdata)) { - $.extend(submitdata, settings.submitdata.apply(self, [self.revert, settings])); - } else { - $.extend(submitdata, settings.submitdata); - } - - /* Quick and dirty PUT support. */ - if ('PUT' == settings.method) { - submitdata['_method'] = 'put'; - } - - /* Show the saving indicator. */ - $(self).html(settings.indicator); - - /* Defaults for ajaxoptions. */ - var ajaxoptions = { - type : 'POST', - data : submitdata, - dataType: 'html', - url : settings.target, - success : function(result, status) { - if (ajaxoptions.dataType == 'html') { - $(self).html(result); - } - self.editing = false; - callback.apply(self, [result, settings]); - if (!$.trim($(self).html())) { - $(self).html(settings.placeholder); - } - }, - error : function(xhr, status, error) { - onerror.apply(form, [settings, self, xhr]); - } - }; - - /* Override with what is given in settings.ajaxoptions. */ - $.extend(ajaxoptions, settings.ajaxoptions); - $.ajax(ajaxoptions); - - } - } - } - - /* Show tooltip again. */ - $(self).attr('title', settings.tooltip); - - return false; - }); - }); - - /* Privileged methods */ - this.reset = function(form) { - /* Prevent calling reset twice when blurring. */ - if (this.editing) { - /* Before reset hook, if it returns false abort reseting. */ - if (false !== onreset.apply(form, [settings, self])) { - $(self).html(self.revert); - self.editing = false; - if (!$.trim($(self).html())) { - $(self).html(settings.placeholder); - } - /* Show tooltip again. */ - if (settings.tooltip) { - $(self).attr('title', settings.tooltip); - } - } - } - }; - }); - - }; - - - $.editable = { - types: { - defaults: { - element : function(settings, original) { - var input = $('<input type="hidden"></input>'); - $(this).append(input); - return(input); - }, - content : function(string, settings, original) { - $(':input:first', this).val(string); - }, - reset : function(settings, original) { - original.reset(this); - }, - buttons : function(settings, original) { - var form = this; - if (settings.submit) { - /* If given html string use that. */ - if (settings.submit.match(/>$/)) { - var submit = $(settings.submit).click(function() { - if (submit.attr("type") != "submit") { - form.submit(); - } - }); - /* Otherwise use button with given string as text. */ - } else { - var submit = $('<button type="submit" />'); - submit.html(settings.submit); - } - $(this).append(submit); - } - if (settings.cancel) { - /* If given html string use that. */ - if (settings.cancel.match(/>$/)) { - var cancel = $(settings.cancel); - /* otherwise use button with given string as text */ - } else { - var cancel = $('<button type="cancel" />'); - cancel.html(settings.cancel); - } - $(this).append(cancel); - - $(cancel).click(function(event) { - if ($.isFunction($.editable.types[settings.type].reset)) { - var reset = $.editable.types[settings.type].reset; - } else { - var reset = $.editable.types['defaults'].reset; - } - reset.apply(form, [settings, original]); - return false; - }); - } - } - }, - text: { - element : function(settings, original) { - var input = $('<input />'); - if (settings.width != 'none') { input.attr('width', settings.width); } - if (settings.height != 'none') { input.attr('height', settings.height); } - /* https://bugzilla.mozilla.org/show_bug.cgi?id=236791 */ - //input[0].setAttribute('autocomplete','off'); - input.attr('autocomplete','off'); - $(this).append(input); - return(input); - } - }, - textarea: { - element : function(settings, original) { - var textarea = $('<textarea />'); - if (settings.rows) { - textarea.attr('rows', settings.rows); - } else if (settings.height != "none") { - textarea.height(settings.height); - } - if (settings.cols) { - textarea.attr('cols', settings.cols); - } else if (settings.width != "none") { - textarea.width(settings.width); - } - $(this).append(textarea); - return(textarea); - } - }, - select: { - element : function(settings, original) { - var select = $('<select />'); - $(this).append(select); - return(select); - }, - content : function(data, settings, original) { - /* If it is string assume it is json. */ - if (String == data.constructor) { - eval ('var json = ' + data); - } else { - /* Otherwise assume it is a hash already. */ - var json = data; - } - for (var key in json) { - if (!json.hasOwnProperty(key)) { - continue; - } - if ('selected' == key) { - continue; - } - var option = $('<option />').val(key).append(json[key]); - $('select', this).append(option); - } - /* Loop option again to set selected. IE needed this... */ - $('select', this).children().each(function() { - if ($(this).val() == json['selected'] || - $(this).text() == $.trim(original.revert)) { - $(this).attr('selected', 'selected'); - } - }); - /* Submit on change if no submit button defined. */ - if (!settings.submit) { - var form = this; - $('select', this).change(function() { - form.submit(); - }); - } - } - } - }, - - /* Add new input type */ - addInputType: function(name, input) { - $.editable.types[name] = input; - } - }; - - /* Publicly accessible defaults. */ - $.fn.editable.defaults = { - name : 'value', - id : 'id', - type : 'text', - width : 'auto', - height : 'auto', - event : 'click.editable', - onblur : 'cancel', - loadtype : 'GET', - loadtext : 'Loading...', - placeholder: 'Click to edit', - loaddata : {}, - submitdata : {}, - ajaxoptions: {} - }; - -})(jQuery); diff --git a/assets/js/jquery.min.js b/assets/js/jquery.min.js deleted file mode 100644 index f3644431..00000000 --- a/assets/js/jquery.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! jQuery v1.11.3 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.3",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b="length"in a&&a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function qa(){}qa.prototype=d.filters=d.pseudos,d.setFilters=new qa,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function ra(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1; - -return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?m.queue(this[0],a):void 0===b?this:this.each(function(){var c=m.queue(this,a,b);m._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&m.dequeue(this,a)})},dequeue:function(a){return this.each(function(){m.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=m.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=m._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=["Top","Right","Bottom","Left"],U=function(a,b){return a=b||a,"none"===m.css(a,"display")||!m.contains(a.ownerDocument,a)},V=m.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===m.type(c)){e=!0;for(h in c)m.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,m.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(m(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function aa(){return!0}function ba(){return!1}function ca(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[m.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=Z.test(e)?this.mouseHooks:Y.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new m.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||y),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||y,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==ca()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===ca()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return m.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return m.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=m.extend(new m.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?m.event.trigger(e,null,b):m.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},m.removeEvent=y.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===K&&(a[d]=null),a.detachEvent(d,c))},m.Event=function(a,b){return this instanceof m.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?aa:ba):this.type=a,b&&m.extend(this,b),this.timeStamp=a&&a.timeStamp||m.now(),void(this[m.expando]=!0)):new m.Event(a,b)},m.Event.prototype={isDefaultPrevented:ba,isPropagationStopped:ba,isImmediatePropagationStopped:ba,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=aa,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=aa,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=aa,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},m.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){m.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!m.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.submitBubbles||(m.event.special.submit={setup:function(){return m.nodeName(this,"form")?!1:void m.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=m.nodeName(b,"input")||m.nodeName(b,"button")?b.form:void 0;c&&!m._data(c,"submitBubbles")&&(m.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),m._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&m.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return m.nodeName(this,"form")?!1:void m.event.remove(this,"._submit")}}),k.changeBubbles||(m.event.special.change={setup:function(){return X.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(m.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),m.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),m.event.simulate("change",this,a,!0)})),!1):void m.event.add(this,"beforeactivate._change",function(a){var b=a.target;X.test(b.nodeName)&&!m._data(b,"changeBubbles")&&(m.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||m.event.simulate("change",this.parentNode,a,!0)}),m._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return m.event.remove(this,"._change"),!X.test(this.nodeName)}}),k.focusinBubbles||m.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){m.event.simulate(b,a.target,m.event.fix(a),!0)};m.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=m._data(d,b);e||d.addEventListener(a,c,!0),m._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=m._data(d,b)-1;e?m._data(d,b,e):(d.removeEventListener(a,c,!0),m._removeData(d,b))}}}),m.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=ba;else if(!d)return this;return 1===e&&(g=d,d=function(a){return m().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=m.guid++)),this.each(function(){m.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,m(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=ba),this.each(function(){m.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){m.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?m.event.trigger(a,b,c,!0):void 0}});function da(a){var b=ea.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var ea="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",fa=/ jQuery\d+="(?:null|\d+)"/g,ga=new RegExp("<(?:"+ea+")[\\s/>]","i"),ha=/^\s+/,ia=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ja=/<([\w:]+)/,ka=/<tbody/i,la=/<|&#?\w+;/,ma=/<(?:script|style|link)/i,na=/checked\s*(?:[^=]|=\s*.checked.)/i,oa=/^$|\/(?:java|ecma)script/i,pa=/^true\/(.*)/,qa=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ra={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:k.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},sa=da(y),ta=sa.appendChild(y.createElement("div"));ra.optgroup=ra.option,ra.tbody=ra.tfoot=ra.colgroup=ra.caption=ra.thead,ra.th=ra.td;function ua(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ua(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function va(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wa(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xa(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function ya(a){var b=pa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function za(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Aa(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Ba(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xa(b).text=a.text,ya(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!ga.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ta.innerHTML=a.outerHTML,ta.removeChild(f=ta.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ua(f),h=ua(a),g=0;null!=(e=h[g]);++g)d[g]&&Ba(e,d[g]);if(b)if(c)for(h=h||ua(a),d=d||ua(f),g=0;null!=(e=h[g]);g++)Aa(e,d[g]);else Aa(a,f);return d=ua(f,"script"),d.length>0&&za(d,!i&&ua(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=da(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(la.test(f)){h=h||o.appendChild(b.createElement("div")),i=(ja.exec(f)||["",""])[1].toLowerCase(),l=ra[i]||ra._default,h.innerHTML=l[1]+f.replace(ia,"<$1></$2>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&ha.test(f)&&p.push(b.createTextNode(ha.exec(f)[0])),!k.tbody){f="table"!==i||ka.test(f)?"<table>"!==l[1]||ka.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ua(p,"input"),va),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ua(o.appendChild(f),"script"),g&&za(h),c)){e=0;while(f=h[e++])oa.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ua(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&za(ua(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ua(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fa,""):void 0;if(!("string"!=typeof a||ma.test(a)||!k.htmlSerialize&&ga.test(a)||!k.leadingWhitespace&&ha.test(a)||ra[(ja.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ia,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ua(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ua(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&na.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ua(i,"script"),xa),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ua(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,ya),j=0;f>j;j++)d=g[j],oa.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qa,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Ca,Da={};function Ea(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fa(a){var b=y,c=Da[a];return c||(c=Ea(a,b),"none"!==c&&c||(Ca=(Ca||m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Ca[0].contentWindow||Ca[0].contentDocument).document,b.write(),b.close(),c=Ea(a,b),Ca.detach()),Da[a]=c),c}!function(){var a;k.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return c=y.getElementsByTagName("body")[0],c&&c.style?(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(y.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var Ga=/^margin/,Ha=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ia,Ja,Ka=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ia=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)},Ja=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ia(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||m.contains(a.ownerDocument,a)||(g=m.style(a,b)),Ha.test(g)&&Ga.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):y.documentElement.currentStyle&&(Ia=function(a){return a.currentStyle},Ja=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ia(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Ha.test(g)&&!Ka.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function La(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h;if(b=y.createElement("div"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=d&&d.style){c.cssText="float:left;opacity:.5",k.opacity="0.5"===c.opacity,k.cssFloat=!!c.cssFloat,b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===b.style.backgroundClip,k.boxSizing=""===c.boxSizing||""===c.MozBoxSizing||""===c.WebkitBoxSizing,m.extend(k,{reliableHiddenOffsets:function(){return null==g&&i(),g},boxSizingReliable:function(){return null==f&&i(),f},pixelPosition:function(){return null==e&&i(),e},reliableMarginRight:function(){return null==h&&i(),h}});function i(){var b,c,d,i;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),b.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",e=f=!1,h=!0,a.getComputedStyle&&(e="1%"!==(a.getComputedStyle(b,null)||{}).top,f="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,i=b.appendChild(y.createElement("div")),i.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",b.style.width="1px",h=!parseFloat((a.getComputedStyle(i,null)||{}).marginRight),b.removeChild(i)),b.innerHTML="<table><tr><td></td><td>t</td></tr></table>",i=b.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",g=0===i[0].offsetHeight,g&&(i[0].style.display="",i[1].style.display="none",g=0===i[0].offsetHeight),c.removeChild(d))}}}(),m.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Ma=/alpha\([^)]*\)/i,Na=/opacity\s*=\s*([^)]*)/,Oa=/^(none|table(?!-c[ea]).+)/,Pa=new RegExp("^("+S+")(.*)$","i"),Qa=new RegExp("^([+-])=("+S+")","i"),Ra={position:"absolute",visibility:"hidden",display:"block"},Sa={letterSpacing:"0",fontWeight:"400"},Ta=["Webkit","O","Moz","ms"];function Ua(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Ta.length;while(e--)if(b=Ta[e]+c,b in a)return b;return d}function Va(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=m._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&U(d)&&(f[g]=m._data(d,"olddisplay",Fa(d.nodeName)))):(e=U(d),(c&&"none"!==c||!e)&&m._data(d,"olddisplay",e?c:m.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Wa(a,b,c){var d=Pa.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Xa(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=m.css(a,c+T[f],!0,e)),d?("content"===c&&(g-=m.css(a,"padding"+T[f],!0,e)),"margin"!==c&&(g-=m.css(a,"border"+T[f]+"Width",!0,e))):(g+=m.css(a,"padding"+T[f],!0,e),"padding"!==c&&(g+=m.css(a,"border"+T[f]+"Width",!0,e)));return g}function Ya(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ia(a),g=k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Ja(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ha.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Xa(a,b,c||(g?"border":"content"),d,f)+"px"}m.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Ja(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":k.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=m.camelCase(b),i=a.style;if(b=m.cssProps[h]||(m.cssProps[h]=Ua(i,h)),g=m.cssHooks[b]||m.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Qa.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(m.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||m.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=m.camelCase(b);return b=m.cssProps[h]||(m.cssProps[h]=Ua(a.style,h)),g=m.cssHooks[b]||m.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Ja(a,b,d)),"normal"===f&&b in Sa&&(f=Sa[b]),""===c||c?(e=parseFloat(f),c===!0||m.isNumeric(e)?e||0:f):f}}),m.each(["height","width"],function(a,b){m.cssHooks[b]={get:function(a,c,d){return c?Oa.test(m.css(a,"display"))&&0===a.offsetWidth?m.swap(a,Ra,function(){return Ya(a,b,d)}):Ya(a,b,d):void 0},set:function(a,c,d){var e=d&&Ia(a);return Wa(a,c,d?Xa(a,b,d,k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,e),e):0)}}}),k.opacity||(m.cssHooks.opacity={get:function(a,b){return Na.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=m.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===m.trim(f.replace(Ma,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Ma.test(f)?f.replace(Ma,e):f+" "+e)}}),m.cssHooks.marginRight=La(k.reliableMarginRight,function(a,b){return b?m.swap(a,{display:"inline-block"},Ja,[a,"marginRight"]):void 0}),m.each({margin:"",padding:"",border:"Width"},function(a,b){m.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+T[d]+b]=f[d]||f[d-2]||f[0];return e}},Ga.test(a)||(m.cssHooks[a+b].set=Wa)}),m.fn.extend({css:function(a,b){return V(this,function(a,b,c){var d,e,f={},g=0;if(m.isArray(b)){for(d=Ia(a),e=b.length;e>g;g++)f[b[g]]=m.css(a,b[g],!1,d);return f}return void 0!==c?m.style(a,b,c):m.css(a,b)},a,b,arguments.length>1)},show:function(){return Va(this,!0)},hide:function(){return Va(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){U(this)?m(this).show():m(this).hide()})}});function Za(a,b,c,d,e){ -return new Za.prototype.init(a,b,c,d,e)}m.Tween=Za,Za.prototype={constructor:Za,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(m.cssNumber[c]?"":"px")},cur:function(){var a=Za.propHooks[this.prop];return a&&a.get?a.get(this):Za.propHooks._default.get(this)},run:function(a){var b,c=Za.propHooks[this.prop];return this.options.duration?this.pos=b=m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Za.propHooks._default.set(this),this}},Za.prototype.init.prototype=Za.prototype,Za.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Za.propHooks.scrollTop=Za.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Za.prototype.init,m.fx.step={};var $a,_a,ab=/^(?:toggle|show|hide)$/,bb=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cb=/queueHooks$/,db=[ib],eb={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bb.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bb.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fb(){return setTimeout(function(){$a=void 0}),$a=m.now()}function gb(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hb(a,b,c){for(var d,e=(eb[b]||[]).concat(eb["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ib(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fa(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fa(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ab.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fa(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hb(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jb(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kb(a,b,c){var d,e,f=0,g=db.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$a||fb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$a||fb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jb(k,j.opts.specialEasing);g>f;f++)if(d=db[f].call(j,a,k,j.opts))return d;return m.map(k,hb,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kb,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],eb[c]=eb[c]||[],eb[c].unshift(b)},prefilter:function(a,b){b?db.unshift(a):db.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return d.duration=m.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in m.fx.speeds?m.fx.speeds[d.duration]:m.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){m.isFunction(d.old)&&d.old.call(this),d.queue&&m.dequeue(this,d.queue)},d},m.fn.extend({fadeTo:function(a,b,c,d){return this.filter(U).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=m.isEmptyObject(a),f=m.speed(b,c,d),g=function(){var b=kb(this,m.extend({},a),f);(e||m._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=m.timers,g=m._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&cb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&m.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=m._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=m.timers,g=d?d.length:0;for(c.finish=!0,m.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),m.each(["toggle","show","hide"],function(a,b){var c=m.fn[b];m.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gb(b,!0),a,d,e)}}),m.each({slideDown:gb("show"),slideUp:gb("hide"),slideToggle:gb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){m.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),m.timers=[],m.fx.tick=function(){var a,b=m.timers,c=0;for($a=m.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||m.fx.stop(),$a=void 0},m.fx.timer=function(a){m.timers.push(a),a()?m.fx.start():m.timers.pop()},m.fx.interval=13,m.fx.start=function(){_a||(_a=setInterval(m.fx.tick,m.fx.interval))},m.fx.stop=function(){clearInterval(_a),_a=null},m.fx.speeds={slow:600,fast:200,_default:400},m.fn.delay=function(a,b){return a=m.fx?m.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e;b=y.createElement("div"),b.setAttribute("className","t"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=y.createElement("select"),e=c.appendChild(y.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",k.getSetAttribute="t"!==b.className,k.style=/top/.test(d.getAttribute("style")),k.hrefNormalized="/a"===d.getAttribute("href"),k.checkOn=!!a.value,k.optSelected=e.selected,k.enctype=!!y.createElement("form").enctype,c.disabled=!0,k.optDisabled=!e.disabled,a=y.createElement("input"),a.setAttribute("value",""),k.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),k.radioValue="t"===a.value}();var lb=/\r/g;m.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=m.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,m(this).val()):a,null==e?e="":"number"==typeof e?e+="":m.isArray(e)&&(e=m.map(e,function(a){return null==a?"":a+""})),b=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=m.valHooks[e.type]||m.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(lb,""):null==c?"":c)}}}),m.extend({valHooks:{option:{get:function(a){var b=m.find.attr(a,"value");return null!=b?b:m.trim(m.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&m.nodeName(c.parentNode,"optgroup"))){if(b=m(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=m.makeArray(b),g=e.length;while(g--)if(d=e[g],m.inArray(m.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),m.each(["radio","checkbox"],function(){m.valHooks[this]={set:function(a,b){return m.isArray(b)?a.checked=m.inArray(m(a).val(),b)>=0:void 0}},k.checkOn||(m.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var mb,nb,ob=m.expr.attrHandle,pb=/^(?:checked|selected)$/i,qb=k.getSetAttribute,rb=k.input;m.fn.extend({attr:function(a,b){return V(this,m.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){m.removeAttr(this,a)})}}),m.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===K?m.prop(a,b,c):(1===f&&m.isXMLDoc(a)||(b=b.toLowerCase(),d=m.attrHooks[b]||(m.expr.match.bool.test(b)?nb:mb)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=m.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void m.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=m.propFix[c]||c,m.expr.match.bool.test(c)?rb&&qb||!pb.test(c)?a[d]=!1:a[m.camelCase("default-"+c)]=a[d]=!1:m.attr(a,c,""),a.removeAttribute(qb?c:d)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&m.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),nb={set:function(a,b,c){return b===!1?m.removeAttr(a,c):rb&&qb||!pb.test(c)?a.setAttribute(!qb&&m.propFix[c]||c,c):a[m.camelCase("default-"+c)]=a[c]=!0,c}},m.each(m.expr.match.bool.source.match(/\w+/g),function(a,b){var c=ob[b]||m.find.attr;ob[b]=rb&&qb||!pb.test(b)?function(a,b,d){var e,f;return d||(f=ob[b],ob[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,ob[b]=f),e}:function(a,b,c){return c?void 0:a[m.camelCase("default-"+b)]?b.toLowerCase():null}}),rb&&qb||(m.attrHooks.value={set:function(a,b,c){return m.nodeName(a,"input")?void(a.defaultValue=b):mb&&mb.set(a,b,c)}}),qb||(mb={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},ob.id=ob.name=ob.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},m.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:mb.set},m.attrHooks.contenteditable={set:function(a,b,c){mb.set(a,""===b?!1:b,c)}},m.each(["width","height"],function(a,b){m.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),k.style||(m.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var sb=/^(?:input|select|textarea|button|object)$/i,tb=/^(?:a|area)$/i;m.fn.extend({prop:function(a,b){return V(this,m.prop,a,b,arguments.length>1)},removeProp:function(a){return a=m.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),m.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!m.isXMLDoc(a),f&&(b=m.propFix[b]||b,e=m.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=m.find.attr(a,"tabindex");return b?parseInt(b,10):sb.test(a.nodeName)||tb.test(a.nodeName)&&a.href?0:-1}}}}),k.hrefNormalized||m.each(["href","src"],function(a,b){m.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),k.optSelected||(m.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){m.propFix[this.toLowerCase()]=this}),k.enctype||(m.propFix.enctype="encoding");var ub=/[\t\r\n\f]/g;m.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ub," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=m.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ub," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?m.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(m.isFunction(a)?function(c){m(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=m(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===K||"boolean"===c)&&(this.className&&m._data(this,"__className__",this.className),this.className=this.className||a===!1?"":m._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ub," ").indexOf(b)>=0)return!0;return!1}}),m.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){m.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),m.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var vb=m.now(),wb=/\?/,xb=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;m.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(b+"");return e&&!m.trim(e.replace(xb,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():m.error("Invalid JSON: "+b)},m.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+b),c};var yb,zb,Ab=/#.*$/,Bb=/([?&])_=[^&]*/,Cb=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Db=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Eb=/^(?:GET|HEAD)$/,Fb=/^\/\//,Gb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hb={},Ib={},Jb="*/".concat("*");try{zb=location.href}catch(Kb){zb=y.createElement("a"),zb.href="",zb=zb.href}yb=Gb.exec(zb.toLowerCase())||[];function Lb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(m.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Mb(a,b,c,d){var e={},f=a===Ib;function g(h){var i;return e[h]=!0,m.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Nb(a,b){var c,d,e=m.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&m.extend(!0,a,c),a}function Ob(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Pb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:zb,type:"GET",isLocal:Db.test(yb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":m.parseJSON,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Nb(Nb(a,m.ajaxSettings),b):Nb(m.ajaxSettings,a)},ajaxPrefilter:Lb(Hb),ajaxTransport:Lb(Ib),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=m.ajaxSetup({},b),l=k.context||k,n=k.context&&(l.nodeType||l.jquery)?m(l):m.event,o=m.Deferred(),p=m.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Cb.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||zb)+"").replace(Ab,"").replace(Fb,yb[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=m.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(c=Gb.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===yb[1]&&c[2]===yb[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(yb[3]||("http:"===yb[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=m.param(k.data,k.traditional)),Mb(Hb,k,b,v),2===t)return v;h=m.event&&k.global,h&&0===m.active++&&m.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Eb.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(wb.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Bb.test(e)?e.replace(Bb,"$1_="+vb++):e+(wb.test(e)?"&":"?")+"_="+vb++)),k.ifModified&&(m.lastModified[e]&&v.setRequestHeader("If-Modified-Since",m.lastModified[e]),m.etag[e]&&v.setRequestHeader("If-None-Match",m.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Jb+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Mb(Ib,k,b,v)){v.readyState=1,h&&n.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Ob(k,v,c)),u=Pb(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(m.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(m.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&n.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(n.trigger("ajaxComplete",[v,k]),--m.active||m.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return m.get(a,b,c,"json")},getScript:function(a,b){return m.get(a,void 0,b,"script")}}),m.each(["get","post"],function(a,b){m[b]=function(a,c,d,e){return m.isFunction(c)&&(e=e||d,d=c,c=void 0),m.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),m._evalUrl=function(a){return m.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},m.fn.extend({wrapAll:function(a){if(m.isFunction(a))return this.each(function(b){m(this).wrapAll(a.call(this,b))});if(this[0]){var b=m(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(m.isFunction(a)?function(b){m(this).wrapInner(a.call(this,b))}:function(){var b=m(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=m.isFunction(a);return this.each(function(c){m(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){m.nodeName(this,"body")||m(this).replaceWith(this.childNodes)}).end()}}),m.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!k.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||m.css(a,"display"))},m.expr.filters.visible=function(a){return!m.expr.filters.hidden(a)};var Qb=/%20/g,Rb=/\[\]$/,Sb=/\r?\n/g,Tb=/^(?:submit|button|image|reset|file)$/i,Ub=/^(?:input|select|textarea|keygen)/i;function Vb(a,b,c,d){var e;if(m.isArray(b))m.each(b,function(b,e){c||Rb.test(a)?d(a,e):Vb(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==m.type(b))d(a,b);else for(e in b)Vb(a+"["+e+"]",b[e],c,d)}m.param=function(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=m.ajaxSettings&&m.ajaxSettings.traditional),m.isArray(a)||a.jquery&&!m.isPlainObject(a))m.each(a,function(){e(this.name,this.value)});else for(c in a)Vb(c,a[c],b,e);return d.join("&").replace(Qb,"+")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=m.prop(this,"elements");return a?m.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!m(this).is(":disabled")&&Ub.test(this.nodeName)&&!Tb.test(a)&&(this.checked||!W.test(a))}).map(function(a,b){var c=m(this).val();return null==c?null:m.isArray(c)?m.map(c,function(a){return{name:b.name,value:a.replace(Sb,"\r\n")}}):{name:b.name,value:c.replace(Sb,"\r\n")}}).get()}}),m.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&Zb()||$b()}:Zb;var Wb=0,Xb={},Yb=m.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Xb)Xb[a](void 0,!0)}),k.cors=!!Yb&&"withCredentials"in Yb,Yb=k.ajax=!!Yb,Yb&&m.ajaxTransport(function(a){if(!a.crossDomain||k.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Wb;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Xb[g],b=void 0,f.onreadystatechange=m.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Xb[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function Zb(){try{return new a.XMLHttpRequest}catch(b){}}function $b(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return m.globalEval(a),a}}}),m.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),m.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=y.head||m("head")[0]||y.documentElement;return{send:function(d,e){b=y.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var _b=[],ac=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=_b.pop()||m.expando+"_"+vb++;return this[a]=!0,a}}),m.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(ac.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&ac.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=m.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(ac,"$1"+e):b.jsonp!==!1&&(b.url+=(wb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||m.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,_b.push(e)),g&&m.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),m.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||y;var d=u.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=m.buildFragment([a],b,e),e&&e.length&&m(e).remove(),m.merge([],d.childNodes))};var bc=m.fn.load;m.fn.load=function(a,b,c){if("string"!=typeof a&&bc)return bc.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=m.trim(a.slice(h,a.length)),a=a.slice(0,h)),m.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&m.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?m("<div>").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cc=a.document.documentElement;function dc(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dc(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cc;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cc})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dc(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=La(k.pixelPosition,function(a,c){return c?(c=Ja(a,b),Ha.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ec=a.jQuery,fc=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fc),b&&a.jQuery===m&&(a.jQuery=ec),m},typeof b===K&&(a.jQuery=a.$=m),m}); -//# sourceMappingURL=jquery.min.map \ No newline at end of file diff --git a/assets/js/jquery.plugin.js b/assets/js/jquery.plugin.js deleted file mode 100644 index 50470fe8..00000000 --- a/assets/js/jquery.plugin.js +++ /dev/null @@ -1,344 +0,0 @@ -/* Simple JavaScript Inheritance - * By John Resig http://ejohn.org/ - * MIT Licensed. - */ -// Inspired by base2 and Prototype -(function(){ - var initializing = false; - - // The base JQClass implementation (does nothing) - window.JQClass = function(){}; - - // Collection of derived classes - JQClass.classes = {}; - - // Create a new JQClass that inherits from this class - JQClass.extend = function extender(prop) { - var base = this.prototype; - - // Instantiate a base class (but only create the instance, - // don't run the init constructor) - initializing = true; - var prototype = new this(); - initializing = false; - - // Copy the properties over onto the new prototype - for (var name in prop) { - // Check if we're overwriting an existing function - prototype[name] = typeof prop[name] == 'function' && - typeof base[name] == 'function' ? - (function(name, fn){ - return function() { - var __super = this._super; - - // Add a new ._super() method that is the same method - // but on the super-class - this._super = function(args) { - return base[name].apply(this, args || []); - }; - - var ret = fn.apply(this, arguments); - - // The method only need to be bound temporarily, so we - // remove it when we're done executing - this._super = __super; - - return ret; - }; - })(name, prop[name]) : - prop[name]; - } - - // The dummy class constructor - function JQClass() { - // All construction is actually done in the init method - if (!initializing && this._init) { - this._init.apply(this, arguments); - } - } - - // Populate our constructed prototype object - JQClass.prototype = prototype; - - // Enforce the constructor to be what we expect - JQClass.prototype.constructor = JQClass; - - // And make this class extendable - JQClass.extend = extender; - - return JQClass; - }; -})(); - -(function($) { // Ensure $, encapsulate - - /** Abstract base class for collection plugins v1.0.1. - Written by Keith Wood (kbwood{at}iinet.com.au) December 2013. - Licensed under the MIT (https://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt) license. - @module $.JQPlugin - @abstract */ - JQClass.classes.JQPlugin = JQClass.extend({ - - /** Name to identify this plugin. - @example name: 'tabs' */ - name: 'plugin', - - /** Default options for instances of this plugin (default: {}). - @example defaultOptions: { - selectedClass: 'selected', - triggers: 'click' - } */ - defaultOptions: {}, - - /** Options dependent on the locale. - Indexed by language and (optional) country code, with '' denoting the default language (English/US). - @example regionalOptions: { - '': { - greeting: 'Hi' - } - } */ - regionalOptions: {}, - - /** Names of getter methods - those that can't be chained (default: []). - @example _getters: ['activeTab'] */ - _getters: [], - - /** Retrieve a marker class for affected elements. - @private - @return {string} The marker class. */ - _getMarker: function() { - return 'is-' + this.name; - }, - - /** Initialise the plugin. - Create the jQuery bridge - plugin name <code>xyz</code> - produces <code>$.xyz</code> and <code>$.fn.xyz</code>. */ - _init: function() { - // Apply default localisations - $.extend(this.defaultOptions, (this.regionalOptions && this.regionalOptions['']) || {}); - // Camel-case the name - var jqName = camelCase(this.name); - // Expose jQuery singleton manager - $[jqName] = this; - // Expose jQuery collection plugin - $.fn[jqName] = function(options) { - var otherArgs = Array.prototype.slice.call(arguments, 1); - if ($[jqName]._isNotChained(options, otherArgs)) { - return $[jqName][options].apply($[jqName], [this[0]].concat(otherArgs)); - } - return this.each(function() { - if (typeof options === 'string') { - if (options[0] === '_' || !$[jqName][options]) { - throw 'Unknown method: ' + options; - } - $[jqName][options].apply($[jqName], [this].concat(otherArgs)); - } - else { - $[jqName]._attach(this, options); - } - }); - }; - }, - - /** Set default values for all subsequent instances. - @param options {object} The new default options. - @example $.plugin.setDefauls({name: value}) */ - setDefaults: function(options) { - $.extend(this.defaultOptions, options || {}); - }, - - /** Determine whether a method is a getter and doesn't permit chaining. - @private - @param name {string} The method name. - @param otherArgs {any[]} Any other arguments for the method. - @return {boolean} True if this method is a getter, false otherwise. */ - _isNotChained: function(name, otherArgs) { - if (name === 'option' && (otherArgs.length === 0 || - (otherArgs.length === 1 && typeof otherArgs[0] === 'string'))) { - return true; - } - return $.inArray(name, this._getters) > -1; - }, - - /** Initialise an element. Called internally only. - Adds an instance object as data named for the plugin. - @param elem {Element} The element to enhance. - @param options {object} Overriding settings. */ - _attach: function(elem, options) { - elem = $(elem); - if (elem.hasClass(this._getMarker())) { - return; - } - elem.addClass(this._getMarker()); - options = $.extend({}, this.defaultOptions, this._getMetadata(elem), options || {}); - var inst = $.extend({name: this.name, elem: elem, options: options}, - this._instSettings(elem, options)); - elem.data(this.name, inst); // Save instance against element - this._postAttach(elem, inst); - this.option(elem, options); - }, - - /** Retrieve additional instance settings. - Override this in a sub-class to provide extra settings. - @param elem {jQuery} The current jQuery element. - @param options {object} The instance options. - @return {object} Any extra instance values. - @example _instSettings: function(elem, options) { - return {nav: elem.find(options.navSelector)}; - } */ - _instSettings: function(elem, options) { - return {}; - }, - - /** Plugin specific post initialisation. - Override this in a sub-class to perform extra activities. - @param elem {jQuery} The current jQuery element. - @param inst {object} The instance settings. - @example _postAttach: function(elem, inst) { - elem.on('click.' + this.name, function() { - ... - }); - } */ - _postAttach: function(elem, inst) { - }, - - /** Retrieve metadata configuration from the element. - Metadata is specified as an attribute: - <code>data-&lt;plugin name>="&lt;setting name>: '&lt;value>', ..."</code>. - Dates should be specified as strings in this format: 'new Date(y, m-1, d)'. - @private - @param elem {jQuery} The source element. - @return {object} The inline configuration or {}. */ - _getMetadata: function(elem) { - try { - var data = elem.data(this.name.toLowerCase()) || ''; - data = data.replace(/'/g, '"'); - data = data.replace(/([a-zA-Z0-9]+):/g, function(match, group, i) { - var count = data.substring(0, i).match(/"/g); // Handle embedded ':' - return (!count || count.length % 2 === 0 ? '"' + group + '":' : group + ':'); - }); - data = $.parseJSON('{' + data + '}'); - for (var name in data) { // Convert dates - var value = data[name]; - if (typeof value === 'string' && value.match(/^new Date\((.*)\)$/)) { - data[name] = eval(value); - } - } - return data; - } - catch (e) { - return {}; - } - }, - - /** Retrieve the instance data for element. - @param elem {Element} The source element. - @return {object} The instance data or {}. */ - _getInst: function(elem) { - return $(elem).data(this.name) || {}; - }, - - /** Retrieve or reconfigure the settings for a plugin. - @param elem {Element} The source element. - @param name {object|string} The collection of new option values or the name of a single option. - @param [value] {any} The value for a single named option. - @return {any|object} If retrieving a single value or all options. - @example $(selector).plugin('option', 'name', value) - $(selector).plugin('option', {name: value, ...}) - var value = $(selector).plugin('option', 'name') - var options = $(selector).plugin('option') */ - option: function(elem, name, value) { - elem = $(elem); - var inst = elem.data(this.name); - if (!name || (typeof name === 'string' && value == null)) { - var options = (inst || {}).options; - return (options && name ? options[name] : options); - } - if (!elem.hasClass(this._getMarker())) { - return; - } - var options = name || {}; - if (typeof name === 'string') { - options = {}; - options[name] = value; - } - this._optionsChanged(elem, inst, options); - $.extend(inst.options, options); - }, - - /** Plugin specific options processing. - Old value available in <code>inst.options[name]</code>, new value in <code>options[name]</code>. - Override this in a sub-class to perform extra activities. - @param elem {jQuery} The current jQuery element. - @param inst {object} The instance settings. - @param options {object} The new options. - @example _optionsChanged: function(elem, inst, options) { - if (options.name != inst.options.name) { - elem.removeClass(inst.options.name).addClass(options.name); - } - } */ - _optionsChanged: function(elem, inst, options) { - }, - - /** Remove all trace of the plugin. - Override <code>_preDestroy</code> for plugin-specific processing. - @param elem {Element} The source element. - @example $(selector).plugin('destroy') */ - destroy: function(elem) { - elem = $(elem); - if (!elem.hasClass(this._getMarker())) { - return; - } - this._preDestroy(elem, this._getInst(elem)); - elem.removeData(this.name).removeClass(this._getMarker()); - }, - - /** Plugin specific pre destruction. - Override this in a sub-class to perform extra activities and undo everything that was - done in the <code>_postAttach</code> or <code>_optionsChanged</code> functions. - @param elem {jQuery} The current jQuery element. - @param inst {object} The instance settings. - @example _preDestroy: function(elem, inst) { - elem.off('.' + this.name); - } */ - _preDestroy: function(elem, inst) { - } - }); - - /** Convert names from hyphenated to camel-case. - @private - @param value {string} The original hyphenated name. - @return {string} The camel-case version. */ - function camelCase(name) { - return name.replace(/-([a-z])/g, function(match, group) { - return group.toUpperCase(); - }); - } - - /** Expose the plugin base. - @namespace "$.JQPlugin" */ - $.JQPlugin = { - - /** Create a new collection plugin. - @memberof "$.JQPlugin" - @param [superClass='JQPlugin'] {string} The name of the parent class to inherit from. - @param overrides {object} The property/function overrides for the new class. - @example $.JQPlugin.createPlugin({ - name: 'tabs', - defaultOptions: {selectedClass: 'selected'}, - _initSettings: function(elem, options) { return {...}; }, - _postAttach: function(elem, inst) { ... } - }); */ - createPlugin: function(superClass, overrides) { - if (typeof superClass === 'object') { - overrides = superClass; - superClass = 'JQPlugin'; - } - superClass = camelCase(superClass); - var className = camelCase(overrides.name); - JQClass.classes[className] = JQClass.classes[superClass].extend(overrides); - new JQClass.classes[className](); - } - }; - -})(jQuery); \ No newline at end of file diff --git a/assets/js/jquery.validate-rules.js b/assets/js/jquery.validate-rules.js deleted file mode 100644 index 8e757cb6..00000000 --- a/assets/js/jquery.validate-rules.js +++ /dev/null @@ -1,955 +0,0 @@ -$(document).ready(function () { - - jQuery.validator.addMethod("lettersonly", function (value, element) { - return this.optional(element) || /^[a-z]+$/i.test(value); - }, "Please enter only letters"); - - - $("#uploadForm").validate({ - errorElement: "span", - errorClass: "inputError", - successClass: "inputSuccess", - //set the rules for the fild names - rules: { - courseTitle: { - required: true, - - }, - courseDescription: { - required: true, - - }, - - userImage: { - required: true, - - }, - }, - //set messages to appear inline - messages: { - courseTitle: { - required: "This field is required", - - }, - courseDescription: { - required: "This field is required", - - }, - userImage: { - required: "This field is required", - - }, - }, - errorPlacement: function (error, element) { - error.appendTo(element.parent()); - }, - highlight: function (element) { - $(element).closest('.form-control').addClass('has-error'); - }, - success: function (element) { - element.closest('.form-control').removeClass('has-error'); - } - - }); - - $("#expenseValidation").validate({ - errorElement: "span", - errorClass: "inputError", - successClass: "inputSuccess", - //set the rules for the fild names - rules: { - datename: { - required: true, - - }, - expense_mode: { - required: true, - - }, - exAmount: { - required: true, - - }, - - }, - //set messages to appear inline - messages: { - datename: { - required: " This field is required ", - - }, - expense_mode: { - required: " This field is required ", - - }, - exAmount: { - required: " This field is required ", - - }, - email: " ", - }, - errorPlacement: function (error, element) { - error.appendTo(element.parent()); - }, - highlight: function (element) { - $(element).closest('.form-control').addClass('has-error'); - }, - success: function (element) { - element.closest('.form-control').removeClass('has-error'); - } - - }); - - $("#otherValidation").validate({ - errorElement: "span", - errorClass: "inputError", - successClass: "inputSuccess", - //set the rules for the fild names - rules: { - other_amount: { - required: true, - digits: true, - }, - other_remarks: { - required: true, - - }, - - }, - //set messages to appear inline - messages: { - other_amount: { - required: " This field is required ", - digits: "Digits only allowed", - }, - other_remarks: { - required: " This field is required ", - - }, - - email: " ", - }, - errorPlacement: function (error, element) { - error.appendTo(element.parent()); - }, - highlight: function (element) { - $(element).closest('.form-control').addClass('has-error'); - }, - success: function (element) { - element.closest('.form-control').removeClass('has-error'); - } - - }); - - $("#createInvite").validate({ - errorElement: "span", - errorClass: "inputError", - successClass: "inputSuccess", - //set the rules for the fild names - rules: { - name: { - required: true, - }, - email: { - required: true, - email: true - }, - dateField: { - required: true, - }, - mobile: { - required: true, - minlength: 10, - maxlength: 10 - }, - }, - //set messages to appear inline - messages: { - name: { - required: " ", - }, - dateField: { - required: " ", - }, - mobile: { - required: " ", - minlength: "", - maxlength: "" - }, - email: "", - }, - errorPlacement: function (error, element) { - error.appendTo(element.parent()); - }, - highlight: function (element) { - $(element).closest('.form-control').addClass('has-error'); - }, - success: function (element) { - element.closest('.form-control').removeClass('has-error'); - } - - }); - - $(".ajax_permit_upload").validate({ - errorElement: "span", - errorClass: "inputError", - successClass: "inputSuccess", - //set the rules for the fild names - rules: { - truck_permit_no: { - required: true, - }, - truck_permit_date: { - required: true, - - }, - truck_permit_from: { - required: true, - }, - truck_permit_to: { - required: true, - - }, - }, - //set messages to appear inline - messages: { - truck_permit_no: { - required: "This field is required ", - }, - truck_permit_date: { - required: "This field is required ", - }, - truck_permit_from: { - required: "This field is required ", - - }, - truck_permit_to: { - required: "This field is required", - } - }, - errorPlacement: function (error, element) { - error.appendTo(element.parent()); - }, - highlight: function (element) { - $(element).closest('.form-control').addClass('has-error'); - }, - success: function (element) { - element.closest('.form-control').removeClass('has-error'); - } - - }); - - $(".ajax_rc_upload").validate({ - errorElement: "span", - errorClass: "inputError", - successClass: "inputSuccess", - //set the rules for the fild names - rules: { - truck_rc_num: { - required: true, - }, - truck_rc_date: { - required: true, - - }, - truck_rc_to: { - required: true, - }, - - }, - //set messages to appear inline - messages: { - truck_rc_num: { - required: "This field is required ", - }, - truck_rc_date: { - required: "This field is required ", - }, - truck_rc_to: { - required: "This field is required ", - - }, - - }, - errorPlacement: function (error, element) { - error.appendTo(element.parent()); - }, - highlight: function (element) { - $(element).closest('.form-control').addClass('has-error'); - }, - success: function (element) { - element.closest('.form-control').removeClass('has-error'); - } - - }); - - $(".ajax_insurence_upload").validate({ - errorElement: "span", - errorClass: "inputError", - successClass: "inputSuccess", - //set the rules for the fild names - rules: { - truck_insurence_num: { - required: true, - }, - truck_insurence_from: { - required: true, - - }, - truck_insurence_to: { - required: true, - }, - - }, - //set messages to appear inline - messages: { - truck_insurence_num: { - required: "This field is required ", - }, - truck_insurence_from: { - required: "This field is required ", - }, - truck_insurence_to: { - required: "This field is required ", - - }, - - }, - errorPlacement: function (error, element) { - error.appendTo(element.parent()); - }, - highlight: function (element) { - $(element).closest('.form-control').addClass('has-error'); - }, - success: function (element) { - element.closest('.form-control').removeClass('has-error'); - } - - }); - - $(".ajax_goods_upload").validate({ - errorElement: "span", - errorClass: "inputError", - successClass: "inputSuccess", - //set the rules for the fild names - rules: { - goods_num: { - required: true, - }, - goods_to: { - required: true, - - }, - goods_from: { - required: true, - }, - - }, - //set messages to appear inline - messages: { - goods_num: { - required: "This field is required ", - }, - goods_to: { - required: "This field is required ", - }, - goods_from: { - required: "This field is required ", - - }, - - }, - errorPlacement: function (error, element) { - error.appendTo(element.parent()); - }, - highlight: function (element) { - $(element).closest('.form-control').addClass('has-error'); - }, - success: function (element) { - element.closest('.form-control').removeClass('has-error'); - } - - }); - - $(".ajax_others_upload").validate({ - errorElement: "span", - errorClass: "inputError", - successClass: "inputSuccess", - //set the rules for the fild names - rules: { - truck_other_document: { - required: true, - }, - truck_document_to: { - required: true, - - }, - - }, - //set messages to appear inline - messages: { - truck_other_document: { - required: "This field is required ", - }, - truck_document_to: { - required: "This field is required ", - }, - - }, - errorPlacement: function (error, element) { - error.appendTo(element.parent()); - }, - highlight: function (element) { - $(element).closest('.form-control').addClass('has-error'); - }, - success: function (element) { - element.closest('.form-control').removeClass('has-error'); - } - - }); - - $(".ajax_road_upload").validate({ - errorElement: "span", - errorClass: "inputError", - successClass: "inputSuccess", - //set the rules for the fild names - rules: { - road_num: { - required: true, - }, - road_on: { - required: true, - - }, - road_upto: { - required: true, - - }, - - }, - //set messages to appear inline - messages: { - road_num: { - required: "This field is required ", - }, - road_on: { - required: "This field is required ", - }, - road_upto: { - required: "This field is required ", - }, - - }, - errorPlacement: function (error, element) { - error.appendTo(element.parent()); - }, - highlight: function (element) { - $(element).closest('.form-control').addClass('has-error'); - }, - success: function (element) { - element.closest('.form-control').removeClass('has-error'); - } - - }); - - $(".tripForm").validate({ - errorElement: "span", - errorClass: "inputError", - successClass: "inputSuccess", - //set the rules for the fild names - rules: { - trip_type: { - required: true, - }, - trip_route: { - required: true, - }, - trip_departure: { - required: true, - - }, - trip_arrivel: { - required: true, - - }, - trip_driver: { - required: true, - - }, - trip_truck: { - required: true, - - }, - trip_starting: { - required: true, - - }, - - - }, - //set messages to appear inline - messages: { - trip_type: { - required: "This field is required ", - }, - trip_route: { - required: "This field is required ", - }, - trip_departure: { - required: "This field is required ", - }, - trip_arrivel: { - required: "This field is required ", - }, - trip_driver: { - required: "This field is required ", - }, - trip_truck: { - required: "This field is required ", - }, - trip_starting: { - required: "This field is required ", - }, - - - }, - errorPlacement: function (error, element) { - error.appendTo(element.parent()); - }, - highlight: function (element) { - $(element).closest('.form-control').addClass('has-error'); - }, - success: function (element) { - element.closest('.form-control').removeClass('has-error'); - } - - }); - - $(".truckForm").validate({ - errorElement: "span", - errorClass: "inputError", - successClass: "inputSuccess", - //set the rules for the fild names - rules: { - truck_brand: { - required: true, - }, - truck_model: { - required: true, - - }, - truck_register_number: { - required: true, - - }, - truck_register_on: { - required: true, - - }, - truck_wheelers: { - required: true, - - }, - - - }, - //set messages to appear inline - messages: { - truck_brand: { - required: "This field is required ", - }, - truck_model: { - required: "This field is required ", - }, - truck_register_number: { - required: "This field is required ", - }, - truck_register_on: { - required: "This field is required ", - }, - truck_wheelers: { - required: "This field is required ", - }, - - - - }, - errorPlacement: function (error, element) { - error.appendTo(element.parent()); - }, - highlight: function (element) { - $(element).closest('.form-control').addClass('has-error'); - }, - success: function (element) { - element.closest('.form-control').removeClass('has-error'); - } - - }); - - $("#fuelValidation").validate({ - errorElement: "span", - errorClass: "inputError", - successClass: "inputSuccess", - //set the rules for the fild names - rules: { - expense_fquantity: { - required: true, - }, - expense_amount: { - required: true, - - }, - expense_fodometer: { - required: true, - - }, - expense_rate: { - required: true, - - }, - - }, - //set messages to appear inline - messages: { - expense_fquantity: { - required: "This field is required ", - }, - expense_amount: { - required: "This field is required ", - digits:"Digits only allowed", - }, - expense_fodometer: { - required: "This field is required ", - }, - expense_rate: { - required: "This field is required ", - }, - }, - errorPlacement: function (error, element) { - error.appendTo(element.parent()); - }, - highlight: function (element) { - $(element).closest('.form-control').addClass('has-error'); - }, - success: function (element) { - element.closest('.form-control').removeClass('has-error'); - } - - }); - $("#searchReport").validate({ - errorElement: "span", - errorClass: "inputError", - successClass: "inputSuccess", - //set the rules for the fild names - rules: { - searchDate: { - required: true, - - }, - searchDateto: { - required: true, - - }, - - }, - //set messages to appear inline - messages: { - searchDate: { - required: " This field is required ", - - }, - searchDateto: { - required: " This field is required ", - - }, - }, - errorPlacement: function (error, element) { - error.appendTo(element.parent()); - }, - highlight: function (element) { - $(element).closest('.form-control').addClass('has-error'); - }, - success: function (element) { - element.closest('.form-control').removeClass('has-error'); - } - - }); - $("#searchRoute").validate({ - errorElement: "span", - errorClass: "inputError", - successClass: "inputSuccess", - //set the rules for the fild names - rules: { - searchDate: { - required: true, - - }, - searchDateto: { - required: true, - - }, - - }, - //set messages to appear inline - messages: { - searchDate: { - required: " This field is required ", - - }, - searchDateto: { - required: " This field is required ", - - }, - }, - errorPlacement: function (error, element) { - error.appendTo(element.parent()); - }, - highlight: function (element) { - $(element).closest('.form-control').addClass('has-error'); - }, - success: function (element) { - element.closest('.form-control').removeClass('has-error'); - } - - }); - - - $("#searchTrip").validate({ - errorElement: "span", - errorClass: "inputError", - successClass: "inputSuccess", - //set the rules for the fild names - rules: { - searchFrom: { - required: true, - - }, - searchTo: { - required: true, - - }, - - }, - //set messages to appear inline - messages: { - searchFrom: { - required: " This field is required ", - - }, - searchTo: { - required: " This field is required ", - - }, - }, - errorPlacement: function (error, element) { - error.appendTo(element.parent()); - }, - highlight: function (element) { - $(element).closest('.form-control').addClass('has-error'); - }, - success: function (element) { - element.closest('.form-control').removeClass('has-error'); - } - - }); - - - - $("#idleValidation").validate({ - errorElement: "span", - errorClass: "inputError", - successClass: "inputSuccess", - //set the rules for the fild names - rules: { - idle_from: { - required: true, - - }, - idle_to: { - required: true, - - }, - - idle_remarks: { - required: true, - - }, - - }, - //set messages to appear inline - messages: { - idle_from: { - required: " This field is required ", - - }, - idle_to: { - required: " This field is required ", - - }, - idle_remarks: { - required: " This field is required ", - - }, - }, - errorPlacement: function (error, element) { - error.appendTo(element.parent()); - }, - highlight: function (element) { - $(element).closest('.form-control').addClass('has-error'); - }, - success: function (element) { - element.closest('.form-control').removeClass('has-error'); - } - - }); - - $(".tireAllocation").validate({ - errorElement: "span", - errorClass: "inputError", - successClass: "inputSuccess", - //set the rules for the fild names - rules: { - tirename: { - required: true, - - }, - truckname: { - required: true, - - }, - - allocation_start: { - required: true, - - }, - - }, - //set messages to appear inline - messages: { - tirename: { - required: " This field is required ", - - }, - truckname: { - required: " This field is required ", - - }, - allocation_start: { - required: " This field is required ", - - }, - }, - errorPlacement: function (error, element) { - error.appendTo(element.parent()); - }, - highlight: function (element) { - $(element).closest('.form-control').addClass('has-error'); - }, - success: function (element) { - element.closest('.form-control').removeClass('has-error'); - } - - }); - - $(".tireForm").validate({ - errorElement: "span", - errorClass: "inputError", - successClass: "inputSuccess", - //set the rules for the fild names - rules: { - tire_num: { - required: true, - - }, - tire_model: { - required: true, - - }, - - tire_brand: { - required: true, - - }, - - }, - //set messages to appear inline - messages: { - tire_num: { - required: " This field is required ", - - }, - tire_model: { - required: " This field is required ", - - }, - tire_brand: { - required: " This field is required ", - - }, - }, - errorPlacement: function (error, element) { - error.appendTo(element.parent()); - }, - highlight: function (element) { - $(element).closest('.form-control').addClass('has-error'); - }, - success: function (element) { - element.closest('.form-control').removeClass('has-error'); - } - - }); - - $(".tireAllocationEdit").validate({ - errorElement: "span", - errorClass: "inputError", - successClass: "inputSuccess", - //set the rules for the fild names - rules: { - allocation_end: { - required: true, - - }, - - allocation_allocated: { - required: true, - - }, - - - }, - //set messages to appear inline - messages: { - allocation_end: { - required: "This field is required", - - }, - - allocation_allocated: { - required: " ", - - }, - - }, - errorPlacement: function (error, element) { - - if (element.attr("type") == "radio") { - error.insertAfter(element.parent()); - $('.radioError').show(); - } else { - error.appendTo(element.parent()); - } - - }, - highlight: function (element) { - $(element).closest('.form-control').addClass('has-error'); - }, - success: function (element) { - $('.radioError').hide(); - element.closest('.form-control').removeClass('has-error'); - } - - }); - - - -}); \ No newline at end of file diff --git a/assets/js/jquery.validate.js b/assets/js/jquery.validate.js deleted file mode 100644 index dd91cab9..00000000 --- a/assets/js/jquery.validate.js +++ /dev/null @@ -1,1368 +0,0 @@ -/*! - * jQuery Validation Plugin v1.13.1 - * - * http://jqueryvalidation.org/ - * - * Copyright (c) 2014 Jörn Zaefferer - * Released under the MIT license - */ -(function( factory ) { - if ( typeof define === "function" && define.amd ) { - define( ["jquery"], factory ); - } else { - factory( jQuery ); - } -}(function( $ ) { - -$.extend($.fn, { - // http://jqueryvalidation.org/validate/ - validate: function( options ) { - - // if nothing is selected, return nothing; can't chain anyway - if ( !this.length ) { - if ( options && options.debug && window.console ) { - console.warn( "Nothing selected, can't validate, returning nothing." ); - } - return; - } - - // check if a validator for this form was already created - var validator = $.data( this[ 0 ], "validator" ); - if ( validator ) { - return validator; - } - - // Add novalidate tag if HTML5. - this.attr( "novalidate", "novalidate" ); - - validator = new $.validator( options, this[ 0 ] ); - $.data( this[ 0 ], "validator", validator ); - - if ( validator.settings.onsubmit ) { - - this.validateDelegate( ":submit", "click", function( event ) { - if ( validator.settings.submitHandler ) { - validator.submitButton = event.target; - } - // allow suppressing validation by adding a cancel class to the submit button - if ( $( event.target ).hasClass( "cancel" ) ) { - validator.cancelSubmit = true; - } - - // allow suppressing validation by adding the html5 formnovalidate attribute to the submit button - if ( $( event.target ).attr( "formnovalidate" ) !== undefined ) { - validator.cancelSubmit = true; - } - }); - - // validate the form on submit - this.submit( function( event ) { - if ( validator.settings.debug ) { - // prevent form submit to be able to see console output - event.preventDefault(); - } - function handle() { - var hidden, result; - if ( validator.settings.submitHandler ) { - if ( validator.submitButton ) { - // insert a hidden input as a replacement for the missing submit button - hidden = $( "<input type='hidden'/>" ) - .attr( "name", validator.submitButton.name ) - .val( $( validator.submitButton ).val() ) - .appendTo( validator.currentForm ); - } - result = validator.settings.submitHandler.call( validator, validator.currentForm, event ); - if ( validator.submitButton ) { - // and clean up afterwards; thanks to no-block-scope, hidden can be referenced - hidden.remove(); - } - if ( result !== undefined ) { - return result; - } - return false; - } - return true; - } - - // prevent submit for invalid forms or custom submit handlers - if ( validator.cancelSubmit ) { - validator.cancelSubmit = false; - return handle(); - } - if ( validator.form() ) { - if ( validator.pendingRequest ) { - validator.formSubmitted = true; - return false; - } - return handle(); - } else { - validator.focusInvalid(); - return false; - } - }); - } - - return validator; - }, - // http://jqueryvalidation.org/valid/ - valid: function() { - var valid, validator; - - if ( $( this[ 0 ] ).is( "form" ) ) { - valid = this.validate().form(); - } else { - valid = true; - validator = $( this[ 0 ].form ).validate(); - this.each( function() { - valid = validator.element( this ) && valid; - }); - } - return valid; - }, - // attributes: space separated list of attributes to retrieve and remove - removeAttrs: function( attributes ) { - var result = {}, - $element = this; - $.each( attributes.split( /\s/ ), function( index, value ) { - result[ value ] = $element.attr( value ); - $element.removeAttr( value ); - }); - return result; - }, - // http://jqueryvalidation.org/rules/ - rules: function( command, argument ) { - var element = this[ 0 ], - settings, staticRules, existingRules, data, param, filtered; - - if ( command ) { - settings = $.data( element.form, "validator" ).settings; - staticRules = settings.rules; - existingRules = $.validator.staticRules( element ); - switch ( command ) { - case "add": - $.extend( existingRules, $.validator.normalizeRule( argument ) ); - // remove messages from rules, but allow them to be set separately - delete existingRules.messages; - staticRules[ element.name ] = existingRules; - if ( argument.messages ) { - settings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages ); - } - break; - case "remove": - if ( !argument ) { - delete staticRules[ element.name ]; - return existingRules; - } - filtered = {}; - $.each( argument.split( /\s/ ), function( index, method ) { - filtered[ method ] = existingRules[ method ]; - delete existingRules[ method ]; - if ( method === "required" ) { - $( element ).removeAttr( "aria-required" ); - } - }); - return filtered; - } - } - - data = $.validator.normalizeRules( - $.extend( - {}, - $.validator.classRules( element ), - $.validator.attributeRules( element ), - $.validator.dataRules( element ), - $.validator.staticRules( element ) - ), element ); - - // make sure required is at front - if ( data.required ) { - param = data.required; - delete data.required; - data = $.extend( { required: param }, data ); - $( element ).attr( "aria-required", "true" ); - } - - // make sure remote is at back - if ( data.remote ) { - param = data.remote; - delete data.remote; - data = $.extend( data, { remote: param }); - } - - return data; - } -}); - -// Custom selectors -$.extend( $.expr[ ":" ], { - // http://jqueryvalidation.org/blank-selector/ - blank: function( a ) { - return !$.trim( "" + $( a ).val() ); - }, - // http://jqueryvalidation.org/filled-selector/ - filled: function( a ) { - return !!$.trim( "" + $( a ).val() ); - }, - // http://jqueryvalidation.org/unchecked-selector/ - unchecked: function( a ) { - return !$( a ).prop( "checked" ); - } -}); - -// constructor for validator -$.validator = function( options, form ) { - this.settings = $.extend( true, {}, $.validator.defaults, options ); - this.currentForm = form; - this.init(); -}; - -// http://jqueryvalidation.org/jQuery.validator.format/ -$.validator.format = function( source, params ) { - if ( arguments.length === 1 ) { - return function() { - var args = $.makeArray( arguments ); - args.unshift( source ); - return $.validator.format.apply( this, args ); - }; - } - if ( arguments.length > 2 && params.constructor !== Array ) { - params = $.makeArray( arguments ).slice( 1 ); - } - if ( params.constructor !== Array ) { - params = [ params ]; - } - $.each( params, function( i, n ) { - source = source.replace( new RegExp( "\\{" + i + "\\}", "g" ), function() { - return n; - }); - }); - return source; -}; - -$.extend( $.validator, { - - defaults: { - messages: {}, - groups: {}, - rules: {}, - errorClass: "error", - validClass: "valid", - errorElement: "label", - focusCleanup: false, - focusInvalid: true, - errorContainer: $( [] ), - errorLabelContainer: $( [] ), - onsubmit: true, - ignore: ":hidden", - ignoreTitle: false, - onfocusin: function( element ) { - this.lastActive = element; - - // Hide error label and remove error class on focus if enabled - if ( this.settings.focusCleanup ) { - if ( this.settings.unhighlight ) { - this.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass ); - } - this.hideThese( this.errorsFor( element ) ); - } - }, - onfocusout: function( element ) { - if ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) { - this.element( element ); - } - }, - onkeyup: function( element, event ) { - if ( event.which === 9 && this.elementValue( element ) === "" ) { - return; - } else if ( element.name in this.submitted || element === this.lastElement ) { - this.element( element ); - } - }, - onclick: function( element ) { - // click on selects, radiobuttons and checkboxes - if ( element.name in this.submitted ) { - this.element( element ); - - // or option elements, check parent select in that case - } else if ( element.parentNode.name in this.submitted ) { - this.element( element.parentNode ); - } - }, - highlight: function( element, errorClass, validClass ) { - if ( element.type === "radio" ) { - this.findByName( element.name ).addClass( errorClass ).removeClass( validClass ); - } else { - $( element ).addClass( errorClass ).removeClass( validClass ); - } - }, - unhighlight: function( element, errorClass, validClass ) { - if ( element.type === "radio" ) { - this.findByName( element.name ).removeClass( errorClass ).addClass( validClass ); - } else { - $( element ).removeClass( errorClass ).addClass( validClass ); - } - } - }, - - // http://jqueryvalidation.org/jQuery.validator.setDefaults/ - setDefaults: function( settings ) { - $.extend( $.validator.defaults, settings ); - }, - - messages: { - required: "This field is required.", - remote: "Please fix this field.", - email: "Please enter a valid email address.", - url: "Please enter a valid URL.", - date: "Please enter a valid date.", - dateISO: "Please enter a valid date ( ISO ).", - number: "Please enter a valid number.", - digits: "Please enter only digits.", - creditcard: "Please enter a valid credit card number.", - equalTo: "Please enter the same value again.", - maxlength: $.validator.format( "Please enter no more than {0} characters." ), - minlength: $.validator.format( "Please enter at least {0} characters." ), - rangelength: $.validator.format( "Please enter a value between {0} and {1} characters long." ), - range: $.validator.format( "Please enter a value between {0} and {1}." ), - max: $.validator.format( "Please enter a value less than or equal to {0}." ), - min: $.validator.format( "Please enter a value greater than or equal to {0}." ) - }, - - autoCreateRanges: false, - - prototype: { - - init: function() { - this.labelContainer = $( this.settings.errorLabelContainer ); - this.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm ); - this.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer ); - this.submitted = {}; - this.valueCache = {}; - this.pendingRequest = 0; - this.pending = {}; - this.invalid = {}; - this.reset(); - - var groups = ( this.groups = {} ), - rules; - $.each( this.settings.groups, function( key, value ) { - if ( typeof value === "string" ) { - value = value.split( /\s/ ); - } - $.each( value, function( index, name ) { - groups[ name ] = key; - }); - }); - rules = this.settings.rules; - $.each( rules, function( key, value ) { - rules[ key ] = $.validator.normalizeRule( value ); - }); - - function delegate( event ) { - var validator = $.data( this[ 0 ].form, "validator" ), - eventType = "on" + event.type.replace( /^validate/, "" ), - settings = validator.settings; - if ( settings[ eventType ] && !this.is( settings.ignore ) ) { - settings[ eventType ].call( validator, this[ 0 ], event ); - } - } - $( this.currentForm ) - .validateDelegate( ":text, [type='password'], [type='file'], select, textarea, " + - "[type='number'], [type='search'] ,[type='tel'], [type='url'], " + - "[type='email'], [type='datetime'], [type='date'], [type='month'], " + - "[type='week'], [type='time'], [type='datetime-local'], " + - "[type='range'], [type='color'], [type='radio'], [type='checkbox']", - "focusin focusout keyup", delegate) - // Support: Chrome, oldIE - // "select" is provided as event.target when clicking a option - .validateDelegate("select, option, [type='radio'], [type='checkbox']", "click", delegate); - - if ( this.settings.invalidHandler ) { - $( this.currentForm ).bind( "invalid-form.validate", this.settings.invalidHandler ); - } - - // Add aria-required to any Static/Data/Class required fields before first validation - // Screen readers require this attribute to be present before the initial submission http://www.w3.org/TR/WCAG-TECHS/ARIA2.html - $( this.currentForm ).find( "[required], [data-rule-required], .required" ).attr( "aria-required", "true" ); - }, - - // http://jqueryvalidation.org/Validator.form/ - form: function() { - this.checkForm(); - $.extend( this.submitted, this.errorMap ); - this.invalid = $.extend({}, this.errorMap ); - if ( !this.valid() ) { - $( this.currentForm ).triggerHandler( "invalid-form", [ this ]); - } - this.showErrors(); - return this.valid(); - }, - - checkForm: function() { - this.prepareForm(); - for ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) { - this.check( elements[ i ] ); - } - return this.valid(); - }, - - // http://jqueryvalidation.org/Validator.element/ - element: function( element ) { - var cleanElement = this.clean( element ), - checkElement = this.validationTargetFor( cleanElement ), - result = true; - - this.lastElement = checkElement; - - if ( checkElement === undefined ) { - delete this.invalid[ cleanElement.name ]; - } else { - this.prepareElement( checkElement ); - this.currentElements = $( checkElement ); - - result = this.check( checkElement ) !== false; - if ( result ) { - delete this.invalid[ checkElement.name ]; - } else { - this.invalid[ checkElement.name ] = true; - } - } - // Add aria-invalid status for screen readers - $( element ).attr( "aria-invalid", !result ); - - if ( !this.numberOfInvalids() ) { - // Hide error containers on last error - this.toHide = this.toHide.add( this.containers ); - } - this.showErrors(); - return result; - }, - - // http://jqueryvalidation.org/Validator.showErrors/ - showErrors: function( errors ) { - if ( errors ) { - // add items to error list and map - $.extend( this.errorMap, errors ); - this.errorList = []; - for ( var name in errors ) { - this.errorList.push({ - message: errors[ name ], - element: this.findByName( name )[ 0 ] - }); - } - // remove items from success list - this.successList = $.grep( this.successList, function( element ) { - return !( element.name in errors ); - }); - } - if ( this.settings.showErrors ) { - this.settings.showErrors.call( this, this.errorMap, this.errorList ); - } else { - this.defaultShowErrors(); - } - }, - - // http://jqueryvalidation.org/Validator.resetForm/ - resetForm: function() { - if ( $.fn.resetForm ) { - $( this.currentForm ).resetForm(); - } - this.submitted = {}; - this.lastElement = null; - this.prepareForm(); - this.hideErrors(); - this.elements() - .removeClass( this.settings.errorClass ) - .removeData( "previousValue" ) - .removeAttr( "aria-invalid" ); - }, - - numberOfInvalids: function() { - return this.objectLength( this.invalid ); - }, - - objectLength: function( obj ) { - /* jshint unused: false */ - var count = 0, - i; - for ( i in obj ) { - count++; - } - return count; - }, - - hideErrors: function() { - this.hideThese( this.toHide ); - }, - - hideThese: function( errors ) { - errors.not( this.containers ).text( "" ); - this.addWrapper( errors ).hide(); - }, - - valid: function() { - return this.size() === 0; - }, - - size: function() { - return this.errorList.length; - }, - - focusInvalid: function() { - if ( this.settings.focusInvalid ) { - try { - $( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || []) - .filter( ":visible" ) - .focus() - // manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find - .trigger( "focusin" ); - } catch ( e ) { - // ignore IE throwing errors when focusing hidden elements - } - } - }, - - findLastActive: function() { - var lastActive = this.lastActive; - return lastActive && $.grep( this.errorList, function( n ) { - return n.element.name === lastActive.name; - }).length === 1 && lastActive; - }, - - elements: function() { - var validator = this, - rulesCache = {}; - - // select all valid inputs inside the form (no submit or reset buttons) - return $( this.currentForm ) - .find( "input, select, textarea" ) - .not( ":submit, :reset, :image, [disabled], [readonly]" ) - .not( this.settings.ignore ) - .filter( function() { - if ( !this.name && validator.settings.debug && window.console ) { - console.error( "%o has no name assigned", this ); - } - - // select only the first element for each name, and only those with rules specified - if ( this.name in rulesCache || !validator.objectLength( $( this ).rules() ) ) { - return false; - } - - rulesCache[ this.name ] = true; - return true; - }); - }, - - clean: function( selector ) { - return $( selector )[ 0 ]; - }, - - errors: function() { - var errorClass = this.settings.errorClass.split( " " ).join( "." ); - return $( this.settings.errorElement + "." + errorClass, this.errorContext ); - }, - - reset: function() { - this.successList = []; - this.errorList = []; - this.errorMap = {}; - this.toShow = $( [] ); - this.toHide = $( [] ); - this.currentElements = $( [] ); - }, - - prepareForm: function() { - this.reset(); - this.toHide = this.errors().add( this.containers ); - }, - - prepareElement: function( element ) { - this.reset(); - this.toHide = this.errorsFor( element ); - }, - - elementValue: function( element ) { - var val, - $element = $( element ), - type = element.type; - - if ( type === "radio" || type === "checkbox" ) { - return $( "input[name='" + element.name + "']:checked" ).val(); - } else if ( type === "number" && typeof element.validity !== "undefined" ) { - return element.validity.badInput ? false : $element.val(); - } - - val = $element.val(); - if ( typeof val === "string" ) { - return val.replace(/\r/g, "" ); - } - return val; - }, - - check: function( element ) { - element = this.validationTargetFor( this.clean( element ) ); - - var rules = $( element ).rules(), - rulesCount = $.map( rules, function( n, i ) { - return i; - }).length, - dependencyMismatch = false, - val = this.elementValue( element ), - result, method, rule; - - for ( method in rules ) { - rule = { method: method, parameters: rules[ method ] }; - try { - - result = $.validator.methods[ method ].call( this, val, element, rule.parameters ); - - // if a method indicates that the field is optional and therefore valid, - // don't mark it as valid when there are no other rules - if ( result === "dependency-mismatch" && rulesCount === 1 ) { - dependencyMismatch = true; - continue; - } - dependencyMismatch = false; - - if ( result === "pending" ) { - this.toHide = this.toHide.not( this.errorsFor( element ) ); - return; - } - - if ( !result ) { - this.formatAndAdd( element, rule ); - return false; - } - } catch ( e ) { - if ( this.settings.debug && window.console ) { - console.log( "Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.", e ); - } - throw e; - } - } - if ( dependencyMismatch ) { - return; - } - if ( this.objectLength( rules ) ) { - this.successList.push( element ); - } - return true; - }, - - // return the custom message for the given element and validation method - // specified in the element's HTML5 data attribute - // return the generic message if present and no method specific message is present - customDataMessage: function( element, method ) { - return $( element ).data( "msg" + method.charAt( 0 ).toUpperCase() + - method.substring( 1 ).toLowerCase() ) || $( element ).data( "msg" ); - }, - - // return the custom message for the given element name and validation method - customMessage: function( name, method ) { - var m = this.settings.messages[ name ]; - return m && ( m.constructor === String ? m : m[ method ]); - }, - - // return the first defined argument, allowing empty strings - findDefined: function() { - for ( var i = 0; i < arguments.length; i++) { - if ( arguments[ i ] !== undefined ) { - return arguments[ i ]; - } - } - return undefined; - }, - - defaultMessage: function( element, method ) { - return this.findDefined( - this.customMessage( element.name, method ), - this.customDataMessage( element, method ), - // title is never undefined, so handle empty string as undefined - !this.settings.ignoreTitle && element.title || undefined, - $.validator.messages[ method ], - "<strong>Warning: No message defined for " + element.name + "</strong>" - ); - }, - - formatAndAdd: function( element, rule ) { - var message = this.defaultMessage( element, rule.method ), - theregex = /\$?\{(\d+)\}/g; - if ( typeof message === "function" ) { - message = message.call( this, rule.parameters, element ); - } else if ( theregex.test( message ) ) { - message = $.validator.format( message.replace( theregex, "{$1}" ), rule.parameters ); - } - this.errorList.push({ - message: message, - element: element, - method: rule.method - }); - - this.errorMap[ element.name ] = message; - this.submitted[ element.name ] = message; - }, - - addWrapper: function( toToggle ) { - if ( this.settings.wrapper ) { - toToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) ); - } - return toToggle; - }, - - defaultShowErrors: function() { - var i, elements, error; - for ( i = 0; this.errorList[ i ]; i++ ) { - error = this.errorList[ i ]; - if ( this.settings.highlight ) { - this.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass ); - } - this.showLabel( error.element, error.message ); - } - if ( this.errorList.length ) { - this.toShow = this.toShow.add( this.containers ); - } - if ( this.settings.success ) { - for ( i = 0; this.successList[ i ]; i++ ) { - this.showLabel( this.successList[ i ] ); - } - } - if ( this.settings.unhighlight ) { - for ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) { - this.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass ); - } - } - this.toHide = this.toHide.not( this.toShow ); - this.hideErrors(); - this.addWrapper( this.toShow ).show(); - }, - - validElements: function() { - return this.currentElements.not( this.invalidElements() ); - }, - - invalidElements: function() { - return $( this.errorList ).map(function() { - return this.element; - }); - }, - - showLabel: function( element, message ) { - var place, group, errorID, - error = this.errorsFor( element ), - elementID = this.idOrName( element ), - describedBy = $( element ).attr( "aria-describedby" ); - if ( error.length ) { - // refresh error/success class - error.removeClass( this.settings.validClass ).addClass( this.settings.errorClass ); - // replace message on existing label - error.html( message ); - } else { - // create error element - error = $( "<" + this.settings.errorElement + ">" ) - .attr( "id", elementID + "-error" ) - .addClass( this.settings.errorClass ) - .html( message || "" ); - - // Maintain reference to the element to be placed into the DOM - place = error; - if ( this.settings.wrapper ) { - // make sure the element is visible, even in IE - // actually showing the wrapped element is handled elsewhere - place = error.hide().show().wrap( "<" + this.settings.wrapper + "/>" ).parent(); - } - if ( this.labelContainer.length ) { - this.labelContainer.append( place ); - } else if ( this.settings.errorPlacement ) { - this.settings.errorPlacement( place, $( element ) ); - } else { - place.insertAfter( element ); - } - - // Link error back to the element - if ( error.is( "label" ) ) { - // If the error is a label, then associate using 'for' - error.attr( "for", elementID ); - } else if ( error.parents( "label[for='" + elementID + "']" ).length === 0 ) { - // If the element is not a child of an associated label, then it's necessary - // to explicitly apply aria-describedby - - errorID = error.attr( "id" ).replace( /(:|\.|\[|\])/g, "\\$1"); - // Respect existing non-error aria-describedby - if ( !describedBy ) { - describedBy = errorID; - } else if ( !describedBy.match( new RegExp( "\\b" + errorID + "\\b" ) ) ) { - // Add to end of list if not already present - describedBy += " " + errorID; - } - $( element ).attr( "aria-describedby", describedBy ); - - // If this element is grouped, then assign to all elements in the same group - group = this.groups[ element.name ]; - if ( group ) { - $.each( this.groups, function( name, testgroup ) { - if ( testgroup === group ) { - $( "[name='" + name + "']", this.currentForm ) - .attr( "aria-describedby", error.attr( "id" ) ); - } - }); - } - } - } - if ( !message && this.settings.success ) { - error.text( "" ); - if ( typeof this.settings.success === "string" ) { - error.addClass( this.settings.success ); - } else { - this.settings.success( error, element ); - } - } - this.toShow = this.toShow.add( error ); - }, - - errorsFor: function( element ) { - var name = this.idOrName( element ), - describer = $( element ).attr( "aria-describedby" ), - selector = "label[for='" + name + "'], label[for='" + name + "'] *"; - - // aria-describedby should directly reference the error element - if ( describer ) { - selector = selector + ", #" + describer.replace( /\s+/g, ", #" ); - } - return this - .errors() - .filter( selector ); - }, - - idOrName: function( element ) { - return this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name ); - }, - - validationTargetFor: function( element ) { - - // If radio/checkbox, validate first element in group instead - if ( this.checkable( element ) ) { - element = this.findByName( element.name ); - } - - // Always apply ignore filter - return $( element ).not( this.settings.ignore )[ 0 ]; - }, - - checkable: function( element ) { - return ( /radio|checkbox/i ).test( element.type ); - }, - - findByName: function( name ) { - return $( this.currentForm ).find( "[name='" + name + "']" ); - }, - - getLength: function( value, element ) { - switch ( element.nodeName.toLowerCase() ) { - case "select": - return $( "option:selected", element ).length; - case "input": - if ( this.checkable( element ) ) { - return this.findByName( element.name ).filter( ":checked" ).length; - } - } - return value.length; - }, - - depend: function( param, element ) { - return this.dependTypes[typeof param] ? this.dependTypes[typeof param]( param, element ) : true; - }, - - dependTypes: { - "boolean": function( param ) { - return param; - }, - "string": function( param, element ) { - return !!$( param, element.form ).length; - }, - "function": function( param, element ) { - return param( element ); - } - }, - - optional: function( element ) { - var val = this.elementValue( element ); - return !$.validator.methods.required.call( this, val, element ) && "dependency-mismatch"; - }, - - startRequest: function( element ) { - if ( !this.pending[ element.name ] ) { - this.pendingRequest++; - this.pending[ element.name ] = true; - } - }, - - stopRequest: function( element, valid ) { - this.pendingRequest--; - // sometimes synchronization fails, make sure pendingRequest is never < 0 - if ( this.pendingRequest < 0 ) { - this.pendingRequest = 0; - } - delete this.pending[ element.name ]; - if ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) { - $( this.currentForm ).submit(); - this.formSubmitted = false; - } else if (!valid && this.pendingRequest === 0 && this.formSubmitted ) { - $( this.currentForm ).triggerHandler( "invalid-form", [ this ]); - this.formSubmitted = false; - } - }, - - previousValue: function( element ) { - return $.data( element, "previousValue" ) || $.data( element, "previousValue", { - old: null, - valid: true, - message: this.defaultMessage( element, "remote" ) - }); - } - - }, - - classRuleSettings: { - required: { required: true }, - email: { email: true }, - url: { url: true }, - date: { date: true }, - dateISO: { dateISO: true }, - number: { number: true }, - digits: { digits: true }, - creditcard: { creditcard: true } - }, - - addClassRules: function( className, rules ) { - if ( className.constructor === String ) { - this.classRuleSettings[ className ] = rules; - } else { - $.extend( this.classRuleSettings, className ); - } - }, - - classRules: function( element ) { - var rules = {}, - classes = $( element ).attr( "class" ); - - if ( classes ) { - $.each( classes.split( " " ), function() { - if ( this in $.validator.classRuleSettings ) { - $.extend( rules, $.validator.classRuleSettings[ this ]); - } - }); - } - return rules; - }, - - attributeRules: function( element ) { - var rules = {}, - $element = $( element ), - type = element.getAttribute( "type" ), - method, value; - - for ( method in $.validator.methods ) { - - // support for <input required> in both html5 and older browsers - if ( method === "required" ) { - value = element.getAttribute( method ); - // Some browsers return an empty string for the required attribute - // and non-HTML5 browsers might have required="" markup - if ( value === "" ) { - value = true; - } - // force non-HTML5 browsers to return bool - value = !!value; - } else { - value = $element.attr( method ); - } - - // convert the value to a number for number inputs, and for text for backwards compability - // allows type="date" and others to be compared as strings - if ( /min|max/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) { - value = Number( value ); - } - - if ( value || value === 0 ) { - rules[ method ] = value; - } else if ( type === method && type !== "range" ) { - // exception: the jquery validate 'range' method - // does not test for the html5 'range' type - rules[ method ] = true; - } - } - - // maxlength may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs - if ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) { - delete rules.maxlength; - } - - return rules; - }, - - dataRules: function( element ) { - var method, value, - rules = {}, $element = $( element ); - for ( method in $.validator.methods ) { - value = $element.data( "rule" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() ); - if ( value !== undefined ) { - rules[ method ] = value; - } - } - return rules; - }, - - staticRules: function( element ) { - var rules = {}, - validator = $.data( element.form, "validator" ); - - if ( validator.settings.rules ) { - rules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {}; - } - return rules; - }, - - normalizeRules: function( rules, element ) { - // handle dependency check - $.each( rules, function( prop, val ) { - // ignore rule when param is explicitly false, eg. required:false - if ( val === false ) { - delete rules[ prop ]; - return; - } - if ( val.param || val.depends ) { - var keepRule = true; - switch ( typeof val.depends ) { - case "string": - keepRule = !!$( val.depends, element.form ).length; - break; - case "function": - keepRule = val.depends.call( element, element ); - break; - } - if ( keepRule ) { - rules[ prop ] = val.param !== undefined ? val.param : true; - } else { - delete rules[ prop ]; - } - } - }); - - // evaluate parameters - $.each( rules, function( rule, parameter ) { - rules[ rule ] = $.isFunction( parameter ) ? parameter( element ) : parameter; - }); - - // clean number parameters - $.each([ "minlength", "maxlength" ], function() { - if ( rules[ this ] ) { - rules[ this ] = Number( rules[ this ] ); - } - }); - $.each([ "rangelength", "range" ], function() { - var parts; - if ( rules[ this ] ) { - if ( $.isArray( rules[ this ] ) ) { - rules[ this ] = [ Number( rules[ this ][ 0 ]), Number( rules[ this ][ 1 ] ) ]; - } else if ( typeof rules[ this ] === "string" ) { - parts = rules[ this ].replace(/[\[\]]/g, "" ).split( /[\s,]+/ ); - rules[ this ] = [ Number( parts[ 0 ]), Number( parts[ 1 ] ) ]; - } - } - }); - - if ( $.validator.autoCreateRanges ) { - // auto-create ranges - if ( rules.min != null && rules.max != null ) { - rules.range = [ rules.min, rules.max ]; - delete rules.min; - delete rules.max; - } - if ( rules.minlength != null && rules.maxlength != null ) { - rules.rangelength = [ rules.minlength, rules.maxlength ]; - delete rules.minlength; - delete rules.maxlength; - } - } - - return rules; - }, - - // Converts a simple string to a {string: true} rule, e.g., "required" to {required:true} - normalizeRule: function( data ) { - if ( typeof data === "string" ) { - var transformed = {}; - $.each( data.split( /\s/ ), function() { - transformed[ this ] = true; - }); - data = transformed; - } - return data; - }, - - // http://jqueryvalidation.org/jQuery.validator.addMethod/ - addMethod: function( name, method, message ) { - $.validator.methods[ name ] = method; - $.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ]; - if ( method.length < 3 ) { - $.validator.addClassRules( name, $.validator.normalizeRule( name ) ); - } - }, - - methods: { - - // http://jqueryvalidation.org/required-method/ - required: function( value, element, param ) { - // check if dependency is met - if ( !this.depend( param, element ) ) { - return "dependency-mismatch"; - } - if ( element.nodeName.toLowerCase() === "select" ) { - // could be an array for select-multiple or a string, both are fine this way - var val = $( element ).val(); - return val && val.length > 0; - } - if ( this.checkable( element ) ) { - return this.getLength( value, element ) > 0; - } - return $.trim( value ).length > 0; - }, - - // http://jqueryvalidation.org/email-method/ - email: function( value, element ) { - // From http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#e-mail-state-%28type=email%29 - // Retrieved 2014-01-14 - // If you have a problem with this implementation, report a bug against the above spec - // Or use custom methods to implement your own email validation - //return this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value ); - return this.optional( element ) || /^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z]{2,4}$/.test( value ); - - // The email validation regular expression added by kishor mali - }, - - // http://jqueryvalidation.org/url-method/ - url: function( value, element ) { - // contributed by Scott Gonzalez: http://projects.scottsplayground.com/iri/ - return this.optional( element ) || /^(https?|s?ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test( value ); - }, - - // http://jqueryvalidation.org/date-method/ - date: function( value, element ) { - return this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() ); - }, - - // http://jqueryvalidation.org/dateISO-method/ - dateISO: function( value, element ) { - return this.optional( element ) || /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test( value ); - }, - - // http://jqueryvalidation.org/number-method/ - number: function( value, element ) { - return this.optional( element ) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test( value ); - }, - - // http://jqueryvalidation.org/digits-method/ - digits: function( value, element ) { - return this.optional( element ) || /^\d+$/.test( value ); - }, - - // http://jqueryvalidation.org/creditcard-method/ - // based on http://en.wikipedia.org/wiki/Luhn/ - creditcard: function( value, element ) { - if ( this.optional( element ) ) { - return "dependency-mismatch"; - } - // accept only spaces, digits and dashes - if ( /[^0-9 \-]+/.test( value ) ) { - return false; - } - var nCheck = 0, - nDigit = 0, - bEven = false, - n, cDigit; - - value = value.replace( /\D/g, "" ); - - // Basing min and max length on - // http://developer.ean.com/general_info/Valid_Credit_Card_Types - if ( value.length < 13 || value.length > 19 ) { - return false; - } - - for ( n = value.length - 1; n >= 0; n--) { - cDigit = value.charAt( n ); - nDigit = parseInt( cDigit, 10 ); - if ( bEven ) { - if ( ( nDigit *= 2 ) > 9 ) { - nDigit -= 9; - } - } - nCheck += nDigit; - bEven = !bEven; - } - - return ( nCheck % 10 ) === 0; - }, - - // http://jqueryvalidation.org/minlength-method/ - minlength: function( value, element, param ) { - var length = $.isArray( value ) ? value.length : this.getLength( value, element ); - return this.optional( element ) || length >= param; - }, - - // http://jqueryvalidation.org/maxlength-method/ - maxlength: function( value, element, param ) { - var length = $.isArray( value ) ? value.length : this.getLength( value, element ); - return this.optional( element ) || length <= param; - }, - - // http://jqueryvalidation.org/rangelength-method/ - rangelength: function( value, element, param ) { - var length = $.isArray( value ) ? value.length : this.getLength( value, element ); - return this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] ); - }, - - // http://jqueryvalidation.org/min-method/ - min: function( value, element, param ) { - return this.optional( element ) || value >= param; - }, - - // http://jqueryvalidation.org/max-method/ - max: function( value, element, param ) { - return this.optional( element ) || value <= param; - }, - - // http://jqueryvalidation.org/range-method/ - range: function( value, element, param ) { - return this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] ); - }, - - // http://jqueryvalidation.org/equalTo-method/ - equalTo: function( value, element, param ) { - // bind to the blur event of the target in order to revalidate whenever the target field is updated - // TODO find a way to bind the event just once, avoiding the unbind-rebind overhead - var target = $( param ); - if ( this.settings.onfocusout ) { - target.unbind( ".validate-equalTo" ).bind( "blur.validate-equalTo", function() { - $( element ).valid(); - }); - } - return value === target.val(); - }, - - // http://jqueryvalidation.org/remote-method/ - remote: function( value, element, param ) { - if ( this.optional( element ) ) { - return "dependency-mismatch"; - } - - var previous = this.previousValue( element ), - validator, data; - - if (!this.settings.messages[ element.name ] ) { - this.settings.messages[ element.name ] = {}; - } - previous.originalMessage = this.settings.messages[ element.name ].remote; - this.settings.messages[ element.name ].remote = previous.message; - - param = typeof param === "string" && { url: param } || param; - - if ( previous.old === value ) { - return previous.valid; - } - - previous.old = value; - validator = this; - this.startRequest( element ); - data = {}; - data[ element.name ] = value; - $.ajax( $.extend( true, { - url: param, - mode: "abort", - port: "validate" + element.name, - dataType: "json", - data: data, - context: validator.currentForm, - success: function( response ) { - var valid = response === true || response === "true", - errors, message, submitted; - - validator.settings.messages[ element.name ].remote = previous.originalMessage; - if ( valid ) { - submitted = validator.formSubmitted; - validator.prepareElement( element ); - validator.formSubmitted = submitted; - validator.successList.push( element ); - delete validator.invalid[ element.name ]; - validator.showErrors(); - } else { - errors = {}; - message = response || validator.defaultMessage( element, "remote" ); - errors[ element.name ] = previous.message = $.isFunction( message ) ? message( value ) : message; - validator.invalid[ element.name ] = true; - validator.showErrors( errors ); - } - previous.valid = valid; - validator.stopRequest( element, valid ); - } - }, param ) ); - return "pending"; - } - - } - -}); - -$.format = function deprecated() { - throw "$.format has been deprecated. Please use $.validator.format instead."; -}; - -// ajax mode: abort -// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]}); -// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort() - -var pendingRequests = {}, - ajax; -// Use a prefilter if available (1.5+) -if ( $.ajaxPrefilter ) { - $.ajaxPrefilter(function( settings, _, xhr ) { - var port = settings.port; - if ( settings.mode === "abort" ) { - if ( pendingRequests[port] ) { - pendingRequests[port].abort(); - } - pendingRequests[port] = xhr; - } - }); -} else { - // Proxy ajax - ajax = $.ajax; - $.ajax = function( settings ) { - var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode, - port = ( "port" in settings ? settings : $.ajaxSettings ).port; - if ( mode === "abort" ) { - if ( pendingRequests[port] ) { - pendingRequests[port].abort(); - } - pendingRequests[port] = ajax.apply(this, arguments); - return pendingRequests[port]; - } - return ajax.apply(this, arguments); - }; -} - -// provides delegate(type: String, delegate: Selector, handler: Callback) plugin for easier event delegation -// handler is only called when $(event.target).is(delegate), in the scope of the jquery-object for event.target - -$.extend($.fn, { - validateDelegate: function( delegate, type, handler ) { - return this.bind(type, function( event ) { - var target = $(event.target); - if ( target.is(delegate) ) { - return handler.apply(target, arguments); - } - }); - } -}); - -})); \ No newline at end of file diff --git a/assets/js/plugins/blueimp/jquery.blueimp-gallery.min.js b/assets/js/plugins/blueimp/jquery.blueimp-gallery.min.js deleted file mode 100644 index d642a82d..00000000 --- a/assets/js/plugins/blueimp/jquery.blueimp-gallery.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(a){"use strict";"function"==typeof define&&define.amd?define(["./blueimp-helper"],a):(window.blueimp=window.blueimp||{},window.blueimp.Gallery=a(window.blueimp.helper||window.jQuery))}(function(a){"use strict";function b(a,c){return void 0===document.body.style.maxHeight?null:this&&this.options===b.prototype.options?a&&a.length?(this.list=a,this.num=a.length,this.initOptions(c),void this.initialize()):void this.console.log("blueimp Gallery: No or empty list provided as first argument.",a):new b(a,c)}return a.extend(b.prototype,{options:{container:"#blueimp-gallery",slidesContainer:"div",titleElement:"h3",displayClass:"blueimp-gallery-display",controlsClass:"blueimp-gallery-controls",singleClass:"blueimp-gallery-single",leftEdgeClass:"blueimp-gallery-left",rightEdgeClass:"blueimp-gallery-right",playingClass:"blueimp-gallery-playing",slideClass:"slide",slideLoadingClass:"slide-loading",slideErrorClass:"slide-error",slideContentClass:"slide-content",toggleClass:"toggle",prevClass:"prev",nextClass:"next",closeClass:"close",playPauseClass:"play-pause",typeProperty:"type",titleProperty:"title",urlProperty:"href",displayTransition:!0,clearSlides:!0,stretchImages:!1,toggleControlsOnReturn:!0,toggleSlideshowOnSpace:!0,enableKeyboardNavigation:!0,closeOnEscape:!0,closeOnSlideClick:!0,closeOnSwipeUpOrDown:!0,emulateTouchEvents:!0,stopTouchEventsPropagation:!1,hidePageScrollbars:!0,disableScroll:!0,carousel:!1,continuous:!0,unloadElements:!0,startSlideshow:!1,slideshowInterval:5e3,index:0,preloadRange:2,transitionSpeed:400,slideshowTransitionSpeed:void 0,event:void 0,onopen:void 0,onopened:void 0,onslide:void 0,onslideend:void 0,onslidecomplete:void 0,onclose:void 0,onclosed:void 0},carouselOptions:{hidePageScrollbars:!1,toggleControlsOnReturn:!1,toggleSlideshowOnSpace:!1,enableKeyboardNavigation:!1,closeOnEscape:!1,closeOnSlideClick:!1,closeOnSwipeUpOrDown:!1,disableScroll:!1,startSlideshow:!0},console:window.console&&"function"==typeof window.console.log?window.console:{log:function(){}},support:function(b){var c={touch:void 0!==window.ontouchstart||window.DocumentTouch&&document instanceof DocumentTouch},d={webkitTransition:{end:"webkitTransitionEnd",prefix:"-webkit-"},MozTransition:{end:"transitionend",prefix:"-moz-"},OTransition:{end:"otransitionend",prefix:"-o-"},transition:{end:"transitionend",prefix:""}},e=function(){var a,d,e=c.transition;document.body.appendChild(b),e&&(a=e.name.slice(0,-9)+"ransform",void 0!==b.style[a]&&(b.style[a]="translateZ(0)",d=window.getComputedStyle(b).getPropertyValue(e.prefix+"transform"),c.transform={prefix:e.prefix,name:a,translate:!0,translateZ:!!d&&"none"!==d})),void 0!==b.style.backgroundSize&&(c.backgroundSize={},b.style.backgroundSize="contain",c.backgroundSize.contain="contain"===window.getComputedStyle(b).getPropertyValue("background-size"),b.style.backgroundSize="cover",c.backgroundSize.cover="cover"===window.getComputedStyle(b).getPropertyValue("background-size")),document.body.removeChild(b)};return function(a,c){var d;for(d in c)if(c.hasOwnProperty(d)&&void 0!==b.style[d]){a.transition=c[d],a.transition.name=d;break}}(c,d),document.body?e():a(document).on("DOMContentLoaded",e),c}(document.createElement("div")),requestAnimationFrame:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame,initialize:function(){return this.initStartIndex(),this.initWidget()===!1?!1:(this.initEventListeners(),this.onslide(this.index),this.ontransitionend(),void(this.options.startSlideshow&&this.play()))},slide:function(a,b){window.clearTimeout(this.timeout);var c,d,e,f=this.index;if(f!==a&&1!==this.num){if(b||(b=this.options.transitionSpeed),this.support.transform){for(this.options.continuous||(a=this.circle(a)),c=Math.abs(f-a)/(f-a),this.options.continuous&&(d=c,c=-this.positions[this.circle(a)]/this.slideWidth,c!==d&&(a=-c*this.num+a)),e=Math.abs(f-a)-1;e;)e-=1,this.move(this.circle((a>f?a:f)-e-1),this.slideWidth*c,0);a=this.circle(a),this.move(f,this.slideWidth*c,b),this.move(a,0,b),this.options.continuous&&this.move(this.circle(a-c),-(this.slideWidth*c),0)}else a=this.circle(a),this.animate(f*-this.slideWidth,a*-this.slideWidth,b);this.onslide(a)}},getIndex:function(){return this.index},getNumber:function(){return this.num},prev:function(){(this.options.continuous||this.index)&&this.slide(this.index-1)},next:function(){(this.options.continuous||this.index<this.num-1)&&this.slide(this.index+1)},play:function(a){var b=this;window.clearTimeout(this.timeout),this.interval=a||this.options.slideshowInterval,this.elements[this.index]>1&&(this.timeout=this.setTimeout(!this.requestAnimationFrame&&this.slide||function(a,c){b.animationFrameId=b.requestAnimationFrame.call(window,function(){b.slide(a,c)})},[this.index+1,this.options.slideshowTransitionSpeed],this.interval)),this.container.addClass(this.options.playingClass)},pause:function(){window.clearTimeout(this.timeout),this.interval=null,this.container.removeClass(this.options.playingClass)},add:function(a){var b;for(a.concat||(a=Array.prototype.slice.call(a)),this.list.concat||(this.list=Array.prototype.slice.call(this.list)),this.list=this.list.concat(a),this.num=this.list.length,this.num>2&&null===this.options.continuous&&(this.options.continuous=!0,this.container.removeClass(this.options.leftEdgeClass)),this.container.removeClass(this.options.rightEdgeClass).removeClass(this.options.singleClass),b=this.num-a.length;b<this.num;b+=1)this.addSlide(b),this.positionSlide(b);this.positions.length=this.num,this.initSlides(!0)},resetSlides:function(){this.slidesContainer.empty(),this.slides=[]},handleClose:function(){var a=this.options;this.destroyEventListeners(),this.pause(),this.container[0].style.display="none",this.container.removeClass(a.displayClass).removeClass(a.singleClass).removeClass(a.leftEdgeClass).removeClass(a.rightEdgeClass),a.hidePageScrollbars&&(document.body.style.overflow=this.bodyOverflowStyle),this.options.clearSlides&&this.resetSlides(),this.options.onclosed&&this.options.onclosed.call(this)},close:function(){var a=this,b=function(c){c.target===a.container[0]&&(a.container.off(a.support.transition.end,b),a.handleClose())};this.options.onclose&&this.options.onclose.call(this),this.support.transition&&this.options.displayTransition?(this.container.on(this.support.transition.end,b),this.container.removeClass(this.options.displayClass)):this.handleClose()},circle:function(a){return(this.num+a%this.num)%this.num},move:function(a,b,c){this.translateX(a,b,c),this.positions[a]=b},translate:function(a,b,c,d){var e=this.slides[a].style,f=this.support.transition,g=this.support.transform;e[f.name+"Duration"]=d+"ms",e[g.name]="translate("+b+"px, "+c+"px)"+(g.translateZ?" translateZ(0)":"")},translateX:function(a,b,c){this.translate(a,b,0,c)},translateY:function(a,b,c){this.translate(a,0,b,c)},animate:function(a,b,c){if(!c)return void(this.slidesContainer[0].style.left=b+"px");var d=this,e=(new Date).getTime(),f=window.setInterval(function(){var g=(new Date).getTime()-e;return g>c?(d.slidesContainer[0].style.left=b+"px",d.ontransitionend(),void window.clearInterval(f)):void(d.slidesContainer[0].style.left=(b-a)*(Math.floor(g/c*100)/100)+a+"px")},4)},preventDefault:function(a){a.preventDefault?a.preventDefault():a.returnValue=!1},stopPropagation:function(a){a.stopPropagation?a.stopPropagation():a.cancelBubble=!0},onresize:function(){this.initSlides(!0)},onmousedown:function(a){a.which&&1===a.which&&"VIDEO"!==a.target.nodeName&&(a.preventDefault(),(a.originalEvent||a).touches=[{pageX:a.pageX,pageY:a.pageY}],this.ontouchstart(a))},onmousemove:function(a){this.touchStart&&((a.originalEvent||a).touches=[{pageX:a.pageX,pageY:a.pageY}],this.ontouchmove(a))},onmouseup:function(a){this.touchStart&&(this.ontouchend(a),delete this.touchStart)},onmouseout:function(b){if(this.touchStart){var c=b.target,d=b.relatedTarget;(!d||d!==c&&!a.contains(c,d))&&this.onmouseup(b)}},ontouchstart:function(a){this.options.stopTouchEventsPropagation&&this.stopPropagation(a);var b=(a.originalEvent||a).touches[0];this.touchStart={x:b.pageX,y:b.pageY,time:Date.now()},this.isScrolling=void 0,this.touchDelta={}},ontouchmove:function(a){this.options.stopTouchEventsPropagation&&this.stopPropagation(a);var b,c,d=(a.originalEvent||a).touches[0],e=(a.originalEvent||a).scale,f=this.index;if(!(d.length>1||e&&1!==e))if(this.options.disableScroll&&a.preventDefault(),this.touchDelta={x:d.pageX-this.touchStart.x,y:d.pageY-this.touchStart.y},b=this.touchDelta.x,void 0===this.isScrolling&&(this.isScrolling=this.isScrolling||Math.abs(b)<Math.abs(this.touchDelta.y)),this.isScrolling)this.options.closeOnSwipeUpOrDown&&this.translateY(f,this.touchDelta.y+this.positions[f],0);else for(a.preventDefault(),window.clearTimeout(this.timeout),this.options.continuous?c=[this.circle(f+1),f,this.circle(f-1)]:(this.touchDelta.x=b/=!f&&b>0||f===this.num-1&&0>b?Math.abs(b)/this.slideWidth+1:1,c=[f],f&&c.push(f-1),f<this.num-1&&c.unshift(f+1));c.length;)f=c.pop(),this.translateX(f,b+this.positions[f],0)},ontouchend:function(a){this.options.stopTouchEventsPropagation&&this.stopPropagation(a);var b,c,d,e,f,g=this.index,h=this.options.transitionSpeed,i=this.slideWidth,j=Number(Date.now()-this.touchStart.time)<250,k=j&&Math.abs(this.touchDelta.x)>20||Math.abs(this.touchDelta.x)>i/2,l=!g&&this.touchDelta.x>0||g===this.num-1&&this.touchDelta.x<0,m=!k&&this.options.closeOnSwipeUpOrDown&&(j&&Math.abs(this.touchDelta.y)>20||Math.abs(this.touchDelta.y)>this.slideHeight/2);this.options.continuous&&(l=!1),b=this.touchDelta.x<0?-1:1,this.isScrolling?m?this.close():this.translateY(g,0,h):k&&!l?(c=g+b,d=g-b,e=i*b,f=-i*b,this.options.continuous?(this.move(this.circle(c),e,0),this.move(this.circle(g-2*b),f,0)):c>=0&&c<this.num&&this.move(c,e,0),this.move(g,this.positions[g]+e,h),this.move(this.circle(d),this.positions[this.circle(d)]+e,h),g=this.circle(d),this.onslide(g)):this.options.continuous?(this.move(this.circle(g-1),-i,h),this.move(g,0,h),this.move(this.circle(g+1),i,h)):(g&&this.move(g-1,-i,h),this.move(g,0,h),g<this.num-1&&this.move(g+1,i,h))},ontouchcancel:function(a){this.touchStart&&(this.ontouchend(a),delete this.touchStart)},ontransitionend:function(a){var b=this.slides[this.index];a&&b!==a.target||(this.interval&&this.play(),this.setTimeout(this.options.onslideend,[this.index,b]))},oncomplete:function(b){var c,d=b.target||b.srcElement,e=d&&d.parentNode;d&&e&&(c=this.getNodeIndex(e),a(e).removeClass(this.options.slideLoadingClass),"error"===b.type?(a(e).addClass(this.options.slideErrorClass),this.elements[c]=3):this.elements[c]=2,d.clientHeight>this.container[0].clientHeight&&(d.style.maxHeight=this.container[0].clientHeight),this.interval&&this.slides[this.index]===e&&this.play(),this.setTimeout(this.options.onslidecomplete,[c,e]))},onload:function(a){this.oncomplete(a)},onerror:function(a){this.oncomplete(a)},onkeydown:function(a){switch(a.which||a.keyCode){case 13:this.options.toggleControlsOnReturn&&(this.preventDefault(a),this.toggleControls());break;case 27:this.options.closeOnEscape&&this.close();break;case 32:this.options.toggleSlideshowOnSpace&&(this.preventDefault(a),this.toggleSlideshow());break;case 37:this.options.enableKeyboardNavigation&&(this.preventDefault(a),this.prev());break;case 39:this.options.enableKeyboardNavigation&&(this.preventDefault(a),this.next())}},handleClick:function(b){var c=this.options,d=b.target||b.srcElement,e=d.parentNode,f=function(b){return a(d).hasClass(b)||a(e).hasClass(b)};f(c.toggleClass)?(this.preventDefault(b),this.toggleControls()):f(c.prevClass)?(this.preventDefault(b),this.prev()):f(c.nextClass)?(this.preventDefault(b),this.next()):f(c.closeClass)?(this.preventDefault(b),this.close()):f(c.playPauseClass)?(this.preventDefault(b),this.toggleSlideshow()):e===this.slidesContainer[0]?(this.preventDefault(b),c.closeOnSlideClick?this.close():this.toggleControls()):e.parentNode&&e.parentNode===this.slidesContainer[0]&&(this.preventDefault(b),this.toggleControls())},onclick:function(a){return this.options.emulateTouchEvents&&this.touchDelta&&(Math.abs(this.touchDelta.x)>20||Math.abs(this.touchDelta.y)>20)?void delete this.touchDelta:this.handleClick(a)},updateEdgeClasses:function(a){a?this.container.removeClass(this.options.leftEdgeClass):this.container.addClass(this.options.leftEdgeClass),a===this.num-1?this.container.addClass(this.options.rightEdgeClass):this.container.removeClass(this.options.rightEdgeClass)},handleSlide:function(a){this.options.continuous||this.updateEdgeClasses(a),this.loadElements(a),this.options.unloadElements&&this.unloadElements(a),this.setTitle(a)},onslide:function(a){this.index=a,this.handleSlide(a),this.setTimeout(this.options.onslide,[a,this.slides[a]])},setTitle:function(a){var b=this.slides[a].firstChild.title,c=this.titleElement;c.length&&(this.titleElement.empty(),b&&c[0].appendChild(document.createTextNode(b)))},setTimeout:function(a,b,c){var d=this;return a&&window.setTimeout(function(){a.apply(d,b||[])},c||0)},imageFactory:function(b,c){var d,e,f,g=this,h=this.imagePrototype.cloneNode(!1),i=b,j=this.options.stretchImages,k=function(b){if(!d){if(b={type:b.type,target:e},!e.parentNode)return g.setTimeout(k,[b]);d=!0,a(h).off("load error",k),j&&"load"===b.type&&(e.style.background='url("'+i+'") center no-repeat',e.style.backgroundSize=j),c(b)}};return"string"!=typeof i&&(i=this.getItemProperty(b,this.options.urlProperty),f=this.getItemProperty(b,this.options.titleProperty)),j===!0&&(j="contain"),j=this.support.backgroundSize&&this.support.backgroundSize[j]&&j,j?e=this.elementPrototype.cloneNode(!1):(e=h,h.draggable=!1),f&&(e.title=f),a(h).on("load error",k),h.src=i,e},createElement:function(b,c){var d=b&&this.getItemProperty(b,this.options.typeProperty),e=d&&this[d.split("/")[0]+"Factory"]||this.imageFactory,f=b&&e.call(this,b,c);return f||(f=this.elementPrototype.cloneNode(!1),this.setTimeout(c,[{type:"error",target:f}])),a(f).addClass(this.options.slideContentClass),f},loadElement:function(b){this.elements[b]||(this.slides[b].firstChild?this.elements[b]=a(this.slides[b]).hasClass(this.options.slideErrorClass)?3:2:(this.elements[b]=1,a(this.slides[b]).addClass(this.options.slideLoadingClass),this.slides[b].appendChild(this.createElement(this.list[b],this.proxyListener))))},loadElements:function(a){var b,c=Math.min(this.num,2*this.options.preloadRange+1),d=a;for(b=0;c>b;b+=1)d+=b*(b%2===0?-1:1),d=this.circle(d),this.loadElement(d)},unloadElements:function(a){var b,c,d;for(b in this.elements)this.elements.hasOwnProperty(b)&&(d=Math.abs(a-b),d>this.options.preloadRange&&d+this.options.preloadRange<this.num&&(c=this.slides[b],c.removeChild(c.firstChild),delete this.elements[b]))},addSlide:function(a){var b=this.slidePrototype.cloneNode(!1);b.setAttribute("data-index",a),this.slidesContainer[0].appendChild(b),this.slides.push(b)},positionSlide:function(a){var b=this.slides[a];b.style.width=this.slideWidth+"px",this.support.transform&&(b.style.left=a*-this.slideWidth+"px",this.move(a,this.index>a?-this.slideWidth:this.index<a?this.slideWidth:0,0))},initSlides:function(b){var c,d;for(b||(this.positions=[],this.positions.length=this.num,this.elements={},this.imagePrototype=document.createElement("img"),this.elementPrototype=document.createElement("div"),this.slidePrototype=document.createElement("div"),a(this.slidePrototype).addClass(this.options.slideClass),this.slides=this.slidesContainer[0].children,c=this.options.clearSlides||this.slides.length!==this.num),this.slideWidth=this.container[0].offsetWidth,this.slideHeight=this.container[0].offsetHeight,this.slidesContainer[0].style.width=this.num*this.slideWidth+"px",c&&this.resetSlides(),d=0;d<this.num;d+=1)c&&this.addSlide(d),this.positionSlide(d);this.options.continuous&&this.support.transform&&(this.move(this.circle(this.index-1),-this.slideWidth,0),this.move(this.circle(this.index+1),this.slideWidth,0)),this.support.transform||(this.slidesContainer[0].style.left=this.index*-this.slideWidth+"px")},toggleControls:function(){var a=this.options.controlsClass;this.container.hasClass(a)?this.container.removeClass(a):this.container.addClass(a)},toggleSlideshow:function(){this.interval?this.pause():this.play()},getNodeIndex:function(a){return parseInt(a.getAttribute("data-index"),10)},getNestedProperty:function(a,b){return b.replace(/\[(?:'([^']+)'|"([^"]+)"|(\d+))\]|(?:(?:^|\.)([^\.\[]+))/g,function(b,c,d,e,f){var g=f||c||d||e&&parseInt(e,10);b&&a&&(a=a[g])}),a},getDataProperty:function(b,c){if(b.getAttribute){var d=b.getAttribute("data-"+c.replace(/([A-Z])/g,"-$1").toLowerCase());if("string"==typeof d){if(/^(true|false|null|-?\d+(\.\d+)?|\{[\s\S]*\}|\[[\s\S]*\])$/.test(d))try{return a.parseJSON(d)}catch(e){}return d}}},getItemProperty:function(a,b){var c=a[b];return void 0===c&&(c=this.getDataProperty(a,b),void 0===c&&(c=this.getNestedProperty(a,b))),c},initStartIndex:function(){var a,b=this.options.index,c=this.options.urlProperty;if(b&&"number"!=typeof b)for(a=0;a<this.num;a+=1)if(this.list[a]===b||this.getItemProperty(this.list[a],c)===this.getItemProperty(b,c)){b=a;break}this.index=this.circle(parseInt(b,10)||0)},initEventListeners:function(){var b=this,c=this.slidesContainer,d=function(a){var c=b.support.transition&&b.support.transition.end===a.type?"transitionend":a.type;b["on"+c](a)};a(window).on("resize",d),a(document.body).on("keydown",d),this.container.on("click",d),this.support.touch?c.on("touchstart touchmove touchend touchcancel",d):this.options.emulateTouchEvents&&this.support.transition&&c.on("mousedown mousemove mouseup mouseout",d),this.support.transition&&c.on(this.support.transition.end,d),this.proxyListener=d},destroyEventListeners:function(){var b=this.slidesContainer,c=this.proxyListener;a(window).off("resize",c),a(document.body).off("keydown",c),this.container.off("click",c),this.support.touch?b.off("touchstart touchmove touchend touchcancel",c):this.options.emulateTouchEvents&&this.support.transition&&b.off("mousedown mousemove mouseup mouseout",c),this.support.transition&&b.off(this.support.transition.end,c)},handleOpen:function(){this.options.onopened&&this.options.onopened.call(this)},initWidget:function(){var b=this,c=function(a){a.target===b.container[0]&&(b.container.off(b.support.transition.end,c),b.handleOpen())};return this.container=a(this.options.container),this.container.length?(this.slidesContainer=this.container.find(this.options.slidesContainer).first(),this.slidesContainer.length?(this.titleElement=this.container.find(this.options.titleElement).first(),1===this.num&&this.container.addClass(this.options.singleClass),this.options.onopen&&this.options.onopen.call(this),this.support.transition&&this.options.displayTransition?this.container.on(this.support.transition.end,c):this.handleOpen(),this.options.hidePageScrollbars&&(this.bodyOverflowStyle=document.body.style.overflow,document.body.style.overflow="hidden"),this.container[0].style.display="block",this.initSlides(),void this.container.addClass(this.options.displayClass)):(this.console.log("blueimp Gallery: Slides container not found.",this.options.slidesContainer),!1)):(this.console.log("blueimp Gallery: Widget container not found.",this.options.container),!1)},initOptions:function(b){this.options=a.extend({},this.options),(b&&b.carousel||this.options.carousel&&(!b||b.carousel!==!1))&&a.extend(this.options,this.carouselOptions),a.extend(this.options,b),this.num<3&&(this.options.continuous=this.options.continuous?null:!1),this.support.transition||(this.options.emulateTouchEvents=!1),this.options.event&&this.preventDefault(this.options.event)}}),b}),function(a){"use strict";"function"==typeof define&&define.amd?define(["./blueimp-helper","./blueimp-gallery"],a):a(window.blueimp.helper||window.jQuery,window.blueimp.Gallery)}(function(a,b){"use strict";a.extend(b.prototype.options,{fullScreen:!1});var c=b.prototype.initialize,d=b.prototype.close;return a.extend(b.prototype,{getFullScreenElement:function(){return document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement},requestFullScreen:function(a){a.requestFullscreen?a.requestFullscreen():a.webkitRequestFullscreen?a.webkitRequestFullscreen():a.mozRequestFullScreen?a.mozRequestFullScreen():a.msRequestFullscreen&&a.msRequestFullscreen()},exitFullScreen:function(){document.exitFullscreen?document.exitFullscreen():document.webkitCancelFullScreen?document.webkitCancelFullScreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.msExitFullscreen&&document.msExitFullscreen()},initialize:function(){c.call(this),this.options.fullScreen&&!this.getFullScreenElement()&&this.requestFullScreen(this.container[0])},close:function(){this.getFullScreenElement()===this.container[0]&&this.exitFullScreen(),d.call(this)}}),b}),function(a){"use strict";"function"==typeof define&&define.amd?define(["./blueimp-helper","./blueimp-gallery"],a):a(window.blueimp.helper||window.jQuery,window.blueimp.Gallery)}(function(a,b){"use strict";a.extend(b.prototype.options,{indicatorContainer:"ol",activeIndicatorClass:"active",thumbnailProperty:"thumbnail",thumbnailIndicators:!0});var c=b.prototype.initSlides,d=b.prototype.addSlide,e=b.prototype.resetSlides,f=b.prototype.handleClick,g=b.prototype.handleSlide,h=b.prototype.handleClose;return a.extend(b.prototype,{createIndicator:function(b){var c,d,e=this.indicatorPrototype.cloneNode(!1),f=this.getItemProperty(b,this.options.titleProperty),g=this.options.thumbnailProperty;return this.options.thumbnailIndicators&&(d=b.getElementsByTagName&&a(b).find("img")[0],d?c=d.src:g&&(c=this.getItemProperty(b,g)),c&&(e.style.backgroundImage='url("'+c+'")')),f&&(e.title=f),e},addIndicator:function(a){if(this.indicatorContainer.length){var b=this.createIndicator(this.list[a]);b.setAttribute("data-index",a),this.indicatorContainer[0].appendChild(b),this.indicators.push(b)}},setActiveIndicator:function(b){this.indicators&&(this.activeIndicator&&this.activeIndicator.removeClass(this.options.activeIndicatorClass),this.activeIndicator=a(this.indicators[b]),this.activeIndicator.addClass(this.options.activeIndicatorClass))},initSlides:function(a){a||(this.indicatorContainer=this.container.find(this.options.indicatorContainer),this.indicatorContainer.length&&(this.indicatorPrototype=document.createElement("li"),this.indicators=this.indicatorContainer[0].children)),c.call(this,a)},addSlide:function(a){d.call(this,a),this.addIndicator(a)},resetSlides:function(){e.call(this),this.indicatorContainer.empty(),this.indicators=[]},handleClick:function(a){var b=a.target||a.srcElement,c=b.parentNode;if(c===this.indicatorContainer[0])this.preventDefault(a),this.slide(this.getNodeIndex(b));else{if(c.parentNode!==this.indicatorContainer[0])return f.call(this,a);this.preventDefault(a),this.slide(this.getNodeIndex(c))}},handleSlide:function(a){g.call(this,a),this.setActiveIndicator(a)},handleClose:function(){this.activeIndicator&&this.activeIndicator.removeClass(this.options.activeIndicatorClass),h.call(this)}}),b}),function(a){"use strict";"function"==typeof define&&define.amd?define(["./blueimp-helper","./blueimp-gallery"],a):a(window.blueimp.helper||window.jQuery,window.blueimp.Gallery)}(function(a,b){"use strict";a.extend(b.prototype.options,{videoContentClass:"video-content",videoLoadingClass:"video-loading",videoPlayingClass:"video-playing",videoPosterProperty:"poster",videoSourcesProperty:"sources"});var c=b.prototype.handleSlide;return a.extend(b.prototype,{handleSlide:function(a){c.call(this,a),this.playingVideo&&this.playingVideo.pause()},videoFactory:function(b,c,d){var e,f,g,h,i,j=this,k=this.options,l=this.elementPrototype.cloneNode(!1),m=a(l),n=[{type:"error",target:l}],o=d||document.createElement("video"),p=this.getItemProperty(b,k.urlProperty),q=this.getItemProperty(b,k.typeProperty),r=this.getItemProperty(b,k.titleProperty),s=this.getItemProperty(b,k.videoPosterProperty),t=this.getItemProperty(b,k.videoSourcesProperty);if(m.addClass(k.videoContentClass),r&&(l.title=r),o.canPlayType)if(p&&q&&o.canPlayType(q))o.src=p;else for(;t&&t.length;)if(f=t.shift(),p=this.getItemProperty(f,k.urlProperty),q=this.getItemProperty(f,k.typeProperty),p&&q&&o.canPlayType(q)){o.src=p;break}return s&&(o.poster=s,e=this.imagePrototype.cloneNode(!1),a(e).addClass(k.toggleClass),e.src=s,e.draggable=!1,l.appendChild(e)),g=document.createElement("a"),g.setAttribute("target","_blank"),d||g.setAttribute("download",r),g.href=p,o.src&&(o.controls=!0,(d||a(o)).on("error",function(){j.setTimeout(c,n)}).on("pause",function(){h=!1,m.removeClass(j.options.videoLoadingClass).removeClass(j.options.videoPlayingClass),i&&j.container.addClass(j.options.controlsClass),delete j.playingVideo,j.interval&&j.play()}).on("playing",function(){h=!1,m.removeClass(j.options.videoLoadingClass).addClass(j.options.videoPlayingClass),j.container.hasClass(j.options.controlsClass)?(i=!0,j.container.removeClass(j.options.controlsClass)):i=!1}).on("play",function(){window.clearTimeout(j.timeout),h=!0,m.addClass(j.options.videoLoadingClass),j.playingVideo=o}),a(g).on("click",function(a){j.preventDefault(a),h?o.pause():o.play()}),l.appendChild(d&&d.element||o)),l.appendChild(g),this.setTimeout(c,[{type:"load",target:l}]),l}}),b}),function(a){"use strict";"function"==typeof define&&define.amd?define(["./blueimp-helper","./blueimp-gallery-video"],a):a(window.blueimp.helper||window.jQuery,window.blueimp.Gallery)}(function(a,b){"use strict";if(!window.postMessage)return b;a.extend(b.prototype.options,{vimeoVideoIdProperty:"vimeo",vimeoPlayerUrl:"//player.vimeo.com/video/VIDEO_ID?api=1&player_id=PLAYER_ID",vimeoPlayerIdPrefix:"vimeo-player-",vimeoClickToPlay:!0});var c=b.prototype.textFactory||b.prototype.imageFactory,d=function(a,b,c,d){this.url=a,this.videoId=b,this.playerId=c,this.clickToPlay=d,this.element=document.createElement("div"),this.listeners={}},e=0;return a.extend(d.prototype,{canPlayType:function(){return!0},on:function(a,b){return this.listeners[a]=b,this},loadAPI:function(){for(var b,c,d=this,e="//"+("https"===location.protocol?"secure-":"")+"a.vimeocdn.com/js/froogaloop2.min.js",f=document.getElementsByTagName("script"),g=f.length,h=function(){!c&&d.playOnReady&&d.play(),c=!0};g;)if(g-=1,f[g].src===e){b=f[g];break}b||(b=document.createElement("script"),b.src=e),a(b).on("load",h),f[0].parentNode.insertBefore(b,f[0]),/loaded|complete/.test(b.readyState)&&h()},onReady:function(){var a=this;this.ready=!0,this.player.addEvent("play",function(){a.hasPlayed=!0,a.onPlaying()}),this.player.addEvent("pause",function(){a.onPause()}),this.player.addEvent("finish",function(){a.onPause()}),this.playOnReady&&this.play()},onPlaying:function(){this.playStatus<2&&(this.listeners.playing(),this.playStatus=2)},onPause:function(){this.listeners.pause(),delete this.playStatus},insertIframe:function(){var a=document.createElement("iframe");a.src=this.url.replace("VIDEO_ID",this.videoId).replace("PLAYER_ID",this.playerId),a.id=this.playerId,this.element.parentNode.replaceChild(a,this.element),this.element=a},play:function(){var a=this;this.playStatus||(this.listeners.play(),this.playStatus=1),this.ready?!this.hasPlayed&&(this.clickToPlay||window.navigator&&/iP(hone|od|ad)/.test(window.navigator.platform))?this.onPlaying():this.player.api("play"):(this.playOnReady=!0,window.$f?this.player||(this.insertIframe(),this.player=$f(this.element),this.player.addEvent("ready",function(){a.onReady()})):this.loadAPI())},pause:function(){this.ready?this.player.api("pause"):this.playStatus&&(delete this.playOnReady,this.listeners.pause(),delete this.playStatus)}}),a.extend(b.prototype,{VimeoPlayer:d,textFactory:function(a,b){var f=this.options,g=this.getItemProperty(a,f.vimeoVideoIdProperty);return g?(void 0===this.getItemProperty(a,f.urlProperty)&&(a[f.urlProperty]="//vimeo.com/"+g),e+=1,this.videoFactory(a,b,new d(f.vimeoPlayerUrl,g,f.vimeoPlayerIdPrefix+e,f.vimeoClickToPlay))):c.call(this,a,b)}}),b}),function(a){"use strict";"function"==typeof define&&define.amd?define(["./blueimp-helper","./blueimp-gallery-video"],a):a(window.blueimp.helper||window.jQuery,window.blueimp.Gallery)}(function(a,b){"use strict";if(!window.postMessage)return b;a.extend(b.prototype.options,{youTubeVideoIdProperty:"youtube",youTubePlayerVars:{wmode:"transparent"},youTubeClickToPlay:!0});var c=b.prototype.textFactory||b.prototype.imageFactory,d=function(a,b,c){this.videoId=a,this.playerVars=b,this.clickToPlay=c,this.element=document.createElement("div"),this.listeners={}};return a.extend(d.prototype,{canPlayType:function(){return!0},on:function(a,b){return this.listeners[a]=b,this},loadAPI:function(){var a,b=this,c=window.onYouTubeIframeAPIReady,d="//www.youtube.com/iframe_api",e=document.getElementsByTagName("script"),f=e.length;for(window.onYouTubeIframeAPIReady=function(){c&&c.apply(this),b.playOnReady&&b.play()};f;)if(f-=1,e[f].src===d)return;a=document.createElement("script"),a.src=d,e[0].parentNode.insertBefore(a,e[0])},onReady:function(){this.ready=!0,this.playOnReady&&this.play()},onPlaying:function(){this.playStatus<2&&(this.listeners.playing(),this.playStatus=2)},onPause:function(){b.prototype.setTimeout.call(this,this.checkSeek,null,2e3)},checkSeek:function(){(this.stateChange===YT.PlayerState.PAUSED||this.stateChange===YT.PlayerState.ENDED)&&(this.listeners.pause(),delete this.playStatus)},onStateChange:function(a){switch(a.data){case YT.PlayerState.PLAYING:this.hasPlayed=!0,this.onPlaying();break;case YT.PlayerState.PAUSED:case YT.PlayerState.ENDED:this.onPause()}this.stateChange=a.data},onError:function(a){this.listeners.error(a)},play:function(){var a=this;this.playStatus||(this.listeners.play(),this.playStatus=1),this.ready?!this.hasPlayed&&(this.clickToPlay||window.navigator&&/iP(hone|od|ad)/.test(window.navigator.platform))?this.onPlaying():this.player.playVideo():(this.playOnReady=!0,window.YT&&YT.Player?this.player||(this.player=new YT.Player(this.element,{videoId:this.videoId,playerVars:this.playerVars,events:{onReady:function(){a.onReady()},onStateChange:function(b){a.onStateChange(b)},onError:function(b){a.onError(b)}}})):this.loadAPI())},pause:function(){this.ready?this.player.pauseVideo():this.playStatus&&(delete this.playOnReady,this.listeners.pause(),delete this.playStatus)}}),a.extend(b.prototype,{YouTubePlayer:d,textFactory:function(a,b){var e=this.options,f=this.getItemProperty(a,e.youTubeVideoIdProperty);return f?(void 0===this.getItemProperty(a,e.urlProperty)&&(a[e.urlProperty]="//www.youtube.com/watch?v="+f),void 0===this.getItemProperty(a,e.videoPosterProperty)&&(a[e.videoPosterProperty]="//img.youtube.com/vi/"+f+"/maxresdefault.jpg"),this.videoFactory(a,b,new d(f,e.youTubePlayerVars,e.youTubeClickToPlay))):c.call(this,a,b)}}),b}),function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery","./blueimp-gallery"],a):a(window.jQuery,window.blueimp.Gallery)}(function(a,b){"use strict";a(document).on("click","[data-gallery]",function(c){var d=a(this).data("gallery"),e=a(d),f=e.length&&e||a(b.prototype.options.container),g={onopen:function(){f.data("gallery",this).trigger("open")},onopened:function(){f.trigger("opened")},onslide:function(){f.trigger("slide",arguments)},onslideend:function(){f.trigger("slideend",arguments)},onslidecomplete:function(){f.trigger("slidecomplete",arguments)},onclose:function(){f.trigger("close")},onclosed:function(){f.trigger("closed").removeData("gallery")}},h=a.extend(f.data(),{container:f[0],index:this,event:c},g),i=a('[data-gallery="'+d+'"]');return h.filter&&(i=i.filter(h.filter)),new b(i,h)})}); \ No newline at end of file diff --git a/assets/js/plugins/chartJs/Chart.min.js b/assets/js/plugins/chartJs/Chart.min.js deleted file mode 100644 index d532163a..00000000 --- a/assets/js/plugins/chartJs/Chart.min.js +++ /dev/null @@ -1,11 +0,0 @@ -/*! - * Chart.js - * http://chartjs.org/ - * Version: 1.0.1-beta.4 - * - * Copyright 2014 Nick Downie - * Released under the MIT license - * https://github.com/nnnick/Chart.js/blob/master/LICENSE.md - */ -(function(){"use strict";var t=this,i=t.Chart,e=function(t){this.canvas=t.canvas,this.ctx=t;this.width=t.canvas.width,this.height=t.canvas.height;return this.aspectRatio=this.width/this.height,s.retinaScale(this),this};e.defaults={global:{animation:!0,animationSteps:60,animationEasing:"easeOutQuart",showScale:!0,scaleOverride:!1,scaleSteps:null,scaleStepWidth:null,scaleStartValue:null,scaleLineColor:"rgba(0,0,0,.1)",scaleLineWidth:1,scaleShowLabels:!0,scaleLabel:"<%=value%>",scaleIntegersOnly:!0,scaleBeginAtZero:!1,scaleFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",scaleFontSize:12,scaleFontStyle:"normal",scaleFontColor:"#666",responsive:!1,maintainAspectRatio:!0,showTooltips:!0,tooltipEvents:["mousemove","touchstart","touchmove","mouseout"],tooltipFillColor:"rgba(0,0,0,0.8)",tooltipFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",tooltipFontSize:14,tooltipFontStyle:"normal",tooltipFontColor:"#fff",tooltipTitleFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",tooltipTitleFontSize:14,tooltipTitleFontStyle:"bold",tooltipTitleFontColor:"#fff",tooltipYPadding:6,tooltipXPadding:6,tooltipCaretSize:8,tooltipCornerRadius:6,tooltipXOffset:10,tooltipTemplate:"<%if (label){%><%=label%>: <%}%><%= value %>",multiTooltipTemplate:"<%= value %>",multiTooltipKeyBackground:"#fff",onAnimationProgress:function(){},onAnimationComplete:function(){}}},e.types={};var s=e.helpers={},n=s.each=function(t,i,e){var s=Array.prototype.slice.call(arguments,3);if(t)if(t.length===+t.length){var n;for(n=0;n<t.length;n++)i.apply(e,[t[n],n].concat(s))}else for(var o in t)i.apply(e,[t[o],o].concat(s))},o=s.clone=function(t){var i={};return n(t,function(e,s){t.hasOwnProperty(s)&&(i[s]=e)}),i},a=s.extend=function(t){return n(Array.prototype.slice.call(arguments,1),function(i){n(i,function(e,s){i.hasOwnProperty(s)&&(t[s]=e)})}),t},h=s.merge=function(){var t=Array.prototype.slice.call(arguments,0);return t.unshift({}),a.apply(null,t)},l=s.indexOf=function(t,i){if(Array.prototype.indexOf)return t.indexOf(i);for(var e=0;e<t.length;e++)if(t[e]===i)return e;return-1},r=(s.where=function(t,i){var e=[];return s.each(t,function(t){i(t)&&e.push(t)}),e},s.findNextWhere=function(t,i,e){e||(e=-1);for(var s=e+1;s<t.length;s++){var n=t[s];if(i(n))return n}},s.findPreviousWhere=function(t,i,e){e||(e=t.length);for(var s=e-1;s>=0;s--){var n=t[s];if(i(n))return n}},s.inherits=function(t){var i=this,e=t&&t.hasOwnProperty("constructor")?t.constructor:function(){return i.apply(this,arguments)},s=function(){this.constructor=e};return s.prototype=i.prototype,e.prototype=new s,e.extend=r,t&&a(e.prototype,t),e.__super__=i.prototype,e}),c=s.noop=function(){},u=s.uid=function(){var t=0;return function(){return"chart-"+t++}}(),d=s.warn=function(t){window.console&&"function"==typeof window.console.warn&&console.warn(t)},p=s.amd="function"==typeof t.define&&t.define.amd,f=s.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},g=s.max=function(t){return Math.max.apply(Math,t)},m=s.min=function(t){return Math.min.apply(Math,t)},v=(s.cap=function(t,i,e){if(f(i)){if(t>i)return i}else if(f(e)&&e>t)return e;return t},s.getDecimalPlaces=function(t){return t%1!==0&&f(t)?t.toString().split(".")[1].length:0}),x=s.radians=function(t){return t*(Math.PI/180)},S=(s.getAngleFromPoint=function(t,i){var e=i.x-t.x,s=i.y-t.y,n=Math.sqrt(e*e+s*s),o=2*Math.PI+Math.atan2(s,e);return 0>e&&0>s&&(o+=2*Math.PI),{angle:o,distance:n}},s.aliasPixel=function(t){return t%2===0?0:.5}),y=(s.splineCurve=function(t,i,e,s){var n=Math.sqrt(Math.pow(i.x-t.x,2)+Math.pow(i.y-t.y,2)),o=Math.sqrt(Math.pow(e.x-i.x,2)+Math.pow(e.y-i.y,2)),a=s*n/(n+o),h=s*o/(n+o);return{inner:{x:i.x-a*(e.x-t.x),y:i.y-a*(e.y-t.y)},outer:{x:i.x+h*(e.x-t.x),y:i.y+h*(e.y-t.y)}}},s.calculateOrderOfMagnitude=function(t){return Math.floor(Math.log(t)/Math.LN10)}),C=(s.calculateScaleRange=function(t,i,e,s,n){var o=2,a=Math.floor(i/(1.5*e)),h=o>=a,l=g(t),r=m(t);l===r&&(l+=.5,r>=.5&&!s?r-=.5:l+=.5);for(var c=Math.abs(l-r),u=y(c),d=Math.ceil(l/(1*Math.pow(10,u)))*Math.pow(10,u),p=s?0:Math.floor(r/(1*Math.pow(10,u)))*Math.pow(10,u),f=d-p,v=Math.pow(10,u),x=Math.round(f/v);(x>a||a>2*x)&&!h;)if(x>a)v*=2,x=Math.round(f/v),x%1!==0&&(h=!0);else if(n&&u>=0){if(v/2%1!==0)break;v/=2,x=Math.round(f/v)}else v/=2,x=Math.round(f/v);return h&&(x=o,v=f/x),{steps:x,stepValue:v,min:p,max:p+x*v}},s.template=function(t,i){function e(t,i){var e=/\W/.test(t)?new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+t.replace(/[\r\t\n]/g," ").split("<%").join(" ").replace(/((^|%>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)%>/g,"',$1,'").split(" ").join("');").split("%>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');"):s[t]=s[t];return i?e(i):e}if(t instanceof Function)return t(i);var s={};return e(t,i)}),b=(s.generateLabels=function(t,i,e,s){var o=new Array(i);return labelTemplateString&&n(o,function(i,n){o[n]=C(t,{value:e+s*(n+1)})}),o},s.easingEffects={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return-1*t*(t-2)},easeInOutQuad:function(t){return(t/=.5)<1?.5*t*t:-0.5*(--t*(t-2)-1)},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return 1*((t=t/1-1)*t*t+1)},easeInOutCubic:function(t){return(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return-1*((t=t/1-1)*t*t*t-1)},easeInOutQuart:function(t){return(t/=.5)<1?.5*t*t*t*t:-0.5*((t-=2)*t*t*t-2)},easeInQuint:function(t){return 1*(t/=1)*t*t*t*t},easeOutQuint:function(t){return 1*((t=t/1-1)*t*t*t*t+1)},easeInOutQuint:function(t){return(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},easeInSine:function(t){return-1*Math.cos(t/1*(Math.PI/2))+1},easeOutSine:function(t){return 1*Math.sin(t/1*(Math.PI/2))},easeInOutSine:function(t){return-0.5*(Math.cos(Math.PI*t/1)-1)},easeInExpo:function(t){return 0===t?1:1*Math.pow(2,10*(t/1-1))},easeOutExpo:function(t){return 1===t?1:1*(-Math.pow(2,-10*t/1)+1)},easeInOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(-Math.pow(2,-10*--t)+2)},easeInCirc:function(t){return t>=1?t:-1*(Math.sqrt(1-(t/=1)*t)-1)},easeOutCirc:function(t){return 1*Math.sqrt(1-(t=t/1-1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-0.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var i=1.70158,e=0,s=1;return 0===t?0:1==(t/=1)?1:(e||(e=.3),s<Math.abs(1)?(s=1,i=e/4):i=e/(2*Math.PI)*Math.asin(1/s),-(s*Math.pow(2,10*(t-=1))*Math.sin(2*(1*t-i)*Math.PI/e)))},easeOutElastic:function(t){var i=1.70158,e=0,s=1;return 0===t?0:1==(t/=1)?1:(e||(e=.3),s<Math.abs(1)?(s=1,i=e/4):i=e/(2*Math.PI)*Math.asin(1/s),s*Math.pow(2,-10*t)*Math.sin(2*(1*t-i)*Math.PI/e)+1)},easeInOutElastic:function(t){var i=1.70158,e=0,s=1;return 0===t?0:2==(t/=.5)?1:(e||(e=.3*1.5),s<Math.abs(1)?(s=1,i=e/4):i=e/(2*Math.PI)*Math.asin(1/s),1>t?-.5*s*Math.pow(2,10*(t-=1))*Math.sin(2*(1*t-i)*Math.PI/e):s*Math.pow(2,-10*(t-=1))*Math.sin(2*(1*t-i)*Math.PI/e)*.5+1)},easeInBack:function(t){var i=1.70158;return 1*(t/=1)*t*((i+1)*t-i)},easeOutBack:function(t){var i=1.70158;return 1*((t=t/1-1)*t*((i+1)*t+i)+1)},easeInOutBack:function(t){var i=1.70158;return(t/=.5)<1?.5*t*t*(((i*=1.525)+1)*t-i):.5*((t-=2)*t*(((i*=1.525)+1)*t+i)+2)},easeInBounce:function(t){return 1-b.easeOutBounce(1-t)},easeOutBounce:function(t){return(t/=1)<1/2.75?7.5625*t*t:2/2.75>t?1*(7.5625*(t-=1.5/2.75)*t+.75):2.5/2.75>t?1*(7.5625*(t-=2.25/2.75)*t+.9375):1*(7.5625*(t-=2.625/2.75)*t+.984375)},easeInOutBounce:function(t){return.5>t?.5*b.easeInBounce(2*t):.5*b.easeOutBounce(2*t-1)+.5}}),w=s.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)}}(),P=(s.cancelAnimFrame=function(){return window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||window.oCancelAnimationFrame||window.msCancelAnimationFrame||function(t){return window.clearTimeout(t,1e3/60)}}(),s.animationLoop=function(t,i,e,s,n,o){var a=0,h=b[e]||b.linear,l=function(){a++;var e=a/i,r=h(e);t.call(o,r,e,a),s.call(o,r,e),i>a?o.animationFrame=w(l):n.apply(o)};w(l)},s.getRelativePosition=function(t){var i,e,s=t.originalEvent||t,n=t.currentTarget||t.srcElement,o=n.getBoundingClientRect();return s.touches?(i=s.touches[0].clientX-o.left,e=s.touches[0].clientY-o.top):(i=s.clientX-o.left,e=s.clientY-o.top),{x:i,y:e}},s.addEvent=function(t,i,e){t.addEventListener?t.addEventListener(i,e):t.attachEvent?t.attachEvent("on"+i,e):t["on"+i]=e}),L=s.removeEvent=function(t,i,e){t.removeEventListener?t.removeEventListener(i,e,!1):t.detachEvent?t.detachEvent("on"+i,e):t["on"+i]=c},k=(s.bindEvents=function(t,i,e){t.events||(t.events={}),n(i,function(i){t.events[i]=function(){e.apply(t,arguments)},P(t.chart.canvas,i,t.events[i])})},s.unbindEvents=function(t,i){n(i,function(i,e){L(t.chart.canvas,e,i)})}),F=s.getMaximumWidth=function(t){var i=t.parentNode;return i.clientWidth},R=s.getMaximumHeight=function(t){var i=t.parentNode;return i.clientHeight},A=(s.getMaximumSize=s.getMaximumWidth,s.retinaScale=function(t){var i=t.ctx,e=t.canvas.width,s=t.canvas.height;window.devicePixelRatio&&(i.canvas.style.width=e+"px",i.canvas.style.height=s+"px",i.canvas.height=s*window.devicePixelRatio,i.canvas.width=e*window.devicePixelRatio,i.scale(window.devicePixelRatio,window.devicePixelRatio))}),T=s.clear=function(t){t.ctx.clearRect(0,0,t.width,t.height)},M=s.fontString=function(t,i,e){return i+" "+t+"px "+e},W=s.longestText=function(t,i,e){t.font=i;var s=0;return n(e,function(i){var e=t.measureText(i).width;s=e>s?e:s}),s},z=s.drawRoundedRectangle=function(t,i,e,s,n,o){t.beginPath(),t.moveTo(i+o,e),t.lineTo(i+s-o,e),t.quadraticCurveTo(i+s,e,i+s,e+o),t.lineTo(i+s,e+n-o),t.quadraticCurveTo(i+s,e+n,i+s-o,e+n),t.lineTo(i+o,e+n),t.quadraticCurveTo(i,e+n,i,e+n-o),t.lineTo(i,e+o),t.quadraticCurveTo(i,e,i+o,e),t.closePath()};e.instances={},e.Type=function(t,i,s){this.options=i,this.chart=s,this.id=u(),e.instances[this.id]=this,i.responsive&&this.resize(),this.initialize.call(this,t)},a(e.Type.prototype,{initialize:function(){return this},clear:function(){return T(this.chart),this},stop:function(){return s.cancelAnimFrame.call(t,this.animationFrame),this},resize:function(t){this.stop();var i=this.chart.canvas,e=F(this.chart.canvas),s=this.options.maintainAspectRatio?e/this.chart.aspectRatio:R(this.chart.canvas);return i.width=this.chart.width=e,i.height=this.chart.height=s,A(this.chart),"function"==typeof t&&t.apply(this,Array.prototype.slice.call(arguments,1)),this},reflow:c,render:function(t){return t&&this.reflow(),this.options.animation&&!t?s.animationLoop(this.draw,this.options.animationSteps,this.options.animationEasing,this.options.onAnimationProgress,this.options.onAnimationComplete,this):(this.draw(),this.options.onAnimationComplete.call(this)),this},generateLegend:function(){return C(this.options.legendTemplate,this)},destroy:function(){this.clear(),k(this,this.events),delete e.instances[this.id]},showTooltip:function(t,i){"undefined"==typeof this.activeElements&&(this.activeElements=[]);var o=function(t){var i=!1;return t.length!==this.activeElements.length?i=!0:(n(t,function(t,e){t!==this.activeElements[e]&&(i=!0)},this),i)}.call(this,t);if(o||i){if(this.activeElements=t,this.draw(),t.length>0)if(this.datasets&&this.datasets.length>1){for(var a,h,r=this.datasets.length-1;r>=0&&(a=this.datasets[r].points||this.datasets[r].bars||this.datasets[r].segments,h=l(a,t[0]),-1===h);r--);var c=[],u=[],d=function(){var t,i,e,n,o,a=[],l=[],r=[];return s.each(this.datasets,function(i){t=i.points||i.bars||i.segments,t[h]&&t[h].hasValue()&&a.push(t[h])}),s.each(a,function(t){l.push(t.x),r.push(t.y),c.push(s.template(this.options.multiTooltipTemplate,t)),u.push({fill:t._saved.fillColor||t.fillColor,stroke:t._saved.strokeColor||t.strokeColor})},this),o=m(r),e=g(r),n=m(l),i=g(l),{x:n>this.chart.width/2?n:i,y:(o+e)/2}}.call(this,h);new e.MultiTooltip({x:d.x,y:d.y,xPadding:this.options.tooltipXPadding,yPadding:this.options.tooltipYPadding,xOffset:this.options.tooltipXOffset,fillColor:this.options.tooltipFillColor,textColor:this.options.tooltipFontColor,fontFamily:this.options.tooltipFontFamily,fontStyle:this.options.tooltipFontStyle,fontSize:this.options.tooltipFontSize,titleTextColor:this.options.tooltipTitleFontColor,titleFontFamily:this.options.tooltipTitleFontFamily,titleFontStyle:this.options.tooltipTitleFontStyle,titleFontSize:this.options.tooltipTitleFontSize,cornerRadius:this.options.tooltipCornerRadius,labels:c,legendColors:u,legendColorBackground:this.options.multiTooltipKeyBackground,title:t[0].label,chart:this.chart,ctx:this.chart.ctx}).draw()}else n(t,function(t){var i=t.tooltipPosition();new e.Tooltip({x:Math.round(i.x),y:Math.round(i.y),xPadding:this.options.tooltipXPadding,yPadding:this.options.tooltipYPadding,fillColor:this.options.tooltipFillColor,textColor:this.options.tooltipFontColor,fontFamily:this.options.tooltipFontFamily,fontStyle:this.options.tooltipFontStyle,fontSize:this.options.tooltipFontSize,caretHeight:this.options.tooltipCaretSize,cornerRadius:this.options.tooltipCornerRadius,text:C(this.options.tooltipTemplate,t),chart:this.chart}).draw()},this);return this}},toBase64Image:function(){return this.chart.canvas.toDataURL.apply(this.chart.canvas,arguments)}}),e.Type.extend=function(t){var i=this,s=function(){return i.apply(this,arguments)};if(s.prototype=o(i.prototype),a(s.prototype,t),s.extend=e.Type.extend,t.name||i.prototype.name){var n=t.name||i.prototype.name,l=e.defaults[i.prototype.name]?o(e.defaults[i.prototype.name]):{};e.defaults[n]=a(l,t.defaults),e.types[n]=s,e.prototype[n]=function(t,i){var o=h(e.defaults.global,e.defaults[n],i||{});return new s(t,o,this)}}else d("Name not provided for this chart, so it hasn't been registered");return i},e.Element=function(t){a(this,t),this.initialize.apply(this,arguments),this.save()},a(e.Element.prototype,{initialize:function(){},restore:function(t){return t?n(t,function(t){this[t]=this._saved[t]},this):a(this,this._saved),this},save:function(){return this._saved=o(this),delete this._saved._saved,this},update:function(t){return n(t,function(t,i){this._saved[i]=this[i],this[i]=t},this),this},transition:function(t,i){return n(t,function(t,e){this[e]=(t-this._saved[e])*i+this._saved[e]},this),this},tooltipPosition:function(){return{x:this.x,y:this.y}},hasValue:function(){return f(this.value)}}),e.Element.extend=r,e.Point=e.Element.extend({display:!0,inRange:function(t,i){var e=this.hitDetectionRadius+this.radius;return Math.pow(t-this.x,2)+Math.pow(i-this.y,2)<Math.pow(e,2)},draw:function(){if(this.display){var t=this.ctx;t.beginPath(),t.arc(this.x,this.y,this.radius,0,2*Math.PI),t.closePath(),t.strokeStyle=this.strokeColor,t.lineWidth=this.strokeWidth,t.fillStyle=this.fillColor,t.fill(),t.stroke()}}}),e.Arc=e.Element.extend({inRange:function(t,i){var e=s.getAngleFromPoint(this,{x:t,y:i}),n=e.angle>=this.startAngle&&e.angle<=this.endAngle,o=e.distance>=this.innerRadius&&e.distance<=this.outerRadius;return n&&o},tooltipPosition:function(){var t=this.startAngle+(this.endAngle-this.startAngle)/2,i=(this.outerRadius-this.innerRadius)/2+this.innerRadius;return{x:this.x+Math.cos(t)*i,y:this.y+Math.sin(t)*i}},draw:function(t){var i=this.ctx;i.beginPath(),i.arc(this.x,this.y,this.outerRadius,this.startAngle,this.endAngle),i.arc(this.x,this.y,this.innerRadius,this.endAngle,this.startAngle,!0),i.closePath(),i.strokeStyle=this.strokeColor,i.lineWidth=this.strokeWidth,i.fillStyle=this.fillColor,i.fill(),i.lineJoin="bevel",this.showStroke&&i.stroke()}}),e.Rectangle=e.Element.extend({draw:function(){var t=this.ctx,i=this.width/2,e=this.x-i,s=this.x+i,n=this.base-(this.base-this.y),o=this.strokeWidth/2;this.showStroke&&(e+=o,s-=o,n+=o),t.beginPath(),t.fillStyle=this.fillColor,t.strokeStyle=this.strokeColor,t.lineWidth=this.strokeWidth,t.moveTo(e,this.base),t.lineTo(e,n),t.lineTo(s,n),t.lineTo(s,this.base),t.fill(),this.showStroke&&t.stroke()},height:function(){return this.base-this.y},inRange:function(t,i){return t>=this.x-this.width/2&&t<=this.x+this.width/2&&i>=this.y&&i<=this.base}}),e.Tooltip=e.Element.extend({draw:function(){var t=this.chart.ctx;t.font=M(this.fontSize,this.fontStyle,this.fontFamily),this.xAlign="center",this.yAlign="above";var i=2,e=t.measureText(this.text).width+2*this.xPadding,s=this.fontSize+2*this.yPadding,n=s+this.caretHeight+i;this.x+e/2>this.chart.width?this.xAlign="left":this.x-e/2<0&&(this.xAlign="right"),this.y-n<0&&(this.yAlign="below");var o=this.x-e/2,a=this.y-n;switch(t.fillStyle=this.fillColor,this.yAlign){case"above":t.beginPath(),t.moveTo(this.x,this.y-i),t.lineTo(this.x+this.caretHeight,this.y-(i+this.caretHeight)),t.lineTo(this.x-this.caretHeight,this.y-(i+this.caretHeight)),t.closePath(),t.fill();break;case"below":a=this.y+i+this.caretHeight,t.beginPath(),t.moveTo(this.x,this.y+i),t.lineTo(this.x+this.caretHeight,this.y+i+this.caretHeight),t.lineTo(this.x-this.caretHeight,this.y+i+this.caretHeight),t.closePath(),t.fill()}switch(this.xAlign){case"left":o=this.x-e+(this.cornerRadius+this.caretHeight);break;case"right":o=this.x-(this.cornerRadius+this.caretHeight)}z(t,o,a,e,s,this.cornerRadius),t.fill(),t.fillStyle=this.textColor,t.textAlign="center",t.textBaseline="middle",t.fillText(this.text,o+e/2,a+s/2)}}),e.MultiTooltip=e.Element.extend({initialize:function(){this.font=M(this.fontSize,this.fontStyle,this.fontFamily),this.titleFont=M(this.titleFontSize,this.titleFontStyle,this.titleFontFamily),this.height=this.labels.length*this.fontSize+(this.labels.length-1)*(this.fontSize/2)+2*this.yPadding+1.5*this.titleFontSize,this.ctx.font=this.titleFont;var t=this.ctx.measureText(this.title).width,i=W(this.ctx,this.font,this.labels)+this.fontSize+3,e=g([i,t]);this.width=e+2*this.xPadding;var s=this.height/2;this.y-s<0?this.y=s:this.y+s>this.chart.height&&(this.y=this.chart.height-s),this.x>this.chart.width/2?this.x-=this.xOffset+this.width:this.x+=this.xOffset},getLineHeight:function(t){var i=this.y-this.height/2+this.yPadding,e=t-1;return 0===t?i+this.titleFontSize/2:i+(1.5*this.fontSize*e+this.fontSize/2)+1.5*this.titleFontSize},draw:function(){z(this.ctx,this.x,this.y-this.height/2,this.width,this.height,this.cornerRadius);var t=this.ctx;t.fillStyle=this.fillColor,t.fill(),t.closePath(),t.textAlign="left",t.textBaseline="middle",t.fillStyle=this.titleTextColor,t.font=this.titleFont,t.fillText(this.title,this.x+this.xPadding,this.getLineHeight(0)),t.font=this.font,s.each(this.labels,function(i,e){t.fillStyle=this.textColor,t.fillText(i,this.x+this.xPadding+this.fontSize+3,this.getLineHeight(e+1)),t.fillStyle=this.legendColorBackground,t.fillRect(this.x+this.xPadding,this.getLineHeight(e+1)-this.fontSize/2,this.fontSize,this.fontSize),t.fillStyle=this.legendColors[e].fill,t.fillRect(this.x+this.xPadding,this.getLineHeight(e+1)-this.fontSize/2,this.fontSize,this.fontSize)},this)}}),e.Scale=e.Element.extend({initialize:function(){this.fit()},buildYLabels:function(){this.yLabels=[];for(var t=v(this.stepValue),i=0;i<=this.steps;i++)this.yLabels.push(C(this.templateString,{value:(this.min+i*this.stepValue).toFixed(t)}));this.yLabelWidth=this.display&&this.showLabels?W(this.ctx,this.font,this.yLabels):0},addXLabel:function(t){this.xLabels.push(t),this.valuesCount++,this.fit()},removeXLabel:function(){this.xLabels.shift(),this.valuesCount--,this.fit()},fit:function(){this.startPoint=this.display?this.fontSize:0,this.endPoint=this.display?this.height-1.5*this.fontSize-5:this.height,this.startPoint+=this.padding,this.endPoint-=this.padding;var t,i=this.endPoint-this.startPoint;for(this.calculateYRange(i),this.buildYLabels(),this.calculateXLabelRotation();i>this.endPoint-this.startPoint;)i=this.endPoint-this.startPoint,t=this.yLabelWidth,this.calculateYRange(i),this.buildYLabels(),t<this.yLabelWidth&&this.calculateXLabelRotation()},calculateXLabelRotation:function(){this.ctx.font=this.font;var t,i,e=this.ctx.measureText(this.xLabels[0]).width,s=this.ctx.measureText(this.xLabels[this.xLabels.length-1]).width;if(this.xScalePaddingRight=s/2+3,this.xScalePaddingLeft=e/2>this.yLabelWidth+10?e/2:this.yLabelWidth+10,this.xLabelRotation=0,this.display){var n,o=W(this.ctx,this.font,this.xLabels);this.xLabelWidth=o;for(var a=Math.floor(this.calculateX(1)-this.calculateX(0))-6;this.xLabelWidth>a&&0===this.xLabelRotation||this.xLabelWidth>a&&this.xLabelRotation<=90&&this.xLabelRotation>0;)n=Math.cos(x(this.xLabelRotation)),t=n*e,i=n*s,t+this.fontSize/2>this.yLabelWidth+8&&(this.xScalePaddingLeft=t+this.fontSize/2),this.xScalePaddingRight=this.fontSize/2,this.xLabelRotation++,this.xLabelWidth=n*o;this.xLabelRotation>0&&(this.endPoint-=Math.sin(x(this.xLabelRotation))*o+3)}else this.xLabelWidth=0,this.xScalePaddingRight=this.padding,this.xScalePaddingLeft=this.padding},calculateYRange:c,drawingArea:function(){return this.startPoint-this.endPoint},calculateY:function(t){var i=this.drawingArea()/(this.min-this.max);return this.endPoint-i*(t-this.min)},calculateX:function(t){var i=(this.xLabelRotation>0,this.width-(this.xScalePaddingLeft+this.xScalePaddingRight)),e=i/(this.valuesCount-(this.offsetGridLines?0:1)),s=e*t+this.xScalePaddingLeft;return this.offsetGridLines&&(s+=e/2),Math.round(s)},update:function(t){s.extend(this,t),this.fit()},draw:function(){var t=this.ctx,i=(this.endPoint-this.startPoint)/this.steps,e=Math.round(this.xScalePaddingLeft);this.display&&(t.fillStyle=this.textColor,t.font=this.font,n(this.yLabels,function(n,o){var a=this.endPoint-i*o,h=Math.round(a);t.textAlign="right",t.textBaseline="middle",this.showLabels&&t.fillText(n,e-10,a),t.beginPath(),o>0?(t.lineWidth=this.gridLineWidth,t.strokeStyle=this.gridLineColor):(t.lineWidth=this.lineWidth,t.strokeStyle=this.lineColor),h+=s.aliasPixel(t.lineWidth),t.moveTo(e,h),t.lineTo(this.width,h),t.stroke(),t.closePath(),t.lineWidth=this.lineWidth,t.strokeStyle=this.lineColor,t.beginPath(),t.moveTo(e-5,h),t.lineTo(e,h),t.stroke(),t.closePath()},this),n(this.xLabels,function(i,e){var s=this.calculateX(e)+S(this.lineWidth),n=this.calculateX(e-(this.offsetGridLines?.5:0))+S(this.lineWidth),o=this.xLabelRotation>0;t.beginPath(),e>0?(t.lineWidth=this.gridLineWidth,t.strokeStyle=this.gridLineColor):(t.lineWidth=this.lineWidth,t.strokeStyle=this.lineColor),t.moveTo(n,this.endPoint),t.lineTo(n,this.startPoint-3),t.stroke(),t.closePath(),t.lineWidth=this.lineWidth,t.strokeStyle=this.lineColor,t.beginPath(),t.moveTo(n,this.endPoint),t.lineTo(n,this.endPoint+5),t.stroke(),t.closePath(),t.save(),t.translate(s,o?this.endPoint+12:this.endPoint+8),t.rotate(-1*x(this.xLabelRotation)),t.font=this.font,t.textAlign=o?"right":"center",t.textBaseline=o?"middle":"top",t.fillText(i,0,0),t.restore()},this))}}),e.RadialScale=e.Element.extend({initialize:function(){this.size=m([this.height,this.width]),this.drawingArea=this.display?this.size/2-(this.fontSize/2+this.backdropPaddingY):this.size/2},calculateCenterOffset:function(t){var i=this.drawingArea/(this.max-this.min);return(t-this.min)*i},update:function(){this.lineArc?this.drawingArea=this.display?this.size/2-(this.fontSize/2+this.backdropPaddingY):this.size/2:this.setScaleSize(),this.buildYLabels()},buildYLabels:function(){this.yLabels=[];for(var t=v(this.stepValue),i=0;i<=this.steps;i++)this.yLabels.push(C(this.templateString,{value:(this.min+i*this.stepValue).toFixed(t)}))},getCircumference:function(){return 2*Math.PI/this.valuesCount},setScaleSize:function(){var t,i,e,s,n,o,a,h,l,r,c,u,d=m([this.height/2-this.pointLabelFontSize-5,this.width/2]),p=this.width,g=0;for(this.ctx.font=M(this.pointLabelFontSize,this.pointLabelFontStyle,this.pointLabelFontFamily),i=0;i<this.valuesCount;i++)t=this.getPointPosition(i,d),e=this.ctx.measureText(C(this.templateString,{value:this.labels[i]})).width+5,0===i||i===this.valuesCount/2?(s=e/2,t.x+s>p&&(p=t.x+s,n=i),t.x-s<g&&(g=t.x-s,a=i)):i<this.valuesCount/2?t.x+e>p&&(p=t.x+e,n=i):i>this.valuesCount/2&&t.x-e<g&&(g=t.x-e,a=i);l=g,r=Math.ceil(p-this.width),o=this.getIndexAngle(n),h=this.getIndexAngle(a),c=r/Math.sin(o+Math.PI/2),u=l/Math.sin(h+Math.PI/2),c=f(c)?c:0,u=f(u)?u:0,this.drawingArea=d-(u+c)/2,this.setCenterPoint(u,c)},setCenterPoint:function(t,i){var e=this.width-i-this.drawingArea,s=t+this.drawingArea;this.xCenter=(s+e)/2,this.yCenter=this.height/2},getIndexAngle:function(t){var i=2*Math.PI/this.valuesCount;return t*i-Math.PI/2},getPointPosition:function(t,i){var e=this.getIndexAngle(t);return{x:Math.cos(e)*i+this.xCenter,y:Math.sin(e)*i+this.yCenter}},draw:function(){if(this.display){var t=this.ctx;if(n(this.yLabels,function(i,e){if(e>0){var s,n=e*(this.drawingArea/this.steps),o=this.yCenter-n;if(this.lineWidth>0)if(t.strokeStyle=this.lineColor,t.lineWidth=this.lineWidth,this.lineArc)t.beginPath(),t.arc(this.xCenter,this.yCenter,n,0,2*Math.PI),t.closePath(),t.stroke();else{t.beginPath();for(var a=0;a<this.valuesCount;a++)s=this.getPointPosition(a,this.calculateCenterOffset(this.min+e*this.stepValue)),0===a?t.moveTo(s.x,s.y):t.lineTo(s.x,s.y);t.closePath(),t.stroke()}if(this.showLabels){if(t.font=M(this.fontSize,this.fontStyle,this.fontFamily),this.showLabelBackdrop){var h=t.measureText(i).width;t.fillStyle=this.backdropColor,t.fillRect(this.xCenter-h/2-this.backdropPaddingX,o-this.fontSize/2-this.backdropPaddingY,h+2*this.backdropPaddingX,this.fontSize+2*this.backdropPaddingY)}t.textAlign="center",t.textBaseline="middle",t.fillStyle=this.fontColor,t.fillText(i,this.xCenter,o)}}},this),!this.lineArc){t.lineWidth=this.angleLineWidth,t.strokeStyle=this.angleLineColor;for(var i=this.valuesCount-1;i>=0;i--){if(this.angleLineWidth>0){var e=this.getPointPosition(i,this.calculateCenterOffset(this.max));t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(e.x,e.y),t.stroke(),t.closePath()}var s=this.getPointPosition(i,this.calculateCenterOffset(this.max)+5);t.font=M(this.pointLabelFontSize,this.pointLabelFontStyle,this.pointLabelFontFamily),t.fillStyle=this.pointLabelFontColor;var o=this.labels.length,a=this.labels.length/2,h=a/2,l=h>i||i>o-h,r=i===h||i===o-h;t.textAlign=0===i?"center":i===a?"center":a>i?"left":"right",t.textBaseline=r?"middle":l?"bottom":"top",t.fillText(this.labels[i],s.x,s.y)}}}}}),s.addEvent(window,"resize",function(){var t;return function(){clearTimeout(t),t=setTimeout(function(){n(e.instances,function(t){t.options.responsive&&t.resize(t.render,!0)})},50)}}()),p?define(function(){return e}):"object"==typeof module&&module.exports&&(module.exports=e),t.Chart=e,e.noConflict=function(){return t.Chart=i,e}}).call(this),function(){"use strict";var t=this,i=t.Chart,e=i.helpers,s={scaleBeginAtZero:!0,scaleShowGridLines:!0,scaleGridLineColor:"rgba(0,0,0,.05)",scaleGridLineWidth:1,barShowStroke:!0,barStrokeWidth:2,barValueSpacing:5,barDatasetSpacing:1,legendTemplate:'<ul class="<%=name.toLowerCase()%>-legend"><% for (var i=0; i<datasets.length; i++){%><li><span style="background-color:<%=datasets[i].fillColor%>"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>'};i.Type.extend({name:"Bar",defaults:s,initialize:function(t){var s=this.options;this.ScaleClass=i.Scale.extend({offsetGridLines:!0,calculateBarX:function(t,i,e){var n=this.calculateBaseWidth(),o=this.calculateX(e)-n/2,a=this.calculateBarWidth(t);return o+a*i+i*s.barDatasetSpacing+a/2},calculateBaseWidth:function(){return this.calculateX(1)-this.calculateX(0)-2*s.barValueSpacing},calculateBarWidth:function(t){var i=this.calculateBaseWidth()-(t-1)*s.barDatasetSpacing;return i/t}}),this.datasets=[],this.options.showTooltips&&e.bindEvents(this,this.options.tooltipEvents,function(t){var i="mouseout"!==t.type?this.getBarsAtEvent(t):[];this.eachBars(function(t){t.restore(["fillColor","strokeColor"])}),e.each(i,function(t){t.fillColor=t.highlightFill,t.strokeColor=t.highlightStroke}),this.showTooltip(i)}),this.BarClass=i.Rectangle.extend({strokeWidth:this.options.barStrokeWidth,showStroke:this.options.barShowStroke,ctx:this.chart.ctx}),e.each(t.datasets,function(i){var s={label:i.label||null,fillColor:i.fillColor,strokeColor:i.strokeColor,bars:[]};this.datasets.push(s),e.each(i.data,function(e,n){s.bars.push(new this.BarClass({value:e,label:t.labels[n],datasetLabel:i.label,strokeColor:i.strokeColor,fillColor:i.fillColor,highlightFill:i.highlightFill||i.fillColor,highlightStroke:i.highlightStroke||i.strokeColor}))},this)},this),this.buildScale(t.labels),this.BarClass.prototype.base=this.scale.endPoint,this.eachBars(function(t,i,s){e.extend(t,{width:this.scale.calculateBarWidth(this.datasets.length),x:this.scale.calculateBarX(this.datasets.length,s,i),y:this.scale.endPoint}),t.save()},this),this.render()},update:function(){this.scale.update(),e.each(this.activeElements,function(t){t.restore(["fillColor","strokeColor"])}),this.eachBars(function(t){t.save()}),this.render()},eachBars:function(t){e.each(this.datasets,function(i,s){e.each(i.bars,t,this,s)},this)},getBarsAtEvent:function(t){for(var i,s=[],n=e.getRelativePosition(t),o=function(t){s.push(t.bars[i])},a=0;a<this.datasets.length;a++)for(i=0;i<this.datasets[a].bars.length;i++)if(this.datasets[a].bars[i].inRange(n.x,n.y))return e.each(this.datasets,o),s;return s},buildScale:function(t){var i=this,s=function(){var t=[];return i.eachBars(function(i){t.push(i.value)}),t},n={templateString:this.options.scaleLabel,height:this.chart.height,width:this.chart.width,ctx:this.chart.ctx,textColor:this.options.scaleFontColor,fontSize:this.options.scaleFontSize,fontStyle:this.options.scaleFontStyle,fontFamily:this.options.scaleFontFamily,valuesCount:t.length,beginAtZero:this.options.scaleBeginAtZero,integersOnly:this.options.scaleIntegersOnly,calculateYRange:function(t){var i=e.calculateScaleRange(s(),t,this.fontSize,this.beginAtZero,this.integersOnly);e.extend(this,i)},xLabels:t,font:e.fontString(this.options.scaleFontSize,this.options.scaleFontStyle,this.options.scaleFontFamily),lineWidth:this.options.scaleLineWidth,lineColor:this.options.scaleLineColor,gridLineWidth:this.options.scaleShowGridLines?this.options.scaleGridLineWidth:0,gridLineColor:this.options.scaleShowGridLines?this.options.scaleGridLineColor:"rgba(0,0,0,0)",padding:this.options.showScale?0:this.options.barShowStroke?this.options.barStrokeWidth:0,showLabels:this.options.scaleShowLabels,display:this.options.showScale};this.options.scaleOverride&&e.extend(n,{calculateYRange:e.noop,steps:this.options.scaleSteps,stepValue:this.options.scaleStepWidth,min:this.options.scaleStartValue,max:this.options.scaleStartValue+this.options.scaleSteps*this.options.scaleStepWidth}),this.scale=new this.ScaleClass(n)},addData:function(t,i){e.each(t,function(t,e){this.datasets[e].bars.push(new this.BarClass({value:t,label:i,x:this.scale.calculateBarX(this.datasets.length,e,this.scale.valuesCount+1),y:this.scale.endPoint,width:this.scale.calculateBarWidth(this.datasets.length),base:this.scale.endPoint,strokeColor:this.datasets[e].strokeColor,fillColor:this.datasets[e].fillColor}))},this),this.scale.addXLabel(i),this.update()},removeData:function(){this.scale.removeXLabel(),e.each(this.datasets,function(t){t.bars.shift()},this),this.update()},reflow:function(){e.extend(this.BarClass.prototype,{y:this.scale.endPoint,base:this.scale.endPoint});var t=e.extend({height:this.chart.height,width:this.chart.width});this.scale.update(t)},draw:function(t){var i=t||1;this.clear();this.chart.ctx;this.scale.draw(i),e.each(this.datasets,function(t,s){e.each(t.bars,function(t,e){t.hasValue()&&(t.base=this.scale.endPoint,t.transition({x:this.scale.calculateBarX(this.datasets.length,s,e),y:this.scale.calculateY(t.value),width:this.scale.calculateBarWidth(this.datasets.length)},i).draw())},this)},this)}})}.call(this),function(){"use strict";var t=this,i=t.Chart,e=i.helpers,s={segmentShowStroke:!0,segmentStrokeColor:"#fff",segmentStrokeWidth:2,percentageInnerCutout:50,animationSteps:100,animationEasing:"easeOutBounce",animateRotate:!0,animateScale:!1,legendTemplate:'<ul class="<%=name.toLowerCase()%>-legend"><% for (var i=0; i<segments.length; i++){%><li><span style="background-color:<%=segments[i].fillColor%>"></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>'}; - i.Type.extend({name:"Doughnut",defaults:s,initialize:function(t){this.segments=[],this.outerRadius=(e.min([this.chart.width,this.chart.height])-this.options.segmentStrokeWidth/2)/2,this.SegmentArc=i.Arc.extend({ctx:this.chart.ctx,x:this.chart.width/2,y:this.chart.height/2}),this.options.showTooltips&&e.bindEvents(this,this.options.tooltipEvents,function(t){var i="mouseout"!==t.type?this.getSegmentsAtEvent(t):[];e.each(this.segments,function(t){t.restore(["fillColor"])}),e.each(i,function(t){t.fillColor=t.highlightColor}),this.showTooltip(i)}),this.calculateTotal(t),e.each(t,function(t,i){this.addData(t,i,!0)},this),this.render()},getSegmentsAtEvent:function(t){var i=[],s=e.getRelativePosition(t);return e.each(this.segments,function(t){t.inRange(s.x,s.y)&&i.push(t)},this),i},addData:function(t,i,e){var s=i||this.segments.length;this.segments.splice(s,0,new this.SegmentArc({value:t.value,outerRadius:this.options.animateScale?0:this.outerRadius,innerRadius:this.options.animateScale?0:this.outerRadius/100*this.options.percentageInnerCutout,fillColor:t.color,highlightColor:t.highlight||t.color,showStroke:this.options.segmentShowStroke,strokeWidth:this.options.segmentStrokeWidth,strokeColor:this.options.segmentStrokeColor,startAngle:1.5*Math.PI,circumference:this.options.animateRotate?0:this.calculateCircumference(t.value),label:t.label})),e||(this.reflow(),this.update())},calculateCircumference:function(t){return 2*Math.PI*(t/this.total)},calculateTotal:function(t){this.total=0,e.each(t,function(t){this.total+=t.value},this)},update:function(){this.calculateTotal(this.segments),e.each(this.activeElements,function(t){t.restore(["fillColor"])}),e.each(this.segments,function(t){t.save()}),this.render()},removeData:function(t){var i=e.isNumber(t)?t:this.segments.length-1;this.segments.splice(i,1),this.reflow(),this.update()},reflow:function(){e.extend(this.SegmentArc.prototype,{x:this.chart.width/2,y:this.chart.height/2}),this.outerRadius=(e.min([this.chart.width,this.chart.height])-this.options.segmentStrokeWidth/2)/2,e.each(this.segments,function(t){t.update({outerRadius:this.outerRadius,innerRadius:this.outerRadius/100*this.options.percentageInnerCutout})},this)},draw:function(t){var i=t?t:1;this.clear(),e.each(this.segments,function(t,e){t.transition({circumference:this.calculateCircumference(t.value),outerRadius:this.outerRadius,innerRadius:this.outerRadius/100*this.options.percentageInnerCutout},i),t.endAngle=t.startAngle+t.circumference,t.draw(),0===e&&(t.startAngle=1.5*Math.PI),e<this.segments.length-1&&(this.segments[e+1].startAngle=t.endAngle)},this)}}),i.types.Doughnut.extend({name:"Pie",defaults:e.merge(s,{percentageInnerCutout:0})})}.call(this),function(){"use strict";var t=this,i=t.Chart,e=i.helpers,s={scaleShowGridLines:!0,scaleGridLineColor:"rgba(0,0,0,.05)",scaleGridLineWidth:1,bezierCurve:!0,bezierCurveTension:.4,pointDot:!0,pointDotRadius:4,pointDotStrokeWidth:1,pointHitDetectionRadius:20,datasetStroke:!0,datasetStrokeWidth:2,datasetFill:!0,legendTemplate:'<ul class="<%=name.toLowerCase()%>-legend"><% for (var i=0; i<datasets.length; i++){%><li><span style="background-color:<%=datasets[i].strokeColor%>"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>'};i.Type.extend({name:"Line",defaults:s,initialize:function(t){this.PointClass=i.Point.extend({strokeWidth:this.options.pointDotStrokeWidth,radius:this.options.pointDotRadius,display:this.options.pointDot,hitDetectionRadius:this.options.pointHitDetectionRadius,ctx:this.chart.ctx,inRange:function(t){return Math.pow(t-this.x,2)<Math.pow(this.radius+this.hitDetectionRadius,2)}}),this.datasets=[],this.options.showTooltips&&e.bindEvents(this,this.options.tooltipEvents,function(t){var i="mouseout"!==t.type?this.getPointsAtEvent(t):[];this.eachPoints(function(t){t.restore(["fillColor","strokeColor"])}),e.each(i,function(t){t.fillColor=t.highlightFill,t.strokeColor=t.highlightStroke}),this.showTooltip(i)}),e.each(t.datasets,function(i){var s={label:i.label||null,fillColor:i.fillColor,strokeColor:i.strokeColor,pointColor:i.pointColor,pointStrokeColor:i.pointStrokeColor,points:[]};this.datasets.push(s),e.each(i.data,function(e,n){s.points.push(new this.PointClass({value:e,label:t.labels[n],datasetLabel:i.label,strokeColor:i.pointStrokeColor,fillColor:i.pointColor,highlightFill:i.pointHighlightFill||i.pointColor,highlightStroke:i.pointHighlightStroke||i.pointStrokeColor}))},this),this.buildScale(t.labels),this.eachPoints(function(t,i){e.extend(t,{x:this.scale.calculateX(i),y:this.scale.endPoint}),t.save()},this)},this),this.render()},update:function(){this.scale.update(),e.each(this.activeElements,function(t){t.restore(["fillColor","strokeColor"])}),this.eachPoints(function(t){t.save()}),this.render()},eachPoints:function(t){e.each(this.datasets,function(i){e.each(i.points,t,this)},this)},getPointsAtEvent:function(t){var i=[],s=e.getRelativePosition(t);return e.each(this.datasets,function(t){e.each(t.points,function(t){t.inRange(s.x,s.y)&&i.push(t)})},this),i},buildScale:function(t){var s=this,n=function(){var t=[];return s.eachPoints(function(i){t.push(i.value)}),t},o={templateString:this.options.scaleLabel,height:this.chart.height,width:this.chart.width,ctx:this.chart.ctx,textColor:this.options.scaleFontColor,fontSize:this.options.scaleFontSize,fontStyle:this.options.scaleFontStyle,fontFamily:this.options.scaleFontFamily,valuesCount:t.length,beginAtZero:this.options.scaleBeginAtZero,integersOnly:this.options.scaleIntegersOnly,calculateYRange:function(t){var i=e.calculateScaleRange(n(),t,this.fontSize,this.beginAtZero,this.integersOnly);e.extend(this,i)},xLabels:t,font:e.fontString(this.options.scaleFontSize,this.options.scaleFontStyle,this.options.scaleFontFamily),lineWidth:this.options.scaleLineWidth,lineColor:this.options.scaleLineColor,gridLineWidth:this.options.scaleShowGridLines?this.options.scaleGridLineWidth:0,gridLineColor:this.options.scaleShowGridLines?this.options.scaleGridLineColor:"rgba(0,0,0,0)",padding:this.options.showScale?0:this.options.pointDotRadius+this.options.pointDotStrokeWidth,showLabels:this.options.scaleShowLabels,display:this.options.showScale};this.options.scaleOverride&&e.extend(o,{calculateYRange:e.noop,steps:this.options.scaleSteps,stepValue:this.options.scaleStepWidth,min:this.options.scaleStartValue,max:this.options.scaleStartValue+this.options.scaleSteps*this.options.scaleStepWidth}),this.scale=new i.Scale(o)},addData:function(t,i){e.each(t,function(t,e){this.datasets[e].points.push(new this.PointClass({value:t,label:i,x:this.scale.calculateX(this.scale.valuesCount+1),y:this.scale.endPoint,strokeColor:this.datasets[e].pointStrokeColor,fillColor:this.datasets[e].pointColor}))},this),this.scale.addXLabel(i),this.update()},removeData:function(){this.scale.removeXLabel(),e.each(this.datasets,function(t){t.points.shift()},this),this.update()},reflow:function(){var t=e.extend({height:this.chart.height,width:this.chart.width});this.scale.update(t)},draw:function(t){var i=t||1;this.clear();var s=this.chart.ctx,n=function(t){return null!==t.value},o=function(t,i,s){return e.findNextWhere(i,n,s)||t},a=function(t,i,s){return e.findPreviousWhere(i,n,s)||t};this.scale.draw(i),e.each(this.datasets,function(t){var h=e.where(t.points,n);e.each(t.points,function(t,e){t.hasValue()&&t.transition({y:this.scale.calculateY(t.value),x:this.scale.calculateX(e)},i)},this),this.options.bezierCurve&&e.each(h,function(t,i){var s=i>0&&i<h.length-1?this.options.bezierCurveTension:0;t.controlPoints=e.splineCurve(a(t,h,i),t,o(t,h,i),s),t.controlPoints.outer.y>this.scale.endPoint?t.controlPoints.outer.y=this.scale.endPoint:t.controlPoints.outer.y<this.scale.startPoint&&(t.controlPoints.outer.y=this.scale.startPoint),t.controlPoints.inner.y>this.scale.endPoint?t.controlPoints.inner.y=this.scale.endPoint:t.controlPoints.inner.y<this.scale.startPoint&&(t.controlPoints.inner.y=this.scale.startPoint)},this),s.lineWidth=this.options.datasetStrokeWidth,s.strokeStyle=t.strokeColor,s.beginPath(),e.each(h,function(t,i){if(0===i)s.moveTo(t.x,t.y);else if(this.options.bezierCurve){var e=a(t,h,i);s.bezierCurveTo(e.controlPoints.outer.x,e.controlPoints.outer.y,t.controlPoints.inner.x,t.controlPoints.inner.y,t.x,t.y)}else s.lineTo(t.x,t.y)},this),s.stroke(),this.options.datasetFill&&h.length>0&&(s.lineTo(h[h.length-1].x,this.scale.endPoint),s.lineTo(h[0].x,this.scale.endPoint),s.fillStyle=t.fillColor,s.closePath(),s.fill()),e.each(h,function(t){t.draw()})},this)}})}.call(this),function(){"use strict";var t=this,i=t.Chart,e=i.helpers,s={scaleShowLabelBackdrop:!0,scaleBackdropColor:"rgba(255,255,255,0.75)",scaleBeginAtZero:!0,scaleBackdropPaddingY:2,scaleBackdropPaddingX:2,scaleShowLine:!0,segmentShowStroke:!0,segmentStrokeColor:"#fff",segmentStrokeWidth:2,animationSteps:100,animationEasing:"easeOutBounce",animateRotate:!0,animateScale:!1,legendTemplate:'<ul class="<%=name.toLowerCase()%>-legend"><% for (var i=0; i<segments.length; i++){%><li><span style="background-color:<%=segments[i].fillColor%>"></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>'};i.Type.extend({name:"PolarArea",defaults:s,initialize:function(t){this.segments=[],this.SegmentArc=i.Arc.extend({showStroke:this.options.segmentShowStroke,strokeWidth:this.options.segmentStrokeWidth,strokeColor:this.options.segmentStrokeColor,ctx:this.chart.ctx,innerRadius:0,x:this.chart.width/2,y:this.chart.height/2}),this.scale=new i.RadialScale({display:this.options.showScale,fontStyle:this.options.scaleFontStyle,fontSize:this.options.scaleFontSize,fontFamily:this.options.scaleFontFamily,fontColor:this.options.scaleFontColor,showLabels:this.options.scaleShowLabels,showLabelBackdrop:this.options.scaleShowLabelBackdrop,backdropColor:this.options.scaleBackdropColor,backdropPaddingY:this.options.scaleBackdropPaddingY,backdropPaddingX:this.options.scaleBackdropPaddingX,lineWidth:this.options.scaleShowLine?this.options.scaleLineWidth:0,lineColor:this.options.scaleLineColor,lineArc:!0,width:this.chart.width,height:this.chart.height,xCenter:this.chart.width/2,yCenter:this.chart.height/2,ctx:this.chart.ctx,templateString:this.options.scaleLabel,valuesCount:t.length}),this.updateScaleRange(t),this.scale.update(),e.each(t,function(t,i){this.addData(t,i,!0)},this),this.options.showTooltips&&e.bindEvents(this,this.options.tooltipEvents,function(t){var i="mouseout"!==t.type?this.getSegmentsAtEvent(t):[];e.each(this.segments,function(t){t.restore(["fillColor"])}),e.each(i,function(t){t.fillColor=t.highlightColor}),this.showTooltip(i)}),this.render()},getSegmentsAtEvent:function(t){var i=[],s=e.getRelativePosition(t);return e.each(this.segments,function(t){t.inRange(s.x,s.y)&&i.push(t)},this),i},addData:function(t,i,e){var s=i||this.segments.length;this.segments.splice(s,0,new this.SegmentArc({fillColor:t.color,highlightColor:t.highlight||t.color,label:t.label,value:t.value,outerRadius:this.options.animateScale?0:this.scale.calculateCenterOffset(t.value),circumference:this.options.animateRotate?0:this.scale.getCircumference(),startAngle:1.5*Math.PI})),e||(this.reflow(),this.update())},removeData:function(t){var i=e.isNumber(t)?t:this.segments.length-1;this.segments.splice(i,1),this.reflow(),this.update()},calculateTotal:function(t){this.total=0,e.each(t,function(t){this.total+=t.value},this),this.scale.valuesCount=this.segments.length},updateScaleRange:function(t){var i=[];e.each(t,function(t){i.push(t.value)});var s=this.options.scaleOverride?{steps:this.options.scaleSteps,stepValue:this.options.scaleStepWidth,min:this.options.scaleStartValue,max:this.options.scaleStartValue+this.options.scaleSteps*this.options.scaleStepWidth}:e.calculateScaleRange(i,e.min([this.chart.width,this.chart.height])/2,this.options.scaleFontSize,this.options.scaleBeginAtZero,this.options.scaleIntegersOnly);e.extend(this.scale,s,{size:e.min([this.chart.width,this.chart.height]),xCenter:this.chart.width/2,yCenter:this.chart.height/2})},update:function(){this.calculateTotal(this.segments),e.each(this.segments,function(t){t.save()}),this.render()},reflow:function(){e.extend(this.SegmentArc.prototype,{x:this.chart.width/2,y:this.chart.height/2}),this.updateScaleRange(this.segments),this.scale.update(),e.extend(this.scale,{xCenter:this.chart.width/2,yCenter:this.chart.height/2}),e.each(this.segments,function(t){t.update({outerRadius:this.scale.calculateCenterOffset(t.value)})},this)},draw:function(t){var i=t||1;this.clear(),e.each(this.segments,function(t,e){t.transition({circumference:this.scale.getCircumference(),outerRadius:this.scale.calculateCenterOffset(t.value)},i),t.endAngle=t.startAngle+t.circumference,0===e&&(t.startAngle=1.5*Math.PI),e<this.segments.length-1&&(this.segments[e+1].startAngle=t.endAngle),t.draw()},this),this.scale.draw()}})}.call(this),function(){"use strict";var t=this,i=t.Chart,e=i.helpers;i.Type.extend({name:"Radar",defaults:{scaleShowLine:!0,angleShowLineOut:!0,scaleShowLabels:!1,scaleBeginAtZero:!0,angleLineColor:"rgba(0,0,0,.1)",angleLineWidth:1,pointLabelFontFamily:"'Arial'",pointLabelFontStyle:"normal",pointLabelFontSize:10,pointLabelFontColor:"#666",pointDot:!0,pointDotRadius:3,pointDotStrokeWidth:1,pointHitDetectionRadius:20,datasetStroke:!0,datasetStrokeWidth:2,datasetFill:!0,legendTemplate:'<ul class="<%=name.toLowerCase()%>-legend"><% for (var i=0; i<datasets.length; i++){%><li><span style="background-color:<%=datasets[i].strokeColor%>"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>'},initialize:function(t){this.PointClass=i.Point.extend({strokeWidth:this.options.pointDotStrokeWidth,radius:this.options.pointDotRadius,display:this.options.pointDot,hitDetectionRadius:this.options.pointHitDetectionRadius,ctx:this.chart.ctx}),this.datasets=[],this.buildScale(t),this.options.showTooltips&&e.bindEvents(this,this.options.tooltipEvents,function(t){var i="mouseout"!==t.type?this.getPointsAtEvent(t):[];this.eachPoints(function(t){t.restore(["fillColor","strokeColor"])}),e.each(i,function(t){t.fillColor=t.highlightFill,t.strokeColor=t.highlightStroke}),this.showTooltip(i)}),e.each(t.datasets,function(i){var s={label:i.label||null,fillColor:i.fillColor,strokeColor:i.strokeColor,pointColor:i.pointColor,pointStrokeColor:i.pointStrokeColor,points:[]};this.datasets.push(s),e.each(i.data,function(e,n){var o;this.scale.animation||(o=this.scale.getPointPosition(n,this.scale.calculateCenterOffset(e))),s.points.push(new this.PointClass({value:e,label:t.labels[n],datasetLabel:i.label,x:this.options.animation?this.scale.xCenter:o.x,y:this.options.animation?this.scale.yCenter:o.y,strokeColor:i.pointStrokeColor,fillColor:i.pointColor,highlightFill:i.pointHighlightFill||i.pointColor,highlightStroke:i.pointHighlightStroke||i.pointStrokeColor}))},this)},this),this.render()},eachPoints:function(t){e.each(this.datasets,function(i){e.each(i.points,t,this)},this)},getPointsAtEvent:function(t){var i=e.getRelativePosition(t),s=e.getAngleFromPoint({x:this.scale.xCenter,y:this.scale.yCenter},i),n=2*Math.PI/this.scale.valuesCount,o=Math.round((s.angle-1.5*Math.PI)/n),a=[];return(o>=this.scale.valuesCount||0>o)&&(o=0),s.distance<=this.scale.drawingArea&&e.each(this.datasets,function(t){a.push(t.points[o])}),a},buildScale:function(t){this.scale=new i.RadialScale({display:this.options.showScale,fontStyle:this.options.scaleFontStyle,fontSize:this.options.scaleFontSize,fontFamily:this.options.scaleFontFamily,fontColor:this.options.scaleFontColor,showLabels:this.options.scaleShowLabels,showLabelBackdrop:this.options.scaleShowLabelBackdrop,backdropColor:this.options.scaleBackdropColor,backdropPaddingY:this.options.scaleBackdropPaddingY,backdropPaddingX:this.options.scaleBackdropPaddingX,lineWidth:this.options.scaleShowLine?this.options.scaleLineWidth:0,lineColor:this.options.scaleLineColor,angleLineColor:this.options.angleLineColor,angleLineWidth:this.options.angleShowLineOut?this.options.angleLineWidth:0,pointLabelFontColor:this.options.pointLabelFontColor,pointLabelFontSize:this.options.pointLabelFontSize,pointLabelFontFamily:this.options.pointLabelFontFamily,pointLabelFontStyle:this.options.pointLabelFontStyle,height:this.chart.height,width:this.chart.width,xCenter:this.chart.width/2,yCenter:this.chart.height/2,ctx:this.chart.ctx,templateString:this.options.scaleLabel,labels:t.labels,valuesCount:t.datasets[0].data.length}),this.scale.setScaleSize(),this.updateScaleRange(t.datasets),this.scale.buildYLabels()},updateScaleRange:function(t){var i=function(){var i=[];return e.each(t,function(t){t.data?i=i.concat(t.data):e.each(t.points,function(t){i.push(t.value)})}),i}(),s=this.options.scaleOverride?{steps:this.options.scaleSteps,stepValue:this.options.scaleStepWidth,min:this.options.scaleStartValue,max:this.options.scaleStartValue+this.options.scaleSteps*this.options.scaleStepWidth}:e.calculateScaleRange(i,e.min([this.chart.width,this.chart.height])/2,this.options.scaleFontSize,this.options.scaleBeginAtZero,this.options.scaleIntegersOnly);e.extend(this.scale,s)},addData:function(t,i){this.scale.valuesCount++,e.each(t,function(t,e){var s=this.scale.getPointPosition(this.scale.valuesCount,this.scale.calculateCenterOffset(t));this.datasets[e].points.push(new this.PointClass({value:t,label:i,x:s.x,y:s.y,strokeColor:this.datasets[e].pointStrokeColor,fillColor:this.datasets[e].pointColor}))},this),this.scale.labels.push(i),this.reflow(),this.update()},removeData:function(){this.scale.valuesCount--,this.scale.labels.shift(),e.each(this.datasets,function(t){t.points.shift()},this),this.reflow(),this.update()},update:function(){this.eachPoints(function(t){t.save()}),this.reflow(),this.render()},reflow:function(){e.extend(this.scale,{width:this.chart.width,height:this.chart.height,size:e.min([this.chart.width,this.chart.height]),xCenter:this.chart.width/2,yCenter:this.chart.height/2}),this.updateScaleRange(this.datasets),this.scale.setScaleSize(),this.scale.buildYLabels()},draw:function(t){var i=t||1,s=this.chart.ctx;this.clear(),this.scale.draw(),e.each(this.datasets,function(t){e.each(t.points,function(t,e){t.hasValue()&&t.transition(this.scale.getPointPosition(e,this.scale.calculateCenterOffset(t.value)),i)},this),s.lineWidth=this.options.datasetStrokeWidth,s.strokeStyle=t.strokeColor,s.beginPath(),e.each(t.points,function(t,i){0===i?s.moveTo(t.x,t.y):s.lineTo(t.x,t.y)},this),s.closePath(),s.stroke(),s.fillStyle=t.fillColor,s.fill(),e.each(t.points,function(t){t.hasValue()&&t.draw()})},this)}})}.call(this); \ No newline at end of file diff --git a/assets/js/plugins/chosen/chosen.jquery.js b/assets/js/plugins/chosen/chosen.jquery.js deleted file mode 100644 index e7181e91..00000000 --- a/assets/js/plugins/chosen/chosen.jquery.js +++ /dev/null @@ -1,1211 +0,0 @@ -/*! - Chosen, a Select Box Enhancer for jQuery and Prototype - by Patrick Filler for Harvest, http://getharvest.com - - Version 1.1.0 - Full source at https://github.com/harvesthq/chosen - Copyright (c) 2011 Harvest http://getharvest.com - - MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md - This file is generated by `grunt build`, do not edit it by hand. - */ - -(function() { - var $, AbstractChosen, Chosen, SelectParser, _ref, - __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; - - SelectParser = (function() { - function SelectParser() { - this.options_index = 0; - this.parsed = []; - } - - SelectParser.prototype.add_node = function(child) { - if (child.nodeName.toUpperCase() === "OPTGROUP") { - return this.add_group(child); - } else { - return this.add_option(child); - } - }; - - SelectParser.prototype.add_group = function(group) { - var group_position, option, _i, _len, _ref, _results; - group_position = this.parsed.length; - this.parsed.push({ - array_index: group_position, - group: true, - label: this.escapeExpression(group.label), - children: 0, - disabled: group.disabled - }); - _ref = group.childNodes; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - option = _ref[_i]; - _results.push(this.add_option(option, group_position, group.disabled)); - } - return _results; - }; - - SelectParser.prototype.add_option = function(option, group_position, group_disabled) { - if (option.nodeName.toUpperCase() === "OPTION") { - if (option.text !== "") { - if (group_position != null) { - this.parsed[group_position].children += 1; - } - this.parsed.push({ - array_index: this.parsed.length, - options_index: this.options_index, - value: option.value, - text: option.text, - html: option.innerHTML, - selected: option.selected, - disabled: group_disabled === true ? group_disabled : option.disabled, - group_array_index: group_position, - classes: option.className, - style: option.style.cssText - }); - } else { - this.parsed.push({ - array_index: this.parsed.length, - options_index: this.options_index, - empty: true - }); - } - return this.options_index += 1; - } - }; - - SelectParser.prototype.escapeExpression = function(text) { - var map, unsafe_chars; - if ((text == null) || text === false) { - return ""; - } - if (!/[\&\<\>\"\'\`]/.test(text)) { - return text; - } - map = { - "<": "&lt;", - ">": "&gt;", - '"': "&quot;", - "'": "&#x27;", - "`": "&#x60;" - }; - unsafe_chars = /&(?!\w+;)|[\<\>\"\'\`]/g; - return text.replace(unsafe_chars, function(chr) { - return map[chr] || "&amp;"; - }); - }; - - return SelectParser; - - })(); - - SelectParser.select_to_array = function(select) { - var child, parser, _i, _len, _ref; - parser = new SelectParser(); - _ref = select.childNodes; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - child = _ref[_i]; - parser.add_node(child); - } - return parser.parsed; - }; - - AbstractChosen = (function() { - function AbstractChosen(form_field, options) { - this.form_field = form_field; - this.options = options != null ? options : {}; - if (!AbstractChosen.browser_is_supported()) { - return; - } - this.is_multiple = this.form_field.multiple; - this.set_default_text(); - this.set_default_values(); - this.setup(); - this.set_up_html(); - this.register_observers(); - } - - AbstractChosen.prototype.set_default_values = function() { - var _this = this; - this.click_test_action = function(evt) { - return _this.test_active_click(evt); - }; - this.activate_action = function(evt) { - return _this.activate_field(evt); - }; - this.active_field = false; - this.mouse_on_container = false; - this.results_showing = false; - this.result_highlighted = null; - this.allow_single_deselect = (this.options.allow_single_deselect != null) && (this.form_field.options[0] != null) && this.form_field.options[0].text === "" ? this.options.allow_single_deselect : false; - this.disable_search_threshold = this.options.disable_search_threshold || 0; - this.disable_search = this.options.disable_search || false; - this.enable_split_word_search = this.options.enable_split_word_search != null ? this.options.enable_split_word_search : true; - this.group_search = this.options.group_search != null ? this.options.group_search : true; - this.search_contains = this.options.search_contains || false; - this.single_backstroke_delete = this.options.single_backstroke_delete != null ? this.options.single_backstroke_delete : true; - this.max_selected_options = this.options.max_selected_options || Infinity; - this.inherit_select_classes = this.options.inherit_select_classes || false; - this.display_selected_options = this.options.display_selected_options != null ? this.options.display_selected_options : true; - return this.display_disabled_options = this.options.display_disabled_options != null ? this.options.display_disabled_options : true; - }; - - AbstractChosen.prototype.set_default_text = function() { - if (this.form_field.getAttribute("data-placeholder")) { - this.default_text = this.form_field.getAttribute("data-placeholder"); - } else if (this.is_multiple) { - this.default_text = this.options.placeholder_text_multiple || this.options.placeholder_text || AbstractChosen.default_multiple_text; - } else { - this.default_text = this.options.placeholder_text_single || this.options.placeholder_text || AbstractChosen.default_single_text; - } - return this.results_none_found = this.form_field.getAttribute("data-no_results_text") || this.options.no_results_text || AbstractChosen.default_no_result_text; - }; - - AbstractChosen.prototype.mouse_enter = function() { - return this.mouse_on_container = true; - }; - - AbstractChosen.prototype.mouse_leave = function() { - return this.mouse_on_container = false; - }; - - AbstractChosen.prototype.input_focus = function(evt) { - var _this = this; - if (this.is_multiple) { - if (!this.active_field) { - return setTimeout((function() { - return _this.container_mousedown(); - }), 50); - } - } else { - if (!this.active_field) { - return this.activate_field(); - } - } - }; - - AbstractChosen.prototype.input_blur = function(evt) { - var _this = this; - if (!this.mouse_on_container) { - this.active_field = false; - return setTimeout((function() { - return _this.blur_test(); - }), 100); - } - }; - - AbstractChosen.prototype.results_option_build = function(options) { - var content, data, _i, _len, _ref; - content = ''; - _ref = this.results_data; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - data = _ref[_i]; - if (data.group) { - content += this.result_add_group(data); - } else { - content += this.result_add_option(data); - } - if (options != null ? options.first : void 0) { - if (data.selected && this.is_multiple) { - this.choice_build(data); - } else if (data.selected && !this.is_multiple) { - this.single_set_selected_text(data.text); - } - } - } - return content; - }; - - AbstractChosen.prototype.result_add_option = function(option) { - var classes, option_el; - if (!option.search_match) { - return ''; - } - if (!this.include_option_in_results(option)) { - return ''; - } - classes = []; - if (!option.disabled && !(option.selected && this.is_multiple)) { - classes.push("active-result"); - } - if (option.disabled && !(option.selected && this.is_multiple)) { - classes.push("disabled-result"); - } - if (option.selected) { - classes.push("result-selected"); - } - if (option.group_array_index != null) { - classes.push("group-option"); - } - if (option.classes !== "") { - classes.push(option.classes); - } - option_el = document.createElement("li"); - option_el.className = classes.join(" "); - option_el.style.cssText = option.style; - option_el.setAttribute("data-option-array-index", option.array_index); - option_el.innerHTML = option.search_text; - return this.outerHTML(option_el); - }; - - AbstractChosen.prototype.result_add_group = function(group) { - var group_el; - if (!(group.search_match || group.group_match)) { - return ''; - } - if (!(group.active_options > 0)) { - return ''; - } - group_el = document.createElement("li"); - group_el.className = "group-result"; - group_el.innerHTML = group.search_text; - return this.outerHTML(group_el); - }; - - AbstractChosen.prototype.results_update_field = function() { - this.set_default_text(); - if (!this.is_multiple) { - this.results_reset_cleanup(); - } - this.result_clear_highlight(); - this.results_build(); - if (this.results_showing) { - return this.winnow_results(); - } - }; - - AbstractChosen.prototype.reset_single_select_options = function() { - var result, _i, _len, _ref, _results; - _ref = this.results_data; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - result = _ref[_i]; - if (result.selected) { - _results.push(result.selected = false); - } else { - _results.push(void 0); - } - } - return _results; - }; - - AbstractChosen.prototype.results_toggle = function() { - if (this.results_showing) { - return this.results_hide(); - } else { - return this.results_show(); - } - }; - - AbstractChosen.prototype.results_search = function(evt) { - if (this.results_showing) { - return this.winnow_results(); - } else { - return this.results_show(); - } - }; - - AbstractChosen.prototype.winnow_results = function() { - var escapedSearchText, option, regex, regexAnchor, results, results_group, searchText, startpos, text, zregex, _i, _len, _ref; - this.no_results_clear(); - results = 0; - searchText = this.get_search_text(); - escapedSearchText = searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); - regexAnchor = this.search_contains ? "" : "^"; - regex = new RegExp(regexAnchor + escapedSearchText, 'i'); - zregex = new RegExp(escapedSearchText, 'i'); - _ref = this.results_data; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - option = _ref[_i]; - option.search_match = false; - results_group = null; - if (this.include_option_in_results(option)) { - if (option.group) { - option.group_match = false; - option.active_options = 0; - } - if ((option.group_array_index != null) && this.results_data[option.group_array_index]) { - results_group = this.results_data[option.group_array_index]; - if (results_group.active_options === 0 && results_group.search_match) { - results += 1; - } - results_group.active_options += 1; - } - if (!(option.group && !this.group_search)) { - option.search_text = option.group ? option.label : option.html; - option.search_match = this.search_string_match(option.search_text, regex); - if (option.search_match && !option.group) { - results += 1; - } - if (option.search_match) { - if (searchText.length) { - startpos = option.search_text.search(zregex); - text = option.search_text.substr(0, startpos + searchText.length) + '</em>' + option.search_text.substr(startpos + searchText.length); - option.search_text = text.substr(0, startpos) + '<em>' + text.substr(startpos); - } - if (results_group != null) { - results_group.group_match = true; - } - } else if ((option.group_array_index != null) && this.results_data[option.group_array_index].search_match) { - option.search_match = true; - } - } - } - } - this.result_clear_highlight(); - if (results < 1 && searchText.length) { - this.update_results_content(""); - return this.no_results(searchText); - } else { - this.update_results_content(this.results_option_build()); - return this.winnow_results_set_highlight(); - } - }; - - AbstractChosen.prototype.search_string_match = function(search_string, regex) { - var part, parts, _i, _len; - if (regex.test(search_string)) { - return true; - } else if (this.enable_split_word_search && (search_string.indexOf(" ") >= 0 || search_string.indexOf("[") === 0)) { - parts = search_string.replace(/\[|\]/g, "").split(" "); - if (parts.length) { - for (_i = 0, _len = parts.length; _i < _len; _i++) { - part = parts[_i]; - if (regex.test(part)) { - return true; - } - } - } - } - }; - - AbstractChosen.prototype.choices_count = function() { - var option, _i, _len, _ref; - if (this.selected_option_count != null) { - return this.selected_option_count; - } - this.selected_option_count = 0; - _ref = this.form_field.options; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - option = _ref[_i]; - if (option.selected) { - this.selected_option_count += 1; - } - } - return this.selected_option_count; - }; - - AbstractChosen.prototype.choices_click = function(evt) { - evt.preventDefault(); - if (!(this.results_showing || this.is_disabled)) { - return this.results_show(); - } - }; - - AbstractChosen.prototype.keyup_checker = function(evt) { - var stroke, _ref; - stroke = (_ref = evt.which) != null ? _ref : evt.keyCode; - this.search_field_scale(); - switch (stroke) { - case 8: - if (this.is_multiple && this.backstroke_length < 1 && this.choices_count() > 0) { - return this.keydown_backstroke(); - } else if (!this.pending_backstroke) { - this.result_clear_highlight(); - return this.results_search(); - } - break; - case 13: - evt.preventDefault(); - if (this.results_showing) { - return this.result_select(evt); - } - break; - case 27: - if (this.results_showing) { - this.results_hide(); - } - return true; - case 9: - case 38: - case 40: - case 16: - case 91: - case 17: - break; - default: - return this.results_search(); - } - }; - - AbstractChosen.prototype.clipboard_event_checker = function(evt) { - var _this = this; - return setTimeout((function() { - return _this.results_search(); - }), 50); - }; - - AbstractChosen.prototype.container_width = function() { - if (this.options.width != null) { - return this.options.width; - } else { - return "" + this.form_field.offsetWidth + "px"; - } - }; - - AbstractChosen.prototype.include_option_in_results = function(option) { - if (this.is_multiple && (!this.display_selected_options && option.selected)) { - return false; - } - if (!this.display_disabled_options && option.disabled) { - return false; - } - if (option.empty) { - return false; - } - return true; - }; - - AbstractChosen.prototype.search_results_touchstart = function(evt) { - this.touch_started = true; - return this.search_results_mouseover(evt); - }; - - AbstractChosen.prototype.search_results_touchmove = function(evt) { - this.touch_started = false; - return this.search_results_mouseout(evt); - }; - - AbstractChosen.prototype.search_results_touchend = function(evt) { - if (this.touch_started) { - return this.search_results_mouseup(evt); - } - }; - - AbstractChosen.prototype.outerHTML = function(element) { - var tmp; - if (element.outerHTML) { - return element.outerHTML; - } - tmp = document.createElement("div"); - tmp.appendChild(element); - return tmp.innerHTML; - }; - - AbstractChosen.browser_is_supported = function() { - if (window.navigator.appName === "Microsoft Internet Explorer") { - return document.documentMode >= 8; - } - if (/iP(od|hone)/i.test(window.navigator.userAgent)) { - return false; - } - if (/Android/i.test(window.navigator.userAgent)) { - if (/Mobile/i.test(window.navigator.userAgent)) { - return false; - } - } - return true; - }; - - AbstractChosen.default_multiple_text = "Select Some Options"; - - AbstractChosen.default_single_text = "Select an Option"; - - AbstractChosen.default_no_result_text = "No results match"; - - return AbstractChosen; - - })(); - - $ = jQuery; - - $.fn.extend({ - chosen: function(options) { - if (!AbstractChosen.browser_is_supported()) { - return this; - } - return this.each(function(input_field) { - var $this, chosen; - $this = $(this); - chosen = $this.data('chosen'); - if (options === 'destroy' && chosen) { - chosen.destroy(); - } else if (!chosen) { - $this.data('chosen', new Chosen(this, options)); - } - }); - } - }); - - Chosen = (function(_super) { - __extends(Chosen, _super); - - function Chosen() { - _ref = Chosen.__super__.constructor.apply(this, arguments); - return _ref; - } - - Chosen.prototype.setup = function() { - this.form_field_jq = $(this.form_field); - this.current_selectedIndex = this.form_field.selectedIndex; - return this.is_rtl = this.form_field_jq.hasClass("chosen-rtl"); - }; - - Chosen.prototype.set_up_html = function() { - var container_classes, container_props; - container_classes = ["chosen-container"]; - container_classes.push("chosen-container-" + (this.is_multiple ? "multi" : "single")); - if (this.inherit_select_classes && this.form_field.className) { - container_classes.push(this.form_field.className); - } - if (this.is_rtl) { - container_classes.push("chosen-rtl"); - } - container_props = { - 'class': container_classes.join(' '), - 'style': "width: " + (this.container_width()) + ";", - 'title': this.form_field.title - }; - if (this.form_field.id.length) { - container_props.id = this.form_field.id.replace(/[^\w]/g, '_') + "_chosen"; - } - this.container = $("<div />", container_props); - if (this.is_multiple) { - this.container.html('<ul class="chosen-choices"><li class="search-field"><input type="text" value="' + this.default_text + '" class="default" autocomplete="off" style="width:25px;" /></li></ul><div class="chosen-drop"><ul class="chosen-results"></ul></div>'); - } else { - this.container.html('<a class="chosen-single chosen-default" tabindex="-1"><span>' + this.default_text + '</span><div><b></b></div></a><div class="chosen-drop"><div class="chosen-search"><input type="text" autocomplete="off" /></div><ul class="chosen-results"></ul></div>'); - } - this.form_field_jq.hide().after(this.container); - this.dropdown = this.container.find('div.chosen-drop').first(); - this.search_field = this.container.find('input').first(); - this.search_results = this.container.find('ul.chosen-results').first(); - this.search_field_scale(); - this.search_no_results = this.container.find('li.no-results').first(); - if (this.is_multiple) { - this.search_choices = this.container.find('ul.chosen-choices').first(); - this.search_container = this.container.find('li.search-field').first(); - } else { - this.search_container = this.container.find('div.chosen-search').first(); - this.selected_item = this.container.find('.chosen-single').first(); - } - this.results_build(); - this.set_tab_index(); - this.set_label_behavior(); - return this.form_field_jq.trigger("chosen:ready", { - chosen: this - }); - }; - - Chosen.prototype.register_observers = function() { - var _this = this; - this.container.bind('mousedown.chosen', function(evt) { - _this.container_mousedown(evt); - }); - this.container.bind('mouseup.chosen', function(evt) { - _this.container_mouseup(evt); - }); - this.container.bind('mouseenter.chosen', function(evt) { - _this.mouse_enter(evt); - }); - this.container.bind('mouseleave.chosen', function(evt) { - _this.mouse_leave(evt); - }); - this.search_results.bind('mouseup.chosen', function(evt) { - _this.search_results_mouseup(evt); - }); - this.search_results.bind('mouseover.chosen', function(evt) { - _this.search_results_mouseover(evt); - }); - this.search_results.bind('mouseout.chosen', function(evt) { - _this.search_results_mouseout(evt); - }); - this.search_results.bind('mousewheel.chosen DOMMouseScroll.chosen', function(evt) { - _this.search_results_mousewheel(evt); - }); - this.search_results.bind('touchstart.chosen', function(evt) { - _this.search_results_touchstart(evt); - }); - this.search_results.bind('touchmove.chosen', function(evt) { - _this.search_results_touchmove(evt); - }); - this.search_results.bind('touchend.chosen', function(evt) { - _this.search_results_touchend(evt); - }); - this.form_field_jq.bind("chosen:updated.chosen", function(evt) { - _this.results_update_field(evt); - }); - this.form_field_jq.bind("chosen:activate.chosen", function(evt) { - _this.activate_field(evt); - }); - this.form_field_jq.bind("chosen:open.chosen", function(evt) { - _this.container_mousedown(evt); - }); - this.form_field_jq.bind("chosen:close.chosen", function(evt) { - _this.input_blur(evt); - }); - this.search_field.bind('blur.chosen', function(evt) { - _this.input_blur(evt); - }); - this.search_field.bind('keyup.chosen', function(evt) { - _this.keyup_checker(evt); - }); - this.search_field.bind('keydown.chosen', function(evt) { - _this.keydown_checker(evt); - }); - this.search_field.bind('focus.chosen', function(evt) { - _this.input_focus(evt); - }); - this.search_field.bind('cut.chosen', function(evt) { - _this.clipboard_event_checker(evt); - }); - this.search_field.bind('paste.chosen', function(evt) { - _this.clipboard_event_checker(evt); - }); - if (this.is_multiple) { - return this.search_choices.bind('click.chosen', function(evt) { - _this.choices_click(evt); - }); - } else { - return this.container.bind('click.chosen', function(evt) { - evt.preventDefault(); - }); - } - }; - - Chosen.prototype.destroy = function() { - $(this.container[0].ownerDocument).unbind("click.chosen", this.click_test_action); - if (this.search_field[0].tabIndex) { - this.form_field_jq[0].tabIndex = this.search_field[0].tabIndex; - } - this.container.remove(); - this.form_field_jq.removeData('chosen'); - return this.form_field_jq.show(); - }; - - Chosen.prototype.search_field_disabled = function() { - this.is_disabled = this.form_field_jq[0].disabled; - if (this.is_disabled) { - this.container.addClass('chosen-disabled'); - this.search_field[0].disabled = true; - if (!this.is_multiple) { - this.selected_item.unbind("focus.chosen", this.activate_action); - } - return this.close_field(); - } else { - this.container.removeClass('chosen-disabled'); - this.search_field[0].disabled = false; - if (!this.is_multiple) { - return this.selected_item.bind("focus.chosen", this.activate_action); - } - } - }; - - Chosen.prototype.container_mousedown = function(evt) { - if (!this.is_disabled) { - if (evt && evt.type === "mousedown" && !this.results_showing) { - evt.preventDefault(); - } - if (!((evt != null) && ($(evt.target)).hasClass("search-choice-close"))) { - if (!this.active_field) { - if (this.is_multiple) { - this.search_field.val(""); - } - $(this.container[0].ownerDocument).bind('click.chosen', this.click_test_action); - this.results_show(); - } else if (!this.is_multiple && evt && (($(evt.target)[0] === this.selected_item[0]) || $(evt.target).parents("a.chosen-single").length)) { - evt.preventDefault(); - this.results_toggle(); - } - return this.activate_field(); - } - } - }; - - Chosen.prototype.container_mouseup = function(evt) { - if (evt.target.nodeName === "ABBR" && !this.is_disabled) { - return this.results_reset(evt); - } - }; - - Chosen.prototype.search_results_mousewheel = function(evt) { - var delta; - if (evt.originalEvent) { - delta = -evt.originalEvent.wheelDelta || evt.originalEvent.detail; - } - if (delta != null) { - evt.preventDefault(); - if (evt.type === 'DOMMouseScroll') { - delta = delta * 40; - } - return this.search_results.scrollTop(delta + this.search_results.scrollTop()); - } - }; - - Chosen.prototype.blur_test = function(evt) { - if (!this.active_field && this.container.hasClass("chosen-container-active")) { - return this.close_field(); - } - }; - - Chosen.prototype.close_field = function() { - $(this.container[0].ownerDocument).unbind("click.chosen", this.click_test_action); - this.active_field = false; - this.results_hide(); - this.container.removeClass("chosen-container-active"); - this.clear_backstroke(); - this.show_search_field_default(); - return this.search_field_scale(); - }; - - Chosen.prototype.activate_field = function() { - this.container.addClass("chosen-container-active"); - this.active_field = true; - this.search_field.val(this.search_field.val()); - return this.search_field.focus(); - }; - - Chosen.prototype.test_active_click = function(evt) { - var active_container; - active_container = $(evt.target).closest('.chosen-container'); - if (active_container.length && this.container[0] === active_container[0]) { - return this.active_field = true; - } else { - return this.close_field(); - } - }; - - Chosen.prototype.results_build = function() { - this.parsing = true; - this.selected_option_count = null; - this.results_data = SelectParser.select_to_array(this.form_field); - if (this.is_multiple) { - this.search_choices.find("li.search-choice").remove(); - } else if (!this.is_multiple) { - this.single_set_selected_text(); - if (this.disable_search || this.form_field.options.length <= this.disable_search_threshold) { - this.search_field[0].readOnly = true; - this.container.addClass("chosen-container-single-nosearch"); - } else { - this.search_field[0].readOnly = false; - this.container.removeClass("chosen-container-single-nosearch"); - } - } - this.update_results_content(this.results_option_build({ - first: true - })); - this.search_field_disabled(); - this.show_search_field_default(); - this.search_field_scale(); - return this.parsing = false; - }; - - Chosen.prototype.result_do_highlight = function(el) { - var high_bottom, high_top, maxHeight, visible_bottom, visible_top; - if (el.length) { - this.result_clear_highlight(); - this.result_highlight = el; - this.result_highlight.addClass("highlighted"); - maxHeight = parseInt(this.search_results.css("maxHeight"), 10); - visible_top = this.search_results.scrollTop(); - visible_bottom = maxHeight + visible_top; - high_top = this.result_highlight.position().top + this.search_results.scrollTop(); - high_bottom = high_top + this.result_highlight.outerHeight(); - if (high_bottom >= visible_bottom) { - return this.search_results.scrollTop((high_bottom - maxHeight) > 0 ? high_bottom - maxHeight : 0); - } else if (high_top < visible_top) { - return this.search_results.scrollTop(high_top); - } - } - }; - - Chosen.prototype.result_clear_highlight = function() { - if (this.result_highlight) { - this.result_highlight.removeClass("highlighted"); - } - return this.result_highlight = null; - }; - - Chosen.prototype.results_show = function() { - if (this.is_multiple && this.max_selected_options <= this.choices_count()) { - this.form_field_jq.trigger("chosen:maxselected", { - chosen: this - }); - return false; - } - this.container.addClass("chosen-with-drop"); - this.results_showing = true; - this.search_field.focus(); - this.search_field.val(this.search_field.val()); - this.winnow_results(); - return this.form_field_jq.trigger("chosen:showing_dropdown", { - chosen: this - }); - }; - - Chosen.prototype.update_results_content = function(content) { - return this.search_results.html(content); - }; - - Chosen.prototype.results_hide = function() { - if (this.results_showing) { - this.result_clear_highlight(); - this.container.removeClass("chosen-with-drop"); - this.form_field_jq.trigger("chosen:hiding_dropdown", { - chosen: this - }); - } - return this.results_showing = false; - }; - - Chosen.prototype.set_tab_index = function(el) { - var ti; - if (this.form_field.tabIndex) { - ti = this.form_field.tabIndex; - this.form_field.tabIndex = -1; - return this.search_field[0].tabIndex = ti; - } - }; - - Chosen.prototype.set_label_behavior = function() { - var _this = this; - this.form_field_label = this.form_field_jq.parents("label"); - if (!this.form_field_label.length && this.form_field.id.length) { - this.form_field_label = $("label[for='" + this.form_field.id + "']"); - } - if (this.form_field_label.length > 0) { - return this.form_field_label.bind('click.chosen', function(evt) { - if (_this.is_multiple) { - return _this.container_mousedown(evt); - } else { - return _this.activate_field(); - } - }); - } - }; - - Chosen.prototype.show_search_field_default = function() { - if (this.is_multiple && this.choices_count() < 1 && !this.active_field) { - this.search_field.val(this.default_text); - return this.search_field.addClass("default"); - } else { - this.search_field.val(""); - return this.search_field.removeClass("default"); - } - }; - - Chosen.prototype.search_results_mouseup = function(evt) { - var target; - target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first(); - if (target.length) { - this.result_highlight = target; - this.result_select(evt); - return this.search_field.focus(); - } - }; - - Chosen.prototype.search_results_mouseover = function(evt) { - var target; - target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first(); - if (target) { - return this.result_do_highlight(target); - } - }; - - Chosen.prototype.search_results_mouseout = function(evt) { - if ($(evt.target).hasClass("active-result" || $(evt.target).parents('.active-result').first())) { - return this.result_clear_highlight(); - } - }; - - Chosen.prototype.choice_build = function(item) { - var choice, close_link, - _this = this; - choice = $('<li />', { - "class": "search-choice" - }).html("<span>" + item.html + "</span>"); - if (item.disabled) { - choice.addClass('search-choice-disabled'); - } else { - close_link = $('<a />', { - "class": 'search-choice-close', - 'data-option-array-index': item.array_index - }); - close_link.bind('click.chosen', function(evt) { - return _this.choice_destroy_link_click(evt); - }); - choice.append(close_link); - } - return this.search_container.before(choice); - }; - - Chosen.prototype.choice_destroy_link_click = function(evt) { - evt.preventDefault(); - evt.stopPropagation(); - if (!this.is_disabled) { - return this.choice_destroy($(evt.target)); - } - }; - - Chosen.prototype.choice_destroy = function(link) { - if (this.result_deselect(link[0].getAttribute("data-option-array-index"))) { - this.show_search_field_default(); - if (this.is_multiple && this.choices_count() > 0 && this.search_field.val().length < 1) { - this.results_hide(); - } - link.parents('li').first().remove(); - return this.search_field_scale(); - } - }; - - Chosen.prototype.results_reset = function() { - this.reset_single_select_options(); - this.form_field.options[0].selected = true; - this.single_set_selected_text(); - this.show_search_field_default(); - this.results_reset_cleanup(); - this.form_field_jq.trigger("change"); - if (this.active_field) { - return this.results_hide(); - } - }; - - Chosen.prototype.results_reset_cleanup = function() { - this.current_selectedIndex = this.form_field.selectedIndex; - return this.selected_item.find("abbr").remove(); - }; - - Chosen.prototype.result_select = function(evt) { - var high, item; - if (this.result_highlight) { - high = this.result_highlight; - this.result_clear_highlight(); - if (this.is_multiple && this.max_selected_options <= this.choices_count()) { - this.form_field_jq.trigger("chosen:maxselected", { - chosen: this - }); - return false; - } - if (this.is_multiple) { - high.removeClass("active-result"); - } else { - this.reset_single_select_options(); - } - item = this.results_data[high[0].getAttribute("data-option-array-index")]; - item.selected = true; - this.form_field.options[item.options_index].selected = true; - this.selected_option_count = null; - if (this.is_multiple) { - this.choice_build(item); - } else { - this.single_set_selected_text(item.text); - } - if (!((evt.metaKey || evt.ctrlKey) && this.is_multiple)) { - this.results_hide(); - } - this.search_field.val(""); - if (this.is_multiple || this.form_field.selectedIndex !== this.current_selectedIndex) { - this.form_field_jq.trigger("change", { - 'selected': this.form_field.options[item.options_index].value - }); - } - this.current_selectedIndex = this.form_field.selectedIndex; - return this.search_field_scale(); - } - }; - - Chosen.prototype.single_set_selected_text = function(text) { - if (text == null) { - text = this.default_text; - } - if (text === this.default_text) { - this.selected_item.addClass("chosen-default"); - } else { - this.single_deselect_control_build(); - this.selected_item.removeClass("chosen-default"); - } - return this.selected_item.find("span").text(text); - }; - - Chosen.prototype.result_deselect = function(pos) { - var result_data; - result_data = this.results_data[pos]; - if (!this.form_field.options[result_data.options_index].disabled) { - result_data.selected = false; - this.form_field.options[result_data.options_index].selected = false; - this.selected_option_count = null; - this.result_clear_highlight(); - if (this.results_showing) { - this.winnow_results(); - } - this.form_field_jq.trigger("change", { - deselected: this.form_field.options[result_data.options_index].value - }); - this.search_field_scale(); - return true; - } else { - return false; - } - }; - - Chosen.prototype.single_deselect_control_build = function() { - if (!this.allow_single_deselect) { - return; - } - if (!this.selected_item.find("abbr").length) { - this.selected_item.find("span").first().after("<abbr class=\"search-choice-close\"></abbr>"); - } - return this.selected_item.addClass("chosen-single-with-deselect"); - }; - - Chosen.prototype.get_search_text = function() { - if (this.search_field.val() === this.default_text) { - return ""; - } else { - return $('<div/>').text($.trim(this.search_field.val())).html(); - } - }; - - Chosen.prototype.winnow_results_set_highlight = function() { - var do_high, selected_results; - selected_results = !this.is_multiple ? this.search_results.find(".result-selected.active-result") : []; - do_high = selected_results.length ? selected_results.first() : this.search_results.find(".active-result").first(); - if (do_high != null) { - return this.result_do_highlight(do_high); - } - }; - - Chosen.prototype.no_results = function(terms) { - var no_results_html; - no_results_html = $('<li class="no-results">' + this.results_none_found + ' "<span></span>"</li>'); - no_results_html.find("span").first().html(terms); - this.search_results.append(no_results_html); - return this.form_field_jq.trigger("chosen:no_results", { - chosen: this - }); - }; - - Chosen.prototype.no_results_clear = function() { - return this.search_results.find(".no-results").remove(); - }; - - Chosen.prototype.keydown_arrow = function() { - var next_sib; - if (this.results_showing && this.result_highlight) { - next_sib = this.result_highlight.nextAll("li.active-result").first(); - if (next_sib) { - return this.result_do_highlight(next_sib); - } - } else { - return this.results_show(); - } - }; - - Chosen.prototype.keyup_arrow = function() { - var prev_sibs; - if (!this.results_showing && !this.is_multiple) { - return this.results_show(); - } else if (this.result_highlight) { - prev_sibs = this.result_highlight.prevAll("li.active-result"); - if (prev_sibs.length) { - return this.result_do_highlight(prev_sibs.first()); - } else { - if (this.choices_count() > 0) { - this.results_hide(); - } - return this.result_clear_highlight(); - } - } - }; - - Chosen.prototype.keydown_backstroke = function() { - var next_available_destroy; - if (this.pending_backstroke) { - this.choice_destroy(this.pending_backstroke.find("a").first()); - return this.clear_backstroke(); - } else { - next_available_destroy = this.search_container.siblings("li.search-choice").last(); - if (next_available_destroy.length && !next_available_destroy.hasClass("search-choice-disabled")) { - this.pending_backstroke = next_available_destroy; - if (this.single_backstroke_delete) { - return this.keydown_backstroke(); - } else { - return this.pending_backstroke.addClass("search-choice-focus"); - } - } - } - }; - - Chosen.prototype.clear_backstroke = function() { - if (this.pending_backstroke) { - this.pending_backstroke.removeClass("search-choice-focus"); - } - return this.pending_backstroke = null; - }; - - Chosen.prototype.keydown_checker = function(evt) { - var stroke, _ref1; - stroke = (_ref1 = evt.which) != null ? _ref1 : evt.keyCode; - this.search_field_scale(); - if (stroke !== 8 && this.pending_backstroke) { - this.clear_backstroke(); - } - switch (stroke) { - case 8: - this.backstroke_length = this.search_field.val().length; - break; - case 9: - if (this.results_showing && !this.is_multiple) { - this.result_select(evt); - } - this.mouse_on_container = false; - break; - case 13: - evt.preventDefault(); - break; - case 38: - evt.preventDefault(); - this.keyup_arrow(); - break; - case 40: - evt.preventDefault(); - this.keydown_arrow(); - break; - } - }; - - Chosen.prototype.search_field_scale = function() { - var div, f_width, h, style, style_block, styles, w, _i, _len; - if (this.is_multiple) { - h = 0; - w = 0; - style_block = "position:absolute; left: -1000px; top: -1000px; display:none;"; - styles = ['font-size', 'font-style', 'font-weight', 'font-family', 'line-height', 'text-transform', 'letter-spacing']; - for (_i = 0, _len = styles.length; _i < _len; _i++) { - style = styles[_i]; - style_block += style + ":" + this.search_field.css(style) + ";"; - } - div = $('<div />', { - 'style': style_block - }); - div.text(this.search_field.val()); - $('body').append(div); - w = div.width() + 25; - div.remove(); - f_width = this.container.outerWidth(); - if (w > f_width - 10) { - w = f_width - 10; - } - return this.search_field.css({ - 'width': w + 'px' - }); - } - }; - - return Chosen; - - })(AbstractChosen); - -}).call(this); diff --git a/assets/js/plugins/codemirror/codemirror.js b/assets/js/plugins/codemirror/codemirror.js deleted file mode 100644 index 4f8a23bd..00000000 --- a/assets/js/plugins/codemirror/codemirror.js +++ /dev/null @@ -1,7830 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// This is CodeMirror (http://codemirror.net), a code editor -// implemented in JavaScript on top of the browser's DOM. -// -// You can find some technical background for some of the code below -// at http://marijnhaverbeke.nl/blog/#cm-internals . - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - module.exports = mod(); - else if (typeof define == "function" && define.amd) // AMD - return define([], mod); - else // Plain browser env - this.CodeMirror = mod(); -})(function() { - "use strict"; - - // BROWSER SNIFFING - - // Kludges for bugs and behavior differences that can't be feature - // detected are enabled based on userAgent etc sniffing. - - var gecko = /gecko\/\d/i.test(navigator.userAgent); - // ie_uptoN means Internet Explorer version N or lower - var ie_upto10 = /MSIE \d/.test(navigator.userAgent); - var ie_11up = /Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent); - var ie = ie_upto10 || ie_11up; - var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : ie_11up[1]); - var webkit = /WebKit\//.test(navigator.userAgent); - var qtwebkit = webkit && /Qt\/\d+\.\d+/.test(navigator.userAgent); - var chrome = /Chrome\//.test(navigator.userAgent); - var presto = /Opera\//.test(navigator.userAgent); - var safari = /Apple Computer/.test(navigator.vendor); - var khtml = /KHTML\//.test(navigator.userAgent); - var mac_geMountainLion = /Mac OS X 1\d\D([8-9]|\d\d)\D/.test(navigator.userAgent); - var phantom = /PhantomJS/.test(navigator.userAgent); - - var ios = /AppleWebKit/.test(navigator.userAgent) && /Mobile\/\w+/.test(navigator.userAgent); - // This is woefully incomplete. Suggestions for alternative methods welcome. - var mobile = ios || /Android|webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(navigator.userAgent); - var mac = ios || /Mac/.test(navigator.platform); - var windows = /win/i.test(navigator.platform); - - var presto_version = presto && navigator.userAgent.match(/Version\/(\d*\.\d*)/); - if (presto_version) presto_version = Number(presto_version[1]); - if (presto_version && presto_version >= 15) { presto = false; webkit = true; } - // Some browsers use the wrong event properties to signal cmd/ctrl on OS X - var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11)); - var captureRightClick = gecko || (ie && ie_version >= 9); - - // Optimize some code when these features are not used. - var sawReadOnlySpans = false, sawCollapsedSpans = false; - - // EDITOR CONSTRUCTOR - - // A CodeMirror instance represents an editor. This is the object - // that user code is usually dealing with. - - function CodeMirror(place, options) { - if (!(this instanceof CodeMirror)) return new CodeMirror(place, options); - - this.options = options = options ? copyObj(options) : {}; - // Determine effective options based on given values and defaults. - copyObj(defaults, options, false); - setGuttersForLineNumbers(options); - - var doc = options.value; - if (typeof doc == "string") doc = new Doc(doc, options.mode); - this.doc = doc; - - var display = this.display = new Display(place, doc); - display.wrapper.CodeMirror = this; - updateGutters(this); - themeChanged(this); - if (options.lineWrapping) - this.display.wrapper.className += " CodeMirror-wrap"; - if (options.autofocus && !mobile) focusInput(this); - - this.state = { - keyMaps: [], // stores maps added by addKeyMap - overlays: [], // highlighting overlays, as added by addOverlay - modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info - overwrite: false, focused: false, - suppressEdits: false, // used to disable editing during key handlers when in readOnly mode - pasteIncoming: false, cutIncoming: false, // help recognize paste/cut edits in readInput - draggingText: false, - highlight: new Delayed() // stores highlight worker timeout - }; - - // Override magic textarea content restore that IE sometimes does - // on our hidden textarea on reload - if (ie && ie_version < 11) setTimeout(bind(resetInput, this, true), 20); - - registerEventHandlers(this); - ensureGlobalHandlers(); - - startOperation(this); - this.curOp.forceUpdate = true; - attachDoc(this, doc); - - if ((options.autofocus && !mobile) || activeElt() == display.input) - setTimeout(bind(onFocus, this), 20); - else - onBlur(this); - - for (var opt in optionHandlers) if (optionHandlers.hasOwnProperty(opt)) - optionHandlers[opt](this, options[opt], Init); - maybeUpdateLineNumberWidth(this); - for (var i = 0; i < initHooks.length; ++i) initHooks[i](this); - endOperation(this); - } - - // DISPLAY CONSTRUCTOR - - // The display handles the DOM integration, both for input reading - // and content drawing. It holds references to DOM nodes and - // display-related state. - - function Display(place, doc) { - var d = this; - - // The semihidden textarea that is focused when the editor is - // focused, and receives input. - var input = d.input = elt("textarea", null, null, "position: absolute; padding: 0; width: 1px; height: 1em; outline: none"); - // The textarea is kept positioned near the cursor to prevent the - // fact that it'll be scrolled into view on input from scrolling - // our fake cursor out of view. On webkit, when wrap=off, paste is - // very slow. So make the area wide instead. - if (webkit) input.style.width = "1000px"; - else input.setAttribute("wrap", "off"); - // If border: 0; -- iOS fails to open keyboard (issue #1287) - if (ios) input.style.border = "1px solid black"; - input.setAttribute("autocorrect", "off"); input.setAttribute("autocapitalize", "off"); input.setAttribute("spellcheck", "false"); - - // Wraps and hides input textarea - d.inputDiv = elt("div", [input], null, "overflow: hidden; position: relative; width: 3px; height: 0px;"); - // The fake scrollbar elements. - d.scrollbarH = elt("div", [elt("div", null, null, "height: 100%; min-height: 1px")], "CodeMirror-hscrollbar"); - d.scrollbarV = elt("div", [elt("div", null, null, "min-width: 1px")], "CodeMirror-vscrollbar"); - // Covers bottom-right square when both scrollbars are present. - d.scrollbarFiller = elt("div", null, "CodeMirror-scrollbar-filler"); - // Covers bottom of gutter when coverGutterNextToScrollbar is on - // and h scrollbar is present. - d.gutterFiller = elt("div", null, "CodeMirror-gutter-filler"); - // Will contain the actual code, positioned to cover the viewport. - d.lineDiv = elt("div", null, "CodeMirror-code"); - // Elements are added to these to represent selection and cursors. - d.selectionDiv = elt("div", null, null, "position: relative; z-index: 1"); - d.cursorDiv = elt("div", null, "CodeMirror-cursors"); - // A visibility: hidden element used to find the size of things. - d.measure = elt("div", null, "CodeMirror-measure"); - // When lines outside of the viewport are measured, they are drawn in this. - d.lineMeasure = elt("div", null, "CodeMirror-measure"); - // Wraps everything that needs to exist inside the vertically-padded coordinate system - d.lineSpace = elt("div", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv], - null, "position: relative; outline: none"); - // Moved around its parent to cover visible view. - d.mover = elt("div", [elt("div", [d.lineSpace], "CodeMirror-lines")], null, "position: relative"); - // Set to the height of the document, allowing scrolling. - d.sizer = elt("div", [d.mover], "CodeMirror-sizer"); - // Behavior of elts with overflow: auto and padding is - // inconsistent across browsers. This is used to ensure the - // scrollable area is big enough. - d.heightForcer = elt("div", null, null, "position: absolute; height: " + scrollerCutOff + "px; width: 1px;"); - // Will contain the gutters, if any. - d.gutters = elt("div", null, "CodeMirror-gutters"); - d.lineGutter = null; - // Actual scrollable element. - d.scroller = elt("div", [d.sizer, d.heightForcer, d.gutters], "CodeMirror-scroll"); - d.scroller.setAttribute("tabIndex", "-1"); - // The element in which the editor lives. - d.wrapper = elt("div", [d.inputDiv, d.scrollbarH, d.scrollbarV, - d.scrollbarFiller, d.gutterFiller, d.scroller], "CodeMirror"); - - // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported) - if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; } - // Needed to hide big blue blinking cursor on Mobile Safari - if (ios) input.style.width = "0px"; - if (!webkit) d.scroller.draggable = true; - // Needed to handle Tab key in KHTML - if (khtml) { d.inputDiv.style.height = "1px"; d.inputDiv.style.position = "absolute"; } - // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8). - if (ie && ie_version < 8) d.scrollbarH.style.minHeight = d.scrollbarV.style.minWidth = "18px"; - - if (place.appendChild) place.appendChild(d.wrapper); - else place(d.wrapper); - - // Current rendered range (may be bigger than the view window). - d.viewFrom = d.viewTo = doc.first; - // Information about the rendered lines. - d.view = []; - // Holds info about a single rendered line when it was rendered - // for measurement, while not in view. - d.externalMeasured = null; - // Empty space (in pixels) above the view - d.viewOffset = 0; - d.lastSizeC = 0; - d.updateLineNumbers = null; - - // Used to only resize the line number gutter when necessary (when - // the amount of lines crosses a boundary that makes its width change) - d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null; - // See readInput and resetInput - d.prevInput = ""; - // Set to true when a non-horizontal-scrolling line widget is - // added. As an optimization, line widget aligning is skipped when - // this is false. - d.alignWidgets = false; - // Flag that indicates whether we expect input to appear real soon - // now (after some event like 'keypress' or 'input') and are - // polling intensively. - d.pollingFast = false; - // Self-resetting timeout for the poller - d.poll = new Delayed(); - - d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null; - - // Tracks when resetInput has punted to just putting a short - // string into the textarea instead of the full selection. - d.inaccurateSelection = false; - - // Tracks the maximum line length so that the horizontal scrollbar - // can be kept static when scrolling. - d.maxLine = null; - d.maxLineLength = 0; - d.maxLineChanged = false; - - // Used for measuring wheel scrolling granularity - d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null; - - // True when shift is held down. - d.shift = false; - - // Used to track whether anything happened since the context menu - // was opened. - d.selForContextMenu = null; - } - - // STATE UPDATES - - // Used to get the editor into a consistent state again when options change. - - function loadMode(cm) { - cm.doc.mode = CodeMirror.getMode(cm.options, cm.doc.modeOption); - resetModeState(cm); - } - - function resetModeState(cm) { - cm.doc.iter(function(line) { - if (line.stateAfter) line.stateAfter = null; - if (line.styles) line.styles = null; - }); - cm.doc.frontier = cm.doc.first; - startWorker(cm, 100); - cm.state.modeGen++; - if (cm.curOp) regChange(cm); - } - - function wrappingChanged(cm) { - if (cm.options.lineWrapping) { - addClass(cm.display.wrapper, "CodeMirror-wrap"); - cm.display.sizer.style.minWidth = ""; - } else { - rmClass(cm.display.wrapper, "CodeMirror-wrap"); - findMaxLine(cm); - } - estimateLineHeights(cm); - regChange(cm); - clearCaches(cm); - setTimeout(function(){updateScrollbars(cm);}, 100); - } - - // Returns a function that estimates the height of a line, to use as - // first approximation until the line becomes visible (and is thus - // properly measurable). - function estimateHeight(cm) { - var th = textHeight(cm.display), wrapping = cm.options.lineWrapping; - var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3); - return function(line) { - if (lineIsHidden(cm.doc, line)) return 0; - - var widgetsHeight = 0; - if (line.widgets) for (var i = 0; i < line.widgets.length; i++) { - if (line.widgets[i].height) widgetsHeight += line.widgets[i].height; - } - - if (wrapping) - return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th; - else - return widgetsHeight + th; - }; - } - - function estimateLineHeights(cm) { - var doc = cm.doc, est = estimateHeight(cm); - doc.iter(function(line) { - var estHeight = est(line); - if (estHeight != line.height) updateLineHeight(line, estHeight); - }); - } - - function keyMapChanged(cm) { - var map = keyMap[cm.options.keyMap], style = map.style; - cm.display.wrapper.className = cm.display.wrapper.className.replace(/\s*cm-keymap-\S+/g, "") + - (style ? " cm-keymap-" + style : ""); - } - - function themeChanged(cm) { - cm.display.wrapper.className = cm.display.wrapper.className.replace(/\s*cm-s-\S+/g, "") + - cm.options.theme.replace(/(^|\s)\s*/g, " cm-s-"); - clearCaches(cm); - } - - function guttersChanged(cm) { - updateGutters(cm); - regChange(cm); - setTimeout(function(){alignHorizontally(cm);}, 20); - } - - // Rebuild the gutter elements, ensure the margin to the left of the - // code matches their width. - function updateGutters(cm) { - var gutters = cm.display.gutters, specs = cm.options.gutters; - removeChildren(gutters); - for (var i = 0; i < specs.length; ++i) { - var gutterClass = specs[i]; - var gElt = gutters.appendChild(elt("div", null, "CodeMirror-gutter " + gutterClass)); - if (gutterClass == "CodeMirror-linenumbers") { - cm.display.lineGutter = gElt; - gElt.style.width = (cm.display.lineNumWidth || 1) + "px"; - } - } - gutters.style.display = i ? "" : "none"; - updateGutterSpace(cm); - } - - function updateGutterSpace(cm) { - var width = cm.display.gutters.offsetWidth; - cm.display.sizer.style.marginLeft = width + "px"; - cm.display.scrollbarH.style.left = cm.options.fixedGutter ? width + "px" : 0; - } - - // Compute the character length of a line, taking into account - // collapsed ranges (see markText) that might hide parts, and join - // other lines onto it. - function lineLength(line) { - if (line.height == 0) return 0; - var len = line.text.length, merged, cur = line; - while (merged = collapsedSpanAtStart(cur)) { - var found = merged.find(0, true); - cur = found.from.line; - len += found.from.ch - found.to.ch; - } - cur = line; - while (merged = collapsedSpanAtEnd(cur)) { - var found = merged.find(0, true); - len -= cur.text.length - found.from.ch; - cur = found.to.line; - len += cur.text.length - found.to.ch; - } - return len; - } - - // Find the longest line in the document. - function findMaxLine(cm) { - var d = cm.display, doc = cm.doc; - d.maxLine = getLine(doc, doc.first); - d.maxLineLength = lineLength(d.maxLine); - d.maxLineChanged = true; - doc.iter(function(line) { - var len = lineLength(line); - if (len > d.maxLineLength) { - d.maxLineLength = len; - d.maxLine = line; - } - }); - } - - // Make sure the gutters options contains the element - // "CodeMirror-linenumbers" when the lineNumbers option is true. - function setGuttersForLineNumbers(options) { - var found = indexOf(options.gutters, "CodeMirror-linenumbers"); - if (found == -1 && options.lineNumbers) { - options.gutters = options.gutters.concat(["CodeMirror-linenumbers"]); - } else if (found > -1 && !options.lineNumbers) { - options.gutters = options.gutters.slice(0); - options.gutters.splice(found, 1); - } - } - - // SCROLLBARS - - function hScrollbarTakesSpace(cm) { - return cm.display.scroller.clientHeight - cm.display.wrapper.clientHeight < scrollerCutOff - 3; - } - - // Prepare DOM reads needed to update the scrollbars. Done in one - // shot to minimize update/measure roundtrips. - function measureForScrollbars(cm) { - var scroll = cm.display.scroller; - return { - clientHeight: scroll.clientHeight, - barHeight: cm.display.scrollbarV.clientHeight, - scrollWidth: scroll.scrollWidth, clientWidth: scroll.clientWidth, - hScrollbarTakesSpace: hScrollbarTakesSpace(cm), - barWidth: cm.display.scrollbarH.clientWidth, - docHeight: Math.round(cm.doc.height + paddingVert(cm.display)) - }; - } - - // Re-synchronize the fake scrollbars with the actual size of the - // content. - function updateScrollbars(cm, measure) { - if (!measure) measure = measureForScrollbars(cm); - var d = cm.display, sWidth = scrollbarWidth(d.measure); - var scrollHeight = measure.docHeight + scrollerCutOff; - var needsH = measure.scrollWidth > measure.clientWidth; - if (needsH && measure.scrollWidth <= measure.clientWidth + 1 && - sWidth > 0 && !measure.hScrollbarTakesSpace) - needsH = false; // (Issue #2562) - var needsV = scrollHeight > measure.clientHeight; - - if (needsV) { - d.scrollbarV.style.display = "block"; - d.scrollbarV.style.bottom = needsH ? sWidth + "px" : "0"; - // A bug in IE8 can cause this value to be negative, so guard it. - d.scrollbarV.firstChild.style.height = - Math.max(0, scrollHeight - measure.clientHeight + (measure.barHeight || d.scrollbarV.clientHeight)) + "px"; - } else { - d.scrollbarV.style.display = ""; - d.scrollbarV.firstChild.style.height = "0"; - } - if (needsH) { - d.scrollbarH.style.display = "block"; - d.scrollbarH.style.right = needsV ? sWidth + "px" : "0"; - d.scrollbarH.firstChild.style.width = - (measure.scrollWidth - measure.clientWidth + (measure.barWidth || d.scrollbarH.clientWidth)) + "px"; - } else { - d.scrollbarH.style.display = ""; - d.scrollbarH.firstChild.style.width = "0"; - } - if (needsH && needsV) { - d.scrollbarFiller.style.display = "block"; - d.scrollbarFiller.style.height = d.scrollbarFiller.style.width = sWidth + "px"; - } else d.scrollbarFiller.style.display = ""; - if (needsH && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) { - d.gutterFiller.style.display = "block"; - d.gutterFiller.style.height = sWidth + "px"; - d.gutterFiller.style.width = d.gutters.offsetWidth + "px"; - } else d.gutterFiller.style.display = ""; - - if (!cm.state.checkedOverlayScrollbar && measure.clientHeight > 0) { - if (sWidth === 0) { - var w = mac && !mac_geMountainLion ? "12px" : "18px"; - d.scrollbarV.style.minWidth = d.scrollbarH.style.minHeight = w; - var barMouseDown = function(e) { - if (e_target(e) != d.scrollbarV && e_target(e) != d.scrollbarH) - operation(cm, onMouseDown)(e); - }; - on(d.scrollbarV, "mousedown", barMouseDown); - on(d.scrollbarH, "mousedown", barMouseDown); - } - cm.state.checkedOverlayScrollbar = true; - } - } - - // Compute the lines that are visible in a given viewport (defaults - // the the current scroll position). viewport may contain top, - // height, and ensure (see op.scrollToPos) properties. - function visibleLines(display, doc, viewport) { - var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop; - top = Math.floor(top - paddingTop(display)); - var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight; - - var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom); - // Ensure is a {from: {line, ch}, to: {line, ch}} object, and - // forces those lines into the viewport (if possible). - if (viewport && viewport.ensure) { - var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line; - if (ensureFrom < from) - return {from: ensureFrom, - to: lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight)}; - if (Math.min(ensureTo, doc.lastLine()) >= to) - return {from: lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight), - to: ensureTo}; - } - return {from: from, to: Math.max(to, from + 1)}; - } - - // LINE NUMBERS - - // Re-align line numbers and gutter marks to compensate for - // horizontal scrolling. - function alignHorizontally(cm) { - var display = cm.display, view = display.view; - if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) return; - var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft; - var gutterW = display.gutters.offsetWidth, left = comp + "px"; - for (var i = 0; i < view.length; i++) if (!view[i].hidden) { - if (cm.options.fixedGutter && view[i].gutter) - view[i].gutter.style.left = left; - var align = view[i].alignable; - if (align) for (var j = 0; j < align.length; j++) - align[j].style.left = left; - } - if (cm.options.fixedGutter) - display.gutters.style.left = (comp + gutterW) + "px"; - } - - // Used to ensure that the line number gutter is still the right - // size for the current document size. Returns true when an update - // is needed. - function maybeUpdateLineNumberWidth(cm) { - if (!cm.options.lineNumbers) return false; - var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display; - if (last.length != display.lineNumChars) { - var test = display.measure.appendChild(elt("div", [elt("div", last)], - "CodeMirror-linenumber CodeMirror-gutter-elt")); - var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW; - display.lineGutter.style.width = ""; - display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding); - display.lineNumWidth = display.lineNumInnerWidth + padding; - display.lineNumChars = display.lineNumInnerWidth ? last.length : -1; - display.lineGutter.style.width = display.lineNumWidth + "px"; - updateGutterSpace(cm); - return true; - } - return false; - } - - function lineNumberFor(options, i) { - return String(options.lineNumberFormatter(i + options.firstLineNumber)); - } - - // Computes display.scroller.scrollLeft + display.gutters.offsetWidth, - // but using getBoundingClientRect to get a sub-pixel-accurate - // result. - function compensateForHScroll(display) { - return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left; - } - - // DISPLAY DRAWING - - function DisplayUpdate(cm, viewport, force) { - var display = cm.display; - - this.viewport = viewport; - // Store some values that we'll need later (but don't want to force a relayout for) - this.visible = visibleLines(display, cm.doc, viewport); - this.editorIsHidden = !display.wrapper.offsetWidth; - this.wrapperHeight = display.wrapper.clientHeight; - this.oldViewFrom = display.viewFrom; this.oldViewTo = display.viewTo; - this.oldScrollerWidth = display.scroller.clientWidth; - this.force = force; - this.dims = getDimensions(cm); - } - - // Does the actual updating of the line display. Bails out - // (returning false) when there is nothing to be done and forced is - // false. - function updateDisplayIfNeeded(cm, update) { - var display = cm.display, doc = cm.doc; - if (update.editorIsHidden) { - resetView(cm); - return false; - } - - // Bail out if the visible area is already rendered and nothing changed. - if (!update.force && - update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo && - (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) && - countDirtyView(cm) == 0) - return false; - - if (maybeUpdateLineNumberWidth(cm)) { - resetView(cm); - update.dims = getDimensions(cm); - } - - // Compute a suitable new viewport (from & to) - var end = doc.first + doc.size; - var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first); - var to = Math.min(end, update.visible.to + cm.options.viewportMargin); - if (display.viewFrom < from && from - display.viewFrom < 20) from = Math.max(doc.first, display.viewFrom); - if (display.viewTo > to && display.viewTo - to < 20) to = Math.min(end, display.viewTo); - if (sawCollapsedSpans) { - from = visualLineNo(cm.doc, from); - to = visualLineEndNo(cm.doc, to); - } - - var different = from != display.viewFrom || to != display.viewTo || - display.lastSizeC != update.wrapperHeight; - adjustView(cm, from, to); - - display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom)); - // Position the mover div to align with the current scroll position - cm.display.mover.style.top = display.viewOffset + "px"; - - var toUpdate = countDirtyView(cm); - if (!different && toUpdate == 0 && !update.force && - (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo)) - return false; - - // For big changes, we hide the enclosing element during the - // update, since that speeds up the operations on most browsers. - var focused = activeElt(); - if (toUpdate > 4) display.lineDiv.style.display = "none"; - patchDisplay(cm, display.updateLineNumbers, update.dims); - if (toUpdate > 4) display.lineDiv.style.display = ""; - // There might have been a widget with a focused element that got - // hidden or updated, if so re-focus it. - if (focused && activeElt() != focused && focused.offsetHeight) focused.focus(); - - // Prevent selection and cursors from interfering with the scroll - // width. - removeChildren(display.cursorDiv); - removeChildren(display.selectionDiv); - - if (different) { - display.lastSizeC = update.wrapperHeight; - startWorker(cm, 400); - } - - display.updateLineNumbers = null; - - return true; - } - - function postUpdateDisplay(cm, update) { - var force = update.force, viewport = update.viewport; - for (var first = true;; first = false) { - if (first && cm.options.lineWrapping && update.oldScrollerWidth != cm.display.scroller.clientWidth) { - force = true; - } else { - force = false; - // Clip forced viewport to actual scrollable area. - if (viewport && viewport.top != null) - viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - scrollerCutOff - - cm.display.scroller.clientHeight, viewport.top)}; - // Updated line heights might result in the drawn area not - // actually covering the viewport. Keep looping until it does. - update.visible = visibleLines(cm.display, cm.doc, viewport); - if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo) - break; - } - if (!updateDisplayIfNeeded(cm, update)) break; - updateHeightsInViewport(cm); - var barMeasure = measureForScrollbars(cm); - updateSelection(cm); - setDocumentHeight(cm, barMeasure); - updateScrollbars(cm, barMeasure); - } - - signalLater(cm, "update", cm); - if (cm.display.viewFrom != update.oldViewFrom || cm.display.viewTo != update.oldViewTo) - signalLater(cm, "viewportChange", cm, cm.display.viewFrom, cm.display.viewTo); - } - - function updateDisplaySimple(cm, viewport) { - var update = new DisplayUpdate(cm, viewport); - if (updateDisplayIfNeeded(cm, update)) { - updateHeightsInViewport(cm); - postUpdateDisplay(cm, update); - var barMeasure = measureForScrollbars(cm); - updateSelection(cm); - setDocumentHeight(cm, barMeasure); - updateScrollbars(cm, barMeasure); - } - } - - function setDocumentHeight(cm, measure) { - cm.display.sizer.style.minHeight = cm.display.heightForcer.style.top = measure.docHeight + "px"; - cm.display.gutters.style.height = Math.max(measure.docHeight, measure.clientHeight - scrollerCutOff) + "px"; - } - - function checkForWebkitWidthBug(cm, measure) { - // Work around Webkit bug where it sometimes reserves space for a - // non-existing phantom scrollbar in the scroller (Issue #2420) - if (cm.display.sizer.offsetWidth + cm.display.gutters.offsetWidth < cm.display.scroller.clientWidth - 1) { - cm.display.sizer.style.minHeight = cm.display.heightForcer.style.top = "0px"; - cm.display.gutters.style.height = measure.docHeight + "px"; - } - } - - // Read the actual heights of the rendered lines, and update their - // stored heights to match. - function updateHeightsInViewport(cm) { - var display = cm.display; - var prevBottom = display.lineDiv.offsetTop; - for (var i = 0; i < display.view.length; i++) { - var cur = display.view[i], height; - if (cur.hidden) continue; - if (ie && ie_version < 8) { - var bot = cur.node.offsetTop + cur.node.offsetHeight; - height = bot - prevBottom; - prevBottom = bot; - } else { - var box = cur.node.getBoundingClientRect(); - height = box.bottom - box.top; - } - var diff = cur.line.height - height; - if (height < 2) height = textHeight(display); - if (diff > .001 || diff < -.001) { - updateLineHeight(cur.line, height); - updateWidgetHeight(cur.line); - if (cur.rest) for (var j = 0; j < cur.rest.length; j++) - updateWidgetHeight(cur.rest[j]); - } - } - } - - // Read and store the height of line widgets associated with the - // given line. - function updateWidgetHeight(line) { - if (line.widgets) for (var i = 0; i < line.widgets.length; ++i) - line.widgets[i].height = line.widgets[i].node.offsetHeight; - } - - // Do a bulk-read of the DOM positions and sizes needed to draw the - // view, so that we don't interleave reading and writing to the DOM. - function getDimensions(cm) { - var d = cm.display, left = {}, width = {}; - var gutterLeft = d.gutters.clientLeft; - for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) { - left[cm.options.gutters[i]] = n.offsetLeft + n.clientLeft + gutterLeft; - width[cm.options.gutters[i]] = n.clientWidth; - } - return {fixedPos: compensateForHScroll(d), - gutterTotalWidth: d.gutters.offsetWidth, - gutterLeft: left, - gutterWidth: width, - wrapperWidth: d.wrapper.clientWidth}; - } - - // Sync the actual display DOM structure with display.view, removing - // nodes for lines that are no longer in view, and creating the ones - // that are not there yet, and updating the ones that are out of - // date. - function patchDisplay(cm, updateNumbersFrom, dims) { - var display = cm.display, lineNumbers = cm.options.lineNumbers; - var container = display.lineDiv, cur = container.firstChild; - - function rm(node) { - var next = node.nextSibling; - // Works around a throw-scroll bug in OS X Webkit - if (webkit && mac && cm.display.currentWheelTarget == node) - node.style.display = "none"; - else - node.parentNode.removeChild(node); - return next; - } - - var view = display.view, lineN = display.viewFrom; - // Loop over the elements in the view, syncing cur (the DOM nodes - // in display.lineDiv) with the view as we go. - for (var i = 0; i < view.length; i++) { - var lineView = view[i]; - if (lineView.hidden) { - } else if (!lineView.node) { // Not drawn yet - var node = buildLineElement(cm, lineView, lineN, dims); - container.insertBefore(node, cur); - } else { // Already drawn - while (cur != lineView.node) cur = rm(cur); - var updateNumber = lineNumbers && updateNumbersFrom != null && - updateNumbersFrom <= lineN && lineView.lineNumber; - if (lineView.changes) { - if (indexOf(lineView.changes, "gutter") > -1) updateNumber = false; - updateLineForChanges(cm, lineView, lineN, dims); - } - if (updateNumber) { - removeChildren(lineView.lineNumber); - lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN))); - } - cur = lineView.node.nextSibling; - } - lineN += lineView.size; - } - while (cur) cur = rm(cur); - } - - // When an aspect of a line changes, a string is added to - // lineView.changes. This updates the relevant part of the line's - // DOM structure. - function updateLineForChanges(cm, lineView, lineN, dims) { - for (var j = 0; j < lineView.changes.length; j++) { - var type = lineView.changes[j]; - if (type == "text") updateLineText(cm, lineView); - else if (type == "gutter") updateLineGutter(cm, lineView, lineN, dims); - else if (type == "class") updateLineClasses(lineView); - else if (type == "widget") updateLineWidgets(lineView, dims); - } - lineView.changes = null; - } - - // Lines with gutter elements, widgets or a background class need to - // be wrapped, and have the extra elements added to the wrapper div - function ensureLineWrapped(lineView) { - if (lineView.node == lineView.text) { - lineView.node = elt("div", null, null, "position: relative"); - if (lineView.text.parentNode) - lineView.text.parentNode.replaceChild(lineView.node, lineView.text); - lineView.node.appendChild(lineView.text); - if (ie && ie_version < 8) lineView.node.style.zIndex = 2; - } - return lineView.node; - } - - function updateLineBackground(lineView) { - var cls = lineView.bgClass ? lineView.bgClass + " " + (lineView.line.bgClass || "") : lineView.line.bgClass; - if (cls) cls += " CodeMirror-linebackground"; - if (lineView.background) { - if (cls) lineView.background.className = cls; - else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; } - } else if (cls) { - var wrap = ensureLineWrapped(lineView); - lineView.background = wrap.insertBefore(elt("div", null, cls), wrap.firstChild); - } - } - - // Wrapper around buildLineContent which will reuse the structure - // in display.externalMeasured when possible. - function getLineContent(cm, lineView) { - var ext = cm.display.externalMeasured; - if (ext && ext.line == lineView.line) { - cm.display.externalMeasured = null; - lineView.measure = ext.measure; - return ext.built; - } - return buildLineContent(cm, lineView); - } - - // Redraw the line's text. Interacts with the background and text - // classes because the mode may output tokens that influence these - // classes. - function updateLineText(cm, lineView) { - var cls = lineView.text.className; - var built = getLineContent(cm, lineView); - if (lineView.text == lineView.node) lineView.node = built.pre; - lineView.text.parentNode.replaceChild(built.pre, lineView.text); - lineView.text = built.pre; - if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) { - lineView.bgClass = built.bgClass; - lineView.textClass = built.textClass; - updateLineClasses(lineView); - } else if (cls) { - lineView.text.className = cls; - } - } - - function updateLineClasses(lineView) { - updateLineBackground(lineView); - if (lineView.line.wrapClass) - ensureLineWrapped(lineView).className = lineView.line.wrapClass; - else if (lineView.node != lineView.text) - lineView.node.className = ""; - var textClass = lineView.textClass ? lineView.textClass + " " + (lineView.line.textClass || "") : lineView.line.textClass; - lineView.text.className = textClass || ""; - } - - function updateLineGutter(cm, lineView, lineN, dims) { - if (lineView.gutter) { - lineView.node.removeChild(lineView.gutter); - lineView.gutter = null; - } - var markers = lineView.line.gutterMarkers; - if (cm.options.lineNumbers || markers) { - var wrap = ensureLineWrapped(lineView); - var gutterWrap = lineView.gutter = - wrap.insertBefore(elt("div", null, "CodeMirror-gutter-wrapper", "position: absolute; left: " + - (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + "px"), - lineView.text); - if (cm.options.lineNumbers && (!markers || !markers["CodeMirror-linenumbers"])) - lineView.lineNumber = gutterWrap.appendChild( - elt("div", lineNumberFor(cm.options, lineN), - "CodeMirror-linenumber CodeMirror-gutter-elt", - "left: " + dims.gutterLeft["CodeMirror-linenumbers"] + "px; width: " - + cm.display.lineNumInnerWidth + "px")); - if (markers) for (var k = 0; k < cm.options.gutters.length; ++k) { - var id = cm.options.gutters[k], found = markers.hasOwnProperty(id) && markers[id]; - if (found) - gutterWrap.appendChild(elt("div", [found], "CodeMirror-gutter-elt", "left: " + - dims.gutterLeft[id] + "px; width: " + dims.gutterWidth[id] + "px")); - } - } - } - - function updateLineWidgets(lineView, dims) { - if (lineView.alignable) lineView.alignable = null; - for (var node = lineView.node.firstChild, next; node; node = next) { - var next = node.nextSibling; - if (node.className == "CodeMirror-linewidget") - lineView.node.removeChild(node); - } - insertLineWidgets(lineView, dims); - } - - // Build a line's DOM representation from scratch - function buildLineElement(cm, lineView, lineN, dims) { - var built = getLineContent(cm, lineView); - lineView.text = lineView.node = built.pre; - if (built.bgClass) lineView.bgClass = built.bgClass; - if (built.textClass) lineView.textClass = built.textClass; - - updateLineClasses(lineView); - updateLineGutter(cm, lineView, lineN, dims); - insertLineWidgets(lineView, dims); - return lineView.node; - } - - // A lineView may contain multiple logical lines (when merged by - // collapsed spans). The widgets for all of them need to be drawn. - function insertLineWidgets(lineView, dims) { - insertLineWidgetsFor(lineView.line, lineView, dims, true); - if (lineView.rest) for (var i = 0; i < lineView.rest.length; i++) - insertLineWidgetsFor(lineView.rest[i], lineView, dims, false); - } - - function insertLineWidgetsFor(line, lineView, dims, allowAbove) { - if (!line.widgets) return; - var wrap = ensureLineWrapped(lineView); - for (var i = 0, ws = line.widgets; i < ws.length; ++i) { - var widget = ws[i], node = elt("div", [widget.node], "CodeMirror-linewidget"); - if (!widget.handleMouseEvents) node.ignoreEvents = true; - positionLineWidget(widget, node, lineView, dims); - if (allowAbove && widget.above) - wrap.insertBefore(node, lineView.gutter || lineView.text); - else - wrap.appendChild(node); - signalLater(widget, "redraw"); - } - } - - function positionLineWidget(widget, node, lineView, dims) { - if (widget.noHScroll) { - (lineView.alignable || (lineView.alignable = [])).push(node); - var width = dims.wrapperWidth; - node.style.left = dims.fixedPos + "px"; - if (!widget.coverGutter) { - width -= dims.gutterTotalWidth; - node.style.paddingLeft = dims.gutterTotalWidth + "px"; - } - node.style.width = width + "px"; - } - if (widget.coverGutter) { - node.style.zIndex = 5; - node.style.position = "relative"; - if (!widget.noHScroll) node.style.marginLeft = -dims.gutterTotalWidth + "px"; - } - } - - // POSITION OBJECT - - // A Pos instance represents a position within the text. - var Pos = CodeMirror.Pos = function(line, ch) { - if (!(this instanceof Pos)) return new Pos(line, ch); - this.line = line; this.ch = ch; - }; - - // Compare two positions, return 0 if they are the same, a negative - // number when a is less, and a positive number otherwise. - var cmp = CodeMirror.cmpPos = function(a, b) { return a.line - b.line || a.ch - b.ch; }; - - function copyPos(x) {return Pos(x.line, x.ch);} - function maxPos(a, b) { return cmp(a, b) < 0 ? b : a; } - function minPos(a, b) { return cmp(a, b) < 0 ? a : b; } - - // SELECTION / CURSOR - - // Selection objects are immutable. A new one is created every time - // the selection changes. A selection is one or more non-overlapping - // (and non-touching) ranges, sorted, and an integer that indicates - // which one is the primary selection (the one that's scrolled into - // view, that getCursor returns, etc). - function Selection(ranges, primIndex) { - this.ranges = ranges; - this.primIndex = primIndex; - } - - Selection.prototype = { - primary: function() { return this.ranges[this.primIndex]; }, - equals: function(other) { - if (other == this) return true; - if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) return false; - for (var i = 0; i < this.ranges.length; i++) { - var here = this.ranges[i], there = other.ranges[i]; - if (cmp(here.anchor, there.anchor) != 0 || cmp(here.head, there.head) != 0) return false; - } - return true; - }, - deepCopy: function() { - for (var out = [], i = 0; i < this.ranges.length; i++) - out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head)); - return new Selection(out, this.primIndex); - }, - somethingSelected: function() { - for (var i = 0; i < this.ranges.length; i++) - if (!this.ranges[i].empty()) return true; - return false; - }, - contains: function(pos, end) { - if (!end) end = pos; - for (var i = 0; i < this.ranges.length; i++) { - var range = this.ranges[i]; - if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0) - return i; - } - return -1; - } - }; - - function Range(anchor, head) { - this.anchor = anchor; this.head = head; - } - - Range.prototype = { - from: function() { return minPos(this.anchor, this.head); }, - to: function() { return maxPos(this.anchor, this.head); }, - empty: function() { - return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch; - } - }; - - // Take an unsorted, potentially overlapping set of ranges, and - // build a selection out of it. 'Consumes' ranges array (modifying - // it). - function normalizeSelection(ranges, primIndex) { - var prim = ranges[primIndex]; - ranges.sort(function(a, b) { return cmp(a.from(), b.from()); }); - primIndex = indexOf(ranges, prim); - for (var i = 1; i < ranges.length; i++) { - var cur = ranges[i], prev = ranges[i - 1]; - if (cmp(prev.to(), cur.from()) >= 0) { - var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to()); - var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head; - if (i <= primIndex) --primIndex; - ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to)); - } - } - return new Selection(ranges, primIndex); - } - - function simpleSelection(anchor, head) { - return new Selection([new Range(anchor, head || anchor)], 0); - } - - // Most of the external API clips given positions to make sure they - // actually exist within the document. - function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1));} - function clipPos(doc, pos) { - if (pos.line < doc.first) return Pos(doc.first, 0); - var last = doc.first + doc.size - 1; - if (pos.line > last) return Pos(last, getLine(doc, last).text.length); - return clipToLen(pos, getLine(doc, pos.line).text.length); - } - function clipToLen(pos, linelen) { - var ch = pos.ch; - if (ch == null || ch > linelen) return Pos(pos.line, linelen); - else if (ch < 0) return Pos(pos.line, 0); - else return pos; - } - function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size;} - function clipPosArray(doc, array) { - for (var out = [], i = 0; i < array.length; i++) out[i] = clipPos(doc, array[i]); - return out; - } - - // SELECTION UPDATES - - // The 'scroll' parameter given to many of these indicated whether - // the new cursor position should be scrolled into view after - // modifying the selection. - - // If shift is held or the extend flag is set, extends a range to - // include a given position (and optionally a second position). - // Otherwise, simply returns the range between the given positions. - // Used for cursor motion and such. - function extendRange(doc, range, head, other) { - if (doc.cm && doc.cm.display.shift || doc.extend) { - var anchor = range.anchor; - if (other) { - var posBefore = cmp(head, anchor) < 0; - if (posBefore != (cmp(other, anchor) < 0)) { - anchor = head; - head = other; - } else if (posBefore != (cmp(head, other) < 0)) { - head = other; - } - } - return new Range(anchor, head); - } else { - return new Range(other || head, head); - } - } - - // Extend the primary selection range, discard the rest. - function extendSelection(doc, head, other, options) { - setSelection(doc, new Selection([extendRange(doc, doc.sel.primary(), head, other)], 0), options); - } - - // Extend all selections (pos is an array of selections with length - // equal the number of selections) - function extendSelections(doc, heads, options) { - for (var out = [], i = 0; i < doc.sel.ranges.length; i++) - out[i] = extendRange(doc, doc.sel.ranges[i], heads[i], null); - var newSel = normalizeSelection(out, doc.sel.primIndex); - setSelection(doc, newSel, options); - } - - // Updates a single range in the selection. - function replaceOneSelection(doc, i, range, options) { - var ranges = doc.sel.ranges.slice(0); - ranges[i] = range; - setSelection(doc, normalizeSelection(ranges, doc.sel.primIndex), options); - } - - // Reset the selection to a single range. - function setSimpleSelection(doc, anchor, head, options) { - setSelection(doc, simpleSelection(anchor, head), options); - } - - // Give beforeSelectionChange handlers a change to influence a - // selection update. - function filterSelectionChange(doc, sel) { - var obj = { - ranges: sel.ranges, - update: function(ranges) { - this.ranges = []; - for (var i = 0; i < ranges.length; i++) - this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor), - clipPos(doc, ranges[i].head)); - } - }; - signal(doc, "beforeSelectionChange", doc, obj); - if (doc.cm) signal(doc.cm, "beforeSelectionChange", doc.cm, obj); - if (obj.ranges != sel.ranges) return normalizeSelection(obj.ranges, obj.ranges.length - 1); - else return sel; - } - - function setSelectionReplaceHistory(doc, sel, options) { - var done = doc.history.done, last = lst(done); - if (last && last.ranges) { - done[done.length - 1] = sel; - setSelectionNoUndo(doc, sel, options); - } else { - setSelection(doc, sel, options); - } - } - - // Set a new selection. - function setSelection(doc, sel, options) { - setSelectionNoUndo(doc, sel, options); - addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options); - } - - function setSelectionNoUndo(doc, sel, options) { - if (hasHandler(doc, "beforeSelectionChange") || doc.cm && hasHandler(doc.cm, "beforeSelectionChange")) - sel = filterSelectionChange(doc, sel); - - var bias = options && options.bias || - (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1); - setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true)); - - if (!(options && options.scroll === false) && doc.cm) - ensureCursorVisible(doc.cm); - } - - function setSelectionInner(doc, sel) { - if (sel.equals(doc.sel)) return; - - doc.sel = sel; - - if (doc.cm) { - doc.cm.curOp.updateInput = doc.cm.curOp.selectionChanged = true; - signalCursorActivity(doc.cm); - } - signalLater(doc, "cursorActivity", doc); - } - - // Verify that the selection does not partially select any atomic - // marked ranges. - function reCheckSelection(doc) { - setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false), sel_dontScroll); - } - - // Return a selection that does not partially select any atomic - // ranges. - function skipAtomicInSelection(doc, sel, bias, mayClear) { - var out; - for (var i = 0; i < sel.ranges.length; i++) { - var range = sel.ranges[i]; - var newAnchor = skipAtomic(doc, range.anchor, bias, mayClear); - var newHead = skipAtomic(doc, range.head, bias, mayClear); - if (out || newAnchor != range.anchor || newHead != range.head) { - if (!out) out = sel.ranges.slice(0, i); - out[i] = new Range(newAnchor, newHead); - } - } - return out ? normalizeSelection(out, sel.primIndex) : sel; - } - - // Ensure a given position is not inside an atomic range. - function skipAtomic(doc, pos, bias, mayClear) { - var flipped = false, curPos = pos; - var dir = bias || 1; - doc.cantEdit = false; - search: for (;;) { - var line = getLine(doc, curPos.line); - if (line.markedSpans) { - for (var i = 0; i < line.markedSpans.length; ++i) { - var sp = line.markedSpans[i], m = sp.marker; - if ((sp.from == null || (m.inclusiveLeft ? sp.from <= curPos.ch : sp.from < curPos.ch)) && - (sp.to == null || (m.inclusiveRight ? sp.to >= curPos.ch : sp.to > curPos.ch))) { - if (mayClear) { - signal(m, "beforeCursorEnter"); - if (m.explicitlyCleared) { - if (!line.markedSpans) break; - else {--i; continue;} - } - } - if (!m.atomic) continue; - var newPos = m.find(dir < 0 ? -1 : 1); - if (cmp(newPos, curPos) == 0) { - newPos.ch += dir; - if (newPos.ch < 0) { - if (newPos.line > doc.first) newPos = clipPos(doc, Pos(newPos.line - 1)); - else newPos = null; - } else if (newPos.ch > line.text.length) { - if (newPos.line < doc.first + doc.size - 1) newPos = Pos(newPos.line + 1, 0); - else newPos = null; - } - if (!newPos) { - if (flipped) { - // Driven in a corner -- no valid cursor position found at all - // -- try again *with* clearing, if we didn't already - if (!mayClear) return skipAtomic(doc, pos, bias, true); - // Otherwise, turn off editing until further notice, and return the start of the doc - doc.cantEdit = true; - return Pos(doc.first, 0); - } - flipped = true; newPos = pos; dir = -dir; - } - } - curPos = newPos; - continue search; - } - } - } - return curPos; - } - } - - // SELECTION DRAWING - - // Redraw the selection and/or cursor - function drawSelection(cm) { - var display = cm.display, doc = cm.doc, result = {}; - var curFragment = result.cursors = document.createDocumentFragment(); - var selFragment = result.selection = document.createDocumentFragment(); - - for (var i = 0; i < doc.sel.ranges.length; i++) { - var range = doc.sel.ranges[i]; - var collapsed = range.empty(); - if (collapsed || cm.options.showCursorWhenSelecting) - drawSelectionCursor(cm, range, curFragment); - if (!collapsed) - drawSelectionRange(cm, range, selFragment); - } - - // Move the hidden textarea near the cursor to prevent scrolling artifacts - if (cm.options.moveInputWithCursor) { - var headPos = cursorCoords(cm, doc.sel.primary().head, "div"); - var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect(); - result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10, - headPos.top + lineOff.top - wrapOff.top)); - result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10, - headPos.left + lineOff.left - wrapOff.left)); - } - - return result; - } - - function showSelection(cm, drawn) { - removeChildrenAndAdd(cm.display.cursorDiv, drawn.cursors); - removeChildrenAndAdd(cm.display.selectionDiv, drawn.selection); - if (drawn.teTop != null) { - cm.display.inputDiv.style.top = drawn.teTop + "px"; - cm.display.inputDiv.style.left = drawn.teLeft + "px"; - } - } - - function updateSelection(cm) { - showSelection(cm, drawSelection(cm)); - } - - // Draws a cursor for the given range - function drawSelectionCursor(cm, range, output) { - var pos = cursorCoords(cm, range.head, "div", null, null, !cm.options.singleCursorHeightPerLine); - - var cursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor")); - cursor.style.left = pos.left + "px"; - cursor.style.top = pos.top + "px"; - cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + "px"; - - if (pos.other) { - // Secondary cursor, shown when on a 'jump' in bi-directional text - var otherCursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor CodeMirror-secondarycursor")); - otherCursor.style.display = ""; - otherCursor.style.left = pos.other.left + "px"; - otherCursor.style.top = pos.other.top + "px"; - otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + "px"; - } - } - - // Draws the given range as a highlighted selection - function drawSelectionRange(cm, range, output) { - var display = cm.display, doc = cm.doc; - var fragment = document.createDocumentFragment(); - var padding = paddingH(cm.display), leftSide = padding.left, rightSide = display.lineSpace.offsetWidth - padding.right; - - function add(left, top, width, bottom) { - if (top < 0) top = 0; - top = Math.round(top); - bottom = Math.round(bottom); - fragment.appendChild(elt("div", null, "CodeMirror-selected", "position: absolute; left: " + left + - "px; top: " + top + "px; width: " + (width == null ? rightSide - left : width) + - "px; height: " + (bottom - top) + "px")); - } - - function drawForLine(line, fromArg, toArg) { - var lineObj = getLine(doc, line); - var lineLen = lineObj.text.length; - var start, end; - function coords(ch, bias) { - return charCoords(cm, Pos(line, ch), "div", lineObj, bias); - } - - iterateBidiSections(getOrder(lineObj), fromArg || 0, toArg == null ? lineLen : toArg, function(from, to, dir) { - var leftPos = coords(from, "left"), rightPos, left, right; - if (from == to) { - rightPos = leftPos; - left = right = leftPos.left; - } else { - rightPos = coords(to - 1, "right"); - if (dir == "rtl") { var tmp = leftPos; leftPos = rightPos; rightPos = tmp; } - left = leftPos.left; - right = rightPos.right; - } - if (fromArg == null && from == 0) left = leftSide; - if (rightPos.top - leftPos.top > 3) { // Different lines, draw top part - add(left, leftPos.top, null, leftPos.bottom); - left = leftSide; - if (leftPos.bottom < rightPos.top) add(left, leftPos.bottom, null, rightPos.top); - } - if (toArg == null && to == lineLen) right = rightSide; - if (!start || leftPos.top < start.top || leftPos.top == start.top && leftPos.left < start.left) - start = leftPos; - if (!end || rightPos.bottom > end.bottom || rightPos.bottom == end.bottom && rightPos.right > end.right) - end = rightPos; - if (left < leftSide + 1) left = leftSide; - add(left, rightPos.top, right - left, rightPos.bottom); - }); - return {start: start, end: end}; - } - - var sFrom = range.from(), sTo = range.to(); - if (sFrom.line == sTo.line) { - drawForLine(sFrom.line, sFrom.ch, sTo.ch); - } else { - var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line); - var singleVLine = visualLine(fromLine) == visualLine(toLine); - var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end; - var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start; - if (singleVLine) { - if (leftEnd.top < rightStart.top - 2) { - add(leftEnd.right, leftEnd.top, null, leftEnd.bottom); - add(leftSide, rightStart.top, rightStart.left, rightStart.bottom); - } else { - add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom); - } - } - if (leftEnd.bottom < rightStart.top) - add(leftSide, leftEnd.bottom, null, rightStart.top); - } - - output.appendChild(fragment); - } - - // Cursor-blinking - function restartBlink(cm) { - if (!cm.state.focused) return; - var display = cm.display; - clearInterval(display.blinker); - var on = true; - display.cursorDiv.style.visibility = ""; - if (cm.options.cursorBlinkRate > 0) - display.blinker = setInterval(function() { - display.cursorDiv.style.visibility = (on = !on) ? "" : "hidden"; - }, cm.options.cursorBlinkRate); - else if (cm.options.cursorBlinkRate < 0) - display.cursorDiv.style.visibility = "hidden"; - } - - // HIGHLIGHT WORKER - - function startWorker(cm, time) { - if (cm.doc.mode.startState && cm.doc.frontier < cm.display.viewTo) - cm.state.highlight.set(time, bind(highlightWorker, cm)); - } - - function highlightWorker(cm) { - var doc = cm.doc; - if (doc.frontier < doc.first) doc.frontier = doc.first; - if (doc.frontier >= cm.display.viewTo) return; - var end = +new Date + cm.options.workTime; - var state = copyState(doc.mode, getStateBefore(cm, doc.frontier)); - var changedLines = []; - - doc.iter(doc.frontier, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function(line) { - if (doc.frontier >= cm.display.viewFrom) { // Visible - var oldStyles = line.styles; - var highlighted = highlightLine(cm, line, state, true); - line.styles = highlighted.styles; - var oldCls = line.styleClasses, newCls = highlighted.classes; - if (newCls) line.styleClasses = newCls; - else if (oldCls) line.styleClasses = null; - var ischange = !oldStyles || oldStyles.length != line.styles.length || - oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass); - for (var i = 0; !ischange && i < oldStyles.length; ++i) ischange = oldStyles[i] != line.styles[i]; - if (ischange) changedLines.push(doc.frontier); - line.stateAfter = copyState(doc.mode, state); - } else { - processLine(cm, line.text, state); - line.stateAfter = doc.frontier % 5 == 0 ? copyState(doc.mode, state) : null; - } - ++doc.frontier; - if (+new Date > end) { - startWorker(cm, cm.options.workDelay); - return true; - } - }); - if (changedLines.length) runInOp(cm, function() { - for (var i = 0; i < changedLines.length; i++) - regLineChange(cm, changedLines[i], "text"); - }); - } - - // Finds the line to start with when starting a parse. Tries to - // find a line with a stateAfter, so that it can start with a - // valid state. If that fails, it returns the line with the - // smallest indentation, which tends to need the least context to - // parse correctly. - function findStartLine(cm, n, precise) { - var minindent, minline, doc = cm.doc; - var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100); - for (var search = n; search > lim; --search) { - if (search <= doc.first) return doc.first; - var line = getLine(doc, search - 1); - if (line.stateAfter && (!precise || search <= doc.frontier)) return search; - var indented = countColumn(line.text, null, cm.options.tabSize); - if (minline == null || minindent > indented) { - minline = search - 1; - minindent = indented; - } - } - return minline; - } - - function getStateBefore(cm, n, precise) { - var doc = cm.doc, display = cm.display; - if (!doc.mode.startState) return true; - var pos = findStartLine(cm, n, precise), state = pos > doc.first && getLine(doc, pos-1).stateAfter; - if (!state) state = startState(doc.mode); - else state = copyState(doc.mode, state); - doc.iter(pos, n, function(line) { - processLine(cm, line.text, state); - var save = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo; - line.stateAfter = save ? copyState(doc.mode, state) : null; - ++pos; - }); - if (precise) doc.frontier = pos; - return state; - } - - // POSITION MEASUREMENT - - function paddingTop(display) {return display.lineSpace.offsetTop;} - function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight;} - function paddingH(display) { - if (display.cachedPaddingH) return display.cachedPaddingH; - var e = removeChildrenAndAdd(display.measure, elt("pre", "x")); - var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle; - var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)}; - if (!isNaN(data.left) && !isNaN(data.right)) display.cachedPaddingH = data; - return data; - } - - // Ensure the lineView.wrapping.heights array is populated. This is - // an array of bottom offsets for the lines that make up a drawn - // line. When lineWrapping is on, there might be more than one - // height. - function ensureLineHeights(cm, lineView, rect) { - var wrapping = cm.options.lineWrapping; - var curWidth = wrapping && cm.display.scroller.clientWidth; - if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) { - var heights = lineView.measure.heights = []; - if (wrapping) { - lineView.measure.width = curWidth; - var rects = lineView.text.firstChild.getClientRects(); - for (var i = 0; i < rects.length - 1; i++) { - var cur = rects[i], next = rects[i + 1]; - if (Math.abs(cur.bottom - next.bottom) > 2) - heights.push((cur.bottom + next.top) / 2 - rect.top); - } - } - heights.push(rect.bottom - rect.top); - } - } - - // Find a line map (mapping character offsets to text nodes) and a - // measurement cache for the given line number. (A line view might - // contain multiple lines when collapsed ranges are present.) - function mapFromLineView(lineView, line, lineN) { - if (lineView.line == line) - return {map: lineView.measure.map, cache: lineView.measure.cache}; - for (var i = 0; i < lineView.rest.length; i++) - if (lineView.rest[i] == line) - return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]}; - for (var i = 0; i < lineView.rest.length; i++) - if (lineNo(lineView.rest[i]) > lineN) - return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i], before: true}; - } - - // Render a line into the hidden node display.externalMeasured. Used - // when measurement is needed for a line that's not in the viewport. - function updateExternalMeasurement(cm, line) { - line = visualLine(line); - var lineN = lineNo(line); - var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN); - view.lineN = lineN; - var built = view.built = buildLineContent(cm, view); - view.text = built.pre; - removeChildrenAndAdd(cm.display.lineMeasure, built.pre); - return view; - } - - // Get a {top, bottom, left, right} box (in line-local coordinates) - // for a given character. - function measureChar(cm, line, ch, bias) { - return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias); - } - - // Find a line view that corresponds to the given line number. - function findViewForLine(cm, lineN) { - if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo) - return cm.display.view[findViewIndex(cm, lineN)]; - var ext = cm.display.externalMeasured; - if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size) - return ext; - } - - // Measurement can be split in two steps, the set-up work that - // applies to the whole line, and the measurement of the actual - // character. Functions like coordsChar, that need to do a lot of - // measurements in a row, can thus ensure that the set-up work is - // only done once. - function prepareMeasureForLine(cm, line) { - var lineN = lineNo(line); - var view = findViewForLine(cm, lineN); - if (view && !view.text) - view = null; - else if (view && view.changes) - updateLineForChanges(cm, view, lineN, getDimensions(cm)); - if (!view) - view = updateExternalMeasurement(cm, line); - - var info = mapFromLineView(view, line, lineN); - return { - line: line, view: view, rect: null, - map: info.map, cache: info.cache, before: info.before, - hasHeights: false - }; - } - - // Given a prepared measurement object, measures the position of an - // actual character (or fetches it from the cache). - function measureCharPrepared(cm, prepared, ch, bias, varHeight) { - if (prepared.before) ch = -1; - var key = ch + (bias || ""), found; - if (prepared.cache.hasOwnProperty(key)) { - found = prepared.cache[key]; - } else { - if (!prepared.rect) - prepared.rect = prepared.view.text.getBoundingClientRect(); - if (!prepared.hasHeights) { - ensureLineHeights(cm, prepared.view, prepared.rect); - prepared.hasHeights = true; - } - found = measureCharInner(cm, prepared, ch, bias); - if (!found.bogus) prepared.cache[key] = found; - } - return {left: found.left, right: found.right, - top: varHeight ? found.rtop : found.top, - bottom: varHeight ? found.rbottom : found.bottom}; - } - - var nullRect = {left: 0, right: 0, top: 0, bottom: 0}; - - function measureCharInner(cm, prepared, ch, bias) { - var map = prepared.map; - - var node, start, end, collapse; - // First, search the line map for the text node corresponding to, - // or closest to, the target character. - for (var i = 0; i < map.length; i += 3) { - var mStart = map[i], mEnd = map[i + 1]; - if (ch < mStart) { - start = 0; end = 1; - collapse = "left"; - } else if (ch < mEnd) { - start = ch - mStart; - end = start + 1; - } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) { - end = mEnd - mStart; - start = end - 1; - if (ch >= mEnd) collapse = "right"; - } - if (start != null) { - node = map[i + 2]; - if (mStart == mEnd && bias == (node.insertLeft ? "left" : "right")) - collapse = bias; - if (bias == "left" && start == 0) - while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) { - node = map[(i -= 3) + 2]; - collapse = "left"; - } - if (bias == "right" && start == mEnd - mStart) - while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) { - node = map[(i += 3) + 2]; - collapse = "right"; - } - break; - } - } - - var rect; - if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates. - for (var i = 0; i < 4; i++) { // Retry a maximum of 4 times when nonsense rectangles are returned - while (start && isExtendingChar(prepared.line.text.charAt(mStart + start))) --start; - while (mStart + end < mEnd && isExtendingChar(prepared.line.text.charAt(mStart + end))) ++end; - if (ie && ie_version < 9 && start == 0 && end == mEnd - mStart) { - rect = node.parentNode.getBoundingClientRect(); - } else if (ie && cm.options.lineWrapping) { - var rects = range(node, start, end).getClientRects(); - if (rects.length) - rect = rects[bias == "right" ? rects.length - 1 : 0]; - else - rect = nullRect; - } else { - rect = range(node, start, end).getBoundingClientRect() || nullRect; - } - if (rect.left || rect.right || start == 0) break; - end = start; - start = start - 1; - collapse = "right"; - } - if (ie && ie_version < 11) rect = maybeUpdateRectForZooming(cm.display.measure, rect); - } else { // If it is a widget, simply get the box for the whole widget. - if (start > 0) collapse = bias = "right"; - var rects; - if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1) - rect = rects[bias == "right" ? rects.length - 1 : 0]; - else - rect = node.getBoundingClientRect(); - } - if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) { - var rSpan = node.parentNode.getClientRects()[0]; - if (rSpan) - rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; - else - rect = nullRect; - } - - var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top; - var mid = (rtop + rbot) / 2; - var heights = prepared.view.measure.heights; - for (var i = 0; i < heights.length - 1; i++) - if (mid < heights[i]) break; - var top = i ? heights[i - 1] : 0, bot = heights[i]; - var result = {left: (collapse == "right" ? rect.right : rect.left) - prepared.rect.left, - right: (collapse == "left" ? rect.left : rect.right) - prepared.rect.left, - top: top, bottom: bot}; - if (!rect.left && !rect.right) result.bogus = true; - if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; } - - return result; - } - - // Work around problem with bounding client rects on ranges being - // returned incorrectly when zoomed on IE10 and below. - function maybeUpdateRectForZooming(measure, rect) { - if (!window.screen || screen.logicalXDPI == null || - screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure)) - return rect; - var scaleX = screen.logicalXDPI / screen.deviceXDPI; - var scaleY = screen.logicalYDPI / screen.deviceYDPI; - return {left: rect.left * scaleX, right: rect.right * scaleX, - top: rect.top * scaleY, bottom: rect.bottom * scaleY}; - } - - function clearLineMeasurementCacheFor(lineView) { - if (lineView.measure) { - lineView.measure.cache = {}; - lineView.measure.heights = null; - if (lineView.rest) for (var i = 0; i < lineView.rest.length; i++) - lineView.measure.caches[i] = {}; - } - } - - function clearLineMeasurementCache(cm) { - cm.display.externalMeasure = null; - removeChildren(cm.display.lineMeasure); - for (var i = 0; i < cm.display.view.length; i++) - clearLineMeasurementCacheFor(cm.display.view[i]); - } - - function clearCaches(cm) { - clearLineMeasurementCache(cm); - cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null; - if (!cm.options.lineWrapping) cm.display.maxLineChanged = true; - cm.display.lineNumChars = null; - } - - function pageScrollX() { return window.pageXOffset || (document.documentElement || document.body).scrollLeft; } - function pageScrollY() { return window.pageYOffset || (document.documentElement || document.body).scrollTop; } - - // Converts a {top, bottom, left, right} box from line-local - // coordinates into another coordinate system. Context may be one of - // "line", "div" (display.lineDiv), "local"/null (editor), or "page". - function intoCoordSystem(cm, lineObj, rect, context) { - if (lineObj.widgets) for (var i = 0; i < lineObj.widgets.length; ++i) if (lineObj.widgets[i].above) { - var size = widgetHeight(lineObj.widgets[i]); - rect.top += size; rect.bottom += size; - } - if (context == "line") return rect; - if (!context) context = "local"; - var yOff = heightAtLine(lineObj); - if (context == "local") yOff += paddingTop(cm.display); - else yOff -= cm.display.viewOffset; - if (context == "page" || context == "window") { - var lOff = cm.display.lineSpace.getBoundingClientRect(); - yOff += lOff.top + (context == "window" ? 0 : pageScrollY()); - var xOff = lOff.left + (context == "window" ? 0 : pageScrollX()); - rect.left += xOff; rect.right += xOff; - } - rect.top += yOff; rect.bottom += yOff; - return rect; - } - - // Coverts a box from "div" coords to another coordinate system. - // Context may be "window", "page", "div", or "local"/null. - function fromCoordSystem(cm, coords, context) { - if (context == "div") return coords; - var left = coords.left, top = coords.top; - // First move into "page" coordinate system - if (context == "page") { - left -= pageScrollX(); - top -= pageScrollY(); - } else if (context == "local" || !context) { - var localBox = cm.display.sizer.getBoundingClientRect(); - left += localBox.left; - top += localBox.top; - } - - var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect(); - return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}; - } - - function charCoords(cm, pos, context, lineObj, bias) { - if (!lineObj) lineObj = getLine(cm.doc, pos.line); - return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context); - } - - // Returns a box for a given cursor position, which may have an - // 'other' property containing the position of the secondary cursor - // on a bidi boundary. - function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) { - lineObj = lineObj || getLine(cm.doc, pos.line); - if (!preparedMeasure) preparedMeasure = prepareMeasureForLine(cm, lineObj); - function get(ch, right) { - var m = measureCharPrepared(cm, preparedMeasure, ch, right ? "right" : "left", varHeight); - if (right) m.left = m.right; else m.right = m.left; - return intoCoordSystem(cm, lineObj, m, context); - } - function getBidi(ch, partPos) { - var part = order[partPos], right = part.level % 2; - if (ch == bidiLeft(part) && partPos && part.level < order[partPos - 1].level) { - part = order[--partPos]; - ch = bidiRight(part) - (part.level % 2 ? 0 : 1); - right = true; - } else if (ch == bidiRight(part) && partPos < order.length - 1 && part.level < order[partPos + 1].level) { - part = order[++partPos]; - ch = bidiLeft(part) - part.level % 2; - right = false; - } - if (right && ch == part.to && ch > part.from) return get(ch - 1); - return get(ch, right); - } - var order = getOrder(lineObj), ch = pos.ch; - if (!order) return get(ch); - var partPos = getBidiPartAt(order, ch); - var val = getBidi(ch, partPos); - if (bidiOther != null) val.other = getBidi(ch, bidiOther); - return val; - } - - // Used to cheaply estimate the coordinates for a position. Used for - // intermediate scroll updates. - function estimateCoords(cm, pos) { - var left = 0, pos = clipPos(cm.doc, pos); - if (!cm.options.lineWrapping) left = charWidth(cm.display) * pos.ch; - var lineObj = getLine(cm.doc, pos.line); - var top = heightAtLine(lineObj) + paddingTop(cm.display); - return {left: left, right: left, top: top, bottom: top + lineObj.height}; - } - - // Positions returned by coordsChar contain some extra information. - // xRel is the relative x position of the input coordinates compared - // to the found position (so xRel > 0 means the coordinates are to - // the right of the character position, for example). When outside - // is true, that means the coordinates lie outside the line's - // vertical range. - function PosWithInfo(line, ch, outside, xRel) { - var pos = Pos(line, ch); - pos.xRel = xRel; - if (outside) pos.outside = true; - return pos; - } - - // Compute the character position closest to the given coordinates. - // Input must be lineSpace-local ("div" coordinate system). - function coordsChar(cm, x, y) { - var doc = cm.doc; - y += cm.display.viewOffset; - if (y < 0) return PosWithInfo(doc.first, 0, true, -1); - var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1; - if (lineN > last) - return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, true, 1); - if (x < 0) x = 0; - - var lineObj = getLine(doc, lineN); - for (;;) { - var found = coordsCharInner(cm, lineObj, lineN, x, y); - var merged = collapsedSpanAtEnd(lineObj); - var mergedPos = merged && merged.find(0, true); - if (merged && (found.ch > mergedPos.from.ch || found.ch == mergedPos.from.ch && found.xRel > 0)) - lineN = lineNo(lineObj = mergedPos.to.line); - else - return found; - } - } - - function coordsCharInner(cm, lineObj, lineNo, x, y) { - var innerOff = y - heightAtLine(lineObj); - var wrongLine = false, adjust = 2 * cm.display.wrapper.clientWidth; - var preparedMeasure = prepareMeasureForLine(cm, lineObj); - - function getX(ch) { - var sp = cursorCoords(cm, Pos(lineNo, ch), "line", lineObj, preparedMeasure); - wrongLine = true; - if (innerOff > sp.bottom) return sp.left - adjust; - else if (innerOff < sp.top) return sp.left + adjust; - else wrongLine = false; - return sp.left; - } - - var bidi = getOrder(lineObj), dist = lineObj.text.length; - var from = lineLeft(lineObj), to = lineRight(lineObj); - var fromX = getX(from), fromOutside = wrongLine, toX = getX(to), toOutside = wrongLine; - - if (x > toX) return PosWithInfo(lineNo, to, toOutside, 1); - // Do a binary search between these bounds. - for (;;) { - if (bidi ? to == from || to == moveVisually(lineObj, from, 1) : to - from <= 1) { - var ch = x < fromX || x - fromX <= toX - x ? from : to; - var xDiff = x - (ch == from ? fromX : toX); - while (isExtendingChar(lineObj.text.charAt(ch))) ++ch; - var pos = PosWithInfo(lineNo, ch, ch == from ? fromOutside : toOutside, - xDiff < -1 ? -1 : xDiff > 1 ? 1 : 0); - return pos; - } - var step = Math.ceil(dist / 2), middle = from + step; - if (bidi) { - middle = from; - for (var i = 0; i < step; ++i) middle = moveVisually(lineObj, middle, 1); - } - var middleX = getX(middle); - if (middleX > x) {to = middle; toX = middleX; if (toOutside = wrongLine) toX += 1000; dist = step;} - else {from = middle; fromX = middleX; fromOutside = wrongLine; dist -= step;} - } - } - - var measureText; - // Compute the default text height. - function textHeight(display) { - if (display.cachedTextHeight != null) return display.cachedTextHeight; - if (measureText == null) { - measureText = elt("pre"); - // Measure a bunch of lines, for browsers that compute - // fractional heights. - for (var i = 0; i < 49; ++i) { - measureText.appendChild(document.createTextNode("x")); - measureText.appendChild(elt("br")); - } - measureText.appendChild(document.createTextNode("x")); - } - removeChildrenAndAdd(display.measure, measureText); - var height = measureText.offsetHeight / 50; - if (height > 3) display.cachedTextHeight = height; - removeChildren(display.measure); - return height || 1; - } - - // Compute the default character width. - function charWidth(display) { - if (display.cachedCharWidth != null) return display.cachedCharWidth; - var anchor = elt("span", "xxxxxxxxxx"); - var pre = elt("pre", [anchor]); - removeChildrenAndAdd(display.measure, pre); - var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10; - if (width > 2) display.cachedCharWidth = width; - return width || 10; - } - - // OPERATIONS - - // Operations are used to wrap a series of changes to the editor - // state in such a way that each change won't have to update the - // cursor and display (which would be awkward, slow, and - // error-prone). Instead, display updates are batched and then all - // combined and executed at once. - - var operationGroup = null; - - var nextOpId = 0; - // Start a new operation. - function startOperation(cm) { - cm.curOp = { - cm: cm, - viewChanged: false, // Flag that indicates that lines might need to be redrawn - startHeight: cm.doc.height, // Used to detect need to update scrollbar - forceUpdate: false, // Used to force a redraw - updateInput: null, // Whether to reset the input textarea - typing: false, // Whether this reset should be careful to leave existing text (for compositing) - changeObjs: null, // Accumulated changes, for firing change events - cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on - cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already - selectionChanged: false, // Whether the selection needs to be redrawn - updateMaxLine: false, // Set when the widest line needs to be determined anew - scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet - scrollToPos: null, // Used to scroll to a specific position - id: ++nextOpId // Unique ID - }; - if (operationGroup) { - operationGroup.ops.push(cm.curOp); - } else { - cm.curOp.ownsGroup = operationGroup = { - ops: [cm.curOp], - delayedCallbacks: [] - }; - } - } - - function fireCallbacksForOps(group) { - // Calls delayed callbacks and cursorActivity handlers until no - // new ones appear - var callbacks = group.delayedCallbacks, i = 0; - do { - for (; i < callbacks.length; i++) - callbacks[i](); - for (var j = 0; j < group.ops.length; j++) { - var op = group.ops[j]; - if (op.cursorActivityHandlers) - while (op.cursorActivityCalled < op.cursorActivityHandlers.length) - op.cursorActivityHandlers[op.cursorActivityCalled++](op.cm); - } - } while (i < callbacks.length); - } - - // Finish an operation, updating the display and signalling delayed events - function endOperation(cm) { - var op = cm.curOp, group = op.ownsGroup; - if (!group) return; - - try { fireCallbacksForOps(group); } - finally { - operationGroup = null; - for (var i = 0; i < group.ops.length; i++) - group.ops[i].cm.curOp = null; - endOperations(group); - } - } - - // The DOM updates done when an operation finishes are batched so - // that the minimum number of relayouts are required. - function endOperations(group) { - var ops = group.ops; - for (var i = 0; i < ops.length; i++) // Read DOM - endOperation_R1(ops[i]); - for (var i = 0; i < ops.length; i++) // Write DOM (maybe) - endOperation_W1(ops[i]); - for (var i = 0; i < ops.length; i++) // Read DOM - endOperation_R2(ops[i]); - for (var i = 0; i < ops.length; i++) // Write DOM (maybe) - endOperation_W2(ops[i]); - for (var i = 0; i < ops.length; i++) // Read DOM - endOperation_finish(ops[i]); - } - - function endOperation_R1(op) { - var cm = op.cm, display = cm.display; - if (op.updateMaxLine) findMaxLine(cm); - - op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null || - op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom || - op.scrollToPos.to.line >= display.viewTo) || - display.maxLineChanged && cm.options.lineWrapping; - op.update = op.mustUpdate && - new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate); - } - - function endOperation_W1(op) { - op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update); - } - - function endOperation_R2(op) { - var cm = op.cm, display = cm.display; - if (op.updatedDisplay) updateHeightsInViewport(cm); - - op.barMeasure = measureForScrollbars(cm); - - // If the max line changed since it was last measured, measure it, - // and ensure the document's width matches it. - // updateDisplay_W2 will use these properties to do the actual resizing - if (display.maxLineChanged && !cm.options.lineWrapping) { - op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3; - op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo + - scrollerCutOff - display.scroller.clientWidth); - } - - if (op.updatedDisplay || op.selectionChanged) - op.newSelectionNodes = drawSelection(cm); - } - - function endOperation_W2(op) { - var cm = op.cm; - - if (op.adjustWidthTo != null) { - cm.display.sizer.style.minWidth = op.adjustWidthTo + "px"; - if (op.maxScrollLeft < cm.doc.scrollLeft) - setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); - cm.display.maxLineChanged = false; - } - - if (op.newSelectionNodes) - showSelection(cm, op.newSelectionNodes); - if (op.updatedDisplay) - setDocumentHeight(cm, op.barMeasure); - if (op.updatedDisplay || op.startHeight != cm.doc.height) - updateScrollbars(cm, op.barMeasure); - - if (op.selectionChanged) restartBlink(cm); - - if (cm.state.focused && op.updateInput) - resetInput(cm, op.typing); - } - - function endOperation_finish(op) { - var cm = op.cm, display = cm.display, doc = cm.doc; - - if (op.adjustWidthTo != null && Math.abs(op.barMeasure.scrollWidth - cm.display.scroller.scrollWidth) > 1) - updateScrollbars(cm); - - if (op.updatedDisplay) postUpdateDisplay(cm, op.update); - - // Abort mouse wheel delta measurement, when scrolling explicitly - if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos)) - display.wheelStartX = display.wheelStartY = null; - - // Propagate the scroll position to the actual DOM scroller - if (op.scrollTop != null && (display.scroller.scrollTop != op.scrollTop || op.forceScroll)) { - var top = Math.max(0, Math.min(display.scroller.scrollHeight - display.scroller.clientHeight, op.scrollTop)); - display.scroller.scrollTop = display.scrollbarV.scrollTop = doc.scrollTop = top; - } - if (op.scrollLeft != null && (display.scroller.scrollLeft != op.scrollLeft || op.forceScroll)) { - var left = Math.max(0, Math.min(display.scroller.scrollWidth - display.scroller.clientWidth, op.scrollLeft)); - display.scroller.scrollLeft = display.scrollbarH.scrollLeft = doc.scrollLeft = left; - alignHorizontally(cm); - } - // If we need to scroll a specific position into view, do so. - if (op.scrollToPos) { - var coords = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from), - clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin); - if (op.scrollToPos.isCursor && cm.state.focused) maybeScrollWindow(cm, coords); - } - - // Fire events for markers that are hidden/unidden by editing or - // undoing - var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers; - if (hidden) for (var i = 0; i < hidden.length; ++i) - if (!hidden[i].lines.length) signal(hidden[i], "hide"); - if (unhidden) for (var i = 0; i < unhidden.length; ++i) - if (unhidden[i].lines.length) signal(unhidden[i], "unhide"); - - if (display.wrapper.offsetHeight) - doc.scrollTop = cm.display.scroller.scrollTop; - - // Apply workaround for two webkit bugs - if (op.updatedDisplay && webkit) { - if (cm.options.lineWrapping) - checkForWebkitWidthBug(cm, op.barMeasure); // (Issue #2420) - if (op.barMeasure.scrollWidth > op.barMeasure.clientWidth && - op.barMeasure.scrollWidth < op.barMeasure.clientWidth + 1 && - !hScrollbarTakesSpace(cm)) - updateScrollbars(cm); // (Issue #2562) - } - - // Fire change events, and delayed event handlers - if (op.changeObjs) - signal(cm, "changes", cm, op.changeObjs); - } - - // Run the given function in an operation - function runInOp(cm, f) { - if (cm.curOp) return f(); - startOperation(cm); - try { return f(); } - finally { endOperation(cm); } - } - // Wraps a function in an operation. Returns the wrapped function. - function operation(cm, f) { - return function() { - if (cm.curOp) return f.apply(cm, arguments); - startOperation(cm); - try { return f.apply(cm, arguments); } - finally { endOperation(cm); } - }; - } - // Used to add methods to editor and doc instances, wrapping them in - // operations. - function methodOp(f) { - return function() { - if (this.curOp) return f.apply(this, arguments); - startOperation(this); - try { return f.apply(this, arguments); } - finally { endOperation(this); } - }; - } - function docMethodOp(f) { - return function() { - var cm = this.cm; - if (!cm || cm.curOp) return f.apply(this, arguments); - startOperation(cm); - try { return f.apply(this, arguments); } - finally { endOperation(cm); } - }; - } - - // VIEW TRACKING - - // These objects are used to represent the visible (currently drawn) - // part of the document. A LineView may correspond to multiple - // logical lines, if those are connected by collapsed ranges. - function LineView(doc, line, lineN) { - // The starting line - this.line = line; - // Continuing lines, if any - this.rest = visualLineContinued(line); - // Number of logical lines in this visual line - this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1; - this.node = this.text = null; - this.hidden = lineIsHidden(doc, line); - } - - // Create a range of LineView objects for the given lines. - function buildViewArray(cm, from, to) { - var array = [], nextPos; - for (var pos = from; pos < to; pos = nextPos) { - var view = new LineView(cm.doc, getLine(cm.doc, pos), pos); - nextPos = pos + view.size; - array.push(view); - } - return array; - } - - // Updates the display.view data structure for a given change to the - // document. From and to are in pre-change coordinates. Lendiff is - // the amount of lines added or subtracted by the change. This is - // used for changes that span multiple lines, or change the way - // lines are divided into visual lines. regLineChange (below) - // registers single-line changes. - function regChange(cm, from, to, lendiff) { - if (from == null) from = cm.doc.first; - if (to == null) to = cm.doc.first + cm.doc.size; - if (!lendiff) lendiff = 0; - - var display = cm.display; - if (lendiff && to < display.viewTo && - (display.updateLineNumbers == null || display.updateLineNumbers > from)) - display.updateLineNumbers = from; - - cm.curOp.viewChanged = true; - - if (from >= display.viewTo) { // Change after - if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo) - resetView(cm); - } else if (to <= display.viewFrom) { // Change before - if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) { - resetView(cm); - } else { - display.viewFrom += lendiff; - display.viewTo += lendiff; - } - } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap - resetView(cm); - } else if (from <= display.viewFrom) { // Top overlap - var cut = viewCuttingPoint(cm, to, to + lendiff, 1); - if (cut) { - display.view = display.view.slice(cut.index); - display.viewFrom = cut.lineN; - display.viewTo += lendiff; - } else { - resetView(cm); - } - } else if (to >= display.viewTo) { // Bottom overlap - var cut = viewCuttingPoint(cm, from, from, -1); - if (cut) { - display.view = display.view.slice(0, cut.index); - display.viewTo = cut.lineN; - } else { - resetView(cm); - } - } else { // Gap in the middle - var cutTop = viewCuttingPoint(cm, from, from, -1); - var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1); - if (cutTop && cutBot) { - display.view = display.view.slice(0, cutTop.index) - .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN)) - .concat(display.view.slice(cutBot.index)); - display.viewTo += lendiff; - } else { - resetView(cm); - } - } - - var ext = display.externalMeasured; - if (ext) { - if (to < ext.lineN) - ext.lineN += lendiff; - else if (from < ext.lineN + ext.size) - display.externalMeasured = null; - } - } - - // Register a change to a single line. Type must be one of "text", - // "gutter", "class", "widget" - function regLineChange(cm, line, type) { - cm.curOp.viewChanged = true; - var display = cm.display, ext = cm.display.externalMeasured; - if (ext && line >= ext.lineN && line < ext.lineN + ext.size) - display.externalMeasured = null; - - if (line < display.viewFrom || line >= display.viewTo) return; - var lineView = display.view[findViewIndex(cm, line)]; - if (lineView.node == null) return; - var arr = lineView.changes || (lineView.changes = []); - if (indexOf(arr, type) == -1) arr.push(type); - } - - // Clear the view. - function resetView(cm) { - cm.display.viewFrom = cm.display.viewTo = cm.doc.first; - cm.display.view = []; - cm.display.viewOffset = 0; - } - - // Find the view element corresponding to a given line. Return null - // when the line isn't visible. - function findViewIndex(cm, n) { - if (n >= cm.display.viewTo) return null; - n -= cm.display.viewFrom; - if (n < 0) return null; - var view = cm.display.view; - for (var i = 0; i < view.length; i++) { - n -= view[i].size; - if (n < 0) return i; - } - } - - function viewCuttingPoint(cm, oldN, newN, dir) { - var index = findViewIndex(cm, oldN), diff, view = cm.display.view; - if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size) - return {index: index, lineN: newN}; - for (var i = 0, n = cm.display.viewFrom; i < index; i++) - n += view[i].size; - if (n != oldN) { - if (dir > 0) { - if (index == view.length - 1) return null; - diff = (n + view[index].size) - oldN; - index++; - } else { - diff = n - oldN; - } - oldN += diff; newN += diff; - } - while (visualLineNo(cm.doc, newN) != newN) { - if (index == (dir < 0 ? 0 : view.length - 1)) return null; - newN += dir * view[index - (dir < 0 ? 1 : 0)].size; - index += dir; - } - return {index: index, lineN: newN}; - } - - // Force the view to cover a given range, adding empty view element - // or clipping off existing ones as needed. - function adjustView(cm, from, to) { - var display = cm.display, view = display.view; - if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) { - display.view = buildViewArray(cm, from, to); - display.viewFrom = from; - } else { - if (display.viewFrom > from) - display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); - else if (display.viewFrom < from) - display.view = display.view.slice(findViewIndex(cm, from)); - display.viewFrom = from; - if (display.viewTo < to) - display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); - else if (display.viewTo > to) - display.view = display.view.slice(0, findViewIndex(cm, to)); - } - display.viewTo = to; - } - - // Count the number of lines in the view whose DOM representation is - // out of date (or nonexistent). - function countDirtyView(cm) { - var view = cm.display.view, dirty = 0; - for (var i = 0; i < view.length; i++) { - var lineView = view[i]; - if (!lineView.hidden && (!lineView.node || lineView.changes)) ++dirty; - } - return dirty; - } - - // INPUT HANDLING - - // Poll for input changes, using the normal rate of polling. This - // runs as long as the editor is focused. - function slowPoll(cm) { - if (cm.display.pollingFast) return; - cm.display.poll.set(cm.options.pollInterval, function() { - readInput(cm); - if (cm.state.focused) slowPoll(cm); - }); - } - - // When an event has just come in that is likely to add or change - // something in the input textarea, we poll faster, to ensure that - // the change appears on the screen quickly. - function fastPoll(cm) { - var missed = false; - cm.display.pollingFast = true; - function p() { - var changed = readInput(cm); - if (!changed && !missed) {missed = true; cm.display.poll.set(60, p);} - else {cm.display.pollingFast = false; slowPoll(cm);} - } - cm.display.poll.set(20, p); - } - - // This will be set to an array of strings when copying, so that, - // when pasting, we know what kind of selections the copied text - // was made out of. - var lastCopied = null; - - // Read input from the textarea, and update the document to match. - // When something is selected, it is present in the textarea, and - // selected (unless it is huge, in which case a placeholder is - // used). When nothing is selected, the cursor sits after previously - // seen text (can be empty), which is stored in prevInput (we must - // not reset the textarea when typing, because that breaks IME). - function readInput(cm) { - var input = cm.display.input, prevInput = cm.display.prevInput, doc = cm.doc; - // Since this is called a *lot*, try to bail out as cheaply as - // possible when it is clear that nothing happened. hasSelection - // will be the case when there is a lot of text in the textarea, - // in which case reading its value would be expensive. - if (!cm.state.focused || (hasSelection(input) && !prevInput) || isReadOnly(cm) || cm.options.disableInput) - return false; - // See paste handler for more on the fakedLastChar kludge - if (cm.state.pasteIncoming && cm.state.fakedLastChar) { - input.value = input.value.substring(0, input.value.length - 1); - cm.state.fakedLastChar = false; - } - var text = input.value; - // If nothing changed, bail. - if (text == prevInput && !cm.somethingSelected()) return false; - // Work around nonsensical selection resetting in IE9/10, and - // inexplicable appearance of private area unicode characters on - // some key combos in Mac (#2689). - if (ie && ie_version >= 9 && cm.display.inputHasSelection === text || - mac && /[\uf700-\uf7ff]/.test(text)) { - resetInput(cm); - return false; - } - - var withOp = !cm.curOp; - if (withOp) startOperation(cm); - cm.display.shift = false; - - if (text.charCodeAt(0) == 0x200b && doc.sel == cm.display.selForContextMenu && !prevInput) - prevInput = "\u200b"; - // Find the part of the input that is actually new - var same = 0, l = Math.min(prevInput.length, text.length); - while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) ++same; - var inserted = text.slice(same), textLines = splitLines(inserted); - - // When pasing N lines into N selections, insert one line per selection - var multiPaste = null; - if (cm.state.pasteIncoming && doc.sel.ranges.length > 1) { - if (lastCopied && lastCopied.join("\n") == inserted) - multiPaste = doc.sel.ranges.length % lastCopied.length == 0 && map(lastCopied, splitLines); - else if (textLines.length == doc.sel.ranges.length) - multiPaste = map(textLines, function(l) { return [l]; }); - } - - // Normal behavior is to insert the new text into every selection - for (var i = doc.sel.ranges.length - 1; i >= 0; i--) { - var range = doc.sel.ranges[i]; - var from = range.from(), to = range.to(); - // Handle deletion - if (same < prevInput.length) - from = Pos(from.line, from.ch - (prevInput.length - same)); - // Handle overwrite - else if (cm.state.overwrite && range.empty() && !cm.state.pasteIncoming) - to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); - var updateInput = cm.curOp.updateInput; - var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i % multiPaste.length] : textLines, - origin: cm.state.pasteIncoming ? "paste" : cm.state.cutIncoming ? "cut" : "+input"}; - makeChange(cm.doc, changeEvent); - signalLater(cm, "inputRead", cm, changeEvent); - // When an 'electric' character is inserted, immediately trigger a reindent - if (inserted && !cm.state.pasteIncoming && cm.options.electricChars && - cm.options.smartIndent && range.head.ch < 100 && - (!i || doc.sel.ranges[i - 1].head.line != range.head.line)) { - var mode = cm.getModeAt(range.head); - var end = changeEnd(changeEvent); - if (mode.electricChars) { - for (var j = 0; j < mode.electricChars.length; j++) - if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) { - indentLine(cm, end.line, "smart"); - break; - } - } else if (mode.electricInput) { - if (mode.electricInput.test(getLine(doc, end.line).text.slice(0, end.ch))) - indentLine(cm, end.line, "smart"); - } - } - } - ensureCursorVisible(cm); - cm.curOp.updateInput = updateInput; - cm.curOp.typing = true; - - // Don't leave long text in the textarea, since it makes further polling slow - if (text.length > 1000 || text.indexOf("\n") > -1) input.value = cm.display.prevInput = ""; - else cm.display.prevInput = text; - if (withOp) endOperation(cm); - cm.state.pasteIncoming = cm.state.cutIncoming = false; - return true; - } - - // Reset the input to correspond to the selection (or to be empty, - // when not typing and nothing is selected) - function resetInput(cm, typing) { - var minimal, selected, doc = cm.doc; - if (cm.somethingSelected()) { - cm.display.prevInput = ""; - var range = doc.sel.primary(); - minimal = hasCopyEvent && - (range.to().line - range.from().line > 100 || (selected = cm.getSelection()).length > 1000); - var content = minimal ? "-" : selected || cm.getSelection(); - cm.display.input.value = content; - if (cm.state.focused) selectInput(cm.display.input); - if (ie && ie_version >= 9) cm.display.inputHasSelection = content; - } else if (!typing) { - cm.display.prevInput = cm.display.input.value = ""; - if (ie && ie_version >= 9) cm.display.inputHasSelection = null; - } - cm.display.inaccurateSelection = minimal; - } - - function focusInput(cm) { - if (cm.options.readOnly != "nocursor" && (!mobile || activeElt() != cm.display.input)) - cm.display.input.focus(); - } - - function ensureFocus(cm) { - if (!cm.state.focused) { focusInput(cm); onFocus(cm); } - } - - function isReadOnly(cm) { - return cm.options.readOnly || cm.doc.cantEdit; - } - - // EVENT HANDLERS - - // Attach the necessary event handlers when initializing the editor - function registerEventHandlers(cm) { - var d = cm.display; - on(d.scroller, "mousedown", operation(cm, onMouseDown)); - // Older IE's will not fire a second mousedown for a double click - if (ie && ie_version < 11) - on(d.scroller, "dblclick", operation(cm, function(e) { - if (signalDOMEvent(cm, e)) return; - var pos = posFromMouse(cm, e); - if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) return; - e_preventDefault(e); - var word = cm.findWordAt(pos); - extendSelection(cm.doc, word.anchor, word.head); - })); - else - on(d.scroller, "dblclick", function(e) { signalDOMEvent(cm, e) || e_preventDefault(e); }); - // Prevent normal selection in the editor (we handle our own) - on(d.lineSpace, "selectstart", function(e) { - if (!eventInWidget(d, e)) e_preventDefault(e); - }); - // Some browsers fire contextmenu *after* opening the menu, at - // which point we can't mess with it anymore. Context menu is - // handled in onMouseDown for these browsers. - if (!captureRightClick) on(d.scroller, "contextmenu", function(e) {onContextMenu(cm, e);}); - - // Sync scrolling between fake scrollbars and real scrollable - // area, ensure viewport is updated when scrolling. - on(d.scroller, "scroll", function() { - if (d.scroller.clientHeight) { - setScrollTop(cm, d.scroller.scrollTop); - setScrollLeft(cm, d.scroller.scrollLeft, true); - signal(cm, "scroll", cm); - } - }); - on(d.scrollbarV, "scroll", function() { - if (d.scroller.clientHeight) setScrollTop(cm, d.scrollbarV.scrollTop); - }); - on(d.scrollbarH, "scroll", function() { - if (d.scroller.clientHeight) setScrollLeft(cm, d.scrollbarH.scrollLeft); - }); - - // Listen to wheel events in order to try and update the viewport on time. - on(d.scroller, "mousewheel", function(e){onScrollWheel(cm, e);}); - on(d.scroller, "DOMMouseScroll", function(e){onScrollWheel(cm, e);}); - - // Prevent clicks in the scrollbars from killing focus - function reFocus() { if (cm.state.focused) setTimeout(bind(focusInput, cm), 0); } - on(d.scrollbarH, "mousedown", reFocus); - on(d.scrollbarV, "mousedown", reFocus); - // Prevent wrapper from ever scrolling - on(d.wrapper, "scroll", function() { d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; }); - - on(d.input, "keyup", function(e) { onKeyUp.call(cm, e); }); - on(d.input, "input", function() { - if (ie && ie_version >= 9 && cm.display.inputHasSelection) cm.display.inputHasSelection = null; - fastPoll(cm); - }); - on(d.input, "keydown", operation(cm, onKeyDown)); - on(d.input, "keypress", operation(cm, onKeyPress)); - on(d.input, "focus", bind(onFocus, cm)); - on(d.input, "blur", bind(onBlur, cm)); - - function drag_(e) { - if (!signalDOMEvent(cm, e)) e_stop(e); - } - if (cm.options.dragDrop) { - on(d.scroller, "dragstart", function(e){onDragStart(cm, e);}); - on(d.scroller, "dragenter", drag_); - on(d.scroller, "dragover", drag_); - on(d.scroller, "drop", operation(cm, onDrop)); - } - on(d.scroller, "paste", function(e) { - if (eventInWidget(d, e)) return; - cm.state.pasteIncoming = true; - focusInput(cm); - fastPoll(cm); - }); - on(d.input, "paste", function() { - // Workaround for webkit bug https://bugs.webkit.org/show_bug.cgi?id=90206 - // Add a char to the end of textarea before paste occur so that - // selection doesn't span to the end of textarea. - if (webkit && !cm.state.fakedLastChar && !(new Date - cm.state.lastMiddleDown < 200)) { - var start = d.input.selectionStart, end = d.input.selectionEnd; - d.input.value += "$"; - // The selection end needs to be set before the start, otherwise there - // can be an intermediate non-empty selection between the two, which - // can override the middle-click paste buffer on linux and cause the - // wrong thing to get pasted. - d.input.selectionEnd = end; - d.input.selectionStart = start; - cm.state.fakedLastChar = true; - } - cm.state.pasteIncoming = true; - fastPoll(cm); - }); - - function prepareCopyCut(e) { - if (cm.somethingSelected()) { - lastCopied = cm.getSelections(); - if (d.inaccurateSelection) { - d.prevInput = ""; - d.inaccurateSelection = false; - d.input.value = lastCopied.join("\n"); - selectInput(d.input); - } - } else { - var text = [], ranges = []; - for (var i = 0; i < cm.doc.sel.ranges.length; i++) { - var line = cm.doc.sel.ranges[i].head.line; - var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)}; - ranges.push(lineRange); - text.push(cm.getRange(lineRange.anchor, lineRange.head)); - } - if (e.type == "cut") { - cm.setSelections(ranges, null, sel_dontScroll); - } else { - d.prevInput = ""; - d.input.value = text.join("\n"); - selectInput(d.input); - } - lastCopied = text; - } - if (e.type == "cut") cm.state.cutIncoming = true; - } - on(d.input, "cut", prepareCopyCut); - on(d.input, "copy", prepareCopyCut); - - // Needed to handle Tab key in KHTML - if (khtml) on(d.sizer, "mouseup", function() { - if (activeElt() == d.input) d.input.blur(); - focusInput(cm); - }); - } - - // Called when the window resizes - function onResize(cm) { - // Might be a text scaling operation, clear size caches. - var d = cm.display; - d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null; - cm.setSize(); - } - - // MOUSE EVENTS - - // Return true when the given mouse event happened in a widget - function eventInWidget(display, e) { - for (var n = e_target(e); n != display.wrapper; n = n.parentNode) { - if (!n || n.ignoreEvents || n.parentNode == display.sizer && n != display.mover) return true; - } - } - - // Given a mouse event, find the corresponding position. If liberal - // is false, it checks whether a gutter or scrollbar was clicked, - // and returns null if it was. forRect is used by rectangular - // selections, and tries to estimate a character position even for - // coordinates beyond the right of the text. - function posFromMouse(cm, e, liberal, forRect) { - var display = cm.display; - if (!liberal) { - var target = e_target(e); - if (target == display.scrollbarH || target == display.scrollbarV || - target == display.scrollbarFiller || target == display.gutterFiller) return null; - } - var x, y, space = display.lineSpace.getBoundingClientRect(); - // Fails unpredictably on IE[67] when mouse is dragged around quickly. - try { x = e.clientX - space.left; y = e.clientY - space.top; } - catch (e) { return null; } - var coords = coordsChar(cm, x, y), line; - if (forRect && coords.xRel == 1 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) { - var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length; - coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff)); - } - return coords; - } - - // A mouse down can be a single click, double click, triple click, - // start of selection drag, start of text drag, new cursor - // (ctrl-click), rectangle drag (alt-drag), or xwin - // middle-click-paste. Or it might be a click on something we should - // not interfere with, such as a scrollbar or widget. - function onMouseDown(e) { - if (signalDOMEvent(this, e)) return; - var cm = this, display = cm.display; - display.shift = e.shiftKey; - - if (eventInWidget(display, e)) { - if (!webkit) { - // Briefly turn off draggability, to allow widgets to do - // normal dragging things. - display.scroller.draggable = false; - setTimeout(function(){display.scroller.draggable = true;}, 100); - } - return; - } - if (clickInGutter(cm, e)) return; - var start = posFromMouse(cm, e); - window.focus(); - - switch (e_button(e)) { - case 1: - if (start) - leftButtonDown(cm, e, start); - else if (e_target(e) == display.scroller) - e_preventDefault(e); - break; - case 2: - if (webkit) cm.state.lastMiddleDown = +new Date; - if (start) extendSelection(cm.doc, start); - setTimeout(bind(focusInput, cm), 20); - e_preventDefault(e); - break; - case 3: - if (captureRightClick) onContextMenu(cm, e); - break; - } - } - - var lastClick, lastDoubleClick; - function leftButtonDown(cm, e, start) { - setTimeout(bind(ensureFocus, cm), 0); - - var now = +new Date, type; - if (lastDoubleClick && lastDoubleClick.time > now - 400 && cmp(lastDoubleClick.pos, start) == 0) { - type = "triple"; - } else if (lastClick && lastClick.time > now - 400 && cmp(lastClick.pos, start) == 0) { - type = "double"; - lastDoubleClick = {time: now, pos: start}; - } else { - type = "single"; - lastClick = {time: now, pos: start}; - } - - var sel = cm.doc.sel, modifier = mac ? e.metaKey : e.ctrlKey; - if (cm.options.dragDrop && dragAndDrop && !isReadOnly(cm) && - type == "single" && sel.contains(start) > -1 && sel.somethingSelected()) - leftButtonStartDrag(cm, e, start, modifier); - else - leftButtonSelect(cm, e, start, type, modifier); - } - - // Start a text drag. When it ends, see if any dragging actually - // happen, and treat as a click if it didn't. - function leftButtonStartDrag(cm, e, start, modifier) { - var display = cm.display; - var dragEnd = operation(cm, function(e2) { - if (webkit) display.scroller.draggable = false; - cm.state.draggingText = false; - off(document, "mouseup", dragEnd); - off(display.scroller, "drop", dragEnd); - if (Math.abs(e.clientX - e2.clientX) + Math.abs(e.clientY - e2.clientY) < 10) { - e_preventDefault(e2); - if (!modifier) - extendSelection(cm.doc, start); - focusInput(cm); - // Work around unexplainable focus problem in IE9 (#2127) - if (ie && ie_version == 9) - setTimeout(function() {document.body.focus(); focusInput(cm);}, 20); - } - }); - // Let the drag handler handle this. - if (webkit) display.scroller.draggable = true; - cm.state.draggingText = dragEnd; - // IE's approach to draggable - if (display.scroller.dragDrop) display.scroller.dragDrop(); - on(document, "mouseup", dragEnd); - on(display.scroller, "drop", dragEnd); - } - - // Normal selection, as opposed to text dragging. - function leftButtonSelect(cm, e, start, type, addNew) { - var display = cm.display, doc = cm.doc; - e_preventDefault(e); - - var ourRange, ourIndex, startSel = doc.sel; - if (addNew && !e.shiftKey) { - ourIndex = doc.sel.contains(start); - if (ourIndex > -1) - ourRange = doc.sel.ranges[ourIndex]; - else - ourRange = new Range(start, start); - } else { - ourRange = doc.sel.primary(); - } - - if (e.altKey) { - type = "rect"; - if (!addNew) ourRange = new Range(start, start); - start = posFromMouse(cm, e, true, true); - ourIndex = -1; - } else if (type == "double") { - var word = cm.findWordAt(start); - if (cm.display.shift || doc.extend) - ourRange = extendRange(doc, ourRange, word.anchor, word.head); - else - ourRange = word; - } else if (type == "triple") { - var line = new Range(Pos(start.line, 0), clipPos(doc, Pos(start.line + 1, 0))); - if (cm.display.shift || doc.extend) - ourRange = extendRange(doc, ourRange, line.anchor, line.head); - else - ourRange = line; - } else { - ourRange = extendRange(doc, ourRange, start); - } - - if (!addNew) { - ourIndex = 0; - setSelection(doc, new Selection([ourRange], 0), sel_mouse); - startSel = doc.sel; - } else if (ourIndex > -1) { - replaceOneSelection(doc, ourIndex, ourRange, sel_mouse); - } else { - ourIndex = doc.sel.ranges.length; - setSelection(doc, normalizeSelection(doc.sel.ranges.concat([ourRange]), ourIndex), - {scroll: false, origin: "*mouse"}); - } - - var lastPos = start; - function extendTo(pos) { - if (cmp(lastPos, pos) == 0) return; - lastPos = pos; - - if (type == "rect") { - var ranges = [], tabSize = cm.options.tabSize; - var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize); - var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize); - var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol); - for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line)); - line <= end; line++) { - var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize); - if (left == right) - ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); - else if (text.length > leftPos) - ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); - } - if (!ranges.length) ranges.push(new Range(start, start)); - setSelection(doc, normalizeSelection(startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex), - {origin: "*mouse", scroll: false}); - cm.scrollIntoView(pos); - } else { - var oldRange = ourRange; - var anchor = oldRange.anchor, head = pos; - if (type != "single") { - if (type == "double") - var range = cm.findWordAt(pos); - else - var range = new Range(Pos(pos.line, 0), clipPos(doc, Pos(pos.line + 1, 0))); - if (cmp(range.anchor, anchor) > 0) { - head = range.head; - anchor = minPos(oldRange.from(), range.anchor); - } else { - head = range.anchor; - anchor = maxPos(oldRange.to(), range.head); - } - } - var ranges = startSel.ranges.slice(0); - ranges[ourIndex] = new Range(clipPos(doc, anchor), head); - setSelection(doc, normalizeSelection(ranges, ourIndex), sel_mouse); - } - } - - var editorSize = display.wrapper.getBoundingClientRect(); - // Used to ensure timeout re-tries don't fire when another extend - // happened in the meantime (clearTimeout isn't reliable -- at - // least on Chrome, the timeouts still happen even when cleared, - // if the clear happens after their scheduled firing time). - var counter = 0; - - function extend(e) { - var curCount = ++counter; - var cur = posFromMouse(cm, e, true, type == "rect"); - if (!cur) return; - if (cmp(cur, lastPos) != 0) { - ensureFocus(cm); - extendTo(cur); - var visible = visibleLines(display, doc); - if (cur.line >= visible.to || cur.line < visible.from) - setTimeout(operation(cm, function(){if (counter == curCount) extend(e);}), 150); - } else { - var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0; - if (outside) setTimeout(operation(cm, function() { - if (counter != curCount) return; - display.scroller.scrollTop += outside; - extend(e); - }), 50); - } - } - - function done(e) { - counter = Infinity; - e_preventDefault(e); - focusInput(cm); - off(document, "mousemove", move); - off(document, "mouseup", up); - doc.history.lastSelOrigin = null; - } - - var move = operation(cm, function(e) { - if (!e_button(e)) done(e); - else extend(e); - }); - var up = operation(cm, done); - on(document, "mousemove", move); - on(document, "mouseup", up); - } - - // Determines whether an event happened in the gutter, and fires the - // handlers for the corresponding event. - function gutterEvent(cm, e, type, prevent, signalfn) { - try { var mX = e.clientX, mY = e.clientY; } - catch(e) { return false; } - if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) return false; - if (prevent) e_preventDefault(e); - - var display = cm.display; - var lineBox = display.lineDiv.getBoundingClientRect(); - - if (mY > lineBox.bottom || !hasHandler(cm, type)) return e_defaultPrevented(e); - mY -= lineBox.top - display.viewOffset; - - for (var i = 0; i < cm.options.gutters.length; ++i) { - var g = display.gutters.childNodes[i]; - if (g && g.getBoundingClientRect().right >= mX) { - var line = lineAtHeight(cm.doc, mY); - var gutter = cm.options.gutters[i]; - signalfn(cm, type, cm, line, gutter, e); - return e_defaultPrevented(e); - } - } - } - - function clickInGutter(cm, e) { - return gutterEvent(cm, e, "gutterClick", true, signalLater); - } - - // Kludge to work around strange IE behavior where it'll sometimes - // re-fire a series of drag-related events right after the drop (#1551) - var lastDrop = 0; - - function onDrop(e) { - var cm = this; - if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) - return; - e_preventDefault(e); - if (ie) lastDrop = +new Date; - var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files; - if (!pos || isReadOnly(cm)) return; - // Might be a file drop, in which case we simply extract the text - // and insert it. - if (files && files.length && window.FileReader && window.File) { - var n = files.length, text = Array(n), read = 0; - var loadFile = function(file, i) { - var reader = new FileReader; - reader.onload = operation(cm, function() { - text[i] = reader.result; - if (++read == n) { - pos = clipPos(cm.doc, pos); - var change = {from: pos, to: pos, text: splitLines(text.join("\n")), origin: "paste"}; - makeChange(cm.doc, change); - setSelectionReplaceHistory(cm.doc, simpleSelection(pos, changeEnd(change))); - } - }); - reader.readAsText(file); - }; - for (var i = 0; i < n; ++i) loadFile(files[i], i); - } else { // Normal drop - // Don't do a replace if the drop happened inside of the selected text. - if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) { - cm.state.draggingText(e); - // Ensure the editor is re-focused - setTimeout(bind(focusInput, cm), 20); - return; - } - try { - var text = e.dataTransfer.getData("Text"); - if (text) { - if (cm.state.draggingText && !(mac ? e.metaKey : e.ctrlKey)) - var selected = cm.listSelections(); - setSelectionNoUndo(cm.doc, simpleSelection(pos, pos)); - if (selected) for (var i = 0; i < selected.length; ++i) - replaceRange(cm.doc, "", selected[i].anchor, selected[i].head, "drag"); - cm.replaceSelection(text, "around", "paste"); - focusInput(cm); - } - } - catch(e){} - } - } - - function onDragStart(cm, e) { - if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return; } - if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) return; - - e.dataTransfer.setData("Text", cm.getSelection()); - - // Use dummy image instead of default browsers image. - // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there. - if (e.dataTransfer.setDragImage && !safari) { - var img = elt("img", null, null, "position: fixed; left: 0; top: 0;"); - img.src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="; - if (presto) { - img.width = img.height = 1; - cm.display.wrapper.appendChild(img); - // Force a relayout, or Opera won't use our image for some obscure reason - img._top = img.offsetTop; - } - e.dataTransfer.setDragImage(img, 0, 0); - if (presto) img.parentNode.removeChild(img); - } - } - - // SCROLL EVENTS - - // Sync the scrollable area and scrollbars, ensure the viewport - // covers the visible area. - function setScrollTop(cm, val) { - if (Math.abs(cm.doc.scrollTop - val) < 2) return; - cm.doc.scrollTop = val; - if (!gecko) updateDisplaySimple(cm, {top: val}); - if (cm.display.scroller.scrollTop != val) cm.display.scroller.scrollTop = val; - if (cm.display.scrollbarV.scrollTop != val) cm.display.scrollbarV.scrollTop = val; - if (gecko) updateDisplaySimple(cm); - startWorker(cm, 100); - } - // Sync scroller and scrollbar, ensure the gutter elements are - // aligned. - function setScrollLeft(cm, val, isScroller) { - if (isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) return; - val = Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth); - cm.doc.scrollLeft = val; - alignHorizontally(cm); - if (cm.display.scroller.scrollLeft != val) cm.display.scroller.scrollLeft = val; - if (cm.display.scrollbarH.scrollLeft != val) cm.display.scrollbarH.scrollLeft = val; - } - - // Since the delta values reported on mouse wheel events are - // unstandardized between browsers and even browser versions, and - // generally horribly unpredictable, this code starts by measuring - // the scroll effect that the first few mouse wheel events have, - // and, from that, detects the way it can convert deltas to pixel - // offsets afterwards. - // - // The reason we want to know the amount a wheel event will scroll - // is that it gives us a chance to update the display before the - // actual scrolling happens, reducing flickering. - - var wheelSamples = 0, wheelPixelsPerUnit = null; - // Fill in a browser-detected starting value on browsers where we - // know one. These don't have to be accurate -- the result of them - // being wrong would just be a slight flicker on the first wheel - // scroll (if it is large enough). - if (ie) wheelPixelsPerUnit = -.53; - else if (gecko) wheelPixelsPerUnit = 15; - else if (chrome) wheelPixelsPerUnit = -.7; - else if (safari) wheelPixelsPerUnit = -1/3; - - function onScrollWheel(cm, e) { - var dx = e.wheelDeltaX, dy = e.wheelDeltaY; - if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) dx = e.detail; - if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) dy = e.detail; - else if (dy == null) dy = e.wheelDelta; - - var display = cm.display, scroll = display.scroller; - // Quit if there's nothing to scroll here - if (!(dx && scroll.scrollWidth > scroll.clientWidth || - dy && scroll.scrollHeight > scroll.clientHeight)) return; - - // Webkit browsers on OS X abort momentum scrolls when the target - // of the scroll event is removed from the scrollable element. - // This hack (see related code in patchDisplay) makes sure the - // element is kept around. - if (dy && mac && webkit) { - outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) { - for (var i = 0; i < view.length; i++) { - if (view[i].node == cur) { - cm.display.currentWheelTarget = cur; - break outer; - } - } - } - } - - // On some browsers, horizontal scrolling will cause redraws to - // happen before the gutter has been realigned, causing it to - // wriggle around in a most unseemly way. When we have an - // estimated pixels/delta value, we just handle horizontal - // scrolling entirely here. It'll be slightly off from native, but - // better than glitching out. - if (dx && !gecko && !presto && wheelPixelsPerUnit != null) { - if (dy) - setScrollTop(cm, Math.max(0, Math.min(scroll.scrollTop + dy * wheelPixelsPerUnit, scroll.scrollHeight - scroll.clientHeight))); - setScrollLeft(cm, Math.max(0, Math.min(scroll.scrollLeft + dx * wheelPixelsPerUnit, scroll.scrollWidth - scroll.clientWidth))); - e_preventDefault(e); - display.wheelStartX = null; // Abort measurement, if in progress - return; - } - - // 'Project' the visible viewport to cover the area that is being - // scrolled into view (if we know enough to estimate it). - if (dy && wheelPixelsPerUnit != null) { - var pixels = dy * wheelPixelsPerUnit; - var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight; - if (pixels < 0) top = Math.max(0, top + pixels - 50); - else bot = Math.min(cm.doc.height, bot + pixels + 50); - updateDisplaySimple(cm, {top: top, bottom: bot}); - } - - if (wheelSamples < 20) { - if (display.wheelStartX == null) { - display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop; - display.wheelDX = dx; display.wheelDY = dy; - setTimeout(function() { - if (display.wheelStartX == null) return; - var movedX = scroll.scrollLeft - display.wheelStartX; - var movedY = scroll.scrollTop - display.wheelStartY; - var sample = (movedY && display.wheelDY && movedY / display.wheelDY) || - (movedX && display.wheelDX && movedX / display.wheelDX); - display.wheelStartX = display.wheelStartY = null; - if (!sample) return; - wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1); - ++wheelSamples; - }, 200); - } else { - display.wheelDX += dx; display.wheelDY += dy; - } - } - } - - // KEY EVENTS - - // Run a handler that was bound to a key. - function doHandleBinding(cm, bound, dropShift) { - if (typeof bound == "string") { - bound = commands[bound]; - if (!bound) return false; - } - // Ensure previous input has been read, so that the handler sees a - // consistent view of the document - if (cm.display.pollingFast && readInput(cm)) cm.display.pollingFast = false; - var prevShift = cm.display.shift, done = false; - try { - if (isReadOnly(cm)) cm.state.suppressEdits = true; - if (dropShift) cm.display.shift = false; - done = bound(cm) != Pass; - } finally { - cm.display.shift = prevShift; - cm.state.suppressEdits = false; - } - return done; - } - - // Collect the currently active keymaps. - function allKeyMaps(cm) { - var maps = cm.state.keyMaps.slice(0); - if (cm.options.extraKeys) maps.push(cm.options.extraKeys); - maps.push(cm.options.keyMap); - return maps; - } - - var maybeTransition; - // Handle a key from the keydown event. - function handleKeyBinding(cm, e) { - // Handle automatic keymap transitions - var startMap = getKeyMap(cm.options.keyMap), next = startMap.auto; - clearTimeout(maybeTransition); - if (next && !isModifierKey(e)) maybeTransition = setTimeout(function() { - if (getKeyMap(cm.options.keyMap) == startMap) { - cm.options.keyMap = (next.call ? next.call(null, cm) : next); - keyMapChanged(cm); - } - }, 50); - - var name = keyName(e, true), handled = false; - if (!name) return false; - var keymaps = allKeyMaps(cm); - - if (e.shiftKey) { - // First try to resolve full name (including 'Shift-'). Failing - // that, see if there is a cursor-motion command (starting with - // 'go') bound to the keyname without 'Shift-'. - handled = lookupKey("Shift-" + name, keymaps, function(b) {return doHandleBinding(cm, b, true);}) - || lookupKey(name, keymaps, function(b) { - if (typeof b == "string" ? /^go[A-Z]/.test(b) : b.motion) - return doHandleBinding(cm, b); - }); - } else { - handled = lookupKey(name, keymaps, function(b) { return doHandleBinding(cm, b); }); - } - - if (handled) { - e_preventDefault(e); - restartBlink(cm); - signalLater(cm, "keyHandled", cm, name, e); - } - return handled; - } - - // Handle a key from the keypress event - function handleCharBinding(cm, e, ch) { - var handled = lookupKey("'" + ch + "'", allKeyMaps(cm), - function(b) { return doHandleBinding(cm, b, true); }); - if (handled) { - e_preventDefault(e); - restartBlink(cm); - signalLater(cm, "keyHandled", cm, "'" + ch + "'", e); - } - return handled; - } - - var lastStoppedKey = null; - function onKeyDown(e) { - var cm = this; - ensureFocus(cm); - if (signalDOMEvent(cm, e)) return; - // IE does strange things with escape. - if (ie && ie_version < 11 && e.keyCode == 27) e.returnValue = false; - var code = e.keyCode; - cm.display.shift = code == 16 || e.shiftKey; - var handled = handleKeyBinding(cm, e); - if (presto) { - lastStoppedKey = handled ? code : null; - // Opera has no cut event... we try to at least catch the key combo - if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey)) - cm.replaceSelection("", null, "cut"); - } - - // Turn mouse into crosshair when Alt is held on Mac. - if (code == 18 && !/\bCodeMirror-crosshair\b/.test(cm.display.lineDiv.className)) - showCrossHair(cm); - } - - function showCrossHair(cm) { - var lineDiv = cm.display.lineDiv; - addClass(lineDiv, "CodeMirror-crosshair"); - - function up(e) { - if (e.keyCode == 18 || !e.altKey) { - rmClass(lineDiv, "CodeMirror-crosshair"); - off(document, "keyup", up); - off(document, "mouseover", up); - } - } - on(document, "keyup", up); - on(document, "mouseover", up); - } - - function onKeyUp(e) { - if (e.keyCode == 16) this.doc.sel.shift = false; - signalDOMEvent(this, e); - } - - function onKeyPress(e) { - var cm = this; - if (signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) return; - var keyCode = e.keyCode, charCode = e.charCode; - if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return;} - if (((presto && (!e.which || e.which < 10)) || khtml) && handleKeyBinding(cm, e)) return; - var ch = String.fromCharCode(charCode == null ? keyCode : charCode); - if (handleCharBinding(cm, e, ch)) return; - if (ie && ie_version >= 9) cm.display.inputHasSelection = null; - fastPoll(cm); - } - - // FOCUS/BLUR EVENTS - - function onFocus(cm) { - if (cm.options.readOnly == "nocursor") return; - if (!cm.state.focused) { - signal(cm, "focus", cm); - cm.state.focused = true; - addClass(cm.display.wrapper, "CodeMirror-focused"); - // The prevInput test prevents this from firing when a context - // menu is closed (since the resetInput would kill the - // select-all detection hack) - if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) { - resetInput(cm); - if (webkit) setTimeout(bind(resetInput, cm, true), 0); // Issue #1730 - } - } - slowPoll(cm); - restartBlink(cm); - } - function onBlur(cm) { - if (cm.state.focused) { - signal(cm, "blur", cm); - cm.state.focused = false; - rmClass(cm.display.wrapper, "CodeMirror-focused"); - } - clearInterval(cm.display.blinker); - setTimeout(function() {if (!cm.state.focused) cm.display.shift = false;}, 150); - } - - // CONTEXT MENU HANDLING - - // To make the context menu work, we need to briefly unhide the - // textarea (making it as unobtrusive as possible) to let the - // right-click take effect on it. - function onContextMenu(cm, e) { - if (signalDOMEvent(cm, e, "contextmenu")) return; - var display = cm.display; - if (eventInWidget(display, e) || contextMenuInGutter(cm, e)) return; - - var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop; - if (!pos || presto) return; // Opera is difficult. - - // Reset the current text selection only if the click is done outside of the selection - // and 'resetSelectionOnContextMenu' option is true. - var reset = cm.options.resetSelectionOnContextMenu; - if (reset && cm.doc.sel.contains(pos) == -1) - operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); - - var oldCSS = display.input.style.cssText; - display.inputDiv.style.position = "absolute"; - display.input.style.cssText = "position: fixed; width: 30px; height: 30px; top: " + (e.clientY - 5) + - "px; left: " + (e.clientX - 5) + "px; z-index: 1000; background: " + - (ie ? "rgba(255, 255, 255, .05)" : "transparent") + - "; outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);"; - if (webkit) var oldScrollY = window.scrollY; // Work around Chrome issue (#2712) - focusInput(cm); - if (webkit) window.scrollTo(null, oldScrollY); - resetInput(cm); - // Adds "Select all" to context menu in FF - if (!cm.somethingSelected()) display.input.value = display.prevInput = " "; - display.selForContextMenu = cm.doc.sel; - clearTimeout(display.detectingSelectAll); - - // Select-all will be greyed out if there's nothing to select, so - // this adds a zero-width space so that we can later check whether - // it got selected. - function prepareSelectAllHack() { - if (display.input.selectionStart != null) { - var selected = cm.somethingSelected(); - var extval = display.input.value = "\u200b" + (selected ? display.input.value : ""); - display.prevInput = selected ? "" : "\u200b"; - display.input.selectionStart = 1; display.input.selectionEnd = extval.length; - // Re-set this, in case some other handler touched the - // selection in the meantime. - display.selForContextMenu = cm.doc.sel; - } - } - function rehide() { - display.inputDiv.style.position = "relative"; - display.input.style.cssText = oldCSS; - if (ie && ie_version < 9) display.scrollbarV.scrollTop = display.scroller.scrollTop = scrollPos; - slowPoll(cm); - - // Try to detect the user choosing select-all - if (display.input.selectionStart != null) { - if (!ie || (ie && ie_version < 9)) prepareSelectAllHack(); - var i = 0, poll = function() { - if (display.selForContextMenu == cm.doc.sel && display.input.selectionStart == 0) - operation(cm, commands.selectAll)(cm); - else if (i++ < 10) display.detectingSelectAll = setTimeout(poll, 500); - else resetInput(cm); - }; - display.detectingSelectAll = setTimeout(poll, 200); - } - } - - if (ie && ie_version >= 9) prepareSelectAllHack(); - if (captureRightClick) { - e_stop(e); - var mouseup = function() { - off(window, "mouseup", mouseup); - setTimeout(rehide, 20); - }; - on(window, "mouseup", mouseup); - } else { - setTimeout(rehide, 50); - } - } - - function contextMenuInGutter(cm, e) { - if (!hasHandler(cm, "gutterContextMenu")) return false; - return gutterEvent(cm, e, "gutterContextMenu", false, signal); - } - - // UPDATING - - // Compute the position of the end of a change (its 'to' property - // refers to the pre-change end). - var changeEnd = CodeMirror.changeEnd = function(change) { - if (!change.text) return change.to; - return Pos(change.from.line + change.text.length - 1, - lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0)); - }; - - // Adjust a position to refer to the post-change position of the - // same text, or the end of the change if the change covers it. - function adjustForChange(pos, change) { - if (cmp(pos, change.from) < 0) return pos; - if (cmp(pos, change.to) <= 0) return changeEnd(change); - - var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch; - if (pos.line == change.to.line) ch += changeEnd(change).ch - change.to.ch; - return Pos(line, ch); - } - - function computeSelAfterChange(doc, change) { - var out = []; - for (var i = 0; i < doc.sel.ranges.length; i++) { - var range = doc.sel.ranges[i]; - out.push(new Range(adjustForChange(range.anchor, change), - adjustForChange(range.head, change))); - } - return normalizeSelection(out, doc.sel.primIndex); - } - - function offsetPos(pos, old, nw) { - if (pos.line == old.line) - return Pos(nw.line, pos.ch - old.ch + nw.ch); - else - return Pos(nw.line + (pos.line - old.line), pos.ch); - } - - // Used by replaceSelections to allow moving the selection to the - // start or around the replaced test. Hint may be "start" or "around". - function computeReplacedSel(doc, changes, hint) { - var out = []; - var oldPrev = Pos(doc.first, 0), newPrev = oldPrev; - for (var i = 0; i < changes.length; i++) { - var change = changes[i]; - var from = offsetPos(change.from, oldPrev, newPrev); - var to = offsetPos(changeEnd(change), oldPrev, newPrev); - oldPrev = change.to; - newPrev = to; - if (hint == "around") { - var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0; - out[i] = new Range(inv ? to : from, inv ? from : to); - } else { - out[i] = new Range(from, from); - } - } - return new Selection(out, doc.sel.primIndex); - } - - // Allow "beforeChange" event handlers to influence a change - function filterChange(doc, change, update) { - var obj = { - canceled: false, - from: change.from, - to: change.to, - text: change.text, - origin: change.origin, - cancel: function() { this.canceled = true; } - }; - if (update) obj.update = function(from, to, text, origin) { - if (from) this.from = clipPos(doc, from); - if (to) this.to = clipPos(doc, to); - if (text) this.text = text; - if (origin !== undefined) this.origin = origin; - }; - signal(doc, "beforeChange", doc, obj); - if (doc.cm) signal(doc.cm, "beforeChange", doc.cm, obj); - - if (obj.canceled) return null; - return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}; - } - - // Apply a change to a document, and add it to the document's - // history, and propagating it to all linked documents. - function makeChange(doc, change, ignoreReadOnly) { - if (doc.cm) { - if (!doc.cm.curOp) return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly); - if (doc.cm.state.suppressEdits) return; - } - - if (hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange")) { - change = filterChange(doc, change, true); - if (!change) return; - } - - // Possibly split or suppress the update based on the presence - // of read-only spans in its range. - var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to); - if (split) { - for (var i = split.length - 1; i >= 0; --i) - makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [""] : change.text}); - } else { - makeChangeInner(doc, change); - } - } - - function makeChangeInner(doc, change) { - if (change.text.length == 1 && change.text[0] == "" && cmp(change.from, change.to) == 0) return; - var selAfter = computeSelAfterChange(doc, change); - addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN); - - makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change)); - var rebased = []; - - linkedDocs(doc, function(doc, sharedHist) { - if (!sharedHist && indexOf(rebased, doc.history) == -1) { - rebaseHist(doc.history, change); - rebased.push(doc.history); - } - makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change)); - }); - } - - // Revert a change stored in a document's history. - function makeChangeFromHistory(doc, type, allowSelectionOnly) { - if (doc.cm && doc.cm.state.suppressEdits) return; - - var hist = doc.history, event, selAfter = doc.sel; - var source = type == "undo" ? hist.done : hist.undone, dest = type == "undo" ? hist.undone : hist.done; - - // Verify that there is a useable event (so that ctrl-z won't - // needlessly clear selection events) - for (var i = 0; i < source.length; i++) { - event = source[i]; - if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges) - break; - } - if (i == source.length) return; - hist.lastOrigin = hist.lastSelOrigin = null; - - for (;;) { - event = source.pop(); - if (event.ranges) { - pushSelectionToHistory(event, dest); - if (allowSelectionOnly && !event.equals(doc.sel)) { - setSelection(doc, event, {clearRedo: false}); - return; - } - selAfter = event; - } - else break; - } - - // Build up a reverse change object to add to the opposite history - // stack (redo when undoing, and vice versa). - var antiChanges = []; - pushSelectionToHistory(selAfter, dest); - dest.push({changes: antiChanges, generation: hist.generation}); - hist.generation = event.generation || ++hist.maxGeneration; - - var filter = hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange"); - - for (var i = event.changes.length - 1; i >= 0; --i) { - var change = event.changes[i]; - change.origin = type; - if (filter && !filterChange(doc, change, false)) { - source.length = 0; - return; - } - - antiChanges.push(historyChangeFromChange(doc, change)); - - var after = i ? computeSelAfterChange(doc, change) : lst(source); - makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change)); - if (!i && doc.cm) doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); - var rebased = []; - - // Propagate to the linked documents - linkedDocs(doc, function(doc, sharedHist) { - if (!sharedHist && indexOf(rebased, doc.history) == -1) { - rebaseHist(doc.history, change); - rebased.push(doc.history); - } - makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change)); - }); - } - } - - // Sub-views need their line numbers shifted when text is added - // above or below them in the parent document. - function shiftDoc(doc, distance) { - if (distance == 0) return; - doc.first += distance; - doc.sel = new Selection(map(doc.sel.ranges, function(range) { - return new Range(Pos(range.anchor.line + distance, range.anchor.ch), - Pos(range.head.line + distance, range.head.ch)); - }), doc.sel.primIndex); - if (doc.cm) { - regChange(doc.cm, doc.first, doc.first - distance, distance); - for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++) - regLineChange(doc.cm, l, "gutter"); - } - } - - // More lower-level change function, handling only a single document - // (not linked ones). - function makeChangeSingleDoc(doc, change, selAfter, spans) { - if (doc.cm && !doc.cm.curOp) - return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans); - - if (change.to.line < doc.first) { - shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line)); - return; - } - if (change.from.line > doc.lastLine()) return; - - // Clip the change to the size of this doc - if (change.from.line < doc.first) { - var shift = change.text.length - 1 - (doc.first - change.from.line); - shiftDoc(doc, shift); - change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch), - text: [lst(change.text)], origin: change.origin}; - } - var last = doc.lastLine(); - if (change.to.line > last) { - change = {from: change.from, to: Pos(last, getLine(doc, last).text.length), - text: [change.text[0]], origin: change.origin}; - } - - change.removed = getBetween(doc, change.from, change.to); - - if (!selAfter) selAfter = computeSelAfterChange(doc, change); - if (doc.cm) makeChangeSingleDocInEditor(doc.cm, change, spans); - else updateDoc(doc, change, spans); - setSelectionNoUndo(doc, selAfter, sel_dontScroll); - } - - // Handle the interaction of a change to a document with the editor - // that this document is part of. - function makeChangeSingleDocInEditor(cm, change, spans) { - var doc = cm.doc, display = cm.display, from = change.from, to = change.to; - - var recomputeMaxLength = false, checkWidthStart = from.line; - if (!cm.options.lineWrapping) { - checkWidthStart = lineNo(visualLine(getLine(doc, from.line))); - doc.iter(checkWidthStart, to.line + 1, function(line) { - if (line == display.maxLine) { - recomputeMaxLength = true; - return true; - } - }); - } - - if (doc.sel.contains(change.from, change.to) > -1) - signalCursorActivity(cm); - - updateDoc(doc, change, spans, estimateHeight(cm)); - - if (!cm.options.lineWrapping) { - doc.iter(checkWidthStart, from.line + change.text.length, function(line) { - var len = lineLength(line); - if (len > display.maxLineLength) { - display.maxLine = line; - display.maxLineLength = len; - display.maxLineChanged = true; - recomputeMaxLength = false; - } - }); - if (recomputeMaxLength) cm.curOp.updateMaxLine = true; - } - - // Adjust frontier, schedule worker - doc.frontier = Math.min(doc.frontier, from.line); - startWorker(cm, 400); - - var lendiff = change.text.length - (to.line - from.line) - 1; - // Remember that these lines changed, for updating the display - if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change)) - regLineChange(cm, from.line, "text"); - else - regChange(cm, from.line, to.line + 1, lendiff); - - var changesHandler = hasHandler(cm, "changes"), changeHandler = hasHandler(cm, "change"); - if (changeHandler || changesHandler) { - var obj = { - from: from, to: to, - text: change.text, - removed: change.removed, - origin: change.origin - }; - if (changeHandler) signalLater(cm, "change", cm, obj); - if (changesHandler) (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); - } - cm.display.selForContextMenu = null; - } - - function replaceRange(doc, code, from, to, origin) { - if (!to) to = from; - if (cmp(to, from) < 0) { var tmp = to; to = from; from = tmp; } - if (typeof code == "string") code = splitLines(code); - makeChange(doc, {from: from, to: to, text: code, origin: origin}); - } - - // SCROLLING THINGS INTO VIEW - - // If an editor sits on the top or bottom of the window, partially - // scrolled out of view, this ensures that the cursor is visible. - function maybeScrollWindow(cm, coords) { - var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null; - if (coords.top + box.top < 0) doScroll = true; - else if (coords.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) doScroll = false; - if (doScroll != null && !phantom) { - var scrollNode = elt("div", "\u200b", null, "position: absolute; top: " + - (coords.top - display.viewOffset - paddingTop(cm.display)) + "px; height: " + - (coords.bottom - coords.top + scrollerCutOff) + "px; left: " + - coords.left + "px; width: 2px;"); - cm.display.lineSpace.appendChild(scrollNode); - scrollNode.scrollIntoView(doScroll); - cm.display.lineSpace.removeChild(scrollNode); - } - } - - // Scroll a given position into view (immediately), verifying that - // it actually became visible (as line heights are accurately - // measured, the position of something may 'drift' during drawing). - function scrollPosIntoView(cm, pos, end, margin) { - if (margin == null) margin = 0; - for (var limit = 0; limit < 5; limit++) { - var changed = false, coords = cursorCoords(cm, pos); - var endCoords = !end || end == pos ? coords : cursorCoords(cm, end); - var scrollPos = calculateScrollPos(cm, Math.min(coords.left, endCoords.left), - Math.min(coords.top, endCoords.top) - margin, - Math.max(coords.left, endCoords.left), - Math.max(coords.bottom, endCoords.bottom) + margin); - var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft; - if (scrollPos.scrollTop != null) { - setScrollTop(cm, scrollPos.scrollTop); - if (Math.abs(cm.doc.scrollTop - startTop) > 1) changed = true; - } - if (scrollPos.scrollLeft != null) { - setScrollLeft(cm, scrollPos.scrollLeft); - if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) changed = true; - } - if (!changed) return coords; - } - } - - // Scroll a given set of coordinates into view (immediately). - function scrollIntoView(cm, x1, y1, x2, y2) { - var scrollPos = calculateScrollPos(cm, x1, y1, x2, y2); - if (scrollPos.scrollTop != null) setScrollTop(cm, scrollPos.scrollTop); - if (scrollPos.scrollLeft != null) setScrollLeft(cm, scrollPos.scrollLeft); - } - - // Calculate a new scroll position needed to scroll the given - // rectangle into view. Returns an object with scrollTop and - // scrollLeft properties. When these are undefined, the - // vertical/horizontal position does not need to be adjusted. - function calculateScrollPos(cm, x1, y1, x2, y2) { - var display = cm.display, snapMargin = textHeight(cm.display); - if (y1 < 0) y1 = 0; - var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop; - var screen = display.scroller.clientHeight - scrollerCutOff, result = {}; - if (y2 - y1 > screen) y2 = y1 + screen; - var docBottom = cm.doc.height + paddingVert(display); - var atTop = y1 < snapMargin, atBottom = y2 > docBottom - snapMargin; - if (y1 < screentop) { - result.scrollTop = atTop ? 0 : y1; - } else if (y2 > screentop + screen) { - var newTop = Math.min(y1, (atBottom ? docBottom : y2) - screen); - if (newTop != screentop) result.scrollTop = newTop; - } - - var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft; - var screenw = display.scroller.clientWidth - scrollerCutOff - display.gutters.offsetWidth; - var tooWide = x2 - x1 > screenw; - if (tooWide) x2 = x1 + screenw; - if (x1 < 10) - result.scrollLeft = 0; - else if (x1 < screenleft) - result.scrollLeft = Math.max(0, x1 - (tooWide ? 0 : 10)); - else if (x2 > screenw + screenleft - 3) - result.scrollLeft = x2 + (tooWide ? 0 : 10) - screenw; - - return result; - } - - // Store a relative adjustment to the scroll position in the current - // operation (to be applied when the operation finishes). - function addToScrollPos(cm, left, top) { - if (left != null || top != null) resolveScrollToPos(cm); - if (left != null) - cm.curOp.scrollLeft = (cm.curOp.scrollLeft == null ? cm.doc.scrollLeft : cm.curOp.scrollLeft) + left; - if (top != null) - cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top; - } - - // Make sure that at the end of the operation the current cursor is - // shown. - function ensureCursorVisible(cm) { - resolveScrollToPos(cm); - var cur = cm.getCursor(), from = cur, to = cur; - if (!cm.options.lineWrapping) { - from = cur.ch ? Pos(cur.line, cur.ch - 1) : cur; - to = Pos(cur.line, cur.ch + 1); - } - cm.curOp.scrollToPos = {from: from, to: to, margin: cm.options.cursorScrollMargin, isCursor: true}; - } - - // When an operation has its scrollToPos property set, and another - // scroll action is applied before the end of the operation, this - // 'simulates' scrolling that position into view in a cheap way, so - // that the effect of intermediate scroll commands is not ignored. - function resolveScrollToPos(cm) { - var range = cm.curOp.scrollToPos; - if (range) { - cm.curOp.scrollToPos = null; - var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to); - var sPos = calculateScrollPos(cm, Math.min(from.left, to.left), - Math.min(from.top, to.top) - range.margin, - Math.max(from.right, to.right), - Math.max(from.bottom, to.bottom) + range.margin); - cm.scrollTo(sPos.scrollLeft, sPos.scrollTop); - } - } - - // API UTILITIES - - // Indent the given line. The how parameter can be "smart", - // "add"/null, "subtract", or "prev". When aggressive is false - // (typically set to true for forced single-line indents), empty - // lines are not indented, and places where the mode returns Pass - // are left alone. - function indentLine(cm, n, how, aggressive) { - var doc = cm.doc, state; - if (how == null) how = "add"; - if (how == "smart") { - // Fall back to "prev" when the mode doesn't have an indentation - // method. - if (!doc.mode.indent) how = "prev"; - else state = getStateBefore(cm, n); - } - - var tabSize = cm.options.tabSize; - var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize); - if (line.stateAfter) line.stateAfter = null; - var curSpaceString = line.text.match(/^\s*/)[0], indentation; - if (!aggressive && !/\S/.test(line.text)) { - indentation = 0; - how = "not"; - } else if (how == "smart") { - indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text); - if (indentation == Pass || indentation > 150) { - if (!aggressive) return; - how = "prev"; - } - } - if (how == "prev") { - if (n > doc.first) indentation = countColumn(getLine(doc, n-1).text, null, tabSize); - else indentation = 0; - } else if (how == "add") { - indentation = curSpace + cm.options.indentUnit; - } else if (how == "subtract") { - indentation = curSpace - cm.options.indentUnit; - } else if (typeof how == "number") { - indentation = curSpace + how; - } - indentation = Math.max(0, indentation); - - var indentString = "", pos = 0; - if (cm.options.indentWithTabs) - for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += "\t";} - if (pos < indentation) indentString += spaceStr(indentation - pos); - - if (indentString != curSpaceString) { - replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), "+input"); - } else { - // Ensure that, if the cursor was in the whitespace at the start - // of the line, it is moved to the end of that space. - for (var i = 0; i < doc.sel.ranges.length; i++) { - var range = doc.sel.ranges[i]; - if (range.head.line == n && range.head.ch < curSpaceString.length) { - var pos = Pos(n, curSpaceString.length); - replaceOneSelection(doc, i, new Range(pos, pos)); - break; - } - } - } - line.stateAfter = null; - } - - // Utility for applying a change to a line by handle or number, - // returning the number and optionally registering the line as - // changed. - function changeLine(doc, handle, changeType, op) { - var no = handle, line = handle; - if (typeof handle == "number") line = getLine(doc, clipLine(doc, handle)); - else no = lineNo(handle); - if (no == null) return null; - if (op(line, no) && doc.cm) regLineChange(doc.cm, no, changeType); - return line; - } - - // Helper for deleting text near the selection(s), used to implement - // backspace, delete, and similar functionality. - function deleteNearSelection(cm, compute) { - var ranges = cm.doc.sel.ranges, kill = []; - // Build up a set of ranges to kill first, merging overlapping - // ranges. - for (var i = 0; i < ranges.length; i++) { - var toKill = compute(ranges[i]); - while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) { - var replaced = kill.pop(); - if (cmp(replaced.from, toKill.from) < 0) { - toKill.from = replaced.from; - break; - } - } - kill.push(toKill); - } - // Next, remove those actual ranges. - runInOp(cm, function() { - for (var i = kill.length - 1; i >= 0; i--) - replaceRange(cm.doc, "", kill[i].from, kill[i].to, "+delete"); - ensureCursorVisible(cm); - }); - } - - // Used for horizontal relative motion. Dir is -1 or 1 (left or - // right), unit can be "char", "column" (like char, but doesn't - // cross line boundaries), "word" (across next word), or "group" (to - // the start of next group of word or non-word-non-whitespace - // chars). The visually param controls whether, in right-to-left - // text, direction 1 means to move towards the next index in the - // string, or towards the character to the right of the current - // position. The resulting position will have a hitSide=true - // property if it reached the end of the document. - function findPosH(doc, pos, dir, unit, visually) { - var line = pos.line, ch = pos.ch, origDir = dir; - var lineObj = getLine(doc, line); - var possible = true; - function findNextLine() { - var l = line + dir; - if (l < doc.first || l >= doc.first + doc.size) return (possible = false); - line = l; - return lineObj = getLine(doc, l); - } - function moveOnce(boundToLine) { - var next = (visually ? moveVisually : moveLogically)(lineObj, ch, dir, true); - if (next == null) { - if (!boundToLine && findNextLine()) { - if (visually) ch = (dir < 0 ? lineRight : lineLeft)(lineObj); - else ch = dir < 0 ? lineObj.text.length : 0; - } else return (possible = false); - } else ch = next; - return true; - } - - if (unit == "char") moveOnce(); - else if (unit == "column") moveOnce(true); - else if (unit == "word" || unit == "group") { - var sawType = null, group = unit == "group"; - var helper = doc.cm && doc.cm.getHelper(pos, "wordChars"); - for (var first = true;; first = false) { - if (dir < 0 && !moveOnce(!first)) break; - var cur = lineObj.text.charAt(ch) || "\n"; - var type = isWordChar(cur, helper) ? "w" - : group && cur == "\n" ? "n" - : !group || /\s/.test(cur) ? null - : "p"; - if (group && !first && !type) type = "s"; - if (sawType && sawType != type) { - if (dir < 0) {dir = 1; moveOnce();} - break; - } - - if (type) sawType = type; - if (dir > 0 && !moveOnce(!first)) break; - } - } - var result = skipAtomic(doc, Pos(line, ch), origDir, true); - if (!possible) result.hitSide = true; - return result; - } - - // For relative vertical movement. Dir may be -1 or 1. Unit can be - // "page" or "line". The resulting position will have a hitSide=true - // property if it reached the end of the document. - function findPosV(cm, pos, dir, unit) { - var doc = cm.doc, x = pos.left, y; - if (unit == "page") { - var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight); - y = pos.top + dir * (pageSize - (dir < 0 ? 1.5 : .5) * textHeight(cm.display)); - } else if (unit == "line") { - y = dir > 0 ? pos.bottom + 3 : pos.top - 3; - } - for (;;) { - var target = coordsChar(cm, x, y); - if (!target.outside) break; - if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break; } - y += dir * 5; - } - return target; - } - - // EDITOR METHODS - - // The publicly visible API. Note that methodOp(f) means - // 'wrap f in an operation, performed on its `this` parameter'. - - // This is not the complete set of editor methods. Most of the - // methods defined on the Doc type are also injected into - // CodeMirror.prototype, for backwards compatibility and - // convenience. - - CodeMirror.prototype = { - constructor: CodeMirror, - focus: function(){window.focus(); focusInput(this); fastPoll(this);}, - - setOption: function(option, value) { - var options = this.options, old = options[option]; - if (options[option] == value && option != "mode") return; - options[option] = value; - if (optionHandlers.hasOwnProperty(option)) - operation(this, optionHandlers[option])(this, value, old); - }, - - getOption: function(option) {return this.options[option];}, - getDoc: function() {return this.doc;}, - - addKeyMap: function(map, bottom) { - this.state.keyMaps[bottom ? "push" : "unshift"](map); - }, - removeKeyMap: function(map) { - var maps = this.state.keyMaps; - for (var i = 0; i < maps.length; ++i) - if (maps[i] == map || (typeof maps[i] != "string" && maps[i].name == map)) { - maps.splice(i, 1); - return true; - } - }, - - addOverlay: methodOp(function(spec, options) { - var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec); - if (mode.startState) throw new Error("Overlays may not be stateful."); - this.state.overlays.push({mode: mode, modeSpec: spec, opaque: options && options.opaque}); - this.state.modeGen++; - regChange(this); - }), - removeOverlay: methodOp(function(spec) { - var overlays = this.state.overlays; - for (var i = 0; i < overlays.length; ++i) { - var cur = overlays[i].modeSpec; - if (cur == spec || typeof spec == "string" && cur.name == spec) { - overlays.splice(i, 1); - this.state.modeGen++; - regChange(this); - return; - } - } - }), - - indentLine: methodOp(function(n, dir, aggressive) { - if (typeof dir != "string" && typeof dir != "number") { - if (dir == null) dir = this.options.smartIndent ? "smart" : "prev"; - else dir = dir ? "add" : "subtract"; - } - if (isLine(this.doc, n)) indentLine(this, n, dir, aggressive); - }), - indentSelection: methodOp(function(how) { - var ranges = this.doc.sel.ranges, end = -1; - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - if (!range.empty()) { - var from = range.from(), to = range.to(); - var start = Math.max(end, from.line); - end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1; - for (var j = start; j < end; ++j) - indentLine(this, j, how); - var newRanges = this.doc.sel.ranges; - if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0) - replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); - } else if (range.head.line > end) { - indentLine(this, range.head.line, how, true); - end = range.head.line; - if (i == this.doc.sel.primIndex) ensureCursorVisible(this); - } - } - }), - - // Fetch the parser token for a given character. Useful for hacks - // that want to inspect the mode state (say, for completion). - getTokenAt: function(pos, precise) { - var doc = this.doc; - pos = clipPos(doc, pos); - var state = getStateBefore(this, pos.line, precise), mode = this.doc.mode; - var line = getLine(doc, pos.line); - var stream = new StringStream(line.text, this.options.tabSize); - while (stream.pos < pos.ch && !stream.eol()) { - stream.start = stream.pos; - var style = readToken(mode, stream, state); - } - return {start: stream.start, - end: stream.pos, - string: stream.current(), - type: style || null, - state: state}; - }, - - getTokenTypeAt: function(pos) { - pos = clipPos(this.doc, pos); - var styles = getLineStyles(this, getLine(this.doc, pos.line)); - var before = 0, after = (styles.length - 1) / 2, ch = pos.ch; - var type; - if (ch == 0) type = styles[2]; - else for (;;) { - var mid = (before + after) >> 1; - if ((mid ? styles[mid * 2 - 1] : 0) >= ch) after = mid; - else if (styles[mid * 2 + 1] < ch) before = mid + 1; - else { type = styles[mid * 2 + 2]; break; } - } - var cut = type ? type.indexOf("cm-overlay ") : -1; - return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1); - }, - - getModeAt: function(pos) { - var mode = this.doc.mode; - if (!mode.innerMode) return mode; - return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode; - }, - - getHelper: function(pos, type) { - return this.getHelpers(pos, type)[0]; - }, - - getHelpers: function(pos, type) { - var found = []; - if (!helpers.hasOwnProperty(type)) return helpers; - var help = helpers[type], mode = this.getModeAt(pos); - if (typeof mode[type] == "string") { - if (help[mode[type]]) found.push(help[mode[type]]); - } else if (mode[type]) { - for (var i = 0; i < mode[type].length; i++) { - var val = help[mode[type][i]]; - if (val) found.push(val); - } - } else if (mode.helperType && help[mode.helperType]) { - found.push(help[mode.helperType]); - } else if (help[mode.name]) { - found.push(help[mode.name]); - } - for (var i = 0; i < help._global.length; i++) { - var cur = help._global[i]; - if (cur.pred(mode, this) && indexOf(found, cur.val) == -1) - found.push(cur.val); - } - return found; - }, - - getStateAfter: function(line, precise) { - var doc = this.doc; - line = clipLine(doc, line == null ? doc.first + doc.size - 1: line); - return getStateBefore(this, line + 1, precise); - }, - - cursorCoords: function(start, mode) { - var pos, range = this.doc.sel.primary(); - if (start == null) pos = range.head; - else if (typeof start == "object") pos = clipPos(this.doc, start); - else pos = start ? range.from() : range.to(); - return cursorCoords(this, pos, mode || "page"); - }, - - charCoords: function(pos, mode) { - return charCoords(this, clipPos(this.doc, pos), mode || "page"); - }, - - coordsChar: function(coords, mode) { - coords = fromCoordSystem(this, coords, mode || "page"); - return coordsChar(this, coords.left, coords.top); - }, - - lineAtHeight: function(height, mode) { - height = fromCoordSystem(this, {top: height, left: 0}, mode || "page").top; - return lineAtHeight(this.doc, height + this.display.viewOffset); - }, - heightAtLine: function(line, mode) { - var end = false, last = this.doc.first + this.doc.size - 1; - if (line < this.doc.first) line = this.doc.first; - else if (line > last) { line = last; end = true; } - var lineObj = getLine(this.doc, line); - return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || "page").top + - (end ? this.doc.height - heightAtLine(lineObj) : 0); - }, - - defaultTextHeight: function() { return textHeight(this.display); }, - defaultCharWidth: function() { return charWidth(this.display); }, - - setGutterMarker: methodOp(function(line, gutterID, value) { - return changeLine(this.doc, line, "gutter", function(line) { - var markers = line.gutterMarkers || (line.gutterMarkers = {}); - markers[gutterID] = value; - if (!value && isEmpty(markers)) line.gutterMarkers = null; - return true; - }); - }), - - clearGutter: methodOp(function(gutterID) { - var cm = this, doc = cm.doc, i = doc.first; - doc.iter(function(line) { - if (line.gutterMarkers && line.gutterMarkers[gutterID]) { - line.gutterMarkers[gutterID] = null; - regLineChange(cm, i, "gutter"); - if (isEmpty(line.gutterMarkers)) line.gutterMarkers = null; - } - ++i; - }); - }), - - addLineWidget: methodOp(function(handle, node, options) { - return addLineWidget(this, handle, node, options); - }), - - removeLineWidget: function(widget) { widget.clear(); }, - - lineInfo: function(line) { - if (typeof line == "number") { - if (!isLine(this.doc, line)) return null; - var n = line; - line = getLine(this.doc, line); - if (!line) return null; - } else { - var n = lineNo(line); - if (n == null) return null; - } - return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers, - textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass, - widgets: line.widgets}; - }, - - getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo};}, - - addWidget: function(pos, node, scroll, vert, horiz) { - var display = this.display; - pos = cursorCoords(this, clipPos(this.doc, pos)); - var top = pos.bottom, left = pos.left; - node.style.position = "absolute"; - display.sizer.appendChild(node); - if (vert == "over") { - top = pos.top; - } else if (vert == "above" || vert == "near") { - var vspace = Math.max(display.wrapper.clientHeight, this.doc.height), - hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth); - // Default to positioning above (if specified and possible); otherwise default to positioning below - if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight) - top = pos.top - node.offsetHeight; - else if (pos.bottom + node.offsetHeight <= vspace) - top = pos.bottom; - if (left + node.offsetWidth > hspace) - left = hspace - node.offsetWidth; - } - node.style.top = top + "px"; - node.style.left = node.style.right = ""; - if (horiz == "right") { - left = display.sizer.clientWidth - node.offsetWidth; - node.style.right = "0px"; - } else { - if (horiz == "left") left = 0; - else if (horiz == "middle") left = (display.sizer.clientWidth - node.offsetWidth) / 2; - node.style.left = left + "px"; - } - if (scroll) - scrollIntoView(this, left, top, left + node.offsetWidth, top + node.offsetHeight); - }, - - triggerOnKeyDown: methodOp(onKeyDown), - triggerOnKeyPress: methodOp(onKeyPress), - triggerOnKeyUp: onKeyUp, - - execCommand: function(cmd) { - if (commands.hasOwnProperty(cmd)) - return commands[cmd](this); - }, - - findPosH: function(from, amount, unit, visually) { - var dir = 1; - if (amount < 0) { dir = -1; amount = -amount; } - for (var i = 0, cur = clipPos(this.doc, from); i < amount; ++i) { - cur = findPosH(this.doc, cur, dir, unit, visually); - if (cur.hitSide) break; - } - return cur; - }, - - moveH: methodOp(function(dir, unit) { - var cm = this; - cm.extendSelectionsBy(function(range) { - if (cm.display.shift || cm.doc.extend || range.empty()) - return findPosH(cm.doc, range.head, dir, unit, cm.options.rtlMoveVisually); - else - return dir < 0 ? range.from() : range.to(); - }, sel_move); - }), - - deleteH: methodOp(function(dir, unit) { - var sel = this.doc.sel, doc = this.doc; - if (sel.somethingSelected()) - doc.replaceSelection("", null, "+delete"); - else - deleteNearSelection(this, function(range) { - var other = findPosH(doc, range.head, dir, unit, false); - return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other}; - }); - }), - - findPosV: function(from, amount, unit, goalColumn) { - var dir = 1, x = goalColumn; - if (amount < 0) { dir = -1; amount = -amount; } - for (var i = 0, cur = clipPos(this.doc, from); i < amount; ++i) { - var coords = cursorCoords(this, cur, "div"); - if (x == null) x = coords.left; - else coords.left = x; - cur = findPosV(this, coords, dir, unit); - if (cur.hitSide) break; - } - return cur; - }, - - moveV: methodOp(function(dir, unit) { - var cm = this, doc = this.doc, goals = []; - var collapse = !cm.display.shift && !doc.extend && doc.sel.somethingSelected(); - doc.extendSelectionsBy(function(range) { - if (collapse) - return dir < 0 ? range.from() : range.to(); - var headPos = cursorCoords(cm, range.head, "div"); - if (range.goalColumn != null) headPos.left = range.goalColumn; - goals.push(headPos.left); - var pos = findPosV(cm, headPos, dir, unit); - if (unit == "page" && range == doc.sel.primary()) - addToScrollPos(cm, null, charCoords(cm, pos, "div").top - headPos.top); - return pos; - }, sel_move); - if (goals.length) for (var i = 0; i < doc.sel.ranges.length; i++) - doc.sel.ranges[i].goalColumn = goals[i]; - }), - - // Find the word at the given position (as returned by coordsChar). - findWordAt: function(pos) { - var doc = this.doc, line = getLine(doc, pos.line).text; - var start = pos.ch, end = pos.ch; - if (line) { - var helper = this.getHelper(pos, "wordChars"); - if ((pos.xRel < 0 || end == line.length) && start) --start; else ++end; - var startChar = line.charAt(start); - var check = isWordChar(startChar, helper) - ? function(ch) { return isWordChar(ch, helper); } - : /\s/.test(startChar) ? function(ch) {return /\s/.test(ch);} - : function(ch) {return !/\s/.test(ch) && !isWordChar(ch);}; - while (start > 0 && check(line.charAt(start - 1))) --start; - while (end < line.length && check(line.charAt(end))) ++end; - } - return new Range(Pos(pos.line, start), Pos(pos.line, end)); - }, - - toggleOverwrite: function(value) { - if (value != null && value == this.state.overwrite) return; - if (this.state.overwrite = !this.state.overwrite) - addClass(this.display.cursorDiv, "CodeMirror-overwrite"); - else - rmClass(this.display.cursorDiv, "CodeMirror-overwrite"); - - signal(this, "overwriteToggle", this, this.state.overwrite); - }, - hasFocus: function() { return activeElt() == this.display.input; }, - - scrollTo: methodOp(function(x, y) { - if (x != null || y != null) resolveScrollToPos(this); - if (x != null) this.curOp.scrollLeft = x; - if (y != null) this.curOp.scrollTop = y; - }), - getScrollInfo: function() { - var scroller = this.display.scroller, co = scrollerCutOff; - return {left: scroller.scrollLeft, top: scroller.scrollTop, - height: scroller.scrollHeight - co, width: scroller.scrollWidth - co, - clientHeight: scroller.clientHeight - co, clientWidth: scroller.clientWidth - co}; - }, - - scrollIntoView: methodOp(function(range, margin) { - if (range == null) { - range = {from: this.doc.sel.primary().head, to: null}; - if (margin == null) margin = this.options.cursorScrollMargin; - } else if (typeof range == "number") { - range = {from: Pos(range, 0), to: null}; - } else if (range.from == null) { - range = {from: range, to: null}; - } - if (!range.to) range.to = range.from; - range.margin = margin || 0; - - if (range.from.line != null) { - resolveScrollToPos(this); - this.curOp.scrollToPos = range; - } else { - var sPos = calculateScrollPos(this, Math.min(range.from.left, range.to.left), - Math.min(range.from.top, range.to.top) - range.margin, - Math.max(range.from.right, range.to.right), - Math.max(range.from.bottom, range.to.bottom) + range.margin); - this.scrollTo(sPos.scrollLeft, sPos.scrollTop); - } - }), - - setSize: methodOp(function(width, height) { - var cm = this; - function interpret(val) { - return typeof val == "number" || /^\d+$/.test(String(val)) ? val + "px" : val; - } - if (width != null) cm.display.wrapper.style.width = interpret(width); - if (height != null) cm.display.wrapper.style.height = interpret(height); - if (cm.options.lineWrapping) clearLineMeasurementCache(this); - var lineNo = cm.display.viewFrom; - cm.doc.iter(lineNo, cm.display.viewTo, function(line) { - if (line.widgets) for (var i = 0; i < line.widgets.length; i++) - if (line.widgets[i].noHScroll) { regLineChange(cm, lineNo, "widget"); break; } - ++lineNo; - }); - cm.curOp.forceUpdate = true; - signal(cm, "refresh", this); - }), - - operation: function(f){return runInOp(this, f);}, - - refresh: methodOp(function() { - var oldHeight = this.display.cachedTextHeight; - regChange(this); - this.curOp.forceUpdate = true; - clearCaches(this); - this.scrollTo(this.doc.scrollLeft, this.doc.scrollTop); - updateGutterSpace(this); - if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5) - estimateLineHeights(this); - signal(this, "refresh", this); - }), - - swapDoc: methodOp(function(doc) { - var old = this.doc; - old.cm = null; - attachDoc(this, doc); - clearCaches(this); - resetInput(this); - this.scrollTo(doc.scrollLeft, doc.scrollTop); - this.curOp.forceScroll = true; - signalLater(this, "swapDoc", this, old); - return old; - }), - - getInputField: function(){return this.display.input;}, - getWrapperElement: function(){return this.display.wrapper;}, - getScrollerElement: function(){return this.display.scroller;}, - getGutterElement: function(){return this.display.gutters;} - }; - eventMixin(CodeMirror); - - // OPTION DEFAULTS - - // The default configuration options. - var defaults = CodeMirror.defaults = {}; - // Functions to run when options are changed. - var optionHandlers = CodeMirror.optionHandlers = {}; - - function option(name, deflt, handle, notOnInit) { - CodeMirror.defaults[name] = deflt; - if (handle) optionHandlers[name] = - notOnInit ? function(cm, val, old) {if (old != Init) handle(cm, val, old);} : handle; - } - - // Passed to option handlers when there is no old value. - var Init = CodeMirror.Init = {toString: function(){return "CodeMirror.Init";}}; - - // These two are, on init, called from the constructor because they - // have to be initialized before the editor can start at all. - option("value", "", function(cm, val) { - cm.setValue(val); - }, true); - option("mode", null, function(cm, val) { - cm.doc.modeOption = val; - loadMode(cm); - }, true); - - option("indentUnit", 2, loadMode, true); - option("indentWithTabs", false); - option("smartIndent", true); - option("tabSize", 4, function(cm) { - resetModeState(cm); - clearCaches(cm); - regChange(cm); - }, true); - option("specialChars", /[\t\u0000-\u0019\u00ad\u200b-\u200f\u2028\u2029\ufeff]/g, function(cm, val) { - cm.options.specialChars = new RegExp(val.source + (val.test("\t") ? "" : "|\t"), "g"); - cm.refresh(); - }, true); - option("specialCharPlaceholder", defaultSpecialCharPlaceholder, function(cm) {cm.refresh();}, true); - option("electricChars", true); - option("rtlMoveVisually", !windows); - option("wholeLineUpdateBefore", true); - - option("theme", "default", function(cm) { - themeChanged(cm); - guttersChanged(cm); - }, true); - option("keyMap", "default", keyMapChanged); - option("extraKeys", null); - - option("lineWrapping", false, wrappingChanged, true); - option("gutters", [], function(cm) { - setGuttersForLineNumbers(cm.options); - guttersChanged(cm); - }, true); - option("fixedGutter", true, function(cm, val) { - cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + "px" : "0"; - cm.refresh(); - }, true); - option("coverGutterNextToScrollbar", false, updateScrollbars, true); - option("lineNumbers", false, function(cm) { - setGuttersForLineNumbers(cm.options); - guttersChanged(cm); - }, true); - option("firstLineNumber", 1, guttersChanged, true); - option("lineNumberFormatter", function(integer) {return integer;}, guttersChanged, true); - option("showCursorWhenSelecting", false, updateSelection, true); - - option("resetSelectionOnContextMenu", true); - - option("readOnly", false, function(cm, val) { - if (val == "nocursor") { - onBlur(cm); - cm.display.input.blur(); - cm.display.disabled = true; - } else { - cm.display.disabled = false; - if (!val) resetInput(cm); - } - }); - option("disableInput", false, function(cm, val) {if (!val) resetInput(cm);}, true); - option("dragDrop", true); - - option("cursorBlinkRate", 530); - option("cursorScrollMargin", 0); - option("cursorHeight", 1, updateSelection, true); - option("singleCursorHeightPerLine", true, updateSelection, true); - option("workTime", 100); - option("workDelay", 100); - option("flattenSpans", true, resetModeState, true); - option("addModeClass", false, resetModeState, true); - option("pollInterval", 100); - option("undoDepth", 200, function(cm, val){cm.doc.history.undoDepth = val;}); - option("historyEventDelay", 1250); - option("viewportMargin", 10, function(cm){cm.refresh();}, true); - option("maxHighlightLength", 10000, resetModeState, true); - option("moveInputWithCursor", true, function(cm, val) { - if (!val) cm.display.inputDiv.style.top = cm.display.inputDiv.style.left = 0; - }); - - option("tabindex", null, function(cm, val) { - cm.display.input.tabIndex = val || ""; - }); - option("autofocus", null); - - // MODE DEFINITION AND QUERYING - - // Known modes, by name and by MIME - var modes = CodeMirror.modes = {}, mimeModes = CodeMirror.mimeModes = {}; - - // Extra arguments are stored as the mode's dependencies, which is - // used by (legacy) mechanisms like loadmode.js to automatically - // load a mode. (Preferred mechanism is the require/define calls.) - CodeMirror.defineMode = function(name, mode) { - if (!CodeMirror.defaults.mode && name != "null") CodeMirror.defaults.mode = name; - if (arguments.length > 2) - mode.dependencies = Array.prototype.slice.call(arguments, 2); - modes[name] = mode; - }; - - CodeMirror.defineMIME = function(mime, spec) { - mimeModes[mime] = spec; - }; - - // Given a MIME type, a {name, ...options} config object, or a name - // string, return a mode config object. - CodeMirror.resolveMode = function(spec) { - if (typeof spec == "string" && mimeModes.hasOwnProperty(spec)) { - spec = mimeModes[spec]; - } else if (spec && typeof spec.name == "string" && mimeModes.hasOwnProperty(spec.name)) { - var found = mimeModes[spec.name]; - if (typeof found == "string") found = {name: found}; - spec = createObj(found, spec); - spec.name = found.name; - } else if (typeof spec == "string" && /^[\w\-]+\/[\w\-]+\+xml$/.test(spec)) { - return CodeMirror.resolveMode("application/xml"); - } - if (typeof spec == "string") return {name: spec}; - else return spec || {name: "null"}; - }; - - // Given a mode spec (anything that resolveMode accepts), find and - // initialize an actual mode object. - CodeMirror.getMode = function(options, spec) { - var spec = CodeMirror.resolveMode(spec); - var mfactory = modes[spec.name]; - if (!mfactory) return CodeMirror.getMode(options, "text/plain"); - var modeObj = mfactory(options, spec); - if (modeExtensions.hasOwnProperty(spec.name)) { - var exts = modeExtensions[spec.name]; - for (var prop in exts) { - if (!exts.hasOwnProperty(prop)) continue; - if (modeObj.hasOwnProperty(prop)) modeObj["_" + prop] = modeObj[prop]; - modeObj[prop] = exts[prop]; - } - } - modeObj.name = spec.name; - if (spec.helperType) modeObj.helperType = spec.helperType; - if (spec.modeProps) for (var prop in spec.modeProps) - modeObj[prop] = spec.modeProps[prop]; - - return modeObj; - }; - - // Minimal default mode. - CodeMirror.defineMode("null", function() { - return {token: function(stream) {stream.skipToEnd();}}; - }); - CodeMirror.defineMIME("text/plain", "null"); - - // This can be used to attach properties to mode objects from - // outside the actual mode definition. - var modeExtensions = CodeMirror.modeExtensions = {}; - CodeMirror.extendMode = function(mode, properties) { - var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {}); - copyObj(properties, exts); - }; - - // EXTENSIONS - - CodeMirror.defineExtension = function(name, func) { - CodeMirror.prototype[name] = func; - }; - CodeMirror.defineDocExtension = function(name, func) { - Doc.prototype[name] = func; - }; - CodeMirror.defineOption = option; - - var initHooks = []; - CodeMirror.defineInitHook = function(f) {initHooks.push(f);}; - - var helpers = CodeMirror.helpers = {}; - CodeMirror.registerHelper = function(type, name, value) { - if (!helpers.hasOwnProperty(type)) helpers[type] = CodeMirror[type] = {_global: []}; - helpers[type][name] = value; - }; - CodeMirror.registerGlobalHelper = function(type, name, predicate, value) { - CodeMirror.registerHelper(type, name, value); - helpers[type]._global.push({pred: predicate, val: value}); - }; - - // MODE STATE HANDLING - - // Utility functions for working with state. Exported because nested - // modes need to do this for their inner modes. - - var copyState = CodeMirror.copyState = function(mode, state) { - if (state === true) return state; - if (mode.copyState) return mode.copyState(state); - var nstate = {}; - for (var n in state) { - var val = state[n]; - if (val instanceof Array) val = val.concat([]); - nstate[n] = val; - } - return nstate; - }; - - var startState = CodeMirror.startState = function(mode, a1, a2) { - return mode.startState ? mode.startState(a1, a2) : true; - }; - - // Given a mode and a state (for that mode), find the inner mode and - // state at the position that the state refers to. - CodeMirror.innerMode = function(mode, state) { - while (mode.innerMode) { - var info = mode.innerMode(state); - if (!info || info.mode == mode) break; - state = info.state; - mode = info.mode; - } - return info || {mode: mode, state: state}; - }; - - // STANDARD COMMANDS - - // Commands are parameter-less actions that can be performed on an - // editor, mostly used for keybindings. - var commands = CodeMirror.commands = { - selectAll: function(cm) {cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);}, - singleSelection: function(cm) { - cm.setSelection(cm.getCursor("anchor"), cm.getCursor("head"), sel_dontScroll); - }, - killLine: function(cm) { - deleteNearSelection(cm, function(range) { - if (range.empty()) { - var len = getLine(cm.doc, range.head.line).text.length; - if (range.head.ch == len && range.head.line < cm.lastLine()) - return {from: range.head, to: Pos(range.head.line + 1, 0)}; - else - return {from: range.head, to: Pos(range.head.line, len)}; - } else { - return {from: range.from(), to: range.to()}; - } - }); - }, - deleteLine: function(cm) { - deleteNearSelection(cm, function(range) { - return {from: Pos(range.from().line, 0), - to: clipPos(cm.doc, Pos(range.to().line + 1, 0))}; - }); - }, - delLineLeft: function(cm) { - deleteNearSelection(cm, function(range) { - return {from: Pos(range.from().line, 0), to: range.from()}; - }); - }, - delWrappedLineLeft: function(cm) { - deleteNearSelection(cm, function(range) { - var top = cm.charCoords(range.head, "div").top + 5; - var leftPos = cm.coordsChar({left: 0, top: top}, "div"); - return {from: leftPos, to: range.from()}; - }); - }, - delWrappedLineRight: function(cm) { - deleteNearSelection(cm, function(range) { - var top = cm.charCoords(range.head, "div").top + 5; - var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, "div"); - return {from: range.from(), to: rightPos }; - }); - }, - undo: function(cm) {cm.undo();}, - redo: function(cm) {cm.redo();}, - undoSelection: function(cm) {cm.undoSelection();}, - redoSelection: function(cm) {cm.redoSelection();}, - goDocStart: function(cm) {cm.extendSelection(Pos(cm.firstLine(), 0));}, - goDocEnd: function(cm) {cm.extendSelection(Pos(cm.lastLine()));}, - goLineStart: function(cm) { - cm.extendSelectionsBy(function(range) { return lineStart(cm, range.head.line); }, - {origin: "+move", bias: 1}); - }, - goLineStartSmart: function(cm) { - cm.extendSelectionsBy(function(range) { - return lineStartSmart(cm, range.head); - }, {origin: "+move", bias: 1}); - }, - goLineEnd: function(cm) { - cm.extendSelectionsBy(function(range) { return lineEnd(cm, range.head.line); }, - {origin: "+move", bias: -1}); - }, - goLineRight: function(cm) { - cm.extendSelectionsBy(function(range) { - var top = cm.charCoords(range.head, "div").top + 5; - return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, "div"); - }, sel_move); - }, - goLineLeft: function(cm) { - cm.extendSelectionsBy(function(range) { - var top = cm.charCoords(range.head, "div").top + 5; - return cm.coordsChar({left: 0, top: top}, "div"); - }, sel_move); - }, - goLineLeftSmart: function(cm) { - cm.extendSelectionsBy(function(range) { - var top = cm.charCoords(range.head, "div").top + 5; - var pos = cm.coordsChar({left: 0, top: top}, "div"); - if (pos.ch < cm.getLine(pos.line).search(/\S/)) return lineStartSmart(cm, range.head); - return pos; - }, sel_move); - }, - goLineUp: function(cm) {cm.moveV(-1, "line");}, - goLineDown: function(cm) {cm.moveV(1, "line");}, - goPageUp: function(cm) {cm.moveV(-1, "page");}, - goPageDown: function(cm) {cm.moveV(1, "page");}, - goCharLeft: function(cm) {cm.moveH(-1, "char");}, - goCharRight: function(cm) {cm.moveH(1, "char");}, - goColumnLeft: function(cm) {cm.moveH(-1, "column");}, - goColumnRight: function(cm) {cm.moveH(1, "column");}, - goWordLeft: function(cm) {cm.moveH(-1, "word");}, - goGroupRight: function(cm) {cm.moveH(1, "group");}, - goGroupLeft: function(cm) {cm.moveH(-1, "group");}, - goWordRight: function(cm) {cm.moveH(1, "word");}, - delCharBefore: function(cm) {cm.deleteH(-1, "char");}, - delCharAfter: function(cm) {cm.deleteH(1, "char");}, - delWordBefore: function(cm) {cm.deleteH(-1, "word");}, - delWordAfter: function(cm) {cm.deleteH(1, "word");}, - delGroupBefore: function(cm) {cm.deleteH(-1, "group");}, - delGroupAfter: function(cm) {cm.deleteH(1, "group");}, - indentAuto: function(cm) {cm.indentSelection("smart");}, - indentMore: function(cm) {cm.indentSelection("add");}, - indentLess: function(cm) {cm.indentSelection("subtract");}, - insertTab: function(cm) {cm.replaceSelection("\t");}, - insertSoftTab: function(cm) { - var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize; - for (var i = 0; i < ranges.length; i++) { - var pos = ranges[i].from(); - var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize); - spaces.push(new Array(tabSize - col % tabSize + 1).join(" ")); - } - cm.replaceSelections(spaces); - }, - defaultTab: function(cm) { - if (cm.somethingSelected()) cm.indentSelection("add"); - else cm.execCommand("insertTab"); - }, - transposeChars: function(cm) { - runInOp(cm, function() { - var ranges = cm.listSelections(), newSel = []; - for (var i = 0; i < ranges.length; i++) { - var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text; - if (line) { - if (cur.ch == line.length) cur = new Pos(cur.line, cur.ch - 1); - if (cur.ch > 0) { - cur = new Pos(cur.line, cur.ch + 1); - cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2), - Pos(cur.line, cur.ch - 2), cur, "+transpose"); - } else if (cur.line > cm.doc.first) { - var prev = getLine(cm.doc, cur.line - 1).text; - if (prev) - cm.replaceRange(line.charAt(0) + "\n" + prev.charAt(prev.length - 1), - Pos(cur.line - 1, prev.length - 1), Pos(cur.line, 1), "+transpose"); - } - } - newSel.push(new Range(cur, cur)); - } - cm.setSelections(newSel); - }); - }, - newlineAndIndent: function(cm) { - runInOp(cm, function() { - var len = cm.listSelections().length; - for (var i = 0; i < len; i++) { - var range = cm.listSelections()[i]; - cm.replaceRange("\n", range.anchor, range.head, "+input"); - cm.indentLine(range.from().line + 1, null, true); - ensureCursorVisible(cm); - } - }); - }, - toggleOverwrite: function(cm) {cm.toggleOverwrite();} - }; - - // STANDARD KEYMAPS - - var keyMap = CodeMirror.keyMap = {}; - keyMap.basic = { - "Left": "goCharLeft", "Right": "goCharRight", "Up": "goLineUp", "Down": "goLineDown", - "End": "goLineEnd", "Home": "goLineStartSmart", "PageUp": "goPageUp", "PageDown": "goPageDown", - "Delete": "delCharAfter", "Backspace": "delCharBefore", "Shift-Backspace": "delCharBefore", - "Tab": "defaultTab", "Shift-Tab": "indentAuto", - "Enter": "newlineAndIndent", "Insert": "toggleOverwrite", - "Esc": "singleSelection" - }; - // Note that the save and find-related commands aren't defined by - // default. User code or addons can define them. Unknown commands - // are simply ignored. - keyMap.pcDefault = { - "Ctrl-A": "selectAll", "Ctrl-D": "deleteLine", "Ctrl-Z": "undo", "Shift-Ctrl-Z": "redo", "Ctrl-Y": "redo", - "Ctrl-Home": "goDocStart", "Ctrl-End": "goDocEnd", "Ctrl-Up": "goLineUp", "Ctrl-Down": "goLineDown", - "Ctrl-Left": "goGroupLeft", "Ctrl-Right": "goGroupRight", "Alt-Left": "goLineStart", "Alt-Right": "goLineEnd", - "Ctrl-Backspace": "delGroupBefore", "Ctrl-Delete": "delGroupAfter", "Ctrl-S": "save", "Ctrl-F": "find", - "Ctrl-G": "findNext", "Shift-Ctrl-G": "findPrev", "Shift-Ctrl-F": "replace", "Shift-Ctrl-R": "replaceAll", - "Ctrl-[": "indentLess", "Ctrl-]": "indentMore", - "Ctrl-U": "undoSelection", "Shift-Ctrl-U": "redoSelection", "Alt-U": "redoSelection", - fallthrough: "basic" - }; - keyMap.macDefault = { - "Cmd-A": "selectAll", "Cmd-D": "deleteLine", "Cmd-Z": "undo", "Shift-Cmd-Z": "redo", "Cmd-Y": "redo", - "Cmd-Home": "goDocStart", "Cmd-Up": "goDocStart", "Cmd-End": "goDocEnd", "Cmd-Down": "goDocEnd", "Alt-Left": "goGroupLeft", - "Alt-Right": "goGroupRight", "Cmd-Left": "goLineLeft", "Cmd-Right": "goLineRight", "Alt-Backspace": "delGroupBefore", - "Ctrl-Alt-Backspace": "delGroupAfter", "Alt-Delete": "delGroupAfter", "Cmd-S": "save", "Cmd-F": "find", - "Cmd-G": "findNext", "Shift-Cmd-G": "findPrev", "Cmd-Alt-F": "replace", "Shift-Cmd-Alt-F": "replaceAll", - "Cmd-[": "indentLess", "Cmd-]": "indentMore", "Cmd-Backspace": "delWrappedLineLeft", "Cmd-Delete": "delWrappedLineRight", - "Cmd-U": "undoSelection", "Shift-Cmd-U": "redoSelection", "Ctrl-Up": "goDocStart", "Ctrl-Down": "goDocEnd", - fallthrough: ["basic", "emacsy"] - }; - // Very basic readline/emacs-style bindings, which are standard on Mac. - keyMap.emacsy = { - "Ctrl-F": "goCharRight", "Ctrl-B": "goCharLeft", "Ctrl-P": "goLineUp", "Ctrl-N": "goLineDown", - "Alt-F": "goWordRight", "Alt-B": "goWordLeft", "Ctrl-A": "goLineStart", "Ctrl-E": "goLineEnd", - "Ctrl-V": "goPageDown", "Shift-Ctrl-V": "goPageUp", "Ctrl-D": "delCharAfter", "Ctrl-H": "delCharBefore", - "Alt-D": "delWordAfter", "Alt-Backspace": "delWordBefore", "Ctrl-K": "killLine", "Ctrl-T": "transposeChars" - }; - keyMap["default"] = mac ? keyMap.macDefault : keyMap.pcDefault; - - // KEYMAP DISPATCH - - function getKeyMap(val) { - if (typeof val == "string") return keyMap[val]; - else return val; - } - - // Given an array of keymaps and a key name, call handle on any - // bindings found, until that returns a truthy value, at which point - // we consider the key handled. Implements things like binding a key - // to false stopping further handling and keymap fallthrough. - var lookupKey = CodeMirror.lookupKey = function(name, maps, handle) { - function lookup(map) { - map = getKeyMap(map); - var found = map[name]; - if (found === false) return "stop"; - if (found != null && handle(found)) return true; - if (map.nofallthrough) return "stop"; - - var fallthrough = map.fallthrough; - if (fallthrough == null) return false; - if (Object.prototype.toString.call(fallthrough) != "[object Array]") - return lookup(fallthrough); - for (var i = 0; i < fallthrough.length; ++i) { - var done = lookup(fallthrough[i]); - if (done) return done; - } - return false; - } - - for (var i = 0; i < maps.length; ++i) { - var done = lookup(maps[i]); - if (done) return done != "stop"; - } - }; - - // Modifier key presses don't count as 'real' key presses for the - // purpose of keymap fallthrough. - var isModifierKey = CodeMirror.isModifierKey = function(event) { - var name = keyNames[event.keyCode]; - return name == "Ctrl" || name == "Alt" || name == "Shift" || name == "Mod"; - }; - - // Look up the name of a key as indicated by an event object. - var keyName = CodeMirror.keyName = function(event, noShift) { - if (presto && event.keyCode == 34 && event["char"]) return false; - var name = keyNames[event.keyCode]; - if (name == null || event.altGraphKey) return false; - if (event.altKey) name = "Alt-" + name; - if (flipCtrlCmd ? event.metaKey : event.ctrlKey) name = "Ctrl-" + name; - if (flipCtrlCmd ? event.ctrlKey : event.metaKey) name = "Cmd-" + name; - if (!noShift && event.shiftKey) name = "Shift-" + name; - return name; - }; - - // FROMTEXTAREA - - CodeMirror.fromTextArea = function(textarea, options) { - if (!options) options = {}; - options.value = textarea.value; - if (!options.tabindex && textarea.tabindex) - options.tabindex = textarea.tabindex; - if (!options.placeholder && textarea.placeholder) - options.placeholder = textarea.placeholder; - // Set autofocus to true if this textarea is focused, or if it has - // autofocus and no other element is focused. - if (options.autofocus == null) { - var hasFocus = activeElt(); - options.autofocus = hasFocus == textarea || - textarea.getAttribute("autofocus") != null && hasFocus == document.body; - } - - function save() {textarea.value = cm.getValue();} - if (textarea.form) { - on(textarea.form, "submit", save); - // Deplorable hack to make the submit method do the right thing. - if (!options.leaveSubmitMethodAlone) { - var form = textarea.form, realSubmit = form.submit; - try { - var wrappedSubmit = form.submit = function() { - save(); - form.submit = realSubmit; - form.submit(); - form.submit = wrappedSubmit; - }; - } catch(e) {} - } - } - - textarea.style.display = "none"; - var cm = CodeMirror(function(node) { - textarea.parentNode.insertBefore(node, textarea.nextSibling); - }, options); - cm.save = save; - cm.getTextArea = function() { return textarea; }; - cm.toTextArea = function() { - cm.toTextArea = isNaN; // Prevent this from being ran twice - save(); - textarea.parentNode.removeChild(cm.getWrapperElement()); - textarea.style.display = ""; - if (textarea.form) { - off(textarea.form, "submit", save); - if (typeof textarea.form.submit == "function") - textarea.form.submit = realSubmit; - } - }; - return cm; - }; - - // STRING STREAM - - // Fed to the mode parsers, provides helper functions to make - // parsers more succinct. - - var StringStream = CodeMirror.StringStream = function(string, tabSize) { - this.pos = this.start = 0; - this.string = string; - this.tabSize = tabSize || 8; - this.lastColumnPos = this.lastColumnValue = 0; - this.lineStart = 0; - }; - - StringStream.prototype = { - eol: function() {return this.pos >= this.string.length;}, - sol: function() {return this.pos == this.lineStart;}, - peek: function() {return this.string.charAt(this.pos) || undefined;}, - next: function() { - if (this.pos < this.string.length) - return this.string.charAt(this.pos++); - }, - eat: function(match) { - var ch = this.string.charAt(this.pos); - if (typeof match == "string") var ok = ch == match; - else var ok = ch && (match.test ? match.test(ch) : match(ch)); - if (ok) {++this.pos; return ch;} - }, - eatWhile: function(match) { - var start = this.pos; - while (this.eat(match)){} - return this.pos > start; - }, - eatSpace: function() { - var start = this.pos; - while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) ++this.pos; - return this.pos > start; - }, - skipToEnd: function() {this.pos = this.string.length;}, - skipTo: function(ch) { - var found = this.string.indexOf(ch, this.pos); - if (found > -1) {this.pos = found; return true;} - }, - backUp: function(n) {this.pos -= n;}, - column: function() { - if (this.lastColumnPos < this.start) { - this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue); - this.lastColumnPos = this.start; - } - return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0); - }, - indentation: function() { - return countColumn(this.string, null, this.tabSize) - - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0); - }, - match: function(pattern, consume, caseInsensitive) { - if (typeof pattern == "string") { - var cased = function(str) {return caseInsensitive ? str.toLowerCase() : str;}; - var substr = this.string.substr(this.pos, pattern.length); - if (cased(substr) == cased(pattern)) { - if (consume !== false) this.pos += pattern.length; - return true; - } - } else { - var match = this.string.slice(this.pos).match(pattern); - if (match && match.index > 0) return null; - if (match && consume !== false) this.pos += match[0].length; - return match; - } - }, - current: function(){return this.string.slice(this.start, this.pos);}, - hideFirstChars: function(n, inner) { - this.lineStart += n; - try { return inner(); } - finally { this.lineStart -= n; } - } - }; - - // TEXTMARKERS - - // Created with markText and setBookmark methods. A TextMarker is a - // handle that can be used to clear or find a marked position in the - // document. Line objects hold arrays (markedSpans) containing - // {from, to, marker} object pointing to such marker objects, and - // indicating that such a marker is present on that line. Multiple - // lines may point to the same marker when it spans across lines. - // The spans will have null for their from/to properties when the - // marker continues beyond the start/end of the line. Markers have - // links back to the lines they currently touch. - - var TextMarker = CodeMirror.TextMarker = function(doc, type) { - this.lines = []; - this.type = type; - this.doc = doc; - }; - eventMixin(TextMarker); - - // Clear the marker. - TextMarker.prototype.clear = function() { - if (this.explicitlyCleared) return; - var cm = this.doc.cm, withOp = cm && !cm.curOp; - if (withOp) startOperation(cm); - if (hasHandler(this, "clear")) { - var found = this.find(); - if (found) signalLater(this, "clear", found.from, found.to); - } - var min = null, max = null; - for (var i = 0; i < this.lines.length; ++i) { - var line = this.lines[i]; - var span = getMarkedSpanFor(line.markedSpans, this); - if (cm && !this.collapsed) regLineChange(cm, lineNo(line), "text"); - else if (cm) { - if (span.to != null) max = lineNo(line); - if (span.from != null) min = lineNo(line); - } - line.markedSpans = removeMarkedSpan(line.markedSpans, span); - if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm) - updateLineHeight(line, textHeight(cm.display)); - } - if (cm && this.collapsed && !cm.options.lineWrapping) for (var i = 0; i < this.lines.length; ++i) { - var visual = visualLine(this.lines[i]), len = lineLength(visual); - if (len > cm.display.maxLineLength) { - cm.display.maxLine = visual; - cm.display.maxLineLength = len; - cm.display.maxLineChanged = true; - } - } - - if (min != null && cm && this.collapsed) regChange(cm, min, max + 1); - this.lines.length = 0; - this.explicitlyCleared = true; - if (this.atomic && this.doc.cantEdit) { - this.doc.cantEdit = false; - if (cm) reCheckSelection(cm.doc); - } - if (cm) signalLater(cm, "markerCleared", cm, this); - if (withOp) endOperation(cm); - if (this.parent) this.parent.clear(); - }; - - // Find the position of the marker in the document. Returns a {from, - // to} object by default. Side can be passed to get a specific side - // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the - // Pos objects returned contain a line object, rather than a line - // number (used to prevent looking up the same line twice). - TextMarker.prototype.find = function(side, lineObj) { - if (side == null && this.type == "bookmark") side = 1; - var from, to; - for (var i = 0; i < this.lines.length; ++i) { - var line = this.lines[i]; - var span = getMarkedSpanFor(line.markedSpans, this); - if (span.from != null) { - from = Pos(lineObj ? line : lineNo(line), span.from); - if (side == -1) return from; - } - if (span.to != null) { - to = Pos(lineObj ? line : lineNo(line), span.to); - if (side == 1) return to; - } - } - return from && {from: from, to: to}; - }; - - // Signals that the marker's widget changed, and surrounding layout - // should be recomputed. - TextMarker.prototype.changed = function() { - var pos = this.find(-1, true), widget = this, cm = this.doc.cm; - if (!pos || !cm) return; - runInOp(cm, function() { - var line = pos.line, lineN = lineNo(pos.line); - var view = findViewForLine(cm, lineN); - if (view) { - clearLineMeasurementCacheFor(view); - cm.curOp.selectionChanged = cm.curOp.forceUpdate = true; - } - cm.curOp.updateMaxLine = true; - if (!lineIsHidden(widget.doc, line) && widget.height != null) { - var oldHeight = widget.height; - widget.height = null; - var dHeight = widgetHeight(widget) - oldHeight; - if (dHeight) - updateLineHeight(line, line.height + dHeight); - } - }); - }; - - TextMarker.prototype.attachLine = function(line) { - if (!this.lines.length && this.doc.cm) { - var op = this.doc.cm.curOp; - if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1) - (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); - } - this.lines.push(line); - }; - TextMarker.prototype.detachLine = function(line) { - this.lines.splice(indexOf(this.lines, line), 1); - if (!this.lines.length && this.doc.cm) { - var op = this.doc.cm.curOp; - (op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this); - } - }; - - // Collapsed markers have unique ids, in order to be able to order - // them, which is needed for uniquely determining an outer marker - // when they overlap (they may nest, but not partially overlap). - var nextMarkerId = 0; - - // Create a marker, wire it up to the right lines, and - function markText(doc, from, to, options, type) { - // Shared markers (across linked documents) are handled separately - // (markTextShared will call out to this again, once per - // document). - if (options && options.shared) return markTextShared(doc, from, to, options, type); - // Ensure we are in an operation. - if (doc.cm && !doc.cm.curOp) return operation(doc.cm, markText)(doc, from, to, options, type); - - var marker = new TextMarker(doc, type), diff = cmp(from, to); - if (options) copyObj(options, marker, false); - // Don't connect empty markers unless clearWhenEmpty is false - if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false) - return marker; - if (marker.replacedWith) { - // Showing up as a widget implies collapsed (widget replaces text) - marker.collapsed = true; - marker.widgetNode = elt("span", [marker.replacedWith], "CodeMirror-widget"); - if (!options.handleMouseEvents) marker.widgetNode.ignoreEvents = true; - if (options.insertLeft) marker.widgetNode.insertLeft = true; - } - if (marker.collapsed) { - if (conflictingCollapsedRange(doc, from.line, from, to, marker) || - from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker)) - throw new Error("Inserting collapsed marker partially overlapping an existing one"); - sawCollapsedSpans = true; - } - - if (marker.addToHistory) - addChangeToHistory(doc, {from: from, to: to, origin: "markText"}, doc.sel, NaN); - - var curLine = from.line, cm = doc.cm, updateMaxLine; - doc.iter(curLine, to.line + 1, function(line) { - if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine) - updateMaxLine = true; - if (marker.collapsed && curLine != from.line) updateLineHeight(line, 0); - addMarkedSpan(line, new MarkedSpan(marker, - curLine == from.line ? from.ch : null, - curLine == to.line ? to.ch : null)); - ++curLine; - }); - // lineIsHidden depends on the presence of the spans, so needs a second pass - if (marker.collapsed) doc.iter(from.line, to.line + 1, function(line) { - if (lineIsHidden(doc, line)) updateLineHeight(line, 0); - }); - - if (marker.clearOnEnter) on(marker, "beforeCursorEnter", function() { marker.clear(); }); - - if (marker.readOnly) { - sawReadOnlySpans = true; - if (doc.history.done.length || doc.history.undone.length) - doc.clearHistory(); - } - if (marker.collapsed) { - marker.id = ++nextMarkerId; - marker.atomic = true; - } - if (cm) { - // Sync editor state - if (updateMaxLine) cm.curOp.updateMaxLine = true; - if (marker.collapsed) - regChange(cm, from.line, to.line + 1); - else if (marker.className || marker.title || marker.startStyle || marker.endStyle) - for (var i = from.line; i <= to.line; i++) regLineChange(cm, i, "text"); - if (marker.atomic) reCheckSelection(cm.doc); - signalLater(cm, "markerAdded", cm, marker); - } - return marker; - } - - // SHARED TEXTMARKERS - - // A shared marker spans multiple linked documents. It is - // implemented as a meta-marker-object controlling multiple normal - // markers. - var SharedTextMarker = CodeMirror.SharedTextMarker = function(markers, primary) { - this.markers = markers; - this.primary = primary; - for (var i = 0; i < markers.length; ++i) - markers[i].parent = this; - }; - eventMixin(SharedTextMarker); - - SharedTextMarker.prototype.clear = function() { - if (this.explicitlyCleared) return; - this.explicitlyCleared = true; - for (var i = 0; i < this.markers.length; ++i) - this.markers[i].clear(); - signalLater(this, "clear"); - }; - SharedTextMarker.prototype.find = function(side, lineObj) { - return this.primary.find(side, lineObj); - }; - - function markTextShared(doc, from, to, options, type) { - options = copyObj(options); - options.shared = false; - var markers = [markText(doc, from, to, options, type)], primary = markers[0]; - var widget = options.widgetNode; - linkedDocs(doc, function(doc) { - if (widget) options.widgetNode = widget.cloneNode(true); - markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type)); - for (var i = 0; i < doc.linked.length; ++i) - if (doc.linked[i].isParent) return; - primary = lst(markers); - }); - return new SharedTextMarker(markers, primary); - } - - function findSharedMarkers(doc) { - return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), - function(m) { return m.parent; }); - } - - function copySharedMarkers(doc, markers) { - for (var i = 0; i < markers.length; i++) { - var marker = markers[i], pos = marker.find(); - var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to); - if (cmp(mFrom, mTo)) { - var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type); - marker.markers.push(subMark); - subMark.parent = marker; - } - } - } - - function detachSharedMarkers(markers) { - for (var i = 0; i < markers.length; i++) { - var marker = markers[i], linked = [marker.primary.doc];; - linkedDocs(marker.primary.doc, function(d) { linked.push(d); }); - for (var j = 0; j < marker.markers.length; j++) { - var subMarker = marker.markers[j]; - if (indexOf(linked, subMarker.doc) == -1) { - subMarker.parent = null; - marker.markers.splice(j--, 1); - } - } - } - } - - // TEXTMARKER SPANS - - function MarkedSpan(marker, from, to) { - this.marker = marker; - this.from = from; this.to = to; - } - - // Search an array of spans for a span matching the given marker. - function getMarkedSpanFor(spans, marker) { - if (spans) for (var i = 0; i < spans.length; ++i) { - var span = spans[i]; - if (span.marker == marker) return span; - } - } - // Remove a span from an array, returning undefined if no spans are - // left (we don't store arrays for lines without spans). - function removeMarkedSpan(spans, span) { - for (var r, i = 0; i < spans.length; ++i) - if (spans[i] != span) (r || (r = [])).push(spans[i]); - return r; - } - // Add a span to a line. - function addMarkedSpan(line, span) { - line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span]; - span.marker.attachLine(line); - } - - // Used for the algorithm that adjusts markers for a change in the - // document. These functions cut an array of spans at a given - // character position, returning an array of remaining chunks (or - // undefined if nothing remains). - function markedSpansBefore(old, startCh, isInsert) { - if (old) for (var i = 0, nw; i < old.length; ++i) { - var span = old[i], marker = span.marker; - var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh); - if (startsBefore || span.from == startCh && marker.type == "bookmark" && (!isInsert || !span.marker.insertLeft)) { - var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh); - (nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to)); - } - } - return nw; - } - function markedSpansAfter(old, endCh, isInsert) { - if (old) for (var i = 0, nw; i < old.length; ++i) { - var span = old[i], marker = span.marker; - var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh); - if (endsAfter || span.from == endCh && marker.type == "bookmark" && (!isInsert || span.marker.insertLeft)) { - var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh); - (nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh, - span.to == null ? null : span.to - endCh)); - } - } - return nw; - } - - // Given a change object, compute the new set of marker spans that - // cover the line in which the change took place. Removes spans - // entirely within the change, reconnects spans belonging to the - // same marker that appear on both sides of the change, and cuts off - // spans partially within the change. Returns an array of span - // arrays with one element for each line in (after) the change. - function stretchSpansOverChange(doc, change) { - var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans; - var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans; - if (!oldFirst && !oldLast) return null; - - var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0; - // Get the spans that 'stick out' on both sides - var first = markedSpansBefore(oldFirst, startCh, isInsert); - var last = markedSpansAfter(oldLast, endCh, isInsert); - - // Next, merge those two ends - var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0); - if (first) { - // Fix up .to properties of first - for (var i = 0; i < first.length; ++i) { - var span = first[i]; - if (span.to == null) { - var found = getMarkedSpanFor(last, span.marker); - if (!found) span.to = startCh; - else if (sameLine) span.to = found.to == null ? null : found.to + offset; - } - } - } - if (last) { - // Fix up .from in last (or move them into first in case of sameLine) - for (var i = 0; i < last.length; ++i) { - var span = last[i]; - if (span.to != null) span.to += offset; - if (span.from == null) { - var found = getMarkedSpanFor(first, span.marker); - if (!found) { - span.from = offset; - if (sameLine) (first || (first = [])).push(span); - } - } else { - span.from += offset; - if (sameLine) (first || (first = [])).push(span); - } - } - } - // Make sure we didn't create any zero-length spans - if (first) first = clearEmptySpans(first); - if (last && last != first) last = clearEmptySpans(last); - - var newMarkers = [first]; - if (!sameLine) { - // Fill gap with whole-line-spans - var gap = change.text.length - 2, gapMarkers; - if (gap > 0 && first) - for (var i = 0; i < first.length; ++i) - if (first[i].to == null) - (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i].marker, null, null)); - for (var i = 0; i < gap; ++i) - newMarkers.push(gapMarkers); - newMarkers.push(last); - } - return newMarkers; - } - - // Remove spans that are empty and don't have a clearWhenEmpty - // option of false. - function clearEmptySpans(spans) { - for (var i = 0; i < spans.length; ++i) { - var span = spans[i]; - if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false) - spans.splice(i--, 1); - } - if (!spans.length) return null; - return spans; - } - - // Used for un/re-doing changes from the history. Combines the - // result of computing the existing spans with the set of spans that - // existed in the history (so that deleting around a span and then - // undoing brings back the span). - function mergeOldSpans(doc, change) { - var old = getOldSpans(doc, change); - var stretched = stretchSpansOverChange(doc, change); - if (!old) return stretched; - if (!stretched) return old; - - for (var i = 0; i < old.length; ++i) { - var oldCur = old[i], stretchCur = stretched[i]; - if (oldCur && stretchCur) { - spans: for (var j = 0; j < stretchCur.length; ++j) { - var span = stretchCur[j]; - for (var k = 0; k < oldCur.length; ++k) - if (oldCur[k].marker == span.marker) continue spans; - oldCur.push(span); - } - } else if (stretchCur) { - old[i] = stretchCur; - } - } - return old; - } - - // Used to 'clip' out readOnly ranges when making a change. - function removeReadOnlyRanges(doc, from, to) { - var markers = null; - doc.iter(from.line, to.line + 1, function(line) { - if (line.markedSpans) for (var i = 0; i < line.markedSpans.length; ++i) { - var mark = line.markedSpans[i].marker; - if (mark.readOnly && (!markers || indexOf(markers, mark) == -1)) - (markers || (markers = [])).push(mark); - } - }); - if (!markers) return null; - var parts = [{from: from, to: to}]; - for (var i = 0; i < markers.length; ++i) { - var mk = markers[i], m = mk.find(0); - for (var j = 0; j < parts.length; ++j) { - var p = parts[j]; - if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) continue; - var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to); - if (dfrom < 0 || !mk.inclusiveLeft && !dfrom) - newParts.push({from: p.from, to: m.from}); - if (dto > 0 || !mk.inclusiveRight && !dto) - newParts.push({from: m.to, to: p.to}); - parts.splice.apply(parts, newParts); - j += newParts.length - 1; - } - } - return parts; - } - - // Connect or disconnect spans from a line. - function detachMarkedSpans(line) { - var spans = line.markedSpans; - if (!spans) return; - for (var i = 0; i < spans.length; ++i) - spans[i].marker.detachLine(line); - line.markedSpans = null; - } - function attachMarkedSpans(line, spans) { - if (!spans) return; - for (var i = 0; i < spans.length; ++i) - spans[i].marker.attachLine(line); - line.markedSpans = spans; - } - - // Helpers used when computing which overlapping collapsed span - // counts as the larger one. - function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0; } - function extraRight(marker) { return marker.inclusiveRight ? 1 : 0; } - - // Returns a number indicating which of two overlapping collapsed - // spans is larger (and thus includes the other). Falls back to - // comparing ids when the spans cover exactly the same range. - function compareCollapsedMarkers(a, b) { - var lenDiff = a.lines.length - b.lines.length; - if (lenDiff != 0) return lenDiff; - var aPos = a.find(), bPos = b.find(); - var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b); - if (fromCmp) return -fromCmp; - var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b); - if (toCmp) return toCmp; - return b.id - a.id; - } - - // Find out whether a line ends or starts in a collapsed span. If - // so, return the marker for that span. - function collapsedSpanAtSide(line, start) { - var sps = sawCollapsedSpans && line.markedSpans, found; - if (sps) for (var sp, i = 0; i < sps.length; ++i) { - sp = sps[i]; - if (sp.marker.collapsed && (start ? sp.from : sp.to) == null && - (!found || compareCollapsedMarkers(found, sp.marker) < 0)) - found = sp.marker; - } - return found; - } - function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true); } - function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false); } - - // Test whether there exists a collapsed span that partially - // overlaps (covers the start or end, but not both) of a new span. - // Such overlap is not allowed. - function conflictingCollapsedRange(doc, lineNo, from, to, marker) { - var line = getLine(doc, lineNo); - var sps = sawCollapsedSpans && line.markedSpans; - if (sps) for (var i = 0; i < sps.length; ++i) { - var sp = sps[i]; - if (!sp.marker.collapsed) continue; - var found = sp.marker.find(0); - var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker); - var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker); - if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) continue; - if (fromCmp <= 0 && (cmp(found.to, from) > 0 || (sp.marker.inclusiveRight && marker.inclusiveLeft)) || - fromCmp >= 0 && (cmp(found.from, to) < 0 || (sp.marker.inclusiveLeft && marker.inclusiveRight))) - return true; - } - } - - // A visual line is a line as drawn on the screen. Folding, for - // example, can cause multiple logical lines to appear on the same - // visual line. This finds the start of the visual line that the - // given line is part of (usually that is the line itself). - function visualLine(line) { - var merged; - while (merged = collapsedSpanAtStart(line)) - line = merged.find(-1, true).line; - return line; - } - - // Returns an array of logical lines that continue the visual line - // started by the argument, or undefined if there are no such lines. - function visualLineContinued(line) { - var merged, lines; - while (merged = collapsedSpanAtEnd(line)) { - line = merged.find(1, true).line; - (lines || (lines = [])).push(line); - } - return lines; - } - - // Get the line number of the start of the visual line that the - // given line number is part of. - function visualLineNo(doc, lineN) { - var line = getLine(doc, lineN), vis = visualLine(line); - if (line == vis) return lineN; - return lineNo(vis); - } - // Get the line number of the start of the next visual line after - // the given line. - function visualLineEndNo(doc, lineN) { - if (lineN > doc.lastLine()) return lineN; - var line = getLine(doc, lineN), merged; - if (!lineIsHidden(doc, line)) return lineN; - while (merged = collapsedSpanAtEnd(line)) - line = merged.find(1, true).line; - return lineNo(line) + 1; - } - - // Compute whether a line is hidden. Lines count as hidden when they - // are part of a visual line that starts with another line, or when - // they are entirely covered by collapsed, non-widget span. - function lineIsHidden(doc, line) { - var sps = sawCollapsedSpans && line.markedSpans; - if (sps) for (var sp, i = 0; i < sps.length; ++i) { - sp = sps[i]; - if (!sp.marker.collapsed) continue; - if (sp.from == null) return true; - if (sp.marker.widgetNode) continue; - if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp)) - return true; - } - } - function lineIsHiddenInner(doc, line, span) { - if (span.to == null) { - var end = span.marker.find(1, true); - return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker)); - } - if (span.marker.inclusiveRight && span.to == line.text.length) - return true; - for (var sp, i = 0; i < line.markedSpans.length; ++i) { - sp = line.markedSpans[i]; - if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to && - (sp.to == null || sp.to != span.from) && - (sp.marker.inclusiveLeft || span.marker.inclusiveRight) && - lineIsHiddenInner(doc, line, sp)) return true; - } - } - - // LINE WIDGETS - - // Line widgets are block elements displayed above or below a line. - - var LineWidget = CodeMirror.LineWidget = function(cm, node, options) { - if (options) for (var opt in options) if (options.hasOwnProperty(opt)) - this[opt] = options[opt]; - this.cm = cm; - this.node = node; - }; - eventMixin(LineWidget); - - function adjustScrollWhenAboveVisible(cm, line, diff) { - if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop)) - addToScrollPos(cm, null, diff); - } - - LineWidget.prototype.clear = function() { - var cm = this.cm, ws = this.line.widgets, line = this.line, no = lineNo(line); - if (no == null || !ws) return; - for (var i = 0; i < ws.length; ++i) if (ws[i] == this) ws.splice(i--, 1); - if (!ws.length) line.widgets = null; - var height = widgetHeight(this); - runInOp(cm, function() { - adjustScrollWhenAboveVisible(cm, line, -height); - regLineChange(cm, no, "widget"); - updateLineHeight(line, Math.max(0, line.height - height)); - }); - }; - LineWidget.prototype.changed = function() { - var oldH = this.height, cm = this.cm, line = this.line; - this.height = null; - var diff = widgetHeight(this) - oldH; - if (!diff) return; - runInOp(cm, function() { - cm.curOp.forceUpdate = true; - adjustScrollWhenAboveVisible(cm, line, diff); - updateLineHeight(line, line.height + diff); - }); - }; - - function widgetHeight(widget) { - if (widget.height != null) return widget.height; - if (!contains(document.body, widget.node)) { - var parentStyle = "position: relative;"; - if (widget.coverGutter) - parentStyle += "margin-left: -" + widget.cm.getGutterElement().offsetWidth + "px;"; - removeChildrenAndAdd(widget.cm.display.measure, elt("div", [widget.node], null, parentStyle)); - } - return widget.height = widget.node.offsetHeight; - } - - function addLineWidget(cm, handle, node, options) { - var widget = new LineWidget(cm, node, options); - if (widget.noHScroll) cm.display.alignWidgets = true; - changeLine(cm.doc, handle, "widget", function(line) { - var widgets = line.widgets || (line.widgets = []); - if (widget.insertAt == null) widgets.push(widget); - else widgets.splice(Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), 0, widget); - widget.line = line; - if (!lineIsHidden(cm.doc, line)) { - var aboveVisible = heightAtLine(line) < cm.doc.scrollTop; - updateLineHeight(line, line.height + widgetHeight(widget)); - if (aboveVisible) addToScrollPos(cm, null, widget.height); - cm.curOp.forceUpdate = true; - } - return true; - }); - return widget; - } - - // LINE DATA STRUCTURE - - // Line objects. These hold state related to a line, including - // highlighting info (the styles array). - var Line = CodeMirror.Line = function(text, markedSpans, estimateHeight) { - this.text = text; - attachMarkedSpans(this, markedSpans); - this.height = estimateHeight ? estimateHeight(this) : 1; - }; - eventMixin(Line); - Line.prototype.lineNo = function() { return lineNo(this); }; - - // Change the content (text, markers) of a line. Automatically - // invalidates cached information and tries to re-estimate the - // line's height. - function updateLine(line, text, markedSpans, estimateHeight) { - line.text = text; - if (line.stateAfter) line.stateAfter = null; - if (line.styles) line.styles = null; - if (line.order != null) line.order = null; - detachMarkedSpans(line); - attachMarkedSpans(line, markedSpans); - var estHeight = estimateHeight ? estimateHeight(line) : 1; - if (estHeight != line.height) updateLineHeight(line, estHeight); - } - - // Detach a line from the document tree and its markers. - function cleanUpLine(line) { - line.parent = null; - detachMarkedSpans(line); - } - - function extractLineClasses(type, output) { - if (type) for (;;) { - var lineClass = type.match(/(?:^|\s+)line-(background-)?(\S+)/); - if (!lineClass) break; - type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length); - var prop = lineClass[1] ? "bgClass" : "textClass"; - if (output[prop] == null) - output[prop] = lineClass[2]; - else if (!(new RegExp("(?:^|\s)" + lineClass[2] + "(?:$|\s)")).test(output[prop])) - output[prop] += " " + lineClass[2]; - } - return type; - } - - function callBlankLine(mode, state) { - if (mode.blankLine) return mode.blankLine(state); - if (!mode.innerMode) return; - var inner = CodeMirror.innerMode(mode, state); - if (inner.mode.blankLine) return inner.mode.blankLine(inner.state); - } - - function readToken(mode, stream, state) { - for (var i = 0; i < 10; i++) { - var style = mode.token(stream, state); - if (stream.pos > stream.start) return style; - } - throw new Error("Mode " + mode.name + " failed to advance stream."); - } - - // Run the given mode's parser over a line, calling f for each token. - function runMode(cm, text, mode, state, f, lineClasses, forceToEnd) { - var flattenSpans = mode.flattenSpans; - if (flattenSpans == null) flattenSpans = cm.options.flattenSpans; - var curStart = 0, curStyle = null; - var stream = new StringStream(text, cm.options.tabSize), style; - if (text == "") extractLineClasses(callBlankLine(mode, state), lineClasses); - while (!stream.eol()) { - if (stream.pos > cm.options.maxHighlightLength) { - flattenSpans = false; - if (forceToEnd) processLine(cm, text, state, stream.pos); - stream.pos = text.length; - style = null; - } else { - style = extractLineClasses(readToken(mode, stream, state), lineClasses); - } - if (cm.options.addModeClass) { - var mName = CodeMirror.innerMode(mode, state).mode.name; - if (mName) style = "m-" + (style ? mName + " " + style : mName); - } - if (!flattenSpans || curStyle != style) { - if (curStart < stream.start) f(stream.start, curStyle); - curStart = stream.start; curStyle = style; - } - stream.start = stream.pos; - } - while (curStart < stream.pos) { - // Webkit seems to refuse to render text nodes longer than 57444 characters - var pos = Math.min(stream.pos, curStart + 50000); - f(pos, curStyle); - curStart = pos; - } - } - - // Compute a style array (an array starting with a mode generation - // -- for invalidation -- followed by pairs of end positions and - // style strings), which is used to highlight the tokens on the - // line. - function highlightLine(cm, line, state, forceToEnd) { - // A styles array always starts with a number identifying the - // mode/overlays that it is based on (for easy invalidation). - var st = [cm.state.modeGen], lineClasses = {}; - // Compute the base array of styles - runMode(cm, line.text, cm.doc.mode, state, function(end, style) { - st.push(end, style); - }, lineClasses, forceToEnd); - - // Run overlays, adjust style array. - for (var o = 0; o < cm.state.overlays.length; ++o) { - var overlay = cm.state.overlays[o], i = 1, at = 0; - runMode(cm, line.text, overlay.mode, true, function(end, style) { - var start = i; - // Ensure there's a token end at the current position, and that i points at it - while (at < end) { - var i_end = st[i]; - if (i_end > end) - st.splice(i, 1, end, st[i+1], i_end); - i += 2; - at = Math.min(end, i_end); - } - if (!style) return; - if (overlay.opaque) { - st.splice(start, i - start, end, "cm-overlay " + style); - i = start + 2; - } else { - for (; start < i; start += 2) { - var cur = st[start+1]; - st[start+1] = (cur ? cur + " " : "") + "cm-overlay " + style; - } - } - }, lineClasses); - } - - return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}; - } - - function getLineStyles(cm, line) { - if (!line.styles || line.styles[0] != cm.state.modeGen) { - var result = highlightLine(cm, line, line.stateAfter = getStateBefore(cm, lineNo(line))); - line.styles = result.styles; - if (result.classes) line.styleClasses = result.classes; - else if (line.styleClasses) line.styleClasses = null; - } - return line.styles; - } - - // Lightweight form of highlight -- proceed over this line and - // update state, but don't save a style array. Used for lines that - // aren't currently visible. - function processLine(cm, text, state, startAt) { - var mode = cm.doc.mode; - var stream = new StringStream(text, cm.options.tabSize); - stream.start = stream.pos = startAt || 0; - if (text == "") callBlankLine(mode, state); - while (!stream.eol() && stream.pos <= cm.options.maxHighlightLength) { - readToken(mode, stream, state); - stream.start = stream.pos; - } - } - - // Convert a style as returned by a mode (either null, or a string - // containing one or more styles) to a CSS style. This is cached, - // and also looks for line-wide styles. - var styleToClassCache = {}, styleToClassCacheWithMode = {}; - function interpretTokenStyle(style, options) { - if (!style || /^\s*$/.test(style)) return null; - var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache; - return cache[style] || - (cache[style] = style.replace(/\S+/g, "cm-$&")); - } - - // Render the DOM representation of the text of a line. Also builds - // up a 'line map', which points at the DOM nodes that represent - // specific stretches of text, and is used by the measuring code. - // The returned object contains the DOM node, this map, and - // information about line-wide styles that were set by the mode. - function buildLineContent(cm, lineView) { - // The padding-right forces the element to have a 'border', which - // is needed on Webkit to be able to get line-level bounding - // rectangles for it (in measureChar). - var content = elt("span", null, null, webkit ? "padding-right: .1px" : null); - var builder = {pre: elt("pre", [content]), content: content, col: 0, pos: 0, cm: cm}; - lineView.measure = {}; - - // Iterate over the logical lines that make up this visual line. - for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) { - var line = i ? lineView.rest[i - 1] : lineView.line, order; - builder.pos = 0; - builder.addToken = buildToken; - // Optionally wire in some hacks into the token-rendering - // algorithm, to deal with browser quirks. - if ((ie || webkit) && cm.getOption("lineWrapping")) - builder.addToken = buildTokenSplitSpaces(builder.addToken); - if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line))) - builder.addToken = buildTokenBadBidi(builder.addToken, order); - builder.map = []; - insertLineContent(line, builder, getLineStyles(cm, line)); - if (line.styleClasses) { - if (line.styleClasses.bgClass) - builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || ""); - if (line.styleClasses.textClass) - builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || ""); - } - - // Ensure at least a single node is present, for measuring. - if (builder.map.length == 0) - builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); - - // Store the map and a cache object for the current logical line - if (i == 0) { - lineView.measure.map = builder.map; - lineView.measure.cache = {}; - } else { - (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map); - (lineView.measure.caches || (lineView.measure.caches = [])).push({}); - } - } - - signal(cm, "renderLine", cm, lineView.line, builder.pre); - if (builder.pre.className) - builder.textClass = joinClasses(builder.pre.className, builder.textClass || ""); - return builder; - } - - function defaultSpecialCharPlaceholder(ch) { - var token = elt("span", "\u2022", "cm-invalidchar"); - token.title = "\\u" + ch.charCodeAt(0).toString(16); - return token; - } - - // Build up the DOM representation for a single token, and add it to - // the line map. Takes care to render special characters separately. - function buildToken(builder, text, style, startStyle, endStyle, title) { - if (!text) return; - var special = builder.cm.options.specialChars, mustWrap = false; - if (!special.test(text)) { - builder.col += text.length; - var content = document.createTextNode(text); - builder.map.push(builder.pos, builder.pos + text.length, content); - if (ie && ie_version < 9) mustWrap = true; - builder.pos += text.length; - } else { - var content = document.createDocumentFragment(), pos = 0; - while (true) { - special.lastIndex = pos; - var m = special.exec(text); - var skipped = m ? m.index - pos : text.length - pos; - if (skipped) { - var txt = document.createTextNode(text.slice(pos, pos + skipped)); - if (ie && ie_version < 9) content.appendChild(elt("span", [txt])); - else content.appendChild(txt); - builder.map.push(builder.pos, builder.pos + skipped, txt); - builder.col += skipped; - builder.pos += skipped; - } - if (!m) break; - pos += skipped + 1; - if (m[0] == "\t") { - var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize; - var txt = content.appendChild(elt("span", spaceStr(tabWidth), "cm-tab")); - builder.col += tabWidth; - } else { - var txt = builder.cm.options.specialCharPlaceholder(m[0]); - if (ie && ie_version < 9) content.appendChild(elt("span", [txt])); - else content.appendChild(txt); - builder.col += 1; - } - builder.map.push(builder.pos, builder.pos + 1, txt); - builder.pos++; - } - } - if (style || startStyle || endStyle || mustWrap) { - var fullStyle = style || ""; - if (startStyle) fullStyle += startStyle; - if (endStyle) fullStyle += endStyle; - var token = elt("span", [content], fullStyle); - if (title) token.title = title; - return builder.content.appendChild(token); - } - builder.content.appendChild(content); - } - - function buildTokenSplitSpaces(inner) { - function split(old) { - var out = " "; - for (var i = 0; i < old.length - 2; ++i) out += i % 2 ? " " : "\u00a0"; - out += " "; - return out; - } - return function(builder, text, style, startStyle, endStyle, title) { - inner(builder, text.replace(/ {3,}/g, split), style, startStyle, endStyle, title); - }; - } - - // Work around nonsense dimensions being reported for stretches of - // right-to-left text. - function buildTokenBadBidi(inner, order) { - return function(builder, text, style, startStyle, endStyle, title) { - style = style ? style + " cm-force-border" : "cm-force-border"; - var start = builder.pos, end = start + text.length; - for (;;) { - // Find the part that overlaps with the start of this text - for (var i = 0; i < order.length; i++) { - var part = order[i]; - if (part.to > start && part.from <= start) break; - } - if (part.to >= end) return inner(builder, text, style, startStyle, endStyle, title); - inner(builder, text.slice(0, part.to - start), style, startStyle, null, title); - startStyle = null; - text = text.slice(part.to - start); - start = part.to; - } - }; - } - - function buildCollapsedSpan(builder, size, marker, ignoreWidget) { - var widget = !ignoreWidget && marker.widgetNode; - if (widget) { - builder.map.push(builder.pos, builder.pos + size, widget); - builder.content.appendChild(widget); - } - builder.pos += size; - } - - // Outputs a number of spans to make up a line, taking highlighting - // and marked text into account. - function insertLineContent(line, builder, styles) { - var spans = line.markedSpans, allText = line.text, at = 0; - if (!spans) { - for (var i = 1; i < styles.length; i+=2) - builder.addToken(builder, allText.slice(at, at = styles[i]), interpretTokenStyle(styles[i+1], builder.cm.options)); - return; - } - - var len = allText.length, pos = 0, i = 1, text = "", style; - var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, title, collapsed; - for (;;) { - if (nextChange == pos) { // Update current marker set - spanStyle = spanEndStyle = spanStartStyle = title = ""; - collapsed = null; nextChange = Infinity; - var foundBookmarks = []; - for (var j = 0; j < spans.length; ++j) { - var sp = spans[j], m = sp.marker; - if (sp.from <= pos && (sp.to == null || sp.to > pos)) { - if (sp.to != null && nextChange > sp.to) { nextChange = sp.to; spanEndStyle = ""; } - if (m.className) spanStyle += " " + m.className; - if (m.startStyle && sp.from == pos) spanStartStyle += " " + m.startStyle; - if (m.endStyle && sp.to == nextChange) spanEndStyle += " " + m.endStyle; - if (m.title && !title) title = m.title; - if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0)) - collapsed = sp; - } else if (sp.from > pos && nextChange > sp.from) { - nextChange = sp.from; - } - if (m.type == "bookmark" && sp.from == pos && m.widgetNode) foundBookmarks.push(m); - } - if (collapsed && (collapsed.from || 0) == pos) { - buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos, - collapsed.marker, collapsed.from == null); - if (collapsed.to == null) return; - } - if (!collapsed && foundBookmarks.length) for (var j = 0; j < foundBookmarks.length; ++j) - buildCollapsedSpan(builder, 0, foundBookmarks[j]); - } - if (pos >= len) break; - - var upto = Math.min(len, nextChange); - while (true) { - if (text) { - var end = pos + text.length; - if (!collapsed) { - var tokenText = end > upto ? text.slice(0, upto - pos) : text; - builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle, - spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : "", title); - } - if (end >= upto) {text = text.slice(upto - pos); pos = upto; break;} - pos = end; - spanStartStyle = ""; - } - text = allText.slice(at, at = styles[i++]); - style = interpretTokenStyle(styles[i++], builder.cm.options); - } - } - } - - // DOCUMENT DATA STRUCTURE - - // By default, updates that start and end at the beginning of a line - // are treated specially, in order to make the association of line - // widgets and marker elements with the text behave more intuitive. - function isWholeLineUpdate(doc, change) { - return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == "" && - (!doc.cm || doc.cm.options.wholeLineUpdateBefore); - } - - // Perform a change on the document data structure. - function updateDoc(doc, change, markedSpans, estimateHeight) { - function spansFor(n) {return markedSpans ? markedSpans[n] : null;} - function update(line, text, spans) { - updateLine(line, text, spans, estimateHeight); - signalLater(line, "change", line, change); - } - - var from = change.from, to = change.to, text = change.text; - var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line); - var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line; - - // Adjust the line structure - if (isWholeLineUpdate(doc, change)) { - // This is a whole-line replace. Treated specially to make - // sure line objects move the way they are supposed to. - for (var i = 0, added = []; i < text.length - 1; ++i) - added.push(new Line(text[i], spansFor(i), estimateHeight)); - update(lastLine, lastLine.text, lastSpans); - if (nlines) doc.remove(from.line, nlines); - if (added.length) doc.insert(from.line, added); - } else if (firstLine == lastLine) { - if (text.length == 1) { - update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans); - } else { - for (var added = [], i = 1; i < text.length - 1; ++i) - added.push(new Line(text[i], spansFor(i), estimateHeight)); - added.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight)); - update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0)); - doc.insert(from.line + 1, added); - } - } else if (text.length == 1) { - update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0)); - doc.remove(from.line + 1, nlines); - } else { - update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0)); - update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans); - for (var i = 1, added = []; i < text.length - 1; ++i) - added.push(new Line(text[i], spansFor(i), estimateHeight)); - if (nlines > 1) doc.remove(from.line + 1, nlines - 1); - doc.insert(from.line + 1, added); - } - - signalLater(doc, "change", doc, change); - } - - // The document is represented as a BTree consisting of leaves, with - // chunk of lines in them, and branches, with up to ten leaves or - // other branch nodes below them. The top node is always a branch - // node, and is the document object itself (meaning it has - // additional methods and properties). - // - // All nodes have parent links. The tree is used both to go from - // line numbers to line objects, and to go from objects to numbers. - // It also indexes by height, and is used to convert between height - // and line object, and to find the total height of the document. - // - // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html - - function LeafChunk(lines) { - this.lines = lines; - this.parent = null; - for (var i = 0, height = 0; i < lines.length; ++i) { - lines[i].parent = this; - height += lines[i].height; - } - this.height = height; - } - - LeafChunk.prototype = { - chunkSize: function() { return this.lines.length; }, - // Remove the n lines at offset 'at'. - removeInner: function(at, n) { - for (var i = at, e = at + n; i < e; ++i) { - var line = this.lines[i]; - this.height -= line.height; - cleanUpLine(line); - signalLater(line, "delete"); - } - this.lines.splice(at, n); - }, - // Helper used to collapse a small branch into a single leaf. - collapse: function(lines) { - lines.push.apply(lines, this.lines); - }, - // Insert the given array of lines at offset 'at', count them as - // having the given height. - insertInner: function(at, lines, height) { - this.height += height; - this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at)); - for (var i = 0; i < lines.length; ++i) lines[i].parent = this; - }, - // Used to iterate over a part of the tree. - iterN: function(at, n, op) { - for (var e = at + n; at < e; ++at) - if (op(this.lines[at])) return true; - } - }; - - function BranchChunk(children) { - this.children = children; - var size = 0, height = 0; - for (var i = 0; i < children.length; ++i) { - var ch = children[i]; - size += ch.chunkSize(); height += ch.height; - ch.parent = this; - } - this.size = size; - this.height = height; - this.parent = null; - } - - BranchChunk.prototype = { - chunkSize: function() { return this.size; }, - removeInner: function(at, n) { - this.size -= n; - for (var i = 0; i < this.children.length; ++i) { - var child = this.children[i], sz = child.chunkSize(); - if (at < sz) { - var rm = Math.min(n, sz - at), oldHeight = child.height; - child.removeInner(at, rm); - this.height -= oldHeight - child.height; - if (sz == rm) { this.children.splice(i--, 1); child.parent = null; } - if ((n -= rm) == 0) break; - at = 0; - } else at -= sz; - } - // If the result is smaller than 25 lines, ensure that it is a - // single leaf node. - if (this.size - n < 25 && - (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) { - var lines = []; - this.collapse(lines); - this.children = [new LeafChunk(lines)]; - this.children[0].parent = this; - } - }, - collapse: function(lines) { - for (var i = 0; i < this.children.length; ++i) this.children[i].collapse(lines); - }, - insertInner: function(at, lines, height) { - this.size += lines.length; - this.height += height; - for (var i = 0; i < this.children.length; ++i) { - var child = this.children[i], sz = child.chunkSize(); - if (at <= sz) { - child.insertInner(at, lines, height); - if (child.lines && child.lines.length > 50) { - while (child.lines.length > 50) { - var spilled = child.lines.splice(child.lines.length - 25, 25); - var newleaf = new LeafChunk(spilled); - child.height -= newleaf.height; - this.children.splice(i + 1, 0, newleaf); - newleaf.parent = this; - } - this.maybeSpill(); - } - break; - } - at -= sz; - } - }, - // When a node has grown, check whether it should be split. - maybeSpill: function() { - if (this.children.length <= 10) return; - var me = this; - do { - var spilled = me.children.splice(me.children.length - 5, 5); - var sibling = new BranchChunk(spilled); - if (!me.parent) { // Become the parent node - var copy = new BranchChunk(me.children); - copy.parent = me; - me.children = [copy, sibling]; - me = copy; - } else { - me.size -= sibling.size; - me.height -= sibling.height; - var myIndex = indexOf(me.parent.children, me); - me.parent.children.splice(myIndex + 1, 0, sibling); - } - sibling.parent = me.parent; - } while (me.children.length > 10); - me.parent.maybeSpill(); - }, - iterN: function(at, n, op) { - for (var i = 0; i < this.children.length; ++i) { - var child = this.children[i], sz = child.chunkSize(); - if (at < sz) { - var used = Math.min(n, sz - at); - if (child.iterN(at, used, op)) return true; - if ((n -= used) == 0) break; - at = 0; - } else at -= sz; - } - } - }; - - var nextDocId = 0; - var Doc = CodeMirror.Doc = function(text, mode, firstLine) { - if (!(this instanceof Doc)) return new Doc(text, mode, firstLine); - if (firstLine == null) firstLine = 0; - - BranchChunk.call(this, [new LeafChunk([new Line("", null)])]); - this.first = firstLine; - this.scrollTop = this.scrollLeft = 0; - this.cantEdit = false; - this.cleanGeneration = 1; - this.frontier = firstLine; - var start = Pos(firstLine, 0); - this.sel = simpleSelection(start); - this.history = new History(null); - this.id = ++nextDocId; - this.modeOption = mode; - - if (typeof text == "string") text = splitLines(text); - updateDoc(this, {from: start, to: start, text: text}); - setSelection(this, simpleSelection(start), sel_dontScroll); - }; - - Doc.prototype = createObj(BranchChunk.prototype, { - constructor: Doc, - // Iterate over the document. Supports two forms -- with only one - // argument, it calls that for each line in the document. With - // three, it iterates over the range given by the first two (with - // the second being non-inclusive). - iter: function(from, to, op) { - if (op) this.iterN(from - this.first, to - from, op); - else this.iterN(this.first, this.first + this.size, from); - }, - - // Non-public interface for adding and removing lines. - insert: function(at, lines) { - var height = 0; - for (var i = 0; i < lines.length; ++i) height += lines[i].height; - this.insertInner(at - this.first, lines, height); - }, - remove: function(at, n) { this.removeInner(at - this.first, n); }, - - // From here, the methods are part of the public interface. Most - // are also available from CodeMirror (editor) instances. - - getValue: function(lineSep) { - var lines = getLines(this, this.first, this.first + this.size); - if (lineSep === false) return lines; - return lines.join(lineSep || "\n"); - }, - setValue: docMethodOp(function(code) { - var top = Pos(this.first, 0), last = this.first + this.size - 1; - makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length), - text: splitLines(code), origin: "setValue"}, true); - setSelection(this, simpleSelection(top)); - }), - replaceRange: function(code, from, to, origin) { - from = clipPos(this, from); - to = to ? clipPos(this, to) : from; - replaceRange(this, code, from, to, origin); - }, - getRange: function(from, to, lineSep) { - var lines = getBetween(this, clipPos(this, from), clipPos(this, to)); - if (lineSep === false) return lines; - return lines.join(lineSep || "\n"); - }, - - getLine: function(line) {var l = this.getLineHandle(line); return l && l.text;}, - - getLineHandle: function(line) {if (isLine(this, line)) return getLine(this, line);}, - getLineNumber: function(line) {return lineNo(line);}, - - getLineHandleVisualStart: function(line) { - if (typeof line == "number") line = getLine(this, line); - return visualLine(line); - }, - - lineCount: function() {return this.size;}, - firstLine: function() {return this.first;}, - lastLine: function() {return this.first + this.size - 1;}, - - clipPos: function(pos) {return clipPos(this, pos);}, - - getCursor: function(start) { - var range = this.sel.primary(), pos; - if (start == null || start == "head") pos = range.head; - else if (start == "anchor") pos = range.anchor; - else if (start == "end" || start == "to" || start === false) pos = range.to(); - else pos = range.from(); - return pos; - }, - listSelections: function() { return this.sel.ranges; }, - somethingSelected: function() {return this.sel.somethingSelected();}, - - setCursor: docMethodOp(function(line, ch, options) { - setSimpleSelection(this, clipPos(this, typeof line == "number" ? Pos(line, ch || 0) : line), null, options); - }), - setSelection: docMethodOp(function(anchor, head, options) { - setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options); - }), - extendSelection: docMethodOp(function(head, other, options) { - extendSelection(this, clipPos(this, head), other && clipPos(this, other), options); - }), - extendSelections: docMethodOp(function(heads, options) { - extendSelections(this, clipPosArray(this, heads, options)); - }), - extendSelectionsBy: docMethodOp(function(f, options) { - extendSelections(this, map(this.sel.ranges, f), options); - }), - setSelections: docMethodOp(function(ranges, primary, options) { - if (!ranges.length) return; - for (var i = 0, out = []; i < ranges.length; i++) - out[i] = new Range(clipPos(this, ranges[i].anchor), - clipPos(this, ranges[i].head)); - if (primary == null) primary = Math.min(ranges.length - 1, this.sel.primIndex); - setSelection(this, normalizeSelection(out, primary), options); - }), - addSelection: docMethodOp(function(anchor, head, options) { - var ranges = this.sel.ranges.slice(0); - ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor))); - setSelection(this, normalizeSelection(ranges, ranges.length - 1), options); - }), - - getSelection: function(lineSep) { - var ranges = this.sel.ranges, lines; - for (var i = 0; i < ranges.length; i++) { - var sel = getBetween(this, ranges[i].from(), ranges[i].to()); - lines = lines ? lines.concat(sel) : sel; - } - if (lineSep === false) return lines; - else return lines.join(lineSep || "\n"); - }, - getSelections: function(lineSep) { - var parts = [], ranges = this.sel.ranges; - for (var i = 0; i < ranges.length; i++) { - var sel = getBetween(this, ranges[i].from(), ranges[i].to()); - if (lineSep !== false) sel = sel.join(lineSep || "\n"); - parts[i] = sel; - } - return parts; - }, - replaceSelection: function(code, collapse, origin) { - var dup = []; - for (var i = 0; i < this.sel.ranges.length; i++) - dup[i] = code; - this.replaceSelections(dup, collapse, origin || "+input"); - }, - replaceSelections: docMethodOp(function(code, collapse, origin) { - var changes = [], sel = this.sel; - for (var i = 0; i < sel.ranges.length; i++) { - var range = sel.ranges[i]; - changes[i] = {from: range.from(), to: range.to(), text: splitLines(code[i]), origin: origin}; - } - var newSel = collapse && collapse != "end" && computeReplacedSel(this, changes, collapse); - for (var i = changes.length - 1; i >= 0; i--) - makeChange(this, changes[i]); - if (newSel) setSelectionReplaceHistory(this, newSel); - else if (this.cm) ensureCursorVisible(this.cm); - }), - undo: docMethodOp(function() {makeChangeFromHistory(this, "undo");}), - redo: docMethodOp(function() {makeChangeFromHistory(this, "redo");}), - undoSelection: docMethodOp(function() {makeChangeFromHistory(this, "undo", true);}), - redoSelection: docMethodOp(function() {makeChangeFromHistory(this, "redo", true);}), - - setExtending: function(val) {this.extend = val;}, - getExtending: function() {return this.extend;}, - - historySize: function() { - var hist = this.history, done = 0, undone = 0; - for (var i = 0; i < hist.done.length; i++) if (!hist.done[i].ranges) ++done; - for (var i = 0; i < hist.undone.length; i++) if (!hist.undone[i].ranges) ++undone; - return {undo: done, redo: undone}; - }, - clearHistory: function() {this.history = new History(this.history.maxGeneration);}, - - markClean: function() { - this.cleanGeneration = this.changeGeneration(true); - }, - changeGeneration: function(forceSplit) { - if (forceSplit) - this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; - return this.history.generation; - }, - isClean: function (gen) { - return this.history.generation == (gen || this.cleanGeneration); - }, - - getHistory: function() { - return {done: copyHistoryArray(this.history.done), - undone: copyHistoryArray(this.history.undone)}; - }, - setHistory: function(histData) { - var hist = this.history = new History(this.history.maxGeneration); - hist.done = copyHistoryArray(histData.done.slice(0), null, true); - hist.undone = copyHistoryArray(histData.undone.slice(0), null, true); - }, - - addLineClass: docMethodOp(function(handle, where, cls) { - return changeLine(this, handle, "class", function(line) { - var prop = where == "text" ? "textClass" : where == "background" ? "bgClass" : "wrapClass"; - if (!line[prop]) line[prop] = cls; - else if (new RegExp("(?:^|\\s)" + cls + "(?:$|\\s)").test(line[prop])) return false; - else line[prop] += " " + cls; - return true; - }); - }), - removeLineClass: docMethodOp(function(handle, where, cls) { - return changeLine(this, handle, "class", function(line) { - var prop = where == "text" ? "textClass" : where == "background" ? "bgClass" : "wrapClass"; - var cur = line[prop]; - if (!cur) return false; - else if (cls == null) line[prop] = null; - else { - var found = cur.match(new RegExp("(?:^|\\s+)" + cls + "(?:$|\\s+)")); - if (!found) return false; - var end = found.index + found[0].length; - line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? "" : " ") + cur.slice(end) || null; - } - return true; - }); - }), - - markText: function(from, to, options) { - return markText(this, clipPos(this, from), clipPos(this, to), options, "range"); - }, - setBookmark: function(pos, options) { - var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options), - insertLeft: options && options.insertLeft, - clearWhenEmpty: false, shared: options && options.shared}; - pos = clipPos(this, pos); - return markText(this, pos, pos, realOpts, "bookmark"); - }, - findMarksAt: function(pos) { - pos = clipPos(this, pos); - var markers = [], spans = getLine(this, pos.line).markedSpans; - if (spans) for (var i = 0; i < spans.length; ++i) { - var span = spans[i]; - if ((span.from == null || span.from <= pos.ch) && - (span.to == null || span.to >= pos.ch)) - markers.push(span.marker.parent || span.marker); - } - return markers; - }, - findMarks: function(from, to, filter) { - from = clipPos(this, from); to = clipPos(this, to); - var found = [], lineNo = from.line; - this.iter(from.line, to.line + 1, function(line) { - var spans = line.markedSpans; - if (spans) for (var i = 0; i < spans.length; i++) { - var span = spans[i]; - if (!(lineNo == from.line && from.ch > span.to || - span.from == null && lineNo != from.line|| - lineNo == to.line && span.from > to.ch) && - (!filter || filter(span.marker))) - found.push(span.marker.parent || span.marker); - } - ++lineNo; - }); - return found; - }, - getAllMarks: function() { - var markers = []; - this.iter(function(line) { - var sps = line.markedSpans; - if (sps) for (var i = 0; i < sps.length; ++i) - if (sps[i].from != null) markers.push(sps[i].marker); - }); - return markers; - }, - - posFromIndex: function(off) { - var ch, lineNo = this.first; - this.iter(function(line) { - var sz = line.text.length + 1; - if (sz > off) { ch = off; return true; } - off -= sz; - ++lineNo; - }); - return clipPos(this, Pos(lineNo, ch)); - }, - indexFromPos: function (coords) { - coords = clipPos(this, coords); - var index = coords.ch; - if (coords.line < this.first || coords.ch < 0) return 0; - this.iter(this.first, coords.line, function (line) { - index += line.text.length + 1; - }); - return index; - }, - - copy: function(copyHistory) { - var doc = new Doc(getLines(this, this.first, this.first + this.size), this.modeOption, this.first); - doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft; - doc.sel = this.sel; - doc.extend = false; - if (copyHistory) { - doc.history.undoDepth = this.history.undoDepth; - doc.setHistory(this.getHistory()); - } - return doc; - }, - - linkedDoc: function(options) { - if (!options) options = {}; - var from = this.first, to = this.first + this.size; - if (options.from != null && options.from > from) from = options.from; - if (options.to != null && options.to < to) to = options.to; - var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from); - if (options.sharedHist) copy.history = this.history; - (this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist}); - copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}]; - copySharedMarkers(copy, findSharedMarkers(this)); - return copy; - }, - unlinkDoc: function(other) { - if (other instanceof CodeMirror) other = other.doc; - if (this.linked) for (var i = 0; i < this.linked.length; ++i) { - var link = this.linked[i]; - if (link.doc != other) continue; - this.linked.splice(i, 1); - other.unlinkDoc(this); - detachSharedMarkers(findSharedMarkers(this)); - break; - } - // If the histories were shared, split them again - if (other.history == this.history) { - var splitIds = [other.id]; - linkedDocs(other, function(doc) {splitIds.push(doc.id);}, true); - other.history = new History(null); - other.history.done = copyHistoryArray(this.history.done, splitIds); - other.history.undone = copyHistoryArray(this.history.undone, splitIds); - } - }, - iterLinkedDocs: function(f) {linkedDocs(this, f);}, - - getMode: function() {return this.mode;}, - getEditor: function() {return this.cm;} - }); - - // Public alias. - Doc.prototype.eachLine = Doc.prototype.iter; - - // Set up methods on CodeMirror's prototype to redirect to the editor's document. - var dontDelegate = "iter insert remove copy getEditor".split(" "); - for (var prop in Doc.prototype) if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0) - CodeMirror.prototype[prop] = (function(method) { - return function() {return method.apply(this.doc, arguments);}; - })(Doc.prototype[prop]); - - eventMixin(Doc); - - // Call f for all linked documents. - function linkedDocs(doc, f, sharedHistOnly) { - function propagate(doc, skip, sharedHist) { - if (doc.linked) for (var i = 0; i < doc.linked.length; ++i) { - var rel = doc.linked[i]; - if (rel.doc == skip) continue; - var shared = sharedHist && rel.sharedHist; - if (sharedHistOnly && !shared) continue; - f(rel.doc, shared); - propagate(rel.doc, doc, shared); - } - } - propagate(doc, null, true); - } - - // Attach a document to an editor. - function attachDoc(cm, doc) { - if (doc.cm) throw new Error("This document is already in use."); - cm.doc = doc; - doc.cm = cm; - estimateLineHeights(cm); - loadMode(cm); - if (!cm.options.lineWrapping) findMaxLine(cm); - cm.options.mode = doc.modeOption; - regChange(cm); - } - - // LINE UTILITIES - - // Find the line object corresponding to the given line number. - function getLine(doc, n) { - n -= doc.first; - if (n < 0 || n >= doc.size) throw new Error("There is no line " + (n + doc.first) + " in the document."); - for (var chunk = doc; !chunk.lines;) { - for (var i = 0;; ++i) { - var child = chunk.children[i], sz = child.chunkSize(); - if (n < sz) { chunk = child; break; } - n -= sz; - } - } - return chunk.lines[n]; - } - - // Get the part of a document between two positions, as an array of - // strings. - function getBetween(doc, start, end) { - var out = [], n = start.line; - doc.iter(start.line, end.line + 1, function(line) { - var text = line.text; - if (n == end.line) text = text.slice(0, end.ch); - if (n == start.line) text = text.slice(start.ch); - out.push(text); - ++n; - }); - return out; - } - // Get the lines between from and to, as array of strings. - function getLines(doc, from, to) { - var out = []; - doc.iter(from, to, function(line) { out.push(line.text); }); - return out; - } - - // Update the height of a line, propagating the height change - // upwards to parent nodes. - function updateLineHeight(line, height) { - var diff = height - line.height; - if (diff) for (var n = line; n; n = n.parent) n.height += diff; - } - - // Given a line object, find its line number by walking up through - // its parent links. - function lineNo(line) { - if (line.parent == null) return null; - var cur = line.parent, no = indexOf(cur.lines, line); - for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) { - for (var i = 0;; ++i) { - if (chunk.children[i] == cur) break; - no += chunk.children[i].chunkSize(); - } - } - return no + cur.first; - } - - // Find the line at the given vertical position, using the height - // information in the document tree. - function lineAtHeight(chunk, h) { - var n = chunk.first; - outer: do { - for (var i = 0; i < chunk.children.length; ++i) { - var child = chunk.children[i], ch = child.height; - if (h < ch) { chunk = child; continue outer; } - h -= ch; - n += child.chunkSize(); - } - return n; - } while (!chunk.lines); - for (var i = 0; i < chunk.lines.length; ++i) { - var line = chunk.lines[i], lh = line.height; - if (h < lh) break; - h -= lh; - } - return n + i; - } - - - // Find the height above the given line. - function heightAtLine(lineObj) { - lineObj = visualLine(lineObj); - - var h = 0, chunk = lineObj.parent; - for (var i = 0; i < chunk.lines.length; ++i) { - var line = chunk.lines[i]; - if (line == lineObj) break; - else h += line.height; - } - for (var p = chunk.parent; p; chunk = p, p = chunk.parent) { - for (var i = 0; i < p.children.length; ++i) { - var cur = p.children[i]; - if (cur == chunk) break; - else h += cur.height; - } - } - return h; - } - - // Get the bidi ordering for the given line (and cache it). Returns - // false for lines that are fully left-to-right, and an array of - // BidiSpan objects otherwise. - function getOrder(line) { - var order = line.order; - if (order == null) order = line.order = bidiOrdering(line.text); - return order; - } - - // HISTORY - - function History(startGen) { - // Arrays of change events and selections. Doing something adds an - // event to done and clears undo. Undoing moves events from done - // to undone, redoing moves them in the other direction. - this.done = []; this.undone = []; - this.undoDepth = Infinity; - // Used to track when changes can be merged into a single undo - // event - this.lastModTime = this.lastSelTime = 0; - this.lastOp = this.lastSelOp = null; - this.lastOrigin = this.lastSelOrigin = null; - // Used by the isClean() method - this.generation = this.maxGeneration = startGen || 1; - } - - // Create a history change event from an updateDoc-style change - // object. - function historyChangeFromChange(doc, change) { - var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)}; - attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); - linkedDocs(doc, function(doc) {attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);}, true); - return histChange; - } - - // Pop all selection events off the end of a history array. Stop at - // a change event. - function clearSelectionEvents(array) { - while (array.length) { - var last = lst(array); - if (last.ranges) array.pop(); - else break; - } - } - - // Find the top change event in the history. Pop off selection - // events that are in the way. - function lastChangeEvent(hist, force) { - if (force) { - clearSelectionEvents(hist.done); - return lst(hist.done); - } else if (hist.done.length && !lst(hist.done).ranges) { - return lst(hist.done); - } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) { - hist.done.pop(); - return lst(hist.done); - } - } - - // Register a change in the history. Merges changes that are within - // a single operation, ore are close together with an origin that - // allows merging (starting with "+") into a single event. - function addChangeToHistory(doc, change, selAfter, opId) { - var hist = doc.history; - hist.undone.length = 0; - var time = +new Date, cur; - - if ((hist.lastOp == opId || - hist.lastOrigin == change.origin && change.origin && - ((change.origin.charAt(0) == "+" && doc.cm && hist.lastModTime > time - doc.cm.options.historyEventDelay) || - change.origin.charAt(0) == "*")) && - (cur = lastChangeEvent(hist, hist.lastOp == opId))) { - // Merge this change into the last event - var last = lst(cur.changes); - if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) { - // Optimized case for simple insertion -- don't want to add - // new changesets for every character typed - last.to = changeEnd(change); - } else { - // Add new sub-event - cur.changes.push(historyChangeFromChange(doc, change)); - } - } else { - // Can not be merged, start a new event. - var before = lst(hist.done); - if (!before || !before.ranges) - pushSelectionToHistory(doc.sel, hist.done); - cur = {changes: [historyChangeFromChange(doc, change)], - generation: hist.generation}; - hist.done.push(cur); - while (hist.done.length > hist.undoDepth) { - hist.done.shift(); - if (!hist.done[0].ranges) hist.done.shift(); - } - } - hist.done.push(selAfter); - hist.generation = ++hist.maxGeneration; - hist.lastModTime = hist.lastSelTime = time; - hist.lastOp = hist.lastSelOp = opId; - hist.lastOrigin = hist.lastSelOrigin = change.origin; - - if (!last) signal(doc, "historyAdded"); - } - - function selectionEventCanBeMerged(doc, origin, prev, sel) { - var ch = origin.charAt(0); - return ch == "*" || - ch == "+" && - prev.ranges.length == sel.ranges.length && - prev.somethingSelected() == sel.somethingSelected() && - new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500); - } - - // Called whenever the selection changes, sets the new selection as - // the pending selection in the history, and pushes the old pending - // selection into the 'done' array when it was significantly - // different (in number of selected ranges, emptiness, or time). - function addSelectionToHistory(doc, sel, opId, options) { - var hist = doc.history, origin = options && options.origin; - - // A new event is started when the previous origin does not match - // the current, or the origins don't allow matching. Origins - // starting with * are always merged, those starting with + are - // merged when similar and close together in time. - if (opId == hist.lastSelOp || - (origin && hist.lastSelOrigin == origin && - (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin || - selectionEventCanBeMerged(doc, origin, lst(hist.done), sel)))) - hist.done[hist.done.length - 1] = sel; - else - pushSelectionToHistory(sel, hist.done); - - hist.lastSelTime = +new Date; - hist.lastSelOrigin = origin; - hist.lastSelOp = opId; - if (options && options.clearRedo !== false) - clearSelectionEvents(hist.undone); - } - - function pushSelectionToHistory(sel, dest) { - var top = lst(dest); - if (!(top && top.ranges && top.equals(sel))) - dest.push(sel); - } - - // Used to store marked span information in the history. - function attachLocalSpans(doc, change, from, to) { - var existing = change["spans_" + doc.id], n = 0; - doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function(line) { - if (line.markedSpans) - (existing || (existing = change["spans_" + doc.id] = {}))[n] = line.markedSpans; - ++n; - }); - } - - // When un/re-doing restores text containing marked spans, those - // that have been explicitly cleared should not be restored. - function removeClearedSpans(spans) { - if (!spans) return null; - for (var i = 0, out; i < spans.length; ++i) { - if (spans[i].marker.explicitlyCleared) { if (!out) out = spans.slice(0, i); } - else if (out) out.push(spans[i]); - } - return !out ? spans : out.length ? out : null; - } - - // Retrieve and filter the old marked spans stored in a change event. - function getOldSpans(doc, change) { - var found = change["spans_" + doc.id]; - if (!found) return null; - for (var i = 0, nw = []; i < change.text.length; ++i) - nw.push(removeClearedSpans(found[i])); - return nw; - } - - // Used both to provide a JSON-safe object in .getHistory, and, when - // detaching a document, to split the history in two - function copyHistoryArray(events, newGroup, instantiateSel) { - for (var i = 0, copy = []; i < events.length; ++i) { - var event = events[i]; - if (event.ranges) { - copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event); - continue; - } - var changes = event.changes, newChanges = []; - copy.push({changes: newChanges}); - for (var j = 0; j < changes.length; ++j) { - var change = changes[j], m; - newChanges.push({from: change.from, to: change.to, text: change.text}); - if (newGroup) for (var prop in change) if (m = prop.match(/^spans_(\d+)$/)) { - if (indexOf(newGroup, Number(m[1])) > -1) { - lst(newChanges)[prop] = change[prop]; - delete change[prop]; - } - } - } - } - return copy; - } - - // Rebasing/resetting history to deal with externally-sourced changes - - function rebaseHistSelSingle(pos, from, to, diff) { - if (to < pos.line) { - pos.line += diff; - } else if (from < pos.line) { - pos.line = from; - pos.ch = 0; - } - } - - // Tries to rebase an array of history events given a change in the - // document. If the change touches the same lines as the event, the - // event, and everything 'behind' it, is discarded. If the change is - // before the event, the event's positions are updated. Uses a - // copy-on-write scheme for the positions, to avoid having to - // reallocate them all on every rebase, but also avoid problems with - // shared position objects being unsafely updated. - function rebaseHistArray(array, from, to, diff) { - for (var i = 0; i < array.length; ++i) { - var sub = array[i], ok = true; - if (sub.ranges) { - if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; } - for (var j = 0; j < sub.ranges.length; j++) { - rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff); - rebaseHistSelSingle(sub.ranges[j].head, from, to, diff); - } - continue; - } - for (var j = 0; j < sub.changes.length; ++j) { - var cur = sub.changes[j]; - if (to < cur.from.line) { - cur.from = Pos(cur.from.line + diff, cur.from.ch); - cur.to = Pos(cur.to.line + diff, cur.to.ch); - } else if (from <= cur.to.line) { - ok = false; - break; - } - } - if (!ok) { - array.splice(0, i + 1); - i = 0; - } - } - } - - function rebaseHist(hist, change) { - var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1; - rebaseHistArray(hist.done, from, to, diff); - rebaseHistArray(hist.undone, from, to, diff); - } - - // EVENT UTILITIES - - // Due to the fact that we still support jurassic IE versions, some - // compatibility wrappers are needed. - - var e_preventDefault = CodeMirror.e_preventDefault = function(e) { - if (e.preventDefault) e.preventDefault(); - else e.returnValue = false; - }; - var e_stopPropagation = CodeMirror.e_stopPropagation = function(e) { - if (e.stopPropagation) e.stopPropagation(); - else e.cancelBubble = true; - }; - function e_defaultPrevented(e) { - return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false; - } - var e_stop = CodeMirror.e_stop = function(e) {e_preventDefault(e); e_stopPropagation(e);}; - - function e_target(e) {return e.target || e.srcElement;} - function e_button(e) { - var b = e.which; - if (b == null) { - if (e.button & 1) b = 1; - else if (e.button & 2) b = 3; - else if (e.button & 4) b = 2; - } - if (mac && e.ctrlKey && b == 1) b = 3; - return b; - } - - // EVENT HANDLING - - // Lightweight event framework. on/off also work on DOM nodes, - // registering native DOM handlers. - - var on = CodeMirror.on = function(emitter, type, f) { - if (emitter.addEventListener) - emitter.addEventListener(type, f, false); - else if (emitter.attachEvent) - emitter.attachEvent("on" + type, f); - else { - var map = emitter._handlers || (emitter._handlers = {}); - var arr = map[type] || (map[type] = []); - arr.push(f); - } - }; - - var off = CodeMirror.off = function(emitter, type, f) { - if (emitter.removeEventListener) - emitter.removeEventListener(type, f, false); - else if (emitter.detachEvent) - emitter.detachEvent("on" + type, f); - else { - var arr = emitter._handlers && emitter._handlers[type]; - if (!arr) return; - for (var i = 0; i < arr.length; ++i) - if (arr[i] == f) { arr.splice(i, 1); break; } - } - }; - - var signal = CodeMirror.signal = function(emitter, type /*, values...*/) { - var arr = emitter._handlers && emitter._handlers[type]; - if (!arr) return; - var args = Array.prototype.slice.call(arguments, 2); - for (var i = 0; i < arr.length; ++i) arr[i].apply(null, args); - }; - - var orphanDelayedCallbacks = null; - - // Often, we want to signal events at a point where we are in the - // middle of some work, but don't want the handler to start calling - // other methods on the editor, which might be in an inconsistent - // state or simply not expect any other events to happen. - // signalLater looks whether there are any handlers, and schedules - // them to be executed when the last operation ends, or, if no - // operation is active, when a timeout fires. - function signalLater(emitter, type /*, values...*/) { - var arr = emitter._handlers && emitter._handlers[type]; - if (!arr) return; - var args = Array.prototype.slice.call(arguments, 2), list; - if (operationGroup) { - list = operationGroup.delayedCallbacks; - } else if (orphanDelayedCallbacks) { - list = orphanDelayedCallbacks; - } else { - list = orphanDelayedCallbacks = []; - setTimeout(fireOrphanDelayed, 0); - } - function bnd(f) {return function(){f.apply(null, args);};}; - for (var i = 0; i < arr.length; ++i) - list.push(bnd(arr[i])); - } - - function fireOrphanDelayed() { - var delayed = orphanDelayedCallbacks; - orphanDelayedCallbacks = null; - for (var i = 0; i < delayed.length; ++i) delayed[i](); - } - - // The DOM events that CodeMirror handles can be overridden by - // registering a (non-DOM) handler on the editor for the event name, - // and preventDefault-ing the event in that handler. - function signalDOMEvent(cm, e, override) { - signal(cm, override || e.type, cm, e); - return e_defaultPrevented(e) || e.codemirrorIgnore; - } - - function signalCursorActivity(cm) { - var arr = cm._handlers && cm._handlers.cursorActivity; - if (!arr) return; - var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []); - for (var i = 0; i < arr.length; ++i) if (indexOf(set, arr[i]) == -1) - set.push(arr[i]); - } - - function hasHandler(emitter, type) { - var arr = emitter._handlers && emitter._handlers[type]; - return arr && arr.length > 0; - } - - // Add on and off methods to a constructor's prototype, to make - // registering events on such objects more convenient. - function eventMixin(ctor) { - ctor.prototype.on = function(type, f) {on(this, type, f);}; - ctor.prototype.off = function(type, f) {off(this, type, f);}; - } - - // MISC UTILITIES - - // Number of pixels added to scroller and sizer to hide scrollbar - var scrollerCutOff = 30; - - // Returned or thrown by various protocols to signal 'I'm not - // handling this'. - var Pass = CodeMirror.Pass = {toString: function(){return "CodeMirror.Pass";}}; - - // Reused option objects for setSelection & friends - var sel_dontScroll = {scroll: false}, sel_mouse = {origin: "*mouse"}, sel_move = {origin: "+move"}; - - function Delayed() {this.id = null;} - Delayed.prototype.set = function(ms, f) { - clearTimeout(this.id); - this.id = setTimeout(f, ms); - }; - - // Counts the column offset in a string, taking tabs into account. - // Used mostly to find indentation. - var countColumn = CodeMirror.countColumn = function(string, end, tabSize, startIndex, startValue) { - if (end == null) { - end = string.search(/[^\s\u00a0]/); - if (end == -1) end = string.length; - } - for (var i = startIndex || 0, n = startValue || 0;;) { - var nextTab = string.indexOf("\t", i); - if (nextTab < 0 || nextTab >= end) - return n + (end - i); - n += nextTab - i; - n += tabSize - (n % tabSize); - i = nextTab + 1; - } - }; - - // The inverse of countColumn -- find the offset that corresponds to - // a particular column. - function findColumn(string, goal, tabSize) { - for (var pos = 0, col = 0;;) { - var nextTab = string.indexOf("\t", pos); - if (nextTab == -1) nextTab = string.length; - var skipped = nextTab - pos; - if (nextTab == string.length || col + skipped >= goal) - return pos + Math.min(skipped, goal - col); - col += nextTab - pos; - col += tabSize - (col % tabSize); - pos = nextTab + 1; - if (col >= goal) return pos; - } - } - - var spaceStrs = [""]; - function spaceStr(n) { - while (spaceStrs.length <= n) - spaceStrs.push(lst(spaceStrs) + " "); - return spaceStrs[n]; - } - - function lst(arr) { return arr[arr.length-1]; } - - var selectInput = function(node) { node.select(); }; - if (ios) // Mobile Safari apparently has a bug where select() is broken. - selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; - else if (ie) // Suppress mysterious IE10 errors - selectInput = function(node) { try { node.select(); } catch(_e) {} }; - - function indexOf(array, elt) { - for (var i = 0; i < array.length; ++i) - if (array[i] == elt) return i; - return -1; - } - if ([].indexOf) indexOf = function(array, elt) { return array.indexOf(elt); }; - function map(array, f) { - var out = []; - for (var i = 0; i < array.length; i++) out[i] = f(array[i], i); - return out; - } - if ([].map) map = function(array, f) { return array.map(f); }; - - function createObj(base, props) { - var inst; - if (Object.create) { - inst = Object.create(base); - } else { - var ctor = function() {}; - ctor.prototype = base; - inst = new ctor(); - } - if (props) copyObj(props, inst); - return inst; - }; - - function copyObj(obj, target, overwrite) { - if (!target) target = {}; - for (var prop in obj) - if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop))) - target[prop] = obj[prop]; - return target; - } - - function bind(f) { - var args = Array.prototype.slice.call(arguments, 1); - return function(){return f.apply(null, args);}; - } - - var nonASCIISingleCaseWordChar = /[\u00df\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/; - var isWordCharBasic = CodeMirror.isWordChar = function(ch) { - return /\w/.test(ch) || ch > "\x80" && - (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch)); - }; - function isWordChar(ch, helper) { - if (!helper) return isWordCharBasic(ch); - if (helper.source.indexOf("\\w") > -1 && isWordCharBasic(ch)) return true; - return helper.test(ch); - } - - function isEmpty(obj) { - for (var n in obj) if (obj.hasOwnProperty(n) && obj[n]) return false; - return true; - } - - // Extending unicode characters. A series of a non-extending char + - // any number of extending chars is treated as a single unit as far - // as editing and measuring is concerned. This is not fully correct, - // since some scripts/fonts/browsers also treat other configurations - // of code points as a group. - var extendingChars = /[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/; - function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch); } - - // DOM UTILITIES - - function elt(tag, content, className, style) { - var e = document.createElement(tag); - if (className) e.className = className; - if (style) e.style.cssText = style; - if (typeof content == "string") e.appendChild(document.createTextNode(content)); - else if (content) for (var i = 0; i < content.length; ++i) e.appendChild(content[i]); - return e; - } - - var range; - if (document.createRange) range = function(node, start, end) { - var r = document.createRange(); - r.setEnd(node, end); - r.setStart(node, start); - return r; - }; - else range = function(node, start, end) { - var r = document.body.createTextRange(); - r.moveToElementText(node.parentNode); - r.collapse(true); - r.moveEnd("character", end); - r.moveStart("character", start); - return r; - }; - - function removeChildren(e) { - for (var count = e.childNodes.length; count > 0; --count) - e.removeChild(e.firstChild); - return e; - } - - function removeChildrenAndAdd(parent, e) { - return removeChildren(parent).appendChild(e); - } - - function contains(parent, child) { - if (parent.contains) - return parent.contains(child); - while (child = child.parentNode) - if (child == parent) return true; - } - - function activeElt() { return document.activeElement; } - // Older versions of IE throws unspecified error when touching - // document.activeElement in some cases (during loading, in iframe) - if (ie && ie_version < 11) activeElt = function() { - try { return document.activeElement; } - catch(e) { return document.body; } - }; - - function classTest(cls) { return new RegExp("\\b" + cls + "\\b\\s*"); } - function rmClass(node, cls) { - var test = classTest(cls); - if (test.test(node.className)) node.className = node.className.replace(test, ""); - } - function addClass(node, cls) { - if (!classTest(cls).test(node.className)) node.className += " " + cls; - } - function joinClasses(a, b) { - var as = a.split(" "); - for (var i = 0; i < as.length; i++) - if (as[i] && !classTest(as[i]).test(b)) b += " " + as[i]; - return b; - } - - // WINDOW-WIDE EVENTS - - // These must be handled carefully, because naively registering a - // handler for each editor will cause the editors to never be - // garbage collected. - - function forEachCodeMirror(f) { - if (!document.body.getElementsByClassName) return; - var byClass = document.body.getElementsByClassName("CodeMirror"); - for (var i = 0; i < byClass.length; i++) { - var cm = byClass[i].CodeMirror; - if (cm) f(cm); - } - } - - var globalsRegistered = false; - function ensureGlobalHandlers() { - if (globalsRegistered) return; - registerGlobalHandlers(); - globalsRegistered = true; - } - function registerGlobalHandlers() { - // When the window resizes, we need to refresh active editors. - var resizeTimer; - on(window, "resize", function() { - if (resizeTimer == null) resizeTimer = setTimeout(function() { - resizeTimer = null; - knownScrollbarWidth = null; - forEachCodeMirror(onResize); - }, 100); - }); - // When the window loses focus, we want to show the editor as blurred - on(window, "blur", function() { - forEachCodeMirror(onBlur); - }); - } - - // FEATURE DETECTION - - // Detect drag-and-drop - var dragAndDrop = function() { - // There is *some* kind of drag-and-drop support in IE6-8, but I - // couldn't get it to work yet. - if (ie && ie_version < 9) return false; - var div = elt('div'); - return "draggable" in div || "dragDrop" in div; - }(); - - var knownScrollbarWidth; - function scrollbarWidth(measure) { - if (knownScrollbarWidth != null) return knownScrollbarWidth; - var test = elt("div", null, null, "width: 50px; height: 50px; overflow-x: scroll"); - removeChildrenAndAdd(measure, test); - if (test.offsetWidth) - knownScrollbarWidth = test.offsetHeight - test.clientHeight; - return knownScrollbarWidth || 0; - } - - var zwspSupported; - function zeroWidthElement(measure) { - if (zwspSupported == null) { - var test = elt("span", "\u200b"); - removeChildrenAndAdd(measure, elt("span", [test, document.createTextNode("x")])); - if (measure.firstChild.offsetHeight != 0) - zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); - } - if (zwspSupported) return elt("span", "\u200b"); - else return elt("span", "\u00a0", null, "display: inline-block; width: 1px; margin-right: -1px"); - } - - // Feature-detect IE's crummy client rect reporting for bidi text - var badBidiRects; - function hasBadBidiRects(measure) { - if (badBidiRects != null) return badBidiRects; - var txt = removeChildrenAndAdd(measure, document.createTextNode("A\u062eA")); - var r0 = range(txt, 0, 1).getBoundingClientRect(); - if (!r0 || r0.left == r0.right) return false; // Safari returns null in some cases (#2780) - var r1 = range(txt, 1, 2).getBoundingClientRect(); - return badBidiRects = (r1.right - r0.right < 3); - } - - // See if "".split is the broken IE version, if so, provide an - // alternative way to split lines. - var splitLines = CodeMirror.splitLines = "\n\nb".split(/\n/).length != 3 ? function(string) { - var pos = 0, result = [], l = string.length; - while (pos <= l) { - var nl = string.indexOf("\n", pos); - if (nl == -1) nl = string.length; - var line = string.slice(pos, string.charAt(nl - 1) == "\r" ? nl - 1 : nl); - var rt = line.indexOf("\r"); - if (rt != -1) { - result.push(line.slice(0, rt)); - pos += rt + 1; - } else { - result.push(line); - pos = nl + 1; - } - } - return result; - } : function(string){return string.split(/\r\n?|\n/);}; - - var hasSelection = window.getSelection ? function(te) { - try { return te.selectionStart != te.selectionEnd; } - catch(e) { return false; } - } : function(te) { - try {var range = te.ownerDocument.selection.createRange();} - catch(e) {} - if (!range || range.parentElement() != te) return false; - return range.compareEndPoints("StartToEnd", range) != 0; - }; - - var hasCopyEvent = (function() { - var e = elt("div"); - if ("oncopy" in e) return true; - e.setAttribute("oncopy", "return;"); - return typeof e.oncopy == "function"; - })(); - - var badZoomedRects = null; - function hasBadZoomedRects(measure) { - if (badZoomedRects != null) return badZoomedRects; - var node = removeChildrenAndAdd(measure, elt("span", "x")); - var normal = node.getBoundingClientRect(); - var fromRange = range(node, 0, 1).getBoundingClientRect(); - return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1; - } - - // KEY NAMES - - var keyNames = {3: "Enter", 8: "Backspace", 9: "Tab", 13: "Enter", 16: "Shift", 17: "Ctrl", 18: "Alt", - 19: "Pause", 20: "CapsLock", 27: "Esc", 32: "Space", 33: "PageUp", 34: "PageDown", 35: "End", - 36: "Home", 37: "Left", 38: "Up", 39: "Right", 40: "Down", 44: "PrintScrn", 45: "Insert", - 46: "Delete", 59: ";", 61: "=", 91: "Mod", 92: "Mod", 93: "Mod", 107: "=", 109: "-", 127: "Delete", - 173: "-", 186: ";", 187: "=", 188: ",", 189: "-", 190: ".", 191: "/", 192: "`", 219: "[", 220: "\\", - 221: "]", 222: "'", 63232: "Up", 63233: "Down", 63234: "Left", 63235: "Right", 63272: "Delete", - 63273: "Home", 63275: "End", 63276: "PageUp", 63277: "PageDown", 63302: "Insert"}; - CodeMirror.keyNames = keyNames; - (function() { - // Number keys - for (var i = 0; i < 10; i++) keyNames[i + 48] = keyNames[i + 96] = String(i); - // Alphabetic keys - for (var i = 65; i <= 90; i++) keyNames[i] = String.fromCharCode(i); - // Function keys - for (var i = 1; i <= 12; i++) keyNames[i + 111] = keyNames[i + 63235] = "F" + i; - })(); - - // BIDI HELPERS - - function iterateBidiSections(order, from, to, f) { - if (!order) return f(from, to, "ltr"); - var found = false; - for (var i = 0; i < order.length; ++i) { - var part = order[i]; - if (part.from < to && part.to > from || from == to && part.to == from) { - f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? "rtl" : "ltr"); - found = true; - } - } - if (!found) f(from, to, "ltr"); - } - - function bidiLeft(part) { return part.level % 2 ? part.to : part.from; } - function bidiRight(part) { return part.level % 2 ? part.from : part.to; } - - function lineLeft(line) { var order = getOrder(line); return order ? bidiLeft(order[0]) : 0; } - function lineRight(line) { - var order = getOrder(line); - if (!order) return line.text.length; - return bidiRight(lst(order)); - } - - function lineStart(cm, lineN) { - var line = getLine(cm.doc, lineN); - var visual = visualLine(line); - if (visual != line) lineN = lineNo(visual); - var order = getOrder(visual); - var ch = !order ? 0 : order[0].level % 2 ? lineRight(visual) : lineLeft(visual); - return Pos(lineN, ch); - } - function lineEnd(cm, lineN) { - var merged, line = getLine(cm.doc, lineN); - while (merged = collapsedSpanAtEnd(line)) { - line = merged.find(1, true).line; - lineN = null; - } - var order = getOrder(line); - var ch = !order ? line.text.length : order[0].level % 2 ? lineLeft(line) : lineRight(line); - return Pos(lineN == null ? lineNo(line) : lineN, ch); - } - function lineStartSmart(cm, pos) { - var start = lineStart(cm, pos.line); - var line = getLine(cm.doc, start.line); - var order = getOrder(line); - if (!order || order[0].level == 0) { - var firstNonWS = Math.max(0, line.text.search(/\S/)); - var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch; - return Pos(start.line, inWS ? 0 : firstNonWS); - } - return start; - } - - function compareBidiLevel(order, a, b) { - var linedir = order[0].level; - if (a == linedir) return true; - if (b == linedir) return false; - return a < b; - } - var bidiOther; - function getBidiPartAt(order, pos) { - bidiOther = null; - for (var i = 0, found; i < order.length; ++i) { - var cur = order[i]; - if (cur.from < pos && cur.to > pos) return i; - if ((cur.from == pos || cur.to == pos)) { - if (found == null) { - found = i; - } else if (compareBidiLevel(order, cur.level, order[found].level)) { - if (cur.from != cur.to) bidiOther = found; - return i; - } else { - if (cur.from != cur.to) bidiOther = i; - return found; - } - } - } - return found; - } - - function moveInLine(line, pos, dir, byUnit) { - if (!byUnit) return pos + dir; - do pos += dir; - while (pos > 0 && isExtendingChar(line.text.charAt(pos))); - return pos; - } - - // This is needed in order to move 'visually' through bi-directional - // text -- i.e., pressing left should make the cursor go left, even - // when in RTL text. The tricky part is the 'jumps', where RTL and - // LTR text touch each other. This often requires the cursor offset - // to move more than one unit, in order to visually move one unit. - function moveVisually(line, start, dir, byUnit) { - var bidi = getOrder(line); - if (!bidi) return moveLogically(line, start, dir, byUnit); - var pos = getBidiPartAt(bidi, start), part = bidi[pos]; - var target = moveInLine(line, start, part.level % 2 ? -dir : dir, byUnit); - - for (;;) { - if (target > part.from && target < part.to) return target; - if (target == part.from || target == part.to) { - if (getBidiPartAt(bidi, target) == pos) return target; - part = bidi[pos += dir]; - return (dir > 0) == part.level % 2 ? part.to : part.from; - } else { - part = bidi[pos += dir]; - if (!part) return null; - if ((dir > 0) == part.level % 2) - target = moveInLine(line, part.to, -1, byUnit); - else - target = moveInLine(line, part.from, 1, byUnit); - } - } - } - - function moveLogically(line, start, dir, byUnit) { - var target = start + dir; - if (byUnit) while (target > 0 && isExtendingChar(line.text.charAt(target))) target += dir; - return target < 0 || target > line.text.length ? null : target; - } - - // Bidirectional ordering algorithm - // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm - // that this (partially) implements. - - // One-char codes used for character types: - // L (L): Left-to-Right - // R (R): Right-to-Left - // r (AL): Right-to-Left Arabic - // 1 (EN): European Number - // + (ES): European Number Separator - // % (ET): European Number Terminator - // n (AN): Arabic Number - // , (CS): Common Number Separator - // m (NSM): Non-Spacing Mark - // b (BN): Boundary Neutral - // s (B): Paragraph Separator - // t (S): Segment Separator - // w (WS): Whitespace - // N (ON): Other Neutrals - - // Returns null if characters are ordered as they appear - // (left-to-right), or an array of sections ({from, to, level} - // objects) in the order in which they occur visually. - var bidiOrdering = (function() { - // Character types for codepoints 0 to 0xff - var lowTypes = "bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN"; - // Character types for codepoints 0x600 to 0x6ff - var arabicTypes = "rrrrrrrrrrrr,rNNmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmrrrrrrrnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmNmmmm"; - function charType(code) { - if (code <= 0xf7) return lowTypes.charAt(code); - else if (0x590 <= code && code <= 0x5f4) return "R"; - else if (0x600 <= code && code <= 0x6ed) return arabicTypes.charAt(code - 0x600); - else if (0x6ee <= code && code <= 0x8ac) return "r"; - else if (0x2000 <= code && code <= 0x200b) return "w"; - else if (code == 0x200c) return "b"; - else return "L"; - } - - var bidiRE = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/; - var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/; - // Browsers seem to always treat the boundaries of block elements as being L. - var outerType = "L"; - - function BidiSpan(level, from, to) { - this.level = level; - this.from = from; this.to = to; - } - - return function(str) { - if (!bidiRE.test(str)) return false; - var len = str.length, types = []; - for (var i = 0, type; i < len; ++i) - types.push(type = charType(str.charCodeAt(i))); - - // W1. Examine each non-spacing mark (NSM) in the level run, and - // change the type of the NSM to the type of the previous - // character. If the NSM is at the start of the level run, it will - // get the type of sor. - for (var i = 0, prev = outerType; i < len; ++i) { - var type = types[i]; - if (type == "m") types[i] = prev; - else prev = type; - } - - // W2. Search backwards from each instance of a European number - // until the first strong type (R, L, AL, or sor) is found. If an - // AL is found, change the type of the European number to Arabic - // number. - // W3. Change all ALs to R. - for (var i = 0, cur = outerType; i < len; ++i) { - var type = types[i]; - if (type == "1" && cur == "r") types[i] = "n"; - else if (isStrong.test(type)) { cur = type; if (type == "r") types[i] = "R"; } - } - - // W4. A single European separator between two European numbers - // changes to a European number. A single common separator between - // two numbers of the same type changes to that type. - for (var i = 1, prev = types[0]; i < len - 1; ++i) { - var type = types[i]; - if (type == "+" && prev == "1" && types[i+1] == "1") types[i] = "1"; - else if (type == "," && prev == types[i+1] && - (prev == "1" || prev == "n")) types[i] = prev; - prev = type; - } - - // W5. A sequence of European terminators adjacent to European - // numbers changes to all European numbers. - // W6. Otherwise, separators and terminators change to Other - // Neutral. - for (var i = 0; i < len; ++i) { - var type = types[i]; - if (type == ",") types[i] = "N"; - else if (type == "%") { - for (var end = i + 1; end < len && types[end] == "%"; ++end) {} - var replace = (i && types[i-1] == "!") || (end < len && types[end] == "1") ? "1" : "N"; - for (var j = i; j < end; ++j) types[j] = replace; - i = end - 1; - } - } - - // W7. Search backwards from each instance of a European number - // until the first strong type (R, L, or sor) is found. If an L is - // found, then change the type of the European number to L. - for (var i = 0, cur = outerType; i < len; ++i) { - var type = types[i]; - if (cur == "L" && type == "1") types[i] = "L"; - else if (isStrong.test(type)) cur = type; - } - - // N1. A sequence of neutrals takes the direction of the - // surrounding strong text if the text on both sides has the same - // direction. European and Arabic numbers act as if they were R in - // terms of their influence on neutrals. Start-of-level-run (sor) - // and end-of-level-run (eor) are used at level run boundaries. - // N2. Any remaining neutrals take the embedding direction. - for (var i = 0; i < len; ++i) { - if (isNeutral.test(types[i])) { - for (var end = i + 1; end < len && isNeutral.test(types[end]); ++end) {} - var before = (i ? types[i-1] : outerType) == "L"; - var after = (end < len ? types[end] : outerType) == "L"; - var replace = before || after ? "L" : "R"; - for (var j = i; j < end; ++j) types[j] = replace; - i = end - 1; - } - } - - // Here we depart from the documented algorithm, in order to avoid - // building up an actual levels array. Since there are only three - // levels (0, 1, 2) in an implementation that doesn't take - // explicit embedding into account, we can build up the order on - // the fly, without following the level-based algorithm. - var order = [], m; - for (var i = 0; i < len;) { - if (countsAsLeft.test(types[i])) { - var start = i; - for (++i; i < len && countsAsLeft.test(types[i]); ++i) {} - order.push(new BidiSpan(0, start, i)); - } else { - var pos = i, at = order.length; - for (++i; i < len && types[i] != "L"; ++i) {} - for (var j = pos; j < i;) { - if (countsAsNum.test(types[j])) { - if (pos < j) order.splice(at, 0, new BidiSpan(1, pos, j)); - var nstart = j; - for (++j; j < i && countsAsNum.test(types[j]); ++j) {} - order.splice(at, 0, new BidiSpan(2, nstart, j)); - pos = j; - } else ++j; - } - if (pos < i) order.splice(at, 0, new BidiSpan(1, pos, i)); - } - } - if (order[0].level == 1 && (m = str.match(/^\s+/))) { - order[0].from = m[0].length; - order.unshift(new BidiSpan(0, 0, m[0].length)); - } - if (lst(order).level == 1 && (m = str.match(/\s+$/))) { - lst(order).to -= m[0].length; - order.push(new BidiSpan(0, len - m[0].length, len)); - } - if (order[0].level != lst(order).level) - order.push(new BidiSpan(order[0].level, len, len)); - - return order; - }; - })(); - - // THE END - - CodeMirror.version = "4.7.0"; - - return CodeMirror; -}); diff --git a/assets/js/plugins/codemirror/mode/apl/apl.js b/assets/js/plugins/codemirror/mode/apl/apl.js deleted file mode 100644 index 4357bed4..00000000 --- a/assets/js/plugins/codemirror/mode/apl/apl.js +++ /dev/null @@ -1,175 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("apl", function() { - var builtInOps = { - ".": "innerProduct", - "\\": "scan", - "/": "reduce", - "⌿": "reduce1Axis", - "⍀": "scan1Axis", - "¨": "each", - "⍣": "power" - }; - var builtInFuncs = { - "+": ["conjugate", "add"], - "−": ["negate", "subtract"], - "×": ["signOf", "multiply"], - "÷": ["reciprocal", "divide"], - "⌈": ["ceiling", "greaterOf"], - "⌊": ["floor", "lesserOf"], - "∣": ["absolute", "residue"], - "⍳": ["indexGenerate", "indexOf"], - "?": ["roll", "deal"], - "⋆": ["exponentiate", "toThePowerOf"], - "⍟": ["naturalLog", "logToTheBase"], - "○": ["piTimes", "circularFuncs"], - "!": ["factorial", "binomial"], - "⌹": ["matrixInverse", "matrixDivide"], - "<": [null, "lessThan"], - "≤": [null, "lessThanOrEqual"], - "=": [null, "equals"], - ">": [null, "greaterThan"], - "≥": [null, "greaterThanOrEqual"], - "≠": [null, "notEqual"], - "≡": ["depth", "match"], - "≢": [null, "notMatch"], - "∈": ["enlist", "membership"], - "⍷": [null, "find"], - "∪": ["unique", "union"], - "∩": [null, "intersection"], - "∼": ["not", "without"], - "∨": [null, "or"], - "∧": [null, "and"], - "⍱": [null, "nor"], - "⍲": [null, "nand"], - "⍴": ["shapeOf", "reshape"], - ",": ["ravel", "catenate"], - "⍪": [null, "firstAxisCatenate"], - "⌽": ["reverse", "rotate"], - "⊖": ["axis1Reverse", "axis1Rotate"], - "⍉": ["transpose", null], - "↑": ["first", "take"], - "↓": [null, "drop"], - "⊂": ["enclose", "partitionWithAxis"], - "⊃": ["diclose", "pick"], - "⌷": [null, "index"], - "⍋": ["gradeUp", null], - "⍒": ["gradeDown", null], - "⊤": ["encode", null], - "⊥": ["decode", null], - "⍕": ["format", "formatByExample"], - "⍎": ["execute", null], - "⊣": ["stop", "left"], - "⊢": ["pass", "right"] - }; - - var isOperator = /[\.\/⌿⍀¨⍣]/; - var isNiladic = /⍬/; - var isFunction = /[\+−×÷⌈⌊∣⍳\?⋆⍟○!⌹<≤=>≥≠≡≢∈⍷∪∩∼∨∧⍱⍲⍴,⍪⌽⊖⍉↑↓⊂⊃⌷⍋⍒⊤⊥⍕⍎⊣⊢]/; - var isArrow = /←/; - var isComment = /[⍝#].*$/; - - var stringEater = function(type) { - var prev; - prev = false; - return function(c) { - prev = c; - if (c === type) { - return prev === "\\"; - } - return true; - }; - }; - return { - startState: function() { - return { - prev: false, - func: false, - op: false, - string: false, - escape: false - }; - }, - token: function(stream, state) { - var ch, funcName, word; - if (stream.eatSpace()) { - return null; - } - ch = stream.next(); - if (ch === '"' || ch === "'") { - stream.eatWhile(stringEater(ch)); - stream.next(); - state.prev = true; - return "string"; - } - if (/[\[{\(]/.test(ch)) { - state.prev = false; - return null; - } - if (/[\]}\)]/.test(ch)) { - state.prev = true; - return null; - } - if (isNiladic.test(ch)) { - state.prev = false; - return "niladic"; - } - if (/[¯\d]/.test(ch)) { - if (state.func) { - state.func = false; - state.prev = false; - } else { - state.prev = true; - } - stream.eatWhile(/[\w\.]/); - return "number"; - } - if (isOperator.test(ch)) { - return "operator apl-" + builtInOps[ch]; - } - if (isArrow.test(ch)) { - return "apl-arrow"; - } - if (isFunction.test(ch)) { - funcName = "apl-"; - if (builtInFuncs[ch] != null) { - if (state.prev) { - funcName += builtInFuncs[ch][1]; - } else { - funcName += builtInFuncs[ch][0]; - } - } - state.func = true; - state.prev = false; - return "function " + funcName; - } - if (isComment.test(ch)) { - stream.skipToEnd(); - return "comment"; - } - if (ch === "∘" && stream.peek() === ".") { - stream.next(); - return "function jot-dot"; - } - stream.eatWhile(/[\w\$_]/); - word = stream.current(); - state.prev = true; - return "keyword"; - } - }; -}); - -CodeMirror.defineMIME("text/apl", "apl"); - -}); diff --git a/assets/js/plugins/codemirror/mode/apl/index.html b/assets/js/plugins/codemirror/mode/apl/index.html deleted file mode 100644 index 53dda6b5..00000000 --- a/assets/js/plugins/codemirror/mode/apl/index.html +++ /dev/null @@ -1,72 +0,0 @@ -<!doctype html> - -<title>CodeMirror: APL mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="../../addon/edit/matchbrackets.js"></script> -<script src="./apl.js"></script> -<style> - .CodeMirror { border: 2px inset #dee; } - </style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">APL</a> - </ul> -</div> - -<article> -<h2>APL mode</h2> -<form><textarea id="code" name="code"> -⍝ Conway's game of life - -⍝ This example was inspired by the impressive demo at -⍝ http://www.youtube.com/watch?v=a9xAKttWgP4 - -⍝ Create a matrix: -⍝ 0 1 1 -⍝ 1 1 0 -⍝ 0 1 0 -creature ← (3 3 ⍴ ⍳ 9) ∈ 1 2 3 4 7 ⍝ Original creature from demo -creature ← (3 3 ⍴ ⍳ 9) ∈ 1 3 6 7 8 ⍝ Glider - -⍝ Place the creature on a larger board, near the centre -board ← ¯1 ⊖ ¯2 ⌽ 5 7 ↑ creature - -⍝ A function to move from one generation to the next -life ← {∨/ 1 ⍵ ∧ 3 4 = ⊂+/ +⌿ 1 0 ¯1 ∘.⊖ 1 0 ¯1 ⌽¨ ⊂⍵} - -⍝ Compute n-th generation and format it as a -⍝ character matrix -gen ← {' #'[(life ⍣ ⍵) board]} - -⍝ Show first three generations -(gen 1) (gen 2) (gen 3) -</textarea></form> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers: true, - matchBrackets: true, - mode: "text/apl" - }); - </script> - - <p>Simple mode that tries to handle APL as well as it can.</p> - <p>It attempts to label functions/operators based upon - monadic/dyadic usage (but this is far from fully fleshed out). - This means there are meaningful classnames so hover states can - have popups etc.</p> - - <p><strong>MIME types defined:</strong> <code>text/apl</code> (APL code)</p> - </article> diff --git a/assets/js/plugins/codemirror/mode/asterisk/asterisk.js b/assets/js/plugins/codemirror/mode/asterisk/asterisk.js deleted file mode 100644 index a1ead115..00000000 --- a/assets/js/plugins/codemirror/mode/asterisk/asterisk.js +++ /dev/null @@ -1,198 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/* - * ===================================================================================== - * - * Filename: mode/asterisk/asterisk.js - * - * Description: CodeMirror mode for Asterisk dialplan - * - * Created: 05/17/2012 09:20:25 PM - * Revision: none - * - * Author: Stas Kobzar (stas@modulis.ca), - * Company: Modulis.ca Inc. - * - * ===================================================================================== - */ - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("asterisk", function() { - var atoms = ["exten", "same", "include","ignorepat","switch"], - dpcmd = ["#include","#exec"], - apps = [ - "addqueuemember","adsiprog","aelsub","agentlogin","agentmonitoroutgoing","agi", - "alarmreceiver","amd","answer","authenticate","background","backgrounddetect", - "bridge","busy","callcompletioncancel","callcompletionrequest","celgenuserevent", - "changemonitor","chanisavail","channelredirect","chanspy","clearhash","confbridge", - "congestion","continuewhile","controlplayback","dahdiacceptr2call","dahdibarge", - "dahdiras","dahdiscan","dahdisendcallreroutingfacility","dahdisendkeypadfacility", - "datetime","dbdel","dbdeltree","deadagi","dial","dictate","directory","disa", - "dumpchan","eagi","echo","endwhile","exec","execif","execiftime","exitwhile","extenspy", - "externalivr","festival","flash","followme","forkcdr","getcpeid","gosub","gosubif", - "goto","gotoif","gotoiftime","hangup","iax2provision","ices","importvar","incomplete", - "ivrdemo","jabberjoin","jabberleave","jabbersend","jabbersendgroup","jabberstatus", - "jack","log","macro","macroexclusive","macroexit","macroif","mailboxexists","meetme", - "meetmeadmin","meetmechanneladmin","meetmecount","milliwatt","minivmaccmess","minivmdelete", - "minivmgreet","minivmmwi","minivmnotify","minivmrecord","mixmonitor","monitor","morsecode", - "mp3player","mset","musiconhold","nbscat","nocdr","noop","odbc","odbc","odbcfinish", - "originate","ospauth","ospfinish","osplookup","ospnext","page","park","parkandannounce", - "parkedcall","pausemonitor","pausequeuemember","pickup","pickupchan","playback","playtones", - "privacymanager","proceeding","progress","queue","queuelog","raiseexception","read","readexten", - "readfile","receivefax","receivefax","receivefax","record","removequeuemember", - "resetcdr","retrydial","return","ringing","sayalpha","saycountedadj","saycountednoun", - "saycountpl","saydigits","saynumber","sayphonetic","sayunixtime","senddtmf","sendfax", - "sendfax","sendfax","sendimage","sendtext","sendurl","set","setamaflags", - "setcallerpres","setmusiconhold","sipaddheader","sipdtmfmode","sipremoveheader","skel", - "slastation","slatrunk","sms","softhangup","speechactivategrammar","speechbackground", - "speechcreate","speechdeactivategrammar","speechdestroy","speechloadgrammar","speechprocessingsound", - "speechstart","speechunloadgrammar","stackpop","startmusiconhold","stopmixmonitor","stopmonitor", - "stopmusiconhold","stopplaytones","system","testclient","testserver","transfer","tryexec", - "trysystem","unpausemonitor","unpausequeuemember","userevent","verbose","vmauthenticate", - "vmsayname","voicemail","voicemailmain","wait","waitexten","waitfornoise","waitforring", - "waitforsilence","waitmusiconhold","waituntil","while","zapateller" - ]; - - function basicToken(stream,state){ - var cur = ''; - var ch = ''; - ch = stream.next(); - // comment - if(ch == ";") { - stream.skipToEnd(); - return "comment"; - } - // context - if(ch == '[') { - stream.skipTo(']'); - stream.eat(']'); - return "header"; - } - // string - if(ch == '"') { - stream.skipTo('"'); - return "string"; - } - if(ch == "'") { - stream.skipTo("'"); - return "string-2"; - } - // dialplan commands - if(ch == '#') { - stream.eatWhile(/\w/); - cur = stream.current(); - if(dpcmd.indexOf(cur) !== -1) { - stream.skipToEnd(); - return "strong"; - } - } - // application args - if(ch == '$'){ - var ch1 = stream.peek(); - if(ch1 == '{'){ - stream.skipTo('}'); - stream.eat('}'); - return "variable-3"; - } - } - // extension - stream.eatWhile(/\w/); - cur = stream.current(); - if(atoms.indexOf(cur) !== -1) { - state.extenStart = true; - switch(cur) { - case 'same': state.extenSame = true; break; - case 'include': - case 'switch': - case 'ignorepat': - state.extenInclude = true;break; - default:break; - } - return "atom"; - } - } - - return { - startState: function() { - return { - extenStart: false, - extenSame: false, - extenInclude: false, - extenExten: false, - extenPriority: false, - extenApplication: false - }; - }, - token: function(stream, state) { - - var cur = ''; - var ch = ''; - if(stream.eatSpace()) return null; - // extension started - if(state.extenStart){ - stream.eatWhile(/[^\s]/); - cur = stream.current(); - if(/^=>?$/.test(cur)){ - state.extenExten = true; - state.extenStart = false; - return "strong"; - } else { - state.extenStart = false; - stream.skipToEnd(); - return "error"; - } - } else if(state.extenExten) { - // set exten and priority - state.extenExten = false; - state.extenPriority = true; - stream.eatWhile(/[^,]/); - if(state.extenInclude) { - stream.skipToEnd(); - state.extenPriority = false; - state.extenInclude = false; - } - if(state.extenSame) { - state.extenPriority = false; - state.extenSame = false; - state.extenApplication = true; - } - return "tag"; - } else if(state.extenPriority) { - state.extenPriority = false; - state.extenApplication = true; - ch = stream.next(); // get comma - if(state.extenSame) return null; - stream.eatWhile(/[^,]/); - return "number"; - } else if(state.extenApplication) { - stream.eatWhile(/,/); - cur = stream.current(); - if(cur === ',') return null; - stream.eatWhile(/\w/); - cur = stream.current().toLowerCase(); - state.extenApplication = false; - if(apps.indexOf(cur) !== -1){ - return "def strong"; - } - } else{ - return basicToken(stream,state); - } - - return null; - } - }; -}); - -CodeMirror.defineMIME("text/x-asterisk", "asterisk"); - -}); diff --git a/assets/js/plugins/codemirror/mode/asterisk/index.html b/assets/js/plugins/codemirror/mode/asterisk/index.html deleted file mode 100644 index 257bd398..00000000 --- a/assets/js/plugins/codemirror/mode/asterisk/index.html +++ /dev/null @@ -1,154 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Asterisk dialplan mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="asterisk.js"></script> -<style> - .CodeMirror {border: 1px solid #999;} - .cm-s-default span.cm-arrow { color: red; } - </style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Asterisk dialplan</a> - </ul> -</div> - -<article> -<h2>Asterisk dialplan mode</h2> -<form><textarea id="code" name="code"> -; extensions.conf - the Asterisk dial plan -; - -[general] -; -; If static is set to no, or omitted, then the pbx_config will rewrite -; this file when extensions are modified. Remember that all comments -; made in the file will be lost when that happens. -static=yes - -#include "/etc/asterisk/additional_general.conf - -[iaxprovider] -switch => IAX2/user:[key]@myserver/mycontext - -[dynamic] -#exec /usr/bin/dynamic-peers.pl - -[trunkint] -; -; International long distance through trunk -; -exten => _9011.,1,Macro(dundi-e164,${EXTEN:4}) -exten => _9011.,n,Dial(${GLOBAL(TRUNK)}/${FILTER(0-9,${EXTEN:${GLOBAL(TRUNKMSD)}})}) - -[local] -; -; Master context for local, toll-free, and iaxtel calls only -; -ignorepat => 9 -include => default - -[demo] -include => stdexten -; -; We start with what to do when a call first comes in. -; -exten => s,1,Wait(1) ; Wait a second, just for fun -same => n,Answer ; Answer the line -same => n,Set(TIMEOUT(digit)=5) ; Set Digit Timeout to 5 seconds -same => n,Set(TIMEOUT(response)=10) ; Set Response Timeout to 10 seconds -same => n(restart),BackGround(demo-congrats) ; Play a congratulatory message -same => n(instruct),BackGround(demo-instruct) ; Play some instructions -same => n,WaitExten ; Wait for an extension to be dialed. - -exten => 2,1,BackGround(demo-moreinfo) ; Give some more information. -exten => 2,n,Goto(s,instruct) - -exten => 3,1,Set(LANGUAGE()=fr) ; Set language to french -exten => 3,n,Goto(s,restart) ; Start with the congratulations - -exten => 1000,1,Goto(default,s,1) -; -; We also create an example user, 1234, who is on the console and has -; voicemail, etc. -; -exten => 1234,1,Playback(transfer,skip) ; "Please hold while..." - ; (but skip if channel is not up) -exten => 1234,n,Gosub(${EXTEN},stdexten(${GLOBAL(CONSOLE)})) -exten => 1234,n,Goto(default,s,1) ; exited Voicemail - -exten => 1235,1,Voicemail(1234,u) ; Right to voicemail - -exten => 1236,1,Dial(Console/dsp) ; Ring forever -exten => 1236,n,Voicemail(1234,b) ; Unless busy - -; -; # for when they're done with the demo -; -exten => #,1,Playback(demo-thanks) ; "Thanks for trying the demo" -exten => #,n,Hangup ; Hang them up. - -; -; A timeout and "invalid extension rule" -; -exten => t,1,Goto(#,1) ; If they take too long, give up -exten => i,1,Playback(invalid) ; "That's not valid, try again" - -; -; Create an extension, 500, for dialing the -; Asterisk demo. -; -exten => 500,1,Playback(demo-abouttotry); Let them know what's going on -exten => 500,n,Dial(IAX2/guest@pbx.digium.com/s@default) ; Call the Asterisk demo -exten => 500,n,Playback(demo-nogo) ; Couldn't connect to the demo site -exten => 500,n,Goto(s,6) ; Return to the start over message. - -; -; Create an extension, 600, for evaluating echo latency. -; -exten => 600,1,Playback(demo-echotest) ; Let them know what's going on -exten => 600,n,Echo ; Do the echo test -exten => 600,n,Playback(demo-echodone) ; Let them know it's over -exten => 600,n,Goto(s,6) ; Start over - -; -; You can use the Macro Page to intercom a individual user -exten => 76245,1,Macro(page,SIP/Grandstream1) -; or if your peernames are the same as extensions -exten => _7XXX,1,Macro(page,SIP/${EXTEN}) -; -; -; System Wide Page at extension 7999 -; -exten => 7999,1,Set(TIMEOUT(absolute)=60) -exten => 7999,2,Page(Local/Grandstream1@page&Local/Xlite1@page&Local/1234@page/n,d) - -; Give voicemail at extension 8500 -; -exten => 8500,1,VoicemailMain -exten => 8500,n,Goto(s,6) - - </textarea></form> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - mode: "text/x-asterisk", - matchBrackets: true, - lineNumber: true - }); - </script> - - <p><strong>MIME types defined:</strong> <code>text/x-asterisk</code>.</p> - - </article> diff --git a/assets/js/plugins/codemirror/mode/clike/clike.js b/assets/js/plugins/codemirror/mode/clike/clike.js deleted file mode 100644 index 0f24bb84..00000000 --- a/assets/js/plugins/codemirror/mode/clike/clike.js +++ /dev/null @@ -1,474 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("clike", function(config, parserConfig) { - var indentUnit = config.indentUnit, - statementIndentUnit = parserConfig.statementIndentUnit || indentUnit, - dontAlignCalls = parserConfig.dontAlignCalls, - keywords = parserConfig.keywords || {}, - builtin = parserConfig.builtin || {}, - blockKeywords = parserConfig.blockKeywords || {}, - atoms = parserConfig.atoms || {}, - hooks = parserConfig.hooks || {}, - multiLineStrings = parserConfig.multiLineStrings, - indentStatements = parserConfig.indentStatements !== false; - var isOperatorChar = /[+\-*&%=<>!?|\/]/; - - var curPunc; - - function tokenBase(stream, state) { - var ch = stream.next(); - if (hooks[ch]) { - var result = hooks[ch](stream, state); - if (result !== false) return result; - } - if (ch == '"' || ch == "'") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } - if (/[\[\]{}\(\),;\:\.]/.test(ch)) { - curPunc = ch; - return null; - } - if (/\d/.test(ch)) { - stream.eatWhile(/[\w\.]/); - return "number"; - } - if (ch == "/") { - if (stream.eat("*")) { - state.tokenize = tokenComment; - return tokenComment(stream, state); - } - if (stream.eat("/")) { - stream.skipToEnd(); - return "comment"; - } - } - if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return "operator"; - } - stream.eatWhile(/[\w\$_\xa1-\uffff]/); - var cur = stream.current(); - if (keywords.propertyIsEnumerable(cur)) { - if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; - return "keyword"; - } - if (builtin.propertyIsEnumerable(cur)) { - if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; - return "builtin"; - } - if (atoms.propertyIsEnumerable(cur)) return "atom"; - return "variable"; - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next, end = false; - while ((next = stream.next()) != null) { - if (next == quote && !escaped) {end = true; break;} - escaped = !escaped && next == "\\"; - } - if (end || !(escaped || multiLineStrings)) - state.tokenize = null; - return "string"; - }; - } - - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = null; - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - - function Context(indented, column, type, align, prev) { - this.indented = indented; - this.column = column; - this.type = type; - this.align = align; - this.prev = prev; - } - function pushContext(state, col, type) { - var indent = state.indented; - if (state.context && state.context.type == "statement") - indent = state.context.indented; - return state.context = new Context(indent, col, type, null, state.context); - } - function popContext(state) { - var t = state.context.type; - if (t == ")" || t == "]" || t == "}") - state.indented = state.context.indented; - return state.context = state.context.prev; - } - - // Interface - - return { - startState: function(basecolumn) { - return { - tokenize: null, - context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), - indented: 0, - startOfLine: true - }; - }, - - token: function(stream, state) { - var ctx = state.context; - if (stream.sol()) { - if (ctx.align == null) ctx.align = false; - state.indented = stream.indentation(); - state.startOfLine = true; - } - if (stream.eatSpace()) return null; - curPunc = null; - var style = (state.tokenize || tokenBase)(stream, state); - if (style == "comment" || style == "meta") return style; - if (ctx.align == null) ctx.align = true; - - if ((curPunc == ";" || curPunc == ":" || curPunc == ",") && ctx.type == "statement") popContext(state); - else if (curPunc == "{") pushContext(state, stream.column(), "}"); - else if (curPunc == "[") pushContext(state, stream.column(), "]"); - else if (curPunc == "(") pushContext(state, stream.column(), ")"); - else if (curPunc == "}") { - while (ctx.type == "statement") ctx = popContext(state); - if (ctx.type == "}") ctx = popContext(state); - while (ctx.type == "statement") ctx = popContext(state); - } - else if (curPunc == ctx.type) popContext(state); - else if (indentStatements && - (((ctx.type == "}" || ctx.type == "top") && curPunc != ';') || - (ctx.type == "statement" && curPunc == "newstatement"))) - pushContext(state, stream.column(), "statement"); - state.startOfLine = false; - return style; - }, - - indent: function(state, textAfter) { - if (state.tokenize != tokenBase && state.tokenize != null) return CodeMirror.Pass; - var ctx = state.context, firstChar = textAfter && textAfter.charAt(0); - if (ctx.type == "statement" && firstChar == "}") ctx = ctx.prev; - var closing = firstChar == ctx.type; - if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : statementIndentUnit); - else if (ctx.align && (!dontAlignCalls || ctx.type != ")")) return ctx.column + (closing ? 0 : 1); - else if (ctx.type == ")" && !closing) return ctx.indented + statementIndentUnit; - else return ctx.indented + (closing ? 0 : indentUnit); - }, - - electricChars: "{}", - blockCommentStart: "/*", - blockCommentEnd: "*/", - lineComment: "//", - fold: "brace" - }; -}); - - function words(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - var cKeywords = "auto if break int case long char register continue return default short do sizeof " + - "double static else struct entry switch extern typedef float union for unsigned " + - "goto while enum void const signed volatile"; - - function cppHook(stream, state) { - if (!state.startOfLine) return false; - for (;;) { - if (stream.skipTo("\\")) { - stream.next(); - if (stream.eol()) { - state.tokenize = cppHook; - break; - } - } else { - stream.skipToEnd(); - state.tokenize = null; - break; - } - } - return "meta"; - } - - function cpp11StringHook(stream, state) { - stream.backUp(1); - // Raw strings. - if (stream.match(/(R|u8R|uR|UR|LR)/)) { - var match = stream.match(/"([^\s\\()]{0,16})\(/); - if (!match) { - return false; - } - state.cpp11RawStringDelim = match[1]; - state.tokenize = tokenRawString; - return tokenRawString(stream, state); - } - // Unicode strings/chars. - if (stream.match(/(u8|u|U|L)/)) { - if (stream.match(/["']/, /* eat */ false)) { - return "string"; - } - return false; - } - // Ignore this hook. - stream.next(); - return false; - } - - // C#-style strings where "" escapes a quote. - function tokenAtString(stream, state) { - var next; - while ((next = stream.next()) != null) { - if (next == '"' && !stream.eat('"')) { - state.tokenize = null; - break; - } - } - return "string"; - } - - // C++11 raw string literal is <prefix>"<delim>( anything )<delim>", where - // <delim> can be a string up to 16 characters long. - function tokenRawString(stream, state) { - // Escape characters that have special regex meanings. - var delim = state.cpp11RawStringDelim.replace(/[^\w\s]/g, '\\$&'); - var match = stream.match(new RegExp(".*?\\)" + delim + '"')); - if (match) - state.tokenize = null; - else - stream.skipToEnd(); - return "string"; - } - - function def(mimes, mode) { - if (typeof mimes == "string") mimes = [mimes]; - var words = []; - function add(obj) { - if (obj) for (var prop in obj) if (obj.hasOwnProperty(prop)) - words.push(prop); - } - add(mode.keywords); - add(mode.builtin); - add(mode.atoms); - if (words.length) { - mode.helperType = mimes[0]; - CodeMirror.registerHelper("hintWords", mimes[0], words); - } - - for (var i = 0; i < mimes.length; ++i) - CodeMirror.defineMIME(mimes[i], mode); - } - - def(["text/x-csrc", "text/x-c", "text/x-chdr"], { - name: "clike", - keywords: words(cKeywords), - blockKeywords: words("case do else for if switch while struct"), - atoms: words("null"), - hooks: {"#": cppHook}, - modeProps: {fold: ["brace", "include"]} - }); - - def(["text/x-c++src", "text/x-c++hdr"], { - name: "clike", - keywords: words(cKeywords + " asm dynamic_cast namespace reinterpret_cast try bool explicit new " + - "static_cast typeid catch operator template typename class friend private " + - "this using const_cast inline public throw virtual delete mutable protected " + - "wchar_t alignas alignof constexpr decltype nullptr noexcept thread_local final " + - "static_assert override"), - blockKeywords: words("catch class do else finally for if struct switch try while"), - atoms: words("true false null"), - hooks: { - "#": cppHook, - "u": cpp11StringHook, - "U": cpp11StringHook, - "L": cpp11StringHook, - "R": cpp11StringHook - }, - modeProps: {fold: ["brace", "include"]} - }); - - def("text/x-java", { - name: "clike", - keywords: words("abstract assert boolean break byte case catch char class const continue default " + - "do double else enum extends final finally float for goto if implements import " + - "instanceof int interface long native new package private protected public " + - "return short static strictfp super switch synchronized this throw throws transient " + - "try void volatile while"), - blockKeywords: words("catch class do else finally for if switch try while"), - atoms: words("true false null"), - hooks: { - "@": function(stream) { - stream.eatWhile(/[\w\$_]/); - return "meta"; - } - }, - modeProps: {fold: ["brace", "import"]} - }); - - def("text/x-csharp", { - name: "clike", - keywords: words("abstract as base break case catch checked class const continue" + - " default delegate do else enum event explicit extern finally fixed for" + - " foreach goto if implicit in interface internal is lock namespace new" + - " operator out override params private protected public readonly ref return sealed" + - " sizeof stackalloc static struct switch this throw try typeof unchecked" + - " unsafe using virtual void volatile while add alias ascending descending dynamic from get" + - " global group into join let orderby partial remove select set value var yield"), - blockKeywords: words("catch class do else finally for foreach if struct switch try while"), - builtin: words("Boolean Byte Char DateTime DateTimeOffset Decimal Double" + - " Guid Int16 Int32 Int64 Object SByte Single String TimeSpan UInt16 UInt32" + - " UInt64 bool byte char decimal double short int long object" + - " sbyte float string ushort uint ulong"), - atoms: words("true false null"), - hooks: { - "@": function(stream, state) { - if (stream.eat('"')) { - state.tokenize = tokenAtString; - return tokenAtString(stream, state); - } - stream.eatWhile(/[\w\$_]/); - return "meta"; - } - } - }); - - function tokenTripleString(stream, state) { - var escaped = false; - while (!stream.eol()) { - if (!escaped && stream.match('"""')) { - state.tokenize = null; - break; - } - escaped = stream.next() != "\\" && !escaped; - } - return "string"; - } - - def("text/x-scala", { - name: "clike", - keywords: words( - - /* scala */ - "abstract case catch class def do else extends false final finally for forSome if " + - "implicit import lazy match new null object override package private protected return " + - "sealed super this throw trait try trye type val var while with yield _ : = => <- <: " + - "<% >: # @ " + - - /* package scala */ - "assert assume require print println printf readLine readBoolean readByte readShort " + - "readChar readInt readLong readFloat readDouble " + - - "AnyVal App Application Array BufferedIterator BigDecimal BigInt Char Console Either " + - "Enumeration Equiv Error Exception Fractional Function IndexedSeq Integral Iterable " + - "Iterator List Map Numeric Nil NotNull Option Ordered Ordering PartialFunction PartialOrdering " + - "Product Proxy Range Responder Seq Serializable Set Specializable Stream StringBuilder " + - "StringContext Symbol Throwable Traversable TraversableOnce Tuple Unit Vector :: #:: " + - - /* package java.lang */ - "Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable " + - "Compiler Double Exception Float Integer Long Math Number Object Package Pair Process " + - "Runtime Runnable SecurityManager Short StackTraceElement StrictMath String " + - "StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void" - ), - multiLineStrings: true, - blockKeywords: words("catch class do else finally for forSome if match switch try while"), - atoms: words("true false null"), - indentStatements: false, - hooks: { - "@": function(stream) { - stream.eatWhile(/[\w\$_]/); - return "meta"; - }, - '"': function(stream, state) { - if (!stream.match('""')) return false; - state.tokenize = tokenTripleString; - return state.tokenize(stream, state); - } - } - }); - - def(["x-shader/x-vertex", "x-shader/x-fragment"], { - name: "clike", - keywords: words("float int bool void " + - "vec2 vec3 vec4 ivec2 ivec3 ivec4 bvec2 bvec3 bvec4 " + - "mat2 mat3 mat4 " + - "sampler1D sampler2D sampler3D samplerCube " + - "sampler1DShadow sampler2DShadow" + - "const attribute uniform varying " + - "break continue discard return " + - "for while do if else struct " + - "in out inout"), - blockKeywords: words("for while do if else struct"), - builtin: words("radians degrees sin cos tan asin acos atan " + - "pow exp log exp2 sqrt inversesqrt " + - "abs sign floor ceil fract mod min max clamp mix step smootstep " + - "length distance dot cross normalize ftransform faceforward " + - "reflect refract matrixCompMult " + - "lessThan lessThanEqual greaterThan greaterThanEqual " + - "equal notEqual any all not " + - "texture1D texture1DProj texture1DLod texture1DProjLod " + - "texture2D texture2DProj texture2DLod texture2DProjLod " + - "texture3D texture3DProj texture3DLod texture3DProjLod " + - "textureCube textureCubeLod " + - "shadow1D shadow2D shadow1DProj shadow2DProj " + - "shadow1DLod shadow2DLod shadow1DProjLod shadow2DProjLod " + - "dFdx dFdy fwidth " + - "noise1 noise2 noise3 noise4"), - atoms: words("true false " + - "gl_FragColor gl_SecondaryColor gl_Normal gl_Vertex " + - "gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 " + - "gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 " + - "gl_FogCoord " + - "gl_Position gl_PointSize gl_ClipVertex " + - "gl_FrontColor gl_BackColor gl_FrontSecondaryColor gl_BackSecondaryColor " + - "gl_TexCoord gl_FogFragCoord " + - "gl_FragCoord gl_FrontFacing " + - "gl_FragColor gl_FragData gl_FragDepth " + - "gl_ModelViewMatrix gl_ProjectionMatrix gl_ModelViewProjectionMatrix " + - "gl_TextureMatrix gl_NormalMatrix gl_ModelViewMatrixInverse " + - "gl_ProjectionMatrixInverse gl_ModelViewProjectionMatrixInverse " + - "gl_TexureMatrixTranspose gl_ModelViewMatrixInverseTranspose " + - "gl_ProjectionMatrixInverseTranspose " + - "gl_ModelViewProjectionMatrixInverseTranspose " + - "gl_TextureMatrixInverseTranspose " + - "gl_NormalScale gl_DepthRange gl_ClipPlane " + - "gl_Point gl_FrontMaterial gl_BackMaterial gl_LightSource gl_LightModel " + - "gl_FrontLightModelProduct gl_BackLightModelProduct " + - "gl_TextureColor gl_EyePlaneS gl_EyePlaneT gl_EyePlaneR gl_EyePlaneQ " + - "gl_FogParameters " + - "gl_MaxLights gl_MaxClipPlanes gl_MaxTextureUnits gl_MaxTextureCoords " + - "gl_MaxVertexAttribs gl_MaxVertexUniformComponents gl_MaxVaryingFloats " + - "gl_MaxVertexTextureImageUnits gl_MaxTextureImageUnits " + - "gl_MaxFragmentUniformComponents gl_MaxCombineTextureImageUnits " + - "gl_MaxDrawBuffers"), - hooks: {"#": cppHook}, - modeProps: {fold: ["brace", "include"]} - }); - - def("text/x-nesc", { - name: "clike", - keywords: words(cKeywords + "as atomic async call command component components configuration event generic " + - "implementation includes interface module new norace nx_struct nx_union post provides " + - "signal task uses abstract extends"), - blockKeywords: words("case do else for if switch while struct"), - atoms: words("null"), - hooks: {"#": cppHook}, - modeProps: {fold: ["brace", "include"]} - }); - -}); diff --git a/assets/js/plugins/codemirror/mode/clike/index.html b/assets/js/plugins/codemirror/mode/clike/index.html deleted file mode 100644 index 639ac398..00000000 --- a/assets/js/plugins/codemirror/mode/clike/index.html +++ /dev/null @@ -1,225 +0,0 @@ -<!doctype html> - -<title>CodeMirror: C-like mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="../../addon/edit/matchbrackets.js"></script> -<link rel="stylesheet" href="../../addon/hint/show-hint.css"> -<script src="../../addon/hint/show-hint.js"></script> -<script src="clike.js"></script> -<style>.CodeMirror {border: 2px inset #dee;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">C-like</a> - </ul> -</div> - -<article> -<h2>C-like mode</h2> - -<div><textarea id="c-code"> -/* C demo code */ - -#include <zmq.h> -#include <pthread.h> -#include <semaphore.h> -#include <time.h> -#include <stdio.h> -#include <fcntl.h> -#include <malloc.h> - -typedef struct { - void* arg_socket; - zmq_msg_t* arg_msg; - char* arg_string; - unsigned long arg_len; - int arg_int, arg_command; - - int signal_fd; - int pad; - void* context; - sem_t sem; -} acl_zmq_context; - -#define p(X) (context->arg_##X) - -void* zmq_thread(void* context_pointer) { - acl_zmq_context* context = (acl_zmq_context*)context_pointer; - char ok = 'K', err = 'X'; - int res; - - while (1) { - while ((res = sem_wait(&amp;context->sem)) == EINTR); - if (res) {write(context->signal_fd, &amp;err, 1); goto cleanup;} - switch(p(command)) { - case 0: goto cleanup; - case 1: p(socket) = zmq_socket(context->context, p(int)); break; - case 2: p(int) = zmq_close(p(socket)); break; - case 3: p(int) = zmq_bind(p(socket), p(string)); break; - case 4: p(int) = zmq_connect(p(socket), p(string)); break; - case 5: p(int) = zmq_getsockopt(p(socket), p(int), (void*)p(string), &amp;p(len)); break; - case 6: p(int) = zmq_setsockopt(p(socket), p(int), (void*)p(string), p(len)); break; - case 7: p(int) = zmq_send(p(socket), p(msg), p(int)); break; - case 8: p(int) = zmq_recv(p(socket), p(msg), p(int)); break; - case 9: p(int) = zmq_poll(p(socket), p(int), p(len)); break; - } - p(command) = errno; - write(context->signal_fd, &amp;ok, 1); - } - cleanup: - close(context->signal_fd); - free(context_pointer); - return 0; -} - -void* zmq_thread_init(void* zmq_context, int signal_fd) { - acl_zmq_context* context = malloc(sizeof(acl_zmq_context)); - pthread_t thread; - - context->context = zmq_context; - context->signal_fd = signal_fd; - sem_init(&amp;context->sem, 1, 0); - pthread_create(&amp;thread, 0, &amp;zmq_thread, context); - pthread_detach(thread); - return context; -} -</textarea></div> - -<h2>C++ example</h2> - -<div><textarea id="cpp-code"> -#include <iostream> -#include "mystuff/util.h" - -namespace { -enum Enum { - VAL1, VAL2, VAL3 -}; - -char32_t unicode_string = U"\U0010FFFF"; -string raw_string = R"delim(anything -you -want)delim"; - -int Helper(const MyType& param) { - return 0; -} -} // namespace - -class ForwardDec; - -template <class T, class V> -class Class : public BaseClass { - const MyType<T, V> member_; - - public: - const MyType<T, V>& Method() const { - return member_; - } - - void Method2(MyType<T, V>* value); -} - -template <class T, class V> -void Class::Method2(MyType<T, V>* value) { - std::out << 1 >> method(); - value->Method3(member_); - member_ = value; -} -</textarea></div> - -<h2>Java example</h2> - -<div><textarea id="java-code"> -import com.demo.util.MyType; -import com.demo.util.MyInterface; - -public enum Enum { - VAL1, VAL2, VAL3 -} - -public class Class<T, V> implements MyInterface { - public static final MyType<T, V> member; - - private class InnerClass { - public int zero() { - return 0; - } - } - - @Override - public MyType method() { - return member; - } - - public void method2(MyType<T, V> value) { - method(); - value.method3(); - member = value; - } -} -</textarea></div> - -<h2>Scala example</h2> - -<div><textarea id="scala-code"> -object FilterTest extends App { - def filter(xs: List[Int], threshold: Int) = { - def process(ys: List[Int]): List[Int] = - if (ys.isEmpty) ys - else if (ys.head < threshold) ys.head :: process(ys.tail) - else process(ys.tail) - process(xs) - } - println(filter(List(1, 9, 2, 8, 3, 7, 4), 5)) -} -</textarea></div> - - <script> - var cEditor = CodeMirror.fromTextArea(document.getElementById("c-code"), { - lineNumbers: true, - matchBrackets: true, - mode: "text/x-csrc" - }); - var cppEditor = CodeMirror.fromTextArea(document.getElementById("cpp-code"), { - lineNumbers: true, - matchBrackets: true, - mode: "text/x-c++src" - }); - var javaEditor = CodeMirror.fromTextArea(document.getElementById("java-code"), { - lineNumbers: true, - matchBrackets: true, - mode: "text/x-java" - }); - var scalaEditor = CodeMirror.fromTextArea(document.getElementById("scala-code"), { - lineNumbers: true, - matchBrackets: true, - mode: "text/x-scala" - }); - var mac = CodeMirror.keyMap.default == CodeMirror.keyMap.macDefault; - CodeMirror.keyMap.default[(mac ? "Cmd" : "Ctrl") + "-Space"] = "autocomplete"; - </script> - - <p>Simple mode that tries to handle C-like languages as well as it - can. Takes two configuration parameters: <code>keywords</code>, an - object whose property names are the keywords in the language, - and <code>useCPP</code>, which determines whether C preprocessor - directives are recognized.</p> - - <p><strong>MIME types defined:</strong> <code>text/x-csrc</code> - (C), <code>text/x-c++src</code> (C++), <code>text/x-java</code> - (Java), <code>text/x-csharp</code> (C#), - <code>text/x-scala</code> (Scala), <code>text/x-vertex</code> - and <code>x-shader/x-fragment</code> (shader programs).</p> -</article> diff --git a/assets/js/plugins/codemirror/mode/clike/scala.html b/assets/js/plugins/codemirror/mode/clike/scala.html deleted file mode 100644 index aa04cf0f..00000000 --- a/assets/js/plugins/codemirror/mode/clike/scala.html +++ /dev/null @@ -1,767 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Scala mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<link rel="stylesheet" href="../../theme/ambiance.css"> -<script src="../../lib/codemirror.js"></script> -<script src="../../addon/edit/matchbrackets.js"></script> -<script src="clike.js"></script> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Scala</a> - </ul> -</div> - -<article> -<h2>Scala mode</h2> -<form> -<textarea id="code" name="code"> - - /* __ *\ - ** ________ ___ / / ___ Scala API ** - ** / __/ __// _ | / / / _ | (c) 2003-2011, LAMP/EPFL ** - ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** - ** /____/\___/_/ |_/____/_/ | | ** - ** |/ ** - \* */ - - package scala.collection - - import generic._ - import mutable.{ Builder, ListBuffer } - import annotation.{tailrec, migration, bridge} - import annotation.unchecked.{ uncheckedVariance => uV } - import parallel.ParIterable - - /** A template trait for traversable collections of type `Traversable[A]`. - * - * $traversableInfo - * @define mutability - * @define traversableInfo - * This is a base trait of all kinds of $mutability Scala collections. It - * implements the behavior common to all collections, in terms of a method - * `foreach` with signature: - * {{{ - * def foreach[U](f: Elem => U): Unit - * }}} - * Collection classes mixing in this trait provide a concrete - * `foreach` method which traverses all the - * elements contained in the collection, applying a given function to each. - * They also need to provide a method `newBuilder` - * which creates a builder for collections of the same kind. - * - * A traversable class might or might not have two properties: strictness - * and orderedness. Neither is represented as a type. - * - * The instances of a strict collection class have all their elements - * computed before they can be used as values. By contrast, instances of - * a non-strict collection class may defer computation of some of their - * elements until after the instance is available as a value. - * A typical example of a non-strict collection class is a - * <a href="../immutable/Stream.html" target="ContentFrame"> - * `scala.collection.immutable.Stream`</a>. - * A more general class of examples are `TraversableViews`. - * - * If a collection is an instance of an ordered collection class, traversing - * its elements with `foreach` will always visit elements in the - * same order, even for different runs of the program. If the class is not - * ordered, `foreach` can visit elements in different orders for - * different runs (but it will keep the same order in the same run).' - * - * A typical example of a collection class which is not ordered is a - * `HashMap` of objects. The traversal order for hash maps will - * depend on the hash codes of its elements, and these hash codes might - * differ from one run to the next. By contrast, a `LinkedHashMap` - * is ordered because it's `foreach` method visits elements in the - * order they were inserted into the `HashMap`. - * - * @author Martin Odersky - * @version 2.8 - * @since 2.8 - * @tparam A the element type of the collection - * @tparam Repr the type of the actual collection containing the elements. - * - * @define Coll Traversable - * @define coll traversable collection - */ - trait TraversableLike[+A, +Repr] extends HasNewBuilder[A, Repr] - with FilterMonadic[A, Repr] - with TraversableOnce[A] - with GenTraversableLike[A, Repr] - with Parallelizable[A, ParIterable[A]] - { - self => - - import Traversable.breaks._ - - /** The type implementing this traversable */ - protected type Self = Repr - - /** The collection of type $coll underlying this `TraversableLike` object. - * By default this is implemented as the `TraversableLike` object itself, - * but this can be overridden. - */ - def repr: Repr = this.asInstanceOf[Repr] - - /** The underlying collection seen as an instance of `$Coll`. - * By default this is implemented as the current collection object itself, - * but this can be overridden. - */ - protected[this] def thisCollection: Traversable[A] = this.asInstanceOf[Traversable[A]] - - /** A conversion from collections of type `Repr` to `$Coll` objects. - * By default this is implemented as just a cast, but this can be overridden. - */ - protected[this] def toCollection(repr: Repr): Traversable[A] = repr.asInstanceOf[Traversable[A]] - - /** Creates a new builder for this collection type. - */ - protected[this] def newBuilder: Builder[A, Repr] - - protected[this] def parCombiner = ParIterable.newCombiner[A] - - /** Applies a function `f` to all elements of this $coll. - * - * Note: this method underlies the implementation of most other bulk operations. - * It's important to implement this method in an efficient way. - * - * - * @param f the function that is applied for its side-effect to every element. - * The result of function `f` is discarded. - * - * @tparam U the type parameter describing the result of function `f`. - * This result will always be ignored. Typically `U` is `Unit`, - * but this is not necessary. - * - * @usecase def foreach(f: A => Unit): Unit - */ - def foreach[U](f: A => U): Unit - - /** Tests whether this $coll is empty. - * - * @return `true` if the $coll contain no elements, `false` otherwise. - */ - def isEmpty: Boolean = { - var result = true - breakable { - for (x <- this) { - result = false - break - } - } - result - } - - /** Tests whether this $coll is known to have a finite size. - * All strict collections are known to have finite size. For a non-strict collection - * such as `Stream`, the predicate returns `true` if all elements have been computed. - * It returns `false` if the stream is not yet evaluated to the end. - * - * Note: many collection methods will not work on collections of infinite sizes. - * - * @return `true` if this collection is known to have finite size, `false` otherwise. - */ - def hasDefiniteSize = true - - def ++[B >: A, That](that: GenTraversableOnce[B])(implicit bf: CanBuildFrom[Repr, B, That]): That = { - val b = bf(repr) - if (that.isInstanceOf[IndexedSeqLike[_, _]]) b.sizeHint(this, that.seq.size) - b ++= thisCollection - b ++= that.seq - b.result - } - - @bridge - def ++[B >: A, That](that: TraversableOnce[B])(implicit bf: CanBuildFrom[Repr, B, That]): That = - ++(that: GenTraversableOnce[B])(bf) - - /** Concatenates this $coll with the elements of a traversable collection. - * It differs from ++ in that the right operand determines the type of the - * resulting collection rather than the left one. - * - * @param that the traversable to append. - * @tparam B the element type of the returned collection. - * @tparam That $thatinfo - * @param bf $bfinfo - * @return a new collection of type `That` which contains all elements - * of this $coll followed by all elements of `that`. - * - * @usecase def ++:[B](that: TraversableOnce[B]): $Coll[B] - * - * @return a new $coll which contains all elements of this $coll - * followed by all elements of `that`. - */ - def ++:[B >: A, That](that: TraversableOnce[B])(implicit bf: CanBuildFrom[Repr, B, That]): That = { - val b = bf(repr) - if (that.isInstanceOf[IndexedSeqLike[_, _]]) b.sizeHint(this, that.size) - b ++= that - b ++= thisCollection - b.result - } - - /** This overload exists because: for the implementation of ++: we should reuse - * that of ++ because many collections override it with more efficient versions. - * Since TraversableOnce has no '++' method, we have to implement that directly, - * but Traversable and down can use the overload. - */ - def ++:[B >: A, That](that: Traversable[B])(implicit bf: CanBuildFrom[Repr, B, That]): That = - (that ++ seq)(breakOut) - - def map[B, That](f: A => B)(implicit bf: CanBuildFrom[Repr, B, That]): That = { - val b = bf(repr) - b.sizeHint(this) - for (x <- this) b += f(x) - b.result - } - - def flatMap[B, That](f: A => GenTraversableOnce[B])(implicit bf: CanBuildFrom[Repr, B, That]): That = { - val b = bf(repr) - for (x <- this) b ++= f(x).seq - b.result - } - - /** Selects all elements of this $coll which satisfy a predicate. - * - * @param p the predicate used to test elements. - * @return a new $coll consisting of all elements of this $coll that satisfy the given - * predicate `p`. The order of the elements is preserved. - */ - def filter(p: A => Boolean): Repr = { - val b = newBuilder - for (x <- this) - if (p(x)) b += x - b.result - } - - /** Selects all elements of this $coll which do not satisfy a predicate. - * - * @param p the predicate used to test elements. - * @return a new $coll consisting of all elements of this $coll that do not satisfy the given - * predicate `p`. The order of the elements is preserved. - */ - def filterNot(p: A => Boolean): Repr = filter(!p(_)) - - def collect[B, That](pf: PartialFunction[A, B])(implicit bf: CanBuildFrom[Repr, B, That]): That = { - val b = bf(repr) - for (x <- this) if (pf.isDefinedAt(x)) b += pf(x) - b.result - } - - /** Builds a new collection by applying an option-valued function to all - * elements of this $coll on which the function is defined. - * - * @param f the option-valued function which filters and maps the $coll. - * @tparam B the element type of the returned collection. - * @tparam That $thatinfo - * @param bf $bfinfo - * @return a new collection of type `That` resulting from applying the option-valued function - * `f` to each element and collecting all defined results. - * The order of the elements is preserved. - * - * @usecase def filterMap[B](f: A => Option[B]): $Coll[B] - * - * @param pf the partial function which filters and maps the $coll. - * @return a new $coll resulting from applying the given option-valued function - * `f` to each element and collecting all defined results. - * The order of the elements is preserved. - def filterMap[B, That](f: A => Option[B])(implicit bf: CanBuildFrom[Repr, B, That]): That = { - val b = bf(repr) - for (x <- this) - f(x) match { - case Some(y) => b += y - case _ => - } - b.result - } - */ - - /** Partitions this $coll in two ${coll}s according to a predicate. - * - * @param p the predicate on which to partition. - * @return a pair of ${coll}s: the first $coll consists of all elements that - * satisfy the predicate `p` and the second $coll consists of all elements - * that don't. The relative order of the elements in the resulting ${coll}s - * is the same as in the original $coll. - */ - def partition(p: A => Boolean): (Repr, Repr) = { - val l, r = newBuilder - for (x <- this) (if (p(x)) l else r) += x - (l.result, r.result) - } - - def groupBy[K](f: A => K): immutable.Map[K, Repr] = { - val m = mutable.Map.empty[K, Builder[A, Repr]] - for (elem <- this) { - val key = f(elem) - val bldr = m.getOrElseUpdate(key, newBuilder) - bldr += elem - } - val b = immutable.Map.newBuilder[K, Repr] - for ((k, v) <- m) - b += ((k, v.result)) - - b.result - } - - /** Tests whether a predicate holds for all elements of this $coll. - * - * $mayNotTerminateInf - * - * @param p the predicate used to test elements. - * @return `true` if the given predicate `p` holds for all elements - * of this $coll, otherwise `false`. - */ - def forall(p: A => Boolean): Boolean = { - var result = true - breakable { - for (x <- this) - if (!p(x)) { result = false; break } - } - result - } - - /** Tests whether a predicate holds for some of the elements of this $coll. - * - * $mayNotTerminateInf - * - * @param p the predicate used to test elements. - * @return `true` if the given predicate `p` holds for some of the - * elements of this $coll, otherwise `false`. - */ - def exists(p: A => Boolean): Boolean = { - var result = false - breakable { - for (x <- this) - if (p(x)) { result = true; break } - } - result - } - - /** Finds the first element of the $coll satisfying a predicate, if any. - * - * $mayNotTerminateInf - * $orderDependent - * - * @param p the predicate used to test elements. - * @return an option value containing the first element in the $coll - * that satisfies `p`, or `None` if none exists. - */ - def find(p: A => Boolean): Option[A] = { - var result: Option[A] = None - breakable { - for (x <- this) - if (p(x)) { result = Some(x); break } - } - result - } - - def scan[B >: A, That](z: B)(op: (B, B) => B)(implicit cbf: CanBuildFrom[Repr, B, That]): That = scanLeft(z)(op) - - def scanLeft[B, That](z: B)(op: (B, A) => B)(implicit bf: CanBuildFrom[Repr, B, That]): That = { - val b = bf(repr) - b.sizeHint(this, 1) - var acc = z - b += acc - for (x <- this) { acc = op(acc, x); b += acc } - b.result - } - - @migration(2, 9, - "This scanRight definition has changed in 2.9.\n" + - "The previous behavior can be reproduced with scanRight.reverse." - ) - def scanRight[B, That](z: B)(op: (A, B) => B)(implicit bf: CanBuildFrom[Repr, B, That]): That = { - var scanned = List(z) - var acc = z - for (x <- reversed) { - acc = op(x, acc) - scanned ::= acc - } - val b = bf(repr) - for (elem <- scanned) b += elem - b.result - } - - /** Selects the first element of this $coll. - * $orderDependent - * @return the first element of this $coll. - * @throws `NoSuchElementException` if the $coll is empty. - */ - def head: A = { - var result: () => A = () => throw new NoSuchElementException - breakable { - for (x <- this) { - result = () => x - break - } - } - result() - } - - /** Optionally selects the first element. - * $orderDependent - * @return the first element of this $coll if it is nonempty, `None` if it is empty. - */ - def headOption: Option[A] = if (isEmpty) None else Some(head) - - /** Selects all elements except the first. - * $orderDependent - * @return a $coll consisting of all elements of this $coll - * except the first one. - * @throws `UnsupportedOperationException` if the $coll is empty. - */ - override def tail: Repr = { - if (isEmpty) throw new UnsupportedOperationException("empty.tail") - drop(1) - } - - /** Selects the last element. - * $orderDependent - * @return The last element of this $coll. - * @throws NoSuchElementException If the $coll is empty. - */ - def last: A = { - var lst = head - for (x <- this) - lst = x - lst - } - - /** Optionally selects the last element. - * $orderDependent - * @return the last element of this $coll$ if it is nonempty, `None` if it is empty. - */ - def lastOption: Option[A] = if (isEmpty) None else Some(last) - - /** Selects all elements except the last. - * $orderDependent - * @return a $coll consisting of all elements of this $coll - * except the last one. - * @throws `UnsupportedOperationException` if the $coll is empty. - */ - def init: Repr = { - if (isEmpty) throw new UnsupportedOperationException("empty.init") - var lst = head - var follow = false - val b = newBuilder - b.sizeHint(this, -1) - for (x <- this.seq) { - if (follow) b += lst - else follow = true - lst = x - } - b.result - } - - def take(n: Int): Repr = slice(0, n) - - def drop(n: Int): Repr = - if (n <= 0) { - val b = newBuilder - b.sizeHint(this) - b ++= thisCollection result - } - else sliceWithKnownDelta(n, Int.MaxValue, -n) - - def slice(from: Int, until: Int): Repr = sliceWithKnownBound(math.max(from, 0), until) - - // Precondition: from >= 0, until > 0, builder already configured for building. - private[this] def sliceInternal(from: Int, until: Int, b: Builder[A, Repr]): Repr = { - var i = 0 - breakable { - for (x <- this.seq) { - if (i >= from) b += x - i += 1 - if (i >= until) break - } - } - b.result - } - // Precondition: from >= 0 - private[scala] def sliceWithKnownDelta(from: Int, until: Int, delta: Int): Repr = { - val b = newBuilder - if (until <= from) b.result - else { - b.sizeHint(this, delta) - sliceInternal(from, until, b) - } - } - // Precondition: from >= 0 - private[scala] def sliceWithKnownBound(from: Int, until: Int): Repr = { - val b = newBuilder - if (until <= from) b.result - else { - b.sizeHintBounded(until - from, this) - sliceInternal(from, until, b) - } - } - - def takeWhile(p: A => Boolean): Repr = { - val b = newBuilder - breakable { - for (x <- this) { - if (!p(x)) break - b += x - } - } - b.result - } - - def dropWhile(p: A => Boolean): Repr = { - val b = newBuilder - var go = false - for (x <- this) { - if (!p(x)) go = true - if (go) b += x - } - b.result - } - - def span(p: A => Boolean): (Repr, Repr) = { - val l, r = newBuilder - var toLeft = true - for (x <- this) { - toLeft = toLeft && p(x) - (if (toLeft) l else r) += x - } - (l.result, r.result) - } - - def splitAt(n: Int): (Repr, Repr) = { - val l, r = newBuilder - l.sizeHintBounded(n, this) - if (n >= 0) r.sizeHint(this, -n) - var i = 0 - for (x <- this) { - (if (i < n) l else r) += x - i += 1 - } - (l.result, r.result) - } - - /** Iterates over the tails of this $coll. The first value will be this - * $coll and the final one will be an empty $coll, with the intervening - * values the results of successive applications of `tail`. - * - * @return an iterator over all the tails of this $coll - * @example `List(1,2,3).tails = Iterator(List(1,2,3), List(2,3), List(3), Nil)` - */ - def tails: Iterator[Repr] = iterateUntilEmpty(_.tail) - - /** Iterates over the inits of this $coll. The first value will be this - * $coll and the final one will be an empty $coll, with the intervening - * values the results of successive applications of `init`. - * - * @return an iterator over all the inits of this $coll - * @example `List(1,2,3).inits = Iterator(List(1,2,3), List(1,2), List(1), Nil)` - */ - def inits: Iterator[Repr] = iterateUntilEmpty(_.init) - - /** Copies elements of this $coll to an array. - * Fills the given array `xs` with at most `len` elements of - * this $coll, starting at position `start`. - * Copying will stop once either the end of the current $coll is reached, - * or the end of the array is reached, or `len` elements have been copied. - * - * $willNotTerminateInf - * - * @param xs the array to fill. - * @param start the starting index. - * @param len the maximal number of elements to copy. - * @tparam B the type of the elements of the array. - * - * - * @usecase def copyToArray(xs: Array[A], start: Int, len: Int): Unit - */ - def copyToArray[B >: A](xs: Array[B], start: Int, len: Int) { - var i = start - val end = (start + len) min xs.length - breakable { - for (x <- this) { - if (i >= end) break - xs(i) = x - i += 1 - } - } - } - - def toTraversable: Traversable[A] = thisCollection - def toIterator: Iterator[A] = toStream.iterator - def toStream: Stream[A] = toBuffer.toStream - - /** Converts this $coll to a string. - * - * @return a string representation of this collection. By default this - * string consists of the `stringPrefix` of this $coll, - * followed by all elements separated by commas and enclosed in parentheses. - */ - override def toString = mkString(stringPrefix + "(", ", ", ")") - - /** Defines the prefix of this object's `toString` representation. - * - * @return a string representation which starts the result of `toString` - * applied to this $coll. By default the string prefix is the - * simple name of the collection class $coll. - */ - def stringPrefix : String = { - var string = repr.asInstanceOf[AnyRef].getClass.getName - val idx1 = string.lastIndexOf('.' : Int) - if (idx1 != -1) string = string.substring(idx1 + 1) - val idx2 = string.indexOf('$') - if (idx2 != -1) string = string.substring(0, idx2) - string - } - - /** Creates a non-strict view of this $coll. - * - * @return a non-strict view of this $coll. - */ - def view = new TraversableView[A, Repr] { - protected lazy val underlying = self.repr - override def foreach[U](f: A => U) = self foreach f - } - - /** Creates a non-strict view of a slice of this $coll. - * - * Note: the difference between `view` and `slice` is that `view` produces - * a view of the current $coll, whereas `slice` produces a new $coll. - * - * Note: `view(from, to)` is equivalent to `view.slice(from, to)` - * $orderDependent - * - * @param from the index of the first element of the view - * @param until the index of the element following the view - * @return a non-strict view of a slice of this $coll, starting at index `from` - * and extending up to (but not including) index `until`. - */ - def view(from: Int, until: Int): TraversableView[A, Repr] = view.slice(from, until) - - /** Creates a non-strict filter of this $coll. - * - * Note: the difference between `c filter p` and `c withFilter p` is that - * the former creates a new collection, whereas the latter only - * restricts the domain of subsequent `map`, `flatMap`, `foreach`, - * and `withFilter` operations. - * $orderDependent - * - * @param p the predicate used to test elements. - * @return an object of class `WithFilter`, which supports - * `map`, `flatMap`, `foreach`, and `withFilter` operations. - * All these operations apply to those elements of this $coll which - * satisfy the predicate `p`. - */ - def withFilter(p: A => Boolean): FilterMonadic[A, Repr] = new WithFilter(p) - - /** A class supporting filtered operations. Instances of this class are - * returned by method `withFilter`. - */ - class WithFilter(p: A => Boolean) extends FilterMonadic[A, Repr] { - - /** Builds a new collection by applying a function to all elements of the - * outer $coll containing this `WithFilter` instance that satisfy predicate `p`. - * - * @param f the function to apply to each element. - * @tparam B the element type of the returned collection. - * @tparam That $thatinfo - * @param bf $bfinfo - * @return a new collection of type `That` resulting from applying - * the given function `f` to each element of the outer $coll - * that satisfies predicate `p` and collecting the results. - * - * @usecase def map[B](f: A => B): $Coll[B] - * - * @return a new $coll resulting from applying the given function - * `f` to each element of the outer $coll that satisfies - * predicate `p` and collecting the results. - */ - def map[B, That](f: A => B)(implicit bf: CanBuildFrom[Repr, B, That]): That = { - val b = bf(repr) - for (x <- self) - if (p(x)) b += f(x) - b.result - } - - /** Builds a new collection by applying a function to all elements of the - * outer $coll containing this `WithFilter` instance that satisfy - * predicate `p` and concatenating the results. - * - * @param f the function to apply to each element. - * @tparam B the element type of the returned collection. - * @tparam That $thatinfo - * @param bf $bfinfo - * @return a new collection of type `That` resulting from applying - * the given collection-valued function `f` to each element - * of the outer $coll that satisfies predicate `p` and - * concatenating the results. - * - * @usecase def flatMap[B](f: A => TraversableOnce[B]): $Coll[B] - * - * @return a new $coll resulting from applying the given collection-valued function - * `f` to each element of the outer $coll that satisfies predicate `p` and concatenating the results. - */ - def flatMap[B, That](f: A => GenTraversableOnce[B])(implicit bf: CanBuildFrom[Repr, B, That]): That = { - val b = bf(repr) - for (x <- self) - if (p(x)) b ++= f(x).seq - b.result - } - - /** Applies a function `f` to all elements of the outer $coll containing - * this `WithFilter` instance that satisfy predicate `p`. - * - * @param f the function that is applied for its side-effect to every element. - * The result of function `f` is discarded. - * - * @tparam U the type parameter describing the result of function `f`. - * This result will always be ignored. Typically `U` is `Unit`, - * but this is not necessary. - * - * @usecase def foreach(f: A => Unit): Unit - */ - def foreach[U](f: A => U): Unit = - for (x <- self) - if (p(x)) f(x) - - /** Further refines the filter for this $coll. - * - * @param q the predicate used to test elements. - * @return an object of class `WithFilter`, which supports - * `map`, `flatMap`, `foreach`, and `withFilter` operations. - * All these operations apply to those elements of this $coll which - * satisfy the predicate `q` in addition to the predicate `p`. - */ - def withFilter(q: A => Boolean): WithFilter = - new WithFilter(x => p(x) && q(x)) - } - - // A helper for tails and inits. - private def iterateUntilEmpty(f: Traversable[A @uV] => Traversable[A @uV]): Iterator[Repr] = { - val it = Iterator.iterate(thisCollection)(f) takeWhile (x => !x.isEmpty) - it ++ Iterator(Nil) map (newBuilder ++= _ result) - } - } - - -</textarea> -</form> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers: true, - matchBrackets: true, - theme: "ambiance", - mode: "text/x-scala" - }); - </script> - </article> diff --git a/assets/js/plugins/codemirror/mode/clojure/clojure.js b/assets/js/plugins/codemirror/mode/clojure/clojure.js deleted file mode 100644 index c334de73..00000000 --- a/assets/js/plugins/codemirror/mode/clojure/clojure.js +++ /dev/null @@ -1,243 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/** - * Author: Hans Engel - * Branched from CodeMirror's Scheme mode (by Koh Zi Han, based on implementation by Koh Zi Chun) - */ - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("clojure", function (options) { - var BUILTIN = "builtin", COMMENT = "comment", STRING = "string", CHARACTER = "string-2", - ATOM = "atom", NUMBER = "number", BRACKET = "bracket", KEYWORD = "keyword", VAR = "variable"; - var INDENT_WORD_SKIP = options.indentUnit || 2; - var NORMAL_INDENT_UNIT = options.indentUnit || 2; - - function makeKeywords(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - var atoms = makeKeywords("true false nil"); - - var keywords = makeKeywords( - "defn defn- def def- defonce defmulti defmethod defmacro defstruct deftype defprotocol defrecord defproject deftest slice defalias defhinted defmacro- defn-memo defnk defnk defonce- defunbound defunbound- defvar defvar- let letfn do case cond condp for loop recur when when-not when-let when-first if if-let if-not . .. -> ->> doto and or dosync doseq dotimes dorun doall load import unimport ns in-ns refer try catch finally throw with-open with-local-vars binding gen-class gen-and-load-class gen-and-save-class handler-case handle"); - - var builtins = makeKeywords( - "* *' *1 *2 *3 *agent* *allow-unresolved-vars* *assert* *clojure-version* *command-line-args* *compile-files* *compile-path* *compiler-options* *data-readers* *e *err* *file* *flush-on-newline* *fn-loader* *in* *math-context* *ns* *out* *print-dup* *print-length* *print-level* *print-meta* *print-readably* *read-eval* *source-path* *unchecked-math* *use-context-classloader* *verbose-defrecords* *warn-on-reflection* + +' - -' -> ->> ->ArrayChunk ->Vec ->VecNode ->VecSeq -cache-protocol-fn -reset-methods .. / < <= = == > >= EMPTY-NODE accessor aclone add-classpath add-watch agent agent-error agent-errors aget alength alias all-ns alter alter-meta! alter-var-root amap ancestors and apply areduce array-map aset aset-boolean aset-byte aset-char aset-double aset-float aset-int aset-long aset-short assert assoc assoc! assoc-in associative? atom await await-for await1 bases bean bigdec bigint biginteger binding bit-and bit-and-not bit-clear bit-flip bit-not bit-or bit-set bit-shift-left bit-shift-right bit-test bit-xor boolean boolean-array booleans bound-fn bound-fn* bound? butlast byte byte-array bytes case cast char char-array char-escape-string char-name-string char? chars chunk chunk-append chunk-buffer chunk-cons chunk-first chunk-next chunk-rest chunked-seq? class class? clear-agent-errors clojure-version coll? comment commute comp comparator compare compare-and-set! compile complement concat cond condp conj conj! cons constantly construct-proxy contains? count counted? create-ns create-struct cycle dec dec' decimal? declare default-data-readers definline definterface defmacro defmethod defmulti defn defn- defonce defprotocol defrecord defstruct deftype delay delay? deliver denominator deref derive descendants destructure disj disj! dissoc dissoc! distinct distinct? doall dorun doseq dosync dotimes doto double double-array doubles drop drop-last drop-while empty empty? ensure enumeration-seq error-handler error-mode eval even? every-pred every? ex-data ex-info extend extend-protocol extend-type extenders extends? false? ffirst file-seq filter filterv find find-keyword find-ns find-protocol-impl find-protocol-method find-var first flatten float float-array float? floats flush fn fn? fnext fnil for force format frequencies future future-call future-cancel future-cancelled? future-done? future? gen-class gen-interface gensym get get-in get-method get-proxy-class get-thread-bindings get-validator group-by hash hash-combine hash-map hash-set identical? identity if-let if-not ifn? import in-ns inc inc' init-proxy instance? int int-array integer? interleave intern interpose into into-array ints io! isa? iterate iterator-seq juxt keep keep-indexed key keys keyword keyword? last lazy-cat lazy-seq let letfn line-seq list list* list? load load-file load-reader load-string loaded-libs locking long long-array longs loop macroexpand macroexpand-1 make-array make-hierarchy map map-indexed map? mapcat mapv max max-key memfn memoize merge merge-with meta method-sig methods min min-key mod munge name namespace namespace-munge neg? newline next nfirst nil? nnext not not-any? not-empty not-every? not= ns ns-aliases ns-imports ns-interns ns-map ns-name ns-publics ns-refers ns-resolve ns-unalias ns-unmap nth nthnext nthrest num number? numerator object-array odd? or parents partial partition partition-all partition-by pcalls peek persistent! pmap pop pop! pop-thread-bindings pos? pr pr-str prefer-method prefers primitives-classnames print print-ctor print-dup print-method print-simple print-str printf println println-str prn prn-str promise proxy proxy-call-with-super proxy-mappings proxy-name proxy-super push-thread-bindings pvalues quot rand rand-int rand-nth range ratio? rational? rationalize re-find re-groups re-matcher re-matches re-pattern re-seq read read-line read-string realized? reduce reduce-kv reductions ref ref-history-count ref-max-history ref-min-history ref-set refer refer-clojure reify release-pending-sends rem remove remove-all-methods remove-method remove-ns remove-watch repeat repeatedly replace replicate require reset! reset-meta! resolve rest restart-agent resultset-seq reverse reversible? rseq rsubseq satisfies? second select-keys send send-off seq seq? seque sequence sequential? set set-error-handler! set-error-mode! set-validator! set? short short-array shorts shuffle shutdown-agents slurp some some-fn sort sort-by sorted-map sorted-map-by sorted-set sorted-set-by sorted? special-symbol? spit split-at split-with str string? struct struct-map subs subseq subvec supers swap! symbol symbol? sync take take-last take-nth take-while test the-ns thread-bound? time to-array to-array-2d trampoline transient tree-seq true? type unchecked-add unchecked-add-int unchecked-byte unchecked-char unchecked-dec unchecked-dec-int unchecked-divide-int unchecked-double unchecked-float unchecked-inc unchecked-inc-int unchecked-int unchecked-long unchecked-multiply unchecked-multiply-int unchecked-negate unchecked-negate-int unchecked-remainder-int unchecked-short unchecked-subtract unchecked-subtract-int underive unquote unquote-splicing update-in update-proxy use val vals var-get var-set var? vary-meta vec vector vector-of vector? when when-first when-let when-not while with-bindings with-bindings* with-in-str with-loading-context with-local-vars with-meta with-open with-out-str with-precision with-redefs with-redefs-fn xml-seq zero? zipmap *default-data-reader-fn* as-> cond-> cond->> reduced reduced? send-via set-agent-send-executor! set-agent-send-off-executor! some-> some->>"); - - var indentKeys = makeKeywords( - // Built-ins - "ns fn def defn defmethod bound-fn if if-not case condp when while when-not when-first do future comment doto locking proxy with-open with-precision reify deftype defrecord defprotocol extend extend-protocol extend-type try catch " + - - // Binding forms - "let letfn binding loop for doseq dotimes when-let if-let " + - - // Data structures - "defstruct struct-map assoc " + - - // clojure.test - "testing deftest " + - - // contrib - "handler-case handle dotrace deftrace"); - - var tests = { - digit: /\d/, - digit_or_colon: /[\d:]/, - hex: /[0-9a-f]/i, - sign: /[+-]/, - exponent: /e/i, - keyword_char: /[^\s\(\[\;\)\]]/, - symbol: /[\w*+!\-\._?:<>\/\xa1-\uffff]/ - }; - - function stateStack(indent, type, prev) { // represents a state stack object - this.indent = indent; - this.type = type; - this.prev = prev; - } - - function pushStack(state, indent, type) { - state.indentStack = new stateStack(indent, type, state.indentStack); - } - - function popStack(state) { - state.indentStack = state.indentStack.prev; - } - - function isNumber(ch, stream){ - // hex - if ( ch === '0' && stream.eat(/x/i) ) { - stream.eatWhile(tests.hex); - return true; - } - - // leading sign - if ( ( ch == '+' || ch == '-' ) && ( tests.digit.test(stream.peek()) ) ) { - stream.eat(tests.sign); - ch = stream.next(); - } - - if ( tests.digit.test(ch) ) { - stream.eat(ch); - stream.eatWhile(tests.digit); - - if ( '.' == stream.peek() ) { - stream.eat('.'); - stream.eatWhile(tests.digit); - } - - if ( stream.eat(tests.exponent) ) { - stream.eat(tests.sign); - stream.eatWhile(tests.digit); - } - - return true; - } - - return false; - } - - // Eat character that starts after backslash \ - function eatCharacter(stream) { - var first = stream.next(); - // Read special literals: backspace, newline, space, return. - // Just read all lowercase letters. - if (first && first.match(/[a-z]/) && stream.match(/[a-z]+/, true)) { - return; - } - // Read unicode character: \u1000 \uA0a1 - if (first === "u") { - stream.match(/[0-9a-z]{4}/i, true); - } - } - - return { - startState: function () { - return { - indentStack: null, - indentation: 0, - mode: false - }; - }, - - token: function (stream, state) { - if (state.indentStack == null && stream.sol()) { - // update indentation, but only if indentStack is empty - state.indentation = stream.indentation(); - } - - // skip spaces - if (stream.eatSpace()) { - return null; - } - var returnType = null; - - switch(state.mode){ - case "string": // multi-line string parsing mode - var next, escaped = false; - while ((next = stream.next()) != null) { - if (next == "\"" && !escaped) { - - state.mode = false; - break; - } - escaped = !escaped && next == "\\"; - } - returnType = STRING; // continue on in string mode - break; - default: // default parsing mode - var ch = stream.next(); - - if (ch == "\"") { - state.mode = "string"; - returnType = STRING; - } else if (ch == "\\") { - eatCharacter(stream); - returnType = CHARACTER; - } else if (ch == "'" && !( tests.digit_or_colon.test(stream.peek()) )) { - returnType = ATOM; - } else if (ch == ";") { // comment - stream.skipToEnd(); // rest of the line is a comment - returnType = COMMENT; - } else if (isNumber(ch,stream)){ - returnType = NUMBER; - } else if (ch == "(" || ch == "[" || ch == "{" ) { - var keyWord = '', indentTemp = stream.column(), letter; - /** - Either - (indent-word .. - (non-indent-word .. - (;something else, bracket, etc. - */ - - if (ch == "(") while ((letter = stream.eat(tests.keyword_char)) != null) { - keyWord += letter; - } - - if (keyWord.length > 0 && (indentKeys.propertyIsEnumerable(keyWord) || - /^(?:def|with)/.test(keyWord))) { // indent-word - pushStack(state, indentTemp + INDENT_WORD_SKIP, ch); - } else { // non-indent word - // we continue eating the spaces - stream.eatSpace(); - if (stream.eol() || stream.peek() == ";") { - // nothing significant after - // we restart indentation the user defined spaces after - pushStack(state, indentTemp + NORMAL_INDENT_UNIT, ch); - } else { - pushStack(state, indentTemp + stream.current().length, ch); // else we match - } - } - stream.backUp(stream.current().length - 1); // undo all the eating - - returnType = BRACKET; - } else if (ch == ")" || ch == "]" || ch == "}") { - returnType = BRACKET; - if (state.indentStack != null && state.indentStack.type == (ch == ")" ? "(" : (ch == "]" ? "[" :"{"))) { - popStack(state); - } - } else if ( ch == ":" ) { - stream.eatWhile(tests.symbol); - return ATOM; - } else { - stream.eatWhile(tests.symbol); - - if (keywords && keywords.propertyIsEnumerable(stream.current())) { - returnType = KEYWORD; - } else if (builtins && builtins.propertyIsEnumerable(stream.current())) { - returnType = BUILTIN; - } else if (atoms && atoms.propertyIsEnumerable(stream.current())) { - returnType = ATOM; - } else { - returnType = VAR; - } - } - } - - return returnType; - }, - - indent: function (state) { - if (state.indentStack == null) return state.indentation; - return state.indentStack.indent; - }, - - lineComment: ";;" - }; -}); - -CodeMirror.defineMIME("text/x-clojure", "clojure"); - -}); diff --git a/assets/js/plugins/codemirror/mode/clojure/index.html b/assets/js/plugins/codemirror/mode/clojure/index.html deleted file mode 100644 index 3ecf4c48..00000000 --- a/assets/js/plugins/codemirror/mode/clojure/index.html +++ /dev/null @@ -1,88 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Clojure mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="clojure.js"></script> -<style>.CodeMirror {background: #f8f8f8;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Clojure</a> - </ul> -</div> - -<article> -<h2>Clojure mode</h2> -<form><textarea id="code" name="code"> -; Conway's Game of Life, based on the work of: -;; Laurent Petit https://gist.github.com/1200343 -;; Christophe Grand http://clj-me.cgrand.net/2011/08/19/conways-game-of-life - -(ns ^{:doc "Conway's Game of Life."} - game-of-life) - -;; Core game of life's algorithm functions - -(defn neighbours - "Given a cell's coordinates, returns the coordinates of its neighbours." - [[x y]] - (for [dx [-1 0 1] dy (if (zero? dx) [-1 1] [-1 0 1])] - [(+ dx x) (+ dy y)])) - -(defn step - "Given a set of living cells, computes the new set of living cells." - [cells] - (set (for [[cell n] (frequencies (mapcat neighbours cells)) - :when (or (= n 3) (and (= n 2) (cells cell)))] - cell))) - -;; Utility methods for displaying game on a text terminal - -(defn print-board - "Prints a board on *out*, representing a step in the game." - [board w h] - (doseq [x (range (inc w)) y (range (inc h))] - (if (= y 0) (print "\n")) - (print (if (board [x y]) "[X]" " . ")))) - -(defn display-grids - "Prints a squence of boards on *out*, representing several steps." - [grids w h] - (doseq [board grids] - (print-board board w h) - (print "\n"))) - -;; Launches an example board - -(def - ^{:doc "board represents the initial set of living cells"} - board #{[2 1] [2 2] [2 3]}) - -(display-grids (take 3 (iterate step board)) 5 5) - -;; Let's play with characters -(println \1 \a \# \\ - \" \( \newline - \} \" \space - \tab \return \backspace - \u1000 \uAaAa \u9F9F) - -</textarea></form> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), {}); - </script> - - <p><strong>MIME types defined:</strong> <code>text/x-clojure</code>.</p> - - </article> diff --git a/assets/js/plugins/codemirror/mode/cobol/cobol.js b/assets/js/plugins/codemirror/mode/cobol/cobol.js deleted file mode 100644 index 897022b1..00000000 --- a/assets/js/plugins/codemirror/mode/cobol/cobol.js +++ /dev/null @@ -1,255 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/** - * Author: Gautam Mehta - * Branched from CodeMirror's Scheme mode - */ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("cobol", function () { - var BUILTIN = "builtin", COMMENT = "comment", STRING = "string", - ATOM = "atom", NUMBER = "number", KEYWORD = "keyword", MODTAG = "header", - COBOLLINENUM = "def", PERIOD = "link"; - function makeKeywords(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - var atoms = makeKeywords("TRUE FALSE ZEROES ZEROS ZERO SPACES SPACE LOW-VALUE LOW-VALUES "); - var keywords = makeKeywords( - "ACCEPT ACCESS ACQUIRE ADD ADDRESS " + - "ADVANCING AFTER ALIAS ALL ALPHABET " + - "ALPHABETIC ALPHABETIC-LOWER ALPHABETIC-UPPER ALPHANUMERIC ALPHANUMERIC-EDITED " + - "ALSO ALTER ALTERNATE AND ANY " + - "ARE AREA AREAS ARITHMETIC ASCENDING " + - "ASSIGN AT ATTRIBUTE AUTHOR AUTO " + - "AUTO-SKIP AUTOMATIC B-AND B-EXOR B-LESS " + - "B-NOT B-OR BACKGROUND-COLOR BACKGROUND-COLOUR BEEP " + - "BEFORE BELL BINARY BIT BITS " + - "BLANK BLINK BLOCK BOOLEAN BOTTOM " + - "BY CALL CANCEL CD CF " + - "CH CHARACTER CHARACTERS CLASS CLOCK-UNITS " + - "CLOSE COBOL CODE CODE-SET COL " + - "COLLATING COLUMN COMMA COMMIT COMMITMENT " + - "COMMON COMMUNICATION COMP COMP-0 COMP-1 " + - "COMP-2 COMP-3 COMP-4 COMP-5 COMP-6 " + - "COMP-7 COMP-8 COMP-9 COMPUTATIONAL COMPUTATIONAL-0 " + - "COMPUTATIONAL-1 COMPUTATIONAL-2 COMPUTATIONAL-3 COMPUTATIONAL-4 COMPUTATIONAL-5 " + - "COMPUTATIONAL-6 COMPUTATIONAL-7 COMPUTATIONAL-8 COMPUTATIONAL-9 COMPUTE " + - "CONFIGURATION CONNECT CONSOLE CONTAINED CONTAINS " + - "CONTENT CONTINUE CONTROL CONTROL-AREA CONTROLS " + - "CONVERTING COPY CORR CORRESPONDING COUNT " + - "CRT CRT-UNDER CURRENCY CURRENT CURSOR " + - "DATA DATE DATE-COMPILED DATE-WRITTEN DAY " + - "DAY-OF-WEEK DB DB-ACCESS-CONTROL-KEY DB-DATA-NAME DB-EXCEPTION " + - "DB-FORMAT-NAME DB-RECORD-NAME DB-SET-NAME DB-STATUS DBCS " + - "DBCS-EDITED DE DEBUG-CONTENTS DEBUG-ITEM DEBUG-LINE " + - "DEBUG-NAME DEBUG-SUB-1 DEBUG-SUB-2 DEBUG-SUB-3 DEBUGGING " + - "DECIMAL-POINT DECLARATIVES DEFAULT DELETE DELIMITED " + - "DELIMITER DEPENDING DESCENDING DESCRIBED DESTINATION " + - "DETAIL DISABLE DISCONNECT DISPLAY DISPLAY-1 " + - "DISPLAY-2 DISPLAY-3 DISPLAY-4 DISPLAY-5 DISPLAY-6 " + - "DISPLAY-7 DISPLAY-8 DISPLAY-9 DIVIDE DIVISION " + - "DOWN DROP DUPLICATE DUPLICATES DYNAMIC " + - "EBCDIC EGI EJECT ELSE EMI " + - "EMPTY EMPTY-CHECK ENABLE END END. END-ACCEPT END-ACCEPT. " + - "END-ADD END-CALL END-COMPUTE END-DELETE END-DISPLAY " + - "END-DIVIDE END-EVALUATE END-IF END-INVOKE END-MULTIPLY " + - "END-OF-PAGE END-PERFORM END-READ END-RECEIVE END-RETURN " + - "END-REWRITE END-SEARCH END-START END-STRING END-SUBTRACT " + - "END-UNSTRING END-WRITE END-XML ENTER ENTRY " + - "ENVIRONMENT EOP EQUAL EQUALS ERASE " + - "ERROR ESI EVALUATE EVERY EXCEEDS " + - "EXCEPTION EXCLUSIVE EXIT EXTEND EXTERNAL " + - "EXTERNALLY-DESCRIBED-KEY FD FETCH FILE FILE-CONTROL " + - "FILE-STREAM FILES FILLER FINAL FIND " + - "FINISH FIRST FOOTING FOR FOREGROUND-COLOR " + - "FOREGROUND-COLOUR FORMAT FREE FROM FULL " + - "FUNCTION GENERATE GET GIVING GLOBAL " + - "GO GOBACK GREATER GROUP HEADING " + - "HIGH-VALUE HIGH-VALUES HIGHLIGHT I-O I-O-CONTROL " + - "ID IDENTIFICATION IF IN INDEX " + - "INDEX-1 INDEX-2 INDEX-3 INDEX-4 INDEX-5 " + - "INDEX-6 INDEX-7 INDEX-8 INDEX-9 INDEXED " + - "INDIC INDICATE INDICATOR INDICATORS INITIAL " + - "INITIALIZE INITIATE INPUT INPUT-OUTPUT INSPECT " + - "INSTALLATION INTO INVALID INVOKE IS " + - "JUST JUSTIFIED KANJI KEEP KEY " + - "LABEL LAST LD LEADING LEFT " + - "LEFT-JUSTIFY LENGTH LENGTH-CHECK LESS LIBRARY " + - "LIKE LIMIT LIMITS LINAGE LINAGE-COUNTER " + - "LINE LINE-COUNTER LINES LINKAGE LOCAL-STORAGE " + - "LOCALE LOCALLY LOCK " + - "MEMBER MEMORY MERGE MESSAGE METACLASS " + - "MODE MODIFIED MODIFY MODULES MOVE " + - "MULTIPLE MULTIPLY NATIONAL NATIVE NEGATIVE " + - "NEXT NO NO-ECHO NONE NOT " + - "NULL NULL-KEY-MAP NULL-MAP NULLS NUMBER " + - "NUMERIC NUMERIC-EDITED OBJECT OBJECT-COMPUTER OCCURS " + - "OF OFF OMITTED ON ONLY " + - "OPEN OPTIONAL OR ORDER ORGANIZATION " + - "OTHER OUTPUT OVERFLOW OWNER PACKED-DECIMAL " + - "PADDING PAGE PAGE-COUNTER PARSE PERFORM " + - "PF PH PIC PICTURE PLUS " + - "POINTER POSITION POSITIVE PREFIX PRESENT " + - "PRINTING PRIOR PROCEDURE PROCEDURE-POINTER PROCEDURES " + - "PROCEED PROCESS PROCESSING PROGRAM PROGRAM-ID " + - "PROMPT PROTECTED PURGE QUEUE QUOTE " + - "QUOTES RANDOM RD READ READY " + - "REALM RECEIVE RECONNECT RECORD RECORD-NAME " + - "RECORDS RECURSIVE REDEFINES REEL REFERENCE " + - "REFERENCE-MONITOR REFERENCES RELATION RELATIVE RELEASE " + - "REMAINDER REMOVAL RENAMES REPEATED REPLACE " + - "REPLACING REPORT REPORTING REPORTS REPOSITORY " + - "REQUIRED RERUN RESERVE RESET RETAINING " + - "RETRIEVAL RETURN RETURN-CODE RETURNING REVERSE-VIDEO " + - "REVERSED REWIND REWRITE RF RH " + - "RIGHT RIGHT-JUSTIFY ROLLBACK ROLLING ROUNDED " + - "RUN SAME SCREEN SD SEARCH " + - "SECTION SECURE SECURITY SEGMENT SEGMENT-LIMIT " + - "SELECT SEND SENTENCE SEPARATE SEQUENCE " + - "SEQUENTIAL SET SHARED SIGN SIZE " + - "SKIP1 SKIP2 SKIP3 SORT SORT-MERGE " + - "SORT-RETURN SOURCE SOURCE-COMPUTER SPACE-FILL " + - "SPECIAL-NAMES STANDARD STANDARD-1 STANDARD-2 " + - "START STARTING STATUS STOP STORE " + - "STRING SUB-QUEUE-1 SUB-QUEUE-2 SUB-QUEUE-3 SUB-SCHEMA " + - "SUBFILE SUBSTITUTE SUBTRACT SUM SUPPRESS " + - "SYMBOLIC SYNC SYNCHRONIZED SYSIN SYSOUT " + - "TABLE TALLYING TAPE TENANT TERMINAL " + - "TERMINATE TEST TEXT THAN THEN " + - "THROUGH THRU TIME TIMES TITLE " + - "TO TOP TRAILING TRAILING-SIGN TRANSACTION " + - "TYPE TYPEDEF UNDERLINE UNEQUAL UNIT " + - "UNSTRING UNTIL UP UPDATE UPON " + - "USAGE USAGE-MODE USE USING VALID " + - "VALIDATE VALUE VALUES VARYING VLR " + - "WAIT WHEN WHEN-COMPILED WITH WITHIN " + - "WORDS WORKING-STORAGE WRITE XML XML-CODE " + - "XML-EVENT XML-NTEXT XML-TEXT ZERO ZERO-FILL " ); - - var builtins = makeKeywords("- * ** / + < <= = > >= "); - var tests = { - digit: /\d/, - digit_or_colon: /[\d:]/, - hex: /[0-9a-f]/i, - sign: /[+-]/, - exponent: /e/i, - keyword_char: /[^\s\(\[\;\)\]]/, - symbol: /[\w*+\-]/ - }; - function isNumber(ch, stream){ - // hex - if ( ch === '0' && stream.eat(/x/i) ) { - stream.eatWhile(tests.hex); - return true; - } - // leading sign - if ( ( ch == '+' || ch == '-' ) && ( tests.digit.test(stream.peek()) ) ) { - stream.eat(tests.sign); - ch = stream.next(); - } - if ( tests.digit.test(ch) ) { - stream.eat(ch); - stream.eatWhile(tests.digit); - if ( '.' == stream.peek()) { - stream.eat('.'); - stream.eatWhile(tests.digit); - } - if ( stream.eat(tests.exponent) ) { - stream.eat(tests.sign); - stream.eatWhile(tests.digit); - } - return true; - } - return false; - } - return { - startState: function () { - return { - indentStack: null, - indentation: 0, - mode: false - }; - }, - token: function (stream, state) { - if (state.indentStack == null && stream.sol()) { - // update indentation, but only if indentStack is empty - state.indentation = 6 ; //stream.indentation(); - } - // skip spaces - if (stream.eatSpace()) { - return null; - } - var returnType = null; - switch(state.mode){ - case "string": // multi-line string parsing mode - var next = false; - while ((next = stream.next()) != null) { - if (next == "\"" || next == "\'") { - state.mode = false; - break; - } - } - returnType = STRING; // continue on in string mode - break; - default: // default parsing mode - var ch = stream.next(); - var col = stream.column(); - if (col >= 0 && col <= 5) { - returnType = COBOLLINENUM; - } else if (col >= 72 && col <= 79) { - stream.skipToEnd(); - returnType = MODTAG; - } else if (ch == "*" && col == 6) { // comment - stream.skipToEnd(); // rest of the line is a comment - returnType = COMMENT; - } else if (ch == "\"" || ch == "\'") { - state.mode = "string"; - returnType = STRING; - } else if (ch == "'" && !( tests.digit_or_colon.test(stream.peek()) )) { - returnType = ATOM; - } else if (ch == ".") { - returnType = PERIOD; - } else if (isNumber(ch,stream)){ - returnType = NUMBER; - } else { - if (stream.current().match(tests.symbol)) { - while (col < 71) { - if (stream.eat(tests.symbol) === undefined) { - break; - } else { - col++; - } - } - } - if (keywords && keywords.propertyIsEnumerable(stream.current().toUpperCase())) { - returnType = KEYWORD; - } else if (builtins && builtins.propertyIsEnumerable(stream.current().toUpperCase())) { - returnType = BUILTIN; - } else if (atoms && atoms.propertyIsEnumerable(stream.current().toUpperCase())) { - returnType = ATOM; - } else returnType = null; - } - } - return returnType; - }, - indent: function (state) { - if (state.indentStack == null) return state.indentation; - return state.indentStack.indent; - } - }; -}); - -CodeMirror.defineMIME("text/x-cobol", "cobol"); - -}); diff --git a/assets/js/plugins/codemirror/mode/cobol/index.html b/assets/js/plugins/codemirror/mode/cobol/index.html deleted file mode 100644 index 4352419a..00000000 --- a/assets/js/plugins/codemirror/mode/cobol/index.html +++ /dev/null @@ -1,210 +0,0 @@ -<!doctype html> - -<title>CodeMirror: COBOL mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<link rel="stylesheet" href="../../theme/neat.css"> -<link rel="stylesheet" href="../../theme/elegant.css"> -<link rel="stylesheet" href="../../theme/erlang-dark.css"> -<link rel="stylesheet" href="../../theme/night.css"> -<link rel="stylesheet" href="../../theme/monokai.css"> -<link rel="stylesheet" href="../../theme/cobalt.css"> -<link rel="stylesheet" href="../../theme/eclipse.css"> -<link rel="stylesheet" href="../../theme/rubyblue.css"> -<link rel="stylesheet" href="../../theme/lesser-dark.css"> -<link rel="stylesheet" href="../../theme/xq-dark.css"> -<link rel="stylesheet" href="../../theme/xq-light.css"> -<link rel="stylesheet" href="../../theme/ambiance.css"> -<link rel="stylesheet" href="../../theme/blackboard.css"> -<link rel="stylesheet" href="../../theme/vibrant-ink.css"> -<link rel="stylesheet" href="../../theme/solarized.css"> -<link rel="stylesheet" href="../../theme/twilight.css"> -<link rel="stylesheet" href="../../theme/midnight.css"> -<link rel="stylesheet" href="../../addon/dialog/dialog.css"> -<script src="../../lib/codemirror.js"></script> -<script src="../../addon/edit/matchbrackets.js"></script> -<script src="cobol.js"></script> -<script src="../../addon/selection/active-line.js"></script> -<script src="../../addon/search/search.js"></script> -<script src="../../addon/dialog/dialog.js"></script> -<script src="../../addon/search/searchcursor.js"></script> -<style> - .CodeMirror { - border: 1px solid #eee; - font-size : 20px; - height : auto !important; - } - .CodeMirror-activeline-background {background: #555555 !important;} - </style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">COBOL</a> - </ul> -</div> - -<article> -<h2>COBOL mode</h2> - - <p> Select Theme <select onchange="selectTheme()" id="selectTheme"> - <option>default</option> - <option>ambiance</option> - <option>blackboard</option> - <option>cobalt</option> - <option>eclipse</option> - <option>elegant</option> - <option>erlang-dark</option> - <option>lesser-dark</option> - <option>midnight</option> - <option>monokai</option> - <option>neat</option> - <option>night</option> - <option>rubyblue</option> - <option>solarized dark</option> - <option>solarized light</option> - <option selected>twilight</option> - <option>vibrant-ink</option> - <option>xq-dark</option> - <option>xq-light</option> - </select> Select Font Size <select onchange="selectFontsize()" id="selectFontSize"> - <option value="13px">13px</option> - <option value="14px">14px</option> - <option value="16px">16px</option> - <option value="18px">18px</option> - <option value="20px" selected="selected">20px</option> - <option value="24px">24px</option> - <option value="26px">26px</option> - <option value="28px">28px</option> - <option value="30px">30px</option> - <option value="32px">32px</option> - <option value="34px">34px</option> - <option value="36px">36px</option> - </select> -<label for="checkBoxReadOnly">Read-only</label> -<input type="checkbox" id="checkBoxReadOnly" onchange="selectReadOnly()"> -<label for="id_tabToIndentSpace">Insert Spaces on Tab</label> -<input type="checkbox" id="id_tabToIndentSpace" onchange="tabToIndentSpace()"> -</p> -<textarea id="code" name="code"> ----------1---------2---------3---------4---------5---------6---------7---------8 -12345678911234567892123456789312345678941234567895123456789612345678971234567898 -000010 IDENTIFICATION DIVISION. MODTGHERE -000020 PROGRAM-ID. SAMPLE. -000030 AUTHOR. TEST SAM. -000040 DATE-WRITTEN. 5 February 2013 -000041 -000042* A sample program just to show the form. -000043* The program copies its input to the output, -000044* and counts the number of records. -000045* At the end this number is printed. -000046 -000050 ENVIRONMENT DIVISION. -000060 INPUT-OUTPUT SECTION. -000070 FILE-CONTROL. -000080 SELECT STUDENT-FILE ASSIGN TO SYSIN -000090 ORGANIZATION IS LINE SEQUENTIAL. -000100 SELECT PRINT-FILE ASSIGN TO SYSOUT -000110 ORGANIZATION IS LINE SEQUENTIAL. -000120 -000130 DATA DIVISION. -000140 FILE SECTION. -000150 FD STUDENT-FILE -000160 RECORD CONTAINS 43 CHARACTERS -000170 DATA RECORD IS STUDENT-IN. -000180 01 STUDENT-IN PIC X(43). -000190 -000200 FD PRINT-FILE -000210 RECORD CONTAINS 80 CHARACTERS -000220 DATA RECORD IS PRINT-LINE. -000230 01 PRINT-LINE PIC X(80). -000240 -000250 WORKING-STORAGE SECTION. -000260 01 DATA-REMAINS-SWITCH PIC X(2) VALUE SPACES. -000261 01 RECORDS-WRITTEN PIC 99. -000270 -000280 01 DETAIL-LINE. -000290 05 FILLER PIC X(7) VALUE SPACES. -000300 05 RECORD-IMAGE PIC X(43). -000310 05 FILLER PIC X(30) VALUE SPACES. -000311 -000312 01 SUMMARY-LINE. -000313 05 FILLER PIC X(7) VALUE SPACES. -000314 05 TOTAL-READ PIC 99. -000315 05 FILLER PIC X VALUE SPACE. -000316 05 FILLER PIC X(17) -000317 VALUE 'Records were read'. -000318 05 FILLER PIC X(53) VALUE SPACES. -000319 -000320 PROCEDURE DIVISION. -000321 -000330 PREPARE-SENIOR-REPORT. -000340 OPEN INPUT STUDENT-FILE -000350 OUTPUT PRINT-FILE. -000351 MOVE ZERO TO RECORDS-WRITTEN. -000360 READ STUDENT-FILE -000370 AT END MOVE 'NO' TO DATA-REMAINS-SWITCH -000380 END-READ. -000390 PERFORM PROCESS-RECORDS -000410 UNTIL DATA-REMAINS-SWITCH = 'NO'. -000411 PERFORM PRINT-SUMMARY. -000420 CLOSE STUDENT-FILE -000430 PRINT-FILE. -000440 STOP RUN. -000450 -000460 PROCESS-RECORDS. -000470 MOVE STUDENT-IN TO RECORD-IMAGE. -000480 MOVE DETAIL-LINE TO PRINT-LINE. -000490 WRITE PRINT-LINE. -000500 ADD 1 TO RECORDS-WRITTEN. -000510 READ STUDENT-FILE -000520 AT END MOVE 'NO' TO DATA-REMAINS-SWITCH -000530 END-READ. -000540 -000550 PRINT-SUMMARY. -000560 MOVE RECORDS-WRITTEN TO TOTAL-READ. -000570 MOVE SUMMARY-LINE TO PRINT-LINE. -000571 WRITE PRINT-LINE. -000572 -000580 -</textarea> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers: true, - matchBrackets: true, - mode: "text/x-cobol", - theme : "twilight", - styleActiveLine: true, - showCursorWhenSelecting : true, - }); - function selectTheme() { - var themeInput = document.getElementById("selectTheme"); - var theme = themeInput.options[themeInput.selectedIndex].innerHTML; - editor.setOption("theme", theme); - } - function selectFontsize() { - var fontSizeInput = document.getElementById("selectFontSize"); - var fontSize = fontSizeInput.options[fontSizeInput.selectedIndex].innerHTML; - editor.getWrapperElement().style.fontSize = fontSize; - editor.refresh(); - } - function selectReadOnly() { - editor.setOption("readOnly", document.getElementById("checkBoxReadOnly").checked); - } - function tabToIndentSpace() { - if (document.getElementById("id_tabToIndentSpace").checked) { - editor.setOption("extraKeys", {Tab: function(cm) { cm.replaceSelection(" ", "end"); }}); - } else { - editor.setOption("extraKeys", {Tab: function(cm) { cm.replaceSelection(" ", "end"); }}); - } - } - </script> - </article> diff --git a/assets/js/plugins/codemirror/mode/coffeescript/coffeescript.js b/assets/js/plugins/codemirror/mode/coffeescript/coffeescript.js deleted file mode 100644 index ae460e02..00000000 --- a/assets/js/plugins/codemirror/mode/coffeescript/coffeescript.js +++ /dev/null @@ -1,369 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/** - * Link to the project's GitHub page: - * https://github.com/pickhardt/coffeescript-codemirror-mode - */ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("coffeescript", function(conf) { - var ERRORCLASS = "error"; - - function wordRegexp(words) { - return new RegExp("^((" + words.join(")|(") + "))\\b"); - } - - var operators = /^(?:->|=>|\+[+=]?|-[\-=]?|\*[\*=]?|\/[\/=]?|[=!]=|<[><]?=?|>>?=?|%=?|&=?|\|=?|\^=?|\~|!|\?|(or|and|\|\||&&|\?)=)/; - var delimiters = /^(?:[()\[\]{},:`=;]|\.\.?\.?)/; - var identifiers = /^[_A-Za-z$][_A-Za-z$0-9]*/; - var properties = /^(@|this\.)[_A-Za-z$][_A-Za-z$0-9]*/; - - var wordOperators = wordRegexp(["and", "or", "not", - "is", "isnt", "in", - "instanceof", "typeof"]); - var indentKeywords = ["for", "while", "loop", "if", "unless", "else", - "switch", "try", "catch", "finally", "class"]; - var commonKeywords = ["break", "by", "continue", "debugger", "delete", - "do", "in", "of", "new", "return", "then", - "this", "@", "throw", "when", "until", "extends"]; - - var keywords = wordRegexp(indentKeywords.concat(commonKeywords)); - - indentKeywords = wordRegexp(indentKeywords); - - - var stringPrefixes = /^('{3}|\"{3}|['\"])/; - var regexPrefixes = /^(\/{3}|\/)/; - var commonConstants = ["Infinity", "NaN", "undefined", "null", "true", "false", "on", "off", "yes", "no"]; - var constants = wordRegexp(commonConstants); - - // Tokenizers - function tokenBase(stream, state) { - // Handle scope changes - if (stream.sol()) { - if (state.scope.align === null) state.scope.align = false; - var scopeOffset = state.scope.offset; - if (stream.eatSpace()) { - var lineOffset = stream.indentation(); - if (lineOffset > scopeOffset && state.scope.type == "coffee") { - return "indent"; - } else if (lineOffset < scopeOffset) { - return "dedent"; - } - return null; - } else { - if (scopeOffset > 0) { - dedent(stream, state); - } - } - } - if (stream.eatSpace()) { - return null; - } - - var ch = stream.peek(); - - // Handle docco title comment (single line) - if (stream.match("####")) { - stream.skipToEnd(); - return "comment"; - } - - // Handle multi line comments - if (stream.match("###")) { - state.tokenize = longComment; - return state.tokenize(stream, state); - } - - // Single line comment - if (ch === "#") { - stream.skipToEnd(); - return "comment"; - } - - // Handle number literals - if (stream.match(/^-?[0-9\.]/, false)) { - var floatLiteral = false; - // Floats - if (stream.match(/^-?\d*\.\d+(e[\+\-]?\d+)?/i)) { - floatLiteral = true; - } - if (stream.match(/^-?\d+\.\d*/)) { - floatLiteral = true; - } - if (stream.match(/^-?\.\d+/)) { - floatLiteral = true; - } - - if (floatLiteral) { - // prevent from getting extra . on 1.. - if (stream.peek() == "."){ - stream.backUp(1); - } - return "number"; - } - // Integers - var intLiteral = false; - // Hex - if (stream.match(/^-?0x[0-9a-f]+/i)) { - intLiteral = true; - } - // Decimal - if (stream.match(/^-?[1-9]\d*(e[\+\-]?\d+)?/)) { - intLiteral = true; - } - // Zero by itself with no other piece of number. - if (stream.match(/^-?0(?![\dx])/i)) { - intLiteral = true; - } - if (intLiteral) { - return "number"; - } - } - - // Handle strings - if (stream.match(stringPrefixes)) { - state.tokenize = tokenFactory(stream.current(), false, "string"); - return state.tokenize(stream, state); - } - // Handle regex literals - if (stream.match(regexPrefixes)) { - if (stream.current() != "/" || stream.match(/^.*\//, false)) { // prevent highlight of division - state.tokenize = tokenFactory(stream.current(), true, "string-2"); - return state.tokenize(stream, state); - } else { - stream.backUp(1); - } - } - - // Handle operators and delimiters - if (stream.match(operators) || stream.match(wordOperators)) { - return "operator"; - } - if (stream.match(delimiters)) { - return "punctuation"; - } - - if (stream.match(constants)) { - return "atom"; - } - - if (stream.match(keywords)) { - return "keyword"; - } - - if (stream.match(identifiers)) { - return "variable"; - } - - if (stream.match(properties)) { - return "property"; - } - - // Handle non-detected items - stream.next(); - return ERRORCLASS; - } - - function tokenFactory(delimiter, singleline, outclass) { - return function(stream, state) { - while (!stream.eol()) { - stream.eatWhile(/[^'"\/\\]/); - if (stream.eat("\\")) { - stream.next(); - if (singleline && stream.eol()) { - return outclass; - } - } else if (stream.match(delimiter)) { - state.tokenize = tokenBase; - return outclass; - } else { - stream.eat(/['"\/]/); - } - } - if (singleline) { - if (conf.mode.singleLineStringErrors) { - outclass = ERRORCLASS; - } else { - state.tokenize = tokenBase; - } - } - return outclass; - }; - } - - function longComment(stream, state) { - while (!stream.eol()) { - stream.eatWhile(/[^#]/); - if (stream.match("###")) { - state.tokenize = tokenBase; - break; - } - stream.eatWhile("#"); - } - return "comment"; - } - - function indent(stream, state, type) { - type = type || "coffee"; - var offset = 0, align = false, alignOffset = null; - for (var scope = state.scope; scope; scope = scope.prev) { - if (scope.type === "coffee" || scope.type == "}") { - offset = scope.offset + conf.indentUnit; - break; - } - } - if (type !== "coffee") { - align = null; - alignOffset = stream.column() + stream.current().length; - } else if (state.scope.align) { - state.scope.align = false; - } - state.scope = { - offset: offset, - type: type, - prev: state.scope, - align: align, - alignOffset: alignOffset - }; - } - - function dedent(stream, state) { - if (!state.scope.prev) return; - if (state.scope.type === "coffee") { - var _indent = stream.indentation(); - var matched = false; - for (var scope = state.scope; scope; scope = scope.prev) { - if (_indent === scope.offset) { - matched = true; - break; - } - } - if (!matched) { - return true; - } - while (state.scope.prev && state.scope.offset !== _indent) { - state.scope = state.scope.prev; - } - return false; - } else { - state.scope = state.scope.prev; - return false; - } - } - - function tokenLexer(stream, state) { - var style = state.tokenize(stream, state); - var current = stream.current(); - - // Handle "." connected identifiers - if (current === ".") { - style = state.tokenize(stream, state); - current = stream.current(); - if (/^\.[\w$]+$/.test(current)) { - return "variable"; - } else { - return ERRORCLASS; - } - } - - // Handle scope changes. - if (current === "return") { - state.dedent = true; - } - if (((current === "->" || current === "=>") && - !state.lambda && - !stream.peek()) - || style === "indent") { - indent(stream, state); - } - var delimiter_index = "[({".indexOf(current); - if (delimiter_index !== -1) { - indent(stream, state, "])}".slice(delimiter_index, delimiter_index+1)); - } - if (indentKeywords.exec(current)){ - indent(stream, state); - } - if (current == "then"){ - dedent(stream, state); - } - - - if (style === "dedent") { - if (dedent(stream, state)) { - return ERRORCLASS; - } - } - delimiter_index = "])}".indexOf(current); - if (delimiter_index !== -1) { - while (state.scope.type == "coffee" && state.scope.prev) - state.scope = state.scope.prev; - if (state.scope.type == current) - state.scope = state.scope.prev; - } - if (state.dedent && stream.eol()) { - if (state.scope.type == "coffee" && state.scope.prev) - state.scope = state.scope.prev; - state.dedent = false; - } - - return style; - } - - var external = { - startState: function(basecolumn) { - return { - tokenize: tokenBase, - scope: {offset:basecolumn || 0, type:"coffee", prev: null, align: false}, - lastToken: null, - lambda: false, - dedent: 0 - }; - }, - - token: function(stream, state) { - var fillAlign = state.scope.align === null && state.scope; - if (fillAlign && stream.sol()) fillAlign.align = false; - - var style = tokenLexer(stream, state); - if (fillAlign && style && style != "comment") fillAlign.align = true; - - state.lastToken = {style:style, content: stream.current()}; - - if (stream.eol() && stream.lambda) { - state.lambda = false; - } - - return style; - }, - - indent: function(state, text) { - if (state.tokenize != tokenBase) return 0; - var scope = state.scope; - var closer = text && "])}".indexOf(text.charAt(0)) > -1; - if (closer) while (scope.type == "coffee" && scope.prev) scope = scope.prev; - var closes = closer && scope.type === text.charAt(0); - if (scope.align) - return scope.alignOffset - (closes ? 1 : 0); - else - return (closes ? scope.prev : scope).offset; - }, - - lineComment: "#", - fold: "indent" - }; - return external; -}); - -CodeMirror.defineMIME("text/x-coffeescript", "coffeescript"); - -}); diff --git a/assets/js/plugins/codemirror/mode/coffeescript/index.html b/assets/js/plugins/codemirror/mode/coffeescript/index.html deleted file mode 100644 index 93a5f4f3..00000000 --- a/assets/js/plugins/codemirror/mode/coffeescript/index.html +++ /dev/null @@ -1,740 +0,0 @@ -<!doctype html> - -<title>CodeMirror: CoffeeScript mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="coffeescript.js"></script> -<style>.CodeMirror {border-top: 1px solid silver; border-bottom: 1px solid silver;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">CoffeeScript</a> - </ul> -</div> - -<article> -<h2>CoffeeScript mode</h2> -<form><textarea id="code" name="code"> -# CoffeeScript mode for CodeMirror -# Copyright (c) 2011 Jeff Pickhardt, released under -# the MIT License. -# -# Modified from the Python CodeMirror mode, which also is -# under the MIT License Copyright (c) 2010 Timothy Farrell. -# -# The following script, Underscore.coffee, is used to -# demonstrate CoffeeScript mode for CodeMirror. -# -# To download CoffeeScript mode for CodeMirror, go to: -# https://github.com/pickhardt/coffeescript-codemirror-mode - -# **Underscore.coffee -# (c) 2011 Jeremy Ashkenas, DocumentCloud Inc.** -# Underscore is freely distributable under the terms of the -# [MIT license](http://en.wikipedia.org/wiki/MIT_License). -# Portions of Underscore are inspired by or borrowed from -# [Prototype.js](http://prototypejs.org/api), Oliver Steele's -# [Functional](http://osteele.com), and John Resig's -# [Micro-Templating](http://ejohn.org). -# For all details and documentation: -# http://documentcloud.github.com/underscore/ - - -# Baseline setup -# -------------- - -# Establish the root object, `window` in the browser, or `global` on the server. -root = this - - -# Save the previous value of the `_` variable. -previousUnderscore = root._ - -### Multiline - comment -### - -# Establish the object that gets thrown to break out of a loop iteration. -# `StopIteration` is SOP on Mozilla. -breaker = if typeof(StopIteration) is 'undefined' then '__break__' else StopIteration - - -#### Docco style single line comment (title) - - -# Helper function to escape **RegExp** contents, because JS doesn't have one. -escapeRegExp = (string) -> string.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1') - - -# Save bytes in the minified (but not gzipped) version: -ArrayProto = Array.prototype -ObjProto = Object.prototype - - -# Create quick reference variables for speed access to core prototypes. -slice = ArrayProto.slice -unshift = ArrayProto.unshift -toString = ObjProto.toString -hasOwnProperty = ObjProto.hasOwnProperty -propertyIsEnumerable = ObjProto.propertyIsEnumerable - - -# All **ECMA5** native implementations we hope to use are declared here. -nativeForEach = ArrayProto.forEach -nativeMap = ArrayProto.map -nativeReduce = ArrayProto.reduce -nativeReduceRight = ArrayProto.reduceRight -nativeFilter = ArrayProto.filter -nativeEvery = ArrayProto.every -nativeSome = ArrayProto.some -nativeIndexOf = ArrayProto.indexOf -nativeLastIndexOf = ArrayProto.lastIndexOf -nativeIsArray = Array.isArray -nativeKeys = Object.keys - - -# Create a safe reference to the Underscore object for use below. -_ = (obj) -> new wrapper(obj) - - -# Export the Underscore object for **CommonJS**. -if typeof(exports) != 'undefined' then exports._ = _ - - -# Export Underscore to global scope. -root._ = _ - - -# Current version. -_.VERSION = '1.1.0' - - -# Collection Functions -# -------------------- - -# The cornerstone, an **each** implementation. -# Handles objects implementing **forEach**, arrays, and raw objects. -_.each = (obj, iterator, context) -> - try - if nativeForEach and obj.forEach is nativeForEach - obj.forEach iterator, context - else if _.isNumber obj.length - iterator.call context, obj[i], i, obj for i in [0...obj.length] - else - iterator.call context, val, key, obj for own key, val of obj - catch e - throw e if e isnt breaker - obj - - -# Return the results of applying the iterator to each element. Use JavaScript -# 1.6's version of **map**, if possible. -_.map = (obj, iterator, context) -> - return obj.map(iterator, context) if nativeMap and obj.map is nativeMap - results = [] - _.each obj, (value, index, list) -> - results.push iterator.call context, value, index, list - results - - -# **Reduce** builds up a single result from a list of values. Also known as -# **inject**, or **foldl**. Uses JavaScript 1.8's version of **reduce**, if possible. -_.reduce = (obj, iterator, memo, context) -> - if nativeReduce and obj.reduce is nativeReduce - iterator = _.bind iterator, context if context - return obj.reduce iterator, memo - _.each obj, (value, index, list) -> - memo = iterator.call context, memo, value, index, list - memo - - -# The right-associative version of **reduce**, also known as **foldr**. Uses -# JavaScript 1.8's version of **reduceRight**, if available. -_.reduceRight = (obj, iterator, memo, context) -> - if nativeReduceRight and obj.reduceRight is nativeReduceRight - iterator = _.bind iterator, context if context - return obj.reduceRight iterator, memo - reversed = _.clone(_.toArray(obj)).reverse() - _.reduce reversed, iterator, memo, context - - -# Return the first value which passes a truth test. -_.detect = (obj, iterator, context) -> - result = null - _.each obj, (value, index, list) -> - if iterator.call context, value, index, list - result = value - _.breakLoop() - result - - -# Return all the elements that pass a truth test. Use JavaScript 1.6's -# **filter**, if it exists. -_.filter = (obj, iterator, context) -> - return obj.filter iterator, context if nativeFilter and obj.filter is nativeFilter - results = [] - _.each obj, (value, index, list) -> - results.push value if iterator.call context, value, index, list - results - - -# Return all the elements for which a truth test fails. -_.reject = (obj, iterator, context) -> - results = [] - _.each obj, (value, index, list) -> - results.push value if not iterator.call context, value, index, list - results - - -# Determine whether all of the elements match a truth test. Delegate to -# JavaScript 1.6's **every**, if it is present. -_.every = (obj, iterator, context) -> - iterator ||= _.identity - return obj.every iterator, context if nativeEvery and obj.every is nativeEvery - result = true - _.each obj, (value, index, list) -> - _.breakLoop() unless (result = result and iterator.call(context, value, index, list)) - result - - -# Determine if at least one element in the object matches a truth test. Use -# JavaScript 1.6's **some**, if it exists. -_.some = (obj, iterator, context) -> - iterator ||= _.identity - return obj.some iterator, context if nativeSome and obj.some is nativeSome - result = false - _.each obj, (value, index, list) -> - _.breakLoop() if (result = iterator.call(context, value, index, list)) - result - - -# Determine if a given value is included in the array or object, -# based on `===`. -_.include = (obj, target) -> - return _.indexOf(obj, target) isnt -1 if nativeIndexOf and obj.indexOf is nativeIndexOf - return true for own key, val of obj when val is target - false - - -# Invoke a method with arguments on every item in a collection. -_.invoke = (obj, method) -> - args = _.rest arguments, 2 - (if method then val[method] else val).apply(val, args) for val in obj - - -# Convenience version of a common use case of **map**: fetching a property. -_.pluck = (obj, key) -> - _.map(obj, (val) -> val[key]) - - -# Return the maximum item or (item-based computation). -_.max = (obj, iterator, context) -> - return Math.max.apply(Math, obj) if not iterator and _.isArray(obj) - result = computed: -Infinity - _.each obj, (value, index, list) -> - computed = if iterator then iterator.call(context, value, index, list) else value - computed >= result.computed and (result = {value: value, computed: computed}) - result.value - - -# Return the minimum element (or element-based computation). -_.min = (obj, iterator, context) -> - return Math.min.apply(Math, obj) if not iterator and _.isArray(obj) - result = computed: Infinity - _.each obj, (value, index, list) -> - computed = if iterator then iterator.call(context, value, index, list) else value - computed < result.computed and (result = {value: value, computed: computed}) - result.value - - -# Sort the object's values by a criterion produced by an iterator. -_.sortBy = (obj, iterator, context) -> - _.pluck(((_.map obj, (value, index, list) -> - {value: value, criteria: iterator.call(context, value, index, list)} - ).sort((left, right) -> - a = left.criteria; b = right.criteria - if a < b then -1 else if a > b then 1 else 0 - )), 'value') - - -# Use a comparator function to figure out at what index an object should -# be inserted so as to maintain order. Uses binary search. -_.sortedIndex = (array, obj, iterator) -> - iterator ||= _.identity - low = 0 - high = array.length - while low < high - mid = (low + high) >> 1 - if iterator(array[mid]) < iterator(obj) then low = mid + 1 else high = mid - low - - -# Convert anything iterable into a real, live array. -_.toArray = (iterable) -> - return [] if (!iterable) - return iterable.toArray() if (iterable.toArray) - return iterable if (_.isArray(iterable)) - return slice.call(iterable) if (_.isArguments(iterable)) - _.values(iterable) - - -# Return the number of elements in an object. -_.size = (obj) -> _.toArray(obj).length - - -# Array Functions -# --------------- - -# Get the first element of an array. Passing `n` will return the first N -# values in the array. Aliased as **head**. The `guard` check allows it to work -# with **map**. -_.first = (array, n, guard) -> - if n and not guard then slice.call(array, 0, n) else array[0] - - -# Returns everything but the first entry of the array. Aliased as **tail**. -# Especially useful on the arguments object. Passing an `index` will return -# the rest of the values in the array from that index onward. The `guard` -# check allows it to work with **map**. -_.rest = (array, index, guard) -> - slice.call(array, if _.isUndefined(index) or guard then 1 else index) - - -# Get the last element of an array. -_.last = (array) -> array[array.length - 1] - - -# Trim out all falsy values from an array. -_.compact = (array) -> item for item in array when item - - -# Return a completely flattened version of an array. -_.flatten = (array) -> - _.reduce array, (memo, value) -> - return memo.concat(_.flatten(value)) if _.isArray value - memo.push value - memo - , [] - - -# Return a version of the array that does not contain the specified value(s). -_.without = (array) -> - values = _.rest arguments - val for val in _.toArray(array) when not _.include values, val - - -# Produce a duplicate-free version of the array. If the array has already -# been sorted, you have the option of using a faster algorithm. -_.uniq = (array, isSorted) -> - memo = [] - for el, i in _.toArray array - memo.push el if i is 0 || (if isSorted is true then _.last(memo) isnt el else not _.include(memo, el)) - memo - - -# Produce an array that contains every item shared between all the -# passed-in arrays. -_.intersect = (array) -> - rest = _.rest arguments - _.select _.uniq(array), (item) -> - _.all rest, (other) -> - _.indexOf(other, item) >= 0 - - -# Zip together multiple lists into a single array -- elements that share -# an index go together. -_.zip = -> - length = _.max _.pluck arguments, 'length' - results = new Array length - for i in [0...length] - results[i] = _.pluck arguments, String i - results - - -# If the browser doesn't supply us with **indexOf** (I'm looking at you, MSIE), -# we need this function. Return the position of the first occurrence of an -# item in an array, or -1 if the item is not included in the array. -_.indexOf = (array, item) -> - return array.indexOf item if nativeIndexOf and array.indexOf is nativeIndexOf - i = 0; l = array.length - while l - i - if array[i] is item then return i else i++ - -1 - - -# Provide JavaScript 1.6's **lastIndexOf**, delegating to the native function, -# if possible. -_.lastIndexOf = (array, item) -> - return array.lastIndexOf(item) if nativeLastIndexOf and array.lastIndexOf is nativeLastIndexOf - i = array.length - while i - if array[i] is item then return i else i-- - -1 - - -# Generate an integer Array containing an arithmetic progression. A port of -# [the native Python **range** function](http://docs.python.org/library/functions.html#range). -_.range = (start, stop, step) -> - a = arguments - solo = a.length <= 1 - i = start = if solo then 0 else a[0] - stop = if solo then a[0] else a[1] - step = a[2] or 1 - len = Math.ceil((stop - start) / step) - return [] if len <= 0 - range = new Array len - idx = 0 - loop - return range if (if step > 0 then i - stop else stop - i) >= 0 - range[idx] = i - idx++ - i+= step - - -# Function Functions -# ------------------ - -# Create a function bound to a given object (assigning `this`, and arguments, -# optionally). Binding with arguments is also known as **curry**. -_.bind = (func, obj) -> - args = _.rest arguments, 2 - -> func.apply obj or root, args.concat arguments - - -# Bind all of an object's methods to that object. Useful for ensuring that -# all callbacks defined on an object belong to it. -_.bindAll = (obj) -> - funcs = if arguments.length > 1 then _.rest(arguments) else _.functions(obj) - _.each funcs, (f) -> obj[f] = _.bind obj[f], obj - obj - - -# Delays a function for the given number of milliseconds, and then calls -# it with the arguments supplied. -_.delay = (func, wait) -> - args = _.rest arguments, 2 - setTimeout((-> func.apply(func, args)), wait) - - -# Memoize an expensive function by storing its results. -_.memoize = (func, hasher) -> - memo = {} - hasher or= _.identity - -> - key = hasher.apply this, arguments - return memo[key] if key of memo - memo[key] = func.apply this, arguments - - -# Defers a function, scheduling it to run after the current call stack has -# cleared. -_.defer = (func) -> - _.delay.apply _, [func, 1].concat _.rest arguments - - -# Returns the first function passed as an argument to the second, -# allowing you to adjust arguments, run code before and after, and -# conditionally execute the original function. -_.wrap = (func, wrapper) -> - -> wrapper.apply wrapper, [func].concat arguments - - -# Returns a function that is the composition of a list of functions, each -# consuming the return value of the function that follows. -_.compose = -> - funcs = arguments - -> - args = arguments - for i in [funcs.length - 1..0] by -1 - args = [funcs[i].apply(this, args)] - args[0] - - -# Object Functions -# ---------------- - -# Retrieve the names of an object's properties. -_.keys = nativeKeys or (obj) -> - return _.range 0, obj.length if _.isArray(obj) - key for key, val of obj - - -# Retrieve the values of an object's properties. -_.values = (obj) -> - _.map obj, _.identity - - -# Return a sorted list of the function names available in Underscore. -_.functions = (obj) -> - _.filter(_.keys(obj), (key) -> _.isFunction(obj[key])).sort() - - -# Extend a given object with all of the properties in a source object. -_.extend = (obj) -> - for source in _.rest(arguments) - obj[key] = val for key, val of source - obj - - -# Create a (shallow-cloned) duplicate of an object. -_.clone = (obj) -> - return obj.slice 0 if _.isArray obj - _.extend {}, obj - - -# Invokes interceptor with the obj, and then returns obj. -# The primary purpose of this method is to "tap into" a method chain, -# in order to perform operations on intermediate results within - the chain. -_.tap = (obj, interceptor) -> - interceptor obj - obj - - -# Perform a deep comparison to check if two objects are equal. -_.isEqual = (a, b) -> - # Check object identity. - return true if a is b - # Different types? - atype = typeof(a); btype = typeof(b) - return false if atype isnt btype - # Basic equality test (watch out for coercions). - return true if `a == b` - # One is falsy and the other truthy. - return false if (!a and b) or (a and !b) - # One of them implements an `isEqual()`? - return a.isEqual(b) if a.isEqual - # Check dates' integer values. - return a.getTime() is b.getTime() if _.isDate(a) and _.isDate(b) - # Both are NaN? - return false if _.isNaN(a) and _.isNaN(b) - # Compare regular expressions. - if _.isRegExp(a) and _.isRegExp(b) - return a.source is b.source and - a.global is b.global and - a.ignoreCase is b.ignoreCase and - a.multiline is b.multiline - # If a is not an object by this point, we can't handle it. - return false if atype isnt 'object' - # Check for different array lengths before comparing contents. - return false if a.length and (a.length isnt b.length) - # Nothing else worked, deep compare the contents. - aKeys = _.keys(a); bKeys = _.keys(b) - # Different object sizes? - return false if aKeys.length isnt bKeys.length - # Recursive comparison of contents. - return false for key, val of a when !(key of b) or !_.isEqual(val, b[key]) - true - - -# Is a given array or object empty? -_.isEmpty = (obj) -> - return obj.length is 0 if _.isArray(obj) or _.isString(obj) - return false for own key of obj - true - - -# Is a given value a DOM element? -_.isElement = (obj) -> obj and obj.nodeType is 1 - - -# Is a given value an array? -_.isArray = nativeIsArray or (obj) -> !!(obj and obj.concat and obj.unshift and not obj.callee) - - -# Is a given variable an arguments object? -_.isArguments = (obj) -> obj and obj.callee - - -# Is the given value a function? -_.isFunction = (obj) -> !!(obj and obj.constructor and obj.call and obj.apply) - - -# Is the given value a string? -_.isString = (obj) -> !!(obj is '' or (obj and obj.charCodeAt and obj.substr)) - - -# Is a given value a number? -_.isNumber = (obj) -> (obj is +obj) or toString.call(obj) is '[object Number]' - - -# Is a given value a boolean? -_.isBoolean = (obj) -> obj is true or obj is false - - -# Is a given value a Date? -_.isDate = (obj) -> !!(obj and obj.getTimezoneOffset and obj.setUTCFullYear) - - -# Is the given value a regular expression? -_.isRegExp = (obj) -> !!(obj and obj.exec and (obj.ignoreCase or obj.ignoreCase is false)) - - -# Is the given value NaN -- this one is interesting. `NaN != NaN`, and -# `isNaN(undefined) == true`, so we make sure it's a number first. -_.isNaN = (obj) -> _.isNumber(obj) and window.isNaN(obj) - - -# Is a given value equal to null? -_.isNull = (obj) -> obj is null - - -# Is a given variable undefined? -_.isUndefined = (obj) -> typeof obj is 'undefined' - - -# Utility Functions -# ----------------- - -# Run Underscore.js in noConflict mode, returning the `_` variable to its -# previous owner. Returns a reference to the Underscore object. -_.noConflict = -> - root._ = previousUnderscore - this - - -# Keep the identity function around for default iterators. -_.identity = (value) -> value - - -# Run a function `n` times. -_.times = (n, iterator, context) -> - iterator.call context, i for i in [0...n] - - -# Break out of the middle of an iteration. -_.breakLoop = -> throw breaker - - -# Add your own custom functions to the Underscore object, ensuring that -# they're correctly added to the OOP wrapper as well. -_.mixin = (obj) -> - for name in _.functions(obj) - addToWrapper name, _[name] = obj[name] - - -# Generate a unique integer id (unique within the entire client session). -# Useful for temporary DOM ids. -idCounter = 0 -_.uniqueId = (prefix) -> - (prefix or '') + idCounter++ - - -# By default, Underscore uses **ERB**-style template delimiters, change the -# following template settings to use alternative delimiters. -_.templateSettings = { - start: '<%' - end: '%>' - interpolate: /<%=(.+?)%>/g -} - - -# JavaScript templating a-la **ERB**, pilfered from John Resig's -# *Secrets of the JavaScript Ninja*, page 83. -# Single-quote fix from Rick Strahl. -# With alterations for arbitrary delimiters, and to preserve whitespace. -_.template = (str, data) -> - c = _.templateSettings - endMatch = new RegExp("'(?=[^"+c.end.substr(0, 1)+"]*"+escapeRegExp(c.end)+")","g") - fn = new Function 'obj', - 'var p=[],print=function(){p.push.apply(p,arguments);};' + - 'with(obj||{}){p.push(\'' + - str.replace(/\r/g, '\\r') - .replace(/\n/g, '\\n') - .replace(/\t/g, '\\t') - .replace(endMatch,"���") - .split("'").join("\\'") - .split("���").join("'") - .replace(c.interpolate, "',$1,'") - .split(c.start).join("');") - .split(c.end).join("p.push('") + - "');}return p.join('');" - if data then fn(data) else fn - - -# Aliases -# ------- - -_.forEach = _.each -_.foldl = _.inject = _.reduce -_.foldr = _.reduceRight -_.select = _.filter -_.all = _.every -_.any = _.some -_.contains = _.include -_.head = _.first -_.tail = _.rest -_.methods = _.functions - - -# Setup the OOP Wrapper -# --------------------- - -# If Underscore is called as a function, it returns a wrapped object that -# can be used OO-style. This wrapper holds altered versions of all the -# underscore functions. Wrapped objects may be chained. -wrapper = (obj) -> - this._wrapped = obj - this - - -# Helper function to continue chaining intermediate results. -result = (obj, chain) -> - if chain then _(obj).chain() else obj - - -# A method to easily add functions to the OOP wrapper. -addToWrapper = (name, func) -> - wrapper.prototype[name] = -> - args = _.toArray arguments - unshift.call args, this._wrapped - result func.apply(_, args), this._chain - - -# Add all ofthe Underscore functions to the wrapper object. -_.mixin _ - - -# Add all mutator Array functions to the wrapper. -_.each ['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], (name) -> - method = Array.prototype[name] - wrapper.prototype[name] = -> - method.apply(this._wrapped, arguments) - result(this._wrapped, this._chain) - - -# Add all accessor Array functions to the wrapper. -_.each ['concat', 'join', 'slice'], (name) -> - method = Array.prototype[name] - wrapper.prototype[name] = -> - result(method.apply(this._wrapped, arguments), this._chain) - - -# Start chaining a wrapped Underscore object. -wrapper::chain = -> - this._chain = true - this - - -# Extracts the result from a wrapped and chained object. -wrapper::value = -> this._wrapped -</textarea></form> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), {}); - </script> - - <p><strong>MIME types defined:</strong> <code>text/x-coffeescript</code>.</p> - - <p>The CoffeeScript mode was written by Jeff Pickhardt.</p> - - </article> diff --git a/assets/js/plugins/codemirror/mode/commonlisp/commonlisp.js b/assets/js/plugins/codemirror/mode/commonlisp/commonlisp.js deleted file mode 100644 index 8878e26f..00000000 --- a/assets/js/plugins/codemirror/mode/commonlisp/commonlisp.js +++ /dev/null @@ -1,120 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("commonlisp", function (config) { - var assumeBody = /^with|^def|^do|^prog|case$|^cond$|bind$|when$|unless$/; - var numLiteral = /^(?:[+\-]?(?:\d+|\d*\.\d+)(?:[efd][+\-]?\d+)?|[+\-]?\d+(?:\/[+\-]?\d+)?|#b[+\-]?[01]+|#o[+\-]?[0-7]+|#x[+\-]?[\da-f]+)/; - var symbol = /[^\s'`,@()\[\]";]/; - var type; - - function readSym(stream) { - var ch; - while (ch = stream.next()) { - if (ch == "\\") stream.next(); - else if (!symbol.test(ch)) { stream.backUp(1); break; } - } - return stream.current(); - } - - function base(stream, state) { - if (stream.eatSpace()) {type = "ws"; return null;} - if (stream.match(numLiteral)) return "number"; - var ch = stream.next(); - if (ch == "\\") ch = stream.next(); - - if (ch == '"') return (state.tokenize = inString)(stream, state); - else if (ch == "(") { type = "open"; return "bracket"; } - else if (ch == ")" || ch == "]") { type = "close"; return "bracket"; } - else if (ch == ";") { stream.skipToEnd(); type = "ws"; return "comment"; } - else if (/['`,@]/.test(ch)) return null; - else if (ch == "|") { - if (stream.skipTo("|")) { stream.next(); return "symbol"; } - else { stream.skipToEnd(); return "error"; } - } else if (ch == "#") { - var ch = stream.next(); - if (ch == "[") { type = "open"; return "bracket"; } - else if (/[+\-=\.']/.test(ch)) return null; - else if (/\d/.test(ch) && stream.match(/^\d*#/)) return null; - else if (ch == "|") return (state.tokenize = inComment)(stream, state); - else if (ch == ":") { readSym(stream); return "meta"; } - else return "error"; - } else { - var name = readSym(stream); - if (name == ".") return null; - type = "symbol"; - if (name == "nil" || name == "t") return "atom"; - if (name.charAt(0) == ":") return "keyword"; - if (name.charAt(0) == "&") return "variable-2"; - return "variable"; - } - } - - function inString(stream, state) { - var escaped = false, next; - while (next = stream.next()) { - if (next == '"' && !escaped) { state.tokenize = base; break; } - escaped = !escaped && next == "\\"; - } - return "string"; - } - - function inComment(stream, state) { - var next, last; - while (next = stream.next()) { - if (next == "#" && last == "|") { state.tokenize = base; break; } - last = next; - } - type = "ws"; - return "comment"; - } - - return { - startState: function () { - return {ctx: {prev: null, start: 0, indentTo: 0}, tokenize: base}; - }, - - token: function (stream, state) { - if (stream.sol() && typeof state.ctx.indentTo != "number") - state.ctx.indentTo = state.ctx.start + 1; - - type = null; - var style = state.tokenize(stream, state); - if (type != "ws") { - if (state.ctx.indentTo == null) { - if (type == "symbol" && assumeBody.test(stream.current())) - state.ctx.indentTo = state.ctx.start + config.indentUnit; - else - state.ctx.indentTo = "next"; - } else if (state.ctx.indentTo == "next") { - state.ctx.indentTo = stream.column(); - } - } - if (type == "open") state.ctx = {prev: state.ctx, start: stream.column(), indentTo: null}; - else if (type == "close") state.ctx = state.ctx.prev || state.ctx; - return style; - }, - - indent: function (state, _textAfter) { - var i = state.ctx.indentTo; - return typeof i == "number" ? i : state.ctx.start + 1; - }, - - lineComment: ";;", - blockCommentStart: "#|", - blockCommentEnd: "|#" - }; -}); - -CodeMirror.defineMIME("text/x-common-lisp", "commonlisp"); - -}); diff --git a/assets/js/plugins/codemirror/mode/commonlisp/index.html b/assets/js/plugins/codemirror/mode/commonlisp/index.html deleted file mode 100644 index f2bf4522..00000000 --- a/assets/js/plugins/codemirror/mode/commonlisp/index.html +++ /dev/null @@ -1,177 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Common Lisp mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="commonlisp.js"></script> -<style>.CodeMirror {background: #f8f8f8;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Common Lisp</a> - </ul> -</div> - -<article> -<h2>Common Lisp mode</h2> -<form><textarea id="code" name="code">(in-package :cl-postgres) - -;; These are used to synthesize reader and writer names for integer -;; reading/writing functions when the amount of bytes and the -;; signedness is known. Both the macro that creates the functions and -;; some macros that use them create names this way. -(eval-when (:compile-toplevel :load-toplevel :execute) - (defun integer-reader-name (bytes signed) - (intern (with-standard-io-syntax - (format nil "~a~a~a~a" '#:read- (if signed "" '#:u) '#:int bytes)))) - (defun integer-writer-name (bytes signed) - (intern (with-standard-io-syntax - (format nil "~a~a~a~a" '#:write- (if signed "" '#:u) '#:int bytes))))) - -(defmacro integer-reader (bytes) - "Create a function to read integers from a binary stream." - (let ((bits (* bytes 8))) - (labels ((return-form (signed) - (if signed - `(if (logbitp ,(1- bits) result) - (dpb result (byte ,(1- bits) 0) -1) - result) - `result)) - (generate-reader (signed) - `(defun ,(integer-reader-name bytes signed) (socket) - (declare (type stream socket) - #.*optimize*) - ,(if (= bytes 1) - `(let ((result (the (unsigned-byte 8) (read-byte socket)))) - (declare (type (unsigned-byte 8) result)) - ,(return-form signed)) - `(let ((result 0)) - (declare (type (unsigned-byte ,bits) result)) - ,@(loop :for byte :from (1- bytes) :downto 0 - :collect `(setf (ldb (byte 8 ,(* 8 byte)) result) - (the (unsigned-byte 8) (read-byte socket)))) - ,(return-form signed)))))) - `(progn -;; This causes weird errors on SBCL in some circumstances. Disabled for now. -;; (declaim (inline ,(integer-reader-name bytes t) -;; ,(integer-reader-name bytes nil))) - (declaim (ftype (function (t) (signed-byte ,bits)) - ,(integer-reader-name bytes t))) - ,(generate-reader t) - (declaim (ftype (function (t) (unsigned-byte ,bits)) - ,(integer-reader-name bytes nil))) - ,(generate-reader nil))))) - -(defmacro integer-writer (bytes) - "Create a function to write integers to a binary stream." - (let ((bits (* 8 bytes))) - `(progn - (declaim (inline ,(integer-writer-name bytes t) - ,(integer-writer-name bytes nil))) - (defun ,(integer-writer-name bytes nil) (socket value) - (declare (type stream socket) - (type (unsigned-byte ,bits) value) - #.*optimize*) - ,@(if (= bytes 1) - `((write-byte value socket)) - (loop :for byte :from (1- bytes) :downto 0 - :collect `(write-byte (ldb (byte 8 ,(* byte 8)) value) - socket))) - (values)) - (defun ,(integer-writer-name bytes t) (socket value) - (declare (type stream socket) - (type (signed-byte ,bits) value) - #.*optimize*) - ,@(if (= bytes 1) - `((write-byte (ldb (byte 8 0) value) socket)) - (loop :for byte :from (1- bytes) :downto 0 - :collect `(write-byte (ldb (byte 8 ,(* byte 8)) value) - socket))) - (values))))) - -;; All the instances of the above that we need. - -(integer-reader 1) -(integer-reader 2) -(integer-reader 4) -(integer-reader 8) - -(integer-writer 1) -(integer-writer 2) -(integer-writer 4) - -(defun write-bytes (socket bytes) - "Write a byte-array to a stream." - (declare (type stream socket) - (type (simple-array (unsigned-byte 8)) bytes) - #.*optimize*) - (write-sequence bytes socket)) - -(defun write-str (socket string) - "Write a null-terminated string to a stream \(encoding it when UTF-8 -support is enabled.)." - (declare (type stream socket) - (type string string) - #.*optimize*) - (enc-write-string string socket) - (write-uint1 socket 0)) - -(declaim (ftype (function (t unsigned-byte) - (simple-array (unsigned-byte 8) (*))) - read-bytes)) -(defun read-bytes (socket length) - "Read a byte array of the given length from a stream." - (declare (type stream socket) - (type fixnum length) - #.*optimize*) - (let ((result (make-array length :element-type '(unsigned-byte 8)))) - (read-sequence result socket) - result)) - -(declaim (ftype (function (t) string) read-str)) -(defun read-str (socket) - "Read a null-terminated string from a stream. Takes care of encoding -when UTF-8 support is enabled." - (declare (type stream socket) - #.*optimize*) - (enc-read-string socket :null-terminated t)) - -(defun skip-bytes (socket length) - "Skip a given number of bytes in a binary stream." - (declare (type stream socket) - (type (unsigned-byte 32) length) - #.*optimize*) - (dotimes (i length) - (read-byte socket))) - -(defun skip-str (socket) - "Skip a null-terminated string." - (declare (type stream socket) - #.*optimize*) - (loop :for char :of-type fixnum = (read-byte socket) - :until (zerop char))) - -(defun ensure-socket-is-closed (socket &amp;key abort) - (when (open-stream-p socket) - (handler-case - (close socket :abort abort) - (error (error) - (warn "Ignoring the error which happened while trying to close PostgreSQL socket: ~A" error))))) -</textarea></form> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), {lineNumbers: true}); - </script> - - <p><strong>MIME types defined:</strong> <code>text/x-common-lisp</code>.</p> - - </article> diff --git a/assets/js/plugins/codemirror/mode/css/css.js b/assets/js/plugins/codemirror/mode/css/css.js deleted file mode 100644 index 2695d081..00000000 --- a/assets/js/plugins/codemirror/mode/css/css.js +++ /dev/null @@ -1,717 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("css", function(config, parserConfig) { - if (!parserConfig.propertyKeywords) parserConfig = CodeMirror.resolveMode("text/css"); - - var indentUnit = config.indentUnit, - tokenHooks = parserConfig.tokenHooks, - mediaTypes = parserConfig.mediaTypes || {}, - mediaFeatures = parserConfig.mediaFeatures || {}, - propertyKeywords = parserConfig.propertyKeywords || {}, - nonStandardPropertyKeywords = parserConfig.nonStandardPropertyKeywords || {}, - colorKeywords = parserConfig.colorKeywords || {}, - valueKeywords = parserConfig.valueKeywords || {}, - fontProperties = parserConfig.fontProperties || {}, - allowNested = parserConfig.allowNested; - - var type, override; - function ret(style, tp) { type = tp; return style; } - - // Tokenizers - - function tokenBase(stream, state) { - var ch = stream.next(); - if (tokenHooks[ch]) { - var result = tokenHooks[ch](stream, state); - if (result !== false) return result; - } - if (ch == "@") { - stream.eatWhile(/[\w\\\-]/); - return ret("def", stream.current()); - } else if (ch == "=" || (ch == "~" || ch == "|") && stream.eat("=")) { - return ret(null, "compare"); - } else if (ch == "\"" || ch == "'") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } else if (ch == "#") { - stream.eatWhile(/[\w\\\-]/); - return ret("atom", "hash"); - } else if (ch == "!") { - stream.match(/^\s*\w*/); - return ret("keyword", "important"); - } else if (/\d/.test(ch) || ch == "." && stream.eat(/\d/)) { - stream.eatWhile(/[\w.%]/); - return ret("number", "unit"); - } else if (ch === "-") { - if (/[\d.]/.test(stream.peek())) { - stream.eatWhile(/[\w.%]/); - return ret("number", "unit"); - } else if (stream.match(/^\w+-/)) { - return ret("meta", "meta"); - } - } else if (/[,+>*\/]/.test(ch)) { - return ret(null, "select-op"); - } else if (ch == "." && stream.match(/^-?[_a-z][_a-z0-9-]*/i)) { - return ret("qualifier", "qualifier"); - } else if (/[:;{}\[\]\(\)]/.test(ch)) { - return ret(null, ch); - } else if (ch == "u" && stream.match("rl(")) { - stream.backUp(1); - state.tokenize = tokenParenthesized; - return ret("property", "word"); - } else if (/[\w\\\-]/.test(ch)) { - stream.eatWhile(/[\w\\\-]/); - return ret("property", "word"); - } else { - return ret(null, null); - } - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == quote && !escaped) { - if (quote == ")") stream.backUp(1); - break; - } - escaped = !escaped && ch == "\\"; - } - if (ch == quote || !escaped && quote != ")") state.tokenize = null; - return ret("string", "string"); - }; - } - - function tokenParenthesized(stream, state) { - stream.next(); // Must be '(' - if (!stream.match(/\s*[\"\')]/, false)) - state.tokenize = tokenString(")"); - else - state.tokenize = null; - return ret(null, "("); - } - - // Context management - - function Context(type, indent, prev) { - this.type = type; - this.indent = indent; - this.prev = prev; - } - - function pushContext(state, stream, type) { - state.context = new Context(type, stream.indentation() + indentUnit, state.context); - return type; - } - - function popContext(state) { - state.context = state.context.prev; - return state.context.type; - } - - function pass(type, stream, state) { - return states[state.context.type](type, stream, state); - } - function popAndPass(type, stream, state, n) { - for (var i = n || 1; i > 0; i--) - state.context = state.context.prev; - return pass(type, stream, state); - } - - // Parser - - function wordAsValue(stream) { - var word = stream.current().toLowerCase(); - if (valueKeywords.hasOwnProperty(word)) - override = "atom"; - else if (colorKeywords.hasOwnProperty(word)) - override = "keyword"; - else - override = "variable"; - } - - var states = {}; - - states.top = function(type, stream, state) { - if (type == "{") { - return pushContext(state, stream, "block"); - } else if (type == "}" && state.context.prev) { - return popContext(state); - } else if (type == "@media") { - return pushContext(state, stream, "media"); - } else if (type == "@font-face") { - return "font_face_before"; - } else if (/^@(-(moz|ms|o|webkit)-)?keyframes$/.test(type)) { - return "keyframes"; - } else if (type && type.charAt(0) == "@") { - return pushContext(state, stream, "at"); - } else if (type == "hash") { - override = "builtin"; - } else if (type == "word") { - override = "tag"; - } else if (type == "variable-definition") { - return "maybeprop"; - } else if (type == "interpolation") { - return pushContext(state, stream, "interpolation"); - } else if (type == ":") { - return "pseudo"; - } else if (allowNested && type == "(") { - return pushContext(state, stream, "parens"); - } - return state.context.type; - }; - - states.block = function(type, stream, state) { - if (type == "word") { - var word = stream.current().toLowerCase(); - if (propertyKeywords.hasOwnProperty(word)) { - override = "property"; - return "maybeprop"; - } else if (nonStandardPropertyKeywords.hasOwnProperty(word)) { - override = "string-2"; - return "maybeprop"; - } else if (allowNested) { - override = stream.match(/^\s*:/, false) ? "property" : "tag"; - return "block"; - } else { - override += " error"; - return "maybeprop"; - } - } else if (type == "meta") { - return "block"; - } else if (!allowNested && (type == "hash" || type == "qualifier")) { - override = "error"; - return "block"; - } else { - return states.top(type, stream, state); - } - }; - - states.maybeprop = function(type, stream, state) { - if (type == ":") return pushContext(state, stream, "prop"); - return pass(type, stream, state); - }; - - states.prop = function(type, stream, state) { - if (type == ";") return popContext(state); - if (type == "{" && allowNested) return pushContext(state, stream, "propBlock"); - if (type == "}" || type == "{") return popAndPass(type, stream, state); - if (type == "(") return pushContext(state, stream, "parens"); - - if (type == "hash" && !/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/.test(stream.current())) { - override += " error"; - } else if (type == "word") { - wordAsValue(stream); - } else if (type == "interpolation") { - return pushContext(state, stream, "interpolation"); - } - return "prop"; - }; - - states.propBlock = function(type, _stream, state) { - if (type == "}") return popContext(state); - if (type == "word") { override = "property"; return "maybeprop"; } - return state.context.type; - }; - - states.parens = function(type, stream, state) { - if (type == "{" || type == "}") return popAndPass(type, stream, state); - if (type == ")") return popContext(state); - if (type == "(") return pushContext(state, stream, "parens"); - if (type == "word") wordAsValue(stream); - return "parens"; - }; - - states.pseudo = function(type, stream, state) { - if (type == "word") { - override = "variable-3"; - return state.context.type; - } - return pass(type, stream, state); - }; - - states.media = function(type, stream, state) { - if (type == "(") return pushContext(state, stream, "media_parens"); - if (type == "}") return popAndPass(type, stream, state); - if (type == "{") return popContext(state) && pushContext(state, stream, allowNested ? "block" : "top"); - - if (type == "word") { - var word = stream.current().toLowerCase(); - if (word == "only" || word == "not" || word == "and") - override = "keyword"; - else if (mediaTypes.hasOwnProperty(word)) - override = "attribute"; - else if (mediaFeatures.hasOwnProperty(word)) - override = "property"; - else - override = "error"; - } - return state.context.type; - }; - - states.media_parens = function(type, stream, state) { - if (type == ")") return popContext(state); - if (type == "{" || type == "}") return popAndPass(type, stream, state, 2); - return states.media(type, stream, state); - }; - - states.font_face_before = function(type, stream, state) { - if (type == "{") - return pushContext(state, stream, "font_face"); - return pass(type, stream, state); - }; - - states.font_face = function(type, stream, state) { - if (type == "}") return popContext(state); - if (type == "word") { - if (!fontProperties.hasOwnProperty(stream.current().toLowerCase())) - override = "error"; - else - override = "property"; - return "maybeprop"; - } - return "font_face"; - }; - - states.keyframes = function(type, stream, state) { - if (type == "word") { override = "variable"; return "keyframes"; } - if (type == "{") return pushContext(state, stream, "top"); - return pass(type, stream, state); - }; - - states.at = function(type, stream, state) { - if (type == ";") return popContext(state); - if (type == "{" || type == "}") return popAndPass(type, stream, state); - if (type == "word") override = "tag"; - else if (type == "hash") override = "builtin"; - return "at"; - }; - - states.interpolation = function(type, stream, state) { - if (type == "}") return popContext(state); - if (type == "{" || type == ";") return popAndPass(type, stream, state); - if (type != "variable") override = "error"; - return "interpolation"; - }; - - return { - startState: function(base) { - return {tokenize: null, - state: "top", - context: new Context("top", base || 0, null)}; - }, - - token: function(stream, state) { - if (!state.tokenize && stream.eatSpace()) return null; - var style = (state.tokenize || tokenBase)(stream, state); - if (style && typeof style == "object") { - type = style[1]; - style = style[0]; - } - override = style; - state.state = states[state.state](type, stream, state); - return override; - }, - - indent: function(state, textAfter) { - var cx = state.context, ch = textAfter && textAfter.charAt(0); - var indent = cx.indent; - if (cx.type == "prop" && (ch == "}" || ch == ")")) cx = cx.prev; - if (cx.prev && - (ch == "}" && (cx.type == "block" || cx.type == "top" || cx.type == "interpolation" || cx.type == "font_face") || - ch == ")" && (cx.type == "parens" || cx.type == "media_parens") || - ch == "{" && (cx.type == "at" || cx.type == "media"))) { - indent = cx.indent - indentUnit; - cx = cx.prev; - } - return indent; - }, - - electricChars: "}", - blockCommentStart: "/*", - blockCommentEnd: "*/", - fold: "brace" - }; -}); - - function keySet(array) { - var keys = {}; - for (var i = 0; i < array.length; ++i) { - keys[array[i]] = true; - } - return keys; - } - - var mediaTypes_ = [ - "all", "aural", "braille", "handheld", "print", "projection", "screen", - "tty", "tv", "embossed" - ], mediaTypes = keySet(mediaTypes_); - - var mediaFeatures_ = [ - "width", "min-width", "max-width", "height", "min-height", "max-height", - "device-width", "min-device-width", "max-device-width", "device-height", - "min-device-height", "max-device-height", "aspect-ratio", - "min-aspect-ratio", "max-aspect-ratio", "device-aspect-ratio", - "min-device-aspect-ratio", "max-device-aspect-ratio", "color", "min-color", - "max-color", "color-index", "min-color-index", "max-color-index", - "monochrome", "min-monochrome", "max-monochrome", "resolution", - "min-resolution", "max-resolution", "scan", "grid" - ], mediaFeatures = keySet(mediaFeatures_); - - var propertyKeywords_ = [ - "align-content", "align-items", "align-self", "alignment-adjust", - "alignment-baseline", "anchor-point", "animation", "animation-delay", - "animation-direction", "animation-duration", "animation-fill-mode", - "animation-iteration-count", "animation-name", "animation-play-state", - "animation-timing-function", "appearance", "azimuth", "backface-visibility", - "background", "background-attachment", "background-clip", "background-color", - "background-image", "background-origin", "background-position", - "background-repeat", "background-size", "baseline-shift", "binding", - "bleed", "bookmark-label", "bookmark-level", "bookmark-state", - "bookmark-target", "border", "border-bottom", "border-bottom-color", - "border-bottom-left-radius", "border-bottom-right-radius", - "border-bottom-style", "border-bottom-width", "border-collapse", - "border-color", "border-image", "border-image-outset", - "border-image-repeat", "border-image-slice", "border-image-source", - "border-image-width", "border-left", "border-left-color", - "border-left-style", "border-left-width", "border-radius", "border-right", - "border-right-color", "border-right-style", "border-right-width", - "border-spacing", "border-style", "border-top", "border-top-color", - "border-top-left-radius", "border-top-right-radius", "border-top-style", - "border-top-width", "border-width", "bottom", "box-decoration-break", - "box-shadow", "box-sizing", "break-after", "break-before", "break-inside", - "caption-side", "clear", "clip", "color", "color-profile", "column-count", - "column-fill", "column-gap", "column-rule", "column-rule-color", - "column-rule-style", "column-rule-width", "column-span", "column-width", - "columns", "content", "counter-increment", "counter-reset", "crop", "cue", - "cue-after", "cue-before", "cursor", "direction", "display", - "dominant-baseline", "drop-initial-after-adjust", - "drop-initial-after-align", "drop-initial-before-adjust", - "drop-initial-before-align", "drop-initial-size", "drop-initial-value", - "elevation", "empty-cells", "fit", "fit-position", "flex", "flex-basis", - "flex-direction", "flex-flow", "flex-grow", "flex-shrink", "flex-wrap", - "float", "float-offset", "flow-from", "flow-into", "font", "font-feature-settings", - "font-family", "font-kerning", "font-language-override", "font-size", "font-size-adjust", - "font-stretch", "font-style", "font-synthesis", "font-variant", - "font-variant-alternates", "font-variant-caps", "font-variant-east-asian", - "font-variant-ligatures", "font-variant-numeric", "font-variant-position", - "font-weight", "grid", "grid-area", "grid-auto-columns", "grid-auto-flow", - "grid-auto-position", "grid-auto-rows", "grid-column", "grid-column-end", - "grid-column-start", "grid-row", "grid-row-end", "grid-row-start", - "grid-template", "grid-template-areas", "grid-template-columns", - "grid-template-rows", "hanging-punctuation", "height", "hyphens", - "icon", "image-orientation", "image-rendering", "image-resolution", - "inline-box-align", "justify-content", "left", "letter-spacing", - "line-break", "line-height", "line-stacking", "line-stacking-ruby", - "line-stacking-shift", "line-stacking-strategy", "list-style", - "list-style-image", "list-style-position", "list-style-type", "margin", - "margin-bottom", "margin-left", "margin-right", "margin-top", - "marker-offset", "marks", "marquee-direction", "marquee-loop", - "marquee-play-count", "marquee-speed", "marquee-style", "max-height", - "max-width", "min-height", "min-width", "move-to", "nav-down", "nav-index", - "nav-left", "nav-right", "nav-up", "object-fit", "object-position", - "opacity", "order", "orphans", "outline", - "outline-color", "outline-offset", "outline-style", "outline-width", - "overflow", "overflow-style", "overflow-wrap", "overflow-x", "overflow-y", - "padding", "padding-bottom", "padding-left", "padding-right", "padding-top", - "page", "page-break-after", "page-break-before", "page-break-inside", - "page-policy", "pause", "pause-after", "pause-before", "perspective", - "perspective-origin", "pitch", "pitch-range", "play-during", "position", - "presentation-level", "punctuation-trim", "quotes", "region-break-after", - "region-break-before", "region-break-inside", "region-fragment", - "rendering-intent", "resize", "rest", "rest-after", "rest-before", "richness", - "right", "rotation", "rotation-point", "ruby-align", "ruby-overhang", - "ruby-position", "ruby-span", "shape-image-threshold", "shape-inside", "shape-margin", - "shape-outside", "size", "speak", "speak-as", "speak-header", - "speak-numeral", "speak-punctuation", "speech-rate", "stress", "string-set", - "tab-size", "table-layout", "target", "target-name", "target-new", - "target-position", "text-align", "text-align-last", "text-decoration", - "text-decoration-color", "text-decoration-line", "text-decoration-skip", - "text-decoration-style", "text-emphasis", "text-emphasis-color", - "text-emphasis-position", "text-emphasis-style", "text-height", - "text-indent", "text-justify", "text-outline", "text-overflow", "text-shadow", - "text-size-adjust", "text-space-collapse", "text-transform", "text-underline-position", - "text-wrap", "top", "transform", "transform-origin", "transform-style", - "transition", "transition-delay", "transition-duration", - "transition-property", "transition-timing-function", "unicode-bidi", - "vertical-align", "visibility", "voice-balance", "voice-duration", - "voice-family", "voice-pitch", "voice-range", "voice-rate", "voice-stress", - "voice-volume", "volume", "white-space", "widows", "width", "word-break", - "word-spacing", "word-wrap", "z-index", - // SVG-specific - "clip-path", "clip-rule", "mask", "enable-background", "filter", "flood-color", - "flood-opacity", "lighting-color", "stop-color", "stop-opacity", "pointer-events", - "color-interpolation", "color-interpolation-filters", - "color-rendering", "fill", "fill-opacity", "fill-rule", "image-rendering", - "marker", "marker-end", "marker-mid", "marker-start", "shape-rendering", "stroke", - "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", - "stroke-miterlimit", "stroke-opacity", "stroke-width", "text-rendering", - "baseline-shift", "dominant-baseline", "glyph-orientation-horizontal", - "glyph-orientation-vertical", "text-anchor", "writing-mode" - ], propertyKeywords = keySet(propertyKeywords_); - - var nonStandardPropertyKeywords_ = [ - "scrollbar-arrow-color", "scrollbar-base-color", "scrollbar-dark-shadow-color", - "scrollbar-face-color", "scrollbar-highlight-color", "scrollbar-shadow-color", - "scrollbar-3d-light-color", "scrollbar-track-color", "shape-inside", - "searchfield-cancel-button", "searchfield-decoration", "searchfield-results-button", - "searchfield-results-decoration", "zoom" - ], nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_); - - var colorKeywords_ = [ - "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", - "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", - "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", - "cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod", - "darkgray", "darkgreen", "darkkhaki", "darkmagenta", "darkolivegreen", - "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", - "darkslateblue", "darkslategray", "darkturquoise", "darkviolet", - "deeppink", "deepskyblue", "dimgray", "dodgerblue", "firebrick", - "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", - "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", - "hotpink", "indianred", "indigo", "ivory", "khaki", "lavender", - "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", - "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightpink", - "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", - "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", - "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", - "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", - "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", - "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", - "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", - "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", - "purple", "rebeccapurple", "red", "rosybrown", "royalblue", "saddlebrown", - "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", - "slateblue", "slategray", "snow", "springgreen", "steelblue", "tan", - "teal", "thistle", "tomato", "turquoise", "violet", "wheat", "white", - "whitesmoke", "yellow", "yellowgreen" - ], colorKeywords = keySet(colorKeywords_); - - var valueKeywords_ = [ - "above", "absolute", "activeborder", "activecaption", "afar", - "after-white-space", "ahead", "alias", "all", "all-scroll", "alternate", - "always", "amharic", "amharic-abegede", "antialiased", "appworkspace", - "arabic-indic", "armenian", "asterisks", "auto", "avoid", "avoid-column", "avoid-page", - "avoid-region", "background", "backwards", "baseline", "below", "bidi-override", "binary", - "bengali", "blink", "block", "block-axis", "bold", "bolder", "border", "border-box", - "both", "bottom", "break", "break-all", "break-word", "button", "button-bevel", - "buttonface", "buttonhighlight", "buttonshadow", "buttontext", "cambodian", - "capitalize", "caps-lock-indicator", "caption", "captiontext", "caret", - "cell", "center", "checkbox", "circle", "cjk-earthly-branch", - "cjk-heavenly-stem", "cjk-ideographic", "clear", "clip", "close-quote", - "col-resize", "collapse", "column", "compact", "condensed", "contain", "content", - "content-box", "context-menu", "continuous", "copy", "cover", "crop", - "cross", "crosshair", "currentcolor", "cursive", "dashed", "decimal", - "decimal-leading-zero", "default", "default-button", "destination-atop", - "destination-in", "destination-out", "destination-over", "devanagari", - "disc", "discard", "document", "dot-dash", "dot-dot-dash", "dotted", - "double", "down", "e-resize", "ease", "ease-in", "ease-in-out", "ease-out", - "element", "ellipse", "ellipsis", "embed", "end", "ethiopic", "ethiopic-abegede", - "ethiopic-abegede-am-et", "ethiopic-abegede-gez", "ethiopic-abegede-ti-er", - "ethiopic-abegede-ti-et", "ethiopic-halehame-aa-er", - "ethiopic-halehame-aa-et", "ethiopic-halehame-am-et", - "ethiopic-halehame-gez", "ethiopic-halehame-om-et", - "ethiopic-halehame-sid-et", "ethiopic-halehame-so-et", - "ethiopic-halehame-ti-er", "ethiopic-halehame-ti-et", - "ethiopic-halehame-tig", "ew-resize", "expanded", "extra-condensed", - "extra-expanded", "fantasy", "fast", "fill", "fixed", "flat", "footnotes", - "forwards", "from", "geometricPrecision", "georgian", "graytext", "groove", - "gujarati", "gurmukhi", "hand", "hangul", "hangul-consonant", "hebrew", - "help", "hidden", "hide", "higher", "highlight", "highlighttext", - "hiragana", "hiragana-iroha", "horizontal", "hsl", "hsla", "icon", "ignore", - "inactiveborder", "inactivecaption", "inactivecaptiontext", "infinite", - "infobackground", "infotext", "inherit", "initial", "inline", "inline-axis", - "inline-block", "inline-table", "inset", "inside", "intrinsic", "invert", - "italic", "justify", "kannada", "katakana", "katakana-iroha", "keep-all", "khmer", - "landscape", "lao", "large", "larger", "left", "level", "lighter", - "line-through", "linear", "lines", "list-item", "listbox", "listitem", - "local", "logical", "loud", "lower", "lower-alpha", "lower-armenian", - "lower-greek", "lower-hexadecimal", "lower-latin", "lower-norwegian", - "lower-roman", "lowercase", "ltr", "malayalam", "match", - "media-controls-background", "media-current-time-display", - "media-fullscreen-button", "media-mute-button", "media-play-button", - "media-return-to-realtime-button", "media-rewind-button", - "media-seek-back-button", "media-seek-forward-button", "media-slider", - "media-sliderthumb", "media-time-remaining-display", "media-volume-slider", - "media-volume-slider-container", "media-volume-sliderthumb", "medium", - "menu", "menulist", "menulist-button", "menulist-text", - "menulist-textfield", "menutext", "message-box", "middle", "min-intrinsic", - "mix", "mongolian", "monospace", "move", "multiple", "myanmar", "n-resize", - "narrower", "ne-resize", "nesw-resize", "no-close-quote", "no-drop", - "no-open-quote", "no-repeat", "none", "normal", "not-allowed", "nowrap", - "ns-resize", "nw-resize", "nwse-resize", "oblique", "octal", "open-quote", - "optimizeLegibility", "optimizeSpeed", "oriya", "oromo", "outset", - "outside", "outside-shape", "overlay", "overline", "padding", "padding-box", - "painted", "page", "paused", "persian", "plus-darker", "plus-lighter", "pointer", - "polygon", "portrait", "pre", "pre-line", "pre-wrap", "preserve-3d", "progress", "push-button", - "radio", "read-only", "read-write", "read-write-plaintext-only", "rectangle", "region", - "relative", "repeat", "repeat-x", "repeat-y", "reset", "reverse", "rgb", "rgba", - "ridge", "right", "round", "row-resize", "rtl", "run-in", "running", - "s-resize", "sans-serif", "scroll", "scrollbar", "se-resize", "searchfield", - "searchfield-cancel-button", "searchfield-decoration", - "searchfield-results-button", "searchfield-results-decoration", - "semi-condensed", "semi-expanded", "separate", "serif", "show", "sidama", - "single", "skip-white-space", "slide", "slider-horizontal", - "slider-vertical", "sliderthumb-horizontal", "sliderthumb-vertical", "slow", - "small", "small-caps", "small-caption", "smaller", "solid", "somali", - "source-atop", "source-in", "source-out", "source-over", "space", "square", - "square-button", "start", "static", "status-bar", "stretch", "stroke", - "sub", "subpixel-antialiased", "super", "sw-resize", "table", - "table-caption", "table-cell", "table-column", "table-column-group", - "table-footer-group", "table-header-group", "table-row", "table-row-group", - "telugu", "text", "text-bottom", "text-top", "textarea", "textfield", "thai", - "thick", "thin", "threeddarkshadow", "threedface", "threedhighlight", - "threedlightshadow", "threedshadow", "tibetan", "tigre", "tigrinya-er", - "tigrinya-er-abegede", "tigrinya-et", "tigrinya-et-abegede", "to", "top", - "transparent", "ultra-condensed", "ultra-expanded", "underline", "up", - "upper-alpha", "upper-armenian", "upper-greek", "upper-hexadecimal", - "upper-latin", "upper-norwegian", "upper-roman", "uppercase", "urdu", "url", - "vertical", "vertical-text", "visible", "visibleFill", "visiblePainted", - "visibleStroke", "visual", "w-resize", "wait", "wave", "wider", - "window", "windowframe", "windowtext", "x-large", "x-small", "xor", - "xx-large", "xx-small" - ], valueKeywords = keySet(valueKeywords_); - - var fontProperties_ = [ - "font-family", "src", "unicode-range", "font-variant", "font-feature-settings", - "font-stretch", "font-weight", "font-style" - ], fontProperties = keySet(fontProperties_); - - var allWords = mediaTypes_.concat(mediaFeatures_).concat(propertyKeywords_) - .concat(nonStandardPropertyKeywords_).concat(colorKeywords_).concat(valueKeywords_); - CodeMirror.registerHelper("hintWords", "css", allWords); - - function tokenCComment(stream, state) { - var maybeEnd = false, ch; - while ((ch = stream.next()) != null) { - if (maybeEnd && ch == "/") { - state.tokenize = null; - break; - } - maybeEnd = (ch == "*"); - } - return ["comment", "comment"]; - } - - function tokenSGMLComment(stream, state) { - if (stream.skipTo("-->")) { - stream.match("-->"); - state.tokenize = null; - } else { - stream.skipToEnd(); - } - return ["comment", "comment"]; - } - - CodeMirror.defineMIME("text/css", { - mediaTypes: mediaTypes, - mediaFeatures: mediaFeatures, - propertyKeywords: propertyKeywords, - nonStandardPropertyKeywords: nonStandardPropertyKeywords, - colorKeywords: colorKeywords, - valueKeywords: valueKeywords, - fontProperties: fontProperties, - tokenHooks: { - "<": function(stream, state) { - if (!stream.match("!--")) return false; - state.tokenize = tokenSGMLComment; - return tokenSGMLComment(stream, state); - }, - "/": function(stream, state) { - if (!stream.eat("*")) return false; - state.tokenize = tokenCComment; - return tokenCComment(stream, state); - } - }, - name: "css" - }); - - CodeMirror.defineMIME("text/x-scss", { - mediaTypes: mediaTypes, - mediaFeatures: mediaFeatures, - propertyKeywords: propertyKeywords, - nonStandardPropertyKeywords: nonStandardPropertyKeywords, - colorKeywords: colorKeywords, - valueKeywords: valueKeywords, - fontProperties: fontProperties, - allowNested: true, - tokenHooks: { - "/": function(stream, state) { - if (stream.eat("/")) { - stream.skipToEnd(); - return ["comment", "comment"]; - } else if (stream.eat("*")) { - state.tokenize = tokenCComment; - return tokenCComment(stream, state); - } else { - return ["operator", "operator"]; - } - }, - ":": function(stream) { - if (stream.match(/\s*\{/)) - return [null, "{"]; - return false; - }, - "$": function(stream) { - stream.match(/^[\w-]+/); - if (stream.match(/^\s*:/, false)) - return ["variable-2", "variable-definition"]; - return ["variable-2", "variable"]; - }, - "#": function(stream) { - if (!stream.eat("{")) return false; - return [null, "interpolation"]; - } - }, - name: "css", - helperType: "scss" - }); - - CodeMirror.defineMIME("text/x-less", { - mediaTypes: mediaTypes, - mediaFeatures: mediaFeatures, - propertyKeywords: propertyKeywords, - nonStandardPropertyKeywords: nonStandardPropertyKeywords, - colorKeywords: colorKeywords, - valueKeywords: valueKeywords, - fontProperties: fontProperties, - allowNested: true, - tokenHooks: { - "/": function(stream, state) { - if (stream.eat("/")) { - stream.skipToEnd(); - return ["comment", "comment"]; - } else if (stream.eat("*")) { - state.tokenize = tokenCComment; - return tokenCComment(stream, state); - } else { - return ["operator", "operator"]; - } - }, - "@": function(stream) { - if (stream.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\b/, false)) return false; - stream.eatWhile(/[\w\\\-]/); - if (stream.match(/^\s*:/, false)) - return ["variable-2", "variable-definition"]; - return ["variable-2", "variable"]; - }, - "&": function() { - return ["atom", "atom"]; - } - }, - name: "css", - helperType: "less" - }); - -}); diff --git a/assets/js/plugins/codemirror/mode/css/index.html b/assets/js/plugins/codemirror/mode/css/index.html deleted file mode 100644 index 3d2c127d..00000000 --- a/assets/js/plugins/codemirror/mode/css/index.html +++ /dev/null @@ -1,70 +0,0 @@ -<!doctype html> - -<title>CodeMirror: CSS mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="css.js"></script> -<style>.CodeMirror {background: #f8f8f8;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">CSS</a> - </ul> -</div> - -<article> -<h2>CSS mode</h2> -<form><textarea id="code" name="code"> -/* Some example CSS */ - -@import url("something.css"); - -body { - margin: 0; - padding: 3em 6em; - font-family: tahoma, arial, sans-serif; - color: #000; -} - -#navigation a { - font-weight: bold; - text-decoration: none !important; -} - -h1 { - font-size: 2.5em; -} - -h2 { - font-size: 1.7em; -} - -h1:before, h2:before { - content: "::"; -} - -code { - font-family: courier, monospace; - font-size: 80%; - color: #418A8A; -} -</textarea></form> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), {}); - </script> - - <p><strong>MIME types defined:</strong> <code>text/css</code>, <code>text/x-scss</code> (<a href="scss.html">demo</a>), <code>text/x-less</code> (<a href="less.html">demo</a>).</p> - - <p><strong>Parsing/Highlighting Tests:</strong> <a href="../../test/index.html#css_*">normal</a>, <a href="../../test/index.html#verbose,css_*">verbose</a>.</p> - - </article> diff --git a/assets/js/plugins/codemirror/mode/css/less.html b/assets/js/plugins/codemirror/mode/css/less.html deleted file mode 100644 index 6ccb721e..00000000 --- a/assets/js/plugins/codemirror/mode/css/less.html +++ /dev/null @@ -1,152 +0,0 @@ -<!doctype html> - -<title>CodeMirror: LESS mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="../../addon/edit/matchbrackets.js"></script> -<script src="css.js"></script> -<style>.CodeMirror {border: 1px solid #ddd; line-height: 1.2;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">LESS</a> - </ul> -</div> - -<article> -<h2>LESS mode</h2> -<form><textarea id="code" name="code">@media screen and (device-aspect-ratio: 16/9) { … } -@media screen and (device-aspect-ratio: 1280/720) { … } -@media screen and (device-aspect-ratio: 2560/1440) { … } - -html:lang(fr-be) - -tr:nth-child(2n+1) /* represents every odd row of an HTML table */ - -img:nth-of-type(2n+1) { float: right; } -img:nth-of-type(2n) { float: left; } - -body > h2:not(:first-of-type):not(:last-of-type) - -html|*:not(:link):not(:visited) -*|*:not(:hover) -p::first-line { text-transform: uppercase } - -@namespace foo url(http://www.example.com); -foo|h1 { color: blue } /* first rule */ - -span[hello="Ocean"][goodbye="Land"] - -E[foo]{ - padding:65px; -} - -input[type="search"]::-webkit-search-decoration, -input[type="search"]::-webkit-search-cancel-button { - -webkit-appearance: none; // Inner-padding issues in Chrome OSX, Safari 5 -} -button::-moz-focus-inner, -input::-moz-focus-inner { // Inner padding and border oddities in FF3/4 - padding: 0; - border: 0; -} -.btn { - // reset here as of 2.0.3 due to Recess property order - border-color: #ccc; - border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25); -} -fieldset span button, fieldset span input[type="file"] { - font-size:12px; - font-family:Arial, Helvetica, sans-serif; -} - -.rounded-corners (@radius: 5px) { - border-radius: @radius; - -webkit-border-radius: @radius; - -moz-border-radius: @radius; -} - -@import url("something.css"); - -@light-blue: hsl(190, 50%, 65%); - -#menu { - position: absolute; - width: 100%; - z-index: 3; - clear: both; - display: block; - background-color: @blue; - height: 42px; - border-top: 2px solid lighten(@alpha-blue, 20%); - border-bottom: 2px solid darken(@alpha-blue, 25%); - .box-shadow(0, 1px, 8px, 0.6); - -moz-box-shadow: 0 0 0 #000; // Because firefox sucks. - - &.docked { - background-color: hsla(210, 60%, 40%, 0.4); - } - &:hover { - background-color: @blue; - } - - #dropdown { - margin: 0 0 0 117px; - padding: 0; - padding-top: 5px; - display: none; - width: 190px; - border-top: 2px solid @medium; - color: @highlight; - border: 2px solid darken(@medium, 25%); - border-left-color: darken(@medium, 15%); - border-right-color: darken(@medium, 15%); - border-top-width: 0; - background-color: darken(@medium, 10%); - ul { - padding: 0px; - } - li { - font-size: 14px; - display: block; - text-align: left; - padding: 0; - border: 0; - a { - display: block; - padding: 0px 15px; - text-decoration: none; - color: white; - &:hover { - background-color: darken(@medium, 15%); - text-decoration: none; - } - } - } - .border-radius(5px, bottom); - .box-shadow(0, 6px, 8px, 0.5); - } -} -</textarea></form> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers : true, - matchBrackets : true, - mode: "text/x-less" - }); - </script> - - <p>The LESS mode is a sub-mode of the <a href="index.html">CSS mode</a> (defined in <code>css.js</code>.</p> - - <p><strong>Parsing/Highlighting Tests:</strong> <a href="../../test/index.html#less_*">normal</a>, <a href="../../test/index.html#verbose,less_*">verbose</a>.</p> - </article> diff --git a/assets/js/plugins/codemirror/mode/css/less_test.js b/assets/js/plugins/codemirror/mode/css/less_test.js deleted file mode 100644 index 2ba69984..00000000 --- a/assets/js/plugins/codemirror/mode/css/less_test.js +++ /dev/null @@ -1,51 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - "use strict"; - - var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-less"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "less"); } - - MT("variable", - "[variable-2 @base]: [atom #f04615];", - "[qualifier .class] {", - " [property width]: [variable percentage]([number 0.5]); [comment // returns `50%`]", - " [property color]: [variable saturate]([variable-2 @base], [number 5%]);", - "}"); - - MT("amp", - "[qualifier .child], [qualifier .sibling] {", - " [qualifier .parent] [atom &] {", - " [property color]: [keyword black];", - " }", - " [atom &] + [atom &] {", - " [property color]: [keyword red];", - " }", - "}"); - - MT("mixin", - "[qualifier .mixin] ([variable dark]; [variable-2 @color]) {", - " [property color]: [variable darken]([variable-2 @color], [number 10%]);", - "}", - "[qualifier .mixin] ([variable light]; [variable-2 @color]) {", - " [property color]: [variable lighten]([variable-2 @color], [number 10%]);", - "}", - "[qualifier .mixin] ([variable-2 @_]; [variable-2 @color]) {", - " [property display]: [atom block];", - "}", - "[variable-2 @switch]: [variable light];", - "[qualifier .class] {", - " [qualifier .mixin]([variable-2 @switch]; [atom #888]);", - "}"); - - MT("nest", - "[qualifier .one] {", - " [def @media] ([property width]: [number 400px]) {", - " [property font-size]: [number 1.2em];", - " [def @media] [attribute print] [keyword and] [property color] {", - " [property color]: [keyword blue];", - " }", - " }", - "}"); -})(); diff --git a/assets/js/plugins/codemirror/mode/css/scss.html b/assets/js/plugins/codemirror/mode/css/scss.html deleted file mode 100644 index 21f20e0d..00000000 --- a/assets/js/plugins/codemirror/mode/css/scss.html +++ /dev/null @@ -1,157 +0,0 @@ -<!doctype html> - -<title>CodeMirror: SCSS mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="css.js"></script> -<style>.CodeMirror {background: #f8f8f8;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">SCSS</a> - </ul> -</div> - -<article> -<h2>SCSS mode</h2> -<form><textarea id="code" name="code"> -/* Some example SCSS */ - -@import "compass/css3"; -$variable: #333; - -$blue: #3bbfce; -$margin: 16px; - -.content-navigation { - #nested { - background-color: black; - } - border-color: $blue; - color: - darken($blue, 9%); -} - -.border { - padding: $margin / 2; - margin: $margin / 2; - border-color: $blue; -} - -@mixin table-base { - th { - text-align: center; - font-weight: bold; - } - td, th {padding: 2px} -} - -table.hl { - margin: 2em 0; - td.ln { - text-align: right; - } -} - -li { - font: { - family: serif; - weight: bold; - size: 1.2em; - } -} - -@mixin left($dist) { - float: left; - margin-left: $dist; -} - -#data { - @include left(10px); - @include table-base; -} - -.source { - @include flow-into(target); - border: 10px solid green; - margin: 20px; - width: 200px; } - -.new-container { - @include flow-from(target); - border: 10px solid red; - margin: 20px; - width: 200px; } - -body { - margin: 0; - padding: 3em 6em; - font-family: tahoma, arial, sans-serif; - color: #000; -} - -@mixin yellow() { - background: yellow; -} - -.big { - font-size: 14px; -} - -.nested { - @include border-radius(3px); - @extend .big; - p { - background: whitesmoke; - a { - color: red; - } - } -} - -#navigation a { - font-weight: bold; - text-decoration: none !important; -} - -h1 { - font-size: 2.5em; -} - -h2 { - font-size: 1.7em; -} - -h1:before, h2:before { - content: "::"; -} - -code { - font-family: courier, monospace; - font-size: 80%; - color: #418A8A; -} -</textarea></form> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers: true, - matchBrackets: true, - mode: "text/x-scss" - }); - </script> - - <p>The SCSS mode is a sub-mode of the <a href="index.html">CSS mode</a> (defined in <code>css.js</code>.</p> - - <p><strong>Parsing/Highlighting Tests:</strong> <a href="../../test/index.html#scss_*">normal</a>, <a href="../../test/index.html#verbose,scss_*">verbose</a>.</p> - - </article> diff --git a/assets/js/plugins/codemirror/mode/css/scss_test.js b/assets/js/plugins/codemirror/mode/css/scss_test.js deleted file mode 100644 index 8dcea9e8..00000000 --- a/assets/js/plugins/codemirror/mode/css/scss_test.js +++ /dev/null @@ -1,110 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-scss"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "scss"); } - - MT('url_with_quotation', - "[tag foo] { [property background]:[atom url]([string test.jpg]) }"); - - MT('url_with_double_quotes', - "[tag foo] { [property background]:[atom url]([string \"test.jpg\"]) }"); - - MT('url_with_single_quotes', - "[tag foo] { [property background]:[atom url]([string \'test.jpg\']) }"); - - MT('string', - "[def @import] [string \"compass/css3\"]"); - - MT('important_keyword', - "[tag foo] { [property background]:[atom url]([string \'test.jpg\']) [keyword !important] }"); - - MT('variable', - "[variable-2 $blue]:[atom #333]"); - - MT('variable_as_attribute', - "[tag foo] { [property color]:[variable-2 $blue] }"); - - MT('numbers', - "[tag foo] { [property padding]:[number 10px] [number 10] [number 10em] [number 8in] }"); - - MT('number_percentage', - "[tag foo] { [property width]:[number 80%] }"); - - MT('selector', - "[builtin #hello][qualifier .world]{}"); - - MT('singleline_comment', - "[comment // this is a comment]"); - - MT('multiline_comment', - "[comment /*foobar*/]"); - - MT('attribute_with_hyphen', - "[tag foo] { [property font-size]:[number 10px] }"); - - MT('string_after_attribute', - "[tag foo] { [property content]:[string \"::\"] }"); - - MT('directives', - "[def @include] [qualifier .mixin]"); - - MT('basic_structure', - "[tag p] { [property background]:[keyword red]; }"); - - MT('nested_structure', - "[tag p] { [tag a] { [property color]:[keyword red]; } }"); - - MT('mixin', - "[def @mixin] [tag table-base] {}"); - - MT('number_without_semicolon', - "[tag p] {[property width]:[number 12]}", - "[tag a] {[property color]:[keyword red];}"); - - MT('atom_in_nested_block', - "[tag p] { [tag a] { [property color]:[atom #000]; } }"); - - MT('interpolation_in_property', - "[tag foo] { #{[variable-2 $hello]}:[number 2]; }"); - - MT('interpolation_in_selector', - "[tag foo]#{[variable-2 $hello]} { [property color]:[atom #000]; }"); - - MT('interpolation_error', - "[tag foo]#{[error foo]} { [property color]:[atom #000]; }"); - - MT("divide_operator", - "[tag foo] { [property width]:[number 4] [operator /] [number 2] }"); - - MT('nested_structure_with_id_selector', - "[tag p] { [builtin #hello] { [property color]:[keyword red]; } }"); - - MT('indent_mixin', - "[def @mixin] [tag container] (", - " [variable-2 $a]: [number 10],", - " [variable-2 $b]: [number 10])", - "{}"); - - MT('indent_nested', - "[tag foo] {", - " [tag bar] {", - " }", - "}"); - - MT('indent_parentheses', - "[tag foo] {", - " [property color]: [variable darken]([variable-2 $blue],", - " [number 9%]);", - "}"); - - MT('indent_vardef', - "[variable-2 $name]:", - " [string 'val'];", - "[tag tag] {", - " [tag inner] {", - " [property margin]: [number 3px];", - " }", - "}"); -})(); diff --git a/assets/js/plugins/codemirror/mode/css/test.js b/assets/js/plugins/codemirror/mode/css/test.js deleted file mode 100644 index d236e2a7..00000000 --- a/assets/js/plugins/codemirror/mode/css/test.js +++ /dev/null @@ -1,135 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - var mode = CodeMirror.getMode({indentUnit: 2}, "css"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - - // Error, because "foobarhello" is neither a known type or property, but - // property was expected (after "and"), and it should be in parenthese. - MT("atMediaUnknownType", - "[def @media] [attribute screen] [keyword and] [error foobarhello] { }"); - - // Soft error, because "foobarhello" is not a known property or type. - MT("atMediaUnknownProperty", - "[def @media] [attribute screen] [keyword and] ([error foobarhello]) { }"); - - // Make sure nesting works with media queries - MT("atMediaMaxWidthNested", - "[def @media] [attribute screen] [keyword and] ([property max-width]: [number 25px]) { [tag foo] { } }"); - - MT("tagSelector", - "[tag foo] { }"); - - MT("classSelector", - "[qualifier .foo-bar_hello] { }"); - - MT("idSelector", - "[builtin #foo] { [error #foo] }"); - - MT("tagSelectorUnclosed", - "[tag foo] { [property margin]: [number 0] } [tag bar] { }"); - - MT("tagStringNoQuotes", - "[tag foo] { [property font-family]: [variable hello] [variable world]; }"); - - MT("tagStringDouble", - "[tag foo] { [property font-family]: [string \"hello world\"]; }"); - - MT("tagStringSingle", - "[tag foo] { [property font-family]: [string 'hello world']; }"); - - MT("tagColorKeyword", - "[tag foo] {", - " [property color]: [keyword black];", - " [property color]: [keyword navy];", - " [property color]: [keyword yellow];", - "}"); - - MT("tagColorHex3", - "[tag foo] { [property background]: [atom #fff]; }"); - - MT("tagColorHex6", - "[tag foo] { [property background]: [atom #ffffff]; }"); - - MT("tagColorHex4", - "[tag foo] { [property background]: [atom&error #ffff]; }"); - - MT("tagColorHexInvalid", - "[tag foo] { [property background]: [atom&error #ffg]; }"); - - MT("tagNegativeNumber", - "[tag foo] { [property margin]: [number -5px]; }"); - - MT("tagPositiveNumber", - "[tag foo] { [property padding]: [number 5px]; }"); - - MT("tagVendor", - "[tag foo] { [meta -foo-][property box-sizing]: [meta -foo-][atom border-box]; }"); - - MT("tagBogusProperty", - "[tag foo] { [property&error barhelloworld]: [number 0]; }"); - - MT("tagTwoProperties", - "[tag foo] { [property margin]: [number 0]; [property padding]: [number 0]; }"); - - MT("tagTwoPropertiesURL", - "[tag foo] { [property background]: [atom url]([string //example.com/foo.png]); [property padding]: [number 0]; }"); - - MT("commentSGML", - "[comment <!--comment-->]"); - - MT("commentSGML2", - "[comment <!--comment]", - "[comment -->] [tag div] {}"); - - MT("indent_tagSelector", - "[tag strong], [tag em] {", - " [property background]: [atom rgba](", - " [number 255], [number 255], [number 0], [number .2]", - " );", - "}"); - - MT("indent_atMedia", - "[def @media] {", - " [tag foo] {", - " [property color]:", - " [keyword yellow];", - " }", - "}"); - - MT("indent_comma", - "[tag foo] {", - " [property font-family]: [variable verdana],", - " [atom sans-serif];", - "}"); - - MT("indent_parentheses", - "[tag foo]:[variable-3 before] {", - " [property background]: [atom url](", - "[string blahblah]", - "[string etc]", - "[string ]) [keyword !important];", - "}"); - - MT("font_face", - "[def @font-face] {", - " [property font-family]: [string 'myfont'];", - " [error nonsense]: [string 'abc'];", - " [property src]: [atom url]([string http://blah]),", - " [atom url]([string http://foo]);", - "}"); - - MT("empty_url", - "[def @import] [tag url]() [tag screen];"); - - MT("parens", - "[qualifier .foo] {", - " [property background-image]: [variable fade]([atom #000], [number 20%]);", - " [property border-image]: [variable linear-gradient](", - " [atom to] [atom bottom],", - " [variable fade]([atom #000], [number 20%]) [number 0%],", - " [variable fade]([atom #000], [number 20%]) [number 100%]", - " );", - "}"); -})(); diff --git a/assets/js/plugins/codemirror/mode/cypher/cypher.js b/assets/js/plugins/codemirror/mode/cypher/cypher.js deleted file mode 100644 index a39c227d..00000000 --- a/assets/js/plugins/codemirror/mode/cypher/cypher.js +++ /dev/null @@ -1,146 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// By the Neo4j Team and contributors. -// https://github.com/neo4j-contrib/CodeMirror - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - var wordRegexp = function(words) { - return new RegExp("^(?:" + words.join("|") + ")$", "i"); - }; - - CodeMirror.defineMode("cypher", function(config) { - var tokenBase = function(stream/*, state*/) { - var ch = stream.next(), curPunc = null; - if (ch === "\"" || ch === "'") { - stream.match(/.+?["']/); - return "string"; - } - if (/[{}\(\),\.;\[\]]/.test(ch)) { - curPunc = ch; - return "node"; - } else if (ch === "/" && stream.eat("/")) { - stream.skipToEnd(); - return "comment"; - } else if (operatorChars.test(ch)) { - stream.eatWhile(operatorChars); - return null; - } else { - stream.eatWhile(/[_\w\d]/); - if (stream.eat(":")) { - stream.eatWhile(/[\w\d_\-]/); - return "atom"; - } - var word = stream.current(); - if (funcs.test(word)) return "builtin"; - if (preds.test(word)) return "def"; - if (keywords.test(word)) return "keyword"; - return "variable"; - } - }; - var pushContext = function(state, type, col) { - return state.context = { - prev: state.context, - indent: state.indent, - col: col, - type: type - }; - }; - var popContext = function(state) { - state.indent = state.context.indent; - return state.context = state.context.prev; - }; - var indentUnit = config.indentUnit; - var curPunc; - var funcs = wordRegexp(["abs", "acos", "allShortestPaths", "asin", "atan", "atan2", "avg", "ceil", "coalesce", "collect", "cos", "cot", "count", "degrees", "e", "endnode", "exp", "extract", "filter", "floor", "haversin", "head", "id", "labels", "last", "left", "length", "log", "log10", "lower", "ltrim", "max", "min", "node", "nodes", "percentileCont", "percentileDisc", "pi", "radians", "rand", "range", "reduce", "rel", "relationship", "relationships", "replace", "right", "round", "rtrim", "shortestPath", "sign", "sin", "split", "sqrt", "startnode", "stdev", "stdevp", "str", "substring", "sum", "tail", "tan", "timestamp", "toFloat", "toInt", "trim", "type", "upper"]); - var preds = wordRegexp(["all", "and", "any", "has", "in", "none", "not", "or", "single", "xor"]); - var keywords = wordRegexp(["as", "asc", "ascending", "assert", "by", "case", "commit", "constraint", "create", "csv", "cypher", "delete", "desc", "descending", "distinct", "drop", "else", "end", "false", "fieldterminator", "foreach", "from", "headers", "in", "index", "is", "limit", "load", "match", "merge", "null", "on", "optional", "order", "periodic", "remove", "return", "scan", "set", "skip", "start", "then", "true", "union", "unique", "unwind", "using", "when", "where", "with"]); - var operatorChars = /[*+\-<>=&|~%^]/; - - return { - startState: function(/*base*/) { - return { - tokenize: tokenBase, - context: null, - indent: 0, - col: 0 - }; - }, - token: function(stream, state) { - if (stream.sol()) { - if (state.context && (state.context.align == null)) { - state.context.align = false; - } - state.indent = stream.indentation(); - } - if (stream.eatSpace()) { - return null; - } - var style = state.tokenize(stream, state); - if (style !== "comment" && state.context && (state.context.align == null) && state.context.type !== "pattern") { - state.context.align = true; - } - if (curPunc === "(") { - pushContext(state, ")", stream.column()); - } else if (curPunc === "[") { - pushContext(state, "]", stream.column()); - } else if (curPunc === "{") { - pushContext(state, "}", stream.column()); - } else if (/[\]\}\)]/.test(curPunc)) { - while (state.context && state.context.type === "pattern") { - popContext(state); - } - if (state.context && curPunc === state.context.type) { - popContext(state); - } - } else if (curPunc === "." && state.context && state.context.type === "pattern") { - popContext(state); - } else if (/atom|string|variable/.test(style) && state.context) { - if (/[\}\]]/.test(state.context.type)) { - pushContext(state, "pattern", stream.column()); - } else if (state.context.type === "pattern" && !state.context.align) { - state.context.align = true; - state.context.col = stream.column(); - } - } - return style; - }, - indent: function(state, textAfter) { - var firstChar = textAfter && textAfter.charAt(0); - var context = state.context; - if (/[\]\}]/.test(firstChar)) { - while (context && context.type === "pattern") { - context = context.prev; - } - } - var closing = context && firstChar === context.type; - if (!context) return 0; - if (context.type === "keywords") return CodeMirror.commands.newlineAndIndent; - if (context.align) return context.col + (closing ? 0 : 1); - return context.indent + (closing ? 0 : indentUnit); - } - }; - }); - - CodeMirror.modeExtensions["cypher"] = { - autoFormatLineBreaks: function(text) { - var i, lines, reProcessedPortion; - var lines = text.split("\n"); - var reProcessedPortion = /\s+\b(return|where|order by|match|with|skip|limit|create|delete|set)\b\s/g; - for (var i = 0; i < lines.length; i++) - lines[i] = lines[i].replace(reProcessedPortion, " \n$1 ").trim(); - return lines.join("\n"); - } - }; - - CodeMirror.defineMIME("application/x-cypher-query", "cypher"); - -}); diff --git a/assets/js/plugins/codemirror/mode/cypher/index.html b/assets/js/plugins/codemirror/mode/cypher/index.html deleted file mode 100644 index b8bd75c8..00000000 --- a/assets/js/plugins/codemirror/mode/cypher/index.html +++ /dev/null @@ -1,63 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Cypher Mode for CodeMirror</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css" /> -<link rel="stylesheet" href="../../theme/neo.css" /> -<script src="../../lib/codemirror.js"></script> -<script src="cypher.js"></script> -<style> -.CodeMirror { - border-top: 1px solid black; - border-bottom: 1px solid black; -} - </style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Cypher Mode for CodeMirror</a> - </ul> -</div> - -<article> -<h2>Cypher Mode for CodeMirror</h2> -<form> - <textarea id="code" name="code">// Cypher Mode for CodeMirror, using the neo theme -MATCH (joe { name: 'Joe' })-[:knows*2..2]-(friend_of_friend) -WHERE NOT (joe)-[:knows]-(friend_of_friend) -RETURN friend_of_friend.name, COUNT(*) -ORDER BY COUNT(*) DESC , friend_of_friend.name -</textarea> - </form> - <p><strong>MIME types defined:</strong> - <code><a href="?mime=application/x-cypher-query">application/x-cypher-query</a></code> - </p> -<script> -window.onload = function() { - var mime = 'application/x-cypher-query'; - // get mime type - if (window.location.href.indexOf('mime=') > -1) { - mime = window.location.href.substr(window.location.href.indexOf('mime=') + 5); - } - window.editor = CodeMirror.fromTextArea(document.getElementById('code'), { - mode: mime, - indentWithTabs: true, - smartIndent: true, - lineNumbers: true, - matchBrackets : true, - autofocus: true, - theme: 'neo' - }); -}; -</script> - -</article> diff --git a/assets/js/plugins/codemirror/mode/d/d.js b/assets/js/plugins/codemirror/mode/d/d.js deleted file mode 100644 index c927a7e3..00000000 --- a/assets/js/plugins/codemirror/mode/d/d.js +++ /dev/null @@ -1,218 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("d", function(config, parserConfig) { - var indentUnit = config.indentUnit, - statementIndentUnit = parserConfig.statementIndentUnit || indentUnit, - keywords = parserConfig.keywords || {}, - builtin = parserConfig.builtin || {}, - blockKeywords = parserConfig.blockKeywords || {}, - atoms = parserConfig.atoms || {}, - hooks = parserConfig.hooks || {}, - multiLineStrings = parserConfig.multiLineStrings; - var isOperatorChar = /[+\-*&%=<>!?|\/]/; - - var curPunc; - - function tokenBase(stream, state) { - var ch = stream.next(); - if (hooks[ch]) { - var result = hooks[ch](stream, state); - if (result !== false) return result; - } - if (ch == '"' || ch == "'" || ch == "`") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } - if (/[\[\]{}\(\),;\:\.]/.test(ch)) { - curPunc = ch; - return null; - } - if (/\d/.test(ch)) { - stream.eatWhile(/[\w\.]/); - return "number"; - } - if (ch == "/") { - if (stream.eat("+")) { - state.tokenize = tokenComment; - return tokenNestedComment(stream, state); - } - if (stream.eat("*")) { - state.tokenize = tokenComment; - return tokenComment(stream, state); - } - if (stream.eat("/")) { - stream.skipToEnd(); - return "comment"; - } - } - if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return "operator"; - } - stream.eatWhile(/[\w\$_\xa1-\uffff]/); - var cur = stream.current(); - if (keywords.propertyIsEnumerable(cur)) { - if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; - return "keyword"; - } - if (builtin.propertyIsEnumerable(cur)) { - if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; - return "builtin"; - } - if (atoms.propertyIsEnumerable(cur)) return "atom"; - return "variable"; - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next, end = false; - while ((next = stream.next()) != null) { - if (next == quote && !escaped) {end = true; break;} - escaped = !escaped && next == "\\"; - } - if (end || !(escaped || multiLineStrings)) - state.tokenize = null; - return "string"; - }; - } - - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = null; - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - - function tokenNestedComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = null; - break; - } - maybeEnd = (ch == "+"); - } - return "comment"; - } - - function Context(indented, column, type, align, prev) { - this.indented = indented; - this.column = column; - this.type = type; - this.align = align; - this.prev = prev; - } - function pushContext(state, col, type) { - var indent = state.indented; - if (state.context && state.context.type == "statement") - indent = state.context.indented; - return state.context = new Context(indent, col, type, null, state.context); - } - function popContext(state) { - var t = state.context.type; - if (t == ")" || t == "]" || t == "}") - state.indented = state.context.indented; - return state.context = state.context.prev; - } - - // Interface - - return { - startState: function(basecolumn) { - return { - tokenize: null, - context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), - indented: 0, - startOfLine: true - }; - }, - - token: function(stream, state) { - var ctx = state.context; - if (stream.sol()) { - if (ctx.align == null) ctx.align = false; - state.indented = stream.indentation(); - state.startOfLine = true; - } - if (stream.eatSpace()) return null; - curPunc = null; - var style = (state.tokenize || tokenBase)(stream, state); - if (style == "comment" || style == "meta") return style; - if (ctx.align == null) ctx.align = true; - - if ((curPunc == ";" || curPunc == ":" || curPunc == ",") && ctx.type == "statement") popContext(state); - else if (curPunc == "{") pushContext(state, stream.column(), "}"); - else if (curPunc == "[") pushContext(state, stream.column(), "]"); - else if (curPunc == "(") pushContext(state, stream.column(), ")"); - else if (curPunc == "}") { - while (ctx.type == "statement") ctx = popContext(state); - if (ctx.type == "}") ctx = popContext(state); - while (ctx.type == "statement") ctx = popContext(state); - } - else if (curPunc == ctx.type) popContext(state); - else if (((ctx.type == "}" || ctx.type == "top") && curPunc != ';') || (ctx.type == "statement" && curPunc == "newstatement")) - pushContext(state, stream.column(), "statement"); - state.startOfLine = false; - return style; - }, - - indent: function(state, textAfter) { - if (state.tokenize != tokenBase && state.tokenize != null) return CodeMirror.Pass; - var ctx = state.context, firstChar = textAfter && textAfter.charAt(0); - if (ctx.type == "statement" && firstChar == "}") ctx = ctx.prev; - var closing = firstChar == ctx.type; - if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : statementIndentUnit); - else if (ctx.align) return ctx.column + (closing ? 0 : 1); - else return ctx.indented + (closing ? 0 : indentUnit); - }, - - electricChars: "{}" - }; -}); - - function words(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - var blockKeywords = "body catch class do else enum for foreach foreach_reverse if in interface mixin " + - "out scope struct switch try union unittest version while with"; - - CodeMirror.defineMIME("text/x-d", { - name: "d", - keywords: words("abstract alias align asm assert auto break case cast cdouble cent cfloat const continue " + - "debug default delegate delete deprecated export extern final finally function goto immutable " + - "import inout invariant is lazy macro module new nothrow override package pragma private " + - "protected public pure ref return shared short static super synchronized template this " + - "throw typedef typeid typeof volatile __FILE__ __LINE__ __gshared __traits __vector __parameters " + - blockKeywords), - blockKeywords: words(blockKeywords), - builtin: words("bool byte char creal dchar double float idouble ifloat int ireal long real short ubyte " + - "ucent uint ulong ushort wchar wstring void size_t sizediff_t"), - atoms: words("exit failure success true false null"), - hooks: { - "@": function(stream, _state) { - stream.eatWhile(/[\w\$_]/); - return "meta"; - } - } - }); - -}); diff --git a/assets/js/plugins/codemirror/mode/d/index.html b/assets/js/plugins/codemirror/mode/d/index.html deleted file mode 100644 index 08cabd8a..00000000 --- a/assets/js/plugins/codemirror/mode/d/index.html +++ /dev/null @@ -1,273 +0,0 @@ -<!doctype html> - -<title>CodeMirror: D mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="../../addon/edit/matchbrackets.js"></script> -<script src="d.js"></script> -<style>.CodeMirror {border: 2px inset #dee;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">D</a> - </ul> -</div> - -<article> -<h2>D mode</h2> -<form><textarea id="code" name="code"> -/* D demo code // copied from phobos/sd/metastrings.d */ -// Written in the D programming language. - -/** -Templates with which to do compile-time manipulation of strings. - -Macros: - WIKI = Phobos/StdMetastrings - -Copyright: Copyright Digital Mars 2007 - 2009. -License: <a href="http://www.boost.org/LICENSE_1_0.txt">Boost License 1.0</a>. -Authors: $(WEB digitalmars.com, Walter Bright), - Don Clugston -Source: $(PHOBOSSRC std/_metastrings.d) -*/ -/* - Copyright Digital Mars 2007 - 2009. -Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) - */ -module std.metastrings; - -/** -Formats constants into a string at compile time. Analogous to $(XREF -string,format). - -Parameters: - -A = tuple of constants, which can be strings, characters, or integral - values. - -Formats: - * The formats supported are %s for strings, and %% - * for the % character. -Example: ---- -import std.metastrings; -import std.stdio; - -void main() -{ - string s = Format!("Arg %s = %s", "foo", 27); - writefln(s); // "Arg foo = 27" -} - * --- - */ - -template Format(A...) -{ - static if (A.length == 0) - enum Format = ""; - else static if (is(typeof(A[0]) : const(char)[])) - enum Format = FormatString!(A[0], A[1..$]); - else - enum Format = toStringNow!(A[0]) ~ Format!(A[1..$]); -} - -template FormatString(const(char)[] F, A...) -{ - static if (F.length == 0) - enum FormatString = Format!(A); - else static if (F.length == 1) - enum FormatString = F[0] ~ Format!(A); - else static if (F[0..2] == "%s") - enum FormatString - = toStringNow!(A[0]) ~ FormatString!(F[2..$],A[1..$]); - else static if (F[0..2] == "%%") - enum FormatString = "%" ~ FormatString!(F[2..$],A); - else - { - static assert(F[0] != '%', "unrecognized format %" ~ F[1]); - enum FormatString = F[0] ~ FormatString!(F[1..$],A); - } -} - -unittest -{ - auto s = Format!("hel%slo", "world", -138, 'c', true); - assert(s == "helworldlo-138ctrue", "[" ~ s ~ "]"); -} - -/** - * Convert constant argument to a string. - */ - -template toStringNow(ulong v) -{ - static if (v < 10) - enum toStringNow = "" ~ cast(char)(v + '0'); - else - enum toStringNow = toStringNow!(v / 10) ~ toStringNow!(v % 10); -} - -unittest -{ - static assert(toStringNow!(1uL << 62) == "4611686018427387904"); -} - -/// ditto -template toStringNow(long v) -{ - static if (v < 0) - enum toStringNow = "-" ~ toStringNow!(cast(ulong) -v); - else - enum toStringNow = toStringNow!(cast(ulong) v); -} - -unittest -{ - static assert(toStringNow!(0x100000000) == "4294967296"); - static assert(toStringNow!(-138L) == "-138"); -} - -/// ditto -template toStringNow(uint U) -{ - enum toStringNow = toStringNow!(cast(ulong)U); -} - -/// ditto -template toStringNow(int I) -{ - enum toStringNow = toStringNow!(cast(long)I); -} - -/// ditto -template toStringNow(bool B) -{ - enum toStringNow = B ? "true" : "false"; -} - -/// ditto -template toStringNow(string S) -{ - enum toStringNow = S; -} - -/// ditto -template toStringNow(char C) -{ - enum toStringNow = "" ~ C; -} - - -/******** - * Parse unsigned integer literal from the start of string s. - * returns: - * .value = the integer literal as a string, - * .rest = the string following the integer literal - * Otherwise: - * .value = null, - * .rest = s - */ - -template parseUinteger(const(char)[] s) -{ - static if (s.length == 0) - { - enum value = ""; - enum rest = ""; - } - else static if (s[0] >= '0' && s[0] <= '9') - { - enum value = s[0] ~ parseUinteger!(s[1..$]).value; - enum rest = parseUinteger!(s[1..$]).rest; - } - else - { - enum value = ""; - enum rest = s; - } -} - -/******** -Parse integer literal optionally preceded by $(D '-') from the start -of string $(D s). - -Returns: - .value = the integer literal as a string, - .rest = the string following the integer literal - -Otherwise: - .value = null, - .rest = s -*/ - -template parseInteger(const(char)[] s) -{ - static if (s.length == 0) - { - enum value = ""; - enum rest = ""; - } - else static if (s[0] >= '0' && s[0] <= '9') - { - enum value = s[0] ~ parseUinteger!(s[1..$]).value; - enum rest = parseUinteger!(s[1..$]).rest; - } - else static if (s.length >= 2 && - s[0] == '-' && s[1] >= '0' && s[1] <= '9') - { - enum value = s[0..2] ~ parseUinteger!(s[2..$]).value; - enum rest = parseUinteger!(s[2..$]).rest; - } - else - { - enum value = ""; - enum rest = s; - } -} - -unittest -{ - assert(parseUinteger!("1234abc").value == "1234"); - assert(parseUinteger!("1234abc").rest == "abc"); - assert(parseInteger!("-1234abc").value == "-1234"); - assert(parseInteger!("-1234abc").rest == "abc"); -} - -/** -Deprecated aliases held for backward compatibility. -*/ -deprecated alias toStringNow ToString; -/// Ditto -deprecated alias parseUinteger ParseUinteger; -/// Ditto -deprecated alias parseUinteger ParseInteger; - -</textarea></form> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers: true, - matchBrackets: true, - indentUnit: 4, - mode: "text/x-d" - }); - </script> - - <p>Simple mode that handle D-Syntax (<a href="http://www.dlang.org">DLang Homepage</a>).</p> - - <p><strong>MIME types defined:</strong> <code>text/x-d</code> - .</p> - </article> diff --git a/assets/js/plugins/codemirror/mode/diff/diff.js b/assets/js/plugins/codemirror/mode/diff/diff.js deleted file mode 100644 index fe0305e7..00000000 --- a/assets/js/plugins/codemirror/mode/diff/diff.js +++ /dev/null @@ -1,47 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("diff", function() { - - var TOKEN_NAMES = { - '+': 'positive', - '-': 'negative', - '@': 'meta' - }; - - return { - token: function(stream) { - var tw_pos = stream.string.search(/[\t ]+?$/); - - if (!stream.sol() || tw_pos === 0) { - stream.skipToEnd(); - return ("error " + ( - TOKEN_NAMES[stream.string.charAt(0)] || '')).replace(/ $/, ''); - } - - var token_name = TOKEN_NAMES[stream.peek()] || stream.skipToEnd(); - - if (tw_pos === -1) { - stream.skipToEnd(); - } else { - stream.pos = tw_pos; - } - - return token_name; - } - }; -}); - -CodeMirror.defineMIME("text/x-diff", "diff"); - -}); diff --git a/assets/js/plugins/codemirror/mode/diff/index.html b/assets/js/plugins/codemirror/mode/diff/index.html deleted file mode 100644 index 0af611fa..00000000 --- a/assets/js/plugins/codemirror/mode/diff/index.html +++ /dev/null @@ -1,117 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Diff mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="diff.js"></script> -<style> - .CodeMirror {border-top: 1px solid #ddd; border-bottom: 1px solid #ddd;} - span.cm-meta {color: #a0b !important;} - span.cm-error { background-color: black; opacity: 0.4;} - span.cm-error.cm-string { background-color: red; } - span.cm-error.cm-tag { background-color: #2b2; } - </style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Diff</a> - </ul> -</div> - -<article> -<h2>Diff mode</h2> -<form><textarea id="code" name="code"> -diff --git a/index.html b/index.html -index c1d9156..7764744 100644 ---- a/index.html -+++ b/index.html -@@ -95,7 +95,8 @@ StringStream.prototype = { - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers: true, -- autoMatchBrackets: true -+ autoMatchBrackets: true, -+ onGutterClick: function(x){console.log(x);} - }); - </script> - </body> -diff --git a/lib/codemirror.js b/lib/codemirror.js -index 04646a9..9a39cc7 100644 ---- a/lib/codemirror.js -+++ b/lib/codemirror.js -@@ -399,10 +399,16 @@ var CodeMirror = (function() { - } - - function onMouseDown(e) { -- var start = posFromMouse(e), last = start; -+ var start = posFromMouse(e), last = start, target = e.target(); - if (!start) return; - setCursor(start.line, start.ch, false); - if (e.button() != 1) return; -+ if (target.parentNode == gutter) { -+ if (options.onGutterClick) -+ options.onGutterClick(indexOf(gutter.childNodes, target) + showingFrom); -+ return; -+ } -+ - if (!focused) onFocus(); - - e.stop(); -@@ -808,7 +814,7 @@ var CodeMirror = (function() { - for (var i = showingFrom; i < showingTo; ++i) { - var marker = lines[i].gutterMarker; - if (marker) html.push('<div class="' + marker.style + '">' + htmlEscape(marker.text) + '</div>'); -- else html.push("<div>" + (options.lineNumbers ? i + 1 : "\u00a0") + "</div>"); -+ else html.push("<div>" + (options.lineNumbers ? i + options.firstLineNumber : "\u00a0") + "</div>"); - } - gutter.style.display = "none"; // TODO test whether this actually helps - gutter.innerHTML = html.join(""); -@@ -1371,10 +1377,8 @@ var CodeMirror = (function() { - if (option == "parser") setParser(value); - else if (option === "lineNumbers") setLineNumbers(value); - else if (option === "gutter") setGutter(value); -- else if (option === "readOnly") options.readOnly = value; -- else if (option === "indentUnit") {options.indentUnit = indentUnit = value; setParser(options.parser);} -- else if (/^(?:enterMode|tabMode|indentWithTabs|readOnly|autoMatchBrackets|undoDepth)$/.test(option)) options[option] = value; -- else throw new Error("Can't set option " + option); -+ else if (option === "indentUnit") {options.indentUnit = value; setParser(options.parser);} -+ else options[option] = value; - }, - cursorCoords: cursorCoords, - undo: operation(undo), -@@ -1402,7 +1406,8 @@ var CodeMirror = (function() { - replaceRange: operation(replaceRange), - - operation: function(f){return operation(f)();}, -- refresh: function(){updateDisplay([{from: 0, to: lines.length}]);} -+ refresh: function(){updateDisplay([{from: 0, to: lines.length}]);}, -+ getInputField: function(){return input;} - }; - return instance; - } -@@ -1420,6 +1425,7 @@ var CodeMirror = (function() { - readOnly: false, - onChange: null, - onCursorActivity: null, -+ onGutterClick: null, - autoMatchBrackets: false, - workTime: 200, - workDelay: 300, -</textarea></form> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), {}); - </script> - - <p><strong>MIME types defined:</strong> <code>text/x-diff</code>.</p> - - </article> diff --git a/assets/js/plugins/codemirror/mode/django/django.js b/assets/js/plugins/codemirror/mode/django/django.js deleted file mode 100644 index d70b2fe9..00000000 --- a/assets/js/plugins/codemirror/mode/django/django.js +++ /dev/null @@ -1,67 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), - require("../../addon/mode/overlay")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../htmlmixed/htmlmixed", - "../../addon/mode/overlay"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.defineMode("django:inner", function() { - var keywords = ["block", "endblock", "for", "endfor", "in", "true", "false", - "loop", "none", "self", "super", "if", "endif", "as", "not", "and", - "else", "import", "with", "endwith", "without", "context", "ifequal", "endifequal", - "ifnotequal", "endifnotequal", "extends", "include", "load", "length", "comment", - "endcomment", "empty"]; - keywords = new RegExp("^((" + keywords.join(")|(") + "))\\b"); - - function tokenBase (stream, state) { - stream.eatWhile(/[^\{]/); - var ch = stream.next(); - if (ch == "{") { - if (ch = stream.eat(/\{|%|#/)) { - state.tokenize = inTag(ch); - return "tag"; - } - } - } - function inTag (close) { - if (close == "{") { - close = "}"; - } - return function (stream, state) { - var ch = stream.next(); - if ((ch == close) && stream.eat("}")) { - state.tokenize = tokenBase; - return "tag"; - } - if (stream.match(keywords)) { - return "keyword"; - } - return close == "#" ? "comment" : "string"; - }; - } - return { - startState: function () { - return {tokenize: tokenBase}; - }, - token: function (stream, state) { - return state.tokenize(stream, state); - } - }; - }); - - CodeMirror.defineMode("django", function(config) { - var htmlBase = CodeMirror.getMode(config, "text/html"); - var djangoInner = CodeMirror.getMode(config, "django:inner"); - return CodeMirror.overlayMode(htmlBase, djangoInner); - }); - - CodeMirror.defineMIME("text/x-django", "django"); -}); diff --git a/assets/js/plugins/codemirror/mode/django/index.html b/assets/js/plugins/codemirror/mode/django/index.html deleted file mode 100644 index 79d9a6a0..00000000 --- a/assets/js/plugins/codemirror/mode/django/index.html +++ /dev/null @@ -1,63 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Django template mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="../../addon/mode/overlay.js"></script> -<script src="../xml/xml.js"></script> -<script src="../htmlmixed/htmlmixed.js"></script> -<script src="django.js"></script> -<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Django</a> - </ul> -</div> - -<article> -<h2>Django template mode</h2> -<form><textarea id="code" name="code"> -<!doctype html> -<html> - <head> - <title>My Django web application</title> - </head> - <body> - <h1> - {{ page.title }} - </h1> - <ul class="my-list"> - {% for item in items %} - <li>{% item.name %}</li> - {% empty %} - <li>You have no items in your list.</li> - {% endfor %} - </ul> - </body> -</html> -</textarea></form> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers: true, - mode: "django", - indentUnit: 4, - indentWithTabs: true - }); - </script> - - <p>Mode for HTML with embedded Django template markup.</p> - - <p><strong>MIME types defined:</strong> <code>text/x-django</code></p> - </article> diff --git a/assets/js/plugins/codemirror/mode/dtd/dtd.js b/assets/js/plugins/codemirror/mode/dtd/dtd.js deleted file mode 100644 index f37029a7..00000000 --- a/assets/js/plugins/codemirror/mode/dtd/dtd.js +++ /dev/null @@ -1,142 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/* - DTD mode - Ported to CodeMirror by Peter Kroon <plakroon@gmail.com> - Report bugs/issues here: https://github.com/codemirror/CodeMirror/issues - GitHub: @peterkroon -*/ - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("dtd", function(config) { - var indentUnit = config.indentUnit, type; - function ret(style, tp) {type = tp; return style;} - - function tokenBase(stream, state) { - var ch = stream.next(); - - if (ch == "<" && stream.eat("!") ) { - if (stream.eatWhile(/[\-]/)) { - state.tokenize = tokenSGMLComment; - return tokenSGMLComment(stream, state); - } else if (stream.eatWhile(/[\w]/)) return ret("keyword", "doindent"); - } else if (ch == "<" && stream.eat("?")) { //xml declaration - state.tokenize = inBlock("meta", "?>"); - return ret("meta", ch); - } else if (ch == "#" && stream.eatWhile(/[\w]/)) return ret("atom", "tag"); - else if (ch == "|") return ret("keyword", "seperator"); - else if (ch.match(/[\(\)\[\]\-\.,\+\?>]/)) return ret(null, ch);//if(ch === ">") return ret(null, "endtag"); else - else if (ch.match(/[\[\]]/)) return ret("rule", ch); - else if (ch == "\"" || ch == "'") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } else if (stream.eatWhile(/[a-zA-Z\?\+\d]/)) { - var sc = stream.current(); - if( sc.substr(sc.length-1,sc.length).match(/\?|\+/) !== null )stream.backUp(1); - return ret("tag", "tag"); - } else if (ch == "%" || ch == "*" ) return ret("number", "number"); - else { - stream.eatWhile(/[\w\\\-_%.{,]/); - return ret(null, null); - } - } - - function tokenSGMLComment(stream, state) { - var dashes = 0, ch; - while ((ch = stream.next()) != null) { - if (dashes >= 2 && ch == ">") { - state.tokenize = tokenBase; - break; - } - dashes = (ch == "-") ? dashes + 1 : 0; - } - return ret("comment", "comment"); - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == quote && !escaped) { - state.tokenize = tokenBase; - break; - } - escaped = !escaped && ch == "\\"; - } - return ret("string", "tag"); - }; - } - - function inBlock(style, terminator) { - return function(stream, state) { - while (!stream.eol()) { - if (stream.match(terminator)) { - state.tokenize = tokenBase; - break; - } - stream.next(); - } - return style; - }; - } - - return { - startState: function(base) { - return {tokenize: tokenBase, - baseIndent: base || 0, - stack: []}; - }, - - token: function(stream, state) { - if (stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - - var context = state.stack[state.stack.length-1]; - if (stream.current() == "[" || type === "doindent" || type == "[") state.stack.push("rule"); - else if (type === "endtag") state.stack[state.stack.length-1] = "endtag"; - else if (stream.current() == "]" || type == "]" || (type == ">" && context == "rule")) state.stack.pop(); - else if (type == "[") state.stack.push("["); - return style; - }, - - indent: function(state, textAfter) { - var n = state.stack.length; - - if( textAfter.match(/\]\s+|\]/) )n=n-1; - else if(textAfter.substr(textAfter.length-1, textAfter.length) === ">"){ - if(textAfter.substr(0,1) === "<")n; - else if( type == "doindent" && textAfter.length > 1 )n; - else if( type == "doindent")n--; - else if( type == ">" && textAfter.length > 1)n; - else if( type == "tag" && textAfter !== ">")n; - else if( type == "tag" && state.stack[state.stack.length-1] == "rule")n--; - else if( type == "tag")n++; - else if( textAfter === ">" && state.stack[state.stack.length-1] == "rule" && type === ">")n--; - else if( textAfter === ">" && state.stack[state.stack.length-1] == "rule")n; - else if( textAfter.substr(0,1) !== "<" && textAfter.substr(0,1) === ">" )n=n-1; - else if( textAfter === ">")n; - else n=n-1; - //over rule them all - if(type == null || type == "]")n--; - } - - return state.baseIndent + n * indentUnit; - }, - - electricChars: "]>" - }; -}); - -CodeMirror.defineMIME("application/xml-dtd", "dtd"); - -}); diff --git a/assets/js/plugins/codemirror/mode/dtd/index.html b/assets/js/plugins/codemirror/mode/dtd/index.html deleted file mode 100644 index e6798a74..00000000 --- a/assets/js/plugins/codemirror/mode/dtd/index.html +++ /dev/null @@ -1,89 +0,0 @@ -<!doctype html> - -<title>CodeMirror: DTD mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="dtd.js"></script> -<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">DTD</a> - </ul> -</div> - -<article> -<h2>DTD mode</h2> -<form><textarea id="code" name="code"><?xml version="1.0" encoding="UTF-8"?> - -<!ATTLIST title - xmlns CDATA #FIXED "http://docbook.org/ns/docbook" - role CDATA #IMPLIED - %db.common.attributes; - %db.common.linking.attributes; -> - -<!-- - Try: http://docbook.org/xml/5.0/dtd/docbook.dtd ---> - -<!DOCTYPE xsl:stylesheet - [ - <!ENTITY nbsp "&amp;#160;"> - <!ENTITY copy "&amp;#169;"> - <!ENTITY reg "&amp;#174;"> - <!ENTITY trade "&amp;#8482;"> - <!ENTITY mdash "&amp;#8212;"> - <!ENTITY ldquo "&amp;#8220;"> - <!ENTITY rdquo "&amp;#8221;"> - <!ENTITY pound "&amp;#163;"> - <!ENTITY yen "&amp;#165;"> - <!ENTITY euro "&amp;#8364;"> - <!ENTITY mathml "http://www.w3.org/1998/Math/MathML"> - ] -> - -<!ELEMENT title (#PCDATA|inlinemediaobject|remark|superscript|subscript|xref|link|olink|anchor|biblioref|alt|annotation|indexterm|abbrev|acronym|date|emphasis|footnote|footnoteref|foreignphrase|phrase|quote|wordasword|firstterm|glossterm|coref|trademark|productnumber|productname|database|application|hardware|citation|citerefentry|citetitle|citebiblioid|author|person|personname|org|orgname|editor|jobtitle|replaceable|package|parameter|termdef|nonterminal|systemitem|option|optional|property|inlineequation|tag|markup|token|symbol|literal|code|constant|email|uri|guiicon|guibutton|guimenuitem|guimenu|guisubmenu|guilabel|menuchoice|mousebutton|keycombo|keycap|keycode|keysym|shortcut|accel|prompt|envar|filename|command|computeroutput|userinput|function|varname|returnvalue|type|classname|exceptionname|interfacename|methodname|modifier|initializer|ooclass|ooexception|oointerface|errorcode|errortext|errorname|errortype)*> - -<!ENTITY % db.common.attributes " - xml:id ID #IMPLIED - version CDATA #IMPLIED - xml:lang CDATA #IMPLIED - xml:base CDATA #IMPLIED - remap CDATA #IMPLIED - xreflabel CDATA #IMPLIED - revisionflag (changed|added|deleted|off) #IMPLIED - dir (ltr|rtl|lro|rlo) #IMPLIED - arch CDATA #IMPLIED - audience CDATA #IMPLIED - condition CDATA #IMPLIED - conformance CDATA #IMPLIED - os CDATA #IMPLIED - revision CDATA #IMPLIED - security CDATA #IMPLIED - userlevel CDATA #IMPLIED - vendor CDATA #IMPLIED - wordsize CDATA #IMPLIED - annotations CDATA #IMPLIED - -"></textarea></form> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - mode: {name: "dtd", alignCDATA: true}, - lineNumbers: true, - lineWrapping: true - }); - </script> - - <p><strong>MIME types defined:</strong> <code>application/xml-dtd</code>.</p> - </article> diff --git a/assets/js/plugins/codemirror/mode/dylan/dylan.js b/assets/js/plugins/codemirror/mode/dylan/dylan.js deleted file mode 100644 index be2986ad..00000000 --- a/assets/js/plugins/codemirror/mode/dylan/dylan.js +++ /dev/null @@ -1,299 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("dylan", function(_config) { - // Words - var words = { - // Words that introduce unnamed definitions like "define interface" - unnamedDefinition: ["interface"], - - // Words that introduce simple named definitions like "define library" - namedDefinition: ["module", "library", "macro", - "C-struct", "C-union", - "C-function", "C-callable-wrapper" - ], - - // Words that introduce type definitions like "define class". - // These are also parameterized like "define method" and are - // appended to otherParameterizedDefinitionWords - typeParameterizedDefinition: ["class", "C-subtype", "C-mapped-subtype"], - - // Words that introduce trickier definitions like "define method". - // These require special definitions to be added to startExpressions - otherParameterizedDefinition: ["method", "function", - "C-variable", "C-address" - ], - - // Words that introduce module constant definitions. - // These must also be simple definitions and are - // appended to otherSimpleDefinitionWords - constantSimpleDefinition: ["constant"], - - // Words that introduce module variable definitions. - // These must also be simple definitions and are - // appended to otherSimpleDefinitionWords - variableSimpleDefinition: ["variable"], - - // Other words that introduce simple definitions - // (without implicit bodies). - otherSimpleDefinition: ["generic", "domain", - "C-pointer-type", - "table" - ], - - // Words that begin statements with implicit bodies. - statement: ["if", "block", "begin", "method", "case", - "for", "select", "when", "unless", "until", - "while", "iterate", "profiling", "dynamic-bind" - ], - - // Patterns that act as separators in compound statements. - // This may include any general pattern that must be indented - // specially. - separator: ["finally", "exception", "cleanup", "else", - "elseif", "afterwards" - ], - - // Keywords that do not require special indentation handling, - // but which should be highlighted - other: ["above", "below", "by", "from", "handler", "in", - "instance", "let", "local", "otherwise", "slot", - "subclass", "then", "to", "keyed-by", "virtual" - ], - - // Condition signaling function calls - signalingCalls: ["signal", "error", "cerror", - "break", "check-type", "abort" - ] - }; - - words["otherDefinition"] = - words["unnamedDefinition"] - .concat(words["namedDefinition"]) - .concat(words["otherParameterizedDefinition"]); - - words["definition"] = - words["typeParameterizedDefinition"] - .concat(words["otherDefinition"]); - - words["parameterizedDefinition"] = - words["typeParameterizedDefinition"] - .concat(words["otherParameterizedDefinition"]); - - words["simpleDefinition"] = - words["constantSimpleDefinition"] - .concat(words["variableSimpleDefinition"]) - .concat(words["otherSimpleDefinition"]); - - words["keyword"] = - words["statement"] - .concat(words["separator"]) - .concat(words["other"]); - - // Patterns - var symbolPattern = "[-_a-zA-Z?!*@<>$%]+"; - var symbol = new RegExp("^" + symbolPattern); - var patterns = { - // Symbols with special syntax - symbolKeyword: symbolPattern + ":", - symbolClass: "<" + symbolPattern + ">", - symbolGlobal: "\\*" + symbolPattern + "\\*", - symbolConstant: "\\$" + symbolPattern - }; - var patternStyles = { - symbolKeyword: "atom", - symbolClass: "tag", - symbolGlobal: "variable-2", - symbolConstant: "variable-3" - }; - - // Compile all patterns to regular expressions - for (var patternName in patterns) - if (patterns.hasOwnProperty(patternName)) - patterns[patternName] = new RegExp("^" + patterns[patternName]); - - // Names beginning "with-" and "without-" are commonly - // used as statement macro - patterns["keyword"] = [/^with(?:out)?-[-_a-zA-Z?!*@<>$%]+/]; - - var styles = {}; - styles["keyword"] = "keyword"; - styles["definition"] = "def"; - styles["simpleDefinition"] = "def"; - styles["signalingCalls"] = "builtin"; - - // protected words lookup table - var wordLookup = {}; - var styleLookup = {}; - - [ - "keyword", - "definition", - "simpleDefinition", - "signalingCalls" - ].forEach(function(type) { - words[type].forEach(function(word) { - wordLookup[word] = type; - styleLookup[word] = styles[type]; - }); - }); - - - function chain(stream, state, f) { - state.tokenize = f; - return f(stream, state); - } - - var type, content; - - function ret(_type, style, _content) { - type = _type; - content = _content; - return style; - } - - function tokenBase(stream, state) { - // String - var ch = stream.peek(); - if (ch == "'" || ch == '"') { - stream.next(); - return chain(stream, state, tokenString(ch, "string", "string")); - } - // Comment - else if (ch == "/") { - stream.next(); - if (stream.eat("*")) { - return chain(stream, state, tokenComment); - } else if (stream.eat("/")) { - stream.skipToEnd(); - return ret("comment", "comment"); - } else { - stream.skipTo(" "); - return ret("operator", "operator"); - } - } - // Decimal - else if (/\d/.test(ch)) { - stream.match(/^\d*(?:\.\d*)?(?:e[+\-]?\d+)?/); - return ret("number", "number"); - } - // Hash - else if (ch == "#") { - stream.next(); - // Symbol with string syntax - ch = stream.peek(); - if (ch == '"') { - stream.next(); - return chain(stream, state, tokenString('"', "symbol", "string-2")); - } - // Binary number - else if (ch == "b") { - stream.next(); - stream.eatWhile(/[01]/); - return ret("number", "number"); - } - // Hex number - else if (ch == "x") { - stream.next(); - stream.eatWhile(/[\da-f]/i); - return ret("number", "number"); - } - // Octal number - else if (ch == "o") { - stream.next(); - stream.eatWhile(/[0-7]/); - return ret("number", "number"); - } - // Hash symbol - else { - stream.eatWhile(/[-a-zA-Z]/); - return ret("hash", "keyword"); - } - } else if (stream.match("end")) { - return ret("end", "keyword"); - } - for (var name in patterns) { - if (patterns.hasOwnProperty(name)) { - var pattern = patterns[name]; - if ((pattern instanceof Array && pattern.some(function(p) { - return stream.match(p); - })) || stream.match(pattern)) - return ret(name, patternStyles[name], stream.current()); - } - } - if (stream.match("define")) { - return ret("definition", "def"); - } else { - stream.eatWhile(/[\w\-]/); - // Keyword - if (wordLookup[stream.current()]) { - return ret(wordLookup[stream.current()], styleLookup[stream.current()], stream.current()); - } else if (stream.current().match(symbol)) { - return ret("variable", "variable"); - } else { - stream.next(); - return ret("other", "variable-2"); - } - } - } - - function tokenComment(stream, state) { - var maybeEnd = false, - ch; - while ((ch = stream.next())) { - if (ch == "/" && maybeEnd) { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch == "*"); - } - return ret("comment", "comment"); - } - - function tokenString(quote, type, style) { - return function(stream, state) { - var next, end = false; - while ((next = stream.next()) != null) { - if (next == quote) { - end = true; - break; - } - } - if (end) - state.tokenize = tokenBase; - return ret(type, style); - }; - } - - // Interface - return { - startState: function() { - return { - tokenize: tokenBase, - currentIndent: 0 - }; - }, - token: function(stream, state) { - if (stream.eatSpace()) - return null; - var style = state.tokenize(stream, state); - return style; - }, - blockCommentStart: "/*", - blockCommentEnd: "*/" - }; -}); - -CodeMirror.defineMIME("text/x-dylan", "dylan"); - -}); diff --git a/assets/js/plugins/codemirror/mode/dylan/index.html b/assets/js/plugins/codemirror/mode/dylan/index.html deleted file mode 100644 index ddf5ad06..00000000 --- a/assets/js/plugins/codemirror/mode/dylan/index.html +++ /dev/null @@ -1,407 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Dylan mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="../../addon/edit/matchbrackets.js"></script> -<script src="../../addon/comment/continuecomment.js"></script> -<script src="../../addon/comment/comment.js"></script> -<script src="dylan.js"></script> -<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Dylan</a> - </ul> -</div> - -<article> -<h2>Dylan mode</h2> - - -<div><textarea id="code" name="code"> -Module: locators-internals -Synopsis: Abstract modeling of locations -Author: Andy Armstrong -Copyright: Original Code is Copyright (c) 1995-2004 Functional Objects, Inc. - All rights reserved. -License: See License.txt in this distribution for details. -Warranty: Distributed WITHOUT WARRANTY OF ANY KIND - -define open generic locator-server - (locator :: <locator>) => (server :: false-or(<server-locator>)); -define open generic locator-host - (locator :: <locator>) => (host :: false-or(<string>)); -define open generic locator-volume - (locator :: <locator>) => (volume :: false-or(<string>)); -define open generic locator-directory - (locator :: <locator>) => (directory :: false-or(<directory-locator>)); -define open generic locator-relative? - (locator :: <locator>) => (relative? :: <boolean>); -define open generic locator-path - (locator :: <locator>) => (path :: <sequence>); -define open generic locator-base - (locator :: <locator>) => (base :: false-or(<string>)); -define open generic locator-extension - (locator :: <locator>) => (extension :: false-or(<string>)); - -/// Locator classes - -define open abstract class <directory-locator> (<physical-locator>) -end class <directory-locator>; - -define open abstract class <file-locator> (<physical-locator>) -end class <file-locator>; - -define method as - (class == <directory-locator>, string :: <string>) - => (locator :: <directory-locator>) - as(<native-directory-locator>, string) -end method as; - -define method make - (class == <directory-locator>, - #key server :: false-or(<server-locator>) = #f, - path :: <sequence> = #[], - relative? :: <boolean> = #f, - name :: false-or(<string>) = #f) - => (locator :: <directory-locator>) - make(<native-directory-locator>, - server: server, - path: path, - relative?: relative?, - name: name) -end method make; - -define method as - (class == <file-locator>, string :: <string>) - => (locator :: <file-locator>) - as(<native-file-locator>, string) -end method as; - -define method make - (class == <file-locator>, - #key directory :: false-or(<directory-locator>) = #f, - base :: false-or(<string>) = #f, - extension :: false-or(<string>) = #f, - name :: false-or(<string>) = #f) - => (locator :: <file-locator>) - make(<native-file-locator>, - directory: directory, - base: base, - extension: extension, - name: name) -end method make; - -/// Locator coercion - -//---*** andrewa: This caching scheme doesn't work yet, so disable it. -define constant $cache-locators? = #f; -define constant $cache-locator-strings? = #f; - -define constant $locator-to-string-cache = make(<object-table>, weak: #"key"); -define constant $string-to-locator-cache = make(<string-table>, weak: #"value"); - -define open generic locator-as-string - (class :: subclass(<string>), locator :: <locator>) - => (string :: <string>); - -define open generic string-as-locator - (class :: subclass(<locator>), string :: <string>) - => (locator :: <locator>); - -define sealed sideways method as - (class :: subclass(<string>), locator :: <locator>) - => (string :: <string>) - let string = element($locator-to-string-cache, locator, default: #f); - if (string) - as(class, string) - else - let string = locator-as-string(class, locator); - if ($cache-locator-strings?) - element($locator-to-string-cache, locator) := string; - else - string - end - end -end method as; - -define sealed sideways method as - (class :: subclass(<locator>), string :: <string>) - => (locator :: <locator>) - let locator = element($string-to-locator-cache, string, default: #f); - if (instance?(locator, class)) - locator - else - let locator = string-as-locator(class, string); - if ($cache-locators?) - element($string-to-locator-cache, string) := locator; - else - locator - end - end -end method as; - -/// Locator conditions - -define class <locator-error> (<format-string-condition>, <error>) -end class <locator-error>; - -define function locator-error - (format-string :: <string>, #rest format-arguments) - error(make(<locator-error>, - format-string: format-string, - format-arguments: format-arguments)) -end function locator-error; - -/// Useful locator protocols - -define open generic locator-test - (locator :: <directory-locator>) => (test :: <function>); - -define method locator-test - (locator :: <directory-locator>) => (test :: <function>) - \= -end method locator-test; - -define open generic locator-might-have-links? - (locator :: <directory-locator>) => (links? :: <boolean>); - -define method locator-might-have-links? - (locator :: <directory-locator>) => (links? :: singleton(#f)) - #f -end method locator-might-have-links?; - -define method locator-relative? - (locator :: <file-locator>) => (relative? :: <boolean>) - let directory = locator.locator-directory; - ~directory | directory.locator-relative? -end method locator-relative?; - -define method current-directory-locator? - (locator :: <directory-locator>) => (current-directory? :: <boolean>) - locator.locator-relative? - & locator.locator-path = #[#"self"] -end method current-directory-locator?; - -define method locator-directory - (locator :: <directory-locator>) => (parent :: false-or(<directory-locator>)) - let path = locator.locator-path; - unless (empty?(path)) - make(object-class(locator), - server: locator.locator-server, - path: copy-sequence(path, end: path.size - 1), - relative?: locator.locator-relative?) - end -end method locator-directory; - -/// Simplify locator - -define open generic simplify-locator - (locator :: <physical-locator>) - => (simplified-locator :: <physical-locator>); - -define method simplify-locator - (locator :: <directory-locator>) - => (simplified-locator :: <directory-locator>) - let path = locator.locator-path; - let relative? = locator.locator-relative?; - let resolve-parent? = ~locator.locator-might-have-links?; - let simplified-path - = simplify-path(path, - resolve-parent?: resolve-parent?, - relative?: relative?); - if (path ~= simplified-path) - make(object-class(locator), - server: locator.locator-server, - path: simplified-path, - relative?: locator.locator-relative?) - else - locator - end -end method simplify-locator; - -define method simplify-locator - (locator :: <file-locator>) => (simplified-locator :: <file-locator>) - let directory = locator.locator-directory; - let simplified-directory = directory & simplify-locator(directory); - if (directory ~= simplified-directory) - make(object-class(locator), - directory: simplified-directory, - base: locator.locator-base, - extension: locator.locator-extension) - else - locator - end -end method simplify-locator; - -/// Subdirectory locator - -define open generic subdirectory-locator - (locator :: <directory-locator>, #rest sub-path) - => (subdirectory :: <directory-locator>); - -define method subdirectory-locator - (locator :: <directory-locator>, #rest sub-path) - => (subdirectory :: <directory-locator>) - let old-path = locator.locator-path; - let new-path = concatenate-as(<simple-object-vector>, old-path, sub-path); - make(object-class(locator), - server: locator.locator-server, - path: new-path, - relative?: locator.locator-relative?) -end method subdirectory-locator; - -/// Relative locator - -define open generic relative-locator - (locator :: <physical-locator>, from-locator :: <physical-locator>) - => (relative-locator :: <physical-locator>); - -define method relative-locator - (locator :: <directory-locator>, from-locator :: <directory-locator>) - => (relative-locator :: <directory-locator>) - let path = locator.locator-path; - let from-path = from-locator.locator-path; - case - ~locator.locator-relative? & from-locator.locator-relative? => - locator-error - ("Cannot find relative path of absolute locator %= from relative locator %=", - locator, from-locator); - locator.locator-server ~= from-locator.locator-server => - locator; - path = from-path => - make(object-class(locator), - path: vector(#"self"), - relative?: #t); - otherwise => - make(object-class(locator), - path: relative-path(path, from-path, test: locator.locator-test), - relative?: #t); - end -end method relative-locator; - -define method relative-locator - (locator :: <file-locator>, from-directory :: <directory-locator>) - => (relative-locator :: <file-locator>) - let directory = locator.locator-directory; - let relative-directory = directory & relative-locator(directory, from-directory); - if (relative-directory ~= directory) - simplify-locator - (make(object-class(locator), - directory: relative-directory, - base: locator.locator-base, - extension: locator.locator-extension)) - else - locator - end -end method relative-locator; - -define method relative-locator - (locator :: <physical-locator>, from-locator :: <file-locator>) - => (relative-locator :: <physical-locator>) - let from-directory = from-locator.locator-directory; - case - from-directory => - relative-locator(locator, from-directory); - ~locator.locator-relative? => - locator-error - ("Cannot find relative path of absolute locator %= from relative locator %=", - locator, from-locator); - otherwise => - locator; - end -end method relative-locator; - -/// Merge locators - -define open generic merge-locators - (locator :: <physical-locator>, from-locator :: <physical-locator>) - => (merged-locator :: <physical-locator>); - -/// Merge locators - -define method merge-locators - (locator :: <directory-locator>, from-locator :: <directory-locator>) - => (merged-locator :: <directory-locator>) - if (locator.locator-relative?) - let path = concatenate(from-locator.locator-path, locator.locator-path); - simplify-locator - (make(object-class(locator), - server: from-locator.locator-server, - path: path, - relative?: from-locator.locator-relative?)) - else - locator - end -end method merge-locators; - -define method merge-locators - (locator :: <file-locator>, from-locator :: <directory-locator>) - => (merged-locator :: <file-locator>) - let directory = locator.locator-directory; - let merged-directory - = if (directory) - merge-locators(directory, from-locator) - else - simplify-locator(from-locator) - end; - if (merged-directory ~= directory) - make(object-class(locator), - directory: merged-directory, - base: locator.locator-base, - extension: locator.locator-extension) - else - locator - end -end method merge-locators; - -define method merge-locators - (locator :: <physical-locator>, from-locator :: <file-locator>) - => (merged-locator :: <physical-locator>) - let from-directory = from-locator.locator-directory; - if (from-directory) - merge-locators(locator, from-directory) - else - locator - end -end method merge-locators; - -/// Locator protocols - -define sideways method supports-open-locator? - (locator :: <file-locator>) => (openable? :: <boolean>) - ~locator.locator-relative? -end method supports-open-locator?; - -define sideways method open-locator - (locator :: <file-locator>, #rest keywords, #key, #all-keys) - => (stream :: <stream>) - apply(open-file-stream, locator, keywords) -end method open-locator; -</textarea></div> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - mode: "text/x-dylan", - lineNumbers: true, - matchBrackets: true, - continueComments: "Enter", - extraKeys: {"Ctrl-Q": "toggleComment"}, - tabMode: "indent", - indentUnit: 2 - }); - </script> - - <p><strong>MIME types defined:</strong> <code>text/x-dylan</code>.</p> -</article> diff --git a/assets/js/plugins/codemirror/mode/ecl/ecl.js b/assets/js/plugins/codemirror/mode/ecl/ecl.js deleted file mode 100644 index 18778f16..00000000 --- a/assets/js/plugins/codemirror/mode/ecl/ecl.js +++ /dev/null @@ -1,207 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("ecl", function(config) { - - function words(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - function metaHook(stream, state) { - if (!state.startOfLine) return false; - stream.skipToEnd(); - return "meta"; - } - - var indentUnit = config.indentUnit; - var keyword = words("abs acos allnodes ascii asin asstring atan atan2 ave case choose choosen choosesets clustersize combine correlation cos cosh count covariance cron dataset dedup define denormalize distribute distributed distribution ebcdic enth error evaluate event eventextra eventname exists exp failcode failmessage fetch fromunicode getisvalid global graph group hash hash32 hash64 hashcrc hashmd5 having if index intformat isvalid iterate join keyunicode length library limit ln local log loop map matched matchlength matchposition matchtext matchunicode max merge mergejoin min nolocal nonempty normalize parse pipe power preload process project pull random range rank ranked realformat recordof regexfind regexreplace regroup rejected rollup round roundup row rowdiff sample set sin sinh sizeof soapcall sort sorted sqrt stepped stored sum table tan tanh thisnode topn tounicode transfer trim truncate typeof ungroup unicodeorder variance which workunit xmldecode xmlencode xmltext xmlunicode"); - var variable = words("apply assert build buildindex evaluate fail keydiff keypatch loadxml nothor notify output parallel sequential soapcall wait"); - var variable_2 = words("__compressed__ all and any as atmost before beginc++ best between case const counter csv descend encrypt end endc++ endmacro except exclusive expire export extend false few first flat from full function group header heading hole ifblock import in interface joined keep keyed last left limit load local locale lookup macro many maxcount maxlength min skew module named nocase noroot noscan nosort not of only opt or outer overwrite packed partition penalty physicallength pipe quote record relationship repeat return right scan self separator service shared skew skip sql store terminator thor threshold token transform trim true type unicodeorder unsorted validate virtual whole wild within xml xpath"); - var variable_3 = words("ascii big_endian boolean data decimal ebcdic integer pattern qstring real record rule set of string token udecimal unicode unsigned varstring varunicode"); - var builtin = words("checkpoint deprecated failcode failmessage failure global independent onwarning persist priority recovery stored success wait when"); - var blockKeywords = words("catch class do else finally for if switch try while"); - var atoms = words("true false null"); - var hooks = {"#": metaHook}; - var multiLineStrings; - var isOperatorChar = /[+\-*&%=<>!?|\/]/; - - var curPunc; - - function tokenBase(stream, state) { - var ch = stream.next(); - if (hooks[ch]) { - var result = hooks[ch](stream, state); - if (result !== false) return result; - } - if (ch == '"' || ch == "'") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } - if (/[\[\]{}\(\),;\:\.]/.test(ch)) { - curPunc = ch; - return null; - } - if (/\d/.test(ch)) { - stream.eatWhile(/[\w\.]/); - return "number"; - } - if (ch == "/") { - if (stream.eat("*")) { - state.tokenize = tokenComment; - return tokenComment(stream, state); - } - if (stream.eat("/")) { - stream.skipToEnd(); - return "comment"; - } - } - if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return "operator"; - } - stream.eatWhile(/[\w\$_]/); - var cur = stream.current().toLowerCase(); - if (keyword.propertyIsEnumerable(cur)) { - if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; - return "keyword"; - } else if (variable.propertyIsEnumerable(cur)) { - if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; - return "variable"; - } else if (variable_2.propertyIsEnumerable(cur)) { - if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; - return "variable-2"; - } else if (variable_3.propertyIsEnumerable(cur)) { - if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; - return "variable-3"; - } else if (builtin.propertyIsEnumerable(cur)) { - if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; - return "builtin"; - } else { //Data types are of from KEYWORD## - var i = cur.length - 1; - while(i >= 0 && (!isNaN(cur[i]) || cur[i] == '_')) - --i; - - if (i > 0) { - var cur2 = cur.substr(0, i + 1); - if (variable_3.propertyIsEnumerable(cur2)) { - if (blockKeywords.propertyIsEnumerable(cur2)) curPunc = "newstatement"; - return "variable-3"; - } - } - } - if (atoms.propertyIsEnumerable(cur)) return "atom"; - return null; - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next, end = false; - while ((next = stream.next()) != null) { - if (next == quote && !escaped) {end = true; break;} - escaped = !escaped && next == "\\"; - } - if (end || !(escaped || multiLineStrings)) - state.tokenize = tokenBase; - return "string"; - }; - } - - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - - function Context(indented, column, type, align, prev) { - this.indented = indented; - this.column = column; - this.type = type; - this.align = align; - this.prev = prev; - } - function pushContext(state, col, type) { - return state.context = new Context(state.indented, col, type, null, state.context); - } - function popContext(state) { - var t = state.context.type; - if (t == ")" || t == "]" || t == "}") - state.indented = state.context.indented; - return state.context = state.context.prev; - } - - // Interface - - return { - startState: function(basecolumn) { - return { - tokenize: null, - context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), - indented: 0, - startOfLine: true - }; - }, - - token: function(stream, state) { - var ctx = state.context; - if (stream.sol()) { - if (ctx.align == null) ctx.align = false; - state.indented = stream.indentation(); - state.startOfLine = true; - } - if (stream.eatSpace()) return null; - curPunc = null; - var style = (state.tokenize || tokenBase)(stream, state); - if (style == "comment" || style == "meta") return style; - if (ctx.align == null) ctx.align = true; - - if ((curPunc == ";" || curPunc == ":") && ctx.type == "statement") popContext(state); - else if (curPunc == "{") pushContext(state, stream.column(), "}"); - else if (curPunc == "[") pushContext(state, stream.column(), "]"); - else if (curPunc == "(") pushContext(state, stream.column(), ")"); - else if (curPunc == "}") { - while (ctx.type == "statement") ctx = popContext(state); - if (ctx.type == "}") ctx = popContext(state); - while (ctx.type == "statement") ctx = popContext(state); - } - else if (curPunc == ctx.type) popContext(state); - else if (ctx.type == "}" || ctx.type == "top" || (ctx.type == "statement" && curPunc == "newstatement")) - pushContext(state, stream.column(), "statement"); - state.startOfLine = false; - return style; - }, - - indent: function(state, textAfter) { - if (state.tokenize != tokenBase && state.tokenize != null) return 0; - var ctx = state.context, firstChar = textAfter && textAfter.charAt(0); - if (ctx.type == "statement" && firstChar == "}") ctx = ctx.prev; - var closing = firstChar == ctx.type; - if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : indentUnit); - else if (ctx.align) return ctx.column + (closing ? 0 : 1); - else return ctx.indented + (closing ? 0 : indentUnit); - }, - - electricChars: "{}" - }; -}); - -CodeMirror.defineMIME("text/x-ecl", "ecl"); - -}); diff --git a/assets/js/plugins/codemirror/mode/ecl/index.html b/assets/js/plugins/codemirror/mode/ecl/index.html deleted file mode 100644 index 2306860d..00000000 --- a/assets/js/plugins/codemirror/mode/ecl/index.html +++ /dev/null @@ -1,52 +0,0 @@ -<!doctype html> - -<title>CodeMirror: ECL mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="ecl.js"></script> -<style>.CodeMirror {border: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">ECL</a> - </ul> -</div> - -<article> -<h2>ECL mode</h2> -<form><textarea id="code" name="code"> -/* -sample useless code to demonstrate ecl syntax highlighting -this is a multiline comment! -*/ - -// this is a singleline comment! - -import ut; -r := - record - string22 s1 := '123'; - integer4 i1 := 123; - end; -#option('tmp', true); -d := dataset('tmp::qb', r, thor); -output(d); -</textarea></form> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), {}); - </script> - - <p>Based on CodeMirror's clike mode. For more information see <a href="http://hpccsystems.com">HPCC Systems</a> web site.</p> - <p><strong>MIME types defined:</strong> <code>text/x-ecl</code>.</p> - - </article> diff --git a/assets/js/plugins/codemirror/mode/eiffel/eiffel.js b/assets/js/plugins/codemirror/mode/eiffel/eiffel.js deleted file mode 100644 index fcdf295c..00000000 --- a/assets/js/plugins/codemirror/mode/eiffel/eiffel.js +++ /dev/null @@ -1,162 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("eiffel", function() { - function wordObj(words) { - var o = {}; - for (var i = 0, e = words.length; i < e; ++i) o[words[i]] = true; - return o; - } - var keywords = wordObj([ - 'note', - 'across', - 'when', - 'variant', - 'until', - 'unique', - 'undefine', - 'then', - 'strip', - 'select', - 'retry', - 'rescue', - 'require', - 'rename', - 'reference', - 'redefine', - 'prefix', - 'once', - 'old', - 'obsolete', - 'loop', - 'local', - 'like', - 'is', - 'inspect', - 'infix', - 'include', - 'if', - 'frozen', - 'from', - 'external', - 'export', - 'ensure', - 'end', - 'elseif', - 'else', - 'do', - 'creation', - 'create', - 'check', - 'alias', - 'agent', - 'separate', - 'invariant', - 'inherit', - 'indexing', - 'feature', - 'expanded', - 'deferred', - 'class', - 'Void', - 'True', - 'Result', - 'Precursor', - 'False', - 'Current', - 'create', - 'attached', - 'detachable', - 'as', - 'and', - 'implies', - 'not', - 'or' - ]); - var operators = wordObj([":=", "and then","and", "or","<<",">>"]); - var curPunc; - - function chain(newtok, stream, state) { - state.tokenize.push(newtok); - return newtok(stream, state); - } - - function tokenBase(stream, state) { - curPunc = null; - if (stream.eatSpace()) return null; - var ch = stream.next(); - if (ch == '"'||ch == "'") { - return chain(readQuoted(ch, "string"), stream, state); - } else if (ch == "-"&&stream.eat("-")) { - stream.skipToEnd(); - return "comment"; - } else if (ch == ":"&&stream.eat("=")) { - return "operator"; - } else if (/[0-9]/.test(ch)) { - stream.eatWhile(/[xXbBCc0-9\.]/); - stream.eat(/[\?\!]/); - return "ident"; - } else if (/[a-zA-Z_0-9]/.test(ch)) { - stream.eatWhile(/[a-zA-Z_0-9]/); - stream.eat(/[\?\!]/); - return "ident"; - } else if (/[=+\-\/*^%<>~]/.test(ch)) { - stream.eatWhile(/[=+\-\/*^%<>~]/); - return "operator"; - } else { - return null; - } - } - - function readQuoted(quote, style, unescaped) { - return function(stream, state) { - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == quote && (unescaped || !escaped)) { - state.tokenize.pop(); - break; - } - escaped = !escaped && ch == "%"; - } - return style; - }; - } - - return { - startState: function() { - return {tokenize: [tokenBase]}; - }, - - token: function(stream, state) { - var style = state.tokenize[state.tokenize.length-1](stream, state); - if (style == "ident") { - var word = stream.current(); - style = keywords.propertyIsEnumerable(stream.current()) ? "keyword" - : operators.propertyIsEnumerable(stream.current()) ? "operator" - : /^[A-Z][A-Z_0-9]*$/g.test(word) ? "tag" - : /^0[bB][0-1]+$/g.test(word) ? "number" - : /^0[cC][0-7]+$/g.test(word) ? "number" - : /^0[xX][a-fA-F0-9]+$/g.test(word) ? "number" - : /^([0-9]+\.[0-9]*)|([0-9]*\.[0-9]+)$/g.test(word) ? "number" - : /^[0-9]+$/g.test(word) ? "number" - : "variable"; - } - return style; - }, - lineComment: "--" - }; -}); - -CodeMirror.defineMIME("text/x-eiffel", "eiffel"); - -}); diff --git a/assets/js/plugins/codemirror/mode/eiffel/index.html b/assets/js/plugins/codemirror/mode/eiffel/index.html deleted file mode 100644 index 108a71be..00000000 --- a/assets/js/plugins/codemirror/mode/eiffel/index.html +++ /dev/null @@ -1,429 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Eiffel mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<link rel="stylesheet" href="../../theme/neat.css"> -<script src="../../lib/codemirror.js"></script> -<script src="eiffel.js"></script> -<style> - .CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;} - .cm-s-default span.cm-arrow { color: red; } - </style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Eiffel</a> - </ul> -</div> - -<article> -<h2>Eiffel mode</h2> -<form><textarea id="code" name="code"> -note - description: "[ - Project-wide universal properties. - This class is an ancestor to all developer-written classes. - ANY may be customized for individual projects or teams. - ]" - - library: "Free implementation of ELKS library" - status: "See notice at end of class." - legal: "See notice at end of class." - date: "$Date: 2013-01-25 11:49:00 -0800 (Fri, 25 Jan 2013) $" - revision: "$Revision: 712 $" - -class - ANY - -feature -- Customization - -feature -- Access - - generator: STRING - -- Name of current object's generating class - -- (base class of the type of which it is a direct instance) - external - "built_in" - ensure - generator_not_void: Result /= Void - generator_not_empty: not Result.is_empty - end - - generating_type: TYPE [detachable like Current] - -- Type of current object - -- (type of which it is a direct instance) - do - Result := {detachable like Current} - ensure - generating_type_not_void: Result /= Void - end - -feature -- Status report - - conforms_to (other: ANY): BOOLEAN - -- Does type of current object conform to type - -- of `other' (as per Eiffel: The Language, chapter 13)? - require - other_not_void: other /= Void - external - "built_in" - end - - same_type (other: ANY): BOOLEAN - -- Is type of current object identical to type of `other'? - require - other_not_void: other /= Void - external - "built_in" - ensure - definition: Result = (conforms_to (other) and - other.conforms_to (Current)) - end - -feature -- Comparison - - is_equal (other: like Current): BOOLEAN - -- Is `other' attached to an object considered - -- equal to current object? - require - other_not_void: other /= Void - external - "built_in" - ensure - symmetric: Result implies other ~ Current - consistent: standard_is_equal (other) implies Result - end - - frozen standard_is_equal (other: like Current): BOOLEAN - -- Is `other' attached to an object of the same type - -- as current object, and field-by-field identical to it? - require - other_not_void: other /= Void - external - "built_in" - ensure - same_type: Result implies same_type (other) - symmetric: Result implies other.standard_is_equal (Current) - end - - frozen equal (a: detachable ANY; b: like a): BOOLEAN - -- Are `a' and `b' either both void or attached - -- to objects considered equal? - do - if a = Void then - Result := b = Void - else - Result := b /= Void and then - a.is_equal (b) - end - ensure - definition: Result = (a = Void and b = Void) or else - ((a /= Void and b /= Void) and then - a.is_equal (b)) - end - - frozen standard_equal (a: detachable ANY; b: like a): BOOLEAN - -- Are `a' and `b' either both void or attached to - -- field-by-field identical objects of the same type? - -- Always uses default object comparison criterion. - do - if a = Void then - Result := b = Void - else - Result := b /= Void and then - a.standard_is_equal (b) - end - ensure - definition: Result = (a = Void and b = Void) or else - ((a /= Void and b /= Void) and then - a.standard_is_equal (b)) - end - - frozen is_deep_equal (other: like Current): BOOLEAN - -- Are `Current' and `other' attached to isomorphic object structures? - require - other_not_void: other /= Void - external - "built_in" - ensure - shallow_implies_deep: standard_is_equal (other) implies Result - same_type: Result implies same_type (other) - symmetric: Result implies other.is_deep_equal (Current) - end - - frozen deep_equal (a: detachable ANY; b: like a): BOOLEAN - -- Are `a' and `b' either both void - -- or attached to isomorphic object structures? - do - if a = Void then - Result := b = Void - else - Result := b /= Void and then a.is_deep_equal (b) - end - ensure - shallow_implies_deep: standard_equal (a, b) implies Result - both_or_none_void: (a = Void) implies (Result = (b = Void)) - same_type: (Result and (a /= Void)) implies (b /= Void and then a.same_type (b)) - symmetric: Result implies deep_equal (b, a) - end - -feature -- Duplication - - frozen twin: like Current - -- New object equal to `Current' - -- `twin' calls `copy'; to change copying/twinning semantics, redefine `copy'. - external - "built_in" - ensure - twin_not_void: Result /= Void - is_equal: Result ~ Current - end - - copy (other: like Current) - -- Update current object using fields of object attached - -- to `other', so as to yield equal objects. - require - other_not_void: other /= Void - type_identity: same_type (other) - external - "built_in" - ensure - is_equal: Current ~ other - end - - frozen standard_copy (other: like Current) - -- Copy every field of `other' onto corresponding field - -- of current object. - require - other_not_void: other /= Void - type_identity: same_type (other) - external - "built_in" - ensure - is_standard_equal: standard_is_equal (other) - end - - frozen clone (other: detachable ANY): like other - -- Void if `other' is void; otherwise new object - -- equal to `other' - -- - -- For non-void `other', `clone' calls `copy'; - -- to change copying/cloning semantics, redefine `copy'. - obsolete - "Use `twin' instead." - do - if other /= Void then - Result := other.twin - end - ensure - equal: Result ~ other - end - - frozen standard_clone (other: detachable ANY): like other - -- Void if `other' is void; otherwise new object - -- field-by-field identical to `other'. - -- Always uses default copying semantics. - obsolete - "Use `standard_twin' instead." - do - if other /= Void then - Result := other.standard_twin - end - ensure - equal: standard_equal (Result, other) - end - - frozen standard_twin: like Current - -- New object field-by-field identical to `other'. - -- Always uses default copying semantics. - external - "built_in" - ensure - standard_twin_not_void: Result /= Void - equal: standard_equal (Result, Current) - end - - frozen deep_twin: like Current - -- New object structure recursively duplicated from Current. - external - "built_in" - ensure - deep_twin_not_void: Result /= Void - deep_equal: deep_equal (Current, Result) - end - - frozen deep_clone (other: detachable ANY): like other - -- Void if `other' is void: otherwise, new object structure - -- recursively duplicated from the one attached to `other' - obsolete - "Use `deep_twin' instead." - do - if other /= Void then - Result := other.deep_twin - end - ensure - deep_equal: deep_equal (other, Result) - end - - frozen deep_copy (other: like Current) - -- Effect equivalent to that of: - -- `copy' (`other' . `deep_twin') - require - other_not_void: other /= Void - do - copy (other.deep_twin) - ensure - deep_equal: deep_equal (Current, other) - end - -feature {NONE} -- Retrieval - - frozen internal_correct_mismatch - -- Called from runtime to perform a proper dynamic dispatch on `correct_mismatch' - -- from MISMATCH_CORRECTOR. - local - l_msg: STRING - l_exc: EXCEPTIONS - do - if attached {MISMATCH_CORRECTOR} Current as l_corrector then - l_corrector.correct_mismatch - else - create l_msg.make_from_string ("Mismatch: ") - create l_exc - l_msg.append (generating_type.name) - l_exc.raise_retrieval_exception (l_msg) - end - end - -feature -- Output - - io: STD_FILES - -- Handle to standard file setup - once - create Result - Result.set_output_default - ensure - io_not_void: Result /= Void - end - - out: STRING - -- New string containing terse printable representation - -- of current object - do - Result := tagged_out - ensure - out_not_void: Result /= Void - end - - frozen tagged_out: STRING - -- New string containing terse printable representation - -- of current object - external - "built_in" - ensure - tagged_out_not_void: Result /= Void - end - - print (o: detachable ANY) - -- Write terse external representation of `o' - -- on standard output. - do - if o /= Void then - io.put_string (o.out) - end - end - -feature -- Platform - - Operating_environment: OPERATING_ENVIRONMENT - -- Objects available from the operating system - once - create Result - ensure - operating_environment_not_void: Result /= Void - end - -feature {NONE} -- Initialization - - default_create - -- Process instances of classes with no creation clause. - -- (Default: do nothing.) - do - end - -feature -- Basic operations - - default_rescue - -- Process exception for routines with no Rescue clause. - -- (Default: do nothing.) - do - end - - frozen do_nothing - -- Execute a null action. - do - end - - frozen default: detachable like Current - -- Default value of object's type - do - end - - frozen default_pointer: POINTER - -- Default value of type `POINTER' - -- (Avoid the need to write `p'.`default' for - -- some `p' of type `POINTER'.) - do - ensure - -- Result = Result.default - end - - frozen as_attached: attached like Current - -- Attached version of Current - -- (Can be used during transitional period to convert - -- non-void-safe classes to void-safe ones.) - do - Result := Current - end - -invariant - reflexive_equality: standard_is_equal (Current) - reflexive_conformance: conforms_to (Current) - -note - copyright: "Copyright (c) 1984-2012, Eiffel Software and others" - license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" - source: "[ - Eiffel Software - 5949 Hollister Ave., Goleta, CA 93117 USA - Telephone 805-685-1006, Fax 805-685-6869 - Website http://www.eiffel.com - Customer support http://support.eiffel.com - ]" - -end - -</textarea></form> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - mode: "text/x-eiffel", - indentUnit: 4, - lineNumbers: true, - theme: "neat" - }); - </script> - - <p><strong>MIME types defined:</strong> <code>text/x-eiffel</code>.</p> - - <p> Created by <a href="https://github.com/ynh">YNH</a>.</p> - </article> diff --git a/assets/js/plugins/codemirror/mode/erlang/erlang.js b/assets/js/plugins/codemirror/mode/erlang/erlang.js deleted file mode 100644 index fbca292f..00000000 --- a/assets/js/plugins/codemirror/mode/erlang/erlang.js +++ /dev/null @@ -1,622 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/*jshint unused:true, eqnull:true, curly:true, bitwise:true */ -/*jshint undef:true, latedef:true, trailing:true */ -/*global CodeMirror:true */ - -// erlang mode. -// tokenizer -> token types -> CodeMirror styles -// tokenizer maintains a parse stack -// indenter uses the parse stack - -// TODO indenter: -// bit syntax -// old guard/bif/conversion clashes (e.g. "float/1") -// type/spec/opaque - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMIME("text/x-erlang", "erlang"); - -CodeMirror.defineMode("erlang", function(cmCfg) { - "use strict"; - -///////////////////////////////////////////////////////////////////////////// -// constants - - var typeWords = [ - "-type", "-spec", "-export_type", "-opaque"]; - - var keywordWords = [ - "after","begin","catch","case","cond","end","fun","if", - "let","of","query","receive","try","when"]; - - var separatorRE = /[\->,;]/; - var separatorWords = [ - "->",";",","]; - - var operatorAtomWords = [ - "and","andalso","band","bnot","bor","bsl","bsr","bxor", - "div","not","or","orelse","rem","xor"]; - - var operatorSymbolRE = /[\+\-\*\/<>=\|:!]/; - var operatorSymbolWords = [ - "=","+","-","*","/",">",">=","<","=<","=:=","==","=/=","/=","||","<-","!"]; - - var openParenRE = /[<\(\[\{]/; - var openParenWords = [ - "<<","(","[","{"]; - - var closeParenRE = /[>\)\]\}]/; - var closeParenWords = [ - "}","]",")",">>"]; - - var guardWords = [ - "is_atom","is_binary","is_bitstring","is_boolean","is_float", - "is_function","is_integer","is_list","is_number","is_pid", - "is_port","is_record","is_reference","is_tuple", - "atom","binary","bitstring","boolean","function","integer","list", - "number","pid","port","record","reference","tuple"]; - - var bifWords = [ - "abs","adler32","adler32_combine","alive","apply","atom_to_binary", - "atom_to_list","binary_to_atom","binary_to_existing_atom", - "binary_to_list","binary_to_term","bit_size","bitstring_to_list", - "byte_size","check_process_code","contact_binary","crc32", - "crc32_combine","date","decode_packet","delete_module", - "disconnect_node","element","erase","exit","float","float_to_list", - "garbage_collect","get","get_keys","group_leader","halt","hd", - "integer_to_list","internal_bif","iolist_size","iolist_to_binary", - "is_alive","is_atom","is_binary","is_bitstring","is_boolean", - "is_float","is_function","is_integer","is_list","is_number","is_pid", - "is_port","is_process_alive","is_record","is_reference","is_tuple", - "length","link","list_to_atom","list_to_binary","list_to_bitstring", - "list_to_existing_atom","list_to_float","list_to_integer", - "list_to_pid","list_to_tuple","load_module","make_ref","module_loaded", - "monitor_node","node","node_link","node_unlink","nodes","notalive", - "now","open_port","pid_to_list","port_close","port_command", - "port_connect","port_control","pre_loaded","process_flag", - "process_info","processes","purge_module","put","register", - "registered","round","self","setelement","size","spawn","spawn_link", - "spawn_monitor","spawn_opt","split_binary","statistics", - "term_to_binary","time","throw","tl","trunc","tuple_size", - "tuple_to_list","unlink","unregister","whereis"]; - -// upper case: [A-Z] [Ø-Þ] [À-Ö] -// lower case: [a-z] [ß-ö] [ø-ÿ] - var anumRE = /[\w@Ø-ÞÀ-Öß-öø-ÿ]/; - var escapesRE = - /[0-7]{1,3}|[bdefnrstv\\"']|\^[a-zA-Z]|x[0-9a-zA-Z]{2}|x{[0-9a-zA-Z]+}/; - -///////////////////////////////////////////////////////////////////////////// -// tokenizer - - function tokenizer(stream,state) { - // in multi-line string - if (state.in_string) { - state.in_string = (!doubleQuote(stream)); - return rval(state,stream,"string"); - } - - // in multi-line atom - if (state.in_atom) { - state.in_atom = (!singleQuote(stream)); - return rval(state,stream,"atom"); - } - - // whitespace - if (stream.eatSpace()) { - return rval(state,stream,"whitespace"); - } - - // attributes and type specs - if (!peekToken(state) && - stream.match(/-\s*[a-zß-öø-ÿ][\wØ-ÞÀ-Öß-öø-ÿ]*/)) { - if (is_member(stream.current(),typeWords)) { - return rval(state,stream,"type"); - }else{ - return rval(state,stream,"attribute"); - } - } - - var ch = stream.next(); - - // comment - if (ch == '%') { - stream.skipToEnd(); - return rval(state,stream,"comment"); - } - - // colon - if (ch == ":") { - return rval(state,stream,"colon"); - } - - // macro - if (ch == '?') { - stream.eatSpace(); - stream.eatWhile(anumRE); - return rval(state,stream,"macro"); - } - - // record - if (ch == "#") { - stream.eatSpace(); - stream.eatWhile(anumRE); - return rval(state,stream,"record"); - } - - // dollar escape - if (ch == "$") { - if (stream.next() == "\\" && !stream.match(escapesRE)) { - return rval(state,stream,"error"); - } - return rval(state,stream,"number"); - } - - // dot - if (ch == ".") { - return rval(state,stream,"dot"); - } - - // quoted atom - if (ch == '\'') { - if (!(state.in_atom = (!singleQuote(stream)))) { - if (stream.match(/\s*\/\s*[0-9]/,false)) { - stream.match(/\s*\/\s*[0-9]/,true); - return rval(state,stream,"fun"); // 'f'/0 style fun - } - if (stream.match(/\s*\(/,false) || stream.match(/\s*:/,false)) { - return rval(state,stream,"function"); - } - } - return rval(state,stream,"atom"); - } - - // string - if (ch == '"') { - state.in_string = (!doubleQuote(stream)); - return rval(state,stream,"string"); - } - - // variable - if (/[A-Z_Ø-ÞÀ-Ö]/.test(ch)) { - stream.eatWhile(anumRE); - return rval(state,stream,"variable"); - } - - // atom/keyword/BIF/function - if (/[a-z_ß-öø-ÿ]/.test(ch)) { - stream.eatWhile(anumRE); - - if (stream.match(/\s*\/\s*[0-9]/,false)) { - stream.match(/\s*\/\s*[0-9]/,true); - return rval(state,stream,"fun"); // f/0 style fun - } - - var w = stream.current(); - - if (is_member(w,keywordWords)) { - return rval(state,stream,"keyword"); - }else if (is_member(w,operatorAtomWords)) { - return rval(state,stream,"operator"); - }else if (stream.match(/\s*\(/,false)) { - // 'put' and 'erlang:put' are bifs, 'foo:put' is not - if (is_member(w,bifWords) && - ((peekToken(state).token != ":") || - (peekToken(state,2).token == "erlang"))) { - return rval(state,stream,"builtin"); - }else if (is_member(w,guardWords)) { - return rval(state,stream,"guard"); - }else{ - return rval(state,stream,"function"); - } - }else if (is_member(w,operatorAtomWords)) { - return rval(state,stream,"operator"); - }else if (lookahead(stream) == ":") { - if (w == "erlang") { - return rval(state,stream,"builtin"); - } else { - return rval(state,stream,"function"); - } - }else if (is_member(w,["true","false"])) { - return rval(state,stream,"boolean"); - }else if (is_member(w,["true","false"])) { - return rval(state,stream,"boolean"); - }else{ - return rval(state,stream,"atom"); - } - } - - // number - var digitRE = /[0-9]/; - var radixRE = /[0-9a-zA-Z]/; // 36#zZ style int - if (digitRE.test(ch)) { - stream.eatWhile(digitRE); - if (stream.eat('#')) { // 36#aZ style integer - if (!stream.eatWhile(radixRE)) { - stream.backUp(1); //"36#" - syntax error - } - } else if (stream.eat('.')) { // float - if (!stream.eatWhile(digitRE)) { - stream.backUp(1); // "3." - probably end of function - } else { - if (stream.eat(/[eE]/)) { // float with exponent - if (stream.eat(/[-+]/)) { - if (!stream.eatWhile(digitRE)) { - stream.backUp(2); // "2e-" - syntax error - } - } else { - if (!stream.eatWhile(digitRE)) { - stream.backUp(1); // "2e" - syntax error - } - } - } - } - } - return rval(state,stream,"number"); // normal integer - } - - // open parens - if (nongreedy(stream,openParenRE,openParenWords)) { - return rval(state,stream,"open_paren"); - } - - // close parens - if (nongreedy(stream,closeParenRE,closeParenWords)) { - return rval(state,stream,"close_paren"); - } - - // separators - if (greedy(stream,separatorRE,separatorWords)) { - return rval(state,stream,"separator"); - } - - // operators - if (greedy(stream,operatorSymbolRE,operatorSymbolWords)) { - return rval(state,stream,"operator"); - } - - return rval(state,stream,null); - } - -///////////////////////////////////////////////////////////////////////////// -// utilities - function nongreedy(stream,re,words) { - if (stream.current().length == 1 && re.test(stream.current())) { - stream.backUp(1); - while (re.test(stream.peek())) { - stream.next(); - if (is_member(stream.current(),words)) { - return true; - } - } - stream.backUp(stream.current().length-1); - } - return false; - } - - function greedy(stream,re,words) { - if (stream.current().length == 1 && re.test(stream.current())) { - while (re.test(stream.peek())) { - stream.next(); - } - while (0 < stream.current().length) { - if (is_member(stream.current(),words)) { - return true; - }else{ - stream.backUp(1); - } - } - stream.next(); - } - return false; - } - - function doubleQuote(stream) { - return quote(stream, '"', '\\'); - } - - function singleQuote(stream) { - return quote(stream,'\'','\\'); - } - - function quote(stream,quoteChar,escapeChar) { - while (!stream.eol()) { - var ch = stream.next(); - if (ch == quoteChar) { - return true; - }else if (ch == escapeChar) { - stream.next(); - } - } - return false; - } - - function lookahead(stream) { - var m = stream.match(/([\n\s]+|%[^\n]*\n)*(.)/,false); - return m ? m.pop() : ""; - } - - function is_member(element,list) { - return (-1 < list.indexOf(element)); - } - - function rval(state,stream,type) { - - // parse stack - pushToken(state,realToken(type,stream)); - - // map erlang token type to CodeMirror style class - // erlang -> CodeMirror tag - switch (type) { - case "atom": return "atom"; - case "attribute": return "attribute"; - case "boolean": return "atom"; - case "builtin": return "builtin"; - case "close_paren": return null; - case "colon": return null; - case "comment": return "comment"; - case "dot": return null; - case "error": return "error"; - case "fun": return "meta"; - case "function": return "tag"; - case "guard": return "property"; - case "keyword": return "keyword"; - case "macro": return "variable-2"; - case "number": return "number"; - case "open_paren": return null; - case "operator": return "operator"; - case "record": return "bracket"; - case "separator": return null; - case "string": return "string"; - case "type": return "def"; - case "variable": return "variable"; - default: return null; - } - } - - function aToken(tok,col,ind,typ) { - return {token: tok, - column: col, - indent: ind, - type: typ}; - } - - function realToken(type,stream) { - return aToken(stream.current(), - stream.column(), - stream.indentation(), - type); - } - - function fakeToken(type) { - return aToken(type,0,0,type); - } - - function peekToken(state,depth) { - var len = state.tokenStack.length; - var dep = (depth ? depth : 1); - - if (len < dep) { - return false; - }else{ - return state.tokenStack[len-dep]; - } - } - - function pushToken(state,token) { - - if (!(token.type == "comment" || token.type == "whitespace")) { - state.tokenStack = maybe_drop_pre(state.tokenStack,token); - state.tokenStack = maybe_drop_post(state.tokenStack); - } - } - - function maybe_drop_pre(s,token) { - var last = s.length-1; - - if (0 < last && s[last].type === "record" && token.type === "dot") { - s.pop(); - }else if (0 < last && s[last].type === "group") { - s.pop(); - s.push(token); - }else{ - s.push(token); - } - return s; - } - - function maybe_drop_post(s) { - var last = s.length-1; - - if (s[last].type === "dot") { - return []; - } - if (s[last].type === "fun" && s[last-1].token === "fun") { - return s.slice(0,last-1); - } - switch (s[s.length-1].token) { - case "}": return d(s,{g:["{"]}); - case "]": return d(s,{i:["["]}); - case ")": return d(s,{i:["("]}); - case ">>": return d(s,{i:["<<"]}); - case "end": return d(s,{i:["begin","case","fun","if","receive","try"]}); - case ",": return d(s,{e:["begin","try","when","->", - ",","(","[","{","<<"]}); - case "->": return d(s,{r:["when"], - m:["try","if","case","receive"]}); - case ";": return d(s,{E:["case","fun","if","receive","try","when"]}); - case "catch":return d(s,{e:["try"]}); - case "of": return d(s,{e:["case"]}); - case "after":return d(s,{e:["receive","try"]}); - default: return s; - } - } - - function d(stack,tt) { - // stack is a stack of Token objects. - // tt is an object; {type:tokens} - // type is a char, tokens is a list of token strings. - // The function returns (possibly truncated) stack. - // It will descend the stack, looking for a Token such that Token.token - // is a member of tokens. If it does not find that, it will normally (but - // see "E" below) return stack. If it does find a match, it will remove - // all the Tokens between the top and the matched Token. - // If type is "m", that is all it does. - // If type is "i", it will also remove the matched Token and the top Token. - // If type is "g", like "i", but add a fake "group" token at the top. - // If type is "r", it will remove the matched Token, but not the top Token. - // If type is "e", it will keep the matched Token but not the top Token. - // If type is "E", it behaves as for type "e", except if there is no match, - // in which case it will return an empty stack. - - for (var type in tt) { - var len = stack.length-1; - var tokens = tt[type]; - for (var i = len-1; -1 < i ; i--) { - if (is_member(stack[i].token,tokens)) { - var ss = stack.slice(0,i); - switch (type) { - case "m": return ss.concat(stack[i]).concat(stack[len]); - case "r": return ss.concat(stack[len]); - case "i": return ss; - case "g": return ss.concat(fakeToken("group")); - case "E": return ss.concat(stack[i]); - case "e": return ss.concat(stack[i]); - } - } - } - } - return (type == "E" ? [] : stack); - } - -///////////////////////////////////////////////////////////////////////////// -// indenter - - function indenter(state,textAfter) { - var t; - var unit = cmCfg.indentUnit; - var wordAfter = wordafter(textAfter); - var currT = peekToken(state,1); - var prevT = peekToken(state,2); - - if (state.in_string || state.in_atom) { - return CodeMirror.Pass; - }else if (!prevT) { - return 0; - }else if (currT.token == "when") { - return currT.column+unit; - }else if (wordAfter === "when" && prevT.type === "function") { - return prevT.indent+unit; - }else if (wordAfter === "(" && currT.token === "fun") { - return currT.column+3; - }else if (wordAfter === "catch" && (t = getToken(state,["try"]))) { - return t.column; - }else if (is_member(wordAfter,["end","after","of"])) { - t = getToken(state,["begin","case","fun","if","receive","try"]); - return t ? t.column : CodeMirror.Pass; - }else if (is_member(wordAfter,closeParenWords)) { - t = getToken(state,openParenWords); - return t ? t.column : CodeMirror.Pass; - }else if (is_member(currT.token,[",","|","||"]) || - is_member(wordAfter,[",","|","||"])) { - t = postcommaToken(state); - return t ? t.column+t.token.length : unit; - }else if (currT.token == "->") { - if (is_member(prevT.token, ["receive","case","if","try"])) { - return prevT.column+unit+unit; - }else{ - return prevT.column+unit; - } - }else if (is_member(currT.token,openParenWords)) { - return currT.column+currT.token.length; - }else{ - t = defaultToken(state); - return truthy(t) ? t.column+unit : 0; - } - } - - function wordafter(str) { - var m = str.match(/,|[a-z]+|\}|\]|\)|>>|\|+|\(/); - - return truthy(m) && (m.index === 0) ? m[0] : ""; - } - - function postcommaToken(state) { - var objs = state.tokenStack.slice(0,-1); - var i = getTokenIndex(objs,"type",["open_paren"]); - - return truthy(objs[i]) ? objs[i] : false; - } - - function defaultToken(state) { - var objs = state.tokenStack; - var stop = getTokenIndex(objs,"type",["open_paren","separator","keyword"]); - var oper = getTokenIndex(objs,"type",["operator"]); - - if (truthy(stop) && truthy(oper) && stop < oper) { - return objs[stop+1]; - } else if (truthy(stop)) { - return objs[stop]; - } else { - return false; - } - } - - function getToken(state,tokens) { - var objs = state.tokenStack; - var i = getTokenIndex(objs,"token",tokens); - - return truthy(objs[i]) ? objs[i] : false; - } - - function getTokenIndex(objs,propname,propvals) { - - for (var i = objs.length-1; -1 < i ; i--) { - if (is_member(objs[i][propname],propvals)) { - return i; - } - } - return false; - } - - function truthy(x) { - return (x !== false) && (x != null); - } - -///////////////////////////////////////////////////////////////////////////// -// this object defines the mode - - return { - startState: - function() { - return {tokenStack: [], - in_string: false, - in_atom: false}; - }, - - token: - function(stream, state) { - return tokenizer(stream, state); - }, - - indent: - function(state, textAfter) { - return indenter(state,textAfter); - }, - - lineComment: "%" - }; -}); - -}); diff --git a/assets/js/plugins/codemirror/mode/erlang/index.html b/assets/js/plugins/codemirror/mode/erlang/index.html deleted file mode 100644 index 6d06a890..00000000 --- a/assets/js/plugins/codemirror/mode/erlang/index.html +++ /dev/null @@ -1,76 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Erlang mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<link rel="stylesheet" href="../../theme/erlang-dark.css"> -<script src="../../lib/codemirror.js"></script> -<script src="../../addon/edit/matchbrackets.js"></script> -<script src="erlang.js"></script> -<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Erlang</a> - </ul> -</div> - -<article> -<h2>Erlang mode</h2> -<form><textarea id="code" name="code"> -%% -*- mode: erlang; erlang-indent-level: 2 -*- -%%% Created : 7 May 2012 by mats cronqvist <masse@klarna.com> - -%% @doc -%% Demonstrates how to print a record. -%% @end - --module('ex'). --author('mats cronqvist'). --export([demo/0, - rec_info/1]). - --record(demo,{a="One",b="Two",c="Three",d="Four"}). - -rec_info(demo) -> record_info(fields,demo). - -demo() -> expand_recs(?MODULE,#demo{a="A",b="BB"}). - -expand_recs(M,List) when is_list(List) -> - [expand_recs(M,L)||L<-List]; -expand_recs(M,Tup) when is_tuple(Tup) -> - case tuple_size(Tup) of - L when L < 1 -> Tup; - L -> - try - Fields = M:rec_info(element(1,Tup)), - L = length(Fields)+1, - lists:zip(Fields,expand_recs(M,tl(tuple_to_list(Tup)))) - catch - _:_ -> list_to_tuple(expand_recs(M,tuple_to_list(Tup))) - end - end; -expand_recs(_,Term) -> - Term. -</textarea></form> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers: true, - matchBrackets: true, - extraKeys: {"Tab": "indentAuto"}, - theme: "erlang-dark" - }); - </script> - - <p><strong>MIME types defined:</strong> <code>text/x-erlang</code>.</p> - </article> diff --git a/assets/js/plugins/codemirror/mode/fortran/fortran.js b/assets/js/plugins/codemirror/mode/fortran/fortran.js deleted file mode 100644 index 4d88f006..00000000 --- a/assets/js/plugins/codemirror/mode/fortran/fortran.js +++ /dev/null @@ -1,188 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("fortran", function() { - function words(array) { - var keys = {}; - for (var i = 0; i < array.length; ++i) { - keys[array[i]] = true; - } - return keys; - } - - var keywords = words([ - "abstract", "accept", "allocatable", "allocate", - "array", "assign", "asynchronous", "backspace", - "bind", "block", "byte", "call", "case", - "class", "close", "common", "contains", - "continue", "cycle", "data", "deallocate", - "decode", "deferred", "dimension", "do", - "elemental", "else", "encode", "end", - "endif", "entry", "enumerator", "equivalence", - "exit", "external", "extrinsic", "final", - "forall", "format", "function", "generic", - "go", "goto", "if", "implicit", "import", "include", - "inquire", "intent", "interface", "intrinsic", - "module", "namelist", "non_intrinsic", - "non_overridable", "none", "nopass", - "nullify", "open", "optional", "options", - "parameter", "pass", "pause", "pointer", - "print", "private", "program", "protected", - "public", "pure", "read", "recursive", "result", - "return", "rewind", "save", "select", "sequence", - "stop", "subroutine", "target", "then", "to", "type", - "use", "value", "volatile", "where", "while", - "write"]); - var builtins = words(["abort", "abs", "access", "achar", "acos", - "adjustl", "adjustr", "aimag", "aint", "alarm", - "all", "allocated", "alog", "amax", "amin", - "amod", "and", "anint", "any", "asin", - "associated", "atan", "besj", "besjn", "besy", - "besyn", "bit_size", "btest", "cabs", "ccos", - "ceiling", "cexp", "char", "chdir", "chmod", - "clog", "cmplx", "command_argument_count", - "complex", "conjg", "cos", "cosh", "count", - "cpu_time", "cshift", "csin", "csqrt", "ctime", - "c_funloc", "c_loc", "c_associated", "c_null_ptr", - "c_null_funptr", "c_f_pointer", "c_null_char", - "c_alert", "c_backspace", "c_form_feed", - "c_new_line", "c_carriage_return", - "c_horizontal_tab", "c_vertical_tab", "dabs", - "dacos", "dasin", "datan", "date_and_time", - "dbesj", "dbesj", "dbesjn", "dbesy", "dbesy", - "dbesyn", "dble", "dcos", "dcosh", "ddim", "derf", - "derfc", "dexp", "digits", "dim", "dint", "dlog", - "dlog", "dmax", "dmin", "dmod", "dnint", - "dot_product", "dprod", "dsign", "dsinh", - "dsin", "dsqrt", "dtanh", "dtan", "dtime", - "eoshift", "epsilon", "erf", "erfc", "etime", - "exit", "exp", "exponent", "extends_type_of", - "fdate", "fget", "fgetc", "float", "floor", - "flush", "fnum", "fputc", "fput", "fraction", - "fseek", "fstat", "ftell", "gerror", "getarg", - "get_command", "get_command_argument", - "get_environment_variable", "getcwd", - "getenv", "getgid", "getlog", "getpid", - "getuid", "gmtime", "hostnm", "huge", "iabs", - "iachar", "iand", "iargc", "ibclr", "ibits", - "ibset", "ichar", "idate", "idim", "idint", - "idnint", "ieor", "ierrno", "ifix", "imag", - "imagpart", "index", "int", "ior", "irand", - "isatty", "ishft", "ishftc", "isign", - "iso_c_binding", "is_iostat_end", "is_iostat_eor", - "itime", "kill", "kind", "lbound", "len", "len_trim", - "lge", "lgt", "link", "lle", "llt", "lnblnk", "loc", - "log", "logical", "long", "lshift", "lstat", "ltime", - "matmul", "max", "maxexponent", "maxloc", "maxval", - "mclock", "merge", "move_alloc", "min", "minexponent", - "minloc", "minval", "mod", "modulo", "mvbits", - "nearest", "new_line", "nint", "not", "or", "pack", - "perror", "precision", "present", "product", "radix", - "rand", "random_number", "random_seed", "range", - "real", "realpart", "rename", "repeat", "reshape", - "rrspacing", "rshift", "same_type_as", "scale", - "scan", "second", "selected_int_kind", - "selected_real_kind", "set_exponent", "shape", - "short", "sign", "signal", "sinh", "sin", "sleep", - "sngl", "spacing", "spread", "sqrt", "srand", "stat", - "sum", "symlnk", "system", "system_clock", "tan", - "tanh", "time", "tiny", "transfer", "transpose", - "trim", "ttynam", "ubound", "umask", "unlink", - "unpack", "verify", "xor", "zabs", "zcos", "zexp", - "zlog", "zsin", "zsqrt"]); - - var dataTypes = words(["c_bool", "c_char", "c_double", "c_double_complex", - "c_float", "c_float_complex", "c_funptr", "c_int", - "c_int16_t", "c_int32_t", "c_int64_t", "c_int8_t", - "c_int_fast16_t", "c_int_fast32_t", "c_int_fast64_t", - "c_int_fast8_t", "c_int_least16_t", "c_int_least32_t", - "c_int_least64_t", "c_int_least8_t", "c_intmax_t", - "c_intptr_t", "c_long", "c_long_double", - "c_long_double_complex", "c_long_long", "c_ptr", - "c_short", "c_signed_char", "c_size_t", "character", - "complex", "double", "integer", "logical", "real"]); - var isOperatorChar = /[+\-*&=<>\/\:]/; - var litOperator = new RegExp("(\.and\.|\.or\.|\.eq\.|\.lt\.|\.le\.|\.gt\.|\.ge\.|\.ne\.|\.not\.|\.eqv\.|\.neqv\.)", "i"); - - function tokenBase(stream, state) { - - if (stream.match(litOperator)){ - return 'operator'; - } - - var ch = stream.next(); - if (ch == "!") { - stream.skipToEnd(); - return "comment"; - } - if (ch == '"' || ch == "'") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } - if (/[\[\]\(\),]/.test(ch)) { - return null; - } - if (/\d/.test(ch)) { - stream.eatWhile(/[\w\.]/); - return "number"; - } - if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return "operator"; - } - stream.eatWhile(/[\w\$_]/); - var word = stream.current().toLowerCase(); - - if (keywords.hasOwnProperty(word)){ - return 'keyword'; - } - if (builtins.hasOwnProperty(word) || dataTypes.hasOwnProperty(word)) { - return 'builtin'; - } - return "variable"; - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next, end = false; - while ((next = stream.next()) != null) { - if (next == quote && !escaped) { - end = true; - break; - } - escaped = !escaped && next == "\\"; - } - if (end || !escaped) state.tokenize = null; - return "string"; - }; - } - - // Interface - - return { - startState: function() { - return {tokenize: null}; - }, - - token: function(stream, state) { - if (stream.eatSpace()) return null; - var style = (state.tokenize || tokenBase)(stream, state); - if (style == "comment" || style == "meta") return style; - return style; - } - }; -}); - -CodeMirror.defineMIME("text/x-fortran", "fortran"); - -}); diff --git a/assets/js/plugins/codemirror/mode/fortran/index.html b/assets/js/plugins/codemirror/mode/fortran/index.html deleted file mode 100644 index 102e8f82..00000000 --- a/assets/js/plugins/codemirror/mode/fortran/index.html +++ /dev/null @@ -1,81 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Fortran mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="fortran.js"></script> -<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Fortran</a> - </ul> -</div> - -<article> -<h2>Fortran mode</h2> - - -<div><textarea id="code" name="code"> -! Example Fortran code - program average - - ! Read in some numbers and take the average - ! As written, if there are no data points, an average of zero is returned - ! While this may not be desired behavior, it keeps this example simple - - implicit none - - real, dimension(:), allocatable :: points - integer :: number_of_points - real :: average_points=0., positive_average=0., negative_average=0. - - write (*,*) "Input number of points to average:" - read (*,*) number_of_points - - allocate (points(number_of_points)) - - write (*,*) "Enter the points to average:" - read (*,*) points - - ! Take the average by summing points and dividing by number_of_points - if (number_of_points > 0) average_points = sum(points) / number_of_points - - ! Now form average over positive and negative points only - if (count(points > 0.) > 0) then - positive_average = sum(points, points > 0.) / count(points > 0.) - end if - - if (count(points < 0.) > 0) then - negative_average = sum(points, points < 0.) / count(points < 0.) - end if - - deallocate (points) - - ! Print result to terminal - write (*,'(a,g12.4)') 'Average = ', average_points - write (*,'(a,g12.4)') 'Average of positive points = ', positive_average - write (*,'(a,g12.4)') 'Average of negative points = ', negative_average - - end program average -</textarea></div> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers: true, - mode: "text/x-fortran" - }); - </script> - - <p><strong>MIME types defined:</strong> <code>text/x-Fortran</code>.</p> - </article> diff --git a/assets/js/plugins/codemirror/mode/gas/gas.js b/assets/js/plugins/codemirror/mode/gas/gas.js deleted file mode 100644 index 0c74bedc..00000000 --- a/assets/js/plugins/codemirror/mode/gas/gas.js +++ /dev/null @@ -1,345 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("gas", function(_config, parserConfig) { - 'use strict'; - - // If an architecture is specified, its initialization function may - // populate this array with custom parsing functions which will be - // tried in the event that the standard functions do not find a match. - var custom = []; - - // The symbol used to start a line comment changes based on the target - // architecture. - // If no architecture is pased in "parserConfig" then only multiline - // comments will have syntax support. - var lineCommentStartSymbol = ""; - - // These directives are architecture independent. - // Machine specific directives should go in their respective - // architecture initialization function. - // Reference: - // http://sourceware.org/binutils/docs/as/Pseudo-Ops.html#Pseudo-Ops - var directives = { - ".abort" : "builtin", - ".align" : "builtin", - ".altmacro" : "builtin", - ".ascii" : "builtin", - ".asciz" : "builtin", - ".balign" : "builtin", - ".balignw" : "builtin", - ".balignl" : "builtin", - ".bundle_align_mode" : "builtin", - ".bundle_lock" : "builtin", - ".bundle_unlock" : "builtin", - ".byte" : "builtin", - ".cfi_startproc" : "builtin", - ".comm" : "builtin", - ".data" : "builtin", - ".def" : "builtin", - ".desc" : "builtin", - ".dim" : "builtin", - ".double" : "builtin", - ".eject" : "builtin", - ".else" : "builtin", - ".elseif" : "builtin", - ".end" : "builtin", - ".endef" : "builtin", - ".endfunc" : "builtin", - ".endif" : "builtin", - ".equ" : "builtin", - ".equiv" : "builtin", - ".eqv" : "builtin", - ".err" : "builtin", - ".error" : "builtin", - ".exitm" : "builtin", - ".extern" : "builtin", - ".fail" : "builtin", - ".file" : "builtin", - ".fill" : "builtin", - ".float" : "builtin", - ".func" : "builtin", - ".global" : "builtin", - ".gnu_attribute" : "builtin", - ".hidden" : "builtin", - ".hword" : "builtin", - ".ident" : "builtin", - ".if" : "builtin", - ".incbin" : "builtin", - ".include" : "builtin", - ".int" : "builtin", - ".internal" : "builtin", - ".irp" : "builtin", - ".irpc" : "builtin", - ".lcomm" : "builtin", - ".lflags" : "builtin", - ".line" : "builtin", - ".linkonce" : "builtin", - ".list" : "builtin", - ".ln" : "builtin", - ".loc" : "builtin", - ".loc_mark_labels" : "builtin", - ".local" : "builtin", - ".long" : "builtin", - ".macro" : "builtin", - ".mri" : "builtin", - ".noaltmacro" : "builtin", - ".nolist" : "builtin", - ".octa" : "builtin", - ".offset" : "builtin", - ".org" : "builtin", - ".p2align" : "builtin", - ".popsection" : "builtin", - ".previous" : "builtin", - ".print" : "builtin", - ".protected" : "builtin", - ".psize" : "builtin", - ".purgem" : "builtin", - ".pushsection" : "builtin", - ".quad" : "builtin", - ".reloc" : "builtin", - ".rept" : "builtin", - ".sbttl" : "builtin", - ".scl" : "builtin", - ".section" : "builtin", - ".set" : "builtin", - ".short" : "builtin", - ".single" : "builtin", - ".size" : "builtin", - ".skip" : "builtin", - ".sleb128" : "builtin", - ".space" : "builtin", - ".stab" : "builtin", - ".string" : "builtin", - ".struct" : "builtin", - ".subsection" : "builtin", - ".symver" : "builtin", - ".tag" : "builtin", - ".text" : "builtin", - ".title" : "builtin", - ".type" : "builtin", - ".uleb128" : "builtin", - ".val" : "builtin", - ".version" : "builtin", - ".vtable_entry" : "builtin", - ".vtable_inherit" : "builtin", - ".warning" : "builtin", - ".weak" : "builtin", - ".weakref" : "builtin", - ".word" : "builtin" - }; - - var registers = {}; - - function x86(_parserConfig) { - lineCommentStartSymbol = "#"; - - registers.ax = "variable"; - registers.eax = "variable-2"; - registers.rax = "variable-3"; - - registers.bx = "variable"; - registers.ebx = "variable-2"; - registers.rbx = "variable-3"; - - registers.cx = "variable"; - registers.ecx = "variable-2"; - registers.rcx = "variable-3"; - - registers.dx = "variable"; - registers.edx = "variable-2"; - registers.rdx = "variable-3"; - - registers.si = "variable"; - registers.esi = "variable-2"; - registers.rsi = "variable-3"; - - registers.di = "variable"; - registers.edi = "variable-2"; - registers.rdi = "variable-3"; - - registers.sp = "variable"; - registers.esp = "variable-2"; - registers.rsp = "variable-3"; - - registers.bp = "variable"; - registers.ebp = "variable-2"; - registers.rbp = "variable-3"; - - registers.ip = "variable"; - registers.eip = "variable-2"; - registers.rip = "variable-3"; - - registers.cs = "keyword"; - registers.ds = "keyword"; - registers.ss = "keyword"; - registers.es = "keyword"; - registers.fs = "keyword"; - registers.gs = "keyword"; - } - - function armv6(_parserConfig) { - // Reference: - // http://infocenter.arm.com/help/topic/com.arm.doc.qrc0001l/QRC0001_UAL.pdf - // http://infocenter.arm.com/help/topic/com.arm.doc.ddi0301h/DDI0301H_arm1176jzfs_r0p7_trm.pdf - lineCommentStartSymbol = "@"; - directives.syntax = "builtin"; - - registers.r0 = "variable"; - registers.r1 = "variable"; - registers.r2 = "variable"; - registers.r3 = "variable"; - registers.r4 = "variable"; - registers.r5 = "variable"; - registers.r6 = "variable"; - registers.r7 = "variable"; - registers.r8 = "variable"; - registers.r9 = "variable"; - registers.r10 = "variable"; - registers.r11 = "variable"; - registers.r12 = "variable"; - - registers.sp = "variable-2"; - registers.lr = "variable-2"; - registers.pc = "variable-2"; - registers.r13 = registers.sp; - registers.r14 = registers.lr; - registers.r15 = registers.pc; - - custom.push(function(ch, stream) { - if (ch === '#') { - stream.eatWhile(/\w/); - return "number"; - } - }); - } - - var arch = (parserConfig.architecture || "x86").toLowerCase(); - if (arch === "x86") { - x86(parserConfig); - } else if (arch === "arm" || arch === "armv6") { - armv6(parserConfig); - } - - function nextUntilUnescaped(stream, end) { - var escaped = false, next; - while ((next = stream.next()) != null) { - if (next === end && !escaped) { - return false; - } - escaped = !escaped && next === "\\"; - } - return escaped; - } - - function clikeComment(stream, state) { - var maybeEnd = false, ch; - while ((ch = stream.next()) != null) { - if (ch === "/" && maybeEnd) { - state.tokenize = null; - break; - } - maybeEnd = (ch === "*"); - } - return "comment"; - } - - return { - startState: function() { - return { - tokenize: null - }; - }, - - token: function(stream, state) { - if (state.tokenize) { - return state.tokenize(stream, state); - } - - if (stream.eatSpace()) { - return null; - } - - var style, cur, ch = stream.next(); - - if (ch === "/") { - if (stream.eat("*")) { - state.tokenize = clikeComment; - return clikeComment(stream, state); - } - } - - if (ch === lineCommentStartSymbol) { - stream.skipToEnd(); - return "comment"; - } - - if (ch === '"') { - nextUntilUnescaped(stream, '"'); - return "string"; - } - - if (ch === '.') { - stream.eatWhile(/\w/); - cur = stream.current().toLowerCase(); - style = directives[cur]; - return style || null; - } - - if (ch === '=') { - stream.eatWhile(/\w/); - return "tag"; - } - - if (ch === '{') { - return "braket"; - } - - if (ch === '}') { - return "braket"; - } - - if (/\d/.test(ch)) { - if (ch === "0" && stream.eat("x")) { - stream.eatWhile(/[0-9a-fA-F]/); - return "number"; - } - stream.eatWhile(/\d/); - return "number"; - } - - if (/\w/.test(ch)) { - stream.eatWhile(/\w/); - if (stream.eat(":")) { - return 'tag'; - } - cur = stream.current().toLowerCase(); - style = registers[cur]; - return style || null; - } - - for (var i = 0; i < custom.length; i++) { - style = custom[i](ch, stream, state); - if (style) { - return style; - } - } - }, - - lineComment: lineCommentStartSymbol, - blockCommentStart: "/*", - blockCommentEnd: "*/" - }; -}); - -}); diff --git a/assets/js/plugins/codemirror/mode/gas/index.html b/assets/js/plugins/codemirror/mode/gas/index.html deleted file mode 100644 index df75ca2d..00000000 --- a/assets/js/plugins/codemirror/mode/gas/index.html +++ /dev/null @@ -1,68 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Gas mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="gas.js"></script> -<style>.CodeMirror {border: 2px inset #dee;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Gas</a> - </ul> -</div> - -<article> -<h2>Gas mode</h2> -<form> -<textarea id="code" name="code"> -.syntax unified -.global main - -/* - * A - * multi-line - * comment. - */ - -@ A single line comment. - -main: - push {sp, lr} - ldr r0, =message - bl puts - mov r0, #0 - pop {sp, pc} - -message: - .asciz "Hello world!<br />" -</textarea> - </form> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers: true, - mode: {name: "gas", architecture: "ARMv6"}, - }); - </script> - - <p>Handles AT&amp;T assembler syntax (more specifically this handles - the GNU Assembler (gas) syntax.) - It takes a single optional configuration parameter: - <code>architecture</code>, which can be one of <code>"ARM"</code>, - <code>"ARMv6"</code> or <code>"x86"</code>. - Including the parameter adds syntax for the registers and special - directives for the supplied architecture. - - <p><strong>MIME types defined:</strong> <code>text/x-gas</code></p> - </article> diff --git a/assets/js/plugins/codemirror/mode/gfm/gfm.js b/assets/js/plugins/codemirror/mode/gfm/gfm.js deleted file mode 100644 index eb0b7c19..00000000 --- a/assets/js/plugins/codemirror/mode/gfm/gfm.js +++ /dev/null @@ -1,122 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../markdown/markdown"), require("../../addon/mode/overlay")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../markdown/markdown", "../../addon/mode/overlay"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("gfm", function(config, modeConfig) { - var codeDepth = 0; - function blankLine(state) { - state.code = false; - return null; - } - var gfmOverlay = { - startState: function() { - return { - code: false, - codeBlock: false, - ateSpace: false - }; - }, - copyState: function(s) { - return { - code: s.code, - codeBlock: s.codeBlock, - ateSpace: s.ateSpace - }; - }, - token: function(stream, state) { - state.combineTokens = null; - - // Hack to prevent formatting override inside code blocks (block and inline) - if (state.codeBlock) { - if (stream.match(/^```/)) { - state.codeBlock = false; - return null; - } - stream.skipToEnd(); - return null; - } - if (stream.sol()) { - state.code = false; - } - if (stream.sol() && stream.match(/^```/)) { - stream.skipToEnd(); - state.codeBlock = true; - return null; - } - // If this block is changed, it may need to be updated in Markdown mode - if (stream.peek() === '`') { - stream.next(); - var before = stream.pos; - stream.eatWhile('`'); - var difference = 1 + stream.pos - before; - if (!state.code) { - codeDepth = difference; - state.code = true; - } else { - if (difference === codeDepth) { // Must be exact - state.code = false; - } - } - return null; - } else if (state.code) { - stream.next(); - return null; - } - // Check if space. If so, links can be formatted later on - if (stream.eatSpace()) { - state.ateSpace = true; - return null; - } - if (stream.sol() || state.ateSpace) { - state.ateSpace = false; - if(stream.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+@)?(?:[a-f0-9]{7,40}\b)/)) { - // User/Project@SHA - // User@SHA - // SHA - state.combineTokens = true; - return "link"; - } else if (stream.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+)?#[0-9]+\b/)) { - // User/Project#Num - // User#Num - // #Num - state.combineTokens = true; - return "link"; - } - } - if (stream.match(/^((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]|\([^\s()<>]*\))+(?:\([^\s()<>]*\)|[^\s`*!()\[\]{};:'".,<>?«»“”‘’]))/i) && - stream.string.slice(stream.start - 2, stream.start) != "](") { - // URLs - // Taken from http://daringfireball.net/2010/07/improved_regex_for_matching_urls - // And then (issue #1160) simplified to make it not crash the Chrome Regexp engine - state.combineTokens = true; - return "link"; - } - stream.next(); - return null; - }, - blankLine: blankLine - }; - - var markdownConfig = { - underscoresBreakWords: false, - taskLists: true, - fencedCodeBlocks: true - }; - for (var attr in modeConfig) { - markdownConfig[attr] = modeConfig[attr]; - } - markdownConfig.name = "markdown"; - CodeMirror.defineMIME("gfmBase", markdownConfig); - return CodeMirror.overlayMode(CodeMirror.getMode(config, "gfmBase"), gfmOverlay); -}, "markdown"); - -}); diff --git a/assets/js/plugins/codemirror/mode/gfm/index.html b/assets/js/plugins/codemirror/mode/gfm/index.html deleted file mode 100644 index a35e5686..00000000 --- a/assets/js/plugins/codemirror/mode/gfm/index.html +++ /dev/null @@ -1,82 +0,0 @@ -<!doctype html> - -<title>CodeMirror: GFM mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="../../addon/mode/overlay.js"></script> -<script src="../xml/xml.js"></script> -<script src="../markdown/markdown.js"></script> -<script src="gfm.js"></script> -<script src="../javascript/javascript.js"></script> -<script src="../css/css.js"></script> -<script src="../htmlmixed/htmlmixed.js"></script> -<script src="../clike/clike.js"></script> -<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">GFM</a> - </ul> -</div> - -<article> -<h2>GFM mode</h2> -<form><textarea id="code" name="code"> -GitHub Flavored Markdown -======================== - -Everything from markdown plus GFM features: - -## URL autolinking - -Underscores_are_allowed_between_words. - -## Fenced code blocks (and syntax highlighting) - -```javascript -for (var i = 0; i &lt; items.length; i++) { - console.log(items[i], i); // log them -} -``` - -## Task Lists - -- [ ] Incomplete task list item -- [x] **Completed** task list item - -## A bit of GitHub spice - -* SHA: be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2 -* User@SHA ref: mojombo@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2 -* User/Project@SHA: mojombo/god@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2 -* \#Num: #1 -* User/#Num: mojombo#1 -* User/Project#Num: mojombo/god#1 - -See http://github.github.com/github-flavored-markdown/. - -</textarea></form> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - mode: 'gfm', - lineNumbers: true, - theme: "default" - }); - </script> - - <p>Optionally depends on other modes for properly highlighted code blocks.</p> - - <p><strong>Parsing/Highlighting Tests:</strong> <a href="../../test/index.html#gfm_*">normal</a>, <a href="../../test/index.html#verbose,gfm_*">verbose</a>.</p> - - </article> diff --git a/assets/js/plugins/codemirror/mode/gfm/test.js b/assets/js/plugins/codemirror/mode/gfm/test.js deleted file mode 100644 index b9af5e89..00000000 --- a/assets/js/plugins/codemirror/mode/gfm/test.js +++ /dev/null @@ -1,164 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - var mode = CodeMirror.getMode({tabSize: 4}, "gfm"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - var modeHighlightFormatting = CodeMirror.getMode({tabSize: 4}, {name: "gfm", highlightFormatting: true}); - function FT(name) { test.mode(name, modeHighlightFormatting, Array.prototype.slice.call(arguments, 1)); } - - FT("codeBackticks", - "[comment&formatting&formatting-code `][comment foo][comment&formatting&formatting-code `]"); - - FT("doubleBackticks", - "[comment&formatting&formatting-code ``][comment foo ` bar][comment&formatting&formatting-code ``]"); - - FT("codeBlock", - "[comment&formatting&formatting-code-block ```css]", - "[tag foo]", - "[comment&formatting&formatting-code-block ```]"); - - FT("taskList", - "[variable-2&formatting&formatting-list&formatting-list-ul - ][meta&formatting&formatting-task [ ]]][variable-2 foo]", - "[variable-2&formatting&formatting-list&formatting-list-ul - ][property&formatting&formatting-task [x]]][variable-2 foo]"); - - MT("emInWordAsterisk", - "foo[em *bar*]hello"); - - MT("emInWordUnderscore", - "foo_bar_hello"); - - MT("emStrongUnderscore", - "[strong __][em&strong _foo__][em _] bar"); - - MT("fencedCodeBlocks", - "[comment ```]", - "[comment foo]", - "", - "[comment ```]", - "bar"); - - MT("fencedCodeBlockModeSwitching", - "[comment ```javascript]", - "[variable foo]", - "", - "[comment ```]", - "bar"); - - MT("taskListAsterisk", - "[variable-2 * []] foo]", // Invalid; must have space or x between [] - "[variable-2 * [ ]]bar]", // Invalid; must have space after ] - "[variable-2 * [x]]hello]", // Invalid; must have space after ] - "[variable-2 * ][meta [ ]]][variable-2 [world]]]", // Valid; tests reference style links - " [variable-3 * ][property [x]]][variable-3 foo]"); // Valid; can be nested - - MT("taskListPlus", - "[variable-2 + []] foo]", // Invalid; must have space or x between [] - "[variable-2 + [ ]]bar]", // Invalid; must have space after ] - "[variable-2 + [x]]hello]", // Invalid; must have space after ] - "[variable-2 + ][meta [ ]]][variable-2 [world]]]", // Valid; tests reference style links - " [variable-3 + ][property [x]]][variable-3 foo]"); // Valid; can be nested - - MT("taskListDash", - "[variable-2 - []] foo]", // Invalid; must have space or x between [] - "[variable-2 - [ ]]bar]", // Invalid; must have space after ] - "[variable-2 - [x]]hello]", // Invalid; must have space after ] - "[variable-2 - ][meta [ ]]][variable-2 [world]]]", // Valid; tests reference style links - " [variable-3 - ][property [x]]][variable-3 foo]"); // Valid; can be nested - - MT("taskListNumber", - "[variable-2 1. []] foo]", // Invalid; must have space or x between [] - "[variable-2 2. [ ]]bar]", // Invalid; must have space after ] - "[variable-2 3. [x]]hello]", // Invalid; must have space after ] - "[variable-2 4. ][meta [ ]]][variable-2 [world]]]", // Valid; tests reference style links - " [variable-3 1. ][property [x]]][variable-3 foo]"); // Valid; can be nested - - MT("SHA", - "foo [link be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2] bar"); - - MT("SHAEmphasis", - "[em *foo ][em&link be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2][em *]"); - - MT("shortSHA", - "foo [link be6a8cc] bar"); - - MT("tooShortSHA", - "foo be6a8c bar"); - - MT("longSHA", - "foo be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd22 bar"); - - MT("badSHA", - "foo be6a8cc1c1ecfe9489fb51e4869af15a13fc2cg2 bar"); - - MT("userSHA", - "foo [link bar@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2] hello"); - - MT("userSHAEmphasis", - "[em *foo ][em&link bar@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2][em *]"); - - MT("userProjectSHA", - "foo [link bar/hello@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2] world"); - - MT("userProjectSHAEmphasis", - "[em *foo ][em&link bar/hello@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2][em *]"); - - MT("num", - "foo [link #1] bar"); - - MT("numEmphasis", - "[em *foo ][em&link #1][em *]"); - - MT("badNum", - "foo #1bar hello"); - - MT("userNum", - "foo [link bar#1] hello"); - - MT("userNumEmphasis", - "[em *foo ][em&link bar#1][em *]"); - - MT("userProjectNum", - "foo [link bar/hello#1] world"); - - MT("userProjectNumEmphasis", - "[em *foo ][em&link bar/hello#1][em *]"); - - MT("vanillaLink", - "foo [link http://www.example.com/] bar"); - - MT("vanillaLinkPunctuation", - "foo [link http://www.example.com/]. bar"); - - MT("vanillaLinkExtension", - "foo [link http://www.example.com/index.html] bar"); - - MT("vanillaLinkEmphasis", - "foo [em *][em&link http://www.example.com/index.html][em *] bar"); - - MT("notALink", - "[comment ```css]", - "[tag foo] {[property color]:[keyword black];}", - "[comment ```][link http://www.example.com/]"); - - MT("notALink", - "[comment ``foo `bar` http://www.example.com/``] hello"); - - MT("notALink", - "[comment `foo]", - "[link http://www.example.com/]", - "[comment `foo]", - "", - "[link http://www.example.com/]"); - - MT("headerCodeBlockGithub", - "[header&header-1 # heading]", - "", - "[comment ```]", - "[comment code]", - "[comment ```]", - "", - "Commit: [link be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2]", - "Issue: [link #1]", - "Link: [link http://www.example.com/]"); -})(); diff --git a/assets/js/plugins/codemirror/mode/gherkin/gherkin.js b/assets/js/plugins/codemirror/mode/gherkin/gherkin.js deleted file mode 100644 index fc2ebee1..00000000 --- a/assets/js/plugins/codemirror/mode/gherkin/gherkin.js +++ /dev/null @@ -1,178 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/* -Gherkin mode - http://www.cukes.info/ -Report bugs/issues here: https://github.com/codemirror/CodeMirror/issues -*/ - -// Following Objs from Brackets implementation: https://github.com/tregusti/brackets-gherkin/blob/master/main.js -//var Quotes = { -// SINGLE: 1, -// DOUBLE: 2 -//}; - -//var regex = { -// keywords: /(Feature| {2}(Scenario|In order to|As|I)| {4}(Given|When|Then|And))/ -//}; - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("gherkin", function () { - return { - startState: function () { - return { - lineNumber: 0, - tableHeaderLine: false, - allowFeature: true, - allowBackground: false, - allowScenario: false, - allowSteps: false, - allowPlaceholders: false, - allowMultilineArgument: false, - inMultilineString: false, - inMultilineTable: false, - inKeywordLine: false - }; - }, - token: function (stream, state) { - if (stream.sol()) { - state.lineNumber++; - state.inKeywordLine = false; - if (state.inMultilineTable) { - state.tableHeaderLine = false; - if (!stream.match(/\s*\|/, false)) { - state.allowMultilineArgument = false; - state.inMultilineTable = false; - } - } - } - - stream.eatSpace(); - - if (state.allowMultilineArgument) { - - // STRING - if (state.inMultilineString) { - if (stream.match('"""')) { - state.inMultilineString = false; - state.allowMultilineArgument = false; - } else { - stream.match(/.*/); - } - return "string"; - } - - // TABLE - if (state.inMultilineTable) { - if (stream.match(/\|\s*/)) { - return "bracket"; - } else { - stream.match(/[^\|]*/); - return state.tableHeaderLine ? "header" : "string"; - } - } - - // DETECT START - if (stream.match('"""')) { - // String - state.inMultilineString = true; - return "string"; - } else if (stream.match("|")) { - // Table - state.inMultilineTable = true; - state.tableHeaderLine = true; - return "bracket"; - } - - } - - // LINE COMMENT - if (stream.match(/#.*/)) { - return "comment"; - - // TAG - } else if (!state.inKeywordLine && stream.match(/@\S+/)) { - return "tag"; - - // FEATURE - } else if (!state.inKeywordLine && state.allowFeature && stream.match(/(機能|功能|フィーチャ|기능|โครงหลัก|ความสามารถ|ความต้องการทางธุรกิจ|ಹೆಚ್ಚಳ|గుణము|ਮੁਹਾਂਦਰਾ|ਨਕਸ਼ ਨੁਹਾਰ|ਖਾਸੀਅਤ|रूप लेख|وِیژگی|خاصية|תכונה|Функціонал|Функция|Функционалност|Функционал|Үзенчәлеклелек|Свойство|Особина|Мөмкинлек|Могућност|Λειτουργία|Δυνατότητα|Właściwość|Vlastnosť|Trajto|Tính năng|Savybė|Pretty much|Požiadavka|Požadavek|Potrzeba biznesowa|Özellik|Osobina|Ominaisuus|Omadus|OH HAI|Mogućnost|Mogucnost|Jellemző|Hwæt|Hwaet|Funzionalità|Funktionalitéit|Funktionalität|Funkcja|Funkcionalnost|Funkcionalitāte|Funkcia|Fungsi|Functionaliteit|Funcționalitate|Funcţionalitate|Functionalitate|Funcionalitat|Funcionalidade|Fonctionnalité|Fitur|Fīča|Feature|Eiginleiki|Egenskap|Egenskab|Característica|Caracteristica|Business Need|Aspekt|Arwedd|Ahoy matey!|Ability):/)) { - state.allowScenario = true; - state.allowBackground = true; - state.allowPlaceholders = false; - state.allowSteps = false; - state.allowMultilineArgument = false; - state.inKeywordLine = true; - return "keyword"; - - // BACKGROUND - } else if (!state.inKeywordLine && state.allowBackground && stream.match(/(背景|배경|แนวคิด|ಹಿನ್ನೆಲೆ|నేపథ్యం|ਪਿਛੋਕੜ|पृष्ठभूमि|زمینه|الخلفية|רקע|Тарих|Предыстория|Предистория|Позадина|Передумова|Основа|Контекст|Кереш|Υπόβαθρο|Założenia|Yo\-ho\-ho|Tausta|Taust|Situācija|Rerefons|Pozadina|Pozadie|Pozadí|Osnova|Latar Belakang|Kontext|Konteksts|Kontekstas|Kontekst|Háttér|Hannergrond|Grundlage|Geçmiş|Fundo|Fono|First off|Dis is what went down|Dasar|Contexto|Contexte|Context|Contesto|Cenário de Fundo|Cenario de Fundo|Cefndir|Bối cảnh|Bakgrunnur|Bakgrunn|Bakgrund|Baggrund|Background|B4|Antecedents|Antecedentes|Ær|Aer|Achtergrond):/)) { - state.allowPlaceholders = false; - state.allowSteps = true; - state.allowBackground = false; - state.allowMultilineArgument = false; - state.inKeywordLine = true; - return "keyword"; - - // SCENARIO OUTLINE - } else if (!state.inKeywordLine && state.allowScenario && stream.match(/(場景大綱|场景大纲|劇本大綱|剧本大纲|テンプレ|シナリオテンプレート|シナリオテンプレ|シナリオアウトライン|시나리오 개요|สรุปเหตุการณ์|โครงสร้างของเหตุการณ์|ವಿವರಣೆ|కథనం|ਪਟਕਥਾ ਰੂਪ ਰੇਖਾ|ਪਟਕਥਾ ਢਾਂਚਾ|परिदृश्य रूपरेखा|سيناريو مخطط|الگوی سناریو|תבנית תרחיש|Сценарийның төзелеше|Сценарий структураси|Структура сценарію|Структура сценария|Структура сценарија|Скица|Рамка на сценарий|Концепт|Περιγραφή Σεναρίου|Wharrimean is|Template Situai|Template Senario|Template Keadaan|Tapausaihio|Szenariogrundriss|Szablon scenariusza|Swa hwær swa|Swa hwaer swa|Struktura scenarija|Structură scenariu|Structura scenariu|Skica|Skenario konsep|Shiver me timbers|Senaryo taslağı|Schema dello scenario|Scenariomall|Scenariomal|Scenario Template|Scenario Outline|Scenario Amlinellol|Scenārijs pēc parauga|Scenarijaus šablonas|Reckon it's like|Raamstsenaarium|Plang vum Szenario|Plan du Scénario|Plan du scénario|Osnova scénáře|Osnova Scenára|Náčrt Scenáru|Náčrt Scénáře|Náčrt Scenára|MISHUN SRSLY|Menggariskan Senario|Lýsing Dæma|Lýsing Atburðarásar|Konturo de la scenaro|Koncept|Khung tình huống|Khung kịch bản|Forgatókönyv vázlat|Esquema do Cenário|Esquema do Cenario|Esquema del escenario|Esquema de l'escenari|Esbozo do escenario|Delineação do Cenário|Delineacao do Cenario|All y'all|Abstrakt Scenario|Abstract Scenario):/)) { - state.allowPlaceholders = true; - state.allowSteps = true; - state.allowMultilineArgument = false; - state.inKeywordLine = true; - return "keyword"; - - // EXAMPLES - } else if (state.allowScenario && stream.match(/(例子|例|サンプル|예|ชุดของเหตุการณ์|ชุดของตัวอย่าง|ಉದಾಹರಣೆಗಳು|ఉదాహరణలు|ਉਦਾਹਰਨਾਂ|उदाहरण|نمونه ها|امثلة|דוגמאות|Үрнәкләр|Сценарији|Примеры|Примери|Приклади|Мисоллар|Мисаллар|Σενάρια|Παραδείγματα|You'll wanna|Voorbeelden|Variantai|Tapaukset|Se þe|Se the|Se ðe|Scenarios|Scenariji|Scenarijai|Przykłady|Primjeri|Primeri|Příklady|Príklady|Piemēri|Példák|Pavyzdžiai|Paraugs|Örnekler|Juhtumid|Exemplos|Exemples|Exemple|Exempel|EXAMPLZ|Examples|Esempi|Enghreifftiau|Ekzemploj|Eksempler|Ejemplos|Dữ liệu|Dead men tell no tales|Dæmi|Contoh|Cenários|Cenarios|Beispiller|Beispiele|Atburðarásir):/)) { - state.allowPlaceholders = false; - state.allowSteps = true; - state.allowBackground = false; - state.allowMultilineArgument = true; - return "keyword"; - - // SCENARIO - } else if (!state.inKeywordLine && state.allowScenario && stream.match(/(場景|场景|劇本|剧本|シナリオ|시나리오|เหตุการณ์|ಕಥಾಸಾರಾಂಶ|సన్నివేశం|ਪਟਕਥਾ|परिदृश्य|سيناريو|سناریو|תרחיש|Сценарій|Сценарио|Сценарий|Пример|Σενάριο|Tình huống|The thing of it is|Tapaus|Szenario|Swa|Stsenaarium|Skenario|Situai|Senaryo|Senario|Scenaro|Scenariusz|Scenariu|Scénario|Scenario|Scenarijus|Scenārijs|Scenarij|Scenarie|Scénář|Scenár|Primer|MISHUN|Kịch bản|Keadaan|Heave to|Forgatókönyv|Escenario|Escenari|Cenário|Cenario|Awww, look mate|Atburðarás):/)) { - state.allowPlaceholders = false; - state.allowSteps = true; - state.allowBackground = false; - state.allowMultilineArgument = false; - state.inKeywordLine = true; - return "keyword"; - - // STEPS - } else if (!state.inKeywordLine && state.allowSteps && stream.match(/(那麼|那么|而且|當|当|并且|同時|同时|前提|假设|假設|假定|假如|但是|但し|並且|もし|ならば|ただし|しかし|かつ|하지만|조건|먼저|만일|만약|단|그리고|그러면|และ |เมื่อ |แต่ |ดังนั้น |กำหนดให้ |ಸ್ಥಿತಿಯನ್ನು |ಮತ್ತು |ನೀಡಿದ |ನಂತರ |ಆದರೆ |మరియు |చెప్పబడినది |కాని |ఈ పరిస్థితిలో |అప్పుడు |ਪਰ |ਤਦ |ਜੇਕਰ |ਜਿਵੇਂ ਕਿ |ਜਦੋਂ |ਅਤੇ |यदि |परन्तु |पर |तब |तदा |तथा |जब |चूंकि |किन्तु |कदा |और |अगर |و |هنگامی |متى |لكن |عندما |ثم |بفرض |با فرض |اما |اذاً |آنگاه |כאשר |וגם |בהינתן |אזי |אז |אבל |Якщо |Һәм |Унда |Тоді |Тогда |То |Также |Та |Пусть |Припустимо, що |Припустимо |Онда |Но |Нехай |Нәтиҗәдә |Лекин |Ләкин |Коли |Когда |Когато |Када |Кад |К тому же |І |И |Задато |Задати |Задате |Если |Допустим |Дано |Дадено |Вә |Ва |Бирок |Әмма |Әйтик |Әгәр |Аммо |Али |Але |Агар |А також |А |Τότε |Όταν |Και |Δεδομένου |Αλλά |Þurh |Þegar |Þa þe |Þá |Þa |Zatati |Zakładając |Zadato |Zadate |Zadano |Zadani |Zadan |Za předpokladu |Za predpokladu |Youse know when youse got |Youse know like when |Yna |Yeah nah |Y'know |Y |Wun |Wtedy |When y'all |When |Wenn |WEN |wann |Ve |Và |Und |Un |ugeholl |Too right |Thurh |Thì |Then y'all |Then |Tha the |Tha |Tetapi |Tapi |Tak |Tada |Tad |Stel |Soit |Siis |Și |Şi |Si |Sed |Se |Så |Quando |Quand |Quan |Pryd |Potom |Pokud |Pokiaľ |Però |Pero |Pak |Oraz |Onda |Ond |Oletetaan |Og |Och |O zaman |Niin |Nhưng |När |Når |Mutta |Men |Mas |Maka |Majd |Mając |Mais |Maar |mä |Ma |Lorsque |Lorsqu'|Logo |Let go and haul |Kun |Kuid |Kui |Kiedy |Khi |Ketika |Kemudian |Keď |Když |Kaj |Kai |Kada |Kad |Jeżeli |Jeśli |Ja |It's just unbelievable |Ir |I CAN HAZ |I |Ha |Givun |Givet |Given y'all |Given |Gitt |Gegeven |Gegeben seien |Gegeben sei |Gdy |Gangway! |Fakat |Étant donnés |Etant donnés |Étant données |Etant données |Étant donnée |Etant donnée |Étant donné |Etant donné |Et |És |Entonces |Entón |Então |Entao |En |Eğer ki |Ef |Eeldades |E |Ðurh |Duota |Dun |Donitaĵo |Donat |Donada |Do |Diyelim ki |Diberi |Dengan |Den youse gotta |DEN |De |Dato |Dați fiind |Daţi fiind |Dati fiind |Dati |Date fiind |Date |Data |Dat fiind |Dar |Dann |dann |Dan |Dados |Dado |Dadas |Dada |Ða ðe |Ða |Cuando |Cho |Cando |Când |Cand |Cal |But y'all |But at the end of the day I reckon |BUT |But |Buh |Blimey! |Biết |Bet |Bagi |Aye |awer |Avast! |Atunci |Atesa |Atès |Apabila |Anrhegedig a |Angenommen |And y'all |And |AN |An |an |Amikor |Amennyiben |Ama |Als |Alors |Allora |Ali |Aleshores |Ale |Akkor |Ak |Adott |Ac |Aber |A zároveň |A tiež |A taktiež |A také |A |a |7 |\* )/)) { - state.inStep = true; - state.allowPlaceholders = true; - state.allowMultilineArgument = true; - state.inKeywordLine = true; - return "keyword"; - - // INLINE STRING - } else if (stream.match(/"[^"]*"?/)) { - return "string"; - - // PLACEHOLDER - } else if (state.allowPlaceholders && stream.match(/<[^>]*>?/)) { - return "variable"; - - // Fall through - } else { - stream.next(); - stream.eatWhile(/[^@"<#]/); - return null; - } - } - }; -}); - -CodeMirror.defineMIME("text/x-feature", "gherkin"); - -}); diff --git a/assets/js/plugins/codemirror/mode/gherkin/index.html b/assets/js/plugins/codemirror/mode/gherkin/index.html deleted file mode 100644 index af8184c9..00000000 --- a/assets/js/plugins/codemirror/mode/gherkin/index.html +++ /dev/null @@ -1,48 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Gherkin mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="gherkin.js"></script> -<style>.CodeMirror { border-top: 1px solid #ddd; border-bottom: 1px solid #ddd; }</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Gherkin</a> - </ul> -</div> - -<article> -<h2>Gherkin mode</h2> -<form><textarea id="code" name="code"> -Feature: Using Google - Background: - Something something - Something else - Scenario: Has a homepage - When I navigate to the google home page - Then the home page should contain the menu and the search form - Scenario: Searching for a term - When I navigate to the google home page - When I search for Tofu - Then the search results page is displayed - Then the search results page contains 10 individual search results - Then the search results contain a link to the wikipedia tofu page -</textarea></form> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), {}); - </script> - - <p><strong>MIME types defined:</strong> <code>text/x-feature</code>.</p> - - </article> diff --git a/assets/js/plugins/codemirror/mode/go/go.js b/assets/js/plugins/codemirror/mode/go/go.js deleted file mode 100644 index 173e034d..00000000 --- a/assets/js/plugins/codemirror/mode/go/go.js +++ /dev/null @@ -1,184 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("go", function(config) { - var indentUnit = config.indentUnit; - - var keywords = { - "break":true, "case":true, "chan":true, "const":true, "continue":true, - "default":true, "defer":true, "else":true, "fallthrough":true, "for":true, - "func":true, "go":true, "goto":true, "if":true, "import":true, - "interface":true, "map":true, "package":true, "range":true, "return":true, - "select":true, "struct":true, "switch":true, "type":true, "var":true, - "bool":true, "byte":true, "complex64":true, "complex128":true, - "float32":true, "float64":true, "int8":true, "int16":true, "int32":true, - "int64":true, "string":true, "uint8":true, "uint16":true, "uint32":true, - "uint64":true, "int":true, "uint":true, "uintptr":true - }; - - var atoms = { - "true":true, "false":true, "iota":true, "nil":true, "append":true, - "cap":true, "close":true, "complex":true, "copy":true, "imag":true, - "len":true, "make":true, "new":true, "panic":true, "print":true, - "println":true, "real":true, "recover":true - }; - - var isOperatorChar = /[+\-*&^%:=<>!|\/]/; - - var curPunc; - - function tokenBase(stream, state) { - var ch = stream.next(); - if (ch == '"' || ch == "'" || ch == "`") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } - if (/[\d\.]/.test(ch)) { - if (ch == ".") { - stream.match(/^[0-9]+([eE][\-+]?[0-9]+)?/); - } else if (ch == "0") { - stream.match(/^[xX][0-9a-fA-F]+/) || stream.match(/^0[0-7]+/); - } else { - stream.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/); - } - return "number"; - } - if (/[\[\]{}\(\),;\:\.]/.test(ch)) { - curPunc = ch; - return null; - } - if (ch == "/") { - if (stream.eat("*")) { - state.tokenize = tokenComment; - return tokenComment(stream, state); - } - if (stream.eat("/")) { - stream.skipToEnd(); - return "comment"; - } - } - if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return "operator"; - } - stream.eatWhile(/[\w\$_\xa1-\uffff]/); - var cur = stream.current(); - if (keywords.propertyIsEnumerable(cur)) { - if (cur == "case" || cur == "default") curPunc = "case"; - return "keyword"; - } - if (atoms.propertyIsEnumerable(cur)) return "atom"; - return "variable"; - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next, end = false; - while ((next = stream.next()) != null) { - if (next == quote && !escaped) {end = true; break;} - escaped = !escaped && next == "\\"; - } - if (end || !(escaped || quote == "`")) - state.tokenize = tokenBase; - return "string"; - }; - } - - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - - function Context(indented, column, type, align, prev) { - this.indented = indented; - this.column = column; - this.type = type; - this.align = align; - this.prev = prev; - } - function pushContext(state, col, type) { - return state.context = new Context(state.indented, col, type, null, state.context); - } - function popContext(state) { - var t = state.context.type; - if (t == ")" || t == "]" || t == "}") - state.indented = state.context.indented; - return state.context = state.context.prev; - } - - // Interface - - return { - startState: function(basecolumn) { - return { - tokenize: null, - context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), - indented: 0, - startOfLine: true - }; - }, - - token: function(stream, state) { - var ctx = state.context; - if (stream.sol()) { - if (ctx.align == null) ctx.align = false; - state.indented = stream.indentation(); - state.startOfLine = true; - if (ctx.type == "case") ctx.type = "}"; - } - if (stream.eatSpace()) return null; - curPunc = null; - var style = (state.tokenize || tokenBase)(stream, state); - if (style == "comment") return style; - if (ctx.align == null) ctx.align = true; - - if (curPunc == "{") pushContext(state, stream.column(), "}"); - else if (curPunc == "[") pushContext(state, stream.column(), "]"); - else if (curPunc == "(") pushContext(state, stream.column(), ")"); - else if (curPunc == "case") ctx.type = "case"; - else if (curPunc == "}" && ctx.type == "}") ctx = popContext(state); - else if (curPunc == ctx.type) popContext(state); - state.startOfLine = false; - return style; - }, - - indent: function(state, textAfter) { - if (state.tokenize != tokenBase && state.tokenize != null) return 0; - var ctx = state.context, firstChar = textAfter && textAfter.charAt(0); - if (ctx.type == "case" && /^(?:case|default)\b/.test(textAfter)) { - state.context.type = "}"; - return ctx.indented; - } - var closing = firstChar == ctx.type; - if (ctx.align) return ctx.column + (closing ? 0 : 1); - else return ctx.indented + (closing ? 0 : indentUnit); - }, - - electricChars: "{}):", - fold: "brace", - blockCommentStart: "/*", - blockCommentEnd: "*/", - lineComment: "//" - }; -}); - -CodeMirror.defineMIME("text/x-go", "go"); - -}); diff --git a/assets/js/plugins/codemirror/mode/go/index.html b/assets/js/plugins/codemirror/mode/go/index.html deleted file mode 100644 index 72e3b364..00000000 --- a/assets/js/plugins/codemirror/mode/go/index.html +++ /dev/null @@ -1,85 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Go mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<link rel="stylesheet" href="../../theme/elegant.css"> -<script src="../../lib/codemirror.js"></script> -<script src="../../addon/edit/matchbrackets.js"></script> -<script src="go.js"></script> -<style>.CodeMirror {border:1px solid #999; background:#ffc}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Go</a> - </ul> -</div> - -<article> -<h2>Go mode</h2> -<form><textarea id="code" name="code"> -// Prime Sieve in Go. -// Taken from the Go specification. -// Copyright © The Go Authors. - -package main - -import "fmt" - -// Send the sequence 2, 3, 4, ... to channel 'ch'. -func generate(ch chan&lt;- int) { - for i := 2; ; i++ { - ch &lt;- i // Send 'i' to channel 'ch' - } -} - -// Copy the values from channel 'src' to channel 'dst', -// removing those divisible by 'prime'. -func filter(src &lt;-chan int, dst chan&lt;- int, prime int) { - for i := range src { // Loop over values received from 'src'. - if i%prime != 0 { - dst &lt;- i // Send 'i' to channel 'dst'. - } - } -} - -// The prime sieve: Daisy-chain filter processes together. -func sieve() { - ch := make(chan int) // Create a new channel. - go generate(ch) // Start generate() as a subprocess. - for { - prime := &lt;-ch - fmt.Print(prime, "\n") - ch1 := make(chan int) - go filter(ch, ch1, prime) - ch = ch1 - } -} - -func main() { - sieve() -} -</textarea></form> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - theme: "elegant", - matchBrackets: true, - indentUnit: 8, - tabSize: 8, - indentWithTabs: true, - mode: "text/x-go" - }); - </script> - - <p><strong>MIME type:</strong> <code>text/x-go</code></p> - </article> diff --git a/assets/js/plugins/codemirror/mode/groovy/groovy.js b/assets/js/plugins/codemirror/mode/groovy/groovy.js deleted file mode 100644 index 89b8224c..00000000 --- a/assets/js/plugins/codemirror/mode/groovy/groovy.js +++ /dev/null @@ -1,226 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("groovy", function(config) { - function words(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - var keywords = words( - "abstract as assert boolean break byte case catch char class const continue def default " + - "do double else enum extends final finally float for goto if implements import in " + - "instanceof int interface long native new package private protected public return " + - "short static strictfp super switch synchronized threadsafe throw throws transient " + - "try void volatile while"); - var blockKeywords = words("catch class do else finally for if switch try while enum interface def"); - var atoms = words("null true false this"); - - var curPunc; - function tokenBase(stream, state) { - var ch = stream.next(); - if (ch == '"' || ch == "'") { - return startString(ch, stream, state); - } - if (/[\[\]{}\(\),;\:\.]/.test(ch)) { - curPunc = ch; - return null; - } - if (/\d/.test(ch)) { - stream.eatWhile(/[\w\.]/); - if (stream.eat(/eE/)) { stream.eat(/\+\-/); stream.eatWhile(/\d/); } - return "number"; - } - if (ch == "/") { - if (stream.eat("*")) { - state.tokenize.push(tokenComment); - return tokenComment(stream, state); - } - if (stream.eat("/")) { - stream.skipToEnd(); - return "comment"; - } - if (expectExpression(state.lastToken)) { - return startString(ch, stream, state); - } - } - if (ch == "-" && stream.eat(">")) { - curPunc = "->"; - return null; - } - if (/[+\-*&%=<>!?|\/~]/.test(ch)) { - stream.eatWhile(/[+\-*&%=<>|~]/); - return "operator"; - } - stream.eatWhile(/[\w\$_]/); - if (ch == "@") { stream.eatWhile(/[\w\$_\.]/); return "meta"; } - if (state.lastToken == ".") return "property"; - if (stream.eat(":")) { curPunc = "proplabel"; return "property"; } - var cur = stream.current(); - if (atoms.propertyIsEnumerable(cur)) { return "atom"; } - if (keywords.propertyIsEnumerable(cur)) { - if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; - return "keyword"; - } - return "variable"; - } - tokenBase.isBase = true; - - function startString(quote, stream, state) { - var tripleQuoted = false; - if (quote != "/" && stream.eat(quote)) { - if (stream.eat(quote)) tripleQuoted = true; - else return "string"; - } - function t(stream, state) { - var escaped = false, next, end = !tripleQuoted; - while ((next = stream.next()) != null) { - if (next == quote && !escaped) { - if (!tripleQuoted) { break; } - if (stream.match(quote + quote)) { end = true; break; } - } - if (quote == '"' && next == "$" && !escaped && stream.eat("{")) { - state.tokenize.push(tokenBaseUntilBrace()); - return "string"; - } - escaped = !escaped && next == "\\"; - } - if (end) state.tokenize.pop(); - return "string"; - } - state.tokenize.push(t); - return t(stream, state); - } - - function tokenBaseUntilBrace() { - var depth = 1; - function t(stream, state) { - if (stream.peek() == "}") { - depth--; - if (depth == 0) { - state.tokenize.pop(); - return state.tokenize[state.tokenize.length-1](stream, state); - } - } else if (stream.peek() == "{") { - depth++; - } - return tokenBase(stream, state); - } - t.isBase = true; - return t; - } - - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize.pop(); - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - - function expectExpression(last) { - return !last || last == "operator" || last == "->" || /[\.\[\{\(,;:]/.test(last) || - last == "newstatement" || last == "keyword" || last == "proplabel"; - } - - function Context(indented, column, type, align, prev) { - this.indented = indented; - this.column = column; - this.type = type; - this.align = align; - this.prev = prev; - } - function pushContext(state, col, type) { - return state.context = new Context(state.indented, col, type, null, state.context); - } - function popContext(state) { - var t = state.context.type; - if (t == ")" || t == "]" || t == "}") - state.indented = state.context.indented; - return state.context = state.context.prev; - } - - // Interface - - return { - startState: function(basecolumn) { - return { - tokenize: [tokenBase], - context: new Context((basecolumn || 0) - config.indentUnit, 0, "top", false), - indented: 0, - startOfLine: true, - lastToken: null - }; - }, - - token: function(stream, state) { - var ctx = state.context; - if (stream.sol()) { - if (ctx.align == null) ctx.align = false; - state.indented = stream.indentation(); - state.startOfLine = true; - // Automatic semicolon insertion - if (ctx.type == "statement" && !expectExpression(state.lastToken)) { - popContext(state); ctx = state.context; - } - } - if (stream.eatSpace()) return null; - curPunc = null; - var style = state.tokenize[state.tokenize.length-1](stream, state); - if (style == "comment") return style; - if (ctx.align == null) ctx.align = true; - - if ((curPunc == ";" || curPunc == ":") && ctx.type == "statement") popContext(state); - // Handle indentation for {x -> \n ... } - else if (curPunc == "->" && ctx.type == "statement" && ctx.prev.type == "}") { - popContext(state); - state.context.align = false; - } - else if (curPunc == "{") pushContext(state, stream.column(), "}"); - else if (curPunc == "[") pushContext(state, stream.column(), "]"); - else if (curPunc == "(") pushContext(state, stream.column(), ")"); - else if (curPunc == "}") { - while (ctx.type == "statement") ctx = popContext(state); - if (ctx.type == "}") ctx = popContext(state); - while (ctx.type == "statement") ctx = popContext(state); - } - else if (curPunc == ctx.type) popContext(state); - else if (ctx.type == "}" || ctx.type == "top" || (ctx.type == "statement" && curPunc == "newstatement")) - pushContext(state, stream.column(), "statement"); - state.startOfLine = false; - state.lastToken = curPunc || style; - return style; - }, - - indent: function(state, textAfter) { - if (!state.tokenize[state.tokenize.length-1].isBase) return 0; - var firstChar = textAfter && textAfter.charAt(0), ctx = state.context; - if (ctx.type == "statement" && !expectExpression(state.lastToken)) ctx = ctx.prev; - var closing = firstChar == ctx.type; - if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : config.indentUnit); - else if (ctx.align) return ctx.column + (closing ? 0 : 1); - else return ctx.indented + (closing ? 0 : config.indentUnit); - }, - - electricChars: "{}", - fold: "brace" - }; -}); - -CodeMirror.defineMIME("text/x-groovy", "groovy"); - -}); diff --git a/assets/js/plugins/codemirror/mode/groovy/index.html b/assets/js/plugins/codemirror/mode/groovy/index.html deleted file mode 100644 index bb0df078..00000000 --- a/assets/js/plugins/codemirror/mode/groovy/index.html +++ /dev/null @@ -1,84 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Groovy mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="../../addon/edit/matchbrackets.js"></script> -<script src="groovy.js"></script> -<style>.CodeMirror {border-top: 1px solid #500; border-bottom: 1px solid #500;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Groovy</a> - </ul> -</div> - -<article> -<h2>Groovy mode</h2> -<form><textarea id="code" name="code"> -//Pattern for groovy script -def p = ~/.*\.groovy/ -new File( 'd:\\scripts' ).eachFileMatch(p) {f -> - // imports list - def imports = [] - f.eachLine { - // condition to detect an import instruction - ln -> if ( ln =~ '^import .*' ) { - imports << "${ln - 'import '}" - } - } - // print thmen - if ( ! imports.empty ) { - println f - imports.each{ println " $it" } - } -} - -/* Coin changer demo code from http://groovy.codehaus.org */ - -enum UsCoin { - quarter(25), dime(10), nickel(5), penny(1) - UsCoin(v) { value = v } - final value -} - -enum OzzieCoin { - fifty(50), twenty(20), ten(10), five(5) - OzzieCoin(v) { value = v } - final value -} - -def plural(word, count) { - if (count == 1) return word - word[-1] == 'y' ? word[0..-2] + "ies" : word + "s" -} - -def change(currency, amount) { - currency.values().inject([]){ list, coin -> - int count = amount / coin.value - amount = amount % coin.value - list += "$count ${plural(coin.toString(), count)}" - } -} -</textarea></form> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers: true, - matchBrackets: true, - mode: "text/x-groovy" - }); - </script> - - <p><strong>MIME types defined:</strong> <code>text/x-groovy</code></p> - </article> diff --git a/assets/js/plugins/codemirror/mode/haml/haml.js b/assets/js/plugins/codemirror/mode/haml/haml.js deleted file mode 100644 index 8fe63b02..00000000 --- a/assets/js/plugins/codemirror/mode/haml/haml.js +++ /dev/null @@ -1,159 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), require("../ruby/ruby")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../htmlmixed/htmlmixed", "../ruby/ruby"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - - // full haml mode. This handled embeded ruby and html fragments too - CodeMirror.defineMode("haml", function(config) { - var htmlMode = CodeMirror.getMode(config, {name: "htmlmixed"}); - var rubyMode = CodeMirror.getMode(config, "ruby"); - - function rubyInQuote(endQuote) { - return function(stream, state) { - var ch = stream.peek(); - if (ch == endQuote && state.rubyState.tokenize.length == 1) { - // step out of ruby context as it seems to complete processing all the braces - stream.next(); - state.tokenize = html; - return "closeAttributeTag"; - } else { - return ruby(stream, state); - } - }; - } - - function ruby(stream, state) { - if (stream.match("-#")) { - stream.skipToEnd(); - return "comment"; - } - return rubyMode.token(stream, state.rubyState); - } - - function html(stream, state) { - var ch = stream.peek(); - - // handle haml declarations. All declarations that cant be handled here - // will be passed to html mode - if (state.previousToken.style == "comment" ) { - if (state.indented > state.previousToken.indented) { - stream.skipToEnd(); - return "commentLine"; - } - } - - if (state.startOfLine) { - if (ch == "!" && stream.match("!!")) { - stream.skipToEnd(); - return "tag"; - } else if (stream.match(/^%[\w:#\.]+=/)) { - state.tokenize = ruby; - return "hamlTag"; - } else if (stream.match(/^%[\w:]+/)) { - return "hamlTag"; - } else if (ch == "/" ) { - stream.skipToEnd(); - return "comment"; - } - } - - if (state.startOfLine || state.previousToken.style == "hamlTag") { - if ( ch == "#" || ch == ".") { - stream.match(/[\w-#\.]*/); - return "hamlAttribute"; - } - } - - // donot handle --> as valid ruby, make it HTML close comment instead - if (state.startOfLine && !stream.match("-->", false) && (ch == "=" || ch == "-" )) { - state.tokenize = ruby; - return state.tokenize(stream, state); - } - - if (state.previousToken.style == "hamlTag" || - state.previousToken.style == "closeAttributeTag" || - state.previousToken.style == "hamlAttribute") { - if (ch == "(") { - state.tokenize = rubyInQuote(")"); - return state.tokenize(stream, state); - } else if (ch == "{") { - state.tokenize = rubyInQuote("}"); - return state.tokenize(stream, state); - } - } - - return htmlMode.token(stream, state.htmlState); - } - - return { - // default to html mode - startState: function() { - var htmlState = htmlMode.startState(); - var rubyState = rubyMode.startState(); - return { - htmlState: htmlState, - rubyState: rubyState, - indented: 0, - previousToken: { style: null, indented: 0}, - tokenize: html - }; - }, - - copyState: function(state) { - return { - htmlState : CodeMirror.copyState(htmlMode, state.htmlState), - rubyState: CodeMirror.copyState(rubyMode, state.rubyState), - indented: state.indented, - previousToken: state.previousToken, - tokenize: state.tokenize - }; - }, - - token: function(stream, state) { - if (stream.sol()) { - state.indented = stream.indentation(); - state.startOfLine = true; - } - if (stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - state.startOfLine = false; - // dont record comment line as we only want to measure comment line with - // the opening comment block - if (style && style != "commentLine") { - state.previousToken = { style: style, indented: state.indented }; - } - // if current state is ruby and the previous token is not `,` reset the - // tokenize to html - if (stream.eol() && state.tokenize == ruby) { - stream.backUp(1); - var ch = stream.peek(); - stream.next(); - if (ch && ch != ",") { - state.tokenize = html; - } - } - // reprocess some of the specific style tag when finish setting previousToken - if (style == "hamlTag") { - style = "tag"; - } else if (style == "commentLine") { - style = "comment"; - } else if (style == "hamlAttribute") { - style = "attribute"; - } else if (style == "closeAttributeTag") { - style = null; - } - return style; - } - }; - }, "htmlmixed", "ruby"); - - CodeMirror.defineMIME("text/x-haml", "haml"); -}); diff --git a/assets/js/plugins/codemirror/mode/haml/index.html b/assets/js/plugins/codemirror/mode/haml/index.html deleted file mode 100644 index 2894a938..00000000 --- a/assets/js/plugins/codemirror/mode/haml/index.html +++ /dev/null @@ -1,79 +0,0 @@ -<!doctype html> - -<title>CodeMirror: HAML mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="../xml/xml.js"></script> -<script src="../htmlmixed/htmlmixed.js"></script> -<script src="../javascript/javascript.js"></script> -<script src="../ruby/ruby.js"></script> -<script src="haml.js"></script> -<style>.CodeMirror {background: #f8f8f8;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">HAML</a> - </ul> -</div> - -<article> -<h2>HAML mode</h2> -<form><textarea id="code" name="code"> -!!! -#content -.left.column(title="title"){:href => "/hello", :test => "#{hello}_#{world}"} - <!-- This is a comment --> - %h2 Welcome to our site! - %p= puts "HAML MODE" - .right.column - = render :partial => "sidebar" - -.container - .row - .span8 - %h1.title= @page_title -%p.title= @page_title -%p - / - The same as HTML comment - Hello multiline comment - - -# haml comment - This wont be displayed - nor will this - Date/Time: - - now = DateTime.now - %strong= now - - if now > DateTime.parse("December 31, 2006") - = "Happy new " + "year!" - -%title - = @title - \= @title - <h1>Title</h1> - <h1 title="HELLO"> - Title - </h1> - </textarea></form> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers: true, - mode: "text/x-haml" - }); - </script> - - <p><strong>MIME types defined:</strong> <code>text/x-haml</code>.</p> - - <p><strong>Parsing/Highlighting Tests:</strong> <a href="../../test/index.html#haml_*">normal</a>, <a href="../../test/index.html#verbose,haml_*">verbose</a>.</p> - - </article> diff --git a/assets/js/plugins/codemirror/mode/haml/test.js b/assets/js/plugins/codemirror/mode/haml/test.js deleted file mode 100644 index 508458a4..00000000 --- a/assets/js/plugins/codemirror/mode/haml/test.js +++ /dev/null @@ -1,97 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - var mode = CodeMirror.getMode({tabSize: 4, indentUnit: 2}, "haml"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - - // Requires at least one media query - MT("elementName", - "[tag %h1] Hey There"); - - MT("oneElementPerLine", - "[tag %h1] Hey There %h2"); - - MT("idSelector", - "[tag %h1][attribute #test] Hey There"); - - MT("classSelector", - "[tag %h1][attribute .hello] Hey There"); - - MT("docType", - "[tag !!! XML]"); - - MT("comment", - "[comment / Hello WORLD]"); - - MT("notComment", - "[tag %h1] This is not a / comment "); - - MT("attributes", - "[tag %a]([variable title][operator =][string \"test\"]){[atom :title] [operator =>] [string \"test\"]}"); - - MT("htmlCode", - "[tag&bracket <][tag h1][tag&bracket >]Title[tag&bracket </][tag h1][tag&bracket >]"); - - MT("rubyBlock", - "[operator =][variable-2 @item]"); - - MT("selectorRubyBlock", - "[tag %a.selector=] [variable-2 @item]"); - - MT("nestedRubyBlock", - "[tag %a]", - " [operator =][variable puts] [string \"test\"]"); - - MT("multilinePlaintext", - "[tag %p]", - " Hello,", - " World"); - - MT("multilineRuby", - "[tag %p]", - " [comment -# this is a comment]", - " [comment and this is a comment too]", - " Date/Time", - " [operator -] [variable now] [operator =] [tag DateTime][operator .][property now]", - " [tag %strong=] [variable now]", - " [operator -] [keyword if] [variable now] [operator >] [tag DateTime][operator .][property parse]([string \"December 31, 2006\"])", - " [operator =][string \"Happy\"]", - " [operator =][string \"Belated\"]", - " [operator =][string \"Birthday\"]"); - - MT("multilineComment", - "[comment /]", - " [comment Multiline]", - " [comment Comment]"); - - MT("hamlComment", - "[comment -# this is a comment]"); - - MT("multilineHamlComment", - "[comment -# this is a comment]", - " [comment and this is a comment too]"); - - MT("multilineHTMLComment", - "[comment <!--]", - " [comment what a comment]", - " [comment -->]"); - - MT("hamlAfterRubyTag", - "[attribute .block]", - " [tag %strong=] [variable now]", - " [attribute .test]", - " [operator =][variable now]", - " [attribute .right]"); - - MT("stretchedRuby", - "[operator =] [variable puts] [string \"Hello\"],", - " [string \"World\"]"); - - MT("interpolationInHashAttribute", - //"[tag %div]{[atom :id] [operator =>] [string \"#{][variable test][string }_#{][variable ting][string }\"]} test"); - "[tag %div]{[atom :id] [operator =>] [string \"#{][variable test][string }_#{][variable ting][string }\"]} test"); - - MT("interpolationInHTMLAttribute", - "[tag %div]([variable title][operator =][string \"#{][variable test][string }_#{][variable ting]()[string }\"]) Test"); -})(); diff --git a/assets/js/plugins/codemirror/mode/haskell/haskell.js b/assets/js/plugins/codemirror/mode/haskell/haskell.js deleted file mode 100644 index fe0bab67..00000000 --- a/assets/js/plugins/codemirror/mode/haskell/haskell.js +++ /dev/null @@ -1,267 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("haskell", function(_config, modeConfig) { - - function switchState(source, setState, f) { - setState(f); - return f(source, setState); - } - - // These should all be Unicode extended, as per the Haskell 2010 report - var smallRE = /[a-z_]/; - var largeRE = /[A-Z]/; - var digitRE = /\d/; - var hexitRE = /[0-9A-Fa-f]/; - var octitRE = /[0-7]/; - var idRE = /[a-z_A-Z0-9'\xa1-\uffff]/; - var symbolRE = /[-!#$%&*+.\/<=>?@\\^|~:]/; - var specialRE = /[(),;[\]`{}]/; - var whiteCharRE = /[ \t\v\f]/; // newlines are handled in tokenizer - - function normal(source, setState) { - if (source.eatWhile(whiteCharRE)) { - return null; - } - - var ch = source.next(); - if (specialRE.test(ch)) { - if (ch == '{' && source.eat('-')) { - var t = "comment"; - if (source.eat('#')) { - t = "meta"; - } - return switchState(source, setState, ncomment(t, 1)); - } - return null; - } - - if (ch == '\'') { - if (source.eat('\\')) { - source.next(); // should handle other escapes here - } - else { - source.next(); - } - if (source.eat('\'')) { - return "string"; - } - return "error"; - } - - if (ch == '"') { - return switchState(source, setState, stringLiteral); - } - - if (largeRE.test(ch)) { - source.eatWhile(idRE); - if (source.eat('.')) { - return "qualifier"; - } - return "variable-2"; - } - - if (smallRE.test(ch)) { - source.eatWhile(idRE); - return "variable"; - } - - if (digitRE.test(ch)) { - if (ch == '0') { - if (source.eat(/[xX]/)) { - source.eatWhile(hexitRE); // should require at least 1 - return "integer"; - } - if (source.eat(/[oO]/)) { - source.eatWhile(octitRE); // should require at least 1 - return "number"; - } - } - source.eatWhile(digitRE); - var t = "number"; - if (source.match(/^\.\d+/)) { - t = "number"; - } - if (source.eat(/[eE]/)) { - t = "number"; - source.eat(/[-+]/); - source.eatWhile(digitRE); // should require at least 1 - } - return t; - } - - if (ch == "." && source.eat(".")) - return "keyword"; - - if (symbolRE.test(ch)) { - if (ch == '-' && source.eat(/-/)) { - source.eatWhile(/-/); - if (!source.eat(symbolRE)) { - source.skipToEnd(); - return "comment"; - } - } - var t = "variable"; - if (ch == ':') { - t = "variable-2"; - } - source.eatWhile(symbolRE); - return t; - } - - return "error"; - } - - function ncomment(type, nest) { - if (nest == 0) { - return normal; - } - return function(source, setState) { - var currNest = nest; - while (!source.eol()) { - var ch = source.next(); - if (ch == '{' && source.eat('-')) { - ++currNest; - } - else if (ch == '-' && source.eat('}')) { - --currNest; - if (currNest == 0) { - setState(normal); - return type; - } - } - } - setState(ncomment(type, currNest)); - return type; - }; - } - - function stringLiteral(source, setState) { - while (!source.eol()) { - var ch = source.next(); - if (ch == '"') { - setState(normal); - return "string"; - } - if (ch == '\\') { - if (source.eol() || source.eat(whiteCharRE)) { - setState(stringGap); - return "string"; - } - if (source.eat('&')) { - } - else { - source.next(); // should handle other escapes here - } - } - } - setState(normal); - return "error"; - } - - function stringGap(source, setState) { - if (source.eat('\\')) { - return switchState(source, setState, stringLiteral); - } - source.next(); - setState(normal); - return "error"; - } - - - var wellKnownWords = (function() { - var wkw = {}; - function setType(t) { - return function () { - for (var i = 0; i < arguments.length; i++) - wkw[arguments[i]] = t; - }; - } - - setType("keyword")( - "case", "class", "data", "default", "deriving", "do", "else", "foreign", - "if", "import", "in", "infix", "infixl", "infixr", "instance", "let", - "module", "newtype", "of", "then", "type", "where", "_"); - - setType("keyword")( - "\.\.", ":", "::", "=", "\\", "\"", "<-", "->", "@", "~", "=>"); - - setType("builtin")( - "!!", "$!", "$", "&&", "+", "++", "-", ".", "/", "/=", "<", "<=", "=<<", - "==", ">", ">=", ">>", ">>=", "^", "^^", "||", "*", "**"); - - setType("builtin")( - "Bool", "Bounded", "Char", "Double", "EQ", "Either", "Enum", "Eq", - "False", "FilePath", "Float", "Floating", "Fractional", "Functor", "GT", - "IO", "IOError", "Int", "Integer", "Integral", "Just", "LT", "Left", - "Maybe", "Monad", "Nothing", "Num", "Ord", "Ordering", "Rational", "Read", - "ReadS", "Real", "RealFloat", "RealFrac", "Right", "Show", "ShowS", - "String", "True"); - - setType("builtin")( - "abs", "acos", "acosh", "all", "and", "any", "appendFile", "asTypeOf", - "asin", "asinh", "atan", "atan2", "atanh", "break", "catch", "ceiling", - "compare", "concat", "concatMap", "const", "cos", "cosh", "curry", - "cycle", "decodeFloat", "div", "divMod", "drop", "dropWhile", "either", - "elem", "encodeFloat", "enumFrom", "enumFromThen", "enumFromThenTo", - "enumFromTo", "error", "even", "exp", "exponent", "fail", "filter", - "flip", "floatDigits", "floatRadix", "floatRange", "floor", "fmap", - "foldl", "foldl1", "foldr", "foldr1", "fromEnum", "fromInteger", - "fromIntegral", "fromRational", "fst", "gcd", "getChar", "getContents", - "getLine", "head", "id", "init", "interact", "ioError", "isDenormalized", - "isIEEE", "isInfinite", "isNaN", "isNegativeZero", "iterate", "last", - "lcm", "length", "lex", "lines", "log", "logBase", "lookup", "map", - "mapM", "mapM_", "max", "maxBound", "maximum", "maybe", "min", "minBound", - "minimum", "mod", "negate", "not", "notElem", "null", "odd", "or", - "otherwise", "pi", "pred", "print", "product", "properFraction", - "putChar", "putStr", "putStrLn", "quot", "quotRem", "read", "readFile", - "readIO", "readList", "readLn", "readParen", "reads", "readsPrec", - "realToFrac", "recip", "rem", "repeat", "replicate", "return", "reverse", - "round", "scaleFloat", "scanl", "scanl1", "scanr", "scanr1", "seq", - "sequence", "sequence_", "show", "showChar", "showList", "showParen", - "showString", "shows", "showsPrec", "significand", "signum", "sin", - "sinh", "snd", "span", "splitAt", "sqrt", "subtract", "succ", "sum", - "tail", "take", "takeWhile", "tan", "tanh", "toEnum", "toInteger", - "toRational", "truncate", "uncurry", "undefined", "unlines", "until", - "unwords", "unzip", "unzip3", "userError", "words", "writeFile", "zip", - "zip3", "zipWith", "zipWith3"); - - var override = modeConfig.overrideKeywords; - if (override) for (var word in override) if (override.hasOwnProperty(word)) - wkw[word] = override[word]; - - return wkw; - })(); - - - - return { - startState: function () { return { f: normal }; }, - copyState: function (s) { return { f: s.f }; }, - - token: function(stream, state) { - var t = state.f(stream, function(s) { state.f = s; }); - var w = stream.current(); - return wellKnownWords.hasOwnProperty(w) ? wellKnownWords[w] : t; - }, - - blockCommentStart: "{-", - blockCommentEnd: "-}", - lineComment: "--" - }; - -}); - -CodeMirror.defineMIME("text/x-haskell", "haskell"); - -}); diff --git a/assets/js/plugins/codemirror/mode/haskell/index.html b/assets/js/plugins/codemirror/mode/haskell/index.html deleted file mode 100644 index 42240b0f..00000000 --- a/assets/js/plugins/codemirror/mode/haskell/index.html +++ /dev/null @@ -1,73 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Haskell mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<link rel="stylesheet" href="../../theme/elegant.css"> -<script src="../../lib/codemirror.js"></script> -<script src="../../addon/edit/matchbrackets.js"></script> -<script src="haskell.js"></script> -<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Haskell</a> - </ul> -</div> - -<article> -<h2>Haskell mode</h2> -<form><textarea id="code" name="code"> -module UniquePerms ( - uniquePerms - ) -where - --- | Find all unique permutations of a list where there might be duplicates. -uniquePerms :: (Eq a) => [a] -> [[a]] -uniquePerms = permBag . makeBag - --- | An unordered collection where duplicate values are allowed, --- but represented with a single value and a count. -type Bag a = [(a, Int)] - -makeBag :: (Eq a) => [a] -> Bag a -makeBag [] = [] -makeBag (a:as) = mix a $ makeBag as - where - mix a [] = [(a,1)] - mix a (bn@(b,n):bs) | a == b = (b,n+1):bs - | otherwise = bn : mix a bs - -permBag :: Bag a -> [[a]] -permBag [] = [[]] -permBag bs = concatMap (\(f,cs) -> map (f:) $ permBag cs) . oneOfEach $ bs - where - oneOfEach [] = [] - oneOfEach (an@(a,n):bs) = - let bs' = if n == 1 then bs else (a,n-1):bs - in (a,bs') : mapSnd (an:) (oneOfEach bs) - - apSnd f (a,b) = (a, f b) - mapSnd = map . apSnd -</textarea></form> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers: true, - matchBrackets: true, - theme: "elegant" - }); - </script> - - <p><strong>MIME types defined:</strong> <code>text/x-haskell</code>.</p> - </article> diff --git a/assets/js/plugins/codemirror/mode/haxe/haxe.js b/assets/js/plugins/codemirror/mode/haxe/haxe.js deleted file mode 100644 index d49ad70f..00000000 --- a/assets/js/plugins/codemirror/mode/haxe/haxe.js +++ /dev/null @@ -1,518 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("haxe", function(config, parserConfig) { - var indentUnit = config.indentUnit; - - // Tokenizer - - var keywords = function(){ - function kw(type) {return {type: type, style: "keyword"};} - var A = kw("keyword a"), B = kw("keyword b"), C = kw("keyword c"); - var operator = kw("operator"), atom = {type: "atom", style: "atom"}, attribute = {type:"attribute", style: "attribute"}; - var type = kw("typedef"); - return { - "if": A, "while": A, "else": B, "do": B, "try": B, - "return": C, "break": C, "continue": C, "new": C, "throw": C, - "var": kw("var"), "inline":attribute, "static": attribute, "using":kw("import"), - "public": attribute, "private": attribute, "cast": kw("cast"), "import": kw("import"), "macro": kw("macro"), - "function": kw("function"), "catch": kw("catch"), "untyped": kw("untyped"), "callback": kw("cb"), - "for": kw("for"), "switch": kw("switch"), "case": kw("case"), "default": kw("default"), - "in": operator, "never": kw("property_access"), "trace":kw("trace"), - "class": type, "abstract":type, "enum":type, "interface":type, "typedef":type, "extends":type, "implements":type, "dynamic":type, - "true": atom, "false": atom, "null": atom - }; - }(); - - var isOperatorChar = /[+\-*&%=<>!?|]/; - - function chain(stream, state, f) { - state.tokenize = f; - return f(stream, state); - } - - function nextUntilUnescaped(stream, end) { - var escaped = false, next; - while ((next = stream.next()) != null) { - if (next == end && !escaped) - return false; - escaped = !escaped && next == "\\"; - } - return escaped; - } - - // Used as scratch variables to communicate multiple values without - // consing up tons of objects. - var type, content; - function ret(tp, style, cont) { - type = tp; content = cont; - return style; - } - - function haxeTokenBase(stream, state) { - var ch = stream.next(); - if (ch == '"' || ch == "'") - return chain(stream, state, haxeTokenString(ch)); - else if (/[\[\]{}\(\),;\:\.]/.test(ch)) - return ret(ch); - else if (ch == "0" && stream.eat(/x/i)) { - stream.eatWhile(/[\da-f]/i); - return ret("number", "number"); - } - else if (/\d/.test(ch) || ch == "-" && stream.eat(/\d/)) { - stream.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/); - return ret("number", "number"); - } - else if (state.reAllowed && (ch == "~" && stream.eat(/\//))) { - nextUntilUnescaped(stream, "/"); - stream.eatWhile(/[gimsu]/); - return ret("regexp", "string-2"); - } - else if (ch == "/") { - if (stream.eat("*")) { - return chain(stream, state, haxeTokenComment); - } - else if (stream.eat("/")) { - stream.skipToEnd(); - return ret("comment", "comment"); - } - else { - stream.eatWhile(isOperatorChar); - return ret("operator", null, stream.current()); - } - } - else if (ch == "#") { - stream.skipToEnd(); - return ret("conditional", "meta"); - } - else if (ch == "@") { - stream.eat(/:/); - stream.eatWhile(/[\w_]/); - return ret ("metadata", "meta"); - } - else if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return ret("operator", null, stream.current()); - } - else { - var word; - if(/[A-Z]/.test(ch)) - { - stream.eatWhile(/[\w_<>]/); - word = stream.current(); - return ret("type", "variable-3", word); - } - else - { - stream.eatWhile(/[\w_]/); - var word = stream.current(), known = keywords.propertyIsEnumerable(word) && keywords[word]; - return (known && state.kwAllowed) ? ret(known.type, known.style, word) : - ret("variable", "variable", word); - } - } - } - - function haxeTokenString(quote) { - return function(stream, state) { - if (!nextUntilUnescaped(stream, quote)) - state.tokenize = haxeTokenBase; - return ret("string", "string"); - }; - } - - function haxeTokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = haxeTokenBase; - break; - } - maybeEnd = (ch == "*"); - } - return ret("comment", "comment"); - } - - // Parser - - var atomicTypes = {"atom": true, "number": true, "variable": true, "string": true, "regexp": true}; - - function HaxeLexical(indented, column, type, align, prev, info) { - this.indented = indented; - this.column = column; - this.type = type; - this.prev = prev; - this.info = info; - if (align != null) this.align = align; - } - - function inScope(state, varname) { - for (var v = state.localVars; v; v = v.next) - if (v.name == varname) return true; - } - - function parseHaxe(state, style, type, content, stream) { - var cc = state.cc; - // Communicate our context to the combinators. - // (Less wasteful than consing up a hundred closures on every call.) - cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; - - if (!state.lexical.hasOwnProperty("align")) - state.lexical.align = true; - - while(true) { - var combinator = cc.length ? cc.pop() : statement; - if (combinator(type, content)) { - while(cc.length && cc[cc.length - 1].lex) - cc.pop()(); - if (cx.marked) return cx.marked; - if (type == "variable" && inScope(state, content)) return "variable-2"; - if (type == "variable" && imported(state, content)) return "variable-3"; - return style; - } - } - } - - function imported(state, typename) - { - if (/[a-z]/.test(typename.charAt(0))) - return false; - var len = state.importedtypes.length; - for (var i = 0; i<len; i++) - if(state.importedtypes[i]==typename) return true; - } - - - function registerimport(importname) { - var state = cx.state; - for (var t = state.importedtypes; t; t = t.next) - if(t.name == importname) return; - state.importedtypes = { name: importname, next: state.importedtypes }; - } - // Combinator utils - - var cx = {state: null, column: null, marked: null, cc: null}; - function pass() { - for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]); - } - function cont() { - pass.apply(null, arguments); - return true; - } - function register(varname) { - var state = cx.state; - if (state.context) { - cx.marked = "def"; - for (var v = state.localVars; v; v = v.next) - if (v.name == varname) return; - state.localVars = {name: varname, next: state.localVars}; - } - } - - // Combinators - - var defaultVars = {name: "this", next: null}; - function pushcontext() { - if (!cx.state.context) cx.state.localVars = defaultVars; - cx.state.context = {prev: cx.state.context, vars: cx.state.localVars}; - } - function popcontext() { - cx.state.localVars = cx.state.context.vars; - cx.state.context = cx.state.context.prev; - } - function pushlex(type, info) { - var result = function() { - var state = cx.state; - state.lexical = new HaxeLexical(state.indented, cx.stream.column(), type, null, state.lexical, info); - }; - result.lex = true; - return result; - } - function poplex() { - var state = cx.state; - if (state.lexical.prev) { - if (state.lexical.type == ")") - state.indented = state.lexical.indented; - state.lexical = state.lexical.prev; - } - } - poplex.lex = true; - - function expect(wanted) { - function f(type) { - if (type == wanted) return cont(); - else if (wanted == ";") return pass(); - else return cont(f); - }; - return f; - } - - function statement(type) { - if (type == "@") return cont(metadef); - if (type == "var") return cont(pushlex("vardef"), vardef1, expect(";"), poplex); - if (type == "keyword a") return cont(pushlex("form"), expression, statement, poplex); - if (type == "keyword b") return cont(pushlex("form"), statement, poplex); - if (type == "{") return cont(pushlex("}"), pushcontext, block, poplex, popcontext); - if (type == ";") return cont(); - if (type == "attribute") return cont(maybeattribute); - if (type == "function") return cont(functiondef); - if (type == "for") return cont(pushlex("form"), expect("("), pushlex(")"), forspec1, expect(")"), - poplex, statement, poplex); - if (type == "variable") return cont(pushlex("stat"), maybelabel); - if (type == "switch") return cont(pushlex("form"), expression, pushlex("}", "switch"), expect("{"), - block, poplex, poplex); - if (type == "case") return cont(expression, expect(":")); - if (type == "default") return cont(expect(":")); - if (type == "catch") return cont(pushlex("form"), pushcontext, expect("("), funarg, expect(")"), - statement, poplex, popcontext); - if (type == "import") return cont(importdef, expect(";")); - if (type == "typedef") return cont(typedef); - return pass(pushlex("stat"), expression, expect(";"), poplex); - } - function expression(type) { - if (atomicTypes.hasOwnProperty(type)) return cont(maybeoperator); - if (type == "function") return cont(functiondef); - if (type == "keyword c") return cont(maybeexpression); - if (type == "(") return cont(pushlex(")"), maybeexpression, expect(")"), poplex, maybeoperator); - if (type == "operator") return cont(expression); - if (type == "[") return cont(pushlex("]"), commasep(expression, "]"), poplex, maybeoperator); - if (type == "{") return cont(pushlex("}"), commasep(objprop, "}"), poplex, maybeoperator); - return cont(); - } - function maybeexpression(type) { - if (type.match(/[;\}\)\],]/)) return pass(); - return pass(expression); - } - - function maybeoperator(type, value) { - if (type == "operator" && /\+\+|--/.test(value)) return cont(maybeoperator); - if (type == "operator" || type == ":") return cont(expression); - if (type == ";") return; - if (type == "(") return cont(pushlex(")"), commasep(expression, ")"), poplex, maybeoperator); - if (type == ".") return cont(property, maybeoperator); - if (type == "[") return cont(pushlex("]"), expression, expect("]"), poplex, maybeoperator); - } - - function maybeattribute(type) { - if (type == "attribute") return cont(maybeattribute); - if (type == "function") return cont(functiondef); - if (type == "var") return cont(vardef1); - } - - function metadef(type) { - if(type == ":") return cont(metadef); - if(type == "variable") return cont(metadef); - if(type == "(") return cont(pushlex(")"), commasep(metaargs, ")"), poplex, statement); - } - function metaargs(type) { - if(type == "variable") return cont(); - } - - function importdef (type, value) { - if(type == "variable" && /[A-Z]/.test(value.charAt(0))) { registerimport(value); return cont(); } - else if(type == "variable" || type == "property" || type == "." || value == "*") return cont(importdef); - } - - function typedef (type, value) - { - if(type == "variable" && /[A-Z]/.test(value.charAt(0))) { registerimport(value); return cont(); } - else if (type == "type" && /[A-Z]/.test(value.charAt(0))) { return cont(); } - } - - function maybelabel(type) { - if (type == ":") return cont(poplex, statement); - return pass(maybeoperator, expect(";"), poplex); - } - function property(type) { - if (type == "variable") {cx.marked = "property"; return cont();} - } - function objprop(type) { - if (type == "variable") cx.marked = "property"; - if (atomicTypes.hasOwnProperty(type)) return cont(expect(":"), expression); - } - function commasep(what, end) { - function proceed(type) { - if (type == ",") return cont(what, proceed); - if (type == end) return cont(); - return cont(expect(end)); - } - return function(type) { - if (type == end) return cont(); - else return pass(what, proceed); - }; - } - function block(type) { - if (type == "}") return cont(); - return pass(statement, block); - } - function vardef1(type, value) { - if (type == "variable"){register(value); return cont(typeuse, vardef2);} - return cont(); - } - function vardef2(type, value) { - if (value == "=") return cont(expression, vardef2); - if (type == ",") return cont(vardef1); - } - function forspec1(type, value) { - if (type == "variable") { - register(value); - } - return cont(pushlex(")"), pushcontext, forin, expression, poplex, statement, popcontext); - } - function forin(_type, value) { - if (value == "in") return cont(); - } - function functiondef(type, value) { - if (type == "variable") {register(value); return cont(functiondef);} - if (value == "new") return cont(functiondef); - if (type == "(") return cont(pushlex(")"), pushcontext, commasep(funarg, ")"), poplex, typeuse, statement, popcontext); - } - function typeuse(type) { - if(type == ":") return cont(typestring); - } - function typestring(type) { - if(type == "type") return cont(); - if(type == "variable") return cont(); - if(type == "{") return cont(pushlex("}"), commasep(typeprop, "}"), poplex); - } - function typeprop(type) { - if(type == "variable") return cont(typeuse); - } - function funarg(type, value) { - if (type == "variable") {register(value); return cont(typeuse);} - } - - // Interface - - return { - startState: function(basecolumn) { - var defaulttypes = ["Int", "Float", "String", "Void", "Std", "Bool", "Dynamic", "Array"]; - return { - tokenize: haxeTokenBase, - reAllowed: true, - kwAllowed: true, - cc: [], - lexical: new HaxeLexical((basecolumn || 0) - indentUnit, 0, "block", false), - localVars: parserConfig.localVars, - importedtypes: defaulttypes, - context: parserConfig.localVars && {vars: parserConfig.localVars}, - indented: 0 - }; - }, - - token: function(stream, state) { - if (stream.sol()) { - if (!state.lexical.hasOwnProperty("align")) - state.lexical.align = false; - state.indented = stream.indentation(); - } - if (stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - if (type == "comment") return style; - state.reAllowed = !!(type == "operator" || type == "keyword c" || type.match(/^[\[{}\(,;:]$/)); - state.kwAllowed = type != '.'; - return parseHaxe(state, style, type, content, stream); - }, - - indent: function(state, textAfter) { - if (state.tokenize != haxeTokenBase) return 0; - var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical; - if (lexical.type == "stat" && firstChar == "}") lexical = lexical.prev; - var type = lexical.type, closing = firstChar == type; - if (type == "vardef") return lexical.indented + 4; - else if (type == "form" && firstChar == "{") return lexical.indented; - else if (type == "stat" || type == "form") return lexical.indented + indentUnit; - else if (lexical.info == "switch" && !closing) - return lexical.indented + (/^(?:case|default)\b/.test(textAfter) ? indentUnit : 2 * indentUnit); - else if (lexical.align) return lexical.column + (closing ? 0 : 1); - else return lexical.indented + (closing ? 0 : indentUnit); - }, - - electricChars: "{}", - blockCommentStart: "/*", - blockCommentEnd: "*/", - lineComment: "//" - }; -}); - -CodeMirror.defineMIME("text/x-haxe", "haxe"); - -CodeMirror.defineMode("hxml", function () { - - return { - startState: function () { - return { - define: false, - inString: false - }; - }, - token: function (stream, state) { - var ch = stream.peek(); - var sol = stream.sol(); - - ///* comments */ - if (ch == "#") { - stream.skipToEnd(); - return "comment"; - } - if (sol && ch == "-") { - var style = "variable-2"; - - stream.eat(/-/); - - if (stream.peek() == "-") { - stream.eat(/-/); - style = "keyword a"; - } - - if (stream.peek() == "D") { - stream.eat(/[D]/); - style = "keyword c"; - state.define = true; - } - - stream.eatWhile(/[A-Z]/i); - return style; - } - - var ch = stream.peek(); - - if (state.inString == false && ch == "'") { - state.inString = true; - ch = stream.next(); - } - - if (state.inString == true) { - if (stream.skipTo("'")) { - - } else { - stream.skipToEnd(); - } - - if (stream.peek() == "'") { - stream.next(); - state.inString = false; - } - - return "string"; - } - - stream.next(); - return null; - }, - lineComment: "#" - }; -}); - -CodeMirror.defineMIME("text/x-hxml", "hxml"); - -}); diff --git a/assets/js/plugins/codemirror/mode/haxe/index.html b/assets/js/plugins/codemirror/mode/haxe/index.html deleted file mode 100644 index d415b5e1..00000000 --- a/assets/js/plugins/codemirror/mode/haxe/index.html +++ /dev/null @@ -1,124 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Haxe mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="haxe.js"></script> -<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Haxe</a> - </ul> -</div> - -<article> -<h2>Haxe mode</h2> - - -<div><p><textarea id="code-haxe" name="code"> -import one.two.Three; - -@attr("test") -class Foo&lt;T&gt; extends Three -{ - public function new() - { - noFoo = 12; - } - - public static inline function doFoo(obj:{k:Int, l:Float}):Int - { - for(i in 0...10) - { - obj.k++; - trace(i); - var var1 = new Array(); - if(var1.length > 1) - throw "Error"; - } - // The following line should not be colored, the variable is scoped out - var1; - /* Multi line - * Comment test - */ - return obj.k; - } - private function bar():Void - { - #if flash - var t1:String = "1.21"; - #end - try { - doFoo({k:3, l:1.2}); - } - catch (e : String) { - trace(e); - } - var t2:Float = cast(3.2); - var t3:haxe.Timer = new haxe.Timer(); - var t4 = {k:Std.int(t2), l:Std.parseFloat(t1)}; - var t5 = ~/123+.*$/i; - doFoo(t4); - untyped t1 = 4; - bob = new Foo&lt;Int&gt; - } - public var okFoo(default, never):Float; - var noFoo(getFoo, null):Int; - function getFoo():Int { - return noFoo; - } - - public var three:Int; -} -enum Color -{ - red; - green; - blue; - grey( v : Int ); - rgb (r:Int,g:Int,b:Int); -} -</textarea></p> - -<p>Hxml mode:</p> - -<p><textarea id="code-hxml"> --cp test --js path/to/file.js -#-remap nme:flash ---next --D source-map-content --cmd 'test' --lib lime -</textarea></p> -</div> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code-haxe"), { - mode: "haxe", - lineNumbers: true, - indentUnit: 4, - indentWithTabs: true - }); - - editor = CodeMirror.fromTextArea(document.getElementById("code-hxml"), { - mode: "hxml", - lineNumbers: true, - indentUnit: 4, - indentWithTabs: true - }); - </script> - - <p><strong>MIME types defined:</strong> <code>text/x-haxe, text/x-hxml</code>.</p> - </article> diff --git a/assets/js/plugins/codemirror/mode/htmlembedded/htmlembedded.js b/assets/js/plugins/codemirror/mode/htmlembedded/htmlembedded.js deleted file mode 100644 index e8f7ba80..00000000 --- a/assets/js/plugins/codemirror/mode/htmlembedded/htmlembedded.js +++ /dev/null @@ -1,86 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../htmlmixed/htmlmixed"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("htmlembedded", function(config, parserConfig) { - - //config settings - var scriptStartRegex = parserConfig.scriptStartRegex || /^<%/i, - scriptEndRegex = parserConfig.scriptEndRegex || /^%>/i; - - //inner modes - var scriptingMode, htmlMixedMode; - - //tokenizer when in html mode - function htmlDispatch(stream, state) { - if (stream.match(scriptStartRegex, false)) { - state.token=scriptingDispatch; - return scriptingMode.token(stream, state.scriptState); - } - else - return htmlMixedMode.token(stream, state.htmlState); - } - - //tokenizer when in scripting mode - function scriptingDispatch(stream, state) { - if (stream.match(scriptEndRegex, false)) { - state.token=htmlDispatch; - return htmlMixedMode.token(stream, state.htmlState); - } - else - return scriptingMode.token(stream, state.scriptState); - } - - - return { - startState: function() { - scriptingMode = scriptingMode || CodeMirror.getMode(config, parserConfig.scriptingModeSpec); - htmlMixedMode = htmlMixedMode || CodeMirror.getMode(config, "htmlmixed"); - return { - token : parserConfig.startOpen ? scriptingDispatch : htmlDispatch, - htmlState : CodeMirror.startState(htmlMixedMode), - scriptState : CodeMirror.startState(scriptingMode) - }; - }, - - token: function(stream, state) { - return state.token(stream, state); - }, - - indent: function(state, textAfter) { - if (state.token == htmlDispatch) - return htmlMixedMode.indent(state.htmlState, textAfter); - else if (scriptingMode.indent) - return scriptingMode.indent(state.scriptState, textAfter); - }, - - copyState: function(state) { - return { - token : state.token, - htmlState : CodeMirror.copyState(htmlMixedMode, state.htmlState), - scriptState : CodeMirror.copyState(scriptingMode, state.scriptState) - }; - }, - - innerMode: function(state) { - if (state.token == scriptingDispatch) return {state: state.scriptState, mode: scriptingMode}; - else return {state: state.htmlState, mode: htmlMixedMode}; - } - }; -}, "htmlmixed"); - -CodeMirror.defineMIME("application/x-ejs", { name: "htmlembedded", scriptingModeSpec:"javascript"}); -CodeMirror.defineMIME("application/x-aspx", { name: "htmlembedded", scriptingModeSpec:"text/x-csharp"}); -CodeMirror.defineMIME("application/x-jsp", { name: "htmlembedded", scriptingModeSpec:"text/x-java"}); -CodeMirror.defineMIME("application/x-erb", { name: "htmlembedded", scriptingModeSpec:"ruby"}); - -}); diff --git a/assets/js/plugins/codemirror/mode/htmlembedded/index.html b/assets/js/plugins/codemirror/mode/htmlembedded/index.html deleted file mode 100644 index 93d01c45..00000000 --- a/assets/js/plugins/codemirror/mode/htmlembedded/index.html +++ /dev/null @@ -1,58 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Html Embedded Scripts mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="../xml/xml.js"></script> -<script src="../javascript/javascript.js"></script> -<script src="../css/css.js"></script> -<script src="../htmlmixed/htmlmixed.js"></script> -<script src="htmlembedded.js"></script> -<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Html Embedded Scripts</a> - </ul> -</div> - -<article> -<h2>Html Embedded Scripts mode</h2> -<form><textarea id="code" name="code"> -<% -function hello(who) { - return "Hello " + who; -} -%> -This is an example of EJS (embedded javascript) -<p>The program says <%= hello("world") %>.</p> -<script> - alert("And here is some normal JS code"); // also colored -</script> -</textarea></form> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers: true, - mode: "application/x-ejs", - indentUnit: 4, - indentWithTabs: true - }); - </script> - - <p>Mode for html embedded scripts like JSP and ASP.NET. Depends on HtmlMixed which in turn depends on - JavaScript, CSS and XML.<br />Other dependancies include those of the scriping language chosen.</p> - - <p><strong>MIME types defined:</strong> <code>application/x-aspx</code> (ASP.NET), - <code>application/x-ejs</code> (Embedded Javascript), <code>application/x-jsp</code> (JavaServer Pages)</p> - </article> diff --git a/assets/js/plugins/codemirror/mode/htmlmixed/htmlmixed.js b/assets/js/plugins/codemirror/mode/htmlmixed/htmlmixed.js deleted file mode 100644 index 250ef8cd..00000000 --- a/assets/js/plugins/codemirror/mode/htmlmixed/htmlmixed.js +++ /dev/null @@ -1,121 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../xml/xml"), require("../javascript/javascript"), require("../css/css")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../xml/xml", "../javascript/javascript", "../css/css"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("htmlmixed", function(config, parserConfig) { - var htmlMode = CodeMirror.getMode(config, {name: "xml", - htmlMode: true, - multilineTagIndentFactor: parserConfig.multilineTagIndentFactor, - multilineTagIndentPastTag: parserConfig.multilineTagIndentPastTag}); - var cssMode = CodeMirror.getMode(config, "css"); - - var scriptTypes = [], scriptTypesConf = parserConfig && parserConfig.scriptTypes; - scriptTypes.push({matches: /^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^$/i, - mode: CodeMirror.getMode(config, "javascript")}); - if (scriptTypesConf) for (var i = 0; i < scriptTypesConf.length; ++i) { - var conf = scriptTypesConf[i]; - scriptTypes.push({matches: conf.matches, mode: conf.mode && CodeMirror.getMode(config, conf.mode)}); - } - scriptTypes.push({matches: /./, - mode: CodeMirror.getMode(config, "text/plain")}); - - function html(stream, state) { - var tagName = state.htmlState.tagName; - if (tagName) tagName = tagName.toLowerCase(); - var style = htmlMode.token(stream, state.htmlState); - if (tagName == "script" && /\btag\b/.test(style) && stream.current() == ">") { - // Script block: mode to change to depends on type attribute - var scriptType = stream.string.slice(Math.max(0, stream.pos - 100), stream.pos).match(/\btype\s*=\s*("[^"]+"|'[^']+'|\S+)[^<]*$/i); - scriptType = scriptType ? scriptType[1] : ""; - if (scriptType && /[\"\']/.test(scriptType.charAt(0))) scriptType = scriptType.slice(1, scriptType.length - 1); - for (var i = 0; i < scriptTypes.length; ++i) { - var tp = scriptTypes[i]; - if (typeof tp.matches == "string" ? scriptType == tp.matches : tp.matches.test(scriptType)) { - if (tp.mode) { - state.token = script; - state.localMode = tp.mode; - state.localState = tp.mode.startState && tp.mode.startState(htmlMode.indent(state.htmlState, "")); - } - break; - } - } - } else if (tagName == "style" && /\btag\b/.test(style) && stream.current() == ">") { - state.token = css; - state.localMode = cssMode; - state.localState = cssMode.startState(htmlMode.indent(state.htmlState, "")); - } - return style; - } - function maybeBackup(stream, pat, style) { - var cur = stream.current(); - var close = cur.search(pat), m; - if (close > -1) stream.backUp(cur.length - close); - else if (m = cur.match(/<\/?$/)) { - stream.backUp(cur.length); - if (!stream.match(pat, false)) stream.match(cur); - } - return style; - } - function script(stream, state) { - if (stream.match(/^<\/\s*script\s*>/i, false)) { - state.token = html; - state.localState = state.localMode = null; - return html(stream, state); - } - return maybeBackup(stream, /<\/\s*script\s*>/, - state.localMode.token(stream, state.localState)); - } - function css(stream, state) { - if (stream.match(/^<\/\s*style\s*>/i, false)) { - state.token = html; - state.localState = state.localMode = null; - return html(stream, state); - } - return maybeBackup(stream, /<\/\s*style\s*>/, - cssMode.token(stream, state.localState)); - } - - return { - startState: function() { - var state = htmlMode.startState(); - return {token: html, localMode: null, localState: null, htmlState: state}; - }, - - copyState: function(state) { - if (state.localState) - var local = CodeMirror.copyState(state.localMode, state.localState); - return {token: state.token, localMode: state.localMode, localState: local, - htmlState: CodeMirror.copyState(htmlMode, state.htmlState)}; - }, - - token: function(stream, state) { - return state.token(stream, state); - }, - - indent: function(state, textAfter) { - if (!state.localMode || /^\s*<\//.test(textAfter)) - return htmlMode.indent(state.htmlState, textAfter); - else if (state.localMode.indent) - return state.localMode.indent(state.localState, textAfter); - else - return CodeMirror.Pass; - }, - - innerMode: function(state) { - return {state: state.localState || state.htmlState, mode: state.localMode || htmlMode}; - } - }; -}, "xml", "javascript", "css"); - -CodeMirror.defineMIME("text/html", "htmlmixed"); - -}); diff --git a/assets/js/plugins/codemirror/mode/htmlmixed/index.html b/assets/js/plugins/codemirror/mode/htmlmixed/index.html deleted file mode 100644 index 61630293..00000000 --- a/assets/js/plugins/codemirror/mode/htmlmixed/index.html +++ /dev/null @@ -1,85 +0,0 @@ -<!doctype html> - -<title>CodeMirror: HTML mixed mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="../xml/xml.js"></script> -<script src="../javascript/javascript.js"></script> -<script src="../css/css.js"></script> -<script src="../vbscript/vbscript.js"></script> -<script src="htmlmixed.js"></script> -<style>.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">HTML mixed</a> - </ul> -</div> - -<article> -<h2>HTML mixed mode</h2> -<form><textarea id="code" name="code"> -<html style="color: green"> - <!-- this is a comment --> - <head> - <title>Mixed HTML Example</title> - <style type="text/css"> - h1 {font-family: comic sans; color: #f0f;} - div {background: yellow !important;} - body { - max-width: 50em; - margin: 1em 2em 1em 5em; - } - </style> - </head> - <body> - <h1>Mixed HTML Example</h1> - <script> - function jsFunc(arg1, arg2) { - if (arg1 && arg2) document.body.innerHTML = "achoo"; - } - </script> - </body> -</html> -</textarea></form> - <script> - // Define an extended mixed-mode that understands vbscript and - // leaves mustache/handlebars embedded templates in html mode - var mixedMode = { - name: "htmlmixed", - scriptTypes: [{matches: /\/x-handlebars-template|\/x-mustache/i, - mode: null}, - {matches: /(text|application)\/(x-)?vb(a|script)/i, - mode: "vbscript"}] - }; - var editor = CodeMirror.fromTextArea(document.getElementById("code"), {mode: mixedMode}); - </script> - - <p>The HTML mixed mode depends on the XML, JavaScript, and CSS modes.</p> - - <p>It takes an optional mode configuration - option, <code>scriptTypes</code>, which can be used to add custom - behavior for specific <code>&lt;script type="..."></code> tags. If - given, it should hold an array of <code>{matches, mode}</code> - objects, where <code>matches</code> is a string or regexp that - matches the script type, and <code>mode</code> is - either <code>null</code>, for script types that should stay in - HTML mode, or a <a href="../../doc/manual.html#option_mode">mode - spec</a> corresponding to the mode that should be used for the - script.</p> - - <p><strong>MIME types defined:</strong> <code>text/html</code> - (redefined, only takes effect if you load this parser after the - XML parser).</p> - - </article> diff --git a/assets/js/plugins/codemirror/mode/http/http.js b/assets/js/plugins/codemirror/mode/http/http.js deleted file mode 100644 index 9a3c5f9f..00000000 --- a/assets/js/plugins/codemirror/mode/http/http.js +++ /dev/null @@ -1,113 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("http", function() { - function failFirstLine(stream, state) { - stream.skipToEnd(); - state.cur = header; - return "error"; - } - - function start(stream, state) { - if (stream.match(/^HTTP\/\d\.\d/)) { - state.cur = responseStatusCode; - return "keyword"; - } else if (stream.match(/^[A-Z]+/) && /[ \t]/.test(stream.peek())) { - state.cur = requestPath; - return "keyword"; - } else { - return failFirstLine(stream, state); - } - } - - function responseStatusCode(stream, state) { - var code = stream.match(/^\d+/); - if (!code) return failFirstLine(stream, state); - - state.cur = responseStatusText; - var status = Number(code[0]); - if (status >= 100 && status < 200) { - return "positive informational"; - } else if (status >= 200 && status < 300) { - return "positive success"; - } else if (status >= 300 && status < 400) { - return "positive redirect"; - } else if (status >= 400 && status < 500) { - return "negative client-error"; - } else if (status >= 500 && status < 600) { - return "negative server-error"; - } else { - return "error"; - } - } - - function responseStatusText(stream, state) { - stream.skipToEnd(); - state.cur = header; - return null; - } - - function requestPath(stream, state) { - stream.eatWhile(/\S/); - state.cur = requestProtocol; - return "string-2"; - } - - function requestProtocol(stream, state) { - if (stream.match(/^HTTP\/\d\.\d$/)) { - state.cur = header; - return "keyword"; - } else { - return failFirstLine(stream, state); - } - } - - function header(stream) { - if (stream.sol() && !stream.eat(/[ \t]/)) { - if (stream.match(/^.*?:/)) { - return "atom"; - } else { - stream.skipToEnd(); - return "error"; - } - } else { - stream.skipToEnd(); - return "string"; - } - } - - function body(stream) { - stream.skipToEnd(); - return null; - } - - return { - token: function(stream, state) { - var cur = state.cur; - if (cur != header && cur != body && stream.eatSpace()) return null; - return cur(stream, state); - }, - - blankLine: function(state) { - state.cur = body; - }, - - startState: function() { - return {cur: start}; - } - }; -}); - -CodeMirror.defineMIME("message/http", "http"); - -}); diff --git a/assets/js/plugins/codemirror/mode/http/index.html b/assets/js/plugins/codemirror/mode/http/index.html deleted file mode 100644 index 0b8d5315..00000000 --- a/assets/js/plugins/codemirror/mode/http/index.html +++ /dev/null @@ -1,45 +0,0 @@ -<!doctype html> - -<title>CodeMirror: HTTP mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="http.js"></script> -<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">HTTP</a> - </ul> -</div> - -<article> -<h2>HTTP mode</h2> - - -<div><textarea id="code" name="code"> -POST /somewhere HTTP/1.1 -Host: example.com -If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT -Content-Type: application/x-www-form-urlencoded; - charset=utf-8 -User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.11 (KHTML, like Gecko) Ubuntu/12.04 Chromium/20.0.1132.47 Chrome/20.0.1132.47 Safari/536.11 - -This is the request body! -</textarea></div> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), {}); - </script> - - <p><strong>MIME types defined:</strong> <code>message/http</code>.</p> - </article> diff --git a/assets/js/plugins/codemirror/mode/index.html b/assets/js/plugins/codemirror/mode/index.html deleted file mode 100644 index bb656d2a..00000000 --- a/assets/js/plugins/codemirror/mode/index.html +++ /dev/null @@ -1,125 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Language Modes</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../doc/docs.css"> - -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../doc/logo.png"></a> - - <ul> - <li><a href="../index.html">Home</a> - <li><a href="../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a class=active href="#">Language modes</a> - </ul> -</div> - -<article> - -<h2>Language modes</h2> - -<p>This is a list of every mode in the distribution. Each mode lives -in a subdirectory of the <code>mode/</code> directory, and typically -defines a single JavaScript file that implements the mode. Loading -such file will make the language available to CodeMirror, through -the <a href="manual.html#option_mode"><code>mode</code></a> -option.</p> - -<div style="-webkit-columns: 100px 2; -moz-columns: 100px 2; columns: 100px 2;"> - <ul style="margin-top: 0"> - <li><a href="apl/index.html">APL</a></li> - <li><a href="asterisk/index.html">Asterisk dialplan</a></li> - <li><a href="clike/index.html">C, C++, C#</a></li> - <li><a href="clojure/index.html">Clojure</a></li> - <li><a href="cobol/index.html">COBOL</a></li> - <li><a href="coffeescript/index.html">CoffeeScript</a></li> - <li><a href="commonlisp/index.html">Common Lisp</a></li> - <li><a href="css/index.html">CSS</a></li> - <li><a href="cypher/index.html">Cypher</a></li> - <li><a href="python/index.html">Cython</a></li> - <li><a href="d/index.html">D</a></li> - <li><a href="django/index.html">Django</a> (templating language)</li> - <li><a href="diff/index.html">diff</a></li> - <li><a href="dtd/index.html">DTD</a></li> - <li><a href="dylan/index.html">Dylan</a></li> - <li><a href="ecl/index.html">ECL</a></li> - <li><a href="eiffel/index.html">Eiffel</a></li> - <li><a href="erlang/index.html">Erlang</a></li> - <li><a href="fortran/index.html">Fortran</a></li> - <li><a href="mllike/index.html">F#</a></li> - <li><a href="gas/index.html">Gas</a> (AT&amp;T-style assembly)</li> - <li><a href="gherkin/index.html">Gherkin</a></li> - <li><a href="go/index.html">Go</a></li> - <li><a href="groovy/index.html">Groovy</a></li> - <li><a href="haml/index.html">HAML</a></li> - <li><a href="haskell/index.html">Haskell</a></li> - <li><a href="haxe/index.html">Haxe</a></li> - <li><a href="htmlembedded/index.html">HTML embedded scripts</a></li> - <li><a href="htmlmixed/index.html">HTML mixed-mode</a></li> - <li><a href="http/index.html">HTTP</a></li> - <li><a href="clike/index.html">Java</a></li> - <li><a href="jade/index.html">Jade</a></li> - <li><a href="javascript/index.html">JavaScript</a></li> - <li><a href="jinja2/index.html">Jinja2</a></li> - <li><a href="julia/index.html">Julia</a></li> - <li><a href="kotlin/index.html">Kotlin</a></li> - <li><a href="css/less.html">LESS</a></li> - <li><a href="livescript/index.html">LiveScript</a></li> - <li><a href="lua/index.html">Lua</a></li> - <li><a href="markdown/index.html">Markdown</a> (<a href="gfm/index.html">GitHub-flavour</a>)</li> - <li><a href="mirc/index.html">mIRC</a></li> - <li><a href="modelica/index.html">Modelica</a></li> - <li><a href="nginx/index.html">Nginx</a></li> - <li><a href="ntriples/index.html">NTriples</a></li> - <li><a href="mllike/index.html">OCaml</a></li> - <li><a href="octave/index.html">Octave</a> (MATLAB)</li> - <li><a href="pascal/index.html">Pascal</a></li> - <li><a href="pegjs/index.html">PEG.js</a></li> - <li><a href="perl/index.html">Perl</a></li> - <li><a href="php/index.html">PHP</a></li> - <li><a href="pig/index.html">Pig Latin</a></li> - <li><a href="properties/index.html">Properties files</a></li> - <li><a href="puppet/index.html">Puppet</a></li> - <li><a href="python/index.html">Python</a></li> - <li><a href="q/index.html">Q</a></li> - <li><a href="r/index.html">R</a></li> - <li><a href="rpm/index.html">RPM</a></li> - <li><a href="rst/index.html">reStructuredText</a></li> - <li><a href="ruby/index.html">Ruby</a></li> - <li><a href="rust/index.html">Rust</a></li> - <li><a href="sass/index.html">Sass</a></li> - <li><a href="clike/scala.html">Scala</a></li> - <li><a href="scheme/index.html">Scheme</a></li> - <li><a href="css/scss.html">SCSS</a></li> - <li><a href="shell/index.html">Shell</a></li> - <li><a href="sieve/index.html">Sieve</a></li> - <li><a href="slim/index.html">Slim</a></li> - <li><a href="smalltalk/index.html">Smalltalk</a></li> - <li><a href="smarty/index.html">Smarty</a></li> - <li><a href="smartymixed/index.html">Smarty/HTML mixed</a></li> - <li><a href="solr/index.html">Solr</a></li> - <li><a href="sql/index.html">SQL</a> (several dialects)</li> - <li><a href="sparql/index.html">SPARQL</a></li> - <li><a href="stex/index.html">sTeX, LaTeX</a></li> - <li><a href="tcl/index.html">Tcl</a></li> - <li><a href="textile/index.html">Textile</a></li> - <li><a href="tiddlywiki/index.html">Tiddlywiki</a></li> - <li><a href="tiki/index.html">Tiki wiki</a></li> - <li><a href="toml/index.html">TOML</a></li> - <li><a href="tornado/index.html">Tornado</a> (templating language)</li> - <li><a href="turtle/index.html">Turtle</a></li> - <li><a href="vb/index.html">VB.NET</a></li> - <li><a href="vbscript/index.html">VBScript</a></li> - <li><a href="velocity/index.html">Velocity</a></li> - <li><a href="verilog/index.html">Verilog/SystemVerilog</a></li> - <li><a href="xml/index.html">XML/HTML</a></li> - <li><a href="xquery/index.html">XQuery</a></li> - <li><a href="yaml/index.html">YAML</a></li> - <li><a href="z80/index.html">Z80</a></li> - </ul> - </div> - -</article> diff --git a/assets/js/plugins/codemirror/mode/jade/index.html b/assets/js/plugins/codemirror/mode/jade/index.html deleted file mode 100644 index e534981b..00000000 --- a/assets/js/plugins/codemirror/mode/jade/index.html +++ /dev/null @@ -1,70 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Jade Templating Mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="../javascript/javascript.js"></script> -<script src="../css/css.js"></script> -<script src="../xml/xml.js"></script> -<script src="../htmlmixed/htmlmixed.js"></script> -<script src="jade.js"></script> -<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Jade Templating Mode</a> - </ul> -</div> - -<article> -<h2>Jade Templating Mode</h2> -<form><textarea id="code" name="code"> -doctype html - html - head - title= "Jade Templating CodeMirror Mode Example" - link(rel='stylesheet', href='/css/bootstrap.min.css') - link(rel='stylesheet', href='/css/index.css') - script(type='text/javascript', src='/js/jquery-1.9.1.min.js') - script(type='text/javascript', src='/js/bootstrap.min.js') - body - div.header - h1 Welcome to this Example - div.spots - if locals.spots - each spot in spots - div.spot.well - div - if spot.logo - img.img-rounded.logo(src=spot.logo) - else - img.img-rounded.logo(src="img/placeholder.png") - h3 - a(href=spot.hash) ##{spot.hash} - if spot.title - span.title #{spot.title} - if spot.desc - div #{spot.desc} - else - h3 There are no spots currently available. -</textarea></form> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - mode: {name: "jade", alignCDATA: true}, - lineNumbers: true - }); - </script> - <h3>The Jade Templating Mode</h3> - <p> Created by Forbes Lindesay. Managed as part of a Brackets extension at <a href="https://github.com/ForbesLindesay/jade-brackets">https://github.com/ForbesLindesay/jade-brackets</a>.</p> - <p><strong>MIME type defined:</strong> <code>text/x-jade</code>.</p> - </article> diff --git a/assets/js/plugins/codemirror/mode/jade/jade.js b/assets/js/plugins/codemirror/mode/jade/jade.js deleted file mode 100644 index 96fadb19..00000000 --- a/assets/js/plugins/codemirror/mode/jade/jade.js +++ /dev/null @@ -1,590 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../javascript/javascript"), require("../css/css"), require("../htmlmixed/htmlmixed")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../javascript/javascript", "../css/css", "../htmlmixed/htmlmixed"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode('jade', function (config) { - // token types - var KEYWORD = 'keyword'; - var DOCTYPE = 'meta'; - var ID = 'builtin'; - var CLASS = 'qualifier'; - - var ATTRS_NEST = { - '{': '}', - '(': ')', - '[': ']' - }; - - var jsMode = CodeMirror.getMode(config, 'javascript'); - - function State() { - this.javaScriptLine = false; - this.javaScriptLineExcludesColon = false; - - this.javaScriptArguments = false; - this.javaScriptArgumentsDepth = 0; - - this.isInterpolating = false; - this.interpolationNesting = 0; - - this.jsState = jsMode.startState(); - - this.restOfLine = ''; - - this.isIncludeFiltered = false; - this.isEach = false; - - this.lastTag = ''; - this.scriptType = ''; - - // Attributes Mode - this.isAttrs = false; - this.attrsNest = []; - this.inAttributeName = true; - this.attributeIsType = false; - this.attrValue = ''; - - // Indented Mode - this.indentOf = Infinity; - this.indentToken = ''; - - this.innerMode = null; - this.innerState = null; - - this.innerModeForLine = false; - } - /** - * Safely copy a state - * - * @return {State} - */ - State.prototype.copy = function () { - var res = new State(); - res.javaScriptLine = this.javaScriptLine; - res.javaScriptLineExcludesColon = this.javaScriptLineExcludesColon; - res.javaScriptArguments = this.javaScriptArguments; - res.javaScriptArgumentsDepth = this.javaScriptArgumentsDepth; - res.isInterpolating = this.isInterpolating; - res.interpolationNesting = this.intpolationNesting; - - res.jsState = CodeMirror.copyState(jsMode, this.jsState); - - res.innerMode = this.innerMode; - if (this.innerMode && this.innerState) { - res.innerState = CodeMirror.copyState(this.innerMode, this.innerState); - } - - res.restOfLine = this.restOfLine; - - res.isIncludeFiltered = this.isIncludeFiltered; - res.isEach = this.isEach; - res.lastTag = this.lastTag; - res.scriptType = this.scriptType; - res.isAttrs = this.isAttrs; - res.attrsNest = this.attrsNest.slice(); - res.inAttributeName = this.inAttributeName; - res.attributeIsType = this.attributeIsType; - res.attrValue = this.attrValue; - res.indentOf = this.indentOf; - res.indentToken = this.indentToken; - - res.innerModeForLine = this.innerModeForLine; - - return res; - }; - - function javaScript(stream, state) { - if (stream.sol()) { - // if javaScriptLine was set at end of line, ignore it - state.javaScriptLine = false; - state.javaScriptLineExcludesColon = false; - } - if (state.javaScriptLine) { - if (state.javaScriptLineExcludesColon && stream.peek() === ':') { - state.javaScriptLine = false; - state.javaScriptLineExcludesColon = false; - return; - } - var tok = jsMode.token(stream, state.jsState); - if (stream.eol()) state.javaScriptLine = false; - return tok || true; - } - } - function javaScriptArguments(stream, state) { - if (state.javaScriptArguments) { - if (state.javaScriptArgumentsDepth === 0 && stream.peek() !== '(') { - state.javaScriptArguments = false; - return; - } - if (stream.peek() === '(') { - state.javaScriptArgumentsDepth++; - } else if (stream.peek() === ')') { - state.javaScriptArgumentsDepth--; - } - if (state.javaScriptArgumentsDepth === 0) { - state.javaScriptArguments = false; - return; - } - - var tok = jsMode.token(stream, state.jsState); - return tok || true; - } - } - - function yieldStatement(stream) { - if (stream.match(/^yield\b/)) { - return 'keyword'; - } - } - - function doctype(stream) { - if (stream.match(/^(?:doctype) *([^\n]+)?/)) { - return DOCTYPE; - } - } - - function interpolation(stream, state) { - if (stream.match('#{')) { - state.isInterpolating = true; - state.interpolationNesting = 0; - return 'punctuation'; - } - } - - function interpolationContinued(stream, state) { - if (state.isInterpolating) { - if (stream.peek() === '}') { - state.interpolationNesting--; - if (state.interpolationNesting < 0) { - stream.next(); - state.isInterpolating = false; - return 'puncutation'; - } - } else if (stream.peek() === '{') { - state.interpolationNesting++; - } - return jsMode.token(stream, state.jsState) || true; - } - } - - function caseStatement(stream, state) { - if (stream.match(/^case\b/)) { - state.javaScriptLine = true; - return KEYWORD; - } - } - - function when(stream, state) { - if (stream.match(/^when\b/)) { - state.javaScriptLine = true; - state.javaScriptLineExcludesColon = true; - return KEYWORD; - } - } - - function defaultStatement(stream) { - if (stream.match(/^default\b/)) { - return KEYWORD; - } - } - - function extendsStatement(stream, state) { - if (stream.match(/^extends?\b/)) { - state.restOfLine = 'string'; - return KEYWORD; - } - } - - function append(stream, state) { - if (stream.match(/^append\b/)) { - state.restOfLine = 'variable'; - return KEYWORD; - } - } - function prepend(stream, state) { - if (stream.match(/^prepend\b/)) { - state.restOfLine = 'variable'; - return KEYWORD; - } - } - function block(stream, state) { - if (stream.match(/^block\b *(?:(prepend|append)\b)?/)) { - state.restOfLine = 'variable'; - return KEYWORD; - } - } - - function include(stream, state) { - if (stream.match(/^include\b/)) { - state.restOfLine = 'string'; - return KEYWORD; - } - } - - function includeFiltered(stream, state) { - if (stream.match(/^include:([a-zA-Z0-9\-]+)/, false) && stream.match('include')) { - state.isIncludeFiltered = true; - return KEYWORD; - } - } - - function includeFilteredContinued(stream, state) { - if (state.isIncludeFiltered) { - var tok = filter(stream, state); - state.isIncludeFiltered = false; - state.restOfLine = 'string'; - return tok; - } - } - - function mixin(stream, state) { - if (stream.match(/^mixin\b/)) { - state.javaScriptLine = true; - return KEYWORD; - } - } - - function call(stream, state) { - if (stream.match(/^\+([-\w]+)/)) { - if (!stream.match(/^\( *[-\w]+ *=/, false)) { - state.javaScriptArguments = true; - state.javaScriptArgumentsDepth = 0; - } - return 'variable'; - } - if (stream.match(/^\+#{/, false)) { - stream.next(); - state.mixinCallAfter = true; - return interpolation(stream, state); - } - } - function callArguments(stream, state) { - if (state.mixinCallAfter) { - state.mixinCallAfter = false; - if (!stream.match(/^\( *[-\w]+ *=/, false)) { - state.javaScriptArguments = true; - state.javaScriptArgumentsDepth = 0; - } - return true; - } - } - - function conditional(stream, state) { - if (stream.match(/^(if|unless|else if|else)\b/)) { - state.javaScriptLine = true; - return KEYWORD; - } - } - - function each(stream, state) { - if (stream.match(/^(- *)?(each|for)\b/)) { - state.isEach = true; - return KEYWORD; - } - } - function eachContinued(stream, state) { - if (state.isEach) { - if (stream.match(/^ in\b/)) { - state.javaScriptLine = true; - state.isEach = false; - return KEYWORD; - } else if (stream.sol() || stream.eol()) { - state.isEach = false; - } else if (stream.next()) { - while (!stream.match(/^ in\b/, false) && stream.next()); - return 'variable'; - } - } - } - - function whileStatement(stream, state) { - if (stream.match(/^while\b/)) { - state.javaScriptLine = true; - return KEYWORD; - } - } - - function tag(stream, state) { - var captures; - if (captures = stream.match(/^(\w(?:[-:\w]*\w)?)\/?/)) { - state.lastTag = captures[1].toLowerCase(); - if (state.lastTag === 'script') { - state.scriptType = 'application/javascript'; - } - return 'tag'; - } - } - - function filter(stream, state) { - if (stream.match(/^:([\w\-]+)/)) { - var innerMode; - if (config && config.innerModes) { - innerMode = config.innerModes(stream.current().substring(1)); - } - if (!innerMode) { - innerMode = stream.current().substring(1); - } - if (typeof innerMode === 'string') { - innerMode = CodeMirror.getMode(config, innerMode); - } - setInnerMode(stream, state, innerMode); - return 'atom'; - } - } - - function code(stream, state) { - if (stream.match(/^(!?=|-)/)) { - state.javaScriptLine = true; - return 'punctuation'; - } - } - - function id(stream) { - if (stream.match(/^#([\w-]+)/)) { - return ID; - } - } - - function className(stream) { - if (stream.match(/^\.([\w-]+)/)) { - return CLASS; - } - } - - function attrs(stream, state) { - if (stream.peek() == '(') { - stream.next(); - state.isAttrs = true; - state.attrsNest = []; - state.inAttributeName = true; - state.attrValue = ''; - state.attributeIsType = false; - return 'punctuation'; - } - } - - function attrsContinued(stream, state) { - if (state.isAttrs) { - if (ATTRS_NEST[stream.peek()]) { - state.attrsNest.push(ATTRS_NEST[stream.peek()]); - } - if (state.attrsNest[state.attrsNest.length - 1] === stream.peek()) { - state.attrsNest.pop(); - } else if (stream.eat(')')) { - state.isAttrs = false; - return 'punctuation'; - } - if (state.inAttributeName && stream.match(/^[^=,\)!]+/)) { - if (stream.peek() === '=' || stream.peek() === '!') { - state.inAttributeName = false; - state.jsState = jsMode.startState(); - if (state.lastTag === 'script' && stream.current().trim().toLowerCase() === 'type') { - state.attributeIsType = true; - } else { - state.attributeIsType = false; - } - } - return 'attribute'; - } - - var tok = jsMode.token(stream, state.jsState); - if (state.attributeIsType && tok === 'string') { - state.scriptType = stream.current().toString(); - } - if (state.attrsNest.length === 0 && (tok === 'string' || tok === 'variable' || tok === 'keyword')) { - try { - Function('', 'var x ' + state.attrValue.replace(/,\s*$/, '').replace(/^!/, '')); - state.inAttributeName = true; - state.attrValue = ''; - stream.backUp(stream.current().length); - return attrsContinued(stream, state); - } catch (ex) { - //not the end of an attribute - } - } - state.attrValue += stream.current(); - return tok || true; - } - } - - function attributesBlock(stream, state) { - if (stream.match(/^&attributes\b/)) { - state.javaScriptArguments = true; - state.javaScriptArgumentsDepth = 0; - return 'keyword'; - } - } - - function indent(stream) { - if (stream.sol() && stream.eatSpace()) { - return 'indent'; - } - } - - function comment(stream, state) { - if (stream.match(/^ *\/\/(-)?([^\n]*)/)) { - state.indentOf = stream.indentation(); - state.indentToken = 'comment'; - return 'comment'; - } - } - - function colon(stream) { - if (stream.match(/^: */)) { - return 'colon'; - } - } - - function text(stream, state) { - if (stream.match(/^(?:\| ?| )([^\n]+)/)) { - return 'string'; - } - if (stream.match(/^(<[^\n]*)/, false)) { - // html string - setInnerMode(stream, state, 'htmlmixed'); - state.innerModeForLine = true; - return innerMode(stream, state, true); - } - } - - function dot(stream, state) { - if (stream.eat('.')) { - var innerMode = null; - if (state.lastTag === 'script' && state.scriptType.toLowerCase().indexOf('javascript') != -1) { - innerMode = state.scriptType.toLowerCase().replace(/"|'/g, ''); - } else if (state.lastTag === 'style') { - innerMode = 'css'; - } - setInnerMode(stream, state, innerMode); - return 'dot'; - } - } - - function fail(stream) { - stream.next(); - return null; - } - - - function setInnerMode(stream, state, mode) { - mode = CodeMirror.mimeModes[mode] || mode; - mode = config.innerModes ? config.innerModes(mode) || mode : mode; - mode = CodeMirror.mimeModes[mode] || mode; - mode = CodeMirror.getMode(config, mode); - state.indentOf = stream.indentation(); - - if (mode && mode.name !== 'null') { - state.innerMode = mode; - } else { - state.indentToken = 'string'; - } - } - function innerMode(stream, state, force) { - if (stream.indentation() > state.indentOf || (state.innerModeForLine && !stream.sol()) || force) { - if (state.innerMode) { - if (!state.innerState) { - state.innerState = state.innerMode.startState ? state.innerMode.startState(stream.indentation()) : {}; - } - return stream.hideFirstChars(state.indentOf + 2, function () { - return state.innerMode.token(stream, state.innerState) || true; - }); - } else { - stream.skipToEnd(); - return state.indentToken; - } - } else if (stream.sol()) { - state.indentOf = Infinity; - state.indentToken = null; - state.innerMode = null; - state.innerState = null; - } - } - function restOfLine(stream, state) { - if (stream.sol()) { - // if restOfLine was set at end of line, ignore it - state.restOfLine = ''; - } - if (state.restOfLine) { - stream.skipToEnd(); - var tok = state.restOfLine; - state.restOfLine = ''; - return tok; - } - } - - - function startState() { - return new State(); - } - function copyState(state) { - return state.copy(); - } - /** - * Get the next token in the stream - * - * @param {Stream} stream - * @param {State} state - */ - function nextToken(stream, state) { - var tok = innerMode(stream, state) - || restOfLine(stream, state) - || interpolationContinued(stream, state) - || includeFilteredContinued(stream, state) - || eachContinued(stream, state) - || attrsContinued(stream, state) - || javaScript(stream, state) - || javaScriptArguments(stream, state) - || callArguments(stream, state) - - || yieldStatement(stream, state) - || doctype(stream, state) - || interpolation(stream, state) - || caseStatement(stream, state) - || when(stream, state) - || defaultStatement(stream, state) - || extendsStatement(stream, state) - || append(stream, state) - || prepend(stream, state) - || block(stream, state) - || include(stream, state) - || includeFiltered(stream, state) - || mixin(stream, state) - || call(stream, state) - || conditional(stream, state) - || each(stream, state) - || whileStatement(stream, state) - || tag(stream, state) - || filter(stream, state) - || code(stream, state) - || id(stream, state) - || className(stream, state) - || attrs(stream, state) - || attributesBlock(stream, state) - || indent(stream, state) - || text(stream, state) - || comment(stream, state) - || colon(stream, state) - || dot(stream, state) - || fail(stream, state); - - return tok === true ? null : tok; - } - return { - startState: startState, - copyState: copyState, - token: nextToken - }; -}); - -CodeMirror.defineMIME('text/x-jade', 'jade'); - -}); diff --git a/assets/js/plugins/codemirror/mode/javascript/index.html b/assets/js/plugins/codemirror/mode/javascript/index.html deleted file mode 100644 index 592a133d..00000000 --- a/assets/js/plugins/codemirror/mode/javascript/index.html +++ /dev/null @@ -1,114 +0,0 @@ -<!doctype html> - -<title>CodeMirror: JavaScript mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="../../addon/edit/matchbrackets.js"></script> -<script src="../../addon/comment/continuecomment.js"></script> -<script src="../../addon/comment/comment.js"></script> -<script src="javascript.js"></script> -<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">JavaScript</a> - </ul> -</div> - -<article> -<h2>JavaScript mode</h2> - - -<div><textarea id="code" name="code"> -// Demo code (the actual new parser character stream implementation) - -function StringStream(string) { - this.pos = 0; - this.string = string; -} - -StringStream.prototype = { - done: function() {return this.pos >= this.string.length;}, - peek: function() {return this.string.charAt(this.pos);}, - next: function() { - if (this.pos &lt; this.string.length) - return this.string.charAt(this.pos++); - }, - eat: function(match) { - var ch = this.string.charAt(this.pos); - if (typeof match == "string") var ok = ch == match; - else var ok = ch &amp;&amp; match.test ? match.test(ch) : match(ch); - if (ok) {this.pos++; return ch;} - }, - eatWhile: function(match) { - var start = this.pos; - while (this.eat(match)); - if (this.pos > start) return this.string.slice(start, this.pos); - }, - backUp: function(n) {this.pos -= n;}, - column: function() {return this.pos;}, - eatSpace: function() { - var start = this.pos; - while (/\s/.test(this.string.charAt(this.pos))) this.pos++; - return this.pos - start; - }, - match: function(pattern, consume, caseInsensitive) { - if (typeof pattern == "string") { - function cased(str) {return caseInsensitive ? str.toLowerCase() : str;} - if (cased(this.string).indexOf(cased(pattern), this.pos) == this.pos) { - if (consume !== false) this.pos += str.length; - return true; - } - } - else { - var match = this.string.slice(this.pos).match(pattern); - if (match &amp;&amp; consume !== false) this.pos += match[0].length; - return match; - } - } -}; -</textarea></div> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers: true, - matchBrackets: true, - continueComments: "Enter", - extraKeys: {"Ctrl-Q": "toggleComment"} - }); - </script> - - <p> - JavaScript mode supports several configuration options: - <ul> - <li><code>json</code> which will set the mode to expect JSON - data rather than a JavaScript program.</li> - <li><code>jsonld</code> which will set the mode to expect - <a href="http://json-ld.org">JSON-LD</a> linked data rather - than a JavaScript program (<a href="json-ld.html">demo</a>).</li> - <li><code>typescript</code> which will activate additional - syntax highlighting and some other things for TypeScript code - (<a href="typescript.html">demo</a>).</li> - <li><code>statementIndent</code> which (given a number) will - determine the amount of indentation to use for statements - continued on a new line.</li> - <li><code>wordCharacters</code>, a regexp that indicates which - characters should be considered part of an identifier. - Defaults to <code>/[\w$]/</code>, which does not handle - non-ASCII identifiers. Can be set to something more elaborate - to improve Unicode support.</li> - </ul> - </p> - - <p><strong>MIME types defined:</strong> <code>text/javascript</code>, <code>application/json</code>, <code>application/ld+json</code>, <code>text/typescript</code>, <code>application/typescript</code>.</p> - </article> diff --git a/assets/js/plugins/codemirror/mode/javascript/javascript.js b/assets/js/plugins/codemirror/mode/javascript/javascript.js deleted file mode 100644 index b0ba8d01..00000000 --- a/assets/js/plugins/codemirror/mode/javascript/javascript.js +++ /dev/null @@ -1,684 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// TODO actually recognize syntax of TypeScript constructs - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("javascript", function(config, parserConfig) { - var indentUnit = config.indentUnit; - var statementIndent = parserConfig.statementIndent; - var jsonldMode = parserConfig.jsonld; - var jsonMode = parserConfig.json || jsonldMode; - var isTS = parserConfig.typescript; - var wordRE = parserConfig.wordCharacters || /[\w$\xa1-\uffff]/; - - // Tokenizer - - var keywords = function(){ - function kw(type) {return {type: type, style: "keyword"};} - var A = kw("keyword a"), B = kw("keyword b"), C = kw("keyword c"); - var operator = kw("operator"), atom = {type: "atom", style: "atom"}; - - var jsKeywords = { - "if": kw("if"), "while": A, "with": A, "else": B, "do": B, "try": B, "finally": B, - "return": C, "break": C, "continue": C, "new": C, "delete": C, "throw": C, "debugger": C, - "var": kw("var"), "const": kw("var"), "let": kw("var"), - "function": kw("function"), "catch": kw("catch"), - "for": kw("for"), "switch": kw("switch"), "case": kw("case"), "default": kw("default"), - "in": operator, "typeof": operator, "instanceof": operator, - "true": atom, "false": atom, "null": atom, "undefined": atom, "NaN": atom, "Infinity": atom, - "this": kw("this"), "module": kw("module"), "class": kw("class"), "super": kw("atom"), - "yield": C, "export": kw("export"), "import": kw("import"), "extends": C - }; - - // Extend the 'normal' keywords with the TypeScript language extensions - if (isTS) { - var type = {type: "variable", style: "variable-3"}; - var tsKeywords = { - // object-like things - "interface": kw("interface"), - "extends": kw("extends"), - "constructor": kw("constructor"), - - // scope modifiers - "public": kw("public"), - "private": kw("private"), - "protected": kw("protected"), - "static": kw("static"), - - // types - "string": type, "number": type, "bool": type, "any": type - }; - - for (var attr in tsKeywords) { - jsKeywords[attr] = tsKeywords[attr]; - } - } - - return jsKeywords; - }(); - - var isOperatorChar = /[+\-*&%=<>!?|~^]/; - var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/; - - function readRegexp(stream) { - var escaped = false, next, inSet = false; - while ((next = stream.next()) != null) { - if (!escaped) { - if (next == "/" && !inSet) return; - if (next == "[") inSet = true; - else if (inSet && next == "]") inSet = false; - } - escaped = !escaped && next == "\\"; - } - } - - // Used as scratch variables to communicate multiple values without - // consing up tons of objects. - var type, content; - function ret(tp, style, cont) { - type = tp; content = cont; - return style; - } - function tokenBase(stream, state) { - var ch = stream.next(); - if (ch == '"' || ch == "'") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } else if (ch == "." && stream.match(/^\d+(?:[eE][+\-]?\d+)?/)) { - return ret("number", "number"); - } else if (ch == "." && stream.match("..")) { - return ret("spread", "meta"); - } else if (/[\[\]{}\(\),;\:\.]/.test(ch)) { - return ret(ch); - } else if (ch == "=" && stream.eat(">")) { - return ret("=>", "operator"); - } else if (ch == "0" && stream.eat(/x/i)) { - stream.eatWhile(/[\da-f]/i); - return ret("number", "number"); - } else if (/\d/.test(ch)) { - stream.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/); - return ret("number", "number"); - } else if (ch == "/") { - if (stream.eat("*")) { - state.tokenize = tokenComment; - return tokenComment(stream, state); - } else if (stream.eat("/")) { - stream.skipToEnd(); - return ret("comment", "comment"); - } else if (state.lastType == "operator" || state.lastType == "keyword c" || - state.lastType == "sof" || /^[\[{}\(,;:]$/.test(state.lastType)) { - readRegexp(stream); - stream.eatWhile(/[gimy]/); // 'y' is "sticky" option in Mozilla - return ret("regexp", "string-2"); - } else { - stream.eatWhile(isOperatorChar); - return ret("operator", "operator", stream.current()); - } - } else if (ch == "`") { - state.tokenize = tokenQuasi; - return tokenQuasi(stream, state); - } else if (ch == "#") { - stream.skipToEnd(); - return ret("error", "error"); - } else if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return ret("operator", "operator", stream.current()); - } else if (wordRE.test(ch)) { - stream.eatWhile(wordRE); - var word = stream.current(), known = keywords.propertyIsEnumerable(word) && keywords[word]; - return (known && state.lastType != ".") ? ret(known.type, known.style, word) : - ret("variable", "variable", word); - } - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next; - if (jsonldMode && stream.peek() == "@" && stream.match(isJsonldKeyword)){ - state.tokenize = tokenBase; - return ret("jsonld-keyword", "meta"); - } - while ((next = stream.next()) != null) { - if (next == quote && !escaped) break; - escaped = !escaped && next == "\\"; - } - if (!escaped) state.tokenize = tokenBase; - return ret("string", "string"); - }; - } - - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch == "*"); - } - return ret("comment", "comment"); - } - - function tokenQuasi(stream, state) { - var escaped = false, next; - while ((next = stream.next()) != null) { - if (!escaped && (next == "`" || next == "$" && stream.eat("{"))) { - state.tokenize = tokenBase; - break; - } - escaped = !escaped && next == "\\"; - } - return ret("quasi", "string-2", stream.current()); - } - - var brackets = "([{}])"; - // This is a crude lookahead trick to try and notice that we're - // parsing the argument patterns for a fat-arrow function before we - // actually hit the arrow token. It only works if the arrow is on - // the same line as the arguments and there's no strange noise - // (comments) in between. Fallback is to only notice when we hit the - // arrow, and not declare the arguments as locals for the arrow - // body. - function findFatArrow(stream, state) { - if (state.fatArrowAt) state.fatArrowAt = null; - var arrow = stream.string.indexOf("=>", stream.start); - if (arrow < 0) return; - - var depth = 0, sawSomething = false; - for (var pos = arrow - 1; pos >= 0; --pos) { - var ch = stream.string.charAt(pos); - var bracket = brackets.indexOf(ch); - if (bracket >= 0 && bracket < 3) { - if (!depth) { ++pos; break; } - if (--depth == 0) break; - } else if (bracket >= 3 && bracket < 6) { - ++depth; - } else if (wordRE.test(ch)) { - sawSomething = true; - } else if (sawSomething && !depth) { - ++pos; - break; - } - } - if (sawSomething && !depth) state.fatArrowAt = pos; - } - - // Parser - - var atomicTypes = {"atom": true, "number": true, "variable": true, "string": true, "regexp": true, "this": true, "jsonld-keyword": true}; - - function JSLexical(indented, column, type, align, prev, info) { - this.indented = indented; - this.column = column; - this.type = type; - this.prev = prev; - this.info = info; - if (align != null) this.align = align; - } - - function inScope(state, varname) { - for (var v = state.localVars; v; v = v.next) - if (v.name == varname) return true; - for (var cx = state.context; cx; cx = cx.prev) { - for (var v = cx.vars; v; v = v.next) - if (v.name == varname) return true; - } - } - - function parseJS(state, style, type, content, stream) { - var cc = state.cc; - // Communicate our context to the combinators. - // (Less wasteful than consing up a hundred closures on every call.) - cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style; - - if (!state.lexical.hasOwnProperty("align")) - state.lexical.align = true; - - while(true) { - var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement; - if (combinator(type, content)) { - while(cc.length && cc[cc.length - 1].lex) - cc.pop()(); - if (cx.marked) return cx.marked; - if (type == "variable" && inScope(state, content)) return "variable-2"; - return style; - } - } - } - - // Combinator utils - - var cx = {state: null, column: null, marked: null, cc: null}; - function pass() { - for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]); - } - function cont() { - pass.apply(null, arguments); - return true; - } - function register(varname) { - function inList(list) { - for (var v = list; v; v = v.next) - if (v.name == varname) return true; - return false; - } - var state = cx.state; - if (state.context) { - cx.marked = "def"; - if (inList(state.localVars)) return; - state.localVars = {name: varname, next: state.localVars}; - } else { - if (inList(state.globalVars)) return; - if (parserConfig.globalVars) - state.globalVars = {name: varname, next: state.globalVars}; - } - } - - // Combinators - - var defaultVars = {name: "this", next: {name: "arguments"}}; - function pushcontext() { - cx.state.context = {prev: cx.state.context, vars: cx.state.localVars}; - cx.state.localVars = defaultVars; - } - function popcontext() { - cx.state.localVars = cx.state.context.vars; - cx.state.context = cx.state.context.prev; - } - function pushlex(type, info) { - var result = function() { - var state = cx.state, indent = state.indented; - if (state.lexical.type == "stat") indent = state.lexical.indented; - else for (var outer = state.lexical; outer && outer.type == ")" && outer.align; outer = outer.prev) - indent = outer.indented; - state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info); - }; - result.lex = true; - return result; - } - function poplex() { - var state = cx.state; - if (state.lexical.prev) { - if (state.lexical.type == ")") - state.indented = state.lexical.indented; - state.lexical = state.lexical.prev; - } - } - poplex.lex = true; - - function expect(wanted) { - function exp(type) { - if (type == wanted) return cont(); - else if (wanted == ";") return pass(); - else return cont(exp); - }; - return exp; - } - - function statement(type, value) { - if (type == "var") return cont(pushlex("vardef", value.length), vardef, expect(";"), poplex); - if (type == "keyword a") return cont(pushlex("form"), expression, statement, poplex); - if (type == "keyword b") return cont(pushlex("form"), statement, poplex); - if (type == "{") return cont(pushlex("}"), block, poplex); - if (type == ";") return cont(); - if (type == "if") { - if (cx.state.lexical.info == "else" && cx.state.cc[cx.state.cc.length - 1] == poplex) - cx.state.cc.pop()(); - return cont(pushlex("form"), expression, statement, poplex, maybeelse); - } - if (type == "function") return cont(functiondef); - if (type == "for") return cont(pushlex("form"), forspec, statement, poplex); - if (type == "variable") return cont(pushlex("stat"), maybelabel); - if (type == "switch") return cont(pushlex("form"), expression, pushlex("}", "switch"), expect("{"), - block, poplex, poplex); - if (type == "case") return cont(expression, expect(":")); - if (type == "default") return cont(expect(":")); - if (type == "catch") return cont(pushlex("form"), pushcontext, expect("("), funarg, expect(")"), - statement, poplex, popcontext); - if (type == "module") return cont(pushlex("form"), pushcontext, afterModule, popcontext, poplex); - if (type == "class") return cont(pushlex("form"), className, poplex); - if (type == "export") return cont(pushlex("form"), afterExport, poplex); - if (type == "import") return cont(pushlex("form"), afterImport, poplex); - return pass(pushlex("stat"), expression, expect(";"), poplex); - } - function expression(type) { - return expressionInner(type, false); - } - function expressionNoComma(type) { - return expressionInner(type, true); - } - function expressionInner(type, noComma) { - if (cx.state.fatArrowAt == cx.stream.start) { - var body = noComma ? arrowBodyNoComma : arrowBody; - if (type == "(") return cont(pushcontext, pushlex(")"), commasep(pattern, ")"), poplex, expect("=>"), body, popcontext); - else if (type == "variable") return pass(pushcontext, pattern, expect("=>"), body, popcontext); - } - - var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma; - if (atomicTypes.hasOwnProperty(type)) return cont(maybeop); - if (type == "function") return cont(functiondef, maybeop); - if (type == "keyword c") return cont(noComma ? maybeexpressionNoComma : maybeexpression); - if (type == "(") return cont(pushlex(")"), maybeexpression, comprehension, expect(")"), poplex, maybeop); - if (type == "operator" || type == "spread") return cont(noComma ? expressionNoComma : expression); - if (type == "[") return cont(pushlex("]"), arrayLiteral, poplex, maybeop); - if (type == "{") return contCommasep(objprop, "}", null, maybeop); - if (type == "quasi") { return pass(quasi, maybeop); } - return cont(); - } - function maybeexpression(type) { - if (type.match(/[;\}\)\],]/)) return pass(); - return pass(expression); - } - function maybeexpressionNoComma(type) { - if (type.match(/[;\}\)\],]/)) return pass(); - return pass(expressionNoComma); - } - - function maybeoperatorComma(type, value) { - if (type == ",") return cont(expression); - return maybeoperatorNoComma(type, value, false); - } - function maybeoperatorNoComma(type, value, noComma) { - var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma; - var expr = noComma == false ? expression : expressionNoComma; - if (type == "=>") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext); - if (type == "operator") { - if (/\+\+|--/.test(value)) return cont(me); - if (value == "?") return cont(expression, expect(":"), expr); - return cont(expr); - } - if (type == "quasi") { return pass(quasi, me); } - if (type == ";") return; - if (type == "(") return contCommasep(expressionNoComma, ")", "call", me); - if (type == ".") return cont(property, me); - if (type == "[") return cont(pushlex("]"), maybeexpression, expect("]"), poplex, me); - } - function quasi(type, value) { - if (type != "quasi") return pass(); - if (value.slice(value.length - 2) != "${") return cont(quasi); - return cont(expression, continueQuasi); - } - function continueQuasi(type) { - if (type == "}") { - cx.marked = "string-2"; - cx.state.tokenize = tokenQuasi; - return cont(quasi); - } - } - function arrowBody(type) { - findFatArrow(cx.stream, cx.state); - return pass(type == "{" ? statement : expression); - } - function arrowBodyNoComma(type) { - findFatArrow(cx.stream, cx.state); - return pass(type == "{" ? statement : expressionNoComma); - } - function maybelabel(type) { - if (type == ":") return cont(poplex, statement); - return pass(maybeoperatorComma, expect(";"), poplex); - } - function property(type) { - if (type == "variable") {cx.marked = "property"; return cont();} - } - function objprop(type, value) { - if (type == "variable" || cx.style == "keyword") { - cx.marked = "property"; - if (value == "get" || value == "set") return cont(getterSetter); - return cont(afterprop); - } else if (type == "number" || type == "string") { - cx.marked = jsonldMode ? "property" : (cx.style + " property"); - return cont(afterprop); - } else if (type == "jsonld-keyword") { - return cont(afterprop); - } else if (type == "[") { - return cont(expression, expect("]"), afterprop); - } - } - function getterSetter(type) { - if (type != "variable") return pass(afterprop); - cx.marked = "property"; - return cont(functiondef); - } - function afterprop(type) { - if (type == ":") return cont(expressionNoComma); - if (type == "(") return pass(functiondef); - } - function commasep(what, end) { - function proceed(type) { - if (type == ",") { - var lex = cx.state.lexical; - if (lex.info == "call") lex.pos = (lex.pos || 0) + 1; - return cont(what, proceed); - } - if (type == end) return cont(); - return cont(expect(end)); - } - return function(type) { - if (type == end) return cont(); - return pass(what, proceed); - }; - } - function contCommasep(what, end, info) { - for (var i = 3; i < arguments.length; i++) - cx.cc.push(arguments[i]); - return cont(pushlex(end, info), commasep(what, end), poplex); - } - function block(type) { - if (type == "}") return cont(); - return pass(statement, block); - } - function maybetype(type) { - if (isTS && type == ":") return cont(typedef); - } - function typedef(type) { - if (type == "variable"){cx.marked = "variable-3"; return cont();} - } - function vardef() { - return pass(pattern, maybetype, maybeAssign, vardefCont); - } - function pattern(type, value) { - if (type == "variable") { register(value); return cont(); } - if (type == "[") return contCommasep(pattern, "]"); - if (type == "{") return contCommasep(proppattern, "}"); - } - function proppattern(type, value) { - if (type == "variable" && !cx.stream.match(/^\s*:/, false)) { - register(value); - return cont(maybeAssign); - } - if (type == "variable") cx.marked = "property"; - return cont(expect(":"), pattern, maybeAssign); - } - function maybeAssign(_type, value) { - if (value == "=") return cont(expressionNoComma); - } - function vardefCont(type) { - if (type == ",") return cont(vardef); - } - function maybeelse(type, value) { - if (type == "keyword b" && value == "else") return cont(pushlex("form", "else"), statement, poplex); - } - function forspec(type) { - if (type == "(") return cont(pushlex(")"), forspec1, expect(")"), poplex); - } - function forspec1(type) { - if (type == "var") return cont(vardef, expect(";"), forspec2); - if (type == ";") return cont(forspec2); - if (type == "variable") return cont(formaybeinof); - return pass(expression, expect(";"), forspec2); - } - function formaybeinof(_type, value) { - if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(expression); } - return cont(maybeoperatorComma, forspec2); - } - function forspec2(type, value) { - if (type == ";") return cont(forspec3); - if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(expression); } - return pass(expression, expect(";"), forspec3); - } - function forspec3(type) { - if (type != ")") cont(expression); - } - function functiondef(type, value) { - if (value == "*") {cx.marked = "keyword"; return cont(functiondef);} - if (type == "variable") {register(value); return cont(functiondef);} - if (type == "(") return cont(pushcontext, pushlex(")"), commasep(funarg, ")"), poplex, statement, popcontext); - } - function funarg(type) { - if (type == "spread") return cont(funarg); - return pass(pattern, maybetype); - } - function className(type, value) { - if (type == "variable") {register(value); return cont(classNameAfter);} - } - function classNameAfter(type, value) { - if (value == "extends") return cont(expression, classNameAfter); - if (type == "{") return cont(pushlex("}"), classBody, poplex); - } - function classBody(type, value) { - if (type == "variable" || cx.style == "keyword") { - cx.marked = "property"; - if (value == "get" || value == "set") return cont(classGetterSetter, functiondef, classBody); - return cont(functiondef, classBody); - } - if (value == "*") { - cx.marked = "keyword"; - return cont(classBody); - } - if (type == ";") return cont(classBody); - if (type == "}") return cont(); - } - function classGetterSetter(type) { - if (type != "variable") return pass(); - cx.marked = "property"; - return cont(); - } - function afterModule(type, value) { - if (type == "string") return cont(statement); - if (type == "variable") { register(value); return cont(maybeFrom); } - } - function afterExport(_type, value) { - if (value == "*") { cx.marked = "keyword"; return cont(maybeFrom, expect(";")); } - if (value == "default") { cx.marked = "keyword"; return cont(expression, expect(";")); } - return pass(statement); - } - function afterImport(type) { - if (type == "string") return cont(); - return pass(importSpec, maybeFrom); - } - function importSpec(type, value) { - if (type == "{") return contCommasep(importSpec, "}"); - if (type == "variable") register(value); - return cont(); - } - function maybeFrom(_type, value) { - if (value == "from") { cx.marked = "keyword"; return cont(expression); } - } - function arrayLiteral(type) { - if (type == "]") return cont(); - return pass(expressionNoComma, maybeArrayComprehension); - } - function maybeArrayComprehension(type) { - if (type == "for") return pass(comprehension, expect("]")); - if (type == ",") return cont(commasep(maybeexpressionNoComma, "]")); - return pass(commasep(expressionNoComma, "]")); - } - function comprehension(type) { - if (type == "for") return cont(forspec, comprehension); - if (type == "if") return cont(expression, comprehension); - } - - // Interface - - return { - startState: function(basecolumn) { - var state = { - tokenize: tokenBase, - lastType: "sof", - cc: [], - lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, "block", false), - localVars: parserConfig.localVars, - context: parserConfig.localVars && {vars: parserConfig.localVars}, - indented: 0 - }; - if (parserConfig.globalVars && typeof parserConfig.globalVars == "object") - state.globalVars = parserConfig.globalVars; - return state; - }, - - token: function(stream, state) { - if (stream.sol()) { - if (!state.lexical.hasOwnProperty("align")) - state.lexical.align = false; - state.indented = stream.indentation(); - findFatArrow(stream, state); - } - if (state.tokenize != tokenComment && stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - if (type == "comment") return style; - state.lastType = type == "operator" && (content == "++" || content == "--") ? "incdec" : type; - return parseJS(state, style, type, content, stream); - }, - - indent: function(state, textAfter) { - if (state.tokenize == tokenComment) return CodeMirror.Pass; - if (state.tokenize != tokenBase) return 0; - var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical; - // Kludge to prevent 'maybelse' from blocking lexical scope pops - if (!/^\s*else\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) { - var c = state.cc[i]; - if (c == poplex) lexical = lexical.prev; - else if (c != maybeelse) break; - } - if (lexical.type == "stat" && firstChar == "}") lexical = lexical.prev; - if (statementIndent && lexical.type == ")" && lexical.prev.type == "stat") - lexical = lexical.prev; - var type = lexical.type, closing = firstChar == type; - - if (type == "vardef") return lexical.indented + (state.lastType == "operator" || state.lastType == "," ? lexical.info + 1 : 0); - else if (type == "form" && firstChar == "{") return lexical.indented; - else if (type == "form") return lexical.indented + indentUnit; - else if (type == "stat") - return lexical.indented + (state.lastType == "operator" || state.lastType == "," ? statementIndent || indentUnit : 0); - else if (lexical.info == "switch" && !closing && parserConfig.doubleIndentSwitch != false) - return lexical.indented + (/^(?:case|default)\b/.test(textAfter) ? indentUnit : 2 * indentUnit); - else if (lexical.align) return lexical.column + (closing ? 0 : 1); - else return lexical.indented + (closing ? 0 : indentUnit); - }, - - electricInput: /^\s*(?:case .*?:|default:|\{|\})$/, - blockCommentStart: jsonMode ? null : "/*", - blockCommentEnd: jsonMode ? null : "*/", - lineComment: jsonMode ? null : "//", - fold: "brace", - - helperType: jsonMode ? "json" : "javascript", - jsonldMode: jsonldMode, - jsonMode: jsonMode - }; -}); - -CodeMirror.registerHelper("wordChars", "javascript", /[\w$]/); - -CodeMirror.defineMIME("text/javascript", "javascript"); -CodeMirror.defineMIME("text/ecmascript", "javascript"); -CodeMirror.defineMIME("application/javascript", "javascript"); -CodeMirror.defineMIME("application/x-javascript", "javascript"); -CodeMirror.defineMIME("application/ecmascript", "javascript"); -CodeMirror.defineMIME("application/json", {name: "javascript", json: true}); -CodeMirror.defineMIME("application/x-json", {name: "javascript", json: true}); -CodeMirror.defineMIME("application/ld+json", {name: "javascript", jsonld: true}); -CodeMirror.defineMIME("text/typescript", { name: "javascript", typescript: true }); -CodeMirror.defineMIME("application/typescript", { name: "javascript", typescript: true }); - -}); diff --git a/assets/js/plugins/codemirror/mode/javascript/json-ld.html b/assets/js/plugins/codemirror/mode/javascript/json-ld.html deleted file mode 100644 index 3a37f0bc..00000000 --- a/assets/js/plugins/codemirror/mode/javascript/json-ld.html +++ /dev/null @@ -1,72 +0,0 @@ -<!doctype html> - -<title>CodeMirror: JSON-LD mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="../../addon/edit/matchbrackets.js"></script> -<script src="../../addon/comment/continuecomment.js"></script> -<script src="../../addon/comment/comment.js"></script> -<script src="javascript.js"></script> -<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id="nav"> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"/></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">JSON-LD</a> - </ul> -</div> - -<article> -<h2>JSON-LD mode</h2> - - -<div><textarea id="code" name="code"> -{ - "@context": { - "name": "http://schema.org/name", - "description": "http://schema.org/description", - "image": { - "@id": "http://schema.org/image", - "@type": "@id" - }, - "geo": "http://schema.org/geo", - "latitude": { - "@id": "http://schema.org/latitude", - "@type": "xsd:float" - }, - "longitude": { - "@id": "http://schema.org/longitude", - "@type": "xsd:float" - }, - "xsd": "http://www.w3.org/2001/XMLSchema#" - }, - "name": "The Empire State Building", - "description": "The Empire State Building is a 102-story landmark in New York City.", - "image": "http://www.civil.usherbrooke.ca/cours/gci215a/empire-state-building.jpg", - "geo": { - "latitude": "40.75", - "longitude": "73.98" - } -} -</textarea></div> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - matchBrackets: true, - autoCloseBrackets: true, - mode: "application/ld+json", - lineWrapping: true - }); - </script> - - <p>This is a specialization of the <a href="index.html">JavaScript mode</a>.</p> - </article> diff --git a/assets/js/plugins/codemirror/mode/javascript/test.js b/assets/js/plugins/codemirror/mode/javascript/test.js deleted file mode 100644 index aaeb8e0c..00000000 --- a/assets/js/plugins/codemirror/mode/javascript/test.js +++ /dev/null @@ -1,194 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - var mode = CodeMirror.getMode({indentUnit: 2}, "javascript"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - - MT("locals", - "[keyword function] [variable foo]([def a], [def b]) { [keyword var] [def c] [operator =] [number 10]; [keyword return] [variable-2 a] [operator +] [variable-2 c] [operator +] [variable d]; }"); - - MT("comma-and-binop", - "[keyword function](){ [keyword var] [def x] [operator =] [number 1] [operator +] [number 2], [def y]; }"); - - MT("destructuring", - "([keyword function]([def a], [[[def b], [def c] ]]) {", - " [keyword let] {[def d], [property foo]: [def c][operator =][number 10], [def x]} [operator =] [variable foo]([variable-2 a]);", - " [[[variable-2 c], [variable y] ]] [operator =] [variable-2 c];", - "})();"); - - MT("class_body", - "[keyword class] [variable Foo] {", - " [property constructor]() {}", - " [property sayName]() {", - " [keyword return] [string-2 `foo${][variable foo][string-2 }oo`];", - " }", - "}"); - - MT("class", - "[keyword class] [variable Point] [keyword extends] [variable SuperThing] {", - " [property get] [property prop]() { [keyword return] [number 24]; }", - " [property constructor]([def x], [def y]) {", - " [keyword super]([string 'something']);", - " [keyword this].[property x] [operator =] [variable-2 x];", - " }", - "}"); - - MT("module", - "[keyword module] [string 'foo'] {", - " [keyword export] [keyword let] [def x] [operator =] [number 42];", - " [keyword export] [keyword *] [keyword from] [string 'somewhere'];", - "}"); - - MT("import", - "[keyword function] [variable foo]() {", - " [keyword import] [def $] [keyword from] [string 'jquery'];", - " [keyword module] [def crypto] [keyword from] [string 'crypto'];", - " [keyword import] { [def encrypt], [def decrypt] } [keyword from] [string 'crypto'];", - "}"); - - MT("const", - "[keyword function] [variable f]() {", - " [keyword const] [[ [def a], [def b] ]] [operator =] [[ [number 1], [number 2] ]];", - "}"); - - MT("for/of", - "[keyword for]([keyword let] [variable of] [keyword of] [variable something]) {}"); - - MT("generator", - "[keyword function*] [variable repeat]([def n]) {", - " [keyword for]([keyword var] [def i] [operator =] [number 0]; [variable-2 i] [operator <] [variable-2 n]; [operator ++][variable-2 i])", - " [keyword yield] [variable-2 i];", - "}"); - - MT("fatArrow", - "[variable array].[property filter]([def a] [operator =>] [variable-2 a] [operator +] [number 1]);", - "[variable a];", // No longer in scope - "[keyword let] [variable f] [operator =] ([[ [def a], [def b] ]], [def c]) [operator =>] [variable-2 a] [operator +] [variable-2 c];", - "[variable c];"); - - MT("spread", - "[keyword function] [variable f]([def a], [meta ...][def b]) {", - " [variable something]([variable-2 a], [meta ...][variable-2 b]);", - "}"); - - MT("comprehension", - "[keyword function] [variable f]() {", - " [[([variable x] [operator +] [number 1]) [keyword for] ([keyword var] [def x] [keyword in] [variable y]) [keyword if] [variable pred]([variable-2 x]) ]];", - " ([variable u] [keyword for] ([keyword var] [def u] [keyword of] [variable generateValues]()) [keyword if] ([variable-2 u].[property color] [operator ===] [string 'blue']));", - "}"); - - MT("quasi", - "[variable re][string-2 `fofdlakj${][variable x] [operator +] ([variable re][string-2 `foo`]) [operator +] [number 1][string-2 }fdsa`] [operator +] [number 2]"); - - MT("quasi_no_function", - "[variable x] [operator =] [string-2 `fofdlakj${][variable x] [operator +] [string-2 `foo`] [operator +] [number 1][string-2 }fdsa`] [operator +] [number 2]"); - - MT("indent_statement", - "[keyword var] [variable x] [operator =] [number 10]", - "[variable x] [operator +=] [variable y] [operator +]", - " [atom Infinity]", - "[keyword debugger];"); - - MT("indent_if", - "[keyword if] ([number 1])", - " [keyword break];", - "[keyword else] [keyword if] ([number 2])", - " [keyword continue];", - "[keyword else]", - " [number 10];", - "[keyword if] ([number 1]) {", - " [keyword break];", - "} [keyword else] [keyword if] ([number 2]) {", - " [keyword continue];", - "} [keyword else] {", - " [number 10];", - "}"); - - MT("indent_for", - "[keyword for] ([keyword var] [variable i] [operator =] [number 0];", - " [variable i] [operator <] [number 100];", - " [variable i][operator ++])", - " [variable doSomething]([variable i]);", - "[keyword debugger];"); - - MT("indent_c_style", - "[keyword function] [variable foo]()", - "{", - " [keyword debugger];", - "}"); - - MT("indent_else", - "[keyword for] (;;)", - " [keyword if] ([variable foo])", - " [keyword if] ([variable bar])", - " [number 1];", - " [keyword else]", - " [number 2];", - " [keyword else]", - " [number 3];"); - - MT("indent_funarg", - "[variable foo]([number 10000],", - " [keyword function]([def a]) {", - " [keyword debugger];", - "};"); - - MT("indent_below_if", - "[keyword for] (;;)", - " [keyword if] ([variable foo])", - " [number 1];", - "[number 2];"); - - MT("multilinestring", - "[keyword var] [variable x] [operator =] [string 'foo\\]", - "[string bar'];"); - - MT("scary_regexp", - "[string-2 /foo[[/]]bar/];"); - - MT("indent_strange_array", - "[keyword var] [variable x] [operator =] [[", - " [number 1],,", - " [number 2],", - "]];", - "[number 10];"); - - var jsonld_mode = CodeMirror.getMode( - {indentUnit: 2}, - {name: "javascript", jsonld: true} - ); - function LD(name) { - test.mode(name, jsonld_mode, Array.prototype.slice.call(arguments, 1)); - } - - LD("json_ld_keywords", - '{', - ' [meta "@context"]: {', - ' [meta "@base"]: [string "http://example.com"],', - ' [meta "@vocab"]: [string "http://xmlns.com/foaf/0.1/"],', - ' [property "likesFlavor"]: {', - ' [meta "@container"]: [meta "@list"]', - ' [meta "@reverse"]: [string "@beFavoriteOf"]', - ' },', - ' [property "nick"]: { [meta "@container"]: [meta "@set"] },', - ' [property "nick"]: { [meta "@container"]: [meta "@index"] }', - ' },', - ' [meta "@graph"]: [[ {', - ' [meta "@id"]: [string "http://dbpedia.org/resource/John_Lennon"],', - ' [property "name"]: [string "John Lennon"],', - ' [property "modified"]: {', - ' [meta "@value"]: [string "2010-05-29T14:17:39+02:00"],', - ' [meta "@type"]: [string "http://www.w3.org/2001/XMLSchema#dateTime"]', - ' }', - ' } ]]', - '}'); - - LD("json_ld_fake", - '{', - ' [property "@fake"]: [string "@fake"],', - ' [property "@contextual"]: [string "@identifier"],', - ' [property "user@domain.com"]: [string "@graphical"],', - ' [property "@ID"]: [string "@@ID"]', - '}'); -})(); diff --git a/assets/js/plugins/codemirror/mode/javascript/typescript.html b/assets/js/plugins/codemirror/mode/javascript/typescript.html deleted file mode 100644 index 2cfc5381..00000000 --- a/assets/js/plugins/codemirror/mode/javascript/typescript.html +++ /dev/null @@ -1,61 +0,0 @@ -<!doctype html> - -<title>CodeMirror: TypeScript mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="javascript.js"></script> -<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">TypeScript</a> - </ul> -</div> - -<article> -<h2>TypeScript mode</h2> - - -<div><textarea id="code" name="code"> -class Greeter { - greeting: string; - constructor (message: string) { - this.greeting = message; - } - greet() { - return "Hello, " + this.greeting; - } -} - -var greeter = new Greeter("world"); - -var button = document.createElement('button') -button.innerText = "Say Hello" -button.onclick = function() { - alert(greeter.greet()) -} - -document.body.appendChild(button) - -</textarea></div> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers: true, - matchBrackets: true, - mode: "text/typescript" - }); - </script> - - <p>This is a specialization of the <a href="index.html">JavaScript mode</a>.</p> - </article> diff --git a/assets/js/plugins/codemirror/mode/jinja2/index.html b/assets/js/plugins/codemirror/mode/jinja2/index.html deleted file mode 100644 index 5a70e915..00000000 --- a/assets/js/plugins/codemirror/mode/jinja2/index.html +++ /dev/null @@ -1,54 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Jinja2 mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="jinja2.js"></script> -<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Jinja2</a> - </ul> -</div> - -<article> -<h2>Jinja2 mode</h2> -<form><textarea id="code" name="code"> -{# this is a comment #} -{%- for item in li -%} - &lt;li&gt;{{ item.label }}&lt;/li&gt; -{% endfor -%} -{{ item.sand == true and item.keyword == false ? 1 : 0 }} -{{ app.get(55, 1.2, true) }} -{% if app.get(&#39;_route&#39;) == (&#39;_home&#39;) %}home{% endif %} -{% if app.session.flashbag.has(&#39;message&#39;) %} - {% for message in app.session.flashbag.get(&#39;message&#39;) %} - {{ message.content }} - {% endfor %} -{% endif %} -{{ path(&#39;_home&#39;, {&#39;section&#39;: app.request.get(&#39;section&#39;)}) }} -{{ path(&#39;_home&#39;, { - &#39;section&#39;: app.request.get(&#39;section&#39;), - &#39;boolean&#39;: true, - &#39;number&#39;: 55.33 - }) -}} -{% include (&#39;test.incl.html.twig&#39;) %} -</textarea></form> - <script> - var editor = - CodeMirror.fromTextArea(document.getElementById("code"), {mode: - {name: "jinja2", htmlMode: true}}); - </script> - </article> diff --git a/assets/js/plugins/codemirror/mode/jinja2/jinja2.js b/assets/js/plugins/codemirror/mode/jinja2/jinja2.js deleted file mode 100644 index ed195581..00000000 --- a/assets/js/plugins/codemirror/mode/jinja2/jinja2.js +++ /dev/null @@ -1,142 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.defineMode("jinja2", function() { - var keywords = ["and", "as", "block", "endblock", "by", "cycle", "debug", "else", "elif", - "extends", "filter", "endfilter", "firstof", "for", - "endfor", "if", "endif", "ifchanged", "endifchanged", - "ifequal", "endifequal", "ifnotequal", - "endifnotequal", "in", "include", "load", "not", "now", "or", - "parsed", "regroup", "reversed", "spaceless", - "endspaceless", "ssi", "templatetag", "openblock", - "closeblock", "openvariable", "closevariable", - "openbrace", "closebrace", "opencomment", - "closecomment", "widthratio", "url", "with", "endwith", - "get_current_language", "trans", "endtrans", "noop", "blocktrans", - "endblocktrans", "get_available_languages", - "get_current_language_bidi", "plural"], - operator = /^[+\-*&%=<>!?|~^]/, - sign = /^[:\[\(\{]/, - atom = ["true", "false"], - number = /^(\d[+\-\*\/])?\d+(\.\d+)?/; - - keywords = new RegExp("((" + keywords.join(")|(") + "))\\b"); - atom = new RegExp("((" + atom.join(")|(") + "))\\b"); - - function tokenBase (stream, state) { - var ch = stream.peek(); - - //Comment - if (state.incomment) { - if(!stream.skipTo("#}")) { - stream.skipToEnd(); - } else { - stream.eatWhile(/\#|}/); - state.incomment = false; - } - return "comment"; - //Tag - } else if (state.intag) { - //After operator - if(state.operator) { - state.operator = false; - if(stream.match(atom)) { - return "atom"; - } - if(stream.match(number)) { - return "number"; - } - } - //After sign - if(state.sign) { - state.sign = false; - if(stream.match(atom)) { - return "atom"; - } - if(stream.match(number)) { - return "number"; - } - } - - if(state.instring) { - if(ch == state.instring) { - state.instring = false; - } - stream.next(); - return "string"; - } else if(ch == "'" || ch == '"') { - state.instring = ch; - stream.next(); - return "string"; - } else if(stream.match(state.intag + "}") || stream.eat("-") && stream.match(state.intag + "}")) { - state.intag = false; - return "tag"; - } else if(stream.match(operator)) { - state.operator = true; - return "operator"; - } else if(stream.match(sign)) { - state.sign = true; - } else { - if(stream.eat(" ") || stream.sol()) { - if(stream.match(keywords)) { - return "keyword"; - } - if(stream.match(atom)) { - return "atom"; - } - if(stream.match(number)) { - return "number"; - } - if(stream.sol()) { - stream.next(); - } - } else { - stream.next(); - } - - } - return "variable"; - } else if (stream.eat("{")) { - if (ch = stream.eat("#")) { - state.incomment = true; - if(!stream.skipTo("#}")) { - stream.skipToEnd(); - } else { - stream.eatWhile(/\#|}/); - state.incomment = false; - } - return "comment"; - //Open tag - } else if (ch = stream.eat(/\{|%/)) { - //Cache close tag - state.intag = ch; - if(ch == "{") { - state.intag = "}"; - } - stream.eat("-"); - return "tag"; - } - } - stream.next(); - }; - - return { - startState: function () { - return {tokenize: tokenBase}; - }, - token: function (stream, state) { - return state.tokenize(stream, state); - } - }; - }); -}); diff --git a/assets/js/plugins/codemirror/mode/julia/index.html b/assets/js/plugins/codemirror/mode/julia/index.html deleted file mode 100644 index e1492c21..00000000 --- a/assets/js/plugins/codemirror/mode/julia/index.html +++ /dev/null @@ -1,195 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Julia mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="julia.js"></script> -<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Julia</a> - </ul> -</div> - -<article> -<h2>Julia mode</h2> - - <div><textarea id="code" name="code"> -#numbers -1234 -1234im -.234 -.234im -2.23im -2.3f3 -23e2 -0x234 - -#strings -'a' -"asdf" -r"regex" -b"bytestring" - -""" -multiline string -""" - -#identifiers -a -as123 -function_name! - -#unicode identifiers -# a = x\ddot -a⃗ = ẍ -# a = v\dot -a⃗ = v̇ -#F\vec = m \cdotp a\vec -F⃗ = m·a⃗ - -#literal identifier multiples -3x -4[1, 2, 3] - -#dicts and indexing -x=[1, 2, 3] -x[end-1] -x={"julia"=>"language of technical computing"} - - -#exception handling -try - f() -catch - @printf "Error" -finally - g() -end - -#types -immutable Color{T<:Number} - r::T - g::T - b::T -end - -#functions -function change!(x::Vector{Float64}) - for i = 1:length(x) - x[i] *= 2 - end -end - -#function invocation -f('b', (2, 3)...) - -#operators -|= -&= -^= -\- -%= -*= -+= --= -<= ->= -!= -== -% -* -+ -- -< -> -! -= -| -& -^ -\ -? -~ -: -$ -<: -.< -.> -<< -<<= ->> ->>>> ->>= ->>>= -<<= -<<<= -.<= -.>= -.== --> -// -in -... -// -:= -.//= -.*= -./= -.^= -.%= -.+= -.-= -\= -\\= -|| -=== -&& -|= -.|= -<: ->: -|> -<| -:: -x ? y : z - -#macros -@spawnat 2 1+1 -@eval(:x) - -#keywords and operators -if else elseif while for - begin let end do -try catch finally return break continue -global local const -export import importall using -function macro module baremodule -type immutable quote -true false enumerate - - - </textarea></div> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - mode: {name: "julia", - }, - lineNumbers: true, - indentUnit: 4, - matchBrackets: true - }); - </script> - - <p><strong>MIME types defined:</strong> <code>text/x-julia</code>.</p> -</article> diff --git a/assets/js/plugins/codemirror/mode/julia/julia.js b/assets/js/plugins/codemirror/mode/julia/julia.js deleted file mode 100644 index e854988a..00000000 --- a/assets/js/plugins/codemirror/mode/julia/julia.js +++ /dev/null @@ -1,301 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("julia", function(_conf, parserConf) { - var ERRORCLASS = 'error'; - - function wordRegexp(words) { - return new RegExp("^((" + words.join(")|(") + "))\\b"); - } - - var operators = parserConf.operators || /^\.?[|&^\\%*+\-<>!=\/]=?|\?|~|:|\$|\.[<>]|<<=?|>>>?=?|\.[<>=]=|->?|\/\/|\bin\b/; - var delimiters = parserConf.delimiters || /^[;,()[\]{}]/; - var identifiers = parserConf.identifiers|| /^[_A-Za-z\u00A1-\uFFFF][_A-Za-z0-9\u00A1-\uFFFF]*!*/; - var blockOpeners = ["begin", "function", "type", "immutable", "let", "macro", "for", "while", "quote", "if", "else", "elseif", "try", "finally", "catch", "do"]; - var blockClosers = ["end", "else", "elseif", "catch", "finally"]; - var keywordList = ['if', 'else', 'elseif', 'while', 'for', 'begin', 'let', 'end', 'do', 'try', 'catch', 'finally', 'return', 'break', 'continue', 'global', 'local', 'const', 'export', 'import', 'importall', 'using', 'function', 'macro', 'module', 'baremodule', 'type', 'immutable', 'quote', 'typealias', 'abstract', 'bitstype', 'ccall']; - var builtinList = ['true', 'false', 'enumerate', 'open', 'close', 'nothing', 'NaN', 'Inf', 'print', 'println', 'Int', 'Int8', 'Uint8', 'Int16', 'Uint16', 'Int32', 'Uint32', 'Int64', 'Uint64', 'Int128', 'Uint128', 'Bool', 'Char', 'Float16', 'Float32', 'Float64', 'Array', 'Vector', 'Matrix', 'String', 'UTF8String', 'ASCIIString', 'error', 'warn', 'info', '@printf']; - - //var stringPrefixes = new RegExp("^[br]?('|\")") - var stringPrefixes = /^(`|'|"{3}|([br]?"))/; - var keywords = wordRegexp(keywordList); - var builtins = wordRegexp(builtinList); - var openers = wordRegexp(blockOpeners); - var closers = wordRegexp(blockClosers); - var macro = /^@[_A-Za-z][_A-Za-z0-9]*/; - var symbol = /^:[_A-Za-z][_A-Za-z0-9]*/; - var indentInfo = null; - - function in_array(state) { - var ch = cur_scope(state); - if(ch=="[" || ch=="{") { - return true; - } - else { - return false; - } - } - - function cur_scope(state) { - if(state.scopes.length==0) { - return null; - } - return state.scopes[state.scopes.length - 1]; - } - - // tokenizers - function tokenBase(stream, state) { - // Handle scope changes - var leaving_expr = state.leaving_expr; - if(stream.sol()) { - leaving_expr = false; - } - state.leaving_expr = false; - if(leaving_expr) { - if(stream.match(/^'+/)) { - return 'operator'; - } - - } - - if(stream.match(/^\.{2,3}/)) { - return 'operator'; - } - - if (stream.eatSpace()) { - return null; - } - - var ch = stream.peek(); - // Handle Comments - if (ch === '#') { - stream.skipToEnd(); - return 'comment'; - } - if(ch==='[') { - state.scopes.push("["); - } - - if(ch==='{') { - state.scopes.push("{"); - } - - var scope=cur_scope(state); - - if(scope==='[' && ch===']') { - state.scopes.pop(); - state.leaving_expr=true; - } - - if(scope==='{' && ch==='}') { - state.scopes.pop(); - state.leaving_expr=true; - } - - if(ch===')') { - state.leaving_expr = true; - } - - var match; - if(!in_array(state) && (match=stream.match(openers, false))) { - state.scopes.push(match); - } - - if(!in_array(state) && stream.match(closers, false)) { - state.scopes.pop(); - } - - if(in_array(state)) { - if(stream.match(/^end/)) { - return 'number'; - } - - } - - if(stream.match(/^=>/)) { - return 'operator'; - } - - - // Handle Number Literals - if (stream.match(/^[0-9\.]/, false)) { - var imMatcher = RegExp(/^im\b/); - var floatLiteral = false; - // Floats - if (stream.match(/^\d*\.(?!\.)\d+([ef][\+\-]?\d+)?/i)) { floatLiteral = true; } - if (stream.match(/^\d+\.(?!\.)\d*/)) { floatLiteral = true; } - if (stream.match(/^\.\d+/)) { floatLiteral = true; } - if (floatLiteral) { - // Float literals may be "imaginary" - stream.match(imMatcher); - state.leaving_expr = true; - return 'number'; - } - // Integers - var intLiteral = false; - // Hex - if (stream.match(/^0x[0-9a-f]+/i)) { intLiteral = true; } - // Binary - if (stream.match(/^0b[01]+/i)) { intLiteral = true; } - // Octal - if (stream.match(/^0o[0-7]+/i)) { intLiteral = true; } - // Decimal - if (stream.match(/^[1-9]\d*(e[\+\-]?\d+)?/)) { - intLiteral = true; - } - // Zero by itself with no other piece of number. - if (stream.match(/^0(?![\dx])/i)) { intLiteral = true; } - if (intLiteral) { - // Integer literals may be "long" - stream.match(imMatcher); - state.leaving_expr = true; - return 'number'; - } - } - - if(stream.match(/^(::)|(<:)/)) { - return 'operator'; - } - - // Handle symbols - if(!leaving_expr && stream.match(symbol)) { - return 'string'; - } - - // Handle operators and Delimiters - if (stream.match(operators)) { - return 'operator'; - } - - - // Handle Strings - if (stream.match(stringPrefixes)) { - state.tokenize = tokenStringFactory(stream.current()); - return state.tokenize(stream, state); - } - - if (stream.match(macro)) { - return 'meta'; - } - - - if (stream.match(delimiters)) { - return null; - } - - if (stream.match(keywords)) { - return 'keyword'; - } - - if (stream.match(builtins)) { - return 'builtin'; - } - - - if (stream.match(identifiers)) { - state.leaving_expr=true; - return 'variable'; - } - // Handle non-detected items - stream.next(); - return ERRORCLASS; - } - - function tokenStringFactory(delimiter) { - while ('rub'.indexOf(delimiter.charAt(0).toLowerCase()) >= 0) { - delimiter = delimiter.substr(1); - } - var singleline = delimiter.length == 1; - var OUTCLASS = 'string'; - - function tokenString(stream, state) { - while (!stream.eol()) { - stream.eatWhile(/[^'"\\]/); - if (stream.eat('\\')) { - stream.next(); - if (singleline && stream.eol()) { - return OUTCLASS; - } - } else if (stream.match(delimiter)) { - state.tokenize = tokenBase; - return OUTCLASS; - } else { - stream.eat(/['"]/); - } - } - if (singleline) { - if (parserConf.singleLineStringErrors) { - return ERRORCLASS; - } else { - state.tokenize = tokenBase; - } - } - return OUTCLASS; - } - tokenString.isString = true; - return tokenString; - } - - function tokenLexer(stream, state) { - indentInfo = null; - var style = state.tokenize(stream, state); - var current = stream.current(); - - // Handle '.' connected identifiers - if (current === '.') { - style = stream.match(identifiers, false) ? null : ERRORCLASS; - if (style === null && state.lastStyle === 'meta') { - // Apply 'meta' style to '.' connected identifiers when - // appropriate. - style = 'meta'; - } - return style; - } - - return style; - } - - var external = { - startState: function() { - return { - tokenize: tokenBase, - scopes: [], - leaving_expr: false - }; - }, - - token: function(stream, state) { - var style = tokenLexer(stream, state); - state.lastStyle = style; - return style; - }, - - indent: function(state, textAfter) { - var delta = 0; - if(textAfter=="end" || textAfter=="]" || textAfter=="}" || textAfter=="else" || textAfter=="elseif" || textAfter=="catch" || textAfter=="finally") { - delta = -1; - } - return (state.scopes.length + delta) * 4; - }, - - lineComment: "#", - fold: "indent", - electricChars: "edlsifyh]}" - }; - return external; -}); - - -CodeMirror.defineMIME("text/x-julia", "julia"); - -}); diff --git a/assets/js/plugins/codemirror/mode/kotlin/index.html b/assets/js/plugins/codemirror/mode/kotlin/index.html deleted file mode 100644 index 859e109f..00000000 --- a/assets/js/plugins/codemirror/mode/kotlin/index.html +++ /dev/null @@ -1,89 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Kotlin mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="kotlin.js"></script> -<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Kotlin</a> - </ul> -</div> - -<article> -<h2>Kotlin mode</h2> - - -<div><textarea id="code" name="code"> -package org.wasabi.http - -import java.util.concurrent.Executors -import java.net.InetSocketAddress -import org.wasabi.app.AppConfiguration -import io.netty.bootstrap.ServerBootstrap -import io.netty.channel.nio.NioEventLoopGroup -import io.netty.channel.socket.nio.NioServerSocketChannel -import org.wasabi.app.AppServer - -public class HttpServer(private val appServer: AppServer) { - - val bootstrap: ServerBootstrap - val primaryGroup: NioEventLoopGroup - val workerGroup: NioEventLoopGroup - - { - // Define worker groups - primaryGroup = NioEventLoopGroup() - workerGroup = NioEventLoopGroup() - - // Initialize bootstrap of server - bootstrap = ServerBootstrap() - - bootstrap.group(primaryGroup, workerGroup) - bootstrap.channel(javaClass<NioServerSocketChannel>()) - bootstrap.childHandler(NettyPipelineInitializer(appServer)) - } - - public fun start(wait: Boolean = true) { - val channel = bootstrap.bind(appServer.configuration.port)?.sync()?.channel() - - if (wait) { - channel?.closeFuture()?.sync() - } - } - - public fun stop() { - // Shutdown all event loops - primaryGroup.shutdownGracefully() - workerGroup.shutdownGracefully() - - // Wait till all threads are terminated - primaryGroup.terminationFuture().sync() - workerGroup.terminationFuture().sync() - } -} -</textarea></div> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - mode: {name: "kotlin"}, - lineNumbers: true, - indentUnit: 4 - }); - </script> - <h3>Mode for Kotlin (http://kotlin.jetbrains.org/)</h3> - <p>Developed by Hadi Hariri (https://github.com/hhariri).</p> - <p><strong>MIME type defined:</strong> <code>text/x-kotlin</code>.</p> -</article> diff --git a/assets/js/plugins/codemirror/mode/kotlin/kotlin.js b/assets/js/plugins/codemirror/mode/kotlin/kotlin.js deleted file mode 100644 index 73c84f6c..00000000 --- a/assets/js/plugins/codemirror/mode/kotlin/kotlin.js +++ /dev/null @@ -1,280 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("kotlin", function (config, parserConfig) { - function words(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - var multiLineStrings = parserConfig.multiLineStrings; - - var keywords = words( - "package continue return object while break class data trait throw super" + - " when type this else This try val var fun for is in if do as true false null get set"); - var softKeywords = words("import" + - " where by get set abstract enum open annotation override private public internal" + - " protected catch out vararg inline finally final ref"); - var blockKeywords = words("catch class do else finally for if where try while enum"); - var atoms = words("null true false this"); - - var curPunc; - - function tokenBase(stream, state) { - var ch = stream.next(); - if (ch == '"' || ch == "'") { - return startString(ch, stream, state); - } - // Wildcard import w/o trailing semicolon (import smth.*) - if (ch == "." && stream.eat("*")) { - return "word"; - } - if (/[\[\]{}\(\),;\:\.]/.test(ch)) { - curPunc = ch; - return null; - } - if (/\d/.test(ch)) { - if (stream.eat(/eE/)) { - stream.eat(/\+\-/); - stream.eatWhile(/\d/); - } - return "number"; - } - if (ch == "/") { - if (stream.eat("*")) { - state.tokenize.push(tokenComment); - return tokenComment(stream, state); - } - if (stream.eat("/")) { - stream.skipToEnd(); - return "comment"; - } - if (expectExpression(state.lastToken)) { - return startString(ch, stream, state); - } - } - // Commented - if (ch == "-" && stream.eat(">")) { - curPunc = "->"; - return null; - } - if (/[\-+*&%=<>!?|\/~]/.test(ch)) { - stream.eatWhile(/[\-+*&%=<>|~]/); - return "operator"; - } - stream.eatWhile(/[\w\$_]/); - - var cur = stream.current(); - if (atoms.propertyIsEnumerable(cur)) { - return "atom"; - } - if (softKeywords.propertyIsEnumerable(cur)) { - if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; - return "softKeyword"; - } - - if (keywords.propertyIsEnumerable(cur)) { - if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; - return "keyword"; - } - return "word"; - } - - tokenBase.isBase = true; - - function startString(quote, stream, state) { - var tripleQuoted = false; - if (quote != "/" && stream.eat(quote)) { - if (stream.eat(quote)) tripleQuoted = true; - else return "string"; - } - function t(stream, state) { - var escaped = false, next, end = !tripleQuoted; - - while ((next = stream.next()) != null) { - if (next == quote && !escaped) { - if (!tripleQuoted) { - break; - } - if (stream.match(quote + quote)) { - end = true; - break; - } - } - - if (quote == '"' && next == "$" && !escaped && stream.eat("{")) { - state.tokenize.push(tokenBaseUntilBrace()); - return "string"; - } - - if (next == "$" && !escaped && !stream.eat(" ")) { - state.tokenize.push(tokenBaseUntilSpace()); - return "string"; - } - escaped = !escaped && next == "\\"; - } - if (multiLineStrings) - state.tokenize.push(t); - if (end) state.tokenize.pop(); - return "string"; - } - - state.tokenize.push(t); - return t(stream, state); - } - - function tokenBaseUntilBrace() { - var depth = 1; - - function t(stream, state) { - if (stream.peek() == "}") { - depth--; - if (depth == 0) { - state.tokenize.pop(); - return state.tokenize[state.tokenize.length - 1](stream, state); - } - } else if (stream.peek() == "{") { - depth++; - } - return tokenBase(stream, state); - } - - t.isBase = true; - return t; - } - - function tokenBaseUntilSpace() { - function t(stream, state) { - if (stream.eat(/[\w]/)) { - var isWord = stream.eatWhile(/[\w]/); - if (isWord) { - state.tokenize.pop(); - return "word"; - } - } - state.tokenize.pop(); - return "string"; - } - - t.isBase = true; - return t; - } - - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize.pop(); - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - - function expectExpression(last) { - return !last || last == "operator" || last == "->" || /[\.\[\{\(,;:]/.test(last) || - last == "newstatement" || last == "keyword" || last == "proplabel"; - } - - function Context(indented, column, type, align, prev) { - this.indented = indented; - this.column = column; - this.type = type; - this.align = align; - this.prev = prev; - } - - function pushContext(state, col, type) { - return state.context = new Context(state.indented, col, type, null, state.context); - } - - function popContext(state) { - var t = state.context.type; - if (t == ")" || t == "]" || t == "}") - state.indented = state.context.indented; - return state.context = state.context.prev; - } - - // Interface - - return { - startState: function (basecolumn) { - return { - tokenize: [tokenBase], - context: new Context((basecolumn || 0) - config.indentUnit, 0, "top", false), - indented: 0, - startOfLine: true, - lastToken: null - }; - }, - - token: function (stream, state) { - var ctx = state.context; - if (stream.sol()) { - if (ctx.align == null) ctx.align = false; - state.indented = stream.indentation(); - state.startOfLine = true; - // Automatic semicolon insertion - if (ctx.type == "statement" && !expectExpression(state.lastToken)) { - popContext(state); - ctx = state.context; - } - } - if (stream.eatSpace()) return null; - curPunc = null; - var style = state.tokenize[state.tokenize.length - 1](stream, state); - if (style == "comment") return style; - if (ctx.align == null) ctx.align = true; - if ((curPunc == ";" || curPunc == ":") && ctx.type == "statement") popContext(state); - // Handle indentation for {x -> \n ... } - else if (curPunc == "->" && ctx.type == "statement" && ctx.prev.type == "}") { - popContext(state); - state.context.align = false; - } - else if (curPunc == "{") pushContext(state, stream.column(), "}"); - else if (curPunc == "[") pushContext(state, stream.column(), "]"); - else if (curPunc == "(") pushContext(state, stream.column(), ")"); - else if (curPunc == "}") { - while (ctx.type == "statement") ctx = popContext(state); - if (ctx.type == "}") ctx = popContext(state); - while (ctx.type == "statement") ctx = popContext(state); - } - else if (curPunc == ctx.type) popContext(state); - else if (ctx.type == "}" || ctx.type == "top" || (ctx.type == "statement" && curPunc == "newstatement")) - pushContext(state, stream.column(), "statement"); - state.startOfLine = false; - state.lastToken = curPunc || style; - return style; - }, - - indent: function (state, textAfter) { - if (!state.tokenize[state.tokenize.length - 1].isBase) return 0; - var firstChar = textAfter && textAfter.charAt(0), ctx = state.context; - if (ctx.type == "statement" && !expectExpression(state.lastToken)) ctx = ctx.prev; - var closing = firstChar == ctx.type; - if (ctx.type == "statement") { - return ctx.indented + (firstChar == "{" ? 0 : config.indentUnit); - } - else if (ctx.align) return ctx.column + (closing ? 0 : 1); - else return ctx.indented + (closing ? 0 : config.indentUnit); - }, - - electricChars: "{}" - }; -}); - -CodeMirror.defineMIME("text/x-kotlin", "kotlin"); - -}); diff --git a/assets/js/plugins/codemirror/mode/livescript/index.html b/assets/js/plugins/codemirror/mode/livescript/index.html deleted file mode 100644 index f4154798..00000000 --- a/assets/js/plugins/codemirror/mode/livescript/index.html +++ /dev/null @@ -1,459 +0,0 @@ -<!doctype html> - -<title>CodeMirror: LiveScript mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<link rel="stylesheet" href="../../theme/solarized.css"> -<script src="../../lib/codemirror.js"></script> -<script src="livescript.js"></script> -<style>.CodeMirror {font-size: 80%;border-top: 1px solid silver; border-bottom: 1px solid silver;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">LiveScript</a> - </ul> -</div> - -<article> -<h2>LiveScript mode</h2> -<form><textarea id="code" name="code"> -# LiveScript mode for CodeMirror -# The following script, prelude.ls, is used to -# demonstrate LiveScript mode for CodeMirror. -# https://github.com/gkz/prelude-ls - -export objToFunc = objToFunc = (obj) -> - (key) -> obj[key] - -export each = (f, xs) --> - if typeof! xs is \Object - for , x of xs then f x - else - for x in xs then f x - xs - -export map = (f, xs) --> - f = objToFunc f if typeof! f isnt \Function - type = typeof! xs - if type is \Object - {[key, f x] for key, x of xs} - else - result = [f x for x in xs] - if type is \String then result * '' else result - -export filter = (f, xs) --> - f = objToFunc f if typeof! f isnt \Function - type = typeof! xs - if type is \Object - {[key, x] for key, x of xs when f x} - else - result = [x for x in xs when f x] - if type is \String then result * '' else result - -export reject = (f, xs) --> - f = objToFunc f if typeof! f isnt \Function - type = typeof! xs - if type is \Object - {[key, x] for key, x of xs when not f x} - else - result = [x for x in xs when not f x] - if type is \String then result * '' else result - -export partition = (f, xs) --> - f = objToFunc f if typeof! f isnt \Function - type = typeof! xs - if type is \Object - passed = {} - failed = {} - for key, x of xs - (if f x then passed else failed)[key] = x - else - passed = [] - failed = [] - for x in xs - (if f x then passed else failed)push x - if type is \String - passed *= '' - failed *= '' - [passed, failed] - -export find = (f, xs) --> - f = objToFunc f if typeof! f isnt \Function - if typeof! xs is \Object - for , x of xs when f x then return x - else - for x in xs when f x then return x - void - -export head = export first = (xs) -> - return void if not xs.length - xs.0 - -export tail = (xs) -> - return void if not xs.length - xs.slice 1 - -export last = (xs) -> - return void if not xs.length - xs[*-1] - -export initial = (xs) -> - return void if not xs.length - xs.slice 0 xs.length - 1 - -export empty = (xs) -> - if typeof! xs is \Object - for x of xs then return false - return yes - not xs.length - -export values = (obj) -> - [x for , x of obj] - -export keys = (obj) -> - [x for x of obj] - -export len = (xs) -> - xs = values xs if typeof! xs is \Object - xs.length - -export cons = (x, xs) --> - if typeof! xs is \String then x + xs else [x] ++ xs - -export append = (xs, ys) --> - if typeof! ys is \String then xs + ys else xs ++ ys - -export join = (sep, xs) --> - xs = values xs if typeof! xs is \Object - xs.join sep - -export reverse = (xs) -> - if typeof! xs is \String - then (xs / '')reverse! * '' - else xs.slice!reverse! - -export fold = export foldl = (f, memo, xs) --> - if typeof! xs is \Object - for , x of xs then memo = f memo, x - else - for x in xs then memo = f memo, x - memo - -export fold1 = export foldl1 = (f, xs) --> fold f, xs.0, xs.slice 1 - -export foldr = (f, memo, xs) --> fold f, memo, xs.slice!reverse! - -export foldr1 = (f, xs) --> - xs.=slice!reverse! - fold f, xs.0, xs.slice 1 - -export unfoldr = export unfold = (f, b) --> - if (f b)? - [that.0] ++ unfoldr f, that.1 - else - [] - -export andList = (xs) -> - for x in xs when not x - return false - true - -export orList = (xs) -> - for x in xs when x - return true - false - -export any = (f, xs) --> - f = objToFunc f if typeof! f isnt \Function - for x in xs when f x - return yes - no - -export all = (f, xs) --> - f = objToFunc f if typeof! f isnt \Function - for x in xs when not f x - return no - yes - -export unique = (xs) -> - result = [] - if typeof! xs is \Object - for , x of xs when x not in result then result.push x - else - for x in xs when x not in result then result.push x - if typeof! xs is \String then result * '' else result - -export sort = (xs) -> - xs.concat!sort (x, y) -> - | x > y => 1 - | x < y => -1 - | _ => 0 - -export sortBy = (f, xs) --> - return [] unless xs.length - xs.concat!sort f - -export compare = (f, x, y) --> - | (f x) > (f y) => 1 - | (f x) < (f y) => -1 - | otherwise => 0 - -export sum = (xs) -> - result = 0 - if typeof! xs is \Object - for , x of xs then result += x - else - for x in xs then result += x - result - -export product = (xs) -> - result = 1 - if typeof! xs is \Object - for , x of xs then result *= x - else - for x in xs then result *= x - result - -export mean = export average = (xs) -> (sum xs) / len xs - -export concat = (xss) -> fold append, [], xss - -export concatMap = (f, xs) --> fold ((memo, x) -> append memo, f x), [], xs - -export listToObj = (xs) -> - {[x.0, x.1] for x in xs} - -export maximum = (xs) -> fold1 (>?), xs - -export minimum = (xs) -> fold1 (<?), xs - -export scan = export scanl = (f, memo, xs) --> - last = memo - if typeof! xs is \Object - then [memo] ++ [last = f last, x for , x of xs] - else [memo] ++ [last = f last, x for x in xs] - -export scan1 = export scanl1 = (f, xs) --> scan f, xs.0, xs.slice 1 - -export scanr = (f, memo, xs) --> - xs.=slice!reverse! - scan f, memo, xs .reverse! - -export scanr1 = (f, xs) --> - xs.=slice!reverse! - scan f, xs.0, xs.slice 1 .reverse! - -export replicate = (n, x) --> - result = [] - i = 0 - while i < n, ++i then result.push x - result - -export take = (n, xs) --> - | n <= 0 - if typeof! xs is \String then '' else [] - | not xs.length => xs - | otherwise => xs.slice 0, n - -export drop = (n, xs) --> - | n <= 0 => xs - | not xs.length => xs - | otherwise => xs.slice n - -export splitAt = (n, xs) --> [(take n, xs), (drop n, xs)] - -export takeWhile = (p, xs) --> - return xs if not xs.length - p = objToFunc p if typeof! p isnt \Function - result = [] - for x in xs - break if not p x - result.push x - if typeof! xs is \String then result * '' else result - -export dropWhile = (p, xs) --> - return xs if not xs.length - p = objToFunc p if typeof! p isnt \Function - i = 0 - for x in xs - break if not p x - ++i - drop i, xs - -export span = (p, xs) --> [(takeWhile p, xs), (dropWhile p, xs)] - -export breakIt = (p, xs) --> span (not) << p, xs - -export zip = (xs, ys) --> - result = [] - for zs, i in [xs, ys] - for z, j in zs - result.push [] if i is 0 - result[j]?push z - result - -export zipWith = (f,xs, ys) --> - f = objToFunc f if typeof! f isnt \Function - if not xs.length or not ys.length - [] - else - [f.apply this, zs for zs in zip.call this, xs, ys] - -export zipAll = (...xss) -> - result = [] - for xs, i in xss - for x, j in xs - result.push [] if i is 0 - result[j]?push x - result - -export zipAllWith = (f, ...xss) -> - f = objToFunc f if typeof! f isnt \Function - if not xss.0.length or not xss.1.length - [] - else - [f.apply this, xs for xs in zipAll.apply this, xss] - -export compose = (...funcs) -> - -> - args = arguments - for f in funcs - args = [f.apply this, args] - args.0 - -export curry = (f) -> - curry$ f # using util method curry$ from livescript - -export id = (x) -> x - -export flip = (f, x, y) --> f y, x - -export fix = (f) -> - ( (g, x) -> -> f(g g) ...arguments ) do - (g, x) -> -> f(g g) ...arguments - -export lines = (str) -> - return [] if not str.length - str / \\n - -export unlines = (strs) -> strs * \\n - -export words = (str) -> - return [] if not str.length - str / /[ ]+/ - -export unwords = (strs) -> strs * ' ' - -export max = (>?) - -export min = (<?) - -export negate = (x) -> -x - -export abs = Math.abs - -export signum = (x) -> - | x < 0 => -1 - | x > 0 => 1 - | otherwise => 0 - -export quot = (x, y) --> ~~(x / y) - -export rem = (%) - -export div = (x, y) --> Math.floor x / y - -export mod = (%%) - -export recip = (1 /) - -export pi = Math.PI - -export tau = pi * 2 - -export exp = Math.exp - -export sqrt = Math.sqrt - -# changed from log as log is a -# common function for logging things -export ln = Math.log - -export pow = (^) - -export sin = Math.sin - -export tan = Math.tan - -export cos = Math.cos - -export asin = Math.asin - -export acos = Math.acos - -export atan = Math.atan - -export atan2 = (x, y) --> Math.atan2 x, y - -# sinh -# tanh -# cosh -# asinh -# atanh -# acosh - -export truncate = (x) -> ~~x - -export round = Math.round - -export ceiling = Math.ceil - -export floor = Math.floor - -export isItNaN = (x) -> x isnt x - -export even = (x) -> x % 2 == 0 - -export odd = (x) -> x % 2 != 0 - -export gcd = (x, y) --> - x = Math.abs x - y = Math.abs y - until y is 0 - z = x % y - x = y - y = z - x - -export lcm = (x, y) --> - Math.abs Math.floor (x / (gcd x, y) * y) - -# meta -export installPrelude = !(target) -> - unless target.prelude?isInstalled - target <<< out$ # using out$ generated by livescript - target <<< target.prelude.isInstalled = true - -export prelude = out$ -</textarea></form> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - theme: "solarized light", - lineNumbers: true - }); - </script> - - <p><strong>MIME types defined:</strong> <code>text/x-livescript</code>.</p> - - <p>The LiveScript mode was written by Kenneth Bentley.</p> - - </article> diff --git a/assets/js/plugins/codemirror/mode/livescript/livescript.js b/assets/js/plugins/codemirror/mode/livescript/livescript.js deleted file mode 100644 index 55882efc..00000000 --- a/assets/js/plugins/codemirror/mode/livescript/livescript.js +++ /dev/null @@ -1,280 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/** - * Link to the project's GitHub page: - * https://github.com/duralog/CodeMirror - */ - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.defineMode('livescript', function(){ - var tokenBase = function(stream, state) { - var next_rule = state.next || "start"; - if (next_rule) { - state.next = state.next; - var nr = Rules[next_rule]; - if (nr.splice) { - for (var i$ = 0; i$ < nr.length; ++i$) { - var r = nr[i$], m; - if (r.regex && (m = stream.match(r.regex))) { - state.next = r.next || state.next; - return r.token; - } - } - stream.next(); - return 'error'; - } - if (stream.match(r = Rules[next_rule])) { - if (r.regex && stream.match(r.regex)) { - state.next = r.next; - return r.token; - } else { - stream.next(); - return 'error'; - } - } - } - stream.next(); - return 'error'; - }; - var external = { - startState: function(){ - return { - next: 'start', - lastToken: null - }; - }, - token: function(stream, state){ - while (stream.pos == stream.start) - var style = tokenBase(stream, state); - state.lastToken = { - style: style, - indent: stream.indentation(), - content: stream.current() - }; - return style.replace(/\./g, ' '); - }, - indent: function(state){ - var indentation = state.lastToken.indent; - if (state.lastToken.content.match(indenter)) { - indentation += 2; - } - return indentation; - } - }; - return external; - }); - - var identifier = '(?![\\d\\s])[$\\w\\xAA-\\uFFDC](?:(?!\\s)[$\\w\\xAA-\\uFFDC]|-[A-Za-z])*'; - var indenter = RegExp('(?:[({[=:]|[-~]>|\\b(?:e(?:lse|xport)|d(?:o|efault)|t(?:ry|hen)|finally|import(?:\\s*all)?|const|var|let|new|catch(?:\\s*' + identifier + ')?))\\s*$'); - var keywordend = '(?![$\\w]|-[A-Za-z]|\\s*:(?![:=]))'; - var stringfill = { - token: 'string', - regex: '.+' - }; - var Rules = { - start: [ - { - token: 'comment.doc', - regex: '/\\*', - next: 'comment' - }, { - token: 'comment', - regex: '#.*' - }, { - token: 'keyword', - regex: '(?:t(?:h(?:is|row|en)|ry|ypeof!?)|c(?:on(?:tinue|st)|a(?:se|tch)|lass)|i(?:n(?:stanceof)?|mp(?:ort(?:\\s+all)?|lements)|[fs])|d(?:e(?:fault|lete|bugger)|o)|f(?:or(?:\\s+own)?|inally|unction)|s(?:uper|witch)|e(?:lse|x(?:tends|port)|val)|a(?:nd|rguments)|n(?:ew|ot)|un(?:less|til)|w(?:hile|ith)|o[fr]|return|break|let|var|loop)' + keywordend - }, { - token: 'constant.language', - regex: '(?:true|false|yes|no|on|off|null|void|undefined)' + keywordend - }, { - token: 'invalid.illegal', - regex: '(?:p(?:ackage|r(?:ivate|otected)|ublic)|i(?:mplements|nterface)|enum|static|yield)' + keywordend - }, { - token: 'language.support.class', - regex: '(?:R(?:e(?:gExp|ferenceError)|angeError)|S(?:tring|yntaxError)|E(?:rror|valError)|Array|Boolean|Date|Function|Number|Object|TypeError|URIError)' + keywordend - }, { - token: 'language.support.function', - regex: '(?:is(?:NaN|Finite)|parse(?:Int|Float)|Math|JSON|(?:en|de)codeURI(?:Component)?)' + keywordend - }, { - token: 'variable.language', - regex: '(?:t(?:hat|il|o)|f(?:rom|allthrough)|it|by|e)' + keywordend - }, { - token: 'identifier', - regex: identifier + '\\s*:(?![:=])' - }, { - token: 'variable', - regex: identifier - }, { - token: 'keyword.operator', - regex: '(?:\\.{3}|\\s+\\?)' - }, { - token: 'keyword.variable', - regex: '(?:@+|::|\\.\\.)', - next: 'key' - }, { - token: 'keyword.operator', - regex: '\\.\\s*', - next: 'key' - }, { - token: 'string', - regex: '\\\\\\S[^\\s,;)}\\]]*' - }, { - token: 'string.doc', - regex: '\'\'\'', - next: 'qdoc' - }, { - token: 'string.doc', - regex: '"""', - next: 'qqdoc' - }, { - token: 'string', - regex: '\'', - next: 'qstring' - }, { - token: 'string', - regex: '"', - next: 'qqstring' - }, { - token: 'string', - regex: '`', - next: 'js' - }, { - token: 'string', - regex: '<\\[', - next: 'words' - }, { - token: 'string.regex', - regex: '//', - next: 'heregex' - }, { - token: 'string.regex', - regex: '\\/(?:[^[\\/\\n\\\\]*(?:(?:\\\\.|\\[[^\\]\\n\\\\]*(?:\\\\.[^\\]\\n\\\\]*)*\\])[^[\\/\\n\\\\]*)*)\\/[gimy$]{0,4}', - next: 'key' - }, { - token: 'constant.numeric', - regex: '(?:0x[\\da-fA-F][\\da-fA-F_]*|(?:[2-9]|[12]\\d|3[0-6])r[\\da-zA-Z][\\da-zA-Z_]*|(?:\\d[\\d_]*(?:\\.\\d[\\d_]*)?|\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[\\w$]*)' - }, { - token: 'lparen', - regex: '[({[]' - }, { - token: 'rparen', - regex: '[)}\\]]', - next: 'key' - }, { - token: 'keyword.operator', - regex: '\\S+' - }, { - token: 'text', - regex: '\\s+' - } - ], - heregex: [ - { - token: 'string.regex', - regex: '.*?//[gimy$?]{0,4}', - next: 'start' - }, { - token: 'string.regex', - regex: '\\s*#{' - }, { - token: 'comment.regex', - regex: '\\s+(?:#.*)?' - }, { - token: 'string.regex', - regex: '\\S+' - } - ], - key: [ - { - token: 'keyword.operator', - regex: '[.?@!]+' - }, { - token: 'identifier', - regex: identifier, - next: 'start' - }, { - token: 'text', - regex: '', - next: 'start' - } - ], - comment: [ - { - token: 'comment.doc', - regex: '.*?\\*/', - next: 'start' - }, { - token: 'comment.doc', - regex: '.+' - } - ], - qdoc: [ - { - token: 'string', - regex: ".*?'''", - next: 'key' - }, stringfill - ], - qqdoc: [ - { - token: 'string', - regex: '.*?"""', - next: 'key' - }, stringfill - ], - qstring: [ - { - token: 'string', - regex: '[^\\\\\']*(?:\\\\.[^\\\\\']*)*\'', - next: 'key' - }, stringfill - ], - qqstring: [ - { - token: 'string', - regex: '[^\\\\"]*(?:\\\\.[^\\\\"]*)*"', - next: 'key' - }, stringfill - ], - js: [ - { - token: 'string', - regex: '[^\\\\`]*(?:\\\\.[^\\\\`]*)*`', - next: 'key' - }, stringfill - ], - words: [ - { - token: 'string', - regex: '.*?\\]>', - next: 'key' - }, stringfill - ] - }; - for (var idx in Rules) { - var r = Rules[idx]; - if (r.splice) { - for (var i = 0, len = r.length; i < len; ++i) { - var rr = r[i]; - if (typeof rr.regex === 'string') { - Rules[idx][i].regex = new RegExp('^' + rr.regex); - } - } - } else if (typeof rr.regex === 'string') { - Rules[idx].regex = new RegExp('^' + r.regex); - } - } - - CodeMirror.defineMIME('text/x-livescript', 'livescript'); - -}); diff --git a/assets/js/plugins/codemirror/mode/lua/index.html b/assets/js/plugins/codemirror/mode/lua/index.html deleted file mode 100644 index fc98b944..00000000 --- a/assets/js/plugins/codemirror/mode/lua/index.html +++ /dev/null @@ -1,85 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Lua mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<link rel="stylesheet" href="../../theme/neat.css"> -<script src="../../addon/edit/matchbrackets.js"></script> -<script src="../../lib/codemirror.js"></script> -<script src="lua.js"></script> -<style>.CodeMirror {border: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Lua</a> - </ul> -</div> - -<article> -<h2>Lua mode</h2> -<form><textarea id="code" name="code"> ---[[ -example useless code to show lua syntax highlighting -this is multiline comment -]] - -function blahblahblah(x) - - local table = { - "asd" = 123, - "x" = 0.34, - } - if x ~= 3 then - print( x ) - elseif x == "string" - my_custom_function( 0x34 ) - else - unknown_function( "some string" ) - end - - --single line comment - -end - -function blablabla3() - - for k,v in ipairs( table ) do - --abcde.. - y=[=[ - x=[[ - x is a multi line string - ]] - but its definition is iside a highest level string! - ]=] - print(" \"\" ") - - s = math.sin( x ) - end - -end -</textarea></form> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - matchBrackets: true, - theme: "neat" - }); - </script> - - <p>Loosely based on Franciszek - Wawrzak's <a href="http://codemirror.net/1/contrib/lua">CodeMirror - 1 mode</a>. One configuration parameter is - supported, <code>specials</code>, to which you can provide an - array of strings to have those identifiers highlighted with - the <code>lua-special</code> style.</p> - <p><strong>MIME types defined:</strong> <code>text/x-lua</code>.</p> - - </article> diff --git a/assets/js/plugins/codemirror/mode/lua/lua.js b/assets/js/plugins/codemirror/mode/lua/lua.js deleted file mode 100644 index 0b19abd3..00000000 --- a/assets/js/plugins/codemirror/mode/lua/lua.js +++ /dev/null @@ -1,159 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// LUA mode. Ported to CodeMirror 2 from Franciszek Wawrzak's -// CodeMirror 1 mode. -// highlights keywords, strings, comments (no leveling supported! ("[==[")), tokens, basic indenting - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("lua", function(config, parserConfig) { - var indentUnit = config.indentUnit; - - function prefixRE(words) { - return new RegExp("^(?:" + words.join("|") + ")", "i"); - } - function wordRE(words) { - return new RegExp("^(?:" + words.join("|") + ")$", "i"); - } - var specials = wordRE(parserConfig.specials || []); - - // long list of standard functions from lua manual - var builtins = wordRE([ - "_G","_VERSION","assert","collectgarbage","dofile","error","getfenv","getmetatable","ipairs","load", - "loadfile","loadstring","module","next","pairs","pcall","print","rawequal","rawget","rawset","require", - "select","setfenv","setmetatable","tonumber","tostring","type","unpack","xpcall", - - "coroutine.create","coroutine.resume","coroutine.running","coroutine.status","coroutine.wrap","coroutine.yield", - - "debug.debug","debug.getfenv","debug.gethook","debug.getinfo","debug.getlocal","debug.getmetatable", - "debug.getregistry","debug.getupvalue","debug.setfenv","debug.sethook","debug.setlocal","debug.setmetatable", - "debug.setupvalue","debug.traceback", - - "close","flush","lines","read","seek","setvbuf","write", - - "io.close","io.flush","io.input","io.lines","io.open","io.output","io.popen","io.read","io.stderr","io.stdin", - "io.stdout","io.tmpfile","io.type","io.write", - - "math.abs","math.acos","math.asin","math.atan","math.atan2","math.ceil","math.cos","math.cosh","math.deg", - "math.exp","math.floor","math.fmod","math.frexp","math.huge","math.ldexp","math.log","math.log10","math.max", - "math.min","math.modf","math.pi","math.pow","math.rad","math.random","math.randomseed","math.sin","math.sinh", - "math.sqrt","math.tan","math.tanh", - - "os.clock","os.date","os.difftime","os.execute","os.exit","os.getenv","os.remove","os.rename","os.setlocale", - "os.time","os.tmpname", - - "package.cpath","package.loaded","package.loaders","package.loadlib","package.path","package.preload", - "package.seeall", - - "string.byte","string.char","string.dump","string.find","string.format","string.gmatch","string.gsub", - "string.len","string.lower","string.match","string.rep","string.reverse","string.sub","string.upper", - - "table.concat","table.insert","table.maxn","table.remove","table.sort" - ]); - var keywords = wordRE(["and","break","elseif","false","nil","not","or","return", - "true","function", "end", "if", "then", "else", "do", - "while", "repeat", "until", "for", "in", "local" ]); - - var indentTokens = wordRE(["function", "if","repeat","do", "\\(", "{"]); - var dedentTokens = wordRE(["end", "until", "\\)", "}"]); - var dedentPartial = prefixRE(["end", "until", "\\)", "}", "else", "elseif"]); - - function readBracket(stream) { - var level = 0; - while (stream.eat("=")) ++level; - stream.eat("["); - return level; - } - - function normal(stream, state) { - var ch = stream.next(); - if (ch == "-" && stream.eat("-")) { - if (stream.eat("[") && stream.eat("[")) - return (state.cur = bracketed(readBracket(stream), "comment"))(stream, state); - stream.skipToEnd(); - return "comment"; - } - if (ch == "\"" || ch == "'") - return (state.cur = string(ch))(stream, state); - if (ch == "[" && /[\[=]/.test(stream.peek())) - return (state.cur = bracketed(readBracket(stream), "string"))(stream, state); - if (/\d/.test(ch)) { - stream.eatWhile(/[\w.%]/); - return "number"; - } - if (/[\w_]/.test(ch)) { - stream.eatWhile(/[\w\\\-_.]/); - return "variable"; - } - return null; - } - - function bracketed(level, style) { - return function(stream, state) { - var curlev = null, ch; - while ((ch = stream.next()) != null) { - if (curlev == null) {if (ch == "]") curlev = 0;} - else if (ch == "=") ++curlev; - else if (ch == "]" && curlev == level) { state.cur = normal; break; } - else curlev = null; - } - return style; - }; - } - - function string(quote) { - return function(stream, state) { - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == quote && !escaped) break; - escaped = !escaped && ch == "\\"; - } - if (!escaped) state.cur = normal; - return "string"; - }; - } - - return { - startState: function(basecol) { - return {basecol: basecol || 0, indentDepth: 0, cur: normal}; - }, - - token: function(stream, state) { - if (stream.eatSpace()) return null; - var style = state.cur(stream, state); - var word = stream.current(); - if (style == "variable") { - if (keywords.test(word)) style = "keyword"; - else if (builtins.test(word)) style = "builtin"; - else if (specials.test(word)) style = "variable-2"; - } - if ((style != "comment") && (style != "string")){ - if (indentTokens.test(word)) ++state.indentDepth; - else if (dedentTokens.test(word)) --state.indentDepth; - } - return style; - }, - - indent: function(state, textAfter) { - var closing = dedentPartial.test(textAfter); - return state.basecol + indentUnit * (state.indentDepth - (closing ? 1 : 0)); - }, - - lineComment: "--", - blockCommentStart: "--[[", - blockCommentEnd: "]]" - }; -}); - -CodeMirror.defineMIME("text/x-lua", "lua"); - -}); diff --git a/assets/js/plugins/codemirror/mode/markdown/index.html b/assets/js/plugins/codemirror/mode/markdown/index.html deleted file mode 100644 index c3bb8df9..00000000 --- a/assets/js/plugins/codemirror/mode/markdown/index.html +++ /dev/null @@ -1,359 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Markdown mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="../../addon/edit/continuelist.js"></script> -<script src="../xml/xml.js"></script> -<script src="markdown.js"></script> -<style type="text/css"> - .CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;} - .cm-s-default .cm-trailing-space-a:before, - .cm-s-default .cm-trailing-space-b:before {position: absolute; content: "\00B7"; color: #777;} - .cm-s-default .cm-trailing-space-new-line:before {position: absolute; content: "\21B5"; color: #777;} - </style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Markdown</a> - </ul> -</div> - -<article> -<h2>Markdown mode</h2> -<form><textarea id="code" name="code"> -Markdown: Basics -================ - -&lt;ul id="ProjectSubmenu"&gt; - &lt;li&gt;&lt;a href="/projects/markdown/" title="Markdown Project Page"&gt;Main&lt;/a&gt;&lt;/li&gt; - &lt;li&gt;&lt;a class="selected" title="Markdown Basics"&gt;Basics&lt;/a&gt;&lt;/li&gt; - &lt;li&gt;&lt;a href="/projects/markdown/syntax" title="Markdown Syntax Documentation"&gt;Syntax&lt;/a&gt;&lt;/li&gt; - &lt;li&gt;&lt;a href="/projects/markdown/license" title="Pricing and License Information"&gt;License&lt;/a&gt;&lt;/li&gt; - &lt;li&gt;&lt;a href="/projects/markdown/dingus" title="Online Markdown Web Form"&gt;Dingus&lt;/a&gt;&lt;/li&gt; -&lt;/ul&gt; - - -Getting the Gist of Markdown's Formatting Syntax ------------------------------------------------- - -This page offers a brief overview of what it's like to use Markdown. -The [syntax page] [s] provides complete, detailed documentation for -every feature, but Markdown should be very easy to pick up simply by -looking at a few examples of it in action. The examples on this page -are written in a before/after style, showing example syntax and the -HTML output produced by Markdown. - -It's also helpful to simply try Markdown out; the [Dingus] [d] is a -web application that allows you type your own Markdown-formatted text -and translate it to XHTML. - -**Note:** This document is itself written using Markdown; you -can [see the source for it by adding '.text' to the URL] [src]. - - [s]: /projects/markdown/syntax "Markdown Syntax" - [d]: /projects/markdown/dingus "Markdown Dingus" - [src]: /projects/markdown/basics.text - - -## Paragraphs, Headers, Blockquotes ## - -A paragraph is simply one or more consecutive lines of text, separated -by one or more blank lines. (A blank line is any line that looks like -a blank line -- a line containing nothing but spaces or tabs is -considered blank.) Normal paragraphs should not be indented with -spaces or tabs. - -Markdown offers two styles of headers: *Setext* and *atx*. -Setext-style headers for `&lt;h1&gt;` and `&lt;h2&gt;` are created by -"underlining" with equal signs (`=`) and hyphens (`-`), respectively. -To create an atx-style header, you put 1-6 hash marks (`#`) at the -beginning of the line -- the number of hashes equals the resulting -HTML header level. - -Blockquotes are indicated using email-style '`&gt;`' angle brackets. - -Markdown: - - A First Level Header - ==================== - - A Second Level Header - --------------------- - - Now is the time for all good men to come to - the aid of their country. This is just a - regular paragraph. - - The quick brown fox jumped over the lazy - dog's back. - - ### Header 3 - - &gt; This is a blockquote. - &gt; - &gt; This is the second paragraph in the blockquote. - &gt; - &gt; ## This is an H2 in a blockquote - - -Output: - - &lt;h1&gt;A First Level Header&lt;/h1&gt; - - &lt;h2&gt;A Second Level Header&lt;/h2&gt; - - &lt;p&gt;Now is the time for all good men to come to - the aid of their country. This is just a - regular paragraph.&lt;/p&gt; - - &lt;p&gt;The quick brown fox jumped over the lazy - dog's back.&lt;/p&gt; - - &lt;h3&gt;Header 3&lt;/h3&gt; - - &lt;blockquote&gt; - &lt;p&gt;This is a blockquote.&lt;/p&gt; - - &lt;p&gt;This is the second paragraph in the blockquote.&lt;/p&gt; - - &lt;h2&gt;This is an H2 in a blockquote&lt;/h2&gt; - &lt;/blockquote&gt; - - - -### Phrase Emphasis ### - -Markdown uses asterisks and underscores to indicate spans of emphasis. - -Markdown: - - Some of these words *are emphasized*. - Some of these words _are emphasized also_. - - Use two asterisks for **strong emphasis**. - Or, if you prefer, __use two underscores instead__. - -Output: - - &lt;p&gt;Some of these words &lt;em&gt;are emphasized&lt;/em&gt;. - Some of these words &lt;em&gt;are emphasized also&lt;/em&gt;.&lt;/p&gt; - - &lt;p&gt;Use two asterisks for &lt;strong&gt;strong emphasis&lt;/strong&gt;. - Or, if you prefer, &lt;strong&gt;use two underscores instead&lt;/strong&gt;.&lt;/p&gt; - - - -## Lists ## - -Unordered (bulleted) lists use asterisks, pluses, and hyphens (`*`, -`+`, and `-`) as list markers. These three markers are -interchangable; this: - - * Candy. - * Gum. - * Booze. - -this: - - + Candy. - + Gum. - + Booze. - -and this: - - - Candy. - - Gum. - - Booze. - -all produce the same output: - - &lt;ul&gt; - &lt;li&gt;Candy.&lt;/li&gt; - &lt;li&gt;Gum.&lt;/li&gt; - &lt;li&gt;Booze.&lt;/li&gt; - &lt;/ul&gt; - -Ordered (numbered) lists use regular numbers, followed by periods, as -list markers: - - 1. Red - 2. Green - 3. Blue - -Output: - - &lt;ol&gt; - &lt;li&gt;Red&lt;/li&gt; - &lt;li&gt;Green&lt;/li&gt; - &lt;li&gt;Blue&lt;/li&gt; - &lt;/ol&gt; - -If you put blank lines between items, you'll get `&lt;p&gt;` tags for the -list item text. You can create multi-paragraph list items by indenting -the paragraphs by 4 spaces or 1 tab: - - * A list item. - - With multiple paragraphs. - - * Another item in the list. - -Output: - - &lt;ul&gt; - &lt;li&gt;&lt;p&gt;A list item.&lt;/p&gt; - &lt;p&gt;With multiple paragraphs.&lt;/p&gt;&lt;/li&gt; - &lt;li&gt;&lt;p&gt;Another item in the list.&lt;/p&gt;&lt;/li&gt; - &lt;/ul&gt; - - - -### Links ### - -Markdown supports two styles for creating links: *inline* and -*reference*. With both styles, you use square brackets to delimit the -text you want to turn into a link. - -Inline-style links use parentheses immediately after the link text. -For example: - - This is an [example link](http://example.com/). - -Output: - - &lt;p&gt;This is an &lt;a href="http://example.com/"&gt; - example link&lt;/a&gt;.&lt;/p&gt; - -Optionally, you may include a title attribute in the parentheses: - - This is an [example link](http://example.com/ "With a Title"). - -Output: - - &lt;p&gt;This is an &lt;a href="http://example.com/" title="With a Title"&gt; - example link&lt;/a&gt;.&lt;/p&gt; - -Reference-style links allow you to refer to your links by names, which -you define elsewhere in your document: - - I get 10 times more traffic from [Google][1] than from - [Yahoo][2] or [MSN][3]. - - [1]: http://google.com/ "Google" - [2]: http://search.yahoo.com/ "Yahoo Search" - [3]: http://search.msn.com/ "MSN Search" - -Output: - - &lt;p&gt;I get 10 times more traffic from &lt;a href="http://google.com/" - title="Google"&gt;Google&lt;/a&gt; than from &lt;a href="http://search.yahoo.com/" - title="Yahoo Search"&gt;Yahoo&lt;/a&gt; or &lt;a href="http://search.msn.com/" - title="MSN Search"&gt;MSN&lt;/a&gt;.&lt;/p&gt; - -The title attribute is optional. Link names may contain letters, -numbers and spaces, but are *not* case sensitive: - - I start my morning with a cup of coffee and - [The New York Times][NY Times]. - - [ny times]: http://www.nytimes.com/ - -Output: - - &lt;p&gt;I start my morning with a cup of coffee and - &lt;a href="http://www.nytimes.com/"&gt;The New York Times&lt;/a&gt;.&lt;/p&gt; - - -### Images ### - -Image syntax is very much like link syntax. - -Inline (titles are optional): - - ![alt text](/path/to/img.jpg "Title") - -Reference-style: - - ![alt text][id] - - [id]: /path/to/img.jpg "Title" - -Both of the above examples produce the same output: - - &lt;img src="/path/to/img.jpg" alt="alt text" title="Title" /&gt; - - - -### Code ### - -In a regular paragraph, you can create code span by wrapping text in -backtick quotes. Any ampersands (`&amp;`) and angle brackets (`&lt;` or -`&gt;`) will automatically be translated into HTML entities. This makes -it easy to use Markdown to write about HTML example code: - - I strongly recommend against using any `&lt;blink&gt;` tags. - - I wish SmartyPants used named entities like `&amp;mdash;` - instead of decimal-encoded entites like `&amp;#8212;`. - -Output: - - &lt;p&gt;I strongly recommend against using any - &lt;code&gt;&amp;lt;blink&amp;gt;&lt;/code&gt; tags.&lt;/p&gt; - - &lt;p&gt;I wish SmartyPants used named entities like - &lt;code&gt;&amp;amp;mdash;&lt;/code&gt; instead of decimal-encoded - entites like &lt;code&gt;&amp;amp;#8212;&lt;/code&gt;.&lt;/p&gt; - - -To specify an entire block of pre-formatted code, indent every line of -the block by 4 spaces or 1 tab. Just like with code spans, `&amp;`, `&lt;`, -and `&gt;` characters will be escaped automatically. - -Markdown: - - If you want your page to validate under XHTML 1.0 Strict, - you've got to put paragraph tags in your blockquotes: - - &lt;blockquote&gt; - &lt;p&gt;For example.&lt;/p&gt; - &lt;/blockquote&gt; - -Output: - - &lt;p&gt;If you want your page to validate under XHTML 1.0 Strict, - you've got to put paragraph tags in your blockquotes:&lt;/p&gt; - - &lt;pre&gt;&lt;code&gt;&amp;lt;blockquote&amp;gt; - &amp;lt;p&amp;gt;For example.&amp;lt;/p&amp;gt; - &amp;lt;/blockquote&amp;gt; - &lt;/code&gt;&lt;/pre&gt; -</textarea></form> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - mode: 'markdown', - lineNumbers: true, - theme: "default", - extraKeys: {"Enter": "newlineAndIndentContinueMarkdownList"} - }); - </script> - - <p>Optionally depends on the XML mode for properly highlighted inline XML blocks.</p> - - <p><strong>MIME types defined:</strong> <code>text/x-markdown</code>.</p> - - <p><strong>Parsing/Highlighting Tests:</strong> <a href="../../test/index.html#markdown_*">normal</a>, <a href="../../test/index.html#verbose,markdown_*">verbose</a>.</p> - - </article> diff --git a/assets/js/plugins/codemirror/mode/markdown/markdown.js b/assets/js/plugins/codemirror/mode/markdown/markdown.js deleted file mode 100644 index 3eb7747e..00000000 --- a/assets/js/plugins/codemirror/mode/markdown/markdown.js +++ /dev/null @@ -1,758 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror", require("../xml/xml"))); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../xml/xml"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) { - - var htmlFound = CodeMirror.modes.hasOwnProperty("xml"); - var htmlMode = CodeMirror.getMode(cmCfg, htmlFound ? {name: "xml", htmlMode: true} : "text/plain"); - var aliases = { - html: "htmlmixed", - js: "javascript", - json: "application/json", - c: "text/x-csrc", - "c++": "text/x-c++src", - java: "text/x-java", - csharp: "text/x-csharp", - "c#": "text/x-csharp", - scala: "text/x-scala" - }; - - var getMode = (function () { - var i, modes = {}, mimes = {}, mime; - - var list = []; - for (var m in CodeMirror.modes) - if (CodeMirror.modes.propertyIsEnumerable(m)) list.push(m); - for (i = 0; i < list.length; i++) { - modes[list[i]] = list[i]; - } - var mimesList = []; - for (var m in CodeMirror.mimeModes) - if (CodeMirror.mimeModes.propertyIsEnumerable(m)) - mimesList.push({mime: m, mode: CodeMirror.mimeModes[m]}); - for (i = 0; i < mimesList.length; i++) { - mime = mimesList[i].mime; - mimes[mime] = mimesList[i].mime; - } - - for (var a in aliases) { - if (aliases[a] in modes || aliases[a] in mimes) - modes[a] = aliases[a]; - } - - return function (lang) { - return modes[lang] ? CodeMirror.getMode(cmCfg, modes[lang]) : null; - }; - }()); - - // Should characters that affect highlighting be highlighted separate? - // Does not include characters that will be output (such as `1.` and `-` for lists) - if (modeCfg.highlightFormatting === undefined) - modeCfg.highlightFormatting = false; - - // Maximum number of nested blockquotes. Set to 0 for infinite nesting. - // Excess `>` will emit `error` token. - if (modeCfg.maxBlockquoteDepth === undefined) - modeCfg.maxBlockquoteDepth = 0; - - // Should underscores in words open/close em/strong? - if (modeCfg.underscoresBreakWords === undefined) - modeCfg.underscoresBreakWords = true; - - // Turn on fenced code blocks? ("```" to start/end) - if (modeCfg.fencedCodeBlocks === undefined) modeCfg.fencedCodeBlocks = false; - - // Turn on task lists? ("- [ ] " and "- [x] ") - if (modeCfg.taskLists === undefined) modeCfg.taskLists = false; - - var codeDepth = 0; - - var header = 'header' - , code = 'comment' - , quote = 'quote' - , list1 = 'variable-2' - , list2 = 'variable-3' - , list3 = 'keyword' - , hr = 'hr' - , image = 'tag' - , formatting = 'formatting' - , linkinline = 'link' - , linkemail = 'link' - , linktext = 'link' - , linkhref = 'string' - , em = 'em' - , strong = 'strong'; - - var hrRE = /^([*\-=_])(?:\s*\1){2,}\s*$/ - , ulRE = /^[*\-+]\s+/ - , olRE = /^[0-9]+\.\s+/ - , taskListRE = /^\[(x| )\](?=\s)/ // Must follow ulRE or olRE - , atxHeaderRE = /^#+/ - , setextHeaderRE = /^(?:\={1,}|-{1,})$/ - , textRE = /^[^#!\[\]*_\\<>` "'(]+/; - - function switchInline(stream, state, f) { - state.f = state.inline = f; - return f(stream, state); - } - - function switchBlock(stream, state, f) { - state.f = state.block = f; - return f(stream, state); - } - - - // Blocks - - function blankLine(state) { - // Reset linkTitle state - state.linkTitle = false; - // Reset EM state - state.em = false; - // Reset STRONG state - state.strong = false; - // Reset state.quote - state.quote = 0; - if (!htmlFound && state.f == htmlBlock) { - state.f = inlineNormal; - state.block = blockNormal; - } - // Reset state.trailingSpace - state.trailingSpace = 0; - state.trailingSpaceNewLine = false; - // Mark this line as blank - state.thisLineHasContent = false; - return null; - } - - function blockNormal(stream, state) { - - var sol = stream.sol(); - - var prevLineIsList = (state.list !== false); - if (state.list !== false && state.indentationDiff >= 0) { // Continued list - if (state.indentationDiff < 4) { // Only adjust indentation if *not* a code block - state.indentation -= state.indentationDiff; - } - state.list = null; - } else if (state.list !== false && state.indentation > 0) { - state.list = null; - state.listDepth = Math.floor(state.indentation / 4); - } else if (state.list !== false) { // No longer a list - state.list = false; - state.listDepth = 0; - } - - var match = null; - if (state.indentationDiff >= 4) { - state.indentation -= 4; - stream.skipToEnd(); - return code; - } else if (stream.eatSpace()) { - return null; - } else if (match = stream.match(atxHeaderRE)) { - state.header = match[0].length <= 6 ? match[0].length : 6; - if (modeCfg.highlightFormatting) state.formatting = "header"; - state.f = state.inline; - return getType(state); - } else if (state.prevLineHasContent && (match = stream.match(setextHeaderRE))) { - state.header = match[0].charAt(0) == '=' ? 1 : 2; - if (modeCfg.highlightFormatting) state.formatting = "header"; - state.f = state.inline; - return getType(state); - } else if (stream.eat('>')) { - state.indentation++; - state.quote = sol ? 1 : state.quote + 1; - if (modeCfg.highlightFormatting) state.formatting = "quote"; - stream.eatSpace(); - return getType(state); - } else if (stream.peek() === '[') { - return switchInline(stream, state, footnoteLink); - } else if (stream.match(hrRE, true)) { - return hr; - } else if ((!state.prevLineHasContent || prevLineIsList) && (stream.match(ulRE, false) || stream.match(olRE, false))) { - var listType = null; - if (stream.match(ulRE, true)) { - listType = 'ul'; - } else { - stream.match(olRE, true); - listType = 'ol'; - } - state.indentation += 4; - state.list = true; - state.listDepth++; - if (modeCfg.taskLists && stream.match(taskListRE, false)) { - state.taskList = true; - } - state.f = state.inline; - if (modeCfg.highlightFormatting) state.formatting = ["list", "list-" + listType]; - return getType(state); - } else if (modeCfg.fencedCodeBlocks && stream.match(/^```([\w+#]*)/, true)) { - // try switching mode - state.localMode = getMode(RegExp.$1); - if (state.localMode) state.localState = state.localMode.startState(); - switchBlock(stream, state, local); - if (modeCfg.highlightFormatting) state.formatting = "code-block"; - state.code = true; - return getType(state); - } - - return switchInline(stream, state, state.inline); - } - - function htmlBlock(stream, state) { - var style = htmlMode.token(stream, state.htmlState); - if ((htmlFound && state.htmlState.tagStart === null && !state.htmlState.context) || - (state.md_inside && stream.current().indexOf(">") > -1)) { - state.f = inlineNormal; - state.block = blockNormal; - state.htmlState = null; - } - return style; - } - - function local(stream, state) { - if (stream.sol() && stream.match(/^```/, true)) { - state.localMode = state.localState = null; - state.f = inlineNormal; - state.block = blockNormal; - if (modeCfg.highlightFormatting) state.formatting = "code-block"; - state.code = true; - var returnType = getType(state); - state.code = false; - return returnType; - } else if (state.localMode) { - return state.localMode.token(stream, state.localState); - } else { - stream.skipToEnd(); - return code; - } - } - - // Inline - function getType(state) { - var styles = []; - - if (state.formatting) { - styles.push(formatting); - - if (typeof state.formatting === "string") state.formatting = [state.formatting]; - - for (var i = 0; i < state.formatting.length; i++) { - styles.push(formatting + "-" + state.formatting[i]); - - if (state.formatting[i] === "header") { - styles.push(formatting + "-" + state.formatting[i] + "-" + state.header); - } - - // Add `formatting-quote` and `formatting-quote-#` for blockquotes - // Add `error` instead if the maximum blockquote nesting depth is passed - if (state.formatting[i] === "quote") { - if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) { - styles.push(formatting + "-" + state.formatting[i] + "-" + state.quote); - } else { - styles.push("error"); - } - } - } - } - - if (state.taskOpen) { - styles.push("meta"); - return styles.length ? styles.join(' ') : null; - } - if (state.taskClosed) { - styles.push("property"); - return styles.length ? styles.join(' ') : null; - } - - if (state.linkHref) { - styles.push(linkhref); - return styles.length ? styles.join(' ') : null; - } - - if (state.strong) { styles.push(strong); } - if (state.em) { styles.push(em); } - - if (state.linkText) { styles.push(linktext); } - - if (state.code) { styles.push(code); } - - if (state.header) { styles.push(header); styles.push(header + "-" + state.header); } - - if (state.quote) { - styles.push(quote); - - // Add `quote-#` where the maximum for `#` is modeCfg.maxBlockquoteDepth - if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) { - styles.push(quote + "-" + state.quote); - } else { - styles.push(quote + "-" + modeCfg.maxBlockquoteDepth); - } - } - - if (state.list !== false) { - var listMod = (state.listDepth - 1) % 3; - if (!listMod) { - styles.push(list1); - } else if (listMod === 1) { - styles.push(list2); - } else { - styles.push(list3); - } - } - - if (state.trailingSpaceNewLine) { - styles.push("trailing-space-new-line"); - } else if (state.trailingSpace) { - styles.push("trailing-space-" + (state.trailingSpace % 2 ? "a" : "b")); - } - - return styles.length ? styles.join(' ') : null; - } - - function handleText(stream, state) { - if (stream.match(textRE, true)) { - return getType(state); - } - return undefined; - } - - function inlineNormal(stream, state) { - var style = state.text(stream, state); - if (typeof style !== 'undefined') - return style; - - if (state.list) { // List marker (*, +, -, 1., etc) - state.list = null; - return getType(state); - } - - if (state.taskList) { - var taskOpen = stream.match(taskListRE, true)[1] !== "x"; - if (taskOpen) state.taskOpen = true; - else state.taskClosed = true; - if (modeCfg.highlightFormatting) state.formatting = "task"; - state.taskList = false; - return getType(state); - } - - state.taskOpen = false; - state.taskClosed = false; - - if (state.header && stream.match(/^#+$/, true)) { - if (modeCfg.highlightFormatting) state.formatting = "header"; - return getType(state); - } - - // Get sol() value now, before character is consumed - var sol = stream.sol(); - - var ch = stream.next(); - - if (ch === '\\') { - stream.next(); - if (modeCfg.highlightFormatting) { - var type = getType(state); - return type ? type + " formatting-escape" : "formatting-escape"; - } - } - - // Matches link titles present on next line - if (state.linkTitle) { - state.linkTitle = false; - var matchCh = ch; - if (ch === '(') { - matchCh = ')'; - } - matchCh = (matchCh+'').replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1"); - var regex = '^\\s*(?:[^' + matchCh + '\\\\]+|\\\\\\\\|\\\\.)' + matchCh; - if (stream.match(new RegExp(regex), true)) { - return linkhref; - } - } - - // If this block is changed, it may need to be updated in GFM mode - if (ch === '`') { - var previousFormatting = state.formatting; - if (modeCfg.highlightFormatting) state.formatting = "code"; - var t = getType(state); - var before = stream.pos; - stream.eatWhile('`'); - var difference = 1 + stream.pos - before; - if (!state.code) { - codeDepth = difference; - state.code = true; - return getType(state); - } else { - if (difference === codeDepth) { // Must be exact - state.code = false; - return t; - } - state.formatting = previousFormatting; - return getType(state); - } - } else if (state.code) { - return getType(state); - } - - if (ch === '!' && stream.match(/\[[^\]]*\] ?(?:\(|\[)/, false)) { - stream.match(/\[[^\]]*\]/); - state.inline = state.f = linkHref; - return image; - } - - if (ch === '[' && stream.match(/.*\](\(| ?\[)/, false)) { - state.linkText = true; - if (modeCfg.highlightFormatting) state.formatting = "link"; - return getType(state); - } - - if (ch === ']' && state.linkText) { - if (modeCfg.highlightFormatting) state.formatting = "link"; - var type = getType(state); - state.linkText = false; - state.inline = state.f = linkHref; - return type; - } - - if (ch === '<' && stream.match(/^(https?|ftps?):\/\/(?:[^\\>]|\\.)+>/, false)) { - state.f = state.inline = linkInline; - if (modeCfg.highlightFormatting) state.formatting = "link"; - var type = getType(state); - if (type){ - type += " "; - } else { - type = ""; - } - return type + linkinline; - } - - if (ch === '<' && stream.match(/^[^> \\]+@(?:[^\\>]|\\.)+>/, false)) { - state.f = state.inline = linkInline; - if (modeCfg.highlightFormatting) state.formatting = "link"; - var type = getType(state); - if (type){ - type += " "; - } else { - type = ""; - } - return type + linkemail; - } - - if (ch === '<' && stream.match(/^\w/, false)) { - if (stream.string.indexOf(">") != -1) { - var atts = stream.string.substring(1,stream.string.indexOf(">")); - if (/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(atts)) { - state.md_inside = true; - } - } - stream.backUp(1); - state.htmlState = CodeMirror.startState(htmlMode); - return switchBlock(stream, state, htmlBlock); - } - - if (ch === '<' && stream.match(/^\/\w*?>/)) { - state.md_inside = false; - return "tag"; - } - - var ignoreUnderscore = false; - if (!modeCfg.underscoresBreakWords) { - if (ch === '_' && stream.peek() !== '_' && stream.match(/(\w)/, false)) { - var prevPos = stream.pos - 2; - if (prevPos >= 0) { - var prevCh = stream.string.charAt(prevPos); - if (prevCh !== '_' && prevCh.match(/(\w)/, false)) { - ignoreUnderscore = true; - } - } - } - } - if (ch === '*' || (ch === '_' && !ignoreUnderscore)) { - if (sol && stream.peek() === ' ') { - // Do nothing, surrounded by newline and space - } else if (state.strong === ch && stream.eat(ch)) { // Remove STRONG - if (modeCfg.highlightFormatting) state.formatting = "strong"; - var t = getType(state); - state.strong = false; - return t; - } else if (!state.strong && stream.eat(ch)) { // Add STRONG - state.strong = ch; - if (modeCfg.highlightFormatting) state.formatting = "strong"; - return getType(state); - } else if (state.em === ch) { // Remove EM - if (modeCfg.highlightFormatting) state.formatting = "em"; - var t = getType(state); - state.em = false; - return t; - } else if (!state.em) { // Add EM - state.em = ch; - if (modeCfg.highlightFormatting) state.formatting = "em"; - return getType(state); - } - } else if (ch === ' ') { - if (stream.eat('*') || stream.eat('_')) { // Probably surrounded by spaces - if (stream.peek() === ' ') { // Surrounded by spaces, ignore - return getType(state); - } else { // Not surrounded by spaces, back up pointer - stream.backUp(1); - } - } - } - - if (ch === ' ') { - if (stream.match(/ +$/, false)) { - state.trailingSpace++; - } else if (state.trailingSpace) { - state.trailingSpaceNewLine = true; - } - } - - return getType(state); - } - - function linkInline(stream, state) { - var ch = stream.next(); - - if (ch === ">") { - state.f = state.inline = inlineNormal; - if (modeCfg.highlightFormatting) state.formatting = "link"; - var type = getType(state); - if (type){ - type += " "; - } else { - type = ""; - } - return type + linkinline; - } - - stream.match(/^[^>]+/, true); - - return linkinline; - } - - function linkHref(stream, state) { - // Check if space, and return NULL if so (to avoid marking the space) - if(stream.eatSpace()){ - return null; - } - var ch = stream.next(); - if (ch === '(' || ch === '[') { - state.f = state.inline = getLinkHrefInside(ch === "(" ? ")" : "]"); - if (modeCfg.highlightFormatting) state.formatting = "link-string"; - state.linkHref = true; - return getType(state); - } - return 'error'; - } - - function getLinkHrefInside(endChar) { - return function(stream, state) { - var ch = stream.next(); - - if (ch === endChar) { - state.f = state.inline = inlineNormal; - if (modeCfg.highlightFormatting) state.formatting = "link-string"; - var returnState = getType(state); - state.linkHref = false; - return returnState; - } - - if (stream.match(inlineRE(endChar), true)) { - stream.backUp(1); - } - - state.linkHref = true; - return getType(state); - }; - } - - function footnoteLink(stream, state) { - if (stream.match(/^[^\]]*\]:/, false)) { - state.f = footnoteLinkInside; - stream.next(); // Consume [ - if (modeCfg.highlightFormatting) state.formatting = "link"; - state.linkText = true; - return getType(state); - } - return switchInline(stream, state, inlineNormal); - } - - function footnoteLinkInside(stream, state) { - if (stream.match(/^\]:/, true)) { - state.f = state.inline = footnoteUrl; - if (modeCfg.highlightFormatting) state.formatting = "link"; - var returnType = getType(state); - state.linkText = false; - return returnType; - } - - stream.match(/^[^\]]+/, true); - - return linktext; - } - - function footnoteUrl(stream, state) { - // Check if space, and return NULL if so (to avoid marking the space) - if(stream.eatSpace()){ - return null; - } - // Match URL - stream.match(/^[^\s]+/, true); - // Check for link title - if (stream.peek() === undefined) { // End of line, set flag to check next line - state.linkTitle = true; - } else { // More content on line, check if link title - stream.match(/^(?:\s+(?:"(?:[^"\\]|\\\\|\\.)+"|'(?:[^'\\]|\\\\|\\.)+'|\((?:[^)\\]|\\\\|\\.)+\)))?/, true); - } - state.f = state.inline = inlineNormal; - return linkhref; - } - - var savedInlineRE = []; - function inlineRE(endChar) { - if (!savedInlineRE[endChar]) { - // Escape endChar for RegExp (taken from http://stackoverflow.com/a/494122/526741) - endChar = (endChar+'').replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1"); - // Match any non-endChar, escaped character, as well as the closing - // endChar. - savedInlineRE[endChar] = new RegExp('^(?:[^\\\\]|\\\\.)*?(' + endChar + ')'); - } - return savedInlineRE[endChar]; - } - - var mode = { - startState: function() { - return { - f: blockNormal, - - prevLineHasContent: false, - thisLineHasContent: false, - - block: blockNormal, - htmlState: null, - indentation: 0, - - inline: inlineNormal, - text: handleText, - - formatting: false, - linkText: false, - linkHref: false, - linkTitle: false, - em: false, - strong: false, - header: 0, - taskList: false, - list: false, - listDepth: 0, - quote: 0, - trailingSpace: 0, - trailingSpaceNewLine: false - }; - }, - - copyState: function(s) { - return { - f: s.f, - - prevLineHasContent: s.prevLineHasContent, - thisLineHasContent: s.thisLineHasContent, - - block: s.block, - htmlState: s.htmlState && CodeMirror.copyState(htmlMode, s.htmlState), - indentation: s.indentation, - - localMode: s.localMode, - localState: s.localMode ? CodeMirror.copyState(s.localMode, s.localState) : null, - - inline: s.inline, - text: s.text, - formatting: false, - linkTitle: s.linkTitle, - em: s.em, - strong: s.strong, - header: s.header, - taskList: s.taskList, - list: s.list, - listDepth: s.listDepth, - quote: s.quote, - trailingSpace: s.trailingSpace, - trailingSpaceNewLine: s.trailingSpaceNewLine, - md_inside: s.md_inside - }; - }, - - token: function(stream, state) { - - // Reset state.formatting - state.formatting = false; - - if (stream.sol()) { - var forceBlankLine = !!state.header; - - // Reset state.header - state.header = 0; - - if (stream.match(/^\s*$/, true) || forceBlankLine) { - state.prevLineHasContent = false; - blankLine(state); - return forceBlankLine ? this.token(stream, state) : null; - } else { - state.prevLineHasContent = state.thisLineHasContent; - state.thisLineHasContent = true; - } - - // Reset state.taskList - state.taskList = false; - - // Reset state.code - state.code = false; - - // Reset state.trailingSpace - state.trailingSpace = 0; - state.trailingSpaceNewLine = false; - - state.f = state.block; - var indentation = stream.match(/^\s*/, true)[0].replace(/\t/g, ' ').length; - var difference = Math.floor((indentation - state.indentation) / 4) * 4; - if (difference > 4) difference = 4; - var adjustedIndentation = state.indentation + difference; - state.indentationDiff = adjustedIndentation - state.indentation; - state.indentation = adjustedIndentation; - if (indentation > 0) return null; - } - var result = state.f(stream, state); - if (stream.start == stream.pos) return this.token(stream, state); - else return result; - }, - - innerMode: function(state) { - if (state.block == htmlBlock) return {state: state.htmlState, mode: htmlMode}; - if (state.localState) return {state: state.localState, mode: state.localMode}; - return {state: state, mode: mode}; - }, - - blankLine: blankLine, - - getType: getType, - - fold: "markdown" - }; - return mode; -}, "xml"); - -CodeMirror.defineMIME("text/x-markdown", "markdown"); - -}); diff --git a/assets/js/plugins/codemirror/mode/markdown/test.js b/assets/js/plugins/codemirror/mode/markdown/test.js deleted file mode 100644 index 96ca1aef..00000000 --- a/assets/js/plugins/codemirror/mode/markdown/test.js +++ /dev/null @@ -1,754 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - var mode = CodeMirror.getMode({tabSize: 4}, "markdown"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - var modeHighlightFormatting = CodeMirror.getMode({tabSize: 4}, {name: "markdown", highlightFormatting: true}); - function FT(name) { test.mode(name, modeHighlightFormatting, Array.prototype.slice.call(arguments, 1)); } - - FT("formatting_emAsterisk", - "[em&formatting&formatting-em *][em foo][em&formatting&formatting-em *]"); - - FT("formatting_emUnderscore", - "[em&formatting&formatting-em _][em foo][em&formatting&formatting-em _]"); - - FT("formatting_strongAsterisk", - "[strong&formatting&formatting-strong **][strong foo][strong&formatting&formatting-strong **]"); - - FT("formatting_strongUnderscore", - "[strong&formatting&formatting-strong __][strong foo][strong&formatting&formatting-strong __]"); - - FT("formatting_codeBackticks", - "[comment&formatting&formatting-code `][comment foo][comment&formatting&formatting-code `]"); - - FT("formatting_doubleBackticks", - "[comment&formatting&formatting-code ``][comment foo ` bar][comment&formatting&formatting-code ``]"); - - FT("formatting_atxHeader", - "[header&header-1&formatting&formatting-header&formatting-header-1 #][header&header-1 foo # bar ][header&header-1&formatting&formatting-header&formatting-header-1 #]"); - - FT("formatting_setextHeader", - "foo", - "[header&header-1&formatting&formatting-header&formatting-header-1 =]"); - - FT("formatting_blockquote", - "[quote&quote-1&formatting&formatting-quote&formatting-quote-1 > ][quote&quote-1 foo]"); - - FT("formatting_list", - "[variable-2&formatting&formatting-list&formatting-list-ul - ][variable-2 foo]"); - FT("formatting_list", - "[variable-2&formatting&formatting-list&formatting-list-ol 1. ][variable-2 foo]"); - - FT("formatting_link", - "[link&formatting&formatting-link [][link foo][link&formatting&formatting-link ]]][string&formatting&formatting-link-string (][string http://example.com/][string&formatting&formatting-link-string )]"); - - FT("formatting_linkReference", - "[link&formatting&formatting-link [][link foo][link&formatting&formatting-link ]]][string&formatting&formatting-link-string [][string bar][string&formatting&formatting-link-string ]]]", - "[link&formatting&formatting-link [][link bar][link&formatting&formatting-link ]]:] [string http://example.com/]"); - - FT("formatting_linkWeb", - "[link&formatting&formatting-link <][link http://example.com/][link&formatting&formatting-link >]"); - - FT("formatting_linkEmail", - "[link&formatting&formatting-link <][link user@example.com][link&formatting&formatting-link >]"); - - FT("formatting_escape", - "[formatting-escape \\*]"); - - MT("plainText", - "foo"); - - // Don't style single trailing space - MT("trailingSpace1", - "foo "); - - // Two or more trailing spaces should be styled with line break character - MT("trailingSpace2", - "foo[trailing-space-a ][trailing-space-new-line ]"); - - MT("trailingSpace3", - "foo[trailing-space-a ][trailing-space-b ][trailing-space-new-line ]"); - - MT("trailingSpace4", - "foo[trailing-space-a ][trailing-space-b ][trailing-space-a ][trailing-space-new-line ]"); - - // Code blocks using 4 spaces (regardless of CodeMirror.tabSize value) - MT("codeBlocksUsing4Spaces", - " [comment foo]"); - - // Code blocks using 4 spaces with internal indentation - MT("codeBlocksUsing4SpacesIndentation", - " [comment bar]", - " [comment hello]", - " [comment world]", - " [comment foo]", - "bar"); - - // Code blocks using 4 spaces with internal indentation - MT("codeBlocksUsing4SpacesIndentation", - " foo", - " [comment bar]", - " [comment hello]", - " [comment world]"); - - // Code blocks should end even after extra indented lines - MT("codeBlocksWithTrailingIndentedLine", - " [comment foo]", - " [comment bar]", - " [comment baz]", - " ", - "hello"); - - // Code blocks using 1 tab (regardless of CodeMirror.indentWithTabs value) - MT("codeBlocksUsing1Tab", - "\t[comment foo]"); - - // Inline code using backticks - MT("inlineCodeUsingBackticks", - "foo [comment `bar`]"); - - // Block code using single backtick (shouldn't work) - MT("blockCodeSingleBacktick", - "[comment `]", - "foo", - "[comment `]"); - - // Unclosed backticks - // Instead of simply marking as CODE, it would be nice to have an - // incomplete flag for CODE, that is styled slightly different. - MT("unclosedBackticks", - "foo [comment `bar]"); - - // Per documentation: "To include a literal backtick character within a - // code span, you can use multiple backticks as the opening and closing - // delimiters" - MT("doubleBackticks", - "[comment ``foo ` bar``]"); - - // Tests based on Dingus - // http://daringfireball.net/projects/markdown/dingus - // - // Multiple backticks within an inline code block - MT("consecutiveBackticks", - "[comment `foo```bar`]"); - - // Multiple backticks within an inline code block with a second code block - MT("consecutiveBackticks", - "[comment `foo```bar`] hello [comment `world`]"); - - // Unclosed with several different groups of backticks - MT("unclosedBackticks", - "[comment ``foo ``` bar` hello]"); - - // Closed with several different groups of backticks - MT("closedBackticks", - "[comment ``foo ``` bar` hello``] world"); - - // atx headers - // http://daringfireball.net/projects/markdown/syntax#header - - MT("atxH1", - "[header&header-1 # foo]"); - - MT("atxH2", - "[header&header-2 ## foo]"); - - MT("atxH3", - "[header&header-3 ### foo]"); - - MT("atxH4", - "[header&header-4 #### foo]"); - - MT("atxH5", - "[header&header-5 ##### foo]"); - - MT("atxH6", - "[header&header-6 ###### foo]"); - - // H6 - 7x '#' should still be H6, per Dingus - // http://daringfireball.net/projects/markdown/dingus - MT("atxH6NotH7", - "[header&header-6 ####### foo]"); - - // Inline styles should be parsed inside headers - MT("atxH1inline", - "[header&header-1 # foo ][header&header-1&em *bar*]"); - - // Setext headers - H1, H2 - // Per documentation, "Any number of underlining =’s or -’s will work." - // http://daringfireball.net/projects/markdown/syntax#header - // Ideally, the text would be marked as `header` as well, but this is - // not really feasible at the moment. So, instead, we're testing against - // what works today, to avoid any regressions. - // - // Check if single underlining = works - MT("setextH1", - "foo", - "[header&header-1 =]"); - - // Check if 3+ ='s work - MT("setextH1", - "foo", - "[header&header-1 ===]"); - - // Check if single underlining - works - MT("setextH2", - "foo", - "[header&header-2 -]"); - - // Check if 3+ -'s work - MT("setextH2", - "foo", - "[header&header-2 ---]"); - - // Single-line blockquote with trailing space - MT("blockquoteSpace", - "[quote&quote-1 > foo]"); - - // Single-line blockquote - MT("blockquoteNoSpace", - "[quote&quote-1 >foo]"); - - // No blank line before blockquote - MT("blockquoteNoBlankLine", - "foo", - "[quote&quote-1 > bar]"); - - // Nested blockquote - MT("blockquoteSpace", - "[quote&quote-1 > foo]", - "[quote&quote-1 >][quote&quote-2 > foo]", - "[quote&quote-1 >][quote&quote-2 >][quote&quote-3 > foo]"); - - // Single-line blockquote followed by normal paragraph - MT("blockquoteThenParagraph", - "[quote&quote-1 >foo]", - "", - "bar"); - - // Multi-line blockquote (lazy mode) - MT("multiBlockquoteLazy", - "[quote&quote-1 >foo]", - "[quote&quote-1 bar]"); - - // Multi-line blockquote followed by normal paragraph (lazy mode) - MT("multiBlockquoteLazyThenParagraph", - "[quote&quote-1 >foo]", - "[quote&quote-1 bar]", - "", - "hello"); - - // Multi-line blockquote (non-lazy mode) - MT("multiBlockquote", - "[quote&quote-1 >foo]", - "[quote&quote-1 >bar]"); - - // Multi-line blockquote followed by normal paragraph (non-lazy mode) - MT("multiBlockquoteThenParagraph", - "[quote&quote-1 >foo]", - "[quote&quote-1 >bar]", - "", - "hello"); - - // Check list types - - MT("listAsterisk", - "foo", - "bar", - "", - "[variable-2 * foo]", - "[variable-2 * bar]"); - - MT("listPlus", - "foo", - "bar", - "", - "[variable-2 + foo]", - "[variable-2 + bar]"); - - MT("listDash", - "foo", - "bar", - "", - "[variable-2 - foo]", - "[variable-2 - bar]"); - - MT("listNumber", - "foo", - "bar", - "", - "[variable-2 1. foo]", - "[variable-2 2. bar]"); - - // Lists require a preceding blank line (per Dingus) - MT("listBogus", - "foo", - "1. bar", - "2. hello"); - - // List after header - MT("listAfterHeader", - "[header&header-1 # foo]", - "[variable-2 - bar]"); - - // Formatting in lists (*) - MT("listAsteriskFormatting", - "[variable-2 * ][variable-2&em *foo*][variable-2 bar]", - "[variable-2 * ][variable-2&strong **foo**][variable-2 bar]", - "[variable-2 * ][variable-2&strong **][variable-2&em&strong *foo**][variable-2&em *][variable-2 bar]", - "[variable-2 * ][variable-2&comment `foo`][variable-2 bar]"); - - // Formatting in lists (+) - MT("listPlusFormatting", - "[variable-2 + ][variable-2&em *foo*][variable-2 bar]", - "[variable-2 + ][variable-2&strong **foo**][variable-2 bar]", - "[variable-2 + ][variable-2&strong **][variable-2&em&strong *foo**][variable-2&em *][variable-2 bar]", - "[variable-2 + ][variable-2&comment `foo`][variable-2 bar]"); - - // Formatting in lists (-) - MT("listDashFormatting", - "[variable-2 - ][variable-2&em *foo*][variable-2 bar]", - "[variable-2 - ][variable-2&strong **foo**][variable-2 bar]", - "[variable-2 - ][variable-2&strong **][variable-2&em&strong *foo**][variable-2&em *][variable-2 bar]", - "[variable-2 - ][variable-2&comment `foo`][variable-2 bar]"); - - // Formatting in lists (1.) - MT("listNumberFormatting", - "[variable-2 1. ][variable-2&em *foo*][variable-2 bar]", - "[variable-2 2. ][variable-2&strong **foo**][variable-2 bar]", - "[variable-2 3. ][variable-2&strong **][variable-2&em&strong *foo**][variable-2&em *][variable-2 bar]", - "[variable-2 4. ][variable-2&comment `foo`][variable-2 bar]"); - - // Paragraph lists - MT("listParagraph", - "[variable-2 * foo]", - "", - "[variable-2 * bar]"); - - // Multi-paragraph lists - // - // 4 spaces - MT("listMultiParagraph", - "[variable-2 * foo]", - "", - "[variable-2 * bar]", - "", - " [variable-2 hello]"); - - // 4 spaces, extra blank lines (should still be list, per Dingus) - MT("listMultiParagraphExtra", - "[variable-2 * foo]", - "", - "[variable-2 * bar]", - "", - "", - " [variable-2 hello]"); - - // 4 spaces, plus 1 space (should still be list, per Dingus) - MT("listMultiParagraphExtraSpace", - "[variable-2 * foo]", - "", - "[variable-2 * bar]", - "", - " [variable-2 hello]", - "", - " [variable-2 world]"); - - // 1 tab - MT("listTab", - "[variable-2 * foo]", - "", - "[variable-2 * bar]", - "", - "\t[variable-2 hello]"); - - // No indent - MT("listNoIndent", - "[variable-2 * foo]", - "", - "[variable-2 * bar]", - "", - "hello"); - - // Blockquote - MT("blockquote", - "[variable-2 * foo]", - "", - "[variable-2 * bar]", - "", - " [variable-2&quote&quote-1 > hello]"); - - // Code block - MT("blockquoteCode", - "[variable-2 * foo]", - "", - "[variable-2 * bar]", - "", - " [comment > hello]", - "", - " [variable-2 world]"); - - // Code block followed by text - MT("blockquoteCodeText", - "[variable-2 * foo]", - "", - " [variable-2 bar]", - "", - " [comment hello]", - "", - " [variable-2 world]"); - - // Nested list - - MT("listAsteriskNested", - "[variable-2 * foo]", - "", - " [variable-3 * bar]"); - - MT("listPlusNested", - "[variable-2 + foo]", - "", - " [variable-3 + bar]"); - - MT("listDashNested", - "[variable-2 - foo]", - "", - " [variable-3 - bar]"); - - MT("listNumberNested", - "[variable-2 1. foo]", - "", - " [variable-3 2. bar]"); - - MT("listMixed", - "[variable-2 * foo]", - "", - " [variable-3 + bar]", - "", - " [keyword - hello]", - "", - " [variable-2 1. world]"); - - MT("listBlockquote", - "[variable-2 * foo]", - "", - " [variable-3 + bar]", - "", - " [quote&quote-1&variable-3 > hello]"); - - MT("listCode", - "[variable-2 * foo]", - "", - " [variable-3 + bar]", - "", - " [comment hello]"); - - // Code with internal indentation - MT("listCodeIndentation", - "[variable-2 * foo]", - "", - " [comment bar]", - " [comment hello]", - " [comment world]", - " [comment foo]", - " [variable-2 bar]"); - - // List nesting edge cases - MT("listNested", - "[variable-2 * foo]", - "", - " [variable-3 * bar]", - "", - " [variable-2 hello]" - ); - MT("listNested", - "[variable-2 * foo]", - "", - " [variable-3 * bar]", - "", - " [variable-3 * foo]" - ); - - // Code followed by text - MT("listCodeText", - "[variable-2 * foo]", - "", - " [comment bar]", - "", - "hello"); - - // Following tests directly from official Markdown documentation - // http://daringfireball.net/projects/markdown/syntax#hr - - MT("hrSpace", - "[hr * * *]"); - - MT("hr", - "[hr ***]"); - - MT("hrLong", - "[hr *****]"); - - MT("hrSpaceDash", - "[hr - - -]"); - - MT("hrDashLong", - "[hr ---------------------------------------]"); - - // Inline link with title - MT("linkTitle", - "[link [[foo]]][string (http://example.com/ \"bar\")] hello"); - - // Inline link without title - MT("linkNoTitle", - "[link [[foo]]][string (http://example.com/)] bar"); - - // Inline link with image - MT("linkImage", - "[link [[][tag ![[foo]]][string (http://example.com/)][link ]]][string (http://example.com/)] bar"); - - // Inline link with Em - MT("linkEm", - "[link [[][link&em *foo*][link ]]][string (http://example.com/)] bar"); - - // Inline link with Strong - MT("linkStrong", - "[link [[][link&strong **foo**][link ]]][string (http://example.com/)] bar"); - - // Inline link with EmStrong - MT("linkEmStrong", - "[link [[][link&strong **][link&em&strong *foo**][link&em *][link ]]][string (http://example.com/)] bar"); - - // Image with title - MT("imageTitle", - "[tag ![[foo]]][string (http://example.com/ \"bar\")] hello"); - - // Image without title - MT("imageNoTitle", - "[tag ![[foo]]][string (http://example.com/)] bar"); - - // Image with asterisks - MT("imageAsterisks", - "[tag ![[*foo*]]][string (http://example.com/)] bar"); - - // Not a link. Should be normal text due to square brackets being used - // regularly in text, especially in quoted material, and no space is allowed - // between square brackets and parentheses (per Dingus). - MT("notALink", - "[[foo]] (bar)"); - - // Reference-style links - MT("linkReference", - "[link [[foo]]][string [[bar]]] hello"); - - // Reference-style links with Em - MT("linkReferenceEm", - "[link [[][link&em *foo*][link ]]][string [[bar]]] hello"); - - // Reference-style links with Strong - MT("linkReferenceStrong", - "[link [[][link&strong **foo**][link ]]][string [[bar]]] hello"); - - // Reference-style links with EmStrong - MT("linkReferenceEmStrong", - "[link [[][link&strong **][link&em&strong *foo**][link&em *][link ]]][string [[bar]]] hello"); - - // Reference-style links with optional space separator (per docuentation) - // "You can optionally use a space to separate the sets of brackets" - MT("linkReferenceSpace", - "[link [[foo]]] [string [[bar]]] hello"); - - // Should only allow a single space ("...use *a* space...") - MT("linkReferenceDoubleSpace", - "[[foo]] [[bar]] hello"); - - // Reference-style links with implicit link name - MT("linkImplicit", - "[link [[foo]]][string [[]]] hello"); - - // @todo It would be nice if, at some point, the document was actually - // checked to see if the referenced link exists - - // Link label, for reference-style links (taken from documentation) - - MT("labelNoTitle", - "[link [[foo]]:] [string http://example.com/]"); - - MT("labelIndented", - " [link [[foo]]:] [string http://example.com/]"); - - MT("labelSpaceTitle", - "[link [[foo bar]]:] [string http://example.com/ \"hello\"]"); - - MT("labelDoubleTitle", - "[link [[foo bar]]:] [string http://example.com/ \"hello\"] \"world\""); - - MT("labelTitleDoubleQuotes", - "[link [[foo]]:] [string http://example.com/ \"bar\"]"); - - MT("labelTitleSingleQuotes", - "[link [[foo]]:] [string http://example.com/ 'bar']"); - - MT("labelTitleParenthese", - "[link [[foo]]:] [string http://example.com/ (bar)]"); - - MT("labelTitleInvalid", - "[link [[foo]]:] [string http://example.com/] bar"); - - MT("labelLinkAngleBrackets", - "[link [[foo]]:] [string <http://example.com/> \"bar\"]"); - - MT("labelTitleNextDoubleQuotes", - "[link [[foo]]:] [string http://example.com/]", - "[string \"bar\"] hello"); - - MT("labelTitleNextSingleQuotes", - "[link [[foo]]:] [string http://example.com/]", - "[string 'bar'] hello"); - - MT("labelTitleNextParenthese", - "[link [[foo]]:] [string http://example.com/]", - "[string (bar)] hello"); - - MT("labelTitleNextMixed", - "[link [[foo]]:] [string http://example.com/]", - "(bar\" hello"); - - MT("linkWeb", - "[link <http://example.com/>] foo"); - - MT("linkWebDouble", - "[link <http://example.com/>] foo [link <http://example.com/>]"); - - MT("linkEmail", - "[link <user@example.com>] foo"); - - MT("linkEmailDouble", - "[link <user@example.com>] foo [link <user@example.com>]"); - - MT("emAsterisk", - "[em *foo*] bar"); - - MT("emUnderscore", - "[em _foo_] bar"); - - MT("emInWordAsterisk", - "foo[em *bar*]hello"); - - MT("emInWordUnderscore", - "foo[em _bar_]hello"); - - // Per documentation: "...surround an * or _ with spaces, it’ll be - // treated as a literal asterisk or underscore." - - MT("emEscapedBySpaceIn", - "foo [em _bar _ hello_] world"); - - MT("emEscapedBySpaceOut", - "foo _ bar[em _hello_]world"); - - MT("emEscapedByNewline", - "foo", - "_ bar[em _hello_]world"); - - // Unclosed emphasis characters - // Instead of simply marking as EM / STRONG, it would be nice to have an - // incomplete flag for EM and STRONG, that is styled slightly different. - MT("emIncompleteAsterisk", - "foo [em *bar]"); - - MT("emIncompleteUnderscore", - "foo [em _bar]"); - - MT("strongAsterisk", - "[strong **foo**] bar"); - - MT("strongUnderscore", - "[strong __foo__] bar"); - - MT("emStrongAsterisk", - "[em *foo][em&strong **bar*][strong hello**] world"); - - MT("emStrongUnderscore", - "[em _foo][em&strong __bar_][strong hello__] world"); - - // "...same character must be used to open and close an emphasis span."" - MT("emStrongMixed", - "[em _foo][em&strong **bar*hello__ world]"); - - MT("emStrongMixed", - "[em *foo][em&strong __bar_hello** world]"); - - // These characters should be escaped: - // \ backslash - // ` backtick - // * asterisk - // _ underscore - // {} curly braces - // [] square brackets - // () parentheses - // # hash mark - // + plus sign - // - minus sign (hyphen) - // . dot - // ! exclamation mark - - MT("escapeBacktick", - "foo \\`bar\\`"); - - MT("doubleEscapeBacktick", - "foo \\\\[comment `bar\\\\`]"); - - MT("escapeAsterisk", - "foo \\*bar\\*"); - - MT("doubleEscapeAsterisk", - "foo \\\\[em *bar\\\\*]"); - - MT("escapeUnderscore", - "foo \\_bar\\_"); - - MT("doubleEscapeUnderscore", - "foo \\\\[em _bar\\\\_]"); - - MT("escapeHash", - "\\# foo"); - - MT("doubleEscapeHash", - "\\\\# foo"); - - MT("escapeNewline", - "\\", - "[em *foo*]"); - - - // Tests to make sure GFM-specific things aren't getting through - - MT("taskList", - "[variable-2 * [ ]] bar]"); - - MT("fencedCodeBlocks", - "[comment ```]", - "foo", - "[comment ```]"); - - // Tests that require XML mode - - MT("xmlMode", - "[tag&bracket <][tag div][tag&bracket >]", - "*foo*", - "[tag&bracket <][tag http://github.com][tag&bracket />]", - "[tag&bracket </][tag div][tag&bracket >]", - "[link <http://github.com/>]"); - - MT("xmlModeWithMarkdownInside", - "[tag&bracket <][tag div] [attribute markdown]=[string 1][tag&bracket >]", - "[em *foo*]", - "[link <http://github.com/>]", - "[tag </div>]", - "[link <http://github.com/>]", - "[tag&bracket <][tag div][tag&bracket >]", - "[tag&bracket </][tag div][tag&bracket >]"); - -})(); diff --git a/assets/js/plugins/codemirror/mode/meta.js b/assets/js/plugins/codemirror/mode/meta.js deleted file mode 100644 index cee33e54..00000000 --- a/assets/js/plugins/codemirror/mode/meta.js +++ /dev/null @@ -1,144 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.modeInfo = [ - {name: "APL", mime: "text/apl", mode: "apl", ext: ["dyalog", "apl"]}, - {name: "Asterisk", mime: "text/x-asterisk", mode: "asterisk"}, - {name: "C", mime: "text/x-csrc", mode: "clike", ext: ["c", "h"]}, - {name: "C++", mime: "text/x-c++src", mode: "clike", ext: ["cpp", "c++", "hpp", "h++"]}, - {name: "Cobol", mime: "text/x-cobol", mode: "cobol", ext: ["cob", "cpy"]}, - {name: "C#", mime: "text/x-csharp", mode: "clike", ext: ["cs"]}, - {name: "Clojure", mime: "text/x-clojure", mode: "clojure", ext: ["clj"]}, - {name: "CoffeeScript", mime: "text/x-coffeescript", mode: "coffeescript", ext: ["coffee"]}, - {name: "Common Lisp", mime: "text/x-common-lisp", mode: "commonlisp", ext: ["cl", "lisp", "el"]}, - {name: "Cypher", mime: "application/x-cypher-query", mode: "cypher"}, - {name: "Cython", mime: "text/x-cython", mode: "python", ext: ["pyx", "pxd", "pxi"]}, - {name: "CSS", mime: "text/css", mode: "css", ext: ["css"]}, - {name: "CQL", mime: "text/x-cassandra", mode: "sql", ext: ["cql"]}, - {name: "D", mime: "text/x-d", mode: "d", ext: ["d"]}, - {name: "diff", mime: "text/x-diff", mode: "diff", ext: ["diff", "patch"]}, - {name: "DTD", mime: "application/xml-dtd", mode: "dtd", ext: ["dtd"]}, - {name: "Dylan", mime: "text/x-dylan", mode: "dylan", ext: ["dylan", "dyl", "intr"]}, - {name: "ECL", mime: "text/x-ecl", mode: "ecl", ext: ["ecl"]}, - {name: "Eiffel", mime: "text/x-eiffel", mode: "eiffel", ext: ["e"]}, - {name: "Embedded Javascript", mime: "application/x-ejs", mode: "htmlembedded", ext: ["ejs"]}, - {name: "Erlang", mime: "text/x-erlang", mode: "erlang", ext: ["erl"]}, - {name: "Fortran", mime: "text/x-fortran", mode: "fortran", ext: ["f", "for", "f77", "f90"]}, - {name: "F#", mime: "text/x-fsharp", mode: "mllike", ext: ["fs"]}, - {name: "Gas", mime: "text/x-gas", mode: "gas", ext: ["s"]}, - {name: "Gherkin", mime: "text/x-feature", mode: "gherkin", ext: ["feature"]}, - {name: "GitHub Flavored Markdown", mime: "text/x-gfm", mode: "gfm"}, - {name: "Go", mime: "text/x-go", mode: "go", ext: ["go"]}, - {name: "Groovy", mime: "text/x-groovy", mode: "groovy", ext: ["groovy"]}, - {name: "HAML", mime: "text/x-haml", mode: "haml", ext: ["haml"]}, - {name: "Haskell", mime: "text/x-haskell", mode: "haskell", ext: ["hs"]}, - {name: "Haxe", mime: "text/x-haxe", mode: "haxe", ext: ["hx"]}, - {name: "HXML", mime: "text/x-hxml", mode: "haxe", ext: ["hxml"]}, - {name: "ASP.NET", mime: "application/x-aspx", mode: "htmlembedded", ext: ["aspx"]}, - {name: "HTML", mime: "text/html", mode: "htmlmixed", ext: ["html", "htm"]}, - {name: "HTTP", mime: "message/http", mode: "http"}, - {name: "Jade", mime: "text/x-jade", mode: "jade", ext: ["jade"]}, - {name: "Java", mime: "text/x-java", mode: "clike", ext: ["java"]}, - {name: "Java Server Pages", mime: "application/x-jsp", mode: "htmlembedded", ext: ["jsp"]}, - {name: "JavaScript", mimes: ["text/javascript", "text/ecmascript", "application/javascript", "application/x-javascript", "application/ecmascript"], - mode: "javascript", ext: ["js"]}, - {name: "JSON", mimes: ["application/json", "application/x-json"], mode: "javascript", ext: ["json", "map"]}, - {name: "JSON-LD", mime: "application/ld+json", mode: "javascript"}, - {name: "Jinja2", mime: "null", mode: "jinja2"}, - {name: "Julia", mime: "text/x-julia", mode: "julia", ext: ["jl"]}, - {name: "Kotlin", mime: "text/x-kotlin", mode: "kotlin", ext: ["kt"]}, - {name: "LESS", mime: "text/x-less", mode: "css", ext: ["less"]}, - {name: "LiveScript", mime: "text/x-livescript", mode: "livescript", ext: ["ls"]}, - {name: "Lua", mime: "text/x-lua", mode: "lua", ext: ["lua"]}, - {name: "Markdown (GitHub-flavour)", mime: "text/x-markdown", mode: "markdown", ext: ["markdown", "md", "mkd"]}, - {name: "mIRC", mime: "text/mirc", mode: "mirc"}, - {name: "MariaDB SQL", mime: "text/x-mariadb", mode: "sql"}, - {name: "Modelica", mime: "text/x-modelica", mode: "modelica", ext: ["mo"]}, - {name: "MS SQL", mime: "text/x-mssql", mode: "sql"}, - {name: "MySQL", mime: "text/x-mysql", mode: "sql"}, - {name: "Nginx", mime: "text/x-nginx-conf", mode: "nginx"}, - {name: "NTriples", mime: "text/n-triples", mode: "ntriples", ext: ["nt"]}, - {name: "OCaml", mime: "text/x-ocaml", mode: "mllike", ext: ["ml", "mli", "mll", "mly"]}, - {name: "Octave", mime: "text/x-octave", mode: "octave", ext: ["m"]}, - {name: "Pascal", mime: "text/x-pascal", mode: "pascal", ext: ["p", "pas"]}, - {name: "PEG.js", mime: "null", mode: "pegjs"}, - {name: "Perl", mime: "text/x-perl", mode: "perl", ext: ["pl", "pm"]}, - {name: "PHP", mime: "application/x-httpd-php", mode: "php", ext: ["php", "php3", "php4", "php5", "phtml"]}, - {name: "Pig", mime: "text/x-pig", mode: "pig"}, - {name: "Plain Text", mime: "text/plain", mode: "null", ext: ["txt", "text", "conf", "def", "list", "log"]}, - {name: "PLSQL", mime: "text/x-plsql", mode: "sql"}, - {name: "Properties files", mime: "text/x-properties", mode: "properties", ext: ["properties", "ini", "in"]}, - {name: "Python", mime: "text/x-python", mode: "python", ext: ["py", "pyw"]}, - {name: "Puppet", mime: "text/x-puppet", mode: "puppet", ext: ["pp"]}, - {name: "Q", mime: "text/x-q", mode: "q", ext: ["q"]}, - {name: "R", mime: "text/x-rsrc", mode: "r", ext: ["r"]}, - {name: "reStructuredText", mime: "text/x-rst", mode: "rst", ext: ["rst"]}, - {name: "Ruby", mime: "text/x-ruby", mode: "ruby", ext: ["rb"]}, - {name: "Rust", mime: "text/x-rustsrc", mode: "rust", ext: ["rs"]}, - {name: "Sass", mime: "text/x-sass", mode: "sass", ext: ["sass"]}, - {name: "Scala", mime: "text/x-scala", mode: "clike", ext: ["scala"]}, - {name: "Scheme", mime: "text/x-scheme", mode: "scheme", ext: ["scm", "ss"]}, - {name: "SCSS", mime: "text/x-scss", mode: "css", ext: ["scss"]}, - {name: "Shell", mime: "text/x-sh", mode: "shell", ext: ["sh", "ksh", "bash"]}, - {name: "Sieve", mime: "application/sieve", mode: "sieve"}, - {name: "Slim", mimes: ["text/x-slim", "application/x-slim"], mode: "slim"}, - {name: "Smalltalk", mime: "text/x-stsrc", mode: "smalltalk", ext: ["st"]}, - {name: "Smarty", mime: "text/x-smarty", mode: "smarty", ext: ["tpl"]}, - {name: "SmartyMixed", mime: "text/x-smarty", mode: "smartymixed"}, - {name: "Solr", mime: "text/x-solr", mode: "solr"}, - {name: "SPARQL", mime: "application/x-sparql-query", mode: "sparql", ext: ["sparql"]}, - {name: "SQL", mime: "text/x-sql", mode: "sql", ext: ["sql"]}, - {name: "MariaDB", mime: "text/x-mariadb", mode: "sql"}, - {name: "sTeX", mime: "text/x-stex", mode: "stex"}, - {name: "LaTeX", mime: "text/x-latex", mode: "stex", ext: ["text", "ltx"]}, - {name: "SystemVerilog", mime: "text/x-systemverilog", mode: "verilog", ext: ["v"]}, - {name: "Tcl", mime: "text/x-tcl", mode: "tcl", ext: ["tcl"]}, - {name: "Textile", mime: "text/x-textile", mode: "textile"}, - {name: "TiddlyWiki ", mime: "text/x-tiddlywiki", mode: "tiddlywiki"}, - {name: "Tiki wiki", mime: "text/tiki", mode: "tiki"}, - {name: "TOML", mime: "text/x-toml", mode: "toml"}, - {name: "Tornado", mime: "text/x-tornado", mode: "tornado"}, - {name: "Turtle", mime: "text/turtle", mode: "turtle", ext: ["ttl"]}, - {name: "TypeScript", mime: "application/typescript", mode: "javascript", ext: ["ts"]}, - {name: "VB.NET", mime: "text/x-vb", mode: "vb", ext: ["vb"]}, - {name: "VBScript", mime: "text/vbscript", mode: "vbscript"}, - {name: "Velocity", mime: "text/velocity", mode: "velocity", ext: ["vtl"]}, - {name: "Verilog", mime: "text/x-verilog", mode: "verilog", ext: ["v"]}, - {name: "XML", mimes: ["application/xml", "text/xml"], mode: "xml", ext: ["xml", "xsl", "xsd"]}, - {name: "XQuery", mime: "application/xquery", mode: "xquery", ext: ["xy", "xquery"]}, - {name: "YAML", mime: "text/x-yaml", mode: "yaml", ext: ["yaml"]}, - {name: "Z80", mime: "text/x-z80", mode: "z80", ext: ["z80"]} - ]; - // Ensure all modes have a mime property for backwards compatibility - for (var i = 0; i < CodeMirror.modeInfo.length; i++) { - var info = CodeMirror.modeInfo[i]; - if (info.mimes) info.mime = info.mimes[0]; - } - - CodeMirror.findModeByMIME = function(mime) { - for (var i = 0; i < CodeMirror.modeInfo.length; i++) { - var info = CodeMirror.modeInfo[i]; - if (info.mime == mime) return info; - if (info.mimes) for (var j = 0; j < info.mimes.length; j++) - if (info.mimes[j] == mime) return info; - } - }; - - CodeMirror.findModeByExtension = function(ext) { - for (var i = 0; i < CodeMirror.modeInfo.length; i++) { - var info = CodeMirror.modeInfo[i]; - if (info.ext) for (var j = 0; j < info.ext.length; j++) - if (info.ext[j] == ext) return info; - } - }; -}); diff --git a/assets/js/plugins/codemirror/mode/mirc/index.html b/assets/js/plugins/codemirror/mode/mirc/index.html deleted file mode 100644 index fd2f34e4..00000000 --- a/assets/js/plugins/codemirror/mode/mirc/index.html +++ /dev/null @@ -1,160 +0,0 @@ -<!doctype html> - -<title>CodeMirror: mIRC mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<link rel="stylesheet" href="../../theme/twilight.css"> -<script src="../../lib/codemirror.js"></script> -<script src="mirc.js"></script> -<style>.CodeMirror {border: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">mIRC</a> - </ul> -</div> - -<article> -<h2>mIRC mode</h2> -<form><textarea id="code" name="code"> -;AKA Nick Tracker by Ford_Lawnmower irc.GeekShed.net #Script-Help -;*****************************************************************************; -;**Start Setup -;Change JoinDisplay, below, for On Join AKA Display. On = 1 - Off = 0 -alias -l JoinDisplay { return 1 } -;Change MaxNicks, below, to the number of nicknames you want to store for each hostmask. I wouldn't go over 400 with this ;/ -alias -l MaxNicks { return 20 } -;Change AKALogo, below, To the text you want displayed before each AKA result. -alias -l AKALogo { return 06 05A06K07A 06 } -;**End Setup -;*****************************************************************************; -On *:Join:#: { - if ($nick == $me) { .timer 1 1 ialupdateCheck $chan } - NickNamesAdd $nick $+($network,$wildsite) - if ($JoinDisplay) { .timerNickNames $+ $nick 1 2 NickNames.display $nick $chan $network $wildsite } -} -on *:Nick: { NickNamesAdd $newnick $+($network,$wildsite) $nick } -alias -l NickNames.display { - if ($gettok($hget(NickNames,$+($3,$4)),0,126) > 1) { - echo -g $2 $AKALogo $+(09,$1) $AKALogo 07 $mid($replace($hget(NickNames,$+($3,$4)),$chr(126),$chr(44)),2,-1) - } -} -alias -l NickNamesAdd { - if ($hget(NickNames,$2)) { - if (!$regex($hget(NickNames,$2),/~\Q $+ $replacecs($1,\E,\E\\E\Q) $+ \E~/i)) { - if ($gettok($hget(NickNames,$2),0,126) <= $MaxNicks) { - hadd NickNames $2 $+($hget(NickNames,$2),$1,~) - } - else { - hadd NickNames $2 $+($mid($hget(NickNames,$2),$pos($hget(NickNames,$2),~,2)),$1,~) - } - } - } - else { - hadd -m NickNames $2 $+(~,$1,~,$iif($3,$+($3,~))) - } -} -alias -l Fix.All.MindUser { - var %Fix.Count = $hfind(NickNames,/[^~]+[0-9]{4}~/,0,r).data - while (%Fix.Count) { - if ($Fix.MindUser($hget(NickNames,$hfind(NickNames,/[^~]+[0-9]{4}~/,%Fix.Count,r).data))) { - echo -ag Record %Fix.Count - $v1 - Was Cleaned - hadd NickNames $hfind(NickNames,/[^~]+[0-9]{4}~/,%Fix.Count,r).data $v1 - } - dec %Fix.Count - } -} -alias -l Fix.MindUser { return $regsubex($1,/[^~]+[0-9]{4}~/g,$null) } -menu nicklist,query { - - - .AKA - ..Check $$1: { - if ($gettok($hget(NickNames,$+($network,$address($1,2))),0,126) > 1) { - NickNames.display $1 $active $network $address($1,2) - } - else { echo -ag $AKALogo $+(09,$1) 07has not been known by any other nicknames while I have been watching. } - } - ..Cleanup $$1:hadd NickNames $+($network,$address($1,2)) $fix.minduser($hget(NickNames,$+($network,$address($1,2)))) - ..Clear $$1:hadd NickNames $+($network,$address($1,2)) $+(~,$1,~) - ..AKA Search Dialog:dialog $iif($dialog(AKA_Search),-v,-m) AKA_Search AKA_Search - - -} -menu status,channel { - - - .AKA - ..AKA Search Dialog:dialog $iif($dialog(AKA_Search),-v,-m) AKA_Search AKA_Search - ..Clean All Records:Fix.All.Minduser - - -} -dialog AKA_Search { - title "AKA Search Engine" - size -1 -1 206 221 - option dbu - edit "", 1, 8 5 149 10, autohs - button "Search", 2, 163 4 32 12 - radio "Search HostMask", 4, 61 22 55 10 - radio "Search Nicknames", 5, 123 22 56 10 - list 6, 8 38 190 169, sort extsel vsbar - button "Check Selected", 7, 67 206 40 12 - button "Close", 8, 160 206 38 12, cancel - box "Search Type", 3, 11 17 183 18 - button "Copy to Clipboard", 9, 111 206 46 12 -} -On *:Dialog:Aka_Search:init:*: { did -c $dname 5 } -On *:Dialog:Aka_Search:Sclick:2,7,9: { - if ($did == 2) && ($did($dname,1)) { - did -r $dname 6 - var %search $+(*,$v1,*), %type $iif($did($dname,5).state,data,item), %matches = $hfind(NickNames,%search,0,w). [ $+ [ %type ] ] - while (%matches) { - did -a $dname 6 $hfind(NickNames,%search,%matches,w). [ $+ [ %type ] ] - dec %matches - } - did -c $dname 6 1 - } - elseif ($did == 7) && ($did($dname,6).seltext) { echo -ga $AKALogo 07 $mid($replace($hget(NickNames,$v1),$chr(126),$chr(44)),2,-1) } - elseif ($did == 9) && ($did($dname,6).seltext) { clipboard $mid($v1,$pos($v1,*,1)) } -} -On *:Start:{ - if (!$hget(NickNames)) { hmake NickNames 10 } - if ($isfile(NickNames.hsh)) { hload NickNames NickNames.hsh } -} -On *:Exit: { if ($hget(NickNames)) { hsave NickNames NickNames.hsh } } -On *:Disconnect: { if ($hget(NickNames)) { hsave NickNames NickNames.hsh } } -On *:Unload: { hfree NickNames } -alias -l ialupdateCheck { - inc -z $+(%,ialupdateCheck,$network) $calc($nick($1,0) / 4) - ;If your ial is already being updated on join .who $1 out. - ;If you are using /names to update ial you will still need this line. - .who $1 -} -Raw 352:*: { - if ($($+(%,ialupdateCheck,$network),2)) haltdef - NickNamesAdd $6 $+($network,$address($6,2)) -} -Raw 315:*: { - if ($($+(%,ialupdateCheck,$network),2)) haltdef -} - -</textarea></form> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - theme: "twilight", - lineNumbers: true, - matchBrackets: true, - indentUnit: 4, - mode: "text/mirc" - }); - </script> - - <p><strong>MIME types defined:</strong> <code>text/mirc</code>.</p> - - </article> diff --git a/assets/js/plugins/codemirror/mode/mirc/mirc.js b/assets/js/plugins/codemirror/mode/mirc/mirc.js deleted file mode 100644 index f0d5c6ad..00000000 --- a/assets/js/plugins/codemirror/mode/mirc/mirc.js +++ /dev/null @@ -1,193 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -//mIRC mode by Ford_Lawnmower :: Based on Velocity mode by Steve O'Hara - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMIME("text/mirc", "mirc"); -CodeMirror.defineMode("mirc", function() { - function parseWords(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - var specials = parseWords("$! $$ $& $? $+ $abook $abs $active $activecid " + - "$activewid $address $addtok $agent $agentname $agentstat $agentver " + - "$alias $and $anick $ansi2mirc $aop $appactive $appstate $asc $asctime " + - "$asin $atan $avoice $away $awaymsg $awaytime $banmask $base $bfind " + - "$binoff $biton $bnick $bvar $bytes $calc $cb $cd $ceil $chan $chanmodes " + - "$chantypes $chat $chr $cid $clevel $click $cmdbox $cmdline $cnick $color " + - "$com $comcall $comchan $comerr $compact $compress $comval $cos $count " + - "$cr $crc $creq $crlf $ctime $ctimer $ctrlenter $date $day $daylight " + - "$dbuh $dbuw $dccignore $dccport $dde $ddename $debug $decode $decompress " + - "$deltok $devent $dialog $did $didreg $didtok $didwm $disk $dlevel $dll " + - "$dllcall $dname $dns $duration $ebeeps $editbox $emailaddr $encode $error " + - "$eval $event $exist $feof $ferr $fgetc $file $filename $filtered $finddir " + - "$finddirn $findfile $findfilen $findtok $fline $floor $fopen $fread $fserve " + - "$fulladdress $fulldate $fullname $fullscreen $get $getdir $getdot $gettok $gmt " + - "$group $halted $hash $height $hfind $hget $highlight $hnick $hotline " + - "$hotlinepos $ial $ialchan $ibl $idle $iel $ifmatch $ignore $iif $iil " + - "$inelipse $ini $inmidi $inpaste $inpoly $input $inrect $inroundrect " + - "$insong $instok $int $inwave $ip $isalias $isbit $isdde $isdir $isfile " + - "$isid $islower $istok $isupper $keychar $keyrpt $keyval $knick $lactive " + - "$lactivecid $lactivewid $left $len $level $lf $line $lines $link $lock " + - "$lock $locked $log $logstamp $logstampfmt $longfn $longip $lower $ltimer " + - "$maddress $mask $matchkey $matchtok $md5 $me $menu $menubar $menucontext " + - "$menutype $mid $middir $mircdir $mircexe $mircini $mklogfn $mnick $mode " + - "$modefirst $modelast $modespl $mouse $msfile $network $newnick $nick $nofile " + - "$nopath $noqt $not $notags $notify $null $numeric $numok $oline $onpoly " + - "$opnick $or $ord $os $passivedcc $pic $play $pnick $port $portable $portfree " + - "$pos $prefix $prop $protect $puttok $qt $query $rand $r $rawmsg $read $readomo " + - "$readn $regex $regml $regsub $regsubex $remove $remtok $replace $replacex " + - "$reptok $result $rgb $right $round $scid $scon $script $scriptdir $scriptline " + - "$sdir $send $server $serverip $sfile $sha1 $shortfn $show $signal $sin " + - "$site $sline $snick $snicks $snotify $sock $sockbr $sockerr $sockname " + - "$sorttok $sound $sqrt $ssl $sreq $sslready $status $strip $str $stripped " + - "$syle $submenu $switchbar $tan $target $ticks $time $timer $timestamp " + - "$timestampfmt $timezone $tip $titlebar $toolbar $treebar $trust $ulevel " + - "$ulist $upper $uptime $url $usermode $v1 $v2 $var $vcmd $vcmdstat $vcmdver " + - "$version $vnick $vol $wid $width $wildsite $wildtok $window $wrap $xor"); - var keywords = parseWords("abook ajinvite alias aline ame amsg anick aop auser autojoin avoice " + - "away background ban bcopy beep bread break breplace bset btrunc bunset bwrite " + - "channel clear clearall cline clipboard close cnick color comclose comopen " + - "comreg continue copy creq ctcpreply ctcps dcc dccserver dde ddeserver " + - "debug dec describe dialog did didtok disable disconnect dlevel dline dll " + - "dns dqwindow drawcopy drawdot drawfill drawline drawpic drawrect drawreplace " + - "drawrot drawsave drawscroll drawtext ebeeps echo editbox emailaddr enable " + - "events exit fclose filter findtext finger firewall flash flist flood flush " + - "flushini font fopen fseek fsend fserve fullname fwrite ghide gload gmove " + - "gopts goto gplay gpoint gqreq groups gshow gsize gstop gtalk gunload hadd " + - "halt haltdef hdec hdel help hfree hinc hload hmake hop hsave ial ialclear " + - "ialmark identd if ignore iline inc invite iuser join kick linesep links list " + - "load loadbuf localinfo log mdi me menubar mkdir mnick mode msg nick noop notice " + - "notify omsg onotice part partall pdcc perform play playctrl pop protect pvoice " + - "qme qmsg query queryn quit raw reload remini remote remove rename renwin " + - "reseterror resetidle return rlevel rline rmdir run ruser save savebuf saveini " + - "say scid scon server set showmirc signam sline sockaccept sockclose socklist " + - "socklisten sockmark sockopen sockpause sockread sockrename sockudp sockwrite " + - "sound speak splay sreq strip switchbar timer timestamp titlebar tnick tokenize " + - "toolbar topic tray treebar ulist unload unset unsetall updatenl url uwho " + - "var vcadd vcmd vcrem vol while whois window winhelp write writeint if isalnum " + - "isalpha isaop isavoice isban ischan ishop isignore isin isincs isletter islower " + - "isnotify isnum ison isop isprotect isreg isupper isvoice iswm iswmcs " + - "elseif else goto menu nicklist status title icon size option text edit " + - "button check radio box scroll list combo link tab item"); - var functions = parseWords("if elseif else and not or eq ne in ni for foreach while switch"); - var isOperatorChar = /[+\-*&%=<>!?^\/\|]/; - function chain(stream, state, f) { - state.tokenize = f; - return f(stream, state); - } - function tokenBase(stream, state) { - var beforeParams = state.beforeParams; - state.beforeParams = false; - var ch = stream.next(); - if (/[\[\]{}\(\),\.]/.test(ch)) { - if (ch == "(" && beforeParams) state.inParams = true; - else if (ch == ")") state.inParams = false; - return null; - } - else if (/\d/.test(ch)) { - stream.eatWhile(/[\w\.]/); - return "number"; - } - else if (ch == "\\") { - stream.eat("\\"); - stream.eat(/./); - return "number"; - } - else if (ch == "/" && stream.eat("*")) { - return chain(stream, state, tokenComment); - } - else if (ch == ";" && stream.match(/ *\( *\(/)) { - return chain(stream, state, tokenUnparsed); - } - else if (ch == ";" && !state.inParams) { - stream.skipToEnd(); - return "comment"; - } - else if (ch == '"') { - stream.eat(/"/); - return "keyword"; - } - else if (ch == "$") { - stream.eatWhile(/[$_a-z0-9A-Z\.:]/); - if (specials && specials.propertyIsEnumerable(stream.current().toLowerCase())) { - return "keyword"; - } - else { - state.beforeParams = true; - return "builtin"; - } - } - else if (ch == "%") { - stream.eatWhile(/[^,^\s^\(^\)]/); - state.beforeParams = true; - return "string"; - } - else if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return "operator"; - } - else { - stream.eatWhile(/[\w\$_{}]/); - var word = stream.current().toLowerCase(); - if (keywords && keywords.propertyIsEnumerable(word)) - return "keyword"; - if (functions && functions.propertyIsEnumerable(word)) { - state.beforeParams = true; - return "keyword"; - } - return null; - } - } - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - function tokenUnparsed(stream, state) { - var maybeEnd = 0, ch; - while (ch = stream.next()) { - if (ch == ";" && maybeEnd == 2) { - state.tokenize = tokenBase; - break; - } - if (ch == ")") - maybeEnd++; - else if (ch != " ") - maybeEnd = 0; - } - return "meta"; - } - return { - startState: function() { - return { - tokenize: tokenBase, - beforeParams: false, - inParams: false - }; - }, - token: function(stream, state) { - if (stream.eatSpace()) return null; - return state.tokenize(stream, state); - } - }; -}); - -}); diff --git a/assets/js/plugins/codemirror/mode/mllike/index.html b/assets/js/plugins/codemirror/mode/mllike/index.html deleted file mode 100644 index 5923af8f..00000000 --- a/assets/js/plugins/codemirror/mode/mllike/index.html +++ /dev/null @@ -1,179 +0,0 @@ -<!doctype html> - -<title>CodeMirror: ML-like mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel=stylesheet href=../../lib/codemirror.css> -<script src=../../lib/codemirror.js></script> -<script src=../../addon/edit/matchbrackets.js></script> -<script src=mllike.js></script> -<style type=text/css> - .CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;} -</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">ML-like</a> - </ul> -</div> - -<article> -<h2>OCaml mode</h2> - - -<textarea id="ocamlCode"> -(* Summing a list of integers *) -let rec sum xs = - match xs with - | [] -&gt; 0 - | x :: xs' -&gt; x + sum xs' - -(* Quicksort *) -let rec qsort = function - | [] -&gt; [] - | pivot :: rest -&gt; - let is_less x = x &lt; pivot in - let left, right = List.partition is_less rest in - qsort left @ [pivot] @ qsort right - -(* Fibonacci Sequence *) -let rec fib_aux n a b = - match n with - | 0 -&gt; a - | _ -&gt; fib_aux (n - 1) (a + b) a -let fib n = fib_aux n 0 1 - -(* Birthday paradox *) -let year_size = 365. - -let rec birthday_paradox prob people = - let prob' = (year_size -. float people) /. year_size *. prob in - if prob' &lt; 0.5 then - Printf.printf "answer = %d\n" (people+1) - else - birthday_paradox prob' (people+1) ;; - -birthday_paradox 1.0 1 - -(* Church numerals *) -let zero f x = x -let succ n f x = f (n f x) -let one = succ zero -let two = succ (succ zero) -let add n1 n2 f x = n1 f (n2 f x) -let to_string n = n (fun k -&gt; "S" ^ k) "0" -let _ = to_string (add (succ two) two) - -(* Elementary functions *) -let square x = x * x;; -let rec fact x = - if x &lt;= 1 then 1 else x * fact (x - 1);; - -(* Automatic memory management *) -let l = 1 :: 2 :: 3 :: [];; -[1; 2; 3];; -5 :: l;; - -(* Polymorphism: sorting lists *) -let rec sort = function - | [] -&gt; [] - | x :: l -&gt; insert x (sort l) - -and insert elem = function - | [] -&gt; [elem] - | x :: l -&gt; - if elem &lt; x then elem :: x :: l else x :: insert elem l;; - -(* Imperative features *) -let add_polynom p1 p2 = - let n1 = Array.length p1 - and n2 = Array.length p2 in - let result = Array.create (max n1 n2) 0 in - for i = 0 to n1 - 1 do result.(i) &lt;- p1.(i) done; - for i = 0 to n2 - 1 do result.(i) &lt;- result.(i) + p2.(i) done; - result;; -add_polynom [| 1; 2 |] [| 1; 2; 3 |];; - -(* We may redefine fact using a reference cell and a for loop *) -let fact n = - let result = ref 1 in - for i = 2 to n do - result := i * !result - done; - !result;; -fact 5;; - -(* Triangle (graphics) *) -let () = - ignore( Glut.init Sys.argv ); - Glut.initDisplayMode ~double_buffer:true (); - ignore (Glut.createWindow ~title:"OpenGL Demo"); - let angle t = 10. *. t *. t in - let render () = - GlClear.clear [ `color ]; - GlMat.load_identity (); - GlMat.rotate ~angle: (angle (Sys.time ())) ~z:1. (); - GlDraw.begins `triangles; - List.iter GlDraw.vertex2 [-1., -1.; 0., 1.; 1., -1.]; - GlDraw.ends (); - Glut.swapBuffers () in - GlMat.mode `modelview; - Glut.displayFunc ~cb:render; - Glut.idleFunc ~cb:(Some Glut.postRedisplay); - Glut.mainLoop () - -(* A Hundred Lines of Caml - http://caml.inria.fr/about/taste.en.html *) -(* OCaml page on Wikipedia - http://en.wikipedia.org/wiki/OCaml *) -</textarea> - -<h2>F# mode</h2> -<textarea id="fsharpCode"> -module CodeMirror.FSharp - -let rec fib = function - | 0 -> 0 - | 1 -> 1 - | n -> fib (n - 1) + fib (n - 2) - -type Point = - { - x : int - y : int - } - -type Color = - | Red - | Green - | Blue - -[0 .. 10] -|> List.map ((+) 2) -|> List.fold (fun x y -> x + y) 0 -|> printf "%i" -</textarea> - - -<script> - var ocamlEditor = CodeMirror.fromTextArea(document.getElementById('ocamlCode'), { - mode: 'text/x-ocaml', - lineNumbers: true, - matchBrackets: true - }); - - var fsharpEditor = CodeMirror.fromTextArea(document.getElementById('fsharpCode'), { - mode: 'text/x-fsharp', - lineNumbers: true, - matchBrackets: true - }); -</script> - -<p><strong>MIME types defined:</strong> <code>text/x-ocaml</code> (OCaml) and <code>text/x-fsharp</code> (F#).</p> -</article> diff --git a/assets/js/plugins/codemirror/mode/mllike/mllike.js b/assets/js/plugins/codemirror/mode/mllike/mllike.js deleted file mode 100644 index 04ab1c98..00000000 --- a/assets/js/plugins/codemirror/mode/mllike/mllike.js +++ /dev/null @@ -1,205 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode('mllike', function(_config, parserConfig) { - var words = { - 'let': 'keyword', - 'rec': 'keyword', - 'in': 'keyword', - 'of': 'keyword', - 'and': 'keyword', - 'if': 'keyword', - 'then': 'keyword', - 'else': 'keyword', - 'for': 'keyword', - 'to': 'keyword', - 'while': 'keyword', - 'do': 'keyword', - 'done': 'keyword', - 'fun': 'keyword', - 'function': 'keyword', - 'val': 'keyword', - 'type': 'keyword', - 'mutable': 'keyword', - 'match': 'keyword', - 'with': 'keyword', - 'try': 'keyword', - 'open': 'builtin', - 'ignore': 'builtin', - 'begin': 'keyword', - 'end': 'keyword' - }; - - var extraWords = parserConfig.extraWords || {}; - for (var prop in extraWords) { - if (extraWords.hasOwnProperty(prop)) { - words[prop] = parserConfig.extraWords[prop]; - } - } - - function tokenBase(stream, state) { - var ch = stream.next(); - - if (ch === '"') { - state.tokenize = tokenString; - return state.tokenize(stream, state); - } - if (ch === '(') { - if (stream.eat('*')) { - state.commentLevel++; - state.tokenize = tokenComment; - return state.tokenize(stream, state); - } - } - if (ch === '~') { - stream.eatWhile(/\w/); - return 'variable-2'; - } - if (ch === '`') { - stream.eatWhile(/\w/); - return 'quote'; - } - if (ch === '/' && parserConfig.slashComments && stream.eat('/')) { - stream.skipToEnd(); - return 'comment'; - } - if (/\d/.test(ch)) { - stream.eatWhile(/[\d]/); - if (stream.eat('.')) { - stream.eatWhile(/[\d]/); - } - return 'number'; - } - if ( /[+\-*&%=<>!?|]/.test(ch)) { - return 'operator'; - } - stream.eatWhile(/\w/); - var cur = stream.current(); - return words[cur] || 'variable'; - } - - function tokenString(stream, state) { - var next, end = false, escaped = false; - while ((next = stream.next()) != null) { - if (next === '"' && !escaped) { - end = true; - break; - } - escaped = !escaped && next === '\\'; - } - if (end && !escaped) { - state.tokenize = tokenBase; - } - return 'string'; - }; - - function tokenComment(stream, state) { - var prev, next; - while(state.commentLevel > 0 && (next = stream.next()) != null) { - if (prev === '(' && next === '*') state.commentLevel++; - if (prev === '*' && next === ')') state.commentLevel--; - prev = next; - } - if (state.commentLevel <= 0) { - state.tokenize = tokenBase; - } - return 'comment'; - } - - return { - startState: function() {return {tokenize: tokenBase, commentLevel: 0};}, - token: function(stream, state) { - if (stream.eatSpace()) return null; - return state.tokenize(stream, state); - }, - - blockCommentStart: "(*", - blockCommentEnd: "*)", - lineComment: parserConfig.slashComments ? "//" : null - }; -}); - -CodeMirror.defineMIME('text/x-ocaml', { - name: 'mllike', - extraWords: { - 'succ': 'keyword', - 'trace': 'builtin', - 'exit': 'builtin', - 'print_string': 'builtin', - 'print_endline': 'builtin', - 'true': 'atom', - 'false': 'atom', - 'raise': 'keyword' - } -}); - -CodeMirror.defineMIME('text/x-fsharp', { - name: 'mllike', - extraWords: { - 'abstract': 'keyword', - 'as': 'keyword', - 'assert': 'keyword', - 'base': 'keyword', - 'class': 'keyword', - 'default': 'keyword', - 'delegate': 'keyword', - 'downcast': 'keyword', - 'downto': 'keyword', - 'elif': 'keyword', - 'exception': 'keyword', - 'extern': 'keyword', - 'finally': 'keyword', - 'global': 'keyword', - 'inherit': 'keyword', - 'inline': 'keyword', - 'interface': 'keyword', - 'internal': 'keyword', - 'lazy': 'keyword', - 'let!': 'keyword', - 'member' : 'keyword', - 'module': 'keyword', - 'namespace': 'keyword', - 'new': 'keyword', - 'null': 'keyword', - 'override': 'keyword', - 'private': 'keyword', - 'public': 'keyword', - 'return': 'keyword', - 'return!': 'keyword', - 'select': 'keyword', - 'static': 'keyword', - 'struct': 'keyword', - 'upcast': 'keyword', - 'use': 'keyword', - 'use!': 'keyword', - 'val': 'keyword', - 'when': 'keyword', - 'yield': 'keyword', - 'yield!': 'keyword', - - 'List': 'builtin', - 'Seq': 'builtin', - 'Map': 'builtin', - 'Set': 'builtin', - 'int': 'builtin', - 'string': 'builtin', - 'raise': 'builtin', - 'failwith': 'builtin', - 'not': 'builtin', - 'true': 'builtin', - 'false': 'builtin' - }, - slashComments: true -}); - -}); diff --git a/assets/js/plugins/codemirror/mode/modelica/index.html b/assets/js/plugins/codemirror/mode/modelica/index.html deleted file mode 100644 index 408c3b17..00000000 --- a/assets/js/plugins/codemirror/mode/modelica/index.html +++ /dev/null @@ -1,67 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Modelica mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="../../addon/edit/matchbrackets.js"></script> -<link rel="stylesheet" href="../../addon/hint/show-hint.css"> -<script src="../../addon/hint/show-hint.js"></script> -<script src="modelica.js"></script> -<style>.CodeMirror {border: 2px inset #dee;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Modelica</a> - </ul> -</div> - -<article> -<h2>Modelica mode</h2> - -<div><textarea id="modelica"> -model BouncingBall - parameter Real e = 0.7; - parameter Real g = 9.81; - Real h(start=1); - Real v; - Boolean flying(start=true); - Boolean impact; - Real v_new; -equation - impact = h <= 0.0; - der(v) = if flying then -g else 0; - der(h) = v; - when {h <= 0.0 and v <= 0.0, impact} then - v_new = if edge(impact) then -e*pre(v) else 0; - flying = v_new > 0; - reinit(v, v_new); - end when; - annotation (uses(Modelica(version="3.2"))); -end BouncingBall; -</textarea></div> - - <script> - var modelicaEditor = CodeMirror.fromTextArea(document.getElementById("modelica"), { - lineNumbers: true, - matchBrackets: true, - mode: "text/x-modelica" - }); - var mac = CodeMirror.keyMap.default == CodeMirror.keyMap.macDefault; - CodeMirror.keyMap.default[(mac ? "Cmd" : "Ctrl") + "-Space"] = "autocomplete"; - </script> - - <p>Simple mode that tries to handle Modelica as well as it can.</p> - - <p><strong>MIME types defined:</strong> <code>text/x-modelica</code> - (Modlica code).</p> -</article> diff --git a/assets/js/plugins/codemirror/mode/modelica/modelica.js b/assets/js/plugins/codemirror/mode/modelica/modelica.js deleted file mode 100644 index 77ec7a3c..00000000 --- a/assets/js/plugins/codemirror/mode/modelica/modelica.js +++ /dev/null @@ -1,245 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// Modelica support for CodeMirror, copyright (c) by Lennart Ochel - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -}) - -(function(CodeMirror) { - "use strict"; - - CodeMirror.defineMode("modelica", function(config, parserConfig) { - - var indentUnit = config.indentUnit; - var keywords = parserConfig.keywords || {}; - var builtin = parserConfig.builtin || {}; - var atoms = parserConfig.atoms || {}; - - var isSingleOperatorChar = /[;=\(:\),{}.*<>+\-\/^\[\]]/; - var isDoubleOperatorChar = /(:=|<=|>=|==|<>|\.\+|\.\-|\.\*|\.\/|\.\^)/; - var isDigit = /[0-9]/; - var isNonDigit = /[_a-zA-Z]/; - - function tokenLineComment(stream, state) { - stream.skipToEnd(); - state.tokenize = null; - return "comment"; - } - - function tokenBlockComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (maybeEnd && ch == "/") { - state.tokenize = null; - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - - function tokenString(stream, state) { - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == '"' && !escaped) { - state.tokenize = null; - state.sol = false; - break; - } - escaped = !escaped && ch == "\\"; - } - - return "string"; - } - - function tokenIdent(stream, state) { - stream.eatWhile(isDigit); - while (stream.eat(isDigit) || stream.eat(isNonDigit)) { } - - - var cur = stream.current(); - - if(state.sol && (cur == "package" || cur == "model" || cur == "when" || cur == "connector")) state.level++; - else if(state.sol && cur == "end" && state.level > 0) state.level--; - - state.tokenize = null; - state.sol = false; - - if (keywords.propertyIsEnumerable(cur)) return "keyword"; - else if (builtin.propertyIsEnumerable(cur)) return "builtin"; - else if (atoms.propertyIsEnumerable(cur)) return "atom"; - else return "variable"; - } - - function tokenQIdent(stream, state) { - while (stream.eat(/[^']/)) { } - - state.tokenize = null; - state.sol = false; - - if(stream.eat("'")) - return "variable"; - else - return "error"; - } - - function tokenUnsignedNuber(stream, state) { - stream.eatWhile(isDigit); - if (stream.eat('.')) { - stream.eatWhile(isDigit); - } - if (stream.eat('e') || stream.eat('E')) { - if (!stream.eat('-')) - stream.eat('+'); - stream.eatWhile(isDigit); - } - - state.tokenize = null; - state.sol = false; - return "number"; - } - - // Interface - return { - startState: function() { - return { - tokenize: null, - level: 0, - sol: true - }; - }, - - token: function(stream, state) { - if(state.tokenize != null) { - return state.tokenize(stream, state); - } - - if(stream.sol()) { - state.sol = true; - } - - // WHITESPACE - if(stream.eatSpace()) { - state.tokenize = null; - return null; - } - - var ch = stream.next(); - - // LINECOMMENT - if(ch == '/' && stream.eat('/')) { - state.tokenize = tokenLineComment; - } - // BLOCKCOMMENT - else if(ch == '/' && stream.eat('*')) { - state.tokenize = tokenBlockComment; - } - // TWO SYMBOL TOKENS - else if(isDoubleOperatorChar.test(ch+stream.peek())) { - stream.next(); - state.tokenize = null; - return "operator"; - } - // SINGLE SYMBOL TOKENS - else if(isSingleOperatorChar.test(ch)) { - state.tokenize = null; - return "operator"; - } - // IDENT - else if(isNonDigit.test(ch)) { - state.tokenize = tokenIdent; - } - // Q-IDENT - else if(ch == "'" && stream.peek() && stream.peek() != "'") { - state.tokenize = tokenQIdent; - } - // STRING - else if(ch == '"') { - state.tokenize = tokenString; - } - // UNSIGNED_NUBER - else if(isDigit.test(ch)) { - state.tokenize = tokenUnsignedNuber; - } - // ERROR - else { - state.tokenize = null; - return "error"; - } - - return state.tokenize(stream, state); - }, - - indent: function(state, textAfter) { - if (state.tokenize != null) return CodeMirror.Pass; - - var level = state.level; - if(/(algorithm)/.test(textAfter)) level--; - if(/(equation)/.test(textAfter)) level--; - if(/(initial algorithm)/.test(textAfter)) level--; - if(/(initial equation)/.test(textAfter)) level--; - if(/(end)/.test(textAfter)) level--; - - if(level > 0) - return indentUnit*level; - else - return 0; - }, - - blockCommentStart: "/*", - blockCommentEnd: "*/", - lineComment: "//" - }; - }); - - function words(str) { - var obj = {}, words = str.split(" "); - for (var i=0; i<words.length; ++i) - obj[words[i]] = true; - return obj; - } - - var modelicaKeywords = "algorithm and annotation assert block break class connect connector constant constrainedby der discrete each else elseif elsewhen encapsulated end enumeration equation expandable extends external false final flow for function if import impure in initial inner input loop model not operator or outer output package parameter partial protected public pure record redeclare replaceable return stream then true type when while within"; - var modelicaBuiltin = "abs acos actualStream asin atan atan2 cardinality ceil cos cosh delay div edge exp floor getInstanceName homotopy inStream integer log log10 mod pre reinit rem semiLinear sign sin sinh spatialDistribution sqrt tan tanh"; - var modelicaAtoms = "Real Boolean Integer String"; - - function def(mimes, mode) { - if (typeof mimes == "string") - mimes = [mimes]; - - var words = []; - - function add(obj) { - if (obj) - for (var prop in obj) - if (obj.hasOwnProperty(prop)) - words.push(prop); - } - - add(mode.keywords); - add(mode.builtin); - add(mode.atoms); - - if (words.length) { - mode.helperType = mimes[0]; - CodeMirror.registerHelper("hintWords", mimes[0], words); - } - - for (var i=0; i<mimes.length; ++i) - CodeMirror.defineMIME(mimes[i], mode); - } - - def(["text/x-modelica"], { - name: "modelica", - keywords: words(modelicaKeywords), - builtin: words(modelicaBuiltin), - atoms: words(modelicaAtoms) - }); -}); diff --git a/assets/js/plugins/codemirror/mode/nginx/index.html b/assets/js/plugins/codemirror/mode/nginx/index.html deleted file mode 100644 index 5ffdc081..00000000 --- a/assets/js/plugins/codemirror/mode/nginx/index.html +++ /dev/null @@ -1,181 +0,0 @@ -<!doctype html> - -<title>CodeMirror: NGINX mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="nginx.js"></script> -<style>.CodeMirror {background: #f8f8f8;}</style> - <link rel="stylesheet" href="../../doc/docs.css"> - </head> - - <style> - body { - margin: 0em auto; - } - - .CodeMirror, .CodeMirror-scroll { - height: 600px; - } - </style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">NGINX</a> - </ul> -</div> - -<article> -<h2>NGINX mode</h2> -<form><textarea id="code" name="code" style="height: 800px;"> -server { - listen 173.255.219.235:80; - server_name website.com.au; - rewrite / $scheme://www.$host$request_uri permanent; ## Forcibly prepend a www -} - -server { - listen 173.255.219.235:443; - server_name website.com.au; - rewrite / $scheme://www.$host$request_uri permanent; ## Forcibly prepend a www -} - -server { - - listen 173.255.219.235:80; - server_name www.website.com.au; - - - - root /data/www; - index index.html index.php; - - location / { - index index.html index.php; ## Allow a static html file to be shown first - try_files $uri $uri/ @handler; ## If missing pass the URI to Magento's front handler - expires 30d; ## Assume all files are cachable - } - - ## These locations would be hidden by .htaccess normally - location /app/ { deny all; } - location /includes/ { deny all; } - location /lib/ { deny all; } - location /media/downloadable/ { deny all; } - location /pkginfo/ { deny all; } - location /report/config.xml { deny all; } - location /var/ { deny all; } - - location /var/export/ { ## Allow admins only to view export folder - auth_basic "Restricted"; ## Message shown in login window - auth_basic_user_file /rs/passwords/testfile; ## See /etc/nginx/htpassword - autoindex on; - } - - location /. { ## Disable .htaccess and other hidden files - return 404; - } - - location @handler { ## Magento uses a common front handler - rewrite / /index.php; - } - - location ~ .php/ { ## Forward paths like /js/index.php/x.js to relevant handler - rewrite ^/(.*.php)/ /$1 last; - } - - location ~ \.php$ { - if (!-e $request_filename) { rewrite / /index.php last; } ## Catch 404s that try_files miss - - fastcgi_pass 127.0.0.1:9000; - fastcgi_index index.php; - fastcgi_param PATH_INFO $fastcgi_script_name; - fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; - include /rs/confs/nginx/fastcgi_params; - } - -} - - -server { - - listen 173.255.219.235:443; - server_name website.com.au www.website.com.au; - - root /data/www; - index index.html index.php; - - ssl on; - ssl_certificate /rs/ssl/ssl.crt; - ssl_certificate_key /rs/ssl/ssl.key; - - ssl_session_timeout 5m; - - ssl_protocols SSLv2 SSLv3 TLSv1; - ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; - ssl_prefer_server_ciphers on; - - - - location / { - index index.html index.php; ## Allow a static html file to be shown first - try_files $uri $uri/ @handler; ## If missing pass the URI to Magento's front handler - expires 30d; ## Assume all files are cachable - } - - ## These locations would be hidden by .htaccess normally - location /app/ { deny all; } - location /includes/ { deny all; } - location /lib/ { deny all; } - location /media/downloadable/ { deny all; } - location /pkginfo/ { deny all; } - location /report/config.xml { deny all; } - location /var/ { deny all; } - - location /var/export/ { ## Allow admins only to view export folder - auth_basic "Restricted"; ## Message shown in login window - auth_basic_user_file htpasswd; ## See /etc/nginx/htpassword - autoindex on; - } - - location /. { ## Disable .htaccess and other hidden files - return 404; - } - - location @handler { ## Magento uses a common front handler - rewrite / /index.php; - } - - location ~ .php/ { ## Forward paths like /js/index.php/x.js to relevant handler - rewrite ^/(.*.php)/ /$1 last; - } - - location ~ .php$ { ## Execute PHP scripts - if (!-e $request_filename) { rewrite /index.php last; } ## Catch 404s that try_files miss - - fastcgi_pass 127.0.0.1:9000; - fastcgi_index index.php; - fastcgi_param PATH_INFO $fastcgi_script_name; - fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; - include /rs/confs/nginx/fastcgi_params; - - fastcgi_param HTTPS on; - } - -} -</textarea></form> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), {}); - </script> - - <p><strong>MIME types defined:</strong> <code>text/nginx</code>.</p> - - </article> diff --git a/assets/js/plugins/codemirror/mode/nginx/nginx.js b/assets/js/plugins/codemirror/mode/nginx/nginx.js deleted file mode 100644 index 135b9cc7..00000000 --- a/assets/js/plugins/codemirror/mode/nginx/nginx.js +++ /dev/null @@ -1,178 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("nginx", function(config) { - - function words(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - var keywords = words( - /* ngxDirectiveControl */ "break return rewrite set" + - /* ngxDirective */ " accept_mutex accept_mutex_delay access_log add_after_body add_before_body add_header addition_types aio alias allow ancient_browser ancient_browser_value auth_basic auth_basic_user_file auth_http auth_http_header auth_http_timeout autoindex autoindex_exact_size autoindex_localtime charset charset_types client_body_buffer_size client_body_in_file_only client_body_in_single_buffer client_body_temp_path client_body_timeout client_header_buffer_size client_header_timeout client_max_body_size connection_pool_size create_full_put_path daemon dav_access dav_methods debug_connection debug_points default_type degradation degrade deny devpoll_changes devpoll_events directio directio_alignment empty_gif env epoll_events error_log eventport_events expires fastcgi_bind fastcgi_buffer_size fastcgi_buffers fastcgi_busy_buffers_size fastcgi_cache fastcgi_cache_key fastcgi_cache_methods fastcgi_cache_min_uses fastcgi_cache_path fastcgi_cache_use_stale fastcgi_cache_valid fastcgi_catch_stderr fastcgi_connect_timeout fastcgi_hide_header fastcgi_ignore_client_abort fastcgi_ignore_headers fastcgi_index fastcgi_intercept_errors fastcgi_max_temp_file_size fastcgi_next_upstream fastcgi_param fastcgi_pass_header fastcgi_pass_request_body fastcgi_pass_request_headers fastcgi_read_timeout fastcgi_send_lowat fastcgi_send_timeout fastcgi_split_path_info fastcgi_store fastcgi_store_access fastcgi_temp_file_write_size fastcgi_temp_path fastcgi_upstream_fail_timeout fastcgi_upstream_max_fails flv geoip_city geoip_country google_perftools_profiles gzip gzip_buffers gzip_comp_level gzip_disable gzip_hash gzip_http_version gzip_min_length gzip_no_buffer gzip_proxied gzip_static gzip_types gzip_vary gzip_window if_modified_since ignore_invalid_headers image_filter image_filter_buffer image_filter_jpeg_quality image_filter_transparency imap_auth imap_capabilities imap_client_buffer index ip_hash keepalive_requests keepalive_timeout kqueue_changes kqueue_events large_client_header_buffers limit_conn limit_conn_log_level limit_rate limit_rate_after limit_req limit_req_log_level limit_req_zone limit_zone lingering_time lingering_timeout lock_file log_format log_not_found log_subrequest map_hash_bucket_size map_hash_max_size master_process memcached_bind memcached_buffer_size memcached_connect_timeout memcached_next_upstream memcached_read_timeout memcached_send_timeout memcached_upstream_fail_timeout memcached_upstream_max_fails merge_slashes min_delete_depth modern_browser modern_browser_value msie_padding msie_refresh multi_accept open_file_cache open_file_cache_errors open_file_cache_events open_file_cache_min_uses open_file_cache_valid open_log_file_cache output_buffers override_charset perl perl_modules perl_require perl_set pid pop3_auth pop3_capabilities port_in_redirect postpone_gzipping postpone_output protocol proxy proxy_bind proxy_buffer proxy_buffer_size proxy_buffering proxy_buffers proxy_busy_buffers_size proxy_cache proxy_cache_key proxy_cache_methods proxy_cache_min_uses proxy_cache_path proxy_cache_use_stale proxy_cache_valid proxy_connect_timeout proxy_headers_hash_bucket_size proxy_headers_hash_max_size proxy_hide_header proxy_ignore_client_abort proxy_ignore_headers proxy_intercept_errors proxy_max_temp_file_size proxy_method proxy_next_upstream proxy_pass_error_message proxy_pass_header proxy_pass_request_body proxy_pass_request_headers proxy_read_timeout proxy_redirect proxy_send_lowat proxy_send_timeout proxy_set_body proxy_set_header proxy_ssl_session_reuse proxy_store proxy_store_access proxy_temp_file_write_size proxy_temp_path proxy_timeout proxy_upstream_fail_timeout proxy_upstream_max_fails random_index read_ahead real_ip_header recursive_error_pages request_pool_size reset_timedout_connection resolver resolver_timeout rewrite_log rtsig_overflow_events rtsig_overflow_test rtsig_overflow_threshold rtsig_signo satisfy secure_link_secret send_lowat send_timeout sendfile sendfile_max_chunk server_name_in_redirect server_names_hash_bucket_size server_names_hash_max_size server_tokens set_real_ip_from smtp_auth smtp_capabilities smtp_client_buffer smtp_greeting_delay so_keepalive source_charset ssi ssi_ignore_recycled_buffers ssi_min_file_chunk ssi_silent_errors ssi_types ssi_value_length ssl ssl_certificate ssl_certificate_key ssl_ciphers ssl_client_certificate ssl_crl ssl_dhparam ssl_engine ssl_prefer_server_ciphers ssl_protocols ssl_session_cache ssl_session_timeout ssl_verify_client ssl_verify_depth starttls stub_status sub_filter sub_filter_once sub_filter_types tcp_nodelay tcp_nopush thread_stack_size timeout timer_resolution types_hash_bucket_size types_hash_max_size underscores_in_headers uninitialized_variable_warn use user userid userid_domain userid_expires userid_mark userid_name userid_p3p userid_path userid_service valid_referers variables_hash_bucket_size variables_hash_max_size worker_connections worker_cpu_affinity worker_priority worker_processes worker_rlimit_core worker_rlimit_nofile worker_rlimit_sigpending worker_threads working_directory xclient xml_entities xslt_stylesheet xslt_typesdrew@li229-23" - ); - - var keywords_block = words( - /* ngxDirectiveBlock */ "http mail events server types location upstream charset_map limit_except if geo map" - ); - - var keywords_important = words( - /* ngxDirectiveImportant */ "include root server server_name listen internal proxy_pass memcached_pass fastcgi_pass try_files" - ); - - var indentUnit = config.indentUnit, type; - function ret(style, tp) {type = tp; return style;} - - function tokenBase(stream, state) { - - - stream.eatWhile(/[\w\$_]/); - - var cur = stream.current(); - - - if (keywords.propertyIsEnumerable(cur)) { - return "keyword"; - } - else if (keywords_block.propertyIsEnumerable(cur)) { - return "variable-2"; - } - else if (keywords_important.propertyIsEnumerable(cur)) { - return "string-2"; - } - /**/ - - var ch = stream.next(); - if (ch == "@") {stream.eatWhile(/[\w\\\-]/); return ret("meta", stream.current());} - else if (ch == "/" && stream.eat("*")) { - state.tokenize = tokenCComment; - return tokenCComment(stream, state); - } - else if (ch == "<" && stream.eat("!")) { - state.tokenize = tokenSGMLComment; - return tokenSGMLComment(stream, state); - } - else if (ch == "=") ret(null, "compare"); - else if ((ch == "~" || ch == "|") && stream.eat("=")) return ret(null, "compare"); - else if (ch == "\"" || ch == "'") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } - else if (ch == "#") { - stream.skipToEnd(); - return ret("comment", "comment"); - } - else if (ch == "!") { - stream.match(/^\s*\w*/); - return ret("keyword", "important"); - } - else if (/\d/.test(ch)) { - stream.eatWhile(/[\w.%]/); - return ret("number", "unit"); - } - else if (/[,.+>*\/]/.test(ch)) { - return ret(null, "select-op"); - } - else if (/[;{}:\[\]]/.test(ch)) { - return ret(null, ch); - } - else { - stream.eatWhile(/[\w\\\-]/); - return ret("variable", "variable"); - } - } - - function tokenCComment(stream, state) { - var maybeEnd = false, ch; - while ((ch = stream.next()) != null) { - if (maybeEnd && ch == "/") { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch == "*"); - } - return ret("comment", "comment"); - } - - function tokenSGMLComment(stream, state) { - var dashes = 0, ch; - while ((ch = stream.next()) != null) { - if (dashes >= 2 && ch == ">") { - state.tokenize = tokenBase; - break; - } - dashes = (ch == "-") ? dashes + 1 : 0; - } - return ret("comment", "comment"); - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == quote && !escaped) - break; - escaped = !escaped && ch == "\\"; - } - if (!escaped) state.tokenize = tokenBase; - return ret("string", "string"); - }; - } - - return { - startState: function(base) { - return {tokenize: tokenBase, - baseIndent: base || 0, - stack: []}; - }, - - token: function(stream, state) { - if (stream.eatSpace()) return null; - type = null; - var style = state.tokenize(stream, state); - - var context = state.stack[state.stack.length-1]; - if (type == "hash" && context == "rule") style = "atom"; - else if (style == "variable") { - if (context == "rule") style = "number"; - else if (!context || context == "@media{") style = "tag"; - } - - if (context == "rule" && /^[\{\};]$/.test(type)) - state.stack.pop(); - if (type == "{") { - if (context == "@media") state.stack[state.stack.length-1] = "@media{"; - else state.stack.push("{"); - } - else if (type == "}") state.stack.pop(); - else if (type == "@media") state.stack.push("@media"); - else if (context == "{" && type != "comment") state.stack.push("rule"); - return style; - }, - - indent: function(state, textAfter) { - var n = state.stack.length; - if (/^\}/.test(textAfter)) - n -= state.stack[state.stack.length-1] == "rule" ? 2 : 1; - return state.baseIndent + n * indentUnit; - }, - - electricChars: "}" - }; -}); - -CodeMirror.defineMIME("text/nginx", "text/x-nginx-conf"); - -}); diff --git a/assets/js/plugins/codemirror/mode/ntriples/index.html b/assets/js/plugins/codemirror/mode/ntriples/index.html deleted file mode 100644 index 1355e718..00000000 --- a/assets/js/plugins/codemirror/mode/ntriples/index.html +++ /dev/null @@ -1,45 +0,0 @@ -<!doctype html> - -<title>CodeMirror: NTriples mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="ntriples.js"></script> -<style type="text/css"> - .CodeMirror { - border: 1px solid #eee; - } - </style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">NTriples</a> - </ul> -</div> - -<article> -<h2>NTriples mode</h2> -<form> -<textarea id="ntriples" name="ntriples"> -<http://Sub1> <http://pred1> <http://obj> . -<http://Sub2> <http://pred2#an2> "literal 1" . -<http://Sub3#an3> <http://pred3> _:bnode3 . -_:bnode4 <http://pred4> "literal 2"@lang . -_:bnode5 <http://pred5> "literal 3"^^<http://type> . -</textarea> -</form> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("ntriples"), {}); - </script> - <p><strong>MIME types defined:</strong> <code>text/n-triples</code>.</p> - </article> diff --git a/assets/js/plugins/codemirror/mode/ntriples/ntriples.js b/assets/js/plugins/codemirror/mode/ntriples/ntriples.js deleted file mode 100644 index 0524b1e8..00000000 --- a/assets/js/plugins/codemirror/mode/ntriples/ntriples.js +++ /dev/null @@ -1,186 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/********************************************************** -* This script provides syntax highlighting support for -* the Ntriples format. -* Ntriples format specification: -* http://www.w3.org/TR/rdf-testcases/#ntriples -***********************************************************/ - -/* - The following expression defines the defined ASF grammar transitions. - - pre_subject -> - { - ( writing_subject_uri | writing_bnode_uri ) - -> pre_predicate - -> writing_predicate_uri - -> pre_object - -> writing_object_uri | writing_object_bnode | - ( - writing_object_literal - -> writing_literal_lang | writing_literal_type - ) - -> post_object - -> BEGIN - } otherwise { - -> ERROR - } -*/ - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("ntriples", function() { - - var Location = { - PRE_SUBJECT : 0, - WRITING_SUB_URI : 1, - WRITING_BNODE_URI : 2, - PRE_PRED : 3, - WRITING_PRED_URI : 4, - PRE_OBJ : 5, - WRITING_OBJ_URI : 6, - WRITING_OBJ_BNODE : 7, - WRITING_OBJ_LITERAL : 8, - WRITING_LIT_LANG : 9, - WRITING_LIT_TYPE : 10, - POST_OBJ : 11, - ERROR : 12 - }; - function transitState(currState, c) { - var currLocation = currState.location; - var ret; - - // Opening. - if (currLocation == Location.PRE_SUBJECT && c == '<') ret = Location.WRITING_SUB_URI; - else if(currLocation == Location.PRE_SUBJECT && c == '_') ret = Location.WRITING_BNODE_URI; - else if(currLocation == Location.PRE_PRED && c == '<') ret = Location.WRITING_PRED_URI; - else if(currLocation == Location.PRE_OBJ && c == '<') ret = Location.WRITING_OBJ_URI; - else if(currLocation == Location.PRE_OBJ && c == '_') ret = Location.WRITING_OBJ_BNODE; - else if(currLocation == Location.PRE_OBJ && c == '"') ret = Location.WRITING_OBJ_LITERAL; - - // Closing. - else if(currLocation == Location.WRITING_SUB_URI && c == '>') ret = Location.PRE_PRED; - else if(currLocation == Location.WRITING_BNODE_URI && c == ' ') ret = Location.PRE_PRED; - else if(currLocation == Location.WRITING_PRED_URI && c == '>') ret = Location.PRE_OBJ; - else if(currLocation == Location.WRITING_OBJ_URI && c == '>') ret = Location.POST_OBJ; - else if(currLocation == Location.WRITING_OBJ_BNODE && c == ' ') ret = Location.POST_OBJ; - else if(currLocation == Location.WRITING_OBJ_LITERAL && c == '"') ret = Location.POST_OBJ; - else if(currLocation == Location.WRITING_LIT_LANG && c == ' ') ret = Location.POST_OBJ; - else if(currLocation == Location.WRITING_LIT_TYPE && c == '>') ret = Location.POST_OBJ; - - // Closing typed and language literal. - else if(currLocation == Location.WRITING_OBJ_LITERAL && c == '@') ret = Location.WRITING_LIT_LANG; - else if(currLocation == Location.WRITING_OBJ_LITERAL && c == '^') ret = Location.WRITING_LIT_TYPE; - - // Spaces. - else if( c == ' ' && - ( - currLocation == Location.PRE_SUBJECT || - currLocation == Location.PRE_PRED || - currLocation == Location.PRE_OBJ || - currLocation == Location.POST_OBJ - ) - ) ret = currLocation; - - // Reset. - else if(currLocation == Location.POST_OBJ && c == '.') ret = Location.PRE_SUBJECT; - - // Error - else ret = Location.ERROR; - - currState.location=ret; - } - - return { - startState: function() { - return { - location : Location.PRE_SUBJECT, - uris : [], - anchors : [], - bnodes : [], - langs : [], - types : [] - }; - }, - token: function(stream, state) { - var ch = stream.next(); - if(ch == '<') { - transitState(state, ch); - var parsedURI = ''; - stream.eatWhile( function(c) { if( c != '#' && c != '>' ) { parsedURI += c; return true; } return false;} ); - state.uris.push(parsedURI); - if( stream.match('#', false) ) return 'variable'; - stream.next(); - transitState(state, '>'); - return 'variable'; - } - if(ch == '#') { - var parsedAnchor = ''; - stream.eatWhile(function(c) { if(c != '>' && c != ' ') { parsedAnchor+= c; return true; } return false;}); - state.anchors.push(parsedAnchor); - return 'variable-2'; - } - if(ch == '>') { - transitState(state, '>'); - return 'variable'; - } - if(ch == '_') { - transitState(state, ch); - var parsedBNode = ''; - stream.eatWhile(function(c) { if( c != ' ' ) { parsedBNode += c; return true; } return false;}); - state.bnodes.push(parsedBNode); - stream.next(); - transitState(state, ' '); - return 'builtin'; - } - if(ch == '"') { - transitState(state, ch); - stream.eatWhile( function(c) { return c != '"'; } ); - stream.next(); - if( stream.peek() != '@' && stream.peek() != '^' ) { - transitState(state, '"'); - } - return 'string'; - } - if( ch == '@' ) { - transitState(state, '@'); - var parsedLang = ''; - stream.eatWhile(function(c) { if( c != ' ' ) { parsedLang += c; return true; } return false;}); - state.langs.push(parsedLang); - stream.next(); - transitState(state, ' '); - return 'string-2'; - } - if( ch == '^' ) { - stream.next(); - transitState(state, '^'); - var parsedType = ''; - stream.eatWhile(function(c) { if( c != '>' ) { parsedType += c; return true; } return false;} ); - state.types.push(parsedType); - stream.next(); - transitState(state, '>'); - return 'variable'; - } - if( ch == ' ' ) { - transitState(state, ch); - } - if( ch == '.' ) { - transitState(state, ch); - } - } - }; -}); - -CodeMirror.defineMIME("text/n-triples", "ntriples"); - -}); diff --git a/assets/js/plugins/codemirror/mode/octave/index.html b/assets/js/plugins/codemirror/mode/octave/index.html deleted file mode 100644 index 79df5811..00000000 --- a/assets/js/plugins/codemirror/mode/octave/index.html +++ /dev/null @@ -1,83 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Octave mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="octave.js"></script> -<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Octave</a> - </ul> -</div> - -<article> -<h2>Octave mode</h2> - - <div><textarea id="code" name="code"> -%numbers -[1234 1234i 1234j] -[.234 .234j 2.23i] -[23e2 12E1j 123D-4 0x234] - -%strings -'asda''a' -"asda""a" - -%identifiers -a + as123 - __asd__ - -%operators -- -+ -= -== -> -< ->= -<= -& -~ -... -break zeros default margin round ones rand -ceil floor size clear zeros eye mean std cov -error eval function -abs acos atan asin cos cosh exp log prod sum -log10 max min sign sin sinh sqrt tan reshape -return -case switch -else elseif end if otherwise -do for while -try catch -classdef properties events methods -global persistent - -%one line comment -%{ multi -line commment %} - - </textarea></div> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - mode: {name: "octave", - version: 2, - singleLineStringErrors: false}, - lineNumbers: true, - indentUnit: 4, - matchBrackets: true - }); - </script> - - <p><strong>MIME types defined:</strong> <code>text/x-octave</code>.</p> -</article> diff --git a/assets/js/plugins/codemirror/mode/octave/octave.js b/assets/js/plugins/codemirror/mode/octave/octave.js deleted file mode 100644 index a7bec030..00000000 --- a/assets/js/plugins/codemirror/mode/octave/octave.js +++ /dev/null @@ -1,135 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("octave", function() { - function wordRegexp(words) { - return new RegExp("^((" + words.join(")|(") + "))\\b"); - } - - var singleOperators = new RegExp("^[\\+\\-\\*/&|\\^~<>!@'\\\\]"); - var singleDelimiters = new RegExp('^[\\(\\[\\{\\},:=;]'); - var doubleOperators = new RegExp("^((==)|(~=)|(<=)|(>=)|(<<)|(>>)|(\\.[\\+\\-\\*/\\^\\\\]))"); - var doubleDelimiters = new RegExp("^((!=)|(\\+=)|(\\-=)|(\\*=)|(/=)|(&=)|(\\|=)|(\\^=))"); - var tripleDelimiters = new RegExp("^((>>=)|(<<=))"); - var expressionEnd = new RegExp("^[\\]\\)]"); - var identifiers = new RegExp("^[_A-Za-z\xa1-\uffff][_A-Za-z0-9\xa1-\uffff]*"); - - var builtins = wordRegexp([ - 'error', 'eval', 'function', 'abs', 'acos', 'atan', 'asin', 'cos', - 'cosh', 'exp', 'log', 'prod', 'sum', 'log10', 'max', 'min', 'sign', 'sin', 'sinh', - 'sqrt', 'tan', 'reshape', 'break', 'zeros', 'default', 'margin', 'round', 'ones', - 'rand', 'syn', 'ceil', 'floor', 'size', 'clear', 'zeros', 'eye', 'mean', 'std', 'cov', - 'det', 'eig', 'inv', 'norm', 'rank', 'trace', 'expm', 'logm', 'sqrtm', 'linspace', 'plot', - 'title', 'xlabel', 'ylabel', 'legend', 'text', 'grid', 'meshgrid', 'mesh', 'num2str', - 'fft', 'ifft', 'arrayfun', 'cellfun', 'input', 'fliplr', 'flipud', 'ismember' - ]); - - var keywords = wordRegexp([ - 'return', 'case', 'switch', 'else', 'elseif', 'end', 'endif', 'endfunction', - 'if', 'otherwise', 'do', 'for', 'while', 'try', 'catch', 'classdef', 'properties', 'events', - 'methods', 'global', 'persistent', 'endfor', 'endwhile', 'printf', 'sprintf', 'disp', 'until', - 'continue', 'pkg' - ]); - - - // tokenizers - function tokenTranspose(stream, state) { - if (!stream.sol() && stream.peek() === '\'') { - stream.next(); - state.tokenize = tokenBase; - return 'operator'; - } - state.tokenize = tokenBase; - return tokenBase(stream, state); - } - - - function tokenComment(stream, state) { - if (stream.match(/^.*%}/)) { - state.tokenize = tokenBase; - return 'comment'; - }; - stream.skipToEnd(); - return 'comment'; - } - - function tokenBase(stream, state) { - // whitespaces - if (stream.eatSpace()) return null; - - // Handle one line Comments - if (stream.match('%{')){ - state.tokenize = tokenComment; - stream.skipToEnd(); - return 'comment'; - } - - if (stream.match(/^[%#]/)){ - stream.skipToEnd(); - return 'comment'; - } - - // Handle Number Literals - if (stream.match(/^[0-9\.+-]/, false)) { - if (stream.match(/^[+-]?0x[0-9a-fA-F]+[ij]?/)) { - stream.tokenize = tokenBase; - return 'number'; }; - if (stream.match(/^[+-]?\d*\.\d+([EeDd][+-]?\d+)?[ij]?/)) { return 'number'; }; - if (stream.match(/^[+-]?\d+([EeDd][+-]?\d+)?[ij]?/)) { return 'number'; }; - } - if (stream.match(wordRegexp(['nan','NaN','inf','Inf']))) { return 'number'; }; - - // Handle Strings - if (stream.match(/^"([^"]|(""))*"/)) { return 'string'; } ; - if (stream.match(/^'([^']|(''))*'/)) { return 'string'; } ; - - // Handle words - if (stream.match(keywords)) { return 'keyword'; } ; - if (stream.match(builtins)) { return 'builtin'; } ; - if (stream.match(identifiers)) { return 'variable'; } ; - - if (stream.match(singleOperators) || stream.match(doubleOperators)) { return 'operator'; }; - if (stream.match(singleDelimiters) || stream.match(doubleDelimiters) || stream.match(tripleDelimiters)) { return null; }; - - if (stream.match(expressionEnd)) { - state.tokenize = tokenTranspose; - return null; - }; - - - // Handle non-detected items - stream.next(); - return 'error'; - }; - - - return { - startState: function() { - return { - tokenize: tokenBase - }; - }, - - token: function(stream, state) { - var style = state.tokenize(stream, state); - if (style === 'number' || style === 'variable'){ - state.tokenize = tokenTranspose; - } - return style; - } - }; -}); - -CodeMirror.defineMIME("text/x-octave", "octave"); - -}); diff --git a/assets/js/plugins/codemirror/mode/pascal/index.html b/assets/js/plugins/codemirror/mode/pascal/index.html deleted file mode 100644 index f8a99ad0..00000000 --- a/assets/js/plugins/codemirror/mode/pascal/index.html +++ /dev/null @@ -1,61 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Pascal mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="pascal.js"></script> -<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Pascal</a> - </ul> -</div> - -<article> -<h2>Pascal mode</h2> - - -<div><textarea id="code" name="code"> -(* Example Pascal code *) - -while a <> b do writeln('Waiting'); - -if a > b then - writeln('Condition met') -else - writeln('Condition not met'); - -for i := 1 to 10 do - writeln('Iteration: ', i:1); - -repeat - a := a + 1 -until a = 10; - -case i of - 0: write('zero'); - 1: write('one'); - 2: write('two') -end; -</textarea></div> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers: true, - mode: "text/x-pascal" - }); - </script> - - <p><strong>MIME types defined:</strong> <code>text/x-pascal</code>.</p> - </article> diff --git a/assets/js/plugins/codemirror/mode/pascal/pascal.js b/assets/js/plugins/codemirror/mode/pascal/pascal.js deleted file mode 100644 index 2d0c3d42..00000000 --- a/assets/js/plugins/codemirror/mode/pascal/pascal.js +++ /dev/null @@ -1,109 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("pascal", function() { - function words(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - var keywords = words("and array begin case const div do downto else end file for forward integer " + - "boolean char function goto if in label mod nil not of or packed procedure " + - "program record repeat set string then to type until var while with"); - var atoms = {"null": true}; - - var isOperatorChar = /[+\-*&%=<>!?|\/]/; - - function tokenBase(stream, state) { - var ch = stream.next(); - if (ch == "#" && state.startOfLine) { - stream.skipToEnd(); - return "meta"; - } - if (ch == '"' || ch == "'") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } - if (ch == "(" && stream.eat("*")) { - state.tokenize = tokenComment; - return tokenComment(stream, state); - } - if (/[\[\]{}\(\),;\:\.]/.test(ch)) { - return null; - } - if (/\d/.test(ch)) { - stream.eatWhile(/[\w\.]/); - return "number"; - } - if (ch == "/") { - if (stream.eat("/")) { - stream.skipToEnd(); - return "comment"; - } - } - if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return "operator"; - } - stream.eatWhile(/[\w\$_]/); - var cur = stream.current(); - if (keywords.propertyIsEnumerable(cur)) return "keyword"; - if (atoms.propertyIsEnumerable(cur)) return "atom"; - return "variable"; - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next, end = false; - while ((next = stream.next()) != null) { - if (next == quote && !escaped) {end = true; break;} - escaped = !escaped && next == "\\"; - } - if (end || !escaped) state.tokenize = null; - return "string"; - }; - } - - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == ")" && maybeEnd) { - state.tokenize = null; - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - - // Interface - - return { - startState: function() { - return {tokenize: null}; - }, - - token: function(stream, state) { - if (stream.eatSpace()) return null; - var style = (state.tokenize || tokenBase)(stream, state); - if (style == "comment" || style == "meta") return style; - return style; - }, - - electricChars: "{}" - }; -}); - -CodeMirror.defineMIME("text/x-pascal", "pascal"); - -}); diff --git a/assets/js/plugins/codemirror/mode/pegjs/index.html b/assets/js/plugins/codemirror/mode/pegjs/index.html deleted file mode 100644 index 0c746048..00000000 --- a/assets/js/plugins/codemirror/mode/pegjs/index.html +++ /dev/null @@ -1,66 +0,0 @@ -<!doctype html> -<html> - <head> - <title>CodeMirror: PEG.js Mode</title> - <meta charset="utf-8"/> - <link rel=stylesheet href="../../doc/docs.css"> - - <link rel="stylesheet" href="../../lib/codemirror.css"> - <script src="../../lib/codemirror.js"></script> - <script src="../javascript/javascript.js"></script> - <script src="pegjs.js"></script> - <style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> - </head> - <body> - <div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">PEG.js Mode</a> - </ul> - </div> - - <article> - <h2>PEG.js Mode</h2> - <form><textarea id="code" name="code"> -/* - * Classic example grammar, which recognizes simple arithmetic expressions like - * "2*(3+4)". The parser generated from this grammar then computes their value. - */ - -start - = additive - -additive - = left:multiplicative "+" right:additive { return left + right; } - / multiplicative - -multiplicative - = left:primary "*" right:multiplicative { return left * right; } - / primary - -primary - = integer - / "(" additive:additive ")" { return additive; } - -integer "integer" - = digits:[0-9]+ { return parseInt(digits.join(""), 10); } - -letter = [a-z]+</textarea></form> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - mode: {name: "pegjs"}, - lineNumbers: true - }); - </script> - <h3>The PEG.js Mode</h3> - <p> Created by Forbes Lindesay.</p> - </article> - </body> -</html> diff --git a/assets/js/plugins/codemirror/mode/pegjs/pegjs.js b/assets/js/plugins/codemirror/mode/pegjs/pegjs.js deleted file mode 100644 index 306e3768..00000000 --- a/assets/js/plugins/codemirror/mode/pegjs/pegjs.js +++ /dev/null @@ -1,114 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../javascript/javascript")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../javascript/javascript"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("pegjs", function (config) { - var jsMode = CodeMirror.getMode(config, "javascript"); - - function identifier(stream) { - return stream.match(/^[a-zA-Z_][a-zA-Z0-9_]*/); - } - - return { - startState: function () { - return { - inString: false, - stringType: null, - inComment: false, - inChracterClass: false, - braced: 0, - lhs: true, - localState: null - }; - }, - token: function (stream, state) { - if (stream) - - //check for state changes - if (!state.inString && !state.inComment && ((stream.peek() == '"') || (stream.peek() == "'"))) { - state.stringType = stream.peek(); - stream.next(); // Skip quote - state.inString = true; // Update state - } - if (!state.inString && !state.inComment && stream.match(/^\/\*/)) { - state.inComment = true; - } - - //return state - if (state.inString) { - while (state.inString && !stream.eol()) { - if (stream.peek() === state.stringType) { - stream.next(); // Skip quote - state.inString = false; // Clear flag - } else if (stream.peek() === '\\') { - stream.next(); - stream.next(); - } else { - stream.match(/^.[^\\\"\']*/); - } - } - return state.lhs ? "property string" : "string"; // Token style - } else if (state.inComment) { - while (state.inComment && !stream.eol()) { - if (stream.match(/\*\//)) { - state.inComment = false; // Clear flag - } else { - stream.match(/^.[^\*]*/); - } - } - return "comment"; - } else if (state.inChracterClass) { - while (state.inChracterClass && !stream.eol()) { - if (!(stream.match(/^[^\]\\]+/) || stream.match(/^\\./))) { - state.inChracterClass = false; - } - } - } else if (stream.peek() === '[') { - stream.next(); - state.inChracterClass = true; - return 'bracket'; - } else if (stream.match(/^\/\//)) { - stream.skipToEnd(); - return "comment"; - } else if (state.braced || stream.peek() === '{') { - if (state.localState === null) { - state.localState = jsMode.startState(); - } - var token = jsMode.token(stream, state.localState); - var text = stream.current(); - if (!token) { - for (var i = 0; i < text.length; i++) { - if (text[i] === '{') { - state.braced++; - } else if (text[i] === '}') { - state.braced--; - } - }; - } - return token; - } else if (identifier(stream)) { - if (stream.peek() === ':') { - return 'variable'; - } - return 'variable-2'; - } else if (['[', ']', '(', ')'].indexOf(stream.peek()) != -1) { - stream.next(); - return 'bracket'; - } else if (!stream.eatSpace()) { - stream.next(); - } - return null; - } - }; -}, "javascript"); - -}); diff --git a/assets/js/plugins/codemirror/mode/perl/index.html b/assets/js/plugins/codemirror/mode/perl/index.html deleted file mode 100644 index 8c1021c4..00000000 --- a/assets/js/plugins/codemirror/mode/perl/index.html +++ /dev/null @@ -1,75 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Perl mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="perl.js"></script> -<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Perl</a> - </ul> -</div> - -<article> -<h2>Perl mode</h2> - - -<div><textarea id="code" name="code"> -#!/usr/bin/perl - -use Something qw(func1 func2); - -# strings -my $s1 = qq'single line'; -our $s2 = q(multi- - line); - -=item Something - Example. -=cut - -my $html=<<'HTML' -<html> -<title>hi!</title> -</html> -HTML - -print "first,".join(',', 'second', qq~third~); - -if($s1 =~ m[(?<!\s)(l.ne)\z]o) { - $h->{$1}=$$.' predefined variables'; - $s2 =~ s/\-line//ox; - $s1 =~ s[ - line ] - [ - block - ]ox; -} - -1; # numbers and comments - -__END__ -something... - -</textarea></div> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers: true - }); - </script> - - <p><strong>MIME types defined:</strong> <code>text/x-perl</code>.</p> - </article> diff --git a/assets/js/plugins/codemirror/mode/perl/perl.js b/assets/js/plugins/codemirror/mode/perl/perl.js deleted file mode 100644 index 311574e7..00000000 --- a/assets/js/plugins/codemirror/mode/perl/perl.js +++ /dev/null @@ -1,832 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// CodeMirror2 mode/perl/perl.js (text/x-perl) beta 0.10 (2011-11-08) -// This is a part of CodeMirror from https://github.com/sabaca/CodeMirror_mode_perl (mail@sabaca.com) - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("perl",function(){ - // http://perldoc.perl.org - var PERL={ // null - magic touch - // 1 - keyword - // 2 - def - // 3 - atom - // 4 - operator - // 5 - variable-2 (predefined) - // [x,y] - x=1,2,3; y=must be defined if x{...} - // PERL operators - '->' : 4, - '++' : 4, - '--' : 4, - '**' : 4, - // ! ~ \ and unary + and - - '=~' : 4, - '!~' : 4, - '*' : 4, - '/' : 4, - '%' : 4, - 'x' : 4, - '+' : 4, - '-' : 4, - '.' : 4, - '<<' : 4, - '>>' : 4, - // named unary operators - '<' : 4, - '>' : 4, - '<=' : 4, - '>=' : 4, - 'lt' : 4, - 'gt' : 4, - 'le' : 4, - 'ge' : 4, - '==' : 4, - '!=' : 4, - '<=>' : 4, - 'eq' : 4, - 'ne' : 4, - 'cmp' : 4, - '~~' : 4, - '&' : 4, - '|' : 4, - '^' : 4, - '&&' : 4, - '||' : 4, - '//' : 4, - '..' : 4, - '...' : 4, - '?' : 4, - ':' : 4, - '=' : 4, - '+=' : 4, - '-=' : 4, - '*=' : 4, // etc. ??? - ',' : 4, - '=>' : 4, - '::' : 4, - // list operators (rightward) - 'not' : 4, - 'and' : 4, - 'or' : 4, - 'xor' : 4, - // PERL predefined variables (I know, what this is a paranoid idea, but may be needed for people, who learn PERL, and for me as well, ...and may be for you?;) - 'BEGIN' : [5,1], - 'END' : [5,1], - 'PRINT' : [5,1], - 'PRINTF' : [5,1], - 'GETC' : [5,1], - 'READ' : [5,1], - 'READLINE' : [5,1], - 'DESTROY' : [5,1], - 'TIE' : [5,1], - 'TIEHANDLE' : [5,1], - 'UNTIE' : [5,1], - 'STDIN' : 5, - 'STDIN_TOP' : 5, - 'STDOUT' : 5, - 'STDOUT_TOP' : 5, - 'STDERR' : 5, - 'STDERR_TOP' : 5, - '$ARG' : 5, - '$_' : 5, - '@ARG' : 5, - '@_' : 5, - '$LIST_SEPARATOR' : 5, - '$"' : 5, - '$PROCESS_ID' : 5, - '$PID' : 5, - '$$' : 5, - '$REAL_GROUP_ID' : 5, - '$GID' : 5, - '$(' : 5, - '$EFFECTIVE_GROUP_ID' : 5, - '$EGID' : 5, - '$)' : 5, - '$PROGRAM_NAME' : 5, - '$0' : 5, - '$SUBSCRIPT_SEPARATOR' : 5, - '$SUBSEP' : 5, - '$;' : 5, - '$REAL_USER_ID' : 5, - '$UID' : 5, - '$<' : 5, - '$EFFECTIVE_USER_ID' : 5, - '$EUID' : 5, - '$>' : 5, - '$a' : 5, - '$b' : 5, - '$COMPILING' : 5, - '$^C' : 5, - '$DEBUGGING' : 5, - '$^D' : 5, - '${^ENCODING}' : 5, - '$ENV' : 5, - '%ENV' : 5, - '$SYSTEM_FD_MAX' : 5, - '$^F' : 5, - '@F' : 5, - '${^GLOBAL_PHASE}' : 5, - '$^H' : 5, - '%^H' : 5, - '@INC' : 5, - '%INC' : 5, - '$INPLACE_EDIT' : 5, - '$^I' : 5, - '$^M' : 5, - '$OSNAME' : 5, - '$^O' : 5, - '${^OPEN}' : 5, - '$PERLDB' : 5, - '$^P' : 5, - '$SIG' : 5, - '%SIG' : 5, - '$BASETIME' : 5, - '$^T' : 5, - '${^TAINT}' : 5, - '${^UNICODE}' : 5, - '${^UTF8CACHE}' : 5, - '${^UTF8LOCALE}' : 5, - '$PERL_VERSION' : 5, - '$^V' : 5, - '${^WIN32_SLOPPY_STAT}' : 5, - '$EXECUTABLE_NAME' : 5, - '$^X' : 5, - '$1' : 5, // - regexp $1, $2... - '$MATCH' : 5, - '$&' : 5, - '${^MATCH}' : 5, - '$PREMATCH' : 5, - '$`' : 5, - '${^PREMATCH}' : 5, - '$POSTMATCH' : 5, - "$'" : 5, - '${^POSTMATCH}' : 5, - '$LAST_PAREN_MATCH' : 5, - '$+' : 5, - '$LAST_SUBMATCH_RESULT' : 5, - '$^N' : 5, - '@LAST_MATCH_END' : 5, - '@+' : 5, - '%LAST_PAREN_MATCH' : 5, - '%+' : 5, - '@LAST_MATCH_START' : 5, - '@-' : 5, - '%LAST_MATCH_START' : 5, - '%-' : 5, - '$LAST_REGEXP_CODE_RESULT' : 5, - '$^R' : 5, - '${^RE_DEBUG_FLAGS}' : 5, - '${^RE_TRIE_MAXBUF}' : 5, - '$ARGV' : 5, - '@ARGV' : 5, - 'ARGV' : 5, - 'ARGVOUT' : 5, - '$OUTPUT_FIELD_SEPARATOR' : 5, - '$OFS' : 5, - '$,' : 5, - '$INPUT_LINE_NUMBER' : 5, - '$NR' : 5, - '$.' : 5, - '$INPUT_RECORD_SEPARATOR' : 5, - '$RS' : 5, - '$/' : 5, - '$OUTPUT_RECORD_SEPARATOR' : 5, - '$ORS' : 5, - '$\\' : 5, - '$OUTPUT_AUTOFLUSH' : 5, - '$|' : 5, - '$ACCUMULATOR' : 5, - '$^A' : 5, - '$FORMAT_FORMFEED' : 5, - '$^L' : 5, - '$FORMAT_PAGE_NUMBER' : 5, - '$%' : 5, - '$FORMAT_LINES_LEFT' : 5, - '$-' : 5, - '$FORMAT_LINE_BREAK_CHARACTERS' : 5, - '$:' : 5, - '$FORMAT_LINES_PER_PAGE' : 5, - '$=' : 5, - '$FORMAT_TOP_NAME' : 5, - '$^' : 5, - '$FORMAT_NAME' : 5, - '$~' : 5, - '${^CHILD_ERROR_NATIVE}' : 5, - '$EXTENDED_OS_ERROR' : 5, - '$^E' : 5, - '$EXCEPTIONS_BEING_CAUGHT' : 5, - '$^S' : 5, - '$WARNING' : 5, - '$^W' : 5, - '${^WARNING_BITS}' : 5, - '$OS_ERROR' : 5, - '$ERRNO' : 5, - '$!' : 5, - '%OS_ERROR' : 5, - '%ERRNO' : 5, - '%!' : 5, - '$CHILD_ERROR' : 5, - '$?' : 5, - '$EVAL_ERROR' : 5, - '$@' : 5, - '$OFMT' : 5, - '$#' : 5, - '$*' : 5, - '$ARRAY_BASE' : 5, - '$[' : 5, - '$OLD_PERL_VERSION' : 5, - '$]' : 5, - // PERL blocks - 'if' :[1,1], - elsif :[1,1], - 'else' :[1,1], - 'while' :[1,1], - unless :[1,1], - 'for' :[1,1], - foreach :[1,1], - // PERL functions - 'abs' :1, // - absolute value function - accept :1, // - accept an incoming socket connect - alarm :1, // - schedule a SIGALRM - 'atan2' :1, // - arctangent of Y/X in the range -PI to PI - bind :1, // - binds an address to a socket - binmode :1, // - prepare binary files for I/O - bless :1, // - create an object - bootstrap :1, // - 'break' :1, // - break out of a "given" block - caller :1, // - get context of the current subroutine call - chdir :1, // - change your current working directory - chmod :1, // - changes the permissions on a list of files - chomp :1, // - remove a trailing record separator from a string - chop :1, // - remove the last character from a string - chown :1, // - change the owership on a list of files - chr :1, // - get character this number represents - chroot :1, // - make directory new root for path lookups - close :1, // - close file (or pipe or socket) handle - closedir :1, // - close directory handle - connect :1, // - connect to a remote socket - 'continue' :[1,1], // - optional trailing block in a while or foreach - 'cos' :1, // - cosine function - crypt :1, // - one-way passwd-style encryption - dbmclose :1, // - breaks binding on a tied dbm file - dbmopen :1, // - create binding on a tied dbm file - 'default' :1, // - defined :1, // - test whether a value, variable, or function is defined - 'delete' :1, // - deletes a value from a hash - die :1, // - raise an exception or bail out - 'do' :1, // - turn a BLOCK into a TERM - dump :1, // - create an immediate core dump - each :1, // - retrieve the next key/value pair from a hash - endgrent :1, // - be done using group file - endhostent :1, // - be done using hosts file - endnetent :1, // - be done using networks file - endprotoent :1, // - be done using protocols file - endpwent :1, // - be done using passwd file - endservent :1, // - be done using services file - eof :1, // - test a filehandle for its end - 'eval' :1, // - catch exceptions or compile and run code - 'exec' :1, // - abandon this program to run another - exists :1, // - test whether a hash key is present - exit :1, // - terminate this program - 'exp' :1, // - raise I to a power - fcntl :1, // - file control system call - fileno :1, // - return file descriptor from filehandle - flock :1, // - lock an entire file with an advisory lock - fork :1, // - create a new process just like this one - format :1, // - declare a picture format with use by the write() function - formline :1, // - internal function used for formats - getc :1, // - get the next character from the filehandle - getgrent :1, // - get next group record - getgrgid :1, // - get group record given group user ID - getgrnam :1, // - get group record given group name - gethostbyaddr :1, // - get host record given its address - gethostbyname :1, // - get host record given name - gethostent :1, // - get next hosts record - getlogin :1, // - return who logged in at this tty - getnetbyaddr :1, // - get network record given its address - getnetbyname :1, // - get networks record given name - getnetent :1, // - get next networks record - getpeername :1, // - find the other end of a socket connection - getpgrp :1, // - get process group - getppid :1, // - get parent process ID - getpriority :1, // - get current nice value - getprotobyname :1, // - get protocol record given name - getprotobynumber :1, // - get protocol record numeric protocol - getprotoent :1, // - get next protocols record - getpwent :1, // - get next passwd record - getpwnam :1, // - get passwd record given user login name - getpwuid :1, // - get passwd record given user ID - getservbyname :1, // - get services record given its name - getservbyport :1, // - get services record given numeric port - getservent :1, // - get next services record - getsockname :1, // - retrieve the sockaddr for a given socket - getsockopt :1, // - get socket options on a given socket - given :1, // - glob :1, // - expand filenames using wildcards - gmtime :1, // - convert UNIX time into record or string using Greenwich time - 'goto' :1, // - create spaghetti code - grep :1, // - locate elements in a list test true against a given criterion - hex :1, // - convert a string to a hexadecimal number - 'import' :1, // - patch a module's namespace into your own - index :1, // - find a substring within a string - 'int' :1, // - get the integer portion of a number - ioctl :1, // - system-dependent device control system call - 'join' :1, // - join a list into a string using a separator - keys :1, // - retrieve list of indices from a hash - kill :1, // - send a signal to a process or process group - last :1, // - exit a block prematurely - lc :1, // - return lower-case version of a string - lcfirst :1, // - return a string with just the next letter in lower case - length :1, // - return the number of bytes in a string - 'link' :1, // - create a hard link in the filesytem - listen :1, // - register your socket as a server - local : 2, // - create a temporary value for a global variable (dynamic scoping) - localtime :1, // - convert UNIX time into record or string using local time - lock :1, // - get a thread lock on a variable, subroutine, or method - 'log' :1, // - retrieve the natural logarithm for a number - lstat :1, // - stat a symbolic link - m :null, // - match a string with a regular expression pattern - map :1, // - apply a change to a list to get back a new list with the changes - mkdir :1, // - create a directory - msgctl :1, // - SysV IPC message control operations - msgget :1, // - get SysV IPC message queue - msgrcv :1, // - receive a SysV IPC message from a message queue - msgsnd :1, // - send a SysV IPC message to a message queue - my : 2, // - declare and assign a local variable (lexical scoping) - 'new' :1, // - next :1, // - iterate a block prematurely - no :1, // - unimport some module symbols or semantics at compile time - oct :1, // - convert a string to an octal number - open :1, // - open a file, pipe, or descriptor - opendir :1, // - open a directory - ord :1, // - find a character's numeric representation - our : 2, // - declare and assign a package variable (lexical scoping) - pack :1, // - convert a list into a binary representation - 'package' :1, // - declare a separate global namespace - pipe :1, // - open a pair of connected filehandles - pop :1, // - remove the last element from an array and return it - pos :1, // - find or set the offset for the last/next m//g search - print :1, // - output a list to a filehandle - printf :1, // - output a formatted list to a filehandle - prototype :1, // - get the prototype (if any) of a subroutine - push :1, // - append one or more elements to an array - q :null, // - singly quote a string - qq :null, // - doubly quote a string - qr :null, // - Compile pattern - quotemeta :null, // - quote regular expression magic characters - qw :null, // - quote a list of words - qx :null, // - backquote quote a string - rand :1, // - retrieve the next pseudorandom number - read :1, // - fixed-length buffered input from a filehandle - readdir :1, // - get a directory from a directory handle - readline :1, // - fetch a record from a file - readlink :1, // - determine where a symbolic link is pointing - readpipe :1, // - execute a system command and collect standard output - recv :1, // - receive a message over a Socket - redo :1, // - start this loop iteration over again - ref :1, // - find out the type of thing being referenced - rename :1, // - change a filename - require :1, // - load in external functions from a library at runtime - reset :1, // - clear all variables of a given name - 'return' :1, // - get out of a function early - reverse :1, // - flip a string or a list - rewinddir :1, // - reset directory handle - rindex :1, // - right-to-left substring search - rmdir :1, // - remove a directory - s :null, // - replace a pattern with a string - say :1, // - print with newline - scalar :1, // - force a scalar context - seek :1, // - reposition file pointer for random-access I/O - seekdir :1, // - reposition directory pointer - select :1, // - reset default output or do I/O multiplexing - semctl :1, // - SysV semaphore control operations - semget :1, // - get set of SysV semaphores - semop :1, // - SysV semaphore operations - send :1, // - send a message over a socket - setgrent :1, // - prepare group file for use - sethostent :1, // - prepare hosts file for use - setnetent :1, // - prepare networks file for use - setpgrp :1, // - set the process group of a process - setpriority :1, // - set a process's nice value - setprotoent :1, // - prepare protocols file for use - setpwent :1, // - prepare passwd file for use - setservent :1, // - prepare services file for use - setsockopt :1, // - set some socket options - shift :1, // - remove the first element of an array, and return it - shmctl :1, // - SysV shared memory operations - shmget :1, // - get SysV shared memory segment identifier - shmread :1, // - read SysV shared memory - shmwrite :1, // - write SysV shared memory - shutdown :1, // - close down just half of a socket connection - 'sin' :1, // - return the sine of a number - sleep :1, // - block for some number of seconds - socket :1, // - create a socket - socketpair :1, // - create a pair of sockets - 'sort' :1, // - sort a list of values - splice :1, // - add or remove elements anywhere in an array - 'split' :1, // - split up a string using a regexp delimiter - sprintf :1, // - formatted print into a string - 'sqrt' :1, // - square root function - srand :1, // - seed the random number generator - stat :1, // - get a file's status information - state :1, // - declare and assign a state variable (persistent lexical scoping) - study :1, // - optimize input data for repeated searches - 'sub' :1, // - declare a subroutine, possibly anonymously - 'substr' :1, // - get or alter a portion of a stirng - symlink :1, // - create a symbolic link to a file - syscall :1, // - execute an arbitrary system call - sysopen :1, // - open a file, pipe, or descriptor - sysread :1, // - fixed-length unbuffered input from a filehandle - sysseek :1, // - position I/O pointer on handle used with sysread and syswrite - system :1, // - run a separate program - syswrite :1, // - fixed-length unbuffered output to a filehandle - tell :1, // - get current seekpointer on a filehandle - telldir :1, // - get current seekpointer on a directory handle - tie :1, // - bind a variable to an object class - tied :1, // - get a reference to the object underlying a tied variable - time :1, // - return number of seconds since 1970 - times :1, // - return elapsed time for self and child processes - tr :null, // - transliterate a string - truncate :1, // - shorten a file - uc :1, // - return upper-case version of a string - ucfirst :1, // - return a string with just the next letter in upper case - umask :1, // - set file creation mode mask - undef :1, // - remove a variable or function definition - unlink :1, // - remove one link to a file - unpack :1, // - convert binary structure into normal perl variables - unshift :1, // - prepend more elements to the beginning of a list - untie :1, // - break a tie binding to a variable - use :1, // - load in a module at compile time - utime :1, // - set a file's last access and modify times - values :1, // - return a list of the values in a hash - vec :1, // - test or set particular bits in a string - wait :1, // - wait for any child process to die - waitpid :1, // - wait for a particular child process to die - wantarray :1, // - get void vs scalar vs list context of current subroutine call - warn :1, // - print debugging info - when :1, // - write :1, // - print a picture record - y :null}; // - transliterate a string - - var RXstyle="string-2"; - var RXmodifiers=/[goseximacplud]/; // NOTE: "m", "s", "y" and "tr" need to correct real modifiers for each regexp type - - function tokenChain(stream,state,chain,style,tail){ // NOTE: chain.length > 2 is not working now (it's for s[...][...]geos;) - state.chain=null; // 12 3tail - state.style=null; - state.tail=null; - state.tokenize=function(stream,state){ - var e=false,c,i=0; - while(c=stream.next()){ - if(c===chain[i]&&!e){ - if(chain[++i]!==undefined){ - state.chain=chain[i]; - state.style=style; - state.tail=tail;} - else if(tail) - stream.eatWhile(tail); - state.tokenize=tokenPerl; - return style;} - e=!e&&c=="\\";} - return style;}; - return state.tokenize(stream,state);} - - function tokenSOMETHING(stream,state,string){ - state.tokenize=function(stream,state){ - if(stream.string==string) - state.tokenize=tokenPerl; - stream.skipToEnd(); - return "string";}; - return state.tokenize(stream,state);} - - function tokenPerl(stream,state){ - if(stream.eatSpace()) - return null; - if(state.chain) - return tokenChain(stream,state,state.chain,state.style,state.tail); - if(stream.match(/^\-?[\d\.]/,false)) - if(stream.match(/^(\-?(\d*\.\d+(e[+-]?\d+)?|\d+\.\d*)|0x[\da-fA-F]+|0b[01]+|\d+(e[+-]?\d+)?)/)) - return 'number'; - if(stream.match(/^<<(?=\w)/)){ // NOTE: <<SOMETHING\n...\nSOMETHING\n - stream.eatWhile(/\w/); - return tokenSOMETHING(stream,state,stream.current().substr(2));} - if(stream.sol()&&stream.match(/^\=item(?!\w)/)){// NOTE: \n=item...\n=cut\n - return tokenSOMETHING(stream,state,'=cut');} - var ch=stream.next(); - if(ch=='"'||ch=="'"){ // NOTE: ' or " or <<'SOMETHING'\n...\nSOMETHING\n or <<"SOMETHING"\n...\nSOMETHING\n - if(prefix(stream, 3)=="<<"+ch){ - var p=stream.pos; - stream.eatWhile(/\w/); - var n=stream.current().substr(1); - if(n&&stream.eat(ch)) - return tokenSOMETHING(stream,state,n); - stream.pos=p;} - return tokenChain(stream,state,[ch],"string");} - if(ch=="q"){ - var c=look(stream, -2); - if(!(c&&/\w/.test(c))){ - c=look(stream, 0); - if(c=="x"){ - c=look(stream, 1); - if(c=="("){ - eatSuffix(stream, 2); - return tokenChain(stream,state,[")"],RXstyle,RXmodifiers);} - if(c=="["){ - eatSuffix(stream, 2); - return tokenChain(stream,state,["]"],RXstyle,RXmodifiers);} - if(c=="{"){ - eatSuffix(stream, 2); - return tokenChain(stream,state,["}"],RXstyle,RXmodifiers);} - if(c=="<"){ - eatSuffix(stream, 2); - return tokenChain(stream,state,[">"],RXstyle,RXmodifiers);} - if(/[\^'"!~\/]/.test(c)){ - eatSuffix(stream, 1); - return tokenChain(stream,state,[stream.eat(c)],RXstyle,RXmodifiers);}} - else if(c=="q"){ - c=look(stream, 1); - if(c=="("){ - eatSuffix(stream, 2); - return tokenChain(stream,state,[")"],"string");} - if(c=="["){ - eatSuffix(stream, 2); - return tokenChain(stream,state,["]"],"string");} - if(c=="{"){ - eatSuffix(stream, 2); - return tokenChain(stream,state,["}"],"string");} - if(c=="<"){ - eatSuffix(stream, 2); - return tokenChain(stream,state,[">"],"string");} - if(/[\^'"!~\/]/.test(c)){ - eatSuffix(stream, 1); - return tokenChain(stream,state,[stream.eat(c)],"string");}} - else if(c=="w"){ - c=look(stream, 1); - if(c=="("){ - eatSuffix(stream, 2); - return tokenChain(stream,state,[")"],"bracket");} - if(c=="["){ - eatSuffix(stream, 2); - return tokenChain(stream,state,["]"],"bracket");} - if(c=="{"){ - eatSuffix(stream, 2); - return tokenChain(stream,state,["}"],"bracket");} - if(c=="<"){ - eatSuffix(stream, 2); - return tokenChain(stream,state,[">"],"bracket");} - if(/[\^'"!~\/]/.test(c)){ - eatSuffix(stream, 1); - return tokenChain(stream,state,[stream.eat(c)],"bracket");}} - else if(c=="r"){ - c=look(stream, 1); - if(c=="("){ - eatSuffix(stream, 2); - return tokenChain(stream,state,[")"],RXstyle,RXmodifiers);} - if(c=="["){ - eatSuffix(stream, 2); - return tokenChain(stream,state,["]"],RXstyle,RXmodifiers);} - if(c=="{"){ - eatSuffix(stream, 2); - return tokenChain(stream,state,["}"],RXstyle,RXmodifiers);} - if(c=="<"){ - eatSuffix(stream, 2); - return tokenChain(stream,state,[">"],RXstyle,RXmodifiers);} - if(/[\^'"!~\/]/.test(c)){ - eatSuffix(stream, 1); - return tokenChain(stream,state,[stream.eat(c)],RXstyle,RXmodifiers);}} - else if(/[\^'"!~\/(\[{<]/.test(c)){ - if(c=="("){ - eatSuffix(stream, 1); - return tokenChain(stream,state,[")"],"string");} - if(c=="["){ - eatSuffix(stream, 1); - return tokenChain(stream,state,["]"],"string");} - if(c=="{"){ - eatSuffix(stream, 1); - return tokenChain(stream,state,["}"],"string");} - if(c=="<"){ - eatSuffix(stream, 1); - return tokenChain(stream,state,[">"],"string");} - if(/[\^'"!~\/]/.test(c)){ - return tokenChain(stream,state,[stream.eat(c)],"string");}}}} - if(ch=="m"){ - var c=look(stream, -2); - if(!(c&&/\w/.test(c))){ - c=stream.eat(/[(\[{<\^'"!~\/]/); - if(c){ - if(/[\^'"!~\/]/.test(c)){ - return tokenChain(stream,state,[c],RXstyle,RXmodifiers);} - if(c=="("){ - return tokenChain(stream,state,[")"],RXstyle,RXmodifiers);} - if(c=="["){ - return tokenChain(stream,state,["]"],RXstyle,RXmodifiers);} - if(c=="{"){ - return tokenChain(stream,state,["}"],RXstyle,RXmodifiers);} - if(c=="<"){ - return tokenChain(stream,state,[">"],RXstyle,RXmodifiers);}}}} - if(ch=="s"){ - var c=/[\/>\]})\w]/.test(look(stream, -2)); - if(!c){ - c=stream.eat(/[(\[{<\^'"!~\/]/); - if(c){ - if(c=="[") - return tokenChain(stream,state,["]","]"],RXstyle,RXmodifiers); - if(c=="{") - return tokenChain(stream,state,["}","}"],RXstyle,RXmodifiers); - if(c=="<") - return tokenChain(stream,state,[">",">"],RXstyle,RXmodifiers); - if(c=="(") - return tokenChain(stream,state,[")",")"],RXstyle,RXmodifiers); - return tokenChain(stream,state,[c,c],RXstyle,RXmodifiers);}}} - if(ch=="y"){ - var c=/[\/>\]})\w]/.test(look(stream, -2)); - if(!c){ - c=stream.eat(/[(\[{<\^'"!~\/]/); - if(c){ - if(c=="[") - return tokenChain(stream,state,["]","]"],RXstyle,RXmodifiers); - if(c=="{") - return tokenChain(stream,state,["}","}"],RXstyle,RXmodifiers); - if(c=="<") - return tokenChain(stream,state,[">",">"],RXstyle,RXmodifiers); - if(c=="(") - return tokenChain(stream,state,[")",")"],RXstyle,RXmodifiers); - return tokenChain(stream,state,[c,c],RXstyle,RXmodifiers);}}} - if(ch=="t"){ - var c=/[\/>\]})\w]/.test(look(stream, -2)); - if(!c){ - c=stream.eat("r");if(c){ - c=stream.eat(/[(\[{<\^'"!~\/]/); - if(c){ - if(c=="[") - return tokenChain(stream,state,["]","]"],RXstyle,RXmodifiers); - if(c=="{") - return tokenChain(stream,state,["}","}"],RXstyle,RXmodifiers); - if(c=="<") - return tokenChain(stream,state,[">",">"],RXstyle,RXmodifiers); - if(c=="(") - return tokenChain(stream,state,[")",")"],RXstyle,RXmodifiers); - return tokenChain(stream,state,[c,c],RXstyle,RXmodifiers);}}}} - if(ch=="`"){ - return tokenChain(stream,state,[ch],"variable-2");} - if(ch=="/"){ - if(!/~\s*$/.test(prefix(stream))) - return "operator"; - else - return tokenChain(stream,state,[ch],RXstyle,RXmodifiers);} - if(ch=="$"){ - var p=stream.pos; - if(stream.eatWhile(/\d/)||stream.eat("{")&&stream.eatWhile(/\d/)&&stream.eat("}")) - return "variable-2"; - else - stream.pos=p;} - if(/[$@%]/.test(ch)){ - var p=stream.pos; - if(stream.eat("^")&&stream.eat(/[A-Z]/)||!/[@$%&]/.test(look(stream, -2))&&stream.eat(/[=|\\\-#?@;:&`~\^!\[\]*'"$+.,\/<>()]/)){ - var c=stream.current(); - if(PERL[c]) - return "variable-2";} - stream.pos=p;} - if(/[$@%&]/.test(ch)){ - if(stream.eatWhile(/[\w$\[\]]/)||stream.eat("{")&&stream.eatWhile(/[\w$\[\]]/)&&stream.eat("}")){ - var c=stream.current(); - if(PERL[c]) - return "variable-2"; - else - return "variable";}} - if(ch=="#"){ - if(look(stream, -2)!="$"){ - stream.skipToEnd(); - return "comment";}} - if(/[:+\-\^*$&%@=<>!?|\/~\.]/.test(ch)){ - var p=stream.pos; - stream.eatWhile(/[:+\-\^*$&%@=<>!?|\/~\.]/); - if(PERL[stream.current()]) - return "operator"; - else - stream.pos=p;} - if(ch=="_"){ - if(stream.pos==1){ - if(suffix(stream, 6)=="_END__"){ - return tokenChain(stream,state,['\0'],"comment");} - else if(suffix(stream, 7)=="_DATA__"){ - return tokenChain(stream,state,['\0'],"variable-2");} - else if(suffix(stream, 7)=="_C__"){ - return tokenChain(stream,state,['\0'],"string");}}} - if(/\w/.test(ch)){ - var p=stream.pos; - if(look(stream, -2)=="{"&&(look(stream, 0)=="}"||stream.eatWhile(/\w/)&&look(stream, 0)=="}")) - return "string"; - else - stream.pos=p;} - if(/[A-Z]/.test(ch)){ - var l=look(stream, -2); - var p=stream.pos; - stream.eatWhile(/[A-Z_]/); - if(/[\da-z]/.test(look(stream, 0))){ - stream.pos=p;} - else{ - var c=PERL[stream.current()]; - if(!c) - return "meta"; - if(c[1]) - c=c[0]; - if(l!=":"){ - if(c==1) - return "keyword"; - else if(c==2) - return "def"; - else if(c==3) - return "atom"; - else if(c==4) - return "operator"; - else if(c==5) - return "variable-2"; - else - return "meta";} - else - return "meta";}} - if(/[a-zA-Z_]/.test(ch)){ - var l=look(stream, -2); - stream.eatWhile(/\w/); - var c=PERL[stream.current()]; - if(!c) - return "meta"; - if(c[1]) - c=c[0]; - if(l!=":"){ - if(c==1) - return "keyword"; - else if(c==2) - return "def"; - else if(c==3) - return "atom"; - else if(c==4) - return "operator"; - else if(c==5) - return "variable-2"; - else - return "meta";} - else - return "meta";} - return null;} - - return{ - startState:function(){ - return{ - tokenize:tokenPerl, - chain:null, - style:null, - tail:null};}, - token:function(stream,state){ - return (state.tokenize||tokenPerl)(stream,state);} - };}); - -CodeMirror.registerHelper("wordChars", "perl", /[\w$]/); - -CodeMirror.defineMIME("text/x-perl", "perl"); - -// it's like "peek", but need for look-ahead or look-behind if index < 0 -function look(stream, c){ - return stream.string.charAt(stream.pos+(c||0)); -} - -// return a part of prefix of current stream from current position -function prefix(stream, c){ - if(c){ - var x=stream.pos-c; - return stream.string.substr((x>=0?x:0),c);} - else{ - return stream.string.substr(0,stream.pos-1); - } -} - -// return a part of suffix of current stream from current position -function suffix(stream, c){ - var y=stream.string.length; - var x=y-stream.pos+1; - return stream.string.substr(stream.pos,(c&&c<y?c:x)); -} - -// eating and vomiting a part of stream from current position -function eatSuffix(stream, c){ - var x=stream.pos+c; - var y; - if(x<=0) - stream.pos=0; - else if(x>=(y=stream.string.length-1)) - stream.pos=y; - else - stream.pos=x; -} - -}); diff --git a/assets/js/plugins/codemirror/mode/php/index.html b/assets/js/plugins/codemirror/mode/php/index.html deleted file mode 100644 index adf6b1be..00000000 --- a/assets/js/plugins/codemirror/mode/php/index.html +++ /dev/null @@ -1,64 +0,0 @@ -<!doctype html> - -<title>CodeMirror: PHP mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="../../addon/edit/matchbrackets.js"></script> -<script src="../htmlmixed/htmlmixed.js"></script> -<script src="../xml/xml.js"></script> -<script src="../javascript/javascript.js"></script> -<script src="../css/css.js"></script> -<script src="../clike/clike.js"></script> -<script src="php.js"></script> -<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">PHP</a> - </ul> -</div> - -<article> -<h2>PHP mode</h2> -<form><textarea id="code" name="code"> -<?php -$a = array('a' => 1, 'b' => 2, 3 => 'c'); - -echo "$a[a] ${a[3] /* } comment */} {$a[b]} \$a[a]"; - -function hello($who) { - return "Hello $who!"; -} -?> -<p>The program says <?= hello("World") ?>.</p> -<script> - alert("And here is some JS code"); // also colored -</script> -</textarea></form> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers: true, - matchBrackets: true, - mode: "application/x-httpd-php", - indentUnit: 4, - indentWithTabs: true - }); - </script> - - <p>Simple HTML/PHP mode based on - the <a href="../clike/">C-like</a> mode. Depends on XML, - JavaScript, CSS, HTMLMixed, and C-like modes.</p> - - <p><strong>MIME types defined:</strong> <code>application/x-httpd-php</code> (HTML with PHP code), <code>text/x-php</code> (plain, non-wrapped PHP code).</p> - </article> diff --git a/assets/js/plugins/codemirror/mode/php/php.js b/assets/js/plugins/codemirror/mode/php/php.js deleted file mode 100644 index e112d911..00000000 --- a/assets/js/plugins/codemirror/mode/php/php.js +++ /dev/null @@ -1,226 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), require("../clike/clike")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../htmlmixed/htmlmixed", "../clike/clike"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - function keywords(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - // Helper for stringWithEscapes - function matchSequence(list, end) { - if (list.length == 0) return stringWithEscapes(end); - return function (stream, state) { - var patterns = list[0]; - for (var i = 0; i < patterns.length; i++) if (stream.match(patterns[i][0])) { - state.tokenize = matchSequence(list.slice(1), end); - return patterns[i][1]; - } - state.tokenize = stringWithEscapes(end); - return "string"; - }; - } - function stringWithEscapes(closing) { - return function(stream, state) { return stringWithEscapes_(stream, state, closing); }; - } - function stringWithEscapes_(stream, state, closing) { - // "Complex" syntax - if (stream.match("${", false) || stream.match("{$", false)) { - state.tokenize = null; - return "string"; - } - - // Simple syntax - if (stream.match(/^\$[a-zA-Z_][a-zA-Z0-9_]*/)) { - // After the variable name there may appear array or object operator. - if (stream.match("[", false)) { - // Match array operator - state.tokenize = matchSequence([ - [["[", null]], - [[/\d[\w\.]*/, "number"], - [/\$[a-zA-Z_][a-zA-Z0-9_]*/, "variable-2"], - [/[\w\$]+/, "variable"]], - [["]", null]] - ], closing); - } - if (stream.match(/\-\>\w/, false)) { - // Match object operator - state.tokenize = matchSequence([ - [["->", null]], - [[/[\w]+/, "variable"]] - ], closing); - } - return "variable-2"; - } - - var escaped = false; - // Normal string - while (!stream.eol() && - (escaped || (!stream.match("{$", false) && - !stream.match(/^(\$[a-zA-Z_][a-zA-Z0-9_]*|\$\{)/, false)))) { - if (!escaped && stream.match(closing)) { - state.tokenize = null; - state.tokStack.pop(); state.tokStack.pop(); - break; - } - escaped = stream.next() == "\\" && !escaped; - } - return "string"; - } - - var phpKeywords = "abstract and array as break case catch class clone const continue declare default " + - "do else elseif enddeclare endfor endforeach endif endswitch endwhile extends final " + - "for foreach function global goto if implements interface instanceof namespace " + - "new or private protected public static switch throw trait try use var while xor " + - "die echo empty exit eval include include_once isset list require require_once return " + - "print unset __halt_compiler self static parent yield insteadof finally"; - var phpAtoms = "true false null TRUE FALSE NULL __CLASS__ __DIR__ __FILE__ __LINE__ __METHOD__ __FUNCTION__ __NAMESPACE__ __TRAIT__"; - var phpBuiltin = "func_num_args func_get_arg func_get_args strlen strcmp strncmp strcasecmp strncasecmp each error_reporting define defined trigger_error user_error set_error_handler restore_error_handler get_declared_classes get_loaded_extensions extension_loaded get_extension_funcs debug_backtrace constant bin2hex hex2bin sleep usleep time mktime gmmktime strftime gmstrftime strtotime date gmdate getdate localtime checkdate flush wordwrap htmlspecialchars htmlentities html_entity_decode md5 md5_file crc32 getimagesize image_type_to_mime_type phpinfo phpversion phpcredits strnatcmp strnatcasecmp substr_count strspn strcspn strtok strtoupper strtolower strpos strrpos strrev hebrev hebrevc nl2br basename dirname pathinfo stripslashes stripcslashes strstr stristr strrchr str_shuffle str_word_count strcoll substr substr_replace quotemeta ucfirst ucwords strtr addslashes addcslashes rtrim str_replace str_repeat count_chars chunk_split trim ltrim strip_tags similar_text explode implode setlocale localeconv parse_str str_pad chop strchr sprintf printf vprintf vsprintf sscanf fscanf parse_url urlencode urldecode rawurlencode rawurldecode readlink linkinfo link unlink exec system escapeshellcmd escapeshellarg passthru shell_exec proc_open proc_close rand srand getrandmax mt_rand mt_srand mt_getrandmax base64_decode base64_encode abs ceil floor round is_finite is_nan is_infinite bindec hexdec octdec decbin decoct dechex base_convert number_format fmod ip2long long2ip getenv putenv getopt microtime gettimeofday getrusage uniqid quoted_printable_decode set_time_limit get_cfg_var magic_quotes_runtime set_magic_quotes_runtime get_magic_quotes_gpc get_magic_quotes_runtime import_request_variables error_log serialize unserialize memory_get_usage var_dump var_export debug_zval_dump print_r highlight_file show_source highlight_string ini_get ini_get_all ini_set ini_alter ini_restore get_include_path set_include_path restore_include_path setcookie header headers_sent connection_aborted connection_status ignore_user_abort parse_ini_file is_uploaded_file move_uploaded_file intval floatval doubleval strval gettype settype is_null is_resource is_bool is_long is_float is_int is_integer is_double is_real is_numeric is_string is_array is_object is_scalar ereg ereg_replace eregi eregi_replace split spliti join sql_regcase dl pclose popen readfile rewind rmdir umask fclose feof fgetc fgets fgetss fread fopen fpassthru ftruncate fstat fseek ftell fflush fwrite fputs mkdir rename copy tempnam tmpfile file file_get_contents stream_select stream_context_create stream_context_set_params stream_context_set_option stream_context_get_options stream_filter_prepend stream_filter_append fgetcsv flock get_meta_tags stream_set_write_buffer set_file_buffer set_socket_blocking stream_set_blocking socket_set_blocking stream_get_meta_data stream_register_wrapper stream_wrapper_register stream_set_timeout socket_set_timeout socket_get_status realpath fnmatch fsockopen pfsockopen pack unpack get_browser crypt opendir closedir chdir getcwd rewinddir readdir dir glob fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype file_exists is_writable is_writeable is_readable is_executable is_file is_dir is_link stat lstat chown touch clearstatcache mail ob_start ob_flush ob_clean ob_end_flush ob_end_clean ob_get_flush ob_get_clean ob_get_length ob_get_level ob_get_status ob_get_contents ob_implicit_flush ob_list_handlers ksort krsort natsort natcasesort asort arsort sort rsort usort uasort uksort shuffle array_walk count end prev next reset current key min max in_array array_search extract compact array_fill range array_multisort array_push array_pop array_shift array_unshift array_splice array_slice array_merge array_merge_recursive array_keys array_values array_count_values array_reverse array_reduce array_pad array_flip array_change_key_case array_rand array_unique array_intersect array_intersect_assoc array_diff array_diff_assoc array_sum array_filter array_map array_chunk array_key_exists pos sizeof key_exists assert assert_options version_compare ftok str_rot13 aggregate session_name session_module_name session_save_path session_id session_regenerate_id session_decode session_register session_unregister session_is_registered session_encode session_start session_destroy session_unset session_set_save_handler session_cache_limiter session_cache_expire session_set_cookie_params session_get_cookie_params session_write_close preg_match preg_match_all preg_replace preg_replace_callback preg_split preg_quote preg_grep overload ctype_alnum ctype_alpha ctype_cntrl ctype_digit ctype_lower ctype_graph ctype_print ctype_punct ctype_space ctype_upper ctype_xdigit virtual apache_request_headers apache_note apache_lookup_uri apache_child_terminate apache_setenv apache_response_headers apache_get_version getallheaders mysql_connect mysql_pconnect mysql_close mysql_select_db mysql_create_db mysql_drop_db mysql_query mysql_unbuffered_query mysql_db_query mysql_list_dbs mysql_list_tables mysql_list_fields mysql_list_processes mysql_error mysql_errno mysql_affected_rows mysql_insert_id mysql_result mysql_num_rows mysql_num_fields mysql_fetch_row mysql_fetch_array mysql_fetch_assoc mysql_fetch_object mysql_data_seek mysql_fetch_lengths mysql_fetch_field mysql_field_seek mysql_free_result mysql_field_name mysql_field_table mysql_field_len mysql_field_type mysql_field_flags mysql_escape_string mysql_real_escape_string mysql_stat mysql_thread_id mysql_client_encoding mysql_get_client_info mysql_get_host_info mysql_get_proto_info mysql_get_server_info mysql_info mysql mysql_fieldname mysql_fieldtable mysql_fieldlen mysql_fieldtype mysql_fieldflags mysql_selectdb mysql_createdb mysql_dropdb mysql_freeresult mysql_numfields mysql_numrows mysql_listdbs mysql_listtables mysql_listfields mysql_db_name mysql_dbname mysql_tablename mysql_table_name pg_connect pg_pconnect pg_close pg_connection_status pg_connection_busy pg_connection_reset pg_host pg_dbname pg_port pg_tty pg_options pg_ping pg_query pg_send_query pg_cancel_query pg_fetch_result pg_fetch_row pg_fetch_assoc pg_fetch_array pg_fetch_object pg_fetch_all pg_affected_rows pg_get_result pg_result_seek pg_result_status pg_free_result pg_last_oid pg_num_rows pg_num_fields pg_field_name pg_field_num pg_field_size pg_field_type pg_field_prtlen pg_field_is_null pg_get_notify pg_get_pid pg_result_error pg_last_error pg_last_notice pg_put_line pg_end_copy pg_copy_to pg_copy_from pg_trace pg_untrace pg_lo_create pg_lo_unlink pg_lo_open pg_lo_close pg_lo_read pg_lo_write pg_lo_read_all pg_lo_import pg_lo_export pg_lo_seek pg_lo_tell pg_escape_string pg_escape_bytea pg_unescape_bytea pg_client_encoding pg_set_client_encoding pg_meta_data pg_convert pg_insert pg_update pg_delete pg_select pg_exec pg_getlastoid pg_cmdtuples pg_errormessage pg_numrows pg_numfields pg_fieldname pg_fieldsize pg_fieldtype pg_fieldnum pg_fieldprtlen pg_fieldisnull pg_freeresult pg_result pg_loreadall pg_locreate pg_lounlink pg_loopen pg_loclose pg_loread pg_lowrite pg_loimport pg_loexport http_response_code get_declared_traits getimagesizefromstring socket_import_stream stream_set_chunk_size trait_exists header_register_callback class_uses session_status session_register_shutdown echo print global static exit array empty eval isset unset die include require include_once require_once json_decode json_encode json_last_error json_last_error_msg curl_close curl_copy_handle curl_errno curl_error curl_escape curl_exec curl_file_create curl_getinfo curl_init curl_multi_add_handle curl_multi_close curl_multi_exec curl_multi_getcontent curl_multi_info_read curl_multi_init curl_multi_remove_handle curl_multi_select curl_multi_setopt curl_multi_strerror curl_pause curl_reset curl_setopt_array curl_setopt curl_share_close curl_share_init curl_share_setopt curl_strerror curl_unescape curl_version mysqli_affected_rows mysqli_autocommit mysqli_change_user mysqli_character_set_name mysqli_close mysqli_commit mysqli_connect_errno mysqli_connect_error mysqli_connect mysqli_data_seek mysqli_debug mysqli_dump_debug_info mysqli_errno mysqli_error_list mysqli_error mysqli_fetch_all mysqli_fetch_array mysqli_fetch_assoc mysqli_fetch_field_direct mysqli_fetch_field mysqli_fetch_fields mysqli_fetch_lengths mysqli_fetch_object mysqli_fetch_row mysqli_field_count mysqli_field_seek mysqli_field_tell mysqli_free_result mysqli_get_charset mysqli_get_client_info mysqli_get_client_stats mysqli_get_client_version mysqli_get_connection_stats mysqli_get_host_info mysqli_get_proto_info mysqli_get_server_info mysqli_get_server_version mysqli_info mysqli_init mysqli_insert_id mysqli_kill mysqli_more_results mysqli_multi_query mysqli_next_result mysqli_num_fields mysqli_num_rows mysqli_options mysqli_ping mysqli_prepare mysqli_query mysqli_real_connect mysqli_real_escape_string mysqli_real_query mysqli_reap_async_query mysqli_refresh mysqli_rollback mysqli_select_db mysqli_set_charset mysqli_set_local_infile_default mysqli_set_local_infile_handler mysqli_sqlstate mysqli_ssl_set mysqli_stat mysqli_stmt_init mysqli_store_result mysqli_thread_id mysqli_thread_safe mysqli_use_result mysqli_warning_count"; - CodeMirror.registerHelper("hintWords", "php", [phpKeywords, phpAtoms, phpBuiltin].join(" ").split(" ")); - CodeMirror.registerHelper("wordChars", "php", /[\w$]/); - - var phpConfig = { - name: "clike", - helperType: "php", - keywords: keywords(phpKeywords), - blockKeywords: keywords("catch do else elseif for foreach if switch try while finally"), - atoms: keywords(phpAtoms), - builtin: keywords(phpBuiltin), - multiLineStrings: true, - hooks: { - "$": function(stream) { - stream.eatWhile(/[\w\$_]/); - return "variable-2"; - }, - "<": function(stream, state) { - if (stream.match(/<</)) { - stream.eatWhile(/[\w\.]/); - var delim = stream.current().slice(3); - if (delim) { - (state.tokStack || (state.tokStack = [])).push(delim, 0); - state.tokenize = stringWithEscapes(delim); - return "string"; - } - } - return false; - }, - "#": function(stream) { - while (!stream.eol() && !stream.match("?>", false)) stream.next(); - return "comment"; - }, - "/": function(stream) { - if (stream.eat("/")) { - while (!stream.eol() && !stream.match("?>", false)) stream.next(); - return "comment"; - } - return false; - }, - '"': function(_stream, state) { - (state.tokStack || (state.tokStack = [])).push('"', 0); - state.tokenize = stringWithEscapes('"'); - return "string"; - }, - "{": function(_stream, state) { - if (state.tokStack && state.tokStack.length) - state.tokStack[state.tokStack.length - 1]++; - return false; - }, - "}": function(_stream, state) { - if (state.tokStack && state.tokStack.length > 0 && - !--state.tokStack[state.tokStack.length - 1]) { - state.tokenize = stringWithEscapes(state.tokStack[state.tokStack.length - 2]); - } - return false; - } - } - }; - - CodeMirror.defineMode("php", function(config, parserConfig) { - var htmlMode = CodeMirror.getMode(config, "text/html"); - var phpMode = CodeMirror.getMode(config, phpConfig); - - function dispatch(stream, state) { - var isPHP = state.curMode == phpMode; - if (stream.sol() && state.pending && state.pending != '"' && state.pending != "'") state.pending = null; - if (!isPHP) { - if (stream.match(/^<\?\w*/)) { - state.curMode = phpMode; - state.curState = state.php; - return "meta"; - } - if (state.pending == '"' || state.pending == "'") { - while (!stream.eol() && stream.next() != state.pending) {} - var style = "string"; - } else if (state.pending && stream.pos < state.pending.end) { - stream.pos = state.pending.end; - var style = state.pending.style; - } else { - var style = htmlMode.token(stream, state.curState); - } - if (state.pending) state.pending = null; - var cur = stream.current(), openPHP = cur.search(/<\?/), m; - if (openPHP != -1) { - if (style == "string" && (m = cur.match(/[\'\"]$/)) && !/\?>/.test(cur)) state.pending = m[0]; - else state.pending = {end: stream.pos, style: style}; - stream.backUp(cur.length - openPHP); - } - return style; - } else if (isPHP && state.php.tokenize == null && stream.match("?>")) { - state.curMode = htmlMode; - state.curState = state.html; - return "meta"; - } else { - return phpMode.token(stream, state.curState); - } - } - - return { - startState: function() { - var html = CodeMirror.startState(htmlMode), php = CodeMirror.startState(phpMode); - return {html: html, - php: php, - curMode: parserConfig.startOpen ? phpMode : htmlMode, - curState: parserConfig.startOpen ? php : html, - pending: null}; - }, - - copyState: function(state) { - var html = state.html, htmlNew = CodeMirror.copyState(htmlMode, html), - php = state.php, phpNew = CodeMirror.copyState(phpMode, php), cur; - if (state.curMode == htmlMode) cur = htmlNew; - else cur = phpNew; - return {html: htmlNew, php: phpNew, curMode: state.curMode, curState: cur, - pending: state.pending}; - }, - - token: dispatch, - - indent: function(state, textAfter) { - if ((state.curMode != phpMode && /^\s*<\//.test(textAfter)) || - (state.curMode == phpMode && /^\?>/.test(textAfter))) - return htmlMode.indent(state.html, textAfter); - return state.curMode.indent(state.curState, textAfter); - }, - - blockCommentStart: "/*", - blockCommentEnd: "*/", - lineComment: "//", - - innerMode: function(state) { return {state: state.curState, mode: state.curMode}; } - }; - }, "htmlmixed", "clike"); - - CodeMirror.defineMIME("application/x-httpd-php", "php"); - CodeMirror.defineMIME("application/x-httpd-php-open", {name: "php", startOpen: true}); - CodeMirror.defineMIME("text/x-php", phpConfig); -}); diff --git a/assets/js/plugins/codemirror/mode/php/test.js b/assets/js/plugins/codemirror/mode/php/test.js deleted file mode 100644 index e2ecefc1..00000000 --- a/assets/js/plugins/codemirror/mode/php/test.js +++ /dev/null @@ -1,154 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - var mode = CodeMirror.getMode({indentUnit: 2}, "php"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - - MT('simple_test', - '[meta <?php] ' + - '[keyword echo] [string "aaa"]; ' + - '[meta ?>]'); - - MT('variable_interpolation_non_alphanumeric', - '[meta <?php]', - '[keyword echo] [string "aaa$~$!$@$#$$$%$^$&$*$($)$.$<$>$/$\\$}$\\\"$:$;$?$|$[[$]]$+$=aaa"]', - '[meta ?>]'); - - MT('variable_interpolation_digits', - '[meta <?php]', - '[keyword echo] [string "aaa$1$2$3$4$5$6$7$8$9$0aaa"]', - '[meta ?>]'); - - MT('variable_interpolation_simple_syntax_1', - '[meta <?php]', - '[keyword echo] [string "aaa][variable-2 $aaa][string .aaa"];', - '[meta ?>]'); - - MT('variable_interpolation_simple_syntax_2', - '[meta <?php]', - '[keyword echo] [string "][variable-2 $aaaa][[','[number 2]', ']][string aa"];', - '[keyword echo] [string "][variable-2 $aaaa][[','[number 2345]', ']][string aa"];', - '[keyword echo] [string "][variable-2 $aaaa][[','[number 2.3]', ']][string aa"];', - '[keyword echo] [string "][variable-2 $aaaa][[','[variable aaaaa]', ']][string aa"];', - '[keyword echo] [string "][variable-2 $aaaa][[','[variable-2 $aaaaa]',']][string aa"];', - - '[keyword echo] [string "1aaa][variable-2 $aaaa][[','[number 2]', ']][string aa"];', - '[keyword echo] [string "aaa][variable-2 $aaaa][[','[number 2345]', ']][string aa"];', - '[keyword echo] [string "aaa][variable-2 $aaaa][[','[number 2.3]', ']][string aa"];', - '[keyword echo] [string "aaa][variable-2 $aaaa][[','[variable aaaaa]', ']][string aa"];', - '[keyword echo] [string "aaa][variable-2 $aaaa][[','[variable-2 $aaaaa]',']][string aa"];', - '[meta ?>]'); - - MT('variable_interpolation_simple_syntax_3', - '[meta <?php]', - '[keyword echo] [string "aaa][variable-2 $aaaa]->[variable aaaaa][string .aaaaaa"];', - '[keyword echo] [string "aaa][variable-2 $aaaa][string ->][variable-2 $aaaaa][string .aaaaaa"];', - '[keyword echo] [string "aaa][variable-2 $aaaa]->[variable aaaaa][string [[2]].aaaaaa"];', - '[keyword echo] [string "aaa][variable-2 $aaaa]->[variable aaaaa][string ->aaaa2.aaaaaa"];', - '[meta ?>]'); - - MT('variable_interpolation_escaping', - '[meta <?php] [comment /* Escaping */]', - '[keyword echo] [string "aaa\\$aaaa->aaa.aaa"];', - '[keyword echo] [string "aaa\\$aaaa[[2]]aaa.aaa"];', - '[keyword echo] [string "aaa\\$aaaa[[asd]]aaa.aaa"];', - '[keyword echo] [string "aaa{\\$aaaa->aaa.aaa"];', - '[keyword echo] [string "aaa{\\$aaaa[[2]]aaa.aaa"];', - '[keyword echo] [string "aaa{\\aaaaa[[asd]]aaa.aaa"];', - '[keyword echo] [string "aaa\\${aaaa->aaa.aaa"];', - '[keyword echo] [string "aaa\\${aaaa[[2]]aaa.aaa"];', - '[keyword echo] [string "aaa\\${aaaa[[asd]]aaa.aaa"];', - '[meta ?>]'); - - MT('variable_interpolation_complex_syntax_1', - '[meta <?php]', - '[keyword echo] [string "aaa][variable-2 $]{[variable aaaa]}[string ->aaa.aaa"];', - '[keyword echo] [string "aaa][variable-2 $]{[variable-2 $aaaa]}[string ->aaa.aaa"];', - '[keyword echo] [string "aaa][variable-2 $]{[variable-2 $aaaa][[',' [number 42]',']]}[string ->aaa.aaa"];', - '[keyword echo] [string "aaa][variable-2 $]{[variable aaaa][meta ?>]aaaaaa'); - - MT('variable_interpolation_complex_syntax_2', - '[meta <?php] [comment /* Monsters */]', - '[keyword echo] [string "][variable-2 $]{[variable aaa][comment /*}?>} $aaa<?php } */]}[string ->aaa.aaa"];', - '[keyword echo] [string "][variable-2 $]{[variable aaa][comment /*}?>*/][[',' [string "aaa][variable-2 $aaa][string {}][variable-2 $]{[variable aaa]}[string "]',']]}[string ->aaa.aaa"];', - '[keyword echo] [string "][variable-2 $]{[variable aaa][comment /*} } $aaa } */]}[string ->aaa.aaa"];'); - - - function build_recursive_monsters(nt, t, n){ - var monsters = [t]; - for (var i = 1; i <= n; ++i) - monsters[i] = nt.join(monsters[i - 1]); - return monsters; - } - - var m1 = build_recursive_monsters( - ['[string "][variable-2 $]{[variable aaa] [operator +] ', '}[string "]'], - '[comment /* }?>} */] [string "aaa][variable-2 $aaa][string .aaa"]', - 10 - ); - - MT('variable_interpolation_complex_syntax_3_1', - '[meta <?php] [comment /* Recursive monsters */]', - '[keyword echo] ' + m1[4] + ';', - '[keyword echo] ' + m1[7] + ';', - '[keyword echo] ' + m1[8] + ';', - '[keyword echo] ' + m1[5] + ';', - '[keyword echo] ' + m1[1] + ';', - '[keyword echo] ' + m1[6] + ';', - '[keyword echo] ' + m1[9] + ';', - '[keyword echo] ' + m1[0] + ';', - '[keyword echo] ' + m1[10] + ';', - '[keyword echo] ' + m1[2] + ';', - '[keyword echo] ' + m1[3] + ';', - '[keyword echo] [string "end"];', - '[meta ?>]'); - - var m2 = build_recursive_monsters( - ['[string "a][variable-2 $]{[variable aaa] [operator +] ', ' [operator +] ', '}[string .a"]'], - '[comment /* }?>{{ */] [string "a?>}{{aa][variable-2 $aaa][string .a}a?>a"]', - 5 - ); - - MT('variable_interpolation_complex_syntax_3_2', - '[meta <?php] [comment /* Recursive monsters 2 */]', - '[keyword echo] ' + m2[0] + ';', - '[keyword echo] ' + m2[1] + ';', - '[keyword echo] ' + m2[5] + ';', - '[keyword echo] ' + m2[4] + ';', - '[keyword echo] ' + m2[2] + ';', - '[keyword echo] ' + m2[3] + ';', - '[keyword echo] [string "end"];', - '[meta ?>]'); - - function build_recursive_monsters_2(mf1, mf2, nt, t, n){ - var monsters = [t]; - for (var i = 1; i <= n; ++i) - monsters[i] = nt[0] + mf1[i - 1] + nt[1] + mf2[i - 1] + nt[2] + monsters[i - 1] + nt[3]; - return monsters; - } - - var m3 = build_recursive_monsters_2( - m1, - m2, - ['[string "a][variable-2 $]{[variable aaa] [operator +] ', ' [operator +] ', ' [operator +] ', '}[string .a"]'], - '[comment /* }?>{{ */] [string "a?>}{{aa][variable-2 $aaa][string .a}a?>a"]', - 4 - ); - - MT('variable_interpolation_complex_syntax_3_3', - '[meta <?php] [comment /* Recursive monsters 2 */]', - '[keyword echo] ' + m3[4] + ';', - '[keyword echo] ' + m3[0] + ';', - '[keyword echo] ' + m3[3] + ';', - '[keyword echo] ' + m3[1] + ';', - '[keyword echo] ' + m3[2] + ';', - '[keyword echo] [string "end"];', - '[meta ?>]'); - - MT("variable_interpolation_heredoc", - "[meta <?php]", - "[string <<<here]", - "[string doc ][variable-2 $]{[variable yay]}[string more]", - "[string here]; [comment // normal]"); -})(); diff --git a/assets/js/plugins/codemirror/mode/pig/index.html b/assets/js/plugins/codemirror/mode/pig/index.html deleted file mode 100644 index 984c9a18..00000000 --- a/assets/js/plugins/codemirror/mode/pig/index.html +++ /dev/null @@ -1,55 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Pig Latin mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="pig.js"></script> -<style>.CodeMirror {border: 2px inset #dee;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Pig Latin</a> - </ul> -</div> - -<article> -<h2>Pig Latin mode</h2> -<form><textarea id="code" name="code"> --- Apache Pig (Pig Latin Language) Demo -/* -This is a multiline comment. -*/ -a = LOAD "\path\to\input" USING PigStorage('\t') AS (x:long, y:chararray, z:bytearray); -b = GROUP a BY (x,y,3+4); -c = FOREACH b GENERATE flatten(group) as (x,y), SUM(group.$2) as z; -STORE c INTO "\path\to\output"; - --- -</textarea></form> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers: true, - indentUnit: 4, - mode: "text/x-pig" - }); - </script> - - <p> - Simple mode that handles Pig Latin language. - </p> - - <p><strong>MIME type defined:</strong> <code>text/x-pig</code> - (PIG code) -</html> -</article> diff --git a/assets/js/plugins/codemirror/mode/pig/pig.js b/assets/js/plugins/codemirror/mode/pig/pig.js deleted file mode 100644 index c74b2cc8..00000000 --- a/assets/js/plugins/codemirror/mode/pig/pig.js +++ /dev/null @@ -1,188 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/* - * Pig Latin Mode for CodeMirror 2 - * @author Prasanth Jayachandran - * @link https://github.com/prasanthj/pig-codemirror-2 - * This implementation is adapted from PL/SQL mode in CodeMirror 2. - */ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("pig", function(_config, parserConfig) { - var keywords = parserConfig.keywords, - builtins = parserConfig.builtins, - types = parserConfig.types, - multiLineStrings = parserConfig.multiLineStrings; - - var isOperatorChar = /[*+\-%<>=&?:\/!|]/; - - function chain(stream, state, f) { - state.tokenize = f; - return f(stream, state); - } - - var type; - function ret(tp, style) { - type = tp; - return style; - } - - function tokenComment(stream, state) { - var isEnd = false; - var ch; - while(ch = stream.next()) { - if(ch == "/" && isEnd) { - state.tokenize = tokenBase; - break; - } - isEnd = (ch == "*"); - } - return ret("comment", "comment"); - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next, end = false; - while((next = stream.next()) != null) { - if (next == quote && !escaped) { - end = true; break; - } - escaped = !escaped && next == "\\"; - } - if (end || !(escaped || multiLineStrings)) - state.tokenize = tokenBase; - return ret("string", "error"); - }; - } - - function tokenBase(stream, state) { - var ch = stream.next(); - - // is a start of string? - if (ch == '"' || ch == "'") - return chain(stream, state, tokenString(ch)); - // is it one of the special chars - else if(/[\[\]{}\(\),;\.]/.test(ch)) - return ret(ch); - // is it a number? - else if(/\d/.test(ch)) { - stream.eatWhile(/[\w\.]/); - return ret("number", "number"); - } - // multi line comment or operator - else if (ch == "/") { - if (stream.eat("*")) { - return chain(stream, state, tokenComment); - } - else { - stream.eatWhile(isOperatorChar); - return ret("operator", "operator"); - } - } - // single line comment or operator - else if (ch=="-") { - if(stream.eat("-")){ - stream.skipToEnd(); - return ret("comment", "comment"); - } - else { - stream.eatWhile(isOperatorChar); - return ret("operator", "operator"); - } - } - // is it an operator - else if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return ret("operator", "operator"); - } - else { - // get the while word - stream.eatWhile(/[\w\$_]/); - // is it one of the listed keywords? - if (keywords && keywords.propertyIsEnumerable(stream.current().toUpperCase())) { - if (stream.eat(")") || stream.eat(".")) { - //keywords can be used as variables like flatten(group), group.$0 etc.. - } - else { - return ("keyword", "keyword"); - } - } - // is it one of the builtin functions? - if (builtins && builtins.propertyIsEnumerable(stream.current().toUpperCase())) - { - return ("keyword", "variable-2"); - } - // is it one of the listed types? - if (types && types.propertyIsEnumerable(stream.current().toUpperCase())) - return ("keyword", "variable-3"); - // default is a 'variable' - return ret("variable", "pig-word"); - } - } - - // Interface - return { - startState: function() { - return { - tokenize: tokenBase, - startOfLine: true - }; - }, - - token: function(stream, state) { - if(stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - return style; - } - }; -}); - -(function() { - function keywords(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - // builtin funcs taken from trunk revision 1303237 - var pBuiltins = "ABS ACOS ARITY ASIN ATAN AVG BAGSIZE BINSTORAGE BLOOM BUILDBLOOM CBRT CEIL " - + "CONCAT COR COS COSH COUNT COUNT_STAR COV CONSTANTSIZE CUBEDIMENSIONS DIFF DISTINCT DOUBLEABS " - + "DOUBLEAVG DOUBLEBASE DOUBLEMAX DOUBLEMIN DOUBLEROUND DOUBLESUM EXP FLOOR FLOATABS FLOATAVG " - + "FLOATMAX FLOATMIN FLOATROUND FLOATSUM GENERICINVOKER INDEXOF INTABS INTAVG INTMAX INTMIN " - + "INTSUM INVOKEFORDOUBLE INVOKEFORFLOAT INVOKEFORINT INVOKEFORLONG INVOKEFORSTRING INVOKER " - + "ISEMPTY JSONLOADER JSONMETADATA JSONSTORAGE LAST_INDEX_OF LCFIRST LOG LOG10 LOWER LONGABS " - + "LONGAVG LONGMAX LONGMIN LONGSUM MAX MIN MAPSIZE MONITOREDUDF NONDETERMINISTIC OUTPUTSCHEMA " - + "PIGSTORAGE PIGSTREAMING RANDOM REGEX_EXTRACT REGEX_EXTRACT_ALL REPLACE ROUND SIN SINH SIZE " - + "SQRT STRSPLIT SUBSTRING SUM STRINGCONCAT STRINGMAX STRINGMIN STRINGSIZE TAN TANH TOBAG " - + "TOKENIZE TOMAP TOP TOTUPLE TRIM TEXTLOADER TUPLESIZE UCFIRST UPPER UTF8STORAGECONVERTER "; - - // taken from QueryLexer.g - var pKeywords = "VOID IMPORT RETURNS DEFINE LOAD FILTER FOREACH ORDER CUBE DISTINCT COGROUP " - + "JOIN CROSS UNION SPLIT INTO IF OTHERWISE ALL AS BY USING INNER OUTER ONSCHEMA PARALLEL " - + "PARTITION GROUP AND OR NOT GENERATE FLATTEN ASC DESC IS STREAM THROUGH STORE MAPREDUCE " - + "SHIP CACHE INPUT OUTPUT STDERROR STDIN STDOUT LIMIT SAMPLE LEFT RIGHT FULL EQ GT LT GTE LTE " - + "NEQ MATCHES TRUE FALSE DUMP"; - - // data types - var pTypes = "BOOLEAN INT LONG FLOAT DOUBLE CHARARRAY BYTEARRAY BAG TUPLE MAP "; - - CodeMirror.defineMIME("text/x-pig", { - name: "pig", - builtins: keywords(pBuiltins), - keywords: keywords(pKeywords), - types: keywords(pTypes) - }); - - CodeMirror.registerHelper("hintWords", "pig", (pBuiltins + pTypes + pKeywords).split(" ")); -}()); - -}); diff --git a/assets/js/plugins/codemirror/mode/properties/index.html b/assets/js/plugins/codemirror/mode/properties/index.html deleted file mode 100644 index f885302d..00000000 --- a/assets/js/plugins/codemirror/mode/properties/index.html +++ /dev/null @@ -1,53 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Properties files mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="properties.js"></script> -<style>.CodeMirror {border-top: 1px solid #ddd; border-bottom: 1px solid #ddd;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Properties files</a> - </ul> -</div> - -<article> -<h2>Properties files mode</h2> -<form><textarea id="code" name="code"> -# This is a properties file -a.key = A value -another.key = http://example.com -! Exclamation mark as comment -but.not=Within ! A value # indeed - # Spaces at the beginning of a line - spaces.before.key=value -backslash=Used for multi\ - line entries,\ - that's convenient. -# Unicode sequences -unicode.key=This is \u0020 Unicode -no.multiline=here -# Colons -colons : can be used too -# Spaces -spaces\ in\ keys=Not very common... -</textarea></form> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), {}); - </script> - - <p><strong>MIME types defined:</strong> <code>text/x-properties</code>, - <code>text/x-ini</code>.</p> - - </article> diff --git a/assets/js/plugins/codemirror/mode/properties/properties.js b/assets/js/plugins/codemirror/mode/properties/properties.js deleted file mode 100644 index 07400842..00000000 --- a/assets/js/plugins/codemirror/mode/properties/properties.js +++ /dev/null @@ -1,78 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("properties", function() { - return { - token: function(stream, state) { - var sol = stream.sol() || state.afterSection; - var eol = stream.eol(); - - state.afterSection = false; - - if (sol) { - if (state.nextMultiline) { - state.inMultiline = true; - state.nextMultiline = false; - } else { - state.position = "def"; - } - } - - if (eol && ! state.nextMultiline) { - state.inMultiline = false; - state.position = "def"; - } - - if (sol) { - while(stream.eatSpace()); - } - - var ch = stream.next(); - - if (sol && (ch === "#" || ch === "!" || ch === ";")) { - state.position = "comment"; - stream.skipToEnd(); - return "comment"; - } else if (sol && ch === "[") { - state.afterSection = true; - stream.skipTo("]"); stream.eat("]"); - return "header"; - } else if (ch === "=" || ch === ":") { - state.position = "quote"; - return null; - } else if (ch === "\\" && state.position === "quote") { - if (stream.next() !== "u") { // u = Unicode sequence \u1234 - // Multiline value - state.nextMultiline = true; - } - } - - return state.position; - }, - - startState: function() { - return { - position : "def", // Current position, "def", "quote" or "comment" - nextMultiline : false, // Is the next line multiline value - inMultiline : false, // Is the current line a multiline value - afterSection : false // Did we just open a section - }; - } - - }; -}); - -CodeMirror.defineMIME("text/x-properties", "properties"); -CodeMirror.defineMIME("text/x-ini", "properties"); - -}); diff --git a/assets/js/plugins/codemirror/mode/puppet/index.html b/assets/js/plugins/codemirror/mode/puppet/index.html deleted file mode 100644 index 5614c369..00000000 --- a/assets/js/plugins/codemirror/mode/puppet/index.html +++ /dev/null @@ -1,121 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Puppet mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="../../addon/edit/matchbrackets.js"></script> -<script src="puppet.js"></script> -<style> - .CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;} - .cm-s-default span.cm-arrow { color: red; } - </style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Puppet</a> - </ul> -</div> - -<article> -<h2>Puppet mode</h2> -<form><textarea id="code" name="code"> -# == Class: automysqlbackup -# -# Puppet module to install AutoMySQLBackup for periodic MySQL backups. -# -# class { 'automysqlbackup': -# backup_dir => '/mnt/backups', -# } -# - -class automysqlbackup ( - $bin_dir = $automysqlbackup::params::bin_dir, - $etc_dir = $automysqlbackup::params::etc_dir, - $backup_dir = $automysqlbackup::params::backup_dir, - $install_multicore = undef, - $config = {}, - $config_defaults = {}, -) inherits automysqlbackup::params { - -# Ensure valid paths are assigned - validate_absolute_path($bin_dir) - validate_absolute_path($etc_dir) - validate_absolute_path($backup_dir) - -# Create a subdirectory in /etc for config files - file { $etc_dir: - ensure => directory, - owner => 'root', - group => 'root', - mode => '0750', - } - -# Create an example backup file, useful for reference - file { "${etc_dir}/automysqlbackup.conf.example": - ensure => file, - owner => 'root', - group => 'root', - mode => '0660', - source => 'puppet:///modules/automysqlbackup/automysqlbackup.conf', - } - -# Add files from the developer - file { "${etc_dir}/AMB_README": - ensure => file, - source => 'puppet:///modules/automysqlbackup/AMB_README', - } - file { "${etc_dir}/AMB_LICENSE": - ensure => file, - source => 'puppet:///modules/automysqlbackup/AMB_LICENSE', - } - -# Install the actual binary file - file { "${bin_dir}/automysqlbackup": - ensure => file, - owner => 'root', - group => 'root', - mode => '0755', - source => 'puppet:///modules/automysqlbackup/automysqlbackup', - } - -# Create the base backup directory - file { $backup_dir: - ensure => directory, - owner => 'root', - group => 'root', - mode => '0755', - } - -# If you'd like to keep your config in hiera and pass it to this class - if !empty($config) { - create_resources('automysqlbackup::backup', $config, $config_defaults) - } - -# If using RedHat family, must have the RPMforge repo's enabled - if $install_multicore { - package { ['pigz', 'pbzip2']: ensure => installed } - } - -} -</textarea></form> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - mode: "text/x-puppet", - matchBrackets: true, - indentUnit: 4 - }); - </script> - - <p><strong>MIME types defined:</strong> <code>text/x-puppet</code>.</p> - - </article> diff --git a/assets/js/plugins/codemirror/mode/puppet/puppet.js b/assets/js/plugins/codemirror/mode/puppet/puppet.js deleted file mode 100644 index b407ded8..00000000 --- a/assets/js/plugins/codemirror/mode/puppet/puppet.js +++ /dev/null @@ -1,220 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("puppet", function () { - // Stores the words from the define method - var words = {}; - // Taken, mostly, from the Puppet official variable standards regex - var variable_regex = /({)?([a-z][a-z0-9_]*)?((::[a-z][a-z0-9_]*)*::)?[a-zA-Z0-9_]+(})?/; - - // Takes a string of words separated by spaces and adds them as - // keys with the value of the first argument 'style' - function define(style, string) { - var split = string.split(' '); - for (var i = 0; i < split.length; i++) { - words[split[i]] = style; - } - } - - // Takes commonly known puppet types/words and classifies them to a style - define('keyword', 'class define site node include import inherits'); - define('keyword', 'case if else in and elsif default or'); - define('atom', 'false true running present absent file directory undef'); - define('builtin', 'action augeas burst chain computer cron destination dport exec ' + - 'file filebucket group host icmp iniface interface jump k5login limit log_level ' + - 'log_prefix macauthorization mailalias maillist mcx mount nagios_command ' + - 'nagios_contact nagios_contactgroup nagios_host nagios_hostdependency ' + - 'nagios_hostescalation nagios_hostextinfo nagios_hostgroup nagios_service ' + - 'nagios_servicedependency nagios_serviceescalation nagios_serviceextinfo ' + - 'nagios_servicegroup nagios_timeperiod name notify outiface package proto reject ' + - 'resources router schedule scheduled_task selboolean selmodule service source ' + - 'sport ssh_authorized_key sshkey stage state table tidy todest toports tosource ' + - 'user vlan yumrepo zfs zone zpool'); - - // After finding a start of a string ('|") this function attempts to find the end; - // If a variable is encountered along the way, we display it differently when it - // is encapsulated in a double-quoted string. - function tokenString(stream, state) { - var current, prev, found_var = false; - while (!stream.eol() && (current = stream.next()) != state.pending) { - if (current === '$' && prev != '\\' && state.pending == '"') { - found_var = true; - break; - } - prev = current; - } - if (found_var) { - stream.backUp(1); - } - if (current == state.pending) { - state.continueString = false; - } else { - state.continueString = true; - } - return "string"; - } - - // Main function - function tokenize(stream, state) { - // Matches one whole word - var word = stream.match(/[\w]+/, false); - // Matches attributes (i.e. ensure => present ; 'ensure' would be matched) - var attribute = stream.match(/(\s+)?\w+\s+=>.*/, false); - // Matches non-builtin resource declarations - // (i.e. "apache::vhost {" or "mycustomclasss {" would be matched) - var resource = stream.match(/(\s+)?[\w:_]+(\s+)?{/, false); - // Matches virtual and exported resources (i.e. @@user { ; and the like) - var special_resource = stream.match(/(\s+)?[@]{1,2}[\w:_]+(\s+)?{/, false); - - // Finally advance the stream - var ch = stream.next(); - - // Have we found a variable? - if (ch === '$') { - if (stream.match(variable_regex)) { - // If so, and its in a string, assign it a different color - return state.continueString ? 'variable-2' : 'variable'; - } - // Otherwise return an invalid variable - return "error"; - } - // Should we still be looking for the end of a string? - if (state.continueString) { - // If so, go through the loop again - stream.backUp(1); - return tokenString(stream, state); - } - // Are we in a definition (class, node, define)? - if (state.inDefinition) { - // If so, return def (i.e. for 'class myclass {' ; 'myclass' would be matched) - if (stream.match(/(\s+)?[\w:_]+(\s+)?/)) { - return 'def'; - } - // Match the rest it the next time around - stream.match(/\s+{/); - state.inDefinition = false; - } - // Are we in an 'include' statement? - if (state.inInclude) { - // Match and return the included class - stream.match(/(\s+)?\S+(\s+)?/); - state.inInclude = false; - return 'def'; - } - // Do we just have a function on our hands? - // In 'ensure_resource("myclass")', 'ensure_resource' is matched - if (stream.match(/(\s+)?\w+\(/)) { - stream.backUp(1); - return 'def'; - } - // Have we matched the prior attribute regex? - if (attribute) { - stream.match(/(\s+)?\w+/); - return 'tag'; - } - // Do we have Puppet specific words? - if (word && words.hasOwnProperty(word)) { - // Negates the initial next() - stream.backUp(1); - // Acutally move the stream - stream.match(/[\w]+/); - // We want to process these words differently - // do to the importance they have in Puppet - if (stream.match(/\s+\S+\s+{/, false)) { - state.inDefinition = true; - } - if (word == 'include') { - state.inInclude = true; - } - // Returns their value as state in the prior define methods - return words[word]; - } - // Is there a match on a reference? - if (/(\s+)?[A-Z]/.test(word)) { - // Negate the next() - stream.backUp(1); - // Match the full reference - stream.match(/(\s+)?[A-Z][\w:_]+/); - return 'def'; - } - // Have we matched the prior resource regex? - if (resource) { - stream.match(/(\s+)?[\w:_]+/); - return 'def'; - } - // Have we matched the prior special_resource regex? - if (special_resource) { - stream.match(/(\s+)?[@]{1,2}/); - return 'special'; - } - // Match all the comments. All of them. - if (ch == "#") { - stream.skipToEnd(); - return "comment"; - } - // Have we found a string? - if (ch == "'" || ch == '"') { - // Store the type (single or double) - state.pending = ch; - // Perform the looping function to find the end - return tokenString(stream, state); - } - // Match all the brackets - if (ch == '{' || ch == '}') { - return 'bracket'; - } - // Match characters that we are going to assume - // are trying to be regex - if (ch == '/') { - stream.match(/.*?\//); - return 'variable-3'; - } - // Match all the numbers - if (ch.match(/[0-9]/)) { - stream.eatWhile(/[0-9]+/); - return 'number'; - } - // Match the '=' and '=>' operators - if (ch == '=') { - if (stream.peek() == '>') { - stream.next(); - } - return "operator"; - } - // Keep advancing through all the rest - stream.eatWhile(/[\w-]/); - // Return a blank line for everything else - return null; - } - // Start it all - return { - startState: function () { - var state = {}; - state.inDefinition = false; - state.inInclude = false; - state.continueString = false; - state.pending = false; - return state; - }, - token: function (stream, state) { - // Strip the spaces, but regex will account for them eitherway - if (stream.eatSpace()) return null; - // Go through the main process - return tokenize(stream, state); - } - }; -}); - -CodeMirror.defineMIME("text/x-puppet", "puppet"); - -}); diff --git a/assets/js/plugins/codemirror/mode/python/index.html b/assets/js/plugins/codemirror/mode/python/index.html deleted file mode 100644 index 86eb3d52..00000000 --- a/assets/js/plugins/codemirror/mode/python/index.html +++ /dev/null @@ -1,198 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Python mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="../../addon/edit/matchbrackets.js"></script> -<script src="python.js"></script> -<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Python</a> - </ul> -</div> - -<article> -<h2>Python mode</h2> - - <div><textarea id="code" name="code"> -# Literals -1234 -0.0e101 -.123 -0b01010011100 -0o01234567 -0x0987654321abcdef -7 -2147483647 -3L -79228162514264337593543950336L -0x100000000L -79228162514264337593543950336 -0xdeadbeef -3.14j -10.j -10j -.001j -1e100j -3.14e-10j - - -# String Literals -'For\'' -"God\"" -"""so loved -the world""" -'''that he gave -his only begotten\' ''' -'that whosoever believeth \ -in him' -'' - -# Identifiers -__a__ -a.b -a.b.c - -#Unicode identifiers on Python3 -# a = x\ddot -a⃗ = ẍ -# a = v\dot -a⃗ = v̇ - -#F\vec = m \cdot a\vec -F⃗ = m•a⃗ - -# Operators -+ - * / % & | ^ ~ < > -== != <= >= <> << >> // ** -and or not in is - -#infix matrix multiplication operator (PEP 465) -A @ B - -# Delimiters -() [] {} , : ` = ; @ . # Note that @ and . require the proper context on Python 2. -+= -= *= /= %= &= |= ^= -//= >>= <<= **= - -# Keywords -as assert break class continue def del elif else except -finally for from global if import lambda pass raise -return try while with yield - -# Python 2 Keywords (otherwise Identifiers) -exec print - -# Python 3 Keywords (otherwise Identifiers) -nonlocal - -# Types -bool classmethod complex dict enumerate float frozenset int list object -property reversed set slice staticmethod str super tuple type - -# Python 2 Types (otherwise Identifiers) -basestring buffer file long unicode xrange - -# Python 3 Types (otherwise Identifiers) -bytearray bytes filter map memoryview open range zip - -# Some Example code -import os -from package import ParentClass - -@nonsenseDecorator -def doesNothing(): - pass - -class ExampleClass(ParentClass): - @staticmethod - def example(inputStr): - a = list(inputStr) - a.reverse() - return ''.join(a) - - def __init__(self, mixin = 'Hello'): - self.mixin = mixin - -</textarea></div> - - -<h2>Cython mode</h2> - -<div><textarea id="code-cython" name="code-cython"> - -import numpy as np -cimport cython -from libc.math cimport sqrt - -@cython.boundscheck(False) -@cython.wraparound(False) -def pairwise_cython(double[:, ::1] X): - cdef int M = X.shape[0] - cdef int N = X.shape[1] - cdef double tmp, d - cdef double[:, ::1] D = np.empty((M, M), dtype=np.float64) - for i in range(M): - for j in range(M): - d = 0.0 - for k in range(N): - tmp = X[i, k] - X[j, k] - d += tmp * tmp - D[i, j] = sqrt(d) - return np.asarray(D) - -</textarea></div> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - mode: {name: "python", - version: 3, - singleLineStringErrors: false}, - lineNumbers: true, - indentUnit: 4, - matchBrackets: true - }); - - CodeMirror.fromTextArea(document.getElementById("code-cython"), { - mode: {name: "text/x-cython", - version: 2, - singleLineStringErrors: false}, - lineNumbers: true, - indentUnit: 4, - matchBrackets: true - }); - </script> - <h2>Configuration Options for Python mode:</h2> - <ul> - <li>version - 2/3 - The version of Python to recognize. Default is 2.</li> - <li>singleLineStringErrors - true/false - If you have a single-line string that is not terminated at the end of the line, this will show subsequent lines as errors if true, otherwise it will consider the newline as the end of the string. Default is false.</li> - <li>hangingIndent - int - If you want to write long arguments to a function starting on a new line, how much that line should be indented. Defaults to one normal indentation unit.</li> - </ul> - <h2>Advanced Configuration Options:</h2> - <p>Usefull for superset of python syntax like Enthought enaml, IPython magics and questionmark help</p> - <ul> - <li>singleOperators - RegEx - Regular Expression for single operator matching, default : <pre>^[\\+\\-\\*/%&amp;|\\^~&lt;&gt;!]</pre> including <pre>@</pre> on Python 3</li> - <li>singleDelimiters - RegEx - Regular Expression for single delimiter matching, default : <pre>^[\\(\\)\\[\\]\\{\\}@,:`=;\\.]</pre></li> - <li>doubleOperators - RegEx - Regular Expression for double operators matching, default : <pre>^((==)|(!=)|(&lt;=)|(&gt;=)|(&lt;&gt;)|(&lt;&lt;)|(&gt;&gt;)|(//)|(\\*\\*))</pre></li> - <li>doubleDelimiters - RegEx - Regular Expressoin for double delimiters matching, default : <pre>^((\\+=)|(\\-=)|(\\*=)|(%=)|(/=)|(&amp;=)|(\\|=)|(\\^=))</pre></li> - <li>tripleDelimiters - RegEx - Regular Expression for triple delimiters matching, default : <pre>^((//=)|(&gt;&gt;=)|(&lt;&lt;=)|(\\*\\*=))</pre></li> - <li>identifiers - RegEx - Regular Expression for identifier, default : <pre>^[_A-Za-z][_A-Za-z0-9]*</pre> on Python 2 and <pre>^[_A-Za-z\u00A1-\uFFFF][_A-Za-z0-9\u00A1-\uFFFF]*</pre> on Python 3.</li> - <li>extra_keywords - list of string - List of extra words ton consider as keywords</li> - <li>extra_builtins - list of string - List of extra words ton consider as builtins</li> - </ul> - - - <p><strong>MIME types defined:</strong> <code>text/x-python</code> and <code>text/x-cython</code>.</p> - </article> diff --git a/assets/js/plugins/codemirror/mode/python/python.js b/assets/js/plugins/codemirror/mode/python/python.js deleted file mode 100644 index 98c0409a..00000000 --- a/assets/js/plugins/codemirror/mode/python/python.js +++ /dev/null @@ -1,359 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - function wordRegexp(words) { - return new RegExp("^((" + words.join(")|(") + "))\\b"); - } - - var wordOperators = wordRegexp(["and", "or", "not", "is"]); - var commonKeywords = ["as", "assert", "break", "class", "continue", - "def", "del", "elif", "else", "except", "finally", - "for", "from", "global", "if", "import", - "lambda", "pass", "raise", "return", - "try", "while", "with", "yield", "in"]; - var commonBuiltins = ["abs", "all", "any", "bin", "bool", "bytearray", "callable", "chr", - "classmethod", "compile", "complex", "delattr", "dict", "dir", "divmod", - "enumerate", "eval", "filter", "float", "format", "frozenset", - "getattr", "globals", "hasattr", "hash", "help", "hex", "id", - "input", "int", "isinstance", "issubclass", "iter", "len", - "list", "locals", "map", "max", "memoryview", "min", "next", - "object", "oct", "open", "ord", "pow", "property", "range", - "repr", "reversed", "round", "set", "setattr", "slice", - "sorted", "staticmethod", "str", "sum", "super", "tuple", - "type", "vars", "zip", "__import__", "NotImplemented", - "Ellipsis", "__debug__"]; - var py2 = {builtins: ["apply", "basestring", "buffer", "cmp", "coerce", "execfile", - "file", "intern", "long", "raw_input", "reduce", "reload", - "unichr", "unicode", "xrange", "False", "True", "None"], - keywords: ["exec", "print"]}; - var py3 = {builtins: ["ascii", "bytes", "exec", "print"], - keywords: ["nonlocal", "False", "True", "None"]}; - - CodeMirror.registerHelper("hintWords", "python", commonKeywords.concat(commonBuiltins)); - - function top(state) { - return state.scopes[state.scopes.length - 1]; - } - - CodeMirror.defineMode("python", function(conf, parserConf) { - var ERRORCLASS = "error"; - - var singleDelimiters = parserConf.singleDelimiters || new RegExp("^[\\(\\)\\[\\]\\{\\}@,:`=;\\.]"); - var doubleOperators = parserConf.doubleOperators || new RegExp("^((==)|(!=)|(<=)|(>=)|(<>)|(<<)|(>>)|(//)|(\\*\\*))"); - var doubleDelimiters = parserConf.doubleDelimiters || new RegExp("^((\\+=)|(\\-=)|(\\*=)|(%=)|(/=)|(&=)|(\\|=)|(\\^=))"); - var tripleDelimiters = parserConf.tripleDelimiters || new RegExp("^((//=)|(>>=)|(<<=)|(\\*\\*=))"); - - if (parserConf.version && parseInt(parserConf.version, 10) == 3){ - // since http://legacy.python.org/dev/peps/pep-0465/ @ is also an operator - var singleOperators = parserConf.singleOperators || new RegExp("^[\\+\\-\\*/%&|\\^~<>!@]"); - var identifiers = parserConf.identifiers|| new RegExp("^[_A-Za-z\u00A1-\uFFFF][_A-Za-z0-9\u00A1-\uFFFF]*"); - } else { - var singleOperators = parserConf.singleOperators || new RegExp("^[\\+\\-\\*/%&|\\^~<>!]"); - var identifiers = parserConf.identifiers|| new RegExp("^[_A-Za-z][_A-Za-z0-9]*"); - } - - var hangingIndent = parserConf.hangingIndent || conf.indentUnit; - - var myKeywords = commonKeywords, myBuiltins = commonBuiltins; - if(parserConf.extra_keywords != undefined){ - myKeywords = myKeywords.concat(parserConf.extra_keywords); - } - if(parserConf.extra_builtins != undefined){ - myBuiltins = myBuiltins.concat(parserConf.extra_builtins); - } - if (parserConf.version && parseInt(parserConf.version, 10) == 3) { - myKeywords = myKeywords.concat(py3.keywords); - myBuiltins = myBuiltins.concat(py3.builtins); - var stringPrefixes = new RegExp("^(([rb]|(br))?('{3}|\"{3}|['\"]))", "i"); - } else { - myKeywords = myKeywords.concat(py2.keywords); - myBuiltins = myBuiltins.concat(py2.builtins); - var stringPrefixes = new RegExp("^(([rub]|(ur)|(br))?('{3}|\"{3}|['\"]))", "i"); - } - var keywords = wordRegexp(myKeywords); - var builtins = wordRegexp(myBuiltins); - - // tokenizers - function tokenBase(stream, state) { - // Handle scope changes - if (stream.sol() && top(state).type == "py") { - var scopeOffset = top(state).offset; - if (stream.eatSpace()) { - var lineOffset = stream.indentation(); - if (lineOffset > scopeOffset) - pushScope(stream, state, "py"); - else if (lineOffset < scopeOffset && dedent(stream, state)) - state.errorToken = true; - return null; - } else { - var style = tokenBaseInner(stream, state); - if (scopeOffset > 0 && dedent(stream, state)) - style += " " + ERRORCLASS; - return style; - } - } - return tokenBaseInner(stream, state); - } - - function tokenBaseInner(stream, state) { - if (stream.eatSpace()) return null; - - var ch = stream.peek(); - - // Handle Comments - if (ch == "#") { - stream.skipToEnd(); - return "comment"; - } - - // Handle Number Literals - if (stream.match(/^[0-9\.]/, false)) { - var floatLiteral = false; - // Floats - if (stream.match(/^\d*\.\d+(e[\+\-]?\d+)?/i)) { floatLiteral = true; } - if (stream.match(/^\d+\.\d*/)) { floatLiteral = true; } - if (stream.match(/^\.\d+/)) { floatLiteral = true; } - if (floatLiteral) { - // Float literals may be "imaginary" - stream.eat(/J/i); - return "number"; - } - // Integers - var intLiteral = false; - // Hex - if (stream.match(/^0x[0-9a-f]+/i)) intLiteral = true; - // Binary - if (stream.match(/^0b[01]+/i)) intLiteral = true; - // Octal - if (stream.match(/^0o[0-7]+/i)) intLiteral = true; - // Decimal - if (stream.match(/^[1-9]\d*(e[\+\-]?\d+)?/)) { - // Decimal literals may be "imaginary" - stream.eat(/J/i); - // TODO - Can you have imaginary longs? - intLiteral = true; - } - // Zero by itself with no other piece of number. - if (stream.match(/^0(?![\dx])/i)) intLiteral = true; - if (intLiteral) { - // Integer literals may be "long" - stream.eat(/L/i); - return "number"; - } - } - - // Handle Strings - if (stream.match(stringPrefixes)) { - state.tokenize = tokenStringFactory(stream.current()); - return state.tokenize(stream, state); - } - - // Handle operators and Delimiters - if (stream.match(tripleDelimiters) || stream.match(doubleDelimiters)) - return null; - - if (stream.match(doubleOperators) - || stream.match(singleOperators) - || stream.match(wordOperators)) - return "operator"; - - if (stream.match(singleDelimiters)) - return null; - - if (stream.match(keywords)) - return "keyword"; - - if (stream.match(builtins)) - return "builtin"; - - if (stream.match(/^(self|cls)\b/)) - return "variable-2"; - - if (stream.match(identifiers)) { - if (state.lastToken == "def" || state.lastToken == "class") - return "def"; - return "variable"; - } - - // Handle non-detected items - stream.next(); - return ERRORCLASS; - } - - function tokenStringFactory(delimiter) { - while ("rub".indexOf(delimiter.charAt(0).toLowerCase()) >= 0) - delimiter = delimiter.substr(1); - - var singleline = delimiter.length == 1; - var OUTCLASS = "string"; - - function tokenString(stream, state) { - while (!stream.eol()) { - stream.eatWhile(/[^'"\\]/); - if (stream.eat("\\")) { - stream.next(); - if (singleline && stream.eol()) - return OUTCLASS; - } else if (stream.match(delimiter)) { - state.tokenize = tokenBase; - return OUTCLASS; - } else { - stream.eat(/['"]/); - } - } - if (singleline) { - if (parserConf.singleLineStringErrors) - return ERRORCLASS; - else - state.tokenize = tokenBase; - } - return OUTCLASS; - } - tokenString.isString = true; - return tokenString; - } - - function pushScope(stream, state, type) { - var offset = 0, align = null; - if (type == "py") { - while (top(state).type != "py") - state.scopes.pop(); - } - offset = top(state).offset + (type == "py" ? conf.indentUnit : hangingIndent); - if (type != "py" && !stream.match(/^(\s|#.*)*$/, false)) - align = stream.column() + 1; - state.scopes.push({offset: offset, type: type, align: align}); - } - - function dedent(stream, state) { - var indented = stream.indentation(); - while (top(state).offset > indented) { - if (top(state).type != "py") return true; - state.scopes.pop(); - } - return top(state).offset != indented; - } - - function tokenLexer(stream, state) { - var style = state.tokenize(stream, state); - var current = stream.current(); - - // Handle '.' connected identifiers - if (current == ".") { - style = stream.match(identifiers, false) ? null : ERRORCLASS; - if (style == null && state.lastStyle == "meta") { - // Apply 'meta' style to '.' connected identifiers when - // appropriate. - style = "meta"; - } - return style; - } - - // Handle decorators - if (current == "@"){ - if(parserConf.version && parseInt(parserConf.version, 10) == 3){ - return stream.match(identifiers, false) ? "meta" : "operator"; - } else { - return stream.match(identifiers, false) ? "meta" : ERRORCLASS; - } - } - - if ((style == "variable" || style == "builtin") - && state.lastStyle == "meta") - style = "meta"; - - // Handle scope changes. - if (current == "pass" || current == "return") - state.dedent += 1; - - if (current == "lambda") state.lambda = true; - if (current == ":" && !state.lambda && top(state).type == "py") - pushScope(stream, state, "py"); - - var delimiter_index = current.length == 1 ? "[({".indexOf(current) : -1; - if (delimiter_index != -1) - pushScope(stream, state, "])}".slice(delimiter_index, delimiter_index+1)); - - delimiter_index = "])}".indexOf(current); - if (delimiter_index != -1) { - if (top(state).type == current) state.scopes.pop(); - else return ERRORCLASS; - } - if (state.dedent > 0 && stream.eol() && top(state).type == "py") { - if (state.scopes.length > 1) state.scopes.pop(); - state.dedent -= 1; - } - - return style; - } - - var external = { - startState: function(basecolumn) { - return { - tokenize: tokenBase, - scopes: [{offset: basecolumn || 0, type: "py", align: null}], - lastStyle: null, - lastToken: null, - lambda: false, - dedent: 0 - }; - }, - - token: function(stream, state) { - var addErr = state.errorToken; - if (addErr) state.errorToken = false; - var style = tokenLexer(stream, state); - - state.lastStyle = style; - - var current = stream.current(); - if (current && style) - state.lastToken = current; - - if (stream.eol() && state.lambda) - state.lambda = false; - return addErr ? style + " " + ERRORCLASS : style; - }, - - indent: function(state, textAfter) { - if (state.tokenize != tokenBase) - return state.tokenize.isString ? CodeMirror.Pass : 0; - - var scope = top(state); - var closing = textAfter && textAfter.charAt(0) == scope.type; - if (scope.align != null) - return scope.align - (closing ? 1 : 0); - else if (closing && state.scopes.length > 1) - return state.scopes[state.scopes.length - 2].offset; - else - return scope.offset; - }, - - lineComment: "#", - fold: "indent" - }; - return external; - }); - - CodeMirror.defineMIME("text/x-python", "python"); - - var words = function(str) { return str.split(" "); }; - - CodeMirror.defineMIME("text/x-cython", { - name: "python", - extra_keywords: words("by cdef cimport cpdef ctypedef enum except"+ - "extern gil include nogil property public"+ - "readonly struct union DEF IF ELIF ELSE") - }); - -}); diff --git a/assets/js/plugins/codemirror/mode/q/index.html b/assets/js/plugins/codemirror/mode/q/index.html deleted file mode 100644 index 72785ba3..00000000 --- a/assets/js/plugins/codemirror/mode/q/index.html +++ /dev/null @@ -1,144 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Q mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="../../addon/edit/matchbrackets.js"></script> -<script src="q.js"></script> -<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Q</a> - </ul> -</div> - -<article> -<h2>Q mode</h2> - - -<div><textarea id="code" name="code"> -/ utilities to quickly load a csv file - for more exhaustive analysis of the csv contents see csvguess.q -/ 2009.09.20 - updated to match latest csvguess.q - -/ .csv.colhdrs[file] - return a list of colhdrs from file -/ info:.csv.info[file] - return a table of information about the file -/ columns are: -/ c - column name; ci - column index; t - load type; mw - max width; -/ dchar - distinct characters in values; rule - rule that caught the type -/ maybe - needs checking, _could_ be say a date, but perhaps just a float? -/ .csv.info0[file;onlycols] - like .csv.info except that it only analyses <onlycols> -/ example: -/ info:.csv.info0[file;(.csv.colhdrs file)like"*price"] -/ info:.csv.infolike[file;"*price"] -/ show delete from info where t=" " -/ .csv.data[file;info] - use the info from .csv.info to read the data -/ .csv.data10[file;info] - like .csv.data but only returns the first 10 rows -/ bulkload[file;info] - bulk loads file into table DATA (which must be already defined :: DATA:() ) -/ .csv.read[file]/read10[file] - for when you don't care about checking/tweaking the <info> before reading - -\d .csv -DELIM:"," -ZAPHDRS:0b / lowercase and remove _ from colhdrs (junk characters are always removed) -WIDTHHDR:25000 / number of characters read to get the header -READLINES:222 / number of lines read and used to guess the types -SYMMAXWIDTH:11 / character columns narrower than this are stored as symbols -SYMMAXGR:10 / max symbol granularity% before we give up and keep as a * string -FORCECHARWIDTH:30 / every field (of any type) with values this wide or more is forced to character "*" -DISCARDEMPTY:0b / completely ignore empty columns if true else set them to "C" -CHUNKSIZE:50000000 / used in fs2 (modified .Q.fs) - -k)nameltrim:{$[~@x;.z.s'x;~(*x)in aA:.Q.a,.Q.A;(+/&\~x in aA)_x;x]} -k)fs2:{[f;s]((-7!s)>){[f;s;x]i:1+last@&0xa=r:1:(s;x;CHUNKSIZE);f@`\:i#r;x+i}[f;s]/0j} -cleanhdrs:{{$[ZAPHDRS;lower x except"_";x]}x where x in DELIM,.Q.an} -cancast:{nw:x$"";if[not x in"BXCS";nw:(min 0#;max 0#;::)@\:nw];$[not any nw in x$(11&count y)#y;$[11<count y;not any nw in x$y;1b];0b]} - -read:{[file]data[file;info[file]]} -read10:{[file]data10[file;info[file]]} - -colhdrs:{[file] - `$nameltrim DELIM vs cleanhdrs first read0(file;0;1+first where 0xa=read1(file;0;WIDTHHDR))} -data:{[file;info] - (exec c from info where not t=" ")xcol(exec t from info;enlist DELIM)0:file} -data10:{[file;info] - data[;info](file;0;1+last 11#where 0xa=read1(file;0;15*WIDTHHDR))} -info0:{[file;onlycols] - colhdrs:`$nameltrim DELIM vs cleanhdrs first head:read0(file;0;1+last where 0xa=read1(file;0;WIDTHHDR)); - loadfmts:(count colhdrs)#"S";if[count onlycols;loadfmts[where not colhdrs in onlycols]:"C"]; - breaks:where 0xa=read1(file;0;floor(10+READLINES)*WIDTHHDR%count head); - nas:count as:colhdrs xcol(loadfmts;enlist DELIM)0:(file;0;1+last((1+READLINES)&count breaks)#breaks); - info:([]c:key flip as;v:value flip as);as:(); - reserved:key`.q;reserved,:.Q.res;reserved,:`i; - info:update res:c in reserved from info; - info:update ci:i,t:"?",ipa:0b,mdot:0,mw:0,rule:0,gr:0,ndv:0,maybe:0b,empty:0b,j10:0b,j12:0b from info; - info:update ci:`s#ci from info; - if[count onlycols;info:update t:" ",rule:10 from info where not c in onlycols]; - info:update sdv:{string(distinct x)except`}peach v from info; - info:update ndv:count each sdv from info; - info:update gr:floor 0.5+100*ndv%nas,mw:{max count each x}peach sdv from info where 0<ndv; - info:update t:"*",rule:20 from info where mw>.csv.FORCECHARWIDTH; / long values - info:update t:"C "[.csv.DISCARDEMPTY],rule:30,empty:1b from info where t="?",mw=0; / empty columns - info:update dchar:{asc distinct raze x}peach sdv from info where t="?"; - info:update mdot:{max sum each"."=x}peach sdv from info where t="?",{"."in x}each dchar; - info:update t:"n",rule:40 from info where t="?",{any x in"0123456789"}each dchar; / vaguely numeric.. - info:update t:"I",rule:50,ipa:1b from info where t="n",mw within 7 15,mdot=3,{all x in".0123456789"}each dchar,.csv.cancast["I"]peach sdv; / ip-address - info:update t:"J",rule:60 from info where t="n",mdot=0,{all x in"+-0123456789"}each dchar,.csv.cancast["J"]peach sdv; - info:update t:"I",rule:70 from info where t="J",mw<12,.csv.cancast["I"]peach sdv; - info:update t:"H",rule:80 from info where t="I",mw<7,.csv.cancast["H"]peach sdv; - info:update t:"F",rule:90 from info where t="n",mdot<2,mw>1,.csv.cancast["F"]peach sdv; - info:update t:"E",rule:100,maybe:1b from info where t="F",mw<9; - info:update t:"M",rule:110,maybe:1b from info where t in"nIHEF",mdot<2,mw within 4 7,.csv.cancast["M"]peach sdv; - info:update t:"D",rule:120,maybe:1b from info where t in"nI",mdot in 0 2,mw within 6 11,.csv.cancast["D"]peach sdv; - info:update t:"V",rule:130,maybe:1b from info where t="I",mw in 5 6,7<count each dchar,{all x like"*[0-9][0-5][0-9][0-5][0-9]"}peach sdv,.csv.cancast["V"]peach sdv; / 235959 12345 - info:update t:"U",rule:140,maybe:1b from info where t="H",mw in 3 4,7<count each dchar,{all x like"*[0-9][0-5][0-9]"}peach sdv,.csv.cancast["U"]peach sdv; /2359 - info:update t:"U",rule:150,maybe:0b from info where t="n",mw in 4 5,mdot=0,{all x like"*[0-9]:[0-5][0-9]"}peach sdv,.csv.cancast["U"]peach sdv; - info:update t:"T",rule:160,maybe:0b from info where t="n",mw within 7 12,mdot<2,{all x like"*[0-9]:[0-5][0-9]:[0-5][0-9]*"}peach sdv,.csv.cancast["T"]peach sdv; - info:update t:"V",rule:170,maybe:0b from info where t="T",mw in 7 8,mdot=0,.csv.cancast["V"]peach sdv; - info:update t:"T",rule:180,maybe:1b from info where t in"EF",mw within 7 10,mdot=1,{all x like"*[0-9][0-5][0-9][0-5][0-9].*"}peach sdv,.csv.cancast["T"]peach sdv; - info:update t:"Z",rule:190,maybe:0b from info where t="n",mw within 11 24,mdot<4,.csv.cancast["Z"]peach sdv; - info:update t:"P",rule:200,maybe:1b from info where t="n",mw within 12 29,mdot<4,{all x like"[12]*"}peach sdv,.csv.cancast["P"]peach sdv; - info:update t:"N",rule:210,maybe:1b from info where t="n",mw within 3 28,mdot=1,.csv.cancast["N"]peach sdv; - info:update t:"?",rule:220,maybe:0b from info where t="n"; / reset remaining maybe numeric - info:update t:"C",rule:230,maybe:0b from info where t="?",mw=1; / char - info:update t:"B",rule:240,maybe:0b from info where t in"HC",mw=1,mdot=0,{$[all x in"01tTfFyYnN";(any"0fFnN"in x)and any"1tTyY"in x;0b]}each dchar; / boolean - info:update t:"B",rule:250,maybe:1b from info where t in"HC",mw=1,mdot=0,{all x in"01tTfFyYnN"}each dchar; / boolean - info:update t:"X",rule:260,maybe:0b from info where t="?",mw=2,{$[all x in"0123456789abcdefABCDEF";(any .Q.n in x)and any"abcdefABCDEF"in x;0b]}each dchar; /hex - info:update t:"S",rule:270,maybe:1b from info where t="?",mw<.csv.SYMMAXWIDTH,mw>1,gr<.csv.SYMMAXGR; / symbols (max width permitting) - info:update t:"*",rule:280,maybe:0b from info where t="?"; / the rest as strings - / flag those S/* columns which could be encoded to integers (.Q.j10/x10/j12/x12) to avoid symbols - info:update j12:1b from info where t in"S*",mw<13,{all x in .Q.nA}each dchar; - info:update j10:1b from info where t in"S*",mw<11,{all x in .Q.b6}each dchar; - select c,ci,t,maybe,empty,res,j10,j12,ipa,mw,mdot,rule,gr,ndv,dchar from info} -info:info0[;()] / by default don't restrict columns -infolike:{[file;pattern] info0[file;{x where x like y}[lower colhdrs[file];pattern]]} / .csv.infolike[file;"*time"] - -\d . -/ DATA:() -bulkload:{[file;info] - if[not`DATA in system"v";'`DATA.not.defined]; - if[count DATA;'`DATA.not.empty]; - loadhdrs:exec c from info where not t=" ";loadfmts:exec t from info; - .csv.fs2[{[file;loadhdrs;loadfmts] `DATA insert $[count DATA;flip loadhdrs!(loadfmts;.csv.DELIM)0:file;loadhdrs xcol(loadfmts;enlist .csv.DELIM)0:file]}[file;loadhdrs;loadfmts]]; - count DATA} -@[.:;"\\l csvutil.custom.q";::]; / save your custom settings in csvutil.custom.q to override those set at the beginning of the file -</textarea></div> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers: true, - matchBrackets: true - }); - </script> - - <p><strong>MIME type defined:</strong> <code>text/x-q</code>.</p> - </article> diff --git a/assets/js/plugins/codemirror/mode/q/q.js b/assets/js/plugins/codemirror/mode/q/q.js deleted file mode 100644 index a4af9383..00000000 --- a/assets/js/plugins/codemirror/mode/q/q.js +++ /dev/null @@ -1,139 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("q",function(config){ - var indentUnit=config.indentUnit, - curPunc, - keywords=buildRE(["abs","acos","aj","aj0","all","and","any","asc","asin","asof","atan","attr","avg","avgs","bin","by","ceiling","cols","cor","cos","count","cov","cross","csv","cut","delete","deltas","desc","dev","differ","distinct","div","do","each","ej","enlist","eval","except","exec","exit","exp","fby","fills","first","fkeys","flip","floor","from","get","getenv","group","gtime","hclose","hcount","hdel","hopen","hsym","iasc","idesc","if","ij","in","insert","inter","inv","key","keys","last","like","list","lj","load","log","lower","lsq","ltime","ltrim","mavg","max","maxs","mcount","md5","mdev","med","meta","min","mins","mmax","mmin","mmu","mod","msum","neg","next","not","null","or","over","parse","peach","pj","plist","prd","prds","prev","prior","rand","rank","ratios","raze","read0","read1","reciprocal","reverse","rload","rotate","rsave","rtrim","save","scan","select","set","setenv","show","signum","sin","sqrt","ss","ssr","string","sublist","sum","sums","sv","system","tables","tan","til","trim","txf","type","uj","ungroup","union","update","upper","upsert","value","var","view","views","vs","wavg","where","where","while","within","wj","wj1","wsum","xasc","xbar","xcol","xcols","xdesc","xexp","xgroup","xkey","xlog","xprev","xrank"]), - E=/[|/&^!+:\\\-*%$=~#;@><,?_\'\"\[\(\]\)\s{}]/; - function buildRE(w){return new RegExp("^("+w.join("|")+")$");} - function tokenBase(stream,state){ - var sol=stream.sol(),c=stream.next(); - curPunc=null; - if(sol) - if(c=="/") - return(state.tokenize=tokenLineComment)(stream,state); - else if(c=="\\"){ - if(stream.eol()||/\s/.test(stream.peek())) - return stream.skipToEnd(),/^\\\s*$/.test(stream.current())?(state.tokenize=tokenCommentToEOF)(stream, state):state.tokenize=tokenBase,"comment"; - else - return state.tokenize=tokenBase,"builtin"; - } - if(/\s/.test(c)) - return stream.peek()=="/"?(stream.skipToEnd(),"comment"):"whitespace"; - if(c=='"') - return(state.tokenize=tokenString)(stream,state); - if(c=='`') - return stream.eatWhile(/[A-Z|a-z|\d|_|:|\/|\.]/),"symbol"; - if(("."==c&&/\d/.test(stream.peek()))||/\d/.test(c)){ - var t=null; - stream.backUp(1); - if(stream.match(/^\d{4}\.\d{2}(m|\.\d{2}([D|T](\d{2}(:\d{2}(:\d{2}(\.\d{1,9})?)?)?)?)?)/) - || stream.match(/^\d+D(\d{2}(:\d{2}(:\d{2}(\.\d{1,9})?)?)?)/) - || stream.match(/^\d{2}:\d{2}(:\d{2}(\.\d{1,9})?)?/) - || stream.match(/^\d+[ptuv]{1}/)) - t="temporal"; - else if(stream.match(/^0[NwW]{1}/) - || stream.match(/^0x[\d|a-f|A-F]*/) - || stream.match(/^[0|1]+[b]{1}/) - || stream.match(/^\d+[chijn]{1}/) - || stream.match(/-?\d*(\.\d*)?(e[+\-]?\d+)?(e|f)?/)) - t="number"; - return(t&&(!(c=stream.peek())||E.test(c)))?t:(stream.next(),"error"); - } - if(/[A-Z|a-z]|\./.test(c)) - return stream.eatWhile(/[A-Z|a-z|\.|_|\d]/),keywords.test(stream.current())?"keyword":"variable"; - if(/[|/&^!+:\\\-*%$=~#;@><\.,?_\']/.test(c)) - return null; - if(/[{}\(\[\]\)]/.test(c)) - return null; - return"error"; - } - function tokenLineComment(stream,state){ - return stream.skipToEnd(),/\/\s*$/.test(stream.current())?(state.tokenize=tokenBlockComment)(stream,state):(state.tokenize=tokenBase),"comment"; - } - function tokenBlockComment(stream,state){ - var f=stream.sol()&&stream.peek()=="\\"; - stream.skipToEnd(); - if(f&&/^\\\s*$/.test(stream.current())) - state.tokenize=tokenBase; - return"comment"; - } - function tokenCommentToEOF(stream){return stream.skipToEnd(),"comment";} - function tokenString(stream,state){ - var escaped=false,next,end=false; - while((next=stream.next())){ - if(next=="\""&&!escaped){end=true;break;} - escaped=!escaped&&next=="\\"; - } - if(end)state.tokenize=tokenBase; - return"string"; - } - function pushContext(state,type,col){state.context={prev:state.context,indent:state.indent,col:col,type:type};} - function popContext(state){state.indent=state.context.indent;state.context=state.context.prev;} - return{ - startState:function(){ - return{tokenize:tokenBase, - context:null, - indent:0, - col:0}; - }, - token:function(stream,state){ - if(stream.sol()){ - if(state.context&&state.context.align==null) - state.context.align=false; - state.indent=stream.indentation(); - } - //if (stream.eatSpace()) return null; - var style=state.tokenize(stream,state); - if(style!="comment"&&state.context&&state.context.align==null&&state.context.type!="pattern"){ - state.context.align=true; - } - if(curPunc=="(")pushContext(state,")",stream.column()); - else if(curPunc=="[")pushContext(state,"]",stream.column()); - else if(curPunc=="{")pushContext(state,"}",stream.column()); - else if(/[\]\}\)]/.test(curPunc)){ - while(state.context&&state.context.type=="pattern")popContext(state); - if(state.context&&curPunc==state.context.type)popContext(state); - } - else if(curPunc=="."&&state.context&&state.context.type=="pattern")popContext(state); - else if(/atom|string|variable/.test(style)&&state.context){ - if(/[\}\]]/.test(state.context.type)) - pushContext(state,"pattern",stream.column()); - else if(state.context.type=="pattern"&&!state.context.align){ - state.context.align=true; - state.context.col=stream.column(); - } - } - return style; - }, - indent:function(state,textAfter){ - var firstChar=textAfter&&textAfter.charAt(0); - var context=state.context; - if(/[\]\}]/.test(firstChar)) - while (context&&context.type=="pattern")context=context.prev; - var closing=context&&firstChar==context.type; - if(!context) - return 0; - else if(context.type=="pattern") - return context.col; - else if(context.align) - return context.col+(closing?0:1); - else - return context.indent+(closing?0:indentUnit); - } - }; -}); -CodeMirror.defineMIME("text/x-q","q"); - -}); diff --git a/assets/js/plugins/codemirror/mode/r/index.html b/assets/js/plugins/codemirror/mode/r/index.html deleted file mode 100644 index 6dd96346..00000000 --- a/assets/js/plugins/codemirror/mode/r/index.html +++ /dev/null @@ -1,85 +0,0 @@ -<!doctype html> - -<title>CodeMirror: R mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="r.js"></script> -<style> - .CodeMirror { border-top: 1px solid silver; border-bottom: 1px solid silver; } - .cm-s-default span.cm-semi { color: blue; font-weight: bold; } - .cm-s-default span.cm-dollar { color: orange; font-weight: bold; } - .cm-s-default span.cm-arrow { color: brown; } - .cm-s-default span.cm-arg-is { color: brown; } - </style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">R</a> - </ul> -</div> - -<article> -<h2>R mode</h2> -<form><textarea id="code" name="code"> -# Code from http://www.mayin.org/ajayshah/KB/R/ - -# FIRST LEARN ABOUT LISTS -- -X = list(height=5.4, weight=54) -print("Use default printing --") -print(X) -print("Accessing individual elements --") -cat("Your height is ", X$height, " and your weight is ", X$weight, "\n") - -# FUNCTIONS -- -square <- function(x) { - return(x*x) -} -cat("The square of 3 is ", square(3), "\n") - - # default value of the arg is set to 5. -cube <- function(x=5) { - return(x*x*x); -} -cat("Calling cube with 2 : ", cube(2), "\n") # will give 2^3 -cat("Calling cube : ", cube(), "\n") # will default to 5^3. - -# LEARN ABOUT FUNCTIONS THAT RETURN MULTIPLE OBJECTS -- -powers <- function(x) { - parcel = list(x2=x*x, x3=x*x*x, x4=x*x*x*x); - return(parcel); -} - -X = powers(3); -print("Showing powers of 3 --"); print(X); - -# WRITING THIS COMPACTLY (4 lines instead of 7) - -powerful <- function(x) { - return(list(x2=x*x, x3=x*x*x, x4=x*x*x*x)); -} -print("Showing powers of 3 --"); print(powerful(3)); - -# In R, the last expression in a function is, by default, what is -# returned. So you could equally just say: -powerful <- function(x) {list(x2=x*x, x3=x*x*x, x4=x*x*x*x)} -</textarea></form> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), {}); - </script> - - <p><strong>MIME types defined:</strong> <code>text/x-rsrc</code>.</p> - - <p>Development of the CodeMirror R mode was kindly sponsored - by <a href="https://twitter.com/ubalo">Ubalo</a>.</p> - - </article> diff --git a/assets/js/plugins/codemirror/mode/r/r.js b/assets/js/plugins/codemirror/mode/r/r.js deleted file mode 100644 index 1ab4a956..00000000 --- a/assets/js/plugins/codemirror/mode/r/r.js +++ /dev/null @@ -1,162 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("r", function(config) { - function wordObj(str) { - var words = str.split(" "), res = {}; - for (var i = 0; i < words.length; ++i) res[words[i]] = true; - return res; - } - var atoms = wordObj("NULL NA Inf NaN NA_integer_ NA_real_ NA_complex_ NA_character_"); - var builtins = wordObj("list quote bquote eval return call parse deparse"); - var keywords = wordObj("if else repeat while function for in next break"); - var blockkeywords = wordObj("if else repeat while function for"); - var opChars = /[+\-*\/^<>=!&|~$:]/; - var curPunc; - - function tokenBase(stream, state) { - curPunc = null; - var ch = stream.next(); - if (ch == "#") { - stream.skipToEnd(); - return "comment"; - } else if (ch == "0" && stream.eat("x")) { - stream.eatWhile(/[\da-f]/i); - return "number"; - } else if (ch == "." && stream.eat(/\d/)) { - stream.match(/\d*(?:e[+\-]?\d+)?/); - return "number"; - } else if (/\d/.test(ch)) { - stream.match(/\d*(?:\.\d+)?(?:e[+\-]\d+)?L?/); - return "number"; - } else if (ch == "'" || ch == '"') { - state.tokenize = tokenString(ch); - return "string"; - } else if (ch == "." && stream.match(/.[.\d]+/)) { - return "keyword"; - } else if (/[\w\.]/.test(ch) && ch != "_") { - stream.eatWhile(/[\w\.]/); - var word = stream.current(); - if (atoms.propertyIsEnumerable(word)) return "atom"; - if (keywords.propertyIsEnumerable(word)) { - // Block keywords start new blocks, except 'else if', which only starts - // one new block for the 'if', no block for the 'else'. - if (blockkeywords.propertyIsEnumerable(word) && - !stream.match(/\s*if(\s+|$)/, false)) - curPunc = "block"; - return "keyword"; - } - if (builtins.propertyIsEnumerable(word)) return "builtin"; - return "variable"; - } else if (ch == "%") { - if (stream.skipTo("%")) stream.next(); - return "variable-2"; - } else if (ch == "<" && stream.eat("-")) { - return "arrow"; - } else if (ch == "=" && state.ctx.argList) { - return "arg-is"; - } else if (opChars.test(ch)) { - if (ch == "$") return "dollar"; - stream.eatWhile(opChars); - return "operator"; - } else if (/[\(\){}\[\];]/.test(ch)) { - curPunc = ch; - if (ch == ";") return "semi"; - return null; - } else { - return null; - } - } - - function tokenString(quote) { - return function(stream, state) { - if (stream.eat("\\")) { - var ch = stream.next(); - if (ch == "x") stream.match(/^[a-f0-9]{2}/i); - else if ((ch == "u" || ch == "U") && stream.eat("{") && stream.skipTo("}")) stream.next(); - else if (ch == "u") stream.match(/^[a-f0-9]{4}/i); - else if (ch == "U") stream.match(/^[a-f0-9]{8}/i); - else if (/[0-7]/.test(ch)) stream.match(/^[0-7]{1,2}/); - return "string-2"; - } else { - var next; - while ((next = stream.next()) != null) { - if (next == quote) { state.tokenize = tokenBase; break; } - if (next == "\\") { stream.backUp(1); break; } - } - return "string"; - } - }; - } - - function push(state, type, stream) { - state.ctx = {type: type, - indent: state.indent, - align: null, - column: stream.column(), - prev: state.ctx}; - } - function pop(state) { - state.indent = state.ctx.indent; - state.ctx = state.ctx.prev; - } - - return { - startState: function() { - return {tokenize: tokenBase, - ctx: {type: "top", - indent: -config.indentUnit, - align: false}, - indent: 0, - afterIdent: false}; - }, - - token: function(stream, state) { - if (stream.sol()) { - if (state.ctx.align == null) state.ctx.align = false; - state.indent = stream.indentation(); - } - if (stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - if (style != "comment" && state.ctx.align == null) state.ctx.align = true; - - var ctype = state.ctx.type; - if ((curPunc == ";" || curPunc == "{" || curPunc == "}") && ctype == "block") pop(state); - if (curPunc == "{") push(state, "}", stream); - else if (curPunc == "(") { - push(state, ")", stream); - if (state.afterIdent) state.ctx.argList = true; - } - else if (curPunc == "[") push(state, "]", stream); - else if (curPunc == "block") push(state, "block", stream); - else if (curPunc == ctype) pop(state); - state.afterIdent = style == "variable" || style == "keyword"; - return style; - }, - - indent: function(state, textAfter) { - if (state.tokenize != tokenBase) return 0; - var firstChar = textAfter && textAfter.charAt(0), ctx = state.ctx, - closing = firstChar == ctx.type; - if (ctx.type == "block") return ctx.indent + (firstChar == "{" ? 0 : config.indentUnit); - else if (ctx.align) return ctx.column + (closing ? 0 : 1); - else return ctx.indent + (closing ? 0 : config.indentUnit); - }, - - lineComment: "#" - }; -}); - -CodeMirror.defineMIME("text/x-rsrc", "r"); - -}); diff --git a/assets/js/plugins/codemirror/mode/rpm/changes/index.html b/assets/js/plugins/codemirror/mode/rpm/changes/index.html deleted file mode 100644 index 6e5031bd..00000000 --- a/assets/js/plugins/codemirror/mode/rpm/changes/index.html +++ /dev/null @@ -1,66 +0,0 @@ -<!doctype html> - -<title>CodeMirror: RPM changes mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - - <link rel="stylesheet" href="../../../lib/codemirror.css"> - <script src="../../../lib/codemirror.js"></script> - <script src="changes.js"></script> - <link rel="stylesheet" href="../../../doc/docs.css"> - <style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> - -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../../doc/logo.png"></a> - - <ul> - <li><a href="../../../index.html">Home</a> - <li><a href="../../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../../index.html">Language modes</a> - <li><a class=active href="#">RPM changes</a> - </ul> -</div> - -<article> -<h2>RPM changes mode</h2> - - <div><textarea id="code" name="code"> -------------------------------------------------------------------- -Tue Oct 18 13:58:40 UTC 2011 - misterx@example.com - -- Update to r60.3 -- Fixes bug in the reflect package - * disallow Interface method on Value obtained via unexported name - -------------------------------------------------------------------- -Thu Oct 6 08:14:24 UTC 2011 - misterx@example.com - -- Update to r60.2 -- Fixes memory leak in certain map types - -------------------------------------------------------------------- -Wed Oct 5 14:34:10 UTC 2011 - misterx@example.com - -- Tweaks for gdb debugging -- go.spec changes: - - move %go_arch definition to %prep section - - pass correct location of go specific gdb pretty printer and - functions to cpp as HOST_EXTRA_CFLAGS macro - - install go gdb functions & printer -- gdb-printer.patch - - patch linker (src/cmd/ld/dwarf.c) to emit correct location of go - gdb functions and pretty printer -</textarea></div> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - mode: {name: "changes"}, - lineNumbers: true, - indentUnit: 4 - }); - </script> - - <p><strong>MIME types defined:</strong> <code>text/x-rpm-changes</code>.</p> -</article> diff --git a/assets/js/plugins/codemirror/mode/rpm/index.html b/assets/js/plugins/codemirror/mode/rpm/index.html deleted file mode 100644 index 9a34e6df..00000000 --- a/assets/js/plugins/codemirror/mode/rpm/index.html +++ /dev/null @@ -1,149 +0,0 @@ -<!doctype html> - -<title>CodeMirror: RPM changes mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - - <link rel="stylesheet" href="../../lib/codemirror.css"> - <script src="../../lib/codemirror.js"></script> - <script src="rpm.js"></script> - <link rel="stylesheet" href="../../doc/docs.css"> - <style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> - -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">RPM</a> - </ul> -</div> - -<article> -<h2>RPM changes mode</h2> - - <div><textarea id="code" name="code"> -------------------------------------------------------------------- -Tue Oct 18 13:58:40 UTC 2011 - misterx@example.com - -- Update to r60.3 -- Fixes bug in the reflect package - * disallow Interface method on Value obtained via unexported name - -------------------------------------------------------------------- -Thu Oct 6 08:14:24 UTC 2011 - misterx@example.com - -- Update to r60.2 -- Fixes memory leak in certain map types - -------------------------------------------------------------------- -Wed Oct 5 14:34:10 UTC 2011 - misterx@example.com - -- Tweaks for gdb debugging -- go.spec changes: - - move %go_arch definition to %prep section - - pass correct location of go specific gdb pretty printer and - functions to cpp as HOST_EXTRA_CFLAGS macro - - install go gdb functions & printer -- gdb-printer.patch - - patch linker (src/cmd/ld/dwarf.c) to emit correct location of go - gdb functions and pretty printer -</textarea></div> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - mode: {name: "rpm-changes"}, - lineNumbers: true, - indentUnit: 4 - }); - </script> - -<h2>RPM spec mode</h2> - - <div><textarea id="code2" name="code2"> -# -# spec file for package minidlna -# -# Copyright (c) 2011, Sascha Peilicke <saschpe@gmx.de> -# -# All modifications and additions to the file contributed by third parties -# remain the property of their copyright owners, unless otherwise agreed -# upon. The license for this file, and modifications and additions to the -# file, is the same license as for the pristine package itself (unless the -# license for the pristine package is not an Open Source License, in which -# case the license is the MIT License). An "Open Source License" is a -# license that conforms to the Open Source Definition (Version 1.9) -# published by the Open Source Initiative. - - -Name: libupnp6 -Version: 1.6.13 -Release: 0 -Summary: Portable Universal Plug and Play (UPnP) SDK -Group: System/Libraries -License: BSD-3-Clause -Url: http://sourceforge.net/projects/pupnp/ -Source0: http://downloads.sourceforge.net/pupnp/libupnp-%{version}.tar.bz2 -BuildRoot: %{_tmppath}/%{name}-%{version}-build - -%description -The portable Universal Plug and Play (UPnP) SDK provides support for building -UPnP-compliant control points, devices, and bridges on several operating -systems. - -%package -n libupnp-devel -Summary: Portable Universal Plug and Play (UPnP) SDK -Group: Development/Libraries/C and C++ -Provides: pkgconfig(libupnp) -Requires: %{name} = %{version} - -%description -n libupnp-devel -The portable Universal Plug and Play (UPnP) SDK provides support for building -UPnP-compliant control points, devices, and bridges on several operating -systems. - -%prep -%setup -n libupnp-%{version} - -%build -%configure --disable-static -make %{?_smp_mflags} - -%install -%makeinstall -find %{buildroot} -type f -name '*.la' -exec rm -f {} ';' - -%post -p /sbin/ldconfig - -%postun -p /sbin/ldconfig - -%files -%defattr(-,root,root,-) -%doc ChangeLog NEWS README TODO -%{_libdir}/libixml.so.* -%{_libdir}/libthreadutil.so.* -%{_libdir}/libupnp.so.* - -%files -n libupnp-devel -%defattr(-,root,root,-) -%{_libdir}/pkgconfig/libupnp.pc -%{_libdir}/libixml.so -%{_libdir}/libthreadutil.so -%{_libdir}/libupnp.so -%{_includedir}/upnp/ - -%changelog</textarea></div> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code2"), { - mode: {name: "rpm-spec"}, - lineNumbers: true, - indentUnit: 4 - }); - </script> - - <p><strong>MIME types defined:</strong> <code>text/x-rpm-spec</code>, <code>text/x-rpm-changes</code>.</p> -</article> diff --git a/assets/js/plugins/codemirror/mode/rpm/rpm.js b/assets/js/plugins/codemirror/mode/rpm/rpm.js deleted file mode 100644 index 3bb7cd2f..00000000 --- a/assets/js/plugins/codemirror/mode/rpm/rpm.js +++ /dev/null @@ -1,101 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("rpm-changes", function() { - var headerSeperator = /^-+$/; - var headerLine = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ?\d{1,2} \d{2}:\d{2}(:\d{2})? [A-Z]{3,4} \d{4} - /; - var simpleEmail = /^[\w+.-]+@[\w.-]+/; - - return { - token: function(stream) { - if (stream.sol()) { - if (stream.match(headerSeperator)) { return 'tag'; } - if (stream.match(headerLine)) { return 'tag'; } - } - if (stream.match(simpleEmail)) { return 'string'; } - stream.next(); - return null; - } - }; -}); - -CodeMirror.defineMIME("text/x-rpm-changes", "rpm-changes"); - -// Quick and dirty spec file highlighting - -CodeMirror.defineMode("rpm-spec", function() { - var arch = /^(i386|i586|i686|x86_64|ppc64|ppc|ia64|s390x|s390|sparc64|sparcv9|sparc|noarch|alphaev6|alpha|hppa|mipsel)/; - - var preamble = /^(Name|Version|Release|License|Summary|Url|Group|Source|BuildArch|BuildRequires|BuildRoot|AutoReqProv|Provides|Requires(\(\w+\))?|Obsoletes|Conflicts|Recommends|Source\d*|Patch\d*|ExclusiveArch|NoSource|Supplements):/; - var section = /^%(debug_package|package|description|prep|build|install|files|clean|changelog|preinstall|preun|postinstall|postun|pre|post|triggerin|triggerun|pretrans|posttrans|verifyscript|check|triggerpostun|triggerprein|trigger)/; - var control_flow_complex = /^%(ifnarch|ifarch|if)/; // rpm control flow macros - var control_flow_simple = /^%(else|endif)/; // rpm control flow macros - var operators = /^(\!|\?|\<\=|\<|\>\=|\>|\=\=|\&\&|\|\|)/; // operators in control flow macros - - return { - startState: function () { - return { - controlFlow: false, - macroParameters: false, - section: false - }; - }, - token: function (stream, state) { - var ch = stream.peek(); - if (ch == "#") { stream.skipToEnd(); return "comment"; } - - if (stream.sol()) { - if (stream.match(preamble)) { return "preamble"; } - if (stream.match(section)) { return "section"; } - } - - if (stream.match(/^\$\w+/)) { return "def"; } // Variables like '$RPM_BUILD_ROOT' - if (stream.match(/^\$\{\w+\}/)) { return "def"; } // Variables like '${RPM_BUILD_ROOT}' - - if (stream.match(control_flow_simple)) { return "keyword"; } - if (stream.match(control_flow_complex)) { - state.controlFlow = true; - return "keyword"; - } - if (state.controlFlow) { - if (stream.match(operators)) { return "operator"; } - if (stream.match(/^(\d+)/)) { return "number"; } - if (stream.eol()) { state.controlFlow = false; } - } - - if (stream.match(arch)) { return "number"; } - - // Macros like '%make_install' or '%attr(0775,root,root)' - if (stream.match(/^%[\w]+/)) { - if (stream.match(/^\(/)) { state.macroParameters = true; } - return "macro"; - } - if (state.macroParameters) { - if (stream.match(/^\d+/)) { return "number";} - if (stream.match(/^\)/)) { - state.macroParameters = false; - return "macro"; - } - } - if (stream.match(/^%\{\??[\w \-]+\}/)) { return "macro"; } // Macros like '%{defined fedora}' - - //TODO: Include bash script sub-parser (CodeMirror supports that) - stream.next(); - return null; - } - }; -}); - -CodeMirror.defineMIME("text/x-rpm-spec", "rpm-spec"); - -}); diff --git a/assets/js/plugins/codemirror/mode/rst/index.html b/assets/js/plugins/codemirror/mode/rst/index.html deleted file mode 100644 index 2902dea2..00000000 --- a/assets/js/plugins/codemirror/mode/rst/index.html +++ /dev/null @@ -1,535 +0,0 @@ -<!doctype html> - -<title>CodeMirror: reStructuredText mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="../../addon/mode/overlay.js"></script> -<script src="rst.js"></script> -<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">reStructuredText</a> - </ul> -</div> - -<article> -<h2>reStructuredText mode</h2> -<form><textarea id="code" name="code"> -.. This is an excerpt from Sphinx documentation: http://sphinx.pocoo.org/_sources/rest.txt - -.. highlightlang:: rest - -.. _rst-primer: - -reStructuredText Primer -======================= - -This section is a brief introduction to reStructuredText (reST) concepts and -syntax, intended to provide authors with enough information to author documents -productively. Since reST was designed to be a simple, unobtrusive markup -language, this will not take too long. - -.. seealso:: - - The authoritative `reStructuredText User Documentation - &lt;http://docutils.sourceforge.net/rst.html&gt;`_. The "ref" links in this - document link to the description of the individual constructs in the reST - reference. - - -Paragraphs ----------- - -The paragraph (:duref:`ref &lt;paragraphs&gt;`) is the most basic block in a reST -document. Paragraphs are simply chunks of text separated by one or more blank -lines. As in Python, indentation is significant in reST, so all lines of the -same paragraph must be left-aligned to the same level of indentation. - - -.. _inlinemarkup: - -Inline markup -------------- - -The standard reST inline markup is quite simple: use - -* one asterisk: ``*text*`` for emphasis (italics), -* two asterisks: ``**text**`` for strong emphasis (boldface), and -* backquotes: ````text```` for code samples. - -If asterisks or backquotes appear in running text and could be confused with -inline markup delimiters, they have to be escaped with a backslash. - -Be aware of some restrictions of this markup: - -* it may not be nested, -* content may not start or end with whitespace: ``* text*`` is wrong, -* it must be separated from surrounding text by non-word characters. Use a - backslash escaped space to work around that: ``thisis\ *one*\ word``. - -These restrictions may be lifted in future versions of the docutils. - -reST also allows for custom "interpreted text roles"', which signify that the -enclosed text should be interpreted in a specific way. Sphinx uses this to -provide semantic markup and cross-referencing of identifiers, as described in -the appropriate section. The general syntax is ``:rolename:`content```. - -Standard reST provides the following roles: - -* :durole:`emphasis` -- alternate spelling for ``*emphasis*`` -* :durole:`strong` -- alternate spelling for ``**strong**`` -* :durole:`literal` -- alternate spelling for ````literal```` -* :durole:`subscript` -- subscript text -* :durole:`superscript` -- superscript text -* :durole:`title-reference` -- for titles of books, periodicals, and other - materials - -See :ref:`inline-markup` for roles added by Sphinx. - - -Lists and Quote-like blocks ---------------------------- - -List markup (:duref:`ref &lt;bullet-lists&gt;`) is natural: just place an asterisk at -the start of a paragraph and indent properly. The same goes for numbered lists; -they can also be autonumbered using a ``#`` sign:: - - * This is a bulleted list. - * It has two items, the second - item uses two lines. - - 1. This is a numbered list. - 2. It has two items too. - - #. This is a numbered list. - #. It has two items too. - - -Nested lists are possible, but be aware that they must be separated from the -parent list items by blank lines:: - - * this is - * a list - - * with a nested list - * and some subitems - - * and here the parent list continues - -Definition lists (:duref:`ref &lt;definition-lists&gt;`) are created as follows:: - - term (up to a line of text) - Definition of the term, which must be indented - - and can even consist of multiple paragraphs - - next term - Description. - -Note that the term cannot have more than one line of text. - -Quoted paragraphs (:duref:`ref &lt;block-quotes&gt;`) are created by just indenting -them more than the surrounding paragraphs. - -Line blocks (:duref:`ref &lt;line-blocks&gt;`) are a way of preserving line breaks:: - - | These lines are - | broken exactly like in - | the source file. - -There are also several more special blocks available: - -* field lists (:duref:`ref &lt;field-lists&gt;`) -* option lists (:duref:`ref &lt;option-lists&gt;`) -* quoted literal blocks (:duref:`ref &lt;quoted-literal-blocks&gt;`) -* doctest blocks (:duref:`ref &lt;doctest-blocks&gt;`) - - -Source Code ------------ - -Literal code blocks (:duref:`ref &lt;literal-blocks&gt;`) are introduced by ending a -paragraph with the special marker ``::``. The literal block must be indented -(and, like all paragraphs, separated from the surrounding ones by blank lines):: - - This is a normal text paragraph. The next paragraph is a code sample:: - - It is not processed in any way, except - that the indentation is removed. - - It can span multiple lines. - - This is a normal text paragraph again. - -The handling of the ``::`` marker is smart: - -* If it occurs as a paragraph of its own, that paragraph is completely left - out of the document. -* If it is preceded by whitespace, the marker is removed. -* If it is preceded by non-whitespace, the marker is replaced by a single - colon. - -That way, the second sentence in the above example's first paragraph would be -rendered as "The next paragraph is a code sample:". - - -.. _rst-tables: - -Tables ------- - -Two forms of tables are supported. For *grid tables* (:duref:`ref -&lt;grid-tables&gt;`), you have to "paint" the cell grid yourself. They look like -this:: - - +------------------------+------------+----------+----------+ - | Header row, column 1 | Header 2 | Header 3 | Header 4 | - | (header rows optional) | | | | - +========================+============+==========+==========+ - | body row 1, column 1 | column 2 | column 3 | column 4 | - +------------------------+------------+----------+----------+ - | body row 2 | ... | ... | | - +------------------------+------------+----------+----------+ - -*Simple tables* (:duref:`ref &lt;simple-tables&gt;`) are easier to write, but -limited: they must contain more than one row, and the first column cannot -contain multiple lines. They look like this:: - - ===== ===== ======= - A B A and B - ===== ===== ======= - False False False - True False False - False True False - True True True - ===== ===== ======= - - -Hyperlinks ----------- - -External links -^^^^^^^^^^^^^^ - -Use ```Link text &lt;http://example.com/&gt;`_`` for inline web links. If the link -text should be the web address, you don't need special markup at all, the parser -finds links and mail addresses in ordinary text. - -You can also separate the link and the target definition (:duref:`ref -&lt;hyperlink-targets&gt;`), like this:: - - This is a paragraph that contains `a link`_. - - .. _a link: http://example.com/ - - -Internal links -^^^^^^^^^^^^^^ - -Internal linking is done via a special reST role provided by Sphinx, see the -section on specific markup, :ref:`ref-role`. - - -Sections --------- - -Section headers (:duref:`ref &lt;sections&gt;`) are created by underlining (and -optionally overlining) the section title with a punctuation character, at least -as long as the text:: - - ================= - This is a heading - ================= - -Normally, there are no heading levels assigned to certain characters as the -structure is determined from the succession of headings. However, for the -Python documentation, this convention is used which you may follow: - -* ``#`` with overline, for parts -* ``*`` with overline, for chapters -* ``=``, for sections -* ``-``, for subsections -* ``^``, for subsubsections -* ``"``, for paragraphs - -Of course, you are free to use your own marker characters (see the reST -documentation), and use a deeper nesting level, but keep in mind that most -target formats (HTML, LaTeX) have a limited supported nesting depth. - - -Explicit Markup ---------------- - -"Explicit markup" (:duref:`ref &lt;explicit-markup-blocks&gt;`) is used in reST for -most constructs that need special handling, such as footnotes, -specially-highlighted paragraphs, comments, and generic directives. - -An explicit markup block begins with a line starting with ``..`` followed by -whitespace and is terminated by the next paragraph at the same level of -indentation. (There needs to be a blank line between explicit markup and normal -paragraphs. This may all sound a bit complicated, but it is intuitive enough -when you write it.) - - -.. _directives: - -Directives ----------- - -A directive (:duref:`ref &lt;directives&gt;`) is a generic block of explicit markup. -Besides roles, it is one of the extension mechanisms of reST, and Sphinx makes -heavy use of it. - -Docutils supports the following directives: - -* Admonitions: :dudir:`attention`, :dudir:`caution`, :dudir:`danger`, - :dudir:`error`, :dudir:`hint`, :dudir:`important`, :dudir:`note`, - :dudir:`tip`, :dudir:`warning` and the generic :dudir:`admonition`. - (Most themes style only "note" and "warning" specially.) - -* Images: - - - :dudir:`image` (see also Images_ below) - - :dudir:`figure` (an image with caption and optional legend) - -* Additional body elements: - - - :dudir:`contents` (a local, i.e. for the current file only, table of - contents) - - :dudir:`container` (a container with a custom class, useful to generate an - outer ``&lt;div&gt;`` in HTML) - - :dudir:`rubric` (a heading without relation to the document sectioning) - - :dudir:`topic`, :dudir:`sidebar` (special highlighted body elements) - - :dudir:`parsed-literal` (literal block that supports inline markup) - - :dudir:`epigraph` (a block quote with optional attribution line) - - :dudir:`highlights`, :dudir:`pull-quote` (block quotes with their own - class attribute) - - :dudir:`compound` (a compound paragraph) - -* Special tables: - - - :dudir:`table` (a table with title) - - :dudir:`csv-table` (a table generated from comma-separated values) - - :dudir:`list-table` (a table generated from a list of lists) - -* Special directives: - - - :dudir:`raw` (include raw target-format markup) - - :dudir:`include` (include reStructuredText from another file) - -- in Sphinx, when given an absolute include file path, this directive takes - it as relative to the source directory - - :dudir:`class` (assign a class attribute to the next element) [1]_ - -* HTML specifics: - - - :dudir:`meta` (generation of HTML ``&lt;meta&gt;`` tags) - - :dudir:`title` (override document title) - -* Influencing markup: - - - :dudir:`default-role` (set a new default role) - - :dudir:`role` (create a new role) - - Since these are only per-file, better use Sphinx' facilities for setting the - :confval:`default_role`. - -Do *not* use the directives :dudir:`sectnum`, :dudir:`header` and -:dudir:`footer`. - -Directives added by Sphinx are described in :ref:`sphinxmarkup`. - -Basically, a directive consists of a name, arguments, options and content. (Keep -this terminology in mind, it is used in the next chapter describing custom -directives.) Looking at this example, :: - - .. function:: foo(x) - foo(y, z) - :module: some.module.name - - Return a line of text input from the user. - -``function`` is the directive name. It is given two arguments here, the -remainder of the first line and the second line, as well as one option -``module`` (as you can see, options are given in the lines immediately following -the arguments and indicated by the colons). Options must be indented to the -same level as the directive content. - -The directive content follows after a blank line and is indented relative to the -directive start. - - -Images ------- - -reST supports an image directive (:dudir:`ref &lt;image&gt;`), used like so:: - - .. image:: gnu.png - (options) - -When used within Sphinx, the file name given (here ``gnu.png``) must either be -relative to the source file, or absolute which means that they are relative to -the top source directory. For example, the file ``sketch/spam.rst`` could refer -to the image ``images/spam.png`` as ``../images/spam.png`` or -``/images/spam.png``. - -Sphinx will automatically copy image files over to a subdirectory of the output -directory on building (e.g. the ``_static`` directory for HTML output.) - -Interpretation of image size options (``width`` and ``height``) is as follows: -if the size has no unit or the unit is pixels, the given size will only be -respected for output channels that support pixels (i.e. not in LaTeX output). -Other units (like ``pt`` for points) will be used for HTML and LaTeX output. - -Sphinx extends the standard docutils behavior by allowing an asterisk for the -extension:: - - .. image:: gnu.* - -Sphinx then searches for all images matching the provided pattern and determines -their type. Each builder then chooses the best image out of these candidates. -For instance, if the file name ``gnu.*`` was given and two files :file:`gnu.pdf` -and :file:`gnu.png` existed in the source tree, the LaTeX builder would choose -the former, while the HTML builder would prefer the latter. - -.. versionchanged:: 0.4 - Added the support for file names ending in an asterisk. - -.. versionchanged:: 0.6 - Image paths can now be absolute. - - -Footnotes ---------- - -For footnotes (:duref:`ref &lt;footnotes&gt;`), use ``[#name]_`` to mark the footnote -location, and add the footnote body at the bottom of the document after a -"Footnotes" rubric heading, like so:: - - Lorem ipsum [#f1]_ dolor sit amet ... [#f2]_ - - .. rubric:: Footnotes - - .. [#f1] Text of the first footnote. - .. [#f2] Text of the second footnote. - -You can also explicitly number the footnotes (``[1]_``) or use auto-numbered -footnotes without names (``[#]_``). - - -Citations ---------- - -Standard reST citations (:duref:`ref &lt;citations&gt;`) are supported, with the -additional feature that they are "global", i.e. all citations can be referenced -from all files. Use them like so:: - - Lorem ipsum [Ref]_ dolor sit amet. - - .. [Ref] Book or article reference, URL or whatever. - -Citation usage is similar to footnote usage, but with a label that is not -numeric or begins with ``#``. - - -Substitutions -------------- - -reST supports "substitutions" (:duref:`ref &lt;substitution-definitions&gt;`), which -are pieces of text and/or markup referred to in the text by ``|name|``. They -are defined like footnotes with explicit markup blocks, like this:: - - .. |name| replace:: replacement *text* - -or this:: - - .. |caution| image:: warning.png - :alt: Warning! - -See the :duref:`reST reference for substitutions &lt;substitution-definitions&gt;` -for details. - -If you want to use some substitutions for all documents, put them into -:confval:`rst_prolog` or put them into a separate file and include it into all -documents you want to use them in, using the :rst:dir:`include` directive. (Be -sure to give the include file a file name extension differing from that of other -source files, to avoid Sphinx finding it as a standalone document.) - -Sphinx defines some default substitutions, see :ref:`default-substitutions`. - - -Comments --------- - -Every explicit markup block which isn't a valid markup construct (like the -footnotes above) is regarded as a comment (:duref:`ref &lt;comments&gt;`). For -example:: - - .. This is a comment. - -You can indent text after a comment start to form multiline comments:: - - .. - This whole indented block - is a comment. - - Still in the comment. - - -Source encoding ---------------- - -Since the easiest way to include special characters like em dashes or copyright -signs in reST is to directly write them as Unicode characters, one has to -specify an encoding. Sphinx assumes source files to be encoded in UTF-8 by -default; you can change this with the :confval:`source_encoding` config value. - - -Gotchas -------- - -There are some problems one commonly runs into while authoring reST documents: - -* **Separation of inline markup:** As said above, inline markup spans must be - separated from the surrounding text by non-word characters, you have to use a - backslash-escaped space to get around that. See `the reference - &lt;http://docutils.sf.net/docs/ref/rst/restructuredtext.html#inline-markup&gt;`_ - for the details. - -* **No nested inline markup:** Something like ``*see :func:`foo`*`` is not - possible. - - -.. rubric:: Footnotes - -.. [1] When the default domain contains a :rst:dir:`class` directive, this directive - will be shadowed. Therefore, Sphinx re-exports it as :rst:dir:`rst-class`. -</textarea></form> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers: true, - }); - </script> - <p> - The <code>python</code> mode will be used for highlighting blocks - containing Python/IPython terminal sessions: blocks starting with - <code>&gt;&gt;&gt;</code> (for Python) or <code>In [num]:</code> (for - IPython). - - Further, the <code>stex</code> mode will be used for highlighting - blocks containing LaTex code. - </p> - - <p><strong>MIME types defined:</strong> <code>text/x-rst</code>.</p> - </article> diff --git a/assets/js/plugins/codemirror/mode/rst/rst.js b/assets/js/plugins/codemirror/mode/rst/rst.js deleted file mode 100644 index bcf110c1..00000000 --- a/assets/js/plugins/codemirror/mode/rst/rst.js +++ /dev/null @@ -1,557 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../python/python"), require("../stex/stex"), require("../../addon/mode/overlay")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../python/python", "../stex/stex", "../../addon/mode/overlay"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode('rst', function (config, options) { - - var rx_strong = /^\*\*[^\*\s](?:[^\*]*[^\*\s])?\*\*/; - var rx_emphasis = /^\*[^\*\s](?:[^\*]*[^\*\s])?\*/; - var rx_literal = /^``[^`\s](?:[^`]*[^`\s])``/; - - var rx_number = /^(?:[\d]+(?:[\.,]\d+)*)/; - var rx_positive = /^(?:\s\+[\d]+(?:[\.,]\d+)*)/; - var rx_negative = /^(?:\s\-[\d]+(?:[\.,]\d+)*)/; - - var rx_uri_protocol = "[Hh][Tt][Tt][Pp][Ss]?://"; - var rx_uri_domain = "(?:[\\d\\w.-]+)\\.(?:\\w{2,6})"; - var rx_uri_path = "(?:/[\\d\\w\\#\\%\\&\\-\\.\\,\\/\\:\\=\\?\\~]+)*"; - var rx_uri = new RegExp("^" + rx_uri_protocol + rx_uri_domain + rx_uri_path); - - var overlay = { - token: function (stream) { - - if (stream.match(rx_strong) && stream.match (/\W+|$/, false)) - return 'strong'; - if (stream.match(rx_emphasis) && stream.match (/\W+|$/, false)) - return 'em'; - if (stream.match(rx_literal) && stream.match (/\W+|$/, false)) - return 'string-2'; - if (stream.match(rx_number)) - return 'number'; - if (stream.match(rx_positive)) - return 'positive'; - if (stream.match(rx_negative)) - return 'negative'; - if (stream.match(rx_uri)) - return 'link'; - - while (stream.next() != null) { - if (stream.match(rx_strong, false)) break; - if (stream.match(rx_emphasis, false)) break; - if (stream.match(rx_literal, false)) break; - if (stream.match(rx_number, false)) break; - if (stream.match(rx_positive, false)) break; - if (stream.match(rx_negative, false)) break; - if (stream.match(rx_uri, false)) break; - } - - return null; - } - }; - - var mode = CodeMirror.getMode( - config, options.backdrop || 'rst-base' - ); - - return CodeMirror.overlayMode(mode, overlay, true); // combine -}, 'python', 'stex'); - -/////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////// - -CodeMirror.defineMode('rst-base', function (config) { - - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - - function format(string) { - var args = Array.prototype.slice.call(arguments, 1); - return string.replace(/{(\d+)}/g, function (match, n) { - return typeof args[n] != 'undefined' ? args[n] : match; - }); - } - - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - - var mode_python = CodeMirror.getMode(config, 'python'); - var mode_stex = CodeMirror.getMode(config, 'stex'); - - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - - var SEPA = "\\s+"; - var TAIL = "(?:\\s*|\\W|$)", - rx_TAIL = new RegExp(format('^{0}', TAIL)); - - var NAME = - "(?:[^\\W\\d_](?:[\\w!\"#$%&'()\\*\\+,\\-\\.\/:;<=>\\?]*[^\\W_])?)", - rx_NAME = new RegExp(format('^{0}', NAME)); - var NAME_WWS = - "(?:[^\\W\\d_](?:[\\w\\s!\"#$%&'()\\*\\+,\\-\\.\/:;<=>\\?]*[^\\W_])?)"; - var REF_NAME = format('(?:{0}|`{1}`)', NAME, NAME_WWS); - - var TEXT1 = "(?:[^\\s\\|](?:[^\\|]*[^\\s\\|])?)"; - var TEXT2 = "(?:[^\\`]+)", - rx_TEXT2 = new RegExp(format('^{0}', TEXT2)); - - var rx_section = new RegExp( - "^([!'#$%&\"()*+,-./:;<=>?@\\[\\\\\\]^_`{|}~])\\1{3,}\\s*$"); - var rx_explicit = new RegExp( - format('^\\.\\.{0}', SEPA)); - var rx_link = new RegExp( - format('^_{0}:{1}|^__:{1}', REF_NAME, TAIL)); - var rx_directive = new RegExp( - format('^{0}::{1}', REF_NAME, TAIL)); - var rx_substitution = new RegExp( - format('^\\|{0}\\|{1}{2}::{3}', TEXT1, SEPA, REF_NAME, TAIL)); - var rx_footnote = new RegExp( - format('^\\[(?:\\d+|#{0}?|\\*)]{1}', REF_NAME, TAIL)); - var rx_citation = new RegExp( - format('^\\[{0}\\]{1}', REF_NAME, TAIL)); - - var rx_substitution_ref = new RegExp( - format('^\\|{0}\\|', TEXT1)); - var rx_footnote_ref = new RegExp( - format('^\\[(?:\\d+|#{0}?|\\*)]_', REF_NAME)); - var rx_citation_ref = new RegExp( - format('^\\[{0}\\]_', REF_NAME)); - var rx_link_ref1 = new RegExp( - format('^{0}__?', REF_NAME)); - var rx_link_ref2 = new RegExp( - format('^`{0}`_', TEXT2)); - - var rx_role_pre = new RegExp( - format('^:{0}:`{1}`{2}', NAME, TEXT2, TAIL)); - var rx_role_suf = new RegExp( - format('^`{1}`:{0}:{2}', NAME, TEXT2, TAIL)); - var rx_role = new RegExp( - format('^:{0}:{1}', NAME, TAIL)); - - var rx_directive_name = new RegExp(format('^{0}', REF_NAME)); - var rx_directive_tail = new RegExp(format('^::{0}', TAIL)); - var rx_substitution_text = new RegExp(format('^\\|{0}\\|', TEXT1)); - var rx_substitution_sepa = new RegExp(format('^{0}', SEPA)); - var rx_substitution_name = new RegExp(format('^{0}', REF_NAME)); - var rx_substitution_tail = new RegExp(format('^::{0}', TAIL)); - var rx_link_head = new RegExp("^_"); - var rx_link_name = new RegExp(format('^{0}|_', REF_NAME)); - var rx_link_tail = new RegExp(format('^:{0}', TAIL)); - - var rx_verbatim = new RegExp('^::\\s*$'); - var rx_examples = new RegExp('^\\s+(?:>>>|In \\[\\d+\\]:)\\s'); - - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - - function to_normal(stream, state) { - var token = null; - - if (stream.sol() && stream.match(rx_examples, false)) { - change(state, to_mode, { - mode: mode_python, local: CodeMirror.startState(mode_python) - }); - } else if (stream.sol() && stream.match(rx_explicit)) { - change(state, to_explicit); - token = 'meta'; - } else if (stream.sol() && stream.match(rx_section)) { - change(state, to_normal); - token = 'header'; - } else if (phase(state) == rx_role_pre || - stream.match(rx_role_pre, false)) { - - switch (stage(state)) { - case 0: - change(state, to_normal, context(rx_role_pre, 1)); - stream.match(/^:/); - token = 'meta'; - break; - case 1: - change(state, to_normal, context(rx_role_pre, 2)); - stream.match(rx_NAME); - token = 'keyword'; - - if (stream.current().match(/^(?:math|latex)/)) { - state.tmp_stex = true; - } - break; - case 2: - change(state, to_normal, context(rx_role_pre, 3)); - stream.match(/^:`/); - token = 'meta'; - break; - case 3: - if (state.tmp_stex) { - state.tmp_stex = undefined; state.tmp = { - mode: mode_stex, local: CodeMirror.startState(mode_stex) - }; - } - - if (state.tmp) { - if (stream.peek() == '`') { - change(state, to_normal, context(rx_role_pre, 4)); - state.tmp = undefined; - break; - } - - token = state.tmp.mode.token(stream, state.tmp.local); - break; - } - - change(state, to_normal, context(rx_role_pre, 4)); - stream.match(rx_TEXT2); - token = 'string'; - break; - case 4: - change(state, to_normal, context(rx_role_pre, 5)); - stream.match(/^`/); - token = 'meta'; - break; - case 5: - change(state, to_normal, context(rx_role_pre, 6)); - stream.match(rx_TAIL); - break; - default: - change(state, to_normal); - } - } else if (phase(state) == rx_role_suf || - stream.match(rx_role_suf, false)) { - - switch (stage(state)) { - case 0: - change(state, to_normal, context(rx_role_suf, 1)); - stream.match(/^`/); - token = 'meta'; - break; - case 1: - change(state, to_normal, context(rx_role_suf, 2)); - stream.match(rx_TEXT2); - token = 'string'; - break; - case 2: - change(state, to_normal, context(rx_role_suf, 3)); - stream.match(/^`:/); - token = 'meta'; - break; - case 3: - change(state, to_normal, context(rx_role_suf, 4)); - stream.match(rx_NAME); - token = 'keyword'; - break; - case 4: - change(state, to_normal, context(rx_role_suf, 5)); - stream.match(/^:/); - token = 'meta'; - break; - case 5: - change(state, to_normal, context(rx_role_suf, 6)); - stream.match(rx_TAIL); - break; - default: - change(state, to_normal); - } - } else if (phase(state) == rx_role || stream.match(rx_role, false)) { - - switch (stage(state)) { - case 0: - change(state, to_normal, context(rx_role, 1)); - stream.match(/^:/); - token = 'meta'; - break; - case 1: - change(state, to_normal, context(rx_role, 2)); - stream.match(rx_NAME); - token = 'keyword'; - break; - case 2: - change(state, to_normal, context(rx_role, 3)); - stream.match(/^:/); - token = 'meta'; - break; - case 3: - change(state, to_normal, context(rx_role, 4)); - stream.match(rx_TAIL); - break; - default: - change(state, to_normal); - } - } else if (phase(state) == rx_substitution_ref || - stream.match(rx_substitution_ref, false)) { - - switch (stage(state)) { - case 0: - change(state, to_normal, context(rx_substitution_ref, 1)); - stream.match(rx_substitution_text); - token = 'variable-2'; - break; - case 1: - change(state, to_normal, context(rx_substitution_ref, 2)); - if (stream.match(/^_?_?/)) token = 'link'; - break; - default: - change(state, to_normal); - } - } else if (stream.match(rx_footnote_ref)) { - change(state, to_normal); - token = 'quote'; - } else if (stream.match(rx_citation_ref)) { - change(state, to_normal); - token = 'quote'; - } else if (stream.match(rx_link_ref1)) { - change(state, to_normal); - if (!stream.peek() || stream.peek().match(/^\W$/)) { - token = 'link'; - } - } else if (phase(state) == rx_link_ref2 || - stream.match(rx_link_ref2, false)) { - - switch (stage(state)) { - case 0: - if (!stream.peek() || stream.peek().match(/^\W$/)) { - change(state, to_normal, context(rx_link_ref2, 1)); - } else { - stream.match(rx_link_ref2); - } - break; - case 1: - change(state, to_normal, context(rx_link_ref2, 2)); - stream.match(/^`/); - token = 'link'; - break; - case 2: - change(state, to_normal, context(rx_link_ref2, 3)); - stream.match(rx_TEXT2); - break; - case 3: - change(state, to_normal, context(rx_link_ref2, 4)); - stream.match(/^`_/); - token = 'link'; - break; - default: - change(state, to_normal); - } - } else if (stream.match(rx_verbatim)) { - change(state, to_verbatim); - } - - else { - if (stream.next()) change(state, to_normal); - } - - return token; - } - - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - - function to_explicit(stream, state) { - var token = null; - - if (phase(state) == rx_substitution || - stream.match(rx_substitution, false)) { - - switch (stage(state)) { - case 0: - change(state, to_explicit, context(rx_substitution, 1)); - stream.match(rx_substitution_text); - token = 'variable-2'; - break; - case 1: - change(state, to_explicit, context(rx_substitution, 2)); - stream.match(rx_substitution_sepa); - break; - case 2: - change(state, to_explicit, context(rx_substitution, 3)); - stream.match(rx_substitution_name); - token = 'keyword'; - break; - case 3: - change(state, to_explicit, context(rx_substitution, 4)); - stream.match(rx_substitution_tail); - token = 'meta'; - break; - default: - change(state, to_normal); - } - } else if (phase(state) == rx_directive || - stream.match(rx_directive, false)) { - - switch (stage(state)) { - case 0: - change(state, to_explicit, context(rx_directive, 1)); - stream.match(rx_directive_name); - token = 'keyword'; - - if (stream.current().match(/^(?:math|latex)/)) - state.tmp_stex = true; - else if (stream.current().match(/^python/)) - state.tmp_py = true; - break; - case 1: - change(state, to_explicit, context(rx_directive, 2)); - stream.match(rx_directive_tail); - token = 'meta'; - - if (stream.match(/^latex\s*$/) || state.tmp_stex) { - state.tmp_stex = undefined; change(state, to_mode, { - mode: mode_stex, local: CodeMirror.startState(mode_stex) - }); - } - break; - case 2: - change(state, to_explicit, context(rx_directive, 3)); - if (stream.match(/^python\s*$/) || state.tmp_py) { - state.tmp_py = undefined; change(state, to_mode, { - mode: mode_python, local: CodeMirror.startState(mode_python) - }); - } - break; - default: - change(state, to_normal); - } - } else if (phase(state) == rx_link || stream.match(rx_link, false)) { - - switch (stage(state)) { - case 0: - change(state, to_explicit, context(rx_link, 1)); - stream.match(rx_link_head); - stream.match(rx_link_name); - token = 'link'; - break; - case 1: - change(state, to_explicit, context(rx_link, 2)); - stream.match(rx_link_tail); - token = 'meta'; - break; - default: - change(state, to_normal); - } - } else if (stream.match(rx_footnote)) { - change(state, to_normal); - token = 'quote'; - } else if (stream.match(rx_citation)) { - change(state, to_normal); - token = 'quote'; - } - - else { - stream.eatSpace(); - if (stream.eol()) { - change(state, to_normal); - } else { - stream.skipToEnd(); - change(state, to_comment); - token = 'comment'; - } - } - - return token; - } - - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - - function to_comment(stream, state) { - return as_block(stream, state, 'comment'); - } - - function to_verbatim(stream, state) { - return as_block(stream, state, 'meta'); - } - - function as_block(stream, state, token) { - if (stream.eol() || stream.eatSpace()) { - stream.skipToEnd(); - return token; - } else { - change(state, to_normal); - return null; - } - } - - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - - function to_mode(stream, state) { - - if (state.ctx.mode && state.ctx.local) { - - if (stream.sol()) { - if (!stream.eatSpace()) change(state, to_normal); - return null; - } - - return state.ctx.mode.token(stream, state.ctx.local); - } - - change(state, to_normal); - return null; - } - - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - - function context(phase, stage, mode, local) { - return {phase: phase, stage: stage, mode: mode, local: local}; - } - - function change(state, tok, ctx) { - state.tok = tok; - state.ctx = ctx || {}; - } - - function stage(state) { - return state.ctx.stage || 0; - } - - function phase(state) { - return state.ctx.phase; - } - - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - - return { - startState: function () { - return {tok: to_normal, ctx: context(undefined, 0)}; - }, - - copyState: function (state) { - var ctx = state.ctx, tmp = state.tmp; - if (ctx.local) - ctx = {mode: ctx.mode, local: CodeMirror.copyState(ctx.mode, ctx.local)}; - if (tmp) - tmp = {mode: tmp.mode, local: CodeMirror.copyState(tmp.mode, tmp.local)}; - return {tok: state.tok, ctx: ctx, tmp: tmp}; - }, - - innerMode: function (state) { - return state.tmp ? {state: state.tmp.local, mode: state.tmp.mode} - : state.ctx.mode ? {state: state.ctx.local, mode: state.ctx.mode} - : null; - }, - - token: function (stream, state) { - return state.tok(stream, state); - } - }; -}, 'python', 'stex'); - -/////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////// - -CodeMirror.defineMIME('text/x-rst', 'rst'); - -/////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////// - -}); diff --git a/assets/js/plugins/codemirror/mode/ruby/index.html b/assets/js/plugins/codemirror/mode/ruby/index.html deleted file mode 100644 index 1197ab02..00000000 --- a/assets/js/plugins/codemirror/mode/ruby/index.html +++ /dev/null @@ -1,184 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Ruby mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="../../addon/edit/matchbrackets.js"></script> -<script src="ruby.js"></script> -<style> - .CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;} - .cm-s-default span.cm-arrow { color: red; } - </style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Ruby</a> - </ul> -</div> - -<article> -<h2>Ruby mode</h2> -<form><textarea id="code" name="code"> -# Code from http://sandbox.mc.edu/~bennet/ruby/code/poly_rb.html -# -# This program evaluates polynomials. It first asks for the coefficients -# of a polynomial, which must be entered on one line, highest-order first. -# It then requests values of x and will compute the value of the poly for -# each x. It will repeatly ask for x values, unless you the user enters -# a blank line. It that case, it will ask for another polynomial. If the -# user types quit for either input, the program immediately exits. -# - -# -# Function to evaluate a polynomial at x. The polynomial is given -# as a list of coefficients, from the greatest to the least. -def polyval(x, coef) - sum = 0 - coef = coef.clone # Don't want to destroy the original - while true - sum += coef.shift # Add and remove the next coef - break if coef.empty? # If no more, done entirely. - sum *= x # This happens the right number of times. - end - return sum -end - -# -# Function to read a line containing a list of integers and return -# them as an array of integers. If the string conversion fails, it -# throws TypeError. If the input line is the word 'quit', then it -# converts it to an end-of-file exception -def readints(prompt) - # Read a line - print prompt - line = readline.chomp - raise EOFError.new if line == 'quit' # You can also use a real EOF. - - # Go through each item on the line, converting each one and adding it - # to retval. - retval = [ ] - for str in line.split(/\s+/) - if str =~ /^\-?\d+$/ - retval.push(str.to_i) - else - raise TypeError.new - end - end - - return retval -end - -# -# Take a coeff and an exponent and return the string representation, ignoring -# the sign of the coefficient. -def term_to_str(coef, exp) - ret = "" - - # Show coeff, unless it's 1 or at the right - coef = coef.abs - ret = coef.to_s unless coef == 1 && exp > 0 - ret += "x" if exp > 0 # x if exponent not 0 - ret += "^" + exp.to_s if exp > 1 # ^exponent, if > 1. - - return ret -end - -# -# Create a string of the polynomial in sort-of-readable form. -def polystr(p) - # Get the exponent of first coefficient, plus 1. - exp = p.length - - # Assign exponents to each term, making pairs of coeff and exponent, - # Then get rid of the zero terms. - p = (p.map { |c| exp -= 1; [ c, exp ] }).select { |p| p[0] != 0 } - - # If there's nothing left, it's a zero - return "0" if p.empty? - - # *** Now p is a non-empty list of [ coef, exponent ] pairs. *** - - # Convert the first term, preceded by a "-" if it's negative. - result = (if p[0][0] < 0 then "-" else "" end) + term_to_str(*p[0]) - - # Convert the rest of the terms, in each case adding the appropriate - # + or - separating them. - for term in p[1...p.length] - # Add the separator then the rep. of the term. - result += (if term[0] < 0 then " - " else " + " end) + - term_to_str(*term) - end - - return result -end - -# -# Run until some kind of endfile. -begin - # Repeat until an exception or quit gets us out. - while true - # Read a poly until it works. An EOF will except out of the - # program. - print "\n" - begin - poly = readints("Enter a polynomial coefficients: ") - rescue TypeError - print "Try again.\n" - retry - end - break if poly.empty? - - # Read and evaluate x values until the user types a blank line. - # Again, an EOF will except out of the pgm. - while true - # Request an integer. - print "Enter x value or blank line: " - x = readline.chomp - break if x == '' - raise EOFError.new if x == 'quit' - - # If it looks bad, let's try again. - if x !~ /^\-?\d+$/ - print "That doesn't look like an integer. Please try again.\n" - next - end - - # Convert to an integer and print the result. - x = x.to_i - print "p(x) = ", polystr(poly), "\n" - print "p(", x, ") = ", polyval(x, poly), "\n" - end - end -rescue EOFError - print "\n=== EOF ===\n" -rescue Interrupt, SignalException - print "\n=== Interrupted ===\n" -else - print "--- Bye ---\n" -end -</textarea></form> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - mode: "text/x-ruby", - matchBrackets: true, - indentUnit: 4 - }); - </script> - - <p><strong>MIME types defined:</strong> <code>text/x-ruby</code>.</p> - - <p>Development of the CodeMirror Ruby mode was kindly sponsored - by <a href="http://ubalo.com/">Ubalo</a>, who hold - the <a href="LICENSE">license</a>.</p> - - </article> diff --git a/assets/js/plugins/codemirror/mode/ruby/ruby.js b/assets/js/plugins/codemirror/mode/ruby/ruby.js deleted file mode 100644 index eab9d9da..00000000 --- a/assets/js/plugins/codemirror/mode/ruby/ruby.js +++ /dev/null @@ -1,285 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("ruby", function(config) { - function wordObj(words) { - var o = {}; - for (var i = 0, e = words.length; i < e; ++i) o[words[i]] = true; - return o; - } - var keywords = wordObj([ - "alias", "and", "BEGIN", "begin", "break", "case", "class", "def", "defined?", "do", "else", - "elsif", "END", "end", "ensure", "false", "for", "if", "in", "module", "next", "not", "or", - "redo", "rescue", "retry", "return", "self", "super", "then", "true", "undef", "unless", - "until", "when", "while", "yield", "nil", "raise", "throw", "catch", "fail", "loop", "callcc", - "caller", "lambda", "proc", "public", "protected", "private", "require", "load", - "require_relative", "extend", "autoload", "__END__", "__FILE__", "__LINE__", "__dir__" - ]); - var indentWords = wordObj(["def", "class", "case", "for", "while", "module", "then", - "catch", "loop", "proc", "begin"]); - var dedentWords = wordObj(["end", "until"]); - var matching = {"[": "]", "{": "}", "(": ")"}; - var curPunc; - - function chain(newtok, stream, state) { - state.tokenize.push(newtok); - return newtok(stream, state); - } - - function tokenBase(stream, state) { - curPunc = null; - if (stream.sol() && stream.match("=begin") && stream.eol()) { - state.tokenize.push(readBlockComment); - return "comment"; - } - if (stream.eatSpace()) return null; - var ch = stream.next(), m; - if (ch == "`" || ch == "'" || ch == '"') { - return chain(readQuoted(ch, "string", ch == '"' || ch == "`"), stream, state); - } else if (ch == "/") { - var currentIndex = stream.current().length; - if (stream.skipTo("/")) { - var search_till = stream.current().length; - stream.backUp(stream.current().length - currentIndex); - var balance = 0; // balance brackets - while (stream.current().length < search_till) { - var chchr = stream.next(); - if (chchr == "(") balance += 1; - else if (chchr == ")") balance -= 1; - if (balance < 0) break; - } - stream.backUp(stream.current().length - currentIndex); - if (balance == 0) - return chain(readQuoted(ch, "string-2", true), stream, state); - } - return "operator"; - } else if (ch == "%") { - var style = "string", embed = true; - if (stream.eat("s")) style = "atom"; - else if (stream.eat(/[WQ]/)) style = "string"; - else if (stream.eat(/[r]/)) style = "string-2"; - else if (stream.eat(/[wxq]/)) { style = "string"; embed = false; } - var delim = stream.eat(/[^\w\s=]/); - if (!delim) return "operator"; - if (matching.propertyIsEnumerable(delim)) delim = matching[delim]; - return chain(readQuoted(delim, style, embed, true), stream, state); - } else if (ch == "#") { - stream.skipToEnd(); - return "comment"; - } else if (ch == "<" && (m = stream.match(/^<-?[\`\"\']?([a-zA-Z_?]\w*)[\`\"\']?(?:;|$)/))) { - return chain(readHereDoc(m[1]), stream, state); - } else if (ch == "0") { - if (stream.eat("x")) stream.eatWhile(/[\da-fA-F]/); - else if (stream.eat("b")) stream.eatWhile(/[01]/); - else stream.eatWhile(/[0-7]/); - return "number"; - } else if (/\d/.test(ch)) { - stream.match(/^[\d_]*(?:\.[\d_]+)?(?:[eE][+\-]?[\d_]+)?/); - return "number"; - } else if (ch == "?") { - while (stream.match(/^\\[CM]-/)) {} - if (stream.eat("\\")) stream.eatWhile(/\w/); - else stream.next(); - return "string"; - } else if (ch == ":") { - if (stream.eat("'")) return chain(readQuoted("'", "atom", false), stream, state); - if (stream.eat('"')) return chain(readQuoted('"', "atom", true), stream, state); - - // :> :>> :< :<< are valid symbols - if (stream.eat(/[\<\>]/)) { - stream.eat(/[\<\>]/); - return "atom"; - } - - // :+ :- :/ :* :| :& :! are valid symbols - if (stream.eat(/[\+\-\*\/\&\|\:\!]/)) { - return "atom"; - } - - // Symbols can't start by a digit - if (stream.eat(/[a-zA-Z$@_\xa1-\uffff]/)) { - stream.eatWhile(/[\w$\xa1-\uffff]/); - // Only one ? ! = is allowed and only as the last character - stream.eat(/[\?\!\=]/); - return "atom"; - } - return "operator"; - } else if (ch == "@" && stream.match(/^@?[a-zA-Z_\xa1-\uffff]/)) { - stream.eat("@"); - stream.eatWhile(/[\w\xa1-\uffff]/); - return "variable-2"; - } else if (ch == "$") { - if (stream.eat(/[a-zA-Z_]/)) { - stream.eatWhile(/[\w]/); - } else if (stream.eat(/\d/)) { - stream.eat(/\d/); - } else { - stream.next(); // Must be a special global like $: or $! - } - return "variable-3"; - } else if (/[a-zA-Z_\xa1-\uffff]/.test(ch)) { - stream.eatWhile(/[\w\xa1-\uffff]/); - stream.eat(/[\?\!]/); - if (stream.eat(":")) return "atom"; - return "ident"; - } else if (ch == "|" && (state.varList || state.lastTok == "{" || state.lastTok == "do")) { - curPunc = "|"; - return null; - } else if (/[\(\)\[\]{}\\;]/.test(ch)) { - curPunc = ch; - return null; - } else if (ch == "-" && stream.eat(">")) { - return "arrow"; - } else if (/[=+\-\/*:\.^%<>~|]/.test(ch)) { - var more = stream.eatWhile(/[=+\-\/*:\.^%<>~|]/); - if (ch == "." && !more) curPunc = "."; - return "operator"; - } else { - return null; - } - } - - function tokenBaseUntilBrace(depth) { - if (!depth) depth = 1; - return function(stream, state) { - if (stream.peek() == "}") { - if (depth == 1) { - state.tokenize.pop(); - return state.tokenize[state.tokenize.length-1](stream, state); - } else { - state.tokenize[state.tokenize.length - 1] = tokenBaseUntilBrace(depth - 1); - } - } else if (stream.peek() == "{") { - state.tokenize[state.tokenize.length - 1] = tokenBaseUntilBrace(depth + 1); - } - return tokenBase(stream, state); - }; - } - function tokenBaseOnce() { - var alreadyCalled = false; - return function(stream, state) { - if (alreadyCalled) { - state.tokenize.pop(); - return state.tokenize[state.tokenize.length-1](stream, state); - } - alreadyCalled = true; - return tokenBase(stream, state); - }; - } - function readQuoted(quote, style, embed, unescaped) { - return function(stream, state) { - var escaped = false, ch; - - if (state.context.type === 'read-quoted-paused') { - state.context = state.context.prev; - stream.eat("}"); - } - - while ((ch = stream.next()) != null) { - if (ch == quote && (unescaped || !escaped)) { - state.tokenize.pop(); - break; - } - if (embed && ch == "#" && !escaped) { - if (stream.eat("{")) { - if (quote == "}") { - state.context = {prev: state.context, type: 'read-quoted-paused'}; - } - state.tokenize.push(tokenBaseUntilBrace()); - break; - } else if (/[@\$]/.test(stream.peek())) { - state.tokenize.push(tokenBaseOnce()); - break; - } - } - escaped = !escaped && ch == "\\"; - } - return style; - }; - } - function readHereDoc(phrase) { - return function(stream, state) { - if (stream.match(phrase)) state.tokenize.pop(); - else stream.skipToEnd(); - return "string"; - }; - } - function readBlockComment(stream, state) { - if (stream.sol() && stream.match("=end") && stream.eol()) - state.tokenize.pop(); - stream.skipToEnd(); - return "comment"; - } - - return { - startState: function() { - return {tokenize: [tokenBase], - indented: 0, - context: {type: "top", indented: -config.indentUnit}, - continuedLine: false, - lastTok: null, - varList: false}; - }, - - token: function(stream, state) { - if (stream.sol()) state.indented = stream.indentation(); - var style = state.tokenize[state.tokenize.length-1](stream, state), kwtype; - var thisTok = curPunc; - if (style == "ident") { - var word = stream.current(); - style = state.lastTok == "." ? "property" - : keywords.propertyIsEnumerable(stream.current()) ? "keyword" - : /^[A-Z]/.test(word) ? "tag" - : (state.lastTok == "def" || state.lastTok == "class" || state.varList) ? "def" - : "variable"; - if (style == "keyword") { - thisTok = word; - if (indentWords.propertyIsEnumerable(word)) kwtype = "indent"; - else if (dedentWords.propertyIsEnumerable(word)) kwtype = "dedent"; - else if ((word == "if" || word == "unless") && stream.column() == stream.indentation()) - kwtype = "indent"; - else if (word == "do" && state.context.indented < state.indented) - kwtype = "indent"; - } - } - if (curPunc || (style && style != "comment")) state.lastTok = thisTok; - if (curPunc == "|") state.varList = !state.varList; - - if (kwtype == "indent" || /[\(\[\{]/.test(curPunc)) - state.context = {prev: state.context, type: curPunc || style, indented: state.indented}; - else if ((kwtype == "dedent" || /[\)\]\}]/.test(curPunc)) && state.context.prev) - state.context = state.context.prev; - - if (stream.eol()) - state.continuedLine = (curPunc == "\\" || style == "operator"); - return style; - }, - - indent: function(state, textAfter) { - if (state.tokenize[state.tokenize.length-1] != tokenBase) return 0; - var firstChar = textAfter && textAfter.charAt(0); - var ct = state.context; - var closing = ct.type == matching[firstChar] || - ct.type == "keyword" && /^(?:end|until|else|elsif|when|rescue)\b/.test(textAfter); - return ct.indented + (closing ? 0 : config.indentUnit) + - (state.continuedLine ? config.indentUnit : 0); - }, - - electricChars: "}de", // enD and rescuE - lineComment: "#" - }; -}); - -CodeMirror.defineMIME("text/x-ruby", "ruby"); - -}); diff --git a/assets/js/plugins/codemirror/mode/ruby/test.js b/assets/js/plugins/codemirror/mode/ruby/test.js deleted file mode 100644 index cade864f..00000000 --- a/assets/js/plugins/codemirror/mode/ruby/test.js +++ /dev/null @@ -1,14 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - var mode = CodeMirror.getMode({indentUnit: 2}, "ruby"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - - MT("divide_equal_operator", - "[variable bar] [operator /=] [variable foo]"); - - MT("divide_equal_operator_no_spacing", - "[variable foo][operator /=][number 42]"); - -})(); diff --git a/assets/js/plugins/codemirror/mode/rust/index.html b/assets/js/plugins/codemirror/mode/rust/index.html deleted file mode 100644 index 407e84f2..00000000 --- a/assets/js/plugins/codemirror/mode/rust/index.html +++ /dev/null @@ -1,60 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Rust mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="rust.js"></script> -<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Rust</a> - </ul> -</div> - -<article> -<h2>Rust mode</h2> - - -<div><textarea id="code" name="code"> -// Demo code. - -type foo<T> = int; -enum bar { - some(int, foo<float>), - none -} - -fn check_crate(x: int) { - let v = 10; - alt foo { - 1 to 3 { - print_foo(); - if x { - blah() + 10; - } - } - (x, y) { "bye" } - _ { "hi" } - } -} -</textarea></div> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers: true - }); - </script> - - <p><strong>MIME types defined:</strong> <code>text/x-rustsrc</code>.</p> - </article> diff --git a/assets/js/plugins/codemirror/mode/rust/rust.js b/assets/js/plugins/codemirror/mode/rust/rust.js deleted file mode 100644 index 2bffa9a6..00000000 --- a/assets/js/plugins/codemirror/mode/rust/rust.js +++ /dev/null @@ -1,451 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("rust", function() { - var indentUnit = 4, altIndentUnit = 2; - var valKeywords = { - "if": "if-style", "while": "if-style", "loop": "else-style", "else": "else-style", - "do": "else-style", "ret": "else-style", "fail": "else-style", - "break": "atom", "cont": "atom", "const": "let", "resource": "fn", - "let": "let", "fn": "fn", "for": "for", "alt": "alt", "iface": "iface", - "impl": "impl", "type": "type", "enum": "enum", "mod": "mod", - "as": "op", "true": "atom", "false": "atom", "assert": "op", "check": "op", - "claim": "op", "native": "ignore", "unsafe": "ignore", "import": "else-style", - "export": "else-style", "copy": "op", "log": "op", "log_err": "op", - "use": "op", "bind": "op", "self": "atom", "struct": "enum" - }; - var typeKeywords = function() { - var keywords = {"fn": "fn", "block": "fn", "obj": "obj"}; - var atoms = "bool uint int i8 i16 i32 i64 u8 u16 u32 u64 float f32 f64 str char".split(" "); - for (var i = 0, e = atoms.length; i < e; ++i) keywords[atoms[i]] = "atom"; - return keywords; - }(); - var operatorChar = /[+\-*&%=<>!?|\.@]/; - - // Tokenizer - - // Used as scratch variable to communicate multiple values without - // consing up tons of objects. - var tcat, content; - function r(tc, style) { - tcat = tc; - return style; - } - - function tokenBase(stream, state) { - var ch = stream.next(); - if (ch == '"') { - state.tokenize = tokenString; - return state.tokenize(stream, state); - } - if (ch == "'") { - tcat = "atom"; - if (stream.eat("\\")) { - if (stream.skipTo("'")) { stream.next(); return "string"; } - else { return "error"; } - } else { - stream.next(); - return stream.eat("'") ? "string" : "error"; - } - } - if (ch == "/") { - if (stream.eat("/")) { stream.skipToEnd(); return "comment"; } - if (stream.eat("*")) { - state.tokenize = tokenComment(1); - return state.tokenize(stream, state); - } - } - if (ch == "#") { - if (stream.eat("[")) { tcat = "open-attr"; return null; } - stream.eatWhile(/\w/); - return r("macro", "meta"); - } - if (ch == ":" && stream.match(":<")) { - return r("op", null); - } - if (ch.match(/\d/) || (ch == "." && stream.eat(/\d/))) { - var flp = false; - if (!stream.match(/^x[\da-f]+/i) && !stream.match(/^b[01]+/)) { - stream.eatWhile(/\d/); - if (stream.eat(".")) { flp = true; stream.eatWhile(/\d/); } - if (stream.match(/^e[+\-]?\d+/i)) { flp = true; } - } - if (flp) stream.match(/^f(?:32|64)/); - else stream.match(/^[ui](?:8|16|32|64)/); - return r("atom", "number"); - } - if (ch.match(/[()\[\]{}:;,]/)) return r(ch, null); - if (ch == "-" && stream.eat(">")) return r("->", null); - if (ch.match(operatorChar)) { - stream.eatWhile(operatorChar); - return r("op", null); - } - stream.eatWhile(/\w/); - content = stream.current(); - if (stream.match(/^::\w/)) { - stream.backUp(1); - return r("prefix", "variable-2"); - } - if (state.keywords.propertyIsEnumerable(content)) - return r(state.keywords[content], content.match(/true|false/) ? "atom" : "keyword"); - return r("name", "variable"); - } - - function tokenString(stream, state) { - var ch, escaped = false; - while (ch = stream.next()) { - if (ch == '"' && !escaped) { - state.tokenize = tokenBase; - return r("atom", "string"); - } - escaped = !escaped && ch == "\\"; - } - // Hack to not confuse the parser when a string is split in - // pieces. - return r("op", "string"); - } - - function tokenComment(depth) { - return function(stream, state) { - var lastCh = null, ch; - while (ch = stream.next()) { - if (ch == "/" && lastCh == "*") { - if (depth == 1) { - state.tokenize = tokenBase; - break; - } else { - state.tokenize = tokenComment(depth - 1); - return state.tokenize(stream, state); - } - } - if (ch == "*" && lastCh == "/") { - state.tokenize = tokenComment(depth + 1); - return state.tokenize(stream, state); - } - lastCh = ch; - } - return "comment"; - }; - } - - // Parser - - var cx = {state: null, stream: null, marked: null, cc: null}; - function pass() { - for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]); - } - function cont() { - pass.apply(null, arguments); - return true; - } - - function pushlex(type, info) { - var result = function() { - var state = cx.state; - state.lexical = {indented: state.indented, column: cx.stream.column(), - type: type, prev: state.lexical, info: info}; - }; - result.lex = true; - return result; - } - function poplex() { - var state = cx.state; - if (state.lexical.prev) { - if (state.lexical.type == ")") - state.indented = state.lexical.indented; - state.lexical = state.lexical.prev; - } - } - function typecx() { cx.state.keywords = typeKeywords; } - function valcx() { cx.state.keywords = valKeywords; } - poplex.lex = typecx.lex = valcx.lex = true; - - function commasep(comb, end) { - function more(type) { - if (type == ",") return cont(comb, more); - if (type == end) return cont(); - return cont(more); - } - return function(type) { - if (type == end) return cont(); - return pass(comb, more); - }; - } - - function stat_of(comb, tag) { - return cont(pushlex("stat", tag), comb, poplex, block); - } - function block(type) { - if (type == "}") return cont(); - if (type == "let") return stat_of(letdef1, "let"); - if (type == "fn") return stat_of(fndef); - if (type == "type") return cont(pushlex("stat"), tydef, endstatement, poplex, block); - if (type == "enum") return stat_of(enumdef); - if (type == "mod") return stat_of(mod); - if (type == "iface") return stat_of(iface); - if (type == "impl") return stat_of(impl); - if (type == "open-attr") return cont(pushlex("]"), commasep(expression, "]"), poplex); - if (type == "ignore" || type.match(/[\]\);,]/)) return cont(block); - return pass(pushlex("stat"), expression, poplex, endstatement, block); - } - function endstatement(type) { - if (type == ";") return cont(); - return pass(); - } - function expression(type) { - if (type == "atom" || type == "name") return cont(maybeop); - if (type == "{") return cont(pushlex("}"), exprbrace, poplex); - if (type.match(/[\[\(]/)) return matchBrackets(type, expression); - if (type.match(/[\]\)\};,]/)) return pass(); - if (type == "if-style") return cont(expression, expression); - if (type == "else-style" || type == "op") return cont(expression); - if (type == "for") return cont(pattern, maybetype, inop, expression, expression); - if (type == "alt") return cont(expression, altbody); - if (type == "fn") return cont(fndef); - if (type == "macro") return cont(macro); - return cont(); - } - function maybeop(type) { - if (content == ".") return cont(maybeprop); - if (content == "::<"){return cont(typarams, maybeop);} - if (type == "op" || content == ":") return cont(expression); - if (type == "(" || type == "[") return matchBrackets(type, expression); - return pass(); - } - function maybeprop() { - if (content.match(/^\w+$/)) {cx.marked = "variable"; return cont(maybeop);} - return pass(expression); - } - function exprbrace(type) { - if (type == "op") { - if (content == "|") return cont(blockvars, poplex, pushlex("}", "block"), block); - if (content == "||") return cont(poplex, pushlex("}", "block"), block); - } - if (content == "mutable" || (content.match(/^\w+$/) && cx.stream.peek() == ":" - && !cx.stream.match("::", false))) - return pass(record_of(expression)); - return pass(block); - } - function record_of(comb) { - function ro(type) { - if (content == "mutable" || content == "with") {cx.marked = "keyword"; return cont(ro);} - if (content.match(/^\w*$/)) {cx.marked = "variable"; return cont(ro);} - if (type == ":") return cont(comb, ro); - if (type == "}") return cont(); - return cont(ro); - } - return ro; - } - function blockvars(type) { - if (type == "name") {cx.marked = "def"; return cont(blockvars);} - if (type == "op" && content == "|") return cont(); - return cont(blockvars); - } - - function letdef1(type) { - if (type.match(/[\]\)\};]/)) return cont(); - if (content == "=") return cont(expression, letdef2); - if (type == ",") return cont(letdef1); - return pass(pattern, maybetype, letdef1); - } - function letdef2(type) { - if (type.match(/[\]\)\};,]/)) return pass(letdef1); - else return pass(expression, letdef2); - } - function maybetype(type) { - if (type == ":") return cont(typecx, rtype, valcx); - return pass(); - } - function inop(type) { - if (type == "name" && content == "in") {cx.marked = "keyword"; return cont();} - return pass(); - } - function fndef(type) { - if (content == "@" || content == "~") {cx.marked = "keyword"; return cont(fndef);} - if (type == "name") {cx.marked = "def"; return cont(fndef);} - if (content == "<") return cont(typarams, fndef); - if (type == "{") return pass(expression); - if (type == "(") return cont(pushlex(")"), commasep(argdef, ")"), poplex, fndef); - if (type == "->") return cont(typecx, rtype, valcx, fndef); - if (type == ";") return cont(); - return cont(fndef); - } - function tydef(type) { - if (type == "name") {cx.marked = "def"; return cont(tydef);} - if (content == "<") return cont(typarams, tydef); - if (content == "=") return cont(typecx, rtype, valcx); - return cont(tydef); - } - function enumdef(type) { - if (type == "name") {cx.marked = "def"; return cont(enumdef);} - if (content == "<") return cont(typarams, enumdef); - if (content == "=") return cont(typecx, rtype, valcx, endstatement); - if (type == "{") return cont(pushlex("}"), typecx, enumblock, valcx, poplex); - return cont(enumdef); - } - function enumblock(type) { - if (type == "}") return cont(); - if (type == "(") return cont(pushlex(")"), commasep(rtype, ")"), poplex, enumblock); - if (content.match(/^\w+$/)) cx.marked = "def"; - return cont(enumblock); - } - function mod(type) { - if (type == "name") {cx.marked = "def"; return cont(mod);} - if (type == "{") return cont(pushlex("}"), block, poplex); - return pass(); - } - function iface(type) { - if (type == "name") {cx.marked = "def"; return cont(iface);} - if (content == "<") return cont(typarams, iface); - if (type == "{") return cont(pushlex("}"), block, poplex); - return pass(); - } - function impl(type) { - if (content == "<") return cont(typarams, impl); - if (content == "of" || content == "for") {cx.marked = "keyword"; return cont(rtype, impl);} - if (type == "name") {cx.marked = "def"; return cont(impl);} - if (type == "{") return cont(pushlex("}"), block, poplex); - return pass(); - } - function typarams() { - if (content == ">") return cont(); - if (content == ",") return cont(typarams); - if (content == ":") return cont(rtype, typarams); - return pass(rtype, typarams); - } - function argdef(type) { - if (type == "name") {cx.marked = "def"; return cont(argdef);} - if (type == ":") return cont(typecx, rtype, valcx); - return pass(); - } - function rtype(type) { - if (type == "name") {cx.marked = "variable-3"; return cont(rtypemaybeparam); } - if (content == "mutable") {cx.marked = "keyword"; return cont(rtype);} - if (type == "atom") return cont(rtypemaybeparam); - if (type == "op" || type == "obj") return cont(rtype); - if (type == "fn") return cont(fntype); - if (type == "{") return cont(pushlex("{"), record_of(rtype), poplex); - return matchBrackets(type, rtype); - } - function rtypemaybeparam() { - if (content == "<") return cont(typarams); - return pass(); - } - function fntype(type) { - if (type == "(") return cont(pushlex("("), commasep(rtype, ")"), poplex, fntype); - if (type == "->") return cont(rtype); - return pass(); - } - function pattern(type) { - if (type == "name") {cx.marked = "def"; return cont(patternmaybeop);} - if (type == "atom") return cont(patternmaybeop); - if (type == "op") return cont(pattern); - if (type.match(/[\]\)\};,]/)) return pass(); - return matchBrackets(type, pattern); - } - function patternmaybeop(type) { - if (type == "op" && content == ".") return cont(); - if (content == "to") {cx.marked = "keyword"; return cont(pattern);} - else return pass(); - } - function altbody(type) { - if (type == "{") return cont(pushlex("}", "alt"), altblock1, poplex); - return pass(); - } - function altblock1(type) { - if (type == "}") return cont(); - if (type == "|") return cont(altblock1); - if (content == "when") {cx.marked = "keyword"; return cont(expression, altblock2);} - if (type.match(/[\]\);,]/)) return cont(altblock1); - return pass(pattern, altblock2); - } - function altblock2(type) { - if (type == "{") return cont(pushlex("}", "alt"), block, poplex, altblock1); - else return pass(altblock1); - } - - function macro(type) { - if (type.match(/[\[\(\{]/)) return matchBrackets(type, expression); - return pass(); - } - function matchBrackets(type, comb) { - if (type == "[") return cont(pushlex("]"), commasep(comb, "]"), poplex); - if (type == "(") return cont(pushlex(")"), commasep(comb, ")"), poplex); - if (type == "{") return cont(pushlex("}"), commasep(comb, "}"), poplex); - return cont(); - } - - function parse(state, stream, style) { - var cc = state.cc; - // Communicate our context to the combinators. - // (Less wasteful than consing up a hundred closures on every call.) - cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; - - while (true) { - var combinator = cc.length ? cc.pop() : block; - if (combinator(tcat)) { - while(cc.length && cc[cc.length - 1].lex) - cc.pop()(); - return cx.marked || style; - } - } - } - - return { - startState: function() { - return { - tokenize: tokenBase, - cc: [], - lexical: {indented: -indentUnit, column: 0, type: "top", align: false}, - keywords: valKeywords, - indented: 0 - }; - }, - - token: function(stream, state) { - if (stream.sol()) { - if (!state.lexical.hasOwnProperty("align")) - state.lexical.align = false; - state.indented = stream.indentation(); - } - if (stream.eatSpace()) return null; - tcat = content = null; - var style = state.tokenize(stream, state); - if (style == "comment") return style; - if (!state.lexical.hasOwnProperty("align")) - state.lexical.align = true; - if (tcat == "prefix") return style; - if (!content) content = stream.current(); - return parse(state, stream, style); - }, - - indent: function(state, textAfter) { - if (state.tokenize != tokenBase) return 0; - var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical, - type = lexical.type, closing = firstChar == type; - if (type == "stat") return lexical.indented + indentUnit; - if (lexical.align) return lexical.column + (closing ? 0 : 1); - return lexical.indented + (closing ? 0 : (lexical.info == "alt" ? altIndentUnit : indentUnit)); - }, - - electricChars: "{}", - blockCommentStart: "/*", - blockCommentEnd: "*/", - lineComment: "//", - fold: "brace" - }; -}); - -CodeMirror.defineMIME("text/x-rustsrc", "rust"); - -}); diff --git a/assets/js/plugins/codemirror/mode/sass/index.html b/assets/js/plugins/codemirror/mode/sass/index.html deleted file mode 100644 index 9f4a7902..00000000 --- a/assets/js/plugins/codemirror/mode/sass/index.html +++ /dev/null @@ -1,66 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Sass mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="../../addon/edit/matchbrackets.js"></script> -<script src="sass.js"></script> -<style>.CodeMirror {border: 1px solid #ddd; font-size:12px; height: 400px}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Sass</a> - </ul> -</div> - -<article> -<h2>Sass mode</h2> -<form><textarea id="code" name="code">// Variable Definitions - -$page-width: 800px -$sidebar-width: 200px -$primary-color: #eeeeee - -// Global Attributes - -body - font: - family: sans-serif - size: 30em - weight: bold - -// Scoped Styles - -#contents - width: $page-width - #sidebar - float: right - width: $sidebar-width - #main - width: $page-width - $sidebar-width - background: $primary-color - h2 - color: blue - -#footer - height: 200px -</textarea></form> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers : true, - matchBrackets : true - }); - </script> - - <p><strong>MIME types defined:</strong> <code>text/x-sass</code>.</p> - </article> diff --git a/assets/js/plugins/codemirror/mode/sass/sass.js b/assets/js/plugins/codemirror/mode/sass/sass.js deleted file mode 100644 index b792a02a..00000000 --- a/assets/js/plugins/codemirror/mode/sass/sass.js +++ /dev/null @@ -1,327 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("sass", function(config) { - function tokenRegexp(words) { - return new RegExp("^" + words.join("|")); - } - - var keywords = ["true", "false", "null", "auto"]; - var keywordsRegexp = new RegExp("^" + keywords.join("|")); - - var operators = ["\\(", "\\)", "=", ">", "<", "==", ">=", "<=", "\\+", "-", "\\!=", "/", "\\*", "%", "and", "or", "not"]; - var opRegexp = tokenRegexp(operators); - - var pseudoElementsRegexp = /^::?[\w\-]+/; - - function urlTokens(stream, state) { - var ch = stream.peek(); - - if (ch === ")") { - stream.next(); - state.tokenizer = tokenBase; - return "operator"; - } else if (ch === "(") { - stream.next(); - stream.eatSpace(); - - return "operator"; - } else if (ch === "'" || ch === '"') { - state.tokenizer = buildStringTokenizer(stream.next()); - return "string"; - } else { - state.tokenizer = buildStringTokenizer(")", false); - return "string"; - } - } - function comment(indentation, multiLine) { - return function(stream, state) { - if (stream.sol() && stream.indentation() <= indentation) { - state.tokenizer = tokenBase; - return tokenBase(stream, state); - } - - if (multiLine && stream.skipTo("*/")) { - stream.next(); - stream.next(); - state.tokenizer = tokenBase; - } else { - stream.next(); - } - - return "comment"; - }; - } - - function buildStringTokenizer(quote, greedy) { - if(greedy == null) { greedy = true; } - - function stringTokenizer(stream, state) { - var nextChar = stream.next(); - var peekChar = stream.peek(); - var previousChar = stream.string.charAt(stream.pos-2); - - var endingString = ((nextChar !== "\\" && peekChar === quote) || (nextChar === quote && previousChar !== "\\")); - - if (endingString) { - if (nextChar !== quote && greedy) { stream.next(); } - state.tokenizer = tokenBase; - return "string"; - } else if (nextChar === "#" && peekChar === "{") { - state.tokenizer = buildInterpolationTokenizer(stringTokenizer); - stream.next(); - return "operator"; - } else { - return "string"; - } - } - - return stringTokenizer; - } - - function buildInterpolationTokenizer(currentTokenizer) { - return function(stream, state) { - if (stream.peek() === "}") { - stream.next(); - state.tokenizer = currentTokenizer; - return "operator"; - } else { - return tokenBase(stream, state); - } - }; - } - - function indent(state) { - if (state.indentCount == 0) { - state.indentCount++; - var lastScopeOffset = state.scopes[0].offset; - var currentOffset = lastScopeOffset + config.indentUnit; - state.scopes.unshift({ offset:currentOffset }); - } - } - - function dedent(state) { - if (state.scopes.length == 1) return; - - state.scopes.shift(); - } - - function tokenBase(stream, state) { - var ch = stream.peek(); - - // Comment - if (stream.match("/*")) { - state.tokenizer = comment(stream.indentation(), true); - return state.tokenizer(stream, state); - } - if (stream.match("//")) { - state.tokenizer = comment(stream.indentation(), false); - return state.tokenizer(stream, state); - } - - // Interpolation - if (stream.match("#{")) { - state.tokenizer = buildInterpolationTokenizer(tokenBase); - return "operator"; - } - - if (ch === ".") { - stream.next(); - - // Match class selectors - if (stream.match(/^[\w-]+/)) { - indent(state); - return "atom"; - } else if (stream.peek() === "#") { - indent(state); - return "atom"; - } else { - return "operator"; - } - } - - if (ch === "#") { - stream.next(); - - // Hex numbers - if (stream.match(/[0-9a-fA-F]{6}|[0-9a-fA-F]{3}/)) - return "number"; - - // ID selectors - if (stream.match(/^[\w-]+/)) { - indent(state); - return "atom"; - } - - if (stream.peek() === "#") { - indent(state); - return "atom"; - } - } - - // Numbers - if (stream.match(/^-?[0-9\.]+/)) - return "number"; - - // Units - if (stream.match(/^(px|em|in)\b/)) - return "unit"; - - if (stream.match(keywordsRegexp)) - return "keyword"; - - if (stream.match(/^url/) && stream.peek() === "(") { - state.tokenizer = urlTokens; - return "atom"; - } - - // Variables - if (ch === "$") { - stream.next(); - stream.eatWhile(/[\w-]/); - - if (stream.peek() === ":") { - stream.next(); - return "variable-2"; - } else { - return "variable-3"; - } - } - - if (ch === "!") { - stream.next(); - return stream.match(/^[\w]+/) ? "keyword": "operator"; - } - - if (ch === "=") { - stream.next(); - - // Match shortcut mixin definition - if (stream.match(/^[\w-]+/)) { - indent(state); - return "meta"; - } else { - return "operator"; - } - } - - if (ch === "+") { - stream.next(); - - // Match shortcut mixin definition - if (stream.match(/^[\w-]+/)) - return "variable-3"; - else - return "operator"; - } - - // Indent Directives - if (stream.match(/^@(else if|if|media|else|for|each|while|mixin|function)/)) { - indent(state); - return "meta"; - } - - // Other Directives - if (ch === "@") { - stream.next(); - stream.eatWhile(/[\w-]/); - return "meta"; - } - - // Strings - if (ch === '"' || ch === "'") { - stream.next(); - state.tokenizer = buildStringTokenizer(ch); - return "string"; - } - - // Pseudo element selectors - if (ch == ":" && stream.match(pseudoElementsRegexp)) - return "keyword"; - - // atoms - if (stream.eatWhile(/[\w-&]/)) { - // matches a property definition - if (stream.peek() === ":" && !stream.match(pseudoElementsRegexp, false)) - return "property"; - else - return "atom"; - } - - if (stream.match(opRegexp)) - return "operator"; - - // If we haven't returned by now, we move 1 character - // and return an error - stream.next(); - return null; - } - - function tokenLexer(stream, state) { - if (stream.sol()) state.indentCount = 0; - var style = state.tokenizer(stream, state); - var current = stream.current(); - - if (current === "@return") - dedent(state); - - if (style === "atom") - indent(state); - - if (style !== null) { - var startOfToken = stream.pos - current.length; - var withCurrentIndent = startOfToken + (config.indentUnit * state.indentCount); - - var newScopes = []; - - for (var i = 0; i < state.scopes.length; i++) { - var scope = state.scopes[i]; - - if (scope.offset <= withCurrentIndent) - newScopes.push(scope); - } - - state.scopes = newScopes; - } - - - return style; - } - - return { - startState: function() { - return { - tokenizer: tokenBase, - scopes: [{offset: 0, type: "sass"}], - indentCount: 0, - definedVars: [], - definedMixins: [] - }; - }, - token: function(stream, state) { - var style = tokenLexer(stream, state); - - state.lastToken = { style: style, content: stream.current() }; - - return style; - }, - - indent: function(state) { - return state.scopes[0].offset; - } - }; -}); - -CodeMirror.defineMIME("text/x-sass", "sass"); - -}); diff --git a/assets/js/plugins/codemirror/mode/scheme/index.html b/assets/js/plugins/codemirror/mode/scheme/index.html deleted file mode 100644 index 04d5c6a2..00000000 --- a/assets/js/plugins/codemirror/mode/scheme/index.html +++ /dev/null @@ -1,77 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Scheme mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="scheme.js"></script> -<style>.CodeMirror {background: #f8f8f8;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Scheme</a> - </ul> -</div> - -<article> -<h2>Scheme mode</h2> -<form><textarea id="code" name="code"> -; See if the input starts with a given symbol. -(define (match-symbol input pattern) - (cond ((null? (remain input)) #f) - ((eqv? (car (remain input)) pattern) (r-cdr input)) - (else #f))) - -; Allow the input to start with one of a list of patterns. -(define (match-or input pattern) - (cond ((null? pattern) #f) - ((match-pattern input (car pattern))) - (else (match-or input (cdr pattern))))) - -; Allow a sequence of patterns. -(define (match-seq input pattern) - (if (null? pattern) - input - (let ((match (match-pattern input (car pattern)))) - (if match (match-seq match (cdr pattern)) #f)))) - -; Match with the pattern but no problem if it does not match. -(define (match-opt input pattern) - (let ((match (match-pattern input (car pattern)))) - (if match match input))) - -; Match anything (other than '()), until pattern is found. The rather -; clumsy form of requiring an ending pattern is needed to decide where -; the end of the match is. If none is given, this will match the rest -; of the sentence. -(define (match-any input pattern) - (cond ((null? (remain input)) #f) - ((null? pattern) (f-cons (remain input) (clear-remain input))) - (else - (let ((accum-any (collector))) - (define (match-pattern-any input pattern) - (cond ((null? (remain input)) #f) - (else (accum-any (car (remain input))) - (cond ((match-pattern (r-cdr input) pattern)) - (else (match-pattern-any (r-cdr input) pattern)))))) - (let ((retval (match-pattern-any input (car pattern)))) - (if retval - (f-cons (accum-any) retval) - #f)))))) -</textarea></form> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), {}); - </script> - - <p><strong>MIME types defined:</strong> <code>text/x-scheme</code>.</p> - - </article> diff --git a/assets/js/plugins/codemirror/mode/scheme/scheme.js b/assets/js/plugins/codemirror/mode/scheme/scheme.js deleted file mode 100644 index 979edc09..00000000 --- a/assets/js/plugins/codemirror/mode/scheme/scheme.js +++ /dev/null @@ -1,248 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/** - * Author: Koh Zi Han, based on implementation by Koh Zi Chun - */ - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("scheme", function () { - var BUILTIN = "builtin", COMMENT = "comment", STRING = "string", - ATOM = "atom", NUMBER = "number", BRACKET = "bracket"; - var INDENT_WORD_SKIP = 2; - - function makeKeywords(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - var keywords = makeKeywords("λ case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci<? char-ci=? char-ci>=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char<? char=? char>=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt #f floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci<? string-ci=? string-ci>=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string<? string=? string>=? string>? string? substring symbol->string symbol? #t tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?"); - var indentKeys = makeKeywords("define let letrec let* lambda"); - - function stateStack(indent, type, prev) { // represents a state stack object - this.indent = indent; - this.type = type; - this.prev = prev; - } - - function pushStack(state, indent, type) { - state.indentStack = new stateStack(indent, type, state.indentStack); - } - - function popStack(state) { - state.indentStack = state.indentStack.prev; - } - - var binaryMatcher = new RegExp(/^(?:[-+]i|[-+][01]+#*(?:\/[01]+#*)?i|[-+]?[01]+#*(?:\/[01]+#*)?@[-+]?[01]+#*(?:\/[01]+#*)?|[-+]?[01]+#*(?:\/[01]+#*)?[-+](?:[01]+#*(?:\/[01]+#*)?)?i|[-+]?[01]+#*(?:\/[01]+#*)?)(?=[()\s;"]|$)/i); - var octalMatcher = new RegExp(/^(?:[-+]i|[-+][0-7]+#*(?:\/[0-7]+#*)?i|[-+]?[0-7]+#*(?:\/[0-7]+#*)?@[-+]?[0-7]+#*(?:\/[0-7]+#*)?|[-+]?[0-7]+#*(?:\/[0-7]+#*)?[-+](?:[0-7]+#*(?:\/[0-7]+#*)?)?i|[-+]?[0-7]+#*(?:\/[0-7]+#*)?)(?=[()\s;"]|$)/i); - var hexMatcher = new RegExp(/^(?:[-+]i|[-+][\da-f]+#*(?:\/[\da-f]+#*)?i|[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?@[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?|[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?[-+](?:[\da-f]+#*(?:\/[\da-f]+#*)?)?i|[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?)(?=[()\s;"]|$)/i); - var decimalMatcher = new RegExp(/^(?:[-+]i|[-+](?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)i|[-+]?(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)@[-+]?(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)|[-+]?(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)[-+](?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)?i|(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*))(?=[()\s;"]|$)/i); - - function isBinaryNumber (stream) { - return stream.match(binaryMatcher); - } - - function isOctalNumber (stream) { - return stream.match(octalMatcher); - } - - function isDecimalNumber (stream, backup) { - if (backup === true) { - stream.backUp(1); - } - return stream.match(decimalMatcher); - } - - function isHexNumber (stream) { - return stream.match(hexMatcher); - } - - return { - startState: function () { - return { - indentStack: null, - indentation: 0, - mode: false, - sExprComment: false - }; - }, - - token: function (stream, state) { - if (state.indentStack == null && stream.sol()) { - // update indentation, but only if indentStack is empty - state.indentation = stream.indentation(); - } - - // skip spaces - if (stream.eatSpace()) { - return null; - } - var returnType = null; - - switch(state.mode){ - case "string": // multi-line string parsing mode - var next, escaped = false; - while ((next = stream.next()) != null) { - if (next == "\"" && !escaped) { - - state.mode = false; - break; - } - escaped = !escaped && next == "\\"; - } - returnType = STRING; // continue on in scheme-string mode - break; - case "comment": // comment parsing mode - var next, maybeEnd = false; - while ((next = stream.next()) != null) { - if (next == "#" && maybeEnd) { - - state.mode = false; - break; - } - maybeEnd = (next == "|"); - } - returnType = COMMENT; - break; - case "s-expr-comment": // s-expr commenting mode - state.mode = false; - if(stream.peek() == "(" || stream.peek() == "["){ - // actually start scheme s-expr commenting mode - state.sExprComment = 0; - }else{ - // if not we just comment the entire of the next token - stream.eatWhile(/[^/s]/); // eat non spaces - returnType = COMMENT; - break; - } - default: // default parsing mode - var ch = stream.next(); - - if (ch == "\"") { - state.mode = "string"; - returnType = STRING; - - } else if (ch == "'") { - returnType = ATOM; - } else if (ch == '#') { - if (stream.eat("|")) { // Multi-line comment - state.mode = "comment"; // toggle to comment mode - returnType = COMMENT; - } else if (stream.eat(/[tf]/i)) { // #t/#f (atom) - returnType = ATOM; - } else if (stream.eat(';')) { // S-Expr comment - state.mode = "s-expr-comment"; - returnType = COMMENT; - } else { - var numTest = null, hasExactness = false, hasRadix = true; - if (stream.eat(/[ei]/i)) { - hasExactness = true; - } else { - stream.backUp(1); // must be radix specifier - } - if (stream.match(/^#b/i)) { - numTest = isBinaryNumber; - } else if (stream.match(/^#o/i)) { - numTest = isOctalNumber; - } else if (stream.match(/^#x/i)) { - numTest = isHexNumber; - } else if (stream.match(/^#d/i)) { - numTest = isDecimalNumber; - } else if (stream.match(/^[-+0-9.]/, false)) { - hasRadix = false; - numTest = isDecimalNumber; - // re-consume the intial # if all matches failed - } else if (!hasExactness) { - stream.eat('#'); - } - if (numTest != null) { - if (hasRadix && !hasExactness) { - // consume optional exactness after radix - stream.match(/^#[ei]/i); - } - if (numTest(stream)) - returnType = NUMBER; - } - } - } else if (/^[-+0-9.]/.test(ch) && isDecimalNumber(stream, true)) { // match non-prefixed number, must be decimal - returnType = NUMBER; - } else if (ch == ";") { // comment - stream.skipToEnd(); // rest of the line is a comment - returnType = COMMENT; - } else if (ch == "(" || ch == "[") { - var keyWord = ''; var indentTemp = stream.column(), letter; - /** - Either - (indent-word .. - (non-indent-word .. - (;something else, bracket, etc. - */ - - while ((letter = stream.eat(/[^\s\(\[\;\)\]]/)) != null) { - keyWord += letter; - } - - if (keyWord.length > 0 && indentKeys.propertyIsEnumerable(keyWord)) { // indent-word - - pushStack(state, indentTemp + INDENT_WORD_SKIP, ch); - } else { // non-indent word - // we continue eating the spaces - stream.eatSpace(); - if (stream.eol() || stream.peek() == ";") { - // nothing significant after - // we restart indentation 1 space after - pushStack(state, indentTemp + 1, ch); - } else { - pushStack(state, indentTemp + stream.current().length, ch); // else we match - } - } - stream.backUp(stream.current().length - 1); // undo all the eating - - if(typeof state.sExprComment == "number") state.sExprComment++; - - returnType = BRACKET; - } else if (ch == ")" || ch == "]") { - returnType = BRACKET; - if (state.indentStack != null && state.indentStack.type == (ch == ")" ? "(" : "[")) { - popStack(state); - - if(typeof state.sExprComment == "number"){ - if(--state.sExprComment == 0){ - returnType = COMMENT; // final closing bracket - state.sExprComment = false; // turn off s-expr commenting mode - } - } - } - } else { - stream.eatWhile(/[\w\$_\-!$%&*+\.\/:<=>?@\^~]/); - - if (keywords && keywords.propertyIsEnumerable(stream.current())) { - returnType = BUILTIN; - } else returnType = "variable"; - } - } - return (typeof state.sExprComment == "number") ? COMMENT : returnType; - }, - - indent: function (state) { - if (state.indentStack == null) return state.indentation; - return state.indentStack.indent; - }, - - lineComment: ";;" - }; -}); - -CodeMirror.defineMIME("text/x-scheme", "scheme"); - -}); diff --git a/assets/js/plugins/codemirror/mode/shell/index.html b/assets/js/plugins/codemirror/mode/shell/index.html deleted file mode 100644 index 0b56300b..00000000 --- a/assets/js/plugins/codemirror/mode/shell/index.html +++ /dev/null @@ -1,66 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Shell mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel=stylesheet href=../../lib/codemirror.css> -<script src=../../lib/codemirror.js></script> -<script src="../../addon/edit/matchbrackets.js"></script> -<script src=shell.js></script> -<style type=text/css> - .CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;} -</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Shell</a> - </ul> -</div> - -<article> -<h2>Shell mode</h2> - - -<textarea id=code> -#!/bin/bash - -# clone the repository -git clone http://github.com/garden/tree - -# generate HTTPS credentials -cd tree -openssl genrsa -aes256 -out https.key 1024 -openssl req -new -nodes -key https.key -out https.csr -openssl x509 -req -days 365 -in https.csr -signkey https.key -out https.crt -cp https.key{,.orig} -openssl rsa -in https.key.orig -out https.key - -# start the server in HTTPS mode -cd web -sudo node ../server.js 443 'yes' &gt;&gt; ../node.log &amp; - -# here is how to stop the server -for pid in `ps aux | grep 'node ../server.js' | awk '{print $2}'` ; do - sudo kill -9 $pid 2&gt; /dev/null -done - -exit 0</textarea> - -<script> - var editor = CodeMirror.fromTextArea(document.getElementById('code'), { - mode: 'shell', - lineNumbers: true, - matchBrackets: true - }); -</script> - -<p><strong>MIME types defined:</strong> <code>text/x-sh</code>.</p> -</article> diff --git a/assets/js/plugins/codemirror/mode/shell/shell.js b/assets/js/plugins/codemirror/mode/shell/shell.js deleted file mode 100644 index 8e31f6f3..00000000 --- a/assets/js/plugins/codemirror/mode/shell/shell.js +++ /dev/null @@ -1,138 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode('shell', function() { - - var words = {}; - function define(style, string) { - var split = string.split(' '); - for(var i = 0; i < split.length; i++) { - words[split[i]] = style; - } - }; - - // Atoms - define('atom', 'true false'); - - // Keywords - define('keyword', 'if then do else elif while until for in esac fi fin ' + - 'fil done exit set unset export function'); - - // Commands - define('builtin', 'ab awk bash beep cat cc cd chown chmod chroot clear cp ' + - 'curl cut diff echo find gawk gcc get git grep kill killall ln ls make ' + - 'mkdir openssl mv nc node npm ping ps restart rm rmdir sed service sh ' + - 'shopt shred source sort sleep ssh start stop su sudo tee telnet top ' + - 'touch vi vim wall wc wget who write yes zsh'); - - function tokenBase(stream, state) { - if (stream.eatSpace()) return null; - - var sol = stream.sol(); - var ch = stream.next(); - - if (ch === '\\') { - stream.next(); - return null; - } - if (ch === '\'' || ch === '"' || ch === '`') { - state.tokens.unshift(tokenString(ch)); - return tokenize(stream, state); - } - if (ch === '#') { - if (sol && stream.eat('!')) { - stream.skipToEnd(); - return 'meta'; // 'comment'? - } - stream.skipToEnd(); - return 'comment'; - } - if (ch === '$') { - state.tokens.unshift(tokenDollar); - return tokenize(stream, state); - } - if (ch === '+' || ch === '=') { - return 'operator'; - } - if (ch === '-') { - stream.eat('-'); - stream.eatWhile(/\w/); - return 'attribute'; - } - if (/\d/.test(ch)) { - stream.eatWhile(/\d/); - if(stream.eol() || !/\w/.test(stream.peek())) { - return 'number'; - } - } - stream.eatWhile(/[\w-]/); - var cur = stream.current(); - if (stream.peek() === '=' && /\w+/.test(cur)) return 'def'; - return words.hasOwnProperty(cur) ? words[cur] : null; - } - - function tokenString(quote) { - return function(stream, state) { - var next, end = false, escaped = false; - while ((next = stream.next()) != null) { - if (next === quote && !escaped) { - end = true; - break; - } - if (next === '$' && !escaped && quote !== '\'') { - escaped = true; - stream.backUp(1); - state.tokens.unshift(tokenDollar); - break; - } - escaped = !escaped && next === '\\'; - } - if (end || !escaped) { - state.tokens.shift(); - } - return (quote === '`' || quote === ')' ? 'quote' : 'string'); - }; - }; - - var tokenDollar = function(stream, state) { - if (state.tokens.length > 1) stream.eat('$'); - var ch = stream.next(), hungry = /\w/; - if (ch === '{') hungry = /[^}]/; - if (ch === '(') { - state.tokens[0] = tokenString(')'); - return tokenize(stream, state); - } - if (!/\d/.test(ch)) { - stream.eatWhile(hungry); - stream.eat('}'); - } - state.tokens.shift(); - return 'def'; - }; - - function tokenize(stream, state) { - return (state.tokens[0] || tokenBase) (stream, state); - }; - - return { - startState: function() {return {tokens:[]};}, - token: function(stream, state) { - return tokenize(stream, state); - }, - lineComment: '#' - }; -}); - -CodeMirror.defineMIME('text/x-sh', 'shell'); - -}); diff --git a/assets/js/plugins/codemirror/mode/shell/test.js b/assets/js/plugins/codemirror/mode/shell/test.js deleted file mode 100644 index a413b5a4..00000000 --- a/assets/js/plugins/codemirror/mode/shell/test.js +++ /dev/null @@ -1,58 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - var mode = CodeMirror.getMode({}, "shell"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - - MT("var", - "text [def $var] text"); - MT("varBraces", - "text[def ${var}]text"); - MT("varVar", - "text [def $a$b] text"); - MT("varBracesVarBraces", - "text[def ${a}${b}]text"); - - MT("singleQuotedVar", - "[string 'text $var text']"); - MT("singleQuotedVarBraces", - "[string 'text ${var} text']"); - - MT("doubleQuotedVar", - '[string "text ][def $var][string text"]'); - MT("doubleQuotedVarBraces", - '[string "text][def ${var}][string text"]'); - MT("doubleQuotedVarPunct", - '[string "text ][def $@][string text"]'); - MT("doubleQuotedVarVar", - '[string "][def $a$b][string "]'); - MT("doubleQuotedVarBracesVarBraces", - '[string "][def ${a}${b}][string "]'); - - MT("notAString", - "text\\'text"); - MT("escapes", - "outside\\'\\\"\\`\\\\[string \"inside\\`\\'\\\"\\\\`\\$notAVar\"]outside\\$\\(notASubShell\\)"); - - MT("subshell", - "[builtin echo] [quote $(whoami)] s log, stardate [quote `date`]."); - MT("doubleQuotedSubshell", - "[builtin echo] [string \"][quote $(whoami)][string 's log, stardate `date`.\"]"); - - MT("hashbang", - "[meta #!/bin/bash]"); - MT("comment", - "text [comment # Blurb]"); - - MT("numbers", - "[number 0] [number 1] [number 2]"); - MT("keywords", - "[keyword while] [atom true]; [keyword do]", - " [builtin sleep] [number 3]", - "[keyword done]"); - MT("options", - "[builtin ls] [attribute -l] [attribute --human-readable]"); - MT("operator", - "[def var][operator =]value"); -})(); diff --git a/assets/js/plugins/codemirror/mode/sieve/index.html b/assets/js/plugins/codemirror/mode/sieve/index.html deleted file mode 100644 index 6f029b62..00000000 --- a/assets/js/plugins/codemirror/mode/sieve/index.html +++ /dev/null @@ -1,93 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Sieve (RFC5228) mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="sieve.js"></script> -<style>.CodeMirror {background: #f8f8f8;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Sieve (RFC5228)</a> - </ul> -</div> - -<article> -<h2>Sieve (RFC5228) mode</h2> -<form><textarea id="code" name="code"> -# -# Example Sieve Filter -# Declare any optional features or extension used by the script -# - -require ["fileinto", "reject"]; - -# -# Reject any large messages (note that the four leading dots get -# "stuffed" to three) -# -if size :over 1M -{ - reject text: -Please do not send me large attachments. -Put your file on a server and send me the URL. -Thank you. -.... Fred -. -; - stop; -} - -# -# Handle messages from known mailing lists -# Move messages from IETF filter discussion list to filter folder -# -if header :is "Sender" "owner-ietf-mta-filters@imc.org" -{ - fileinto "filter"; # move to "filter" folder -} -# -# Keep all messages to or from people in my company -# -elsif address :domain :is ["From", "To"] "example.com" -{ - keep; # keep in "In" folder -} - -# -# Try and catch unsolicited email. If a message is not to me, -# or it contains a subject known to be spam, file it away. -# -elsif anyof (not address :all :contains - ["To", "Cc", "Bcc"] "me@example.com", - header :matches "subject" - ["*make*money*fast*", "*university*dipl*mas*"]) -{ - # If message header does not contain my address, - # it's from a list. - fileinto "spam"; # move to "spam" folder -} -else -{ - # Move all other (non-company) mail to "personal" - # folder. - fileinto "personal"; -} -</textarea></form> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), {}); - </script> - - <p><strong>MIME types defined:</strong> <code>application/sieve</code>.</p> - - </article> diff --git a/assets/js/plugins/codemirror/mode/sieve/sieve.js b/assets/js/plugins/codemirror/mode/sieve/sieve.js deleted file mode 100644 index f67db2f5..00000000 --- a/assets/js/plugins/codemirror/mode/sieve/sieve.js +++ /dev/null @@ -1,193 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("sieve", function(config) { - function words(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - var keywords = words("if elsif else stop require"); - var atoms = words("true false not"); - var indentUnit = config.indentUnit; - - function tokenBase(stream, state) { - - var ch = stream.next(); - if (ch == "/" && stream.eat("*")) { - state.tokenize = tokenCComment; - return tokenCComment(stream, state); - } - - if (ch === '#') { - stream.skipToEnd(); - return "comment"; - } - - if (ch == "\"") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } - - if (ch == "(") { - state._indent.push("("); - // add virtual angel wings so that editor behaves... - // ...more sane incase of broken brackets - state._indent.push("{"); - return null; - } - - if (ch === "{") { - state._indent.push("{"); - return null; - } - - if (ch == ")") { - state._indent.pop(); - state._indent.pop(); - } - - if (ch === "}") { - state._indent.pop(); - return null; - } - - if (ch == ",") - return null; - - if (ch == ";") - return null; - - - if (/[{}\(\),;]/.test(ch)) - return null; - - // 1*DIGIT "K" / "M" / "G" - if (/\d/.test(ch)) { - stream.eatWhile(/[\d]/); - stream.eat(/[KkMmGg]/); - return "number"; - } - - // ":" (ALPHA / "_") *(ALPHA / DIGIT / "_") - if (ch == ":") { - stream.eatWhile(/[a-zA-Z_]/); - stream.eatWhile(/[a-zA-Z0-9_]/); - - return "operator"; - } - - stream.eatWhile(/\w/); - var cur = stream.current(); - - // "text:" *(SP / HTAB) (hash-comment / CRLF) - // *(multiline-literal / multiline-dotstart) - // "." CRLF - if ((cur == "text") && stream.eat(":")) - { - state.tokenize = tokenMultiLineString; - return "string"; - } - - if (keywords.propertyIsEnumerable(cur)) - return "keyword"; - - if (atoms.propertyIsEnumerable(cur)) - return "atom"; - - return null; - } - - function tokenMultiLineString(stream, state) - { - state._multiLineString = true; - // the first line is special it may contain a comment - if (!stream.sol()) { - stream.eatSpace(); - - if (stream.peek() == "#") { - stream.skipToEnd(); - return "comment"; - } - - stream.skipToEnd(); - return "string"; - } - - if ((stream.next() == ".") && (stream.eol())) - { - state._multiLineString = false; - state.tokenize = tokenBase; - } - - return "string"; - } - - function tokenCComment(stream, state) { - var maybeEnd = false, ch; - while ((ch = stream.next()) != null) { - if (maybeEnd && ch == "/") { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == quote && !escaped) - break; - escaped = !escaped && ch == "\\"; - } - if (!escaped) state.tokenize = tokenBase; - return "string"; - }; - } - - return { - startState: function(base) { - return {tokenize: tokenBase, - baseIndent: base || 0, - _indent: []}; - }, - - token: function(stream, state) { - if (stream.eatSpace()) - return null; - - return (state.tokenize || tokenBase)(stream, state);; - }, - - indent: function(state, _textAfter) { - var length = state._indent.length; - if (_textAfter && (_textAfter[0] == "}")) - length--; - - if (length <0) - length = 0; - - return length * indentUnit; - }, - - electricChars: "}" - }; -}); - -CodeMirror.defineMIME("application/sieve", "sieve"); - -}); diff --git a/assets/js/plugins/codemirror/mode/slim/index.html b/assets/js/plugins/codemirror/mode/slim/index.html deleted file mode 100644 index 7fa4e50d..00000000 --- a/assets/js/plugins/codemirror/mode/slim/index.html +++ /dev/null @@ -1,96 +0,0 @@ -<!doctype html> - -<title>CodeMirror: SLIM mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<link rel="stylesheet" href="../../theme/ambiance.css"> -<script src="https://code.jquery.com/jquery-1.11.1.min.js"></script> -<script src="https://code.jquery.com/ui/1.11.0/jquery-ui.min.js"></script> -<link rel="stylesheet" href="https://code.jquery.com/ui/1.11.0/themes/smoothness/jquery-ui.css"> -<script src="../../lib/codemirror.js"></script> -<script src="../xml/xml.js"></script> -<script src="../htmlembedded/htmlembedded.js"></script> -<script src="../htmlmixed/htmlmixed.js"></script> -<script src="../coffeescript/coffeescript.js"></script> -<script src="../javascript/javascript.js"></script> -<script src="../ruby/ruby.js"></script> -<script src="../markdown/markdown.js"></script> -<script src="slim.js"></script> -<style>.CodeMirror {background: #f8f8f8;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">SLIM</a> - </ul> -</div> - -<article> - <h2>SLIM mode</h2> - <form><textarea id="code" name="code"> -body - table - - for user in users - td id="user_#{user.id}" class=user.role - a href=user_action(user, :edit) Edit #{user.name} - a href=(path_to_user user) = user.name -body - h1(id="logo") = page_logo - h2[id="tagline" class="small tagline"] = page_tagline - -h2[id="tagline" - class="small tagline"] = page_tagline - -h1 id = "logo" = page_logo -h2 [ id = "tagline" ] = page_tagline - -/ comment - second line -/! html comment - second line -<!-- html comment --> -<a href="#{'hello' if set}">link</a> -a.slim href="work" disabled=false running==:atom Text <b>bold</b> -.clazz data-id="test" == 'hello' unless quark - | Text mode #{12} - Second line -= x ||= :ruby_atom -#menu.left - - @env.each do |x| - li: a = x -*@dyntag attr="val" -.first *{:class => [:second, :third]} Text -.second class=["text","more"] -.third class=:text,:symbol - - </textarea></form> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers: true, - theme: "ambiance", - mode: "application/x-slim" - }); - $('.CodeMirror').resizable({ - resize: function() { - editor.setSize($(this).width(), $(this).height()); - //editor.refresh(); - } - }); - </script> - - <p><strong>MIME types defined:</strong> <code>application/x-slim</code>.</p> - - <p> - <strong>Parsing/Highlighting Tests:</strong> - <a href="../../test/index.html#slim_*">normal</a>, - <a href="../../test/index.html#verbose,slim_*">verbose</a>. - </p> -</article> diff --git a/assets/js/plugins/codemirror/mode/slim/slim.js b/assets/js/plugins/codemirror/mode/slim/slim.js deleted file mode 100644 index 164464d0..00000000 --- a/assets/js/plugins/codemirror/mode/slim/slim.js +++ /dev/null @@ -1,575 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// Slim Highlighting for CodeMirror copyright (c) HicknHack Software Gmbh - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), require("../ruby/ruby")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../htmlmixed/htmlmixed", "../ruby/ruby"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - - CodeMirror.defineMode("slim", function(config) { - var htmlMode = CodeMirror.getMode(config, {name: "htmlmixed"}); - var rubyMode = CodeMirror.getMode(config, "ruby"); - var modes = { html: htmlMode, ruby: rubyMode }; - var embedded = { - ruby: "ruby", - javascript: "javascript", - css: "text/css", - sass: "text/x-sass", - scss: "text/x-scss", - less: "text/x-less", - styl: "text/x-styl", // no highlighting so far - coffee: "coffeescript", - asciidoc: "text/x-asciidoc", - markdown: "text/x-markdown", - textile: "text/x-textile", // no highlighting so far - creole: "text/x-creole", // no highlighting so far - wiki: "text/x-wiki", // no highlighting so far - mediawiki: "text/x-mediawiki", // no highlighting so far - rdoc: "text/x-rdoc", // no highlighting so far - builder: "text/x-builder", // no highlighting so far - nokogiri: "text/x-nokogiri", // no highlighting so far - erb: "application/x-erb" - }; - var embeddedRegexp = function(map){ - var arr = []; - for(var key in map) arr.push(key); - return new RegExp("^("+arr.join('|')+"):"); - }(embedded); - - var styleMap = { - "commentLine": "comment", - "slimSwitch": "operator special", - "slimTag": "tag", - "slimId": "attribute def", - "slimClass": "attribute qualifier", - "slimAttribute": "attribute", - "slimSubmode": "keyword special", - "closeAttributeTag": null, - "slimDoctype": null, - "lineContinuation": null - }; - var closing = { - "{": "}", - "[": "]", - "(": ")" - }; - - var nameStartChar = "_a-zA-Z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD"; - var nameChar = nameStartChar + "\\-0-9\xB7\u0300-\u036F\u203F-\u2040"; - var nameRegexp = new RegExp("^[:"+nameStartChar+"](?::["+nameChar+"]|["+nameChar+"]*)"); - var attributeNameRegexp = new RegExp("^[:"+nameStartChar+"][:\\."+nameChar+"]*(?=\\s*=)"); - var wrappedAttributeNameRegexp = new RegExp("^[:"+nameStartChar+"][:\\."+nameChar+"]*"); - var classNameRegexp = /^\.-?[_a-zA-Z]+[\w\-]*/; - var classIdRegexp = /^#[_a-zA-Z]+[\w\-]*/; - - function backup(pos, tokenize, style) { - var restore = function(stream, state) { - state.tokenize = tokenize; - if (stream.pos < pos) { - stream.pos = pos; - return style; - } - return state.tokenize(stream, state); - }; - return function(stream, state) { - state.tokenize = restore; - return tokenize(stream, state); - }; - } - - function maybeBackup(stream, state, pat, offset, style) { - var cur = stream.current(); - var idx = cur.search(pat); - if (idx > -1) { - state.tokenize = backup(stream.pos, state.tokenize, style); - stream.backUp(cur.length - idx - offset); - } - return style; - } - - function continueLine(state, column) { - state.stack = { - parent: state.stack, - style: "continuation", - indented: column, - tokenize: state.line - }; - state.line = state.tokenize; - } - function finishContinue(state) { - if (state.line == state.tokenize) { - state.line = state.stack.tokenize; - state.stack = state.stack.parent; - } - } - - function lineContinuable(column, tokenize) { - return function(stream, state) { - finishContinue(state); - if (stream.match(/^\\$/)) { - continueLine(state, column); - return "lineContinuation"; - } - var style = tokenize(stream, state); - if (stream.eol() && stream.current().match(/(?:^|[^\\])(?:\\\\)*\\$/)) { - stream.backUp(1); - } - return style; - }; - } - function commaContinuable(column, tokenize) { - return function(stream, state) { - finishContinue(state); - var style = tokenize(stream, state); - if (stream.eol() && stream.current().match(/,$/)) { - continueLine(state, column); - } - return style; - }; - } - - function rubyInQuote(endQuote, tokenize) { - // TODO: add multi line support - return function(stream, state) { - var ch = stream.peek(); - if (ch == endQuote && state.rubyState.tokenize.length == 1) { - // step out of ruby context as it seems to complete processing all the braces - stream.next(); - state.tokenize = tokenize; - return "closeAttributeTag"; - } else { - return ruby(stream, state); - } - }; - } - function startRubySplat(tokenize) { - var rubyState; - var runSplat = function(stream, state) { - if (state.rubyState.tokenize.length == 1 && !state.rubyState.context.prev) { - stream.backUp(1); - if (stream.eatSpace()) { - state.rubyState = rubyState; - state.tokenize = tokenize; - return tokenize(stream, state); - } - stream.next(); - } - return ruby(stream, state); - }; - return function(stream, state) { - rubyState = state.rubyState; - state.rubyState = rubyMode.startState(); - state.tokenize = runSplat; - return ruby(stream, state); - }; - } - - function ruby(stream, state) { - return rubyMode.token(stream, state.rubyState); - } - - function htmlLine(stream, state) { - if (stream.match(/^\\$/)) { - return "lineContinuation"; - } - return html(stream, state); - } - function html(stream, state) { - if (stream.match(/^#\{/)) { - state.tokenize = rubyInQuote("}", state.tokenize); - return null; - } - return maybeBackup(stream, state, /[^\\]#\{/, 1, htmlMode.token(stream, state.htmlState)); - } - - function startHtmlLine(lastTokenize) { - return function(stream, state) { - var style = htmlLine(stream, state); - if (stream.eol()) state.tokenize = lastTokenize; - return style; - }; - } - - function startHtmlMode(stream, state, offset) { - state.stack = { - parent: state.stack, - style: "html", - indented: stream.column() + offset, // pipe + space - tokenize: state.line - }; - state.line = state.tokenize = html; - return null; - } - - function comment(stream, state) { - stream.skipToEnd(); - return state.stack.style; - } - - function commentMode(stream, state) { - state.stack = { - parent: state.stack, - style: "comment", - indented: state.indented + 1, - tokenize: state.line - }; - state.line = comment; - return comment(stream, state); - } - - function attributeWrapper(stream, state) { - if (stream.eat(state.stack.endQuote)) { - state.line = state.stack.line; - state.tokenize = state.stack.tokenize; - state.stack = state.stack.parent; - return null; - } - if (stream.match(wrappedAttributeNameRegexp)) { - state.tokenize = attributeWrapperAssign; - return "slimAttribute"; - } - stream.next(); - return null; - } - function attributeWrapperAssign(stream, state) { - if (stream.match(/^==?/)) { - state.tokenize = attributeWrapperValue; - return null; - } - return attributeWrapper(stream, state); - } - function attributeWrapperValue(stream, state) { - var ch = stream.peek(); - if (ch == '"' || ch == "\'") { - state.tokenize = readQuoted(ch, "string", true, false, attributeWrapper); - stream.next(); - return state.tokenize(stream, state); - } - if (ch == '[') { - return startRubySplat(attributeWrapper)(stream, state); - } - if (stream.match(/^(true|false|nil)\b/)) { - state.tokenize = attributeWrapper; - return "keyword"; - } - return startRubySplat(attributeWrapper)(stream, state); - } - - function startAttributeWrapperMode(state, endQuote, tokenize) { - state.stack = { - parent: state.stack, - style: "wrapper", - indented: state.indented + 1, - tokenize: tokenize, - line: state.line, - endQuote: endQuote - }; - state.line = state.tokenize = attributeWrapper; - return null; - } - - function sub(stream, state) { - if (stream.match(/^#\{/)) { - state.tokenize = rubyInQuote("}", state.tokenize); - return null; - } - var subStream = new CodeMirror.StringStream(stream.string.slice(state.stack.indented), stream.tabSize); - subStream.pos = stream.pos - state.stack.indented; - subStream.start = stream.start - state.stack.indented; - subStream.lastColumnPos = stream.lastColumnPos - state.stack.indented; - subStream.lastColumnValue = stream.lastColumnValue - state.stack.indented; - var style = state.subMode.token(subStream, state.subState); - stream.pos = subStream.pos + state.stack.indented; - return style; - } - function firstSub(stream, state) { - state.stack.indented = stream.column(); - state.line = state.tokenize = sub; - return state.tokenize(stream, state); - } - - function createMode(mode) { - var query = embedded[mode]; - var spec = CodeMirror.mimeModes[query]; - if (spec) { - return CodeMirror.getMode(config, spec); - } - var factory = CodeMirror.modes[query]; - if (factory) { - return factory(config, {name: query}); - } - return CodeMirror.getMode(config, "null"); - } - - function getMode(mode) { - if (!modes.hasOwnProperty(mode)) { - return modes[mode] = createMode(mode); - } - return modes[mode]; - } - - function startSubMode(mode, state) { - var subMode = getMode(mode); - var subState = subMode.startState && subMode.startState(); - - state.subMode = subMode; - state.subState = subState; - - state.stack = { - parent: state.stack, - style: "sub", - indented: state.indented + 1, - tokenize: state.line - }; - state.line = state.tokenize = firstSub; - return "slimSubmode"; - } - - function doctypeLine(stream, _state) { - stream.skipToEnd(); - return "slimDoctype"; - } - - function startLine(stream, state) { - var ch = stream.peek(); - if (ch == '<') { - return (state.tokenize = startHtmlLine(state.tokenize))(stream, state); - } - if (stream.match(/^[|']/)) { - return startHtmlMode(stream, state, 1); - } - if (stream.match(/^\/(!|\[\w+])?/)) { - return commentMode(stream, state); - } - if (stream.match(/^(-|==?[<>]?)/)) { - state.tokenize = lineContinuable(stream.column(), commaContinuable(stream.column(), ruby)); - return "slimSwitch"; - } - if (stream.match(/^doctype\b/)) { - state.tokenize = doctypeLine; - return "keyword"; - } - - var m = stream.match(embeddedRegexp); - if (m) { - return startSubMode(m[1], state); - } - - return slimTag(stream, state); - } - - function slim(stream, state) { - if (state.startOfLine) { - return startLine(stream, state); - } - return slimTag(stream, state); - } - - function slimTag(stream, state) { - if (stream.eat('*')) { - state.tokenize = startRubySplat(slimTagExtras); - return null; - } - if (stream.match(nameRegexp)) { - state.tokenize = slimTagExtras; - return "slimTag"; - } - return slimClass(stream, state); - } - function slimTagExtras(stream, state) { - if (stream.match(/^(<>?|><?)/)) { - state.tokenize = slimClass; - return null; - } - return slimClass(stream, state); - } - function slimClass(stream, state) { - if (stream.match(classIdRegexp)) { - state.tokenize = slimClass; - return "slimId"; - } - if (stream.match(classNameRegexp)) { - state.tokenize = slimClass; - return "slimClass"; - } - return slimAttribute(stream, state); - } - function slimAttribute(stream, state) { - if (stream.match(/^([\[\{\(])/)) { - return startAttributeWrapperMode(state, closing[RegExp.$1], slimAttribute); - } - if (stream.match(attributeNameRegexp)) { - state.tokenize = slimAttributeAssign; - return "slimAttribute"; - } - if (stream.peek() == '*') { - stream.next(); - state.tokenize = startRubySplat(slimContent); - return null; - } - return slimContent(stream, state); - } - function slimAttributeAssign(stream, state) { - if (stream.match(/^==?/)) { - state.tokenize = slimAttributeValue; - return null; - } - // should never happen, because of forward lookup - return slimAttribute(stream, state); - } - - function slimAttributeValue(stream, state) { - var ch = stream.peek(); - if (ch == '"' || ch == "\'") { - state.tokenize = readQuoted(ch, "string", true, false, slimAttribute); - stream.next(); - return state.tokenize(stream, state); - } - if (ch == '[') { - return startRubySplat(slimAttribute)(stream, state); - } - if (ch == ':') { - return startRubySplat(slimAttributeSymbols)(stream, state); - } - if (stream.match(/^(true|false|nil)\b/)) { - state.tokenize = slimAttribute; - return "keyword"; - } - return startRubySplat(slimAttribute)(stream, state); - } - function slimAttributeSymbols(stream, state) { - stream.backUp(1); - if (stream.match(/^[^\s],(?=:)/)) { - state.tokenize = startRubySplat(slimAttributeSymbols); - return null; - } - stream.next(); - return slimAttribute(stream, state); - } - function readQuoted(quote, style, embed, unescaped, nextTokenize) { - return function(stream, state) { - finishContinue(state); - var fresh = stream.current().length == 0; - if (stream.match(/^\\$/, fresh)) { - if (!fresh) return style; - continueLine(state, state.indented); - return "lineContinuation"; - } - if (stream.match(/^#\{/, fresh)) { - if (!fresh) return style; - state.tokenize = rubyInQuote("}", state.tokenize); - return null; - } - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == quote && (unescaped || !escaped)) { - state.tokenize = nextTokenize; - break; - } - if (embed && ch == "#" && !escaped) { - if (stream.eat("{")) { - stream.backUp(2); - break; - } - } - escaped = !escaped && ch == "\\"; - } - if (stream.eol() && escaped) { - stream.backUp(1); - } - return style; - }; - } - function slimContent(stream, state) { - if (stream.match(/^==?/)) { - state.tokenize = ruby; - return "slimSwitch"; - } - if (stream.match(/^\/$/)) { // tag close hint - state.tokenize = slim; - return null; - } - if (stream.match(/^:/)) { // inline tag - state.tokenize = slimTag; - return "slimSwitch"; - } - startHtmlMode(stream, state, 0); - return state.tokenize(stream, state); - } - - var mode = { - // default to html mode - startState: function() { - var htmlState = htmlMode.startState(); - var rubyState = rubyMode.startState(); - return { - htmlState: htmlState, - rubyState: rubyState, - stack: null, - last: null, - tokenize: slim, - line: slim, - indented: 0 - }; - }, - - copyState: function(state) { - return { - htmlState : CodeMirror.copyState(htmlMode, state.htmlState), - rubyState: CodeMirror.copyState(rubyMode, state.rubyState), - subMode: state.subMode, - subState: state.subMode && CodeMirror.copyState(state.subMode, state.subState), - stack: state.stack, - last: state.last, - tokenize: state.tokenize, - line: state.line - }; - }, - - token: function(stream, state) { - if (stream.sol()) { - state.indented = stream.indentation(); - state.startOfLine = true; - state.tokenize = state.line; - while (state.stack && state.stack.indented > state.indented && state.last != "slimSubmode") { - state.line = state.tokenize = state.stack.tokenize; - state.stack = state.stack.parent; - state.subMode = null; - state.subState = null; - } - } - if (stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - state.startOfLine = false; - if (style) state.last = style; - return styleMap.hasOwnProperty(style) ? styleMap[style] : style; - }, - - blankLine: function(state) { - if (state.subMode && state.subMode.blankLine) { - return state.subMode.blankLine(state.subState); - } - }, - - innerMode: function(state) { - if (state.subMode) return {state: state.subState, mode: state.subMode}; - return {state: state, mode: mode}; - } - - //indent: function(state) { - // return state.indented; - //} - }; - return mode; - }, "htmlmixed", "ruby"); - - CodeMirror.defineMIME("text/x-slim", "slim"); - CodeMirror.defineMIME("application/x-slim", "slim"); -}); diff --git a/assets/js/plugins/codemirror/mode/slim/test.js b/assets/js/plugins/codemirror/mode/slim/test.js deleted file mode 100644 index be4ddacb..00000000 --- a/assets/js/plugins/codemirror/mode/slim/test.js +++ /dev/null @@ -1,96 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// Slim Highlighting for CodeMirror copyright (c) HicknHack Software Gmbh - -(function() { - var mode = CodeMirror.getMode({tabSize: 4, indentUnit: 2}, "slim"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - - // Requires at least one media query - MT("elementName", - "[tag h1] Hey There"); - - MT("oneElementPerLine", - "[tag h1] Hey There .h2"); - - MT("idShortcut", - "[attribute&def #test] Hey There"); - - MT("tagWithIdShortcuts", - "[tag h1][attribute&def #test] Hey There"); - - MT("classShortcut", - "[attribute&qualifier .hello] Hey There"); - - MT("tagWithIdAndClassShortcuts", - "[tag h1][attribute&def #test][attribute&qualifier .hello] Hey There"); - - MT("docType", - "[keyword doctype] xml"); - - MT("comment", - "[comment / Hello WORLD]"); - - MT("notComment", - "[tag h1] This is not a / comment "); - - MT("attributes", - "[tag a]([attribute title]=[string \"test\"]) [attribute href]=[string \"link\"]}"); - - MT("multiLineAttributes", - "[tag a]([attribute title]=[string \"test\"]", - " ) [attribute href]=[string \"link\"]}"); - - MT("htmlCode", - "[tag&bracket <][tag h1][tag&bracket >]Title[tag&bracket </][tag h1][tag&bracket >]"); - - MT("rubyBlock", - "[operator&special =][variable-2 @item]"); - - MT("selectorRubyBlock", - "[tag a][attribute&qualifier .test][operator&special =] [variable-2 @item]"); - - MT("nestedRubyBlock", - "[tag a]", - " [operator&special =][variable puts] [string \"test\"]"); - - MT("multilinePlaintext", - "[tag p]", - " | Hello,", - " World"); - - MT("multilineRuby", - "[tag p]", - " [comment /# this is a comment]", - " [comment and this is a comment too]", - " | Date/Time", - " [operator&special -] [variable now] [operator =] [tag DateTime][operator .][property now]", - " [tag strong][operator&special =] [variable now]", - " [operator&special -] [keyword if] [variable now] [operator >] [tag DateTime][operator .][property parse]([string \"December 31, 2006\"])", - " [operator&special =][string \"Happy\"]", - " [operator&special =][string \"Belated\"]", - " [operator&special =][string \"Birthday\"]"); - - MT("multilineComment", - "[comment /]", - " [comment Multiline]", - " [comment Comment]"); - - MT("hamlAfterRubyTag", - "[attribute&qualifier .block]", - " [tag strong][operator&special =] [variable now]", - " [attribute&qualifier .test]", - " [operator&special =][variable now]", - " [attribute&qualifier .right]"); - - MT("stretchedRuby", - "[operator&special =] [variable puts] [string \"Hello\"],", - " [string \"World\"]"); - - MT("interpolationInHashAttribute", - "[tag div]{[attribute id] = [string \"]#{[variable test]}[string _]#{[variable ting]}[string \"]} test"); - - MT("interpolationInHTMLAttribute", - "[tag div]([attribute title]=[string \"]#{[variable test]}[string _]#{[variable ting]()}[string \"]) Test"); -})(); diff --git a/assets/js/plugins/codemirror/mode/smalltalk/index.html b/assets/js/plugins/codemirror/mode/smalltalk/index.html deleted file mode 100644 index 2155ebc2..00000000 --- a/assets/js/plugins/codemirror/mode/smalltalk/index.html +++ /dev/null @@ -1,68 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Smalltalk mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="../../addon/edit/matchbrackets.js"></script> -<script src="smalltalk.js"></script> -<style> - .CodeMirror {border: 2px solid #dee; border-right-width: 10px;} - .CodeMirror-gutter {border: none; background: #dee;} - .CodeMirror-gutter pre {color: white; font-weight: bold;} - </style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Smalltalk</a> - </ul> -</div> - -<article> -<h2>Smalltalk mode</h2> -<form><textarea id="code" name="code"> -" - This is a test of the Smalltalk code -" -Seaside.WAComponent subclass: #MyCounter [ - | count | - MyCounter class &gt;&gt; canBeRoot [ ^true ] - - initialize [ - super initialize. - count := 0. - ] - states [ ^{ self } ] - renderContentOn: html [ - html heading: count. - html anchor callback: [ count := count + 1 ]; with: '++'. - html space. - html anchor callback: [ count := count - 1 ]; with: '--'. - ] -] - -MyCounter registerAsApplication: 'mycounter' -</textarea></form> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers: true, - matchBrackets: true, - mode: "text/x-stsrc", - indentUnit: 4 - }); - </script> - - <p>Simple Smalltalk mode.</p> - - <p><strong>MIME types defined:</strong> <code>text/x-stsrc</code>.</p> - </article> diff --git a/assets/js/plugins/codemirror/mode/smalltalk/smalltalk.js b/assets/js/plugins/codemirror/mode/smalltalk/smalltalk.js deleted file mode 100644 index bb510ba2..00000000 --- a/assets/js/plugins/codemirror/mode/smalltalk/smalltalk.js +++ /dev/null @@ -1,168 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode('smalltalk', function(config) { - - var specialChars = /[+\-\/\\*~<>=@%|&?!.,:;^]/; - var keywords = /true|false|nil|self|super|thisContext/; - - var Context = function(tokenizer, parent) { - this.next = tokenizer; - this.parent = parent; - }; - - var Token = function(name, context, eos) { - this.name = name; - this.context = context; - this.eos = eos; - }; - - var State = function() { - this.context = new Context(next, null); - this.expectVariable = true; - this.indentation = 0; - this.userIndentationDelta = 0; - }; - - State.prototype.userIndent = function(indentation) { - this.userIndentationDelta = indentation > 0 ? (indentation / config.indentUnit - this.indentation) : 0; - }; - - var next = function(stream, context, state) { - var token = new Token(null, context, false); - var aChar = stream.next(); - - if (aChar === '"') { - token = nextComment(stream, new Context(nextComment, context)); - - } else if (aChar === '\'') { - token = nextString(stream, new Context(nextString, context)); - - } else if (aChar === '#') { - if (stream.peek() === '\'') { - stream.next(); - token = nextSymbol(stream, new Context(nextSymbol, context)); - } else { - if (stream.eatWhile(/[^\s.{}\[\]()]/)) - token.name = 'string-2'; - else - token.name = 'meta'; - } - - } else if (aChar === '$') { - if (stream.next() === '<') { - stream.eatWhile(/[^\s>]/); - stream.next(); - } - token.name = 'string-2'; - - } else if (aChar === '|' && state.expectVariable) { - token.context = new Context(nextTemporaries, context); - - } else if (/[\[\]{}()]/.test(aChar)) { - token.name = 'bracket'; - token.eos = /[\[{(]/.test(aChar); - - if (aChar === '[') { - state.indentation++; - } else if (aChar === ']') { - state.indentation = Math.max(0, state.indentation - 1); - } - - } else if (specialChars.test(aChar)) { - stream.eatWhile(specialChars); - token.name = 'operator'; - token.eos = aChar !== ';'; // ; cascaded message expression - - } else if (/\d/.test(aChar)) { - stream.eatWhile(/[\w\d]/); - token.name = 'number'; - - } else if (/[\w_]/.test(aChar)) { - stream.eatWhile(/[\w\d_]/); - token.name = state.expectVariable ? (keywords.test(stream.current()) ? 'keyword' : 'variable') : null; - - } else { - token.eos = state.expectVariable; - } - - return token; - }; - - var nextComment = function(stream, context) { - stream.eatWhile(/[^"]/); - return new Token('comment', stream.eat('"') ? context.parent : context, true); - }; - - var nextString = function(stream, context) { - stream.eatWhile(/[^']/); - return new Token('string', stream.eat('\'') ? context.parent : context, false); - }; - - var nextSymbol = function(stream, context) { - stream.eatWhile(/[^']/); - return new Token('string-2', stream.eat('\'') ? context.parent : context, false); - }; - - var nextTemporaries = function(stream, context) { - var token = new Token(null, context, false); - var aChar = stream.next(); - - if (aChar === '|') { - token.context = context.parent; - token.eos = true; - - } else { - stream.eatWhile(/[^|]/); - token.name = 'variable'; - } - - return token; - }; - - return { - startState: function() { - return new State; - }, - - token: function(stream, state) { - state.userIndent(stream.indentation()); - - if (stream.eatSpace()) { - return null; - } - - var token = state.context.next(stream, state.context, state); - state.context = token.context; - state.expectVariable = token.eos; - - return token.name; - }, - - blankLine: function(state) { - state.userIndent(0); - }, - - indent: function(state, textAfter) { - var i = state.context.next === next && textAfter && textAfter.charAt(0) === ']' ? -1 : state.userIndentationDelta; - return (state.indentation + i) * config.indentUnit; - }, - - electricChars: ']' - }; - -}); - -CodeMirror.defineMIME('text/x-stsrc', {name: 'smalltalk'}); - -}); diff --git a/assets/js/plugins/codemirror/mode/smarty/index.html b/assets/js/plugins/codemirror/mode/smarty/index.html deleted file mode 100644 index 8d88c9a3..00000000 --- a/assets/js/plugins/codemirror/mode/smarty/index.html +++ /dev/null @@ -1,136 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Smarty mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="smarty.js"></script> -<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Smarty</a> - </ul> -</div> - -<article> -<h2>Smarty mode</h2> -<form><textarea id="code" name="code"> -{extends file="parent.tpl"} -{include file="template.tpl"} - -{* some example Smarty content *} -{if isset($name) && $name == 'Blog'} - This is a {$var}. - {$integer = 451}, {$array[] = "a"}, {$stringvar = "string"} - {assign var='bob' value=$var.prop} -{elseif $name == $foo} - {function name=menu level=0} - {foreach $data as $entry} - {if is_array($entry)} - - {$entry@key} - {menu data=$entry level=$level+1} - {else} - {$entry} - {/if} - {/foreach} - {/function} -{/if}</textarea></form> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers: true, - mode: "smarty" - }); - </script> - - <br /> - - <h3>Smarty 2, custom delimiters</h3> - <form><textarea id="code2" name="code2"> -{--extends file="parent.tpl"--} -{--include file="template.tpl"--} - -{--* some example Smarty content *--} -{--if isset($name) && $name == 'Blog'--} - This is a {--$var--}. - {--$integer = 451--}, {--$array[] = "a"--}, {--$stringvar = "string"--} - {--assign var='bob' value=$var.prop--} -{--elseif $name == $foo--} - {--function name=menu level=0--} - {--foreach $data as $entry--} - {--if is_array($entry)--} - - {--$entry@key--} - {--menu data=$entry level=$level+1--} - {--else--} - {--$entry--} - {--/if--} - {--/foreach--} - {--/function--} -{--/if--}</textarea></form> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code2"), { - lineNumbers: true, - mode: { - name: "smarty", - leftDelimiter: "{--", - rightDelimiter: "--}" - } - }); - </script> - - <br /> - - <h3>Smarty 3</h3> - - <textarea id="code3" name="code3"> -Nested tags {$foo={counter one=1 two={inception}}+3} are now valid in Smarty 3. - -<script> -function test() { - console.log("Smarty 3 permits single curly braces followed by whitespace to NOT slip into Smarty mode."); -} -</script> - -{assign var=foo value=[1,2,3]} -{assign var=foo value=['y'=>'yellow','b'=>'blue']} -{assign var=foo value=[1,[9,8],3]} - -{$foo=$bar+2} {* a comment *} -{$foo.bar=1} {* another comment *} -{$foo = myfunct(($x+$y)*3)} -{$foo = strlen($bar)} -{$foo.bar.baz=1}, {$foo[]=1} - -Smarty "dot" syntax (note: embedded {} are used to address ambiguities): - -{$foo.a.b.c} => $foo['a']['b']['c'] -{$foo.a.$b.c} => $foo['a'][$b]['c'] -{$foo.a.{$b+4}.c} => $foo['a'][$b+4]['c'] -{$foo.a.{$b.c}} => $foo['a'][$b['c']] - -{$object->method1($x)->method2($y)}</textarea> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code3"), { - lineNumbers: true, - mode: "smarty", - smartyVersion: 3 - }); - </script> - - - <p>A plain text/Smarty version 2 or 3 mode, which allows for custom delimiter tags.</p> - - <p><strong>MIME types defined:</strong> <code>text/x-smarty</code></p> - </article> diff --git a/assets/js/plugins/codemirror/mode/smarty/smarty.js b/assets/js/plugins/codemirror/mode/smarty/smarty.js deleted file mode 100644 index bb053245..00000000 --- a/assets/js/plugins/codemirror/mode/smarty/smarty.js +++ /dev/null @@ -1,221 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/** - * Smarty 2 and 3 mode. - */ - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("smarty", function(config) { - "use strict"; - - // our default settings; check to see if they're overridden - var settings = { - rightDelimiter: '}', - leftDelimiter: '{', - smartyVersion: 2 // for backward compatibility - }; - if (config.hasOwnProperty("leftDelimiter")) { - settings.leftDelimiter = config.leftDelimiter; - } - if (config.hasOwnProperty("rightDelimiter")) { - settings.rightDelimiter = config.rightDelimiter; - } - if (config.hasOwnProperty("smartyVersion") && config.smartyVersion === 3) { - settings.smartyVersion = 3; - } - - var keyFunctions = ["debug", "extends", "function", "include", "literal"]; - var last; - var regs = { - operatorChars: /[+\-*&%=<>!?]/, - validIdentifier: /[a-zA-Z0-9_]/, - stringChar: /['"]/ - }; - - var helpers = { - cont: function(style, lastType) { - last = lastType; - return style; - }, - chain: function(stream, state, parser) { - state.tokenize = parser; - return parser(stream, state); - } - }; - - - // our various parsers - var parsers = { - - // the main tokenizer - tokenizer: function(stream, state) { - if (stream.match(settings.leftDelimiter, true)) { - if (stream.eat("*")) { - return helpers.chain(stream, state, parsers.inBlock("comment", "*" + settings.rightDelimiter)); - } else { - // Smarty 3 allows { and } surrounded by whitespace to NOT slip into Smarty mode - state.depth++; - var isEol = stream.eol(); - var isFollowedByWhitespace = /\s/.test(stream.peek()); - if (settings.smartyVersion === 3 && settings.leftDelimiter === "{" && (isEol || isFollowedByWhitespace)) { - state.depth--; - return null; - } else { - state.tokenize = parsers.smarty; - last = "startTag"; - return "tag"; - } - } - } else { - stream.next(); - return null; - } - }, - - // parsing Smarty content - smarty: function(stream, state) { - if (stream.match(settings.rightDelimiter, true)) { - if (settings.smartyVersion === 3) { - state.depth--; - if (state.depth <= 0) { - state.tokenize = parsers.tokenizer; - } - } else { - state.tokenize = parsers.tokenizer; - } - return helpers.cont("tag", null); - } - - if (stream.match(settings.leftDelimiter, true)) { - state.depth++; - return helpers.cont("tag", "startTag"); - } - - var ch = stream.next(); - if (ch == "$") { - stream.eatWhile(regs.validIdentifier); - return helpers.cont("variable-2", "variable"); - } else if (ch == "|") { - return helpers.cont("operator", "pipe"); - } else if (ch == ".") { - return helpers.cont("operator", "property"); - } else if (regs.stringChar.test(ch)) { - state.tokenize = parsers.inAttribute(ch); - return helpers.cont("string", "string"); - } else if (regs.operatorChars.test(ch)) { - stream.eatWhile(regs.operatorChars); - return helpers.cont("operator", "operator"); - } else if (ch == "[" || ch == "]") { - return helpers.cont("bracket", "bracket"); - } else if (ch == "(" || ch == ")") { - return helpers.cont("bracket", "operator"); - } else if (/\d/.test(ch)) { - stream.eatWhile(/\d/); - return helpers.cont("number", "number"); - } else { - - if (state.last == "variable") { - if (ch == "@") { - stream.eatWhile(regs.validIdentifier); - return helpers.cont("property", "property"); - } else if (ch == "|") { - stream.eatWhile(regs.validIdentifier); - return helpers.cont("qualifier", "modifier"); - } - } else if (state.last == "pipe") { - stream.eatWhile(regs.validIdentifier); - return helpers.cont("qualifier", "modifier"); - } else if (state.last == "whitespace") { - stream.eatWhile(regs.validIdentifier); - return helpers.cont("attribute", "modifier"); - } if (state.last == "property") { - stream.eatWhile(regs.validIdentifier); - return helpers.cont("property", null); - } else if (/\s/.test(ch)) { - last = "whitespace"; - return null; - } - - var str = ""; - if (ch != "/") { - str += ch; - } - var c = null; - while (c = stream.eat(regs.validIdentifier)) { - str += c; - } - for (var i=0, j=keyFunctions.length; i<j; i++) { - if (keyFunctions[i] == str) { - return helpers.cont("keyword", "keyword"); - } - } - if (/\s/.test(ch)) { - return null; - } - return helpers.cont("tag", "tag"); - } - }, - - inAttribute: function(quote) { - return function(stream, state) { - var prevChar = null; - var currChar = null; - while (!stream.eol()) { - currChar = stream.peek(); - if (stream.next() == quote && prevChar !== '\\') { - state.tokenize = parsers.smarty; - break; - } - prevChar = currChar; - } - return "string"; - }; - }, - - inBlock: function(style, terminator) { - return function(stream, state) { - while (!stream.eol()) { - if (stream.match(terminator)) { - state.tokenize = parsers.tokenizer; - break; - } - stream.next(); - } - return style; - }; - } - }; - - - // the public API for CodeMirror - return { - startState: function() { - return { - tokenize: parsers.tokenizer, - mode: "smarty", - last: null, - depth: 0 - }; - }, - token: function(stream, state) { - var style = state.tokenize(stream, state); - state.last = last; - return style; - }, - electricChars: "" - }; -}); - -CodeMirror.defineMIME("text/x-smarty", "smarty"); - -}); diff --git a/assets/js/plugins/codemirror/mode/smartymixed/index.html b/assets/js/plugins/codemirror/mode/smartymixed/index.html deleted file mode 100644 index 3a216abb..00000000 --- a/assets/js/plugins/codemirror/mode/smartymixed/index.html +++ /dev/null @@ -1,114 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Smarty mixed mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="../../mode/xml/xml.js"></script> -<script src="../../mode/javascript/javascript.js"></script> -<script src="../../mode/css/css.js"></script> -<script src="../../mode/htmlmixed/htmlmixed.js"></script> -<script src="../../mode/smarty/smarty.js"></script> -<script src="../../mode/smartymixed/smartymixed.js"></script> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Smarty mixed</a> - </ul> -</div> - -<article> -<h2>Smarty mixed mode</h2> -<form><textarea id="code" name="code"> -{** -* @brief Smarty mixed mode -* @author Ruslan Osmanov -* @date 29.06.2013 -*} -<html> -<head> - <title>{$title|htmlspecialchars|truncate:30}</title> -</head> -<body class="{$bodyclass}"> - {* Multiline smarty - * comment, no {$variables} here - *} - {literal} - {literal} is just an HTML text. - <script type="text/javascript">//<![CDATA[ - var a = {$just_a_normal_js_object : "value"}; - var myCodeMirror = CodeMirror.fromTextArea(document.getElementById("code"), { - mode : "smartymixed", - tabSize : 2, - indentUnit : 2, - indentWithTabs : false, - lineNumbers : true, - smartyVersion : 3 - }); - // ]]> - </script> - <style> - /* CSS content - {$no_smarty} */ - .some-class { font-weight: bolder; color: "orange"; } - </style> - {/literal} - - {extends file="parent.tpl"} - {include file="template.tpl"} - - {* some example Smarty content *} - {if isset($name) && $name == 'Blog'} - This is a {$var}. - {$integer = 4511}, {$array[] = "a"}, {$stringvar = "string"} - {$integer = 4512} {$array[] = "a"} {$stringvar = "string"} - {assign var='bob' value=$var.prop} - {elseif $name == $foo} - {function name=menu level=0} - {foreach $data as $entry} - {if is_array($entry)} - - {$entry@key} - {menu data=$entry level=$level+1} - {else} - {$entry} - {* One - * Two - * Three - *} - {/if} - {/foreach} - {/function} - {/if} - </body> - <!-- R.O. --> -</html> -</textarea></form> - - <script type="text/javascript"> - var myCodeMirror = CodeMirror.fromTextArea(document.getElementById("code"), { - mode : "smartymixed", - tabSize : 2, - indentUnit : 2, - indentWithTabs : false, - lineNumbers : true, - smartyVersion : 3, - matchBrackets : true, - }); - </script> - - <p>The Smarty mixed mode depends on the Smarty and HTML mixed modes. HTML - mixed mode itself depends on XML, JavaScript, and CSS modes.</p> - - <p>It takes the same options, as Smarty and HTML mixed modes.</p> - - <p><strong>MIME types defined:</strong> <code>text/x-smarty</code>.</p> - </article> diff --git a/assets/js/plugins/codemirror/mode/smartymixed/smartymixed.js b/assets/js/plugins/codemirror/mode/smartymixed/smartymixed.js deleted file mode 100644 index 4fc7ca4b..00000000 --- a/assets/js/plugins/codemirror/mode/smartymixed/smartymixed.js +++ /dev/null @@ -1,197 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/** -* @file smartymixed.js -* @brief Smarty Mixed Codemirror mode (Smarty + Mixed HTML) -* @author Ruslan Osmanov <rrosmanov at gmail dot com> -* @version 3.0 -* @date 05.07.2013 -*/ - -// Warning: Don't base other modes on this one. This here is a -// terrible way to write a mixed mode. - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), require("../smarty/smarty")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../htmlmixed/htmlmixed", "../smarty/smarty"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("smartymixed", function(config) { - var htmlMixedMode = CodeMirror.getMode(config, "htmlmixed"); - var smartyMode = CodeMirror.getMode(config, "smarty"); - - var settings = { - rightDelimiter: '}', - leftDelimiter: '{' - }; - - if (config.hasOwnProperty("leftDelimiter")) { - settings.leftDelimiter = config.leftDelimiter; - } - if (config.hasOwnProperty("rightDelimiter")) { - settings.rightDelimiter = config.rightDelimiter; - } - - function reEsc(str) { return str.replace(/[^\s\w]/g, "\\$&"); } - - var reLeft = reEsc(settings.leftDelimiter), reRight = reEsc(settings.rightDelimiter); - var regs = { - smartyComment: new RegExp("^" + reRight + "\\*"), - literalOpen: new RegExp(reLeft + "literal" + reRight), - literalClose: new RegExp(reLeft + "\/literal" + reRight), - hasLeftDelimeter: new RegExp(".*" + reLeft), - htmlHasLeftDelimeter: new RegExp("[^<>]*" + reLeft) - }; - - var helpers = { - chain: function(stream, state, parser) { - state.tokenize = parser; - return parser(stream, state); - }, - - cleanChain: function(stream, state, parser) { - state.tokenize = null; - state.localState = null; - state.localMode = null; - return (typeof parser == "string") ? (parser ? parser : null) : parser(stream, state); - }, - - maybeBackup: function(stream, pat, style) { - var cur = stream.current(); - var close = cur.search(pat), - m; - if (close > - 1) stream.backUp(cur.length - close); - else if (m = cur.match(/<\/?$/)) { - stream.backUp(cur.length); - if (!stream.match(pat, false)) stream.match(cur[0]); - } - return style; - } - }; - - var parsers = { - html: function(stream, state) { - var htmlTagName = state.htmlMixedState.htmlState.context && state.htmlMixedState.htmlState.context.tagName - ? state.htmlMixedState.htmlState.context.tagName - : null; - - if (!state.inLiteral && stream.match(regs.htmlHasLeftDelimeter, false) && htmlTagName === null) { - state.tokenize = parsers.smarty; - state.localMode = smartyMode; - state.localState = smartyMode.startState(htmlMixedMode.indent(state.htmlMixedState, "")); - return helpers.maybeBackup(stream, settings.leftDelimiter, smartyMode.token(stream, state.localState)); - } else if (!state.inLiteral && stream.match(settings.leftDelimiter, false)) { - state.tokenize = parsers.smarty; - state.localMode = smartyMode; - state.localState = smartyMode.startState(htmlMixedMode.indent(state.htmlMixedState, "")); - return helpers.maybeBackup(stream, settings.leftDelimiter, smartyMode.token(stream, state.localState)); - } - return htmlMixedMode.token(stream, state.htmlMixedState); - }, - - smarty: function(stream, state) { - if (stream.match(settings.leftDelimiter, false)) { - if (stream.match(regs.smartyComment, false)) { - return helpers.chain(stream, state, parsers.inBlock("comment", "*" + settings.rightDelimiter)); - } - } else if (stream.match(settings.rightDelimiter, false)) { - stream.eat(settings.rightDelimiter); - state.tokenize = parsers.html; - state.localMode = htmlMixedMode; - state.localState = state.htmlMixedState; - return "tag"; - } - - return helpers.maybeBackup(stream, settings.rightDelimiter, smartyMode.token(stream, state.localState)); - }, - - inBlock: function(style, terminator) { - return function(stream, state) { - while (!stream.eol()) { - if (stream.match(terminator)) { - helpers.cleanChain(stream, state, ""); - break; - } - stream.next(); - } - return style; - }; - } - }; - - return { - startState: function() { - var state = htmlMixedMode.startState(); - return { - token: parsers.html, - localMode: null, - localState: null, - htmlMixedState: state, - tokenize: null, - inLiteral: false - }; - }, - - copyState: function(state) { - var local = null, tok = (state.tokenize || state.token); - if (state.localState) { - local = CodeMirror.copyState((tok != parsers.html ? smartyMode : htmlMixedMode), state.localState); - } - return { - token: state.token, - tokenize: state.tokenize, - localMode: state.localMode, - localState: local, - htmlMixedState: CodeMirror.copyState(htmlMixedMode, state.htmlMixedState), - inLiteral: state.inLiteral - }; - }, - - token: function(stream, state) { - if (stream.match(settings.leftDelimiter, false)) { - if (!state.inLiteral && stream.match(regs.literalOpen, true)) { - state.inLiteral = true; - return "keyword"; - } else if (state.inLiteral && stream.match(regs.literalClose, true)) { - state.inLiteral = false; - return "keyword"; - } - } - if (state.inLiteral && state.localState != state.htmlMixedState) { - state.tokenize = parsers.html; - state.localMode = htmlMixedMode; - state.localState = state.htmlMixedState; - } - - var style = (state.tokenize || state.token)(stream, state); - return style; - }, - - indent: function(state, textAfter) { - if (state.localMode == smartyMode - || (state.inLiteral && !state.localMode) - || regs.hasLeftDelimeter.test(textAfter)) { - return CodeMirror.Pass; - } - return htmlMixedMode.indent(state.htmlMixedState, textAfter); - }, - - innerMode: function(state) { - return { - state: state.localState || state.htmlMixedState, - mode: state.localMode || htmlMixedMode - }; - } - }; -}, "htmlmixed", "smarty"); - -CodeMirror.defineMIME("text/x-smarty", "smartymixed"); -// vim: et ts=2 sts=2 sw=2 - -}); diff --git a/assets/js/plugins/codemirror/mode/solr/index.html b/assets/js/plugins/codemirror/mode/solr/index.html deleted file mode 100644 index 4b18c25b..00000000 --- a/assets/js/plugins/codemirror/mode/solr/index.html +++ /dev/null @@ -1,57 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Solr mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="solr.js"></script> -<style type="text/css"> - .CodeMirror { - border-top: 1px solid black; - border-bottom: 1px solid black; - } - - .CodeMirror .cm-operator { - color: orange; - } -</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Solr</a> - </ul> -</div> - -<article> - <h2>Solr mode</h2> - - <div> - <textarea id="code" name="code">author:Camus - -title:"The Rebel" and author:Camus - -philosophy:Existentialism -author:Kierkegaard - -hardToSpell:Dostoevsky~ - -published:[194* TO 1960] and author:(Sartre or "Simone de Beauvoir")</textarea> - </div> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - mode: 'solr', - lineNumbers: true - }); - </script> - - <p><strong>MIME types defined:</strong> <code>text/x-solr</code>.</p> -</article> diff --git a/assets/js/plugins/codemirror/mode/solr/solr.js b/assets/js/plugins/codemirror/mode/solr/solr.js deleted file mode 100644 index f7f70878..00000000 --- a/assets/js/plugins/codemirror/mode/solr/solr.js +++ /dev/null @@ -1,104 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("solr", function() { - "use strict"; - - var isStringChar = /[^\s\|\!\+\-\*\?\~\^\&\:\(\)\[\]\{\}\^\"\\]/; - var isOperatorChar = /[\|\!\+\-\*\?\~\^\&]/; - var isOperatorString = /^(OR|AND|NOT|TO)$/i; - - function isNumber(word) { - return parseFloat(word, 10).toString() === word; - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next; - while ((next = stream.next()) != null) { - if (next == quote && !escaped) break; - escaped = !escaped && next == "\\"; - } - - if (!escaped) state.tokenize = tokenBase; - return "string"; - }; - } - - function tokenOperator(operator) { - return function(stream, state) { - var style = "operator"; - if (operator == "+") - style += " positive"; - else if (operator == "-") - style += " negative"; - else if (operator == "|") - stream.eat(/\|/); - else if (operator == "&") - stream.eat(/\&/); - else if (operator == "^") - style += " boost"; - - state.tokenize = tokenBase; - return style; - }; - } - - function tokenWord(ch) { - return function(stream, state) { - var word = ch; - while ((ch = stream.peek()) && ch.match(isStringChar) != null) { - word += stream.next(); - } - - state.tokenize = tokenBase; - if (isOperatorString.test(word)) - return "operator"; - else if (isNumber(word)) - return "number"; - else if (stream.peek() == ":") - return "field"; - else - return "string"; - }; - } - - function tokenBase(stream, state) { - var ch = stream.next(); - if (ch == '"') - state.tokenize = tokenString(ch); - else if (isOperatorChar.test(ch)) - state.tokenize = tokenOperator(ch); - else if (isStringChar.test(ch)) - state.tokenize = tokenWord(ch); - - return (state.tokenize != tokenBase) ? state.tokenize(stream, state) : null; - } - - return { - startState: function() { - return { - tokenize: tokenBase - }; - }, - - token: function(stream, state) { - if (stream.eatSpace()) return null; - return state.tokenize(stream, state); - } - }; -}); - -CodeMirror.defineMIME("text/x-solr", "solr"); - -}); diff --git a/assets/js/plugins/codemirror/mode/sparql/index.html b/assets/js/plugins/codemirror/mode/sparql/index.html deleted file mode 100644 index 6f24206b..00000000 --- a/assets/js/plugins/codemirror/mode/sparql/index.html +++ /dev/null @@ -1,53 +0,0 @@ -<!doctype html> - -<title>CodeMirror: SPARQL mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="../../addon/edit/matchbrackets.js"></script> -<script src="sparql.js"></script> -<style>.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">SPARQL</a> - </ul> -</div> - -<article> -<h2>SPARQL mode</h2> -<form><textarea id="code" name="code"> -PREFIX a: &lt;http://www.w3.org/2000/10/annotation-ns#> -PREFIX dc: &lt;http://purl.org/dc/elements/1.1/> -PREFIX foaf: &lt;http://xmlns.com/foaf/0.1/> - -# Comment! - -SELECT ?given ?family -WHERE { - ?annot a:annotates &lt;http://www.w3.org/TR/rdf-sparql-query/> . - ?annot dc:creator ?c . - OPTIONAL {?c foaf:given ?given ; - foaf:family ?family } . - FILTER isBlank(?c) -} -</textarea></form> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - mode: "application/x-sparql-query", - matchBrackets: true - }); - </script> - - <p><strong>MIME types defined:</strong> <code>application/x-sparql-query</code>.</p> - - </article> diff --git a/assets/js/plugins/codemirror/mode/sparql/sparql.js b/assets/js/plugins/codemirror/mode/sparql/sparql.js deleted file mode 100644 index 64dbb612..00000000 --- a/assets/js/plugins/codemirror/mode/sparql/sparql.js +++ /dev/null @@ -1,160 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("sparql", function(config) { - var indentUnit = config.indentUnit; - var curPunc; - - function wordRegexp(words) { - return new RegExp("^(?:" + words.join("|") + ")$", "i"); - } - var ops = wordRegexp(["str", "lang", "langmatches", "datatype", "bound", "sameterm", "isiri", "isuri", - "isblank", "isliteral", "a"]); - var keywords = wordRegexp(["base", "prefix", "select", "distinct", "reduced", "construct", "describe", - "ask", "from", "named", "where", "order", "limit", "offset", "filter", "optional", - "graph", "by", "asc", "desc", "as", "having", "undef", "values", "group", - "minus", "in", "not", "service", "silent", "using", "insert", "delete", "union", - "data", "copy", "to", "move", "add", "create", "drop", "clear", "load"]); - var operatorChars = /[*+\-<>=&|]/; - - function tokenBase(stream, state) { - var ch = stream.next(); - curPunc = null; - if (ch == "$" || ch == "?") { - stream.match(/^[\w\d]*/); - return "variable-2"; - } - else if (ch == "<" && !stream.match(/^[\s\u00a0=]/, false)) { - stream.match(/^[^\s\u00a0>]*>?/); - return "atom"; - } - else if (ch == "\"" || ch == "'") { - state.tokenize = tokenLiteral(ch); - return state.tokenize(stream, state); - } - else if (/[{}\(\),\.;\[\]]/.test(ch)) { - curPunc = ch; - return null; - } - else if (ch == "#") { - stream.skipToEnd(); - return "comment"; - } - else if (operatorChars.test(ch)) { - stream.eatWhile(operatorChars); - return null; - } - else if (ch == ":") { - stream.eatWhile(/[\w\d\._\-]/); - return "atom"; - } - else { - stream.eatWhile(/[_\w\d]/); - if (stream.eat(":")) { - stream.eatWhile(/[\w\d_\-]/); - return "atom"; - } - var word = stream.current(); - if (ops.test(word)) - return null; - else if (keywords.test(word)) - return "keyword"; - else - return "variable"; - } - } - - function tokenLiteral(quote) { - return function(stream, state) { - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == quote && !escaped) { - state.tokenize = tokenBase; - break; - } - escaped = !escaped && ch == "\\"; - } - return "string"; - }; - } - - function pushContext(state, type, col) { - state.context = {prev: state.context, indent: state.indent, col: col, type: type}; - } - function popContext(state) { - state.indent = state.context.indent; - state.context = state.context.prev; - } - - return { - startState: function() { - return {tokenize: tokenBase, - context: null, - indent: 0, - col: 0}; - }, - - token: function(stream, state) { - if (stream.sol()) { - if (state.context && state.context.align == null) state.context.align = false; - state.indent = stream.indentation(); - } - if (stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - - if (style != "comment" && state.context && state.context.align == null && state.context.type != "pattern") { - state.context.align = true; - } - - if (curPunc == "(") pushContext(state, ")", stream.column()); - else if (curPunc == "[") pushContext(state, "]", stream.column()); - else if (curPunc == "{") pushContext(state, "}", stream.column()); - else if (/[\]\}\)]/.test(curPunc)) { - while (state.context && state.context.type == "pattern") popContext(state); - if (state.context && curPunc == state.context.type) popContext(state); - } - else if (curPunc == "." && state.context && state.context.type == "pattern") popContext(state); - else if (/atom|string|variable/.test(style) && state.context) { - if (/[\}\]]/.test(state.context.type)) - pushContext(state, "pattern", stream.column()); - else if (state.context.type == "pattern" && !state.context.align) { - state.context.align = true; - state.context.col = stream.column(); - } - } - - return style; - }, - - indent: function(state, textAfter) { - var firstChar = textAfter && textAfter.charAt(0); - var context = state.context; - if (/[\]\}]/.test(firstChar)) - while (context && context.type == "pattern") context = context.prev; - - var closing = context && firstChar == context.type; - if (!context) - return 0; - else if (context.type == "pattern") - return context.col; - else if (context.align) - return context.col + (closing ? 0 : 1); - else - return context.indent + (closing ? 0 : indentUnit); - } - }; -}); - -CodeMirror.defineMIME("application/x-sparql-query", "sparql"); - -}); diff --git a/assets/js/plugins/codemirror/mode/sql/index.html b/assets/js/plugins/codemirror/mode/sql/index.html deleted file mode 100644 index a0d8d9e1..00000000 --- a/assets/js/plugins/codemirror/mode/sql/index.html +++ /dev/null @@ -1,84 +0,0 @@ -<!doctype html> - -<title>CodeMirror: SQL Mode for CodeMirror</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css" /> -<script src="../../lib/codemirror.js"></script> -<script src="sql.js"></script> -<link rel="stylesheet" href="../../addon/hint/show-hint.css" /> -<script src="../../addon/hint/show-hint.js"></script> -<script src="../../addon/hint/sql-hint.js"></script> -<style> -.CodeMirror { - border-top: 1px solid black; - border-bottom: 1px solid black; -} - </style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">SQL Mode for CodeMirror</a> - </ul> -</div> - -<article> -<h2>SQL Mode for CodeMirror</h2> -<form> - <textarea id="code" name="code">-- SQL Mode for CodeMirror -SELECT SQL_NO_CACHE DISTINCT - @var1 AS `val1`, @'val2', @global.'sql_mode', - 1.1 AS `float_val`, .14 AS `another_float`, 0.09e3 AS `int_with_esp`, - 0xFA5 AS `hex`, x'fa5' AS `hex2`, 0b101 AS `bin`, b'101' AS `bin2`, - DATE '1994-01-01' AS `sql_date`, { T "1994-01-01" } AS `odbc_date`, - 'my string', _utf8'your string', N'her string', - TRUE, FALSE, UNKNOWN - FROM DUAL - -- space needed after '--' - # 1 line comment - /* multiline - comment! */ - LIMIT 1 OFFSET 0; -</textarea> - </form> - <p><strong>MIME types defined:</strong> - <code><a href="?mime=text/x-sql">text/x-sql</a></code>, - <code><a href="?mime=text/x-mysql">text/x-mysql</a></code>, - <code><a href="?mime=text/x-mariadb">text/x-mariadb</a></code>, - <code><a href="?mime=text/x-cassandra">text/x-cassandra</a></code>, - <code><a href="?mime=text/x-plsql">text/x-plsql</a></code>, - <code><a href="?mime=text/x-mssql">text/x-mssql</a></code>, - <code><a href="?mime=text/x-hive">text/x-hive</a></code>. - </p> -<script> -window.onload = function() { - var mime = 'text/x-mariadb'; - // get mime type - if (window.location.href.indexOf('mime=') > -1) { - mime = window.location.href.substr(window.location.href.indexOf('mime=') + 5); - } - window.editor = CodeMirror.fromTextArea(document.getElementById('code'), { - mode: mime, - indentWithTabs: true, - smartIndent: true, - lineNumbers: true, - matchBrackets : true, - autofocus: true, - extraKeys: {"Ctrl-Space": "autocomplete"}, - hintOptions: {tables: { - users: {name: null, score: null, birthDate: null}, - countries: {name: null, population: null, size: null} - }} - }); -}; -</script> - -</article> diff --git a/assets/js/plugins/codemirror/mode/sql/sql.js b/assets/js/plugins/codemirror/mode/sql/sql.js deleted file mode 100644 index 799492f5..00000000 --- a/assets/js/plugins/codemirror/mode/sql/sql.js +++ /dev/null @@ -1,393 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("sql", function(config, parserConfig) { - "use strict"; - - var client = parserConfig.client || {}, - atoms = parserConfig.atoms || {"false": true, "true": true, "null": true}, - builtin = parserConfig.builtin || {}, - keywords = parserConfig.keywords || {}, - operatorChars = parserConfig.operatorChars || /^[*+\-%<>!=&|~^]/, - support = parserConfig.support || {}, - hooks = parserConfig.hooks || {}, - dateSQL = parserConfig.dateSQL || {"date" : true, "time" : true, "timestamp" : true}; - - function tokenBase(stream, state) { - var ch = stream.next(); - - // call hooks from the mime type - if (hooks[ch]) { - var result = hooks[ch](stream, state); - if (result !== false) return result; - } - - if (support.hexNumber == true && - ((ch == "0" && stream.match(/^[xX][0-9a-fA-F]+/)) - || (ch == "x" || ch == "X") && stream.match(/^'[0-9a-fA-F]+'/))) { - // hex - // ref: http://dev.mysql.com/doc/refman/5.5/en/hexadecimal-literals.html - return "number"; - } else if (support.binaryNumber == true && - (((ch == "b" || ch == "B") && stream.match(/^'[01]+'/)) - || (ch == "0" && stream.match(/^b[01]+/)))) { - // bitstring - // ref: http://dev.mysql.com/doc/refman/5.5/en/bit-field-literals.html - return "number"; - } else if (ch.charCodeAt(0) > 47 && ch.charCodeAt(0) < 58) { - // numbers - // ref: http://dev.mysql.com/doc/refman/5.5/en/number-literals.html - stream.match(/^[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?/); - support.decimallessFloat == true && stream.eat('.'); - return "number"; - } else if (ch == "?" && (stream.eatSpace() || stream.eol() || stream.eat(";"))) { - // placeholders - return "variable-3"; - } else if (ch == "'" || (ch == '"' && support.doubleQuote)) { - // strings - // ref: http://dev.mysql.com/doc/refman/5.5/en/string-literals.html - state.tokenize = tokenLiteral(ch); - return state.tokenize(stream, state); - } else if ((((support.nCharCast == true && (ch == "n" || ch == "N")) - || (support.charsetCast == true && ch == "_" && stream.match(/[a-z][a-z0-9]*/i))) - && (stream.peek() == "'" || stream.peek() == '"'))) { - // charset casting: _utf8'str', N'str', n'str' - // ref: http://dev.mysql.com/doc/refman/5.5/en/string-literals.html - return "keyword"; - } else if (/^[\(\),\;\[\]]/.test(ch)) { - // no highlightning - return null; - } else if (support.commentSlashSlash && ch == "/" && stream.eat("/")) { - // 1-line comment - stream.skipToEnd(); - return "comment"; - } else if ((support.commentHash && ch == "#") - || (ch == "-" && stream.eat("-") && (!support.commentSpaceRequired || stream.eat(" ")))) { - // 1-line comments - // ref: https://kb.askmonty.org/en/comment-syntax/ - stream.skipToEnd(); - return "comment"; - } else if (ch == "/" && stream.eat("*")) { - // multi-line comments - // ref: https://kb.askmonty.org/en/comment-syntax/ - state.tokenize = tokenComment; - return state.tokenize(stream, state); - } else if (ch == ".") { - // .1 for 0.1 - if (support.zerolessFloat == true && stream.match(/^(?:\d+(?:e[+-]?\d+)?)/i)) { - return "number"; - } - // .table_name (ODBC) - // // ref: http://dev.mysql.com/doc/refman/5.6/en/identifier-qualifiers.html - if (support.ODBCdotTable == true && stream.match(/^[a-zA-Z_]+/)) { - return "variable-2"; - } - } else if (operatorChars.test(ch)) { - // operators - stream.eatWhile(operatorChars); - return null; - } else if (ch == '{' && - (stream.match(/^( )*(d|D|t|T|ts|TS)( )*'[^']*'( )*}/) || stream.match(/^( )*(d|D|t|T|ts|TS)( )*"[^"]*"( )*}/))) { - // dates (weird ODBC syntax) - // ref: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html - return "number"; - } else { - stream.eatWhile(/^[_\w\d]/); - var word = stream.current().toLowerCase(); - // dates (standard SQL syntax) - // ref: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html - if (dateSQL.hasOwnProperty(word) && (stream.match(/^( )+'[^']*'/) || stream.match(/^( )+"[^"]*"/))) - return "number"; - if (atoms.hasOwnProperty(word)) return "atom"; - if (builtin.hasOwnProperty(word)) return "builtin"; - if (keywords.hasOwnProperty(word)) return "keyword"; - if (client.hasOwnProperty(word)) return "string-2"; - return null; - } - } - - // 'string', with char specified in quote escaped by '\' - function tokenLiteral(quote) { - return function(stream, state) { - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == quote && !escaped) { - state.tokenize = tokenBase; - break; - } - escaped = !escaped && ch == "\\"; - } - return "string"; - }; - } - function tokenComment(stream, state) { - while (true) { - if (stream.skipTo("*")) { - stream.next(); - if (stream.eat("/")) { - state.tokenize = tokenBase; - break; - } - } else { - stream.skipToEnd(); - break; - } - } - return "comment"; - } - - function pushContext(stream, state, type) { - state.context = { - prev: state.context, - indent: stream.indentation(), - col: stream.column(), - type: type - }; - } - - function popContext(state) { - state.indent = state.context.indent; - state.context = state.context.prev; - } - - return { - startState: function() { - return {tokenize: tokenBase, context: null}; - }, - - token: function(stream, state) { - if (stream.sol()) { - if (state.context && state.context.align == null) - state.context.align = false; - } - if (stream.eatSpace()) return null; - - var style = state.tokenize(stream, state); - if (style == "comment") return style; - - if (state.context && state.context.align == null) - state.context.align = true; - - var tok = stream.current(); - if (tok == "(") - pushContext(stream, state, ")"); - else if (tok == "[") - pushContext(stream, state, "]"); - else if (state.context && state.context.type == tok) - popContext(state); - return style; - }, - - indent: function(state, textAfter) { - var cx = state.context; - if (!cx) return 0; - var closing = textAfter.charAt(0) == cx.type; - if (cx.align) return cx.col + (closing ? 0 : 1); - else return cx.indent + (closing ? 0 : config.indentUnit); - }, - - blockCommentStart: "/*", - blockCommentEnd: "*/", - lineComment: support.commentSlashSlash ? "//" : support.commentHash ? "#" : null - }; -}); - -(function() { - "use strict"; - - // `identifier` - function hookIdentifier(stream) { - // MySQL/MariaDB identifiers - // ref: http://dev.mysql.com/doc/refman/5.6/en/identifier-qualifiers.html - var ch; - while ((ch = stream.next()) != null) { - if (ch == "`" && !stream.eat("`")) return "variable-2"; - } - stream.backUp(stream.current().length - 1); - return stream.eatWhile(/\w/) ? "variable-2" : null; - } - - // variable token - function hookVar(stream) { - // variables - // @@prefix.varName @varName - // varName can be quoted with ` or ' or " - // ref: http://dev.mysql.com/doc/refman/5.5/en/user-variables.html - if (stream.eat("@")) { - stream.match(/^session\./); - stream.match(/^local\./); - stream.match(/^global\./); - } - - if (stream.eat("'")) { - stream.match(/^.*'/); - return "variable-2"; - } else if (stream.eat('"')) { - stream.match(/^.*"/); - return "variable-2"; - } else if (stream.eat("`")) { - stream.match(/^.*`/); - return "variable-2"; - } else if (stream.match(/^[0-9a-zA-Z$\.\_]+/)) { - return "variable-2"; - } - return null; - }; - - // short client keyword token - function hookClient(stream) { - // \N means NULL - // ref: http://dev.mysql.com/doc/refman/5.5/en/null-values.html - if (stream.eat("N")) { - return "atom"; - } - // \g, etc - // ref: http://dev.mysql.com/doc/refman/5.5/en/mysql-commands.html - return stream.match(/^[a-zA-Z.#!?]/) ? "variable-2" : null; - } - - // these keywords are used by all SQL dialects (however, a mode can still overwrite it) - var sqlKeywords = "alter and as asc between by count create delete desc distinct drop from having in insert into is join like not on or order select set table union update values where "; - - // turn a space-separated list into an array - function set(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - // A generic SQL Mode. It's not a standard, it just try to support what is generally supported - CodeMirror.defineMIME("text/x-sql", { - name: "sql", - keywords: set(sqlKeywords + "begin"), - builtin: set("bool boolean bit blob enum long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision real date datetime year unsigned signed decimal numeric"), - atoms: set("false true null unknown"), - operatorChars: /^[*+\-%<>!=]/, - dateSQL: set("date time timestamp"), - support: set("ODBCdotTable doubleQuote binaryNumber hexNumber") - }); - - CodeMirror.defineMIME("text/x-mssql", { - name: "sql", - client: set("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"), - keywords: set(sqlKeywords + "begin trigger proc view index for add constraint key primary foreign collate clustered nonclustered"), - builtin: set("bigint numeric bit smallint decimal smallmoney int tinyint money float real char varchar text nchar nvarchar ntext binary varbinary image cursor timestamp hierarchyid uniqueidentifier sql_variant xml table "), - atoms: set("false true null unknown"), - operatorChars: /^[*+\-%<>!=]/, - dateSQL: set("date datetimeoffset datetime2 smalldatetime datetime time"), - hooks: { - "@": hookVar - } - }); - - CodeMirror.defineMIME("text/x-mysql", { - name: "sql", - client: set("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"), - keywords: set(sqlKeywords + "accessible action add after algorithm all analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general get global grant grants group groupby_concat handler hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show signal slave slow smallint snapshot soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"), - builtin: set("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"), - atoms: set("false true null unknown"), - operatorChars: /^[*+\-%<>!=&|^]/, - dateSQL: set("date time timestamp"), - support: set("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"), - hooks: { - "@": hookVar, - "`": hookIdentifier, - "\\": hookClient - } - }); - - CodeMirror.defineMIME("text/x-mariadb", { - name: "sql", - client: set("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"), - keywords: set(sqlKeywords + "accessible action add after algorithm all always analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general generated get global grant grants group groupby_concat handler hard hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password persistent phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show shutdown signal slave slow smallint snapshot soft soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views virtual warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"), - builtin: set("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"), - atoms: set("false true null unknown"), - operatorChars: /^[*+\-%<>!=&|^]/, - dateSQL: set("date time timestamp"), - support: set("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"), - hooks: { - "@": hookVar, - "`": hookIdentifier, - "\\": hookClient - } - }); - - // the query language used by Apache Cassandra is called CQL, but this mime type - // is called Cassandra to avoid confusion with Contextual Query Language - CodeMirror.defineMIME("text/x-cassandra", { - name: "sql", - client: { }, - keywords: set("use select from using consistency where limit first reversed first and in insert into values using consistency ttl update set delete truncate begin batch apply create keyspace with columnfamily primary key index on drop alter type add any one quorum all local_quorum each_quorum"), - builtin: set("ascii bigint blob boolean counter decimal double float int text timestamp uuid varchar varint"), - atoms: set("false true"), - operatorChars: /^[<>=]/, - dateSQL: { }, - support: set("commentSlashSlash decimallessFloat"), - hooks: { } - }); - - // this is based on Peter Raganitsch's 'plsql' mode - CodeMirror.defineMIME("text/x-plsql", { - name: "sql", - client: set("appinfo arraysize autocommit autoprint autorecovery autotrace blockterminator break btitle cmdsep colsep compatibility compute concat copycommit copytypecheck define describe echo editfile embedded escape exec execute feedback flagger flush heading headsep instance linesize lno loboffset logsource long longchunksize markup native newpage numformat numwidth pagesize pause pno recsep recsepchar release repfooter repheader serveroutput shiftinout show showmode size spool sqlblanklines sqlcase sqlcode sqlcontinue sqlnumber sqlpluscompatibility sqlprefix sqlprompt sqlterminator suffix tab term termout time timing trimout trimspool ttitle underline verify version wrap"), - keywords: set("abort accept access add all alter and any array arraylen as asc assert assign at attributes audit authorization avg base_table begin between binary_integer body boolean by case cast char char_base check close cluster clusters colauth column comment commit compress connect connected constant constraint crash create current currval cursor data_base database date dba deallocate debugoff debugon decimal declare default definition delay delete desc digits dispose distinct do drop else elseif elsif enable end entry escape exception exception_init exchange exclusive exists exit external fast fetch file for force form from function generic goto grant group having identified if immediate in increment index indexes indicator initial initrans insert interface intersect into is key level library like limited local lock log logging long loop master maxextents maxtrans member minextents minus mislabel mode modify multiset new next no noaudit nocompress nologging noparallel not nowait number_base object of off offline on online only open option or order out package parallel partition pctfree pctincrease pctused pls_integer positive positiven pragma primary prior private privileges procedure public raise range raw read rebuild record ref references refresh release rename replace resource restrict return returning returns reverse revoke rollback row rowid rowlabel rownum rows run savepoint schema segment select separate session set share snapshot some space split sql start statement storage subtype successful synonym tabauth table tables tablespace task terminate then to trigger truncate type union unique unlimited unrecoverable unusable update use using validate value values variable view views when whenever where while with work"), - builtin: set("abs acos add_months ascii asin atan atan2 average bfile bfilename bigserial bit blob ceil character chartorowid chr clob concat convert cos cosh count dec decode deref dual dump dup_val_on_index empty error exp false float floor found glb greatest hextoraw initcap instr instrb int integer isopen last_day least lenght lenghtb ln lower lpad ltrim lub make_ref max min mlslabel mod months_between natural naturaln nchar nclob new_time next_day nextval nls_charset_decl_len nls_charset_id nls_charset_name nls_initcap nls_lower nls_sort nls_upper nlssort no_data_found notfound null number numeric nvarchar2 nvl others power rawtohex real reftohex round rowcount rowidtochar rowtype rpad rtrim serial sign signtype sin sinh smallint soundex sqlcode sqlerrm sqrt stddev string substr substrb sum sysdate tan tanh to_char text to_date to_label to_multi_byte to_number to_single_byte translate true trunc uid unlogged upper user userenv varchar varchar2 variance varying vsize xml"), - operatorChars: /^[*+\-%<>!=~]/, - dateSQL: set("date time timestamp"), - support: set("doubleQuote nCharCast zerolessFloat binaryNumber hexNumber") - }); - - // Created to support specific hive keywords - CodeMirror.defineMIME("text/x-hive", { - name: "sql", - keywords: set("select alter $elem$ $key$ $value$ add after all analyze and archive as asc before between binary both bucket buckets by cascade case cast change cluster clustered clusterstatus collection column columns comment compute concatenate continue create cross cursor data database databases dbproperties deferred delete delimited desc describe directory disable distinct distribute drop else enable end escaped exclusive exists explain export extended external false fetch fields fileformat first format formatted from full function functions grant group having hold_ddltime idxproperties if import in index indexes inpath inputdriver inputformat insert intersect into is items join keys lateral left like limit lines load local location lock locks mapjoin materialized minus msck no_drop nocompress not of offline on option or order out outer outputdriver outputformat overwrite partition partitioned partitions percent plus preserve procedure purge range rcfile read readonly reads rebuild recordreader recordwriter recover reduce regexp rename repair replace restrict revoke right rlike row schema schemas semi sequencefile serde serdeproperties set shared show show_database sort sorted ssl statistics stored streamtable table tables tablesample tblproperties temporary terminated textfile then tmp to touch transform trigger true unarchive undo union uniquejoin unlock update use using utc utc_tmestamp view when where while with"), - builtin: set("bool boolean long timestamp tinyint smallint bigint int float double date datetime unsigned string array struct map uniontype"), - atoms: set("false true null unknown"), - operatorChars: /^[*+\-%<>!=]/, - dateSQL: set("date timestamp"), - support: set("ODBCdotTable doubleQuote binaryNumber hexNumber") - }); -}()); - -}); - -/* - How Properties of Mime Types are used by SQL Mode - ================================================= - - keywords: - A list of keywords you want to be highlighted. - functions: - A list of function names you want to be highlighted. - builtin: - A list of builtin types you want to be highlighted (if you want types to be of class "builtin" instead of "keyword"). - operatorChars: - All characters that must be handled as operators. - client: - Commands parsed and executed by the client (not the server). - support: - A list of supported syntaxes which are not common, but are supported by more than 1 DBMS. - * ODBCdotTable: .tableName - * zerolessFloat: .1 - * doubleQuote - * nCharCast: N'string' - * charsetCast: _utf8'string' - * commentHash: use # char for comments - * commentSlashSlash: use // for comments - * commentSpaceRequired: require a space after -- for comments - atoms: - Keywords that must be highlighted as atoms,. Some DBMS's support more atoms than others: - UNKNOWN, INFINITY, UNDERFLOW, NaN... - dateSQL: - Used for date/time SQL standard syntax, because not all DBMS's support same temporal types. -*/ diff --git a/assets/js/plugins/codemirror/mode/stex/index.html b/assets/js/plugins/codemirror/mode/stex/index.html deleted file mode 100644 index 14679da4..00000000 --- a/assets/js/plugins/codemirror/mode/stex/index.html +++ /dev/null @@ -1,110 +0,0 @@ -<!doctype html> - -<title>CodeMirror: sTeX mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="stex.js"></script> -<style>.CodeMirror {background: #f8f8f8;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">sTeX</a> - </ul> -</div> - -<article> -<h2>sTeX mode</h2> -<form><textarea id="code" name="code"> -\begin{module}[id=bbt-size] -\importmodule[balanced-binary-trees]{balanced-binary-trees} -\importmodule[\KWARCslides{dmath/en/cardinality}]{cardinality} - -\begin{frame} - \frametitle{Size Lemma for Balanced Trees} - \begin{itemize} - \item - \begin{assertion}[id=size-lemma,type=lemma] - Let $G=\tup{V,E}$ be a \termref[cd=binary-trees]{balanced binary tree} - of \termref[cd=graph-depth,name=vertex-depth]{depth}$n>i$, then the set - $\defeq{\livar{V}i}{\setst{\inset{v}{V}}{\gdepth{v} = i}}$ of - \termref[cd=graphs-intro,name=node]{nodes} at - \termref[cd=graph-depth,name=vertex-depth]{depth} $i$ has - \termref[cd=cardinality,name=cardinality]{cardinality} $\power2i$. - \end{assertion} - \item - \begin{sproof}[id=size-lemma-pf,proofend=,for=size-lemma]{via induction over the depth $i$.} - \begin{spfcases}{We have to consider two cases} - \begin{spfcase}{$i=0$} - \begin{spfstep}[display=flow] - then $\livar{V}i=\set{\livar{v}r}$, where $\livar{v}r$ is the root, so - $\eq{\card{\livar{V}0},\card{\set{\livar{v}r}},1,\power20}$. - \end{spfstep} - \end{spfcase} - \begin{spfcase}{$i>0$} - \begin{spfstep}[display=flow] - then $\livar{V}{i-1}$ contains $\power2{i-1}$ vertexes - \begin{justification}[method=byIH](IH)\end{justification} - \end{spfstep} - \begin{spfstep} - By the \begin{justification}[method=byDef]definition of a binary - tree\end{justification}, each $\inset{v}{\livar{V}{i-1}}$ is a leaf or has - two children that are at depth $i$. - \end{spfstep} - \begin{spfstep} - As $G$ is \termref[cd=balanced-binary-trees,name=balanced-binary-tree]{balanced} and $\gdepth{G}=n>i$, $\livar{V}{i-1}$ cannot contain - leaves. - \end{spfstep} - \begin{spfstep}[type=conclusion] - Thus $\eq{\card{\livar{V}i},{\atimes[cdot]{2,\card{\livar{V}{i-1}}}},{\atimes[cdot]{2,\power2{i-1}}},\power2i}$. - \end{spfstep} - \end{spfcase} - \end{spfcases} - \end{sproof} - \item - \begin{assertion}[id=fbbt,type=corollary] - A fully balanced tree of depth $d$ has $\power2{d+1}-1$ nodes. - \end{assertion} - \item - \begin{sproof}[for=fbbt,id=fbbt-pf]{} - \begin{spfstep} - Let $\defeq{G}{\tup{V,E}}$ be a fully balanced tree - \end{spfstep} - \begin{spfstep} - Then $\card{V}=\Sumfromto{i}1d{\power2i}= \power2{d+1}-1$. - \end{spfstep} - \end{sproof} - \end{itemize} - \end{frame} -\begin{note} - \begin{omtext}[type=conclusion,for=binary-tree] - This shows that balanced binary trees grow in breadth very quickly, a consequence of - this is that they are very shallow (and this compute very fast), which is the essence of - the next result. - \end{omtext} -\end{note} -\end{module} - -%%% Local Variables: -%%% mode: LaTeX -%%% TeX-master: "all" -%%% End: \end{document} -</textarea></form> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), {}); - </script> - - <p><strong>MIME types defined:</strong> <code>text/x-stex</code>.</p> - - <p><strong>Parsing/Highlighting Tests:</strong> <a href="../../test/index.html#stex_*">normal</a>, <a href="../../test/index.html#verbose,stex_*">verbose</a>.</p> - - </article> diff --git a/assets/js/plugins/codemirror/mode/stex/stex.js b/assets/js/plugins/codemirror/mode/stex/stex.js deleted file mode 100644 index 14f6fcc3..00000000 --- a/assets/js/plugins/codemirror/mode/stex/stex.js +++ /dev/null @@ -1,262 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/* - * Author: Constantin Jucovschi (c.jucovschi@jacobs-university.de) - * Licence: MIT - */ - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("stex", function() { - "use strict"; - - function pushCommand(state, command) { - state.cmdState.push(command); - } - - function peekCommand(state) { - if (state.cmdState.length > 0) { - return state.cmdState[state.cmdState.length - 1]; - } else { - return null; - } - } - - function popCommand(state) { - var plug = state.cmdState.pop(); - if (plug) { - plug.closeBracket(); - } - } - - // returns the non-default plugin closest to the end of the list - function getMostPowerful(state) { - var context = state.cmdState; - for (var i = context.length - 1; i >= 0; i--) { - var plug = context[i]; - if (plug.name == "DEFAULT") { - continue; - } - return plug; - } - return { styleIdentifier: function() { return null; } }; - } - - function addPluginPattern(pluginName, cmdStyle, styles) { - return function () { - this.name = pluginName; - this.bracketNo = 0; - this.style = cmdStyle; - this.styles = styles; - this.argument = null; // \begin and \end have arguments that follow. These are stored in the plugin - - this.styleIdentifier = function() { - return this.styles[this.bracketNo - 1] || null; - }; - this.openBracket = function() { - this.bracketNo++; - return "bracket"; - }; - this.closeBracket = function() {}; - }; - } - - var plugins = {}; - - plugins["importmodule"] = addPluginPattern("importmodule", "tag", ["string", "builtin"]); - plugins["documentclass"] = addPluginPattern("documentclass", "tag", ["", "atom"]); - plugins["usepackage"] = addPluginPattern("usepackage", "tag", ["atom"]); - plugins["begin"] = addPluginPattern("begin", "tag", ["atom"]); - plugins["end"] = addPluginPattern("end", "tag", ["atom"]); - - plugins["DEFAULT"] = function () { - this.name = "DEFAULT"; - this.style = "tag"; - - this.styleIdentifier = this.openBracket = this.closeBracket = function() {}; - }; - - function setState(state, f) { - state.f = f; - } - - // called when in a normal (no environment) context - function normal(source, state) { - var plug; - // Do we look like '\command' ? If so, attempt to apply the plugin 'command' - if (source.match(/^\\[a-zA-Z@]+/)) { - var cmdName = source.current().slice(1); - plug = plugins[cmdName] || plugins["DEFAULT"]; - plug = new plug(); - pushCommand(state, plug); - setState(state, beginParams); - return plug.style; - } - - // escape characters - if (source.match(/^\\[$&%#{}_]/)) { - return "tag"; - } - - // white space control characters - if (source.match(/^\\[,;!\/\\]/)) { - return "tag"; - } - - // find if we're starting various math modes - if (source.match("\\[")) { - setState(state, function(source, state){ return inMathMode(source, state, "\\]"); }); - return "keyword"; - } - if (source.match("$$")) { - setState(state, function(source, state){ return inMathMode(source, state, "$$"); }); - return "keyword"; - } - if (source.match("$")) { - setState(state, function(source, state){ return inMathMode(source, state, "$"); }); - return "keyword"; - } - - var ch = source.next(); - if (ch == "%") { - // special case: % at end of its own line; stay in same state - if (!source.eol()) { - setState(state, inCComment); - } - return "comment"; - } - else if (ch == '}' || ch == ']') { - plug = peekCommand(state); - if (plug) { - plug.closeBracket(ch); - setState(state, beginParams); - } else { - return "error"; - } - return "bracket"; - } else if (ch == '{' || ch == '[') { - plug = plugins["DEFAULT"]; - plug = new plug(); - pushCommand(state, plug); - return "bracket"; - } - else if (/\d/.test(ch)) { - source.eatWhile(/[\w.%]/); - return "atom"; - } - else { - source.eatWhile(/[\w\-_]/); - plug = getMostPowerful(state); - if (plug.name == 'begin') { - plug.argument = source.current(); - } - return plug.styleIdentifier(); - } - } - - function inCComment(source, state) { - source.skipToEnd(); - setState(state, normal); - return "comment"; - } - - function inMathMode(source, state, endModeSeq) { - if (source.eatSpace()) { - return null; - } - if (source.match(endModeSeq)) { - setState(state, normal); - return "keyword"; - } - if (source.match(/^\\[a-zA-Z@]+/)) { - return "tag"; - } - if (source.match(/^[a-zA-Z]+/)) { - return "variable-2"; - } - // escape characters - if (source.match(/^\\[$&%#{}_]/)) { - return "tag"; - } - // white space control characters - if (source.match(/^\\[,;!\/]/)) { - return "tag"; - } - // special math-mode characters - if (source.match(/^[\^_&]/)) { - return "tag"; - } - // non-special characters - if (source.match(/^[+\-<>|=,\/@!*:;'"`~#?]/)) { - return null; - } - if (source.match(/^(\d+\.\d*|\d*\.\d+|\d+)/)) { - return "number"; - } - var ch = source.next(); - if (ch == "{" || ch == "}" || ch == "[" || ch == "]" || ch == "(" || ch == ")") { - return "bracket"; - } - - // eat comments here, because inCComment returns us to normal state! - if (ch == "%") { - if (!source.eol()) { - source.skipToEnd(); - } - return "comment"; - } - return "error"; - } - - function beginParams(source, state) { - var ch = source.peek(), lastPlug; - if (ch == '{' || ch == '[') { - lastPlug = peekCommand(state); - lastPlug.openBracket(ch); - source.eat(ch); - setState(state, normal); - return "bracket"; - } - if (/[ \t\r]/.test(ch)) { - source.eat(ch); - return null; - } - setState(state, normal); - popCommand(state); - - return normal(source, state); - } - - return { - startState: function() { - return { - cmdState: [], - f: normal - }; - }, - copyState: function(s) { - return { - cmdState: s.cmdState.slice(), - f: s.f - }; - }, - token: function(stream, state) { - return state.f(stream, state); - }, - lineComment: "%" - }; -}); - -CodeMirror.defineMIME("text/x-stex", "stex"); -CodeMirror.defineMIME("text/x-latex", "stex"); - -}); diff --git a/assets/js/plugins/codemirror/mode/stex/test.js b/assets/js/plugins/codemirror/mode/stex/test.js deleted file mode 100644 index 22f027ec..00000000 --- a/assets/js/plugins/codemirror/mode/stex/test.js +++ /dev/null @@ -1,123 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - var mode = CodeMirror.getMode({tabSize: 4}, "stex"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - - MT("word", - "foo"); - - MT("twoWords", - "foo bar"); - - MT("beginEndDocument", - "[tag \\begin][bracket {][atom document][bracket }]", - "[tag \\end][bracket {][atom document][bracket }]"); - - MT("beginEndEquation", - "[tag \\begin][bracket {][atom equation][bracket }]", - " E=mc^2", - "[tag \\end][bracket {][atom equation][bracket }]"); - - MT("beginModule", - "[tag \\begin][bracket {][atom module][bracket }[[]]]"); - - MT("beginModuleId", - "[tag \\begin][bracket {][atom module][bracket }[[]id=bbt-size[bracket ]]]"); - - MT("importModule", - "[tag \\importmodule][bracket [[][string b-b-t][bracket ]]{][builtin b-b-t][bracket }]"); - - MT("importModulePath", - "[tag \\importmodule][bracket [[][tag \\KWARCslides][bracket {][string dmath/en/cardinality][bracket }]]{][builtin card][bracket }]"); - - MT("psForPDF", - "[tag \\PSforPDF][bracket [[][atom 1][bracket ]]{]#1[bracket }]"); - - MT("comment", - "[comment % foo]"); - - MT("tagComment", - "[tag \\item][comment % bar]"); - - MT("commentTag", - " [comment % \\item]"); - - MT("commentLineBreak", - "[comment %]", - "foo"); - - MT("tagErrorCurly", - "[tag \\begin][error }][bracket {]"); - - MT("tagErrorSquare", - "[tag \\item][error ]]][bracket {]"); - - MT("commentCurly", - "[comment % }]"); - - MT("tagHash", - "the [tag \\#] key"); - - MT("tagNumber", - "a [tag \\$][atom 5] stetson"); - - MT("tagPercent", - "[atom 100][tag \\%] beef"); - - MT("tagAmpersand", - "L [tag \\&] N"); - - MT("tagUnderscore", - "foo[tag \\_]bar"); - - MT("tagBracketOpen", - "[tag \\emph][bracket {][tag \\{][bracket }]"); - - MT("tagBracketClose", - "[tag \\emph][bracket {][tag \\}][bracket }]"); - - MT("tagLetterNumber", - "section [tag \\S][atom 1]"); - - MT("textTagNumber", - "para [tag \\P][atom 2]"); - - MT("thinspace", - "x[tag \\,]y"); - - MT("thickspace", - "x[tag \\;]y"); - - MT("negativeThinspace", - "x[tag \\!]y"); - - MT("periodNotSentence", - "J.\\ L.\\ is"); - - MT("periodSentence", - "X[tag \\@]. The"); - - MT("italicCorrection", - "[bracket {][tag \\em] If[tag \\/][bracket }] I"); - - MT("tagBracket", - "[tag \\newcommand][bracket {][tag \\pop][bracket }]"); - - MT("inlineMathTagFollowedByNumber", - "[keyword $][tag \\pi][number 2][keyword $]"); - - MT("inlineMath", - "[keyword $][number 3][variable-2 x][tag ^][number 2.45]-[tag \\sqrt][bracket {][tag \\$\\alpha][bracket }] = [number 2][keyword $] other text"); - - MT("displayMath", - "More [keyword $$]\t[variable-2 S][tag ^][variable-2 n][tag \\sum] [variable-2 i][keyword $$] other text"); - - MT("mathWithComment", - "[keyword $][variable-2 x] [comment % $]", - "[variable-2 y][keyword $] other text"); - - MT("lineBreakArgument", - "[tag \\\\][bracket [[][atom 1cm][bracket ]]]"); -})(); diff --git a/assets/js/plugins/codemirror/mode/tcl/index.html b/assets/js/plugins/codemirror/mode/tcl/index.html deleted file mode 100644 index ce4ad342..00000000 --- a/assets/js/plugins/codemirror/mode/tcl/index.html +++ /dev/null @@ -1,142 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Tcl mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<link rel="stylesheet" href="../../theme/night.css"> -<script src="../../lib/codemirror.js"></script> -<script src="tcl.js"></script> -<script src="../../addon/scroll/scrollpastend.js"></script> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Tcl</a> - </ul> -</div> - -<article> -<h2>Tcl mode</h2> -<form><textarea id="code" name="code"> -############################################################################################## -## ## whois.tcl for eggdrop by Ford_Lawnmower irc.geekshed.net #Script-Help ## ## -############################################################################################## -## To use this script you must set channel flag +whois (ie .chanset #chan +whois) ## -############################################################################################## -## ____ __ ########################################### ## -## / __/___ _ ___ _ ___/ /____ ___ ___ ########################################### ## -## / _/ / _ `// _ `// _ // __// _ \ / _ \ ########################################### ## -## /___/ \_, / \_, / \_,_//_/ \___// .__/ ########################################### ## -## /___/ /___/ /_/ ########################################### ## -## ########################################### ## -############################################################################################## -## ## Start Setup. ## ## -############################################################################################## -namespace eval whois { -## change cmdchar to the trigger you want to use ## ## - variable cmdchar "!" -## change command to the word trigger you would like to use. ## ## -## Keep in mind, This will also change the .chanset +/-command ## ## - variable command "whois" -## change textf to the colors you want for the text. ## ## - variable textf "\017\00304" -## change tagf to the colors you want for tags: ## ## - variable tagf "\017\002" -## Change logo to the logo you want at the start of the line. ## ## - variable logo "\017\00304\002\[\00306W\003hois\00304\]\017" -## Change lineout to the results you want. Valid results are channel users modes topic ## ## - variable lineout "channel users modes topic" -############################################################################################## -## ## End Setup. ## ## -############################################################################################## - variable channel "" - setudef flag $whois::command - bind pub -|- [string trimleft $whois::cmdchar]${whois::command} whois::list - bind raw -|- "311" whois::311 - bind raw -|- "312" whois::312 - bind raw -|- "319" whois::319 - bind raw -|- "317" whois::317 - bind raw -|- "313" whois::multi - bind raw -|- "310" whois::multi - bind raw -|- "335" whois::multi - bind raw -|- "301" whois::301 - bind raw -|- "671" whois::multi - bind raw -|- "320" whois::multi - bind raw -|- "401" whois::multi - bind raw -|- "318" whois::318 - bind raw -|- "307" whois::307 -} -proc whois::311 {from key text} { - if {[regexp -- {^[^\s]+\s(.+?)\s(.+?)\s(.+?)\s\*\s\:(.+)$} $text wholematch nick ident host realname]} { - putserv "PRIVMSG $whois::channel :${whois::logo} ${whois::tagf}Host:${whois::textf} \ - $nick \(${ident}@${host}\) ${whois::tagf}Realname:${whois::textf} $realname" - } -} -proc whois::multi {from key text} { - if {[regexp {\:(.*)$} $text match $key]} { - putserv "PRIVMSG $whois::channel :${whois::logo} ${whois::tagf}Note:${whois::textf} [subst $$key]" - return 1 - } -} -proc whois::312 {from key text} { - regexp {([^\s]+)\s\:} $text match server - putserv "PRIVMSG $whois::channel :${whois::logo} ${whois::tagf}Server:${whois::textf} $server" -} -proc whois::319 {from key text} { - if {[regexp {.+\:(.+)$} $text match channels]} { - putserv "PRIVMSG $whois::channel :${whois::logo} ${whois::tagf}Channels:${whois::textf} $channels" - } -} -proc whois::317 {from key text} { - if {[regexp -- {.*\s(\d+)\s(\d+)\s\:} $text wholematch idle signon]} { - putserv "PRIVMSG $whois::channel :${whois::logo} ${whois::tagf}Connected:${whois::textf} \ - [ctime $signon] ${whois::tagf}Idle:${whois::textf} [duration $idle]" - } -} -proc whois::301 {from key text} { - if {[regexp {^.+\s[^\s]+\s\:(.*)$} $text match awaymsg]} { - putserv "PRIVMSG $whois::channel :${whois::logo} ${whois::tagf}Away:${whois::textf} $awaymsg" - } -} -proc whois::318 {from key text} { - namespace eval whois { - variable channel "" - } - variable whois::channel "" -} -proc whois::307 {from key text} { - putserv "PRIVMSG $whois::channel :${whois::logo} ${whois::tagf}Services:${whois::textf} Registered Nick" -} -proc whois::list {nick host hand chan text} { - if {[lsearch -exact [channel info $chan] "+${whois::command}"] != -1} { - namespace eval whois { - variable channel "" - } - variable whois::channel $chan - putserv "WHOIS $text" - } -} -putlog "\002*Loaded* \017\00304\002\[\00306W\003hois\00304\]\017 \002by \ -Ford_Lawnmower irc.GeekShed.net #Script-Help" -</textarea></form> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - theme: "night", - lineNumbers: true, - indentUnit: 2, - scrollPastEnd: true, - mode: "text/x-tcl" - }); - </script> - - <p><strong>MIME types defined:</strong> <code>text/x-tcl</code>.</p> - - </article> diff --git a/assets/js/plugins/codemirror/mode/tcl/tcl.js b/assets/js/plugins/codemirror/mode/tcl/tcl.js deleted file mode 100644 index 056accb2..00000000 --- a/assets/js/plugins/codemirror/mode/tcl/tcl.js +++ /dev/null @@ -1,147 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -//tcl mode by Ford_Lawnmower :: Based on Velocity mode by Steve O'Hara - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("tcl", function() { - function parseWords(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - var keywords = parseWords("Tcl safe after append array auto_execok auto_import auto_load " + - "auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror " + - "binary break catch cd close concat continue dde eof encoding error " + - "eval exec exit expr fblocked fconfigure fcopy file fileevent filename " + - "filename flush for foreach format gets glob global history http if " + - "incr info interp join lappend lindex linsert list llength load lrange " + - "lreplace lsearch lset lsort memory msgcat namespace open package parray " + - "pid pkg::create pkg_mkIndex proc puts pwd re_syntax read regex regexp " + - "registry regsub rename resource return scan seek set socket source split " + - "string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord " + - "tcl_wordBreakAfter tcl_startOfPreviousWord tcl_wordBreakBefore tcltest " + - "tclvars tell time trace unknown unset update uplevel upvar variable " + - "vwait"); - var functions = parseWords("if elseif else and not or eq ne in ni for foreach while switch"); - var isOperatorChar = /[+\-*&%=<>!?^\/\|]/; - function chain(stream, state, f) { - state.tokenize = f; - return f(stream, state); - } - function tokenBase(stream, state) { - var beforeParams = state.beforeParams; - state.beforeParams = false; - var ch = stream.next(); - if ((ch == '"' || ch == "'") && state.inParams) - return chain(stream, state, tokenString(ch)); - else if (/[\[\]{}\(\),;\.]/.test(ch)) { - if (ch == "(" && beforeParams) state.inParams = true; - else if (ch == ")") state.inParams = false; - return null; - } - else if (/\d/.test(ch)) { - stream.eatWhile(/[\w\.]/); - return "number"; - } - else if (ch == "#" && stream.eat("*")) { - return chain(stream, state, tokenComment); - } - else if (ch == "#" && stream.match(/ *\[ *\[/)) { - return chain(stream, state, tokenUnparsed); - } - else if (ch == "#" && stream.eat("#")) { - stream.skipToEnd(); - return "comment"; - } - else if (ch == '"') { - stream.skipTo(/"/); - return "comment"; - } - else if (ch == "$") { - stream.eatWhile(/[$_a-z0-9A-Z\.{:]/); - stream.eatWhile(/}/); - state.beforeParams = true; - return "builtin"; - } - else if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return "comment"; - } - else { - stream.eatWhile(/[\w\$_{}\xa1-\uffff]/); - var word = stream.current().toLowerCase(); - if (keywords && keywords.propertyIsEnumerable(word)) - return "keyword"; - if (functions && functions.propertyIsEnumerable(word)) { - state.beforeParams = true; - return "keyword"; - } - return null; - } - } - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next, end = false; - while ((next = stream.next()) != null) { - if (next == quote && !escaped) { - end = true; - break; - } - escaped = !escaped && next == "\\"; - } - if (end) state.tokenize = tokenBase; - return "string"; - }; - } - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "#" && maybeEnd) { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - function tokenUnparsed(stream, state) { - var maybeEnd = 0, ch; - while (ch = stream.next()) { - if (ch == "#" && maybeEnd == 2) { - state.tokenize = tokenBase; - break; - } - if (ch == "]") - maybeEnd++; - else if (ch != " ") - maybeEnd = 0; - } - return "meta"; - } - return { - startState: function() { - return { - tokenize: tokenBase, - beforeParams: false, - inParams: false - }; - }, - token: function(stream, state) { - if (stream.eatSpace()) return null; - return state.tokenize(stream, state); - } - }; -}); -CodeMirror.defineMIME("text/x-tcl", "tcl"); - -}); diff --git a/assets/js/plugins/codemirror/mode/textile/index.html b/assets/js/plugins/codemirror/mode/textile/index.html deleted file mode 100644 index 42b156b1..00000000 --- a/assets/js/plugins/codemirror/mode/textile/index.html +++ /dev/null @@ -1,191 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Textile mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="textile.js"></script> -<style>.CodeMirror {background: #f8f8f8;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/marijnh/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class="active" href="#">Textile</a> - </ul> -</div> - -<article> - <h2>Textile mode</h2> - <form><textarea id="code" name="code"> -h1. Textile Mode - -A paragraph without formatting. - -p. A simple Paragraph. - - -h2. Phrase Modifiers - -Here are some simple phrase modifiers: *strong*, _emphasis_, **bold**, and __italic__. - -A ??citation??, -deleted text-, +inserted text+, some ^superscript^, and some ~subscript~. - -A %span element% and @code element@ - -A "link":http://example.com, a "link with (alt text)":urlAlias - -[urlAlias]http://example.com/ - -An image: !http://example.com/image.png! and an image with a link: !http://example.com/image.png!:http://example.com - -A sentence with a footnote.[123] - -fn123. The footnote is defined here. - -Registered(r), Trademark(tm), and Copyright(c) - - -h2. Headers - -h1. Top level -h2. Second level -h3. Third level -h4. Fourth level -h5. Fifth level -h6. Lowest level - - -h2. Lists - -* An unordered list -** foo bar -*** foo bar -**** foo bar -** foo bar - -# An ordered list -## foo bar -### foo bar -#### foo bar -## foo bar - -- definition list := description -- another item := foo bar -- spanning ines := - foo bar - - foo bar =: - - -h2. Attributes - -Layouts and phrase modifiers can be modified with various kinds of attributes: alignment, CSS ID, CSS class names, language, padding, and CSS styles. - -h3. Alignment - -div<. left align -div>. right align - -h3. CSS ID and class name - -You are a %(my-id#my-classname) rad% person. - -h3. Language - -p[en_CA]. Strange weather, eh? - -h3. Horizontal Padding - -p(())). 2em left padding, 3em right padding - -h3. CSS styling - -p{background: red}. Fire! - - -h2. Table - -|_. Header 1 |_. Header 2 | -|{background:#ddd}. Cell with background| Normal | -|\2. Cell spanning 2 columns | -|/2. Cell spanning 2 rows |(cell-class). one | -| two | -|>. Right aligned cell |<. Left aligned cell | - - -h3. A table with attributes: - -table(#prices). -|Adults|$5| -|Children|$2| - - -h2. Code blocks - -bc. -function factorial(n) { - if (n === 0) { - return 1; - } - return n * factorial(n - 1); -} - -pre.. - ,,,,,, - o#'9MMHb':'-,o, - .oH":HH$' "' ' -*R&o, - dMMM*""'`' .oM"HM?. - ,MMM' "HLbd< ?&H\ - .:MH ."\ ` MM MM&b - . "*H - &MMMMMMMMMH: - . dboo MMMMMMMMMMMM. - . dMMMMMMb *MMMMMMMMMP. - . MMMMMMMP *MMMMMP . - `#MMMMM MM6P , - ' `MMMP" HM*`, - ' :MM .- , - '. `#?.. . ..' - -. . .- - ''-.oo,oo.-'' - -\. _(9> - \==_) - -'= - -h2. Temporarily disabling textile markup - -notextile. Don't __touch this!__ - -Surround text with double-equals to disable textile inline. Example: Use ==*asterisks*== for *strong* text. - - -h2. HTML - -Some block layouts are simply textile versions of HTML tags with the same name, like @div@, @pre@, and @p@. HTML tags can also exist on their own line: - -<section> - <h1>Title</h1> - <p>Hello!</p> -</section> - -</textarea></form> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers: true, - mode: "text/x-textile" - }); - </script> - - <p><strong>MIME types defined:</strong> <code>text/x-textile</code>.</p> - - <p><strong>Parsing/Highlighting Tests:</strong> <a href="../../test/index.html#textile_*">normal</a>, <a href="../../test/index.html#verbose,textile_*">verbose</a>.</p> - -</article> diff --git a/assets/js/plugins/codemirror/mode/textile/test.js b/assets/js/plugins/codemirror/mode/textile/test.js deleted file mode 100644 index 206ff57e..00000000 --- a/assets/js/plugins/codemirror/mode/textile/test.js +++ /dev/null @@ -1,406 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - var mode = CodeMirror.getMode({tabSize: 4}, 'textile'); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - - MT('simpleParagraphs', - 'Some text.', - '', - 'Some more text.'); - - /* - * Phrase Modifiers - */ - - MT('em', - 'foo [em _bar_]'); - - MT('emBoogus', - 'code_mirror'); - - MT('strong', - 'foo [strong *bar*]'); - - MT('strongBogus', - '3 * 3 = 9'); - - MT('italic', - 'foo [em __bar__]'); - - MT('italicBogus', - 'code__mirror'); - - MT('bold', - 'foo [strong **bar**]'); - - MT('boldBogus', - '3 ** 3 = 27'); - - MT('simpleLink', - '[link "CodeMirror":http://codemirror.net]'); - - MT('referenceLink', - '[link "CodeMirror":code_mirror]', - 'Normal Text.', - '[link [[code_mirror]]http://codemirror.net]'); - - MT('footCite', - 'foo bar[qualifier [[1]]]'); - - MT('footCiteBogus', - 'foo bar[[1a2]]'); - - MT('special-characters', - 'Registered [tag (r)], ' + - 'Trademark [tag (tm)], and ' + - 'Copyright [tag (c)] 2008'); - - MT('cite', - "A book is [keyword ??The Count of Monte Cristo??] by Dumas."); - - MT('additionAndDeletion', - 'The news networks declared [negative -Al Gore-] ' + - '[positive +George W. Bush+] the winner in Florida.'); - - MT('subAndSup', - 'f(x, n) = log [builtin ~4~] x [builtin ^n^]'); - - MT('spanAndCode', - 'A [quote %span element%] and [atom @code element@]'); - - MT('spanBogus', - 'Percentage 25% is not a span.'); - - MT('citeBogus', - 'Question? is not a citation.'); - - MT('codeBogus', - 'user@example.com'); - - MT('subBogus', - '~username'); - - MT('supBogus', - 'foo ^ bar'); - - MT('deletionBogus', - '3 - 3 = 0'); - - MT('additionBogus', - '3 + 3 = 6'); - - MT('image', - 'An image: [string !http://www.example.com/image.png!]'); - - MT('imageWithAltText', - 'An image: [string !http://www.example.com/image.png (Alt Text)!]'); - - MT('imageWithUrl', - 'An image: [string !http://www.example.com/image.png!:http://www.example.com/]'); - - /* - * Headers - */ - - MT('h1', - '[header&header-1 h1. foo]'); - - MT('h2', - '[header&header-2 h2. foo]'); - - MT('h3', - '[header&header-3 h3. foo]'); - - MT('h4', - '[header&header-4 h4. foo]'); - - MT('h5', - '[header&header-5 h5. foo]'); - - MT('h6', - '[header&header-6 h6. foo]'); - - MT('h7Bogus', - 'h7. foo'); - - MT('multipleHeaders', - '[header&header-1 h1. Heading 1]', - '', - 'Some text.', - '', - '[header&header-2 h2. Heading 2]', - '', - 'More text.'); - - MT('h1inline', - '[header&header-1 h1. foo ][header&header-1&em _bar_][header&header-1 baz]'); - - /* - * Lists - */ - - MT('ul', - 'foo', - 'bar', - '', - '[variable-2 * foo]', - '[variable-2 * bar]'); - - MT('ulNoBlank', - 'foo', - 'bar', - '[variable-2 * foo]', - '[variable-2 * bar]'); - - MT('ol', - 'foo', - 'bar', - '', - '[variable-2 # foo]', - '[variable-2 # bar]'); - - MT('olNoBlank', - 'foo', - 'bar', - '[variable-2 # foo]', - '[variable-2 # bar]'); - - MT('ulFormatting', - '[variable-2 * ][variable-2&em _foo_][variable-2 bar]', - '[variable-2 * ][variable-2&strong *][variable-2&em&strong _foo_]' + - '[variable-2&strong *][variable-2 bar]', - '[variable-2 * ][variable-2&strong *foo*][variable-2 bar]'); - - MT('olFormatting', - '[variable-2 # ][variable-2&em _foo_][variable-2 bar]', - '[variable-2 # ][variable-2&strong *][variable-2&em&strong _foo_]' + - '[variable-2&strong *][variable-2 bar]', - '[variable-2 # ][variable-2&strong *foo*][variable-2 bar]'); - - MT('ulNested', - '[variable-2 * foo]', - '[variable-3 ** bar]', - '[keyword *** bar]', - '[variable-2 **** bar]', - '[variable-3 ** bar]'); - - MT('olNested', - '[variable-2 # foo]', - '[variable-3 ## bar]', - '[keyword ### bar]', - '[variable-2 #### bar]', - '[variable-3 ## bar]'); - - MT('ulNestedWithOl', - '[variable-2 * foo]', - '[variable-3 ## bar]', - '[keyword *** bar]', - '[variable-2 #### bar]', - '[variable-3 ** bar]'); - - MT('olNestedWithUl', - '[variable-2 # foo]', - '[variable-3 ** bar]', - '[keyword ### bar]', - '[variable-2 **** bar]', - '[variable-3 ## bar]'); - - MT('definitionList', - '[number - coffee := Hot ][number&em _and_][number black]', - '', - 'Normal text.'); - - MT('definitionListSpan', - '[number - coffee :=]', - '', - '[number Hot ][number&em _and_][number black =:]', - '', - 'Normal text.'); - - MT('boo', - '[number - dog := woof woof]', - '[number - cat := meow meow]', - '[number - whale :=]', - '[number Whale noises.]', - '', - '[number Also, ][number&em _splashing_][number . =:]'); - - /* - * Attributes - */ - - MT('divWithAttribute', - '[punctuation div][punctuation&attribute (#my-id)][punctuation . foo bar]'); - - MT('divWithAttributeAnd2emRightPadding', - '[punctuation div][punctuation&attribute (#my-id)((][punctuation . foo bar]'); - - MT('divWithClassAndId', - '[punctuation div][punctuation&attribute (my-class#my-id)][punctuation . foo bar]'); - - MT('paragraphWithCss', - 'p[attribute {color:red;}]. foo bar'); - - MT('paragraphNestedStyles', - 'p. [strong *foo ][strong&em _bar_][strong *]'); - - MT('paragraphWithLanguage', - 'p[attribute [[fr]]]. Parlez-vous français?'); - - MT('paragraphLeftAlign', - 'p[attribute <]. Left'); - - MT('paragraphRightAlign', - 'p[attribute >]. Right'); - - MT('paragraphRightAlign', - 'p[attribute =]. Center'); - - MT('paragraphJustified', - 'p[attribute <>]. Justified'); - - MT('paragraphWithLeftIndent1em', - 'p[attribute (]. Left'); - - MT('paragraphWithRightIndent1em', - 'p[attribute )]. Right'); - - MT('paragraphWithLeftIndent2em', - 'p[attribute ((]. Left'); - - MT('paragraphWithRightIndent2em', - 'p[attribute ))]. Right'); - - MT('paragraphWithLeftIndent3emRightIndent2em', - 'p[attribute ((())]. Right'); - - MT('divFormatting', - '[punctuation div. ][punctuation&strong *foo ]' + - '[punctuation&strong&em _bar_][punctuation&strong *]'); - - MT('phraseModifierAttributes', - 'p[attribute (my-class)]. This is a paragraph that has a class and' + - ' this [em _][em&attribute (#special-phrase)][em emphasized phrase_]' + - ' has an id.'); - - MT('linkWithClass', - '[link "(my-class). This is a link with class":http://redcloth.org]'); - - /* - * Layouts - */ - - MT('paragraphLayouts', - 'p. This is one paragraph.', - '', - 'p. This is another.'); - - MT('div', - '[punctuation div. foo bar]'); - - MT('pre', - '[operator pre. Text]'); - - MT('bq.', - '[bracket bq. foo bar]', - '', - 'Normal text.'); - - MT('footnote', - '[variable fn123. foo ][variable&strong *bar*]'); - - /* - * Spanning Layouts - */ - - MT('bq..ThenParagraph', - '[bracket bq.. foo bar]', - '', - '[bracket More quote.]', - 'p. Normal Text'); - - MT('bq..ThenH1', - '[bracket bq.. foo bar]', - '', - '[bracket More quote.]', - '[header&header-1 h1. Header Text]'); - - MT('bc..ThenParagraph', - '[atom bc.. # Some ruby code]', - '[atom obj = {foo: :bar}]', - '[atom puts obj]', - '', - '[atom obj[[:love]] = "*love*"]', - '[atom puts obj.love.upcase]', - '', - 'p. Normal text.'); - - MT('fn1..ThenParagraph', - '[variable fn1.. foo bar]', - '', - '[variable More.]', - 'p. Normal Text'); - - MT('pre..ThenParagraph', - '[operator pre.. foo bar]', - '', - '[operator More.]', - 'p. Normal Text'); - - /* - * Tables - */ - - MT('table', - '[variable-3&operator |_. name |_. age|]', - '[variable-3 |][variable-3&strong *Walter*][variable-3 | 5 |]', - '[variable-3 |Florence| 6 |]', - '', - 'p. Normal text.'); - - MT('tableWithAttributes', - '[variable-3&operator |_. name |_. age|]', - '[variable-3 |][variable-3&attribute /2.][variable-3 Jim |]', - '[variable-3 |][variable-3&attribute \\2{color: red}.][variable-3 Sam |]'); - - /* - * HTML - */ - - MT('html', - '[comment <div id="wrapper">]', - '[comment <section id="introduction">]', - '', - '[header&header-1 h1. Welcome]', - '', - '[variable-2 * Item one]', - '[variable-2 * Item two]', - '', - '[comment <a href="http://example.com">Example</a>]', - '', - '[comment </section>]', - '[comment </div>]'); - - MT('inlineHtml', - 'I can use HTML directly in my [comment <span class="youbetcha">Textile</span>].'); - - /* - * No-Textile - */ - - MT('notextile', - '[string-2 notextile. *No* formatting]'); - - MT('notextileInline', - 'Use [string-2 ==*asterisks*==] for [strong *strong*] text.'); - - MT('notextileWithPre', - '[operator pre. *No* formatting]'); - - MT('notextileWithSpanningPre', - '[operator pre.. *No* formatting]', - '', - '[operator *No* formatting]'); -})(); diff --git a/assets/js/plugins/codemirror/mode/textile/textile.js b/assets/js/plugins/codemirror/mode/textile/textile.js deleted file mode 100644 index b1511a56..00000000 --- a/assets/js/plugins/codemirror/mode/textile/textile.js +++ /dev/null @@ -1,553 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == 'object' && typeof module == 'object') { // CommonJS - mod(require('../../lib/codemirror')); - } else if (typeof define == 'function' && define.amd) { // AMD - define(['../../lib/codemirror'], mod); - } else { // Plain browser env - mod(CodeMirror); - } -})(function(CodeMirror) { -'use strict'; - -var TOKEN_STYLES = { - addition: 'positive', - attributes: 'attribute', - bold: 'strong', - cite: 'keyword', - code: 'atom', - definitionList: 'number', - deletion: 'negative', - div: 'punctuation', - em: 'em', - footnote: 'variable', - footCite: 'qualifier', - header: 'header', - html: 'comment', - image: 'string', - italic: 'em', - link: 'link', - linkDefinition: 'link', - list1: 'variable-2', - list2: 'variable-3', - list3: 'keyword', - notextile: 'string-2', - pre: 'operator', - p: 'property', - quote: 'bracket', - span: 'quote', - specialChar: 'tag', - strong: 'strong', - sub: 'builtin', - sup: 'builtin', - table: 'variable-3', - tableHeading: 'operator' -}; - -function Parser(regExpFactory, state, stream) { - this.regExpFactory = regExpFactory; - this.state = state; - this.stream = stream; - this.styles = TOKEN_STYLES; - - this.state.specialChar = null; -} - -Parser.prototype.eat = function(name) { - return this.stream.match(this.regExpFactory.pattern(name), true); -}; - -Parser.prototype.check = function(name) { - return this.stream.match(this.regExpFactory.pattern(name), false); -}; - -Parser.prototype.setModeForNextToken = function(mode) { - return this.state.mode = mode; -}; - -Parser.prototype.execMode = function(newMode) { - return this.setModeForNextToken(newMode).call(this); -}; - -Parser.prototype.startNewLine = function() { - this.setModeForNextToken(Modes.newLayout); - this.state.tableHeading = false; - - if (this.state.layoutType === 'definitionList' && this.state.spanningLayout) { - if (this.check('definitionListEnd')) { - this.state.spanningLayout = false; - } - } -}; - -Parser.prototype.nextToken = function() { - return this.state.mode.call(this); -}; - -Parser.prototype.styleFor = function(token) { - if (this.styles.hasOwnProperty(token)) { - return this.styles[token]; - } - throw 'unknown token'; -}; - -Parser.prototype.handlePhraseModifier = function(ch) { - if (ch === '_') { - if (this.stream.eat('_')) { - return this.togglePhraseModifier('italic', /^.*__/); - } - return this.togglePhraseModifier('em', /^.*_/); - } - - if (ch === '*') { - if (this.stream.eat('*')) { - return this.togglePhraseModifier('bold', /^.*\*\*/); - } - return this.togglePhraseModifier('strong', /^.*\*/); - } - - if (ch === '[') { - if (this.stream.match(/\d+\]/)) { - this.state.footCite = true; - } - return this.tokenStyles(); - } - - if (ch === '(') { - if (this.stream.match('r)')) { - this.state.specialChar = 'r'; - } else if (this.stream.match('tm)')) { - this.state.specialChar = 'tm'; - } else if (this.stream.match('c)')) { - this.state.specialChar = 'c'; - } - return this.tokenStyles(); - } - - if (ch === '<') { - if (this.stream.match(/(\w+)[^>]+>[^<]+<\/\1>/)) { - return this.tokenStylesWith(this.styleFor('html')); - } - } - - if (ch === '?' && this.stream.eat('?')) { - return this.togglePhraseModifier('cite', /^.*\?\?/); - } - if (ch === '=' && this.stream.eat('=')) { - return this.togglePhraseModifier('notextile', /^.*==/); - } - if (ch === '-') { - return this.togglePhraseModifier('deletion', /^.*-/); - } - if (ch === '+') { - return this.togglePhraseModifier('addition', /^.*\+/); - } - if (ch === '~') { - return this.togglePhraseModifier('sub', /^.*~/); - } - if (ch === '^') { - return this.togglePhraseModifier('sup', /^.*\^/); - } - if (ch === '%') { - return this.togglePhraseModifier('span', /^.*%/); - } - if (ch === '@') { - return this.togglePhraseModifier('code', /^.*@/); - } - if (ch === '!') { - var type = this.togglePhraseModifier('image', /^.*(?:\([^\)]+\))?!/); - this.stream.match(/^:\S+/); // optional Url portion - return type; - } - return this.tokenStyles(); -}; - -Parser.prototype.togglePhraseModifier = function(phraseModifier, closeRE) { - if (this.state[phraseModifier]) { // remove phrase modifier - var type = this.tokenStyles(); - this.state[phraseModifier] = false; - return type; - } - if (this.stream.match(closeRE, false)) { // add phrase modifier - this.state[phraseModifier] = true; - this.setModeForNextToken(Modes.attributes); - } - return this.tokenStyles(); -}; - -Parser.prototype.tokenStyles = function() { - var disabled = this.textileDisabled(), - styles = []; - - if (disabled) return disabled; - - if (this.state.layoutType) { - styles.push(this.styleFor(this.state.layoutType)); - } - - styles = styles.concat(this.activeStyles('addition', 'bold', 'cite', 'code', - 'deletion', 'em', 'footCite', 'image', 'italic', 'link', 'span', 'specialChar', 'strong', - 'sub', 'sup', 'table', 'tableHeading')); - - if (this.state.layoutType === 'header') { - styles.push(this.styleFor('header') + '-' + this.state.header); - } - return styles.length ? styles.join(' ') : null; -}; - -Parser.prototype.textileDisabled = function() { - var type = this.state.layoutType; - - switch(type) { - case 'notextile': - case 'code': - case 'pre': - return this.styleFor(type); - default: - if (this.state.notextile) { - return this.styleFor('notextile') + (type ? (' ' + this.styleFor(type)) : ''); - } - - return null; - } -}; - -Parser.prototype.tokenStylesWith = function(extraStyles) { - var disabled = this.textileDisabled(), - type; - - if (disabled) return disabled; - - type = this.tokenStyles(); - if(extraStyles) { - return type ? (type + ' ' + extraStyles) : extraStyles; - } - return type; -}; - -Parser.prototype.activeStyles = function() { - var styles = [], - i; - for (i = 0; i < arguments.length; ++i) { - if (this.state[arguments[i]]) { - styles.push(this.styleFor(arguments[i])); - } - } - return styles; -}; - -Parser.prototype.blankLine = function() { - var spanningLayout = this.state.spanningLayout, - type = this.state.layoutType, - key; - - for (key in this.state) { - if (this.state.hasOwnProperty(key)) { - delete this.state[key]; - } - } - - this.setModeForNextToken(Modes.newLayout); - if (spanningLayout) { - this.state.layoutType = type; - this.state.spanningLayout = true; - } -}; - - -function RegExpFactory() { - this.cache = {}; - this.single = { - bc: 'bc', - bq: 'bq', - definitionList: /- [^(?::=)]+:=+/, - definitionListEnd: /.*=:\s*$/, - div: 'div', - drawTable: /\|.*\|/, - foot: /fn\d+/, - header: /h[1-6]/, - html: /\s*<(?:\/)?(\w+)(?:[^>]+)?>(?:[^<]+<\/\1>)?/, - link: /[^"]+":\S/, - linkDefinition: /\[[^\s\]]+\]\S+/, - list: /(?:#+|\*+)/, - notextile: 'notextile', - para: 'p', - pre: 'pre', - table: 'table', - tableCellAttributes: /[/\\]\d+/, - tableHeading: /\|_\./, - tableText: /[^"_\*\[\(\?\+~\^%@|-]+/, - text: /[^!"_=\*\[\(<\?\+~\^%@-]+/ - }; - this.attributes = { - align: /(?:<>|<|>|=)/, - selector: /\([^\(][^\)]+\)/, - lang: /\[[^\[\]]+\]/, - pad: /(?:\(+|\)+){1,2}/, - css: /\{[^\}]+\}/ - }; -} - -RegExpFactory.prototype.pattern = function(name) { - return (this.cache[name] || this.createRe(name)); -}; - -RegExpFactory.prototype.createRe = function(name) { - switch (name) { - case 'drawTable': - return this.makeRe('^', this.single.drawTable, '$'); - case 'html': - return this.makeRe('^', this.single.html, '(?:', this.single.html, ')*', '$'); - case 'linkDefinition': - return this.makeRe('^', this.single.linkDefinition, '$'); - case 'listLayout': - return this.makeRe('^', this.single.list, this.pattern('allAttributes'), '*\\s+'); - case 'tableCellAttributes': - return this.makeRe('^', this.choiceRe(this.single.tableCellAttributes, - this.pattern('allAttributes')), '+\\.'); - case 'type': - return this.makeRe('^', this.pattern('allTypes')); - case 'typeLayout': - return this.makeRe('^', this.pattern('allTypes'), this.pattern('allAttributes'), - '*\\.\\.?', '(\\s+|$)'); - case 'attributes': - return this.makeRe('^', this.pattern('allAttributes'), '+'); - - case 'allTypes': - return this.choiceRe(this.single.div, this.single.foot, - this.single.header, this.single.bc, this.single.bq, - this.single.notextile, this.single.pre, this.single.table, - this.single.para); - - case 'allAttributes': - return this.choiceRe(this.attributes.selector, this.attributes.css, - this.attributes.lang, this.attributes.align, this.attributes.pad); - - default: - return this.makeRe('^', this.single[name]); - } -}; - - -RegExpFactory.prototype.makeRe = function() { - var pattern = '', - i, - arg; - - for (i = 0; i < arguments.length; ++i) { - arg = arguments[i]; - pattern += (typeof arg === 'string') ? arg : arg.source; - } - return new RegExp(pattern); -}; - -RegExpFactory.prototype.choiceRe = function() { - var parts = [arguments[0]], - i; - - for (i = 1; i < arguments.length; ++i) { - parts[i * 2 - 1] = '|'; - parts[i * 2] = arguments[i]; - } - - parts.unshift('(?:'); - parts.push(')'); - return this.makeRe.apply(this, parts); -}; - - -var Modes = { - newLayout: function() { - if (this.check('typeLayout')) { - this.state.spanningLayout = false; - return this.execMode(Modes.blockType); - } - if (!this.textileDisabled()) { - if (this.check('listLayout')) { - return this.execMode(Modes.list); - } else if (this.check('drawTable')) { - return this.execMode(Modes.table); - } else if (this.check('linkDefinition')) { - return this.execMode(Modes.linkDefinition); - } else if (this.check('definitionList')) { - return this.execMode(Modes.definitionList); - } else if (this.check('html')) { - return this.execMode(Modes.html); - } - } - return this.execMode(Modes.text); - }, - - blockType: function() { - var match, - type; - this.state.layoutType = null; - - if (match = this.eat('type')) { - type = match[0]; - } else { - return this.execMode(Modes.text); - } - - if(match = type.match(this.regExpFactory.pattern('header'))) { - this.state.layoutType = 'header'; - this.state.header = parseInt(match[0][1]); - } else if (type.match(this.regExpFactory.pattern('bq'))) { - this.state.layoutType = 'quote'; - } else if (type.match(this.regExpFactory.pattern('bc'))) { - this.state.layoutType = 'code'; - } else if (type.match(this.regExpFactory.pattern('foot'))) { - this.state.layoutType = 'footnote'; - } else if (type.match(this.regExpFactory.pattern('notextile'))) { - this.state.layoutType = 'notextile'; - } else if (type.match(this.regExpFactory.pattern('pre'))) { - this.state.layoutType = 'pre'; - } else if (type.match(this.regExpFactory.pattern('div'))) { - this.state.layoutType = 'div'; - } else if (type.match(this.regExpFactory.pattern('table'))) { - this.state.layoutType = 'table'; - } - - this.setModeForNextToken(Modes.attributes); - return this.tokenStyles(); - }, - - text: function() { - if (this.eat('text')) { - return this.tokenStyles(); - } - - var ch = this.stream.next(); - - if (ch === '"') { - return this.execMode(Modes.link); - } - return this.handlePhraseModifier(ch); - }, - - attributes: function() { - this.setModeForNextToken(Modes.layoutLength); - - if (this.eat('attributes')) { - return this.tokenStylesWith(this.styleFor('attributes')); - } - return this.tokenStyles(); - }, - - layoutLength: function() { - if (this.stream.eat('.') && this.stream.eat('.')) { - this.state.spanningLayout = true; - } - - this.setModeForNextToken(Modes.text); - return this.tokenStyles(); - }, - - list: function() { - var match = this.eat('list'), - listMod; - this.state.listDepth = match[0].length; - listMod = (this.state.listDepth - 1) % 3; - if (!listMod) { - this.state.layoutType = 'list1'; - } else if (listMod === 1) { - this.state.layoutType = 'list2'; - } else { - this.state.layoutType = 'list3'; - } - this.setModeForNextToken(Modes.attributes); - return this.tokenStyles(); - }, - - link: function() { - this.setModeForNextToken(Modes.text); - if (this.eat('link')) { - this.stream.match(/\S+/); - return this.tokenStylesWith(this.styleFor('link')); - } - return this.tokenStyles(); - }, - - linkDefinition: function() { - this.stream.skipToEnd(); - return this.tokenStylesWith(this.styleFor('linkDefinition')); - }, - - definitionList: function() { - this.eat('definitionList'); - - this.state.layoutType = 'definitionList'; - - if (this.stream.match(/\s*$/)) { - this.state.spanningLayout = true; - } else { - this.setModeForNextToken(Modes.attributes); - } - return this.tokenStyles(); - }, - - html: function() { - this.stream.skipToEnd(); - return this.tokenStylesWith(this.styleFor('html')); - }, - - table: function() { - this.state.layoutType = 'table'; - return this.execMode(Modes.tableCell); - }, - - tableCell: function() { - if (this.eat('tableHeading')) { - this.state.tableHeading = true; - } else { - this.stream.eat('|'); - } - this.setModeForNextToken(Modes.tableCellAttributes); - return this.tokenStyles(); - }, - - tableCellAttributes: function() { - this.setModeForNextToken(Modes.tableText); - - if (this.eat('tableCellAttributes')) { - return this.tokenStylesWith(this.styleFor('attributes')); - } - return this.tokenStyles(); - }, - - tableText: function() { - if (this.eat('tableText')) { - return this.tokenStyles(); - } - - if (this.stream.peek() === '|') { // end of cell - this.setModeForNextToken(Modes.tableCell); - return this.tokenStyles(); - } - return this.handlePhraseModifier(this.stream.next()); - } -}; - - -CodeMirror.defineMode('textile', function() { - var regExpFactory = new RegExpFactory(); - - return { - startState: function() { - return { mode: Modes.newLayout }; - }, - token: function(stream, state) { - var parser = new Parser(regExpFactory, state, stream); - if (stream.sol()) { parser.startNewLine(); } - return parser.nextToken(); - }, - blankLine: function(state) { - new Parser(regExpFactory, state).blankLine(); - } - }; -}); - -CodeMirror.defineMIME('text/x-textile', 'textile'); -}); diff --git a/assets/js/plugins/codemirror/mode/tiddlywiki/index.html b/assets/js/plugins/codemirror/mode/tiddlywiki/index.html deleted file mode 100644 index 77dd0457..00000000 --- a/assets/js/plugins/codemirror/mode/tiddlywiki/index.html +++ /dev/null @@ -1,154 +0,0 @@ -<!doctype html> - -<title>CodeMirror: TiddlyWiki mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<link rel="stylesheet" href="tiddlywiki.css"> -<script src="../../lib/codemirror.js"></script> -<script src="../../addon/edit/matchbrackets.js"></script> -<script src="tiddlywiki.js"></script> -<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">TiddlyWiki</a> - </ul> -</div> - -<article> -<h2>TiddlyWiki mode</h2> - - -<div><textarea id="code" name="code"> -!TiddlyWiki Formatting -* Rendered versions can be found at: http://www.tiddlywiki.com/#Reference - -|!Option | !Syntax | -|bold font | ''bold'' | -|italic type | //italic// | -|underlined text | __underlined__ | -|strikethrough text | --strikethrough-- | -|superscript text | super^^script^^ | -|subscript text | sub~~script~~ | -|highlighted text | @@highlighted@@ | -|preformatted text | {{{preformatted}}} | - -!Block Elements -<<< -!Heading 1 - -!!Heading 2 - -!!!Heading 3 - -!!!!Heading 4 - -!!!!!Heading 5 -<<< - -!!Lists -<<< -* unordered list, level 1 -** unordered list, level 2 -*** unordered list, level 3 - -# ordered list, level 1 -## ordered list, level 2 -### unordered list, level 3 - -; definition list, term -: definition list, description -<<< - -!!Blockquotes -<<< -> blockquote, level 1 ->> blockquote, level 2 ->>> blockquote, level 3 - -> blockquote -<<< - -!!Preformatted Text -<<< -{{{ -preformatted (e.g. code) -}}} -<<< - -!!Code Sections -<<< -{{{ -Text style code -}}} - -//{{{ -JS styled code. TiddlyWiki mixed mode should support highlighter switching in the future. -//}}} - -<!--{{{--> -XML styled code. TiddlyWiki mixed mode should support highlighter switching in the future. -<!--}}}--> -<<< - -!!Tables -<<< -|CssClass|k -|!heading column 1|!heading column 2| -|row 1, column 1|row 1, column 2| -|row 2, column 1|row 2, column 2| -|>|COLSPAN| -|ROWSPAN| ... | -|~| ... | -|CssProperty:value;...| ... | -|caption|c - -''Annotation:'' -* The {{{>}}} marker creates a "colspan", causing the current cell to merge with the one to the right. -* The {{{~}}} marker creates a "rowspan", causing the current cell to merge with the one above. -<<< -!!Images /% TODO %/ -cf. [[TiddlyWiki.com|http://www.tiddlywiki.com/#EmbeddedImages]] - -!Hyperlinks -* [[WikiWords|WikiWord]] are automatically transformed to hyperlinks to the respective tiddler -** the automatic transformation can be suppressed by preceding the respective WikiWord with a tilde ({{{~}}}): {{{~WikiWord}}} -* [[PrettyLinks]] are enclosed in square brackets and contain the desired tiddler name: {{{[[tiddler name]]}}} -** optionally, a custom title or description can be added, separated by a pipe character ({{{|}}}): {{{[[title|target]]}}}<br>'''N.B.:''' In this case, the target can also be any website (i.e. URL). - -!Custom Styling -* {{{@@CssProperty:value;CssProperty:value;...@@}}}<br>''N.B.:'' CSS color definitions should use lowercase letters to prevent the inadvertent creation of WikiWords. -* <html><code>{{customCssClass{...}}}</code></html> -* raw HTML can be inserted by enclosing the respective code in HTML tags: {{{<html> ... </html>}}} - -!Special Markers -* {{{<br>}}} forces a manual line break -* {{{----}}} creates a horizontal ruler -* [[HTML entities|http://www.tiddlywiki.com/#HtmlEntities]] -* [[HTML entities local|HtmlEntities]] -* {{{<<macroName>>}}} calls the respective [[macro|Macros]] -* To hide text within a tiddler so that it is not displayed, it can be wrapped in {{{/%}}} and {{{%/}}}.<br/>This can be a useful trick for hiding drafts or annotating complex markup. -* To prevent wiki markup from taking effect for a particular section, that section can be enclosed in three double quotes: e.g. {{{"""WikiWord"""}}}. -</textarea></div> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - mode: 'tiddlywiki', - lineNumbers: true, - matchBrackets: true - }); - </script> - - <p>TiddlyWiki mode supports a single configuration.</p> - - <p><strong>MIME types defined:</strong> <code>text/x-tiddlywiki</code>.</p> - </article> diff --git a/assets/js/plugins/codemirror/mode/tiddlywiki/tiddlywiki.css b/assets/js/plugins/codemirror/mode/tiddlywiki/tiddlywiki.css deleted file mode 100644 index 9a69b639..00000000 --- a/assets/js/plugins/codemirror/mode/tiddlywiki/tiddlywiki.css +++ /dev/null @@ -1,14 +0,0 @@ -span.cm-underlined { - text-decoration: underline; -} -span.cm-strikethrough { - text-decoration: line-through; -} -span.cm-brace { - color: #170; - font-weight: bold; -} -span.cm-table { - color: blue; - font-weight: bold; -} diff --git a/assets/js/plugins/codemirror/mode/tiddlywiki/tiddlywiki.js b/assets/js/plugins/codemirror/mode/tiddlywiki/tiddlywiki.js deleted file mode 100644 index 88c9768a..00000000 --- a/assets/js/plugins/codemirror/mode/tiddlywiki/tiddlywiki.js +++ /dev/null @@ -1,369 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/*** - |''Name''|tiddlywiki.js| - |''Description''|Enables TiddlyWikiy syntax highlighting using CodeMirror| - |''Author''|PMario| - |''Version''|0.1.7| - |''Status''|''stable''| - |''Source''|[[GitHub|https://github.com/pmario/CodeMirror2/blob/tw-syntax/mode/tiddlywiki]]| - |''Documentation''|http://codemirror.tiddlyspace.com/| - |''License''|[[MIT License|http://www.opensource.org/licenses/mit-license.php]]| - |''CoreVersion''|2.5.0| - |''Requires''|codemirror.js| - |''Keywords''|syntax highlighting color code mirror codemirror| - ! Info - CoreVersion parameter is needed for TiddlyWiki only! -***/ -//{{{ - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("tiddlywiki", function () { - // Tokenizer - var textwords = {}; - - var keywords = function () { - function kw(type) { - return { type: type, style: "macro"}; - } - return { - "allTags": kw('allTags'), "closeAll": kw('closeAll'), "list": kw('list'), - "newJournal": kw('newJournal'), "newTiddler": kw('newTiddler'), - "permaview": kw('permaview'), "saveChanges": kw('saveChanges'), - "search": kw('search'), "slider": kw('slider'), "tabs": kw('tabs'), - "tag": kw('tag'), "tagging": kw('tagging'), "tags": kw('tags'), - "tiddler": kw('tiddler'), "timeline": kw('timeline'), - "today": kw('today'), "version": kw('version'), "option": kw('option'), - - "with": kw('with'), - "filter": kw('filter') - }; - }(); - - var isSpaceName = /[\w_\-]/i, - reHR = /^\-\-\-\-+$/, // <hr> - reWikiCommentStart = /^\/\*\*\*$/, // /*** - reWikiCommentStop = /^\*\*\*\/$/, // ***/ - reBlockQuote = /^<<<$/, - - reJsCodeStart = /^\/\/\{\{\{$/, // //{{{ js block start - reJsCodeStop = /^\/\/\}\}\}$/, // //}}} js stop - reXmlCodeStart = /^<!--\{\{\{-->$/, // xml block start - reXmlCodeStop = /^<!--\}\}\}-->$/, // xml stop - - reCodeBlockStart = /^\{\{\{$/, // {{{ TW text div block start - reCodeBlockStop = /^\}\}\}$/, // }}} TW text stop - - reUntilCodeStop = /.*?\}\}\}/; - - function chain(stream, state, f) { - state.tokenize = f; - return f(stream, state); - } - - // Used as scratch variables to communicate multiple values without - // consing up tons of objects. - var type, content; - - function ret(tp, style, cont) { - type = tp; - content = cont; - return style; - } - - function jsTokenBase(stream, state) { - var sol = stream.sol(), ch; - - state.block = false; // indicates the start of a code block. - - ch = stream.peek(); // don't eat, to make matching simpler - - // check start of blocks - if (sol && /[<\/\*{}\-]/.test(ch)) { - if (stream.match(reCodeBlockStart)) { - state.block = true; - return chain(stream, state, twTokenCode); - } - if (stream.match(reBlockQuote)) { - return ret('quote', 'quote'); - } - if (stream.match(reWikiCommentStart) || stream.match(reWikiCommentStop)) { - return ret('code', 'comment'); - } - if (stream.match(reJsCodeStart) || stream.match(reJsCodeStop) || stream.match(reXmlCodeStart) || stream.match(reXmlCodeStop)) { - return ret('code', 'comment'); - } - if (stream.match(reHR)) { - return ret('hr', 'hr'); - } - } // sol - ch = stream.next(); - - if (sol && /[\/\*!#;:>|]/.test(ch)) { - if (ch == "!") { // tw header - stream.skipToEnd(); - return ret("header", "header"); - } - if (ch == "*") { // tw list - stream.eatWhile('*'); - return ret("list", "comment"); - } - if (ch == "#") { // tw numbered list - stream.eatWhile('#'); - return ret("list", "comment"); - } - if (ch == ";") { // definition list, term - stream.eatWhile(';'); - return ret("list", "comment"); - } - if (ch == ":") { // definition list, description - stream.eatWhile(':'); - return ret("list", "comment"); - } - if (ch == ">") { // single line quote - stream.eatWhile(">"); - return ret("quote", "quote"); - } - if (ch == '|') { - return ret('table', 'header'); - } - } - - if (ch == '{' && stream.match(/\{\{/)) { - return chain(stream, state, twTokenCode); - } - - // rudimentary html:// file:// link matching. TW knows much more ... - if (/[hf]/i.test(ch)) { - if (/[ti]/i.test(stream.peek()) && stream.match(/\b(ttps?|tp|ile):\/\/[\-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$]/i)) { - return ret("link", "link"); - } - } - // just a little string indicator, don't want to have the whole string covered - if (ch == '"') { - return ret('string', 'string'); - } - if (ch == '~') { // _no_ CamelCase indicator should be bold - return ret('text', 'brace'); - } - if (/[\[\]]/.test(ch)) { // check for [[..]] - if (stream.peek() == ch) { - stream.next(); - return ret('brace', 'brace'); - } - } - if (ch == "@") { // check for space link. TODO fix @@...@@ highlighting - stream.eatWhile(isSpaceName); - return ret("link", "link"); - } - if (/\d/.test(ch)) { // numbers - stream.eatWhile(/\d/); - return ret("number", "number"); - } - if (ch == "/") { // tw invisible comment - if (stream.eat("%")) { - return chain(stream, state, twTokenComment); - } - else if (stream.eat("/")) { // - return chain(stream, state, twTokenEm); - } - } - if (ch == "_") { // tw underline - if (stream.eat("_")) { - return chain(stream, state, twTokenUnderline); - } - } - // strikethrough and mdash handling - if (ch == "-") { - if (stream.eat("-")) { - // if strikethrough looks ugly, change CSS. - if (stream.peek() != ' ') - return chain(stream, state, twTokenStrike); - // mdash - if (stream.peek() == ' ') - return ret('text', 'brace'); - } - } - if (ch == "'") { // tw bold - if (stream.eat("'")) { - return chain(stream, state, twTokenStrong); - } - } - if (ch == "<") { // tw macro - if (stream.eat("<")) { - return chain(stream, state, twTokenMacro); - } - } - else { - return ret(ch); - } - - // core macro handling - stream.eatWhile(/[\w\$_]/); - var word = stream.current(), - known = textwords.propertyIsEnumerable(word) && textwords[word]; - - return known ? ret(known.type, known.style, word) : ret("text", null, word); - - } // jsTokenBase() - - // tw invisible comment - function twTokenComment(stream, state) { - var maybeEnd = false, - ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = jsTokenBase; - break; - } - maybeEnd = (ch == "%"); - } - return ret("comment", "comment"); - } - - // tw strong / bold - function twTokenStrong(stream, state) { - var maybeEnd = false, - ch; - while (ch = stream.next()) { - if (ch == "'" && maybeEnd) { - state.tokenize = jsTokenBase; - break; - } - maybeEnd = (ch == "'"); - } - return ret("text", "strong"); - } - - // tw code - function twTokenCode(stream, state) { - var ch, sb = state.block; - - if (sb && stream.current()) { - return ret("code", "comment"); - } - - if (!sb && stream.match(reUntilCodeStop)) { - state.tokenize = jsTokenBase; - return ret("code", "comment"); - } - - if (sb && stream.sol() && stream.match(reCodeBlockStop)) { - state.tokenize = jsTokenBase; - return ret("code", "comment"); - } - - ch = stream.next(); - return (sb) ? ret("code", "comment") : ret("code", "comment"); - } - - // tw em / italic - function twTokenEm(stream, state) { - var maybeEnd = false, - ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = jsTokenBase; - break; - } - maybeEnd = (ch == "/"); - } - return ret("text", "em"); - } - - // tw underlined text - function twTokenUnderline(stream, state) { - var maybeEnd = false, - ch; - while (ch = stream.next()) { - if (ch == "_" && maybeEnd) { - state.tokenize = jsTokenBase; - break; - } - maybeEnd = (ch == "_"); - } - return ret("text", "underlined"); - } - - // tw strike through text looks ugly - // change CSS if needed - function twTokenStrike(stream, state) { - var maybeEnd = false, ch; - - while (ch = stream.next()) { - if (ch == "-" && maybeEnd) { - state.tokenize = jsTokenBase; - break; - } - maybeEnd = (ch == "-"); - } - return ret("text", "strikethrough"); - } - - // macro - function twTokenMacro(stream, state) { - var ch, word, known; - - if (stream.current() == '<<') { - return ret('brace', 'macro'); - } - - ch = stream.next(); - if (!ch) { - state.tokenize = jsTokenBase; - return ret(ch); - } - if (ch == ">") { - if (stream.peek() == '>') { - stream.next(); - state.tokenize = jsTokenBase; - return ret("brace", "macro"); - } - } - - stream.eatWhile(/[\w\$_]/); - word = stream.current(); - known = keywords.propertyIsEnumerable(word) && keywords[word]; - - if (known) { - return ret(known.type, known.style, word); - } - else { - return ret("macro", null, word); - } - } - - // Interface - return { - startState: function () { - return { - tokenize: jsTokenBase, - indented: 0, - level: 0 - }; - }, - - token: function (stream, state) { - if (stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - return style; - }, - - electricChars: "" - }; -}); - -CodeMirror.defineMIME("text/x-tiddlywiki", "tiddlywiki"); -}); - -//}}} diff --git a/assets/js/plugins/codemirror/mode/tiki/index.html b/assets/js/plugins/codemirror/mode/tiki/index.html deleted file mode 100644 index 091c5fb2..00000000 --- a/assets/js/plugins/codemirror/mode/tiki/index.html +++ /dev/null @@ -1,95 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Tiki wiki mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<link rel="stylesheet" href="tiki.css"> -<script src="../../lib/codemirror.js"></script> -<script src="tiki.js"></script> -<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Tiki wiki</a> - </ul> -</div> - -<article> -<h2>Tiki wiki mode</h2> - - -<div><textarea id="code" name="code"> -Headings -!Header 1 -!!Header 2 -!!!Header 3 -!!!!Header 4 -!!!!!Header 5 -!!!!!!Header 6 - -Styling --=titlebar=- -^^ Box on multi -lines -of content^^ -__bold__ -''italic'' -===underline=== -::center:: ---Line Through-- - -Operators -~np~No parse~/np~ - -Link -[link|desc|nocache] - -Wiki -((Wiki)) -((Wiki|desc)) -((Wiki|desc|timeout)) - -Table -||row1 col1|row1 col2|row1 col3 -row2 col1|row2 col2|row2 col3 -row3 col1|row3 col2|row3 col3|| - -Lists: -*bla -**bla-1 -++continue-bla-1 -***bla-2 -++continue-bla-1 -*bla -+continue-bla -#bla -** tra-la-la -+continue-bla -#bla - -Plugin (standard): -{PLUGIN(attr="my attr")} -Plugin Body -{PLUGIN} - -Plugin (inline): -{plugin attr="my attr"} -</textarea></div> - -<script type="text/javascript"> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - mode: 'tiki', - lineNumbers: true - }); -</script> - -</article> diff --git a/assets/js/plugins/codemirror/mode/tiki/tiki.css b/assets/js/plugins/codemirror/mode/tiki/tiki.css deleted file mode 100644 index 0dbc3ea0..00000000 --- a/assets/js/plugins/codemirror/mode/tiki/tiki.css +++ /dev/null @@ -1,26 +0,0 @@ -.cm-tw-syntaxerror { - color: #FFF; - background-color: #900; -} - -.cm-tw-deleted { - text-decoration: line-through; -} - -.cm-tw-header5 { - font-weight: bold; -} -.cm-tw-listitem:first-child { /*Added first child to fix duplicate padding when highlighting*/ - padding-left: 10px; -} - -.cm-tw-box { - border-top-width: 0px ! important; - border-style: solid; - border-width: 1px; - border-color: inherit; -} - -.cm-tw-underline { - text-decoration: underline; -} \ No newline at end of file diff --git a/assets/js/plugins/codemirror/mode/tiki/tiki.js b/assets/js/plugins/codemirror/mode/tiki/tiki.js deleted file mode 100644 index c90aac9e..00000000 --- a/assets/js/plugins/codemirror/mode/tiki/tiki.js +++ /dev/null @@ -1,323 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode('tiki', function(config) { - function inBlock(style, terminator, returnTokenizer) { - return function(stream, state) { - while (!stream.eol()) { - if (stream.match(terminator)) { - state.tokenize = inText; - break; - } - stream.next(); - } - - if (returnTokenizer) state.tokenize = returnTokenizer; - - return style; - }; - } - - function inLine(style) { - return function(stream, state) { - while(!stream.eol()) { - stream.next(); - } - state.tokenize = inText; - return style; - }; - } - - function inText(stream, state) { - function chain(parser) { - state.tokenize = parser; - return parser(stream, state); - } - - var sol = stream.sol(); - var ch = stream.next(); - - //non start of line - switch (ch) { //switch is generally much faster than if, so it is used here - case "{": //plugin - stream.eat("/"); - stream.eatSpace(); - var tagName = ""; - var c; - while ((c = stream.eat(/[^\s\u00a0=\"\'\/?(}]/))) tagName += c; - state.tokenize = inPlugin; - return "tag"; - break; - case "_": //bold - if (stream.eat("_")) { - return chain(inBlock("strong", "__", inText)); - } - break; - case "'": //italics - if (stream.eat("'")) { - // Italic text - return chain(inBlock("em", "''", inText)); - } - break; - case "(":// Wiki Link - if (stream.eat("(")) { - return chain(inBlock("variable-2", "))", inText)); - } - break; - case "[":// Weblink - return chain(inBlock("variable-3", "]", inText)); - break; - case "|": //table - if (stream.eat("|")) { - return chain(inBlock("comment", "||")); - } - break; - case "-": - if (stream.eat("=")) {//titleBar - return chain(inBlock("header string", "=-", inText)); - } else if (stream.eat("-")) {//deleted - return chain(inBlock("error tw-deleted", "--", inText)); - } - break; - case "=": //underline - if (stream.match("==")) { - return chain(inBlock("tw-underline", "===", inText)); - } - break; - case ":": - if (stream.eat(":")) { - return chain(inBlock("comment", "::")); - } - break; - case "^": //box - return chain(inBlock("tw-box", "^")); - break; - case "~": //np - if (stream.match("np~")) { - return chain(inBlock("meta", "~/np~")); - } - break; - } - - //start of line types - if (sol) { - switch (ch) { - case "!": //header at start of line - if (stream.match('!!!!!')) { - return chain(inLine("header string")); - } else if (stream.match('!!!!')) { - return chain(inLine("header string")); - } else if (stream.match('!!!')) { - return chain(inLine("header string")); - } else if (stream.match('!!')) { - return chain(inLine("header string")); - } else { - return chain(inLine("header string")); - } - break; - case "*": //unordered list line item, or <li /> at start of line - case "#": //ordered list line item, or <li /> at start of line - case "+": //ordered list line item, or <li /> at start of line - return chain(inLine("tw-listitem bracket")); - break; - } - } - - //stream.eatWhile(/[&{]/); was eating up plugins, turned off to act less like html and more like tiki - return null; - } - - var indentUnit = config.indentUnit; - - // Return variables for tokenizers - var pluginName, type; - function inPlugin(stream, state) { - var ch = stream.next(); - var peek = stream.peek(); - - if (ch == "}") { - state.tokenize = inText; - //type = ch == ")" ? "endPlugin" : "selfclosePlugin"; inPlugin - return "tag"; - } else if (ch == "(" || ch == ")") { - return "bracket"; - } else if (ch == "=") { - type = "equals"; - - if (peek == ">") { - ch = stream.next(); - peek = stream.peek(); - } - - //here we detect values directly after equal character with no quotes - if (!/[\'\"]/.test(peek)) { - state.tokenize = inAttributeNoQuote(); - } - //end detect values - - return "operator"; - } else if (/[\'\"]/.test(ch)) { - state.tokenize = inAttribute(ch); - return state.tokenize(stream, state); - } else { - stream.eatWhile(/[^\s\u00a0=\"\'\/?]/); - return "keyword"; - } - } - - function inAttribute(quote) { - return function(stream, state) { - while (!stream.eol()) { - if (stream.next() == quote) { - state.tokenize = inPlugin; - break; - } - } - return "string"; - }; - } - - function inAttributeNoQuote() { - return function(stream, state) { - while (!stream.eol()) { - var ch = stream.next(); - var peek = stream.peek(); - if (ch == " " || ch == "," || /[ )}]/.test(peek)) { - state.tokenize = inPlugin; - break; - } - } - return "string"; -}; - } - -var curState, setStyle; -function pass() { - for (var i = arguments.length - 1; i >= 0; i--) curState.cc.push(arguments[i]); -} - -function cont() { - pass.apply(null, arguments); - return true; -} - -function pushContext(pluginName, startOfLine) { - var noIndent = curState.context && curState.context.noIndent; - curState.context = { - prev: curState.context, - pluginName: pluginName, - indent: curState.indented, - startOfLine: startOfLine, - noIndent: noIndent - }; -} - -function popContext() { - if (curState.context) curState.context = curState.context.prev; -} - -function element(type) { - if (type == "openPlugin") {curState.pluginName = pluginName; return cont(attributes, endplugin(curState.startOfLine));} - else if (type == "closePlugin") { - var err = false; - if (curState.context) { - err = curState.context.pluginName != pluginName; - popContext(); - } else { - err = true; - } - if (err) setStyle = "error"; - return cont(endcloseplugin(err)); - } - else if (type == "string") { - if (!curState.context || curState.context.name != "!cdata") pushContext("!cdata"); - if (curState.tokenize == inText) popContext(); - return cont(); - } - else return cont(); -} - -function endplugin(startOfLine) { - return function(type) { - if ( - type == "selfclosePlugin" || - type == "endPlugin" - ) - return cont(); - if (type == "endPlugin") {pushContext(curState.pluginName, startOfLine); return cont();} - return cont(); - }; -} - -function endcloseplugin(err) { - return function(type) { - if (err) setStyle = "error"; - if (type == "endPlugin") return cont(); - return pass(); - }; -} - -function attributes(type) { - if (type == "keyword") {setStyle = "attribute"; return cont(attributes);} - if (type == "equals") return cont(attvalue, attributes); - return pass(); -} -function attvalue(type) { - if (type == "keyword") {setStyle = "string"; return cont();} - if (type == "string") return cont(attvaluemaybe); - return pass(); -} -function attvaluemaybe(type) { - if (type == "string") return cont(attvaluemaybe); - else return pass(); -} -return { - startState: function() { - return {tokenize: inText, cc: [], indented: 0, startOfLine: true, pluginName: null, context: null}; - }, - token: function(stream, state) { - if (stream.sol()) { - state.startOfLine = true; - state.indented = stream.indentation(); - } - if (stream.eatSpace()) return null; - - setStyle = type = pluginName = null; - var style = state.tokenize(stream, state); - if ((style || type) && style != "comment") { - curState = state; - while (true) { - var comb = state.cc.pop() || element; - if (comb(type || style)) break; - } - } - state.startOfLine = false; - return setStyle || style; - }, - indent: function(state, textAfter) { - var context = state.context; - if (context && context.noIndent) return 0; - if (context && /^{\//.test(textAfter)) - context = context.prev; - while (context && !context.startOfLine) - context = context.prev; - if (context) return context.indent + indentUnit; - else return 0; - }, - electricChars: "/" - }; -}); - -CodeMirror.defineMIME("text/tiki", "tiki"); - -}); diff --git a/assets/js/plugins/codemirror/mode/toml/index.html b/assets/js/plugins/codemirror/mode/toml/index.html deleted file mode 100644 index 90a2a021..00000000 --- a/assets/js/plugins/codemirror/mode/toml/index.html +++ /dev/null @@ -1,73 +0,0 @@ -<!doctype html> - -<title>CodeMirror: TOML Mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="toml.js"></script> -<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">TOML Mode</a> - </ul> -</div> - -<article> -<h2>TOML Mode</h2> -<form><textarea id="code" name="code"> -# This is a TOML document. Boom. - -title = "TOML Example" - -[owner] -name = "Tom Preston-Werner" -organization = "GitHub" -bio = "GitHub Cofounder &amp; CEO\nLikes tater tots and beer." -dob = 1979-05-27T07:32:00Z # First class dates? Why not? - -[database] -server = "192.168.1.1" -ports = [ 8001, 8001, 8002 ] -connection_max = 5000 -enabled = true - -[servers] - - # You can indent as you please. Tabs or spaces. TOML don't care. - [servers.alpha] - ip = "10.0.0.1" - dc = "eqdc10" - - [servers.beta] - ip = "10.0.0.2" - dc = "eqdc10" - -[clients] -data = [ ["gamma", "delta"], [1, 2] ] - -# Line breaks are OK when inside arrays -hosts = [ - "alpha", - "omega" -] -</textarea></form> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - mode: {name: "toml"}, - lineNumbers: true - }); - </script> - <h3>The TOML Mode</h3> - <p> Created by Forbes Lindesay.</p> - <p><strong>MIME type defined:</strong> <code>text/x-toml</code>.</p> - </article> diff --git a/assets/js/plugins/codemirror/mode/toml/toml.js b/assets/js/plugins/codemirror/mode/toml/toml.js deleted file mode 100644 index baeca155..00000000 --- a/assets/js/plugins/codemirror/mode/toml/toml.js +++ /dev/null @@ -1,88 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("toml", function () { - return { - startState: function () { - return { - inString: false, - stringType: "", - lhs: true, - inArray: 0 - }; - }, - token: function (stream, state) { - //check for state changes - if (!state.inString && ((stream.peek() == '"') || (stream.peek() == "'"))) { - state.stringType = stream.peek(); - stream.next(); // Skip quote - state.inString = true; // Update state - } - if (stream.sol() && state.inArray === 0) { - state.lhs = true; - } - //return state - if (state.inString) { - while (state.inString && !stream.eol()) { - if (stream.peek() === state.stringType) { - stream.next(); // Skip quote - state.inString = false; // Clear flag - } else if (stream.peek() === '\\') { - stream.next(); - stream.next(); - } else { - stream.match(/^.[^\\\"\']*/); - } - } - return state.lhs ? "property string" : "string"; // Token style - } else if (state.inArray && stream.peek() === ']') { - stream.next(); - state.inArray--; - return 'bracket'; - } else if (state.lhs && stream.peek() === '[' && stream.skipTo(']')) { - stream.next();//skip closing ] - // array of objects has an extra open & close [] - if (stream.peek() === ']') stream.next(); - return "atom"; - } else if (stream.peek() === "#") { - stream.skipToEnd(); - return "comment"; - } else if (stream.eatSpace()) { - return null; - } else if (state.lhs && stream.eatWhile(function (c) { return c != '=' && c != ' '; })) { - return "property"; - } else if (state.lhs && stream.peek() === "=") { - stream.next(); - state.lhs = false; - return null; - } else if (!state.lhs && stream.match(/^\d\d\d\d[\d\-\:\.T]*Z/)) { - return 'atom'; //date - } else if (!state.lhs && (stream.match('true') || stream.match('false'))) { - return 'atom'; - } else if (!state.lhs && stream.peek() === '[') { - state.inArray++; - stream.next(); - return 'bracket'; - } else if (!state.lhs && stream.match(/^\-?\d+(?:\.\d+)?/)) { - return 'number'; - } else if (!stream.eatSpace()) { - stream.next(); - } - return null; - } - }; -}); - -CodeMirror.defineMIME('text/x-toml', 'toml'); - -}); diff --git a/assets/js/plugins/codemirror/mode/tornado/index.html b/assets/js/plugins/codemirror/mode/tornado/index.html deleted file mode 100644 index 8ee7ef56..00000000 --- a/assets/js/plugins/codemirror/mode/tornado/index.html +++ /dev/null @@ -1,63 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Tornado template mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="../../addon/mode/overlay.js"></script> -<script src="../xml/xml.js"></script> -<script src="../htmlmixed/htmlmixed.js"></script> -<script src="tornado.js"></script> -<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/marijnh/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Tornado</a> - </ul> -</div> - -<article> -<h2>Tornado template mode</h2> -<form><textarea id="code" name="code"> -<!doctype html> -<html> - <head> - <title>My Tornado web application</title> - </head> - <body> - <h1> - {{ title }} - </h1> - <ul class="my-list"> - {% for item in items %} - <li>{% item.name %}</li> - {% empty %} - <li>You have no items in your list.</li> - {% end %} - </ul> - </body> -</html> -</textarea></form> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers: true, - mode: "tornado", - indentUnit: 4, - indentWithTabs: true - }); - </script> - - <p>Mode for HTML with embedded Tornado template markup.</p> - - <p><strong>MIME types defined:</strong> <code>text/x-tornado</code></p> - </article> diff --git a/assets/js/plugins/codemirror/mode/tornado/tornado.js b/assets/js/plugins/codemirror/mode/tornado/tornado.js deleted file mode 100644 index dbfbc348..00000000 --- a/assets/js/plugins/codemirror/mode/tornado/tornado.js +++ /dev/null @@ -1,68 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), - require("../../addon/mode/overlay")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../htmlmixed/htmlmixed", - "../../addon/mode/overlay"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.defineMode("tornado:inner", function() { - var keywords = ["and","as","assert","autoescape","block","break","class","comment","context", - "continue","datetime","def","del","elif","else","end","escape","except", - "exec","extends","false","finally","for","from","global","if","import","in", - "include","is","json_encode","lambda","length","linkify","load","module", - "none","not","or","pass","print","put","raise","raw","return","self","set", - "squeeze","super","true","try","url_escape","while","with","without","xhtml_escape","yield"]; - keywords = new RegExp("^((" + keywords.join(")|(") + "))\\b"); - - function tokenBase (stream, state) { - stream.eatWhile(/[^\{]/); - var ch = stream.next(); - if (ch == "{") { - if (ch = stream.eat(/\{|%|#/)) { - state.tokenize = inTag(ch); - return "tag"; - } - } - } - function inTag (close) { - if (close == "{") { - close = "}"; - } - return function (stream, state) { - var ch = stream.next(); - if ((ch == close) && stream.eat("}")) { - state.tokenize = tokenBase; - return "tag"; - } - if (stream.match(keywords)) { - return "keyword"; - } - return close == "#" ? "comment" : "string"; - }; - } - return { - startState: function () { - return {tokenize: tokenBase}; - }, - token: function (stream, state) { - return state.tokenize(stream, state); - } - }; - }); - - CodeMirror.defineMode("tornado", function(config) { - var htmlBase = CodeMirror.getMode(config, "text/html"); - var tornadoInner = CodeMirror.getMode(config, "tornado:inner"); - return CodeMirror.overlayMode(htmlBase, tornadoInner); - }); - - CodeMirror.defineMIME("text/x-tornado", "tornado"); -}); diff --git a/assets/js/plugins/codemirror/mode/turtle/index.html b/assets/js/plugins/codemirror/mode/turtle/index.html deleted file mode 100644 index a4962b61..00000000 --- a/assets/js/plugins/codemirror/mode/turtle/index.html +++ /dev/null @@ -1,50 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Turtle mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="turtle.js"></script> -<style>.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Turtle</a> - </ul> -</div> - -<article> -<h2>Turtle mode</h2> -<form><textarea id="code" name="code"> -@prefix foaf: <http://xmlns.com/foaf/0.1/> . -@prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> . -@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . - -<http://purl.org/net/bsletten> - a foaf:Person; - foaf:interest <http://www.w3.org/2000/01/sw/>; - foaf:based_near [ - geo:lat "34.0736111" ; - geo:lon "-118.3994444" - ] - -</textarea></form> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - mode: "text/turtle", - matchBrackets: true - }); - </script> - - <p><strong>MIME types defined:</strong> <code>text/turtle</code>.</p> - - </article> diff --git a/assets/js/plugins/codemirror/mode/turtle/turtle.js b/assets/js/plugins/codemirror/mode/turtle/turtle.js deleted file mode 100644 index a4727ed5..00000000 --- a/assets/js/plugins/codemirror/mode/turtle/turtle.js +++ /dev/null @@ -1,160 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("turtle", function(config) { - var indentUnit = config.indentUnit; - var curPunc; - - function wordRegexp(words) { - return new RegExp("^(?:" + words.join("|") + ")$", "i"); - } - var ops = wordRegexp([]); - var keywords = wordRegexp(["@prefix", "@base", "a"]); - var operatorChars = /[*+\-<>=&|]/; - - function tokenBase(stream, state) { - var ch = stream.next(); - curPunc = null; - if (ch == "<" && !stream.match(/^[\s\u00a0=]/, false)) { - stream.match(/^[^\s\u00a0>]*>?/); - return "atom"; - } - else if (ch == "\"" || ch == "'") { - state.tokenize = tokenLiteral(ch); - return state.tokenize(stream, state); - } - else if (/[{}\(\),\.;\[\]]/.test(ch)) { - curPunc = ch; - return null; - } - else if (ch == "#") { - stream.skipToEnd(); - return "comment"; - } - else if (operatorChars.test(ch)) { - stream.eatWhile(operatorChars); - return null; - } - else if (ch == ":") { - return "operator"; - } else { - stream.eatWhile(/[_\w\d]/); - if(stream.peek() == ":") { - return "variable-3"; - } else { - var word = stream.current(); - - if(keywords.test(word)) { - return "meta"; - } - - if(ch >= "A" && ch <= "Z") { - return "comment"; - } else { - return "keyword"; - } - } - var word = stream.current(); - if (ops.test(word)) - return null; - else if (keywords.test(word)) - return "meta"; - else - return "variable"; - } - } - - function tokenLiteral(quote) { - return function(stream, state) { - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == quote && !escaped) { - state.tokenize = tokenBase; - break; - } - escaped = !escaped && ch == "\\"; - } - return "string"; - }; - } - - function pushContext(state, type, col) { - state.context = {prev: state.context, indent: state.indent, col: col, type: type}; - } - function popContext(state) { - state.indent = state.context.indent; - state.context = state.context.prev; - } - - return { - startState: function() { - return {tokenize: tokenBase, - context: null, - indent: 0, - col: 0}; - }, - - token: function(stream, state) { - if (stream.sol()) { - if (state.context && state.context.align == null) state.context.align = false; - state.indent = stream.indentation(); - } - if (stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - - if (style != "comment" && state.context && state.context.align == null && state.context.type != "pattern") { - state.context.align = true; - } - - if (curPunc == "(") pushContext(state, ")", stream.column()); - else if (curPunc == "[") pushContext(state, "]", stream.column()); - else if (curPunc == "{") pushContext(state, "}", stream.column()); - else if (/[\]\}\)]/.test(curPunc)) { - while (state.context && state.context.type == "pattern") popContext(state); - if (state.context && curPunc == state.context.type) popContext(state); - } - else if (curPunc == "." && state.context && state.context.type == "pattern") popContext(state); - else if (/atom|string|variable/.test(style) && state.context) { - if (/[\}\]]/.test(state.context.type)) - pushContext(state, "pattern", stream.column()); - else if (state.context.type == "pattern" && !state.context.align) { - state.context.align = true; - state.context.col = stream.column(); - } - } - - return style; - }, - - indent: function(state, textAfter) { - var firstChar = textAfter && textAfter.charAt(0); - var context = state.context; - if (/[\]\}]/.test(firstChar)) - while (context && context.type == "pattern") context = context.prev; - - var closing = context && firstChar == context.type; - if (!context) - return 0; - else if (context.type == "pattern") - return context.col; - else if (context.align) - return context.col + (closing ? 0 : 1); - else - return context.indent + (closing ? 0 : indentUnit); - } - }; -}); - -CodeMirror.defineMIME("text/turtle", "turtle"); - -}); diff --git a/assets/js/plugins/codemirror/mode/vb/index.html b/assets/js/plugins/codemirror/mode/vb/index.html deleted file mode 100644 index adcc44fd..00000000 --- a/assets/js/plugins/codemirror/mode/vb/index.html +++ /dev/null @@ -1,102 +0,0 @@ -<!doctype html> - -<title>CodeMirror: VB.NET mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<link href="http://fonts.googleapis.com/css?family=Inconsolata" rel="stylesheet" type="text/css"> -<script src="../../lib/codemirror.js"></script> -<script src="vb.js"></script> -<script type="text/javascript" src="../../addon/runmode/runmode.js"></script> -<style> - .CodeMirror {border: 1px solid #aaa; height:210px; height: auto;} - .CodeMirror-scroll { overflow-x: auto; overflow-y: hidden;} - .CodeMirror pre { font-family: Inconsolata; font-size: 14px} - </style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">VB.NET</a> - </ul> -</div> - -<article> -<h2>VB.NET mode</h2> - -<script type="text/javascript"> -function test(golden, text) { - var ok = true; - var i = 0; - function callback(token, style, lineNo, pos){ - //console.log(String(token) + " " + String(style) + " " + String(lineNo) + " " + String(pos)); - var result = [String(token), String(style)]; - if (golden[i][0] != result[0] || golden[i][1] != result[1]){ - return "Error, expected: " + String(golden[i]) + ", got: " + String(result); - ok = false; - } - i++; - } - CodeMirror.runMode(text, "text/x-vb",callback); - - if (ok) return "Tests OK"; -} -function testTypes() { - var golden = [['Integer','keyword'],[' ','null'],['Float','keyword']] - var text = "Integer Float"; - return test(golden,text); -} -function testIf(){ - var golden = [['If','keyword'],[' ','null'],['True','keyword'],[' ','null'],['End','keyword'],[' ','null'],['If','keyword']]; - var text = 'If True End If'; - return test(golden, text); -} -function testDecl(){ - var golden = [['Dim','keyword'],[' ','null'],['x','variable'],[' ','null'],['as','keyword'],[' ','null'],['Integer','keyword']]; - var text = 'Dim x as Integer'; - return test(golden, text); -} -function testAll(){ - var result = ""; - - result += testTypes() + "\n"; - result += testIf() + "\n"; - result += testDecl() + "\n"; - return result; - -} -function initText(editor) { - var content = 'Class rocket\nPrivate quality as Double\nPublic Sub launch() as String\nif quality > 0.8\nlaunch = "Successful"\nElse\nlaunch = "Failed"\nEnd If\nEnd sub\nEnd class\n'; - editor.setValue(content); - for (var i =0; i< editor.lineCount(); i++) editor.indentLine(i); -} -function init() { - editor = CodeMirror.fromTextArea(document.getElementById("solution"), { - lineNumbers: true, - mode: "text/x-vb", - readOnly: false - }); - runTest(); -} -function runTest() { - document.getElementById('testresult').innerHTML = testAll(); - initText(editor); - -} -document.body.onload = init; -</script> - - <div id="edit"> - <textarea style="width:95%;height:200px;padding:5px;" name="solution" id="solution" ></textarea> - </div> - <pre id="testresult"></pre> - <p>MIME type defined: <code>text/x-vb</code>.</p> - -</article> diff --git a/assets/js/plugins/codemirror/mode/vb/vb.js b/assets/js/plugins/codemirror/mode/vb/vb.js deleted file mode 100644 index 902203e0..00000000 --- a/assets/js/plugins/codemirror/mode/vb/vb.js +++ /dev/null @@ -1,274 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("vb", function(conf, parserConf) { - var ERRORCLASS = 'error'; - - function wordRegexp(words) { - return new RegExp("^((" + words.join(")|(") + "))\\b", "i"); - } - - var singleOperators = new RegExp("^[\\+\\-\\*/%&\\\\|\\^~<>!]"); - var singleDelimiters = new RegExp('^[\\(\\)\\[\\]\\{\\}@,:`=;\\.]'); - var doubleOperators = new RegExp("^((==)|(<>)|(<=)|(>=)|(<>)|(<<)|(>>)|(//)|(\\*\\*))"); - var doubleDelimiters = new RegExp("^((\\+=)|(\\-=)|(\\*=)|(%=)|(/=)|(&=)|(\\|=)|(\\^=))"); - var tripleDelimiters = new RegExp("^((//=)|(>>=)|(<<=)|(\\*\\*=))"); - var identifiers = new RegExp("^[_A-Za-z][_A-Za-z0-9]*"); - - var openingKeywords = ['class','module', 'sub','enum','select','while','if','function', 'get','set','property', 'try']; - var middleKeywords = ['else','elseif','case', 'catch']; - var endKeywords = ['next','loop']; - - var wordOperators = wordRegexp(['and', 'or', 'not', 'xor', 'in']); - var commonkeywords = ['as', 'dim', 'break', 'continue','optional', 'then', 'until', - 'goto', 'byval','byref','new','handles','property', 'return', - 'const','private', 'protected', 'friend', 'public', 'shared', 'static', 'true','false']; - var commontypes = ['integer','string','double','decimal','boolean','short','char', 'float','single']; - - var keywords = wordRegexp(commonkeywords); - var types = wordRegexp(commontypes); - var stringPrefixes = '"'; - - var opening = wordRegexp(openingKeywords); - var middle = wordRegexp(middleKeywords); - var closing = wordRegexp(endKeywords); - var doubleClosing = wordRegexp(['end']); - var doOpening = wordRegexp(['do']); - - var indentInfo = null; - - - - - function indent(_stream, state) { - state.currentIndent++; - } - - function dedent(_stream, state) { - state.currentIndent--; - } - // tokenizers - function tokenBase(stream, state) { - if (stream.eatSpace()) { - return null; - } - - var ch = stream.peek(); - - // Handle Comments - if (ch === "'") { - stream.skipToEnd(); - return 'comment'; - } - - - // Handle Number Literals - if (stream.match(/^((&H)|(&O))?[0-9\.a-f]/i, false)) { - var floatLiteral = false; - // Floats - if (stream.match(/^\d*\.\d+F?/i)) { floatLiteral = true; } - else if (stream.match(/^\d+\.\d*F?/)) { floatLiteral = true; } - else if (stream.match(/^\.\d+F?/)) { floatLiteral = true; } - - if (floatLiteral) { - // Float literals may be "imaginary" - stream.eat(/J/i); - return 'number'; - } - // Integers - var intLiteral = false; - // Hex - if (stream.match(/^&H[0-9a-f]+/i)) { intLiteral = true; } - // Octal - else if (stream.match(/^&O[0-7]+/i)) { intLiteral = true; } - // Decimal - else if (stream.match(/^[1-9]\d*F?/)) { - // Decimal literals may be "imaginary" - stream.eat(/J/i); - // TODO - Can you have imaginary longs? - intLiteral = true; - } - // Zero by itself with no other piece of number. - else if (stream.match(/^0(?![\dx])/i)) { intLiteral = true; } - if (intLiteral) { - // Integer literals may be "long" - stream.eat(/L/i); - return 'number'; - } - } - - // Handle Strings - if (stream.match(stringPrefixes)) { - state.tokenize = tokenStringFactory(stream.current()); - return state.tokenize(stream, state); - } - - // Handle operators and Delimiters - if (stream.match(tripleDelimiters) || stream.match(doubleDelimiters)) { - return null; - } - if (stream.match(doubleOperators) - || stream.match(singleOperators) - || stream.match(wordOperators)) { - return 'operator'; - } - if (stream.match(singleDelimiters)) { - return null; - } - if (stream.match(doOpening)) { - indent(stream,state); - state.doInCurrentLine = true; - return 'keyword'; - } - if (stream.match(opening)) { - if (! state.doInCurrentLine) - indent(stream,state); - else - state.doInCurrentLine = false; - return 'keyword'; - } - if (stream.match(middle)) { - return 'keyword'; - } - - if (stream.match(doubleClosing)) { - dedent(stream,state); - dedent(stream,state); - return 'keyword'; - } - if (stream.match(closing)) { - dedent(stream,state); - return 'keyword'; - } - - if (stream.match(types)) { - return 'keyword'; - } - - if (stream.match(keywords)) { - return 'keyword'; - } - - if (stream.match(identifiers)) { - return 'variable'; - } - - // Handle non-detected items - stream.next(); - return ERRORCLASS; - } - - function tokenStringFactory(delimiter) { - var singleline = delimiter.length == 1; - var OUTCLASS = 'string'; - - return function(stream, state) { - while (!stream.eol()) { - stream.eatWhile(/[^'"]/); - if (stream.match(delimiter)) { - state.tokenize = tokenBase; - return OUTCLASS; - } else { - stream.eat(/['"]/); - } - } - if (singleline) { - if (parserConf.singleLineStringErrors) { - return ERRORCLASS; - } else { - state.tokenize = tokenBase; - } - } - return OUTCLASS; - }; - } - - - function tokenLexer(stream, state) { - var style = state.tokenize(stream, state); - var current = stream.current(); - - // Handle '.' connected identifiers - if (current === '.') { - style = state.tokenize(stream, state); - current = stream.current(); - if (style === 'variable') { - return 'variable'; - } else { - return ERRORCLASS; - } - } - - - var delimiter_index = '[({'.indexOf(current); - if (delimiter_index !== -1) { - indent(stream, state ); - } - if (indentInfo === 'dedent') { - if (dedent(stream, state)) { - return ERRORCLASS; - } - } - delimiter_index = '])}'.indexOf(current); - if (delimiter_index !== -1) { - if (dedent(stream, state)) { - return ERRORCLASS; - } - } - - return style; - } - - var external = { - electricChars:"dDpPtTfFeE ", - startState: function() { - return { - tokenize: tokenBase, - lastToken: null, - currentIndent: 0, - nextLineIndent: 0, - doInCurrentLine: false - - - }; - }, - - token: function(stream, state) { - if (stream.sol()) { - state.currentIndent += state.nextLineIndent; - state.nextLineIndent = 0; - state.doInCurrentLine = 0; - } - var style = tokenLexer(stream, state); - - state.lastToken = {style:style, content: stream.current()}; - - - - return style; - }, - - indent: function(state, textAfter) { - var trueText = textAfter.replace(/^\s+|\s+$/g, '') ; - if (trueText.match(closing) || trueText.match(doubleClosing) || trueText.match(middle)) return conf.indentUnit*(state.currentIndent-1); - if(state.currentIndent < 0) return 0; - return state.currentIndent * conf.indentUnit; - } - - }; - return external; -}); - -CodeMirror.defineMIME("text/x-vb", "vb"); - -}); diff --git a/assets/js/plugins/codemirror/mode/vbscript/index.html b/assets/js/plugins/codemirror/mode/vbscript/index.html deleted file mode 100644 index ad7532d7..00000000 --- a/assets/js/plugins/codemirror/mode/vbscript/index.html +++ /dev/null @@ -1,55 +0,0 @@ -<!doctype html> - -<title>CodeMirror: VBScript mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="vbscript.js"></script> -<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">VBScript</a> - </ul> -</div> - -<article> -<h2>VBScript mode</h2> - - -<div><textarea id="code" name="code"> -' Pete Guhl -' 03-04-2012 -' -' Basic VBScript support for codemirror2 - -Const ForReading = 1, ForWriting = 2, ForAppending = 8 - -Call Sub020_PostBroadcastToUrbanAirship(strUserName, strPassword, intTransmitID, strResponse) - -If Not IsNull(strResponse) AND Len(strResponse) = 0 Then - boolTransmitOkYN = False -Else - ' WScript.Echo "Oh Happy Day! Oh Happy DAY!" - boolTransmitOkYN = True -End If -</textarea></div> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers: true, - indentUnit: 4 - }); - </script> - - <p><strong>MIME types defined:</strong> <code>text/vbscript</code>.</p> - </article> diff --git a/assets/js/plugins/codemirror/mode/vbscript/vbscript.js b/assets/js/plugins/codemirror/mode/vbscript/vbscript.js deleted file mode 100644 index b66df223..00000000 --- a/assets/js/plugins/codemirror/mode/vbscript/vbscript.js +++ /dev/null @@ -1,350 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/* -For extra ASP classic objects, initialize CodeMirror instance with this option: - isASP: true - -E.G.: - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers: true, - isASP: true - }); -*/ - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("vbscript", function(conf, parserConf) { - var ERRORCLASS = 'error'; - - function wordRegexp(words) { - return new RegExp("^((" + words.join(")|(") + "))\\b", "i"); - } - - var singleOperators = new RegExp("^[\\+\\-\\*/&\\\\\\^<>=]"); - var doubleOperators = new RegExp("^((<>)|(<=)|(>=))"); - var singleDelimiters = new RegExp('^[\\.,]'); - var brakets = new RegExp('^[\\(\\)]'); - var identifiers = new RegExp("^[A-Za-z][_A-Za-z0-9]*"); - - var openingKeywords = ['class','sub','select','while','if','function', 'property', 'with', 'for']; - var middleKeywords = ['else','elseif','case']; - var endKeywords = ['next','loop','wend']; - - var wordOperators = wordRegexp(['and', 'or', 'not', 'xor', 'is', 'mod', 'eqv', 'imp']); - var commonkeywords = ['dim', 'redim', 'then', 'until', 'randomize', - 'byval','byref','new','property', 'exit', 'in', - 'const','private', 'public', - 'get','set','let', 'stop', 'on error resume next', 'on error goto 0', 'option explicit', 'call', 'me']; - - //This list was from: http://msdn.microsoft.com/en-us/library/f8tbc79x(v=vs.84).aspx - var atomWords = ['true', 'false', 'nothing', 'empty', 'null']; - //This list was from: http://msdn.microsoft.com/en-us/library/3ca8tfek(v=vs.84).aspx - var builtinFuncsWords = ['abs', 'array', 'asc', 'atn', 'cbool', 'cbyte', 'ccur', 'cdate', 'cdbl', 'chr', 'cint', 'clng', 'cos', 'csng', 'cstr', 'date', 'dateadd', 'datediff', 'datepart', - 'dateserial', 'datevalue', 'day', 'escape', 'eval', 'execute', 'exp', 'filter', 'formatcurrency', 'formatdatetime', 'formatnumber', 'formatpercent', 'getlocale', 'getobject', - 'getref', 'hex', 'hour', 'inputbox', 'instr', 'instrrev', 'int', 'fix', 'isarray', 'isdate', 'isempty', 'isnull', 'isnumeric', 'isobject', 'join', 'lbound', 'lcase', 'left', - 'len', 'loadpicture', 'log', 'ltrim', 'rtrim', 'trim', 'maths', 'mid', 'minute', 'month', 'monthname', 'msgbox', 'now', 'oct', 'replace', 'rgb', 'right', 'rnd', 'round', - 'scriptengine', 'scriptenginebuildversion', 'scriptenginemajorversion', 'scriptengineminorversion', 'second', 'setlocale', 'sgn', 'sin', 'space', 'split', 'sqr', 'strcomp', - 'string', 'strreverse', 'tan', 'time', 'timer', 'timeserial', 'timevalue', 'typename', 'ubound', 'ucase', 'unescape', 'vartype', 'weekday', 'weekdayname', 'year']; - - //This list was from: http://msdn.microsoft.com/en-us/library/ydz4cfk3(v=vs.84).aspx - var builtinConsts = ['vbBlack', 'vbRed', 'vbGreen', 'vbYellow', 'vbBlue', 'vbMagenta', 'vbCyan', 'vbWhite', 'vbBinaryCompare', 'vbTextCompare', - 'vbSunday', 'vbMonday', 'vbTuesday', 'vbWednesday', 'vbThursday', 'vbFriday', 'vbSaturday', 'vbUseSystemDayOfWeek', 'vbFirstJan1', 'vbFirstFourDays', 'vbFirstFullWeek', - 'vbGeneralDate', 'vbLongDate', 'vbShortDate', 'vbLongTime', 'vbShortTime', 'vbObjectError', - 'vbOKOnly', 'vbOKCancel', 'vbAbortRetryIgnore', 'vbYesNoCancel', 'vbYesNo', 'vbRetryCancel', 'vbCritical', 'vbQuestion', 'vbExclamation', 'vbInformation', 'vbDefaultButton1', 'vbDefaultButton2', - 'vbDefaultButton3', 'vbDefaultButton4', 'vbApplicationModal', 'vbSystemModal', 'vbOK', 'vbCancel', 'vbAbort', 'vbRetry', 'vbIgnore', 'vbYes', 'vbNo', - 'vbCr', 'VbCrLf', 'vbFormFeed', 'vbLf', 'vbNewLine', 'vbNullChar', 'vbNullString', 'vbTab', 'vbVerticalTab', 'vbUseDefault', 'vbTrue', 'vbFalse', - 'vbEmpty', 'vbNull', 'vbInteger', 'vbLong', 'vbSingle', 'vbDouble', 'vbCurrency', 'vbDate', 'vbString', 'vbObject', 'vbError', 'vbBoolean', 'vbVariant', 'vbDataObject', 'vbDecimal', 'vbByte', 'vbArray']; - //This list was from: http://msdn.microsoft.com/en-us/library/hkc375ea(v=vs.84).aspx - var builtinObjsWords = ['WScript', 'err', 'debug', 'RegExp']; - var knownProperties = ['description', 'firstindex', 'global', 'helpcontext', 'helpfile', 'ignorecase', 'length', 'number', 'pattern', 'source', 'value', 'count']; - var knownMethods = ['clear', 'execute', 'raise', 'replace', 'test', 'write', 'writeline', 'close', 'open', 'state', 'eof', 'update', 'addnew', 'end', 'createobject', 'quit']; - - var aspBuiltinObjsWords = ['server', 'response', 'request', 'session', 'application']; - var aspKnownProperties = ['buffer', 'cachecontrol', 'charset', 'contenttype', 'expires', 'expiresabsolute', 'isclientconnected', 'pics', 'status', //response - 'clientcertificate', 'cookies', 'form', 'querystring', 'servervariables', 'totalbytes', //request - 'contents', 'staticobjects', //application - 'codepage', 'lcid', 'sessionid', 'timeout', //session - 'scripttimeout']; //server - var aspKnownMethods = ['addheader', 'appendtolog', 'binarywrite', 'end', 'flush', 'redirect', //response - 'binaryread', //request - 'remove', 'removeall', 'lock', 'unlock', //application - 'abandon', //session - 'getlasterror', 'htmlencode', 'mappath', 'transfer', 'urlencode']; //server - - var knownWords = knownMethods.concat(knownProperties); - - builtinObjsWords = builtinObjsWords.concat(builtinConsts); - - if (conf.isASP){ - builtinObjsWords = builtinObjsWords.concat(aspBuiltinObjsWords); - knownWords = knownWords.concat(aspKnownMethods, aspKnownProperties); - }; - - var keywords = wordRegexp(commonkeywords); - var atoms = wordRegexp(atomWords); - var builtinFuncs = wordRegexp(builtinFuncsWords); - var builtinObjs = wordRegexp(builtinObjsWords); - var known = wordRegexp(knownWords); - var stringPrefixes = '"'; - - var opening = wordRegexp(openingKeywords); - var middle = wordRegexp(middleKeywords); - var closing = wordRegexp(endKeywords); - var doubleClosing = wordRegexp(['end']); - var doOpening = wordRegexp(['do']); - var noIndentWords = wordRegexp(['on error resume next', 'exit']); - var comment = wordRegexp(['rem']); - - - function indent(_stream, state) { - state.currentIndent++; - } - - function dedent(_stream, state) { - state.currentIndent--; - } - // tokenizers - function tokenBase(stream, state) { - if (stream.eatSpace()) { - return 'space'; - //return null; - } - - var ch = stream.peek(); - - // Handle Comments - if (ch === "'") { - stream.skipToEnd(); - return 'comment'; - } - if (stream.match(comment)){ - stream.skipToEnd(); - return 'comment'; - } - - - // Handle Number Literals - if (stream.match(/^((&H)|(&O))?[0-9\.]/i, false) && !stream.match(/^((&H)|(&O))?[0-9\.]+[a-z_]/i, false)) { - var floatLiteral = false; - // Floats - if (stream.match(/^\d*\.\d+/i)) { floatLiteral = true; } - else if (stream.match(/^\d+\.\d*/)) { floatLiteral = true; } - else if (stream.match(/^\.\d+/)) { floatLiteral = true; } - - if (floatLiteral) { - // Float literals may be "imaginary" - stream.eat(/J/i); - return 'number'; - } - // Integers - var intLiteral = false; - // Hex - if (stream.match(/^&H[0-9a-f]+/i)) { intLiteral = true; } - // Octal - else if (stream.match(/^&O[0-7]+/i)) { intLiteral = true; } - // Decimal - else if (stream.match(/^[1-9]\d*F?/)) { - // Decimal literals may be "imaginary" - stream.eat(/J/i); - // TODO - Can you have imaginary longs? - intLiteral = true; - } - // Zero by itself with no other piece of number. - else if (stream.match(/^0(?![\dx])/i)) { intLiteral = true; } - if (intLiteral) { - // Integer literals may be "long" - stream.eat(/L/i); - return 'number'; - } - } - - // Handle Strings - if (stream.match(stringPrefixes)) { - state.tokenize = tokenStringFactory(stream.current()); - return state.tokenize(stream, state); - } - - // Handle operators and Delimiters - if (stream.match(doubleOperators) - || stream.match(singleOperators) - || stream.match(wordOperators)) { - return 'operator'; - } - if (stream.match(singleDelimiters)) { - return null; - } - - if (stream.match(brakets)) { - return "bracket"; - } - - if (stream.match(noIndentWords)) { - state.doInCurrentLine = true; - - return 'keyword'; - } - - if (stream.match(doOpening)) { - indent(stream,state); - state.doInCurrentLine = true; - - return 'keyword'; - } - if (stream.match(opening)) { - if (! state.doInCurrentLine) - indent(stream,state); - else - state.doInCurrentLine = false; - - return 'keyword'; - } - if (stream.match(middle)) { - return 'keyword'; - } - - - if (stream.match(doubleClosing)) { - dedent(stream,state); - dedent(stream,state); - - return 'keyword'; - } - if (stream.match(closing)) { - if (! state.doInCurrentLine) - dedent(stream,state); - else - state.doInCurrentLine = false; - - return 'keyword'; - } - - if (stream.match(keywords)) { - return 'keyword'; - } - - if (stream.match(atoms)) { - return 'atom'; - } - - if (stream.match(known)) { - return 'variable-2'; - } - - if (stream.match(builtinFuncs)) { - return 'builtin'; - } - - if (stream.match(builtinObjs)){ - return 'variable-2'; - } - - if (stream.match(identifiers)) { - return 'variable'; - } - - // Handle non-detected items - stream.next(); - return ERRORCLASS; - } - - function tokenStringFactory(delimiter) { - var singleline = delimiter.length == 1; - var OUTCLASS = 'string'; - - return function(stream, state) { - while (!stream.eol()) { - stream.eatWhile(/[^'"]/); - if (stream.match(delimiter)) { - state.tokenize = tokenBase; - return OUTCLASS; - } else { - stream.eat(/['"]/); - } - } - if (singleline) { - if (parserConf.singleLineStringErrors) { - return ERRORCLASS; - } else { - state.tokenize = tokenBase; - } - } - return OUTCLASS; - }; - } - - - function tokenLexer(stream, state) { - var style = state.tokenize(stream, state); - var current = stream.current(); - - // Handle '.' connected identifiers - if (current === '.') { - style = state.tokenize(stream, state); - - current = stream.current(); - if (style && (style.substr(0, 8) === 'variable' || style==='builtin' || style==='keyword')){//|| knownWords.indexOf(current.substring(1)) > -1) { - if (style === 'builtin' || style === 'keyword') style='variable'; - if (knownWords.indexOf(current.substr(1)) > -1) style='variable-2'; - - return style; - } else { - return ERRORCLASS; - } - } - - return style; - } - - var external = { - electricChars:"dDpPtTfFeE ", - startState: function() { - return { - tokenize: tokenBase, - lastToken: null, - currentIndent: 0, - nextLineIndent: 0, - doInCurrentLine: false, - ignoreKeyword: false - - - }; - }, - - token: function(stream, state) { - if (stream.sol()) { - state.currentIndent += state.nextLineIndent; - state.nextLineIndent = 0; - state.doInCurrentLine = 0; - } - var style = tokenLexer(stream, state); - - state.lastToken = {style:style, content: stream.current()}; - - if (style==='space') style=null; - - return style; - }, - - indent: function(state, textAfter) { - var trueText = textAfter.replace(/^\s+|\s+$/g, '') ; - if (trueText.match(closing) || trueText.match(doubleClosing) || trueText.match(middle)) return conf.indentUnit*(state.currentIndent-1); - if(state.currentIndent < 0) return 0; - return state.currentIndent * conf.indentUnit; - } - - }; - return external; -}); - -CodeMirror.defineMIME("text/vbscript", "vbscript"); - -}); diff --git a/assets/js/plugins/codemirror/mode/velocity/index.html b/assets/js/plugins/codemirror/mode/velocity/index.html deleted file mode 100644 index 27478786..00000000 --- a/assets/js/plugins/codemirror/mode/velocity/index.html +++ /dev/null @@ -1,118 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Velocity mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<link rel="stylesheet" href="../../theme/night.css"> -<script src="../../lib/codemirror.js"></script> -<script src="velocity.js"></script> -<style>.CodeMirror {border: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Velocity</a> - </ul> -</div> - -<article> -<h2>Velocity mode</h2> -<form><textarea id="code" name="code"> -## Velocity Code Demo -#* - based on PL/SQL mode by Peter Raganitsch, adapted to Velocity by Steve O'Hara ( http://www.pivotal-solutions.co.uk ) - August 2011 -*# - -#* - This is a multiline comment. - This is the second line -*# - -#[[ hello steve - This has invalid syntax that would normally need "poor man's escaping" like: - - #define() - - ${blah -]]# - -#include( "disclaimer.txt" "opinion.txt" ) -#include( $foo $bar ) - -#parse( "lecorbusier.vm" ) -#parse( $foo ) - -#evaluate( 'string with VTL #if(true)will be displayed#end' ) - -#define( $hello ) Hello $who #end #set( $who = "World!") $hello ## displays Hello World! - -#foreach( $customer in $customerList ) - - $foreach.count $customer.Name - - #if( $foo == ${bar}) - it's true! - #break - #{else} - it's not! - #stop - #end - - #if ($foreach.parent.hasNext) - $velocityCount - #end -#end - -$someObject.getValues("this is a string split - across lines") - -$someObject("This plus $something in the middle").method(7567).property - -#macro( tablerows $color $somelist ) - #foreach( $something in $somelist ) - <tr><td bgcolor=$color>$something</td></tr> - <tr><td bgcolor=$color>$bodyContent</td></tr> - #end -#end - -#tablerows("red" ["dadsdf","dsa"]) -#@tablerows("red" ["dadsdf","dsa"]) some body content #end - - Variable reference: #set( $monkey = $bill ) - String literal: #set( $monkey.Friend = 'monica' ) - Property reference: #set( $monkey.Blame = $whitehouse.Leak ) - Method reference: #set( $monkey.Plan = $spindoctor.weave($web) ) - Number literal: #set( $monkey.Number = 123 ) - Range operator: #set( $monkey.Numbers = [1..3] ) - Object list: #set( $monkey.Say = ["Not", $my, "fault"] ) - Object map: #set( $monkey.Map = {"banana" : "good", "roast beef" : "bad"}) - -The RHS can also be a simple arithmetic expression, such as: -Addition: #set( $value = $foo + 1 ) - Subtraction: #set( $value = $bar - 1 ) - Multiplication: #set( $value = $foo * $bar ) - Division: #set( $value = $foo / $bar ) - Remainder: #set( $value = $foo % $bar ) - -</textarea></form> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - theme: "night", - lineNumbers: true, - indentUnit: 4, - mode: "text/velocity" - }); - </script> - - <p><strong>MIME types defined:</strong> <code>text/velocity</code>.</p> - - </article> diff --git a/assets/js/plugins/codemirror/mode/velocity/velocity.js b/assets/js/plugins/codemirror/mode/velocity/velocity.js deleted file mode 100644 index 8fc4f95d..00000000 --- a/assets/js/plugins/codemirror/mode/velocity/velocity.js +++ /dev/null @@ -1,201 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("velocity", function() { - function parseWords(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - var keywords = parseWords("#end #else #break #stop #[[ #]] " + - "#{end} #{else} #{break} #{stop}"); - var functions = parseWords("#if #elseif #foreach #set #include #parse #macro #define #evaluate " + - "#{if} #{elseif} #{foreach} #{set} #{include} #{parse} #{macro} #{define} #{evaluate}"); - var specials = parseWords("$foreach.count $foreach.hasNext $foreach.first $foreach.last $foreach.topmost $foreach.parent.count $foreach.parent.hasNext $foreach.parent.first $foreach.parent.last $foreach.parent $velocityCount $!bodyContent $bodyContent"); - var isOperatorChar = /[+\-*&%=<>!?:\/|]/; - - function chain(stream, state, f) { - state.tokenize = f; - return f(stream, state); - } - function tokenBase(stream, state) { - var beforeParams = state.beforeParams; - state.beforeParams = false; - var ch = stream.next(); - // start of unparsed string? - if ((ch == "'") && state.inParams) { - state.lastTokenWasBuiltin = false; - return chain(stream, state, tokenString(ch)); - } - // start of parsed string? - else if ((ch == '"')) { - state.lastTokenWasBuiltin = false; - if (state.inString) { - state.inString = false; - return "string"; - } - else if (state.inParams) - return chain(stream, state, tokenString(ch)); - } - // is it one of the special signs []{}().,;? Seperator? - else if (/[\[\]{}\(\),;\.]/.test(ch)) { - if (ch == "(" && beforeParams) - state.inParams = true; - else if (ch == ")") { - state.inParams = false; - state.lastTokenWasBuiltin = true; - } - return null; - } - // start of a number value? - else if (/\d/.test(ch)) { - state.lastTokenWasBuiltin = false; - stream.eatWhile(/[\w\.]/); - return "number"; - } - // multi line comment? - else if (ch == "#" && stream.eat("*")) { - state.lastTokenWasBuiltin = false; - return chain(stream, state, tokenComment); - } - // unparsed content? - else if (ch == "#" && stream.match(/ *\[ *\[/)) { - state.lastTokenWasBuiltin = false; - return chain(stream, state, tokenUnparsed); - } - // single line comment? - else if (ch == "#" && stream.eat("#")) { - state.lastTokenWasBuiltin = false; - stream.skipToEnd(); - return "comment"; - } - // variable? - else if (ch == "$") { - stream.eatWhile(/[\w\d\$_\.{}]/); - // is it one of the specials? - if (specials && specials.propertyIsEnumerable(stream.current())) { - return "keyword"; - } - else { - state.lastTokenWasBuiltin = true; - state.beforeParams = true; - return "builtin"; - } - } - // is it a operator? - else if (isOperatorChar.test(ch)) { - state.lastTokenWasBuiltin = false; - stream.eatWhile(isOperatorChar); - return "operator"; - } - else { - // get the whole word - stream.eatWhile(/[\w\$_{}@]/); - var word = stream.current(); - // is it one of the listed keywords? - if (keywords && keywords.propertyIsEnumerable(word)) - return "keyword"; - // is it one of the listed functions? - if (functions && functions.propertyIsEnumerable(word) || - (stream.current().match(/^#@?[a-z0-9_]+ *$/i) && stream.peek()=="(") && - !(functions && functions.propertyIsEnumerable(word.toLowerCase()))) { - state.beforeParams = true; - state.lastTokenWasBuiltin = false; - return "keyword"; - } - if (state.inString) { - state.lastTokenWasBuiltin = false; - return "string"; - } - if (stream.pos > word.length && stream.string.charAt(stream.pos-word.length-1)=="." && state.lastTokenWasBuiltin) - return "builtin"; - // default: just a "word" - state.lastTokenWasBuiltin = false; - return null; - } - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next, end = false; - while ((next = stream.next()) != null) { - if ((next == quote) && !escaped) { - end = true; - break; - } - if (quote=='"' && stream.peek() == '$' && !escaped) { - state.inString = true; - end = true; - break; - } - escaped = !escaped && next == "\\"; - } - if (end) state.tokenize = tokenBase; - return "string"; - }; - } - - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "#" && maybeEnd) { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - - function tokenUnparsed(stream, state) { - var maybeEnd = 0, ch; - while (ch = stream.next()) { - if (ch == "#" && maybeEnd == 2) { - state.tokenize = tokenBase; - break; - } - if (ch == "]") - maybeEnd++; - else if (ch != " ") - maybeEnd = 0; - } - return "meta"; - } - // Interface - - return { - startState: function() { - return { - tokenize: tokenBase, - beforeParams: false, - inParams: false, - inString: false, - lastTokenWasBuiltin: false - }; - }, - - token: function(stream, state) { - if (stream.eatSpace()) return null; - return state.tokenize(stream, state); - }, - blockCommentStart: "#*", - blockCommentEnd: "*#", - lineComment: "##", - fold: "velocity" - }; -}); - -CodeMirror.defineMIME("text/velocity", "velocity"); - -}); diff --git a/assets/js/plugins/codemirror/mode/verilog/index.html b/assets/js/plugins/codemirror/mode/verilog/index.html deleted file mode 100644 index 96b3d647..00000000 --- a/assets/js/plugins/codemirror/mode/verilog/index.html +++ /dev/null @@ -1,120 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Verilog/SystemVerilog mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="../../addon/edit/matchbrackets.js"></script> -<script src="verilog.js"></script> -<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Verilog/SystemVerilog</a> - </ul> -</div> - -<article> -<h2>SystemVerilog mode</h2> - -<div><textarea id="code" name="code"> -// Literals -1'b0 -1'bx -1'bz -16'hDC78 -'hdeadbeef -'b0011xxzz -1234 -32'd5678 -3.4e6 --128.7 - -// Macro definition -`define BUS_WIDTH = 8; - -// Module definition -module block( - input clk, - input rst_n, - input [`BUS_WIDTH-1:0] data_in, - output [`BUS_WIDTH-1:0] data_out -); - - always @(posedge clk or negedge rst_n) begin - - if (~rst_n) begin - data_out <= 8'b0; - end else begin - data_out <= data_in; - end - - if (~rst_n) - data_out <= 8'b0; - else - data_out <= data_in; - - if (~rst_n) - begin - data_out <= 8'b0; - end - else - begin - data_out <= data_in; - end - - end - -endmodule - -// Class definition -class test; - - /** - * Sum two integers - */ - function int sum(int a, int b); - int result = a + b; - string msg = $sformatf("%d + %d = %d", a, b, result); - $display(msg); - return result; - endfunction - - task delay(int num_cycles); - repeat(num_cycles) #1; - endtask - -endclass - -</textarea></div> - -<script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers: true, - matchBrackets: true, - mode: { - name: "verilog", - noIndentKeywords: ["package"] - } - }); -</script> - -<p> -Syntax highlighting and indentation for the Verilog and SystemVerilog languages (IEEE 1800). -<h2>Configuration options:</h2> - <ul> - <li><strong>noIndentKeywords</strong> - List of keywords which should not cause identation to increase. E.g. ["package", "module"]. Default: None</li> - </ul> -</p> - -<p><strong>MIME types defined:</strong> <code>text/x-verilog</code> and <code>text/x-systemverilog</code>.</p> -</article> diff --git a/assets/js/plugins/codemirror/mode/verilog/test.js b/assets/js/plugins/codemirror/mode/verilog/test.js deleted file mode 100644 index 9c8c0949..00000000 --- a/assets/js/plugins/codemirror/mode/verilog/test.js +++ /dev/null @@ -1,273 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - var mode = CodeMirror.getMode({indentUnit: 4}, "verilog"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - - MT("binary_literals", - "[number 1'b0]", - "[number 1'b1]", - "[number 1'bx]", - "[number 1'bz]", - "[number 1'bX]", - "[number 1'bZ]", - "[number 1'B0]", - "[number 1'B1]", - "[number 1'Bx]", - "[number 1'Bz]", - "[number 1'BX]", - "[number 1'BZ]", - "[number 1'b0]", - "[number 1'b1]", - "[number 2'b01]", - "[number 2'bxz]", - "[number 2'b11]", - "[number 2'b10]", - "[number 2'b1Z]", - "[number 12'b0101_0101_0101]", - "[number 1'b 0]", - "[number 'b0101]" - ); - - MT("octal_literals", - "[number 3'o7]", - "[number 3'O7]", - "[number 3'so7]", - "[number 3'SO7]" - ); - - MT("decimal_literals", - "[number 0]", - "[number 1]", - "[number 7]", - "[number 123_456]", - "[number 'd33]", - "[number 8'd255]", - "[number 8'D255]", - "[number 8'sd255]", - "[number 8'SD255]", - "[number 32'd123]", - "[number 32 'd123]", - "[number 32 'd 123]" - ); - - MT("hex_literals", - "[number 4'h0]", - "[number 4'ha]", - "[number 4'hF]", - "[number 4'hx]", - "[number 4'hz]", - "[number 4'hX]", - "[number 4'hZ]", - "[number 32'hdc78]", - "[number 32'hDC78]", - "[number 32 'hDC78]", - "[number 32'h DC78]", - "[number 32 'h DC78]", - "[number 32'h44x7]", - "[number 32'hFFF?]" - ); - - MT("real_number_literals", - "[number 1.2]", - "[number 0.1]", - "[number 2394.26331]", - "[number 1.2E12]", - "[number 1.2e12]", - "[number 1.30e-2]", - "[number 0.1e-0]", - "[number 23E10]", - "[number 29E-2]", - "[number 236.123_763_e-12]" - ); - - MT("operators", - "[meta ^]" - ); - - MT("keywords", - "[keyword logic]", - "[keyword logic] [variable foo]", - "[keyword reg] [variable abc]" - ); - - MT("variables", - "[variable _leading_underscore]", - "[variable _if]", - "[number 12] [variable foo]", - "[variable foo] [number 14]" - ); - - MT("tick_defines", - "[def `FOO]", - "[def `foo]", - "[def `FOO_bar]" - ); - - MT("system_calls", - "[meta $display]", - "[meta $vpi_printf]" - ); - - MT("line_comment", "[comment // Hello world]"); - - // Alignment tests - MT("align_port_map_style1", - /** - * mod mod(.a(a), - * .b(b) - * ); - */ - "[variable mod] [variable mod][bracket (].[variable a][bracket (][variable a][bracket )],", - " .[variable b][bracket (][variable b][bracket )]", - " [bracket )];", - "" - ); - - MT("align_port_map_style2", - /** - * mod mod( - * .a(a), - * .b(b) - * ); - */ - "[variable mod] [variable mod][bracket (]", - " .[variable a][bracket (][variable a][bracket )],", - " .[variable b][bracket (][variable b][bracket )]", - "[bracket )];", - "" - ); - - // Indentation tests - MT("indent_single_statement_if", - "[keyword if] [bracket (][variable foo][bracket )]", - " [keyword break];", - "" - ); - - MT("no_indent_after_single_line_if", - "[keyword if] [bracket (][variable foo][bracket )] [keyword break];", - "" - ); - - MT("indent_after_if_begin_same_line", - "[keyword if] [bracket (][variable foo][bracket )] [keyword begin]", - " [keyword break];", - " [keyword break];", - "[keyword end]", - "" - ); - - MT("indent_after_if_begin_next_line", - "[keyword if] [bracket (][variable foo][bracket )]", - " [keyword begin]", - " [keyword break];", - " [keyword break];", - " [keyword end]", - "" - ); - - MT("indent_single_statement_if_else", - "[keyword if] [bracket (][variable foo][bracket )]", - " [keyword break];", - "[keyword else]", - " [keyword break];", - "" - ); - - MT("indent_if_else_begin_same_line", - "[keyword if] [bracket (][variable foo][bracket )] [keyword begin]", - " [keyword break];", - " [keyword break];", - "[keyword end] [keyword else] [keyword begin]", - " [keyword break];", - " [keyword break];", - "[keyword end]", - "" - ); - - MT("indent_if_else_begin_next_line", - "[keyword if] [bracket (][variable foo][bracket )]", - " [keyword begin]", - " [keyword break];", - " [keyword break];", - " [keyword end]", - "[keyword else]", - " [keyword begin]", - " [keyword break];", - " [keyword break];", - " [keyword end]", - "" - ); - - MT("indent_if_nested_without_begin", - "[keyword if] [bracket (][variable foo][bracket )]", - " [keyword if] [bracket (][variable foo][bracket )]", - " [keyword if] [bracket (][variable foo][bracket )]", - " [keyword break];", - "" - ); - - MT("indent_case", - "[keyword case] [bracket (][variable state][bracket )]", - " [variable FOO]:", - " [keyword break];", - " [variable BAR]:", - " [keyword break];", - "[keyword endcase]", - "" - ); - - MT("unindent_after_end_with_preceding_text", - "[keyword begin]", - " [keyword break]; [keyword end]", - "" - ); - - MT("export_function_one_line_does_not_indent", - "[keyword export] [string \"DPI-C\"] [keyword function] [variable helloFromSV];", - "" - ); - - MT("export_task_one_line_does_not_indent", - "[keyword export] [string \"DPI-C\"] [keyword task] [variable helloFromSV];", - "" - ); - - MT("export_function_two_lines_indents_properly", - "[keyword export]", - " [string \"DPI-C\"] [keyword function] [variable helloFromSV];", - "" - ); - - MT("export_task_two_lines_indents_properly", - "[keyword export]", - " [string \"DPI-C\"] [keyword task] [variable helloFromSV];", - "" - ); - - MT("import_function_one_line_does_not_indent", - "[keyword import] [string \"DPI-C\"] [keyword function] [variable helloFromC];", - "" - ); - - MT("import_task_one_line_does_not_indent", - "[keyword import] [string \"DPI-C\"] [keyword task] [variable helloFromC];", - "" - ); - - MT("import_package_single_line_does_not_indent", - "[keyword import] [variable p]::[variable x];", - "[keyword import] [variable p]::[variable y];", - "" - ); - - MT("covergoup_with_function_indents_properly", - "[keyword covergroup] [variable cg] [keyword with] [keyword function] [variable sample][bracket (][keyword bit] [variable b][bracket )];", - " [variable c] : [keyword coverpoint] [variable c];", - "[keyword endgroup]: [variable cg]", - "" - ); - -})(); diff --git a/assets/js/plugins/codemirror/mode/verilog/verilog.js b/assets/js/plugins/codemirror/mode/verilog/verilog.js deleted file mode 100644 index 8fc9ea4f..00000000 --- a/assets/js/plugins/codemirror/mode/verilog/verilog.js +++ /dev/null @@ -1,364 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("verilog", function(config, parserConfig) { - - var indentUnit = config.indentUnit, - statementIndentUnit = parserConfig.statementIndentUnit || indentUnit, - dontAlignCalls = parserConfig.dontAlignCalls, - noIndentKeywords = parserConfig.noIndentKeywords || [], - multiLineStrings = parserConfig.multiLineStrings; - - function words(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - /** - * Keywords from IEEE 1800-2012 - */ - var keywords = words( - "accept_on alias always always_comb always_ff always_latch and assert assign assume automatic before begin bind " + - "bins binsof bit break buf bufif0 bufif1 byte case casex casez cell chandle checker class clocking cmos config " + - "const constraint context continue cover covergroup coverpoint cross deassign default defparam design disable " + - "dist do edge else end endcase endchecker endclass endclocking endconfig endfunction endgenerate endgroup " + - "endinterface endmodule endpackage endprimitive endprogram endproperty endspecify endsequence endtable endtask " + - "enum event eventually expect export extends extern final first_match for force foreach forever fork forkjoin " + - "function generate genvar global highz0 highz1 if iff ifnone ignore_bins illegal_bins implements implies import " + - "incdir include initial inout input inside instance int integer interconnect interface intersect join join_any " + - "join_none large let liblist library local localparam logic longint macromodule matches medium modport module " + - "nand negedge nettype new nexttime nmos nor noshowcancelled not notif0 notif1 null or output package packed " + - "parameter pmos posedge primitive priority program property protected pull0 pull1 pulldown pullup " + - "pulsestyle_ondetect pulsestyle_onevent pure rand randc randcase randsequence rcmos real realtime ref reg " + - "reject_on release repeat restrict return rnmos rpmos rtran rtranif0 rtranif1 s_always s_eventually s_nexttime " + - "s_until s_until_with scalared sequence shortint shortreal showcancelled signed small soft solve specify " + - "specparam static string strong strong0 strong1 struct super supply0 supply1 sync_accept_on sync_reject_on " + - "table tagged task this throughout time timeprecision timeunit tran tranif0 tranif1 tri tri0 tri1 triand trior " + - "trireg type typedef union unique unique0 unsigned until until_with untyped use uwire var vectored virtual void " + - "wait wait_order wand weak weak0 weak1 while wildcard wire with within wor xnor xor"); - - /** Operators from IEEE 1800-2012 - unary_operator ::= - + | - | ! | ~ | & | ~& | | | ~| | ^ | ~^ | ^~ - binary_operator ::= - + | - | * | / | % | == | != | === | !== | ==? | !=? | && | || | ** - | < | <= | > | >= | & | | | ^ | ^~ | ~^ | >> | << | >>> | <<< - | -> | <-> - inc_or_dec_operator ::= ++ | -- - unary_module_path_operator ::= - ! | ~ | & | ~& | | | ~| | ^ | ~^ | ^~ - binary_module_path_operator ::= - == | != | && | || | & | | | ^ | ^~ | ~^ - */ - var isOperatorChar = /[\+\-\*\/!~&|^%=?:]/; - var isBracketChar = /[\[\]{}()]/; - - var unsignedNumber = /\d[0-9_]*/; - var decimalLiteral = /\d*\s*'s?d\s*\d[0-9_]*/i; - var binaryLiteral = /\d*\s*'s?b\s*[xz01][xz01_]*/i; - var octLiteral = /\d*\s*'s?o\s*[xz0-7][xz0-7_]*/i; - var hexLiteral = /\d*\s*'s?h\s*[0-9a-fxz?][0-9a-fxz?_]*/i; - var realLiteral = /(\d[\d_]*(\.\d[\d_]*)?E-?[\d_]+)|(\d[\d_]*\.\d[\d_]*)/i; - - var closingBracketOrWord = /^((\w+)|[)}\]])/; - var closingBracket = /[)}\]]/; - - var curPunc; - var curKeyword; - - // Block openings which are closed by a matching keyword in the form of ("end" + keyword) - // E.g. "task" => "endtask" - var blockKeywords = words( - "case checker class clocking config function generate interface module package" + - "primitive program property specify sequence table task" - ); - - // Opening/closing pairs - var openClose = {}; - for (var keyword in blockKeywords) { - openClose[keyword] = "end" + keyword; - } - openClose["begin"] = "end"; - openClose["casex"] = "endcase"; - openClose["casez"] = "endcase"; - openClose["do" ] = "while"; - openClose["fork" ] = "join;join_any;join_none"; - openClose["covergroup"] = "endgroup"; - - for (var i in noIndentKeywords) { - var keyword = noIndentKeywords[i]; - if (openClose[keyword]) { - openClose[keyword] = undefined; - } - } - - // Keywords which open statements that are ended with a semi-colon - var statementKeywords = words("always always_comb always_ff always_latch assert assign assume else export for foreach forever if import initial repeat while"); - - function tokenBase(stream, state) { - var ch = stream.peek(); - if (/[,;:\.]/.test(ch)) { - curPunc = stream.next(); - return null; - } - if (isBracketChar.test(ch)) { - curPunc = stream.next(); - return "bracket"; - } - // Macros (tick-defines) - if (ch == '`') { - stream.next(); - if (stream.eatWhile(/[\w\$_]/)) { - return "def"; - } else { - return null; - } - } - // System calls - if (ch == '$') { - stream.next(); - if (stream.eatWhile(/[\w\$_]/)) { - return "meta"; - } else { - return null; - } - } - // Time literals - if (ch == '#') { - stream.next(); - stream.eatWhile(/[\d_.]/); - return "def"; - } - // Strings - if (ch == '"') { - stream.next(); - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } - // Comments - if (ch == "/") { - stream.next(); - if (stream.eat("*")) { - state.tokenize = tokenComment; - return tokenComment(stream, state); - } - if (stream.eat("/")) { - stream.skipToEnd(); - return "comment"; - } - stream.backUp(1); - } - - // Numeric literals - if (stream.match(realLiteral) || - stream.match(decimalLiteral) || - stream.match(binaryLiteral) || - stream.match(octLiteral) || - stream.match(hexLiteral) || - stream.match(unsignedNumber) || - stream.match(realLiteral)) { - return "number"; - } - - // Operators - if (stream.eatWhile(isOperatorChar)) { - return "meta"; - } - - // Keywords / plain variables - if (stream.eatWhile(/[\w\$_]/)) { - var cur = stream.current(); - if (keywords[cur]) { - if (openClose[cur]) { - curPunc = "newblock"; - } - if (statementKeywords[cur]) { - curPunc = "newstatement"; - } - curKeyword = cur; - return "keyword"; - } - return "variable"; - } - - stream.next(); - return null; - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next, end = false; - while ((next = stream.next()) != null) { - if (next == quote && !escaped) {end = true; break;} - escaped = !escaped && next == "\\"; - } - if (end || !(escaped || multiLineStrings)) - state.tokenize = tokenBase; - return "string"; - }; - } - - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - - function Context(indented, column, type, align, prev) { - this.indented = indented; - this.column = column; - this.type = type; - this.align = align; - this.prev = prev; - } - function pushContext(state, col, type) { - var indent = state.indented; - var c = new Context(indent, col, type, null, state.context); - return state.context = c; - } - function popContext(state) { - var t = state.context.type; - if (t == ")" || t == "]" || t == "}") { - state.indented = state.context.indented; - } - return state.context = state.context.prev; - } - - function isClosing(text, contextClosing) { - if (text == contextClosing) { - return true; - } else { - // contextClosing may be mulitple keywords separated by ; - var closingKeywords = contextClosing.split(";"); - for (var i in closingKeywords) { - if (text == closingKeywords[i]) { - return true; - } - } - return false; - } - } - - function buildElectricInputRegEx() { - // Reindentation should occur on any bracket char: {}()[] - // or on a match of any of the block closing keywords, at - // the end of a line - var allClosings = []; - for (var i in openClose) { - if (openClose[i]) { - var closings = openClose[i].split(";"); - for (var j in closings) { - allClosings.push(closings[j]); - } - } - } - var re = new RegExp("[{}()\\[\\]]|(" + allClosings.join("|") + ")$"); - return re; - } - - // Interface - return { - - // Regex to force current line to reindent - electricInput: buildElectricInputRegEx(), - - startState: function(basecolumn) { - return { - tokenize: null, - context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), - indented: 0, - startOfLine: true - }; - }, - - token: function(stream, state) { - var ctx = state.context; - if (stream.sol()) { - if (ctx.align == null) ctx.align = false; - state.indented = stream.indentation(); - state.startOfLine = true; - } - if (stream.eatSpace()) return null; - curPunc = null; - curKeyword = null; - var style = (state.tokenize || tokenBase)(stream, state); - if (style == "comment" || style == "meta" || style == "variable") return style; - if (ctx.align == null) ctx.align = true; - - if (curPunc == ctx.type) { - popContext(state); - } - else if ((curPunc == ";" && ctx.type == "statement") || - (ctx.type && isClosing(curKeyword, ctx.type))) { - ctx = popContext(state); - while (ctx && ctx.type == "statement") ctx = popContext(state); - } - else if (curPunc == "{") { pushContext(state, stream.column(), "}"); } - else if (curPunc == "[") { pushContext(state, stream.column(), "]"); } - else if (curPunc == "(") { pushContext(state, stream.column(), ")"); } - else if (ctx && ctx.type == "endcase" && curPunc == ":") { pushContext(state, stream.column(), "statement"); } - else if (curPunc == "newstatement") { - pushContext(state, stream.column(), "statement"); - } else if (curPunc == "newblock") { - if (curKeyword == "function" && ctx && (ctx.type == "statement" || ctx.type == "endgroup")) { - // The 'function' keyword can appear in some other contexts where it actually does not - // indicate a function (import/export DPI and covergroup definitions). - // Do nothing in this case - } else if (curKeyword == "task" && ctx && ctx.type == "statement") { - // Same thing for task - } else { - var close = openClose[curKeyword]; - pushContext(state, stream.column(), close); - } - } - - state.startOfLine = false; - return style; - }, - - indent: function(state, textAfter) { - if (state.tokenize != tokenBase && state.tokenize != null) return CodeMirror.Pass; - var ctx = state.context, firstChar = textAfter && textAfter.charAt(0); - if (ctx.type == "statement" && firstChar == "}") ctx = ctx.prev; - var closing = false; - var possibleClosing = textAfter.match(closingBracketOrWord); - if (possibleClosing) { - closing = isClosing(possibleClosing[0], ctx.type); - } - if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : statementIndentUnit); - else if (closingBracket.test(ctx.type) && ctx.align && !dontAlignCalls) return ctx.column + (closing ? 0 : 1); - else if (ctx.type == ")" && !closing) return ctx.indented + statementIndentUnit; - else return ctx.indented + (closing ? 0 : indentUnit); - }, - - blockCommentStart: "/*", - blockCommentEnd: "*/", - lineComment: "//" - }; -}); - -CodeMirror.defineMIME("text/x-verilog", { - name: "verilog" -}); -CodeMirror.defineMIME("text/x-systemverilog", { - name: "systemverilog" -}); - -}); diff --git a/assets/js/plugins/codemirror/mode/xml/index.html b/assets/js/plugins/codemirror/mode/xml/index.html deleted file mode 100644 index 7149f06b..00000000 --- a/assets/js/plugins/codemirror/mode/xml/index.html +++ /dev/null @@ -1,57 +0,0 @@ -<!doctype html> - -<title>CodeMirror: XML mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="xml.js"></script> -<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">XML</a> - </ul> -</div> - -<article> -<h2>XML mode</h2> -<form><textarea id="code" name="code"> -&lt;html style="color: green"&gt; - &lt;!-- this is a comment --&gt; - &lt;head&gt; - &lt;title&gt;HTML Example&lt;/title&gt; - &lt;/head&gt; - &lt;body&gt; - The indentation tries to be &lt;em&gt;somewhat &amp;quot;do what - I mean&amp;quot;&lt;/em&gt;... but might not match your style. - &lt;/body&gt; -&lt;/html&gt; -</textarea></form> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - mode: "text/html", - lineNumbers: true - }); - </script> - <p>The XML mode supports two configuration parameters:</p> - <dl> - <dt><code>htmlMode (boolean)</code></dt> - <dd>This switches the mode to parse HTML instead of XML. This - means attributes do not have to be quoted, and some elements - (such as <code>br</code>) do not require a closing tag.</dd> - <dt><code>alignCDATA (boolean)</code></dt> - <dd>Setting this to true will force the opening tag of CDATA - blocks to not be indented.</dd> - </dl> - - <p><strong>MIME types defined:</strong> <code>application/xml</code>, <code>text/html</code>.</p> - </article> diff --git a/assets/js/plugins/codemirror/mode/xml/test.js b/assets/js/plugins/codemirror/mode/xml/test.js deleted file mode 100644 index f48156b5..00000000 --- a/assets/js/plugins/codemirror/mode/xml/test.js +++ /dev/null @@ -1,51 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - var mode = CodeMirror.getMode({indentUnit: 2}, "xml"), mname = "xml"; - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), mname); } - - MT("matching", - "[tag&bracket <][tag top][tag&bracket >]", - " text", - " [tag&bracket <][tag inner][tag&bracket />]", - "[tag&bracket </][tag top][tag&bracket >]"); - - MT("nonmatching", - "[tag&bracket <][tag top][tag&bracket >]", - " [tag&bracket <][tag inner][tag&bracket />]", - " [tag&bracket </][tag&error tip][tag&bracket&error >]"); - - MT("doctype", - "[meta <!doctype foobar>]", - "[tag&bracket <][tag top][tag&bracket />]"); - - MT("cdata", - "[tag&bracket <][tag top][tag&bracket >]", - " [atom <![CDATA[foo]", - "[atom barbazguh]]]]>]", - "[tag&bracket </][tag top][tag&bracket >]"); - - // HTML tests - mode = CodeMirror.getMode({indentUnit: 2}, "text/html"); - - MT("selfclose", - "[tag&bracket <][tag html][tag&bracket >]", - " [tag&bracket <][tag link] [attribute rel]=[string stylesheet] [attribute href]=[string \"/foobar\"][tag&bracket >]", - "[tag&bracket </][tag html][tag&bracket >]"); - - MT("list", - "[tag&bracket <][tag ol][tag&bracket >]", - " [tag&bracket <][tag li][tag&bracket >]one", - " [tag&bracket <][tag li][tag&bracket >]two", - "[tag&bracket </][tag ol][tag&bracket >]"); - - MT("valueless", - "[tag&bracket <][tag input] [attribute type]=[string checkbox] [attribute checked][tag&bracket />]"); - - MT("pThenArticle", - "[tag&bracket <][tag p][tag&bracket >]", - " foo", - "[tag&bracket <][tag article][tag&bracket >]bar"); - -})(); diff --git a/assets/js/plugins/codemirror/mode/xml/xml.js b/assets/js/plugins/codemirror/mode/xml/xml.js deleted file mode 100644 index 2f3b8f87..00000000 --- a/assets/js/plugins/codemirror/mode/xml/xml.js +++ /dev/null @@ -1,384 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("xml", function(config, parserConfig) { - var indentUnit = config.indentUnit; - var multilineTagIndentFactor = parserConfig.multilineTagIndentFactor || 1; - var multilineTagIndentPastTag = parserConfig.multilineTagIndentPastTag; - if (multilineTagIndentPastTag == null) multilineTagIndentPastTag = true; - - var Kludges = parserConfig.htmlMode ? { - autoSelfClosers: {'area': true, 'base': true, 'br': true, 'col': true, 'command': true, - 'embed': true, 'frame': true, 'hr': true, 'img': true, 'input': true, - 'keygen': true, 'link': true, 'meta': true, 'param': true, 'source': true, - 'track': true, 'wbr': true, 'menuitem': true}, - implicitlyClosed: {'dd': true, 'li': true, 'optgroup': true, 'option': true, 'p': true, - 'rp': true, 'rt': true, 'tbody': true, 'td': true, 'tfoot': true, - 'th': true, 'tr': true}, - contextGrabbers: { - 'dd': {'dd': true, 'dt': true}, - 'dt': {'dd': true, 'dt': true}, - 'li': {'li': true}, - 'option': {'option': true, 'optgroup': true}, - 'optgroup': {'optgroup': true}, - 'p': {'address': true, 'article': true, 'aside': true, 'blockquote': true, 'dir': true, - 'div': true, 'dl': true, 'fieldset': true, 'footer': true, 'form': true, - 'h1': true, 'h2': true, 'h3': true, 'h4': true, 'h5': true, 'h6': true, - 'header': true, 'hgroup': true, 'hr': true, 'menu': true, 'nav': true, 'ol': true, - 'p': true, 'pre': true, 'section': true, 'table': true, 'ul': true}, - 'rp': {'rp': true, 'rt': true}, - 'rt': {'rp': true, 'rt': true}, - 'tbody': {'tbody': true, 'tfoot': true}, - 'td': {'td': true, 'th': true}, - 'tfoot': {'tbody': true}, - 'th': {'td': true, 'th': true}, - 'thead': {'tbody': true, 'tfoot': true}, - 'tr': {'tr': true} - }, - doNotIndent: {"pre": true}, - allowUnquoted: true, - allowMissing: true, - caseFold: true - } : { - autoSelfClosers: {}, - implicitlyClosed: {}, - contextGrabbers: {}, - doNotIndent: {}, - allowUnquoted: false, - allowMissing: false, - caseFold: false - }; - var alignCDATA = parserConfig.alignCDATA; - - // Return variables for tokenizers - var type, setStyle; - - function inText(stream, state) { - function chain(parser) { - state.tokenize = parser; - return parser(stream, state); - } - - var ch = stream.next(); - if (ch == "<") { - if (stream.eat("!")) { - if (stream.eat("[")) { - if (stream.match("CDATA[")) return chain(inBlock("atom", "]]>")); - else return null; - } else if (stream.match("--")) { - return chain(inBlock("comment", "-->")); - } else if (stream.match("DOCTYPE", true, true)) { - stream.eatWhile(/[\w\._\-]/); - return chain(doctype(1)); - } else { - return null; - } - } else if (stream.eat("?")) { - stream.eatWhile(/[\w\._\-]/); - state.tokenize = inBlock("meta", "?>"); - return "meta"; - } else { - type = stream.eat("/") ? "closeTag" : "openTag"; - state.tokenize = inTag; - return "tag bracket"; - } - } else if (ch == "&") { - var ok; - if (stream.eat("#")) { - if (stream.eat("x")) { - ok = stream.eatWhile(/[a-fA-F\d]/) && stream.eat(";"); - } else { - ok = stream.eatWhile(/[\d]/) && stream.eat(";"); - } - } else { - ok = stream.eatWhile(/[\w\.\-:]/) && stream.eat(";"); - } - return ok ? "atom" : "error"; - } else { - stream.eatWhile(/[^&<]/); - return null; - } - } - - function inTag(stream, state) { - var ch = stream.next(); - if (ch == ">" || (ch == "/" && stream.eat(">"))) { - state.tokenize = inText; - type = ch == ">" ? "endTag" : "selfcloseTag"; - return "tag bracket"; - } else if (ch == "=") { - type = "equals"; - return null; - } else if (ch == "<") { - state.tokenize = inText; - state.state = baseState; - state.tagName = state.tagStart = null; - var next = state.tokenize(stream, state); - return next ? next + " tag error" : "tag error"; - } else if (/[\'\"]/.test(ch)) { - state.tokenize = inAttribute(ch); - state.stringStartCol = stream.column(); - return state.tokenize(stream, state); - } else { - stream.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/); - return "word"; - } - } - - function inAttribute(quote) { - var closure = function(stream, state) { - while (!stream.eol()) { - if (stream.next() == quote) { - state.tokenize = inTag; - break; - } - } - return "string"; - }; - closure.isInAttribute = true; - return closure; - } - - function inBlock(style, terminator) { - return function(stream, state) { - while (!stream.eol()) { - if (stream.match(terminator)) { - state.tokenize = inText; - break; - } - stream.next(); - } - return style; - }; - } - function doctype(depth) { - return function(stream, state) { - var ch; - while ((ch = stream.next()) != null) { - if (ch == "<") { - state.tokenize = doctype(depth + 1); - return state.tokenize(stream, state); - } else if (ch == ">") { - if (depth == 1) { - state.tokenize = inText; - break; - } else { - state.tokenize = doctype(depth - 1); - return state.tokenize(stream, state); - } - } - } - return "meta"; - }; - } - - function Context(state, tagName, startOfLine) { - this.prev = state.context; - this.tagName = tagName; - this.indent = state.indented; - this.startOfLine = startOfLine; - if (Kludges.doNotIndent.hasOwnProperty(tagName) || (state.context && state.context.noIndent)) - this.noIndent = true; - } - function popContext(state) { - if (state.context) state.context = state.context.prev; - } - function maybePopContext(state, nextTagName) { - var parentTagName; - while (true) { - if (!state.context) { - return; - } - parentTagName = state.context.tagName; - if (!Kludges.contextGrabbers.hasOwnProperty(parentTagName) || - !Kludges.contextGrabbers[parentTagName].hasOwnProperty(nextTagName)) { - return; - } - popContext(state); - } - } - - function baseState(type, stream, state) { - if (type == "openTag") { - state.tagStart = stream.column(); - return tagNameState; - } else if (type == "closeTag") { - return closeTagNameState; - } else { - return baseState; - } - } - function tagNameState(type, stream, state) { - if (type == "word") { - state.tagName = stream.current(); - setStyle = "tag"; - return attrState; - } else { - setStyle = "error"; - return tagNameState; - } - } - function closeTagNameState(type, stream, state) { - if (type == "word") { - var tagName = stream.current(); - if (state.context && state.context.tagName != tagName && - Kludges.implicitlyClosed.hasOwnProperty(state.context.tagName)) - popContext(state); - if (state.context && state.context.tagName == tagName) { - setStyle = "tag"; - return closeState; - } else { - setStyle = "tag error"; - return closeStateErr; - } - } else { - setStyle = "error"; - return closeStateErr; - } - } - - function closeState(type, _stream, state) { - if (type != "endTag") { - setStyle = "error"; - return closeState; - } - popContext(state); - return baseState; - } - function closeStateErr(type, stream, state) { - setStyle = "error"; - return closeState(type, stream, state); - } - - function attrState(type, _stream, state) { - if (type == "word") { - setStyle = "attribute"; - return attrEqState; - } else if (type == "endTag" || type == "selfcloseTag") { - var tagName = state.tagName, tagStart = state.tagStart; - state.tagName = state.tagStart = null; - if (type == "selfcloseTag" || - Kludges.autoSelfClosers.hasOwnProperty(tagName)) { - maybePopContext(state, tagName); - } else { - maybePopContext(state, tagName); - state.context = new Context(state, tagName, tagStart == state.indented); - } - return baseState; - } - setStyle = "error"; - return attrState; - } - function attrEqState(type, stream, state) { - if (type == "equals") return attrValueState; - if (!Kludges.allowMissing) setStyle = "error"; - return attrState(type, stream, state); - } - function attrValueState(type, stream, state) { - if (type == "string") return attrContinuedState; - if (type == "word" && Kludges.allowUnquoted) {setStyle = "string"; return attrState;} - setStyle = "error"; - return attrState(type, stream, state); - } - function attrContinuedState(type, stream, state) { - if (type == "string") return attrContinuedState; - return attrState(type, stream, state); - } - - return { - startState: function() { - return {tokenize: inText, - state: baseState, - indented: 0, - tagName: null, tagStart: null, - context: null}; - }, - - token: function(stream, state) { - if (!state.tagName && stream.sol()) - state.indented = stream.indentation(); - - if (stream.eatSpace()) return null; - type = null; - var style = state.tokenize(stream, state); - if ((style || type) && style != "comment") { - setStyle = null; - state.state = state.state(type || style, stream, state); - if (setStyle) - style = setStyle == "error" ? style + " error" : setStyle; - } - return style; - }, - - indent: function(state, textAfter, fullLine) { - var context = state.context; - // Indent multi-line strings (e.g. css). - if (state.tokenize.isInAttribute) { - if (state.tagStart == state.indented) - return state.stringStartCol + 1; - else - return state.indented + indentUnit; - } - if (context && context.noIndent) return CodeMirror.Pass; - if (state.tokenize != inTag && state.tokenize != inText) - return fullLine ? fullLine.match(/^(\s*)/)[0].length : 0; - // Indent the starts of attribute names. - if (state.tagName) { - if (multilineTagIndentPastTag) - return state.tagStart + state.tagName.length + 2; - else - return state.tagStart + indentUnit * multilineTagIndentFactor; - } - if (alignCDATA && /<!\[CDATA\[/.test(textAfter)) return 0; - var tagAfter = textAfter && /^<(\/)?([\w_:\.-]*)/.exec(textAfter); - if (tagAfter && tagAfter[1]) { // Closing tag spotted - while (context) { - if (context.tagName == tagAfter[2]) { - context = context.prev; - break; - } else if (Kludges.implicitlyClosed.hasOwnProperty(context.tagName)) { - context = context.prev; - } else { - break; - } - } - } else if (tagAfter) { // Opening tag spotted - while (context) { - var grabbers = Kludges.contextGrabbers[context.tagName]; - if (grabbers && grabbers.hasOwnProperty(tagAfter[2])) - context = context.prev; - else - break; - } - } - while (context && !context.startOfLine) - context = context.prev; - if (context) return context.indent + indentUnit; - else return 0; - }, - - electricInput: /<\/[\s\w:]+>$/, - blockCommentStart: "<!--", - blockCommentEnd: "-->", - - configuration: parserConfig.htmlMode ? "html" : "xml", - helperType: parserConfig.htmlMode ? "html" : "xml" - }; -}); - -CodeMirror.defineMIME("text/xml", "xml"); -CodeMirror.defineMIME("application/xml", "xml"); -if (!CodeMirror.mimeModes.hasOwnProperty("text/html")) - CodeMirror.defineMIME("text/html", {name: "xml", htmlMode: true}); - -}); diff --git a/assets/js/plugins/codemirror/mode/xquery/index.html b/assets/js/plugins/codemirror/mode/xquery/index.html deleted file mode 100644 index 7ac5aaef..00000000 --- a/assets/js/plugins/codemirror/mode/xquery/index.html +++ /dev/null @@ -1,210 +0,0 @@ -<!doctype html> - -<title>CodeMirror: XQuery mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<link rel="stylesheet" href="../../theme/xq-dark.css"> -<script src="../../lib/codemirror.js"></script> -<script src="xquery.js"></script> -<style type="text/css"> - .CodeMirror { - border-top: 1px solid black; border-bottom: 1px solid black; - height:400px; - } - </style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">XQuery</a> - </ul> -</div> - -<article> -<h2>XQuery mode</h2> - - -<div class="cm-s-default"> - <textarea id="code" name="code"> -xquery version &quot;1.0-ml&quot;; -(: this is - : a - "comment" :) -let $let := &lt;x attr=&quot;value&quot;&gt;&quot;test&quot;&lt;func&gt;function() $var {function()} {$var}&lt;/func&gt;&lt;/x&gt; -let $joe:=1 -return element element { - attribute attribute { 1 }, - element test { &#39;a&#39; }, - attribute foo { &quot;bar&quot; }, - fn:doc()[ foo/@bar eq $let ], - //x } - -(: a more 'evil' test :) -(: Modified Blakeley example (: with nested comment :) ... :) -declare private function local:declare() {()}; -declare private function local:private() {()}; -declare private function local:function() {()}; -declare private function local:local() {()}; -let $let := &lt;let&gt;let $let := &quot;let&quot;&lt;/let&gt; -return element element { - attribute attribute { try { xdmp:version() } catch($e) { xdmp:log($e) } }, - attribute fn:doc { &quot;bar&quot; castable as xs:string }, - element text { text { &quot;text&quot; } }, - fn:doc()[ child::eq/(@bar | attribute::attribute) eq $let ], - //fn:doc -} - - - -xquery version &quot;1.0-ml&quot;; - -(: Copyright 2006-2010 Mark Logic Corporation. :) - -(: - : Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); - : you may not use this file except in compliance with the License. - : You may obtain a copy of the License at - : - : http://www.apache.org/licenses/LICENSE-2.0 - : - : Unless required by applicable law or agreed to in writing, software - : distributed under the License is distributed on an &quot;AS IS&quot; BASIS, - : WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - : See the License for the specific language governing permissions and - : limitations under the License. - :) - -module namespace json = &quot;http://marklogic.com/json&quot;; -declare default function namespace &quot;http://www.w3.org/2005/xpath-functions&quot;; - -(: Need to backslash escape any double quotes, backslashes, and newlines :) -declare function json:escape($s as xs:string) as xs:string { - let $s := replace($s, &quot;\\&quot;, &quot;\\\\&quot;) - let $s := replace($s, &quot;&quot;&quot;&quot;, &quot;\\&quot;&quot;&quot;) - let $s := replace($s, codepoints-to-string((13, 10)), &quot;\\n&quot;) - let $s := replace($s, codepoints-to-string(13), &quot;\\n&quot;) - let $s := replace($s, codepoints-to-string(10), &quot;\\n&quot;) - return $s -}; - -declare function json:atomize($x as element()) as xs:string { - if (count($x/node()) = 0) then 'null' - else if ($x/@type = &quot;number&quot;) then - let $castable := $x castable as xs:float or - $x castable as xs:double or - $x castable as xs:decimal - return - if ($castable) then xs:string($x) - else error(concat(&quot;Not a number: &quot;, xdmp:describe($x))) - else if ($x/@type = &quot;boolean&quot;) then - let $castable := $x castable as xs:boolean - return - if ($castable) then xs:string(xs:boolean($x)) - else error(concat(&quot;Not a boolean: &quot;, xdmp:describe($x))) - else concat('&quot;', json:escape($x), '&quot;') -}; - -(: Print the thing that comes after the colon :) -declare function json:print-value($x as element()) as xs:string { - if (count($x/*) = 0) then - json:atomize($x) - else if ($x/@quote = &quot;true&quot;) then - concat('&quot;', json:escape(xdmp:quote($x/node())), '&quot;') - else - string-join(('{', - string-join(for $i in $x/* return json:print-name-value($i), &quot;,&quot;), - '}'), &quot;&quot;) -}; - -(: Print the name and value both :) -declare function json:print-name-value($x as element()) as xs:string? { - let $name := name($x) - let $first-in-array := - count($x/preceding-sibling::*[name(.) = $name]) = 0 and - (count($x/following-sibling::*[name(.) = $name]) &gt; 0 or $x/@array = &quot;true&quot;) - let $later-in-array := count($x/preceding-sibling::*[name(.) = $name]) &gt; 0 - return - - if ($later-in-array) then - () (: I was handled previously :) - else if ($first-in-array) then - string-join(('&quot;', json:escape($name), '&quot;:[', - string-join((for $i in ($x, $x/following-sibling::*[name(.) = $name]) return json:print-value($i)), &quot;,&quot;), - ']'), &quot;&quot;) - else - string-join(('&quot;', json:escape($name), '&quot;:', json:print-value($x)), &quot;&quot;) -}; - -(:~ - Transforms an XML element into a JSON string representation. See http://json.org. - &lt;p/&gt; - Sample usage: - &lt;pre&gt; - xquery version &quot;1.0-ml&quot;; - import module namespace json=&quot;http://marklogic.com/json&quot; at &quot;json.xqy&quot;; - json:serialize(&amp;lt;foo&amp;gt;&amp;lt;bar&amp;gt;kid&amp;lt;/bar&amp;gt;&amp;lt;/foo&amp;gt;) - &lt;/pre&gt; - Sample transformations: - &lt;pre&gt; - &amp;lt;e/&amp;gt; becomes {&quot;e&quot;:null} - &amp;lt;e&amp;gt;text&amp;lt;/e&amp;gt; becomes {&quot;e&quot;:&quot;text&quot;} - &amp;lt;e&amp;gt;quote &quot; escaping&amp;lt;/e&amp;gt; becomes {&quot;e&quot;:&quot;quote \&quot; escaping&quot;} - &amp;lt;e&amp;gt;backslash \ escaping&amp;lt;/e&amp;gt; becomes {&quot;e&quot;:&quot;backslash \\ escaping&quot;} - &amp;lt;e&amp;gt;&amp;lt;a&amp;gt;text1&amp;lt;/a&amp;gt;&amp;lt;b&amp;gt;text2&amp;lt;/b&amp;gt;&amp;lt;/e&amp;gt; becomes {&quot;e&quot;:{&quot;a&quot;:&quot;text1&quot;,&quot;b&quot;:&quot;text2&quot;}} - &amp;lt;e&amp;gt;&amp;lt;a&amp;gt;text1&amp;lt;/a&amp;gt;&amp;lt;a&amp;gt;text2&amp;lt;/a&amp;gt;&amp;lt;/e&amp;gt; becomes {&quot;e&quot;:{&quot;a&quot;:[&quot;text1&quot;,&quot;text2&quot;]}} - &amp;lt;e&amp;gt;&amp;lt;a array=&quot;true&quot;&amp;gt;text1&amp;lt;/a&amp;gt;&amp;lt;/e&amp;gt; becomes {&quot;e&quot;:{&quot;a&quot;:[&quot;text1&quot;]}} - &amp;lt;e&amp;gt;&amp;lt;a type=&quot;boolean&quot;&amp;gt;false&amp;lt;/a&amp;gt;&amp;lt;/e&amp;gt; becomes {&quot;e&quot;:{&quot;a&quot;:false}} - &amp;lt;e&amp;gt;&amp;lt;a type=&quot;number&quot;&amp;gt;123.5&amp;lt;/a&amp;gt;&amp;lt;/e&amp;gt; becomes {&quot;e&quot;:{&quot;a&quot;:123.5}} - &amp;lt;e quote=&quot;true&quot;&amp;gt;&amp;lt;div attrib=&quot;value&quot;/&amp;gt;&amp;lt;/e&amp;gt; becomes {&quot;e&quot;:&quot;&amp;lt;div attrib=\&quot;value\&quot;/&amp;gt;&quot;} - &lt;/pre&gt; - &lt;p/&gt; - Namespace URIs are ignored. Namespace prefixes are included in the JSON name. - &lt;p/&gt; - Attributes are ignored, except for the special attribute @array=&quot;true&quot; that - indicates the JSON serialization should write the node, even if single, as an - array, and the attribute @type that can be set to &quot;boolean&quot; or &quot;number&quot; to - dictate the value should be written as that type (unquoted). There's also - an @quote attribute that when set to true writes the inner content as text - rather than as structured JSON, useful for sending some XHTML over the - wire. - &lt;p/&gt; - Text nodes within mixed content are ignored. - - @param $x Element node to convert - @return String holding JSON serialized representation of $x - - @author Jason Hunter - @version 1.0.1 - - Ported to xquery 1.0-ml; double escaped backslashes in json:escape -:) -declare function json:serialize($x as element()) as xs:string { - string-join(('{', json:print-name-value($x), '}'), &quot;&quot;) -}; - </textarea> -</div> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers: true, - matchBrackets: true, - theme: "xq-dark" - }); - </script> - - <p><strong>MIME types defined:</strong> <code>application/xquery</code>.</p> - - <p>Development of the CodeMirror XQuery mode was sponsored by - <a href="http://marklogic.com">MarkLogic</a> and developed by - <a href="https://twitter.com/mbrevoort">Mike Brevoort</a>. - </p> - - </article> diff --git a/assets/js/plugins/codemirror/mode/xquery/test.js b/assets/js/plugins/codemirror/mode/xquery/test.js deleted file mode 100644 index 1f148cdb..00000000 --- a/assets/js/plugins/codemirror/mode/xquery/test.js +++ /dev/null @@ -1,67 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// Don't take these too seriously -- the expected results appear to be -// based on the results of actual runs without any serious manual -// verification. If a change you made causes them to fail, the test is -// as likely to wrong as the code. - -(function() { - var mode = CodeMirror.getMode({tabSize: 4}, "xquery"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - - MT("eviltest", - "[keyword xquery] [keyword version] [variable &quot;1][keyword .][atom 0][keyword -][variable ml&quot;][def&variable ;] [comment (: this is : a \"comment\" :)]", - " [keyword let] [variable $let] [keyword :=] [variable &lt;x] [variable attr][keyword =][variable &quot;value&quot;&gt;&quot;test&quot;&lt;func&gt][def&variable ;function]() [variable $var] {[keyword function]()} {[variable $var]}[variable &lt;][keyword /][variable func&gt;&lt;][keyword /][variable x&gt;]", - " [keyword let] [variable $joe][keyword :=][atom 1]", - " [keyword return] [keyword element] [variable element] {", - " [keyword attribute] [variable attribute] { [atom 1] },", - " [keyword element] [variable test] { [variable &#39;a&#39;] }, [keyword attribute] [variable foo] { [variable &quot;bar&quot;] },", - " [def&variable fn:doc]()[[ [variable foo][keyword /][variable @bar] [keyword eq] [variable $let] ]],", - " [keyword //][variable x] } [comment (: a more 'evil' test :)]", - " [comment (: Modified Blakeley example (: with nested comment :) ... :)]", - " [keyword declare] [keyword private] [keyword function] [def&variable local:declare]() {()}[variable ;]", - " [keyword declare] [keyword private] [keyword function] [def&variable local:private]() {()}[variable ;]", - " [keyword declare] [keyword private] [keyword function] [def&variable local:function]() {()}[variable ;]", - " [keyword declare] [keyword private] [keyword function] [def&variable local:local]() {()}[variable ;]", - " [keyword let] [variable $let] [keyword :=] [variable &lt;let&gt;let] [variable $let] [keyword :=] [variable &quot;let&quot;&lt;][keyword /let][variable &gt;]", - " [keyword return] [keyword element] [variable element] {", - " [keyword attribute] [variable attribute] { [keyword try] { [def&variable xdmp:version]() } [keyword catch]([variable $e]) { [def&variable xdmp:log]([variable $e]) } },", - " [keyword attribute] [variable fn:doc] { [variable &quot;bar&quot;] [variable castable] [keyword as] [atom xs:string] },", - " [keyword element] [variable text] { [keyword text] { [variable &quot;text&quot;] } },", - " [def&variable fn:doc]()[[ [qualifier child::][variable eq][keyword /]([variable @bar] [keyword |] [qualifier attribute::][variable attribute]) [keyword eq] [variable $let] ]],", - " [keyword //][variable fn:doc]", - " }"); - - MT("testEmptySequenceKeyword", - "[string \"foo\"] [keyword instance] [keyword of] [keyword empty-sequence]()"); - - MT("testMultiAttr", - "[tag <p ][attribute a1]=[string \"foo\"] [attribute a2]=[string \"bar\"][tag >][variable hello] [variable world][tag </p>]"); - - MT("test namespaced variable", - "[keyword declare] [keyword namespace] [variable e] [keyword =] [string \"http://example.com/ANamespace\"][variable ;declare] [keyword variable] [variable $e:exampleComThisVarIsNotRecognized] [keyword as] [keyword element]([keyword *]) [variable external;]"); - - MT("test EQName variable", - "[keyword declare] [keyword variable] [variable $\"http://www.example.com/ns/my\":var] [keyword :=] [atom 12][variable ;]", - "[tag <out>]{[variable $\"http://www.example.com/ns/my\":var]}[tag </out>]"); - - MT("test EQName function", - "[keyword declare] [keyword function] [def&variable \"http://www.example.com/ns/my\":fn] ([variable $a] [keyword as] [atom xs:integer]) [keyword as] [atom xs:integer] {", - " [variable $a] [keyword +] [atom 2]", - "}[variable ;]", - "[tag <out>]{[def&variable \"http://www.example.com/ns/my\":fn]([atom 12])}[tag </out>]"); - - MT("test EQName function with single quotes", - "[keyword declare] [keyword function] [def&variable 'http://www.example.com/ns/my':fn] ([variable $a] [keyword as] [atom xs:integer]) [keyword as] [atom xs:integer] {", - " [variable $a] [keyword +] [atom 2]", - "}[variable ;]", - "[tag <out>]{[def&variable 'http://www.example.com/ns/my':fn]([atom 12])}[tag </out>]"); - - MT("testProcessingInstructions", - "[def&variable data]([comment&meta <?target content?>]) [keyword instance] [keyword of] [atom xs:string]"); - - MT("testQuoteEscapeDouble", - "[keyword let] [variable $rootfolder] [keyword :=] [string \"c:\\builds\\winnt\\HEAD\\qa\\scripts\\\"]", - "[keyword let] [variable $keysfolder] [keyword :=] [def&variable concat]([variable $rootfolder], [string \"keys\\\"])"); -})(); diff --git a/assets/js/plugins/codemirror/mode/xquery/xquery.js b/assets/js/plugins/codemirror/mode/xquery/xquery.js deleted file mode 100644 index c8f3d90a..00000000 --- a/assets/js/plugins/codemirror/mode/xquery/xquery.js +++ /dev/null @@ -1,447 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("xquery", function() { - - // The keywords object is set to the result of this self executing - // function. Each keyword is a property of the keywords object whose - // value is {type: atype, style: astyle} - var keywords = function(){ - // conveinence functions used to build keywords object - function kw(type) {return {type: type, style: "keyword"};} - var A = kw("keyword a") - , B = kw("keyword b") - , C = kw("keyword c") - , operator = kw("operator") - , atom = {type: "atom", style: "atom"} - , punctuation = {type: "punctuation", style: null} - , qualifier = {type: "axis_specifier", style: "qualifier"}; - - // kwObj is what is return from this function at the end - var kwObj = { - 'if': A, 'switch': A, 'while': A, 'for': A, - 'else': B, 'then': B, 'try': B, 'finally': B, 'catch': B, - 'element': C, 'attribute': C, 'let': C, 'implements': C, 'import': C, 'module': C, 'namespace': C, - 'return': C, 'super': C, 'this': C, 'throws': C, 'where': C, 'private': C, - ',': punctuation, - 'null': atom, 'fn:false()': atom, 'fn:true()': atom - }; - - // a list of 'basic' keywords. For each add a property to kwObj with the value of - // {type: basic[i], style: "keyword"} e.g. 'after' --> {type: "after", style: "keyword"} - var basic = ['after','ancestor','ancestor-or-self','and','as','ascending','assert','attribute','before', - 'by','case','cast','child','comment','declare','default','define','descendant','descendant-or-self', - 'descending','document','document-node','element','else','eq','every','except','external','following', - 'following-sibling','follows','for','function','if','import','in','instance','intersect','item', - 'let','module','namespace','node','node','of','only','or','order','parent','precedes','preceding', - 'preceding-sibling','processing-instruction','ref','return','returns','satisfies','schema','schema-element', - 'self','some','sortby','stable','text','then','to','treat','typeswitch','union','variable','version','where', - 'xquery', 'empty-sequence']; - for(var i=0, l=basic.length; i < l; i++) { kwObj[basic[i]] = kw(basic[i]);}; - - // a list of types. For each add a property to kwObj with the value of - // {type: "atom", style: "atom"} - var types = ['xs:string', 'xs:float', 'xs:decimal', 'xs:double', 'xs:integer', 'xs:boolean', 'xs:date', 'xs:dateTime', - 'xs:time', 'xs:duration', 'xs:dayTimeDuration', 'xs:time', 'xs:yearMonthDuration', 'numeric', 'xs:hexBinary', - 'xs:base64Binary', 'xs:anyURI', 'xs:QName', 'xs:byte','xs:boolean','xs:anyURI','xf:yearMonthDuration']; - for(var i=0, l=types.length; i < l; i++) { kwObj[types[i]] = atom;}; - - // each operator will add a property to kwObj with value of {type: "operator", style: "keyword"} - var operators = ['eq', 'ne', 'lt', 'le', 'gt', 'ge', ':=', '=', '>', '>=', '<', '<=', '.', '|', '?', 'and', 'or', 'div', 'idiv', 'mod', '*', '/', '+', '-']; - for(var i=0, l=operators.length; i < l; i++) { kwObj[operators[i]] = operator;}; - - // each axis_specifiers will add a property to kwObj with value of {type: "axis_specifier", style: "qualifier"} - var axis_specifiers = ["self::", "attribute::", "child::", "descendant::", "descendant-or-self::", "parent::", - "ancestor::", "ancestor-or-self::", "following::", "preceding::", "following-sibling::", "preceding-sibling::"]; - for(var i=0, l=axis_specifiers.length; i < l; i++) { kwObj[axis_specifiers[i]] = qualifier; }; - - return kwObj; - }(); - - // Used as scratch variables to communicate multiple values without - // consing up tons of objects. - var type, content; - - function ret(tp, style, cont) { - type = tp; content = cont; - return style; - } - - function chain(stream, state, f) { - state.tokenize = f; - return f(stream, state); - } - - // the primary mode tokenizer - function tokenBase(stream, state) { - var ch = stream.next(), - mightBeFunction = false, - isEQName = isEQNameAhead(stream); - - // an XML tag (if not in some sub, chained tokenizer) - if (ch == "<") { - if(stream.match("!--", true)) - return chain(stream, state, tokenXMLComment); - - if(stream.match("![CDATA", false)) { - state.tokenize = tokenCDATA; - return ret("tag", "tag"); - } - - if(stream.match("?", false)) { - return chain(stream, state, tokenPreProcessing); - } - - var isclose = stream.eat("/"); - stream.eatSpace(); - var tagName = "", c; - while ((c = stream.eat(/[^\s\u00a0=<>\"\'\/?]/))) tagName += c; - - return chain(stream, state, tokenTag(tagName, isclose)); - } - // start code block - else if(ch == "{") { - pushStateStack(state,{ type: "codeblock"}); - return ret("", null); - } - // end code block - else if(ch == "}") { - popStateStack(state); - return ret("", null); - } - // if we're in an XML block - else if(isInXmlBlock(state)) { - if(ch == ">") - return ret("tag", "tag"); - else if(ch == "/" && stream.eat(">")) { - popStateStack(state); - return ret("tag", "tag"); - } - else - return ret("word", "variable"); - } - // if a number - else if (/\d/.test(ch)) { - stream.match(/^\d*(?:\.\d*)?(?:E[+\-]?\d+)?/); - return ret("number", "atom"); - } - // comment start - else if (ch === "(" && stream.eat(":")) { - pushStateStack(state, { type: "comment"}); - return chain(stream, state, tokenComment); - } - // quoted string - else if ( !isEQName && (ch === '"' || ch === "'")) - return chain(stream, state, tokenString(ch)); - // variable - else if(ch === "$") { - return chain(stream, state, tokenVariable); - } - // assignment - else if(ch ===":" && stream.eat("=")) { - return ret("operator", "keyword"); - } - // open paren - else if(ch === "(") { - pushStateStack(state, { type: "paren"}); - return ret("", null); - } - // close paren - else if(ch === ")") { - popStateStack(state); - return ret("", null); - } - // open paren - else if(ch === "[") { - pushStateStack(state, { type: "bracket"}); - return ret("", null); - } - // close paren - else if(ch === "]") { - popStateStack(state); - return ret("", null); - } - else { - var known = keywords.propertyIsEnumerable(ch) && keywords[ch]; - - // if there's a EQName ahead, consume the rest of the string portion, it's likely a function - if(isEQName && ch === '\"') while(stream.next() !== '"'){} - if(isEQName && ch === '\'') while(stream.next() !== '\''){} - - // gobble up a word if the character is not known - if(!known) stream.eatWhile(/[\w\$_-]/); - - // gobble a colon in the case that is a lib func type call fn:doc - var foundColon = stream.eat(":"); - - // if there's not a second colon, gobble another word. Otherwise, it's probably an axis specifier - // which should get matched as a keyword - if(!stream.eat(":") && foundColon) { - stream.eatWhile(/[\w\$_-]/); - } - // if the next non whitespace character is an open paren, this is probably a function (if not a keyword of other sort) - if(stream.match(/^[ \t]*\(/, false)) { - mightBeFunction = true; - } - // is the word a keyword? - var word = stream.current(); - known = keywords.propertyIsEnumerable(word) && keywords[word]; - - // if we think it's a function call but not yet known, - // set style to variable for now for lack of something better - if(mightBeFunction && !known) known = {type: "function_call", style: "variable def"}; - - // if the previous word was element, attribute, axis specifier, this word should be the name of that - if(isInXmlConstructor(state)) { - popStateStack(state); - return ret("word", "variable", word); - } - // as previously checked, if the word is element,attribute, axis specifier, call it an "xmlconstructor" and - // push the stack so we know to look for it on the next word - if(word == "element" || word == "attribute" || known.type == "axis_specifier") pushStateStack(state, {type: "xmlconstructor"}); - - // if the word is known, return the details of that else just call this a generic 'word' - return known ? ret(known.type, known.style, word) : - ret("word", "variable", word); - } - } - - // handle comments, including nested - function tokenComment(stream, state) { - var maybeEnd = false, maybeNested = false, nestedCount = 0, ch; - while (ch = stream.next()) { - if (ch == ")" && maybeEnd) { - if(nestedCount > 0) - nestedCount--; - else { - popStateStack(state); - break; - } - } - else if(ch == ":" && maybeNested) { - nestedCount++; - } - maybeEnd = (ch == ":"); - maybeNested = (ch == "("); - } - - return ret("comment", "comment"); - } - - // tokenizer for string literals - // optionally pass a tokenizer function to set state.tokenize back to when finished - function tokenString(quote, f) { - return function(stream, state) { - var ch; - - if(isInString(state) && stream.current() == quote) { - popStateStack(state); - if(f) state.tokenize = f; - return ret("string", "string"); - } - - pushStateStack(state, { type: "string", name: quote, tokenize: tokenString(quote, f) }); - - // if we're in a string and in an XML block, allow an embedded code block - if(stream.match("{", false) && isInXmlAttributeBlock(state)) { - state.tokenize = tokenBase; - return ret("string", "string"); - } - - - while (ch = stream.next()) { - if (ch == quote) { - popStateStack(state); - if(f) state.tokenize = f; - break; - } - else { - // if we're in a string and in an XML block, allow an embedded code block in an attribute - if(stream.match("{", false) && isInXmlAttributeBlock(state)) { - state.tokenize = tokenBase; - return ret("string", "string"); - } - - } - } - - return ret("string", "string"); - }; - } - - // tokenizer for variables - function tokenVariable(stream, state) { - var isVariableChar = /[\w\$_-]/; - - // a variable may start with a quoted EQName so if the next character is quote, consume to the next quote - if(stream.eat("\"")) { - while(stream.next() !== '\"'){}; - stream.eat(":"); - } else { - stream.eatWhile(isVariableChar); - if(!stream.match(":=", false)) stream.eat(":"); - } - stream.eatWhile(isVariableChar); - state.tokenize = tokenBase; - return ret("variable", "variable"); - } - - // tokenizer for XML tags - function tokenTag(name, isclose) { - return function(stream, state) { - stream.eatSpace(); - if(isclose && stream.eat(">")) { - popStateStack(state); - state.tokenize = tokenBase; - return ret("tag", "tag"); - } - // self closing tag without attributes? - if(!stream.eat("/")) - pushStateStack(state, { type: "tag", name: name, tokenize: tokenBase}); - if(!stream.eat(">")) { - state.tokenize = tokenAttribute; - return ret("tag", "tag"); - } - else { - state.tokenize = tokenBase; - } - return ret("tag", "tag"); - }; - } - - // tokenizer for XML attributes - function tokenAttribute(stream, state) { - var ch = stream.next(); - - if(ch == "/" && stream.eat(">")) { - if(isInXmlAttributeBlock(state)) popStateStack(state); - if(isInXmlBlock(state)) popStateStack(state); - return ret("tag", "tag"); - } - if(ch == ">") { - if(isInXmlAttributeBlock(state)) popStateStack(state); - return ret("tag", "tag"); - } - if(ch == "=") - return ret("", null); - // quoted string - if (ch == '"' || ch == "'") - return chain(stream, state, tokenString(ch, tokenAttribute)); - - if(!isInXmlAttributeBlock(state)) - pushStateStack(state, { type: "attribute", tokenize: tokenAttribute}); - - stream.eat(/[a-zA-Z_:]/); - stream.eatWhile(/[-a-zA-Z0-9_:.]/); - stream.eatSpace(); - - // the case where the attribute has not value and the tag was closed - if(stream.match(">", false) || stream.match("/", false)) { - popStateStack(state); - state.tokenize = tokenBase; - } - - return ret("attribute", "attribute"); - } - - // handle comments, including nested - function tokenXMLComment(stream, state) { - var ch; - while (ch = stream.next()) { - if (ch == "-" && stream.match("->", true)) { - state.tokenize = tokenBase; - return ret("comment", "comment"); - } - } - } - - - // handle CDATA - function tokenCDATA(stream, state) { - var ch; - while (ch = stream.next()) { - if (ch == "]" && stream.match("]", true)) { - state.tokenize = tokenBase; - return ret("comment", "comment"); - } - } - } - - // handle preprocessing instructions - function tokenPreProcessing(stream, state) { - var ch; - while (ch = stream.next()) { - if (ch == "?" && stream.match(">", true)) { - state.tokenize = tokenBase; - return ret("comment", "comment meta"); - } - } - } - - - // functions to test the current context of the state - function isInXmlBlock(state) { return isIn(state, "tag"); } - function isInXmlAttributeBlock(state) { return isIn(state, "attribute"); } - function isInXmlConstructor(state) { return isIn(state, "xmlconstructor"); } - function isInString(state) { return isIn(state, "string"); } - - function isEQNameAhead(stream) { - // assume we've already eaten a quote (") - if(stream.current() === '"') - return stream.match(/^[^\"]+\"\:/, false); - else if(stream.current() === '\'') - return stream.match(/^[^\"]+\'\:/, false); - else - return false; - } - - function isIn(state, type) { - return (state.stack.length && state.stack[state.stack.length - 1].type == type); - } - - function pushStateStack(state, newState) { - state.stack.push(newState); - } - - function popStateStack(state) { - state.stack.pop(); - var reinstateTokenize = state.stack.length && state.stack[state.stack.length-1].tokenize; - state.tokenize = reinstateTokenize || tokenBase; - } - - // the interface for the mode API - return { - startState: function() { - return { - tokenize: tokenBase, - cc: [], - stack: [] - }; - }, - - token: function(stream, state) { - if (stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - return style; - }, - - blockCommentStart: "(:", - blockCommentEnd: ":)" - - }; - -}); - -CodeMirror.defineMIME("application/xquery", "xquery"); - -}); diff --git a/assets/js/plugins/codemirror/mode/yaml/index.html b/assets/js/plugins/codemirror/mode/yaml/index.html deleted file mode 100644 index be9b6323..00000000 --- a/assets/js/plugins/codemirror/mode/yaml/index.html +++ /dev/null @@ -1,80 +0,0 @@ -<!doctype html> - -<title>CodeMirror: YAML mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="yaml.js"></script> -<style>.CodeMirror { border-top: 1px solid #ddd; border-bottom: 1px solid #ddd; }</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">YAML</a> - </ul> -</div> - -<article> -<h2>YAML mode</h2> -<form><textarea id="code" name="code"> ---- # Favorite movies -- Casablanca -- North by Northwest -- The Man Who Wasn't There ---- # Shopping list -[milk, pumpkin pie, eggs, juice] ---- # Indented Blocks, common in YAML data files, use indentation and new lines to separate the key: value pairs - name: John Smith - age: 33 ---- # Inline Blocks, common in YAML data streams, use commas to separate the key: value pairs between braces -{name: John Smith, age: 33} ---- -receipt: Oz-Ware Purchase Invoice -date: 2007-08-06 -customer: - given: Dorothy - family: Gale - -items: - - part_no: A4786 - descrip: Water Bucket (Filled) - price: 1.47 - quantity: 4 - - - part_no: E1628 - descrip: High Heeled "Ruby" Slippers - size: 8 - price: 100.27 - quantity: 1 - -bill-to: &id001 - street: | - 123 Tornado Alley - Suite 16 - city: East Centerville - state: KS - -ship-to: *id001 - -specialDelivery: > - Follow the Yellow Brick - Road to the Emerald City. - Pay no attention to the - man behind the curtain. -... -</textarea></form> - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), {}); - </script> - - <p><strong>MIME types defined:</strong> <code>text/x-yaml</code>.</p> - - </article> diff --git a/assets/js/plugins/codemirror/mode/yaml/yaml.js b/assets/js/plugins/codemirror/mode/yaml/yaml.js deleted file mode 100644 index 332aef6a..00000000 --- a/assets/js/plugins/codemirror/mode/yaml/yaml.js +++ /dev/null @@ -1,112 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("yaml", function() { - - var cons = ['true', 'false', 'on', 'off', 'yes', 'no']; - var keywordRegex = new RegExp("\\b(("+cons.join(")|(")+"))$", 'i'); - - return { - token: function(stream, state) { - var ch = stream.peek(); - var esc = state.escaped; - state.escaped = false; - /* comments */ - if (ch == "#" && (stream.pos == 0 || /\s/.test(stream.string.charAt(stream.pos - 1)))) { - stream.skipToEnd(); return "comment"; - } - if (state.literal && stream.indentation() > state.keyCol) { - stream.skipToEnd(); return "string"; - } else if (state.literal) { state.literal = false; } - if (stream.sol()) { - state.keyCol = 0; - state.pair = false; - state.pairStart = false; - /* document start */ - if(stream.match(/---/)) { return "def"; } - /* document end */ - if (stream.match(/\.\.\./)) { return "def"; } - /* array list item */ - if (stream.match(/\s*-\s+/)) { return 'meta'; } - } - /* inline pairs/lists */ - if (stream.match(/^(\{|\}|\[|\])/)) { - if (ch == '{') - state.inlinePairs++; - else if (ch == '}') - state.inlinePairs--; - else if (ch == '[') - state.inlineList++; - else - state.inlineList--; - return 'meta'; - } - - /* list seperator */ - if (state.inlineList > 0 && !esc && ch == ',') { - stream.next(); - return 'meta'; - } - /* pairs seperator */ - if (state.inlinePairs > 0 && !esc && ch == ',') { - state.keyCol = 0; - state.pair = false; - state.pairStart = false; - stream.next(); - return 'meta'; - } - - /* start of value of a pair */ - if (state.pairStart) { - /* block literals */ - if (stream.match(/^\s*(\||\>)\s*/)) { state.literal = true; return 'meta'; }; - /* references */ - if (stream.match(/^\s*(\&|\*)[a-z0-9\._-]+\b/i)) { return 'variable-2'; } - /* numbers */ - if (state.inlinePairs == 0 && stream.match(/^\s*-?[0-9\.\,]+\s?$/)) { return 'number'; } - if (state.inlinePairs > 0 && stream.match(/^\s*-?[0-9\.\,]+\s?(?=(,|}))/)) { return 'number'; } - /* keywords */ - if (stream.match(keywordRegex)) { return 'keyword'; } - } - - /* pairs (associative arrays) -> key */ - if (!state.pair && stream.match(/^\s*(?:[,\[\]{}&*!|>'"%@`][^\s'":]|[^,\[\]{}#&*!|>'"%@`])[^#]*?(?=\s*:($|\s))/)) { - state.pair = true; - state.keyCol = stream.indentation(); - return "atom"; - } - if (state.pair && stream.match(/^:\s*/)) { state.pairStart = true; return 'meta'; } - - /* nothing found, continue */ - state.pairStart = false; - state.escaped = (ch == '\\'); - stream.next(); - return null; - }, - startState: function() { - return { - pair: false, - pairStart: false, - keyCol: 0, - inlinePairs: 0, - inlineList: 0, - literal: false, - escaped: false - }; - } - }; -}); - -CodeMirror.defineMIME("text/x-yaml", "yaml"); - -}); diff --git a/assets/js/plugins/codemirror/mode/z80/index.html b/assets/js/plugins/codemirror/mode/z80/index.html deleted file mode 100644 index 1ad3ace0..00000000 --- a/assets/js/plugins/codemirror/mode/z80/index.html +++ /dev/null @@ -1,52 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Z80 assembly mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="z80.js"></script> -<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Z80 assembly</a> - </ul> -</div> - -<article> -<h2>Z80 assembly mode</h2> - - -<div><textarea id="code" name="code"> -#include "ti83plus.inc" -#define progStart $9D95 -.org progStart-2 -.db $BB,$6D - bcall(_ClrLCDFull) - ld HL, 0 - ld (PenCol), HL - ld HL, Message - bcall(_PutS) ; Displays the string - bcall(_NewLine) - ret -Message: -.db "Hello world!",0 -</textarea></div> - - <script> - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers: true - }); - </script> - - <p><strong>MIME type defined:</strong> <code>text/x-z80</code>.</p> - </article> diff --git a/assets/js/plugins/codemirror/mode/z80/z80.js b/assets/js/plugins/codemirror/mode/z80/z80.js deleted file mode 100644 index ec41d050..00000000 --- a/assets/js/plugins/codemirror/mode/z80/z80.js +++ /dev/null @@ -1,100 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode('z80', function() { - var keywords1 = /^(exx?|(ld|cp|in)([di]r?)?|pop|push|ad[cd]|cpl|daa|dec|inc|neg|sbc|sub|and|bit|[cs]cf|x?or|res|set|r[lr]c?a?|r[lr]d|s[lr]a|srl|djnz|nop|rst|[de]i|halt|im|ot[di]r|out[di]?)\b/i; - var keywords2 = /^(call|j[pr]|ret[in]?)\b/i; - var keywords3 = /^b_?(call|jump)\b/i; - var variables1 = /^(af?|bc?|c|de?|e|hl?|l|i[xy]?|r|sp)\b/i; - var variables2 = /^(n?[zc]|p[oe]?|m)\b/i; - var errors = /^([hl][xy]|i[xy][hl]|slia|sll)\b/i; - var numbers = /^([\da-f]+h|[0-7]+o|[01]+b|\d+)\b/i; - - return { - startState: function() { - return {context: 0}; - }, - token: function(stream, state) { - if (!stream.column()) - state.context = 0; - - if (stream.eatSpace()) - return null; - - var w; - - if (stream.eatWhile(/\w/)) { - w = stream.current(); - - if (stream.indentation()) { - if (state.context == 1 && variables1.test(w)) - return 'variable-2'; - - if (state.context == 2 && variables2.test(w)) - return 'variable-3'; - - if (keywords1.test(w)) { - state.context = 1; - return 'keyword'; - } else if (keywords2.test(w)) { - state.context = 2; - return 'keyword'; - } else if (keywords3.test(w)) { - state.context = 3; - return 'keyword'; - } - - if (errors.test(w)) - return 'error'; - } else if (numbers.test(w)) { - return 'number'; - } else { - return null; - } - } else if (stream.eat(';')) { - stream.skipToEnd(); - return 'comment'; - } else if (stream.eat('"')) { - while (w = stream.next()) { - if (w == '"') - break; - - if (w == '\\') - stream.next(); - } - return 'string'; - } else if (stream.eat('\'')) { - if (stream.match(/\\?.'/)) - return 'number'; - } else if (stream.eat('.') || stream.sol() && stream.eat('#')) { - state.context = 4; - - if (stream.eatWhile(/\w/)) - return 'def'; - } else if (stream.eat('$')) { - if (stream.eatWhile(/[\da-f]/i)) - return 'number'; - } else if (stream.eat('%')) { - if (stream.eatWhile(/[01]/)) - return 'number'; - } else { - stream.next(); - } - return null; - } - }; -}); - -CodeMirror.defineMIME("text/x-z80", "z80"); - -}); diff --git a/assets/js/plugins/colorpicker/bootstrap-colorpicker.min.js b/assets/js/plugins/colorpicker/bootstrap-colorpicker.min.js deleted file mode 100644 index 9cc6fb52..00000000 --- a/assets/js/plugins/colorpicker/bootstrap-colorpicker.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):window.jQuery&&!window.jQuery.fn.colorpicker&&a(window.jQuery)}(function(a){"use strict";var b=function(a){this.value={h:0,s:0,b:0,a:1},this.origFormat=null,a&&(void 0!==a.toLowerCase?(a+="","#"===a.charAt(0)||3!==a.length&&6!==a.length||(a="#"+a),this.setColor(a)):void 0!==a.h&&(this.value=a))};b.prototype={constructor:b,colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4","indianred ":"#cd5c5c","indigo ":"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},_sanitizeNumber:function(a){return"number"==typeof a?a:isNaN(a)||null===a||""===a||void 0===a?1:void 0!==a.toLowerCase?parseFloat(a):1},setColor:function(a){a=a.toLowerCase(),this.value=this.stringToHSB(a)||{h:0,s:0,b:0,a:1}},stringToHSB:function(b){b=b.toLowerCase();var c=this,d=!1;return a.each(this.stringParsers,function(a,e){var f=e.re.exec(b),g=f&&e.parse.apply(c,[f]),h=e.format||"rgba";return g?(d=h.match(/hsla?/)?c.RGBtoHSB.apply(c,c.HSLtoRGB.apply(c,g)):c.RGBtoHSB.apply(c,g),c.origFormat=h,!1):!0}),d},setHue:function(a){this.value.h=1-a},setSaturation:function(a){this.value.s=a},setBrightness:function(a){this.value.b=1-a},setAlpha:function(a){this.value.a=parseInt(100*(1-a),10)/100},toRGB:function(a,b,c,d){a||(a=this.value.h,b=this.value.s,c=this.value.b),a*=360;var e,f,g,h,i;return a=a%360/60,i=c*b,h=i*(1-Math.abs(a%2-1)),e=f=g=c-i,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a],{r:Math.round(255*e),g:Math.round(255*f),b:Math.round(255*g),a:d||this.value.a}},toHex:function(a,b,c,d){var e=this.toRGB(a,b,c,d);return"#"+(1<<24|parseInt(e.r)<<16|parseInt(e.g)<<8|parseInt(e.b)).toString(16).substr(1)},toHSL:function(a,b,c,d){a=a||this.value.h,b=b||this.value.s,c=c||this.value.b,d=d||this.value.a;var e=a,f=(2-b)*c,g=b*c;return g/=f>0&&1>=f?f:2-f,f/=2,g>1&&(g=1),{h:isNaN(e)?0:e,s:isNaN(g)?0:g,l:isNaN(f)?0:f,a:isNaN(d)?0:d}},toAlias:function(a,b,c,d){var e=this.toHex(a,b,c,d);for(var f in this.colors)if(this.colors[f]==e)return f;return!1},RGBtoHSB:function(a,b,c,d){a/=255,b/=255,c/=255;var e,f,g,h;return g=Math.max(a,b,c),h=g-Math.min(a,b,c),e=0===h?null:g===a?(b-c)/h:g===b?(c-a)/h+2:(a-b)/h+4,e=(e+360)%6*60/360,f=0===h?0:h/g,{h:this._sanitizeNumber(e),s:f,b:g,a:this._sanitizeNumber(d)}},HueToRGB:function(a,b,c){return 0>c?c+=1:c>1&&(c-=1),1>6*c?a+(b-a)*c*6:1>2*c?b:2>3*c?a+(b-a)*(2/3-c)*6:a},HSLtoRGB:function(a,b,c,d){0>b&&(b=0);var e;e=.5>=c?c*(1+b):c+b-c*b;var f=2*c-e,g=a+1/3,h=a,i=a-1/3,j=Math.round(255*this.HueToRGB(f,e,g)),k=Math.round(255*this.HueToRGB(f,e,h)),l=Math.round(255*this.HueToRGB(f,e,i));return[j,k,l,this._sanitizeNumber(d)]},toString:function(a){switch(a=a||"rgba"){case"rgb":var b=this.toRGB();return"rgb("+b.r+","+b.g+","+b.b+")";case"rgba":var b=this.toRGB();return"rgba("+b.r+","+b.g+","+b.b+","+b.a+")";case"hsl":var c=this.toHSL();return"hsl("+Math.round(360*c.h)+","+Math.round(100*c.s)+"%,"+Math.round(100*c.l)+"%)";case"hsla":var c=this.toHSL();return"hsla("+Math.round(360*c.h)+","+Math.round(100*c.s)+"%,"+Math.round(100*c.l)+"%,"+c.a+")";case"hex":return this.toHex();case"alias":return this.toAlias()||this.toHex();default:return!1}},stringParsers:[{re:/#?([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/,format:"hex",parse:function(a){return[parseInt(a[1],16),parseInt(a[2],16),parseInt(a[3],16),1]}},{re:/#?([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/,format:"hex",parse:function(a){return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16),1]}},{re:/rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*?\)/,format:"rgb",parse:function(a){return[a[1],a[2],a[3],1]}},{re:/rgb\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*?\)/,format:"rgb",parse:function(a){return[2.55*a[1],2.55*a[2],2.55*a[3],1]}},{re:/rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,format:"rgba",parse:function(a){return[a[1],a[2],a[3],a[4]]}},{re:/rgba\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,format:"rgba",parse:function(a){return[2.55*a[1],2.55*a[2],2.55*a[3],a[4]]}},{re:/hsl\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*?\)/,format:"hsl",parse:function(a){return[a[1]/360,a[2]/100,a[3]/100,a[4]]}},{re:/hsla\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,format:"hsla",parse:function(a){return[a[1]/360,a[2]/100,a[3]/100,a[4]]}},{re:/^([a-z]{3,})$/,format:"alias",parse:function(a){var b=this.colorNameToHex(a[0])||"#000000",c=this.stringParsers[0].re.exec(b),d=c&&this.stringParsers[0].parse.apply(this,[c]);return d}}],colorNameToHex:function(a){return"undefined"!=typeof this.colors[a.toLowerCase()]?this.colors[a.toLowerCase()]:!1}};var c={horizontal:!1,inline:!1,color:!1,format:!1,input:"input",container:!1,component:".add-on, .input-group-addon",sliders:{saturation:{maxLeft:100,maxTop:100,callLeft:"setSaturation",callTop:"setBrightness"},hue:{maxLeft:0,maxTop:100,callLeft:!1,callTop:"setHue"},alpha:{maxLeft:0,maxTop:100,callLeft:!1,callTop:"setAlpha"}},slidersHorz:{saturation:{maxLeft:100,maxTop:100,callLeft:"setSaturation",callTop:"setBrightness"},hue:{maxLeft:100,maxTop:0,callLeft:"setHue",callTop:!1},alpha:{maxLeft:100,maxTop:0,callLeft:"setAlpha",callTop:!1}},template:'<div class="colorpicker dropdown-menu"><div class="colorpicker-saturation"><i><b></b></i></div><div class="colorpicker-hue"><i></i></div><div class="colorpicker-alpha"><i></i></div><div class="colorpicker-color"><div /></div></div>'},d=function(d,e){this.element=a(d).addClass("colorpicker-element"),this.options=a.extend({},c,this.element.data(),e),this.component=this.options.component,this.component=this.component!==!1?this.element.find(this.component):!1,this.component&&0===this.component.length&&(this.component=!1),this.container=this.options.container===!0?this.element:this.options.container,this.container=this.container!==!1?a(this.container):!1,this.input=this.element.is("input")?this.element:this.options.input?this.element.find(this.options.input):!1,this.input&&0===this.input.length&&(this.input=!1),this.color=new b(this.options.color!==!1?this.options.color:this.getValue()),this.format=this.options.format!==!1?this.options.format:this.color.origFormat,this.picker=a(this.options.template),this.picker.addClass(this.options.inline?"colorpicker-inline colorpicker-visible":"colorpicker-hidden"),this.options.horizontal&&this.picker.addClass("colorpicker-horizontal"),("rgba"===this.format||"hsla"===this.format)&&this.picker.addClass("colorpicker-with-alpha"),this.picker.on("mousedown.colorpicker touchstart.colorpicker",a.proxy(this.mousedown,this)),this.picker.appendTo(this.container?this.container:a("body")),this.input!==!1&&(this.input.on({"keyup.colorpicker":a.proxy(this.keyup,this)}),this.component===!1&&this.element.on({"focus.colorpicker":a.proxy(this.show,this)}),this.options.inline===!1&&this.element.on({"focusout.colorpicker":a.proxy(this.hide,this)})),this.component!==!1&&this.component.on({"click.colorpicker":a.proxy(this.show,this)}),this.input===!1&&this.component===!1&&this.element.on({"click.colorpicker":a.proxy(this.show,this)}),this.input!==!1&&this.component!==!1&&"color"===this.input.attr("type")&&this.input.on({"click.colorpicker":a.proxy(this.show,this),"focus.colorpicker":a.proxy(this.show,this)}),this.update(),a(a.proxy(function(){this.element.trigger("create")},this))};d.version="2.0.0-beta",d.Color=b,d.prototype={constructor:d,destroy:function(){this.picker.remove(),this.element.removeData("colorpicker").off(".colorpicker"),this.input!==!1&&this.input.off(".colorpicker"),this.component!==!1&&this.component.off(".colorpicker"),this.element.removeClass("colorpicker-element"),this.element.trigger({type:"destroy"})},reposition:function(){if(this.options.inline!==!1||this.options.container)return!1;var a=this.container&&this.container[0]!==document.body?"position":"offset",b=this.component?this.component[a]():this.element[a]();this.picker.css({top:b.top+(this.component?this.component.outerHeight():this.element.outerHeight()),left:b.left})},show:function(b){return this.isDisabled()?!1:(this.picker.addClass("colorpicker-visible").removeClass("colorpicker-hidden"),this.reposition(),a(window).on("resize.colorpicker",a.proxy(this.reposition,this)),!b||this.hasInput()&&"color"!==this.input.attr("type")||b.stopPropagation&&b.preventDefault&&(b.stopPropagation(),b.preventDefault()),this.options.inline===!1&&a(window.document).on({"mousedown.colorpicker":a.proxy(this.hide,this)}),void this.element.trigger({type:"showPicker",color:this.color}))},hide:function(){this.picker.addClass("colorpicker-hidden").removeClass("colorpicker-visible"),a(window).off("resize.colorpicker",this.reposition),a(document).off({"mousedown.colorpicker":this.hide}),this.update(),this.element.trigger({type:"hidePicker",color:this.color})},updateData:function(a){return a=a||this.color.toString(this.format),this.element.data("color",a),a},updateInput:function(a){return a=a||this.color.toString(this.format),this.input!==!1&&this.input.prop("value",a),a},updatePicker:function(a){void 0!==a&&(this.color=new b(a));var c=this.options.horizontal===!1?this.options.sliders:this.options.slidersHorz,d=this.picker.find("i");return 0!==d.length?(this.options.horizontal===!1?(c=this.options.sliders,d.eq(1).css("top",c.hue.maxTop*(1-this.color.value.h)).end().eq(2).css("top",c.alpha.maxTop*(1-this.color.value.a))):(c=this.options.slidersHorz,d.eq(1).css("left",c.hue.maxLeft*(1-this.color.value.h)).end().eq(2).css("left",c.alpha.maxLeft*(1-this.color.value.a))),d.eq(0).css({top:c.saturation.maxTop-this.color.value.b*c.saturation.maxTop,left:this.color.value.s*c.saturation.maxLeft}),this.picker.find(".colorpicker-saturation").css("backgroundColor",this.color.toHex(this.color.value.h,1,1,1)),this.picker.find(".colorpicker-alpha").css("backgroundColor",this.color.toHex()),this.picker.find(".colorpicker-color, .colorpicker-color div").css("backgroundColor",this.color.toString(this.format)),a):void 0},updateComponent:function(a){if(a=a||this.color.toString(this.format),this.component!==!1){var b=this.component.find("i").eq(0);b.length>0?b.css({backgroundColor:a}):this.component.css({backgroundColor:a})}return a},update:function(a){var b=this.updateComponent();return(this.getValue(!1)!==!1||a===!0)&&(this.updateInput(b),this.updateData(b)),this.updatePicker(),b},setValue:function(a){this.color=new b(a),this.update(),this.element.trigger({type:"changeColor",color:this.color,value:a})},getValue:function(a){a=void 0===a?"#000000":a;var b;return b=this.hasInput()?this.input.val():this.element.data("color"),(void 0===b||""===b||null===b)&&(b=a),b},hasInput:function(){return this.input!==!1},isDisabled:function(){return this.hasInput()?this.input.prop("disabled")===!0:!1},disable:function(){return this.hasInput()?(this.input.prop("disabled",!0),!0):!1},enable:function(){return this.hasInput()?(this.input.prop("disabled",!1),!0):!1},currentSlider:null,mousePointer:{left:0,top:0},mousedown:function(b){b.pageX||b.pageY||!b.originalEvent||(b.pageX=b.originalEvent.touches[0].pageX,b.pageY=b.originalEvent.touches[0].pageY),b.stopPropagation(),b.preventDefault();var c=a(b.target),d=c.closest("div"),e=this.options.horizontal?this.options.slidersHorz:this.options.sliders;if(!d.is(".colorpicker")){if(d.is(".colorpicker-saturation"))this.currentSlider=a.extend({},e.saturation);else if(d.is(".colorpicker-hue"))this.currentSlider=a.extend({},e.hue);else{if(!d.is(".colorpicker-alpha"))return!1;this.currentSlider=a.extend({},e.alpha)}var f=d.offset();this.currentSlider.guide=d.find("i")[0].style,this.currentSlider.left=b.pageX-f.left,this.currentSlider.top=b.pageY-f.top,this.mousePointer={left:b.pageX,top:b.pageY},a(document).on({"mousemove.colorpicker":a.proxy(this.mousemove,this),"touchmove.colorpicker":a.proxy(this.mousemove,this),"mouseup.colorpicker":a.proxy(this.mouseup,this),"touchend.colorpicker":a.proxy(this.mouseup,this)}).trigger("mousemove")}return!1},mousemove:function(a){a.pageX||a.pageY||!a.originalEvent||(a.pageX=a.originalEvent.touches[0].pageX,a.pageY=a.originalEvent.touches[0].pageY),a.stopPropagation(),a.preventDefault();var b=Math.max(0,Math.min(this.currentSlider.maxLeft,this.currentSlider.left+((a.pageX||this.mousePointer.left)-this.mousePointer.left))),c=Math.max(0,Math.min(this.currentSlider.maxTop,this.currentSlider.top+((a.pageY||this.mousePointer.top)-this.mousePointer.top)));return this.currentSlider.guide.left=b+"px",this.currentSlider.guide.top=c+"px",this.currentSlider.callLeft&&this.color[this.currentSlider.callLeft].call(this.color,b/this.currentSlider.maxLeft),this.currentSlider.callTop&&this.color[this.currentSlider.callTop].call(this.color,c/this.currentSlider.maxTop),this.update(!0),this.element.trigger({type:"changeColor",color:this.color}),!1},mouseup:function(b){return b.stopPropagation(),b.preventDefault(),a(document).off({"mousemove.colorpicker":this.mousemove,"touchmove.colorpicker":this.mousemove,"mouseup.colorpicker":this.mouseup,"touchend.colorpicker":this.mouseup}),!1},keyup:function(a){if(38===a.keyCode)this.color.value.a<1&&(this.color.value.a=Math.round(100*(this.color.value.a+.01))/100),this.update(!0);else if(40===a.keyCode)this.color.value.a>0&&(this.color.value.a=Math.round(100*(this.color.value.a-.01))/100),this.update(!0);else{var c=this.input.val();this.color=new b(c),this.getValue(!1)!==!1&&(this.updateData(),this.updateComponent(),this.updatePicker())}this.element.trigger({type:"changeColor",color:this.color,value:c})}},a.colorpicker=d,a.fn.colorpicker=function(b){var c=arguments;return this.each(function(){var e=a(this),f=e.data("colorpicker"),g="object"==typeof b?b:{};f||"string"==typeof b?"string"==typeof b&&f[b].apply(f,Array.prototype.slice.call(c,1)):e.data("colorpicker",new d(this,g))})},a.fn.colorpicker.constructor=d}); \ No newline at end of file diff --git a/assets/js/plugins/cropper/cropper.min.js b/assets/js/plugins/cropper/cropper.min.js deleted file mode 100644 index 56e7d3b0..00000000 --- a/assets/js/plugins/cropper/cropper.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/*! - * Cropper v0.7.6-beta - * https://github.com/fengyuanchen/cropper - * - * Copyright 2014 Fengyuan Chen - * Released under the MIT license - */ - -!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){"use strict";var b=a(window),c=a(document),d=window.location,e=!0,f=!1,g=null,h=0/0,i=1/0,j="undefined",k="directive",l=".cropper",m=/^(e|n|w|s|ne|nw|sw|se|all|crop|move|zoom)$/,n=/^(x|y|width|height)$/,o=/^(naturalWidth|naturalHeight|width|height|aspectRatio|ratio|rotate)$/,p="cropper-modal",q="cropper-hidden",r="cropper-invisible",s="cropper-move",t="cropper-crop",u="cropper-disabled",v="mousedown touchstart",w="mousemove touchmove",x="mouseup mouseleave touchend touchleave touchcancel",y="wheel mousewheel DOMMouseScroll",z="resize"+l,A="dblclick",B="build"+l,C="built"+l,D="dragstart"+l,E="dragmove"+l,F="dragend"+l,G=function(a){return"number"==typeof a},H=function(b,c){this.element=b,this.$element=a(b),this.defaults=a.extend({},H.DEFAULTS,a.isPlainObject(c)?c:{}),this.$original=g,this.ready=f,this.built=f,this.cropped=f,this.rotated=f,this.disabled=f,this.replaced=f,this.init()},I=Math.round,J=Math.sqrt,K=Math.min,L=Math.max,M=Math.abs,N=Math.sin,O=Math.cos,P=parseFloat;H.prototype={constructor:H,support:{canvas:a.isFunction(a("<canvas>")[0].getContext)},init:function(){var b=this.defaults;a.each(b,function(a,c){switch(a){case"aspectRatio":b[a]=M(P(c))||h;break;case"autoCropArea":b[a]=M(P(c))||.8;break;case"minWidth":case"minHeight":b[a]=M(P(c))||0;break;case"maxWidth":case"maxHeight":b[a]=M(P(c))||i}}),this.image={rotate:0},this.load()},load:function(){var b,c,d=this,f=this.$element,g=this.element,h=this.image,i="";f.is("img")?c=f.prop("src"):f.is("canvas")&&this.support.canvas&&(c=g.toDataURL()),c&&(this.replaced&&(h.rotate=0),this.defaults.checkImageOrigin&&(f.prop("crossOrigin")||this.isCrossOriginURL(c))&&(i=" crossOrigin"),this.$clone=b=a("<img"+i+' src="'+c+'">'),b.one("load",function(){h.naturalWidth=this.naturalWidth||b.width(),h.naturalHeight=this.naturalHeight||b.height(),h.aspectRatio=h.naturalWidth/h.naturalHeight,d.url=c,d.ready=e,d.build()}),b.addClass(r).prependTo("body"))},isCrossOriginURL:function(a){var b=a.match(/^(https?:)\/\/([^\:\/\?#]+):?(\d*)/i);return!b||b[1]===d.protocol&&b[2]===d.hostname&&b[3]===d.port?f:e},build:function(){var b,d,f=this.$element,g=this.defaults;this.ready&&(this.built&&this.unbuild(),f.one(B,g.build),b=a.Event(B),f.trigger(b),b.isDefaultPrevented()||(this.$cropper=d=a(H.TEMPLATE),f.addClass(q),this.$clone.removeClass(r).prependTo(d),this.rotated||(this.$original=this.$clone.clone(),this.$original.addClass(q).prependTo(this.$cropper),this.originalImage=a.extend({},this.image)),this.$container=f.parent(),this.$container.append(d),this.$canvas=d.find(".cropper-canvas"),this.$dragger=d.find(".cropper-dragger"),this.$viewer=d.find(".cropper-viewer"),g.autoCrop?this.cropped=e:this.$dragger.addClass(q),g.dragCrop&&this.setDragMode("crop"),g.modal&&this.$canvas.addClass(p),!g.dashed&&this.$dragger.find(".cropper-dashed").addClass(q),!g.movable&&this.$dragger.find(".cropper-face").data(k,"move"),!g.resizable&&this.$dragger.find(".cropper-line, .cropper-point").addClass(q),this.$scope=g.multiple?this.$cropper:c,this.addListeners(),this.initPreview(),this.built=e,this.update(),f.one(C,g.built),f.trigger(C)))},unbuild:function(){this.built&&(this.built=f,this.removeListeners(),this.$preview.empty(),this.$preview=g,this.$dragger=g,this.$canvas=g,this.$container=g,this.$cropper.remove(),this.$cropper=g)},update:function(a){this.initContainer(),this.initCropper(),this.initImage(),this.initDragger(),a?(this.setData(a,e),this.setDragMode("crop")):this.setData(this.defaults.data)},resize:function(){clearTimeout(this.resizing),this.resizing=setTimeout(a.proxy(this.update,this,this.getData()),200)},preview:function(){var b=this.image,c=this.dragger,d=b.width,e=b.height,f=c.left-b.left,g=c.top-b.top;this.$viewer.find("img").css({width:I(d),height:I(e),marginLeft:-I(f),marginTop:-I(g)}),this.$preview.each(function(){var b=a(this),h=b.width()/c.width;b.find("img").css({width:I(d*h),height:I(e*h),marginLeft:-I(f*h),marginTop:-I(g*h)})})},addListeners:function(){var c=this.defaults;this.$element.on(D,c.dragstart).on(E,c.dragmove).on(F,c.dragend),this.$cropper.on(v,this._dragstart=a.proxy(this.dragstart,this)).on(A,this._dblclick=a.proxy(this.dblclick,this)),c.zoomable&&this.$cropper.on(y,this._wheel=a.proxy(this.wheel,this)),this.$scope.on(w,this._dragmove=a.proxy(this.dragmove,this)).on(x,this._dragend=a.proxy(this.dragend,this)),b.on(z,this._resize=a.proxy(this.resize,this))},removeListeners:function(){var a=this.defaults;this.$element.off(D,a.dragstart).off(E,a.dragmove).off(F,a.dragend),this.$cropper.off(v,this._dragstart).off(A,this._dblclick),a.zoomable&&this.$cropper.off(y,this._wheel),this.$scope.off(w,this._dragmove).off(x,this._dragend),b.off(z,this._resize)},initPreview:function(){var b='<img src="'+this.url+'">';this.$preview=a(this.defaults.preview),this.$viewer.html(b),this.$preview.html(b).find("img").css("cssText","min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;")},initContainer:function(){var a=this.$container;this.container={width:L(a.width(),300),height:L(a.height(),150)}},initCropper:function(){var a,b=this.container,c=this.image;c.naturalWidth*b.height/c.naturalHeight-b.width>=0?(a={width:b.width,height:b.width/c.aspectRatio,left:0},a.top=(b.height-a.height)/2):(a={width:b.height*c.aspectRatio,height:b.height,top:0},a.left=(b.width-a.width)/2),this.$cropper.css({width:I(a.width),height:I(a.height),left:I(a.left),top:I(a.top)}),this.cropper=a},initImage:function(){var b=this.image,c=this.cropper,d={_width:c.width,_height:c.height,width:c.width,height:c.height,left:0,top:0,ratio:c.width/b.naturalWidth};this.defaultImage=a.extend({},b,d),b._width!==c.width||b._height!==c.height?a.extend(b,d):(b=a.extend({},d,b),this.replaced&&(this.replaced=f,b.ratio=d.ratio)),this.image=b,this.renderImage()},renderImage:function(a){var b=this.image;"zoom"===a&&(b.left-=(b.width-b.oldWidth)/2,b.top-=(b.height-b.oldHeight)/2),b.left=K(L(b.left,b._width-b.width),0),b.top=K(L(b.top,b._height-b.height),0),this.$clone.css({width:I(b.width),height:I(b.height),marginLeft:I(b.left),marginTop:I(b.top)}),a&&(this.defaults.done(this.getData()),this.preview())},initDragger:function(){var b,c=this.defaults,d=this.cropper,e=c.aspectRatio||this.image.aspectRatio,f=this.image.ratio;b=d.height*e-d.width>=0?{height:d.width/e,width:d.width,left:0,top:(d.height-d.width/e)/2,maxWidth:d.width,maxHeight:d.width/e}:{height:d.height,width:d.height*e,left:(d.width-d.height*e)/2,top:0,maxWidth:d.height*e,maxHeight:d.height},b.minWidth=0,b.minHeight=0,c.aspectRatio?(isFinite(c.maxWidth)?(b.maxWidth=K(b.maxWidth,c.maxWidth*f),b.maxHeight=b.maxWidth/e):isFinite(c.maxHeight)&&(b.maxHeight=K(b.maxHeight,c.maxHeight*f),b.maxWidth=b.maxHeight*e),c.minWidth>0?(b.minWidth=L(0,c.minWidth*f),b.minHeight=b.minWidth/e):c.minHeight>0&&(b.minHeight=L(0,c.minHeight*f),b.minWidth=b.minHeight*e)):(b.maxWidth=K(b.maxWidth,c.maxWidth*f),b.maxHeight=K(b.maxHeight,c.maxHeight*f),b.minWidth=L(0,c.minWidth*f),b.minHeight=L(0,c.minHeight*f)),b.minWidth=K(b.maxWidth,b.minWidth),b.minHeight=K(b.maxHeight,b.minHeight),b.height*=c.autoCropArea,b.width*=c.autoCropArea,b.left=(d.width-b.width)/2,b.top=(d.height-b.height)/2,b.oldLeft=b.left,b.oldTop=b.top,this.defaultDragger=b,this.dragger=a.extend({},b)},renderDragger:function(){var a=this.dragger,b=this.cropper;a.width>a.maxWidth?(a.width=a.maxWidth,a.left=a.oldLeft):a.width<a.minWidth&&(a.width=a.minWidth,a.left=a.oldLeft),a.height>a.maxHeight?(a.height=a.maxHeight,a.top=a.oldTop):a.height<a.minHeight&&(a.height=a.minHeight,a.top=a.oldTop),a.left=K(L(a.left,0),b.width-a.width),a.top=K(L(a.top,0),b.height-a.height),a.oldLeft=a.left,a.oldTop=a.top,this.dragger=a,this.disabled||this.defaults.done(this.getData()),this.$dragger.css({width:I(a.width),height:I(a.height),left:I(a.left),top:I(a.top)}),this.preview()},reset:function(b){this.cropped&&(b&&(this.defaults.data={}),this.image=a.extend({},this.defaultImage),this.renderImage(),this.dragger=a.extend({},this.defaultDragger),this.setData(this.defaults.data))},clear:function(){this.cropped&&(this.cropped=f,this.setData({x:0,y:0,width:0,height:0}),this.$canvas.removeClass(p),this.$dragger.addClass(q))},destroy:function(){var a=this.$element;this.ready&&(this.unbuild(),a.removeClass(q).removeData("cropper"),this.rotated&&a.attr("src",this.$original.attr("src")))},replace:function(b,c){var d,g=this,h=this.$element,i=this.element;b&&b!==this.url&&b!==h.attr("src")&&(c||(this.rotated=f,this.replaced=e),h.is("img")?(h.attr("src",b),this.load()):h.is("canvas")&&this.support.canvas&&(d=i.getContext("2d"),a('<img src="'+b+'">').one("load",function(){i.width=this.width,i.height=this.height,d.clearRect(0,0,i.width,i.height),d.drawImage(this,0,0),g.load()})))},setData:function(b,c){var d=this.cropper,e=this.dragger,f=this.image,h=this.defaults.aspectRatio;this.built&&typeof b!==j&&((b===g||a.isEmptyObject(b))&&(e=a.extend({},this.defaultDragger)),a.isPlainObject(b)&&!a.isEmptyObject(b)&&(c||(this.defaults.data=b),b=this.transformData(b),G(b.x)&&b.x<=d.width-f.left&&(e.left=b.x+f.left),G(b.y)&&b.y<=d.height-f.top&&(e.top=b.y+f.top),h?G(b.width)&&b.width<=e.maxWidth&&b.width>=e.minWidth?(e.width=b.width,e.height=e.width/h):G(b.height)&&b.height<=e.maxHeight&&b.height>=e.minHeight&&(e.height=b.height,e.width=e.height*h):(G(b.width)&&b.width<=e.maxWidth&&b.width>=e.minWidth&&(e.width=b.width),G(b.height)&&b.height<=e.maxHeight&&b.height>=e.minHeight&&(e.height=b.height))),this.dragger=e,this.renderDragger())},getData:function(a){var b=this.dragger,c=this.image,d={};return this.built&&(d={x:b.left-c.left,y:b.top-c.top,width:b.width,height:b.height},d=this.transformData(d,e,a)),d},transformData:function(b,c,d){var e=this.image.ratio,f={};return a.each(b,function(a,b){b=P(b),n.test(a)&&!isNaN(b)&&(f[a]=c?d?I(b/e):b/e:b*e)}),f},setAspectRatio:function(a){var b="auto"===a;a=P(a),(b||!isNaN(a)&&a>0)&&(this.defaults.aspectRatio=b?h:a,this.built&&(this.initDragger(),this.renderDragger()))},getImageData:function(){var b={};return this.ready&&a.each(this.image,function(a,c){o.test(a)&&(b[a]=c)}),b},getDataURL:function(b,c,d){var e,f=a("<canvas>")[0],g=this.getData(),h="";return a.isPlainObject(b)||(d=c,c=b,b={}),b=a.extend({width:g.width,height:g.height},b),this.cropped&&this.support.canvas&&(f.width=b.width,f.height=b.height,e=f.getContext("2d"),"image/jpeg"===c&&(e.fillStyle="#fff",e.fillRect(0,0,b.width,b.height)),e.drawImage(this.$clone[0],g.x,g.y,g.width,g.height,0,0,b.width,b.height),h=f.toDataURL(c,d)),h},setDragMode:function(a){var b=this.$canvas,c=this.defaults,d=f,g=f;if(this.built&&!this.disabled){switch(a){case"crop":c.dragCrop&&(d=e,b.data(k,a));break;case"move":g=e,b.data(k,a);break;default:b.removeData(k)}b.toggleClass(t,d).toggleClass(s,g)}},enable:function(){this.built&&(this.disabled=f,this.$cropper.removeClass(u))},disable:function(){this.built&&(this.disabled=e,this.$cropper.addClass(u))},rotate:function(a){var b=this.image;a=P(a)||0,this.built&&0!==a&&!this.disabled&&this.defaults.rotatable&&this.support.canvas&&(this.rotated=e,a=b.rotate=(b.rotate+a)%360,this.replace(this.getRotatedDataURL(a),!0))},getRotatedDataURL:function(b){var c=a("<canvas>")[0],d=c.getContext("2d"),e=b*Math.PI/180,f=M(b)%180,g=f>90?180-f:f,h=g*Math.PI/180,i=this.originalImage,j=i.naturalWidth,k=i.naturalHeight,l=M(j*O(h)+k*N(h)),m=M(j*N(h)+k*O(h));return c.width=l,c.height=m,d.save(),d.translate(l/2,m/2),d.rotate(e),d.drawImage(this.$original[0],-j/2,-k/2,j,k),d.restore(),c.toDataURL()},zoom:function(a){var b,c,d,e=this.image;a=P(a),this.built&&a&&!this.disabled&&this.defaults.zoomable&&(b=e.width*(1+a),c=e.height*(1+a),d=b/e._width,d>10||(1>d&&(b=e._width,c=e._height),this.setDragMode(1>=d?"crop":"move"),e.oldWidth=e.width,e.oldHeight=e.height,e.width=b,e.height=c,e.ratio=e.width/e.naturalWidth,this.renderImage("zoom")))},dblclick:function(){this.disabled||this.setDragMode(this.$canvas.hasClass(t)?"move":"crop")},wheel:function(a){var b,c=a.originalEvent,d=117.25,e=5,f=166.66665649414062,g=.1;this.disabled||(a.preventDefault(),c.deltaY?(b=c.deltaY,b=b%e===0?b/e:b%d===0?b/d:b/f):b=c.wheelDelta?-c.wheelDelta/120:c.detail?c.detail/3:0,this.zoom(b*g))},dragstart:function(b){var c,d,g,h=b.originalEvent.touches,i=b;if(!this.disabled){if(h){if(g=h.length,g>1){if(!this.defaults.zoomable||2!==g)return;i=h[1],this.startX2=i.pageX,this.startY2=i.pageY,c="zoom"}i=h[0]}if(c=c||a(i.target).data(k),m.test(c)){if(b.preventDefault(),d=a.Event(D),this.$element.trigger(d),d.isDefaultPrevented())return;this.directive=c,this.cropping=f,this.startX=i.pageX,this.startY=i.pageY,"crop"===c&&(this.cropping=e,this.$canvas.addClass(p))}}},dragmove:function(b){var c,d,e=b.originalEvent.touches,f=b;if(!this.disabled){if(e){if(d=e.length,d>1){if(!this.defaults.zoomable||2!==d)return;f=e[1],this.endX2=f.pageX,this.endY2=f.pageY}f=e[0]}if(this.directive){if(b.preventDefault(),c=a.Event(E),this.$element.trigger(c),c.isDefaultPrevented())return;this.endX=f.pageX,this.endY=f.pageY,this.dragging()}}},dragend:function(b){var c;if(!this.disabled&&this.directive){if(b.preventDefault(),c=a.Event(F),this.$element.trigger(c),c.isDefaultPrevented())return;this.cropping&&(this.cropping=f,this.$canvas.toggleClass(p,this.cropped&&this.defaults.modal)),this.directive=""}},dragging:function(){var a,b=this.directive,c=this.image,d=this.cropper,g=d.width,h=d.height,i=this.dragger,j=i.width,k=i.height,l=i.left,m=i.top,n=l+j,o=m+k,p=e,r=this.defaults,s=r.aspectRatio,t={x:this.endX-this.startX,y:this.endY-this.startY};switch(s&&(t.X=t.y*s,t.Y=t.x/s),b){case"all":l+=t.x,m+=t.y;break;case"e":if(t.x>=0&&(n>=g||s&&(0>=m||o>=h))){p=f;break}j+=t.x,s&&(k=j/s,m-=t.Y/2),0>j&&(b="w",j=0);break;case"n":if(t.y<=0&&(0>=m||s&&(0>=l||n>=g))){p=f;break}k-=t.y,m+=t.y,s&&(j=k*s,l+=t.X/2),0>k&&(b="s",k=0);break;case"w":if(t.x<=0&&(0>=l||s&&(0>=m||o>=h))){p=f;break}j-=t.x,l+=t.x,s&&(k=j/s,m+=t.Y/2),0>j&&(b="e",j=0);break;case"s":if(t.y>=0&&(o>=h||s&&(0>=l||n>=g))){p=f;break}k+=t.y,s&&(j=k*s,l-=t.X/2),0>k&&(b="n",k=0);break;case"ne":if(s){if(t.y<=0&&(0>=m||n>=g)){p=f;break}k-=t.y,m+=t.y,j=k*s}else t.x>=0?g>n?j+=t.x:t.y<=0&&0>=m&&(p=f):j+=t.x,t.y<=0?m>0&&(k-=t.y,m+=t.y):(k-=t.y,m+=t.y);0>k&&(b="sw",k=0,j=0);break;case"nw":if(s){if(t.y<=0&&(0>=m||0>=l)){p=f;break}k-=t.y,m+=t.y,j=k*s,l+=t.X}else t.x<=0?l>0?(j-=t.x,l+=t.x):t.y<=0&&0>=m&&(p=f):(j-=t.x,l+=t.x),t.y<=0?m>0&&(k-=t.y,m+=t.y):(k-=t.y,m+=t.y);0>k&&(b="se",k=0,j=0);break;case"sw":if(s){if(t.x<=0&&(0>=l||o>=h)){p=f;break}j-=t.x,l+=t.x,k=j/s}else t.x<=0?l>0?(j-=t.x,l+=t.x):t.y>=0&&o>=h&&(p=f):(j-=t.x,l+=t.x),t.y>=0?h>o&&(k+=t.y):k+=t.y;0>j&&(b="ne",k=0,j=0);break;case"se":if(s){if(t.x>=0&&(n>=g||o>=h)){p=f;break}j+=t.x,k=j/s}else t.x>=0?g>n?j+=t.x:t.y>=0&&o>=h&&(p=f):j+=t.x,t.y>=0?h>o&&(k+=t.y):k+=t.y;0>j&&(b="nw",k=0,j=0);break;case"move":c.left+=t.x,c.top+=t.y,this.renderImage("move"),p=f;break;case"zoom":r.zoomable&&(this.zoom(function(a,b,c,d,e,f){return(J(e*e+f*f)-J(c*c+d*d))/J(a*a+b*b)}(c.width,c.height,M(this.startX-this.startX2),M(this.startY-this.startY2),M(this.endX-this.endX2),M(this.endY-this.endY2))),this.endX2=this.startX2,this.endY2=this.startY2);break;case"crop":t.x&&t.y&&(a=this.$cropper.offset(),l=this.startX-a.left,m=this.startY-a.top,j=i.minWidth,k=i.minHeight,t.x>0?t.y>0?b="se":(b="ne",m-=k):t.y>0?(b="sw",l-=j):(b="nw",l-=j,m-=k),this.cropped||(this.cropped=e,this.$dragger.removeClass(q)))}p&&(i.width=j,i.height=k,i.left=l,i.top=m,this.directive=b,this.renderDragger()),this.startX=this.endX,this.startY=this.endY}},H.TEMPLATE=function(a,b){return b=b.split(","),a.replace(/\d+/g,function(a){return b[a]})}('<0 6="5-container"><0 6="5-canvas"></0><0 6="5-dragger"><1 6="5-viewer"></1><1 6="5-8 8-h"></1><1 6="5-8 8-v"></1><1 6="5-face" 3-2="all"></1><1 6="5-7 7-e" 3-2="e"></1><1 6="5-7 7-n" 3-2="n"></1><1 6="5-7 7-w" 3-2="w"></1><1 6="5-7 7-s" 3-2="s"></1><1 6="5-4 4-e" 3-2="e"></1><1 6="5-4 4-n" 3-2="n"></1><1 6="5-4 4-w" 3-2="w"></1><1 6="5-4 4-s" 3-2="s"></1><1 6="5-4 4-ne" 3-2="ne"></1><1 6="5-4 4-nw" 3-2="nw"></1><1 6="5-4 4-sw" 3-2="sw"></1><1 6="5-4 4-se" 3-2="se"></1></0></0>',"div,span,directive,data,point,cropper,class,line,dashed"),H.DEFAULTS={aspectRatio:"auto",autoCropArea:.8,data:{},done:a.noop,preview:"",multiple:f,autoCrop:e,dragCrop:e,dashed:e,modal:e,movable:e,resizable:e,zoomable:e,rotatable:e,checkImageOrigin:e,minWidth:0,minHeight:0,maxWidth:i,maxHeight:i,build:g,built:g,dragstart:g,dragmove:g,dragend:g},H.setDefaults=function(b){a.extend(H.DEFAULTS,b)},H.other=a.fn.cropper,a.fn.cropper=function(b){var c,d=[].slice.call(arguments,1);return this.each(function(){var e,f=a(this),g=f.data("cropper");g||f.data("cropper",g=new H(this,b)),"string"==typeof b&&a.isFunction(e=g[b])&&(c=e.apply(g,d))}),typeof c!==j?c:this},a.fn.cropper.Constructor=H,a.fn.cropper.setDefaults=H.setDefaults,a.fn.cropper.noConflict=function(){return a.fn.cropper=H.other,this}}); \ No newline at end of file diff --git a/assets/js/plugins/dataTables/dataTables.bootstrap.js b/assets/js/plugins/dataTables/dataTables.bootstrap.js deleted file mode 100644 index c2fba685..00000000 --- a/assets/js/plugins/dataTables/dataTables.bootstrap.js +++ /dev/null @@ -1,245 +0,0 @@ -/* Set the defaults for DataTables initialisation */ -$.extend(true, $.fn.dataTable.defaults, { - "sDom": "<'row'<'col-sm-6'l><'col-sm-6'f>r>" + "t" + "<'row'<'col-sm-6'i><'col-sm-6'p>>", - "oLanguage": { - "sLengthMenu": "_MENU_ records per page" - } -}); - - -/* Default class modification */ -$.extend($.fn.dataTableExt.oStdClasses, { - "sWrapper": "dataTables_wrapper form-inline", - "sFilterInput": "form-control input-sm", - "sLengthSelect": "form-control input-sm" -}); - -// In 1.10 we use the pagination renderers to draw the Bootstrap paging, -// rather than custom plug-in -if ($.fn.dataTable.Api) { - $.fn.dataTable.defaults.renderer = 'bootstrap'; - $.fn.dataTable.ext.renderer.pageButton.bootstrap = function(settings, host, idx, buttons, page, pages) { - var api = new $.fn.dataTable.Api(settings); - var classes = settings.oClasses; - var lang = settings.oLanguage.oPaginate; - var btnDisplay, btnClass; - - var attach = function(container, buttons) { - var i, ien, node, button; - var clickHandler = function(e) { - e.preventDefault(); - if (e.data.action !== 'ellipsis') { - api.page(e.data.action).draw(false); - } - }; - - for (i = 0, ien = buttons.length; i < ien; i++) { - button = buttons[i]; - - if ($.isArray(button)) { - attach(container, button); - } else { - btnDisplay = ''; - btnClass = ''; - - switch (button) { - case 'ellipsis': - btnDisplay = '&hellip;'; - btnClass = 'disabled'; - break; - - case 'first': - btnDisplay = lang.sFirst; - btnClass = button + (page > 0 ? - '' : ' disabled'); - break; - - case 'previous': - btnDisplay = lang.sPrevious; - btnClass = button + (page > 0 ? - '' : ' disabled'); - break; - - case 'next': - btnDisplay = lang.sNext; - btnClass = button + (page < pages - 1 ? - '' : ' disabled'); - break; - - case 'last': - btnDisplay = lang.sLast; - btnClass = button + (page < pages - 1 ? - '' : ' disabled'); - break; - - default: - btnDisplay = button + 1; - btnClass = page === button ? - 'active' : ''; - break; - } - - if (btnDisplay) { - node = $('<li>', { - 'class': classes.sPageButton + ' ' + btnClass, - 'aria-controls': settings.sTableId, - 'tabindex': settings.iTabIndex, - 'id': idx === 0 && typeof button === 'string' ? settings.sTableId + '_' + button : null - }) - .append($('<a>', { - 'href': '#' - }) - .html(btnDisplay) - ) - .appendTo(container); - - settings.oApi._fnBindAction( - node, { - action: button - }, clickHandler - ); - } - } - } - }; - - attach( - $(host).empty().html('<ul class="pagination"/>').children('ul'), - buttons - ); - } -} else { - // Integration for 1.9- - $.fn.dataTable.defaults.sPaginationType = 'bootstrap'; - - /* API method to get paging information */ - $.fn.dataTableExt.oApi.fnPagingInfo = function(oSettings) { - return { - "iStart": oSettings._iDisplayStart, - "iEnd": oSettings.fnDisplayEnd(), - "iLength": oSettings._iDisplayLength, - "iTotal": oSettings.fnRecordsTotal(), - "iFilteredTotal": oSettings.fnRecordsDisplay(), - "iPage": oSettings._iDisplayLength === -1 ? 0 : Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength), - "iTotalPages": oSettings._iDisplayLength === -1 ? 0 : Math.ceil(oSettings.fnRecordsDisplay() / oSettings._iDisplayLength) - }; - }; - - /* Bootstrap style pagination control */ - $.extend($.fn.dataTableExt.oPagination, { - "bootstrap": { - "fnInit": function(oSettings, nPaging, fnDraw) { - var oLang = oSettings.oLanguage.oPaginate; - var fnClickHandler = function(e) { - e.preventDefault(); - if (oSettings.oApi._fnPageChange(oSettings, e.data.action)) { - fnDraw(oSettings); - } - }; - - $(nPaging).append( - '<ul class="pagination">' + - '<li class="prev disabled"><a href="#">&larr; ' + oLang.sPrevious + '</a></li>' + - '<li class="next disabled"><a href="#">' + oLang.sNext + ' &rarr; </a></li>' + - '</ul>' - ); - var els = $('a', nPaging); - $(els[0]).bind('click.DT', { - action: "previous" - }, fnClickHandler); - $(els[1]).bind('click.DT', { - action: "next" - }, fnClickHandler); - }, - - "fnUpdate": function(oSettings, fnDraw) { - var iListLength = 5; - var oPaging = oSettings.oInstance.fnPagingInfo(); - var an = oSettings.aanFeatures.p; - var i, ien, j, sClass, iStart, iEnd, iHalf = Math.floor(iListLength / 2); - - if (oPaging.iTotalPages < iListLength) { - iStart = 1; - iEnd = oPaging.iTotalPages; - } else if (oPaging.iPage <= iHalf) { - iStart = 1; - iEnd = iListLength; - } else if (oPaging.iPage >= (oPaging.iTotalPages - iHalf)) { - iStart = oPaging.iTotalPages - iListLength + 1; - iEnd = oPaging.iTotalPages; - } else { - iStart = oPaging.iPage - iHalf + 1; - iEnd = iStart + iListLength - 1; - } - - for (i = 0, ien = an.length; i < ien; i++) { - // Remove the middle elements - $('li:gt(0)', an[i]).filter(':not(:last)').remove(); - - // Add the new list items and their event handlers - for (j = iStart; j <= iEnd; j++) { - sClass = (j == oPaging.iPage + 1) ? 'class="active"' : ''; - $('<li ' + sClass + '><a href="#">' + j + '</a></li>') - .insertBefore($('li:last', an[i])[0]) - .bind('click', function(e) { - e.preventDefault(); - oSettings._iDisplayStart = (parseInt($('a', this).text(), 10) - 1) * oPaging.iLength; - fnDraw(oSettings); - }); - } - - // Add / remove disabled classes from the static elements - if (oPaging.iPage === 0) { - $('li:first', an[i]).addClass('disabled'); - } else { - $('li:first', an[i]).removeClass('disabled'); - } - - if (oPaging.iPage === oPaging.iTotalPages - 1 || oPaging.iTotalPages === 0) { - $('li:last', an[i]).addClass('disabled'); - } else { - $('li:last', an[i]).removeClass('disabled'); - } - } - } - } - }); -} - - -/* - * TableTools Bootstrap compatibility - * Required TableTools 2.1+ - */ -if ($.fn.DataTable.TableTools) { - // Set the classes that TableTools uses to something suitable for Bootstrap - $.extend(true, $.fn.DataTable.TableTools.classes, { - "container": "DTTT btn-group", - "buttons": { - "normal": "btn btn-default", - "disabled": "disabled" - }, - "collection": { - "container": "DTTT_dropdown dropdown-menu", - "buttons": { - "normal": "", - "disabled": "disabled" - } - }, - "print": { - "info": "DTTT_print_info modal" - }, - "select": { - "row": "active" - } - }); - - // Have the collection use a bootstrap compatible dropdown - $.extend(true, $.fn.DataTable.TableTools.DEFAULTS.oTags, { - "collection": { - "container": "ul", - "button": "li", - "liner": "a" - } - }); -} diff --git a/assets/js/plugins/dataTables/dataTables.responsive.js b/assets/js/plugins/dataTables/dataTables.responsive.js deleted file mode 100644 index 19f7b222..00000000 --- a/assets/js/plugins/dataTables/dataTables.responsive.js +++ /dev/null @@ -1,801 +0,0 @@ -/*! Responsive 1.0.2 - * 2014 SpryMedia Ltd - datatables.net/license - */ - -/** - * @summary Responsive - * @description Responsive tables plug-in for DataTables - * @version 1.0.2 - * @file dataTables.responsive.js - * @author SpryMedia Ltd (www.sprymedia.co.uk) - * @contact www.sprymedia.co.uk/contact - * @copyright Copyright 2014 SpryMedia Ltd. - * - * This source file is free software, available under the following license: - * MIT license - http://datatables.net/license/mit - * - * This source file is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. - * - * For details please refer to: http://www.datatables.net - */ - -(function(window, document, undefined) { - - - var factory = function( $, DataTable ) { - "use strict"; - - /** - * Responsive is a plug-in for the DataTables library that makes use of - * DataTables' ability to change the visibility of columns, changing the - * visibility of columns so the displayed columns fit into the table container. - * The end result is that complex tables will be dynamically adjusted to fit - * into the viewport, be it on a desktop, tablet or mobile browser. - * - * Responsive for DataTables has two modes of operation, which can used - * individually or combined: - * - * * Class name based control - columns assigned class names that match the - * breakpoint logic can be shown / hidden as required for each breakpoint. - * * Automatic control - columns are automatically hidden when there is no - * room left to display them. Columns removed from the right. - * - * In additional to column visibility control, Responsive also has built into - * options to use DataTables' child row display to show / hide the information - * from the table that has been hidden. There are also two modes of operation - * for this child row display: - * - * * Inline - when the control element that the user can use to show / hide - * child rows is displayed inside the first column of the table. - * * Column - where a whole column is dedicated to be the show / hide control. - * - * Initialisation of Responsive is performed by: - * - * * Adding the class `responsive` or `dt-responsive` to the table. In this case - * Responsive will automatically be initialised with the default configuration - * options when the DataTable is created. - * * Using the `responsive` option in the DataTables configuration options. This - * can also be used to specify the configuration options, or simply set to - * `true` to use the defaults. - * - * @class - * @param {object} settings DataTables settings object for the host table - * @param {object} [opts] Configuration options - * @requires jQuery 1.7+ - * @requires DataTables 1.10.1+ - * - * @example - * $('#example').DataTable( { - * responsive: true - * } ); - * } ); - */ - var Responsive = function ( settings, opts ) { - // Sanity check that we are using DataTables 1.10 or newer - if ( ! DataTable.versionCheck || ! DataTable.versionCheck( '1.10.1' ) ) { - throw 'DataTables Responsive requires DataTables 1.10.1 or newer'; - } - - this.s = { - dt: new DataTable.Api( settings ), - columns: [] - }; - - // Check if responsive has already been initialised on this table - if ( this.s.dt.settings()[0].responsive ) { - return; - } - - // details is an object, but for simplicity the user can give it as a string - if ( opts && typeof opts.details === 'string' ) { - opts.details = { type: opts.details }; - } - - this.c = $.extend( true, {}, Responsive.defaults, DataTable.defaults.responsive, opts ); - settings.responsive = this; - this._constructor(); - }; - - Responsive.prototype = { - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Constructor - */ - - /** - * Initialise the Responsive instance - * - * @private - */ - _constructor: function () - { - var that = this; - var dt = this.s.dt; - - dt.settings()[0]._responsive = this; - - // Use DataTables' private throttle function to avoid processor thrashing - $(window).on( 'resize.dtr orientationchange.dtr', dt.settings()[0].oApi._fnThrottle( function () { - that._resize(); - } ) ); - - // Destroy event handler - dt.on( 'destroy.dtr', function () { - $(window).off( 'resize.dtr orientationchange.dtr' ); - } ); - - // Reorder the breakpoints array here in case they have been added out - // of order - this.c.breakpoints.sort( function (a, b) { - return a.width < b.width ? 1 : - a.width > b.width ? -1 : 0; - } ); - - // Determine which columns are already hidden, and should therefore - // remain hidden. TODO - should this be done? See thread 22677 - // - // this.s.alwaysHidden = dt.columns(':hidden').indexes(); - - this._classLogic(); - this._resizeAuto(); - - // First pass - draw the table for the current viewport size - this._resize(); - - // Details handler - var details = this.c.details; - if ( details.type ) { - that._detailsInit(); - this._detailsVis(); - - dt.on( 'column-visibility.dtr', function () { - that._detailsVis(); - } ); - - $(dt.table().node()).addClass( 'dtr-'+details.type ); - } - }, - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Private methods - */ - - /** - * Calculate the visibility for the columns in a table for a given - * breakpoint. The result is pre-determined based on the class logic if - * class names are used to control all columns, but the width of the table - * is also used if there are columns which are to be automatically shown - * and hidden. - * - * @param {string} breakpoint Breakpoint name to use for the calculation - * @return {array} Array of boolean values initiating the visibility of each - * column. - * @private - */ - _columnsVisiblity: function ( breakpoint ) - { - var dt = this.s.dt; - var columns = this.s.columns; - var i, ien; - - // Class logic - determine which columns are in this breakpoint based - // on the classes. If no class control (i.e. `auto`) then `-` is used - // to indicate this to the rest of the function - var display = $.map( columns, function ( col ) { - return col.auto && col.minWidth === null ? - false : - col.auto === true ? - '-' : - $.inArray( breakpoint, col.includeIn ) !== -1; - } ); - - // Auto column control - first pass: how much width is taken by the - // ones that must be included from the non-auto columns - var requiredWidth = 0; - for ( i=0, ien=display.length ; i<ien ; i++ ) { - if ( display[i] === true ) { - requiredWidth += columns[i].minWidth; - } - } - - // Second pass, use up any remaining width for other columns - var widthAvailable = dt.table().container().offsetWidth; - var usedWidth = widthAvailable - requiredWidth; - - for ( i=0, ien=display.length ; i<ien ; i++ ) { - // Control column needs to always be included. This makes it sub- - // optimal in terms of using the available with, but to stop layout - // thrashing or overflow - if ( columns[i].control ) { - usedWidth -= columns[i].minWidth; - } - else if ( display[i] === '-' ) { - // Otherwise, remove the width - display[i] = usedWidth - columns[i].minWidth < 0 ? - false : - true; - - // Continue counting down the width, so a smaller column to the - // left won't be shown - usedWidth -= columns[i].minWidth; - } - } - - // Determine if the 'control' column should be shown (if there is one). - // This is the case when there is a hidden column (that is not the - // control column). The two loops look inefficient here, but they are - // trivial and will fly through. We need to know the outcome from the - // first , before the action in the second can be taken - var showControl = false; - - for ( i=0, ien=columns.length ; i<ien ; i++ ) { - if ( ! columns[i].control && ! columns[i].never && ! display[i] ) { - showControl = true; - break; - } - } - - for ( i=0, ien=columns.length ; i<ien ; i++ ) { - if ( columns[i].control ) { - display[i] = showControl; - } - } - - // Finally we need to make sure that there is at least one column that - // is visible - if ( $.inArray( true, display ) === -1 ) { - display[0] = true; - } - - return display; - }, - - - /** - * Create the internal `columns` array with information about the columns - * for the table. This includes determining which breakpoints the column - * will appear in, based upon class names in the column, which makes up the - * vast majority of this method. - * - * @private - */ - _classLogic: function () - { - var that = this; - var calc = {}; - var breakpoints = this.c.breakpoints; - var columns = this.s.dt.columns().eq(0).map( function (i) { - var className = this.column(i).header().className; - - return { - className: className, - includeIn: [], - auto: false, - control: false, - never: className.match(/\bnever\b/) ? true : false - }; - } ); - - // Simply add a breakpoint to `includeIn` array, ensuring that there are - // no duplicates - var add = function ( colIdx, name ) { - var includeIn = columns[ colIdx ].includeIn; - - if ( $.inArray( name, includeIn ) === -1 ) { - includeIn.push( name ); - } - }; - - var column = function ( colIdx, name, operator, matched ) { - var size, i, ien; - - if ( ! operator ) { - columns[ colIdx ].includeIn.push( name ); - } - else if ( operator === 'max-' ) { - // Add this breakpoint and all smaller - size = that._find( name ).width; - - for ( i=0, ien=breakpoints.length ; i<ien ; i++ ) { - if ( breakpoints[i].width <= size ) { - add( colIdx, breakpoints[i].name ); - } - } - } - else if ( operator === 'min-' ) { - // Add this breakpoint and all larger - size = that._find( name ).width; - - for ( i=0, ien=breakpoints.length ; i<ien ; i++ ) { - if ( breakpoints[i].width >= size ) { - add( colIdx, breakpoints[i].name ); - } - } - } - else if ( operator === 'not-' ) { - // Add all but this breakpoint (xxx need extra information) - - for ( i=0, ien=breakpoints.length ; i<ien ; i++ ) { - if ( breakpoints[i].name.indexOf( matched ) === -1 ) { - add( colIdx, breakpoints[i].name ); - } - } - } - }; - - // Loop over each column and determine if it has a responsive control - // class - columns.each( function ( col, i ) { - var classNames = col.className.split(' '); - var hasClass = false; - - // Split the class name up so multiple rules can be applied if needed - for ( var k=0, ken=classNames.length ; k<ken ; k++ ) { - var className = $.trim( classNames[k] ); - - if ( className === 'all' ) { - // Include in all - hasClass = true; - col.includeIn = $.map( breakpoints, function (a) { - return a.name; - } ); - return; - } - else if ( className === 'none' || className === 'never' ) { - // Include in none (default) and no auto - hasClass = true; - return; - } - else if ( className === 'control' ) { - // Special column that is only visible, when one of the other - // columns is hidden. This is used for the details control - hasClass = true; - col.control = true; - return; - } - - $.each( breakpoints, function ( j, breakpoint ) { - // Does this column have a class that matches this breakpoint? - var brokenPoint = breakpoint.name.split('-'); - var re = new RegExp( '(min\\-|max\\-|not\\-)?('+brokenPoint[0]+')(\\-[_a-zA-Z0-9])?' ); - var match = className.match( re ); - - if ( match ) { - hasClass = true; - - if ( match[2] === brokenPoint[0] && match[3] === '-'+brokenPoint[1] ) { - // Class name matches breakpoint name fully - column( i, breakpoint.name, match[1], match[2]+match[3] ); - } - else if ( match[2] === brokenPoint[0] && ! match[3] ) { - // Class name matched primary breakpoint name with no qualifier - column( i, breakpoint.name, match[1], match[2] ); - } - } - } ); - } - - // If there was no control class, then automatic sizing is used - if ( ! hasClass ) { - col.auto = true; - } - } ); - - this.s.columns = columns; - }, - - - /** - * Initialisation for the details handler - * - * @private - */ - _detailsInit: function () - { - var that = this; - var dt = this.s.dt; - var details = this.c.details; - - // The inline type always uses the first child as the target - if ( details.type === 'inline' ) { - details.target = 'td:first-child'; - } - - // type.target can be a string jQuery selector or a column index - var target = details.target; - var selector = typeof target === 'string' ? target : 'td'; - - // Click handler to show / hide the details rows when they are available - $( dt.table().body() ).on( 'click', selector, function (e) { - // If the table is not collapsed (i.e. there is no hidden columns) - // then take no action - if ( ! $(dt.table().node()).hasClass('collapsed' ) ) { - return; - } - - // Check that the row is actually a DataTable's controlled node - if ( ! dt.row( $(this).closest('tr') ).length ) { - return; - } - - // For column index, we determine if we should act or not in the - // handler - otherwise it is already okay - if ( typeof target === 'number' ) { - var targetIdx = target < 0 ? - dt.columns().eq(0).length + target : - target; - - if ( dt.cell( this ).index().column !== targetIdx ) { - return; - } - } - - // $().closest() includes itself in its check - var row = dt.row( $(this).closest('tr') ); - - if ( row.child.isShown() ) { - row.child( false ); - $( row.node() ).removeClass( 'parent' ); - } - else { - var info = that.c.details.renderer( dt, row[0] ); - row.child( info, 'child' ).show(); - $( row.node() ).addClass( 'parent' ); - } - } ); - }, - - - /** - * Update the child rows in the table whenever the column visibility changes - * - * @private - */ - _detailsVis: function () - { - var that = this; - var dt = this.s.dt; - - // Find how many columns are hidden - var hiddenColumns = dt.columns().indexes().filter( function ( idx ) { - var col = dt.column( idx ); - - if ( col.visible() ) { - return null; - } - - // Only counts as hidden if it doesn't have the `never` class - return $( col.header() ).hasClass( 'never' ) ? null : idx; - } ); - var haveHidden = true; - - if ( hiddenColumns.length === 0 || ( hiddenColumns.length === 1 && this.s.columns[ hiddenColumns[0] ].control ) ) { - haveHidden = false; - } - - if ( haveHidden ) { - // Got hidden columns - $( dt.table().node() ).addClass('collapsed'); - - // Show all existing child rows - dt.rows().eq(0).each( function (idx) { - var row = dt.row( idx ); - - if ( row.child() ) { - var info = that.c.details.renderer( dt, row[0] ); - - // The renderer can return false to have no child row - if ( info === false ) { - row.child.hide(); - } - else { - row.child( info, 'child' ).show(); - } - } - } ); - } - else { - // No hidden columns - $( dt.table().node() ).removeClass('collapsed'); - - // Hide all existing child rows - dt.rows().eq(0).each( function (idx) { - dt.row( idx ).child.hide(); - } ); - } - }, - - - /** - * Find a breakpoint object from a name - * @param {string} name Breakpoint name to find - * @return {object} Breakpoint description object - */ - _find: function ( name ) - { - var breakpoints = this.c.breakpoints; - - for ( var i=0, ien=breakpoints.length ; i<ien ; i++ ) { - if ( breakpoints[i].name === name ) { - return breakpoints[i]; - } - } - }, - - - /** - * Alter the table display for a resized viewport. This involves first - * determining what breakpoint the window currently is in, getting the - * column visibilities to apply and then setting them. - * - * @private - */ - _resize: function () - { - var dt = this.s.dt; - var width = $(window).width(); - var breakpoints = this.c.breakpoints; - var breakpoint = breakpoints[0].name; - - // Determine what breakpoint we are currently at - for ( var i=breakpoints.length-1 ; i>=0 ; i-- ) { - if ( width <= breakpoints[i].width ) { - breakpoint = breakpoints[i].name; - break; - } - } - - // Show the columns for that break point - var columns = this._columnsVisiblity( breakpoint ); - - dt.columns().eq(0).each( function ( colIdx, i ) { - dt.column( colIdx ).visible( columns[i] ); - } ); - }, - - - /** - * Determine the width of each column in the table so the auto column hiding - * has that information to work with. This method is never going to be 100% - * perfect since column widths can change slightly per page, but without - * seriously compromising performance this is quite effective. - * - * @private - */ - _resizeAuto: function () - { - var dt = this.s.dt; - var columns = this.s.columns; - - // Are we allowed to do auto sizing? - if ( ! this.c.auto ) { - return; - } - - // Are there any columns that actually need auto-sizing, or do they all - // have classes defined - if ( $.inArray( true, $.map( columns, function (c) { return c.auto; } ) ) === -1 ) { - return; - } - - // Clone the table with the current data in it - var tableWidth = dt.table().node().offsetWidth; - var columnWidths = dt.columns; - var clonedTable = dt.table().node().cloneNode( false ); - var clonedHeader = $( dt.table().header().cloneNode( false ) ).appendTo( clonedTable ); - var clonedBody = $( dt.table().body().cloneNode( false ) ).appendTo( clonedTable ); - - // This is a bit slow, but we need to get a clone of each row that - // includes all columns. As such, try to do this as little as possible. - dt.rows( { page: 'current' } ).indexes().flatten().each( function ( idx ) { - var clone = dt.row( idx ).node().cloneNode( true ); - - if ( dt.columns( ':hidden' ).flatten().length ) { - $(clone).append( dt.cells( idx, ':hidden' ).nodes().to$().clone() ); - } - - $(clone).appendTo( clonedBody ); - } ); - - var cells = dt.columns().header().to$().clone( false ).wrapAll('tr').appendTo( clonedHeader ); - var inserted = $('<div/>') - .css( { - width: 1, - height: 1, - overflow: 'hidden' - } ) - .append( clonedTable ) - .insertBefore( dt.table().node() ); - - // The cloned header now contains the smallest that each column can be - dt.columns().eq(0).each( function ( idx ) { - columns[idx].minWidth = cells[ idx ].offsetWidth || 0; - } ); - - inserted.remove(); - } - }; - - - /** - * List of default breakpoints. Each item in the array is an object with two - * properties: - * - * * `name` - the breakpoint name. - * * `width` - the breakpoint width - * - * @name Responsive.breakpoints - * @static - */ - Responsive.breakpoints = [ - { name: 'desktop', width: Infinity }, - { name: 'tablet-l', width: 1024 }, - { name: 'tablet-p', width: 768 }, - { name: 'mobile-l', width: 480 }, - { name: 'mobile-p', width: 320 } - ]; - - - /** - * Responsive default settings for initialisation - * - * @namespace - * @name Responsive.defaults - * @static - */ - Responsive.defaults = { - /** - * List of breakpoints for the instance. Note that this means that each - * instance can have its own breakpoints. Additionally, the breakpoints - * cannot be changed once an instance has been creased. - * - * @type {Array} - * @default Takes the value of `Responsive.breakpoints` - */ - breakpoints: Responsive.breakpoints, - - /** - * Enable / disable auto hiding calculations. It can help to increase - * performance slightly if you disable this option, but all columns would - * need to have breakpoint classes assigned to them - * - * @type {Boolean} - * @default `true` - */ - auto: true, - - /** - * Details control. If given as a string value, the `type` property of the - * default object is set to that value, and the defaults used for the rest - * of the object - this is for ease of implementation. - * - * The object consists of the following properties: - * - * * `renderer` - function that is called for display of the child row data. - * The default function will show the data from the hidden columns - * * `target` - Used as the selector for what objects to attach the child - * open / close to - * * `type` - `false` to disable the details display, `inline` or `column` - * for the two control types - * - * @type {Object|string} - */ - details: { - renderer: function ( api, rowIdx ) { - var data = api.cells( rowIdx, ':hidden' ).eq(0).map( function ( cell ) { - var header = $( api.column( cell.column ).header() ); - var idx = api.cell( cell ).index(); - - if ( header.hasClass( 'control' ) || header.hasClass( 'never' ) ) { - return ''; - } - - // Use a non-public DT API method to render the data for display - // This needs to be updated when DT adds a suitable method for - // this type of data retrieval - var dtPrivate = api.settings()[0]; - var cellData = dtPrivate.oApi._fnGetCellData( - dtPrivate, idx.row, idx.column, 'display' - ); - - return '<li data-dtr-index="'+idx.column+'">'+ - '<span class="dtr-title">'+ - header.text()+':'+ - '</span> '+ - '<span class="dtr-data">'+ - cellData+ - '</span>'+ - '</li>'; - } ).toArray().join(''); - - return data ? - $('<ul data-dtr-index="'+rowIdx+'"/>').append( data ) : - false; - }, - - target: 0, - - type: 'inline' - } - }; - - - /* - * API - */ - var Api = $.fn.dataTable.Api; - -// Doesn't do anything - work around for a bug in DT... Not documented - Api.register( 'responsive()', function () { - return this; - } ); - - Api.register( 'responsive.recalc()', function () { - this.iterator( 'table', function ( ctx ) { - if ( ctx._responsive ) { - ctx._responsive._resizeAuto(); - ctx._responsive._resize(); - } - } ); - } ); - - Api.register( 'responsive.index()', function ( li ) { - li = $(li); - - return { - column: li.data('dtr-index'), - row: li.parent().data('dtr-index') - }; - } ); - - - /** - * Version information - * - * @name Responsive.version - * @static - */ - Responsive.version = '1.0.2'; - - - $.fn.dataTable.Responsive = Responsive; - $.fn.DataTable.Responsive = Responsive; - -// Attach a listener to the document which listens for DataTables initialisation -// events so we can automatically initialise - $(document).on( 'init.dt.dtr', function (e, settings, json) { - if ( $(settings.nTable).hasClass( 'responsive' ) || - $(settings.nTable).hasClass( 'dt-responsive' ) || - settings.oInit.responsive || - DataTable.defaults.responsive - ) { - var init = settings.oInit.responsive; - - if ( init !== false ) { - new Responsive( settings, $.isPlainObject( init ) ? init : {} ); - } - } - } ); - - return Responsive; - }; // /factory - - -// Define as an AMD module if possible - if ( typeof define === 'function' && define.amd ) { - define( ['jquery', 'datatables'], factory ); - } - else if ( typeof exports === 'object' ) { - // Node/CommonJS - factory( require('jquery'), require('datatables') ); - } - else if ( jQuery && !jQuery.fn.dataTable.Responsive ) { - // Otherwise simply initialise as normal, stopping multiple evaluation - factory( jQuery, jQuery.fn.dataTable ); - } - - -})(window, document); - diff --git a/assets/js/plugins/dataTables/dataTables.tableTools.min.js b/assets/js/plugins/dataTables/dataTables.tableTools.min.js deleted file mode 100644 index 146ccf84..00000000 --- a/assets/js/plugins/dataTables/dataTables.tableTools.min.js +++ /dev/null @@ -1,69 +0,0 @@ -/*! - TableTools 2.2.3 - 2009-2014 SpryMedia Ltd - datatables.net/license - - ZeroClipboard 1.0.4 - Author: Joseph Huckaby - MIT licensed -*/ -var TableTools; -(function(n,k,q){var p=function(m,p){var g={version:"1.0.4-TableTools2",clients:{},moviePath:"",nextId:1,$:function(a){"string"==typeof a&&(a=k.getElementById(a));a.addClass||(a.hide=function(){this.style.display="none"},a.show=function(){this.style.display=""},a.addClass=function(a){this.removeClass(a);this.className+=" "+a},a.removeClass=function(a){this.className=this.className.replace(RegExp("\\s*"+a+"\\s*")," ").replace(/^\s+/,"").replace(/\s+$/,"")},a.hasClass=function(a){return!!this.className.match(RegExp("\\s*"+a+ -"\\s*"))});return a},setMoviePath:function(a){this.moviePath=a},dispatch:function(a,b,c){(a=this.clients[a])&&a.receiveEvent(b,c)},register:function(a,b){this.clients[a]=b},getDOMObjectPosition:function(a){var b={left:0,top:0,width:a.width?a.width:a.offsetWidth,height:a.height?a.height:a.offsetHeight};""!==a.style.width&&(b.width=a.style.width.replace("px",""));""!==a.style.height&&(b.height=a.style.height.replace("px",""));for(;a;)b.left+=a.offsetLeft,b.top+=a.offsetTop,a=a.offsetParent;return b}, -Client:function(a){this.handlers={};this.id=g.nextId++;this.movieId="ZeroClipboard_TableToolsMovie_"+this.id;g.register(this.id,this);a&&this.glue(a)}};g.Client.prototype={id:0,ready:!1,movie:null,clipText:"",fileName:"",action:"copy",handCursorEnabled:!0,cssEffects:!0,handlers:null,sized:!1,glue:function(a,b){this.domElement=g.$(a);var c=99;this.domElement.style.zIndex&&(c=parseInt(this.domElement.style.zIndex,10)+1);var d=g.getDOMObjectPosition(this.domElement);this.div=k.createElement("div");var f= -this.div.style;f.position="absolute";f.left="0px";f.top="0px";f.width=d.width+"px";f.height=d.height+"px";f.zIndex=c;"undefined"!=typeof b&&""!==b&&(this.div.title=b);0!==d.width&&0!==d.height&&(this.sized=!0);this.domElement&&(this.domElement.appendChild(this.div),this.div.innerHTML=this.getHTML(d.width,d.height).replace(/&/g,"&amp;"))},positionElement:function(){var a=g.getDOMObjectPosition(this.domElement),b=this.div.style;b.position="absolute";b.width=a.width+"px";b.height=a.height+"px";0!==a.width&& -0!==a.height&&(this.sized=!0,b=this.div.childNodes[0],b.width=a.width,b.height=a.height)},getHTML:function(a,b){var c="",d="id="+this.id+"&width="+a+"&height="+b;if(navigator.userAgent.match(/MSIE/))var f=location.href.match(/^https/i)?"https://":"http://",c=c+('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="'+f+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="'+a+'" height="'+b+'" id="'+this.movieId+'" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="'+ -g.moviePath+'" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="'+d+'"/><param name="wmode" value="transparent"/></object>');else c+='<embed id="'+this.movieId+'" src="'+g.moviePath+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="'+a+'" height="'+b+'" name="'+this.movieId+'" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+ -d+'" wmode="transparent" />';return c},hide:function(){this.div&&(this.div.style.left="-2000px")},show:function(){this.reposition()},destroy:function(){if(this.domElement&&this.div){this.hide();this.div.innerHTML="";var a=k.getElementsByTagName("body")[0];try{a.removeChild(this.div)}catch(b){}this.div=this.domElement=null}},reposition:function(a){a&&((this.domElement=g.$(a))||this.hide());if(this.domElement&&this.div){var a=g.getDOMObjectPosition(this.domElement),b=this.div.style;b.left=""+a.left+ -"px";b.top=""+a.top+"px"}},clearText:function(){this.clipText="";this.ready&&this.movie.clearText()},appendText:function(a){this.clipText+=a;this.ready&&this.movie.appendText(a)},setText:function(a){this.clipText=a;this.ready&&this.movie.setText(a)},setCharSet:function(a){this.charSet=a;this.ready&&this.movie.setCharSet(a)},setBomInc:function(a){this.incBom=a;this.ready&&this.movie.setBomInc(a)},setFileName:function(a){this.fileName=a;this.ready&&this.movie.setFileName(a)},setAction:function(a){this.action= -a;this.ready&&this.movie.setAction(a)},addEventListener:function(a,b){a=a.toString().toLowerCase().replace(/^on/,"");this.handlers[a]||(this.handlers[a]=[]);this.handlers[a].push(b)},setHandCursor:function(a){this.handCursorEnabled=a;this.ready&&this.movie.setHandCursor(a)},setCSSEffects:function(a){this.cssEffects=!!a},receiveEvent:function(a,b){var c,a=a.toString().toLowerCase().replace(/^on/,"");switch(a){case "load":this.movie=k.getElementById(this.movieId);if(!this.movie){c=this;setTimeout(function(){c.receiveEvent("load", -null)},1);return}if(!this.ready&&navigator.userAgent.match(/Firefox/)&&navigator.userAgent.match(/Windows/)){c=this;setTimeout(function(){c.receiveEvent("load",null)},100);this.ready=!0;return}this.ready=!0;this.movie.clearText();this.movie.appendText(this.clipText);this.movie.setFileName(this.fileName);this.movie.setAction(this.action);this.movie.setCharSet(this.charSet);this.movie.setBomInc(this.incBom);this.movie.setHandCursor(this.handCursorEnabled);break;case "mouseover":this.domElement&&this.cssEffects&& -this.recoverActive&&this.domElement.addClass("active");break;case "mouseout":this.domElement&&this.cssEffects&&(this.recoverActive=!1,this.domElement.hasClass("active")&&(this.domElement.removeClass("active"),this.recoverActive=!0));break;case "mousedown":this.domElement&&this.cssEffects&&this.domElement.addClass("active");break;case "mouseup":this.domElement&&this.cssEffects&&(this.domElement.removeClass("active"),this.recoverActive=!1)}if(this.handlers[a])for(var d=0,f=this.handlers[a].length;d< -f;d++){var e=this.handlers[a][d];if("function"==typeof e)e(this,b);else if("object"==typeof e&&2==e.length)e[0][e[1]](this,b);else if("string"==typeof e)n[e](this,b)}}};n.ZeroClipboard_TableTools=g;var e=jQuery;TableTools=function(a,b){!this instanceof TableTools&&alert("Warning: TableTools must be initialised with the keyword 'new'");this.s={that:this,dt:e.fn.dataTable.Api?(new e.fn.dataTable.Api(a)).settings()[0]:a.fnSettings(),print:{saveStart:-1,saveLength:-1,saveScroll:-1,funcEnd:function(){}}, -buttonCounter:0,select:{type:"",selected:[],preRowSelect:null,postSelected:null,postDeselected:null,all:!1,selectedClass:""},custom:{},swfPath:"",buttonSet:[],master:!1,tags:{}};this.dom={container:null,table:null,print:{hidden:[],message:null},collection:{collection:null,background:null}};this.classes=e.extend(!0,{},TableTools.classes);this.s.dt.bJUI&&e.extend(!0,this.classes,TableTools.classes_themeroller);this.fnSettings=function(){return this.s};"undefined"==typeof b&&(b={});TableTools._aInstances.push(this); -this._fnConstruct(b);return this};TableTools.prototype={fnGetSelected:function(a){var b=[],c=this.s.dt.aoData,d=this.s.dt.aiDisplay,f;if(a){a=0;for(f=d.length;a<f;a++)c[d[a]]._DTTT_selected&&b.push(c[d[a]].nTr)}else{a=0;for(f=c.length;a<f;a++)c[a]._DTTT_selected&&b.push(c[a].nTr)}return b},fnGetSelectedData:function(){var a=[],b=this.s.dt.aoData,c,d;c=0;for(d=b.length;c<d;c++)b[c]._DTTT_selected&&a.push(this.s.dt.oInstance.fnGetData(c));return a},fnGetSelectedIndexes:function(a){var b=[],c=this.s.dt.aoData, -d=this.s.dt.aiDisplay,f;if(a){a=0;for(f=d.length;a<f;a++)c[d[a]]._DTTT_selected&&b.push(d[a])}else{a=0;for(f=c.length;a<f;a++)c[a]._DTTT_selected&&b.push(a)}return b},fnIsSelected:function(a){a=this.s.dt.oInstance.fnGetPosition(a);return!0===this.s.dt.aoData[a]._DTTT_selected?!0:!1},fnSelectAll:function(a){this._fnRowSelect(a?this.s.dt.aiDisplay:this.s.dt.aoData)},fnSelectNone:function(a){this._fnRowDeselect(this.fnGetSelectedIndexes(a))},fnSelect:function(a){"single"==this.s.select.type&&this.fnSelectNone(); -this._fnRowSelect(a)},fnDeselect:function(a){this._fnRowDeselect(a)},fnGetTitle:function(a){var b="";"undefined"!=typeof a.sTitle&&""!==a.sTitle?b=a.sTitle:(a=k.getElementsByTagName("title"),0<a.length&&(b=a[0].innerHTML));return 4>"¡".toString().length?b.replace(/[^a-zA-Z0-9_\u00A1-\uFFFF\.,\-_ !\(\)]/g,""):b.replace(/[^a-zA-Z0-9_\.,\-_ !\(\)]/g,"")},fnCalcColRatios:function(a){var b=this.s.dt.aoColumns,a=this._fnColumnTargets(a.mColumns),c=[],d=0,f=0,e,i;e=0;for(i=a.length;e<i;e++)a[e]&&(d=b[e].nTh.offsetWidth, -f+=d,c.push(d));e=0;for(i=c.length;e<i;e++)c[e]/=f;return c.join("\t")},fnGetTableData:function(a){if(this.s.dt)return this._fnGetDataTablesData(a)},fnSetText:function(a,b){this._fnFlashSetText(a,b)},fnResizeButtons:function(){for(var a in g.clients)if(a){var b=g.clients[a];"undefined"!=typeof b.domElement&&b.domElement.parentNode&&b.positionElement()}},fnResizeRequired:function(){for(var a in g.clients)if(a){var b=g.clients[a];if("undefined"!=typeof b.domElement&&b.domElement.parentNode==this.dom.container&& -!1===b.sized)return!0}return!1},fnPrint:function(a,b){b===q&&(b={});a===q||a?this._fnPrintStart(b):this._fnPrintEnd()},fnInfo:function(a,b){var c=e("<div/>").addClass(this.classes.print.info).html(a).appendTo("body");setTimeout(function(){c.fadeOut("normal",function(){c.remove()})},b)},fnContainer:function(){return this.dom.container},_fnConstruct:function(a){var b=this;this._fnCustomiseSettings(a);this.dom.container=k.createElement(this.s.tags.container);this.dom.container.className=this.classes.container; -"none"!=this.s.select.type&&this._fnRowSelectConfig();this._fnButtonDefinations(this.s.buttonSet,this.dom.container);this.s.dt.aoDestroyCallback.push({sName:"TableTools",fn:function(){e(b.s.dt.nTBody).off("click.DTTT_Select","tr");e(b.dom.container).empty();var a=e.inArray(b,TableTools._aInstances);-1!==a&&TableTools._aInstances.splice(a,1)}})},_fnCustomiseSettings:function(a){"undefined"==typeof this.s.dt._TableToolsInit&&(this.s.master=!0,this.s.dt._TableToolsInit=!0);this.dom.table=this.s.dt.nTable; -this.s.custom=e.extend({},TableTools.DEFAULTS,a);this.s.swfPath=this.s.custom.sSwfPath;"undefined"!=typeof g&&(g.moviePath=this.s.swfPath);this.s.select.type=this.s.custom.sRowSelect;this.s.select.preRowSelect=this.s.custom.fnPreRowSelect;this.s.select.postSelected=this.s.custom.fnRowSelected;this.s.select.postDeselected=this.s.custom.fnRowDeselected;this.s.custom.sSelectedClass&&(this.classes.select.row=this.s.custom.sSelectedClass);this.s.tags=this.s.custom.oTags;this.s.buttonSet=this.s.custom.aButtons}, -_fnButtonDefinations:function(a,b){for(var c,d=0,f=a.length;d<f;d++){if("string"==typeof a[d]){if("undefined"==typeof TableTools.BUTTONS[a[d]]){alert("TableTools: Warning - unknown button type: "+a[d]);continue}c=e.extend({},TableTools.BUTTONS[a[d]],!0)}else{if("undefined"==typeof TableTools.BUTTONS[a[d].sExtends]){alert("TableTools: Warning - unknown button type: "+a[d].sExtends);continue}c=e.extend({},TableTools.BUTTONS[a[d].sExtends],!0);c=e.extend(c,a[d],!0)}(c=this._fnCreateButton(c,e(b).hasClass(this.classes.collection.container)))&& -b.appendChild(c)}},_fnCreateButton:function(a,b){var c=this._fnButtonBase(a,b);if(a.sAction.match(/flash/)){if(!this._fnHasFlash())return!1;this._fnFlashConfig(c,a)}else"text"==a.sAction?this._fnTextConfig(c,a):"div"==a.sAction?this._fnTextConfig(c,a):"collection"==a.sAction&&(this._fnTextConfig(c,a),this._fnCollectionConfig(c,a));if(-1!==this.s.dt.iTabIndex)e(c).attr("tabindex",this.s.dt.iTabIndex).attr("aria-controls",this.s.dt.sTableId).on("keyup.DTTT",function(a){13===a.keyCode&&(a.stopPropagation(), -e(this).trigger("click"))}).on("mousedown.DTTT",function(b){a.sAction.match(/flash/)||b.preventDefault()});return c},_fnButtonBase:function(a,b){var c,d,f;b?(c=a.sTag&&"default"!==a.sTag?a.sTag:this.s.tags.collection.button,d=a.sLinerTag&&"default"!==a.sLinerTag?a.sLiner:this.s.tags.collection.liner,f=this.classes.collection.buttons.normal):(c=a.sTag&&"default"!==a.sTag?a.sTag:this.s.tags.button,d=a.sLinerTag&&"default"!==a.sLinerTag?a.sLiner:this.s.tags.liner,f=this.classes.buttons.normal);c=k.createElement(c); -d=k.createElement(d);var e=this._fnGetMasterSettings();c.className=f+" "+a.sButtonClass;c.setAttribute("id","ToolTables_"+this.s.dt.sInstance+"_"+e.buttonCounter);c.appendChild(d);d.innerHTML=a.sButtonText;e.buttonCounter++;return c},_fnGetMasterSettings:function(){if(this.s.master)return this.s;for(var a=TableTools._aInstances,b=0,c=a.length;b<c;b++)if(this.dom.table==a[b].s.dt.nTable)return a[b].s},_fnCollectionConfig:function(a,b){var c=k.createElement(this.s.tags.collection.container);c.style.display= -"none";c.className=this.classes.collection.container;b._collection=c;k.body.appendChild(c);this._fnButtonDefinations(b.aButtons,c)},_fnCollectionShow:function(a,b){var c=this,d=e(a).offset(),f=b._collection,j=d.left,d=d.top+e(a).outerHeight(),i=e(n).height(),h=e(k).height(),o=e(n).width(),g=e(k).width();f.style.position="absolute";f.style.left=j+"px";f.style.top=d+"px";f.style.display="block";e(f).css("opacity",0);var l=k.createElement("div");l.style.position="absolute";l.style.left="0px";l.style.top= -"0px";l.style.height=(i>h?i:h)+"px";l.style.width=(o>g?o:g)+"px";l.className=this.classes.collection.background;e(l).css("opacity",0);k.body.appendChild(l);k.body.appendChild(f);i=e(f).outerWidth();o=e(f).outerHeight();j+i>g&&(f.style.left=g-i+"px");d+o>h&&(f.style.top=d-o-e(a).outerHeight()+"px");this.dom.collection.collection=f;this.dom.collection.background=l;setTimeout(function(){e(f).animate({opacity:1},500);e(l).animate({opacity:0.25},500)},10);this.fnResizeButtons();e(l).click(function(){c._fnCollectionHide.call(c, -null,null)})},_fnCollectionHide:function(a,b){!(null!==b&&"collection"==b.sExtends)&&null!==this.dom.collection.collection&&(e(this.dom.collection.collection).animate({opacity:0},500,function(){this.style.display="none"}),e(this.dom.collection.background).animate({opacity:0},500,function(){this.parentNode.removeChild(this)}),this.dom.collection.collection=null,this.dom.collection.background=null)},_fnRowSelectConfig:function(){if(this.s.master){var a=this,b=this.s.dt;e(b.nTable).addClass(this.classes.select.table); -"os"===this.s.select.type&&(e(b.nTBody).on("mousedown.DTTT_Select","tr",function(a){if(a.shiftKey)e(b.nTBody).css("-moz-user-select","none").one("selectstart.DTTT_Select","tr",function(){return!1})}),e(b.nTBody).on("mouseup.DTTT_Select","tr",function(){e(b.nTBody).css("-moz-user-select","")}));e(b.nTBody).on("click.DTTT_Select",this.s.custom.sRowSelector,function(c){var d=this.nodeName.toLowerCase()==="tr"?this:e(this).parents("tr")[0],f=a.s.select,j=a.s.dt.oInstance.fnGetPosition(d);if(d.parentNode== -b.nTBody&&b.oInstance.fnGetData(d)!==null){if(f.type=="os")if(c.ctrlKey||c.metaKey)a.fnIsSelected(d)?a._fnRowDeselect(d,c):a._fnRowSelect(d,c);else if(c.shiftKey){var i=a.s.dt.aiDisplay.slice(),h=e.inArray(f.lastRow,i),o=e.inArray(j,i);if(a.fnGetSelected().length===0||h===-1)i.splice(e.inArray(j,i)+1,i.length);else{if(h>o)var g=o,o=h,h=g;i.splice(o+1,i.length);i.splice(0,h)}if(a.fnIsSelected(d)){i.splice(e.inArray(j,i),1);a._fnRowDeselect(i,c)}else a._fnRowSelect(i,c)}else if(a.fnIsSelected(d)&&a.fnGetSelected().length=== -1)a._fnRowDeselect(d,c);else{a.fnSelectNone();a._fnRowSelect(d,c)}else if(a.fnIsSelected(d))a._fnRowDeselect(d,c);else if(f.type=="single"){a.fnSelectNone();a._fnRowSelect(d,c)}else f.type=="multi"&&a._fnRowSelect(d,c);f.lastRow=j}});b.oApi._fnCallbackReg(b,"aoRowCreatedCallback",function(c,d,f){b.aoData[f]._DTTT_selected&&e(c).addClass(a.classes.select.row)},"TableTools-SelectAll")}},_fnRowSelect:function(a,b){var c=this._fnSelectData(a),d=[],f,j;f=0;for(j=c.length;f<j;f++)c[f].nTr&&d.push(c[f].nTr); -if(null===this.s.select.preRowSelect||this.s.select.preRowSelect.call(this,b,d,!0)){f=0;for(j=c.length;f<j;f++)c[f]._DTTT_selected=!0,c[f].nTr&&e(c[f].nTr).addClass(this.classes.select.row);null!==this.s.select.postSelected&&this.s.select.postSelected.call(this,d);TableTools._fnEventDispatch(this,"select",d,!0)}},_fnRowDeselect:function(a,b){var c=this._fnSelectData(a),d=[],f,j;f=0;for(j=c.length;f<j;f++)c[f].nTr&&d.push(c[f].nTr);if(null===this.s.select.preRowSelect||this.s.select.preRowSelect.call(this, -b,d,!1)){f=0;for(j=c.length;f<j;f++)c[f]._DTTT_selected=!1,c[f].nTr&&e(c[f].nTr).removeClass(this.classes.select.row);null!==this.s.select.postDeselected&&this.s.select.postDeselected.call(this,d);TableTools._fnEventDispatch(this,"select",d,!1)}},_fnSelectData:function(a){var b=[],c,d,f;if(a.nodeName)c=this.s.dt.oInstance.fnGetPosition(a),b.push(this.s.dt.aoData[c]);else if("undefined"!==typeof a.length){d=0;for(f=a.length;d<f;d++)a[d].nodeName?(c=this.s.dt.oInstance.fnGetPosition(a[d]),b.push(this.s.dt.aoData[c])): -"number"===typeof a[d]?b.push(this.s.dt.aoData[a[d]]):b.push(a[d])}else b.push(a);return b},_fnTextConfig:function(a,b){var c=this;null!==b.fnInit&&b.fnInit.call(this,a,b);""!==b.sToolTip&&(a.title=b.sToolTip);e(a).hover(function(){b.fnMouseover!==null&&b.fnMouseover.call(this,a,b,null)},function(){b.fnMouseout!==null&&b.fnMouseout.call(this,a,b,null)});null!==b.fnSelect&&TableTools._fnEventListen(this,"select",function(d){b.fnSelect.call(c,a,b,d)});e(a).click(function(d){b.fnClick!==null&&b.fnClick.call(c, -a,b,null,d);b.fnComplete!==null&&b.fnComplete.call(c,a,b,null,null);c._fnCollectionHide(a,b)})},_fnHasFlash:function(){try{if(new ActiveXObject("ShockwaveFlash.ShockwaveFlash"))return!0}catch(a){if(navigator.mimeTypes&&navigator.mimeTypes["application/x-shockwave-flash"]!==q&&navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin)return!0}return!1},_fnFlashConfig:function(a,b){var c=this,d=new g.Client;null!==b.fnInit&&b.fnInit.call(this,a,b);d.setHandCursor(!0);"flash_save"==b.sAction? -(d.setAction("save"),d.setCharSet("utf16le"==b.sCharSet?"UTF16LE":"UTF8"),d.setBomInc(b.bBomInc),d.setFileName(b.sFileName.replace("*",this.fnGetTitle(b)))):"flash_pdf"==b.sAction?(d.setAction("pdf"),d.setFileName(b.sFileName.replace("*",this.fnGetTitle(b)))):d.setAction("copy");d.addEventListener("mouseOver",function(){b.fnMouseover!==null&&b.fnMouseover.call(c,a,b,d)});d.addEventListener("mouseOut",function(){b.fnMouseout!==null&&b.fnMouseout.call(c,a,b,d)});d.addEventListener("mouseDown",function(){b.fnClick!== -null&&b.fnClick.call(c,a,b,d)});d.addEventListener("complete",function(f,e){b.fnComplete!==null&&b.fnComplete.call(c,a,b,d,e);c._fnCollectionHide(a,b)});this._fnFlashGlue(d,a,b.sToolTip)},_fnFlashGlue:function(a,b,c){var d=this,f=b.getAttribute("id");k.getElementById(f)?a.glue(b,c):setTimeout(function(){d._fnFlashGlue(a,b,c)},100)},_fnFlashSetText:function(a,b){var c=this._fnChunkData(b,8192);a.clearText();for(var d=0,f=c.length;d<f;d++)a.appendText(c[d])},_fnColumnTargets:function(a){var b=[],c= -this.s.dt,d,f=c.aoColumns;d=f.length;if("function"==typeof a){a=a.call(this,c);for(c=0;c<d;c++)b.push(-1!==e.inArray(c,a)?!0:!1)}else if("object"==typeof a){for(c=0;c<d;c++)b.push(!1);c=0;for(d=a.length;c<d;c++)b[a[c]]=!0}else if("visible"==a)for(c=0;c<d;c++)b.push(f[c].bVisible?!0:!1);else if("hidden"==a)for(c=0;c<d;c++)b.push(f[c].bVisible?!1:!0);else if("sortable"==a)for(c=0;c<d;c++)b.push(f[c].bSortable?!0:!1);else for(c=0;c<d;c++)b.push(!0);return b},_fnNewline:function(a){return"auto"==a.sNewLine? -navigator.userAgent.match(/Windows/)?"\r\n":"\n":a.sNewLine},_fnGetDataTablesData:function(a){var b,c,d,f,j,i=[],h="",g=this.s.dt,k,l=RegExp(a.sFieldBoundary,"g"),n=this._fnColumnTargets(a.mColumns);d="undefined"!=typeof a.bSelectedOnly?a.bSelectedOnly:!1;if(a.bHeader){j=[];b=0;for(c=g.aoColumns.length;b<c;b++)n[b]&&(h=g.aoColumns[b].sTitle.replace(/\n/g," ").replace(/<.*?>/g,"").replace(/^\s+|\s+$/g,""),h=this._fnHtmlDecode(h),j.push(this._fnBoundData(h,a.sFieldBoundary,l)));i.push(j.join(a.sFieldSeperator))}d= -!0;var m;f=this.fnGetSelectedIndexes();m=(d="none"!==this.s.select.type&&d&&0!==f.length)?f:p.Api?(new p.Api(g)).rows(a.oSelectorOpts).indexes().flatten().toArray():g.oInstance.$("tr",a.oSelectorOpts).map(function(a,b){return g.oInstance.fnGetPosition(b)}).get();d=0;for(f=m.length;d<f;d++){k=g.aoData[m[d]].nTr;j=[];b=0;for(c=g.aoColumns.length;b<c;b++)n[b]&&(h=g.oApi._fnGetCellData(g,m[d],b,"display"),a.fnCellRender?h=a.fnCellRender(h,b,k,m[d])+"":"string"==typeof h?(h=h.replace(/\n/g," "),h=h.replace(/<img.*?\s+alt\s*=\s*(?:"([^"]+)"|'([^']+)'|([^\s>]+)).*?>/gi, -"$1$2$3"),h=h.replace(/<.*?>/g,"")):h+="",h=h.replace(/^\s+/,"").replace(/\s+$/,""),h=this._fnHtmlDecode(h),j.push(this._fnBoundData(h,a.sFieldBoundary,l)));i.push(j.join(a.sFieldSeperator));a.bOpenRows&&(b=e.grep(g.aoOpenRows,function(a){return a.nParent===k}),1===b.length&&(h=this._fnBoundData(e("td",b[0].nTr).html(),a.sFieldBoundary,l),i.push(h)))}if(a.bFooter&&null!==g.nTFoot){j=[];b=0;for(c=g.aoColumns.length;b<c;b++)n[b]&&null!==g.aoColumns[b].nTf&&(h=g.aoColumns[b].nTf.innerHTML.replace(/\n/g, -" ").replace(/<.*?>/g,""),h=this._fnHtmlDecode(h),j.push(this._fnBoundData(h,a.sFieldBoundary,l)));i.push(j.join(a.sFieldSeperator))}return i.join(this._fnNewline(a))},_fnBoundData:function(a,b,c){return""===b?a:b+a.replace(c,b+b)+b},_fnChunkData:function(a,b){for(var c=[],d=a.length,f=0;f<d;f+=b)f+b<d?c.push(a.substring(f,f+b)):c.push(a.substring(f,d));return c},_fnHtmlDecode:function(a){if(-1===a.indexOf("&"))return a;var b=k.createElement("div");return a.replace(/&([^\s]*?);/g,function(a,d){if("#"=== -a.substr(1,1))return String.fromCharCode(Number(d.substr(1)));b.innerHTML=a;return b.childNodes[0].nodeValue})},_fnPrintStart:function(a){var b=this,c=this.s.dt;this._fnPrintHideNodes(c.nTable);this.s.print.saveStart=c._iDisplayStart;this.s.print.saveLength=c._iDisplayLength;a.bShowAll&&(c._iDisplayStart=0,c._iDisplayLength=-1,c.oApi._fnCalculateEnd&&c.oApi._fnCalculateEnd(c),c.oApi._fnDraw(c));if(""!==c.oScroll.sX||""!==c.oScroll.sY)this._fnPrintScrollStart(c),e(this.s.dt.nTable).bind("draw.DTTT_Print", -function(){b._fnPrintScrollStart(c)});var d=c.aanFeatures,f;for(f in d)if("i"!=f&&"t"!=f&&1==f.length)for(var g=0,i=d[f].length;g<i;g++)this.dom.print.hidden.push({node:d[f][g],display:"block"}),d[f][g].style.display="none";e(k.body).addClass(this.classes.print.body);""!==a.sInfo&&this.fnInfo(a.sInfo,3E3);a.sMessage&&e("<div/>").addClass(this.classes.print.message).html(a.sMessage).prependTo("body");this.s.print.saveScroll=e(n).scrollTop();n.scrollTo(0,0);e(k).bind("keydown.DTTT",function(a){if(a.keyCode== -27){a.preventDefault();b._fnPrintEnd.call(b,a)}})},_fnPrintEnd:function(){var a=this.s.dt,b=this.s.print;this._fnPrintShowNodes();if(""!==a.oScroll.sX||""!==a.oScroll.sY)e(this.s.dt.nTable).unbind("draw.DTTT_Print"),this._fnPrintScrollEnd();n.scrollTo(0,b.saveScroll);e("div."+this.classes.print.message).remove();e(k.body).removeClass("DTTT_Print");a._iDisplayStart=b.saveStart;a._iDisplayLength=b.saveLength;a.oApi._fnCalculateEnd&&a.oApi._fnCalculateEnd(a);a.oApi._fnDraw(a);e(k).unbind("keydown.DTTT")}, -_fnPrintScrollStart:function(){var a=this.s.dt;a.nScrollHead.getElementsByTagName("div")[0].getElementsByTagName("table");var b=a.nTable.parentNode,c;c=a.nTable.getElementsByTagName("thead");0<c.length&&a.nTable.removeChild(c[0]);null!==a.nTFoot&&(c=a.nTable.getElementsByTagName("tfoot"),0<c.length&&a.nTable.removeChild(c[0]));c=a.nTHead.cloneNode(!0);a.nTable.insertBefore(c,a.nTable.childNodes[0]);null!==a.nTFoot&&(c=a.nTFoot.cloneNode(!0),a.nTable.insertBefore(c,a.nTable.childNodes[1]));""!==a.oScroll.sX&& -(a.nTable.style.width=e(a.nTable).outerWidth()+"px",b.style.width=e(a.nTable).outerWidth()+"px",b.style.overflow="visible");""!==a.oScroll.sY&&(b.style.height=e(a.nTable).outerHeight()+"px",b.style.overflow="visible")},_fnPrintScrollEnd:function(){var a=this.s.dt,b=a.nTable.parentNode;""!==a.oScroll.sX&&(b.style.width=a.oApi._fnStringToCss(a.oScroll.sX),b.style.overflow="auto");""!==a.oScroll.sY&&(b.style.height=a.oApi._fnStringToCss(a.oScroll.sY),b.style.overflow="auto")},_fnPrintShowNodes:function(){for(var a= -this.dom.print.hidden,b=0,c=a.length;b<c;b++)a[b].node.style.display=a[b].display;a.splice(0,a.length)},_fnPrintHideNodes:function(a){for(var b=this.dom.print.hidden,c=a.parentNode,d=c.childNodes,f=0,g=d.length;f<g;f++)if(d[f]!=a&&1==d[f].nodeType){var i=e(d[f]).css("display");"none"!=i&&(b.push({node:d[f],display:i}),d[f].style.display="none")}"BODY"!=c.nodeName.toUpperCase()&&this._fnPrintHideNodes(c)}};TableTools._aInstances=[];TableTools._aListeners=[];TableTools.fnGetMasters=function(){for(var a= -[],b=0,c=TableTools._aInstances.length;b<c;b++)TableTools._aInstances[b].s.master&&a.push(TableTools._aInstances[b]);return a};TableTools.fnGetInstance=function(a){"object"!=typeof a&&(a=k.getElementById(a));for(var b=0,c=TableTools._aInstances.length;b<c;b++)if(TableTools._aInstances[b].s.master&&TableTools._aInstances[b].dom.table==a)return TableTools._aInstances[b];return null};TableTools._fnEventListen=function(a,b,c){TableTools._aListeners.push({that:a,type:b,fn:c})};TableTools._fnEventDispatch= -function(a,b,c,d){for(var f=TableTools._aListeners,e=0,g=f.length;e<g;e++)a.dom.table==f[e].that.dom.table&&f[e].type==b&&f[e].fn(c,d)};TableTools.buttonBase={sAction:"text",sTag:"default",sLinerTag:"default",sButtonClass:"DTTT_button_text",sButtonText:"Button text",sTitle:"",sToolTip:"",sCharSet:"utf8",bBomInc:!1,sFileName:"*.csv",sFieldBoundary:"",sFieldSeperator:"\t",sNewLine:"auto",mColumns:"all",bHeader:!0,bFooter:!0,bOpenRows:!1,bSelectedOnly:!1,oSelectorOpts:q,fnMouseover:null,fnMouseout:null, -fnClick:null,fnSelect:null,fnComplete:null,fnInit:null,fnCellRender:null};TableTools.BUTTONS={csv:e.extend({},TableTools.buttonBase,{sAction:"flash_save",sButtonClass:"DTTT_button_csv",sButtonText:"CSV",sFieldBoundary:'"',sFieldSeperator:",",fnClick:function(a,b,c){this.fnSetText(c,this.fnGetTableData(b))}}),xls:e.extend({},TableTools.buttonBase,{sAction:"flash_save",sCharSet:"utf16le",bBomInc:!0,sButtonClass:"DTTT_button_xls",sButtonText:"Excel",fnClick:function(a,b,c){this.fnSetText(c,this.fnGetTableData(b))}}), -copy:e.extend({},TableTools.buttonBase,{sAction:"flash_copy",sButtonClass:"DTTT_button_copy",sButtonText:"Copy",fnClick:function(a,b,c){this.fnSetText(c,this.fnGetTableData(b))},fnComplete:function(a,b,c,d){a=d.split("\n").length;b.bHeader&&a--;null!==this.s.dt.nTFoot&&b.bFooter&&a--;this.fnInfo("<h6>Table copied</h6><p>Copied "+a+" row"+(1==a?"":"s")+" to the clipboard.</p>",1500)}}),pdf:e.extend({},TableTools.buttonBase,{sAction:"flash_pdf",sNewLine:"\n",sFileName:"*.pdf",sButtonClass:"DTTT_button_pdf", -sButtonText:"PDF",sPdfOrientation:"portrait",sPdfSize:"A4",sPdfMessage:"",fnClick:function(a,b,c){this.fnSetText(c,"title:"+this.fnGetTitle(b)+"\nmessage:"+b.sPdfMessage+"\ncolWidth:"+this.fnCalcColRatios(b)+"\norientation:"+b.sPdfOrientation+"\nsize:"+b.sPdfSize+"\n--/TableToolsOpts--\n"+this.fnGetTableData(b))}}),print:e.extend({},TableTools.buttonBase,{sInfo:"<h6>Print view</h6><p>Please use your browser's print function to print this table. Press escape when finished.</p>",sMessage:null,bShowAll:!0, -sToolTip:"View print view",sButtonClass:"DTTT_button_print",sButtonText:"Print",fnClick:function(a,b){this.fnPrint(!0,b)}}),text:e.extend({},TableTools.buttonBase),select:e.extend({},TableTools.buttonBase,{sButtonText:"Select button",fnSelect:function(a){0!==this.fnGetSelected().length?e(a).removeClass(this.classes.buttons.disabled):e(a).addClass(this.classes.buttons.disabled)},fnInit:function(a){e(a).addClass(this.classes.buttons.disabled)}}),select_single:e.extend({},TableTools.buttonBase,{sButtonText:"Select button", -fnSelect:function(a){1==this.fnGetSelected().length?e(a).removeClass(this.classes.buttons.disabled):e(a).addClass(this.classes.buttons.disabled)},fnInit:function(a){e(a).addClass(this.classes.buttons.disabled)}}),select_all:e.extend({},TableTools.buttonBase,{sButtonText:"Select all",fnClick:function(){this.fnSelectAll()},fnSelect:function(a){this.fnGetSelected().length==this.s.dt.fnRecordsDisplay()?e(a).addClass(this.classes.buttons.disabled):e(a).removeClass(this.classes.buttons.disabled)}}),select_none:e.extend({}, -TableTools.buttonBase,{sButtonText:"Deselect all",fnClick:function(){this.fnSelectNone()},fnSelect:function(a){0!==this.fnGetSelected().length?e(a).removeClass(this.classes.buttons.disabled):e(a).addClass(this.classes.buttons.disabled)},fnInit:function(a){e(a).addClass(this.classes.buttons.disabled)}}),ajax:e.extend({},TableTools.buttonBase,{sAjaxUrl:"/xhr.php",sButtonText:"Ajax button",fnClick:function(a,b){var c=this.fnGetTableData(b);e.ajax({url:b.sAjaxUrl,data:[{name:"tableData",value:c}],success:b.fnAjaxComplete, -dataType:"json",type:"POST",cache:!1,error:function(){alert("Error detected when sending table data to server")}})},fnAjaxComplete:function(){alert("Ajax complete")}}),div:e.extend({},TableTools.buttonBase,{sAction:"div",sTag:"div",sButtonClass:"DTTT_nonbutton",sButtonText:"Text button"}),collection:e.extend({},TableTools.buttonBase,{sAction:"collection",sButtonClass:"DTTT_button_collection",sButtonText:"Collection",fnClick:function(a,b){this._fnCollectionShow(a,b)}})};TableTools.buttons=TableTools.BUTTONS; -TableTools.classes={container:"DTTT_container",buttons:{normal:"DTTT_button",disabled:"DTTT_disabled"},collection:{container:"DTTT_collection",background:"DTTT_collection_background",buttons:{normal:"DTTT_button",disabled:"DTTT_disabled"}},select:{table:"DTTT_selectable",row:"DTTT_selected selected"},print:{body:"DTTT_Print",info:"DTTT_print_info",message:"DTTT_PrintMessage"}};TableTools.classes_themeroller={container:"DTTT_container ui-buttonset ui-buttonset-multi",buttons:{normal:"DTTT_button ui-button ui-state-default"}, -collection:{container:"DTTT_collection ui-buttonset ui-buttonset-multi"}};TableTools.DEFAULTS={sSwfPath:"../swf/copy_csv_xls_pdf.swf",sRowSelect:"none",sRowSelector:"tr",sSelectedClass:null,fnPreRowSelect:null,fnRowSelected:null,fnRowDeselected:null,aButtons:["copy","csv","xls","pdf","print"],oTags:{container:"div",button:"a",liner:"span",collection:{container:"div",button:"a",liner:"span"}}};TableTools.defaults=TableTools.DEFAULTS;TableTools.prototype.CLASS="TableTools";TableTools.version="2.2.3"; -e.fn.dataTable.Api&&e.fn.dataTable.Api.register("tabletools()",function(){var a=null;0<this.context.length&&(a=TableTools.fnGetInstance(this.context[0].nTable));return a});"function"==typeof e.fn.dataTable&&"function"==typeof e.fn.dataTableExt.fnVersionCheck&&e.fn.dataTableExt.fnVersionCheck("1.9.0")?e.fn.dataTableExt.aoFeatures.push({fnInit:function(a){var b=a.oInit;return(new TableTools(a.oInstance,b?b.tableTools||b.oTableTools||{}:{})).dom.container},cFeature:"T",sFeature:"TableTools"}):alert("Warning: TableTools requires DataTables 1.9.0 or newer - www.datatables.net/download"); -e.fn.DataTable.TableTools=TableTools;"function"==typeof m.fn.dataTable&&"function"==typeof m.fn.dataTableExt.fnVersionCheck&&m.fn.dataTableExt.fnVersionCheck("1.9.0")?m.fn.dataTableExt.aoFeatures.push({fnInit:function(a){a=new TableTools(a.oInstance,"undefined"!=typeof a.oInit.oTableTools?a.oInit.oTableTools:{});TableTools._aInstances.push(a);return a.dom.container},cFeature:"T",sFeature:"TableTools"}):alert("Warning: TableTools 2 requires DataTables 1.9.0 or newer - www.datatables.net/download"); -m.fn.dataTable.TableTools=TableTools;return m.fn.DataTable.TableTools=TableTools};"function"===typeof define&&define.amd?define(["jquery","datatables"],p):"object"===typeof exports?p(require("jquery"),require("datatables")):jQuery&&!jQuery.fn.dataTable.TableTools&&p(jQuery,jQuery.fn.dataTable)})(window,document); diff --git a/assets/js/plugins/dataTables/jquery.dataTables.js b/assets/js/plugins/dataTables/jquery.dataTables.js deleted file mode 100644 index c39ae8cc..00000000 --- a/assets/js/plugins/dataTables/jquery.dataTables.js +++ /dev/null @@ -1,14840 +0,0 @@ -/*! DataTables 1.10.4 - * ©2008-2014 SpryMedia Ltd - datatables.net/license - */ - -/** - * @summary DataTables - * @description Paginate, search and order HTML tables - * @version 1.10.4 - * @file jquery.dataTables.js - * @author SpryMedia Ltd (www.sprymedia.co.uk) - * @contact www.sprymedia.co.uk/contact - * @copyright Copyright 2008-2014 SpryMedia Ltd. - * - * This source file is free software, available under the following license: - * MIT license - http://datatables.net/license - * - * This source file is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. - * - * For details please refer to: http://www.datatables.net - */ - -/*jslint evil: true, undef: true, browser: true */ -/*globals $,require,jQuery,define,_selector_run,_selector_opts,_selector_first,_selector_row_indexes,_ext,_Api,_api_register,_api_registerPlural,_re_new_lines,_re_html,_re_formatted_numeric,_re_escape_regex,_empty,_intVal,_numToDecimal,_isNumber,_isHtml,_htmlNumeric,_pluck,_pluck_order,_range,_stripHtml,_unique,_fnBuildAjax,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnAjaxDataSrc,_fnAddColumn,_fnColumnOptions,_fnAdjustColumnSizing,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnVisbleColumns,_fnGetColumns,_fnColumnTypes,_fnApplyColumnDefs,_fnHungarianMap,_fnCamelToHungarian,_fnLanguageCompat,_fnBrowserDetect,_fnAddData,_fnAddTr,_fnNodeToDataIndex,_fnNodeToColumnIndex,_fnGetCellData,_fnSetCellData,_fnSplitObjNotation,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnGetDataMaster,_fnClearTable,_fnDeleteIndex,_fnInvalidate,_fnGetRowElements,_fnCreateTr,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAddOptionsHtml,_fnDetectHeader,_fnGetUniqueThs,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnFilterCreateSearch,_fnEscapeRegex,_fnFilterData,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnInfoMacros,_fnInitialise,_fnInitComplete,_fnLengthChange,_fnFeatureHtmlLength,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnFeatureHtmlTable,_fnScrollDraw,_fnApplyToChildren,_fnCalculateColumnWidths,_fnThrottle,_fnConvertToWidth,_fnScrollingWidthAdjust,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnScrollBarWidth,_fnSortFlatten,_fnSort,_fnSortAria,_fnSortListener,_fnSortAttachListener,_fnSortingClasses,_fnSortData,_fnSaveState,_fnLoadState,_fnSettingsFromNode,_fnLog,_fnMap,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnLengthOverflow,_fnRenderer,_fnDataSource,_fnRowAttributes*/ - -(/** @lends <global> */function( window, document, undefined ) { - -(function( factory ) { - "use strict"; - - if ( typeof define === 'function' && define.amd ) { - // Define as an AMD module if possible - define( 'datatables', ['jquery'], factory ); - } - else if ( typeof exports === 'object' ) { - // Node/CommonJS - factory( require( 'jquery' ) ); - } - else if ( jQuery && !jQuery.fn.dataTable ) { - // Define using browser globals otherwise - // Prevent multiple instantiations if the script is loaded twice - factory( jQuery ); - } -} -(/** @lends <global> */function( $ ) { - "use strict"; - - /** - * DataTables is a plug-in for the jQuery Javascript library. It is a highly - * flexible tool, based upon the foundations of progressive enhancement, - * which will add advanced interaction controls to any HTML table. For a - * full list of features please refer to - * [DataTables.net](href="http://datatables.net). - * - * Note that the `DataTable` object is not a global variable but is aliased - * to `jQuery.fn.DataTable` and `jQuery.fn.dataTable` through which it may - * be accessed. - * - * @class - * @param {object} [init={}] Configuration object for DataTables. Options - * are defined by {@link DataTable.defaults} - * @requires jQuery 1.7+ - * - * @example - * // Basic initialisation - * $(document).ready( function { - * $('#example').dataTable(); - * } ); - * - * @example - * // Initialisation with configuration options - in this case, disable - * // pagination and sorting. - * $(document).ready( function { - * $('#example').dataTable( { - * "paginate": false, - * "sort": false - * } ); - * } ); - */ - var DataTable; - - - /* - * It is useful to have variables which are scoped locally so only the - * DataTables functions can access them and they don't leak into global space. - * At the same time these functions are often useful over multiple files in the - * core and API, so we list, or at least document, all variables which are used - * by DataTables as private variables here. This also ensures that there is no - * clashing of variable names and that they can easily referenced for reuse. - */ - - - // Defined else where - // _selector_run - // _selector_opts - // _selector_first - // _selector_row_indexes - - var _ext; // DataTable.ext - var _Api; // DataTable.Api - var _api_register; // DataTable.Api.register - var _api_registerPlural; // DataTable.Api.registerPlural - - var _re_dic = {}; - var _re_new_lines = /[\r\n]/g; - var _re_html = /<.*?>/g; - var _re_date_start = /^[\w\+\-]/; - var _re_date_end = /[\w\+\-]$/; - - // Escape regular expression special characters - var _re_escape_regex = new RegExp( '(\\' + [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\', '$', '^', '-' ].join('|\\') + ')', 'g' ); - - // U+2009 is thin space and U+202F is narrow no-break space, both used in many - // standards as thousands separators - var _re_formatted_numeric = /[',$£€¥%\u2009\u202F]/g; - - - var _empty = function ( d ) { - return !d || d === true || d === '-' ? true : false; - }; - - - var _intVal = function ( s ) { - var integer = parseInt( s, 10 ); - return !isNaN(integer) && isFinite(s) ? integer : null; - }; - - // Convert from a formatted number with characters other than `.` as the - // decimal place, to a Javascript number - var _numToDecimal = function ( num, decimalPoint ) { - // Cache created regular expressions for speed as this function is called often - if ( ! _re_dic[ decimalPoint ] ) { - _re_dic[ decimalPoint ] = new RegExp( _fnEscapeRegex( decimalPoint ), 'g' ); - } - return typeof num === 'string' && decimalPoint !== '.' ? - num.replace( /\./g, '' ).replace( _re_dic[ decimalPoint ], '.' ) : - num; - }; - - - var _isNumber = function ( d, decimalPoint, formatted ) { - var strType = typeof d === 'string'; - - if ( decimalPoint && strType ) { - d = _numToDecimal( d, decimalPoint ); - } - - if ( formatted && strType ) { - d = d.replace( _re_formatted_numeric, '' ); - } - - return _empty( d ) || (!isNaN( parseFloat(d) ) && isFinite( d )); - }; - - - // A string without HTML in it can be considered to be HTML still - var _isHtml = function ( d ) { - return _empty( d ) || typeof d === 'string'; - }; - - - var _htmlNumeric = function ( d, decimalPoint, formatted ) { - if ( _empty( d ) ) { - return true; - } - - var html = _isHtml( d ); - return ! html ? - null : - _isNumber( _stripHtml( d ), decimalPoint, formatted ) ? - true : - null; - }; - - - var _pluck = function ( a, prop, prop2 ) { - var out = []; - var i=0, ien=a.length; - - // Could have the test in the loop for slightly smaller code, but speed - // is essential here - if ( prop2 !== undefined ) { - for ( ; i<ien ; i++ ) { - if ( a[i] && a[i][ prop ] ) { - out.push( a[i][ prop ][ prop2 ] ); - } - } - } - else { - for ( ; i<ien ; i++ ) { - if ( a[i] ) { - out.push( a[i][ prop ] ); - } - } - } - - return out; - }; - - - // Basically the same as _pluck, but rather than looping over `a` we use `order` - // as the indexes to pick from `a` - var _pluck_order = function ( a, order, prop, prop2 ) - { - var out = []; - var i=0, ien=order.length; - - // Could have the test in the loop for slightly smaller code, but speed - // is essential here - if ( prop2 !== undefined ) { - for ( ; i<ien ; i++ ) { - if ( a[ order[i] ][ prop ] ) { - out.push( a[ order[i] ][ prop ][ prop2 ] ); - } - } - } - else { - for ( ; i<ien ; i++ ) { - out.push( a[ order[i] ][ prop ] ); - } - } - - return out; - }; - - - var _range = function ( len, start ) - { - var out = []; - var end; - - if ( start === undefined ) { - start = 0; - end = len; - } - else { - end = start; - start = len; - } - - for ( var i=start ; i<end ; i++ ) { - out.push( i ); - } - - return out; - }; - - - var _removeEmpty = function ( a ) - { - var out = []; - - for ( var i=0, ien=a.length ; i<ien ; i++ ) { - if ( a[i] ) { // careful - will remove all falsy values! - out.push( a[i] ); - } - } - - return out; - }; - - - var _stripHtml = function ( d ) { - return d.replace( _re_html, '' ); - }; - - - /** - * Find the unique elements in a source array. - * - * @param {array} src Source array - * @return {array} Array of unique items - * @ignore - */ - var _unique = function ( src ) - { - // A faster unique method is to use object keys to identify used values, - // but this doesn't work with arrays or objects, which we must also - // consider. See jsperf.com/compare-array-unique-versions/4 for more - // information. - var - out = [], - val, - i, ien=src.length, - j, k=0; - - again: for ( i=0 ; i<ien ; i++ ) { - val = src[i]; - - for ( j=0 ; j<k ; j++ ) { - if ( out[j] === val ) { - continue again; - } - } - - out.push( val ); - k++; - } - - return out; - }; - - - - /** - * Create a mapping object that allows camel case parameters to be looked up - * for their Hungarian counterparts. The mapping is stored in a private - * parameter called `_hungarianMap` which can be accessed on the source object. - * @param {object} o - * @memberof DataTable#oApi - */ - function _fnHungarianMap ( o ) - { - var - hungarian = 'a aa ai ao as b fn i m o s ', - match, - newKey, - map = {}; - - $.each( o, function (key, val) { - match = key.match(/^([^A-Z]+?)([A-Z])/); - - if ( match && hungarian.indexOf(match[1]+' ') !== -1 ) - { - newKey = key.replace( match[0], match[2].toLowerCase() ); - map[ newKey ] = key; - - if ( match[1] === 'o' ) - { - _fnHungarianMap( o[key] ); - } - } - } ); - - o._hungarianMap = map; - } - - - /** - * Convert from camel case parameters to Hungarian, based on a Hungarian map - * created by _fnHungarianMap. - * @param {object} src The model object which holds all parameters that can be - * mapped. - * @param {object} user The object to convert from camel case to Hungarian. - * @param {boolean} force When set to `true`, properties which already have a - * Hungarian value in the `user` object will be overwritten. Otherwise they - * won't be. - * @memberof DataTable#oApi - */ - function _fnCamelToHungarian ( src, user, force ) - { - if ( ! src._hungarianMap ) { - _fnHungarianMap( src ); - } - - var hungarianKey; - - $.each( user, function (key, val) { - hungarianKey = src._hungarianMap[ key ]; - - if ( hungarianKey !== undefined && (force || user[hungarianKey] === undefined) ) - { - // For objects, we need to buzz down into the object to copy parameters - if ( hungarianKey.charAt(0) === 'o' ) - { - // Copy the camelCase options over to the hungarian - if ( ! user[ hungarianKey ] ) { - user[ hungarianKey ] = {}; - } - $.extend( true, user[hungarianKey], user[key] ); - - _fnCamelToHungarian( src[hungarianKey], user[hungarianKey], force ); - } - else { - user[hungarianKey] = user[ key ]; - } - } - } ); - } - - - /** - * Language compatibility - when certain options are given, and others aren't, we - * need to duplicate the values over, in order to provide backwards compatibility - * with older language files. - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnLanguageCompat( lang ) - { - var defaults = DataTable.defaults.oLanguage; - var zeroRecords = lang.sZeroRecords; - - /* Backwards compatibility - if there is no sEmptyTable given, then use the same as - * sZeroRecords - assuming that is given. - */ - if ( ! lang.sEmptyTable && zeroRecords && - defaults.sEmptyTable === "No data available in table" ) - { - _fnMap( lang, lang, 'sZeroRecords', 'sEmptyTable' ); - } - - /* Likewise with loading records */ - if ( ! lang.sLoadingRecords && zeroRecords && - defaults.sLoadingRecords === "Loading..." ) - { - _fnMap( lang, lang, 'sZeroRecords', 'sLoadingRecords' ); - } - - // Old parameter name of the thousands separator mapped onto the new - if ( lang.sInfoThousands ) { - lang.sThousands = lang.sInfoThousands; - } - - var decimal = lang.sDecimal; - if ( decimal ) { - _addNumericSort( decimal ); - } - } - - - /** - * Map one parameter onto another - * @param {object} o Object to map - * @param {*} knew The new parameter name - * @param {*} old The old parameter name - */ - var _fnCompatMap = function ( o, knew, old ) { - if ( o[ knew ] !== undefined ) { - o[ old ] = o[ knew ]; - } - }; - - - /** - * Provide backwards compatibility for the main DT options. Note that the new - * options are mapped onto the old parameters, so this is an external interface - * change only. - * @param {object} init Object to map - */ - function _fnCompatOpts ( init ) - { - _fnCompatMap( init, 'ordering', 'bSort' ); - _fnCompatMap( init, 'orderMulti', 'bSortMulti' ); - _fnCompatMap( init, 'orderClasses', 'bSortClasses' ); - _fnCompatMap( init, 'orderCellsTop', 'bSortCellsTop' ); - _fnCompatMap( init, 'order', 'aaSorting' ); - _fnCompatMap( init, 'orderFixed', 'aaSortingFixed' ); - _fnCompatMap( init, 'paging', 'bPaginate' ); - _fnCompatMap( init, 'pagingType', 'sPaginationType' ); - _fnCompatMap( init, 'pageLength', 'iDisplayLength' ); - _fnCompatMap( init, 'searching', 'bFilter' ); - - // Column search objects are in an array, so it needs to be converted - // element by element - var searchCols = init.aoSearchCols; - - if ( searchCols ) { - for ( var i=0, ien=searchCols.length ; i<ien ; i++ ) { - if ( searchCols[i] ) { - _fnCamelToHungarian( DataTable.models.oSearch, searchCols[i] ); - } - } - } - } - - - /** - * Provide backwards compatibility for column options. Note that the new options - * are mapped onto the old parameters, so this is an external interface change - * only. - * @param {object} init Object to map - */ - function _fnCompatCols ( init ) - { - _fnCompatMap( init, 'orderable', 'bSortable' ); - _fnCompatMap( init, 'orderData', 'aDataSort' ); - _fnCompatMap( init, 'orderSequence', 'asSorting' ); - _fnCompatMap( init, 'orderDataType', 'sortDataType' ); - } - - - /** - * Browser feature detection for capabilities, quirks - * @param {object} settings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnBrowserDetect( settings ) - { - var browser = settings.oBrowser; - - // Scrolling feature / quirks detection - var n = $('<div/>') - .css( { - position: 'absolute', - top: 0, - left: 0, - height: 1, - width: 1, - overflow: 'hidden' - } ) - .append( - $('<div/>') - .css( { - position: 'absolute', - top: 1, - left: 1, - width: 100, - overflow: 'scroll' - } ) - .append( - $('<div class="test"/>') - .css( { - width: '100%', - height: 10 - } ) - ) - ) - .appendTo( 'body' ); - - var test = n.find('.test'); - - // IE6/7 will oversize a width 100% element inside a scrolling element, to - // include the width of the scrollbar, while other browsers ensure the inner - // element is contained without forcing scrolling - browser.bScrollOversize = test[0].offsetWidth === 100; - - // In rtl text layout, some browsers (most, but not all) will place the - // scrollbar on the left, rather than the right. - browser.bScrollbarLeft = test.offset().left !== 1; - - n.remove(); - } - - - /** - * Array.prototype reduce[Right] method, used for browsers which don't support - * JS 1.6. Done this way to reduce code size, since we iterate either way - * @param {object} settings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnReduce ( that, fn, init, start, end, inc ) - { - var - i = start, - value, - isSet = false; - - if ( init !== undefined ) { - value = init; - isSet = true; - } - - while ( i !== end ) { - if ( ! that.hasOwnProperty(i) ) { - continue; - } - - value = isSet ? - fn( value, that[i], i, that ) : - that[i]; - - isSet = true; - i += inc; - } - - return value; - } - - /** - * Add a column to the list used for the table with default values - * @param {object} oSettings dataTables settings object - * @param {node} nTh The th element for this column - * @memberof DataTable#oApi - */ - function _fnAddColumn( oSettings, nTh ) - { - // Add column to aoColumns array - var oDefaults = DataTable.defaults.column; - var iCol = oSettings.aoColumns.length; - var oCol = $.extend( {}, DataTable.models.oColumn, oDefaults, { - "nTh": nTh ? nTh : document.createElement('th'), - "sTitle": oDefaults.sTitle ? oDefaults.sTitle : nTh ? nTh.innerHTML : '', - "aDataSort": oDefaults.aDataSort ? oDefaults.aDataSort : [iCol], - "mData": oDefaults.mData ? oDefaults.mData : iCol, - idx: iCol - } ); - oSettings.aoColumns.push( oCol ); - - // Add search object for column specific search. Note that the `searchCols[ iCol ]` - // passed into extend can be undefined. This allows the user to give a default - // with only some of the parameters defined, and also not give a default - var searchCols = oSettings.aoPreSearchCols; - searchCols[ iCol ] = $.extend( {}, DataTable.models.oSearch, searchCols[ iCol ] ); - - // Use the default column options function to initialise classes etc - _fnColumnOptions( oSettings, iCol, null ); - } - - - /** - * Apply options for a column - * @param {object} oSettings dataTables settings object - * @param {int} iCol column index to consider - * @param {object} oOptions object with sType, bVisible and bSearchable etc - * @memberof DataTable#oApi - */ - function _fnColumnOptions( oSettings, iCol, oOptions ) - { - var oCol = oSettings.aoColumns[ iCol ]; - var oClasses = oSettings.oClasses; - var th = $(oCol.nTh); - - // Try to get width information from the DOM. We can't get it from CSS - // as we'd need to parse the CSS stylesheet. `width` option can override - if ( ! oCol.sWidthOrig ) { - // Width attribute - oCol.sWidthOrig = th.attr('width') || null; - - // Style attribute - var t = (th.attr('style') || '').match(/width:\s*(\d+[pxem%]+)/); - if ( t ) { - oCol.sWidthOrig = t[1]; - } - } - - /* User specified column options */ - if ( oOptions !== undefined && oOptions !== null ) - { - // Backwards compatibility - _fnCompatCols( oOptions ); - - // Map camel case parameters to their Hungarian counterparts - _fnCamelToHungarian( DataTable.defaults.column, oOptions ); - - /* Backwards compatibility for mDataProp */ - if ( oOptions.mDataProp !== undefined && !oOptions.mData ) - { - oOptions.mData = oOptions.mDataProp; - } - - if ( oOptions.sType ) - { - oCol._sManualType = oOptions.sType; - } - - // `class` is a reserved word in Javascript, so we need to provide - // the ability to use a valid name for the camel case input - if ( oOptions.className && ! oOptions.sClass ) - { - oOptions.sClass = oOptions.className; - } - - $.extend( oCol, oOptions ); - _fnMap( oCol, oOptions, "sWidth", "sWidthOrig" ); - - /* iDataSort to be applied (backwards compatibility), but aDataSort will take - * priority if defined - */ - if ( typeof oOptions.iDataSort === 'number' ) - { - oCol.aDataSort = [ oOptions.iDataSort ]; - } - _fnMap( oCol, oOptions, "aDataSort" ); - } - - /* Cache the data get and set functions for speed */ - var mDataSrc = oCol.mData; - var mData = _fnGetObjectDataFn( mDataSrc ); - var mRender = oCol.mRender ? _fnGetObjectDataFn( oCol.mRender ) : null; - - var attrTest = function( src ) { - return typeof src === 'string' && src.indexOf('@') !== -1; - }; - oCol._bAttrSrc = $.isPlainObject( mDataSrc ) && ( - attrTest(mDataSrc.sort) || attrTest(mDataSrc.type) || attrTest(mDataSrc.filter) - ); - - oCol.fnGetData = function (rowData, type, meta) { - var innerData = mData( rowData, type, undefined, meta ); - - return mRender && type ? - mRender( innerData, type, rowData, meta ) : - innerData; - }; - oCol.fnSetData = function ( rowData, val, meta ) { - return _fnSetObjectDataFn( mDataSrc )( rowData, val, meta ); - }; - - // Indicate if DataTables should read DOM data as an object or array - // Used in _fnGetRowElements - if ( typeof mDataSrc !== 'number' ) { - oSettings._rowReadObject = true; - } - - /* Feature sorting overrides column specific when off */ - if ( !oSettings.oFeatures.bSort ) - { - oCol.bSortable = false; - th.addClass( oClasses.sSortableNone ); // Have to add class here as order event isn't called - } - - /* Check that the class assignment is correct for sorting */ - var bAsc = $.inArray('asc', oCol.asSorting) !== -1; - var bDesc = $.inArray('desc', oCol.asSorting) !== -1; - if ( !oCol.bSortable || (!bAsc && !bDesc) ) - { - oCol.sSortingClass = oClasses.sSortableNone; - oCol.sSortingClassJUI = ""; - } - else if ( bAsc && !bDesc ) - { - oCol.sSortingClass = oClasses.sSortableAsc; - oCol.sSortingClassJUI = oClasses.sSortJUIAscAllowed; - } - else if ( !bAsc && bDesc ) - { - oCol.sSortingClass = oClasses.sSortableDesc; - oCol.sSortingClassJUI = oClasses.sSortJUIDescAllowed; - } - else - { - oCol.sSortingClass = oClasses.sSortable; - oCol.sSortingClassJUI = oClasses.sSortJUI; - } - } - - - /** - * Adjust the table column widths for new data. Note: you would probably want to - * do a redraw after calling this function! - * @param {object} settings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnAdjustColumnSizing ( settings ) - { - /* Not interested in doing column width calculation if auto-width is disabled */ - if ( settings.oFeatures.bAutoWidth !== false ) - { - var columns = settings.aoColumns; - - _fnCalculateColumnWidths( settings ); - for ( var i=0 , iLen=columns.length ; i<iLen ; i++ ) - { - columns[i].nTh.style.width = columns[i].sWidth; - } - } - - var scroll = settings.oScroll; - if ( scroll.sY !== '' || scroll.sX !== '') - { - _fnScrollDraw( settings ); - } - - _fnCallbackFire( settings, null, 'column-sizing', [settings] ); - } - - - /** - * Covert the index of a visible column to the index in the data array (take account - * of hidden columns) - * @param {object} oSettings dataTables settings object - * @param {int} iMatch Visible column index to lookup - * @returns {int} i the data index - * @memberof DataTable#oApi - */ - function _fnVisibleToColumnIndex( oSettings, iMatch ) - { - var aiVis = _fnGetColumns( oSettings, 'bVisible' ); - - return typeof aiVis[iMatch] === 'number' ? - aiVis[iMatch] : - null; - } - - - /** - * Covert the index of an index in the data array and convert it to the visible - * column index (take account of hidden columns) - * @param {int} iMatch Column index to lookup - * @param {object} oSettings dataTables settings object - * @returns {int} i the data index - * @memberof DataTable#oApi - */ - function _fnColumnIndexToVisible( oSettings, iMatch ) - { - var aiVis = _fnGetColumns( oSettings, 'bVisible' ); - var iPos = $.inArray( iMatch, aiVis ); - - return iPos !== -1 ? iPos : null; - } - - - /** - * Get the number of visible columns - * @param {object} oSettings dataTables settings object - * @returns {int} i the number of visible columns - * @memberof DataTable#oApi - */ - function _fnVisbleColumns( oSettings ) - { - return _fnGetColumns( oSettings, 'bVisible' ).length; - } - - - /** - * Get an array of column indexes that match a given property - * @param {object} oSettings dataTables settings object - * @param {string} sParam Parameter in aoColumns to look for - typically - * bVisible or bSearchable - * @returns {array} Array of indexes with matched properties - * @memberof DataTable#oApi - */ - function _fnGetColumns( oSettings, sParam ) - { - var a = []; - - $.map( oSettings.aoColumns, function(val, i) { - if ( val[sParam] ) { - a.push( i ); - } - } ); - - return a; - } - - - /** - * Calculate the 'type' of a column - * @param {object} settings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnColumnTypes ( settings ) - { - var columns = settings.aoColumns; - var data = settings.aoData; - var types = DataTable.ext.type.detect; - var i, ien, j, jen, k, ken; - var col, cell, detectedType, cache; - - // For each column, spin over the - for ( i=0, ien=columns.length ; i<ien ; i++ ) { - col = columns[i]; - cache = []; - - if ( ! col.sType && col._sManualType ) { - col.sType = col._sManualType; - } - else if ( ! col.sType ) { - for ( j=0, jen=types.length ; j<jen ; j++ ) { - for ( k=0, ken=data.length ; k<ken ; k++ ) { - // Use a cache array so we only need to get the type data - // from the formatter once (when using multiple detectors) - if ( cache[k] === undefined ) { - cache[k] = _fnGetCellData( settings, k, i, 'type' ); - } - - detectedType = types[j]( cache[k], settings ); - - // If null, then this type can't apply to this column, so - // rather than testing all cells, break out. There is an - // exception for the last type which is `html`. We need to - // scan all rows since it is possible to mix string and HTML - // types - if ( ! detectedType && j !== types.length-1 ) { - break; - } - - // Only a single match is needed for html type since it is - // bottom of the pile and very similar to string - if ( detectedType === 'html' ) { - break; - } - } - - // Type is valid for all data points in the column - use this - // type - if ( detectedType ) { - col.sType = detectedType; - break; - } - } - - // Fall back - if no type was detected, always use string - if ( ! col.sType ) { - col.sType = 'string'; - } - } - } - } - - - /** - * Take the column definitions and static columns arrays and calculate how - * they relate to column indexes. The callback function will then apply the - * definition found for a column to a suitable configuration object. - * @param {object} oSettings dataTables settings object - * @param {array} aoColDefs The aoColumnDefs array that is to be applied - * @param {array} aoCols The aoColumns array that defines columns individually - * @param {function} fn Callback function - takes two parameters, the calculated - * column index and the definition for that column. - * @memberof DataTable#oApi - */ - function _fnApplyColumnDefs( oSettings, aoColDefs, aoCols, fn ) - { - var i, iLen, j, jLen, k, kLen, def; - var columns = oSettings.aoColumns; - - // Column definitions with aTargets - if ( aoColDefs ) - { - /* Loop over the definitions array - loop in reverse so first instance has priority */ - for ( i=aoColDefs.length-1 ; i>=0 ; i-- ) - { - def = aoColDefs[i]; - - /* Each definition can target multiple columns, as it is an array */ - var aTargets = def.targets !== undefined ? - def.targets : - def.aTargets; - - if ( ! $.isArray( aTargets ) ) - { - aTargets = [ aTargets ]; - } - - for ( j=0, jLen=aTargets.length ; j<jLen ; j++ ) - { - if ( typeof aTargets[j] === 'number' && aTargets[j] >= 0 ) - { - /* Add columns that we don't yet know about */ - while( columns.length <= aTargets[j] ) - { - _fnAddColumn( oSettings ); - } - - /* Integer, basic index */ - fn( aTargets[j], def ); - } - else if ( typeof aTargets[j] === 'number' && aTargets[j] < 0 ) - { - /* Negative integer, right to left column counting */ - fn( columns.length+aTargets[j], def ); - } - else if ( typeof aTargets[j] === 'string' ) - { - /* Class name matching on TH element */ - for ( k=0, kLen=columns.length ; k<kLen ; k++ ) - { - if ( aTargets[j] == "_all" || - $(columns[k].nTh).hasClass( aTargets[j] ) ) - { - fn( k, def ); - } - } - } - } - } - } - - // Statically defined columns array - if ( aoCols ) - { - for ( i=0, iLen=aoCols.length ; i<iLen ; i++ ) - { - fn( i, aoCols[i] ); - } - } - } - - /** - * Add a data array to the table, creating DOM node etc. This is the parallel to - * _fnGatherData, but for adding rows from a Javascript source, rather than a - * DOM source. - * @param {object} oSettings dataTables settings object - * @param {array} aData data array to be added - * @param {node} [nTr] TR element to add to the table - optional. If not given, - * DataTables will create a row automatically - * @param {array} [anTds] Array of TD|TH elements for the row - must be given - * if nTr is. - * @returns {int} >=0 if successful (index of new aoData entry), -1 if failed - * @memberof DataTable#oApi - */ - function _fnAddData ( oSettings, aDataIn, nTr, anTds ) - { - /* Create the object for storing information about this new row */ - var iRow = oSettings.aoData.length; - var oData = $.extend( true, {}, DataTable.models.oRow, { - src: nTr ? 'dom' : 'data' - } ); - - oData._aData = aDataIn; - oSettings.aoData.push( oData ); - - /* Create the cells */ - var nTd, sThisType; - var columns = oSettings.aoColumns; - for ( var i=0, iLen=columns.length ; i<iLen ; i++ ) - { - // When working with a row, the data source object must be populated. In - // all other cases, the data source object is already populated, so we - // don't overwrite it, which might break bindings etc - if ( nTr ) { - _fnSetCellData( oSettings, iRow, i, _fnGetCellData( oSettings, iRow, i ) ); - } - columns[i].sType = null; - } - - /* Add to the display array */ - oSettings.aiDisplayMaster.push( iRow ); - - /* Create the DOM information, or register it if already present */ - if ( nTr || ! oSettings.oFeatures.bDeferRender ) - { - _fnCreateTr( oSettings, iRow, nTr, anTds ); - } - - return iRow; - } - - - /** - * Add one or more TR elements to the table. Generally we'd expect to - * use this for reading data from a DOM sourced table, but it could be - * used for an TR element. Note that if a TR is given, it is used (i.e. - * it is not cloned). - * @param {object} settings dataTables settings object - * @param {array|node|jQuery} trs The TR element(s) to add to the table - * @returns {array} Array of indexes for the added rows - * @memberof DataTable#oApi - */ - function _fnAddTr( settings, trs ) - { - var row; - - // Allow an individual node to be passed in - if ( ! (trs instanceof $) ) { - trs = $(trs); - } - - return trs.map( function (i, el) { - row = _fnGetRowElements( settings, el ); - return _fnAddData( settings, row.data, el, row.cells ); - } ); - } - - - /** - * Take a TR element and convert it to an index in aoData - * @param {object} oSettings dataTables settings object - * @param {node} n the TR element to find - * @returns {int} index if the node is found, null if not - * @memberof DataTable#oApi - */ - function _fnNodeToDataIndex( oSettings, n ) - { - return (n._DT_RowIndex!==undefined) ? n._DT_RowIndex : null; - } - - - /** - * Take a TD element and convert it into a column data index (not the visible index) - * @param {object} oSettings dataTables settings object - * @param {int} iRow The row number the TD/TH can be found in - * @param {node} n The TD/TH element to find - * @returns {int} index if the node is found, -1 if not - * @memberof DataTable#oApi - */ - function _fnNodeToColumnIndex( oSettings, iRow, n ) - { - return $.inArray( n, oSettings.aoData[ iRow ].anCells ); - } - - - /** - * Get the data for a given cell from the internal cache, taking into account data mapping - * @param {object} settings dataTables settings object - * @param {int} rowIdx aoData row id - * @param {int} colIdx Column index - * @param {string} type data get type ('display', 'type' 'filter' 'sort') - * @returns {*} Cell data - * @memberof DataTable#oApi - */ - function _fnGetCellData( settings, rowIdx, colIdx, type ) - { - var draw = settings.iDraw; - var col = settings.aoColumns[colIdx]; - var rowData = settings.aoData[rowIdx]._aData; - var defaultContent = col.sDefaultContent; - var cellData = col.fnGetData( rowData, type, { - settings: settings, - row: rowIdx, - col: colIdx - } ); - - if ( cellData === undefined ) { - if ( settings.iDrawError != draw && defaultContent === null ) { - _fnLog( settings, 0, "Requested unknown parameter "+ - (typeof col.mData=='function' ? '{function}' : "'"+col.mData+"'")+ - " for row "+rowIdx, 4 ); - settings.iDrawError = draw; - } - return defaultContent; - } - - /* When the data source is null, we can use default column data */ - if ( (cellData === rowData || cellData === null) && defaultContent !== null ) { - cellData = defaultContent; - } - else if ( typeof cellData === 'function' ) { - // If the data source is a function, then we run it and use the return, - // executing in the scope of the data object (for instances) - return cellData.call( rowData ); - } - - if ( cellData === null && type == 'display' ) { - return ''; - } - return cellData; - } - - - /** - * Set the value for a specific cell, into the internal data cache - * @param {object} settings dataTables settings object - * @param {int} rowIdx aoData row id - * @param {int} colIdx Column index - * @param {*} val Value to set - * @memberof DataTable#oApi - */ - function _fnSetCellData( settings, rowIdx, colIdx, val ) - { - var col = settings.aoColumns[colIdx]; - var rowData = settings.aoData[rowIdx]._aData; - - col.fnSetData( rowData, val, { - settings: settings, - row: rowIdx, - col: colIdx - } ); - } - - - // Private variable that is used to match action syntax in the data property object - var __reArray = /\[.*?\]$/; - var __reFn = /\(\)$/; - - /** - * Split string on periods, taking into account escaped periods - * @param {string} str String to split - * @return {array} Split string - */ - function _fnSplitObjNotation( str ) - { - return $.map( str.match(/(\\.|[^\.])+/g), function ( s ) { - return s.replace(/\\./g, '.'); - } ); - } - - - /** - * Return a function that can be used to get data from a source object, taking - * into account the ability to use nested objects as a source - * @param {string|int|function} mSource The data source for the object - * @returns {function} Data get function - * @memberof DataTable#oApi - */ - function _fnGetObjectDataFn( mSource ) - { - if ( $.isPlainObject( mSource ) ) - { - /* Build an object of get functions, and wrap them in a single call */ - var o = {}; - $.each( mSource, function (key, val) { - if ( val ) { - o[key] = _fnGetObjectDataFn( val ); - } - } ); - - return function (data, type, row, meta) { - var t = o[type] || o._; - return t !== undefined ? - t(data, type, row, meta) : - data; - }; - } - else if ( mSource === null ) - { - /* Give an empty string for rendering / sorting etc */ - return function (data) { // type, row and meta also passed, but not used - return data; - }; - } - else if ( typeof mSource === 'function' ) - { - return function (data, type, row, meta) { - return mSource( data, type, row, meta ); - }; - } - else if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 || - mSource.indexOf('[') !== -1 || mSource.indexOf('(') !== -1) ) - { - /* If there is a . in the source string then the data source is in a - * nested object so we loop over the data for each level to get the next - * level down. On each loop we test for undefined, and if found immediately - * return. This allows entire objects to be missing and sDefaultContent to - * be used if defined, rather than throwing an error - */ - var fetchData = function (data, type, src) { - var arrayNotation, funcNotation, out, innerSrc; - - if ( src !== "" ) - { - var a = _fnSplitObjNotation( src ); - - for ( var i=0, iLen=a.length ; i<iLen ; i++ ) - { - // Check if we are dealing with special notation - arrayNotation = a[i].match(__reArray); - funcNotation = a[i].match(__reFn); - - if ( arrayNotation ) - { - // Array notation - a[i] = a[i].replace(__reArray, ''); - - // Condition allows simply [] to be passed in - if ( a[i] !== "" ) { - data = data[ a[i] ]; - } - out = []; - - // Get the remainder of the nested object to get - a.splice( 0, i+1 ); - innerSrc = a.join('.'); - - // Traverse each entry in the array getting the properties requested - for ( var j=0, jLen=data.length ; j<jLen ; j++ ) { - out.push( fetchData( data[j], type, innerSrc ) ); - } - - // If a string is given in between the array notation indicators, that - // is used to join the strings together, otherwise an array is returned - var join = arrayNotation[0].substring(1, arrayNotation[0].length-1); - data = (join==="") ? out : out.join(join); - - // The inner call to fetchData has already traversed through the remainder - // of the source requested, so we exit from the loop - break; - } - else if ( funcNotation ) - { - // Function call - a[i] = a[i].replace(__reFn, ''); - data = data[ a[i] ](); - continue; - } - - if ( data === null || data[ a[i] ] === undefined ) - { - return undefined; - } - data = data[ a[i] ]; - } - } - - return data; - }; - - return function (data, type) { // row and meta also passed, but not used - return fetchData( data, type, mSource ); - }; - } - else - { - /* Array or flat object mapping */ - return function (data, type) { // row and meta also passed, but not used - return data[mSource]; - }; - } - } - - - /** - * Return a function that can be used to set data from a source object, taking - * into account the ability to use nested objects as a source - * @param {string|int|function} mSource The data source for the object - * @returns {function} Data set function - * @memberof DataTable#oApi - */ - function _fnSetObjectDataFn( mSource ) - { - if ( $.isPlainObject( mSource ) ) - { - /* Unlike get, only the underscore (global) option is used for for - * setting data since we don't know the type here. This is why an object - * option is not documented for `mData` (which is read/write), but it is - * for `mRender` which is read only. - */ - return _fnSetObjectDataFn( mSource._ ); - } - else if ( mSource === null ) - { - /* Nothing to do when the data source is null */ - return function () {}; - } - else if ( typeof mSource === 'function' ) - { - return function (data, val, meta) { - mSource( data, 'set', val, meta ); - }; - } - else if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 || - mSource.indexOf('[') !== -1 || mSource.indexOf('(') !== -1) ) - { - /* Like the get, we need to get data from a nested object */ - var setData = function (data, val, src) { - var a = _fnSplitObjNotation( src ), b; - var aLast = a[a.length-1]; - var arrayNotation, funcNotation, o, innerSrc; - - for ( var i=0, iLen=a.length-1 ; i<iLen ; i++ ) - { - // Check if we are dealing with an array notation request - arrayNotation = a[i].match(__reArray); - funcNotation = a[i].match(__reFn); - - if ( arrayNotation ) - { - a[i] = a[i].replace(__reArray, ''); - data[ a[i] ] = []; - - // Get the remainder of the nested object to set so we can recurse - b = a.slice(); - b.splice( 0, i+1 ); - innerSrc = b.join('.'); - - // Traverse each entry in the array setting the properties requested - for ( var j=0, jLen=val.length ; j<jLen ; j++ ) - { - o = {}; - setData( o, val[j], innerSrc ); - data[ a[i] ].push( o ); - } - - // The inner call to setData has already traversed through the remainder - // of the source and has set the data, thus we can exit here - return; - } - else if ( funcNotation ) - { - // Function call - a[i] = a[i].replace(__reFn, ''); - data = data[ a[i] ]( val ); - } - - // If the nested object doesn't currently exist - since we are - // trying to set the value - create it - if ( data[ a[i] ] === null || data[ a[i] ] === undefined ) - { - data[ a[i] ] = {}; - } - data = data[ a[i] ]; - } - - // Last item in the input - i.e, the actual set - if ( aLast.match(__reFn ) ) - { - // Function call - data = data[ aLast.replace(__reFn, '') ]( val ); - } - else - { - // If array notation is used, we just want to strip it and use the property name - // and assign the value. If it isn't used, then we get the result we want anyway - data[ aLast.replace(__reArray, '') ] = val; - } - }; - - return function (data, val) { // meta is also passed in, but not used - return setData( data, val, mSource ); - }; - } - else - { - /* Array or flat object mapping */ - return function (data, val) { // meta is also passed in, but not used - data[mSource] = val; - }; - } - } - - - /** - * Return an array with the full table data - * @param {object} oSettings dataTables settings object - * @returns array {array} aData Master data array - * @memberof DataTable#oApi - */ - function _fnGetDataMaster ( settings ) - { - return _pluck( settings.aoData, '_aData' ); - } - - - /** - * Nuke the table - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnClearTable( settings ) - { - settings.aoData.length = 0; - settings.aiDisplayMaster.length = 0; - settings.aiDisplay.length = 0; - } - - - /** - * Take an array of integers (index array) and remove a target integer (value - not - * the key!) - * @param {array} a Index array to target - * @param {int} iTarget value to find - * @memberof DataTable#oApi - */ - function _fnDeleteIndex( a, iTarget, splice ) - { - var iTargetIndex = -1; - - for ( var i=0, iLen=a.length ; i<iLen ; i++ ) - { - if ( a[i] == iTarget ) - { - iTargetIndex = i; - } - else if ( a[i] > iTarget ) - { - a[i]--; - } - } - - if ( iTargetIndex != -1 && splice === undefined ) - { - a.splice( iTargetIndex, 1 ); - } - } - - - /** - * Mark cached data as invalid such that a re-read of the data will occur when - * the cached data is next requested. Also update from the data source object. - * - * @param {object} settings DataTables settings object - * @param {int} rowIdx Row index to invalidate - * @param {string} [src] Source to invalidate from: undefined, 'auto', 'dom' - * or 'data' - * @param {int} [colIdx] Column index to invalidate. If undefined the whole - * row will be invalidated - * @memberof DataTable#oApi - * - * @todo For the modularisation of v1.11 this will need to become a callback, so - * the sort and filter methods can subscribe to it. That will required - * initialisation options for sorting, which is why it is not already baked in - */ - function _fnInvalidate( settings, rowIdx, src, colIdx ) - { - var row = settings.aoData[ rowIdx ]; - var i, ien; - var cellWrite = function ( cell, col ) { - // This is very frustrating, but in IE if you just write directly - // to innerHTML, and elements that are overwritten are GC'ed, - // even if there is a reference to them elsewhere - while ( cell.childNodes.length ) { - cell.removeChild( cell.firstChild ); - } - - cell.innerHTML = _fnGetCellData( settings, rowIdx, col, 'display' ); - }; - - // Are we reading last data from DOM or the data object? - if ( src === 'dom' || ((! src || src === 'auto') && row.src === 'dom') ) { - // Read the data from the DOM - row._aData = _fnGetRowElements( - settings, row, colIdx, colIdx === undefined ? undefined : row._aData - ) - .data; - } - else { - // Reading from data object, update the DOM - var cells = row.anCells; - - if ( cells ) { - if ( colIdx !== undefined ) { - cellWrite( cells[colIdx], colIdx ); - } - else { - for ( i=0, ien=cells.length ; i<ien ; i++ ) { - cellWrite( cells[i], i ); - } - } - } - } - - // For both row and cell invalidation, the cached data for sorting and - // filtering is nulled out - row._aSortData = null; - row._aFilterData = null; - - // Invalidate the type for a specific column (if given) or all columns since - // the data might have changed - var cols = settings.aoColumns; - if ( colIdx !== undefined ) { - cols[ colIdx ].sType = null; - } - else { - for ( i=0, ien=cols.length ; i<ien ; i++ ) { - cols[i].sType = null; - } - - // Update DataTables special `DT_*` attributes for the row - _fnRowAttributes( row ); - } - } - - - /** - * Build a data source object from an HTML row, reading the contents of the - * cells that are in the row. - * - * @param {object} settings DataTables settings object - * @param {node|object} TR element from which to read data or existing row - * object from which to re-read the data from the cells - * @param {int} [colIdx] Optional column index - * @param {array|object} [d] Data source object. If `colIdx` is given then this - * parameter should also be given and will be used to write the data into. - * Only the column in question will be written - * @returns {object} Object with two parameters: `data` the data read, in - * document order, and `cells` and array of nodes (they can be useful to the - * caller, so rather than needing a second traversal to get them, just return - * them from here). - * @memberof DataTable#oApi - */ - function _fnGetRowElements( settings, row, colIdx, d ) - { - var - tds = [], - td = row.firstChild, - name, col, o, i=0, contents, - columns = settings.aoColumns, - objectRead = settings._rowReadObject; - - // Allow the data object to be passed in, or construct - d = d || objectRead ? {} : []; - - var attr = function ( str, td ) { - if ( typeof str === 'string' ) { - var idx = str.indexOf('@'); - - if ( idx !== -1 ) { - var attr = str.substring( idx+1 ); - var setter = _fnSetObjectDataFn( str ); - setter( d, td.getAttribute( attr ) ); - } - } - }; - - // Read data from a cell and store into the data object - var cellProcess = function ( cell ) { - if ( colIdx === undefined || colIdx === i ) { - col = columns[i]; - contents = $.trim(cell.innerHTML); - - if ( col && col._bAttrSrc ) { - var setter = _fnSetObjectDataFn( col.mData._ ); - setter( d, contents ); - - attr( col.mData.sort, cell ); - attr( col.mData.type, cell ); - attr( col.mData.filter, cell ); - } - else { - // Depending on the `data` option for the columns the data can - // be read to either an object or an array. - if ( objectRead ) { - if ( ! col._setter ) { - // Cache the setter function - col._setter = _fnSetObjectDataFn( col.mData ); - } - col._setter( d, contents ); - } - else { - d[i] = contents; - } - } - } - - i++; - }; - - if ( td ) { - // `tr` element was passed in - while ( td ) { - name = td.nodeName.toUpperCase(); - - if ( name == "TD" || name == "TH" ) { - cellProcess( td ); - tds.push( td ); - } - - td = td.nextSibling; - } - } - else { - // Existing row object passed in - tds = row.anCells; - - for ( var j=0, jen=tds.length ; j<jen ; j++ ) { - cellProcess( tds[j] ); - } - } - - return { - data: d, - cells: tds - }; - } - /** - * Create a new TR element (and it's TD children) for a row - * @param {object} oSettings dataTables settings object - * @param {int} iRow Row to consider - * @param {node} [nTrIn] TR element to add to the table - optional. If not given, - * DataTables will create a row automatically - * @param {array} [anTds] Array of TD|TH elements for the row - must be given - * if nTr is. - * @memberof DataTable#oApi - */ - function _fnCreateTr ( oSettings, iRow, nTrIn, anTds ) - { - var - row = oSettings.aoData[iRow], - rowData = row._aData, - cells = [], - nTr, nTd, oCol, - i, iLen; - - if ( row.nTr === null ) - { - nTr = nTrIn || document.createElement('tr'); - - row.nTr = nTr; - row.anCells = cells; - - /* Use a private property on the node to allow reserve mapping from the node - * to the aoData array for fast look up - */ - nTr._DT_RowIndex = iRow; - - /* Special parameters can be given by the data source to be used on the row */ - _fnRowAttributes( row ); - - /* Process each column */ - for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ ) - { - oCol = oSettings.aoColumns[i]; - - nTd = nTrIn ? anTds[i] : document.createElement( oCol.sCellType ); - cells.push( nTd ); - - // Need to create the HTML if new, or if a rendering function is defined - if ( !nTrIn || oCol.mRender || oCol.mData !== i ) - { - nTd.innerHTML = _fnGetCellData( oSettings, iRow, i, 'display' ); - } - - /* Add user defined class */ - if ( oCol.sClass ) - { - nTd.className += ' '+oCol.sClass; - } - - // Visibility - add or remove as required - if ( oCol.bVisible && ! nTrIn ) - { - nTr.appendChild( nTd ); - } - else if ( ! oCol.bVisible && nTrIn ) - { - nTd.parentNode.removeChild( nTd ); - } - - if ( oCol.fnCreatedCell ) - { - oCol.fnCreatedCell.call( oSettings.oInstance, - nTd, _fnGetCellData( oSettings, iRow, i ), rowData, iRow, i - ); - } - } - - _fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [nTr, rowData, iRow] ); - } - - // Remove once webkit bug 131819 and Chromium bug 365619 have been resolved - // and deployed - row.nTr.setAttribute( 'role', 'row' ); - } - - - /** - * Add attributes to a row based on the special `DT_*` parameters in a data - * source object. - * @param {object} DataTables row object for the row to be modified - * @memberof DataTable#oApi - */ - function _fnRowAttributes( row ) - { - var tr = row.nTr; - var data = row._aData; - - if ( tr ) { - if ( data.DT_RowId ) { - tr.id = data.DT_RowId; - } - - if ( data.DT_RowClass ) { - // Remove any classes added by DT_RowClass before - var a = data.DT_RowClass.split(' '); - row.__rowc = row.__rowc ? - _unique( row.__rowc.concat( a ) ) : - a; - - $(tr) - .removeClass( row.__rowc.join(' ') ) - .addClass( data.DT_RowClass ); - } - - if ( data.DT_RowData ) { - $(tr).data( data.DT_RowData ); - } - } - } - - - /** - * Create the HTML header for the table - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnBuildHead( oSettings ) - { - var i, ien, cell, row, column; - var thead = oSettings.nTHead; - var tfoot = oSettings.nTFoot; - var createHeader = $('th, td', thead).length === 0; - var classes = oSettings.oClasses; - var columns = oSettings.aoColumns; - - if ( createHeader ) { - row = $('<tr/>').appendTo( thead ); - } - - for ( i=0, ien=columns.length ; i<ien ; i++ ) { - column = columns[i]; - cell = $( column.nTh ).addClass( column.sClass ); - - if ( createHeader ) { - cell.appendTo( row ); - } - - // 1.11 move into sorting - if ( oSettings.oFeatures.bSort ) { - cell.addClass( column.sSortingClass ); - - if ( column.bSortable !== false ) { - cell - .attr( 'tabindex', oSettings.iTabIndex ) - .attr( 'aria-controls', oSettings.sTableId ); - - _fnSortAttachListener( oSettings, column.nTh, i ); - } - } - - if ( column.sTitle != cell.html() ) { - cell.html( column.sTitle ); - } - - _fnRenderer( oSettings, 'header' )( - oSettings, cell, column, classes - ); - } - - if ( createHeader ) { - _fnDetectHeader( oSettings.aoHeader, thead ); - } - - /* ARIA role for the rows */ - $(thead).find('>tr').attr('role', 'row'); - - /* Deal with the footer - add classes if required */ - $(thead).find('>tr>th, >tr>td').addClass( classes.sHeaderTH ); - $(tfoot).find('>tr>th, >tr>td').addClass( classes.sFooterTH ); - - // Cache the footer cells. Note that we only take the cells from the first - // row in the footer. If there is more than one row the user wants to - // interact with, they need to use the table().foot() method. Note also this - // allows cells to be used for multiple columns using colspan - if ( tfoot !== null ) { - var cells = oSettings.aoFooter[0]; - - for ( i=0, ien=cells.length ; i<ien ; i++ ) { - column = columns[i]; - column.nTf = cells[i].cell; - - if ( column.sClass ) { - $(column.nTf).addClass( column.sClass ); - } - } - } - } - - - /** - * Draw the header (or footer) element based on the column visibility states. The - * methodology here is to use the layout array from _fnDetectHeader, modified for - * the instantaneous column visibility, to construct the new layout. The grid is - * traversed over cell at a time in a rows x columns grid fashion, although each - * cell insert can cover multiple elements in the grid - which is tracks using the - * aApplied array. Cell inserts in the grid will only occur where there isn't - * already a cell in that position. - * @param {object} oSettings dataTables settings object - * @param array {objects} aoSource Layout array from _fnDetectHeader - * @param {boolean} [bIncludeHidden=false] If true then include the hidden columns in the calc, - * @memberof DataTable#oApi - */ - function _fnDrawHead( oSettings, aoSource, bIncludeHidden ) - { - var i, iLen, j, jLen, k, kLen, n, nLocalTr; - var aoLocal = []; - var aApplied = []; - var iColumns = oSettings.aoColumns.length; - var iRowspan, iColspan; - - if ( ! aoSource ) - { - return; - } - - if ( bIncludeHidden === undefined ) - { - bIncludeHidden = false; - } - - /* Make a copy of the master layout array, but without the visible columns in it */ - for ( i=0, iLen=aoSource.length ; i<iLen ; i++ ) - { - aoLocal[i] = aoSource[i].slice(); - aoLocal[i].nTr = aoSource[i].nTr; - - /* Remove any columns which are currently hidden */ - for ( j=iColumns-1 ; j>=0 ; j-- ) - { - if ( !oSettings.aoColumns[j].bVisible && !bIncludeHidden ) - { - aoLocal[i].splice( j, 1 ); - } - } - - /* Prep the applied array - it needs an element for each row */ - aApplied.push( [] ); - } - - for ( i=0, iLen=aoLocal.length ; i<iLen ; i++ ) - { - nLocalTr = aoLocal[i].nTr; - - /* All cells are going to be replaced, so empty out the row */ - if ( nLocalTr ) - { - while( (n = nLocalTr.firstChild) ) - { - nLocalTr.removeChild( n ); - } - } - - for ( j=0, jLen=aoLocal[i].length ; j<jLen ; j++ ) - { - iRowspan = 1; - iColspan = 1; - - /* Check to see if there is already a cell (row/colspan) covering our target - * insert point. If there is, then there is nothing to do. - */ - if ( aApplied[i][j] === undefined ) - { - nLocalTr.appendChild( aoLocal[i][j].cell ); - aApplied[i][j] = 1; - - /* Expand the cell to cover as many rows as needed */ - while ( aoLocal[i+iRowspan] !== undefined && - aoLocal[i][j].cell == aoLocal[i+iRowspan][j].cell ) - { - aApplied[i+iRowspan][j] = 1; - iRowspan++; - } - - /* Expand the cell to cover as many columns as needed */ - while ( aoLocal[i][j+iColspan] !== undefined && - aoLocal[i][j].cell == aoLocal[i][j+iColspan].cell ) - { - /* Must update the applied array over the rows for the columns */ - for ( k=0 ; k<iRowspan ; k++ ) - { - aApplied[i+k][j+iColspan] = 1; - } - iColspan++; - } - - /* Do the actual expansion in the DOM */ - $(aoLocal[i][j].cell) - .attr('rowspan', iRowspan) - .attr('colspan', iColspan); - } - } - } - } - - - /** - * Insert the required TR nodes into the table for display - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnDraw( oSettings ) - { - /* Provide a pre-callback function which can be used to cancel the draw is false is returned */ - var aPreDraw = _fnCallbackFire( oSettings, 'aoPreDrawCallback', 'preDraw', [oSettings] ); - if ( $.inArray( false, aPreDraw ) !== -1 ) - { - _fnProcessingDisplay( oSettings, false ); - return; - } - - var i, iLen, n; - var anRows = []; - var iRowCount = 0; - var asStripeClasses = oSettings.asStripeClasses; - var iStripes = asStripeClasses.length; - var iOpenRows = oSettings.aoOpenRows.length; - var oLang = oSettings.oLanguage; - var iInitDisplayStart = oSettings.iInitDisplayStart; - var bServerSide = _fnDataSource( oSettings ) == 'ssp'; - var aiDisplay = oSettings.aiDisplay; - - oSettings.bDrawing = true; - - /* Check and see if we have an initial draw position from state saving */ - if ( iInitDisplayStart !== undefined && iInitDisplayStart !== -1 ) - { - oSettings._iDisplayStart = bServerSide ? - iInitDisplayStart : - iInitDisplayStart >= oSettings.fnRecordsDisplay() ? - 0 : - iInitDisplayStart; - - oSettings.iInitDisplayStart = -1; - } - - var iDisplayStart = oSettings._iDisplayStart; - var iDisplayEnd = oSettings.fnDisplayEnd(); - - /* Server-side processing draw intercept */ - if ( oSettings.bDeferLoading ) - { - oSettings.bDeferLoading = false; - oSettings.iDraw++; - _fnProcessingDisplay( oSettings, false ); - } - else if ( !bServerSide ) - { - oSettings.iDraw++; - } - else if ( !oSettings.bDestroying && !_fnAjaxUpdate( oSettings ) ) - { - return; - } - - if ( aiDisplay.length !== 0 ) - { - var iStart = bServerSide ? 0 : iDisplayStart; - var iEnd = bServerSide ? oSettings.aoData.length : iDisplayEnd; - - for ( var j=iStart ; j<iEnd ; j++ ) - { - var iDataIndex = aiDisplay[j]; - var aoData = oSettings.aoData[ iDataIndex ]; - if ( aoData.nTr === null ) - { - _fnCreateTr( oSettings, iDataIndex ); - } - - var nRow = aoData.nTr; - - /* Remove the old striping classes and then add the new one */ - if ( iStripes !== 0 ) - { - var sStripe = asStripeClasses[ iRowCount % iStripes ]; - if ( aoData._sRowStripe != sStripe ) - { - $(nRow).removeClass( aoData._sRowStripe ).addClass( sStripe ); - aoData._sRowStripe = sStripe; - } - } - - // Row callback functions - might want to manipulate the row - // iRowCount and j are not currently documented. Are they at all - // useful? - _fnCallbackFire( oSettings, 'aoRowCallback', null, - [nRow, aoData._aData, iRowCount, j] ); - - anRows.push( nRow ); - iRowCount++; - } - } - else - { - /* Table is empty - create a row with an empty message in it */ - var sZero = oLang.sZeroRecords; - if ( oSettings.iDraw == 1 && _fnDataSource( oSettings ) == 'ajax' ) - { - sZero = oLang.sLoadingRecords; - } - else if ( oLang.sEmptyTable && oSettings.fnRecordsTotal() === 0 ) - { - sZero = oLang.sEmptyTable; - } - - anRows[ 0 ] = $( '<tr/>', { 'class': iStripes ? asStripeClasses[0] : '' } ) - .append( $('<td />', { - 'valign': 'top', - 'colSpan': _fnVisbleColumns( oSettings ), - 'class': oSettings.oClasses.sRowEmpty - } ).html( sZero ) )[0]; - } - - /* Header and footer callbacks */ - _fnCallbackFire( oSettings, 'aoHeaderCallback', 'header', [ $(oSettings.nTHead).children('tr')[0], - _fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] ); - - _fnCallbackFire( oSettings, 'aoFooterCallback', 'footer', [ $(oSettings.nTFoot).children('tr')[0], - _fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] ); - - var body = $(oSettings.nTBody); - - body.children().detach(); - body.append( $(anRows) ); - - /* Call all required callback functions for the end of a draw */ - _fnCallbackFire( oSettings, 'aoDrawCallback', 'draw', [oSettings] ); - - /* Draw is complete, sorting and filtering must be as well */ - oSettings.bSorted = false; - oSettings.bFiltered = false; - oSettings.bDrawing = false; - } - - - /** - * Redraw the table - taking account of the various features which are enabled - * @param {object} oSettings dataTables settings object - * @param {boolean} [holdPosition] Keep the current paging position. By default - * the paging is reset to the first page - * @memberof DataTable#oApi - */ - function _fnReDraw( settings, holdPosition ) - { - var - features = settings.oFeatures, - sort = features.bSort, - filter = features.bFilter; - - if ( sort ) { - _fnSort( settings ); - } - - if ( filter ) { - _fnFilterComplete( settings, settings.oPreviousSearch ); - } - else { - // No filtering, so we want to just use the display master - settings.aiDisplay = settings.aiDisplayMaster.slice(); - } - - if ( holdPosition !== true ) { - settings._iDisplayStart = 0; - } - - // Let any modules know about the draw hold position state (used by - // scrolling internally) - settings._drawHold = holdPosition; - - _fnDraw( settings ); - - settings._drawHold = false; - } - - - /** - * Add the options to the page HTML for the table - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnAddOptionsHtml ( oSettings ) - { - var classes = oSettings.oClasses; - var table = $(oSettings.nTable); - var holding = $('<div/>').insertBefore( table ); // Holding element for speed - var features = oSettings.oFeatures; - - // All DataTables are wrapped in a div - var insert = $('<div/>', { - id: oSettings.sTableId+'_wrapper', - 'class': classes.sWrapper + (oSettings.nTFoot ? '' : ' '+classes.sNoFooter) - } ); - - oSettings.nHolding = holding[0]; - oSettings.nTableWrapper = insert[0]; - oSettings.nTableReinsertBefore = oSettings.nTable.nextSibling; - - /* Loop over the user set positioning and place the elements as needed */ - var aDom = oSettings.sDom.split(''); - var featureNode, cOption, nNewNode, cNext, sAttr, j; - for ( var i=0 ; i<aDom.length ; i++ ) - { - featureNode = null; - cOption = aDom[i]; - - if ( cOption == '<' ) - { - /* New container div */ - nNewNode = $('<div/>')[0]; - - /* Check to see if we should append an id and/or a class name to the container */ - cNext = aDom[i+1]; - if ( cNext == "'" || cNext == '"' ) - { - sAttr = ""; - j = 2; - while ( aDom[i+j] != cNext ) - { - sAttr += aDom[i+j]; - j++; - } - - /* Replace jQuery UI constants @todo depreciated */ - if ( sAttr == "H" ) - { - sAttr = classes.sJUIHeader; - } - else if ( sAttr == "F" ) - { - sAttr = classes.sJUIFooter; - } - - /* The attribute can be in the format of "#id.class", "#id" or "class" This logic - * breaks the string into parts and applies them as needed - */ - if ( sAttr.indexOf('.') != -1 ) - { - var aSplit = sAttr.split('.'); - nNewNode.id = aSplit[0].substr(1, aSplit[0].length-1); - nNewNode.className = aSplit[1]; - } - else if ( sAttr.charAt(0) == "#" ) - { - nNewNode.id = sAttr.substr(1, sAttr.length-1); - } - else - { - nNewNode.className = sAttr; - } - - i += j; /* Move along the position array */ - } - - insert.append( nNewNode ); - insert = $(nNewNode); - } - else if ( cOption == '>' ) - { - /* End container div */ - insert = insert.parent(); - } - // @todo Move options into their own plugins? - else if ( cOption == 'l' && features.bPaginate && features.bLengthChange ) - { - /* Length */ - featureNode = _fnFeatureHtmlLength( oSettings ); - } - else if ( cOption == 'f' && features.bFilter ) - { - /* Filter */ - featureNode = _fnFeatureHtmlFilter( oSettings ); - } - else if ( cOption == 'r' && features.bProcessing ) - { - /* pRocessing */ - featureNode = _fnFeatureHtmlProcessing( oSettings ); - } - else if ( cOption == 't' ) - { - /* Table */ - featureNode = _fnFeatureHtmlTable( oSettings ); - } - else if ( cOption == 'i' && features.bInfo ) - { - /* Info */ - featureNode = _fnFeatureHtmlInfo( oSettings ); - } - else if ( cOption == 'p' && features.bPaginate ) - { - /* Pagination */ - featureNode = _fnFeatureHtmlPaginate( oSettings ); - } - else if ( DataTable.ext.feature.length !== 0 ) - { - /* Plug-in features */ - var aoFeatures = DataTable.ext.feature; - for ( var k=0, kLen=aoFeatures.length ; k<kLen ; k++ ) - { - if ( cOption == aoFeatures[k].cFeature ) - { - featureNode = aoFeatures[k].fnInit( oSettings ); - break; - } - } - } - - /* Add to the 2D features array */ - if ( featureNode ) - { - var aanFeatures = oSettings.aanFeatures; - - if ( ! aanFeatures[cOption] ) - { - aanFeatures[cOption] = []; - } - - aanFeatures[cOption].push( featureNode ); - insert.append( featureNode ); - } - } - - /* Built our DOM structure - replace the holding div with what we want */ - holding.replaceWith( insert ); - } - - - /** - * Use the DOM source to create up an array of header cells. The idea here is to - * create a layout grid (array) of rows x columns, which contains a reference - * to the cell that that point in the grid (regardless of col/rowspan), such that - * any column / row could be removed and the new grid constructed - * @param array {object} aLayout Array to store the calculated layout in - * @param {node} nThead The header/footer element for the table - * @memberof DataTable#oApi - */ - function _fnDetectHeader ( aLayout, nThead ) - { - var nTrs = $(nThead).children('tr'); - var nTr, nCell; - var i, k, l, iLen, jLen, iColShifted, iColumn, iColspan, iRowspan; - var bUnique; - var fnShiftCol = function ( a, i, j ) { - var k = a[i]; - while ( k[j] ) { - j++; - } - return j; - }; - - aLayout.splice( 0, aLayout.length ); - - /* We know how many rows there are in the layout - so prep it */ - for ( i=0, iLen=nTrs.length ; i<iLen ; i++ ) - { - aLayout.push( [] ); - } - - /* Calculate a layout array */ - for ( i=0, iLen=nTrs.length ; i<iLen ; i++ ) - { - nTr = nTrs[i]; - iColumn = 0; - - /* For every cell in the row... */ - nCell = nTr.firstChild; - while ( nCell ) { - if ( nCell.nodeName.toUpperCase() == "TD" || - nCell.nodeName.toUpperCase() == "TH" ) - { - /* Get the col and rowspan attributes from the DOM and sanitise them */ - iColspan = nCell.getAttribute('colspan') * 1; - iRowspan = nCell.getAttribute('rowspan') * 1; - iColspan = (!iColspan || iColspan===0 || iColspan===1) ? 1 : iColspan; - iRowspan = (!iRowspan || iRowspan===0 || iRowspan===1) ? 1 : iRowspan; - - /* There might be colspan cells already in this row, so shift our target - * accordingly - */ - iColShifted = fnShiftCol( aLayout, i, iColumn ); - - /* Cache calculation for unique columns */ - bUnique = iColspan === 1 ? true : false; - - /* If there is col / rowspan, copy the information into the layout grid */ - for ( l=0 ; l<iColspan ; l++ ) - { - for ( k=0 ; k<iRowspan ; k++ ) - { - aLayout[i+k][iColShifted+l] = { - "cell": nCell, - "unique": bUnique - }; - aLayout[i+k].nTr = nTr; - } - } - } - nCell = nCell.nextSibling; - } - } - } - - - /** - * Get an array of unique th elements, one for each column - * @param {object} oSettings dataTables settings object - * @param {node} nHeader automatically detect the layout from this node - optional - * @param {array} aLayout thead/tfoot layout from _fnDetectHeader - optional - * @returns array {node} aReturn list of unique th's - * @memberof DataTable#oApi - */ - function _fnGetUniqueThs ( oSettings, nHeader, aLayout ) - { - var aReturn = []; - if ( !aLayout ) - { - aLayout = oSettings.aoHeader; - if ( nHeader ) - { - aLayout = []; - _fnDetectHeader( aLayout, nHeader ); - } - } - - for ( var i=0, iLen=aLayout.length ; i<iLen ; i++ ) - { - for ( var j=0, jLen=aLayout[i].length ; j<jLen ; j++ ) - { - if ( aLayout[i][j].unique && - (!aReturn[j] || !oSettings.bSortCellsTop) ) - { - aReturn[j] = aLayout[i][j].cell; - } - } - } - - return aReturn; - } - - - - /** - * Create an Ajax call based on the table's settings, taking into account that - * parameters can have multiple forms, and backwards compatibility. - * - * @param {object} oSettings dataTables settings object - * @param {array} data Data to send to the server, required by - * DataTables - may be augmented by developer callbacks - * @param {function} fn Callback function to run when data is obtained - */ - function _fnBuildAjax( oSettings, data, fn ) - { - // Compatibility with 1.9-, allow fnServerData and event to manipulate - _fnCallbackFire( oSettings, 'aoServerParams', 'serverParams', [data] ); - - // Convert to object based for 1.10+ if using the old array scheme which can - // come from server-side processing or serverParams - if ( data && $.isArray(data) ) { - var tmp = {}; - var rbracket = /(.*?)\[\]$/; - - $.each( data, function (key, val) { - var match = val.name.match(rbracket); - - if ( match ) { - // Support for arrays - var name = match[0]; - - if ( ! tmp[ name ] ) { - tmp[ name ] = []; - } - tmp[ name ].push( val.value ); - } - else { - tmp[val.name] = val.value; - } - } ); - data = tmp; - } - - var ajaxData; - var ajax = oSettings.ajax; - var instance = oSettings.oInstance; - - if ( $.isPlainObject( ajax ) && ajax.data ) - { - ajaxData = ajax.data; - - var newData = $.isFunction( ajaxData ) ? - ajaxData( data ) : // fn can manipulate data or return an object - ajaxData; // object or array to merge - - // If the function returned an object, use that alone - data = $.isFunction( ajaxData ) && newData ? - newData : - $.extend( true, data, newData ); - - // Remove the data property as we've resolved it already and don't want - // jQuery to do it again (it is restored at the end of the function) - delete ajax.data; - } - - var baseAjax = { - "data": data, - "success": function (json) { - var error = json.error || json.sError; - if ( error ) { - oSettings.oApi._fnLog( oSettings, 0, error ); - } - - oSettings.json = json; - _fnCallbackFire( oSettings, null, 'xhr', [oSettings, json] ); - fn( json ); - }, - "dataType": "json", - "cache": false, - "type": oSettings.sServerMethod, - "error": function (xhr, error, thrown) { - var log = oSettings.oApi._fnLog; - - if ( error == "parsererror" ) { - log( oSettings, 0, 'Invalid JSON response', 1 ); - } - else if ( xhr.readyState === 4 ) { - log( oSettings, 0, 'Ajax error', 7 ); - } - - _fnProcessingDisplay( oSettings, false ); - } - }; - - // Store the data submitted for the API - oSettings.oAjaxData = data; - - // Allow plug-ins and external processes to modify the data - _fnCallbackFire( oSettings, null, 'preXhr', [oSettings, data] ); - - if ( oSettings.fnServerData ) - { - // DataTables 1.9- compatibility - oSettings.fnServerData.call( instance, - oSettings.sAjaxSource, - $.map( data, function (val, key) { // Need to convert back to 1.9 trad format - return { name: key, value: val }; - } ), - fn, - oSettings - ); - } - else if ( oSettings.sAjaxSource || typeof ajax === 'string' ) - { - // DataTables 1.9- compatibility - oSettings.jqXHR = $.ajax( $.extend( baseAjax, { - url: ajax || oSettings.sAjaxSource - } ) ); - } - else if ( $.isFunction( ajax ) ) - { - // Is a function - let the caller define what needs to be done - oSettings.jqXHR = ajax.call( instance, data, fn, oSettings ); - } - else - { - // Object to extend the base settings - oSettings.jqXHR = $.ajax( $.extend( baseAjax, ajax ) ); - - // Restore for next time around - ajax.data = ajaxData; - } - } - - - /** - * Update the table using an Ajax call - * @param {object} settings dataTables settings object - * @returns {boolean} Block the table drawing or not - * @memberof DataTable#oApi - */ - function _fnAjaxUpdate( settings ) - { - if ( settings.bAjaxDataGet ) { - settings.iDraw++; - _fnProcessingDisplay( settings, true ); - - _fnBuildAjax( - settings, - _fnAjaxParameters( settings ), - function(json) { - _fnAjaxUpdateDraw( settings, json ); - } - ); - - return false; - } - return true; - } - - - /** - * Build up the parameters in an object needed for a server-side processing - * request. Note that this is basically done twice, is different ways - a modern - * method which is used by default in DataTables 1.10 which uses objects and - * arrays, or the 1.9- method with is name / value pairs. 1.9 method is used if - * the sAjaxSource option is used in the initialisation, or the legacyAjax - * option is set. - * @param {object} oSettings dataTables settings object - * @returns {bool} block the table drawing or not - * @memberof DataTable#oApi - */ - function _fnAjaxParameters( settings ) - { - var - columns = settings.aoColumns, - columnCount = columns.length, - features = settings.oFeatures, - preSearch = settings.oPreviousSearch, - preColSearch = settings.aoPreSearchCols, - i, data = [], dataProp, column, columnSearch, - sort = _fnSortFlatten( settings ), - displayStart = settings._iDisplayStart, - displayLength = features.bPaginate !== false ? - settings._iDisplayLength : - -1; - - var param = function ( name, value ) { - data.push( { 'name': name, 'value': value } ); - }; - - // DataTables 1.9- compatible method - param( 'sEcho', settings.iDraw ); - param( 'iColumns', columnCount ); - param( 'sColumns', _pluck( columns, 'sName' ).join(',') ); - param( 'iDisplayStart', displayStart ); - param( 'iDisplayLength', displayLength ); - - // DataTables 1.10+ method - var d = { - draw: settings.iDraw, - columns: [], - order: [], - start: displayStart, - length: displayLength, - search: { - value: preSearch.sSearch, - regex: preSearch.bRegex - } - }; - - for ( i=0 ; i<columnCount ; i++ ) { - column = columns[i]; - columnSearch = preColSearch[i]; - dataProp = typeof column.mData=="function" ? 'function' : column.mData ; - - d.columns.push( { - data: dataProp, - name: column.sName, - searchable: column.bSearchable, - orderable: column.bSortable, - search: { - value: columnSearch.sSearch, - regex: columnSearch.bRegex - } - } ); - - param( "mDataProp_"+i, dataProp ); - - if ( features.bFilter ) { - param( 'sSearch_'+i, columnSearch.sSearch ); - param( 'bRegex_'+i, columnSearch.bRegex ); - param( 'bSearchable_'+i, column.bSearchable ); - } - - if ( features.bSort ) { - param( 'bSortable_'+i, column.bSortable ); - } - } - - if ( features.bFilter ) { - param( 'sSearch', preSearch.sSearch ); - param( 'bRegex', preSearch.bRegex ); - } - - if ( features.bSort ) { - $.each( sort, function ( i, val ) { - d.order.push( { column: val.col, dir: val.dir } ); - - param( 'iSortCol_'+i, val.col ); - param( 'sSortDir_'+i, val.dir ); - } ); - - param( 'iSortingCols', sort.length ); - } - - // If the legacy.ajax parameter is null, then we automatically decide which - // form to use, based on sAjaxSource - var legacy = DataTable.ext.legacy.ajax; - if ( legacy === null ) { - return settings.sAjaxSource ? data : d; - } - - // Otherwise, if legacy has been specified then we use that to decide on the - // form - return legacy ? data : d; - } - - - /** - * Data the data from the server (nuking the old) and redraw the table - * @param {object} oSettings dataTables settings object - * @param {object} json json data return from the server. - * @param {string} json.sEcho Tracking flag for DataTables to match requests - * @param {int} json.iTotalRecords Number of records in the data set, not accounting for filtering - * @param {int} json.iTotalDisplayRecords Number of records in the data set, accounting for filtering - * @param {array} json.aaData The data to display on this page - * @param {string} [json.sColumns] Column ordering (sName, comma separated) - * @memberof DataTable#oApi - */ - function _fnAjaxUpdateDraw ( settings, json ) - { - // v1.10 uses camelCase variables, while 1.9 uses Hungarian notation. - // Support both - var compat = function ( old, modern ) { - return json[old] !== undefined ? json[old] : json[modern]; - }; - - var draw = compat( 'sEcho', 'draw' ); - var recordsTotal = compat( 'iTotalRecords', 'recordsTotal' ); - var recordsFiltered = compat( 'iTotalDisplayRecords', 'recordsFiltered' ); - - if ( draw ) { - // Protect against out of sequence returns - if ( draw*1 < settings.iDraw ) { - return; - } - settings.iDraw = draw * 1; - } - - _fnClearTable( settings ); - settings._iRecordsTotal = parseInt(recordsTotal, 10); - settings._iRecordsDisplay = parseInt(recordsFiltered, 10); - - var data = _fnAjaxDataSrc( settings, json ); - for ( var i=0, ien=data.length ; i<ien ; i++ ) { - _fnAddData( settings, data[i] ); - } - settings.aiDisplay = settings.aiDisplayMaster.slice(); - - settings.bAjaxDataGet = false; - _fnDraw( settings ); - - if ( ! settings._bInitComplete ) { - _fnInitComplete( settings, json ); - } - - settings.bAjaxDataGet = true; - _fnProcessingDisplay( settings, false ); - } - - - /** - * Get the data from the JSON data source to use for drawing a table. Using - * `_fnGetObjectDataFn` allows the data to be sourced from a property of the - * source object, or from a processing function. - * @param {object} oSettings dataTables settings object - * @param {object} json Data source object / array from the server - * @return {array} Array of data to use - */ - function _fnAjaxDataSrc ( oSettings, json ) - { - var dataSrc = $.isPlainObject( oSettings.ajax ) && oSettings.ajax.dataSrc !== undefined ? - oSettings.ajax.dataSrc : - oSettings.sAjaxDataProp; // Compatibility with 1.9-. - - // Compatibility with 1.9-. In order to read from aaData, check if the - // default has been changed, if not, check for aaData - if ( dataSrc === 'data' ) { - return json.aaData || json[dataSrc]; - } - - return dataSrc !== "" ? - _fnGetObjectDataFn( dataSrc )( json ) : - json; - } - - - /** - * Generate the node required for filtering text - * @returns {node} Filter control element - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnFeatureHtmlFilter ( settings ) - { - var classes = settings.oClasses; - var tableId = settings.sTableId; - var language = settings.oLanguage; - var previousSearch = settings.oPreviousSearch; - var features = settings.aanFeatures; - var input = '<input type="search" class="'+classes.sFilterInput+'"/>'; - - var str = language.sSearch; - str = str.match(/_INPUT_/) ? - str.replace('_INPUT_', input) : - str+input; - - var filter = $('<div/>', { - 'id': ! features.f ? tableId+'_filter' : null, - 'class': classes.sFilter - } ) - .append( $('<label/>' ).append( str ) ); - - var searchFn = function() { - /* Update all other filter input elements for the new display */ - var n = features.f; - var val = !this.value ? "" : this.value; // mental IE8 fix :-( - - /* Now do the filter */ - if ( val != previousSearch.sSearch ) { - _fnFilterComplete( settings, { - "sSearch": val, - "bRegex": previousSearch.bRegex, - "bSmart": previousSearch.bSmart , - "bCaseInsensitive": previousSearch.bCaseInsensitive - } ); - - // Need to redraw, without resorting - settings._iDisplayStart = 0; - _fnDraw( settings ); - } - }; - - var searchDelay = settings.searchDelay !== null ? - settings.searchDelay : - _fnDataSource( settings ) === 'ssp' ? - 400 : - 0; - - var jqFilter = $('input', filter) - .val( previousSearch.sSearch ) - .attr( 'placeholder', language.sSearchPlaceholder ) - .bind( - 'keyup.DT search.DT input.DT paste.DT cut.DT', - searchDelay ? - _fnThrottle( searchFn, searchDelay ) : - searchFn - ) - .bind( 'keypress.DT', function(e) { - /* Prevent form submission */ - if ( e.keyCode == 13 ) { - return false; - } - } ) - .attr('aria-controls', tableId); - - // Update the input elements whenever the table is filtered - $(settings.nTable).on( 'search.dt.DT', function ( ev, s ) { - if ( settings === s ) { - // IE9 throws an 'unknown error' if document.activeElement is used - // inside an iframe or frame... - try { - if ( jqFilter[0] !== document.activeElement ) { - jqFilter.val( previousSearch.sSearch ); - } - } - catch ( e ) {} - } - } ); - - return filter[0]; - } - - - /** - * Filter the table using both the global filter and column based filtering - * @param {object} oSettings dataTables settings object - * @param {object} oSearch search information - * @param {int} [iForce] force a research of the master array (1) or not (undefined or 0) - * @memberof DataTable#oApi - */ - function _fnFilterComplete ( oSettings, oInput, iForce ) - { - var oPrevSearch = oSettings.oPreviousSearch; - var aoPrevSearch = oSettings.aoPreSearchCols; - var fnSaveFilter = function ( oFilter ) { - /* Save the filtering values */ - oPrevSearch.sSearch = oFilter.sSearch; - oPrevSearch.bRegex = oFilter.bRegex; - oPrevSearch.bSmart = oFilter.bSmart; - oPrevSearch.bCaseInsensitive = oFilter.bCaseInsensitive; - }; - var fnRegex = function ( o ) { - // Backwards compatibility with the bEscapeRegex option - return o.bEscapeRegex !== undefined ? !o.bEscapeRegex : o.bRegex; - }; - - // Resolve any column types that are unknown due to addition or invalidation - // @todo As per sort - can this be moved into an event handler? - _fnColumnTypes( oSettings ); - - /* In server-side processing all filtering is done by the server, so no point hanging around here */ - if ( _fnDataSource( oSettings ) != 'ssp' ) - { - /* Global filter */ - _fnFilter( oSettings, oInput.sSearch, iForce, fnRegex(oInput), oInput.bSmart, oInput.bCaseInsensitive ); - fnSaveFilter( oInput ); - - /* Now do the individual column filter */ - for ( var i=0 ; i<aoPrevSearch.length ; i++ ) - { - _fnFilterColumn( oSettings, aoPrevSearch[i].sSearch, i, fnRegex(aoPrevSearch[i]), - aoPrevSearch[i].bSmart, aoPrevSearch[i].bCaseInsensitive ); - } - - /* Custom filtering */ - _fnFilterCustom( oSettings ); - } - else - { - fnSaveFilter( oInput ); - } - - /* Tell the draw function we have been filtering */ - oSettings.bFiltered = true; - _fnCallbackFire( oSettings, null, 'search', [oSettings] ); - } - - - /** - * Apply custom filtering functions - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnFilterCustom( settings ) - { - var filters = DataTable.ext.search; - var displayRows = settings.aiDisplay; - var row, rowIdx; - - for ( var i=0, ien=filters.length ; i<ien ; i++ ) { - var rows = []; - - // Loop over each row and see if it should be included - for ( var j=0, jen=displayRows.length ; j<jen ; j++ ) { - rowIdx = displayRows[ j ]; - row = settings.aoData[ rowIdx ]; - - if ( filters[i]( settings, row._aFilterData, rowIdx, row._aData, j ) ) { - rows.push( rowIdx ); - } - } - - // So the array reference doesn't break set the results into the - // existing array - displayRows.length = 0; - displayRows.push.apply( displayRows, rows ); - } - } - - - /** - * Filter the table on a per-column basis - * @param {object} oSettings dataTables settings object - * @param {string} sInput string to filter on - * @param {int} iColumn column to filter - * @param {bool} bRegex treat search string as a regular expression or not - * @param {bool} bSmart use smart filtering or not - * @param {bool} bCaseInsensitive Do case insenstive matching or not - * @memberof DataTable#oApi - */ - function _fnFilterColumn ( settings, searchStr, colIdx, regex, smart, caseInsensitive ) - { - if ( searchStr === '' ) { - return; - } - - var data; - var display = settings.aiDisplay; - var rpSearch = _fnFilterCreateSearch( searchStr, regex, smart, caseInsensitive ); - - for ( var i=display.length-1 ; i>=0 ; i-- ) { - data = settings.aoData[ display[i] ]._aFilterData[ colIdx ]; - - if ( ! rpSearch.test( data ) ) { - display.splice( i, 1 ); - } - } - } - - - /** - * Filter the data table based on user input and draw the table - * @param {object} settings dataTables settings object - * @param {string} input string to filter on - * @param {int} force optional - force a research of the master array (1) or not (undefined or 0) - * @param {bool} regex treat as a regular expression or not - * @param {bool} smart perform smart filtering or not - * @param {bool} caseInsensitive Do case insenstive matching or not - * @memberof DataTable#oApi - */ - function _fnFilter( settings, input, force, regex, smart, caseInsensitive ) - { - var rpSearch = _fnFilterCreateSearch( input, regex, smart, caseInsensitive ); - var prevSearch = settings.oPreviousSearch.sSearch; - var displayMaster = settings.aiDisplayMaster; - var display, invalidated, i; - - // Need to take account of custom filtering functions - always filter - if ( DataTable.ext.search.length !== 0 ) { - force = true; - } - - // Check if any of the rows were invalidated - invalidated = _fnFilterData( settings ); - - // If the input is blank - we just want the full data set - if ( input.length <= 0 ) { - settings.aiDisplay = displayMaster.slice(); - } - else { - // New search - start from the master array - if ( invalidated || - force || - prevSearch.length > input.length || - input.indexOf(prevSearch) !== 0 || - settings.bSorted // On resort, the display master needs to be - // re-filtered since indexes will have changed - ) { - settings.aiDisplay = displayMaster.slice(); - } - - // Search the display array - display = settings.aiDisplay; - - for ( i=display.length-1 ; i>=0 ; i-- ) { - if ( ! rpSearch.test( settings.aoData[ display[i] ]._sFilterRow ) ) { - display.splice( i, 1 ); - } - } - } - } - - - /** - * Build a regular expression object suitable for searching a table - * @param {string} sSearch string to search for - * @param {bool} bRegex treat as a regular expression or not - * @param {bool} bSmart perform smart filtering or not - * @param {bool} bCaseInsensitive Do case insensitive matching or not - * @returns {RegExp} constructed object - * @memberof DataTable#oApi - */ - function _fnFilterCreateSearch( search, regex, smart, caseInsensitive ) - { - search = regex ? - search : - _fnEscapeRegex( search ); - - if ( smart ) { - /* For smart filtering we want to allow the search to work regardless of - * word order. We also want double quoted text to be preserved, so word - * order is important - a la google. So this is what we want to - * generate: - * - * ^(?=.*?\bone\b)(?=.*?\btwo three\b)(?=.*?\bfour\b).*$ - */ - var a = $.map( search.match( /"[^"]+"|[^ ]+/g ) || '', function ( word ) { - if ( word.charAt(0) === '"' ) { - var m = word.match( /^"(.*)"$/ ); - word = m ? m[1] : word; - } - - return word.replace('"', ''); - } ); - - search = '^(?=.*?'+a.join( ')(?=.*?' )+').*$'; - } - - return new RegExp( search, caseInsensitive ? 'i' : '' ); - } - - - /** - * Escape a string such that it can be used in a regular expression - * @param {string} sVal string to escape - * @returns {string} escaped string - * @memberof DataTable#oApi - */ - function _fnEscapeRegex ( sVal ) - { - return sVal.replace( _re_escape_regex, '\\$1' ); - } - - - - var __filter_div = $('<div>')[0]; - var __filter_div_textContent = __filter_div.textContent !== undefined; - - // Update the filtering data for each row if needed (by invalidation or first run) - function _fnFilterData ( settings ) - { - var columns = settings.aoColumns; - var column; - var i, j, ien, jen, filterData, cellData, row; - var fomatters = DataTable.ext.type.search; - var wasInvalidated = false; - - for ( i=0, ien=settings.aoData.length ; i<ien ; i++ ) { - row = settings.aoData[i]; - - if ( ! row._aFilterData ) { - filterData = []; - - for ( j=0, jen=columns.length ; j<jen ; j++ ) { - column = columns[j]; - - if ( column.bSearchable ) { - cellData = _fnGetCellData( settings, i, j, 'filter' ); - - if ( fomatters[ column.sType ] ) { - cellData = fomatters[ column.sType ]( cellData ); - } - - // Search in DataTables 1.10 is string based. In 1.11 this - // should be altered to also allow strict type checking. - if ( cellData === null ) { - cellData = ''; - } - - if ( typeof cellData !== 'string' && cellData.toString ) { - cellData = cellData.toString(); - } - } - else { - cellData = ''; - } - - // If it looks like there is an HTML entity in the string, - // attempt to decode it so sorting works as expected. Note that - // we could use a single line of jQuery to do this, but the DOM - // method used here is much faster http://jsperf.com/html-decode - if ( cellData.indexOf && cellData.indexOf('&') !== -1 ) { - __filter_div.innerHTML = cellData; - cellData = __filter_div_textContent ? - __filter_div.textContent : - __filter_div.innerText; - } - - if ( cellData.replace ) { - cellData = cellData.replace(/[\r\n]/g, ''); - } - - filterData.push( cellData ); - } - - row._aFilterData = filterData; - row._sFilterRow = filterData.join(' '); - wasInvalidated = true; - } - } - - return wasInvalidated; - } - - - /** - * Convert from the internal Hungarian notation to camelCase for external - * interaction - * @param {object} obj Object to convert - * @returns {object} Inverted object - * @memberof DataTable#oApi - */ - function _fnSearchToCamel ( obj ) - { - return { - search: obj.sSearch, - smart: obj.bSmart, - regex: obj.bRegex, - caseInsensitive: obj.bCaseInsensitive - }; - } - - - - /** - * Convert from camelCase notation to the internal Hungarian. We could use the - * Hungarian convert function here, but this is cleaner - * @param {object} obj Object to convert - * @returns {object} Inverted object - * @memberof DataTable#oApi - */ - function _fnSearchToHung ( obj ) - { - return { - sSearch: obj.search, - bSmart: obj.smart, - bRegex: obj.regex, - bCaseInsensitive: obj.caseInsensitive - }; - } - - /** - * Generate the node required for the info display - * @param {object} oSettings dataTables settings object - * @returns {node} Information element - * @memberof DataTable#oApi - */ - function _fnFeatureHtmlInfo ( settings ) - { - var - tid = settings.sTableId, - nodes = settings.aanFeatures.i, - n = $('<div/>', { - 'class': settings.oClasses.sInfo, - 'id': ! nodes ? tid+'_info' : null - } ); - - if ( ! nodes ) { - // Update display on each draw - settings.aoDrawCallback.push( { - "fn": _fnUpdateInfo, - "sName": "information" - } ); - - n - .attr( 'role', 'status' ) - .attr( 'aria-live', 'polite' ); - - // Table is described by our info div - $(settings.nTable).attr( 'aria-describedby', tid+'_info' ); - } - - return n[0]; - } - - - /** - * Update the information elements in the display - * @param {object} settings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnUpdateInfo ( settings ) - { - /* Show information about the table */ - var nodes = settings.aanFeatures.i; - if ( nodes.length === 0 ) { - return; - } - - var - lang = settings.oLanguage, - start = settings._iDisplayStart+1, - end = settings.fnDisplayEnd(), - max = settings.fnRecordsTotal(), - total = settings.fnRecordsDisplay(), - out = total ? - lang.sInfo : - lang.sInfoEmpty; - - if ( total !== max ) { - /* Record set after filtering */ - out += ' ' + lang.sInfoFiltered; - } - - // Convert the macros - out += lang.sInfoPostFix; - out = _fnInfoMacros( settings, out ); - - var callback = lang.fnInfoCallback; - if ( callback !== null ) { - out = callback.call( settings.oInstance, - settings, start, end, max, total, out - ); - } - - $(nodes).html( out ); - } - - - function _fnInfoMacros ( settings, str ) - { - // When infinite scrolling, we are always starting at 1. _iDisplayStart is used only - // internally - var - formatter = settings.fnFormatNumber, - start = settings._iDisplayStart+1, - len = settings._iDisplayLength, - vis = settings.fnRecordsDisplay(), - all = len === -1; - - return str. - replace(/_START_/g, formatter.call( settings, start ) ). - replace(/_END_/g, formatter.call( settings, settings.fnDisplayEnd() ) ). - replace(/_MAX_/g, formatter.call( settings, settings.fnRecordsTotal() ) ). - replace(/_TOTAL_/g, formatter.call( settings, vis ) ). - replace(/_PAGE_/g, formatter.call( settings, all ? 1 : Math.ceil( start / len ) ) ). - replace(/_PAGES_/g, formatter.call( settings, all ? 1 : Math.ceil( vis / len ) ) ); - } - - - - /** - * Draw the table for the first time, adding all required features - * @param {object} settings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnInitialise ( settings ) - { - var i, iLen, iAjaxStart=settings.iInitDisplayStart; - var columns = settings.aoColumns, column; - var features = settings.oFeatures; - - /* Ensure that the table data is fully initialised */ - if ( ! settings.bInitialised ) { - setTimeout( function(){ _fnInitialise( settings ); }, 200 ); - return; - } - - /* Show the display HTML options */ - _fnAddOptionsHtml( settings ); - - /* Build and draw the header / footer for the table */ - _fnBuildHead( settings ); - _fnDrawHead( settings, settings.aoHeader ); - _fnDrawHead( settings, settings.aoFooter ); - - /* Okay to show that something is going on now */ - _fnProcessingDisplay( settings, true ); - - /* Calculate sizes for columns */ - if ( features.bAutoWidth ) { - _fnCalculateColumnWidths( settings ); - } - - for ( i=0, iLen=columns.length ; i<iLen ; i++ ) { - column = columns[i]; - - if ( column.sWidth ) { - column.nTh.style.width = _fnStringToCss( column.sWidth ); - } - } - - // If there is default sorting required - let's do it. The sort function - // will do the drawing for us. Otherwise we draw the table regardless of the - // Ajax source - this allows the table to look initialised for Ajax sourcing - // data (show 'loading' message possibly) - _fnReDraw( settings ); - - // Server-side processing init complete is done by _fnAjaxUpdateDraw - var dataSrc = _fnDataSource( settings ); - if ( dataSrc != 'ssp' ) { - // if there is an ajax source load the data - if ( dataSrc == 'ajax' ) { - _fnBuildAjax( settings, [], function(json) { - var aData = _fnAjaxDataSrc( settings, json ); - - // Got the data - add it to the table - for ( i=0 ; i<aData.length ; i++ ) { - _fnAddData( settings, aData[i] ); - } - - // Reset the init display for cookie saving. We've already done - // a filter, and therefore cleared it before. So we need to make - // it appear 'fresh' - settings.iInitDisplayStart = iAjaxStart; - - _fnReDraw( settings ); - - _fnProcessingDisplay( settings, false ); - _fnInitComplete( settings, json ); - }, settings ); - } - else { - _fnProcessingDisplay( settings, false ); - _fnInitComplete( settings ); - } - } - } - - - /** - * Draw the table for the first time, adding all required features - * @param {object} oSettings dataTables settings object - * @param {object} [json] JSON from the server that completed the table, if using Ajax source - * with client-side processing (optional) - * @memberof DataTable#oApi - */ - function _fnInitComplete ( settings, json ) - { - settings._bInitComplete = true; - - // On an Ajax load we now have data and therefore want to apply the column - // sizing - if ( json ) { - _fnAdjustColumnSizing( settings ); - } - - _fnCallbackFire( settings, 'aoInitComplete', 'init', [settings, json] ); - } - - - function _fnLengthChange ( settings, val ) - { - var len = parseInt( val, 10 ); - settings._iDisplayLength = len; - - _fnLengthOverflow( settings ); - - // Fire length change event - _fnCallbackFire( settings, null, 'length', [settings, len] ); - } - - - /** - * Generate the node required for user display length changing - * @param {object} settings dataTables settings object - * @returns {node} Display length feature node - * @memberof DataTable#oApi - */ - function _fnFeatureHtmlLength ( settings ) - { - var - classes = settings.oClasses, - tableId = settings.sTableId, - menu = settings.aLengthMenu, - d2 = $.isArray( menu[0] ), - lengths = d2 ? menu[0] : menu, - language = d2 ? menu[1] : menu; - - var select = $('<select/>', { - 'name': tableId+'_length', - 'aria-controls': tableId, - 'class': classes.sLengthSelect - } ); - - for ( var i=0, ien=lengths.length ; i<ien ; i++ ) { - select[0][ i ] = new Option( language[i], lengths[i] ); - } - - var div = $('<div><label/></div>').addClass( classes.sLength ); - if ( ! settings.aanFeatures.l ) { - div[0].id = tableId+'_length'; - } - - div.children().append( - settings.oLanguage.sLengthMenu.replace( '_MENU_', select[0].outerHTML ) - ); - - // Can't use `select` variable as user might provide their own and the - // reference is broken by the use of outerHTML - $('select', div) - .val( settings._iDisplayLength ) - .bind( 'change.DT', function(e) { - _fnLengthChange( settings, $(this).val() ); - _fnDraw( settings ); - } ); - - // Update node value whenever anything changes the table's length - $(settings.nTable).bind( 'length.dt.DT', function (e, s, len) { - if ( settings === s ) { - $('select', div).val( len ); - } - } ); - - return div[0]; - } - - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Note that most of the paging logic is done in - * DataTable.ext.pager - */ - - /** - * Generate the node required for default pagination - * @param {object} oSettings dataTables settings object - * @returns {node} Pagination feature node - * @memberof DataTable#oApi - */ - function _fnFeatureHtmlPaginate ( settings ) - { - var - type = settings.sPaginationType, - plugin = DataTable.ext.pager[ type ], - modern = typeof plugin === 'function', - redraw = function( settings ) { - _fnDraw( settings ); - }, - node = $('<div/>').addClass( settings.oClasses.sPaging + type )[0], - features = settings.aanFeatures; - - if ( ! modern ) { - plugin.fnInit( settings, node, redraw ); - } - - /* Add a draw callback for the pagination on first instance, to update the paging display */ - if ( ! features.p ) - { - node.id = settings.sTableId+'_paginate'; - - settings.aoDrawCallback.push( { - "fn": function( settings ) { - if ( modern ) { - var - start = settings._iDisplayStart, - len = settings._iDisplayLength, - visRecords = settings.fnRecordsDisplay(), - all = len === -1, - page = all ? 0 : Math.ceil( start / len ), - pages = all ? 1 : Math.ceil( visRecords / len ), - buttons = plugin(page, pages), - i, ien; - - for ( i=0, ien=features.p.length ; i<ien ; i++ ) { - _fnRenderer( settings, 'pageButton' )( - settings, features.p[i], i, buttons, page, pages - ); - } - } - else { - plugin.fnUpdate( settings, redraw ); - } - }, - "sName": "pagination" - } ); - } - - return node; - } - - - /** - * Alter the display settings to change the page - * @param {object} settings DataTables settings object - * @param {string|int} action Paging action to take: "first", "previous", - * "next" or "last" or page number to jump to (integer) - * @param [bool] redraw Automatically draw the update or not - * @returns {bool} true page has changed, false - no change - * @memberof DataTable#oApi - */ - function _fnPageChange ( settings, action, redraw ) - { - var - start = settings._iDisplayStart, - len = settings._iDisplayLength, - records = settings.fnRecordsDisplay(); - - if ( records === 0 || len === -1 ) - { - start = 0; - } - else if ( typeof action === "number" ) - { - start = action * len; - - if ( start > records ) - { - start = 0; - } - } - else if ( action == "first" ) - { - start = 0; - } - else if ( action == "previous" ) - { - start = len >= 0 ? - start - len : - 0; - - if ( start < 0 ) - { - start = 0; - } - } - else if ( action == "next" ) - { - if ( start + len < records ) - { - start += len; - } - } - else if ( action == "last" ) - { - start = Math.floor( (records-1) / len) * len; - } - else - { - _fnLog( settings, 0, "Unknown paging action: "+action, 5 ); - } - - var changed = settings._iDisplayStart !== start; - settings._iDisplayStart = start; - - if ( changed ) { - _fnCallbackFire( settings, null, 'page', [settings] ); - - if ( redraw ) { - _fnDraw( settings ); - } - } - - return changed; - } - - - - /** - * Generate the node required for the processing node - * @param {object} settings dataTables settings object - * @returns {node} Processing element - * @memberof DataTable#oApi - */ - function _fnFeatureHtmlProcessing ( settings ) - { - return $('<div/>', { - 'id': ! settings.aanFeatures.r ? settings.sTableId+'_processing' : null, - 'class': settings.oClasses.sProcessing - } ) - .html( settings.oLanguage.sProcessing ) - .insertBefore( settings.nTable )[0]; - } - - - /** - * Display or hide the processing indicator - * @param {object} settings dataTables settings object - * @param {bool} show Show the processing indicator (true) or not (false) - * @memberof DataTable#oApi - */ - function _fnProcessingDisplay ( settings, show ) - { - if ( settings.oFeatures.bProcessing ) { - $(settings.aanFeatures.r).css( 'display', show ? 'block' : 'none' ); - } - - _fnCallbackFire( settings, null, 'processing', [settings, show] ); - } - - /** - * Add any control elements for the table - specifically scrolling - * @param {object} settings dataTables settings object - * @returns {node} Node to add to the DOM - * @memberof DataTable#oApi - */ - function _fnFeatureHtmlTable ( settings ) - { - var table = $(settings.nTable); - - // Add the ARIA grid role to the table - table.attr( 'role', 'grid' ); - - // Scrolling from here on in - var scroll = settings.oScroll; - - if ( scroll.sX === '' && scroll.sY === '' ) { - return settings.nTable; - } - - var scrollX = scroll.sX; - var scrollY = scroll.sY; - var classes = settings.oClasses; - var caption = table.children('caption'); - var captionSide = caption.length ? caption[0]._captionSide : null; - var headerClone = $( table[0].cloneNode(false) ); - var footerClone = $( table[0].cloneNode(false) ); - var footer = table.children('tfoot'); - var _div = '<div/>'; - var size = function ( s ) { - return !s ? null : _fnStringToCss( s ); - }; - - // This is fairly messy, but with x scrolling enabled, if the table has a - // width attribute, regardless of any width applied using the column width - // options, the browser will shrink or grow the table as needed to fit into - // that 100%. That would make the width options useless. So we remove it. - // This is okay, under the assumption that width:100% is applied to the - // table in CSS (it is in the default stylesheet) which will set the table - // width as appropriate (the attribute and css behave differently...) - if ( scroll.sX && table.attr('width') === '100%' ) { - table.removeAttr('width'); - } - - if ( ! footer.length ) { - footer = null; - } - - /* - * The HTML structure that we want to generate in this function is: - * div - scroller - * div - scroll head - * div - scroll head inner - * table - scroll head table - * thead - thead - * div - scroll body - * table - table (master table) - * thead - thead clone for sizing - * tbody - tbody - * div - scroll foot - * div - scroll foot inner - * table - scroll foot table - * tfoot - tfoot - */ - var scroller = $( _div, { 'class': classes.sScrollWrapper } ) - .append( - $(_div, { 'class': classes.sScrollHead } ) - .css( { - overflow: 'hidden', - position: 'relative', - border: 0, - width: scrollX ? size(scrollX) : '100%' - } ) - .append( - $(_div, { 'class': classes.sScrollHeadInner } ) - .css( { - 'box-sizing': 'content-box', - width: scroll.sXInner || '100%' - } ) - .append( - headerClone - .removeAttr('id') - .css( 'margin-left', 0 ) - .append( captionSide === 'top' ? caption : null ) - .append( - table.children('thead') - ) - ) - ) - ) - .append( - $(_div, { 'class': classes.sScrollBody } ) - .css( { - overflow: 'auto', - height: size( scrollY ), - width: size( scrollX ) - } ) - .append( table ) - ); - - if ( footer ) { - scroller.append( - $(_div, { 'class': classes.sScrollFoot } ) - .css( { - overflow: 'hidden', - border: 0, - width: scrollX ? size(scrollX) : '100%' - } ) - .append( - $(_div, { 'class': classes.sScrollFootInner } ) - .append( - footerClone - .removeAttr('id') - .css( 'margin-left', 0 ) - .append( captionSide === 'bottom' ? caption : null ) - .append( - table.children('tfoot') - ) - ) - ) - ); - } - - var children = scroller.children(); - var scrollHead = children[0]; - var scrollBody = children[1]; - var scrollFoot = footer ? children[2] : null; - - // When the body is scrolled, then we also want to scroll the headers - if ( scrollX ) { - $(scrollBody).scroll( function (e) { - var scrollLeft = this.scrollLeft; - - scrollHead.scrollLeft = scrollLeft; - - if ( footer ) { - scrollFoot.scrollLeft = scrollLeft; - } - } ); - } - - settings.nScrollHead = scrollHead; - settings.nScrollBody = scrollBody; - settings.nScrollFoot = scrollFoot; - - // On redraw - align columns - settings.aoDrawCallback.push( { - "fn": _fnScrollDraw, - "sName": "scrolling" - } ); - - return scroller[0]; - } - - - - /** - * Update the header, footer and body tables for resizing - i.e. column - * alignment. - * - * Welcome to the most horrible function DataTables. The process that this - * function follows is basically: - * 1. Re-create the table inside the scrolling div - * 2. Take live measurements from the DOM - * 3. Apply the measurements to align the columns - * 4. Clean up - * - * @param {object} settings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnScrollDraw ( settings ) - { - // Given that this is such a monster function, a lot of variables are use - // to try and keep the minimised size as small as possible - var - scroll = settings.oScroll, - scrollX = scroll.sX, - scrollXInner = scroll.sXInner, - scrollY = scroll.sY, - barWidth = scroll.iBarWidth, - divHeader = $(settings.nScrollHead), - divHeaderStyle = divHeader[0].style, - divHeaderInner = divHeader.children('div'), - divHeaderInnerStyle = divHeaderInner[0].style, - divHeaderTable = divHeaderInner.children('table'), - divBodyEl = settings.nScrollBody, - divBody = $(divBodyEl), - divBodyStyle = divBodyEl.style, - divFooter = $(settings.nScrollFoot), - divFooterInner = divFooter.children('div'), - divFooterTable = divFooterInner.children('table'), - header = $(settings.nTHead), - table = $(settings.nTable), - tableEl = table[0], - tableStyle = tableEl.style, - footer = settings.nTFoot ? $(settings.nTFoot) : null, - browser = settings.oBrowser, - ie67 = browser.bScrollOversize, - headerTrgEls, footerTrgEls, - headerSrcEls, footerSrcEls, - headerCopy, footerCopy, - headerWidths=[], footerWidths=[], - headerContent=[], - idx, correction, sanityWidth, - zeroOut = function(nSizer) { - var style = nSizer.style; - style.paddingTop = "0"; - style.paddingBottom = "0"; - style.borderTopWidth = "0"; - style.borderBottomWidth = "0"; - style.height = 0; - }; - - /* - * 1. Re-create the table inside the scrolling div - */ - - // Remove the old minimised thead and tfoot elements in the inner table - table.children('thead, tfoot').remove(); - - // Clone the current header and footer elements and then place it into the inner table - headerCopy = header.clone().prependTo( table ); - headerTrgEls = header.find('tr'); // original header is in its own table - headerSrcEls = headerCopy.find('tr'); - headerCopy.find('th, td').removeAttr('tabindex'); - - if ( footer ) { - footerCopy = footer.clone().prependTo( table ); - footerTrgEls = footer.find('tr'); // the original tfoot is in its own table and must be sized - footerSrcEls = footerCopy.find('tr'); - } - - - /* - * 2. Take live measurements from the DOM - do not alter the DOM itself! - */ - - // Remove old sizing and apply the calculated column widths - // Get the unique column headers in the newly created (cloned) header. We want to apply the - // calculated sizes to this header - if ( ! scrollX ) - { - divBodyStyle.width = '100%'; - divHeader[0].style.width = '100%'; - } - - $.each( _fnGetUniqueThs( settings, headerCopy ), function ( i, el ) { - idx = _fnVisibleToColumnIndex( settings, i ); - el.style.width = settings.aoColumns[idx].sWidth; - } ); - - if ( footer ) { - _fnApplyToChildren( function(n) { - n.style.width = ""; - }, footerSrcEls ); - } - - // If scroll collapse is enabled, when we put the headers back into the body for sizing, we - // will end up forcing the scrollbar to appear, making our measurements wrong for when we - // then hide it (end of this function), so add the header height to the body scroller. - if ( scroll.bCollapse && scrollY !== "" ) { - divBodyStyle.height = (divBody[0].offsetHeight + header[0].offsetHeight)+"px"; - } - - // Size the table as a whole - sanityWidth = table.outerWidth(); - if ( scrollX === "" ) { - // No x scrolling - tableStyle.width = "100%"; - - // IE7 will make the width of the table when 100% include the scrollbar - // - which is shouldn't. When there is a scrollbar we need to take this - // into account. - if ( ie67 && (table.find('tbody').height() > divBodyEl.offsetHeight || - divBody.css('overflow-y') == "scroll") - ) { - tableStyle.width = _fnStringToCss( table.outerWidth() - barWidth); - } - } - else - { - // x scrolling - if ( scrollXInner !== "" ) { - // x scroll inner has been given - use it - tableStyle.width = _fnStringToCss(scrollXInner); - } - else if ( sanityWidth == divBody.width() && divBody.height() < table.height() ) { - // There is y-scrolling - try to take account of the y scroll bar - tableStyle.width = _fnStringToCss( sanityWidth-barWidth ); - if ( table.outerWidth() > sanityWidth-barWidth ) { - // Not possible to take account of it - tableStyle.width = _fnStringToCss( sanityWidth ); - } - } - else { - // When all else fails - tableStyle.width = _fnStringToCss( sanityWidth ); - } - } - - // Recalculate the sanity width - now that we've applied the required width, - // before it was a temporary variable. This is required because the column - // width calculation is done before this table DOM is created. - sanityWidth = table.outerWidth(); - - // Hidden header should have zero height, so remove padding and borders. Then - // set the width based on the real headers - - // Apply all styles in one pass - _fnApplyToChildren( zeroOut, headerSrcEls ); - - // Read all widths in next pass - _fnApplyToChildren( function(nSizer) { - headerContent.push( nSizer.innerHTML ); - headerWidths.push( _fnStringToCss( $(nSizer).css('width') ) ); - }, headerSrcEls ); - - // Apply all widths in final pass - _fnApplyToChildren( function(nToSize, i) { - nToSize.style.width = headerWidths[i]; - }, headerTrgEls ); - - $(headerSrcEls).height(0); - - /* Same again with the footer if we have one */ - if ( footer ) - { - _fnApplyToChildren( zeroOut, footerSrcEls ); - - _fnApplyToChildren( function(nSizer) { - footerWidths.push( _fnStringToCss( $(nSizer).css('width') ) ); - }, footerSrcEls ); - - _fnApplyToChildren( function(nToSize, i) { - nToSize.style.width = footerWidths[i]; - }, footerTrgEls ); - - $(footerSrcEls).height(0); - } - - - /* - * 3. Apply the measurements - */ - - // "Hide" the header and footer that we used for the sizing. We need to keep - // the content of the cell so that the width applied to the header and body - // both match, but we want to hide it completely. We want to also fix their - // width to what they currently are - _fnApplyToChildren( function(nSizer, i) { - nSizer.innerHTML = '<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+headerContent[i]+'</div>'; - nSizer.style.width = headerWidths[i]; - }, headerSrcEls ); - - if ( footer ) - { - _fnApplyToChildren( function(nSizer, i) { - nSizer.innerHTML = ""; - nSizer.style.width = footerWidths[i]; - }, footerSrcEls ); - } - - // Sanity check that the table is of a sensible width. If not then we are going to get - // misalignment - try to prevent this by not allowing the table to shrink below its min width - if ( table.outerWidth() < sanityWidth ) - { - // The min width depends upon if we have a vertical scrollbar visible or not */ - correction = ((divBodyEl.scrollHeight > divBodyEl.offsetHeight || - divBody.css('overflow-y') == "scroll")) ? - sanityWidth+barWidth : - sanityWidth; - - // IE6/7 are a law unto themselves... - if ( ie67 && (divBodyEl.scrollHeight > - divBodyEl.offsetHeight || divBody.css('overflow-y') == "scroll") - ) { - tableStyle.width = _fnStringToCss( correction-barWidth ); - } - - // And give the user a warning that we've stopped the table getting too small - if ( scrollX === "" || scrollXInner !== "" ) { - _fnLog( settings, 1, 'Possible column misalignment', 6 ); - } - } - else - { - correction = '100%'; - } - - // Apply to the container elements - divBodyStyle.width = _fnStringToCss( correction ); - divHeaderStyle.width = _fnStringToCss( correction ); - - if ( footer ) { - settings.nScrollFoot.style.width = _fnStringToCss( correction ); - } - - - /* - * 4. Clean up - */ - if ( ! scrollY ) { - /* IE7< puts a vertical scrollbar in place (when it shouldn't be) due to subtracting - * the scrollbar height from the visible display, rather than adding it on. We need to - * set the height in order to sort this. Don't want to do it in any other browsers. - */ - if ( ie67 ) { - divBodyStyle.height = _fnStringToCss( tableEl.offsetHeight+barWidth ); - } - } - - if ( scrollY && scroll.bCollapse ) { - divBodyStyle.height = _fnStringToCss( scrollY ); - - var iExtra = (scrollX && tableEl.offsetWidth > divBodyEl.offsetWidth) ? - barWidth : - 0; - - if ( tableEl.offsetHeight < divBodyEl.offsetHeight ) { - divBodyStyle.height = _fnStringToCss( tableEl.offsetHeight+iExtra ); - } - } - - /* Finally set the width's of the header and footer tables */ - var iOuterWidth = table.outerWidth(); - divHeaderTable[0].style.width = _fnStringToCss( iOuterWidth ); - divHeaderInnerStyle.width = _fnStringToCss( iOuterWidth ); - - // Figure out if there are scrollbar present - if so then we need a the header and footer to - // provide a bit more space to allow "overflow" scrolling (i.e. past the scrollbar) - var bScrolling = table.height() > divBodyEl.clientHeight || divBody.css('overflow-y') == "scroll"; - var padding = 'padding' + (browser.bScrollbarLeft ? 'Left' : 'Right' ); - divHeaderInnerStyle[ padding ] = bScrolling ? barWidth+"px" : "0px"; - - if ( footer ) { - divFooterTable[0].style.width = _fnStringToCss( iOuterWidth ); - divFooterInner[0].style.width = _fnStringToCss( iOuterWidth ); - divFooterInner[0].style[padding] = bScrolling ? barWidth+"px" : "0px"; - } - - /* Adjust the position of the header in case we loose the y-scrollbar */ - divBody.scroll(); - - // If sorting or filtering has occurred, jump the scrolling back to the top - // only if we aren't holding the position - if ( (settings.bSorted || settings.bFiltered) && ! settings._drawHold ) { - divBodyEl.scrollTop = 0; - } - } - - - - /** - * Apply a given function to the display child nodes of an element array (typically - * TD children of TR rows - * @param {function} fn Method to apply to the objects - * @param array {nodes} an1 List of elements to look through for display children - * @param array {nodes} an2 Another list (identical structure to the first) - optional - * @memberof DataTable#oApi - */ - function _fnApplyToChildren( fn, an1, an2 ) - { - var index=0, i=0, iLen=an1.length; - var nNode1, nNode2; - - while ( i < iLen ) { - nNode1 = an1[i].firstChild; - nNode2 = an2 ? an2[i].firstChild : null; - - while ( nNode1 ) { - if ( nNode1.nodeType === 1 ) { - if ( an2 ) { - fn( nNode1, nNode2, index ); - } - else { - fn( nNode1, index ); - } - - index++; - } - - nNode1 = nNode1.nextSibling; - nNode2 = an2 ? nNode2.nextSibling : null; - } - - i++; - } - } - - - - var __re_html_remove = /<.*?>/g; - - - /** - * Calculate the width of columns for the table - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnCalculateColumnWidths ( oSettings ) - { - var - table = oSettings.nTable, - columns = oSettings.aoColumns, - scroll = oSettings.oScroll, - scrollY = scroll.sY, - scrollX = scroll.sX, - scrollXInner = scroll.sXInner, - columnCount = columns.length, - visibleColumns = _fnGetColumns( oSettings, 'bVisible' ), - headerCells = $('th', oSettings.nTHead), - tableWidthAttr = table.getAttribute('width'), - tableContainer = table.parentNode, - userInputs = false, - i, column, columnIdx, width, outerWidth; - - /* Convert any user input sizes into pixel sizes */ - for ( i=0 ; i<visibleColumns.length ; i++ ) { - column = columns[ visibleColumns[i] ]; - - if ( column.sWidth !== null ) { - column.sWidth = _fnConvertToWidth( column.sWidthOrig, tableContainer ); - - userInputs = true; - } - } - - /* If the number of columns in the DOM equals the number that we have to - * process in DataTables, then we can use the offsets that are created by - * the web- browser. No custom sizes can be set in order for this to happen, - * nor scrolling used - */ - if ( ! userInputs && ! scrollX && ! scrollY && - columnCount == _fnVisbleColumns( oSettings ) && - columnCount == headerCells.length - ) { - for ( i=0 ; i<columnCount ; i++ ) { - columns[i].sWidth = _fnStringToCss( headerCells.eq(i).width() ); - } - } - else - { - // Otherwise construct a single row table with the widest node in the - // data, assign any user defined widths, then insert it into the DOM and - // allow the browser to do all the hard work of calculating table widths - var tmpTable = $(table).clone() // don't use cloneNode - IE8 will remove events on the main table - .empty() - .css( 'visibility', 'hidden' ) - .removeAttr( 'id' ) - .append( $(oSettings.nTHead).clone( false ) ) - .append( $(oSettings.nTFoot).clone( false ) ) - .append( $('<tbody><tr/></tbody>') ); - - // Remove any assigned widths from the footer (from scrolling) - tmpTable.find('tfoot th, tfoot td').css('width', ''); - - var tr = tmpTable.find( 'tbody tr' ); - - // Apply custom sizing to the cloned header - headerCells = _fnGetUniqueThs( oSettings, tmpTable.find('thead')[0] ); - - for ( i=0 ; i<visibleColumns.length ; i++ ) { - column = columns[ visibleColumns[i] ]; - - headerCells[i].style.width = column.sWidthOrig !== null && column.sWidthOrig !== '' ? - _fnStringToCss( column.sWidthOrig ) : - ''; - } - - // Find the widest cell for each column and put it into the table - if ( oSettings.aoData.length ) { - for ( i=0 ; i<visibleColumns.length ; i++ ) { - columnIdx = visibleColumns[i]; - column = columns[ columnIdx ]; - - $( _fnGetWidestNode( oSettings, columnIdx ) ) - .clone( false ) - .append( column.sContentPadding ) - .appendTo( tr ); - } - } - - // Table has been built, attach to the document so we can work with it - tmpTable.appendTo( tableContainer ); - - // When scrolling (X or Y) we want to set the width of the table as - // appropriate. However, when not scrolling leave the table width as it - // is. This results in slightly different, but I think correct behaviour - if ( scrollX && scrollXInner ) { - tmpTable.width( scrollXInner ); - } - else if ( scrollX ) { - tmpTable.css( 'width', 'auto' ); - - if ( tmpTable.width() < tableContainer.offsetWidth ) { - tmpTable.width( tableContainer.offsetWidth ); - } - } - else if ( scrollY ) { - tmpTable.width( tableContainer.offsetWidth ); - } - else if ( tableWidthAttr ) { - tmpTable.width( tableWidthAttr ); - } - - // Take into account the y scrollbar - _fnScrollingWidthAdjust( oSettings, tmpTable[0] ); - - // Browsers need a bit of a hand when a width is assigned to any columns - // when x-scrolling as they tend to collapse the table to the min-width, - // even if we sent the column widths. So we need to keep track of what - // the table width should be by summing the user given values, and the - // automatic values - if ( scrollX ) - { - var total = 0; - - for ( i=0 ; i<visibleColumns.length ; i++ ) { - column = columns[ visibleColumns[i] ]; - outerWidth = $(headerCells[i]).outerWidth(); - - total += column.sWidthOrig === null ? - outerWidth : - parseInt( column.sWidth, 10 ) + outerWidth - $(headerCells[i]).width(); - } - - tmpTable.width( _fnStringToCss( total ) ); - table.style.width = _fnStringToCss( total ); - } - - // Get the width of each column in the constructed table - for ( i=0 ; i<visibleColumns.length ; i++ ) { - column = columns[ visibleColumns[i] ]; - width = $(headerCells[i]).width(); - - if ( width ) { - column.sWidth = _fnStringToCss( width ); - } - } - - table.style.width = _fnStringToCss( tmpTable.css('width') ); - - // Finished with the table - ditch it - tmpTable.remove(); - } - - // If there is a width attr, we want to attach an event listener which - // allows the table sizing to automatically adjust when the window is - // resized. Use the width attr rather than CSS, since we can't know if the - // CSS is a relative value or absolute - DOM read is always px. - if ( tableWidthAttr ) { - table.style.width = _fnStringToCss( tableWidthAttr ); - } - - if ( (tableWidthAttr || scrollX) && ! oSettings._reszEvt ) { - $(window).bind('resize.DT-'+oSettings.sInstance, _fnThrottle( function () { - _fnAdjustColumnSizing( oSettings ); - } ) ); - - oSettings._reszEvt = true; - } - } - - - /** - * Throttle the calls to a function. Arguments and context are maintained for - * the throttled function - * @param {function} fn Function to be called - * @param {int} [freq=200] call frequency in mS - * @returns {function} wrapped function - * @memberof DataTable#oApi - */ - function _fnThrottle( fn, freq ) { - var - frequency = freq !== undefined ? freq : 200, - last, - timer; - - return function () { - var - that = this, - now = +new Date(), - args = arguments; - - if ( last && now < last + frequency ) { - clearTimeout( timer ); - - timer = setTimeout( function () { - last = undefined; - fn.apply( that, args ); - }, frequency ); - } - else if ( last ) { - last = now; - fn.apply( that, args ); - } - else { - last = now; - } - }; - } - - - /** - * Convert a CSS unit width to pixels (e.g. 2em) - * @param {string} width width to be converted - * @param {node} parent parent to get the with for (required for relative widths) - optional - * @returns {int} width in pixels - * @memberof DataTable#oApi - */ - function _fnConvertToWidth ( width, parent ) - { - if ( ! width ) { - return 0; - } - - var n = $('<div/>') - .css( 'width', _fnStringToCss( width ) ) - .appendTo( parent || document.body ); - - var val = n[0].offsetWidth; - n.remove(); - - return val; - } - - - /** - * Adjust a table's width to take account of vertical scroll bar - * @param {object} oSettings dataTables settings object - * @param {node} n table node - * @memberof DataTable#oApi - */ - - function _fnScrollingWidthAdjust ( settings, n ) - { - var scroll = settings.oScroll; - - if ( scroll.sX || scroll.sY ) { - // When y-scrolling only, we want to remove the width of the scroll bar - // so the table + scroll bar will fit into the area available, otherwise - // we fix the table at its current size with no adjustment - var correction = ! scroll.sX ? scroll.iBarWidth : 0; - n.style.width = _fnStringToCss( $(n).outerWidth() - correction ); - } - } - - - /** - * Get the widest node - * @param {object} settings dataTables settings object - * @param {int} colIdx column of interest - * @returns {node} widest table node - * @memberof DataTable#oApi - */ - function _fnGetWidestNode( settings, colIdx ) - { - var idx = _fnGetMaxLenString( settings, colIdx ); - if ( idx < 0 ) { - return null; - } - - var data = settings.aoData[ idx ]; - return ! data.nTr ? // Might not have been created when deferred rendering - $('<td/>').html( _fnGetCellData( settings, idx, colIdx, 'display' ) )[0] : - data.anCells[ colIdx ]; - } - - - /** - * Get the maximum strlen for each data column - * @param {object} settings dataTables settings object - * @param {int} colIdx column of interest - * @returns {string} max string length for each column - * @memberof DataTable#oApi - */ - function _fnGetMaxLenString( settings, colIdx ) - { - var s, max=-1, maxIdx = -1; - - for ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) { - s = _fnGetCellData( settings, i, colIdx, 'display' )+''; - s = s.replace( __re_html_remove, '' ); - - if ( s.length > max ) { - max = s.length; - maxIdx = i; - } - } - - return maxIdx; - } - - - /** - * Append a CSS unit (only if required) to a string - * @param {string} value to css-ify - * @returns {string} value with css unit - * @memberof DataTable#oApi - */ - function _fnStringToCss( s ) - { - if ( s === null ) { - return '0px'; - } - - if ( typeof s == 'number' ) { - return s < 0 ? - '0px' : - s+'px'; - } - - // Check it has a unit character already - return s.match(/\d$/) ? - s+'px' : - s; - } - - - /** - * Get the width of a scroll bar in this browser being used - * @returns {int} width in pixels - * @memberof DataTable#oApi - */ - function _fnScrollBarWidth () - { - // On first run a static variable is set, since this is only needed once. - // Subsequent runs will just use the previously calculated value - if ( ! DataTable.__scrollbarWidth ) { - var inner = $('<p/>').css( { - width: '100%', - height: 200, - padding: 0 - } )[0]; - - var outer = $('<div/>') - .css( { - position: 'absolute', - top: 0, - left: 0, - width: 200, - height: 150, - padding: 0, - overflow: 'hidden', - visibility: 'hidden' - } ) - .append( inner ) - .appendTo( 'body' ); - - var w1 = inner.offsetWidth; - outer.css( 'overflow', 'scroll' ); - var w2 = inner.offsetWidth; - - if ( w1 === w2 ) { - w2 = outer[0].clientWidth; - } - - outer.remove(); - - DataTable.__scrollbarWidth = w1 - w2; - } - - return DataTable.__scrollbarWidth; - } - - - - function _fnSortFlatten ( settings ) - { - var - i, iLen, k, kLen, - aSort = [], - aiOrig = [], - aoColumns = settings.aoColumns, - aDataSort, iCol, sType, srcCol, - fixed = settings.aaSortingFixed, - fixedObj = $.isPlainObject( fixed ), - nestedSort = [], - add = function ( a ) { - if ( a.length && ! $.isArray( a[0] ) ) { - // 1D array - nestedSort.push( a ); - } - else { - // 2D array - nestedSort.push.apply( nestedSort, a ); - } - }; - - // Build the sort array, with pre-fix and post-fix options if they have been - // specified - if ( $.isArray( fixed ) ) { - add( fixed ); - } - - if ( fixedObj && fixed.pre ) { - add( fixed.pre ); - } - - add( settings.aaSorting ); - - if (fixedObj && fixed.post ) { - add( fixed.post ); - } - - for ( i=0 ; i<nestedSort.length ; i++ ) - { - srcCol = nestedSort[i][0]; - aDataSort = aoColumns[ srcCol ].aDataSort; - - for ( k=0, kLen=aDataSort.length ; k<kLen ; k++ ) - { - iCol = aDataSort[k]; - sType = aoColumns[ iCol ].sType || 'string'; - - if ( nestedSort[i]._idx === undefined ) { - nestedSort[i]._idx = $.inArray( nestedSort[i][1], aoColumns[iCol].asSorting ); - } - - aSort.push( { - src: srcCol, - col: iCol, - dir: nestedSort[i][1], - index: nestedSort[i]._idx, - type: sType, - formatter: DataTable.ext.type.order[ sType+"-pre" ] - } ); - } - } - - return aSort; - } - - /** - * Change the order of the table - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - * @todo This really needs split up! - */ - function _fnSort ( oSettings ) - { - var - i, ien, iLen, j, jLen, k, kLen, - sDataType, nTh, - aiOrig = [], - oExtSort = DataTable.ext.type.order, - aoData = oSettings.aoData, - aoColumns = oSettings.aoColumns, - aDataSort, data, iCol, sType, oSort, - formatters = 0, - sortCol, - displayMaster = oSettings.aiDisplayMaster, - aSort; - - // Resolve any column types that are unknown due to addition or invalidation - // @todo Can this be moved into a 'data-ready' handler which is called when - // data is going to be used in the table? - _fnColumnTypes( oSettings ); - - aSort = _fnSortFlatten( oSettings ); - - for ( i=0, ien=aSort.length ; i<ien ; i++ ) { - sortCol = aSort[i]; - - // Track if we can use the fast sort algorithm - if ( sortCol.formatter ) { - formatters++; - } - - // Load the data needed for the sort, for each cell - _fnSortData( oSettings, sortCol.col ); - } - - /* No sorting required if server-side or no sorting array */ - if ( _fnDataSource( oSettings ) != 'ssp' && aSort.length !== 0 ) - { - // Create a value - key array of the current row positions such that we can use their - // current position during the sort, if values match, in order to perform stable sorting - for ( i=0, iLen=displayMaster.length ; i<iLen ; i++ ) { - aiOrig[ displayMaster[i] ] = i; - } - - /* Do the sort - here we want multi-column sorting based on a given data source (column) - * and sorting function (from oSort) in a certain direction. It's reasonably complex to - * follow on it's own, but this is what we want (example two column sorting): - * fnLocalSorting = function(a,b){ - * var iTest; - * iTest = oSort['string-asc']('data11', 'data12'); - * if (iTest !== 0) - * return iTest; - * iTest = oSort['numeric-desc']('data21', 'data22'); - * if (iTest !== 0) - * return iTest; - * return oSort['numeric-asc']( aiOrig[a], aiOrig[b] ); - * } - * Basically we have a test for each sorting column, if the data in that column is equal, - * test the next column. If all columns match, then we use a numeric sort on the row - * positions in the original data array to provide a stable sort. - * - * Note - I know it seems excessive to have two sorting methods, but the first is around - * 15% faster, so the second is only maintained for backwards compatibility with sorting - * methods which do not have a pre-sort formatting function. - */ - if ( formatters === aSort.length ) { - // All sort types have formatting functions - displayMaster.sort( function ( a, b ) { - var - x, y, k, test, sort, - len=aSort.length, - dataA = aoData[a]._aSortData, - dataB = aoData[b]._aSortData; - - for ( k=0 ; k<len ; k++ ) { - sort = aSort[k]; - - x = dataA[ sort.col ]; - y = dataB[ sort.col ]; - - test = x<y ? -1 : x>y ? 1 : 0; - if ( test !== 0 ) { - return sort.dir === 'asc' ? test : -test; - } - } - - x = aiOrig[a]; - y = aiOrig[b]; - return x<y ? -1 : x>y ? 1 : 0; - } ); - } - else { - // Depreciated - remove in 1.11 (providing a plug-in option) - // Not all sort types have formatting methods, so we have to call their sorting - // methods. - displayMaster.sort( function ( a, b ) { - var - x, y, k, l, test, sort, fn, - len=aSort.length, - dataA = aoData[a]._aSortData, - dataB = aoData[b]._aSortData; - - for ( k=0 ; k<len ; k++ ) { - sort = aSort[k]; - - x = dataA[ sort.col ]; - y = dataB[ sort.col ]; - - fn = oExtSort[ sort.type+"-"+sort.dir ] || oExtSort[ "string-"+sort.dir ]; - test = fn( x, y ); - if ( test !== 0 ) { - return test; - } - } - - x = aiOrig[a]; - y = aiOrig[b]; - return x<y ? -1 : x>y ? 1 : 0; - } ); - } - } - - /* Tell the draw function that we have sorted the data */ - oSettings.bSorted = true; - } - - - function _fnSortAria ( settings ) - { - var label; - var nextSort; - var columns = settings.aoColumns; - var aSort = _fnSortFlatten( settings ); - var oAria = settings.oLanguage.oAria; - - // ARIA attributes - need to loop all columns, to update all (removing old - // attributes as needed) - for ( var i=0, iLen=columns.length ; i<iLen ; i++ ) - { - var col = columns[i]; - var asSorting = col.asSorting; - var sTitle = col.sTitle.replace( /<.*?>/g, "" ); - var th = col.nTh; - - // IE7 is throwing an error when setting these properties with jQuery's - // attr() and removeAttr() methods... - th.removeAttribute('aria-sort'); - - /* In ARIA only the first sorting column can be marked as sorting - no multi-sort option */ - if ( col.bSortable ) { - if ( aSort.length > 0 && aSort[0].col == i ) { - th.setAttribute('aria-sort', aSort[0].dir=="asc" ? "ascending" : "descending" ); - nextSort = asSorting[ aSort[0].index+1 ] || asSorting[0]; - } - else { - nextSort = asSorting[0]; - } - - label = sTitle + ( nextSort === "asc" ? - oAria.sSortAscending : - oAria.sSortDescending - ); - } - else { - label = sTitle; - } - - th.setAttribute('aria-label', label); - } - } - - - /** - * Function to run on user sort request - * @param {object} settings dataTables settings object - * @param {node} attachTo node to attach the handler to - * @param {int} colIdx column sorting index - * @param {boolean} [append=false] Append the requested sort to the existing - * sort if true (i.e. multi-column sort) - * @param {function} [callback] callback function - * @memberof DataTable#oApi - */ - function _fnSortListener ( settings, colIdx, append, callback ) - { - var col = settings.aoColumns[ colIdx ]; - var sorting = settings.aaSorting; - var asSorting = col.asSorting; - var nextSortIdx; - var next = function ( a, overflow ) { - var idx = a._idx; - if ( idx === undefined ) { - idx = $.inArray( a[1], asSorting ); - } - - return idx+1 < asSorting.length ? - idx+1 : - overflow ? - null : - 0; - }; - - // Convert to 2D array if needed - if ( typeof sorting[0] === 'number' ) { - sorting = settings.aaSorting = [ sorting ]; - } - - // If appending the sort then we are multi-column sorting - if ( append && settings.oFeatures.bSortMulti ) { - // Are we already doing some kind of sort on this column? - var sortIdx = $.inArray( colIdx, _pluck(sorting, '0') ); - - if ( sortIdx !== -1 ) { - // Yes, modify the sort - nextSortIdx = next( sorting[sortIdx], true ); - - if ( nextSortIdx === null ) { - sorting.splice( sortIdx, 1 ); - } - else { - sorting[sortIdx][1] = asSorting[ nextSortIdx ]; - sorting[sortIdx]._idx = nextSortIdx; - } - } - else { - // No sort on this column yet - sorting.push( [ colIdx, asSorting[0], 0 ] ); - sorting[sorting.length-1]._idx = 0; - } - } - else if ( sorting.length && sorting[0][0] == colIdx ) { - // Single column - already sorting on this column, modify the sort - nextSortIdx = next( sorting[0] ); - - sorting.length = 1; - sorting[0][1] = asSorting[ nextSortIdx ]; - sorting[0]._idx = nextSortIdx; - } - else { - // Single column - sort only on this column - sorting.length = 0; - sorting.push( [ colIdx, asSorting[0] ] ); - sorting[0]._idx = 0; - } - - // Run the sort by calling a full redraw - _fnReDraw( settings ); - - // callback used for async user interaction - if ( typeof callback == 'function' ) { - callback( settings ); - } - } - - - /** - * Attach a sort handler (click) to a node - * @param {object} settings dataTables settings object - * @param {node} attachTo node to attach the handler to - * @param {int} colIdx column sorting index - * @param {function} [callback] callback function - * @memberof DataTable#oApi - */ - function _fnSortAttachListener ( settings, attachTo, colIdx, callback ) - { - var col = settings.aoColumns[ colIdx ]; - - _fnBindAction( attachTo, {}, function (e) { - /* If the column is not sortable - don't to anything */ - if ( col.bSortable === false ) { - return; - } - - // If processing is enabled use a timeout to allow the processing - // display to be shown - otherwise to it synchronously - if ( settings.oFeatures.bProcessing ) { - _fnProcessingDisplay( settings, true ); - - setTimeout( function() { - _fnSortListener( settings, colIdx, e.shiftKey, callback ); - - // In server-side processing, the draw callback will remove the - // processing display - if ( _fnDataSource( settings ) !== 'ssp' ) { - _fnProcessingDisplay( settings, false ); - } - }, 0 ); - } - else { - _fnSortListener( settings, colIdx, e.shiftKey, callback ); - } - } ); - } - - - /** - * Set the sorting classes on table's body, Note: it is safe to call this function - * when bSort and bSortClasses are false - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnSortingClasses( settings ) - { - var oldSort = settings.aLastSort; - var sortClass = settings.oClasses.sSortColumn; - var sort = _fnSortFlatten( settings ); - var features = settings.oFeatures; - var i, ien, colIdx; - - if ( features.bSort && features.bSortClasses ) { - // Remove old sorting classes - for ( i=0, ien=oldSort.length ; i<ien ; i++ ) { - colIdx = oldSort[i].src; - - // Remove column sorting - $( _pluck( settings.aoData, 'anCells', colIdx ) ) - .removeClass( sortClass + (i<2 ? i+1 : 3) ); - } - - // Add new column sorting - for ( i=0, ien=sort.length ; i<ien ; i++ ) { - colIdx = sort[i].src; - - $( _pluck( settings.aoData, 'anCells', colIdx ) ) - .addClass( sortClass + (i<2 ? i+1 : 3) ); - } - } - - settings.aLastSort = sort; - } - - - // Get the data to sort a column, be it from cache, fresh (populating the - // cache), or from a sort formatter - function _fnSortData( settings, idx ) - { - // Custom sorting function - provided by the sort data type - var column = settings.aoColumns[ idx ]; - var customSort = DataTable.ext.order[ column.sSortDataType ]; - var customData; - - if ( customSort ) { - customData = customSort.call( settings.oInstance, settings, idx, - _fnColumnIndexToVisible( settings, idx ) - ); - } - - // Use / populate cache - var row, cellData; - var formatter = DataTable.ext.type.order[ column.sType+"-pre" ]; - - for ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) { - row = settings.aoData[i]; - - if ( ! row._aSortData ) { - row._aSortData = []; - } - - if ( ! row._aSortData[idx] || customSort ) { - cellData = customSort ? - customData[i] : // If there was a custom sort function, use data from there - _fnGetCellData( settings, i, idx, 'sort' ); - - row._aSortData[ idx ] = formatter ? - formatter( cellData ) : - cellData; - } - } - } - - - - /** - * Save the state of a table - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnSaveState ( settings ) - { - if ( !settings.oFeatures.bStateSave || settings.bDestroying ) - { - return; - } - - /* Store the interesting variables */ - var state = { - time: +new Date(), - start: settings._iDisplayStart, - length: settings._iDisplayLength, - order: $.extend( true, [], settings.aaSorting ), - search: _fnSearchToCamel( settings.oPreviousSearch ), - columns: $.map( settings.aoColumns, function ( col, i ) { - return { - visible: col.bVisible, - search: _fnSearchToCamel( settings.aoPreSearchCols[i] ) - }; - } ) - }; - - _fnCallbackFire( settings, "aoStateSaveParams", 'stateSaveParams', [settings, state] ); - - settings.oSavedState = state; - settings.fnStateSaveCallback.call( settings.oInstance, settings, state ); - } - - - /** - * Attempt to load a saved table state - * @param {object} oSettings dataTables settings object - * @param {object} oInit DataTables init object so we can override settings - * @memberof DataTable#oApi - */ - function _fnLoadState ( settings, oInit ) - { - var i, ien; - var columns = settings.aoColumns; - - if ( ! settings.oFeatures.bStateSave ) { - return; - } - - var state = settings.fnStateLoadCallback.call( settings.oInstance, settings ); - if ( ! state || ! state.time ) { - return; - } - - /* Allow custom and plug-in manipulation functions to alter the saved data set and - * cancelling of loading by returning false - */ - var abStateLoad = _fnCallbackFire( settings, 'aoStateLoadParams', 'stateLoadParams', [settings, state] ); - if ( $.inArray( false, abStateLoad ) !== -1 ) { - return; - } - - /* Reject old data */ - var duration = settings.iStateDuration; - if ( duration > 0 && state.time < +new Date() - (duration*1000) ) { - return; - } - - // Number of columns have changed - all bets are off, no restore of settings - if ( columns.length !== state.columns.length ) { - return; - } - - // Store the saved state so it might be accessed at any time - settings.oLoadedState = $.extend( true, {}, state ); - - // Restore key features - todo - for 1.11 this needs to be done by - // subscribed events - settings._iDisplayStart = state.start; - settings.iInitDisplayStart = state.start; - settings._iDisplayLength = state.length; - settings.aaSorting = []; - - // Order - $.each( state.order, function ( i, col ) { - settings.aaSorting.push( col[0] >= columns.length ? - [ 0, col[1] ] : - col - ); - } ); - - // Search - $.extend( settings.oPreviousSearch, _fnSearchToHung( state.search ) ); - - // Columns - for ( i=0, ien=state.columns.length ; i<ien ; i++ ) { - var col = state.columns[i]; - - // Visibility - columns[i].bVisible = col.visible; - - // Search - $.extend( settings.aoPreSearchCols[i], _fnSearchToHung( col.search ) ); - } - - _fnCallbackFire( settings, 'aoStateLoaded', 'stateLoaded', [settings, state] ); - } - - - /** - * Return the settings object for a particular table - * @param {node} table table we are using as a dataTable - * @returns {object} Settings object - or null if not found - * @memberof DataTable#oApi - */ - function _fnSettingsFromNode ( table ) - { - var settings = DataTable.settings; - var idx = $.inArray( table, _pluck( settings, 'nTable' ) ); - - return idx !== -1 ? - settings[ idx ] : - null; - } - - - /** - * Log an error message - * @param {object} settings dataTables settings object - * @param {int} level log error messages, or display them to the user - * @param {string} msg error message - * @param {int} tn Technical note id to get more information about the error. - * @memberof DataTable#oApi - */ - function _fnLog( settings, level, msg, tn ) - { - msg = 'DataTables warning: '+ - (settings!==null ? 'table id='+settings.sTableId+' - ' : '')+msg; - - if ( tn ) { - msg += '. For more information about this error, please see '+ - 'http://datatables.net/tn/'+tn; - } - - if ( ! level ) { - // Backwards compatibility pre 1.10 - var ext = DataTable.ext; - var type = ext.sErrMode || ext.errMode; - - if ( type == 'alert' ) { - alert( msg ); - } - else { - throw new Error(msg); - } - } - else if ( window.console && console.log ) { - console.log( msg ); - } - } - - - /** - * See if a property is defined on one object, if so assign it to the other object - * @param {object} ret target object - * @param {object} src source object - * @param {string} name property - * @param {string} [mappedName] name to map too - optional, name used if not given - * @memberof DataTable#oApi - */ - function _fnMap( ret, src, name, mappedName ) - { - if ( $.isArray( name ) ) { - $.each( name, function (i, val) { - if ( $.isArray( val ) ) { - _fnMap( ret, src, val[0], val[1] ); - } - else { - _fnMap( ret, src, val ); - } - } ); - - return; - } - - if ( mappedName === undefined ) { - mappedName = name; - } - - if ( src[name] !== undefined ) { - ret[mappedName] = src[name]; - } - } - - - /** - * Extend objects - very similar to jQuery.extend, but deep copy objects, and - * shallow copy arrays. The reason we need to do this, is that we don't want to - * deep copy array init values (such as aaSorting) since the dev wouldn't be - * able to override them, but we do want to deep copy arrays. - * @param {object} out Object to extend - * @param {object} extender Object from which the properties will be applied to - * out - * @param {boolean} breakRefs If true, then arrays will be sliced to take an - * independent copy with the exception of the `data` or `aaData` parameters - * if they are present. This is so you can pass in a collection to - * DataTables and have that used as your data source without breaking the - * references - * @returns {object} out Reference, just for convenience - out === the return. - * @memberof DataTable#oApi - * @todo This doesn't take account of arrays inside the deep copied objects. - */ - function _fnExtend( out, extender, breakRefs ) - { - var val; - - for ( var prop in extender ) { - if ( extender.hasOwnProperty(prop) ) { - val = extender[prop]; - - if ( $.isPlainObject( val ) ) { - if ( ! $.isPlainObject( out[prop] ) ) { - out[prop] = {}; - } - $.extend( true, out[prop], val ); - } - else if ( breakRefs && prop !== 'data' && prop !== 'aaData' && $.isArray(val) ) { - out[prop] = val.slice(); - } - else { - out[prop] = val; - } - } - } - - return out; - } - - - /** - * Bind an event handers to allow a click or return key to activate the callback. - * This is good for accessibility since a return on the keyboard will have the - * same effect as a click, if the element has focus. - * @param {element} n Element to bind the action to - * @param {object} oData Data object to pass to the triggered function - * @param {function} fn Callback function for when the event is triggered - * @memberof DataTable#oApi - */ - function _fnBindAction( n, oData, fn ) - { - $(n) - .bind( 'click.DT', oData, function (e) { - n.blur(); // Remove focus outline for mouse users - fn(e); - } ) - .bind( 'keypress.DT', oData, function (e){ - if ( e.which === 13 ) { - e.preventDefault(); - fn(e); - } - } ) - .bind( 'selectstart.DT', function () { - /* Take the brutal approach to cancelling text selection */ - return false; - } ); - } - - - /** - * Register a callback function. Easily allows a callback function to be added to - * an array store of callback functions that can then all be called together. - * @param {object} oSettings dataTables settings object - * @param {string} sStore Name of the array storage for the callbacks in oSettings - * @param {function} fn Function to be called back - * @param {string} sName Identifying name for the callback (i.e. a label) - * @memberof DataTable#oApi - */ - function _fnCallbackReg( oSettings, sStore, fn, sName ) - { - if ( fn ) - { - oSettings[sStore].push( { - "fn": fn, - "sName": sName - } ); - } - } - - - /** - * Fire callback functions and trigger events. Note that the loop over the - * callback array store is done backwards! Further note that you do not want to - * fire off triggers in time sensitive applications (for example cell creation) - * as its slow. - * @param {object} settings dataTables settings object - * @param {string} callbackArr Name of the array storage for the callbacks in - * oSettings - * @param {string} event Name of the jQuery custom event to trigger. If null no - * trigger is fired - * @param {array} args Array of arguments to pass to the callback function / - * trigger - * @memberof DataTable#oApi - */ - function _fnCallbackFire( settings, callbackArr, e, args ) - { - var ret = []; - - if ( callbackArr ) { - ret = $.map( settings[callbackArr].slice().reverse(), function (val, i) { - return val.fn.apply( settings.oInstance, args ); - } ); - } - - if ( e !== null ) { - $(settings.nTable).trigger( e+'.dt', args ); - } - - return ret; - } - - - function _fnLengthOverflow ( settings ) - { - var - start = settings._iDisplayStart, - end = settings.fnDisplayEnd(), - len = settings._iDisplayLength; - - /* If we have space to show extra rows (backing up from the end point - then do so */ - if ( start >= end ) - { - start = end - len; - } - - // Keep the start record on the current page - start -= (start % len); - - if ( len === -1 || start < 0 ) - { - start = 0; - } - - settings._iDisplayStart = start; - } - - - function _fnRenderer( settings, type ) - { - var renderer = settings.renderer; - var host = DataTable.ext.renderer[type]; - - if ( $.isPlainObject( renderer ) && renderer[type] ) { - // Specific renderer for this type. If available use it, otherwise use - // the default. - return host[renderer[type]] || host._; - } - else if ( typeof renderer === 'string' ) { - // Common renderer - if there is one available for this type use it, - // otherwise use the default - return host[renderer] || host._; - } - - // Use the default - return host._; - } - - - /** - * Detect the data source being used for the table. Used to simplify the code - * a little (ajax) and to make it compress a little smaller. - * - * @param {object} settings dataTables settings object - * @returns {string} Data source - * @memberof DataTable#oApi - */ - function _fnDataSource ( settings ) - { - if ( settings.oFeatures.bServerSide ) { - return 'ssp'; - } - else if ( settings.ajax || settings.sAjaxSource ) { - return 'ajax'; - } - return 'dom'; - } - - - DataTable = function( options ) - { - /** - * Perform a jQuery selector action on the table's TR elements (from the tbody) and - * return the resulting jQuery object. - * @param {string|node|jQuery} sSelector jQuery selector or node collection to act on - * @param {object} [oOpts] Optional parameters for modifying the rows to be included - * @param {string} [oOpts.filter=none] Select TR elements that meet the current filter - * criterion ("applied") or all TR elements (i.e. no filter). - * @param {string} [oOpts.order=current] Order of the TR elements in the processed array. - * Can be either 'current', whereby the current sorting of the table is used, or - * 'original' whereby the original order the data was read into the table is used. - * @param {string} [oOpts.page=all] Limit the selection to the currently displayed page - * ("current") or not ("all"). If 'current' is given, then order is assumed to be - * 'current' and filter is 'applied', regardless of what they might be given as. - * @returns {object} jQuery object, filtered by the given selector. - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Highlight every second row - * oTable.$('tr:odd').css('backgroundColor', 'blue'); - * } ); - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Filter to rows with 'Webkit' in them, add a background colour and then - * // remove the filter, thus highlighting the 'Webkit' rows only. - * oTable.fnFilter('Webkit'); - * oTable.$('tr', {"search": "applied"}).css('backgroundColor', 'blue'); - * oTable.fnFilter(''); - * } ); - */ - this.$ = function ( sSelector, oOpts ) - { - return this.api(true).$( sSelector, oOpts ); - }; - - - /** - * Almost identical to $ in operation, but in this case returns the data for the matched - * rows - as such, the jQuery selector used should match TR row nodes or TD/TH cell nodes - * rather than any descendants, so the data can be obtained for the row/cell. If matching - * rows are found, the data returned is the original data array/object that was used to - * create the row (or a generated array if from a DOM source). - * - * This method is often useful in-combination with $ where both functions are given the - * same parameters and the array indexes will match identically. - * @param {string|node|jQuery} sSelector jQuery selector or node collection to act on - * @param {object} [oOpts] Optional parameters for modifying the rows to be included - * @param {string} [oOpts.filter=none] Select elements that meet the current filter - * criterion ("applied") or all elements (i.e. no filter). - * @param {string} [oOpts.order=current] Order of the data in the processed array. - * Can be either 'current', whereby the current sorting of the table is used, or - * 'original' whereby the original order the data was read into the table is used. - * @param {string} [oOpts.page=all] Limit the selection to the currently displayed page - * ("current") or not ("all"). If 'current' is given, then order is assumed to be - * 'current' and filter is 'applied', regardless of what they might be given as. - * @returns {array} Data for the matched elements. If any elements, as a result of the - * selector, were not TR, TD or TH elements in the DataTable, they will have a null - * entry in the array. - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Get the data from the first row in the table - * var data = oTable._('tr:first'); - * - * // Do something useful with the data - * alert( "First cell is: "+data[0] ); - * } ); - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Filter to 'Webkit' and get all data for - * oTable.fnFilter('Webkit'); - * var data = oTable._('tr', {"search": "applied"}); - * - * // Do something with the data - * alert( data.length+" rows matched the search" ); - * } ); - */ - this._ = function ( sSelector, oOpts ) - { - return this.api(true).rows( sSelector, oOpts ).data(); - }; - - - /** - * Create a DataTables Api instance, with the currently selected tables for - * the Api's context. - * @param {boolean} [traditional=false] Set the API instance's context to be - * only the table referred to by the `DataTable.ext.iApiIndex` option, as was - * used in the API presented by DataTables 1.9- (i.e. the traditional mode), - * or if all tables captured in the jQuery object should be used. - * @return {DataTables.Api} - */ - this.api = function ( traditional ) - { - return traditional ? - new _Api( - _fnSettingsFromNode( this[ _ext.iApiIndex ] ) - ) : - new _Api( this ); - }; - - - /** - * Add a single new row or multiple rows of data to the table. Please note - * that this is suitable for client-side processing only - if you are using - * server-side processing (i.e. "bServerSide": true), then to add data, you - * must add it to the data source, i.e. the server-side, through an Ajax call. - * @param {array|object} data The data to be added to the table. This can be: - * <ul> - * <li>1D array of data - add a single row with the data provided</li> - * <li>2D array of arrays - add multiple rows in a single call</li> - * <li>object - data object when using <i>mData</i></li> - * <li>array of objects - multiple data objects when using <i>mData</i></li> - * </ul> - * @param {bool} [redraw=true] redraw the table or not - * @returns {array} An array of integers, representing the list of indexes in - * <i>aoData</i> ({@link DataTable.models.oSettings}) that have been added to - * the table. - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * // Global var for counter - * var giCount = 2; - * - * $(document).ready(function() { - * $('#example').dataTable(); - * } ); - * - * function fnClickAddRow() { - * $('#example').dataTable().fnAddData( [ - * giCount+".1", - * giCount+".2", - * giCount+".3", - * giCount+".4" ] - * ); - * - * giCount++; - * } - */ - this.fnAddData = function( data, redraw ) - { - var api = this.api( true ); - - /* Check if we want to add multiple rows or not */ - var rows = $.isArray(data) && ( $.isArray(data[0]) || $.isPlainObject(data[0]) ) ? - api.rows.add( data ) : - api.row.add( data ); - - if ( redraw === undefined || redraw ) { - api.draw(); - } - - return rows.flatten().toArray(); - }; - - - /** - * This function will make DataTables recalculate the column sizes, based on the data - * contained in the table and the sizes applied to the columns (in the DOM, CSS or - * through the sWidth parameter). This can be useful when the width of the table's - * parent element changes (for example a window resize). - * @param {boolean} [bRedraw=true] Redraw the table or not, you will typically want to - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable( { - * "sScrollY": "200px", - * "bPaginate": false - * } ); - * - * $(window).bind('resize', function () { - * oTable.fnAdjustColumnSizing(); - * } ); - * } ); - */ - this.fnAdjustColumnSizing = function ( bRedraw ) - { - var api = this.api( true ).columns.adjust(); - var settings = api.settings()[0]; - var scroll = settings.oScroll; - - if ( bRedraw === undefined || bRedraw ) { - api.draw( false ); - } - else if ( scroll.sX !== "" || scroll.sY !== "" ) { - /* If not redrawing, but scrolling, we want to apply the new column sizes anyway */ - _fnScrollDraw( settings ); - } - }; - - - /** - * Quickly and simply clear a table - * @param {bool} [bRedraw=true] redraw the table or not - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Immediately 'nuke' the current rows (perhaps waiting for an Ajax callback...) - * oTable.fnClearTable(); - * } ); - */ - this.fnClearTable = function( bRedraw ) - { - var api = this.api( true ).clear(); - - if ( bRedraw === undefined || bRedraw ) { - api.draw(); - } - }; - - - /** - * The exact opposite of 'opening' a row, this function will close any rows which - * are currently 'open'. - * @param {node} nTr the table row to 'close' - * @returns {int} 0 on success, or 1 if failed (can't find the row) - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable; - * - * // 'open' an information row when a row is clicked on - * $('#example tbody tr').click( function () { - * if ( oTable.fnIsOpen(this) ) { - * oTable.fnClose( this ); - * } else { - * oTable.fnOpen( this, "Temporary row opened", "info_row" ); - * } - * } ); - * - * oTable = $('#example').dataTable(); - * } ); - */ - this.fnClose = function( nTr ) - { - this.api( true ).row( nTr ).child.hide(); - }; - - - /** - * Remove a row for the table - * @param {mixed} target The index of the row from aoData to be deleted, or - * the TR element you want to delete - * @param {function|null} [callBack] Callback function - * @param {bool} [redraw=true] Redraw the table or not - * @returns {array} The row that was deleted - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Immediately remove the first row - * oTable.fnDeleteRow( 0 ); - * } ); - */ - this.fnDeleteRow = function( target, callback, redraw ) - { - var api = this.api( true ); - var rows = api.rows( target ); - var settings = rows.settings()[0]; - var data = settings.aoData[ rows[0][0] ]; - - rows.remove(); - - if ( callback ) { - callback.call( this, settings, data ); - } - - if ( redraw === undefined || redraw ) { - api.draw(); - } - - return data; - }; - - - /** - * Restore the table to it's original state in the DOM by removing all of DataTables - * enhancements, alterations to the DOM structure of the table and event listeners. - * @param {boolean} [remove=false] Completely remove the table from the DOM - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * // This example is fairly pointless in reality, but shows how fnDestroy can be used - * var oTable = $('#example').dataTable(); - * oTable.fnDestroy(); - * } ); - */ - this.fnDestroy = function ( remove ) - { - this.api( true ).destroy( remove ); - }; - - - /** - * Redraw the table - * @param {bool} [complete=true] Re-filter and resort (if enabled) the table before the draw. - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Re-draw the table - you wouldn't want to do it here, but it's an example :-) - * oTable.fnDraw(); - * } ); - */ - this.fnDraw = function( complete ) - { - // Note that this isn't an exact match to the old call to _fnDraw - it takes - // into account the new data, but can old position. - this.api( true ).draw( ! complete ); - }; - - - /** - * Filter the input based on data - * @param {string} sInput String to filter the table on - * @param {int|null} [iColumn] Column to limit filtering to - * @param {bool} [bRegex=false] Treat as regular expression or not - * @param {bool} [bSmart=true] Perform smart filtering or not - * @param {bool} [bShowGlobal=true] Show the input global filter in it's input box(es) - * @param {bool} [bCaseInsensitive=true] Do case-insensitive matching (true) or not (false) - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Sometime later - filter... - * oTable.fnFilter( 'test string' ); - * } ); - */ - this.fnFilter = function( sInput, iColumn, bRegex, bSmart, bShowGlobal, bCaseInsensitive ) - { - var api = this.api( true ); - - if ( iColumn === null || iColumn === undefined ) { - api.search( sInput, bRegex, bSmart, bCaseInsensitive ); - } - else { - api.column( iColumn ).search( sInput, bRegex, bSmart, bCaseInsensitive ); - } - - api.draw(); - }; - - - /** - * Get the data for the whole table, an individual row or an individual cell based on the - * provided parameters. - * @param {int|node} [src] A TR row node, TD/TH cell node or an integer. If given as - * a TR node then the data source for the whole row will be returned. If given as a - * TD/TH cell node then iCol will be automatically calculated and the data for the - * cell returned. If given as an integer, then this is treated as the aoData internal - * data index for the row (see fnGetPosition) and the data for that row used. - * @param {int} [col] Optional column index that you want the data of. - * @returns {array|object|string} If mRow is undefined, then the data for all rows is - * returned. If mRow is defined, just data for that row, and is iCol is - * defined, only data for the designated cell is returned. - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * // Row data - * $(document).ready(function() { - * oTable = $('#example').dataTable(); - * - * oTable.$('tr').click( function () { - * var data = oTable.fnGetData( this ); - * // ... do something with the array / object of data for the row - * } ); - * } ); - * - * @example - * // Individual cell data - * $(document).ready(function() { - * oTable = $('#example').dataTable(); - * - * oTable.$('td').click( function () { - * var sData = oTable.fnGetData( this ); - * alert( 'The cell clicked on had the value of '+sData ); - * } ); - * } ); - */ - this.fnGetData = function( src, col ) - { - var api = this.api( true ); - - if ( src !== undefined ) { - var type = src.nodeName ? src.nodeName.toLowerCase() : ''; - - return col !== undefined || type == 'td' || type == 'th' ? - api.cell( src, col ).data() : - api.row( src ).data() || null; - } - - return api.data().toArray(); - }; - - - /** - * Get an array of the TR nodes that are used in the table's body. Note that you will - * typically want to use the '$' API method in preference to this as it is more - * flexible. - * @param {int} [iRow] Optional row index for the TR element you want - * @returns {array|node} If iRow is undefined, returns an array of all TR elements - * in the table's body, or iRow is defined, just the TR element requested. - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Get the nodes from the table - * var nNodes = oTable.fnGetNodes( ); - * } ); - */ - this.fnGetNodes = function( iRow ) - { - var api = this.api( true ); - - return iRow !== undefined ? - api.row( iRow ).node() : - api.rows().nodes().flatten().toArray(); - }; - - - /** - * Get the array indexes of a particular cell from it's DOM element - * and column index including hidden columns - * @param {node} node this can either be a TR, TD or TH in the table's body - * @returns {int} If nNode is given as a TR, then a single index is returned, or - * if given as a cell, an array of [row index, column index (visible), - * column index (all)] is given. - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * $('#example tbody td').click( function () { - * // Get the position of the current data from the node - * var aPos = oTable.fnGetPosition( this ); - * - * // Get the data array for this row - * var aData = oTable.fnGetData( aPos[0] ); - * - * // Update the data array and return the value - * aData[ aPos[1] ] = 'clicked'; - * this.innerHTML = 'clicked'; - * } ); - * - * // Init DataTables - * oTable = $('#example').dataTable(); - * } ); - */ - this.fnGetPosition = function( node ) - { - var api = this.api( true ); - var nodeName = node.nodeName.toUpperCase(); - - if ( nodeName == 'TR' ) { - return api.row( node ).index(); - } - else if ( nodeName == 'TD' || nodeName == 'TH' ) { - var cell = api.cell( node ).index(); - - return [ - cell.row, - cell.columnVisible, - cell.column - ]; - } - return null; - }; - - - /** - * Check to see if a row is 'open' or not. - * @param {node} nTr the table row to check - * @returns {boolean} true if the row is currently open, false otherwise - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable; - * - * // 'open' an information row when a row is clicked on - * $('#example tbody tr').click( function () { - * if ( oTable.fnIsOpen(this) ) { - * oTable.fnClose( this ); - * } else { - * oTable.fnOpen( this, "Temporary row opened", "info_row" ); - * } - * } ); - * - * oTable = $('#example').dataTable(); - * } ); - */ - this.fnIsOpen = function( nTr ) - { - return this.api( true ).row( nTr ).child.isShown(); - }; - - - /** - * This function will place a new row directly after a row which is currently - * on display on the page, with the HTML contents that is passed into the - * function. This can be used, for example, to ask for confirmation that a - * particular record should be deleted. - * @param {node} nTr The table row to 'open' - * @param {string|node|jQuery} mHtml The HTML to put into the row - * @param {string} sClass Class to give the new TD cell - * @returns {node} The row opened. Note that if the table row passed in as the - * first parameter, is not found in the table, this method will silently - * return. - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable; - * - * // 'open' an information row when a row is clicked on - * $('#example tbody tr').click( function () { - * if ( oTable.fnIsOpen(this) ) { - * oTable.fnClose( this ); - * } else { - * oTable.fnOpen( this, "Temporary row opened", "info_row" ); - * } - * } ); - * - * oTable = $('#example').dataTable(); - * } ); - */ - this.fnOpen = function( nTr, mHtml, sClass ) - { - return this.api( true ) - .row( nTr ) - .child( mHtml, sClass ) - .show() - .child()[0]; - }; - - - /** - * Change the pagination - provides the internal logic for pagination in a simple API - * function. With this function you can have a DataTables table go to the next, - * previous, first or last pages. - * @param {string|int} mAction Paging action to take: "first", "previous", "next" or "last" - * or page number to jump to (integer), note that page 0 is the first page. - * @param {bool} [bRedraw=true] Redraw the table or not - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * oTable.fnPageChange( 'next' ); - * } ); - */ - this.fnPageChange = function ( mAction, bRedraw ) - { - var api = this.api( true ).page( mAction ); - - if ( bRedraw === undefined || bRedraw ) { - api.draw(false); - } - }; - - - /** - * Show a particular column - * @param {int} iCol The column whose display should be changed - * @param {bool} bShow Show (true) or hide (false) the column - * @param {bool} [bRedraw=true] Redraw the table or not - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Hide the second column after initialisation - * oTable.fnSetColumnVis( 1, false ); - * } ); - */ - this.fnSetColumnVis = function ( iCol, bShow, bRedraw ) - { - var api = this.api( true ).column( iCol ).visible( bShow ); - - if ( bRedraw === undefined || bRedraw ) { - api.columns.adjust().draw(); - } - }; - - - /** - * Get the settings for a particular table for external manipulation - * @returns {object} DataTables settings object. See - * {@link DataTable.models.oSettings} - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * var oSettings = oTable.fnSettings(); - * - * // Show an example parameter from the settings - * alert( oSettings._iDisplayStart ); - * } ); - */ - this.fnSettings = function() - { - return _fnSettingsFromNode( this[_ext.iApiIndex] ); - }; - - - /** - * Sort the table by a particular column - * @param {int} iCol the data index to sort on. Note that this will not match the - * 'display index' if you have hidden data entries - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Sort immediately with columns 0 and 1 - * oTable.fnSort( [ [0,'asc'], [1,'asc'] ] ); - * } ); - */ - this.fnSort = function( aaSort ) - { - this.api( true ).order( aaSort ).draw(); - }; - - - /** - * Attach a sort listener to an element for a given column - * @param {node} nNode the element to attach the sort listener to - * @param {int} iColumn the column that a click on this node will sort on - * @param {function} [fnCallback] callback function when sort is run - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Sort on column 1, when 'sorter' is clicked on - * oTable.fnSortListener( document.getElementById('sorter'), 1 ); - * } ); - */ - this.fnSortListener = function( nNode, iColumn, fnCallback ) - { - this.api( true ).order.listener( nNode, iColumn, fnCallback ); - }; - - - /** - * Update a table cell or row - this method will accept either a single value to - * update the cell with, an array of values with one element for each column or - * an object in the same format as the original data source. The function is - * self-referencing in order to make the multi column updates easier. - * @param {object|array|string} mData Data to update the cell/row with - * @param {node|int} mRow TR element you want to update or the aoData index - * @param {int} [iColumn] The column to update, give as null or undefined to - * update a whole row. - * @param {bool} [bRedraw=true] Redraw the table or not - * @param {bool} [bAction=true] Perform pre-draw actions or not - * @returns {int} 0 on success, 1 on error - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * oTable.fnUpdate( 'Example update', 0, 0 ); // Single cell - * oTable.fnUpdate( ['a', 'b', 'c', 'd', 'e'], $('tbody tr')[0] ); // Row - * } ); - */ - this.fnUpdate = function( mData, mRow, iColumn, bRedraw, bAction ) - { - var api = this.api( true ); - - if ( iColumn === undefined || iColumn === null ) { - api.row( mRow ).data( mData ); - } - else { - api.cell( mRow, iColumn ).data( mData ); - } - - if ( bAction === undefined || bAction ) { - api.columns.adjust(); - } - - if ( bRedraw === undefined || bRedraw ) { - api.draw(); - } - return 0; - }; - - - /** - * Provide a common method for plug-ins to check the version of DataTables being used, in order - * to ensure compatibility. - * @param {string} sVersion Version string to check for, in the format "X.Y.Z". Note that the - * formats "X" and "X.Y" are also acceptable. - * @returns {boolean} true if this version of DataTables is greater or equal to the required - * version, or false if this version of DataTales is not suitable - * @method - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * alert( oTable.fnVersionCheck( '1.9.0' ) ); - * } ); - */ - this.fnVersionCheck = _ext.fnVersionCheck; - - - var _that = this; - var emptyInit = options === undefined; - var len = this.length; - - if ( emptyInit ) { - options = {}; - } - - this.oApi = this.internal = _ext.internal; - - // Extend with old style plug-in API methods - for ( var fn in DataTable.ext.internal ) { - if ( fn ) { - this[fn] = _fnExternApiFunc(fn); - } - } - - this.each(function() { - // For each initialisation we want to give it a clean initialisation - // object that can be bashed around - var o = {}; - var oInit = len > 1 ? // optimisation for single table case - _fnExtend( o, options, true ) : - options; - - /*global oInit,_that,emptyInit*/ - var i=0, iLen, j, jLen, k, kLen; - var sId = this.getAttribute( 'id' ); - var bInitHandedOff = false; - var defaults = DataTable.defaults; - - - /* Sanity check */ - if ( this.nodeName.toLowerCase() != 'table' ) - { - _fnLog( null, 0, 'Non-table node initialisation ('+this.nodeName+')', 2 ); - return; - } - - /* Backwards compatibility for the defaults */ - _fnCompatOpts( defaults ); - _fnCompatCols( defaults.column ); - - /* Convert the camel-case defaults to Hungarian */ - _fnCamelToHungarian( defaults, defaults, true ); - _fnCamelToHungarian( defaults.column, defaults.column, true ); - - /* Setting up the initialisation object */ - _fnCamelToHungarian( defaults, oInit ); - - /* Check to see if we are re-initialising a table */ - var allSettings = DataTable.settings; - for ( i=0, iLen=allSettings.length ; i<iLen ; i++ ) - { - /* Base check on table node */ - if ( allSettings[i].nTable == this ) - { - var bRetrieve = oInit.bRetrieve !== undefined ? oInit.bRetrieve : defaults.bRetrieve; - var bDestroy = oInit.bDestroy !== undefined ? oInit.bDestroy : defaults.bDestroy; - - if ( emptyInit || bRetrieve ) - { - return allSettings[i].oInstance; - } - else if ( bDestroy ) - { - allSettings[i].oInstance.fnDestroy(); - break; - } - else - { - _fnLog( allSettings[i], 0, 'Cannot reinitialise DataTable', 3 ); - return; - } - } - - /* If the element we are initialising has the same ID as a table which was previously - * initialised, but the table nodes don't match (from before) then we destroy the old - * instance by simply deleting it. This is under the assumption that the table has been - * destroyed by other methods. Anyone using non-id selectors will need to do this manually - */ - if ( allSettings[i].sTableId == this.id ) - { - allSettings.splice( i, 1 ); - break; - } - } - - /* Ensure the table has an ID - required for accessibility */ - if ( sId === null || sId === "" ) - { - sId = "DataTables_Table_"+(DataTable.ext._unique++); - this.id = sId; - } - - /* Create the settings object for this table and set some of the default parameters */ - var oSettings = $.extend( true, {}, DataTable.models.oSettings, { - "nTable": this, - "oApi": _that.internal, - "oInit": oInit, - "sDestroyWidth": $(this)[0].style.width, - "sInstance": sId, - "sTableId": sId - } ); - allSettings.push( oSettings ); - - // Need to add the instance after the instance after the settings object has been added - // to the settings array, so we can self reference the table instance if more than one - oSettings.oInstance = (_that.length===1) ? _that : $(this).dataTable(); - - // Backwards compatibility, before we apply all the defaults - _fnCompatOpts( oInit ); - - if ( oInit.oLanguage ) - { - _fnLanguageCompat( oInit.oLanguage ); - } - - // If the length menu is given, but the init display length is not, use the length menu - if ( oInit.aLengthMenu && ! oInit.iDisplayLength ) - { - oInit.iDisplayLength = $.isArray( oInit.aLengthMenu[0] ) ? - oInit.aLengthMenu[0][0] : oInit.aLengthMenu[0]; - } - - // Apply the defaults and init options to make a single init object will all - // options defined from defaults and instance options. - oInit = _fnExtend( $.extend( true, {}, defaults ), oInit ); - - - // Map the initialisation options onto the settings object - _fnMap( oSettings.oFeatures, oInit, [ - "bPaginate", - "bLengthChange", - "bFilter", - "bSort", - "bSortMulti", - "bInfo", - "bProcessing", - "bAutoWidth", - "bSortClasses", - "bServerSide", - "bDeferRender" - ] ); - _fnMap( oSettings, oInit, [ - "asStripeClasses", - "ajax", - "fnServerData", - "fnFormatNumber", - "sServerMethod", - "aaSorting", - "aaSortingFixed", - "aLengthMenu", - "sPaginationType", - "sAjaxSource", - "sAjaxDataProp", - "iStateDuration", - "sDom", - "bSortCellsTop", - "iTabIndex", - "fnStateLoadCallback", - "fnStateSaveCallback", - "renderer", - "searchDelay", - [ "iCookieDuration", "iStateDuration" ], // backwards compat - [ "oSearch", "oPreviousSearch" ], - [ "aoSearchCols", "aoPreSearchCols" ], - [ "iDisplayLength", "_iDisplayLength" ], - [ "bJQueryUI", "bJUI" ] - ] ); - _fnMap( oSettings.oScroll, oInit, [ - [ "sScrollX", "sX" ], - [ "sScrollXInner", "sXInner" ], - [ "sScrollY", "sY" ], - [ "bScrollCollapse", "bCollapse" ] - ] ); - _fnMap( oSettings.oLanguage, oInit, "fnInfoCallback" ); - - /* Callback functions which are array driven */ - _fnCallbackReg( oSettings, 'aoDrawCallback', oInit.fnDrawCallback, 'user' ); - _fnCallbackReg( oSettings, 'aoServerParams', oInit.fnServerParams, 'user' ); - _fnCallbackReg( oSettings, 'aoStateSaveParams', oInit.fnStateSaveParams, 'user' ); - _fnCallbackReg( oSettings, 'aoStateLoadParams', oInit.fnStateLoadParams, 'user' ); - _fnCallbackReg( oSettings, 'aoStateLoaded', oInit.fnStateLoaded, 'user' ); - _fnCallbackReg( oSettings, 'aoRowCallback', oInit.fnRowCallback, 'user' ); - _fnCallbackReg( oSettings, 'aoRowCreatedCallback', oInit.fnCreatedRow, 'user' ); - _fnCallbackReg( oSettings, 'aoHeaderCallback', oInit.fnHeaderCallback, 'user' ); - _fnCallbackReg( oSettings, 'aoFooterCallback', oInit.fnFooterCallback, 'user' ); - _fnCallbackReg( oSettings, 'aoInitComplete', oInit.fnInitComplete, 'user' ); - _fnCallbackReg( oSettings, 'aoPreDrawCallback', oInit.fnPreDrawCallback, 'user' ); - - var oClasses = oSettings.oClasses; - - // @todo Remove in 1.11 - if ( oInit.bJQueryUI ) - { - /* Use the JUI classes object for display. You could clone the oStdClasses object if - * you want to have multiple tables with multiple independent classes - */ - $.extend( oClasses, DataTable.ext.oJUIClasses, oInit.oClasses ); - - if ( oInit.sDom === defaults.sDom && defaults.sDom === "lfrtip" ) - { - /* Set the DOM to use a layout suitable for jQuery UI's theming */ - oSettings.sDom = '<"H"lfr>t<"F"ip>'; - } - - if ( ! oSettings.renderer ) { - oSettings.renderer = 'jqueryui'; - } - else if ( $.isPlainObject( oSettings.renderer ) && ! oSettings.renderer.header ) { - oSettings.renderer.header = 'jqueryui'; - } - } - else - { - $.extend( oClasses, DataTable.ext.classes, oInit.oClasses ); - } - $(this).addClass( oClasses.sTable ); - - /* Calculate the scroll bar width and cache it for use later on */ - if ( oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "" ) - { - oSettings.oScroll.iBarWidth = _fnScrollBarWidth(); - } - if ( oSettings.oScroll.sX === true ) { // Easy initialisation of x-scrolling - oSettings.oScroll.sX = '100%'; - } - - if ( oSettings.iInitDisplayStart === undefined ) - { - /* Display start point, taking into account the save saving */ - oSettings.iInitDisplayStart = oInit.iDisplayStart; - oSettings._iDisplayStart = oInit.iDisplayStart; - } - - if ( oInit.iDeferLoading !== null ) - { - oSettings.bDeferLoading = true; - var tmp = $.isArray( oInit.iDeferLoading ); - oSettings._iRecordsDisplay = tmp ? oInit.iDeferLoading[0] : oInit.iDeferLoading; - oSettings._iRecordsTotal = tmp ? oInit.iDeferLoading[1] : oInit.iDeferLoading; - } - - /* Language definitions */ - var oLanguage = oSettings.oLanguage; - $.extend( true, oLanguage, oInit.oLanguage ); - - if ( oLanguage.sUrl !== "" ) - { - /* Get the language definitions from a file - because this Ajax call makes the language - * get async to the remainder of this function we use bInitHandedOff to indicate that - * _fnInitialise will be fired by the returned Ajax handler, rather than the constructor - */ - $.ajax( { - dataType: 'json', - url: oLanguage.sUrl, - success: function ( json ) { - _fnLanguageCompat( json ); - _fnCamelToHungarian( defaults.oLanguage, json ); - $.extend( true, oLanguage, json ); - _fnInitialise( oSettings ); - }, - error: function () { - // Error occurred loading language file, continue on as best we can - _fnInitialise( oSettings ); - } - } ); - bInitHandedOff = true; - } - - /* - * Stripes - */ - if ( oInit.asStripeClasses === null ) - { - oSettings.asStripeClasses =[ - oClasses.sStripeOdd, - oClasses.sStripeEven - ]; - } - - /* Remove row stripe classes if they are already on the table row */ - var stripeClasses = oSettings.asStripeClasses; - var rowOne = $('tbody tr:eq(0)', this); - if ( $.inArray( true, $.map( stripeClasses, function(el, i) { - return rowOne.hasClass(el); - } ) ) !== -1 ) { - $('tbody tr', this).removeClass( stripeClasses.join(' ') ); - oSettings.asDestroyStripes = stripeClasses.slice(); - } - - /* - * Columns - * See if we should load columns automatically or use defined ones - */ - var anThs = []; - var aoColumnsInit; - var nThead = this.getElementsByTagName('thead'); - if ( nThead.length !== 0 ) - { - _fnDetectHeader( oSettings.aoHeader, nThead[0] ); - anThs = _fnGetUniqueThs( oSettings ); - } - - /* If not given a column array, generate one with nulls */ - if ( oInit.aoColumns === null ) - { - aoColumnsInit = []; - for ( i=0, iLen=anThs.length ; i<iLen ; i++ ) - { - aoColumnsInit.push( null ); - } - } - else - { - aoColumnsInit = oInit.aoColumns; - } - - /* Add the columns */ - for ( i=0, iLen=aoColumnsInit.length ; i<iLen ; i++ ) - { - _fnAddColumn( oSettings, anThs ? anThs[i] : null ); - } - - /* Apply the column definitions */ - _fnApplyColumnDefs( oSettings, oInit.aoColumnDefs, aoColumnsInit, function (iCol, oDef) { - _fnColumnOptions( oSettings, iCol, oDef ); - } ); - - /* HTML5 attribute detection - build an mData object automatically if the - * attributes are found - */ - if ( rowOne.length ) { - var a = function ( cell, name ) { - return cell.getAttribute( 'data-'+name ) ? name : null; - }; - - $.each( _fnGetRowElements( oSettings, rowOne[0] ).cells, function (i, cell) { - var col = oSettings.aoColumns[i]; - - if ( col.mData === i ) { - var sort = a( cell, 'sort' ) || a( cell, 'order' ); - var filter = a( cell, 'filter' ) || a( cell, 'search' ); - - if ( sort !== null || filter !== null ) { - col.mData = { - _: i+'.display', - sort: sort !== null ? i+'.@data-'+sort : undefined, - type: sort !== null ? i+'.@data-'+sort : undefined, - filter: filter !== null ? i+'.@data-'+filter : undefined - }; - - _fnColumnOptions( oSettings, i ); - } - } - } ); - } - - var features = oSettings.oFeatures; - - /* Must be done after everything which can be overridden by the state saving! */ - if ( oInit.bStateSave ) - { - features.bStateSave = true; - _fnLoadState( oSettings, oInit ); - _fnCallbackReg( oSettings, 'aoDrawCallback', _fnSaveState, 'state_save' ); - } - - - /* - * Sorting - * @todo For modularisation (1.11) this needs to do into a sort start up handler - */ - - // If aaSorting is not defined, then we use the first indicator in asSorting - // in case that has been altered, so the default sort reflects that option - if ( oInit.aaSorting === undefined ) - { - var sorting = oSettings.aaSorting; - for ( i=0, iLen=sorting.length ; i<iLen ; i++ ) - { - sorting[i][1] = oSettings.aoColumns[ i ].asSorting[0]; - } - } - - /* Do a first pass on the sorting classes (allows any size changes to be taken into - * account, and also will apply sorting disabled classes if disabled - */ - _fnSortingClasses( oSettings ); - - if ( features.bSort ) - { - _fnCallbackReg( oSettings, 'aoDrawCallback', function () { - if ( oSettings.bSorted ) { - var aSort = _fnSortFlatten( oSettings ); - var sortedColumns = {}; - - $.each( aSort, function (i, val) { - sortedColumns[ val.src ] = val.dir; - } ); - - _fnCallbackFire( oSettings, null, 'order', [oSettings, aSort, sortedColumns] ); - _fnSortAria( oSettings ); - } - } ); - } - - _fnCallbackReg( oSettings, 'aoDrawCallback', function () { - if ( oSettings.bSorted || _fnDataSource( oSettings ) === 'ssp' || features.bDeferRender ) { - _fnSortingClasses( oSettings ); - } - }, 'sc' ); - - - /* - * Final init - * Cache the header, body and footer as required, creating them if needed - */ - - /* Browser support detection */ - _fnBrowserDetect( oSettings ); - - // Work around for Webkit bug 83867 - store the caption-side before removing from doc - var captions = $(this).children('caption').each( function () { - this._captionSide = $(this).css('caption-side'); - } ); - - var thead = $(this).children('thead'); - if ( thead.length === 0 ) - { - thead = $('<thead/>').appendTo(this); - } - oSettings.nTHead = thead[0]; - - var tbody = $(this).children('tbody'); - if ( tbody.length === 0 ) - { - tbody = $('<tbody/>').appendTo(this); - } - oSettings.nTBody = tbody[0]; - - var tfoot = $(this).children('tfoot'); - if ( tfoot.length === 0 && captions.length > 0 && (oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "") ) - { - // If we are a scrolling table, and no footer has been given, then we need to create - // a tfoot element for the caption element to be appended to - tfoot = $('<tfoot/>').appendTo(this); - } - - if ( tfoot.length === 0 || tfoot.children().length === 0 ) { - $(this).addClass( oClasses.sNoFooter ); - } - else if ( tfoot.length > 0 ) { - oSettings.nTFoot = tfoot[0]; - _fnDetectHeader( oSettings.aoFooter, oSettings.nTFoot ); - } - - /* Check if there is data passing into the constructor */ - if ( oInit.aaData ) - { - for ( i=0 ; i<oInit.aaData.length ; i++ ) - { - _fnAddData( oSettings, oInit.aaData[ i ] ); - } - } - else if ( oSettings.bDeferLoading || _fnDataSource( oSettings ) == 'dom' ) - { - /* Grab the data from the page - only do this when deferred loading or no Ajax - * source since there is no point in reading the DOM data if we are then going - * to replace it with Ajax data - */ - _fnAddTr( oSettings, $(oSettings.nTBody).children('tr') ); - } - - /* Copy the data index array */ - oSettings.aiDisplay = oSettings.aiDisplayMaster.slice(); - - /* Initialisation complete - table can be drawn */ - oSettings.bInitialised = true; - - /* Check if we need to initialise the table (it might not have been handed off to the - * language processor) - */ - if ( bInitHandedOff === false ) - { - _fnInitialise( oSettings ); - } - } ); - _that = null; - return this; - }; - - - - /** - * Computed structure of the DataTables API, defined by the options passed to - * `DataTable.Api.register()` when building the API. - * - * The structure is built in order to speed creation and extension of the Api - * objects since the extensions are effectively pre-parsed. - * - * The array is an array of objects with the following structure, where this - * base array represents the Api prototype base: - * - * [ - * { - * name: 'data' -- string - Property name - * val: function () {}, -- function - Api method (or undefined if just an object - * methodExt: [ ... ], -- array - Array of Api object definitions to extend the method result - * propExt: [ ... ] -- array - Array of Api object definitions to extend the property - * }, - * { - * name: 'row' - * val: {}, - * methodExt: [ ... ], - * propExt: [ - * { - * name: 'data' - * val: function () {}, - * methodExt: [ ... ], - * propExt: [ ... ] - * }, - * ... - * ] - * } - * ] - * - * @type {Array} - * @ignore - */ - var __apiStruct = []; - - - /** - * `Array.prototype` reference. - * - * @type object - * @ignore - */ - var __arrayProto = Array.prototype; - - - /** - * Abstraction for `context` parameter of the `Api` constructor to allow it to - * take several different forms for ease of use. - * - * Each of the input parameter types will be converted to a DataTables settings - * object where possible. - * - * @param {string|node|jQuery|object} mixed DataTable identifier. Can be one - * of: - * - * * `string` - jQuery selector. Any DataTables' matching the given selector - * with be found and used. - * * `node` - `TABLE` node which has already been formed into a DataTable. - * * `jQuery` - A jQuery object of `TABLE` nodes. - * * `object` - DataTables settings object - * * `DataTables.Api` - API instance - * @return {array|null} Matching DataTables settings objects. `null` or - * `undefined` is returned if no matching DataTable is found. - * @ignore - */ - var _toSettings = function ( mixed ) - { - var idx, jq; - var settings = DataTable.settings; - var tables = $.map( settings, function (el, i) { - return el.nTable; - } ); - - if ( ! mixed ) { - return []; - } - else if ( mixed.nTable && mixed.oApi ) { - // DataTables settings object - return [ mixed ]; - } - else if ( mixed.nodeName && mixed.nodeName.toLowerCase() === 'table' ) { - // Table node - idx = $.inArray( mixed, tables ); - return idx !== -1 ? [ settings[idx] ] : null; - } - else if ( mixed && typeof mixed.settings === 'function' ) { - return mixed.settings().toArray(); - } - else if ( typeof mixed === 'string' ) { - // jQuery selector - jq = $(mixed); - } - else if ( mixed instanceof $ ) { - // jQuery object (also DataTables instance) - jq = mixed; - } - - if ( jq ) { - return jq.map( function(i) { - idx = $.inArray( this, tables ); - return idx !== -1 ? settings[idx] : null; - } ).toArray(); - } - }; - - - /** - * DataTables API class - used to control and interface with one or more - * DataTables enhanced tables. - * - * The API class is heavily based on jQuery, presenting a chainable interface - * that you can use to interact with tables. Each instance of the API class has - * a "context" - i.e. the tables that it will operate on. This could be a single - * table, all tables on a page or a sub-set thereof. - * - * Additionally the API is designed to allow you to easily work with the data in - * the tables, retrieving and manipulating it as required. This is done by - * presenting the API class as an array like interface. The contents of the - * array depend upon the actions requested by each method (for example - * `rows().nodes()` will return an array of nodes, while `rows().data()` will - * return an array of objects or arrays depending upon your table's - * configuration). The API object has a number of array like methods (`push`, - * `pop`, `reverse` etc) as well as additional helper methods (`each`, `pluck`, - * `unique` etc) to assist your working with the data held in a table. - * - * Most methods (those which return an Api instance) are chainable, which means - * the return from a method call also has all of the methods available that the - * top level object had. For example, these two calls are equivalent: - * - * // Not chained - * api.row.add( {...} ); - * api.draw(); - * - * // Chained - * api.row.add( {...} ).draw(); - * - * @class DataTable.Api - * @param {array|object|string|jQuery} context DataTable identifier. This is - * used to define which DataTables enhanced tables this API will operate on. - * Can be one of: - * - * * `string` - jQuery selector. Any DataTables' matching the given selector - * with be found and used. - * * `node` - `TABLE` node which has already been formed into a DataTable. - * * `jQuery` - A jQuery object of `TABLE` nodes. - * * `object` - DataTables settings object - * @param {array} [data] Data to initialise the Api instance with. - * - * @example - * // Direct initialisation during DataTables construction - * var api = $('#example').DataTable(); - * - * @example - * // Initialisation using a DataTables jQuery object - * var api = $('#example').dataTable().api(); - * - * @example - * // Initialisation as a constructor - * var api = new $.fn.DataTable.Api( 'table.dataTable' ); - */ - _Api = function ( context, data ) - { - if ( ! this instanceof _Api ) { - throw 'DT API must be constructed as a new object'; - // or should it do the 'new' for the caller? - // return new _Api.apply( this, arguments ); - } - - var settings = []; - var ctxSettings = function ( o ) { - var a = _toSettings( o ); - if ( a ) { - settings.push.apply( settings, a ); - } - }; - - if ( $.isArray( context ) ) { - for ( var i=0, ien=context.length ; i<ien ; i++ ) { - ctxSettings( context[i] ); - } - } - else { - ctxSettings( context ); - } - - // Remove duplicates - this.context = _unique( settings ); - - // Initial data - if ( data ) { - this.push.apply( this, data.toArray ? data.toArray() : data ); - } - - // selector - this.selector = { - rows: null, - cols: null, - opts: null - }; - - _Api.extend( this, this, __apiStruct ); - }; - - DataTable.Api = _Api; - - _Api.prototype = /** @lends DataTables.Api */{ - /** - * Return a new Api instance, comprised of the data held in the current - * instance, join with the other array(s) and/or value(s). - * - * An alias for `Array.prototype.concat`. - * - * @type method - * @param {*} value1 Arrays and/or values to concatenate. - * @param {*} [...] Additional arrays and/or values to concatenate. - * @returns {DataTables.Api} New API instance, comprising of the combined - * array. - */ - concat: __arrayProto.concat, - - - context: [], // array of table settings objects - - - each: function ( fn ) - { - for ( var i=0, ien=this.length ; i<ien; i++ ) { - fn.call( this, this[i], i, this ); - } - - return this; - }, - - - eq: function ( idx ) - { - var ctx = this.context; - - return ctx.length > idx ? - new _Api( ctx[idx], this[idx] ) : - null; - }, - - - filter: function ( fn ) - { - var a = []; - - if ( __arrayProto.filter ) { - a = __arrayProto.filter.call( this, fn, this ); - } - else { - // Compatibility for browsers without EMCA-252-5 (JS 1.6) - for ( var i=0, ien=this.length ; i<ien ; i++ ) { - if ( fn.call( this, this[i], i, this ) ) { - a.push( this[i] ); - } - } - } - - return new _Api( this.context, a ); - }, - - - flatten: function () - { - var a = []; - return new _Api( this.context, a.concat.apply( a, this.toArray() ) ); - }, - - - join: __arrayProto.join, - - - indexOf: __arrayProto.indexOf || function (obj, start) - { - for ( var i=(start || 0), ien=this.length ; i<ien ; i++ ) { - if ( this[i] === obj ) { - return i; - } - } - return -1; - }, - - // Note that `alwaysNew` is internal - use iteratorNew externally - iterator: function ( flatten, type, fn, alwaysNew ) { - var - a = [], ret, - i, ien, j, jen, - context = this.context, - rows, items, item, - selector = this.selector; - - // Argument shifting - if ( typeof flatten === 'string' ) { - alwaysNew = fn; - fn = type; - type = flatten; - flatten = false; - } - - for ( i=0, ien=context.length ; i<ien ; i++ ) { - var apiInst = new _Api( context[i] ); - - if ( type === 'table' ) { - ret = fn.call( apiInst, context[i], i ); - - if ( ret !== undefined ) { - a.push( ret ); - } - } - else if ( type === 'columns' || type === 'rows' ) { - // this has same length as context - one entry for each table - ret = fn.call( apiInst, context[i], this[i], i ); - - if ( ret !== undefined ) { - a.push( ret ); - } - } - else if ( type === 'column' || type === 'column-rows' || type === 'row' || type === 'cell' ) { - // columns and rows share the same structure. - // 'this' is an array of column indexes for each context - items = this[i]; - - if ( type === 'column-rows' ) { - rows = _selector_row_indexes( context[i], selector.opts ); - } - - for ( j=0, jen=items.length ; j<jen ; j++ ) { - item = items[j]; - - if ( type === 'cell' ) { - ret = fn.call( apiInst, context[i], item.row, item.column, i, j ); - } - else { - ret = fn.call( apiInst, context[i], item, i, j, rows ); - } - - if ( ret !== undefined ) { - a.push( ret ); - } - } - } - } - - if ( a.length || alwaysNew ) { - var api = new _Api( context, flatten ? a.concat.apply( [], a ) : a ); - var apiSelector = api.selector; - apiSelector.rows = selector.rows; - apiSelector.cols = selector.cols; - apiSelector.opts = selector.opts; - return api; - } - return this; - }, - - - lastIndexOf: __arrayProto.lastIndexOf || function (obj, start) - { - // Bit cheeky... - return this.indexOf.apply( this.toArray.reverse(), arguments ); - }, - - - length: 0, - - - map: function ( fn ) - { - var a = []; - - if ( __arrayProto.map ) { - a = __arrayProto.map.call( this, fn, this ); - } - else { - // Compatibility for browsers without EMCA-252-5 (JS 1.6) - for ( var i=0, ien=this.length ; i<ien ; i++ ) { - a.push( fn.call( this, this[i], i ) ); - } - } - - return new _Api( this.context, a ); - }, - - - pluck: function ( prop ) - { - return this.map( function ( el ) { - return el[ prop ]; - } ); - }, - - pop: __arrayProto.pop, - - - push: __arrayProto.push, - - - // Does not return an API instance - reduce: __arrayProto.reduce || function ( fn, init ) - { - return _fnReduce( this, fn, init, 0, this.length, 1 ); - }, - - - reduceRight: __arrayProto.reduceRight || function ( fn, init ) - { - return _fnReduce( this, fn, init, this.length-1, -1, -1 ); - }, - - - reverse: __arrayProto.reverse, - - - // Object with rows, columns and opts - selector: null, - - - shift: __arrayProto.shift, - - - sort: __arrayProto.sort, // ? name - order? - - - splice: __arrayProto.splice, - - - toArray: function () - { - return __arrayProto.slice.call( this ); - }, - - - to$: function () - { - return $( this ); - }, - - - toJQuery: function () - { - return $( this ); - }, - - - unique: function () - { - return new _Api( this.context, _unique(this) ); - }, - - - unshift: __arrayProto.unshift - }; - - - _Api.extend = function ( scope, obj, ext ) - { - // Only extend API instances and static properties of the API - if ( ! obj || ( ! (obj instanceof _Api) && ! obj.__dt_wrapper ) ) { - return; - } - - var - i, ien, - j, jen, - struct, inner, - methodScoping = function ( scope, fn, struc ) { - return function () { - var ret = fn.apply( scope, arguments ); - - // Method extension - _Api.extend( ret, ret, struc.methodExt ); - return ret; - }; - }; - - for ( i=0, ien=ext.length ; i<ien ; i++ ) { - struct = ext[i]; - - // Value - obj[ struct.name ] = typeof struct.val === 'function' ? - methodScoping( scope, struct.val, struct ) : - $.isPlainObject( struct.val ) ? - {} : - struct.val; - - obj[ struct.name ].__dt_wrapper = true; - - // Property extension - _Api.extend( scope, obj[ struct.name ], struct.propExt ); - } - }; - - - // @todo - Is there need for an augment function? - // _Api.augment = function ( inst, name ) - // { - // // Find src object in the structure from the name - // var parts = name.split('.'); - - // _Api.extend( inst, obj ); - // }; - - - // [ - // { - // name: 'data' -- string - Property name - // val: function () {}, -- function - Api method (or undefined if just an object - // methodExt: [ ... ], -- array - Array of Api object definitions to extend the method result - // propExt: [ ... ] -- array - Array of Api object definitions to extend the property - // }, - // { - // name: 'row' - // val: {}, - // methodExt: [ ... ], - // propExt: [ - // { - // name: 'data' - // val: function () {}, - // methodExt: [ ... ], - // propExt: [ ... ] - // }, - // ... - // ] - // } - // ] - - _Api.register = _api_register = function ( name, val ) - { - if ( $.isArray( name ) ) { - for ( var j=0, jen=name.length ; j<jen ; j++ ) { - _Api.register( name[j], val ); - } - return; - } - - var - i, ien, - heir = name.split('.'), - struct = __apiStruct, - key, method; - - var find = function ( src, name ) { - for ( var i=0, ien=src.length ; i<ien ; i++ ) { - if ( src[i].name === name ) { - return src[i]; - } - } - return null; - }; - - for ( i=0, ien=heir.length ; i<ien ; i++ ) { - method = heir[i].indexOf('()') !== -1; - key = method ? - heir[i].replace('()', '') : - heir[i]; - - var src = find( struct, key ); - if ( ! src ) { - src = { - name: key, - val: {}, - methodExt: [], - propExt: [] - }; - struct.push( src ); - } - - if ( i === ien-1 ) { - src.val = val; - } - else { - struct = method ? - src.methodExt : - src.propExt; - } - } - }; - - - _Api.registerPlural = _api_registerPlural = function ( pluralName, singularName, val ) { - _Api.register( pluralName, val ); - - _Api.register( singularName, function () { - var ret = val.apply( this, arguments ); - - if ( ret === this ) { - // Returned item is the API instance that was passed in, return it - return this; - } - else if ( ret instanceof _Api ) { - // New API instance returned, want the value from the first item - // in the returned array for the singular result. - return ret.length ? - $.isArray( ret[0] ) ? - new _Api( ret.context, ret[0] ) : // Array results are 'enhanced' - ret[0] : - undefined; - } - - // Non-API return - just fire it back - return ret; - } ); - }; - - - /** - * Selector for HTML tables. Apply the given selector to the give array of - * DataTables settings objects. - * - * @param {string|integer} [selector] jQuery selector string or integer - * @param {array} Array of DataTables settings objects to be filtered - * @return {array} - * @ignore - */ - var __table_selector = function ( selector, a ) - { - // Integer is used to pick out a table by index - if ( typeof selector === 'number' ) { - return [ a[ selector ] ]; - } - - // Perform a jQuery selector on the table nodes - var nodes = $.map( a, function (el, i) { - return el.nTable; - } ); - - return $(nodes) - .filter( selector ) - .map( function (i) { - // Need to translate back from the table node to the settings - var idx = $.inArray( this, nodes ); - return a[ idx ]; - } ) - .toArray(); - }; - - - - /** - * Context selector for the API's context (i.e. the tables the API instance - * refers to. - * - * @name DataTable.Api#tables - * @param {string|integer} [selector] Selector to pick which tables the iterator - * should operate on. If not given, all tables in the current context are - * used. This can be given as a jQuery selector (for example `':gt(0)'`) to - * select multiple tables or as an integer to select a single table. - * @returns {DataTable.Api} Returns a new API instance if a selector is given. - */ - _api_register( 'tables()', function ( selector ) { - // A new instance is created if there was a selector specified - return selector ? - new _Api( __table_selector( selector, this.context ) ) : - this; - } ); - - - _api_register( 'table()', function ( selector ) { - var tables = this.tables( selector ); - var ctx = tables.context; - - // Truncate to the first matched table - return ctx.length ? - new _Api( ctx[0] ) : - tables; - } ); - - - _api_registerPlural( 'tables().nodes()', 'table().node()' , function () { - return this.iterator( 'table', function ( ctx ) { - return ctx.nTable; - }, 1 ); - } ); - - - _api_registerPlural( 'tables().body()', 'table().body()' , function () { - return this.iterator( 'table', function ( ctx ) { - return ctx.nTBody; - }, 1 ); - } ); - - - _api_registerPlural( 'tables().header()', 'table().header()' , function () { - return this.iterator( 'table', function ( ctx ) { - return ctx.nTHead; - }, 1 ); - } ); - - - _api_registerPlural( 'tables().footer()', 'table().footer()' , function () { - return this.iterator( 'table', function ( ctx ) { - return ctx.nTFoot; - }, 1 ); - } ); - - - _api_registerPlural( 'tables().containers()', 'table().container()' , function () { - return this.iterator( 'table', function ( ctx ) { - return ctx.nTableWrapper; - }, 1 ); - } ); - - - - /** - * Redraw the tables in the current context. - * - * @param {boolean} [reset=true] Reset (default) or hold the current paging - * position. A full re-sort and re-filter is performed when this method is - * called, which is why the pagination reset is the default action. - * @returns {DataTables.Api} this - */ - _api_register( 'draw()', function ( resetPaging ) { - return this.iterator( 'table', function ( settings ) { - _fnReDraw( settings, resetPaging===false ); - } ); - } ); - - - - /** - * Get the current page index. - * - * @return {integer} Current page index (zero based) - *//** - * Set the current page. - * - * Note that if you attempt to show a page which does not exist, DataTables will - * not throw an error, but rather reset the paging. - * - * @param {integer|string} action The paging action to take. This can be one of: - * * `integer` - The page index to jump to - * * `string` - An action to take: - * * `first` - Jump to first page. - * * `next` - Jump to the next page - * * `previous` - Jump to previous page - * * `last` - Jump to the last page. - * @returns {DataTables.Api} this - */ - _api_register( 'page()', function ( action ) { - if ( action === undefined ) { - return this.page.info().page; // not an expensive call - } - - // else, have an action to take on all tables - return this.iterator( 'table', function ( settings ) { - _fnPageChange( settings, action ); - } ); - } ); - - - /** - * Paging information for the first table in the current context. - * - * If you require paging information for another table, use the `table()` method - * with a suitable selector. - * - * @return {object} Object with the following properties set: - * * `page` - Current page index (zero based - i.e. the first page is `0`) - * * `pages` - Total number of pages - * * `start` - Display index for the first record shown on the current page - * * `end` - Display index for the last record shown on the current page - * * `length` - Display length (number of records). Note that generally `start - * + length = end`, but this is not always true, for example if there are - * only 2 records to show on the final page, with a length of 10. - * * `recordsTotal` - Full data set length - * * `recordsDisplay` - Data set length once the current filtering criterion - * are applied. - */ - _api_register( 'page.info()', function ( action ) { - if ( this.context.length === 0 ) { - return undefined; - } - - var - settings = this.context[0], - start = settings._iDisplayStart, - len = settings._iDisplayLength, - visRecords = settings.fnRecordsDisplay(), - all = len === -1; - - return { - "page": all ? 0 : Math.floor( start / len ), - "pages": all ? 1 : Math.ceil( visRecords / len ), - "start": start, - "end": settings.fnDisplayEnd(), - "length": len, - "recordsTotal": settings.fnRecordsTotal(), - "recordsDisplay": visRecords - }; - } ); - - - /** - * Get the current page length. - * - * @return {integer} Current page length. Note `-1` indicates that all records - * are to be shown. - *//** - * Set the current page length. - * - * @param {integer} Page length to set. Use `-1` to show all records. - * @returns {DataTables.Api} this - */ - _api_register( 'page.len()', function ( len ) { - // Note that we can't call this function 'length()' because `length` - // is a Javascript property of functions which defines how many arguments - // the function expects. - if ( len === undefined ) { - return this.context.length !== 0 ? - this.context[0]._iDisplayLength : - undefined; - } - - // else, set the page length - return this.iterator( 'table', function ( settings ) { - _fnLengthChange( settings, len ); - } ); - } ); - - - - var __reload = function ( settings, holdPosition, callback ) { - if ( _fnDataSource( settings ) == 'ssp' ) { - _fnReDraw( settings, holdPosition ); - } - else { - // Trigger xhr - _fnProcessingDisplay( settings, true ); - - _fnBuildAjax( settings, [], function( json ) { - _fnClearTable( settings ); - - var data = _fnAjaxDataSrc( settings, json ); - for ( var i=0, ien=data.length ; i<ien ; i++ ) { - _fnAddData( settings, data[i] ); - } - - _fnReDraw( settings, holdPosition ); - _fnProcessingDisplay( settings, false ); - } ); - } - - // Use the draw event to trigger a callback, regardless of if it is an async - // or sync draw - if ( callback ) { - var api = new _Api( settings ); - - api.one( 'draw', function () { - callback( api.ajax.json() ); - } ); - } - }; - - - /** - * Get the JSON response from the last Ajax request that DataTables made to the - * server. Note that this returns the JSON from the first table in the current - * context. - * - * @return {object} JSON received from the server. - */ - _api_register( 'ajax.json()', function () { - var ctx = this.context; - - if ( ctx.length > 0 ) { - return ctx[0].json; - } - - // else return undefined; - } ); - - - /** - * Get the data submitted in the last Ajax request - */ - _api_register( 'ajax.params()', function () { - var ctx = this.context; - - if ( ctx.length > 0 ) { - return ctx[0].oAjaxData; - } - - // else return undefined; - } ); - - - /** - * Reload tables from the Ajax data source. Note that this function will - * automatically re-draw the table when the remote data has been loaded. - * - * @param {boolean} [reset=true] Reset (default) or hold the current paging - * position. A full re-sort and re-filter is performed when this method is - * called, which is why the pagination reset is the default action. - * @returns {DataTables.Api} this - */ - _api_register( 'ajax.reload()', function ( callback, resetPaging ) { - return this.iterator( 'table', function (settings) { - __reload( settings, resetPaging===false, callback ); - } ); - } ); - - - /** - * Get the current Ajax URL. Note that this returns the URL from the first - * table in the current context. - * - * @return {string} Current Ajax source URL - *//** - * Set the Ajax URL. Note that this will set the URL for all tables in the - * current context. - * - * @param {string} url URL to set. - * @returns {DataTables.Api} this - */ - _api_register( 'ajax.url()', function ( url ) { - var ctx = this.context; - - if ( url === undefined ) { - // get - if ( ctx.length === 0 ) { - return undefined; - } - ctx = ctx[0]; - - return ctx.ajax ? - $.isPlainObject( ctx.ajax ) ? - ctx.ajax.url : - ctx.ajax : - ctx.sAjaxSource; - } - - // set - return this.iterator( 'table', function ( settings ) { - if ( $.isPlainObject( settings.ajax ) ) { - settings.ajax.url = url; - } - else { - settings.ajax = url; - } - // No need to consider sAjaxSource here since DataTables gives priority - // to `ajax` over `sAjaxSource`. So setting `ajax` here, renders any - // value of `sAjaxSource` redundant. - } ); - } ); - - - /** - * Load data from the newly set Ajax URL. Note that this method is only - * available when `ajax.url()` is used to set a URL. Additionally, this method - * has the same effect as calling `ajax.reload()` but is provided for - * convenience when setting a new URL. Like `ajax.reload()` it will - * automatically redraw the table once the remote data has been loaded. - * - * @returns {DataTables.Api} this - */ - _api_register( 'ajax.url().load()', function ( callback, resetPaging ) { - // Same as a reload, but makes sense to present it for easy access after a - // url change - return this.iterator( 'table', function ( ctx ) { - __reload( ctx, resetPaging===false, callback ); - } ); - } ); - - - - - var _selector_run = function ( selector, select ) - { - var - out = [], res, - a, i, ien, j, jen, - selectorType = typeof selector; - - // Can't just check for isArray here, as an API or jQuery instance might be - // given with their array like look - if ( ! selector || selectorType === 'string' || selectorType === 'function' || selector.length === undefined ) { - selector = [ selector ]; - } - - for ( i=0, ien=selector.length ; i<ien ; i++ ) { - a = selector[i] && selector[i].split ? - selector[i].split(',') : - [ selector[i] ]; - - for ( j=0, jen=a.length ; j<jen ; j++ ) { - res = select( typeof a[j] === 'string' ? $.trim(a[j]) : a[j] ); - - if ( res && res.length ) { - out.push.apply( out, res ); - } - } - } - - return out; - }; - - - var _selector_opts = function ( opts ) - { - if ( ! opts ) { - opts = {}; - } - - // Backwards compatibility for 1.9- which used the terminology filter rather - // than search - if ( opts.filter && ! opts.search ) { - opts.search = opts.filter; - } - - return { - search: opts.search || 'none', - order: opts.order || 'current', - page: opts.page || 'all' - }; - }; - - - var _selector_first = function ( inst ) - { - // Reduce the API instance to the first item found - for ( var i=0, ien=inst.length ; i<ien ; i++ ) { - if ( inst[i].length > 0 ) { - // Assign the first element to the first item in the instance - // and truncate the instance and context - inst[0] = inst[i]; - inst.length = 1; - inst.context = [ inst.context[i] ]; - - return inst; - } - } - - // Not found - return an empty instance - inst.length = 0; - return inst; - }; - - - var _selector_row_indexes = function ( settings, opts ) - { - var - i, ien, tmp, a=[], - displayFiltered = settings.aiDisplay, - displayMaster = settings.aiDisplayMaster; - - var - search = opts.search, // none, applied, removed - order = opts.order, // applied, current, index (original - compatibility with 1.9) - page = opts.page; // all, current - - if ( _fnDataSource( settings ) == 'ssp' ) { - // In server-side processing mode, most options are irrelevant since - // rows not shown don't exist and the index order is the applied order - // Removed is a special case - for consistency just return an empty - // array - return search === 'removed' ? - [] : - _range( 0, displayMaster.length ); - } - else if ( page == 'current' ) { - // Current page implies that order=current and fitler=applied, since it is - // fairly senseless otherwise, regardless of what order and search actually - // are - for ( i=settings._iDisplayStart, ien=settings.fnDisplayEnd() ; i<ien ; i++ ) { - a.push( displayFiltered[i] ); - } - } - else if ( order == 'current' || order == 'applied' ) { - a = search == 'none' ? - displayMaster.slice() : // no search - search == 'applied' ? - displayFiltered.slice() : // applied search - $.map( displayMaster, function (el, i) { // removed search - return $.inArray( el, displayFiltered ) === -1 ? el : null; - } ); - } - else if ( order == 'index' || order == 'original' ) { - for ( i=0, ien=settings.aoData.length ; i<ien ; i++ ) { - if ( search == 'none' ) { - a.push( i ); - } - else { // applied | removed - tmp = $.inArray( i, displayFiltered ); - - if ((tmp === -1 && search == 'removed') || - (tmp >= 0 && search == 'applied') ) - { - a.push( i ); - } - } - } - } - - return a; - }; - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Rows - * - * {} - no selector - use all available rows - * {integer} - row aoData index - * {node} - TR node - * {string} - jQuery selector to apply to the TR elements - * {array} - jQuery array of nodes, or simply an array of TR nodes - * - */ - - - var __row_selector = function ( settings, selector, opts ) - { - return _selector_run( selector, function ( sel ) { - var selInt = _intVal( sel ); - var i, ien; - - // Short cut - selector is a number and no options provided (default is - // all records, so no need to check if the index is in there, since it - // must be - dev error if the index doesn't exist). - if ( selInt !== null && ! opts ) { - return [ selInt ]; - } - - var rows = _selector_row_indexes( settings, opts ); - - if ( selInt !== null && $.inArray( selInt, rows ) !== -1 ) { - // Selector - integer - return [ selInt ]; - } - else if ( ! sel ) { - // Selector - none - return rows; - } - - // Selector - function - if ( typeof sel === 'function' ) { - return $.map( rows, function (idx) { - var row = settings.aoData[ idx ]; - return sel( idx, row._aData, row.nTr ) ? idx : null; - } ); - } - - // Get nodes in the order from the `rows` array with null values removed - var nodes = _removeEmpty( - _pluck_order( settings.aoData, rows, 'nTr' ) - ); - - // Selector - node - if ( sel.nodeName ) { - if ( $.inArray( sel, nodes ) !== -1 ) { - return [ sel._DT_RowIndex ]; // sel is a TR node that is in the table - // and DataTables adds a prop for fast lookup - } - } - - // Selector - jQuery selector string, array of nodes or jQuery object/ - // As jQuery's .filter() allows jQuery objects to be passed in filter, - // it also allows arrays, so this will cope with all three options - return $(nodes) - .filter( sel ) - .map( function () { - return this._DT_RowIndex; - } ) - .toArray(); - } ); - }; - - - /** - * - */ - _api_register( 'rows()', function ( selector, opts ) { - // argument shifting - if ( selector === undefined ) { - selector = ''; - } - else if ( $.isPlainObject( selector ) ) { - opts = selector; - selector = ''; - } - - opts = _selector_opts( opts ); - - var inst = this.iterator( 'table', function ( settings ) { - return __row_selector( settings, selector, opts ); - }, 1 ); - - // Want argument shifting here and in __row_selector? - inst.selector.rows = selector; - inst.selector.opts = opts; - - return inst; - } ); - - - _api_register( 'rows().nodes()', function () { - return this.iterator( 'row', function ( settings, row ) { - return settings.aoData[ row ].nTr || undefined; - }, 1 ); - } ); - - _api_register( 'rows().data()', function () { - return this.iterator( true, 'rows', function ( settings, rows ) { - return _pluck_order( settings.aoData, rows, '_aData' ); - }, 1 ); - } ); - - _api_registerPlural( 'rows().cache()', 'row().cache()', function ( type ) { - return this.iterator( 'row', function ( settings, row ) { - var r = settings.aoData[ row ]; - return type === 'search' ? r._aFilterData : r._aSortData; - }, 1 ); - } ); - - _api_registerPlural( 'rows().invalidate()', 'row().invalidate()', function ( src ) { - return this.iterator( 'row', function ( settings, row ) { - _fnInvalidate( settings, row, src ); - } ); - } ); - - _api_registerPlural( 'rows().indexes()', 'row().index()', function () { - return this.iterator( 'row', function ( settings, row ) { - return row; - }, 1 ); - } ); - - _api_registerPlural( 'rows().remove()', 'row().remove()', function () { - var that = this; - - return this.iterator( 'row', function ( settings, row, thatIdx ) { - var data = settings.aoData; - - data.splice( row, 1 ); - - // Update the _DT_RowIndex parameter on all rows in the table - for ( var i=0, ien=data.length ; i<ien ; i++ ) { - if ( data[i].nTr !== null ) { - data[i].nTr._DT_RowIndex = i; - } - } - - // Remove the target row from the search array - var displayIndex = $.inArray( row, settings.aiDisplay ); - - // Delete from the display arrays - _fnDeleteIndex( settings.aiDisplayMaster, row ); - _fnDeleteIndex( settings.aiDisplay, row ); - _fnDeleteIndex( that[ thatIdx ], row, false ); // maintain local indexes - - // Check for an 'overflow' they case for displaying the table - _fnLengthOverflow( settings ); - } ); - } ); - - - _api_register( 'rows.add()', function ( rows ) { - var newRows = this.iterator( 'table', function ( settings ) { - var row, i, ien; - var out = []; - - for ( i=0, ien=rows.length ; i<ien ; i++ ) { - row = rows[i]; - - if ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) { - out.push( _fnAddTr( settings, row )[0] ); - } - else { - out.push( _fnAddData( settings, row ) ); - } - } - - return out; - }, 1 ); - - // Return an Api.rows() extended instance, so rows().nodes() etc can be used - var modRows = this.rows( -1 ); - modRows.pop(); - modRows.push.apply( modRows, newRows.toArray() ); - - return modRows; - } ); - - - - - - /** - * - */ - _api_register( 'row()', function ( selector, opts ) { - return _selector_first( this.rows( selector, opts ) ); - } ); - - - _api_register( 'row().data()', function ( data ) { - var ctx = this.context; - - if ( data === undefined ) { - // Get - return ctx.length && this.length ? - ctx[0].aoData[ this[0] ]._aData : - undefined; - } - - // Set - ctx[0].aoData[ this[0] ]._aData = data; - - // Automatically invalidate - _fnInvalidate( ctx[0], this[0], 'data' ); - - return this; - } ); - - - _api_register( 'row().node()', function () { - var ctx = this.context; - - return ctx.length && this.length ? - ctx[0].aoData[ this[0] ].nTr || null : - null; - } ); - - - _api_register( 'row.add()', function ( row ) { - // Allow a jQuery object to be passed in - only a single row is added from - // it though - the first element in the set - if ( row instanceof $ && row.length ) { - row = row[0]; - } - - var rows = this.iterator( 'table', function ( settings ) { - if ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) { - return _fnAddTr( settings, row )[0]; - } - return _fnAddData( settings, row ); - } ); - - // Return an Api.rows() extended instance, with the newly added row selected - return this.row( rows[0] ); - } ); - - - - var __details_add = function ( ctx, row, data, klass ) - { - // Convert to array of TR elements - var rows = []; - var addRow = function ( r, k ) { - // If we get a TR element, then just add it directly - up to the dev - // to add the correct number of columns etc - if ( r.nodeName && r.nodeName.toLowerCase() === 'tr' ) { - rows.push( r ); - } - else { - // Otherwise create a row with a wrapper - var created = $('<tr><td/></tr>').addClass( k ); - $('td', created) - .addClass( k ) - .html( r ) - [0].colSpan = _fnVisbleColumns( ctx ); - - rows.push( created[0] ); - } - }; - - if ( $.isArray( data ) || data instanceof $ ) { - for ( var i=0, ien=data.length ; i<ien ; i++ ) { - addRow( data[i], klass ); - } - } - else { - addRow( data, klass ); - } - - if ( row._details ) { - row._details.remove(); - } - - row._details = $(rows); - - // If the children were already shown, that state should be retained - if ( row._detailsShow ) { - row._details.insertAfter( row.nTr ); - } - }; - - - var __details_remove = function ( api, idx ) - { - var ctx = api.context; - - if ( ctx.length ) { - var row = ctx[0].aoData[ idx !== undefined ? idx : api[0] ]; - - if ( row._details ) { - row._details.remove(); - - row._detailsShow = undefined; - row._details = undefined; - } - } - }; - - - var __details_display = function ( api, show ) { - var ctx = api.context; - - if ( ctx.length && api.length ) { - var row = ctx[0].aoData[ api[0] ]; - - if ( row._details ) { - row._detailsShow = show; - - if ( show ) { - row._details.insertAfter( row.nTr ); - } - else { - row._details.detach(); - } - - __details_events( ctx[0] ); - } - } - }; - - - var __details_events = function ( settings ) - { - var api = new _Api( settings ); - var namespace = '.dt.DT_details'; - var drawEvent = 'draw'+namespace; - var colvisEvent = 'column-visibility'+namespace; - var destroyEvent = 'destroy'+namespace; - var data = settings.aoData; - - api.off( drawEvent +' '+ colvisEvent +' '+ destroyEvent ); - - if ( _pluck( data, '_details' ).length > 0 ) { - // On each draw, insert the required elements into the document - api.on( drawEvent, function ( e, ctx ) { - if ( settings !== ctx ) { - return; - } - - api.rows( {page:'current'} ).eq(0).each( function (idx) { - // Internal data grab - var row = data[ idx ]; - - if ( row._detailsShow ) { - row._details.insertAfter( row.nTr ); - } - } ); - } ); - - // Column visibility change - update the colspan - api.on( colvisEvent, function ( e, ctx, idx, vis ) { - if ( settings !== ctx ) { - return; - } - - // Update the colspan for the details rows (note, only if it already has - // a colspan) - var row, visible = _fnVisbleColumns( ctx ); - - for ( var i=0, ien=data.length ; i<ien ; i++ ) { - row = data[i]; - - if ( row._details ) { - row._details.children('td[colspan]').attr('colspan', visible ); - } - } - } ); - - // Table destroyed - nuke any child rows - api.on( destroyEvent, function ( e, ctx ) { - if ( settings !== ctx ) { - return; - } - - for ( var i=0, ien=data.length ; i<ien ; i++ ) { - if ( data[i]._details ) { - __details_remove( api, i ); - } - } - } ); - } - }; - - // Strings for the method names to help minification - var _emp = ''; - var _child_obj = _emp+'row().child'; - var _child_mth = _child_obj+'()'; - - // data can be: - // tr - // string - // jQuery or array of any of the above - _api_register( _child_mth, function ( data, klass ) { - var ctx = this.context; - - if ( data === undefined ) { - // get - return ctx.length && this.length ? - ctx[0].aoData[ this[0] ]._details : - undefined; - } - else if ( data === true ) { - // show - this.child.show(); - } - else if ( data === false ) { - // remove - __details_remove( this ); - } - else if ( ctx.length && this.length ) { - // set - __details_add( ctx[0], ctx[0].aoData[ this[0] ], data, klass ); - } - - return this; - } ); - - - _api_register( [ - _child_obj+'.show()', - _child_mth+'.show()' // only when `child()` was called with parameters (without - ], function ( show ) { // it returns an object and this method is not executed) - __details_display( this, true ); - return this; - } ); - - - _api_register( [ - _child_obj+'.hide()', - _child_mth+'.hide()' // only when `child()` was called with parameters (without - ], function () { // it returns an object and this method is not executed) - __details_display( this, false ); - return this; - } ); - - - _api_register( [ - _child_obj+'.remove()', - _child_mth+'.remove()' // only when `child()` was called with parameters (without - ], function () { // it returns an object and this method is not executed) - __details_remove( this ); - return this; - } ); - - - _api_register( _child_obj+'.isShown()', function () { - var ctx = this.context; - - if ( ctx.length && this.length ) { - // _detailsShown as false or undefined will fall through to return false - return ctx[0].aoData[ this[0] ]._detailsShow || false; - } - return false; - } ); - - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Columns - * - * {integer} - column index (>=0 count from left, <0 count from right) - * "{integer}:visIdx" - visible column index (i.e. translate to column index) (>=0 count from left, <0 count from right) - * "{integer}:visible" - alias for {integer}:visIdx (>=0 count from left, <0 count from right) - * "{string}:name" - column name - * "{string}" - jQuery selector on column header nodes - * - */ - - // can be an array of these items, comma separated list, or an array of comma - // separated lists - - var __re_column_selector = /^(.+):(name|visIdx|visible)$/; - - - // r1 and r2 are redundant - but it means that the parameters match for the - // iterator callback in columns().data() - var __columnData = function ( settings, column, r1, r2, rows ) { - var a = []; - for ( var row=0, ien=rows.length ; row<ien ; row++ ) { - a.push( _fnGetCellData( settings, rows[row], column ) ); - } - return a; - }; - - - var __column_selector = function ( settings, selector, opts ) - { - var - columns = settings.aoColumns, - names = _pluck( columns, 'sName' ), - nodes = _pluck( columns, 'nTh' ); - - return _selector_run( selector, function ( s ) { - var selInt = _intVal( s ); - - // Selector - all - if ( s === '' ) { - return _range( columns.length ); - } - - // Selector - index - if ( selInt !== null ) { - return [ selInt >= 0 ? - selInt : // Count from left - columns.length + selInt // Count from right (+ because its a negative value) - ]; - } - - // Selector = function - if ( typeof s === 'function' ) { - var rows = _selector_row_indexes( settings, opts ); - - return $.map( columns, function (col, idx) { - return s( - idx, - __columnData( settings, idx, 0, 0, rows ), - nodes[ idx ] - ) ? idx : null; - } ); - } - - // jQuery or string selector - var match = typeof s === 'string' ? - s.match( __re_column_selector ) : - ''; - - if ( match ) { - switch( match[2] ) { - case 'visIdx': - case 'visible': - var idx = parseInt( match[1], 10 ); - // Visible index given, convert to column index - if ( idx < 0 ) { - // Counting from the right - var visColumns = $.map( columns, function (col,i) { - return col.bVisible ? i : null; - } ); - return [ visColumns[ visColumns.length + idx ] ]; - } - // Counting from the left - return [ _fnVisibleToColumnIndex( settings, idx ) ]; - - case 'name': - // match by name. `names` is column index complete and in order - return $.map( names, function (name, i) { - return name === match[1] ? i : null; - } ); - } - } - else { - // jQuery selector on the TH elements for the columns - return $( nodes ) - .filter( s ) - .map( function () { - return $.inArray( this, nodes ); // `nodes` is column index complete and in order - } ) - .toArray(); - } - } ); - }; - - - var __setColumnVis = function ( settings, column, vis, recalc ) { - var - cols = settings.aoColumns, - col = cols[ column ], - data = settings.aoData, - row, cells, i, ien, tr; - - // Get - if ( vis === undefined ) { - return col.bVisible; - } - - // Set - // No change - if ( col.bVisible === vis ) { - return; - } - - if ( vis ) { - // Insert column - // Need to decide if we should use appendChild or insertBefore - var insertBefore = $.inArray( true, _pluck(cols, 'bVisible'), column+1 ); - - for ( i=0, ien=data.length ; i<ien ; i++ ) { - tr = data[i].nTr; - cells = data[i].anCells; - - if ( tr ) { - // insertBefore can act like appendChild if 2nd arg is null - tr.insertBefore( cells[ column ], cells[ insertBefore ] || null ); - } - } - } - else { - // Remove column - $( _pluck( settings.aoData, 'anCells', column ) ).detach(); - } - - // Common actions - col.bVisible = vis; - _fnDrawHead( settings, settings.aoHeader ); - _fnDrawHead( settings, settings.aoFooter ); - - if ( recalc === undefined || recalc ) { - // Automatically adjust column sizing - _fnAdjustColumnSizing( settings ); - - // Realign columns for scrolling - if ( settings.oScroll.sX || settings.oScroll.sY ) { - _fnScrollDraw( settings ); - } - } - - _fnCallbackFire( settings, null, 'column-visibility', [settings, column, vis] ); - - _fnSaveState( settings ); - }; - - - /** - * - */ - _api_register( 'columns()', function ( selector, opts ) { - // argument shifting - if ( selector === undefined ) { - selector = ''; - } - else if ( $.isPlainObject( selector ) ) { - opts = selector; - selector = ''; - } - - opts = _selector_opts( opts ); - - var inst = this.iterator( 'table', function ( settings ) { - return __column_selector( settings, selector, opts ); - }, 1 ); - - // Want argument shifting here and in _row_selector? - inst.selector.cols = selector; - inst.selector.opts = opts; - - return inst; - } ); - - - /** - * - */ - _api_registerPlural( 'columns().header()', 'column().header()', function ( selector, opts ) { - return this.iterator( 'column', function ( settings, column ) { - return settings.aoColumns[column].nTh; - }, 1 ); - } ); - - - /** - * - */ - _api_registerPlural( 'columns().footer()', 'column().footer()', function ( selector, opts ) { - return this.iterator( 'column', function ( settings, column ) { - return settings.aoColumns[column].nTf; - }, 1 ); - } ); - - - /** - * - */ - _api_registerPlural( 'columns().data()', 'column().data()', function () { - return this.iterator( 'column-rows', __columnData, 1 ); - } ); - - - _api_registerPlural( 'columns().dataSrc()', 'column().dataSrc()', function () { - return this.iterator( 'column', function ( settings, column ) { - return settings.aoColumns[column].mData; - }, 1 ); - } ); - - - _api_registerPlural( 'columns().cache()', 'column().cache()', function ( type ) { - return this.iterator( 'column-rows', function ( settings, column, i, j, rows ) { - return _pluck_order( settings.aoData, rows, - type === 'search' ? '_aFilterData' : '_aSortData', column - ); - }, 1 ); - } ); - - - _api_registerPlural( 'columns().nodes()', 'column().nodes()', function () { - return this.iterator( 'column-rows', function ( settings, column, i, j, rows ) { - return _pluck_order( settings.aoData, rows, 'anCells', column ) ; - }, 1 ); - } ); - - - - _api_registerPlural( 'columns().visible()', 'column().visible()', function ( vis, calc ) { - return this.iterator( 'column', function ( settings, column ) { - if ( vis === undefined ) { - return settings.aoColumns[ column ].bVisible; - } // else - __setColumnVis( settings, column, vis, calc ); - } ); - } ); - - - - _api_registerPlural( 'columns().indexes()', 'column().index()', function ( type ) { - return this.iterator( 'column', function ( settings, column ) { - return type === 'visible' ? - _fnColumnIndexToVisible( settings, column ) : - column; - }, 1 ); - } ); - - - // _api_register( 'columns().show()', function () { - // var selector = this.selector; - // return this.columns( selector.cols, selector.opts ).visible( true ); - // } ); - - - // _api_register( 'columns().hide()', function () { - // var selector = this.selector; - // return this.columns( selector.cols, selector.opts ).visible( false ); - // } ); - - - - _api_register( 'columns.adjust()', function () { - return this.iterator( 'table', function ( settings ) { - _fnAdjustColumnSizing( settings ); - }, 1 ); - } ); - - - // Convert from one column index type, to another type - _api_register( 'column.index()', function ( type, idx ) { - if ( this.context.length !== 0 ) { - var ctx = this.context[0]; - - if ( type === 'fromVisible' || type === 'toData' ) { - return _fnVisibleToColumnIndex( ctx, idx ); - } - else if ( type === 'fromData' || type === 'toVisible' ) { - return _fnColumnIndexToVisible( ctx, idx ); - } - } - } ); - - - _api_register( 'column()', function ( selector, opts ) { - return _selector_first( this.columns( selector, opts ) ); - } ); - - - - - var __cell_selector = function ( settings, selector, opts ) - { - var data = settings.aoData; - var rows = _selector_row_indexes( settings, opts ); - var cells = _removeEmpty( _pluck_order( data, rows, 'anCells' ) ); - var allCells = $( [].concat.apply([], cells) ); - var row; - var columns = settings.aoColumns.length; - var a, i, ien, j, o, host; - - return _selector_run( selector, function ( s ) { - var fnSelector = typeof s === 'function'; - - if ( s === null || s === undefined || fnSelector ) { - // All cells and function selectors - a = []; - - for ( i=0, ien=rows.length ; i<ien ; i++ ) { - row = rows[i]; - - for ( j=0 ; j<columns ; j++ ) { - o = { - row: row, - column: j - }; - - if ( fnSelector ) { - // Selector - function - host = settings.aoData[ row ]; - - if ( s( o, _fnGetCellData(settings, row, j), host.anCells[j] ) ) { - a.push( o ); - } - } - else { - // Selector - all - a.push( o ); - } - } - } - - return a; - } - - // Selector - index - if ( $.isPlainObject( s ) ) { - return [s]; - } - - // Selector - jQuery filtered cells - return allCells - .filter( s ) - .map( function (i, el) { - row = el.parentNode._DT_RowIndex; - - return { - row: row, - column: $.inArray( el, data[ row ].anCells ) - }; - } ) - .toArray(); - } ); - }; - - - - - _api_register( 'cells()', function ( rowSelector, columnSelector, opts ) { - // Argument shifting - if ( $.isPlainObject( rowSelector ) ) { - // Indexes - if ( typeof rowSelector.row !== undefined ) { - opts = columnSelector; - columnSelector = null; - } - else { - opts = rowSelector; - rowSelector = null; - } - } - if ( $.isPlainObject( columnSelector ) ) { - opts = columnSelector; - columnSelector = null; - } - - // Cell selector - if ( columnSelector === null || columnSelector === undefined ) { - return this.iterator( 'table', function ( settings ) { - return __cell_selector( settings, rowSelector, _selector_opts( opts ) ); - } ); - } - - // Row + column selector - var columns = this.columns( columnSelector, opts ); - var rows = this.rows( rowSelector, opts ); - var a, i, ien, j, jen; - - var cells = this.iterator( 'table', function ( settings, idx ) { - a = []; - - for ( i=0, ien=rows[idx].length ; i<ien ; i++ ) { - for ( j=0, jen=columns[idx].length ; j<jen ; j++ ) { - a.push( { - row: rows[idx][i], - column: columns[idx][j] - } ); - } - } - - return a; - }, 1 ); - - $.extend( cells.selector, { - cols: columnSelector, - rows: rowSelector, - opts: opts - } ); - - return cells; - } ); - - - _api_registerPlural( 'cells().nodes()', 'cell().node()', function () { - return this.iterator( 'cell', function ( settings, row, column ) { - var cells = settings.aoData[ row ].anCells; - return cells ? - cells[ column ] : - undefined; - }, 1 ); - } ); - - - _api_register( 'cells().data()', function () { - return this.iterator( 'cell', function ( settings, row, column ) { - return _fnGetCellData( settings, row, column ); - }, 1 ); - } ); - - - _api_registerPlural( 'cells().cache()', 'cell().cache()', function ( type ) { - type = type === 'search' ? '_aFilterData' : '_aSortData'; - - return this.iterator( 'cell', function ( settings, row, column ) { - return settings.aoData[ row ][ type ][ column ]; - }, 1 ); - } ); - - - _api_registerPlural( 'cells().render()', 'cell().render()', function ( type ) { - return this.iterator( 'cell', function ( settings, row, column ) { - return _fnGetCellData( settings, row, column, type ); - }, 1 ); - } ); - - - _api_registerPlural( 'cells().indexes()', 'cell().index()', function () { - return this.iterator( 'cell', function ( settings, row, column ) { - return { - row: row, - column: column, - columnVisible: _fnColumnIndexToVisible( settings, column ) - }; - }, 1 ); - } ); - - - _api_registerPlural( 'cells().invalidate()', 'cell().invalidate()', function ( src ) { - return this.iterator( 'cell', function ( settings, row, column ) { - _fnInvalidate( settings, row, src, column ); - } ); - } ); - - - - _api_register( 'cell()', function ( rowSelector, columnSelector, opts ) { - return _selector_first( this.cells( rowSelector, columnSelector, opts ) ); - } ); - - - _api_register( 'cell().data()', function ( data ) { - var ctx = this.context; - var cell = this[0]; - - if ( data === undefined ) { - // Get - return ctx.length && cell.length ? - _fnGetCellData( ctx[0], cell[0].row, cell[0].column ) : - undefined; - } - - // Set - _fnSetCellData( ctx[0], cell[0].row, cell[0].column, data ); - _fnInvalidate( ctx[0], cell[0].row, 'data', cell[0].column ); - - return this; - } ); - - - - /** - * Get current ordering (sorting) that has been applied to the table. - * - * @returns {array} 2D array containing the sorting information for the first - * table in the current context. Each element in the parent array represents - * a column being sorted upon (i.e. multi-sorting with two columns would have - * 2 inner arrays). The inner arrays may have 2 or 3 elements. The first is - * the column index that the sorting condition applies to, the second is the - * direction of the sort (`desc` or `asc`) and, optionally, the third is the - * index of the sorting order from the `column.sorting` initialisation array. - *//** - * Set the ordering for the table. - * - * @param {integer} order Column index to sort upon. - * @param {string} direction Direction of the sort to be applied (`asc` or `desc`) - * @returns {DataTables.Api} this - *//** - * Set the ordering for the table. - * - * @param {array} order 1D array of sorting information to be applied. - * @param {array} [...] Optional additional sorting conditions - * @returns {DataTables.Api} this - *//** - * Set the ordering for the table. - * - * @param {array} order 2D array of sorting information to be applied. - * @returns {DataTables.Api} this - */ - _api_register( 'order()', function ( order, dir ) { - var ctx = this.context; - - if ( order === undefined ) { - // get - return ctx.length !== 0 ? - ctx[0].aaSorting : - undefined; - } - - // set - if ( typeof order === 'number' ) { - // Simple column / direction passed in - order = [ [ order, dir ] ]; - } - else if ( ! $.isArray( order[0] ) ) { - // Arguments passed in (list of 1D arrays) - order = Array.prototype.slice.call( arguments ); - } - // otherwise a 2D array was passed in - - return this.iterator( 'table', function ( settings ) { - settings.aaSorting = order.slice(); - } ); - } ); - - - /** - * Attach a sort listener to an element for a given column - * - * @param {node|jQuery|string} node Identifier for the element(s) to attach the - * listener to. This can take the form of a single DOM node, a jQuery - * collection of nodes or a jQuery selector which will identify the node(s). - * @param {integer} column the column that a click on this node will sort on - * @param {function} [callback] callback function when sort is run - * @returns {DataTables.Api} this - */ - _api_register( 'order.listener()', function ( node, column, callback ) { - return this.iterator( 'table', function ( settings ) { - _fnSortAttachListener( settings, node, column, callback ); - } ); - } ); - - - // Order by the selected column(s) - _api_register( [ - 'columns().order()', - 'column().order()' - ], function ( dir ) { - var that = this; - - return this.iterator( 'table', function ( settings, i ) { - var sort = []; - - $.each( that[i], function (j, col) { - sort.push( [ col, dir ] ); - } ); - - settings.aaSorting = sort; - } ); - } ); - - - - _api_register( 'search()', function ( input, regex, smart, caseInsen ) { - var ctx = this.context; - - if ( input === undefined ) { - // get - return ctx.length !== 0 ? - ctx[0].oPreviousSearch.sSearch : - undefined; - } - - // set - return this.iterator( 'table', function ( settings ) { - if ( ! settings.oFeatures.bFilter ) { - return; - } - - _fnFilterComplete( settings, $.extend( {}, settings.oPreviousSearch, { - "sSearch": input+"", - "bRegex": regex === null ? false : regex, - "bSmart": smart === null ? true : smart, - "bCaseInsensitive": caseInsen === null ? true : caseInsen - } ), 1 ); - } ); - } ); - - - _api_registerPlural( - 'columns().search()', - 'column().search()', - function ( input, regex, smart, caseInsen ) { - return this.iterator( 'column', function ( settings, column ) { - var preSearch = settings.aoPreSearchCols; - - if ( input === undefined ) { - // get - return preSearch[ column ].sSearch; - } - - // set - if ( ! settings.oFeatures.bFilter ) { - return; - } - - $.extend( preSearch[ column ], { - "sSearch": input+"", - "bRegex": regex === null ? false : regex, - "bSmart": smart === null ? true : smart, - "bCaseInsensitive": caseInsen === null ? true : caseInsen - } ); - - _fnFilterComplete( settings, settings.oPreviousSearch, 1 ); - } ); - } - ); - - /* - * State API methods - */ - - _api_register( 'state()', function () { - return this.context.length ? - this.context[0].oSavedState : - null; - } ); - - - _api_register( 'state.clear()', function () { - return this.iterator( 'table', function ( settings ) { - // Save an empty object - settings.fnStateSaveCallback.call( settings.oInstance, settings, {} ); - } ); - } ); - - - _api_register( 'state.loaded()', function () { - return this.context.length ? - this.context[0].oLoadedState : - null; - } ); - - - _api_register( 'state.save()', function () { - return this.iterator( 'table', function ( settings ) { - _fnSaveState( settings ); - } ); - } ); - - - - /** - * Provide a common method for plug-ins to check the version of DataTables being - * used, in order to ensure compatibility. - * - * @param {string} version Version string to check for, in the format "X.Y.Z". - * Note that the formats "X" and "X.Y" are also acceptable. - * @returns {boolean} true if this version of DataTables is greater or equal to - * the required version, or false if this version of DataTales is not - * suitable - * @static - * @dtopt API-Static - * - * @example - * alert( $.fn.dataTable.versionCheck( '1.9.0' ) ); - */ - DataTable.versionCheck = DataTable.fnVersionCheck = function( version ) - { - var aThis = DataTable.version.split('.'); - var aThat = version.split('.'); - var iThis, iThat; - - for ( var i=0, iLen=aThat.length ; i<iLen ; i++ ) { - iThis = parseInt( aThis[i], 10 ) || 0; - iThat = parseInt( aThat[i], 10 ) || 0; - - // Parts are the same, keep comparing - if (iThis === iThat) { - continue; - } - - // Parts are different, return immediately - return iThis > iThat; - } - - return true; - }; - - - /** - * Check if a `<table>` node is a DataTable table already or not. - * - * @param {node|jquery|string} table Table node, jQuery object or jQuery - * selector for the table to test. Note that if more than more than one - * table is passed on, only the first will be checked - * @returns {boolean} true the table given is a DataTable, or false otherwise - * @static - * @dtopt API-Static - * - * @example - * if ( ! $.fn.DataTable.isDataTable( '#example' ) ) { - * $('#example').dataTable(); - * } - */ - DataTable.isDataTable = DataTable.fnIsDataTable = function ( table ) - { - var t = $(table).get(0); - var is = false; - - $.each( DataTable.settings, function (i, o) { - if ( o.nTable === t || o.nScrollHead === t || o.nScrollFoot === t ) { - is = true; - } - } ); - - return is; - }; - - - /** - * Get all DataTable tables that have been initialised - optionally you can - * select to get only currently visible tables. - * - * @param {boolean} [visible=false] Flag to indicate if you want all (default) - * or visible tables only. - * @returns {array} Array of `table` nodes (not DataTable instances) which are - * DataTables - * @static - * @dtopt API-Static - * - * @example - * $.each( $.fn.dataTable.tables(true), function () { - * $(table).DataTable().columns.adjust(); - * } ); - */ - DataTable.tables = DataTable.fnTables = function ( visible ) - { - return $.map( DataTable.settings, function (o) { - if ( !visible || (visible && $(o.nTable).is(':visible')) ) { - return o.nTable; - } - } ); - }; - - - /** - * DataTables utility methods - * - * This namespace provides helper methods that DataTables uses internally to - * create a DataTable, but which are not exclusively used only for DataTables. - * These methods can be used by extension authors to save the duplication of - * code. - * - * @namespace - */ - DataTable.util = { - /** - * Throttle the calls to a function. Arguments and context are maintained - * for the throttled function. - * - * @param {function} fn Function to be called - * @param {integer} freq Call frequency in mS - * @return {function} Wrapped function - */ - throttle: _fnThrottle, - - - /** - * Escape a string such that it can be used in a regular expression - * - * @param {string} sVal string to escape - * @returns {string} escaped string - */ - escapeRegex: _fnEscapeRegex - }; - - - /** - * Convert from camel case parameters to Hungarian notation. This is made public - * for the extensions to provide the same ability as DataTables core to accept - * either the 1.9 style Hungarian notation, or the 1.10+ style camelCase - * parameters. - * - * @param {object} src The model object which holds all parameters that can be - * mapped. - * @param {object} user The object to convert from camel case to Hungarian. - * @param {boolean} force When set to `true`, properties which already have a - * Hungarian value in the `user` object will be overwritten. Otherwise they - * won't be. - */ - DataTable.camelToHungarian = _fnCamelToHungarian; - - - - /** - * - */ - _api_register( '$()', function ( selector, opts ) { - var - rows = this.rows( opts ).nodes(), // Get all rows - jqRows = $(rows); - - return $( [].concat( - jqRows.filter( selector ).toArray(), - jqRows.find( selector ).toArray() - ) ); - } ); - - - // jQuery functions to operate on the tables - $.each( [ 'on', 'one', 'off' ], function (i, key) { - _api_register( key+'()', function ( /* event, handler */ ) { - var args = Array.prototype.slice.call(arguments); - - // Add the `dt` namespace automatically if it isn't already present - if ( ! args[0].match(/\.dt\b/) ) { - args[0] += '.dt'; - } - - var inst = $( this.tables().nodes() ); - inst[key].apply( inst, args ); - return this; - } ); - } ); - - - _api_register( 'clear()', function () { - return this.iterator( 'table', function ( settings ) { - _fnClearTable( settings ); - } ); - } ); - - - _api_register( 'settings()', function () { - return new _Api( this.context, this.context ); - } ); - - - _api_register( 'data()', function () { - return this.iterator( 'table', function ( settings ) { - return _pluck( settings.aoData, '_aData' ); - } ).flatten(); - } ); - - - _api_register( 'destroy()', function ( remove ) { - remove = remove || false; - - return this.iterator( 'table', function ( settings ) { - var orig = settings.nTableWrapper.parentNode; - var classes = settings.oClasses; - var table = settings.nTable; - var tbody = settings.nTBody; - var thead = settings.nTHead; - var tfoot = settings.nTFoot; - var jqTable = $(table); - var jqTbody = $(tbody); - var jqWrapper = $(settings.nTableWrapper); - var rows = $.map( settings.aoData, function (r) { return r.nTr; } ); - var i, ien; - - // Flag to note that the table is currently being destroyed - no action - // should be taken - settings.bDestroying = true; - - // Fire off the destroy callbacks for plug-ins etc - _fnCallbackFire( settings, "aoDestroyCallback", "destroy", [settings] ); - - // If not being removed from the document, make all columns visible - if ( ! remove ) { - new _Api( settings ).columns().visible( true ); - } - - // Blitz all `DT` namespaced events (these are internal events, the - // lowercase, `dt` events are user subscribed and they are responsible - // for removing them - jqWrapper.unbind('.DT').find(':not(tbody *)').unbind('.DT'); - $(window).unbind('.DT-'+settings.sInstance); - - // When scrolling we had to break the table up - restore it - if ( table != thead.parentNode ) { - jqTable.children('thead').detach(); - jqTable.append( thead ); - } - - if ( tfoot && table != tfoot.parentNode ) { - jqTable.children('tfoot').detach(); - jqTable.append( tfoot ); - } - - // Remove the DataTables generated nodes, events and classes - jqTable.detach(); - jqWrapper.detach(); - - settings.aaSorting = []; - settings.aaSortingFixed = []; - _fnSortingClasses( settings ); - - $( rows ).removeClass( settings.asStripeClasses.join(' ') ); - - $('th, td', thead).removeClass( classes.sSortable+' '+ - classes.sSortableAsc+' '+classes.sSortableDesc+' '+classes.sSortableNone - ); - - if ( settings.bJUI ) { - $('th span.'+classes.sSortIcon+ ', td span.'+classes.sSortIcon, thead).detach(); - $('th, td', thead).each( function () { - var wrapper = $('div.'+classes.sSortJUIWrapper, this); - $(this).append( wrapper.contents() ); - wrapper.detach(); - } ); - } - - if ( ! remove && orig ) { - // insertBefore acts like appendChild if !arg[1] - orig.insertBefore( table, settings.nTableReinsertBefore ); - } - - // Add the TR elements back into the table in their original order - jqTbody.children().detach(); - jqTbody.append( rows ); - - // Restore the width of the original table - was read from the style property, - // so we can restore directly to that - jqTable - .css( 'width', settings.sDestroyWidth ) - .removeClass( classes.sTable ); - - // If the were originally stripe classes - then we add them back here. - // Note this is not fool proof (for example if not all rows had stripe - // classes - but it's a good effort without getting carried away - ien = settings.asDestroyStripes.length; - - if ( ien ) { - jqTbody.children().each( function (i) { - $(this).addClass( settings.asDestroyStripes[i % ien] ); - } ); - } - - /* Remove the settings object from the settings array */ - var idx = $.inArray( settings, DataTable.settings ); - if ( idx !== -1 ) { - DataTable.settings.splice( idx, 1 ); - } - } ); - } ); - - - /** - * Version string for plug-ins to check compatibility. Allowed format is - * `a.b.c-d` where: a:int, b:int, c:int, d:string(dev|beta|alpha). `d` is used - * only for non-release builds. See http://semver.org/ for more information. - * @member - * @type string - * @default Version number - */ - DataTable.version = "1.10.4"; - - /** - * Private data store, containing all of the settings objects that are - * created for the tables on a given page. - * - * Note that the `DataTable.settings` object is aliased to - * `jQuery.fn.dataTableExt` through which it may be accessed and - * manipulated, or `jQuery.fn.dataTable.settings`. - * @member - * @type array - * @default [] - * @private - */ - DataTable.settings = []; - - /** - * Object models container, for the various models that DataTables has - * available to it. These models define the objects that are used to hold - * the active state and configuration of the table. - * @namespace - */ - DataTable.models = {}; - - - - /** - * Template object for the way in which DataTables holds information about - * search information for the global filter and individual column filters. - * @namespace - */ - DataTable.models.oSearch = { - /** - * Flag to indicate if the filtering should be case insensitive or not - * @type boolean - * @default true - */ - "bCaseInsensitive": true, - - /** - * Applied search term - * @type string - * @default <i>Empty string</i> - */ - "sSearch": "", - - /** - * Flag to indicate if the search term should be interpreted as a - * regular expression (true) or not (false) and therefore and special - * regex characters escaped. - * @type boolean - * @default false - */ - "bRegex": false, - - /** - * Flag to indicate if DataTables is to use its smart filtering or not. - * @type boolean - * @default true - */ - "bSmart": true - }; - - - - - /** - * Template object for the way in which DataTables holds information about - * each individual row. This is the object format used for the settings - * aoData array. - * @namespace - */ - DataTable.models.oRow = { - /** - * TR element for the row - * @type node - * @default null - */ - "nTr": null, - - /** - * Array of TD elements for each row. This is null until the row has been - * created. - * @type array nodes - * @default [] - */ - "anCells": null, - - /** - * Data object from the original data source for the row. This is either - * an array if using the traditional form of DataTables, or an object if - * using mData options. The exact type will depend on the passed in - * data from the data source, or will be an array if using DOM a data - * source. - * @type array|object - * @default [] - */ - "_aData": [], - - /** - * Sorting data cache - this array is ostensibly the same length as the - * number of columns (although each index is generated only as it is - * needed), and holds the data that is used for sorting each column in the - * row. We do this cache generation at the start of the sort in order that - * the formatting of the sort data need be done only once for each cell - * per sort. This array should not be read from or written to by anything - * other than the master sorting methods. - * @type array - * @default null - * @private - */ - "_aSortData": null, - - /** - * Per cell filtering data cache. As per the sort data cache, used to - * increase the performance of the filtering in DataTables - * @type array - * @default null - * @private - */ - "_aFilterData": null, - - /** - * Filtering data cache. This is the same as the cell filtering cache, but - * in this case a string rather than an array. This is easily computed with - * a join on `_aFilterData`, but is provided as a cache so the join isn't - * needed on every search (memory traded for performance) - * @type array - * @default null - * @private - */ - "_sFilterRow": null, - - /** - * Cache of the class name that DataTables has applied to the row, so we - * can quickly look at this variable rather than needing to do a DOM check - * on className for the nTr property. - * @type string - * @default <i>Empty string</i> - * @private - */ - "_sRowStripe": "", - - /** - * Denote if the original data source was from the DOM, or the data source - * object. This is used for invalidating data, so DataTables can - * automatically read data from the original source, unless uninstructed - * otherwise. - * @type string - * @default null - * @private - */ - "src": null - }; - - - /** - * Template object for the column information object in DataTables. This object - * is held in the settings aoColumns array and contains all the information that - * DataTables needs about each individual column. - * - * Note that this object is related to {@link DataTable.defaults.column} - * but this one is the internal data store for DataTables's cache of columns. - * It should NOT be manipulated outside of DataTables. Any configuration should - * be done through the initialisation options. - * @namespace - */ - DataTable.models.oColumn = { - /** - * Column index. This could be worked out on-the-fly with $.inArray, but it - * is faster to just hold it as a variable - * @type integer - * @default null - */ - "idx": null, - - /** - * A list of the columns that sorting should occur on when this column - * is sorted. That this property is an array allows multi-column sorting - * to be defined for a column (for example first name / last name columns - * would benefit from this). The values are integers pointing to the - * columns to be sorted on (typically it will be a single integer pointing - * at itself, but that doesn't need to be the case). - * @type array - */ - "aDataSort": null, - - /** - * Define the sorting directions that are applied to the column, in sequence - * as the column is repeatedly sorted upon - i.e. the first value is used - * as the sorting direction when the column if first sorted (clicked on). - * Sort it again (click again) and it will move on to the next index. - * Repeat until loop. - * @type array - */ - "asSorting": null, - - /** - * Flag to indicate if the column is searchable, and thus should be included - * in the filtering or not. - * @type boolean - */ - "bSearchable": null, - - /** - * Flag to indicate if the column is sortable or not. - * @type boolean - */ - "bSortable": null, - - /** - * Flag to indicate if the column is currently visible in the table or not - * @type boolean - */ - "bVisible": null, - - /** - * Store for manual type assignment using the `column.type` option. This - * is held in store so we can manipulate the column's `sType` property. - * @type string - * @default null - * @private - */ - "_sManualType": null, - - /** - * Flag to indicate if HTML5 data attributes should be used as the data - * source for filtering or sorting. True is either are. - * @type boolean - * @default false - * @private - */ - "_bAttrSrc": false, - - /** - * Developer definable function that is called whenever a cell is created (Ajax source, - * etc) or processed for input (DOM source). This can be used as a compliment to mRender - * allowing you to modify the DOM element (add background colour for example) when the - * element is available. - * @type function - * @param {element} nTd The TD node that has been created - * @param {*} sData The Data for the cell - * @param {array|object} oData The data for the whole row - * @param {int} iRow The row index for the aoData data store - * @default null - */ - "fnCreatedCell": null, - - /** - * Function to get data from a cell in a column. You should <b>never</b> - * access data directly through _aData internally in DataTables - always use - * the method attached to this property. It allows mData to function as - * required. This function is automatically assigned by the column - * initialisation method - * @type function - * @param {array|object} oData The data array/object for the array - * (i.e. aoData[]._aData) - * @param {string} sSpecific The specific data type you want to get - - * 'display', 'type' 'filter' 'sort' - * @returns {*} The data for the cell from the given row's data - * @default null - */ - "fnGetData": null, - - /** - * Function to set data for a cell in the column. You should <b>never</b> - * set the data directly to _aData internally in DataTables - always use - * this method. It allows mData to function as required. This function - * is automatically assigned by the column initialisation method - * @type function - * @param {array|object} oData The data array/object for the array - * (i.e. aoData[]._aData) - * @param {*} sValue Value to set - * @default null - */ - "fnSetData": null, - - /** - * Property to read the value for the cells in the column from the data - * source array / object. If null, then the default content is used, if a - * function is given then the return from the function is used. - * @type function|int|string|null - * @default null - */ - "mData": null, - - /** - * Partner property to mData which is used (only when defined) to get - * the data - i.e. it is basically the same as mData, but without the - * 'set' option, and also the data fed to it is the result from mData. - * This is the rendering method to match the data method of mData. - * @type function|int|string|null - * @default null - */ - "mRender": null, - - /** - * Unique header TH/TD element for this column - this is what the sorting - * listener is attached to (if sorting is enabled.) - * @type node - * @default null - */ - "nTh": null, - - /** - * Unique footer TH/TD element for this column (if there is one). Not used - * in DataTables as such, but can be used for plug-ins to reference the - * footer for each column. - * @type node - * @default null - */ - "nTf": null, - - /** - * The class to apply to all TD elements in the table's TBODY for the column - * @type string - * @default null - */ - "sClass": null, - - /** - * When DataTables calculates the column widths to assign to each column, - * it finds the longest string in each column and then constructs a - * temporary table and reads the widths from that. The problem with this - * is that "mmm" is much wider then "iiii", but the latter is a longer - * string - thus the calculation can go wrong (doing it properly and putting - * it into an DOM object and measuring that is horribly(!) slow). Thus as - * a "work around" we provide this option. It will append its value to the - * text that is found to be the longest string for the column - i.e. padding. - * @type string - */ - "sContentPadding": null, - - /** - * Allows a default value to be given for a column's data, and will be used - * whenever a null data source is encountered (this can be because mData - * is set to null, or because the data source itself is null). - * @type string - * @default null - */ - "sDefaultContent": null, - - /** - * Name for the column, allowing reference to the column by name as well as - * by index (needs a lookup to work by name). - * @type string - */ - "sName": null, - - /** - * Custom sorting data type - defines which of the available plug-ins in - * afnSortData the custom sorting will use - if any is defined. - * @type string - * @default std - */ - "sSortDataType": 'std', - - /** - * Class to be applied to the header element when sorting on this column - * @type string - * @default null - */ - "sSortingClass": null, - - /** - * Class to be applied to the header element when sorting on this column - - * when jQuery UI theming is used. - * @type string - * @default null - */ - "sSortingClassJUI": null, - - /** - * Title of the column - what is seen in the TH element (nTh). - * @type string - */ - "sTitle": null, - - /** - * Column sorting and filtering type - * @type string - * @default null - */ - "sType": null, - - /** - * Width of the column - * @type string - * @default null - */ - "sWidth": null, - - /** - * Width of the column when it was first "encountered" - * @type string - * @default null - */ - "sWidthOrig": null - }; - - - /* - * Developer note: The properties of the object below are given in Hungarian - * notation, that was used as the interface for DataTables prior to v1.10, however - * from v1.10 onwards the primary interface is camel case. In order to avoid - * breaking backwards compatibility utterly with this change, the Hungarian - * version is still, internally the primary interface, but is is not documented - * - hence the @name tags in each doc comment. This allows a Javascript function - * to create a map from Hungarian notation to camel case (going the other direction - * would require each property to be listed, which would at around 3K to the size - * of DataTables, while this method is about a 0.5K hit. - * - * Ultimately this does pave the way for Hungarian notation to be dropped - * completely, but that is a massive amount of work and will break current - * installs (therefore is on-hold until v2). - */ - - /** - * Initialisation options that can be given to DataTables at initialisation - * time. - * @namespace - */ - DataTable.defaults = { - /** - * An array of data to use for the table, passed in at initialisation which - * will be used in preference to any data which is already in the DOM. This is - * particularly useful for constructing tables purely in Javascript, for - * example with a custom Ajax call. - * @type array - * @default null - * - * @dtopt Option - * @name DataTable.defaults.data - * - * @example - * // Using a 2D array data source - * $(document).ready( function () { - * $('#example').dataTable( { - * "data": [ - * ['Trident', 'Internet Explorer 4.0', 'Win 95+', 4, 'X'], - * ['Trident', 'Internet Explorer 5.0', 'Win 95+', 5, 'C'], - * ], - * "columns": [ - * { "title": "Engine" }, - * { "title": "Browser" }, - * { "title": "Platform" }, - * { "title": "Version" }, - * { "title": "Grade" } - * ] - * } ); - * } ); - * - * @example - * // Using an array of objects as a data source (`data`) - * $(document).ready( function () { - * $('#example').dataTable( { - * "data": [ - * { - * "engine": "Trident", - * "browser": "Internet Explorer 4.0", - * "platform": "Win 95+", - * "version": 4, - * "grade": "X" - * }, - * { - * "engine": "Trident", - * "browser": "Internet Explorer 5.0", - * "platform": "Win 95+", - * "version": 5, - * "grade": "C" - * } - * ], - * "columns": [ - * { "title": "Engine", "data": "engine" }, - * { "title": "Browser", "data": "browser" }, - * { "title": "Platform", "data": "platform" }, - * { "title": "Version", "data": "version" }, - * { "title": "Grade", "data": "grade" } - * ] - * } ); - * } ); - */ - "aaData": null, - - - /** - * If ordering is enabled, then DataTables will perform a first pass sort on - * initialisation. You can define which column(s) the sort is performed - * upon, and the sorting direction, with this variable. The `sorting` array - * should contain an array for each column to be sorted initially containing - * the column's index and a direction string ('asc' or 'desc'). - * @type array - * @default [[0,'asc']] - * - * @dtopt Option - * @name DataTable.defaults.order - * - * @example - * // Sort by 3rd column first, and then 4th column - * $(document).ready( function() { - * $('#example').dataTable( { - * "order": [[2,'asc'], [3,'desc']] - * } ); - * } ); - * - * // No initial sorting - * $(document).ready( function() { - * $('#example').dataTable( { - * "order": [] - * } ); - * } ); - */ - "aaSorting": [[0,'asc']], - - - /** - * This parameter is basically identical to the `sorting` parameter, but - * cannot be overridden by user interaction with the table. What this means - * is that you could have a column (visible or hidden) which the sorting - * will always be forced on first - any sorting after that (from the user) - * will then be performed as required. This can be useful for grouping rows - * together. - * @type array - * @default null - * - * @dtopt Option - * @name DataTable.defaults.orderFixed - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "orderFixed": [[0,'asc']] - * } ); - * } ) - */ - "aaSortingFixed": [], - - - /** - * DataTables can be instructed to load data to display in the table from a - * Ajax source. This option defines how that Ajax call is made and where to. - * - * The `ajax` property has three different modes of operation, depending on - * how it is defined. These are: - * - * * `string` - Set the URL from where the data should be loaded from. - * * `object` - Define properties for `jQuery.ajax`. - * * `function` - Custom data get function - * - * `string` - * -------- - * - * As a string, the `ajax` property simply defines the URL from which - * DataTables will load data. - * - * `object` - * -------- - * - * As an object, the parameters in the object are passed to - * [jQuery.ajax](http://api.jquery.com/jQuery.ajax/) allowing fine control - * of the Ajax request. DataTables has a number of default parameters which - * you can override using this option. Please refer to the jQuery - * documentation for a full description of the options available, although - * the following parameters provide additional options in DataTables or - * require special consideration: - * - * * `data` - As with jQuery, `data` can be provided as an object, but it - * can also be used as a function to manipulate the data DataTables sends - * to the server. The function takes a single parameter, an object of - * parameters with the values that DataTables has readied for sending. An - * object may be returned which will be merged into the DataTables - * defaults, or you can add the items to the object that was passed in and - * not return anything from the function. This supersedes `fnServerParams` - * from DataTables 1.9-. - * - * * `dataSrc` - By default DataTables will look for the property `data` (or - * `aaData` for compatibility with DataTables 1.9-) when obtaining data - * from an Ajax source or for server-side processing - this parameter - * allows that property to be changed. You can use Javascript dotted - * object notation to get a data source for multiple levels of nesting, or - * it my be used as a function. As a function it takes a single parameter, - * the JSON returned from the server, which can be manipulated as - * required, with the returned value being that used by DataTables as the - * data source for the table. This supersedes `sAjaxDataProp` from - * DataTables 1.9-. - * - * * `success` - Should not be overridden it is used internally in - * DataTables. To manipulate / transform the data returned by the server - * use `ajax.dataSrc`, or use `ajax` as a function (see below). - * - * `function` - * ---------- - * - * As a function, making the Ajax call is left up to yourself allowing - * complete control of the Ajax request. Indeed, if desired, a method other - * than Ajax could be used to obtain the required data, such as Web storage - * or an AIR database. - * - * The function is given four parameters and no return is required. The - * parameters are: - * - * 1. _object_ - Data to send to the server - * 2. _function_ - Callback function that must be executed when the required - * data has been obtained. That data should be passed into the callback - * as the only parameter - * 3. _object_ - DataTables settings object for the table - * - * Note that this supersedes `fnServerData` from DataTables 1.9-. - * - * @type string|object|function - * @default null - * - * @dtopt Option - * @name DataTable.defaults.ajax - * @since 1.10.0 - * - * @example - * // Get JSON data from a file via Ajax. - * // Note DataTables expects data in the form `{ data: [ ...data... ] }` by default). - * $('#example').dataTable( { - * "ajax": "data.json" - * } ); - * - * @example - * // Get JSON data from a file via Ajax, using `dataSrc` to change - * // `data` to `tableData` (i.e. `{ tableData: [ ...data... ] }`) - * $('#example').dataTable( { - * "ajax": { - * "url": "data.json", - * "dataSrc": "tableData" - * } - * } ); - * - * @example - * // Get JSON data from a file via Ajax, using `dataSrc` to read data - * // from a plain array rather than an array in an object - * $('#example').dataTable( { - * "ajax": { - * "url": "data.json", - * "dataSrc": "" - * } - * } ); - * - * @example - * // Manipulate the data returned from the server - add a link to data - * // (note this can, should, be done using `render` for the column - this - * // is just a simple example of how the data can be manipulated). - * $('#example').dataTable( { - * "ajax": { - * "url": "data.json", - * "dataSrc": function ( json ) { - * for ( var i=0, ien=json.length ; i<ien ; i++ ) { - * json[i][0] = '<a href="/message/'+json[i][0]+'>View message</a>'; - * } - * return json; - * } - * } - * } ); - * - * @example - * // Add data to the request - * $('#example').dataTable( { - * "ajax": { - * "url": "data.json", - * "data": function ( d ) { - * return { - * "extra_search": $('#extra').val() - * }; - * } - * } - * } ); - * - * @example - * // Send request as POST - * $('#example').dataTable( { - * "ajax": { - * "url": "data.json", - * "type": "POST" - * } - * } ); - * - * @example - * // Get the data from localStorage (could interface with a form for - * // adding, editing and removing rows). - * $('#example').dataTable( { - * "ajax": function (data, callback, settings) { - * callback( - * JSON.parse( localStorage.getItem('dataTablesData') ) - * ); - * } - * } ); - */ - "ajax": null, - - - /** - * This parameter allows you to readily specify the entries in the length drop - * down menu that DataTables shows when pagination is enabled. It can be - * either a 1D array of options which will be used for both the displayed - * option and the value, or a 2D array which will use the array in the first - * position as the value, and the array in the second position as the - * displayed options (useful for language strings such as 'All'). - * - * Note that the `pageLength` property will be automatically set to the - * first value given in this array, unless `pageLength` is also provided. - * @type array - * @default [ 10, 25, 50, 100 ] - * - * @dtopt Option - * @name DataTable.defaults.lengthMenu - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]] - * } ); - * } ); - */ - "aLengthMenu": [ 10, 25, 50, 100 ], - - - /** - * The `columns` option in the initialisation parameter allows you to define - * details about the way individual columns behave. For a full list of - * column options that can be set, please see - * {@link DataTable.defaults.column}. Note that if you use `columns` to - * define your columns, you must have an entry in the array for every single - * column that you have in your table (these can be null if you don't which - * to specify any options). - * @member - * - * @name DataTable.defaults.column - */ - "aoColumns": null, - - /** - * Very similar to `columns`, `columnDefs` allows you to target a specific - * column, multiple columns, or all columns, using the `targets` property of - * each object in the array. This allows great flexibility when creating - * tables, as the `columnDefs` arrays can be of any length, targeting the - * columns you specifically want. `columnDefs` may use any of the column - * options available: {@link DataTable.defaults.column}, but it _must_ - * have `targets` defined in each object in the array. Values in the `targets` - * array may be: - * <ul> - * <li>a string - class name will be matched on the TH for the column</li> - * <li>0 or a positive integer - column index counting from the left</li> - * <li>a negative integer - column index counting from the right</li> - * <li>the string "_all" - all columns (i.e. assign a default)</li> - * </ul> - * @member - * - * @name DataTable.defaults.columnDefs - */ - "aoColumnDefs": null, - - - /** - * Basically the same as `search`, this parameter defines the individual column - * filtering state at initialisation time. The array must be of the same size - * as the number of columns, and each element be an object with the parameters - * `search` and `escapeRegex` (the latter is optional). 'null' is also - * accepted and the default will be used. - * @type array - * @default [] - * - * @dtopt Option - * @name DataTable.defaults.searchCols - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "searchCols": [ - * null, - * { "search": "My filter" }, - * null, - * { "search": "^[0-9]", "escapeRegex": false } - * ] - * } ); - * } ) - */ - "aoSearchCols": [], - - - /** - * An array of CSS classes that should be applied to displayed rows. This - * array may be of any length, and DataTables will apply each class - * sequentially, looping when required. - * @type array - * @default null <i>Will take the values determined by the `oClasses.stripe*` - * options</i> - * - * @dtopt Option - * @name DataTable.defaults.stripeClasses - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "stripeClasses": [ 'strip1', 'strip2', 'strip3' ] - * } ); - * } ) - */ - "asStripeClasses": null, - - - /** - * Enable or disable automatic column width calculation. This can be disabled - * as an optimisation (it takes some time to calculate the widths) if the - * tables widths are passed in using `columns`. - * @type boolean - * @default true - * - * @dtopt Features - * @name DataTable.defaults.autoWidth - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "autoWidth": false - * } ); - * } ); - */ - "bAutoWidth": true, - - - /** - * Deferred rendering can provide DataTables with a huge speed boost when you - * are using an Ajax or JS data source for the table. This option, when set to - * true, will cause DataTables to defer the creation of the table elements for - * each row until they are needed for a draw - saving a significant amount of - * time. - * @type boolean - * @default false - * - * @dtopt Features - * @name DataTable.defaults.deferRender - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "ajax": "sources/arrays.txt", - * "deferRender": true - * } ); - * } ); - */ - "bDeferRender": false, - - - /** - * Replace a DataTable which matches the given selector and replace it with - * one which has the properties of the new initialisation object passed. If no - * table matches the selector, then the new DataTable will be constructed as - * per normal. - * @type boolean - * @default false - * - * @dtopt Options - * @name DataTable.defaults.destroy - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "srollY": "200px", - * "paginate": false - * } ); - * - * // Some time later.... - * $('#example').dataTable( { - * "filter": false, - * "destroy": true - * } ); - * } ); - */ - "bDestroy": false, - - - /** - * Enable or disable filtering of data. Filtering in DataTables is "smart" in - * that it allows the end user to input multiple words (space separated) and - * will match a row containing those words, even if not in the order that was - * specified (this allow matching across multiple columns). Note that if you - * wish to use filtering in DataTables this must remain 'true' - to remove the - * default filtering input box and retain filtering abilities, please use - * {@link DataTable.defaults.dom}. - * @type boolean - * @default true - * - * @dtopt Features - * @name DataTable.defaults.searching - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "searching": false - * } ); - * } ); - */ - "bFilter": true, - - - /** - * Enable or disable the table information display. This shows information - * about the data that is currently visible on the page, including information - * about filtered data if that action is being performed. - * @type boolean - * @default true - * - * @dtopt Features - * @name DataTable.defaults.info - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "info": false - * } ); - * } ); - */ - "bInfo": true, - - - /** - * Enable jQuery UI ThemeRoller support (required as ThemeRoller requires some - * slightly different and additional mark-up from what DataTables has - * traditionally used). - * @type boolean - * @default false - * - * @dtopt Features - * @name DataTable.defaults.jQueryUI - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "jQueryUI": true - * } ); - * } ); - */ - "bJQueryUI": false, - - - /** - * Allows the end user to select the size of a formatted page from a select - * menu (sizes are 10, 25, 50 and 100). Requires pagination (`paginate`). - * @type boolean - * @default true - * - * @dtopt Features - * @name DataTable.defaults.lengthChange - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "lengthChange": false - * } ); - * } ); - */ - "bLengthChange": true, - - - /** - * Enable or disable pagination. - * @type boolean - * @default true - * - * @dtopt Features - * @name DataTable.defaults.paging - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "paging": false - * } ); - * } ); - */ - "bPaginate": true, - - - /** - * Enable or disable the display of a 'processing' indicator when the table is - * being processed (e.g. a sort). This is particularly useful for tables with - * large amounts of data where it can take a noticeable amount of time to sort - * the entries. - * @type boolean - * @default false - * - * @dtopt Features - * @name DataTable.defaults.processing - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "processing": true - * } ); - * } ); - */ - "bProcessing": false, - - - /** - * Retrieve the DataTables object for the given selector. Note that if the - * table has already been initialised, this parameter will cause DataTables - * to simply return the object that has already been set up - it will not take - * account of any changes you might have made to the initialisation object - * passed to DataTables (setting this parameter to true is an acknowledgement - * that you understand this). `destroy` can be used to reinitialise a table if - * you need. - * @type boolean - * @default false - * - * @dtopt Options - * @name DataTable.defaults.retrieve - * - * @example - * $(document).ready( function() { - * initTable(); - * tableActions(); - * } ); - * - * function initTable () - * { - * return $('#example').dataTable( { - * "scrollY": "200px", - * "paginate": false, - * "retrieve": true - * } ); - * } - * - * function tableActions () - * { - * var table = initTable(); - * // perform API operations with oTable - * } - */ - "bRetrieve": false, - - - /** - * When vertical (y) scrolling is enabled, DataTables will force the height of - * the table's viewport to the given height at all times (useful for layout). - * However, this can look odd when filtering data down to a small data set, - * and the footer is left "floating" further down. This parameter (when - * enabled) will cause DataTables to collapse the table's viewport down when - * the result set will fit within the given Y height. - * @type boolean - * @default false - * - * @dtopt Options - * @name DataTable.defaults.scrollCollapse - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "scrollY": "200", - * "scrollCollapse": true - * } ); - * } ); - */ - "bScrollCollapse": false, - - - /** - * Configure DataTables to use server-side processing. Note that the - * `ajax` parameter must also be given in order to give DataTables a - * source to obtain the required data for each draw. - * @type boolean - * @default false - * - * @dtopt Features - * @dtopt Server-side - * @name DataTable.defaults.serverSide - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "serverSide": true, - * "ajax": "xhr.php" - * } ); - * } ); - */ - "bServerSide": false, - - - /** - * Enable or disable sorting of columns. Sorting of individual columns can be - * disabled by the `sortable` option for each column. - * @type boolean - * @default true - * - * @dtopt Features - * @name DataTable.defaults.ordering - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "ordering": false - * } ); - * } ); - */ - "bSort": true, - - - /** - * Enable or display DataTables' ability to sort multiple columns at the - * same time (activated by shift-click by the user). - * @type boolean - * @default true - * - * @dtopt Options - * @name DataTable.defaults.orderMulti - * - * @example - * // Disable multiple column sorting ability - * $(document).ready( function () { - * $('#example').dataTable( { - * "orderMulti": false - * } ); - * } ); - */ - "bSortMulti": true, - - - /** - * Allows control over whether DataTables should use the top (true) unique - * cell that is found for a single column, or the bottom (false - default). - * This is useful when using complex headers. - * @type boolean - * @default false - * - * @dtopt Options - * @name DataTable.defaults.orderCellsTop - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "orderCellsTop": true - * } ); - * } ); - */ - "bSortCellsTop": false, - - - /** - * Enable or disable the addition of the classes `sorting\_1`, `sorting\_2` and - * `sorting\_3` to the columns which are currently being sorted on. This is - * presented as a feature switch as it can increase processing time (while - * classes are removed and added) so for large data sets you might want to - * turn this off. - * @type boolean - * @default true - * - * @dtopt Features - * @name DataTable.defaults.orderClasses - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "orderClasses": false - * } ); - * } ); - */ - "bSortClasses": true, - - - /** - * Enable or disable state saving. When enabled HTML5 `localStorage` will be - * used to save table display information such as pagination information, - * display length, filtering and sorting. As such when the end user reloads - * the page the display display will match what thy had previously set up. - * - * Due to the use of `localStorage` the default state saving is not supported - * in IE6 or 7. If state saving is required in those browsers, use - * `stateSaveCallback` to provide a storage solution such as cookies. - * @type boolean - * @default false - * - * @dtopt Features - * @name DataTable.defaults.stateSave - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "stateSave": true - * } ); - * } ); - */ - "bStateSave": false, - - - /** - * This function is called when a TR element is created (and all TD child - * elements have been inserted), or registered if using a DOM source, allowing - * manipulation of the TR element (adding classes etc). - * @type function - * @param {node} row "TR" element for the current row - * @param {array} data Raw data array for this row - * @param {int} dataIndex The index of this row in the internal aoData array - * - * @dtopt Callbacks - * @name DataTable.defaults.createdRow - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "createdRow": function( row, data, dataIndex ) { - * // Bold the grade for all 'A' grade browsers - * if ( data[4] == "A" ) - * { - * $('td:eq(4)', row).html( '<b>A</b>' ); - * } - * } - * } ); - * } ); - */ - "fnCreatedRow": null, - - - /** - * This function is called on every 'draw' event, and allows you to - * dynamically modify any aspect you want about the created DOM. - * @type function - * @param {object} settings DataTables settings object - * - * @dtopt Callbacks - * @name DataTable.defaults.drawCallback - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "drawCallback": function( settings ) { - * alert( 'DataTables has redrawn the table' ); - * } - * } ); - * } ); - */ - "fnDrawCallback": null, - - - /** - * Identical to fnHeaderCallback() but for the table footer this function - * allows you to modify the table footer on every 'draw' event. - * @type function - * @param {node} foot "TR" element for the footer - * @param {array} data Full table data (as derived from the original HTML) - * @param {int} start Index for the current display starting point in the - * display array - * @param {int} end Index for the current display ending point in the - * display array - * @param {array int} display Index array to translate the visual position - * to the full data array - * - * @dtopt Callbacks - * @name DataTable.defaults.footerCallback - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "footerCallback": function( tfoot, data, start, end, display ) { - * tfoot.getElementsByTagName('th')[0].innerHTML = "Starting index is "+start; - * } - * } ); - * } ) - */ - "fnFooterCallback": null, - - - /** - * When rendering large numbers in the information element for the table - * (i.e. "Showing 1 to 10 of 57 entries") DataTables will render large numbers - * to have a comma separator for the 'thousands' units (e.g. 1 million is - * rendered as "1,000,000") to help readability for the end user. This - * function will override the default method DataTables uses. - * @type function - * @member - * @param {int} toFormat number to be formatted - * @returns {string} formatted string for DataTables to show the number - * - * @dtopt Callbacks - * @name DataTable.defaults.formatNumber - * - * @example - * // Format a number using a single quote for the separator (note that - * // this can also be done with the language.thousands option) - * $(document).ready( function() { - * $('#example').dataTable( { - * "formatNumber": function ( toFormat ) { - * return toFormat.toString().replace( - * /\B(?=(\d{3})+(?!\d))/g, "'" - * ); - * }; - * } ); - * } ); - */ - "fnFormatNumber": function ( toFormat ) { - return toFormat.toString().replace( - /\B(?=(\d{3})+(?!\d))/g, - this.oLanguage.sThousands - ); - }, - - - /** - * This function is called on every 'draw' event, and allows you to - * dynamically modify the header row. This can be used to calculate and - * display useful information about the table. - * @type function - * @param {node} head "TR" element for the header - * @param {array} data Full table data (as derived from the original HTML) - * @param {int} start Index for the current display starting point in the - * display array - * @param {int} end Index for the current display ending point in the - * display array - * @param {array int} display Index array to translate the visual position - * to the full data array - * - * @dtopt Callbacks - * @name DataTable.defaults.headerCallback - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "fheaderCallback": function( head, data, start, end, display ) { - * head.getElementsByTagName('th')[0].innerHTML = "Displaying "+(end-start)+" records"; - * } - * } ); - * } ) - */ - "fnHeaderCallback": null, - - - /** - * The information element can be used to convey information about the current - * state of the table. Although the internationalisation options presented by - * DataTables are quite capable of dealing with most customisations, there may - * be times where you wish to customise the string further. This callback - * allows you to do exactly that. - * @type function - * @param {object} oSettings DataTables settings object - * @param {int} start Starting position in data for the draw - * @param {int} end End position in data for the draw - * @param {int} max Total number of rows in the table (regardless of - * filtering) - * @param {int} total Total number of rows in the data set, after filtering - * @param {string} pre The string that DataTables has formatted using it's - * own rules - * @returns {string} The string to be displayed in the information element. - * - * @dtopt Callbacks - * @name DataTable.defaults.infoCallback - * - * @example - * $('#example').dataTable( { - * "infoCallback": function( settings, start, end, max, total, pre ) { - * return start +" to "+ end; - * } - * } ); - */ - "fnInfoCallback": null, - - - /** - * Called when the table has been initialised. Normally DataTables will - * initialise sequentially and there will be no need for this function, - * however, this does not hold true when using external language information - * since that is obtained using an async XHR call. - * @type function - * @param {object} settings DataTables settings object - * @param {object} json The JSON object request from the server - only - * present if client-side Ajax sourced data is used - * - * @dtopt Callbacks - * @name DataTable.defaults.initComplete - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "initComplete": function(settings, json) { - * alert( 'DataTables has finished its initialisation.' ); - * } - * } ); - * } ) - */ - "fnInitComplete": null, - - - /** - * Called at the very start of each table draw and can be used to cancel the - * draw by returning false, any other return (including undefined) results in - * the full draw occurring). - * @type function - * @param {object} settings DataTables settings object - * @returns {boolean} False will cancel the draw, anything else (including no - * return) will allow it to complete. - * - * @dtopt Callbacks - * @name DataTable.defaults.preDrawCallback - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "preDrawCallback": function( settings ) { - * if ( $('#test').val() == 1 ) { - * return false; - * } - * } - * } ); - * } ); - */ - "fnPreDrawCallback": null, - - - /** - * This function allows you to 'post process' each row after it have been - * generated for each table draw, but before it is rendered on screen. This - * function might be used for setting the row class name etc. - * @type function - * @param {node} row "TR" element for the current row - * @param {array} data Raw data array for this row - * @param {int} displayIndex The display index for the current table draw - * @param {int} displayIndexFull The index of the data in the full list of - * rows (after filtering) - * - * @dtopt Callbacks - * @name DataTable.defaults.rowCallback - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "rowCallback": function( row, data, displayIndex, displayIndexFull ) { - * // Bold the grade for all 'A' grade browsers - * if ( data[4] == "A" ) { - * $('td:eq(4)', row).html( '<b>A</b>' ); - * } - * } - * } ); - * } ); - */ - "fnRowCallback": null, - - - /** - * __Deprecated__ The functionality provided by this parameter has now been - * superseded by that provided through `ajax`, which should be used instead. - * - * This parameter allows you to override the default function which obtains - * the data from the server so something more suitable for your application. - * For example you could use POST data, or pull information from a Gears or - * AIR database. - * @type function - * @member - * @param {string} source HTTP source to obtain the data from (`ajax`) - * @param {array} data A key/value pair object containing the data to send - * to the server - * @param {function} callback to be called on completion of the data get - * process that will draw the data on the page. - * @param {object} settings DataTables settings object - * - * @dtopt Callbacks - * @dtopt Server-side - * @name DataTable.defaults.serverData - * - * @deprecated 1.10. Please use `ajax` for this functionality now. - */ - "fnServerData": null, - - - /** - * __Deprecated__ The functionality provided by this parameter has now been - * superseded by that provided through `ajax`, which should be used instead. - * - * It is often useful to send extra data to the server when making an Ajax - * request - for example custom filtering information, and this callback - * function makes it trivial to send extra information to the server. The - * passed in parameter is the data set that has been constructed by - * DataTables, and you can add to this or modify it as you require. - * @type function - * @param {array} data Data array (array of objects which are name/value - * pairs) that has been constructed by DataTables and will be sent to the - * server. In the case of Ajax sourced data with server-side processing - * this will be an empty array, for server-side processing there will be a - * significant number of parameters! - * @returns {undefined} Ensure that you modify the data array passed in, - * as this is passed by reference. - * - * @dtopt Callbacks - * @dtopt Server-side - * @name DataTable.defaults.serverParams - * - * @deprecated 1.10. Please use `ajax` for this functionality now. - */ - "fnServerParams": null, - - - /** - * Load the table state. With this function you can define from where, and how, the - * state of a table is loaded. By default DataTables will load from `localStorage` - * but you might wish to use a server-side database or cookies. - * @type function - * @member - * @param {object} settings DataTables settings object - * @return {object} The DataTables state object to be loaded - * - * @dtopt Callbacks - * @name DataTable.defaults.stateLoadCallback - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "stateSave": true, - * "stateLoadCallback": function (settings) { - * var o; - * - * // Send an Ajax request to the server to get the data. Note that - * // this is a synchronous request. - * $.ajax( { - * "url": "/state_load", - * "async": false, - * "dataType": "json", - * "success": function (json) { - * o = json; - * } - * } ); - * - * return o; - * } - * } ); - * } ); - */ - "fnStateLoadCallback": function ( settings ) { - try { - return JSON.parse( - (settings.iStateDuration === -1 ? sessionStorage : localStorage).getItem( - 'DataTables_'+settings.sInstance+'_'+location.pathname - ) - ); - } catch (e) {} - }, - - - /** - * Callback which allows modification of the saved state prior to loading that state. - * This callback is called when the table is loading state from the stored data, but - * prior to the settings object being modified by the saved state. Note that for - * plug-in authors, you should use the `stateLoadParams` event to load parameters for - * a plug-in. - * @type function - * @param {object} settings DataTables settings object - * @param {object} data The state object that is to be loaded - * - * @dtopt Callbacks - * @name DataTable.defaults.stateLoadParams - * - * @example - * // Remove a saved filter, so filtering is never loaded - * $(document).ready( function() { - * $('#example').dataTable( { - * "stateSave": true, - * "stateLoadParams": function (settings, data) { - * data.oSearch.sSearch = ""; - * } - * } ); - * } ); - * - * @example - * // Disallow state loading by returning false - * $(document).ready( function() { - * $('#example').dataTable( { - * "stateSave": true, - * "stateLoadParams": function (settings, data) { - * return false; - * } - * } ); - * } ); - */ - "fnStateLoadParams": null, - - - /** - * Callback that is called when the state has been loaded from the state saving method - * and the DataTables settings object has been modified as a result of the loaded state. - * @type function - * @param {object} settings DataTables settings object - * @param {object} data The state object that was loaded - * - * @dtopt Callbacks - * @name DataTable.defaults.stateLoaded - * - * @example - * // Show an alert with the filtering value that was saved - * $(document).ready( function() { - * $('#example').dataTable( { - * "stateSave": true, - * "stateLoaded": function (settings, data) { - * alert( 'Saved filter was: '+data.oSearch.sSearch ); - * } - * } ); - * } ); - */ - "fnStateLoaded": null, - - - /** - * Save the table state. This function allows you to define where and how the state - * information for the table is stored By default DataTables will use `localStorage` - * but you might wish to use a server-side database or cookies. - * @type function - * @member - * @param {object} settings DataTables settings object - * @param {object} data The state object to be saved - * - * @dtopt Callbacks - * @name DataTable.defaults.stateSaveCallback - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "stateSave": true, - * "stateSaveCallback": function (settings, data) { - * // Send an Ajax request to the server with the state object - * $.ajax( { - * "url": "/state_save", - * "data": data, - * "dataType": "json", - * "method": "POST" - * "success": function () {} - * } ); - * } - * } ); - * } ); - */ - "fnStateSaveCallback": function ( settings, data ) { - try { - (settings.iStateDuration === -1 ? sessionStorage : localStorage).setItem( - 'DataTables_'+settings.sInstance+'_'+location.pathname, - JSON.stringify( data ) - ); - } catch (e) {} - }, - - - /** - * Callback which allows modification of the state to be saved. Called when the table - * has changed state a new state save is required. This method allows modification of - * the state saving object prior to actually doing the save, including addition or - * other state properties or modification. Note that for plug-in authors, you should - * use the `stateSaveParams` event to save parameters for a plug-in. - * @type function - * @param {object} settings DataTables settings object - * @param {object} data The state object to be saved - * - * @dtopt Callbacks - * @name DataTable.defaults.stateSaveParams - * - * @example - * // Remove a saved filter, so filtering is never saved - * $(document).ready( function() { - * $('#example').dataTable( { - * "stateSave": true, - * "stateSaveParams": function (settings, data) { - * data.oSearch.sSearch = ""; - * } - * } ); - * } ); - */ - "fnStateSaveParams": null, - - - /** - * Duration for which the saved state information is considered valid. After this period - * has elapsed the state will be returned to the default. - * Value is given in seconds. - * @type int - * @default 7200 <i>(2 hours)</i> - * - * @dtopt Options - * @name DataTable.defaults.stateDuration - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "stateDuration": 60*60*24; // 1 day - * } ); - * } ) - */ - "iStateDuration": 7200, - - - /** - * When enabled DataTables will not make a request to the server for the first - * page draw - rather it will use the data already on the page (no sorting etc - * will be applied to it), thus saving on an XHR at load time. `deferLoading` - * is used to indicate that deferred loading is required, but it is also used - * to tell DataTables how many records there are in the full table (allowing - * the information element and pagination to be displayed correctly). In the case - * where a filtering is applied to the table on initial load, this can be - * indicated by giving the parameter as an array, where the first element is - * the number of records available after filtering and the second element is the - * number of records without filtering (allowing the table information element - * to be shown correctly). - * @type int | array - * @default null - * - * @dtopt Options - * @name DataTable.defaults.deferLoading - * - * @example - * // 57 records available in the table, no filtering applied - * $(document).ready( function() { - * $('#example').dataTable( { - * "serverSide": true, - * "ajax": "scripts/server_processing.php", - * "deferLoading": 57 - * } ); - * } ); - * - * @example - * // 57 records after filtering, 100 without filtering (an initial filter applied) - * $(document).ready( function() { - * $('#example').dataTable( { - * "serverSide": true, - * "ajax": "scripts/server_processing.php", - * "deferLoading": [ 57, 100 ], - * "search": { - * "search": "my_filter" - * } - * } ); - * } ); - */ - "iDeferLoading": null, - - - /** - * Number of rows to display on a single page when using pagination. If - * feature enabled (`lengthChange`) then the end user will be able to override - * this to a custom setting using a pop-up menu. - * @type int - * @default 10 - * - * @dtopt Options - * @name DataTable.defaults.pageLength - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "pageLength": 50 - * } ); - * } ) - */ - "iDisplayLength": 10, - - - /** - * Define the starting point for data display when using DataTables with - * pagination. Note that this parameter is the number of records, rather than - * the page number, so if you have 10 records per page and want to start on - * the third page, it should be "20". - * @type int - * @default 0 - * - * @dtopt Options - * @name DataTable.defaults.displayStart - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "displayStart": 20 - * } ); - * } ) - */ - "iDisplayStart": 0, - - - /** - * By default DataTables allows keyboard navigation of the table (sorting, paging, - * and filtering) by adding a `tabindex` attribute to the required elements. This - * allows you to tab through the controls and press the enter key to activate them. - * The tabindex is default 0, meaning that the tab follows the flow of the document. - * You can overrule this using this parameter if you wish. Use a value of -1 to - * disable built-in keyboard navigation. - * @type int - * @default 0 - * - * @dtopt Options - * @name DataTable.defaults.tabIndex - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "tabIndex": 1 - * } ); - * } ); - */ - "iTabIndex": 0, - - - /** - * Classes that DataTables assigns to the various components and features - * that it adds to the HTML table. This allows classes to be configured - * during initialisation in addition to through the static - * {@link DataTable.ext.oStdClasses} object). - * @namespace - * @name DataTable.defaults.classes - */ - "oClasses": {}, - - - /** - * All strings that DataTables uses in the user interface that it creates - * are defined in this object, allowing you to modified them individually or - * completely replace them all as required. - * @namespace - * @name DataTable.defaults.language - */ - "oLanguage": { - /** - * Strings that are used for WAI-ARIA labels and controls only (these are not - * actually visible on the page, but will be read by screenreaders, and thus - * must be internationalised as well). - * @namespace - * @name DataTable.defaults.language.aria - */ - "oAria": { - /** - * ARIA label that is added to the table headers when the column may be - * sorted ascending by activing the column (click or return when focused). - * Note that the column header is prefixed to this string. - * @type string - * @default : activate to sort column ascending - * - * @dtopt Language - * @name DataTable.defaults.language.aria.sortAscending - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "aria": { - * "sortAscending": " - click/return to sort ascending" - * } - * } - * } ); - * } ); - */ - "sSortAscending": ": activate to sort column ascending", - - /** - * ARIA label that is added to the table headers when the column may be - * sorted descending by activing the column (click or return when focused). - * Note that the column header is prefixed to this string. - * @type string - * @default : activate to sort column ascending - * - * @dtopt Language - * @name DataTable.defaults.language.aria.sortDescending - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "aria": { - * "sortDescending": " - click/return to sort descending" - * } - * } - * } ); - * } ); - */ - "sSortDescending": ": activate to sort column descending" - }, - - /** - * Pagination string used by DataTables for the built-in pagination - * control types. - * @namespace - * @name DataTable.defaults.language.paginate - */ - "oPaginate": { - /** - * Text to use when using the 'full_numbers' type of pagination for the - * button to take the user to the first page. - * @type string - * @default First - * - * @dtopt Language - * @name DataTable.defaults.language.paginate.first - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "paginate": { - * "first": "First page" - * } - * } - * } ); - * } ); - */ - "sFirst": "First", - - - /** - * Text to use when using the 'full_numbers' type of pagination for the - * button to take the user to the last page. - * @type string - * @default Last - * - * @dtopt Language - * @name DataTable.defaults.language.paginate.last - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "paginate": { - * "last": "Last page" - * } - * } - * } ); - * } ); - */ - "sLast": "Last", - - - /** - * Text to use for the 'next' pagination button (to take the user to the - * next page). - * @type string - * @default Next - * - * @dtopt Language - * @name DataTable.defaults.language.paginate.next - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "paginate": { - * "next": "Next page" - * } - * } - * } ); - * } ); - */ - "sNext": "Next", - - - /** - * Text to use for the 'previous' pagination button (to take the user to - * the previous page). - * @type string - * @default Previous - * - * @dtopt Language - * @name DataTable.defaults.language.paginate.previous - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "paginate": { - * "previous": "Previous page" - * } - * } - * } ); - * } ); - */ - "sPrevious": "Previous" - }, - - /** - * This string is shown in preference to `zeroRecords` when the table is - * empty of data (regardless of filtering). Note that this is an optional - * parameter - if it is not given, the value of `zeroRecords` will be used - * instead (either the default or given value). - * @type string - * @default No data available in table - * - * @dtopt Language - * @name DataTable.defaults.language.emptyTable - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "emptyTable": "No data available in table" - * } - * } ); - * } ); - */ - "sEmptyTable": "No data available in table", - - - /** - * This string gives information to the end user about the information - * that is current on display on the page. The following tokens can be - * used in the string and will be dynamically replaced as the table - * display updates. This tokens can be placed anywhere in the string, or - * removed as needed by the language requires: - * - * * `\_START\_` - Display index of the first record on the current page - * * `\_END\_` - Display index of the last record on the current page - * * `\_TOTAL\_` - Number of records in the table after filtering - * * `\_MAX\_` - Number of records in the table without filtering - * * `\_PAGE\_` - Current page number - * * `\_PAGES\_` - Total number of pages of data in the table - * - * @type string - * @default Showing _START_ to _END_ of _TOTAL_ entries - * - * @dtopt Language - * @name DataTable.defaults.language.info - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "info": "Showing page _PAGE_ of _PAGES_" - * } - * } ); - * } ); - */ - "sInfo": "Showing _START_ to _END_ of _TOTAL_ entries", - - - /** - * Display information string for when the table is empty. Typically the - * format of this string should match `info`. - * @type string - * @default Showing 0 to 0 of 0 entries - * - * @dtopt Language - * @name DataTable.defaults.language.infoEmpty - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "infoEmpty": "No entries to show" - * } - * } ); - * } ); - */ - "sInfoEmpty": "Showing 0 to 0 of 0 entries", - - - /** - * When a user filters the information in a table, this string is appended - * to the information (`info`) to give an idea of how strong the filtering - * is. The variable _MAX_ is dynamically updated. - * @type string - * @default (filtered from _MAX_ total entries) - * - * @dtopt Language - * @name DataTable.defaults.language.infoFiltered - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "infoFiltered": " - filtering from _MAX_ records" - * } - * } ); - * } ); - */ - "sInfoFiltered": "(filtered from _MAX_ total entries)", - - - /** - * If can be useful to append extra information to the info string at times, - * and this variable does exactly that. This information will be appended to - * the `info` (`infoEmpty` and `infoFiltered` in whatever combination they are - * being used) at all times. - * @type string - * @default <i>Empty string</i> - * - * @dtopt Language - * @name DataTable.defaults.language.infoPostFix - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "infoPostFix": "All records shown are derived from real information." - * } - * } ); - * } ); - */ - "sInfoPostFix": "", - - - /** - * This decimal place operator is a little different from the other - * language options since DataTables doesn't output floating point - * numbers, so it won't ever use this for display of a number. Rather, - * what this parameter does is modify the sort methods of the table so - * that numbers which are in a format which has a character other than - * a period (`.`) as a decimal place will be sorted numerically. - * - * Note that numbers with different decimal places cannot be shown in - * the same table and still be sortable, the table must be consistent. - * However, multiple different tables on the page can use different - * decimal place characters. - * @type string - * @default - * - * @dtopt Language - * @name DataTable.defaults.language.decimal - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "decimal": "," - * "thousands": "." - * } - * } ); - * } ); - */ - "sDecimal": "", - - - /** - * DataTables has a build in number formatter (`formatNumber`) which is - * used to format large numbers that are used in the table information. - * By default a comma is used, but this can be trivially changed to any - * character you wish with this parameter. - * @type string - * @default , - * - * @dtopt Language - * @name DataTable.defaults.language.thousands - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "thousands": "'" - * } - * } ); - * } ); - */ - "sThousands": ",", - - - /** - * Detail the action that will be taken when the drop down menu for the - * pagination length option is changed. The '_MENU_' variable is replaced - * with a default select list of 10, 25, 50 and 100, and can be replaced - * with a custom select box if required. - * @type string - * @default Show _MENU_ entries - * - * @dtopt Language - * @name DataTable.defaults.language.lengthMenu - * - * @example - * // Language change only - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "lengthMenu": "Display _MENU_ records" - * } - * } ); - * } ); - * - * @example - * // Language and options change - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "lengthMenu": 'Display <select>'+ - * '<option value="10">10</option>'+ - * '<option value="20">20</option>'+ - * '<option value="30">30</option>'+ - * '<option value="40">40</option>'+ - * '<option value="50">50</option>'+ - * '<option value="-1">All</option>'+ - * '</select> records' - * } - * } ); - * } ); - */ - "sLengthMenu": "Show _MENU_ entries", - - - /** - * When using Ajax sourced data and during the first draw when DataTables is - * gathering the data, this message is shown in an empty row in the table to - * indicate to the end user the the data is being loaded. Note that this - * parameter is not used when loading data by server-side processing, just - * Ajax sourced data with client-side processing. - * @type string - * @default Loading... - * - * @dtopt Language - * @name DataTable.defaults.language.loadingRecords - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "loadingRecords": "Please wait - loading..." - * } - * } ); - * } ); - */ - "sLoadingRecords": "Loading...", - - - /** - * Text which is displayed when the table is processing a user action - * (usually a sort command or similar). - * @type string - * @default Processing... - * - * @dtopt Language - * @name DataTable.defaults.language.processing - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "processing": "DataTables is currently busy" - * } - * } ); - * } ); - */ - "sProcessing": "Processing...", - - - /** - * Details the actions that will be taken when the user types into the - * filtering input text box. The variable "_INPUT_", if used in the string, - * is replaced with the HTML text box for the filtering input allowing - * control over where it appears in the string. If "_INPUT_" is not given - * then the input box is appended to the string automatically. - * @type string - * @default Search: - * - * @dtopt Language - * @name DataTable.defaults.language.search - * - * @example - * // Input text box will be appended at the end automatically - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "search": "Filter records:" - * } - * } ); - * } ); - * - * @example - * // Specify where the filter should appear - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "search": "Apply filter _INPUT_ to table" - * } - * } ); - * } ); - */ - "sSearch": "Search:", - - - /** - * Assign a `placeholder` attribute to the search `input` element - * @type string - * @default - * - * @dtopt Language - * @name DataTable.defaults.language.searchPlaceholder - */ - "sSearchPlaceholder": "", - - - /** - * All of the language information can be stored in a file on the - * server-side, which DataTables will look up if this parameter is passed. - * It must store the URL of the language file, which is in a JSON format, - * and the object has the same properties as the oLanguage object in the - * initialiser object (i.e. the above parameters). Please refer to one of - * the example language files to see how this works in action. - * @type string - * @default <i>Empty string - i.e. disabled</i> - * - * @dtopt Language - * @name DataTable.defaults.language.url - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "url": "http://www.sprymedia.co.uk/dataTables/lang.txt" - * } - * } ); - * } ); - */ - "sUrl": "", - - - /** - * Text shown inside the table records when the is no information to be - * displayed after filtering. `emptyTable` is shown when there is simply no - * information in the table at all (regardless of filtering). - * @type string - * @default No matching records found - * - * @dtopt Language - * @name DataTable.defaults.language.zeroRecords - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "zeroRecords": "No records to display" - * } - * } ); - * } ); - */ - "sZeroRecords": "No matching records found" - }, - - - /** - * This parameter allows you to have define the global filtering state at - * initialisation time. As an object the `search` parameter must be - * defined, but all other parameters are optional. When `regex` is true, - * the search string will be treated as a regular expression, when false - * (default) it will be treated as a straight string. When `smart` - * DataTables will use it's smart filtering methods (to word match at - * any point in the data), when false this will not be done. - * @namespace - * @extends DataTable.models.oSearch - * - * @dtopt Options - * @name DataTable.defaults.search - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "search": {"search": "Initial search"} - * } ); - * } ) - */ - "oSearch": $.extend( {}, DataTable.models.oSearch ), - - - /** - * __Deprecated__ The functionality provided by this parameter has now been - * superseded by that provided through `ajax`, which should be used instead. - * - * By default DataTables will look for the property `data` (or `aaData` for - * compatibility with DataTables 1.9-) when obtaining data from an Ajax - * source or for server-side processing - this parameter allows that - * property to be changed. You can use Javascript dotted object notation to - * get a data source for multiple levels of nesting. - * @type string - * @default data - * - * @dtopt Options - * @dtopt Server-side - * @name DataTable.defaults.ajaxDataProp - * - * @deprecated 1.10. Please use `ajax` for this functionality now. - */ - "sAjaxDataProp": "data", - - - /** - * __Deprecated__ The functionality provided by this parameter has now been - * superseded by that provided through `ajax`, which should be used instead. - * - * You can instruct DataTables to load data from an external - * source using this parameter (use aData if you want to pass data in you - * already have). Simply provide a url a JSON object can be obtained from. - * @type string - * @default null - * - * @dtopt Options - * @dtopt Server-side - * @name DataTable.defaults.ajaxSource - * - * @deprecated 1.10. Please use `ajax` for this functionality now. - */ - "sAjaxSource": null, - - - /** - * This initialisation variable allows you to specify exactly where in the - * DOM you want DataTables to inject the various controls it adds to the page - * (for example you might want the pagination controls at the top of the - * table). DIV elements (with or without a custom class) can also be added to - * aid styling. The follow syntax is used: - * <ul> - * <li>The following options are allowed: - * <ul> - * <li>'l' - Length changing</li> - * <li>'f' - Filtering input</li> - * <li>'t' - The table!</li> - * <li>'i' - Information</li> - * <li>'p' - Pagination</li> - * <li>'r' - pRocessing</li> - * </ul> - * </li> - * <li>The following constants are allowed: - * <ul> - * <li>'H' - jQueryUI theme "header" classes ('fg-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix')</li> - * <li>'F' - jQueryUI theme "footer" classes ('fg-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix')</li> - * </ul> - * </li> - * <li>The following syntax is expected: - * <ul> - * <li>'&lt;' and '&gt;' - div elements</li> - * <li>'&lt;"class" and '&gt;' - div with a class</li> - * <li>'&lt;"#id" and '&gt;' - div with an ID</li> - * </ul> - * </li> - * <li>Examples: - * <ul> - * <li>'&lt;"wrapper"flipt&gt;'</li> - * <li>'&lt;lf&lt;t&gt;ip&gt;'</li> - * </ul> - * </li> - * </ul> - * @type string - * @default lfrtip <i>(when `jQueryUI` is false)</i> <b>or</b> - * <"H"lfr>t<"F"ip> <i>(when `jQueryUI` is true)</i> - * - * @dtopt Options - * @name DataTable.defaults.dom - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "dom": '&lt;"top"i&gt;rt&lt;"bottom"flp&gt;&lt;"clear"&gt;' - * } ); - * } ); - */ - "sDom": "lfrtip", - - - /** - * Search delay option. This will throttle full table searches that use the - * DataTables provided search input element (it does not effect calls to - * `dt-api search()`, providing a delay before the search is made. - * @type integer - * @default 0 - * - * @dtopt Options - * @name DataTable.defaults.searchDelay - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "searchDelay": 200 - * } ); - * } ) - */ - "searchDelay": null, - - - /** - * DataTables features four different built-in options for the buttons to - * display for pagination control: - * - * * `simple` - 'Previous' and 'Next' buttons only - * * 'simple_numbers` - 'Previous' and 'Next' buttons, plus page numbers - * * `full` - 'First', 'Previous', 'Next' and 'Last' buttons - * * `full_numbers` - 'First', 'Previous', 'Next' and 'Last' buttons, plus - * page numbers - * - * Further methods can be added using {@link DataTable.ext.oPagination}. - * @type string - * @default simple_numbers - * - * @dtopt Options - * @name DataTable.defaults.pagingType - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "pagingType": "full_numbers" - * } ); - * } ) - */ - "sPaginationType": "simple_numbers", - - - /** - * Enable horizontal scrolling. When a table is too wide to fit into a - * certain layout, or you have a large number of columns in the table, you - * can enable x-scrolling to show the table in a viewport, which can be - * scrolled. This property can be `true` which will allow the table to - * scroll horizontally when needed, or any CSS unit, or a number (in which - * case it will be treated as a pixel measurement). Setting as simply `true` - * is recommended. - * @type boolean|string - * @default <i>blank string - i.e. disabled</i> - * - * @dtopt Features - * @name DataTable.defaults.scrollX - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "scrollX": true, - * "scrollCollapse": true - * } ); - * } ); - */ - "sScrollX": "", - - - /** - * This property can be used to force a DataTable to use more width than it - * might otherwise do when x-scrolling is enabled. For example if you have a - * table which requires to be well spaced, this parameter is useful for - * "over-sizing" the table, and thus forcing scrolling. This property can by - * any CSS unit, or a number (in which case it will be treated as a pixel - * measurement). - * @type string - * @default <i>blank string - i.e. disabled</i> - * - * @dtopt Options - * @name DataTable.defaults.scrollXInner - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "scrollX": "100%", - * "scrollXInner": "110%" - * } ); - * } ); - */ - "sScrollXInner": "", - - - /** - * Enable vertical scrolling. Vertical scrolling will constrain the DataTable - * to the given height, and enable scrolling for any data which overflows the - * current viewport. This can be used as an alternative to paging to display - * a lot of data in a small area (although paging and scrolling can both be - * enabled at the same time). This property can be any CSS unit, or a number - * (in which case it will be treated as a pixel measurement). - * @type string - * @default <i>blank string - i.e. disabled</i> - * - * @dtopt Features - * @name DataTable.defaults.scrollY - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "scrollY": "200px", - * "paginate": false - * } ); - * } ); - */ - "sScrollY": "", - - - /** - * __Deprecated__ The functionality provided by this parameter has now been - * superseded by that provided through `ajax`, which should be used instead. - * - * Set the HTTP method that is used to make the Ajax call for server-side - * processing or Ajax sourced data. - * @type string - * @default GET - * - * @dtopt Options - * @dtopt Server-side - * @name DataTable.defaults.serverMethod - * - * @deprecated 1.10. Please use `ajax` for this functionality now. - */ - "sServerMethod": "GET", - - - /** - * DataTables makes use of renderers when displaying HTML elements for - * a table. These renderers can be added or modified by plug-ins to - * generate suitable mark-up for a site. For example the Bootstrap - * integration plug-in for DataTables uses a paging button renderer to - * display pagination buttons in the mark-up required by Bootstrap. - * - * For further information about the renderers available see - * DataTable.ext.renderer - * @type string|object - * @default null - * - * @name DataTable.defaults.renderer - * - */ - "renderer": null - }; - - _fnHungarianMap( DataTable.defaults ); - - - - /* - * Developer note - See note in model.defaults.js about the use of Hungarian - * notation and camel case. - */ - - /** - * Column options that can be given to DataTables at initialisation time. - * @namespace - */ - DataTable.defaults.column = { - /** - * Define which column(s) an order will occur on for this column. This - * allows a column's ordering to take multiple columns into account when - * doing a sort or use the data from a different column. For example first - * name / last name columns make sense to do a multi-column sort over the - * two columns. - * @type array|int - * @default null <i>Takes the value of the column index automatically</i> - * - * @name DataTable.defaults.column.orderData - * @dtopt Columns - * - * @example - * // Using `columnDefs` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ - * { "orderData": [ 0, 1 ], "targets": [ 0 ] }, - * { "orderData": [ 1, 0 ], "targets": [ 1 ] }, - * { "orderData": 2, "targets": [ 2 ] } - * ] - * } ); - * } ); - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * { "orderData": [ 0, 1 ] }, - * { "orderData": [ 1, 0 ] }, - * { "orderData": 2 }, - * null, - * null - * ] - * } ); - * } ); - */ - "aDataSort": null, - "iDataSort": -1, - - - /** - * You can control the default ordering direction, and even alter the - * behaviour of the sort handler (i.e. only allow ascending ordering etc) - * using this parameter. - * @type array - * @default [ 'asc', 'desc' ] - * - * @name DataTable.defaults.column.orderSequence - * @dtopt Columns - * - * @example - * // Using `columnDefs` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ - * { "orderSequence": [ "asc" ], "targets": [ 1 ] }, - * { "orderSequence": [ "desc", "asc", "asc" ], "targets": [ 2 ] }, - * { "orderSequence": [ "desc" ], "targets": [ 3 ] } - * ] - * } ); - * } ); - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * null, - * { "orderSequence": [ "asc" ] }, - * { "orderSequence": [ "desc", "asc", "asc" ] }, - * { "orderSequence": [ "desc" ] }, - * null - * ] - * } ); - * } ); - */ - "asSorting": [ 'asc', 'desc' ], - - - /** - * Enable or disable filtering on the data in this column. - * @type boolean - * @default true - * - * @name DataTable.defaults.column.searchable - * @dtopt Columns - * - * @example - * // Using `columnDefs` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ - * { "searchable": false, "targets": [ 0 ] } - * ] } ); - * } ); - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * { "searchable": false }, - * null, - * null, - * null, - * null - * ] } ); - * } ); - */ - "bSearchable": true, - - - /** - * Enable or disable ordering on this column. - * @type boolean - * @default true - * - * @name DataTable.defaults.column.orderable - * @dtopt Columns - * - * @example - * // Using `columnDefs` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ - * { "orderable": false, "targets": [ 0 ] } - * ] } ); - * } ); - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * { "orderable": false }, - * null, - * null, - * null, - * null - * ] } ); - * } ); - */ - "bSortable": true, - - - /** - * Enable or disable the display of this column. - * @type boolean - * @default true - * - * @name DataTable.defaults.column.visible - * @dtopt Columns - * - * @example - * // Using `columnDefs` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ - * { "visible": false, "targets": [ 0 ] } - * ] } ); - * } ); - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * { "visible": false }, - * null, - * null, - * null, - * null - * ] } ); - * } ); - */ - "bVisible": true, - - - /** - * Developer definable function that is called whenever a cell is created (Ajax source, - * etc) or processed for input (DOM source). This can be used as a compliment to mRender - * allowing you to modify the DOM element (add background colour for example) when the - * element is available. - * @type function - * @param {element} td The TD node that has been created - * @param {*} cellData The Data for the cell - * @param {array|object} rowData The data for the whole row - * @param {int} row The row index for the aoData data store - * @param {int} col The column index for aoColumns - * - * @name DataTable.defaults.column.createdCell - * @dtopt Columns - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ { - * "targets": [3], - * "createdCell": function (td, cellData, rowData, row, col) { - * if ( cellData == "1.7" ) { - * $(td).css('color', 'blue') - * } - * } - * } ] - * }); - * } ); - */ - "fnCreatedCell": null, - - - /** - * This parameter has been replaced by `data` in DataTables to ensure naming - * consistency. `dataProp` can still be used, as there is backwards - * compatibility in DataTables for this option, but it is strongly - * recommended that you use `data` in preference to `dataProp`. - * @name DataTable.defaults.column.dataProp - */ - - - /** - * This property can be used to read data from any data source property, - * including deeply nested objects / properties. `data` can be given in a - * number of different ways which effect its behaviour: - * - * * `integer` - treated as an array index for the data source. This is the - * default that DataTables uses (incrementally increased for each column). - * * `string` - read an object property from the data source. There are - * three 'special' options that can be used in the string to alter how - * DataTables reads the data from the source object: - * * `.` - Dotted Javascript notation. Just as you use a `.` in - * Javascript to read from nested objects, so to can the options - * specified in `data`. For example: `browser.version` or - * `browser.name`. If your object parameter name contains a period, use - * `\\` to escape it - i.e. `first\\.name`. - * * `[]` - Array notation. DataTables can automatically combine data - * from and array source, joining the data with the characters provided - * between the two brackets. For example: `name[, ]` would provide a - * comma-space separated list from the source array. If no characters - * are provided between the brackets, the original array source is - * returned. - * * `()` - Function notation. Adding `()` to the end of a parameter will - * execute a function of the name given. For example: `browser()` for a - * simple function on the data source, `browser.version()` for a - * function in a nested property or even `browser().version` to get an - * object property if the function called returns an object. Note that - * function notation is recommended for use in `render` rather than - * `data` as it is much simpler to use as a renderer. - * * `null` - use the original data source for the row rather than plucking - * data directly from it. This action has effects on two other - * initialisation options: - * * `defaultContent` - When null is given as the `data` option and - * `defaultContent` is specified for the column, the value defined by - * `defaultContent` will be used for the cell. - * * `render` - When null is used for the `data` option and the `render` - * option is specified for the column, the whole data source for the - * row is used for the renderer. - * * `function` - the function given will be executed whenever DataTables - * needs to set or get the data for a cell in the column. The function - * takes three parameters: - * * Parameters: - * * `{array|object}` The data source for the row - * * `{string}` The type call data requested - this will be 'set' when - * setting data or 'filter', 'display', 'type', 'sort' or undefined - * when gathering data. Note that when `undefined` is given for the - * type DataTables expects to get the raw data for the object back< - * * `{*}` Data to set when the second parameter is 'set'. - * * Return: - * * The return value from the function is not required when 'set' is - * the type of call, but otherwise the return is what will be used - * for the data requested. - * - * Note that `data` is a getter and setter option. If you just require - * formatting of data for output, you will likely want to use `render` which - * is simply a getter and thus simpler to use. - * - * Note that prior to DataTables 1.9.2 `data` was called `mDataProp`. The - * name change reflects the flexibility of this property and is consistent - * with the naming of mRender. If 'mDataProp' is given, then it will still - * be used by DataTables, as it automatically maps the old name to the new - * if required. - * - * @type string|int|function|null - * @default null <i>Use automatically calculated column index</i> - * - * @name DataTable.defaults.column.data - * @dtopt Columns - * - * @example - * // Read table data from objects - * // JSON structure for each row: - * // { - * // "engine": {value}, - * // "browser": {value}, - * // "platform": {value}, - * // "version": {value}, - * // "grade": {value} - * // } - * $(document).ready( function() { - * $('#example').dataTable( { - * "ajaxSource": "sources/objects.txt", - * "columns": [ - * { "data": "engine" }, - * { "data": "browser" }, - * { "data": "platform" }, - * { "data": "version" }, - * { "data": "grade" } - * ] - * } ); - * } ); - * - * @example - * // Read information from deeply nested objects - * // JSON structure for each row: - * // { - * // "engine": {value}, - * // "browser": {value}, - * // "platform": { - * // "inner": {value} - * // }, - * // "details": [ - * // {value}, {value} - * // ] - * // } - * $(document).ready( function() { - * $('#example').dataTable( { - * "ajaxSource": "sources/deep.txt", - * "columns": [ - * { "data": "engine" }, - * { "data": "browser" }, - * { "data": "platform.inner" }, - * { "data": "platform.details.0" }, - * { "data": "platform.details.1" } - * ] - * } ); - * } ); - * - * @example - * // Using `data` as a function to provide different information for - * // sorting, filtering and display. In this case, currency (price) - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ { - * "targets": [ 0 ], - * "data": function ( source, type, val ) { - * if (type === 'set') { - * source.price = val; - * // Store the computed dislay and filter values for efficiency - * source.price_display = val=="" ? "" : "$"+numberFormat(val); - * source.price_filter = val=="" ? "" : "$"+numberFormat(val)+" "+val; - * return; - * } - * else if (type === 'display') { - * return source.price_display; - * } - * else if (type === 'filter') { - * return source.price_filter; - * } - * // 'sort', 'type' and undefined all just use the integer - * return source.price; - * } - * } ] - * } ); - * } ); - * - * @example - * // Using default content - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ { - * "targets": [ 0 ], - * "data": null, - * "defaultContent": "Click to edit" - * } ] - * } ); - * } ); - * - * @example - * // Using array notation - outputting a list from an array - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ { - * "targets": [ 0 ], - * "data": "name[, ]" - * } ] - * } ); - * } ); - * - */ - "mData": null, - - - /** - * This property is the rendering partner to `data` and it is suggested that - * when you want to manipulate data for display (including filtering, - * sorting etc) without altering the underlying data for the table, use this - * property. `render` can be considered to be the the read only companion to - * `data` which is read / write (then as such more complex). Like `data` - * this option can be given in a number of different ways to effect its - * behaviour: - * - * * `integer` - treated as an array index for the data source. This is the - * default that DataTables uses (incrementally increased for each column). - * * `string` - read an object property from the data source. There are - * three 'special' options that can be used in the string to alter how - * DataTables reads the data from the source object: - * * `.` - Dotted Javascript notation. Just as you use a `.` in - * Javascript to read from nested objects, so to can the options - * specified in `data`. For example: `browser.version` or - * `browser.name`. If your object parameter name contains a period, use - * `\\` to escape it - i.e. `first\\.name`. - * * `[]` - Array notation. DataTables can automatically combine data - * from and array source, joining the data with the characters provided - * between the two brackets. For example: `name[, ]` would provide a - * comma-space separated list from the source array. If no characters - * are provided between the brackets, the original array source is - * returned. - * * `()` - Function notation. Adding `()` to the end of a parameter will - * execute a function of the name given. For example: `browser()` for a - * simple function on the data source, `browser.version()` for a - * function in a nested property or even `browser().version` to get an - * object property if the function called returns an object. - * * `object` - use different data for the different data types requested by - * DataTables ('filter', 'display', 'type' or 'sort'). The property names - * of the object is the data type the property refers to and the value can - * defined using an integer, string or function using the same rules as - * `render` normally does. Note that an `_` option _must_ be specified. - * This is the default value to use if you haven't specified a value for - * the data type requested by DataTables. - * * `function` - the function given will be executed whenever DataTables - * needs to set or get the data for a cell in the column. The function - * takes three parameters: - * * Parameters: - * * {array|object} The data source for the row (based on `data`) - * * {string} The type call data requested - this will be 'filter', - * 'display', 'type' or 'sort'. - * * {array|object} The full data source for the row (not based on - * `data`) - * * Return: - * * The return value from the function is what will be used for the - * data requested. - * - * @type string|int|function|object|null - * @default null Use the data source value. - * - * @name DataTable.defaults.column.render - * @dtopt Columns - * - * @example - * // Create a comma separated list from an array of objects - * $(document).ready( function() { - * $('#example').dataTable( { - * "ajaxSource": "sources/deep.txt", - * "columns": [ - * { "data": "engine" }, - * { "data": "browser" }, - * { - * "data": "platform", - * "render": "[, ].name" - * } - * ] - * } ); - * } ); - * - * @example - * // Execute a function to obtain data - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ { - * "targets": [ 0 ], - * "data": null, // Use the full data source object for the renderer's source - * "render": "browserName()" - * } ] - * } ); - * } ); - * - * @example - * // As an object, extracting different data for the different types - * // This would be used with a data source such as: - * // { "phone": 5552368, "phone_filter": "5552368 555-2368", "phone_display": "555-2368" } - * // Here the `phone` integer is used for sorting and type detection, while `phone_filter` - * // (which has both forms) is used for filtering for if a user inputs either format, while - * // the formatted phone number is the one that is shown in the table. - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ { - * "targets": [ 0 ], - * "data": null, // Use the full data source object for the renderer's source - * "render": { - * "_": "phone", - * "filter": "phone_filter", - * "display": "phone_display" - * } - * } ] - * } ); - * } ); - * - * @example - * // Use as a function to create a link from the data source - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ { - * "targets": [ 0 ], - * "data": "download_link", - * "render": function ( data, type, full ) { - * return '<a href="'+data+'">Download</a>'; - * } - * } ] - * } ); - * } ); - */ - "mRender": null, - - - /** - * Change the cell type created for the column - either TD cells or TH cells. This - * can be useful as TH cells have semantic meaning in the table body, allowing them - * to act as a header for a row (you may wish to add scope='row' to the TH elements). - * @type string - * @default td - * - * @name DataTable.defaults.column.cellType - * @dtopt Columns - * - * @example - * // Make the first column use TH cells - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ { - * "targets": [ 0 ], - * "cellType": "th" - * } ] - * } ); - * } ); - */ - "sCellType": "td", - - - /** - * Class to give to each cell in this column. - * @type string - * @default <i>Empty string</i> - * - * @name DataTable.defaults.column.class - * @dtopt Columns - * - * @example - * // Using `columnDefs` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ - * { "class": "my_class", "targets": [ 0 ] } - * ] - * } ); - * } ); - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * { "class": "my_class" }, - * null, - * null, - * null, - * null - * ] - * } ); - * } ); - */ - "sClass": "", - - /** - * When DataTables calculates the column widths to assign to each column, - * it finds the longest string in each column and then constructs a - * temporary table and reads the widths from that. The problem with this - * is that "mmm" is much wider then "iiii", but the latter is a longer - * string - thus the calculation can go wrong (doing it properly and putting - * it into an DOM object and measuring that is horribly(!) slow). Thus as - * a "work around" we provide this option. It will append its value to the - * text that is found to be the longest string for the column - i.e. padding. - * Generally you shouldn't need this! - * @type string - * @default <i>Empty string<i> - * - * @name DataTable.defaults.column.contentPadding - * @dtopt Columns - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * null, - * null, - * null, - * { - * "contentPadding": "mmm" - * } - * ] - * } ); - * } ); - */ - "sContentPadding": "", - - - /** - * Allows a default value to be given for a column's data, and will be used - * whenever a null data source is encountered (this can be because `data` - * is set to null, or because the data source itself is null). - * @type string - * @default null - * - * @name DataTable.defaults.column.defaultContent - * @dtopt Columns - * - * @example - * // Using `columnDefs` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ - * { - * "data": null, - * "defaultContent": "Edit", - * "targets": [ -1 ] - * } - * ] - * } ); - * } ); - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * null, - * null, - * null, - * { - * "data": null, - * "defaultContent": "Edit" - * } - * ] - * } ); - * } ); - */ - "sDefaultContent": null, - - - /** - * This parameter is only used in DataTables' server-side processing. It can - * be exceptionally useful to know what columns are being displayed on the - * client side, and to map these to database fields. When defined, the names - * also allow DataTables to reorder information from the server if it comes - * back in an unexpected order (i.e. if you switch your columns around on the - * client-side, your server-side code does not also need updating). - * @type string - * @default <i>Empty string</i> - * - * @name DataTable.defaults.column.name - * @dtopt Columns - * - * @example - * // Using `columnDefs` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ - * { "name": "engine", "targets": [ 0 ] }, - * { "name": "browser", "targets": [ 1 ] }, - * { "name": "platform", "targets": [ 2 ] }, - * { "name": "version", "targets": [ 3 ] }, - * { "name": "grade", "targets": [ 4 ] } - * ] - * } ); - * } ); - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * { "name": "engine" }, - * { "name": "browser" }, - * { "name": "platform" }, - * { "name": "version" }, - * { "name": "grade" } - * ] - * } ); - * } ); - */ - "sName": "", - - - /** - * Defines a data source type for the ordering which can be used to read - * real-time information from the table (updating the internally cached - * version) prior to ordering. This allows ordering to occur on user - * editable elements such as form inputs. - * @type string - * @default std - * - * @name DataTable.defaults.column.orderDataType - * @dtopt Columns - * - * @example - * // Using `columnDefs` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ - * { "orderDataType": "dom-text", "targets": [ 2, 3 ] }, - * { "type": "numeric", "targets": [ 3 ] }, - * { "orderDataType": "dom-select", "targets": [ 4 ] }, - * { "orderDataType": "dom-checkbox", "targets": [ 5 ] } - * ] - * } ); - * } ); - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * null, - * null, - * { "orderDataType": "dom-text" }, - * { "orderDataType": "dom-text", "type": "numeric" }, - * { "orderDataType": "dom-select" }, - * { "orderDataType": "dom-checkbox" } - * ] - * } ); - * } ); - */ - "sSortDataType": "std", - - - /** - * The title of this column. - * @type string - * @default null <i>Derived from the 'TH' value for this column in the - * original HTML table.</i> - * - * @name DataTable.defaults.column.title - * @dtopt Columns - * - * @example - * // Using `columnDefs` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ - * { "title": "My column title", "targets": [ 0 ] } - * ] - * } ); - * } ); - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * { "title": "My column title" }, - * null, - * null, - * null, - * null - * ] - * } ); - * } ); - */ - "sTitle": null, - - - /** - * The type allows you to specify how the data for this column will be - * ordered. Four types (string, numeric, date and html (which will strip - * HTML tags before ordering)) are currently available. Note that only date - * formats understood by Javascript's Date() object will be accepted as type - * date. For example: "Mar 26, 2008 5:03 PM". May take the values: 'string', - * 'numeric', 'date' or 'html' (by default). Further types can be adding - * through plug-ins. - * @type string - * @default null <i>Auto-detected from raw data</i> - * - * @name DataTable.defaults.column.type - * @dtopt Columns - * - * @example - * // Using `columnDefs` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ - * { "type": "html", "targets": [ 0 ] } - * ] - * } ); - * } ); - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * { "type": "html" }, - * null, - * null, - * null, - * null - * ] - * } ); - * } ); - */ - "sType": null, - - - /** - * Defining the width of the column, this parameter may take any CSS value - * (3em, 20px etc). DataTables applies 'smart' widths to columns which have not - * been given a specific width through this interface ensuring that the table - * remains readable. - * @type string - * @default null <i>Automatic</i> - * - * @name DataTable.defaults.column.width - * @dtopt Columns - * - * @example - * // Using `columnDefs` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ - * { "width": "20%", "targets": [ 0 ] } - * ] - * } ); - * } ); - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * { "width": "20%" }, - * null, - * null, - * null, - * null - * ] - * } ); - * } ); - */ - "sWidth": null - }; - - _fnHungarianMap( DataTable.defaults.column ); - - - - /** - * DataTables settings object - this holds all the information needed for a - * given table, including configuration, data and current application of the - * table options. DataTables does not have a single instance for each DataTable - * with the settings attached to that instance, but rather instances of the - * DataTable "class" are created on-the-fly as needed (typically by a - * $().dataTable() call) and the settings object is then applied to that - * instance. - * - * Note that this object is related to {@link DataTable.defaults} but this - * one is the internal data store for DataTables's cache of columns. It should - * NOT be manipulated outside of DataTables. Any configuration should be done - * through the initialisation options. - * @namespace - * @todo Really should attach the settings object to individual instances so we - * don't need to create new instances on each $().dataTable() call (if the - * table already exists). It would also save passing oSettings around and - * into every single function. However, this is a very significant - * architecture change for DataTables and will almost certainly break - * backwards compatibility with older installations. This is something that - * will be done in 2.0. - */ - DataTable.models.oSettings = { - /** - * Primary features of DataTables and their enablement state. - * @namespace - */ - "oFeatures": { - - /** - * Flag to say if DataTables should automatically try to calculate the - * optimum table and columns widths (true) or not (false). - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bAutoWidth": null, - - /** - * Delay the creation of TR and TD elements until they are actually - * needed by a driven page draw. This can give a significant speed - * increase for Ajax source and Javascript source data, but makes no - * difference at all fro DOM and server-side processing tables. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bDeferRender": null, - - /** - * Enable filtering on the table or not. Note that if this is disabled - * then there is no filtering at all on the table, including fnFilter. - * To just remove the filtering input use sDom and remove the 'f' option. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bFilter": null, - - /** - * Table information element (the 'Showing x of y records' div) enable - * flag. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bInfo": null, - - /** - * Present a user control allowing the end user to change the page size - * when pagination is enabled. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bLengthChange": null, - - /** - * Pagination enabled or not. Note that if this is disabled then length - * changing must also be disabled. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bPaginate": null, - - /** - * Processing indicator enable flag whenever DataTables is enacting a - * user request - typically an Ajax request for server-side processing. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bProcessing": null, - - /** - * Server-side processing enabled flag - when enabled DataTables will - * get all data from the server for every draw - there is no filtering, - * sorting or paging done on the client-side. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bServerSide": null, - - /** - * Sorting enablement flag. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bSort": null, - - /** - * Multi-column sorting - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bSortMulti": null, - - /** - * Apply a class to the columns which are being sorted to provide a - * visual highlight or not. This can slow things down when enabled since - * there is a lot of DOM interaction. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bSortClasses": null, - - /** - * State saving enablement flag. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bStateSave": null - }, - - - /** - * Scrolling settings for a table. - * @namespace - */ - "oScroll": { - /** - * When the table is shorter in height than sScrollY, collapse the - * table container down to the height of the table (when true). - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bCollapse": null, - - /** - * Width of the scrollbar for the web-browser's platform. Calculated - * during table initialisation. - * @type int - * @default 0 - */ - "iBarWidth": 0, - - /** - * Viewport width for horizontal scrolling. Horizontal scrolling is - * disabled if an empty string. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type string - */ - "sX": null, - - /** - * Width to expand the table to when using x-scrolling. Typically you - * should not need to use this. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type string - * @deprecated - */ - "sXInner": null, - - /** - * Viewport height for vertical scrolling. Vertical scrolling is disabled - * if an empty string. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type string - */ - "sY": null - }, - - /** - * Language information for the table. - * @namespace - * @extends DataTable.defaults.oLanguage - */ - "oLanguage": { - /** - * Information callback function. See - * {@link DataTable.defaults.fnInfoCallback} - * @type function - * @default null - */ - "fnInfoCallback": null - }, - - /** - * Browser support parameters - * @namespace - */ - "oBrowser": { - /** - * Indicate if the browser incorrectly calculates width:100% inside a - * scrolling element (IE6/7) - * @type boolean - * @default false - */ - "bScrollOversize": false, - - /** - * Determine if the vertical scrollbar is on the right or left of the - * scrolling container - needed for rtl language layout, although not - * all browsers move the scrollbar (Safari). - * @type boolean - * @default false - */ - "bScrollbarLeft": false - }, - - - "ajax": null, - - - /** - * Array referencing the nodes which are used for the features. The - * parameters of this object match what is allowed by sDom - i.e. - * <ul> - * <li>'l' - Length changing</li> - * <li>'f' - Filtering input</li> - * <li>'t' - The table!</li> - * <li>'i' - Information</li> - * <li>'p' - Pagination</li> - * <li>'r' - pRocessing</li> - * </ul> - * @type array - * @default [] - */ - "aanFeatures": [], - - /** - * Store data information - see {@link DataTable.models.oRow} for detailed - * information. - * @type array - * @default [] - */ - "aoData": [], - - /** - * Array of indexes which are in the current display (after filtering etc) - * @type array - * @default [] - */ - "aiDisplay": [], - - /** - * Array of indexes for display - no filtering - * @type array - * @default [] - */ - "aiDisplayMaster": [], - - /** - * Store information about each column that is in use - * @type array - * @default [] - */ - "aoColumns": [], - - /** - * Store information about the table's header - * @type array - * @default [] - */ - "aoHeader": [], - - /** - * Store information about the table's footer - * @type array - * @default [] - */ - "aoFooter": [], - - /** - * Store the applied global search information in case we want to force a - * research or compare the old search to a new one. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @namespace - * @extends DataTable.models.oSearch - */ - "oPreviousSearch": {}, - - /** - * Store the applied search for each column - see - * {@link DataTable.models.oSearch} for the format that is used for the - * filtering information for each column. - * @type array - * @default [] - */ - "aoPreSearchCols": [], - - /** - * Sorting that is applied to the table. Note that the inner arrays are - * used in the following manner: - * <ul> - * <li>Index 0 - column number</li> - * <li>Index 1 - current sorting direction</li> - * </ul> - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type array - * @todo These inner arrays should really be objects - */ - "aaSorting": null, - - /** - * Sorting that is always applied to the table (i.e. prefixed in front of - * aaSorting). - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type array - * @default [] - */ - "aaSortingFixed": [], - - /** - * Classes to use for the striping of a table. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type array - * @default [] - */ - "asStripeClasses": null, - - /** - * If restoring a table - we should restore its striping classes as well - * @type array - * @default [] - */ - "asDestroyStripes": [], - - /** - * If restoring a table - we should restore its width - * @type int - * @default 0 - */ - "sDestroyWidth": 0, - - /** - * Callback functions array for every time a row is inserted (i.e. on a draw). - * @type array - * @default [] - */ - "aoRowCallback": [], - - /** - * Callback functions for the header on each draw. - * @type array - * @default [] - */ - "aoHeaderCallback": [], - - /** - * Callback function for the footer on each draw. - * @type array - * @default [] - */ - "aoFooterCallback": [], - - /** - * Array of callback functions for draw callback functions - * @type array - * @default [] - */ - "aoDrawCallback": [], - - /** - * Array of callback functions for row created function - * @type array - * @default [] - */ - "aoRowCreatedCallback": [], - - /** - * Callback functions for just before the table is redrawn. A return of - * false will be used to cancel the draw. - * @type array - * @default [] - */ - "aoPreDrawCallback": [], - - /** - * Callback functions for when the table has been initialised. - * @type array - * @default [] - */ - "aoInitComplete": [], - - - /** - * Callbacks for modifying the settings to be stored for state saving, prior to - * saving state. - * @type array - * @default [] - */ - "aoStateSaveParams": [], - - /** - * Callbacks for modifying the settings that have been stored for state saving - * prior to using the stored values to restore the state. - * @type array - * @default [] - */ - "aoStateLoadParams": [], - - /** - * Callbacks for operating on the settings object once the saved state has been - * loaded - * @type array - * @default [] - */ - "aoStateLoaded": [], - - /** - * Cache the table ID for quick access - * @type string - * @default <i>Empty string</i> - */ - "sTableId": "", - - /** - * The TABLE node for the main table - * @type node - * @default null - */ - "nTable": null, - - /** - * Permanent ref to the thead element - * @type node - * @default null - */ - "nTHead": null, - - /** - * Permanent ref to the tfoot element - if it exists - * @type node - * @default null - */ - "nTFoot": null, - - /** - * Permanent ref to the tbody element - * @type node - * @default null - */ - "nTBody": null, - - /** - * Cache the wrapper node (contains all DataTables controlled elements) - * @type node - * @default null - */ - "nTableWrapper": null, - - /** - * Indicate if when using server-side processing the loading of data - * should be deferred until the second draw. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - * @default false - */ - "bDeferLoading": false, - - /** - * Indicate if all required information has been read in - * @type boolean - * @default false - */ - "bInitialised": false, - - /** - * Information about open rows. Each object in the array has the parameters - * 'nTr' and 'nParent' - * @type array - * @default [] - */ - "aoOpenRows": [], - - /** - * Dictate the positioning of DataTables' control elements - see - * {@link DataTable.model.oInit.sDom}. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type string - * @default null - */ - "sDom": null, - - /** - * Search delay (in mS) - * @type integer - * @default null - */ - "searchDelay": null, - - /** - * Which type of pagination should be used. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type string - * @default two_button - */ - "sPaginationType": "two_button", - - /** - * The state duration (for `stateSave`) in seconds. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type int - * @default 0 - */ - "iStateDuration": 0, - - /** - * Array of callback functions for state saving. Each array element is an - * object with the following parameters: - * <ul> - * <li>function:fn - function to call. Takes two parameters, oSettings - * and the JSON string to save that has been thus far created. Returns - * a JSON string to be inserted into a json object - * (i.e. '"param": [ 0, 1, 2]')</li> - * <li>string:sName - name of callback</li> - * </ul> - * @type array - * @default [] - */ - "aoStateSave": [], - - /** - * Array of callback functions for state loading. Each array element is an - * object with the following parameters: - * <ul> - * <li>function:fn - function to call. Takes two parameters, oSettings - * and the object stored. May return false to cancel state loading</li> - * <li>string:sName - name of callback</li> - * </ul> - * @type array - * @default [] - */ - "aoStateLoad": [], - - /** - * State that was saved. Useful for back reference - * @type object - * @default null - */ - "oSavedState": null, - - /** - * State that was loaded. Useful for back reference - * @type object - * @default null - */ - "oLoadedState": null, - - /** - * Source url for AJAX data for the table. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type string - * @default null - */ - "sAjaxSource": null, - - /** - * Property from a given object from which to read the table data from. This - * can be an empty string (when not server-side processing), in which case - * it is assumed an an array is given directly. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type string - */ - "sAjaxDataProp": null, - - /** - * Note if draw should be blocked while getting data - * @type boolean - * @default true - */ - "bAjaxDataGet": true, - - /** - * The last jQuery XHR object that was used for server-side data gathering. - * This can be used for working with the XHR information in one of the - * callbacks - * @type object - * @default null - */ - "jqXHR": null, - - /** - * JSON returned from the server in the last Ajax request - * @type object - * @default undefined - */ - "json": undefined, - - /** - * Data submitted as part of the last Ajax request - * @type object - * @default undefined - */ - "oAjaxData": undefined, - - /** - * Function to get the server-side data. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type function - */ - "fnServerData": null, - - /** - * Functions which are called prior to sending an Ajax request so extra - * parameters can easily be sent to the server - * @type array - * @default [] - */ - "aoServerParams": [], - - /** - * Send the XHR HTTP method - GET or POST (could be PUT or DELETE if - * required). - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type string - */ - "sServerMethod": null, - - /** - * Format numbers for display. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type function - */ - "fnFormatNumber": null, - - /** - * List of options that can be used for the user selectable length menu. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type array - * @default [] - */ - "aLengthMenu": null, - - /** - * Counter for the draws that the table does. Also used as a tracker for - * server-side processing - * @type int - * @default 0 - */ - "iDraw": 0, - - /** - * Indicate if a redraw is being done - useful for Ajax - * @type boolean - * @default false - */ - "bDrawing": false, - - /** - * Draw index (iDraw) of the last error when parsing the returned data - * @type int - * @default -1 - */ - "iDrawError": -1, - - /** - * Paging display length - * @type int - * @default 10 - */ - "_iDisplayLength": 10, - - /** - * Paging start point - aiDisplay index - * @type int - * @default 0 - */ - "_iDisplayStart": 0, - - /** - * Server-side processing - number of records in the result set - * (i.e. before filtering), Use fnRecordsTotal rather than - * this property to get the value of the number of records, regardless of - * the server-side processing setting. - * @type int - * @default 0 - * @private - */ - "_iRecordsTotal": 0, - - /** - * Server-side processing - number of records in the current display set - * (i.e. after filtering). Use fnRecordsDisplay rather than - * this property to get the value of the number of records, regardless of - * the server-side processing setting. - * @type boolean - * @default 0 - * @private - */ - "_iRecordsDisplay": 0, - - /** - * Flag to indicate if jQuery UI marking and classes should be used. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bJUI": null, - - /** - * The classes to use for the table - * @type object - * @default {} - */ - "oClasses": {}, - - /** - * Flag attached to the settings object so you can check in the draw - * callback if filtering has been done in the draw. Deprecated in favour of - * events. - * @type boolean - * @default false - * @deprecated - */ - "bFiltered": false, - - /** - * Flag attached to the settings object so you can check in the draw - * callback if sorting has been done in the draw. Deprecated in favour of - * events. - * @type boolean - * @default false - * @deprecated - */ - "bSorted": false, - - /** - * Indicate that if multiple rows are in the header and there is more than - * one unique cell per column, if the top one (true) or bottom one (false) - * should be used for sorting / title by DataTables. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bSortCellsTop": null, - - /** - * Initialisation object that is used for the table - * @type object - * @default null - */ - "oInit": null, - - /** - * Destroy callback functions - for plug-ins to attach themselves to the - * destroy so they can clean up markup and events. - * @type array - * @default [] - */ - "aoDestroyCallback": [], - - - /** - * Get the number of records in the current record set, before filtering - * @type function - */ - "fnRecordsTotal": function () - { - return _fnDataSource( this ) == 'ssp' ? - this._iRecordsTotal * 1 : - this.aiDisplayMaster.length; - }, - - /** - * Get the number of records in the current record set, after filtering - * @type function - */ - "fnRecordsDisplay": function () - { - return _fnDataSource( this ) == 'ssp' ? - this._iRecordsDisplay * 1 : - this.aiDisplay.length; - }, - - /** - * Get the display end point - aiDisplay index - * @type function - */ - "fnDisplayEnd": function () - { - var - len = this._iDisplayLength, - start = this._iDisplayStart, - calc = start + len, - records = this.aiDisplay.length, - features = this.oFeatures, - paginate = features.bPaginate; - - if ( features.bServerSide ) { - return paginate === false || len === -1 ? - start + records : - Math.min( start+len, this._iRecordsDisplay ); - } - else { - return ! paginate || calc>records || len===-1 ? - records : - calc; - } - }, - - /** - * The DataTables object for this table - * @type object - * @default null - */ - "oInstance": null, - - /** - * Unique identifier for each instance of the DataTables object. If there - * is an ID on the table node, then it takes that value, otherwise an - * incrementing internal counter is used. - * @type string - * @default null - */ - "sInstance": null, - - /** - * tabindex attribute value that is added to DataTables control elements, allowing - * keyboard navigation of the table and its controls. - */ - "iTabIndex": 0, - - /** - * DIV container for the footer scrolling table if scrolling - */ - "nScrollHead": null, - - /** - * DIV container for the footer scrolling table if scrolling - */ - "nScrollFoot": null, - - /** - * Last applied sort - * @type array - * @default [] - */ - "aLastSort": [], - - /** - * Stored plug-in instances - * @type object - * @default {} - */ - "oPlugins": {} - }; - - /** - * Extension object for DataTables that is used to provide all extension - * options. - * - * Note that the `DataTable.ext` object is available through - * `jQuery.fn.dataTable.ext` where it may be accessed and manipulated. It is - * also aliased to `jQuery.fn.dataTableExt` for historic reasons. - * @namespace - * @extends DataTable.models.ext - */ - - - /** - * DataTables extensions - * - * This namespace acts as a collection area for plug-ins that can be used to - * extend DataTables capabilities. Indeed many of the build in methods - * use this method to provide their own capabilities (sorting methods for - * example). - * - * Note that this namespace is aliased to `jQuery.fn.dataTableExt` for legacy - * reasons - * - * @namespace - */ - DataTable.ext = _ext = { - /** - * Element class names - * - * @type object - * @default {} - */ - classes: {}, - - - /** - * Error reporting. - * - * How should DataTables report an error. Can take the value 'alert' or - * 'throw' - * - * @type string - * @default alert - */ - errMode: "alert", - - - /** - * Feature plug-ins. - * - * This is an array of objects which describe the feature plug-ins that are - * available to DataTables. These feature plug-ins are then available for - * use through the `dom` initialisation option. - * - * Each feature plug-in is described by an object which must have the - * following properties: - * - * * `fnInit` - function that is used to initialise the plug-in, - * * `cFeature` - a character so the feature can be enabled by the `dom` - * instillation option. This is case sensitive. - * - * The `fnInit` function has the following input parameters: - * - * 1. `{object}` DataTables settings object: see - * {@link DataTable.models.oSettings} - * - * And the following return is expected: - * - * * {node|null} The element which contains your feature. Note that the - * return may also be void if your plug-in does not require to inject any - * DOM elements into DataTables control (`dom`) - for example this might - * be useful when developing a plug-in which allows table control via - * keyboard entry - * - * @type array - * - * @example - * $.fn.dataTable.ext.features.push( { - * "fnInit": function( oSettings ) { - * return new TableTools( { "oDTSettings": oSettings } ); - * }, - * "cFeature": "T" - * } ); - */ - feature: [], - - - /** - * Row searching. - * - * This method of searching is complimentary to the default type based - * searching, and a lot more comprehensive as it allows you complete control - * over the searching logic. Each element in this array is a function - * (parameters described below) that is called for every row in the table, - * and your logic decides if it should be included in the searching data set - * or not. - * - * Searching functions have the following input parameters: - * - * 1. `{object}` DataTables settings object: see - * {@link DataTable.models.oSettings} - * 2. `{array|object}` Data for the row to be processed (same as the - * original format that was passed in as the data source, or an array - * from a DOM data source - * 3. `{int}` Row index ({@link DataTable.models.oSettings.aoData}), which - * can be useful to retrieve the `TR` element if you need DOM interaction. - * - * And the following return is expected: - * - * * {boolean} Include the row in the searched result set (true) or not - * (false) - * - * Note that as with the main search ability in DataTables, technically this - * is "filtering", since it is subtractive. However, for consistency in - * naming we call it searching here. - * - * @type array - * @default [] - * - * @example - * // The following example shows custom search being applied to the - * // fourth column (i.e. the data[3] index) based on two input values - * // from the end-user, matching the data in a certain range. - * $.fn.dataTable.ext.search.push( - * function( settings, data, dataIndex ) { - * var min = document.getElementById('min').value * 1; - * var max = document.getElementById('max').value * 1; - * var version = data[3] == "-" ? 0 : data[3]*1; - * - * if ( min == "" && max == "" ) { - * return true; - * } - * else if ( min == "" && version < max ) { - * return true; - * } - * else if ( min < version && "" == max ) { - * return true; - * } - * else if ( min < version && version < max ) { - * return true; - * } - * return false; - * } - * ); - */ - search: [], - - - /** - * Internal functions, exposed for used in plug-ins. - * - * Please note that you should not need to use the internal methods for - * anything other than a plug-in (and even then, try to avoid if possible). - * The internal function may change between releases. - * - * @type object - * @default {} - */ - internal: {}, - - - /** - * Legacy configuration options. Enable and disable legacy options that - * are available in DataTables. - * - * @type object - */ - legacy: { - /** - * Enable / disable DataTables 1.9 compatible server-side processing - * requests - * - * @type boolean - * @default null - */ - ajax: null - }, - - - /** - * Pagination plug-in methods. - * - * Each entry in this object is a function and defines which buttons should - * be shown by the pagination rendering method that is used for the table: - * {@link DataTable.ext.renderer.pageButton}. The renderer addresses how the - * buttons are displayed in the document, while the functions here tell it - * what buttons to display. This is done by returning an array of button - * descriptions (what each button will do). - * - * Pagination types (the four built in options and any additional plug-in - * options defined here) can be used through the `paginationType` - * initialisation parameter. - * - * The functions defined take two parameters: - * - * 1. `{int} page` The current page index - * 2. `{int} pages` The number of pages in the table - * - * Each function is expected to return an array where each element of the - * array can be one of: - * - * * `first` - Jump to first page when activated - * * `last` - Jump to last page when activated - * * `previous` - Show previous page when activated - * * `next` - Show next page when activated - * * `{int}` - Show page of the index given - * * `{array}` - A nested array containing the above elements to add a - * containing 'DIV' element (might be useful for styling). - * - * Note that DataTables v1.9- used this object slightly differently whereby - * an object with two functions would be defined for each plug-in. That - * ability is still supported by DataTables 1.10+ to provide backwards - * compatibility, but this option of use is now decremented and no longer - * documented in DataTables 1.10+. - * - * @type object - * @default {} - * - * @example - * // Show previous, next and current page buttons only - * $.fn.dataTableExt.oPagination.current = function ( page, pages ) { - * return [ 'previous', page, 'next' ]; - * }; - */ - pager: {}, - - - renderer: { - pageButton: {}, - header: {} - }, - - - /** - * Ordering plug-ins - custom data source - * - * The extension options for ordering of data available here is complimentary - * to the default type based ordering that DataTables typically uses. It - * allows much greater control over the the data that is being used to - * order a column, but is necessarily therefore more complex. - * - * This type of ordering is useful if you want to do ordering based on data - * live from the DOM (for example the contents of an 'input' element) rather - * than just the static string that DataTables knows of. - * - * The way these plug-ins work is that you create an array of the values you - * wish to be ordering for the column in question and then return that - * array. The data in the array much be in the index order of the rows in - * the table (not the currently ordering order!). Which order data gathering - * function is run here depends on the `dt-init columns.orderDataType` - * parameter that is used for the column (if any). - * - * The functions defined take two parameters: - * - * 1. `{object}` DataTables settings object: see - * {@link DataTable.models.oSettings} - * 2. `{int}` Target column index - * - * Each function is expected to return an array: - * - * * `{array}` Data for the column to be ordering upon - * - * @type array - * - * @example - * // Ordering using `input` node values - * $.fn.dataTable.ext.order['dom-text'] = function ( settings, col ) - * { - * return this.api().column( col, {order:'index'} ).nodes().map( function ( td, i ) { - * return $('input', td).val(); - * } ); - * } - */ - order: {}, - - - /** - * Type based plug-ins. - * - * Each column in DataTables has a type assigned to it, either by automatic - * detection or by direct assignment using the `type` option for the column. - * The type of a column will effect how it is ordering and search (plug-ins - * can also make use of the column type if required). - * - * @namespace - */ - type: { - /** - * Type detection functions. - * - * The functions defined in this object are used to automatically detect - * a column's type, making initialisation of DataTables super easy, even - * when complex data is in the table. - * - * The functions defined take two parameters: - * - * 1. `{*}` Data from the column cell to be analysed - * 2. `{settings}` DataTables settings object. This can be used to - * perform context specific type detection - for example detection - * based on language settings such as using a comma for a decimal - * place. Generally speaking the options from the settings will not - * be required - * - * Each function is expected to return: - * - * * `{string|null}` Data type detected, or null if unknown (and thus - * pass it on to the other type detection functions. - * - * @type array - * - * @example - * // Currency type detection plug-in: - * $.fn.dataTable.ext.type.detect.push( - * function ( data, settings ) { - * // Check the numeric part - * if ( ! $.isNumeric( data.substring(1) ) ) { - * return null; - * } - * - * // Check prefixed by currency - * if ( data.charAt(0) == '$' || data.charAt(0) == '&pound;' ) { - * return 'currency'; - * } - * return null; - * } - * ); - */ - detect: [], - - - /** - * Type based search formatting. - * - * The type based searching functions can be used to pre-format the - * data to be search on. For example, it can be used to strip HTML - * tags or to de-format telephone numbers for numeric only searching. - * - * Note that is a search is not defined for a column of a given type, - * no search formatting will be performed. - * - * Pre-processing of searching data plug-ins - When you assign the sType - * for a column (or have it automatically detected for you by DataTables - * or a type detection plug-in), you will typically be using this for - * custom sorting, but it can also be used to provide custom searching - * by allowing you to pre-processing the data and returning the data in - * the format that should be searched upon. This is done by adding - * functions this object with a parameter name which matches the sType - * for that target column. This is the corollary of <i>afnSortData</i> - * for searching data. - * - * The functions defined take a single parameter: - * - * 1. `{*}` Data from the column cell to be prepared for searching - * - * Each function is expected to return: - * - * * `{string|null}` Formatted string that will be used for the searching. - * - * @type object - * @default {} - * - * @example - * $.fn.dataTable.ext.type.search['title-numeric'] = function ( d ) { - * return d.replace(/\n/g," ").replace( /<.*?>/g, "" ); - * } - */ - search: {}, - - - /** - * Type based ordering. - * - * The column type tells DataTables what ordering to apply to the table - * when a column is sorted upon. The order for each type that is defined, - * is defined by the functions available in this object. - * - * Each ordering option can be described by three properties added to - * this object: - * - * * `{type}-pre` - Pre-formatting function - * * `{type}-asc` - Ascending order function - * * `{type}-desc` - Descending order function - * - * All three can be used together, only `{type}-pre` or only - * `{type}-asc` and `{type}-desc` together. It is generally recommended - * that only `{type}-pre` is used, as this provides the optimal - * implementation in terms of speed, although the others are provided - * for compatibility with existing Javascript sort functions. - * - * `{type}-pre`: Functions defined take a single parameter: - * - * 1. `{*}` Data from the column cell to be prepared for ordering - * - * And return: - * - * * `{*}` Data to be sorted upon - * - * `{type}-asc` and `{type}-desc`: Functions are typical Javascript sort - * functions, taking two parameters: - * - * 1. `{*}` Data to compare to the second parameter - * 2. `{*}` Data to compare to the first parameter - * - * And returning: - * - * * `{*}` Ordering match: <0 if first parameter should be sorted lower - * than the second parameter, ===0 if the two parameters are equal and - * >0 if the first parameter should be sorted height than the second - * parameter. - * - * @type object - * @default {} - * - * @example - * // Numeric ordering of formatted numbers with a pre-formatter - * $.extend( $.fn.dataTable.ext.type.order, { - * "string-pre": function(x) { - * a = (a === "-" || a === "") ? 0 : a.replace( /[^\d\-\.]/g, "" ); - * return parseFloat( a ); - * } - * } ); - * - * @example - * // Case-sensitive string ordering, with no pre-formatting method - * $.extend( $.fn.dataTable.ext.order, { - * "string-case-asc": function(x,y) { - * return ((x < y) ? -1 : ((x > y) ? 1 : 0)); - * }, - * "string-case-desc": function(x,y) { - * return ((x < y) ? 1 : ((x > y) ? -1 : 0)); - * } - * } ); - */ - order: {} - }, - - /** - * Unique DataTables instance counter - * - * @type int - * @private - */ - _unique: 0, - - - // - // Depreciated - // The following properties are retained for backwards compatiblity only. - // The should not be used in new projects and will be removed in a future - // version - // - - /** - * Version check function. - * @type function - * @depreciated Since 1.10 - */ - fnVersionCheck: DataTable.fnVersionCheck, - - - /** - * Index for what 'this' index API functions should use - * @type int - * @deprecated Since v1.10 - */ - iApiIndex: 0, - - - /** - * jQuery UI class container - * @type object - * @deprecated Since v1.10 - */ - oJUIClasses: {}, - - - /** - * Software version - * @type string - * @deprecated Since v1.10 - */ - sVersion: DataTable.version - }; - - - // - // Backwards compatibility. Alias to pre 1.10 Hungarian notation counter parts - // - $.extend( _ext, { - afnFiltering: _ext.search, - aTypes: _ext.type.detect, - ofnSearch: _ext.type.search, - oSort: _ext.type.order, - afnSortData: _ext.order, - aoFeatures: _ext.feature, - oApi: _ext.internal, - oStdClasses: _ext.classes, - oPagination: _ext.pager - } ); - - - $.extend( DataTable.ext.classes, { - "sTable": "dataTable", - "sNoFooter": "no-footer", - - /* Paging buttons */ - "sPageButton": "paginate_button", - "sPageButtonActive": "current", - "sPageButtonDisabled": "disabled", - - /* Striping classes */ - "sStripeOdd": "odd", - "sStripeEven": "even", - - /* Empty row */ - "sRowEmpty": "dataTables_empty", - - /* Features */ - "sWrapper": "dataTables_wrapper", - "sFilter": "dataTables_filter", - "sInfo": "dataTables_info", - "sPaging": "dataTables_paginate paging_", /* Note that the type is postfixed */ - "sLength": "dataTables_length", - "sProcessing": "dataTables_processing", - - /* Sorting */ - "sSortAsc": "sorting_asc", - "sSortDesc": "sorting_desc", - "sSortable": "sorting", /* Sortable in both directions */ - "sSortableAsc": "sorting_asc_disabled", - "sSortableDesc": "sorting_desc_disabled", - "sSortableNone": "sorting_disabled", - "sSortColumn": "sorting_", /* Note that an int is postfixed for the sorting order */ - - /* Filtering */ - "sFilterInput": "", - - /* Page length */ - "sLengthSelect": "", - - /* Scrolling */ - "sScrollWrapper": "dataTables_scroll", - "sScrollHead": "dataTables_scrollHead", - "sScrollHeadInner": "dataTables_scrollHeadInner", - "sScrollBody": "dataTables_scrollBody", - "sScrollFoot": "dataTables_scrollFoot", - "sScrollFootInner": "dataTables_scrollFootInner", - - /* Misc */ - "sHeaderTH": "", - "sFooterTH": "", - - // Deprecated - "sSortJUIAsc": "", - "sSortJUIDesc": "", - "sSortJUI": "", - "sSortJUIAscAllowed": "", - "sSortJUIDescAllowed": "", - "sSortJUIWrapper": "", - "sSortIcon": "", - "sJUIHeader": "", - "sJUIFooter": "" - } ); - - - (function() { - - // Reused strings for better compression. Closure compiler appears to have a - // weird edge case where it is trying to expand strings rather than use the - // variable version. This results in about 200 bytes being added, for very - // little preference benefit since it this run on script load only. - var _empty = ''; - _empty = ''; - - var _stateDefault = _empty + 'ui-state-default'; - var _sortIcon = _empty + 'css_right ui-icon ui-icon-'; - var _headerFooter = _empty + 'fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix'; - - $.extend( DataTable.ext.oJUIClasses, DataTable.ext.classes, { - /* Full numbers paging buttons */ - "sPageButton": "fg-button ui-button "+_stateDefault, - "sPageButtonActive": "ui-state-disabled", - "sPageButtonDisabled": "ui-state-disabled", - - /* Features */ - "sPaging": "dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi "+ - "ui-buttonset-multi paging_", /* Note that the type is postfixed */ - - /* Sorting */ - "sSortAsc": _stateDefault+" sorting_asc", - "sSortDesc": _stateDefault+" sorting_desc", - "sSortable": _stateDefault+" sorting", - "sSortableAsc": _stateDefault+" sorting_asc_disabled", - "sSortableDesc": _stateDefault+" sorting_desc_disabled", - "sSortableNone": _stateDefault+" sorting_disabled", - "sSortJUIAsc": _sortIcon+"triangle-1-n", - "sSortJUIDesc": _sortIcon+"triangle-1-s", - "sSortJUI": _sortIcon+"carat-2-n-s", - "sSortJUIAscAllowed": _sortIcon+"carat-1-n", - "sSortJUIDescAllowed": _sortIcon+"carat-1-s", - "sSortJUIWrapper": "DataTables_sort_wrapper", - "sSortIcon": "DataTables_sort_icon", - - /* Scrolling */ - "sScrollHead": "dataTables_scrollHead "+_stateDefault, - "sScrollFoot": "dataTables_scrollFoot "+_stateDefault, - - /* Misc */ - "sHeaderTH": _stateDefault, - "sFooterTH": _stateDefault, - "sJUIHeader": _headerFooter+" ui-corner-tl ui-corner-tr", - "sJUIFooter": _headerFooter+" ui-corner-bl ui-corner-br" - } ); - - }()); - - - - var extPagination = DataTable.ext.pager; - - function _numbers ( page, pages ) { - var - numbers = [], - buttons = extPagination.numbers_length, - half = Math.floor( buttons / 2 ), - i = 1; - - if ( pages <= buttons ) { - numbers = _range( 0, pages ); - } - else if ( page <= half ) { - numbers = _range( 0, buttons-2 ); - numbers.push( 'ellipsis' ); - numbers.push( pages-1 ); - } - else if ( page >= pages - 1 - half ) { - numbers = _range( pages-(buttons-2), pages ); - numbers.splice( 0, 0, 'ellipsis' ); // no unshift in ie6 - numbers.splice( 0, 0, 0 ); - } - else { - numbers = _range( page-1, page+2 ); - numbers.push( 'ellipsis' ); - numbers.push( pages-1 ); - numbers.splice( 0, 0, 'ellipsis' ); - numbers.splice( 0, 0, 0 ); - } - - numbers.DT_el = 'span'; - return numbers; - } - - - $.extend( extPagination, { - simple: function ( page, pages ) { - return [ 'previous', 'next' ]; - }, - - full: function ( page, pages ) { - return [ 'first', 'previous', 'next', 'last' ]; - }, - - simple_numbers: function ( page, pages ) { - return [ 'previous', _numbers(page, pages), 'next' ]; - }, - - full_numbers: function ( page, pages ) { - return [ 'first', 'previous', _numbers(page, pages), 'next', 'last' ]; - }, - - // For testing and plug-ins to use - _numbers: _numbers, - numbers_length: 7 - } ); - - - $.extend( true, DataTable.ext.renderer, { - pageButton: { - _: function ( settings, host, idx, buttons, page, pages ) { - var classes = settings.oClasses; - var lang = settings.oLanguage.oPaginate; - var btnDisplay, btnClass, counter=0; - - var attach = function( container, buttons ) { - var i, ien, node, button; - var clickHandler = function ( e ) { - _fnPageChange( settings, e.data.action, true ); - }; - - for ( i=0, ien=buttons.length ; i<ien ; i++ ) { - button = buttons[i]; - - if ( $.isArray( button ) ) { - var inner = $( '<'+(button.DT_el || 'div')+'/>' ) - .appendTo( container ); - attach( inner, button ); - } - else { - btnDisplay = ''; - btnClass = ''; - - switch ( button ) { - case 'ellipsis': - container.append('<span>&hellip;</span>'); - break; - - case 'first': - btnDisplay = lang.sFirst; - btnClass = button + (page > 0 ? - '' : ' '+classes.sPageButtonDisabled); - break; - - case 'previous': - btnDisplay = lang.sPrevious; - btnClass = button + (page > 0 ? - '' : ' '+classes.sPageButtonDisabled); - break; - - case 'next': - btnDisplay = lang.sNext; - btnClass = button + (page < pages-1 ? - '' : ' '+classes.sPageButtonDisabled); - break; - - case 'last': - btnDisplay = lang.sLast; - btnClass = button + (page < pages-1 ? - '' : ' '+classes.sPageButtonDisabled); - break; - - default: - btnDisplay = button + 1; - btnClass = page === button ? - classes.sPageButtonActive : ''; - break; - } - - if ( btnDisplay ) { - node = $('<a>', { - 'class': classes.sPageButton+' '+btnClass, - 'aria-controls': settings.sTableId, - 'data-dt-idx': counter, - 'tabindex': settings.iTabIndex, - 'id': idx === 0 && typeof button === 'string' ? - settings.sTableId +'_'+ button : - null - } ) - .html( btnDisplay ) - .appendTo( container ); - - _fnBindAction( - node, {action: button}, clickHandler - ); - - counter++; - } - } - } - }; - - // IE9 throws an 'unknown error' if document.activeElement is used - // inside an iframe or frame. Try / catch the error. Not good for - // accessibility, but neither are frames. - try { - // Because this approach is destroying and recreating the paging - // elements, focus is lost on the select button which is bad for - // accessibility. So we want to restore focus once the draw has - // completed - var activeEl = $(document.activeElement).data('dt-idx'); - - attach( $(host).empty(), buttons ); - - if ( activeEl !== null ) { - $(host).find( '[data-dt-idx='+activeEl+']' ).focus(); - } - } - catch (e) {} - } - } - } ); - - - - // Built in type detection. See model.ext.aTypes for information about - // what is required from this methods. - $.extend( DataTable.ext.type.detect, [ - // Plain numbers - first since V8 detects some plain numbers as dates - // e.g. Date.parse('55') (but not all, e.g. Date.parse('22')...). - function ( d, settings ) - { - var decimal = settings.oLanguage.sDecimal; - return _isNumber( d, decimal ) ? 'num'+decimal : null; - }, - - // Dates (only those recognised by the browser's Date.parse) - function ( d, settings ) - { - // V8 will remove any unknown characters at the start and end of the - // expression, leading to false matches such as `$245.12` or `10%` being - // a valid date. See forum thread 18941 for detail. - if ( d && !(d instanceof Date) && ( ! _re_date_start.test(d) || ! _re_date_end.test(d) ) ) { - return null; - } - var parsed = Date.parse(d); - return (parsed !== null && !isNaN(parsed)) || _empty(d) ? 'date' : null; - }, - - // Formatted numbers - function ( d, settings ) - { - var decimal = settings.oLanguage.sDecimal; - return _isNumber( d, decimal, true ) ? 'num-fmt'+decimal : null; - }, - - // HTML numeric - function ( d, settings ) - { - var decimal = settings.oLanguage.sDecimal; - return _htmlNumeric( d, decimal ) ? 'html-num'+decimal : null; - }, - - // HTML numeric, formatted - function ( d, settings ) - { - var decimal = settings.oLanguage.sDecimal; - return _htmlNumeric( d, decimal, true ) ? 'html-num-fmt'+decimal : null; - }, - - // HTML (this is strict checking - there must be html) - function ( d, settings ) - { - return _empty( d ) || (typeof d === 'string' && d.indexOf('<') !== -1) ? - 'html' : null; - } - ] ); - - - - // Filter formatting functions. See model.ext.ofnSearch for information about - // what is required from these methods. - // - // Note that additional search methods are added for the html numbers and - // html formatted numbers by `_addNumericSort()` when we know what the decimal - // place is - - - $.extend( DataTable.ext.type.search, { - html: function ( data ) { - return _empty(data) ? - data : - typeof data === 'string' ? - data - .replace( _re_new_lines, " " ) - .replace( _re_html, "" ) : - ''; - }, - - string: function ( data ) { - return _empty(data) ? - data : - typeof data === 'string' ? - data.replace( _re_new_lines, " " ) : - data; - } - } ); - - - - var __numericReplace = function ( d, decimalPlace, re1, re2 ) { - if ( d !== 0 && (!d || d === '-') ) { - return -Infinity; - } - - // If a decimal place other than `.` is used, it needs to be given to the - // function so we can detect it and replace with a `.` which is the only - // decimal place Javascript recognises - it is not locale aware. - if ( decimalPlace ) { - d = _numToDecimal( d, decimalPlace ); - } - - if ( d.replace ) { - if ( re1 ) { - d = d.replace( re1, '' ); - } - - if ( re2 ) { - d = d.replace( re2, '' ); - } - } - - return d * 1; - }; - - - // Add the numeric 'deformatting' functions for sorting and search. This is done - // in a function to provide an easy ability for the language options to add - // additional methods if a non-period decimal place is used. - function _addNumericSort ( decimalPlace ) { - $.each( - { - // Plain numbers - "num": function ( d ) { - return __numericReplace( d, decimalPlace ); - }, - - // Formatted numbers - "num-fmt": function ( d ) { - return __numericReplace( d, decimalPlace, _re_formatted_numeric ); - }, - - // HTML numeric - "html-num": function ( d ) { - return __numericReplace( d, decimalPlace, _re_html ); - }, - - // HTML numeric, formatted - "html-num-fmt": function ( d ) { - return __numericReplace( d, decimalPlace, _re_html, _re_formatted_numeric ); - } - }, - function ( key, fn ) { - // Add the ordering method - _ext.type.order[ key+decimalPlace+'-pre' ] = fn; - - // For HTML types add a search formatter that will strip the HTML - if ( key.match(/^html\-/) ) { - _ext.type.search[ key+decimalPlace ] = _ext.type.search.html; - } - } - ); - } - - - // Default sort methods - $.extend( _ext.type.order, { - // Dates - "date-pre": function ( d ) { - return Date.parse( d ) || 0; - }, - - // html - "html-pre": function ( a ) { - return _empty(a) ? - '' : - a.replace ? - a.replace( /<.*?>/g, "" ).toLowerCase() : - a+''; - }, - - // string - "string-pre": function ( a ) { - // This is a little complex, but faster than always calling toString, - // http://jsperf.com/tostring-v-check - return _empty(a) ? - '' : - typeof a === 'string' ? - a.toLowerCase() : - ! a.toString ? - '' : - a.toString(); - }, - - // string-asc and -desc are retained only for compatibility with the old - // sort methods - "string-asc": function ( x, y ) { - return ((x < y) ? -1 : ((x > y) ? 1 : 0)); - }, - - "string-desc": function ( x, y ) { - return ((x < y) ? 1 : ((x > y) ? -1 : 0)); - } - } ); - - - // Numeric sorting types - order doesn't matter here - _addNumericSort( '' ); - - - $.extend( true, DataTable.ext.renderer, { - header: { - _: function ( settings, cell, column, classes ) { - // No additional mark-up required - // Attach a sort listener to update on sort - note that using the - // `DT` namespace will allow the event to be removed automatically - // on destroy, while the `dt` namespaced event is the one we are - // listening for - $(settings.nTable).on( 'order.dt.DT', function ( e, ctx, sorting, columns ) { - if ( settings !== ctx ) { // need to check this this is the host - return; // table, not a nested one - } - - var colIdx = column.idx; - - cell - .removeClass( - column.sSortingClass +' '+ - classes.sSortAsc +' '+ - classes.sSortDesc - ) - .addClass( columns[ colIdx ] == 'asc' ? - classes.sSortAsc : columns[ colIdx ] == 'desc' ? - classes.sSortDesc : - column.sSortingClass - ); - } ); - }, - - jqueryui: function ( settings, cell, column, classes ) { - $('<div/>') - .addClass( classes.sSortJUIWrapper ) - .append( cell.contents() ) - .append( $('<span/>') - .addClass( classes.sSortIcon+' '+column.sSortingClassJUI ) - ) - .appendTo( cell ); - - // Attach a sort listener to update on sort - $(settings.nTable).on( 'order.dt.DT', function ( e, ctx, sorting, columns ) { - if ( settings !== ctx ) { - return; - } - - var colIdx = column.idx; - - cell - .removeClass( classes.sSortAsc +" "+classes.sSortDesc ) - .addClass( columns[ colIdx ] == 'asc' ? - classes.sSortAsc : columns[ colIdx ] == 'desc' ? - classes.sSortDesc : - column.sSortingClass - ); - - cell - .find( 'span.'+classes.sSortIcon ) - .removeClass( - classes.sSortJUIAsc +" "+ - classes.sSortJUIDesc +" "+ - classes.sSortJUI +" "+ - classes.sSortJUIAscAllowed +" "+ - classes.sSortJUIDescAllowed - ) - .addClass( columns[ colIdx ] == 'asc' ? - classes.sSortJUIAsc : columns[ colIdx ] == 'desc' ? - classes.sSortJUIDesc : - column.sSortingClassJUI - ); - } ); - } - } - } ); - - /* - * Public helper functions. These aren't used internally by DataTables, or - * called by any of the options passed into DataTables, but they can be used - * externally by developers working with DataTables. They are helper functions - * to make working with DataTables a little bit easier. - */ - - /** - * Helpers for `columns.render`. - * - * The options defined here can be used with the `columns.render` initialisation - * option to provide a display renderer. The following functions are defined: - * - * * `number` - Will format numeric data (defined by `columns.data`) for - * display, retaining the original unformatted data for sorting and filtering. - * It takes 4 parameters: - * * `string` - Thousands grouping separator - * * `string` - Decimal point indicator - * * `integer` - Number of decimal points to show - * * `string` (optional) - Prefix. - * - * @example - * // Column definition using the number renderer - * { - * data: "salary", - * render: $.fn.dataTable.render.number( '\'', '.', 0, '$' ) - * } - * - * @namespace - */ - DataTable.render = { - number: function ( thousands, decimal, precision, prefix ) { - return { - display: function ( d ) { - var negative = d < 0 ? '-' : ''; - d = Math.abs( parseFloat( d ) ); - - var intPart = parseInt( d, 10 ); - var floatPart = precision ? - decimal+(d - intPart).toFixed( precision ).substring( 2 ): - ''; - - return negative + (prefix||'') + - intPart.toString().replace( - /\B(?=(\d{3})+(?!\d))/g, thousands - ) + - floatPart; - } - }; - } - }; - - - /* - * This is really a good bit rubbish this method of exposing the internal methods - * publicly... - To be fixed in 2.0 using methods on the prototype - */ - - - /** - * Create a wrapper function for exporting an internal functions to an external API. - * @param {string} fn API function name - * @returns {function} wrapped function - * @memberof DataTable#internal - */ - function _fnExternApiFunc (fn) - { - return function() { - var args = [_fnSettingsFromNode( this[DataTable.ext.iApiIndex] )].concat( - Array.prototype.slice.call(arguments) - ); - return DataTable.ext.internal[fn].apply( this, args ); - }; - } - - - /** - * Reference to internal functions for use by plug-in developers. Note that - * these methods are references to internal functions and are considered to be - * private. If you use these methods, be aware that they are liable to change - * between versions. - * @namespace - */ - $.extend( DataTable.ext.internal, { - _fnExternApiFunc: _fnExternApiFunc, - _fnBuildAjax: _fnBuildAjax, - _fnAjaxUpdate: _fnAjaxUpdate, - _fnAjaxParameters: _fnAjaxParameters, - _fnAjaxUpdateDraw: _fnAjaxUpdateDraw, - _fnAjaxDataSrc: _fnAjaxDataSrc, - _fnAddColumn: _fnAddColumn, - _fnColumnOptions: _fnColumnOptions, - _fnAdjustColumnSizing: _fnAdjustColumnSizing, - _fnVisibleToColumnIndex: _fnVisibleToColumnIndex, - _fnColumnIndexToVisible: _fnColumnIndexToVisible, - _fnVisbleColumns: _fnVisbleColumns, - _fnGetColumns: _fnGetColumns, - _fnColumnTypes: _fnColumnTypes, - _fnApplyColumnDefs: _fnApplyColumnDefs, - _fnHungarianMap: _fnHungarianMap, - _fnCamelToHungarian: _fnCamelToHungarian, - _fnLanguageCompat: _fnLanguageCompat, - _fnBrowserDetect: _fnBrowserDetect, - _fnAddData: _fnAddData, - _fnAddTr: _fnAddTr, - _fnNodeToDataIndex: _fnNodeToDataIndex, - _fnNodeToColumnIndex: _fnNodeToColumnIndex, - _fnGetCellData: _fnGetCellData, - _fnSetCellData: _fnSetCellData, - _fnSplitObjNotation: _fnSplitObjNotation, - _fnGetObjectDataFn: _fnGetObjectDataFn, - _fnSetObjectDataFn: _fnSetObjectDataFn, - _fnGetDataMaster: _fnGetDataMaster, - _fnClearTable: _fnClearTable, - _fnDeleteIndex: _fnDeleteIndex, - _fnInvalidate: _fnInvalidate, - _fnGetRowElements: _fnGetRowElements, - _fnCreateTr: _fnCreateTr, - _fnBuildHead: _fnBuildHead, - _fnDrawHead: _fnDrawHead, - _fnDraw: _fnDraw, - _fnReDraw: _fnReDraw, - _fnAddOptionsHtml: _fnAddOptionsHtml, - _fnDetectHeader: _fnDetectHeader, - _fnGetUniqueThs: _fnGetUniqueThs, - _fnFeatureHtmlFilter: _fnFeatureHtmlFilter, - _fnFilterComplete: _fnFilterComplete, - _fnFilterCustom: _fnFilterCustom, - _fnFilterColumn: _fnFilterColumn, - _fnFilter: _fnFilter, - _fnFilterCreateSearch: _fnFilterCreateSearch, - _fnEscapeRegex: _fnEscapeRegex, - _fnFilterData: _fnFilterData, - _fnFeatureHtmlInfo: _fnFeatureHtmlInfo, - _fnUpdateInfo: _fnUpdateInfo, - _fnInfoMacros: _fnInfoMacros, - _fnInitialise: _fnInitialise, - _fnInitComplete: _fnInitComplete, - _fnLengthChange: _fnLengthChange, - _fnFeatureHtmlLength: _fnFeatureHtmlLength, - _fnFeatureHtmlPaginate: _fnFeatureHtmlPaginate, - _fnPageChange: _fnPageChange, - _fnFeatureHtmlProcessing: _fnFeatureHtmlProcessing, - _fnProcessingDisplay: _fnProcessingDisplay, - _fnFeatureHtmlTable: _fnFeatureHtmlTable, - _fnScrollDraw: _fnScrollDraw, - _fnApplyToChildren: _fnApplyToChildren, - _fnCalculateColumnWidths: _fnCalculateColumnWidths, - _fnThrottle: _fnThrottle, - _fnConvertToWidth: _fnConvertToWidth, - _fnScrollingWidthAdjust: _fnScrollingWidthAdjust, - _fnGetWidestNode: _fnGetWidestNode, - _fnGetMaxLenString: _fnGetMaxLenString, - _fnStringToCss: _fnStringToCss, - _fnScrollBarWidth: _fnScrollBarWidth, - _fnSortFlatten: _fnSortFlatten, - _fnSort: _fnSort, - _fnSortAria: _fnSortAria, - _fnSortListener: _fnSortListener, - _fnSortAttachListener: _fnSortAttachListener, - _fnSortingClasses: _fnSortingClasses, - _fnSortData: _fnSortData, - _fnSaveState: _fnSaveState, - _fnLoadState: _fnLoadState, - _fnSettingsFromNode: _fnSettingsFromNode, - _fnLog: _fnLog, - _fnMap: _fnMap, - _fnBindAction: _fnBindAction, - _fnCallbackReg: _fnCallbackReg, - _fnCallbackFire: _fnCallbackFire, - _fnLengthOverflow: _fnLengthOverflow, - _fnRenderer: _fnRenderer, - _fnDataSource: _fnDataSource, - _fnRowAttributes: _fnRowAttributes, - _fnCalculateEnd: function () {} // Used by a lot of plug-ins, but redundant - // in 1.10, so this dead-end function is - // added to prevent errors - } ); - - - // jQuery access - $.fn.dataTable = DataTable; - - // Legacy aliases - $.fn.dataTableSettings = DataTable.settings; - $.fn.dataTableExt = DataTable.ext; - - // With a capital `D` we return a DataTables API instance rather than a - // jQuery object - $.fn.DataTable = function ( opts ) { - return $(this).dataTable( opts ).api(); - }; - - // All properties that are available to $.fn.dataTable should also be - // available on $.fn.DataTable - $.each( DataTable, function ( prop, val ) { - $.fn.DataTable[ prop ] = val; - } ); - - - // Information about events fired by DataTables - for documentation. - /** - * Draw event, fired whenever the table is redrawn on the page, at the same - * point as fnDrawCallback. This may be useful for binding events or - * performing calculations when the table is altered at all. - * @name DataTable#draw.dt - * @event - * @param {event} e jQuery event object - * @param {object} o DataTables settings object {@link DataTable.models.oSettings} - */ - - /** - * Search event, fired when the searching applied to the table (using the - * built-in global search, or column filters) is altered. - * @name DataTable#search.dt - * @event - * @param {event} e jQuery event object - * @param {object} o DataTables settings object {@link DataTable.models.oSettings} - */ - - /** - * Page change event, fired when the paging of the table is altered. - * @name DataTable#page.dt - * @event - * @param {event} e jQuery event object - * @param {object} o DataTables settings object {@link DataTable.models.oSettings} - */ - - /** - * Order event, fired when the ordering applied to the table is altered. - * @name DataTable#order.dt - * @event - * @param {event} e jQuery event object - * @param {object} o DataTables settings object {@link DataTable.models.oSettings} - */ - - /** - * DataTables initialisation complete event, fired when the table is fully - * drawn, including Ajax data loaded, if Ajax data is required. - * @name DataTable#init.dt - * @event - * @param {event} e jQuery event object - * @param {object} oSettings DataTables settings object - * @param {object} json The JSON object request from the server - only - * present if client-side Ajax sourced data is used</li></ol> - */ - - /** - * State save event, fired when the table has changed state a new state save - * is required. This event allows modification of the state saving object - * prior to actually doing the save, including addition or other state - * properties (for plug-ins) or modification of a DataTables core property. - * @name DataTable#stateSaveParams.dt - * @event - * @param {event} e jQuery event object - * @param {object} oSettings DataTables settings object - * @param {object} json The state information to be saved - */ - - /** - * State load event, fired when the table is loading state from the stored - * data, but prior to the settings object being modified by the saved state - * - allowing modification of the saved state is required or loading of - * state for a plug-in. - * @name DataTable#stateLoadParams.dt - * @event - * @param {event} e jQuery event object - * @param {object} oSettings DataTables settings object - * @param {object} json The saved state information - */ - - /** - * State loaded event, fired when state has been loaded from stored data and - * the settings object has been modified by the loaded data. - * @name DataTable#stateLoaded.dt - * @event - * @param {event} e jQuery event object - * @param {object} oSettings DataTables settings object - * @param {object} json The saved state information - */ - - /** - * Processing event, fired when DataTables is doing some kind of processing - * (be it, order, searcg or anything else). It can be used to indicate to - * the end user that there is something happening, or that something has - * finished. - * @name DataTable#processing.dt - * @event - * @param {event} e jQuery event object - * @param {object} oSettings DataTables settings object - * @param {boolean} bShow Flag for if DataTables is doing processing or not - */ - - /** - * Ajax (XHR) event, fired whenever an Ajax request is completed from a - * request to made to the server for new data. This event is called before - * DataTables processed the returned data, so it can also be used to pre- - * process the data returned from the server, if needed. - * - * Note that this trigger is called in `fnServerData`, if you override - * `fnServerData` and which to use this event, you need to trigger it in you - * success function. - * @name DataTable#xhr.dt - * @event - * @param {event} e jQuery event object - * @param {object} o DataTables settings object {@link DataTable.models.oSettings} - * @param {object} json JSON returned from the server - * - * @example - * // Use a custom property returned from the server in another DOM element - * $('#table').dataTable().on('xhr.dt', function (e, settings, json) { - * $('#status').html( json.status ); - * } ); - * - * @example - * // Pre-process the data returned from the server - * $('#table').dataTable().on('xhr.dt', function (e, settings, json) { - * for ( var i=0, ien=json.aaData.length ; i<ien ; i++ ) { - * json.aaData[i].sum = json.aaData[i].one + json.aaData[i].two; - * } - * // Note no return - manipulate the data directly in the JSON object. - * } ); - */ - - /** - * Destroy event, fired when the DataTable is destroyed by calling fnDestroy - * or passing the bDestroy:true parameter in the initialisation object. This - * can be used to remove bound events, added DOM nodes, etc. - * @name DataTable#destroy.dt - * @event - * @param {event} e jQuery event object - * @param {object} o DataTables settings object {@link DataTable.models.oSettings} - */ - - /** - * Page length change event, fired when number of records to show on each - * page (the length) is changed. - * @name DataTable#length.dt - * @event - * @param {event} e jQuery event object - * @param {object} o DataTables settings object {@link DataTable.models.oSettings} - * @param {integer} len New length - */ - - /** - * Column sizing has changed. - * @name DataTable#column-sizing.dt - * @event - * @param {event} e jQuery event object - * @param {object} o DataTables settings object {@link DataTable.models.oSettings} - */ - - /** - * Column visibility has changed. - * @name DataTable#column-visibility.dt - * @event - * @param {event} e jQuery event object - * @param {object} o DataTables settings object {@link DataTable.models.oSettings} - * @param {int} column Column index - * @param {bool} vis `false` if column now hidden, or `true` if visible - */ - - return $.fn.dataTable; -})); - -}(window, document)); - diff --git a/assets/js/plugins/dataTables/swf/copy_csv_xls.swf b/assets/js/plugins/dataTables/swf/copy_csv_xls.swf deleted file mode 100644 index 32fdf052..00000000 Binary files a/assets/js/plugins/dataTables/swf/copy_csv_xls.swf and /dev/null differ diff --git a/assets/js/plugins/dataTables/swf/copy_csv_xls_pdf.swf b/assets/js/plugins/dataTables/swf/copy_csv_xls_pdf.swf deleted file mode 100644 index ebab741e..00000000 Binary files a/assets/js/plugins/dataTables/swf/copy_csv_xls_pdf.swf and /dev/null differ diff --git a/assets/js/plugins/datapicker/bootstrap-datepicker.js b/assets/js/plugins/datapicker/bootstrap-datepicker.js deleted file mode 100644 index f17de6d1..00000000 --- a/assets/js/plugins/datapicker/bootstrap-datepicker.js +++ /dev/null @@ -1,1671 +0,0 @@ -/* ========================================================= - * bootstrap-datepicker.js - * Repo: https://github.com/eternicode/bootstrap-datepicker/ - * Demo: http://eternicode.github.io/bootstrap-datepicker/ - * Docs: http://bootstrap-datepicker.readthedocs.org/ - * Forked from http://www.eyecon.ro/bootstrap-datepicker - * ========================================================= - * Started by Stefan Petre; improvements by Andrew Rowls + contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================= */ - -(function($, undefined){ - - var $window = $(window); - - function UTCDate(){ - return new Date(Date.UTC.apply(Date, arguments)); - } - function UTCToday(){ - var today = new Date(); - return UTCDate(today.getFullYear(), today.getMonth(), today.getDate()); - } - function alias(method){ - return function(){ - return this[method].apply(this, arguments); - }; - } - - var DateArray = (function(){ - var extras = { - get: function(i){ - return this.slice(i)[0]; - }, - contains: function(d){ - // Array.indexOf is not cross-browser; - // $.inArray doesn't work with Dates - var val = d && d.valueOf(); - for (var i=0, l=this.length; i < l; i++) - if (this[i].valueOf() === val) - return i; - return -1; - }, - remove: function(i){ - this.splice(i,1); - }, - replace: function(new_array){ - if (!new_array) - return; - if (!$.isArray(new_array)) - new_array = [new_array]; - this.clear(); - this.push.apply(this, new_array); - }, - clear: function(){ - this.splice(0); - }, - copy: function(){ - var a = new DateArray(); - a.replace(this); - return a; - } - }; - - return function(){ - var a = []; - a.push.apply(a, arguments); - $.extend(a, extras); - return a; - }; - })(); - - - // Picker object - - var Datepicker = function(element, options){ - this.dates = new DateArray(); - this.viewDate = UTCToday(); - this.focusDate = null; - - this._process_options(options); - - this.element = $(element); - this.isInline = false; - this.isInput = this.element.is('input'); - this.component = this.element.is('.date') ? this.element.find('.add-on, .input-group-addon, .btn') : false; - this.hasInput = this.component && this.element.find('input').length; - if (this.component && this.component.length === 0) - this.component = false; - - this.picker = $(DPGlobal.template); - this._buildEvents(); - this._attachEvents(); - - if (this.isInline){ - this.picker.addClass('datepicker-inline').appendTo(this.element); - } - else { - this.picker.addClass('datepicker-dropdown dropdown-menu'); - } - - if (this.o.rtl){ - this.picker.addClass('datepicker-rtl'); - } - - this.viewMode = this.o.startView; - - if (this.o.calendarWeeks) - this.picker.find('tfoot th.today') - .attr('colspan', function(i, val){ - return parseInt(val) + 1; - }); - - this._allow_update = false; - - this.setStartDate(this._o.startDate); - this.setEndDate(this._o.endDate); - this.setDaysOfWeekDisabled(this.o.daysOfWeekDisabled); - - this.fillDow(); - this.fillMonths(); - - this._allow_update = true; - - this.update(); - this.showMode(); - - if (this.isInline){ - this.show(); - } - }; - - Datepicker.prototype = { - constructor: Datepicker, - - _process_options: function(opts){ - // Store raw options for reference - this._o = $.extend({}, this._o, opts); - // Processed options - var o = this.o = $.extend({}, this._o); - - // Check if "de-DE" style date is available, if not language should - // fallback to 2 letter code eg "de" - var lang = o.language; - if (!dates[lang]){ - lang = lang.split('-')[0]; - if (!dates[lang]) - lang = defaults.language; - } - o.language = lang; - - switch (o.startView){ - case 2: - case 'decade': - o.startView = 2; - break; - case 1: - case 'year': - o.startView = 1; - break; - default: - o.startView = 0; - } - - switch (o.minViewMode){ - case 1: - case 'months': - o.minViewMode = 1; - break; - case 2: - case 'years': - o.minViewMode = 2; - break; - default: - o.minViewMode = 0; - } - - o.startView = Math.max(o.startView, o.minViewMode); - - // true, false, or Number > 0 - if (o.multidate !== true){ - o.multidate = Number(o.multidate) || false; - if (o.multidate !== false) - o.multidate = Math.max(0, o.multidate); - else - o.multidate = 1; - } - o.multidateSeparator = String(o.multidateSeparator); - - o.weekStart %= 7; - o.weekEnd = ((o.weekStart + 6) % 7); - - var format = DPGlobal.parseFormat(o.format); - if (o.startDate !== -Infinity){ - if (!!o.startDate){ - if (o.startDate instanceof Date) - o.startDate = this._local_to_utc(this._zero_time(o.startDate)); - else - o.startDate = DPGlobal.parseDate(o.startDate, format, o.language); - } - else { - o.startDate = -Infinity; - } - } - if (o.endDate !== Infinity){ - if (!!o.endDate){ - if (o.endDate instanceof Date) - o.endDate = this._local_to_utc(this._zero_time(o.endDate)); - else - o.endDate = DPGlobal.parseDate(o.endDate, format, o.language); - } - else { - o.endDate = Infinity; - } - } - - o.daysOfWeekDisabled = o.daysOfWeekDisabled||[]; - if (!$.isArray(o.daysOfWeekDisabled)) - o.daysOfWeekDisabled = o.daysOfWeekDisabled.split(/[,\s]*/); - o.daysOfWeekDisabled = $.map(o.daysOfWeekDisabled, function(d){ - return parseInt(d, 10); - }); - - var plc = String(o.orientation).toLowerCase().split(/\s+/g), - _plc = o.orientation.toLowerCase(); - plc = $.grep(plc, function(word){ - return (/^auto|left|right|top|bottom$/).test(word); - }); - o.orientation = {x: 'auto', y: 'auto'}; - if (!_plc || _plc === 'auto') - ; // no action - else if (plc.length === 1){ - switch (plc[0]){ - case 'top': - case 'bottom': - o.orientation.y = plc[0]; - break; - case 'left': - case 'right': - o.orientation.x = plc[0]; - break; - } - } - else { - _plc = $.grep(plc, function(word){ - return (/^left|right$/).test(word); - }); - o.orientation.x = _plc[0] || 'auto'; - - _plc = $.grep(plc, function(word){ - return (/^top|bottom$/).test(word); - }); - o.orientation.y = _plc[0] || 'auto'; - } - }, - _events: [], - _secondaryEvents: [], - _applyEvents: function(evs){ - for (var i=0, el, ch, ev; i < evs.length; i++){ - el = evs[i][0]; - if (evs[i].length === 2){ - ch = undefined; - ev = evs[i][1]; - } - else if (evs[i].length === 3){ - ch = evs[i][1]; - ev = evs[i][2]; - } - el.on(ev, ch); - } - }, - _unapplyEvents: function(evs){ - for (var i=0, el, ev, ch; i < evs.length; i++){ - el = evs[i][0]; - if (evs[i].length === 2){ - ch = undefined; - ev = evs[i][1]; - } - else if (evs[i].length === 3){ - ch = evs[i][1]; - ev = evs[i][2]; - } - el.off(ev, ch); - } - }, - _buildEvents: function(){ - if (this.isInput){ // single input - this._events = [ - [this.element, { - focus: $.proxy(this.show, this), - keyup: $.proxy(function(e){ - if ($.inArray(e.keyCode, [27,37,39,38,40,32,13,9]) === -1) - this.update(); - }, this), - keydown: $.proxy(this.keydown, this) - }] - ]; - } - else if (this.component && this.hasInput){ // component: input + button - this._events = [ - // For components that are not readonly, allow keyboard nav - [this.element.find('input'), { - focus: $.proxy(this.show, this), - keyup: $.proxy(function(e){ - if ($.inArray(e.keyCode, [27,37,39,38,40,32,13,9]) === -1) - this.update(); - }, this), - keydown: $.proxy(this.keydown, this) - }], - [this.component, { - click: $.proxy(this.show, this) - }] - ]; - } - else if (this.element.is('div')){ // inline datepicker - this.isInline = true; - } - else { - this._events = [ - [this.element, { - click: $.proxy(this.show, this) - }] - ]; - } - this._events.push( - // Component: listen for blur on element descendants - [this.element, '*', { - blur: $.proxy(function(e){ - this._focused_from = e.target; - }, this) - }], - // Input: listen for blur on element - [this.element, { - blur: $.proxy(function(e){ - this._focused_from = e.target; - }, this) - }] - ); - - this._secondaryEvents = [ - [this.picker, { - click: $.proxy(this.click, this) - }], - [$(window), { - resize: $.proxy(this.place, this) - }], - [$(document), { - 'mousedown touchstart': $.proxy(function(e){ - // Clicked outside the datepicker, hide it - if (!( - this.element.is(e.target) || - this.element.find(e.target).length || - this.picker.is(e.target) || - this.picker.find(e.target).length - )){ - this.hide(); - } - }, this) - }] - ]; - }, - _attachEvents: function(){ - this._detachEvents(); - this._applyEvents(this._events); - }, - _detachEvents: function(){ - this._unapplyEvents(this._events); - }, - _attachSecondaryEvents: function(){ - this._detachSecondaryEvents(); - this._applyEvents(this._secondaryEvents); - }, - _detachSecondaryEvents: function(){ - this._unapplyEvents(this._secondaryEvents); - }, - _trigger: function(event, altdate){ - var date = altdate || this.dates.get(-1), - local_date = this._utc_to_local(date); - - this.element.trigger({ - type: event, - date: local_date, - dates: $.map(this.dates, this._utc_to_local), - format: $.proxy(function(ix, format){ - if (arguments.length === 0){ - ix = this.dates.length - 1; - format = this.o.format; - } - else if (typeof ix === 'string'){ - format = ix; - ix = this.dates.length - 1; - } - format = format || this.o.format; - var date = this.dates.get(ix); - return DPGlobal.formatDate(date, format, this.o.language); - }, this) - }); - }, - - show: function(){ - if (!this.isInline) - this.picker.appendTo('body'); - this.picker.show(); - this.place(); - this._attachSecondaryEvents(); - this._trigger('show'); - }, - - hide: function(){ - if (this.isInline) - return; - if (!this.picker.is(':visible')) - return; - this.focusDate = null; - this.picker.hide().detach(); - this._detachSecondaryEvents(); - this.viewMode = this.o.startView; - this.showMode(); - - if ( - this.o.forceParse && - ( - this.isInput && this.element.val() || - this.hasInput && this.element.find('input').val() - ) - ) - this.setValue(); - this._trigger('hide'); - }, - - remove: function(){ - this.hide(); - this._detachEvents(); - this._detachSecondaryEvents(); - this.picker.remove(); - delete this.element.data().datepicker; - if (!this.isInput){ - delete this.element.data().date; - } - }, - - _utc_to_local: function(utc){ - return utc && new Date(utc.getTime() + (utc.getTimezoneOffset()*60000)); - }, - _local_to_utc: function(local){ - return local && new Date(local.getTime() - (local.getTimezoneOffset()*60000)); - }, - _zero_time: function(local){ - return local && new Date(local.getFullYear(), local.getMonth(), local.getDate()); - }, - _zero_utc_time: function(utc){ - return utc && new Date(Date.UTC(utc.getUTCFullYear(), utc.getUTCMonth(), utc.getUTCDate())); - }, - - getDates: function(){ - return $.map(this.dates, this._utc_to_local); - }, - - getUTCDates: function(){ - return $.map(this.dates, function(d){ - return new Date(d); - }); - }, - - getDate: function(){ - return this._utc_to_local(this.getUTCDate()); - }, - - getUTCDate: function(){ - return new Date(this.dates.get(-1)); - }, - - setDates: function(){ - var args = $.isArray(arguments[0]) ? arguments[0] : arguments; - this.update.apply(this, args); - this._trigger('changeDate'); - this.setValue(); - }, - - setUTCDates: function(){ - var args = $.isArray(arguments[0]) ? arguments[0] : arguments; - this.update.apply(this, $.map(args, this._utc_to_local)); - this._trigger('changeDate'); - this.setValue(); - }, - - setDate: alias('setDates'), - setUTCDate: alias('setUTCDates'), - - setValue: function(){ - var formatted = this.getFormattedDate(); - if (!this.isInput){ - if (this.component){ - this.element.find('input').val(formatted).change(); - } - } - else { - this.element.val(formatted).change(); - } - }, - - getFormattedDate: function(format){ - if (format === undefined) - format = this.o.format; - - var lang = this.o.language; - return $.map(this.dates, function(d){ - return DPGlobal.formatDate(d, format, lang); - }).join(this.o.multidateSeparator); - }, - - setStartDate: function(startDate){ - this._process_options({startDate: startDate}); - this.update(); - this.updateNavArrows(); - }, - - setEndDate: function(endDate){ - this._process_options({endDate: endDate}); - this.update(); - this.updateNavArrows(); - }, - - setDaysOfWeekDisabled: function(daysOfWeekDisabled){ - this._process_options({daysOfWeekDisabled: daysOfWeekDisabled}); - this.update(); - this.updateNavArrows(); - }, - - place: function(){ - if (this.isInline) - return; - var calendarWidth = this.picker.outerWidth(), - calendarHeight = this.picker.outerHeight(), - visualPadding = 10, - windowWidth = $window.width(), - windowHeight = $window.height(), - scrollTop = $window.scrollTop(); - - var zIndex = parseInt(this.element.parents().filter(function(){ - return $(this).css('z-index') !== 'auto'; - }).first().css('z-index'))+10; - var offset = this.component ? this.component.parent().offset() : this.element.offset(); - var height = this.component ? this.component.outerHeight(true) : this.element.outerHeight(false); - var width = this.component ? this.component.outerWidth(true) : this.element.outerWidth(false); - var left = offset.left, - top = offset.top; - - this.picker.removeClass( - 'datepicker-orient-top datepicker-orient-bottom '+ - 'datepicker-orient-right datepicker-orient-left' - ); - - if (this.o.orientation.x !== 'auto'){ - this.picker.addClass('datepicker-orient-' + this.o.orientation.x); - if (this.o.orientation.x === 'right') - left -= calendarWidth - width; - } - // auto x orientation is best-placement: if it crosses a window - // edge, fudge it sideways - else { - // Default to left - this.picker.addClass('datepicker-orient-left'); - if (offset.left < 0) - left -= offset.left - visualPadding; - else if (offset.left + calendarWidth > windowWidth) - left = windowWidth - calendarWidth - visualPadding; - } - - // auto y orientation is best-situation: top or bottom, no fudging, - // decision based on which shows more of the calendar - var yorient = this.o.orientation.y, - top_overflow, bottom_overflow; - if (yorient === 'auto'){ - top_overflow = -scrollTop + offset.top - calendarHeight; - bottom_overflow = scrollTop + windowHeight - (offset.top + height + calendarHeight); - if (Math.max(top_overflow, bottom_overflow) === bottom_overflow) - yorient = 'top'; - else - yorient = 'bottom'; - } - this.picker.addClass('datepicker-orient-' + yorient); - if (yorient === 'top') - top += height; - else - top -= calendarHeight + parseInt(this.picker.css('padding-top')); - - this.picker.css({ - top: top, - left: left, - zIndex: zIndex - }); - }, - - _allow_update: true, - update: function(){ - if (!this._allow_update) - return; - - var oldDates = this.dates.copy(), - dates = [], - fromArgs = false; - if (arguments.length){ - $.each(arguments, $.proxy(function(i, date){ - if (date instanceof Date) - date = this._local_to_utc(date); - dates.push(date); - }, this)); - fromArgs = true; - } - else { - dates = this.isInput - ? this.element.val() - : this.element.data('date') || this.element.find('input').val(); - if (dates && this.o.multidate) - dates = dates.split(this.o.multidateSeparator); - else - dates = [dates]; - delete this.element.data().date; - } - - dates = $.map(dates, $.proxy(function(date){ - return DPGlobal.parseDate(date, this.o.format, this.o.language); - }, this)); - dates = $.grep(dates, $.proxy(function(date){ - return ( - date < this.o.startDate || - date > this.o.endDate || - !date - ); - }, this), true); - this.dates.replace(dates); - - if (this.dates.length) - this.viewDate = new Date(this.dates.get(-1)); - else if (this.viewDate < this.o.startDate) - this.viewDate = new Date(this.o.startDate); - else if (this.viewDate > this.o.endDate) - this.viewDate = new Date(this.o.endDate); - - if (fromArgs){ - // setting date by clicking - this.setValue(); - } - else if (dates.length){ - // setting date by typing - if (String(oldDates) !== String(this.dates)) - this._trigger('changeDate'); - } - if (!this.dates.length && oldDates.length) - this._trigger('clearDate'); - - this.fill(); - }, - - fillDow: function(){ - var dowCnt = this.o.weekStart, - html = '<tr>'; - if (this.o.calendarWeeks){ - var cell = '<th class="cw">&nbsp;</th>'; - html += cell; - this.picker.find('.datepicker-days thead tr:first-child').prepend(cell); - } - while (dowCnt < this.o.weekStart + 7){ - html += '<th class="dow">'+dates[this.o.language].daysMin[(dowCnt++)%7]+'</th>'; - } - html += '</tr>'; - this.picker.find('.datepicker-days thead').append(html); - }, - - fillMonths: function(){ - var html = '', - i = 0; - while (i < 12){ - html += '<span class="month">'+dates[this.o.language].monthsShort[i++]+'</span>'; - } - this.picker.find('.datepicker-months td').html(html); - }, - - setRange: function(range){ - if (!range || !range.length) - delete this.range; - else - this.range = $.map(range, function(d){ - return d.valueOf(); - }); - this.fill(); - }, - - getClassNames: function(date){ - var cls = [], - year = this.viewDate.getUTCFullYear(), - month = this.viewDate.getUTCMonth(), - today = new Date(); - if (date.getUTCFullYear() < year || (date.getUTCFullYear() === year && date.getUTCMonth() < month)){ - cls.push('old'); - } - else if (date.getUTCFullYear() > year || (date.getUTCFullYear() === year && date.getUTCMonth() > month)){ - cls.push('new'); - } - if (this.focusDate && date.valueOf() === this.focusDate.valueOf()) - cls.push('focused'); - // Compare internal UTC date with local today, not UTC today - if (this.o.todayHighlight && - date.getUTCFullYear() === today.getFullYear() && - date.getUTCMonth() === today.getMonth() && - date.getUTCDate() === today.getDate()){ - cls.push('today'); - } - if (this.dates.contains(date) !== -1) - cls.push('active'); - if (date.valueOf() < this.o.startDate || date.valueOf() > this.o.endDate || - $.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1){ - cls.push('disabled'); - } - if (this.range){ - if (date > this.range[0] && date < this.range[this.range.length-1]){ - cls.push('range'); - } - if ($.inArray(date.valueOf(), this.range) !== -1){ - cls.push('selected'); - } - } - return cls; - }, - - fill: function(){ - var d = new Date(this.viewDate), - year = d.getUTCFullYear(), - month = d.getUTCMonth(), - startYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity, - startMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity, - endYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity, - endMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity, - todaytxt = dates[this.o.language].today || dates['en'].today || '', - cleartxt = dates[this.o.language].clear || dates['en'].clear || '', - tooltip; - this.picker.find('.datepicker-days thead th.datepicker-switch') - .text(dates[this.o.language].months[month]+' '+year); - this.picker.find('tfoot th.today') - .text(todaytxt) - .toggle(this.o.todayBtn !== false); - this.picker.find('tfoot th.clear') - .text(cleartxt) - .toggle(this.o.clearBtn !== false); - this.updateNavArrows(); - this.fillMonths(); - var prevMonth = UTCDate(year, month-1, 28), - day = DPGlobal.getDaysInMonth(prevMonth.getUTCFullYear(), prevMonth.getUTCMonth()); - prevMonth.setUTCDate(day); - prevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.o.weekStart + 7)%7); - var nextMonth = new Date(prevMonth); - nextMonth.setUTCDate(nextMonth.getUTCDate() + 42); - nextMonth = nextMonth.valueOf(); - var html = []; - var clsName; - while (prevMonth.valueOf() < nextMonth){ - if (prevMonth.getUTCDay() === this.o.weekStart){ - html.push('<tr>'); - if (this.o.calendarWeeks){ - // ISO 8601: First week contains first thursday. - // ISO also states week starts on Monday, but we can be more abstract here. - var - // Start of current week: based on weekstart/current date - ws = new Date(+prevMonth + (this.o.weekStart - prevMonth.getUTCDay() - 7) % 7 * 864e5), - // Thursday of this week - th = new Date(Number(ws) + (7 + 4 - ws.getUTCDay()) % 7 * 864e5), - // First Thursday of year, year from thursday - yth = new Date(Number(yth = UTCDate(th.getUTCFullYear(), 0, 1)) + (7 + 4 - yth.getUTCDay())%7*864e5), - // Calendar week: ms between thursdays, div ms per day, div 7 days - calWeek = (th - yth) / 864e5 / 7 + 1; - html.push('<td class="cw">'+ calWeek +'</td>'); - - } - } - clsName = this.getClassNames(prevMonth); - clsName.push('day'); - - if (this.o.beforeShowDay !== $.noop){ - var before = this.o.beforeShowDay(this._utc_to_local(prevMonth)); - if (before === undefined) - before = {}; - else if (typeof(before) === 'boolean') - before = {enabled: before}; - else if (typeof(before) === 'string') - before = {classes: before}; - if (before.enabled === false) - clsName.push('disabled'); - if (before.classes) - clsName = clsName.concat(before.classes.split(/\s+/)); - if (before.tooltip) - tooltip = before.tooltip; - } - - clsName = $.unique(clsName); - html.push('<td class="'+clsName.join(' ')+'"' + (tooltip ? ' title="'+tooltip+'"' : '') + '>'+prevMonth.getUTCDate() + '</td>'); - if (prevMonth.getUTCDay() === this.o.weekEnd){ - html.push('</tr>'); - } - prevMonth.setUTCDate(prevMonth.getUTCDate()+1); - } - this.picker.find('.datepicker-days tbody').empty().append(html.join('')); - - var months = this.picker.find('.datepicker-months') - .find('th:eq(1)') - .text(year) - .end() - .find('span').removeClass('active'); - - $.each(this.dates, function(i, d){ - if (d.getUTCFullYear() === year) - months.eq(d.getUTCMonth()).addClass('active'); - }); - - if (year < startYear || year > endYear){ - months.addClass('disabled'); - } - if (year === startYear){ - months.slice(0, startMonth).addClass('disabled'); - } - if (year === endYear){ - months.slice(endMonth+1).addClass('disabled'); - } - - html = ''; - year = parseInt(year/10, 10) * 10; - var yearCont = this.picker.find('.datepicker-years') - .find('th:eq(1)') - .text(year + '-' + (year + 9)) - .end() - .find('td'); - year -= 1; - var years = $.map(this.dates, function(d){ - return d.getUTCFullYear(); - }), - classes; - for (var i = -1; i < 11; i++){ - classes = ['year']; - if (i === -1) - classes.push('old'); - else if (i === 10) - classes.push('new'); - if ($.inArray(year, years) !== -1) - classes.push('active'); - if (year < startYear || year > endYear) - classes.push('disabled'); - html += '<span class="' + classes.join(' ') + '">'+year+'</span>'; - year += 1; - } - yearCont.html(html); - }, - - updateNavArrows: function(){ - if (!this._allow_update) - return; - - var d = new Date(this.viewDate), - year = d.getUTCFullYear(), - month = d.getUTCMonth(); - switch (this.viewMode){ - case 0: - if (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear() && month <= this.o.startDate.getUTCMonth()){ - this.picker.find('.prev').css({visibility: 'hidden'}); - } - else { - this.picker.find('.prev').css({visibility: 'visible'}); - } - if (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear() && month >= this.o.endDate.getUTCMonth()){ - this.picker.find('.next').css({visibility: 'hidden'}); - } - else { - this.picker.find('.next').css({visibility: 'visible'}); - } - break; - case 1: - case 2: - if (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear()){ - this.picker.find('.prev').css({visibility: 'hidden'}); - } - else { - this.picker.find('.prev').css({visibility: 'visible'}); - } - if (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear()){ - this.picker.find('.next').css({visibility: 'hidden'}); - } - else { - this.picker.find('.next').css({visibility: 'visible'}); - } - break; - } - }, - - click: function(e){ - e.preventDefault(); - var target = $(e.target).closest('span, td, th'), - year, month, day; - if (target.length === 1){ - switch (target[0].nodeName.toLowerCase()){ - case 'th': - switch (target[0].className){ - case 'datepicker-switch': - this.showMode(1); - break; - case 'prev': - case 'next': - var dir = DPGlobal.modes[this.viewMode].navStep * (target[0].className === 'prev' ? -1 : 1); - switch (this.viewMode){ - case 0: - this.viewDate = this.moveMonth(this.viewDate, dir); - this._trigger('changeMonth', this.viewDate); - break; - case 1: - case 2: - this.viewDate = this.moveYear(this.viewDate, dir); - if (this.viewMode === 1) - this._trigger('changeYear', this.viewDate); - break; - } - this.fill(); - break; - case 'today': - var date = new Date(); - date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0); - - this.showMode(-2); - var which = this.o.todayBtn === 'linked' ? null : 'view'; - this._setDate(date, which); - break; - case 'clear': - var element; - if (this.isInput) - element = this.element; - else if (this.component) - element = this.element.find('input'); - if (element) - element.val("").change(); - this.update(); - this._trigger('changeDate'); - if (this.o.autoclose) - this.hide(); - break; - } - break; - case 'span': - if (!target.is('.disabled')){ - this.viewDate.setUTCDate(1); - if (target.is('.month')){ - day = 1; - month = target.parent().find('span').index(target); - year = this.viewDate.getUTCFullYear(); - this.viewDate.setUTCMonth(month); - this._trigger('changeMonth', this.viewDate); - if (this.o.minViewMode === 1){ - this._setDate(UTCDate(year, month, day)); - } - } - else { - day = 1; - month = 0; - year = parseInt(target.text(), 10)||0; - this.viewDate.setUTCFullYear(year); - this._trigger('changeYear', this.viewDate); - if (this.o.minViewMode === 2){ - this._setDate(UTCDate(year, month, day)); - } - } - this.showMode(-1); - this.fill(); - } - break; - case 'td': - if (target.is('.day') && !target.is('.disabled')){ - day = parseInt(target.text(), 10)||1; - year = this.viewDate.getUTCFullYear(); - month = this.viewDate.getUTCMonth(); - if (target.is('.old')){ - if (month === 0){ - month = 11; - year -= 1; - } - else { - month -= 1; - } - } - else if (target.is('.new')){ - if (month === 11){ - month = 0; - year += 1; - } - else { - month += 1; - } - } - this._setDate(UTCDate(year, month, day)); - } - break; - } - } - if (this.picker.is(':visible') && this._focused_from){ - $(this._focused_from).focus(); - } - delete this._focused_from; - }, - - _toggle_multidate: function(date){ - var ix = this.dates.contains(date); - if (!date){ - this.dates.clear(); - } - else if (ix !== -1){ - this.dates.remove(ix); - } - else { - this.dates.push(date); - } - if (typeof this.o.multidate === 'number') - while (this.dates.length > this.o.multidate) - this.dates.remove(0); - }, - - _setDate: function(date, which){ - if (!which || which === 'date') - this._toggle_multidate(date && new Date(date)); - if (!which || which === 'view') - this.viewDate = date && new Date(date); - - this.fill(); - this.setValue(); - this._trigger('changeDate'); - var element; - if (this.isInput){ - element = this.element; - } - else if (this.component){ - element = this.element.find('input'); - } - if (element){ - element.change(); - } - if (this.o.autoclose && (!which || which === 'date')){ - this.hide(); - } - }, - - moveMonth: function(date, dir){ - if (!date) - return undefined; - if (!dir) - return date; - var new_date = new Date(date.valueOf()), - day = new_date.getUTCDate(), - month = new_date.getUTCMonth(), - mag = Math.abs(dir), - new_month, test; - dir = dir > 0 ? 1 : -1; - if (mag === 1){ - test = dir === -1 - // If going back one month, make sure month is not current month - // (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02) - ? function(){ - return new_date.getUTCMonth() === month; - } - // If going forward one month, make sure month is as expected - // (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02) - : function(){ - return new_date.getUTCMonth() !== new_month; - }; - new_month = month + dir; - new_date.setUTCMonth(new_month); - // Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11 - if (new_month < 0 || new_month > 11) - new_month = (new_month + 12) % 12; - } - else { - // For magnitudes >1, move one month at a time... - for (var i=0; i < mag; i++) - // ...which might decrease the day (eg, Jan 31 to Feb 28, etc)... - new_date = this.moveMonth(new_date, dir); - // ...then reset the day, keeping it in the new month - new_month = new_date.getUTCMonth(); - new_date.setUTCDate(day); - test = function(){ - return new_month !== new_date.getUTCMonth(); - }; - } - // Common date-resetting loop -- if date is beyond end of month, make it - // end of month - while (test()){ - new_date.setUTCDate(--day); - new_date.setUTCMonth(new_month); - } - return new_date; - }, - - moveYear: function(date, dir){ - return this.moveMonth(date, dir*12); - }, - - dateWithinRange: function(date){ - return date >= this.o.startDate && date <= this.o.endDate; - }, - - keydown: function(e){ - if (this.picker.is(':not(:visible)')){ - if (e.keyCode === 27) // allow escape to hide and re-show picker - this.show(); - return; - } - var dateChanged = false, - dir, newDate, newViewDate, - focusDate = this.focusDate || this.viewDate; - switch (e.keyCode){ - case 27: // escape - if (this.focusDate){ - this.focusDate = null; - this.viewDate = this.dates.get(-1) || this.viewDate; - this.fill(); - } - else - this.hide(); - e.preventDefault(); - break; - case 37: // left - case 39: // right - if (!this.o.keyboardNavigation) - break; - dir = e.keyCode === 37 ? -1 : 1; - if (e.ctrlKey){ - newDate = this.moveYear(this.dates.get(-1) || UTCToday(), dir); - newViewDate = this.moveYear(focusDate, dir); - this._trigger('changeYear', this.viewDate); - } - else if (e.shiftKey){ - newDate = this.moveMonth(this.dates.get(-1) || UTCToday(), dir); - newViewDate = this.moveMonth(focusDate, dir); - this._trigger('changeMonth', this.viewDate); - } - else { - newDate = new Date(this.dates.get(-1) || UTCToday()); - newDate.setUTCDate(newDate.getUTCDate() + dir); - newViewDate = new Date(focusDate); - newViewDate.setUTCDate(focusDate.getUTCDate() + dir); - } - if (this.dateWithinRange(newDate)){ - this.focusDate = this.viewDate = newViewDate; - this.setValue(); - this.fill(); - e.preventDefault(); - } - break; - case 38: // up - case 40: // down - if (!this.o.keyboardNavigation) - break; - dir = e.keyCode === 38 ? -1 : 1; - if (e.ctrlKey){ - newDate = this.moveYear(this.dates.get(-1) || UTCToday(), dir); - newViewDate = this.moveYear(focusDate, dir); - this._trigger('changeYear', this.viewDate); - } - else if (e.shiftKey){ - newDate = this.moveMonth(this.dates.get(-1) || UTCToday(), dir); - newViewDate = this.moveMonth(focusDate, dir); - this._trigger('changeMonth', this.viewDate); - } - else { - newDate = new Date(this.dates.get(-1) || UTCToday()); - newDate.setUTCDate(newDate.getUTCDate() + dir * 7); - newViewDate = new Date(focusDate); - newViewDate.setUTCDate(focusDate.getUTCDate() + dir * 7); - } - if (this.dateWithinRange(newDate)){ - this.focusDate = this.viewDate = newViewDate; - this.setValue(); - this.fill(); - e.preventDefault(); - } - break; - case 32: // spacebar - // Spacebar is used in manually typing dates in some formats. - // As such, its behavior should not be hijacked. - break; - case 13: // enter - focusDate = this.focusDate || this.dates.get(-1) || this.viewDate; - this._toggle_multidate(focusDate); - dateChanged = true; - this.focusDate = null; - this.viewDate = this.dates.get(-1) || this.viewDate; - this.setValue(); - this.fill(); - if (this.picker.is(':visible')){ - e.preventDefault(); - if (this.o.autoclose) - this.hide(); - } - break; - case 9: // tab - this.focusDate = null; - this.viewDate = this.dates.get(-1) || this.viewDate; - this.fill(); - this.hide(); - break; - } - if (dateChanged){ - if (this.dates.length) - this._trigger('changeDate'); - else - this._trigger('clearDate'); - var element; - if (this.isInput){ - element = this.element; - } - else if (this.component){ - element = this.element.find('input'); - } - if (element){ - element.change(); - } - } - }, - - showMode: function(dir){ - if (dir){ - this.viewMode = Math.max(this.o.minViewMode, Math.min(2, this.viewMode + dir)); - } - this.picker - .find('>div') - .hide() - .filter('.datepicker-'+DPGlobal.modes[this.viewMode].clsName) - .css('display', 'block'); - this.updateNavArrows(); - } - }; - - var DateRangePicker = function(element, options){ - this.element = $(element); - this.inputs = $.map(options.inputs, function(i){ - return i.jquery ? i[0] : i; - }); - delete options.inputs; - - $(this.inputs) - .datepicker(options) - .bind('changeDate', $.proxy(this.dateUpdated, this)); - - this.pickers = $.map(this.inputs, function(i){ - return $(i).data('datepicker'); - }); - this.updateDates(); - }; - DateRangePicker.prototype = { - updateDates: function(){ - this.dates = $.map(this.pickers, function(i){ - return i.getUTCDate(); - }); - this.updateRanges(); - }, - updateRanges: function(){ - var range = $.map(this.dates, function(d){ - return d.valueOf(); - }); - $.each(this.pickers, function(i, p){ - p.setRange(range); - }); - }, - dateUpdated: function(e){ - // `this.updating` is a workaround for preventing infinite recursion - // between `changeDate` triggering and `setUTCDate` calling. Until - // there is a better mechanism. - if (this.updating) - return; - this.updating = true; - - var dp = $(e.target).data('datepicker'), - new_date = dp.getUTCDate(), - i = $.inArray(e.target, this.inputs), - l = this.inputs.length; - if (i === -1) - return; - - $.each(this.pickers, function(i, p){ - if (!p.getUTCDate()) - p.setUTCDate(new_date); - }); - - if (new_date < this.dates[i]){ - // Date being moved earlier/left - while (i >= 0 && new_date < this.dates[i]){ - this.pickers[i--].setUTCDate(new_date); - } - } - else if (new_date > this.dates[i]){ - // Date being moved later/right - while (i < l && new_date > this.dates[i]){ - this.pickers[i++].setUTCDate(new_date); - } - } - this.updateDates(); - - delete this.updating; - }, - remove: function(){ - $.map(this.pickers, function(p){ p.remove(); }); - delete this.element.data().datepicker; - } - }; - - function opts_from_el(el, prefix){ - // Derive options from element data-attrs - var data = $(el).data(), - out = {}, inkey, - replace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])'); - prefix = new RegExp('^' + prefix.toLowerCase()); - function re_lower(_,a){ - return a.toLowerCase(); - } - for (var key in data) - if (prefix.test(key)){ - inkey = key.replace(replace, re_lower); - out[inkey] = data[key]; - } - return out; - } - - function opts_from_locale(lang){ - // Derive options from locale plugins - var out = {}; - // Check if "de-DE" style date is available, if not language should - // fallback to 2 letter code eg "de" - if (!dates[lang]){ - lang = lang.split('-')[0]; - if (!dates[lang]) - return; - } - var d = dates[lang]; - $.each(locale_opts, function(i,k){ - if (k in d) - out[k] = d[k]; - }); - return out; - } - - var old = $.fn.datepicker; - $.fn.datepicker = function(option){ - var args = Array.apply(null, arguments); - args.shift(); - var internal_return; - this.each(function(){ - var $this = $(this), - data = $this.data('datepicker'), - options = typeof option === 'object' && option; - if (!data){ - var elopts = opts_from_el(this, 'date'), - // Preliminary otions - xopts = $.extend({}, defaults, elopts, options), - locopts = opts_from_locale(xopts.language), - // Options priority: js args, data-attrs, locales, defaults - opts = $.extend({}, defaults, locopts, elopts, options); - if ($this.is('.input-daterange') || opts.inputs){ - var ropts = { - inputs: opts.inputs || $this.find('input').toArray() - }; - $this.data('datepicker', (data = new DateRangePicker(this, $.extend(opts, ropts)))); - } - else { - $this.data('datepicker', (data = new Datepicker(this, opts))); - } - } - if (typeof option === 'string' && typeof data[option] === 'function'){ - internal_return = data[option].apply(data, args); - if (internal_return !== undefined) - return false; - } - }); - if (internal_return !== undefined) - return internal_return; - else - return this; - }; - - var defaults = $.fn.datepicker.defaults = { - autoclose: false, - beforeShowDay: $.noop, - calendarWeeks: false, - clearBtn: false, - daysOfWeekDisabled: [], - endDate: Infinity, - forceParse: true, - format: 'mm/dd/yyyy', - keyboardNavigation: true, - language: 'en', - minViewMode: 0, - multidate: false, - multidateSeparator: ',', - orientation: "auto", - rtl: false, - startDate: -Infinity, - startView: 0, - todayBtn: false, - todayHighlight: false, - weekStart: 0 - }; - var locale_opts = $.fn.datepicker.locale_opts = [ - 'format', - 'rtl', - 'weekStart' - ]; - $.fn.datepicker.Constructor = Datepicker; - var dates = $.fn.datepicker.dates = { - en: { - days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"], - daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"], - daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"], - months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], - monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], - today: "Today", - clear: "Clear" - } - }; - - var DPGlobal = { - modes: [ - { - clsName: 'days', - navFnc: 'Month', - navStep: 1 - }, - { - clsName: 'months', - navFnc: 'FullYear', - navStep: 1 - }, - { - clsName: 'years', - navFnc: 'FullYear', - navStep: 10 - }], - isLeapYear: function(year){ - return (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0)); - }, - getDaysInMonth: function(year, month){ - return [31, (DPGlobal.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month]; - }, - validParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g, - nonpunctuation: /[^ -\/:-@\[\u3400-\u9fff-`{-~\t\n\r]+/g, - parseFormat: function(format){ - // IE treats \0 as a string end in inputs (truncating the value), - // so it's a bad format delimiter, anyway - var separators = format.replace(this.validParts, '\0').split('\0'), - parts = format.match(this.validParts); - if (!separators || !separators.length || !parts || parts.length === 0){ - throw new Error("Invalid date format."); - } - return {separators: separators, parts: parts}; - }, - parseDate: function(date, format, language){ - if (!date) - return undefined; - if (date instanceof Date) - return date; - if (typeof format === 'string') - format = DPGlobal.parseFormat(format); - var part_re = /([\-+]\d+)([dmwy])/, - parts = date.match(/([\-+]\d+)([dmwy])/g), - part, dir, i; - if (/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/.test(date)){ - date = new Date(); - for (i=0; i < parts.length; i++){ - part = part_re.exec(parts[i]); - dir = parseInt(part[1]); - switch (part[2]){ - case 'd': - date.setUTCDate(date.getUTCDate() + dir); - break; - case 'm': - date = Datepicker.prototype.moveMonth.call(Datepicker.prototype, date, dir); - break; - case 'w': - date.setUTCDate(date.getUTCDate() + dir * 7); - break; - case 'y': - date = Datepicker.prototype.moveYear.call(Datepicker.prototype, date, dir); - break; - } - } - return UTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 0, 0, 0); - } - parts = date && date.match(this.nonpunctuation) || []; - date = new Date(); - var parsed = {}, - setters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'], - setters_map = { - yyyy: function(d,v){ - return d.setUTCFullYear(v); - }, - yy: function(d,v){ - return d.setUTCFullYear(2000+v); - }, - m: function(d,v){ - if (isNaN(d)) - return d; - v -= 1; - while (v < 0) v += 12; - v %= 12; - d.setUTCMonth(v); - while (d.getUTCMonth() !== v) - d.setUTCDate(d.getUTCDate()-1); - return d; - }, - d: function(d,v){ - return d.setUTCDate(v); - } - }, - val, filtered; - setters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m']; - setters_map['dd'] = setters_map['d']; - date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0); - var fparts = format.parts.slice(); - // Remove noop parts - if (parts.length !== fparts.length){ - fparts = $(fparts).filter(function(i,p){ - return $.inArray(p, setters_order) !== -1; - }).toArray(); - } - // Process remainder - function match_part(){ - var m = this.slice(0, parts[i].length), - p = parts[i].slice(0, m.length); - return m === p; - } - if (parts.length === fparts.length){ - var cnt; - for (i=0, cnt = fparts.length; i < cnt; i++){ - val = parseInt(parts[i], 10); - part = fparts[i]; - if (isNaN(val)){ - switch (part){ - case 'MM': - filtered = $(dates[language].months).filter(match_part); - val = $.inArray(filtered[0], dates[language].months) + 1; - break; - case 'M': - filtered = $(dates[language].monthsShort).filter(match_part); - val = $.inArray(filtered[0], dates[language].monthsShort) + 1; - break; - } - } - parsed[part] = val; - } - var _date, s; - for (i=0; i < setters_order.length; i++){ - s = setters_order[i]; - if (s in parsed && !isNaN(parsed[s])){ - _date = new Date(date); - setters_map[s](_date, parsed[s]); - if (!isNaN(_date)) - date = _date; - } - } - } - return date; - }, - formatDate: function(date, format, language){ - if (!date) - return ''; - if (typeof format === 'string') - format = DPGlobal.parseFormat(format); - var val = { - d: date.getUTCDate(), - D: dates[language].daysShort[date.getUTCDay()], - DD: dates[language].days[date.getUTCDay()], - m: date.getUTCMonth() + 1, - M: dates[language].monthsShort[date.getUTCMonth()], - MM: dates[language].months[date.getUTCMonth()], - yy: date.getUTCFullYear().toString().substring(2), - yyyy: date.getUTCFullYear() - }; - val.dd = (val.d < 10 ? '0' : '') + val.d; - val.mm = (val.m < 10 ? '0' : '') + val.m; - date = []; - var seps = $.extend([], format.separators); - for (var i=0, cnt = format.parts.length; i <= cnt; i++){ - if (seps.length) - date.push(seps.shift()); - date.push(val[format.parts[i]]); - } - return date.join(''); - }, - headTemplate: '<thead>'+ - '<tr>'+ - '<th class="prev">&laquo;</th>'+ - '<th colspan="5" class="datepicker-switch"></th>'+ - '<th class="next">&raquo;</th>'+ - '</tr>'+ - '</thead>', - contTemplate: '<tbody><tr><td colspan="7"></td></tr></tbody>', - footTemplate: '<tfoot>'+ - '<tr>'+ - '<th colspan="7" class="today"></th>'+ - '</tr>'+ - '<tr>'+ - '<th colspan="7" class="clear"></th>'+ - '</tr>'+ - '</tfoot>' - }; - DPGlobal.template = '<div class="datepicker">'+ - '<div class="datepicker-days">'+ - '<table class=" table-condensed">'+ - DPGlobal.headTemplate+ - '<tbody></tbody>'+ - DPGlobal.footTemplate+ - '</table>'+ - '</div>'+ - '<div class="datepicker-months">'+ - '<table class="table-condensed">'+ - DPGlobal.headTemplate+ - DPGlobal.contTemplate+ - DPGlobal.footTemplate+ - '</table>'+ - '</div>'+ - '<div class="datepicker-years">'+ - '<table class="table-condensed">'+ - DPGlobal.headTemplate+ - DPGlobal.contTemplate+ - DPGlobal.footTemplate+ - '</table>'+ - '</div>'+ - '</div>'; - - $.fn.datepicker.DPGlobal = DPGlobal; - - - /* DATEPICKER NO CONFLICT - * =================== */ - - $.fn.datepicker.noConflict = function(){ - $.fn.datepicker = old; - return this; - }; - - - /* DATEPICKER DATA-API - * ================== */ - - $(document).on( - 'focus.datepicker.data-api click.datepicker.data-api', - '[data-provide="datepicker"]', - function(e){ - var $this = $(this); - if ($this.data('datepicker')) - return; - e.preventDefault(); - // component click requires us to explicitly show it - $this.datepicker('show'); - } - ); - $(function(){ - $('[data-provide="datepicker-inline"]').datepicker(); - }); - -}(window.jQuery)); diff --git a/assets/js/plugins/dropzone/dropzone.js b/assets/js/plugins/dropzone/dropzone.js deleted file mode 100644 index e676cc27..00000000 --- a/assets/js/plugins/dropzone/dropzone.js +++ /dev/null @@ -1,1841 +0,0 @@ - -;(function(){ - - /** - * Require the module at `name`. - * - * @param {String} name - * @return {Object} exports - * @api public - */ - - function require(name) { - var module = require.modules[name]; - if (!module) throw new Error('failed to require "' + name + '"'); - - if (!('exports' in module) && typeof module.definition === 'function') { - module.client = module.component = true; - module.definition.call(this, module.exports = {}, module); - delete module.definition; - } - - return module.exports; - } - - /** - * Registered modules. - */ - - require.modules = {}; - - /** - * Register module at `name` with callback `definition`. - * - * @param {String} name - * @param {Function} definition - * @api private - */ - - require.register = function (name, definition) { - require.modules[name] = { - definition: definition - }; - }; - - /** - * Define a module's exports immediately with `exports`. - * - * @param {String} name - * @param {Generic} exports - * @api private - */ - - require.define = function (name, exports) { - require.modules[name] = { - exports: exports - }; - }; - require.register("component~emitter@1.1.2", function (exports, module) { - - /** - * Expose `Emitter`. - */ - - module.exports = Emitter; - - /** - * Initialize a new `Emitter`. - * - * @api public - */ - - function Emitter(obj) { - if (obj) return mixin(obj); - }; - - /** - * Mixin the emitter properties. - * - * @param {Object} obj - * @return {Object} - * @api private - */ - - function mixin(obj) { - for (var key in Emitter.prototype) { - obj[key] = Emitter.prototype[key]; - } - return obj; - } - - /** - * Listen on the given `event` with `fn`. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - - Emitter.prototype.on = - Emitter.prototype.addEventListener = function(event, fn){ - this._callbacks = this._callbacks || {}; - (this._callbacks[event] = this._callbacks[event] || []) - .push(fn); - return this; - }; - - /** - * Adds an `event` listener that will be invoked a single - * time then automatically removed. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - - Emitter.prototype.once = function(event, fn){ - var self = this; - this._callbacks = this._callbacks || {}; - - function on() { - self.off(event, on); - fn.apply(this, arguments); - } - - on.fn = fn; - this.on(event, on); - return this; - }; - - /** - * Remove the given callback for `event` or all - * registered callbacks. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - - Emitter.prototype.off = - Emitter.prototype.removeListener = - Emitter.prototype.removeAllListeners = - Emitter.prototype.removeEventListener = function(event, fn){ - this._callbacks = this._callbacks || {}; - - // all - if (0 == arguments.length) { - this._callbacks = {}; - return this; - } - - // specific event - var callbacks = this._callbacks[event]; - if (!callbacks) return this; - - // remove all handlers - if (1 == arguments.length) { - delete this._callbacks[event]; - return this; - } - - // remove specific handler - var cb; - for (var i = 0; i < callbacks.length; i++) { - cb = callbacks[i]; - if (cb === fn || cb.fn === fn) { - callbacks.splice(i, 1); - break; - } - } - return this; - }; - - /** - * Emit `event` with the given args. - * - * @param {String} event - * @param {Mixed} ... - * @return {Emitter} - */ - - Emitter.prototype.emit = function(event){ - this._callbacks = this._callbacks || {}; - var args = [].slice.call(arguments, 1) - , callbacks = this._callbacks[event]; - - if (callbacks) { - callbacks = callbacks.slice(0); - for (var i = 0, len = callbacks.length; i < len; ++i) { - callbacks[i].apply(this, args); - } - } - - return this; - }; - - /** - * Return array of callbacks for `event`. - * - * @param {String} event - * @return {Array} - * @api public - */ - - Emitter.prototype.listeners = function(event){ - this._callbacks = this._callbacks || {}; - return this._callbacks[event] || []; - }; - - /** - * Check if this emitter has `event` handlers. - * - * @param {String} event - * @return {Boolean} - * @api public - */ - - Emitter.prototype.hasListeners = function(event){ - return !! this.listeners(event).length; - }; - - }); - - require.register("dropzone", function (exports, module) { - - - /** - * Exposing dropzone - */ - module.exports = require("dropzone/lib/dropzone.js"); - - }); - - require.register("dropzone/lib/dropzone.js", function (exports, module) { - - /* - * - * More info at [www.dropzonejs.com](http://www.dropzonejs.com) - * - * Copyright (c) 2012, Matias Meno - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ - - (function() { - var Dropzone, Em, camelize, contentLoaded, detectVerticalSquash, drawImageIOSFix, noop, without, - __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, - __slice = [].slice; - - Em = typeof Emitter !== "undefined" && Emitter !== null ? Emitter : require("component~emitter@1.1.2"); - - noop = function() {}; - - Dropzone = (function(_super) { - var extend; - - __extends(Dropzone, _super); - - - /* - This is a list of all available events you can register on a dropzone object. - - You can register an event handler like this: - - dropzone.on("dragEnter", function() { }); - */ - - Dropzone.prototype.events = ["drop", "dragstart", "dragend", "dragenter", "dragover", "dragleave", "addedfile", "removedfile", "thumbnail", "error", "errormultiple", "processing", "processingmultiple", "uploadprogress", "totaluploadprogress", "sending", "sendingmultiple", "success", "successmultiple", "canceled", "canceledmultiple", "complete", "completemultiple", "reset", "maxfilesexceeded", "maxfilesreached"]; - - Dropzone.prototype.defaultOptions = { - url: null, - method: "post", - withCredentials: false, - parallelUploads: 2, - uploadMultiple: false, - maxFilesize: 256, - paramName: "file", - createImageThumbnails: true, - maxThumbnailFilesize: 10, - thumbnailWidth: 100, - thumbnailHeight: 100, - maxFiles: null, - params: {}, - clickable: true, - ignoreHiddenFiles: true, - acceptedFiles: null, - acceptedMimeTypes: null, - autoProcessQueue: true, - autoQueue: true, - addRemoveLinks: false, - previewsContainer: null, - dictDefaultMessage: "Drop files here to upload", - dictFallbackMessage: "Your browser does not support drag'n'drop file uploads.", - dictFallbackText: "Please use the fallback form below to upload your files like in the olden days.", - dictFileTooBig: "File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.", - dictInvalidFileType: "You can't upload files of this type.", - dictResponseError: "Server responded with {{statusCode}} code.", - dictCancelUpload: "Cancel upload", - dictCancelUploadConfirmation: "Are you sure you want to cancel this upload?", - dictRemoveFile: "Remove file", - dictRemoveFileConfirmation: null, - dictMaxFilesExceeded: "You can not upload any more files.", - accept: function(file, done) { - return done(); - }, - init: function() { - return noop; - }, - forceFallback: false, - fallback: function() { - var child, messageElement, span, _i, _len, _ref; - this.element.className = "" + this.element.className + " dz-browser-not-supported"; - _ref = this.element.getElementsByTagName("div"); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - child = _ref[_i]; - if (/(^| )dz-message($| )/.test(child.className)) { - messageElement = child; - child.className = "dz-message"; - continue; - } - } - if (!messageElement) { - messageElement = Dropzone.createElement("<div class=\"dz-message\"><span></span></div>"); - this.element.appendChild(messageElement); - } - span = messageElement.getElementsByTagName("span")[0]; - if (span) { - span.textContent = this.options.dictFallbackMessage; - } - return this.element.appendChild(this.getFallbackForm()); - }, - resize: function(file) { - var info, srcRatio, trgRatio; - info = { - srcX: 0, - srcY: 0, - srcWidth: file.width, - srcHeight: file.height - }; - srcRatio = file.width / file.height; - trgRatio = this.options.thumbnailWidth / this.options.thumbnailHeight; - if (file.height < this.options.thumbnailHeight || file.width < this.options.thumbnailWidth) { - info.trgHeight = info.srcHeight; - info.trgWidth = info.srcWidth; - } else { - if (srcRatio > trgRatio) { - info.srcHeight = file.height; - info.srcWidth = info.srcHeight * trgRatio; - } else { - info.srcWidth = file.width; - info.srcHeight = info.srcWidth / trgRatio; - } - } - info.srcX = (file.width - info.srcWidth) / 2; - info.srcY = (file.height - info.srcHeight) / 2; - return info; - }, - - /* - Those functions register themselves to the events on init and handle all - the user interface specific stuff. Overwriting them won't break the upload - but can break the way it's displayed. - You can overwrite them if you don't like the default behavior. If you just - want to add an additional event handler, register it on the dropzone object - and don't overwrite those options. - */ - drop: function(e) { - return this.element.classList.remove("dz-drag-hover"); - }, - dragstart: noop, - dragend: function(e) { - return this.element.classList.remove("dz-drag-hover"); - }, - dragenter: function(e) { - return this.element.classList.add("dz-drag-hover"); - }, - dragover: function(e) { - return this.element.classList.add("dz-drag-hover"); - }, - dragleave: function(e) { - return this.element.classList.remove("dz-drag-hover"); - }, - paste: noop, - reset: function() { - return this.element.classList.remove("dz-started"); - }, - addedfile: function(file) { - var node, removeFileEvent, removeLink, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2, _results; - if (this.element === this.previewsContainer) { - this.element.classList.add("dz-started"); - } - file.previewElement = Dropzone.createElement(this.options.previewTemplate.trim()); - file.previewTemplate = file.previewElement; - this.previewsContainer.appendChild(file.previewElement); - _ref = file.previewElement.querySelectorAll("[data-dz-name]"); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - node = _ref[_i]; - node.textContent = file.name; - } - _ref1 = file.previewElement.querySelectorAll("[data-dz-size]"); - for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { - node = _ref1[_j]; - node.innerHTML = this.filesize(file.size); - } - if (this.options.addRemoveLinks) { - file._removeLink = Dropzone.createElement("<a class=\"dz-remove\" href=\"javascript:undefined;\" data-dz-remove>" + this.options.dictRemoveFile + "</a>"); - file.previewElement.appendChild(file._removeLink); - } - removeFileEvent = (function(_this) { - return function(e) { - e.preventDefault(); - e.stopPropagation(); - if (file.status === Dropzone.UPLOADING) { - return Dropzone.confirm(_this.options.dictCancelUploadConfirmation, function() { - return _this.removeFile(file); - }); - } else { - if (_this.options.dictRemoveFileConfirmation) { - return Dropzone.confirm(_this.options.dictRemoveFileConfirmation, function() { - return _this.removeFile(file); - }); - } else { - return _this.removeFile(file); - } - } - }; - })(this); - _ref2 = file.previewElement.querySelectorAll("[data-dz-remove]"); - _results = []; - for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) { - removeLink = _ref2[_k]; - _results.push(removeLink.addEventListener("click", removeFileEvent)); - } - return _results; - }, - removedfile: function(file) { - var _ref; - if ((_ref = file.previewElement) != null) { - _ref.parentNode.removeChild(file.previewElement); - } - return this._updateMaxFilesReachedClass(); - }, - thumbnail: function(file, dataUrl) { - var thumbnailElement, _i, _len, _ref, _results; - file.previewElement.classList.remove("dz-file-preview"); - file.previewElement.classList.add("dz-image-preview"); - _ref = file.previewElement.querySelectorAll("[data-dz-thumbnail]"); - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - thumbnailElement = _ref[_i]; - thumbnailElement.alt = file.name; - _results.push(thumbnailElement.src = dataUrl); - } - return _results; - }, - error: function(file, message) { - var node, _i, _len, _ref, _results; - file.previewElement.classList.add("dz-error"); - if (typeof message !== "String" && message.error) { - message = message.error; - } - _ref = file.previewElement.querySelectorAll("[data-dz-errormessage]"); - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - node = _ref[_i]; - _results.push(node.textContent = message); - } - return _results; - }, - errormultiple: noop, - processing: function(file) { - file.previewElement.classList.add("dz-processing"); - if (file._removeLink) { - return file._removeLink.textContent = this.options.dictCancelUpload; - } - }, - processingmultiple: noop, - uploadprogress: function(file, progress, bytesSent) { - var node, _i, _len, _ref, _results; - _ref = file.previewElement.querySelectorAll("[data-dz-uploadprogress]"); - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - node = _ref[_i]; - _results.push(node.style.width = "" + progress + "%"); - } - return _results; - }, - totaluploadprogress: noop, - sending: noop, - sendingmultiple: noop, - success: function(file) { - return file.previewElement.classList.add("dz-success"); - }, - successmultiple: noop, - canceled: function(file) { - return this.emit("error", file, "Upload canceled."); - }, - canceledmultiple: noop, - complete: function(file) { - if (file._removeLink) { - return file._removeLink.textContent = this.options.dictRemoveFile; - } - }, - completemultiple: noop, - maxfilesexceeded: noop, - maxfilesreached: noop, - previewTemplate: "<div class=\"dz-preview dz-file-preview\">\n <div class=\"dz-details\">\n <div class=\"dz-filename\"><span data-dz-name></span></div>\n <div class=\"dz-size\" data-dz-size></div>\n <img data-dz-thumbnail />\n </div>\n <div class=\"dz-progress\"><span class=\"dz-upload\" data-dz-uploadprogress></span></div>\n <div class=\"dz-success-mark\"><span>✔</span></div>\n <div class=\"dz-error-mark\"><span>✘</span></div>\n <div class=\"dz-error-message\"><span data-dz-errormessage></span></div>\n</div>" - }; - - extend = function() { - var key, object, objects, target, val, _i, _len; - target = arguments[0], objects = 2 <= arguments.length ? __slice.call(arguments, 1) : []; - for (_i = 0, _len = objects.length; _i < _len; _i++) { - object = objects[_i]; - for (key in object) { - val = object[key]; - target[key] = val; - } - } - return target; - }; - - function Dropzone(element, options) { - var elementOptions, fallback, _ref; - this.element = element; - this.version = Dropzone.version; - this.defaultOptions.previewTemplate = this.defaultOptions.previewTemplate.replace(/\n*/g, ""); - this.clickableElements = []; - this.listeners = []; - this.files = []; - if (typeof this.element === "string") { - this.element = document.querySelector(this.element); - } - if (!(this.element && (this.element.nodeType != null))) { - throw new Error("Invalid dropzone element."); - } - if (this.element.dropzone) { - throw new Error("Dropzone already attached."); - } - Dropzone.instances.push(this); - this.element.dropzone = this; - elementOptions = (_ref = Dropzone.optionsForElement(this.element)) != null ? _ref : {}; - this.options = extend({}, this.defaultOptions, elementOptions, options != null ? options : {}); - if (this.options.forceFallback || !Dropzone.isBrowserSupported()) { - return this.options.fallback.call(this); - } - if (this.options.url == null) { - this.options.url = this.element.getAttribute("action"); - } - if (!this.options.url) { - throw new Error("No URL provided."); - } - if (this.options.acceptedFiles && this.options.acceptedMimeTypes) { - throw new Error("You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated."); - } - if (this.options.acceptedMimeTypes) { - this.options.acceptedFiles = this.options.acceptedMimeTypes; - delete this.options.acceptedMimeTypes; - } - this.options.method = this.options.method.toUpperCase(); - if ((fallback = this.getExistingFallback()) && fallback.parentNode) { - fallback.parentNode.removeChild(fallback); - } - if (this.options.previewsContainer) { - this.previewsContainer = Dropzone.getElement(this.options.previewsContainer, "previewsContainer"); - } else { - this.previewsContainer = this.element; - } - if (this.options.clickable) { - if (this.options.clickable === true) { - this.clickableElements = [this.element]; - } else { - this.clickableElements = Dropzone.getElements(this.options.clickable, "clickable"); - } - } - this.init(); - } - - Dropzone.prototype.getAcceptedFiles = function() { - var file, _i, _len, _ref, _results; - _ref = this.files; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - file = _ref[_i]; - if (file.accepted) { - _results.push(file); - } - } - return _results; - }; - - Dropzone.prototype.getRejectedFiles = function() { - var file, _i, _len, _ref, _results; - _ref = this.files; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - file = _ref[_i]; - if (!file.accepted) { - _results.push(file); - } - } - return _results; - }; - - Dropzone.prototype.getFilesWithStatus = function(status) { - var file, _i, _len, _ref, _results; - _ref = this.files; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - file = _ref[_i]; - if (file.status === status) { - _results.push(file); - } - } - return _results; - }; - - Dropzone.prototype.getQueuedFiles = function() { - return this.getFilesWithStatus(Dropzone.QUEUED); - }; - - Dropzone.prototype.getUploadingFiles = function() { - return this.getFilesWithStatus(Dropzone.UPLOADING); - }; - - Dropzone.prototype.getActiveFiles = function() { - var file, _i, _len, _ref, _results; - _ref = this.files; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - file = _ref[_i]; - if (file.status === Dropzone.UPLOADING || file.status === Dropzone.QUEUED) { - _results.push(file); - } - } - return _results; - }; - - Dropzone.prototype.init = function() { - var eventName, noPropagation, setupHiddenFileInput, _i, _len, _ref, _ref1; - if (this.element.tagName === "form") { - this.element.setAttribute("enctype", "multipart/form-data"); - } - if (this.element.classList.contains("dropzone") && !this.element.querySelector(".dz-message")) { - this.element.appendChild(Dropzone.createElement("<div class=\"dz-default dz-message\"><span>" + this.options.dictDefaultMessage + "</span></div>")); - } - if (this.clickableElements.length) { - setupHiddenFileInput = (function(_this) { - return function() { - if (_this.hiddenFileInput) { - document.body.removeChild(_this.hiddenFileInput); - } - _this.hiddenFileInput = document.createElement("input"); - _this.hiddenFileInput.setAttribute("type", "file"); - if ((_this.options.maxFiles == null) || _this.options.maxFiles > 1) { - _this.hiddenFileInput.setAttribute("multiple", "multiple"); - } - _this.hiddenFileInput.className = "dz-hidden-input"; - if (_this.options.acceptedFiles != null) { - _this.hiddenFileInput.setAttribute("accept", _this.options.acceptedFiles); - } - _this.hiddenFileInput.style.visibility = "hidden"; - _this.hiddenFileInput.style.position = "absolute"; - _this.hiddenFileInput.style.top = "0"; - _this.hiddenFileInput.style.left = "0"; - _this.hiddenFileInput.style.height = "0"; - _this.hiddenFileInput.style.width = "0"; - document.body.appendChild(_this.hiddenFileInput); - return _this.hiddenFileInput.addEventListener("change", function() { - var file, files, _i, _len; - files = _this.hiddenFileInput.files; - if (files.length) { - for (_i = 0, _len = files.length; _i < _len; _i++) { - file = files[_i]; - _this.addFile(file); - } - } - return setupHiddenFileInput(); - }); - }; - })(this); - setupHiddenFileInput(); - } - this.URL = (_ref = window.URL) != null ? _ref : window.webkitURL; - _ref1 = this.events; - for (_i = 0, _len = _ref1.length; _i < _len; _i++) { - eventName = _ref1[_i]; - this.on(eventName, this.options[eventName]); - } - this.on("uploadprogress", (function(_this) { - return function() { - return _this.updateTotalUploadProgress(); - }; - })(this)); - this.on("removedfile", (function(_this) { - return function() { - return _this.updateTotalUploadProgress(); - }; - })(this)); - this.on("canceled", (function(_this) { - return function(file) { - return _this.emit("complete", file); - }; - })(this)); - this.on("complete", (function(_this) { - return function(file) { - if (_this.getUploadingFiles().length === 0 && _this.getQueuedFiles().length === 0) { - return setTimeout((function() { - return _this.emit("queuecomplete"); - }), 0); - } - }; - })(this)); - noPropagation = function(e) { - e.stopPropagation(); - if (e.preventDefault) { - return e.preventDefault(); - } else { - return e.returnValue = false; - } - }; - this.listeners = [ - { - element: this.element, - events: { - "dragstart": (function(_this) { - return function(e) { - return _this.emit("dragstart", e); - }; - })(this), - "dragenter": (function(_this) { - return function(e) { - noPropagation(e); - return _this.emit("dragenter", e); - }; - })(this), - "dragover": (function(_this) { - return function(e) { - var efct; - try { - efct = e.dataTransfer.effectAllowed; - } catch (_error) {} - e.dataTransfer.dropEffect = 'move' === efct || 'linkMove' === efct ? 'move' : 'copy'; - noPropagation(e); - return _this.emit("dragover", e); - }; - })(this), - "dragleave": (function(_this) { - return function(e) { - return _this.emit("dragleave", e); - }; - })(this), - "drop": (function(_this) { - return function(e) { - noPropagation(e); - return _this.drop(e); - }; - })(this), - "dragend": (function(_this) { - return function(e) { - return _this.emit("dragend", e); - }; - })(this) - } - } - ]; - this.clickableElements.forEach((function(_this) { - return function(clickableElement) { - return _this.listeners.push({ - element: clickableElement, - events: { - "click": function(evt) { - if ((clickableElement !== _this.element) || (evt.target === _this.element || Dropzone.elementInside(evt.target, _this.element.querySelector(".dz-message")))) { - return _this.hiddenFileInput.click(); - } - } - } - }); - }; - })(this)); - this.enable(); - return this.options.init.call(this); - }; - - Dropzone.prototype.destroy = function() { - var _ref; - this.disable(); - this.removeAllFiles(true); - if ((_ref = this.hiddenFileInput) != null ? _ref.parentNode : void 0) { - this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput); - this.hiddenFileInput = null; - } - delete this.element.dropzone; - return Dropzone.instances.splice(Dropzone.instances.indexOf(this), 1); - }; - - Dropzone.prototype.updateTotalUploadProgress = function() { - var activeFiles, file, totalBytes, totalBytesSent, totalUploadProgress, _i, _len, _ref; - totalBytesSent = 0; - totalBytes = 0; - activeFiles = this.getActiveFiles(); - if (activeFiles.length) { - _ref = this.getActiveFiles(); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - file = _ref[_i]; - totalBytesSent += file.upload.bytesSent; - totalBytes += file.upload.total; - } - totalUploadProgress = 100 * totalBytesSent / totalBytes; - } else { - totalUploadProgress = 100; - } - return this.emit("totaluploadprogress", totalUploadProgress, totalBytes, totalBytesSent); - }; - - Dropzone.prototype.getFallbackForm = function() { - var existingFallback, fields, fieldsString, form; - if (existingFallback = this.getExistingFallback()) { - return existingFallback; - } - fieldsString = "<div class=\"dz-fallback\">"; - if (this.options.dictFallbackText) { - fieldsString += "<p>" + this.options.dictFallbackText + "</p>"; - } - fieldsString += "<input type=\"file\" name=\"" + this.options.paramName + (this.options.uploadMultiple ? "[]" : "") + "\" " + (this.options.uploadMultiple ? 'multiple="multiple"' : void 0) + " /><input type=\"submit\" value=\"Upload!\"></div>"; - fields = Dropzone.createElement(fieldsString); - if (this.element.tagName !== "FORM") { - form = Dropzone.createElement("<form action=\"" + this.options.url + "\" enctype=\"multipart/form-data\" method=\"" + this.options.method + "\"></form>"); - form.appendChild(fields); - } else { - this.element.setAttribute("enctype", "multipart/form-data"); - this.element.setAttribute("method", this.options.method); - } - return form != null ? form : fields; - }; - - Dropzone.prototype.getExistingFallback = function() { - var fallback, getFallback, tagName, _i, _len, _ref; - getFallback = function(elements) { - var el, _i, _len; - for (_i = 0, _len = elements.length; _i < _len; _i++) { - el = elements[_i]; - if (/(^| )fallback($| )/.test(el.className)) { - return el; - } - } - }; - _ref = ["div", "form"]; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - tagName = _ref[_i]; - if (fallback = getFallback(this.element.getElementsByTagName(tagName))) { - return fallback; - } - } - }; - - Dropzone.prototype.setupEventListeners = function() { - var elementListeners, event, listener, _i, _len, _ref, _results; - _ref = this.listeners; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - elementListeners = _ref[_i]; - _results.push((function() { - var _ref1, _results1; - _ref1 = elementListeners.events; - _results1 = []; - for (event in _ref1) { - listener = _ref1[event]; - _results1.push(elementListeners.element.addEventListener(event, listener, false)); - } - return _results1; - })()); - } - return _results; - }; - - Dropzone.prototype.removeEventListeners = function() { - var elementListeners, event, listener, _i, _len, _ref, _results; - _ref = this.listeners; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - elementListeners = _ref[_i]; - _results.push((function() { - var _ref1, _results1; - _ref1 = elementListeners.events; - _results1 = []; - for (event in _ref1) { - listener = _ref1[event]; - _results1.push(elementListeners.element.removeEventListener(event, listener, false)); - } - return _results1; - })()); - } - return _results; - }; - - Dropzone.prototype.disable = function() { - var file, _i, _len, _ref, _results; - this.clickableElements.forEach(function(element) { - return element.classList.remove("dz-clickable"); - }); - this.removeEventListeners(); - _ref = this.files; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - file = _ref[_i]; - _results.push(this.cancelUpload(file)); - } - return _results; - }; - - Dropzone.prototype.enable = function() { - this.clickableElements.forEach(function(element) { - return element.classList.add("dz-clickable"); - }); - return this.setupEventListeners(); - }; - - Dropzone.prototype.filesize = function(size) { - var string; - if (size >= 1024 * 1024 * 1024 * 1024 / 10) { - size = size / (1024 * 1024 * 1024 * 1024 / 10); - string = "TiB"; - } else if (size >= 1024 * 1024 * 1024 / 10) { - size = size / (1024 * 1024 * 1024 / 10); - string = "GiB"; - } else if (size >= 1024 * 1024 / 10) { - size = size / (1024 * 1024 / 10); - string = "MiB"; - } else if (size >= 1024 / 10) { - size = size / (1024 / 10); - string = "KiB"; - } else { - size = size * 10; - string = "b"; - } - return "<strong>" + (Math.round(size) / 10) + "</strong> " + string; - }; - - Dropzone.prototype._updateMaxFilesReachedClass = function() { - if ((this.options.maxFiles != null) && this.getAcceptedFiles().length >= this.options.maxFiles) { - if (this.getAcceptedFiles().length === this.options.maxFiles) { - this.emit('maxfilesreached', this.files); - } - return this.element.classList.add("dz-max-files-reached"); - } else { - return this.element.classList.remove("dz-max-files-reached"); - } - }; - - Dropzone.prototype.drop = function(e) { - var files, items; - if (!e.dataTransfer) { - return; - } - this.emit("drop", e); - files = e.dataTransfer.files; - if (files.length) { - items = e.dataTransfer.items; - if (items && items.length && (items[0].webkitGetAsEntry != null)) { - this._addFilesFromItems(items); - } else { - this.handleFiles(files); - } - } - }; - - Dropzone.prototype.paste = function(e) { - var items, _ref; - if ((e != null ? (_ref = e.clipboardData) != null ? _ref.items : void 0 : void 0) == null) { - return; - } - this.emit("paste", e); - items = e.clipboardData.items; - if (items.length) { - return this._addFilesFromItems(items); - } - }; - - Dropzone.prototype.handleFiles = function(files) { - var file, _i, _len, _results; - _results = []; - for (_i = 0, _len = files.length; _i < _len; _i++) { - file = files[_i]; - _results.push(this.addFile(file)); - } - return _results; - }; - - Dropzone.prototype._addFilesFromItems = function(items) { - var entry, item, _i, _len, _results; - _results = []; - for (_i = 0, _len = items.length; _i < _len; _i++) { - item = items[_i]; - if ((item.webkitGetAsEntry != null) && (entry = item.webkitGetAsEntry())) { - if (entry.isFile) { - _results.push(this.addFile(item.getAsFile())); - } else if (entry.isDirectory) { - _results.push(this._addFilesFromDirectory(entry, entry.name)); - } else { - _results.push(void 0); - } - } else if (item.getAsFile != null) { - if ((item.kind == null) || item.kind === "file") { - _results.push(this.addFile(item.getAsFile())); - } else { - _results.push(void 0); - } - } else { - _results.push(void 0); - } - } - return _results; - }; - - Dropzone.prototype._addFilesFromDirectory = function(directory, path) { - var dirReader, entriesReader; - dirReader = directory.createReader(); - entriesReader = (function(_this) { - return function(entries) { - var entry, _i, _len; - for (_i = 0, _len = entries.length; _i < _len; _i++) { - entry = entries[_i]; - if (entry.isFile) { - entry.file(function(file) { - if (_this.options.ignoreHiddenFiles && file.name.substring(0, 1) === '.') { - return; - } - file.fullPath = "" + path + "/" + file.name; - return _this.addFile(file); - }); - } else if (entry.isDirectory) { - _this._addFilesFromDirectory(entry, "" + path + "/" + entry.name); - } - } - }; - })(this); - return dirReader.readEntries(entriesReader, function(error) { - return typeof console !== "undefined" && console !== null ? typeof console.log === "function" ? console.log(error) : void 0 : void 0; - }); - }; - - Dropzone.prototype.accept = function(file, done) { - if (file.size > this.options.maxFilesize * 1024 * 1024) { - return done(this.options.dictFileTooBig.replace("{{filesize}}", Math.round(file.size / 1024 / 10.24) / 100).replace("{{maxFilesize}}", this.options.maxFilesize)); - } else if (!Dropzone.isValidFile(file, this.options.acceptedFiles)) { - return done(this.options.dictInvalidFileType); - } else if ((this.options.maxFiles != null) && this.getAcceptedFiles().length >= this.options.maxFiles) { - done(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}", this.options.maxFiles)); - return this.emit("maxfilesexceeded", file); - } else { - return this.options.accept.call(this, file, done); - } - }; - - Dropzone.prototype.addFile = function(file) { - file.upload = { - progress: 0, - total: file.size, - bytesSent: 0 - }; - this.files.push(file); - file.status = Dropzone.ADDED; - this.emit("addedfile", file); - this._enqueueThumbnail(file); - return this.accept(file, (function(_this) { - return function(error) { - if (error) { - file.accepted = false; - _this._errorProcessing([file], error); - } else { - file.accepted = true; - if (_this.options.autoQueue) { - _this.enqueueFile(file); - } - } - return _this._updateMaxFilesReachedClass(); - }; - })(this)); - }; - - Dropzone.prototype.enqueueFiles = function(files) { - var file, _i, _len; - for (_i = 0, _len = files.length; _i < _len; _i++) { - file = files[_i]; - this.enqueueFile(file); - } - return null; - }; - - Dropzone.prototype.enqueueFile = function(file) { - if (file.status === Dropzone.ADDED && file.accepted === true) { - file.status = Dropzone.QUEUED; - if (this.options.autoProcessQueue) { - return setTimeout(((function(_this) { - return function() { - return _this.processQueue(); - }; - })(this)), 0); - } - } else { - throw new Error("This file can't be queued because it has already been processed or was rejected."); - } - }; - - Dropzone.prototype._thumbnailQueue = []; - - Dropzone.prototype._processingThumbnail = false; - - Dropzone.prototype._enqueueThumbnail = function(file) { - if (this.options.createImageThumbnails && file.type.match(/image.*/) && file.size <= this.options.maxThumbnailFilesize * 1024 * 1024) { - this._thumbnailQueue.push(file); - return setTimeout(((function(_this) { - return function() { - return _this._processThumbnailQueue(); - }; - })(this)), 0); - } - }; - - Dropzone.prototype._processThumbnailQueue = function() { - if (this._processingThumbnail || this._thumbnailQueue.length === 0) { - return; - } - this._processingThumbnail = true; - return this.createThumbnail(this._thumbnailQueue.shift(), (function(_this) { - return function() { - _this._processingThumbnail = false; - return _this._processThumbnailQueue(); - }; - })(this)); - }; - - Dropzone.prototype.removeFile = function(file) { - if (file.status === Dropzone.UPLOADING) { - this.cancelUpload(file); - } - this.files = without(this.files, file); - this.emit("removedfile", file); - if (this.files.length === 0) { - return this.emit("reset"); - } - }; - - Dropzone.prototype.removeAllFiles = function(cancelIfNecessary) { - var file, _i, _len, _ref; - if (cancelIfNecessary == null) { - cancelIfNecessary = false; - } - _ref = this.files.slice(); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - file = _ref[_i]; - if (file.status !== Dropzone.UPLOADING || cancelIfNecessary) { - this.removeFile(file); - } - } - return null; - }; - - Dropzone.prototype.createThumbnail = function(file, callback) { - var fileReader; - fileReader = new FileReader; - fileReader.onload = (function(_this) { - return function() { - var img; - img = document.createElement("img"); - img.onload = function() { - var canvas, ctx, resizeInfo, thumbnail, _ref, _ref1, _ref2, _ref3; - file.width = img.width; - file.height = img.height; - resizeInfo = _this.options.resize.call(_this, file); - if (resizeInfo.trgWidth == null) { - resizeInfo.trgWidth = _this.options.thumbnailWidth; - } - if (resizeInfo.trgHeight == null) { - resizeInfo.trgHeight = _this.options.thumbnailHeight; - } - canvas = document.createElement("canvas"); - ctx = canvas.getContext("2d"); - canvas.width = resizeInfo.trgWidth; - canvas.height = resizeInfo.trgHeight; - drawImageIOSFix(ctx, img, (_ref = resizeInfo.srcX) != null ? _ref : 0, (_ref1 = resizeInfo.srcY) != null ? _ref1 : 0, resizeInfo.srcWidth, resizeInfo.srcHeight, (_ref2 = resizeInfo.trgX) != null ? _ref2 : 0, (_ref3 = resizeInfo.trgY) != null ? _ref3 : 0, resizeInfo.trgWidth, resizeInfo.trgHeight); - thumbnail = canvas.toDataURL("image/png"); - _this.emit("thumbnail", file, thumbnail); - if (callback != null) { - return callback(); - } - }; - return img.src = fileReader.result; - }; - })(this); - return fileReader.readAsDataURL(file); - }; - - Dropzone.prototype.processQueue = function() { - var i, parallelUploads, processingLength, queuedFiles; - parallelUploads = this.options.parallelUploads; - processingLength = this.getUploadingFiles().length; - i = processingLength; - if (processingLength >= parallelUploads) { - return; - } - queuedFiles = this.getQueuedFiles(); - if (!(queuedFiles.length > 0)) { - return; - } - if (this.options.uploadMultiple) { - return this.processFiles(queuedFiles.slice(0, parallelUploads - processingLength)); - } else { - while (i < parallelUploads) { - if (!queuedFiles.length) { - return; - } - this.processFile(queuedFiles.shift()); - i++; - } - } - }; - - Dropzone.prototype.processFile = function(file) { - return this.processFiles([file]); - }; - - Dropzone.prototype.processFiles = function(files) { - var file, _i, _len; - for (_i = 0, _len = files.length; _i < _len; _i++) { - file = files[_i]; - file.processing = true; - file.status = Dropzone.UPLOADING; - this.emit("processing", file); - } - if (this.options.uploadMultiple) { - this.emit("processingmultiple", files); - } - return this.uploadFiles(files); - }; - - Dropzone.prototype._getFilesWithXhr = function(xhr) { - var file, files; - return files = (function() { - var _i, _len, _ref, _results; - _ref = this.files; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - file = _ref[_i]; - if (file.xhr === xhr) { - _results.push(file); - } - } - return _results; - }).call(this); - }; - - Dropzone.prototype.cancelUpload = function(file) { - var groupedFile, groupedFiles, _i, _j, _len, _len1, _ref; - if (file.status === Dropzone.UPLOADING) { - groupedFiles = this._getFilesWithXhr(file.xhr); - for (_i = 0, _len = groupedFiles.length; _i < _len; _i++) { - groupedFile = groupedFiles[_i]; - groupedFile.status = Dropzone.CANCELED; - } - file.xhr.abort(); - for (_j = 0, _len1 = groupedFiles.length; _j < _len1; _j++) { - groupedFile = groupedFiles[_j]; - this.emit("canceled", groupedFile); - } - if (this.options.uploadMultiple) { - this.emit("canceledmultiple", groupedFiles); - } - } else if ((_ref = file.status) === Dropzone.ADDED || _ref === Dropzone.QUEUED) { - file.status = Dropzone.CANCELED; - this.emit("canceled", file); - if (this.options.uploadMultiple) { - this.emit("canceledmultiple", [file]); - } - } - if (this.options.autoProcessQueue) { - return this.processQueue(); - } - }; - - Dropzone.prototype.uploadFile = function(file) { - return this.uploadFiles([file]); - }; - - Dropzone.prototype.uploadFiles = function(files) { - var file, formData, handleError, headerName, headerValue, headers, input, inputName, inputType, key, option, progressObj, response, updateProgress, value, xhr, _i, _j, _k, _l, _len, _len1, _len2, _len3, _len4, _m, _ref, _ref1, _ref2, _ref3, _ref4; - xhr = new XMLHttpRequest(); - for (_i = 0, _len = files.length; _i < _len; _i++) { - file = files[_i]; - file.xhr = xhr; - } - xhr.open(this.options.method, this.options.url, true); - xhr.withCredentials = !!this.options.withCredentials; - response = null; - handleError = (function(_this) { - return function() { - var _j, _len1, _results; - _results = []; - for (_j = 0, _len1 = files.length; _j < _len1; _j++) { - file = files[_j]; - _results.push(_this._errorProcessing(files, response || _this.options.dictResponseError.replace("{{statusCode}}", xhr.status), xhr)); - } - return _results; - }; - })(this); - updateProgress = (function(_this) { - return function(e) { - var allFilesFinished, progress, _j, _k, _l, _len1, _len2, _len3, _results; - if (e != null) { - progress = 100 * e.loaded / e.total; - for (_j = 0, _len1 = files.length; _j < _len1; _j++) { - file = files[_j]; - file.upload = { - progress: progress, - total: e.total, - bytesSent: e.loaded - }; - } - } else { - allFilesFinished = true; - progress = 100; - for (_k = 0, _len2 = files.length; _k < _len2; _k++) { - file = files[_k]; - if (!(file.upload.progress === 100 && file.upload.bytesSent === file.upload.total)) { - allFilesFinished = false; - } - file.upload.progress = progress; - file.upload.bytesSent = file.upload.total; - } - if (allFilesFinished) { - return; - } - } - _results = []; - for (_l = 0, _len3 = files.length; _l < _len3; _l++) { - file = files[_l]; - _results.push(_this.emit("uploadprogress", file, progress, file.upload.bytesSent)); - } - return _results; - }; - })(this); - xhr.onload = (function(_this) { - return function(e) { - var _ref; - if (files[0].status === Dropzone.CANCELED) { - return; - } - if (xhr.readyState !== 4) { - return; - } - response = xhr.responseText; - if (xhr.getResponseHeader("content-type") && ~xhr.getResponseHeader("content-type").indexOf("application/json")) { - try { - response = JSON.parse(response); - } catch (_error) { - e = _error; - response = "Invalid JSON response from server."; - } - } - updateProgress(); - if (!((200 <= (_ref = xhr.status) && _ref < 300))) { - return handleError(); - } else { - return _this._finished(files, response, e); - } - }; - })(this); - xhr.onerror = (function(_this) { - return function() { - if (files[0].status === Dropzone.CANCELED) { - return; - } - return handleError(); - }; - })(this); - progressObj = (_ref = xhr.upload) != null ? _ref : xhr; - progressObj.onprogress = updateProgress; - headers = { - "Accept": "application/json", - "Cache-Control": "no-cache", - "X-Requested-With": "XMLHttpRequest" - }; - if (this.options.headers) { - extend(headers, this.options.headers); - } - for (headerName in headers) { - headerValue = headers[headerName]; - xhr.setRequestHeader(headerName, headerValue); - } - formData = new FormData(); - if (this.options.params) { - _ref1 = this.options.params; - for (key in _ref1) { - value = _ref1[key]; - formData.append(key, value); - } - } - for (_j = 0, _len1 = files.length; _j < _len1; _j++) { - file = files[_j]; - this.emit("sending", file, xhr, formData); - } - if (this.options.uploadMultiple) { - this.emit("sendingmultiple", files, xhr, formData); - } - if (this.element.tagName === "FORM") { - _ref2 = this.element.querySelectorAll("input, textarea, select, button"); - for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) { - input = _ref2[_k]; - inputName = input.getAttribute("name"); - inputType = input.getAttribute("type"); - if (input.tagName === "SELECT" && input.hasAttribute("multiple")) { - _ref3 = input.options; - for (_l = 0, _len3 = _ref3.length; _l < _len3; _l++) { - option = _ref3[_l]; - if (option.selected) { - formData.append(inputName, option.value); - } - } - } else if (!inputType || ((_ref4 = inputType.toLowerCase()) !== "checkbox" && _ref4 !== "radio") || input.checked) { - formData.append(inputName, input.value); - } - } - } - for (_m = 0, _len4 = files.length; _m < _len4; _m++) { - file = files[_m]; - formData.append("" + this.options.paramName + (this.options.uploadMultiple ? "[]" : ""), file, file.name); - } - return xhr.send(formData); - }; - - Dropzone.prototype._finished = function(files, responseText, e) { - var file, _i, _len; - for (_i = 0, _len = files.length; _i < _len; _i++) { - file = files[_i]; - file.status = Dropzone.SUCCESS; - this.emit("success", file, responseText, e); - this.emit("complete", file); - } - if (this.options.uploadMultiple) { - this.emit("successmultiple", files, responseText, e); - this.emit("completemultiple", files); - } - if (this.options.autoProcessQueue) { - return this.processQueue(); - } - }; - - Dropzone.prototype._errorProcessing = function(files, message, xhr) { - var file, _i, _len; - for (_i = 0, _len = files.length; _i < _len; _i++) { - file = files[_i]; - file.status = Dropzone.ERROR; - this.emit("error", file, message, xhr); - this.emit("complete", file); - } - if (this.options.uploadMultiple) { - this.emit("errormultiple", files, message, xhr); - this.emit("completemultiple", files); - } - if (this.options.autoProcessQueue) { - return this.processQueue(); - } - }; - - return Dropzone; - - })(Em); - - Dropzone.version = "3.8.7"; - - Dropzone.options = {}; - - Dropzone.optionsForElement = function(element) { - if (element.getAttribute("id")) { - return Dropzone.options[camelize(element.getAttribute("id"))]; - } else { - return void 0; - } - }; - - Dropzone.instances = []; - - Dropzone.forElement = function(element) { - if (typeof element === "string") { - element = document.querySelector(element); - } - if ((element != null ? element.dropzone : void 0) == null) { - throw new Error("No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone."); - } - return element.dropzone; - }; - - Dropzone.autoDiscover = true; - - Dropzone.discover = function() { - var checkElements, dropzone, dropzones, _i, _len, _results; - if (document.querySelectorAll) { - dropzones = document.querySelectorAll(".dropzone"); - } else { - dropzones = []; - checkElements = function(elements) { - var el, _i, _len, _results; - _results = []; - for (_i = 0, _len = elements.length; _i < _len; _i++) { - el = elements[_i]; - if (/(^| )dropzone($| )/.test(el.className)) { - _results.push(dropzones.push(el)); - } else { - _results.push(void 0); - } - } - return _results; - }; - checkElements(document.getElementsByTagName("div")); - checkElements(document.getElementsByTagName("form")); - } - _results = []; - for (_i = 0, _len = dropzones.length; _i < _len; _i++) { - dropzone = dropzones[_i]; - if (Dropzone.optionsForElement(dropzone) !== false) { - _results.push(new Dropzone(dropzone)); - } else { - _results.push(void 0); - } - } - return _results; - }; - - Dropzone.blacklistedBrowsers = [/opera.*Macintosh.*version\/12/i]; - - Dropzone.isBrowserSupported = function() { - var capableBrowser, regex, _i, _len, _ref; - capableBrowser = true; - if (window.File && window.FileReader && window.FileList && window.Blob && window.FormData && document.querySelector) { - if (!("classList" in document.createElement("a"))) { - capableBrowser = false; - } else { - _ref = Dropzone.blacklistedBrowsers; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - regex = _ref[_i]; - if (regex.test(navigator.userAgent)) { - capableBrowser = false; - continue; - } - } - } - } else { - capableBrowser = false; - } - return capableBrowser; - }; - - without = function(list, rejectedItem) { - var item, _i, _len, _results; - _results = []; - for (_i = 0, _len = list.length; _i < _len; _i++) { - item = list[_i]; - if (item !== rejectedItem) { - _results.push(item); - } - } - return _results; - }; - - camelize = function(str) { - return str.replace(/[\-_](\w)/g, function(match) { - return match.charAt(1).toUpperCase(); - }); - }; - - Dropzone.createElement = function(string) { - var div; - div = document.createElement("div"); - div.innerHTML = string; - return div.childNodes[0]; - }; - - Dropzone.elementInside = function(element, container) { - if (element === container) { - return true; - } - while (element = element.parentNode) { - if (element === container) { - return true; - } - } - return false; - }; - - Dropzone.getElement = function(el, name) { - var element; - if (typeof el === "string") { - element = document.querySelector(el); - } else if (el.nodeType != null) { - element = el; - } - if (element == null) { - throw new Error("Invalid `" + name + "` option provided. Please provide a CSS selector or a plain HTML element."); - } - return element; - }; - - Dropzone.getElements = function(els, name) { - var e, el, elements, _i, _j, _len, _len1, _ref; - if (els instanceof Array) { - elements = []; - try { - for (_i = 0, _len = els.length; _i < _len; _i++) { - el = els[_i]; - elements.push(this.getElement(el, name)); - } - } catch (_error) { - e = _error; - elements = null; - } - } else if (typeof els === "string") { - elements = []; - _ref = document.querySelectorAll(els); - for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) { - el = _ref[_j]; - elements.push(el); - } - } else if (els.nodeType != null) { - elements = [els]; - } - if (!((elements != null) && elements.length)) { - throw new Error("Invalid `" + name + "` option provided. Please provide a CSS selector, a plain HTML element or a list of those."); - } - return elements; - }; - - Dropzone.confirm = function(question, accepted, rejected) { - if (window.confirm(question)) { - return accepted(); - } else if (rejected != null) { - return rejected(); - } - }; - - Dropzone.isValidFile = function(file, acceptedFiles) { - var baseMimeType, mimeType, validType, _i, _len; - if (!acceptedFiles) { - return true; - } - acceptedFiles = acceptedFiles.split(","); - mimeType = file.type; - baseMimeType = mimeType.replace(/\/.*$/, ""); - for (_i = 0, _len = acceptedFiles.length; _i < _len; _i++) { - validType = acceptedFiles[_i]; - validType = validType.trim(); - if (validType.charAt(0) === ".") { - if (file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1) { - return true; - } - } else if (/\/\*$/.test(validType)) { - if (baseMimeType === validType.replace(/\/.*$/, "")) { - return true; - } - } else { - if (mimeType === validType) { - return true; - } - } - } - return false; - }; - - if (typeof jQuery !== "undefined" && jQuery !== null) { - jQuery.fn.dropzone = function(options) { - return this.each(function() { - return new Dropzone(this, options); - }); - }; - } - - if (typeof module !== "undefined" && module !== null) { - module.exports = Dropzone; - } else { - window.Dropzone = Dropzone; - } - - Dropzone.ADDED = "added"; - - Dropzone.QUEUED = "queued"; - - Dropzone.ACCEPTED = Dropzone.QUEUED; - - Dropzone.UPLOADING = "uploading"; - - Dropzone.PROCESSING = Dropzone.UPLOADING; - - Dropzone.CANCELED = "canceled"; - - Dropzone.ERROR = "error"; - - Dropzone.SUCCESS = "success"; - - - /* - - Bugfix for iOS 6 and 7 - Source: http://stackoverflow.com/questions/11929099/html5-canvas-drawimage-ratio-bug-ios - based on the work of https://github.com/stomita/ios-imagefile-megapixel - */ - - detectVerticalSquash = function(img) { - var alpha, canvas, ctx, data, ey, ih, iw, py, ratio, sy; - iw = img.naturalWidth; - ih = img.naturalHeight; - canvas = document.createElement("canvas"); - canvas.width = 1; - canvas.height = ih; - ctx = canvas.getContext("2d"); - ctx.drawImage(img, 0, 0); - data = ctx.getImageData(0, 0, 1, ih).data; - sy = 0; - ey = ih; - py = ih; - while (py > sy) { - alpha = data[(py - 1) * 4 + 3]; - if (alpha === 0) { - ey = py; - } else { - sy = py; - } - py = (ey + sy) >> 1; - } - ratio = py / ih; - if (ratio === 0) { - return 1; - } else { - return ratio; - } - }; - - drawImageIOSFix = function(ctx, img, sx, sy, sw, sh, dx, dy, dw, dh) { - var vertSquashRatio; - vertSquashRatio = detectVerticalSquash(img); - return ctx.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh / vertSquashRatio); - }; - - - /* - * contentloaded.js - * - * Author: Diego Perini (diego.perini at gmail.com) - * Summary: cross-browser wrapper for DOMContentLoaded - * Updated: 20101020 - * License: MIT - * Version: 1.2 - * - * URL: - * http://javascript.nwbox.com/ContentLoaded/ - * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE - */ - - contentLoaded = function(win, fn) { - var add, doc, done, init, poll, pre, rem, root, top; - done = false; - top = true; - doc = win.document; - root = doc.documentElement; - add = (doc.addEventListener ? "addEventListener" : "attachEvent"); - rem = (doc.addEventListener ? "removeEventListener" : "detachEvent"); - pre = (doc.addEventListener ? "" : "on"); - init = function(e) { - if (e.type === "readystatechange" && doc.readyState !== "complete") { - return; - } - (e.type === "load" ? win : doc)[rem](pre + e.type, init, false); - if (!done && (done = true)) { - return fn.call(win, e.type || e); - } - }; - poll = function() { - var e; - try { - root.doScroll("left"); - } catch (_error) { - e = _error; - setTimeout(poll, 50); - return; - } - return init("poll"); - }; - if (doc.readyState !== "complete") { - if (doc.createEventObject && root.doScroll) { - try { - top = !win.frameElement; - } catch (_error) {} - if (top) { - poll(); - } - } - doc[add](pre + "DOMContentLoaded", init, false); - doc[add](pre + "readystatechange", init, false); - return win[add](pre + "load", init, false); - } - }; - - Dropzone._autoDiscoverFunction = function() { - if (Dropzone.autoDiscover) { - return Dropzone.discover(); - } - }; - - contentLoaded(window, Dropzone._autoDiscoverFunction); - - }).call(this); - - }); - - if (typeof exports == "object") { - module.exports = require("dropzone"); - } else if (typeof define == "function" && define.amd) { - define([], function(){ return require("dropzone"); }); - } else { - this["Dropzone"] = require("dropzone"); - } -})() diff --git a/assets/js/plugins/easypiechart/easypiechart.js b/assets/js/plugins/easypiechart/easypiechart.js deleted file mode 100644 index 659aef63..00000000 --- a/assets/js/plugins/easypiechart/easypiechart.js +++ /dev/null @@ -1,350 +0,0 @@ -/**! - * easyPieChart - * Lightweight plugin to render simple, animated and retina optimized pie charts - * - * @license - * @author Robert Fleischmann <rendro87@gmail.com> (http://robert-fleischmann.de) - * @version 2.1.5 - **/ - -(function(root, factory) { - if(typeof exports === 'object') { - module.exports = factory(); - } - else if(typeof define === 'function' && define.amd) { - define([], factory); - } - else { - root['EasyPieChart'] = factory(); - } -}(this, function() { - - /** - * Renderer to render the chart on a canvas object - * @param {DOMElement} el DOM element to host the canvas (root of the plugin) - * @param {object} options options object of the plugin - */ - var CanvasRenderer = function(el, options) { - var cachedBackground; - var canvas = document.createElement('canvas'); - - el.appendChild(canvas); - - if (typeof(G_vmlCanvasManager) !== 'undefined') { - G_vmlCanvasManager.initElement(canvas); - } - - var ctx = canvas.getContext('2d'); - - canvas.width = canvas.height = options.size; - - // canvas on retina devices - var scaleBy = 1; - if (window.devicePixelRatio > 1) { - scaleBy = window.devicePixelRatio; - canvas.style.width = canvas.style.height = [options.size, 'px'].join(''); - canvas.width = canvas.height = options.size * scaleBy; - ctx.scale(scaleBy, scaleBy); - } - - // move 0,0 coordinates to the center - ctx.translate(options.size / 2, options.size / 2); - - // rotate canvas -90deg - ctx.rotate((-1 / 2 + options.rotate / 180) * Math.PI); - - var radius = (options.size - options.lineWidth) / 2; - if (options.scaleColor && options.scaleLength) { - radius -= options.scaleLength + 2; // 2 is the distance between scale and bar - } - - // IE polyfill for Date - Date.now = Date.now || function() { - return +(new Date()); - }; - - /** - * Draw a circle around the center of the canvas - * @param {strong} color Valid CSS color string - * @param {number} lineWidth Width of the line in px - * @param {number} percent Percentage to draw (float between -1 and 1) - */ - var drawCircle = function(color, lineWidth, percent) { - percent = Math.min(Math.max(-1, percent || 0), 1); - var isNegative = percent <= 0 ? true : false; - - ctx.beginPath(); - ctx.arc(0, 0, radius, 0, Math.PI * 2 * percent, isNegative); - - ctx.strokeStyle = color; - ctx.lineWidth = lineWidth; - - ctx.stroke(); - }; - - /** - * Draw the scale of the chart - */ - var drawScale = function() { - var offset; - var length; - - ctx.lineWidth = 1; - ctx.fillStyle = options.scaleColor; - - ctx.save(); - for (var i = 24; i > 0; --i) { - if (i % 6 === 0) { - length = options.scaleLength; - offset = 0; - } else { - length = options.scaleLength * 0.6; - offset = options.scaleLength - length; - } - ctx.fillRect(-options.size/2 + offset, 0, length, 1); - ctx.rotate(Math.PI / 12); - } - ctx.restore(); - }; - - /** - * Request animation frame wrapper with polyfill - * @return {function} Request animation frame method or timeout fallback - */ - var reqAnimationFrame = (function() { - return window.requestAnimationFrame || - window.webkitRequestAnimationFrame || - window.mozRequestAnimationFrame || - function(callback) { - window.setTimeout(callback, 1000 / 60); - }; - }()); - - /** - * Draw the background of the plugin including the scale and the track - */ - var drawBackground = function() { - if(options.scaleColor) drawScale(); - if(options.trackColor) drawCircle(options.trackColor, options.lineWidth, 1); - }; - - /** - * Canvas accessor - */ - this.getCanvas = function() { - return canvas; - }; - - /** - * Canvas 2D context 'ctx' accessor - */ - this.getCtx = function() { - return ctx; - }; - - /** - * Clear the complete canvas - */ - this.clear = function() { - ctx.clearRect(options.size / -2, options.size / -2, options.size, options.size); - }; - - /** - * Draw the complete chart - * @param {number} percent Percent shown by the chart between -100 and 100 - */ - this.draw = function(percent) { - // do we need to render a background - if (!!options.scaleColor || !!options.trackColor) { - // getImageData and putImageData are supported - if (ctx.getImageData && ctx.putImageData) { - if (!cachedBackground) { - drawBackground(); - cachedBackground = ctx.getImageData(0, 0, options.size * scaleBy, options.size * scaleBy); - } else { - ctx.putImageData(cachedBackground, 0, 0); - } - } else { - this.clear(); - drawBackground(); - } - } else { - this.clear(); - } - - ctx.lineCap = options.lineCap; - - // if barcolor is a function execute it and pass the percent as a value - var color; - if (typeof(options.barColor) === 'function') { - color = options.barColor(percent); - } else { - color = options.barColor; - } - - // draw bar - drawCircle(color, options.lineWidth, percent / 100); - }.bind(this); - - /** - * Animate from some percent to some other percentage - * @param {number} from Starting percentage - * @param {number} to Final percentage - */ - this.animate = function(from, to) { - var startTime = Date.now(); - options.onStart(from, to); - var animation = function() { - var process = Math.min(Date.now() - startTime, options.animate.duration); - var currentValue = options.easing(this, process, from, to - from, options.animate.duration); - this.draw(currentValue); - options.onStep(from, to, currentValue); - if (process >= options.animate.duration) { - options.onStop(from, to); - } else { - reqAnimationFrame(animation); - } - }.bind(this); - - reqAnimationFrame(animation); - }.bind(this); - }; - - var EasyPieChart = function(el, opts) { - var defaultOptions = { - barColor: '#ef1e25', - trackColor: '#f9f9f9', - scaleColor: '#dfe0e0', - scaleLength: 5, - lineCap: 'round', - lineWidth: 3, - size: 110, - rotate: 0, - animate: { - duration: 1000, - enabled: true - }, - easing: function (x, t, b, c, d) { // more can be found here: http://gsgd.co.uk/sandbox/jquery/easing/ - t = t / (d/2); - if (t < 1) { - return c / 2 * t * t + b; - } - return -c/2 * ((--t)*(t-2) - 1) + b; - }, - onStart: function(from, to) { - return; - }, - onStep: function(from, to, currentValue) { - return; - }, - onStop: function(from, to) { - return; - } - }; - - // detect present renderer - if (typeof(CanvasRenderer) !== 'undefined') { - defaultOptions.renderer = CanvasRenderer; - } else if (typeof(SVGRenderer) !== 'undefined') { - defaultOptions.renderer = SVGRenderer; - } else { - throw new Error('Please load either the SVG- or the CanvasRenderer'); - } - - var options = {}; - var currentValue = 0; - - /** - * Initialize the plugin by creating the options object and initialize rendering - */ - var init = function() { - this.el = el; - this.options = options; - - // merge user options into default options - for (var i in defaultOptions) { - if (defaultOptions.hasOwnProperty(i)) { - options[i] = opts && typeof(opts[i]) !== 'undefined' ? opts[i] : defaultOptions[i]; - if (typeof(options[i]) === 'function') { - options[i] = options[i].bind(this); - } - } - } - - // check for jQuery easing - if (typeof(options.easing) === 'string' && typeof(jQuery) !== 'undefined' && jQuery.isFunction(jQuery.easing[options.easing])) { - options.easing = jQuery.easing[options.easing]; - } else { - options.easing = defaultOptions.easing; - } - - // process earlier animate option to avoid bc breaks - if (typeof(options.animate) === 'number') { - options.animate = { - duration: options.animate, - enabled: true - }; - } - - if (typeof(options.animate) === 'boolean' && !options.animate) { - options.animate = { - duration: 1000, - enabled: options.animate - }; - } - - // create renderer - this.renderer = new options.renderer(el, options); - - // initial draw - this.renderer.draw(currentValue); - - // initial update - if (el.dataset && el.dataset.percent) { - this.update(parseFloat(el.dataset.percent)); - } else if (el.getAttribute && el.getAttribute('data-percent')) { - this.update(parseFloat(el.getAttribute('data-percent'))); - } - }.bind(this); - - /** - * Update the value of the chart - * @param {number} newValue Number between 0 and 100 - * @return {object} Instance of the plugin for method chaining - */ - this.update = function(newValue) { - newValue = parseFloat(newValue); - if (options.animate.enabled) { - this.renderer.animate(currentValue, newValue); - } else { - this.renderer.draw(newValue); - } - currentValue = newValue; - return this; - }.bind(this); - - /** - * Disable animation - * @return {object} Instance of the plugin for method chaining - */ - this.disableAnimation = function() { - options.animate.enabled = false; - return this; - }; - - /** - * Enable animation - * @return {object} Instance of the plugin for method chaining - */ - this.enableAnimation = function() { - options.animate.enabled = true; - return this; - }; - - init(); - }; - - - return EasyPieChart; - -})); diff --git a/assets/js/plugins/easypiechart/jquery.easypiechart.js b/assets/js/plugins/easypiechart/jquery.easypiechart.js deleted file mode 100644 index 7c83522d..00000000 --- a/assets/js/plugins/easypiechart/jquery.easypiechart.js +++ /dev/null @@ -1,359 +0,0 @@ -/**! - * easyPieChart - * Lightweight plugin to render simple, animated and retina optimized pie charts - * - * @license - * @author Robert Fleischmann <rendro87@gmail.com> (http://robert-fleischmann.de) - * @version 2.1.5 - **/ - -(function(root, factory) { - if(typeof exports === 'object') { - module.exports = factory(require('jquery')); - } - else if(typeof define === 'function' && define.amd) { - define(['jquery'], factory); - } - else { - factory(root.jQuery); - } -}(this, function($) { - - /** - * Renderer to render the chart on a canvas object - * @param {DOMElement} el DOM element to host the canvas (root of the plugin) - * @param {object} options options object of the plugin - */ - var CanvasRenderer = function(el, options) { - var cachedBackground; - var canvas = document.createElement('canvas'); - - el.appendChild(canvas); - - if (typeof(G_vmlCanvasManager) !== 'undefined') { - G_vmlCanvasManager.initElement(canvas); - } - - var ctx = canvas.getContext('2d'); - - canvas.width = canvas.height = options.size; - - // canvas on retina devices - var scaleBy = 1; - if (window.devicePixelRatio > 1) { - scaleBy = window.devicePixelRatio; - canvas.style.width = canvas.style.height = [options.size, 'px'].join(''); - canvas.width = canvas.height = options.size * scaleBy; - ctx.scale(scaleBy, scaleBy); - } - - // move 0,0 coordinates to the center - ctx.translate(options.size / 2, options.size / 2); - - // rotate canvas -90deg - ctx.rotate((-1 / 2 + options.rotate / 180) * Math.PI); - - var radius = (options.size - options.lineWidth) / 2; - if (options.scaleColor && options.scaleLength) { - radius -= options.scaleLength + 2; // 2 is the distance between scale and bar - } - - // IE polyfill for Date - Date.now = Date.now || function() { - return +(new Date()); - }; - - /** - * Draw a circle around the center of the canvas - * @param {strong} color Valid CSS color string - * @param {number} lineWidth Width of the line in px - * @param {number} percent Percentage to draw (float between -1 and 1) - */ - var drawCircle = function(color, lineWidth, percent) { - percent = Math.min(Math.max(-1, percent || 0), 1); - var isNegative = percent <= 0 ? true : false; - - ctx.beginPath(); - ctx.arc(0, 0, radius, 0, Math.PI * 2 * percent, isNegative); - - ctx.strokeStyle = color; - ctx.lineWidth = lineWidth; - - ctx.stroke(); - }; - - /** - * Draw the scale of the chart - */ - var drawScale = function() { - var offset; - var length; - - ctx.lineWidth = 1; - ctx.fillStyle = options.scaleColor; - - ctx.save(); - for (var i = 24; i > 0; --i) { - if (i % 6 === 0) { - length = options.scaleLength; - offset = 0; - } else { - length = options.scaleLength * 0.6; - offset = options.scaleLength - length; - } - ctx.fillRect(-options.size/2 + offset, 0, length, 1); - ctx.rotate(Math.PI / 12); - } - ctx.restore(); - }; - - /** - * Request animation frame wrapper with polyfill - * @return {function} Request animation frame method or timeout fallback - */ - var reqAnimationFrame = (function() { - return window.requestAnimationFrame || - window.webkitRequestAnimationFrame || - window.mozRequestAnimationFrame || - function(callback) { - window.setTimeout(callback, 1000 / 60); - }; - }()); - - /** - * Draw the background of the plugin including the scale and the track - */ - var drawBackground = function() { - if(options.scaleColor) drawScale(); - if(options.trackColor) drawCircle(options.trackColor, options.lineWidth, 1); - }; - - /** - * Canvas accessor - */ - this.getCanvas = function() { - return canvas; - }; - - /** - * Canvas 2D context 'ctx' accessor - */ - this.getCtx = function() { - return ctx; - }; - - /** - * Clear the complete canvas - */ - this.clear = function() { - ctx.clearRect(options.size / -2, options.size / -2, options.size, options.size); - }; - - /** - * Draw the complete chart - * @param {number} percent Percent shown by the chart between -100 and 100 - */ - this.draw = function(percent) { - // do we need to render a background - if (!!options.scaleColor || !!options.trackColor) { - // getImageData and putImageData are supported - if (ctx.getImageData && ctx.putImageData) { - if (!cachedBackground) { - drawBackground(); - cachedBackground = ctx.getImageData(0, 0, options.size * scaleBy, options.size * scaleBy); - } else { - ctx.putImageData(cachedBackground, 0, 0); - } - } else { - this.clear(); - drawBackground(); - } - } else { - this.clear(); - } - - ctx.lineCap = options.lineCap; - - // if barcolor is a function execute it and pass the percent as a value - var color; - if (typeof(options.barColor) === 'function') { - color = options.barColor(percent); - } else { - color = options.barColor; - } - - // draw bar - drawCircle(color, options.lineWidth, percent / 100); - }.bind(this); - - /** - * Animate from some percent to some other percentage - * @param {number} from Starting percentage - * @param {number} to Final percentage - */ - this.animate = function(from, to) { - var startTime = Date.now(); - options.onStart(from, to); - var animation = function() { - var process = Math.min(Date.now() - startTime, options.animate.duration); - var currentValue = options.easing(this, process, from, to - from, options.animate.duration); - this.draw(currentValue); - options.onStep(from, to, currentValue); - if (process >= options.animate.duration) { - options.onStop(from, to); - } else { - reqAnimationFrame(animation); - } - }.bind(this); - - reqAnimationFrame(animation); - }.bind(this); - }; - - var EasyPieChart = function(el, opts) { - var defaultOptions = { - barColor: '#ef1e25', - trackColor: '#f9f9f9', - scaleColor: '#dfe0e0', - scaleLength: 5, - lineCap: 'round', - lineWidth: 3, - size: 110, - rotate: 0, - animate: { - duration: 1000, - enabled: true - }, - easing: function (x, t, b, c, d) { // more can be found here: http://gsgd.co.uk/sandbox/jquery/easing/ - t = t / (d/2); - if (t < 1) { - return c / 2 * t * t + b; - } - return -c/2 * ((--t)*(t-2) - 1) + b; - }, - onStart: function(from, to) { - return; - }, - onStep: function(from, to, currentValue) { - return; - }, - onStop: function(from, to) { - return; - } - }; - - // detect present renderer - if (typeof(CanvasRenderer) !== 'undefined') { - defaultOptions.renderer = CanvasRenderer; - } else if (typeof(SVGRenderer) !== 'undefined') { - defaultOptions.renderer = SVGRenderer; - } else { - throw new Error('Please load either the SVG- or the CanvasRenderer'); - } - - var options = {}; - var currentValue = 0; - - /** - * Initialize the plugin by creating the options object and initialize rendering - */ - var init = function() { - this.el = el; - this.options = options; - - // merge user options into default options - for (var i in defaultOptions) { - if (defaultOptions.hasOwnProperty(i)) { - options[i] = opts && typeof(opts[i]) !== 'undefined' ? opts[i] : defaultOptions[i]; - if (typeof(options[i]) === 'function') { - options[i] = options[i].bind(this); - } - } - } - - // check for jQuery easing - if (typeof(options.easing) === 'string' && typeof(jQuery) !== 'undefined' && jQuery.isFunction(jQuery.easing[options.easing])) { - options.easing = jQuery.easing[options.easing]; - } else { - options.easing = defaultOptions.easing; - } - - // process earlier animate option to avoid bc breaks - if (typeof(options.animate) === 'number') { - options.animate = { - duration: options.animate, - enabled: true - }; - } - - if (typeof(options.animate) === 'boolean' && !options.animate) { - options.animate = { - duration: 1000, - enabled: options.animate - }; - } - - // create renderer - this.renderer = new options.renderer(el, options); - - // initial draw - this.renderer.draw(currentValue); - - // initial update - if (el.dataset && el.dataset.percent) { - this.update(parseFloat(el.dataset.percent)); - } else if (el.getAttribute && el.getAttribute('data-percent')) { - this.update(parseFloat(el.getAttribute('data-percent'))); - } - }.bind(this); - - /** - * Update the value of the chart - * @param {number} newValue Number between 0 and 100 - * @return {object} Instance of the plugin for method chaining - */ - this.update = function(newValue) { - newValue = parseFloat(newValue); - if (options.animate.enabled) { - this.renderer.animate(currentValue, newValue); - } else { - this.renderer.draw(newValue); - } - currentValue = newValue; - return this; - }.bind(this); - - /** - * Disable animation - * @return {object} Instance of the plugin for method chaining - */ - this.disableAnimation = function() { - options.animate.enabled = false; - return this; - }; - - /** - * Enable animation - * @return {object} Instance of the plugin for method chaining - */ - this.enableAnimation = function() { - options.animate.enabled = true; - return this; - }; - - init(); - }; - - $.fn.easyPieChart = function(options) { - return this.each(function() { - var instanceOptions; - - if (!$.data(this, 'easyPieChart')) { - instanceOptions = $.extend({}, options, $(this).data()); - $.data(this, 'easyPieChart', new EasyPieChart(this, instanceOptions)); - } - }); - }; - - -})); diff --git a/assets/js/plugins/flot/curvedLines.js b/assets/js/plugins/flot/curvedLines.js deleted file mode 100644 index 12c1ad61..00000000 --- a/assets/js/plugins/flot/curvedLines.js +++ /dev/null @@ -1,315 +0,0 @@ -/* The MIT License - - Copyright (c) 2011 by Michael Zinsmaier and nergal.dev - Copyright (c) 2012 by Thomas Ritou - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - */ - -/* - - ____________________________________________________ - - what it is: - ____________________________________________________ - - curvedLines is a plugin for flot, that tries to display lines in a smoother way. - The plugin is based on nergal.dev's work https://code.google.com/p/flot/issues/detail?id=226 - and further extended with a mode that forces the min/max points of the curves to be on the - points. Both modes are achieved through adding of more data points - => 1) with large data sets you may get trouble - => 2) if you want to display the points too, you have to plot them as 2nd data series over the lines - - && 3) consecutive x data points are not allowed to have the same value - - This is version 0.5 of curvedLines so it will probably not work in every case. However - the basic form of use descirbed next works (: - - Feel free to further improve the code - - ____________________________________________________ - - how to use it: - ____________________________________________________ - - var d1 = [[5,5],[7,3],[9,12]]; - - var options = { series: { curvedLines: { active: true }}}; - - $.plot($("#placeholder"), [{data = d1, lines: { show: true}, curvedLines: {apply: true}}], options); - - _____________________________________________________ - - options: - _____________________________________________________ - - active: bool true => plugin can be used - apply: bool true => series will be drawn as curved line - fit: bool true => forces the max,mins of the curve to be on the datapoints - curvePointFactor int defines how many "virtual" points are used per "real" data point to - emulate the curvedLines (points total = real points * curvePointFactor) - fitPointDist: int defines the x axis distance of the additional two points that are used - to enforce the min max condition. - - + line options (since v0.5 curved lines use flots line implementation for drawing - => line options like fill, show ... are supported out of the box) - - */ - -/* - * v0.1 initial commit - * v0.15 negative values should work now (outcommented a negative -> 0 hook hope it does no harm) - * v0.2 added fill option (thanks to monemihir) and multi axis support (thanks to soewono effendi) - * v0.3 improved saddle handling and added basic handling of Dates - * v0.4 rewritten fill option (thomas ritou) mostly from original flot code (now fill between points rather than to graph bottom), corrected fill Opacity bug - * v0.5 rewritten instead of implementing a own draw function CurvedLines is now based on the processDatapoints flot hook (credits go to thomas ritou). - * This change breakes existing code however CurvedLines are now just many tiny straight lines to flot and therefore all flot lines options (like gradient fill, - * shadow) are now supported out of the box - * v0.6 flot 0.8 compatibility and some bug fixes - */ - -(function($) { - - var options = { - series : { - curvedLines : { - active : false, - apply: false, - fit : false, - curvePointFactor : 20, - fitPointDist : undefined - } - } - }; - - function init(plot) { - - plot.hooks.processOptions.push(processOptions); - - //if the plugin is active register processDatapoints method - function processOptions(plot, options) { - if (options.series.curvedLines.active) { - plot.hooks.processDatapoints.unshift(processDatapoints); - } - } - - //only if the plugin is active - function processDatapoints(plot, series, datapoints) { - var nrPoints = datapoints.points.length / datapoints.pointsize; - var EPSILON = 0.5; //pretty large epsilon but save - - if (series.curvedLines.apply == true && series.originSeries === undefined && nrPoints > (1 + EPSILON)) { - if (series.lines.fill) { - - var pointsTop = calculateCurvePoints(datapoints, series.curvedLines, 1) - ,pointsBottom = calculateCurvePoints(datapoints, series.curvedLines, 2); //flot makes sure for us that we've got a second y point if fill is true ! - - //Merge top and bottom curve - datapoints.pointsize = 3; - datapoints.points = []; - var j = 0; - var k = 0; - var i = 0; - var ps = 2; - while (i < pointsTop.length || j < pointsBottom.length) { - if (pointsTop[i] == pointsBottom[j]) { - datapoints.points[k] = pointsTop[i]; - datapoints.points[k + 1] = pointsTop[i + 1]; - datapoints.points[k + 2] = pointsBottom[j + 1]; - j += ps; - i += ps; - - } else if (pointsTop[i] < pointsBottom[j]) { - datapoints.points[k] = pointsTop[i]; - datapoints.points[k + 1] = pointsTop[i + 1]; - datapoints.points[k + 2] = k > 0 ? datapoints.points[k-1] : null; - i += ps; - } else { - datapoints.points[k] = pointsBottom[j]; - datapoints.points[k + 1] = k > 1 ? datapoints.points[k-2] : null; - datapoints.points[k + 2] = pointsBottom[j + 1]; - j += ps; - } - k += 3; - } - } else if (series.lines.lineWidth > 0) { - datapoints.points = calculateCurvePoints(datapoints, series.curvedLines, 1); - datapoints.pointsize = 2; - } - } - } - - //no real idea whats going on here code mainly from https://code.google.com/p/flot/issues/detail?id=226 - //if fit option is selected additional datapoints get inserted before the curve calculations in nergal.dev s code. - function calculateCurvePoints(datapoints, curvedLinesOptions, yPos) { - - var points = datapoints.points, ps = datapoints.pointsize; - var num = curvedLinesOptions.curvePointFactor * (points.length / ps); - - var xdata = new Array; - var ydata = new Array; - - var curX = -1; - var curY = -1; - var j = 0; - - if (curvedLinesOptions.fit) { - //insert a point before and after the "real" data point to force the line - //to have a max,min at the data point. - - var fpDist; - if(typeof curvedLinesOptions.fitPointDist == 'undefined') { - //estimate it - var minX = points[0]; - var maxX = points[points.length-ps]; - fpDist = (maxX - minX) / (500 * 100); //x range / (estimated pixel length of placeholder * factor) - } else { - //use user defined value - fpDist = curvedLinesOptions.fitPointDist; - } - - for (var i = 0; i < points.length; i += ps) { - - var frontX; - var backX; - curX = i; - curY = i + yPos; - - //add point X s - frontX = points[curX] - fpDist; - backX = points[curX] + fpDist; - - var factor = 2; - while (frontX == points[curX] || backX == points[curX]) { - //inside the ulp - frontX = points[curX] - (fpDist * factor); - backX = points[curX] + (fpDist * factor); - factor++; - } - - //add curve points - xdata[j] = frontX; - ydata[j] = points[curY]; - j++; - - xdata[j] = points[curX]; - ydata[j] = points[curY]; - j++; - - xdata[j] = backX; - ydata[j] = points[curY]; - j++; - } - } else { - //just use the datapoints - for (var i = 0; i < points.length; i += ps) { - curX = i; - curY = i + yPos; - - xdata[j] = points[curX]; - ydata[j] = points[curY]; - j++; - } - } - - var n = xdata.length; - - var y2 = new Array(); - var delta = new Array(); - y2[0] = 0; - y2[n - 1] = 0; - delta[0] = 0; - - for (var i = 1; i < n - 1; ++i) { - var d = (xdata[i + 1] - xdata[i - 1]); - if (d == 0) { - //point before current point and after current point need some space in between - return []; - } - - var s = (xdata[i] - xdata[i - 1]) / d; - var p = s * y2[i - 1] + 2; - y2[i] = (s - 1) / p; - delta[i] = (ydata[i + 1] - ydata[i]) / (xdata[i + 1] - xdata[i]) - (ydata[i] - ydata[i - 1]) / (xdata[i] - xdata[i - 1]); - delta[i] = (6 * delta[i] / (xdata[i + 1] - xdata[i - 1]) - s * delta[i - 1]) / p; - } - - for (var j = n - 2; j >= 0; --j) { - y2[j] = y2[j] * y2[j + 1] + delta[j]; - } - - // xmax - xmin / #points - var step = (xdata[n - 1] - xdata[0]) / (num - 1); - - var xnew = new Array; - var ynew = new Array; - var result = new Array; - - xnew[0] = xdata[0]; - ynew[0] = ydata[0]; - - result.push(xnew[0]); - result.push(ynew[0]); - - for ( j = 1; j < num; ++j) { - //new x point (sampling point for the created curve) - xnew[j] = xnew[0] + j * step; - - var max = n - 1; - var min = 0; - - while (max - min > 1) { - var k = Math.round((max + min) / 2); - if (xdata[k] > xnew[j]) { - max = k; - } else { - min = k; - } - } - - //found point one to the left and one to the right of generated new point - var h = (xdata[max] - xdata[min]); - - if (h == 0) { - //similar to above two points from original x data need some space between them - return []; - } - - var a = (xdata[max] - xnew[j]) / h; - var b = (xnew[j] - xdata[min]) / h; - - ynew[j] = a * ydata[min] + b * ydata[max] + ((a * a * a - a) * y2[min] + (b * b * b - b) * y2[max]) * (h * h) / 6; - - result.push(xnew[j]); - result.push(ynew[j]); - } - - return result; - } - - }//end init - - $.plot.plugins.push({ - init : init, - options : options, - name : 'curvedLines', - version : '0.5' - }); - -})(jQuery); diff --git a/assets/js/plugins/flot/excanvas.min.js b/assets/js/plugins/flot/excanvas.min.js deleted file mode 100644 index 12c74f7b..00000000 --- a/assets/js/plugins/flot/excanvas.min.js +++ /dev/null @@ -1 +0,0 @@ -if(!document.createElement("canvas").getContext){(function(){var z=Math;var K=z.round;var J=z.sin;var U=z.cos;var b=z.abs;var k=z.sqrt;var D=10;var F=D/2;function T(){return this.context_||(this.context_=new W(this))}var O=Array.prototype.slice;function G(i,j,m){var Z=O.call(arguments,2);return function(){return i.apply(j,Z.concat(O.call(arguments)))}}function AD(Z){return String(Z).replace(/&/g,"&amp;").replace(/"/g,"&quot;")}function r(i){if(!i.namespaces.g_vml_){i.namespaces.add("g_vml_","urn:schemas-microsoft-com:vml","#default#VML")}if(!i.namespaces.g_o_){i.namespaces.add("g_o_","urn:schemas-microsoft-com:office:office","#default#VML")}if(!i.styleSheets.ex_canvas_){var Z=i.createStyleSheet();Z.owningElement.id="ex_canvas_";Z.cssText="canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}"}}r(document);var E={init:function(Z){if(/MSIE/.test(navigator.userAgent)&&!window.opera){var i=Z||document;i.createElement("canvas");i.attachEvent("onreadystatechange",G(this.init_,this,i))}},init_:function(m){var j=m.getElementsByTagName("canvas");for(var Z=0;Z<j.length;Z++){this.initElement(j[Z])}},initElement:function(i){if(!i.getContext){i.getContext=T;r(i.ownerDocument);i.innerHTML="";i.attachEvent("onpropertychange",S);i.attachEvent("onresize",w);var Z=i.attributes;if(Z.width&&Z.width.specified){i.style.width=Z.width.nodeValue+"px"}else{i.width=i.clientWidth}if(Z.height&&Z.height.specified){i.style.height=Z.height.nodeValue+"px"}else{i.height=i.clientHeight}}return i}};function S(i){var Z=i.srcElement;switch(i.propertyName){case"width":Z.getContext().clearRect();Z.style.width=Z.attributes.width.nodeValue+"px";Z.firstChild.style.width=Z.clientWidth+"px";break;case"height":Z.getContext().clearRect();Z.style.height=Z.attributes.height.nodeValue+"px";Z.firstChild.style.height=Z.clientHeight+"px";break}}function w(i){var Z=i.srcElement;if(Z.firstChild){Z.firstChild.style.width=Z.clientWidth+"px";Z.firstChild.style.height=Z.clientHeight+"px"}}E.init();var I=[];for(var AC=0;AC<16;AC++){for(var AB=0;AB<16;AB++){I[AC*16+AB]=AC.toString(16)+AB.toString(16)}}function V(){return[[1,0,0],[0,1,0],[0,0,1]]}function d(m,j){var i=V();for(var Z=0;Z<3;Z++){for(var AF=0;AF<3;AF++){var p=0;for(var AE=0;AE<3;AE++){p+=m[Z][AE]*j[AE][AF]}i[Z][AF]=p}}return i}function Q(i,Z){Z.fillStyle=i.fillStyle;Z.lineCap=i.lineCap;Z.lineJoin=i.lineJoin;Z.lineWidth=i.lineWidth;Z.miterLimit=i.miterLimit;Z.shadowBlur=i.shadowBlur;Z.shadowColor=i.shadowColor;Z.shadowOffsetX=i.shadowOffsetX;Z.shadowOffsetY=i.shadowOffsetY;Z.strokeStyle=i.strokeStyle;Z.globalAlpha=i.globalAlpha;Z.font=i.font;Z.textAlign=i.textAlign;Z.textBaseline=i.textBaseline;Z.arcScaleX_=i.arcScaleX_;Z.arcScaleY_=i.arcScaleY_;Z.lineScale_=i.lineScale_}var B={aliceblue:"#F0F8FF",antiquewhite:"#FAEBD7",aquamarine:"#7FFFD4",azure:"#F0FFFF",beige:"#F5F5DC",bisque:"#FFE4C4",black:"#000000",blanchedalmond:"#FFEBCD",blueviolet:"#8A2BE2",brown:"#A52A2A",burlywood:"#DEB887",cadetblue:"#5F9EA0",chartreuse:"#7FFF00",chocolate:"#D2691E",coral:"#FF7F50",cornflowerblue:"#6495ED",cornsilk:"#FFF8DC",crimson:"#DC143C",cyan:"#00FFFF",darkblue:"#00008B",darkcyan:"#008B8B",darkgoldenrod:"#B8860B",darkgray:"#A9A9A9",darkgreen:"#006400",darkgrey:"#A9A9A9",darkkhaki:"#BDB76B",darkmagenta:"#8B008B",darkolivegreen:"#556B2F",darkorange:"#FF8C00",darkorchid:"#9932CC",darkred:"#8B0000",darksalmon:"#E9967A",darkseagreen:"#8FBC8F",darkslateblue:"#483D8B",darkslategray:"#2F4F4F",darkslategrey:"#2F4F4F",darkturquoise:"#00CED1",darkviolet:"#9400D3",deeppink:"#FF1493",deepskyblue:"#00BFFF",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1E90FF",firebrick:"#B22222",floralwhite:"#FFFAF0",forestgreen:"#228B22",gainsboro:"#DCDCDC",ghostwhite:"#F8F8FF",gold:"#FFD700",goldenrod:"#DAA520",grey:"#808080",greenyellow:"#ADFF2F",honeydew:"#F0FFF0",hotpink:"#FF69B4",indianred:"#CD5C5C",indigo:"#4B0082",ivory:"#FFFFF0",khaki:"#F0E68C",lavender:"#E6E6FA",lavenderblush:"#FFF0F5",lawngreen:"#7CFC00",lemonchiffon:"#FFFACD",lightblue:"#ADD8E6",lightcoral:"#F08080",lightcyan:"#E0FFFF",lightgoldenrodyellow:"#FAFAD2",lightgreen:"#90EE90",lightgrey:"#D3D3D3",lightpink:"#FFB6C1",lightsalmon:"#FFA07A",lightseagreen:"#20B2AA",lightskyblue:"#87CEFA",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#B0C4DE",lightyellow:"#FFFFE0",limegreen:"#32CD32",linen:"#FAF0E6",magenta:"#FF00FF",mediumaquamarine:"#66CDAA",mediumblue:"#0000CD",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",mediumseagreen:"#3CB371",mediumslateblue:"#7B68EE",mediumspringgreen:"#00FA9A",mediumturquoise:"#48D1CC",mediumvioletred:"#C71585",midnightblue:"#191970",mintcream:"#F5FFFA",mistyrose:"#FFE4E1",moccasin:"#FFE4B5",navajowhite:"#FFDEAD",oldlace:"#FDF5E6",olivedrab:"#6B8E23",orange:"#FFA500",orangered:"#FF4500",orchid:"#DA70D6",palegoldenrod:"#EEE8AA",palegreen:"#98FB98",paleturquoise:"#AFEEEE",palevioletred:"#DB7093",papayawhip:"#FFEFD5",peachpuff:"#FFDAB9",peru:"#CD853F",pink:"#FFC0CB",plum:"#DDA0DD",powderblue:"#B0E0E6",rosybrown:"#BC8F8F",royalblue:"#4169E1",saddlebrown:"#8B4513",salmon:"#FA8072",sandybrown:"#F4A460",seagreen:"#2E8B57",seashell:"#FFF5EE",sienna:"#A0522D",skyblue:"#87CEEB",slateblue:"#6A5ACD",slategray:"#708090",slategrey:"#708090",snow:"#FFFAFA",springgreen:"#00FF7F",steelblue:"#4682B4",tan:"#D2B48C",thistle:"#D8BFD8",tomato:"#FF6347",turquoise:"#40E0D0",violet:"#EE82EE",wheat:"#F5DEB3",whitesmoke:"#F5F5F5",yellowgreen:"#9ACD32"};function g(i){var m=i.indexOf("(",3);var Z=i.indexOf(")",m+1);var j=i.substring(m+1,Z).split(",");if(j.length==4&&i.substr(3,1)=="a"){alpha=Number(j[3])}else{j[3]=1}return j}function C(Z){return parseFloat(Z)/100}function N(i,j,Z){return Math.min(Z,Math.max(j,i))}function c(AF){var j,i,Z;h=parseFloat(AF[0])/360%360;if(h<0){h++}s=N(C(AF[1]),0,1);l=N(C(AF[2]),0,1);if(s==0){j=i=Z=l}else{var m=l<0.5?l*(1+s):l+s-l*s;var AE=2*l-m;j=A(AE,m,h+1/3);i=A(AE,m,h);Z=A(AE,m,h-1/3)}return"#"+I[Math.floor(j*255)]+I[Math.floor(i*255)]+I[Math.floor(Z*255)]}function A(i,Z,j){if(j<0){j++}if(j>1){j--}if(6*j<1){return i+(Z-i)*6*j}else{if(2*j<1){return Z}else{if(3*j<2){return i+(Z-i)*(2/3-j)*6}else{return i}}}}function Y(Z){var AE,p=1;Z=String(Z);if(Z.charAt(0)=="#"){AE=Z}else{if(/^rgb/.test(Z)){var m=g(Z);var AE="#",AF;for(var j=0;j<3;j++){if(m[j].indexOf("%")!=-1){AF=Math.floor(C(m[j])*255)}else{AF=Number(m[j])}AE+=I[N(AF,0,255)]}p=m[3]}else{if(/^hsl/.test(Z)){var m=g(Z);AE=c(m);p=m[3]}else{AE=B[Z]||Z}}}return{color:AE,alpha:p}}var L={style:"normal",variant:"normal",weight:"normal",size:10,family:"sans-serif"};var f={};function X(Z){if(f[Z]){return f[Z]}var m=document.createElement("div");var j=m.style;try{j.font=Z}catch(i){}return f[Z]={style:j.fontStyle||L.style,variant:j.fontVariant||L.variant,weight:j.fontWeight||L.weight,size:j.fontSize||L.size,family:j.fontFamily||L.family}}function P(j,i){var Z={};for(var AF in j){Z[AF]=j[AF]}var AE=parseFloat(i.currentStyle.fontSize),m=parseFloat(j.size);if(typeof j.size=="number"){Z.size=j.size}else{if(j.size.indexOf("px")!=-1){Z.size=m}else{if(j.size.indexOf("em")!=-1){Z.size=AE*m}else{if(j.size.indexOf("%")!=-1){Z.size=(AE/100)*m}else{if(j.size.indexOf("pt")!=-1){Z.size=m/0.75}else{Z.size=AE}}}}}Z.size*=0.981;return Z}function AA(Z){return Z.style+" "+Z.variant+" "+Z.weight+" "+Z.size+"px "+Z.family}function t(Z){switch(Z){case"butt":return"flat";case"round":return"round";case"square":default:return"square"}}function W(i){this.m_=V();this.mStack_=[];this.aStack_=[];this.currentPath_=[];this.strokeStyle="#000";this.fillStyle="#000";this.lineWidth=1;this.lineJoin="miter";this.lineCap="butt";this.miterLimit=D*1;this.globalAlpha=1;this.font="10px sans-serif";this.textAlign="left";this.textBaseline="alphabetic";this.canvas=i;var Z=i.ownerDocument.createElement("div");Z.style.width=i.clientWidth+"px";Z.style.height=i.clientHeight+"px";Z.style.overflow="hidden";Z.style.position="absolute";i.appendChild(Z);this.element_=Z;this.arcScaleX_=1;this.arcScaleY_=1;this.lineScale_=1}var M=W.prototype;M.clearRect=function(){if(this.textMeasureEl_){this.textMeasureEl_.removeNode(true);this.textMeasureEl_=null}this.element_.innerHTML=""};M.beginPath=function(){this.currentPath_=[]};M.moveTo=function(i,Z){var j=this.getCoords_(i,Z);this.currentPath_.push({type:"moveTo",x:j.x,y:j.y});this.currentX_=j.x;this.currentY_=j.y};M.lineTo=function(i,Z){var j=this.getCoords_(i,Z);this.currentPath_.push({type:"lineTo",x:j.x,y:j.y});this.currentX_=j.x;this.currentY_=j.y};M.bezierCurveTo=function(j,i,AI,AH,AG,AE){var Z=this.getCoords_(AG,AE);var AF=this.getCoords_(j,i);var m=this.getCoords_(AI,AH);e(this,AF,m,Z)};function e(Z,m,j,i){Z.currentPath_.push({type:"bezierCurveTo",cp1x:m.x,cp1y:m.y,cp2x:j.x,cp2y:j.y,x:i.x,y:i.y});Z.currentX_=i.x;Z.currentY_=i.y}M.quadraticCurveTo=function(AG,j,i,Z){var AF=this.getCoords_(AG,j);var AE=this.getCoords_(i,Z);var AH={x:this.currentX_+2/3*(AF.x-this.currentX_),y:this.currentY_+2/3*(AF.y-this.currentY_)};var m={x:AH.x+(AE.x-this.currentX_)/3,y:AH.y+(AE.y-this.currentY_)/3};e(this,AH,m,AE)};M.arc=function(AJ,AH,AI,AE,i,j){AI*=D;var AN=j?"at":"wa";var AK=AJ+U(AE)*AI-F;var AM=AH+J(AE)*AI-F;var Z=AJ+U(i)*AI-F;var AL=AH+J(i)*AI-F;if(AK==Z&&!j){AK+=0.125}var m=this.getCoords_(AJ,AH);var AG=this.getCoords_(AK,AM);var AF=this.getCoords_(Z,AL);this.currentPath_.push({type:AN,x:m.x,y:m.y,radius:AI,xStart:AG.x,yStart:AG.y,xEnd:AF.x,yEnd:AF.y})};M.rect=function(j,i,Z,m){this.moveTo(j,i);this.lineTo(j+Z,i);this.lineTo(j+Z,i+m);this.lineTo(j,i+m);this.closePath()};M.strokeRect=function(j,i,Z,m){var p=this.currentPath_;this.beginPath();this.moveTo(j,i);this.lineTo(j+Z,i);this.lineTo(j+Z,i+m);this.lineTo(j,i+m);this.closePath();this.stroke();this.currentPath_=p};M.fillRect=function(j,i,Z,m){var p=this.currentPath_;this.beginPath();this.moveTo(j,i);this.lineTo(j+Z,i);this.lineTo(j+Z,i+m);this.lineTo(j,i+m);this.closePath();this.fill();this.currentPath_=p};M.createLinearGradient=function(i,m,Z,j){var p=new v("gradient");p.x0_=i;p.y0_=m;p.x1_=Z;p.y1_=j;return p};M.createRadialGradient=function(m,AE,j,i,p,Z){var AF=new v("gradientradial");AF.x0_=m;AF.y0_=AE;AF.r0_=j;AF.x1_=i;AF.y1_=p;AF.r1_=Z;return AF};M.drawImage=function(AO,j){var AH,AF,AJ,AV,AM,AK,AQ,AX;var AI=AO.runtimeStyle.width;var AN=AO.runtimeStyle.height;AO.runtimeStyle.width="auto";AO.runtimeStyle.height="auto";var AG=AO.width;var AT=AO.height;AO.runtimeStyle.width=AI;AO.runtimeStyle.height=AN;if(arguments.length==3){AH=arguments[1];AF=arguments[2];AM=AK=0;AQ=AJ=AG;AX=AV=AT}else{if(arguments.length==5){AH=arguments[1];AF=arguments[2];AJ=arguments[3];AV=arguments[4];AM=AK=0;AQ=AG;AX=AT}else{if(arguments.length==9){AM=arguments[1];AK=arguments[2];AQ=arguments[3];AX=arguments[4];AH=arguments[5];AF=arguments[6];AJ=arguments[7];AV=arguments[8]}else{throw Error("Invalid number of arguments")}}}var AW=this.getCoords_(AH,AF);var m=AQ/2;var i=AX/2;var AU=[];var Z=10;var AE=10;AU.push(" <g_vml_:group",' coordsize="',D*Z,",",D*AE,'"',' coordorigin="0,0"',' style="width:',Z,"px;height:",AE,"px;position:absolute;");if(this.m_[0][0]!=1||this.m_[0][1]||this.m_[1][1]!=1||this.m_[1][0]){var p=[];p.push("M11=",this.m_[0][0],",","M12=",this.m_[1][0],",","M21=",this.m_[0][1],",","M22=",this.m_[1][1],",","Dx=",K(AW.x/D),",","Dy=",K(AW.y/D),"");var AS=AW;var AR=this.getCoords_(AH+AJ,AF);var AP=this.getCoords_(AH,AF+AV);var AL=this.getCoords_(AH+AJ,AF+AV);AS.x=z.max(AS.x,AR.x,AP.x,AL.x);AS.y=z.max(AS.y,AR.y,AP.y,AL.y);AU.push("padding:0 ",K(AS.x/D),"px ",K(AS.y/D),"px 0;filter:progid:DXImageTransform.Microsoft.Matrix(",p.join(""),", sizingmethod='clip');")}else{AU.push("top:",K(AW.y/D),"px;left:",K(AW.x/D),"px;")}AU.push(' ">','<g_vml_:image src="',AO.src,'"',' style="width:',D*AJ,"px;"," height:",D*AV,'px"',' cropleft="',AM/AG,'"',' croptop="',AK/AT,'"',' cropright="',(AG-AM-AQ)/AG,'"',' cropbottom="',(AT-AK-AX)/AT,'"'," />","</g_vml_:group>");this.element_.insertAdjacentHTML("BeforeEnd",AU.join(""))};M.stroke=function(AM){var m=10;var AN=10;var AE=5000;var AG={x:null,y:null};var AL={x:null,y:null};for(var AH=0;AH<this.currentPath_.length;AH+=AE){var AK=[];var AF=false;AK.push("<g_vml_:shape",' filled="',!!AM,'"',' style="position:absolute;width:',m,"px;height:",AN,'px;"',' coordorigin="0,0"',' coordsize="',D*m,",",D*AN,'"',' stroked="',!AM,'"',' path="');var AO=false;for(var AI=AH;AI<Math.min(AH+AE,this.currentPath_.length);AI++){if(AI%AE==0&&AI>0){AK.push(" m ",K(this.currentPath_[AI-1].x),",",K(this.currentPath_[AI-1].y))}var Z=this.currentPath_[AI];var AJ;switch(Z.type){case"moveTo":AJ=Z;AK.push(" m ",K(Z.x),",",K(Z.y));break;case"lineTo":AK.push(" l ",K(Z.x),",",K(Z.y));break;case"close":AK.push(" x ");Z=null;break;case"bezierCurveTo":AK.push(" c ",K(Z.cp1x),",",K(Z.cp1y),",",K(Z.cp2x),",",K(Z.cp2y),",",K(Z.x),",",K(Z.y));break;case"at":case"wa":AK.push(" ",Z.type," ",K(Z.x-this.arcScaleX_*Z.radius),",",K(Z.y-this.arcScaleY_*Z.radius)," ",K(Z.x+this.arcScaleX_*Z.radius),",",K(Z.y+this.arcScaleY_*Z.radius)," ",K(Z.xStart),",",K(Z.yStart)," ",K(Z.xEnd),",",K(Z.yEnd));break}if(Z){if(AG.x==null||Z.x<AG.x){AG.x=Z.x}if(AL.x==null||Z.x>AL.x){AL.x=Z.x}if(AG.y==null||Z.y<AG.y){AG.y=Z.y}if(AL.y==null||Z.y>AL.y){AL.y=Z.y}}}AK.push(' ">');if(!AM){R(this,AK)}else{a(this,AK,AG,AL)}AK.push("</g_vml_:shape>");this.element_.insertAdjacentHTML("beforeEnd",AK.join(""))}};function R(j,AE){var i=Y(j.strokeStyle);var m=i.color;var p=i.alpha*j.globalAlpha;var Z=j.lineScale_*j.lineWidth;if(Z<1){p*=Z}AE.push("<g_vml_:stroke",' opacity="',p,'"',' joinstyle="',j.lineJoin,'"',' miterlimit="',j.miterLimit,'"',' endcap="',t(j.lineCap),'"',' weight="',Z,'px"',' color="',m,'" />')}function a(AO,AG,Ah,AP){var AH=AO.fillStyle;var AY=AO.arcScaleX_;var AX=AO.arcScaleY_;var Z=AP.x-Ah.x;var m=AP.y-Ah.y;if(AH instanceof v){var AL=0;var Ac={x:0,y:0};var AU=0;var AK=1;if(AH.type_=="gradient"){var AJ=AH.x0_/AY;var j=AH.y0_/AX;var AI=AH.x1_/AY;var Aj=AH.y1_/AX;var Ag=AO.getCoords_(AJ,j);var Af=AO.getCoords_(AI,Aj);var AE=Af.x-Ag.x;var p=Af.y-Ag.y;AL=Math.atan2(AE,p)*180/Math.PI;if(AL<0){AL+=360}if(AL<0.000001){AL=0}}else{var Ag=AO.getCoords_(AH.x0_,AH.y0_);Ac={x:(Ag.x-Ah.x)/Z,y:(Ag.y-Ah.y)/m};Z/=AY*D;m/=AX*D;var Aa=z.max(Z,m);AU=2*AH.r0_/Aa;AK=2*AH.r1_/Aa-AU}var AS=AH.colors_;AS.sort(function(Ak,i){return Ak.offset-i.offset});var AN=AS.length;var AR=AS[0].color;var AQ=AS[AN-1].color;var AW=AS[0].alpha*AO.globalAlpha;var AV=AS[AN-1].alpha*AO.globalAlpha;var Ab=[];for(var Ae=0;Ae<AN;Ae++){var AM=AS[Ae];Ab.push(AM.offset*AK+AU+" "+AM.color)}AG.push('<g_vml_:fill type="',AH.type_,'"',' method="none" focus="100%"',' color="',AR,'"',' color2="',AQ,'"',' colors="',Ab.join(","),'"',' opacity="',AV,'"',' g_o_:opacity2="',AW,'"',' angle="',AL,'"',' focusposition="',Ac.x,",",Ac.y,'" />')}else{if(AH instanceof u){if(Z&&m){var AF=-Ah.x;var AZ=-Ah.y;AG.push("<g_vml_:fill",' position="',AF/Z*AY*AY,",",AZ/m*AX*AX,'"',' type="tile"',' src="',AH.src_,'" />')}}else{var Ai=Y(AO.fillStyle);var AT=Ai.color;var Ad=Ai.alpha*AO.globalAlpha;AG.push('<g_vml_:fill color="',AT,'" opacity="',Ad,'" />')}}}M.fill=function(){this.stroke(true)};M.closePath=function(){this.currentPath_.push({type:"close"})};M.getCoords_=function(j,i){var Z=this.m_;return{x:D*(j*Z[0][0]+i*Z[1][0]+Z[2][0])-F,y:D*(j*Z[0][1]+i*Z[1][1]+Z[2][1])-F}};M.save=function(){var Z={};Q(this,Z);this.aStack_.push(Z);this.mStack_.push(this.m_);this.m_=d(V(),this.m_)};M.restore=function(){if(this.aStack_.length){Q(this.aStack_.pop(),this);this.m_=this.mStack_.pop()}};function H(Z){return isFinite(Z[0][0])&&isFinite(Z[0][1])&&isFinite(Z[1][0])&&isFinite(Z[1][1])&&isFinite(Z[2][0])&&isFinite(Z[2][1])}function y(i,Z,j){if(!H(Z)){return }i.m_=Z;if(j){var p=Z[0][0]*Z[1][1]-Z[0][1]*Z[1][0];i.lineScale_=k(b(p))}}M.translate=function(j,i){var Z=[[1,0,0],[0,1,0],[j,i,1]];y(this,d(Z,this.m_),false)};M.rotate=function(i){var m=U(i);var j=J(i);var Z=[[m,j,0],[-j,m,0],[0,0,1]];y(this,d(Z,this.m_),false)};M.scale=function(j,i){this.arcScaleX_*=j;this.arcScaleY_*=i;var Z=[[j,0,0],[0,i,0],[0,0,1]];y(this,d(Z,this.m_),true)};M.transform=function(p,m,AF,AE,i,Z){var j=[[p,m,0],[AF,AE,0],[i,Z,1]];y(this,d(j,this.m_),true)};M.setTransform=function(AE,p,AG,AF,j,i){var Z=[[AE,p,0],[AG,AF,0],[j,i,1]];y(this,Z,true)};M.drawText_=function(AK,AI,AH,AN,AG){var AM=this.m_,AQ=1000,i=0,AP=AQ,AF={x:0,y:0},AE=[];var Z=P(X(this.font),this.element_);var j=AA(Z);var AR=this.element_.currentStyle;var p=this.textAlign.toLowerCase();switch(p){case"left":case"center":case"right":break;case"end":p=AR.direction=="ltr"?"right":"left";break;case"start":p=AR.direction=="rtl"?"right":"left";break;default:p="left"}switch(this.textBaseline){case"hanging":case"top":AF.y=Z.size/1.75;break;case"middle":break;default:case null:case"alphabetic":case"ideographic":case"bottom":AF.y=-Z.size/2.25;break}switch(p){case"right":i=AQ;AP=0.05;break;case"center":i=AP=AQ/2;break}var AO=this.getCoords_(AI+AF.x,AH+AF.y);AE.push('<g_vml_:line from="',-i,' 0" to="',AP,' 0.05" ',' coordsize="100 100" coordorigin="0 0"',' filled="',!AG,'" stroked="',!!AG,'" style="position:absolute;width:1px;height:1px;">');if(AG){R(this,AE)}else{a(this,AE,{x:-i,y:0},{x:AP,y:Z.size})}var AL=AM[0][0].toFixed(3)+","+AM[1][0].toFixed(3)+","+AM[0][1].toFixed(3)+","+AM[1][1].toFixed(3)+",0,0";var AJ=K(AO.x/D)+","+K(AO.y/D);AE.push('<g_vml_:skew on="t" matrix="',AL,'" ',' offset="',AJ,'" origin="',i,' 0" />','<g_vml_:path textpathok="true" />','<g_vml_:textpath on="true" string="',AD(AK),'" style="v-text-align:',p,";font:",AD(j),'" /></g_vml_:line>');this.element_.insertAdjacentHTML("beforeEnd",AE.join(""))};M.fillText=function(j,Z,m,i){this.drawText_(j,Z,m,i,false)};M.strokeText=function(j,Z,m,i){this.drawText_(j,Z,m,i,true)};M.measureText=function(j){if(!this.textMeasureEl_){var Z='<span style="position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;"></span>';this.element_.insertAdjacentHTML("beforeEnd",Z);this.textMeasureEl_=this.element_.lastChild}var i=this.element_.ownerDocument;this.textMeasureEl_.innerHTML="";this.textMeasureEl_.style.font=this.font;this.textMeasureEl_.appendChild(i.createTextNode(j));return{width:this.textMeasureEl_.offsetWidth}};M.clip=function(){};M.arcTo=function(){};M.createPattern=function(i,Z){return new u(i,Z)};function v(Z){this.type_=Z;this.x0_=0;this.y0_=0;this.r0_=0;this.x1_=0;this.y1_=0;this.r1_=0;this.colors_=[]}v.prototype.addColorStop=function(i,Z){Z=Y(Z);this.colors_.push({offset:i,color:Z.color,alpha:Z.alpha})};function u(i,Z){q(i);switch(Z){case"repeat":case null:case"":this.repetition_="repeat";break;case"repeat-x":case"repeat-y":case"no-repeat":this.repetition_=Z;break;default:n("SYNTAX_ERR")}this.src_=i.src;this.width_=i.width;this.height_=i.height}function n(Z){throw new o(Z)}function q(Z){if(!Z||Z.nodeType!=1||Z.tagName!="IMG"){n("TYPE_MISMATCH_ERR")}if(Z.readyState!="complete"){n("INVALID_STATE_ERR")}}function o(Z){this.code=this[Z];this.message=Z+": DOM Exception "+this.code}var x=o.prototype=new Error;x.INDEX_SIZE_ERR=1;x.DOMSTRING_SIZE_ERR=2;x.HIERARCHY_REQUEST_ERR=3;x.WRONG_DOCUMENT_ERR=4;x.INVALID_CHARACTER_ERR=5;x.NO_DATA_ALLOWED_ERR=6;x.NO_MODIFICATION_ALLOWED_ERR=7;x.NOT_FOUND_ERR=8;x.NOT_SUPPORTED_ERR=9;x.INUSE_ATTRIBUTE_ERR=10;x.INVALID_STATE_ERR=11;x.SYNTAX_ERR=12;x.INVALID_MODIFICATION_ERR=13;x.NAMESPACE_ERR=14;x.INVALID_ACCESS_ERR=15;x.VALIDATION_ERR=16;x.TYPE_MISMATCH_ERR=17;G_vmlCanvasManager=E;CanvasRenderingContext2D=W;CanvasGradient=v;CanvasPattern=u;DOMException=o})()}; \ No newline at end of file diff --git a/assets/js/plugins/flot/jquery.flot.js b/assets/js/plugins/flot/jquery.flot.js deleted file mode 100644 index 39f3e4cf..00000000 --- a/assets/js/plugins/flot/jquery.flot.js +++ /dev/null @@ -1,3168 +0,0 @@ -/* Javascript plotting library for jQuery, version 0.8.3. - -Copyright (c) 2007-2014 IOLA and Ole Laursen. -Licensed under the MIT license. - -*/ - -// first an inline dependency, jquery.colorhelpers.js, we inline it here -// for convenience - -/* Plugin for jQuery for working with colors. - * - * Version 1.1. - * - * Inspiration from jQuery color animation plugin by John Resig. - * - * Released under the MIT license by Ole Laursen, October 2009. - * - * Examples: - * - * $.color.parse("#fff").scale('rgb', 0.25).add('a', -0.5).toString() - * var c = $.color.extract($("#mydiv"), 'background-color'); - * console.log(c.r, c.g, c.b, c.a); - * $.color.make(100, 50, 25, 0.4).toString() // returns "rgba(100,50,25,0.4)" - * - * Note that .scale() and .add() return the same modified object - * instead of making a new one. - * - * V. 1.1: Fix error handling so e.g. parsing an empty string does - * produce a color rather than just crashing. - */ -(function($){$.color={};$.color.make=function(r,g,b,a){var o={};o.r=r||0;o.g=g||0;o.b=b||0;o.a=a!=null?a:1;o.add=function(c,d){for(var i=0;i<c.length;++i)o[c.charAt(i)]+=d;return o.normalize()};o.scale=function(c,f){for(var i=0;i<c.length;++i)o[c.charAt(i)]*=f;return o.normalize()};o.toString=function(){if(o.a>=1){return"rgb("+[o.r,o.g,o.b].join(",")+")"}else{return"rgba("+[o.r,o.g,o.b,o.a].join(",")+")"}};o.normalize=function(){function clamp(min,value,max){return value<min?min:value>max?max:value}o.r=clamp(0,parseInt(o.r),255);o.g=clamp(0,parseInt(o.g),255);o.b=clamp(0,parseInt(o.b),255);o.a=clamp(0,o.a,1);return o};o.clone=function(){return $.color.make(o.r,o.b,o.g,o.a)};return o.normalize()};$.color.extract=function(elem,css){var c;do{c=elem.css(css).toLowerCase();if(c!=""&&c!="transparent")break;elem=elem.parent()}while(elem.length&&!$.nodeName(elem.get(0),"body"));if(c=="rgba(0, 0, 0, 0)")c="transparent";return $.color.parse(c)};$.color.parse=function(str){var res,m=$.color.make;if(res=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10));if(res=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10),parseFloat(res[4]));if(res=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55);if(res=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55,parseFloat(res[4]));if(res=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str))return m(parseInt(res[1],16),parseInt(res[2],16),parseInt(res[3],16));if(res=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str))return m(parseInt(res[1]+res[1],16),parseInt(res[2]+res[2],16),parseInt(res[3]+res[3],16));var name=$.trim(str).toLowerCase();if(name=="transparent")return m(255,255,255,0);else{res=lookupColors[name]||[0,0,0];return m(res[0],res[1],res[2])}};var lookupColors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery); - -// the actual Flot code -(function($) { - - // Cache the prototype hasOwnProperty for faster access - - var hasOwnProperty = Object.prototype.hasOwnProperty; - - // A shim to provide 'detach' to jQuery versions prior to 1.4. Using a DOM - // operation produces the same effect as detach, i.e. removing the element - // without touching its jQuery data. - - // Do not merge this into Flot 0.9, since it requires jQuery 1.4.4+. - - if (!$.fn.detach) { - $.fn.detach = function() { - return this.each(function() { - if (this.parentNode) { - this.parentNode.removeChild( this ); - } - }); - }; - } - - /////////////////////////////////////////////////////////////////////////// - // The Canvas object is a wrapper around an HTML5 <canvas> tag. - // - // @constructor - // @param {string} cls List of classes to apply to the canvas. - // @param {element} container Element onto which to append the canvas. - // - // Requiring a container is a little iffy, but unfortunately canvas - // operations don't work unless the canvas is attached to the DOM. - - function Canvas(cls, container) { - - var element = container.children("." + cls)[0]; - - if (element == null) { - - element = document.createElement("canvas"); - element.className = cls; - - $(element).css({ direction: "ltr", position: "absolute", left: 0, top: 0 }) - .appendTo(container); - - // If HTML5 Canvas isn't available, fall back to [Ex|Flash]canvas - - if (!element.getContext) { - if (window.G_vmlCanvasManager) { - element = window.G_vmlCanvasManager.initElement(element); - } else { - throw new Error("Canvas is not available. If you're using IE with a fall-back such as Excanvas, then there's either a mistake in your conditional include, or the page has no DOCTYPE and is rendering in Quirks Mode."); - } - } - } - - this.element = element; - - var context = this.context = element.getContext("2d"); - - // Determine the screen's ratio of physical to device-independent - // pixels. This is the ratio between the canvas width that the browser - // advertises and the number of pixels actually present in that space. - - // The iPhone 4, for example, has a device-independent width of 320px, - // but its screen is actually 640px wide. It therefore has a pixel - // ratio of 2, while most normal devices have a ratio of 1. - - var devicePixelRatio = window.devicePixelRatio || 1, - backingStoreRatio = - context.webkitBackingStorePixelRatio || - context.mozBackingStorePixelRatio || - context.msBackingStorePixelRatio || - context.oBackingStorePixelRatio || - context.backingStorePixelRatio || 1; - - this.pixelRatio = devicePixelRatio / backingStoreRatio; - - // Size the canvas to match the internal dimensions of its container - - this.resize(container.width(), container.height()); - - // Collection of HTML div layers for text overlaid onto the canvas - - this.textContainer = null; - this.text = {}; - - // Cache of text fragments and metrics, so we can avoid expensively - // re-calculating them when the plot is re-rendered in a loop. - - this._textCache = {}; - } - - // Resizes the canvas to the given dimensions. - // - // @param {number} width New width of the canvas, in pixels. - // @param {number} width New height of the canvas, in pixels. - - Canvas.prototype.resize = function(width, height) { - - if (width <= 0 || height <= 0) { - throw new Error("Invalid dimensions for plot, width = " + width + ", height = " + height); - } - - var element = this.element, - context = this.context, - pixelRatio = this.pixelRatio; - - // Resize the canvas, increasing its density based on the display's - // pixel ratio; basically giving it more pixels without increasing the - // size of its element, to take advantage of the fact that retina - // displays have that many more pixels in the same advertised space. - - // Resizing should reset the state (excanvas seems to be buggy though) - - if (this.width != width) { - element.width = width * pixelRatio; - element.style.width = width + "px"; - this.width = width; - } - - if (this.height != height) { - element.height = height * pixelRatio; - element.style.height = height + "px"; - this.height = height; - } - - // Save the context, so we can reset in case we get replotted. The - // restore ensure that we're really back at the initial state, and - // should be safe even if we haven't saved the initial state yet. - - context.restore(); - context.save(); - - // Scale the coordinate space to match the display density; so even though we - // may have twice as many pixels, we still want lines and other drawing to - // appear at the same size; the extra pixels will just make them crisper. - - context.scale(pixelRatio, pixelRatio); - }; - - // Clears the entire canvas area, not including any overlaid HTML text - - Canvas.prototype.clear = function() { - this.context.clearRect(0, 0, this.width, this.height); - }; - - // Finishes rendering the canvas, including managing the text overlay. - - Canvas.prototype.render = function() { - - var cache = this._textCache; - - // For each text layer, add elements marked as active that haven't - // already been rendered, and remove those that are no longer active. - - for (var layerKey in cache) { - if (hasOwnProperty.call(cache, layerKey)) { - - var layer = this.getTextLayer(layerKey), - layerCache = cache[layerKey]; - - layer.hide(); - - for (var styleKey in layerCache) { - if (hasOwnProperty.call(layerCache, styleKey)) { - var styleCache = layerCache[styleKey]; - for (var key in styleCache) { - if (hasOwnProperty.call(styleCache, key)) { - - var positions = styleCache[key].positions; - - for (var i = 0, position; position = positions[i]; i++) { - if (position.active) { - if (!position.rendered) { - layer.append(position.element); - position.rendered = true; - } - } else { - positions.splice(i--, 1); - if (position.rendered) { - position.element.detach(); - } - } - } - - if (positions.length == 0) { - delete styleCache[key]; - } - } - } - } - } - - layer.show(); - } - } - }; - - // Creates (if necessary) and returns the text overlay container. - // - // @param {string} classes String of space-separated CSS classes used to - // uniquely identify the text layer. - // @return {object} The jQuery-wrapped text-layer div. - - Canvas.prototype.getTextLayer = function(classes) { - - var layer = this.text[classes]; - - // Create the text layer if it doesn't exist - - if (layer == null) { - - // Create the text layer container, if it doesn't exist - - if (this.textContainer == null) { - this.textContainer = $("<div class='flot-text'></div>") - .css({ - position: "absolute", - top: 0, - left: 0, - bottom: 0, - right: 0, - 'font-size': "smaller", - color: "#545454" - }) - .insertAfter(this.element); - } - - layer = this.text[classes] = $("<div></div>") - .addClass(classes) - .css({ - position: "absolute", - top: 0, - left: 0, - bottom: 0, - right: 0 - }) - .appendTo(this.textContainer); - } - - return layer; - }; - - // Creates (if necessary) and returns a text info object. - // - // The object looks like this: - // - // { - // width: Width of the text's wrapper div. - // height: Height of the text's wrapper div. - // element: The jQuery-wrapped HTML div containing the text. - // positions: Array of positions at which this text is drawn. - // } - // - // The positions array contains objects that look like this: - // - // { - // active: Flag indicating whether the text should be visible. - // rendered: Flag indicating whether the text is currently visible. - // element: The jQuery-wrapped HTML div containing the text. - // x: X coordinate at which to draw the text. - // y: Y coordinate at which to draw the text. - // } - // - // Each position after the first receives a clone of the original element. - // - // The idea is that that the width, height, and general 'identity' of the - // text is constant no matter where it is placed; the placements are a - // secondary property. - // - // Canvas maintains a cache of recently-used text info objects; getTextInfo - // either returns the cached element or creates a new entry. - // - // @param {string} layer A string of space-separated CSS classes uniquely - // identifying the layer containing this text. - // @param {string} text Text string to retrieve info for. - // @param {(string|object)=} font Either a string of space-separated CSS - // classes or a font-spec object, defining the text's font and style. - // @param {number=} angle Angle at which to rotate the text, in degrees. - // Angle is currently unused, it will be implemented in the future. - // @param {number=} width Maximum width of the text before it wraps. - // @return {object} a text info object. - - Canvas.prototype.getTextInfo = function(layer, text, font, angle, width) { - - var textStyle, layerCache, styleCache, info; - - // Cast the value to a string, in case we were given a number or such - - text = "" + text; - - // If the font is a font-spec object, generate a CSS font definition - - if (typeof font === "object") { - textStyle = font.style + " " + font.variant + " " + font.weight + " " + font.size + "px/" + font.lineHeight + "px " + font.family; - } else { - textStyle = font; - } - - // Retrieve (or create) the cache for the text's layer and styles - - layerCache = this._textCache[layer]; - - if (layerCache == null) { - layerCache = this._textCache[layer] = {}; - } - - styleCache = layerCache[textStyle]; - - if (styleCache == null) { - styleCache = layerCache[textStyle] = {}; - } - - info = styleCache[text]; - - // If we can't find a matching element in our cache, create a new one - - if (info == null) { - - var element = $("<div></div>").html(text) - .css({ - position: "absolute", - 'max-width': width, - top: -9999 - }) - .appendTo(this.getTextLayer(layer)); - - if (typeof font === "object") { - element.css({ - font: textStyle, - color: font.color - }); - } else if (typeof font === "string") { - element.addClass(font); - } - - info = styleCache[text] = { - width: element.outerWidth(true), - height: element.outerHeight(true), - element: element, - positions: [] - }; - - element.detach(); - } - - return info; - }; - - // Adds a text string to the canvas text overlay. - // - // The text isn't drawn immediately; it is marked as rendering, which will - // result in its addition to the canvas on the next render pass. - // - // @param {string} layer A string of space-separated CSS classes uniquely - // identifying the layer containing this text. - // @param {number} x X coordinate at which to draw the text. - // @param {number} y Y coordinate at which to draw the text. - // @param {string} text Text string to draw. - // @param {(string|object)=} font Either a string of space-separated CSS - // classes or a font-spec object, defining the text's font and style. - // @param {number=} angle Angle at which to rotate the text, in degrees. - // Angle is currently unused, it will be implemented in the future. - // @param {number=} width Maximum width of the text before it wraps. - // @param {string=} halign Horizontal alignment of the text; either "left", - // "center" or "right". - // @param {string=} valign Vertical alignment of the text; either "top", - // "middle" or "bottom". - - Canvas.prototype.addText = function(layer, x, y, text, font, angle, width, halign, valign) { - - var info = this.getTextInfo(layer, text, font, angle, width), - positions = info.positions; - - // Tweak the div's position to match the text's alignment - - if (halign == "center") { - x -= info.width / 2; - } else if (halign == "right") { - x -= info.width; - } - - if (valign == "middle") { - y -= info.height / 2; - } else if (valign == "bottom") { - y -= info.height; - } - - // Determine whether this text already exists at this position. - // If so, mark it for inclusion in the next render pass. - - for (var i = 0, position; position = positions[i]; i++) { - if (position.x == x && position.y == y) { - position.active = true; - return; - } - } - - // If the text doesn't exist at this position, create a new entry - - // For the very first position we'll re-use the original element, - // while for subsequent ones we'll clone it. - - position = { - active: true, - rendered: false, - element: positions.length ? info.element.clone() : info.element, - x: x, - y: y - }; - - positions.push(position); - - // Move the element to its final position within the container - - position.element.css({ - top: Math.round(y), - left: Math.round(x), - 'text-align': halign // In case the text wraps - }); - }; - - // Removes one or more text strings from the canvas text overlay. - // - // If no parameters are given, all text within the layer is removed. - // - // Note that the text is not immediately removed; it is simply marked as - // inactive, which will result in its removal on the next render pass. - // This avoids the performance penalty for 'clear and redraw' behavior, - // where we potentially get rid of all text on a layer, but will likely - // add back most or all of it later, as when redrawing axes, for example. - // - // @param {string} layer A string of space-separated CSS classes uniquely - // identifying the layer containing this text. - // @param {number=} x X coordinate of the text. - // @param {number=} y Y coordinate of the text. - // @param {string=} text Text string to remove. - // @param {(string|object)=} font Either a string of space-separated CSS - // classes or a font-spec object, defining the text's font and style. - // @param {number=} angle Angle at which the text is rotated, in degrees. - // Angle is currently unused, it will be implemented in the future. - - Canvas.prototype.removeText = function(layer, x, y, text, font, angle) { - if (text == null) { - var layerCache = this._textCache[layer]; - if (layerCache != null) { - for (var styleKey in layerCache) { - if (hasOwnProperty.call(layerCache, styleKey)) { - var styleCache = layerCache[styleKey]; - for (var key in styleCache) { - if (hasOwnProperty.call(styleCache, key)) { - var positions = styleCache[key].positions; - for (var i = 0, position; position = positions[i]; i++) { - position.active = false; - } - } - } - } - } - } - } else { - var positions = this.getTextInfo(layer, text, font, angle).positions; - for (var i = 0, position; position = positions[i]; i++) { - if (position.x == x && position.y == y) { - position.active = false; - } - } - } - }; - - /////////////////////////////////////////////////////////////////////////// - // The top-level container for the entire plot. - - function Plot(placeholder, data_, options_, plugins) { - // data is on the form: - // [ series1, series2 ... ] - // where series is either just the data as [ [x1, y1], [x2, y2], ... ] - // or { data: [ [x1, y1], [x2, y2], ... ], label: "some label", ... } - - var series = [], - options = { - // the color theme used for graphs - colors: ["#edc240", "#afd8f8", "#cb4b4b", "#4da74d", "#9440ed"], - legend: { - show: true, - noColumns: 1, // number of colums in legend table - labelFormatter: null, // fn: string -> string - labelBoxBorderColor: "#ccc", // border color for the little label boxes - container: null, // container (as jQuery object) to put legend in, null means default on top of graph - position: "ne", // position of default legend container within plot - margin: 5, // distance from grid edge to default legend container within plot - backgroundColor: null, // null means auto-detect - backgroundOpacity: 0.85, // set to 0 to avoid background - sorted: null // default to no legend sorting - }, - xaxis: { - show: null, // null = auto-detect, true = always, false = never - position: "bottom", // or "top" - mode: null, // null or "time" - font: null, // null (derived from CSS in placeholder) or object like { size: 11, lineHeight: 13, style: "italic", weight: "bold", family: "sans-serif", variant: "small-caps" } - color: null, // base color, labels, ticks - tickColor: null, // possibly different color of ticks, e.g. "rgba(0,0,0,0.15)" - transform: null, // null or f: number -> number to transform axis - inverseTransform: null, // if transform is set, this should be the inverse function - min: null, // min. value to show, null means set automatically - max: null, // max. value to show, null means set automatically - autoscaleMargin: null, // margin in % to add if auto-setting min/max - ticks: null, // either [1, 3] or [[1, "a"], 3] or (fn: axis info -> ticks) or app. number of ticks for auto-ticks - tickFormatter: null, // fn: number -> string - labelWidth: null, // size of tick labels in pixels - labelHeight: null, - reserveSpace: null, // whether to reserve space even if axis isn't shown - tickLength: null, // size in pixels of ticks, or "full" for whole line - alignTicksWithAxis: null, // axis number or null for no sync - tickDecimals: null, // no. of decimals, null means auto - tickSize: null, // number or [number, "unit"] - minTickSize: null // number or [number, "unit"] - }, - yaxis: { - autoscaleMargin: 0.02, - position: "left" // or "right" - }, - xaxes: [], - yaxes: [], - series: { - points: { - show: false, - radius: 3, - lineWidth: 2, // in pixels - fill: true, - fillColor: "#ffffff", - symbol: "circle" // or callback - }, - lines: { - // we don't put in show: false so we can see - // whether lines were actively disabled - lineWidth: 2, // in pixels - fill: false, - fillColor: null, - steps: false - // Omit 'zero', so we can later default its value to - // match that of the 'fill' option. - }, - bars: { - show: false, - lineWidth: 2, // in pixels - barWidth: 1, // in units of the x axis - fill: true, - fillColor: null, - align: "left", // "left", "right", or "center" - horizontal: false, - zero: true - }, - shadowSize: 3, - highlightColor: null - }, - grid: { - show: true, - aboveData: false, - color: "#545454", // primary color used for outline and labels - backgroundColor: null, // null for transparent, else color - borderColor: null, // set if different from the grid color - tickColor: null, // color for the ticks, e.g. "rgba(0,0,0,0.15)" - margin: 0, // distance from the canvas edge to the grid - labelMargin: 5, // in pixels - axisMargin: 8, // in pixels - borderWidth: 2, // in pixels - minBorderMargin: null, // in pixels, null means taken from points radius - markings: null, // array of ranges or fn: axes -> array of ranges - markingsColor: "#f4f4f4", - markingsLineWidth: 2, - // interactive stuff - clickable: false, - hoverable: false, - autoHighlight: true, // highlight in case mouse is near - mouseActiveRadius: 10 // how far the mouse can be away to activate an item - }, - interaction: { - redrawOverlayInterval: 1000/60 // time between updates, -1 means in same flow - }, - hooks: {} - }, - surface = null, // the canvas for the plot itself - overlay = null, // canvas for interactive stuff on top of plot - eventHolder = null, // jQuery object that events should be bound to - ctx = null, octx = null, - xaxes = [], yaxes = [], - plotOffset = { left: 0, right: 0, top: 0, bottom: 0}, - plotWidth = 0, plotHeight = 0, - hooks = { - processOptions: [], - processRawData: [], - processDatapoints: [], - processOffset: [], - drawBackground: [], - drawSeries: [], - draw: [], - bindEvents: [], - drawOverlay: [], - shutdown: [] - }, - plot = this; - - // public functions - plot.setData = setData; - plot.setupGrid = setupGrid; - plot.draw = draw; - plot.getPlaceholder = function() { return placeholder; }; - plot.getCanvas = function() { return surface.element; }; - plot.getPlotOffset = function() { return plotOffset; }; - plot.width = function () { return plotWidth; }; - plot.height = function () { return plotHeight; }; - plot.offset = function () { - var o = eventHolder.offset(); - o.left += plotOffset.left; - o.top += plotOffset.top; - return o; - }; - plot.getData = function () { return series; }; - plot.getAxes = function () { - var res = {}, i; - $.each(xaxes.concat(yaxes), function (_, axis) { - if (axis) - res[axis.direction + (axis.n != 1 ? axis.n : "") + "axis"] = axis; - }); - return res; - }; - plot.getXAxes = function () { return xaxes; }; - plot.getYAxes = function () { return yaxes; }; - plot.c2p = canvasToAxisCoords; - plot.p2c = axisToCanvasCoords; - plot.getOptions = function () { return options; }; - plot.highlight = highlight; - plot.unhighlight = unhighlight; - plot.triggerRedrawOverlay = triggerRedrawOverlay; - plot.pointOffset = function(point) { - return { - left: parseInt(xaxes[axisNumber(point, "x") - 1].p2c(+point.x) + plotOffset.left, 10), - top: parseInt(yaxes[axisNumber(point, "y") - 1].p2c(+point.y) + plotOffset.top, 10) - }; - }; - plot.shutdown = shutdown; - plot.destroy = function () { - shutdown(); - placeholder.removeData("plot").empty(); - - series = []; - options = null; - surface = null; - overlay = null; - eventHolder = null; - ctx = null; - octx = null; - xaxes = []; - yaxes = []; - hooks = null; - highlights = []; - plot = null; - }; - plot.resize = function () { - var width = placeholder.width(), - height = placeholder.height(); - surface.resize(width, height); - overlay.resize(width, height); - }; - - // public attributes - plot.hooks = hooks; - - // initialize - initPlugins(plot); - parseOptions(options_); - setupCanvases(); - setData(data_); - setupGrid(); - draw(); - bindEvents(); - - - function executeHooks(hook, args) { - args = [plot].concat(args); - for (var i = 0; i < hook.length; ++i) - hook[i].apply(this, args); - } - - function initPlugins() { - - // References to key classes, allowing plugins to modify them - - var classes = { - Canvas: Canvas - }; - - for (var i = 0; i < plugins.length; ++i) { - var p = plugins[i]; - p.init(plot, classes); - if (p.options) - $.extend(true, options, p.options); - } - } - - function parseOptions(opts) { - - $.extend(true, options, opts); - - // $.extend merges arrays, rather than replacing them. When less - // colors are provided than the size of the default palette, we - // end up with those colors plus the remaining defaults, which is - // not expected behavior; avoid it by replacing them here. - - if (opts && opts.colors) { - options.colors = opts.colors; - } - - if (options.xaxis.color == null) - options.xaxis.color = $.color.parse(options.grid.color).scale('a', 0.22).toString(); - if (options.yaxis.color == null) - options.yaxis.color = $.color.parse(options.grid.color).scale('a', 0.22).toString(); - - if (options.xaxis.tickColor == null) // grid.tickColor for back-compatibility - options.xaxis.tickColor = options.grid.tickColor || options.xaxis.color; - if (options.yaxis.tickColor == null) // grid.tickColor for back-compatibility - options.yaxis.tickColor = options.grid.tickColor || options.yaxis.color; - - if (options.grid.borderColor == null) - options.grid.borderColor = options.grid.color; - if (options.grid.tickColor == null) - options.grid.tickColor = $.color.parse(options.grid.color).scale('a', 0.22).toString(); - - // Fill in defaults for axis options, including any unspecified - // font-spec fields, if a font-spec was provided. - - // If no x/y axis options were provided, create one of each anyway, - // since the rest of the code assumes that they exist. - - var i, axisOptions, axisCount, - fontSize = placeholder.css("font-size"), - fontSizeDefault = fontSize ? +fontSize.replace("px", "") : 13, - fontDefaults = { - style: placeholder.css("font-style"), - size: Math.round(0.8 * fontSizeDefault), - variant: placeholder.css("font-variant"), - weight: placeholder.css("font-weight"), - family: placeholder.css("font-family") - }; - - axisCount = options.xaxes.length || 1; - for (i = 0; i < axisCount; ++i) { - - axisOptions = options.xaxes[i]; - if (axisOptions && !axisOptions.tickColor) { - axisOptions.tickColor = axisOptions.color; - } - - axisOptions = $.extend(true, {}, options.xaxis, axisOptions); - options.xaxes[i] = axisOptions; - - if (axisOptions.font) { - axisOptions.font = $.extend({}, fontDefaults, axisOptions.font); - if (!axisOptions.font.color) { - axisOptions.font.color = axisOptions.color; - } - if (!axisOptions.font.lineHeight) { - axisOptions.font.lineHeight = Math.round(axisOptions.font.size * 1.15); - } - } - } - - axisCount = options.yaxes.length || 1; - for (i = 0; i < axisCount; ++i) { - - axisOptions = options.yaxes[i]; - if (axisOptions && !axisOptions.tickColor) { - axisOptions.tickColor = axisOptions.color; - } - - axisOptions = $.extend(true, {}, options.yaxis, axisOptions); - options.yaxes[i] = axisOptions; - - if (axisOptions.font) { - axisOptions.font = $.extend({}, fontDefaults, axisOptions.font); - if (!axisOptions.font.color) { - axisOptions.font.color = axisOptions.color; - } - if (!axisOptions.font.lineHeight) { - axisOptions.font.lineHeight = Math.round(axisOptions.font.size * 1.15); - } - } - } - - // backwards compatibility, to be removed in future - if (options.xaxis.noTicks && options.xaxis.ticks == null) - options.xaxis.ticks = options.xaxis.noTicks; - if (options.yaxis.noTicks && options.yaxis.ticks == null) - options.yaxis.ticks = options.yaxis.noTicks; - if (options.x2axis) { - options.xaxes[1] = $.extend(true, {}, options.xaxis, options.x2axis); - options.xaxes[1].position = "top"; - // Override the inherit to allow the axis to auto-scale - if (options.x2axis.min == null) { - options.xaxes[1].min = null; - } - if (options.x2axis.max == null) { - options.xaxes[1].max = null; - } - } - if (options.y2axis) { - options.yaxes[1] = $.extend(true, {}, options.yaxis, options.y2axis); - options.yaxes[1].position = "right"; - // Override the inherit to allow the axis to auto-scale - if (options.y2axis.min == null) { - options.yaxes[1].min = null; - } - if (options.y2axis.max == null) { - options.yaxes[1].max = null; - } - } - if (options.grid.coloredAreas) - options.grid.markings = options.grid.coloredAreas; - if (options.grid.coloredAreasColor) - options.grid.markingsColor = options.grid.coloredAreasColor; - if (options.lines) - $.extend(true, options.series.lines, options.lines); - if (options.points) - $.extend(true, options.series.points, options.points); - if (options.bars) - $.extend(true, options.series.bars, options.bars); - if (options.shadowSize != null) - options.series.shadowSize = options.shadowSize; - if (options.highlightColor != null) - options.series.highlightColor = options.highlightColor; - - // save options on axes for future reference - for (i = 0; i < options.xaxes.length; ++i) - getOrCreateAxis(xaxes, i + 1).options = options.xaxes[i]; - for (i = 0; i < options.yaxes.length; ++i) - getOrCreateAxis(yaxes, i + 1).options = options.yaxes[i]; - - // add hooks from options - for (var n in hooks) - if (options.hooks[n] && options.hooks[n].length) - hooks[n] = hooks[n].concat(options.hooks[n]); - - executeHooks(hooks.processOptions, [options]); - } - - function setData(d) { - series = parseData(d); - fillInSeriesOptions(); - processData(); - } - - function parseData(d) { - var res = []; - for (var i = 0; i < d.length; ++i) { - var s = $.extend(true, {}, options.series); - - if (d[i].data != null) { - s.data = d[i].data; // move the data instead of deep-copy - delete d[i].data; - - $.extend(true, s, d[i]); - - d[i].data = s.data; - } - else - s.data = d[i]; - res.push(s); - } - - return res; - } - - function axisNumber(obj, coord) { - var a = obj[coord + "axis"]; - if (typeof a == "object") // if we got a real axis, extract number - a = a.n; - if (typeof a != "number") - a = 1; // default to first axis - return a; - } - - function allAxes() { - // return flat array without annoying null entries - return $.grep(xaxes.concat(yaxes), function (a) { return a; }); - } - - function canvasToAxisCoords(pos) { - // return an object with x/y corresponding to all used axes - var res = {}, i, axis; - for (i = 0; i < xaxes.length; ++i) { - axis = xaxes[i]; - if (axis && axis.used) - res["x" + axis.n] = axis.c2p(pos.left); - } - - for (i = 0; i < yaxes.length; ++i) { - axis = yaxes[i]; - if (axis && axis.used) - res["y" + axis.n] = axis.c2p(pos.top); - } - - if (res.x1 !== undefined) - res.x = res.x1; - if (res.y1 !== undefined) - res.y = res.y1; - - return res; - } - - function axisToCanvasCoords(pos) { - // get canvas coords from the first pair of x/y found in pos - var res = {}, i, axis, key; - - for (i = 0; i < xaxes.length; ++i) { - axis = xaxes[i]; - if (axis && axis.used) { - key = "x" + axis.n; - if (pos[key] == null && axis.n == 1) - key = "x"; - - if (pos[key] != null) { - res.left = axis.p2c(pos[key]); - break; - } - } - } - - for (i = 0; i < yaxes.length; ++i) { - axis = yaxes[i]; - if (axis && axis.used) { - key = "y" + axis.n; - if (pos[key] == null && axis.n == 1) - key = "y"; - - if (pos[key] != null) { - res.top = axis.p2c(pos[key]); - break; - } - } - } - - return res; - } - - function getOrCreateAxis(axes, number) { - if (!axes[number - 1]) - axes[number - 1] = { - n: number, // save the number for future reference - direction: axes == xaxes ? "x" : "y", - options: $.extend(true, {}, axes == xaxes ? options.xaxis : options.yaxis) - }; - - return axes[number - 1]; - } - - function fillInSeriesOptions() { - - var neededColors = series.length, maxIndex = -1, i; - - // Subtract the number of series that already have fixed colors or - // color indexes from the number that we still need to generate. - - for (i = 0; i < series.length; ++i) { - var sc = series[i].color; - if (sc != null) { - neededColors--; - if (typeof sc == "number" && sc > maxIndex) { - maxIndex = sc; - } - } - } - - // If any of the series have fixed color indexes, then we need to - // generate at least as many colors as the highest index. - - if (neededColors <= maxIndex) { - neededColors = maxIndex + 1; - } - - // Generate all the colors, using first the option colors and then - // variations on those colors once they're exhausted. - - var c, colors = [], colorPool = options.colors, - colorPoolSize = colorPool.length, variation = 0; - - for (i = 0; i < neededColors; i++) { - - c = $.color.parse(colorPool[i % colorPoolSize] || "#666"); - - // Each time we exhaust the colors in the pool we adjust - // a scaling factor used to produce more variations on - // those colors. The factor alternates negative/positive - // to produce lighter/darker colors. - - // Reset the variation after every few cycles, or else - // it will end up producing only white or black colors. - - if (i % colorPoolSize == 0 && i) { - if (variation >= 0) { - if (variation < 0.5) { - variation = -variation - 0.2; - } else variation = 0; - } else variation = -variation; - } - - colors[i] = c.scale('rgb', 1 + variation); - } - - // Finalize the series options, filling in their colors - - var colori = 0, s; - for (i = 0; i < series.length; ++i) { - s = series[i]; - - // assign colors - if (s.color == null) { - s.color = colors[colori].toString(); - ++colori; - } - else if (typeof s.color == "number") - s.color = colors[s.color].toString(); - - // turn on lines automatically in case nothing is set - if (s.lines.show == null) { - var v, show = true; - for (v in s) - if (s[v] && s[v].show) { - show = false; - break; - } - if (show) - s.lines.show = true; - } - - // If nothing was provided for lines.zero, default it to match - // lines.fill, since areas by default should extend to zero. - - if (s.lines.zero == null) { - s.lines.zero = !!s.lines.fill; - } - - // setup axes - s.xaxis = getOrCreateAxis(xaxes, axisNumber(s, "x")); - s.yaxis = getOrCreateAxis(yaxes, axisNumber(s, "y")); - } - } - - function processData() { - var topSentry = Number.POSITIVE_INFINITY, - bottomSentry = Number.NEGATIVE_INFINITY, - fakeInfinity = Number.MAX_VALUE, - i, j, k, m, length, - s, points, ps, x, y, axis, val, f, p, - data, format; - - function updateAxis(axis, min, max) { - if (min < axis.datamin && min != -fakeInfinity) - axis.datamin = min; - if (max > axis.datamax && max != fakeInfinity) - axis.datamax = max; - } - - $.each(allAxes(), function (_, axis) { - // init axis - axis.datamin = topSentry; - axis.datamax = bottomSentry; - axis.used = false; - }); - - for (i = 0; i < series.length; ++i) { - s = series[i]; - s.datapoints = { points: [] }; - - executeHooks(hooks.processRawData, [ s, s.data, s.datapoints ]); - } - - // first pass: clean and copy data - for (i = 0; i < series.length; ++i) { - s = series[i]; - - data = s.data; - format = s.datapoints.format; - - if (!format) { - format = []; - // find out how to copy - format.push({ x: true, number: true, required: true }); - format.push({ y: true, number: true, required: true }); - - if (s.bars.show || (s.lines.show && s.lines.fill)) { - var autoscale = !!((s.bars.show && s.bars.zero) || (s.lines.show && s.lines.zero)); - format.push({ y: true, number: true, required: false, defaultValue: 0, autoscale: autoscale }); - if (s.bars.horizontal) { - delete format[format.length - 1].y; - format[format.length - 1].x = true; - } - } - - s.datapoints.format = format; - } - - if (s.datapoints.pointsize != null) - continue; // already filled in - - s.datapoints.pointsize = format.length; - - ps = s.datapoints.pointsize; - points = s.datapoints.points; - - var insertSteps = s.lines.show && s.lines.steps; - s.xaxis.used = s.yaxis.used = true; - - for (j = k = 0; j < data.length; ++j, k += ps) { - p = data[j]; - - var nullify = p == null; - if (!nullify) { - for (m = 0; m < ps; ++m) { - val = p[m]; - f = format[m]; - - if (f) { - if (f.number && val != null) { - val = +val; // convert to number - if (isNaN(val)) - val = null; - else if (val == Infinity) - val = fakeInfinity; - else if (val == -Infinity) - val = -fakeInfinity; - } - - if (val == null) { - if (f.required) - nullify = true; - - if (f.defaultValue != null) - val = f.defaultValue; - } - } - - points[k + m] = val; - } - } - - if (nullify) { - for (m = 0; m < ps; ++m) { - val = points[k + m]; - if (val != null) { - f = format[m]; - // extract min/max info - if (f.autoscale !== false) { - if (f.x) { - updateAxis(s.xaxis, val, val); - } - if (f.y) { - updateAxis(s.yaxis, val, val); - } - } - } - points[k + m] = null; - } - } - else { - // a little bit of line specific stuff that - // perhaps shouldn't be here, but lacking - // better means... - if (insertSteps && k > 0 - && points[k - ps] != null - && points[k - ps] != points[k] - && points[k - ps + 1] != points[k + 1]) { - // copy the point to make room for a middle point - for (m = 0; m < ps; ++m) - points[k + ps + m] = points[k + m]; - - // middle point has same y - points[k + 1] = points[k - ps + 1]; - - // we've added a point, better reflect that - k += ps; - } - } - } - } - - // give the hooks a chance to run - for (i = 0; i < series.length; ++i) { - s = series[i]; - - executeHooks(hooks.processDatapoints, [ s, s.datapoints]); - } - - // second pass: find datamax/datamin for auto-scaling - for (i = 0; i < series.length; ++i) { - s = series[i]; - points = s.datapoints.points; - ps = s.datapoints.pointsize; - format = s.datapoints.format; - - var xmin = topSentry, ymin = topSentry, - xmax = bottomSentry, ymax = bottomSentry; - - for (j = 0; j < points.length; j += ps) { - if (points[j] == null) - continue; - - for (m = 0; m < ps; ++m) { - val = points[j + m]; - f = format[m]; - if (!f || f.autoscale === false || val == fakeInfinity || val == -fakeInfinity) - continue; - - if (f.x) { - if (val < xmin) - xmin = val; - if (val > xmax) - xmax = val; - } - if (f.y) { - if (val < ymin) - ymin = val; - if (val > ymax) - ymax = val; - } - } - } - - if (s.bars.show) { - // make sure we got room for the bar on the dancing floor - var delta; - - switch (s.bars.align) { - case "left": - delta = 0; - break; - case "right": - delta = -s.bars.barWidth; - break; - default: - delta = -s.bars.barWidth / 2; - } - - if (s.bars.horizontal) { - ymin += delta; - ymax += delta + s.bars.barWidth; - } - else { - xmin += delta; - xmax += delta + s.bars.barWidth; - } - } - - updateAxis(s.xaxis, xmin, xmax); - updateAxis(s.yaxis, ymin, ymax); - } - - $.each(allAxes(), function (_, axis) { - if (axis.datamin == topSentry) - axis.datamin = null; - if (axis.datamax == bottomSentry) - axis.datamax = null; - }); - } - - function setupCanvases() { - - // Make sure the placeholder is clear of everything except canvases - // from a previous plot in this container that we'll try to re-use. - - placeholder.css("padding", 0) // padding messes up the positioning - .children().filter(function(){ - return !$(this).hasClass("flot-overlay") && !$(this).hasClass('flot-base'); - }).remove(); - - if (placeholder.css("position") == 'static') - placeholder.css("position", "relative"); // for positioning labels and overlay - - surface = new Canvas("flot-base", placeholder); - overlay = new Canvas("flot-overlay", placeholder); // overlay canvas for interactive features - - ctx = surface.context; - octx = overlay.context; - - // define which element we're listening for events on - eventHolder = $(overlay.element).unbind(); - - // If we're re-using a plot object, shut down the old one - - var existing = placeholder.data("plot"); - - if (existing) { - existing.shutdown(); - overlay.clear(); - } - - // save in case we get replotted - placeholder.data("plot", plot); - } - - function bindEvents() { - // bind events - if (options.grid.hoverable) { - eventHolder.mousemove(onMouseMove); - - // Use bind, rather than .mouseleave, because we officially - // still support jQuery 1.2.6, which doesn't define a shortcut - // for mouseenter or mouseleave. This was a bug/oversight that - // was fixed somewhere around 1.3.x. We can return to using - // .mouseleave when we drop support for 1.2.6. - - eventHolder.bind("mouseleave", onMouseLeave); - } - - if (options.grid.clickable) - eventHolder.click(onClick); - - executeHooks(hooks.bindEvents, [eventHolder]); - } - - function shutdown() { - if (redrawTimeout) - clearTimeout(redrawTimeout); - - eventHolder.unbind("mousemove", onMouseMove); - eventHolder.unbind("mouseleave", onMouseLeave); - eventHolder.unbind("click", onClick); - - executeHooks(hooks.shutdown, [eventHolder]); - } - - function setTransformationHelpers(axis) { - // set helper functions on the axis, assumes plot area - // has been computed already - - function identity(x) { return x; } - - var s, m, t = axis.options.transform || identity, - it = axis.options.inverseTransform; - - // precompute how much the axis is scaling a point - // in canvas space - if (axis.direction == "x") { - s = axis.scale = plotWidth / Math.abs(t(axis.max) - t(axis.min)); - m = Math.min(t(axis.max), t(axis.min)); - } - else { - s = axis.scale = plotHeight / Math.abs(t(axis.max) - t(axis.min)); - s = -s; - m = Math.max(t(axis.max), t(axis.min)); - } - - // data point to canvas coordinate - if (t == identity) // slight optimization - axis.p2c = function (p) { return (p - m) * s; }; - else - axis.p2c = function (p) { return (t(p) - m) * s; }; - // canvas coordinate to data point - if (!it) - axis.c2p = function (c) { return m + c / s; }; - else - axis.c2p = function (c) { return it(m + c / s); }; - } - - function measureTickLabels(axis) { - - var opts = axis.options, - ticks = axis.ticks || [], - labelWidth = opts.labelWidth || 0, - labelHeight = opts.labelHeight || 0, - maxWidth = labelWidth || (axis.direction == "x" ? Math.floor(surface.width / (ticks.length || 1)) : null), - legacyStyles = axis.direction + "Axis " + axis.direction + axis.n + "Axis", - layer = "flot-" + axis.direction + "-axis flot-" + axis.direction + axis.n + "-axis " + legacyStyles, - font = opts.font || "flot-tick-label tickLabel"; - - for (var i = 0; i < ticks.length; ++i) { - - var t = ticks[i]; - - if (!t.label) - continue; - - var info = surface.getTextInfo(layer, t.label, font, null, maxWidth); - - labelWidth = Math.max(labelWidth, info.width); - labelHeight = Math.max(labelHeight, info.height); - } - - axis.labelWidth = opts.labelWidth || labelWidth; - axis.labelHeight = opts.labelHeight || labelHeight; - } - - function allocateAxisBoxFirstPhase(axis) { - // find the bounding box of the axis by looking at label - // widths/heights and ticks, make room by diminishing the - // plotOffset; this first phase only looks at one - // dimension per axis, the other dimension depends on the - // other axes so will have to wait - - var lw = axis.labelWidth, - lh = axis.labelHeight, - pos = axis.options.position, - isXAxis = axis.direction === "x", - tickLength = axis.options.tickLength, - axisMargin = options.grid.axisMargin, - padding = options.grid.labelMargin, - innermost = true, - outermost = true, - first = true, - found = false; - - // Determine the axis's position in its direction and on its side - - $.each(isXAxis ? xaxes : yaxes, function(i, a) { - if (a && (a.show || a.reserveSpace)) { - if (a === axis) { - found = true; - } else if (a.options.position === pos) { - if (found) { - outermost = false; - } else { - innermost = false; - } - } - if (!found) { - first = false; - } - } - }); - - // The outermost axis on each side has no margin - - if (outermost) { - axisMargin = 0; - } - - // The ticks for the first axis in each direction stretch across - - if (tickLength == null) { - tickLength = first ? "full" : 5; - } - - if (!isNaN(+tickLength)) - padding += +tickLength; - - if (isXAxis) { - lh += padding; - - if (pos == "bottom") { - plotOffset.bottom += lh + axisMargin; - axis.box = { top: surface.height - plotOffset.bottom, height: lh }; - } - else { - axis.box = { top: plotOffset.top + axisMargin, height: lh }; - plotOffset.top += lh + axisMargin; - } - } - else { - lw += padding; - - if (pos == "left") { - axis.box = { left: plotOffset.left + axisMargin, width: lw }; - plotOffset.left += lw + axisMargin; - } - else { - plotOffset.right += lw + axisMargin; - axis.box = { left: surface.width - plotOffset.right, width: lw }; - } - } - - // save for future reference - axis.position = pos; - axis.tickLength = tickLength; - axis.box.padding = padding; - axis.innermost = innermost; - } - - function allocateAxisBoxSecondPhase(axis) { - // now that all axis boxes have been placed in one - // dimension, we can set the remaining dimension coordinates - if (axis.direction == "x") { - axis.box.left = plotOffset.left - axis.labelWidth / 2; - axis.box.width = surface.width - plotOffset.left - plotOffset.right + axis.labelWidth; - } - else { - axis.box.top = plotOffset.top - axis.labelHeight / 2; - axis.box.height = surface.height - plotOffset.bottom - plotOffset.top + axis.labelHeight; - } - } - - function adjustLayoutForThingsStickingOut() { - // possibly adjust plot offset to ensure everything stays - // inside the canvas and isn't clipped off - - var minMargin = options.grid.minBorderMargin, - axis, i; - - // check stuff from the plot (FIXME: this should just read - // a value from the series, otherwise it's impossible to - // customize) - if (minMargin == null) { - minMargin = 0; - for (i = 0; i < series.length; ++i) - minMargin = Math.max(minMargin, 2 * (series[i].points.radius + series[i].points.lineWidth/2)); - } - - var margins = { - left: minMargin, - right: minMargin, - top: minMargin, - bottom: minMargin - }; - - // check axis labels, note we don't check the actual - // labels but instead use the overall width/height to not - // jump as much around with replots - $.each(allAxes(), function (_, axis) { - if (axis.reserveSpace && axis.ticks && axis.ticks.length) { - if (axis.direction === "x") { - margins.left = Math.max(margins.left, axis.labelWidth / 2); - margins.right = Math.max(margins.right, axis.labelWidth / 2); - } else { - margins.bottom = Math.max(margins.bottom, axis.labelHeight / 2); - margins.top = Math.max(margins.top, axis.labelHeight / 2); - } - } - }); - - plotOffset.left = Math.ceil(Math.max(margins.left, plotOffset.left)); - plotOffset.right = Math.ceil(Math.max(margins.right, plotOffset.right)); - plotOffset.top = Math.ceil(Math.max(margins.top, plotOffset.top)); - plotOffset.bottom = Math.ceil(Math.max(margins.bottom, plotOffset.bottom)); - } - - function setupGrid() { - var i, axes = allAxes(), showGrid = options.grid.show; - - // Initialize the plot's offset from the edge of the canvas - - for (var a in plotOffset) { - var margin = options.grid.margin || 0; - plotOffset[a] = typeof margin == "number" ? margin : margin[a] || 0; - } - - executeHooks(hooks.processOffset, [plotOffset]); - - // If the grid is visible, add its border width to the offset - - for (var a in plotOffset) { - if(typeof(options.grid.borderWidth) == "object") { - plotOffset[a] += showGrid ? options.grid.borderWidth[a] : 0; - } - else { - plotOffset[a] += showGrid ? options.grid.borderWidth : 0; - } - } - - $.each(axes, function (_, axis) { - var axisOpts = axis.options; - axis.show = axisOpts.show == null ? axis.used : axisOpts.show; - axis.reserveSpace = axisOpts.reserveSpace == null ? axis.show : axisOpts.reserveSpace; - setRange(axis); - }); - - if (showGrid) { - - var allocatedAxes = $.grep(axes, function (axis) { - return axis.show || axis.reserveSpace; - }); - - $.each(allocatedAxes, function (_, axis) { - // make the ticks - setupTickGeneration(axis); - setTicks(axis); - snapRangeToTicks(axis, axis.ticks); - // find labelWidth/Height for axis - measureTickLabels(axis); - }); - - // with all dimensions calculated, we can compute the - // axis bounding boxes, start from the outside - // (reverse order) - for (i = allocatedAxes.length - 1; i >= 0; --i) - allocateAxisBoxFirstPhase(allocatedAxes[i]); - - // make sure we've got enough space for things that - // might stick out - adjustLayoutForThingsStickingOut(); - - $.each(allocatedAxes, function (_, axis) { - allocateAxisBoxSecondPhase(axis); - }); - } - - plotWidth = surface.width - plotOffset.left - plotOffset.right; - plotHeight = surface.height - plotOffset.bottom - plotOffset.top; - - // now we got the proper plot dimensions, we can compute the scaling - $.each(axes, function (_, axis) { - setTransformationHelpers(axis); - }); - - if (showGrid) { - drawAxisLabels(); - } - - insertLegend(); - } - - function setRange(axis) { - var opts = axis.options, - min = +(opts.min != null ? opts.min : axis.datamin), - max = +(opts.max != null ? opts.max : axis.datamax), - delta = max - min; - - if (delta == 0.0) { - // degenerate case - var widen = max == 0 ? 1 : 0.01; - - if (opts.min == null) - min -= widen; - // always widen max if we couldn't widen min to ensure we - // don't fall into min == max which doesn't work - if (opts.max == null || opts.min != null) - max += widen; - } - else { - // consider autoscaling - var margin = opts.autoscaleMargin; - if (margin != null) { - if (opts.min == null) { - min -= delta * margin; - // make sure we don't go below zero if all values - // are positive - if (min < 0 && axis.datamin != null && axis.datamin >= 0) - min = 0; - } - if (opts.max == null) { - max += delta * margin; - if (max > 0 && axis.datamax != null && axis.datamax <= 0) - max = 0; - } - } - } - axis.min = min; - axis.max = max; - } - - function setupTickGeneration(axis) { - var opts = axis.options; - - // estimate number of ticks - var noTicks; - if (typeof opts.ticks == "number" && opts.ticks > 0) - noTicks = opts.ticks; - else - // heuristic based on the model a*sqrt(x) fitted to - // some data points that seemed reasonable - noTicks = 0.3 * Math.sqrt(axis.direction == "x" ? surface.width : surface.height); - - var delta = (axis.max - axis.min) / noTicks, - dec = -Math.floor(Math.log(delta) / Math.LN10), - maxDec = opts.tickDecimals; - - if (maxDec != null && dec > maxDec) { - dec = maxDec; - } - - var magn = Math.pow(10, -dec), - norm = delta / magn, // norm is between 1.0 and 10.0 - size; - - if (norm < 1.5) { - size = 1; - } else if (norm < 3) { - size = 2; - // special case for 2.5, requires an extra decimal - if (norm > 2.25 && (maxDec == null || dec + 1 <= maxDec)) { - size = 2.5; - ++dec; - } - } else if (norm < 7.5) { - size = 5; - } else { - size = 10; - } - - size *= magn; - - if (opts.minTickSize != null && size < opts.minTickSize) { - size = opts.minTickSize; - } - - axis.delta = delta; - axis.tickDecimals = Math.max(0, maxDec != null ? maxDec : dec); - axis.tickSize = opts.tickSize || size; - - // Time mode was moved to a plug-in in 0.8, and since so many people use it - // we'll add an especially friendly reminder to make sure they included it. - - if (opts.mode == "time" && !axis.tickGenerator) { - throw new Error("Time mode requires the flot.time plugin."); - } - - // Flot supports base-10 axes; any other mode else is handled by a plug-in, - // like flot.time.js. - - if (!axis.tickGenerator) { - - axis.tickGenerator = function (axis) { - - var ticks = [], - start = floorInBase(axis.min, axis.tickSize), - i = 0, - v = Number.NaN, - prev; - - do { - prev = v; - v = start + i * axis.tickSize; - ticks.push(v); - ++i; - } while (v < axis.max && v != prev); - return ticks; - }; - - axis.tickFormatter = function (value, axis) { - - var factor = axis.tickDecimals ? Math.pow(10, axis.tickDecimals) : 1; - var formatted = "" + Math.round(value * factor) / factor; - - // If tickDecimals was specified, ensure that we have exactly that - // much precision; otherwise default to the value's own precision. - - if (axis.tickDecimals != null) { - var decimal = formatted.indexOf("."); - var precision = decimal == -1 ? 0 : formatted.length - decimal - 1; - if (precision < axis.tickDecimals) { - return (precision ? formatted : formatted + ".") + ("" + factor).substr(1, axis.tickDecimals - precision); - } - } - - return formatted; - }; - } - - if ($.isFunction(opts.tickFormatter)) - axis.tickFormatter = function (v, axis) { return "" + opts.tickFormatter(v, axis); }; - - if (opts.alignTicksWithAxis != null) { - var otherAxis = (axis.direction == "x" ? xaxes : yaxes)[opts.alignTicksWithAxis - 1]; - if (otherAxis && otherAxis.used && otherAxis != axis) { - // consider snapping min/max to outermost nice ticks - var niceTicks = axis.tickGenerator(axis); - if (niceTicks.length > 0) { - if (opts.min == null) - axis.min = Math.min(axis.min, niceTicks[0]); - if (opts.max == null && niceTicks.length > 1) - axis.max = Math.max(axis.max, niceTicks[niceTicks.length - 1]); - } - - axis.tickGenerator = function (axis) { - // copy ticks, scaled to this axis - var ticks = [], v, i; - for (i = 0; i < otherAxis.ticks.length; ++i) { - v = (otherAxis.ticks[i].v - otherAxis.min) / (otherAxis.max - otherAxis.min); - v = axis.min + v * (axis.max - axis.min); - ticks.push(v); - } - return ticks; - }; - - // we might need an extra decimal since forced - // ticks don't necessarily fit naturally - if (!axis.mode && opts.tickDecimals == null) { - var extraDec = Math.max(0, -Math.floor(Math.log(axis.delta) / Math.LN10) + 1), - ts = axis.tickGenerator(axis); - - // only proceed if the tick interval rounded - // with an extra decimal doesn't give us a - // zero at end - if (!(ts.length > 1 && /\..*0$/.test((ts[1] - ts[0]).toFixed(extraDec)))) - axis.tickDecimals = extraDec; - } - } - } - } - - function setTicks(axis) { - var oticks = axis.options.ticks, ticks = []; - if (oticks == null || (typeof oticks == "number" && oticks > 0)) - ticks = axis.tickGenerator(axis); - else if (oticks) { - if ($.isFunction(oticks)) - // generate the ticks - ticks = oticks(axis); - else - ticks = oticks; - } - - // clean up/labelify the supplied ticks, copy them over - var i, v; - axis.ticks = []; - for (i = 0; i < ticks.length; ++i) { - var label = null; - var t = ticks[i]; - if (typeof t == "object") { - v = +t[0]; - if (t.length > 1) - label = t[1]; - } - else - v = +t; - if (label == null) - label = axis.tickFormatter(v, axis); - if (!isNaN(v)) - axis.ticks.push({ v: v, label: label }); - } - } - - function snapRangeToTicks(axis, ticks) { - if (axis.options.autoscaleMargin && ticks.length > 0) { - // snap to ticks - if (axis.options.min == null) - axis.min = Math.min(axis.min, ticks[0].v); - if (axis.options.max == null && ticks.length > 1) - axis.max = Math.max(axis.max, ticks[ticks.length - 1].v); - } - } - - function draw() { - - surface.clear(); - - executeHooks(hooks.drawBackground, [ctx]); - - var grid = options.grid; - - // draw background, if any - if (grid.show && grid.backgroundColor) - drawBackground(); - - if (grid.show && !grid.aboveData) { - drawGrid(); - } - - for (var i = 0; i < series.length; ++i) { - executeHooks(hooks.drawSeries, [ctx, series[i]]); - drawSeries(series[i]); - } - - executeHooks(hooks.draw, [ctx]); - - if (grid.show && grid.aboveData) { - drawGrid(); - } - - surface.render(); - - // A draw implies that either the axes or data have changed, so we - // should probably update the overlay highlights as well. - - triggerRedrawOverlay(); - } - - function extractRange(ranges, coord) { - var axis, from, to, key, axes = allAxes(); - - for (var i = 0; i < axes.length; ++i) { - axis = axes[i]; - if (axis.direction == coord) { - key = coord + axis.n + "axis"; - if (!ranges[key] && axis.n == 1) - key = coord + "axis"; // support x1axis as xaxis - if (ranges[key]) { - from = ranges[key].from; - to = ranges[key].to; - break; - } - } - } - - // backwards-compat stuff - to be removed in future - if (!ranges[key]) { - axis = coord == "x" ? xaxes[0] : yaxes[0]; - from = ranges[coord + "1"]; - to = ranges[coord + "2"]; - } - - // auto-reverse as an added bonus - if (from != null && to != null && from > to) { - var tmp = from; - from = to; - to = tmp; - } - - return { from: from, to: to, axis: axis }; - } - - function drawBackground() { - ctx.save(); - ctx.translate(plotOffset.left, plotOffset.top); - - ctx.fillStyle = getColorOrGradient(options.grid.backgroundColor, plotHeight, 0, "rgba(255, 255, 255, 0)"); - ctx.fillRect(0, 0, plotWidth, plotHeight); - ctx.restore(); - } - - function drawGrid() { - var i, axes, bw, bc; - - ctx.save(); - ctx.translate(plotOffset.left, plotOffset.top); - - // draw markings - var markings = options.grid.markings; - if (markings) { - if ($.isFunction(markings)) { - axes = plot.getAxes(); - // xmin etc. is backwards compatibility, to be - // removed in the future - axes.xmin = axes.xaxis.min; - axes.xmax = axes.xaxis.max; - axes.ymin = axes.yaxis.min; - axes.ymax = axes.yaxis.max; - - markings = markings(axes); - } - - for (i = 0; i < markings.length; ++i) { - var m = markings[i], - xrange = extractRange(m, "x"), - yrange = extractRange(m, "y"); - - // fill in missing - if (xrange.from == null) - xrange.from = xrange.axis.min; - if (xrange.to == null) - xrange.to = xrange.axis.max; - if (yrange.from == null) - yrange.from = yrange.axis.min; - if (yrange.to == null) - yrange.to = yrange.axis.max; - - // clip - if (xrange.to < xrange.axis.min || xrange.from > xrange.axis.max || - yrange.to < yrange.axis.min || yrange.from > yrange.axis.max) - continue; - - xrange.from = Math.max(xrange.from, xrange.axis.min); - xrange.to = Math.min(xrange.to, xrange.axis.max); - yrange.from = Math.max(yrange.from, yrange.axis.min); - yrange.to = Math.min(yrange.to, yrange.axis.max); - - var xequal = xrange.from === xrange.to, - yequal = yrange.from === yrange.to; - - if (xequal && yequal) { - continue; - } - - // then draw - xrange.from = Math.floor(xrange.axis.p2c(xrange.from)); - xrange.to = Math.floor(xrange.axis.p2c(xrange.to)); - yrange.from = Math.floor(yrange.axis.p2c(yrange.from)); - yrange.to = Math.floor(yrange.axis.p2c(yrange.to)); - - if (xequal || yequal) { - var lineWidth = m.lineWidth || options.grid.markingsLineWidth, - subPixel = lineWidth % 2 ? 0.5 : 0; - ctx.beginPath(); - ctx.strokeStyle = m.color || options.grid.markingsColor; - ctx.lineWidth = lineWidth; - if (xequal) { - ctx.moveTo(xrange.to + subPixel, yrange.from); - ctx.lineTo(xrange.to + subPixel, yrange.to); - } else { - ctx.moveTo(xrange.from, yrange.to + subPixel); - ctx.lineTo(xrange.to, yrange.to + subPixel); - } - ctx.stroke(); - } else { - ctx.fillStyle = m.color || options.grid.markingsColor; - ctx.fillRect(xrange.from, yrange.to, - xrange.to - xrange.from, - yrange.from - yrange.to); - } - } - } - - // draw the ticks - axes = allAxes(); - bw = options.grid.borderWidth; - - for (var j = 0; j < axes.length; ++j) { - var axis = axes[j], box = axis.box, - t = axis.tickLength, x, y, xoff, yoff; - if (!axis.show || axis.ticks.length == 0) - continue; - - ctx.lineWidth = 1; - - // find the edges - if (axis.direction == "x") { - x = 0; - if (t == "full") - y = (axis.position == "top" ? 0 : plotHeight); - else - y = box.top - plotOffset.top + (axis.position == "top" ? box.height : 0); - } - else { - y = 0; - if (t == "full") - x = (axis.position == "left" ? 0 : plotWidth); - else - x = box.left - plotOffset.left + (axis.position == "left" ? box.width : 0); - } - - // draw tick bar - if (!axis.innermost) { - ctx.strokeStyle = axis.options.color; - ctx.beginPath(); - xoff = yoff = 0; - if (axis.direction == "x") - xoff = plotWidth + 1; - else - yoff = plotHeight + 1; - - if (ctx.lineWidth == 1) { - if (axis.direction == "x") { - y = Math.floor(y) + 0.5; - } else { - x = Math.floor(x) + 0.5; - } - } - - ctx.moveTo(x, y); - ctx.lineTo(x + xoff, y + yoff); - ctx.stroke(); - } - - // draw ticks - - ctx.strokeStyle = axis.options.tickColor; - - ctx.beginPath(); - for (i = 0; i < axis.ticks.length; ++i) { - var v = axis.ticks[i].v; - - xoff = yoff = 0; - - if (isNaN(v) || v < axis.min || v > axis.max - // skip those lying on the axes if we got a border - || (t == "full" - && ((typeof bw == "object" && bw[axis.position] > 0) || bw > 0) - && (v == axis.min || v == axis.max))) - continue; - - if (axis.direction == "x") { - x = axis.p2c(v); - yoff = t == "full" ? -plotHeight : t; - - if (axis.position == "top") - yoff = -yoff; - } - else { - y = axis.p2c(v); - xoff = t == "full" ? -plotWidth : t; - - if (axis.position == "left") - xoff = -xoff; - } - - if (ctx.lineWidth == 1) { - if (axis.direction == "x") - x = Math.floor(x) + 0.5; - else - y = Math.floor(y) + 0.5; - } - - ctx.moveTo(x, y); - ctx.lineTo(x + xoff, y + yoff); - } - - ctx.stroke(); - } - - - // draw border - if (bw) { - // If either borderWidth or borderColor is an object, then draw the border - // line by line instead of as one rectangle - bc = options.grid.borderColor; - if(typeof bw == "object" || typeof bc == "object") { - if (typeof bw !== "object") { - bw = {top: bw, right: bw, bottom: bw, left: bw}; - } - if (typeof bc !== "object") { - bc = {top: bc, right: bc, bottom: bc, left: bc}; - } - - if (bw.top > 0) { - ctx.strokeStyle = bc.top; - ctx.lineWidth = bw.top; - ctx.beginPath(); - ctx.moveTo(0 - bw.left, 0 - bw.top/2); - ctx.lineTo(plotWidth, 0 - bw.top/2); - ctx.stroke(); - } - - if (bw.right > 0) { - ctx.strokeStyle = bc.right; - ctx.lineWidth = bw.right; - ctx.beginPath(); - ctx.moveTo(plotWidth + bw.right / 2, 0 - bw.top); - ctx.lineTo(plotWidth + bw.right / 2, plotHeight); - ctx.stroke(); - } - - if (bw.bottom > 0) { - ctx.strokeStyle = bc.bottom; - ctx.lineWidth = bw.bottom; - ctx.beginPath(); - ctx.moveTo(plotWidth + bw.right, plotHeight + bw.bottom / 2); - ctx.lineTo(0, plotHeight + bw.bottom / 2); - ctx.stroke(); - } - - if (bw.left > 0) { - ctx.strokeStyle = bc.left; - ctx.lineWidth = bw.left; - ctx.beginPath(); - ctx.moveTo(0 - bw.left/2, plotHeight + bw.bottom); - ctx.lineTo(0- bw.left/2, 0); - ctx.stroke(); - } - } - else { - ctx.lineWidth = bw; - ctx.strokeStyle = options.grid.borderColor; - ctx.strokeRect(-bw/2, -bw/2, plotWidth + bw, plotHeight + bw); - } - } - - ctx.restore(); - } - - function drawAxisLabels() { - - $.each(allAxes(), function (_, axis) { - var box = axis.box, - legacyStyles = axis.direction + "Axis " + axis.direction + axis.n + "Axis", - layer = "flot-" + axis.direction + "-axis flot-" + axis.direction + axis.n + "-axis " + legacyStyles, - font = axis.options.font || "flot-tick-label tickLabel", - tick, x, y, halign, valign; - - // Remove text before checking for axis.show and ticks.length; - // otherwise plugins, like flot-tickrotor, that draw their own - // tick labels will end up with both theirs and the defaults. - - surface.removeText(layer); - - if (!axis.show || axis.ticks.length == 0) - return; - - for (var i = 0; i < axis.ticks.length; ++i) { - - tick = axis.ticks[i]; - if (!tick.label || tick.v < axis.min || tick.v > axis.max) - continue; - - if (axis.direction == "x") { - halign = "center"; - x = plotOffset.left + axis.p2c(tick.v); - if (axis.position == "bottom") { - y = box.top + box.padding; - } else { - y = box.top + box.height - box.padding; - valign = "bottom"; - } - } else { - valign = "middle"; - y = plotOffset.top + axis.p2c(tick.v); - if (axis.position == "left") { - x = box.left + box.width - box.padding; - halign = "right"; - } else { - x = box.left + box.padding; - } - } - - surface.addText(layer, x, y, tick.label, font, null, null, halign, valign); - } - }); - } - - function drawSeries(series) { - if (series.lines.show) - drawSeriesLines(series); - if (series.bars.show) - drawSeriesBars(series); - if (series.points.show) - drawSeriesPoints(series); - } - - function drawSeriesLines(series) { - function plotLine(datapoints, xoffset, yoffset, axisx, axisy) { - var points = datapoints.points, - ps = datapoints.pointsize, - prevx = null, prevy = null; - - ctx.beginPath(); - for (var i = ps; i < points.length; i += ps) { - var x1 = points[i - ps], y1 = points[i - ps + 1], - x2 = points[i], y2 = points[i + 1]; - - if (x1 == null || x2 == null) - continue; - - // clip with ymin - if (y1 <= y2 && y1 < axisy.min) { - if (y2 < axisy.min) - continue; // line segment is outside - // compute new intersection point - x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; - y1 = axisy.min; - } - else if (y2 <= y1 && y2 < axisy.min) { - if (y1 < axisy.min) - continue; - x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; - y2 = axisy.min; - } - - // clip with ymax - if (y1 >= y2 && y1 > axisy.max) { - if (y2 > axisy.max) - continue; - x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; - y1 = axisy.max; - } - else if (y2 >= y1 && y2 > axisy.max) { - if (y1 > axisy.max) - continue; - x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; - y2 = axisy.max; - } - - // clip with xmin - if (x1 <= x2 && x1 < axisx.min) { - if (x2 < axisx.min) - continue; - y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; - x1 = axisx.min; - } - else if (x2 <= x1 && x2 < axisx.min) { - if (x1 < axisx.min) - continue; - y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; - x2 = axisx.min; - } - - // clip with xmax - if (x1 >= x2 && x1 > axisx.max) { - if (x2 > axisx.max) - continue; - y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; - x1 = axisx.max; - } - else if (x2 >= x1 && x2 > axisx.max) { - if (x1 > axisx.max) - continue; - y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; - x2 = axisx.max; - } - - if (x1 != prevx || y1 != prevy) - ctx.moveTo(axisx.p2c(x1) + xoffset, axisy.p2c(y1) + yoffset); - - prevx = x2; - prevy = y2; - ctx.lineTo(axisx.p2c(x2) + xoffset, axisy.p2c(y2) + yoffset); - } - ctx.stroke(); - } - - function plotLineArea(datapoints, axisx, axisy) { - var points = datapoints.points, - ps = datapoints.pointsize, - bottom = Math.min(Math.max(0, axisy.min), axisy.max), - i = 0, top, areaOpen = false, - ypos = 1, segmentStart = 0, segmentEnd = 0; - - // we process each segment in two turns, first forward - // direction to sketch out top, then once we hit the - // end we go backwards to sketch the bottom - while (true) { - if (ps > 0 && i > points.length + ps) - break; - - i += ps; // ps is negative if going backwards - - var x1 = points[i - ps], - y1 = points[i - ps + ypos], - x2 = points[i], y2 = points[i + ypos]; - - if (areaOpen) { - if (ps > 0 && x1 != null && x2 == null) { - // at turning point - segmentEnd = i; - ps = -ps; - ypos = 2; - continue; - } - - if (ps < 0 && i == segmentStart + ps) { - // done with the reverse sweep - ctx.fill(); - areaOpen = false; - ps = -ps; - ypos = 1; - i = segmentStart = segmentEnd + ps; - continue; - } - } - - if (x1 == null || x2 == null) - continue; - - // clip x values - - // clip with xmin - if (x1 <= x2 && x1 < axisx.min) { - if (x2 < axisx.min) - continue; - y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; - x1 = axisx.min; - } - else if (x2 <= x1 && x2 < axisx.min) { - if (x1 < axisx.min) - continue; - y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; - x2 = axisx.min; - } - - // clip with xmax - if (x1 >= x2 && x1 > axisx.max) { - if (x2 > axisx.max) - continue; - y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; - x1 = axisx.max; - } - else if (x2 >= x1 && x2 > axisx.max) { - if (x1 > axisx.max) - continue; - y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; - x2 = axisx.max; - } - - if (!areaOpen) { - // open area - ctx.beginPath(); - ctx.moveTo(axisx.p2c(x1), axisy.p2c(bottom)); - areaOpen = true; - } - - // now first check the case where both is outside - if (y1 >= axisy.max && y2 >= axisy.max) { - ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.max)); - ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.max)); - continue; - } - else if (y1 <= axisy.min && y2 <= axisy.min) { - ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.min)); - ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.min)); - continue; - } - - // else it's a bit more complicated, there might - // be a flat maxed out rectangle first, then a - // triangular cutout or reverse; to find these - // keep track of the current x values - var x1old = x1, x2old = x2; - - // clip the y values, without shortcutting, we - // go through all cases in turn - - // clip with ymin - if (y1 <= y2 && y1 < axisy.min && y2 >= axisy.min) { - x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; - y1 = axisy.min; - } - else if (y2 <= y1 && y2 < axisy.min && y1 >= axisy.min) { - x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; - y2 = axisy.min; - } - - // clip with ymax - if (y1 >= y2 && y1 > axisy.max && y2 <= axisy.max) { - x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; - y1 = axisy.max; - } - else if (y2 >= y1 && y2 > axisy.max && y1 <= axisy.max) { - x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; - y2 = axisy.max; - } - - // if the x value was changed we got a rectangle - // to fill - if (x1 != x1old) { - ctx.lineTo(axisx.p2c(x1old), axisy.p2c(y1)); - // it goes to (x1, y1), but we fill that below - } - - // fill triangular section, this sometimes result - // in redundant points if (x1, y1) hasn't changed - // from previous line to, but we just ignore that - ctx.lineTo(axisx.p2c(x1), axisy.p2c(y1)); - ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2)); - - // fill the other rectangle if it's there - if (x2 != x2old) { - ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2)); - ctx.lineTo(axisx.p2c(x2old), axisy.p2c(y2)); - } - } - } - - ctx.save(); - ctx.translate(plotOffset.left, plotOffset.top); - ctx.lineJoin = "round"; - - var lw = series.lines.lineWidth, - sw = series.shadowSize; - // FIXME: consider another form of shadow when filling is turned on - if (lw > 0 && sw > 0) { - // draw shadow as a thick and thin line with transparency - ctx.lineWidth = sw; - ctx.strokeStyle = "rgba(0,0,0,0.1)"; - // position shadow at angle from the mid of line - var angle = Math.PI/18; - plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/2), Math.cos(angle) * (lw/2 + sw/2), series.xaxis, series.yaxis); - ctx.lineWidth = sw/2; - plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/4), Math.cos(angle) * (lw/2 + sw/4), series.xaxis, series.yaxis); - } - - ctx.lineWidth = lw; - ctx.strokeStyle = series.color; - var fillStyle = getFillStyle(series.lines, series.color, 0, plotHeight); - if (fillStyle) { - ctx.fillStyle = fillStyle; - plotLineArea(series.datapoints, series.xaxis, series.yaxis); - } - - if (lw > 0) - plotLine(series.datapoints, 0, 0, series.xaxis, series.yaxis); - ctx.restore(); - } - - function drawSeriesPoints(series) { - function plotPoints(datapoints, radius, fillStyle, offset, shadow, axisx, axisy, symbol) { - var points = datapoints.points, ps = datapoints.pointsize; - - for (var i = 0; i < points.length; i += ps) { - var x = points[i], y = points[i + 1]; - if (x == null || x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) - continue; - - ctx.beginPath(); - x = axisx.p2c(x); - y = axisy.p2c(y) + offset; - if (symbol == "circle") - ctx.arc(x, y, radius, 0, shadow ? Math.PI : Math.PI * 2, false); - else - symbol(ctx, x, y, radius, shadow); - ctx.closePath(); - - if (fillStyle) { - ctx.fillStyle = fillStyle; - ctx.fill(); - } - ctx.stroke(); - } - } - - ctx.save(); - ctx.translate(plotOffset.left, plotOffset.top); - - var lw = series.points.lineWidth, - sw = series.shadowSize, - radius = series.points.radius, - symbol = series.points.symbol; - - // If the user sets the line width to 0, we change it to a very - // small value. A line width of 0 seems to force the default of 1. - // Doing the conditional here allows the shadow setting to still be - // optional even with a lineWidth of 0. - - if( lw == 0 ) - lw = 0.0001; - - if (lw > 0 && sw > 0) { - // draw shadow in two steps - var w = sw / 2; - ctx.lineWidth = w; - ctx.strokeStyle = "rgba(0,0,0,0.1)"; - plotPoints(series.datapoints, radius, null, w + w/2, true, - series.xaxis, series.yaxis, symbol); - - ctx.strokeStyle = "rgba(0,0,0,0.2)"; - plotPoints(series.datapoints, radius, null, w/2, true, - series.xaxis, series.yaxis, symbol); - } - - ctx.lineWidth = lw; - ctx.strokeStyle = series.color; - plotPoints(series.datapoints, radius, - getFillStyle(series.points, series.color), 0, false, - series.xaxis, series.yaxis, symbol); - ctx.restore(); - } - - function drawBar(x, y, b, barLeft, barRight, fillStyleCallback, axisx, axisy, c, horizontal, lineWidth) { - var left, right, bottom, top, - drawLeft, drawRight, drawTop, drawBottom, - tmp; - - // in horizontal mode, we start the bar from the left - // instead of from the bottom so it appears to be - // horizontal rather than vertical - if (horizontal) { - drawBottom = drawRight = drawTop = true; - drawLeft = false; - left = b; - right = x; - top = y + barLeft; - bottom = y + barRight; - - // account for negative bars - if (right < left) { - tmp = right; - right = left; - left = tmp; - drawLeft = true; - drawRight = false; - } - } - else { - drawLeft = drawRight = drawTop = true; - drawBottom = false; - left = x + barLeft; - right = x + barRight; - bottom = b; - top = y; - - // account for negative bars - if (top < bottom) { - tmp = top; - top = bottom; - bottom = tmp; - drawBottom = true; - drawTop = false; - } - } - - // clip - if (right < axisx.min || left > axisx.max || - top < axisy.min || bottom > axisy.max) - return; - - if (left < axisx.min) { - left = axisx.min; - drawLeft = false; - } - - if (right > axisx.max) { - right = axisx.max; - drawRight = false; - } - - if (bottom < axisy.min) { - bottom = axisy.min; - drawBottom = false; - } - - if (top > axisy.max) { - top = axisy.max; - drawTop = false; - } - - left = axisx.p2c(left); - bottom = axisy.p2c(bottom); - right = axisx.p2c(right); - top = axisy.p2c(top); - - // fill the bar - if (fillStyleCallback) { - c.fillStyle = fillStyleCallback(bottom, top); - c.fillRect(left, top, right - left, bottom - top) - } - - // draw outline - if (lineWidth > 0 && (drawLeft || drawRight || drawTop || drawBottom)) { - c.beginPath(); - - // FIXME: inline moveTo is buggy with excanvas - c.moveTo(left, bottom); - if (drawLeft) - c.lineTo(left, top); - else - c.moveTo(left, top); - if (drawTop) - c.lineTo(right, top); - else - c.moveTo(right, top); - if (drawRight) - c.lineTo(right, bottom); - else - c.moveTo(right, bottom); - if (drawBottom) - c.lineTo(left, bottom); - else - c.moveTo(left, bottom); - c.stroke(); - } - } - - function drawSeriesBars(series) { - function plotBars(datapoints, barLeft, barRight, fillStyleCallback, axisx, axisy) { - var points = datapoints.points, ps = datapoints.pointsize; - - for (var i = 0; i < points.length; i += ps) { - if (points[i] == null) - continue; - drawBar(points[i], points[i + 1], points[i + 2], barLeft, barRight, fillStyleCallback, axisx, axisy, ctx, series.bars.horizontal, series.bars.lineWidth); - } - } - - ctx.save(); - ctx.translate(plotOffset.left, plotOffset.top); - - // FIXME: figure out a way to add shadows (for instance along the right edge) - ctx.lineWidth = series.bars.lineWidth; - ctx.strokeStyle = series.color; - - var barLeft; - - switch (series.bars.align) { - case "left": - barLeft = 0; - break; - case "right": - barLeft = -series.bars.barWidth; - break; - default: - barLeft = -series.bars.barWidth / 2; - } - - var fillStyleCallback = series.bars.fill ? function (bottom, top) { return getFillStyle(series.bars, series.color, bottom, top); } : null; - plotBars(series.datapoints, barLeft, barLeft + series.bars.barWidth, fillStyleCallback, series.xaxis, series.yaxis); - ctx.restore(); - } - - function getFillStyle(filloptions, seriesColor, bottom, top) { - var fill = filloptions.fill; - if (!fill) - return null; - - if (filloptions.fillColor) - return getColorOrGradient(filloptions.fillColor, bottom, top, seriesColor); - - var c = $.color.parse(seriesColor); - c.a = typeof fill == "number" ? fill : 0.4; - c.normalize(); - return c.toString(); - } - - function insertLegend() { - - if (options.legend.container != null) { - $(options.legend.container).html(""); - } else { - placeholder.find(".legend").remove(); - } - - if (!options.legend.show) { - return; - } - - var fragments = [], entries = [], rowStarted = false, - lf = options.legend.labelFormatter, s, label; - - // Build a list of legend entries, with each having a label and a color - - for (var i = 0; i < series.length; ++i) { - s = series[i]; - if (s.label) { - label = lf ? lf(s.label, s) : s.label; - if (label) { - entries.push({ - label: label, - color: s.color - }); - } - } - } - - // Sort the legend using either the default or a custom comparator - - if (options.legend.sorted) { - if ($.isFunction(options.legend.sorted)) { - entries.sort(options.legend.sorted); - } else if (options.legend.sorted == "reverse") { - entries.reverse(); - } else { - var ascending = options.legend.sorted != "descending"; - entries.sort(function(a, b) { - return a.label == b.label ? 0 : ( - (a.label < b.label) != ascending ? 1 : -1 // Logical XOR - ); - }); - } - } - - // Generate markup for the list of entries, in their final order - - for (var i = 0; i < entries.length; ++i) { - - var entry = entries[i]; - - if (i % options.legend.noColumns == 0) { - if (rowStarted) - fragments.push('</tr>'); - fragments.push('<tr>'); - rowStarted = true; - } - - fragments.push( - '<td class="legendColorBox"><div style="border:1px solid ' + options.legend.labelBoxBorderColor + ';padding:1px"><div style="width:4px;height:0;border:5px solid ' + entry.color + ';overflow:hidden"></div></div></td>' + - '<td class="legendLabel">' + entry.label + '</td>' - ); - } - - if (rowStarted) - fragments.push('</tr>'); - - if (fragments.length == 0) - return; - - var table = '<table style="font-size:smaller;color:' + options.grid.color + '">' + fragments.join("") + '</table>'; - if (options.legend.container != null) - $(options.legend.container).html(table); - else { - var pos = "", - p = options.legend.position, - m = options.legend.margin; - if (m[0] == null) - m = [m, m]; - if (p.charAt(0) == "n") - pos += 'top:' + (m[1] + plotOffset.top) + 'px;'; - else if (p.charAt(0) == "s") - pos += 'bottom:' + (m[1] + plotOffset.bottom) + 'px;'; - if (p.charAt(1) == "e") - pos += 'right:' + (m[0] + plotOffset.right) + 'px;'; - else if (p.charAt(1) == "w") - pos += 'left:' + (m[0] + plotOffset.left) + 'px;'; - var legend = $('<div class="legend">' + table.replace('style="', 'style="position:absolute;' + pos +';') + '</div>').appendTo(placeholder); - if (options.legend.backgroundOpacity != 0.0) { - // put in the transparent background - // separately to avoid blended labels and - // label boxes - var c = options.legend.backgroundColor; - if (c == null) { - c = options.grid.backgroundColor; - if (c && typeof c == "string") - c = $.color.parse(c); - else - c = $.color.extract(legend, 'background-color'); - c.a = 1; - c = c.toString(); - } - var div = legend.children(); - $('<div style="position:absolute;width:' + div.width() + 'px;height:' + div.height() + 'px;' + pos +'background-color:' + c + ';"> </div>').prependTo(legend).css('opacity', options.legend.backgroundOpacity); - } - } - } - - - // interactive features - - var highlights = [], - redrawTimeout = null; - - // returns the data item the mouse is over, or null if none is found - function findNearbyItem(mouseX, mouseY, seriesFilter) { - var maxDistance = options.grid.mouseActiveRadius, - smallestDistance = maxDistance * maxDistance + 1, - item = null, foundPoint = false, i, j, ps; - - for (i = series.length - 1; i >= 0; --i) { - if (!seriesFilter(series[i])) - continue; - - var s = series[i], - axisx = s.xaxis, - axisy = s.yaxis, - points = s.datapoints.points, - mx = axisx.c2p(mouseX), // precompute some stuff to make the loop faster - my = axisy.c2p(mouseY), - maxx = maxDistance / axisx.scale, - maxy = maxDistance / axisy.scale; - - ps = s.datapoints.pointsize; - // with inverse transforms, we can't use the maxx/maxy - // optimization, sadly - if (axisx.options.inverseTransform) - maxx = Number.MAX_VALUE; - if (axisy.options.inverseTransform) - maxy = Number.MAX_VALUE; - - if (s.lines.show || s.points.show) { - for (j = 0; j < points.length; j += ps) { - var x = points[j], y = points[j + 1]; - if (x == null) - continue; - - // For points and lines, the cursor must be within a - // certain distance to the data point - if (x - mx > maxx || x - mx < -maxx || - y - my > maxy || y - my < -maxy) - continue; - - // We have to calculate distances in pixels, not in - // data units, because the scales of the axes may be different - var dx = Math.abs(axisx.p2c(x) - mouseX), - dy = Math.abs(axisy.p2c(y) - mouseY), - dist = dx * dx + dy * dy; // we save the sqrt - - // use <= to ensure last point takes precedence - // (last generally means on top of) - if (dist < smallestDistance) { - smallestDistance = dist; - item = [i, j / ps]; - } - } - } - - if (s.bars.show && !item) { // no other point can be nearby - - var barLeft, barRight; - - switch (s.bars.align) { - case "left": - barLeft = 0; - break; - case "right": - barLeft = -s.bars.barWidth; - break; - default: - barLeft = -s.bars.barWidth / 2; - } - - barRight = barLeft + s.bars.barWidth; - - for (j = 0; j < points.length; j += ps) { - var x = points[j], y = points[j + 1], b = points[j + 2]; - if (x == null) - continue; - - // for a bar graph, the cursor must be inside the bar - if (series[i].bars.horizontal ? - (mx <= Math.max(b, x) && mx >= Math.min(b, x) && - my >= y + barLeft && my <= y + barRight) : - (mx >= x + barLeft && mx <= x + barRight && - my >= Math.min(b, y) && my <= Math.max(b, y))) - item = [i, j / ps]; - } - } - } - - if (item) { - i = item[0]; - j = item[1]; - ps = series[i].datapoints.pointsize; - - return { datapoint: series[i].datapoints.points.slice(j * ps, (j + 1) * ps), - dataIndex: j, - series: series[i], - seriesIndex: i }; - } - - return null; - } - - function onMouseMove(e) { - if (options.grid.hoverable) - triggerClickHoverEvent("plothover", e, - function (s) { return s["hoverable"] != false; }); - } - - function onMouseLeave(e) { - if (options.grid.hoverable) - triggerClickHoverEvent("plothover", e, - function (s) { return false; }); - } - - function onClick(e) { - triggerClickHoverEvent("plotclick", e, - function (s) { return s["clickable"] != false; }); - } - - // trigger click or hover event (they send the same parameters - // so we share their code) - function triggerClickHoverEvent(eventname, event, seriesFilter) { - var offset = eventHolder.offset(), - canvasX = event.pageX - offset.left - plotOffset.left, - canvasY = event.pageY - offset.top - plotOffset.top, - pos = canvasToAxisCoords({ left: canvasX, top: canvasY }); - - pos.pageX = event.pageX; - pos.pageY = event.pageY; - - var item = findNearbyItem(canvasX, canvasY, seriesFilter); - - if (item) { - // fill in mouse pos for any listeners out there - item.pageX = parseInt(item.series.xaxis.p2c(item.datapoint[0]) + offset.left + plotOffset.left, 10); - item.pageY = parseInt(item.series.yaxis.p2c(item.datapoint[1]) + offset.top + plotOffset.top, 10); - } - - if (options.grid.autoHighlight) { - // clear auto-highlights - for (var i = 0; i < highlights.length; ++i) { - var h = highlights[i]; - if (h.auto == eventname && - !(item && h.series == item.series && - h.point[0] == item.datapoint[0] && - h.point[1] == item.datapoint[1])) - unhighlight(h.series, h.point); - } - - if (item) - highlight(item.series, item.datapoint, eventname); - } - - placeholder.trigger(eventname, [ pos, item ]); - } - - function triggerRedrawOverlay() { - var t = options.interaction.redrawOverlayInterval; - if (t == -1) { // skip event queue - drawOverlay(); - return; - } - - if (!redrawTimeout) - redrawTimeout = setTimeout(drawOverlay, t); - } - - function drawOverlay() { - redrawTimeout = null; - - // draw highlights - octx.save(); - overlay.clear(); - octx.translate(plotOffset.left, plotOffset.top); - - var i, hi; - for (i = 0; i < highlights.length; ++i) { - hi = highlights[i]; - - if (hi.series.bars.show) - drawBarHighlight(hi.series, hi.point); - else - drawPointHighlight(hi.series, hi.point); - } - octx.restore(); - - executeHooks(hooks.drawOverlay, [octx]); - } - - function highlight(s, point, auto) { - if (typeof s == "number") - s = series[s]; - - if (typeof point == "number") { - var ps = s.datapoints.pointsize; - point = s.datapoints.points.slice(ps * point, ps * (point + 1)); - } - - var i = indexOfHighlight(s, point); - if (i == -1) { - highlights.push({ series: s, point: point, auto: auto }); - - triggerRedrawOverlay(); - } - else if (!auto) - highlights[i].auto = false; - } - - function unhighlight(s, point) { - if (s == null && point == null) { - highlights = []; - triggerRedrawOverlay(); - return; - } - - if (typeof s == "number") - s = series[s]; - - if (typeof point == "number") { - var ps = s.datapoints.pointsize; - point = s.datapoints.points.slice(ps * point, ps * (point + 1)); - } - - var i = indexOfHighlight(s, point); - if (i != -1) { - highlights.splice(i, 1); - - triggerRedrawOverlay(); - } - } - - function indexOfHighlight(s, p) { - for (var i = 0; i < highlights.length; ++i) { - var h = highlights[i]; - if (h.series == s && h.point[0] == p[0] - && h.point[1] == p[1]) - return i; - } - return -1; - } - - function drawPointHighlight(series, point) { - var x = point[0], y = point[1], - axisx = series.xaxis, axisy = series.yaxis, - highlightColor = (typeof series.highlightColor === "string") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString(); - - if (x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) - return; - - var pointRadius = series.points.radius + series.points.lineWidth / 2; - octx.lineWidth = pointRadius; - octx.strokeStyle = highlightColor; - var radius = 1.5 * pointRadius; - x = axisx.p2c(x); - y = axisy.p2c(y); - - octx.beginPath(); - if (series.points.symbol == "circle") - octx.arc(x, y, radius, 0, 2 * Math.PI, false); - else - series.points.symbol(octx, x, y, radius, false); - octx.closePath(); - octx.stroke(); - } - - function drawBarHighlight(series, point) { - var highlightColor = (typeof series.highlightColor === "string") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString(), - fillStyle = highlightColor, - barLeft; - - switch (series.bars.align) { - case "left": - barLeft = 0; - break; - case "right": - barLeft = -series.bars.barWidth; - break; - default: - barLeft = -series.bars.barWidth / 2; - } - - octx.lineWidth = series.bars.lineWidth; - octx.strokeStyle = highlightColor; - - drawBar(point[0], point[1], point[2] || 0, barLeft, barLeft + series.bars.barWidth, - function () { return fillStyle; }, series.xaxis, series.yaxis, octx, series.bars.horizontal, series.bars.lineWidth); - } - - function getColorOrGradient(spec, bottom, top, defaultColor) { - if (typeof spec == "string") - return spec; - else { - // assume this is a gradient spec; IE currently only - // supports a simple vertical gradient properly, so that's - // what we support too - var gradient = ctx.createLinearGradient(0, top, 0, bottom); - - for (var i = 0, l = spec.colors.length; i < l; ++i) { - var c = spec.colors[i]; - if (typeof c != "string") { - var co = $.color.parse(defaultColor); - if (c.brightness != null) - co = co.scale('rgb', c.brightness); - if (c.opacity != null) - co.a *= c.opacity; - c = co.toString(); - } - gradient.addColorStop(i / (l - 1), c); - } - - return gradient; - } - } - } - - // Add the plot function to the top level of the jQuery object - - $.plot = function(placeholder, data, options) { - //var t0 = new Date(); - var plot = new Plot($(placeholder), data, options, $.plot.plugins); - //(window.console ? console.log : alert)("time used (msecs): " + ((new Date()).getTime() - t0.getTime())); - return plot; - }; - - $.plot.version = "0.8.3"; - - $.plot.plugins = []; - - // Also add the plot function as a chainable property - - $.fn.plot = function(data, options) { - return this.each(function() { - $.plot(this, data, options); - }); - }; - - // round to nearby lower multiple of base - function floorInBase(n, base) { - return base * Math.floor(n / base); - } - -})(jQuery); diff --git a/assets/js/plugins/flot/jquery.flot.pie.js b/assets/js/plugins/flot/jquery.flot.pie.js deleted file mode 100644 index 9c19db99..00000000 --- a/assets/js/plugins/flot/jquery.flot.pie.js +++ /dev/null @@ -1,820 +0,0 @@ -/* Flot plugin for rendering pie charts. - -Copyright (c) 2007-2014 IOLA and Ole Laursen. -Licensed under the MIT license. - -The plugin assumes that each series has a single data value, and that each -value is a positive integer or zero. Negative numbers don't make sense for a -pie chart, and have unpredictable results. The values do NOT need to be -passed in as percentages; the plugin will calculate the total and per-slice -percentages internally. - -* Created by Brian Medendorp - -* Updated with contributions from btburnett3, Anthony Aragues and Xavi Ivars - -The plugin supports these options: - - series: { - pie: { - show: true/false - radius: 0-1 for percentage of fullsize, or a specified pixel length, or 'auto' - innerRadius: 0-1 for percentage of fullsize or a specified pixel length, for creating a donut effect - startAngle: 0-2 factor of PI used for starting angle (in radians) i.e 3/2 starts at the top, 0 and 2 have the same result - tilt: 0-1 for percentage to tilt the pie, where 1 is no tilt, and 0 is completely flat (nothing will show) - offset: { - top: integer value to move the pie up or down - left: integer value to move the pie left or right, or 'auto' - }, - stroke: { - color: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#FFF') - width: integer pixel width of the stroke - }, - label: { - show: true/false, or 'auto' - formatter: a user-defined function that modifies the text/style of the label text - radius: 0-1 for percentage of fullsize, or a specified pixel length - background: { - color: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#000') - opacity: 0-1 - }, - threshold: 0-1 for the percentage value at which to hide labels (if they're too small) - }, - combine: { - threshold: 0-1 for the percentage value at which to combine slices (if they're too small) - color: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#CCC'), if null, the plugin will automatically use the color of the first slice to be combined - label: any text value of what the combined slice should be labeled - } - highlight: { - opacity: 0-1 - } - } - } - -More detail and specific examples can be found in the included HTML file. - -*/ - -(function($) { - - // Maximum redraw attempts when fitting labels within the plot - - var REDRAW_ATTEMPTS = 10; - - // Factor by which to shrink the pie when fitting labels within the plot - - var REDRAW_SHRINK = 0.95; - - function init(plot) { - - var canvas = null, - target = null, - options = null, - maxRadius = null, - centerLeft = null, - centerTop = null, - processed = false, - ctx = null; - - // interactive variables - - var highlights = []; - - // add hook to determine if pie plugin in enabled, and then perform necessary operations - - plot.hooks.processOptions.push(function(plot, options) { - if (options.series.pie.show) { - - options.grid.show = false; - - // set labels.show - - if (options.series.pie.label.show == "auto") { - if (options.legend.show) { - options.series.pie.label.show = false; - } else { - options.series.pie.label.show = true; - } - } - - // set radius - - if (options.series.pie.radius == "auto") { - if (options.series.pie.label.show) { - options.series.pie.radius = 3/4; - } else { - options.series.pie.radius = 1; - } - } - - // ensure sane tilt - - if (options.series.pie.tilt > 1) { - options.series.pie.tilt = 1; - } else if (options.series.pie.tilt < 0) { - options.series.pie.tilt = 0; - } - } - }); - - plot.hooks.bindEvents.push(function(plot, eventHolder) { - var options = plot.getOptions(); - if (options.series.pie.show) { - if (options.grid.hoverable) { - eventHolder.unbind("mousemove").mousemove(onMouseMove); - } - if (options.grid.clickable) { - eventHolder.unbind("click").click(onClick); - } - } - }); - - plot.hooks.processDatapoints.push(function(plot, series, data, datapoints) { - var options = plot.getOptions(); - if (options.series.pie.show) { - processDatapoints(plot, series, data, datapoints); - } - }); - - plot.hooks.drawOverlay.push(function(plot, octx) { - var options = plot.getOptions(); - if (options.series.pie.show) { - drawOverlay(plot, octx); - } - }); - - plot.hooks.draw.push(function(plot, newCtx) { - var options = plot.getOptions(); - if (options.series.pie.show) { - draw(plot, newCtx); - } - }); - - function processDatapoints(plot, series, datapoints) { - if (!processed) { - processed = true; - canvas = plot.getCanvas(); - target = $(canvas).parent(); - options = plot.getOptions(); - plot.setData(combine(plot.getData())); - } - } - - function combine(data) { - - var total = 0, - combined = 0, - numCombined = 0, - color = options.series.pie.combine.color, - newdata = []; - - // Fix up the raw data from Flot, ensuring the data is numeric - - for (var i = 0; i < data.length; ++i) { - - var value = data[i].data; - - // If the data is an array, we'll assume that it's a standard - // Flot x-y pair, and are concerned only with the second value. - - // Note how we use the original array, rather than creating a - // new one; this is more efficient and preserves any extra data - // that the user may have stored in higher indexes. - - if ($.isArray(value) && value.length == 1) { - value = value[0]; - } - - if ($.isArray(value)) { - // Equivalent to $.isNumeric() but compatible with jQuery < 1.7 - if (!isNaN(parseFloat(value[1])) && isFinite(value[1])) { - value[1] = +value[1]; - } else { - value[1] = 0; - } - } else if (!isNaN(parseFloat(value)) && isFinite(value)) { - value = [1, +value]; - } else { - value = [1, 0]; - } - - data[i].data = [value]; - } - - // Sum up all the slices, so we can calculate percentages for each - - for (var i = 0; i < data.length; ++i) { - total += data[i].data[0][1]; - } - - // Count the number of slices with percentages below the combine - // threshold; if it turns out to be just one, we won't combine. - - for (var i = 0; i < data.length; ++i) { - var value = data[i].data[0][1]; - if (value / total <= options.series.pie.combine.threshold) { - combined += value; - numCombined++; - if (!color) { - color = data[i].color; - } - } - } - - for (var i = 0; i < data.length; ++i) { - var value = data[i].data[0][1]; - if (numCombined < 2 || value / total > options.series.pie.combine.threshold) { - newdata.push( - $.extend(data[i], { /* extend to allow keeping all other original data values - and using them e.g. in labelFormatter. */ - data: [[1, value]], - color: data[i].color, - label: data[i].label, - angle: value * Math.PI * 2 / total, - percent: value / (total / 100) - }) - ); - } - } - - if (numCombined > 1) { - newdata.push({ - data: [[1, combined]], - color: color, - label: options.series.pie.combine.label, - angle: combined * Math.PI * 2 / total, - percent: combined / (total / 100) - }); - } - - return newdata; - } - - function draw(plot, newCtx) { - - if (!target) { - return; // if no series were passed - } - - var canvasWidth = plot.getPlaceholder().width(), - canvasHeight = plot.getPlaceholder().height(), - legendWidth = target.children().filter(".legend").children().width() || 0; - - ctx = newCtx; - - // WARNING: HACK! REWRITE THIS CODE AS SOON AS POSSIBLE! - - // When combining smaller slices into an 'other' slice, we need to - // add a new series. Since Flot gives plugins no way to modify the - // list of series, the pie plugin uses a hack where the first call - // to processDatapoints results in a call to setData with the new - // list of series, then subsequent processDatapoints do nothing. - - // The plugin-global 'processed' flag is used to control this hack; - // it starts out false, and is set to true after the first call to - // processDatapoints. - - // Unfortunately this turns future setData calls into no-ops; they - // call processDatapoints, the flag is true, and nothing happens. - - // To fix this we'll set the flag back to false here in draw, when - // all series have been processed, so the next sequence of calls to - // processDatapoints once again starts out with a slice-combine. - // This is really a hack; in 0.9 we need to give plugins a proper - // way to modify series before any processing begins. - - processed = false; - - // calculate maximum radius and center point - - maxRadius = Math.min(canvasWidth, canvasHeight / options.series.pie.tilt) / 2; - centerTop = canvasHeight / 2 + options.series.pie.offset.top; - centerLeft = canvasWidth / 2; - - if (options.series.pie.offset.left == "auto") { - if (options.legend.position.match("w")) { - centerLeft += legendWidth / 2; - } else { - centerLeft -= legendWidth / 2; - } - if (centerLeft < maxRadius) { - centerLeft = maxRadius; - } else if (centerLeft > canvasWidth - maxRadius) { - centerLeft = canvasWidth - maxRadius; - } - } else { - centerLeft += options.series.pie.offset.left; - } - - var slices = plot.getData(), - attempts = 0; - - // Keep shrinking the pie's radius until drawPie returns true, - // indicating that all the labels fit, or we try too many times. - - do { - if (attempts > 0) { - maxRadius *= REDRAW_SHRINK; - } - attempts += 1; - clear(); - if (options.series.pie.tilt <= 0.8) { - drawShadow(); - } - } while (!drawPie() && attempts < REDRAW_ATTEMPTS) - - if (attempts >= REDRAW_ATTEMPTS) { - clear(); - target.prepend("<div class='error'>Could not draw pie with labels contained inside canvas</div>"); - } - - if (plot.setSeries && plot.insertLegend) { - plot.setSeries(slices); - plot.insertLegend(); - } - - // we're actually done at this point, just defining internal functions at this point - - function clear() { - ctx.clearRect(0, 0, canvasWidth, canvasHeight); - target.children().filter(".pieLabel, .pieLabelBackground").remove(); - } - - function drawShadow() { - - var shadowLeft = options.series.pie.shadow.left; - var shadowTop = options.series.pie.shadow.top; - var edge = 10; - var alpha = options.series.pie.shadow.alpha; - var radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius; - - if (radius >= canvasWidth / 2 - shadowLeft || radius * options.series.pie.tilt >= canvasHeight / 2 - shadowTop || radius <= edge) { - return; // shadow would be outside canvas, so don't draw it - } - - ctx.save(); - ctx.translate(shadowLeft,shadowTop); - ctx.globalAlpha = alpha; - ctx.fillStyle = "#000"; - - // center and rotate to starting position - - ctx.translate(centerLeft,centerTop); - ctx.scale(1, options.series.pie.tilt); - - //radius -= edge; - - for (var i = 1; i <= edge; i++) { - ctx.beginPath(); - ctx.arc(0, 0, radius, 0, Math.PI * 2, false); - ctx.fill(); - radius -= i; - } - - ctx.restore(); - } - - function drawPie() { - - var startAngle = Math.PI * options.series.pie.startAngle; - var radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius; - - // center and rotate to starting position - - ctx.save(); - ctx.translate(centerLeft,centerTop); - ctx.scale(1, options.series.pie.tilt); - //ctx.rotate(startAngle); // start at top; -- This doesn't work properly in Opera - - // draw slices - - ctx.save(); - var currentAngle = startAngle; - for (var i = 0; i < slices.length; ++i) { - slices[i].startAngle = currentAngle; - drawSlice(slices[i].angle, slices[i].color, true); - } - ctx.restore(); - - // draw slice outlines - - if (options.series.pie.stroke.width > 0) { - ctx.save(); - ctx.lineWidth = options.series.pie.stroke.width; - currentAngle = startAngle; - for (var i = 0; i < slices.length; ++i) { - drawSlice(slices[i].angle, options.series.pie.stroke.color, false); - } - ctx.restore(); - } - - // draw donut hole - - drawDonutHole(ctx); - - ctx.restore(); - - // Draw the labels, returning true if they fit within the plot - - if (options.series.pie.label.show) { - return drawLabels(); - } else return true; - - function drawSlice(angle, color, fill) { - - if (angle <= 0 || isNaN(angle)) { - return; - } - - if (fill) { - ctx.fillStyle = color; - } else { - ctx.strokeStyle = color; - ctx.lineJoin = "round"; - } - - ctx.beginPath(); - if (Math.abs(angle - Math.PI * 2) > 0.000000001) { - ctx.moveTo(0, 0); // Center of the pie - } - - //ctx.arc(0, 0, radius, 0, angle, false); // This doesn't work properly in Opera - ctx.arc(0, 0, radius,currentAngle, currentAngle + angle / 2, false); - ctx.arc(0, 0, radius,currentAngle + angle / 2, currentAngle + angle, false); - ctx.closePath(); - //ctx.rotate(angle); // This doesn't work properly in Opera - currentAngle += angle; - - if (fill) { - ctx.fill(); - } else { - ctx.stroke(); - } - } - - function drawLabels() { - - var currentAngle = startAngle; - var radius = options.series.pie.label.radius > 1 ? options.series.pie.label.radius : maxRadius * options.series.pie.label.radius; - - for (var i = 0; i < slices.length; ++i) { - if (slices[i].percent >= options.series.pie.label.threshold * 100) { - if (!drawLabel(slices[i], currentAngle, i)) { - return false; - } - } - currentAngle += slices[i].angle; - } - - return true; - - function drawLabel(slice, startAngle, index) { - - if (slice.data[0][1] == 0) { - return true; - } - - // format label text - - var lf = options.legend.labelFormatter, text, plf = options.series.pie.label.formatter; - - if (lf) { - text = lf(slice.label, slice); - } else { - text = slice.label; - } - - if (plf) { - text = plf(text, slice); - } - - var halfAngle = ((startAngle + slice.angle) + startAngle) / 2; - var x = centerLeft + Math.round(Math.cos(halfAngle) * radius); - var y = centerTop + Math.round(Math.sin(halfAngle) * radius) * options.series.pie.tilt; - - var html = "<span class='pieLabel' id='pieLabel" + index + "' style='position:absolute;top:" + y + "px;left:" + x + "px;'>" + text + "</span>"; - target.append(html); - - var label = target.children("#pieLabel" + index); - var labelTop = (y - label.height() / 2); - var labelLeft = (x - label.width() / 2); - - label.css("top", labelTop); - label.css("left", labelLeft); - - // check to make sure that the label is not outside the canvas - - if (0 - labelTop > 0 || 0 - labelLeft > 0 || canvasHeight - (labelTop + label.height()) < 0 || canvasWidth - (labelLeft + label.width()) < 0) { - return false; - } - - if (options.series.pie.label.background.opacity != 0) { - - // put in the transparent background separately to avoid blended labels and label boxes - - var c = options.series.pie.label.background.color; - - if (c == null) { - c = slice.color; - } - - var pos = "top:" + labelTop + "px;left:" + labelLeft + "px;"; - $("<div class='pieLabelBackground' style='position:absolute;width:" + label.width() + "px;height:" + label.height() + "px;" + pos + "background-color:" + c + ";'></div>") - .css("opacity", options.series.pie.label.background.opacity) - .insertBefore(label); - } - - return true; - } // end individual label function - } // end drawLabels function - } // end drawPie function - } // end draw function - - // Placed here because it needs to be accessed from multiple locations - - function drawDonutHole(layer) { - if (options.series.pie.innerRadius > 0) { - - // subtract the center - - layer.save(); - var innerRadius = options.series.pie.innerRadius > 1 ? options.series.pie.innerRadius : maxRadius * options.series.pie.innerRadius; - layer.globalCompositeOperation = "destination-out"; // this does not work with excanvas, but it will fall back to using the stroke color - layer.beginPath(); - layer.fillStyle = options.series.pie.stroke.color; - layer.arc(0, 0, innerRadius, 0, Math.PI * 2, false); - layer.fill(); - layer.closePath(); - layer.restore(); - - // add inner stroke - - layer.save(); - layer.beginPath(); - layer.strokeStyle = options.series.pie.stroke.color; - layer.arc(0, 0, innerRadius, 0, Math.PI * 2, false); - layer.stroke(); - layer.closePath(); - layer.restore(); - - // TODO: add extra shadow inside hole (with a mask) if the pie is tilted. - } - } - - //-- Additional Interactive related functions -- - - function isPointInPoly(poly, pt) { - for(var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i) - ((poly[i][1] <= pt[1] && pt[1] < poly[j][1]) || (poly[j][1] <= pt[1] && pt[1]< poly[i][1])) - && (pt[0] < (poly[j][0] - poly[i][0]) * (pt[1] - poly[i][1]) / (poly[j][1] - poly[i][1]) + poly[i][0]) - && (c = !c); - return c; - } - - function findNearbySlice(mouseX, mouseY) { - - var slices = plot.getData(), - options = plot.getOptions(), - radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius, - x, y; - - for (var i = 0; i < slices.length; ++i) { - - var s = slices[i]; - - if (s.pie.show) { - - ctx.save(); - ctx.beginPath(); - ctx.moveTo(0, 0); // Center of the pie - //ctx.scale(1, options.series.pie.tilt); // this actually seems to break everything when here. - ctx.arc(0, 0, radius, s.startAngle, s.startAngle + s.angle / 2, false); - ctx.arc(0, 0, radius, s.startAngle + s.angle / 2, s.startAngle + s.angle, false); - ctx.closePath(); - x = mouseX - centerLeft; - y = mouseY - centerTop; - - if (ctx.isPointInPath) { - if (ctx.isPointInPath(mouseX - centerLeft, mouseY - centerTop)) { - ctx.restore(); - return { - datapoint: [s.percent, s.data], - dataIndex: 0, - series: s, - seriesIndex: i - }; - } - } else { - - // excanvas for IE doesn;t support isPointInPath, this is a workaround. - - var p1X = radius * Math.cos(s.startAngle), - p1Y = radius * Math.sin(s.startAngle), - p2X = radius * Math.cos(s.startAngle + s.angle / 4), - p2Y = radius * Math.sin(s.startAngle + s.angle / 4), - p3X = radius * Math.cos(s.startAngle + s.angle / 2), - p3Y = radius * Math.sin(s.startAngle + s.angle / 2), - p4X = radius * Math.cos(s.startAngle + s.angle / 1.5), - p4Y = radius * Math.sin(s.startAngle + s.angle / 1.5), - p5X = radius * Math.cos(s.startAngle + s.angle), - p5Y = radius * Math.sin(s.startAngle + s.angle), - arrPoly = [[0, 0], [p1X, p1Y], [p2X, p2Y], [p3X, p3Y], [p4X, p4Y], [p5X, p5Y]], - arrPoint = [x, y]; - - // TODO: perhaps do some mathmatical trickery here with the Y-coordinate to compensate for pie tilt? - - if (isPointInPoly(arrPoly, arrPoint)) { - ctx.restore(); - return { - datapoint: [s.percent, s.data], - dataIndex: 0, - series: s, - seriesIndex: i - }; - } - } - - ctx.restore(); - } - } - - return null; - } - - function onMouseMove(e) { - triggerClickHoverEvent("plothover", e); - } - - function onClick(e) { - triggerClickHoverEvent("plotclick", e); - } - - // trigger click or hover event (they send the same parameters so we share their code) - - function triggerClickHoverEvent(eventname, e) { - - var offset = plot.offset(); - var canvasX = parseInt(e.pageX - offset.left); - var canvasY = parseInt(e.pageY - offset.top); - var item = findNearbySlice(canvasX, canvasY); - - if (options.grid.autoHighlight) { - - // clear auto-highlights - - for (var i = 0; i < highlights.length; ++i) { - var h = highlights[i]; - if (h.auto == eventname && !(item && h.series == item.series)) { - unhighlight(h.series); - } - } - } - - // highlight the slice - - if (item) { - highlight(item.series, eventname); - } - - // trigger any hover bind events - - var pos = { pageX: e.pageX, pageY: e.pageY }; - target.trigger(eventname, [pos, item]); - } - - function highlight(s, auto) { - //if (typeof s == "number") { - // s = series[s]; - //} - - var i = indexOfHighlight(s); - - if (i == -1) { - highlights.push({ series: s, auto: auto }); - plot.triggerRedrawOverlay(); - } else if (!auto) { - highlights[i].auto = false; - } - } - - function unhighlight(s) { - if (s == null) { - highlights = []; - plot.triggerRedrawOverlay(); - } - - //if (typeof s == "number") { - // s = series[s]; - //} - - var i = indexOfHighlight(s); - - if (i != -1) { - highlights.splice(i, 1); - plot.triggerRedrawOverlay(); - } - } - - function indexOfHighlight(s) { - for (var i = 0; i < highlights.length; ++i) { - var h = highlights[i]; - if (h.series == s) - return i; - } - return -1; - } - - function drawOverlay(plot, octx) { - - var options = plot.getOptions(); - - var radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius; - - octx.save(); - octx.translate(centerLeft, centerTop); - octx.scale(1, options.series.pie.tilt); - - for (var i = 0; i < highlights.length; ++i) { - drawHighlight(highlights[i].series); - } - - drawDonutHole(octx); - - octx.restore(); - - function drawHighlight(series) { - - if (series.angle <= 0 || isNaN(series.angle)) { - return; - } - - //octx.fillStyle = parseColor(options.series.pie.highlight.color).scale(null, null, null, options.series.pie.highlight.opacity).toString(); - octx.fillStyle = "rgba(255, 255, 255, " + options.series.pie.highlight.opacity + ")"; // this is temporary until we have access to parseColor - octx.beginPath(); - if (Math.abs(series.angle - Math.PI * 2) > 0.000000001) { - octx.moveTo(0, 0); // Center of the pie - } - octx.arc(0, 0, radius, series.startAngle, series.startAngle + series.angle / 2, false); - octx.arc(0, 0, radius, series.startAngle + series.angle / 2, series.startAngle + series.angle, false); - octx.closePath(); - octx.fill(); - } - } - } // end init (plugin body) - - // define pie specific options and their default values - - var options = { - series: { - pie: { - show: false, - radius: "auto", // actual radius of the visible pie (based on full calculated radius if <=1, or hard pixel value) - innerRadius: 0, /* for donut */ - startAngle: 3/2, - tilt: 1, - shadow: { - left: 5, // shadow left offset - top: 15, // shadow top offset - alpha: 0.02 // shadow alpha - }, - offset: { - top: 0, - left: "auto" - }, - stroke: { - color: "#fff", - width: 1 - }, - label: { - show: "auto", - formatter: function(label, slice) { - return "<div style='font-size:x-small;text-align:center;padding:2px;color:" + slice.color + ";'>" + label + "<br/>" + Math.round(slice.percent) + "%</div>"; - }, // formatter function - radius: 1, // radius at which to place the labels (based on full calculated radius if <=1, or hard pixel value) - background: { - color: null, - opacity: 0 - }, - threshold: 0 // percentage at which to hide the label (i.e. the slice is too narrow) - }, - combine: { - threshold: -1, // percentage at which to combine little slices into one larger slice - color: null, // color to give the new slice (auto-generated if null) - label: "Other" // label to give the new slice - }, - highlight: { - //color: "#fff", // will add this functionality once parseColor is available - opacity: 0.5 - } - } - } - }; - - $.plot.plugins.push({ - init: init, - options: options, - name: "pie", - version: "1.1" - }); - -})(jQuery); diff --git a/assets/js/plugins/flot/jquery.flot.resize.js b/assets/js/plugins/flot/jquery.flot.resize.js deleted file mode 100644 index 8a626dda..00000000 --- a/assets/js/plugins/flot/jquery.flot.resize.js +++ /dev/null @@ -1,59 +0,0 @@ -/* Flot plugin for automatically redrawing plots as the placeholder resizes. - -Copyright (c) 2007-2014 IOLA and Ole Laursen. -Licensed under the MIT license. - -It works by listening for changes on the placeholder div (through the jQuery -resize event plugin) - if the size changes, it will redraw the plot. - -There are no options. If you need to disable the plugin for some plots, you -can just fix the size of their placeholders. - -*/ - -/* Inline dependency: - * jQuery resize event - v1.1 - 3/14/2010 - * http://benalman.com/projects/jquery-resize-plugin/ - * - * Copyright (c) 2010 "Cowboy" Ben Alman - * Dual licensed under the MIT and GPL licenses. - * http://benalman.com/about/license/ - */ -(function($,e,t){"$:nomunge";var i=[],n=$.resize=$.extend($.resize,{}),a,r=false,s="setTimeout",u="resize",m=u+"-special-event",o="pendingDelay",l="activeDelay",f="throttleWindow";n[o]=200;n[l]=20;n[f]=true;$.event.special[u]={setup:function(){if(!n[f]&&this[s]){return false}var e=$(this);i.push(this);e.data(m,{w:e.width(),h:e.height()});if(i.length===1){a=t;h()}},teardown:function(){if(!n[f]&&this[s]){return false}var e=$(this);for(var t=i.length-1;t>=0;t--){if(i[t]==this){i.splice(t,1);break}}e.removeData(m);if(!i.length){if(r){cancelAnimationFrame(a)}else{clearTimeout(a)}a=null}},add:function(e){if(!n[f]&&this[s]){return false}var i;function a(e,n,a){var r=$(this),s=r.data(m)||{};s.w=n!==t?n:r.width();s.h=a!==t?a:r.height();i.apply(this,arguments)}if($.isFunction(e)){i=e;return a}else{i=e.handler;e.handler=a}}};function h(t){if(r===true){r=t||1}for(var s=i.length-1;s>=0;s--){var l=$(i[s]);if(l[0]==e||l.is(":visible")){var f=l.width(),c=l.height(),d=l.data(m);if(d&&(f!==d.w||c!==d.h)){l.trigger(u,[d.w=f,d.h=c]);r=t||true}}else{d=l.data(m);d.w=0;d.h=0}}if(a!==null){if(r&&(t==null||t-r<1e3)){a=e.requestAnimationFrame(h)}else{a=setTimeout(h,n[o]);r=false}}}if(!e.requestAnimationFrame){e.requestAnimationFrame=function(){return e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame||e.oRequestAnimationFrame||e.msRequestAnimationFrame||function(t,i){return e.setTimeout(function(){t((new Date).getTime())},n[l])}}()}if(!e.cancelAnimationFrame){e.cancelAnimationFrame=function(){return e.webkitCancelRequestAnimationFrame||e.mozCancelRequestAnimationFrame||e.oCancelRequestAnimationFrame||e.msCancelRequestAnimationFrame||clearTimeout}()}})(jQuery,this); - -(function ($) { - var options = { }; // no options - - function init(plot) { - function onResize() { - var placeholder = plot.getPlaceholder(); - - // somebody might have hidden us and we can't plot - // when we don't have the dimensions - if (placeholder.width() == 0 || placeholder.height() == 0) - return; - - plot.resize(); - plot.setupGrid(); - plot.draw(); - } - - function bindEvents(plot, eventHolder) { - plot.getPlaceholder().resize(onResize); - } - - function shutdown(plot, eventHolder) { - plot.getPlaceholder().unbind("resize", onResize); - } - - plot.hooks.bindEvents.push(bindEvents); - plot.hooks.shutdown.push(shutdown); - } - - $.plot.plugins.push({ - init: init, - options: options, - name: 'resize', - version: '1.0' - }); -})(jQuery); diff --git a/assets/js/plugins/flot/jquery.flot.spline.js b/assets/js/plugins/flot/jquery.flot.spline.js deleted file mode 100644 index bc16f483..00000000 --- a/assets/js/plugins/flot/jquery.flot.spline.js +++ /dev/null @@ -1,212 +0,0 @@ -/** - * Flot plugin that provides spline interpolation for line graphs - * author: Alex Bardas < alex.bardas@gmail.com > - * modified by: Avi Kohn https://github.com/AMKohn - * based on the spline interpolation described at: - * http://scaledinnovation.com/analytics/splines/aboutSplines.html - * - * Example usage: (add in plot options series object) - * for linespline: - * series: { - * ... - * lines: { - * show: false - * }, - * splines: { - * show: true, - * tension: x, (float between 0 and 1, defaults to 0.5), - * lineWidth: y (number, defaults to 2), - * fill: z (float between 0 .. 1 or false, as in flot documentation) - * }, - * ... - * } - * areaspline: - * series: { - * ... - * lines: { - * show: true, - * lineWidth: 0, (line drawing will not execute) - * fill: x, (float between 0 .. 1, as in flot documentation) - * ... - * }, - * splines: { - * show: true, - * tension: 0.5 (float between 0 and 1) - * }, - * ... - * } - * - */ - -(function($) { - 'use strict' - - /** - * @param {Number} x0, y0, x1, y1: coordinates of the end (knot) points of the segment - * @param {Number} x2, y2: the next knot (not connected, but needed to calculate p2) - * @param {Number} tension: control how far the control points spread - * @return {Array}: p1 -> control point, from x1 back toward x0 - * p2 -> the next control point, returned to become the next segment's p1 - * - * @api private - */ - function getControlPoints(x0, y0, x1, y1, x2, y2, tension) { - - var pow = Math.pow, - sqrt = Math.sqrt, - d01, d12, fa, fb, p1x, p1y, p2x, p2y; - - // Scaling factors: distances from this knot to the previous and following knots. - d01 = sqrt(pow(x1 - x0, 2) + pow(y1 - y0, 2)); - d12 = sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2)); - - fa = tension * d01 / (d01 + d12); - fb = tension - fa; - - p1x = x1 + fa * (x0 - x2); - p1y = y1 + fa * (y0 - y2); - - p2x = x1 - fb * (x0 - x2); - p2y = y1 - fb * (y0 - y2); - - return [p1x, p1y, p2x, p2y]; - } - - var line = []; - - function drawLine(points, ctx, height, fill, seriesColor) { - var c = $.color.parse(seriesColor); - - c.a = typeof fill == "number" ? fill : .3; - c.normalize(); - c = c.toString(); - - ctx.beginPath(); - ctx.moveTo(points[0][0], points[0][1]); - - var plength = points.length; - - for (var i = 0; i < plength; i++) { - ctx[points[i][3]].apply(ctx, points[i][2]); - } - - ctx.stroke(); - - ctx.lineWidth = 0; - ctx.lineTo(points[plength - 1][0], height); - ctx.lineTo(points[0][0], height); - - ctx.closePath(); - - if (fill !== false) { - ctx.fillStyle = c; - ctx.fill(); - } - } - - /** - * @param {Object} ctx: canvas context - * @param {String} type: accepted strings: 'bezier' or 'quadratic' (defaults to quadratic) - * @param {Array} points: 2 points for which to draw the interpolation - * @param {Array} cpoints: control points for those segment points - * - * @api private - */ - function queue(ctx, type, points, cpoints) { - if (type === void 0 || (type !== 'bezier' && type !== 'quadratic')) { - type = 'quadratic'; - } - type = type + 'CurveTo'; - - if (line.length == 0) line.push([points[0], points[1], cpoints.concat(points.slice(2)), type]); - else if (type == "quadraticCurveTo" && points.length == 2) { - cpoints = cpoints.slice(0, 2).concat(points); - - line.push([points[0], points[1], cpoints, type]); - } - else line.push([points[2], points[3], cpoints.concat(points.slice(2)), type]); - } - - /** - * @param {Object} plot - * @param {Object} ctx: canvas context - * @param {Object} series - * - * @api private - */ - - function drawSpline(plot, ctx, series) { - // Not interested if spline is not requested - if (series.splines.show !== true) { - return; - } - - var cp = [], - // array of control points - tension = series.splines.tension || 0.5, - idx, x, y, points = series.datapoints.points, - ps = series.datapoints.pointsize, - plotOffset = plot.getPlotOffset(), - len = points.length, - pts = []; - - line = []; - - // Cannot display a linespline/areaspline if there are less than 3 points - if (len / ps < 4) { - $.extend(series.lines, series.splines); - return; - } - - for (idx = 0; idx < len; idx += ps) { - x = points[idx]; - y = points[idx + 1]; - if (x == null || x < series.xaxis.min || x > series.xaxis.max || y < series.yaxis.min || y > series.yaxis.max) { - continue; - } - - pts.push(series.xaxis.p2c(x) + plotOffset.left, series.yaxis.p2c(y) + plotOffset.top); - } - - len = pts.length; - - // Draw an open curve, not connected at the ends - for (idx = 0; idx < len - 2; idx += 2) { - cp = cp.concat(getControlPoints.apply(this, pts.slice(idx, idx + 6).concat([tension]))); - } - - ctx.save(); - ctx.strokeStyle = series.color; - ctx.lineWidth = series.splines.lineWidth; - - queue(ctx, 'quadratic', pts.slice(0, 4), cp.slice(0, 2)); - - for (idx = 2; idx < len - 3; idx += 2) { - queue(ctx, 'bezier', pts.slice(idx, idx + 4), cp.slice(2 * idx - 2, 2 * idx + 2)); - } - - queue(ctx, 'quadratic', pts.slice(len - 2, len), [cp[2 * len - 10], cp[2 * len - 9], pts[len - 4], pts[len - 3]]); - - drawLine(line, ctx, plot.height() + 10, series.splines.fill, series.color); - - ctx.restore(); - } - - $.plot.plugins.push({ - init: function(plot) { - plot.hooks.drawSeries.push(drawSpline); - }, - options: { - series: { - splines: { - show: false, - lineWidth: 2, - tension: 0.5, - fill: false - } - } - }, - name: 'spline', - version: '0.8.2' - }); -})(jQuery); diff --git a/assets/js/plugins/flot/jquery.flot.symbol.js b/assets/js/plugins/flot/jquery.flot.symbol.js deleted file mode 100644 index 79f63497..00000000 --- a/assets/js/plugins/flot/jquery.flot.symbol.js +++ /dev/null @@ -1,71 +0,0 @@ -/* Flot plugin that adds some extra symbols for plotting points. - -Copyright (c) 2007-2014 IOLA and Ole Laursen. -Licensed under the MIT license. - -The symbols are accessed as strings through the standard symbol options: - - series: { - points: { - symbol: "square" // or "diamond", "triangle", "cross" - } - } - -*/ - -(function ($) { - function processRawData(plot, series, datapoints) { - // we normalize the area of each symbol so it is approximately the - // same as a circle of the given radius - - var handlers = { - square: function (ctx, x, y, radius, shadow) { - // pi * r^2 = (2s)^2 => s = r * sqrt(pi)/2 - var size = radius * Math.sqrt(Math.PI) / 2; - ctx.rect(x - size, y - size, size + size, size + size); - }, - diamond: function (ctx, x, y, radius, shadow) { - // pi * r^2 = 2s^2 => s = r * sqrt(pi/2) - var size = radius * Math.sqrt(Math.PI / 2); - ctx.moveTo(x - size, y); - ctx.lineTo(x, y - size); - ctx.lineTo(x + size, y); - ctx.lineTo(x, y + size); - ctx.lineTo(x - size, y); - }, - triangle: function (ctx, x, y, radius, shadow) { - // pi * r^2 = 1/2 * s^2 * sin (pi / 3) => s = r * sqrt(2 * pi / sin(pi / 3)) - var size = radius * Math.sqrt(2 * Math.PI / Math.sin(Math.PI / 3)); - var height = size * Math.sin(Math.PI / 3); - ctx.moveTo(x - size/2, y + height/2); - ctx.lineTo(x + size/2, y + height/2); - if (!shadow) { - ctx.lineTo(x, y - height/2); - ctx.lineTo(x - size/2, y + height/2); - } - }, - cross: function (ctx, x, y, radius, shadow) { - // pi * r^2 = (2s)^2 => s = r * sqrt(pi)/2 - var size = radius * Math.sqrt(Math.PI) / 2; - ctx.moveTo(x - size, y - size); - ctx.lineTo(x + size, y + size); - ctx.moveTo(x - size, y + size); - ctx.lineTo(x + size, y - size); - } - }; - - var s = series.points.symbol; - if (handlers[s]) - series.points.symbol = handlers[s]; - } - - function init(plot) { - plot.hooks.processDatapoints.push(processRawData); - } - - $.plot.plugins.push({ - init: init, - name: 'symbols', - version: '1.0' - }); -})(jQuery); diff --git a/assets/js/plugins/flot/jquery.flot.time.js b/assets/js/plugins/flot/jquery.flot.time.js deleted file mode 100644 index 34c1d121..00000000 --- a/assets/js/plugins/flot/jquery.flot.time.js +++ /dev/null @@ -1,432 +0,0 @@ -/* Pretty handling of time axes. - -Copyright (c) 2007-2014 IOLA and Ole Laursen. -Licensed under the MIT license. - -Set axis.mode to "time" to enable. See the section "Time series data" in -API.txt for details. - -*/ - -(function($) { - - var options = { - xaxis: { - timezone: null, // "browser" for local to the client or timezone for timezone-js - timeformat: null, // format string to use - twelveHourClock: false, // 12 or 24 time in time mode - monthNames: null // list of names of months - } - }; - - // round to nearby lower multiple of base - - function floorInBase(n, base) { - return base * Math.floor(n / base); - } - - // Returns a string with the date d formatted according to fmt. - // A subset of the Open Group's strftime format is supported. - - function formatDate(d, fmt, monthNames, dayNames) { - - if (typeof d.strftime == "function") { - return d.strftime(fmt); - } - - var leftPad = function(n, pad) { - n = "" + n; - pad = "" + (pad == null ? "0" : pad); - return n.length == 1 ? pad + n : n; - }; - - var r = []; - var escape = false; - var hours = d.getHours(); - var isAM = hours < 12; - - if (monthNames == null) { - monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; - } - - if (dayNames == null) { - dayNames = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; - } - - var hours12; - - if (hours > 12) { - hours12 = hours - 12; - } else if (hours == 0) { - hours12 = 12; - } else { - hours12 = hours; - } - - for (var i = 0; i < fmt.length; ++i) { - - var c = fmt.charAt(i); - - if (escape) { - switch (c) { - case 'a': c = "" + dayNames[d.getDay()]; break; - case 'b': c = "" + monthNames[d.getMonth()]; break; - case 'd': c = leftPad(d.getDate()); break; - case 'e': c = leftPad(d.getDate(), " "); break; - case 'h': // For back-compat with 0.7; remove in 1.0 - case 'H': c = leftPad(hours); break; - case 'I': c = leftPad(hours12); break; - case 'l': c = leftPad(hours12, " "); break; - case 'm': c = leftPad(d.getMonth() + 1); break; - case 'M': c = leftPad(d.getMinutes()); break; - // quarters not in Open Group's strftime specification - case 'q': - c = "" + (Math.floor(d.getMonth() / 3) + 1); break; - case 'S': c = leftPad(d.getSeconds()); break; - case 'y': c = leftPad(d.getFullYear() % 100); break; - case 'Y': c = "" + d.getFullYear(); break; - case 'p': c = (isAM) ? ("" + "am") : ("" + "pm"); break; - case 'P': c = (isAM) ? ("" + "AM") : ("" + "PM"); break; - case 'w': c = "" + d.getDay(); break; - } - r.push(c); - escape = false; - } else { - if (c == "%") { - escape = true; - } else { - r.push(c); - } - } - } - - return r.join(""); - } - - // To have a consistent view of time-based data independent of which time - // zone the client happens to be in we need a date-like object independent - // of time zones. This is done through a wrapper that only calls the UTC - // versions of the accessor methods. - - function makeUtcWrapper(d) { - - function addProxyMethod(sourceObj, sourceMethod, targetObj, targetMethod) { - sourceObj[sourceMethod] = function() { - return targetObj[targetMethod].apply(targetObj, arguments); - }; - }; - - var utc = { - date: d - }; - - // support strftime, if found - - if (d.strftime != undefined) { - addProxyMethod(utc, "strftime", d, "strftime"); - } - - addProxyMethod(utc, "getTime", d, "getTime"); - addProxyMethod(utc, "setTime", d, "setTime"); - - var props = ["Date", "Day", "FullYear", "Hours", "Milliseconds", "Minutes", "Month", "Seconds"]; - - for (var p = 0; p < props.length; p++) { - addProxyMethod(utc, "get" + props[p], d, "getUTC" + props[p]); - addProxyMethod(utc, "set" + props[p], d, "setUTC" + props[p]); - } - - return utc; - }; - - // select time zone strategy. This returns a date-like object tied to the - // desired timezone - - function dateGenerator(ts, opts) { - if (opts.timezone == "browser") { - return new Date(ts); - } else if (!opts.timezone || opts.timezone == "utc") { - return makeUtcWrapper(new Date(ts)); - } else if (typeof timezoneJS != "undefined" && typeof timezoneJS.Date != "undefined") { - var d = new timezoneJS.Date(); - // timezone-js is fickle, so be sure to set the time zone before - // setting the time. - d.setTimezone(opts.timezone); - d.setTime(ts); - return d; - } else { - return makeUtcWrapper(new Date(ts)); - } - } - - // map of app. size of time units in milliseconds - - var timeUnitSize = { - "second": 1000, - "minute": 60 * 1000, - "hour": 60 * 60 * 1000, - "day": 24 * 60 * 60 * 1000, - "month": 30 * 24 * 60 * 60 * 1000, - "quarter": 3 * 30 * 24 * 60 * 60 * 1000, - "year": 365.2425 * 24 * 60 * 60 * 1000 - }; - - // the allowed tick sizes, after 1 year we use - // an integer algorithm - - var baseSpec = [ - [1, "second"], [2, "second"], [5, "second"], [10, "second"], - [30, "second"], - [1, "minute"], [2, "minute"], [5, "minute"], [10, "minute"], - [30, "minute"], - [1, "hour"], [2, "hour"], [4, "hour"], - [8, "hour"], [12, "hour"], - [1, "day"], [2, "day"], [3, "day"], - [0.25, "month"], [0.5, "month"], [1, "month"], - [2, "month"] - ]; - - // we don't know which variant(s) we'll need yet, but generating both is - // cheap - - var specMonths = baseSpec.concat([[3, "month"], [6, "month"], - [1, "year"]]); - var specQuarters = baseSpec.concat([[1, "quarter"], [2, "quarter"], - [1, "year"]]); - - function init(plot) { - plot.hooks.processOptions.push(function (plot, options) { - $.each(plot.getAxes(), function(axisName, axis) { - - var opts = axis.options; - - if (opts.mode == "time") { - axis.tickGenerator = function(axis) { - - var ticks = []; - var d = dateGenerator(axis.min, opts); - var minSize = 0; - - // make quarter use a possibility if quarters are - // mentioned in either of these options - - var spec = (opts.tickSize && opts.tickSize[1] === - "quarter") || - (opts.minTickSize && opts.minTickSize[1] === - "quarter") ? specQuarters : specMonths; - - if (opts.minTickSize != null) { - if (typeof opts.tickSize == "number") { - minSize = opts.tickSize; - } else { - minSize = opts.minTickSize[0] * timeUnitSize[opts.minTickSize[1]]; - } - } - - for (var i = 0; i < spec.length - 1; ++i) { - if (axis.delta < (spec[i][0] * timeUnitSize[spec[i][1]] - + spec[i + 1][0] * timeUnitSize[spec[i + 1][1]]) / 2 - && spec[i][0] * timeUnitSize[spec[i][1]] >= minSize) { - break; - } - } - - var size = spec[i][0]; - var unit = spec[i][1]; - - // special-case the possibility of several years - - if (unit == "year") { - - // if given a minTickSize in years, just use it, - // ensuring that it's an integer - - if (opts.minTickSize != null && opts.minTickSize[1] == "year") { - size = Math.floor(opts.minTickSize[0]); - } else { - - var magn = Math.pow(10, Math.floor(Math.log(axis.delta / timeUnitSize.year) / Math.LN10)); - var norm = (axis.delta / timeUnitSize.year) / magn; - - if (norm < 1.5) { - size = 1; - } else if (norm < 3) { - size = 2; - } else if (norm < 7.5) { - size = 5; - } else { - size = 10; - } - - size *= magn; - } - - // minimum size for years is 1 - - if (size < 1) { - size = 1; - } - } - - axis.tickSize = opts.tickSize || [size, unit]; - var tickSize = axis.tickSize[0]; - unit = axis.tickSize[1]; - - var step = tickSize * timeUnitSize[unit]; - - if (unit == "second") { - d.setSeconds(floorInBase(d.getSeconds(), tickSize)); - } else if (unit == "minute") { - d.setMinutes(floorInBase(d.getMinutes(), tickSize)); - } else if (unit == "hour") { - d.setHours(floorInBase(d.getHours(), tickSize)); - } else if (unit == "month") { - d.setMonth(floorInBase(d.getMonth(), tickSize)); - } else if (unit == "quarter") { - d.setMonth(3 * floorInBase(d.getMonth() / 3, - tickSize)); - } else if (unit == "year") { - d.setFullYear(floorInBase(d.getFullYear(), tickSize)); - } - - // reset smaller components - - d.setMilliseconds(0); - - if (step >= timeUnitSize.minute) { - d.setSeconds(0); - } - if (step >= timeUnitSize.hour) { - d.setMinutes(0); - } - if (step >= timeUnitSize.day) { - d.setHours(0); - } - if (step >= timeUnitSize.day * 4) { - d.setDate(1); - } - if (step >= timeUnitSize.month * 2) { - d.setMonth(floorInBase(d.getMonth(), 3)); - } - if (step >= timeUnitSize.quarter * 2) { - d.setMonth(floorInBase(d.getMonth(), 6)); - } - if (step >= timeUnitSize.year) { - d.setMonth(0); - } - - var carry = 0; - var v = Number.NaN; - var prev; - - do { - - prev = v; - v = d.getTime(); - ticks.push(v); - - if (unit == "month" || unit == "quarter") { - if (tickSize < 1) { - - // a bit complicated - we'll divide the - // month/quarter up but we need to take - // care of fractions so we don't end up in - // the middle of a day - - d.setDate(1); - var start = d.getTime(); - d.setMonth(d.getMonth() + - (unit == "quarter" ? 3 : 1)); - var end = d.getTime(); - d.setTime(v + carry * timeUnitSize.hour + (end - start) * tickSize); - carry = d.getHours(); - d.setHours(0); - } else { - d.setMonth(d.getMonth() + - tickSize * (unit == "quarter" ? 3 : 1)); - } - } else if (unit == "year") { - d.setFullYear(d.getFullYear() + tickSize); - } else { - d.setTime(v + step); - } - } while (v < axis.max && v != prev); - - return ticks; - }; - - axis.tickFormatter = function (v, axis) { - - var d = dateGenerator(v, axis.options); - - // first check global format - - if (opts.timeformat != null) { - return formatDate(d, opts.timeformat, opts.monthNames, opts.dayNames); - } - - // possibly use quarters if quarters are mentioned in - // any of these places - - var useQuarters = (axis.options.tickSize && - axis.options.tickSize[1] == "quarter") || - (axis.options.minTickSize && - axis.options.minTickSize[1] == "quarter"); - - var t = axis.tickSize[0] * timeUnitSize[axis.tickSize[1]]; - var span = axis.max - axis.min; - var suffix = (opts.twelveHourClock) ? " %p" : ""; - var hourCode = (opts.twelveHourClock) ? "%I" : "%H"; - var fmt; - - if (t < timeUnitSize.minute) { - fmt = hourCode + ":%M:%S" + suffix; - } else if (t < timeUnitSize.day) { - if (span < 2 * timeUnitSize.day) { - fmt = hourCode + ":%M" + suffix; - } else { - fmt = "%b %d " + hourCode + ":%M" + suffix; - } - } else if (t < timeUnitSize.month) { - fmt = "%b %d"; - } else if ((useQuarters && t < timeUnitSize.quarter) || - (!useQuarters && t < timeUnitSize.year)) { - if (span < timeUnitSize.year) { - fmt = "%b"; - } else { - fmt = "%b %Y"; - } - } else if (useQuarters && t < timeUnitSize.year) { - if (span < timeUnitSize.year) { - fmt = "Q%q"; - } else { - fmt = "Q%q %Y"; - } - } else { - fmt = "%Y"; - } - - var rt = formatDate(d, fmt, opts.monthNames, opts.dayNames); - - return rt; - }; - } - }); - }); - } - - $.plot.plugins.push({ - init: init, - options: options, - name: 'time', - version: '1.0' - }); - - // Time-axis support used to be in Flot core, which exposed the - // formatDate function on the plot object. Various plugins depend - // on the function, so we need to re-expose it here. - - $.plot.formatDate = formatDate; - $.plot.dateGenerator = dateGenerator; - -})(jQuery); diff --git a/assets/js/plugins/flot/jquery.flot.tooltip.min.js b/assets/js/plugins/flot/jquery.flot.tooltip.min.js deleted file mode 100644 index 09e3bbf5..00000000 --- a/assets/js/plugins/flot/jquery.flot.tooltip.min.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - * jquery.flot.tooltip - * - * description: easy-to-use tooltips for Flot charts - * version: 0.6.2 - * author: Krzysztof Urbas @krzysu [myviews.pl] - * website: https://github.com/krzysu/flot.tooltip - * - * build on 2013-09-30 - * released under MIT License, 2012 -*/ -(function(t){var o={tooltip:!1,tooltipOpts:{content:"%s | X: %x | Y: %y",xDateFormat:null,yDateFormat:null,shifts:{x:10,y:20},defaultTheme:!0,onHover:function(){}}},i=function(t){this.tipPosition={x:0,y:0},this.init(t)};i.prototype.init=function(o){function i(t){var o={};o.x=t.pageX,o.y=t.pageY,s.updateTooltipPosition(o)}function e(t,o,i){var e=s.getDomElement();if(i){var n;n=s.stringFormat(s.tooltipOptions.content,i),e.html(n),s.updateTooltipPosition({x:o.pageX,y:o.pageY}),e.css({left:s.tipPosition.x+s.tooltipOptions.shifts.x,top:s.tipPosition.y+s.tooltipOptions.shifts.y}).show(),"function"==typeof s.tooltipOptions.onHover&&s.tooltipOptions.onHover(i,e)}else e.hide().html("")}var s=this;o.hooks.bindEvents.push(function(o,n){s.plotOptions=o.getOptions(),s.plotOptions.tooltip!==!1&&void 0!==s.plotOptions.tooltip&&(s.tooltipOptions=s.plotOptions.tooltipOpts,s.getDomElement(),t(o.getPlaceholder()).bind("plothover",e),t(n).bind("mousemove",i))}),o.hooks.shutdown.push(function(o,s){t(o.getPlaceholder()).unbind("plothover",e),t(s).unbind("mousemove",i)})},i.prototype.getDomElement=function(){var o;return t("#flotTip").length>0?o=t("#flotTip"):(o=t("<div />").attr("id","flotTip"),o.appendTo("body").hide().css({position:"absolute"}),this.tooltipOptions.defaultTheme&&o.css({background:"#fff","z-index":"100",padding:"0.4em 0.6em","border-radius":"0.5em","font-size":"0.8em",border:"1px solid #111",display:"none","white-space":"nowrap"})),o},i.prototype.updateTooltipPosition=function(o){var i=t("#flotTip").outerWidth()+this.tooltipOptions.shifts.x,e=t("#flotTip").outerHeight()+this.tooltipOptions.shifts.y;o.x-t(window).scrollLeft()>t(window).innerWidth()-i&&(o.x-=i),o.y-t(window).scrollTop()>t(window).innerHeight()-e&&(o.y-=e),this.tipPosition.x=o.x,this.tipPosition.y=o.y},i.prototype.stringFormat=function(t,o){var i=/%p\.{0,1}(\d{0,})/,e=/%s/,s=/%x\.{0,1}(?:\d{0,})/,n=/%y\.{0,1}(?:\d{0,})/;return"function"==typeof t&&(t=t(o.series.label,o.series.data[o.dataIndex][0],o.series.data[o.dataIndex][1],o)),o.series.percent!==void 0&&(t=this.adjustValPrecision(i,t,o.series.percent)),o.series.label!==void 0&&(t=t.replace(e,o.series.label)),this.isTimeMode("xaxis",o)&&this.isXDateFormat(o)&&(t=t.replace(s,this.timestampToDate(o.series.data[o.dataIndex][0],this.tooltipOptions.xDateFormat))),this.isTimeMode("yaxis",o)&&this.isYDateFormat(o)&&(t=t.replace(n,this.timestampToDate(o.series.data[o.dataIndex][1],this.tooltipOptions.yDateFormat))),"number"==typeof o.series.data[o.dataIndex][0]&&(t=this.adjustValPrecision(s,t,o.series.data[o.dataIndex][0])),"number"==typeof o.series.data[o.dataIndex][1]&&(t=this.adjustValPrecision(n,t,o.series.data[o.dataIndex][1])),o.series.xaxis.tickFormatter!==void 0&&(t=t.replace(s,o.series.xaxis.tickFormatter(o.series.data[o.dataIndex][0],o.series.xaxis))),o.series.yaxis.tickFormatter!==void 0&&(t=t.replace(n,o.series.yaxis.tickFormatter(o.series.data[o.dataIndex][1],o.series.yaxis))),t},i.prototype.isTimeMode=function(t,o){return o.series[t].options.mode!==void 0&&"time"===o.series[t].options.mode},i.prototype.isXDateFormat=function(){return this.tooltipOptions.xDateFormat!==void 0&&null!==this.tooltipOptions.xDateFormat},i.prototype.isYDateFormat=function(){return this.tooltipOptions.yDateFormat!==void 0&&null!==this.tooltipOptions.yDateFormat},i.prototype.timestampToDate=function(o,i){var e=new Date(o);return t.plot.formatDate(e,i)},i.prototype.adjustValPrecision=function(t,o,i){var e,s=o.match(t);return null!==s&&""!==RegExp.$1&&(e=RegExp.$1,i=i.toFixed(e),o=o.replace(t,i)),o};var e=function(t){new i(t)};t.plot.plugins.push({init:e,options:o,name:"tooltip",version:"0.6.1"})})(jQuery); \ No newline at end of file diff --git a/assets/js/plugins/fullcalendar/fullcalendar.min.js b/assets/js/plugins/fullcalendar/fullcalendar.min.js deleted file mode 100644 index fcbf126f..00000000 --- a/assets/js/plugins/fullcalendar/fullcalendar.min.js +++ /dev/null @@ -1,8 +0,0 @@ -/*! - * FullCalendar v2.2.0 - * Docs & License: http://arshaw.com/fullcalendar/ - * (c) 2013 Adam Shaw - */ -(function(t){"function"==typeof define&&define.amd?define(["jquery","moment"],t):t(jQuery,moment)})(function(t,e){function n(t,e){return e.longDateFormat("LT").replace(":mm","(:mm)").replace(/(\Wmm)$/,"($1)").replace(/\s*a$/i,"t")}function i(t,e){var n=e.longDateFormat("L");return n=n.replace(/^Y+[^\w\s]*|[^\w\s]*Y+$/g,""),t.isRTL?n+=" ddd":n="ddd "+n,n}function r(t){s(Fe,t)}function s(e){function n(n,i){t.isPlainObject(i)&&t.isPlainObject(e[n])&&!o(n)?e[n]=s({},e[n],i):void 0!==i&&(e[n]=i)}for(var i=1;arguments.length>i;i++)t.each(arguments[i],n);return e}function o(t){return/(Time|Duration)$/.test(t)}function l(n,i){function r(t){var n=e.localeData||e.langData;return n.call(e,t)||n.call(e,"en")}function o(t){ne?u()&&(p(),f(t)):l()}function l(){ie=K.theme?"ui":"fc",n.addClass("fc"),K.isRTL?n.addClass("fc-rtl"):n.addClass("fc-ltr"),K.theme?n.addClass("ui-widget"):n.addClass("fc-unthemed"),ne=t("<div class='fc-view-container'/>").prependTo(n),te=new a(q,K),ee=te.render(),ee&&n.prepend(ee),h(K.defaultView),K.handleWindowResize&&(oe=_(v,K.windowResizeDelay),t(window).resize(oe))}function d(){re&&re.destroy(),te.destroy(),ne.remove(),n.removeClass("fc fc-ltr fc-rtl fc-unthemed ui-widget"),t(window).unbind("resize",oe)}function u(){return n.is(":visible")}function h(t){f(0,t)}function f(e,n){ue++,re&&n&&re.name!==n&&(te.deactivateButton(re.name),B(),re.start&&re.destroy(),re.el.remove(),re=null),!re&&n&&(re=new Ge[n](q),re.el=t("<div class='fc-view fc-"+n+"-view' />").appendTo(ne),te.activateButton(n)),re&&(e&&(le=re.incrementDate(le,e)),re.start&&!e&&le.isWithin(re.intervalStart,re.intervalEnd)||u()&&(B(),re.start&&re.destroy(),re.render(le),I(),C(),H(),b())),I(),ue--}function g(t){return u()?(t&&m(),ue++,re.updateSize(!0),ue--,!0):void 0}function p(){u()&&m()}function m(){se="number"==typeof K.contentHeight?K.contentHeight:"number"==typeof K.height?K.height-(ee?ee.outerHeight(!0):0):Math.round(ne.width()/Math.max(K.aspectRatio,.5))}function v(t){!ue&&t.target===window&&re.start&&g(!0)&&re.trigger("windowResize",de)}function y(){S(),E()}function w(){u()&&(B(),re.destroyEvents(),re.renderEvents(he),I())}function S(){B(),re.destroyEvents(),I()}function b(){!K.lazyFetching||ae(re.start,re.end)?E():w()}function E(){ce(re.start,re.end)}function D(t){he=t,w()}function T(){w()}function C(){te.updateTitle(re.title)}function H(){var t=q.getNow();t.isWithin(re.intervalStart,re.intervalEnd)?te.disableButton("today"):te.enableButton("today")}function x(t,e){t=q.moment(t),e=e?q.moment(e):t.hasTime()?t.clone().add(q.defaultTimedEventDuration):t.clone().add(q.defaultAllDayEventDuration),re.select(t,e)}function k(){re&&re.unselect()}function R(){f(-1)}function P(){f(1)}function F(){le.add(-1,"years"),f()}function L(){le.add(1,"years"),f()}function G(){le=q.getNow(),f()}function N(t){le=q.moment(t),f()}function A(t){le.add(e.duration(t)),f()}function Y(t,e){var n,i;e&&void 0!==Ge[e]||(e=e||"day",n=te.getViewsWithButtons().join(" "),i=n.match(RegExp("\\w+"+z(e))),i||(i=n.match(/\w+Day/)),e=i?i[0]:"agendaDay"),le=t,h(e)}function V(){return le.clone()}function B(){ne.css({width:"100%",height:ne.height(),overflow:"hidden"})}function I(){ne.css({width:"",height:"",overflow:""})}function Z(){return q}function j(){return re}function X(t,e){return void 0===e?K[t]:(("height"==t||"contentHeight"==t||"aspectRatio"==t)&&(K[t]=e,g(!0)),void 0)}function $(t,e){return K[t]?K[t].apply(e||de,Array.prototype.slice.call(arguments,2)):void 0}var q=this;i=i||{};var U,K=s({},Fe,i);U=K.lang in Le?Le[K.lang]:Le[Fe.lang],U&&(K=s({},Fe,U,i)),K.isRTL&&(K=s({},Fe,ze,U||{},i)),q.options=K,q.render=o,q.destroy=d,q.refetchEvents=y,q.reportEvents=D,q.reportEventChange=T,q.rerenderEvents=w,q.changeView=h,q.select=x,q.unselect=k,q.prev=R,q.next=P,q.prevYear=F,q.nextYear=L,q.today=G,q.gotoDate=N,q.incrementDate=A,q.zoomTo=Y,q.getDate=V,q.getCalendar=Z,q.getView=j,q.option=X,q.trigger=$;var Q=M(r(K.lang));if(K.monthNames&&(Q._months=K.monthNames),K.monthNamesShort&&(Q._monthsShort=K.monthNamesShort),K.dayNames&&(Q._weekdays=K.dayNames),K.dayNamesShort&&(Q._weekdaysShort=K.dayNamesShort),null!=K.firstDay){var J=M(Q._week);J.dow=K.firstDay,Q._week=J}q.defaultAllDayEventDuration=e.duration(K.defaultAllDayEventDuration),q.defaultTimedEventDuration=e.duration(K.defaultTimedEventDuration),q.moment=function(){var t;return"local"===K.timezone?(t=_e.moment.apply(null,arguments),t.hasTime()&&t.local()):t="UTC"===K.timezone?_e.moment.utc.apply(null,arguments):_e.moment.parseZone.apply(null,arguments),"_locale"in t?t._locale=Q:t._lang=Q,t},q.getIsAmbigTimezone=function(){return"local"!==K.timezone&&"UTC"!==K.timezone},q.rezoneDate=function(t){return q.moment(t.toArray())},q.getNow=function(){var t=K.now;return"function"==typeof t&&(t=t()),q.moment(t)},q.calculateWeekNumber=function(t){var e=K.weekNumberCalculation;return"function"==typeof e?e(t):"local"===e?t.week():"ISO"===e.toUpperCase()?t.isoWeek():void 0},q.getEventEnd=function(t){return t.end?t.end.clone():q.getDefaultEventEnd(t.allDay,t.start)},q.getDefaultEventEnd=function(t,e){var n=e.clone();return t?n.stripTime().add(q.defaultAllDayEventDuration):n.add(q.defaultTimedEventDuration),q.getIsAmbigTimezone()&&n.stripZone(),n},q.formatRange=function(t,e,n){return"function"==typeof n&&(n=n.call(q,K,Q)),W(t,e,n,null,K.isRTL)},q.formatDate=function(t,e){return"function"==typeof e&&(e=e.call(q,K,Q)),O(t,e)},c.call(q,K);var te,ee,ne,ie,re,se,oe,le,ae=q.isFetchNeeded,ce=q.fetchEvents,de=n[0],ue=0,he=[];le=null!=K.defaultDate?q.moment(K.defaultDate):q.getNow(),q.getSuggestedViewHeight=function(){return void 0===se&&p(),se},q.isHeightAuto=function(){return"auto"===K.contentHeight||"auto"===K.height}}function a(e,n){function i(){var e=n.header;return f=n.theme?"ui":"fc",e?g=t("<div class='fc-toolbar'/>").append(s("left")).append(s("right")).append(s("center")).append('<div class="fc-clear"/>'):void 0}function r(){g.remove()}function s(i){var r=t('<div class="fc-'+i+'"/>'),s=n.header[i];return s&&t.each(s.split(" "),function(){var i,s=t(),o=!0;t.each(this.split(","),function(i,r){var l,a,c,d,u,h,g,m;"title"==r?(s=s.add(t("<h2>&nbsp;</h2>")),o=!1):(e[r]?l=function(){e[r]()}:Ge[r]&&(l=function(){e.changeView(r)},p.push(r)),l&&(a=T(n.themeButtonIcons,r),c=T(n.buttonIcons,r),d=T(n.defaultButtonText,r),u=T(n.buttonText,r),h=u?F(u):a&&n.theme?"<span class='ui-icon ui-icon-"+a+"'></span>":c&&!n.theme?"<span class='fc-icon fc-icon-"+c+"'></span>":F(d||r),g=["fc-"+r+"-button",f+"-button",f+"-state-default"],m=t('<button type="button" class="'+g.join(" ")+'">'+h+"</button>").click(function(){m.hasClass(f+"-state-disabled")||(l(),(m.hasClass(f+"-state-active")||m.hasClass(f+"-state-disabled"))&&m.removeClass(f+"-state-hover"))}).mousedown(function(){m.not("."+f+"-state-active").not("."+f+"-state-disabled").addClass(f+"-state-down")}).mouseup(function(){m.removeClass(f+"-state-down")}).hover(function(){m.not("."+f+"-state-active").not("."+f+"-state-disabled").addClass(f+"-state-hover")},function(){m.removeClass(f+"-state-hover").removeClass(f+"-state-down")}),s=s.add(m)))}),o&&s.first().addClass(f+"-corner-left").end().last().addClass(f+"-corner-right").end(),s.length>1?(i=t("<div/>"),o&&i.addClass("fc-button-group"),i.append(s),r.append(i)):r.append(s)}),r}function o(t){g.find("h2").text(t)}function l(t){g.find(".fc-"+t+"-button").addClass(f+"-state-active")}function a(t){g.find(".fc-"+t+"-button").removeClass(f+"-state-active")}function c(t){g.find(".fc-"+t+"-button").attr("disabled","disabled").addClass(f+"-state-disabled")}function d(t){g.find(".fc-"+t+"-button").removeAttr("disabled").removeClass(f+"-state-disabled")}function u(){return p}var h=this;h.render=i,h.destroy=r,h.updateTitle=o,h.activateButton=l,h.deactivateButton=a,h.disableButton=c,h.enableButton=d,h.getViewsWithButtons=u;var f,g=t(),p=[]}function c(n){function i(t,e){return!A||t.clone().stripZone()<A.clone().stripZone()||e.clone().stripZone()>Y.clone().stripZone()}function r(t,e){A=t,Y=e,q=[];var n=++j,i=Z.length;X=i;for(var r=0;i>r;r++)s(Z[r],n)}function s(e,n){o(e,function(i){var r,s,o,l=t.isArray(e.events);if(n==j){if(i)for(r=0;i.length>r;r++)s=i[r],o=l?s:S(s,e),o&&q.push.apply(q,E(o));X--,X||B(q)}})}function o(e,i){var r,s,l=_e.sourceFetchers;for(r=0;l.length>r;r++){if(s=l[r].call(N,e,A.clone(),Y.clone(),n.timezone,i),s===!0)return;if("object"==typeof s)return o(s,i),void 0}var a=e.events;if(a)t.isFunction(a)?(y(),a.call(N,A.clone(),Y.clone(),n.timezone,function(t){i(t),w()})):t.isArray(a)?i(a):i();else{var c=e.url;if(c){var d,u=e.success,h=e.error,f=e.complete;d=t.isFunction(e.data)?e.data():e.data;var g=t.extend({},d||{}),p=P(e.startParam,n.startParam),m=P(e.endParam,n.endParam),v=P(e.timezoneParam,n.timezoneParam);p&&(g[p]=A.format()),m&&(g[m]=Y.format()),n.timezone&&"local"!=n.timezone&&(g[v]=n.timezone),y(),t.ajax(t.extend({},Ne,e,{data:g,success:function(e){e=e||[];var n=R(u,this,arguments);t.isArray(n)&&(e=n),i(e)},error:function(){R(h,this,arguments),i()},complete:function(){R(f,this,arguments),w()}}))}else i()}}function l(t){var e=a(t);e&&(Z.push(e),X++,s(e,j))}function a(e){var n,i,r=_e.sourceNormalizers;if(t.isFunction(e)||t.isArray(e)?n={events:e}:"string"==typeof e?n={url:e}:"object"==typeof e&&(n=t.extend({},e)),n){for(n.className?"string"==typeof n.className&&(n.className=n.className.split(/\s+/)):n.className=[],t.isArray(n.events)&&(n.origArray=n.events,n.events=t.map(n.events,function(t){return S(t,n)})),i=0;r.length>i;i++)r[i].call(N,n);return n}}function c(e){Z=t.grep(Z,function(t){return!u(t,e)}),q=t.grep(q,function(t){return!u(t.source,e)}),B(q)}function u(t,e){return t&&e&&h(t)==h(e)}function h(t){return("object"==typeof t?t.origArray||t.url||t.events:null)||t}function f(t){t.start=N.moment(t.start),t.end&&(t.end=N.moment(t.end)),D(t),g(t),B(q)}function g(t){var e,n,i,r;for(e=0;q.length>e;e++)if(n=q[e],n._id==t._id&&n!==t)for(i=0;U.length>i;i++)r=U[i],void 0!==t[r]&&(n[r]=t[r])}function p(t,e){var n,i,r,s=S(t);if(s){for(n=E(s),i=0;n.length>i;i++)r=n[i],r.source||(e&&(W.events.push(r),r.source=W),q.push(r));return B(q),n}return[]}function m(e){var n,i;for(null==e?e=function(){return!0}:t.isFunction(e)||(n=e+"",e=function(t){return t._id==n}),q=t.grep(q,e,!0),i=0;Z.length>i;i++)t.isArray(Z[i].events)&&(Z[i].events=t.grep(Z[i].events,e,!0));B(q)}function v(e){return t.isFunction(e)?t.grep(q,e):null!=e?(e+="",t.grep(q,function(t){return t._id==e})):q}function y(){$++||V("loading",null,!0,O())}function w(){--$||V("loading",null,!1,O())}function S(i,r){var s,o,l,a,c={};if(n.eventDataTransform&&(i=n.eventDataTransform(i)),r&&r.eventDataTransform&&(i=r.eventDataTransform(i)),t.extend(c,i),r&&(c.source=r),c._id=i._id||(void 0===i.id?"_fc"+Ae++:i.id+""),c.className=i.className?"string"==typeof i.className?i.className.split(/\s+/):i.className:[],s=i.start||i.date,o=i.end,k(s)&&(s=e.duration(s)),k(o)&&(o=e.duration(o)),i.dow||e.isDuration(s)||e.isDuration(o))c.start=s?e.duration(s):null,c.end=o?e.duration(o):null,c._recurring=!0;else{if(s&&(s=N.moment(s),!s.isValid()))return!1;if(o&&(o=N.moment(o),!o.isValid()))return!1;l=i.allDay,void 0===l&&(a=P(r?r.allDayDefault:void 0,n.allDayDefault),l=void 0!==a?a:!(s.hasTime()||o&&o.hasTime())),b(s,o,l,c)}return c}function b(t,e,i,r){i?(t.hasTime()&&t.stripTime(),e&&e.hasTime()&&e.stripTime()):(t.hasTime()||(t=N.rezoneDate(t)),e&&!e.hasTime()&&(e=N.rezoneDate(e))),r.allDay=i,r.start=t,r.end=e||null,n.forceEventDuration&&!r.end&&(r.end=I(r)),d(r)}function E(e){var n,i,r,s,o,l,a,c,d,u,h=[],f=A,g=Y;if(f&&g||(n=N.getView(),f=n.start,g=n.end),e)if(e._recurring){if(r=e.dow)for(i={},s=0;r.length>s;s++)i[r[s]]=!0;for(o=f.clone().stripTime();o.isBefore(g);)(!i||i[o.day()])&&(l=e.start,a=e.end,c=o.clone(),d=null,l&&(c=c.time(l)),a&&(d=o.clone().time(a)),u=t.extend({},e),b(c,d,!l&&!a,u),h.push(u)),o.add(1,"days")}else h.push(e);return h}function D(t,e,n){var i,r,s,o,l=t._allDay,a=t._start,c=t._end,d=!1;return e||n||(e=t.start,n=t.end),i=t.allDay!=l?t.allDay:!(e||n).hasTime(),i&&(e&&(e=e.clone().stripTime()),n&&(n=n.clone().stripTime())),e&&(r=i?C(e,a.clone().stripTime()):C(e,a)),i!=l?d=!0:n&&(s=C(n||N.getDefaultEventEnd(i,e||a),e||a).subtract(C(c||N.getDefaultEventEnd(l,a),a))),o=T(v(t._id),d,i,r,s),{dateDelta:r,durationDelta:s,undo:o}}function T(e,i,r,s,o){var l=N.getIsAmbigTimezone(),a=[];return t.each(e,function(t,e){var c=e._allDay,u=e._start,h=e._end,f=null!=r?r:c,g=u.clone(),p=!i&&h?h.clone():null;f?(g.stripTime(),p&&p.stripTime()):(g.hasTime()||(g=N.rezoneDate(g)),p&&!p.hasTime()&&(p=N.rezoneDate(p))),p||!n.forceEventDuration&&!+o||(p=N.getDefaultEventEnd(f,g)),g.add(s),p&&p.add(s).add(o),l&&(+s||+o)&&(g.stripZone(),p&&p.stripZone()),e.allDay=f,e.start=g,e.end=p,d(e),a.push(function(){e.allDay=c,e.start=u,e.end=h,d(e)})}),function(){for(var t=0;a.length>t;t++)a[t]()}}function H(){var e,i=n.businessHours,r={className:"fc-nonbusiness",start:"09:00",end:"17:00",dow:[1,2,3,4,5],rendering:"inverse-background"};return i&&(e="object"==typeof i?t.extend({},r,i):r),e?E(S(e)):[]}function x(t,e,i){var r=t.source||{},s=P(t.constraint,r.constraint,n.eventConstraint),o=P(t.overlap,r.overlap,n.eventOverlap);return L(e,i,s,o,t)}function M(t,e){return L(t,e,n.selectConstraint,n.selectOverlap)}function F(t,e,n){var i;return n&&(i=E(S(n))[0])?x(i,t,e):M(t,e)}function L(t,e,n,i,r){var s,o,l,a,c;if(t=t.clone().stripZone(),e=e.clone().stripZone(),null!=n){for(s=z(n),o=!1,l=0;s.length>l;l++)if(_(s[l],t,e)){o=!0;break}if(!o)return!1}for(l=0;q.length>l;l++)if(a=q[l],(!r||r._id!==a._id)&&G(a,t,e)){if(i===!1)return!1;if("function"==typeof i&&!i(a,r))return!1;if(r){if(c=P(a.overlap,(a.source||{}).overlap),c===!1)return!1;if("function"==typeof c&&!c(r,a))return!1}}return!0}function z(t){return"businessHours"===t?H():"object"==typeof t?E(S(t)):v(t)}function _(t,e,n){var i=t.start.clone().stripZone(),r=N.getEventEnd(t).stripZone();return e>=i&&r>=n}function G(t,e,n){var i=t.start.clone().stripZone(),r=N.getEventEnd(t).stripZone();return r>e&&n>i}var N=this;N.isFetchNeeded=i,N.fetchEvents=r,N.addEventSource=l,N.removeEventSource=c,N.updateEvent=f,N.renderEvent=p,N.removeEvents=m,N.clientEvents=v,N.mutateEvent=D;var A,Y,V=N.trigger,O=N.getView,B=N.reportEvents,I=N.getEventEnd,W={events:[]},Z=[W],j=0,X=0,$=0,q=[];t.each((n.events?[n.events]:[]).concat(n.eventSources||[]),function(t,e){var n=a(e);n&&Z.push(n)});var U=["title","url","allDay","className","editable","color","backgroundColor","borderColor","textColor"];N.getBusinessHoursEvents=H,N.isEventAllowedInRange=x,N.isSelectionAllowedInRange=M,N.isExternalDragAllowedInRange=F}function d(t){t._allDay=t.allDay,t._start=t.start.clone(),t._end=t.end?t.end.clone():null}function u(t,e){e.left&&t.css({"border-left-width":1,"margin-left":e.left-1}),e.right&&t.css({"border-right-width":1,"margin-right":e.right-1})}function h(t){t.css({"margin-left":"","margin-right":"","border-left-width":"","border-right-width":""})}function f(){t("body").addClass("fc-not-allowed")}function g(){t("body").removeClass("fc-not-allowed")}function p(e,n,i){var r=Math.floor(n/e.length),s=Math.floor(n-r*(e.length-1)),o=[],l=[],a=[],c=0;m(e),e.each(function(n,i){var d=n===e.length-1?s:r,u=t(i).outerHeight(!0);d>u?(o.push(i),l.push(u),a.push(t(i).height())):c+=u}),i&&(n-=c,r=Math.floor(n/o.length),s=Math.floor(n-r*(o.length-1))),t(o).each(function(e,n){var i=e===o.length-1?s:r,c=l[e],d=a[e],u=i-(c-d);i>c&&t(n).height(u)})}function m(t){t.height("")}function v(e){var n=0;return e.find("> *").each(function(e,i){var r=t(i).outerWidth();r>n&&(n=r)}),n++,e.width(n),n}function y(t,e){return t.height(e).addClass("fc-scroller"),t[0].scrollHeight-1>t[0].clientHeight?!0:(w(t),!1)}function w(t){t.height("").removeClass("fc-scroller")}function S(e){var n=e.css("position"),i=e.parents().filter(function(){var e=t(this);return/(auto|scroll)/.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==n&&i.length?i:t(e[0].ownerDocument||document)}function b(t){var e=t.offset().left,n=e+t.width(),i=t.children(),r=i.offset().left,s=r+i.outerWidth();return{left:r-e,right:n-s}}function E(t){return 1==t.which&&!t.ctrlKey}function D(t,e,n,i){var r,s,o,l;return e>n&&i>t?(t>=n?(r=t.clone(),o=!0):(r=n.clone(),o=!1),i>=e?(s=e.clone(),l=!0):(s=i.clone(),l=!1),{start:r,end:s,isStart:o,isEnd:l}):void 0}function T(t,e){if(t=t||{},void 0!==t[e])return t[e];for(var n,i=e.split(/(?=[A-Z])/),r=i.length-1;r>=0;r--)if(n=t[i[r].toLowerCase()],void 0!==n)return n;return t["default"]}function C(t,n){return e.duration({days:t.clone().stripTime().diff(n.clone().stripTime(),"days"),ms:t.time()-n.time()})}function H(t){return"[object Date]"===Object.prototype.toString.call(t)||t instanceof Date}function x(t,e){return t-e}function k(t){return/^\d+\:\d+(?:\:\d+\.?(?:\d{3})?)?$/.test(t)}function M(t){var e=function(){};return e.prototype=t,new e}function R(e,n,i){if(t.isFunction(e)&&(e=[e]),e){var r,s;for(r=0;e.length>r;r++)s=e[r].apply(n,i)||s;return s}}function P(){for(var t=0;arguments.length>t;t++)if(void 0!==arguments[t])return arguments[t]}function F(t){return(t+"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&#039;").replace(/"/g,"&quot;").replace(/\n/g,"<br />")}function L(t){return t.replace(/&.*?;/g,"")}function z(t){return t.charAt(0).toUpperCase()+t.slice(1)}function _(t,e){var n,i,r,s,o=function(){var l=+new Date-s;e>l&&l>0?n=setTimeout(o,e-l):(n=null,t.apply(r,i),n||(r=i=null))};return function(){r=this,i=arguments,s=+new Date,n||(n=setTimeout(o,e))}}function G(n,i,r){var s,o,l,a,c=n[0],d=1==n.length&&"string"==typeof c;return e.isMoment(c)?(a=e.apply(null,n),A(c,a)):H(c)||void 0===c?a=e.apply(null,n):(s=!1,o=!1,d?Ie.test(c)?(c+="-01",n=[c],s=!0,o=!0):(l=We.exec(c))&&(s=!l[5],o=!0):t.isArray(c)&&(o=!0),a=i?e.utc.apply(e,n):e.apply(null,n),s?(a._ambigTime=!0,a._ambigZone=!0):r&&(o?a._ambigZone=!0:d&&a.zone(c))),a._fullCalendar=!0,a}function N(t,e){var n,i=[],r=!1,s=!1;for(n=0;t.length>n;n++)i.push(_e.moment.parseZone(t[n])),r=r||i[n]._ambigTime,s=s||i[n]._ambigZone;for(n=0;i.length>n;n++)r&&!e?i[n].stripTime():s&&i[n].stripZone();return i}function A(t,e){t._ambigTime?e._ambigTime=!0:e._ambigTime&&(e._ambigTime=!1),t._ambigZone?e._ambigZone=!0:e._ambigZone&&(e._ambigZone=!1)}function Y(t,e){t.year(e[0]||0).month(e[1]||0).date(e[2]||0).hours(e[3]||0).minutes(e[4]||0).seconds(e[5]||0).milliseconds(e[6]||0)}function V(t,e){return je.format.call(t,e)}function O(t,e){return B(t,X(e))}function B(t,e){var n,i="";for(n=0;e.length>n;n++)i+=I(t,e[n]);return i}function I(t,e){var n,i;return"string"==typeof e?e:(n=e.token)?Xe[n]?Xe[n](t):V(t,n):e.maybe&&(i=B(t,e.maybe),i.match(/[1-9]/))?i:""}function W(t,e,n,i,r){var s;return t=_e.moment.parseZone(t),e=_e.moment.parseZone(e),s=(t.localeData||t.lang).call(t),n=s.longDateFormat(n)||n,i=i||" - ",Z(t,e,X(n),i,r)}function Z(t,e,n,i,r){var s,o,l,a,c="",d="",u="",h="",f="";for(o=0;n.length>o&&(s=j(t,e,n[o]),s!==!1);o++)c+=s;for(l=n.length-1;l>o&&(s=j(t,e,n[l]),s!==!1);l--)d=s+d;for(a=o;l>=a;a++)u+=I(t,n[a]),h+=I(e,n[a]);return(u||h)&&(f=r?h+i+u:u+i+h),c+f+d}function j(t,e,n){var i,r;return"string"==typeof n?n:(i=n.token)&&(r=$e[i.charAt(0)],r&&t.isSame(e,r))?V(t,i):!1}function X(t){return t in qe?qe[t]:qe[t]=$(t)}function $(t){for(var e,n=[],i=/\[([^\]]*)\]|\(([^\)]*)\)|(LT|(\w)\4*o?)|([^\w\[\(]+)/g;e=i.exec(t);)e[1]?n.push(e[1]):e[2]?n.push({maybe:$(e[2])}):e[3]?n.push({token:e[3]}):e[5]&&n.push(e[5]);return n}function q(t){this.options=t||{}}function U(t){this.grid=t}function K(t){this.coordMaps=t}function Q(t,e){this.coordMap=t,this.options=e||{}}function J(t,e){return t||e?t&&e?t.grid===e.grid&&t.row===e.row&&t.col===e.col:!1:!0}function te(e,n){this.options=n=n||{},this.sourceEl=e,this.parentEl=n.parentEl?t(n.parentEl):e.parent()}function ee(t){this.view=t}function ne(t){ee.call(this,t),this.coordMap=new U(this),this.elsByFill={}}function ie(t){var e=se(t);return"background"===e||"inverse-background"===e}function re(t){return"inverse-background"===se(t)}function se(t){return P((t.source||{}).rendering,t.rendering)}function oe(t){var e,n,i={};for(e=0;t.length>e;e++)n=t[e],(i[n._id]||(i[n._id]=[])).push(n);return i}function le(t,e){return t.eventStartMS-e.eventStartMS}function ae(t,e){return t.eventStartMS-e.eventStartMS||e.eventDurationMS-t.eventDurationMS||e.event.allDay-t.event.allDay||(t.event.title||"").localeCompare(e.event.title)}function ce(t){ne.call(this,t)}function de(t,e){var n,i;for(n=0;e.length>n;n++)if(i=e[n],i.leftCol<=t.rightCol&&i.rightCol>=t.leftCol)return!0;return!1}function ue(t,e){return t.leftCol-e.leftCol}function he(t){ne.call(this,t)}function fe(t){var e,n,i;if(t.sort(ae),e=ge(t),pe(e),n=e[0]){for(i=0;n.length>i;i++)me(n[i]);for(i=0;n.length>i;i++)ve(n[i],0,0)}}function ge(t){var e,n,i,r=[];for(e=0;t.length>e;e++){for(n=t[e],i=0;r.length>i&&ye(n,r[i]).length;i++);n.level=i,(r[i]||(r[i]=[])).push(n)}return r}function pe(t){var e,n,i,r,s;for(e=0;t.length>e;e++)for(n=t[e],i=0;n.length>i;i++)for(r=n[i],r.forwardSegs=[],s=e+1;t.length>s;s++)ye(r,t[s],r.forwardSegs)}function me(t){var e,n,i=t.forwardSegs,r=0;if(void 0===t.forwardPressure){for(e=0;i.length>e;e++)n=i[e],me(n),r=Math.max(r,1+n.forwardPressure);t.forwardPressure=r}}function ve(t,e,n){var i,r=t.forwardSegs;if(void 0===t.forwardCoord)for(r.length?(r.sort(Se),ve(r[0],e+1,n),t.forwardCoord=r[0].backwardCoord):t.forwardCoord=1,t.backwardCoord=t.forwardCoord-(t.forwardCoord-n)/(e+1),i=0;r.length>i;i++)ve(r[i],0,t.forwardCoord)}function ye(t,e,n){n=n||[];for(var i=0;e.length>i;i++)we(t,e[i])&&n.push(e[i]);return n}function we(t,e){return t.bottom>e.top&&t.top<e.bottom}function Se(t,e){return e.forwardPressure-t.forwardPressure||(t.backwardCoord||0)-(e.backwardCoord||0)||ae(t,e)}function be(n){function i(e){var n=x[e];return t.isPlainObject(n)&&!o(e)?T(n,C.name):n}function r(t,e){return n.trigger.apply(n,[t,e||C].concat(Array.prototype.slice.call(arguments,2),[C]))}function s(t){var e=t.source||{};return P(t.startEditable,e.startEditable,i("eventStartEditable"),t.editable,e.editable,i("editable"))}function l(t){var e=t.source||{};return P(t.durationEditable,e.durationEditable,i("eventDurationEditable"),t.editable,e.editable,i("editable"))}function a(t,e,i,s){var o=n.mutateEvent(e,i,null);r("eventDrop",t,e,o.dateDelta,function(){o.undo(),H()},s,{}),H()}function c(t,e,i,s){var o=n.mutateEvent(e,null,i);r("eventResize",t,e,o.durationDelta,function(){o.undo(),H()},s,{}),H()}function d(t){return e.isMoment(t)&&(t=t.day()),F[t]}function u(){return M}function h(t,e,n){var i=t.clone();for(e=e||1;F[(i.day()+(n?e:0)+7)%7];)i.add(e,"days");return i}function f(){var t=g.apply(null,arguments),e=p(t),n=m(e);return n}function g(t,e){var n=C.colCnt,i=_?-1:1,r=_?n-1:0;"object"==typeof t&&(e=t.col,t=t.row);var s=t*n+(e*i+r);return s}function p(t){var e=C.start.day();return t+=L[e],7*Math.floor(t/M)+z[(t%M+M)%M]-e}function m(t){return C.start.clone().add(t,"days")}function v(t){var e=y(t),n=w(e),i=S(n);return i}function y(t){return t.clone().stripTime().diff(C.start,"days")}function w(t){var e=C.start.day();return t+=e,Math.floor(t/7)*M+L[(t%7+7)%7]-L[e]}function S(t){var e=C.colCnt,n=_?-1:1,i=_?e-1:0,r=Math.floor(t/e),s=(t%e+e)%e*n+i;return{row:r,col:s}}function b(t,e){for(var n=C.rowCnt,i=C.colCnt,r=[],s=E(t,e),o=y(s.start),l=y(s.end),a=w(o),c=w(l)-1,d=0;n>d;d++){var u=d*i,h=u+i-1,f=Math.max(a,u),g=Math.min(c,h);if(g>=f){var m=S(f),v=S(g),b=[m.col,v.col].sort(),D=p(f)==o,T=p(g)+1==l;r.push({row:d,leftCol:b[0],rightCol:b[1],isStart:D,isEnd:T})}}return r}function E(t,e){var n,i,r=t.clone().stripTime();return e&&(n=e.clone().stripTime(),i=+e.time(),i&&i>=k&&n.add(1,"days")),(!e||r>=n)&&(n=r.clone().add(1,"days")),{start:r,end:n}}function D(t){var e=E(t.start,t.end);return e.end.diff(e.start,"days")>1}var C=this;C.calendar=n,C.opt=i,C.trigger=r,C.isEventDraggable=s,C.isEventResizable=l,C.eventDrop=a,C.eventResize=c;var H=n.reportEventChange,x=n.options,k=e.duration(x.nextDayThreshold);C.init(),C.getEventTimeText=function(t,e){var r,s;return"object"==typeof t&&"object"==typeof e?(r=t,s=e,e=arguments[2]):(r=t.start,s=t.end),e=e||i("timeFormat"),s&&i("displayEventEnd")?n.formatRange(r,s,e):n.formatDate(r,e)},C.isHiddenDay=d,C.skipHiddenDays=h,C.getCellsPerWeek=u,C.dateToCell=v,C.dateToDayOffset=y,C.dayOffsetToCellOffset=w,C.cellOffsetToCell=S,C.cellToDate=f,C.cellToCellOffset=g,C.cellOffsetToDayOffset=p,C.dayOffsetToDate=m,C.rangeToSegments=b,C.isMultiDayEvent=D;var M,R=i("hiddenDays")||[],F=[],L=[],z=[],_=i("isRTL");(function(){i("weekends")===!1&&R.push(0,6);for(var e=0,n=0;7>e;e++)L[e]=n,F[e]=-1!=t.inArray(e,R),F[e]||(z[n]=e,n++);if(M=n,!M)throw"invalid hiddenDays"})()}function Ee(n){var i,r,s,o,l=_e.dataAttrPrefix;return l&&(l+="-"),i=n.data(l+"event")||null,i&&(i="object"==typeof i?t.extend({},i):{},r=i.start,null==r&&(r=i.time),s=i.duration,o=i.stick,delete i.start,delete i.time,delete i.duration,delete i.stick),null==r&&(r=n.data(l+"start")),null==r&&(r=n.data(l+"time")),null==s&&(s=n.data(l+"duration")),null==o&&(o=n.data(l+"stick")),r=null!=r?e.duration(r):null,s=null!=s?e.duration(s):null,o=Boolean(o),{eventProps:i,startTime:r,duration:s,stick:o}}function De(t){be.call(this,t),this.dayGrid=new ce(this),this.coordMap=this.dayGrid.coordMap}function Te(t){De.call(this,t)}function Ce(t){De.call(this,t)}function He(t){De.call(this,t)}function xe(t,e){return e.longDateFormat("LT").replace(":mm","(:mm)").replace(/(\Wmm)$/,"($1)").replace(/\s*a$/i,"a")}function ke(t,e){return e.longDateFormat("LT").replace(/\s*a$/i,"")}function Me(t){be.call(this,t),this.timeGrid=new he(this),this.opt("allDaySlot")?(this.dayGrid=new ce(this),this.coordMap=new K([this.dayGrid.coordMap,this.timeGrid.coordMap])):this.coordMap=this.timeGrid.coordMap}function Re(t){Me.call(this,t)}function Pe(t){Me.call(this,t)}var Fe={lang:"en",defaultTimedEventDuration:"02:00:00",defaultAllDayEventDuration:{days:1},forceEventDuration:!1,nextDayThreshold:"09:00:00",defaultView:"month",aspectRatio:1.35,header:{left:"title",center:"",right:"today prev,next"},weekends:!0,weekNumbers:!1,weekNumberTitle:"W",weekNumberCalculation:"local",lazyFetching:!0,startParam:"start",endParam:"end",timezoneParam:"timezone",timezone:!1,titleFormat:{month:"MMMM YYYY",week:"ll",day:"LL"},columnFormat:{month:"ddd",week:i,day:"dddd"},timeFormat:{"default":n},displayEventEnd:{month:!1,basicWeek:!1,"default":!0},isRTL:!1,defaultButtonText:{prev:"prev",next:"next",prevYear:"prev year",nextYear:"next year",today:"today",month:"month",week:"week",day:"day"},buttonIcons:{prev:"left-single-arrow",next:"right-single-arrow",prevYear:"left-double-arrow",nextYear:"right-double-arrow"},theme:!1,themeButtonIcons:{prev:"circle-triangle-w",next:"circle-triangle-e",prevYear:"seek-prev",nextYear:"seek-next"},dragOpacity:.75,dragRevertDuration:500,dragScroll:!0,unselectAuto:!0,dropAccept:"*",eventLimit:!1,eventLimitText:"more",eventLimitClick:"popover",dayPopoverFormat:"LL",handleWindowResize:!0,windowResizeDelay:200},Le={en:{columnFormat:{week:"ddd M/D"},dayPopoverFormat:"dddd, MMMM D"}},ze={header:{left:"next,prev today",center:"",right:"title"},buttonIcons:{prev:"right-single-arrow",next:"left-single-arrow",prevYear:"right-double-arrow",nextYear:"left-double-arrow"},themeButtonIcons:{prev:"circle-triangle-e",next:"circle-triangle-w",nextYear:"seek-prev",prevYear:"seek-next"}},_e=t.fullCalendar={version:"2.2.0"},Ge=_e.views={};t.fn.fullCalendar=function(e){var n=Array.prototype.slice.call(arguments,1),i=this;return this.each(function(r,s){var o,a=t(s),c=a.data("fullCalendar");"string"==typeof e?c&&t.isFunction(c[e])&&(o=c[e].apply(c,n),r||(i=o),"destroy"===e&&a.removeData("fullCalendar")):c||(c=new l(a,e),a.data("fullCalendar",c),c.render())}),i},_e.langs=Le,_e.datepickerLang=function(e,n,i){var r=Le[e];r||(r=Le[e]={}),s(r,{isRTL:i.isRTL,weekNumberTitle:i.weekHeader,titleFormat:{month:i.showMonthAfterYear?"YYYY["+i.yearSuffix+"] MMMM":"MMMM YYYY["+i.yearSuffix+"]"},defaultButtonText:{prev:L(i.prevText),next:L(i.nextText),today:L(i.currentText)}}),t.datepicker&&(t.datepicker.regional[n]=t.datepicker.regional[e]=i,t.datepicker.regional.en=t.datepicker.regional[""],t.datepicker.setDefaults(i))},_e.lang=function(t,e){var n;e&&(n=Le[t],n||(n=Le[t]={}),s(n,e||{})),Fe.lang=t},_e.sourceNormalizers=[],_e.sourceFetchers=[];var Ne={dataType:"json",cache:!1},Ae=1,Ye=["sun","mon","tue","wed","thu","fri","sat"];_e.applyAll=R;var Ve,Oe,Be,Ie=/^\s*\d{4}-\d\d$/,We=/^\s*\d{4}-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?)?$/,Ze=e.fn,je=t.extend({},Ze);_e.moment=function(){return G(arguments)},_e.moment.utc=function(){var t=G(arguments,!0);return t.hasTime()&&t.utc(),t},_e.moment.parseZone=function(){return G(arguments,!0,!0)},Ze.clone=function(){var t=je.clone.apply(this,arguments);return A(this,t),this._fullCalendar&&(t._fullCalendar=!0),t},Ze.time=function(t){if(!this._fullCalendar)return je.time.apply(this,arguments);if(null==t)return e.duration({hours:this.hours(),minutes:this.minutes(),seconds:this.seconds(),milliseconds:this.milliseconds()});this._ambigTime=!1,e.isDuration(t)||e.isMoment(t)||(t=e.duration(t));var n=0;return e.isDuration(t)&&(n=24*Math.floor(t.asDays())),this.hours(n+t.hours()).minutes(t.minutes()).seconds(t.seconds()).milliseconds(t.milliseconds())},Ze.stripTime=function(){var t=this.toArray();return this.utc(),Oe(this,t.slice(0,3)),this._ambigTime=!0,this._ambigZone=!0,this},Ze.hasTime=function(){return!this._ambigTime},Ze.stripZone=function(){var t=this.toArray(),e=this._ambigTime;return this.utc(),Oe(this,t),e&&(this._ambigTime=!0),this._ambigZone=!0,this},Ze.hasZone=function(){return!this._ambigZone},Ze.zone=function(t){return null!=t&&(this._ambigTime=!1,this._ambigZone=!1),je.zone.apply(this,arguments)},Ze.local=function(){var t=this.toArray(),e=this._ambigZone;return je.local.apply(this,arguments),e&&Be(this,t),this},Ze.format=function(){return this._fullCalendar&&arguments[0]?O(this,arguments[0]):this._ambigTime?V(this,"YYYY-MM-DD"):this._ambigZone?V(this,"YYYY-MM-DD[T]HH:mm:ss"):je.format.apply(this,arguments)},Ze.toISOString=function(){return this._ambigTime?V(this,"YYYY-MM-DD"):this._ambigZone?V(this,"YYYY-MM-DD[T]HH:mm:ss"):je.toISOString.apply(this,arguments)},Ze.isWithin=function(t,e){var n=N([this,t,e]);return n[0]>=n[1]&&n[0]<n[2]},Ze.isSame=function(t,e){var n;return this._fullCalendar?e?(n=N([this,t],!0),je.isSame.call(n[0],n[1],e)):(t=_e.moment.parseZone(t),je.isSame.call(this,t)&&Boolean(this._ambigTime)===Boolean(t._ambigTime)&&Boolean(this._ambigZone)===Boolean(t._ambigZone)):je.isSame.apply(this,arguments)},t.each(["isBefore","isAfter"],function(t,e){Ze[e]=function(t,n){var i;return this._fullCalendar?(i=N([this,t]),je[e].call(i[0],i[1],n)):je[e].apply(this,arguments)}}),Ve="_d"in e()&&"updateOffset"in e,Oe=Ve?function(t,n){t._d.setTime(Date.UTC.apply(Date,n)),e.updateOffset(t,!1)}:Y,Be=Ve?function(t,n){t._d.setTime(+new Date(n[0]||0,n[1]||0,n[2]||0,n[3]||0,n[4]||0,n[5]||0,n[6]||0)),e.updateOffset(t,!1)}:Y;var Xe={t:function(t){return V(t,"a").charAt(0)},T:function(t){return V(t,"A").charAt(0)}};_e.formatRange=W;var $e={Y:"year",M:"month",D:"day",d:"day",A:"second",a:"second",T:"second",t:"second",H:"second",h:"second",m:"second",s:"second"},qe={};q.prototype={isHidden:!0,options:null,el:null,documentMousedownProxy:null,margin:10,show:function(){this.isHidden&&(this.el||this.render(),this.el.show(),this.position(),this.isHidden=!1,this.trigger("show"))},hide:function(){this.isHidden||(this.el.hide(),this.isHidden=!0,this.trigger("hide"))},render:function(){var e=this,n=this.options;this.el=t('<div class="fc-popover"/>').addClass(n.className||"").css({top:0,left:0}).append(n.content).appendTo(n.parentEl),this.el.on("click",".fc-close",function(){e.hide()}),n.autoHide&&t(document).on("mousedown",this.documentMousedownProxy=t.proxy(this,"documentMousedown"))},documentMousedown:function(e){this.el&&!t(e.target).closest(this.el).length&&this.hide()},destroy:function(){this.hide(),this.el&&(this.el.remove(),this.el=null),t(document).off("mousedown",this.documentMousedownProxy) -},position:function(){var e,n,i,r,s,o=this.options,l=this.el.offsetParent().offset(),a=this.el.outerWidth(),c=this.el.outerHeight(),d=t(window),u=S(this.el);r=o.top||0,s=void 0!==o.left?o.left:void 0!==o.right?o.right-a:0,u.is(window)||u.is(document)?(u=d,e=0,n=0):(i=u.offset(),e=i.top,n=i.left),e+=d.scrollTop(),n+=d.scrollLeft(),o.viewportConstrain!==!1&&(r=Math.min(r,e+u.outerHeight()-c-this.margin),r=Math.max(r,e+this.margin),s=Math.min(s,n+u.outerWidth()-a-this.margin),s=Math.max(s,n+this.margin)),this.el.css({top:r-l.top,left:s-l.left})},trigger:function(t){this.options[t]&&this.options[t].apply(this,Array.prototype.slice.call(arguments,1))}},U.prototype={grid:null,rows:null,cols:null,containerEl:null,minX:null,maxX:null,minY:null,maxY:null,build:function(){this.grid.buildCoords(this.rows=[],this.cols=[]),this.computeBounds()},getCell:function(t,e){var n,i=null,r=this.rows,s=this.cols,o=-1,l=-1;if(this.inBounds(t,e)){for(n=0;r.length>n;n++)if(e>=r[n][0]&&r[n][1]>e){o=n;break}for(n=0;s.length>n;n++)if(t>=s[n][0]&&s[n][1]>t){l=n;break}o>=0&&l>=0&&(i={row:o,col:l},i.grid=this.grid,i.date=this.grid.getCellDate(i))}return i},computeBounds:function(){var t;this.containerEl&&(t=this.containerEl.offset(),this.minX=t.left,this.maxX=t.left+this.containerEl.outerWidth(),this.minY=t.top,this.maxY=t.top+this.containerEl.outerHeight())},inBounds:function(t,e){return this.containerEl?t>=this.minX&&this.maxX>t&&e>=this.minY&&this.maxY>e:!0}},K.prototype={coordMaps:null,build:function(){var t,e=this.coordMaps;for(t=0;e.length>t;t++)e[t].build()},getCell:function(t,e){var n,i=this.coordMaps,r=null;for(n=0;i.length>n&&!r;n++)r=i[n].getCell(t,e);return r}},Q.prototype={coordMap:null,options:null,isListening:!1,isDragging:!1,origCell:null,origDate:null,cell:null,date:null,mouseX0:null,mouseY0:null,mousemoveProxy:null,mouseupProxy:null,scrollEl:null,scrollBounds:null,scrollTopVel:null,scrollLeftVel:null,scrollIntervalId:null,scrollHandlerProxy:null,scrollSensitivity:30,scrollSpeed:200,scrollIntervalMs:50,mousedown:function(t){E(t)&&(t.preventDefault(),this.startListening(t),this.options.distance||this.startDrag(t))},startListening:function(e){var n,i;this.isListening||(e&&this.options.scroll&&(n=S(t(e.target)),n.is(window)||n.is(document)||(this.scrollEl=n,this.scrollHandlerProxy=_(t.proxy(this,"scrollHandler"),100),this.scrollEl.on("scroll",this.scrollHandlerProxy))),this.computeCoords(),e&&(i=this.getCell(e),this.origCell=i,this.origDate=i?i.date:null,this.mouseX0=e.pageX,this.mouseY0=e.pageY),t(document).on("mousemove",this.mousemoveProxy=t.proxy(this,"mousemove")).on("mouseup",this.mouseupProxy=t.proxy(this,"mouseup")).on("selectstart",this.preventDefault),this.isListening=!0,this.trigger("listenStart",e))},computeCoords:function(){this.coordMap.build(),this.computeScrollBounds()},mousemove:function(t){var e,n;this.isDragging||(e=this.options.distance||1,n=Math.pow(t.pageX-this.mouseX0,2)+Math.pow(t.pageY-this.mouseY0,2),n>=e*e&&this.startDrag(t)),this.isDragging&&this.drag(t)},startDrag:function(t){var e;this.isListening||this.startListening(),this.isDragging||(this.isDragging=!0,this.trigger("dragStart",t),e=this.getCell(t),e&&this.cellOver(e,!0))},drag:function(t){var e;this.isDragging&&(e=this.getCell(t),J(e,this.cell)||(this.cell&&this.cellOut(),e&&this.cellOver(e)),this.dragScroll(t))},cellOver:function(t){this.cell=t,this.date=t.date,this.trigger("cellOver",t,t.date)},cellOut:function(){this.cell&&(this.trigger("cellOut",this.cell),this.cell=null,this.date=null)},mouseup:function(t){this.stopDrag(t),this.stopListening(t)},stopDrag:function(t){this.isDragging&&(this.stopScrolling(),this.trigger("dragStop",t),this.isDragging=!1)},stopListening:function(e){this.isListening&&(this.scrollEl&&(this.scrollEl.off("scroll",this.scrollHandlerProxy),this.scrollHandlerProxy=null),t(document).off("mousemove",this.mousemoveProxy).off("mouseup",this.mouseupProxy).off("selectstart",this.preventDefault),this.mousemoveProxy=null,this.mouseupProxy=null,this.isListening=!1,this.trigger("listenStop",e),this.origCell=this.cell=null,this.origDate=this.date=null)},getCell:function(t){return this.coordMap.getCell(t.pageX,t.pageY)},trigger:function(t){this.options[t]&&this.options[t].apply(this,Array.prototype.slice.call(arguments,1))},preventDefault:function(t){t.preventDefault()},computeScrollBounds:function(){var t,e=this.scrollEl;e&&(t=e.offset(),this.scrollBounds={top:t.top,left:t.left,bottom:t.top+e.outerHeight(),right:t.left+e.outerWidth()})},dragScroll:function(t){var e,n,i,r,s=this.scrollSensitivity,o=this.scrollBounds,l=0,a=0;o&&(e=(s-(t.pageY-o.top))/s,n=(s-(o.bottom-t.pageY))/s,i=(s-(t.pageX-o.left))/s,r=(s-(o.right-t.pageX))/s,e>=0&&1>=e?l=-1*e*this.scrollSpeed:n>=0&&1>=n&&(l=n*this.scrollSpeed),i>=0&&1>=i?a=-1*i*this.scrollSpeed:r>=0&&1>=r&&(a=r*this.scrollSpeed)),this.setScrollVel(l,a)},setScrollVel:function(e,n){this.scrollTopVel=e,this.scrollLeftVel=n,this.constrainScrollVel(),!this.scrollTopVel&&!this.scrollLeftVel||this.scrollIntervalId||(this.scrollIntervalId=setInterval(t.proxy(this,"scrollIntervalFunc"),this.scrollIntervalMs))},constrainScrollVel:function(){var t=this.scrollEl;0>this.scrollTopVel?0>=t.scrollTop()&&(this.scrollTopVel=0):this.scrollTopVel>0&&t.scrollTop()+t[0].clientHeight>=t[0].scrollHeight&&(this.scrollTopVel=0),0>this.scrollLeftVel?0>=t.scrollLeft()&&(this.scrollLeftVel=0):this.scrollLeftVel>0&&t.scrollLeft()+t[0].clientWidth>=t[0].scrollWidth&&(this.scrollLeftVel=0)},scrollIntervalFunc:function(){var t=this.scrollEl,e=this.scrollIntervalMs/1e3;this.scrollTopVel&&t.scrollTop(t.scrollTop()+this.scrollTopVel*e),this.scrollLeftVel&&t.scrollLeft(t.scrollLeft()+this.scrollLeftVel*e),this.constrainScrollVel(),this.scrollTopVel||this.scrollLeftVel||this.stopScrolling()},stopScrolling:function(){this.scrollIntervalId&&(clearInterval(this.scrollIntervalId),this.scrollIntervalId=null,this.computeCoords())},scrollHandler:function(){this.scrollIntervalId||this.computeCoords()}},te.prototype={options:null,sourceEl:null,el:null,parentEl:null,top0:null,left0:null,mouseY0:null,mouseX0:null,topDelta:null,leftDelta:null,mousemoveProxy:null,isFollowing:!1,isHidden:!1,isAnimating:!1,start:function(e){this.isFollowing||(this.isFollowing=!0,this.mouseY0=e.pageY,this.mouseX0=e.pageX,this.topDelta=0,this.leftDelta=0,this.isHidden||this.updatePosition(),t(document).on("mousemove",this.mousemoveProxy=t.proxy(this,"mousemove")))},stop:function(e,n){function i(){this.isAnimating=!1,r.destroyEl(),this.top0=this.left0=null,n&&n()}var r=this,s=this.options.revertDuration;this.isFollowing&&!this.isAnimating&&(this.isFollowing=!1,t(document).off("mousemove",this.mousemoveProxy),e&&s&&!this.isHidden?(this.isAnimating=!0,this.el.animate({top:this.top0,left:this.left0},{duration:s,complete:i})):i())},getEl:function(){var t=this.el;return t||(this.sourceEl.width(),t=this.el=this.sourceEl.clone().css({position:"absolute",visibility:"",display:this.isHidden?"none":"",margin:0,right:"auto",bottom:"auto",width:this.sourceEl.width(),height:this.sourceEl.height(),opacity:this.options.opacity||"",zIndex:this.options.zIndex}).appendTo(this.parentEl)),t},destroyEl:function(){this.el&&(this.el.remove(),this.el=null)},updatePosition:function(){var t,e;this.getEl(),null===this.top0&&(this.sourceEl.width(),t=this.sourceEl.offset(),e=this.el.offsetParent().offset(),this.top0=t.top-e.top,this.left0=t.left-e.left),this.el.css({top:this.top0+this.topDelta,left:this.left0+this.leftDelta})},mousemove:function(t){this.topDelta=t.pageY-this.mouseY0,this.leftDelta=t.pageX-this.mouseX0,this.isHidden||this.updatePosition()},hide:function(){this.isHidden||(this.isHidden=!0,this.el&&this.el.hide())},show:function(){this.isHidden&&(this.isHidden=!1,this.updatePosition(),this.getEl().show())}},ee.prototype={view:null,cellHtml:"<td/>",rowHtml:function(t,e){var n,i,r=this.view,s=this.getHtmlRenderer("cell",t),o="";for(e=e||0,n=0;r.colCnt>n;n++)i=r.cellToDate(e,n),o+=s(e,n,i);return o=this.bookendCells(o,t,e),"<tr>"+o+"</tr>"},bookendCells:function(t,e,n){var i=this.view,r=this.getHtmlRenderer("intro",e)(n||0),s=this.getHtmlRenderer("outro",e)(n||0),o=i.opt("isRTL"),l=o?s:r,a=o?r:s;return"string"==typeof t?l+t+a:t.prepend(l).append(a)},getHtmlRenderer:function(t,e){var n,i,r,s,o=this.view;return n=t+"Html",e&&(i=e+z(t)+"Html"),i&&(s=o[i])?r=o:i&&(s=this[i])?r=this:(s=o[n])?r=o:(s=this[n])&&(r=this),"function"==typeof s?function(){return s.apply(r,arguments)||""}:function(){return s||""}}},ne.prototype=M(ee.prototype),t.extend(ne.prototype,{el:null,coordMap:null,cellDuration:null,elsByFill:null,render:function(){this.bindHandlers()},destroy:function(){},buildCoords:function(){},getCellDate:function(){},getCellDayEl:function(){},rangeToSegs:function(){},bindHandlers:function(){var e=this;this.el.on("mousedown",function(n){t(n.target).is(".fc-event-container *, .fc-more")||t(n.target).closest(".fc-popover").length||e.dayMousedown(n)}),this.bindSegHandlers()},dayMousedown:function(t){var e,n,i,r=this,s=this.view,o=s.calendar,l=s.opt("selectable"),a=null,c=new Q(this.coordMap,{scroll:s.opt("dragScroll"),dragStart:function(){s.unselect()},cellOver:function(t,s){c.origDate&&(i=r.getCellDayEl(t),a=[s,c.origDate].sort(x),e=a[0],n=a[1].clone().add(r.cellDuration),l&&(o.isSelectionAllowedInRange(e,n)?r.renderSelection(e,n):(a=null,f())))},cellOut:function(){a=null,r.destroySelection(),g()},listenStop:function(t){a&&(a[0].isSame(a[1])&&s.trigger("dayClick",i[0],e,t),l&&s.reportSelection(e,n,t)),g()}});c.mousedown(t)},renderDrag:function(){},destroyDrag:function(){},renderResize:function(){},destroyResize:function(){},renderRangeHelper:function(t,e,n){var i,r=this.view;!e&&r.opt("forceEventDuration")&&(e=r.calendar.getDefaultEventEnd(!t.hasTime(),t)),i=n?M(n.event):{},i.start=t,i.end=e,i.allDay=!(t.hasTime()||e&&e.hasTime()),i.className=(i.className||[]).concat("fc-helper"),n||(i.editable=!1),this.renderHelper(i,n)},renderHelper:function(){},destroyHelper:function(){},renderSelection:function(t,e){this.renderHighlight(t,e)},destroySelection:function(){this.destroyHighlight()},renderHighlight:function(t,e){this.renderFill("highlight",this.rangeToSegs(t,e))},destroyHighlight:function(){this.destroyFill("highlight")},highlightSegClasses:function(){return["fc-highlight"]},renderFill:function(){},destroyFill:function(t){var e=this.elsByFill[t];e&&(e.remove(),delete this.elsByFill[t])},renderFillSegEls:function(e,n){var i,r=this,s=this[e+"SegEl"],o="",l=[];if(n.length){for(i=0;n.length>i;i++)o+=this.fillSegHtml(e,n[i]);t(o).each(function(e,i){var o=n[e],a=t(i);s&&(a=s.call(r,o,a)),a&&(a=t(a),a.is(r.fillSegTag)&&(o.el=a,l.push(o)))})}return l},fillSegTag:"div",fillSegHtml:function(t,e){var n=this[t+"SegClasses"],i=this[t+"SegStyles"],r=n?n.call(this,e):[],s=i?i.call(this,e):"";return"<"+this.fillSegTag+(r.length?' class="'+r.join(" ")+'"':"")+(s?' style="'+s+'"':"")+" />"},headHtml:function(){return'<div class="fc-row '+this.view.widgetHeaderClass+'">'+"<table>"+"<thead>"+this.rowHtml("head")+"</thead>"+"</table>"+"</div>"},headCellHtml:function(t,e,n){var i=this.view,r=i.calendar,s=i.opt("columnFormat");return'<th class="fc-day-header '+i.widgetHeaderClass+" fc-"+Ye[n.day()]+'">'+F(r.formatDate(n,s))+"</th>"},bgCellHtml:function(t,e,n){var i=this.view,r=this.getDayClasses(n);return r.unshift("fc-day",i.widgetContentClass),'<td class="'+r.join(" ")+'" data-date="'+n.format()+'"></td>'},getDayClasses:function(t){var e=this.view,n=e.calendar.getNow().stripTime(),i=["fc-"+Ye[t.day()]];return"month"===e.name&&t.month()!=e.intervalStart.month()&&i.push("fc-other-month"),t.isSame(n,"day")?i.push("fc-today",e.highlightStateClass):n>t?i.push("fc-past"):i.push("fc-future"),i}}),t.extend(ne.prototype,{mousedOverSeg:null,isDraggingSeg:!1,isResizingSeg:!1,segs:null,renderEvents:function(t){var e,n,i=this.eventsToSegs(t),r=[],s=[];for(e=0;i.length>e;e++)n=i[e],ie(n.event)?r.push(n):s.push(n);r=this.renderBgSegs(r)||r,s=this.renderFgSegs(s)||s,this.segs=r.concat(s)},destroyEvents:function(){this.triggerSegMouseout(),this.destroyFgSegs(),this.destroyBgSegs(),this.segs=null},getSegs:function(){return this.segs||[]},renderFgSegs:function(){},destroyFgSegs:function(){},renderFgSegEls:function(e,n){var i,r=this.view,s="",o=[];if(e.length){for(i=0;e.length>i;i++)s+=this.fgSegHtml(e[i],n);t(s).each(function(n,i){var s=e[n],l=r.resolveEventEl(s.event,t(i));l&&(l.data("fc-seg",s),s.el=l,o.push(s))})}return o},fgSegHtml:function(){},renderBgSegs:function(t){return this.renderFill("bgEvent",t)},destroyBgSegs:function(){this.destroyFill("bgEvent")},bgEventSegEl:function(t,e){return this.view.resolveEventEl(t.event,e)},bgEventSegClasses:function(t){var e=t.event,n=e.source||{};return["fc-bgevent"].concat(e.className,n.className||[])},bgEventSegStyles:function(t){var e=this.view,n=t.event,i=n.source||{},r=n.color,s=i.color,o=e.opt("eventColor"),l=n.backgroundColor||r||i.backgroundColor||s||e.opt("eventBackgroundColor")||o;return l?"background-color:"+l:""},businessHoursSegClasses:function(){return["fc-nonbusiness","fc-bgevent"]},bindSegHandlers:function(){var e=this,n=this.view;t.each({mouseenter:function(t,n){e.triggerSegMouseover(t,n)},mouseleave:function(t,n){e.triggerSegMouseout(t,n)},click:function(t,e){return n.trigger("eventClick",this,t.event,e)},mousedown:function(i,r){t(r.target).is(".fc-resizer")&&n.isEventResizable(i.event)?e.segResizeMousedown(i,r):n.isEventDraggable(i.event)&&e.segDragMousedown(i,r)}},function(n,i){e.el.on(n,".fc-event-container > *",function(n){var r=t(this).data("fc-seg");return!r||e.isDraggingSeg||e.isResizingSeg?void 0:i.call(this,r,n)})})},triggerSegMouseover:function(t,e){this.mousedOverSeg||(this.mousedOverSeg=t,this.view.trigger("eventMouseover",t.el[0],t.event,e))},triggerSegMouseout:function(t,e){e=e||{},this.mousedOverSeg&&(t=t||this.mousedOverSeg,this.mousedOverSeg=null,this.view.trigger("eventMouseout",t.el[0],t.event,e))},segDragMousedown:function(t,e){var n,i,r=this,s=this.view,o=s.calendar,l=t.el,a=t.event,c=new te(t.el,{parentEl:s.el,opacity:s.opt("dragOpacity"),revertDuration:s.opt("dragRevertDuration"),zIndex:2}),d=new Q(s.coordMap,{distance:5,scroll:s.opt("dragScroll"),listenStart:function(t){c.hide(),c.start(t)},dragStart:function(e){r.triggerSegMouseout(t,e),r.isDraggingSeg=!0,s.hideEvent(a),s.trigger("eventDragStart",l[0],a,e,{})},cellOver:function(e,l){var u=t.cellDate||d.origDate,h=r.computeDraggedEventDates(t,u,l);n=h.start,i=h.end,o.isEventAllowedInRange(a,n,h.visibleEnd)?s.renderDrag(n,i,t)?c.hide():c.show():(n=null,c.show(),f())},cellOut:function(){n=null,s.destroyDrag(),c.show(),g()},dragStop:function(t){var e=n&&!n.isSame(a.start);c.stop(!e,function(){r.isDraggingSeg=!1,s.destroyDrag(),s.showEvent(a),s.trigger("eventDragStop",l[0],a,t,{}),e&&s.eventDrop(l[0],a,n,t)}),g()},listenStop:function(){c.stop()}});d.mousedown(e)},computeDraggedEventDates:function(t,e,n){var i,r,s,o,l,a=this.view,c=t.event,d=c.start,u=a.calendar.getEventEnd(c);return n.hasTime()===e.hasTime()?(i=C(n,e),r=d.clone().add(i),s=null===c.end?null:u.clone().add(i),o=c.allDay):(r=n,s=null,o=!n.hasTime()),l=s||a.calendar.getDefaultEventEnd(o,r),{start:r,end:s,visibleEnd:l}},segResizeMousedown:function(t,e){function n(){r.destroyResize(),s.showEvent(a)}var i,r=this,s=this.view,o=s.calendar,l=t.el,a=t.event,c=a.start,d=s.calendar.getEventEnd(a),u=null;i=new Q(this.coordMap,{distance:5,scroll:s.opt("dragScroll"),dragStart:function(e){r.triggerSegMouseout(t,e),r.isResizingSeg=!0,s.trigger("eventResizeStart",l[0],a,e,{})},cellOver:function(e,i){i.isBefore(c)&&(i=c),u=i.clone().add(r.cellDuration),o.isEventAllowedInRange(a,c,u)?u.isSame(d)?(u=null,n()):(r.renderResize(c,u,t),s.hideEvent(a)):(u=null,n(),f())},cellOut:function(){u=null,n(),g()},dragStop:function(t){r.isResizingSeg=!1,n(),g(),s.trigger("eventResizeStop",l[0],a,t,{}),u&&s.eventResize(l[0],a,u,t)}}),i.mousedown(e)},getSegClasses:function(t,e,n){var i=t.event,r=["fc-event",t.isStart?"fc-start":"fc-not-start",t.isEnd?"fc-end":"fc-not-end"].concat(i.className,i.source?i.source.className:[]);return e&&r.push("fc-draggable"),n&&r.push("fc-resizable"),r},getEventSkinCss:function(t){var e=this.view,n=t.source||{},i=t.color,r=n.color,s=e.opt("eventColor"),o=t.backgroundColor||i||n.backgroundColor||r||e.opt("eventBackgroundColor")||s,l=t.borderColor||i||n.borderColor||r||e.opt("eventBorderColor")||s,a=t.textColor||n.textColor||e.opt("eventTextColor"),c=[];return o&&c.push("background-color:"+o),l&&c.push("border-color:"+l),a&&c.push("color:"+a),c.join(";")},eventsToSegs:function(t,e){var n,i=this.eventsToRanges(t),r=[];for(n=0;i.length>n;n++)r.push.apply(r,this.eventRangeToSegs(i[n],e));return r},eventsToRanges:function(e){var n=this,i=oe(e),r=[];return t.each(i,function(t,e){e.length&&r.push.apply(r,re(e[0])?n.eventsToInverseRanges(e):n.eventsToNormalRanges(e))}),r},eventsToNormalRanges:function(t){var e,n,i,r,s=this.view.calendar,o=[];for(e=0;t.length>e;e++)n=t[e],i=n.start.clone().stripZone(),r=s.getEventEnd(n).stripZone(),o.push({event:n,start:i,end:r,eventStartMS:+i,eventDurationMS:r-i});return o},eventsToInverseRanges:function(t){var e,n,i=this.view,r=i.start.clone().stripZone(),s=i.end.clone().stripZone(),o=this.eventsToNormalRanges(t),l=[],a=t[0],c=r;for(o.sort(le),e=0;o.length>e;e++)n=o[e],n.start>c&&l.push({event:a,start:c,end:n.start}),c=n.end;return s>c&&l.push({event:a,start:c,end:s}),l},eventRangeToSegs:function(t,e){var n,i,r;for(n=e?e(t.start,t.end):this.rangeToSegs(t.start,t.end),i=0;n.length>i;i++)r=n[i],r.event=t.event,r.eventStartMS=t.eventStartMS,r.eventDurationMS=t.eventDurationMS;return n}}),ce.prototype=M(ne.prototype),t.extend(ce.prototype,{numbersVisible:!1,cellDuration:e.duration({days:1}),bottomCoordPadding:0,rowEls:null,dayEls:null,helperEls:null,render:function(e){var n,i=this.view,r="";for(n=0;i.rowCnt>n;n++)r+=this.dayRowHtml(n,e);this.el.html(r),this.rowEls=this.el.find(".fc-row"),this.dayEls=this.el.find(".fc-day"),this.dayEls.each(function(e,n){var r=i.cellToDate(Math.floor(e/i.colCnt),e%i.colCnt);i.trigger("dayRender",null,r,t(n))}),ne.prototype.render.call(this)},destroy:function(){this.destroySegPopover()},dayRowHtml:function(t,e){var n=this.view,i=["fc-row","fc-week",n.widgetContentClass];return e&&i.push("fc-rigid"),'<div class="'+i.join(" ")+'">'+'<div class="fc-bg">'+"<table>"+this.rowHtml("day",t)+"</table>"+"</div>"+'<div class="fc-content-skeleton">'+"<table>"+(this.numbersVisible?"<thead>"+this.rowHtml("number",t)+"</thead>":"")+"</table>"+"</div>"+"</div>"},dayCellHtml:function(t,e,n){return this.bgCellHtml(t,e,n)},buildCoords:function(e,n){var i,r,s,o=this.view.colCnt;this.dayEls.slice(0,o).each(function(e,o){i=t(o),r=i.offset().left,e&&(s[1]=r),s=[r],n[e]=s}),s[1]=r+i.outerWidth(),this.rowEls.each(function(n,o){i=t(o),r=i.offset().top,n&&(s[1]=r),s=[r],e[n]=s}),s[1]=r+i.outerHeight()+this.bottomCoordPadding},getCellDate:function(t){return this.view.cellToDate(t)},getCellDayEl:function(t){return this.dayEls.eq(t.row*this.view.colCnt+t.col)},rangeToSegs:function(t,e){return this.view.rangeToSegments(t,e)},renderDrag:function(t,e,n){var i;return this.renderHighlight(t,e||this.view.calendar.getDefaultEventEnd(!0,t)),n&&!n.el.closest(this.el).length?(this.renderRangeHelper(t,e,n),i=this.view.opt("dragOpacity"),void 0!==i&&this.helperEls.css("opacity",i),!0):void 0},destroyDrag:function(){this.destroyHighlight(),this.destroyHelper()},renderResize:function(t,e,n){this.renderHighlight(t,e),this.renderRangeHelper(t,e,n)},destroyResize:function(){this.destroyHighlight(),this.destroyHelper()},renderHelper:function(e,n){var i,r=[],s=this.eventsToSegs([e]);s=this.renderFgSegEls(s),i=this.renderSegRows(s),this.rowEls.each(function(e,s){var o,l=t(s),a=t('<div class="fc-helper-skeleton"><table/></div>');o=n&&n.row===e?n.el.position().top:l.find(".fc-content-skeleton tbody").position().top,a.css("top",o).find("table").append(i[e].tbodyEl),l.append(a),r.push(a[0])}),this.helperEls=t(r)},destroyHelper:function(){this.helperEls&&(this.helperEls.remove(),this.helperEls=null)},fillSegTag:"td",renderFill:function(e,n){var i,r,s,o=[];for(n=this.renderFillSegEls(e,n),i=0;n.length>i;i++)r=n[i],s=this.renderFillRow(e,r),this.rowEls.eq(r.row).append(s),o.push(s[0]);return this.elsByFill[e]=t(o),n},renderFillRow:function(e,n){var i,r,s=this.view.colCnt,o=n.leftCol,l=n.rightCol+1;return i=t('<div class="fc-'+e.toLowerCase()+'-skeleton">'+"<table><tr/></table>"+"</div>"),r=i.find("tr"),o>0&&r.append('<td colspan="'+o+'"/>'),r.append(n.el.attr("colspan",l-o)),s>l&&r.append('<td colspan="'+(s-l)+'"/>'),this.bookendCells(r,e),i}}),t.extend(ce.prototype,{rowStructs:null,destroyEvents:function(){this.destroySegPopover(),ne.prototype.destroyEvents.apply(this,arguments)},getSegs:function(){return ne.prototype.getSegs.call(this).concat(this.popoverSegs||[])},renderBgSegs:function(e){var n=t.grep(e,function(t){return t.event.allDay});return ne.prototype.renderBgSegs.call(this,n)},renderFgSegs:function(e){var n;return e=this.renderFgSegEls(e),n=this.rowStructs=this.renderSegRows(e),this.rowEls.each(function(e,i){t(i).find(".fc-content-skeleton > table").append(n[e].tbodyEl)}),e},destroyFgSegs:function(){for(var t,e=this.rowStructs||[];t=e.pop();)t.tbodyEl.remove();this.rowStructs=null},renderSegRows:function(t){var e,n,i=[];for(e=this.groupSegRows(t),n=0;e.length>n;n++)i.push(this.renderSegRow(n,e[n]));return i},fgSegHtml:function(t,e){var n,i=this.view,r=i.opt("isRTL"),s=t.event,o=i.isEventDraggable(s),l=!e&&s.allDay&&t.isEnd&&i.isEventResizable(s),a=this.getSegClasses(t,o,l),c=this.getEventSkinCss(s),d="";return a.unshift("fc-day-grid-event"),!s.allDay&&t.isStart&&(d='<span class="fc-time">'+F(i.getEventTimeText(s))+"</span>"),n='<span class="fc-title">'+(F(s.title||"")||"&nbsp;")+"</span>",'<a class="'+a.join(" ")+'"'+(s.url?' href="'+F(s.url)+'"':"")+(c?' style="'+c+'"':"")+">"+'<div class="fc-content">'+(r?n+" "+d:d+" "+n)+"</div>"+(l?'<div class="fc-resizer"/>':"")+"</a>"},renderSegRow:function(e,n){function i(e){for(;e>o;)d=(y[r-1]||[])[o],d?d.attr("rowspan",parseInt(d.attr("rowspan")||1,10)+1):(d=t("<td/>"),l.append(d)),v[r][o]=d,y[r][o]=d,o++}var r,s,o,l,a,c,d,u=this.view,h=u.colCnt,f=this.buildSegLevels(n),g=Math.max(1,f.length),p=t("<tbody/>"),m=[],v=[],y=[];for(r=0;g>r;r++){if(s=f[r],o=0,l=t("<tr/>"),m.push([]),v.push([]),y.push([]),s)for(a=0;s.length>a;a++){for(c=s[a],i(c.leftCol),d=t('<td class="fc-event-container"/>').append(c.el),c.leftCol!=c.rightCol?d.attr("colspan",c.rightCol-c.leftCol+1):y[r][o]=d;c.rightCol>=o;)v[r][o]=d,m[r][o]=c,o++;l.append(d)}i(h),this.bookendCells(l,"eventSkeleton"),p.append(l)}return{row:e,tbodyEl:p,cellMatrix:v,segMatrix:m,segLevels:f,segs:n}},buildSegLevels:function(t){var e,n,i,r=[];for(t.sort(ae),e=0;t.length>e;e++){for(n=t[e],i=0;r.length>i&&de(n,r[i]);i++);n.level=i,(r[i]||(r[i]=[])).push(n)}for(i=0;r.length>i;i++)r[i].sort(ue);return r},groupSegRows:function(t){var e,n=this.view,i=[];for(e=0;n.rowCnt>e;e++)i.push([]);for(e=0;t.length>e;e++)i[t[e].row].push(t[e]);return i}}),t.extend(ce.prototype,{segPopover:null,popoverSegs:null,destroySegPopover:function(){this.segPopover&&this.segPopover.hide()},limitRows:function(t){var e,n,i=this.rowStructs||[];for(e=0;i.length>e;e++)this.unlimitRow(e),n=t?"number"==typeof t?t:this.computeRowLevelLimit(e):!1,n!==!1&&this.limitRow(e,n)},computeRowLevelLimit:function(t){var e,n,i=this.rowEls.eq(t),r=i.height(),s=this.rowStructs[t].tbodyEl.children();for(e=0;s.length>e;e++)if(n=s.eq(e).removeClass("fc-limited"),n.position().top+n.outerHeight()>r)return e;return!1},limitRow:function(e,n){function i(i){for(;i>T;)r={row:e,col:T},d=S.getCellSegs(r,n),d.length&&(f=o[n-1][T],w=S.renderMoreLink(r,d),y=t("<div/>").append(w),f.append(y),D.push(y[0])),T++}var r,s,o,l,a,c,d,u,h,f,g,p,m,v,y,w,S=this,b=this.view,E=this.rowStructs[e],D=[],T=0;if(n&&E.segLevels.length>n){for(s=E.segLevels[n-1],o=E.cellMatrix,l=E.tbodyEl.children().slice(n).addClass("fc-limited").get(),a=0;s.length>a;a++){for(c=s[a],i(c.leftCol),h=[],u=0;c.rightCol>=T;)r={row:e,col:T},d=this.getCellSegs(r,n),h.push(d),u+=d.length,T++;if(u){for(f=o[n-1][c.leftCol],g=f.attr("rowspan")||1,p=[],m=0;h.length>m;m++)v=t('<td class="fc-more-cell"/>').attr("rowspan",g),d=h[m],r={row:e,col:c.leftCol+m},w=this.renderMoreLink(r,[c].concat(d)),y=t("<div/>").append(w),v.append(y),p.push(v[0]),D.push(v[0]);f.addClass("fc-limited").after(t(p)),l.push(f[0])}}i(b.colCnt),E.moreEls=t(D),E.limitedEls=t(l)}},unlimitRow:function(t){var e=this.rowStructs[t];e.moreEls&&(e.moreEls.remove(),e.moreEls=null),e.limitedEls&&(e.limitedEls.removeClass("fc-limited"),e.limitedEls=null)},renderMoreLink:function(e,n){var i=this,r=this.view;return t('<a class="fc-more"/>').text(this.getMoreLinkText(n.length)).on("click",function(s){var o=r.opt("eventLimitClick"),l=r.cellToDate(e),a=t(this),c=i.getCellDayEl(e),d=i.getCellSegs(e),u=i.resliceDaySegs(d,l),h=i.resliceDaySegs(n,l);"function"==typeof o&&(o=r.trigger("eventLimitClick",null,{date:l,dayEl:c,moreEl:a,segs:u,hiddenSegs:h},s)),"popover"===o?i.showSegPopover(l,e,a,u):"string"==typeof o&&r.calendar.zoomTo(l,o)})},showSegPopover:function(t,e,n,i){var r,s,o=this,l=this.view,a=n.parent();r=1==l.rowCnt?this.view.el:this.rowEls.eq(e.row),s={className:"fc-more-popover",content:this.renderSegPopoverContent(t,i),parentEl:this.el,top:r.offset().top,autoHide:!0,viewportConstrain:l.opt("popoverViewportConstrain"),hide:function(){o.segPopover.destroy(),o.segPopover=null,o.popoverSegs=null}},l.opt("isRTL")?s.right=a.offset().left+a.outerWidth()+1:s.left=a.offset().left-1,this.segPopover=new q(s),this.segPopover.show()},renderSegPopoverContent:function(e,n){var i,r=this.view,s=r.opt("theme"),o=e.format(r.opt("dayPopoverFormat")),l=t('<div class="fc-header '+r.widgetHeaderClass+'">'+'<span class="fc-close '+(s?"ui-icon ui-icon-closethick":"fc-icon fc-icon-x")+'"></span>'+'<span class="fc-title">'+F(o)+"</span>"+'<div class="fc-clear"/>'+"</div>"+'<div class="fc-body '+r.widgetContentClass+'">'+'<div class="fc-event-container"></div>'+"</div>"),a=l.find(".fc-event-container");for(n=this.renderFgSegEls(n,!0),this.popoverSegs=n,i=0;n.length>i;i++)n[i].cellDate=e,a.append(n[i].el);return l},resliceDaySegs:function(e,n){var i=t.map(e,function(t){return t.event}),r=n.clone().stripTime(),s=r.clone().add(1,"days");return this.eventsToSegs(i,function(t,e){var n=D(t,e,r,s);return n?[n]:[]})},getMoreLinkText:function(t){var e=this.view,n=e.opt("eventLimitText");return"function"==typeof n?n(t):"+"+t+" "+n},getCellSegs:function(t,e){for(var n,i=this.rowStructs[t.row].segMatrix,r=e||0,s=[];i.length>r;)n=i[r][t.col],n&&s.push(n),r++;return s}}),he.prototype=M(ne.prototype),t.extend(he.prototype,{slotDuration:null,snapDuration:null,minTime:null,maxTime:null,dayEls:null,slatEls:null,slatTops:null,helperEl:null,businessHourSegs:null,render:function(){this.processOptions(),this.el.html(this.renderHtml()),this.dayEls=this.el.find(".fc-day"),this.slatEls=this.el.find(".fc-slats tr"),this.computeSlatTops(),this.renderBusinessHours(),ne.prototype.render.call(this)},renderBusinessHours:function(){var t=this.view.calendar.getBusinessHoursEvents();this.businessHourSegs=this.renderFill("businessHours",this.eventsToSegs(t),"bgevent")},renderHtml:function(){return'<div class="fc-bg"><table>'+this.rowHtml("slotBg")+"</table>"+"</div>"+'<div class="fc-slats">'+"<table>"+this.slatRowHtml()+"</table>"+"</div>"},slotBgCellHtml:function(t,e,n){return this.bgCellHtml(t,e,n)},slatRowHtml:function(){for(var t,n,i,r=this.view,s=r.calendar,o=r.opt("isRTL"),l="",a=0===this.slotDuration.asMinutes()%15,c=e.duration(+this.minTime);this.maxTime>c;)t=r.start.clone().time(c),n=t.minutes(),i='<td class="fc-axis fc-time '+r.widgetContentClass+'" '+r.axisStyleAttr()+">"+(a&&n?"":"<span>"+F(s.formatDate(t,r.opt("axisFormat")))+"</span>")+"</td>",l+="<tr "+(n?'class="fc-minor"':"")+">"+(o?"":i)+'<td class="'+r.widgetContentClass+'"/>'+(o?i:"")+"</tr>",c.add(this.slotDuration);return l},processOptions:function(){var t=this.view,n=t.opt("slotDuration"),i=t.opt("snapDuration");n=e.duration(n),i=i?e.duration(i):n,this.slotDuration=n,this.snapDuration=i,this.cellDuration=i,this.minTime=e.duration(t.opt("minTime")),this.maxTime=e.duration(t.opt("maxTime"))},rangeToSegs:function(t,e){var n,i,r,s,o,l=this.view,a=[];for(t=t.clone().stripZone(),e=e.clone().stripZone(),i=0;l.colCnt>i;i++)r=l.cellToDate(0,i),s=r.clone().time(this.minTime),o=r.clone().time(this.maxTime),n=D(t,e,s,o),n&&(n.col=i,a.push(n));return a},resize:function(){this.computeSlatTops(),this.updateSegVerticals()},buildCoords:function(n,i){var r,s,o=this.view.colCnt,l=this.el.offset().top,a=e.duration(+this.minTime),c=null;for(this.dayEls.slice(0,o).each(function(e,n){r=t(n),s=r.offset().left,c&&(c[1]=s),c=[s],i[e]=c}),c[1]=s+r.outerWidth(),c=null;this.maxTime>a;)s=l+this.computeTimeTop(a),c&&(c[1]=s),c=[s],n.push(c),a.add(this.snapDuration);c[1]=l+this.computeTimeTop(a)},getCellDate:function(t){var e=this.view,n=e.calendar;return n.rezoneDate(e.cellToDate(0,t.col).time(this.minTime+this.snapDuration*t.row))},getCellDayEl:function(t){return this.dayEls.eq(t.col)},computeDateTop:function(t,n){return this.computeTimeTop(e.duration(t.clone().stripZone()-n.clone().stripTime()))},computeTimeTop:function(t){var e,n,i,r,s=(t-this.minTime)/this.slotDuration;return s=Math.max(0,s),s=Math.min(this.slatEls.length,s),e=Math.floor(s),n=s-e,i=this.slatTops[e],n?(r=this.slatTops[e+1],i+(r-i)*n):i},computeSlatTops:function(){var e,n=[];this.slatEls.each(function(i,r){e=t(r).position().top,n.push(e)}),n.push(e+this.slatEls.last().outerHeight()),this.slatTops=n},renderDrag:function(t,e,n){var i;return n?(this.renderRangeHelper(t,e,n),i=this.view.opt("dragOpacity"),void 0!==i&&this.helperEl.css("opacity",i),!0):(this.renderHighlight(t,e||this.view.calendar.getDefaultEventEnd(!1,t)),void 0)},destroyDrag:function(){this.destroyHelper(),this.destroyHighlight()},renderResize:function(t,e,n){this.renderRangeHelper(t,e,n)},destroyResize:function(){this.destroyHelper()},renderHelper:function(e,n){var i,r,s,o,l=this.eventsToSegs([e]);for(l=this.renderFgSegEls(l),i=this.renderSegTable(l),r=0;l.length>r;r++)s=l[r],n&&n.col===s.col&&(o=n.el,s.el.css({left:o.css("left"),right:o.css("right"),"margin-left":o.css("margin-left"),"margin-right":o.css("margin-right")}));this.helperEl=t('<div class="fc-helper-skeleton"/>').append(i).appendTo(this.el)},destroyHelper:function(){this.helperEl&&(this.helperEl.remove(),this.helperEl=null)},renderSelection:function(t,e){this.view.opt("selectHelper")?this.renderRangeHelper(t,e):this.renderHighlight(t,e)},destroySelection:function(){this.destroyHelper(),this.destroyHighlight()},renderFill:function(e,n,i){var r,s,o,l,a,c,d,u,h,f,g=this.view;if(n.length){for(n=this.renderFillSegEls(e,n),r=this.groupSegCols(n),i=i||e.toLowerCase(),s=t('<div class="fc-'+i+'-skeleton">'+"<table><tr/></table>"+"</div>"),o=s.find("tr"),l=0;r.length>l;l++)if(a=r[l],c=t("<td/>").appendTo(o),a.length)for(d=t('<div class="fc-'+i+'-container"/>').appendTo(c),u=g.cellToDate(0,l),h=0;a.length>h;h++)f=a[h],d.append(f.el.css({top:this.computeDateTop(f.start,u),bottom:-this.computeDateTop(f.end,u)}));this.bookendCells(o,e),this.el.append(s),this.elsByFill[e]=s}return n}}),t.extend(he.prototype,{eventSkeletonEl:null,renderFgSegs:function(e){return e=this.renderFgSegEls(e),this.el.append(this.eventSkeletonEl=t('<div class="fc-content-skeleton"/>').append(this.renderSegTable(e))),e},destroyFgSegs:function(){this.eventSkeletonEl&&(this.eventSkeletonEl.remove(),this.eventSkeletonEl=null)},renderSegTable:function(e){var n,i,r,s,o,l,a=t("<table><tr/></table>"),c=a.find("tr");for(n=this.groupSegCols(e),this.computeSegVerticals(e),s=0;n.length>s;s++){for(o=n[s],fe(o),l=t('<div class="fc-event-container"/>'),i=0;o.length>i;i++)r=o[i],r.el.css(this.generateSegPositionCss(r)),30>r.bottom-r.top&&r.el.addClass("fc-short"),l.append(r.el);c.append(t("<td/>").append(l))}return this.bookendCells(c,"eventSkeleton"),a -},updateSegVerticals:function(){var t,e=(this.segs||[]).concat(this.businessHourSegs||[]);for(this.computeSegVerticals(e),t=0;e.length>t;t++)e[t].el.css(this.generateSegVerticalCss(e[t]))},computeSegVerticals:function(t){var e,n;for(e=0;t.length>e;e++)n=t[e],n.top=this.computeDateTop(n.start,n.start),n.bottom=this.computeDateTop(n.end,n.start)},fgSegHtml:function(t,e){var n,i,r,s=this.view,o=t.event,l=s.isEventDraggable(o),a=!e&&t.isEnd&&s.isEventResizable(o),c=this.getSegClasses(t,l,a),d=this.getEventSkinCss(o);return c.unshift("fc-time-grid-event"),s.isMultiDayEvent(o)?(t.isStart||t.isEnd)&&(n=s.getEventTimeText(t.start,t.end),i=s.getEventTimeText(t.start,t.end,"LT"),r=s.getEventTimeText(t.start,null)):(n=s.getEventTimeText(o),i=s.getEventTimeText(o,"LT"),r=s.getEventTimeText(o.start,null)),'<a class="'+c.join(" ")+'"'+(o.url?' href="'+F(o.url)+'"':"")+(d?' style="'+d+'"':"")+">"+'<div class="fc-content">'+(n?'<div class="fc-time" data-start="'+F(r)+'"'+' data-full="'+F(i)+'"'+">"+"<span>"+F(n)+"</span>"+"</div>":"")+(o.title?'<div class="fc-title">'+F(o.title)+"</div>":"")+"</div>"+'<div class="fc-bg"/>'+(a?'<div class="fc-resizer"/>':"")+"</a>"},generateSegPositionCss:function(t){var e,n,i=this.view,r=i.opt("isRTL"),s=i.opt("slotEventOverlap"),o=t.backwardCoord,l=t.forwardCoord,a=this.generateSegVerticalCss(t);return s&&(l=Math.min(1,o+2*(l-o))),r?(e=1-l,n=o):(e=o,n=1-l),a.zIndex=t.level+1,a.left=100*e+"%",a.right=100*n+"%",s&&t.forwardPressure&&(a[r?"marginLeft":"marginRight"]=20),a},generateSegVerticalCss:function(t){return{top:t.top,bottom:-t.bottom}},groupSegCols:function(t){var e,n=this.view,i=[];for(e=0;n.colCnt>e;e++)i.push([]);for(e=0;t.length>e;e++)i[t[e].col].push(t[e]);return i}}),be.prototype={calendar:null,coordMap:null,el:null,start:null,end:null,intervalStart:null,intervalEnd:null,rowCnt:null,colCnt:null,isSelected:!1,scrollerEl:null,scrollTop:null,widgetHeaderClass:null,widgetContentClass:null,highlightStateClass:null,documentMousedownProxy:null,documentDragStartProxy:null,init:function(){var e=this.opt("theme")?"ui":"fc";this.widgetHeaderClass=e+"-widget-header",this.widgetContentClass=e+"-widget-content",this.highlightStateClass=e+"-state-highlight",this.documentMousedownProxy=t.proxy(this,"documentMousedown"),this.documentDragStartProxy=t.proxy(this,"documentDragStart")},render:function(){this.updateSize(),this.trigger("viewRender",this,this,this.el),t(document).on("mousedown",this.documentMousedownProxy).on("dragstart",this.documentDragStartProxy)},destroy:function(){this.unselect(),this.trigger("viewDestroy",this,this,this.el),this.destroyEvents(),this.el.empty(),t(document).off("mousedown",this.documentMousedownProxy).off("dragstart",this.documentDragStartProxy)},incrementDate:function(){},updateSize:function(t){t&&this.recordScroll(),this.updateHeight(),this.updateWidth()},updateWidth:function(){},updateHeight:function(){var t=this.calendar;this.setHeight(t.getSuggestedViewHeight(),t.isHeightAuto())},setHeight:function(){},computeScrollerHeight:function(t){var e,n=this.el.add(this.scrollerEl);return n.css({position:"relative",left:-1}),e=this.el.outerHeight()-this.scrollerEl.height(),n.css({position:"",left:""}),t-e},recordScroll:function(){this.scrollerEl&&(this.scrollTop=this.scrollerEl.scrollTop())},restoreScroll:function(){null!==this.scrollTop&&this.scrollerEl.scrollTop(this.scrollTop)},renderEvents:function(){this.segEach(function(t){this.trigger("eventAfterRender",t.event,t.event,t.el)}),this.trigger("eventAfterAllRender")},destroyEvents:function(){this.segEach(function(t){this.trigger("eventDestroy",t.event,t.event,t.el)})},resolveEventEl:function(e,n){var i=this.trigger("eventRender",e,e,n);return i===!1?n=null:i&&i!==!0&&(n=t(i)),n},showEvent:function(t){this.segEach(function(t){t.el.css("visibility","")},t)},hideEvent:function(t){this.segEach(function(t){t.el.css("visibility","hidden")},t)},segEach:function(t,e){var n,i=this.getSegs();for(n=0;i.length>n;n++)e&&i[n].event._id!==e._id||t.call(this,i[n])},getSegs:function(){},renderDrag:function(){},destroyDrag:function(){},documentDragStart:function(e){var n,i,r,s,o,l=this,a=this.calendar,c=null,d=null,u=null;this.opt("droppable")&&(n=t(e.target),i=this.opt("dropAccept"),(t.isFunction(i)?i.call(n[0],n):n.is(i))&&(r=Ee(n),s=r.eventProps,o=new Q(this.coordMap,{cellOver:function(e,n){c=n,d=r.duration?c.clone().add(r.duration):null,u=d||a.getDefaultEventEnd(!c.hasTime(),c),s&&t.extend(s,{start:c,end:d}),a.isExternalDragAllowedInRange(c,u,s)?l.renderDrag(c,u):(c=null,f())},cellOut:function(){c=null,l.destroyDrag(),g()}}),t(document).one("dragstop",function(t,e){var i;l.destroyDrag(),g(),c&&(r.startTime&&!c.hasTime()&&c.time(r.startTime),l.trigger("drop",n[0],c,t,e),s&&(i=a.renderEvent(s,r.stick),l.trigger("eventReceive",null,i[0])))}),o.startDrag(e)))},select:function(t,e,n){this.unselect(n),this.renderSelection(t,e),this.reportSelection(t,e,n)},renderSelection:function(){},reportSelection:function(t,e,n){this.isSelected=!0,this.trigger("select",null,t,e,n)},unselect:function(t){this.isSelected&&(this.isSelected=!1,this.destroySelection(),this.trigger("unselect",null,t))},destroySelection:function(){},documentMousedown:function(e){var n;this.isSelected&&this.opt("unselectAuto")&&E(e)&&(n=this.opt("unselectCancel"),n&&t(e.target).closest(n).length||this.unselect(e))}},_e.dataAttrPrefix="",De.prototype=M(be.prototype),t.extend(De.prototype,{dayGrid:null,dayNumbersVisible:!1,weekNumbersVisible:!1,weekNumberWidth:null,headRowEl:null,render:function(t,e,n){this.rowCnt=t,this.colCnt=e,this.dayNumbersVisible=n,this.weekNumbersVisible=this.opt("weekNumbers"),this.dayGrid.numbersVisible=this.dayNumbersVisible||this.weekNumbersVisible,this.el.addClass("fc-basic-view").html(this.renderHtml()),this.headRowEl=this.el.find("thead .fc-row"),this.scrollerEl=this.el.find(".fc-day-grid-container"),this.dayGrid.coordMap.containerEl=this.scrollerEl,this.dayGrid.el=this.el.find(".fc-day-grid"),this.dayGrid.render(this.hasRigidRows()),be.prototype.render.call(this)},destroy:function(){this.dayGrid.destroy(),be.prototype.destroy.call(this)},renderHtml:function(){return'<table><thead><tr><td class="'+this.widgetHeaderClass+'">'+this.dayGrid.headHtml()+"</td>"+"</tr>"+"</thead>"+"<tbody>"+"<tr>"+'<td class="'+this.widgetContentClass+'">'+'<div class="fc-day-grid-container">'+'<div class="fc-day-grid"/>'+"</div>"+"</td>"+"</tr>"+"</tbody>"+"</table>"},headIntroHtml:function(){return this.weekNumbersVisible?'<th class="fc-week-number '+this.widgetHeaderClass+'" '+this.weekNumberStyleAttr()+">"+"<span>"+F(this.opt("weekNumberTitle"))+"</span>"+"</th>":void 0},numberIntroHtml:function(t){return this.weekNumbersVisible?'<td class="fc-week-number" '+this.weekNumberStyleAttr()+">"+"<span>"+this.calendar.calculateWeekNumber(this.cellToDate(t,0))+"</span>"+"</td>":void 0},dayIntroHtml:function(){return this.weekNumbersVisible?'<td class="fc-week-number '+this.widgetContentClass+'" '+this.weekNumberStyleAttr()+"></td>":void 0},introHtml:function(){return this.weekNumbersVisible?'<td class="fc-week-number" '+this.weekNumberStyleAttr()+"></td>":void 0},numberCellHtml:function(t,e,n){var i;return this.dayNumbersVisible?(i=this.dayGrid.getDayClasses(n),i.unshift("fc-day-number"),'<td class="'+i.join(" ")+'" data-date="'+n.format()+'">'+n.date()+"</td>"):"<td/>"},weekNumberStyleAttr:function(){return null!==this.weekNumberWidth?'style="width:'+this.weekNumberWidth+'px"':""},hasRigidRows:function(){var t=this.opt("eventLimit");return t&&"number"!=typeof t},updateWidth:function(){this.weekNumbersVisible&&(this.weekNumberWidth=v(this.el.find(".fc-week-number")))},setHeight:function(t,e){var n,i=this.opt("eventLimit");w(this.scrollerEl),h(this.headRowEl),this.dayGrid.destroySegPopover(),i&&"number"==typeof i&&this.dayGrid.limitRows(i),n=this.computeScrollerHeight(t),this.setGridHeight(n,e),i&&"number"!=typeof i&&this.dayGrid.limitRows(i),!e&&y(this.scrollerEl,n)&&(u(this.headRowEl,b(this.scrollerEl)),n=this.computeScrollerHeight(t),this.scrollerEl.height(n),this.restoreScroll())},setGridHeight:function(t,e){e?m(this.dayGrid.rowEls):p(this.dayGrid.rowEls,t,!0)},renderEvents:function(t){this.dayGrid.renderEvents(t),this.updateHeight(),be.prototype.renderEvents.call(this,t)},getSegs:function(){return this.dayGrid.getSegs()},destroyEvents:function(){be.prototype.destroyEvents.call(this),this.recordScroll(),this.dayGrid.destroyEvents()},renderDrag:function(t,e,n){return this.dayGrid.renderDrag(t,e,n)},destroyDrag:function(){this.dayGrid.destroyDrag()},renderSelection:function(t,e){this.dayGrid.renderSelection(t,e)},destroySelection:function(){this.dayGrid.destroySelection()}}),r({fixedWeekCount:!0}),Ge.month=Te,Te.prototype=M(De.prototype),t.extend(Te.prototype,{name:"month",incrementDate:function(t,e){return t.clone().stripTime().add(e,"months").startOf("month")},render:function(t){var e;this.intervalStart=t.clone().stripTime().startOf("month"),this.intervalEnd=this.intervalStart.clone().add(1,"months"),this.start=this.intervalStart.clone(),this.start=this.skipHiddenDays(this.start),this.start.startOf("week"),this.start=this.skipHiddenDays(this.start),this.end=this.intervalEnd.clone(),this.end=this.skipHiddenDays(this.end,-1,!0),this.end.add((7-this.end.weekday())%7,"days"),this.end=this.skipHiddenDays(this.end,-1,!0),e=Math.ceil(this.end.diff(this.start,"weeks",!0)),this.isFixedWeeks()&&(this.end.add(6-e,"weeks"),e=6),this.title=this.calendar.formatDate(this.intervalStart,this.opt("titleFormat")),De.prototype.render.call(this,e,this.getCellsPerWeek(),!0)},setGridHeight:function(t,e){e=e||"variable"===this.opt("weekMode"),e&&(t*=this.rowCnt/6),p(this.dayGrid.rowEls,t,!e)},isFixedWeeks:function(){var t=this.opt("weekMode");return t?"fixed"===t:this.opt("fixedWeekCount")}}),Ge.basicWeek=Ce,Ce.prototype=M(De.prototype),t.extend(Ce.prototype,{name:"basicWeek",incrementDate:function(t,e){return t.clone().stripTime().add(e,"weeks").startOf("week")},render:function(t){this.intervalStart=t.clone().stripTime().startOf("week"),this.intervalEnd=this.intervalStart.clone().add(1,"weeks"),this.start=this.skipHiddenDays(this.intervalStart),this.end=this.skipHiddenDays(this.intervalEnd,-1,!0),this.title=this.calendar.formatRange(this.start,this.end.clone().subtract(1),this.opt("titleFormat")," — "),De.prototype.render.call(this,1,this.getCellsPerWeek(),!1)}}),Ge.basicDay=He,He.prototype=M(De.prototype),t.extend(He.prototype,{name:"basicDay",incrementDate:function(t,e){var n=t.clone().stripTime().add(e,"days");return n=this.skipHiddenDays(n,0>e?-1:1)},render:function(t){this.start=this.intervalStart=t.clone().stripTime(),this.end=this.intervalEnd=this.start.clone().add(1,"days"),this.title=this.calendar.formatDate(this.start,this.opt("titleFormat")),De.prototype.render.call(this,1,1,!1)}}),r({allDaySlot:!0,allDayText:"all-day",scrollTime:"06:00:00",slotDuration:"00:30:00",axisFormat:xe,timeFormat:{agenda:ke},minTime:"00:00:00",maxTime:"24:00:00",slotEventOverlap:!0});var Ue=5;Me.prototype=M(be.prototype),t.extend(Me.prototype,{timeGrid:null,dayGrid:null,axisWidth:null,noScrollRowEls:null,bottomRuleEl:null,bottomRuleHeight:null,render:function(e){this.rowCnt=1,this.colCnt=e,this.el.addClass("fc-agenda-view").html(this.renderHtml()),this.scrollerEl=this.el.find(".fc-time-grid-container"),this.timeGrid.coordMap.containerEl=this.scrollerEl,this.timeGrid.el=this.el.find(".fc-time-grid"),this.timeGrid.render(),this.bottomRuleEl=t('<hr class="'+this.widgetHeaderClass+'"/>').appendTo(this.timeGrid.el),this.dayGrid&&(this.dayGrid.el=this.el.find(".fc-day-grid"),this.dayGrid.render(),this.dayGrid.bottomCoordPadding=this.dayGrid.el.next("hr").outerHeight()),this.noScrollRowEls=this.el.find(".fc-row:not(.fc-scroller *)"),be.prototype.render.call(this),this.resetScroll()},destroy:function(){this.timeGrid.destroy(),this.dayGrid&&this.dayGrid.destroy(),be.prototype.destroy.call(this)},renderHtml:function(){return'<table><thead><tr><td class="'+this.widgetHeaderClass+'">'+this.timeGrid.headHtml()+"</td>"+"</tr>"+"</thead>"+"<tbody>"+"<tr>"+'<td class="'+this.widgetContentClass+'">'+(this.dayGrid?'<div class="fc-day-grid"/><hr class="'+this.widgetHeaderClass+'"/>':"")+'<div class="fc-time-grid-container">'+'<div class="fc-time-grid"/>'+"</div>"+"</td>"+"</tr>"+"</tbody>"+"</table>"},headIntroHtml:function(){var t,e,n,i;return this.opt("weekNumbers")?(t=this.cellToDate(0,0),e=this.calendar.calculateWeekNumber(t),n=this.opt("weekNumberTitle"),i=this.opt("isRTL")?e+n:n+e,'<th class="fc-axis fc-week-number '+this.widgetHeaderClass+'" '+this.axisStyleAttr()+">"+"<span>"+F(i)+"</span>"+"</th>"):'<th class="fc-axis '+this.widgetHeaderClass+'" '+this.axisStyleAttr()+"></th>"},dayIntroHtml:function(){return'<td class="fc-axis '+this.widgetContentClass+'" '+this.axisStyleAttr()+">"+"<span>"+(this.opt("allDayHtml")||F(this.opt("allDayText")))+"</span>"+"</td>"},slotBgIntroHtml:function(){return'<td class="fc-axis '+this.widgetContentClass+'" '+this.axisStyleAttr()+"></td>"},introHtml:function(){return'<td class="fc-axis" '+this.axisStyleAttr()+"></td>"},axisStyleAttr:function(){return null!==this.axisWidth?'style="width:'+this.axisWidth+'px"':""},updateSize:function(t){t&&this.timeGrid.resize(),be.prototype.updateSize.call(this,t)},updateWidth:function(){this.axisWidth=v(this.el.find(".fc-axis"))},setHeight:function(t,e){var n,i;null===this.bottomRuleHeight&&(this.bottomRuleHeight=this.bottomRuleEl.outerHeight()),this.bottomRuleEl.hide(),this.scrollerEl.css("overflow",""),w(this.scrollerEl),h(this.noScrollRowEls),this.dayGrid&&(this.dayGrid.destroySegPopover(),n=this.opt("eventLimit"),n&&"number"!=typeof n&&(n=Ue),n&&this.dayGrid.limitRows(n)),e||(i=this.computeScrollerHeight(t),y(this.scrollerEl,i)?(u(this.noScrollRowEls,b(this.scrollerEl)),i=this.computeScrollerHeight(t),this.scrollerEl.height(i),this.restoreScroll()):(this.scrollerEl.height(i).css("overflow","hidden"),this.bottomRuleEl.show()))},resetScroll:function(){function t(){n.scrollerEl.scrollTop(r)}var n=this,i=e.duration(this.opt("scrollTime")),r=this.timeGrid.computeTimeTop(i);r=Math.ceil(r),r&&r++,t(),setTimeout(t,0)},renderEvents:function(t){var e,n,i=[],r=[],s=[];for(n=0;t.length>n;n++)t[n].allDay?i.push(t[n]):r.push(t[n]);e=this.timeGrid.renderEvents(r),this.dayGrid&&(s=this.dayGrid.renderEvents(i)),this.updateHeight(),be.prototype.renderEvents.call(this,t)},getSegs:function(){return this.timeGrid.getSegs().concat(this.dayGrid?this.dayGrid.getSegs():[])},destroyEvents:function(){be.prototype.destroyEvents.call(this),this.recordScroll(),this.timeGrid.destroyEvents(),this.dayGrid&&this.dayGrid.destroyEvents()},renderDrag:function(t,e,n){return t.hasTime()?this.timeGrid.renderDrag(t,e,n):this.dayGrid?this.dayGrid.renderDrag(t,e,n):void 0},destroyDrag:function(){this.timeGrid.destroyDrag(),this.dayGrid&&this.dayGrid.destroyDrag()},renderSelection:function(t,e){t.hasTime()||e.hasTime()?this.timeGrid.renderSelection(t,e):this.dayGrid&&this.dayGrid.renderSelection(t,e)},destroySelection:function(){this.timeGrid.destroySelection(),this.dayGrid&&this.dayGrid.destroySelection()}}),Ge.agendaWeek=Re,Re.prototype=M(Me.prototype),t.extend(Re.prototype,{name:"agendaWeek",incrementDate:function(t,e){return t.clone().stripTime().add(e,"weeks").startOf("week")},render:function(t){this.intervalStart=t.clone().stripTime().startOf("week"),this.intervalEnd=this.intervalStart.clone().add(1,"weeks"),this.start=this.skipHiddenDays(this.intervalStart),this.end=this.skipHiddenDays(this.intervalEnd,-1,!0),this.title=this.calendar.formatRange(this.start,this.end.clone().subtract(1),this.opt("titleFormat")," — "),Me.prototype.render.call(this,this.getCellsPerWeek())}}),Ge.agendaDay=Pe,Pe.prototype=M(Me.prototype),t.extend(Pe.prototype,{name:"agendaDay",incrementDate:function(t,e){var n=t.clone().stripTime().add(e,"days");return n=this.skipHiddenDays(n,0>e?-1:1)},render:function(t){this.start=this.intervalStart=t.clone().stripTime(),this.end=this.intervalEnd=this.start.clone().add(1,"days"),this.title=this.calendar.formatDate(this.start,this.opt("titleFormat")),Me.prototype.render.call(this,1)}})}); \ No newline at end of file diff --git a/assets/js/plugins/fullcalendar/moment.min.js b/assets/js/plugins/fullcalendar/moment.min.js deleted file mode 100644 index 8b54f130..00000000 --- a/assets/js/plugins/fullcalendar/moment.min.js +++ /dev/null @@ -1,7 +0,0 @@ -//! moment.js -//! version : 2.8.3 -//! authors : Tim Wood, Iskren Chernev, Moment.js contributors -//! license : MIT -//! momentjs.com -(function(a){function b(a,b,c){switch(arguments.length){case 2:return null!=a?a:b;case 3:return null!=a?a:null!=b?b:c;default:throw new Error("Implement me")}}function c(a,b){return zb.call(a,b)}function d(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function e(a){tb.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+a)}function f(a,b){var c=!0;return m(function(){return c&&(e(a),c=!1),b.apply(this,arguments)},b)}function g(a,b){qc[a]||(e(b),qc[a]=!0)}function h(a,b){return function(c){return p(a.call(this,c),b)}}function i(a,b){return function(c){return this.localeData().ordinal(a.call(this,c),b)}}function j(){}function k(a,b){b!==!1&&F(a),n(this,a),this._d=new Date(+a._d)}function l(a){var b=y(a),c=b.year||0,d=b.quarter||0,e=b.month||0,f=b.week||0,g=b.day||0,h=b.hour||0,i=b.minute||0,j=b.second||0,k=b.millisecond||0;this._milliseconds=+k+1e3*j+6e4*i+36e5*h,this._days=+g+7*f,this._months=+e+3*d+12*c,this._data={},this._locale=tb.localeData(),this._bubble()}function m(a,b){for(var d in b)c(b,d)&&(a[d]=b[d]);return c(b,"toString")&&(a.toString=b.toString),c(b,"valueOf")&&(a.valueOf=b.valueOf),a}function n(a,b){var c,d,e;if("undefined"!=typeof b._isAMomentObject&&(a._isAMomentObject=b._isAMomentObject),"undefined"!=typeof b._i&&(a._i=b._i),"undefined"!=typeof b._f&&(a._f=b._f),"undefined"!=typeof b._l&&(a._l=b._l),"undefined"!=typeof b._strict&&(a._strict=b._strict),"undefined"!=typeof b._tzm&&(a._tzm=b._tzm),"undefined"!=typeof b._isUTC&&(a._isUTC=b._isUTC),"undefined"!=typeof b._offset&&(a._offset=b._offset),"undefined"!=typeof b._pf&&(a._pf=b._pf),"undefined"!=typeof b._locale&&(a._locale=b._locale),Ib.length>0)for(c in Ib)d=Ib[c],e=b[d],"undefined"!=typeof e&&(a[d]=e);return a}function o(a){return 0>a?Math.ceil(a):Math.floor(a)}function p(a,b,c){for(var d=""+Math.abs(a),e=a>=0;d.length<b;)d="0"+d;return(e?c?"+":"":"-")+d}function q(a,b){var c={milliseconds:0,months:0};return c.months=b.month()-a.month()+12*(b.year()-a.year()),a.clone().add(c.months,"M").isAfter(b)&&--c.months,c.milliseconds=+b-+a.clone().add(c.months,"M"),c}function r(a,b){var c;return b=K(b,a),a.isBefore(b)?c=q(a,b):(c=q(b,a),c.milliseconds=-c.milliseconds,c.months=-c.months),c}function s(a,b){return function(c,d){var e,f;return null===d||isNaN(+d)||(g(b,"moment()."+b+"(period, number) is deprecated. Please use moment()."+b+"(number, period)."),f=c,c=d,d=f),c="string"==typeof c?+c:c,e=tb.duration(c,d),t(this,e,a),this}}function t(a,b,c,d){var e=b._milliseconds,f=b._days,g=b._months;d=null==d?!0:d,e&&a._d.setTime(+a._d+e*c),f&&nb(a,"Date",mb(a,"Date")+f*c),g&&lb(a,mb(a,"Month")+g*c),d&&tb.updateOffset(a,f||g)}function u(a){return"[object Array]"===Object.prototype.toString.call(a)}function v(a){return"[object Date]"===Object.prototype.toString.call(a)||a instanceof Date}function w(a,b,c){var d,e=Math.min(a.length,b.length),f=Math.abs(a.length-b.length),g=0;for(d=0;e>d;d++)(c&&a[d]!==b[d]||!c&&A(a[d])!==A(b[d]))&&g++;return g+f}function x(a){if(a){var b=a.toLowerCase().replace(/(.)s$/,"$1");a=jc[a]||kc[b]||b}return a}function y(a){var b,d,e={};for(d in a)c(a,d)&&(b=x(d),b&&(e[b]=a[d]));return e}function z(b){var c,d;if(0===b.indexOf("week"))c=7,d="day";else{if(0!==b.indexOf("month"))return;c=12,d="month"}tb[b]=function(e,f){var g,h,i=tb._locale[b],j=[];if("number"==typeof e&&(f=e,e=a),h=function(a){var b=tb().utc().set(d,a);return i.call(tb._locale,b,e||"")},null!=f)return h(f);for(g=0;c>g;g++)j.push(h(g));return j}}function A(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=b>=0?Math.floor(b):Math.ceil(b)),c}function B(a,b){return new Date(Date.UTC(a,b+1,0)).getUTCDate()}function C(a,b,c){return hb(tb([a,11,31+b-c]),b,c).week}function D(a){return E(a)?366:365}function E(a){return a%4===0&&a%100!==0||a%400===0}function F(a){var b;a._a&&-2===a._pf.overflow&&(b=a._a[Bb]<0||a._a[Bb]>11?Bb:a._a[Cb]<1||a._a[Cb]>B(a._a[Ab],a._a[Bb])?Cb:a._a[Db]<0||a._a[Db]>23?Db:a._a[Eb]<0||a._a[Eb]>59?Eb:a._a[Fb]<0||a._a[Fb]>59?Fb:a._a[Gb]<0||a._a[Gb]>999?Gb:-1,a._pf._overflowDayOfYear&&(Ab>b||b>Cb)&&(b=Cb),a._pf.overflow=b)}function G(a){return null==a._isValid&&(a._isValid=!isNaN(a._d.getTime())&&a._pf.overflow<0&&!a._pf.empty&&!a._pf.invalidMonth&&!a._pf.nullInput&&!a._pf.invalidFormat&&!a._pf.userInvalidated,a._strict&&(a._isValid=a._isValid&&0===a._pf.charsLeftOver&&0===a._pf.unusedTokens.length)),a._isValid}function H(a){return a?a.toLowerCase().replace("_","-"):a}function I(a){for(var b,c,d,e,f=0;f<a.length;){for(e=H(a[f]).split("-"),b=e.length,c=H(a[f+1]),c=c?c.split("-"):null;b>0;){if(d=J(e.slice(0,b).join("-")))return d;if(c&&c.length>=b&&w(e,c,!0)>=b-1)break;b--}f++}return null}function J(a){var b=null;if(!Hb[a]&&Jb)try{b=tb.locale(),require("./locale/"+a),tb.locale(b)}catch(c){}return Hb[a]}function K(a,b){return b._isUTC?tb(a).zone(b._offset||0):tb(a).local()}function L(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function M(a){var b,c,d=a.match(Nb);for(b=0,c=d.length;c>b;b++)d[b]=pc[d[b]]?pc[d[b]]:L(d[b]);return function(e){var f="";for(b=0;c>b;b++)f+=d[b]instanceof Function?d[b].call(e,a):d[b];return f}}function N(a,b){return a.isValid()?(b=O(b,a.localeData()),lc[b]||(lc[b]=M(b)),lc[b](a)):a.localeData().invalidDate()}function O(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(Ob.lastIndex=0;d>=0&&Ob.test(a);)a=a.replace(Ob,c),Ob.lastIndex=0,d-=1;return a}function P(a,b){var c,d=b._strict;switch(a){case"Q":return Zb;case"DDDD":return _b;case"YYYY":case"GGGG":case"gggg":return d?ac:Rb;case"Y":case"G":case"g":return cc;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return d?bc:Sb;case"S":if(d)return Zb;case"SS":if(d)return $b;case"SSS":if(d)return _b;case"DDD":return Qb;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Ub;case"a":case"A":return b._locale._meridiemParse;case"X":return Xb;case"Z":case"ZZ":return Vb;case"T":return Wb;case"SSSS":return Tb;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return d?$b:Pb;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return Pb;case"Do":return Yb;default:return c=new RegExp(Y(X(a.replace("\\","")),"i"))}}function Q(a){a=a||"";var b=a.match(Vb)||[],c=b[b.length-1]||[],d=(c+"").match(hc)||["-",0,0],e=+(60*d[1])+A(d[2]);return"+"===d[0]?-e:e}function R(a,b,c){var d,e=c._a;switch(a){case"Q":null!=b&&(e[Bb]=3*(A(b)-1));break;case"M":case"MM":null!=b&&(e[Bb]=A(b)-1);break;case"MMM":case"MMMM":d=c._locale.monthsParse(b),null!=d?e[Bb]=d:c._pf.invalidMonth=b;break;case"D":case"DD":null!=b&&(e[Cb]=A(b));break;case"Do":null!=b&&(e[Cb]=A(parseInt(b,10)));break;case"DDD":case"DDDD":null!=b&&(c._dayOfYear=A(b));break;case"YY":e[Ab]=tb.parseTwoDigitYear(b);break;case"YYYY":case"YYYYY":case"YYYYYY":e[Ab]=A(b);break;case"a":case"A":c._isPm=c._locale.isPM(b);break;case"H":case"HH":case"h":case"hh":e[Db]=A(b);break;case"m":case"mm":e[Eb]=A(b);break;case"s":case"ss":e[Fb]=A(b);break;case"S":case"SS":case"SSS":case"SSSS":e[Gb]=A(1e3*("0."+b));break;case"X":c._d=new Date(1e3*parseFloat(b));break;case"Z":case"ZZ":c._useUTC=!0,c._tzm=Q(b);break;case"dd":case"ddd":case"dddd":d=c._locale.weekdaysParse(b),null!=d?(c._w=c._w||{},c._w.d=d):c._pf.invalidWeekday=b;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":a=a.substr(0,1);case"gggg":case"GGGG":case"GGGGG":a=a.substr(0,2),b&&(c._w=c._w||{},c._w[a]=A(b));break;case"gg":case"GG":c._w=c._w||{},c._w[a]=tb.parseTwoDigitYear(b)}}function S(a){var c,d,e,f,g,h,i;c=a._w,null!=c.GG||null!=c.W||null!=c.E?(g=1,h=4,d=b(c.GG,a._a[Ab],hb(tb(),1,4).year),e=b(c.W,1),f=b(c.E,1)):(g=a._locale._week.dow,h=a._locale._week.doy,d=b(c.gg,a._a[Ab],hb(tb(),g,h).year),e=b(c.w,1),null!=c.d?(f=c.d,g>f&&++e):f=null!=c.e?c.e+g:g),i=ib(d,e,f,h,g),a._a[Ab]=i.year,a._dayOfYear=i.dayOfYear}function T(a){var c,d,e,f,g=[];if(!a._d){for(e=V(a),a._w&&null==a._a[Cb]&&null==a._a[Bb]&&S(a),a._dayOfYear&&(f=b(a._a[Ab],e[Ab]),a._dayOfYear>D(f)&&(a._pf._overflowDayOfYear=!0),d=db(f,0,a._dayOfYear),a._a[Bb]=d.getUTCMonth(),a._a[Cb]=d.getUTCDate()),c=0;3>c&&null==a._a[c];++c)a._a[c]=g[c]=e[c];for(;7>c;c++)a._a[c]=g[c]=null==a._a[c]?2===c?1:0:a._a[c];a._d=(a._useUTC?db:cb).apply(null,g),null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()+a._tzm)}}function U(a){var b;a._d||(b=y(a._i),a._a=[b.year,b.month,b.day,b.hour,b.minute,b.second,b.millisecond],T(a))}function V(a){var b=new Date;return a._useUTC?[b.getUTCFullYear(),b.getUTCMonth(),b.getUTCDate()]:[b.getFullYear(),b.getMonth(),b.getDate()]}function W(a){if(a._f===tb.ISO_8601)return void $(a);a._a=[],a._pf.empty=!0;var b,c,d,e,f,g=""+a._i,h=g.length,i=0;for(d=O(a._f,a._locale).match(Nb)||[],b=0;b<d.length;b++)e=d[b],c=(g.match(P(e,a))||[])[0],c&&(f=g.substr(0,g.indexOf(c)),f.length>0&&a._pf.unusedInput.push(f),g=g.slice(g.indexOf(c)+c.length),i+=c.length),pc[e]?(c?a._pf.empty=!1:a._pf.unusedTokens.push(e),R(e,c,a)):a._strict&&!c&&a._pf.unusedTokens.push(e);a._pf.charsLeftOver=h-i,g.length>0&&a._pf.unusedInput.push(g),a._isPm&&a._a[Db]<12&&(a._a[Db]+=12),a._isPm===!1&&12===a._a[Db]&&(a._a[Db]=0),T(a),F(a)}function X(a){return a.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e})}function Y(a){return a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function Z(a){var b,c,e,f,g;if(0===a._f.length)return a._pf.invalidFormat=!0,void(a._d=new Date(0/0));for(f=0;f<a._f.length;f++)g=0,b=n({},a),null!=a._useUTC&&(b._useUTC=a._useUTC),b._pf=d(),b._f=a._f[f],W(b),G(b)&&(g+=b._pf.charsLeftOver,g+=10*b._pf.unusedTokens.length,b._pf.score=g,(null==e||e>g)&&(e=g,c=b));m(a,c||b)}function $(a){var b,c,d=a._i,e=dc.exec(d);if(e){for(a._pf.iso=!0,b=0,c=fc.length;c>b;b++)if(fc[b][1].exec(d)){a._f=fc[b][0]+(e[6]||" ");break}for(b=0,c=gc.length;c>b;b++)if(gc[b][1].exec(d)){a._f+=gc[b][0];break}d.match(Vb)&&(a._f+="Z"),W(a)}else a._isValid=!1}function _(a){$(a),a._isValid===!1&&(delete a._isValid,tb.createFromInputFallback(a))}function ab(a,b){var c,d=[];for(c=0;c<a.length;++c)d.push(b(a[c],c));return d}function bb(b){var c,d=b._i;d===a?b._d=new Date:v(d)?b._d=new Date(+d):null!==(c=Kb.exec(d))?b._d=new Date(+c[1]):"string"==typeof d?_(b):u(d)?(b._a=ab(d.slice(0),function(a){return parseInt(a,10)}),T(b)):"object"==typeof d?U(b):"number"==typeof d?b._d=new Date(d):tb.createFromInputFallback(b)}function cb(a,b,c,d,e,f,g){var h=new Date(a,b,c,d,e,f,g);return 1970>a&&h.setFullYear(a),h}function db(a){var b=new Date(Date.UTC.apply(null,arguments));return 1970>a&&b.setUTCFullYear(a),b}function eb(a,b){if("string"==typeof a)if(isNaN(a)){if(a=b.weekdaysParse(a),"number"!=typeof a)return null}else a=parseInt(a,10);return a}function fb(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function gb(a,b,c){var d=tb.duration(a).abs(),e=yb(d.as("s")),f=yb(d.as("m")),g=yb(d.as("h")),h=yb(d.as("d")),i=yb(d.as("M")),j=yb(d.as("y")),k=e<mc.s&&["s",e]||1===f&&["m"]||f<mc.m&&["mm",f]||1===g&&["h"]||g<mc.h&&["hh",g]||1===h&&["d"]||h<mc.d&&["dd",h]||1===i&&["M"]||i<mc.M&&["MM",i]||1===j&&["y"]||["yy",j];return k[2]=b,k[3]=+a>0,k[4]=c,fb.apply({},k)}function hb(a,b,c){var d,e=c-b,f=c-a.day();return f>e&&(f-=7),e-7>f&&(f+=7),d=tb(a).add(f,"d"),{week:Math.ceil(d.dayOfYear()/7),year:d.year()}}function ib(a,b,c,d,e){var f,g,h=db(a,0,1).getUTCDay();return h=0===h?7:h,c=null!=c?c:e,f=e-h+(h>d?7:0)-(e>h?7:0),g=7*(b-1)+(c-e)+f+1,{year:g>0?a:a-1,dayOfYear:g>0?g:D(a-1)+g}}function jb(b){var c=b._i,d=b._f;return b._locale=b._locale||tb.localeData(b._l),null===c||d===a&&""===c?tb.invalid({nullInput:!0}):("string"==typeof c&&(b._i=c=b._locale.preparse(c)),tb.isMoment(c)?new k(c,!0):(d?u(d)?Z(b):W(b):bb(b),new k(b)))}function kb(a,b){var c,d;if(1===b.length&&u(b[0])&&(b=b[0]),!b.length)return tb();for(c=b[0],d=1;d<b.length;++d)b[d][a](c)&&(c=b[d]);return c}function lb(a,b){var c;return"string"==typeof b&&(b=a.localeData().monthsParse(b),"number"!=typeof b)?a:(c=Math.min(a.date(),B(a.year(),b)),a._d["set"+(a._isUTC?"UTC":"")+"Month"](b,c),a)}function mb(a,b){return a._d["get"+(a._isUTC?"UTC":"")+b]()}function nb(a,b,c){return"Month"===b?lb(a,c):a._d["set"+(a._isUTC?"UTC":"")+b](c)}function ob(a,b){return function(c){return null!=c?(nb(this,a,c),tb.updateOffset(this,b),this):mb(this,a)}}function pb(a){return 400*a/146097}function qb(a){return 146097*a/400}function rb(a){tb.duration.fn[a]=function(){return this._data[a]}}function sb(a){"undefined"==typeof ender&&(ub=xb.moment,xb.moment=a?f("Accessing Moment through the global scope is deprecated, and will be removed in an upcoming release.",tb):tb)}for(var tb,ub,vb,wb="2.8.3",xb="undefined"!=typeof global?global:this,yb=Math.round,zb=Object.prototype.hasOwnProperty,Ab=0,Bb=1,Cb=2,Db=3,Eb=4,Fb=5,Gb=6,Hb={},Ib=[],Jb="undefined"!=typeof module&&module.exports,Kb=/^\/?Date\((\-?\d+)/i,Lb=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,Mb=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/,Nb=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|X|zz?|ZZ?|.)/g,Ob=/(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g,Pb=/\d\d?/,Qb=/\d{1,3}/,Rb=/\d{1,4}/,Sb=/[+\-]?\d{1,6}/,Tb=/\d+/,Ub=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,Vb=/Z|[\+\-]\d\d:?\d\d/gi,Wb=/T/i,Xb=/[\+\-]?\d+(\.\d{1,3})?/,Yb=/\d{1,2}/,Zb=/\d/,$b=/\d\d/,_b=/\d{3}/,ac=/\d{4}/,bc=/[+-]?\d{6}/,cc=/[+-]?\d+/,dc=/^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ec="YYYY-MM-DDTHH:mm:ssZ",fc=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]],gc=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],hc=/([\+\-]|\d\d)/gi,ic=("Date|Hours|Minutes|Seconds|Milliseconds".split("|"),{Milliseconds:1,Seconds:1e3,Minutes:6e4,Hours:36e5,Days:864e5,Months:2592e6,Years:31536e6}),jc={ms:"millisecond",s:"second",m:"minute",h:"hour",d:"day",D:"date",w:"week",W:"isoWeek",M:"month",Q:"quarter",y:"year",DDD:"dayOfYear",e:"weekday",E:"isoWeekday",gg:"weekYear",GG:"isoWeekYear"},kc={dayofyear:"dayOfYear",isoweekday:"isoWeekday",isoweek:"isoWeek",weekyear:"weekYear",isoweekyear:"isoWeekYear"},lc={},mc={s:45,m:45,h:22,d:26,M:11},nc="DDD w W M D d".split(" "),oc="M D H h m s w W".split(" "),pc={M:function(){return this.month()+1},MMM:function(a){return this.localeData().monthsShort(this,a)},MMMM:function(a){return this.localeData().months(this,a)},D:function(){return this.date()},DDD:function(){return this.dayOfYear()},d:function(){return this.day()},dd:function(a){return this.localeData().weekdaysMin(this,a)},ddd:function(a){return this.localeData().weekdaysShort(this,a)},dddd:function(a){return this.localeData().weekdays(this,a)},w:function(){return this.week()},W:function(){return this.isoWeek()},YY:function(){return p(this.year()%100,2)},YYYY:function(){return p(this.year(),4)},YYYYY:function(){return p(this.year(),5)},YYYYYY:function(){var a=this.year(),b=a>=0?"+":"-";return b+p(Math.abs(a),6)},gg:function(){return p(this.weekYear()%100,2)},gggg:function(){return p(this.weekYear(),4)},ggggg:function(){return p(this.weekYear(),5)},GG:function(){return p(this.isoWeekYear()%100,2)},GGGG:function(){return p(this.isoWeekYear(),4)},GGGGG:function(){return p(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return A(this.milliseconds()/100)},SS:function(){return p(A(this.milliseconds()/10),2)},SSS:function(){return p(this.milliseconds(),3)},SSSS:function(){return p(this.milliseconds(),3)},Z:function(){var a=-this.zone(),b="+";return 0>a&&(a=-a,b="-"),b+p(A(a/60),2)+":"+p(A(a)%60,2)},ZZ:function(){var a=-this.zone(),b="+";return 0>a&&(a=-a,b="-"),b+p(A(a/60),2)+p(A(a)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},X:function(){return this.unix()},Q:function(){return this.quarter()}},qc={},rc=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"];nc.length;)vb=nc.pop(),pc[vb+"o"]=i(pc[vb],vb);for(;oc.length;)vb=oc.pop(),pc[vb+vb]=h(pc[vb],2);pc.DDDD=h(pc.DDD,3),m(j.prototype,{set:function(a){var b,c;for(c in a)b=a[c],"function"==typeof b?this[c]=b:this["_"+c]=b},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(a){return this._months[a.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(a){return this._monthsShort[a.month()]},monthsParse:function(a){var b,c,d;for(this._monthsParse||(this._monthsParse=[]),b=0;12>b;b++)if(this._monthsParse[b]||(c=tb.utc([2e3,b]),d="^"+this.months(c,"")+"|^"+this.monthsShort(c,""),this._monthsParse[b]=new RegExp(d.replace(".",""),"i")),this._monthsParse[b].test(a))return b},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(a){return this._weekdays[a.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(a){return this._weekdaysShort[a.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(a){return this._weekdaysMin[a.day()]},weekdaysParse:function(a){var b,c,d;for(this._weekdaysParse||(this._weekdaysParse=[]),b=0;7>b;b++)if(this._weekdaysParse[b]||(c=tb([2e3,1]).day(b),d="^"+this.weekdays(c,"")+"|^"+this.weekdaysShort(c,"")+"|^"+this.weekdaysMin(c,""),this._weekdaysParse[b]=new RegExp(d.replace(".",""),"i")),this._weekdaysParse[b].test(a))return b},_longDateFormat:{LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(a){var b=this._longDateFormat[a];return!b&&this._longDateFormat[a.toUpperCase()]&&(b=this._longDateFormat[a.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a]=b),b},isPM:function(a){return"p"===(a+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(a,b){var c=this._calendar[a];return"function"==typeof c?c.apply(b):c},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(a,b,c,d){var e=this._relativeTime[c];return"function"==typeof e?e(a,b,c,d):e.replace(/%d/i,a)},pastFuture:function(a,b){var c=this._relativeTime[a>0?"future":"past"];return"function"==typeof c?c(b):c.replace(/%s/i,b)},ordinal:function(a){return this._ordinal.replace("%d",a)},_ordinal:"%d",preparse:function(a){return a},postformat:function(a){return a},week:function(a){return hb(a,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),tb=function(b,c,e,f){var g;return"boolean"==typeof e&&(f=e,e=a),g={},g._isAMomentObject=!0,g._i=b,g._f=c,g._l=e,g._strict=f,g._isUTC=!1,g._pf=d(),jb(g)},tb.suppressDeprecationWarnings=!1,tb.createFromInputFallback=f("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(a){a._d=new Date(a._i)}),tb.min=function(){var a=[].slice.call(arguments,0);return kb("isBefore",a)},tb.max=function(){var a=[].slice.call(arguments,0);return kb("isAfter",a)},tb.utc=function(b,c,e,f){var g;return"boolean"==typeof e&&(f=e,e=a),g={},g._isAMomentObject=!0,g._useUTC=!0,g._isUTC=!0,g._l=e,g._i=b,g._f=c,g._strict=f,g._pf=d(),jb(g).utc()},tb.unix=function(a){return tb(1e3*a)},tb.duration=function(a,b){var d,e,f,g,h=a,i=null;return tb.isDuration(a)?h={ms:a._milliseconds,d:a._days,M:a._months}:"number"==typeof a?(h={},b?h[b]=a:h.milliseconds=a):(i=Lb.exec(a))?(d="-"===i[1]?-1:1,h={y:0,d:A(i[Cb])*d,h:A(i[Db])*d,m:A(i[Eb])*d,s:A(i[Fb])*d,ms:A(i[Gb])*d}):(i=Mb.exec(a))?(d="-"===i[1]?-1:1,f=function(a){var b=a&&parseFloat(a.replace(",","."));return(isNaN(b)?0:b)*d},h={y:f(i[2]),M:f(i[3]),d:f(i[4]),h:f(i[5]),m:f(i[6]),s:f(i[7]),w:f(i[8])}):"object"==typeof h&&("from"in h||"to"in h)&&(g=r(tb(h.from),tb(h.to)),h={},h.ms=g.milliseconds,h.M=g.months),e=new l(h),tb.isDuration(a)&&c(a,"_locale")&&(e._locale=a._locale),e},tb.version=wb,tb.defaultFormat=ec,tb.ISO_8601=function(){},tb.momentProperties=Ib,tb.updateOffset=function(){},tb.relativeTimeThreshold=function(b,c){return mc[b]===a?!1:c===a?mc[b]:(mc[b]=c,!0)},tb.lang=f("moment.lang is deprecated. Use moment.locale instead.",function(a,b){return tb.locale(a,b)}),tb.locale=function(a,b){var c;return a&&(c="undefined"!=typeof b?tb.defineLocale(a,b):tb.localeData(a),c&&(tb.duration._locale=tb._locale=c)),tb._locale._abbr},tb.defineLocale=function(a,b){return null!==b?(b.abbr=a,Hb[a]||(Hb[a]=new j),Hb[a].set(b),tb.locale(a),Hb[a]):(delete Hb[a],null)},tb.langData=f("moment.langData is deprecated. Use moment.localeData instead.",function(a){return tb.localeData(a)}),tb.localeData=function(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return tb._locale;if(!u(a)){if(b=J(a))return b;a=[a]}return I(a)},tb.isMoment=function(a){return a instanceof k||null!=a&&c(a,"_isAMomentObject")},tb.isDuration=function(a){return a instanceof l};for(vb=rc.length-1;vb>=0;--vb)z(rc[vb]);tb.normalizeUnits=function(a){return x(a)},tb.invalid=function(a){var b=tb.utc(0/0);return null!=a?m(b._pf,a):b._pf.userInvalidated=!0,b},tb.parseZone=function(){return tb.apply(null,arguments).parseZone()},tb.parseTwoDigitYear=function(a){return A(a)+(A(a)>68?1900:2e3)},m(tb.fn=k.prototype,{clone:function(){return tb(this)},valueOf:function(){return+this._d+6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var a=tb(this).utc();return 0<a.year()&&a.year()<=9999?N(a,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):N(a,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")},toArray:function(){var a=this;return[a.year(),a.month(),a.date(),a.hours(),a.minutes(),a.seconds(),a.milliseconds()]},isValid:function(){return G(this)},isDSTShifted:function(){return this._a?this.isValid()&&w(this._a,(this._isUTC?tb.utc(this._a):tb(this._a)).toArray())>0:!1},parsingFlags:function(){return m({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(a){return this.zone(0,a)},local:function(a){return this._isUTC&&(this.zone(0,a),this._isUTC=!1,a&&this.add(this._dateTzOffset(),"m")),this},format:function(a){var b=N(this,a||tb.defaultFormat);return this.localeData().postformat(b)},add:s(1,"add"),subtract:s(-1,"subtract"),diff:function(a,b,c){var d,e,f,g=K(a,this),h=6e4*(this.zone()-g.zone());return b=x(b),"year"===b||"month"===b?(d=432e5*(this.daysInMonth()+g.daysInMonth()),e=12*(this.year()-g.year())+(this.month()-g.month()),f=this-tb(this).startOf("month")-(g-tb(g).startOf("month")),f-=6e4*(this.zone()-tb(this).startOf("month").zone()-(g.zone()-tb(g).startOf("month").zone())),e+=f/d,"year"===b&&(e/=12)):(d=this-g,e="second"===b?d/1e3:"minute"===b?d/6e4:"hour"===b?d/36e5:"day"===b?(d-h)/864e5:"week"===b?(d-h)/6048e5:d),c?e:o(e)},from:function(a,b){return tb.duration({to:this,from:a}).locale(this.locale()).humanize(!b)},fromNow:function(a){return this.from(tb(),a)},calendar:function(a){var b=a||tb(),c=K(b,this).startOf("day"),d=this.diff(c,"days",!0),e=-6>d?"sameElse":-1>d?"lastWeek":0>d?"lastDay":1>d?"sameDay":2>d?"nextDay":7>d?"nextWeek":"sameElse";return this.format(this.localeData().calendar(e,this))},isLeapYear:function(){return E(this.year())},isDST:function(){return this.zone()<this.clone().month(0).zone()||this.zone()<this.clone().month(5).zone()},day:function(a){var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=eb(a,this.localeData()),this.add(a-b,"d")):b},month:ob("Month",!0),startOf:function(a){switch(a=x(a)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===a?this.weekday(0):"isoWeek"===a&&this.isoWeekday(1),"quarter"===a&&this.month(3*Math.floor(this.month()/3)),this},endOf:function(a){return a=x(a),this.startOf(a).add(1,"isoWeek"===a?"week":a).subtract(1,"ms")},isAfter:function(a,b){return b=x("undefined"!=typeof b?b:"millisecond"),"millisecond"===b?(a=tb.isMoment(a)?a:tb(a),+this>+a):+this.clone().startOf(b)>+tb(a).startOf(b)},isBefore:function(a,b){return b=x("undefined"!=typeof b?b:"millisecond"),"millisecond"===b?(a=tb.isMoment(a)?a:tb(a),+a>+this):+this.clone().startOf(b)<+tb(a).startOf(b)},isSame:function(a,b){return b=x(b||"millisecond"),"millisecond"===b?(a=tb.isMoment(a)?a:tb(a),+this===+a):+this.clone().startOf(b)===+K(a,this).startOf(b)},min:f("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(a){return a=tb.apply(null,arguments),this>a?this:a}),max:f("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(a){return a=tb.apply(null,arguments),a>this?this:a}),zone:function(a,b){var c,d=this._offset||0;return null==a?this._isUTC?d:this._dateTzOffset():("string"==typeof a&&(a=Q(a)),Math.abs(a)<16&&(a=60*a),!this._isUTC&&b&&(c=this._dateTzOffset()),this._offset=a,this._isUTC=!0,null!=c&&this.subtract(c,"m"),d!==a&&(!b||this._changeInProgress?t(this,tb.duration(d-a,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,tb.updateOffset(this,!0),this._changeInProgress=null)),this)},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.zone(this._tzm):"string"==typeof this._i&&this.zone(this._i),this},hasAlignedHourOffset:function(a){return a=a?tb(a).zone():0,(this.zone()-a)%60===0},daysInMonth:function(){return B(this.year(),this.month())},dayOfYear:function(a){var b=yb((tb(this).startOf("day")-tb(this).startOf("year"))/864e5)+1;return null==a?b:this.add(a-b,"d")},quarter:function(a){return null==a?Math.ceil((this.month()+1)/3):this.month(3*(a-1)+this.month()%3)},weekYear:function(a){var b=hb(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==a?b:this.add(a-b,"y")},isoWeekYear:function(a){var b=hb(this,1,4).year;return null==a?b:this.add(a-b,"y")},week:function(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),"d")},isoWeek:function(a){var b=hb(this,1,4).week;return null==a?b:this.add(7*(a-b),"d")},weekday:function(a){var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,"d")},isoWeekday:function(a){return null==a?this.day()||7:this.day(this.day()%7?a:a-7)},isoWeeksInYear:function(){return C(this.year(),1,4)},weeksInYear:function(){var a=this.localeData()._week;return C(this.year(),a.dow,a.doy)},get:function(a){return a=x(a),this[a]()},set:function(a,b){return a=x(a),"function"==typeof this[a]&&this[a](b),this},locale:function(b){var c;return b===a?this._locale._abbr:(c=tb.localeData(b),null!=c&&(this._locale=c),this)},lang:f("moment().lang() is deprecated. Use moment().localeData() instead.",function(b){return b===a?this.localeData():this.locale(b)}),localeData:function(){return this._locale},_dateTzOffset:function(){return 15*Math.round(this._d.getTimezoneOffset()/15)}}),tb.fn.millisecond=tb.fn.milliseconds=ob("Milliseconds",!1),tb.fn.second=tb.fn.seconds=ob("Seconds",!1),tb.fn.minute=tb.fn.minutes=ob("Minutes",!1),tb.fn.hour=tb.fn.hours=ob("Hours",!0),tb.fn.date=ob("Date",!0),tb.fn.dates=f("dates accessor is deprecated. Use date instead.",ob("Date",!0)),tb.fn.year=ob("FullYear",!0),tb.fn.years=f("years accessor is deprecated. Use year instead.",ob("FullYear",!0)),tb.fn.days=tb.fn.day,tb.fn.months=tb.fn.month,tb.fn.weeks=tb.fn.week,tb.fn.isoWeeks=tb.fn.isoWeek,tb.fn.quarters=tb.fn.quarter,tb.fn.toJSON=tb.fn.toISOString,m(tb.duration.fn=l.prototype,{_bubble:function(){var a,b,c,d=this._milliseconds,e=this._days,f=this._months,g=this._data,h=0;g.milliseconds=d%1e3,a=o(d/1e3),g.seconds=a%60,b=o(a/60),g.minutes=b%60,c=o(b/60),g.hours=c%24,e+=o(c/24),h=o(pb(e)),e-=o(qb(h)),f+=o(e/30),e%=30,h+=o(f/12),f%=12,g.days=e,g.months=f,g.years=h},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return o(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*A(this._months/12)},humanize:function(a){var b=gb(this,!a,this.localeData());return a&&(b=this.localeData().pastFuture(+this,b)),this.localeData().postformat(b)},add:function(a,b){var c=tb.duration(a,b);return this._milliseconds+=c._milliseconds,this._days+=c._days,this._months+=c._months,this._bubble(),this},subtract:function(a,b){var c=tb.duration(a,b);return this._milliseconds-=c._milliseconds,this._days-=c._days,this._months-=c._months,this._bubble(),this},get:function(a){return a=x(a),this[a.toLowerCase()+"s"]()},as:function(a){var b,c;if(a=x(a),"month"===a||"year"===a)return b=this._days+this._milliseconds/864e5,c=this._months+12*pb(b),"month"===a?c:c/12;switch(b=this._days+qb(this._months/12),a){case"week":return b/7+this._milliseconds/6048e5;case"day":return b+this._milliseconds/864e5;case"hour":return 24*b+this._milliseconds/36e5;case"minute":return 24*b*60+this._milliseconds/6e4;case"second":return 24*b*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*b*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+a)}},lang:tb.fn.lang,locale:tb.fn.locale,toIsoString:f("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var a=Math.abs(this.years()),b=Math.abs(this.months()),c=Math.abs(this.days()),d=Math.abs(this.hours()),e=Math.abs(this.minutes()),f=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(a?a+"Y":"")+(b?b+"M":"")+(c?c+"D":"")+(d||e||f?"T":"")+(d?d+"H":"")+(e?e+"M":"")+(f?f+"S":""):"P0D"},localeData:function(){return this._locale}}),tb.duration.fn.toString=tb.duration.fn.toISOString;for(vb in ic)c(ic,vb)&&rb(vb.toLowerCase());tb.duration.fn.asMilliseconds=function(){return this.as("ms")},tb.duration.fn.asSeconds=function(){return this.as("s")},tb.duration.fn.asMinutes=function(){return this.as("m")},tb.duration.fn.asHours=function(){return this.as("h")},tb.duration.fn.asDays=function(){return this.as("d")},tb.duration.fn.asWeeks=function(){return this.as("weeks")},tb.duration.fn.asMonths=function(){return this.as("M")},tb.duration.fn.asYears=function(){return this.as("y")},tb.locale("en",{ordinal:function(a){var b=a%10,c=1===A(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th"; -return a+c}}),Jb?module.exports=tb:"function"==typeof define&&define.amd?(define("moment",function(a,b,c){return c.config&&c.config()&&c.config().noGlobal===!0&&(xb.moment=ub),tb}),sb(!0)):sb()}).call(this); \ No newline at end of file diff --git a/assets/js/plugins/gritter/images/gritter-light.png b/assets/js/plugins/gritter/images/gritter-light.png deleted file mode 100644 index 410929d5..00000000 Binary files a/assets/js/plugins/gritter/images/gritter-light.png and /dev/null differ diff --git a/assets/js/plugins/gritter/images/gritter-long.png b/assets/js/plugins/gritter/images/gritter-long.png deleted file mode 100644 index 843d4239..00000000 Binary files a/assets/js/plugins/gritter/images/gritter-long.png and /dev/null differ diff --git a/assets/js/plugins/gritter/images/gritter.png b/assets/js/plugins/gritter/images/gritter.png deleted file mode 100644 index f58077cb..00000000 Binary files a/assets/js/plugins/gritter/images/gritter.png and /dev/null differ diff --git a/assets/js/plugins/gritter/images/ie-spacer.gif b/assets/js/plugins/gritter/images/ie-spacer.gif deleted file mode 100644 index 5bfd67a2..00000000 Binary files a/assets/js/plugins/gritter/images/ie-spacer.gif and /dev/null differ diff --git a/assets/js/plugins/gritter/jquery.gritter.css b/assets/js/plugins/gritter/jquery.gritter.css deleted file mode 100644 index 8514fe44..00000000 --- a/assets/js/plugins/gritter/jquery.gritter.css +++ /dev/null @@ -1,137 +0,0 @@ -/* the norm */ -#gritter-notice-wrapper { - position:fixed; - top:40px; - right:20px; - width:301px; - z-index:9999; - - -webkit-animation-duration: 1s; - animation-duration: 1s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - - -webkit-animation-name: bounceIn; - animation-name: bounceIn; -} -@keyframes bounceIn { - 0% { - opacity: 0; - -webkit-transform: scale(.3); - -ms-transform: scale(.3); - transform: scale(.3); - } - - 50% { - opacity: 1; - -webkit-transform: scale(1.05); - -ms-transform: scale(1.05); - transform: scale(1.05); - } - - 70% { - -webkit-transform: scale(.9); - -ms-transform: scale(.9); - transform: scale(.9); - } - - 100% { - opacity: 1; - -webkit-transform: scale(1); - -ms-transform: scale(1); - transform: scale(1); - } -} -#gritter-notice-wrapper.top-left { - left: 20px; - right: auto; -} -#gritter-notice-wrapper.bottom-right { - top: auto; - left: auto; - bottom: 20px; - right: 20px; -} -#gritter-notice-wrapper.bottom-left { - top: auto; - right: auto; - bottom: 20px; - left: 20px; -} -.gritter-item-wrapper { - position:relative; - margin:0 0 10px 0; - background:url('images/ie-spacer.gif'); /* ie7/8 fix */ -} - -.hover .gritter-top { - /*background-position:right -30px;*/ -} -.gritter-bottom { - height:8px; - margin:0; -} - -.gritter-item { - display:block; - background-color: rgba(39,58,75,0.8); - border-radius: 4px; - color:#eee; - padding:10px 11px 10px 11px; - font-size: 11px; -} -.hover .gritter-item { - background-position:right -40px; -} -.gritter-item p { - padding:0; - margin:0; - word-wrap:break-word; -} - -.gritter-item a:hover { - color: #f8ac59; - text-decoration: underline; -} -.gritter-close { - display:none; - position:absolute; - top:5px; - right:3px; - background:url(images/gritter.png) no-repeat left top; - cursor:pointer; - width:30px; - height:30px; - text-indent:-9999em; -} -.gritter-title { - font-size:12px; - font-weight:bold; - padding:0 0 7px 0; - display:block; - text-transform: uppercase; -} -.gritter-image { - width:48px; - height:48px; - float:left; -} -.gritter-with-image, -.gritter-without-image { - padding:0; -} -.gritter-with-image { - width:220px; - float:right; -} -/* for the light (white) version of the gritter notice */ -.gritter-light .gritter-item, -.gritter-light .gritter-bottom, -.gritter-light .gritter-top, -.gritter-light .gritter-close { - background-image: url(images/gritter-light.png); - color: #222; -} -.gritter-light .gritter-title { - text-shadow: none; -} diff --git a/assets/js/plugins/gritter/jquery.gritter.min.js b/assets/js/plugins/gritter/jquery.gritter.min.js deleted file mode 100644 index 77a8cf71..00000000 --- a/assets/js/plugins/gritter/jquery.gritter.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(b){b.gritter={};b.gritter.options={position:"",class_name:"",fade_in_speed:"medium",fade_out_speed:1000,time:6000};b.gritter.add=function(f){try{return a.add(f||{})}catch(d){var c="Gritter Error: "+d;(typeof(console)!="undefined"&&console.error)?console.error(c,f):alert(c)}};b.gritter.remove=function(d,c){a.removeSpecific(d,c||{})};b.gritter.removeAll=function(c){a.stop(c||{})};var a={position:"",fade_in_speed:"",fade_out_speed:"",time:"",_custom_timer:0,_item_count:0,_is_setup:0,_tpl_close:'<a class="gritter-close" href="#" tabindex="1">Close Notification</a>',_tpl_title:'<span class="gritter-title">[[title]]</span>',_tpl_item:'<div id="gritter-item-[[number]]" class="gritter-item-wrapper [[item_class]]" style="display:none" role="alert"><div class="gritter-top"></div><div class="gritter-item">[[close]][[image]]<div class="[[class_name]]">[[title]]<p>[[text]]</p></div><div style="clear:both"></div></div><div class="gritter-bottom"></div></div>',_tpl_wrap:'<div id="gritter-notice-wrapper"></div>',add:function(g){if(typeof(g)=="string"){g={text:g}}if(g.text===null){throw'You must supply "text" parameter.'}if(!this._is_setup){this._runSetup()}var k=g.title,n=g.text,e=g.image||"",l=g.sticky||false,m=g.class_name||b.gritter.options.class_name,j=b.gritter.options.position,d=g.time||"";this._verifyWrapper();this._item_count++;var f=this._item_count,i=this._tpl_item;b(["before_open","after_open","before_close","after_close"]).each(function(p,q){a["_"+q+"_"+f]=(b.isFunction(g[q]))?g[q]:function(){}});this._custom_timer=0;if(d){this._custom_timer=d}var c=(e!="")?'<img alt="image" src="'+e+'" class="gritter-image" />':"",h=(e!="")?"gritter-with-image":"gritter-without-image";if(k){k=this._str_replace("[[title]]",k,this._tpl_title)}else{k=""}i=this._str_replace(["[[title]]","[[text]]","[[close]]","[[image]]","[[number]]","[[class_name]]","[[item_class]]"],[k,n,this._tpl_close,c,this._item_count,h,m],i);if(this["_before_open_"+f]()===false){return false}b("#gritter-notice-wrapper").addClass(j).append(i);var o=b("#gritter-item-"+this._item_count);o.fadeIn(this.fade_in_speed,function(){a["_after_open_"+f](b(this))});if(!l){this._setFadeTimer(o,f)}b(o).bind("mouseenter mouseleave",function(p){if(p.type=="mouseenter"){if(!l){a._restoreItemIfFading(b(this),f)}}else{if(!l){a._setFadeTimer(b(this),f)}}a._hoverState(b(this),p.type)});b(o).find(".gritter-close").click(function(){a.removeSpecific(f,{},null,true);return false;});return f},_countRemoveWrapper:function(c,d,f){d.remove();this["_after_close_"+c](d,f);if(b(".gritter-item-wrapper").length==0){b("#gritter-notice-wrapper").remove()}},_fade:function(g,d,j,f){var j=j||{},i=(typeof(j.fade)!="undefined")?j.fade:true,c=j.speed||this.fade_out_speed,h=f;this["_before_close_"+d](g,h);if(f){g.unbind("mouseenter mouseleave")}if(i){g.animate({opacity:0},c,function(){g.animate({height:0},300,function(){a._countRemoveWrapper(d,g,h)})})}else{this._countRemoveWrapper(d,g)}},_hoverState:function(d,c){if(c=="mouseenter"){d.addClass("hover");d.find(".gritter-close").show()}else{d.removeClass("hover");d.find(".gritter-close").hide()}},removeSpecific:function(c,g,f,d){if(!f){var f=b("#gritter-item-"+c)}this._fade(f,c,g||{},d)},_restoreItemIfFading:function(d,c){clearTimeout(this["_int_id_"+c]);d.stop().css({opacity:"",height:""})},_runSetup:function(){for(opt in b.gritter.options){this[opt]=b.gritter.options[opt]}this._is_setup=1},_setFadeTimer:function(f,d){var c=(this._custom_timer)?this._custom_timer:this.time;this["_int_id_"+d]=setTimeout(function(){a._fade(f,d)},c)},stop:function(e){var c=(b.isFunction(e.before_close))?e.before_close:function(){};var f=(b.isFunction(e.after_close))?e.after_close:function(){};var d=b("#gritter-notice-wrapper");c(d);d.fadeOut(function(){b(this).remove();f()})},_str_replace:function(v,e,o,n){var k=0,h=0,t="",m="",g=0,q=0,l=[].concat(v),c=[].concat(e),u=o,d=c instanceof Array,p=u instanceof Array;u=[].concat(u);if(n){this.window[n]=0}for(k=0,g=u.length;k<g;k++){if(u[k]===""){continue}for(h=0,q=l.length;h<q;h++){t=u[k]+"";m=d?(c[h]!==undefined?c[h]:""):c[0];u[k]=(t).split(l[h]).join(m);if(n&&u[k]!==t){this.window[n]+=(t.length-u[k].length)/l[h].length}}}return p?u:u[0]},_verifyWrapper:function(){if(b("#gritter-notice-wrapper").length==0){b("body").append(this._tpl_wrap)}}}})(jQuery); diff --git a/assets/js/plugins/iCheck/icheck.min.js b/assets/js/plugins/iCheck/icheck.min.js deleted file mode 100644 index 9b826fb7..00000000 --- a/assets/js/plugins/iCheck/icheck.min.js +++ /dev/null @@ -1,11 +0,0 @@ -/*! iCheck v1.0.2 by Damir Sultanov, http://git.io/arlzeA, MIT Licensed */ -(function(f){function A(a,b,d){var c=a[0],g=/er/.test(d)?_indeterminate:/bl/.test(d)?n:k,e=d==_update?{checked:c[k],disabled:c[n],indeterminate:"true"==a.attr(_indeterminate)||"false"==a.attr(_determinate)}:c[g];if(/^(ch|di|in)/.test(d)&&!e)x(a,g);else if(/^(un|en|de)/.test(d)&&e)q(a,g);else if(d==_update)for(var f in e)e[f]?x(a,f,!0):q(a,f,!0);else if(!b||"toggle"==d){if(!b)a[_callback]("ifClicked");e?c[_type]!==r&&q(a,g):x(a,g)}}function x(a,b,d){var c=a[0],g=a.parent(),e=b==k,u=b==_indeterminate, - v=b==n,s=u?_determinate:e?y:"enabled",F=l(a,s+t(c[_type])),B=l(a,b+t(c[_type]));if(!0!==c[b]){if(!d&&b==k&&c[_type]==r&&c.name){var w=a.closest("form"),p='input[name="'+c.name+'"]',p=w.length?w.find(p):f(p);p.each(function(){this!==c&&f(this).data(m)&&q(f(this),b)})}u?(c[b]=!0,c[k]&&q(a,k,"force")):(d||(c[b]=!0),e&&c[_indeterminate]&&q(a,_indeterminate,!1));D(a,e,b,d)}c[n]&&l(a,_cursor,!0)&&g.find("."+C).css(_cursor,"default");g[_add](B||l(a,b)||"");g.attr("role")&&!u&&g.attr("aria-"+(v?n:k),"true"); - g[_remove](F||l(a,s)||"")}function q(a,b,d){var c=a[0],g=a.parent(),e=b==k,f=b==_indeterminate,m=b==n,s=f?_determinate:e?y:"enabled",q=l(a,s+t(c[_type])),r=l(a,b+t(c[_type]));if(!1!==c[b]){if(f||!d||"force"==d)c[b]=!1;D(a,e,s,d)}!c[n]&&l(a,_cursor,!0)&&g.find("."+C).css(_cursor,"pointer");g[_remove](r||l(a,b)||"");g.attr("role")&&!f&&g.attr("aria-"+(m?n:k),"false");g[_add](q||l(a,s)||"")}function E(a,b){if(a.data(m)){a.parent().html(a.attr("style",a.data(m).s||""));if(b)a[_callback](b);a.off(".i").unwrap(); - f(_label+'[for="'+a[0].id+'"]').add(a.closest(_label)).off(".i")}}function l(a,b,f){if(a.data(m))return a.data(m).o[b+(f?"":"Class")]}function t(a){return a.charAt(0).toUpperCase()+a.slice(1)}function D(a,b,f,c){if(!c){if(b)a[_callback]("ifToggled");a[_callback]("ifChanged")[_callback]("if"+t(f))}}var m="iCheck",C=m+"-helper",r="radio",k="checked",y="un"+k,n="disabled";_determinate="determinate";_indeterminate="in"+_determinate;_update="update";_type="type";_click="click";_touch="touchbegin.i touchend.i"; - _add="addClass";_remove="removeClass";_callback="trigger";_label="label";_cursor="cursor";_mobile=/ipad|iphone|ipod|android|blackberry|windows phone|opera mini|silk/i.test(navigator.userAgent);f.fn[m]=function(a,b){var d='input[type="checkbox"], input[type="'+r+'"]',c=f(),g=function(a){a.each(function(){var a=f(this);c=a.is(d)?c.add(a):c.add(a.find(d))})};if(/^(check|uncheck|toggle|indeterminate|determinate|disable|enable|update|destroy)$/i.test(a))return a=a.toLowerCase(),g(this),c.each(function(){var c= - f(this);"destroy"==a?E(c,"ifDestroyed"):A(c,!0,a);f.isFunction(b)&&b()});if("object"!=typeof a&&a)return this;var e=f.extend({checkedClass:k,disabledClass:n,indeterminateClass:_indeterminate,labelHover:!0},a),l=e.handle,v=e.hoverClass||"hover",s=e.focusClass||"focus",t=e.activeClass||"active",B=!!e.labelHover,w=e.labelHoverClass||"hover",p=(""+e.increaseArea).replace("%","")|0;if("checkbox"==l||l==r)d='input[type="'+l+'"]';-50>p&&(p=-50);g(this);return c.each(function(){var a=f(this);E(a);var c=this, - b=c.id,g=-p+"%",d=100+2*p+"%",d={position:"absolute",top:g,left:g,display:"block",width:d,height:d,margin:0,padding:0,background:"#fff",border:0,opacity:0},g=_mobile?{position:"absolute",visibility:"hidden"}:p?d:{position:"absolute",opacity:0},l="checkbox"==c[_type]?e.checkboxClass||"icheckbox":e.radioClass||"i"+r,z=f(_label+'[for="'+b+'"]').add(a.closest(_label)),u=!!e.aria,y=m+"-"+Math.random().toString(36).substr(2,6),h='<div class="'+l+'" '+(u?'role="'+c[_type]+'" ':"");u&&z.each(function(){h+= - 'aria-labelledby="';this.id?h+=this.id:(this.id=y,h+=y);h+='"'});h=a.wrap(h+"/>")[_callback]("ifCreated").parent().append(e.insert);d=f('<ins class="'+C+'"/>').css(d).appendTo(h);a.data(m,{o:e,s:a.attr("style")}).css(g);e.inheritClass&&h[_add](c.className||"");e.inheritID&&b&&h.attr("id",m+"-"+b);"static"==h.css("position")&&h.css("position","relative");A(a,!0,_update);if(z.length)z.on(_click+".i mouseover.i mouseout.i "+_touch,function(b){var d=b[_type],e=f(this);if(!c[n]){if(d==_click){if(f(b.target).is("a"))return; - A(a,!1,!0)}else B&&(/ut|nd/.test(d)?(h[_remove](v),e[_remove](w)):(h[_add](v),e[_add](w)));if(_mobile)b.stopPropagation();else return!1}});a.on(_click+".i focus.i blur.i keyup.i keydown.i keypress.i",function(b){var d=b[_type];b=b.keyCode;if(d==_click)return!1;if("keydown"==d&&32==b)return c[_type]==r&&c[k]||(c[k]?q(a,k):x(a,k)),!1;if("keyup"==d&&c[_type]==r)!c[k]&&x(a,k);else if(/us|ur/.test(d))h["blur"==d?_remove:_add](s)});d.on(_click+" mousedown mouseup mouseover mouseout "+_touch,function(b){var d= - b[_type],e=/wn|up/.test(d)?t:v;if(!c[n]){if(d==_click)A(a,!1,!0);else{if(/wn|er|in/.test(d))h[_add](e);else h[_remove](e+" "+t);if(z.length&&B&&e==v)z[/ut|nd/.test(d)?_remove:_add](w)}if(_mobile)b.stopPropagation();else return!1}})})}})(window.jQuery||window.Zepto); diff --git a/assets/js/plugins/ionRangeSlider/ion.rangeSlider.min.js b/assets/js/plugins/ionRangeSlider/ion.rangeSlider.min.js deleted file mode 100644 index ca6fda0f..00000000 --- a/assets/js/plugins/ionRangeSlider/ion.rangeSlider.min.js +++ /dev/null @@ -1,26 +0,0 @@ -// Ion.RangeSlider | version 1.9.1 | https://github.com/IonDen/ion.rangeSlider -(function(c,ea,$,M){var aa=0,s,S=function(){var c=M.userAgent,a=/msie\s\d+/i;return 0<c.search(a)&&(c=a.exec(c).toString(),c=c.split(" ")[1],9>c)?!0:!1}(),X="ontouchstart"in $||0<M.msMaxTouchPoints,N=function(c){"Number"!==typeof c&&(c=parseFloat(c));return isNaN(c)?null:c},H={init:function(fa){return this.each(function(){var a=c.extend({min:null,max:null,from:null,to:null,type:"single",step:null,prefix:"",postfix:"",maxPostfix:"",hasGrid:!1,hideMinMax:!1,hideFromTo:!1,prettify:!0,disable:!1,values:null, -onChange:null,onLoad:null,onFinish:null},fa),e=c(this),n=this,I=!1,g=null;if(!e.data("isActive")){e.data("isActive",!0);this.pluginCount=aa+=1;e.prop("value")&&(g=e.prop("value").split(";"));"single"===a.type?g&&1<g.length?("number"!==typeof a.min?a.min=parseFloat(g[0]):"number"!==typeof a.from&&(a.from=parseFloat(g[0])),"number"!==typeof a.max&&(a.max=parseFloat(g[1]))):g&&1===g.length&&"number"!==typeof a.from&&(a.from=parseFloat(g[0])):"double"===a.type&&(g&&1<g.length?("number"!==typeof a.min? -a.min=parseFloat(g[0]):"number"!==typeof a.from&&(a.from=parseFloat(g[0])),"number"!==typeof a.max?a.max=parseFloat(g[1]):"number"!==typeof a.to&&(a.to=parseFloat(g[1]))):g&&1===g.length&&("number"!==typeof a.min?a.min=parseFloat(g[0]):"number"!==typeof a.from&&(a.from=parseFloat(g[0]))));"number"===typeof e.data("min")&&(a.min=parseFloat(e.data("min")));"number"===typeof e.data("max")&&(a.max=parseFloat(e.data("max")));"number"===typeof e.data("from")&&(a.from=parseFloat(e.data("from")));"number"=== -typeof e.data("to")&&(a.to=parseFloat(e.data("to")));e.data("step")&&(a.step=parseFloat(e.data("step")));e.data("type")&&(a.type=e.data("type"));e.data("prefix")&&(a.prefix=e.data("prefix"));e.data("postfix")&&(a.postfix=e.data("postfix"));e.data("maxpostfix")&&(a.maxPostfix=e.data("maxpostfix"));e.data("hasgrid")&&(a.hasGrid=e.data("hasgrid"));e.data("hideminmax")&&(a.hideMinMax=e.data("hideminmax"));e.data("hidefromto")&&(a.hideFromTo=e.data("hidefromto"));e.data("prettify")&&(a.prettify=e.data("prettify")); -e.data("disable")&&(a.disable=e.data("disable"));e.data("values")&&(a.values=e.data("values").split(","));a.min=N(a.min);a.min||0===a.min||(a.min=10);a.max=N(a.max);a.max||0===a.max||(a.max=100);"[object Array]"!==Object.prototype.toString.call(a.values)&&(a.values=null);a.values&&0<a.values.length&&(a.min=0,a.max=a.values.length-1,a.step=1,I=!0);a.from=N(a.from);a.from||0===a.from||(a.from=a.min);a.to=N(a.to);a.to||0===a.to||(a.to=a.max);a.step=N(a.step);a.step||(a.step=1);a.from<a.min&&(a.from= -a.min);a.from>a.max&&(a.from=a.min);a.to<a.min&&(a.to=a.max);a.to>a.max&&(a.to=a.max);"double"===a.type&&(a.from>a.to&&(a.from=a.to),a.to<a.from&&(a.to=a.from));var z=function(b){b=b.toString();a.prettify&&(b=b.replace(/(\d{1,3}(?=(?:\d\d\d)+(?!\d)))/g,"$1 "));return b},g='<span class="irs" id="irs-'+this.pluginCount+'"></span>';e[0].style.display="none";e.before(g);var p=e.prev(),J=c(ea.body),T=c($),q,C,D,A,B,w,x,m,t,r,H,M,v=!1,y=!1,E=!0,f={},U=0,O=0,P=0,l=0,F=0,G=0,V=0,Q=0,R=0,Y=0,u=0;parseInt(a.step, -10)!==parseFloat(a.step)&&(u=a.step.toString().split(".")[1],u=Math.pow(10,u.length));this.updateData=function(b){E=!0;a=c.extend(a,b);p.find("*").off();T.off("mouseup.irs"+n.pluginCount);J.off("mouseup.irs"+n.pluginCount);J.off("mousemove.irs"+n.pluginCount);p.html("");ba()};this.removeSlider=function(){p.find("*").off();T.off("mouseup.irs"+n.pluginCount);J.off("mouseup.irs"+n.pluginCount);J.off("mousemove.irs"+n.pluginCount);p.html("").remove();e.data("isActive",!1);e.show()};var ba=function(){p.html('<span class="irs"><span class="irs-line"><span class="irs-line-left"></span><span class="irs-line-mid"></span><span class="irs-line-right"></span></span><span class="irs-min">0</span><span class="irs-max">1</span><span class="irs-from">0</span><span class="irs-to">0</span><span class="irs-single">0</span></span><span class="irs-grid"></span>'); -q=p.find(".irs");C=q.find(".irs-min");D=q.find(".irs-max");A=q.find(".irs-from");B=q.find(".irs-to");w=q.find(".irs-single");M=p.find(".irs-grid");a.hideFromTo&&(A[0].style.visibility="hidden",B[0].style.visibility="hidden",w[0].style.visibility="hidden");a.hideFromTo||(A[0].style.visibility="visible",B[0].style.visibility="visible",w[0].style.visibility="visible");a.hideMinMax&&(C[0].style.visibility="hidden",D[0].style.visibility="hidden",P=O=0);a.hideMinMax||(C[0].style.visibility="visible",D[0].style.visibility= -"visible",a.values?(C.html(a.prefix+a.values[0]+a.postfix),D.html(a.prefix+a.values[a.values.length-1]+a.maxPostfix+a.postfix)):(C.html(a.prefix+z(a.min)+a.postfix),D.html(a.prefix+z(a.max)+a.maxPostfix+a.postfix)),O=C.outerWidth(),P=D.outerWidth());ga()},ga=function(){if("single"===a.type){if(q.append('<span class="irs-slider single"></span>'),x=q.find(".single"),x.on("mousedown",function(a){a.preventDefault();a.stopPropagation();K(a,c(this),null);y=v=!0;s=n.pluginCount;S&&c("*").prop("unselectable", -!0)}),X)x.on("touchstart",function(a){a.preventDefault();a.stopPropagation();K(a.originalEvent.touches[0],c(this),null);y=v=!0;s=n.pluginCount})}else"double"===a.type&&(q.append('<span class="irs-diapason"></span><span class="irs-slider from"></span><span class="irs-slider to"></span>'),m=q.find(".from"),t=q.find(".to"),H=q.find(".irs-diapason"),L(),m.on("mousedown",function(a){a.preventDefault();a.stopPropagation();c(this).addClass("last");t.removeClass("last");K(a,c(this),"from");y=v=!0;s=n.pluginCount; -S&&c("*").prop("unselectable",!0)}),t.on("mousedown",function(a){a.preventDefault();a.stopPropagation();c(this).addClass("last");m.removeClass("last");K(a,c(this),"to");y=v=!0;s=n.pluginCount;S&&c("*").prop("unselectable",!0)}),X&&(m.on("touchstart",function(a){a.preventDefault();a.stopPropagation();c(this).addClass("last");t.removeClass("last");K(a.originalEvent.touches[0],c(this),"from");y=v=!0;s=n.pluginCount}),t.on("touchstart",function(a){a.preventDefault();a.stopPropagation();c(this).addClass("last"); -m.removeClass("last");K(a.originalEvent.touches[0],c(this),"to");y=v=!0;s=n.pluginCount})),a.to===a.max&&m.addClass("last"));J.on("mouseup.irs"+n.pluginCount,function(){s===n.pluginCount&&v&&(v=y=!1,r.removeAttr("id"),r=null,"double"===a.type&&L(),Z(),S&&c("*").prop("unselectable",!1))});J.on("mousemove.irs"+n.pluginCount,function(a){v&&(U=a.pageX,W())});p.on("mousedown",function(){s=n.pluginCount});p.on("mouseup",function(b){if(s===n.pluginCount&&!v&&!a.disable){b=b.pageX;E=!1;b-=p.offset().left; -var d=f.fromX+(f.toX-f.fromX)/2;Q=0;V=q.width()-G;R=q.width()-G;"single"===a.type?(r=x,r.attr("id","irs-active-slider"),W(b)):"double"===a.type&&(r=b<=d?m:t,r.attr("id","irs-active-slider"),W(b),L());r.removeAttr("id");r=null}});X&&(T.on("touchend",function(){v&&(v=y=!1,r.removeAttr("id"),r=null,"double"===a.type&&L(),Z())}),T.on("touchmove",function(a){v&&(U=a.originalEvent.touches[0].pageX,W())}));ca();ha();a.hasGrid&&ia();a.disable?(p.addClass("irs-disabled"),p.append('<span class="irs-disable-mask"></span>')): -(p.removeClass("irs-disabled"),p.find(".irs-disable-mask").remove())},ca=function(){l=q.width();G=x?x.width():m.width();F=l-G},K=function(b,d,h){ca();E=!1;r=d;r.attr("id","irs-active-slider");d=r.offset().left;Y=d+(b.pageX-d)-r.position().left;"single"===a.type?V=q.width()-G:"double"===a.type&&("from"===h?(Q=0,R=parseInt(t.css("left"),10)):(Q=parseInt(m.css("left"),10),R=q.width()-G))},L=function(){var a=m.width(),d=c.data(m[0],"x")||parseInt(m[0].style.left,10)||m.position().left,h=(c.data(t[0], -"x")||parseInt(t[0].style.left,10)||t.position().left)-d;H[0].style.left=d+a/2+"px";H[0].style.width=h+"px"},W=function(b){var d=U-Y,d=b?b:U-Y;"single"===a.type?(0>d&&(d=0),d>V&&(d=V)):"double"===a.type&&(d<Q&&(d=Q),d>R&&(d=R),L());c.data(r[0],"x",d);Z();b=Math.round(d);r[0].style.left=b+"px"},Z=function(){var b={input:e,slider:p,min:a.min,max:a.max,fromNumber:0,toNumber:0,fromPers:0,toPers:0,fromX:0,fromX_pure:0,toX:0,toX_pure:0},d=a.max-a.min,h;"single"===a.type?(b.fromX=c.data(x[0],"x")||parseInt(x[0].style.left, -10)||x.position().left,b.fromPers=b.fromX/F*100,h=d/100*b.fromPers+a.min,b.fromNumber=Math.round(h/a.step)*a.step,b.fromNumber<a.min&&(b.fromNumber=a.min),b.fromNumber>a.max&&(b.fromNumber=a.max),u&&(b.fromNumber=parseInt(b.fromNumber*u,10)/u),I&&(b.fromValue=a.values[b.fromNumber])):"double"===a.type&&(b.fromX=c.data(m[0],"x")||parseInt(m[0].style.left,10)||m.position().left,b.fromPers=b.fromX/F*100,h=d/100*b.fromPers+a.min,b.fromNumber=Math.round(h/a.step)*a.step,b.fromNumber<a.min&&(b.fromNumber= -a.min),b.toX=c.data(t[0],"x")||parseInt(t[0].style.left,10)||t.position().left,b.toPers=b.toX/F*100,d=d/100*b.toPers+a.min,b.toNumber=Math.round(d/a.step)*a.step,b.toNumber>a.max&&(b.toNumber=a.max),u&&(b.fromNumber=parseInt(b.fromNumber*u,10)/u,b.toNumber=parseInt(b.toNumber*u,10)/u),I&&(b.fromValue=a.values[b.fromNumber],b.toValue=a.values[b.toNumber]));f=b;da()},ha=function(){var b={input:e,slider:p,min:a.min,max:a.max,fromNumber:a.from,toNumber:a.to,fromPers:0,toPers:0,fromX:0,fromX_pure:0,toX:0, -toX_pure:0},d=a.max-a.min;"single"===a.type?(b.fromPers=0!==d?(b.fromNumber-a.min)/d*100:0,b.fromX_pure=F/100*b.fromPers,b.fromX=Math.round(b.fromX_pure),x[0].style.left=b.fromX+"px",c.data(x[0],"x",b.fromX_pure)):"double"===a.type&&(b.fromPers=0!==d?(b.fromNumber-a.min)/d*100:0,b.fromX_pure=F/100*b.fromPers,b.fromX=Math.round(b.fromX_pure),m[0].style.left=b.fromX+"px",c.data(m[0],"x",b.fromX_pure),b.toPers=0!==d?(b.toNumber-a.min)/d*100:1,b.toX_pure=F/100*b.toPers,b.toX=Math.round(b.toX_pure),t[0].style.left= -b.toX+"px",c.data(t[0],"x",b.toX_pure),L());f=b;da()},da=function(){var b,d,h,c,g,k;k=G/2;h="";"single"===a.type?(h=f.fromNumber===a.max?a.maxPostfix:"",A[0].style.display="none",B[0].style.display="none",h=I?a.prefix+a.values[f.fromNumber]+h+a.postfix:a.prefix+z(f.fromNumber)+h+a.postfix,w.html(h),g=w.outerWidth(),k=f.fromX-g/2+k,0>k&&(k=0),k>l-g&&(k=l-g),w[0].style.left=k+"px",a.hideMinMax||a.hideFromTo||(C[0].style.display=k<O?"none":"block",D[0].style.display=k+g>l-P?"none":"block"),e.attr("value", -parseFloat(f.fromNumber))):"double"===a.type&&(h=f.toNumber===a.max?a.maxPostfix:"",I?(b=a.prefix+a.values[f.fromNumber]+a.postfix,d=a.prefix+a.values[f.toNumber]+h+a.postfix,h=f.fromNumber!==f.toNumber?a.prefix+a.values[f.fromNumber]+" \u2014 "+a.prefix+a.values[f.toNumber]+h+a.postfix:a.prefix+a.values[f.fromNumber]+h+a.postfix):(b=a.prefix+z(f.fromNumber)+a.postfix,d=a.prefix+z(f.toNumber)+h+a.postfix,h=f.fromNumber!==f.toNumber?a.prefix+z(f.fromNumber)+" \u2014 "+a.prefix+z(f.toNumber)+h+a.postfix: -a.prefix+z(f.fromNumber)+h+a.postfix),A.html(b),B.html(d),w.html(h),b=A.outerWidth(),d=f.fromX-b/2+k,0>d&&(d=0),d>l-b&&(d=l-b),A[0].style.left=d+"px",h=B.outerWidth(),c=f.toX-h/2+k,0>c&&(c=0),c>l-h&&(c=l-h),B[0].style.left=c+"px",g=w.outerWidth(),k=f.fromX+(f.toX-f.fromX)/2-g/2+k,0>k&&(k=0),k>l-g&&(k=l-g),w[0].style.left=k+"px",d+b<c?(w[0].style.display="none",A[0].style.display="block",B[0].style.display="block"):(w[0].style.display="block",A[0].style.display="none",B[0].style.display="none"),a.hideMinMax|| -a.hideFromTo||(C[0].style.display=k<O||d<O?"none":"block",D[0].style.display=k+g>l-P||c+h>l-P?"none":"block"),e.attr("value",parseFloat(f.fromNumber)+";"+parseFloat(f.toNumber)));ja()},ja=function(){"function"!==typeof a.onFinish||y||E||a.onFinish.call(this,f);"function"!==typeof a.onChange||E||a.onChange.call(this,f);"function"===typeof a.onLoad&&!y&&E&&(a.onLoad.call(this,f),E=!1)},ia=function(){p.addClass("irs-with-grid");var b,d="",c=0,c=0,e="";for(b=0;20>=b;b+=1)c=Math.floor(l/20*b),c>=l&&(c= -l-1),e+='<span class="irs-grid-pol small" style="left: '+c+'px;"></span>';for(b=0;4>=b;b+=1)c=Math.floor(l/4*b),c>=l&&(c=l-1),e+='<span class="irs-grid-pol" style="left: '+c+'px;"></span>',u?(d=a.min+(a.max-a.min)/4*b,d=d/a.step*a.step,d=parseInt(d*u,10)/u):(d=Math.round(a.min+(a.max-a.min)/4*b),d=Math.round(d/a.step)*a.step,d=z(d)),I&&(a.hideMinMax?(d=Math.round(a.min+(a.max-a.min)/4*b),d=Math.round(d/a.step)*a.step,d=0===b||4===b?a.values[d]:""):d=""),0===b?e+='<span class="irs-grid-text" style="left: '+ -c+'px; text-align: left;">'+d+"</span>":4===b?(c-=100,e+='<span class="irs-grid-text" style="left: '+c+'px; text-align: right;">'+d+"</span>"):(c-=50,e+='<span class="irs-grid-text" style="left: '+c+'px;">'+d+"</span>");M.html(e)};ba()}})},update:function(c){return this.each(function(){this.updateData(c)})},remove:function(){return this.each(function(){this.removeSlider()})}};c.fn.ionRangeSlider=function(s){if(H[s])return H[s].apply(this,Array.prototype.slice.call(arguments,1));if("object"!==typeof s&& -s)c.error("Method "+s+" does not exist for jQuery.ionRangeSlider");else return H.init.apply(this,arguments)}})(jQuery,document,window,navigator); \ No newline at end of file diff --git a/assets/js/plugins/jasny/jasny-bootstrap.min.js b/assets/js/plugins/jasny/jasny-bootstrap.min.js deleted file mode 100644 index d7f1d943..00000000 --- a/assets/js/plugins/jasny/jasny-bootstrap.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * Jasny Bootstrap v3.1.2 (http://jasny.github.io/bootstrap) - * Copyright 2012-2014 Arnold Daniels - * Licensed under Apache-2.0 (https://github.com/jasny/bootstrap/blob/master/LICENSE) - */ -if("undefined"==typeof jQuery)throw new Error("Jasny Bootstrap's JavaScript requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}void 0===a.support.transition&&(a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()}))}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.state=null,this.placement=null,this.options.recalc&&(this.calcClone(),a(window).on("resize",a.proxy(this.recalc,this))),this.options.autohide&&a(document).on("click",a.proxy(this.autohide,this)),this.options.toggle&&this.toggle(),this.options.disablescrolling&&(this.options.disableScrolling=this.options.disablescrolling,delete this.options.disablescrolling)};b.DEFAULTS={toggle:!0,placement:"auto",autohide:!0,recalc:!0,disableScrolling:!0},b.prototype.offset=function(){switch(this.placement){case"left":case"right":return this.$element.outerWidth();case"top":case"bottom":return this.$element.outerHeight()}},b.prototype.calcPlacement=function(){function b(a,b){if("auto"===e.css(b))return a;if("auto"===e.css(a))return b;var c=parseInt(e.css(a),10),d=parseInt(e.css(b),10);return c>d?b:a}if("auto"!==this.options.placement)return void(this.placement=this.options.placement);this.$element.hasClass("in")||this.$element.css("visiblity","hidden !important").addClass("in");var c=a(window).width()/this.$element.width(),d=a(window).height()/this.$element.height(),e=this.$element;this.placement=c>=d?b("left","right"):b("top","bottom"),"hidden !important"===this.$element.css("visibility")&&this.$element.removeClass("in").css("visiblity","")},b.prototype.opposite=function(a){switch(a){case"top":return"bottom";case"left":return"right";case"bottom":return"top";case"right":return"left"}},b.prototype.getCanvasElements=function(){var b=this.options.canvas?a(this.options.canvas):this.$element,c=b.find("*").filter(function(){return"fixed"===a(this).css("position")}).not(this.options.exclude);return b.add(c)},b.prototype.slide=function(b,c,d){if(!a.support.transition){var e={};return e[this.placement]="+="+c,b.animate(e,350,d)}var f=this.placement,g=this.opposite(f);b.each(function(){"auto"!==a(this).css(f)&&a(this).css(f,(parseInt(a(this).css(f),10)||0)+c),"auto"!==a(this).css(g)&&a(this).css(g,(parseInt(a(this).css(g),10)||0)-c)}),this.$element.one(a.support.transition.end,d).emulateTransitionEnd(350)},b.prototype.disableScrolling=function(){var b=a("body").width(),c="padding-"+this.opposite(this.placement);if(void 0===a("body").data("offcanvas-style")&&a("body").data("offcanvas-style",a("body").attr("style")),a("body").css("overflow","hidden"),a("body").width()>b){var d=parseInt(a("body").css(c),10)+a("body").width()-b;setTimeout(function(){a("body").css(c,d)},1)}},b.prototype.show=function(){if(!this.state){var b=a.Event("show.bs.offcanvas");if(this.$element.trigger(b),!b.isDefaultPrevented()){this.state="slide-in",this.calcPlacement();var c=this.getCanvasElements(),d=this.placement,e=this.opposite(d),f=this.offset();-1!==c.index(this.$element)&&(a(this.$element).data("offcanvas-style",a(this.$element).attr("style")||""),this.$element.css(d,-1*f),this.$element.css(d)),c.addClass("canvas-sliding").each(function(){void 0===a(this).data("offcanvas-style")&&a(this).data("offcanvas-style",a(this).attr("style")||""),"static"===a(this).css("position")&&a(this).css("position","relative"),"auto"!==a(this).css(d)&&"0px"!==a(this).css(d)||"auto"!==a(this).css(e)&&"0px"!==a(this).css(e)||a(this).css(d,0)}),this.options.disableScrolling&&this.disableScrolling();var g=function(){"slide-in"==this.state&&(this.state="slid",c.removeClass("canvas-sliding").addClass("canvas-slid"),this.$element.trigger("shown.bs.offcanvas"))};setTimeout(a.proxy(function(){this.$element.addClass("in"),this.slide(c,f,a.proxy(g,this))},this),1)}}},b.prototype.hide=function(){if("slid"===this.state){var b=a.Event("hide.bs.offcanvas");if(this.$element.trigger(b),!b.isDefaultPrevented()){this.state="slide-out";var c=a(".canvas-slid"),d=(this.placement,-1*this.offset()),e=function(){"slide-out"==this.state&&(this.state=null,this.placement=null,this.$element.removeClass("in"),c.removeClass("canvas-sliding"),c.add(this.$element).add("body").each(function(){a(this).attr("style",a(this).data("offcanvas-style")).removeData("offcanvas-style")}),this.$element.trigger("hidden.bs.offcanvas"))};c.removeClass("canvas-slid").addClass("canvas-sliding"),setTimeout(a.proxy(function(){this.slide(c,d,a.proxy(e,this))},this),1)}}},b.prototype.toggle=function(){"slide-in"!==this.state&&"slide-out"!==this.state&&this["slid"===this.state?"hide":"show"]()},b.prototype.calcClone=function(){this.$calcClone=this.$element.clone().html("").addClass("offcanvas-clone").removeClass("in").appendTo(a("body"))},b.prototype.recalc=function(){if("none"!==this.$calcClone.css("display")&&("slid"===this.state||"slide-in"===this.state)){this.state=null,this.placement=null;var b=this.getCanvasElements();this.$element.removeClass("in"),b.removeClass("canvas-slid"),b.add(this.$element).add("body").each(function(){a(this).attr("style",a(this).data("offcanvas-style")).removeData("offcanvas-style")})}},b.prototype.autohide=function(b){0===a(b.target).closest(this.$element).length&&this.hide()};var c=a.fn.offcanvas;a.fn.offcanvas=function(c){return this.each(function(){var d=a(this),e=d.data("bs.offcanvas"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.offcanvas",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.offcanvas.Constructor=b,a.fn.offcanvas.noConflict=function(){return a.fn.offcanvas=c,this},a(document).on("click.bs.offcanvas.data-api","[data-toggle=offcanvas]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.offcanvas"),h=g?"toggle":d.data();b.stopPropagation(),g?g.toggle():f.offcanvas(h)})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.$element.on("click.bs.rowlink","td:not(.rowlink-skip)",a.proxy(this.click,this))};b.DEFAULTS={target:"a"},b.prototype.click=function(b){var c=a(b.currentTarget).closest("tr").find(this.options.target)[0];if(a(b.target)[0]!==c)if(b.preventDefault(),c.click)c.click();else if(document.createEvent){var d=document.createEvent("MouseEvents");d.initMouseEvent("click",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),c.dispatchEvent(d)}};var c=a.fn.rowlink;a.fn.rowlink=function(c){return this.each(function(){var d=a(this),e=d.data("rowlink");e||d.data("rowlink",e=new b(this,c))})},a.fn.rowlink.Constructor=b,a.fn.rowlink.noConflict=function(){return a.fn.rowlink=c,this},a(document).on("click.bs.rowlink.data-api",'[data-link="row"]',function(b){if(0===a(b.target).closest(".rowlink-skip").length){var c=a(this);c.data("rowlink")||(c.rowlink(c.data()),a(b.target).trigger("click.bs.rowlink"))}})}(window.jQuery),+function(a){"use strict";var b=void 0!==window.orientation,c=navigator.userAgent.toLowerCase().indexOf("android")>-1,d="Microsoft Internet Explorer"==window.navigator.appName,e=function(b,d){c||(this.$element=a(b),this.options=a.extend({},e.DEFAULTS,d),this.mask=String(this.options.mask),this.init(),this.listen(),this.checkVal())};e.DEFAULTS={mask:"",placeholder:"_",definitions:{9:"[0-9]",a:"[A-Za-z]","?":"[A-Za-z0-9]","*":"."}},e.prototype.init=function(){var b=this.options.definitions,c=this.mask.length;this.tests=[],this.partialPosition=this.mask.length,this.firstNonMaskPos=null,a.each(this.mask.split(""),a.proxy(function(a,d){"?"==d?(c--,this.partialPosition=a):b[d]?(this.tests.push(new RegExp(b[d])),null===this.firstNonMaskPos&&(this.firstNonMaskPos=this.tests.length-1)):this.tests.push(null)},this)),this.buffer=a.map(this.mask.split(""),a.proxy(function(a){return"?"!=a?b[a]?this.options.placeholder:a:void 0},this)),this.focusText=this.$element.val(),this.$element.data("rawMaskFn",a.proxy(function(){return a.map(this.buffer,function(a,b){return this.tests[b]&&a!=this.options.placeholder?a:null}).join("")},this))},e.prototype.listen=function(){if(!this.$element.attr("readonly")){var b=(d?"paste":"input")+".mask";this.$element.on("unmask.bs.inputmask",a.proxy(this.unmask,this)).on("focus.bs.inputmask",a.proxy(this.focusEvent,this)).on("blur.bs.inputmask",a.proxy(this.blurEvent,this)).on("keydown.bs.inputmask",a.proxy(this.keydownEvent,this)).on("keypress.bs.inputmask",a.proxy(this.keypressEvent,this)).on(b,a.proxy(this.pasteEvent,this))}},e.prototype.caret=function(a,b){if(0!==this.$element.length){if("number"==typeof a)return b="number"==typeof b?b:a,this.$element.each(function(){if(this.setSelectionRange)this.setSelectionRange(a,b);else if(this.createTextRange){var c=this.createTextRange();c.collapse(!0),c.moveEnd("character",b),c.moveStart("character",a),c.select()}});if(this.$element[0].setSelectionRange)a=this.$element[0].selectionStart,b=this.$element[0].selectionEnd;else if(document.selection&&document.selection.createRange){var c=document.selection.createRange();a=0-c.duplicate().moveStart("character",-1e5),b=a+c.text.length}return{begin:a,end:b}}},e.prototype.seekNext=function(a){for(var b=this.mask.length;++a<=b&&!this.tests[a];);return a},e.prototype.seekPrev=function(a){for(;--a>=0&&!this.tests[a];);return a},e.prototype.shiftL=function(a,b){var c=this.mask.length;if(!(0>a)){for(var d=a,e=this.seekNext(b);c>d;d++)if(this.tests[d]){if(!(c>e&&this.tests[d].test(this.buffer[e])))break;this.buffer[d]=this.buffer[e],this.buffer[e]=this.options.placeholder,e=this.seekNext(e)}this.writeBuffer(),this.caret(Math.max(this.firstNonMaskPos,a))}},e.prototype.shiftR=function(a){for(var b=this.mask.length,c=a,d=this.options.placeholder;b>c;c++)if(this.tests[c]){var e=this.seekNext(c),f=this.buffer[c];if(this.buffer[c]=d,!(b>e&&this.tests[e].test(f)))break;d=f}},e.prototype.unmask=function(){this.$element.unbind(".mask").removeData("inputmask")},e.prototype.focusEvent=function(){this.focusText=this.$element.val();var a=this.mask.length,b=this.checkVal();this.writeBuffer();var c=this,d=function(){b==a?c.caret(0,b):c.caret(b)};d(),setTimeout(d,50)},e.prototype.blurEvent=function(){this.checkVal(),this.$element.val()!==this.focusText&&this.$element.trigger("change")},e.prototype.keydownEvent=function(a){var c=a.which;if(8==c||46==c||b&&127==c){var d=this.caret(),e=d.begin,f=d.end;return f-e===0&&(e=46!=c?this.seekPrev(e):f=this.seekNext(e-1),f=46==c?this.seekNext(f):f),this.clearBuffer(e,f),this.shiftL(e,f-1),!1}return 27==c?(this.$element.val(this.focusText),this.caret(0,this.checkVal()),!1):void 0},e.prototype.keypressEvent=function(a){var b=this.mask.length,c=a.which,d=this.caret();if(a.ctrlKey||a.altKey||a.metaKey||32>c)return!0;if(c){d.end-d.begin!==0&&(this.clearBuffer(d.begin,d.end),this.shiftL(d.begin,d.end-1));var e=this.seekNext(d.begin-1);if(b>e){var f=String.fromCharCode(c);if(this.tests[e].test(f)){this.shiftR(e),this.buffer[e]=f,this.writeBuffer();var g=this.seekNext(e);this.caret(g)}}return!1}},e.prototype.pasteEvent=function(){var a=this;setTimeout(function(){a.caret(a.checkVal(!0))},0)},e.prototype.clearBuffer=function(a,b){for(var c=this.mask.length,d=a;b>d&&c>d;d++)this.tests[d]&&(this.buffer[d]=this.options.placeholder)},e.prototype.writeBuffer=function(){return this.$element.val(this.buffer.join("")).val()},e.prototype.checkVal=function(a){for(var b=this.mask.length,c=this.$element.val(),d=-1,e=0,f=0;b>e;e++)if(this.tests[e]){for(this.buffer[e]=this.options.placeholder;f++<c.length;){var g=c.charAt(f-1);if(this.tests[e].test(g)){this.buffer[e]=g,d=e;break}}if(f>c.length)break}else this.buffer[e]==c.charAt(f)&&e!=this.partialPosition&&(f++,d=e);return!a&&d+1<this.partialPosition?(this.$element.val(""),this.clearBuffer(0,b)):(a||d+1>=this.partialPosition)&&(this.writeBuffer(),a||this.$element.val(this.$element.val().substring(0,d+1))),this.partialPosition?e:this.firstNonMaskPos};var f=a.fn.inputmask;a.fn.inputmask=function(b){return this.each(function(){var c=a(this),d=c.data("inputmask");d||c.data("inputmask",d=new e(this,b))})},a.fn.inputmask.Constructor=e,a.fn.inputmask.noConflict=function(){return a.fn.inputmask=f,this},a(document).on("focus.bs.inputmask.data-api","[data-mask]",function(){var b=a(this);b.data("inputmask")||b.inputmask(b.data())})}(window.jQuery),+function(a){"use strict";var b="Microsoft Internet Explorer"==window.navigator.appName,c=function(b,c){if(this.$element=a(b),this.$input=this.$element.find(":file"),0!==this.$input.length){this.name=this.$input.attr("name")||c.name,this.$hidden=this.$element.find('input[type=hidden][name="'+this.name+'"]'),0===this.$hidden.length&&(this.$hidden=a('<input type="hidden">').insertBefore(this.$input)),this.$preview=this.$element.find(".fileinput-preview");var d=this.$preview.css("height");"inline"!==this.$preview.css("display")&&"0px"!==d&&"none"!==d&&this.$preview.css("line-height",d),this.original={exists:this.$element.hasClass("fileinput-exists"),preview:this.$preview.html(),hiddenVal:this.$hidden.val()},this.listen()}};c.prototype.listen=function(){this.$input.on("change.bs.fileinput",a.proxy(this.change,this)),a(this.$input[0].form).on("reset.bs.fileinput",a.proxy(this.reset,this)),this.$element.find('[data-trigger="fileinput"]').on("click.bs.fileinput",a.proxy(this.trigger,this)),this.$element.find('[data-dismiss="fileinput"]').on("click.bs.fileinput",a.proxy(this.clear,this))},c.prototype.change=function(b){var c=void 0===b.target.files?b.target&&b.target.value?[{name:b.target.value.replace(/^.+\\/,"")}]:[]:b.target.files;if(b.stopPropagation(),0===c.length)return void this.clear();this.$hidden.val(""),this.$hidden.attr("name",""),this.$input.attr("name",this.name);var d=c[0];if(this.$preview.length>0&&("undefined"!=typeof d.type?d.type.match(/^image\/(gif|png|jpeg)$/):d.name.match(/\.(gif|png|jpe?g)$/i))&&"undefined"!=typeof FileReader){var e=new FileReader,f=this.$preview,g=this.$element;e.onload=function(b){var e=a("<img>");e[0].src=b.target.result,c[0].result=b.target.result,g.find(".fileinput-filename").text(d.name),"none"!=f.css("max-height")&&e.css("max-height",parseInt(f.css("max-height"),10)-parseInt(f.css("padding-top"),10)-parseInt(f.css("padding-bottom"),10)-parseInt(f.css("border-top"),10)-parseInt(f.css("border-bottom"),10)),f.html(e),g.addClass("fileinput-exists").removeClass("fileinput-new"),g.trigger("change.bs.fileinput",c)},e.readAsDataURL(d)}else this.$element.find(".fileinput-filename").text(d.name),this.$preview.text(d.name),this.$element.addClass("fileinput-exists").removeClass("fileinput-new"),this.$element.trigger("change.bs.fileinput")},c.prototype.clear=function(a){if(a&&a.preventDefault(),this.$hidden.val(""),this.$hidden.attr("name",this.name),this.$input.attr("name",""),b){var c=this.$input.clone(!0);this.$input.after(c),this.$input.remove(),this.$input=c}else this.$input.val("");this.$preview.html(""),this.$element.find(".fileinput-filename").text(""),this.$element.addClass("fileinput-new").removeClass("fileinput-exists"),void 0!==a&&(this.$input.trigger("change"),this.$element.trigger("clear.bs.fileinput"))},c.prototype.reset=function(){this.clear(),this.$hidden.val(this.original.hiddenVal),this.$preview.html(this.original.preview),this.$element.find(".fileinput-filename").text(""),this.original.exists?this.$element.addClass("fileinput-exists").removeClass("fileinput-new"):this.$element.addClass("fileinput-new").removeClass("fileinput-exists"),this.$element.trigger("reset.bs.fileinput")},c.prototype.trigger=function(a){this.$input.trigger("click"),a.preventDefault()};var d=a.fn.fileinput;a.fn.fileinput=function(b){return this.each(function(){var d=a(this),e=d.data("fileinput");e||d.data("fileinput",e=new c(this,b)),"string"==typeof b&&e[b]()})},a.fn.fileinput.Constructor=c,a.fn.fileinput.noConflict=function(){return a.fn.fileinput=d,this},a(document).on("click.fileinput.data-api",'[data-provides="fileinput"]',function(b){var c=a(this);if(!c.data("fileinput")){c.fileinput(c.data());var d=a(b.target).closest('[data-dismiss="fileinput"],[data-trigger="fileinput"]');d.length>0&&(b.preventDefault(),d.trigger("click.bs.fileinput"))}})}(window.jQuery); \ No newline at end of file diff --git a/assets/js/plugins/jeditable/jquery.jeditable.js b/assets/js/plugins/jeditable/jquery.jeditable.js deleted file mode 100644 index d46aa6d6..00000000 --- a/assets/js/plugins/jeditable/jquery.jeditable.js +++ /dev/null @@ -1,543 +0,0 @@ -/* - * Jeditable - jQuery in place edit plugin - * - * Copyright (c) 2006-2009 Mika Tuupola, Dylan Verheul - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/mit-license.php - * - * Project home: - * http://www.appelsiini.net/projects/jeditable - * - * Based on editable by Dylan Verheul <dylan_at_dyve.net>: - * http://www.dyve.net/jquery/?editable - * - */ - -/** - * Version 1.7.1 - * - * ** means there is basic unit tests for this parameter. - * - * @name Jeditable - * @type jQuery - * @param String target (POST) URL or function to send edited content to ** - * @param Hash options additional options - * @param String options[method] method to use to send edited content (POST or PUT) ** - * @param Function options[callback] Function to run after submitting edited content ** - * @param String options[name] POST parameter name of edited content - * @param String options[id] POST parameter name of edited div id - * @param Hash options[submitdata] Extra parameters to send when submitting edited content. - * @param String options[type] text, textarea or select (or any 3rd party input type) ** - * @param Integer options[rows] number of rows if using textarea ** - * @param Integer options[cols] number of columns if using textarea ** - * @param Mixed options[height] 'auto', 'none' or height in pixels ** - * @param Mixed options[width] 'auto', 'none' or width in pixels ** - * @param String options[loadurl] URL to fetch input content before editing ** - * @param String options[loadtype] Request type for load url. Should be GET or POST. - * @param String options[loadtext] Text to display while loading external content. - * @param Mixed options[loaddata] Extra parameters to pass when fetching content before editing. - * @param Mixed options[data] Or content given as paramameter. String or function.** - * @param String options[indicator] indicator html to show when saving - * @param String options[tooltip] optional tooltip text via title attribute ** - * @param String options[event] jQuery event such as 'click' of 'dblclick' ** - * @param String options[submit] submit button value, empty means no button ** - * @param String options[cancel] cancel button value, empty means no button ** - * @param String options[cssclass] CSS class to apply to input form. 'inherit' to copy from parent. ** - * @param String options[style] Style to apply to input form 'inherit' to copy from parent. ** - * @param String options[select] true or false, when true text is highlighted ?? - * @param String options[placeholder] Placeholder text or html to insert when element is empty. ** - * @param String options[onblur] 'cancel', 'submit', 'ignore' or function ?? - * - * @param Function options[onsubmit] function(settings, original) { ... } called before submit - * @param Function options[onreset] function(settings, original) { ... } called before reset - * @param Function options[onerror] function(settings, original, xhr) { ... } called on error - * - * @param Hash options[ajaxoptions] jQuery Ajax options. See docs.jquery.com. - * - */ - -(function($) { - - $.fn.editable = function(target, options) { - - if ('disable' == target) { - $(this).data('disabled.editable', true); - return; - } - if ('enable' == target) { - $(this).data('disabled.editable', false); - return; - } - if ('destroy' == target) { - $(this) - .unbind($(this).data('event.editable')) - .removeData('disabled.editable') - .removeData('event.editable'); - return; - } - - var settings = $.extend({}, $.fn.editable.defaults, {target:target}, options); - - /* setup some functions */ - var plugin = $.editable.types[settings.type].plugin || function() { }; - var submit = $.editable.types[settings.type].submit || function() { }; - var buttons = $.editable.types[settings.type].buttons - || $.editable.types['defaults'].buttons; - var content = $.editable.types[settings.type].content - || $.editable.types['defaults'].content; - var element = $.editable.types[settings.type].element - || $.editable.types['defaults'].element; - var reset = $.editable.types[settings.type].reset - || $.editable.types['defaults'].reset; - var callback = settings.callback || function() { }; - var onedit = settings.onedit || function() { }; - var onsubmit = settings.onsubmit || function() { }; - var onreset = settings.onreset || function() { }; - var onerror = settings.onerror || reset; - - /* show tooltip */ - if (settings.tooltip) { - $(this).attr('title', settings.tooltip); - } - - settings.autowidth = 'auto' == settings.width; - settings.autoheight = 'auto' == settings.height; - - return this.each(function() { - - /* save this to self because this changes when scope changes */ - var self = this; - - /* inlined block elements lose their width and height after first edit */ - /* save them for later use as workaround */ - var savedwidth = $(self).width(); - var savedheight = $(self).height(); - - /* save so it can be later used by $.editable('destroy') */ - $(this).data('event.editable', settings.event); - - /* if element is empty add something clickable (if requested) */ - if (!$.trim($(this).html())) { - $(this).html(settings.placeholder); - } - - $(this).bind(settings.event, function(e) { - - /* abort if disabled for this element */ - if (true === $(this).data('disabled.editable')) { - return; - } - - /* prevent throwing an exeption if edit field is clicked again */ - if (self.editing) { - return; - } - - /* abort if onedit hook returns false */ - if (false === onedit.apply(this, [settings, self])) { - return; - } - - /* prevent default action and bubbling */ - e.preventDefault(); - e.stopPropagation(); - - /* remove tooltip */ - if (settings.tooltip) { - $(self).removeAttr('title'); - } - - /* figure out how wide and tall we are, saved width and height */ - /* are workaround for http://dev.jquery.com/ticket/2190 */ - if (0 == $(self).width()) { - //$(self).css('visibility', 'hidden'); - settings.width = savedwidth; - settings.height = savedheight; - } else { - if (settings.width != 'none') { - settings.width = - settings.autowidth ? $(self).width() : settings.width; - } - if (settings.height != 'none') { - settings.height = - settings.autoheight ? $(self).height() : settings.height; - } - } - //$(this).css('visibility', ''); - - /* remove placeholder text, replace is here because of IE */ - if ($(this).html().toLowerCase().replace(/(;|")/g, '') == - settings.placeholder.toLowerCase().replace(/(;|")/g, '')) { - $(this).html(''); - } - - self.editing = true; - self.revert = $(self).html(); - $(self).html(''); - - /* create the form object */ - var form = $('<form />'); - - /* apply css or style or both */ - if (settings.cssclass) { - if ('inherit' == settings.cssclass) { - form.attr('class', $(self).attr('class')); - } else { - form.attr('class', settings.cssclass); - } - } - - if (settings.style) { - if ('inherit' == settings.style) { - form.attr('style', $(self).attr('style')); - /* IE needs the second line or display wont be inherited */ - form.css('display', $(self).css('display')); - } else { - form.attr('style', settings.style); - } - } - - /* add main input element to form and store it in input */ - var input = element.apply(form, [settings, self]); - - /* set input content via POST, GET, given data or existing value */ - var input_content; - - if (settings.loadurl) { - var t = setTimeout(function() { - input.disabled = true; - content.apply(form, [settings.loadtext, settings, self]); - }, 100); - - var loaddata = {}; - loaddata[settings.id] = self.id; - if ($.isFunction(settings.loaddata)) { - $.extend(loaddata, settings.loaddata.apply(self, [self.revert, settings])); - } else { - $.extend(loaddata, settings.loaddata); - } - $.ajax({ - type : settings.loadtype, - url : settings.loadurl, - data : loaddata, - async : false, - success: function(result) { - window.clearTimeout(t); - input_content = result; - input.disabled = false; - } - }); - } else if (settings.data) { - input_content = settings.data; - if ($.isFunction(settings.data)) { - input_content = settings.data.apply(self, [self.revert, settings]); - } - } else { - input_content = self.revert; - } - content.apply(form, [input_content, settings, self]); - - input.attr('name', settings.name); - - /* add buttons to the form */ - buttons.apply(form, [settings, self]); - - /* add created form to self */ - $(self).append(form); - - /* attach 3rd party plugin if requested */ - plugin.apply(form, [settings, self]); - - /* focus to first visible form element */ - $(':input:visible:enabled:first', form).focus(); - - /* highlight input contents when requested */ - if (settings.select) { - input.select(); - } - - /* discard changes if pressing esc */ - input.keydown(function(e) { - if (e.keyCode == 27) { - e.preventDefault(); - //self.reset(); - reset.apply(form, [settings, self]); - } - }); - - /* discard, submit or nothing with changes when clicking outside */ - /* do nothing is usable when navigating with tab */ - var t; - if ('cancel' == settings.onblur) { - input.blur(function(e) { - /* prevent canceling if submit was clicked */ - t = setTimeout(function() { - reset.apply(form, [settings, self]); - }, 500); - }); - } else if ('submit' == settings.onblur) { - input.blur(function(e) { - /* prevent double submit if submit was clicked */ - t = setTimeout(function() { - form.submit(); - }, 200); - }); - } else if ($.isFunction(settings.onblur)) { - input.blur(function(e) { - settings.onblur.apply(self, [input.val(), settings]); - }); - } else { - input.blur(function(e) { - /* TODO: maybe something here */ - }); - } - - form.submit(function(e) { - - if (t) { - clearTimeout(t); - } - - /* do no submit */ - e.preventDefault(); - - /* call before submit hook. */ - /* if it returns false abort submitting */ - if (false !== onsubmit.apply(form, [settings, self])) { - /* custom inputs call before submit hook. */ - /* if it returns false abort submitting */ - if (false !== submit.apply(form, [settings, self])) { - - /* check if given target is function */ - if ($.isFunction(settings.target)) { - var str = settings.target.apply(self, [input.val(), settings]); - $(self).html(str); - self.editing = false; - callback.apply(self, [self.innerHTML, settings]); - /* TODO: this is not dry */ - if (!$.trim($(self).html())) { - $(self).html(settings.placeholder); - } - } else { - /* add edited content and id of edited element to POST */ - var submitdata = {}; - submitdata[settings.name] = input.val(); - submitdata[settings.id] = self.id; - /* add extra data to be POST:ed */ - if ($.isFunction(settings.submitdata)) { - $.extend(submitdata, settings.submitdata.apply(self, [self.revert, settings])); - } else { - $.extend(submitdata, settings.submitdata); - } - - /* quick and dirty PUT support */ - if ('PUT' == settings.method) { - submitdata['_method'] = 'put'; - } - - /* show the saving indicator */ - $(self).html(settings.indicator); - - /* defaults for ajaxoptions */ - var ajaxoptions = { - type : 'POST', - data : submitdata, - dataType: 'html', - url : settings.target, - success : function(result, status) { - if (ajaxoptions.dataType == 'html') { - $(self).html(result); - } - self.editing = false; - callback.apply(self, [result, settings]); - if (!$.trim($(self).html())) { - $(self).html(settings.placeholder); - } - }, - error : function(xhr, status, error) { - onerror.apply(form, [settings, self, xhr]); - } - }; - - /* override with what is given in settings.ajaxoptions */ - $.extend(ajaxoptions, settings.ajaxoptions); - $.ajax(ajaxoptions); - - } - } - } - - /* show tooltip again */ - $(self).attr('title', settings.tooltip); - - return false; - }); - }); - - /* privileged methods */ - this.reset = function(form) { - /* prevent calling reset twice when blurring */ - if (this.editing) { - /* before reset hook, if it returns false abort reseting */ - if (false !== onreset.apply(form, [settings, self])) { - $(self).html(self.revert); - self.editing = false; - if (!$.trim($(self).html())) { - $(self).html(settings.placeholder); - } - /* show tooltip again */ - if (settings.tooltip) { - $(self).attr('title', settings.tooltip); - } - } - } - }; - }); - - }; - - - $.editable = { - types: { - defaults: { - element : function(settings, original) { - var input = $('<input type="hidden"></input>'); - $(this).append(input); - return(input); - }, - content : function(string, settings, original) { - $(':input:first', this).val(string); - }, - reset : function(settings, original) { - original.reset(this); - }, - buttons : function(settings, original) { - var form = this; - if (settings.submit) { - /* if given html string use that */ - if (settings.submit.match(/>$/)) { - var submit = $(settings.submit).click(function() { - if (submit.attr("type") != "submit") { - form.submit(); - } - }); - /* otherwise use button with given string as text */ - } else { - var submit = $('<button type="submit" />'); - submit.html(settings.submit); - } - $(this).append(submit); - } - if (settings.cancel) { - /* if given html string use that */ - if (settings.cancel.match(/>$/)) { - var cancel = $(settings.cancel); - /* otherwise use button with given string as text */ - } else { - var cancel = $('<button type="cancel" />'); - cancel.html(settings.cancel); - } - $(this).append(cancel); - - $(cancel).click(function(event) { - //original.reset(); - if ($.isFunction($.editable.types[settings.type].reset)) { - var reset = $.editable.types[settings.type].reset; - } else { - var reset = $.editable.types['defaults'].reset; - } - reset.apply(form, [settings, original]); - return false; - }); - } - } - }, - text: { - element : function(settings, original) { - var input = $('<input />'); - if (settings.width != 'none') { input.width(settings.width); } - if (settings.height != 'none') { input.height(settings.height); } - /* https://bugzilla.mozilla.org/show_bug.cgi?id=236791 */ - //input[0].setAttribute('autocomplete','off'); - input.attr('autocomplete','off'); - $(this).append(input); - return(input); - } - }, - textarea: { - element : function(settings, original) { - var textarea = $('<textarea />'); - if (settings.rows) { - textarea.attr('rows', settings.rows); - } else if (settings.height != "none") { - textarea.height(settings.height); - } - if (settings.cols) { - textarea.attr('cols', settings.cols); - } else if (settings.width != "none") { - textarea.width(settings.width); - } - $(this).append(textarea); - return(textarea); - } - }, - select: { - element : function(settings, original) { - var select = $('<select />'); - $(this).append(select); - return(select); - }, - content : function(data, settings, original) { - /* If it is string assume it is json. */ - if (String == data.constructor) { - eval ('var json = ' + data); - } else { - /* Otherwise assume it is a hash already. */ - var json = data; - } - for (var key in json) { - if (!json.hasOwnProperty(key)) { - continue; - } - if ('selected' == key) { - continue; - } - var option = $('<option />').val(key).append(json[key]); - $('select', this).append(option); - } - /* Loop option again to set selected. IE needed this... */ - $('select', this).children().each(function() { - if ($(this).val() == json['selected'] || - $(this).text() == $.trim(original.revert)) { - $(this).attr('selected', 'selected'); - } - }); - } - } - }, - - /* Add new input type */ - addInputType: function(name, input) { - $.editable.types[name] = input; - } - }; - - // publicly accessible defaults - $.fn.editable.defaults = { - name : 'value', - id : 'id', - type : 'text', - width : 'auto', - height : 'auto', - event : 'click.editable', - onblur : 'cancel', - loadtype : 'GET', - loadtext : 'Loading...', - placeholder: 'Click to edit', - loaddata : {}, - submitdata : {}, - ajaxoptions: {} - }; - -})(jQuery); \ No newline at end of file diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-ar.js b/assets/js/plugins/jqGrid/i18n/grid.locale-ar.js deleted file mode 100644 index b557e053..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-ar.js +++ /dev/null @@ -1,128 +0,0 @@ -;(function($){ -/** - * jqGrid Arabic Translation - * - * http://trirand.com/blog/ - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "تسجيل {0} - {1} على {2}", - emptyrecords: "لا يوجد تسجيل", - loadtext: "تحميل...", - pgtext : "صفحة {0} على {1}" - }, - search : { - caption: "بحث...", - Find: "بحث", - Reset: "إلغاء", - odata: [{ oper:'eq', text:"يساوي"},{ oper:'ne', text:"يختلف"},{ oper:'lt', text:"أقل"},{ oper:'le', text:"أقل أو يساوي"},{ oper:'gt', text:"أكبر"},{ oper:'ge', text:"أكبر أو يساوي"},{ oper:'bw', text:"يبدأ بـ"},{ oper:'bn', text:"لا يبدأ بـ"},{ oper:'in', text:"est dans"},{ oper:'ni', text:"n'est pas dans"},{ oper:'ew', text:"ينته بـ"},{ oper:'en', text:"لا ينته بـ"},{ oper:'cn', text:"يحتوي"},{ oper:'nc', text:"لا يحتوي"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}], - groupOps: [ { op: "مع", text: "الكل" }, { op: "أو", text: "لا أحد" }], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" -}, - edit : { - addCaption: "اضافة", - editCaption: "تحديث", - bSubmit: "تثبيث", - bCancel: "إلغاء", - bClose: "غلق", - saveData: "تغيرت المعطيات هل تريد التسجيل ?", - bYes: "نعم", - bNo: "لا", - bExit: "إلغاء", - msg: { - required: "خانة إجبارية", - number: "سجل رقم صحيح", - minValue: "يجب أن تكون القيمة أكبر أو تساوي 0", - maxValue: "يجب أن تكون القيمة أقل أو تساوي 0", - email: "بريد غير صحيح", - integer: "سجل عدد طبييعي صحيح", - url: "ليس عنوانا صحيحا. البداية الصحيحة ('http://' أو 'https://')", - nodefined : " ليس محدد!", - novalue : " قيمة الرجوع مطلوبة!", - customarray : "يجب على الدالة الشخصية أن تنتج جدولا", - customfcheck : "الدالة الشخصية مطلوبة في حالة التحقق الشخصي" - } - }, - view : { - caption: "رأيت التسجيلات", - bClose: "غلق" - }, - del : { - caption: "حذف", - msg: "حذف التسجيلات المختارة ?", - bSubmit: "حذف", - bCancel: "إلغاء" - }, - nav : { - edittext: " ", - edittitle: "تغيير التسجيل المختار", - addtext:" ", - addtitle: "إضافة تسجيل", - deltext: " ", - deltitle: "حذف التسجيل المختار", - searchtext: " ", - searchtitle: "بحث عن تسجيل", - refreshtext: "", - refreshtitle: "تحديث الجدول", - alertcap: "تحذير", - alerttext: "يرجى إختيار السطر", - viewtext: "", - viewtitle: "إظهار السطر المختار" - }, - col : { - caption: "إظهار/إخفاء الأعمدة", - bSubmit: "تثبيث", - bCancel: "إلغاء" - }, - errors : { - errcap : "خطأ", - nourl : "لا يوجد عنوان محدد", - norecords: "لا يوجد تسجيل للمعالجة", - model : "عدد العناوين (colNames) <> عدد التسجيلات (colModel)!" - }, - formatter : { - integer : {thousandsSeparator: " ", defaultValue: '0'}, - number : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0,00'}, - currency : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0,00'}, - date : { - dayNames: [ - "الأحد", "الإثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت", - "الأحد", "الإثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت" - ], - monthNames: [ - "جانفي", "فيفري", "مارس", "أفريل", "ماي", "جوان", "جويلية", "أوت", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر", - "جانفي", "فيفري", "مارس", "أفريل", "ماي", "جوان", "جويلية", "أوت", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر" - ], - AmPm : ["صباحا","مساءا","صباحا","مساءا"], - S: function (j) {return j == 1 ? 'er' : 'e';}, - srcformat: 'Y-m-d', - newformat: 'd/m/Y', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - ISO8601Long:"Y-m-d H:i:s", - ISO8601Short:"Y-m-d", - ShortDate: "n/j/Y", - LongDate: "l, F d, Y", - FullDateTime: "l, F d, Y g:i:s A", - MonthDay: "F d", - ShortTime: "g:i A", - LongTime: "g:i:s A", - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - YearMonth: "F, Y" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-bg.js b/assets/js/plugins/jqGrid/i18n/grid.locale-bg.js deleted file mode 100644 index 9c9d2539..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-bg.js +++ /dev/null @@ -1,134 +0,0 @@ -;(function($){ -/** - * jqGrid Bulgarian Translation - * Tony Tomov tony@trirand.com - * http://trirand.com/blog/ - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "{0} - {1} от {2}", - emptyrecords: "Няма запис(и)", - loadtext: "Зареждам...", - pgtext : "Стр. {0} от {1}" - }, - search : { - caption: "Търсене...", - Find: "Намери", - Reset: "Изчисти", - odata: [{ oper:'eq', text:"равно"},{ oper:'ne', text:"различно"},{ oper:'lt', text:"по-малко"},{ oper:'le', text:"по-малко или="},{ oper:'gt', text:"по-голямо"},{ oper:'ge', text:"по-голямо или ="},{ oper:'bw', text:"започва с"},{ oper:'bn', text:"не започва с"},{ oper:'in', text:"се намира в"},{ oper:'ni', text:"не се намира в"},{ oper:'ew', text:"завършва с"},{ oper:'en', text:"не завършава с"},{ oper:'cn', text:"съдържа"},{ oper:'nc', text:"не съдържа"},{ oper:'nu', text:'е NULL'},{ oper:'nn', text:'не е NULL'}], - groupOps: [ { op: "AND", text: "&nbsp;И " }, { op: "OR", text: "ИЛИ" } ], - operandTitle : "Натисни за избор на операнд.", - resetTitle : "Изчисти стойността" - }, - edit : { - addCaption: "Нов Запис", - editCaption: "Редакция Запис", - bSubmit: "Запиши", - bCancel: "Изход", - bClose: "Затвори", - saveData: "Данните са променени! Да съхраня ли промените?", - bYes : "Да", - bNo : "Не", - bExit : "Отказ", - msg: { - required:"Полето е задължително", - number:"Въведете валидно число!", - minValue:"стойността трябва да е по-голяма или равна от", - maxValue:"стойността трябва да е по-малка или равна от", - email: "не е валиден ел. адрес", - integer: "Въведете валидно цяло число", - date: "Въведете валидна дата", - url: "e невалиден URL. Изискава се префикс('http://' или 'https://')", - nodefined : " е недефинирана!", - novalue : " изисква връщане на стойност!", - customarray : "Потреб. Функция трябва да върне масив!", - customfcheck : "Потребителска функция е задължителна при този тип елемент!" - } - }, - view : { - caption: "Преглед запис", - bClose: "Затвори" - }, - del : { - caption: "Изтриване", - msg: "Да изтрия ли избраният запис?", - bSubmit: "Изтрий", - bCancel: "Отказ" - }, - nav : { - edittext: " ", - edittitle: "Редакция избран запис", - addtext:" ", - addtitle: "Добавяне нов запис", - deltext: " ", - deltitle: "Изтриване избран запис", - searchtext: " ", - searchtitle: "Търсене запис(и)", - refreshtext: "", - refreshtitle: "Обнови таблица", - alertcap: "Предупреждение", - alerttext: "Моля, изберете запис", - viewtext: "", - viewtitle: "Преглед избран запис" - }, - col : { - caption: "Избери колони", - bSubmit: "Ок", - bCancel: "Изход" - }, - errors : { - errcap : "Грешка", - nourl : "Няма посочен url адрес", - norecords: "Няма запис за обработка", - model : "Модела не съответства на имената!" - }, - formatter : { - integer : {thousandsSeparator: " ", defaultValue: '0'}, - number : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0.00'}, - currency : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:" лв.", defaultValue: '0.00'}, - date : { - dayNames: [ - "Нед", "Пон", "Вт", "Ср", "Чет", "Пет", "Съб", - "Неделя", "Понеделник", "Вторник", "Сряда", "Четвъртък", "Петък", "Събота" - ], - monthNames: [ - "Яну", "Фев", "Мар", "Апр", "Май", "Юни", "Юли", "Авг", "Сеп", "Окт", "Нов", "Дек", - "Януари", "Февруари", "Март", "Април", "Май", "Юни", "Юли", "Август", "Септември", "Октомври", "Ноември", "Декември" - ], - AmPm : ["","","",""], - S: function (j) { - if(j==7 || j==8 || j== 27 || j== 28) { - return 'ми'; - } - return ['ви', 'ри', 'ти'][Math.min((j - 1) % 10, 2)]; - }, - srcformat: 'Y-m-d', - newformat: 'd/m/Y', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - ISO8601Long:"Y-m-d H:i:s", - ISO8601Short:"Y-m-d", - ShortDate: "n/j/Y", - LongDate: "l, F d, Y", - FullDateTime: "l, F d, Y g:i:s A", - MonthDay: "F d", - ShortTime: "g:i A", - LongTime: "g:i:s A", - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - YearMonth: "F, Y" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-bg1251.js b/assets/js/plugins/jqGrid/i18n/grid.locale-bg1251.js deleted file mode 100644 index 03c249d4..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-bg1251.js +++ /dev/null @@ -1,132 +0,0 @@ -;(function($){ -/** - * jqGrid Bulgarian Translation - * Tony Tomov tony@trirand.com - * http://trirand.com/blog/ - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "{0} - {1} �� {2}", - emptyrecords: "���� �����(�)", - loadtext: "��������...", - pgtext : "���. {0} �� {1}" - }, - search : { - caption: "�������...", - Find: "������", - Reset: "�������", - odata : [{ oper:'eq', text:'�����'}, { oper:'ne', text:'��������'}, { oper:'lt', text:'��-�����'}, { oper:'le', text:'��-����� ���='},{ oper:'gt', text:'��-������'},{ oper:'ge', text:'��-������ ��� ='}, { oper:'bw', text:'������� �'},{ oper:'bn', text:'�� ������� �'},{ oper:'in', text:'�� ������ �'},{ oper:'ni', text:'�� �� ������ �'},{ oper:'ew', text:'�������� �'},{ oper:'en', text:'�� ��������� �'},,{ oper:'cn', text:'�������'}, ,{ oper:'nc', text:'�� �������'} ], - groupOps: [ { op: "AND", text: " � " }, { op: "OR", text: "���" } ] - }, - edit : { - addCaption: "��� �����", - editCaption: "�������� �����", - bSubmit: "������", - bCancel: "�����", - bClose: "�������", - saveData: "������� �� ���������! �� ������� �� ���������?", - bYes : "��", - bNo : "��", - bExit : "�����", - msg: { - required:"������ � ������������", - number:"�������� ������� �����!", - minValue:"���������� ������ �� � ��-������ ��� ����� ��", - maxValue:"���������� ������ �� � ��-����� ��� ����� ��", - email: "�� � ������� ��. �����", - integer: "�������� ������� ���� �����", - date: "�������� ������� ����", - url: "e ��������� URL. �������� �� �������('http://' ��� 'https://')", - nodefined : " � ������������!", - novalue : " ������� ������� �� ��������!", - customarray : "������. ������� ������ �� ����� �����!", - customfcheck : "������������� ������� � ������������ ��� ���� ��� �������!" - } - }, - view : { - caption: "������� �����", - bClose: "�������" - }, - del : { - caption: "���������", - msg: "�� ������ �� ��������� �����?", - bSubmit: "������", - bCancel: "�����" - }, - nav : { - edittext: " ", - edittitle: "�������� ������ �����", - addtext:" ", - addtitle: "�������� ��� �����", - deltext: " ", - deltitle: "��������� ������ �����", - searchtext: " ", - searchtitle: "������� �����(�)", - refreshtext: "", - refreshtitle: "������ �������", - alertcap: "��������������", - alerttext: "����, �������� �����", - viewtext: "", - viewtitle: "������� ������ �����" - }, - col : { - caption: "����� ������", - bSubmit: "��", - bCancel: "�����" - }, - errors : { - errcap : "������", - nourl : "���� ������� url �����", - norecords: "���� ����� �� ���������", - model : "������ �� ����������� �� �������!" - }, - formatter : { - integer : {thousandsSeparator: " ", defaultValue: '0'}, - number : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0.00'}, - currency : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:" ��.", defaultValue: '0.00'}, - date : { - dayNames: [ - "���", "���", "��", "��", "���", "���", "���", - "������", "����������", "�������", "�����", "���������", "�����", "������" - ], - monthNames: [ - "���", "���", "���", "���", "���", "���", "���", "���", "���", "���", "���", "���", - "������", "��������", "����", "�����", "���", "���", "���", "������", "���������", "��������", "�������", "��������" - ], - AmPm : ["","","",""], - S: function (j) { - if(j==7 || j==8 || j== 27 || j== 28) { - return '��'; - } - return ['��', '��', '��'][Math.min((j - 1) % 10, 2)]; - }, - srcformat: 'Y-m-d', - newformat: 'd/m/Y', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - ISO8601Long:"Y-m-d H:i:s", - ISO8601Short:"Y-m-d", - ShortDate: "n/j/Y", - LongDate: "l, F d, Y", - FullDateTime: "l, F d, Y g:i:s A", - MonthDay: "F d", - ShortTime: "g:i A", - LongTime: "g:i:s A", - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - YearMonth: "F, Y" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-cat.js b/assets/js/plugins/jqGrid/i18n/grid.locale-cat.js deleted file mode 100644 index e3a8dd49..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-cat.js +++ /dev/null @@ -1,130 +0,0 @@ -;(function($){ -/** - * jqGrid Catalan Translation - * Traducció jqGrid en Catatà per Faserline, S.L. - * http://www.faserline.com - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "Mostrant {0} - {1} de {2}", - emptyrecords: "Sense registres que mostrar", - loadtext: "Carregant...", - pgtext : "Pàgina {0} de {1}" - }, - search : { - caption: "Cerca...", - Find: "Cercar", - Reset: "Buidar", - odata: [{ oper:'eq', text:"equal"},{ oper:'ne', text:"not equal"},{ oper:'lt', text:"less"},{ oper:'le', text:"less or equal"},{ oper:'gt', text:"greater"},{ oper:'ge', text:"greater or equal"},{ oper:'bw', text:"begins with"},{ oper:'bn', text:"does not begin with"},{ oper:'in', text:"is in"},{ oper:'ni', text:"is not in"},{ oper:'ew', text:"ends with"},{ oper:'en', text:"does not end with"},{ oper:'cn', text:"contains"},{ oper:'nc', text:"does not contain"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}], - groupOps: [ { op: "AND", text: "tot" }, { op: "OR", text: "qualsevol" } ], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit : { - addCaption: "Afegir registre", - editCaption: "Modificar registre", - bSubmit: "Guardar", - bCancel: "Cancelar", - bClose: "Tancar", - saveData: "Les dades han canviat. Guardar canvis?", - bYes : "Yes", - bNo : "No", - bExit : "Cancel", - msg: { - required:"Camp obligatori", - number:"Introdueixi un nombre", - minValue:"El valor ha de ser major o igual que ", - maxValue:"El valor ha de ser menor o igual a ", - email: "no és una direcció de correu vàlida", - integer: "Introdueixi un valor enter", - date: "Introdueixi una data correcta ", - url: "no és una URL vàlida. Prefix requerit ('http://' or 'https://')", - nodefined : " is not defined!", - novalue : " return value is required!", - customarray : "Custom function should return array!", - customfcheck : "Custom function should be present in case of custom checking!" - } - }, - view : { - caption: "Veure registre", - bClose: "Tancar" - }, - del : { - caption: "Eliminar", - msg: "¿Desitja eliminar els registres seleccionats?", - bSubmit: "Eliminar", - bCancel: "Cancelar" - }, - nav : { - edittext: " ", - edittitle: "Modificar fila seleccionada", - addtext:" ", - addtitle: "Agregar nova fila", - deltext: " ", - deltitle: "Eliminar fila seleccionada", - searchtext: " ", - searchtitle: "Cercar informació", - refreshtext: "", - refreshtitle: "Refrescar taula", - alertcap: "Avís", - alerttext: "Seleccioni una fila", - viewtext: " ", - viewtitle: "Veure fila seleccionada" - }, -// setcolumns module - col : { - caption: "Mostrar/ocultar columnes", - bSubmit: "Enviar", - bCancel: "Cancelar" - }, - errors : { - errcap : "Error", - nourl : "No s'ha especificat una URL", - norecords: "No hi ha dades per processar", - model : "Les columnes de noms són diferents de les columnes del model" - }, - formatter : { - integer : {thousandsSeparator: ".", defaultValue: '0'}, - number : {decimalSeparator:",", thousandsSeparator: ".", decimalPlaces: 2, defaultValue: '0,00'}, - currency : {decimalSeparator:",", thousandsSeparator: ".", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0,00'}, - date : { - dayNames: [ - "Dg", "Dl", "Dt", "Dc", "Dj", "Dv", "Ds", - "Diumenge", "Dilluns", "Dimarts", "Dimecres", "Dijous", "Divendres", "Dissabte" - ], - monthNames: [ - "Gen", "Febr", "Març", "Abr", "Maig", "Juny", "Jul", "Ag", "Set", "Oct", "Nov", "Des", - "Gener", "Febrer", "Març", "Abril", "Maig", "Juny", "Juliol", "Agost", "Setembre", "Octubre", "Novembre", "Desembre" - ], - AmPm : ["am","pm","AM","PM"], - S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'}, - srcformat: 'Y-m-d', - newformat: 'd-m-Y', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - ISO8601Long:"Y-m-d H:i:s", - ISO8601Short:"Y-m-d", - ShortDate: "n/j/Y", - LongDate: "l, F d, Y", - FullDateTime: "l, F d, Y g:i:s A", - MonthDay: "F d", - ShortTime: "g:i A", - LongTime: "g:i:s A", - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - YearMonth: "F, Y" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: 'show', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-cn.js b/assets/js/plugins/jqGrid/i18n/grid.locale-cn.js deleted file mode 100644 index e369c18e..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-cn.js +++ /dev/null @@ -1,169 +0,0 @@ -;(function($){ -/** - * jqGrid Chinese Translation - * 咖啡兔 yanhonglei@gmail.com - * http://www.kafeitu.me - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "{0} - {1}\u3000共 {2} 条", // 共字前是全角空格 - emptyrecords: "无数据显示", - loadtext: "读取中...", - pgtext : " {0} 共 {1} 页" - }, - search : { - caption: "搜索...", - Find: "查找", - Reset: "重置", - odata: [{ oper:'eq', text:'等于\u3000\u3000'},{ oper:'ne', text:'不等\u3000\u3000'},{ oper:'lt', text:'小于\u3000\u3000'},{ oper:'le', text:'小于等于'},{ oper:'gt', text:'大于\u3000\u3000'},{ oper:'ge', text:'大于等于'},{ oper:'bw', text:'开始于'},{ oper:'bn', text:'不开始于'},{ oper:'in', text:'属于\u3000\u3000'},{ oper:'ni', text:'不属于'},{ oper:'ew', text:'结束于'},{ oper:'en', text:'不结束于'},{ oper:'cn', text:'包含\u3000\u3000'},{ oper:'nc', text:'不包含'},{ oper:'nu', text:'不存在'},{ oper:'nn', text:'存在'}], - groupOps: [ { op: "AND", text: "所有" }, { op: "OR", text: "任一" } ], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit : { - addCaption: "添加记录", - editCaption: "编辑记录", - bSubmit: "提交", - bCancel: "取消", - bClose: "关闭", - saveData: "数据已改变,是否保存?", - bYes : "是", - bNo : "否", - bExit : "取消", - msg: { - required:"此字段必需", - number:"请输入有效数字", - minValue:"输值必须大于等于 ", - maxValue:"输值必须小于等于 ", - email: "这不是有效的e-mail地址", - integer: "请输入有效整数", - date: "请输入有效时间", - url: "无效网址。前缀必须为 ('http://' 或 'https://')", - nodefined : " 未定义!", - novalue : " 需要返回值!", - customarray : "自定义函数需要返回数组!", - customfcheck : "必须有自定义函数!" - } - }, - view : { - caption: "查看记录", - bClose: "关闭" - }, - del : { - caption: "删除", - msg: "删除所选记录?", - bSubmit: "删除", - bCancel: "取消" - }, - nav : { - edittext: "", - edittitle: "编辑所选记录", - addtext:"", - addtitle: "添加新记录", - deltext: "", - deltitle: "删除所选记录", - searchtext: "", - searchtitle: "查找", - refreshtext: "", - refreshtitle: "刷新表格", - alertcap: "注意", - alerttext: "请选择记录", - viewtext: "", - viewtitle: "查看所选记录" - }, - col : { - caption: "选择列", - bSubmit: "确定", - bCancel: "取消" - }, - errors : { - errcap : "错误", - nourl : "没有设置url", - norecords: "没有要处理的记录", - model : "colNames 和 colModel 长度不等!" - }, - formatter : { - integer : {thousandsSeparator: ",", defaultValue: '0'}, - number : {decimalSeparator:".", thousandsSeparator: ",", decimalPlaces: 2, defaultValue: '0.00'}, - currency : {decimalSeparator:".", thousandsSeparator: ",", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0.00'}, - date : { - dayNames: [ - "日", "一", "二", "三", "四", "五", "六", - "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", - ], - monthNames: [ - "一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二", - "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月" - ], - AmPm : ["am","pm","上午","下午"], - S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th';}, - srcformat: 'Y-m-d', - newformat: 'Y-m-d', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - // see http://php.net/manual/en/function.date.php for PHP format used in jqGrid - // and see http://docs.jquery.com/UI/Datepicker/formatDate - // and https://github.com/jquery/globalize#dates for alternative formats used frequently - // one can find on https://github.com/jquery/globalize/tree/master/lib/cultures many - // information about date, time, numbers and currency formats used in different countries - // one should just convert the information in PHP format - ISO8601Long:"Y-m-d H:i:s", - ISO8601Short:"Y-m-d", - // short date: - // n - Numeric representation of a month, without leading zeros - // j - Day of the month without leading zeros - // Y - A full numeric representation of a year, 4 digits - // example: 3/1/2012 which means 1 March 2012 - ShortDate: "n/j/Y", // in jQuery UI Datepicker: "M/d/yyyy" - // long date: - // l - A full textual representation of the day of the week - // F - A full textual representation of a month - // d - Day of the month, 2 digits with leading zeros - // Y - A full numeric representation of a year, 4 digits - LongDate: "l, F d, Y", // in jQuery UI Datepicker: "dddd, MMMM dd, yyyy" - // long date with long time: - // l - A full textual representation of the day of the week - // F - A full textual representation of a month - // d - Day of the month, 2 digits with leading zeros - // Y - A full numeric representation of a year, 4 digits - // g - 12-hour format of an hour without leading zeros - // i - Minutes with leading zeros - // s - Seconds, with leading zeros - // A - Uppercase Ante meridiem and Post meridiem (AM or PM) - FullDateTime: "l, F d, Y g:i:s A", // in jQuery UI Datepicker: "dddd, MMMM dd, yyyy h:mm:ss tt" - // month day: - // F - A full textual representation of a month - // d - Day of the month, 2 digits with leading zeros - MonthDay: "F d", // in jQuery UI Datepicker: "MMMM dd" - // short time (without seconds) - // g - 12-hour format of an hour without leading zeros - // i - Minutes with leading zeros - // A - Uppercase Ante meridiem and Post meridiem (AM or PM) - ShortTime: "g:i A", // in jQuery UI Datepicker: "h:mm tt" - // long time (with seconds) - // g - 12-hour format of an hour without leading zeros - // i - Minutes with leading zeros - // s - Seconds, with leading zeros - // A - Uppercase Ante meridiem and Post meridiem (AM or PM) - LongTime: "g:i:s A", // in jQuery UI Datepicker: "h:mm:ss tt" - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - // month with year - // Y - A full numeric representation of a year, 4 digits - // F - A full textual representation of a month - YearMonth: "F, Y" // in jQuery UI Datepicker: "MMMM, yyyy" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-cs.js b/assets/js/plugins/jqGrid/i18n/grid.locale-cs.js deleted file mode 100644 index 5df48395..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-cs.js +++ /dev/null @@ -1,130 +0,0 @@ -;(function($){ -/** - * jqGrid Czech Translation - * Pavel Jirak pavel.jirak@jipas.cz - * doplnil Thomas Wagner xwagne01@stud.fit.vutbr.cz - * http://trirand.com/blog/ - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "Zobrazeno {0} - {1} z {2} záznamů", - emptyrecords: "Nenalezeny žádné záznamy", - loadtext: "Načítám...", - pgtext : "Strana {0} z {1}" - }, - search : { - caption: "Vyhledávám...", - Find: "Hledat", - Reset: "Reset", - odata: [{ oper:'eq', text:"rovno"},{ oper:'ne', text:"nerovno"},{ oper:'lt', text:"menší"},{ oper:'le', text:"menší nebo rovno"},{ oper:'gt', text:"větší"},{ oper:'ge', text:"větší nebo rovno"},{ oper:'bw', text:"začíná s"},{ oper:'bn', text:"nezačíná s"},{ oper:'in', text:"je v"},{ oper:'ni', text:"není v"},{ oper:'ew', text:"končí s"},{ oper:'en', text:"nekončí s"},{ oper:'cn', text:"obsahuje"},{ oper:'nc', text:"neobsahuje"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}], - groupOps: [ { op: "AND", text: "všech" }, { op: "OR", text: "některého z" } ], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit : { - addCaption: "Přidat záznam", - editCaption: "Editace záznamu", - bSubmit: "Uložit", - bCancel: "Storno", - bClose: "Zavřít", - saveData: "Data byla změněna! Uložit změny?", - bYes : "Ano", - bNo : "Ne", - bExit : "Zrušit", - msg: { - required:"Pole je vyžadováno", - number:"Prosím, vložte validní číslo", - minValue:"hodnota musí být větší než nebo rovná ", - maxValue:"hodnota musí být menší než nebo rovná ", - email: "není validní e-mail", - integer: "Prosím, vložte celé číslo", - date: "Prosím, vložte validní datum", - url: "není platnou URL. Vyžadován prefix ('http://' or 'https://')", - nodefined : " není definován!", - novalue : " je vyžadována návratová hodnota!", - customarray : "Custom function mělá vrátit pole!", - customfcheck : "Custom function by měla být přítomna v případě custom checking!" - } - }, - view : { - caption: "Zobrazit záznam", - bClose: "Zavřít" - }, - del : { - caption: "Smazat", - msg: "Smazat vybraný(é) záznam(y)?", - bSubmit: "Smazat", - bCancel: "Storno" - }, - nav : { - edittext: " ", - edittitle: "Editovat vybraný řádek", - addtext:" ", - addtitle: "Přidat nový řádek", - deltext: " ", - deltitle: "Smazat vybraný záznam ", - searchtext: " ", - searchtitle: "Najít záznamy", - refreshtext: "", - refreshtitle: "Obnovit tabulku", - alertcap: "Varování", - alerttext: "Prosím, vyberte řádek", - viewtext: "", - viewtitle: "Zobrazit vybraný řádek" - }, - col : { - caption: "Zobrazit/Skrýt sloupce", - bSubmit: "Uložit", - bCancel: "Storno" - }, - errors : { - errcap : "Chyba", - nourl : "Není nastavena url", - norecords: "Žádné záznamy ke zpracování", - model : "Délka colNames <> colModel!" - }, - formatter : { - integer : {thousandsSeparator: " ", defaultValue: '0'}, - number : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0.00'}, - currency : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0.00'}, - date : { - dayNames: [ - "Ne", "Po", "Út", "St", "Čt", "Pá", "So", - "Neděle", "Pondělí", "Úterý", "Středa", "Čtvrtek", "Pátek", "Sobota" - ], - monthNames: [ - "Led", "Úno", "Bře", "Dub", "Kvě", "Čer", "Čvc", "Srp", "Zář", "Říj", "Lis", "Pro", - "Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec" - ], - AmPm : ["do","od","DO","OD"], - S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'}, - srcformat: 'Y-m-d', - newformat: 'd/m/Y', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - ISO8601Long:"Y-m-d H:i:s", - ISO8601Short:"Y-m-d", - ShortDate: "n/j/Y", - LongDate: "l, F d, Y", - FullDateTime: "l, F d, Y g:i:s A", - MonthDay: "F d", - ShortTime: "g:i A", - LongTime: "g:i:s A", - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - YearMonth: "F, Y" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-da.js b/assets/js/plugins/jqGrid/i18n/grid.locale-da.js deleted file mode 100644 index 073a61aa..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-da.js +++ /dev/null @@ -1,130 +0,0 @@ -;(function($){ -/** - * jqGrid Danish Translation - * Aesiras A/S - * http://www.aesiras.dk - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "Vis {0} - {1} of {2}", - emptyrecords: "Ingen linjer fundet", - loadtext: "Henter...", - pgtext : "Side {0} af {1}" - }, - search : { - caption: "Søg...", - Find: "Find", - Reset: "Nulstil", - odata: [{ oper:'eq', text:"lig"},{ oper:'ne', text:"forskellige fra"},{ oper:'lt', text:"mindre"},{ oper:'le', text:"mindre eller lig"},{ oper:'gt', text:"større"},{ oper:'ge', text:"større eller lig"},{ oper:'bw', text:"begynder med"},{ oper:'bn', text:"begynder ikke med"},{ oper:'in', text:"findes i"},{ oper:'ni', text:"findes ikke i"},{ oper:'ew', text:"ender med"},{ oper:'en', text:"ender ikke med"},{ oper:'cn', text:"indeholder"},{ oper:'nc', text:"indeholder ikke"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}], - groupOps: [ { op: "AND", text: "all" }, { op: "OR", text: "any" } ], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit : { - addCaption: "Tilføj", - editCaption: "Ret", - bSubmit: "Send", - bCancel: "Annuller", - bClose: "Luk", - saveData: "Data er ændret. Gem data?", - bYes : "Ja", - bNo : "Nej", - bExit : "Fortryd", - msg: { - required:"Felt er nødvendigt", - number:"Indtast venligst et validt tal", - minValue:"værdi skal være større end eller lig med", - maxValue:"værdi skal være mindre end eller lig med", - email: "er ikke en gyldig email", - integer: "Indtast venligst et gyldigt heltal", - date: "Indtast venligst en gyldig datoværdi", - url: "er ugyldig URL. Prefix mangler ('http://' or 'https://')", - nodefined : " er ikke defineret!", - novalue : " returværdi kræves!", - customarray : "Custom function should return array!", - customfcheck : "Custom function should be present in case of custom checking!" - } - }, - view : { - caption: "Vis linje", - bClose: "Luk" - }, - del : { - caption: "Slet", - msg: "Slet valgte linje(r)?", - bSubmit: "Slet", - bCancel: "Fortryd" - }, - nav : { - edittext: " ", - edittitle: "Rediger valgte linje", - addtext:" ", - addtitle: "Tilføj ny linje", - deltext: " ", - deltitle: "Slet valgte linje", - searchtext: " ", - searchtitle: "Find linjer", - refreshtext: "", - refreshtitle: "Indlæs igen", - alertcap: "Advarsel", - alerttext: "Vælg venligst linje", - viewtext: "", - viewtitle: "Vis valgte linje" - }, - col : { - caption: "Vis/skjul kolonner", - bSubmit: "Opdatere", - bCancel: "Fortryd" - }, - errors : { - errcap : "Fejl", - nourl : "Ingen url valgt", - norecords: "Ingen linjer at behandle", - model : "colNames og colModel har ikke samme længde!" - }, - formatter : { - integer : {thousandsSeparator: " ", defaultValue: '0'}, - number : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0,00'}, - currency : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0,00'}, - date : { - dayNames: [ - "Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør", - "Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag" - ], - monthNames: [ - "Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec", - "Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December" - ], - AmPm : ["","","",""], - S: function (j) {return '.'}, - srcformat: 'Y-m-d', - newformat: 'd/m/Y', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - ISO8601Long:"Y-m-d H:i:s", - ISO8601Short:"Y-m-d", - ShortDate: "j/n/Y", - LongDate: "l d. F Y", - FullDateTime: "l d F Y G:i:s", - MonthDay: "d. F", - ShortTime: "G:i", - LongTime: "G:i:s", - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - YearMonth: "F Y" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -// DA -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-de.js b/assets/js/plugins/jqGrid/i18n/grid.locale-de.js deleted file mode 100644 index 442e37cd..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-de.js +++ /dev/null @@ -1,173 +0,0 @@ -;(function($){ -/** - * jqGrid German Translation - * Version 1.0.0 (developed for jQuery Grid 3.3.1) - * Olaf Klöppel opensource@blue-hit.de - * http://blue-hit.de/ - * - * Updated for jqGrid 3.8 - * Andreas Flack - * http://www.contentcontrol-berlin.de - * - * Updated for jQuery 4.4 - * Oleg Kiriljuk oleg.kiriljuk@ok-soft-gmbh.com - * the format corresponds now the format from - * https://github.com/jquery/globalize/blob/master/lib/cultures/globalize.culture.de.js - * - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "Zeige {0} - {1} von {2}", - emptyrecords: "Keine Datensätze vorhanden", - loadtext: "Lädt...", - pgtext : "Seite {0} von {1}" - }, - search : { - caption: "Suche...", - Find: "Suchen", - Reset: "Zurücksetzen", - odata: [{ oper:'eq', text:"gleich"},{ oper:'ne', text:"ungleich"},{ oper:'lt', text:"kleiner"},{ oper:'le', text:"kleiner gleich"},{ oper:'gt', text:"größer"},{ oper:'ge', text:"größer gleich"},{ oper:'bw', text:"beginnt mit"},{ oper:'bn', text:"beginnt nicht mit"},{ oper:'in', text:"ist in"},{ oper:'ni', text:"ist nicht in"},{ oper:'ew', text:"endet mit"},{ oper:'en', text:"endet nicht mit"},{ oper:'cn', text:"enthält"},{ oper:'nc', text:"enthält nicht"}, { oper:'nu', text:"ist Null" }, { oper:'nn', text:"ist nicht Null" }], - groupOps: [{ op: "AND", text: "alle" },{ op: "OR", text: "mindestens eine" }], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit : { - addCaption: "Datensatz hinzufügen", - editCaption: "Datensatz bearbeiten", - bSubmit: "Speichern", - bCancel: "Abbrechen", - bClose: "Schließen", - saveData: "Daten wurden geändert! Änderungen speichern?", - bYes : "ja", - bNo : "nein", - bExit : "abbrechen", - msg: { - required:"Feld ist erforderlich", - number: "Bitte geben Sie eine Zahl ein", - minValue:"Wert muss größer oder gleich sein, als ", - maxValue:"Wert muss kleiner oder gleich sein, als ", - email: "ist keine gültige E-Mail-Adresse", - integer: "Bitte geben Sie eine Ganzzahl ein", - date: "Bitte geben Sie ein gültiges Datum ein", - url: "ist keine gültige URL. Präfix muss eingegeben werden ('http://' oder 'https://')", - nodefined : " ist nicht definiert!", - novalue : " Rückgabewert ist erforderlich!", - customarray : "Benutzerdefinierte Funktion sollte ein Array zurückgeben!", - customfcheck : "Benutzerdefinierte Funktion sollte im Falle der benutzerdefinierten Überprüfung vorhanden sein!" - } - }, - view : { - caption: "Datensatz anzeigen", - bClose: "Schließen" - }, - del : { - caption: "Löschen", - msg: "Ausgewählte Datensätze löschen?", - bSubmit: "Löschen", - bCancel: "Abbrechen" - }, - nav : { - edittext: " ", - edittitle: "Ausgewählte Zeile editieren", - addtext:" ", - addtitle: "Neue Zeile einfügen", - deltext: " ", - deltitle: "Ausgewählte Zeile löschen", - searchtext: " ", - searchtitle: "Datensatz suchen", - refreshtext: "", - refreshtitle: "Tabelle neu laden", - alertcap: "Warnung", - alerttext: "Bitte Zeile auswählen", - viewtext: "", - viewtitle: "Ausgewählte Zeile anzeigen" - }, - col : { - caption: "Spalten auswählen", - bSubmit: "Speichern", - bCancel: "Abbrechen" - }, - errors : { - errcap : "Fehler", - nourl : "Keine URL angegeben", - norecords: "Keine Datensätze zu bearbeiten", - model : "colNames und colModel sind unterschiedlich lang!" - }, - formatter : { - integer : {thousandsSeparator: ".", defaultValue: '0'}, - number : {decimalSeparator:",", thousandsSeparator: ".", decimalPlaces: 2, defaultValue: '0,00'}, - currency : {decimalSeparator:",", thousandsSeparator: ".", decimalPlaces: 2, prefix: "", suffix:" €", defaultValue: '0,00'}, - date : { - dayNames: [ - "So", "Mo", "Di", "Mi", "Do", "Fr", "Sa", - "Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag" - ], - monthNames: [ - "Jan", "Feb", "Mar", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez", - "Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember" - ], - AmPm : ["","","",""], - S: function () {return '.';}, // one can also use 'er' instead of '.' but one have to use additional word like 'der' or 'den' before - srcformat: 'Y-m-d', - newformat: 'd.m.Y', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - // see http://php.net/manual/en/function.date.php for PHP format used in jqGrid - // and see http://docs.jquery.com/UI/Datepicker/formatDate - // and https://github.com/jquery/globalize#dates for alternative formats used frequently - ISO8601Long: "Y-m-d H:i:s", - ISO8601Short: "Y-m-d", - // short date: - // d - Day of the month, 2 digits with leading zeros - // m - Numeric representation of a month, with leading zeros - // Y - A full numeric representation of a year, 4 digits - ShortDate: "d.m.Y", // in jQuery UI Datepicker: "dd.MM.yyyy" - // long date: - // l - A full textual representation of the day of the week - // j - Day of the month without leading zeros - // F - A full textual representation of a month - // Y - A full numeric representation of a year, 4 digits - LongDate: "l, j. F Y", // in jQuery UI Datepicker: "dddd, d. MMMM yyyy" - // long date with long time: - // l - A full textual representation of the day of the week - // j - Day of the month without leading zeros - // F - A full textual representation of a month - // Y - A full numeric representation of a year, 4 digits - // H - 24-hour format of an hour with leading zeros - // i - Minutes with leading zeros - // s - Seconds, with leading zeros - FullDateTime: "l, j. F Y H:i:s", // in jQuery UI Datepicker: "dddd, d. MMMM yyyy HH:mm:ss" - // month day: - // d - Day of the month, 2 digits with leading zeros - // F - A full textual representation of a month - MonthDay: "d F", // in jQuery UI Datepicker: "dd MMMM" - // short time (without seconds) - // H - 24-hour format of an hour with leading zeros - // i - Minutes with leading zeros - ShortTime: "H:i", // in jQuery UI Datepicker: "HH:mm" - // long time (with seconds) - // H - 24-hour format of an hour with leading zeros - // i - Minutes with leading zeros - // s - Seconds, with leading zeros - LongTime: "H:i:s", // in jQuery UI Datepicker: "HH:mm:ss" - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - // month with year - // F - A full textual representation of a month - // Y - A full numeric representation of a year, 4 digits - YearMonth: "F Y" // in jQuery UI Datepicker: "MMMM yyyy" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-dk.js b/assets/js/plugins/jqGrid/i18n/grid.locale-dk.js deleted file mode 100644 index 05ac1392..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-dk.js +++ /dev/null @@ -1,129 +0,0 @@ -;(function($){ -/** - * jqGrid Danish Translation - * Kaare Rasmussen kjs@jasonic.dk - * http://jasonic.dk/blog - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = { - defaults : { - recordtext: "View {0} - {1} of {2}", - emptyrecords: "No records to view", - loadtext: "Loading...", - pgtext : "Page {0} of {1}" - }, - search : { - caption: "Søg...", - Find: "Find", - Reset: "Nulstil", - odata: [{ oper:'eq', text:'equal'},{ oper:'ne', text:'not equal'},{ oper:'lt', text:'less'},{ oper:'le', text:'less or equal'},{ oper:'gt', text:'greater'},{ oper:'ge', text:'greater or equal'},{ oper:'bw', text:'begins with'},{ oper:'bn', text:'does not begin with'},{ oper:'in', text:'is in'},{ oper:'ni', text:'is not in'},{ oper:'ew', text:'ends with'},{ oper:'en', text:'does not end with'},{ oper:'cn', text:'contains'},{ oper:'nc', text:'does not contain'},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}], - groupOps: [ { op: "AND", text: "all" }, { op: "OR", text: "any" } ], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit : { - addCaption: "Tilføj", - editCaption: "Ret", - bSubmit: "Send", - bCancel: "Annuller", - bClose: "Luk", - saveData: "Data has been changed! Save changes?", - bYes : "Yes", - bNo : "No", - bExit : "Cancel", - msg: { - required:"Felt er nødvendigt", - number:"Indtast venligst et validt tal", - minValue:"værdi skal være større end eller lig med", - maxValue:"værdi skal være mindre end eller lig med", - email: "er ikke en valid email", - integer: "Indtast venligst et validt heltalt", - date: "Indtast venligst en valid datoværdi", - url: "is not a valid URL. Prefix required ('http://' or 'https://')", - nodefined : " is not defined!", - novalue : " return value is required!", - customarray : "Custom function should return array!", - customfcheck : "Custom function should be present in case of custom checking!" - } - }, - view : { - caption: "View Record", - bClose: "Close" - }, - del : { - caption: "Slet", - msg: "Slet valgte række(r)?", - bSubmit: "Slet", - bCancel: "Annuller" - }, - nav : { - edittext: " ", - edittitle: "Rediger valgte række", - addtext:" ", - addtitle: "Tilføj ny række", - deltext: " ", - deltitle: "Slet valgte række", - searchtext: " ", - searchtitle: "Find poster", - refreshtext: "", - refreshtitle: "Indlæs igen", - alertcap: "Advarsel", - alerttext: "Vælg venligst række", - viewtext: "", - viewtitle: "View selected row" - }, - col : { - caption: "Vis/skjul kolonner", - bSubmit: "Send", - bCancel: "Annuller" - }, - errors : { - errcap : "Fejl", - nourl : "Ingel url valgt", - norecords: "Ingen poster at behandle", - model : "colNames og colModel har ikke samme længde!" - }, - formatter : { - integer : {thousandsSeparator: " ", defaultValue: '0'}, - number : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0,00'}, - currency : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0,00'}, - date : { - dayNames: [ - "Søn", "Man", "Tirs", "Ons", "Tors", "Fre", "Lør", - "Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag" - ], - monthNames: [ - "Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec", - "Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December" - ], - AmPm : ["","","",""], - S: function (j) {return '.'}, - srcformat: 'Y-m-d', - newformat: 'd/m/Y', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - ISO8601Long:"Y-m-d H:i:s", - ISO8601Short:"Y-m-d", - ShortDate: "j/n/Y", - LongDate: "l d. F Y", - FullDateTime: "l d F Y G:i:s", - MonthDay: "d. F", - ShortTime: "G:i", - LongTime: "G:i:s", - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - YearMonth: "F Y" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}; -// DK -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-el.js b/assets/js/plugins/jqGrid/i18n/grid.locale-el.js deleted file mode 100644 index 00baeeaf..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-el.js +++ /dev/null @@ -1,128 +0,0 @@ -;(function($){ -/** - * jqGrid Greek (el) Translation - * Alex Cicovic - * http://www.alexcicovic.com - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "View {0} - {1} of {2}", - emptyrecords: "No records to view", - loadtext: "Φόρτωση...", - pgtext : "Page {0} of {1}" - }, - search : { - caption: "Αναζήτηση...", - Find: "Εύρεση", - Reset: "Επαναφορά", - odata: [{ oper:'eq', text:'equal'},{ oper:'ne', text:'not equal'},{ oper:'lt', text:'less'},{ oper:'le', text:'less or equal'},{ oper:'gt', text:'greater'},{ oper:'ge', text:'greater or equal'},{ oper:'bw', text:'begins with'},{ oper:'bn', text:'does not begin with'},{ oper:'in', text:'is in'},{ oper:'ni', text:'is not in'},{ oper:'ew', text:'ends with'},{ oper:'en', text:'does not end with'},{ oper:'cn', text:'contains'},{ oper:'nc', text:'does not contain'},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}], - groupOps: [ { op: "AND", text: "all" }, { op: "OR", text: "any" } ], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit : { - addCaption: "Εισαγωγή Εγγραφής", - editCaption: "Επεξεργασία Εγγραφής", - bSubmit: "Καταχώρηση", - bCancel: "Άκυρο", - bClose: "Κλείσιμο", - saveData: "Data has been changed! Save changes?", - bYes : "Yes", - bNo : "No", - bExit : "Cancel", - msg: { - required:"Το πεδίο είναι απαραίτητο", - number:"Το πεδίο δέχεται μόνο αριθμούς", - minValue:"Η τιμή πρέπει να είναι μεγαλύτερη ή ίση του ", - maxValue:"Η τιμή πρέπει να είναι μικρότερη ή ίση του ", - email: "Η διεύθυνση e-mail δεν είναι έγκυρη", - integer: "Το πεδίο δέχεται μόνο ακέραιους αριθμούς", - url: "is not a valid URL. Prefix required ('http://' or 'https://')", - nodefined : " is not defined!", - novalue : " return value is required!", - customarray : "Custom function should return array!", - customfcheck : "Custom function should be present in case of custom checking!" - } - }, - view : { - caption: "View Record", - bClose: "Close" - }, - del : { - caption: "Διαγραφή", - msg: "Διαγραφή των επιλεγμένων εγγραφών;", - bSubmit: "Ναι", - bCancel: "Άκυρο" - }, - nav : { - edittext: " ", - edittitle: "Επεξεργασία επιλεγμένης εγγραφής", - addtext:" ", - addtitle: "Εισαγωγή νέας εγγραφής", - deltext: " ", - deltitle: "Διαγραφή επιλεγμένης εγγραφής", - searchtext: " ", - searchtitle: "Εύρεση Εγγραφών", - refreshtext: "", - refreshtitle: "Ανανέωση Πίνακα", - alertcap: "Προσοχή", - alerttext: "Δεν έχετε επιλέξει εγγραφή", - viewtext: "", - viewtitle: "View selected row" - }, - col : { - caption: "Εμφάνιση / Απόκρυψη Στηλών", - bSubmit: "ΟΚ", - bCancel: "Άκυρο" - }, - errors : { - errcap : "Σφάλμα", - nourl : "Δεν έχει δοθεί διεύθυνση χειρισμού για τη συγκεκριμένη ενέργεια", - norecords: "Δεν υπάρχουν εγγραφές προς επεξεργασία", - model : "Άνισος αριθμός πεδίων colNames/colModel!" - }, - formatter : { - integer : {thousandsSeparator: " ", defaultValue: '0'}, - number : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0.00'}, - currency : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0.00'}, - date : { - dayNames: [ - "Κυρ", "Δευ", "Τρι", "Τετ", "Πεμ", "Παρ", "Σαβ", - "Κυριακή", "Δευτέρα", "Τρίτη", "Τετάρτη", "Πέμπτη", "Παρασκευή", "Σάββατο" - ], - monthNames: [ - "Ιαν", "Φεβ", "Μαρ", "Απρ", "Μαι", "Ιουν", "Ιουλ", "Αυγ", "Σεπ", "Οκτ", "Νοε", "Δεκ", - "Ιανουάριος", "Φεβρουάριος", "Μάρτιος", "Απρίλιος", "Μάιος", "Ιούνιος", "Ιούλιος", "Αύγουστος", "Σεπτέμβριος", "Οκτώβριος", "Νοέμβριος", "Δεκέμβριος" - ], - AmPm : ["πμ","μμ","ΠΜ","ΜΜ"], - S: function (j) {return j == 1 || j > 1 ? ['η'][Math.min((j - 1) % 10, 3)] : ''}, - srcformat: 'Y-m-d', - newformat: 'd/m/Y', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - ISO8601Long:"Y-m-d H:i:s", - ISO8601Short:"Y-m-d", - ShortDate: "n/j/Y", - LongDate: "l, F d, Y", - FullDateTime: "l, F d, Y g:i:s A", - MonthDay: "F d", - ShortTime: "g:i A", - LongTime: "g:i:s A", - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - YearMonth: "F, Y" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-en.js b/assets/js/plugins/jqGrid/i18n/grid.locale-en.js deleted file mode 100644 index 6929885e..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-en.js +++ /dev/null @@ -1,170 +0,0 @@ -;(function($){ -/** - * jqGrid English Translation - * Tony Tomov tony@trirand.com - * http://trirand.com/blog/ - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "View {0} - {1} of {2}", - emptyrecords: "No records to view", - loadtext: "Loading...", - pgtext : "Page {0} of {1}" - }, - search : { - caption: "Search...", - Find: "Find", - Reset: "Reset", - odata: [{ oper:'eq', text:'equal'},{ oper:'ne', text:'not equal'},{ oper:'lt', text:'less'},{ oper:'le', text:'less or equal'},{ oper:'gt', text:'greater'},{ oper:'ge', text:'greater or equal'},{ oper:'bw', text:'begins with'},{ oper:'bn', text:'does not begin with'},{ oper:'in', text:'is in'},{ oper:'ni', text:'is not in'},{ oper:'ew', text:'ends with'},{ oper:'en', text:'does not end with'},{ oper:'cn', text:'contains'},{ oper:'nc', text:'does not contain'},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}], - groupOps: [{ op: "AND", text: "all" },{ op: "OR", text: "any" }], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit : { - addCaption: "Add Record", - editCaption: "Edit Record", - bSubmit: "Submit", - bCancel: "Cancel", - bClose: "Close", - saveData: "Data has been changed! Save changes?", - bYes : "Yes", - bNo : "No", - bExit : "Cancel", - msg: { - required:"Field is required", - number:"Please, enter valid number", - minValue:"value must be greater than or equal to ", - maxValue:"value must be less than or equal to", - email: "is not a valid e-mail", - integer: "Please, enter valid integer value", - date: "Please, enter valid date value", - url: "is not a valid URL. Prefix required ('http://' or 'https://')", - nodefined : " is not defined!", - novalue : " return value is required!", - customarray : "Custom function should return array!", - customfcheck : "Custom function should be present in case of custom checking!" - - } - }, - view : { - caption: "View Record", - bClose: "Close" - }, - del : { - caption: "Delete", - msg: "Delete selected record(s)?", - bSubmit: "Delete", - bCancel: "Cancel" - }, - nav : { - edittext: "", - edittitle: "Edit selected row", - addtext:"", - addtitle: "Add new row", - deltext: "", - deltitle: "Delete selected row", - searchtext: "", - searchtitle: "Find records", - refreshtext: "", - refreshtitle: "Reload Grid", - alertcap: "Warning", - alerttext: "Please, select row", - viewtext: "", - viewtitle: "View selected row" - }, - col : { - caption: "Select columns", - bSubmit: "Ok", - bCancel: "Cancel" - }, - errors : { - errcap : "Error", - nourl : "No url is set", - norecords: "No records to process", - model : "Length of colNames <> colModel!" - }, - formatter : { - integer : {thousandsSeparator: ",", defaultValue: '0'}, - number : {decimalSeparator:".", thousandsSeparator: ",", decimalPlaces: 2, defaultValue: '0.00'}, - currency : {decimalSeparator:".", thousandsSeparator: ",", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0.00'}, - date : { - dayNames: [ - "Sun", "Mon", "Tue", "Wed", "Thr", "Fri", "Sat", - "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" - ], - monthNames: [ - "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", - "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" - ], - AmPm : ["am","pm","AM","PM"], - S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th';}, - srcformat: 'Y-m-d', - newformat: 'n/j/Y', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - // see http://php.net/manual/en/function.date.php for PHP format used in jqGrid - // and see http://docs.jquery.com/UI/Datepicker/formatDate - // and https://github.com/jquery/globalize#dates for alternative formats used frequently - // one can find on https://github.com/jquery/globalize/tree/master/lib/cultures many - // information about date, time, numbers and currency formats used in different countries - // one should just convert the information in PHP format - ISO8601Long:"Y-m-d H:i:s", - ISO8601Short:"Y-m-d", - // short date: - // n - Numeric representation of a month, without leading zeros - // j - Day of the month without leading zeros - // Y - A full numeric representation of a year, 4 digits - // example: 3/1/2012 which means 1 March 2012 - ShortDate: "n/j/Y", // in jQuery UI Datepicker: "M/d/yyyy" - // long date: - // l - A full textual representation of the day of the week - // F - A full textual representation of a month - // d - Day of the month, 2 digits with leading zeros - // Y - A full numeric representation of a year, 4 digits - LongDate: "l, F d, Y", // in jQuery UI Datepicker: "dddd, MMMM dd, yyyy" - // long date with long time: - // l - A full textual representation of the day of the week - // F - A full textual representation of a month - // d - Day of the month, 2 digits with leading zeros - // Y - A full numeric representation of a year, 4 digits - // g - 12-hour format of an hour without leading zeros - // i - Minutes with leading zeros - // s - Seconds, with leading zeros - // A - Uppercase Ante meridiem and Post meridiem (AM or PM) - FullDateTime: "l, F d, Y g:i:s A", // in jQuery UI Datepicker: "dddd, MMMM dd, yyyy h:mm:ss tt" - // month day: - // F - A full textual representation of a month - // d - Day of the month, 2 digits with leading zeros - MonthDay: "F d", // in jQuery UI Datepicker: "MMMM dd" - // short time (without seconds) - // g - 12-hour format of an hour without leading zeros - // i - Minutes with leading zeros - // A - Uppercase Ante meridiem and Post meridiem (AM or PM) - ShortTime: "g:i A", // in jQuery UI Datepicker: "h:mm tt" - // long time (with seconds) - // g - 12-hour format of an hour without leading zeros - // i - Minutes with leading zeros - // s - Seconds, with leading zeros - // A - Uppercase Ante meridiem and Post meridiem (AM or PM) - LongTime: "g:i:s A", // in jQuery UI Datepicker: "h:mm:ss tt" - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - // month with year - // Y - A full numeric representation of a year, 4 digits - // F - A full textual representation of a month - YearMonth: "F, Y" // in jQuery UI Datepicker: "MMMM, yyyy" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-es.js b/assets/js/plugins/jqGrid/i18n/grid.locale-es.js deleted file mode 100644 index 96c935b4..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-es.js +++ /dev/null @@ -1,130 +0,0 @@ -;(function($){ -/** - * jqGrid Spanish Translation - * Traduccion jqGrid en Español por Yamil Bracho - * Traduccion corregida y ampliada por Faserline, S.L. - * http://www.faserline.com - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "Mostrando {0} - {1} de {2}", - emptyrecords: "Sin registros que mostrar", - loadtext: "Cargando...", - pgtext : "Página {0} de {1}" - }, - search : { - caption: "Búsqueda...", - Find: "Buscar", - Reset: "Limpiar", - odata: [{ oper:'eq', text:"igual "},{ oper:'ne', text:"no igual a"},{ oper:'lt', text:"menor que"},{ oper:'le', text:"menor o igual que"},{ oper:'gt', text:"mayor que"},{ oper:'ge', text:"mayor o igual a"},{ oper:'bw', text:"empiece por"},{ oper:'bn', text:"no empiece por"},{ oper:'in', text:"está en"},{ oper:'ni', text:"no está en"},{ oper:'ew', text:"termina por"},{ oper:'en', text:"no termina por"},{ oper:'cn', text:"contiene"},{ oper:'nc', text:"no contiene"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}], - groupOps: [ { op: "AND", text: "todo" }, { op: "OR", text: "cualquier" } ], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit : { - addCaption: "Agregar registro", - editCaption: "Modificar registro", - bSubmit: "Guardar", - bCancel: "Cancelar", - bClose: "Cerrar", - saveData: "Se han modificado los datos, ¿guardar cambios?", - bYes : "Si", - bNo : "No", - bExit : "Cancelar", - msg: { - required:"Campo obligatorio", - number:"Introduzca un número", - minValue:"El valor debe ser mayor o igual a ", - maxValue:"El valor debe ser menor o igual a ", - email: "no es una dirección de correo válida", - integer: "Introduzca un valor entero", - date: "Introduza una fecha correcta ", - url: "no es una URL válida. Prefijo requerido ('http://' or 'https://')", - nodefined : " no está definido.", - novalue : " valor de retorno es requerido.", - customarray : "La función personalizada debe devolver un array.", - customfcheck : "La función personalizada debe estar presente en el caso de validación personalizada." - } - }, - view : { - caption: "Consultar registro", - bClose: "Cerrar" - }, - del : { - caption: "Eliminar", - msg: "¿Desea eliminar los registros seleccionados?", - bSubmit: "Eliminar", - bCancel: "Cancelar" - }, - nav : { - edittext: " ", - edittitle: "Modificar fila seleccionada", - addtext:" ", - addtitle: "Agregar nueva fila", - deltext: " ", - deltitle: "Eliminar fila seleccionada", - searchtext: " ", - searchtitle: "Buscar información", - refreshtext: "", - refreshtitle: "Recargar datos", - alertcap: "Aviso", - alerttext: "Seleccione una fila", - viewtext: "", - viewtitle: "Ver fila seleccionada" - }, - col : { - caption: "Mostrar/ocultar columnas", - bSubmit: "Enviar", - bCancel: "Cancelar" - }, - errors : { - errcap : "Error", - nourl : "No se ha especificado una URL", - norecords: "No hay datos para procesar", - model : "Las columnas de nombres son diferentes de las columnas de modelo" - }, - formatter : { - integer : {thousandsSeparator: ".", defaultValue: '0'}, - number : {decimalSeparator:",", thousandsSeparator: ".", decimalPlaces: 2, defaultValue: '0,00'}, - currency : {decimalSeparator:",", thousandsSeparator: ".", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0,00'}, - date : { - dayNames: [ - "Do", "Lu", "Ma", "Mi", "Ju", "Vi", "Sa", - "Domingo", "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado" - ], - monthNames: [ - "Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic", - "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre" - ], - AmPm : ["am","pm","AM","PM"], - S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'}, - srcformat: 'Y-m-d', - newformat: 'd-m-Y', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - ISO8601Long:"Y-m-d H:i:s", - ISO8601Short:"Y-m-d", - ShortDate: "n/j/Y", - LongDate: "l, F d, Y", - FullDateTime: "l, F d, Y g:i:s A", - MonthDay: "F d", - ShortTime: "g:i A", - LongTime: "g:i:s A", - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - YearMonth: "F, Y" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-fa.js b/assets/js/plugins/jqGrid/i18n/grid.locale-fa.js deleted file mode 100644 index fe6f669b..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-fa.js +++ /dev/null @@ -1,147 +0,0 @@ -;(function ($) { -/** - * jqGrid Persian Translation - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ - $.jgrid = $.jgrid || {}; - $.extend($.jgrid,{ - defaults: { - recordtext: "نمابش {0} - {1} از {2}", - emptyrecords: "رکوردی یافت نشد", - loadtext: "بارگزاري...", - pgtext: "صفحه {0} از {1}" - }, - search: { - caption: "جستجو...", - Find: "يافته ها", - Reset: "از نو", - odata: [{ oper:'eq', text:"برابر"},{ oper:'ne', text:"نا برابر"},{ oper:'lt', text:"به"},{ oper:'le', text:"کوچکتر"},{ oper:'gt', text:"از"},{ oper:'ge', text:"بزرگتر"},{ oper:'bw', text:"شروع با"},{ oper:'bn', text:"شروع نشود با"},{ oper:'in', text:"نباشد"},{ oper:'ni', text:"عضو این نباشد"},{ oper:'ew', text:"اتمام با"},{ oper:'en', text:"تمام نشود با"},{ oper:'cn', text:"حاوی"},{ oper:'nc', text:"نباشد حاوی"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}], - groupOps: [{ - op: "AND", - text: "کل" - }, - { - op: "OR", - text: "مجموع" - }], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit: { - addCaption: "اضافه کردن رکورد", - editCaption: "ويرايش رکورد", - bSubmit: "ثبت", - bCancel: "انصراف", - bClose: "بستن", - saveData: "دیتا تعییر کرد! ذخیره شود؟", - bYes: "بله", - bNo: "خیر", - bExit: "انصراف", - msg: { - required: "فيلدها بايد ختما پر شوند", - number: "لطفا عدد وعتبر وارد کنيد", - minValue: "مقدار وارد شده بايد بزرگتر يا مساوي با", - maxValue: "مقدار وارد شده بايد کوچکتر يا مساوي", - email: "پست الکترونيک وارد شده معتبر نيست", - integer: "لطفا يک عدد صحيح وارد کنيد", - date: "لطفا يک تاريخ معتبر وارد کنيد", - url: "این آدرس صحیح نمی باشد. پیشوند نیاز است ('http://' یا 'https://')", - nodefined: " تعریف نشده!", - novalue: " مقدار برگشتی اجباری است!", - customarray: "تابع شما باید مقدار آرایه داشته باشد!", - customfcheck: "برای داشتن متد دلخواه شما باید سطون با چکینگ دلخواه داشته باشید!" - } - }, - view: { - caption: "نمایش رکورد", - bClose: "بستن" - }, - del: { - caption: "حذف", - msg: "از حذف گزينه هاي انتخاب شده مطمئن هستيد؟", - bSubmit: "حذف", - bCancel: "ابطال" - }, - nav: { - edittext: " ", - edittitle: "ويرايش رديف هاي انتخاب شده", - addtext: " ", - addtitle: "افزودن رديف جديد", - deltext: " ", - deltitle: "حذف ردبف هاي انتیاب شده", - searchtext: " ", - searchtitle: "جستجوي رديف", - refreshtext: "", - refreshtitle: "بازيابي مجدد صفحه", - alertcap: "اخطار", - alerttext: "لطفا يک رديف انتخاب کنيد", - viewtext: "", - viewtitle: "نمایش رکورد های انتخاب شده" - }, - col: { - caption: "نمايش/عدم نمايش ستون", - bSubmit: "ثبت", - bCancel: "انصراف" - }, - errors: { - errcap: "خطا", - nourl: "هيچ آدرسي تنظيم نشده است", - norecords: "هيچ رکوردي براي پردازش موجود نيست", - model: "طول نام ستون ها محالف ستون هاي مدل مي باشد!" - }, - formatter: { - integer: { - thousandsSeparator: " ", - defaultValue: "0" - }, - number: { - decimalSeparator: ".", - thousandsSeparator: " ", - decimalPlaces: 2, - defaultValue: "0.00" - }, - currency: { - decimalSeparator: ".", - thousandsSeparator: " ", - decimalPlaces: 2, - prefix: "", - suffix: "", - defaultValue: "0" - }, - date: { - dayNames: ["يک", "دو", "سه", "چهار", "پنج", "جمع", "شنب", "يکشنبه", "دوشنبه", "سه شنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه"], - monthNames: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "ژانويه", "فوريه", "مارس", "آوريل", "مه", "ژوئن", "ژوئيه", "اوت", "سپتامبر", "اکتبر", "نوامبر", "December"], - AmPm: ["ب.ظ", "ب.ظ", "ق.ظ", "ق.ظ"], - S: function (b) { - return b < 11 || b > 13 ? ["st", "nd", "rd", "th"][Math.min((b - 1) % 10, 3)] : "th" - }, - srcformat: "Y-m-d", - newformat: "d/m/Y", - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks: { - ISO8601Long: "Y-m-d H:i:s", - ISO8601Short: "Y-m-d", - ShortDate: "n/j/Y", - LongDate: "l, F d, Y", - FullDateTime: "l, F d, Y g:i:s A", - MonthDay: "F d", - ShortTime: "g:i A", - LongTime: "g:i:s A", - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - YearMonth: "F, Y" - }, - reformatAfterEdit: false - }, - baseLinkUrl: "", - showAction: "نمايش", - target: "", - checkbox: { - disabled: true - }, - idName: "id" - } - }); -})(jQuery); \ No newline at end of file diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-fi.js b/assets/js/plugins/jqGrid/i18n/grid.locale-fi.js deleted file mode 100644 index a78ed906..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-fi.js +++ /dev/null @@ -1,131 +0,0 @@ -;(function($){ -/** - * jqGrid (fi) Finnish Translation - * Jukka Inkeri awot.fi 2010-05-19 - * Alex Grönholm alex.gronholm@nextday.fi 2011-05-18 - * http://awot.fi - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults: { - recordtext: "Rivit {0} - {1} / {2}", - emptyrecords: "Ei n&auml;ytett&auml;vi&auml;", - loadtext: "Haetaan...", - pgtext: "Sivu {0} / {1}" - }, - search: { - caption: "Etsi...", - Find: "Etsi", - Reset: "Tyhjenn&auml;", - odata: [{ oper:'eq', text:"on"},{ oper:'ne', text:"ei ole"},{ oper:'lt', text:"pienempi"},{ oper:'le', text:"pienempi tai yht&auml;suuri"},{ oper:'gt', text:"suurempi"},{ oper:'ge', text:"suurempi tai yht&auml;suuri"},{ oper:'bw', text:"alkaa"},{ oper:'bn', text:"ei ala"},{ oper:'in', text:"joukossa"},{ oper:'ni', text:"ei joukossa"},{ oper:'ew', text:"loppuu"},{ oper:'en', text:"ei lopu"},{ oper:'cn', text:"sis&auml;lt&auml;&auml;"},{ oper:'nc', text:"ei sis&auml;ll&auml;"},{ oper:'nu', text:"on tyhj&auml;"},{ oper:'nn', text:"ei ole tyhj&auml;"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}], - groupOps: [ { op: "AND", text: "kaikki" }, { op: "OR", text: "mik&auml; tahansa" } ], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit: { - addCaption: "Uusi rivi", - editCaption: "Muokkaa rivi&auml;", - bSubmit: "OK", - bCancel: "Peru", - bClose: "Sulje", - saveData: "Tietoja muutettu! Tallennetaanko?", - bYes: "Kyll&auml;", - bNo: "Ei", - bExit: "Peru", - msg: { - required: "pakollinen", - number: "Anna kelvollinen nro", - minValue: "arvon oltava suurempi tai yht&auml;suuri kuin ", - maxValue: "arvon oltava pienempi tai yht&auml;suuri kuin ", - email: "ei ole kelvollinen s&auml;postiosoite", - integer: "Anna kelvollinen kokonaisluku", - date: "Anna kelvollinen pvm", - url: "Ei ole kelvollinen linkki(URL). Alku oltava ('http://' tai 'https://')", - nodefined: " ei ole m&auml;&auml;ritelty!", - novalue: " paluuarvo vaaditaan!", - customarray: "Oman funktion tulee palauttaa jono!", - customfcheck: "Oma funktio on m&auml;&auml;ritelt&auml;v&auml; r&auml;&auml;t&auml;l&ouml;ity&auml; tarkastusta varten!" - } - }, - view: { - caption: "N&auml;yt&auml; rivi", - bClose: "Sulje" - }, - del: { - caption: "Poista", - msg: "Poista valitut rivit?", - bSubmit: "Poista", - bCancel: "Peru" - }, - nav: { - edittext: "", - edittitle: "Muokkaa valittua rivi&auml;", - addtext: "", - addtitle: "Uusi rivi", - deltext: "", - deltitle: "Poista valittu rivi", - searchtext: "", - searchtitle: "Etsi tietoja", - refreshtext: "", - refreshtitle: "Lataa uudelleen", - alertcap: "Varoitus", - alerttext: "Valitse rivi", - viewtext: "", - viewtitle: "N&auml;yta valitut rivit" - }, - col: { - caption: "Valitse sarakkeet", - bSubmit: "OK", - bCancel: "Peru" - }, - errors : { - errcap: "Virhe", - nourl: "URL on asettamatta", - norecords: "Ei muokattavia tietoja", - model: "Pituus colNames <> colModel!" - }, - formatter: { - integer: {thousandsSeparator: "", defaultValue: '0'}, - number: {decimalSeparator:",", thousandsSeparator: "", decimalPlaces: 2, defaultValue: '0,00'}, - currency: {decimalSeparator:",", thousandsSeparator: "", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0,00'}, - date: { - dayNames: [ - "Su", "Ma", "Ti", "Ke", "To", "Pe", "La", - "Sunnuntai", "Maanantai", "Tiistai", "Keskiviikko", "Torstai", "Perjantai", "Lauantai" - ], - monthNames: [ - "Tam", "Hel", "Maa", "Huh", "Tou", "Kes", "Hei", "Elo", "Syy", "Lok", "Mar", "Jou", - "Tammikuu", "Helmikuu", "Maaliskuu", "Huhtikuu", "Toukokuu", "Kes&auml;kuu", "Hein&auml;kuu", "Elokuu", "Syyskuu", "Lokakuu", "Marraskuu", "Joulukuu" - ], - AmPm: ["am","pm","AM","PM"], - S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'}, - srcformat: 'Y-m-d', - newformat: 'd.m.Y', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks: { - ISO8601Long:"Y-m-d H:i:s", - ISO8601Short:"Y-m-d", - ShortDate: "d.m.Y", - LongDate: "l, F d, Y", - FullDateTime: "l, F d, Y g:i:s A", - MonthDay: "F d", - ShortTime: "g:i A", - LongTime: "g:i:s A", - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - YearMonth: "F, Y" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox: {disabled:true}, - idName: 'id' - } -}); -// FI -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-fr.js b/assets/js/plugins/jqGrid/i18n/grid.locale-fr.js deleted file mode 100644 index 7b8d9520..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-fr.js +++ /dev/null @@ -1,128 +0,0 @@ -;(function($){ -/** - * jqGrid French Translation - * Tony Tomov tony@trirand.com - * http://trirand.com/blog/ - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "Enregistrements {0} - {1} sur {2}", - emptyrecords: "Aucun enregistrement à afficher", - loadtext: "Chargement...", - pgtext : "Page {0} sur {1}" - }, - search : { - caption: "Recherche...", - Find: "Chercher", - Reset: "Réinitialiser", - odata: [{ oper:'eq', text:"égal"},{ oper:'ne', text:"différent"},{ oper:'lt', text:"inférieur"},{ oper:'le', text:"inférieur ou égal"},{ oper:'gt', text:"supérieur"},{ oper:'ge', text:"supérieur ou égal"},{ oper:'bw', text:"commence par"},{ oper:'bn', text:"ne commence pas par"},{ oper:'in', text:"est dans"},{ oper:'ni', text:"n'est pas dans"},{ oper:'ew', text:"finit par"},{ oper:'en', text:"ne finit pas par"},{ oper:'cn', text:"contient"},{ oper:'nc', text:"ne contient pas"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}], - groupOps: [ { op: "AND", text: "tous" }, { op: "OR", text: "au moins un" } ], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit : { - addCaption: "Ajouter", - editCaption: "Editer", - bSubmit: "Valider", - bCancel: "Annuler", - bClose: "Fermer", - saveData: "Les données ont changé ! Enregistrer les modifications ?", - bYes: "Oui", - bNo: "Non", - bExit: "Annuler", - msg: { - required: "Champ obligatoire", - number: "Saisissez un nombre correct", - minValue: "La valeur doit être supérieure ou égale à", - maxValue: "La valeur doit être inférieure ou égale à", - email: "n'est pas un email correct", - integer: "Saisissez un entier correct", - url: "n'est pas une adresse correcte. Préfixe requis ('http://' or 'https://')", - nodefined : " n'est pas défini!", - novalue : " la valeur de retour est requise!", - customarray : "Une fonction personnalisée devrait retourner un tableau (array)!", - customfcheck : "Une fonction personnalisée devrait être présente dans le cas d'une vérification personnalisée!" - } - }, - view : { - caption: "Voir les enregistrement", - bClose: "Fermer" - }, - del : { - caption: "Supprimer", - msg: "Supprimer les enregistrements sélectionnés ?", - bSubmit: "Supprimer", - bCancel: "Annuler" - }, - nav : { - edittext: " ", - edittitle: "Editer la ligne sélectionnée", - addtext:" ", - addtitle: "Ajouter une ligne", - deltext: " ", - deltitle: "Supprimer la ligne sélectionnée", - searchtext: " ", - searchtitle: "Chercher un enregistrement", - refreshtext: "", - refreshtitle: "Recharger le tableau", - alertcap: "Avertissement", - alerttext: "Veuillez sélectionner une ligne", - viewtext: "", - viewtitle: "Afficher la ligne sélectionnée" - }, - col : { - caption: "Afficher/Masquer les colonnes", - bSubmit: "Valider", - bCancel: "Annuler" - }, - errors : { - errcap : "Erreur", - nourl : "Aucune adresse n'est paramétrée", - norecords: "Aucun enregistrement à traiter", - model : "Nombre de titres (colNames) <> Nombre de données (colModel)!" - }, - formatter : { - integer : {thousandsSeparator: " ", defaultValue: '0'}, - number : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0,00'}, - currency : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0,00'}, - date : { - dayNames: [ - "Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam", - "Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi" - ], - monthNames: [ - "Jan", "Fév", "Mar", "Avr", "Mai", "Jui", "Jul", "Aou", "Sep", "Oct", "Nov", "Déc", - "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Décembre" - ], - AmPm : ["am","pm","AM","PM"], - S: function (j) {return j == 1 ? 'er' : 'e';}, - srcformat: 'Y-m-d', - newformat: 'd/m/Y', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - ISO8601Long:"Y-m-d H:i:s", - ISO8601Short:"Y-m-d", - ShortDate: "n/j/Y", - LongDate: "l, F d, Y", - FullDateTime: "l, F d, Y g:i:s A", - MonthDay: "F d", - ShortTime: "g:i A", - LongTime: "g:i:s A", - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - YearMonth: "F, Y" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-gl.js b/assets/js/plugins/jqGrid/i18n/grid.locale-gl.js deleted file mode 100644 index 897f6cc0..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-gl.js +++ /dev/null @@ -1,128 +0,0 @@ -;(function($){ -/** - * jqGrid Galician Translation - * Translated by Jorge Barreiro <yortx.barry@gmail.com> - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "Amosando {0} - {1} de {2}", - emptyrecords: "Sen rexistros que amosar", - loadtext: "Cargando...", - pgtext : "Páxina {0} de {1}" - }, - search : { - caption: "Búsqueda...", - Find: "Buscar", - Reset: "Limpar", - odata: [{ oper:'eq', text:"igual "},{ oper:'ne', text:"diferente a"},{ oper:'lt', text:"menor que"},{ oper:'le', text:"menor ou igual que"},{ oper:'gt', text:"maior que"},{ oper:'ge', text:"maior ou igual a"},{ oper:'bw', text:"empece por"},{ oper:'bn', text:"non empece por"},{ oper:'in', text:"está en"},{ oper:'ni', text:"non está en"},{ oper:'ew', text:"termina por"},{ oper:'en', text:"non termina por"},{ oper:'cn', text:"contén"},{ oper:'nc', text:"non contén"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}], - groupOps: [ { op: "AND", text: "todo" }, { op: "OR", text: "calquera" } ], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit : { - addCaption: "Engadir rexistro", - editCaption: "Modificar rexistro", - bSubmit: "Gardar", - bCancel: "Cancelar", - bClose: "Pechar", - saveData: "Modificáronse os datos, quere gardar os cambios?", - bYes : "Si", - bNo : "Non", - bExit : "Cancelar", - msg: { - required:"Campo obrigatorio", - number:"Introduza un número", - minValue:"O valor debe ser maior ou igual a ", - maxValue:"O valor debe ser menor ou igual a ", - email: "non é un enderezo de correo válido", - integer: "Introduza un valor enteiro", - date: "Introduza unha data correcta ", - url: "non é unha URL válida. Prefixo requerido ('http://' ou 'https://')", - nodefined : " non está definido.", - novalue : " o valor de retorno é obrigatorio.", - customarray : "A función persoalizada debe devolver un array.", - customfcheck : "A función persoalizada debe estar presente no caso de ter validación persoalizada." - } - }, - view : { - caption: "Consultar rexistro", - bClose: "Pechar" - }, - del : { - caption: "Eliminar", - msg: "Desexa eliminar os rexistros seleccionados?", - bSubmit: "Eliminar", - bCancel: "Cancelar" - }, - nav : { - edittext: " ", - edittitle: "Modificar a fila seleccionada", - addtext:" ", - addtitle: "Engadir unha nova fila", - deltext: " ", - deltitle: "Eliminar a fila seleccionada", - searchtext: " ", - searchtitle: "Buscar información", - refreshtext: "", - refreshtitle: "Recargar datos", - alertcap: "Aviso", - alerttext: "Seleccione unha fila", - viewtext: "", - viewtitle: "Ver fila seleccionada" - }, - col : { - caption: "Mostrar/ocultar columnas", - bSubmit: "Enviar", - bCancel: "Cancelar" - }, - errors : { - errcap : "Erro", - nourl : "Non especificou unha URL", - norecords: "Non hai datos para procesar", - model : "As columnas de nomes son diferentes das columnas de modelo" - }, - formatter : { - integer : {thousandsSeparator: ".", defaultValue: '0'}, - number : {decimalSeparator:",", thousandsSeparator: ".", decimalPlaces: 2, defaultValue: '0,00'}, - currency : {decimalSeparator:",", thousandsSeparator: ".", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0,00'}, - date : { - dayNames: [ - "Do", "Lu", "Ma", "Me", "Xo", "Ve", "Sa", - "Domingo", "Luns", "Martes", "Mércoles", "Xoves", "Vernes", "Sábado" - ], - monthNames: [ - "Xan", "Feb", "Mar", "Abr", "Mai", "Xuñ", "Xul", "Ago", "Set", "Out", "Nov", "Dec", - "Xaneiro", "Febreiro", "Marzo", "Abril", "Maio", "Xuño", "Xullo", "Agosto", "Setembro", "Outubro", "Novembro", "Decembro" - ], - AmPm : ["am","pm","AM","PM"], - S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'}, - srcformat: 'Y-m-d', - newformat: 'd-m-Y', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - ISO8601Long:"Y-m-d H:i:s", - ISO8601Short:"Y-m-d", - ShortDate: "n/j/Y", - LongDate: "l, F d, Y", - FullDateTime: "l, F d, Y g:i:s A", - MonthDay: "F d", - ShortTime: "g:i A", - LongTime: "g:i:s A", - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - YearMonth: "F, Y" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-he.js b/assets/js/plugins/jqGrid/i18n/grid.locale-he.js deleted file mode 100644 index faeab3bd..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-he.js +++ /dev/null @@ -1,129 +0,0 @@ -;(function($){ -/** - * jqGrid Hebrew Translation - * Shuki Shukrun shukrun.shuki@gmail.com - * http://trirand.com/blog/ - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "מציג {0} - {1} מתוך {2}", - emptyrecords: "אין רשומות להציג", - loadtext: "טוען...", - pgtext : "דף {0} מתוך {1}" - }, - search : { - caption: "מחפש...", - Find: "חפש", - Reset: "התחל", - odata: [{ oper:'eq', text:"שווה"},{ oper:'ne', text:"לא שווה"},{ oper:'lt', text:"קטן"},{ oper:'le', text:"קטן או שווה"},{ oper:'gt', text:"גדול"},{ oper:'ge', text:"גדול או שווה"},{ oper:'bw', text:"מתחיל ב"},{ oper:'bn', text:"לא מתחיל ב"},{ oper:'in', text:"נמצא ב"},{ oper:'ni', text:"לא נמצא ב"},{ oper:'ew', text:"מסתיים ב"},{ oper:'en', text:"לא מסתיים ב"},{ oper:'cn', text:"מכיל"},{ oper:'nc', text:"לא מכיל"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}], - groupOps: [ { op: "AND", text: "הכל" }, { op: "OR", text: "אחד מ" }], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit : { - addCaption: "הוסף רשומה", - editCaption: "ערוך רשומה", - bSubmit: "שלח", - bCancel: "בטל", - bClose: "סגור", - saveData: "נתונים השתנו! לשמור?", - bYes : "כן", - bNo : "לא", - bExit : "בטל", - msg: { - required:"שדה חובה", - number:"אנא, הכנס מספר תקין", - minValue:"ערך צריך להיות גדול או שווה ל ", - maxValue:"ערך צריך להיות קטן או שווה ל ", - email: "היא לא כתובת איימל תקינה", - integer: "אנא, הכנס מספר שלם", - date: "אנא, הכנס תאריך תקין", - url: "הכתובת אינה תקינה. דרושה תחילית ('http://' או 'https://')", - nodefined : " is not defined!", - novalue : " return value is required!", - customarray : "Custom function should return array!", - customfcheck : "Custom function should be present in case of custom checking!" - } - }, - view : { - caption: "הצג רשומה", - bClose: "סגור" - }, - del : { - caption: "מחק", - msg: "האם למחוק את הרשומה/ות המסומנות?", - bSubmit: "מחק", - bCancel: "בטל" - }, - nav : { - edittext: "", - edittitle: "ערוך שורה מסומנת", - addtext:"", - addtitle: "הוסף שורה חדשה", - deltext: "", - deltitle: "מחק שורה מסומנת", - searchtext: "", - searchtitle: "חפש רשומות", - refreshtext: "", - refreshtitle: "טען גריד מחדש", - alertcap: "אזהרה", - alerttext: "אנא, בחר שורה", - viewtext: "", - viewtitle: "הצג שורה מסומנת" - }, - col : { - caption: "הצג/הסתר עמודות", - bSubmit: "שלח", - bCancel: "בטל" - }, - errors : { - errcap : "שגיאה", - nourl : "לא הוגדרה כתובת url", - norecords: "אין רשומות לעבד", - model : "אורך של colNames <> colModel!" - }, - formatter : { - integer : {thousandsSeparator: " ", defaultValue: '0'}, - number : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0.00'}, - currency : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0.00'}, - date : { - dayNames: [ - "א", "ב", "ג", "ד", "ה", "ו", "ש", - "ראשון", "שני", "שלישי", "רביעי", "חמישי", "שישי", "שבת" - ], - monthNames: [ - "ינו", "פבר", "מרץ", "אפר", "מאי", "יונ", "יול", "אוג", "ספט", "אוק", "נוב", "דצמ", - "ינואר", "פברואר", "מרץ", "אפריל", "מאי", "יוני", "יולי", "אוגוסט", "ספטמבר", "אוקטובר", "נובמבר", "דצמבר" - ], - AmPm : ["לפני הצהרים","אחר הצהרים","לפני הצהרים","אחר הצהרים"], - S: function (j) {return j < 11 || j > 13 ? ['', '', '', ''][Math.min((j - 1) % 10, 3)] : ''}, - srcformat: 'Y-m-d', - newformat: 'd/m/Y', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - ISO8601Long:"Y-m-d H:i:s", - ISO8601Short:"Y-m-d", - ShortDate: "n/j/Y", - LongDate: "l, F d, Y", - FullDateTime: "l, F d, Y g:i:s A", - MonthDay: "F d", - ShortTime: "g:i A", - LongTime: "g:i:s A", - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - YearMonth: "F, Y" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-hr.js b/assets/js/plugins/jqGrid/i18n/grid.locale-hr.js deleted file mode 100644 index a827f0e8..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-hr.js +++ /dev/null @@ -1,164 +0,0 @@ -;(function($){ -/** - * jqGrid Croatian Translation - * Version 1.0.1 (developed for jQuery Grid 4.4) - * msajko@gmail.com - * - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "Pregled {0} - {1} od {2}", - emptyrecords: "Nema zapisa", - loadtext: "Učitavam...", - pgtext : "Stranica {0} od {1}" - }, - search : { - caption: "Traži...", - Find: "Pretraživanje", - Reset: "Poništi", - odata: [{ oper:'eq', text:"jednak"},{ oper:'ne', text:"nije identičan"},{ oper:'lt', text:"manje"},{ oper:'le', text:"manje ili identično"},{ oper:'gt', text:"veće"},{ oper:'ge', text:"veće ili identično"},{ oper:'bw', text:"počinje sa"},{ oper:'bn', text:"ne počinje sa "},{ oper:'in', text:"je u"},{ oper:'ni', text:"nije u"},{ oper:'ew', text:"završava sa"},{ oper:'en', text:"ne završava sa"},{ oper:'cn', text:"sadrži"},{ oper:'nc', text:"ne sadrži"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}], - groupOps: [ { op: "I", text: "sve" }, { op: "ILI", text: "bilo koji" } ], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit : { - addCaption: "Dodaj zapis", - editCaption: "Promijeni zapis", - bSubmit: "Preuzmi", - bCancel: "Odustani", - bClose: "Zatvri", - saveData: "Podaci su promijenjeni! Preuzmi promijene?", - bYes : "Da", - bNo : "Ne", - bExit : "Odustani", - msg: { - required:"Polje je obavezno", - number:"Molim, unesite ispravan broj", - minValue:"Vrijednost mora biti veća ili identična ", - maxValue:"Vrijednost mora biti manja ili identična", - email: "neispravan e-mail", - integer: "Molim, unjeti ispravan cijeli broj (integer)", - date: "Molim, unjeti ispravan datum ", - url: "neispravan URL. Prefiks je obavezan ('http://' or 'https://')", - nodefined : " nije definiran!", - novalue : " zahtjevan podatak je obavezan!", - customarray : "Opcionalna funkcija trebala bi bili polje (array)!", - customfcheck : "Custom function should be present in case of custom checking!" - - } - }, - view : { - caption: "Otvori zapis", - bClose: "Zatvori" - }, - del : { - caption: "Obriši", - msg: "Obriši označen zapis ili više njih?", - bSubmit: "Obriši", - bCancel: "Odustani" - }, - nav : { - edittext: "", - edittitle: "Promijeni obilježeni red", - addtext: "", - addtitle: "Dodaj novi red", - deltext: "", - deltitle: "Obriši obilježeni red", - searchtext: "", - searchtitle: "Potraži zapise", - refreshtext: "", - refreshtitle: "Ponovo preuzmi podatke", - alertcap: "Upozorenje", - alerttext: "Molim, odaberi red", - viewtext: "", - viewtitle: "Pregled obilježenog reda" - }, - col : { - caption: "Obilježi kolonu", - bSubmit: "Uredu", - bCancel: "Odustani" - }, - errors : { - errcap : "Greška", - nourl : "Nedostaje URL", - norecords: "Bez zapisa za obradu", - model : "colNames i colModel imaju različitu duljinu!" - }, - formatter : { - integer : {thousandsSeparator: ".", defaultValue: '0'}, - number : {decimalSeparator:",", thousandsSeparator: ".", decimalPlaces: 2, defaultValue: '0,00'}, - currency : {decimalSeparator:",", thousandsSeparator: ".", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0,00'}, - date : { - dayNames: [ - "Ned", "Pon", "Uto", "Sri", "Čet", "Pet", "Sub", - "Nedjelja", "Ponedjeljak", "Utorak", "Srijeda", "Četvrtak", "Petak", "Subota" - ], - monthNames: [ - "Sij", "Velj", "Ožu", "Tra", "Svi", "Lip", "Srp", "Kol", "Ruj", "Lis", "Stu", "Pro", - "Siječanj", "Veljača", "Ožujak", "Travanj", "Svibanj", "Lipanj", "Srpanj", "Kolovoz", "Rujan", "Listopad", "Studeni", "Prosinac" - ], - AmPm : ["am","pm","AM","PM"], - S: function (j) {return ''}, - srcformat: 'Y-m-d', - newformat: 'd.m.Y.', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - // see http://php.net/manual/en/function.date.php for PHP format used in jqGrid - // and see http://docs.jquery.com/UI/Datepicker/formatDate - // and https://github.com/jquery/globalize#dates for alternative formats used frequently - ISO8601Long: "Y-m-d H:i:s", - ISO8601Short: "Y-m-d", - // short date: - // d - Day of the month, 2 digits with leading zeros - // m - Numeric representation of a month, with leading zeros - // Y - A full numeric representation of a year, 4 digits - ShortDate: "d.m.Y.", // in jQuery UI Datepicker: "dd.mm.yy." - // long date: - // l - A full textual representation of the day of the week - // j - Day of the month without leading zeros - // F - A full textual representation of a month - // Y - A full numeric representation of a year, 4 digits - LongDate: "l, j. F Y", // in jQuery UI Datepicker: "dddd, d. MMMM yyyy" - // long date with long time: - // l - A full textual representation of the day of the week - // j - Day of the month without leading zeros - // F - A full textual representation of a month - // Y - A full numeric representation of a year, 4 digits - // H - 24-hour format of an hour with leading zeros - // i - Minutes with leading zeros - // s - Seconds, with leading zeros - FullDateTime: "l, j. F Y H:i:s", // in jQuery UI Datepicker: "dddd, d. MMMM yyyy HH:mm:ss" - // month day: - // d - Day of the month, 2 digits with leading zeros - // F - A full textual representation of a month - MonthDay: "d F", // in jQuery UI Datepicker: "dd MMMM" - // short time (without seconds) - // H - 24-hour format of an hour with leading zeros - // i - Minutes with leading zeros - ShortTime: "H:i", // in jQuery UI Datepicker: "HH:mm" - // long time (with seconds) - // H - 24-hour format of an hour with leading zeros - // i - Minutes with leading zeros - // s - Seconds, with leading zeros - LongTime: "H:i:s", // in jQuery UI Datepicker: "HH:mm:ss" - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - // month with year - // F - A full textual representation of a month - // Y - A full numeric representation of a year, 4 digits - YearMonth: "F Y" // in jQuery UI Datepicker: "MMMM yyyy" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-hr1250.js b/assets/js/plugins/jqGrid/i18n/grid.locale-hr1250.js deleted file mode 100644 index 12574863..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-hr1250.js +++ /dev/null @@ -1,164 +0,0 @@ -;(function($){ -/** - * jqGrid Croatian Translation (charset windows-1250) - * Version 1.0.1 (developed for jQuery Grid 4.4) - * msajko@gmail.com - * - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "Pregled {0} - {1} od {2}", - emptyrecords: "Nema zapisa", - loadtext: "U�itavam...", - pgtext : "Stranica {0} od {1}" - }, - search : { - caption: "Tra�i...", - Find: "Pretra�ivanje", - Reset: "Poni�ti", - odata : [{ oper:'eq', text:'jednak'}, { oper:'ne', text:'nije identi�an'}, { oper:'lt', text:'manje'}, { oper:'le', text:'manje ili identi�no'},{ oper:'gt', text:'ve�e'},{ oper:'ge', text:'ve�e ili identi�no'}, { oper:'bw', text:'po�inje sa'},{ oper:'bn', text:'ne po�inje sa '},{ oper:'in', text:'je u'},{ oper:'ni', text:'nije u'},{ oper:'ew', text:'zavr�ava sa'},{ oper:'en', text:'ne zavr�ava sa'},{ oper:'cn', text:'sadr�i'},{ oper:'nc', text:'ne sadr�i'},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}], - groupOps: [ { op: "I", text: "sve" }, { op: "ILI", text: "bilo koji" } ], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit : { - addCaption: "Dodaj zapis", - editCaption: "Promijeni zapis", - bSubmit: "Preuzmi", - bCancel: "Odustani", - bClose: "Zatvri", - saveData: "Podaci su promijenjeni! Preuzmi promijene?", - bYes : "Da", - bNo : "Ne", - bExit : "Odustani", - msg: { - required:"Polje je obavezno", - number:"Molim, unesite ispravan broj", - minValue:"Vrijednost mora biti ve�a ili identi�na ", - maxValue:"Vrijednost mora biti manja ili identi�na", - email: "neispravan e-mail", - integer: "Molim, unjeti ispravan cijeli broj (integer)", - date: "Molim, unjeti ispravan datum ", - url: "neispravan URL. Prefiks je obavezan ('http://' or 'https://')", - nodefined : " nije definiran!", - novalue : " zahtjevan podatak je obavezan!", - customarray : "Opcionalna funkcija trebala bi bili polje (array)!", - customfcheck : "Custom function should be present in case of custom checking!" - - } - }, - view : { - caption: "Otvori zapis", - bClose: "Zatvori" - }, - del : { - caption: "Obri�i", - msg: "Obri�i ozna�en zapis ili vi�e njih?", - bSubmit: "Obri�i", - bCancel: "Odustani" - }, - nav : { - edittext: "", - edittitle: "Promijeni obilje�eni red", - addtext: "", - addtitle: "Dodaj novi red", - deltext: "", - deltitle: "Obri�i obilje�eni red", - searchtext: "", - searchtitle: "Potra�i zapise", - refreshtext: "", - refreshtitle: "Ponovo preuzmi podatke", - alertcap: "Upozorenje", - alerttext: "Molim, odaberi red", - viewtext: "", - viewtitle: "Pregled obilje�enog reda" - }, - col : { - caption: "Obilje�i kolonu", - bSubmit: "Uredu", - bCancel: "Odustani" - }, - errors : { - errcap : "Gre�ka", - nourl : "Nedostaje URL", - norecords: "Bez zapisa za obradu", - model : "colNames i colModel imaju razli�itu duljinu!" - }, - formatter : { - integer : {thousandsSeparator: ".", defaultValue: '0'}, - number : {decimalSeparator:",", thousandsSeparator: ".", decimalPlaces: 2, defaultValue: '0,00'}, - currency : {decimalSeparator:",", thousandsSeparator: ".", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0,00'}, - date : { - dayNames: [ - "Ned", "Pon", "Uto", "Sri", "�et", "Pet", "Sub", - "Nedjelja", "Ponedjeljak", "Utorak", "Srijeda", "�etvrtak", "Petak", "Subota" - ], - monthNames: [ - "Sij", "Velj", "O�u", "Tra", "Svi", "Lip", "Srp", "Kol", "Ruj", "Lis", "Stu", "Pro", - "Sije�anj", "Velja�a", "O�ujak", "Travanj", "Svibanj", "Lipanj", "Srpanj", "Kolovoz", "Rujan", "Listopad", "Studeni", "Prosinac" - ], - AmPm : ["am","pm","AM","PM"], - S: function (j) {return ''}, - srcformat: 'Y-m-d', - newformat: 'd.m.Y.', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - // see http://php.net/manual/en/function.date.php for PHP format used in jqGrid - // and see http://docs.jquery.com/UI/Datepicker/formatDate - // and https://github.com/jquery/globalize#dates for alternative formats used frequently - ISO8601Long: "Y-m-d H:i:s", - ISO8601Short: "Y-m-d", - // short date: - // d - Day of the month, 2 digits with leading zeros - // m - Numeric representation of a month, with leading zeros - // Y - A full numeric representation of a year, 4 digits - ShortDate: "d.m.Y.", // in jQuery UI Datepicker: "dd.mm.yy." - // long date: - // l - A full textual representation of the day of the week - // j - Day of the month without leading zeros - // F - A full textual representation of a month - // Y - A full numeric representation of a year, 4 digits - LongDate: "l, j. F Y", // in jQuery UI Datepicker: "dddd, d. MMMM yyyy" - // long date with long time: - // l - A full textual representation of the day of the week - // j - Day of the month without leading zeros - // F - A full textual representation of a month - // Y - A full numeric representation of a year, 4 digits - // H - 24-hour format of an hour with leading zeros - // i - Minutes with leading zeros - // s - Seconds, with leading zeros - FullDateTime: "l, j. F Y H:i:s", // in jQuery UI Datepicker: "dddd, d. MMMM yyyy HH:mm:ss" - // month day: - // d - Day of the month, 2 digits with leading zeros - // F - A full textual representation of a month - MonthDay: "d F", // in jQuery UI Datepicker: "dd MMMM" - // short time (without seconds) - // H - 24-hour format of an hour with leading zeros - // i - Minutes with leading zeros - ShortTime: "H:i", // in jQuery UI Datepicker: "HH:mm" - // long time (with seconds) - // H - 24-hour format of an hour with leading zeros - // i - Minutes with leading zeros - // s - Seconds, with leading zeros - LongTime: "H:i:s", // in jQuery UI Datepicker: "HH:mm:ss" - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - // month with year - // F - A full textual representation of a month - // Y - A full numeric representation of a year, 4 digits - YearMonth: "F Y" // in jQuery UI Datepicker: "MMMM yyyy" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-hu.js b/assets/js/plugins/jqGrid/i18n/grid.locale-hu.js deleted file mode 100644 index 71478664..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-hu.js +++ /dev/null @@ -1,131 +0,0 @@ -;(function($){ -/** - * jqGrid Hungarian Translation - * Őrszigety Ádám udx6bs@freemail.hu - * http://trirand.com/blog/ - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ - -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "Oldal {0} - {1} / {2}", - emptyrecords: "Nincs találat", - loadtext: "Betöltés...", - pgtext : "Oldal {0} / {1}" - }, - search : { - caption: "Keresés...", - Find: "Keres", - Reset: "Alapértelmezett", - odata: [{ oper:'eq', text:"egyenlő"},{ oper:'ne', text:"nem egyenlő"},{ oper:'lt', text:"kevesebb"},{ oper:'le', text:"kevesebb vagy egyenlő"},{ oper:'gt', text:"nagyobb"},{ oper:'ge', text:"nagyobb vagy egyenlő"},{ oper:'bw', text:"ezzel kezdődik"},{ oper:'bn', text:"nem ezzel kezdődik"},{ oper:'in', text:"tartalmaz"},{ oper:'ni', text:"nem tartalmaz"},{ oper:'ew', text:"végződik"},{ oper:'en', text:"nem végződik"},{ oper:'cn', text:"tartalmaz"},{ oper:'nc', text:"nem tartalmaz"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}], - groupOps: [ { op: "AND", text: "all" }, { op: "OR", text: "any" } ], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit : { - addCaption: "Új tétel", - editCaption: "Tétel szerkesztése", - bSubmit: "Mentés", - bCancel: "Mégse", - bClose: "Bezárás", - saveData: "A tétel megváltozott! Tétel mentése?", - bYes : "Igen", - bNo : "Nem", - bExit : "Mégse", - msg: { - required:"Kötelező mező", - number:"Kérjük, adjon meg egy helyes számot", - minValue:"Nagyobb vagy egyenlőnek kell lenni mint ", - maxValue:"Kisebb vagy egyenlőnek kell lennie mint", - email: "hibás emailcím", - integer: "Kérjük adjon meg egy helyes egész számot", - date: "Kérjük adjon meg egy helyes dátumot", - url: "nem helyes cím. Előtag kötelező ('http://' vagy 'https://')", - nodefined : " nem definiált!", - novalue : " visszatérési érték kötelező!!", - customarray : "Custom function should return array!", - customfcheck : "Custom function should be present in case of custom checking!" - - } - }, - view : { - caption: "Tétel megtekintése", - bClose: "Bezárás" - }, - del : { - caption: "Törlés", - msg: "Kiválaztott tétel(ek) törlése?", - bSubmit: "Törlés", - bCancel: "Mégse" - }, - nav : { - edittext: "", - edittitle: "Tétel szerkesztése", - addtext:"", - addtitle: "Új tétel hozzáadása", - deltext: "", - deltitle: "Tétel törlése", - searchtext: "", - searchtitle: "Keresés", - refreshtext: "", - refreshtitle: "Frissítés", - alertcap: "Figyelmeztetés", - alerttext: "Kérem válasszon tételt.", - viewtext: "", - viewtitle: "Tétel megtekintése" - }, - col : { - caption: "Oszlopok kiválasztása", - bSubmit: "Ok", - bCancel: "Mégse" - }, - errors : { - errcap : "Hiba", - nourl : "Nincs URL beállítva", - norecords: "Nincs feldolgozásra váró tétel", - model : "colNames és colModel hossza nem egyenlő!" - }, - formatter : { - integer : {thousandsSeparator: " ", defaultValue: '0'}, - number : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0,00'}, - currency : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0,00'}, - date : { - dayNames: [ - "Va", "Hé", "Ke", "Sze", "Csü", "Pé", "Szo", - "Vasárnap", "Hétfő", "Kedd", "Szerda", "Csütörtök", "Péntek", "Szombat" - ], - monthNames: [ - "Jan", "Feb", "Már", "Ápr", "Máj", "Jún", "Júl", "Aug", "Szep", "Okt", "Nov", "Dec", - "Január", "Február", "Március", "Áprili", "Május", "Június", "Július", "Augusztus", "Szeptember", "Október", "November", "December" - ], - AmPm : ["de","du","DE","DU"], - S: function (j) {return '.-ik';}, - srcformat: 'Y-m-d', - newformat: 'Y/m/d', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - ISO8601Long:"Y-m-d H:i:s", - ISO8601Short:"Y-m-d", - ShortDate: "Y/j/n", - LongDate: "Y. F hó d., l", - FullDateTime: "l, F d, Y g:i:s A", - MonthDay: "F d", - ShortTime: "a g:i", - LongTime: "a g:i:s", - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - YearMonth: "Y, F" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-id.js b/assets/js/plugins/jqGrid/i18n/grid.locale-id.js deleted file mode 100644 index 2ff1dd96..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-id.js +++ /dev/null @@ -1,170 +0,0 @@ -;(function($){ -/** - * jqGrid English Translation - * Tony Tomov tony@trirand.com - * http://trirand.com/blog/ - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "Data {0} - {1} dari {2}", - emptyrecords: "Tidak ada data", - loadtext: "Memuat...", - pgtext : "Halaman {0} dari {1}" - }, - search : { - caption: "Pencarian", - Find: "Cari !", - Reset: "Segarkan", - odata: [{ oper:'eq', text:"sama dengan"},{ oper:'ne', text:"tidak sama dengan"},{ oper:'lt', text:"kurang dari"},{ oper:'le', text:"kurang dari atau sama dengan"},{ oper:'gt', text:"lebih besar"},{ oper:'ge', text:"lebih besar atau sama dengan"},{ oper:'bw', text:"dimulai dengan"},{ oper:'bn', text:"tidak dimulai dengan"},{ oper:'in', text:"di dalam"},{ oper:'ni', text:"tidak di dalam"},{ oper:'ew', text:"diakhiri dengan"},{ oper:'en', text:"tidak diakhiri dengan"},{ oper:'cn', text:"mengandung"},{ oper:'nc', text:"tidak mengandung"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}], - groupOps: [ { op: "AND", text: "all" }, { op: "OR", text: "any" } ], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit : { - addCaption: "Tambah Data", - editCaption: "Sunting Data", - bSubmit: "Submit", - bCancel: "Tutup", - bClose: "Tutup", - saveData: "Data telah berubah! Simpan perubahan?", - bYes : "Ya", - bNo : "Tidak", - bExit : "Tutup", - msg: { - required:"kolom wajib diisi", - number:"hanya nomer yang diperbolehkan", - minValue:"kolom harus lebih besar dari atau sama dengan", - maxValue:"kolom harus lebih kecil atau sama dengan", - email: "alamat e-mail tidak valid", - integer: "hanya nilai integer yang diperbolehkan", - date: "nilai tanggal tidak valid", - url: "Bukan URL yang valid. Harap gunakan ('http://' or 'https://')", - nodefined : " belum didefinisikan!", - novalue : " return value is required!", - customarray : "Custom function should return array!", - customfcheck : "Custom function should be present in case of custom checking!" - - } - }, - view : { - caption: "Menampilkan data", - bClose: "Tutup" - }, - del : { - caption: "Hapus", - msg: "Hapus data terpilih?", - bSubmit: "Hapus", - bCancel: "Batalkan" - }, - nav : { - edittext: "", - edittitle: "Sunting data terpilih", - addtext:"", - addtitle: "Tambah baris baru", - deltext: "", - deltitle: "Hapus baris terpilih", - searchtext: "", - searchtitle: "Temukan data", - refreshtext: "", - refreshtitle: "Segarkan Grid", - alertcap: "Warning", - alerttext: "Harap pilih baris", - viewtext: "", - viewtitle: "Tampilkan baris terpilih" - }, - col : { - caption: "Pilih Kolom", - bSubmit: "Ok", - bCancel: "Batal" - }, - errors : { - errcap : "Error", - nourl : "Tidak ada url yang diset", - norecords: "Tidak ada data untuk diproses", - model : "Lebar dari colNames <> colModel!" - }, - formatter : { - integer : {thousandsSeparator: ".", defaultValue: '0'}, - number : {decimalSeparator:",", thousandsSeparator: ".", decimalPlaces: 2, defaultValue: '0'}, - currency : {decimalSeparator:",", thousandsSeparator: ".", decimalPlaces: 2, prefix: "Rp. ", suffix:"", defaultValue: '0'}, - date : { - dayNames: [ - "Ming", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab", - "Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu" - ], - monthNames: [ - "Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Agu", "Sep", "Okt", "Nov", "Des", - "Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember" - ], - AmPm : ["am","pm","AM","PM"], - S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th';}, - srcformat: 'Y-m-d', - newformat: 'n/j/Y', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - // see http://php.net/manual/en/function.date.php for PHP format used in jqGrid - // and see http://docs.jquery.com/UI/Datepicker/formatDate - // and https://github.com/jquery/globalize#dates for alternative formats used frequently - // one can find on https://github.com/jquery/globalize/tree/master/lib/cultures many - // information about date, time, numbers and currency formats used in different countries - // one should just convert the information in PHP format - ISO8601Long:"Y-m-d H:i:s", - ISO8601Short:"Y-m-d", - // short date: - // n - Numeric representation of a month, without leading zeros - // j - Day of the month without leading zeros - // Y - A full numeric representation of a year, 4 digits - // example: 3/1/2012 which means 1 March 2012 - ShortDate: "n/j/Y", // in jQuery UI Datepicker: "M/d/yyyy" - // long date: - // l - A full textual representation of the day of the week - // F - A full textual representation of a month - // d - Day of the month, 2 digits with leading zeros - // Y - A full numeric representation of a year, 4 digits - LongDate: "l, F d, Y", // in jQuery UI Datepicker: "dddd, MMMM dd, yyyy" - // long date with long time: - // l - A full textual representation of the day of the week - // F - A full textual representation of a month - // d - Day of the month, 2 digits with leading zeros - // Y - A full numeric representation of a year, 4 digits - // g - 12-hour format of an hour without leading zeros - // i - Minutes with leading zeros - // s - Seconds, with leading zeros - // A - Uppercase Ante meridiem and Post meridiem (AM or PM) - FullDateTime: "l, F d, Y g:i:s A", // in jQuery UI Datepicker: "dddd, MMMM dd, yyyy h:mm:ss tt" - // month day: - // F - A full textual representation of a month - // d - Day of the month, 2 digits with leading zeros - MonthDay: "F d", // in jQuery UI Datepicker: "MMMM dd" - // short time (without seconds) - // g - 12-hour format of an hour without leading zeros - // i - Minutes with leading zeros - // A - Uppercase Ante meridiem and Post meridiem (AM or PM) - ShortTime: "g:i A", // in jQuery UI Datepicker: "h:mm tt" - // long time (with seconds) - // g - 12-hour format of an hour without leading zeros - // i - Minutes with leading zeros - // s - Seconds, with leading zeros - // A - Uppercase Ante meridiem and Post meridiem (AM or PM) - LongTime: "g:i:s A", // in jQuery UI Datepicker: "h:mm:ss tt" - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - // month with year - // Y - A full numeric representation of a year, 4 digits - // F - A full textual representation of a month - YearMonth: "F, Y" // in jQuery UI Datepicker: "MMMM, yyyy" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-is.js b/assets/js/plugins/jqGrid/i18n/grid.locale-is.js deleted file mode 100644 index bf4d6b29..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-is.js +++ /dev/null @@ -1,128 +0,0 @@ -;(function($){ -/** - * jqGrid Icelandic Translation - * jtm@hi.is Univercity of Iceland - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "Skoða {0} - {1} af {2}", - emptyrecords: "Engar færslur", - loadtext: "Hleður...", - pgtext : "Síða {0} af {1}" - }, - search : { - caption: "Leita...", - Find: "Leita", - Reset: "Endursetja", - odata: [{ oper:'eq', text:"sama og"},{ oper:'ne', text:"ekki sama og"},{ oper:'lt', text:"minna en"},{ oper:'le', text:"minna eða jafnt og"},{ oper:'gt', text:"stærra en"},{ oper:'ge', text:"stærra eða jafnt og"},{ oper:'bw', text:"byrjar á"},{ oper:'bn', text:"byrjar ekki á"},{ oper:'in', text:"er í"},{ oper:'ni', text:"er ekki í"},{ oper:'ew', text:"endar á"},{ oper:'en', text:"endar ekki á"},{ oper:'cn', text:"inniheldur"},{ oper:'nc', text:"inniheldur ekki"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}], - groupOps: [ { op: "AND", text: "allt" }, { op: "OR", text: "eða" } ], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit : { - addCaption: "Bæta við færslu", - editCaption: "Breyta færslu", - bSubmit: "Vista", - bCancel: "Hætta við", - bClose: "Loka", - saveData: "Gögn hafa breyst! Vista breytingar?", - bYes : "Já", - bNo : "Nei", - bExit : "Hætta við", - msg: { - required:"Reitur er nauðsynlegur", - number:"Vinsamlega settu inn tölu", - minValue:"gildi verður að vera meira en eða jafnt og ", - maxValue:"gildi verður að vera minna en eða jafnt og ", - email: "er ekki löglegt email", - integer: "Vinsamlega settu inn tölu", - date: "Vinsamlega setti inn dagsetningu", - url: "er ekki löglegt URL. Vantar ('http://' eða 'https://')", - nodefined : " er ekki skilgreint!", - novalue : " skilagildi nauðsynlegt!", - customarray : "Fall skal skila fylki!", - customfcheck : "Fall skal vera skilgreint!" - } - }, - view : { - caption: "Skoða færslu", - bClose: "Loka" - }, - del : { - caption: "Eyða", - msg: "Eyða völdum færslum ?", - bSubmit: "Eyða", - bCancel: "Hætta við" - }, - nav : { - edittext: " ", - edittitle: "Breyta færslu", - addtext:" ", - addtitle: "Ný færsla", - deltext: " ", - deltitle: "Eyða færslu", - searchtext: " ", - searchtitle: "Leita", - refreshtext: "", - refreshtitle: "Endurhlaða", - alertcap: "Viðvörun", - alerttext: "Vinsamlega veldu færslu", - viewtext: "", - viewtitle: "Skoða valda færslu" - }, - col : { - caption: "Sýna / fela dálka", - bSubmit: "Vista", - bCancel: "Hætta við" - }, - errors : { - errcap : "Villa", - nourl : "Vantar slóð", - norecords: "Engar færslur valdar", - model : "Lengd colNames <> colModel!" - }, - formatter : { - integer : {thousandsSeparator: " ", defaultValue: '0'}, - number : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0.00'}, - currency : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0.00'}, - date : { - dayNames: [ - "Sun", "Mán", "Þri", "Mið", "Fim", "Fös", "Lau", - "Sunnudagur", "Mánudagur", "Þriðjudagur", "Miðvikudagur", "Fimmtudagur", "Föstudagur", "Laugardagur" - ], - monthNames: [ - "Jan", "Feb", "Mar", "Apr", "Maí", "Jún", "Júl", "Ágú", "Sep", "Oct", "Nóv", "Des", - "Janúar", "Febrúar", "Mars", "Apríl", "Maí", "Júný", "Júlý", "Ágúst", "September", "Október", "Nóvember", "Desember" - ], - AmPm : ["am","pm","AM","PM"], - S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'}, - srcformat: 'Y-m-d', - newformat: 'd/m/Y', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - ISO8601Long:"Y-m-d H:i:s", - ISO8601Short:"Y-m-d", - ShortDate: "n/j/Y", - LongDate: "l, F d, Y", - FullDateTime: "l, F d, Y g:i:s A", - MonthDay: "F d", - ShortTime: "g:i A", - LongTime: "g:i:s A", - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - YearMonth: "F, Y" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-it.js b/assets/js/plugins/jqGrid/i18n/grid.locale-it.js deleted file mode 100644 index 105968b8..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-it.js +++ /dev/null @@ -1 +0,0 @@ -(function(a){a.jgrid = a.jgrid || {};a.extend(a.jgrid,{ defaults:{recordtext:"Visualizzati {0} - {1} di {2}",emptyrecords:"Nessun record da visualizzare",loadtext:"Caricamento...",pgtext:"Pagina {0} di {1}"},search:{caption:"Ricerca...",Find:"Cerca",Reset:"Pulisci", odata: [{ oper:'eq', text:"uguale"},{ oper:'ne', text:"diverso"},{ oper:'lt', text:"minore"},{ oper:'le', text:"minore o uguale"},{ oper:'gt', text:"maggiore"},{ oper:'ge', text:"maggiore o uguale"},{ oper:'bw', text:"inizia con"},{ oper:'bn', text:"non inizia con"},{ oper:'in', text:"in"},{ oper:'ni', text:"non in"},{ oper:'ew', text:"termina con"},{ oper:'en', text:"non termina con"},{ oper:'cn', text:"contiene"},{ oper:'nc', text:"non contiene"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}],groupOps:[{op:"AND",text:"tutto"},{op:"OR",text:"almeno uno"}], operandTitle : "Click to select search operation.",resetTitle : "Reset Search Value"},edit:{addCaption:"Aggiungi Record",editCaption:"Modifica Record",bSubmit:"Invia",bCancel:"Chiudi",bClose:"Chiudi",saveData:"Alcuni dati modificati! Salvare i cambiamenti?",bYes:"Si",bNo:"No",bExit:"Esci",msg:{required:"Campo richiesto",number:"Per favore, inserisci un valore valido",minValue:"il valore deve essere maggiore o uguale a ",maxValue:"il valore deve essere minore o uguale a",email:"e-mail non corretta",integer:"Per favore, inserisci un numero intero valido",date:"Per favore, inserisci una data valida",url:"URL non valido. Prefisso richiesto ('http://' or 'https://')",nodefined:" non � definito!",novalue:" valore di ritorno richiesto!",customarray:"La function custon deve tornare un array!",customfcheck:"La function custom deve esistere per il custom checking!"}},view:{caption:"Visualizzazione Record",bClose:"Chiudi"},del:{caption:"Cancella",msg:"Cancellare record selezionato/i?",bSubmit:"Cancella",bCancel:"Annulla"},nav:{edittext:" ",edittitle:"Modifica record selezionato",addtext:" ",addtitle:"Aggiungi nuovo record",deltext:" ",deltitle:"Cancella record selezionato",searchtext:" ",searchtitle:"Ricerca record",refreshtext:"",refreshtitle:"Aggiorna griglia",alertcap:"Attenzione",alerttext:"Per favore, seleziona un record",viewtext:"",viewtitle:"Visualizza riga selezionata"},col:{caption:"Mostra/Nascondi Colonne",bSubmit:"Invia",bCancel:"Annulla"},errors:{errcap:"Errore",nourl:"Url non settata",norecords:"Nessun record da elaborare",model:"Lunghezza di colNames &lt;&gt; colModel!"},formatter:{integer:{thousandsSeparator:" ",defaultValue:"0"},number:{decimalSeparator:",",thousandsSeparator:" ",decimalPlaces:2,defaultValue:"0,00"},currency:{decimalSeparator:",",thousandsSeparator:" ",decimalPlaces:2,prefix:"",suffix:"",defaultValue:"0,00"},date:{dayNames:["Dom","Lun","Mar","Mer","Gio","Ven","Sab","Domenica","Luned�","Marted�","Mercoled�","Gioved�","Venerd�","Sabato"],monthNames:["Gen","Feb","Mar","Apr","Mag","Gui","Lug","Ago","Set","Ott","Nov","Dic","Genneio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Movembre","Dicembre"],AmPm:["am","pm","AM","PM"],S:function(b){return b<11||b>13?["st","nd","rd","th"][Math.min((b-1)%10,3)]:"th"},srcformat:"Y-m-d",newformat:"d/m/Y",parseRe : /[#%\\\/:_;.,\t\s-]/,masks:{ISO8601Long:"Y-m-d H:i:s",ISO8601Short:"Y-m-d",ShortDate:"n/j/Y",LongDate:"l, F d, Y",FullDateTime:"l, F d, Y g:i:s A",MonthDay:"F d",ShortTime:"g:i A",LongTime:"g:i:s A",SortableDateTime:"Y-m-d\\TH:i:s",UniversalSortableDateTime:"Y-m-d H:i:sO",YearMonth:"F, Y"},reformatAfterEdit:false},baseLinkUrl:"",showAction:"",target:"",checkbox:{disabled:true},idName:"id"}});})(jQuery); \ No newline at end of file diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-ja.js b/assets/js/plugins/jqGrid/i18n/grid.locale-ja.js deleted file mode 100644 index 0d801adb..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-ja.js +++ /dev/null @@ -1,158 +0,0 @@ -;(function($){ -/** - * jqGrid Japanese Translation - * OKADA Yoshitada okada.dev@sth.jp - * http://trirand.com/blog/ - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "{2} \u4EF6\u4E2D {0} - {1} \u3092\u8868\u793A ", - emptyrecords: "\u8868\u793A\u3059\u308B\u30EC\u30B3\u30FC\u30C9\u304C\u3042\u308A\u307E\u305B\u3093", - loadtext: "\u8aad\u307f\u8fbc\u307f\u4e2d...", - pgtext : "{1} \u30DA\u30FC\u30B8\u4E2D {0} \u30DA\u30FC\u30B8\u76EE " - }, - search : { - caption: "\u691c\u7d22...", - Find: "\u691c\u7d22", - Reset: "\u30ea\u30bb\u30c3\u30c8", - odata: [{ oper:'eq', text:"\u6B21\u306B\u7B49\u3057\u3044"}, { oper:'ne', text:"\u6B21\u306B\u7B49\u3057\u304F\u306A\u3044"}, - { oper:'lt', text:"\u6B21\u3088\u308A\u5C0F\u3055\u3044"}, { oper:'le', text:"\u6B21\u306B\u7B49\u3057\u3044\u304B\u5C0F\u3055\u3044"}, - { oper:'gt', text:"\u6B21\u3088\u308A\u5927\u304D\u3044"}, { oper:'ge', text:"\u6B21\u306B\u7B49\u3057\u3044\u304B\u5927\u304D\u3044"}, - { oper:'bw', text:"\u6B21\u3067\u59CB\u307E\u308B"}, { oper:'bn', text:"\u6B21\u3067\u59CB\u307E\u3089\u306A\u3044"}, - { oper:'in', text:"\u6B21\u306B\u542B\u307E\u308C\u308B"}, { oper:'ni', text:"\u6B21\u306B\u542B\u307E\u308C\u306A\u3044"}, - { oper:'ew', text:"\u6B21\u3067\u7D42\u308F\u308B"}, { oper:'en', text:"\u6B21\u3067\u7D42\u308F\u3089\u306A\u3044"}, - { oper:'cn', text:"\u6B21\u3092\u542B\u3080"}, { oper:'nc', text:"\u6B21\u3092\u542B\u307E\u306A\u3044"}, - { oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}], - groupOps: [{ - op: "AND", - text: "\u3059\u3079\u3066\u306E" - }, - { - op: "OR", - text: "\u3044\u305A\u308C\u304B\u306E" - }], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit : { - addCaption: "\u30ec\u30b3\u30fc\u30c9\u8ffd\u52a0", - editCaption: "\u30ec\u30b3\u30fc\u30c9\u7de8\u96c6", - bSubmit: "\u9001\u4fe1", - bCancel: "\u30ad\u30e3\u30f3\u30bb\u30eb", - bClose: "\u9589\u3058\u308b", - saveData: "\u30C7\u30FC\u30BF\u304C\u5909\u66F4\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u4FDD\u5B58\u3057\u307E\u3059\u304B\uFF1F", - bYes: "\u306F\u3044", - bNo: "\u3044\u3044\u3048", - bExit: "\u30AD\u30E3\u30F3\u30BB\u30EB", - msg: { - required:"\u3053\u306e\u9805\u76ee\u306f\u5fc5\u9808\u3067\u3059\u3002", - number:"\u6b63\u3057\u3044\u6570\u5024\u3092\u5165\u529b\u3057\u3066\u4e0b\u3055\u3044\u3002", - minValue:"\u6b21\u306e\u5024\u4ee5\u4e0a\u3067\u5165\u529b\u3057\u3066\u4e0b\u3055\u3044\u3002", - maxValue:"\u6b21\u306e\u5024\u4ee5\u4e0b\u3067\u5165\u529b\u3057\u3066\u4e0b\u3055\u3044\u3002", - email: "e-mail\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002", - integer: "\u6b63\u3057\u3044\u6574\u6570\u5024\u3092\u5165\u529b\u3057\u3066\u4e0b\u3055\u3044\u3002", - date: "\u6b63\u3057\u3044\u5024\u3092\u5165\u529b\u3057\u3066\u4e0b\u3055\u3044\u3002", - url: "\u306F\u6709\u52B9\u306AURL\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\20\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9\u304C\u5FC5\u8981\u3067\u3059\u3002 ('http://' \u307E\u305F\u306F 'https://')", - nodefined: " \u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093", - novalue: " \u623B\u308A\u5024\u304C\u5FC5\u8981\u3067\u3059", - customarray: "\u30AB\u30B9\u30BF\u30E0\u95A2\u6570\u306F\u914D\u5217\u3092\u8FD4\u3059\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059", - customfcheck: "\u30AB\u30B9\u30BF\u30E0\u691C\u8A3C\u306B\u306F\u30AB\u30B9\u30BF\u30E0\u95A2\u6570\u304C\u5FC5\u8981\u3067\u3059" - } - }, - view : { - caption: "\u30EC\u30B3\u30FC\u30C9\u3092\u8868\u793A", - bClose: "\u9589\u3058\u308B" - }, - del : { - caption: "\u524a\u9664", - msg: "\u9078\u629e\u3057\u305f\u30ec\u30b3\u30fc\u30c9\u3092\u524a\u9664\u3057\u307e\u3059\u304b\uff1f", - bSubmit: "\u524a\u9664", - bCancel: "\u30ad\u30e3\u30f3\u30bb\u30eb" - }, - nav : { - edittext: " ", - edittitle: "\u9078\u629e\u3057\u305f\u884c\u3092\u7de8\u96c6", - addtext:" ", - addtitle: "\u884c\u3092\u65b0\u898f\u8ffd\u52a0", - deltext: " ", - deltitle: "\u9078\u629e\u3057\u305f\u884c\u3092\u524a\u9664", - searchtext: " ", - searchtitle: "\u30ec\u30b3\u30fc\u30c9\u691c\u7d22", - refreshtext: "", - refreshtitle: "\u30b0\u30ea\u30c3\u30c9\u3092\u30ea\u30ed\u30fc\u30c9", - alertcap: "\u8b66\u544a", - alerttext: "\u884c\u3092\u9078\u629e\u3057\u3066\u4e0b\u3055\u3044\u3002", - viewtext: "", - viewtitle: "\u9078\u629E\u3057\u305F\u884C\u3092\u8868\u793A" - }, - col : { - caption: "\u5217\u3092\u8868\u793a\uff0f\u96a0\u3059", - bSubmit: "\u9001\u4fe1", - bCancel: "\u30ad\u30e3\u30f3\u30bb\u30eb" - }, - errors : { - errcap : "\u30a8\u30e9\u30fc", - nourl : "URL\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002", - norecords: "\u51e6\u7406\u5bfe\u8c61\u306e\u30ec\u30b3\u30fc\u30c9\u304c\u3042\u308a\u307e\u305b\u3093\u3002", - model : "colNames\u306e\u9577\u3055\u304ccolModel\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002" - }, - formatter : { - integer: { - thousandsSeparator: ",", - defaultValue: '0' - }, - number: { - decimalSeparator: ".", - thousandsSeparator: ",", - decimalPlaces: 2, - defaultValue: '0.00' - }, - currency: { - decimalSeparator: ".", - thousandsSeparator: ",", - decimalPlaces: 0, - prefix: "", - suffix: "", - defaultValue: '0' - }, - date : { - dayNames: [ - "\u65e5", "\u6708", "\u706b", "\u6c34", "\u6728", "\u91d1", "\u571f", - "\u65e5", "\u6708", "\u706b", "\u6c34", "\u6728", "\u91d1", "\u571f" - ], - monthNames: [ - "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", - "1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708" - ], - AmPm : ["am","pm","AM","PM"], - S: function (j) { return "\u756a\u76ee"; }, - srcformat: 'Y-m-d', - newformat: 'd/m/Y', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - ISO8601Long:"Y-m-d H:i:s", - ISO8601Short:"Y-m-d", - ShortDate: "n/j/Y", - LongDate: "l, F d, Y", - FullDateTime: "l, F d, Y g:i:s A", - MonthDay: "F d", - ShortTime: "g:i A", - LongTime: "g:i:s A", - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - YearMonth: "F, Y" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-kr.js b/assets/js/plugins/jqGrid/i18n/grid.locale-kr.js deleted file mode 100644 index 54c52ecd..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-kr.js +++ /dev/null @@ -1,130 +0,0 @@ -;(function($){ -/** - * jqGrid English Translation - * Tony Tomov tony@trirand.com - * http://trirand.com/blog/ - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "보기 {0} - {1} / {2}", - emptyrecords: "표시할 행이 없습니다", - loadtext: "조회중...", - pgtext : "페이지 {0} / {1}" - }, - search : { - caption: "검색...", - Find: "찾기", - Reset: "초기화", - odata: [{ oper:'eq', text:"같다"},{ oper:'ne', text:"같지 않다"},{ oper:'lt', text:"작다"},{ oper:'le', text:"작거나 같다"},{ oper:'gt', text:"크다"},{ oper:'ge', text:"크거나 같다"},{ oper:'bw', text:"로 시작한다"},{ oper:'bn', text:"로 시작하지 않는다"},{ oper:'in', text:"내에 있다"},{ oper:'ni', text:"내에 있지 않다"},{ oper:'ew', text:"로 끝난다"},{ oper:'en', text:"로 끝나지 않는다"},{ oper:'cn', text:"내에 존재한다"},{ oper:'nc', text:"내에 존재하지 않는다"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}], - groupOps: [ { op: "AND", text: "전부" }, { op: "OR", text: "임의" } ], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit : { - addCaption: "행 추가", - editCaption: "행 수정", - bSubmit: "전송", - bCancel: "취소", - bClose: "닫기", - saveData: "자료가 변경되었습니다! 저장하시겠습니까?", - bYes : "예", - bNo : "아니오", - bExit : "취소", - msg: { - required:"필수항목입니다", - number:"유효한 번호를 입력해 주세요", - minValue:"입력값은 크거나 같아야 합니다", - maxValue:"입력값은 작거나 같아야 합니다", - email: "유효하지 않은 이메일주소입니다", - integer: "유효한 숫자를 입력하세요", - date: "유효한 날짜를 입력하세요", - url: "은 유효하지 않은 URL입니다. 문장앞에 다음단어가 필요합니다('http://' or 'https://')", - nodefined : " 은 정의도지 않았습니다!", - novalue : " 반환값이 필요합니다!", - customarray : "사용자정의 함수는 배열을 반환해야 합니다!", - customfcheck : "Custom function should be present in case of custom checking!" - - } - }, - view : { - caption: "행 조회", - bClose: "닫기" - }, - del : { - caption: "삭제", - msg: "선택된 행을 삭제하시겠습니까?", - bSubmit: "삭제", - bCancel: "취소" - }, - nav : { - edittext: "", - edittitle: "선택된 행 편집", - addtext:"", - addtitle: "행 삽입", - deltext: "", - deltitle: "선택된 행 삭제", - searchtext: "", - searchtitle: "행 찾기", - refreshtext: "", - refreshtitle: "그리드 갱신", - alertcap: "경고", - alerttext: "행을 선택하세요", - viewtext: "", - viewtitle: "선택된 행 조회" - }, - col : { - caption: "열을 선택하세요", - bSubmit: "확인", - bCancel: "취소" - }, - errors : { - errcap : "오류", - nourl : "설정된 url이 없습니다", - norecords: "처리할 행이 없습니다", - model : "colNames의 길이가 colModel과 일치하지 않습니다!" - }, - formatter : { - integer : {thousandsSeparator: ",", defaultValue: '0'}, - number : {decimalSeparator:".", thousandsSeparator: ",", decimalPlaces: 2, defaultValue: '0.00'}, - currency : {decimalSeparator:".", thousandsSeparator: ",", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0.00'}, - date : { - dayNames: [ - "Sun", "Mon", "Tue", "Wed", "Thr", "Fri", "Sat", - "일", "월", "화", "수", "목", "금", "토" - ], - monthNames: [ - "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", - "1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월" - ], - AmPm : ["am","pm","AM","PM"], - S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'}, - srcformat: 'Y-m-d', - newformat: 'm-d-Y', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - ISO8601Long:"Y-m-d H:i:s", - ISO8601Short:"Y-m-d", - ShortDate: "Y/j/n", - LongDate: "l, F d, Y", - FullDateTime: "l, F d, Y g:i:s A", - MonthDay: "F d", - ShortTime: "g:i A", - LongTime: "g:i:s A", - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - YearMonth: "F, Y" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-lt.js b/assets/js/plugins/jqGrid/i18n/grid.locale-lt.js deleted file mode 100644 index 651e2300..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-lt.js +++ /dev/null @@ -1,130 +0,0 @@ -;(function($){ -/** - * jqGrid Lithuanian Translation - * aur1mas aur1mas@devnet.lt - * http://aur1mas.devnet.lt - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "Peržiūrima {0} - {1} iš {2}", - emptyrecords: "Įrašų nėra", - loadtext: "Kraunama...", - pgtext : "Puslapis {0} iš {1}" - }, - search : { - caption: "Paieška...", - Find: "Ieškoti", - Reset: "Atstatyti", - odata: [{ oper:'eq', text:"lygu"},{ oper:'ne', text:"nelygu"},{ oper:'lt', text:"mažiau"},{ oper:'le', text:"mažiau arba lygu"},{ oper:'gt', text:"daugiau"},{ oper:'ge', text:"daugiau arba lygu"},{ oper:'bw', text:"prasideda"},{ oper:'bn', text:"neprasideda"},{ oper:'in', text:"reikšmė yra"},{ oper:'ni', text:"reikšmės nėra"},{ oper:'ew', text:"baigiasi"},{ oper:'en', text:"nesibaigia"},{ oper:'cn', text:"yra sudarytas"},{ oper:'nc', text:"nėra sudarytas"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}], - groupOps: [ { op: "AND", text: "visi" }, { op: "OR", text: "bet kuris" } ], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit : { - addCaption: "Sukurti įrašą", - editCaption: "Redaguoti įrašą", - bSubmit: "Išsaugoti", - bCancel: "Atšaukti", - bClose: "Uždaryti", - saveData: "Duomenys buvo pakeisti! Išsaugoti pakeitimus?", - bYes : "Taip", - bNo : "Ne", - bExit : "Atšaukti", - msg: { - required:"Privalomas laukas", - number:"Įveskite tinkamą numerį", - minValue:"reikšmė turi būti didesnė arba lygi ", - maxValue:"reikšmė turi būti mažesnė arba lygi", - email: "neteisingas el. pašto adresas", - integer: "Įveskite teisingą sveikąjį skaičių", - date: "Įveskite teisingą datą", - url: "blogas adresas. Nepamirškite pridėti ('http://' arba 'https://')", - nodefined : " nėra apibrėžta!", - novalue : " turi būti gražinama kokia nors reikšmė!", - customarray : "Custom f-ja turi grąžinti masyvą!", - customfcheck : "Custom f-ja tūrėtų būti sukurta, prieš bandant ją naudoti!" - - } - }, - view : { - caption: "Peržiūrėti įrašus", - bClose: "Uždaryti" - }, - del : { - caption: "Ištrinti", - msg: "Ištrinti pažymėtus įrašus(-ą)?", - bSubmit: "Ištrinti", - bCancel: "Atšaukti" - }, - nav : { - edittext: "", - edittitle: "Redaguoti pažymėtą eilutę", - addtext:"", - addtitle: "Pridėti naują eilutę", - deltext: "", - deltitle: "Ištrinti pažymėtą eilutę", - searchtext: "", - searchtitle: "Rasti įrašus", - refreshtext: "", - refreshtitle: "Perkrauti lentelę", - alertcap: "Įspėjimas", - alerttext: "Pasirinkite eilutę", - viewtext: "", - viewtitle: "Peržiūrėti pasirinktą eilutę" - }, - col : { - caption: "Pasirinkti stulpelius", - bSubmit: "Gerai", - bCancel: "Atšaukti" - }, - errors : { - errcap : "Klaida", - nourl : "Url reikšmė turi būti perduota", - norecords: "Nėra įrašų, kuriuos būtų galima apdoroti", - model : "colNames skaičius <> colModel skaičiui!" - }, - formatter : { - integer : {thousandsSeparator: "", defaultValue: '0'}, - number : {decimalSeparator:",", thousandsSeparator: "", decimalPlaces: 2, defaultValue: '0.00'}, - currency : {decimalSeparator:",", thousandsSeparator: "", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0.00'}, - date : { - dayNames: [ - "Sek", "Pir", "Ant", "Tre", "Ket", "Pen", "Šeš", - "Sekmadienis", "Pirmadienis", "Antradienis", "Trečiadienis", "Ketvirtadienis", "Penktadienis", "Šeštadienis" - ], - monthNames: [ - "Sau", "Vas", "Kov", "Bal", "Geg", "Bir", "Lie", "Rugj", "Rugs", "Spa", "Lap", "Gru", - "Sausis", "Vasaris", "Kovas", "Balandis", "Gegužė", "Birželis", "Liepa", "Rugpjūtis", "Rugsėjis", "Spalis", "Lapkritis", "Gruodis" - ], - AmPm : ["am","pm","AM","PM"], - S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'}, - srcformat: 'Y-m-d', - newformat: 'd/m/Y', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - ISO8601Long:"Y-m-d H:i:s", - ISO8601Short:"Y-m-d", - ShortDate: "n/j/Y", - LongDate: "l, F d, Y", - FullDateTime: "l, F d, Y g:i:s A", - MonthDay: "F d", - ShortTime: "g:i A", - LongTime: "g:i:s A", - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - YearMonth: "F, Y" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-mne.js b/assets/js/plugins/jqGrid/i18n/grid.locale-mne.js deleted file mode 100644 index bf663ca4..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-mne.js +++ /dev/null @@ -1,130 +0,0 @@ -;(function($){ -/** - * jqGrid Montenegrian Translation - * Bild Studio info@bild-studio.net - * http://www.bild-studio.com - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "Pregled {0} - {1} od {2}", - emptyrecords: "Ne postoji nijedan zapis", - loadtext: "Učitivanje...", - pgtext : "Strana {0} od {1}" - }, - search : { - caption: "Traženje...", - Find: "Traži", - Reset: "Resetuj", - odata: [{ oper:'eq', text:"jednako"},{ oper:'ne', text:"nije jednako"},{ oper:'lt', text:"manje"},{ oper:'le', text:"manje ili jednako"},{ oper:'gt', text:"veće"},{ oper:'ge', text:"veće ili jednako"},{ oper:'bw', text:"počinje sa"},{ oper:'bn', text:"ne počinje sa"},{ oper:'in', text:"je u"},{ oper:'ni', text:"nije u"},{ oper:'ew', text:"završava sa"},{ oper:'en', text:"ne završava sa"},{ oper:'cn', text:"sadrži"},{ oper:'nc', text:"ne sadrži"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}], - groupOps: [ { op: "AND", text: "sva" }, { op: "OR", text: "bilo koje" } ], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit : { - addCaption: "Dodaj zapis", - editCaption: "Izmjeni zapis", - bSubmit: "Pošalji", - bCancel: "Odustani", - bClose: "Zatvori", - saveData: "Podatak je izmjenjen! Sačuvaj izmjene?", - bYes : "Da", - bNo : "Ne", - bExit : "Odustani", - msg: { - required:"Polje je obavezno", - number:"Unesite ispravan broj", - minValue:"vrijednost mora biti veća od ili jednaka sa ", - maxValue:"vrijednost mora biti manja ili jednaka sa", - email: "nije ispravna email adresa, nije valjda da ne umiješ ukucati mail!?", - integer: "Ne zajebaji se unesi cjelobrojnu vrijednost ", - date: "Unesite ispravan datum", - url: "nije ispravan URL. Potreban je prefiks ('http://' or 'https://')", - nodefined : " nije definisan!", - novalue : " zahtjevana je povratna vrijednost!", - customarray : "Prilagođena funkcija treba da vrati niz!", - customfcheck : "Prilagođena funkcija treba da bude prisutana u slučaju prilagođene provjere!" - - } - }, - view : { - caption: "Pogledaj zapis", - bClose: "Zatvori" - }, - del : { - caption: "Izbrisi", - msg: "Izbrisi izabran(e) zapise(e)?", - bSubmit: "Izbriši", - bCancel: "Odbaci" - }, - nav : { - edittext: "", - edittitle: "Izmjeni izabrani red", - addtext:"", - addtitle: "Dodaj novi red", - deltext: "", - deltitle: "Izbriši izabran red", - searchtext: "", - searchtitle: "Nađi zapise", - refreshtext: "", - refreshtitle: "Ponovo učitaj podatke", - alertcap: "Upozorenje", - alerttext: "Izaberite red", - viewtext: "", - viewtitle: "Pogledaj izabrani red" - }, - col : { - caption: "Izaberi kolone", - bSubmit: "OK", - bCancel: "Odbaci" - }, - errors : { - errcap : "Greška", - nourl : "Nije postavljen URL", - norecords: "Nema zapisa za obradu", - model : "Dužina modela colNames <> colModel!" - }, - formatter : { - integer : {thousandsSeparator: " ", defaultValue: '0'}, - number : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0.00'}, - currency : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0.00'}, - date : { - dayNames: [ - "Ned", "Pon", "Uto", "Sre", "Čet", "Pet", "Sub", - "Nedelja", "Ponedeljak", "Utorak", "Srijeda", "Četvrtak", "Petak", "Subota" - ], - monthNames: [ - "Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Avg", "Sep", "Okt", "Nov", "Dec", - "Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar" - ], - AmPm : ["am","pm","AM","PM"], - S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'}, - srcformat: 'Y-m-d', - newformat: 'd/m/Y', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - ISO8601Long:"Y-m-d H:i:s", - ISO8601Short:"Y-m-d", - ShortDate: "n/j/Y", - LongDate: "l, F d, Y", - FullDateTime: "l, F d, Y g:i:s A", - MonthDay: "F d", - ShortTime: "g:i A", - LongTime: "g:i:s A", - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - YearMonth: "F, Y" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-nl.js b/assets/js/plugins/jqGrid/i18n/grid.locale-nl.js deleted file mode 100644 index 46602e99..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-nl.js +++ /dev/null @@ -1,150 +0,0 @@ -(function(a) { -a.jgrid = a.jgrid || {}; -a.extend(a.jgrid,{ - defaults: - { - recordtext: "regels {0} - {1} van {2}", - emptyrecords: "Geen data gevonden.", - loadtext: "laden...", - pgtext: "pagina {0} van {1}" - }, - search: - { - caption: "Zoeken...", - Find: "Zoek", - Reset: "Herstellen", - odata: [{ oper:'eq', text:"gelijk aan"},{ oper:'ne', text:"niet gelijk aan"},{ oper:'lt', text:"kleiner dan"},{ oper:'le', text:"kleiner dan of gelijk aan"},{ oper:'gt', text:"groter dan"},{ oper:'ge', text:"groter dan of gelijk aan"},{ oper:'bw', text:"begint met"},{ oper:'bn', text:"begint niet met"},{ oper:'in', text:"is in"},{ oper:'ni', text:"is niet in"},{ oper:'ew', text:"eindigd met"},{ oper:'en', text:"eindigd niet met"},{ oper:'cn', text:"bevat"},{ oper:'nc', text:"bevat niet"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}], - groupOps: [{ op: "AND", text: "alle" }, { op: "OR", text: "een van de"}], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit: - { - addCaption: "Nieuw", - editCaption: "Bewerken", - bSubmit: "Opslaan", - bCancel: "Annuleren", - bClose: "Sluiten", - saveData: "Er is data aangepast! Wijzigingen opslaan?", - bYes: "Ja", - bNo: "Nee", - bExit: "Sluiten", - msg: - { - required: "Veld is verplicht", - number: "Voer a.u.b. geldig nummer in", - minValue: "Waarde moet groter of gelijk zijn aan ", - maxValue: "Waarde moet kleiner of gelijks zijn aan", - email: "is geen geldig e-mailadres", - integer: "Voer a.u.b. een geldig getal in", - date: "Voer a.u.b. een geldige waarde in", - url: "is geen geldige URL. Prefix is verplicht ('http://' or 'https://')", - nodefined : " is not defined!", - novalue : " return value is required!", - customarray : "Custom function should return array!", - customfcheck : "Custom function should be present in case of custom checking!" - } - }, - view: - { - caption: "Tonen", - bClose: "Sluiten" - }, - del: - { - caption: "Verwijderen", - msg: "Verwijder geselecteerde regel(s)?", - bSubmit: "Verwijderen", - bCancel: "Annuleren" - }, - nav: - { - edittext: "", - edittitle: "Bewerken", - addtext: "", - addtitle: "Nieuw", - deltext: "", - deltitle: "Verwijderen", - searchtext: "", - searchtitle: "Zoeken", - refreshtext: "", - refreshtitle: "Vernieuwen", - alertcap: "Waarschuwing", - alerttext: "Selecteer a.u.b. een regel", - viewtext: "", - viewtitle: "Openen" - }, - col: - { - caption: "Tonen/verbergen kolommen", - bSubmit: "OK", - bCancel: "Annuleren" - }, - errors: - { - errcap: "Fout", - nourl: "Er is geen URL gedefinieerd", - norecords: "Geen data om te verwerken", - model: "Lengte van 'colNames' is niet gelijk aan 'colModel'!" - }, - formatter: - { - integer: - { - thousandsSeparator: ".", - defaultValue: "0" - }, - number: - { - decimalSeparator: ",", - thousandsSeparator: ".", - decimalPlaces: 2, - defaultValue: "0.00" - }, - currency: - { - decimalSeparator: ",", - thousandsSeparator: ".", - decimalPlaces: 2, - prefix: "EUR ", - suffix: "", - defaultValue: "0.00" - }, - date: - { - dayNames: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za", "Zondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrijdag", "Zaterdag"], - monthNames: ["Jan", "Feb", "Maa", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "October", "November", "December"], - AmPm: ["am", "pm", "AM", "PM"], - S: function(b) { - return b < 11 || b > 13 ? ["st", "nd", "rd", "th"][Math.min((b - 1) % 10, 3)] : "th" - }, - srcformat: "Y-m-d", - newformat: "d/m/Y", - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks: - { - ISO8601Long: "Y-m-d H:i:s", - ISO8601Short: "Y-m-d", - ShortDate: "n/j/Y", - LongDate: "l, F d, Y", - FullDateTime: "l d F Y G:i:s", - MonthDay: "d F", - ShortTime: "G:i", - LongTime: "G:i:s", - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - YearMonth: "F, Y" - }, - reformatAfterEdit: false - }, - baseLinkUrl: "", - showAction: "", - target: "", - checkbox: - { - disabled: true - }, - idName: "id" - } - }); -})(jQuery); \ No newline at end of file diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-no.js b/assets/js/plugins/jqGrid/i18n/grid.locale-no.js deleted file mode 100644 index 9f129ebd..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-no.js +++ /dev/null @@ -1 +0,0 @@ -(function(a){a.jgrid= a.jgrid || {};a.jgrid.defaults={recordtext:"Rad {0} - {1}, totalt {2}",loadtext:"Laster...",pgtext:"Side {0} av {1}"};a.jgrid.search={caption:"S�k...",Find:"Finn",Reset:"Nullstill",odata:[{oper:'eq', text:"lik"},{oper:'ne', text:"forskjellig fra"},{oper:'lt', text:"mindre enn"},{oper:'le', text:"mindre eller lik"},{oper:'gt', text:"st�rre enn"},{oper:'ge', text:" st�rre eller lik"},{oper:'bw', text:"starter med"},{oper:'ew', text:"slutter med"},{oper:'cn', text:"inneholder"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}],operandTitle : "Click to select search operation.",resetTitle : "Reset Search Value"};a.jgrid.edit={addCaption:"Ny rad",editCaption:"Rediger",bSubmit:"Send",bCancel:"Avbryt",bClose:"Lukk",processData:"Laster...",msg:{required:"Felt er obligatorisk",number:"Legg inn et gyldig tall",minValue:"verdi m� v�re st�rre enn eller lik",maxValue:"verdi m� v�re mindre enn eller lik",email:"er ikke en gyldig e-post adresse",integer:"Legg inn et gyldig heltall",date:"Legg inn en gyldig dato",url:"er ikke en gyldig URL. Prefiks p�krevd ('http://' eller 'https://')",nodefined:" er ikke definert!",novalue:" returverdi er p�krevd!",customarray:"Tilpasset funksjon m� returnere en tabell!",customfcheck:"Tilpasset funksjon m� eksistere!"}};a.jgrid.view={caption:"�pne post",bClose:"Lukk"};a.jgrid.del={caption:"Slett",msg:"Slett valgte rad(er)?",bSubmit:"Slett",bCancel:"Avbryt",processData:"Behandler..."};a.jgrid.nav={edittext:" ",edittitle:"Rediger valgte rad(er)",addtext:" ",addtitle:"Legg til ny rad",deltext:" ",deltitle:"Slett valgte rad(er)",searchtext:" ",searchtitle:"S�k",refreshtext:"",refreshtitle:"Oppdater tabell",alertcap:"Advarsel",alerttext:"Velg rad",viewtext:" ",viewtitle:"�pne valgt rad"};a.jgrid.col={caption:"Vis/skjul kolonner",bSubmit:"Utf�r",bCancel:"Avbryt"};a.jgrid.errors={errcap:"Feil",nourl:"Ingen url er satt",norecords:"Ingen poster � behandle",model:"colNames og colModel har forskjellig lengde!"};a.jgrid.formatter={integer:{thousandsSeparator:" ",defaultValue:0},number:{decimalSeparator:",",thousandsSeparator:" ",decimalPlaces:2,defaulValue:0},currency:{decimalSeparator:",",thousandsSeparator:" ",decimalPlaces:2,prefix:"",suffix:"",defaulValue:0},date:{dayNames:["s�.","ma.","ti.","on.","to.","fr.","l�.","S�ndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","L�rdag"],monthNames:["jan.","feb.","mars","april","mai","juni","juli","aug.","sep.","okt.","nov.","des.","januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],AmPm:["","","",""],S:function(b){return"."},srcformat:"Y-m-d H:i:s",newformat:"Y-m-d H:i:s",parseRe : /[#%\\\/:_;.,\t\s-]/,masks:{ISO8601Long:"Y-m-d H:i:s",ISO8601Short:"Y-m-d",ShortDate:"j.n.Y",LongDate:"l j. F Y",FullDateTime:"l j. F Y kl. G.i.s",MonthDay:"j. F",ShortTime:"H:i",LongTime:"H:i:s",SortableDateTime:"Y-m-d\\TH:i:s",UniversalSortableDateTime:"Y-m-d H:i:sO",YearMonth:"F Y"},reformatAfterEdit:false},baseLinkUrl:"",showAction:"show",addParam:"",checkbox:{disabled:true}}})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-pl.js b/assets/js/plugins/jqGrid/i18n/grid.locale-pl.js deleted file mode 100644 index e3dd924d..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-pl.js +++ /dev/null @@ -1,134 +0,0 @@ -;(function($){ -/** - * jqGrid Polish Translation - * Łukasz Schab lukasz@freetree.pl - * http://FreeTree.pl - * - * Updated names, abbreviations, currency and date/time formats for Polish norms (also corresponding with CLDR v21.0.1 --> http://cldr.unicode.org/index) - * Tomasz Pęczek tpeczek@gmail.com - * http://tpeczek.blogspot.com; http://tpeczek.codeplex.com - * - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "Pokaż {0} - {1} z {2}", - emptyrecords: "Brak rekordów do pokazania", - loadtext: "Ładowanie...", - pgtext : "Strona {0} z {1}" - }, - search : { - caption: "Wyszukiwanie...", - Find: "Szukaj", - Reset: "Czyść", - odata: [{ oper:'eq', text:"dokładnie"},{ oper:'ne', text:"różne od"},{ oper:'lt', text:"mniejsze od"},{ oper:'le', text:"mniejsze lub równe"},{ oper:'gt', text:"większe od"},{ oper:'ge', text:"większe lub równe"},{ oper:'bw', text:"zaczyna się od"},{ oper:'bn', text:"nie zaczyna się od"},{ oper:'in', text:"jest w"},{ oper:'ni', text:"nie jest w"},{ oper:'ew', text:"kończy się na"},{ oper:'en', text:"nie kończy się na"},{ oper:'cn', text:"zawiera"},{ oper:'nc', text:"nie zawiera"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}], - groupOps: [ { op: "AND", text: "oraz" }, { op: "OR", text: "lub" } ], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit : { - addCaption: "Dodaj rekord", - editCaption: "Edytuj rekord", - bSubmit: "Zapisz", - bCancel: "Anuluj", - bClose: "Zamknij", - saveData: "Dane zostały zmienione! Zapisać zmiany?", - bYes: "Tak", - bNo: "Nie", - bExit: "Anuluj", - msg: { - required: "Pole jest wymagane", - number: "Proszę wpisać poprawną liczbę", - minValue: "wartość musi być większa lub równa od", - maxValue: "wartość musi być mniejsza lub równa od", - email: "nie jest poprawnym adresem e-mail", - integer: "Proszę wpisać poprawną liczbę", - date: "Proszę podaj poprawną datę", - url: "jest niewłaściwym adresem URL. Pamiętaj o prefiksie ('http://' lub 'https://')", - nodefined: " niezdefiniowane!", - novalue: " wymagana jest wartość zwracana!", - customarray: "Funkcja niestandardowa powinna zwracać tablicę!", - customfcheck: "Funkcja niestandardowa powinna być obecna w przypadku niestandardowego sprawdzania!" - } - }, - view : { - caption: "Pokaż rekord", - bClose: "Zamknij" - }, - del : { - caption: "Usuń", - msg: "Czy usunąć wybrany rekord(y)?", - bSubmit: "Usuń", - bCancel: "Anuluj" - }, - nav : { - edittext: "", - edittitle: "Edytuj wybrany wiersz", - addtext: "", - addtitle: "Dodaj nowy wiersz", - deltext: "", - deltitle: "Usuń wybrany wiersz", - searchtext: "", - searchtitle: "Wyszukaj rekord", - refreshtext: "", - refreshtitle: "Przeładuj", - alertcap: "Uwaga", - alerttext: "Proszę wybrać wiersz", - viewtext: "", - viewtitle: "Pokaż wybrany wiersz" - }, - col : { - caption: "Pokaż/Ukryj kolumny", - bSubmit: "Zatwierdź", - bCancel: "Anuluj" - }, - errors : { - errcap: "Błąd", - nourl: "Brak adresu url", - norecords: "Brak danych", - model : "Długość colNames <> colModel!" - }, - formatter : { - integer : {thousandsSeparator: " ", defaultValue: '0'}, - number : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0,00'}, - currency : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:" zł", defaultValue: '0,00'}, - date : { - dayNames: [ - "niedz.", "pon.", "wt.", "śr.", "czw.", "pt.", "sob.", - "niedziela", "poniedziałek", "wtorek", "środa", "czwartek", "piątek", "sobota" - ], - monthNames: [ - "sty", "lut", "mar", "kwi", "maj", "cze", "lip", "sie", "wrz", "paź", "lis", "gru", - "styczeń", "luty", "marzec", "kwiecień", "maj", "czerwiec", "lipiec", "sierpień", "wrzesień", "październik", "listopad", "grudzień" - ], - AmPm : ["","","",""], - S: function (j) {return '';}, - srcformat: 'Y-m-d', - newformat: 'd.m.Y', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - ISO8601Long: "Y-m-d H:i:s", - ISO8601Short: "Y-m-d", - ShortDate: "d.m.y", - LongDate: "l, j F Y", - FullDateTime: "l, j F Y H:i:s", - MonthDay: "j F", - ShortTime: "H:i", - LongTime: "H:i:s", - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - YearMonth: "F Y" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -})(jQuery); \ No newline at end of file diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-pt-br.js b/assets/js/plugins/jqGrid/i18n/grid.locale-pt-br.js deleted file mode 100644 index 86abb43a..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-pt-br.js +++ /dev/null @@ -1,137 +0,0 @@ -;(function($){ -/** - * jqGrid Brazilian-Portuguese Translation - * Sergio Righi sergio.righi@gmail.com - * http://curve.com.br - * - * Updated by Jonnas Fonini - * http://fonini.net - * - * - * Updated by Fabio Ferreira da Silva fabio_ferreiradasilva@yahoo.com.br - * - * - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "Ver {0} - {1} de {2}", - emptyrecords: "Nenhum registro para visualizar", - loadtext: "Carregando...", - pgtext : "Página {0} de {1}" - }, - search : { - caption: "Procurar...", - Find: "Procurar", - Reset: "Resetar", - odata: [{ oper:'eq', text:"igual"},{ oper:'ne', text:"diferente"},{ oper:'lt', text:"menor"},{ oper:'le', text:"menor ou igual"},{ oper:'gt', text:"maior"},{ oper:'ge', text:"maior ou igual"},{ oper:'bw', text:"inicia com"},{ oper:'bn', text:"não inicia com"},{ oper:'in', text:"está em"},{ oper:'ni', text:"não está em"},{ oper:'ew', text:"termina com"},{ oper:'en', text:"não termina com"},{ oper:'cn', text:"contém"},{ oper:'nc', text:"não contém"},{ oper:'nu', text:"nulo"},{ oper:'nn', text:"não nulo"}], - groupOps: [ { op: "AND", text: "todos" },{ op: "OR", text: "qualquer um" } ], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit : { - addCaption: "Incluir", - editCaption: "Alterar", - bSubmit: "Enviar", - bCancel: "Cancelar", - bClose: "Fechar", - saveData: "Os dados foram alterados! Salvar alterações?", - bYes : "Sim", - bNo : "Não", - bExit : "Cancelar", - msg: { - required:"Campo obrigatório", - number:"Por favor, informe um número válido", - minValue:"valor deve ser igual ou maior que ", - maxValue:"valor deve ser menor ou igual a", - email: "este e-mail não é válido", - integer: "Por favor, informe um valor inteiro", - date: "Por favor, informe uma data válida", - url: "não é uma URL válida. Prefixo obrigatório ('http://' or 'https://')", - nodefined : " não está definido!", - novalue : " um valor de retorno é obrigatório!", - customarray : "Função customizada deve retornar um array!", - customfcheck : "Função customizada deve estar presente em caso de validação customizada!" - } - }, - view : { - caption: "Ver Registro", - bClose: "Fechar" - }, - del : { - caption: "Apagar", - msg: "Apagar registro(s) selecionado(s)?", - bSubmit: "Apagar", - bCancel: "Cancelar" - }, - nav : { - edittext: " ", - edittitle: "Alterar registro selecionado", - addtext:" ", - addtitle: "Incluir novo registro", - deltext: " ", - deltitle: "Apagar registro selecionado", - searchtext: " ", - searchtitle: "Procurar registros", - refreshtext: "", - refreshtitle: "Recarregando tabela", - alertcap: "Aviso", - alerttext: "Por favor, selecione um registro", - viewtext: "", - viewtitle: "Ver linha selecionada" - }, - col : { - caption: "Mostrar/Esconder Colunas", - bSubmit: "Enviar", - bCancel: "Cancelar" - }, - errors : { - errcap : "Erro", - nourl : "Nenhuma URL definida", - norecords: "Sem registros para exibir", - model : "Comprimento de colNames <> colModel!" - }, - formatter : { - integer : {thousandsSeparator: " ", defaultValue: '0'}, - number : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0,00'}, - currency : {decimalSeparator:",", thousandsSeparator: ".", decimalPlaces: 2, prefix: "R$ ", suffix:"", defaultValue: '0,00'}, - date : { - dayNames: [ - "Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb", - "Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado" - ], - monthNames: [ - "Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez", - "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro" - ], - AmPm : ["am","pm","AM","PM"], - S: function (j) {return j < 11 || j > 13 ? ['º', 'º', 'º', 'º'][Math.min((j - 1) % 10, 3)] : 'º'}, - srcformat: 'Y-m-d', - newformat: 'd/m/Y', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - ISO8601Long:"Y-m-d H:i:s", - ISO8601Short:"Y-m-d", - ShortDate: "n/j/Y", - LongDate: "l, F d, Y", - FullDateTime: "l, F d, Y g:i:s A", - MonthDay: "F d", - ShortTime: "g:i A", - LongTime: "g:i:s A", - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - YearMonth: "F, Y" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-pt.js b/assets/js/plugins/jqGrid/i18n/grid.locale-pt.js deleted file mode 100644 index 742ebdbe..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-pt.js +++ /dev/null @@ -1,127 +0,0 @@ -;(function($){ -/** - * jqGrid Portuguese Translation -* Tradu��o da jqGrid em Portugues por Frederico Carvalho, http://www.eyeviewdesign.pt - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "View {0} - {1} of {2}", - emptyrecords: "No records to view", - loadtext: "A carregar...", - pgtext : "Página {0} de {1}" - }, - search : { - caption: "Busca...", - Find: "Procurar", - Reset: "Limpar", - odata: [{ oper:'eq', text:'equal'},{ oper:'ne', text:'not equal'},{ oper:'lt', text:'less'},{ oper:'le', text:'less or equal'},{ oper:'gt', text:'greater'},{ oper:'ge', text:'greater or equal'},{ oper:'bw', text:'begins with'},{ oper:'bn', text:'does not begin with'},{ oper:'in', text:'is in'},{ oper:'ni', text:'is not in'},{ oper:'ew', text:'ends with'},{ oper:'en', text:'does not end with'},{ oper:'cn', text:'contains'},{ oper:'nc', text:'does not contain'},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}], - groupOps: [ { op: "AND", text: "all" }, { op: "OR", text: "any" } ], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit : { - addCaption: "Adicionar Registo", - editCaption: "Modificar Registo", - bSubmit: "Submeter", - bCancel: "Cancelar", - bClose: "Fechar", - saveData: "Data has been changed! Save changes?", - bYes : "Yes", - bNo : "No", - bExit : "Cancel", - msg: { - required:"Campo obrigat�rio", - number:"Por favor, introduza um numero", - minValue:"O valor deve ser maior ou igual que", - maxValue:"O valor deve ser menor ou igual a", - email: "N�o � um endere�o de email v�lido", - integer: "Por favor, introduza um numero inteiro", - url: "is not a valid URL. Prefix required ('http://' or 'https://')", - nodefined : " is not defined!", - novalue : " return value is required!", - customarray : "Custom function should return array!", - customfcheck : "Custom function should be present in case of custom checking!" - } - }, - view : { - caption: "View Record", - bClose: "Close" - }, - del : { - caption: "Eliminar", - msg: "Deseja eliminar o(s) registo(s) seleccionado(s)?", - bSubmit: "Eliminar", - bCancel: "Cancelar" - }, - nav : { - edittext: " ", - edittitle: "Modificar registo seleccionado", - addtext:" ", - addtitle: "Adicionar novo registo", - deltext: " ", - deltitle: "Eliminar registo seleccionado", - searchtext: " ", - searchtitle: "Procurar", - refreshtext: "", - refreshtitle: "Actualizar", - alertcap: "Aviso", - alerttext: "Por favor, seleccione um registo", - viewtext: "", - viewtitle: "View selected row" - }, - col : { - caption: "Mostrar/Ocultar Colunas", - bSubmit: "Enviar", - bCancel: "Cancelar" - }, - errors : { - errcap : "Erro", - nourl : "N�o especificou um url", - norecords: "N�o existem dados para processar", - model : "Tamanho do colNames <> colModel!" - }, - formatter : { - integer : {thousandsSeparator: " ", defaultValue: '0'}, - number : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0.00'}, - currency : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0.00'}, - date : { - dayNames: [ - "Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sab", - "Domingo", "Segunda-Feira", "Ter�a-Feira", "Quarta-Feira", "Quinta-Feira", "Sexta-Feira", "S�bado" - ], - monthNames: [ - "Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez", - "Janeiro", "Fevereiro", "Mar�o", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro" - ], - AmPm : ["am","pm","AM","PM"], - S: function (j) {return j < 11 || j > 13 ? ['�', '�', '�', '�'][Math.min((j - 1) % 10, 3)] : '�'}, - srcformat: 'Y-m-d', - newformat: 'd/m/Y', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - ISO8601Long:"Y-m-d H:i:s", - ISO8601Short:"Y-m-d", - ShortDate: "n/j/Y", - LongDate: "l, F d, Y", - FullDateTime: "l, F d, Y g:i:s A", - MonthDay: "F d", - ShortTime: "g:i A", - LongTime: "g:i:s A", - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - YearMonth: "F, Y" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-ro.js b/assets/js/plugins/jqGrid/i18n/grid.locale-ro.js deleted file mode 100644 index ea6de246..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-ro.js +++ /dev/null @@ -1,141 +0,0 @@ -;(function($){ -/** - * jqGrid Romanian Translation - * Alexandru Emil Lupu contact@alecslupu.ro - * http://www.alecslupu.ro/ - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "Vizualizare {0} - {1} din {2}", - emptyrecords: "Nu există înregistrări de vizualizat", - loadtext: "Încărcare...", - pgtext : "Pagina {0} din {1}" - }, - search : { - caption: "Caută...", - Find: "Caută", - Reset: "Resetare", - odata: [{ oper:'eq', text:"egal"},{ oper:'ne', text:"diferit"},{ oper:'lt', text:"mai mic"},{ oper:'le', text:"mai mic sau egal"},{ oper:'gt', text:"mai mare"},{ oper:'ge', text:"mai mare sau egal"},{ oper:'bw', text:"începe cu"},{ oper:'bn', text:"nu începe cu"},{ oper:'in', text:"se găsește în"},{ oper:'ni', text:"nu se găsește în"},{ oper:'ew', text:"se termină cu"},{ oper:'en', text:"nu se termină cu"},{ oper:'cn', text:"conține"},{ oper:'nc', text:""},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}], - groupOps: [ { op: "AND", text: "toate" }, { op: "OR", text: "oricare" } ], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit : { - addCaption: "Adăugare înregistrare", - editCaption: "Modificare înregistrare", - bSubmit: "Salvează", - bCancel: "Anulare", - bClose: "Închide", - saveData: "Informațiile au fost modificate! Salvați modificările?", - bYes : "Da", - bNo : "Nu", - bExit : "Anulare", - msg: { - required:"Câmpul este obligatoriu", - number:"Vă rugăm introduceți un număr valid", - minValue:"valoarea trebuie sa fie mai mare sau egală cu", - maxValue:"valoarea trebuie sa fie mai mică sau egală cu", - email: "nu este o adresă de e-mail validă", - integer: "Vă rugăm introduceți un număr valid", - date: "Vă rugăm să introduceți o dată validă", - url: "Nu este un URL valid. Prefixul este necesar('http://' or 'https://')", - nodefined : " is not defined!", - novalue : " return value is required!", - customarray : "Custom function should return array!", - customfcheck : "Custom function should be present in case of custom checking!" - } - }, - view : { - caption: "Vizualizare înregistrare", - bClose: "Închidere" - }, - del : { - caption: "Ștegere", - msg: "Ștergeți înregistrarea (înregistrările) selectate?", - bSubmit: "Șterge", - bCancel: "Anulare" - }, - nav : { - edittext: "", - edittitle: "Modifică rândul selectat", - addtext:"", - addtitle: "Adaugă rând nou", - deltext: "", - deltitle: "Șterge rândul selectat", - searchtext: "", - searchtitle: "Căutare înregistrări", - refreshtext: "", - refreshtitle: "Reîncarcare Grid", - alertcap: "Avertisment", - alerttext: "Vă rugăm să selectați un rând", - viewtext: "", - viewtitle: "Vizualizează rândul selectat" - }, - col : { - caption: "Arată/Ascunde coloanele", - bSubmit: "Salvează", - bCancel: "Anulare" - }, - errors : { - errcap : "Eroare", - nourl : "Niciun url nu este setat", - norecords: "Nu sunt înregistrări de procesat", - model : "Lungimea colNames <> colModel!" - }, - formatter : { - integer : {thousandsSeparator: " ", defaultValue: '0'}, - number : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0,00'}, - currency : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0,00'}, - date : { - dayNames: [ - "Dum", "Lun", "Mar", "Mie", "Joi", "Vin", "Sâm", - "Duminică", "Luni", "Marți", "Miercuri", "Joi", "Vineri", "Sâmbătă" - ], - monthNames: [ - "Ian", "Feb", "Mar", "Apr", "Mai", "Iun", "Iul", "Aug", "Sep", "Oct", "Noi", "Dec", - "Ianuarie", "Februarie", "Martie", "Aprilie", "Mai", "Iunie", "Iulie", "August", "Septembrie", "Octombrie", "Noiembrie", "Decembrie" - ], - AmPm : ["am","pm","AM","PM"], - /* - Here is a problem in romanian: - M / F - 1st = primul / prima - 2nd = Al doilea / A doua - 3rd = Al treilea / A treia - 4th = Al patrulea/ A patra - 5th = Al cincilea / A cincea - 6th = Al șaselea / A șasea - 7th = Al șaptelea / A șaptea - .... - */ - S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'}, - srcformat: 'Y-m-d', - newformat: 'd/m/Y', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - ISO8601Long:"Y-m-d H:i:s", - ISO8601Short:"Y-m-d", - ShortDate: "n/j/Y", - LongDate: "l, F d, Y", - FullDateTime: "l, F d, Y g:i:s A", - MonthDay: "F d", - ShortTime: "g:i A", - LongTime: "g:i:s A", - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - YearMonth: "F, Y" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-ru.js b/assets/js/plugins/jqGrid/i18n/grid.locale-ru.js deleted file mode 100644 index 8809c198..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-ru.js +++ /dev/null @@ -1,129 +0,0 @@ -;(function($){ -/** - * jqGrid Russian Translation v1.0 02.07.2009 (based on translation by Alexey Kanaev v1.1 21.01.2009, http://softcore.com.ru) - * Sergey Dyagovchenko - * http://d.sumy.ua - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "Просмотр {0} - {1} из {2}", - emptyrecords: "Нет записей для просмотра", - loadtext: "Загрузка...", - pgtext : "Стр. {0} из {1}" - }, - search : { - caption: "Поиск...", - Find: "Найти", - Reset: "Сброс", - odata: [{ oper:'eq', text:"равно"},{ oper:'ne', text:"не равно"},{ oper:'lt', text:"меньше"},{ oper:'le', text:"меньше или равно"},{ oper:'gt', text:"больше"},{ oper:'ge', text:"больше или равно"},{ oper:'bw', text:"начинается с"},{ oper:'bn', text:"не начинается с"},{ oper:'in', text:"находится в"},{ oper:'ni', text:"не находится в"},{ oper:'ew', text:"заканчивается на"},{ oper:'en', text:"не заканчивается на"},{ oper:'cn', text:"содержит"},{ oper:'nc', text:"не содержит"},{ oper:'nu', text:"равно NULL"},{ oper:'nn', text:"не равно NULL"}], - groupOps: [ { op: "AND", text: "все" }, { op: "OR", text: "любой" }], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit : { - addCaption: "Добавить запись", - editCaption: "Редактировать запись", - bSubmit: "Сохранить", - bCancel: "Отмена", - bClose: "Закрыть", - saveData: "Данные были измененны! Сохранить изменения?", - bYes : "Да", - bNo : "Нет", - bExit : "Отмена", - msg: { - required:"Поле является обязательным", - number:"Пожалуйста, введите правильное число", - minValue:"значение должно быть больше либо равно", - maxValue:"значение должно быть меньше либо равно", - email: "некорректное значение e-mail", - integer: "Пожалуйста, введите целое число", - date: "Пожалуйста, введите правильную дату", - url: "неверная ссылка. Необходимо ввести префикс ('http://' или 'https://')", - nodefined : " не определено!", - novalue : " возвращаемое значение обязательно!", - customarray : "Пользовательская функция должна возвращать массив!", - customfcheck : "Пользовательская функция должна присутствовать в случаи пользовательской проверки!" - } - }, - view : { - caption: "Просмотр записи", - bClose: "Закрыть" - }, - del : { - caption: "Удалить", - msg: "Удалить выбранную запись(и)?", - bSubmit: "Удалить", - bCancel: "Отмена" - }, - nav : { - edittext: " ", - edittitle: "Редактировать выбранную запись", - addtext:" ", - addtitle: "Добавить новую запись", - deltext: " ", - deltitle: "Удалить выбранную запись", - searchtext: " ", - searchtitle: "Найти записи", - refreshtext: "", - refreshtitle: "Обновить таблицу", - alertcap: "Внимание", - alerttext: "Пожалуйста, выберите запись", - viewtext: "", - viewtitle: "Просмотреть выбранную запись" - }, - col : { - caption: "Показать/скрыть столбцы", - bSubmit: "Сохранить", - bCancel: "Отмена" - }, - errors : { - errcap : "Ошибка", - nourl : "URL не установлен", - norecords: "Нет записей для обработки", - model : "Число полей не соответствует числу столбцов таблицы!" - }, - formatter : { - integer : {thousandsSeparator: " ", defaultValue: '0'}, - number : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0,00'}, - currency : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0,00'}, - date : { - dayNames: [ - "Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб", - "Воскресение", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота" - ], - monthNames: [ - "Янв", "Фев", "Мар", "Апр", "Май", "Июн", "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек", - "Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь" - ], - AmPm : ["am","pm","AM","PM"], - S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th';}, - srcformat: 'Y-m-d', - newformat: 'd.m.Y', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - ISO8601Long:"Y-m-d H:i:s", - ISO8601Short:"Y-m-d", - ShortDate: "n.j.Y", - LongDate: "l, F d, Y", - FullDateTime: "l, F d, Y G:i:s", - MonthDay: "F d", - ShortTime: "G:i", - LongTime: "G:i:s", - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - YearMonth: "F, Y" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-sk.js b/assets/js/plugins/jqGrid/i18n/grid.locale-sk.js deleted file mode 100644 index 9c044aa1..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-sk.js +++ /dev/null @@ -1,129 +0,0 @@ -;(function($){ -/** - * jqGrid Slovak Translation - * Milan Cibulka - * http://trirand.com/blog/ - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "Zobrazených {0} - {1} z {2} záznamov", - emptyrecords: "Neboli nájdené žiadne záznamy", - loadtext: "Načítám...", - pgtext : "Strana {0} z {1}" - }, - search : { - caption: "Vyhľadávam...", - Find: "Hľadať", - Reset: "Reset", - odata: [{ oper:'eq', text:"rovná sa"},{ oper:'ne', text:"nerovná sa"},{ oper:'lt', text:"menšie"},{ oper:'le', text:"menšie alebo rovnajúce sa"},{ oper:'gt', text:"väčšie"},{ oper:'ge', text:"väčšie alebo rovnajúce sa"},{ oper:'bw', text:"začína s"},{ oper:'bn', text:"nezačína s"},{ oper:'in', text:"je v"},{ oper:'ni', text:"nie je v"},{ oper:'ew', text:"končí s"},{ oper:'en', text:"nekončí s"},{ oper:'cn', text:"obahuje"},{ oper:'nc', text:"neobsahuje"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}], - groupOps: [ { op: "AND", text: "všetkých" }, { op: "OR", text: "niektorého z" } ], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit : { - addCaption: "Pridať záznam", - editCaption: "Editácia záznamov", - bSubmit: "Uložiť", - bCancel: "Storno", - bClose: "Zavrieť", - saveData: "Údaje boli zmenené! Uložiť zmeny?", - bYes : "Ano", - bNo : "Nie", - bExit : "Zrušiť", - msg: { - required:"Pole je požadované", - number:"Prosím, vložte valídne číslo", - minValue:"hodnota musí býť väčšia ako alebo rovná ", - maxValue:"hodnota musí býť menšia ako alebo rovná ", - email: "nie je valídny e-mail", - integer: "Prosím, vložte celé číslo", - date: "Prosím, vložte valídny dátum", - url: "nie je platnou URL. Požadovaný prefix ('http://' alebo 'https://')", - nodefined : " nie je definovaný!", - novalue : " je vyžadovaná návratová hodnota!", - customarray : "Custom function mala vrátiť pole!", - customfcheck : "Custom function by mala byť prítomná v prípade custom checking!" - } - }, - view : { - caption: "Zobraziť záznam", - bClose: "Zavrieť" - }, - del : { - caption: "Zmazať", - msg: "Zmazať vybraný(é) záznam(y)?", - bSubmit: "Zmazať", - bCancel: "Storno" - }, - nav : { - edittext: " ", - edittitle: "Editovať vybraný riadok", - addtext:" ", - addtitle: "Pridať nový riadek", - deltext: " ", - deltitle: "Zmazať vybraný záznam ", - searchtext: " ", - searchtitle: "Nájsť záznamy", - refreshtext: "", - refreshtitle: "Obnoviť tabuľku", - alertcap: "Varovanie", - alerttext: "Prosím, vyberte riadok", - viewtext: "", - viewtitle: "Zobraziť vybraný riadok" - }, - col : { - caption: "Zobrazit/Skrýť stĺpce", - bSubmit: "Uložiť", - bCancel: "Storno" - }, - errors : { - errcap : "Chyba", - nourl : "Nie je nastavená url", - norecords: "Žiadne záznamy k spracovaniu", - model : "Dĺžka colNames <> colModel!" - }, - formatter : { - integer : {thousandsSeparator: " ", defaultValue: '0'}, - number : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0.00'}, - currency : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0.00'}, - date : { - dayNames: [ - "Ne", "Po", "Ut", "St", "Št", "Pi", "So", - "Nedela", "Pondelok", "Utorok", "Streda", "Štvrtok", "Piatek", "Sobota" - ], - monthNames: [ - "Jan", "Feb", "Mar", "Apr", "Máj", "Jún", "Júl", "Aug", "Sep", "Okt", "Nov", "Dec", - "Január", "Február", "Marec", "Apríl", "Máj", "Jún", "Júl", "August", "September", "Október", "November", "December" - ], - AmPm : ["do","od","DO","OD"], - S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'}, - srcformat: 'Y-m-d', - newformat: 'd/m/Y', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - ISO8601Long:"Y-m-d H:i:s", - ISO8601Short:"Y-m-d", - ShortDate: "n/j/Y", - LongDate: "l, F d, Y", - FullDateTime: "l, F d, Y g:i:s A", - MonthDay: "F d", - ShortTime: "g:i A", - LongTime: "g:i:s A", - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - YearMonth: "F, Y" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-sr-latin.js b/assets/js/plugins/jqGrid/i18n/grid.locale-sr-latin.js deleted file mode 100644 index 075c1b79..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-sr-latin.js +++ /dev/null @@ -1,130 +0,0 @@ -;(function($){ -/** - * jqGrid Serbian latin Translation - * Bild Studio info@bild-studio.net - * http://www.bild-studio.com - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "Pregled {0} - {1} od {2}", - emptyrecords: "Ne postoji nijedan zapis", - loadtext: "Učitavanje…", - pgtext : "Strana {0} od {1}" - }, - search : { - caption: "Traženje...", - Find: "Traži", - Reset: "Resetuj", - odata: [{ oper:'eq', text:"jednako"},{ oper:'ne', text:"nije jednako"},{ oper:'lt', text:"manje"},{ oper:'le', text:"manje ili jednako"},{ oper:'gt', text:"veće"},{ oper:'ge', text:"veće ili jednako"},{ oper:'bw', text:"počinje sa"},{ oper:'bn', text:"ne počinje sa"},{ oper:'in', text:"je u"},{ oper:'ni', text:"nije u"},{ oper:'ew', text:"završava sa"},{ oper:'en', text:"ne završava sa"},{ oper:'cn', text:"sadrži"},{ oper:'nc', text:"ne sadrži"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}], - groupOps: [ { op: "AND", text: "sva" }, { op: "OR", text: "bilo koje" } ], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit : { - addCaption: "Dodaj zapis", - editCaption: "Izmeni zapis", - bSubmit: "Pošalji", - bCancel: "Odustani", - bClose: "Zatvori", - saveData: "Podatak je izmenjen! Sačuvaj izmene?", - bYes : "Da", - bNo : "Ne", - bExit : "Odustani", - msg: { - required: "Polje je obavezno", - number: "Unesite ispravan broj", - minValue: "vrednost mora biti veća od ili jednaka sa ", - maxValue: "vrednost mora biti manja ili jednaka sa", - email: "nije ispravna email adresa, nije valjda da ne umeš ukucati mail!?", - integer: "Unesi celobrojnu vrednost ", - date: "Unesite ispravan datum", - url: "nije ispravan URL. Potreban je prefiks ('http://' or 'https://')", - nodefined : " nije definisan!", - novalue : " zahtevana je povratna vrednost!", - customarray : "Prilagođena funkcija treba da vrati niz!", - customfcheck : "Prilagođena funkcija treba da bude prisutana u slučaju prilagođene provere!" - - } - }, - view : { - caption: "Pogledaj zapis", - bClose: "Zatvori" - }, - del : { - caption: "Izbrisi", - msg: "Izbrisi izabran(e) zapise(e)?", - bSubmit: "Izbriši", - bCancel: "Odbaci" - }, - nav : { - edittext: "", - edittitle: "Izmeni izabrani red", - addtext:"", - addtitle: "Dodaj novi red", - deltext: "", - deltitle: "Izbriši izabran red", - searchtext: "", - searchtitle: "Nađi zapise", - refreshtext: "", - refreshtitle: "Ponovo učitaj podatke", - alertcap: "Upozorenje", - alerttext: "Izaberite red", - viewtext: "", - viewtitle: "Pogledaj izabrani red" - }, - col : { - caption: "Izaberi kolone", - bSubmit: "OK", - bCancel: "Odbaci" - }, - errors : { - errcap : "Greška", - nourl : "Nije postavljen URL", - norecords: "Nema zapisa za obradu", - model : "Dužina modela colNames <> colModel!" - }, - formatter : { - integer : {thousandsSeparator: " ", defaultValue: '0'}, - number : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0.00'}, - currency : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0.00'}, - date : { - dayNames: [ - "Ned", "Pon", "Uto", "Sre", "Čet", "Pet", "Sub", - "Nedelja", "Ponedeljak", "Utorak", "Srijeda", "Četvrtak", "Petak", "Subota" - ], - monthNames: [ - "Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Avg", "Sep", "Okt", "Nov", "Dec", - "Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar" - ], - AmPm : ["am","pm","AM","PM"], - S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'}, - srcformat: 'Y-m-d', - newformat: 'd/m/Y', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - ISO8601Long:"Y-m-d H:i:s", - ISO8601Short:"Y-m-d", - ShortDate: "n/j/Y", - LongDate: "l, F d, Y", - FullDateTime: "l, F d, Y g:i:s A", - MonthDay: "F d", - ShortTime: "g:i A", - LongTime: "g:i:s A", - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - YearMonth: "F, Y" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-sr.js b/assets/js/plugins/jqGrid/i18n/grid.locale-sr.js deleted file mode 100644 index 4e2f4701..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-sr.js +++ /dev/null @@ -1,130 +0,0 @@ -;(function($){ -/** - * jqGrid Serbian Translation - * Александар Миловац(Aleksandar Milovac) aleksandar.milovac@gmail.com - * http://trirand.com/blog/ - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "Преглед {0} - {1} од {2}", - emptyrecords: "Не постоји ниједан запис", - loadtext: "Учитавање...", - pgtext : "Страна {0} од {1}" - }, - search : { - caption: "Тражење...", - Find: "Тражи", - Reset: "Ресетуј", - odata: [{ oper:'eq', text:"једнако"},{ oper:'ne', text:"није једнако"},{ oper:'lt', text:"мање"},{ oper:'le', text:"мање или једнако"},{ oper:'gt', text:"веће"},{ oper:'ge', text:"веће или једнако"},{ oper:'bw', text:"почиње са"},{ oper:'bn', text:"не почиње са"},{ oper:'in', text:"је у"},{ oper:'ni', text:"није у"},{ oper:'ew', text:"завршава са"},{ oper:'en', text:"не завршава са"},{ oper:'cn', text:"садржи"},{ oper:'nc', text:"не садржи"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}], - groupOps: [ { op: "И", text: "сви" }, { op: "ИЛИ", text: "сваки" } ], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit : { - addCaption: "Додај запис", - editCaption: "Измени запис", - bSubmit: "Пошаљи", - bCancel: "Одустани", - bClose: "Затвори", - saveData: "Податак је измењен! Сачувај измене?", - bYes : "Да", - bNo : "Не", - bExit : "Одустани", - msg: { - required:"Поље је обавезно", - number:"Молим, унесите исправан број", - minValue:"вредност мора бити већа од или једнака са ", - maxValue:"вредност мора бити мања од или једнака са", - email: "није исправна имејл адреса", - integer: "Молим, унесите исправну целобројну вредност ", - date: "Молим, унесите исправан датум", - url: "није исправан УРЛ. Потребан је префикс ('http://' or 'https://')", - nodefined : " није дефинисан!", - novalue : " захтевана је повратна вредност!", - customarray : "Custom function should return array!", - customfcheck : "Custom function should be present in case of custom checking!" - - } - }, - view : { - caption: "Погледај запис", - bClose: "Затвори" - }, - del : { - caption: "Избриши", - msg: "Избриши изабран(е) запис(е)?", - bSubmit: "Ибриши", - bCancel: "Одбаци" - }, - nav : { - edittext: "", - edittitle: "Измени изабрани ред", - addtext:"", - addtitle: "Додај нови ред", - deltext: "", - deltitle: "Избриши изабран ред", - searchtext: "", - searchtitle: "Нађи записе", - refreshtext: "", - refreshtitle: "Поново учитај податке", - alertcap: "Упозорење", - alerttext: "Молим, изаберите ред", - viewtext: "", - viewtitle: "Погледај изабрани ред" - }, - col : { - caption: "Изабери колоне", - bSubmit: "ОК", - bCancel: "Одбаци" - }, - errors : { - errcap : "Грешка", - nourl : "Није постављен URL", - norecords: "Нема записа за обраду", - model : "Дужина модела colNames <> colModel!" - }, - formatter : { - integer : {thousandsSeparator: " ", defaultValue: '0'}, - number : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0.00'}, - currency : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0.00'}, - date : { - dayNames: [ - "Нед", "Пон", "Уто", "Сре", "Чет", "Пет", "Суб", - "Недеља", "Понедељак", "Уторак", "Среда", "Четвртак", "Петак", "Субота" - ], - monthNames: [ - "Јан", "Феб", "Мар", "Апр", "Мај", "Јун", "Јул", "Авг", "Сеп", "Окт", "Нов", "Дец", - "Јануар", "Фебруар", "Март", "Април", "Мај", "Јун", "Јул", "Август", "Септембар", "Октобар", "Новембар", "Децембар" - ], - AmPm : ["am","pm","AM","PM"], - S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'}, - srcformat: 'Y-m-d', - newformat: 'd/m/Y', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - ISO8601Long:"Y-m-d H:i:s", - ISO8601Short:"Y-m-d", - ShortDate: "n/j/Y", - LongDate: "l, F d, Y", - FullDateTime: "l, F d, Y g:i:s A", - MonthDay: "F d", - ShortTime: "g:i A", - LongTime: "g:i:s A", - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - YearMonth: "F, Y" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-sv.js b/assets/js/plugins/jqGrid/i18n/grid.locale-sv.js deleted file mode 100644 index d47220df..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-sv.js +++ /dev/null @@ -1,129 +0,0 @@ -;(function($){ -/** - * jqGrid Swedish Translation - * Harald Normann harald.normann@wts.se, harald.normann@gmail.com - * http://www.worldteamsoftware.com - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "Visar {0} - {1} av {2}", - emptyrecords: "Det finns inga poster att visa", - loadtext: "Laddar...", - pgtext : "Sida {0} av {1}" - }, - search : { - caption: "Sök Poster - Ange sökvillkor", - Find: "Sök", - Reset: "Nollställ Villkor", - odata: [{ oper:'eq', text:"lika"},{ oper:'ne', text:"ej lika"},{ oper:'lt', text:"mindre"},{ oper:'le', text:"mindre eller lika"},{ oper:'gt', text:"större"},{ oper:'ge', text:"större eller lika"},{ oper:'bw', text:"börjar med"},{ oper:'bn', text:"börjar inte med"},{ oper:'in', text:"tillhör"},{ oper:'ni', text:"tillhör inte"},{ oper:'ew', text:"slutar med"},{ oper:'en', text:"slutar inte med"},{ oper:'cn', text:"innehåller"},{ oper:'nc', text:"innehåller inte"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}], - groupOps: [ { op: "AND", text: "alla" }, { op: "OR", text: "eller" } ], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit : { - addCaption: "Ny Post", - editCaption: "Redigera Post", - bSubmit: "Spara", - bCancel: "Avbryt", - bClose: "Stäng", - saveData: "Data har ändrats! Spara förändringar?", - bYes : "Ja", - bNo : "Nej", - bExit : "Avbryt", - msg: { - required:"Fältet är obligatoriskt", - number:"Välj korrekt nummer", - minValue:"värdet måste vara större än eller lika med", - maxValue:"värdet måste vara mindre än eller lika med", - email: "är inte korrekt e-post adress", - integer: "Var god ange korrekt heltal", - date: "Var god ange korrekt datum", - url: "är inte en korrekt URL. Prefix måste anges ('http://' or 'https://')", - nodefined : " är inte definierad!", - novalue : " returvärde måste anges!", - customarray : "Custom funktion måste returnera en vektor!", - customfcheck : "Custom funktion måste finnas om Custom kontroll sker!" - } - }, - view : { - caption: "Visa Post", - bClose: "Stäng" - }, - del : { - caption: "Radera", - msg: "Radera markerad(e) post(er)?", - bSubmit: "Radera", - bCancel: "Avbryt" - }, - nav : { - edittext: "", - edittitle: "Redigera markerad rad", - addtext:"", - addtitle: "Skapa ny post", - deltext: "", - deltitle: "Radera markerad rad", - searchtext: "", - searchtitle: "Sök poster", - refreshtext: "", - refreshtitle: "Uppdatera data", - alertcap: "Varning", - alerttext: "Ingen rad är markerad", - viewtext: "", - viewtitle: "Visa markerad rad" - }, - col : { - caption: "Välj Kolumner", - bSubmit: "OK", - bCancel: "Avbryt" - }, - errors : { - errcap : "Fel", - nourl : "URL saknas", - norecords: "Det finns inga poster att bearbeta", - model : "Antal colNames <> colModel!" - }, - formatter : { - integer : {thousandsSeparator: " ", defaultValue: '0'}, - number : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0,00'}, - currency : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"Kr", defaultValue: '0,00'}, - date : { - dayNames: [ - "Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör", - "Söndag", "Måndag", "Tisdag", "Onsdag", "Torsdag", "Fredag", "Lördag" - ], - monthNames: [ - "Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec", - "Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December" - ], - AmPm : ["fm","em","FM","EM"], - S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'}, - srcformat: 'Y-m-d', - newformat: 'Y-m-d', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - ISO8601Long:"Y-m-d H:i:s", - ISO8601Short:"Y-m-d", - ShortDate: "n/j/Y", - LongDate: "l, F d, Y", - FullDateTime: "l, F d, Y g:i:s A", - MonthDay: "F d", - ShortTime: "g:i A", - LongTime: "g:i:s A", - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - YearMonth: "F, Y" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-th.js b/assets/js/plugins/jqGrid/i18n/grid.locale-th.js deleted file mode 100644 index ab81d1f3..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-th.js +++ /dev/null @@ -1,130 +0,0 @@ -;(function($){ -/** - * jqGrid Thai Translation - * Kittituch Manakul m.kittituch@Gmail.com - * http://trirand.com/blog/ - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "แสดง {0} - {1} จาก {2}", - emptyrecords: "ไม่พบข้อมูล", - loadtext: "กำลังร้องขอข้อมูล...", - pgtext : "หน้า {0} จาก {1}" - }, - search : { - caption: "กำลังค้นหา...", - Find: "ค้นหา", - Reset: "คืนค่ากลับ", - odata: [{ oper:'eq', text:"เท่ากับ"},{ oper:'ne', text:"ไม่เท่ากับ"},{ oper:'lt', text:"น้อยกว่า"},{ oper:'le', text:"ไม่มากกว่า"},{ oper:'gt', text:"มากกกว่า"},{ oper:'ge', text:"ไม่น้อยกว่า"},{ oper:'bw', text:"ขึ้นต้นด้วย"},{ oper:'bn', text:"ไม่ขึ้นต้นด้วย"},{ oper:'in', text:"มีคำใดคำหนึ่งใน"},{ oper:'ni', text:"ไม่มีคำใดคำหนึ่งใน"},{ oper:'ew', text:"ลงท้ายด้วย"},{ oper:'en', text:"ไม่ลงท้ายด้วย"},{ oper:'cn', text:"มีคำว่า"},{ oper:'nc', text:"ไม่มีคำว่า"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}], - groupOps: [ { op: "และ", text: "ทั้งหมด" }, { op: "หรือ", text: "ใดๆ" } ], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit : { - addCaption: "เพิ่มข้อมูล", - editCaption: "แก้ไขข้อมูล", - bSubmit: "บันทึก", - bCancel: "ยกเลิก", - bClose: "ปิด", - saveData: "คุณต้องการบันทึการแก้ไข ใช่หรือไม่?", - bYes : "บันทึก", - bNo : "ละทิ้งการแก้ไข", - bExit : "ยกเลิก", - msg: { - required:"ข้อมูลนี้จำเป็น", - number:"กรุณากรอกหมายเลขให้ถูกต้อง", - minValue:"ค่าของข้อมูลนี้ต้องไม่น้อยกว่า", - maxValue:"ค่าของข้อมูลนี้ต้องไม่มากกว่า", - email: "อีเมลล์นี้ไม่ถูกต้อง", - integer: "กรุณากรอกเป็นจำนวนเต็ม", - date: "กรุณากรอกวันที่ให้ถูกต้อง", - url: "URL ไม่ถูกต้อง URL จำเป็นต้องขึ้นต้นด้วย 'http://' หรือ 'https://'", - nodefined : "ไม่ได้ถูกกำหนดค่า!", - novalue : "ต้องการการคืนค่า!", - customarray : "ฟังก์ชันที่สร้างขึ้นต้องส่งค่ากลับเป็นแบบแอเรย์", - customfcheck : "ระบบต้องการฟังก์ชันที่สร้างขึ้นสำหรับการตรวจสอบ!" - - } - }, - view : { - caption: "เรียกดูข้อมูล", - bClose: "ปิด" - }, - del : { - caption: "ลบข้อมูล", - msg: "คุณต้องการลบข้อมูลที่ถูกเลือก ใช่หรือไม่?", - bSubmit: "ต้องการลบ", - bCancel: "ยกเลิก" - }, - nav : { - edittext: "", - edittitle: "แก้ไขข้อมูล", - addtext:"", - addtitle: "เพิ่มข้อมูล", - deltext: "", - deltitle: "ลบข้อมูล", - searchtext: "", - searchtitle: "ค้นหาข้อมูล", - refreshtext: "", - refreshtitle: "รีเฟรช", - alertcap: "คำเตือน", - alerttext: "กรุณาเลือกข้อมูล", - viewtext: "", - viewtitle: "ดูรายละเอียดข้อมูล" - }, - col : { - caption: "กรุณาเลือกคอลัมน์", - bSubmit: "ตกลง", - bCancel: "ยกเลิก" - }, - errors : { - errcap : "เกิดความผิดพลาด", - nourl : "ไม่ได้กำหนด URL", - norecords: "ไม่มีข้อมูลให้ดำเนินการ", - model : "จำนวนคอลัมน์ไม่เท่ากับจำนวนคอลัมน์โมเดล!" - }, - formatter : { - integer : {thousandsSeparator: " ", defaultValue: '0'}, - number : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0.00'}, - currency : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0.00'}, - date : { - dayNames: [ - "อา", "จ", "อ", "พ", "พฤ", "ศ", "ส", - "อาทิตย์", "จันทร์", "อังคาร", "พุธ", "พฤหัสบดี", "ศูกร์", "เสาร์" - ], - monthNames: [ - "ม.ค.", "ก.พ.", "มี.ค.", "เม.ย.", "พ.ค.", "มิ.ย.", "ก.ค.", "ส.ค.", "ก.ย.", "ต.ค.", "พ.ย.", "ธ.ค.", - "มกราคม", "กุมภาพันธ์", "มีนาคม", "เมษายน", "พฤษภาคม", "มิถุนายน", "กรกฏาคม", "สิงหาคม", "กันยายน", "ตุลาคม", "พฤศจิกายน", "ธันวาคม" - ], - AmPm : ["am","pm","AM","PM"], - S: function (j) {return ''}, - srcformat: 'Y-m-d', - newformat: 'd/m/Y', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - ISO8601Long:"Y-m-d H:i:s", - ISO8601Short:"Y-m-d", - ShortDate: "n/j/Y", - LongDate: "l, F d, Y", - FullDateTime: "l, F d, Y g:i:s A", - MonthDay: "F d", - ShortTime: "g:i A", - LongTime: "g:i:s A", - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - YearMonth: "F, Y" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-tr.js b/assets/js/plugins/jqGrid/i18n/grid.locale-tr.js deleted file mode 100644 index 57b8048b..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-tr.js +++ /dev/null @@ -1,128 +0,0 @@ -;(function($){ -/** - * jqGrid Turkish Translation - * Erhan Gündoğan (erhan@trposta.net) - * http://blog.zakkum.com - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "{0}-{1} listeleniyor. Toplam:{2}", - emptyrecords: "Kayıt bulunamadı", - loadtext: "Yükleniyor...", - pgtext : "{0}/{1}. Sayfa" - }, - search : { - caption: "Arama...", - Find: "Bul", - Reset: "Temizle", - odata: [{ oper:'eq', text:"eşit"},{ oper:'ne', text:"eşit değil"},{ oper:'lt', text:"daha az"},{ oper:'le', text:"daha az veya eşit"},{ oper:'gt', text:"daha fazla"},{ oper:'ge', text:"daha fazla veya eşit"},{ oper:'bw', text:"ile başlayan"},{ oper:'bn', text:"ile başlamayan"},{ oper:'in', text:"içinde"},{ oper:'ni', text:"içinde değil"},{ oper:'ew', text:"ile biten"},{ oper:'en', text:"ile bitmeyen"},{ oper:'cn', text:"içeren"},{ oper:'nc', text:"içermeyen"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}], - groupOps: [ { op: "VE", text: "tüm" }, { op: "VEYA", text: "herhangi" }], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit : { - addCaption: "Kayıt Ekle", - editCaption: "Kayıt Düzenle", - bSubmit: "Gönder", - bCancel: "İptal", - bClose: "Kapat", - saveData: "Veriler değişti! Kayıt edilsin mi?", - bYes : "Evet", - bNo : "Hayıt", - bExit : "İptal", - msg: { - required:"Alan gerekli", - number:"Lütfen bir numara giriniz", - minValue:"girilen değer daha büyük ya da buna eşit olmalıdır", - maxValue:"girilen değer daha küçük ya da buna eşit olmalıdır", - email: "geçerli bir e-posta adresi değildir", - integer: "Lütfen bir tamsayı giriniz", - url: "Geçerli bir URL değil. ('http://' or 'https://') ön eki gerekli.", - nodefined : " is not defined!", - novalue : " return value is required!", - customarray : "Custom function should return array!", - customfcheck : "Custom function should be present in case of custom checking!" - } - }, - view : { - caption: "Kayıt Görüntüle", - bClose: "Kapat" - }, - del : { - caption: "Sil", - msg: "Seçilen kayıtlar silinsin mi?", - bSubmit: "Sil", - bCancel: "İptal" - }, - nav : { - edittext: " ", - edittitle: "Seçili satırı düzenle", - addtext:" ", - addtitle: "Yeni satır ekle", - deltext: " ", - deltitle: "Seçili satırı sil", - searchtext: " ", - searchtitle: "Kayıtları bul", - refreshtext: "", - refreshtitle: "Tabloyu yenile", - alertcap: "Uyarı", - alerttext: "Lütfen bir satır seçiniz", - viewtext: "", - viewtitle: "Seçilen satırı görüntüle" - }, - col : { - caption: "Sütunları göster/gizle", - bSubmit: "Gönder", - bCancel: "İptal" - }, - errors : { - errcap : "Hata", - nourl : "Bir url yapılandırılmamış", - norecords: "İşlem yapılacak bir kayıt yok", - model : "colNames uzunluğu <> colModel!" - }, - formatter : { - integer : {thousandsSeparator: " ", defaultValue: '0'}, - number : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0.00'}, - currency : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0.00'}, - date : { - dayNames: [ - "Paz", "Pts", "Sal", "Çar", "Per", "Cum", "Cts", - "Pazar", "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi" - ], - monthNames: [ - "Oca", "Şub", "Mar", "Nis", "May", "Haz", "Tem", "Ağu", "Eyl", "Eki", "Kas", "Ara", - "Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık" - ], - AmPm : ["am","pm","AM","PM"], - S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'}, - srcformat: 'Y-m-d', - newformat: 'd/m/Y', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - ISO8601Long:"Y-m-d H:i:s", - ISO8601Short:"Y-m-d", - ShortDate: "n/j/Y", - LongDate: "l, F d, Y", - FullDateTime: "l, F d, Y g:i:s A", - MonthDay: "F d", - ShortTime: "g:i A", - LongTime: "g:i:s A", - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - YearMonth: "F, Y" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-tw.js b/assets/js/plugins/jqGrid/i18n/grid.locale-tw.js deleted file mode 100644 index 87d33ba0..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-tw.js +++ /dev/null @@ -1,131 +0,0 @@ -;(function($){ -/** - * jqGrid Chinese (Taiwan) Translation for v4.2 - * linquize - * https://github.com/linquize/jqGrid - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html - * -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "{0} - {1} 共 {2} 條", - emptyrecords: "沒有記錄", - loadtext: "載入中...", - pgtext : " {0} 共 {1} 頁" - }, - search : { - caption: "搜尋...", - Find: "搜尋", - Reset: "重設", - odata: [{ oper:'eq', text:"等於 "},{ oper:'ne', text:"不等於 "},{ oper:'lt', text:"小於 "},{ oper:'le', text:"小於等於 "},{ oper:'gt', text:"大於 "},{ oper:'ge', text:"大於等於 "},{ oper:'bw', text:"開始於 "},{ oper:'bn', text:"不開始於 "},{ oper:'in', text:"在其中 "},{ oper:'ni', text:"不在其中 "},{ oper:'ew', text:"結束於 "},{ oper:'en', text:"不結束於 "},{ oper:'cn', text:"包含 "},{ oper:'nc', text:"不包含 "},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}], - groupOps: [ { op: "AND", text: "所有" }, { op: "OR", text: "任一" } ], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit : { - addCaption: "新增記錄", - editCaption: "編輯記錄", - bSubmit: "提交", - bCancel: "取消", - bClose: "關閉", - saveData: "資料已改變,是否儲存?", - bYes : "是", - bNo : "否", - bExit : "取消", - msg: { - required:"此欄必要", - number:"請輸入有效的數字", - minValue:"值必須大於等於 ", - maxValue:"值必須小於等於 ", - email: "不是有效的e-mail地址", - integer: "請輸入有效整数", - date: "請輸入有效時間", - url: "網址無效。前綴必須為 ('http://' 或 'https://')", - nodefined : " 未定義!", - novalue : " 需要傳回值!", - customarray : "自訂函數應傳回陣列!", - customfcheck : "自訂檢查應有自訂函數!" - - } - }, - view : { - caption: "查看記錄", - bClose: "關閉" - }, - del : { - caption: "刪除", - msg: "刪除已選記錄?", - bSubmit: "刪除", - bCancel: "取消" - }, - nav : { - edittext: "", - edittitle: "編輯已選列", - addtext:"", - addtitle: "新增列", - deltext: "", - deltitle: "刪除已選列", - searchtext: "", - searchtitle: "搜尋記錄", - refreshtext: "", - refreshtitle: "重新整理表格", - alertcap: "警告", - alerttext: "請選擇列", - viewtext: "", - viewtitle: "檢視已選列" - }, - col : { - caption: "選擇欄", - bSubmit: "確定", - bCancel: "取消" - }, - errors : { - errcap : "錯誤", - nourl : "未設定URL", - norecords: "無需要處理的記錄", - model : "colNames 和 colModel 長度不同!" - }, - formatter : { - integer : {thousandsSeparator: " ", defaultValue: '0'}, - number : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0.00'}, - currency : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0.00'}, - date : { - dayNames: [ - "日", "一", "二", "三", "四", "五", "六", - "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" - ], - monthNames: [ - "一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二", - "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月" - ], - AmPm : ["上午","下午","上午","下午"], - S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th';}, - srcformat: 'Y-m-d', - newformat: 'm-d-Y', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - ISO8601Long:"Y-m-d H:i:s", - ISO8601Short:"Y-m-d", - ShortDate: "Y/j/n", - LongDate: "l, F d, Y", - FullDateTime: "l, F d, Y g:i:s A", - MonthDay: "F d", - ShortTime: "g:i A", - LongTime: "g:i:s A", - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - YearMonth: "F, Y" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-ua.js b/assets/js/plugins/jqGrid/i18n/grid.locale-ua.js deleted file mode 100644 index 4ff495df..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-ua.js +++ /dev/null @@ -1,129 +0,0 @@ -;(function($){ -/** - * jqGrid Ukrainian Translation v1.0 02.07.2009 - * Sergey Dyagovchenko - * http://d.sumy.ua - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "Перегляд {0} - {1} з {2}", - emptyrecords: "Немає записів для перегляду", - loadtext: "Завантаження...", - pgtext : "Стор. {0} з {1}" - }, - search : { - caption: "Пошук...", - Find: "Знайти", - Reset: "Скидання", - odata: [{ oper:'eq', text:"рівно"},{ oper:'ne', text:"не рівно"},{ oper:'lt', text:"менше"},{ oper:'le', text:"менше або рівне"},{ oper:'gt', text:"більше"},{ oper:'ge', text:"більше або рівне"},{ oper:'bw', text:"починається з"},{ oper:'bn', text:"не починається з"},{ oper:'in', text:"знаходиться в"},{ oper:'ni', text:"не знаходиться в"},{ oper:'ew', text:"закінчується на"},{ oper:'en', text:"не закінчується на"},{ oper:'cn', text:"містить"},{ oper:'nc', text:"не містить"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}], - groupOps: [ { op: "AND", text: "все" }, { op: "OR", text: "будь-який" }], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit : { - addCaption: "Додати запис", - editCaption: "Змінити запис", - bSubmit: "Зберегти", - bCancel: "Відміна", - bClose: "Закрити", - saveData: "До данних були внесені зміни! Зберегти зміни?", - bYes : "Так", - bNo : "Ні", - bExit : "Відміна", - msg: { - required:"Поле є обов'язковим", - number:"Будь ласка, введіть правильне число", - minValue:"значення повинне бути більше або дорівнює", - maxValue:"значення повинно бути менше або дорівнює", - email: "некоректна адреса електронної пошти", - integer: "Будь ласка, введення дійсне ціле значення", - date: "Будь ласка, введення дійсне значення дати", - url: "не дійсний URL. Необхідна приставка ('http://' or 'https://')", - nodefined : " is not defined!", - novalue : " return value is required!", - customarray : "Custom function should return array!", - customfcheck : "Custom function should be present in case of custom checking!" - } - }, - view : { - caption: "Переглянути запис", - bClose: "Закрити" - }, - del : { - caption: "Видалити", - msg: "Видалити обраний запис(и)?", - bSubmit: "Видалити", - bCancel: "Відміна" - }, - nav : { - edittext: " ", - edittitle: "Змінити вибраний запис", - addtext:" ", - addtitle: "Додати новий запис", - deltext: " ", - deltitle: "Видалити вибраний запис", - searchtext: " ", - searchtitle: "Знайти записи", - refreshtext: "", - refreshtitle: "Оновити таблицю", - alertcap: "Попередження", - alerttext: "Будь ласка, виберіть запис", - viewtext: "", - viewtitle: "Переглянути обраний запис" - }, - col : { - caption: "Показати/Приховати стовпці", - bSubmit: "Зберегти", - bCancel: "Відміна" - }, - errors : { - errcap : "Помилка", - nourl : "URL не задан", - norecords: "Немає записів для обробки", - model : "Число полів не відповідає числу стовпців таблиці!" - }, - formatter : { - integer : {thousandsSeparator: " ", defaultValue: '0'}, - number : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0,00'}, - currency : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0,00'}, - date : { - dayNames: [ - "Нд", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб", - "Неділя", "Понеділок", "Вівторок", "Середа", "Четвер", "П'ятниця", "Субота" - ], - monthNames: [ - "Січ", "Лют", "Бер", "Кві", "Тра", "Чер", "Лип", "Сер", "Вер", "Жов", "Лис", "Гру", - "Січень", "Лютий", "Березень", "Квітень", "Травень", "Червень", "Липень", "Серпень", "Вересень", "Жовтень", "Листопад", "Грудень" - ], - AmPm : ["am","pm","AM","PM"], - S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'}, - srcformat: 'Y-m-d', - newformat: 'd.m.Y', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - ISO8601Long:"Y-m-d H:i:s", - ISO8601Short:"Y-m-d", - ShortDate: "n.j.Y", - LongDate: "l, F d, Y", - FullDateTime: "l, F d, Y G:i:s", - MonthDay: "F d", - ShortTime: "G:i", - LongTime: "G:i:s", - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - YearMonth: "F, Y" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -})(jQuery); diff --git a/assets/js/plugins/jqGrid/i18n/grid.locale-vi.js b/assets/js/plugins/jqGrid/i18n/grid.locale-vi.js deleted file mode 100644 index 741c64db..00000000 --- a/assets/js/plugins/jqGrid/i18n/grid.locale-vi.js +++ /dev/null @@ -1,170 +0,0 @@ -;(function($){ -/** - * jqGrid Vietnamese Translation - * Lê Đình Dũng dungtdc@gmail.com - * http://trirand.com/blog/ - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html -**/ -$.jgrid = $.jgrid || {}; -$.extend($.jgrid,{ - defaults : { - recordtext: "View {0} - {1} of {2}", - emptyrecords: "Không có dữ liệu", - loadtext: "Đang nạp dữ liệu...", - pgtext : "Trang {0} trong tổng số {1}" - }, - search : { - caption: "Tìm kiếm...", - Find: "Tìm", - Reset: "Khởi tạo lại", - odata: [{ oper:'eq', text:"bằng"},{ oper:'ne', text:"không bằng"},{ oper:'lt', text:"bé hơn"},{ oper:'le', text:"bé hơn hoặc bằng"},{ oper:'gt', text:"lớn hơn"},{ oper:'ge', text:"lớn hơn hoặc bằng"},{ oper:'bw', text:"bắt đầu với"},{ oper:'bn', text:"không bắt đầu với"},{ oper:'in', text:"trong"},{ oper:'ni', text:"không nằm trong"},{ oper:'ew', text:"kết thúc với"},{ oper:'en', text:"không kết thúc với"},{ oper:'cn', text:"chứa"},{ oper:'nc', text:"không chứa"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}], - groupOps: [ { op: "VÀ", text: "tất cả" }, { op: "HOẶC", text: "bất kỳ" } ], - operandTitle : "Click to select search operation.", - resetTitle : "Reset Search Value" - }, - edit : { - addCaption: "Thêm bản ghi", - editCaption: "Sửa bản ghi", - bSubmit: "Gửi", - bCancel: "Hủy bỏ", - bClose: "Đóng", - saveData: "Dữ liệu đã thay đổi! Có lưu thay đổi không?", - bYes : "Có", - bNo : "Không", - bExit : "Hủy bỏ", - msg: { - required:"Trường dữ liệu bắt buộc có", - number:"Hãy điền đúng số", - minValue:"giá trị phải lớn hơn hoặc bằng với ", - maxValue:"giá trị phải bé hơn hoặc bằng", - email: "không phải là một email đúng", - integer: "Hãy điền đúng số nguyên", - date: "Hãy điền đúng ngày tháng", - url: "không phải là URL. Khởi đầu bắt buộc là ('http://' hoặc 'https://')", - nodefined : " chưa được định nghĩa!", - novalue : " giá trị trả về bắt buộc phải có!", - customarray : "Hàm nên trả về một mảng!", - customfcheck : "Custom function should be present in case of custom checking!" - - } - }, - view : { - caption: "Xem bản ghi", - bClose: "Đóng" - }, - del : { - caption: "Xóa", - msg: "Xóa bản ghi đã chọn?", - bSubmit: "Xóa", - bCancel: "Hủy bỏ" - }, - nav : { - edittext: "", - edittitle: "Sửa dòng đã chọn", - addtext:"", - addtitle: "Thêm mới 1 dòng", - deltext: "", - deltitle: "Xóa dòng đã chọn", - searchtext: "", - searchtitle: "Tìm bản ghi", - refreshtext: "", - refreshtitle: "Nạp lại lưới", - alertcap: "Cảnh báo", - alerttext: "Hãy chọn một dòng", - viewtext: "", - viewtitle: "Xem dòng đã chọn" - }, - col : { - caption: "Chọn cột", - bSubmit: "OK", - bCancel: "Hủy bỏ" - }, - errors : { - errcap : "Lỗi", - nourl : "không url được đặt", - norecords: "Không có bản ghi để xử lý", - model : "Chiều dài của colNames <> colModel!" - }, - formatter : { - integer : {thousandsSeparator: ".", defaultValue: '0'}, - number : {decimalSeparator:",", thousandsSeparator: ".", decimalPlaces: 2, defaultValue: '0'}, - currency : {decimalSeparator:",", thousandsSeparator: ".", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0'}, - date : { - dayNames: [ - "CN", "T2", "T3", "T4", "T5", "T6", "T7", - "Chủ nhật", "Thứ hai", "Thứ ba", "Thứ tư", "Thứ năm", "Thứ sáu", "Thứ bảy" - ], - monthNames: [ - "Th1", "Th2", "Th3", "Th4", "Th5", "Th6", "Th7", "Th8", "Th9", "Th10", "Th11", "Th12", - "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" - ], - AmPm : ["sáng","chiều","SÁNG","CHIỀU"], - S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th';}, - srcformat: 'Y-m-d', - newformat: 'n/j/Y', - parseRe : /[#%\\\/:_;.,\t\s-]/, - masks : { - // see http://php.net/manual/en/function.date.php for PHP format used in jqGrid - // and see http://docs.jquery.com/UI/Datepicker/formatDate - // and https://github.com/jquery/globalize#dates for alternative formats used frequently - // one can find on https://github.com/jquery/globalize/tree/master/lib/cultures many - // information about date, time, numbers and currency formats used in different countries - // one should just convert the information in PHP format - ISO8601Long:"Y-m-d H:i:s", - ISO8601Short:"Y-m-d", - // short date: - // n - Numeric representation of a month, without leading zeros - // j - Day of the month without leading zeros - // Y - A full numeric representation of a year, 4 digits - // example: 3/1/2012 which means 1 March 2012 - ShortDate: "n/j/Y", // in jQuery UI Datepicker: "M/d/yyyy" - // long date: - // l - A full textual representation of the day of the week - // F - A full textual representation of a month - // d - Day of the month, 2 digits with leading zeros - // Y - A full numeric representation of a year, 4 digits - LongDate: "l, F d, Y", // in jQuery UI Datepicker: "dddd, MMMM dd, yyyy" - // long date with long time: - // l - A full textual representation of the day of the week - // F - A full textual representation of a month - // d - Day of the month, 2 digits with leading zeros - // Y - A full numeric representation of a year, 4 digits - // g - 12-hour format of an hour without leading zeros - // i - Minutes with leading zeros - // s - Seconds, with leading zeros - // A - Uppercase Ante meridiem and Post meridiem (AM or PM) - FullDateTime: "l, F d, Y g:i:s A", // in jQuery UI Datepicker: "dddd, MMMM dd, yyyy h:mm:ss tt" - // month day: - // F - A full textual representation of a month - // d - Day of the month, 2 digits with leading zeros - MonthDay: "F d", // in jQuery UI Datepicker: "MMMM dd" - // short time (without seconds) - // g - 12-hour format of an hour without leading zeros - // i - Minutes with leading zeros - // A - Uppercase Ante meridiem and Post meridiem (AM or PM) - ShortTime: "g:i A", // in jQuery UI Datepicker: "h:mm tt" - // long time (with seconds) - // g - 12-hour format of an hour without leading zeros - // i - Minutes with leading zeros - // s - Seconds, with leading zeros - // A - Uppercase Ante meridiem and Post meridiem (AM or PM) - LongTime: "g:i:s A", // in jQuery UI Datepicker: "h:mm:ss tt" - SortableDateTime: "Y-m-d\\TH:i:s", - UniversalSortableDateTime: "Y-m-d H:i:sO", - // month with year - // Y - A full numeric representation of a year, 4 digits - // F - A full textual representation of a month - YearMonth: "F, Y" // in jQuery UI Datepicker: "MMMM, yyyy" - }, - reformatAfterEdit : false - }, - baseLinkUrl: '', - showAction: '', - target: '', - checkbox : {disabled:true}, - idName : 'id' - } -}); -})(jQuery); diff --git a/assets/js/plugins/jqGrid/jquery.jqGrid.min.js b/assets/js/plugins/jqGrid/jquery.jqGrid.min.js deleted file mode 100644 index 340d0a00..00000000 --- a/assets/js/plugins/jqGrid/jquery.jqGrid.min.js +++ /dev/null @@ -1,545 +0,0 @@ -/* -* jqGrid 4.6.0 - jQuery Grid -* Copyright (c) 2008, Tony Tomov, tony@trirand.com -* Dual licensed under the MIT or GPL licenses -* http://www.opensource.org/licenses/mit-license.php -* http://www.gnu.org/licenses/gpl-2.0.html -* Date:2014-02-20 -* Modules: grid.base.js; jquery.fmatter.js; grid.custom.js; grid.common.js; grid.formedit.js; grid.filter.js; grid.inlinedit.js; grid.celledit.js; jqModal.js; jqDnR.js; grid.subgrid.js; grid.grouping.js; grid.treegrid.js; grid.pivot.js; grid.import.js; JsonXml.js; grid.tbltogrid.js; grid.jqueryui.js; -*/ -(function(b){b.jgrid=b.jgrid||{};b.extend(b.jgrid,{version:"4.6.0",htmlDecode:function(b){return b&&("&nbsp;"===b||"&#160;"===b||1===b.length&&160===b.charCodeAt(0))?"":b?String(b).replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/&quot;/g,'"').replace(/&amp;/g,"&"):b},htmlEncode:function(b){return b?String(b).replace(/&/g,"&amp;").replace(/\"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;"):b},format:function(e){var f=b.makeArray(arguments).slice(1);null==e&&(e="");return e.replace(/\{(\d+)\}/g, -function(b,d){return f[d]})},msie:"Microsoft Internet Explorer"===navigator.appName,msiever:function(){var b=-1;null!=/MSIE ([0-9]{1,}[.0-9]{0,})/.exec(navigator.userAgent)&&(b=parseFloat(RegExp.$1));return b},getCellIndex:function(e){e=b(e);if(e.is("tr"))return-1;e=(e.is("td")||e.is("th")?e:e.closest("td,th"))[0];return b.jgrid.msie?b.inArray(e,e.parentNode.cells):e.cellIndex},stripHtml:function(b){b=String(b);var f=/<("[^"]*"|'[^']*'|[^'">])*>/gi;return b?(b=b.replace(f,""))&&"&nbsp;"!==b&&"&#160;"!== -b?b.replace(/\"/g,"'"):"":b},stripPref:function(e,f){var c=b.type(e);if("string"===c||"number"===c)e=String(e),f=""!==e?String(f).replace(String(e),""):f;return f},parse:function(e){"while(1);"===e.substr(0,9)&&(e=e.substr(9));"/*"===e.substr(0,2)&&(e=e.substr(2,e.length-4));e||(e="{}");return!0===b.jgrid.useJSON&&"object"===typeof JSON&&"function"===typeof JSON.parse?JSON.parse(e):eval("("+e+")")},parseDate:function(e,f,c,d){var a=/^\/Date\((([-+])?[0-9]+)(([-+])([0-9]{2})([0-9]{2}))?\)\/$/,l="string"=== -typeof f?f.match(a):null,a=function(a,b){a=String(a);for(b=parseInt(b,10)||2;a.length<b;)a="0"+a;return a},g={m:1,d:1,y:1970,h:0,i:0,s:0,u:0},h=0,k,n,h=function(a,b){0===a?12===b&&(b=0):12!==b&&(b+=12);return b};void 0===d&&(d=b.jgrid.formatter.date);void 0===d.parseRe&&(d.parseRe=/[#%\\\/:_;.,\t\s-]/);d.masks.hasOwnProperty(e)&&(e=d.masks[e]);if(f&&null!=f)if(isNaN(f-0)||"u"!==String(e).toLowerCase())if(f.constructor===Date)h=f;else if(null!==l){if(h=new Date(parseInt(l[1],10)),l[3]){var m=60*Number(l[5])+ -Number(l[6]),m=m*("-"===l[4]?1:-1),m=m-h.getTimezoneOffset();h.setTime(Number(Number(h)+6E4*m))}}else{m=0;"ISO8601Long"===d.srcformat&&"Z"===f.charAt(f.length-1)&&(m-=(new Date).getTimezoneOffset());f=String(f).replace(/\T/g,"#").replace(/\t/,"%").split(d.parseRe);e=e.replace(/\T/g,"#").replace(/\t/,"%").split(d.parseRe);k=0;for(n=e.length;k<n;k++)"M"===e[k]&&(l=b.inArray(f[k],d.monthNames),-1!==l&&12>l&&(f[k]=l+1,g.m=f[k])),"F"===e[k]&&(l=b.inArray(f[k],d.monthNames,12),-1!==l&&11<l&&(f[k]=l+1-12, -g.m=f[k])),"a"===e[k]&&(l=b.inArray(f[k],d.AmPm),-1!==l&&2>l&&f[k]===d.AmPm[l]&&(f[k]=l,g.h=h(f[k],g.h))),"A"===e[k]&&(l=b.inArray(f[k],d.AmPm),-1!==l&&1<l&&f[k]===d.AmPm[l]&&(f[k]=l-2,g.h=h(f[k],g.h))),"g"===e[k]&&(g.h=parseInt(f[k],10)),void 0!==f[k]&&(g[e[k].toLowerCase()]=parseInt(f[k],10));g.f&&(g.m=g.f);if(0===g.m&&0===g.y&&0===g.d)return"&#160;";g.m=parseInt(g.m,10)-1;h=g.y;70<=h&&99>=h?g.y=1900+g.y:0<=h&&69>=h&&(g.y=2E3+g.y);h=new Date(g.y,g.m,g.d,g.h,g.i,g.s,g.u);0<m&&h.setTime(Number(Number(h)+ -6E4*m))}else h=new Date(1E3*parseFloat(f));else h=new Date(g.y,g.m,g.d,g.h,g.i,g.s,g.u);if(void 0===c)return h;d.masks.hasOwnProperty(c)?c=d.masks[c]:c||(c="Y-m-d");e=h.getHours();f=h.getMinutes();g=h.getDate();m=h.getMonth()+1;l=h.getTimezoneOffset();k=h.getSeconds();n=h.getMilliseconds();var r=h.getDay(),p=h.getFullYear(),q=(r+6)%7+1,x=(new Date(p,m-1,g)-new Date(p,0,1))/864E5,G={d:a(g),D:d.dayNames[r],j:g,l:d.dayNames[r+7],N:q,S:d.S(g),w:r,z:x,W:5>q?Math.floor((x+q-1)/7)+1:Math.floor((x+q-1)/7)|| -(4>((new Date(p-1,0,1)).getDay()+6)%7?53:52),F:d.monthNames[m-1+12],m:a(m),M:d.monthNames[m-1],n:m,t:"?",L:"?",o:"?",Y:p,y:String(p).substring(2),a:12>e?d.AmPm[0]:d.AmPm[1],A:12>e?d.AmPm[2]:d.AmPm[3],B:"?",g:e%12||12,G:e,h:a(e%12||12),H:a(e),i:a(f),s:a(k),u:n,e:"?",I:"?",O:(0<l?"-":"+")+a(100*Math.floor(Math.abs(l)/60)+Math.abs(l)%60,4),P:"?",T:(String(h).match(/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g)|| -[""]).pop().replace(/[^-+\dA-Z]/g,""),Z:"?",c:"?",r:"?",U:Math.floor(h/1E3)};return c.replace(/\\.|[dDjlNSwzWFmMntLoYyaABgGhHisueIOPTZcrU]/g,function(a){return G.hasOwnProperty(a)?G[a]:a.substring(1)})},jqID:function(b){return String(b).replace(/[!"#$%&'()*+,.\/:; <=>?@\[\\\]\^`{|}~]/g,"\\$&")},guid:1,uidPref:"jqg",randId:function(e){return(e||b.jgrid.uidPref)+b.jgrid.guid++},getAccessor:function(b,f){var c,d,a=[],l;if("function"===typeof f)return f(b);c=b[f];if(void 0===c)try{if("string"===typeof f&& -(a=f.split(".")),l=a.length)for(c=b;c&&l--;)d=a.shift(),c=c[d]}catch(g){}return c},getXmlData:function(e,f,c){var d="string"===typeof f?f.match(/^(.*)\[(\w+)\]$/):null;if("function"===typeof f)return f(e);if(d&&d[2])return d[1]?b(d[1],e).attr(d[2]):b(e).attr(d[2]);e=b(f,e);return c?e:0<e.length?b(e).text():void 0},cellWidth:function(){var e=b("<div class='ui-jqgrid' style='left:10000px'><table class='ui-jqgrid-btable' style='width:5px;'><tr class='jqgrow'><td style='width:5px;display:block;'></td></tr></table></div>"), -f=e.appendTo("body").find("td").width();e.remove();return 0.1<Math.abs(f-5)},cell_width:!0,ajaxOptions:{},from:function(e){return new function(e,c){"string"===typeof e&&(e=b.data(e));var d=this,a=e,l=!0,g=!1,h=c,k=/[\$,%]/g,n=null,m=null,r=0,p=!1,q="",x=[],G=!0;if("object"===typeof e&&e.push)0<e.length&&(G="object"!==typeof e[0]?!1:!0);else throw"data provides is not an array";this._hasData=function(){return null===a?!1:0===a.length?!1:!0};this._getStr=function(a){var b=[];g&&b.push("jQuery.trim("); -b.push("String("+a+")");g&&b.push(")");l||b.push(".toLowerCase()");return b.join("")};this._strComp=function(a){return"string"===typeof a?".toString()":""};this._group=function(a,b){return{field:a.toString(),unique:b,items:[]}};this._toStr=function(a){g&&(a=b.trim(a));a=a.toString().replace(/\\/g,"\\\\").replace(/\"/g,'\\"');return l?a:a.toLowerCase()};this._funcLoop=function(d){var l=[];b.each(a,function(a,b){l.push(d(b))});return l};this._append=function(a){var b;h=null===h?"":h+(""===q?" && ": -q);for(b=0;b<r;b++)h+="(";p&&(h+="!");h+="("+a+")";p=!1;q="";r=0};this._setCommand=function(a,b){n=a;m=b};this._resetNegate=function(){p=!1};this._repeatCommand=function(a,b){return null===n?d:null!==a&&null!==b?n(a,b):null!==m&&G?n(m,a):n(a)};this._equals=function(a,b){return 0===d._compare(a,b,1)};this._compare=function(a,b,d){var e=Object.prototype.toString;void 0===d&&(d=1);void 0===a&&(a=null);void 0===b&&(b=null);if(null===a&&null===b)return 0;if(null===a&&null!==b)return 1;if(null!==a&&null=== -b)return-1;if("[object Date]"===e.call(a)&&"[object Date]"===e.call(b))return a<b?-d:a>b?d:0;l||"number"===typeof a||"number"===typeof b||(a=String(a),b=String(b));return a<b?-d:a>b?d:0};this._performSort=function(){0!==x.length&&(a=d._doSort(a,0))};this._doSort=function(a,b){var l=x[b].by,e=x[b].dir,g=x[b].type,c=x[b].datefmt,f=x[b].sfunc;if(b===x.length-1)return d._getOrder(a,l,e,g,c,f);b++;l=d._getGroup(a,l,e,g,c);e=[];for(g=0;g<l.length;g++)for(f=d._doSort(l[g].items,b),c=0;c<f.length;c++)e.push(f[c]); -return e};this._getOrder=function(a,e,g,c,f,h){var m=[],n=[],r="a"===g?1:-1,p,x;void 0===c&&(c="text");x="float"===c||"number"===c||"currency"===c||"numeric"===c?function(a){a=parseFloat(String(a).replace(k,""));return isNaN(a)?0:a}:"int"===c||"integer"===c?function(a){return a?parseFloat(String(a).replace(k,"")):0}:"date"===c||"datetime"===c?function(a){return b.jgrid.parseDate(f,a).getTime()}:b.isFunction(c)?c:function(a){a=a?b.trim(String(a)):"";return l?a:a.toLowerCase()};b.each(a,function(a, -d){p=""!==e?b.jgrid.getAccessor(d,e):d;void 0===p&&(p="");p=x(p,d);n.push({vSort:p,index:a})});b.isFunction(h)?n.sort(function(a,b){a=a.vSort;b=b.vSort;return h.call(this,a,b,r)}):n.sort(function(a,b){a=a.vSort;b=b.vSort;return d._compare(a,b,r)});c=0;for(var q=a.length;c<q;)g=n[c].index,m.push(a[g]),c++;return m};this._getGroup=function(a,c,e,l,g){var f=[],h=null,k=null,m;b.each(d._getOrder(a,c,e,l,g),function(a,e){m=b.jgrid.getAccessor(e,c);null==m&&(m="");d._equals(k,m)||(k=m,null!==h&&f.push(h), -h=d._group(c,m));h.items.push(e)});null!==h&&f.push(h);return f};this.ignoreCase=function(){l=!1;return d};this.useCase=function(){l=!0;return d};this.trim=function(){g=!0;return d};this.noTrim=function(){g=!1;return d};this.execute=function(){var c=h,e=[];if(null===c)return d;b.each(a,function(){eval(c)&&e.push(this)});a=e;return d};this.data=function(){return a};this.select=function(c){d._performSort();if(!d._hasData())return[];d.execute();if(b.isFunction(c)){var e=[];b.each(a,function(a,b){e.push(c(b))}); -return e}return a};this.hasMatch=function(){if(!d._hasData())return!1;d.execute();return 0<a.length};this.andNot=function(a,b,c){p=!p;return d.and(a,b,c)};this.orNot=function(a,b,c){p=!p;return d.or(a,b,c)};this.not=function(a,b,c){return d.andNot(a,b,c)};this.and=function(a,b,c){q=" && ";return void 0===a?d:d._repeatCommand(a,b,c)};this.or=function(a,b,c){q=" || ";return void 0===a?d:d._repeatCommand(a,b,c)};this.orBegin=function(){r++;return d};this.orEnd=function(){null!==h&&(h+=")");return d}; -this.isNot=function(a){p=!p;return d.is(a)};this.is=function(a){d._append("this."+a);d._resetNegate();return d};this._compareValues=function(a,c,e,l,g){var f;f=G?"jQuery.jgrid.getAccessor(this,'"+c+"')":"this";void 0===e&&(e=null);var h=e,m=void 0===g.stype?"text":g.stype;if(null!==e)switch(m){case "int":case "integer":h=isNaN(Number(h))||""===h?"0":h;f="parseInt("+f+",10)";h="parseInt("+h+",10)";break;case "float":case "number":case "numeric":h=String(h).replace(k,"");h=isNaN(Number(h))||""===h? -"0":h;f="parseFloat("+f+")";h="parseFloat("+h+")";break;case "date":case "datetime":h=String(b.jgrid.parseDate(g.newfmt||"Y-m-d",h).getTime());f='jQuery.jgrid.parseDate("'+g.srcfmt+'",'+f+").getTime()";break;default:f=d._getStr(f),h=d._getStr('"'+d._toStr(h)+'"')}d._append(f+" "+l+" "+h);d._setCommand(a,c);d._resetNegate();return d};this.equals=function(a,b,c){return d._compareValues(d.equals,a,b,"==",c)};this.notEquals=function(a,b,c){return d._compareValues(d.equals,a,b,"!==",c)};this.isNull=function(a, -b,c){return d._compareValues(d.equals,a,null,"===",c)};this.greater=function(a,b,c){return d._compareValues(d.greater,a,b,">",c)};this.less=function(a,b,c){return d._compareValues(d.less,a,b,"<",c)};this.greaterOrEquals=function(a,b,c){return d._compareValues(d.greaterOrEquals,a,b,">=",c)};this.lessOrEquals=function(a,b,c){return d._compareValues(d.lessOrEquals,a,b,"<=",c)};this.startsWith=function(a,c){var e=null==c?a:c,e=g?b.trim(e.toString()).length:e.toString().length;G?d._append(d._getStr("jQuery.jgrid.getAccessor(this,'"+ -a+"')")+".substr(0,"+e+") == "+d._getStr('"'+d._toStr(c)+'"')):(null!=c&&(e=g?b.trim(c.toString()).length:c.toString().length),d._append(d._getStr("this")+".substr(0,"+e+") == "+d._getStr('"'+d._toStr(a)+'"')));d._setCommand(d.startsWith,a);d._resetNegate();return d};this.endsWith=function(a,c){var e=null==c?a:c,e=g?b.trim(e.toString()).length:e.toString().length;G?d._append(d._getStr("jQuery.jgrid.getAccessor(this,'"+a+"')")+".substr("+d._getStr("jQuery.jgrid.getAccessor(this,'"+a+"')")+".length-"+ -e+","+e+') == "'+d._toStr(c)+'"'):d._append(d._getStr("this")+".substr("+d._getStr("this")+'.length-"'+d._toStr(a)+'".length,"'+d._toStr(a)+'".length) == "'+d._toStr(a)+'"');d._setCommand(d.endsWith,a);d._resetNegate();return d};this.contains=function(a,b){G?d._append(d._getStr("jQuery.jgrid.getAccessor(this,'"+a+"')")+'.indexOf("'+d._toStr(b)+'",0) > -1'):d._append(d._getStr("this")+'.indexOf("'+d._toStr(a)+'",0) > -1');d._setCommand(d.contains,a);d._resetNegate();return d};this.groupBy=function(b, -c,e,l){return d._hasData()?d._getGroup(a,b,c,e,l):null};this.orderBy=function(a,c,e,l,g){c=null==c?"a":b.trim(c.toString().toLowerCase());null==e&&(e="text");null==l&&(l="Y-m-d");null==g&&(g=!1);if("desc"===c||"descending"===c)c="d";if("asc"===c||"ascending"===c)c="a";x.push({by:a,dir:c,type:e,datefmt:l,sfunc:g});return d};return d}(e,null)},getMethod:function(e){return this.getAccessor(b.fn.jqGrid,e)},extend:function(e){b.extend(b.fn.jqGrid,e);this.no_legacy_api||b.fn.extend(e)}});b.fn.jqGrid=function(e){if("string"=== -typeof e){var f=b.jgrid.getMethod(e);if(!f)throw"jqGrid - No such method: "+e;var c=b.makeArray(arguments).slice(1);return f.apply(this,c)}return this.each(function(){if(!this.grid){var d=b.extend(!0,{url:"",height:150,page:1,rowNum:20,rowTotal:null,records:0,pager:"",pgbuttons:!0,pginput:!0,colModel:[],rowList:[],colNames:[],sortorder:"asc",sortname:"",datatype:"xml",mtype:"GET",altRows:!1,selarrrow:[],savedRow:[],shrinkToFit:!0,xmlReader:{},jsonReader:{},subGrid:!1,subGridModel:[],reccount:0,lastpage:0, -lastsort:0,selrow:null,beforeSelectRow:null,onSelectRow:null,onSortCol:null,ondblClickRow:null,onRightClickRow:null,onPaging:null,onSelectAll:null,onInitGrid:null,loadComplete:null,gridComplete:null,loadError:null,loadBeforeSend:null,afterInsertRow:null,beforeRequest:null,beforeProcessing:null,onHeaderClick:null,viewrecords:!1,loadonce:!1,multiselect:!1,multikey:!1,editurl:null,search:!1,caption:"",hidegrid:!0,hiddengrid:!1,postData:{},userData:{},treeGrid:!1,treeGridModel:"nested",treeReader:{}, -treeANode:-1,ExpandColumn:null,tree_root_level:0,prmNames:{page:"page",rows:"rows",sort:"sidx",order:"sord",search:"_search",nd:"nd",id:"id",oper:"oper",editoper:"edit",addoper:"add",deloper:"del",subgridid:"id",npage:null,totalrows:"totalrows"},forceFit:!1,gridstate:"visible",cellEdit:!1,cellsubmit:"remote",nv:0,loadui:"enable",toolbar:[!1,""],scroll:!1,multiboxonly:!1,deselectAfterSort:!0,scrollrows:!1,autowidth:!1,scrollOffset:18,cellLayout:5,subGridWidth:20,multiselectWidth:20,gridview:!1,rownumWidth:25, -rownumbers:!1,pagerpos:"center",recordpos:"right",footerrow:!1,userDataOnFooter:!1,hoverrows:!0,altclass:"ui-priority-secondary",viewsortcols:[!1,"vertical",!0],resizeclass:"",autoencode:!1,remapColumns:[],ajaxGridOptions:{},direction:"ltr",toppager:!1,headertitles:!1,scrollTimeout:40,data:[],_index:{},grouping:!1,groupingView:{groupField:[],groupOrder:[],groupText:[],groupColumnShow:[],groupSummary:[],showSummaryOnHide:!1,sortitems:[],sortnames:[],summary:[],summaryval:[],plusicon:"ui-icon-circlesmall-plus", -minusicon:"ui-icon-circlesmall-minus",displayField:[],groupSummaryPos:[],formatDisplayField:[],_locgr:!1},ignoreCase:!1,cmTemplate:{},idPrefix:"",multiSort:!1},b.jgrid.defaults,e||{}),a=this,c={headers:[],cols:[],footers:[],dragStart:function(c,e,g){var f=b(this.bDiv).offset().left;this.resizing={idx:c,startX:e.clientX,sOL:e.clientX-f};this.hDiv.style.cursor="col-resize";this.curGbox=b("#rs_m"+b.jgrid.jqID(d.id),"#gbox_"+b.jgrid.jqID(d.id));this.curGbox.css({display:"block",left:e.clientX-f,top:g[1], -height:g[2]});b(a).triggerHandler("jqGridResizeStart",[e,c]);b.isFunction(d.resizeStart)&&d.resizeStart.call(a,e,c);document.onselectstart=function(){return!1}},dragMove:function(a){if(this.resizing){var b=a.clientX-this.resizing.startX;a=this.headers[this.resizing.idx];var c="ltr"===d.direction?a.width+b:a.width-b,e;33<c&&(this.curGbox.css({left:this.resizing.sOL+b}),!0===d.forceFit?(e=this.headers[this.resizing.idx+d.nv],b="ltr"===d.direction?e.width-b:e.width+b,33<b&&(a.newWidth=c,e.newWidth=b)): -(this.newWidth="ltr"===d.direction?d.tblwidth+b:d.tblwidth-b,a.newWidth=c))}},dragEnd:function(){this.hDiv.style.cursor="default";if(this.resizing){var c=this.resizing.idx,e=this.headers[c].newWidth||this.headers[c].width,e=parseInt(e,10);this.resizing=!1;b("#rs_m"+b.jgrid.jqID(d.id)).css("display","none");d.colModel[c].width=e;this.headers[c].width=e;this.headers[c].el.style.width=e+"px";this.cols[c].style.width=e+"px";0<this.footers.length&&(this.footers[c].style.width=e+"px");!0===d.forceFit?(e= -this.headers[c+d.nv].newWidth||this.headers[c+d.nv].width,this.headers[c+d.nv].width=e,this.headers[c+d.nv].el.style.width=e+"px",this.cols[c+d.nv].style.width=e+"px",0<this.footers.length&&(this.footers[c+d.nv].style.width=e+"px"),d.colModel[c+d.nv].width=e):(d.tblwidth=this.newWidth||d.tblwidth,b("table:first",this.bDiv).css("width",d.tblwidth+"px"),b("table:first",this.hDiv).css("width",d.tblwidth+"px"),this.hDiv.scrollLeft=this.bDiv.scrollLeft,d.footerrow&&(b("table:first",this.sDiv).css("width", -d.tblwidth+"px"),this.sDiv.scrollLeft=this.bDiv.scrollLeft));b(a).triggerHandler("jqGridResizeStop",[e,c]);b.isFunction(d.resizeStop)&&d.resizeStop.call(a,e,c)}this.curGbox=null;document.onselectstart=function(){return!0}},populateVisible:function(){c.timer&&clearTimeout(c.timer);c.timer=null;var a=b(c.bDiv).height();if(a){var e=b("table:first",c.bDiv),g,f;if(e[0].rows.length)try{f=(g=e[0].rows[1])?b(g).outerHeight()||c.prevRowHeight:c.prevRowHeight}catch(pa){f=c.prevRowHeight}if(f){c.prevRowHeight= -f;var h=d.rowNum;g=c.scrollTop=c.bDiv.scrollTop;var k=Math.round(e.position().top)-g,m=k+e.height();f*=h;var E,n,C;m<a&&0>=k&&(void 0===d.lastpage||parseInt((m+g+f-1)/f,10)<=d.lastpage)&&(n=parseInt((a-m+f-1)/f,10),0<=m||2>n||!0===d.scroll?(E=Math.round((m+g)/f)+1,k=-1):k=1);0<k&&(E=parseInt(g/f,10)+1,n=parseInt((g+a)/f,10)+2-E,C=!0);!n||d.lastpage&&(E>d.lastpage||1===d.lastpage||E===d.page&&E===d.lastpage)||(c.hDiv.loading?c.timer=setTimeout(c.populateVisible,d.scrollTimeout):(d.page=E,C&&(c.selectionPreserver(e[0]), -c.emptyRows.call(e[0],!1,!1)),c.populate(n)))}}},scrollGrid:function(a){if(d.scroll){var b=c.bDiv.scrollTop;void 0===c.scrollTop&&(c.scrollTop=0);b!==c.scrollTop&&(c.scrollTop=b,c.timer&&clearTimeout(c.timer),c.timer=setTimeout(c.populateVisible,d.scrollTimeout))}c.hDiv.scrollLeft=c.bDiv.scrollLeft;d.footerrow&&(c.sDiv.scrollLeft=c.bDiv.scrollLeft);a&&a.stopPropagation()},selectionPreserver:function(a){var c=a.p,d=c.selrow,e=c.selarrrow?b.makeArray(c.selarrrow):null,f=a.grid.bDiv.scrollLeft,g=function(){var h; -c.selrow=null;c.selarrrow=[];if(c.multiselect&&e&&0<e.length)for(h=0;h<e.length;h++)e[h]!==d&&b(a).jqGrid("setSelection",e[h],!1,null);d&&b(a).jqGrid("setSelection",d,!1,null);a.grid.bDiv.scrollLeft=f;b(a).unbind(".selectionPreserver",g)};b(a).bind("jqGridGridComplete.selectionPreserver",g)}};if("TABLE"!==this.tagName.toUpperCase())alert("Element is not a table");else if(void 0!==document.documentMode&&5>=document.documentMode)alert("Grid can not be used in this ('quirks') mode!");else{b(this).empty().attr("tabindex", -"0");this.p=d;this.p.useProp=!!b.fn.prop;var g,f;if(0===this.p.colNames.length)for(g=0;g<this.p.colModel.length;g++)this.p.colNames[g]=this.p.colModel[g].label||this.p.colModel[g].name;if(this.p.colNames.length!==this.p.colModel.length)alert(b.jgrid.errors.model);else{var k=b("<div class='ui-jqgrid-view'></div>"),n=b.jgrid.msie;a.p.direction=b.trim(a.p.direction.toLowerCase());-1===b.inArray(a.p.direction,["ltr","rtl"])&&(a.p.direction="ltr");f=a.p.direction;b(k).insertBefore(this);b(this).removeClass("scroll").appendTo(k); -var m=b("<div class='ui-jqgrid ui-widget ui-widget-content ui-corner-all'></div>");b(m).attr({id:"gbox_"+this.id,dir:f}).insertBefore(k);b(k).attr("id","gview_"+this.id).appendTo(m);b("<div class='ui-widget-overlay jqgrid-overlay' id='lui_"+this.id+"'></div>").insertBefore(k);b("<div class='loading ui-state-default ui-state-active' id='load_"+this.id+"'>"+this.p.loadtext+"</div>").insertBefore(k);b(this).attr({cellspacing:"0",cellpadding:"0",border:"0",role:"grid","aria-multiselectable":!!this.p.multiselect, -"aria-labelledby":"gbox_"+this.id});var r=function(a,b){a=parseInt(a,10);return isNaN(a)?b||0:a},p=function(d,e,f,g,pa,h){var k=a.p.colModel[d],m=k.align,E='style="',n=k.classes,C=k.name,A=[];m&&(E+="text-align:"+m+";");!0===k.hidden&&(E+="display:none;");if(0===e)E+="width: "+c.headers[d].width+"px;";else if(k.cellattr&&b.isFunction(k.cellattr)&&(d=k.cellattr.call(a,pa,f,g,k,h))&&"string"===typeof d)if(d=d.replace(/style/i,"style").replace(/title/i,"title"),-1<d.indexOf("title")&&(k.title=!1),-1< -d.indexOf("class")&&(n=void 0),A=d.replace("-style","-sti").split(/style/),2===A.length){A[1]=b.trim(A[1].replace("-sti","-style").replace("=",""));if(0===A[1].indexOf("'")||0===A[1].indexOf('"'))A[1]=A[1].substring(1);E+=A[1].replace(/'/gi,'"')}else E+='"';A.length||(A[0]="",E+='"');E+=(void 0!==n?' class="'+n+'"':"")+(k.title&&f?' title="'+b.jgrid.stripHtml(f)+'"':"");E+=' aria-describedby="'+a.p.id+"_"+C+'"';return E+A[0]},q=function(c){return null==c||""===c?"&#160;":a.p.autoencode?b.jgrid.htmlEncode(c): -String(c)},x=function(c,d,e,f,g){var h=a.p.colModel[e];void 0!==h.formatter?(c=""!==String(a.p.idPrefix)?b.jgrid.stripPref(a.p.idPrefix,c):c,c={rowId:c,colModel:h,gid:a.p.id,pos:e},d=b.isFunction(h.formatter)?h.formatter.call(a,d,c,f,g):b.fmatter?b.fn.fmatter.call(a,h.formatter,d,c,f,g):q(d)):d=q(d);return d},G=function(a,b,c,d,e,f){b=x(a,b,c,e,"add");return'<td role="gridcell" '+p(c,d,b,e,a,f)+">"+b+"</td>"},U=function(b,c,d,e){e='<input role="checkbox" type="checkbox" id="jqg_'+a.p.id+"_"+b+'" class="cbox" name="jqg_'+ -a.p.id+"_"+b+'"'+(e?'checked="checked"':"")+"/>";return'<td role="gridcell" '+p(c,d,"",null,b,!0)+">"+e+"</td>"},M=function(a,b,c,d){c=(parseInt(c,10)-1)*parseInt(d,10)+1+b;return'<td role="gridcell" class="ui-state-default jqgrid-rownum" '+p(a,b,c,null,b,!0)+">"+c+"</td>"},ea=function(b){var c,d=[],e=0,f;for(f=0;f<a.p.colModel.length;f++)c=a.p.colModel[f],"cb"!==c.name&&"subgrid"!==c.name&&"rn"!==c.name&&(d[e]="local"===b?c.name:"xml"===b||"xmlstring"===b?c.xmlmap||c.name:c.jsonmap||c.name,!1!== -a.p.keyIndex&&!0===c.key&&(a.p.keyName=d[e]),e++);return d},W=function(c){var d=a.p.remapColumns;d&&d.length||(d=b.map(a.p.colModel,function(a,b){return b}));c&&(d=b.map(d,function(a){return a<c?null:a-c}));return d},X=function(a,c){var d;this.p.deepempty?b(this.rows).slice(1).remove():(d=0<this.rows.length?this.rows[0]:null,b(this.firstChild).empty().append(d));a&&this.p.scroll&&(b(this.grid.bDiv.firstChild).css({height:"auto"}),b(this.grid.bDiv.firstChild.firstChild).css({height:0,display:"none"}), -0!==this.grid.bDiv.scrollTop&&(this.grid.bDiv.scrollTop=0));!0===c&&this.p.treeGrid&&(this.p.data=[],this.p._index={})},O=function(){var c=a.p.data.length,d,e,f;d=!0===a.p.rownumbers?1:0;e=!0===a.p.multiselect?1:0;f=!0===a.p.subGrid?1:0;d=!1===a.p.keyIndex||!0===a.p.loadonce?a.p.localReader.id:a.p.colModel[a.p.keyIndex+e+f+d].name;for(e=0;e<c;e++)f=b.jgrid.getAccessor(a.p.data[e],d),void 0===f&&(f=String(e+1)),a.p._index[f]=e},$=function(c,d,e,f,g,h){var l="-1",k="",m;d=d?"display:none;":"";e="ui-widget-content jqgrow ui-row-"+ -a.p.direction+(e?" "+e:"")+(h?" ui-state-highlight":"");h=b(a).triggerHandler("jqGridRowAttr",[f,g,c]);"object"!==typeof h&&(h=b.isFunction(a.p.rowattr)?a.p.rowattr.call(a,f,g,c):{});if(!b.isEmptyObject(h)){h.hasOwnProperty("id")&&(c=h.id,delete h.id);h.hasOwnProperty("tabindex")&&(l=h.tabindex,delete h.tabindex);h.hasOwnProperty("style")&&(d+=h.style,delete h.style);h.hasOwnProperty("class")&&(e+=" "+h["class"],delete h["class"]);try{delete h.role}catch(n){}for(m in h)h.hasOwnProperty(m)&&(k+=" "+ -m+"="+h[m])}return'<tr role="row" id="'+c+'" tabindex="'+l+'" class="'+e+'"'+(""===d?"":' style="'+d+'"')+k+">"},K=function(c,d,e,f,g){var h=new Date,l="local"!==a.p.datatype&&a.p.loadonce||"xmlstring"===a.p.datatype,k=a.p.xmlReader,m="local"===a.p.datatype?"local":"xml";l&&(a.p.data=[],a.p._index={},a.p.localReader.id="_id_");a.p.reccount=0;if(b.isXMLDoc(c)){-1!==a.p.treeANode||a.p.scroll?e=1<e?e:1:(X.call(a,!1,!0),e=1);var n=b(a),C,A,R=0,p,u=!0===a.p.multiselect?1:0,z=0,x,q=!0===a.p.rownumbers? -1:0,t,Z=[],aa,v={},w,H,s=[],L=!0===a.p.altRows?a.p.altclass:"",ia;!0===a.p.subGrid&&(z=1,x=b.jgrid.getMethod("addSubGridCell"));k.repeatitems||(Z=ea(m));t=!1===a.p.keyIndex?b.isFunction(k.id)?k.id.call(a,c):k.id:a.p.keyIndex;0<Z.length&&!isNaN(t)&&(t=a.p.keyName);m=-1===String(t).indexOf("[")?Z.length?function(a,c){return b(t,a).text()||c}:function(a,c){return b(k.cell,a).eq(t).text()||c}:function(a,b){return a.getAttribute(t.replace(/[\[\]]/g,""))||b};a.p.userData={};a.p.page=r(b.jgrid.getXmlData(c, -k.page),a.p.page);a.p.lastpage=r(b.jgrid.getXmlData(c,k.total),1);a.p.records=r(b.jgrid.getXmlData(c,k.records));b.isFunction(k.userdata)?a.p.userData=k.userdata.call(a,c)||{}:b.jgrid.getXmlData(c,k.userdata,!0).each(function(){a.p.userData[this.getAttribute("name")]=b(this).text()});c=b.jgrid.getXmlData(c,k.root,!0);(c=b.jgrid.getXmlData(c,k.row,!0))||(c=[]);var S=c.length,I=0,y=[],D=parseInt(a.p.rowNum,10),B=a.p.scroll?b.jgrid.randId():1;0<S&&0>=a.p.page&&(a.p.page=1);if(c&&S){g&&(D*=g+1);g=b.isFunction(a.p.afterInsertRow); -var F=!1,J;a.p.grouping&&(F=!0===a.p.groupingView.groupCollapse,J=b.jgrid.getMethod("groupingPrepare"));for(;I<S;){w=c[I];H=m(w,B+I);H=a.p.idPrefix+H;C=0===e?0:e+1;ia=1===(C+I)%2?L:"";var K=s.length;s.push("");q&&s.push(M(0,I,a.p.page,a.p.rowNum));u&&s.push(U(H,q,I,!1));z&&s.push(x.call(n,u+q,I+e));if(k.repeatitems){aa||(aa=W(u+z+q));var N=b.jgrid.getXmlData(w,k.cell,!0);b.each(aa,function(b){var c=N[this];if(!c)return!1;p=c.textContent||c.text;v[a.p.colModel[b+u+z+q].name]=p;s.push(G(H,p,b+u+z+q, -I+e,w,v))})}else for(C=0;C<Z.length;C++)p=b.jgrid.getXmlData(w,Z[C]),v[a.p.colModel[C+u+z+q].name]=p,s.push(G(H,p,C+u+z+q,I+e,w,v));s[K]=$(H,F,ia,v,w,!1);s.push("</tr>");a.p.grouping&&(y.push(s),a.p.groupingView._locgr||J.call(n,v,I),s=[]);if(l||!0===a.p.treeGrid)v._id_=b.jgrid.stripPref(a.p.idPrefix,H),a.p.data.push(v),a.p._index[v._id_]=a.p.data.length-1;!1===a.p.gridview&&(b("tbody:first",d).append(s.join("")),n.triggerHandler("jqGridAfterInsertRow",[H,v,w]),g&&a.p.afterInsertRow.call(a,H,v,w), -s=[]);v={};R++;I++;if(R===D)break}}!0===a.p.gridview&&(A=-1<a.p.treeANode?a.p.treeANode:0,a.p.grouping?(l||n.jqGrid("groupingRender",y,a.p.colModel.length,a.p.page,D),y=null):!0===a.p.treeGrid&&0<A?b(a.rows[A]).after(s.join("")):b("tbody:first",d).append(s.join("")));if(!0===a.p.subGrid)try{n.jqGrid("addSubGrid",u+q)}catch(Q){}a.p.totaltime=new Date-h;0<R&&0===a.p.records&&(a.p.records=S);s=null;if(!0===a.p.treeGrid)try{n.jqGrid("setTreeNode",A+1,R+A+1)}catch(O){}a.p.treeGrid||a.p.scroll||(a.grid.bDiv.scrollTop= -0);a.p.reccount=R;a.p.treeANode=-1;a.p.userDataOnFooter&&n.jqGrid("footerData","set",a.p.userData,!0);l&&(a.p.records=S,a.p.lastpage=Math.ceil(S/D));f||a.updatepager(!1,!0);if(l){for(;R<S;){w=c[R];H=m(w,R+B);H=a.p.idPrefix+H;if(k.repeatitems){aa||(aa=W(u+z+q));var P=b.jgrid.getXmlData(w,k.cell,!0);b.each(aa,function(b){var c=P[this];if(!c)return!1;p=c.textContent||c.text;v[a.p.colModel[b+u+z+q].name]=p})}else for(C=0;C<Z.length;C++)p=b.jgrid.getXmlData(w,Z[C]),v[a.p.colModel[C+u+z+q].name]=p;v._id_= -b.jgrid.stripPref(a.p.idPrefix,H);a.p.grouping&&J.call(n,v,R);a.p.data.push(v);a.p._index[v._id_]=a.p.data.length-1;v={};R++}a.p.grouping&&(a.p.groupingView._locgr=!0,n.jqGrid("groupingRender",y,a.p.colModel.length,a.p.page,D),y=null)}}},Y=function(c,d,e,f,g){var h=new Date;if(c){-1!==a.p.treeANode||a.p.scroll?e=1<e?e:1:(X.call(a,!1,!0),e=1);var k,l="local"!==a.p.datatype&&a.p.loadonce||"jsonstring"===a.p.datatype;l&&(a.p.data=[],a.p._index={},a.p.localReader.id="_id_");a.p.reccount=0;"local"===a.p.datatype? -(d=a.p.localReader,k="local"):(d=a.p.jsonReader,k="json");var m=b(a),n=0,C,A,p,q=[],u=a.p.multiselect?1:0,z=!0===a.p.subGrid?1:0,x,t=!0===a.p.rownumbers?1:0,D=W(u+z+t);k=ea(k);var y,B,v,w={},H,s,L=[],ia=!0===a.p.altRows?a.p.altclass:"",S;a.p.page=r(b.jgrid.getAccessor(c,d.page),a.p.page);a.p.lastpage=r(b.jgrid.getAccessor(c,d.total),1);a.p.records=r(b.jgrid.getAccessor(c,d.records));a.p.userData=b.jgrid.getAccessor(c,d.userdata)||{};z&&(x=b.jgrid.getMethod("addSubGridCell"));v=!1===a.p.keyIndex?b.isFunction(d.id)? -d.id.call(a,c):d.id:a.p.keyIndex;d.repeatitems||(q=k,0<q.length&&!isNaN(v)&&(v=a.p.keyName));B=b.jgrid.getAccessor(c,d.root);null==B&&b.isArray(c)&&(B=c);B||(B=[]);c=B.length;A=0;0<c&&0>=a.p.page&&(a.p.page=1);var I=parseInt(a.p.rowNum,10),F=a.p.scroll?b.jgrid.randId():1,J=!1,K;g&&(I*=g+1);"local"!==a.p.datatype||a.p.deselectAfterSort||(J=!0);var N=b.isFunction(a.p.afterInsertRow),P=[],Q=!1,O;a.p.grouping&&(Q=!0===a.p.groupingView.groupCollapse,O=b.jgrid.getMethod("groupingPrepare"));for(;A<c;){g= -B[A];s=b.jgrid.getAccessor(g,v);void 0===s&&("number"===typeof v&&null!=a.p.colModel[v+u+z+t]&&(s=b.jgrid.getAccessor(g,a.p.colModel[v+u+z+t].name)),void 0===s&&(s=F+A,0===q.length&&d.cell&&(C=b.jgrid.getAccessor(g,d.cell)||g,s=null!=C&&void 0!==C[v]?C[v]:s)));s=a.p.idPrefix+s;C=1===e?0:e;S=1===(C+A)%2?ia:"";J&&(K=a.p.multiselect?-1!==b.inArray(s,a.p.selarrrow):s===a.p.selrow);var T=L.length;L.push("");t&&L.push(M(0,A,a.p.page,a.p.rowNum));u&&L.push(U(s,t,A,K));z&&L.push(x.call(m,u+t,A+e));y=k;d.repeatitems&& -(d.cell&&(g=b.jgrid.getAccessor(g,d.cell)||g),b.isArray(g)&&(y=D));for(p=0;p<y.length;p++)C=b.jgrid.getAccessor(g,y[p]),w[a.p.colModel[p+u+z+t].name]=C,L.push(G(s,C,p+u+z+t,A+e,g,w));L[T]=$(s,Q,S,w,g,K);L.push("</tr>");a.p.grouping&&(P.push(L),a.p.groupingView._locgr||O.call(m,w,A),L=[]);if(l||!0===a.p.treeGrid)w._id_=b.jgrid.stripPref(a.p.idPrefix,s),a.p.data.push(w),a.p._index[w._id_]=a.p.data.length-1;!1===a.p.gridview&&(b("#"+b.jgrid.jqID(a.p.id)+" tbody:first").append(L.join("")),m.triggerHandler("jqGridAfterInsertRow", -[s,w,g]),N&&a.p.afterInsertRow.call(a,s,w,g),L=[]);w={};n++;A++;if(n===I)break}!0===a.p.gridview&&(H=-1<a.p.treeANode?a.p.treeANode:0,a.p.grouping?l||(m.jqGrid("groupingRender",P,a.p.colModel.length,a.p.page,I),P=null):!0===a.p.treeGrid&&0<H?b(a.rows[H]).after(L.join("")):b("#"+b.jgrid.jqID(a.p.id)+" tbody:first").append(L.join("")));if(!0===a.p.subGrid)try{m.jqGrid("addSubGrid",u+t)}catch(V){}a.p.totaltime=new Date-h;0<n&&0===a.p.records&&(a.p.records=c);if(!0===a.p.treeGrid)try{m.jqGrid("setTreeNode", -H+1,n+H+1)}catch(Y){}a.p.treeGrid||a.p.scroll||(a.grid.bDiv.scrollTop=0);a.p.reccount=n;a.p.treeANode=-1;a.p.userDataOnFooter&&m.jqGrid("footerData","set",a.p.userData,!0);l&&(a.p.records=c,a.p.lastpage=Math.ceil(c/I));f||a.updatepager(!1,!0);if(l){for(;n<c&&B[n];){g=B[n];s=b.jgrid.getAccessor(g,v);void 0===s&&("number"===typeof v&&null!=a.p.colModel[v+u+z+t]&&(s=b.jgrid.getAccessor(g,a.p.colModel[v+u+z+t].name)),void 0===s&&(s=F+n,0===q.length&&d.cell&&(e=b.jgrid.getAccessor(g,d.cell)||g,s=null!= -e&&void 0!==e[v]?e[v]:s)));if(g){s=a.p.idPrefix+s;y=k;d.repeatitems&&(d.cell&&(g=b.jgrid.getAccessor(g,d.cell)||g),b.isArray(g)&&(y=D));for(p=0;p<y.length;p++)w[a.p.colModel[p+u+z+t].name]=b.jgrid.getAccessor(g,y[p]);w._id_=b.jgrid.stripPref(a.p.idPrefix,s);a.p.grouping&&O.call(m,w,n);a.p.data.push(w);a.p._index[w._id_]=a.p.data.length-1;w={}}n++}a.p.grouping&&(a.p.groupingView._locgr=!0,m.jqGrid("groupingRender",P,a.p.colModel.length,a.p.page,I))}}},oa=function(){function c(a){var b=0,d,e,g,h,k; -if(null!=a.groups){(e=a.groups.length&&"OR"===a.groupOp.toString().toUpperCase())&&u.orBegin();for(d=0;d<a.groups.length;d++){0<b&&e&&u.or();try{c(a.groups[d])}catch(l){alert(l)}b++}e&&u.orEnd()}if(null!=a.rules)try{(g=a.rules.length&&"OR"===a.groupOp.toString().toUpperCase())&&u.orBegin();for(d=0;d<a.rules.length;d++)k=a.rules[d],h=a.groupOp.toString().toUpperCase(),q[k.op]&&k.field&&(0<b&&h&&"OR"===h&&(u=u.or()),u=q[k.op](u,h)(k.field,k.data,f[k.field])),b++;g&&u.orEnd()}catch(m){alert(m)}}var d= -a.p.multiSort?[]:"",e=[],g=!1,f={},h=[],k=[],l,m,n;if(b.isArray(a.p.data)){var p=a.p.grouping?a.p.groupingView:!1,A,r;b.each(a.p.colModel,function(){m=this.sorttype||"text";"date"===m||"datetime"===m?(this.formatter&&"string"===typeof this.formatter&&"date"===this.formatter?(l=this.formatoptions&&this.formatoptions.srcformat?this.formatoptions.srcformat:b.jgrid.formatter.date.srcformat,n=this.formatoptions&&this.formatoptions.newformat?this.formatoptions.newformat:b.jgrid.formatter.date.newformat): -l=n=this.datefmt||"Y-m-d",f[this.name]={stype:m,srcfmt:l,newfmt:n,sfunc:this.sortfunc||null}):f[this.name]={stype:m,srcfmt:"",newfmt:"",sfunc:this.sortfunc||null};if(a.p.grouping)for(r=0,A=p.groupField.length;r<A;r++)if(this.name===p.groupField[r]){var c=this.name;this.index&&(c=this.index);h[r]=f[c];k[r]=c}a.p.multiSort?this.lso&&(d.push(this.name),c=this.lso.split("-"),e.push(c[c.length-1])):g||this.index!==a.p.sortname&&this.name!==a.p.sortname||(d=this.name,g=!0)});if(a.p.treeGrid)b(a).jqGrid("SortTree", -d,a.p.sortorder,f[d].stype||"text",f[d].srcfmt||"");else{var q={eq:function(a){return a.equals},ne:function(a){return a.notEquals},lt:function(a){return a.less},le:function(a){return a.lessOrEquals},gt:function(a){return a.greater},ge:function(a){return a.greaterOrEquals},cn:function(a){return a.contains},nc:function(a,b){return"OR"===b?a.orNot().contains:a.andNot().contains},bw:function(a){return a.startsWith},bn:function(a,b){return"OR"===b?a.orNot().startsWith:a.andNot().startsWith},en:function(a, -b){return"OR"===b?a.orNot().endsWith:a.andNot().endsWith},ew:function(a){return a.endsWith},ni:function(a,b){return"OR"===b?a.orNot().equals:a.andNot().equals},"in":function(a){return a.equals},nu:function(a){return a.isNull},nn:function(a,b){return"OR"===b?a.orNot().isNull:a.andNot().isNull}},u=b.jgrid.from(a.p.data);a.p.ignoreCase&&(u=u.ignoreCase());if(!0===a.p.search){var z=a.p.postData.filters;if(z)"string"===typeof z&&(z=b.jgrid.parse(z)),c(z);else try{u=q[a.p.postData.searchOper](u)(a.p.postData.searchField, -a.p.postData.searchString,f[a.p.postData.searchField])}catch(t){}}if(a.p.grouping)for(r=0;r<A;r++)u.orderBy(k[r],p.groupOrder[r],h[r].stype,h[r].srcfmt);a.p.multiSort?b.each(d,function(a){u.orderBy(this,e[a],f[this].stype,f[this].srcfmt,f[this].sfunc)}):d&&a.p.sortorder&&g&&("DESC"===a.p.sortorder.toUpperCase()?u.orderBy(a.p.sortname,"d",f[d].stype,f[d].srcfmt,f[d].sfunc):u.orderBy(a.p.sortname,"a",f[d].stype,f[d].srcfmt,f[d].sfunc));var z=u.select(),x=parseInt(a.p.rowNum,10),y=z.length,B=parseInt(a.p.page, -10),D=Math.ceil(y/x),v={};if((a.p.search||a.p.resetsearch)&&a.p.grouping&&a.p.groupingView._locgr){a.p.groupingView.groups=[];var w,G=b.jgrid.getMethod("groupingPrepare"),s,F;if(a.p.footerrow&&a.p.userDataOnFooter){for(s in a.p.userData)a.p.userData.hasOwnProperty(s)&&(a.p.userData[s]=0);F=!0}for(w=0;w<y;w++){if(F)for(s in a.p.userData)a.p.userData[s]+=parseFloat(z[w][s]||0);G.call(b(a),z[w],w,x)}}z=z.slice((B-1)*x,B*x);f=u=null;v[a.p.localReader.total]=D;v[a.p.localReader.page]=B;v[a.p.localReader.records]= -y;v[a.p.localReader.root]=z;v[a.p.localReader.userdata]=a.p.userData;z=null;return v}}},P=function(){a.grid.hDiv.loading=!0;if(!a.p.hiddengrid)switch(a.p.loadui){case "enable":b("#load_"+b.jgrid.jqID(a.p.id)).show();break;case "block":b("#lui_"+b.jgrid.jqID(a.p.id)).show(),b("#load_"+b.jgrid.jqID(a.p.id)).show()}},T=function(){a.grid.hDiv.loading=!1;switch(a.p.loadui){case "enable":b("#load_"+b.jgrid.jqID(a.p.id)).hide();break;case "block":b("#lui_"+b.jgrid.jqID(a.p.id)).hide(),b("#load_"+b.jgrid.jqID(a.p.id)).hide()}}, -Q=function(c){if(!a.grid.hDiv.loading){var d=a.p.scroll&&!1===c,e={},g,f=a.p.prmNames;0>=a.p.page&&(a.p.page=Math.min(1,a.p.lastpage));null!==f.search&&(e[f.search]=a.p.search);null!==f.nd&&(e[f.nd]=(new Date).getTime());null!==f.rows&&(e[f.rows]=a.p.rowNum);null!==f.page&&(e[f.page]=a.p.page);null!==f.sort&&(e[f.sort]=a.p.sortname);null!==f.order&&(e[f.order]=a.p.sortorder);null!==a.p.rowTotal&&null!==f.totalrows&&(e[f.totalrows]=a.p.rowTotal);var h=b.isFunction(a.p.loadComplete),k=h?a.p.loadComplete: -null,l=0;c=c||1;1<c?null!==f.npage?(e[f.npage]=c,l=c-1,c=1):k=function(b){a.p.page++;a.grid.hDiv.loading=!1;h&&a.p.loadComplete.call(a,b);Q(c-1)}:null!==f.npage&&delete a.p.postData[f.npage];if(a.p.grouping){b(a).jqGrid("groupingSetup");var m=a.p.groupingView,n,p="";for(n=0;n<m.groupField.length;n++){var r=m.groupField[n];b.each(a.p.colModel,function(a,b){b.name===r&&b.index&&(r=b.index)});p+=r+" "+m.groupOrder[n]+", "}e[f.sort]=p+e[f.sort]}b.extend(a.p.postData,e);var q=a.p.scroll?a.rows.length- -1:1,e=b(a).triggerHandler("jqGridBeforeRequest");if(!1!==e&&"stop"!==e)if(b.isFunction(a.p.datatype))a.p.datatype.call(a,a.p.postData,"load_"+a.p.id,q,c,l);else{if(b.isFunction(a.p.beforeRequest)&&(e=a.p.beforeRequest.call(a),void 0===e&&(e=!0),!1===e))return;g=a.p.datatype.toLowerCase();switch(g){case "json":case "jsonp":case "xml":case "script":b.ajax(b.extend({url:a.p.url,type:a.p.mtype,dataType:g,data:b.isFunction(a.p.serializeGridData)?a.p.serializeGridData.call(a,a.p.postData):a.p.postData, -success:function(e,f,h){if(b.isFunction(a.p.beforeProcessing)&&!1===a.p.beforeProcessing.call(a,e,f,h))T();else{"xml"===g?K(e,a.grid.bDiv,q,1<c,l):Y(e,a.grid.bDiv,q,1<c,l);b(a).triggerHandler("jqGridLoadComplete",[e]);k&&k.call(a,e);b(a).triggerHandler("jqGridAfterLoadComplete",[e]);d&&a.grid.populateVisible();if(a.p.loadonce||a.p.treeGrid)a.p.datatype="local";1===c&&T()}},error:function(d,e,f){b.isFunction(a.p.loadError)&&a.p.loadError.call(a,d,e,f);1===c&&T()},beforeSend:function(c,d){var e=!0; -b.isFunction(a.p.loadBeforeSend)&&(e=a.p.loadBeforeSend.call(a,c,d));void 0===e&&(e=!0);if(!1===e)return!1;P()}},b.jgrid.ajaxOptions,a.p.ajaxGridOptions));break;case "xmlstring":P();e="string"!==typeof a.p.datastr?a.p.datastr:b.parseXML(a.p.datastr);K(e,a.grid.bDiv);b(a).triggerHandler("jqGridLoadComplete",[e]);h&&a.p.loadComplete.call(a,e);b(a).triggerHandler("jqGridAfterLoadComplete",[e]);a.p.datatype="local";a.p.datastr=null;T();break;case "jsonstring":P();e="string"===typeof a.p.datastr?b.jgrid.parse(a.p.datastr): -a.p.datastr;Y(e,a.grid.bDiv);b(a).triggerHandler("jqGridLoadComplete",[e]);h&&a.p.loadComplete.call(a,e);b(a).triggerHandler("jqGridAfterLoadComplete",[e]);a.p.datatype="local";a.p.datastr=null;T();break;case "local":case "clientside":P(),a.p.datatype="local",e=oa(),Y(e,a.grid.bDiv,q,1<c,l),b(a).triggerHandler("jqGridLoadComplete",[e]),k&&k.call(a,e),b(a).triggerHandler("jqGridAfterLoadComplete",[e]),d&&a.grid.populateVisible(),T()}}}},ha=function(c){b("#cb_"+b.jgrid.jqID(a.p.id),a.grid.hDiv)[a.p.useProp? -"prop":"attr"]("checked",c);if(a.p.frozenColumns&&a.p.id+"_frozen")b("#cb_"+b.jgrid.jqID(a.p.id),a.grid.fhDiv)[a.p.useProp?"prop":"attr"]("checked",c)},qa=function(c,e){var d="",g="<table cellspacing='0' cellpadding='0' border='0' style='table-layout:auto;' class='ui-pg-table'><tbody><tr>",k="",l,m,n,p,q=function(c){var e;b.isFunction(a.p.onPaging)&&(e=a.p.onPaging.call(a,c));if("stop"===e)return!1;a.p.selrow=null;a.p.multiselect&&(a.p.selarrrow=[],ha(!1));a.p.savedRow=[];return!0};c=c.substr(1); -e+="_"+c;l="pg_"+c;m=c+"_left";n=c+"_center";p=c+"_right";b("#"+b.jgrid.jqID(c)).append("<div id='"+l+"' class='ui-pager-control' role='group'><table cellspacing='0' cellpadding='0' border='0' class='ui-pg-table' style='width:100%;table-layout:fixed;height:100%;' role='row'><tbody><tr><td id='"+m+"' align='left'></td><td id='"+n+"' align='center' style='white-space:pre;'></td><td id='"+p+"' align='right'></td></tr></tbody></table></div>").attr("dir","ltr");if(0<a.p.rowList.length){k="<td dir='"+f+ -"'>";k+="<select class='ui-pg-selbox' role='listbox'>";for(m=0;m<a.p.rowList.length;m++)k+='<option role="option" value="'+a.p.rowList[m]+'"'+(a.p.rowNum===a.p.rowList[m]?' selected="selected"':"")+">"+a.p.rowList[m]+"</option>";k+="</select></td>"}"rtl"===f&&(g+=k);!0===a.p.pginput&&(d="<td dir='"+f+"'>"+b.jgrid.format(a.p.pgtext||"","<input class='ui-pg-input' type='text' size='2' maxlength='7' value='0' role='textbox'/>","<span id='sp_1_"+b.jgrid.jqID(c)+"'></span>")+"</td>");!0===a.p.pgbuttons? -(m=["first"+e,"prev"+e,"next"+e,"last"+e],"rtl"===f&&m.reverse(),g+="<td id='"+m[0]+"' class='ui-pg-button ui-corner-all'><span class='ui-icon ui-icon-seek-first'></span></td>",g+="<td id='"+m[1]+"' class='ui-pg-button ui-corner-all'><span class='ui-icon ui-icon-seek-prev'></span></td>",g=g+(""!==d?"<td class='ui-pg-button ui-state-disabled' style='width:4px;'><span class='ui-separator'></span></td>"+d+"<td class='ui-pg-button ui-state-disabled' style='width:4px;'><span class='ui-separator'></span></td>": -"")+("<td id='"+m[2]+"' class='ui-pg-button ui-corner-all'><span class='ui-icon ui-icon-seek-next'></span></td>"),g+="<td id='"+m[3]+"' class='ui-pg-button ui-corner-all'><span class='ui-icon ui-icon-seek-end'></span></td>"):""!==d&&(g+=d);"ltr"===f&&(g+=k);g+="</tr></tbody></table>";!0===a.p.viewrecords&&b("td#"+c+"_"+a.p.recordpos,"#"+l).append("<div dir='"+f+"' style='text-align:"+a.p.recordpos+"' class='ui-paging-info'></div>");b("td#"+c+"_"+a.p.pagerpos,"#"+l).append(g);k=b(".ui-jqgrid").css("font-size")|| -"11px";b(document.body).append("<div id='testpg' class='ui-jqgrid ui-widget ui-widget-content' style='font-size:"+k+";visibility:hidden;' ></div>");g=b(g).clone().appendTo("#testpg").width();b("#testpg").remove();0<g&&(""!==d&&(g+=50),b("td#"+c+"_"+a.p.pagerpos,"#"+l).width(g));a.p._nvtd=[];a.p._nvtd[0]=g?Math.floor((a.p.width-g)/2):Math.floor(a.p.width/3);a.p._nvtd[1]=0;g=null;b(".ui-pg-selbox","#"+l).bind("change",function(){if(!q("records"))return!1;a.p.page=Math.round(a.p.rowNum*(a.p.page-1)/ -this.value-0.5)+1;a.p.rowNum=this.value;a.p.pager&&b(".ui-pg-selbox",a.p.pager).val(this.value);a.p.toppager&&b(".ui-pg-selbox",a.p.toppager).val(this.value);Q();return!1});!0===a.p.pgbuttons&&(b(".ui-pg-button","#"+l).hover(function(){b(this).hasClass("ui-state-disabled")?this.style.cursor="default":(b(this).addClass("ui-state-hover"),this.style.cursor="pointer")},function(){b(this).hasClass("ui-state-disabled")||(b(this).removeClass("ui-state-hover"),this.style.cursor="default")}),b("#first"+b.jgrid.jqID(e)+ -", #prev"+b.jgrid.jqID(e)+", #next"+b.jgrid.jqID(e)+", #last"+b.jgrid.jqID(e)).click(function(){if(b(this).hasClass("ui-state-disabled"))return!1;var c=r(a.p.page,1),d=r(a.p.lastpage,1),g=!1,f=!0,h=!0,k=!0,l=!0;0===d||1===d?l=k=h=f=!1:1<d&&1<=c?1===c?h=f=!1:c===d&&(l=k=!1):1<d&&0===c&&(l=k=!1,c=d-1);if(!q(this.id))return!1;this.id==="first"+e&&f&&(a.p.page=1,g=!0);this.id==="prev"+e&&h&&(a.p.page=c-1,g=!0);this.id==="next"+e&&k&&(a.p.page=c+1,g=!0);this.id==="last"+e&&l&&(a.p.page=d,g=!0);g&&Q(); -return!1}));!0===a.p.pginput&&b("input.ui-pg-input","#"+l).keypress(function(c){if(13===(c.charCode||c.keyCode||0)){if(!q("user"))return!1;b(this).val(r(b(this).val(),1));a.p.page=0<b(this).val()?b(this).val():a.p.page;Q();return!1}return this})},wa=function(c,e){var d,g="",f=a.p.colModel,h=!1,k;k=a.p.frozenColumns?e:a.grid.headers[c].el;var l="";b("span.ui-grid-ico-sort",k).addClass("ui-state-disabled");b(k).attr("aria-selected","false");if(f[c].lso)if("asc"===f[c].lso)f[c].lso+="-desc",l="desc"; -else if("desc"===f[c].lso)f[c].lso+="-asc",l="asc";else{if("asc-desc"===f[c].lso||"desc-asc"===f[c].lso)f[c].lso=""}else f[c].lso=l=f[c].firstsortorder||"asc";l?(b("span.s-ico",k).show(),b("span.ui-icon-"+l,k).removeClass("ui-state-disabled"),b(k).attr("aria-selected","true")):a.p.viewsortcols[0]||b("span.s-ico",k).hide();a.p.sortorder="";b.each(f,function(b){this.lso&&(0<b&&h&&(g+=", "),d=this.lso.split("-"),g+=f[b].index||f[b].name,g+=" "+d[d.length-1],h=!0,a.p.sortorder=d[d.length-1])});k=g.lastIndexOf(a.p.sortorder); -g=g.substring(0,k);a.p.sortname=g},ra=function(c,d,e,g,f){if(a.p.colModel[d].sortable&&!(0<a.p.savedRow.length)){e||(a.p.lastsort===d?"asc"===a.p.sortorder?a.p.sortorder="desc":"desc"===a.p.sortorder&&(a.p.sortorder="asc"):a.p.sortorder=a.p.colModel[d].firstsortorder||"asc",a.p.page=1);if(a.p.multiSort)wa(d,f);else{if(g){if(a.p.lastsort===d&&a.p.sortorder===g&&!e)return;a.p.sortorder=g}e=a.grid.headers[a.p.lastsort].el;f=a.p.frozenColumns?f:a.grid.headers[d].el;b("span.ui-grid-ico-sort",e).addClass("ui-state-disabled"); -b(e).attr("aria-selected","false");a.p.frozenColumns&&(a.grid.fhDiv.find("span.ui-grid-ico-sort").addClass("ui-state-disabled"),a.grid.fhDiv.find("th").attr("aria-selected","false"));b("span.ui-icon-"+a.p.sortorder,f).removeClass("ui-state-disabled");b(f).attr("aria-selected","true");a.p.viewsortcols[0]||a.p.lastsort===d||(a.p.frozenColumns&&a.grid.fhDiv.find("span.s-ico").hide(),b("span.s-ico",e).hide(),b("span.s-ico",f).show());c=c.substring(5+a.p.id.length+1);a.p.sortname=a.p.colModel[d].index|| -c}"stop"===b(a).triggerHandler("jqGridSortCol",[a.p.sortname,d,a.p.sortorder])?a.p.lastsort=d:b.isFunction(a.p.onSortCol)&&"stop"===a.p.onSortCol.call(a,a.p.sortname,d,a.p.sortorder)?a.p.lastsort=d:("local"===a.p.datatype?a.p.deselectAfterSort&&b(a).jqGrid("resetSelection"):(a.p.selrow=null,a.p.multiselect&&ha(!1),a.p.selarrrow=[],a.p.savedRow=[]),a.p.scroll&&(f=a.grid.bDiv.scrollLeft,X.call(a,!0,!1),a.grid.hDiv.scrollLeft=f),a.p.subGrid&&"local"===a.p.datatype&&b("td.sgexpanded","#"+b.jgrid.jqID(a.p.id)).each(function(){b(this).trigger("click")}), -Q(),a.p.lastsort=d,a.p.sortname!==c&&d&&(a.p.lastsort=d))}},xa=function(c){c=b(a.grid.headers[c].el);c=[c.position().left+c.outerWidth()];"rtl"===a.p.direction&&(c[0]=a.p.width-c[0]);c[0]-=a.grid.bDiv.scrollLeft;c.push(b(a.grid.hDiv).position().top);c.push(b(a.grid.bDiv).offset().top-b(a.grid.hDiv).offset().top+b(a.grid.bDiv).height());return c},sa=function(c){var d,e=a.grid.headers,g=b.jgrid.getCellIndex(c);for(d=0;d<e.length;d++)if(c===e[d].el){g=d;break}return g};this.p.id=this.id;-1===b.inArray(a.p.multikey, -["shiftKey","altKey","ctrlKey"])&&(a.p.multikey=!1);a.p.keyIndex=!1;a.p.keyName=!1;for(g=0;g<a.p.colModel.length;g++)a.p.colModel[g]=b.extend(!0,{},a.p.cmTemplate,a.p.colModel[g].template||{},a.p.colModel[g]),!1===a.p.keyIndex&&!0===a.p.colModel[g].key&&(a.p.keyIndex=g);a.p.sortorder=a.p.sortorder.toLowerCase();b.jgrid.cell_width=b.jgrid.cellWidth();!0===a.p.grouping&&(a.p.scroll=!1,a.p.rownumbers=!1,a.p.treeGrid=!1,a.p.gridview=!0);if(!0===this.p.treeGrid){try{b(this).jqGrid("setTreeGrid")}catch(za){}"local"!== -a.p.datatype&&(a.p.localReader={id:"_id_"})}if(this.p.subGrid)try{b(a).jqGrid("setSubGrid")}catch(Aa){}this.p.multiselect&&(this.p.colNames.unshift("<input role='checkbox' id='cb_"+this.p.id+"' class='cbox' type='checkbox'/>"),this.p.colModel.unshift({name:"cb",width:b.jgrid.cell_width?a.p.multiselectWidth+a.p.cellLayout:a.p.multiselectWidth,sortable:!1,resizable:!1,hidedlg:!0,search:!1,align:"center",fixed:!0}));this.p.rownumbers&&(this.p.colNames.unshift(""),this.p.colModel.unshift({name:"rn",width:a.p.rownumWidth, -sortable:!1,resizable:!1,hidedlg:!0,search:!1,align:"center",fixed:!0}));a.p.xmlReader=b.extend(!0,{root:"rows",row:"row",page:"rows>page",total:"rows>total",records:"rows>records",repeatitems:!0,cell:"cell",id:"[id]",userdata:"userdata",subgrid:{root:"rows",row:"row",repeatitems:!0,cell:"cell"}},a.p.xmlReader);a.p.jsonReader=b.extend(!0,{root:"rows",page:"page",total:"total",records:"records",repeatitems:!0,cell:"cell",id:"id",userdata:"userdata",subgrid:{root:"rows",repeatitems:!0,cell:"cell"}}, -a.p.jsonReader);a.p.localReader=b.extend(!0,{root:"rows",page:"page",total:"total",records:"records",repeatitems:!1,cell:"cell",id:"id",userdata:"userdata",subgrid:{root:"rows",repeatitems:!0,cell:"cell"}},a.p.localReader);a.p.scroll&&(a.p.pgbuttons=!1,a.p.pginput=!1,a.p.rowList=[]);a.p.data.length&&O();var D="<thead><tr class='ui-jqgrid-labels' role='rowheader'>",ta,F,ja,fa,ka,y,t,ba,ua=ba="",ga=[],va=[];F=[];if(!0===a.p.shrinkToFit&&!0===a.p.forceFit)for(g=a.p.colModel.length-1;0<=g;g--)if(!a.p.colModel[g].hidden){a.p.colModel[g].resizable= -!1;break}"horizontal"===a.p.viewsortcols[1]&&(ba=" ui-i-asc",ua=" ui-i-desc");ta=n?"class='ui-th-div-ie'":"";ba="<span class='s-ico' style='display:none'><span sort='asc' class='ui-grid-ico-sort ui-icon-asc"+ba+" ui-state-disabled ui-icon ui-icon-triangle-1-n ui-sort-"+f+"'></span>"+("<span sort='desc' class='ui-grid-ico-sort ui-icon-desc"+ua+" ui-state-disabled ui-icon ui-icon-triangle-1-s ui-sort-"+f+"'></span></span>");if(a.p.multiSort)for(ga=a.p.sortname.split(","),g=0;g<ga.length;g++)F=b.trim(ga[g]).split(" "), -ga[g]=b.trim(F[0]),va[g]=F[1]?b.trim(F[1]):a.p.sortorder||"asc";for(g=0;g<this.p.colNames.length;g++)F=a.p.headertitles?' title="'+b.jgrid.stripHtml(a.p.colNames[g])+'"':"",D+="<th id='"+a.p.id+"_"+a.p.colModel[g].name+"' role='columnheader' class='ui-state-default ui-th-column ui-th-"+f+"'"+F+">",F=a.p.colModel[g].index||a.p.colModel[g].name,D+="<div id='jqgh_"+a.p.id+"_"+a.p.colModel[g].name+"' "+ta+">"+a.p.colNames[g],a.p.colModel[g].width=a.p.colModel[g].width?parseInt(a.p.colModel[g].width,10): -150,"boolean"!==typeof a.p.colModel[g].title&&(a.p.colModel[g].title=!0),a.p.colModel[g].lso="",F===a.p.sortname&&(a.p.lastsort=g),a.p.multiSort&&(F=b.inArray(F,ga),-1!==F&&(a.p.colModel[g].lso=va[F])),D+=ba+"</div></th>";D+="</tr></thead>";ba=null;b(this).append(D);b("thead tr:first th",this).hover(function(){b(this).addClass("ui-state-hover")},function(){b(this).removeClass("ui-state-hover")});if(this.p.multiselect){var la=[],ca;b("#cb_"+b.jgrid.jqID(a.p.id),this).bind("click",function(){a.p.selarrrow= -[];var c=!0===a.p.frozenColumns?a.p.id+"_frozen":"";this.checked?(b(a.rows).each(function(d){0<d&&!b(this).hasClass("ui-subgrid")&&!b(this).hasClass("jqgroup")&&!b(this).hasClass("ui-state-disabled")&&(b("#jqg_"+b.jgrid.jqID(a.p.id)+"_"+b.jgrid.jqID(this.id))[a.p.useProp?"prop":"attr"]("checked",!0),b(this).addClass("ui-state-highlight").attr("aria-selected","true"),a.p.selarrrow.push(this.id),a.p.selrow=this.id,c&&(b("#jqg_"+b.jgrid.jqID(a.p.id)+"_"+b.jgrid.jqID(this.id),a.grid.fbDiv)[a.p.useProp? -"prop":"attr"]("checked",!0),b("#"+b.jgrid.jqID(this.id),a.grid.fbDiv).addClass("ui-state-highlight")))}),ca=!0,la=[]):(b(a.rows).each(function(d){0<d&&!b(this).hasClass("ui-subgrid")&&!b(this).hasClass("ui-state-disabled")&&(b("#jqg_"+b.jgrid.jqID(a.p.id)+"_"+b.jgrid.jqID(this.id))[a.p.useProp?"prop":"attr"]("checked",!1),b(this).removeClass("ui-state-highlight").attr("aria-selected","false"),la.push(this.id),c&&(b("#jqg_"+b.jgrid.jqID(a.p.id)+"_"+b.jgrid.jqID(this.id),a.grid.fbDiv)[a.p.useProp? -"prop":"attr"]("checked",!1),b("#"+b.jgrid.jqID(this.id),a.grid.fbDiv).removeClass("ui-state-highlight")))}),a.p.selrow=null,ca=!1);b(a).triggerHandler("jqGridSelectAll",[ca?a.p.selarrrow:la,ca]);b.isFunction(a.p.onSelectAll)&&a.p.onSelectAll.call(a,ca?a.p.selarrrow:la,ca)})}!0===a.p.autowidth&&(D=b(m).innerWidth(),a.p.width=0<D?D:"nw");(function(){var d=0,e=b.jgrid.cell_width?0:r(a.p.cellLayout,0),g=0,f,h=r(a.p.scrollOffset,0),k,m=!1,n,p=0,q;b.each(a.p.colModel,function(){void 0===this.hidden&&(this.hidden= -!1);if(a.p.grouping&&a.p.autowidth){var c=b.inArray(this.name,a.p.groupingView.groupField);0<=c&&a.p.groupingView.groupColumnShow.length>c&&(this.hidden=!a.p.groupingView.groupColumnShow[c])}this.widthOrg=k=r(this.width,0);!1===this.hidden&&(d+=k+e,this.fixed?p+=k+e:g++)});isNaN(a.p.width)&&(a.p.width=d+(!1!==a.p.shrinkToFit||isNaN(a.p.height)?0:h));c.width=a.p.width;a.p.tblwidth=d;!1===a.p.shrinkToFit&&!0===a.p.forceFit&&(a.p.forceFit=!1);!0===a.p.shrinkToFit&&0<g&&(n=c.width-e*g-p,isNaN(a.p.height)|| -(n-=h,m=!0),d=0,b.each(a.p.colModel,function(b){!1!==this.hidden||this.fixed||(this.width=k=Math.round(n*this.width/(a.p.tblwidth-e*g-p)),d+=k,f=b)}),q=0,m?c.width-p-(d+e*g)!==h&&(q=c.width-p-(d+e*g)-h):m||1===Math.abs(c.width-p-(d+e*g))||(q=c.width-p-(d+e*g)),a.p.colModel[f].width+=q,a.p.tblwidth=d+q+e*g+p,a.p.tblwidth>a.p.width&&(a.p.colModel[f].width-=a.p.tblwidth-parseInt(a.p.width,10),a.p.tblwidth=a.p.width))})();b(m).css("width",c.width+"px").append("<div class='ui-jqgrid-resize-mark' id='rs_m"+ -a.p.id+"'>&#160;</div>");b(k).css("width",c.width+"px");var D=b("thead:first",a).get(0),V="";a.p.footerrow&&(V+="<table role='grid' style='width:"+a.p.tblwidth+"px' class='ui-jqgrid-ftable' cellspacing='0' cellpadding='0' border='0'><tbody><tr role='row' class='ui-widget-content footrow footrow-"+f+"'>");var k=b("tr:first",D),da="<tr class='jqgfirstrow' role='row' style='height:auto'>";a.p.disableClick=!1;b("th",k).each(function(d){ja=a.p.colModel[d].width;void 0===a.p.colModel[d].resizable&&(a.p.colModel[d].resizable= -!0);a.p.colModel[d].resizable?(fa=document.createElement("span"),b(fa).html("&#160;").addClass("ui-jqgrid-resize ui-jqgrid-resize-"+f).css("cursor","col-resize"),b(this).addClass(a.p.resizeclass)):fa="";b(this).css("width",ja+"px").prepend(fa);fa=null;var e="";a.p.colModel[d].hidden&&(b(this).css("display","none"),e="display:none;");da+="<td role='gridcell' style='height:0px;width:"+ja+"px;"+e+"'></td>";c.headers[d]={width:ja,el:this};ka=a.p.colModel[d].sortable;"boolean"!==typeof ka&&(ka=a.p.colModel[d].sortable= -!0);e=a.p.colModel[d].name;"cb"!==e&&"subgrid"!==e&&"rn"!==e&&a.p.viewsortcols[2]&&b(">div",this).addClass("ui-jqgrid-sortable");ka&&(a.p.multiSort?a.p.viewsortcols[0]?(b("div span.s-ico",this).show(),a.p.colModel[d].lso&&b("div span.ui-icon-"+a.p.colModel[d].lso,this).removeClass("ui-state-disabled")):a.p.colModel[d].lso&&(b("div span.s-ico",this).show(),b("div span.ui-icon-"+a.p.colModel[d].lso,this).removeClass("ui-state-disabled")):a.p.viewsortcols[0]?(b("div span.s-ico",this).show(),d===a.p.lastsort&& -b("div span.ui-icon-"+a.p.sortorder,this).removeClass("ui-state-disabled")):d===a.p.lastsort&&(b("div span.s-ico",this).show(),b("div span.ui-icon-"+a.p.sortorder,this).removeClass("ui-state-disabled")));a.p.footerrow&&(V+="<td role='gridcell' "+p(d,0,"",null,"",!1)+">&#160;</td>")}).mousedown(function(d){if(1===b(d.target).closest("th>span.ui-jqgrid-resize").length){var e=sa(this);if(!0===a.p.forceFit){var g=a.p,f=e,h;for(h=e+1;h<a.p.colModel.length;h++)if(!0!==a.p.colModel[h].hidden){f=h;break}g.nv= -f-e}c.dragStart(e,d,xa(e));return!1}}).click(function(c){if(a.p.disableClick)return a.p.disableClick=!1;var d="th>div.ui-jqgrid-sortable",e,g;a.p.viewsortcols[2]||(d="th>div>span>span.ui-grid-ico-sort");c=b(c.target).closest(d);if(1===c.length){var f;if(a.p.frozenColumns){var h=b(this)[0].id.substring(a.p.id.length+1);b(a.p.colModel).each(function(a){if(this.name===h)return f=a,!1})}else f=sa(this);a.p.viewsortcols[2]||(e=!0,g=c.attr("sort"));null!=f&&ra(b("div",this)[0].id,f,e,g,this);return!1}}); -if(a.p.sortable&&b.fn.sortable)try{b(a).jqGrid("sortableColumns",k)}catch(Ba){}a.p.footerrow&&(V+="</tr></tbody></table>");da+="</tr>";k=document.createElement("tbody");this.appendChild(k);b(this).addClass("ui-jqgrid-btable").append(da);var da=null,k=b("<table class='ui-jqgrid-htable' style='width:"+a.p.tblwidth+"px' role='grid' aria-labelledby='gbox_"+this.id+"' cellspacing='0' cellpadding='0' border='0'></table>").append(D),J=a.p.caption&&!0===a.p.hiddengrid?!0:!1;g=b("<div class='ui-jqgrid-hbox"+ -("rtl"===f?"-rtl":"")+"'></div>");D=null;c.hDiv=document.createElement("div");b(c.hDiv).css({width:c.width+"px"}).addClass("ui-state-default ui-jqgrid-hdiv").append(g);b(g).append(k);k=null;J&&b(c.hDiv).hide();a.p.pager&&("string"===typeof a.p.pager?"#"!==a.p.pager.substr(0,1)&&(a.p.pager="#"+a.p.pager):a.p.pager="#"+b(a.p.pager).attr("id"),b(a.p.pager).css({width:c.width+"px"}).addClass("ui-state-default ui-jqgrid-pager ui-corner-bottom").appendTo(m),J&&b(a.p.pager).hide(),qa(a.p.pager,""));!1=== -a.p.cellEdit&&!0===a.p.hoverrows&&b(a).bind("mouseover",function(a){t=b(a.target).closest("tr.jqgrow");"ui-subgrid"!==b(t).attr("class")&&b(t).addClass("ui-state-hover")}).bind("mouseout",function(a){t=b(a.target).closest("tr.jqgrow");b(t).removeClass("ui-state-hover")});var B,N,ma;b(a).before(c.hDiv).click(function(c){y=c.target;t=b(y,a.rows).closest("tr.jqgrow");if(0===b(t).length||-1<t[0].className.indexOf("ui-state-disabled")||(b(y,a).closest("table.ui-jqgrid-btable").attr("id")||"").replace("_frozen", -"")!==a.id)return this;var d=b(y).hasClass("cbox"),e=b(a).triggerHandler("jqGridBeforeSelectRow",[t[0].id,c]);(e=!1===e||"stop"===e?!1:!0)&&b.isFunction(a.p.beforeSelectRow)&&(e=a.p.beforeSelectRow.call(a,t[0].id,c));if("A"!==y.tagName&&("INPUT"!==y.tagName&&"TEXTAREA"!==y.tagName&&"OPTION"!==y.tagName&&"SELECT"!==y.tagName||d)&&!0===e)if(B=t[0].id,N=b.jgrid.getCellIndex(y),ma=b(y).closest("td,th").html(),b(a).triggerHandler("jqGridCellSelect",[B,N,ma,c]),b.isFunction(a.p.onCellSelect)&&a.p.onCellSelect.call(a, -B,N,ma,c),!0===a.p.cellEdit)if(a.p.multiselect&&d)b(a).jqGrid("setSelection",B,!0,c);else{B=t[0].rowIndex;try{b(a).jqGrid("editCell",B,N,!0)}catch(g){}}else if(a.p.multikey)c[a.p.multikey]?b(a).jqGrid("setSelection",B,!0,c):a.p.multiselect&&d&&(d=b("#jqg_"+b.jgrid.jqID(a.p.id)+"_"+B).is(":checked"),b("#jqg_"+b.jgrid.jqID(a.p.id)+"_"+B)[a.p.useProp?"prop":"attr"]("checked",d));else{if(a.p.multiselect&&a.p.multiboxonly&&!d){var f=a.p.frozenColumns?a.p.id+"_frozen":"";b(a.p.selarrrow).each(function(c, -d){var e=b(a).jqGrid("getGridRowById",d);b(e).removeClass("ui-state-highlight");b("#jqg_"+b.jgrid.jqID(a.p.id)+"_"+b.jgrid.jqID(d))[a.p.useProp?"prop":"attr"]("checked",!1);f&&(b("#"+b.jgrid.jqID(d),"#"+b.jgrid.jqID(f)).removeClass("ui-state-highlight"),b("#jqg_"+b.jgrid.jqID(a.p.id)+"_"+b.jgrid.jqID(d),"#"+b.jgrid.jqID(f))[a.p.useProp?"prop":"attr"]("checked",!1))});a.p.selarrrow=[]}b(a).jqGrid("setSelection",B,!0,c)}}).bind("reloadGrid",function(c,d){!0===a.p.treeGrid&&(a.p.datatype=a.p.treedatatype); -d&&d.current&&a.grid.selectionPreserver(a);"local"===a.p.datatype?(b(a).jqGrid("resetSelection"),a.p.data.length&&O()):a.p.treeGrid||(a.p.selrow=null,a.p.multiselect&&(a.p.selarrrow=[],ha(!1)),a.p.savedRow=[]);a.p.scroll&&X.call(a,!0,!1);if(d&&d.page){var e=d.page;e>a.p.lastpage&&(e=a.p.lastpage);1>e&&(e=1);a.p.page=e;a.grid.bDiv.scrollTop=a.grid.prevRowHeight?(e-1)*a.grid.prevRowHeight*a.p.rowNum:0}a.grid.prevRowHeight&&a.p.scroll?(delete a.p.lastpage,a.grid.populateVisible()):a.grid.populate(); -!0===a.p._inlinenav&&b(a).jqGrid("showAddEditButtons");return!1}).dblclick(function(c){y=c.target;t=b(y,a.rows).closest("tr.jqgrow");0!==b(t).length&&(B=t[0].rowIndex,N=b.jgrid.getCellIndex(y),b(a).triggerHandler("jqGridDblClickRow",[b(t).attr("id"),B,N,c]),b.isFunction(a.p.ondblClickRow)&&a.p.ondblClickRow.call(a,b(t).attr("id"),B,N,c))}).bind("contextmenu",function(c){y=c.target;t=b(y,a.rows).closest("tr.jqgrow");0!==b(t).length&&(a.p.multiselect||b(a).jqGrid("setSelection",t[0].id,!0,c),B=t[0].rowIndex, -N=b.jgrid.getCellIndex(y),b(a).triggerHandler("jqGridRightClickRow",[b(t).attr("id"),B,N,c]),b.isFunction(a.p.onRightClickRow)&&a.p.onRightClickRow.call(a,b(t).attr("id"),B,N,c))});c.bDiv=document.createElement("div");n&&"auto"===String(a.p.height).toLowerCase()&&(a.p.height="100%");b(c.bDiv).append(b('<div style="position:relative;'+(n&&8>b.jgrid.msiever()?"height:0.01%;":"")+'"></div>').append("<div></div>").append(this)).addClass("ui-jqgrid-bdiv").css({height:a.p.height+(isNaN(a.p.height)?"":"px"), -width:c.width+"px"}).scroll(c.scrollGrid);b("table:first",c.bDiv).css({width:a.p.tblwidth+"px"});b.support.tbody||2===b("tbody",this).length&&b("tbody:gt(0)",this).remove();a.p.multikey&&(b.jgrid.msie?b(c.bDiv).bind("selectstart",function(){return!1}):b(c.bDiv).bind("mousedown",function(){return!1}));J&&b(c.bDiv).hide();c.cDiv=document.createElement("div");var na=!0===a.p.hidegrid?b("<a role='link' class='ui-jqgrid-titlebar-close ui-corner-all HeaderButton' />").hover(function(){na.addClass("ui-state-hover")}, -function(){na.removeClass("ui-state-hover")}).append("<span class='ui-icon ui-icon-circle-triangle-n'></span>").css("rtl"===f?"left":"right","0px"):"";b(c.cDiv).append(na).append("<span class='ui-jqgrid-title'>"+a.p.caption+"</span>").addClass("ui-jqgrid-titlebar ui-jqgrid-caption"+("rtl"===f?"-rtl":"")+" ui-widget-header ui-corner-top ui-helper-clearfix");b(c.cDiv).insertBefore(c.hDiv);a.p.toolbar[0]&&(c.uDiv=document.createElement("div"),"top"===a.p.toolbar[1]?b(c.uDiv).insertBefore(c.hDiv):"bottom"=== -a.p.toolbar[1]&&b(c.uDiv).insertAfter(c.hDiv),"both"===a.p.toolbar[1]?(c.ubDiv=document.createElement("div"),b(c.uDiv).addClass("ui-userdata ui-state-default").attr("id","t_"+this.id).insertBefore(c.hDiv),b(c.ubDiv).addClass("ui-userdata ui-state-default").attr("id","tb_"+this.id).insertAfter(c.hDiv),J&&b(c.ubDiv).hide()):b(c.uDiv).width(c.width).addClass("ui-userdata ui-state-default").attr("id","t_"+this.id),J&&b(c.uDiv).hide());a.p.toppager&&(a.p.toppager=b.jgrid.jqID(a.p.id)+"_toppager",c.topDiv= -b("<div id='"+a.p.toppager+"'></div>")[0],a.p.toppager="#"+a.p.toppager,b(c.topDiv).addClass("ui-state-default ui-jqgrid-toppager").width(c.width).insertBefore(c.hDiv),qa(a.p.toppager,"_t"));a.p.footerrow&&(c.sDiv=b("<div class='ui-jqgrid-sdiv'></div>")[0],g=b("<div class='ui-jqgrid-hbox"+("rtl"===f?"-rtl":"")+"'></div>"),b(c.sDiv).append(g).width(c.width).insertAfter(c.hDiv),b(g).append(V),c.footers=b(".ui-jqgrid-ftable",c.sDiv)[0].rows[0].cells,a.p.rownumbers&&(c.footers[0].className="ui-state-default jqgrid-rownum"), -J&&b(c.sDiv).hide());g=null;if(a.p.caption){var ya=a.p.datatype;!0===a.p.hidegrid&&(b(".ui-jqgrid-titlebar-close",c.cDiv).click(function(d){var e=b.isFunction(a.p.onHeaderClick),g=".ui-jqgrid-bdiv, .ui-jqgrid-hdiv, .ui-jqgrid-pager, .ui-jqgrid-sdiv",f,h=this;!0===a.p.toolbar[0]&&("both"===a.p.toolbar[1]&&(g+=", #"+b(c.ubDiv).attr("id")),g+=", #"+b(c.uDiv).attr("id"));f=b(g,"#gview_"+b.jgrid.jqID(a.p.id)).length;"visible"===a.p.gridstate?b(g,"#gbox_"+b.jgrid.jqID(a.p.id)).slideUp("fast",function(){f--; -0===f&&(b("span",h).removeClass("ui-icon-circle-triangle-n").addClass("ui-icon-circle-triangle-s"),a.p.gridstate="hidden",b("#gbox_"+b.jgrid.jqID(a.p.id)).hasClass("ui-resizable")&&b(".ui-resizable-handle","#gbox_"+b.jgrid.jqID(a.p.id)).hide(),b(a).triggerHandler("jqGridHeaderClick",[a.p.gridstate,d]),e&&(J||a.p.onHeaderClick.call(a,a.p.gridstate,d)))}):"hidden"===a.p.gridstate&&b(g,"#gbox_"+b.jgrid.jqID(a.p.id)).slideDown("fast",function(){f--;0===f&&(b("span",h).removeClass("ui-icon-circle-triangle-s").addClass("ui-icon-circle-triangle-n"), -J&&(a.p.datatype=ya,Q(),J=!1),a.p.gridstate="visible",b("#gbox_"+b.jgrid.jqID(a.p.id)).hasClass("ui-resizable")&&b(".ui-resizable-handle","#gbox_"+b.jgrid.jqID(a.p.id)).show(),b(a).triggerHandler("jqGridHeaderClick",[a.p.gridstate,d]),e&&(J||a.p.onHeaderClick.call(a,a.p.gridstate,d)))});return!1}),J&&(a.p.datatype="local",b(".ui-jqgrid-titlebar-close",c.cDiv).trigger("click")))}else b(c.cDiv).hide();b(c.hDiv).after(c.bDiv).mousemove(function(a){if(c.resizing)return c.dragMove(a),!1});b(".ui-jqgrid-labels", -c.hDiv).bind("selectstart",function(){return!1});b(document).bind("mouseup.jqGrid"+a.p.id,function(){return c.resizing?(c.dragEnd(),!1):!0});a.formatCol=p;a.sortData=ra;a.updatepager=function(c,d){var e,g,f,h,k,l,m,n="",p=a.p.pager?"_"+b.jgrid.jqID(a.p.pager.substr(1)):"",q=a.p.toppager?"_"+a.p.toppager.substr(1):"";f=parseInt(a.p.page,10)-1;0>f&&(f=0);f*=parseInt(a.p.rowNum,10);k=f+a.p.reccount;if(a.p.scroll){e=b("tbody:first > tr:gt(0)",a.grid.bDiv);f=k-e.length;a.p.reccount=e.length;if(e=e.outerHeight()|| -a.grid.prevRowHeight)g=f*e,m=parseInt(a.p.records,10)*e,b(">div:first",a.grid.bDiv).css({height:m}).children("div:first").css({height:g,display:g?"":"none"}),0==a.grid.bDiv.scrollTop&&1<a.p.page&&(a.grid.bDiv.scrollTop=a.p.rowNum*(a.p.page-1)*e);a.grid.bDiv.scrollLeft=a.grid.hDiv.scrollLeft}n=a.p.pager||"";if(n+=a.p.toppager?n?","+a.p.toppager:a.p.toppager:"")m=b.jgrid.formatter.integer||{},e=r(a.p.page),g=r(a.p.lastpage),b(".selbox",n)[this.p.useProp?"prop":"attr"]("disabled",!1),!0===a.p.pginput&& -(b(".ui-pg-input",n).val(a.p.page),h=a.p.toppager?"#sp_1"+p+",#sp_1"+q:"#sp_1"+p,b(h).html(b.fmatter?b.fmatter.util.NumberFormat(a.p.lastpage,m):a.p.lastpage)),a.p.viewrecords&&(0===a.p.reccount?b(".ui-paging-info",n).html(a.p.emptyrecords):(h=f+1,l=a.p.records,b.fmatter&&(h=b.fmatter.util.NumberFormat(h,m),k=b.fmatter.util.NumberFormat(k,m),l=b.fmatter.util.NumberFormat(l,m)),b(".ui-paging-info",n).html(b.jgrid.format(a.p.recordtext,h,k,l)))),!0===a.p.pgbuttons&&(0>=e&&(e=g=0),1===e||0===e?(b("#first"+ -p+", #prev"+p).addClass("ui-state-disabled").removeClass("ui-state-hover"),a.p.toppager&&b("#first_t"+q+", #prev_t"+q).addClass("ui-state-disabled").removeClass("ui-state-hover")):(b("#first"+p+", #prev"+p).removeClass("ui-state-disabled"),a.p.toppager&&b("#first_t"+q+", #prev_t"+q).removeClass("ui-state-disabled")),e===g||0===e?(b("#next"+p+", #last"+p).addClass("ui-state-disabled").removeClass("ui-state-hover"),a.p.toppager&&b("#next_t"+q+", #last_t"+q).addClass("ui-state-disabled").removeClass("ui-state-hover")): -(b("#next"+p+", #last"+p).removeClass("ui-state-disabled"),a.p.toppager&&b("#next_t"+q+", #last_t"+q).removeClass("ui-state-disabled")));!0===c&&!0===a.p.rownumbers&&b(">td.jqgrid-rownum",a.rows).each(function(a){b(this).html(f+1+a)});d&&a.p.jqgdnd&&b(a).jqGrid("gridDnD","updateDnD");b(a).triggerHandler("jqGridGridComplete");b.isFunction(a.p.gridComplete)&&a.p.gridComplete.call(a);b(a).triggerHandler("jqGridAfterGridComplete")};a.refreshIndex=O;a.setHeadCheckBox=ha;a.constructTr=$;a.formatter=function(a, -b,c,d,e){return x(a,b,c,d,e)};b.extend(c,{populate:Q,emptyRows:X,beginReq:P,endReq:T});this.grid=c;a.addXmlData=function(b){K(b,a.grid.bDiv)};a.addJSONData=function(b){Y(b,a.grid.bDiv)};this.grid.cols=this.rows[0].cells;b(a).triggerHandler("jqGridInitGrid");b.isFunction(a.p.onInitGrid)&&a.p.onInitGrid.call(a);Q();a.p.hiddengrid=!1}}}})};b.jgrid.extend({getGridParam:function(b){var f=this[0];if(f&&f.grid)return b?void 0!==f.p[b]?f.p[b]:null:f.p},setGridParam:function(e){return this.each(function(){this.grid&& -"object"===typeof e&&b.extend(!0,this.p,e)})},getGridRowById:function(e){var f;this.each(function(){try{for(var c=this.rows.length;c--;)if(e.toString()===this.rows[c].id){f=this.rows[c];break}}catch(d){f=b(this.grid.bDiv).find("#"+b.jgrid.jqID(e))}});return f},getDataIDs:function(){var e=[],f=0,c,d=0;this.each(function(){if((c=this.rows.length)&&0<c)for(;f<c;)b(this.rows[f]).hasClass("jqgrow")&&(e[d]=this.rows[f].id,d++),f++});return e},setSelection:function(e,f,c){return this.each(function(){var d, -a,l,g,h,k;void 0!==e&&(f=!1===f?!1:!0,!(a=b(this).jqGrid("getGridRowById",e))||!a.className||-1<a.className.indexOf("ui-state-disabled")||(!0===this.p.scrollrows&&(l=b(this).jqGrid("getGridRowById",e).rowIndex,0<=l&&(d=b(this.grid.bDiv)[0].clientHeight,g=b(this.grid.bDiv)[0].scrollTop,h=b(this.rows[l]).position().top,l=this.rows[l].clientHeight,h+l>=d+g?b(this.grid.bDiv)[0].scrollTop=h-(d+g)+l+g:h<d+g&&h<g&&(b(this.grid.bDiv)[0].scrollTop=h))),!0===this.p.frozenColumns&&(k=this.p.id+"_frozen"),this.p.multiselect? -(this.setHeadCheckBox(!1),this.p.selrow=a.id,g=b.inArray(this.p.selrow,this.p.selarrrow),-1===g?("ui-subgrid"!==a.className&&b(a).addClass("ui-state-highlight").attr("aria-selected","true"),d=!0,this.p.selarrrow.push(this.p.selrow)):("ui-subgrid"!==a.className&&b(a).removeClass("ui-state-highlight").attr("aria-selected","false"),d=!1,this.p.selarrrow.splice(g,1),h=this.p.selarrrow[0],this.p.selrow=void 0===h?null:h),b("#jqg_"+b.jgrid.jqID(this.p.id)+"_"+b.jgrid.jqID(a.id))[this.p.useProp?"prop":"attr"]("checked", -d),k&&(-1===g?b("#"+b.jgrid.jqID(e),"#"+b.jgrid.jqID(k)).addClass("ui-state-highlight"):b("#"+b.jgrid.jqID(e),"#"+b.jgrid.jqID(k)).removeClass("ui-state-highlight"),b("#jqg_"+b.jgrid.jqID(this.p.id)+"_"+b.jgrid.jqID(e),"#"+b.jgrid.jqID(k))[this.p.useProp?"prop":"attr"]("checked",d)),f&&(b(this).triggerHandler("jqGridSelectRow",[a.id,d,c]),this.p.onSelectRow&&this.p.onSelectRow.call(this,a.id,d,c))):"ui-subgrid"!==a.className&&(this.p.selrow!==a.id?(b(b(this).jqGrid("getGridRowById",this.p.selrow)).removeClass("ui-state-highlight").attr({"aria-selected":"false", -tabindex:"-1"}),b(a).addClass("ui-state-highlight").attr({"aria-selected":"true",tabindex:"0"}),k&&(b("#"+b.jgrid.jqID(this.p.selrow),"#"+b.jgrid.jqID(k)).removeClass("ui-state-highlight"),b("#"+b.jgrid.jqID(e),"#"+b.jgrid.jqID(k)).addClass("ui-state-highlight")),d=!0):d=!1,this.p.selrow=a.id,f&&(b(this).triggerHandler("jqGridSelectRow",[a.id,d,c]),this.p.onSelectRow&&this.p.onSelectRow.call(this,a.id,d,c)))))})},resetSelection:function(e){return this.each(function(){var f=this,c,d;!0===f.p.frozenColumns&& -(d=f.p.id+"_frozen");if(void 0!==e){c=e===f.p.selrow?f.p.selrow:e;b("#"+b.jgrid.jqID(f.p.id)+" tbody:first tr#"+b.jgrid.jqID(c)).removeClass("ui-state-highlight").attr("aria-selected","false");d&&b("#"+b.jgrid.jqID(c),"#"+b.jgrid.jqID(d)).removeClass("ui-state-highlight");if(f.p.multiselect){b("#jqg_"+b.jgrid.jqID(f.p.id)+"_"+b.jgrid.jqID(c),"#"+b.jgrid.jqID(f.p.id))[f.p.useProp?"prop":"attr"]("checked",!1);if(d)b("#jqg_"+b.jgrid.jqID(f.p.id)+"_"+b.jgrid.jqID(c),"#"+b.jgrid.jqID(d))[f.p.useProp?"prop": -"attr"]("checked",!1);f.setHeadCheckBox(!1)}c=null}else f.p.multiselect?(b(f.p.selarrrow).each(function(a,c){b(b(f).jqGrid("getGridRowById",c)).removeClass("ui-state-highlight").attr("aria-selected","false");b("#jqg_"+b.jgrid.jqID(f.p.id)+"_"+b.jgrid.jqID(c))[f.p.useProp?"prop":"attr"]("checked",!1);d&&(b("#"+b.jgrid.jqID(c),"#"+b.jgrid.jqID(d)).removeClass("ui-state-highlight"),b("#jqg_"+b.jgrid.jqID(f.p.id)+"_"+b.jgrid.jqID(c),"#"+b.jgrid.jqID(d))[f.p.useProp?"prop":"attr"]("checked",!1))}),f.setHeadCheckBox(!1), -f.p.selarrrow=[],f.p.selrow=null):f.p.selrow&&(b("#"+b.jgrid.jqID(f.p.id)+" tbody:first tr#"+b.jgrid.jqID(f.p.selrow)).removeClass("ui-state-highlight").attr("aria-selected","false"),d&&b("#"+b.jgrid.jqID(f.p.selrow),"#"+b.jgrid.jqID(d)).removeClass("ui-state-highlight"),f.p.selrow=null);!0===f.p.cellEdit&&0<=parseInt(f.p.iCol,10)&&0<=parseInt(f.p.iRow,10)&&(b("td:eq("+f.p.iCol+")",f.rows[f.p.iRow]).removeClass("edit-cell ui-state-highlight"),b(f.rows[f.p.iRow]).removeClass("selected-row ui-state-hover")); -f.p.savedRow=[]})},getRowData:function(e){var f={},c,d=!1,a,l=0;this.each(function(){var g=this,h,k;if(void 0===e)d=!0,c=[],a=g.rows.length;else{k=b(g).jqGrid("getGridRowById",e);if(!k)return f;a=2}for(;l<a;)d&&(k=g.rows[l]),b(k).hasClass("jqgrow")&&(b('td[role="gridcell"]',k).each(function(a){h=g.p.colModel[a].name;if("cb"!==h&&"subgrid"!==h&&"rn"!==h)if(!0===g.p.treeGrid&&h===g.p.ExpandColumn)f[h]=b.jgrid.htmlDecode(b("span:first",this).html());else try{f[h]=b.unformat.call(g,this,{rowId:k.id,colModel:g.p.colModel[a]}, -a)}catch(c){f[h]=b.jgrid.htmlDecode(b(this).html())}}),d&&(c.push(f),f={})),l++});return c||f},delRowData:function(e){var f=!1,c,d;this.each(function(){c=b(this).jqGrid("getGridRowById",e);if(!c)return!1;b(c).remove();this.p.records--;this.p.reccount--;this.updatepager(!0,!1);f=!0;this.p.multiselect&&(d=b.inArray(e,this.p.selarrrow),-1!==d&&this.p.selarrrow.splice(d,1));this.p.selrow=this.p.multiselect&&0<this.p.selarrrow.length?this.p.selarrrow[this.p.selarrrow.length-1]:null;if("local"===this.p.datatype){var a= -b.jgrid.stripPref(this.p.idPrefix,e),a=this.p._index[a];void 0!==a&&(this.p.data.splice(a,1),this.refreshIndex())}if(!0===this.p.altRows&&f){var l=this.p.altclass;b(this.rows).each(function(a){1===a%2?b(this).addClass(l):b(this).removeClass(l)})}});return f},setRowData:function(e,f,c){var d,a=!0,l;this.each(function(){if(!this.grid)return!1;var g=this,h,k,n=typeof c,m={};k=b(this).jqGrid("getGridRowById",e);if(!k)return!1;if(f)try{if(b(this.p.colModel).each(function(a){d=this.name;var c=b.jgrid.getAccessor(f, -d);void 0!==c&&(m[d]=this.formatter&&"string"===typeof this.formatter&&"date"===this.formatter?b.unformat.date.call(g,c,this):c,h=g.formatter(e,c,a,f,"edit"),l=this.title?{title:b.jgrid.stripHtml(h)}:{},!0===g.p.treeGrid&&d===g.p.ExpandColumn?b("td[role='gridcell']:eq("+a+") > span:first",k).html(h).attr(l):b("td[role='gridcell']:eq("+a+")",k).html(h).attr(l))}),"local"===g.p.datatype){var r=b.jgrid.stripPref(g.p.idPrefix,e),p=g.p._index[r],q;if(g.p.treeGrid)for(q in g.p.treeReader)g.p.treeReader.hasOwnProperty(q)&& -delete m[g.p.treeReader[q]];void 0!==p&&(g.p.data[p]=b.extend(!0,g.p.data[p],m));m=null}}catch(x){a=!1}a&&("string"===n?b(k).addClass(c):null!==c&&"object"===n&&b(k).css(c),b(g).triggerHandler("jqGridAfterGridComplete"))});return a},addRowData:function(e,f,c,d){c||(c="last");var a=!1,l,g,h,k,n,m,r,p,q="",x,G,U,M,ea,W;f&&(b.isArray(f)?(x=!0,c="last",G=e):(f=[f],x=!1),this.each(function(){var X=f.length;n=!0===this.p.rownumbers?1:0;h=!0===this.p.multiselect?1:0;k=!0===this.p.subGrid?1:0;x||(void 0!== -e?e=String(e):(e=b.jgrid.randId(),!1!==this.p.keyIndex&&(G=this.p.colModel[this.p.keyIndex+h+k+n].name,void 0!==f[0][G]&&(e=f[0][G]))));U=this.p.altclass;for(var O=0,$="",K={},Y=b.isFunction(this.p.afterInsertRow)?!0:!1;O<X;){M=f[O];g=[];if(x){try{e=M[G],void 0===e&&(e=b.jgrid.randId())}catch(oa){e=b.jgrid.randId()}$=!0===this.p.altRows?0===(this.rows.length-1)%2?U:"":""}W=e;e=this.p.idPrefix+e;n&&(q=this.formatCol(0,1,"",null,e,!0),g[g.length]='<td role="gridcell" class="ui-state-default jqgrid-rownum" '+ -q+">0</td>");h&&(p='<input role="checkbox" type="checkbox" id="jqg_'+this.p.id+"_"+e+'" class="cbox"/>',q=this.formatCol(n,1,"",null,e,!0),g[g.length]='<td role="gridcell" '+q+">"+p+"</td>");k&&(g[g.length]=b(this).jqGrid("addSubGridCell",h+n,1));for(r=h+k+n;r<this.p.colModel.length;r++)ea=this.p.colModel[r],l=ea.name,K[l]=M[l],p=this.formatter(e,b.jgrid.getAccessor(M,l),r,M),q=this.formatCol(r,1,p,M,e,K),g[g.length]='<td role="gridcell" '+q+">"+p+"</td>";g.unshift(this.constructTr(e,!1,$,K,M,!1)); -g[g.length]="</tr>";if(0===this.rows.length)b("table:first",this.grid.bDiv).append(g.join(""));else switch(c){case "last":b(this.rows[this.rows.length-1]).after(g.join(""));m=this.rows.length-1;break;case "first":b(this.rows[0]).after(g.join(""));m=1;break;case "after":if(m=b(this).jqGrid("getGridRowById",d))b(this.rows[m.rowIndex+1]).hasClass("ui-subgrid")?b(this.rows[m.rowIndex+1]).after(g):b(m).after(g.join("")),m=m.rowIndex+1;break;case "before":if(m=b(this).jqGrid("getGridRowById",d))b(m).before(g.join("")), -m=m.rowIndex-1}!0===this.p.subGrid&&b(this).jqGrid("addSubGrid",h+n,m);this.p.records++;this.p.reccount++;b(this).triggerHandler("jqGridAfterInsertRow",[e,M,M]);Y&&this.p.afterInsertRow.call(this,e,M,M);O++;"local"===this.p.datatype&&(K[this.p.localReader.id]=W,this.p._index[W]=this.p.data.length,this.p.data.push(K),K={})}!0!==this.p.altRows||x||("last"===c?1===(this.rows.length-1)%2&&b(this.rows[this.rows.length-1]).addClass(U):b(this.rows).each(function(a){1===a%2?b(this).addClass(U):b(this).removeClass(U)})); -this.updatepager(!0,!0);a=!0}));return a},footerData:function(e,f,c){function d(a){for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}var a,l=!1,g={},h;void 0==e&&(e="get");"boolean"!==typeof c&&(c=!0);e=e.toLowerCase();this.each(function(){var k=this,n;if(!k.grid||!k.p.footerrow||"set"===e&&d(f))return!1;l=!0;b(this.p.colModel).each(function(d){a=this.name;"set"===e?void 0!==f[a]&&(n=c?k.formatter("",f[a],d,f,"edit"):f[a],h=this.title?{title:b.jgrid.stripHtml(n)}:{},b("tr.footrow td:eq("+d+ -")",k.grid.sDiv).html(n).attr(h),l=!0):"get"===e&&(g[a]=b("tr.footrow td:eq("+d+")",k.grid.sDiv).html())})});return"get"===e?g:l},showHideCol:function(e,f){return this.each(function(){var c=this,d=!1,a=b.jgrid.cell_width?0:c.p.cellLayout,l;if(c.grid){"string"===typeof e&&(e=[e]);f="none"!==f?"":"none";var g=""===f?!0:!1,h=c.p.groupHeader&&("object"===typeof c.p.groupHeader||b.isFunction(c.p.groupHeader));h&&b(c).jqGrid("destroyGroupHeader",!1);b(this.p.colModel).each(function(h){if(-1!==b.inArray(this.name, -e)&&this.hidden===g){if(!0===c.p.frozenColumns&&!0===this.frozen)return!0;b("tr[role=rowheader]",c.grid.hDiv).each(function(){b(this.cells[h]).css("display",f)});b(c.rows).each(function(){b(this).hasClass("jqgroup")||b(this.cells[h]).css("display",f)});c.p.footerrow&&b("tr.footrow td:eq("+h+")",c.grid.sDiv).css("display",f);l=parseInt(this.width,10);c.p.tblwidth="none"===f?c.p.tblwidth-(l+a):c.p.tblwidth+(l+a);this.hidden=!g;d=!0;b(c).triggerHandler("jqGridShowHideCol",[g,this.name,h])}});!0===d&& -(!0!==c.p.shrinkToFit||isNaN(c.p.height)||(c.p.tblwidth+=parseInt(c.p.scrollOffset,10)),b(c).jqGrid("setGridWidth",!0===c.p.shrinkToFit?c.p.tblwidth:c.p.width));h&&b(c).jqGrid("setGroupHeaders",c.p.groupHeader)}})},hideCol:function(e){return this.each(function(){b(this).jqGrid("showHideCol",e,"none")})},showCol:function(e){return this.each(function(){b(this).jqGrid("showHideCol",e,"")})},remapColumns:function(e,f,c){function d(a){var c;c=a.length?b.makeArray(a):b.extend({},a);b.each(e,function(b){a[b]= -c[this]})}function a(a,c){b(">tr"+(c||""),a).each(function(){var a=this,c=b.makeArray(a.cells);b.each(e,function(){var b=c[this];b&&a.appendChild(b)})})}var l=this.get(0);d(l.p.colModel);d(l.p.colNames);d(l.grid.headers);a(b("thead:first",l.grid.hDiv),c&&":not(.ui-jqgrid-labels)");f&&a(b("#"+b.jgrid.jqID(l.p.id)+" tbody:first"),".jqgfirstrow, tr.jqgrow, tr.jqfoot");l.p.footerrow&&a(b("tbody:first",l.grid.sDiv));l.p.remapColumns&&(l.p.remapColumns.length?d(l.p.remapColumns):l.p.remapColumns=b.makeArray(e)); -l.p.lastsort=b.inArray(l.p.lastsort,e);l.p.treeGrid&&(l.p.expColInd=b.inArray(l.p.expColInd,e));b(l).triggerHandler("jqGridRemapColumns",[e,f,c])},setGridWidth:function(e,f){return this.each(function(){if(this.grid){var c=this,d,a=0,l=b.jgrid.cell_width?0:c.p.cellLayout,g,h=0,k=!1,n=c.p.scrollOffset,m,r=0,p;"boolean"!==typeof f&&(f=c.p.shrinkToFit);if(!isNaN(e)){e=parseInt(e,10);c.grid.width=c.p.width=e;b("#gbox_"+b.jgrid.jqID(c.p.id)).css("width",e+"px");b("#gview_"+b.jgrid.jqID(c.p.id)).css("width", -e+"px");b(c.grid.bDiv).css("width",e+"px");b(c.grid.hDiv).css("width",e+"px");c.p.pager&&b(c.p.pager).css("width",e+"px");c.p.toppager&&b(c.p.toppager).css("width",e+"px");!0===c.p.toolbar[0]&&(b(c.grid.uDiv).css("width",e+"px"),"both"===c.p.toolbar[1]&&b(c.grid.ubDiv).css("width",e+"px"));c.p.footerrow&&b(c.grid.sDiv).css("width",e+"px");!1===f&&!0===c.p.forceFit&&(c.p.forceFit=!1);if(!0===f){b.each(c.p.colModel,function(){!1===this.hidden&&(d=this.widthOrg,a+=d+l,this.fixed?r+=d+l:h++)});if(0=== -h)return;c.p.tblwidth=a;m=e-l*h-r;!isNaN(c.p.height)&&(b(c.grid.bDiv)[0].clientHeight<b(c.grid.bDiv)[0].scrollHeight||1===c.rows.length)&&(k=!0,m-=n);var a=0,q=0<c.grid.cols.length;b.each(c.p.colModel,function(b){!1!==this.hidden||this.fixed||(d=this.widthOrg,d=Math.round(m*d/(c.p.tblwidth-l*h-r)),0>d||(this.width=d,a+=d,c.grid.headers[b].width=d,c.grid.headers[b].el.style.width=d+"px",c.p.footerrow&&(c.grid.footers[b].style.width=d+"px"),q&&(c.grid.cols[b].style.width=d+"px"),g=b))});if(!g)return; -p=0;k?e-r-(a+l*h)!==n&&(p=e-r-(a+l*h)-n):1!==Math.abs(e-r-(a+l*h))&&(p=e-r-(a+l*h));c.p.colModel[g].width+=p;c.p.tblwidth=a+p+l*h+r;c.p.tblwidth>e?(k=c.p.tblwidth-parseInt(e,10),c.p.tblwidth=e,d=c.p.colModel[g].width-=k):d=c.p.colModel[g].width;c.grid.headers[g].width=d;c.grid.headers[g].el.style.width=d+"px";q&&(c.grid.cols[g].style.width=d+"px");c.p.footerrow&&(c.grid.footers[g].style.width=d+"px")}c.p.tblwidth&&(b("table:first",c.grid.bDiv).css("width",c.p.tblwidth+"px"),b("table:first",c.grid.hDiv).css("width", -c.p.tblwidth+"px"),c.grid.hDiv.scrollLeft=c.grid.bDiv.scrollLeft,c.p.footerrow&&b("table:first",c.grid.sDiv).css("width",c.p.tblwidth+"px"))}}})},setGridHeight:function(e){return this.each(function(){if(this.grid){var f=b(this.grid.bDiv);f.css({height:e+(isNaN(e)?"":"px")});!0===this.p.frozenColumns&&b("#"+b.jgrid.jqID(this.p.id)+"_frozen").parent().height(f.height()-16);this.p.height=e;this.p.scroll&&this.grid.populateVisible()}})},setCaption:function(e){return this.each(function(){this.p.caption= -e;b("span.ui-jqgrid-title, span.ui-jqgrid-title-rtl",this.grid.cDiv).html(e);b(this.grid.cDiv).show()})},setLabel:function(e,f,c,d){return this.each(function(){var a=-1;if(this.grid&&void 0!==e&&(b(this.p.colModel).each(function(b){if(this.name===e)return a=b,!1}),0<=a)){var l=b("tr.ui-jqgrid-labels th:eq("+a+")",this.grid.hDiv);if(f){var g=b(".s-ico",l);b("[id^=jqgh_]",l).empty().html(f).append(g);this.p.colNames[a]=f}c&&("string"===typeof c?b(l).addClass(c):b(l).css(c));"object"===typeof d&&b(l).attr(d)}})}, -setCell:function(e,f,c,d,a,l){return this.each(function(){var g=-1,h,k;if(this.grid&&(isNaN(f)?b(this.p.colModel).each(function(a){if(this.name===f)return g=a,!1}):g=parseInt(f,10),0<=g&&(h=b(this).jqGrid("getGridRowById",e)))){var n=b("td:eq("+g+")",h);if(""!==c||!0===l)h=this.formatter(e,c,g,h,"edit"),k=this.p.colModel[g].title?{title:b.jgrid.stripHtml(h)}:{},this.p.treeGrid&&0<b(".tree-wrap",b(n)).length?b("span",b(n)).html(h).attr(k):b(n).html(h).attr(k),"local"===this.p.datatype&&(h=this.p.colModel[g], -c=h.formatter&&"string"===typeof h.formatter&&"date"===h.formatter?b.unformat.date.call(this,c,h):c,k=this.p._index[b.jgrid.stripPref(this.p.idPrefix,e)],void 0!==k&&(this.p.data[k][h.name]=c));"string"===typeof d?b(n).addClass(d):d&&b(n).css(d);"object"===typeof a&&b(n).attr(a)}})},getCell:function(e,f){var c=!1;this.each(function(){var d=-1;if(this.grid&&(isNaN(f)?b(this.p.colModel).each(function(a){if(this.name===f)return d=a,!1}):d=parseInt(f,10),0<=d)){var a=b(this).jqGrid("getGridRowById",e); -if(a)try{c=b.unformat.call(this,b("td:eq("+d+")",a),{rowId:a.id,colModel:this.p.colModel[d]},d)}catch(l){c=b.jgrid.htmlDecode(b("td:eq("+d+")",a).html())}}});return c},getCol:function(e,f,c){var d=[],a,l=0,g,h,k;f="boolean"!==typeof f?!1:f;void 0===c&&(c=!1);this.each(function(){var n=-1;if(this.grid&&(isNaN(e)?b(this.p.colModel).each(function(a){if(this.name===e)return n=a,!1}):n=parseInt(e,10),0<=n)){var m=this.rows.length,r=0,p=0;if(m&&0<m){for(;r<m;){if(b(this.rows[r]).hasClass("jqgrow")){try{a= -b.unformat.call(this,b(this.rows[r].cells[n]),{rowId:this.rows[r].id,colModel:this.p.colModel[n]},n)}catch(q){a=b.jgrid.htmlDecode(this.rows[r].cells[n].innerHTML)}c?(k=parseFloat(a),isNaN(k)||(l+=k,void 0===h&&(h=g=k),g=Math.min(g,k),h=Math.max(h,k),p++)):f?d.push({id:this.rows[r].id,value:a}):d.push(a)}r++}if(c)switch(c.toLowerCase()){case "sum":d=l;break;case "avg":d=l/p;break;case "count":d=m-1;break;case "min":d=g;break;case "max":d=h}}}});return d},clearGridData:function(e){return this.each(function(){if(this.grid){"boolean"!== -typeof e&&(e=!1);if(this.p.deepempty)b("#"+b.jgrid.jqID(this.p.id)+" tbody:first tr:gt(0)").remove();else{var f=b("#"+b.jgrid.jqID(this.p.id)+" tbody:first tr:first")[0];b("#"+b.jgrid.jqID(this.p.id)+" tbody:first").empty().append(f)}this.p.footerrow&&e&&b(".ui-jqgrid-ftable td",this.grid.sDiv).html("&#160;");this.p.selrow=null;this.p.selarrrow=[];this.p.savedRow=[];this.p.records=0;this.p.page=1;this.p.lastpage=0;this.p.reccount=0;this.p.data=[];this.p._index={};this.updatepager(!0,!1)}})},getInd:function(e, -f){var c=!1,d;this.each(function(){(d=b(this).jqGrid("getGridRowById",e))&&(c=!0===f?d:d.rowIndex)});return c},bindKeys:function(e){var f=b.extend({onEnter:null,onSpace:null,onLeftKey:null,onRightKey:null,scrollingRows:!0},e||{});return this.each(function(){var c=this;b("body").is("[role]")||b("body").attr("role","application");c.p.scrollrows=f.scrollingRows;b(c).keydown(function(d){var a=b(c).find("tr[tabindex=0]")[0],e,g,h,k=c.p.treeReader.expanded_field;if(a)if(h=c.p._index[b.jgrid.stripPref(c.p.idPrefix, -a.id)],37===d.keyCode||38===d.keyCode||39===d.keyCode||40===d.keyCode){if(38===d.keyCode){g=a.previousSibling;e="";if(g)if(b(g).is(":hidden"))for(;g;){if(g=g.previousSibling,!b(g).is(":hidden")&&b(g).hasClass("jqgrow")){e=g.id;break}}else e=g.id;b(c).jqGrid("setSelection",e,!0,d);d.preventDefault()}if(40===d.keyCode){g=a.nextSibling;e="";if(g)if(b(g).is(":hidden"))for(;g;){if(g=g.nextSibling,!b(g).is(":hidden")&&b(g).hasClass("jqgrow")){e=g.id;break}}else e=g.id;b(c).jqGrid("setSelection",e,!0,d); -d.preventDefault()}37===d.keyCode&&(c.p.treeGrid&&c.p.data[h][k]&&b(a).find("div.treeclick").trigger("click"),b(c).triggerHandler("jqGridKeyLeft",[c.p.selrow]),b.isFunction(f.onLeftKey)&&f.onLeftKey.call(c,c.p.selrow));39===d.keyCode&&(c.p.treeGrid&&!c.p.data[h][k]&&b(a).find("div.treeclick").trigger("click"),b(c).triggerHandler("jqGridKeyRight",[c.p.selrow]),b.isFunction(f.onRightKey)&&f.onRightKey.call(c,c.p.selrow))}else 13===d.keyCode?(b(c).triggerHandler("jqGridKeyEnter",[c.p.selrow]),b.isFunction(f.onEnter)&& -f.onEnter.call(c,c.p.selrow)):32===d.keyCode&&(b(c).triggerHandler("jqGridKeySpace",[c.p.selrow]),b.isFunction(f.onSpace)&&f.onSpace.call(c,c.p.selrow))})})},unbindKeys:function(){return this.each(function(){b(this).unbind("keydown")})},getLocalRow:function(e){var f=!1,c;this.each(function(){void 0!==e&&(c=this.p._index[b.jgrid.stripPref(this.p.idPrefix,e)],0<=c&&(f=this.p.data[c]))});return f}})})(jQuery); -(function(a){a.fmatter={};a.extend(a.fmatter,{isBoolean:function(a){return"boolean"===typeof a},isObject:function(c){return c&&("object"===typeof c||a.isFunction(c))||!1},isString:function(a){return"string"===typeof a},isNumber:function(a){return"number"===typeof a&&isFinite(a)},isValue:function(a){return this.isObject(a)||this.isString(a)||this.isNumber(a)||this.isBoolean(a)},isEmpty:function(c){if(!this.isString(c)&&this.isValue(c))return!1;if(!this.isValue(c))return!0;c=a.trim(c).replace(/\&nbsp\;/ig, -"").replace(/\&#160\;/ig,"");return""===c}});a.fn.fmatter=function(c,b,d,e,f){var g=b;d=a.extend({},a.jgrid.formatter,d);try{g=a.fn.fmatter[c].call(this,b,d,e,f)}catch(h){}return g};a.fmatter.util={NumberFormat:function(c,b){a.fmatter.isNumber(c)||(c*=1);if(a.fmatter.isNumber(c)){var d=0>c,e=String(c),f=b.decimalSeparator||".",g;if(a.fmatter.isNumber(b.decimalPlaces)){var h=b.decimalPlaces,e=Math.pow(10,h),e=String(Math.round(c*e)/e);g=e.lastIndexOf(".");if(0<h)for(0>g?(e+=f,g=e.length-1):"."!==f&& -(e=e.replace(".",f));e.length-1-g<h;)e+="0"}if(b.thousandsSeparator){h=b.thousandsSeparator;g=e.lastIndexOf(f);g=-1<g?g:e.length;var f=e.substring(g),l=-1,k;for(k=g;0<k;k--)l++,0===l%3&&k!==g&&(!d||1<k)&&(f=h+f),f=e.charAt(k-1)+f;e=f}e=b.prefix?b.prefix+e:e;return e=b.suffix?e+b.suffix:e}return c}};a.fn.fmatter.defaultFormat=function(c,b){return a.fmatter.isValue(c)&&""!==c?c:b.defaultValue||"&#160;"};a.fn.fmatter.email=function(c,b){return a.fmatter.isEmpty(c)?a.fn.fmatter.defaultFormat(c,b):'<a href="mailto:'+ -c+'">'+c+"</a>"};a.fn.fmatter.checkbox=function(c,b){var d=a.extend({},b.checkbox),e;void 0!==b.colModel&&void 0!==b.colModel.formatoptions&&(d=a.extend({},d,b.colModel.formatoptions));e=!0===d.disabled?'disabled="disabled"':"";if(a.fmatter.isEmpty(c)||void 0===c)c=a.fn.fmatter.defaultFormat(c,d);c=String(c);c=(c+"").toLowerCase();return'<input type="checkbox" '+(0>c.search(/(false|f|0|no|n|off|undefined)/i)?" checked='checked' ":"")+' value="'+c+'" offval="no" '+e+"/>"};a.fn.fmatter.link=function(c, -b){var d={target:b.target},e="";void 0!==b.colModel&&void 0!==b.colModel.formatoptions&&(d=a.extend({},d,b.colModel.formatoptions));d.target&&(e="target="+d.target);return a.fmatter.isEmpty(c)?a.fn.fmatter.defaultFormat(c,b):"<a "+e+' href="'+c+'">'+c+"</a>"};a.fn.fmatter.showlink=function(c,b){var d={baseLinkUrl:b.baseLinkUrl,showAction:b.showAction,addParam:b.addParam||"",target:b.target,idName:b.idName},e="";void 0!==b.colModel&&void 0!==b.colModel.formatoptions&&(d=a.extend({},d,b.colModel.formatoptions)); -d.target&&(e="target="+d.target);d=d.baseLinkUrl+d.showAction+"?"+d.idName+"="+b.rowId+d.addParam;return a.fmatter.isString(c)||a.fmatter.isNumber(c)?"<a "+e+' href="'+d+'">'+c+"</a>":a.fn.fmatter.defaultFormat(c,b)};a.fn.fmatter.integer=function(c,b){var d=a.extend({},b.integer);void 0!==b.colModel&&void 0!==b.colModel.formatoptions&&(d=a.extend({},d,b.colModel.formatoptions));return a.fmatter.isEmpty(c)?d.defaultValue:a.fmatter.util.NumberFormat(c,d)};a.fn.fmatter.number=function(c,b){var d=a.extend({}, -b.number);void 0!==b.colModel&&void 0!==b.colModel.formatoptions&&(d=a.extend({},d,b.colModel.formatoptions));return a.fmatter.isEmpty(c)?d.defaultValue:a.fmatter.util.NumberFormat(c,d)};a.fn.fmatter.currency=function(c,b){var d=a.extend({},b.currency);void 0!==b.colModel&&void 0!==b.colModel.formatoptions&&(d=a.extend({},d,b.colModel.formatoptions));return a.fmatter.isEmpty(c)?d.defaultValue:a.fmatter.util.NumberFormat(c,d)};a.fn.fmatter.date=function(c,b,d,e){d=a.extend({},b.date);void 0!==b.colModel&& -void 0!==b.colModel.formatoptions&&(d=a.extend({},d,b.colModel.formatoptions));return d.reformatAfterEdit||"edit"!==e?a.fmatter.isEmpty(c)?a.fn.fmatter.defaultFormat(c,b):a.jgrid.parseDate(d.srcformat,c,d.newformat,d):a.fn.fmatter.defaultFormat(c,b)};a.fn.fmatter.select=function(c,b){c=String(c);var d=!1,e=[],f,g;void 0!==b.colModel.formatoptions?(d=b.colModel.formatoptions.value,f=void 0===b.colModel.formatoptions.separator?":":b.colModel.formatoptions.separator,g=void 0===b.colModel.formatoptions.delimiter? -";":b.colModel.formatoptions.delimiter):void 0!==b.colModel.editoptions&&(d=b.colModel.editoptions.value,f=void 0===b.colModel.editoptions.separator?":":b.colModel.editoptions.separator,g=void 0===b.colModel.editoptions.delimiter?";":b.colModel.editoptions.delimiter);if(d){var h=!0===b.colModel.editoptions.multiple?!0:!1,l=[];h&&(l=c.split(","),l=a.map(l,function(b){return a.trim(b)}));if(a.fmatter.isString(d)){var k=d.split(g),m=0,n;for(n=0;n<k.length;n++)if(g=k[n].split(f),2<g.length&&(g[1]=a.map(g, -function(a,b){if(0<b)return a}).join(f)),h)-1<a.inArray(g[0],l)&&(e[m]=g[1],m++);else if(a.trim(g[0])===a.trim(c)){e[0]=g[1];break}}else a.fmatter.isObject(d)&&(h?e=a.map(l,function(a){return d[a]}):e[0]=d[c]||"")}c=e.join(", ");return""===c?a.fn.fmatter.defaultFormat(c,b):c};a.fn.fmatter.rowactions=function(c){var b=a(this).closest("tr.jqgrow"),d=b.attr("id"),e=a(this).closest("table.ui-jqgrid-btable").attr("id").replace(/_frozen([^_]*)$/,"$1"),e=a("#"+e),f=e[0],g=f.p,h=g.colModel[a.jgrid.getCellIndex(this)], -l=h.frozen?a("tr#"+d+" td:eq("+a.jgrid.getCellIndex(this)+") > div",e):a(this).parent(),k={extraparam:{}},m=function(b){a.isFunction(k.afterRestore)&&k.afterRestore.call(f,b);l.find("div.ui-inline-edit,div.ui-inline-del").show();l.find("div.ui-inline-save,div.ui-inline-cancel").hide()};void 0!==h.formatoptions&&(k=a.extend(k,h.formatoptions));void 0!==g.editOptions&&(k.editOptions=g.editOptions);void 0!==g.delOptions&&(k.delOptions=g.delOptions);b.hasClass("jqgrid-new-row")&&(k.extraparam[g.prmNames.oper]= -g.prmNames.addoper);b={keys:k.keys,oneditfunc:k.onEdit,successfunc:k.onSuccess,url:k.url,extraparam:k.extraparam,aftersavefunc:function(b,c){a.isFunction(k.afterSave)&&k.afterSave.call(f,b,c);l.find("div.ui-inline-edit,div.ui-inline-del").show();l.find("div.ui-inline-save,div.ui-inline-cancel").hide()},errorfunc:k.onError,afterrestorefunc:m,restoreAfterError:k.restoreAfterError,mtype:k.mtype};switch(c){case "edit":e.jqGrid("editRow",d,b);l.find("div.ui-inline-edit,div.ui-inline-del").hide();l.find("div.ui-inline-save,div.ui-inline-cancel").show(); -e.triggerHandler("jqGridAfterGridComplete");break;case "save":e.jqGrid("saveRow",d,b)&&(l.find("div.ui-inline-edit,div.ui-inline-del").show(),l.find("div.ui-inline-save,div.ui-inline-cancel").hide(),e.triggerHandler("jqGridAfterGridComplete"));break;case "cancel":e.jqGrid("restoreRow",d,m);l.find("div.ui-inline-edit,div.ui-inline-del").show();l.find("div.ui-inline-save,div.ui-inline-cancel").hide();e.triggerHandler("jqGridAfterGridComplete");break;case "del":e.jqGrid("delGridRow",d,k.delOptions); -break;case "formedit":e.jqGrid("setSelection",d),e.jqGrid("editGridRow",d,k.editOptions)}};a.fn.fmatter.actions=function(c,b){var d={keys:!1,editbutton:!0,delbutton:!0,editformbutton:!1},e=b.rowId,f="";void 0!==b.colModel.formatoptions&&(d=a.extend(d,b.colModel.formatoptions));if(void 0===e||a.fmatter.isEmpty(e))return"";d.editformbutton?f+="<div title='"+a.jgrid.nav.edittitle+"' style='float:left;cursor:pointer;' class='ui-pg-div ui-inline-edit' "+("id='jEditButton_"+e+"' onclick=jQuery.fn.fmatter.rowactions.call(this,'formedit'); onmouseover=jQuery(this).addClass('ui-state-hover'); onmouseout=jQuery(this).removeClass('ui-state-hover'); ")+ -"><span class='ui-icon ui-icon-pencil'></span></div>":d.editbutton&&(f+="<div title='"+a.jgrid.nav.edittitle+"' style='float:left;cursor:pointer;' class='ui-pg-div ui-inline-edit' "+("id='jEditButton_"+e+"' onclick=jQuery.fn.fmatter.rowactions.call(this,'edit'); onmouseover=jQuery(this).addClass('ui-state-hover'); onmouseout=jQuery(this).removeClass('ui-state-hover') ")+"><span class='ui-icon ui-icon-pencil'></span></div>");d.delbutton&&(f+="<div title='"+a.jgrid.nav.deltitle+"' style='float:left;margin-left:5px;' class='ui-pg-div ui-inline-del' "+ -("id='jDeleteButton_"+e+"' onclick=jQuery.fn.fmatter.rowactions.call(this,'del'); onmouseover=jQuery(this).addClass('ui-state-hover'); onmouseout=jQuery(this).removeClass('ui-state-hover'); ")+"><span class='ui-icon ui-icon-trash'></span></div>");f+="<div title='"+a.jgrid.edit.bSubmit+"' style='float:left;display:none' class='ui-pg-div ui-inline-save' "+("id='jSaveButton_"+e+"' onclick=jQuery.fn.fmatter.rowactions.call(this,'save'); onmouseover=jQuery(this).addClass('ui-state-hover'); onmouseout=jQuery(this).removeClass('ui-state-hover'); ")+ -"><span class='ui-icon ui-icon-disk'></span></div>";f+="<div title='"+a.jgrid.edit.bCancel+"' style='float:left;display:none;margin-left:5px;' class='ui-pg-div ui-inline-cancel' "+("id='jCancelButton_"+e+"' onclick=jQuery.fn.fmatter.rowactions.call(this,'cancel'); onmouseover=jQuery(this).addClass('ui-state-hover'); onmouseout=jQuery(this).removeClass('ui-state-hover'); ")+"><span class='ui-icon ui-icon-cancel'></span></div>";return"<div style='margin-left:8px;'>"+f+"</div>"};a.unformat=function(c, -b,d,e){var f,g=b.colModel.formatter,h=b.colModel.formatoptions||{},l=/([\.\*\_\'\(\)\{\}\+\?\\])/g,k=b.colModel.unformat||a.fn.fmatter[g]&&a.fn.fmatter[g].unformat;if(void 0!==k&&a.isFunction(k))f=k.call(this,a(c).text(),b,c);else if(void 0!==g&&a.fmatter.isString(g))switch(f=a.jgrid.formatter||{},g){case "integer":h=a.extend({},f.integer,h);b=h.thousandsSeparator.replace(l,"\\$1");b=RegExp(b,"g");f=a(c).text().replace(b,"");break;case "number":h=a.extend({},f.number,h);b=h.thousandsSeparator.replace(l, -"\\$1");b=RegExp(b,"g");f=a(c).text().replace(b,"").replace(h.decimalSeparator,".");break;case "currency":h=a.extend({},f.currency,h);b=h.thousandsSeparator.replace(l,"\\$1");b=RegExp(b,"g");f=a(c).text();h.prefix&&h.prefix.length&&(f=f.substr(h.prefix.length));h.suffix&&h.suffix.length&&(f=f.substr(0,f.length-h.suffix.length));f=f.replace(b,"").replace(h.decimalSeparator,".");break;case "checkbox":h=b.colModel.editoptions?b.colModel.editoptions.value.split(":"):["Yes","No"];f=a("input",c).is(":checked")? -h[0]:h[1];break;case "select":f=a.unformat.select(c,b,d,e);break;case "actions":return"";default:f=a(c).text()}return void 0!==f?f:!0===e?a(c).text():a.jgrid.htmlDecode(a(c).html())};a.unformat.select=function(c,b,d,e){d=[];c=a(c).text();if(!0===e)return c;e=a.extend({},void 0!==b.colModel.formatoptions?b.colModel.formatoptions:b.colModel.editoptions);b=void 0===e.separator?":":e.separator;var f=void 0===e.delimiter?";":e.delimiter;if(e.value){var g=e.value;e=!0===e.multiple?!0:!1;var h=[];e&&(h= -c.split(","),h=a.map(h,function(b){return a.trim(b)}));if(a.fmatter.isString(g)){var l=g.split(f),k=0,m;for(m=0;m<l.length;m++)if(f=l[m].split(b),2<f.length&&(f[1]=a.map(f,function(a,b){if(0<b)return a}).join(b)),e)-1<a.inArray(f[1],h)&&(d[k]=f[0],k++);else if(a.trim(f[1])===a.trim(c)){d[0]=f[0];break}}else if(a.fmatter.isObject(g)||a.isArray(g))e||(h[0]=c),d=a.map(h,function(b){var c;a.each(g,function(a,d){if(d===b)return c=a,!1});if(void 0!==c)return c});return d.join(", ")}return c||""};a.unformat.date= -function(c,b){var d=a.jgrid.formatter.date||{};void 0!==b.formatoptions&&(d=a.extend({},d,b.formatoptions));return a.fmatter.isEmpty(c)?a.fn.fmatter.defaultFormat(c,b):a.jgrid.parseDate(d.newformat,c,d.srcformat,d)}})(jQuery); -(function(a){a.jgrid.extend({getColProp:function(a){var c={},d=this[0];if(!d.grid)return!1;var d=d.p.colModel,h;for(h=0;h<d.length;h++)if(d[h].name===a){c=d[h];break}return c},setColProp:function(b,c){return this.each(function(){if(this.grid&&c){var d=this.p.colModel,h;for(h=0;h<d.length;h++)if(d[h].name===b){a.extend(!0,this.p.colModel[h],c);break}}})},sortGrid:function(a,c,d){return this.each(function(){var h=-1,k,e=!1;if(this.grid){a||(a=this.p.sortname);for(k=0;k<this.p.colModel.length;k++)if(this.p.colModel[k].index=== -a||this.p.colModel[k].name===a){h=k;!0===this.p.frozenColumns&&!0===this.p.colModel[k].frozen&&(e=this.grid.fhDiv.find("#"+this.p.id+"_"+a));break}-1!==h&&(k=this.p.colModel[h].sortable,e||(e=this.grid.headers[h].el),"boolean"!==typeof k&&(k=!0),"boolean"!==typeof c&&(c=!1),k&&this.sortData("jqgh_"+this.p.id+"_"+a,h,c,d,e))}})},clearBeforeUnload:function(){return this.each(function(){var b=this.grid;a.isFunction(b.emptyRows)&&b.emptyRows.call(this,!0,!0);a(document).unbind("mouseup.jqGrid"+this.p.id); -a(b.hDiv).unbind("mousemove");a(this).unbind();b.dragEnd=null;b.dragMove=null;b.dragStart=null;b.emptyRows=null;b.populate=null;b.populateVisible=null;b.scrollGrid=null;b.selectionPreserver=null;b.bDiv=null;b.cDiv=null;b.hDiv=null;b.cols=null;var c,d=b.headers.length;for(c=0;c<d;c++)b.headers[c].el=null;this.grid=this.addJSONData=this.addXmlData=this.formatter=this.constructTr=this.setHeadCheckBox=this.refreshIndex=this.updatepager=this.sortData=this.formatCol=null})},GridDestroy:function(){return this.each(function(){if(this.grid){this.p.pager&& -a(this.p.pager).remove();try{a(this).jqGrid("clearBeforeUnload"),a("#gbox_"+a.jgrid.jqID(this.id)).remove()}catch(b){}}})},GridUnload:function(){return this.each(function(){if(this.grid){var b=a(this).attr("id"),c=a(this).attr("class");this.p.pager&&a(this.p.pager).empty().removeClass("ui-state-default ui-jqgrid-pager ui-corner-bottom");var d=document.createElement("table");a(d).attr({id:b});d.className=c;b=a.jgrid.jqID(this.id);a(d).removeClass("ui-jqgrid-btable");1===a(this.p.pager).parents("#gbox_"+ -b).length?(a(d).insertBefore("#gbox_"+b).show(),a(this.p.pager).insertBefore("#gbox_"+b)):a(d).insertBefore("#gbox_"+b).show();a(this).jqGrid("clearBeforeUnload");a("#gbox_"+b).remove()}})},setGridState:function(b){return this.each(function(){this.grid&&("hidden"===b?(a(".ui-jqgrid-bdiv, .ui-jqgrid-hdiv","#gview_"+a.jgrid.jqID(this.p.id)).slideUp("fast"),this.p.pager&&a(this.p.pager).slideUp("fast"),this.p.toppager&&a(this.p.toppager).slideUp("fast"),!0===this.p.toolbar[0]&&("both"===this.p.toolbar[1]&& -a(this.grid.ubDiv).slideUp("fast"),a(this.grid.uDiv).slideUp("fast")),this.p.footerrow&&a(".ui-jqgrid-sdiv","#gbox_"+a.jgrid.jqID(this.p.id)).slideUp("fast"),a(".ui-jqgrid-titlebar-close span",this.grid.cDiv).removeClass("ui-icon-circle-triangle-n").addClass("ui-icon-circle-triangle-s"),this.p.gridstate="hidden"):"visible"===b&&(a(".ui-jqgrid-hdiv, .ui-jqgrid-bdiv","#gview_"+a.jgrid.jqID(this.p.id)).slideDown("fast"),this.p.pager&&a(this.p.pager).slideDown("fast"),this.p.toppager&&a(this.p.toppager).slideDown("fast"), -!0===this.p.toolbar[0]&&("both"===this.p.toolbar[1]&&a(this.grid.ubDiv).slideDown("fast"),a(this.grid.uDiv).slideDown("fast")),this.p.footerrow&&a(".ui-jqgrid-sdiv","#gbox_"+a.jgrid.jqID(this.p.id)).slideDown("fast"),a(".ui-jqgrid-titlebar-close span",this.grid.cDiv).removeClass("ui-icon-circle-triangle-s").addClass("ui-icon-circle-triangle-n"),this.p.gridstate="visible"))})},filterToolbar:function(b){b=a.extend({autosearch:!0,searchOnEnter:!0,beforeSearch:null,afterSearch:null,beforeClear:null,afterClear:null, -searchurl:"",stringResult:!1,groupOp:"AND",defaultSearch:"bw",searchOperators:!1,resetIcon:"x",operands:{eq:"==",ne:"!",lt:"<",le:"<=",gt:">",ge:">=",bw:"^",bn:"!^","in":"=",ni:"!=",ew:"|",en:"!@",cn:"~",nc:"!~",nu:"#",nn:"!#"}},a.jgrid.search,b||{});return this.each(function(){var c=this;if(!this.ftoolbar){var d=function(){var d={},f=0,g,m,e={},q;a.each(c.p.colModel,function(){var l=a("#gs_"+a.jgrid.jqID(this.name),!0===this.frozen&&!0===c.p.frozenColumns?c.grid.fhDiv:c.grid.hDiv);m=this.index|| -this.name;q=b.searchOperators?l.parent().prev().children("a").attr("soper")||b.defaultSearch:this.searchoptions&&this.searchoptions.sopt?this.searchoptions.sopt[0]:"select"===this.stype?"eq":b.defaultSearch;if((g="custom"===this.stype&&a.isFunction(this.searchoptions.custom_value)&&0<l.length&&"SPAN"===l[0].nodeName.toUpperCase()?this.searchoptions.custom_value.call(c,l.children(".customelement:first"),"get"):l.val())||"nu"===q||"nn"===q)d[m]=g,e[m]=q,f++;else try{delete c.p.postData[m]}catch(k){}}); -var k=0<f?!0:!1;if(!0===b.stringResult||"local"===c.p.datatype){var l='{"groupOp":"'+b.groupOp+'","rules":[',n=0;a.each(d,function(a,b){0<n&&(l+=",");l+='{"field":"'+a+'",';l+='"op":"'+e[a]+'",';l+='"data":"'+(b+"").replace(/\\/g,"\\\\").replace(/\"/g,'\\"')+'"}';n++});l+="]}";a.extend(c.p.postData,{filters:l});a.each(["searchField","searchString","searchOper"],function(a,b){c.p.postData.hasOwnProperty(b)&&delete c.p.postData[b]})}else a.extend(c.p.postData,d);var r;c.p.searchurl&&(r=c.p.url,a(c).jqGrid("setGridParam", -{url:c.p.searchurl}));var h="stop"===a(c).triggerHandler("jqGridToolbarBeforeSearch")?!0:!1;!h&&a.isFunction(b.beforeSearch)&&(h=b.beforeSearch.call(c));h||a(c).jqGrid("setGridParam",{search:k}).trigger("reloadGrid",[{page:1}]);r&&a(c).jqGrid("setGridParam",{url:r});a(c).triggerHandler("jqGridToolbarAfterSearch");a.isFunction(b.afterSearch)&&b.afterSearch.call(c)},h=function(e,f,g){a("#sopt_menu").remove();f=parseInt(f,10);g=parseInt(g,10)+18;f='<ul id="sopt_menu" class="ui-search-menu" role="menu" tabindex="0" style="font-size:'+ -(a(".ui-jqgrid-view").css("font-size")||"11px")+";left:"+f+"px;top:"+g+'px;">';g=a(e).attr("soper");var k,h=[],q,p=0,l=a(e).attr("colname");for(k=c.p.colModel.length;p<k&&c.p.colModel[p].name!==l;)p++;p=c.p.colModel[p];l=a.extend({},p.searchoptions);l.sopt||(l.sopt=[],l.sopt[0]="select"===p.stype?"eq":b.defaultSearch);a.each(b.odata,function(){h.push(this.oper)});for(p=0;p<l.sopt.length;p++)q=a.inArray(l.sopt[p],h),-1!==q&&(k=g===b.odata[q].oper?"ui-state-highlight":"",f+='<li class="ui-menu-item '+ -k+'" role="presentation"><a class="ui-corner-all g-menu-item" tabindex="0" role="menuitem" value="'+b.odata[q].oper+'" oper="'+b.operands[b.odata[q].oper]+'"><table cellspacing="0" cellpadding="0" border="0"><tr><td width="25px">'+b.operands[b.odata[q].oper]+"</td><td>"+b.odata[q].text+"</td></tr></table></a></li>");f+="</ul>";a("body").append(f);a("#sopt_menu").addClass("ui-menu ui-widget ui-widget-content ui-corner-all");a("#sopt_menu > li > a").hover(function(){a(this).addClass("ui-state-hover")}, -function(){a(this).removeClass("ui-state-hover")}).click(function(f){f=a(this).attr("value");var g=a(this).attr("oper");a(c).triggerHandler("jqGridToolbarSelectOper",[f,g,e]);a("#sopt_menu").hide();a(e).text(g).attr("soper",f);!0===b.autosearch&&(g=a(e).parent().next().children()[0],(a(g).val()||"nu"===f||"nn"===f)&&d())})},k=a("<tr class='ui-search-toolbar' role='rowheader'></tr>"),e;a.each(c.p.colModel,function(h){var f=this,g,m;m="";var x="=",q,p=a("<th role='columnheader' class='ui-state-default ui-th-column ui-th-"+ -c.p.direction+"'></th>"),l=a("<div style='position:relative;height:100%;padding-right:0.3em;padding-left:0.3em;'></div>"),n=a("<table class='ui-search-table' cellspacing='0'><tr><td class='ui-search-oper'></td><td class='ui-search-input'></td><td class='ui-search-clear'></td></tr></table>");!0===this.hidden&&a(p).css("display","none");this.search=!1===this.search?!1:!0;void 0===this.stype&&(this.stype="text");g=a.extend({},this.searchoptions||{});if(this.search){if(b.searchOperators){m=g.sopt?g.sopt[0]: -"select"===f.stype?"eq":b.defaultSearch;for(q=0;q<b.odata.length;q++)if(b.odata[q].oper===m){x=b.operands[m]||"";break}m="<a title='"+(null!=g.searchtitle?g.searchtitle:b.operandTitle)+"' style='padding-right: 0.5em;' soper='"+m+"' class='soptclass' colname='"+this.name+"'>"+x+"</a>"}a("td:eq(0)",n).attr("colindex",h).append(m);void 0===g.clearSearch&&(g.clearSearch=!0);g.clearSearch?(m=b.resetTitle||"Clear Search Value",a("td:eq(2)",n).append("<a title='"+m+"' style='padding-right: 0.3em;padding-left: 0.3em;' class='clearsearchclass'>"+ -b.resetIcon+"</a>")):a("td:eq(2)",n).hide();switch(this.stype){case "select":if(m=this.surl||g.dataUrl)a(l).append(n),a.ajax(a.extend({url:m,dataType:"html",success:function(e){void 0!==g.buildSelect?(e=g.buildSelect(e))&&a("td:eq(1)",n).append(e):a("td:eq(1)",n).append(e);void 0!==g.defaultValue&&a("select",l).val(g.defaultValue);a("select",l).attr({name:f.index||f.name,id:"gs_"+f.name});g.attr&&a("select",l).attr(g.attr);a("select",l).css({width:"100%"});a.jgrid.bindEv.call(c,a("select",l)[0],g); -!0===b.autosearch&&a("select",l).change(function(){d();return!1});e=null}},a.jgrid.ajaxOptions,c.p.ajaxSelectOptions||{}));else{var r,w,u;f.searchoptions?(r=void 0===f.searchoptions.value?"":f.searchoptions.value,w=void 0===f.searchoptions.separator?":":f.searchoptions.separator,u=void 0===f.searchoptions.delimiter?";":f.searchoptions.delimiter):f.editoptions&&(r=void 0===f.editoptions.value?"":f.editoptions.value,w=void 0===f.editoptions.separator?":":f.editoptions.separator,u=void 0===f.editoptions.delimiter? -";":f.editoptions.delimiter);if(r){var t=document.createElement("select");t.style.width="100%";a(t).attr({name:f.index||f.name,id:"gs_"+f.name});var v;if("string"===typeof r)for(m=r.split(u),v=0;v<m.length;v++)r=m[v].split(w),u=document.createElement("option"),u.value=r[0],u.innerHTML=r[1],t.appendChild(u);else if("object"===typeof r)for(v in r)r.hasOwnProperty(v)&&(u=document.createElement("option"),u.value=v,u.innerHTML=r[v],t.appendChild(u));void 0!==g.defaultValue&&a(t).val(g.defaultValue);g.attr&& -a(t).attr(g.attr);a(l).append(n);a.jgrid.bindEv.call(c,t,g);a("td:eq(1)",n).append(t);!0===b.autosearch&&a(t).change(function(){d();return!1})}}break;case "text":w=void 0!==g.defaultValue?g.defaultValue:"";a("td:eq(1)",n).append("<input type='text' style='width:100%;padding:0px;' name='"+(f.index||f.name)+"' id='gs_"+f.name+"' value='"+w+"'/>");a(l).append(n);g.attr&&a("input",l).attr(g.attr);a.jgrid.bindEv.call(c,a("input",l)[0],g);!0===b.autosearch&&(b.searchOnEnter?a("input",l).keypress(function(a){return 13=== -(a.charCode||a.keyCode||0)?(d(),!1):this}):a("input",l).keydown(function(a){switch(a.which){case 13:return!1;case 9:case 16:case 37:case 38:case 39:case 40:case 27:break;default:e&&clearTimeout(e),e=setTimeout(function(){d()},500)}}));break;case "custom":a("td:eq(1)",n).append("<span style='width:95%;padding:0px;' name='"+(f.index||f.name)+"' id='gs_"+f.name+"'/>");a(l).append(n);try{if(a.isFunction(g.custom_element))if(t=g.custom_element.call(c,void 0!==g.defaultValue?g.defaultValue:"",g))t=a(t).addClass("customelement"), -a(l).find(">span").append(t);else throw"e2";else throw"e1";}catch(y){"e1"===y&&a.jgrid.info_dialog(a.jgrid.errors.errcap,"function 'custom_element' "+a.jgrid.edit.msg.nodefined,a.jgrid.edit.bClose),"e2"===y?a.jgrid.info_dialog(a.jgrid.errors.errcap,"function 'custom_element' "+a.jgrid.edit.msg.novalue,a.jgrid.edit.bClose):a.jgrid.info_dialog(a.jgrid.errors.errcap,"string"===typeof y?y:y.message,a.jgrid.edit.bClose)}}}a(p).append(l);a(k).append(p);b.searchOperators||a("td:eq(0)",n).hide()});a("table thead", -c.grid.hDiv).append(k);b.searchOperators&&(a(".soptclass",k).click(function(b){var c=a(this).offset();h(this,c.left,c.top);b.stopPropagation()}),a("body").on("click",function(b){"soptclass"!==b.target.className&&a("#sopt_menu").hide()}));a(".clearsearchclass",k).click(function(e){e=a(this).parents("tr:first");var f=parseInt(a("td.ui-search-oper",e).attr("colindex"),10),g=a.extend({},c.p.colModel[f].searchoptions||{}),g=g.defaultValue?g.defaultValue:"";"select"===c.p.colModel[f].stype?g?a("td.ui-search-input select", -e).val(g):a("td.ui-search-input select",e)[0].selectedIndex=0:a("td.ui-search-input input",e).val(g);!0===b.autosearch&&d()});this.ftoolbar=!0;this.triggerToolbar=d;this.clearToolbar=function(d){var f={},g=0,e;d="boolean"!==typeof d?!0:d;a.each(c.p.colModel,function(){var b,d=a("#gs_"+a.jgrid.jqID(this.name),!0===this.frozen&&!0===c.p.frozenColumns?c.grid.fhDiv:c.grid.hDiv);this.searchoptions&&void 0!==this.searchoptions.defaultValue&&(b=this.searchoptions.defaultValue);e=this.index||this.name;switch(this.stype){case "select":d.find("option").each(function(c){0=== -c&&(this.selected=!0);if(a(this).val()===b)return this.selected=!0,!1});if(void 0!==b)f[e]=b,g++;else try{delete c.p.postData[e]}catch(h){}break;case "text":d.val(b||"");if(void 0!==b)f[e]=b,g++;else try{delete c.p.postData[e]}catch(k){}break;case "custom":a.isFunction(this.searchoptions.custom_value)&&0<d.length&&"SPAN"===d[0].nodeName.toUpperCase()&&this.searchoptions.custom_value.call(c,d.children(".customelement:first"),"set",b||"")}});var k=0<g?!0:!1;c.p.resetsearch=!0;if(!0===b.stringResult|| -"local"===c.p.datatype){var h='{"groupOp":"'+b.groupOp+'","rules":[',p=0;a.each(f,function(a,b){0<p&&(h+=",");h+='{"field":"'+a+'",';h+='"op":"eq",';h+='"data":"'+(b+"").replace(/\\/g,"\\\\").replace(/\"/g,'\\"')+'"}';p++});h+="]}";a.extend(c.p.postData,{filters:h});a.each(["searchField","searchString","searchOper"],function(a,b){c.p.postData.hasOwnProperty(b)&&delete c.p.postData[b]})}else a.extend(c.p.postData,f);var l;c.p.searchurl&&(l=c.p.url,a(c).jqGrid("setGridParam",{url:c.p.searchurl}));var n= -"stop"===a(c).triggerHandler("jqGridToolbarBeforeClear")?!0:!1;!n&&a.isFunction(b.beforeClear)&&(n=b.beforeClear.call(c));n||d&&a(c).jqGrid("setGridParam",{search:k}).trigger("reloadGrid",[{page:1}]);l&&a(c).jqGrid("setGridParam",{url:l});a(c).triggerHandler("jqGridToolbarAfterClear");a.isFunction(b.afterClear)&&b.afterClear()};this.toggleToolbar=function(){var b=a("tr.ui-search-toolbar",c.grid.hDiv),d=!0===c.p.frozenColumns?a("tr.ui-search-toolbar",c.grid.fhDiv):!1;"none"===b.css("display")?(b.show(), -d&&d.show()):(b.hide(),d&&d.hide())}}})},destroyFilterToolbar:function(){return this.each(function(){this.ftoolbar&&(this.toggleToolbar=this.clearToolbar=this.triggerToolbar=null,this.ftoolbar=!1,a(this.grid.hDiv).find("table thead tr.ui-search-toolbar").remove())})},destroyGroupHeader:function(b){void 0===b&&(b=!0);return this.each(function(){var c,d,h,k,e,s;d=this.grid;var f=a("table.ui-jqgrid-htable thead",d.hDiv),g=this.p.colModel;if(d){a(this).unbind(".setGroupHeaders");c=a("<tr>",{role:"rowheader"}).addClass("ui-jqgrid-labels"); -k=d.headers;d=0;for(h=k.length;d<h;d++){e=g[d].hidden?"none":"";e=a(k[d].el).width(k[d].width).css("display",e);try{e.removeAttr("rowSpan")}catch(m){e.attr("rowSpan",1)}c.append(e);s=e.children("span.ui-jqgrid-resize");0<s.length&&(s[0].style.height="");e.children("div")[0].style.top=""}a(f).children("tr.ui-jqgrid-labels").remove();a(f).prepend(c);!0===b&&a(this).jqGrid("setGridParam",{groupHeader:null})}})},setGroupHeaders:function(b){b=a.extend({useColSpanStyle:!1,groupHeaders:[]},b||{});return this.each(function(){this.p.groupHeader= -b;var c,d,h=0,k,e,s,f,g,m=this.p.colModel,x=m.length,q=this.grid.headers,p=a("table.ui-jqgrid-htable",this.grid.hDiv),l=p.children("thead").children("tr.ui-jqgrid-labels:last").addClass("jqg-second-row-header");k=p.children("thead");var n=p.find(".jqg-first-row-header");void 0===n[0]?n=a("<tr>",{role:"row","aria-hidden":"true"}).addClass("jqg-first-row-header").css("height","auto"):n.empty();var r,w=function(a,b){var c=b.length,d;for(d=0;d<c;d++)if(b[d].startColumnName===a)return d;return-1};a(this).prepend(k); -k=a("<tr>",{role:"rowheader"}).addClass("ui-jqgrid-labels jqg-third-row-header");for(c=0;c<x;c++)if(s=q[c].el,f=a(s),d=m[c],e={height:"0px",width:q[c].width+"px",display:d.hidden?"none":""},a("<th>",{role:"gridcell"}).css(e).addClass("ui-first-th-"+this.p.direction).appendTo(n),s.style.width="",e=w(d.name,b.groupHeaders),0<=e){e=b.groupHeaders[e];h=e.numberOfColumns;g=e.titleText;for(e=d=0;e<h&&c+e<x;e++)m[c+e].hidden||d++;e=a("<th>").attr({role:"columnheader"}).addClass("ui-state-default ui-th-column-header ui-th-"+ -this.p.direction).css({height:"22px","border-top":"0 none"}).html(g);0<d&&e.attr("colspan",String(d));this.p.headertitles&&e.attr("title",e.text());0===d&&e.hide();f.before(e);k.append(s);h-=1}else 0===h?b.useColSpanStyle?f.attr("rowspan","2"):(a("<th>",{role:"columnheader"}).addClass("ui-state-default ui-th-column-header ui-th-"+this.p.direction).css({display:d.hidden?"none":"","border-top":"0 none"}).insertBefore(f),k.append(s)):(k.append(s),h--);m=a(this).children("thead");m.prepend(n);k.insertAfter(l); -p.append(m);b.useColSpanStyle&&(p.find("span.ui-jqgrid-resize").each(function(){var b=a(this).parent();b.is(":visible")&&(this.style.cssText="height: "+b.height()+"px !important; cursor: col-resize;")}),p.find("div.ui-jqgrid-sortable").each(function(){var b=a(this),c=b.parent();c.is(":visible")&&c.is(":has(span.ui-jqgrid-resize)")&&b.css("top",(c.height()-b.outerHeight())/2+"px")}));r=m.find("tr.jqg-first-row-header");a(this).bind("jqGridResizeStop.setGroupHeaders",function(a,b,c){r.find("th").eq(c).width(b)})})}, -setFrozenColumns:function(){return this.each(function(){if(this.grid){var b=this,c=b.p.colModel,d=0,h=c.length,k=-1,e=!1;if(!0!==b.p.subGrid&&!0!==b.p.treeGrid&&!0!==b.p.cellEdit&&!b.p.sortable&&!b.p.scroll){b.p.rownumbers&&d++;for(b.p.multiselect&&d++;d<h;){if(!0===c[d].frozen)e=!0,k=d;else break;d++}if(0<=k&&e){c=b.p.caption?a(b.grid.cDiv).outerHeight():0;d=a(".ui-jqgrid-htable","#gview_"+a.jgrid.jqID(b.p.id)).height();b.p.toppager&&(c+=a(b.grid.topDiv).outerHeight());!0===b.p.toolbar[0]&&"bottom"!== -b.p.toolbar[1]&&(c+=a(b.grid.uDiv).outerHeight());b.grid.fhDiv=a('<div style="position:absolute;left:0px;top:'+c+"px;height:"+d+'px;" class="frozen-div ui-state-default ui-jqgrid-hdiv"></div>');b.grid.fbDiv=a('<div style="position:absolute;left:0px;top:'+(parseInt(c,10)+parseInt(d,10)+1)+'px;overflow-y:hidden" class="frozen-bdiv ui-jqgrid-bdiv"></div>');a("#gview_"+a.jgrid.jqID(b.p.id)).append(b.grid.fhDiv);c=a(".ui-jqgrid-htable","#gview_"+a.jgrid.jqID(b.p.id)).clone(!0);if(b.p.groupHeader){a("tr.jqg-first-row-header, tr.jqg-third-row-header", -c).each(function(){a("th:gt("+k+")",this).remove()});var s=-1,f=-1,g,m;a("tr.jqg-second-row-header th",c).each(function(){g=parseInt(a(this).attr("colspan"),10);if(m=parseInt(a(this).attr("rowspan"),10))s++,f++;g&&(s+=g,f++);if(s===k)return!1});s!==k&&(f=k);a("tr.jqg-second-row-header",c).each(function(){a("th:gt("+f+")",this).remove()})}else a("tr",c).each(function(){a("th:gt("+k+")",this).remove()});a(c).width(1);a(b.grid.fhDiv).append(c).mousemove(function(a){if(b.grid.resizing)return b.grid.dragMove(a), -!1});a(b).bind("jqGridResizeStop.setFrozenColumns",function(c,d,e){c=a(".ui-jqgrid-htable",b.grid.fhDiv);a("th:eq("+e+")",c).width(d);c=a(".ui-jqgrid-btable",b.grid.fbDiv);a("tr:first td:eq("+e+")",c).width(d)});a(b).bind("jqGridSortCol.setFrozenColumns",function(c,d,e){c=a("tr.ui-jqgrid-labels:last th:eq("+b.p.lastsort+")",b.grid.fhDiv);d=a("tr.ui-jqgrid-labels:last th:eq("+e+")",b.grid.fhDiv);a("span.ui-grid-ico-sort",c).addClass("ui-state-disabled");a(c).attr("aria-selected","false");a("span.ui-icon-"+ -b.p.sortorder,d).removeClass("ui-state-disabled");a(d).attr("aria-selected","true");b.p.viewsortcols[0]||b.p.lastsort===e||(a("span.s-ico",c).hide(),a("span.s-ico",d).show())});a("#gview_"+a.jgrid.jqID(b.p.id)).append(b.grid.fbDiv);a(b.grid.bDiv).scroll(function(){a(b.grid.fbDiv).scrollTop(a(this).scrollTop())});!0===b.p.hoverrows&&a("#"+a.jgrid.jqID(b.p.id)).unbind("mouseover").unbind("mouseout");a(b).bind("jqGridAfterGridComplete.setFrozenColumns",function(){a("#"+a.jgrid.jqID(b.p.id)+"_frozen").remove(); -a(b.grid.fbDiv).height(a(b.grid.bDiv).height()-16);var c=a("#"+a.jgrid.jqID(b.p.id)).clone(!0);a("tr[role=row]",c).each(function(){a("td[role=gridcell]:gt("+k+")",this).remove()});a(c).width(1).attr("id",b.p.id+"_frozen");a(b.grid.fbDiv).append(c);!0===b.p.hoverrows&&(a("tr.jqgrow",c).hover(function(){a(this).addClass("ui-state-hover");a("#"+a.jgrid.jqID(this.id),"#"+a.jgrid.jqID(b.p.id)).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover");a("#"+a.jgrid.jqID(this.id),"#"+ -a.jgrid.jqID(b.p.id)).removeClass("ui-state-hover")}),a("tr.jqgrow","#"+a.jgrid.jqID(b.p.id)).hover(function(){a(this).addClass("ui-state-hover");a("#"+a.jgrid.jqID(this.id),"#"+a.jgrid.jqID(b.p.id)+"_frozen").addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover");a("#"+a.jgrid.jqID(this.id),"#"+a.jgrid.jqID(b.p.id)+"_frozen").removeClass("ui-state-hover")}));c=null});b.grid.hDiv.loading||a(b).triggerHandler("jqGridAfterGridComplete");b.p.frozenColumns=!0}}}})},destroyFrozenColumns:function(){return this.each(function(){if(this.grid&& -!0===this.p.frozenColumns){a(this.grid.fhDiv).remove();a(this.grid.fbDiv).remove();this.grid.fhDiv=null;this.grid.fbDiv=null;a(this).unbind(".setFrozenColumns");if(!0===this.p.hoverrows){var b;a("#"+a.jgrid.jqID(this.p.id)).bind("mouseover",function(c){b=a(c.target).closest("tr.jqgrow");"ui-subgrid"!==a(b).attr("class")&&a(b).addClass("ui-state-hover")}).bind("mouseout",function(c){b=a(c.target).closest("tr.jqgrow");a(b).removeClass("ui-state-hover")})}this.p.frozenColumns=!1}})}})})(jQuery); -(function(a){a.extend(a.jgrid,{showModal:function(a){a.w.show()},closeModal:function(a){a.w.hide().attr("aria-hidden","true");a.o&&a.o.remove()},hideModal:function(d,b){b=a.extend({jqm:!0,gb:""},b||{});if(b.onClose){var c=b.gb&&"string"===typeof b.gb&&"#gbox_"===b.gb.substr(0,6)?b.onClose.call(a("#"+b.gb.substr(6))[0],d):b.onClose(d);if("boolean"===typeof c&&!c)return}if(a.fn.jqm&&!0===b.jqm)a(d).attr("aria-hidden","true").jqmHide();else{if(""!==b.gb)try{a(".jqgrid-overlay:first",b.gb).hide()}catch(g){}a(d).hide().attr("aria-hidden", -"true")}},findPos:function(a){var b=0,c=0;if(a.offsetParent){do b+=a.offsetLeft,c+=a.offsetTop;while(a=a.offsetParent)}return[b,c]},createModal:function(d,b,c,g,e,h,f){c=a.extend(!0,{},a.jgrid.jqModal||{},c);var k=document.createElement("div"),l,m=this;f=a.extend({},f||{});l="rtl"===a(c.gbox).attr("dir")?!0:!1;k.className="ui-widget ui-widget-content ui-corner-all ui-jqdialog";k.id=d.themodal;var n=document.createElement("div");n.className="ui-jqdialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix"; -n.id=d.modalhead;a(n).append("<span class='ui-jqdialog-title'>"+c.caption+"</span>");var q=a("<a class='ui-jqdialog-titlebar-close ui-corner-all'></a>").hover(function(){q.addClass("ui-state-hover")},function(){q.removeClass("ui-state-hover")}).append("<span class='ui-icon ui-icon-closethick'></span>");a(n).append(q);l?(k.dir="rtl",a(".ui-jqdialog-title",n).css("float","right"),a(".ui-jqdialog-titlebar-close",n).css("left","0.3em")):(k.dir="ltr",a(".ui-jqdialog-title",n).css("float","left"),a(".ui-jqdialog-titlebar-close", -n).css("right","0.3em"));var p=document.createElement("div");a(p).addClass("ui-jqdialog-content ui-widget-content").attr("id",d.modalcontent);a(p).append(b);k.appendChild(p);a(k).prepend(n);!0===h?a("body").append(k):"string"===typeof h?a(h).append(k):a(k).insertBefore(g);a(k).css(f);void 0===c.jqModal&&(c.jqModal=!0);b={};if(a.fn.jqm&&!0===c.jqModal)0===c.left&&0===c.top&&c.overlay&&(f=[],f=a.jgrid.findPos(e),c.left=f[0]+4,c.top=f[1]+4),b.top=c.top+"px",b.left=c.left;else if(0!==c.left||0!==c.top)b.left= -c.left,b.top=c.top+"px";a("a.ui-jqdialog-titlebar-close",n).click(function(){var b=a("#"+a.jgrid.jqID(d.themodal)).data("onClose")||c.onClose,e=a("#"+a.jgrid.jqID(d.themodal)).data("gbox")||c.gbox;m.hideModal("#"+a.jgrid.jqID(d.themodal),{gb:e,jqm:c.jqModal,onClose:b});return!1});0!==c.width&&c.width||(c.width=300);0!==c.height&&c.height||(c.height=200);c.zIndex||(g=a(g).parents("*[role=dialog]").filter(":first").css("z-index"),c.zIndex=g?parseInt(g,10)+2:950);g=0;l&&b.left&&!h&&(g=a(c.gbox).width()- -(isNaN(c.width)?0:parseInt(c.width,10))-8,b.left=parseInt(b.left,10)+parseInt(g,10));b.left&&(b.left+="px");a(k).css(a.extend({width:isNaN(c.width)?"auto":c.width+"px",height:isNaN(c.height)?"auto":c.height+"px",zIndex:c.zIndex,overflow:"hidden"},b)).attr({tabIndex:"-1",role:"dialog","aria-labelledby":d.modalhead,"aria-hidden":"true"});void 0===c.drag&&(c.drag=!0);void 0===c.resize&&(c.resize=!0);if(c.drag)if(a(n).css("cursor","move"),a.fn.jqDrag)a(k).jqDrag(n);else try{a(k).draggable({handle:a("#"+ -a.jgrid.jqID(n.id))})}catch(r){}if(c.resize)if(a.fn.jqResize)a(k).append("<div class='jqResize ui-resizable-handle ui-resizable-se ui-icon ui-icon-gripsmall-diagonal-se'></div>"),a("#"+a.jgrid.jqID(d.themodal)).jqResize(".jqResize",d.scrollelm?"#"+a.jgrid.jqID(d.scrollelm):!1);else try{a(k).resizable({handles:"se, sw",alsoResize:d.scrollelm?"#"+a.jgrid.jqID(d.scrollelm):!1})}catch(s){}!0===c.closeOnEscape&&a(k).keydown(function(b){27==b.which&&(b=a("#"+a.jgrid.jqID(d.themodal)).data("onClose")||c.onClose, -m.hideModal("#"+a.jgrid.jqID(d.themodal),{gb:c.gbox,jqm:c.jqModal,onClose:b}))})},viewModal:function(d,b){b=a.extend({toTop:!0,overlay:10,modal:!1,overlayClass:"ui-widget-overlay",onShow:a.jgrid.showModal,onHide:a.jgrid.closeModal,gbox:"",jqm:!0,jqM:!0},b||{});if(a.fn.jqm&&!0===b.jqm)b.jqM?a(d).attr("aria-hidden","false").jqm(b).jqmShow():a(d).attr("aria-hidden","false").jqmShow();else{""!==b.gbox&&(a(".jqgrid-overlay:first",b.gbox).show(),a(d).data("gbox",b.gbox));a(d).show().attr("aria-hidden", -"false");try{a(":input:visible",d)[0].focus()}catch(c){}}},info_dialog:function(d,b,c,g){var e={width:290,height:"auto",dataheight:"auto",drag:!0,resize:!1,left:250,top:170,zIndex:1E3,jqModal:!0,modal:!1,closeOnEscape:!0,align:"center",buttonalign:"center",buttons:[]};a.extend(!0,e,a.jgrid.jqModal||{},{caption:"<b>"+d+"</b>"},g||{});var h=e.jqModal,f=this;a.fn.jqm&&!h&&(h=!1);d="";if(0<e.buttons.length)for(g=0;g<e.buttons.length;g++)void 0===e.buttons[g].id&&(e.buttons[g].id="info_button_"+g),d+= -"<a id='"+e.buttons[g].id+"' class='fm-button ui-state-default ui-corner-all'>"+e.buttons[g].text+"</a>";g=isNaN(e.dataheight)?e.dataheight:e.dataheight+"px";b="<div id='info_id'>"+("<div id='infocnt' style='margin:0px;padding-bottom:1em;width:100%;overflow:auto;position:relative;height:"+g+";"+("text-align:"+e.align+";")+"'>"+b+"</div>");b+=c?"<div class='ui-widget-content ui-helper-clearfix' style='text-align:"+e.buttonalign+";padding-bottom:0.8em;padding-top:0.5em;background-image: none;border-width: 1px 0 0 0;'><a id='closedialog' class='fm-button ui-state-default ui-corner-all'>"+ -c+"</a>"+d+"</div>":""!==d?"<div class='ui-widget-content ui-helper-clearfix' style='text-align:"+e.buttonalign+";padding-bottom:0.8em;padding-top:0.5em;background-image: none;border-width: 1px 0 0 0;'>"+d+"</div>":"";b+="</div>";try{"false"===a("#info_dialog").attr("aria-hidden")&&a.jgrid.hideModal("#info_dialog",{jqm:h}),a("#info_dialog").remove()}catch(k){}a.jgrid.createModal({themodal:"info_dialog",modalhead:"info_head",modalcontent:"info_content",scrollelm:"infocnt"},b,e,"","",!0);d&&a.each(e.buttons, -function(b){a("#"+a.jgrid.jqID(this.id),"#info_id").bind("click",function(){e.buttons[b].onClick.call(a("#info_dialog"));return!1})});a("#closedialog","#info_id").click(function(){f.hideModal("#info_dialog",{jqm:h,onClose:a("#info_dialog").data("onClose")||e.onClose,gb:a("#info_dialog").data("gbox")||e.gbox});return!1});a(".fm-button","#info_dialog").hover(function(){a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")});a.isFunction(e.beforeOpen)&&e.beforeOpen();a.jgrid.viewModal("#info_dialog", -{onHide:function(a){a.w.hide().remove();a.o&&a.o.remove()},modal:e.modal,jqm:h});a.isFunction(e.afterOpen)&&e.afterOpen();try{a("#info_dialog").focus()}catch(l){}},bindEv:function(d,b){a.isFunction(b.dataInit)&&b.dataInit.call(this,d,b);b.dataEvents&&a.each(b.dataEvents,function(){void 0!==this.data?a(d).bind(this.type,this.data,this.fn):a(d).bind(this.type,this.fn)})},createEl:function(d,b,c,g,e){function h(b,d,c){var e="dataInit dataEvents dataUrl buildSelect sopt searchhidden defaultValue attr custom_element custom_value".split(" "); -void 0!==c&&a.isArray(c)&&a.merge(e,c);a.each(d,function(d,c){-1===a.inArray(d,e)&&a(b).attr(d,c)});d.hasOwnProperty("id")||a(b).attr("id",a.jgrid.randId())}var f="",k=this;switch(d){case "textarea":f=document.createElement("textarea");g?b.cols||a(f).css({width:"98%"}):b.cols||(b.cols=20);b.rows||(b.rows=2);if("&nbsp;"===c||"&#160;"===c||1===c.length&&160===c.charCodeAt(0))c="";f.value=c;h(f,b);a(f).attr({role:"textbox",multiline:"true"});break;case "checkbox":f=document.createElement("input");f.type= -"checkbox";b.value?(d=b.value.split(":"),c===d[0]&&(f.checked=!0,f.defaultChecked=!0),f.value=d[0],a(f).attr("offval",d[1])):(d=(c+"").toLowerCase(),0>d.search(/(false|f|0|no|n|off|undefined)/i)&&""!==d?(f.checked=!0,f.defaultChecked=!0,f.value=c):f.value="on",a(f).attr("offval","off"));h(f,b,["value"]);a(f).attr("role","checkbox");break;case "select":f=document.createElement("select");f.setAttribute("role","select");g=[];!0===b.multiple?(d=!0,f.multiple="multiple",a(f).attr("aria-multiselectable", -"true")):d=!1;if(void 0!==b.dataUrl){d=b.name?String(b.id).substring(0,String(b.id).length-String(b.name).length-1):String(b.id);var l=b.postData||e.postData;k.p&&k.p.idPrefix&&(d=a.jgrid.stripPref(k.p.idPrefix,d));a.ajax(a.extend({url:a.isFunction(b.dataUrl)?b.dataUrl.call(k,d,c,String(b.name)):b.dataUrl,type:"GET",dataType:"html",data:a.isFunction(l)?l.call(k,d,c,String(b.name)):l,context:{elem:f,options:b,vl:c},success:function(b){var d=[],c=this.elem,e=this.vl,f=a.extend({},this.options),g=!0=== -f.multiple;b=a.isFunction(f.buildSelect)?f.buildSelect.call(k,b):b;"string"===typeof b&&(b=a(a.trim(b)).html());b&&(a(c).append(b),h(c,f,l?["postData"]:void 0),void 0===f.size&&(f.size=g?3:1),g?(d=e.split(","),d=a.map(d,function(b){return a.trim(b)})):d[0]=a.trim(e),setTimeout(function(){a("option",c).each(function(b){0===b&&c.multiple&&(this.selected=!1);a(this).attr("role","option");if(-1<a.inArray(a.trim(a(this).text()),d)||-1<a.inArray(a.trim(a(this).val()),d))this.selected="selected"})},0))}}, -e||{}))}else if(b.value){var m;void 0===b.size&&(b.size=d?3:1);d&&(g=c.split(","),g=a.map(g,function(b){return a.trim(b)}));"function"===typeof b.value&&(b.value=b.value());var n,q,p=void 0===b.separator?":":b.separator;e=void 0===b.delimiter?";":b.delimiter;if("string"===typeof b.value)for(n=b.value.split(e),m=0;m<n.length;m++)q=n[m].split(p),2<q.length&&(q[1]=a.map(q,function(a,b){if(0<b)return a}).join(p)),e=document.createElement("option"),e.setAttribute("role","option"),e.value=q[0],e.innerHTML= -q[1],f.appendChild(e),d||a.trim(q[0])!==a.trim(c)&&a.trim(q[1])!==a.trim(c)||(e.selected="selected"),d&&(-1<a.inArray(a.trim(q[1]),g)||-1<a.inArray(a.trim(q[0]),g))&&(e.selected="selected");else if("object"===typeof b.value)for(m in p=b.value,p)p.hasOwnProperty(m)&&(e=document.createElement("option"),e.setAttribute("role","option"),e.value=m,e.innerHTML=p[m],f.appendChild(e),d||a.trim(m)!==a.trim(c)&&a.trim(p[m])!==a.trim(c)||(e.selected="selected"),d&&(-1<a.inArray(a.trim(p[m]),g)||-1<a.inArray(a.trim(m), -g))&&(e.selected="selected"));h(f,b,["value"])}break;case "text":case "password":case "button":m="button"===d?"button":"textbox";f=document.createElement("input");f.type=d;f.value=c;h(f,b);"button"!==d&&(g?b.size||a(f).css({width:"98%"}):b.size||(b.size=20));a(f).attr("role",m);break;case "image":case "file":f=document.createElement("input");f.type=d;h(f,b);break;case "custom":f=document.createElement("span");try{if(a.isFunction(b.custom_element))if(p=b.custom_element.call(k,c,b))p=a(p).addClass("customelement").attr({id:b.id, -name:b.name}),a(f).empty().append(p);else throw"e2";else throw"e1";}catch(r){"e1"===r&&a.jgrid.info_dialog(a.jgrid.errors.errcap,"function 'custom_element' "+a.jgrid.edit.msg.nodefined,a.jgrid.edit.bClose),"e2"===r?a.jgrid.info_dialog(a.jgrid.errors.errcap,"function 'custom_element' "+a.jgrid.edit.msg.novalue,a.jgrid.edit.bClose):a.jgrid.info_dialog(a.jgrid.errors.errcap,"string"===typeof r?r:r.message,a.jgrid.edit.bClose)}}return f},checkDate:function(a,b){var c={},g;a=a.toLowerCase();g=-1!==a.indexOf("/")? -"/":-1!==a.indexOf("-")?"-":-1!==a.indexOf(".")?".":"/";a=a.split(g);b=b.split(g);if(3!==b.length)return!1;var e=-1,h,f=g=-1,k;for(k=0;k<a.length;k++)h=isNaN(b[k])?0:parseInt(b[k],10),c[a[k]]=h,h=a[k],-1!==h.indexOf("y")&&(e=k),-1!==h.indexOf("m")&&(f=k),-1!==h.indexOf("d")&&(g=k);h="y"===a[e]||"yyyy"===a[e]?4:"yy"===a[e]?2:-1;k=[0,31,29,31,30,31,30,31,31,30,31,30,31];var l;if(-1===e)return!1;l=c[a[e]].toString();2===h&&1===l.length&&(h=1);if(l.length!==h||0===c[a[e]]&&"00"!==b[e]||-1===f)return!1; -l=c[a[f]].toString();if(1>l.length||1>c[a[f]]||12<c[a[f]]||-1===g)return!1;l=c[a[g]].toString();if(!(h=1>l.length)&&!(h=1>c[a[g]])&&!(h=31<c[a[g]])){if(h=2===c[a[f]])e=c[a[e]],h=c[a[g]]>(0!==e%4||0===e%100&&0!==e%400?28:29);h=h||c[a[g]]>k[c[a[f]]]}return h?!1:!0},isEmpty:function(a){return a.match(/^\s+$/)||""===a?!0:!1},checkTime:function(d){var b=/^(\d{1,2}):(\d{2})([apAP][Mm])?$/;if(!a.jgrid.isEmpty(d))if(d=d.match(b)){if(d[3]){if(1>d[1]||12<d[1])return!1}else if(23<d[1])return!1;if(59<d[2])return!1}else return!1; -return!0},checkValues:function(d,b,c,g){var e,h,f;f=this.p.colModel;if(void 0===c)if("string"===typeof b)for(c=0,g=f.length;c<g;c++){if(f[c].name===b){e=f[c].editrules;b=c;null!=f[c].formoptions&&(h=f[c].formoptions.label);break}}else 0<=b&&(e=f[b].editrules);else e=c,h=void 0===g?"_":g;if(e){h||(h=null!=this.p.colNames?this.p.colNames[b]:f[b].label);if(!0===e.required&&a.jgrid.isEmpty(d))return[!1,h+": "+a.jgrid.edit.msg.required,""];c=!1===e.required?!1:!0;if(!0===e.number&&(!1!==c||!a.jgrid.isEmpty(d))&& -isNaN(d))return[!1,h+": "+a.jgrid.edit.msg.number,""];if(void 0!==e.minValue&&!isNaN(e.minValue)&&parseFloat(d)<parseFloat(e.minValue))return[!1,h+": "+a.jgrid.edit.msg.minValue+" "+e.minValue,""];if(void 0!==e.maxValue&&!isNaN(e.maxValue)&&parseFloat(d)>parseFloat(e.maxValue))return[!1,h+": "+a.jgrid.edit.msg.maxValue+" "+e.maxValue,""];if(!(!0!==e.email||!1===c&&a.jgrid.isEmpty(d)||(g=/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, -g.test(d))))return[!1,h+": "+a.jgrid.edit.msg.email,""];if(!(!0!==e.integer||!1===c&&a.jgrid.isEmpty(d)||!isNaN(d)&&0===d%1&&-1===d.indexOf(".")))return[!1,h+": "+a.jgrid.edit.msg.integer,""];if(!(!0!==e.date||!1===c&&a.jgrid.isEmpty(d)||(f[b].formatoptions&&f[b].formatoptions.newformat?(f=f[b].formatoptions.newformat,a.jgrid.formatter.date.masks.hasOwnProperty(f)&&(f=a.jgrid.formatter.date.masks[f])):f=f[b].datefmt||"Y-m-d",a.jgrid.checkDate(f,d))))return[!1,h+": "+a.jgrid.edit.msg.date+" - "+f, -""];if(!0===e.time&&!(!1===c&&a.jgrid.isEmpty(d)||a.jgrid.checkTime(d)))return[!1,h+": "+a.jgrid.edit.msg.date+" - hh:mm (am/pm)",""];if(!(!0!==e.url||!1===c&&a.jgrid.isEmpty(d)||(g=/^(((https?)|(ftp)):\/\/([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!]*)(\.\w{2,})?)*\/?)/i,g.test(d))))return[!1,h+": "+a.jgrid.edit.msg.url,""];if(!0===e.custom&&(!1!==c||!a.jgrid.isEmpty(d)))return a.isFunction(e.custom_func)?(d=e.custom_func.call(this,d,h,b),a.isArray(d)?d:[!1,a.jgrid.edit.msg.customarray, -""]):[!1,a.jgrid.edit.msg.customfcheck,""]}return[!0,"",""]}})})(jQuery); -(function(a){var b={};a.jgrid.extend({searchGrid:function(b){b=a.extend(!0,{recreateFilter:!1,drag:!0,sField:"searchField",sValue:"searchString",sOper:"searchOper",sFilter:"filters",loadDefaults:!0,beforeShowSearch:null,afterShowSearch:null,onInitializeSearch:null,afterRedraw:null,afterChange:null,closeAfterSearch:!1,closeAfterReset:!1,closeOnEscape:!1,searchOnEnter:!1,multipleSearch:!1,multipleGroup:!1,top:0,left:0,jqModal:!0,modal:!1,resize:!0,width:450,height:"auto",dataheight:"auto",showQuery:!1, -errorcheck:!0,sopt:null,stringResult:void 0,onClose:null,onSearch:null,onReset:null,toTop:!0,overlay:30,columns:[],tmplNames:null,tmplFilters:null,tmplLabel:" Template: ",showOnLoad:!1,layer:null,operands:{eq:"=",ne:"<>",lt:"<",le:"<=",gt:">",ge:">=",bw:"LIKE",bn:"NOT LIKE","in":"IN",ni:"NOT IN",ew:"LIKE",en:"NOT LIKE",cn:"LIKE",nc:"NOT LIKE",nu:"IS NULL",nn:"ISNOT NULL"}},a.jgrid.search,b||{});return this.each(function(){function c(c){w=a(e).triggerHandler("jqGridFilterBeforeShow",[c]);void 0=== -w&&(w=!0);w&&a.isFunction(b.beforeShowSearch)&&(w=b.beforeShowSearch.call(e,c));w&&(a.jgrid.viewModal("#"+a.jgrid.jqID(s.themodal),{gbox:"#gbox_"+a.jgrid.jqID(h),jqm:b.jqModal,modal:b.modal,overlay:b.overlay,toTop:b.toTop}),a(e).triggerHandler("jqGridFilterAfterShow",[c]),a.isFunction(b.afterShowSearch)&&b.afterShowSearch.call(e,c))}var e=this;if(e.grid){var h="fbox_"+e.p.id,w=!0,t=!0,s={themodal:"searchmod"+h,modalhead:"searchhd"+h,modalcontent:"searchcnt"+h,scrollelm:h},r=e.p.postData[b.sFilter]; -"string"===typeof r&&(r=a.jgrid.parse(r));!0===b.recreateFilter&&a("#"+a.jgrid.jqID(s.themodal)).remove();if(void 0!==a("#"+a.jgrid.jqID(s.themodal))[0])c(a("#fbox_"+a.jgrid.jqID(+e.p.id)));else{var f=a("<div><div id='"+h+"' class='searchFilter' style='overflow:auto'></div></div>").insertBefore("#gview_"+a.jgrid.jqID(e.p.id)),k="left",u="";"rtl"===e.p.direction&&(k="right",u=" style='text-align:left'",f.attr("dir","rtl"));var x=a.extend([],e.p.colModel),d="<a id='"+h+"_search' class='fm-button ui-state-default ui-corner-all fm-button-icon-right ui-reset'><span class='ui-icon ui-icon-search'></span>"+ -b.Find+"</a>",v="<a id='"+h+"_reset' class='fm-button ui-state-default ui-corner-all fm-button-icon-left ui-search'><span class='ui-icon ui-icon-arrowreturnthick-1-w'></span>"+b.Reset+"</a>",g="",m="",p,q=!1,y=-1;b.showQuery&&(g="<a id='"+h+"_query' class='fm-button ui-state-default ui-corner-all fm-button-icon-left'><span class='ui-icon ui-icon-comment'></span>Query</a>");b.columns.length?(x=b.columns,y=0,p=x[0].index||x[0].name):a.each(x,function(a,b){b.label||(b.label=e.p.colNames[a]);if(!q){var c= -void 0===b.search?!0:b.search,d=!0===b.hidden;if(b.searchoptions&&!0===b.searchoptions.searchhidden&&c||c&&!d)q=!0,p=b.index||b.name,y=a}});if(!r&&p||!1===b.multipleSearch){var D="eq";0<=y&&x[y].searchoptions&&x[y].searchoptions.sopt?D=x[y].searchoptions.sopt[0]:b.sopt&&b.sopt.length&&(D=b.sopt[0]);r={groupOp:"AND",rules:[{field:p,op:D,data:""}]}}q=!1;b.tmplNames&&b.tmplNames.length&&(q=!0,m=b.tmplLabel,m+="<select class='ui-template'>",m+="<option value='default'>Default</option>",a.each(b.tmplNames, -function(a,b){m+="<option value='"+a+"'>"+b+"</option>"}),m+="</select>");k="<table class='EditTable' style='border:0px none;margin-top:5px' id='"+h+"_2'><tbody><tr><td colspan='2'><hr class='ui-widget-content' style='margin:1px'/></td></tr><tr><td class='EditButton' style='text-align:"+k+"'>"+v+m+"</td><td class='EditButton' "+u+">"+g+d+"</td></tr></tbody></table>";h=a.jgrid.jqID(h);a("#"+h).jqFilter({columns:x,filter:b.loadDefaults?r:null,showQuery:b.showQuery,errorcheck:b.errorcheck,sopt:b.sopt, -groupButton:b.multipleGroup,ruleButtons:b.multipleSearch,afterRedraw:b.afterRedraw,ops:b.odata,operands:b.operands,ajaxSelectOptions:e.p.ajaxSelectOptions,groupOps:b.groupOps,onChange:function(){this.p.showQuery&&a(".query",this).html(this.toUserFriendlyString());a.isFunction(b.afterChange)&&b.afterChange.call(e,a("#"+h),b)},direction:e.p.direction,id:e.p.id});f.append(k);q&&b.tmplFilters&&b.tmplFilters.length&&a(".ui-template",f).bind("change",function(){var c=a(this).val();"default"===c?a("#"+h).jqFilter("addFilter", -r):a("#"+h).jqFilter("addFilter",b.tmplFilters[parseInt(c,10)]);return!1});!0===b.multipleGroup&&(b.multipleSearch=!0);a(e).triggerHandler("jqGridFilterInitialize",[a("#"+h)]);a.isFunction(b.onInitializeSearch)&&b.onInitializeSearch.call(e,a("#"+h));b.gbox="#gbox_"+h;b.layer?a.jgrid.createModal(s,f,b,"#gview_"+a.jgrid.jqID(e.p.id),a("#gbox_"+a.jgrid.jqID(e.p.id))[0],"#"+a.jgrid.jqID(b.layer),{position:"relative"}):a.jgrid.createModal(s,f,b,"#gview_"+a.jgrid.jqID(e.p.id),a("#gbox_"+a.jgrid.jqID(e.p.id))[0]); -(b.searchOnEnter||b.closeOnEscape)&&a("#"+a.jgrid.jqID(s.themodal)).keydown(function(c){var d=a(c.target);if(b.searchOnEnter&&13===c.which&&!(d.hasClass("add-group")||d.hasClass("add-rule")||d.hasClass("delete-group")||d.hasClass("delete-rule")||d.hasClass("fm-button")&&d.is("[id$=_query]")))return a("#"+h+"_search").click(),!1;if(b.closeOnEscape&&27===c.which)return a("#"+a.jgrid.jqID(s.modalhead)).find(".ui-jqdialog-titlebar-close").click(),!1});g&&a("#"+h+"_query").bind("click",function(){a(".queryresult", -f).toggle();return!1});void 0===b.stringResult&&(b.stringResult=b.multipleSearch);a("#"+h+"_search").bind("click",function(){var c=a("#"+h),d={},n,g;c.find(".input-elm:focus").change();g=c.jqFilter("filterData");if(b.errorcheck&&(c[0].hideError(),b.showQuery||c.jqFilter("toSQLString"),c[0].p.error))return c[0].showError(),!1;if(b.stringResult){try{n=xmlJsonClass.toJson(g,"","",!1)}catch(f){try{n=JSON.stringify(g)}catch(k){}}"string"===typeof n&&(d[b.sFilter]=n,a.each([b.sField,b.sValue,b.sOper],function(){d[this]= -""}))}else b.multipleSearch?(d[b.sFilter]=g,a.each([b.sField,b.sValue,b.sOper],function(){d[this]=""})):(d[b.sField]=g.rules[0].field,d[b.sValue]=g.rules[0].data,d[b.sOper]=g.rules[0].op,d[b.sFilter]="");e.p.search=!0;a.extend(e.p.postData,d);t=a(e).triggerHandler("jqGridFilterSearch");void 0===t&&(t=!0);t&&a.isFunction(b.onSearch)&&(t=b.onSearch.call(e,e.p.filters));!1!==t&&a(e).trigger("reloadGrid",[{page:1}]);b.closeAfterSearch&&a.jgrid.hideModal("#"+a.jgrid.jqID(s.themodal),{gb:"#gbox_"+a.jgrid.jqID(e.p.id), -jqm:b.jqModal,onClose:b.onClose});return!1});a("#"+h+"_reset").bind("click",function(){var c={},d=a("#"+h);e.p.search=!1;e.p.resetsearch=!0;!1===b.multipleSearch?c[b.sField]=c[b.sValue]=c[b.sOper]="":c[b.sFilter]="";d[0].resetFilter();q&&a(".ui-template",f).val("default");a.extend(e.p.postData,c);t=a(e).triggerHandler("jqGridFilterReset");void 0===t&&(t=!0);t&&a.isFunction(b.onReset)&&(t=b.onReset.call(e));!1!==t&&a(e).trigger("reloadGrid",[{page:1}]);b.closeAfterReset&&a.jgrid.hideModal("#"+a.jgrid.jqID(s.themodal), -{gb:"#gbox_"+a.jgrid.jqID(e.p.id),jqm:b.jqModal,onClose:b.onClose});return!1});c(a("#"+h));a(".fm-button:not(.ui-state-disabled)",f).hover(function(){a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")})}}})},editGridRow:function(z,c){c=a.extend(!0,{top:0,left:0,width:300,datawidth:"auto",height:"auto",dataheight:"auto",modal:!1,overlay:30,drag:!0,resize:!0,url:null,mtype:"POST",clearAfterAdd:!0,closeAfterEdit:!1,reloadAfterSubmit:!0,onInitializeForm:null,beforeInitData:null, -beforeShowForm:null,afterShowForm:null,beforeSubmit:null,afterSubmit:null,onclickSubmit:null,afterComplete:null,onclickPgButtons:null,afterclickPgButtons:null,editData:{},recreateForm:!1,jqModal:!0,closeOnEscape:!1,addedrow:"first",topinfo:"",bottominfo:"",saveicon:[],closeicon:[],savekey:[!1,13],navkeys:[!1,38,40],checkOnSubmit:!1,checkOnUpdate:!1,_savedData:{},processing:!1,onClose:null,ajaxEditOptions:{},serializeEditData:null,viewPagerButtons:!0,overlayClass:"ui-widget-overlay"},a.jgrid.edit, -c||{});b[a(this)[0].p.id]=c;return this.each(function(){function e(){a(p+" > tbody > tr > td > .FormElement").each(function(){var b=a(".customelement",this);if(b.length){var c=a(b[0]).attr("name");a.each(d.p.colModel,function(){if(this.name===c&&this.editoptions&&a.isFunction(this.editoptions.custom_value)){try{if(l[c]=this.editoptions.custom_value.call(d,a("#"+a.jgrid.jqID(c),p),"get"),void 0===l[c])throw"e1";}catch(b){"e1"===b?a.jgrid.info_dialog(a.jgrid.errors.errcap,"function 'custom_value' "+ -a.jgrid.edit.msg.novalue,a.jgrid.edit.bClose):a.jgrid.info_dialog(a.jgrid.errors.errcap,b.message,a.jgrid.edit.bClose)}return!0}})}else{switch(a(this).get(0).type){case "checkbox":a(this).is(":checked")?l[this.name]=a(this).val():(b=a(this).attr("offval"),l[this.name]=b);break;case "select-one":l[this.name]=a("option:selected",this).val();break;case "select-multiple":l[this.name]=a(this).val();l[this.name]=l[this.name]?l[this.name].join(","):"";a("option:selected",this).each(function(b,c){a(c).text()}); -break;case "password":case "text":case "textarea":case "button":l[this.name]=a(this).val()}d.p.autoencode&&(l[this.name]=a.jgrid.htmlEncode(l[this.name]))}});return!0}function h(c,e,n,f){var k,l,p,h=0,q,m,r,C=[],u=!1,z="",t;for(t=1;t<=f;t++)z+="<td class='CaptionTD'>&#160;</td><td class='DataTD'>&#160;</td>";"_empty"!==c&&(u=a(e).jqGrid("getInd",c));a(e.p.colModel).each(function(t){k=this.name;m=(l=this.editrules&&!0===this.editrules.edithidden?!1:!0===this.hidden?!0:!1)?"style='display:none'":""; -if("cb"!==k&&"subgrid"!==k&&!0===this.editable&&"rn"!==k){if(!1===u)q="";else if(k===e.p.ExpandColumn&&!0===e.p.treeGrid)q=a("td[role='gridcell']:eq("+t+")",e.rows[u]).text();else{try{q=a.unformat.call(e,a("td[role='gridcell']:eq("+t+")",e.rows[u]),{rowId:c,colModel:this},t)}catch(w){q=this.edittype&&"textarea"===this.edittype?a("td[role='gridcell']:eq("+t+")",e.rows[u]).text():a("td[role='gridcell']:eq("+t+")",e.rows[u]).html()}if(!q||"&nbsp;"===q||"&#160;"===q||1===q.length&&160===q.charCodeAt(0))q= -""}var s=a.extend({},this.editoptions||{},{id:k,name:k}),y=a.extend({},{elmprefix:"",elmsuffix:"",rowabove:!1,rowcontent:""},this.formoptions||{}),v=parseInt(y.rowpos,10)||h+1,A=parseInt(2*(parseInt(y.colpos,10)||1),10);"_empty"===c&&s.defaultValue&&(q=a.isFunction(s.defaultValue)?s.defaultValue.call(d):s.defaultValue);this.edittype||(this.edittype="text");d.p.autoencode&&(q=a.jgrid.htmlDecode(q));r=a.jgrid.createEl.call(d,this.edittype,s,q,!1,a.extend({},a.jgrid.ajaxOptions,e.p.ajaxSelectOptions|| -{}));if(b[d.p.id].checkOnSubmit||b[d.p.id].checkOnUpdate)b[d.p.id]._savedData[k]=q;a(r).addClass("FormElement");-1<a.inArray(this.edittype,["text","textarea","password","select"])&&a(r).addClass("ui-widget-content ui-corner-all");p=a(n).find("tr[rowpos="+v+"]");if(y.rowabove){var x=a("<tr><td class='contentinfo' colspan='"+2*f+"'>"+y.rowcontent+"</td></tr>");a(n).append(x);x[0].rp=v}0===p.length&&(p=a("<tr "+m+" rowpos='"+v+"'></tr>").addClass("FormData").attr("id","tr_"+k),a(p).append(z),a(n).append(p), -p[0].rp=v);a("td:eq("+(A-2)+")",p[0]).html(void 0===y.label?e.p.colNames[t]:y.label);a("td:eq("+(A-1)+")",p[0]).append(y.elmprefix).append(r).append(y.elmsuffix);"custom"===this.edittype&&a.isFunction(s.custom_value)&&s.custom_value.call(d,a("#"+k,"#"+g),"set",q);a.jgrid.bindEv.call(d,r,s);C[h]=t;h++}});0<h&&(t=a("<tr class='FormData' style='display:none'><td class='CaptionTD'></td><td colspan='"+(2*f-1)+"' class='DataTD'><input class='FormElement' id='id_g' type='text' name='"+e.p.id+"_id' value='"+ -c+"'/></td></tr>"),t[0].rp=h+999,a(n).append(t),b[d.p.id].checkOnSubmit||b[d.p.id].checkOnUpdate)&&(b[d.p.id]._savedData[e.p.id+"_id"]=c);return C}function w(c,e,n){var g,k=0,f,l,q,h,r;if(b[d.p.id].checkOnSubmit||b[d.p.id].checkOnUpdate)b[d.p.id]._savedData={},b[d.p.id]._savedData[e.p.id+"_id"]=c;var m=e.p.colModel;if("_empty"===c)a(m).each(function(){g=this.name;q=a.extend({},this.editoptions||{});(l=a("#"+a.jgrid.jqID(g),"#"+n))&&l.length&&null!==l[0]&&(h="","custom"===this.edittype&&a.isFunction(q.custom_value)? -q.custom_value.call(d,a("#"+g,"#"+n),"set",h):q.defaultValue?(h=a.isFunction(q.defaultValue)?q.defaultValue.call(d):q.defaultValue,"checkbox"===l[0].type?(r=h.toLowerCase(),0>r.search(/(false|f|0|no|n|off|undefined)/i)&&""!==r?(l[0].checked=!0,l[0].defaultChecked=!0,l[0].value=h):(l[0].checked=!1,l[0].defaultChecked=!1)):l.val(h)):"checkbox"===l[0].type?(l[0].checked=!1,l[0].defaultChecked=!1,h=a(l).attr("offval")):l[0].type&&"select"===l[0].type.substr(0,6)?l[0].selectedIndex=0:l.val(h),!0===b[d.p.id].checkOnSubmit|| -b[d.p.id].checkOnUpdate)&&(b[d.p.id]._savedData[g]=h)}),a("#id_g","#"+n).val(c);else{var t=a(e).jqGrid("getInd",c,!0);t&&(a('td[role="gridcell"]',t).each(function(l){g=m[l].name;if("cb"!==g&&"subgrid"!==g&&"rn"!==g&&!0===m[l].editable){if(g===e.p.ExpandColumn&&!0===e.p.treeGrid)f=a(this).text();else try{f=a.unformat.call(e,a(this),{rowId:c,colModel:m[l]},l)}catch(q){f="textarea"===m[l].edittype?a(this).text():a(this).html()}d.p.autoencode&&(f=a.jgrid.htmlDecode(f));if(!0===b[d.p.id].checkOnSubmit|| -b[d.p.id].checkOnUpdate)b[d.p.id]._savedData[g]=f;g=a.jgrid.jqID(g);switch(m[l].edittype){case "password":case "text":case "button":case "image":case "textarea":if("&nbsp;"===f||"&#160;"===f||1===f.length&&160===f.charCodeAt(0))f="";a("#"+g,"#"+n).val(f);break;case "select":var h=f.split(","),h=a.map(h,function(b){return a.trim(b)});a("#"+g+" option","#"+n).each(function(){m[l].editoptions.multiple||a.trim(f)!==a.trim(a(this).text())&&h[0]!==a.trim(a(this).text())&&h[0]!==a.trim(a(this).val())?m[l].editoptions.multiple? --1<a.inArray(a.trim(a(this).text()),h)||-1<a.inArray(a.trim(a(this).val()),h)?this.selected=!0:this.selected=!1:this.selected=!1:this.selected=!0});break;case "checkbox":f=String(f);if(m[l].editoptions&&m[l].editoptions.value)if(m[l].editoptions.value.split(":")[0]===f)a("#"+g,"#"+n)[d.p.useProp?"prop":"attr"]({checked:!0,defaultChecked:!0});else a("#"+g,"#"+n)[d.p.useProp?"prop":"attr"]({checked:!1,defaultChecked:!1});else f=f.toLowerCase(),0>f.search(/(false|f|0|no|n|off|undefined)/i)&&""!==f?(a("#"+ -g,"#"+n)[d.p.useProp?"prop":"attr"]("checked",!0),a("#"+g,"#"+n)[d.p.useProp?"prop":"attr"]("defaultChecked",!0)):(a("#"+g,"#"+n)[d.p.useProp?"prop":"attr"]("checked",!1),a("#"+g,"#"+n)[d.p.useProp?"prop":"attr"]("defaultChecked",!1));break;case "custom":try{if(m[l].editoptions&&a.isFunction(m[l].editoptions.custom_value))m[l].editoptions.custom_value.call(d,a("#"+g,"#"+n),"set",f);else throw"e1";}catch(p){"e1"===p?a.jgrid.info_dialog(a.jgrid.errors.errcap,"function 'custom_value' "+a.jgrid.edit.msg.nodefined, -a.jgrid.edit.bClose):a.jgrid.info_dialog(a.jgrid.errors.errcap,p.message,a.jgrid.edit.bClose)}}k++}}),0<k&&a("#id_g",p).val(c))}}function t(){a.each(d.p.colModel,function(a,b){b.editoptions&&!0===b.editoptions.NullIfEmpty&&l.hasOwnProperty(b.name)&&""===l[b.name]&&(l[b.name]="null")})}function s(){var e,n=[!0,"",""],f={},k=d.p.prmNames,h,m,r,u,s,C=a(d).triggerHandler("jqGridAddEditBeforeCheckValues",[a("#"+g),B]);C&&"object"===typeof C&&(l=C);a.isFunction(b[d.p.id].beforeCheckValues)&&(C=b[d.p.id].beforeCheckValues.call(d, -l,a("#"+g),B))&&"object"===typeof C&&(l=C);for(r in l)if(l.hasOwnProperty(r)&&(n=a.jgrid.checkValues.call(d,l[r],r),!1===n[0]))break;t();n[0]&&(f=a(d).triggerHandler("jqGridAddEditClickSubmit",[b[d.p.id],l,B]),void 0===f&&a.isFunction(b[d.p.id].onclickSubmit)&&(f=b[d.p.id].onclickSubmit.call(d,b[d.p.id],l,B)||{}),n=a(d).triggerHandler("jqGridAddEditBeforeSubmit",[l,a("#"+g),B]),void 0===n&&(n=[!0,"",""]),n[0]&&a.isFunction(b[d.p.id].beforeSubmit)&&(n=b[d.p.id].beforeSubmit.call(d,l,a("#"+g),B))); -if(n[0]&&!b[d.p.id].processing){b[d.p.id].processing=!0;a("#sData",p+"_2").addClass("ui-state-active");m=k.oper;h=k.id;l[m]="_empty"===a.trim(l[d.p.id+"_id"])?k.addoper:k.editoper;l[m]!==k.addoper?l[h]=l[d.p.id+"_id"]:void 0===l[h]&&(l[h]=l[d.p.id+"_id"]);delete l[d.p.id+"_id"];l=a.extend(l,b[d.p.id].editData,f);if(!0===d.p.treeGrid)for(s in l[m]===k.addoper&&(u=a(d).jqGrid("getGridParam","selrow"),l["adjacency"===d.p.treeGridModel?d.p.treeReader.parent_id_field:"parent_id"]=u),d.p.treeReader)d.p.treeReader.hasOwnProperty(s)&& -(f=d.p.treeReader[s],!l.hasOwnProperty(f)||l[m]===k.addoper&&"parent_id_field"===s||delete l[f]);l[h]=a.jgrid.stripPref(d.p.idPrefix,l[h]);s=a.extend({url:b[d.p.id].url||a(d).jqGrid("getGridParam","editurl"),type:b[d.p.id].mtype,data:a.isFunction(b[d.p.id].serializeEditData)?b[d.p.id].serializeEditData.call(d,l):l,complete:function(f,r){var s;l[h]=d.p.idPrefix+l[h];300<=f.status&&304!==f.status?(n[0]=!1,n[1]=a(d).triggerHandler("jqGridAddEditErrorTextFormat",[f,B]),a.isFunction(b[d.p.id].errorTextFormat)? -n[1]=b[d.p.id].errorTextFormat.call(d,f,B):n[1]=r+" Status: '"+f.statusText+"'. Error code: "+f.status):(n=a(d).triggerHandler("jqGridAddEditAfterSubmit",[f,l,B]),void 0===n&&(n=[!0,"",""]),n[0]&&a.isFunction(b[d.p.id].afterSubmit)&&(n=b[d.p.id].afterSubmit.call(d,f,l,B)));if(!1===n[0])a("#FormError>td",p).html(n[1]),a("#FormError",p).show();else if(d.p.autoencode&&a.each(l,function(b,c){l[b]=a.jgrid.htmlDecode(c)}),l[m]===k.addoper?(n[2]||(n[2]=a.jgrid.randId()),l[h]=n[2],b[d.p.id].reloadAfterSubmit? -a(d).trigger("reloadGrid"):!0===d.p.treeGrid?a(d).jqGrid("addChildNode",n[2],u,l):a(d).jqGrid("addRowData",n[2],l,c.addedrow),b[d.p.id].closeAfterAdd?(!0!==d.p.treeGrid&&a(d).jqGrid("setSelection",n[2]),a.jgrid.hideModal("#"+a.jgrid.jqID(q.themodal),{gb:"#gbox_"+a.jgrid.jqID(v),jqm:c.jqModal,onClose:b[d.p.id].onClose})):b[d.p.id].clearAfterAdd&&w("_empty",d,g)):(b[d.p.id].reloadAfterSubmit?(a(d).trigger("reloadGrid"),b[d.p.id].closeAfterEdit||setTimeout(function(){a(d).jqGrid("setSelection",l[h])}, -1E3)):!0===d.p.treeGrid?a(d).jqGrid("setTreeRow",l[h],l):a(d).jqGrid("setRowData",l[h],l),b[d.p.id].closeAfterEdit&&a.jgrid.hideModal("#"+a.jgrid.jqID(q.themodal),{gb:"#gbox_"+a.jgrid.jqID(v),jqm:c.jqModal,onClose:b[d.p.id].onClose})),a.isFunction(b[d.p.id].afterComplete)&&(e=f,setTimeout(function(){a(d).triggerHandler("jqGridAddEditAfterComplete",[e,l,a("#"+g),B]);b[d.p.id].afterComplete.call(d,e,l,a("#"+g),B);e=null},500)),b[d.p.id].checkOnSubmit||b[d.p.id].checkOnUpdate)if(a("#"+g).data("disabled", -!1),"_empty"!==b[d.p.id]._savedData[d.p.id+"_id"])for(s in b[d.p.id]._savedData)b[d.p.id]._savedData.hasOwnProperty(s)&&l[s]&&(b[d.p.id]._savedData[s]=l[s]);b[d.p.id].processing=!1;a("#sData",p+"_2").removeClass("ui-state-active");try{a(":input:visible","#"+g)[0].focus()}catch(t){}}},a.jgrid.ajaxOptions,b[d.p.id].ajaxEditOptions);s.url||b[d.p.id].useDataProxy||(a.isFunction(d.p.dataProxy)?b[d.p.id].useDataProxy=!0:(n[0]=!1,n[1]+=" "+a.jgrid.errors.nourl));n[0]&&(b[d.p.id].useDataProxy?(f=d.p.dataProxy.call(d, -s,"set_"+d.p.id),void 0===f&&(f=[!0,""]),!1===f[0]?(n[0]=!1,n[1]=f[1]||"Error deleting the selected row!"):(s.data.oper===k.addoper&&b[d.p.id].closeAfterAdd&&a.jgrid.hideModal("#"+a.jgrid.jqID(q.themodal),{gb:"#gbox_"+a.jgrid.jqID(v),jqm:c.jqModal,onClose:b[d.p.id].onClose}),s.data.oper===k.editoper&&b[d.p.id].closeAfterEdit&&a.jgrid.hideModal("#"+a.jgrid.jqID(q.themodal),{gb:"#gbox_"+a.jgrid.jqID(v),jqm:c.jqModal,onClose:b[d.p.id].onClose}))):a.ajax(s))}!1===n[0]&&(a("#FormError>td",p).html(n[1]), -a("#FormError",p).show())}function r(a,b){var c=!1,d;for(d in a)if(a.hasOwnProperty(d)&&a[d]!=b[d]){c=!0;break}return c}function f(){var c=!0;a("#FormError",p).hide();b[d.p.id].checkOnUpdate&&(l={},e(),M=r(l,b[d.p.id]._savedData))&&(a("#"+g).data("disabled",!0),a(".confirm","#"+q.themodal).show(),c=!1);return c}function k(){var b;if("_empty"!==z&&void 0!==d.p.savedRow&&0<d.p.savedRow.length&&a.isFunction(a.fn.jqGrid.restoreRow))for(b=0;b<d.p.savedRow.length;b++)if(d.p.savedRow[b].id==z){a(d).jqGrid("restoreRow", -z);break}}function u(b,c){var d=c[1].length-1;0===b?a("#pData",p+"_2").addClass("ui-state-disabled"):void 0!==c[1][b-1]&&a("#"+a.jgrid.jqID(c[1][b-1])).hasClass("ui-state-disabled")?a("#pData",p+"_2").addClass("ui-state-disabled"):a("#pData",p+"_2").removeClass("ui-state-disabled");b===d?a("#nData",p+"_2").addClass("ui-state-disabled"):void 0!==c[1][b+1]&&a("#"+a.jgrid.jqID(c[1][b+1])).hasClass("ui-state-disabled")?a("#nData",p+"_2").addClass("ui-state-disabled"):a("#nData",p+"_2").removeClass("ui-state-disabled")} -function x(){var b=a(d).jqGrid("getDataIDs"),c=a("#id_g",p).val();return[a.inArray(c,b),b]}var d=this;if(d.grid&&z){var v=d.p.id,g="FrmGrid_"+v,m="TblGrid_"+v,p="#"+a.jgrid.jqID(m),q={themodal:"editmod"+v,modalhead:"edithd"+v,modalcontent:"editcnt"+v,scrollelm:g},y=a.isFunction(b[d.p.id].beforeShowForm)?b[d.p.id].beforeShowForm:!1,D=a.isFunction(b[d.p.id].afterShowForm)?b[d.p.id].afterShowForm:!1,A=a.isFunction(b[d.p.id].beforeInitData)?b[d.p.id].beforeInitData:!1,E=a.isFunction(b[d.p.id].onInitializeForm)? -b[d.p.id].onInitializeForm:!1,n=!0,C=1,I=0,l,M,B,g=a.jgrid.jqID(g);"new"===z?(z="_empty",B="add",c.caption=b[d.p.id].addCaption):(c.caption=b[d.p.id].editCaption,B="edit");c.recreateForm||a(d).data("formProp")&&a.extend(b[a(this)[0].p.id],a(d).data("formProp"));var N=!0;c.checkOnUpdate&&c.jqModal&&!c.modal&&(N=!1);var H=isNaN(b[a(this)[0].p.id].dataheight)?b[a(this)[0].p.id].dataheight:b[a(this)[0].p.id].dataheight+"px",n=isNaN(b[a(this)[0].p.id].datawidth)?b[a(this)[0].p.id].datawidth:b[a(this)[0].p.id].datawidth+ -"px",H=a("<form name='FormPost' id='"+g+"' class='FormGrid' onSubmit='return false;' style='width:"+n+";overflow:auto;position:relative;height:"+H+";'></form>").data("disabled",!1),F=a("<table id='"+m+"' class='EditTable' cellspacing='0' cellpadding='0' border='0'><tbody></tbody></table>"),n=a(d).triggerHandler("jqGridAddEditBeforeInitData",[a("#"+g),B]);void 0===n&&(n=!0);n&&A&&(n=A.call(d,a("#"+g),B));if(!1!==n){k();a(d.p.colModel).each(function(){var a=this.formoptions;C=Math.max(C,a?a.colpos|| -0:0);I=Math.max(I,a?a.rowpos||0:0)});a(H).append(F);A=a("<tr id='FormError' style='display:none'><td class='ui-state-error' colspan='"+2*C+"'></td></tr>");A[0].rp=0;a(F).append(A);A=a("<tr style='display:none' class='tinfo'><td class='topinfo' colspan='"+2*C+"'>"+b[d.p.id].topinfo+"</td></tr>");A[0].rp=0;a(F).append(A);var n=(A="rtl"===d.p.direction?!0:!1)?"nData":"pData",G=A?"pData":"nData";h(z,d,F,C);var n="<a id='"+n+"' class='fm-button ui-state-default ui-corner-left'><span class='ui-icon ui-icon-triangle-1-w'></span></a>", -G="<a id='"+G+"' class='fm-button ui-state-default ui-corner-right'><span class='ui-icon ui-icon-triangle-1-e'></span></a>",J="<a id='sData' class='fm-button ui-state-default ui-corner-all'>"+c.bSubmit+"</a>",K="<a id='cData' class='fm-button ui-state-default ui-corner-all'>"+c.bCancel+"</a>",m="<table border='0' cellspacing='0' cellpadding='0' class='EditTable' id='"+m+"_2'><tbody><tr><td colspan='2'><hr class='ui-widget-content' style='margin:1px'/></td></tr><tr id='Act_Buttons'><td class='navButton'>"+ -(A?G+n:n+G)+"</td><td class='EditButton'>"+J+K+"</td></tr>"+("<tr style='display:none' class='binfo'><td class='bottominfo' colspan='2'>"+b[d.p.id].bottominfo+"</td></tr>"),m=m+"</tbody></table>";if(0<I){var L=[];a.each(a(F)[0].rows,function(a,b){L[a]=b});L.sort(function(a,b){return a.rp>b.rp?1:a.rp<b.rp?-1:0});a.each(L,function(b,c){a("tbody",F).append(c)})}c.gbox="#gbox_"+a.jgrid.jqID(v);var O=!1;!0===c.closeOnEscape&&(c.closeOnEscape=!1,O=!0);m=a("<div></div>").append(H).append(m);a.jgrid.createModal(q, -m,b[a(this)[0].p.id],"#gview_"+a.jgrid.jqID(d.p.id),a("#gbox_"+a.jgrid.jqID(d.p.id))[0]);A&&(a("#pData, #nData",p+"_2").css("float","right"),a(".EditButton",p+"_2").css("text-align","left"));b[d.p.id].topinfo&&a(".tinfo",p).show();b[d.p.id].bottominfo&&a(".binfo",p+"_2").show();m=m=null;a("#"+a.jgrid.jqID(q.themodal)).keydown(function(e){var n=e.target;if(!0===a("#"+g).data("disabled"))return!1;if(!0===b[d.p.id].savekey[0]&&e.which===b[d.p.id].savekey[1]&&"TEXTAREA"!==n.tagName)return a("#sData", -p+"_2").trigger("click"),!1;if(27===e.which){if(!f())return!1;O&&a.jgrid.hideModal("#"+a.jgrid.jqID(q.themodal),{gb:c.gbox,jqm:c.jqModal,onClose:b[d.p.id].onClose});return!1}if(!0===b[d.p.id].navkeys[0]){if("_empty"===a("#id_g",p).val())return!0;if(e.which===b[d.p.id].navkeys[1])return a("#pData",p+"_2").trigger("click"),!1;if(e.which===b[d.p.id].navkeys[2])return a("#nData",p+"_2").trigger("click"),!1}});c.checkOnUpdate&&(a("a.ui-jqdialog-titlebar-close span","#"+a.jgrid.jqID(q.themodal)).removeClass("jqmClose"), -a("a.ui-jqdialog-titlebar-close","#"+a.jgrid.jqID(q.themodal)).unbind("click").click(function(){if(!f())return!1;a.jgrid.hideModal("#"+a.jgrid.jqID(q.themodal),{gb:"#gbox_"+a.jgrid.jqID(v),jqm:c.jqModal,onClose:b[d.p.id].onClose});return!1}));c.saveicon=a.extend([!0,"left","ui-icon-disk"],c.saveicon);c.closeicon=a.extend([!0,"left","ui-icon-close"],c.closeicon);!0===c.saveicon[0]&&a("#sData",p+"_2").addClass("right"===c.saveicon[1]?"fm-button-icon-right":"fm-button-icon-left").append("<span class='ui-icon "+ -c.saveicon[2]+"'></span>");!0===c.closeicon[0]&&a("#cData",p+"_2").addClass("right"===c.closeicon[1]?"fm-button-icon-right":"fm-button-icon-left").append("<span class='ui-icon "+c.closeicon[2]+"'></span>");if(b[d.p.id].checkOnSubmit||b[d.p.id].checkOnUpdate)J="<a id='sNew' class='fm-button ui-state-default ui-corner-all' style='z-index:1002'>"+c.bYes+"</a>",G="<a id='nNew' class='fm-button ui-state-default ui-corner-all' style='z-index:1002'>"+c.bNo+"</a>",K="<a id='cNew' class='fm-button ui-state-default ui-corner-all' style='z-index:1002'>"+ -c.bExit+"</a>",m=c.zIndex||999,m++,a("<div class='"+c.overlayClass+" jqgrid-overlay confirm' style='z-index:"+m+";display:none;'>&#160;</div><div class='confirm ui-widget-content ui-jqconfirm' style='z-index:"+(m+1)+"'>"+c.saveData+"<br/><br/>"+J+G+K+"</div>").insertAfter("#"+g),a("#sNew","#"+a.jgrid.jqID(q.themodal)).click(function(){s();a("#"+g).data("disabled",!1);a(".confirm","#"+a.jgrid.jqID(q.themodal)).hide();return!1}),a("#nNew","#"+a.jgrid.jqID(q.themodal)).click(function(){a(".confirm", -"#"+a.jgrid.jqID(q.themodal)).hide();a("#"+g).data("disabled",!1);setTimeout(function(){a(":input:visible","#"+g)[0].focus()},0);return!1}),a("#cNew","#"+a.jgrid.jqID(q.themodal)).click(function(){a(".confirm","#"+a.jgrid.jqID(q.themodal)).hide();a("#"+g).data("disabled",!1);a.jgrid.hideModal("#"+a.jgrid.jqID(q.themodal),{gb:"#gbox_"+a.jgrid.jqID(v),jqm:c.jqModal,onClose:b[d.p.id].onClose});return!1});a(d).triggerHandler("jqGridAddEditInitializeForm",[a("#"+g),B]);E&&E.call(d,a("#"+g),B);"_empty"!== -z&&b[d.p.id].viewPagerButtons?a("#pData,#nData",p+"_2").show():a("#pData,#nData",p+"_2").hide();a(d).triggerHandler("jqGridAddEditBeforeShowForm",[a("#"+g),B]);y&&y.call(d,a("#"+g),B);a("#"+a.jgrid.jqID(q.themodal)).data("onClose",b[d.p.id].onClose);a.jgrid.viewModal("#"+a.jgrid.jqID(q.themodal),{gbox:"#gbox_"+a.jgrid.jqID(v),jqm:c.jqModal,overlay:c.overlay,modal:c.modal,overlayClass:c.overlayClass,onHide:function(b){a(d).data("formProp",{top:parseFloat(a(b.w).css("top")),left:parseFloat(a(b.w).css("left")), -width:a(b.w).width(),height:a(b.w).height(),dataheight:a("#"+g).height(),datawidth:a("#"+g).width()});b.w.remove();b.o&&b.o.remove()}});N||a("."+a.jgrid.jqID(c.overlayClass)).click(function(){if(!f())return!1;a.jgrid.hideModal("#"+a.jgrid.jqID(q.themodal),{gb:"#gbox_"+a.jgrid.jqID(v),jqm:c.jqModal,onClose:b[d.p.id].onClose});return!1});a(".fm-button","#"+a.jgrid.jqID(q.themodal)).hover(function(){a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")});a("#sData",p+"_2").click(function(){l= -{};a("#FormError",p).hide();e();"_empty"===l[d.p.id+"_id"]?s():!0===c.checkOnSubmit?(M=r(l,b[d.p.id]._savedData))?(a("#"+g).data("disabled",!0),a(".confirm","#"+a.jgrid.jqID(q.themodal)).show()):s():s();return!1});a("#cData",p+"_2").click(function(){if(!f())return!1;a.jgrid.hideModal("#"+a.jgrid.jqID(q.themodal),{gb:"#gbox_"+a.jgrid.jqID(v),jqm:c.jqModal,onClose:b[d.p.id].onClose});return!1});a("#nData",p+"_2").click(function(){if(!f())return!1;a("#FormError",p).hide();var b=x();b[0]=parseInt(b[0], -10);if(-1!==b[0]&&b[1][b[0]+1]){a(d).triggerHandler("jqGridAddEditClickPgButtons",["next",a("#"+g),b[1][b[0]]]);var e;if(a.isFunction(c.onclickPgButtons)&&(e=c.onclickPgButtons.call(d,"next",a("#"+g),b[1][b[0]]),void 0!==e&&!1===e)||a("#"+a.jgrid.jqID(b[1][b[0]+1])).hasClass("ui-state-disabled"))return!1;w(b[1][b[0]+1],d,g);a(d).jqGrid("setSelection",b[1][b[0]+1]);a(d).triggerHandler("jqGridAddEditAfterClickPgButtons",["next",a("#"+g),b[1][b[0]]]);a.isFunction(c.afterclickPgButtons)&&c.afterclickPgButtons.call(d, -"next",a("#"+g),b[1][b[0]+1]);u(b[0]+1,b)}return!1});a("#pData",p+"_2").click(function(){if(!f())return!1;a("#FormError",p).hide();var b=x();if(-1!==b[0]&&b[1][b[0]-1]){a(d).triggerHandler("jqGridAddEditClickPgButtons",["prev",a("#"+g),b[1][b[0]]]);var e;if(a.isFunction(c.onclickPgButtons)&&(e=c.onclickPgButtons.call(d,"prev",a("#"+g),b[1][b[0]]),void 0!==e&&!1===e)||a("#"+a.jgrid.jqID(b[1][b[0]-1])).hasClass("ui-state-disabled"))return!1;w(b[1][b[0]-1],d,g);a(d).jqGrid("setSelection",b[1][b[0]-1]); -a(d).triggerHandler("jqGridAddEditAfterClickPgButtons",["prev",a("#"+g),b[1][b[0]]]);a.isFunction(c.afterclickPgButtons)&&c.afterclickPgButtons.call(d,"prev",a("#"+g),b[1][b[0]-1]);u(b[0]-1,b)}return!1});a(d).triggerHandler("jqGridAddEditAfterShowForm",[a("#"+g),B]);D&&D.call(d,a("#"+g),B);y=x();u(y[0],y)}}})},viewGridRow:function(z,c){c=a.extend(!0,{top:0,left:0,width:0,datawidth:"auto",height:"auto",dataheight:"auto",modal:!1,overlay:30,drag:!0,resize:!0,jqModal:!0,closeOnEscape:!1,labelswidth:"30%", -closeicon:[],navkeys:[!1,38,40],onClose:null,beforeShowForm:null,beforeInitData:null,viewPagerButtons:!0,recreateForm:!1},a.jgrid.view,c||{});b[a(this)[0].p.id]=c;return this.each(function(){function e(){!0!==b[r.p.id].closeOnEscape&&!0!==b[r.p.id].navkeys[0]||setTimeout(function(){a(".ui-jqdialog-titlebar-close","#"+a.jgrid.jqID(v.modalhead)).focus()},0)}function h(b,d,e,f){var g,k,h,q=0,m,p,r=[],s=!1,t,u="<td class='CaptionTD form-view-label ui-widget-content' width='"+c.labelswidth+"'>&#160;</td><td class='DataTD form-view-data ui-helper-reset ui-widget-content'>&#160;</td>", -y="",z=["integer","number","currency"],v=0,w=0,A,x,D;for(t=1;t<=f;t++)y+=1===t?u:"<td class='CaptionTD form-view-label ui-widget-content'>&#160;</td><td class='DataTD form-view-data ui-widget-content'>&#160;</td>";a(d.p.colModel).each(function(){(k=this.editrules&&!0===this.editrules.edithidden?!1:!0===this.hidden?!0:!1)||"right"!==this.align||(this.formatter&&-1!==a.inArray(this.formatter,z)?v=Math.max(v,parseInt(this.width,10)):w=Math.max(w,parseInt(this.width,10)))});A=0!==v?v:0!==w?w:0;s=a(d).jqGrid("getInd", -b);a(d.p.colModel).each(function(b){g=this.name;x=!1;p=(k=this.editrules&&!0===this.editrules.edithidden?!1:!0===this.hidden?!0:!1)?"style='display:none'":"";D="boolean"!==typeof this.viewable?!0:this.viewable;if("cb"!==g&&"subgrid"!==g&&"rn"!==g&&D){m=!1===s?"":g===d.p.ExpandColumn&&!0===d.p.treeGrid?a("td:eq("+b+")",d.rows[s]).text():a("td:eq("+b+")",d.rows[s]).html();x="right"===this.align&&0!==A?!0:!1;var c=a.extend({},{rowabove:!1,rowcontent:""},this.formoptions||{}),n=parseInt(c.rowpos,10)|| -q+1,t=parseInt(2*(parseInt(c.colpos,10)||1),10);if(c.rowabove){var u=a("<tr><td class='contentinfo' colspan='"+2*f+"'>"+c.rowcontent+"</td></tr>");a(e).append(u);u[0].rp=n}h=a(e).find("tr[rowpos="+n+"]");0===h.length&&(h=a("<tr "+p+" rowpos='"+n+"'></tr>").addClass("FormData").attr("id","trv_"+g),a(h).append(y),a(e).append(h),h[0].rp=n);a("td:eq("+(t-2)+")",h[0]).html("<b>"+(void 0===c.label?d.p.colNames[b]:c.label)+"</b>");a("td:eq("+(t-1)+")",h[0]).append("<span>"+m+"</span>").attr("id","v_"+g); -x&&a("td:eq("+(t-1)+") span",h[0]).css({"text-align":"right",width:A+"px"});r[q]=b;q++}});0<q&&(b=a("<tr class='FormData' style='display:none'><td class='CaptionTD'></td><td colspan='"+(2*f-1)+"' class='DataTD'><input class='FormElement' id='id_g' type='text' name='id' value='"+b+"'/></td></tr>"),b[0].rp=q+99,a(e).append(b));return r}function w(b,c){var d,e,f=0,g,k;if(k=a(c).jqGrid("getInd",b,!0))a("td",k).each(function(b){d=c.p.colModel[b].name;e=c.p.colModel[b].editrules&&!0===c.p.colModel[b].editrules.edithidden? -!1:!0===c.p.colModel[b].hidden?!0:!1;"cb"!==d&&"subgrid"!==d&&"rn"!==d&&(g=d===c.p.ExpandColumn&&!0===c.p.treeGrid?a(this).text():a(this).html(),d=a.jgrid.jqID("v_"+d),a("#"+d+" span","#"+u).html(g),e&&a("#"+d,"#"+u).parents("tr:first").hide(),f++)}),0<f&&a("#id_g","#"+u).val(b)}function t(b,c){var d=c[1].length-1;0===b?a("#pData","#"+u+"_2").addClass("ui-state-disabled"):void 0!==c[1][b-1]&&a("#"+a.jgrid.jqID(c[1][b-1])).hasClass("ui-state-disabled")?a("#pData",u+"_2").addClass("ui-state-disabled"): -a("#pData","#"+u+"_2").removeClass("ui-state-disabled");b===d?a("#nData","#"+u+"_2").addClass("ui-state-disabled"):void 0!==c[1][b+1]&&a("#"+a.jgrid.jqID(c[1][b+1])).hasClass("ui-state-disabled")?a("#nData",u+"_2").addClass("ui-state-disabled"):a("#nData","#"+u+"_2").removeClass("ui-state-disabled")}function s(){var b=a(r).jqGrid("getDataIDs"),c=a("#id_g","#"+u).val();return[a.inArray(c,b),b]}var r=this;if(r.grid&&z){var f=r.p.id,k="ViewGrid_"+a.jgrid.jqID(f),u="ViewTbl_"+a.jgrid.jqID(f),x="ViewGrid_"+ -f,d="ViewTbl_"+f,v={themodal:"viewmod"+f,modalhead:"viewhd"+f,modalcontent:"viewcnt"+f,scrollelm:k},g=a.isFunction(b[r.p.id].beforeInitData)?b[r.p.id].beforeInitData:!1,m=!0,p=1,q=0;c.recreateForm||a(r).data("viewProp")&&a.extend(b[a(this)[0].p.id],a(r).data("viewProp"));var y=isNaN(b[a(this)[0].p.id].dataheight)?b[a(this)[0].p.id].dataheight:b[a(this)[0].p.id].dataheight+"px",D=isNaN(b[a(this)[0].p.id].datawidth)?b[a(this)[0].p.id].datawidth:b[a(this)[0].p.id].datawidth+"px",x=a("<form name='FormPost' id='"+ -x+"' class='FormGrid' style='width:"+D+";overflow:auto;position:relative;height:"+y+";'></form>"),A=a("<table id='"+d+"' class='EditTable' cellspacing='1' cellpadding='2' border='0' style='table-layout:fixed'><tbody></tbody></table>");g&&(m=g.call(r,a("#"+k)),void 0===m&&(m=!0));if(!1!==m){a(r.p.colModel).each(function(){var a=this.formoptions;p=Math.max(p,a?a.colpos||0:0);q=Math.max(q,a?a.rowpos||0:0)});a(x).append(A);h(z,r,A,p);d="rtl"===r.p.direction?!0:!1;g="<a id='"+(d?"nData":"pData")+"' class='fm-button ui-state-default ui-corner-left'><span class='ui-icon ui-icon-triangle-1-w'></span></a>"; -m="<a id='"+(d?"pData":"nData")+"' class='fm-button ui-state-default ui-corner-right'><span class='ui-icon ui-icon-triangle-1-e'></span></a>";y="<a id='cData' class='fm-button ui-state-default ui-corner-all'>"+c.bClose+"</a>";if(0<q){var E=[];a.each(a(A)[0].rows,function(a,b){E[a]=b});E.sort(function(a,b){return a.rp>b.rp?1:a.rp<b.rp?-1:0});a.each(E,function(b,c){a("tbody",A).append(c)})}c.gbox="#gbox_"+a.jgrid.jqID(f);x=a("<div></div>").append(x).append("<table border='0' class='EditTable' id='"+ -u+"_2'><tbody><tr id='Act_Buttons'><td class='navButton' width='"+c.labelswidth+"'>"+(d?m+g:g+m)+"</td><td class='EditButton'>"+y+"</td></tr></tbody></table>");a.jgrid.createModal(v,x,c,"#gview_"+a.jgrid.jqID(r.p.id),a("#gview_"+a.jgrid.jqID(r.p.id))[0]);d&&(a("#pData, #nData","#"+u+"_2").css("float","right"),a(".EditButton","#"+u+"_2").css("text-align","left"));c.viewPagerButtons||a("#pData, #nData","#"+u+"_2").hide();x=null;a("#"+v.themodal).keydown(function(d){if(27===d.which)return b[r.p.id].closeOnEscape&& -a.jgrid.hideModal("#"+a.jgrid.jqID(v.themodal),{gb:c.gbox,jqm:c.jqModal,onClose:c.onClose}),!1;if(!0===c.navkeys[0]){if(d.which===c.navkeys[1])return a("#pData","#"+u+"_2").trigger("click"),!1;if(d.which===c.navkeys[2])return a("#nData","#"+u+"_2").trigger("click"),!1}});c.closeicon=a.extend([!0,"left","ui-icon-close"],c.closeicon);!0===c.closeicon[0]&&a("#cData","#"+u+"_2").addClass("right"===c.closeicon[1]?"fm-button-icon-right":"fm-button-icon-left").append("<span class='ui-icon "+c.closeicon[2]+ -"'></span>");a.isFunction(c.beforeShowForm)&&c.beforeShowForm.call(r,a("#"+k));a.jgrid.viewModal("#"+a.jgrid.jqID(v.themodal),{gbox:"#gbox_"+a.jgrid.jqID(f),jqm:c.jqModal,overlay:c.overlay,modal:c.modal,onHide:function(b){a(r).data("viewProp",{top:parseFloat(a(b.w).css("top")),left:parseFloat(a(b.w).css("left")),width:a(b.w).width(),height:a(b.w).height(),dataheight:a("#"+k).height(),datawidth:a("#"+k).width()});b.w.remove();b.o&&b.o.remove()}});a(".fm-button:not(.ui-state-disabled)","#"+u+"_2").hover(function(){a(this).addClass("ui-state-hover")}, -function(){a(this).removeClass("ui-state-hover")});e();a("#cData","#"+u+"_2").click(function(){a.jgrid.hideModal("#"+a.jgrid.jqID(v.themodal),{gb:"#gbox_"+a.jgrid.jqID(f),jqm:c.jqModal,onClose:c.onClose});return!1});a("#nData","#"+u+"_2").click(function(){a("#FormError","#"+u).hide();var b=s();b[0]=parseInt(b[0],10);-1!==b[0]&&b[1][b[0]+1]&&(a.isFunction(c.onclickPgButtons)&&c.onclickPgButtons.call(r,"next",a("#"+k),b[1][b[0]]),w(b[1][b[0]+1],r),a(r).jqGrid("setSelection",b[1][b[0]+1]),a.isFunction(c.afterclickPgButtons)&& -c.afterclickPgButtons.call(r,"next",a("#"+k),b[1][b[0]+1]),t(b[0]+1,b));e();return!1});a("#pData","#"+u+"_2").click(function(){a("#FormError","#"+u).hide();var b=s();-1!==b[0]&&b[1][b[0]-1]&&(a.isFunction(c.onclickPgButtons)&&c.onclickPgButtons.call(r,"prev",a("#"+k),b[1][b[0]]),w(b[1][b[0]-1],r),a(r).jqGrid("setSelection",b[1][b[0]-1]),a.isFunction(c.afterclickPgButtons)&&c.afterclickPgButtons.call(r,"prev",a("#"+k),b[1][b[0]-1]),t(b[0]-1,b));e();return!1});x=s();t(x[0],x)}}})},delGridRow:function(z, -c){c=a.extend(!0,{top:0,left:0,width:240,height:"auto",dataheight:"auto",modal:!1,overlay:30,drag:!0,resize:!0,url:"",mtype:"POST",reloadAfterSubmit:!0,beforeShowForm:null,beforeInitData:null,afterShowForm:null,beforeSubmit:null,onclickSubmit:null,afterSubmit:null,jqModal:!0,closeOnEscape:!1,delData:{},delicon:[],cancelicon:[],onClose:null,ajaxDelOptions:{},processing:!1,serializeDelData:null,useDataProxy:!1},a.jgrid.del,c||{});b[a(this)[0].p.id]=c;return this.each(function(){var e=this;if(e.grid&& -z){var h=a.isFunction(b[e.p.id].beforeShowForm),w=a.isFunction(b[e.p.id].afterShowForm),t=a.isFunction(b[e.p.id].beforeInitData)?b[e.p.id].beforeInitData:!1,s=e.p.id,r={},f=!0,k="DelTbl_"+a.jgrid.jqID(s),u,x,d,v,g="DelTbl_"+s,m={themodal:"delmod"+s,modalhead:"delhd"+s,modalcontent:"delcnt"+s,scrollelm:k};a.isArray(z)&&(z=z.join());if(void 0!==a("#"+a.jgrid.jqID(m.themodal))[0]){t&&(f=t.call(e,a("#"+k)),void 0===f&&(f=!0));if(!1===f)return;a("#DelData>td","#"+k).text(z);a("#DelError","#"+k).hide(); -!0===b[e.p.id].processing&&(b[e.p.id].processing=!1,a("#dData","#"+k).removeClass("ui-state-active"));h&&b[e.p.id].beforeShowForm.call(e,a("#"+k));a.jgrid.viewModal("#"+a.jgrid.jqID(m.themodal),{gbox:"#gbox_"+a.jgrid.jqID(s),jqm:b[e.p.id].jqModal,jqM:!1,overlay:b[e.p.id].overlay,modal:b[e.p.id].modal})}else{var p=isNaN(b[e.p.id].dataheight)?b[e.p.id].dataheight:b[e.p.id].dataheight+"px",q=isNaN(c.datawidth)?c.datawidth:c.datawidth+"px",g="<div id='"+g+"' class='formdata' style='width:"+q+";overflow:auto;position:relative;height:"+ -p+";'><table class='DelTable'><tbody>",g=g+"<tr id='DelError' style='display:none'><td class='ui-state-error'></td></tr>",g=g+("<tr id='DelData' style='display:none'><td >"+z+"</td></tr>"),g=g+('<tr><td class="delmsg" style="white-space:pre;">'+b[e.p.id].msg+"</td></tr><tr><td >&#160;</td></tr>"),g=g+"</tbody></table></div>",g=g+("<table cellspacing='0' cellpadding='0' border='0' class='EditTable' id='"+k+"_2'><tbody><tr><td><hr class='ui-widget-content' style='margin:1px'/></td></tr><tr><td class='DelButton EditButton'>"+ -("<a id='dData' class='fm-button ui-state-default ui-corner-all'>"+c.bSubmit+"</a>")+"&#160;"+("<a id='eData' class='fm-button ui-state-default ui-corner-all'>"+c.bCancel+"</a>")+"</td></tr></tbody></table>");c.gbox="#gbox_"+a.jgrid.jqID(s);a.jgrid.createModal(m,g,c,"#gview_"+a.jgrid.jqID(e.p.id),a("#gview_"+a.jgrid.jqID(e.p.id))[0]);t&&(f=t.call(e,a("#"+k)),void 0===f&&(f=!0));if(!1===f)return;a(".fm-button","#"+k+"_2").hover(function(){a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")}); -c.delicon=a.extend([!0,"left","ui-icon-scissors"],b[e.p.id].delicon);c.cancelicon=a.extend([!0,"left","ui-icon-cancel"],b[e.p.id].cancelicon);!0===c.delicon[0]&&a("#dData","#"+k+"_2").addClass("right"===c.delicon[1]?"fm-button-icon-right":"fm-button-icon-left").append("<span class='ui-icon "+c.delicon[2]+"'></span>");!0===c.cancelicon[0]&&a("#eData","#"+k+"_2").addClass("right"===c.cancelicon[1]?"fm-button-icon-right":"fm-button-icon-left").append("<span class='ui-icon "+c.cancelicon[2]+"'></span>"); -a("#dData","#"+k+"_2").click(function(){var f=[!0,""],g,h=a("#DelData>td","#"+k).text();r={};a.isFunction(b[e.p.id].onclickSubmit)&&(r=b[e.p.id].onclickSubmit.call(e,b[e.p.id],h)||{});a.isFunction(b[e.p.id].beforeSubmit)&&(f=b[e.p.id].beforeSubmit.call(e,h));if(f[0]&&!b[e.p.id].processing){b[e.p.id].processing=!0;d=e.p.prmNames;u=a.extend({},b[e.p.id].delData,r);v=d.oper;u[v]=d.deloper;x=d.id;h=String(h).split(",");if(!h.length)return!1;for(g in h)h.hasOwnProperty(g)&&(h[g]=a.jgrid.stripPref(e.p.idPrefix, -h[g]));u[x]=h.join();a(this).addClass("ui-state-active");g=a.extend({url:b[e.p.id].url||a(e).jqGrid("getGridParam","editurl"),type:b[e.p.id].mtype,data:a.isFunction(b[e.p.id].serializeDelData)?b[e.p.id].serializeDelData.call(e,u):u,complete:function(d,g){var q;300<=d.status&&304!==d.status?(f[0]=!1,a.isFunction(b[e.p.id].errorTextFormat)?f[1]=b[e.p.id].errorTextFormat.call(e,d):f[1]=g+" Status: '"+d.statusText+"'. Error code: "+d.status):a.isFunction(b[e.p.id].afterSubmit)&&(f=b[e.p.id].afterSubmit.call(e, -d,u));if(!1===f[0])a("#DelError>td","#"+k).html(f[1]),a("#DelError","#"+k).show();else{if(b[e.p.id].reloadAfterSubmit&&"local"!==e.p.datatype)a(e).trigger("reloadGrid");else{if(!0===e.p.treeGrid)try{a(e).jqGrid("delTreeNode",e.p.idPrefix+h[0])}catch(p){}else for(q=0;q<h.length;q++)a(e).jqGrid("delRowData",e.p.idPrefix+h[q]);e.p.selrow=null;e.p.selarrrow=[]}a.isFunction(b[e.p.id].afterComplete)&&setTimeout(function(){b[e.p.id].afterComplete.call(e,d,h)},500)}b[e.p.id].processing=!1;a("#dData","#"+ -k+"_2").removeClass("ui-state-active");f[0]&&a.jgrid.hideModal("#"+a.jgrid.jqID(m.themodal),{gb:"#gbox_"+a.jgrid.jqID(s),jqm:c.jqModal,onClose:b[e.p.id].onClose})}},a.jgrid.ajaxOptions,b[e.p.id].ajaxDelOptions);g.url||b[e.p.id].useDataProxy||(a.isFunction(e.p.dataProxy)?b[e.p.id].useDataProxy=!0:(f[0]=!1,f[1]+=" "+a.jgrid.errors.nourl));f[0]&&(b[e.p.id].useDataProxy?(g=e.p.dataProxy.call(e,g,"del_"+e.p.id),void 0===g&&(g=[!0,""]),!1===g[0]?(f[0]=!1,f[1]=g[1]||"Error deleting the selected row!"):a.jgrid.hideModal("#"+ -a.jgrid.jqID(m.themodal),{gb:"#gbox_"+a.jgrid.jqID(s),jqm:c.jqModal,onClose:b[e.p.id].onClose})):a.ajax(g))}!1===f[0]&&(a("#DelError>td","#"+k).html(f[1]),a("#DelError","#"+k).show());return!1});a("#eData","#"+k+"_2").click(function(){a.jgrid.hideModal("#"+a.jgrid.jqID(m.themodal),{gb:"#gbox_"+a.jgrid.jqID(s),jqm:b[e.p.id].jqModal,onClose:b[e.p.id].onClose});return!1});h&&b[e.p.id].beforeShowForm.call(e,a("#"+k));a.jgrid.viewModal("#"+a.jgrid.jqID(m.themodal),{gbox:"#gbox_"+a.jgrid.jqID(s),jqm:b[e.p.id].jqModal, -overlay:b[e.p.id].overlay,modal:b[e.p.id].modal})}w&&b[e.p.id].afterShowForm.call(e,a("#"+k));!0===b[e.p.id].closeOnEscape&&setTimeout(function(){a(".ui-jqdialog-titlebar-close","#"+a.jgrid.jqID(m.modalhead)).focus()},0)}})},navGrid:function(b,c,e,h,w,t,s){c=a.extend({edit:!0,editicon:"ui-icon-pencil",add:!0,addicon:"ui-icon-plus",del:!0,delicon:"ui-icon-trash",search:!0,searchicon:"ui-icon-search",refresh:!0,refreshicon:"ui-icon-refresh",refreshstate:"firstpage",view:!1,viewicon:"ui-icon-document", -position:"left",closeOnEscape:!0,beforeRefresh:null,afterRefresh:null,cloneToTop:!1,alertwidth:200,alertheight:"auto",alerttop:null,alertleft:null,alertzIndex:null},a.jgrid.nav,c||{});return this.each(function(){if(!this.nav){var r={themodal:"alertmod_"+this.p.id,modalhead:"alerthd_"+this.p.id,modalcontent:"alertcnt_"+this.p.id},f=this,k;if(f.grid&&"string"===typeof b){void 0===a("#"+r.themodal)[0]&&(c.alerttop||c.alertleft||(void 0!==window.innerWidth?(c.alertleft=window.innerWidth,c.alerttop=window.innerHeight): -void 0!==document.documentElement&&void 0!==document.documentElement.clientWidth&&0!==document.documentElement.clientWidth?(c.alertleft=document.documentElement.clientWidth,c.alerttop=document.documentElement.clientHeight):(c.alertleft=1024,c.alerttop=768),c.alertleft=c.alertleft/2-parseInt(c.alertwidth,10)/2,c.alerttop=c.alerttop/2-25),a.jgrid.createModal(r,"<div>"+c.alerttext+"</div><span tabindex='0'><span tabindex='-1' id='jqg_alrt'></span></span>",{gbox:"#gbox_"+a.jgrid.jqID(f.p.id),jqModal:!0, -drag:!0,resize:!0,caption:c.alertcap,top:c.alerttop,left:c.alertleft,width:c.alertwidth,height:c.alertheight,closeOnEscape:c.closeOnEscape,zIndex:c.alertzIndex},"#gview_"+a.jgrid.jqID(f.p.id),a("#gbox_"+a.jgrid.jqID(f.p.id))[0],!0));var u=1,x,d=function(){a(this).hasClass("ui-state-disabled")||a(this).addClass("ui-state-hover")},v=function(){a(this).removeClass("ui-state-hover")};c.cloneToTop&&f.p.toppager&&(u=2);for(x=0;x<u;x++){var g=a("<table cellspacing='0' cellpadding='0' border='0' class='ui-pg-table navtable' style='float:left;table-layout:auto;'><tbody><tr></tr></tbody></table>"), -m,p;0===x?(m=b,p=f.p.id,m===f.p.toppager&&(p+="_top",u=1)):(m=f.p.toppager,p=f.p.id+"_top");"rtl"===f.p.direction&&a(g).attr("dir","rtl").css("float","right");c.add&&(h=h||{},k=a("<td class='ui-pg-button ui-corner-all'></td>"),a(k).append("<div class='ui-pg-div'><span class='ui-icon "+c.addicon+"'></span>"+c.addtext+"</div>"),a("tr",g).append(k),a(k,g).attr({title:c.addtitle||"",id:h.id||"add_"+p}).click(function(){a(this).hasClass("ui-state-disabled")||(a.isFunction(c.addfunc)?c.addfunc.call(f): -a(f).jqGrid("editGridRow","new",h));return!1}).hover(d,v),k=null);c.edit&&(k=a("<td class='ui-pg-button ui-corner-all'></td>"),e=e||{},a(k).append("<div class='ui-pg-div'><span class='ui-icon "+c.editicon+"'></span>"+c.edittext+"</div>"),a("tr",g).append(k),a(k,g).attr({title:c.edittitle||"",id:e.id||"edit_"+p}).click(function(){if(!a(this).hasClass("ui-state-disabled")){var b=f.p.selrow;b?a.isFunction(c.editfunc)?c.editfunc.call(f,b):a(f).jqGrid("editGridRow",b,e):(a.jgrid.viewModal("#"+r.themodal, -{gbox:"#gbox_"+a.jgrid.jqID(f.p.id),jqm:!0}),a("#jqg_alrt").focus())}return!1}).hover(d,v),k=null);c.view&&(k=a("<td class='ui-pg-button ui-corner-all'></td>"),s=s||{},a(k).append("<div class='ui-pg-div'><span class='ui-icon "+c.viewicon+"'></span>"+c.viewtext+"</div>"),a("tr",g).append(k),a(k,g).attr({title:c.viewtitle||"",id:s.id||"view_"+p}).click(function(){if(!a(this).hasClass("ui-state-disabled")){var b=f.p.selrow;b?a.isFunction(c.viewfunc)?c.viewfunc.call(f,b):a(f).jqGrid("viewGridRow",b,s): -(a.jgrid.viewModal("#"+r.themodal,{gbox:"#gbox_"+a.jgrid.jqID(f.p.id),jqm:!0}),a("#jqg_alrt").focus())}return!1}).hover(d,v),k=null);c.del&&(k=a("<td class='ui-pg-button ui-corner-all'></td>"),w=w||{},a(k).append("<div class='ui-pg-div'><span class='ui-icon "+c.delicon+"'></span>"+c.deltext+"</div>"),a("tr",g).append(k),a(k,g).attr({title:c.deltitle||"",id:w.id||"del_"+p}).click(function(){if(!a(this).hasClass("ui-state-disabled")){var b;f.p.multiselect?(b=f.p.selarrrow,0===b.length&&(b=null)):b= -f.p.selrow;b?a.isFunction(c.delfunc)?c.delfunc.call(f,b):a(f).jqGrid("delGridRow",b,w):(a.jgrid.viewModal("#"+r.themodal,{gbox:"#gbox_"+a.jgrid.jqID(f.p.id),jqm:!0}),a("#jqg_alrt").focus())}return!1}).hover(d,v),k=null);(c.add||c.edit||c.del||c.view)&&a("tr",g).append("<td class='ui-pg-button ui-state-disabled' style='width:4px;'><span class='ui-separator'></span></td>");c.search&&(k=a("<td class='ui-pg-button ui-corner-all'></td>"),t=t||{},a(k).append("<div class='ui-pg-div'><span class='ui-icon "+ -c.searchicon+"'></span>"+c.searchtext+"</div>"),a("tr",g).append(k),a(k,g).attr({title:c.searchtitle||"",id:t.id||"search_"+p}).click(function(){a(this).hasClass("ui-state-disabled")||(a.isFunction(c.searchfunc)?c.searchfunc.call(f,t):a(f).jqGrid("searchGrid",t));return!1}).hover(d,v),t.showOnLoad&&!0===t.showOnLoad&&a(k,g).click(),k=null);c.refresh&&(k=a("<td class='ui-pg-button ui-corner-all'></td>"),a(k).append("<div class='ui-pg-div'><span class='ui-icon "+c.refreshicon+"'></span>"+c.refreshtext+ -"</div>"),a("tr",g).append(k),a(k,g).attr({title:c.refreshtitle||"",id:"refresh_"+p}).click(function(){if(!a(this).hasClass("ui-state-disabled")){a.isFunction(c.beforeRefresh)&&c.beforeRefresh.call(f);f.p.search=!1;f.p.resetsearch=!0;try{var b=f.p.id;f.p.postData.filters="";try{a("#fbox_"+a.jgrid.jqID(b)).jqFilter("resetFilter")}catch(d){}a.isFunction(f.clearToolbar)&&f.clearToolbar.call(f,!1)}catch(e){}switch(c.refreshstate){case "firstpage":a(f).trigger("reloadGrid",[{page:1}]);break;case "current":a(f).trigger("reloadGrid", -[{current:!0}])}a.isFunction(c.afterRefresh)&&c.afterRefresh.call(f)}return!1}).hover(d,v),k=null);k=a(".ui-jqgrid").css("font-size")||"11px";a("body").append("<div id='testpg2' class='ui-jqgrid ui-widget ui-widget-content' style='font-size:"+k+";visibility:hidden;' ></div>");k=a(g).clone().appendTo("#testpg2").width();a("#testpg2").remove();a(m+"_"+c.position,m).append(g);f.p._nvtd&&(k>f.p._nvtd[0]&&(a(m+"_"+c.position,m).width(k),f.p._nvtd[0]=k),f.p._nvtd[1]=k);g=k=k=null;this.nav=!0}}}})},navButtonAdd:function(b, -c){c=a.extend({caption:"newButton",title:"",buttonicon:"ui-icon-newwin",onClickButton:null,position:"last",cursor:"pointer"},c||{});return this.each(function(){if(this.grid){"string"===typeof b&&0!==b.indexOf("#")&&(b="#"+a.jgrid.jqID(b));var e=a(".navtable",b)[0],h=this;if(e&&(!c.id||void 0===a("#"+a.jgrid.jqID(c.id),e)[0])){var w=a("<td></td>");"NONE"===c.buttonicon.toString().toUpperCase()?a(w).addClass("ui-pg-button ui-corner-all").append("<div class='ui-pg-div'>"+c.caption+"</div>"):a(w).addClass("ui-pg-button ui-corner-all").append("<div class='ui-pg-div'><span class='ui-icon "+ -c.buttonicon+"'></span>"+c.caption+"</div>");c.id&&a(w).attr("id",c.id);"first"===c.position?0===e.rows[0].cells.length?a("tr",e).append(w):a("tr td:eq(0)",e).before(w):a("tr",e).append(w);a(w,e).attr("title",c.title||"").click(function(b){a(this).hasClass("ui-state-disabled")||a.isFunction(c.onClickButton)&&c.onClickButton.call(h,b);return!1}).hover(function(){a(this).hasClass("ui-state-disabled")||a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")})}}})},navSeparatorAdd:function(b, -c){c=a.extend({sepclass:"ui-separator",sepcontent:"",position:"last"},c||{});return this.each(function(){if(this.grid){"string"===typeof b&&0!==b.indexOf("#")&&(b="#"+a.jgrid.jqID(b));var e=a(".navtable",b)[0];if(e){var h="<td class='ui-pg-button ui-state-disabled' style='width:4px;'><span class='"+c.sepclass+"'></span>"+c.sepcontent+"</td>";"first"===c.position?0===e.rows[0].cells.length?a("tr",e).append(h):a("tr td:eq(0)",e).before(h):a("tr",e).append(h)}}})},GridToForm:function(b,c){return this.each(function(){var e= -this,h;if(e.grid){var w=a(e).jqGrid("getRowData",b);if(w)for(h in w)w.hasOwnProperty(h)&&(a("[name="+a.jgrid.jqID(h)+"]",c).is("input:radio")||a("[name="+a.jgrid.jqID(h)+"]",c).is("input:checkbox")?a("[name="+a.jgrid.jqID(h)+"]",c).each(function(){if(a(this).val()==w[h])a(this)[e.p.useProp?"prop":"attr"]("checked",!0);else a(this)[e.p.useProp?"prop":"attr"]("checked",!1)}):a("[name="+a.jgrid.jqID(h)+"]",c).val(w[h]))}})},FormToGrid:function(b,c,e,h){return this.each(function(){if(this.grid){e||(e= -"set");h||(h="first");var w=a(c).serializeArray(),t={};a.each(w,function(a,b){t[b.name]=b.value});"add"===e?a(this).jqGrid("addRowData",b,t,h):"set"===e&&a(this).jqGrid("setRowData",b,t)}})}})})(jQuery); -(function(a){a.fn.jqFilter=function(d){if("string"===typeof d){var q=a.fn.jqFilter[d];if(!q)throw"jqFilter - No such method: "+d;var x=a.makeArray(arguments).slice(1);return q.apply(this,x)}var n=a.extend(!0,{filter:null,columns:[],onChange:null,afterRedraw:null,checkValues:null,error:!1,errmsg:"",errorcheck:!0,showQuery:!0,sopt:null,ops:[],operands:null,numopts:"eq ne lt le gt ge nu nn in ni".split(" "),stropts:"eq ne bw bn ew en cn nc nu nn in ni".split(" "),strarr:["text","string","blob"],groupOps:[{op:"AND", -text:"AND"},{op:"OR",text:"OR"}],groupButton:!0,ruleButtons:!0,direction:"ltr"},a.jgrid.filter,d||{});return this.each(function(){if(!this.filter){this.p=n;if(null===this.p.filter||void 0===this.p.filter)this.p.filter={groupOp:this.p.groupOps[0].op,rules:[],groups:[]};var d,q=this.p.columns.length,f,w=/msie/i.test(navigator.userAgent)&&!window.opera;this.p.initFilter=a.extend(!0,{},this.p.filter);if(q){for(d=0;d<q;d++)f=this.p.columns[d],f.stype?f.inputtype=f.stype:f.inputtype||(f.inputtype="text"), -f.sorttype?f.searchtype=f.sorttype:f.searchtype||(f.searchtype="string"),void 0===f.hidden&&(f.hidden=!1),f.label||(f.label=f.name),f.index&&(f.name=f.index),f.hasOwnProperty("searchoptions")||(f.searchoptions={}),f.hasOwnProperty("searchrules")||(f.searchrules={});this.p.showQuery&&a(this).append("<table class='queryresult ui-widget ui-widget-content' style='display:block;max-width:440px;border:0px none;' dir='"+this.p.direction+"'><tbody><tr><td class='query'></td></tr></tbody></table>");var u= -function(g,l){var b=[!0,""],c=a("#"+a.jgrid.jqID(n.id))[0]||null;if(a.isFunction(l.searchrules))b=l.searchrules.call(c,g,l);else if(a.jgrid&&a.jgrid.checkValues)try{b=a.jgrid.checkValues.call(c,g,-1,l.searchrules,l.label)}catch(m){}b&&b.length&&!1===b[0]&&(n.error=!b[0],n.errmsg=b[1])};this.onchange=function(){this.p.error=!1;this.p.errmsg="";return a.isFunction(this.p.onChange)?this.p.onChange.call(this,this.p):!1};this.reDraw=function(){a("table.group:first",this).remove();var g=this.createTableForGroup(n.filter, -null);a(this).append(g);a.isFunction(this.p.afterRedraw)&&this.p.afterRedraw.call(this,this.p)};this.createTableForGroup=function(g,l){var b=this,c,m=a("<table class='group ui-widget ui-widget-content' style='border:0px none;'><tbody></tbody></table>"),e="left";"rtl"===this.p.direction&&(e="right",m.attr("dir","rtl"));null===l&&m.append("<tr class='error' style='display:none;'><th colspan='5' class='ui-state-error' align='"+e+"'></th></tr>");var h=a("<tr></tr>");m.append(h);e=a("<th colspan='5' align='"+ -e+"'></th>");h.append(e);if(!0===this.p.ruleButtons){var d=a("<select class='opsel'></select>");e.append(d);var h="",k;for(c=0;c<n.groupOps.length;c++)k=g.groupOp===b.p.groupOps[c].op?" selected='selected'":"",h+="<option value='"+b.p.groupOps[c].op+"'"+k+">"+b.p.groupOps[c].text+"</option>";d.append(h).bind("change",function(){g.groupOp=a(d).val();b.onchange()})}h="<span></span>";this.p.groupButton&&(h=a("<input type='button' value='+ {}' title='Add subgroup' class='add-group'/>"),h.bind("click", -function(){void 0===g.groups&&(g.groups=[]);g.groups.push({groupOp:n.groupOps[0].op,rules:[],groups:[]});b.reDraw();b.onchange();return!1}));e.append(h);if(!0===this.p.ruleButtons){var h=a("<input type='button' value='+' title='Add rule' class='add-rule ui-add'/>"),f;h.bind("click",function(){void 0===g.rules&&(g.rules=[]);for(c=0;c<b.p.columns.length;c++){var e=void 0===b.p.columns[c].search?!0:b.p.columns[c].search,l=!0===b.p.columns[c].hidden;if(!0===b.p.columns[c].searchoptions.searchhidden&& -e||e&&!l){f=b.p.columns[c];break}}e=f.searchoptions.sopt?f.searchoptions.sopt:b.p.sopt?b.p.sopt:-1!==a.inArray(f.searchtype,b.p.strarr)?b.p.stropts:b.p.numopts;g.rules.push({field:f.name,op:e[0],data:""});b.reDraw();return!1});e.append(h)}null!==l&&(h=a("<input type='button' value='-' title='Delete group' class='delete-group'/>"),e.append(h),h.bind("click",function(){for(c=0;c<l.groups.length;c++)if(l.groups[c]===g){l.groups.splice(c,1);break}b.reDraw();b.onchange();return!1}));if(void 0!==g.groups)for(c= -0;c<g.groups.length;c++)e=a("<tr></tr>"),m.append(e),h=a("<td class='first'></td>"),e.append(h),h=a("<td colspan='4'></td>"),h.append(this.createTableForGroup(g.groups[c],g)),e.append(h);void 0===g.groupOp&&(g.groupOp=b.p.groupOps[0].op);if(void 0!==g.rules)for(c=0;c<g.rules.length;c++)m.append(this.createTableRowForRule(g.rules[c],g));return m};this.createTableRowForRule=function(g,l){var b=this,c=a("#"+a.jgrid.jqID(n.id))[0]||null,m=a("<tr></tr>"),e,h,f,k,d="",s;m.append("<td class='first'></td>"); -var p=a("<td class='columns'></td>");m.append(p);var q=a("<select></select>"),r,t=[];p.append(q);q.bind("change",function(){g.field=a(q).val();f=a(this).parents("tr:first");for(e=0;e<b.p.columns.length;e++)if(b.p.columns[e].name===g.field){k=b.p.columns[e];break}if(k){k.searchoptions.id=a.jgrid.randId();w&&"text"===k.inputtype&&!k.searchoptions.size&&(k.searchoptions.size=10);var d=a.jgrid.createEl.call(c,k.inputtype,k.searchoptions,"",!0,b.p.ajaxSelectOptions||{},!0);a(d).addClass("input-elm");h= -k.searchoptions.sopt?k.searchoptions.sopt:b.p.sopt?b.p.sopt:-1!==a.inArray(k.searchtype,b.p.strarr)?b.p.stropts:b.p.numopts;var l="",m=0;t=[];a.each(b.p.ops,function(){t.push(this.oper)});for(e=0;e<h.length;e++)r=a.inArray(h[e],t),-1!==r&&(0===m&&(g.op=b.p.ops[r].oper),l+="<option value='"+b.p.ops[r].oper+"'>"+b.p.ops[r].text+"</option>",m++);a(".selectopts",f).empty().append(l);a(".selectopts",f)[0].selectedIndex=0;a.jgrid.msie&&9>a.jgrid.msiever()&&(l=parseInt(a("select.selectopts",f)[0].offsetWidth, -10)+1,a(".selectopts",f).width(l),a(".selectopts",f).css("width","auto"));a(".data",f).empty().append(d);a.jgrid.bindEv.call(c,d,k.searchoptions);a(".input-elm",f).bind("change",function(e){e=e.target;g.data="SPAN"===e.nodeName.toUpperCase()&&k.searchoptions&&a.isFunction(k.searchoptions.custom_value)?k.searchoptions.custom_value.call(c,a(e).children(".customelement:first"),"get"):e.value;b.onchange()});setTimeout(function(){g.data=a(d).val();b.onchange()},0)}});for(e=p=0;e<b.p.columns.length;e++){s= -void 0===b.p.columns[e].search?!0:b.p.columns[e].search;var u=!0===b.p.columns[e].hidden;if(!0===b.p.columns[e].searchoptions.searchhidden&&s||s&&!u)s="",g.field===b.p.columns[e].name&&(s=" selected='selected'",p=e),d+="<option value='"+b.p.columns[e].name+"'"+s+">"+b.p.columns[e].label+"</option>"}q.append(d);d=a("<td class='operators'></td>");m.append(d);k=n.columns[p];k.searchoptions.id=a.jgrid.randId();w&&"text"===k.inputtype&&!k.searchoptions.size&&(k.searchoptions.size=10);p=a.jgrid.createEl.call(c, -k.inputtype,k.searchoptions,g.data,!0,b.p.ajaxSelectOptions||{},!0);if("nu"===g.op||"nn"===g.op)a(p).attr("readonly","true"),a(p).attr("disabled","true");var v=a("<select class='selectopts'></select>");d.append(v);v.bind("change",function(){g.op=a(v).val();f=a(this).parents("tr:first");var c=a(".input-elm",f)[0];"nu"===g.op||"nn"===g.op?(g.data="","SELECT"!==c.tagName.toUpperCase()&&(c.value=""),c.setAttribute("readonly","true"),c.setAttribute("disabled","true")):("SELECT"===c.tagName.toUpperCase()&& -(g.data=c.value),c.removeAttribute("readonly"),c.removeAttribute("disabled"));b.onchange()});h=k.searchoptions.sopt?k.searchoptions.sopt:b.p.sopt?b.p.sopt:-1!==a.inArray(k.searchtype,b.p.strarr)?b.p.stropts:b.p.numopts;d="";a.each(b.p.ops,function(){t.push(this.oper)});for(e=0;e<h.length;e++)r=a.inArray(h[e],t),-1!==r&&(s=g.op===b.p.ops[r].oper?" selected='selected'":"",d+="<option value='"+b.p.ops[r].oper+"'"+s+">"+b.p.ops[r].text+"</option>");v.append(d);d=a("<td class='data'></td>");m.append(d); -d.append(p);a.jgrid.bindEv.call(c,p,k.searchoptions);a(p).addClass("input-elm").bind("change",function(){g.data="custom"===k.inputtype?k.searchoptions.custom_value.call(c,a(this).children(".customelement:first"),"get"):a(this).val();b.onchange()});d=a("<td></td>");m.append(d);!0===this.p.ruleButtons&&(p=a("<input type='button' value='-' title='Delete rule' class='delete-rule ui-del'/>"),d.append(p),p.bind("click",function(){for(e=0;e<l.rules.length;e++)if(l.rules[e]===g){l.rules.splice(e,1);break}b.reDraw(); -b.onchange();return!1}));return m};this.getStringForGroup=function(a){var d="(",b;if(void 0!==a.groups)for(b=0;b<a.groups.length;b++){1<d.length&&(d+=" "+a.groupOp+" ");try{d+=this.getStringForGroup(a.groups[b])}catch(c){alert(c)}}if(void 0!==a.rules)try{for(b=0;b<a.rules.length;b++)1<d.length&&(d+=" "+a.groupOp+" "),d+=this.getStringForRule(a.rules[b])}catch(f){alert(f)}d+=")";return"()"===d?"":d};this.getStringForRule=function(d){var f="",b="",c,m;for(c=0;c<this.p.ops.length;c++)if(this.p.ops[c].oper=== -d.op){f=this.p.operands.hasOwnProperty(d.op)?this.p.operands[d.op]:"";b=this.p.ops[c].oper;break}for(c=0;c<this.p.columns.length;c++)if(this.p.columns[c].name===d.field){m=this.p.columns[c];break}if(void 0==m)return"";c=d.data;if("bw"===b||"bn"===b)c+="%";if("ew"===b||"en"===b)c="%"+c;if("cn"===b||"nc"===b)c="%"+c+"%";if("in"===b||"ni"===b)c=" ("+c+")";n.errorcheck&&u(d.data,m);return-1!==a.inArray(m.searchtype,["int","integer","float","number","currency"])||"nn"===b||"nu"===b?d.field+" "+f+" "+c: -d.field+" "+f+' "'+c+'"'};this.resetFilter=function(){this.p.filter=a.extend(!0,{},this.p.initFilter);this.reDraw();this.onchange()};this.hideError=function(){a("th.ui-state-error",this).html("");a("tr.error",this).hide()};this.showError=function(){a("th.ui-state-error",this).html(this.p.errmsg);a("tr.error",this).show()};this.toUserFriendlyString=function(){return this.getStringForGroup(n.filter)};this.toString=function(){function a(b){var c="(",f;if(void 0!==b.groups)for(f=0;f<b.groups.length;f++)1< -c.length&&(c="OR"===b.groupOp?c+" || ":c+" && "),c+=a(b.groups[f]);if(void 0!==b.rules)for(f=0;f<b.rules.length;f++){1<c.length&&(c="OR"===b.groupOp?c+" || ":c+" && ");var e=b.rules[f];if(d.p.errorcheck){for(var h=void 0,n=void 0,h=0;h<d.p.columns.length;h++)if(d.p.columns[h].name===e.field){n=d.p.columns[h];break}n&&u(e.data,n)}c+=e.op+"(item."+e.field+",'"+e.data+"')"}c+=")";return"()"===c?"":c}var d=this;return a(this.p.filter)};this.reDraw();if(this.p.showQuery)this.onchange();this.filter=!0}}})}; -a.extend(a.fn.jqFilter,{toSQLString:function(){var a="";this.each(function(){a=this.toUserFriendlyString()});return a},filterData:function(){var a;this.each(function(){a=this.p.filter});return a},getParameter:function(a){return void 0!==a&&this.p.hasOwnProperty(a)?this.p[a]:this.p},resetFilter:function(){return this.each(function(){this.resetFilter()})},addFilter:function(d){"string"===typeof d&&(d=a.jgrid.parse(d));this.each(function(){this.p.filter=d;this.reDraw();this.onchange()})}})})(jQuery); -(function(a){a.jgrid.inlineEdit=a.jgrid.inlineEdit||{};a.jgrid.extend({editRow:function(c,e,b,l,h,n,p,g,f){var m={},d=a.makeArray(arguments).slice(1);"object"===a.type(d[0])?m=d[0]:(void 0!==e&&(m.keys=e),a.isFunction(b)&&(m.oneditfunc=b),a.isFunction(l)&&(m.successfunc=l),void 0!==h&&(m.url=h),void 0!==n&&(m.extraparam=n),a.isFunction(p)&&(m.aftersavefunc=p),a.isFunction(g)&&(m.errorfunc=g),a.isFunction(f)&&(m.afterrestorefunc=f));m=a.extend(!0,{keys:!1,oneditfunc:null,successfunc:null,url:null, -extraparam:{},aftersavefunc:null,errorfunc:null,afterrestorefunc:null,restoreAfterError:!0,mtype:"POST"},a.jgrid.inlineEdit,m);return this.each(function(){var d=this,f,e,b,g=0,h=null,n={},l,q;d.grid&&(l=a(d).jqGrid("getInd",c,!0),!1!==l&&(b=a.isFunction(m.beforeEditRow)?m.beforeEditRow.call(d,m,c):void 0,void 0===b&&(b=!0),b&&(b=a(l).attr("editable")||"0","0"!==b||a(l).hasClass("not-editable-row")||(q=d.p.colModel,a('td[role="gridcell"]',l).each(function(b){f=q[b].name;var l=!0===d.p.treeGrid&&f=== -d.p.ExpandColumn;if(l)e=a("span:first",this).html();else try{e=a.unformat.call(d,this,{rowId:c,colModel:q[b]},b)}catch(m){e=q[b].edittype&&"textarea"===q[b].edittype?a(this).text():a(this).html()}if("cb"!==f&&"subgrid"!==f&&"rn"!==f&&(d.p.autoencode&&(e=a.jgrid.htmlDecode(e)),n[f]=e,!0===q[b].editable)){null===h&&(h=b);l?a("span:first",this).html(""):a(this).html("");var p=a.extend({},q[b].editoptions||{},{id:c+"_"+f,name:f});q[b].edittype||(q[b].edittype="text");if("&nbsp;"===e||"&#160;"===e||1=== -e.length&&160===e.charCodeAt(0))e="";var x=a.jgrid.createEl.call(d,q[b].edittype,p,e,!0,a.extend({},a.jgrid.ajaxOptions,d.p.ajaxSelectOptions||{}));a(x).addClass("editable");l?a("span:first",this).append(x):a(this).append(x);a.jgrid.bindEv.call(d,x,p);"select"===q[b].edittype&&void 0!==q[b].editoptions&&!0===q[b].editoptions.multiple&&void 0===q[b].editoptions.dataUrl&&a.jgrid.msie&&a(x).width(a(x).width());g++}}),0<g&&(n.id=c,d.p.savedRow.push(n),a(l).attr("editable","1"),setTimeout(function(){a("td:eq("+ -h+") input",l).focus()},0),!0===m.keys&&a(l).bind("keydown",function(b){if(27===b.keyCode){a(d).jqGrid("restoreRow",c,m.afterrestorefunc);if(d.p._inlinenav)try{a(d).jqGrid("showAddEditButtons")}catch(f){}return!1}if(13===b.keyCode){if("TEXTAREA"===b.target.tagName)return!0;if(a(d).jqGrid("saveRow",c,m)&&d.p._inlinenav)try{a(d).jqGrid("showAddEditButtons")}catch(e){}return!1}}),a(d).triggerHandler("jqGridInlineEditRow",[c,m]),a.isFunction(m.oneditfunc)&&m.oneditfunc.call(d,c))))))})},saveRow:function(c, -e,b,l,h,n,p){var g=a.makeArray(arguments).slice(1),f={};"object"===a.type(g[0])?f=g[0]:(a.isFunction(e)&&(f.successfunc=e),void 0!==b&&(f.url=b),void 0!==l&&(f.extraparam=l),a.isFunction(h)&&(f.aftersavefunc=h),a.isFunction(n)&&(f.errorfunc=n),a.isFunction(p)&&(f.afterrestorefunc=p));var f=a.extend(!0,{successfunc:null,url:null,extraparam:{},aftersavefunc:null,errorfunc:null,afterrestorefunc:null,restoreAfterError:!0,mtype:"POST"},a.jgrid.inlineEdit,f),m=!1,d=this[0],r,k={},y={},v={},w,z,u;if(!d.grid)return m; -u=a(d).jqGrid("getInd",c,!0);if(!1===u)return m;g=a.isFunction(f.beforeSaveRow)?f.beforeSaveRow.call(d,f,c):void 0;void 0===g&&(g=!0);if(g){g=a(u).attr("editable");f.url=f.url||d.p.editurl;if("1"===g){var t;a('td[role="gridcell"]',u).each(function(c){t=d.p.colModel[c];r=t.name;if("cb"!==r&&"subgrid"!==r&&!0===t.editable&&"rn"!==r&&!a(this).hasClass("not-editable-cell")){switch(t.edittype){case "checkbox":var b=["Yes","No"];t.editoptions&&(b=t.editoptions.value.split(":"));k[r]=a("input",this).is(":checked")? -b[0]:b[1];break;case "text":case "password":case "textarea":case "button":k[r]=a("input, textarea",this).val();break;case "select":if(t.editoptions.multiple){var b=a("select",this),e=[];k[r]=a(b).val();k[r]=k[r]?k[r].join(","):"";a("select option:selected",this).each(function(d,b){e[d]=a(b).text()});y[r]=e.join(",")}else k[r]=a("select option:selected",this).val(),y[r]=a("select option:selected",this).text();t.formatter&&"select"===t.formatter&&(y={});break;case "custom":try{if(t.editoptions&&a.isFunction(t.editoptions.custom_value)){if(k[r]= -t.editoptions.custom_value.call(d,a(".customelement",this),"get"),void 0===k[r])throw"e2";}else throw"e1";}catch(g){"e1"===g&&a.jgrid.info_dialog(a.jgrid.errors.errcap,"function 'custom_value' "+a.jgrid.edit.msg.nodefined,a.jgrid.edit.bClose),"e2"===g?a.jgrid.info_dialog(a.jgrid.errors.errcap,"function 'custom_value' "+a.jgrid.edit.msg.novalue,a.jgrid.edit.bClose):a.jgrid.info_dialog(a.jgrid.errors.errcap,g.message,a.jgrid.edit.bClose)}}z=a.jgrid.checkValues.call(d,k[r],c);if(!1===z[0])return!1;d.p.autoencode&& -(k[r]=a.jgrid.htmlEncode(k[r]));"clientArray"!==f.url&&t.editoptions&&!0===t.editoptions.NullIfEmpty&&""===k[r]&&(v[r]="null")}});if(!1===z[0]){try{var q=a(d).jqGrid("getGridRowById",c),s=a.jgrid.findPos(q);a.jgrid.info_dialog(a.jgrid.errors.errcap,z[1],a.jgrid.edit.bClose,{left:s[0],top:s[1]+a(q).outerHeight()})}catch(A){alert(z[1])}return m}g=d.p.prmNames;q=c;s=!1===d.p.keyIndex?g.id:d.p.colModel[d.p.keyIndex+(!0===d.p.rownumbers?1:0)+(!0===d.p.multiselect?1:0)+(!0===d.p.subGrid?1:0)].name;k&&(k[g.oper]= -g.editoper,void 0===k[s]||""===k[s]?k[s]=c:u.id!==d.p.idPrefix+k[s]&&(g=a.jgrid.stripPref(d.p.idPrefix,c),void 0!==d.p._index[g]&&(d.p._index[k[s]]=d.p._index[g],delete d.p._index[g]),c=d.p.idPrefix+k[s],a(u).attr("id",c),d.p.selrow===q&&(d.p.selrow=c),a.isArray(d.p.selarrrow)&&(g=a.inArray(q,d.p.selarrrow),0<=g&&(d.p.selarrrow[g]=c)),d.p.multiselect&&(g="jqg_"+d.p.id+"_"+c,a("input.cbox",u).attr("id",g).attr("name",g))),void 0===d.p.inlineData&&(d.p.inlineData={}),k=a.extend({},k,d.p.inlineData, -f.extraparam));if("clientArray"===f.url){k=a.extend({},k,y);d.p.autoencode&&a.each(k,function(d,b){k[d]=a.jgrid.htmlDecode(b)});g=a(d).jqGrid("setRowData",c,k);a(u).attr("editable","0");for(s=0;s<d.p.savedRow.length;s++)if(String(d.p.savedRow[s].id)===String(q)){w=s;break}0<=w&&d.p.savedRow.splice(w,1);a(d).triggerHandler("jqGridInlineAfterSaveRow",[c,g,k,f]);a.isFunction(f.aftersavefunc)&&f.aftersavefunc.call(d,c,g,f);m=!0;a(u).removeClass("jqgrid-new-row").unbind("keydown")}else a("#lui_"+a.jgrid.jqID(d.p.id)).show(), -v=a.extend({},k,v),v[s]=a.jgrid.stripPref(d.p.idPrefix,v[s]),a.ajax(a.extend({url:f.url,data:a.isFunction(d.p.serializeRowData)?d.p.serializeRowData.call(d,v):v,type:f.mtype,async:!1,complete:function(b,e){a("#lui_"+a.jgrid.jqID(d.p.id)).hide();if("success"===e){var g=!0,h;h=a(d).triggerHandler("jqGridInlineSuccessSaveRow",[b,c,f]);a.isArray(h)||(h=[!0,k]);h[0]&&a.isFunction(f.successfunc)&&(h=f.successfunc.call(d,b));a.isArray(h)?(g=h[0],k=h[1]||k):g=h;if(!0===g){d.p.autoencode&&a.each(k,function(b, -d){k[b]=a.jgrid.htmlDecode(d)});k=a.extend({},k,y);a(d).jqGrid("setRowData",c,k);a(u).attr("editable","0");for(g=0;g<d.p.savedRow.length;g++)if(String(d.p.savedRow[g].id)===String(c)){w=g;break}0<=w&&d.p.savedRow.splice(w,1);a(d).triggerHandler("jqGridInlineAfterSaveRow",[c,b,k,f]);a.isFunction(f.aftersavefunc)&&f.aftersavefunc.call(d,c,b);m=!0;a(u).removeClass("jqgrid-new-row").unbind("keydown")}else a(d).triggerHandler("jqGridInlineErrorSaveRow",[c,b,e,null,f]),a.isFunction(f.errorfunc)&&f.errorfunc.call(d, -c,b,e,null),!0===f.restoreAfterError&&a(d).jqGrid("restoreRow",c,f.afterrestorefunc)}},error:function(b,e,g){a("#lui_"+a.jgrid.jqID(d.p.id)).hide();a(d).triggerHandler("jqGridInlineErrorSaveRow",[c,b,e,g,f]);if(a.isFunction(f.errorfunc))f.errorfunc.call(d,c,b,e,g);else{b=b.responseText||b.statusText;try{a.jgrid.info_dialog(a.jgrid.errors.errcap,'<div class="ui-state-error">'+b+"</div>",a.jgrid.edit.bClose,{buttonalign:"right"})}catch(h){alert(b)}}!0===f.restoreAfterError&&a(d).jqGrid("restoreRow", -c,f.afterrestorefunc)}},a.jgrid.ajaxOptions,d.p.ajaxRowOptions||{}))}return m}},restoreRow:function(c,e){var b=a.makeArray(arguments).slice(1),l={};"object"===a.type(b[0])?l=b[0]:a.isFunction(e)&&(l.afterrestorefunc=e);l=a.extend(!0,{},a.jgrid.inlineEdit,l);return this.each(function(){var b=this,e=-1,p,g={},f;if(b.grid&&(p=a(b).jqGrid("getInd",c,!0),!1!==p&&(f=a.isFunction(l.beforeCancelRow)?l.beforeCancelRow.call(b,l,sr):void 0,void 0===f&&(f=!0),f))){for(f=0;f<b.p.savedRow.length;f++)if(String(b.p.savedRow[f].id)=== -String(c)){e=f;break}if(0<=e){if(a.isFunction(a.fn.datepicker))try{a("input.hasDatepicker","#"+a.jgrid.jqID(p.id)).datepicker("hide")}catch(m){}a.each(b.p.colModel,function(){!0===this.editable&&b.p.savedRow[e].hasOwnProperty(this.name)&&(g[this.name]=b.p.savedRow[e][this.name])});a(b).jqGrid("setRowData",c,g);a(p).attr("editable","0").unbind("keydown");b.p.savedRow.splice(e,1);a("#"+a.jgrid.jqID(c),"#"+a.jgrid.jqID(b.p.id)).hasClass("jqgrid-new-row")&&setTimeout(function(){a(b).jqGrid("delRowData", -c);a(b).jqGrid("showAddEditButtons")},0)}a(b).triggerHandler("jqGridInlineAfterRestoreRow",[c]);a.isFunction(l.afterrestorefunc)&&l.afterrestorefunc.call(b,c)}})},addRow:function(c){c=a.extend(!0,{rowID:null,initdata:{},position:"first",useDefValues:!0,useFormatter:!1,addRowParams:{extraparam:{}}},c||{});return this.each(function(){if(this.grid){var e=this,b=a.isFunction(c.beforeAddRow)?c.beforeAddRow.call(e,c.addRowParams):void 0;void 0===b&&(b=!0);b&&(c.rowID=a.isFunction(c.rowID)?c.rowID.call(e, -c):null!=c.rowID?c.rowID:a.jgrid.randId(),!0===c.useDefValues&&a(e.p.colModel).each(function(){if(this.editoptions&&this.editoptions.defaultValue){var b=this.editoptions.defaultValue,b=a.isFunction(b)?b.call(e):b;c.initdata[this.name]=b}}),a(e).jqGrid("addRowData",c.rowID,c.initdata,c.position),c.rowID=e.p.idPrefix+c.rowID,a("#"+a.jgrid.jqID(c.rowID),"#"+a.jgrid.jqID(e.p.id)).addClass("jqgrid-new-row"),c.useFormatter?a("#"+a.jgrid.jqID(c.rowID)+" .ui-inline-edit","#"+a.jgrid.jqID(e.p.id)).click(): -(b=e.p.prmNames,c.addRowParams.extraparam[b.oper]=b.addoper,a(e).jqGrid("editRow",c.rowID,c.addRowParams),a(e).jqGrid("setSelection",c.rowID)))}})},inlineNav:function(c,e){e=a.extend(!0,{edit:!0,editicon:"ui-icon-pencil",add:!0,addicon:"ui-icon-plus",save:!0,saveicon:"ui-icon-disk",cancel:!0,cancelicon:"ui-icon-cancel",addParams:{addRowParams:{extraparam:{}}},editParams:{},restoreAfterSelect:!0},a.jgrid.nav,e||{});return this.each(function(){if(this.grid){var b=this,l,h=a.jgrid.jqID(b.p.id);b.p._inlinenav= -!0;if(!0===e.addParams.useFormatter){var n=b.p.colModel,p;for(p=0;p<n.length;p++)if(n[p].formatter&&"actions"===n[p].formatter){n[p].formatoptions&&(n=a.extend({keys:!1,onEdit:null,onSuccess:null,afterSave:null,onError:null,afterRestore:null,extraparam:{},url:null},n[p].formatoptions),e.addParams.addRowParams={keys:n.keys,oneditfunc:n.onEdit,successfunc:n.onSuccess,url:n.url,extraparam:n.extraparam,aftersavefunc:n.afterSave,errorfunc:n.onError,afterrestorefunc:n.afterRestore});break}}e.add&&a(b).jqGrid("navButtonAdd", -c,{caption:e.addtext,title:e.addtitle,buttonicon:e.addicon,id:b.p.id+"_iladd",onClickButton:function(){a(b).jqGrid("addRow",e.addParams);e.addParams.useFormatter||(a("#"+h+"_ilsave").removeClass("ui-state-disabled"),a("#"+h+"_ilcancel").removeClass("ui-state-disabled"),a("#"+h+"_iladd").addClass("ui-state-disabled"),a("#"+h+"_iledit").addClass("ui-state-disabled"))}});e.edit&&a(b).jqGrid("navButtonAdd",c,{caption:e.edittext,title:e.edittitle,buttonicon:e.editicon,id:b.p.id+"_iledit",onClickButton:function(){var c= -a(b).jqGrid("getGridParam","selrow");c?(a(b).jqGrid("editRow",c,e.editParams),a("#"+h+"_ilsave").removeClass("ui-state-disabled"),a("#"+h+"_ilcancel").removeClass("ui-state-disabled"),a("#"+h+"_iladd").addClass("ui-state-disabled"),a("#"+h+"_iledit").addClass("ui-state-disabled")):(a.jgrid.viewModal("#alertmod",{gbox:"#gbox_"+h,jqm:!0}),a("#jqg_alrt").focus())}});e.save&&(a(b).jqGrid("navButtonAdd",c,{caption:e.savetext||"",title:e.savetitle||"Save row",buttonicon:e.saveicon,id:b.p.id+"_ilsave",onClickButton:function(){var c= -b.p.savedRow[0].id;if(c){var f=b.p.prmNames,m=f.oper,d=e.editParams;a("#"+a.jgrid.jqID(c),"#"+h).hasClass("jqgrid-new-row")?(e.addParams.addRowParams.extraparam[m]=f.addoper,d=e.addParams.addRowParams):(e.editParams.extraparam||(e.editParams.extraparam={}),e.editParams.extraparam[m]=f.editoper);a(b).jqGrid("saveRow",c,d)&&a(b).jqGrid("showAddEditButtons")}else a.jgrid.viewModal("#alertmod",{gbox:"#gbox_"+h,jqm:!0}),a("#jqg_alrt").focus()}}),a("#"+h+"_ilsave").addClass("ui-state-disabled"));e.cancel&& -(a(b).jqGrid("navButtonAdd",c,{caption:e.canceltext||"",title:e.canceltitle||"Cancel row editing",buttonicon:e.cancelicon,id:b.p.id+"_ilcancel",onClickButton:function(){var c=b.p.savedRow[0].id,f=e.editParams;c?(a("#"+a.jgrid.jqID(c),"#"+h).hasClass("jqgrid-new-row")&&(f=e.addParams.addRowParams),a(b).jqGrid("restoreRow",c,f),a(b).jqGrid("showAddEditButtons")):(a.jgrid.viewModal("#alertmod",{gbox:"#gbox_"+h,jqm:!0}),a("#jqg_alrt").focus())}}),a("#"+h+"_ilcancel").addClass("ui-state-disabled"));!0=== -e.restoreAfterSelect&&(l=a.isFunction(b.p.beforeSelectRow)?b.p.beforeSelectRow:!1,b.p.beforeSelectRow=function(c,f){var h=!0;0<b.p.savedRow.length&&!0===b.p._inlinenav&&c!==b.p.selrow&&null!==b.p.selrow&&(b.p.selrow===e.addParams.rowID?a(b).jqGrid("delRowData",b.p.selrow):a(b).jqGrid("restoreRow",b.p.selrow,e.editParams),a(b).jqGrid("showAddEditButtons"));l&&(h=l.call(b,c,f));return h})}})},showAddEditButtons:function(){return this.each(function(){if(this.grid){var c=a.jgrid.jqID(this.p.id);a("#"+ -c+"_ilsave").addClass("ui-state-disabled");a("#"+c+"_ilcancel").addClass("ui-state-disabled");a("#"+c+"_iladd").removeClass("ui-state-disabled");a("#"+c+"_iledit").removeClass("ui-state-disabled")}})}})})(jQuery); -(function(b){b.jgrid.extend({editCell:function(d,f,a){return this.each(function(){var c=this,g,e,h,k;if(c.grid&&!0===c.p.cellEdit){f=parseInt(f,10);c.p.selrow=c.rows[d].id;c.p.knv||b(c).jqGrid("GridNav");if(0<c.p.savedRow.length){if(!0===a&&d==c.p.iRow&&f==c.p.iCol)return;b(c).jqGrid("saveCell",c.p.savedRow[0].id,c.p.savedRow[0].ic)}else window.setTimeout(function(){b("#"+b.jgrid.jqID(c.p.knv)).attr("tabindex","-1").focus()},0);k=c.p.colModel[f];g=k.name;if("subgrid"!==g&&"cb"!==g&&"rn"!==g){h=b("td:eq("+ -f+")",c.rows[d]);if(!0!==k.editable||!0!==a||h.hasClass("not-editable-cell"))0<=parseInt(c.p.iCol,10)&&0<=parseInt(c.p.iRow,10)&&(b("td:eq("+c.p.iCol+")",c.rows[c.p.iRow]).removeClass("edit-cell ui-state-highlight"),b(c.rows[c.p.iRow]).removeClass("selected-row ui-state-hover")),h.addClass("edit-cell ui-state-highlight"),b(c.rows[d]).addClass("selected-row ui-state-hover"),e=h.html().replace(/\&#160\;/ig,""),b(c).triggerHandler("jqGridSelectCell",[c.rows[d].id,g,e,d,f]),b.isFunction(c.p.onSelectCell)&& -c.p.onSelectCell.call(c,c.rows[d].id,g,e,d,f);else{0<=parseInt(c.p.iCol,10)&&0<=parseInt(c.p.iRow,10)&&(b("td:eq("+c.p.iCol+")",c.rows[c.p.iRow]).removeClass("edit-cell ui-state-highlight"),b(c.rows[c.p.iRow]).removeClass("selected-row ui-state-hover"));b(h).addClass("edit-cell ui-state-highlight");b(c.rows[d]).addClass("selected-row ui-state-hover");try{e=b.unformat.call(c,h,{rowId:c.rows[d].id,colModel:k},f)}catch(m){e=k.edittype&&"textarea"===k.edittype?b(h).text():b(h).html()}c.p.autoencode&& -(e=b.jgrid.htmlDecode(e));k.edittype||(k.edittype="text");c.p.savedRow.push({id:d,ic:f,name:g,v:e});if("&nbsp;"===e||"&#160;"===e||1===e.length&&160===e.charCodeAt(0))e="";if(b.isFunction(c.p.formatCell)){var l=c.p.formatCell.call(c,c.rows[d].id,g,e,d,f);void 0!==l&&(e=l)}b(c).triggerHandler("jqGridBeforeEditCell",[c.rows[d].id,g,e,d,f]);b.isFunction(c.p.beforeEditCell)&&c.p.beforeEditCell.call(c,c.rows[d].id,g,e,d,f);var l=b.extend({},k.editoptions||{},{id:d+"_"+g,name:g}),q=b.jgrid.createEl.call(c, -k.edittype,l,e,!0,b.extend({},b.jgrid.ajaxOptions,c.p.ajaxSelectOptions||{}));b(h).html("").append(q).attr("tabindex","0");b.jgrid.bindEv.call(c,q,l);window.setTimeout(function(){b(q).focus()},0);b("input, select, textarea",h).bind("keydown",function(a){27===a.keyCode&&(0<b("input.hasDatepicker",h).length?b(".ui-datepicker").is(":hidden")?b(c).jqGrid("restoreCell",d,f):b("input.hasDatepicker",h).datepicker("hide"):b(c).jqGrid("restoreCell",d,f));if(13===a.keyCode)return b(c).jqGrid("saveCell",d,f), -!1;if(9===a.keyCode){if(c.grid.hDiv.loading)return!1;a.shiftKey?b(c).jqGrid("prevCell",d,f):b(c).jqGrid("nextCell",d,f)}a.stopPropagation()});b(c).triggerHandler("jqGridAfterEditCell",[c.rows[d].id,g,e,d,f]);b.isFunction(c.p.afterEditCell)&&c.p.afterEditCell.call(c,c.rows[d].id,g,e,d,f)}c.p.iCol=f;c.p.iRow=d}}})},saveCell:function(d,f){return this.each(function(){var a=this,c;if(a.grid&&!0===a.p.cellEdit){c=1<=a.p.savedRow.length?0:null;if(null!==c){var g=b("td:eq("+f+")",a.rows[d]),e,h,k=a.p.colModel[f], -m=k.name,l=b.jgrid.jqID(m);switch(k.edittype){case "select":if(k.editoptions.multiple){var l=b("#"+d+"_"+l,a.rows[d]),q=[];(e=b(l).val())?e.join(","):e="";b("option:selected",l).each(function(a,c){q[a]=b(c).text()});h=q.join(",")}else e=b("#"+d+"_"+l+" option:selected",a.rows[d]).val(),h=b("#"+d+"_"+l+" option:selected",a.rows[d]).text();k.formatter&&(h=e);break;case "checkbox":var n=["Yes","No"];k.editoptions&&(n=k.editoptions.value.split(":"));h=e=b("#"+d+"_"+l,a.rows[d]).is(":checked")?n[0]:n[1]; -break;case "password":case "text":case "textarea":case "button":h=e=b("#"+d+"_"+l,a.rows[d]).val();break;case "custom":try{if(k.editoptions&&b.isFunction(k.editoptions.custom_value)){e=k.editoptions.custom_value.call(a,b(".customelement",g),"get");if(void 0===e)throw"e2";h=e}else throw"e1";}catch(r){"e1"===r&&b.jgrid.info_dialog(b.jgrid.errors.errcap,"function 'custom_value' "+b.jgrid.edit.msg.nodefined,b.jgrid.edit.bClose),"e2"===r?b.jgrid.info_dialog(b.jgrid.errors.errcap,"function 'custom_value' "+ -b.jgrid.edit.msg.novalue,b.jgrid.edit.bClose):b.jgrid.info_dialog(b.jgrid.errors.errcap,r.message,b.jgrid.edit.bClose)}}if(h!==a.p.savedRow[c].v){if(c=b(a).triggerHandler("jqGridBeforeSaveCell",[a.rows[d].id,m,e,d,f]))h=e=c;b.isFunction(a.p.beforeSaveCell)&&(c=a.p.beforeSaveCell.call(a,a.rows[d].id,m,e,d,f))&&(h=e=c);var s=b.jgrid.checkValues.call(a,e,f);if(!0===s[0]){c=b(a).triggerHandler("jqGridBeforeSubmitCell",[a.rows[d].id,m,e,d,f])||{};b.isFunction(a.p.beforeSubmitCell)&&((c=a.p.beforeSubmitCell.call(a, -a.rows[d].id,m,e,d,f))||(c={}));0<b("input.hasDatepicker",g).length&&b("input.hasDatepicker",g).datepicker("hide");if("remote"===a.p.cellsubmit)if(a.p.cellurl){var p={};a.p.autoencode&&(e=b.jgrid.htmlEncode(e));p[m]=e;n=a.p.prmNames;k=n.id;l=n.oper;p[k]=b.jgrid.stripPref(a.p.idPrefix,a.rows[d].id);p[l]=n.editoper;p=b.extend(c,p);b("#lui_"+b.jgrid.jqID(a.p.id)).show();a.grid.hDiv.loading=!0;b.ajax(b.extend({url:a.p.cellurl,data:b.isFunction(a.p.serializeCellData)?a.p.serializeCellData.call(a,p):p, -type:"POST",complete:function(c,k){b("#lui_"+a.p.id).hide();a.grid.hDiv.loading=!1;if("success"===k){var l=b(a).triggerHandler("jqGridAfterSubmitCell",[a,c,p.id,m,e,d,f])||[!0,""];!0===l[0]&&b.isFunction(a.p.afterSubmitCell)&&(l=a.p.afterSubmitCell.call(a,c,p.id,m,e,d,f));!0===l[0]?(b(g).empty(),b(a).jqGrid("setCell",a.rows[d].id,f,h,!1,!1,!0),b(g).addClass("dirty-cell"),b(a.rows[d]).addClass("edited"),b(a).triggerHandler("jqGridAfterSaveCell",[a.rows[d].id,m,e,d,f]),b.isFunction(a.p.afterSaveCell)&& -a.p.afterSaveCell.call(a,a.rows[d].id,m,e,d,f),a.p.savedRow.splice(0,1)):(b.jgrid.info_dialog(b.jgrid.errors.errcap,l[1],b.jgrid.edit.bClose),b(a).jqGrid("restoreCell",d,f))}},error:function(c,e,h){b("#lui_"+b.jgrid.jqID(a.p.id)).hide();a.grid.hDiv.loading=!1;b(a).triggerHandler("jqGridErrorCell",[c,e,h]);b.isFunction(a.p.errorCell)?a.p.errorCell.call(a,c,e,h):b.jgrid.info_dialog(b.jgrid.errors.errcap,c.status+" : "+c.statusText+"<br/>"+e,b.jgrid.edit.bClose);b(a).jqGrid("restoreCell",d,f)}},b.jgrid.ajaxOptions, -a.p.ajaxCellOptions||{}))}else try{b.jgrid.info_dialog(b.jgrid.errors.errcap,b.jgrid.errors.nourl,b.jgrid.edit.bClose),b(a).jqGrid("restoreCell",d,f)}catch(t){}"clientArray"===a.p.cellsubmit&&(b(g).empty(),b(a).jqGrid("setCell",a.rows[d].id,f,h,!1,!1,!0),b(g).addClass("dirty-cell"),b(a.rows[d]).addClass("edited"),b(a).triggerHandler("jqGridAfterSaveCell",[a.rows[d].id,m,e,d,f]),b.isFunction(a.p.afterSaveCell)&&a.p.afterSaveCell.call(a,a.rows[d].id,m,e,d,f),a.p.savedRow.splice(0,1))}else try{window.setTimeout(function(){b.jgrid.info_dialog(b.jgrid.errors.errcap, -e+" "+s[1],b.jgrid.edit.bClose)},100),b(a).jqGrid("restoreCell",d,f)}catch(u){}}else b(a).jqGrid("restoreCell",d,f)}window.setTimeout(function(){b("#"+b.jgrid.jqID(a.p.knv)).attr("tabindex","-1").focus()},0)}})},restoreCell:function(d,f){return this.each(function(){var a=this,c;if(a.grid&&!0===a.p.cellEdit){c=1<=a.p.savedRow.length?0:null;if(null!==c){var g=b("td:eq("+f+")",a.rows[d]);if(b.isFunction(b.fn.datepicker))try{b("input.hasDatepicker",g).datepicker("hide")}catch(e){}b(g).empty().attr("tabindex", -"-1");b(a).jqGrid("setCell",a.rows[d].id,f,a.p.savedRow[c].v,!1,!1,!0);b(a).triggerHandler("jqGridAfterRestoreCell",[a.rows[d].id,a.p.savedRow[c].v,d,f]);b.isFunction(a.p.afterRestoreCell)&&a.p.afterRestoreCell.call(a,a.rows[d].id,a.p.savedRow[c].v,d,f);a.p.savedRow.splice(0,1)}window.setTimeout(function(){b("#"+a.p.knv).attr("tabindex","-1").focus()},0)}})},nextCell:function(d,f){return this.each(function(){var a=!1,c;if(this.grid&&!0===this.p.cellEdit){for(c=f+1;c<this.p.colModel.length;c++)if(!0=== -this.p.colModel[c].editable){a=c;break}!1!==a?b(this).jqGrid("editCell",d,a,!0):0<this.p.savedRow.length&&b(this).jqGrid("saveCell",d,f)}})},prevCell:function(d,f){return this.each(function(){var a=!1,c;if(this.grid&&!0===this.p.cellEdit){for(c=f-1;0<=c;c--)if(!0===this.p.colModel[c].editable){a=c;break}!1!==a?b(this).jqGrid("editCell",d,a,!0):0<this.p.savedRow.length&&b(this).jqGrid("saveCell",d,f)}})},GridNav:function(){return this.each(function(){function d(c,d,e){if("v"===e.substr(0,1)){var f= -b(a.grid.bDiv)[0].clientHeight,g=b(a.grid.bDiv)[0].scrollTop,n=a.rows[c].offsetTop+a.rows[c].clientHeight,r=a.rows[c].offsetTop;"vd"===e&&n>=f&&(b(a.grid.bDiv)[0].scrollTop=b(a.grid.bDiv)[0].scrollTop+a.rows[c].clientHeight);"vu"===e&&r<g&&(b(a.grid.bDiv)[0].scrollTop=b(a.grid.bDiv)[0].scrollTop-a.rows[c].clientHeight)}"h"===e&&(e=b(a.grid.bDiv)[0].clientWidth,f=b(a.grid.bDiv)[0].scrollLeft,g=a.rows[c].cells[d].offsetLeft,a.rows[c].cells[d].offsetLeft+a.rows[c].cells[d].clientWidth>=e+parseInt(f, -10)?b(a.grid.bDiv)[0].scrollLeft=b(a.grid.bDiv)[0].scrollLeft+a.rows[c].cells[d].clientWidth:g<f&&(b(a.grid.bDiv)[0].scrollLeft=b(a.grid.bDiv)[0].scrollLeft-a.rows[c].cells[d].clientWidth))}function f(b,c){var d,e;if("lft"===c)for(d=b+1,e=b;0<=e;e--)if(!0!==a.p.colModel[e].hidden){d=e;break}if("rgt"===c)for(d=b-1,e=b;e<a.p.colModel.length;e++)if(!0!==a.p.colModel[e].hidden){d=e;break}return d}var a=this;if(a.grid&&!0===a.p.cellEdit){a.p.knv=a.p.id+"_kn";var c=b("<div style='position:fixed;top:0px;width:1px;height:1px;' tabindex='0'><div tabindex='-1' style='width:1px;height:1px;' id='"+ -a.p.knv+"'></div></div>"),g,e;b(c).insertBefore(a.grid.cDiv);b("#"+a.p.knv).focus().keydown(function(c){e=c.keyCode;"rtl"===a.p.direction&&(37===e?e=39:39===e&&(e=37));switch(e){case 38:0<a.p.iRow-1&&(d(a.p.iRow-1,a.p.iCol,"vu"),b(a).jqGrid("editCell",a.p.iRow-1,a.p.iCol,!1));break;case 40:a.p.iRow+1<=a.rows.length-1&&(d(a.p.iRow+1,a.p.iCol,"vd"),b(a).jqGrid("editCell",a.p.iRow+1,a.p.iCol,!1));break;case 37:0<=a.p.iCol-1&&(g=f(a.p.iCol-1,"lft"),d(a.p.iRow,g,"h"),b(a).jqGrid("editCell",a.p.iRow,g, -!1));break;case 39:a.p.iCol+1<=a.p.colModel.length-1&&(g=f(a.p.iCol+1,"rgt"),d(a.p.iRow,g,"h"),b(a).jqGrid("editCell",a.p.iRow,g,!1));break;case 13:0<=parseInt(a.p.iCol,10)&&0<=parseInt(a.p.iRow,10)&&b(a).jqGrid("editCell",a.p.iRow,a.p.iCol,!0);break;default:return!0}return!1})}})},getChangedCells:function(d){var f=[];d||(d="all");this.each(function(){var a=this,c;a.grid&&!0===a.p.cellEdit&&b(a.rows).each(function(g){var e={};b(this).hasClass("edited")&&(b("td",this).each(function(f){c=a.p.colModel[f].name; -if("cb"!==c&&"subgrid"!==c)if("dirty"===d){if(b(this).hasClass("dirty-cell"))try{e[c]=b.unformat.call(a,this,{rowId:a.rows[g].id,colModel:a.p.colModel[f]},f)}catch(k){e[c]=b.jgrid.htmlDecode(b(this).html())}}else try{e[c]=b.unformat.call(a,this,{rowId:a.rows[g].id,colModel:a.p.colModel[f]},f)}catch(m){e[c]=b.jgrid.htmlDecode(b(this).html())}}),e.id=this.id,f.push(e))})});return f}})})(jQuery); -(function(c){c.fn.jqm=function(a){var k={overlay:50,closeoverlay:!0,overlayClass:"jqmOverlay",closeClass:"jqmClose",trigger:".jqModal",ajax:d,ajaxText:"",target:d,modal:d,toTop:d,onShow:d,onHide:d,onLoad:d};return this.each(function(){if(this._jqm)return l[this._jqm].c=c.extend({},l[this._jqm].c,a);n++;this._jqm=n;l[n]={c:c.extend(k,c.jqm.params,a),a:d,w:c(this).addClass("jqmID"+n),s:n};k.trigger&&c(this).jqmAddTrigger(k.trigger)})};c.fn.jqmAddClose=function(a){return r(this,a,"jqmHide")};c.fn.jqmAddTrigger= -function(a){return r(this,a,"jqmShow")};c.fn.jqmShow=function(a){return this.each(function(){c.jqm.open(this._jqm,a)})};c.fn.jqmHide=function(a){return this.each(function(){c.jqm.close(this._jqm,a)})};c.jqm={hash:{},open:function(a,k){var b=l[a],e=b.c,h="."+e.closeClass,f=parseInt(b.w.css("z-index")),f=0<f?f:3E3,g=c("<div></div>").css({height:"100%",width:"100%",position:"fixed",left:0,top:0,"z-index":f-1,opacity:e.overlay/100});if(b.a)return d;b.t=k;b.a=!0;b.w.css("z-index",f);e.modal?(m[0]||setTimeout(function(){s("bind")}, -1),m.push(a)):0<e.overlay?e.closeoverlay&&b.w.jqmAddClose(g):g=d;b.o=g?g.addClass(e.overlayClass).prependTo("body"):d;e.ajax?(f=e.target||b.w,g=e.ajax,f="string"==typeof f?c(f,b.w):c(f),g="@"==g.substr(0,1)?c(k).attr(g.substring(1)):g,f.html(e.ajaxText).load(g,function(){e.onLoad&&e.onLoad.call(this,b);h&&b.w.jqmAddClose(c(h,b.w));p(b)})):h&&b.w.jqmAddClose(c(h,b.w));e.toTop&&b.o&&b.w.before('<span id="jqmP'+b.w[0]._jqm+'"></span>').insertAfter(b.o);e.onShow?e.onShow(b):b.w.show();p(b);return d}, -close:function(a){a=l[a];if(!a.a)return d;a.a=d;m[0]&&(m.pop(),m[0]||s("unbind"));a.c.toTop&&a.o&&c("#jqmP"+a.w[0]._jqm).after(a.w).remove();if(a.c.onHide)a.c.onHide(a);else a.w.hide(),a.o&&a.o.remove();return d},params:{}};var n=0,l=c.jqm.hash,m=[],d=!1,p=function(a){try{c(":input:visible",a.w)[0].focus()}catch(d){}},s=function(a){c(document)[a]("keypress",q)[a]("keydown",q)[a]("mousedown",q)},q=function(a){var d=l[m[m.length-1]],b=!c(a.target).parents(".jqmID"+d.s)[0];b&&(c(".jqmID"+d.s).each(function(){var d= -c(this),h=d.offset();if(h.top<=a.pageY&&a.pageY<=h.top+d.height()&&h.left<=a.pageX&&a.pageX<=h.left+d.width())return b=!1}),p(d));return!b},r=function(a,k,b){return a.each(function(){var a=this._jqm;c(k).each(function(){this[b]||(this[b]=[],c(this).click(function(){for(var a in{jqmShow:1,jqmHide:1})for(var b in this[a])if(l[this[a][b]])l[this[a][b]].w[a](this);return d}));this[b].push(a)})})}})(jQuery); -(function(b){b.fn.jqDrag=function(a){return h(this,a,"d")};b.fn.jqResize=function(a,b){return h(this,a,"r",b)};b.jqDnR={dnr:{},e:0,drag:function(a){"d"==d.k?e.css({left:d.X+a.pageX-d.pX,top:d.Y+a.pageY-d.pY}):(e.css({width:Math.max(a.pageX-d.pX+d.W,0),height:Math.max(a.pageY-d.pY+d.H,0)}),f&&g.css({width:Math.max(a.pageX-f.pX+f.W,0),height:Math.max(a.pageY-f.pY+f.H,0)}));return!1},stop:function(){b(document).unbind("mousemove",c.drag).unbind("mouseup",c.stop)}};var c=b.jqDnR,d=c.dnr,e=c.e,g,f,h=function(a, -c,h,n){return a.each(function(){c=c?b(c,a):a;c.bind("mousedown",{e:a,k:h},function(a){var c=a.data,k={};e=c.e;g=n?b(n):!1;if("relative"!=e.css("position"))try{e.position(k)}catch(h){}d={X:k.left||l("left")||0,Y:k.top||l("top")||0,W:l("width")||e[0].scrollWidth||0,H:l("height")||e[0].scrollHeight||0,pX:a.pageX,pY:a.pageY,k:c.k};f=g&&"d"!=c.k?{X:k.left||m("left")||0,Y:k.top||m("top")||0,W:g[0].offsetWidth||m("width")||0,H:g[0].offsetHeight||m("height")||0,pX:a.pageX,pY:a.pageY,k:c.k}:!1;if(b("input.hasDatepicker", -e[0])[0])try{b("input.hasDatepicker",e[0]).datepicker("hide")}catch(p){}b(document).mousemove(b.jqDnR.drag).mouseup(b.jqDnR.stop);return!1})})},l=function(a){return parseInt(e.css(a),10)||!1},m=function(a){return parseInt(g.css(a),10)||!1}})(jQuery); -(function(b){b.jgrid.extend({setSubGrid:function(){return this.each(function(){var d,c;this.p.subGridOptions=b.extend({plusicon:"ui-icon-plus",minusicon:"ui-icon-minus",openicon:"ui-icon-carat-1-sw",expandOnLoad:!1,delayOnLoad:50,selectOnExpand:!1,selectOnCollapse:!1,reloadOnExpand:!0},this.p.subGridOptions||{});this.p.colNames.unshift("");this.p.colModel.unshift({name:"subgrid",width:b.jgrid.cell_width?this.p.subGridWidth+this.p.cellLayout:this.p.subGridWidth,sortable:!1,resizable:!1,hidedlg:!0, -search:!1,fixed:!0});d=this.p.subGridModel;if(d[0])for(d[0].align=b.extend([],d[0].align||[]),c=0;c<d[0].name.length;c++)d[0].align[c]=d[0].align[c]||"left"})},addSubGridCell:function(b,c){var a="",p,n;this.each(function(){a=this.formatCol(b,c);n=this.p.id;p=this.p.subGridOptions.plusicon});return'<td role="gridcell" aria-describedby="'+n+'_subgrid" class="ui-sgcollapsed sgcollapsed" '+a+"><a style='cursor:pointer;'><span class='ui-icon "+p+"'></span></a></td>"},addSubGrid:function(d,c){return this.each(function(){var a= -this;if(a.grid){var p=function(c,d,h){d=b("<td align='"+a.p.subGridModel[0].align[h]+"'></td>").html(d);b(c).append(d)},n=function(c,d){var h,f,e,g=b("<table cellspacing='0' cellpadding='0' border='0'><tbody></tbody></table>"),k=b("<tr></tr>");for(f=0;f<a.p.subGridModel[0].name.length;f++)h=b("<th class='ui-state-default ui-th-subgrid ui-th-column ui-th-"+a.p.direction+"'></th>"),b(h).html(a.p.subGridModel[0].name[f]),b(h).width(a.p.subGridModel[0].width[f]),b(k).append(h);b(g).append(k);c&&(e=a.p.xmlReader.subgrid, -b(e.root+" "+e.row,c).each(function(){k=b("<tr class='ui-widget-content ui-subtblcell'></tr>");if(!0===e.repeatitems)b(e.cell,this).each(function(a){p(k,b(this).text()||"&#160;",a)});else{var c=a.p.subGridModel[0].mapping||a.p.subGridModel[0].name;if(c)for(f=0;f<c.length;f++)p(k,b(c[f],this).text()||"&#160;",f)}b(g).append(k)}));h=b("table:first",a.grid.bDiv).attr("id")+"_";b("#"+b.jgrid.jqID(h+d)).append(g);a.grid.hDiv.loading=!1;b("#load_"+b.jgrid.jqID(a.p.id)).hide();return!1},r=function(c,d){var h, -f,e,g,k,m=b("<table cellspacing='0' cellpadding='0' border='0'><tbody></tbody></table>"),l=b("<tr></tr>");for(f=0;f<a.p.subGridModel[0].name.length;f++)h=b("<th class='ui-state-default ui-th-subgrid ui-th-column ui-th-"+a.p.direction+"'></th>"),b(h).html(a.p.subGridModel[0].name[f]),b(h).width(a.p.subGridModel[0].width[f]),b(l).append(h);b(m).append(l);if(c&&(g=a.p.jsonReader.subgrid,h=b.jgrid.getAccessor(c,g.root),void 0!==h))for(f=0;f<h.length;f++){e=h[f];l=b("<tr class='ui-widget-content ui-subtblcell'></tr>"); -if(!0===g.repeatitems)for(g.cell&&(e=e[g.cell]),k=0;k<e.length;k++)p(l,e[k]||"&#160;",k);else{var n=a.p.subGridModel[0].mapping||a.p.subGridModel[0].name;if(n.length)for(k=0;k<n.length;k++)p(l,e[n[k]]||"&#160;",k)}b(m).append(l)}f=b("table:first",a.grid.bDiv).attr("id")+"_";b("#"+b.jgrid.jqID(f+d)).append(m);a.grid.hDiv.loading=!1;b("#load_"+b.jgrid.jqID(a.p.id)).hide();return!1},v=function(c){var e,d,f,g;e=b(c).attr("id");d={nd_:(new Date).getTime()};d[a.p.prmNames.subgridid]=e;if(!a.p.subGridModel[0])return!1; -if(a.p.subGridModel[0].params)for(g=0;g<a.p.subGridModel[0].params.length;g++)for(f=0;f<a.p.colModel.length;f++)a.p.colModel[f].name===a.p.subGridModel[0].params[g]&&(d[a.p.colModel[f].name]=b("td:eq("+f+")",c).text().replace(/\&#160\;/ig,""));if(!a.grid.hDiv.loading)switch(a.grid.hDiv.loading=!0,b("#load_"+b.jgrid.jqID(a.p.id)).show(),a.p.subgridtype||(a.p.subgridtype=a.p.datatype),b.isFunction(a.p.subgridtype)?a.p.subgridtype.call(a,d):a.p.subgridtype=a.p.subgridtype.toLowerCase(),a.p.subgridtype){case "xml":case "json":b.ajax(b.extend({type:a.p.mtype, -url:a.p.subGridUrl,dataType:a.p.subgridtype,data:b.isFunction(a.p.serializeSubGridData)?a.p.serializeSubGridData.call(a,d):d,complete:function(c){"xml"===a.p.subgridtype?n(c.responseXML,e):r(b.jgrid.parse(c.responseText),e)}},b.jgrid.ajaxOptions,a.p.ajaxSubgridOptions||{}))}return!1},e,m,s,t=0,g,l;b.each(a.p.colModel,function(){!0!==this.hidden&&"rn"!==this.name&&"cb"!==this.name||t++});var u=a.rows.length,q=1;void 0!==c&&0<c&&(q=c,u=c+1);for(;q<u;)b(a.rows[q]).hasClass("jqgrow")&&b(a.rows[q].cells[d]).bind("click", -function(){var c=b(this).parent("tr")[0];l=c.nextSibling;if(b(this).hasClass("sgcollapsed")){m=a.p.id;e=c.id;if(!0===a.p.subGridOptions.reloadOnExpand||!1===a.p.subGridOptions.reloadOnExpand&&!b(l).hasClass("ui-subgrid")){s=1<=d?"<td colspan='"+d+"'>&#160;</td>":"";g=b(a).triggerHandler("jqGridSubGridBeforeExpand",[m+"_"+e,e]);(g=!1===g||"stop"===g?!1:!0)&&b.isFunction(a.p.subGridBeforeExpand)&&(g=a.p.subGridBeforeExpand.call(a,m+"_"+e,e));if(!1===g)return!1;b(c).after("<tr role='row' class='ui-subgrid'>"+ -s+"<td class='ui-widget-content subgrid-cell'><span class='ui-icon "+a.p.subGridOptions.openicon+"'></span></td><td colspan='"+parseInt(a.p.colNames.length-1-t,10)+"' class='ui-widget-content subgrid-data'><div id="+m+"_"+e+" class='tablediv'></div></td></tr>");b(a).triggerHandler("jqGridSubGridRowExpanded",[m+"_"+e,e]);b.isFunction(a.p.subGridRowExpanded)?a.p.subGridRowExpanded.call(a,m+"_"+e,e):v(c)}else b(l).show();b(this).html("<a style='cursor:pointer;'><span class='ui-icon "+a.p.subGridOptions.minusicon+ -"'></span></a>").removeClass("sgcollapsed").addClass("sgexpanded");a.p.subGridOptions.selectOnExpand&&b(a).jqGrid("setSelection",e)}else if(b(this).hasClass("sgexpanded")){g=b(a).triggerHandler("jqGridSubGridRowColapsed",[m+"_"+e,e]);g=!1===g||"stop"===g?!1:!0;e=c.id;g&&b.isFunction(a.p.subGridRowColapsed)&&(g=a.p.subGridRowColapsed.call(a,m+"_"+e,e));if(!1===g)return!1;!0===a.p.subGridOptions.reloadOnExpand?b(l).remove(".ui-subgrid"):b(l).hasClass("ui-subgrid")&&b(l).hide();b(this).html("<a style='cursor:pointer;'><span class='ui-icon "+ -a.p.subGridOptions.plusicon+"'></span></a>").removeClass("sgexpanded").addClass("sgcollapsed");a.p.subGridOptions.selectOnCollapse&&b(a).jqGrid("setSelection",e)}return!1}),q++;!0===a.p.subGridOptions.expandOnLoad&&b(a.rows).filter(".jqgrow").each(function(a,c){b(c.cells[0]).click()});a.subGridXml=function(a,b){n(a,b)};a.subGridJson=function(a,b){r(a,b)}}})},expandSubGridRow:function(d){return this.each(function(){if((this.grid||d)&&!0===this.p.subGrid){var c=b(this).jqGrid("getInd",d,!0);c&&(c=b("td.sgcollapsed", -c)[0])&&b(c).trigger("click")}})},collapseSubGridRow:function(d){return this.each(function(){if((this.grid||d)&&!0===this.p.subGrid){var c=b(this).jqGrid("getInd",d,!0);c&&(c=b("td.sgexpanded",c)[0])&&b(c).trigger("click")}})},toggleSubGridRow:function(d){return this.each(function(){if((this.grid||d)&&!0===this.p.subGrid){var c=b(this).jqGrid("getInd",d,!0);if(c){var a=b("td.sgcollapsed",c)[0];a?b(a).trigger("click"):(a=b("td.sgexpanded",c)[0])&&b(a).trigger("click")}}})}})})(jQuery); -(function(d){d.extend(d.jgrid,{template:function(b){var k=d.makeArray(arguments).slice(1),a,c=k.length;null==b&&(b="");return b.replace(/\{([\w\-]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g,function(b,m){if(!isNaN(parseInt(m,10)))return k[parseInt(m,10)];for(a=0;a<c;a++)if(d.isArray(k[a]))for(var e=k[a],f=e.length;f--;)if(m===e[f].nm)return e[f].v})}});d.jgrid.extend({groupingSetup:function(){return this.each(function(){var b,k,a=this.p.colModel,c=this.p.groupingView;if(null===c||"object"!==typeof c&&!d.isFunction(c))this.p.grouping= -!1;else if(c.groupField.length){void 0===c.visibiltyOnNextGrouping&&(c.visibiltyOnNextGrouping=[]);c.lastvalues=[];c._locgr||(c.groups=[]);c.counters=[];for(b=0;b<c.groupField.length;b++)c.groupOrder[b]||(c.groupOrder[b]="asc"),c.groupText[b]||(c.groupText[b]="{0}"),"boolean"!==typeof c.groupColumnShow[b]&&(c.groupColumnShow[b]=!0),"boolean"!==typeof c.groupSummary[b]&&(c.groupSummary[b]=!1),c.groupSummaryPos[b]||(c.groupSummaryPos[b]="footer"),!0===c.groupColumnShow[b]?(c.visibiltyOnNextGrouping[b]= -!0,d(this).jqGrid("showCol",c.groupField[b])):(c.visibiltyOnNextGrouping[b]=d("#"+d.jgrid.jqID(this.p.id+"_"+c.groupField[b])).is(":visible"),d(this).jqGrid("hideCol",c.groupField[b]));c.summary=[];c.hideFirstGroupCol&&(c.formatDisplayField[0]=function(a){return a});b=0;for(k=a.length;b<k;b++)c.hideFirstGroupCol&&!a[b].hidden&&c.groupField[0]===a[b].name&&(a[b].formatter=function(){return""}),a[b].summaryType&&(a[b].summaryDivider?c.summary.push({nm:a[b].name,st:a[b].summaryType,v:"",sd:a[b].summaryDivider, -vd:"",sr:a[b].summaryRound,srt:a[b].summaryRoundType||"round"}):c.summary.push({nm:a[b].name,st:a[b].summaryType,v:"",sr:a[b].summaryRound,srt:a[b].summaryRoundType||"round"}))}else this.p.grouping=!1})},groupingPrepare:function(b,k){this.each(function(){var a=this.p.groupingView,c=this,g,m=a.groupField.length,e,f,h,p=0;for(g=0;g<m;g++)e=a.groupField[g],h=a.displayField[g],f=b[e],h=null==h?null:b[h],null==h&&(h=f),void 0!==f&&(0===k?(a.groups.push({idx:g,dataIndex:e,value:f,displayValue:h,startRow:k, -cnt:1,summary:[]}),a.lastvalues[g]=f,a.counters[g]={cnt:1,pos:a.groups.length-1,summary:d.extend(!0,[],a.summary)}):"object"===typeof f||(d.isArray(a.isInTheSameGroup)&&d.isFunction(a.isInTheSameGroup[g])?a.isInTheSameGroup[g].call(c,a.lastvalues[g],f,g,a):a.lastvalues[g]===f)?1===p?(a.groups.push({idx:g,dataIndex:e,value:f,displayValue:h,startRow:k,cnt:1,summary:[]}),a.lastvalues[g]=f,a.counters[g]={cnt:1,pos:a.groups.length-1,summary:d.extend(!0,[],a.summary)}):(a.counters[g].cnt+=1,a.groups[a.counters[g].pos].cnt= -a.counters[g].cnt):(a.groups.push({idx:g,dataIndex:e,value:f,displayValue:h,startRow:k,cnt:1,summary:[]}),a.lastvalues[g]=f,p=1,a.counters[g]={cnt:1,pos:a.groups.length-1,summary:d.extend(!0,[],a.summary)}),d.each(a.counters[g].summary,function(){d.isFunction(this.st)?this.v=this.st.call(c,this.v,this.nm,b):(this.v=d(c).jqGrid("groupingCalculations.handler",this.st,this.v,this.nm,this.sr,this.srt,b),"avg"===this.st.toLowerCase()&&this.sd&&(this.vd=d(c).jqGrid("groupingCalculations.handler",this.st, -this.vd,this.sd,this.sr,this.srt,b)))}),a.groups[a.counters[g].pos].summary=a.counters[g].summary)});return this},groupingToggle:function(b){this.each(function(){var k=this.p.groupingView,a=b.split("_"),c=parseInt(a[a.length-2],10);a.splice(a.length-2,2);var g=a.join("_"),a=k.minusicon,m=k.plusicon,e=d("#"+d.jgrid.jqID(b)),e=e.length?e[0].nextSibling:null,f=d("#"+d.jgrid.jqID(b)+" span.tree-wrap-"+this.p.direction),h=function(a){a=d.map(a.split(" "),function(a){if(a.substring(0,g.length+1)===g+"_")return parseInt(a.substring(g.length+ -1),10)});return 0<a.length?a[0]:void 0},p,r=!1,q=this.p.frozenColumns?this.p.id+"_frozen":!1,n=q?d("#"+d.jgrid.jqID(b),"#"+d.jgrid.jqID(q)):!1,n=n&&n.length?n[0].nextSibling:null;if(f.hasClass(a)){if(k.showSummaryOnHide){if(e)for(;e&&!(d(e).hasClass("jqfoot")&&parseInt(d(e).attr("jqfootlevel"),10)<=c);)d(e).hide(),e=e.nextSibling,q&&(d(n).hide(),n=n.nextSibling)}else if(e)for(;e;){k=h(e.className);if(void 0!==k&&k<=c)break;d(e).hide();e=e.nextSibling;q&&(d(n).hide(),n=n.nextSibling)}f.removeClass(a).addClass(m); -r=!0}else{if(e)for(p=void 0;e;){k=h(e.className);void 0===p&&(p=void 0===k);if(void 0!==k){if(k<=c)break;k===c+1&&(d(e).show().find(">td>span.tree-wrap-"+this.p.direction).removeClass(a).addClass(m),q&&d(n).show().find(">td>span.tree-wrap-"+this.p.direction).removeClass(a).addClass(m))}else p&&(d(e).show(),q&&d(n).show());e=e.nextSibling;q&&(n=n.nextSibling)}f.removeClass(m).addClass(a)}d(this).triggerHandler("jqGridGroupingClickGroup",[b,r]);d.isFunction(this.p.onClickGroup)&&this.p.onClickGroup.call(this, -b,r)});return!1},groupingRender:function(b,k,a,c){return this.each(function(){function g(a,b,c){var d=!1;if(0===b)d=c[a];else{var e=c[a].idx;if(0===e)d=c[a];else for(;0<=a;a--)if(c[a].idx===e-b){d=c[a];break}}return d}function m(a,b,c,f){var h=g(a,b,c),m=e.p.colModel,n,q=h.cnt;a="";var p;for(p=f;p<k;p++){var r="<td "+e.formatCol(p,1,"")+">&#160;</td>",t="{0}";d.each(h.summary,function(){if(this.nm===m[p].name){m[p].summaryTpl&&(t=m[p].summaryTpl);"string"===typeof this.st&&"avg"===this.st.toLowerCase()&& -(this.sd&&this.vd?this.v/=this.vd:this.v&&0<q&&(this.v/=q));try{this.groupCount=h.cnt,this.groupIndex=h.dataIndex,this.groupValue=h.value,n=e.formatter("",this.v,p,this)}catch(a){n=this.v}r="<td "+e.formatCol(p,1,"")+">"+d.jgrid.format(t,n)+"</td>";return!1}});a+=r}return a}var e=this,f=e.p.groupingView,h="",p="",r,q,n=f.groupCollapse?f.plusicon:f.minusicon,t,y=[],z=f.groupField.length,n=n+(" tree-wrap-"+e.p.direction);d.each(e.p.colModel,function(a,b){var c;for(c=0;c<z;c++)if(f.groupField[c]===b.name){y[c]= -a;break}});var x=0,A=d.makeArray(f.groupSummary);A.reverse();d.each(f.groups,function(g,l){if(f._locgr&&!(l.startRow+l.cnt>(a-1)*c&&l.startRow<a*c))return!0;x++;q=e.p.id+"ghead_"+l.idx;r=q+"_"+g;p="<span style='cursor:pointer;' class='ui-icon "+n+"' onclick=\"jQuery('#"+d.jgrid.jqID(e.p.id)+"').jqGrid('groupingToggle','"+r+"');return false;\"></span>";try{d.isArray(f.formatDisplayField)&&d.isFunction(f.formatDisplayField[l.idx])?(l.displayValue=f.formatDisplayField[l.idx].call(e,l.displayValue,l.value, -e.p.colModel[y[l.idx]],l.idx,f),t=l.displayValue):t=e.formatter(r,l.displayValue,y[l.idx],l.value)}catch(C){t=l.displayValue}"header"===f.groupSummaryPos[l.idx]?(h+='<tr id="'+r+'"'+(f.groupCollapse&&0<l.idx?' style="display:none;" ':" ")+'role="row" class= "ui-widget-content jqgroup ui-row-'+e.p.direction+" "+q+'"><td style="padding-left:'+12*l.idx+'px;">'+p+d.jgrid.template(f.groupText[l.idx],t,l.cnt,l.summary)+"</td>",h+=m(g,l.idx-1,f.groups,1),h+="</tr>"):h+='<tr id="'+r+'"'+(f.groupCollapse&& -0<l.idx?' style="display:none;" ':" ")+'role="row" class= "ui-widget-content jqgroup ui-row-'+e.p.direction+" "+q+'"><td style="padding-left:'+12*l.idx+'px;" colspan="'+k+'">'+p+d.jgrid.template(f.groupText[l.idx],t,l.cnt,l.summary)+"</td></tr>";if(z-1===l.idx){var s=f.groups[g+1],v,u=0;v=l.startRow;var B=void 0!==s?f.groups[g+1].startRow:b.length;f._locgr&&(u=(a-1)*c,u>l.startRow&&(v=u));for(;v<B&&b[v-u];v++)h+=b[v-u].join("");if("header"!==f.groupSummaryPos[l.idx]){var w;if(void 0!==s){for(w=0;w< -f.groupField.length&&s.dataIndex!==f.groupField[w];w++);x=f.groupField.length-w}for(s=0;s<x;s++)A[s]&&(u="",f.groupCollapse&&!f.showSummaryOnHide&&(u=' style="display:none;"'),h+="<tr"+u+' jqfootlevel="'+(l.idx-s)+'" role="row" class="ui-widget-content jqfoot ui-row-'+e.p.direction+'">',h+=m(g,s,f.groups,0),h+="</tr>");x=w}}});d("#"+d.jgrid.jqID(e.p.id)+" tbody:first").append(h);h=null})},groupingGroupBy:function(b,k){return this.each(function(){"string"===typeof b&&(b=[b]);var a=this.p.groupingView; -this.p.grouping=!0;void 0===a.visibiltyOnNextGrouping&&(a.visibiltyOnNextGrouping=[]);var c;for(c=0;c<a.groupField.length;c++)!a.groupColumnShow[c]&&a.visibiltyOnNextGrouping[c]&&d(this).jqGrid("showCol",a.groupField[c]);for(c=0;c<b.length;c++)a.visibiltyOnNextGrouping[c]=d("#"+d.jgrid.jqID(this.p.id)+"_"+d.jgrid.jqID(b[c])).is(":visible");this.p.groupingView=d.extend(this.p.groupingView,k||{});a.groupField=b;d(this).trigger("reloadGrid")})},groupingRemove:function(b){return this.each(function(){void 0=== -b&&(b=!0);this.p.grouping=!1;if(!0===b){var k=this.p.groupingView,a;for(a=0;a<k.groupField.length;a++)!k.groupColumnShow[a]&&k.visibiltyOnNextGrouping[a]&&d(this).jqGrid("showCol",k.groupField);d("tr.jqgroup, tr.jqfoot","#"+d.jgrid.jqID(this.p.id)+" tbody:first").remove();d("tr.jqgrow:hidden","#"+d.jgrid.jqID(this.p.id)+" tbody:first").show()}else d(this).trigger("reloadGrid")})},groupingCalculations:{handler:function(b,d,a,c,g,m){var e={sum:function(){return parseFloat(d||0)+parseFloat(m[a]||0)}, -min:function(){return""===d?parseFloat(m[a]||0):Math.min(parseFloat(d),parseFloat(m[a]||0))},max:function(){return""===d?parseFloat(m[a]||0):Math.max(parseFloat(d),parseFloat(m[a]||0))},count:function(){""===d&&(d=0);return m.hasOwnProperty(a)?d+1:0},avg:function(){return e.sum()}};if(!e[b])throw"jqGrid Grouping No such method: "+b;b=e[b]();null!=c&&("fixed"===g?b=b.toFixed(c):(c=Math.pow(10,c),b=Math.round(b*c)/c));return b}}})})(jQuery); -(function(d){d.jgrid.extend({setTreeNode:function(b,c){return this.each(function(){var a=this;if(a.grid&&a.p.treeGrid)for(var h=a.p.expColInd,e=a.p.treeReader.expanded_field,k=a.p.treeReader.leaf_field,g=a.p.treeReader.level_field,f=a.p.treeReader.icon_field,n=a.p.treeReader.loaded,m,p,q,l;b<c;)l=d.jgrid.stripPref(a.p.idPrefix,a.rows[b].id),l=a.p.data[a.p._index[l]],"nested"!==a.p.treeGridModel||l[k]||(m=parseInt(l[a.p.treeReader.left_field],10),p=parseInt(l[a.p.treeReader.right_field],10),l[k]=p=== -m+1?"true":"false",a.rows[b].cells[a.p._treeleafpos].innerHTML=l[k]),m=parseInt(l[g],10),0===a.p.tree_root_level?(q=m+1,p=m):(q=m,p=m-1),q="<div class='tree-wrap tree-wrap-"+a.p.direction+"' style='width:"+18*q+"px;'>",q+="<div style='"+("rtl"===a.p.direction?"right:":"left:")+18*p+"px;' class='ui-icon ",void 0!==l[n]&&(l[n]="true"===l[n]||!0===l[n]?!0:!1),"true"===l[k]||!0===l[k]?(q+=(void 0!==l[f]&&""!==l[f]?l[f]:a.p.treeIcons.leaf)+" tree-leaf treeclick",l[k]=!0,p="leaf"):(l[k]=!1,p=""),l[e]=("true"=== -l[e]||!0===l[e]?!0:!1)&&(l[n]||void 0===l[n]),q=!1===l[e]?q+(!0===l[k]?"'":a.p.treeIcons.plus+" tree-plus treeclick'"):q+(!0===l[k]?"'":a.p.treeIcons.minus+" tree-minus treeclick'"),q+="></div></div>",d(a.rows[b].cells[h]).wrapInner("<span class='cell-wrapper"+p+"'></span>").prepend(q),m!==parseInt(a.p.tree_root_level,10)&&((l=(l=d(a).jqGrid("getNodeParent",l))&&l.hasOwnProperty(e)?l[e]:!0)||d(a.rows[b]).css("display","none")),d(a.rows[b].cells[h]).find("div.treeclick").bind("click",function(b){b= -d.jgrid.stripPref(a.p.idPrefix,d(b.target||b.srcElement,a.rows).closest("tr.jqgrow")[0].id);b=a.p._index[b];a.p.data[b][k]||(a.p.data[b][e]?(d(a).jqGrid("collapseRow",a.p.data[b]),d(a).jqGrid("collapseNode",a.p.data[b])):(d(a).jqGrid("expandRow",a.p.data[b]),d(a).jqGrid("expandNode",a.p.data[b])));return!1}),!0===a.p.ExpandColClick&&d(a.rows[b].cells[h]).find("span.cell-wrapper").css("cursor","pointer").bind("click",function(b){b=d.jgrid.stripPref(a.p.idPrefix,d(b.target||b.srcElement,a.rows).closest("tr.jqgrow")[0].id); -var c=a.p._index[b];a.p.data[c][k]||(a.p.data[c][e]?(d(a).jqGrid("collapseRow",a.p.data[c]),d(a).jqGrid("collapseNode",a.p.data[c])):(d(a).jqGrid("expandRow",a.p.data[c]),d(a).jqGrid("expandNode",a.p.data[c])));d(a).jqGrid("setSelection",b);return!1}),b++})},setTreeGrid:function(){return this.each(function(){var b=this,c=0,a,h=!1,e,k,g=[];if(b.p.treeGrid){b.p.treedatatype||d.extend(b.p,{treedatatype:b.p.datatype});b.p.subGrid=!1;b.p.altRows=!1;b.p.pgbuttons=!1;b.p.pginput=!1;b.p.gridview=!0;null=== -b.p.rowTotal&&(b.p.rowNum=1E4);b.p.multiselect=!1;b.p.rowList=[];b.p.expColInd=0;a="ui-icon-triangle-1-"+("rtl"===b.p.direction?"w":"e");b.p.treeIcons=d.extend({plus:a,minus:"ui-icon-triangle-1-s",leaf:"ui-icon-radio-off"},b.p.treeIcons||{});"nested"===b.p.treeGridModel?b.p.treeReader=d.extend({level_field:"level",left_field:"lft",right_field:"rgt",leaf_field:"isLeaf",expanded_field:"expanded",loaded:"loaded",icon_field:"icon"},b.p.treeReader):"adjacency"===b.p.treeGridModel&&(b.p.treeReader=d.extend({level_field:"level", -parent_id_field:"parent",leaf_field:"isLeaf",expanded_field:"expanded",loaded:"loaded",icon_field:"icon"},b.p.treeReader));for(e in b.p.colModel)if(b.p.colModel.hasOwnProperty(e))for(k in a=b.p.colModel[e].name,a!==b.p.ExpandColumn||h||(h=!0,b.p.expColInd=c),c++,b.p.treeReader)b.p.treeReader.hasOwnProperty(k)&&b.p.treeReader[k]===a&&g.push(a);d.each(b.p.treeReader,function(a,e){e&&-1===d.inArray(e,g)&&("leaf_field"===a&&(b.p._treeleafpos=c),c++,b.p.colNames.push(e),b.p.colModel.push({name:e,width:1, -hidden:!0,sortable:!1,resizable:!1,hidedlg:!0,editable:!0,search:!1}))})}})},expandRow:function(b){this.each(function(){var c=this;if(c.grid&&c.p.treeGrid){var a=d(c).jqGrid("getNodeChildren",b),h=c.p.treeReader.expanded_field;d(a).each(function(){var a=c.p.idPrefix+d.jgrid.getAccessor(this,c.p.localReader.id);d(d(c).jqGrid("getGridRowById",a)).css("display","");this[h]&&d(c).jqGrid("expandRow",this)})}})},collapseRow:function(b){this.each(function(){var c=this;if(c.grid&&c.p.treeGrid){var a=d(c).jqGrid("getNodeChildren", -b),h=c.p.treeReader.expanded_field;d(a).each(function(){var a=c.p.idPrefix+d.jgrid.getAccessor(this,c.p.localReader.id);d(d(c).jqGrid("getGridRowById",a)).css("display","none");this[h]&&d(c).jqGrid("collapseRow",this)})}})},getRootNodes:function(){var b=[];this.each(function(){var c=this;if(c.grid&&c.p.treeGrid)switch(c.p.treeGridModel){case "nested":var a=c.p.treeReader.level_field;d(c.p.data).each(function(){parseInt(this[a],10)===parseInt(c.p.tree_root_level,10)&&b.push(this)});break;case "adjacency":var h= -c.p.treeReader.parent_id_field;d(c.p.data).each(function(){null!==this[h]&&"null"!==String(this[h]).toLowerCase()||b.push(this)})}});return b},getNodeDepth:function(b){var c=null;this.each(function(){if(this.grid&&this.p.treeGrid)switch(this.p.treeGridModel){case "nested":c=parseInt(b[this.p.treeReader.level_field],10)-parseInt(this.p.tree_root_level,10);break;case "adjacency":c=d(this).jqGrid("getNodeAncestors",b).length}});return c},getNodeParent:function(b){var c=null;this.each(function(){var a= -this;if(a.grid&&a.p.treeGrid)switch(a.p.treeGridModel){case "nested":var h=a.p.treeReader.left_field,e=a.p.treeReader.right_field,k=a.p.treeReader.level_field,g=parseInt(b[h],10),f=parseInt(b[e],10),n=parseInt(b[k],10);d(this.p.data).each(function(){if(parseInt(this[k],10)===n-1&&parseInt(this[h],10)<g&&parseInt(this[e],10)>f)return c=this,!1});break;case "adjacency":var m=a.p.treeReader.parent_id_field,p=a.p.localReader.id;d(this.p.data).each(function(){if(this[p]===d.jgrid.stripPref(a.p.idPrefix, -b[m]))return c=this,!1})}});return c},getNodeChildren:function(b){var c=[];this.each(function(){var a=this;if(a.grid&&a.p.treeGrid)switch(a.p.treeGridModel){case "nested":var h=a.p.treeReader.left_field,e=a.p.treeReader.right_field,k=a.p.treeReader.level_field,g=parseInt(b[h],10),f=parseInt(b[e],10),n=parseInt(b[k],10);d(this.p.data).each(function(){parseInt(this[k],10)===n+1&&parseInt(this[h],10)>g&&parseInt(this[e],10)<f&&c.push(this)});break;case "adjacency":var m=a.p.treeReader.parent_id_field, -p=a.p.localReader.id;d(this.p.data).each(function(){this[m]==d.jgrid.stripPref(a.p.idPrefix,b[p])&&c.push(this)})}});return c},getFullTreeNode:function(b){var c=[];this.each(function(){var a=this,h;if(a.grid&&a.p.treeGrid)switch(a.p.treeGridModel){case "nested":var e=a.p.treeReader.left_field,k=a.p.treeReader.right_field,g=a.p.treeReader.level_field,f=parseInt(b[e],10),n=parseInt(b[k],10),m=parseInt(b[g],10);d(this.p.data).each(function(){parseInt(this[g],10)>=m&&parseInt(this[e],10)>=f&&parseInt(this[e], -10)<=n&&c.push(this)});break;case "adjacency":if(b){c.push(b);var p=a.p.treeReader.parent_id_field,q=a.p.localReader.id;d(this.p.data).each(function(b){h=c.length;for(b=0;b<h;b++)if(d.jgrid.stripPref(a.p.idPrefix,c[b][q])===this[p]){c.push(this);break}})}}});return c},getNodeAncestors:function(b){var c=[];this.each(function(){if(this.grid&&this.p.treeGrid)for(var a=d(this).jqGrid("getNodeParent",b);a;)c.push(a),a=d(this).jqGrid("getNodeParent",a)});return c},isVisibleNode:function(b){var c=!0;this.each(function(){if(this.grid&& -this.p.treeGrid){var a=d(this).jqGrid("getNodeAncestors",b),h=this.p.treeReader.expanded_field;d(a).each(function(){c=c&&this[h];if(!c)return!1})}});return c},isNodeLoaded:function(b){var c;this.each(function(){if(this.grid&&this.p.treeGrid){var a=this.p.treeReader.leaf_field,h=this.p.treeReader.loaded;c=void 0!==b?void 0!==b[h]?b[h]:b[a]||0<d(this).jqGrid("getNodeChildren",b).length?!0:!1:!1}});return c},expandNode:function(b){return this.each(function(){if(this.grid&&this.p.treeGrid){var c=this.p.treeReader.expanded_field, -a=this.p.treeReader.parent_id_field,h=this.p.treeReader.loaded,e=this.p.treeReader.level_field,k=this.p.treeReader.left_field,g=this.p.treeReader.right_field;if(!b[c]){var f=d.jgrid.getAccessor(b,this.p.localReader.id),n=d("#"+this.p.idPrefix+d.jgrid.jqID(f),this.grid.bDiv)[0],m=this.p._index[f];d(this).jqGrid("isNodeLoaded",this.p.data[m])?(b[c]=!0,d("div.treeclick",n).removeClass(this.p.treeIcons.plus+" tree-plus").addClass(this.p.treeIcons.minus+" tree-minus")):this.grid.hDiv.loading||(b[c]=!0, -d("div.treeclick",n).removeClass(this.p.treeIcons.plus+" tree-plus").addClass(this.p.treeIcons.minus+" tree-minus"),this.p.treeANode=n.rowIndex,this.p.datatype=this.p.treedatatype,"nested"===this.p.treeGridModel?d(this).jqGrid("setGridParam",{postData:{nodeid:f,n_left:b[k],n_right:b[g],n_level:b[e]}}):d(this).jqGrid("setGridParam",{postData:{nodeid:f,parentid:b[a],n_level:b[e]}}),d(this).trigger("reloadGrid"),b[h]=!0,"nested"===this.p.treeGridModel?d(this).jqGrid("setGridParam",{postData:{nodeid:"", -n_left:"",n_right:"",n_level:""}}):d(this).jqGrid("setGridParam",{postData:{nodeid:"",parentid:"",n_level:""}}))}}})},collapseNode:function(b){return this.each(function(){if(this.grid&&this.p.treeGrid){var c=this.p.treeReader.expanded_field;b[c]&&(b[c]=!1,c=d.jgrid.getAccessor(b,this.p.localReader.id),c=d("#"+this.p.idPrefix+d.jgrid.jqID(c),this.grid.bDiv)[0],d("div.treeclick",c).removeClass(this.p.treeIcons.minus+" tree-minus").addClass(this.p.treeIcons.plus+" tree-plus"))}})},SortTree:function(b, -c,a,h){return this.each(function(){if(this.grid&&this.p.treeGrid){var e,k,g,f=[],n=this,m;e=d(this).jqGrid("getRootNodes");e=d.jgrid.from(e);e.orderBy(b,c,a,h);m=e.select();e=0;for(k=m.length;e<k;e++)g=m[e],f.push(g),d(this).jqGrid("collectChildrenSortTree",f,g,b,c,a,h);d.each(f,function(a){var b=d.jgrid.getAccessor(this,n.p.localReader.id);d("#"+d.jgrid.jqID(n.p.id)+" tbody tr:eq("+a+")").after(d("tr#"+d.jgrid.jqID(b),n.grid.bDiv))});f=m=e=null}})},collectChildrenSortTree:function(b,c,a,h,e,k){return this.each(function(){if(this.grid&& -this.p.treeGrid){var g,f,n,m;g=d(this).jqGrid("getNodeChildren",c);g=d.jgrid.from(g);g.orderBy(a,h,e,k);m=g.select();g=0;for(f=m.length;g<f;g++)n=m[g],b.push(n),d(this).jqGrid("collectChildrenSortTree",b,n,a,h,e,k)}})},setTreeRow:function(b,c){var a=!1;this.each(function(){this.grid&&this.p.treeGrid&&(a=d(this).jqGrid("setRowData",b,c))});return a},delTreeNode:function(b){return this.each(function(){var c=this.p.localReader.id,a,h=this.p.treeReader.left_field,e=this.p.treeReader.right_field,k,g,f; -if(this.grid&&this.p.treeGrid&&(a=this.p._index[b],void 0!==a)){k=parseInt(this.p.data[a][e],10);g=k-parseInt(this.p.data[a][h],10)+1;var n=d(this).jqGrid("getFullTreeNode",this.p.data[a]);if(0<n.length)for(a=0;a<n.length;a++)d(this).jqGrid("delRowData",n[a][c]);if("nested"===this.p.treeGridModel){c=d.jgrid.from(this.p.data).greater(h,k,{stype:"integer"}).select();if(c.length)for(f in c)c.hasOwnProperty(f)&&(c[f][h]=parseInt(c[f][h],10)-g);c=d.jgrid.from(this.p.data).greater(e,k,{stype:"integer"}).select(); -if(c.length)for(f in c)c.hasOwnProperty(f)&&(c[f][e]=parseInt(c[f][e],10)-g)}}})},addChildNode:function(b,c,a,h){var e=this[0];if(a){var k=e.p.treeReader.expanded_field,g=e.p.treeReader.leaf_field,f=e.p.treeReader.level_field,n=e.p.treeReader.parent_id_field,m=e.p.treeReader.left_field,p=e.p.treeReader.right_field,q=e.p.treeReader.loaded,l,u,t,w,s;l=0;var v=c,x;void 0===h&&(h=!1);if(void 0===b||null===b){s=e.p.data.length-1;if(0<=s)for(;0<=s;)l=Math.max(l,parseInt(e.p.data[s][e.p.localReader.id], -10)),s--;b=l+1}var y=d(e).jqGrid("getInd",c);x=!1;void 0===c||null===c||""===c?(v=c=null,l="last",w=e.p.tree_root_level,s=e.p.data.length+1):(l="after",u=e.p._index[c],t=e.p.data[u],c=t[e.p.localReader.id],w=parseInt(t[f],10)+1,s=d(e).jqGrid("getFullTreeNode",t),s.length?(v=s=s[s.length-1][e.p.localReader.id],s=d(e).jqGrid("getInd",v)+1):s=d(e).jqGrid("getInd",c)+1,t[g]&&(x=!0,t[k]=!0,d(e.rows[y]).find("span.cell-wrapperleaf").removeClass("cell-wrapperleaf").addClass("cell-wrapper").end().find("div.tree-leaf").removeClass(e.p.treeIcons.leaf+ -" tree-leaf").addClass(e.p.treeIcons.minus+" tree-minus"),e.p.data[u][g]=!1,t[q]=!0));u=s+1;void 0===a[k]&&(a[k]=!1);void 0===a[q]&&(a[q]=!1);a[f]=w;void 0===a[g]&&(a[g]=!0);"adjacency"===e.p.treeGridModel&&(a[n]=c);if("nested"===e.p.treeGridModel){var r;if(null!==c){g=parseInt(t[p],10);f=d.jgrid.from(e.p.data);f=f.greaterOrEquals(p,g,{stype:"integer"});f=f.select();if(f.length)for(r in f)f.hasOwnProperty(r)&&(f[r][m]=f[r][m]>g?parseInt(f[r][m],10)+2:f[r][m],f[r][p]=f[r][p]>=g?parseInt(f[r][p],10)+ -2:f[r][p]);a[m]=g;a[p]=g+1}else{g=parseInt(d(e).jqGrid("getCol",p,!1,"max"),10);f=d.jgrid.from(e.p.data).greater(m,g,{stype:"integer"}).select();if(f.length)for(r in f)f.hasOwnProperty(r)&&(f[r][m]=parseInt(f[r][m],10)+2);f=d.jgrid.from(e.p.data).greater(p,g,{stype:"integer"}).select();if(f.length)for(r in f)f.hasOwnProperty(r)&&(f[r][p]=parseInt(f[r][p],10)+2);a[m]=g+1;a[p]=g+2}}if(null===c||d(e).jqGrid("isNodeLoaded",t)||x)d(e).jqGrid("addRowData",b,a,l,v),d(e).jqGrid("setTreeNode",s,u);t&&!t[k]&& -h&&d(e.rows[y]).find("div.treeclick").click()}}})})(jQuery); -(function(d){function I(d,n){var h,e,v=[],r;if(!this||"function"!==typeof d||d instanceof RegExp)throw new TypeError;r=this.length;for(h=0;h<r;h++)if(this.hasOwnProperty(h)&&(e=this[h],d.call(n,e,h,this))){v.push(e);break}return v}d.assocArraySize=function(d){var n=0,h;for(h in d)d.hasOwnProperty(h)&&n++;return n};d.jgrid.extend({pivotSetup:function(q,n){var h=[],e=[],v=[],r=[],b={grouping:!0,groupingView:{groupField:[],groupSummary:[],groupSummaryPos:[]}},f=[],c=d.extend({rowTotals:!1,rowTotalsText:"Total", -colTotals:!1,groupSummary:!0,groupSummaryPos:"header",frozenStaticCols:!1},n||{});this.each(function(){function n(C,c,a){C=I.call(C,c,a);return 0<C.length?C[0]:null}function J(c,a){var d=0,f=!0,h;for(h in c){if(c[h]!=this[d]){f=!1;break}d++;if(d>=this.length)break}f&&(D=a);return f}function E(c,a,f,h){var g=a.length,b,k,e,l;l=d.isArray(f)?f.length:1;r=[];for(e=r.root=0;e<l;e++){var n=[],m;for(b=0;b<g;b++){if(null==f)m=k=d.trim(a[b].member)+"_"+a[b].aggregator;else{m=f[e].replace(/\s+/g,"");try{k= -1===g?m:m+"_"+a[b].aggregator+"_"+b}catch(v){}}var t=h,u=k,x=n,y=k,w=h[k],p=a[b].member,q=c,s=void 0;switch(a[b].aggregator){case "sum":s=parseFloat(w||0)+parseFloat(q[p]||0);break;case "count":if(""===w||null==w)w=0;s=q.hasOwnProperty(p)?w+1:0;break;case "min":s=""===w||null==w?parseFloat(q[p]||0):Math.min(parseFloat(w),parseFloat(q[p]||0));break;case "max":s=""===w||null==w?parseFloat(q[p]||0):Math.max(parseFloat(w),parseFloat(q[p]||0))}t[u]=x[y]=s}r[m]=n}return h}function H(a){var d,b,g,k,e;for(g in a)if(a.hasOwnProperty(g)){if("object"!== -typeof a[g]&&("level"===g&&(void 0===F[a.level]&&(F[a.level]="",0<a.level&&"_r_Totals"!==a.text&&(f[a.level-1]={useColSpanStyle:!1,groupHeaders:[]})),F[a.level]!==a.text&&a.children.length&&"_r_Totals"!==a.text&&0<a.level&&(f[a.level-1].groupHeaders.push({titleText:a.text}),b=f[a.level-1].groupHeaders.length,e=1===b?K:G+(b-1)*z,f[a.level-1].groupHeaders[b-1].startColumnName=h[e].name,f[a.level-1].groupHeaders[b-1].numberOfColumns=h.length-e,G=h.length),F[a.level]=a.text),a.level===l&&"level"===g&& -0<l))if(1<z){b=1;for(d in a.fields)1===b&&f[l-1].groupHeaders.push({startColumnName:d,numberOfColumns:1,titleText:a.text}),b++;f[l-1].groupHeaders[f[l-1].groupHeaders.length-1].numberOfColumns=b-1}else f.splice(l-1,1);null!=a[g]&&"object"===typeof a[g]&&H(a[g]);if("level"===g&&0<a.level)for(d in b=0,a.fields){e={};for(k in c.aggregates[b])if(c.aggregates[b].hasOwnProperty(k))switch(k){case "member":case "label":case "aggregator":break;default:e[k]=c.aggregates[b][k]}1<z?(e.name=d,e.label=c.aggregates[b].label|| -d):(e.name=a.text,e.label="_r_Totals"===a.text?c.rowTotalsText:a.text);h.push(e);b++}}}var m,D,a,y=q.length,s,l,z,k,p=0;c.rowTotals&&0<c.yDimension.length&&(c.yDimension.splice(0,0,{dataName:c.yDimension[0].dataName}),c.yDimension[0].converter=function(){return"_r_Totals"});s=d.isArray(c.xDimension)?c.xDimension.length:0;l=c.yDimension.length;z=d.isArray(c.aggregates)?c.aggregates.length:0;if(0===s||0===z)throw"xDimension or aggregates optiona are not set!";var x;for(a=0;a<s;a++)x={name:c.xDimension[a].dataName, -frozen:c.frozenStaticCols},x=d.extend(!0,x,c.xDimension[a]),h.push(x);x=s-1;for(var A={};p<y;){m=q[p];var t=[],u=[];k={};a=0;do t[a]=d.trim(m[c.xDimension[a].dataName]),k[c.xDimension[a].dataName]=t[a],a++;while(a<s);var g=0;D=-1;a=n(e,J,t);if(!a){g=0;if(1<=l){for(g=0;g<l;g++)u[g]=d.trim(m[c.yDimension[g].dataName]),c.yDimension[g].converter&&d.isFunction(c.yDimension[g].converter)&&(u[g]=c.yDimension[g].converter.call(this,u[g],t,u));k=E(m,c.aggregates,u,k)}else 0===l&&(k=E(m,c.aggregates,null,k)); -e.push(k)}else if(0<=D){g=0;if(1<=l){for(g=0;g<l;g++)u[g]=d.trim(m[c.yDimension[g].dataName]),c.yDimension[g].converter&&d.isFunction(c.yDimension[g].converter)&&(u[g]=c.yDimension[g].converter.call(this,u[g],t,u));a=E(m,c.aggregates,u,a)}else 0===l&&(a=E(m,c.aggregates,null,a));e[D]=a}m=0;var t=k=null,B;for(B in r){if(0===m)A.children&&void 0!==A.children||(A={text:B,level:0,children:[]}),k=A.children;else{t=null;for(a=0;a<k.length;a++)if(k[a].text===B){t=k[a];break}t?k=t.children:(k.push({children:[], -text:B,level:m,fields:r[B]}),k=k[k.length-1].children)}m++}p++}var F=[],G=h.length,K=G;0<l&&(f[l-1]={useColSpanStyle:!1,groupHeaders:[]});H(A,0);if(c.colTotals)for(p=e.length;p--;)for(a=s;a<h.length;a++)y=h[a].name,v[y]=v[y]?v[y]+parseFloat(e[p][y]||0):parseFloat(e[p][y]||0);if(0<x)for(a=0;a<x;a++)b.groupingView.groupField[a]=h[a].name,b.groupingView.groupSummary[a]=c.groupSummary,b.groupingView.groupSummaryPos[a]=c.groupSummaryPos;else b.grouping=!1;b.sortname=h[x].name;b.groupingView.hideFirstGroupCol= -!0});return{colModel:h,rows:e,groupOptions:b,groupHeaders:f,summary:v}},jqPivot:function(q,n,h,e){return this.each(function(){function v(b){var f=jQuery(r).jqGrid("pivotSetup",b,n),c=0<d.assocArraySize(f.summary)?!0:!1,e=d.jgrid.from(f.rows);for(b=0;b<f.groupOptions.groupingView.groupField.length;b++)e.orderBy(f.groupOptions.groupingView.groupField[b],"a","text","");jQuery(r).jqGrid(d.extend({datastr:d.extend(e.select(),c?{userdata:f.summary}:{}),datatype:"jsonstring",footerrow:c,userDataOnFooter:c, -colModel:f.colModel,viewrecords:!0,sortname:n.xDimension[0].dataName},h||{},f.groupOptions));f=f.groupHeaders;if(f.length)for(b=0;b<f.length;b++)f[b]&&f[b].groupHeaders.length&&jQuery(r).jqGrid("setGroupHeaders",f[b]);n.frozenStaticCols&&jQuery(r).jqGrid("setFrozenColumns")}var r=this;"string"===typeof q?d.ajax(d.extend({url:q,dataType:"json",success:function(b){v(d.jgrid.getAccessor(b,e&&e.reader?e.reader:"rows"))}},e||{})):v(q)})}})})(jQuery); -(function(c){c.jgrid.extend({jqGridImport:function(a){a=c.extend({imptype:"xml",impstring:"",impurl:"",mtype:"GET",impData:{},xmlGrid:{config:"roots>grid",data:"roots>rows"},jsonGrid:{config:"grid",data:"data"},ajaxOptions:{}},a||{});return this.each(function(){var d=this,f=function(a,b){var e=c(b.xmlGrid.config,a)[0],h=c(b.xmlGrid.data,a)[0],f,g;if(xmlJsonClass.xml2json&&c.jgrid.parse){e=xmlJsonClass.xml2json(e," ");e=c.jgrid.parse(e);for(g in e)e.hasOwnProperty(g)&&(f=e[g]);h?(h=e.grid.datatype, -e.grid.datatype="xmlstring",e.grid.datastr=a,c(d).jqGrid(f).jqGrid("setGridParam",{datatype:h})):c(d).jqGrid(f)}else alert("xml2json or parse are not present")},b=function(a,b){if(a&&"string"===typeof a){var e=!1;c.jgrid.useJSON&&(c.jgrid.useJSON=!1,e=!0);var f=c.jgrid.parse(a);e&&(c.jgrid.useJSON=!0);e=f[b.jsonGrid.config];if(f=f[b.jsonGrid.data]){var g=e.datatype;e.datatype="jsonstring";e.datastr=f;c(d).jqGrid(e).jqGrid("setGridParam",{datatype:g})}else c(d).jqGrid(e)}};switch(a.imptype){case "xml":c.ajax(c.extend({url:a.impurl, -type:a.mtype,data:a.impData,dataType:"xml",complete:function(b,g){"success"===g&&(f(b.responseXML,a),c(d).triggerHandler("jqGridImportComplete",[b,a]),c.isFunction(a.importComplete)&&a.importComplete(b))}},a.ajaxOptions));break;case "xmlstring":if(a.impstring&&"string"===typeof a.impstring){var g=c.parseXML(a.impstring);g&&(f(g,a),c(d).triggerHandler("jqGridImportComplete",[g,a]),c.isFunction(a.importComplete)&&a.importComplete(g),a.impstring=null);g=null}break;case "json":c.ajax(c.extend({url:a.impurl, -type:a.mtype,data:a.impData,dataType:"json",complete:function(f){try{b(f.responseText,a),c(d).triggerHandler("jqGridImportComplete",[f,a]),c.isFunction(a.importComplete)&&a.importComplete(f)}catch(g){}}},a.ajaxOptions));break;case "jsonstring":a.impstring&&"string"===typeof a.impstring&&(b(a.impstring,a),c(d).triggerHandler("jqGridImportComplete",[a.impstring,a]),c.isFunction(a.importComplete)&&a.importComplete(a.impstring),a.impstring=null)}})},jqGridExport:function(a){a=c.extend({exptype:"xmlstring", -root:"grid",ident:"\t"},a||{});var d=null;this.each(function(){if(this.grid){var f,b=c.extend(!0,{},c(this).jqGrid("getGridParam"));b.rownumbers&&(b.colNames.splice(0,1),b.colModel.splice(0,1));b.multiselect&&(b.colNames.splice(0,1),b.colModel.splice(0,1));b.subGrid&&(b.colNames.splice(0,1),b.colModel.splice(0,1));b.knv=null;if(b.treeGrid)for(f in b.treeReader)b.treeReader.hasOwnProperty(f)&&(b.colNames.splice(b.colNames.length-1),b.colModel.splice(b.colModel.length-1));switch(a.exptype){case "xmlstring":d= -"<"+a.root+">"+xmlJsonClass.json2xml(b,a.ident)+"</"+a.root+">";break;case "jsonstring":d="{"+xmlJsonClass.toJson(b,a.root,a.ident,!1)+"}",void 0!==b.postData.filters&&(d=d.replace(/filters":"/,'filters":'),d=d.replace(/}]}"/,"}]}"))}}});return d},excelExport:function(a){a=c.extend({exptype:"remote",url:null,oper:"oper",tag:"excel",exportOptions:{}},a||{});return this.each(function(){if(this.grid){var d;"remote"===a.exptype&&(d=c.extend({},this.p.postData),d[a.oper]=a.tag,d=jQuery.param(d),d=-1!== -a.url.indexOf("?")?a.url+"&"+d:a.url+"?"+d,window.location=d)}})}})})(jQuery); -var xmlJsonClass={xml2json:function(a,b){9===a.nodeType&&(a=a.documentElement);var g=this.removeWhite(a),g=this.toObj(g),g=this.toJson(g,a.nodeName,"\t");return"{\n"+b+(b?g.replace(/\t/g,b):g.replace(/\t|\n/g,""))+"\n}"},json2xml:function(a,b){var g=function(a,b,e){var d="",f,k;if(a instanceof Array)if(0===a.length)d+=e+"<"+b+">__EMPTY_ARRAY_</"+b+">\n";else for(f=0,k=a.length;f<k;f+=1)var n=e+g(a[f],b,e+"\t")+"\n",d=d+n;else if("object"===typeof a){f=!1;d+=e+"<"+b;for(k in a)a.hasOwnProperty(k)&& -("@"===k.charAt(0)?d+=" "+k.substr(1)+'="'+a[k].toString()+'"':f=!0);d+=f?">":"/>";if(f){for(k in a)a.hasOwnProperty(k)&&("#text"===k?d+=a[k]:"#cdata"===k?d+="<![CDATA["+a[k]+"]]\x3e":"@"!==k.charAt(0)&&(d+=g(a[k],k,e+"\t")));d+=("\n"===d.charAt(d.length-1)?e:"")+"</"+b+">"}}else"function"===typeof a?d+=e+"<"+b+"><![CDATA["+a+"]]\x3e</"+b+">":(void 0===a&&(a=""),d='""'===a.toString()||0===a.toString().length?d+(e+"<"+b+">__EMPTY_STRING_</"+b+">"):d+(e+"<"+b+">"+a.toString()+"</"+b+">"));return d}, -f="",e;for(e in a)a.hasOwnProperty(e)&&(f+=g(a[e],e,""));return b?f.replace(/\t/g,b):f.replace(/\t|\n/g,"")},toObj:function(a){var b={},g=/function/i;if(1===a.nodeType){if(a.attributes.length){var f;for(f=0;f<a.attributes.length;f+=1)b["@"+a.attributes[f].nodeName]=(a.attributes[f].nodeValue||"").toString()}if(a.firstChild){var e=f=0,h=!1,c;for(c=a.firstChild;c;c=c.nextSibling)1===c.nodeType?h=!0:3===c.nodeType&&c.nodeValue.match(/[^ \f\n\r\t\v]/)?f+=1:4===c.nodeType&&(e+=1);if(h)if(2>f&&2>e)for(this.removeWhite(a), -c=a.firstChild;c;c=c.nextSibling)3===c.nodeType?b["#text"]=this.escape(c.nodeValue):4===c.nodeType?g.test(c.nodeValue)?b[c.nodeName]=[b[c.nodeName],c.nodeValue]:b["#cdata"]=this.escape(c.nodeValue):b[c.nodeName]?b[c.nodeName]instanceof Array?b[c.nodeName][b[c.nodeName].length]=this.toObj(c):b[c.nodeName]=[b[c.nodeName],this.toObj(c)]:b[c.nodeName]=this.toObj(c);else a.attributes.length?b["#text"]=this.escape(this.innerXml(a)):b=this.escape(this.innerXml(a));else if(f)a.attributes.length?b["#text"]= -this.escape(this.innerXml(a)):(b=this.escape(this.innerXml(a)),"__EMPTY_ARRAY_"===b?b="[]":"__EMPTY_STRING_"===b&&(b=""));else if(e)if(1<e)b=this.escape(this.innerXml(a));else for(c=a.firstChild;c;c=c.nextSibling)if(g.test(a.firstChild.nodeValue)){b=a.firstChild.nodeValue;break}else b["#cdata"]=this.escape(c.nodeValue)}a.attributes.length||a.firstChild||(b=null)}else 9===a.nodeType?b=this.toObj(a.documentElement):alert("unhandled node type: "+a.nodeType);return b},toJson:function(a,b,g,f){void 0=== -f&&(f=!0);var e=b?'"'+b+'"':"",h="\t",c="\n";f||(c=h="");if("[]"===a)e+=b?":[]":"[]";else if(a instanceof Array){var l,d,m=[];d=0;for(l=a.length;d<l;d+=1)m[d]=this.toJson(a[d],"",g+h,f);e+=(b?":[":"[")+(1<m.length?c+g+h+m.join(","+c+g+h)+c+g:m.join(""))+"]"}else if(null===a)e+=(b&&":")+"null";else if("object"===typeof a){l=[];for(d in a)a.hasOwnProperty(d)&&(l[l.length]=this.toJson(a[d],d,g+h,f));e+=(b?":{":"{")+(1<l.length?c+g+h+l.join(","+c+g+h)+c+g:l.join(""))+"}"}else e="string"===typeof a?e+ -((b&&":")+'"'+a.replace(/\\/g,"\\\\").replace(/\"/g,'\\"')+'"'):e+((b&&":")+a.toString());return e},innerXml:function(a){var b="";if("innerHTML"in a)b=a.innerHTML;else{var g=function(a){var b="",h;if(1===a.nodeType){b+="<"+a.nodeName;for(h=0;h<a.attributes.length;h+=1)b+=" "+a.attributes[h].nodeName+'="'+(a.attributes[h].nodeValue||"").toString()+'"';if(a.firstChild){b+=">";for(h=a.firstChild;h;h=h.nextSibling)b+=g(h);b+="</"+a.nodeName+">"}else b+="/>"}else 3===a.nodeType?b+=a.nodeValue:4===a.nodeType&& -(b+="<![CDATA["+a.nodeValue+"]]\x3e");return b};for(a=a.firstChild;a;a=a.nextSibling)b+=g(a)}return b},escape:function(a){return a.replace(/[\\]/g,"\\\\").replace(/[\"]/g,'\\"').replace(/[\n]/g,"\\n").replace(/[\r]/g,"\\r")},removeWhite:function(a){a.normalize();var b;for(b=a.firstChild;b;)if(3===b.nodeType)if(b.nodeValue.match(/[^ \f\n\r\t\v]/))b=b.nextSibling;else{var g=b.nextSibling;a.removeChild(b);b=g}else 1===b.nodeType&&this.removeWhite(b),b=b.nextSibling;return a}}; -function tableToGrid(l,m){jQuery(l).each(function(){if(!this.grid){jQuery(this).width("99%");var b=jQuery(this).width(),c=jQuery("tr td:first-child input[type=checkbox]:first",jQuery(this)),a=jQuery("tr td:first-child input[type=radio]:first",jQuery(this)),c=0<c.length,a=!c&&0<a.length,k=c||a,d=[],e=[];jQuery("th",jQuery(this)).each(function(){0===d.length&&k?(d.push({name:"__selection__",index:"__selection__",width:0,hidden:!0}),e.push("__selection__")):(d.push({name:jQuery(this).attr("id")||jQuery.trim(jQuery.jgrid.stripHtml(jQuery(this).html())).split(" ").join("_"), -index:jQuery(this).attr("id")||jQuery.trim(jQuery.jgrid.stripHtml(jQuery(this).html())).split(" ").join("_"),width:jQuery(this).width()||150}),e.push(jQuery(this).html()))});var f=[],g=[],h=[];jQuery("tbody > tr",jQuery(this)).each(function(){var b={},a=0;jQuery("td",jQuery(this)).each(function(){if(0===a&&k){var c=jQuery("input",jQuery(this)),e=c.attr("value");g.push(e||f.length);c.is(":checked")&&h.push(e);b[d[a].name]=c.attr("value")}else b[d[a].name]=jQuery(this).html();a++});0<a&&f.push(b)}); -jQuery(this).empty();jQuery(this).addClass("scroll");jQuery(this).jqGrid(jQuery.extend({datatype:"local",width:b,colNames:e,colModel:d,multiselect:c},m||{}));for(b=0;b<f.length;b++)a=null,0<g.length&&(a=g[b])&&a.replace&&(a=encodeURIComponent(a).replace(/[.\-%]/g,"_")),null===a&&(a=b+1),jQuery(this).jqGrid("addRowData",a,f[b]);for(b=0;b<h.length;b++)jQuery(this).jqGrid("setSelection",h[b])}})}; -(function(b){b.jgrid.msie&&8===b.jgrid.msiever()&&(b.expr[":"].hidden=function(b){return 0===b.offsetWidth||0===b.offsetHeight||"none"===b.style.display});b.jgrid._multiselect=!1;if(b.ui&&b.ui.multiselect){if(b.ui.multiselect.prototype._setSelected){var r=b.ui.multiselect.prototype._setSelected;b.ui.multiselect.prototype._setSelected=function(a,d){var c=r.call(this,a,d);if(d&&this.selectedList){var e=this.element;this.selectedList.find("li").each(function(){b(this).data("optionLink")&&b(this).data("optionLink").remove().appendTo(e)})}return c}}b.ui.multiselect.prototype.destroy&& -(b.ui.multiselect.prototype.destroy=function(){this.element.show();this.container.remove();void 0===b.Widget?b.widget.prototype.destroy.apply(this,arguments):b.Widget.prototype.destroy.apply(this,arguments)});b.jgrid._multiselect=!0}b.jgrid.extend({sortableColumns:function(a){return this.each(function(){function d(){c.p.disableClick=!0}var c=this,e=b.jgrid.jqID(c.p.id),e={tolerance:"pointer",axis:"x",scrollSensitivity:"1",items:">th:not(:has(#jqgh_"+e+"_cb,#jqgh_"+e+"_rn,#jqgh_"+e+"_subgrid),:hidden)", -placeholder:{element:function(a){return b(document.createElement(a[0].nodeName)).addClass(a[0].className+" ui-sortable-placeholder ui-state-highlight").removeClass("ui-sortable-helper")[0]},update:function(b,a){a.height(b.currentItem.innerHeight()-parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10));a.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")||0,10))}},update:function(a, -e){var d=b(e.item).parent(),d=b(">th",d),f={},g=c.p.id+"_";b.each(c.p.colModel,function(b){f[this.name]=b});var l=[];d.each(function(){var a=b(">div",this).get(0).id.replace(/^jqgh_/,"").replace(g,"");f.hasOwnProperty(a)&&l.push(f[a])});b(c).jqGrid("remapColumns",l,!0,!0);b.isFunction(c.p.sortable.update)&&c.p.sortable.update(l);setTimeout(function(){c.p.disableClick=!1},50)}};c.p.sortable.options?b.extend(e,c.p.sortable.options):b.isFunction(c.p.sortable)&&(c.p.sortable={update:c.p.sortable});if(e.start){var g= -e.start;e.start=function(b,a){d();g.call(this,b,a)}}else e.start=d;c.p.sortable.exclude&&(e.items+=":not("+c.p.sortable.exclude+")");a.sortable(e).data("sortable").floating=!0})},columnChooser:function(a){function d(a,c){a&&("string"===typeof a?b.fn[a]&&b.fn[a].apply(c,b.makeArray(arguments).slice(2)):b.isFunction(a)&&a.apply(c,b.makeArray(arguments).slice(2)))}var c=this;if(!b("#colchooser_"+b.jgrid.jqID(c[0].p.id)).length){var e=b('<div id="colchooser_'+c[0].p.id+'" style="position:relative;overflow:hidden"><div><select multiple="multiple"></select></div></div>'), -g=b("select",e);a=b.extend({width:420,height:240,classname:null,done:function(b){b&&c.jqGrid("remapColumns",b,!0)},msel:"multiselect",dlog:"dialog",dialog_opts:{minWidth:470},dlog_opts:function(a){var c={};c[a.bSubmit]=function(){a.apply_perm();a.cleanup(!1)};c[a.bCancel]=function(){a.cleanup(!0)};return b.extend(!0,{buttons:c,close:function(){a.cleanup(!0)},modal:a.modal||!1,resizable:a.resizable||!0,width:a.width+20},a.dialog_opts||{})},apply_perm:function(){b("option",g).each(function(){this.selected? -c.jqGrid("showCol",k[this.value].name):c.jqGrid("hideCol",k[this.value].name)});var e=[];b("option:selected",g).each(function(){e.push(parseInt(this.value,10))});b.each(e,function(){delete p[k[parseInt(this,10)].name]});b.each(p,function(){var b=parseInt(this,10);var a=e,c=b;if(0<=c){var d=a.slice(),k=d.splice(c,Math.max(a.length-c,c));c>a.length&&(c=a.length);d[c]=b;e=d.concat(k)}else e=void 0});a.done&&a.done.call(c,e)},cleanup:function(b){d(a.dlog,e,"destroy");d(a.msel,g,"destroy");e.remove(); -b&&a.done&&a.done.call(c)},msel_opts:{}},b.jgrid.col,a||{});if(b.ui&&b.ui.multiselect&&"multiselect"===a.msel){if(!b.jgrid._multiselect){alert("Multiselect plugin loaded after jqGrid. Please load the plugin before the jqGrid!");return}a.msel_opts=b.extend(b.ui.multiselect.defaults,a.msel_opts)}a.caption&&e.attr("title",a.caption);a.classname&&(e.addClass(a.classname),g.addClass(a.classname));a.width&&(b(">div",e).css({width:a.width,margin:"0 auto"}),g.css("width",a.width));a.height&&(b(">div",e).css("height", -a.height),g.css("height",a.height-10));var k=c.jqGrid("getGridParam","colModel"),t=c.jqGrid("getGridParam","colNames"),p={},f=[];g.empty();b.each(k,function(a){p[this.name]=a;this.hidedlg?this.hidden||f.push(a):g.append("<option value='"+a+"' "+(this.hidden?"":"selected='selected'")+">"+b.jgrid.stripHtml(t[a])+"</option>")});var q=b.isFunction(a.dlog_opts)?a.dlog_opts.call(c,a):a.dlog_opts;d(a.dlog,e,q);q=b.isFunction(a.msel_opts)?a.msel_opts.call(c,a):a.msel_opts;d(a.msel,g,q)}},sortableRows:function(a){return this.each(function(){var d= -this;d.grid&&!d.p.treeGrid&&b.fn.sortable&&(a=b.extend({cursor:"move",axis:"y",items:".jqgrow"},a||{}),a.start&&b.isFunction(a.start)?(a._start_=a.start,delete a.start):a._start_=!1,a.update&&b.isFunction(a.update)?(a._update_=a.update,delete a.update):a._update_=!1,a.start=function(c,e){b(e.item).css("border-width","0");b("td",e.item).each(function(b){this.style.width=d.grid.cols[b].style.width});if(d.p.subGrid){var g=b(e.item).attr("id");try{b(d).jqGrid("collapseSubGridRow",g)}catch(k){}}a._start_&& -a._start_.apply(this,[c,e])},a.update=function(c,e){b(e.item).css("border-width","");!0===d.p.rownumbers&&b("td.jqgrid-rownum",d.rows).each(function(a){b(this).html(a+1+(parseInt(d.p.page,10)-1)*parseInt(d.p.rowNum,10))});a._update_&&a._update_.apply(this,[c,e])},b("tbody:first",d).sortable(a),b("tbody:first",d).disableSelection())})},gridDnD:function(a){return this.each(function(){function d(){var a=b.data(c,"dnd");b("tr.jqgrow:not(.ui-draggable)",c).draggable(b.isFunction(a.drag)?a.drag.call(b(c), -a):a.drag)}var c=this,e,g;if(c.grid&&!c.p.treeGrid&&b.fn.draggable&&b.fn.droppable)if(void 0===b("#jqgrid_dnd")[0]&&b("body").append("<table id='jqgrid_dnd' class='ui-jqgrid-dnd'></table>"),"string"===typeof a&&"updateDnD"===a&&!0===c.p.jqgdnd)d();else if(a=b.extend({drag:function(a){return b.extend({start:function(e,d){var f;if(c.p.subGrid){f=b(d.helper).attr("id");try{b(c).jqGrid("collapseSubGridRow",f)}catch(g){}}for(f=0;f<b.data(c,"dnd").connectWith.length;f++)0===b(b.data(c,"dnd").connectWith[f]).jqGrid("getGridParam", -"reccount")&&b(b.data(c,"dnd").connectWith[f]).jqGrid("addRowData","jqg_empty_row",{});d.helper.addClass("ui-state-highlight");b("td",d.helper).each(function(b){this.style.width=c.grid.headers[b].width+"px"});a.onstart&&b.isFunction(a.onstart)&&a.onstart.call(b(c),e,d)},stop:function(e,d){var f;d.helper.dropped&&!a.dragcopy&&(f=b(d.helper).attr("id"),void 0===f&&(f=b(this).attr("id")),b(c).jqGrid("delRowData",f));for(f=0;f<b.data(c,"dnd").connectWith.length;f++)b(b.data(c,"dnd").connectWith[f]).jqGrid("delRowData", -"jqg_empty_row");a.onstop&&b.isFunction(a.onstop)&&a.onstop.call(b(c),e,d)}},a.drag_opts||{})},drop:function(a){return b.extend({accept:function(a){if(!b(a).hasClass("jqgrow"))return a;a=b(a).closest("table.ui-jqgrid-btable");return 0<a.length&&void 0!==b.data(a[0],"dnd")?(a=b.data(a[0],"dnd").connectWith,-1!==b.inArray("#"+b.jgrid.jqID(this.id),a)?!0:!1):!1},drop:function(e,d){if(b(d.draggable).hasClass("jqgrow")){var f=b(d.draggable).attr("id"),f=d.draggable.parent().parent().jqGrid("getRowData", -f);if(!a.dropbyname){var g=0,l={},h,n,s=b("#"+b.jgrid.jqID(this.id)).jqGrid("getGridParam","colModel");try{for(n in f)f.hasOwnProperty(n)&&(h=s[g].name,"cb"!==h&&"rn"!==h&&"subgrid"!==h&&f.hasOwnProperty(n)&&s[g]&&(l[h]=f[n]),g++);f=l}catch(r){}}d.helper.dropped=!0;a.beforedrop&&b.isFunction(a.beforedrop)&&(h=a.beforedrop.call(this,e,d,f,b("#"+b.jgrid.jqID(c.p.id)),b(this)),void 0!==h&&null!==h&&"object"===typeof h&&(f=h));if(d.helper.dropped){var m;a.autoid&&(b.isFunction(a.autoid)?m=a.autoid.call(this, -f):(m=Math.ceil(1E3*Math.random()),m=a.autoidprefix+m));b("#"+b.jgrid.jqID(this.id)).jqGrid("addRowData",m,f,a.droppos)}a.ondrop&&b.isFunction(a.ondrop)&&a.ondrop.call(this,e,d,f)}}},a.drop_opts||{})},onstart:null,onstop:null,beforedrop:null,ondrop:null,drop_opts:{activeClass:"ui-state-active",hoverClass:"ui-state-hover"},drag_opts:{revert:"invalid",helper:"clone",cursor:"move",appendTo:"#jqgrid_dnd",zIndex:5E3},dragcopy:!1,dropbyname:!1,droppos:"first",autoid:!0,autoidprefix:"dnd_"},a||{}),a.connectWith)for(a.connectWith= -a.connectWith.split(","),a.connectWith=b.map(a.connectWith,function(a){return b.trim(a)}),b.data(c,"dnd",a),0===c.p.reccount||c.p.jqgdnd||d(),c.p.jqgdnd=!0,e=0;e<a.connectWith.length;e++)g=a.connectWith[e],b(g).droppable(b.isFunction(a.drop)?a.drop.call(b(c),a):a.drop)})},gridResize:function(a){return this.each(function(){var d=this,c=b.jgrid.jqID(d.p.id);d.grid&&b.fn.resizable&&(a=b.extend({},a||{}),a.alsoResize?(a._alsoResize_=a.alsoResize,delete a.alsoResize):a._alsoResize_=!1,a.stop&&b.isFunction(a.stop)? -(a._stop_=a.stop,delete a.stop):a._stop_=!1,a.stop=function(e,g){b(d).jqGrid("setGridParam",{height:b("#gview_"+c+" .ui-jqgrid-bdiv").height()});b(d).jqGrid("setGridWidth",g.size.width,a.shrinkToFit);a._stop_&&a._stop_.call(d,e,g)},a.alsoResize=a._alsoResize_?eval("("+("{'#gview_"+c+" .ui-jqgrid-bdiv':true,'"+a._alsoResize_+"':true}")+")"):b(".ui-jqgrid-bdiv","#gview_"+c),delete a._alsoResize_,b("#gbox_"+c).resizable(a))})}})})(jQuery); diff --git a/assets/js/plugins/jquery-ui/i18n/jquery-ui-i18n.min.js b/assets/js/plugins/jquery-ui/i18n/jquery-ui-i18n.min.js deleted file mode 100644 index 853a18b1..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery-ui-i18n.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Includes: jquery.ui.datepicker-af.js, jquery.ui.datepicker-ar-DZ.js, jquery.ui.datepicker-ar.js, jquery.ui.datepicker-az.js, jquery.ui.datepicker-be.js, jquery.ui.datepicker-bg.js, jquery.ui.datepicker-bs.js, jquery.ui.datepicker-ca.js, jquery.ui.datepicker-cs.js, jquery.ui.datepicker-cy-GB.js, jquery.ui.datepicker-da.js, jquery.ui.datepicker-de.js, jquery.ui.datepicker-el.js, jquery.ui.datepicker-en-AU.js, jquery.ui.datepicker-en-GB.js, jquery.ui.datepicker-en-NZ.js, jquery.ui.datepicker-eo.js, jquery.ui.datepicker-es.js, jquery.ui.datepicker-et.js, jquery.ui.datepicker-eu.js, jquery.ui.datepicker-fa.js, jquery.ui.datepicker-fi.js, jquery.ui.datepicker-fo.js, jquery.ui.datepicker-fr-CA.js, jquery.ui.datepicker-fr-CH.js, jquery.ui.datepicker-fr.js, jquery.ui.datepicker-gl.js, jquery.ui.datepicker-he.js, jquery.ui.datepicker-hi.js, jquery.ui.datepicker-hr.js, jquery.ui.datepicker-hu.js, jquery.ui.datepicker-hy.js, jquery.ui.datepicker-id.js, jquery.ui.datepicker-is.js, jquery.ui.datepicker-it.js, jquery.ui.datepicker-ja.js, jquery.ui.datepicker-ka.js, jquery.ui.datepicker-kk.js, jquery.ui.datepicker-km.js, jquery.ui.datepicker-ko.js, jquery.ui.datepicker-ky.js, jquery.ui.datepicker-lb.js, jquery.ui.datepicker-lt.js, jquery.ui.datepicker-lv.js, jquery.ui.datepicker-mk.js, jquery.ui.datepicker-ml.js, jquery.ui.datepicker-ms.js, jquery.ui.datepicker-nb.js, jquery.ui.datepicker-nl-BE.js, jquery.ui.datepicker-nl.js, jquery.ui.datepicker-nn.js, jquery.ui.datepicker-no.js, jquery.ui.datepicker-pl.js, jquery.ui.datepicker-pt-BR.js, jquery.ui.datepicker-pt.js, jquery.ui.datepicker-rm.js, jquery.ui.datepicker-ro.js, jquery.ui.datepicker-ru.js, jquery.ui.datepicker-sk.js, jquery.ui.datepicker-sl.js, jquery.ui.datepicker-sq.js, jquery.ui.datepicker-sr-SR.js, jquery.ui.datepicker-sr.js, jquery.ui.datepicker-sv.js, jquery.ui.datepicker-ta.js, jquery.ui.datepicker-th.js, jquery.ui.datepicker-tj.js, jquery.ui.datepicker-tr.js, jquery.ui.datepicker-uk.js, jquery.ui.datepicker-vi.js, jquery.ui.datepicker-zh-CN.js, jquery.ui.datepicker-zh-HK.js, jquery.ui.datepicker-zh-TW.js -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.af)}),jQuery(function(e){e.datepicker.regional["ar-DZ"]={closeText:"إغلاق",prevText:"&#x3C;السابق",nextText:"التالي&#x3E;",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:!0,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional["ar-DZ"])}),jQuery(function(e){e.datepicker.regional.ar={closeText:"إغلاق",prevText:"&#x3C;السابق",nextText:"التالي&#x3E;",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:!0,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.ar)}),jQuery(function(e){e.datepicker.regional.az={closeText:"Bağla",prevText:"&#x3C;Geri",nextText:"İrəli&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.az)}),jQuery(function(e){e.datepicker.regional.be={closeText:"Зачыніць",prevText:"&larr;Папяр.",nextText:"Наст.&rarr;",currentText:"Сёньня",monthNames:["Студзень","Люты","Сакавік","Красавік","Травень","Чэрвень","Ліпень","Жнівень","Верасень","Кастрычнік","Лістапад","Сьнежань"],monthNamesShort:["Сту","Лют","Сак","Кра","Тра","Чэр","Ліп","Жні","Вер","Кас","Ліс","Сьн"],dayNames:["нядзеля","панядзелак","аўторак","серада","чацьвер","пятніца","субота"],dayNamesShort:["ндз","пнд","аўт","срд","чцв","птн","сбт"],dayNamesMin:["Нд","Пн","Аў","Ср","Чц","Пт","Сб"],weekHeader:"Тд",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.be)}),jQuery(function(e){e.datepicker.regional.bg={closeText:"затвори",prevText:"&#x3C;назад",nextText:"напред&#x3E;",nextBigText:"&#x3E;&#x3E;",currentText:"днес",monthNames:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],monthNamesShort:["Яну","Фев","Мар","Апр","Май","Юни","Юли","Авг","Сеп","Окт","Нов","Дек"],dayNames:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"],dayNamesShort:["Нед","Пон","Вто","Сря","Чет","Пет","Съб"],dayNamesMin:["Не","По","Вт","Ср","Че","Пе","Съ"],weekHeader:"Wk",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.bg)}),jQuery(function(e){e.datepicker.regional.bs={closeText:"Zatvori",prevText:"&#x3C;",nextText:"&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.bs)}),jQuery(function(e){e.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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.ca)}),jQuery(function(e){e.datepicker.regional.cs={closeText:"Zavřít",prevText:"&#x3C;Dříve",nextText:"Později&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.cs)}),jQuery(function(e){e.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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional["cy-GB"])}),jQuery(function(e){e.datepicker.regional.da={closeText:"Luk",prevText:"&#x3C;Forrige",nextText:"Næste&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.da)}),jQuery(function(e){e.datepicker.regional.de={closeText:"Schließen",prevText:"&#x3C;Zurück",nextText:"Vor&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.de)}),jQuery(function(e){e.datepicker.regional.el={closeText:"Κλείσιμο",prevText:"Προηγούμενος",nextText:"Επόμενος",currentText:"Τρέχων Μήνας",monthNames:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],monthNamesShort:["Ιαν","Φεβ","Μαρ","Απρ","Μαι","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],dayNames:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],dayNamesShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],dayNamesMin:["Κυ","Δε","Τρ","Τε","Πε","Πα","Σα"],weekHeader:"Εβδ",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.el)}),jQuery(function(e){e.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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional["en-AU"])}),jQuery(function(e){e.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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional["en-GB"])}),jQuery(function(e){e.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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional["en-NZ"])}),jQuery(function(e){e.datepicker.regional.eo={closeText:"Fermi",prevText:"&#x3C;Anta",nextText:"Sekv&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.eo)}),jQuery(function(e){e.datepicker.regional.es={closeText:"Cerrar",prevText:"&#x3C;Ant",nextText:"Sig&#x3E;",currentText:"Hoy",monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],monthNamesShort:["ene","feb","mar","abr","may","jun","jul","ogo","sep","oct","nov","dic"],dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],dayNamesShort:["dom","lun","mar","mié","juv","vie","sáb"],dayNamesMin:["D","L","M","X","J","V","S"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.es)}),jQuery(function(e){e.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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.et)}),jQuery(function(e){e.datepicker.regional.eu={closeText:"Egina",prevText:"&#x3C;Aur",nextText:"Hur&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.eu)}),jQuery(function(e){e.datepicker.regional.fa={closeText:"بستن",prevText:"&#x3C;قبلی",nextText:"بعدی&#x3E;",currentText:"امروز",monthNames:["فروردين","ارديبهشت","خرداد","تير","مرداد","شهريور","مهر","آبان","آذر","دی","بهمن","اسفند"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["يکشنبه","دوشنبه","سه‌شنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],dayNamesShort:["ی","د","س","چ","پ","ج","ش"],dayNamesMin:["ی","د","س","چ","پ","ج","ش"],weekHeader:"هف",dateFormat:"yy/mm/dd",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.fa)}),jQuery(function(e){e.datepicker.regional.fi={closeText:"Sulje",prevText:"&#xAB;Edellinen",nextText:"Seuraava&#xBB;",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:"d.m.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.fi)}),jQuery(function(e){e.datepicker.regional.fo={closeText:"Lat aftur",prevText:"&#x3C;Fyrra",nextText:"Næsta&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.fo)}),jQuery(function(e){e.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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional["fr-CA"])}),jQuery(function(e){e.datepicker.regional["fr-CH"]={closeText:"Fermer",prevText:"&#x3C;Préc",nextText:"Suiv&#x3E;",currentText:"Courant",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:"Sm",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional["fr-CH"])}),jQuery(function(e){e.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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.fr)}),jQuery(function(e){e.datepicker.regional.gl={closeText:"Pechar",prevText:"&#x3C;Ant",nextText:"Seg&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.gl)}),jQuery(function(e){e.datepicker.regional.he={closeText:"סגור",prevText:"&#x3C;הקודם",nextText:"הבא&#x3E;",currentText:"היום",monthNames:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],monthNamesShort:["ינו","פבר","מרץ","אפר","מאי","יוני","יולי","אוג","ספט","אוק","נוב","דצמ"],dayNames:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת"],dayNamesShort:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],dayNamesMin:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.he)}),jQuery(function(e){e.datepicker.regional.hi={closeText:"बंद",prevText:"पिछला",nextText:"अगला",currentText:"आज",monthNames:["जनवरी ","फरवरी","मार्च","अप्रेल","मई","जून","जूलाई","अगस्त ","सितम्बर","अक्टूबर","नवम्बर","दिसम्बर"],monthNamesShort:["जन","फर","मार्च","अप्रेल","मई","जून","जूलाई","अग","सित","अक्ट","नव","दि"],dayNames:["रविवार","सोमवार","मंगलवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],dayNamesShort:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],dayNamesMin:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],weekHeader:"हफ्ता",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.hi)}),jQuery(function(e){e.datepicker.regional.hr={closeText:"Zatvori",prevText:"&#x3C;",nextText:"&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.hr)}),jQuery(function(e){e.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:!1,showMonthAfterYear:!0,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.hu)}),jQuery(function(e){e.datepicker.regional.hy={closeText:"Փակել",prevText:"&#x3C;Նախ.",nextText:"Հաջ.&#x3E;",currentText:"Այսօր",monthNames:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],monthNamesShort:["Հունվ","Փետր","Մարտ","Ապր","Մայիս","Հունիս","Հուլ","Օգս","Սեպ","Հոկ","Նոյ","Դեկ"],dayNames:["կիրակի","եկուշաբթի","երեքշաբթի","չորեքշաբթի","հինգշաբթի","ուրբաթ","շաբաթ"],dayNamesShort:["կիր","երկ","երք","չրք","հնգ","ուրբ","շբթ"],dayNamesMin:["կիր","երկ","երք","չրք","հնգ","ուրբ","շբթ"],weekHeader:"ՇԲՏ",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.hy)}),jQuery(function(e){e.datepicker.regional.id={closeText:"Tutup",prevText:"&#x3C;mundur",nextText:"maju&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.id)}),jQuery(function(e){e.datepicker.regional.is={closeText:"Loka",prevText:"&#x3C; Fyrri",nextText:"Næsti &#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.is)}),jQuery(function(e){e.datepicker.regional.it={closeText:"Chiudi",prevText:"&#x3C;Prec",nextText:"Succ&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.it)}),jQuery(function(e){e.datepicker.regional.ja={closeText:"閉じる",prevText:"&#x3C;前",nextText:"次&#x3E;",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:!1,showMonthAfterYear:!0,yearSuffix:"年"},e.datepicker.setDefaults(e.datepicker.regional.ja)}),jQuery(function(e){e.datepicker.regional.ka={closeText:"დახურვა",prevText:"&#x3c; წინა",nextText:"შემდეგი &#x3e;",currentText:"დღეს",monthNames:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"],monthNamesShort:["იან","თებ","მარ","აპრ","მაი","ივნ","ივლ","აგვ","სექ","ოქტ","ნოე","დეკ"],dayNames:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"],dayNamesShort:["კვ","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],dayNamesMin:["კვ","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],weekHeader:"კვირა",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.ka)}),jQuery(function(e){e.datepicker.regional.kk={closeText:"Жабу",prevText:"&#x3C;Алдыңғы",nextText:"Келесі&#x3E;",currentText:"Бүгін",monthNames:["Қаңтар","Ақпан","Наурыз","Сәуір","Мамыр","Маусым","Шілде","Тамыз","Қыркүйек","Қазан","Қараша","Желтоқсан"],monthNamesShort:["Қаң","Ақп","Нау","Сәу","Мам","Мау","Шіл","Там","Қыр","Қаз","Қар","Жел"],dayNames:["Жексенбі","Дүйсенбі","Сейсенбі","Сәрсенбі","Бейсенбі","Жұма","Сенбі"],dayNamesShort:["жкс","дсн","ссн","срс","бсн","жма","снб"],dayNamesMin:["Жк","Дс","Сс","Ср","Бс","Жм","Сн"],weekHeader:"Не",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.kk)}),jQuery(function(e){e.datepicker.regional.km={closeText:"ធ្វើ​រួច",prevText:"មុន",nextText:"បន្ទាប់",currentText:"ថ្ងៃ​នេះ",monthNames:["មករា","កុម្ភៈ","មីនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],monthNamesShort:["មករា","កុម្ភៈ","មីនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],dayNames:["អាទិត្យ","ចន្ទ","អង្គារ","ពុធ","ព្រហស្បតិ៍","សុក្រ","សៅរ៍"],dayNamesShort:["អា","ច","អ","ពុ","ព្រហ","សុ","សៅ"],dayNamesMin:["អា","ច","អ","ពុ","ព្រហ","សុ","សៅ"],weekHeader:"សប្ដាហ៍",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.km)}),jQuery(function(e){e.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:!1,showMonthAfterYear:!0,yearSuffix:"년"},e.datepicker.setDefaults(e.datepicker.regional.ko)}),jQuery(function(e){e.datepicker.regional.ky={closeText:"Жабуу",prevText:"&#x3c;Мур",nextText:"Кий&#x3e;",currentText:"Бүгүн",monthNames:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["жекшемби","дүйшөмбү","шейшемби","шаршемби","бейшемби","жума","ишемби"],dayNamesShort:["жек","дүй","шей","шар","бей","жум","ише"],dayNamesMin:["Жк","Дш","Шш","Шр","Бш","Жм","Иш"],weekHeader:"Жум",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.ky)}),jQuery(function(e){e.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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.lb)}),jQuery(function(e){e.datepicker.regional.lt={closeText:"Uždaryti",prevText:"&#x3C;Atgal",nextText:"Pirmyn&#x3E;",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:"SAV",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.lt)}),jQuery(function(e){e.datepicker.regional.lv={closeText:"Aizvērt",prevText:"Iepr.",nextText:"Nāk.",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:"Ned.",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.lv)}),jQuery(function(e){e.datepicker.regional.mk={closeText:"Затвори",prevText:"&#x3C;",nextText:"&#x3E;",currentText:"Денес",monthNames:["Јануари","Февруари","Март","Април","Мај","Јуни","Јули","Август","Септември","Октомври","Ноември","Декември"],monthNamesShort:["Јан","Фев","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Ное","Дек"],dayNames:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"],dayNamesShort:["Нед","Пон","Вто","Сре","Чет","Пет","Саб"],dayNamesMin:["Не","По","Вт","Ср","Че","Пе","Са"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.mk)}),jQuery(function(e){e.datepicker.regional.ml={closeText:"ശരി",prevText:"മുന്നത്തെ",nextText:"അടുത്തത് ",currentText:"ഇന്ന്",monthNames:["ജനുവരി","ഫെബ്രുവരി","മാര്‍ച്ച്","ഏപ്രില്‍","മേയ്","ജൂണ്‍","ജൂലൈ","ആഗസ്റ്റ്","സെപ്റ്റംബര്‍","ഒക്ടോബര്‍","നവംബര്‍","ഡിസംബര്‍"],monthNamesShort:["ജനു","ഫെബ്","മാര്‍","ഏപ്രി","മേയ്","ജൂണ്‍","ജൂലാ","ആഗ","സെപ്","ഒക്ടോ","നവം","ഡിസ"],dayNames:["ഞായര്‍","തിങ്കള്‍","ചൊവ്വ","ബുധന്‍","വ്യാഴം","വെള്ളി","ശനി"],dayNamesShort:["ഞായ","തിങ്ക","ചൊവ്വ","ബുധ","വ്യാഴം","വെള്ളി","ശനി"],dayNamesMin:["ഞാ","തി","ചൊ","ബു","വ്യാ","വെ","ശ"],weekHeader:"ആ",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.ml)}),jQuery(function(e){e.datepicker.regional.ms={closeText:"Tutup",prevText:"&#x3C;Sebelum",nextText:"Selepas&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.ms)}),jQuery(function(e){e.datepicker.regional.nb={closeText:"Lukk",prevText:"&#xAB;Forrige",nextText:"Neste&#xBB;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.nb) -}),jQuery(function(e){e.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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional["nl-BE"])}),jQuery(function(e){e.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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.nl)}),jQuery(function(e){e.datepicker.regional.nn={closeText:"Lukk",prevText:"&#xAB;Førre",nextText:"Neste&#xBB;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.nn)}),jQuery(function(e){e.datepicker.regional.no={closeText:"Lukk",prevText:"&#xAB;Forrige",nextText:"Neste&#xBB;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.no)}),jQuery(function(e){e.datepicker.regional.pl={closeText:"Zamknij",prevText:"&#x3C;Poprzedni",nextText:"Następny&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.pl)}),jQuery(function(e){e.datepicker.regional["pt-BR"]={closeText:"Fechar",prevText:"&#x3C;Anterior",nextText:"Próximo&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional["pt-BR"])}),jQuery(function(e){e.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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.pt)}),jQuery(function(e){e.datepicker.regional.rm={closeText:"Serrar",prevText:"&#x3C;Suandant",nextText:"Precedent&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.rm)}),jQuery(function(e){e.datepicker.regional.ro={closeText:"Închide",prevText:"&#xAB; Luna precedentă",nextText:"Luna următoare &#xBB;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.ro)}),jQuery(function(e){e.datepicker.regional.ru={closeText:"Закрыть",prevText:"&#x3C;Пред",nextText:"След&#x3E;",currentText:"Сегодня",monthNames:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],dayNamesShort:["вск","пнд","втр","срд","чтв","птн","сбт"],dayNamesMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Нед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.ru)}),jQuery(function(e){e.datepicker.regional.sk={closeText:"Zavrieť",prevText:"&#x3C;Predchádzajúci",nextText:"Nasledujúci&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.sk)}),jQuery(function(e){e.datepicker.regional.sl={closeText:"Zapri",prevText:"&#x3C;Prejšnji",nextText:"Naslednji&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.sl)}),jQuery(function(e){e.datepicker.regional.sq={closeText:"mbylle",prevText:"&#x3C;mbrapa",nextText:"Përpara&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.sq)}),jQuery(function(e){e.datepicker.regional["sr-SR"]={closeText:"Zatvori",prevText:"&#x3C;",nextText:"&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional["sr-SR"])}),jQuery(function(e){e.datepicker.regional.sr={closeText:"Затвори",prevText:"&#x3C;",nextText:"&#x3E;",currentText:"Данас",monthNames:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthNamesShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],dayNames:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],dayNamesShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],dayNamesMin:["Не","По","Ут","Ср","Че","Пе","Су"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.sr)}),jQuery(function(e){e.datepicker.regional.sv={closeText:"Stäng",prevText:"&#xAB;Förra",nextText:"Nästa&#xBB;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.sv)}),jQuery(function(e){e.datepicker.regional.ta={closeText:"மூடு",prevText:"முன்னையது",nextText:"அடுத்தது",currentText:"இன்று",monthNames:["தை","மாசி","பங்குனி","சித்திரை","வைகாசி","ஆனி","ஆடி","ஆவணி","புரட்டாசி","ஐப்பசி","கார்த்திகை","மார்கழி"],monthNamesShort:["தை","மாசி","பங்","சித்","வைகா","ஆனி","ஆடி","ஆவ","புர","ஐப்","கார்","மார்"],dayNames:["ஞாயிற்றுக்கிழமை","திங்கட்கிழமை","செவ்வாய்க்கிழமை","புதன்கிழமை","வியாழக்கிழமை","வெள்ளிக்கிழமை","சனிக்கிழமை"],dayNamesShort:["ஞாயிறு","திங்கள்","செவ்வாய்","புதன்","வியாழன்","வெள்ளி","சனி"],dayNamesMin:["ஞா","தி","செ","பு","வி","வெ","ச"],weekHeader:"Не",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.ta)}),jQuery(function(e){e.datepicker.regional.th={closeText:"ปิด",prevText:"&#xAB;&#xA0;ย้อน",nextText:"ถัดไป&#xA0;&#xBB;",currentText:"วันนี้",monthNames:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],monthNamesShort:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],dayNames:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัสบดี","ศุกร์","เสาร์"],dayNamesShort:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],dayNamesMin:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.th)}),jQuery(function(e){e.datepicker.regional.tj={closeText:"Идома",prevText:"&#x3c;Қафо",nextText:"Пеш&#x3e;",currentText:"Имрӯз",monthNames:["Январ","Феврал","Март","Апрел","Май","Июн","Июл","Август","Сентябр","Октябр","Ноябр","Декабр"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["якшанбе","душанбе","сешанбе","чоршанбе","панҷшанбе","ҷумъа","шанбе"],dayNamesShort:["якш","душ","сеш","чор","пан","ҷум","шан"],dayNamesMin:["Як","Дш","Сш","Чш","Пш","Ҷм","Шн"],weekHeader:"Хф",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.tj)}),jQuery(function(e){e.datepicker.regional.tr={closeText:"kapat",prevText:"&#x3C;geri",nextText:"ileri&#x3e",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.tr)}),jQuery(function(e){e.datepicker.regional.uk={closeText:"Закрити",prevText:"&#x3C;",nextText:"&#x3E;",currentText:"Сьогодні",monthNames:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],monthNamesShort:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],dayNames:["неділя","понеділок","вівторок","середа","четвер","п’ятниця","субота"],dayNamesShort:["нед","пнд","вів","срд","чтв","птн","сбт"],dayNamesMin:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Тиж",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.uk)}),jQuery(function(e){e.datepicker.regional.vi={closeText:"Đóng",prevText:"&#x3C;Trước",nextText:"Tiếp&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.vi)}),jQuery(function(e){e.datepicker.regional["zh-CN"]={closeText:"关闭",prevText:"&#x3C;上月",nextText:"下月&#x3E;",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"},e.datepicker.setDefaults(e.datepicker.regional["zh-CN"])}),jQuery(function(e){e.datepicker.regional["zh-HK"]={closeText:"關閉",prevText:"&#x3C;上月",nextText:"下月&#x3E;",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"dd-mm-yy",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"},e.datepicker.setDefaults(e.datepicker.regional["zh-HK"])}),jQuery(function(e){e.datepicker.regional["zh-TW"]={closeText:"關閉",prevText:"&#x3C;上月",nextText:"下月&#x3E;",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy/mm/dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"},e.datepicker.setDefaults(e.datepicker.regional["zh-TW"])}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-af.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-af.min.js deleted file mode 100644 index 8338b392..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-af.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(t){t.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:!1,showMonthAfterYear:!1,yearSuffix:""},t.datepicker.setDefaults(t.datepicker.regional.af)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-ar-DZ.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-ar-DZ.min.js deleted file mode 100644 index fd6938e3..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-ar-DZ.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(t){t.datepicker.regional["ar-DZ"]={closeText:"إغلاق",prevText:"&#x3C;السابق",nextText:"التالي&#x3E;",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:!0,showMonthAfterYear:!1,yearSuffix:""},t.datepicker.setDefaults(t.datepicker.regional["ar-DZ"])}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-ar.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-ar.min.js deleted file mode 100644 index aaeb3d7a..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-ar.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(t){t.datepicker.regional.ar={closeText:"إغلاق",prevText:"&#x3C;السابق",nextText:"التالي&#x3E;",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:!0,showMonthAfterYear:!1,yearSuffix:""},t.datepicker.setDefaults(t.datepicker.regional.ar)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-az.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-az.min.js deleted file mode 100644 index 147897c4..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-az.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(t){t.datepicker.regional.az={closeText:"Bağla",prevText:"&#x3C;Geri",nextText:"İrəli&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},t.datepicker.setDefaults(t.datepicker.regional.az)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-be.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-be.min.js deleted file mode 100644 index eb6f2456..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-be.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(t){t.datepicker.regional.be={closeText:"Зачыніць",prevText:"&larr;Папяр.",nextText:"Наст.&rarr;",currentText:"Сёньня",monthNames:["Студзень","Люты","Сакавік","Красавік","Травень","Чэрвень","Ліпень","Жнівень","Верасень","Кастрычнік","Лістапад","Сьнежань"],monthNamesShort:["Сту","Лют","Сак","Кра","Тра","Чэр","Ліп","Жні","Вер","Кас","Ліс","Сьн"],dayNames:["нядзеля","панядзелак","аўторак","серада","чацьвер","пятніца","субота"],dayNamesShort:["ндз","пнд","аўт","срд","чцв","птн","сбт"],dayNamesMin:["Нд","Пн","Аў","Ср","Чц","Пт","Сб"],weekHeader:"Тд",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.datepicker.setDefaults(t.datepicker.regional.be)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-bg.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-bg.min.js deleted file mode 100644 index 99567a82..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-bg.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(t){t.datepicker.regional.bg={closeText:"затвори",prevText:"&#x3C;назад",nextText:"напред&#x3E;",nextBigText:"&#x3E;&#x3E;",currentText:"днес",monthNames:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],monthNamesShort:["Яну","Фев","Мар","Апр","Май","Юни","Юли","Авг","Сеп","Окт","Нов","Дек"],dayNames:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"],dayNamesShort:["Нед","Пон","Вто","Сря","Чет","Пет","Съб"],dayNamesMin:["Не","По","Вт","Ср","Че","Пе","Съ"],weekHeader:"Wk",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.datepicker.setDefaults(t.datepicker.regional.bg)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-bs.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-bs.min.js deleted file mode 100644 index 87a322ff..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-bs.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(t){t.datepicker.regional.bs={closeText:"Zatvori",prevText:"&#x3C;",nextText:"&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},t.datepicker.setDefaults(t.datepicker.regional.bs)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-ca.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-ca.min.js deleted file mode 100644 index 8a4f485e..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-ca.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(t){t.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:!1,showMonthAfterYear:!1,yearSuffix:""},t.datepicker.setDefaults(t.datepicker.regional.ca)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-cs.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-cs.min.js deleted file mode 100644 index 0bfe7b69..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-cs.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(t){t.datepicker.regional.cs={closeText:"Zavřít",prevText:"&#x3C;Dříve",nextText:"Později&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},t.datepicker.setDefaults(t.datepicker.regional.cs)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-cy-GB.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-cy-GB.min.js deleted file mode 100644 index 7cec9146..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-cy-GB.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(t){t.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:!1,showMonthAfterYear:!1,yearSuffix:""},t.datepicker.setDefaults(t.datepicker.regional["cy-GB"])}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-da.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-da.min.js deleted file mode 100644 index fb62fc09..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-da.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(t){t.datepicker.regional.da={closeText:"Luk",prevText:"&#x3C;Forrige",nextText:"Næste&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},t.datepicker.setDefaults(t.datepicker.regional.da)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-de.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-de.min.js deleted file mode 100644 index 2bf889eb..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-de.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(t){t.datepicker.regional.de={closeText:"Schließen",prevText:"&#x3C;Zurück",nextText:"Vor&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},t.datepicker.setDefaults(t.datepicker.regional.de)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-el.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-el.min.js deleted file mode 100644 index 5f9d6cc0..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-el.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(t){t.datepicker.regional.el={closeText:"Κλείσιμο",prevText:"Προηγούμενος",nextText:"Επόμενος",currentText:"Τρέχων Μήνας",monthNames:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],monthNamesShort:["Ιαν","Φεβ","Μαρ","Απρ","Μαι","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],dayNames:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],dayNamesShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],dayNamesMin:["Κυ","Δε","Τρ","Τε","Πε","Πα","Σα"],weekHeader:"Εβδ",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.datepicker.setDefaults(t.datepicker.regional.el)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-en-AU.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-en-AU.min.js deleted file mode 100644 index e8fde57f..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-en-AU.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(t){t.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:!1,showMonthAfterYear:!1,yearSuffix:""},t.datepicker.setDefaults(t.datepicker.regional["en-AU"])}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-en-GB.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-en-GB.min.js deleted file mode 100644 index 1160d32d..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-en-GB.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(t){t.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:!1,showMonthAfterYear:!1,yearSuffix:""},t.datepicker.setDefaults(t.datepicker.regional["en-GB"])}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-en-NZ.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-en-NZ.min.js deleted file mode 100644 index 25f83050..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-en-NZ.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(t){t.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:!1,showMonthAfterYear:!1,yearSuffix:""},t.datepicker.setDefaults(t.datepicker.regional["en-NZ"])}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-eo.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-eo.min.js deleted file mode 100644 index f214d81a..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-eo.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(t){t.datepicker.regional.eo={closeText:"Fermi",prevText:"&#x3C;Anta",nextText:"Sekv&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},t.datepicker.setDefaults(t.datepicker.regional.eo)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-es.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-es.min.js deleted file mode 100644 index e7e59cdf..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-es.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(t){t.datepicker.regional.es={closeText:"Cerrar",prevText:"&#x3C;Ant",nextText:"Sig&#x3E;",currentText:"Hoy",monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],monthNamesShort:["ene","feb","mar","abr","may","jun","jul","ogo","sep","oct","nov","dic"],dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],dayNamesShort:["dom","lun","mar","mié","juv","vie","sáb"],dayNamesMin:["D","L","M","X","J","V","S"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.datepicker.setDefaults(t.datepicker.regional.es)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-et.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-et.min.js deleted file mode 100644 index 140871cd..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-et.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(t){t.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:!1,showMonthAfterYear:!1,yearSuffix:""},t.datepicker.setDefaults(t.datepicker.regional.et)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-eu.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-eu.min.js deleted file mode 100644 index b9ec58c9..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-eu.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(t){t.datepicker.regional.eu={closeText:"Egina",prevText:"&#x3C;Aur",nextText:"Hur&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},t.datepicker.setDefaults(t.datepicker.regional.eu)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-fa.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-fa.min.js deleted file mode 100644 index fe3ccca7..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-fa.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(t){t.datepicker.regional.fa={closeText:"بستن",prevText:"&#x3C;قبلی",nextText:"بعدی&#x3E;",currentText:"امروز",monthNames:["فروردين","ارديبهشت","خرداد","تير","مرداد","شهريور","مهر","آبان","آذر","دی","بهمن","اسفند"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["يکشنبه","دوشنبه","سه‌شنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],dayNamesShort:["ی","د","س","چ","پ","ج","ش"],dayNamesMin:["ی","د","س","چ","پ","ج","ش"],weekHeader:"هف",dateFormat:"yy/mm/dd",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""},t.datepicker.setDefaults(t.datepicker.regional.fa)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-fi.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-fi.min.js deleted file mode 100644 index f35a591f..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-fi.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(t){t.datepicker.regional.fi={closeText:"Sulje",prevText:"&#xAB;Edellinen",nextText:"Seuraava&#xBB;",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:"d.m.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.datepicker.setDefaults(t.datepicker.regional.fi)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-fo.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-fo.min.js deleted file mode 100644 index 023214e4..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-fo.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(t){t.datepicker.regional.fo={closeText:"Lat aftur",prevText:"&#x3C;Fyrra",nextText:"Næsta&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},t.datepicker.setDefaults(t.datepicker.regional.fo)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-fr-CA.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-fr-CA.min.js deleted file mode 100644 index 5b175ad2..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-fr-CA.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(t){t.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:!1,showMonthAfterYear:!1,yearSuffix:""},t.datepicker.setDefaults(t.datepicker.regional["fr-CA"])}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-fr-CH.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-fr-CH.min.js deleted file mode 100644 index c611739e..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-fr-CH.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(t){t.datepicker.regional["fr-CH"]={closeText:"Fermer",prevText:"&#x3C;Préc",nextText:"Suiv&#x3E;",currentText:"Courant",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:"Sm",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.datepicker.setDefaults(t.datepicker.regional["fr-CH"])}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-fr.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-fr.min.js deleted file mode 100644 index 84754f9f..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-fr.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(t){t.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:!1,showMonthAfterYear:!1,yearSuffix:""},t.datepicker.setDefaults(t.datepicker.regional.fr)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-gl.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-gl.min.js deleted file mode 100644 index 218fa531..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-gl.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(t){t.datepicker.regional.gl={closeText:"Pechar",prevText:"&#x3C;Ant",nextText:"Seg&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},t.datepicker.setDefaults(t.datepicker.regional.gl)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-he.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-he.min.js deleted file mode 100644 index 078e5dc4..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-he.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(t){t.datepicker.regional.he={closeText:"סגור",prevText:"&#x3C;הקודם",nextText:"הבא&#x3E;",currentText:"היום",monthNames:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],monthNamesShort:["ינו","פבר","מרץ","אפר","מאי","יוני","יולי","אוג","ספט","אוק","נוב","דצמ"],dayNames:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת"],dayNamesShort:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],dayNamesMin:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""},t.datepicker.setDefaults(t.datepicker.regional.he)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-hi.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-hi.min.js deleted file mode 100644 index 89a1bd4b..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-hi.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional.hi={closeText:"बंद",prevText:"पिछला",nextText:"अगला",currentText:"आज",monthNames:["जनवरी ","फरवरी","मार्च","अप्रेल","मई","जून","जूलाई","अगस्त ","सितम्बर","अक्टूबर","नवम्बर","दिसम्बर"],monthNamesShort:["जन","फर","मार्च","अप्रेल","मई","जून","जूलाई","अग","सित","अक्ट","नव","दि"],dayNames:["रविवार","सोमवार","मंगलवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],dayNamesShort:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],dayNamesMin:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],weekHeader:"हफ्ता",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.hi)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-hr.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-hr.min.js deleted file mode 100644 index be950991..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-hr.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional.hr={closeText:"Zatvori",prevText:"&#x3C;",nextText:"&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.hr)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-hu.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-hu.min.js deleted file mode 100644 index 1afa5d72..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-hu.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.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:!1,showMonthAfterYear:!0,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.hu)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-hy.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-hy.min.js deleted file mode 100644 index 3273c7c3..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-hy.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional.hy={closeText:"Փակել",prevText:"&#x3C;Նախ.",nextText:"Հաջ.&#x3E;",currentText:"Այսօր",monthNames:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],monthNamesShort:["Հունվ","Փետր","Մարտ","Ապր","Մայիս","Հունիս","Հուլ","Օգս","Սեպ","Հոկ","Նոյ","Դեկ"],dayNames:["կիրակի","եկուշաբթի","երեքշաբթի","չորեքշաբթի","հինգշաբթի","ուրբաթ","շաբաթ"],dayNamesShort:["կիր","երկ","երք","չրք","հնգ","ուրբ","շբթ"],dayNamesMin:["կիր","երկ","երք","չրք","հնգ","ուրբ","շբթ"],weekHeader:"ՇԲՏ",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.hy)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-id.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-id.min.js deleted file mode 100644 index dd2b70eb..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-id.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional.id={closeText:"Tutup",prevText:"&#x3C;mundur",nextText:"maju&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.id)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-is.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-is.min.js deleted file mode 100644 index 6b13f4d6..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-is.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional.is={closeText:"Loka",prevText:"&#x3C; Fyrri",nextText:"Næsti &#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.is)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-it.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-it.min.js deleted file mode 100644 index 91547ae9..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-it.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional.it={closeText:"Chiudi",prevText:"&#x3C;Prec",nextText:"Succ&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.it)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-ja.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-ja.min.js deleted file mode 100644 index ef647f40..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-ja.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional.ja={closeText:"閉じる",prevText:"&#x3C;前",nextText:"次&#x3E;",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:!1,showMonthAfterYear:!0,yearSuffix:"年"},e.datepicker.setDefaults(e.datepicker.regional.ja)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-ka.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-ka.min.js deleted file mode 100644 index ab0c5575..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-ka.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional.ka={closeText:"დახურვა",prevText:"&#x3c; წინა",nextText:"შემდეგი &#x3e;",currentText:"დღეს",monthNames:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"],monthNamesShort:["იან","თებ","მარ","აპრ","მაი","ივნ","ივლ","აგვ","სექ","ოქტ","ნოე","დეკ"],dayNames:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"],dayNamesShort:["კვ","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],dayNamesMin:["კვ","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],weekHeader:"კვირა",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.ka)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-kk.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-kk.min.js deleted file mode 100644 index 895ae46b..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-kk.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional.kk={closeText:"Жабу",prevText:"&#x3C;Алдыңғы",nextText:"Келесі&#x3E;",currentText:"Бүгін",monthNames:["Қаңтар","Ақпан","Наурыз","Сәуір","Мамыр","Маусым","Шілде","Тамыз","Қыркүйек","Қазан","Қараша","Желтоқсан"],monthNamesShort:["Қаң","Ақп","Нау","Сәу","Мам","Мау","Шіл","Там","Қыр","Қаз","Қар","Жел"],dayNames:["Жексенбі","Дүйсенбі","Сейсенбі","Сәрсенбі","Бейсенбі","Жұма","Сенбі"],dayNamesShort:["жкс","дсн","ссн","срс","бсн","жма","снб"],dayNamesMin:["Жк","Дс","Сс","Ср","Бс","Жм","Сн"],weekHeader:"Не",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.kk)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-km.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-km.min.js deleted file mode 100644 index 9a33b018..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-km.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional.km={closeText:"ធ្វើ​រួច",prevText:"មុន",nextText:"បន្ទាប់",currentText:"ថ្ងៃ​នេះ",monthNames:["មករា","កុម្ភៈ","មីនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],monthNamesShort:["មករា","កុម្ភៈ","មីនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],dayNames:["អាទិត្យ","ចន្ទ","អង្គារ","ពុធ","ព្រហស្បតិ៍","សុក្រ","សៅរ៍"],dayNamesShort:["អា","ច","អ","ពុ","ព្រហ","សុ","សៅ"],dayNamesMin:["អា","ច","អ","ពុ","ព្រហ","សុ","សៅ"],weekHeader:"សប្ដាហ៍",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.km)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-ko.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-ko.min.js deleted file mode 100644 index 4d2cc66e..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-ko.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.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:!1,showMonthAfterYear:!0,yearSuffix:"년"},e.datepicker.setDefaults(e.datepicker.regional.ko)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-ky.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-ky.min.js deleted file mode 100644 index 00e7f334..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-ky.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional.ky={closeText:"Жабуу",prevText:"&#x3c;Мур",nextText:"Кий&#x3e;",currentText:"Бүгүн",monthNames:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["жекшемби","дүйшөмбү","шейшемби","шаршемби","бейшемби","жума","ишемби"],dayNamesShort:["жек","дүй","шей","шар","бей","жум","ише"],dayNamesMin:["Жк","Дш","Шш","Шр","Бш","Жм","Иш"],weekHeader:"Жум",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.ky)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-lb.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-lb.min.js deleted file mode 100644 index d6a3fbdb..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-lb.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.lb)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-lt.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-lt.min.js deleted file mode 100644 index b59f0a9b..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-lt.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional.lt={closeText:"Uždaryti",prevText:"&#x3C;Atgal",nextText:"Pirmyn&#x3E;",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:"SAV",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.lt)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-lv.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-lv.min.js deleted file mode 100644 index bacbddbf..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-lv.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional.lv={closeText:"Aizvērt",prevText:"Iepr.",nextText:"Nāk.",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:"Ned.",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.lv)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-mk.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-mk.min.js deleted file mode 100644 index e98a7de5..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-mk.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional.mk={closeText:"Затвори",prevText:"&#x3C;",nextText:"&#x3E;",currentText:"Денес",monthNames:["Јануари","Февруари","Март","Април","Мај","Јуни","Јули","Август","Септември","Октомври","Ноември","Декември"],monthNamesShort:["Јан","Фев","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Ное","Дек"],dayNames:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"],dayNamesShort:["Нед","Пон","Вто","Сре","Чет","Пет","Саб"],dayNamesMin:["Не","По","Вт","Ср","Че","Пе","Са"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.mk)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-ml.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-ml.min.js deleted file mode 100644 index b6f7dffa..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-ml.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional.ml={closeText:"ശരി",prevText:"മുന്നത്തെ",nextText:"അടുത്തത് ",currentText:"ഇന്ന്",monthNames:["ജനുവരി","ഫെബ്രുവരി","മാര്‍ച്ച്","ഏപ്രില്‍","മേയ്","ജൂണ്‍","ജൂലൈ","ആഗസ്റ്റ്","സെപ്റ്റംബര്‍","ഒക്ടോബര്‍","നവംബര്‍","ഡിസംബര്‍"],monthNamesShort:["ജനു","ഫെബ്","മാര്‍","ഏപ്രി","മേയ്","ജൂണ്‍","ജൂലാ","ആഗ","സെപ്","ഒക്ടോ","നവം","ഡിസ"],dayNames:["ഞായര്‍","തിങ്കള്‍","ചൊവ്വ","ബുധന്‍","വ്യാഴം","വെള്ളി","ശനി"],dayNamesShort:["ഞായ","തിങ്ക","ചൊവ്വ","ബുധ","വ്യാഴം","വെള്ളി","ശനി"],dayNamesMin:["ഞാ","തി","ചൊ","ബു","വ്യാ","വെ","ശ"],weekHeader:"ആ",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.ml)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-ms.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-ms.min.js deleted file mode 100644 index a6e07082..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-ms.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional.ms={closeText:"Tutup",prevText:"&#x3C;Sebelum",nextText:"Selepas&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.ms)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-nb.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-nb.min.js deleted file mode 100644 index b801dbc9..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-nb.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional.nb={closeText:"Lukk",prevText:"&#xAB;Forrige",nextText:"Neste&#xBB;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.nb)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-nl-BE.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-nl-BE.min.js deleted file mode 100644 index 47f974a3..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-nl-BE.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional["nl-BE"])}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-nl.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-nl.min.js deleted file mode 100644 index d874705c..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-nl.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.nl)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-nn.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-nn.min.js deleted file mode 100644 index 26f1115e..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-nn.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional.nn={closeText:"Lukk",prevText:"&#xAB;Førre",nextText:"Neste&#xBB;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.nn)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-no.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-no.min.js deleted file mode 100644 index 96957a6a..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-no.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional.no={closeText:"Lukk",prevText:"&#xAB;Forrige",nextText:"Neste&#xBB;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.no)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-pl.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-pl.min.js deleted file mode 100644 index c2333cb9..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-pl.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional.pl={closeText:"Zamknij",prevText:"&#x3C;Poprzedni",nextText:"Następny&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.pl)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-pt-BR.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-pt-BR.min.js deleted file mode 100644 index 5000b119..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-pt-BR.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional["pt-BR"]={closeText:"Fechar",prevText:"&#x3C;Anterior",nextText:"Próximo&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional["pt-BR"])}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-pt.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-pt.min.js deleted file mode 100644 index 6f285bdc..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-pt.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.pt)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-rm.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-rm.min.js deleted file mode 100644 index fc1295dc..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-rm.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional.rm={closeText:"Serrar",prevText:"&#x3C;Suandant",nextText:"Precedent&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.rm)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-ro.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-ro.min.js deleted file mode 100644 index 1a7e144e..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-ro.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional.ro={closeText:"Închide",prevText:"&#xAB; Luna precedentă",nextText:"Luna următoare &#xBB;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.ro)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-ru.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-ru.min.js deleted file mode 100644 index c39cb362..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-ru.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional.ru={closeText:"Закрыть",prevText:"&#x3C;Пред",nextText:"След&#x3E;",currentText:"Сегодня",monthNames:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],dayNamesShort:["вск","пнд","втр","срд","чтв","птн","сбт"],dayNamesMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Нед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.ru)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-sk.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-sk.min.js deleted file mode 100644 index 5e2f440b..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-sk.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional.sk={closeText:"Zavrieť",prevText:"&#x3C;Predchádzajúci",nextText:"Nasledujúci&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.sk)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-sl.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-sl.min.js deleted file mode 100644 index b7a6384e..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-sl.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional.sl={closeText:"Zapri",prevText:"&#x3C;Prejšnji",nextText:"Naslednji&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.sl)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-sq.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-sq.min.js deleted file mode 100644 index 0ba69646..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-sq.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional.sq={closeText:"mbylle",prevText:"&#x3C;mbrapa",nextText:"Përpara&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.sq)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-sr-SR.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-sr-SR.min.js deleted file mode 100644 index ad11cfbe..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-sr-SR.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional["sr-SR"]={closeText:"Zatvori",prevText:"&#x3C;",nextText:"&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional["sr-SR"])}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-sr.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-sr.min.js deleted file mode 100644 index 87ab6c6d..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-sr.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional.sr={closeText:"Затвори",prevText:"&#x3C;",nextText:"&#x3E;",currentText:"Данас",monthNames:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthNamesShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],dayNames:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],dayNamesShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],dayNamesMin:["Не","По","Ут","Ср","Че","Пе","Су"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.sr)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-sv.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-sv.min.js deleted file mode 100644 index 2c209312..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-sv.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional.sv={closeText:"Stäng",prevText:"&#xAB;Förra",nextText:"Nästa&#xBB;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.sv)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-ta.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-ta.min.js deleted file mode 100644 index 45cdf278..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-ta.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional.ta={closeText:"மூடு",prevText:"முன்னையது",nextText:"அடுத்தது",currentText:"இன்று",monthNames:["தை","மாசி","பங்குனி","சித்திரை","வைகாசி","ஆனி","ஆடி","ஆவணி","புரட்டாசி","ஐப்பசி","கார்த்திகை","மார்கழி"],monthNamesShort:["தை","மாசி","பங்","சித்","வைகா","ஆனி","ஆடி","ஆவ","புர","ஐப்","கார்","மார்"],dayNames:["ஞாயிற்றுக்கிழமை","திங்கட்கிழமை","செவ்வாய்க்கிழமை","புதன்கிழமை","வியாழக்கிழமை","வெள்ளிக்கிழமை","சனிக்கிழமை"],dayNamesShort:["ஞாயிறு","திங்கள்","செவ்வாய்","புதன்","வியாழன்","வெள்ளி","சனி"],dayNamesMin:["ஞா","தி","செ","பு","வி","வெ","ச"],weekHeader:"Не",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.ta)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-th.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-th.min.js deleted file mode 100644 index 53cc1d61..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-th.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional.th={closeText:"ปิด",prevText:"&#xAB;&#xA0;ย้อน",nextText:"ถัดไป&#xA0;&#xBB;",currentText:"วันนี้",monthNames:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],monthNamesShort:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],dayNames:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัสบดี","ศุกร์","เสาร์"],dayNamesShort:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],dayNamesMin:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.th)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-tj.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-tj.min.js deleted file mode 100644 index 3f11bac4..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-tj.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional.tj={closeText:"Идома",prevText:"&#x3c;Қафо",nextText:"Пеш&#x3e;",currentText:"Имрӯз",monthNames:["Январ","Феврал","Март","Апрел","Май","Июн","Июл","Август","Сентябр","Октябр","Ноябр","Декабр"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["якшанбе","душанбе","сешанбе","чоршанбе","панҷшанбе","ҷумъа","шанбе"],dayNamesShort:["якш","душ","сеш","чор","пан","ҷум","шан"],dayNamesMin:["Як","Дш","Сш","Чш","Пш","Ҷм","Шн"],weekHeader:"Хф",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.tj)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-tr.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-tr.min.js deleted file mode 100644 index 2718ca5c..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-tr.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional.tr={closeText:"kapat",prevText:"&#x3C;geri",nextText:"ileri&#x3e",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.tr)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-uk.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-uk.min.js deleted file mode 100644 index 0d4e5204..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-uk.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional.uk={closeText:"Закрити",prevText:"&#x3C;",nextText:"&#x3E;",currentText:"Сьогодні",monthNames:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],monthNamesShort:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],dayNames:["неділя","понеділок","вівторок","середа","четвер","п’ятниця","субота"],dayNamesShort:["нед","пнд","вів","срд","чтв","птн","сбт"],dayNamesMin:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Тиж",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.uk)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-vi.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-vi.min.js deleted file mode 100644 index 9edf1d5c..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-vi.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional.vi={closeText:"Đóng",prevText:"&#x3C;Trước",nextText:"Tiếp&#x3E;",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:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.vi)}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-zh-CN.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-zh-CN.min.js deleted file mode 100644 index 74a4169c..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-zh-CN.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional["zh-CN"]={closeText:"关闭",prevText:"&#x3C;上月",nextText:"下月&#x3E;",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"},e.datepicker.setDefaults(e.datepicker.regional["zh-CN"])}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-zh-HK.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-zh-HK.min.js deleted file mode 100644 index d4010abe..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-zh-HK.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional["zh-HK"]={closeText:"關閉",prevText:"&#x3C;上月",nextText:"下月&#x3E;",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"dd-mm-yy",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"},e.datepicker.setDefaults(e.datepicker.regional["zh-HK"])}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-zh-TW.min.js b/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-zh-TW.min.js deleted file mode 100644 index cab31782..00000000 --- a/assets/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-zh-TW.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional["zh-TW"]={closeText:"關閉",prevText:"&#x3C;上月",nextText:"下月&#x3E;",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy/mm/dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"},e.datepicker.setDefaults(e.datepicker.regional["zh-TW"])}); \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/images/animated-overlay.gif b/assets/js/plugins/jquery-ui/images/animated-overlay.gif deleted file mode 100644 index d441f75e..00000000 Binary files a/assets/js/plugins/jquery-ui/images/animated-overlay.gif and /dev/null differ diff --git a/assets/js/plugins/jquery-ui/images/ui-bg_flat_0_aaaaaa_40x100.png b/assets/js/plugins/jquery-ui/images/ui-bg_flat_0_aaaaaa_40x100.png deleted file mode 100644 index 5b5dab2a..00000000 Binary files a/assets/js/plugins/jquery-ui/images/ui-bg_flat_0_aaaaaa_40x100.png and /dev/null differ diff --git a/assets/js/plugins/jquery-ui/images/ui-bg_flat_75_ffffff_40x100.png b/assets/js/plugins/jquery-ui/images/ui-bg_flat_75_ffffff_40x100.png deleted file mode 100644 index ac8b229a..00000000 Binary files a/assets/js/plugins/jquery-ui/images/ui-bg_flat_75_ffffff_40x100.png and /dev/null differ diff --git a/assets/js/plugins/jquery-ui/images/ui-bg_glass_55_fbf9ee_1x400.png b/assets/js/plugins/jquery-ui/images/ui-bg_glass_55_fbf9ee_1x400.png deleted file mode 100644 index ad3d6346..00000000 Binary files a/assets/js/plugins/jquery-ui/images/ui-bg_glass_55_fbf9ee_1x400.png and /dev/null differ diff --git a/assets/js/plugins/jquery-ui/images/ui-bg_glass_65_ffffff_1x400.png b/assets/js/plugins/jquery-ui/images/ui-bg_glass_65_ffffff_1x400.png deleted file mode 100644 index 42ccba26..00000000 Binary files a/assets/js/plugins/jquery-ui/images/ui-bg_glass_65_ffffff_1x400.png and /dev/null differ diff --git a/assets/js/plugins/jquery-ui/images/ui-bg_glass_75_dadada_1x400.png b/assets/js/plugins/jquery-ui/images/ui-bg_glass_75_dadada_1x400.png deleted file mode 100644 index 5a46b47c..00000000 Binary files a/assets/js/plugins/jquery-ui/images/ui-bg_glass_75_dadada_1x400.png and /dev/null differ diff --git a/assets/js/plugins/jquery-ui/images/ui-bg_glass_75_e6e6e6_1x400.png b/assets/js/plugins/jquery-ui/images/ui-bg_glass_75_e6e6e6_1x400.png deleted file mode 100644 index 86c2baa6..00000000 Binary files a/assets/js/plugins/jquery-ui/images/ui-bg_glass_75_e6e6e6_1x400.png and /dev/null differ diff --git a/assets/js/plugins/jquery-ui/images/ui-bg_glass_95_fef1ec_1x400.png b/assets/js/plugins/jquery-ui/images/ui-bg_glass_95_fef1ec_1x400.png deleted file mode 100644 index 4443fdc1..00000000 Binary files a/assets/js/plugins/jquery-ui/images/ui-bg_glass_95_fef1ec_1x400.png and /dev/null differ diff --git a/assets/js/plugins/jquery-ui/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/assets/js/plugins/jquery-ui/images/ui-bg_highlight-soft_75_cccccc_1x100.png deleted file mode 100644 index 7c9fa6c6..00000000 Binary files a/assets/js/plugins/jquery-ui/images/ui-bg_highlight-soft_75_cccccc_1x100.png and /dev/null differ diff --git a/assets/js/plugins/jquery-ui/images/ui-icons_222222_256x240.png b/assets/js/plugins/jquery-ui/images/ui-icons_222222_256x240.png deleted file mode 100644 index ee039dc0..00000000 Binary files a/assets/js/plugins/jquery-ui/images/ui-icons_222222_256x240.png and /dev/null differ diff --git a/assets/js/plugins/jquery-ui/images/ui-icons_2e83ff_256x240.png b/assets/js/plugins/jquery-ui/images/ui-icons_2e83ff_256x240.png deleted file mode 100644 index 45e8928e..00000000 Binary files a/assets/js/plugins/jquery-ui/images/ui-icons_2e83ff_256x240.png and /dev/null differ diff --git a/assets/js/plugins/jquery-ui/images/ui-icons_454545_256x240.png b/assets/js/plugins/jquery-ui/images/ui-icons_454545_256x240.png deleted file mode 100644 index 7ec70d11..00000000 Binary files a/assets/js/plugins/jquery-ui/images/ui-icons_454545_256x240.png and /dev/null differ diff --git a/assets/js/plugins/jquery-ui/images/ui-icons_888888_256x240.png b/assets/js/plugins/jquery-ui/images/ui-icons_888888_256x240.png deleted file mode 100644 index 5ba708c3..00000000 Binary files a/assets/js/plugins/jquery-ui/images/ui-icons_888888_256x240.png and /dev/null differ diff --git a/assets/js/plugins/jquery-ui/images/ui-icons_cd0a0a_256x240.png b/assets/js/plugins/jquery-ui/images/ui-icons_cd0a0a_256x240.png deleted file mode 100644 index 7930a558..00000000 Binary files a/assets/js/plugins/jquery-ui/images/ui-icons_cd0a0a_256x240.png and /dev/null differ diff --git a/assets/js/plugins/jquery-ui/jquery-ui.css b/assets/js/plugins/jquery-ui/jquery-ui.css deleted file mode 100644 index 817bb1fe..00000000 --- a/assets/js/plugins/jquery-ui/jquery-ui.css +++ /dev/null @@ -1,1189 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Includes: jquery.ui.core.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css, jquery.ui.theme.css -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -/* Layout helpers -----------------------------------*/ -.ui-helper-hidden { - display: none; -} -.ui-helper-hidden-accessible { - border: 0; - clip: rect(0 0 0 0); - height: 1px; - margin: -1px; - overflow: hidden; - padding: 0; - position: absolute; - width: 1px; -} -.ui-helper-reset { - margin: 0; - padding: 0; - border: 0; - outline: 0; - line-height: 1.3; - text-decoration: none; - font-size: 100%; - list-style: none; -} -.ui-helper-clearfix:before, -.ui-helper-clearfix:after { - content: ""; - display: table; - border-collapse: collapse; -} -.ui-helper-clearfix:after { - clear: both; -} -.ui-helper-clearfix { - min-height: 0; /* support: IE7 */ -} -.ui-helper-zfix { - width: 100%; - height: 100%; - top: 0; - left: 0; - position: absolute; - opacity: 0; - filter:Alpha(Opacity=0); -} - -.ui-front { - z-index: 100; -} - - -/* Interaction Cues -----------------------------------*/ -.ui-state-disabled { - cursor: default !important; -} - - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { - display: block; - text-indent: -99999px; - overflow: hidden; - background-repeat: no-repeat; -} - - -/* Misc visuals -----------------------------------*/ - -/* Overlays */ -.ui-widget-overlay { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; -} - -.ui-accordion .ui-accordion-header { - display: block; - cursor: pointer; - position: relative; - margin-top: 2px; - padding: .5em .5em .5em .7em; - min-height: 0; /* support: IE7 */ -} -.ui-accordion .ui-accordion-icons { - padding-left: 2.2em; -} -.ui-accordion .ui-accordion-noicons { - padding-left: .7em; -} -.ui-accordion .ui-accordion-icons .ui-accordion-icons { - padding-left: 2.2em; -} -.ui-accordion .ui-accordion-header .ui-accordion-header-icon { - position: absolute; - left: .5em; - top: 50%; - margin-top: -8px; -} -.ui-accordion .ui-accordion-content { - padding: 1em 2.2em; - border-top: 0; - overflow: auto; -} - -.ui-autocomplete { - position: absolute; - top: 0; - left: 0; - cursor: default; -} - -.ui-button { - display: inline-block; - position: relative; - padding: 0; - line-height: normal; - margin-right: .1em; - cursor: pointer; - vertical-align: middle; - text-align: center; - overflow: visible; /* removes extra width in IE */ -} -.ui-button, -.ui-button:link, -.ui-button:visited, -.ui-button:hover, -.ui-button:active { - text-decoration: none; -} -/* to make room for the icon, a width needs to be set here */ -.ui-button-icon-only { - width: 2.2em; -} -/* button elements seem to need a little more width */ -button.ui-button-icon-only { - width: 2.4em; -} -.ui-button-icons-only { - width: 3.4em; -} -button.ui-button-icons-only { - width: 3.7em; -} - -/* button text element */ -.ui-button .ui-button-text { - display: block; - line-height: normal; -} -.ui-button-text-only .ui-button-text { - padding: .4em 1em; -} -.ui-button-icon-only .ui-button-text, -.ui-button-icons-only .ui-button-text { - padding: .4em; - text-indent: -9999999px; -} -.ui-button-text-icon-primary .ui-button-text, -.ui-button-text-icons .ui-button-text { - padding: .4em 1em .4em 2.1em; -} -.ui-button-text-icon-secondary .ui-button-text, -.ui-button-text-icons .ui-button-text { - padding: .4em 2.1em .4em 1em; -} -.ui-button-text-icons .ui-button-text { - padding-left: 2.1em; - padding-right: 2.1em; -} -/* no icon support for input elements, provide padding by default */ -input.ui-button { - padding: .4em 1em; -} - -/* button icon element(s) */ -.ui-button-icon-only .ui-icon, -.ui-button-text-icon-primary .ui-icon, -.ui-button-text-icon-secondary .ui-icon, -.ui-button-text-icons .ui-icon, -.ui-button-icons-only .ui-icon { - position: absolute; - top: 50%; - margin-top: -8px; -} -.ui-button-icon-only .ui-icon { - left: 50%; - margin-left: -8px; -} -.ui-button-text-icon-primary .ui-button-icon-primary, -.ui-button-text-icons .ui-button-icon-primary, -.ui-button-icons-only .ui-button-icon-primary { - left: .5em; -} -.ui-button-text-icon-secondary .ui-button-icon-secondary, -.ui-button-text-icons .ui-button-icon-secondary, -.ui-button-icons-only .ui-button-icon-secondary { - right: .5em; -} - -/* button sets */ -.ui-buttonset { - margin-right: 7px; -} -.ui-buttonset .ui-button { - margin-left: 0; - margin-right: -.3em; -} - -/* workarounds */ -/* reset extra padding in Firefox, see h5bp.com/l */ -input.ui-button::-moz-focus-inner, -button.ui-button::-moz-focus-inner { - border: 0; - padding: 0; -} - -.ui-datepicker { - width: 17em; - padding: .2em .2em 0; - display: none; -} -.ui-datepicker .ui-datepicker-header { - position: relative; - padding: .2em 0; -} -.ui-datepicker .ui-datepicker-prev, -.ui-datepicker .ui-datepicker-next { - position: absolute; - top: 2px; - width: 1.8em; - height: 1.8em; -} -.ui-datepicker .ui-datepicker-prev-hover, -.ui-datepicker .ui-datepicker-next-hover { - top: 1px; -} -.ui-datepicker .ui-datepicker-prev { - left: 2px; -} -.ui-datepicker .ui-datepicker-next { - right: 2px; -} -.ui-datepicker .ui-datepicker-prev-hover { - left: 1px; -} -.ui-datepicker .ui-datepicker-next-hover { - right: 1px; -} -.ui-datepicker .ui-datepicker-prev span, -.ui-datepicker .ui-datepicker-next span { - display: block; - position: absolute; - left: 50%; - margin-left: -8px; - top: 50%; - margin-top: -8px; -} -.ui-datepicker .ui-datepicker-title { - margin: 0 2.3em; - line-height: 1.8em; - text-align: center; -} -.ui-datepicker .ui-datepicker-title select { - font-size: 1em; - margin: 1px 0; -} -.ui-datepicker select.ui-datepicker-month, -.ui-datepicker select.ui-datepicker-year { - width: 49%; -} -.ui-datepicker table { - width: 100%; - font-size: .9em; - border-collapse: collapse; - margin: 0 0 .4em; -} -.ui-datepicker th { - padding: .7em .3em; - text-align: center; - font-weight: bold; - border: 0; -} -.ui-datepicker td { - border: 0; - padding: 1px; -} -.ui-datepicker td span, -.ui-datepicker td a { - display: block; - padding: .2em; - text-align: right; - text-decoration: none; -} -.ui-datepicker .ui-datepicker-buttonpane { - background-image: none; - margin: .7em 0 0 0; - padding: 0 .2em; - border-left: 0; - border-right: 0; - border-bottom: 0; -} -.ui-datepicker .ui-datepicker-buttonpane button { - float: right; - margin: .5em .2em .4em; - cursor: pointer; - padding: .2em .6em .3em .6em; - width: auto; - overflow: visible; -} -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { - float: left; -} - -/* with multiple calendars */ -.ui-datepicker.ui-datepicker-multi { - width: auto; -} -.ui-datepicker-multi .ui-datepicker-group { - float: left; -} -.ui-datepicker-multi .ui-datepicker-group table { - width: 95%; - margin: 0 auto .4em; -} -.ui-datepicker-multi-2 .ui-datepicker-group { - width: 50%; -} -.ui-datepicker-multi-3 .ui-datepicker-group { - width: 33.3%; -} -.ui-datepicker-multi-4 .ui-datepicker-group { - width: 25%; -} -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header, -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { - border-left-width: 0; -} -.ui-datepicker-multi .ui-datepicker-buttonpane { - clear: left; -} -.ui-datepicker-row-break { - clear: both; - width: 100%; - font-size: 0; -} - -/* RTL support */ -.ui-datepicker-rtl { - direction: rtl; -} -.ui-datepicker-rtl .ui-datepicker-prev { - right: 2px; - left: auto; -} -.ui-datepicker-rtl .ui-datepicker-next { - left: 2px; - right: auto; -} -.ui-datepicker-rtl .ui-datepicker-prev:hover { - right: 1px; - left: auto; -} -.ui-datepicker-rtl .ui-datepicker-next:hover { - left: 1px; - right: auto; -} -.ui-datepicker-rtl .ui-datepicker-buttonpane { - clear: right; -} -.ui-datepicker-rtl .ui-datepicker-buttonpane button { - float: left; -} -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current, -.ui-datepicker-rtl .ui-datepicker-group { - float: right; -} -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { - border-right-width: 0; - border-left-width: 1px; -} - -.ui-dialog { - overflow: hidden; - position: absolute; - top: 0; - left: 0; - padding: .2em; - outline: 0; -} -.ui-dialog .ui-dialog-titlebar { - padding: .4em 1em; - position: relative; -} -.ui-dialog .ui-dialog-title { - float: left; - margin: .1em 0; - white-space: nowrap; - width: 90%; - overflow: hidden; - text-overflow: ellipsis; -} -.ui-dialog .ui-dialog-titlebar-close { - position: absolute; - right: .3em; - top: 50%; - width: 20px; - margin: -10px 0 0 0; - padding: 1px; - height: 20px; -} -.ui-dialog .ui-dialog-content { - position: relative; - border: 0; - padding: .5em 1em; - background: none; - overflow: auto; -} -.ui-dialog .ui-dialog-buttonpane { - text-align: left; - border-width: 1px 0 0 0; - background-image: none; - margin-top: .5em; - padding: .3em 1em .5em .4em; -} -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { - float: right; -} -.ui-dialog .ui-dialog-buttonpane button { - margin: .5em .4em .5em 0; - cursor: pointer; -} -.ui-dialog .ui-resizable-se { - width: 12px; - height: 12px; - right: -5px; - bottom: -5px; - background-position: 16px 16px; -} -.ui-draggable .ui-dialog-titlebar { - cursor: move; -} - -.ui-menu { - list-style: none; - padding: 2px; - margin: 0; - display: block; - outline: none; -} -.ui-menu .ui-menu { - margin-top: -3px; - position: absolute; -} -.ui-menu .ui-menu-item { - margin: 0; - padding: 0; - width: 100%; - /* support: IE10, see #8844 */ - list-style-image: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); -} -.ui-menu .ui-menu-divider { - margin: 5px -2px 5px -2px; - height: 0; - font-size: 0; - line-height: 0; - border-width: 1px 0 0 0; -} -.ui-menu .ui-menu-item a { - text-decoration: none; - display: block; - padding: 2px .4em; - line-height: 1.5; - min-height: 0; /* support: IE7 */ - font-weight: normal; -} -.ui-menu .ui-menu-item a.ui-state-focus, -.ui-menu .ui-menu-item a.ui-state-active { - font-weight: normal; - margin: -1px; -} - -.ui-menu .ui-state-disabled { - font-weight: normal; - margin: .4em 0 .2em; - line-height: 1.5; -} -.ui-menu .ui-state-disabled a { - cursor: default; -} - -/* icon support */ -.ui-menu-icons { - position: relative; -} -.ui-menu-icons .ui-menu-item a { - position: relative; - padding-left: 2em; -} - -/* left-aligned */ -.ui-menu .ui-icon { - position: absolute; - top: .2em; - left: .2em; -} - -/* right-aligned */ -.ui-menu .ui-menu-icon { - position: static; - float: right; -} - -.ui-progressbar { - height: 2em; - text-align: left; - overflow: hidden; -} -.ui-progressbar .ui-progressbar-value { - margin: -1px; - height: 100%; -} -.ui-progressbar .ui-progressbar-overlay { - background: url("images/animated-overlay.gif"); - height: 100%; - filter: alpha(opacity=25); - opacity: 0.25; -} -.ui-progressbar-indeterminate .ui-progressbar-value { - background-image: none; -} - -.ui-resizable { - position: relative; -} -.ui-resizable-handle { - position: absolute; - font-size: 0.1px; - display: block; -} -.ui-resizable-disabled .ui-resizable-handle, -.ui-resizable-autohide .ui-resizable-handle { - display: none; -} -.ui-resizable-n { - cursor: n-resize; - height: 7px; - width: 100%; - top: -5px; - left: 0; -} -.ui-resizable-s { - cursor: s-resize; - height: 7px; - width: 100%; - bottom: -5px; - left: 0; -} -.ui-resizable-e { - cursor: e-resize; - width: 7px; - right: -5px; - top: 0; - height: 100%; -} -.ui-resizable-w { - cursor: w-resize; - width: 7px; - left: -5px; - top: 0; - height: 100%; -} -.ui-resizable-se { - cursor: se-resize; - width: 12px; - height: 12px; - right: 1px; - bottom: 1px; -} -.ui-resizable-sw { - cursor: sw-resize; - width: 9px; - height: 9px; - left: -5px; - bottom: -5px; -} -.ui-resizable-nw { - cursor: nw-resize; - width: 9px; - height: 9px; - left: -5px; - top: -5px; -} -.ui-resizable-ne { - cursor: ne-resize; - width: 9px; - height: 9px; - right: -5px; - top: -5px; -} - -.ui-selectable-helper { - position: absolute; - z-index: 100; - border: 1px dotted black; -} - -.ui-slider { - position: relative; - text-align: left; -} -.ui-slider .ui-slider-handle { - position: absolute; - z-index: 2; - width: 1.2em; - height: 1.2em; - cursor: default; -} -.ui-slider .ui-slider-range { - position: absolute; - z-index: 1; - font-size: .7em; - display: block; - border: 0; - background-position: 0 0; -} - -/* For IE8 - See #6727 */ -.ui-slider.ui-state-disabled .ui-slider-handle, -.ui-slider.ui-state-disabled .ui-slider-range { - filter: inherit; -} - -.ui-slider-horizontal { - height: .8em; -} -.ui-slider-horizontal .ui-slider-handle { - top: -.3em; - margin-left: -.6em; -} -.ui-slider-horizontal .ui-slider-range { - top: 0; - height: 100%; -} -.ui-slider-horizontal .ui-slider-range-min { - left: 0; -} -.ui-slider-horizontal .ui-slider-range-max { - right: 0; -} - -.ui-slider-vertical { - width: .8em; - height: 100px; -} -.ui-slider-vertical .ui-slider-handle { - left: -.3em; - margin-left: 0; - margin-bottom: -.6em; -} -.ui-slider-vertical .ui-slider-range { - left: 0; - width: 100%; -} -.ui-slider-vertical .ui-slider-range-min { - bottom: 0; -} -.ui-slider-vertical .ui-slider-range-max { - top: 0; -} - -.ui-spinner { - position: relative; - display: inline-block; - overflow: hidden; - padding: 0; - vertical-align: middle; -} -.ui-spinner-input { - border: none; - background: none; - color: inherit; - padding: 0; - margin: .2em 0; - vertical-align: middle; - margin-left: .4em; - margin-right: 22px; -} -.ui-spinner-button { - width: 16px; - height: 50%; - font-size: .5em; - padding: 0; - margin: 0; - text-align: center; - position: absolute; - cursor: default; - display: block; - overflow: hidden; - right: 0; -} -/* more specificity required here to override default borders */ -.ui-spinner a.ui-spinner-button { - border-top: none; - border-bottom: none; - border-right: none; -} -/* vertically center icon */ -.ui-spinner .ui-icon { - position: absolute; - margin-top: -8px; - top: 50%; - left: 0; -} -.ui-spinner-up { - top: 0; -} -.ui-spinner-down { - bottom: 0; -} - -/* TR overrides */ -.ui-spinner .ui-icon-triangle-1-s { - /* need to fix icons sprite */ - background-position: -65px -16px; -} - -.ui-tabs { - position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ - padding: .2em; -} -.ui-tabs .ui-tabs-nav { - margin: 0; - padding: .2em .2em 0; -} -.ui-tabs .ui-tabs-nav li { - list-style: none; - float: left; - position: relative; - top: 0; - margin: 1px .2em 0 0; - border-bottom-width: 0; - padding: 0; - white-space: nowrap; -} -.ui-tabs .ui-tabs-nav .ui-tabs-anchor { - float: left; - padding: .5em 1em; - text-decoration: none; -} -.ui-tabs .ui-tabs-nav li.ui-tabs-active { - margin-bottom: -1px; - padding-bottom: 1px; -} -.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor, -.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor, -.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor { - cursor: text; -} -.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor { - cursor: pointer; -} -.ui-tabs .ui-tabs-panel { - display: block; - border-width: 0; - padding: 1em 1.4em; - background: none; -} - -.ui-tooltip { - padding: 8px; - position: absolute; - z-index: 9999; - max-width: 300px; - -webkit-box-shadow: 0 0 5px #aaa; - box-shadow: 0 0 5px #aaa; -} -body .ui-tooltip { - border-width: 2px; -} - -/* Component containers -----------------------------------*/ -.ui-widget { - font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; - font-size: 1.1em/*{fsDefault}*/; -} -.ui-widget .ui-widget { - font-size: 1em; -} -.ui-widget input, -.ui-widget select, -.ui-widget textarea, -.ui-widget button { - font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; - font-size: 1em; -} -.ui-widget-content { - border: 1px solid #aaaaaa/*{borderColorContent}*/; - background: #ffffff/*{bgColorContent}*/ url(images/ui-bg_flat_75_ffffff_40x100.png)/*{bgImgUrlContent}*/ 50%/*{bgContentXPos}*/ 50%/*{bgContentYPos}*/ repeat-x/*{bgContentRepeat}*/; - color: #222222/*{fcContent}*/; -} -.ui-widget-content a { - color: #222222/*{fcContent}*/; -} -.ui-widget-header { - border: 1px solid #aaaaaa/*{borderColorHeader}*/; - background: #cccccc/*{bgColorHeader}*/ url(images/ui-bg_highlight-soft_75_cccccc_1x100.png)/*{bgImgUrlHeader}*/ 50%/*{bgHeaderXPos}*/ 50%/*{bgHeaderYPos}*/ repeat-x/*{bgHeaderRepeat}*/; - color: #222222/*{fcHeader}*/; - font-weight: bold; -} -.ui-widget-header a { - color: #222222/*{fcHeader}*/; -} - -/* Interaction states -----------------------------------*/ -.ui-state-default, -.ui-widget-content .ui-state-default, -.ui-widget-header .ui-state-default { - border: 1px solid #d3d3d3/*{borderColorDefault}*/; - background: #e6e6e6/*{bgColorDefault}*/ url(images/ui-bg_glass_75_e6e6e6_1x400.png)/*{bgImgUrlDefault}*/ 50%/*{bgDefaultXPos}*/ 50%/*{bgDefaultYPos}*/ repeat-x/*{bgDefaultRepeat}*/; - font-weight: normal/*{fwDefault}*/; - color: #555555/*{fcDefault}*/; -} -.ui-state-default a, -.ui-state-default a:link, -.ui-state-default a:visited { - color: #555555/*{fcDefault}*/; - text-decoration: none; -} -.ui-state-hover, -.ui-widget-content .ui-state-hover, -.ui-widget-header .ui-state-hover, -.ui-state-focus, -.ui-widget-content .ui-state-focus, -.ui-widget-header .ui-state-focus { - border: 1px solid #999999/*{borderColorHover}*/; - background: #dadada/*{bgColorHover}*/ url(images/ui-bg_glass_75_dadada_1x400.png)/*{bgImgUrlHover}*/ 50%/*{bgHoverXPos}*/ 50%/*{bgHoverYPos}*/ repeat-x/*{bgHoverRepeat}*/; - font-weight: normal/*{fwDefault}*/; - color: #212121/*{fcHover}*/; -} -.ui-state-hover a, -.ui-state-hover a:hover, -.ui-state-hover a:link, -.ui-state-hover a:visited, -.ui-state-focus a, -.ui-state-focus a:hover, -.ui-state-focus a:link, -.ui-state-focus a:visited { - color: #212121/*{fcHover}*/; - text-decoration: none; -} -.ui-state-active, -.ui-widget-content .ui-state-active, -.ui-widget-header .ui-state-active { - border: 1px solid #aaaaaa/*{borderColorActive}*/; - background: #ffffff/*{bgColorActive}*/ url(images/ui-bg_glass_65_ffffff_1x400.png)/*{bgImgUrlActive}*/ 50%/*{bgActiveXPos}*/ 50%/*{bgActiveYPos}*/ repeat-x/*{bgActiveRepeat}*/; - font-weight: normal/*{fwDefault}*/; - color: #212121/*{fcActive}*/; -} -.ui-state-active a, -.ui-state-active a:link, -.ui-state-active a:visited { - color: #212121/*{fcActive}*/; - text-decoration: none; -} - -/* Interaction Cues -----------------------------------*/ -.ui-state-highlight, -.ui-widget-content .ui-state-highlight, -.ui-widget-header .ui-state-highlight { - border: 1px solid #fcefa1/*{borderColorHighlight}*/; - background: #fbf9ee/*{bgColorHighlight}*/ url(images/ui-bg_glass_55_fbf9ee_1x400.png)/*{bgImgUrlHighlight}*/ 50%/*{bgHighlightXPos}*/ 50%/*{bgHighlightYPos}*/ repeat-x/*{bgHighlightRepeat}*/; - color: #363636/*{fcHighlight}*/; -} -.ui-state-highlight a, -.ui-widget-content .ui-state-highlight a, -.ui-widget-header .ui-state-highlight a { - color: #363636/*{fcHighlight}*/; -} -.ui-state-error, -.ui-widget-content .ui-state-error, -.ui-widget-header .ui-state-error { - border: 1px solid #cd0a0a/*{borderColorError}*/; - background: #fef1ec/*{bgColorError}*/ url(images/ui-bg_glass_95_fef1ec_1x400.png)/*{bgImgUrlError}*/ 50%/*{bgErrorXPos}*/ 50%/*{bgErrorYPos}*/ repeat-x/*{bgErrorRepeat}*/; - color: #cd0a0a/*{fcError}*/; -} -.ui-state-error a, -.ui-widget-content .ui-state-error a, -.ui-widget-header .ui-state-error a { - color: #cd0a0a/*{fcError}*/; -} -.ui-state-error-text, -.ui-widget-content .ui-state-error-text, -.ui-widget-header .ui-state-error-text { - color: #cd0a0a/*{fcError}*/; -} -.ui-priority-primary, -.ui-widget-content .ui-priority-primary, -.ui-widget-header .ui-priority-primary { - font-weight: bold; -} -.ui-priority-secondary, -.ui-widget-content .ui-priority-secondary, -.ui-widget-header .ui-priority-secondary { - opacity: .7; - filter:Alpha(Opacity=70); - font-weight: normal; -} -.ui-state-disabled, -.ui-widget-content .ui-state-disabled, -.ui-widget-header .ui-state-disabled { - opacity: .35; - filter:Alpha(Opacity=35); - background-image: none; -} -.ui-state-disabled .ui-icon { - filter:Alpha(Opacity=35); /* For IE8 - See #6059 */ -} - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { - width: 16px; - height: 16px; -} -.ui-icon, -.ui-widget-content .ui-icon { - background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; -} -.ui-widget-header .ui-icon { - background-image: url(images/ui-icons_222222_256x240.png)/*{iconsHeader}*/; -} -.ui-state-default .ui-icon { - background-image: url(images/ui-icons_888888_256x240.png)/*{iconsDefault}*/; -} -.ui-state-hover .ui-icon, -.ui-state-focus .ui-icon { - background-image: url(images/ui-icons_454545_256x240.png)/*{iconsHover}*/; -} -.ui-state-active .ui-icon { - background-image: url(images/ui-icons_454545_256x240.png)/*{iconsActive}*/; -} -.ui-state-highlight .ui-icon { - background-image: url(images/ui-icons_2e83ff_256x240.png)/*{iconsHighlight}*/; -} -.ui-state-error .ui-icon, -.ui-state-error-text .ui-icon { - background-image: url(images/ui-icons_cd0a0a_256x240.png)/*{iconsError}*/; -} - -/* positioning */ -.ui-icon-blank { background-position: 16px 16px; } -.ui-icon-carat-1-n { background-position: 0 0; } -.ui-icon-carat-1-ne { background-position: -16px 0; } -.ui-icon-carat-1-e { background-position: -32px 0; } -.ui-icon-carat-1-se { background-position: -48px 0; } -.ui-icon-carat-1-s { background-position: -64px 0; } -.ui-icon-carat-1-sw { background-position: -80px 0; } -.ui-icon-carat-1-w { background-position: -96px 0; } -.ui-icon-carat-1-nw { background-position: -112px 0; } -.ui-icon-carat-2-n-s { background-position: -128px 0; } -.ui-icon-carat-2-e-w { background-position: -144px 0; } -.ui-icon-triangle-1-n { background-position: 0 -16px; } -.ui-icon-triangle-1-ne { background-position: -16px -16px; } -.ui-icon-triangle-1-e { background-position: -32px -16px; } -.ui-icon-triangle-1-se { background-position: -48px -16px; } -.ui-icon-triangle-1-s { background-position: -64px -16px; } -.ui-icon-triangle-1-sw { background-position: -80px -16px; } -.ui-icon-triangle-1-w { background-position: -96px -16px; } -.ui-icon-triangle-1-nw { background-position: -112px -16px; } -.ui-icon-triangle-2-n-s { background-position: -128px -16px; } -.ui-icon-triangle-2-e-w { background-position: -144px -16px; } -.ui-icon-arrow-1-n { background-position: 0 -32px; } -.ui-icon-arrow-1-ne { background-position: -16px -32px; } -.ui-icon-arrow-1-e { background-position: -32px -32px; } -.ui-icon-arrow-1-se { background-position: -48px -32px; } -.ui-icon-arrow-1-s { background-position: -64px -32px; } -.ui-icon-arrow-1-sw { background-position: -80px -32px; } -.ui-icon-arrow-1-w { background-position: -96px -32px; } -.ui-icon-arrow-1-nw { background-position: -112px -32px; } -.ui-icon-arrow-2-n-s { background-position: -128px -32px; } -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } -.ui-icon-arrow-2-e-w { background-position: -160px -32px; } -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } -.ui-icon-arrowstop-1-n { background-position: -192px -32px; } -.ui-icon-arrowstop-1-e { background-position: -208px -32px; } -.ui-icon-arrowstop-1-s { background-position: -224px -32px; } -.ui-icon-arrowstop-1-w { background-position: -240px -32px; } -.ui-icon-arrowthick-1-n { background-position: 0 -48px; } -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } -.ui-icon-arrowthick-1-e { background-position: -32px -48px; } -.ui-icon-arrowthick-1-se { background-position: -48px -48px; } -.ui-icon-arrowthick-1-s { background-position: -64px -48px; } -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } -.ui-icon-arrowthick-1-w { background-position: -96px -48px; } -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } -.ui-icon-arrow-4 { background-position: 0 -80px; } -.ui-icon-arrow-4-diag { background-position: -16px -80px; } -.ui-icon-extlink { background-position: -32px -80px; } -.ui-icon-newwin { background-position: -48px -80px; } -.ui-icon-refresh { background-position: -64px -80px; } -.ui-icon-shuffle { background-position: -80px -80px; } -.ui-icon-transfer-e-w { background-position: -96px -80px; } -.ui-icon-transferthick-e-w { background-position: -112px -80px; } -.ui-icon-folder-collapsed { background-position: 0 -96px; } -.ui-icon-folder-open { background-position: -16px -96px; } -.ui-icon-document { background-position: -32px -96px; } -.ui-icon-document-b { background-position: -48px -96px; } -.ui-icon-note { background-position: -64px -96px; } -.ui-icon-mail-closed { background-position: -80px -96px; } -.ui-icon-mail-open { background-position: -96px -96px; } -.ui-icon-suitcase { background-position: -112px -96px; } -.ui-icon-comment { background-position: -128px -96px; } -.ui-icon-person { background-position: -144px -96px; } -.ui-icon-print { background-position: -160px -96px; } -.ui-icon-trash { background-position: -176px -96px; } -.ui-icon-locked { background-position: -192px -96px; } -.ui-icon-unlocked { background-position: -208px -96px; } -.ui-icon-bookmark { background-position: -224px -96px; } -.ui-icon-tag { background-position: -240px -96px; } -.ui-icon-home { background-position: 0 -112px; } -.ui-icon-flag { background-position: -16px -112px; } -.ui-icon-calendar { background-position: -32px -112px; } -.ui-icon-cart { background-position: -48px -112px; } -.ui-icon-pencil { background-position: -64px -112px; } -.ui-icon-clock { background-position: -80px -112px; } -.ui-icon-disk { background-position: -96px -112px; } -.ui-icon-calculator { background-position: -112px -112px; } -.ui-icon-zoomin { background-position: -128px -112px; } -.ui-icon-zoomout { background-position: -144px -112px; } -.ui-icon-search { background-position: -160px -112px; } -.ui-icon-wrench { background-position: -176px -112px; } -.ui-icon-gear { background-position: -192px -112px; } -.ui-icon-heart { background-position: -208px -112px; } -.ui-icon-star { background-position: -224px -112px; } -.ui-icon-link { background-position: -240px -112px; } -.ui-icon-cancel { background-position: 0 -128px; } -.ui-icon-plus { background-position: -16px -128px; } -.ui-icon-plusthick { background-position: -32px -128px; } -.ui-icon-minus { background-position: -48px -128px; } -.ui-icon-minusthick { background-position: -64px -128px; } -.ui-icon-close { background-position: -80px -128px; } -.ui-icon-closethick { background-position: -96px -128px; } -.ui-icon-key { background-position: -112px -128px; } -.ui-icon-lightbulb { background-position: -128px -128px; } -.ui-icon-scissors { background-position: -144px -128px; } -.ui-icon-clipboard { background-position: -160px -128px; } -.ui-icon-copy { background-position: -176px -128px; } -.ui-icon-contact { background-position: -192px -128px; } -.ui-icon-image { background-position: -208px -128px; } -.ui-icon-video { background-position: -224px -128px; } -.ui-icon-script { background-position: -240px -128px; } -.ui-icon-alert { background-position: 0 -144px; } -.ui-icon-info { background-position: -16px -144px; } -.ui-icon-notice { background-position: -32px -144px; } -.ui-icon-help { background-position: -48px -144px; } -.ui-icon-check { background-position: -64px -144px; } -.ui-icon-bullet { background-position: -80px -144px; } -.ui-icon-radio-on { background-position: -96px -144px; } -.ui-icon-radio-off { background-position: -112px -144px; } -.ui-icon-pin-w { background-position: -128px -144px; } -.ui-icon-pin-s { background-position: -144px -144px; } -.ui-icon-play { background-position: 0 -160px; } -.ui-icon-pause { background-position: -16px -160px; } -.ui-icon-seek-next { background-position: -32px -160px; } -.ui-icon-seek-prev { background-position: -48px -160px; } -.ui-icon-seek-end { background-position: -64px -160px; } -.ui-icon-seek-start { background-position: -80px -160px; } -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ -.ui-icon-seek-first { background-position: -80px -160px; } -.ui-icon-stop { background-position: -96px -160px; } -.ui-icon-eject { background-position: -112px -160px; } -.ui-icon-volume-off { background-position: -128px -160px; } -.ui-icon-volume-on { background-position: -144px -160px; } -.ui-icon-power { background-position: 0 -176px; } -.ui-icon-signal-diag { background-position: -16px -176px; } -.ui-icon-signal { background-position: -32px -176px; } -.ui-icon-battery-0 { background-position: -48px -176px; } -.ui-icon-battery-1 { background-position: -64px -176px; } -.ui-icon-battery-2 { background-position: -80px -176px; } -.ui-icon-battery-3 { background-position: -96px -176px; } -.ui-icon-circle-plus { background-position: 0 -192px; } -.ui-icon-circle-minus { background-position: -16px -192px; } -.ui-icon-circle-close { background-position: -32px -192px; } -.ui-icon-circle-triangle-e { background-position: -48px -192px; } -.ui-icon-circle-triangle-s { background-position: -64px -192px; } -.ui-icon-circle-triangle-w { background-position: -80px -192px; } -.ui-icon-circle-triangle-n { background-position: -96px -192px; } -.ui-icon-circle-arrow-e { background-position: -112px -192px; } -.ui-icon-circle-arrow-s { background-position: -128px -192px; } -.ui-icon-circle-arrow-w { background-position: -144px -192px; } -.ui-icon-circle-arrow-n { background-position: -160px -192px; } -.ui-icon-circle-zoomin { background-position: -176px -192px; } -.ui-icon-circle-zoomout { background-position: -192px -192px; } -.ui-icon-circle-check { background-position: -208px -192px; } -.ui-icon-circlesmall-plus { background-position: 0 -208px; } -.ui-icon-circlesmall-minus { background-position: -16px -208px; } -.ui-icon-circlesmall-close { background-position: -32px -208px; } -.ui-icon-squaresmall-plus { background-position: -48px -208px; } -.ui-icon-squaresmall-minus { background-position: -64px -208px; } -.ui-icon-squaresmall-close { background-position: -80px -208px; } -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } -.ui-icon-grip-solid-vertical { background-position: -32px -224px; } -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } -.ui-icon-grip-diagonal-se { background-position: -80px -224px; } - - -/* Misc visuals -----------------------------------*/ - -/* Corner radius */ -.ui-corner-all, -.ui-corner-top, -.ui-corner-left, -.ui-corner-tl { - border-top-left-radius: 4px/*{cornerRadius}*/; -} -.ui-corner-all, -.ui-corner-top, -.ui-corner-right, -.ui-corner-tr { - border-top-right-radius: 4px/*{cornerRadius}*/; -} -.ui-corner-all, -.ui-corner-bottom, -.ui-corner-left, -.ui-corner-bl { - border-bottom-left-radius: 4px/*{cornerRadius}*/; -} -.ui-corner-all, -.ui-corner-bottom, -.ui-corner-right, -.ui-corner-br { - border-bottom-right-radius: 4px/*{cornerRadius}*/; -} - -/* Overlays */ -.ui-widget-overlay { - background: #aaaaaa/*{bgColorOverlay}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlOverlay}*/ 50%/*{bgOverlayXPos}*/ 50%/*{bgOverlayYPos}*/ repeat-x/*{bgOverlayRepeat}*/; - opacity: .3/*{opacityOverlay}*/; - filter: Alpha(Opacity=30)/*{opacityFilterOverlay}*/; -} -.ui-widget-shadow { - margin: -8px/*{offsetTopShadow}*/ 0 0 -8px/*{offsetLeftShadow}*/; - padding: 8px/*{thicknessShadow}*/; - background: #aaaaaa/*{bgColorShadow}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlShadow}*/ 50%/*{bgShadowXPos}*/ 50%/*{bgShadowYPos}*/ repeat-x/*{bgShadowRepeat}*/; - opacity: .3/*{opacityShadow}*/; - filter: Alpha(Opacity=30)/*{opacityFilterShadow}*/; - border-radius: 8px/*{cornerRadiusShadow}*/; -} diff --git a/assets/js/plugins/jquery-ui/jquery-ui.js b/assets/js/plugins/jquery-ui/jquery-ui.js deleted file mode 100644 index a5ae96f1..00000000 --- a/assets/js/plugins/jquery-ui/jquery-ui.js +++ /dev/null @@ -1,15040 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.sortable.js, jquery.ui.effect.js, jquery.ui.accordion.js, jquery.ui.autocomplete.js, jquery.ui.button.js, jquery.ui.datepicker.js, jquery.ui.dialog.js, jquery.ui.effect-blind.js, jquery.ui.effect-bounce.js, jquery.ui.effect-clip.js, jquery.ui.effect-drop.js, jquery.ui.effect-explode.js, jquery.ui.effect-fade.js, jquery.ui.effect-fold.js, jquery.ui.effect-highlight.js, jquery.ui.effect-pulsate.js, jquery.ui.effect-scale.js, jquery.ui.effect-shake.js, jquery.ui.effect-slide.js, jquery.ui.effect-transfer.js, jquery.ui.menu.js, jquery.ui.position.js, jquery.ui.progressbar.js, jquery.ui.slider.js, jquery.ui.spinner.js, jquery.ui.tabs.js, jquery.ui.tooltip.js -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -(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.4", - - 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 ); - -(function( $, undefined ) { - -var uuid = 0, - slice = Array.prototype.slice, - _cleanData = $.cleanData; -$.cleanData = function( elems ) { - for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) { - try { - $( elem ).triggerHandler( "remove" ); - // http://bugs.jquery.com/ticket/8235 - } catch( e ) {} - } - _cleanData( elems ); -}; - -$.widget = function( name, base, prototype ) { - var fullName, existingConstructor, constructor, basePrototype, - // proxiedPrototype allows the provided prototype to remain unmodified - // so that it can be used as a mixin for multiple widgets (#8876) - proxiedPrototype = {}, - namespace = name.split( "." )[ 0 ]; - - name = name.split( "." )[ 1 ]; - fullName = namespace + "-" + name; - - if ( !prototype ) { - prototype = base; - base = $.Widget; - } - - // create selector for plugin - $.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) { - return !!$.data( elem, fullName ); - }; - - $[ namespace ] = $[ namespace ] || {}; - existingConstructor = $[ namespace ][ name ]; - constructor = $[ namespace ][ name ] = function( options, element ) { - // allow instantiation without "new" keyword - if ( !this._createWidget ) { - return new constructor( options, element ); - } - - // allow instantiation without initializing for simple inheritance - // must use "new" keyword (the code above always passes args) - if ( arguments.length ) { - this._createWidget( options, element ); - } - }; - // extend with the existing constructor to carry over any static properties - $.extend( constructor, existingConstructor, { - version: prototype.version, - // copy the object used to create the prototype in case we need to - // redefine the widget later - _proto: $.extend( {}, prototype ), - // track widgets that inherit from this widget in case this widget is - // redefined after a widget inherits from it - _childConstructors: [] - }); - - basePrototype = new base(); - // we need to make the options hash a property directly on the new instance - // otherwise we'll modify the options hash on the prototype that we're - // inheriting from - basePrototype.options = $.widget.extend( {}, basePrototype.options ); - $.each( prototype, function( prop, value ) { - if ( !$.isFunction( value ) ) { - proxiedPrototype[ prop ] = value; - return; - } - proxiedPrototype[ prop ] = (function() { - var _super = function() { - return base.prototype[ prop ].apply( this, arguments ); - }, - _superApply = function( args ) { - return base.prototype[ prop ].apply( this, args ); - }; - return function() { - var __super = this._super, - __superApply = this._superApply, - returnValue; - - this._super = _super; - this._superApply = _superApply; - - returnValue = value.apply( this, arguments ); - - this._super = __super; - this._superApply = __superApply; - - return returnValue; - }; - })(); - }); - constructor.prototype = $.widget.extend( basePrototype, { - // TODO: remove support for widgetEventPrefix - // always use the name + a colon as the prefix, e.g., draggable:start - // don't prefix for widgets that aren't DOM-based - widgetEventPrefix: existingConstructor ? (basePrototype.widgetEventPrefix || name) : name - }, proxiedPrototype, { - constructor: constructor, - namespace: namespace, - widgetName: name, - widgetFullName: fullName - }); - - // If this widget is being redefined then we need to find all widgets that - // are inheriting from it and redefine all of them so that they inherit from - // the new version of this widget. We're essentially trying to replace one - // level in the prototype chain. - if ( existingConstructor ) { - $.each( existingConstructor._childConstructors, function( i, child ) { - var childPrototype = child.prototype; - - // redefine the child widget using the same prototype that was - // originally used, but inherit from the new version of the base - $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto ); - }); - // remove the list of existing child constructors from the old constructor - // so the old child constructors can be garbage collected - delete existingConstructor._childConstructors; - } else { - base._childConstructors.push( constructor ); - } - - $.widget.bridge( name, constructor ); -}; - -$.widget.extend = function( target ) { - var input = slice.call( arguments, 1 ), - inputIndex = 0, - inputLength = input.length, - key, - value; - for ( ; inputIndex < inputLength; inputIndex++ ) { - for ( key in input[ inputIndex ] ) { - value = input[ inputIndex ][ key ]; - if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) { - // Clone objects - if ( $.isPlainObject( value ) ) { - target[ key ] = $.isPlainObject( target[ key ] ) ? - $.widget.extend( {}, target[ key ], value ) : - // Don't extend strings, arrays, etc. with objects - $.widget.extend( {}, value ); - // Copy everything else by reference - } else { - target[ key ] = value; - } - } - } - } - return target; -}; - -$.widget.bridge = function( name, object ) { - var fullName = object.prototype.widgetFullName || name; - $.fn[ name ] = function( options ) { - var isMethodCall = typeof options === "string", - args = slice.call( arguments, 1 ), - returnValue = this; - - // allow multiple hashes to be passed on init - options = !isMethodCall && args.length ? - $.widget.extend.apply( null, [ options ].concat(args) ) : - options; - - if ( isMethodCall ) { - this.each(function() { - var methodValue, - instance = $.data( this, fullName ); - if ( !instance ) { - return $.error( "cannot call methods on " + name + " prior to initialization; " + - "attempted to call method '" + options + "'" ); - } - if ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === "_" ) { - return $.error( "no such method '" + options + "' for " + name + " widget instance" ); - } - methodValue = instance[ options ].apply( instance, args ); - if ( methodValue !== instance && methodValue !== undefined ) { - returnValue = methodValue && methodValue.jquery ? - returnValue.pushStack( methodValue.get() ) : - methodValue; - return false; - } - }); - } else { - this.each(function() { - var instance = $.data( this, fullName ); - if ( instance ) { - instance.option( options || {} )._init(); - } else { - $.data( this, fullName, new object( options, this ) ); - } - }); - } - - return returnValue; - }; -}; - -$.Widget = function( /* options, element */ ) {}; -$.Widget._childConstructors = []; - -$.Widget.prototype = { - widgetName: "widget", - widgetEventPrefix: "", - defaultElement: "<div>", - options: { - disabled: false, - - // callbacks - create: null - }, - _createWidget: function( options, element ) { - element = $( element || this.defaultElement || this )[ 0 ]; - this.element = $( element ); - this.uuid = uuid++; - this.eventNamespace = "." + this.widgetName + this.uuid; - this.options = $.widget.extend( {}, - this.options, - this._getCreateOptions(), - options ); - - this.bindings = $(); - this.hoverable = $(); - this.focusable = $(); - - if ( element !== this ) { - $.data( element, this.widgetFullName, this ); - this._on( true, this.element, { - remove: function( event ) { - if ( event.target === element ) { - this.destroy(); - } - } - }); - this.document = $( element.style ? - // element within the document - element.ownerDocument : - // element is window or document - element.document || element ); - this.window = $( this.document[0].defaultView || this.document[0].parentWindow ); - } - - this._create(); - this._trigger( "create", null, this._getCreateEventData() ); - this._init(); - }, - _getCreateOptions: $.noop, - _getCreateEventData: $.noop, - _create: $.noop, - _init: $.noop, - - destroy: function() { - this._destroy(); - // we can probably remove the unbind calls in 2.0 - // all event bindings should go through this._on() - this.element - .unbind( this.eventNamespace ) - // 1.9 BC for #7810 - // TODO remove dual storage - .removeData( this.widgetName ) - .removeData( this.widgetFullName ) - // support: jquery <1.6.3 - // http://bugs.jquery.com/ticket/9413 - .removeData( $.camelCase( this.widgetFullName ) ); - this.widget() - .unbind( this.eventNamespace ) - .removeAttr( "aria-disabled" ) - .removeClass( - this.widgetFullName + "-disabled " + - "ui-state-disabled" ); - - // clean up events and states - this.bindings.unbind( this.eventNamespace ); - this.hoverable.removeClass( "ui-state-hover" ); - this.focusable.removeClass( "ui-state-focus" ); - }, - _destroy: $.noop, - - widget: function() { - return this.element; - }, - - option: function( key, value ) { - var options = key, - parts, - curOption, - i; - - if ( arguments.length === 0 ) { - // don't return a reference to the internal hash - return $.widget.extend( {}, this.options ); - } - - if ( typeof key === "string" ) { - // handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } } - options = {}; - parts = key.split( "." ); - key = parts.shift(); - if ( parts.length ) { - curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] ); - for ( i = 0; i < parts.length - 1; i++ ) { - curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {}; - curOption = curOption[ parts[ i ] ]; - } - key = parts.pop(); - if ( arguments.length === 1 ) { - return curOption[ key ] === undefined ? null : curOption[ key ]; - } - curOption[ key ] = value; - } else { - if ( arguments.length === 1 ) { - return this.options[ key ] === undefined ? null : this.options[ key ]; - } - options[ key ] = value; - } - } - - this._setOptions( options ); - - return this; - }, - _setOptions: function( options ) { - var key; - - for ( key in options ) { - this._setOption( key, options[ key ] ); - } - - return this; - }, - _setOption: function( key, value ) { - this.options[ key ] = value; - - if ( key === "disabled" ) { - this.widget() - .toggleClass( this.widgetFullName + "-disabled ui-state-disabled", !!value ) - .attr( "aria-disabled", value ); - this.hoverable.removeClass( "ui-state-hover" ); - this.focusable.removeClass( "ui-state-focus" ); - } - - return this; - }, - - enable: function() { - return this._setOption( "disabled", false ); - }, - disable: function() { - return this._setOption( "disabled", true ); - }, - - _on: function( suppressDisabledCheck, element, handlers ) { - var delegateElement, - instance = this; - - // no suppressDisabledCheck flag, shuffle arguments - if ( typeof suppressDisabledCheck !== "boolean" ) { - handlers = element; - element = suppressDisabledCheck; - suppressDisabledCheck = false; - } - - // no element argument, shuffle and use this.element - if ( !handlers ) { - handlers = element; - element = this.element; - delegateElement = this.widget(); - } else { - // accept selectors, DOM elements - element = delegateElement = $( element ); - this.bindings = this.bindings.add( element ); - } - - $.each( handlers, function( event, handler ) { - function handlerProxy() { - // allow widgets to customize the disabled handling - // - disabled as an array instead of boolean - // - disabled class as method for disabling individual parts - if ( !suppressDisabledCheck && - ( instance.options.disabled === true || - $( this ).hasClass( "ui-state-disabled" ) ) ) { - return; - } - return ( typeof handler === "string" ? instance[ handler ] : handler ) - .apply( instance, arguments ); - } - - // copy the guid so direct unbinding works - if ( typeof handler !== "string" ) { - handlerProxy.guid = handler.guid = - handler.guid || handlerProxy.guid || $.guid++; - } - - var match = event.match( /^(\w+)\s*(.*)$/ ), - eventName = match[1] + instance.eventNamespace, - selector = match[2]; - if ( selector ) { - delegateElement.delegate( selector, eventName, handlerProxy ); - } else { - element.bind( eventName, handlerProxy ); - } - }); - }, - - _off: function( element, eventName ) { - eventName = (eventName || "").split( " " ).join( this.eventNamespace + " " ) + this.eventNamespace; - element.unbind( eventName ).undelegate( eventName ); - }, - - _delay: function( handler, delay ) { - function handlerProxy() { - return ( typeof handler === "string" ? instance[ handler ] : handler ) - .apply( instance, arguments ); - } - var instance = this; - return setTimeout( handlerProxy, delay || 0 ); - }, - - _hoverable: function( element ) { - this.hoverable = this.hoverable.add( element ); - this._on( element, { - mouseenter: function( event ) { - $( event.currentTarget ).addClass( "ui-state-hover" ); - }, - mouseleave: function( event ) { - $( event.currentTarget ).removeClass( "ui-state-hover" ); - } - }); - }, - - _focusable: function( element ) { - this.focusable = this.focusable.add( element ); - this._on( element, { - focusin: function( event ) { - $( event.currentTarget ).addClass( "ui-state-focus" ); - }, - focusout: function( event ) { - $( event.currentTarget ).removeClass( "ui-state-focus" ); - } - }); - }, - - _trigger: function( type, event, data ) { - var prop, orig, - callback = this.options[ type ]; - - data = data || {}; - event = $.Event( event ); - event.type = ( type === this.widgetEventPrefix ? - type : - this.widgetEventPrefix + type ).toLowerCase(); - // the original event may come from any element - // so we need to reset the target on the new event - event.target = this.element[ 0 ]; - - // copy original event properties over to the new event - orig = event.originalEvent; - if ( orig ) { - for ( prop in orig ) { - if ( !( prop in event ) ) { - event[ prop ] = orig[ prop ]; - } - } - } - - this.element.trigger( event, data ); - return !( $.isFunction( callback ) && - callback.apply( this.element[0], [ event ].concat( data ) ) === false || - event.isDefaultPrevented() ); - } -}; - -$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) { - $.Widget.prototype[ "_" + method ] = function( element, options, callback ) { - if ( typeof options === "string" ) { - options = { effect: options }; - } - var hasOptions, - effectName = !options ? - method : - options === true || typeof options === "number" ? - defaultEffect : - options.effect || defaultEffect; - options = options || {}; - if ( typeof options === "number" ) { - options = { duration: options }; - } - hasOptions = !$.isEmptyObject( options ); - options.complete = callback; - if ( options.delay ) { - element.delay( options.delay ); - } - if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) { - element[ method ]( options ); - } else if ( effectName !== method && element[ effectName ] ) { - element[ effectName ]( options.duration, options.easing, callback ); - } else { - element.queue(function( next ) { - $( this )[ method ](); - if ( callback ) { - callback.call( element[ 0 ] ); - } - next(); - }); - } - }; -}); - -})( jQuery ); - -(function( $, undefined ) { - -var mouseHandled = false; -$( document ).mouseup( function() { - mouseHandled = false; -}); - -$.widget("ui.mouse", { - version: "1.10.4", - options: { - cancel: "input,textarea,button,select,option", - distance: 1, - delay: 0 - }, - _mouseInit: function() { - var that = this; - - this.element - .bind("mousedown."+this.widgetName, function(event) { - return that._mouseDown(event); - }) - .bind("click."+this.widgetName, function(event) { - if (true === $.data(event.target, that.widgetName + ".preventClickEvent")) { - $.removeData(event.target, that.widgetName + ".preventClickEvent"); - event.stopImmediatePropagation(); - return false; - } - }); - - this.started = false; - }, - - // TODO: make sure destroying one instance of mouse doesn't mess with - // other instances of mouse - _mouseDestroy: function() { - this.element.unbind("."+this.widgetName); - if ( this._mouseMoveDelegate ) { - $(document) - .unbind("mousemove."+this.widgetName, this._mouseMoveDelegate) - .unbind("mouseup."+this.widgetName, this._mouseUpDelegate); - } - }, - - _mouseDown: function(event) { - // don't let more than one widget handle mouseStart - if( mouseHandled ) { return; } - - // we may have missed mouseup (out of window) - (this._mouseStarted && this._mouseUp(event)); - - this._mouseDownEvent = event; - - var that = this, - btnIsLeft = (event.which === 1), - // event.target.nodeName works around a bug in IE 8 with - // disabled inputs (#7620) - elIsCancel = (typeof this.options.cancel === "string" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false); - if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) { - return true; - } - - this.mouseDelayMet = !this.options.delay; - if (!this.mouseDelayMet) { - this._mouseDelayTimer = setTimeout(function() { - that.mouseDelayMet = true; - }, this.options.delay); - } - - if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { - this._mouseStarted = (this._mouseStart(event) !== false); - if (!this._mouseStarted) { - event.preventDefault(); - return true; - } - } - - // Click event may never have fired (Gecko & Opera) - if (true === $.data(event.target, this.widgetName + ".preventClickEvent")) { - $.removeData(event.target, this.widgetName + ".preventClickEvent"); - } - - // these delegates are required to keep context - this._mouseMoveDelegate = function(event) { - return that._mouseMove(event); - }; - this._mouseUpDelegate = function(event) { - return that._mouseUp(event); - }; - $(document) - .bind("mousemove."+this.widgetName, this._mouseMoveDelegate) - .bind("mouseup."+this.widgetName, this._mouseUpDelegate); - - event.preventDefault(); - - mouseHandled = true; - return true; - }, - - _mouseMove: function(event) { - // IE mouseup check - mouseup happened when mouse was out of window - if ($.ui.ie && ( !document.documentMode || document.documentMode < 9 ) && !event.button) { - return this._mouseUp(event); - } - - if (this._mouseStarted) { - this._mouseDrag(event); - return event.preventDefault(); - } - - if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { - this._mouseStarted = - (this._mouseStart(this._mouseDownEvent, event) !== false); - (this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event)); - } - - return !this._mouseStarted; - }, - - _mouseUp: function(event) { - $(document) - .unbind("mousemove."+this.widgetName, this._mouseMoveDelegate) - .unbind("mouseup."+this.widgetName, this._mouseUpDelegate); - - if (this._mouseStarted) { - this._mouseStarted = false; - - if (event.target === this._mouseDownEvent.target) { - $.data(event.target, this.widgetName + ".preventClickEvent", true); - } - - this._mouseStop(event); - } - - return false; - }, - - _mouseDistanceMet: function(event) { - return (Math.max( - Math.abs(this._mouseDownEvent.pageX - event.pageX), - Math.abs(this._mouseDownEvent.pageY - event.pageY) - ) >= this.options.distance - ); - }, - - _mouseDelayMet: function(/* event */) { - return this.mouseDelayMet; - }, - - // These are placeholder methods, to be overriden by extending plugin - _mouseStart: function(/* event */) {}, - _mouseDrag: function(/* event */) {}, - _mouseStop: function(/* event */) {}, - _mouseCapture: function(/* event */) { return true; } -}); - -})(jQuery); - -(function( $, undefined ) { - -$.widget("ui.draggable", $.ui.mouse, { - version: "1.10.4", - 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); - -(function( $, undefined ) { - -function isOverAxis( x, reference, size ) { - return ( x > reference ) && ( x < ( reference + size ) ); -} - -$.widget("ui.droppable", { - version: "1.10.4", - 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 proportions, - o = this.options, - accept = o.accept; - - this.isover = false; - this.isout = true; - - this.accept = $.isFunction(accept) ? accept : function(d) { - return d.is(accept); - }; - - this.proportions = function( /* valueToWrite */ ) { - if ( arguments.length ) { - // Store the droppable's proportions - proportions = arguments[ 0 ]; - } else { - // Retrieve or derive the droppable's proportions - return proportions ? - proportions : - 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, - y1 = (draggable.positionAbs || draggable.position.absolute).top, - x2 = x1 + draggable.helperProportions.width, - y2 = y1 + draggable.helperProportions.height, - l = droppable.offset.left, - t = droppable.offset.top, - r = l + droppable.proportions().width, - 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); - -(function( $, undefined ) { - -function num(v) { - return parseInt(v, 10) || 0; -} - -function isNumber(value) { - return !isNaN(parseInt(value, 10)); -} - -$.widget("ui.resizable", $.ui.mouse, { - version: "1.10.4", - widgetEventPrefix: "resize", - options: { - alsoResize: false, - animate: false, - animateDuration: "slow", - animateEasing: "swing", - aspectRatio: false, - autoHide: false, - containment: false, - ghost: false, - grid: false, - handles: "e,s,se", - helper: false, - maxHeight: null, - maxWidth: null, - minHeight: 10, - minWidth: 10, - // See #7960 - zIndex: 90, - - // callbacks - resize: null, - start: null, - stop: null - }, - _create: function() { - - var n, i, handle, axis, hname, - that = this, - o = this.options; - this.element.addClass("ui-resizable"); - - $.extend(this, { - _aspectRatio: !!(o.aspectRatio), - aspectRatio: o.aspectRatio, - originalElement: this.element, - _proportionallyResizeElements: [], - _helper: o.helper || o.ghost || o.animate ? o.helper || "ui-resizable-helper" : null - }); - - //Wrap the element if it cannot hold child nodes - if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)) { - - //Create a wrapper element and set the wrapper to the new current internal element - this.element.wrap( - $("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({ - position: this.element.css("position"), - width: this.element.outerWidth(), - height: this.element.outerHeight(), - top: this.element.css("top"), - left: this.element.css("left") - }) - ); - - //Overwrite the original this.element - this.element = this.element.parent().data( - "ui-resizable", this.element.data("ui-resizable") - ); - - this.elementIsWrapper = true; - - //Move margins to the wrapper - this.element.css({ marginLeft: this.originalElement.css("marginLeft"), marginTop: this.originalElement.css("marginTop"), marginRight: this.originalElement.css("marginRight"), marginBottom: this.originalElement.css("marginBottom") }); - this.originalElement.css({ marginLeft: 0, marginTop: 0, marginRight: 0, marginBottom: 0}); - - //Prevent Safari textarea resize - this.originalResizeStyle = this.originalElement.css("resize"); - this.originalElement.css("resize", "none"); - - //Push the actual element to our proportionallyResize internal array - this._proportionallyResizeElements.push(this.originalElement.css({ position: "static", zoom: 1, display: "block" })); - - // avoid IE jump (hard set the margin) - this.originalElement.css({ margin: this.originalElement.css("margin") }); - - // fix handlers offset - this._proportionallyResize(); - - } - - this.handles = o.handles || (!$(".ui-resizable-handle", this.element).length ? "e,s,se" : { n: ".ui-resizable-n", e: ".ui-resizable-e", s: ".ui-resizable-s", w: ".ui-resizable-w", se: ".ui-resizable-se", sw: ".ui-resizable-sw", ne: ".ui-resizable-ne", nw: ".ui-resizable-nw" }); - if(this.handles.constructor === String) { - - if ( this.handles === "all") { - this.handles = "n,e,s,w,se,sw,ne,nw"; - } - - n = this.handles.split(","); - this.handles = {}; - - for(i = 0; i < n.length; i++) { - - handle = $.trim(n[i]); - hname = "ui-resizable-"+handle; - axis = $("<div class='ui-resizable-handle " + hname + "'></div>"); - - // Apply zIndex to all handles - see #7960 - axis.css({ zIndex: o.zIndex }); - - //TODO : What's going on here? - if ("se" === handle) { - axis.addClass("ui-icon ui-icon-gripsmall-diagonal-se"); - } - - //Insert into internal handles object and append to element - this.handles[handle] = ".ui-resizable-"+handle; - this.element.append(axis); - } - - } - - this._renderAxis = function(target) { - - var i, axis, padPos, padWrapper; - - target = target || this.element; - - for(i in this.handles) { - - if(this.handles[i].constructor === String) { - this.handles[i] = $(this.handles[i], this.element).show(); - } - - //Apply pad to wrapper element, needed to fix axis position (textarea, inputs, scrolls) - if (this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i)) { - - axis = $(this.handles[i], this.element); - - //Checking the correct pad and border - padWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth(); - - //The padding type i have to apply... - padPos = [ "padding", - /ne|nw|n/.test(i) ? "Top" : - /se|sw|s/.test(i) ? "Bottom" : - /^e$/.test(i) ? "Right" : "Left" ].join(""); - - target.css(padPos, padWrapper); - - this._proportionallyResize(); - - } - - //TODO: What's that good for? There's not anything to be executed left - if(!$(this.handles[i]).length) { - continue; - } - } - }; - - //TODO: make renderAxis a prototype function - this._renderAxis(this.element); - - this._handles = $(".ui-resizable-handle", this.element) - .disableSelection(); - - //Matching axis name - this._handles.mouseover(function() { - if (!that.resizing) { - if (this.className) { - axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i); - } - //Axis, default = se - that.axis = axis && axis[1] ? axis[1] : "se"; - } - }); - - //If we want to auto hide the elements - if (o.autoHide) { - this._handles.hide(); - $(this.element) - .addClass("ui-resizable-autohide") - .mouseenter(function() { - if (o.disabled) { - return; - } - $(this).removeClass("ui-resizable-autohide"); - that._handles.show(); - }) - .mouseleave(function(){ - if (o.disabled) { - return; - } - if (!that.resizing) { - $(this).addClass("ui-resizable-autohide"); - that._handles.hide(); - } - }); - } - - //Initialize the mouse interaction - this._mouseInit(); - - }, - - _destroy: function() { - - this._mouseDestroy(); - - var wrapper, - _destroy = function(exp) { - $(exp).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing") - .removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove(); - }; - - //TODO: Unwrap at same DOM position - if (this.elementIsWrapper) { - _destroy(this.element); - wrapper = this.element; - this.originalElement.css({ - position: wrapper.css("position"), - width: wrapper.outerWidth(), - height: wrapper.outerHeight(), - top: wrapper.css("top"), - left: wrapper.css("left") - }).insertAfter( wrapper ); - wrapper.remove(); - } - - this.originalElement.css("resize", this.originalResizeStyle); - _destroy(this.originalElement); - - return this; - }, - - _mouseCapture: function(event) { - var i, handle, - capture = false; - - for (i in this.handles) { - handle = $(this.handles[i])[0]; - if (handle === event.target || $.contains(handle, event.target)) { - capture = true; - } - } - - return !this.options.disabled && capture; - }, - - _mouseStart: function(event) { - - var curleft, curtop, cursor, - o = this.options, - iniPos = this.element.position(), - el = this.element; - - this.resizing = true; - - // bugfix for http://dev.jquery.com/ticket/1749 - if ( (/absolute/).test( el.css("position") ) ) { - el.css({ position: "absolute", top: el.css("top"), left: el.css("left") }); - } else if (el.is(".ui-draggable")) { - el.css({ position: "absolute", top: iniPos.top, left: iniPos.left }); - } - - this._renderProxy(); - - curleft = num(this.helper.css("left")); - curtop = num(this.helper.css("top")); - - if (o.containment) { - curleft += $(o.containment).scrollLeft() || 0; - curtop += $(o.containment).scrollTop() || 0; - } - - //Store needed variables - this.offset = this.helper.offset(); - this.position = { left: curleft, top: curtop }; - this.size = this._helper ? { width: this.helper.width(), height: this.helper.height() } : { width: el.width(), height: el.height() }; - this.originalSize = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() }; - this.originalPosition = { left: curleft, top: curtop }; - this.sizeDiff = { width: el.outerWidth() - el.width(), height: el.outerHeight() - el.height() }; - this.originalMousePosition = { left: event.pageX, top: event.pageY }; - - //Aspect Ratio - this.aspectRatio = (typeof o.aspectRatio === "number") ? o.aspectRatio : ((this.originalSize.width / this.originalSize.height) || 1); - - cursor = $(".ui-resizable-" + this.axis).css("cursor"); - $("body").css("cursor", cursor === "auto" ? this.axis + "-resize" : cursor); - - el.addClass("ui-resizable-resizing"); - this._propagate("start", event); - return true; - }, - - _mouseDrag: function(event) { - - //Increase performance, avoid regex - var data, - el = this.helper, props = {}, - smp = this.originalMousePosition, - a = this.axis, - prevTop = this.position.top, - prevLeft = this.position.left, - prevWidth = this.size.width, - prevHeight = this.size.height, - dx = (event.pageX-smp.left)||0, - dy = (event.pageY-smp.top)||0, - trigger = this._change[a]; - - if (!trigger) { - return false; - } - - // Calculate the attrs that will be change - data = trigger.apply(this, [event, dx, dy]); - - // Put this in the mouseDrag handler since the user can start pressing shift while resizing - this._updateVirtualBoundaries(event.shiftKey); - if (this._aspectRatio || event.shiftKey) { - data = this._updateRatio(data, event); - } - - data = this._respectSize(data, event); - - this._updateCache(data); - - // plugins callbacks need to be called first - this._propagate("resize", event); - - if (this.position.top !== prevTop) { - props.top = this.position.top + "px"; - } - if (this.position.left !== prevLeft) { - props.left = this.position.left + "px"; - } - if (this.size.width !== prevWidth) { - props.width = this.size.width + "px"; - } - if (this.size.height !== prevHeight) { - props.height = this.size.height + "px"; - } - el.css(props); - - if (!this._helper && this._proportionallyResizeElements.length) { - this._proportionallyResize(); - } - - // Call the user callback if the element was resized - if ( ! $.isEmptyObject(props) ) { - this._trigger("resize", event, this.ui()); - } - - return false; - }, - - _mouseStop: function(event) { - - this.resizing = false; - var pr, ista, soffseth, soffsetw, s, left, top, - o = this.options, that = this; - - if(this._helper) { - - pr = this._proportionallyResizeElements; - ista = pr.length && (/textarea/i).test(pr[0].nodeName); - soffseth = ista && $.ui.hasScroll(pr[0], "left") /* TODO - jump height */ ? 0 : that.sizeDiff.height; - soffsetw = ista ? 0 : that.sizeDiff.width; - - s = { width: (that.helper.width() - soffsetw), height: (that.helper.height() - soffseth) }; - left = (parseInt(that.element.css("left"), 10) + (that.position.left - that.originalPosition.left)) || null; - top = (parseInt(that.element.css("top"), 10) + (that.position.top - that.originalPosition.top)) || null; - - if (!o.animate) { - this.element.css($.extend(s, { top: top, left: left })); - } - - that.helper.height(that.size.height); - that.helper.width(that.size.width); - - if (this._helper && !o.animate) { - this._proportionallyResize(); - } - } - - $("body").css("cursor", "auto"); - - this.element.removeClass("ui-resizable-resizing"); - - this._propagate("stop", event); - - if (this._helper) { - this.helper.remove(); - } - - return false; - - }, - - _updateVirtualBoundaries: function(forceAspectRatio) { - var pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b, - o = this.options; - - b = { - minWidth: isNumber(o.minWidth) ? o.minWidth : 0, - maxWidth: isNumber(o.maxWidth) ? o.maxWidth : Infinity, - minHeight: isNumber(o.minHeight) ? o.minHeight : 0, - maxHeight: isNumber(o.maxHeight) ? o.maxHeight : Infinity - }; - - if(this._aspectRatio || forceAspectRatio) { - // We want to create an enclosing box whose aspect ration is the requested one - // First, compute the "projected" size for each dimension based on the aspect ratio and other dimension - pMinWidth = b.minHeight * this.aspectRatio; - pMinHeight = b.minWidth / this.aspectRatio; - pMaxWidth = b.maxHeight * this.aspectRatio; - pMaxHeight = b.maxWidth / this.aspectRatio; - - if(pMinWidth > b.minWidth) { - b.minWidth = pMinWidth; - } - if(pMinHeight > b.minHeight) { - b.minHeight = pMinHeight; - } - if(pMaxWidth < b.maxWidth) { - b.maxWidth = pMaxWidth; - } - if(pMaxHeight < b.maxHeight) { - b.maxHeight = pMaxHeight; - } - } - this._vBoundaries = b; - }, - - _updateCache: function(data) { - this.offset = this.helper.offset(); - if (isNumber(data.left)) { - this.position.left = data.left; - } - if (isNumber(data.top)) { - this.position.top = data.top; - } - if (isNumber(data.height)) { - this.size.height = data.height; - } - if (isNumber(data.width)) { - this.size.width = data.width; - } - }, - - _updateRatio: function( data ) { - - var cpos = this.position, - csize = this.size, - a = this.axis; - - if (isNumber(data.height)) { - data.width = (data.height * this.aspectRatio); - } else if (isNumber(data.width)) { - data.height = (data.width / this.aspectRatio); - } - - if (a === "sw") { - data.left = cpos.left + (csize.width - data.width); - data.top = null; - } - if (a === "nw") { - data.top = cpos.top + (csize.height - data.height); - data.left = cpos.left + (csize.width - data.width); - } - - return data; - }, - - _respectSize: function( data ) { - - var o = this._vBoundaries, - a = this.axis, - ismaxw = isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width), ismaxh = isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height), - isminw = isNumber(data.width) && o.minWidth && (o.minWidth > data.width), isminh = isNumber(data.height) && o.minHeight && (o.minHeight > data.height), - dw = this.originalPosition.left + this.originalSize.width, - dh = this.position.top + this.size.height, - cw = /sw|nw|w/.test(a), ch = /nw|ne|n/.test(a); - if (isminw) { - data.width = o.minWidth; - } - if (isminh) { - data.height = o.minHeight; - } - if (ismaxw) { - data.width = o.maxWidth; - } - if (ismaxh) { - data.height = o.maxHeight; - } - - if (isminw && cw) { - data.left = dw - o.minWidth; - } - if (ismaxw && cw) { - data.left = dw - o.maxWidth; - } - if (isminh && ch) { - data.top = dh - o.minHeight; - } - if (ismaxh && ch) { - data.top = dh - o.maxHeight; - } - - // fixing jump error on top/left - bug #2330 - if (!data.width && !data.height && !data.left && data.top) { - data.top = null; - } else if (!data.width && !data.height && !data.top && data.left) { - data.left = null; - } - - return data; - }, - - _proportionallyResize: function() { - - if (!this._proportionallyResizeElements.length) { - return; - } - - var i, j, borders, paddings, prel, - element = this.helper || this.element; - - for ( i=0; i < this._proportionallyResizeElements.length; i++) { - - prel = this._proportionallyResizeElements[i]; - - if (!this.borderDif) { - this.borderDif = []; - borders = [prel.css("borderTopWidth"), prel.css("borderRightWidth"), prel.css("borderBottomWidth"), prel.css("borderLeftWidth")]; - paddings = [prel.css("paddingTop"), prel.css("paddingRight"), prel.css("paddingBottom"), prel.css("paddingLeft")]; - - for ( j = 0; j < borders.length; j++ ) { - this.borderDif[ j ] = ( parseInt( borders[ j ], 10 ) || 0 ) + ( parseInt( paddings[ j ], 10 ) || 0 ); - } - } - - prel.css({ - height: (element.height() - this.borderDif[0] - this.borderDif[2]) || 0, - width: (element.width() - this.borderDif[1] - this.borderDif[3]) || 0 - }); - - } - - }, - - _renderProxy: function() { - - var el = this.element, o = this.options; - this.elementOffset = el.offset(); - - if(this._helper) { - - this.helper = this.helper || $("<div style='overflow:hidden;'></div>"); - - this.helper.addClass(this._helper).css({ - width: this.element.outerWidth() - 1, - height: this.element.outerHeight() - 1, - position: "absolute", - left: this.elementOffset.left +"px", - top: this.elementOffset.top +"px", - zIndex: ++o.zIndex //TODO: Don't modify option - }); - - this.helper - .appendTo("body") - .disableSelection(); - - } else { - this.helper = this.element; - } - - }, - - _change: { - e: function(event, dx) { - return { width: this.originalSize.width + dx }; - }, - w: function(event, dx) { - var cs = this.originalSize, sp = this.originalPosition; - return { left: sp.left + dx, width: cs.width - dx }; - }, - n: function(event, dx, dy) { - var cs = this.originalSize, sp = this.originalPosition; - return { top: sp.top + dy, height: cs.height - dy }; - }, - s: function(event, dx, dy) { - return { height: this.originalSize.height + dy }; - }, - se: function(event, dx, dy) { - return $.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [event, dx, dy])); - }, - sw: function(event, dx, dy) { - return $.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [event, dx, dy])); - }, - ne: function(event, dx, dy) { - return $.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [event, dx, dy])); - }, - nw: function(event, dx, dy) { - return $.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [event, dx, dy])); - } - }, - - _propagate: function(n, event) { - $.ui.plugin.call(this, n, [event, this.ui()]); - (n !== "resize" && this._trigger(n, event, this.ui())); - }, - - plugins: {}, - - ui: function() { - return { - originalElement: this.originalElement, - element: this.element, - helper: this.helper, - position: this.position, - size: this.size, - originalSize: this.originalSize, - originalPosition: this.originalPosition - }; - } - -}); - -/* - * Resizable Extensions - */ - -$.ui.plugin.add("resizable", "animate", { - - stop: function( event ) { - var that = $(this).data("ui-resizable"), - o = that.options, - pr = that._proportionallyResizeElements, - ista = pr.length && (/textarea/i).test(pr[0].nodeName), - soffseth = ista && $.ui.hasScroll(pr[0], "left") /* TODO - jump height */ ? 0 : that.sizeDiff.height, - soffsetw = ista ? 0 : that.sizeDiff.width, - style = { width: (that.size.width - soffsetw), height: (that.size.height - soffseth) }, - left = (parseInt(that.element.css("left"), 10) + (that.position.left - that.originalPosition.left)) || null, - top = (parseInt(that.element.css("top"), 10) + (that.position.top - that.originalPosition.top)) || null; - - that.element.animate( - $.extend(style, top && left ? { top: top, left: left } : {}), { - duration: o.animateDuration, - easing: o.animateEasing, - step: function() { - - var data = { - width: parseInt(that.element.css("width"), 10), - height: parseInt(that.element.css("height"), 10), - top: parseInt(that.element.css("top"), 10), - left: parseInt(that.element.css("left"), 10) - }; - - if (pr && pr.length) { - $(pr[0]).css({ width: data.width, height: data.height }); - } - - // propagating resize, and updating values for each animation step - that._updateCache(data); - that._propagate("resize", event); - - } - } - ); - } - -}); - -$.ui.plugin.add("resizable", "containment", { - - start: function() { - var element, p, co, ch, cw, width, height, - that = $(this).data("ui-resizable"), - o = that.options, - el = that.element, - oc = o.containment, - ce = (oc instanceof $) ? oc.get(0) : (/parent/.test(oc)) ? el.parent().get(0) : oc; - - if (!ce) { - return; - } - - that.containerElement = $(ce); - - if (/document/.test(oc) || oc === document) { - that.containerOffset = { left: 0, top: 0 }; - that.containerPosition = { left: 0, top: 0 }; - - that.parentData = { - element: $(document), left: 0, top: 0, - width: $(document).width(), height: $(document).height() || document.body.parentNode.scrollHeight - }; - } - - // i'm a node, so compute top, left, right, bottom - else { - element = $(ce); - p = []; - $([ "Top", "Right", "Left", "Bottom" ]).each(function(i, name) { p[i] = num(element.css("padding" + name)); }); - - that.containerOffset = element.offset(); - that.containerPosition = element.position(); - that.containerSize = { height: (element.innerHeight() - p[3]), width: (element.innerWidth() - p[1]) }; - - co = that.containerOffset; - ch = that.containerSize.height; - cw = that.containerSize.width; - width = ($.ui.hasScroll(ce, "left") ? ce.scrollWidth : cw ); - height = ($.ui.hasScroll(ce) ? ce.scrollHeight : ch); - - that.parentData = { - element: ce, left: co.left, top: co.top, width: width, height: height - }; - } - }, - - resize: function( event ) { - var woset, hoset, isParent, isOffsetRelative, - that = $(this).data("ui-resizable"), - o = that.options, - co = that.containerOffset, cp = that.position, - pRatio = that._aspectRatio || event.shiftKey, - cop = { top:0, left:0 }, ce = that.containerElement; - - if (ce[0] !== document && (/static/).test(ce.css("position"))) { - cop = co; - } - - if (cp.left < (that._helper ? co.left : 0)) { - that.size.width = that.size.width + (that._helper ? (that.position.left - co.left) : (that.position.left - cop.left)); - if (pRatio) { - that.size.height = that.size.width / that.aspectRatio; - } - that.position.left = o.helper ? co.left : 0; - } - - if (cp.top < (that._helper ? co.top : 0)) { - that.size.height = that.size.height + (that._helper ? (that.position.top - co.top) : that.position.top); - if (pRatio) { - that.size.width = that.size.height * that.aspectRatio; - } - that.position.top = that._helper ? co.top : 0; - } - - that.offset.left = that.parentData.left+that.position.left; - that.offset.top = that.parentData.top+that.position.top; - - woset = Math.abs( (that._helper ? that.offset.left - cop.left : (that.offset.left - cop.left)) + that.sizeDiff.width ); - hoset = Math.abs( (that._helper ? that.offset.top - cop.top : (that.offset.top - co.top)) + that.sizeDiff.height ); - - isParent = that.containerElement.get(0) === that.element.parent().get(0); - isOffsetRelative = /relative|absolute/.test(that.containerElement.css("position")); - - if ( isParent && isOffsetRelative ) { - woset -= Math.abs( that.parentData.left ); - } - - if (woset + that.size.width >= that.parentData.width) { - that.size.width = that.parentData.width - woset; - if (pRatio) { - that.size.height = that.size.width / that.aspectRatio; - } - } - - if (hoset + that.size.height >= that.parentData.height) { - that.size.height = that.parentData.height - hoset; - if (pRatio) { - that.size.width = that.size.height * that.aspectRatio; - } - } - }, - - stop: function(){ - var that = $(this).data("ui-resizable"), - o = that.options, - co = that.containerOffset, - cop = that.containerPosition, - ce = that.containerElement, - helper = $(that.helper), - ho = helper.offset(), - w = helper.outerWidth() - that.sizeDiff.width, - h = helper.outerHeight() - that.sizeDiff.height; - - if (that._helper && !o.animate && (/relative/).test(ce.css("position"))) { - $(this).css({ left: ho.left - cop.left - co.left, width: w, height: h }); - } - - if (that._helper && !o.animate && (/static/).test(ce.css("position"))) { - $(this).css({ left: ho.left - cop.left - co.left, width: w, height: h }); - } - - } -}); - -$.ui.plugin.add("resizable", "alsoResize", { - - start: function () { - var that = $(this).data("ui-resizable"), - o = that.options, - _store = function (exp) { - $(exp).each(function() { - var el = $(this); - el.data("ui-resizable-alsoresize", { - width: parseInt(el.width(), 10), height: parseInt(el.height(), 10), - left: parseInt(el.css("left"), 10), top: parseInt(el.css("top"), 10) - }); - }); - }; - - if (typeof(o.alsoResize) === "object" && !o.alsoResize.parentNode) { - if (o.alsoResize.length) { o.alsoResize = o.alsoResize[0]; _store(o.alsoResize); } - else { $.each(o.alsoResize, function (exp) { _store(exp); }); } - }else{ - _store(o.alsoResize); - } - }, - - resize: function (event, ui) { - var that = $(this).data("ui-resizable"), - o = that.options, - os = that.originalSize, - op = that.originalPosition, - delta = { - height: (that.size.height - os.height) || 0, width: (that.size.width - os.width) || 0, - top: (that.position.top - op.top) || 0, left: (that.position.left - op.left) || 0 - }, - - _alsoResize = function (exp, c) { - $(exp).each(function() { - var el = $(this), start = $(this).data("ui-resizable-alsoresize"), style = {}, - css = c && c.length ? c : el.parents(ui.originalElement[0]).length ? ["width", "height"] : ["width", "height", "top", "left"]; - - $.each(css, function (i, prop) { - var sum = (start[prop]||0) + (delta[prop]||0); - if (sum && sum >= 0) { - style[prop] = sum || null; - } - }); - - el.css(style); - }); - }; - - if (typeof(o.alsoResize) === "object" && !o.alsoResize.nodeType) { - $.each(o.alsoResize, function (exp, c) { _alsoResize(exp, c); }); - }else{ - _alsoResize(o.alsoResize); - } - }, - - stop: function () { - $(this).removeData("resizable-alsoresize"); - } -}); - -$.ui.plugin.add("resizable", "ghost", { - - start: function() { - - var that = $(this).data("ui-resizable"), o = that.options, cs = that.size; - - that.ghost = that.originalElement.clone(); - that.ghost - .css({ opacity: 0.25, display: "block", position: "relative", height: cs.height, width: cs.width, margin: 0, left: 0, top: 0 }) - .addClass("ui-resizable-ghost") - .addClass(typeof o.ghost === "string" ? o.ghost : ""); - - that.ghost.appendTo(that.helper); - - }, - - resize: function(){ - var that = $(this).data("ui-resizable"); - if (that.ghost) { - that.ghost.css({ position: "relative", height: that.size.height, width: that.size.width }); - } - }, - - stop: function() { - var that = $(this).data("ui-resizable"); - if (that.ghost && that.helper) { - that.helper.get(0).removeChild(that.ghost.get(0)); - } - } - -}); - -$.ui.plugin.add("resizable", "grid", { - - resize: function() { - var that = $(this).data("ui-resizable"), - o = that.options, - cs = that.size, - os = that.originalSize, - op = that.originalPosition, - a = that.axis, - grid = typeof o.grid === "number" ? [o.grid, o.grid] : o.grid, - gridX = (grid[0]||1), - gridY = (grid[1]||1), - ox = Math.round((cs.width - os.width) / gridX) * gridX, - oy = Math.round((cs.height - os.height) / gridY) * gridY, - newWidth = os.width + ox, - newHeight = os.height + oy, - isMaxWidth = o.maxWidth && (o.maxWidth < newWidth), - isMaxHeight = o.maxHeight && (o.maxHeight < newHeight), - isMinWidth = o.minWidth && (o.minWidth > newWidth), - isMinHeight = o.minHeight && (o.minHeight > newHeight); - - o.grid = grid; - - if (isMinWidth) { - newWidth = newWidth + gridX; - } - if (isMinHeight) { - newHeight = newHeight + gridY; - } - if (isMaxWidth) { - newWidth = newWidth - gridX; - } - if (isMaxHeight) { - newHeight = newHeight - gridY; - } - - if (/^(se|s|e)$/.test(a)) { - that.size.width = newWidth; - that.size.height = newHeight; - } else if (/^(ne)$/.test(a)) { - that.size.width = newWidth; - that.size.height = newHeight; - that.position.top = op.top - oy; - } else if (/^(sw)$/.test(a)) { - that.size.width = newWidth; - that.size.height = newHeight; - that.position.left = op.left - ox; - } else { - if ( newHeight - gridY > 0 ) { - that.size.height = newHeight; - that.position.top = op.top - oy; - } else { - that.size.height = gridY; - that.position.top = op.top + os.height - gridY; - } - if ( newWidth - gridX > 0 ) { - that.size.width = newWidth; - that.position.left = op.left - ox; - } else { - that.size.width = gridX; - that.position.left = op.left + os.width - gridX; - } - } - } - -}); - -})(jQuery); - -(function( $, undefined ) { - -$.widget("ui.selectable", $.ui.mouse, { - version: "1.10.4", - options: { - appendTo: "body", - autoRefresh: true, - distance: 0, - filter: "*", - tolerance: "touch", - - // callbacks - selected: null, - selecting: null, - start: null, - stop: null, - unselected: null, - unselecting: null - }, - _create: function() { - var selectees, - that = this; - - this.element.addClass("ui-selectable"); - - this.dragged = false; - - // cache selectee children based on filter - this.refresh = function() { - selectees = $(that.options.filter, that.element[0]); - selectees.addClass("ui-selectee"); - selectees.each(function() { - var $this = $(this), - pos = $this.offset(); - $.data(this, "selectable-item", { - element: this, - $element: $this, - left: pos.left, - top: pos.top, - right: pos.left + $this.outerWidth(), - bottom: pos.top + $this.outerHeight(), - startselected: false, - selected: $this.hasClass("ui-selected"), - selecting: $this.hasClass("ui-selecting"), - unselecting: $this.hasClass("ui-unselecting") - }); - }); - }; - this.refresh(); - - this.selectees = selectees.addClass("ui-selectee"); - - this._mouseInit(); - - this.helper = $("<div class='ui-selectable-helper'></div>"); - }, - - _destroy: function() { - this.selectees - .removeClass("ui-selectee") - .removeData("selectable-item"); - this.element - .removeClass("ui-selectable ui-selectable-disabled"); - this._mouseDestroy(); - }, - - _mouseStart: function(event) { - var that = this, - options = this.options; - - this.opos = [event.pageX, event.pageY]; - - if (this.options.disabled) { - return; - } - - this.selectees = $(options.filter, this.element[0]); - - this._trigger("start", event); - - $(options.appendTo).append(this.helper); - // position helper (lasso) - this.helper.css({ - "left": event.pageX, - "top": event.pageY, - "width": 0, - "height": 0 - }); - - if (options.autoRefresh) { - this.refresh(); - } - - this.selectees.filter(".ui-selected").each(function() { - var selectee = $.data(this, "selectable-item"); - selectee.startselected = true; - if (!event.metaKey && !event.ctrlKey) { - selectee.$element.removeClass("ui-selected"); - selectee.selected = false; - selectee.$element.addClass("ui-unselecting"); - selectee.unselecting = true; - // selectable UNSELECTING callback - that._trigger("unselecting", event, { - unselecting: selectee.element - }); - } - }); - - $(event.target).parents().addBack().each(function() { - var doSelect, - selectee = $.data(this, "selectable-item"); - if (selectee) { - doSelect = (!event.metaKey && !event.ctrlKey) || !selectee.$element.hasClass("ui-selected"); - selectee.$element - .removeClass(doSelect ? "ui-unselecting" : "ui-selected") - .addClass(doSelect ? "ui-selecting" : "ui-unselecting"); - selectee.unselecting = !doSelect; - selectee.selecting = doSelect; - selectee.selected = doSelect; - // selectable (UN)SELECTING callback - if (doSelect) { - that._trigger("selecting", event, { - selecting: selectee.element - }); - } else { - that._trigger("unselecting", event, { - unselecting: selectee.element - }); - } - return false; - } - }); - - }, - - _mouseDrag: function(event) { - - this.dragged = true; - - if (this.options.disabled) { - return; - } - - var tmp, - that = this, - options = this.options, - x1 = this.opos[0], - y1 = this.opos[1], - x2 = event.pageX, - y2 = event.pageY; - - if (x1 > x2) { tmp = x2; x2 = x1; x1 = tmp; } - if (y1 > y2) { tmp = y2; y2 = y1; y1 = tmp; } - this.helper.css({left: x1, top: y1, width: x2-x1, height: y2-y1}); - - this.selectees.each(function() { - var selectee = $.data(this, "selectable-item"), - hit = false; - - //prevent helper from being selected if appendTo: selectable - if (!selectee || selectee.element === that.element[0]) { - return; - } - - if (options.tolerance === "touch") { - hit = ( !(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1) ); - } else if (options.tolerance === "fit") { - hit = (selectee.left > x1 && selectee.right < x2 && selectee.top > y1 && selectee.bottom < y2); - } - - if (hit) { - // SELECT - if (selectee.selected) { - selectee.$element.removeClass("ui-selected"); - selectee.selected = false; - } - if (selectee.unselecting) { - selectee.$element.removeClass("ui-unselecting"); - selectee.unselecting = false; - } - if (!selectee.selecting) { - selectee.$element.addClass("ui-selecting"); - selectee.selecting = true; - // selectable SELECTING callback - that._trigger("selecting", event, { - selecting: selectee.element - }); - } - } else { - // UNSELECT - if (selectee.selecting) { - if ((event.metaKey || event.ctrlKey) && selectee.startselected) { - selectee.$element.removeClass("ui-selecting"); - selectee.selecting = false; - selectee.$element.addClass("ui-selected"); - selectee.selected = true; - } else { - selectee.$element.removeClass("ui-selecting"); - selectee.selecting = false; - if (selectee.startselected) { - selectee.$element.addClass("ui-unselecting"); - selectee.unselecting = true; - } - // selectable UNSELECTING callback - that._trigger("unselecting", event, { - unselecting: selectee.element - }); - } - } - if (selectee.selected) { - if (!event.metaKey && !event.ctrlKey && !selectee.startselected) { - selectee.$element.removeClass("ui-selected"); - selectee.selected = false; - - selectee.$element.addClass("ui-unselecting"); - selectee.unselecting = true; - // selectable UNSELECTING callback - that._trigger("unselecting", event, { - unselecting: selectee.element - }); - } - } - } - }); - - return false; - }, - - _mouseStop: function(event) { - var that = this; - - this.dragged = false; - - $(".ui-unselecting", this.element[0]).each(function() { - var selectee = $.data(this, "selectable-item"); - selectee.$element.removeClass("ui-unselecting"); - selectee.unselecting = false; - selectee.startselected = false; - that._trigger("unselected", event, { - unselected: selectee.element - }); - }); - $(".ui-selecting", this.element[0]).each(function() { - var selectee = $.data(this, "selectable-item"); - selectee.$element.removeClass("ui-selecting").addClass("ui-selected"); - selectee.selecting = false; - selectee.selected = true; - selectee.startselected = true; - that._trigger("selected", event, { - selected: selectee.element - }); - }); - this._trigger("stop", event); - - this.helper.remove(); - - return false; - } - -}); - -})(jQuery); - -(function( $, undefined ) { - -function isOverAxis( x, reference, size ) { - return ( x > reference ) && ( x < ( reference + size ) ); -} - -function isFloating(item) { - return (/left|right/).test(item.css("float")) || (/inline|table-cell/).test(item.css("display")); -} - -$.widget("ui.sortable", $.ui.mouse, { - version: "1.10.4", - widgetEventPrefix: "sort", - ready: false, - options: { - appendTo: "parent", - axis: false, - connectWith: false, - containment: false, - cursor: "auto", - cursorAt: false, - dropOnEmpty: true, - forcePlaceholderSize: false, - forceHelperSize: false, - grid: false, - handle: false, - helper: "original", - items: "> *", - opacity: false, - placeholder: false, - revert: false, - scroll: true, - scrollSensitivity: 20, - scrollSpeed: 20, - scope: "default", - tolerance: "intersect", - zIndex: 1000, - - // callbacks - activate: null, - beforeStop: null, - change: null, - deactivate: null, - out: null, - over: null, - receive: null, - remove: null, - sort: null, - start: null, - stop: null, - update: null - }, - _create: function() { - - var o = this.options; - this.containerCache = {}; - this.element.addClass("ui-sortable"); - - //Get the items - this.refresh(); - - //Let's determine if the items are being displayed horizontally - this.floating = this.items.length ? o.axis === "x" || isFloating(this.items[0].item) : false; - - //Let's determine the parent's offset - this.offset = this.element.offset(); - - //Initialize mouse events for interaction - this._mouseInit(); - - //We're ready to go - this.ready = true; - - }, - - _destroy: function() { - this.element - .removeClass("ui-sortable ui-sortable-disabled"); - this._mouseDestroy(); - - for ( var i = this.items.length - 1; i >= 0; i-- ) { - this.items[i].item.removeData(this.widgetName + "-item"); - } - - return this; - }, - - _setOption: function(key, value){ - if ( key === "disabled" ) { - this.options[ key ] = value; - - this.widget().toggleClass( "ui-sortable-disabled", !!value ); - } else { - // Don't call widget base _setOption for disable as it adds ui-state-disabled class - $.Widget.prototype._setOption.apply(this, arguments); - } - }, - - _mouseCapture: function(event, overrideHandle) { - var currentItem = null, - validHandle = false, - that = this; - - if (this.reverting) { - return false; - } - - if(this.options.disabled || this.options.type === "static") { - return false; - } - - //We have to refresh the items data once first - this._refreshItems(event); - - //Find out if the clicked node (or one of its parents) is a actual item in this.items - $(event.target).parents().each(function() { - if($.data(this, that.widgetName + "-item") === that) { - currentItem = $(this); - return false; - } - }); - if($.data(event.target, that.widgetName + "-item") === that) { - currentItem = $(event.target); - } - - if(!currentItem) { - return false; - } - if(this.options.handle && !overrideHandle) { - $(this.options.handle, currentItem).find("*").addBack().each(function() { - if(this === event.target) { - validHandle = true; - } - }); - if(!validHandle) { - return false; - } - } - - this.currentItem = currentItem; - this._removeCurrentsFromItems(); - return true; - - }, - - _mouseStart: function(event, overrideHandle, noActivation) { - - var i, body, - o = this.options; - - this.currentContainer = this; - - //We only need to call refreshPositions, because the refreshItems call has been moved to mouseCapture - this.refreshPositions(); - - //Create and append the visible helper - this.helper = this._createHelper(event); - - //Cache the helper size - this._cacheHelperProportions(); - - /* - * - Position generation - - * This block generates everything position related - it's the core of draggables. - */ - - //Cache the margins of the original element - this._cacheMargins(); - - //Get the next scrolling parent - this.scrollParent = this.helper.scrollParent(); - - //The element's absolute position on the page minus margins - this.offset = this.currentItem.offset(); - this.offset = { - top: this.offset.top - this.margins.top, - left: this.offset.left - this.margins.left - }; - - $.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 - }); - - // Only after we got the offset, we can change the helper's position to absolute - // TODO: Still need to figure out a way to make relative sorting possible - this.helper.css("position", "absolute"); - this.cssPosition = this.helper.css("position"); - - //Generate the original position - this.originalPosition = 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)); - - //Cache the former DOM position - this.domPosition = { prev: this.currentItem.prev()[0], parent: this.currentItem.parent()[0] }; - - //If the helper is not the original, hide the original so it's not playing any role during the drag, won't cause anything bad this way - if(this.helper[0] !== this.currentItem[0]) { - this.currentItem.hide(); - } - - //Create the placeholder - this._createPlaceholder(); - - //Set a containment if given in the options - if(o.containment) { - this._setContainment(); - } - - if( o.cursor && o.cursor !== "auto" ) { // cursor option - body = this.document.find( "body" ); - - // support: IE - this.storedCursor = body.css( "cursor" ); - body.css( "cursor", o.cursor ); - - this.storedStylesheet = $( "<style>*{ cursor: "+o.cursor+" !important; }</style>" ).appendTo( body ); - } - - if(o.opacity) { // opacity option - if (this.helper.css("opacity")) { - this._storedOpacity = this.helper.css("opacity"); - } - this.helper.css("opacity", o.opacity); - } - - if(o.zIndex) { // zIndex option - if (this.helper.css("zIndex")) { - this._storedZIndex = this.helper.css("zIndex"); - } - this.helper.css("zIndex", o.zIndex); - } - - //Prepare scrolling - if(this.scrollParent[0] !== document && this.scrollParent[0].tagName !== "HTML") { - this.overflowOffset = this.scrollParent.offset(); - } - - //Call callbacks - this._trigger("start", event, this._uiHash()); - - //Recache the helper size - if(!this._preserveHelperProportions) { - this._cacheHelperProportions(); - } - - - //Post "activate" events to possible containers - if( !noActivation ) { - for ( i = this.containers.length - 1; i >= 0; i-- ) { - this.containers[ i ]._trigger( "activate", event, this._uiHash( this ) ); - } - } - - //Prepare possible droppables - if($.ui.ddmanager) { - $.ui.ddmanager.current = this; - } - - if ($.ui.ddmanager && !o.dropBehaviour) { - $.ui.ddmanager.prepareOffsets(this, event); - } - - this.dragging = true; - - this.helper.addClass("ui-sortable-helper"); - this._mouseDrag(event); //Execute the drag once - this causes the helper not to be visible before getting its correct position - return true; - - }, - - _mouseDrag: function(event) { - var i, item, itemElement, intersection, - o = this.options, - scrolled = false; - - //Compute the helpers position - this.position = this._generatePosition(event); - this.positionAbs = this._convertPositionTo("absolute"); - - if (!this.lastPositionAbs) { - this.lastPositionAbs = this.positionAbs; - } - - //Do scrolling - if(this.options.scroll) { - if(this.scrollParent[0] !== document && this.scrollParent[0].tagName !== "HTML") { - - if((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) { - this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed; - } else if(event.pageY - this.overflowOffset.top < o.scrollSensitivity) { - this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed; - } - - if((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) { - this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed; - } else if(event.pageX - this.overflowOffset.left < o.scrollSensitivity) { - this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed; - } - - } else { - - 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(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(this, event); - } - } - - //Regenerate the absolute position used for position checks - this.positionAbs = this._convertPositionTo("absolute"); - - //Set the helper 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"; - } - - //Rearrange - for (i = this.items.length - 1; i >= 0; i--) { - - //Cache variables and intersection, continue if no intersection - item = this.items[i]; - itemElement = item.item[0]; - intersection = this._intersectsWithPointer(item); - if (!intersection) { - continue; - } - - // Only put the placeholder inside the current Container, skip all - // items from other containers. This works because when moving - // an item from one container to another the - // currentContainer is switched before the placeholder is moved. - // - // Without this, moving items in "sub-sortables" can cause - // the placeholder to jitter beetween the outer and inner container. - if (item.instance !== this.currentContainer) { - continue; - } - - // cannot intersect with itself - // no useless actions that have been done before - // no action if the item moved is the parent of the item checked - if (itemElement !== this.currentItem[0] && - this.placeholder[intersection === 1 ? "next" : "prev"]()[0] !== itemElement && - !$.contains(this.placeholder[0], itemElement) && - (this.options.type === "semi-dynamic" ? !$.contains(this.element[0], itemElement) : true) - ) { - - this.direction = intersection === 1 ? "down" : "up"; - - if (this.options.tolerance === "pointer" || this._intersectsWithSides(item)) { - this._rearrange(event, item); - } else { - break; - } - - this._trigger("change", event, this._uiHash()); - break; - } - } - - //Post events to containers - this._contactContainers(event); - - //Interconnect with droppables - if($.ui.ddmanager) { - $.ui.ddmanager.drag(this, event); - } - - //Call callbacks - this._trigger("sort", event, this._uiHash()); - - this.lastPositionAbs = this.positionAbs; - return false; - - }, - - _mouseStop: function(event, noPropagation) { - - if(!event) { - return; - } - - //If we are using droppables, inform the manager about the drop - if ($.ui.ddmanager && !this.options.dropBehaviour) { - $.ui.ddmanager.drop(this, event); - } - - if(this.options.revert) { - var that = this, - cur = this.placeholder.offset(), - axis = this.options.axis, - animation = {}; - - if ( !axis || axis === "x" ) { - animation.left = cur.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] === document.body ? 0 : this.offsetParent[0].scrollLeft); - } - if ( !axis || axis === "y" ) { - animation.top = cur.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] === document.body ? 0 : this.offsetParent[0].scrollTop); - } - this.reverting = true; - $(this.helper).animate( animation, parseInt(this.options.revert, 10) || 500, function() { - that._clear(event); - }); - } else { - this._clear(event, noPropagation); - } - - return false; - - }, - - cancel: function() { - - if(this.dragging) { - - this._mouseUp({ target: null }); - - if(this.options.helper === "original") { - this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"); - } else { - this.currentItem.show(); - } - - //Post deactivating events to containers - for (var i = this.containers.length - 1; i >= 0; i--){ - this.containers[i]._trigger("deactivate", null, this._uiHash(this)); - if(this.containers[i].containerCache.over) { - this.containers[i]._trigger("out", null, this._uiHash(this)); - this.containers[i].containerCache.over = 0; - } - } - - } - - if (this.placeholder) { - //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node! - if(this.placeholder[0].parentNode) { - this.placeholder[0].parentNode.removeChild(this.placeholder[0]); - } - if(this.options.helper !== "original" && this.helper && this.helper[0].parentNode) { - this.helper.remove(); - } - - $.extend(this, { - helper: null, - dragging: false, - reverting: false, - _noFinalSort: null - }); - - if(this.domPosition.prev) { - $(this.domPosition.prev).after(this.currentItem); - } else { - $(this.domPosition.parent).prepend(this.currentItem); - } - } - - return this; - - }, - - serialize: function(o) { - - var items = this._getItemsAsjQuery(o && o.connected), - str = []; - o = o || {}; - - $(items).each(function() { - var res = ($(o.item || this).attr(o.attribute || "id") || "").match(o.expression || (/(.+)[\-=_](.+)/)); - if (res) { - str.push((o.key || res[1]+"[]")+"="+(o.key && o.expression ? res[1] : res[2])); - } - }); - - if(!str.length && o.key) { - str.push(o.key + "="); - } - - return str.join("&"); - - }, - - toArray: function(o) { - - var items = this._getItemsAsjQuery(o && o.connected), - ret = []; - - o = o || {}; - - items.each(function() { ret.push($(o.item || this).attr(o.attribute || "id") || ""); }); - return ret; - - }, - - /* Be careful with the following core functions */ - _intersectsWith: function(item) { - - var x1 = this.positionAbs.left, - x2 = x1 + this.helperProportions.width, - y1 = this.positionAbs.top, - y2 = y1 + this.helperProportions.height, - l = item.left, - r = l + item.width, - t = item.top, - b = t + item.height, - dyClick = this.offset.click.top, - dxClick = this.offset.click.left, - isOverElementHeight = ( this.options.axis === "x" ) || ( ( y1 + dyClick ) > t && ( y1 + dyClick ) < b ), - isOverElementWidth = ( this.options.axis === "y" ) || ( ( x1 + dxClick ) > l && ( x1 + dxClick ) < r ), - isOverElement = isOverElementHeight && isOverElementWidth; - - if ( this.options.tolerance === "pointer" || - this.options.forcePointerForContainers || - (this.options.tolerance !== "pointer" && this.helperProportions[this.floating ? "width" : "height"] > item[this.floating ? "width" : "height"]) - ) { - return isOverElement; - } else { - - return (l < x1 + (this.helperProportions.width / 2) && // Right Half - x2 - (this.helperProportions.width / 2) < r && // Left Half - t < y1 + (this.helperProportions.height / 2) && // Bottom Half - y2 - (this.helperProportions.height / 2) < b ); // Top Half - - } - }, - - _intersectsWithPointer: function(item) { - - var isOverElementHeight = (this.options.axis === "x") || isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height), - isOverElementWidth = (this.options.axis === "y") || isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width), - isOverElement = isOverElementHeight && isOverElementWidth, - verticalDirection = this._getDragVerticalDirection(), - horizontalDirection = this._getDragHorizontalDirection(); - - if (!isOverElement) { - return false; - } - - return this.floating ? - ( ((horizontalDirection && horizontalDirection === "right") || verticalDirection === "down") ? 2 : 1 ) - : ( verticalDirection && (verticalDirection === "down" ? 2 : 1) ); - - }, - - _intersectsWithSides: function(item) { - - var isOverBottomHalf = isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + (item.height/2), item.height), - isOverRightHalf = isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + (item.width/2), item.width), - verticalDirection = this._getDragVerticalDirection(), - horizontalDirection = this._getDragHorizontalDirection(); - - if (this.floating && horizontalDirection) { - return ((horizontalDirection === "right" && isOverRightHalf) || (horizontalDirection === "left" && !isOverRightHalf)); - } else { - return verticalDirection && ((verticalDirection === "down" && isOverBottomHalf) || (verticalDirection === "up" && !isOverBottomHalf)); - } - - }, - - _getDragVerticalDirection: function() { - var delta = this.positionAbs.top - this.lastPositionAbs.top; - return delta !== 0 && (delta > 0 ? "down" : "up"); - }, - - _getDragHorizontalDirection: function() { - var delta = this.positionAbs.left - this.lastPositionAbs.left; - return delta !== 0 && (delta > 0 ? "right" : "left"); - }, - - refresh: function(event) { - this._refreshItems(event); - this.refreshPositions(); - return this; - }, - - _connectWith: function() { - var options = this.options; - return options.connectWith.constructor === String ? [options.connectWith] : options.connectWith; - }, - - _getItemsAsjQuery: function(connected) { - - var i, j, cur, inst, - items = [], - queries = [], - connectWith = this._connectWith(); - - if(connectWith && connected) { - for (i = connectWith.length - 1; i >= 0; i--){ - cur = $(connectWith[i]); - for ( j = cur.length - 1; j >= 0; j--){ - inst = $.data(cur[j], this.widgetFullName); - if(inst && inst !== this && !inst.options.disabled) { - queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), inst]); - } - } - } - } - - queries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { options: this.options, item: this.currentItem }) : $(this.options.items, this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), this]); - - function addItems() { - items.push( this ); - } - for (i = queries.length - 1; i >= 0; i--){ - queries[i][0].each( addItems ); - } - - return $(items); - - }, - - _removeCurrentsFromItems: function() { - - var list = this.currentItem.find(":data(" + this.widgetName + "-item)"); - - this.items = $.grep(this.items, function (item) { - for (var j=0; j < list.length; j++) { - if(list[j] === item.item[0]) { - return false; - } - } - return true; - }); - - }, - - _refreshItems: function(event) { - - this.items = []; - this.containers = [this]; - - var i, j, cur, inst, targetData, _queries, item, queriesLength, - items = this.items, - queries = [[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { item: this.currentItem }) : $(this.options.items, this.element), this]], - connectWith = this._connectWith(); - - if(connectWith && this.ready) { //Shouldn't be run the first time through due to massive slow-down - for (i = connectWith.length - 1; i >= 0; i--){ - cur = $(connectWith[i]); - for (j = cur.length - 1; j >= 0; j--){ - inst = $.data(cur[j], this.widgetFullName); - if(inst && inst !== this && !inst.options.disabled) { - queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, { item: this.currentItem }) : $(inst.options.items, inst.element), inst]); - this.containers.push(inst); - } - } - } - } - - for (i = queries.length - 1; i >= 0; i--) { - targetData = queries[i][1]; - _queries = queries[i][0]; - - for (j=0, queriesLength = _queries.length; j < queriesLength; j++) { - item = $(_queries[j]); - - item.data(this.widgetName + "-item", targetData); // Data for target checking (mouse manager) - - items.push({ - item: item, - instance: targetData, - width: 0, height: 0, - left: 0, top: 0 - }); - } - } - - }, - - refreshPositions: function(fast) { - - //This has to be redone because due to the item being moved out/into the offsetParent, the offsetParent's position will change - if(this.offsetParent && this.helper) { - this.offset.parent = this._getParentOffset(); - } - - var i, item, t, p; - - for (i = this.items.length - 1; i >= 0; i--){ - item = this.items[i]; - - //We ignore calculating positions of all connected containers when we're not over them - if(item.instance !== this.currentContainer && this.currentContainer && item.item[0] !== this.currentItem[0]) { - continue; - } - - t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item; - - if (!fast) { - item.width = t.outerWidth(); - item.height = t.outerHeight(); - } - - p = t.offset(); - item.left = p.left; - item.top = p.top; - } - - if(this.options.custom && this.options.custom.refreshContainers) { - this.options.custom.refreshContainers.call(this); - } else { - for (i = this.containers.length - 1; i >= 0; i--){ - p = this.containers[i].element.offset(); - this.containers[i].containerCache.left = p.left; - this.containers[i].containerCache.top = p.top; - this.containers[i].containerCache.width = this.containers[i].element.outerWidth(); - this.containers[i].containerCache.height = this.containers[i].element.outerHeight(); - } - } - - return this; - }, - - _createPlaceholder: function(that) { - that = that || this; - var className, - o = that.options; - - if(!o.placeholder || o.placeholder.constructor === String) { - className = o.placeholder; - o.placeholder = { - element: function() { - - var nodeName = that.currentItem[0].nodeName.toLowerCase(), - element = $( "<" + nodeName + ">", that.document[0] ) - .addClass(className || that.currentItem[0].className+" ui-sortable-placeholder") - .removeClass("ui-sortable-helper"); - - if ( nodeName === "tr" ) { - that.currentItem.children().each(function() { - $( "<td>&#160;</td>", that.document[0] ) - .attr( "colspan", $( this ).attr( "colspan" ) || 1 ) - .appendTo( element ); - }); - } else if ( nodeName === "img" ) { - element.attr( "src", that.currentItem.attr( "src" ) ); - } - - if ( !className ) { - element.css( "visibility", "hidden" ); - } - - return element; - }, - update: function(container, p) { - - // 1. If a className is set as 'placeholder option, we don't force sizes - the class is responsible for that - // 2. The option 'forcePlaceholderSize can be enabled to force it even if a class name is specified - if(className && !o.forcePlaceholderSize) { - return; - } - - //If the element doesn't have a actual height by itself (without styles coming from a stylesheet), it receives the inline height from the dragged item - if(!p.height()) { p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css("paddingTop")||0, 10) - parseInt(that.currentItem.css("paddingBottom")||0, 10)); } - if(!p.width()) { p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css("paddingLeft")||0, 10) - parseInt(that.currentItem.css("paddingRight")||0, 10)); } - } - }; - } - - //Create the placeholder - that.placeholder = $(o.placeholder.element.call(that.element, that.currentItem)); - - //Append it after the actual current item - that.currentItem.after(that.placeholder); - - //Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317) - o.placeholder.update(that, that.placeholder); - - }, - - _contactContainers: function(event) { - var i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, base, cur, nearBottom, floating, - innermostContainer = null, - innermostIndex = null; - - // get innermost container that intersects with item - for (i = this.containers.length - 1; i >= 0; i--) { - - // never consider a container that's located within the item itself - if($.contains(this.currentItem[0], this.containers[i].element[0])) { - continue; - } - - if(this._intersectsWith(this.containers[i].containerCache)) { - - // if we've already found a container and it's more "inner" than this, then continue - if(innermostContainer && $.contains(this.containers[i].element[0], innermostContainer.element[0])) { - continue; - } - - innermostContainer = this.containers[i]; - innermostIndex = i; - - } else { - // container doesn't intersect. trigger "out" event if necessary - if(this.containers[i].containerCache.over) { - this.containers[i]._trigger("out", event, this._uiHash(this)); - this.containers[i].containerCache.over = 0; - } - } - - } - - // if no intersecting containers found, return - if(!innermostContainer) { - return; - } - - // move the item into the container if it's not there already - if(this.containers.length === 1) { - if (!this.containers[innermostIndex].containerCache.over) { - this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)); - this.containers[innermostIndex].containerCache.over = 1; - } - } else { - - //When entering a new container, we will find the item with the least distance and append our item near it - dist = 10000; - itemWithLeastDistance = null; - floating = innermostContainer.floating || isFloating(this.currentItem); - posProperty = floating ? "left" : "top"; - sizeProperty = floating ? "width" : "height"; - base = this.positionAbs[posProperty] + this.offset.click[posProperty]; - for (j = this.items.length - 1; j >= 0; j--) { - if(!$.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) { - continue; - } - if(this.items[j].item[0] === this.currentItem[0]) { - continue; - } - if (floating && !isOverAxis(this.positionAbs.top + this.offset.click.top, this.items[j].top, this.items[j].height)) { - continue; - } - cur = this.items[j].item.offset()[posProperty]; - nearBottom = false; - if(Math.abs(cur - base) > Math.abs(cur + this.items[j][sizeProperty] - base)){ - nearBottom = true; - cur += this.items[j][sizeProperty]; - } - - if(Math.abs(cur - base) < dist) { - dist = Math.abs(cur - base); itemWithLeastDistance = this.items[j]; - this.direction = nearBottom ? "up": "down"; - } - } - - //Check if dropOnEmpty is enabled - if(!itemWithLeastDistance && !this.options.dropOnEmpty) { - return; - } - - if(this.currentContainer === this.containers[innermostIndex]) { - return; - } - - itemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true); - this._trigger("change", event, this._uiHash()); - this.containers[innermostIndex]._trigger("change", event, this._uiHash(this)); - this.currentContainer = this.containers[innermostIndex]; - - //Update the placeholder - this.options.placeholder.update(this.currentContainer, this.placeholder); - - this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)); - this.containers[innermostIndex].containerCache.over = 1; - } - - - }, - - _createHelper: function(event) { - - var o = this.options, - helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : (o.helper === "clone" ? this.currentItem.clone() : this.currentItem); - - //Add the helper to the DOM if that didn't happen already - if(!helper.parents("body").length) { - $(o.appendTo !== "parent" ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]); - } - - if(helper[0] === this.currentItem[0]) { - this._storedCSS = { width: this.currentItem[0].style.width, height: this.currentItem[0].style.height, position: this.currentItem.css("position"), top: this.currentItem.css("top"), left: this.currentItem.css("left") }; - } - - if(!helper[0].style.width || o.forceHelperSize) { - helper.width(this.currentItem.width()); - } - if(!helper[0].style.height || o.forceHelperSize) { - helper.height(this.currentItem.height()); - } - - 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 - this.offsetParent = this.helper.offsetParent(); - 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 - // with an 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.currentItem.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.currentItem.css("marginLeft"),10) || 0), - top: (parseInt(this.currentItem.css("marginTop"),10) || 0) - }; - }, - - _cacheHelperProportions: function() { - this.helperProportions = { - width: this.helper.outerWidth(), - height: this.helper.outerHeight() - }; - }, - - _setContainment: function() { - - var ce, co, over, - o = this.options; - if(o.containment === "parent") { - o.containment = this.helper[0].parentNode; - } - if(o.containment === "document" || o.containment === "window") { - this.containment = [ - 0 - this.offset.relative.left - this.offset.parent.left, - 0 - this.offset.relative.top - this.offset.parent.top, - $(o.containment === "document" ? document : window).width() - this.helperProportions.width - this.margins.left, - ($(o.containment === "document" ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top - ]; - } - - if(!(/^(document|window|parent)$/).test(o.containment)) { - ce = $(o.containment)[0]; - co = $(o.containment).offset(); - over = ($(ce).css("overflow") !== "hidden"); - - this.containment = [ - co.left + (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0) - this.margins.left, - co.top + (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0) - this.margins.top, - co.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left, - co.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top - ]; - } - - }, - - _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, - scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); - - 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() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * 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() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod) - ) - }; - - }, - - _generatePosition: function(event) { - - var top, left, - o = this.options, - pageX = event.pageX, - pageY = event.pageY, - scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); - - // This is another very weird special case that only happens for relative elements: - // 1. If the css position is relative - // 2. and the scroll parent is the document or similar to the offset parent - // we have to refresh the relative offset during the scroll so there are no jumps - if(this.cssPosition === "relative" && !(this.scrollParent[0] !== document && this.scrollParent[0] !== this.offsetParent[0])) { - this.offset.relative = this._getRelativeOffset(); - } - - /* - * - Position constraining - - * Constrain the position to a mix of grid, containment. - */ - - if(this.originalPosition) { //If we are not dragging yet, we won't check for options - - if(this.containment) { - if(event.pageX - this.offset.click.left < this.containment[0]) { - pageX = this.containment[0] + this.offset.click.left; - } - if(event.pageY - this.offset.click.top < this.containment[1]) { - pageY = this.containment[1] + this.offset.click.top; - } - if(event.pageX - this.offset.click.left > this.containment[2]) { - pageX = this.containment[2] + this.offset.click.left; - } - if(event.pageY - this.offset.click.top > this.containment[3]) { - pageY = this.containment[3] + this.offset.click.top; - } - } - - if(o.grid) { - top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1]; - pageY = this.containment ? ( (top - this.offset.click.top >= this.containment[1] && top - this.offset.click.top <= this.containment[3]) ? top : ((top - this.offset.click.top >= this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top; - - left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0]; - pageX = this.containment ? ( (left - this.offset.click.left >= this.containment[0] && left - this.offset.click.left <= this.containment[2]) ? left : ((left - this.offset.click.left >= this.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() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) )) - ), - 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() : scrollIsRootNode ? 0 : scroll.scrollLeft() )) - ) - }; - - }, - - _rearrange: function(event, i, a, hardRefresh) { - - a ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(this.placeholder[0], (this.direction === "down" ? i.item[0] : i.item[0].nextSibling)); - - //Various things done here to improve the performance: - // 1. we create a setTimeout, that calls refreshPositions - // 2. on the instance, we have a counter variable, that get's higher after every append - // 3. on the local scope, we copy the counter variable, and check in the timeout, if it's still the same - // 4. this lets only the last addition to the timeout stack through - this.counter = this.counter ? ++this.counter : 1; - var counter = this.counter; - - this._delay(function() { - if(counter === this.counter) { - this.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove - } - }); - - }, - - _clear: function(event, noPropagation) { - - this.reverting = false; - // We delay all events that have to be triggered to after the point where the placeholder has been removed and - // everything else normalized again - var i, - delayedTriggers = []; - - // We first have to update the dom position of the actual currentItem - // Note: don't do it if the current item is already removed (by a user), or it gets reappended (see #4088) - if(!this._noFinalSort && this.currentItem.parent().length) { - this.placeholder.before(this.currentItem); - } - this._noFinalSort = null; - - if(this.helper[0] === this.currentItem[0]) { - for(i in this._storedCSS) { - if(this._storedCSS[i] === "auto" || this._storedCSS[i] === "static") { - this._storedCSS[i] = ""; - } - } - this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"); - } else { - this.currentItem.show(); - } - - if(this.fromOutside && !noPropagation) { - delayedTriggers.push(function(event) { this._trigger("receive", event, this._uiHash(this.fromOutside)); }); - } - if((this.fromOutside || this.domPosition.prev !== this.currentItem.prev().not(".ui-sortable-helper")[0] || this.domPosition.parent !== this.currentItem.parent()[0]) && !noPropagation) { - delayedTriggers.push(function(event) { this._trigger("update", event, this._uiHash()); }); //Trigger update callback if the DOM position has changed - } - - // Check if the items Container has Changed and trigger appropriate - // events. - if (this !== this.currentContainer) { - if(!noPropagation) { - delayedTriggers.push(function(event) { this._trigger("remove", event, this._uiHash()); }); - delayedTriggers.push((function(c) { return function(event) { c._trigger("receive", event, this._uiHash(this)); }; }).call(this, this.currentContainer)); - delayedTriggers.push((function(c) { return function(event) { c._trigger("update", event, this._uiHash(this)); }; }).call(this, this.currentContainer)); - } - } - - - //Post events to containers - function delayEvent( type, instance, container ) { - return function( event ) { - container._trigger( type, event, instance._uiHash( instance ) ); - }; - } - for (i = this.containers.length - 1; i >= 0; i--){ - if (!noPropagation) { - delayedTriggers.push( delayEvent( "deactivate", this, this.containers[ i ] ) ); - } - if(this.containers[i].containerCache.over) { - delayedTriggers.push( delayEvent( "out", this, this.containers[ i ] ) ); - this.containers[i].containerCache.over = 0; - } - } - - //Do what was originally in plugins - if ( this.storedCursor ) { - this.document.find( "body" ).css( "cursor", this.storedCursor ); - this.storedStylesheet.remove(); - } - if(this._storedOpacity) { - this.helper.css("opacity", this._storedOpacity); - } - if(this._storedZIndex) { - this.helper.css("zIndex", this._storedZIndex === "auto" ? "" : this._storedZIndex); - } - - this.dragging = false; - if(this.cancelHelperRemoval) { - if(!noPropagation) { - this._trigger("beforeStop", event, this._uiHash()); - for (i=0; i < delayedTriggers.length; i++) { - delayedTriggers[i].call(this, event); - } //Trigger all delayed events - this._trigger("stop", event, this._uiHash()); - } - - this.fromOutside = false; - return false; - } - - if(!noPropagation) { - this._trigger("beforeStop", event, this._uiHash()); - } - - //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node! - this.placeholder[0].parentNode.removeChild(this.placeholder[0]); - - if(this.helper[0] !== this.currentItem[0]) { - this.helper.remove(); - } - this.helper = null; - - if(!noPropagation) { - for (i=0; i < delayedTriggers.length; i++) { - delayedTriggers[i].call(this, event); - } //Trigger all delayed events - this._trigger("stop", event, this._uiHash()); - } - - this.fromOutside = false; - return true; - - }, - - _trigger: function() { - if ($.Widget.prototype._trigger.apply(this, arguments) === false) { - this.cancel(); - } - }, - - _uiHash: function(_inst) { - var inst = _inst || this; - return { - helper: inst.helper, - placeholder: inst.placeholder || $([]), - position: inst.position, - originalPosition: inst.originalPosition, - offset: inst.positionAbs, - item: inst.currentItem, - sender: _inst ? _inst.element : null - }; - } - -}); - -})(jQuery); - -(function($, undefined) { - -var dataSpace = "ui-effects-"; - -$.effects = { - effect: {} -}; - -/*! - * jQuery Color Animations v2.1.2 - * https://github.com/jquery/jquery-color - * - * Copyright 2013 jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * Date: Wed Jan 16 08:47:09 2013 -0600 - */ -(function( jQuery, undefined ) { - - var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor", - - // plusequals test for += 100 -= 100 - rplusequals = /^([\-+])=\s*(\d+\.?\d*)/, - // a set of RE's that can match strings and generate color tuples. - stringParsers = [{ - re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, - parse: function( execResult ) { - return [ - execResult[ 1 ], - execResult[ 2 ], - execResult[ 3 ], - execResult[ 4 ] - ]; - } - }, { - re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, - parse: function( execResult ) { - return [ - execResult[ 1 ] * 2.55, - execResult[ 2 ] * 2.55, - execResult[ 3 ] * 2.55, - execResult[ 4 ] - ]; - } - }, { - // this regex ignores A-F because it's compared against an already lowercased string - re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/, - parse: function( execResult ) { - return [ - parseInt( execResult[ 1 ], 16 ), - parseInt( execResult[ 2 ], 16 ), - parseInt( execResult[ 3 ], 16 ) - ]; - } - }, { - // this regex ignores A-F because it's compared against an already lowercased string - re: /#([a-f0-9])([a-f0-9])([a-f0-9])/, - parse: function( execResult ) { - return [ - parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ), - parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ), - parseInt( execResult[ 3 ] + execResult[ 3 ], 16 ) - ]; - } - }, { - re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, - space: "hsla", - parse: function( execResult ) { - return [ - execResult[ 1 ], - execResult[ 2 ] / 100, - execResult[ 3 ] / 100, - execResult[ 4 ] - ]; - } - }], - - // jQuery.Color( ) - color = jQuery.Color = function( color, green, blue, alpha ) { - return new jQuery.Color.fn.parse( color, green, blue, alpha ); - }, - spaces = { - rgba: { - props: { - red: { - idx: 0, - type: "byte" - }, - green: { - idx: 1, - type: "byte" - }, - blue: { - idx: 2, - type: "byte" - } - } - }, - - hsla: { - props: { - hue: { - idx: 0, - type: "degrees" - }, - saturation: { - idx: 1, - type: "percent" - }, - lightness: { - idx: 2, - type: "percent" - } - } - } - }, - propTypes = { - "byte": { - floor: true, - max: 255 - }, - "percent": { - max: 1 - }, - "degrees": { - mod: 360, - floor: true - } - }, - support = color.support = {}, - - // element for support tests - supportElem = jQuery( "<p>" )[ 0 ], - - // colors = jQuery.Color.names - colors, - - // local aliases of functions called often - each = jQuery.each; - -// determine rgba support immediately -supportElem.style.cssText = "background-color:rgba(1,1,1,.5)"; -support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1; - -// define cache name and alpha properties -// for rgba and hsla spaces -each( spaces, function( spaceName, space ) { - space.cache = "_" + spaceName; - space.props.alpha = { - idx: 3, - type: "percent", - def: 1 - }; -}); - -function clamp( value, prop, allowEmpty ) { - var type = propTypes[ prop.type ] || {}; - - if ( value == null ) { - return (allowEmpty || !prop.def) ? null : prop.def; - } - - // ~~ is an short way of doing floor for positive numbers - value = type.floor ? ~~value : parseFloat( value ); - - // IE will pass in empty strings as value for alpha, - // which will hit this case - if ( isNaN( value ) ) { - return prop.def; - } - - if ( type.mod ) { - // we add mod before modding to make sure that negatives values - // get converted properly: -10 -> 350 - return (value + type.mod) % type.mod; - } - - // for now all property types without mod have min and max - return 0 > value ? 0 : type.max < value ? type.max : value; -} - -function stringParse( string ) { - var inst = color(), - rgba = inst._rgba = []; - - string = string.toLowerCase(); - - each( stringParsers, function( i, parser ) { - var parsed, - match = parser.re.exec( string ), - values = match && parser.parse( match ), - spaceName = parser.space || "rgba"; - - if ( values ) { - parsed = inst[ spaceName ]( values ); - - // if this was an rgba parse the assignment might happen twice - // oh well.... - inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ]; - rgba = inst._rgba = parsed._rgba; - - // exit each( stringParsers ) here because we matched - return false; - } - }); - - // Found a stringParser that handled it - if ( rgba.length ) { - - // if this came from a parsed string, force "transparent" when alpha is 0 - // chrome, (and maybe others) return "transparent" as rgba(0,0,0,0) - if ( rgba.join() === "0,0,0,0" ) { - jQuery.extend( rgba, colors.transparent ); - } - return inst; - } - - // named colors - return colors[ string ]; -} - -color.fn = jQuery.extend( color.prototype, { - parse: function( red, green, blue, alpha ) { - if ( red === undefined ) { - this._rgba = [ null, null, null, null ]; - return this; - } - if ( red.jquery || red.nodeType ) { - red = jQuery( red ).css( green ); - green = undefined; - } - - var inst = this, - type = jQuery.type( red ), - rgba = this._rgba = []; - - // more than 1 argument specified - assume ( red, green, blue, alpha ) - if ( green !== undefined ) { - red = [ red, green, blue, alpha ]; - type = "array"; - } - - if ( type === "string" ) { - return this.parse( stringParse( red ) || colors._default ); - } - - if ( type === "array" ) { - each( spaces.rgba.props, function( key, prop ) { - rgba[ prop.idx ] = clamp( red[ prop.idx ], prop ); - }); - return this; - } - - if ( type === "object" ) { - if ( red instanceof color ) { - each( spaces, function( spaceName, space ) { - if ( red[ space.cache ] ) { - inst[ space.cache ] = red[ space.cache ].slice(); - } - }); - } else { - each( spaces, function( spaceName, space ) { - var cache = space.cache; - each( space.props, function( key, prop ) { - - // if the cache doesn't exist, and we know how to convert - if ( !inst[ cache ] && space.to ) { - - // if the value was null, we don't need to copy it - // if the key was alpha, we don't need to copy it either - if ( key === "alpha" || red[ key ] == null ) { - return; - } - inst[ cache ] = space.to( inst._rgba ); - } - - // this is the only case where we allow nulls for ALL properties. - // call clamp with alwaysAllowEmpty - inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true ); - }); - - // everything defined but alpha? - if ( inst[ cache ] && jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) { - // use the default of 1 - inst[ cache ][ 3 ] = 1; - if ( space.from ) { - inst._rgba = space.from( inst[ cache ] ); - } - } - }); - } - return this; - } - }, - is: function( compare ) { - var is = color( compare ), - same = true, - inst = this; - - each( spaces, function( _, space ) { - var localCache, - isCache = is[ space.cache ]; - if (isCache) { - localCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || []; - each( space.props, function( _, prop ) { - if ( isCache[ prop.idx ] != null ) { - same = ( isCache[ prop.idx ] === localCache[ prop.idx ] ); - return same; - } - }); - } - return same; - }); - return same; - }, - _space: function() { - var used = [], - inst = this; - each( spaces, function( spaceName, space ) { - if ( inst[ space.cache ] ) { - used.push( spaceName ); - } - }); - return used.pop(); - }, - transition: function( other, distance ) { - var end = color( other ), - spaceName = end._space(), - space = spaces[ spaceName ], - startColor = this.alpha() === 0 ? color( "transparent" ) : this, - start = startColor[ space.cache ] || space.to( startColor._rgba ), - result = start.slice(); - - end = end[ space.cache ]; - each( space.props, function( key, prop ) { - var index = prop.idx, - startValue = start[ index ], - endValue = end[ index ], - type = propTypes[ prop.type ] || {}; - - // if null, don't override start value - if ( endValue === null ) { - return; - } - // if null - use end - if ( startValue === null ) { - result[ index ] = endValue; - } else { - if ( type.mod ) { - if ( endValue - startValue > type.mod / 2 ) { - startValue += type.mod; - } else if ( startValue - endValue > type.mod / 2 ) { - startValue -= type.mod; - } - } - result[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop ); - } - }); - return this[ spaceName ]( result ); - }, - blend: function( opaque ) { - // if we are already opaque - return ourself - if ( this._rgba[ 3 ] === 1 ) { - return this; - } - - var rgb = this._rgba.slice(), - a = rgb.pop(), - blend = color( opaque )._rgba; - - return color( jQuery.map( rgb, function( v, i ) { - return ( 1 - a ) * blend[ i ] + a * v; - })); - }, - toRgbaString: function() { - var prefix = "rgba(", - rgba = jQuery.map( this._rgba, function( v, i ) { - return v == null ? ( i > 2 ? 1 : 0 ) : v; - }); - - if ( rgba[ 3 ] === 1 ) { - rgba.pop(); - prefix = "rgb("; - } - - return prefix + rgba.join() + ")"; - }, - toHslaString: function() { - var prefix = "hsla(", - hsla = jQuery.map( this.hsla(), function( v, i ) { - if ( v == null ) { - v = i > 2 ? 1 : 0; - } - - // catch 1 and 2 - if ( i && i < 3 ) { - v = Math.round( v * 100 ) + "%"; - } - return v; - }); - - if ( hsla[ 3 ] === 1 ) { - hsla.pop(); - prefix = "hsl("; - } - return prefix + hsla.join() + ")"; - }, - toHexString: function( includeAlpha ) { - var rgba = this._rgba.slice(), - alpha = rgba.pop(); - - if ( includeAlpha ) { - rgba.push( ~~( alpha * 255 ) ); - } - - return "#" + jQuery.map( rgba, function( v ) { - - // default to 0 when nulls exist - v = ( v || 0 ).toString( 16 ); - return v.length === 1 ? "0" + v : v; - }).join(""); - }, - toString: function() { - return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString(); - } -}); -color.fn.parse.prototype = color.fn; - -// hsla conversions adapted from: -// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021 - -function hue2rgb( p, q, h ) { - h = ( h + 1 ) % 1; - if ( h * 6 < 1 ) { - return p + (q - p) * h * 6; - } - if ( h * 2 < 1) { - return q; - } - if ( h * 3 < 2 ) { - return p + (q - p) * ((2/3) - h) * 6; - } - return p; -} - -spaces.hsla.to = function ( rgba ) { - if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) { - return [ null, null, null, rgba[ 3 ] ]; - } - var r = rgba[ 0 ] / 255, - g = rgba[ 1 ] / 255, - b = rgba[ 2 ] / 255, - a = rgba[ 3 ], - max = Math.max( r, g, b ), - min = Math.min( r, g, b ), - diff = max - min, - add = max + min, - l = add * 0.5, - h, s; - - if ( min === max ) { - h = 0; - } else if ( r === max ) { - h = ( 60 * ( g - b ) / diff ) + 360; - } else if ( g === max ) { - h = ( 60 * ( b - r ) / diff ) + 120; - } else { - h = ( 60 * ( r - g ) / diff ) + 240; - } - - // chroma (diff) == 0 means greyscale which, by definition, saturation = 0% - // otherwise, saturation is based on the ratio of chroma (diff) to lightness (add) - if ( diff === 0 ) { - s = 0; - } else if ( l <= 0.5 ) { - s = diff / add; - } else { - s = diff / ( 2 - add ); - } - return [ Math.round(h) % 360, s, l, a == null ? 1 : a ]; -}; - -spaces.hsla.from = function ( hsla ) { - if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) { - return [ null, null, null, hsla[ 3 ] ]; - } - var h = hsla[ 0 ] / 360, - s = hsla[ 1 ], - l = hsla[ 2 ], - a = hsla[ 3 ], - q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s, - p = 2 * l - q; - - return [ - Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ), - Math.round( hue2rgb( p, q, h ) * 255 ), - Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ), - a - ]; -}; - - -each( spaces, function( spaceName, space ) { - var props = space.props, - cache = space.cache, - to = space.to, - from = space.from; - - // makes rgba() and hsla() - color.fn[ spaceName ] = function( value ) { - - // generate a cache for this space if it doesn't exist - if ( to && !this[ cache ] ) { - this[ cache ] = to( this._rgba ); - } - if ( value === undefined ) { - return this[ cache ].slice(); - } - - var ret, - type = jQuery.type( value ), - arr = ( type === "array" || type === "object" ) ? value : arguments, - local = this[ cache ].slice(); - - each( props, function( key, prop ) { - var val = arr[ type === "object" ? key : prop.idx ]; - if ( val == null ) { - val = local[ prop.idx ]; - } - local[ prop.idx ] = clamp( val, prop ); - }); - - if ( from ) { - ret = color( from( local ) ); - ret[ cache ] = local; - return ret; - } else { - return color( local ); - } - }; - - // makes red() green() blue() alpha() hue() saturation() lightness() - each( props, function( key, prop ) { - // alpha is included in more than one space - if ( color.fn[ key ] ) { - return; - } - color.fn[ key ] = function( value ) { - var vtype = jQuery.type( value ), - fn = ( key === "alpha" ? ( this._hsla ? "hsla" : "rgba" ) : spaceName ), - local = this[ fn ](), - cur = local[ prop.idx ], - match; - - if ( vtype === "undefined" ) { - return cur; - } - - if ( vtype === "function" ) { - value = value.call( this, cur ); - vtype = jQuery.type( value ); - } - if ( value == null && prop.empty ) { - return this; - } - if ( vtype === "string" ) { - match = rplusequals.exec( value ); - if ( match ) { - value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 ); - } - } - local[ prop.idx ] = value; - return this[ fn ]( local ); - }; - }); -}); - -// add cssHook and .fx.step function for each named hook. -// accept a space separated string of properties -color.hook = function( hook ) { - var hooks = hook.split( " " ); - each( hooks, function( i, hook ) { - jQuery.cssHooks[ hook ] = { - set: function( elem, value ) { - var parsed, curElem, - backgroundColor = ""; - - if ( value !== "transparent" && ( jQuery.type( value ) !== "string" || ( parsed = stringParse( value ) ) ) ) { - value = color( parsed || value ); - if ( !support.rgba && value._rgba[ 3 ] !== 1 ) { - curElem = hook === "backgroundColor" ? elem.parentNode : elem; - while ( - (backgroundColor === "" || backgroundColor === "transparent") && - curElem && curElem.style - ) { - try { - backgroundColor = jQuery.css( curElem, "backgroundColor" ); - curElem = curElem.parentNode; - } catch ( e ) { - } - } - - value = value.blend( backgroundColor && backgroundColor !== "transparent" ? - backgroundColor : - "_default" ); - } - - value = value.toRgbaString(); - } - try { - elem.style[ hook ] = value; - } catch( e ) { - // wrapped to prevent IE from throwing errors on "invalid" values like 'auto' or 'inherit' - } - } - }; - jQuery.fx.step[ hook ] = function( fx ) { - if ( !fx.colorInit ) { - fx.start = color( fx.elem, hook ); - fx.end = color( fx.end ); - fx.colorInit = true; - } - jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) ); - }; - }); - -}; - -color.hook( stepHooks ); - -jQuery.cssHooks.borderColor = { - expand: function( value ) { - var expanded = {}; - - each( [ "Top", "Right", "Bottom", "Left" ], function( i, part ) { - expanded[ "border" + part + "Color" ] = value; - }); - return expanded; - } -}; - -// Basic color names only. -// Usage of any of the other color names requires adding yourself or including -// jquery.color.svg-names.js. -colors = jQuery.Color.names = { - // 4.1. Basic color keywords - aqua: "#00ffff", - black: "#000000", - blue: "#0000ff", - fuchsia: "#ff00ff", - gray: "#808080", - green: "#008000", - lime: "#00ff00", - maroon: "#800000", - navy: "#000080", - olive: "#808000", - purple: "#800080", - red: "#ff0000", - silver: "#c0c0c0", - teal: "#008080", - white: "#ffffff", - yellow: "#ffff00", - - // 4.2.3. "transparent" color keyword - transparent: [ null, null, null, 0 ], - - _default: "#ffffff" -}; - -})( jQuery ); - - -/******************************************************************************/ -/****************************** CLASS ANIMATIONS ******************************/ -/******************************************************************************/ -(function() { - -var classAnimationActions = [ "add", "remove", "toggle" ], - shorthandStyles = { - border: 1, - borderBottom: 1, - borderColor: 1, - borderLeft: 1, - borderRight: 1, - borderTop: 1, - borderWidth: 1, - margin: 1, - padding: 1 - }; - -$.each([ "borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle" ], function( _, prop ) { - $.fx.step[ prop ] = function( fx ) { - if ( fx.end !== "none" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) { - jQuery.style( fx.elem, prop, fx.end ); - fx.setAttr = true; - } - }; -}); - -function getElementStyles( elem ) { - var key, len, - style = elem.ownerDocument.defaultView ? - elem.ownerDocument.defaultView.getComputedStyle( elem, null ) : - elem.currentStyle, - styles = {}; - - if ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) { - len = style.length; - while ( len-- ) { - key = style[ len ]; - if ( typeof style[ key ] === "string" ) { - styles[ $.camelCase( key ) ] = style[ key ]; - } - } - // support: Opera, IE <9 - } else { - for ( key in style ) { - if ( typeof style[ key ] === "string" ) { - styles[ key ] = style[ key ]; - } - } - } - - return styles; -} - - -function styleDifference( oldStyle, newStyle ) { - var diff = {}, - name, value; - - for ( name in newStyle ) { - value = newStyle[ name ]; - if ( oldStyle[ name ] !== value ) { - if ( !shorthandStyles[ name ] ) { - if ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) { - diff[ name ] = value; - } - } - } - } - - return diff; -} - -// support: jQuery <1.8 -if ( !$.fn.addBack ) { - $.fn.addBack = function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter( selector ) - ); - }; -} - -$.effects.animateClass = function( value, duration, easing, callback ) { - var o = $.speed( duration, easing, callback ); - - return this.queue( function() { - var animated = $( this ), - baseClass = animated.attr( "class" ) || "", - applyClassChange, - allAnimations = o.children ? animated.find( "*" ).addBack() : animated; - - // map the animated objects to store the original styles. - allAnimations = allAnimations.map(function() { - var el = $( this ); - return { - el: el, - start: getElementStyles( this ) - }; - }); - - // apply class change - applyClassChange = function() { - $.each( classAnimationActions, function(i, action) { - if ( value[ action ] ) { - animated[ action + "Class" ]( value[ action ] ); - } - }); - }; - applyClassChange(); - - // map all animated objects again - calculate new styles and diff - allAnimations = allAnimations.map(function() { - this.end = getElementStyles( this.el[ 0 ] ); - this.diff = styleDifference( this.start, this.end ); - return this; - }); - - // apply original class - animated.attr( "class", baseClass ); - - // map all animated objects again - this time collecting a promise - allAnimations = allAnimations.map(function() { - var styleInfo = this, - dfd = $.Deferred(), - opts = $.extend({}, o, { - queue: false, - complete: function() { - dfd.resolve( styleInfo ); - } - }); - - this.el.animate( this.diff, opts ); - return dfd.promise(); - }); - - // once all animations have completed: - $.when.apply( $, allAnimations.get() ).done(function() { - - // set the final class - applyClassChange(); - - // for each animated element, - // clear all css properties that were animated - $.each( arguments, function() { - var el = this.el; - $.each( this.diff, function(key) { - el.css( key, "" ); - }); - }); - - // this is guarnteed to be there if you use jQuery.speed() - // it also handles dequeuing the next anim... - o.complete.call( animated[ 0 ] ); - }); - }); -}; - -$.fn.extend({ - addClass: (function( orig ) { - return function( classNames, speed, easing, callback ) { - return speed ? - $.effects.animateClass.call( this, - { add: classNames }, speed, easing, callback ) : - orig.apply( this, arguments ); - }; - })( $.fn.addClass ), - - removeClass: (function( orig ) { - return function( classNames, speed, easing, callback ) { - return arguments.length > 1 ? - $.effects.animateClass.call( this, - { remove: classNames }, speed, easing, callback ) : - orig.apply( this, arguments ); - }; - })( $.fn.removeClass ), - - toggleClass: (function( orig ) { - return function( classNames, force, speed, easing, callback ) { - if ( typeof force === "boolean" || force === undefined ) { - if ( !speed ) { - // without speed parameter - return orig.apply( this, arguments ); - } else { - return $.effects.animateClass.call( this, - (force ? { add: classNames } : { remove: classNames }), - speed, easing, callback ); - } - } else { - // without force parameter - return $.effects.animateClass.call( this, - { toggle: classNames }, force, speed, easing ); - } - }; - })( $.fn.toggleClass ), - - switchClass: function( remove, add, speed, easing, callback) { - return $.effects.animateClass.call( this, { - add: add, - remove: remove - }, speed, easing, callback ); - } -}); - -})(); - -/******************************************************************************/ -/*********************************** EFFECTS **********************************/ -/******************************************************************************/ - -(function() { - -$.extend( $.effects, { - version: "1.10.4", - - // Saves a set of properties in a data storage - save: function( element, set ) { - for( var i=0; i < set.length; i++ ) { - if ( set[ i ] !== null ) { - element.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] ); - } - } - }, - - // Restores a set of previously saved properties from a data storage - restore: function( element, set ) { - var val, i; - for( i=0; i < set.length; i++ ) { - if ( set[ i ] !== null ) { - val = element.data( dataSpace + set[ i ] ); - // support: jQuery 1.6.2 - // http://bugs.jquery.com/ticket/9917 - // jQuery 1.6.2 incorrectly returns undefined for any falsy value. - // We can't differentiate between "" and 0 here, so we just assume - // empty string since it's likely to be a more common value... - if ( val === undefined ) { - val = ""; - } - element.css( set[ i ], val ); - } - } - }, - - setMode: function( el, mode ) { - if (mode === "toggle") { - mode = el.is( ":hidden" ) ? "show" : "hide"; - } - return mode; - }, - - // Translates a [top,left] array into a baseline value - // this should be a little more flexible in the future to handle a string & hash - getBaseline: function( origin, original ) { - var y, x; - switch ( origin[ 0 ] ) { - case "top": y = 0; break; - case "middle": y = 0.5; break; - case "bottom": y = 1; break; - default: y = origin[ 0 ] / original.height; - } - switch ( origin[ 1 ] ) { - case "left": x = 0; break; - case "center": x = 0.5; break; - case "right": x = 1; break; - default: x = origin[ 1 ] / original.width; - } - return { - x: x, - y: y - }; - }, - - // Wraps the element around a wrapper that copies position properties - createWrapper: function( element ) { - - // if the element is already wrapped, return it - if ( element.parent().is( ".ui-effects-wrapper" )) { - return element.parent(); - } - - // wrap the element - var props = { - width: element.outerWidth(true), - height: element.outerHeight(true), - "float": element.css( "float" ) - }, - wrapper = $( "<div></div>" ) - .addClass( "ui-effects-wrapper" ) - .css({ - fontSize: "100%", - background: "transparent", - border: "none", - margin: 0, - padding: 0 - }), - // Store the size in case width/height are defined in % - Fixes #5245 - size = { - width: element.width(), - height: element.height() - }, - active = document.activeElement; - - // support: Firefox - // Firefox incorrectly exposes anonymous content - // https://bugzilla.mozilla.org/show_bug.cgi?id=561664 - try { - active.id; - } catch( e ) { - active = document.body; - } - - element.wrap( wrapper ); - - // Fixes #7595 - Elements lose focus when wrapped. - if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { - $( active ).focus(); - } - - wrapper = element.parent(); //Hotfix for jQuery 1.4 since some change in wrap() seems to actually lose the reference to the wrapped element - - // transfer positioning properties to the wrapper - if ( element.css( "position" ) === "static" ) { - wrapper.css({ position: "relative" }); - element.css({ position: "relative" }); - } else { - $.extend( props, { - position: element.css( "position" ), - zIndex: element.css( "z-index" ) - }); - $.each([ "top", "left", "bottom", "right" ], function(i, pos) { - props[ pos ] = element.css( pos ); - if ( isNaN( parseInt( props[ pos ], 10 ) ) ) { - props[ pos ] = "auto"; - } - }); - element.css({ - position: "relative", - top: 0, - left: 0, - right: "auto", - bottom: "auto" - }); - } - element.css(size); - - return wrapper.css( props ).show(); - }, - - removeWrapper: function( element ) { - var active = document.activeElement; - - if ( element.parent().is( ".ui-effects-wrapper" ) ) { - element.parent().replaceWith( element ); - - // Fixes #7595 - Elements lose focus when wrapped. - if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { - $( active ).focus(); - } - } - - - return element; - }, - - setTransition: function( element, list, factor, value ) { - value = value || {}; - $.each( list, function( i, x ) { - var unit = element.cssUnit( x ); - if ( unit[ 0 ] > 0 ) { - value[ x ] = unit[ 0 ] * factor + unit[ 1 ]; - } - }); - return value; - } -}); - -// return an effect options object for the given parameters: -function _normalizeArguments( effect, options, speed, callback ) { - - // allow passing all options as the first parameter - if ( $.isPlainObject( effect ) ) { - options = effect; - effect = effect.effect; - } - - // convert to an object - effect = { effect: effect }; - - // catch (effect, null, ...) - if ( options == null ) { - options = {}; - } - - // catch (effect, callback) - if ( $.isFunction( options ) ) { - callback = options; - speed = null; - options = {}; - } - - // catch (effect, speed, ?) - if ( typeof options === "number" || $.fx.speeds[ options ] ) { - callback = speed; - speed = options; - options = {}; - } - - // catch (effect, options, callback) - if ( $.isFunction( speed ) ) { - callback = speed; - speed = null; - } - - // add options to effect - if ( options ) { - $.extend( effect, options ); - } - - speed = speed || options.duration; - effect.duration = $.fx.off ? 0 : - typeof speed === "number" ? speed : - speed in $.fx.speeds ? $.fx.speeds[ speed ] : - $.fx.speeds._default; - - effect.complete = callback || options.complete; - - return effect; -} - -function standardAnimationOption( option ) { - // Valid standard speeds (nothing, number, named speed) - if ( !option || typeof option === "number" || $.fx.speeds[ option ] ) { - return true; - } - - // Invalid strings - treat as "normal" speed - if ( typeof option === "string" && !$.effects.effect[ option ] ) { - return true; - } - - // Complete callback - if ( $.isFunction( option ) ) { - return true; - } - - // Options hash (but not naming an effect) - if ( typeof option === "object" && !option.effect ) { - return true; - } - - // Didn't match any standard API - return false; -} - -$.fn.extend({ - effect: function( /* effect, options, speed, callback */ ) { - var args = _normalizeArguments.apply( this, arguments ), - mode = args.mode, - queue = args.queue, - effectMethod = $.effects.effect[ args.effect ]; - - if ( $.fx.off || !effectMethod ) { - // delegate to the original method (e.g., .show()) if possible - if ( mode ) { - return this[ mode ]( args.duration, args.complete ); - } else { - return this.each( function() { - if ( args.complete ) { - args.complete.call( this ); - } - }); - } - } - - function run( next ) { - var elem = $( this ), - complete = args.complete, - mode = args.mode; - - function done() { - if ( $.isFunction( complete ) ) { - complete.call( elem[0] ); - } - if ( $.isFunction( next ) ) { - next(); - } - } - - // If the element already has the correct final state, delegate to - // the core methods so the internal tracking of "olddisplay" works. - if ( elem.is( ":hidden" ) ? mode === "hide" : mode === "show" ) { - elem[ mode ](); - done(); - } else { - effectMethod.call( elem[0], args, done ); - } - } - - return queue === false ? this.each( run ) : this.queue( queue || "fx", run ); - }, - - show: (function( orig ) { - return function( option ) { - if ( standardAnimationOption( option ) ) { - return orig.apply( this, arguments ); - } else { - var args = _normalizeArguments.apply( this, arguments ); - args.mode = "show"; - return this.effect.call( this, args ); - } - }; - })( $.fn.show ), - - hide: (function( orig ) { - return function( option ) { - if ( standardAnimationOption( option ) ) { - return orig.apply( this, arguments ); - } else { - var args = _normalizeArguments.apply( this, arguments ); - args.mode = "hide"; - return this.effect.call( this, args ); - } - }; - })( $.fn.hide ), - - toggle: (function( orig ) { - return function( option ) { - if ( standardAnimationOption( option ) || typeof option === "boolean" ) { - return orig.apply( this, arguments ); - } else { - var args = _normalizeArguments.apply( this, arguments ); - args.mode = "toggle"; - return this.effect.call( this, args ); - } - }; - })( $.fn.toggle ), - - // helper functions - cssUnit: function(key) { - var style = this.css( key ), - val = []; - - $.each( [ "em", "px", "%", "pt" ], function( i, unit ) { - if ( style.indexOf( unit ) > 0 ) { - val = [ parseFloat( style ), unit ]; - } - }); - return val; - } -}); - -})(); - -/******************************************************************************/ -/*********************************** EASING ***********************************/ -/******************************************************************************/ - -(function() { - -// based on easing equations from Robert Penner (http://www.robertpenner.com/easing) - -var baseEasings = {}; - -$.each( [ "Quad", "Cubic", "Quart", "Quint", "Expo" ], function( i, name ) { - baseEasings[ name ] = function( p ) { - return Math.pow( p, i + 2 ); - }; -}); - -$.extend( baseEasings, { - Sine: function ( p ) { - return 1 - Math.cos( p * Math.PI / 2 ); - }, - Circ: function ( p ) { - return 1 - Math.sqrt( 1 - p * p ); - }, - Elastic: function( p ) { - return p === 0 || p === 1 ? p : - -Math.pow( 2, 8 * (p - 1) ) * Math.sin( ( (p - 1) * 80 - 7.5 ) * Math.PI / 15 ); - }, - Back: function( p ) { - return p * p * ( 3 * p - 2 ); - }, - Bounce: function ( p ) { - var pow2, - bounce = 4; - - while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {} - return 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 ); - } -}); - -$.each( baseEasings, function( name, easeIn ) { - $.easing[ "easeIn" + name ] = easeIn; - $.easing[ "easeOut" + name ] = function( p ) { - return 1 - easeIn( 1 - p ); - }; - $.easing[ "easeInOut" + name ] = function( p ) { - return p < 0.5 ? - easeIn( p * 2 ) / 2 : - 1 - easeIn( p * -2 + 2 ) / 2; - }; -}); - -})(); - -})(jQuery); - -(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.4", - 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-expanded" ) - .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-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 ) { - 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", - "aria-expanded": "false", - tabIndex: -1 - }) - .next() - .attr({ - "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", - "aria-expanded": "true", - tabIndex: 0 - }) - .next() - .attr({ - "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-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, - "aria-expanded": "false" - }); - } else if ( toShow.length ) { - this.headers.filter(function() { - return $( this ).attr( "tabIndex" ) === 0; - }) - .attr( "tabIndex", -1 ); - } - - toShow - .attr( "aria-hidden", "false" ) - .prev() - .attr({ - "aria-selected": "true", - tabIndex: 0, - "aria-expanded": "true" - }); - }, - - _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 ); - -(function( $, undefined ) { - -$.widget( "ui.autocomplete", { - version: "1.10.4", - 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 - }, - - requestIndex: 0, - 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 ) { - 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 index = ++this.requestIndex; - - return $.proxy(function( content ) { - if ( index === this.requestIndex ) { - this.__response( content ); - } - - this.pending--; - if ( !this.pending ) { - this.element.removeClass( "ui-autocomplete-loading" ); - } - }, this ); - }, - - __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 )); - -(function( $, undefined ) { - -var lastActive, - baseClasses = "ui-button ui-widget ui-state-default ui-corner-all", - 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.4", - 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" : ""; - - 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(); - } - }); - - // Can't use _focusable() because the element that receives focus - // and the element that gets the ui-state-focus class are different - this._on({ - focus: function() { - this.buttonElement.addClass( "ui-state-focus" ); - }, - blur: function() { - this.buttonElement.removeClass( "ui-state-focus" ); - } - }); - - if ( toggleButton ) { - this.element.bind( "change" + this.eventNamespace, function() { - that.refresh(); - }); - } - - if ( this.type === "checkbox" ) { - this.buttonElement.bind( "click" + this.eventNamespace, function() { - if ( options.disabled ) { - return false; - } - }); - } else if ( this.type === "radio" ) { - this.buttonElement.bind( "click" + this.eventNamespace, function() { - if ( options.disabled ) { - 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 + " ui-state-active " + 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" ) { - this.element.prop( "disabled", !!value ); - if ( value ) { - this.buttonElement.removeClass( "ui-state-focus" ); - } - 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.4", - 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 ) ); - -(function( $, undefined ) { - -$.extend($.ui, { datepicker: { version: "1.10.4" } }); - -var PROP_NAME = "datepicker", - instActive; - -/* Date picker manager. - Use the singleton instance of this class, $.datepicker, to interact with the date picker. - Settings for (groups of) date pickers are maintained in an instance object, - allowing multiple different settings on the same page. */ - -function Datepicker() { - this._curInst = null; // The current instance in use - this._keyEvent = false; // If the last event was a key event - this._disabledInputs = []; // List of date picker inputs that have been disabled - this._datepickerShowing = false; // True if the popup picker is showing , false if not - this._inDialog = false; // True if showing within a "dialog", false if not - this._mainDivId = "ui-datepicker-div"; // The ID of the main datepicker division - this._inlineClass = "ui-datepicker-inline"; // The name of the inline marker class - this._appendClass = "ui-datepicker-append"; // The name of the append marker class - this._triggerClass = "ui-datepicker-trigger"; // The name of the trigger marker class - this._dialogClass = "ui-datepicker-dialog"; // The name of the dialog marker class - this._disableClass = "ui-datepicker-disabled"; // The name of the disabled covering marker class - this._unselectableClass = "ui-datepicker-unselectable"; // The name of the unselectable cell marker class - this._currentClass = "ui-datepicker-current-day"; // The name of the current day marker class - this._dayOverClass = "ui-datepicker-days-cell-over"; // The name of the day hover marker class - this.regional = []; // Available regional settings, indexed by language code - this.regional[""] = { // Default regional settings - closeText: "Done", // Display text for close link - prevText: "Prev", // Display text for previous month link - nextText: "Next", // Display text for next month link - currentText: "Today", // Display text for current month link - monthNames: ["January","February","March","April","May","June", - "July","August","September","October","November","December"], // Names of months for drop-down and formatting - monthNamesShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], // For formatting - dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], // For formatting - dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], // For formatting - dayNamesMin: ["Su","Mo","Tu","We","Th","Fr","Sa"], // Column headings for days starting at Sunday - weekHeader: "Wk", // Column header for week of the year - dateFormat: "mm/dd/yy", // See format options on parseDate - firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ... - isRTL: false, // True if right-to-left language, false if left-to-right - showMonthAfterYear: false, // True if the year select precedes month, false for month then year - yearSuffix: "" // Additional text to append to the year in the month headers - }; - this._defaults = { // Global defaults for all the date picker instances - showOn: "focus", // "focus" for popup on focus, - // "button" for trigger button, or "both" for either - showAnim: "fadeIn", // Name of jQuery animation for popup - showOptions: {}, // Options for enhanced animations - defaultDate: null, // Used when field is blank: actual date, - // +/-number for offset from today, null for today - appendText: "", // Display text following the input box, e.g. showing the format - buttonText: "...", // Text for trigger button - buttonImage: "", // URL for trigger button image - buttonImageOnly: false, // True if the image appears alone, false if it appears on a button - hideIfNoPrevNext: false, // True to hide next/previous month links - // if not applicable, false to just disable them - navigationAsDateFormat: false, // True if date formatting applied to prev/today/next links - gotoCurrent: false, // True if today link goes back to current selection instead - changeMonth: false, // True if month can be selected directly, false if only prev/next - changeYear: false, // True if year can be selected directly, false if only prev/next - yearRange: "c-10:c+10", // Range of years to display in drop-down, - // either relative to today's year (-nn:+nn), relative to currently displayed year - // (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n) - showOtherMonths: false, // True to show dates in other months, false to leave blank - selectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable - showWeek: false, // True to show week of the year, false to not show it - calculateWeek: this.iso8601Week, // How to calculate the week of the year, - // takes a Date and returns the number of the week for it - shortYearCutoff: "+10", // Short year values < this are in the current century, - // > this are in the previous century, - // string value starting with "+" for current year + value - minDate: null, // The earliest selectable date, or null for no limit - maxDate: null, // The latest selectable date, or null for no limit - duration: "fast", // Duration of display/closure - beforeShowDay: null, // Function that takes a date and returns an array with - // [0] = true if selectable, false if not, [1] = custom CSS class name(s) or "", - // [2] = cell title (optional), e.g. $.datepicker.noWeekends - beforeShow: null, // Function that takes an input field and - // returns a set of custom settings for the date picker - onSelect: null, // Define a callback function when a date is selected - onChangeMonthYear: null, // Define a callback function when the month or year is changed - onClose: null, // Define a callback function when the datepicker is closed - numberOfMonths: 1, // Number of months to show at a time - showCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0) - stepMonths: 1, // Number of months to step back/forward - stepBigMonths: 12, // Number of months to step back/forward for the big links - altField: "", // Selector for an alternate field to store selected dates into - altFormat: "", // The date format to use for the alternate field - constrainInput: true, // The input is constrained by the current date format - showButtonPanel: false, // True to show button panel, false to not show it - autoSize: false, // True to size the input for the date format, false to leave as is - disabled: false // The initial disabled state - }; - $.extend(this._defaults, this.regional[""]); - this.dpDiv = bindHover($("<div id='" + this._mainDivId + "' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")); -} - -$.extend(Datepicker.prototype, { - /* Class name added to elements to indicate already configured with a date picker. */ - markerClassName: "hasDatepicker", - - //Keep track of the maximum number of rows displayed (see #7043) - maxRows: 4, - - // TODO rename to "widget" when switching to widget factory - _widgetDatepicker: function() { - return this.dpDiv; - }, - - /* Override the default settings for all instances of the date picker. - * @param settings object - the new settings to use as defaults (anonymous object) - * @return the manager object - */ - setDefaults: function(settings) { - extendRemove(this._defaults, settings || {}); - return this; - }, - - /* Attach the date picker to a jQuery selection. - * @param target element - the target input field or division or span - * @param settings object - the new settings to use for this date picker instance (anonymous) - */ - _attachDatepicker: function(target, settings) { - var nodeName, inline, inst; - nodeName = target.nodeName.toLowerCase(); - inline = (nodeName === "div" || nodeName === "span"); - if (!target.id) { - this.uuid += 1; - target.id = "dp" + this.uuid; - } - inst = this._newInst($(target), inline); - inst.settings = $.extend({}, settings || {}); - if (nodeName === "input") { - this._connectDatepicker(target, inst); - } else if (inline) { - this._inlineDatepicker(target, inst); - } - }, - - /* Create a new instance object. */ - _newInst: function(target, inline) { - var id = target[0].id.replace(/([^A-Za-z0-9_\-])/g, "\\\\$1"); // escape jQuery meta chars - return {id: id, input: target, // associated target - selectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection - drawMonth: 0, drawYear: 0, // month being drawn - inline: inline, // is datepicker inline or not - dpDiv: (!inline ? this.dpDiv : // presentation div - bindHover($("<div class='" + this._inlineClass + " ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")))}; - }, - - /* Attach the date picker to an input field. */ - _connectDatepicker: function(target, inst) { - var input = $(target); - inst.append = $([]); - inst.trigger = $([]); - if (input.hasClass(this.markerClassName)) { - return; - } - this._attachments(input, inst); - input.addClass(this.markerClassName).keydown(this._doKeyDown). - keypress(this._doKeyPress).keyup(this._doKeyUp); - this._autoSize(inst); - $.data(target, PROP_NAME, inst); - //If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665) - if( inst.settings.disabled ) { - this._disableDatepicker( target ); - } - }, - - /* Make attachments based on settings. */ - _attachments: function(input, inst) { - var showOn, buttonText, buttonImage, - appendText = this._get(inst, "appendText"), - isRTL = this._get(inst, "isRTL"); - - if (inst.append) { - inst.append.remove(); - } - if (appendText) { - inst.append = $("<span class='" + this._appendClass + "'>" + appendText + "</span>"); - input[isRTL ? "before" : "after"](inst.append); - } - - input.unbind("focus", this._showDatepicker); - - if (inst.trigger) { - inst.trigger.remove(); - } - - showOn = this._get(inst, "showOn"); - if (showOn === "focus" || showOn === "both") { // pop-up date picker when in the marked field - input.focus(this._showDatepicker); - } - if (showOn === "button" || showOn === "both") { // pop-up date picker when button clicked - buttonText = this._get(inst, "buttonText"); - buttonImage = this._get(inst, "buttonImage"); - inst.trigger = $(this._get(inst, "buttonImageOnly") ? - $("<img/>").addClass(this._triggerClass). - attr({ src: buttonImage, alt: buttonText, title: buttonText }) : - $("<button type='button'></button>").addClass(this._triggerClass). - html(!buttonImage ? buttonText : $("<img/>").attr( - { src:buttonImage, alt:buttonText, title:buttonText }))); - input[isRTL ? "before" : "after"](inst.trigger); - inst.trigger.click(function() { - if ($.datepicker._datepickerShowing && $.datepicker._lastInput === input[0]) { - $.datepicker._hideDatepicker(); - } else if ($.datepicker._datepickerShowing && $.datepicker._lastInput !== input[0]) { - $.datepicker._hideDatepicker(); - $.datepicker._showDatepicker(input[0]); - } else { - $.datepicker._showDatepicker(input[0]); - } - return false; - }); - } - }, - - /* Apply the maximum length for the date format. */ - _autoSize: function(inst) { - if (this._get(inst, "autoSize") && !inst.inline) { - var findMax, max, maxI, i, - date = new Date(2009, 12 - 1, 20), // Ensure double digits - dateFormat = this._get(inst, "dateFormat"); - - if (dateFormat.match(/[DM]/)) { - findMax = function(names) { - max = 0; - maxI = 0; - for (i = 0; i < names.length; i++) { - if (names[i].length > max) { - max = names[i].length; - maxI = i; - } - } - return maxI; - }; - date.setMonth(findMax(this._get(inst, (dateFormat.match(/MM/) ? - "monthNames" : "monthNamesShort")))); - date.setDate(findMax(this._get(inst, (dateFormat.match(/DD/) ? - "dayNames" : "dayNamesShort"))) + 20 - date.getDay()); - } - inst.input.attr("size", this._formatDate(inst, date).length); - } - }, - - /* Attach an inline date picker to a div. */ - _inlineDatepicker: function(target, inst) { - var divSpan = $(target); - if (divSpan.hasClass(this.markerClassName)) { - return; - } - divSpan.addClass(this.markerClassName).append(inst.dpDiv); - $.data(target, PROP_NAME, inst); - this._setDate(inst, this._getDefaultDate(inst), true); - this._updateDatepicker(inst); - this._updateAlternate(inst); - //If disabled option is true, disable the datepicker before showing it (see ticket #5665) - if( inst.settings.disabled ) { - this._disableDatepicker( target ); - } - // Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements - // http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height - inst.dpDiv.css( "display", "block" ); - }, - - /* Pop-up the date picker in a "dialog" box. - * @param input element - ignored - * @param date string or Date - the initial date to display - * @param onSelect function - the function to call when a date is selected - * @param settings object - update the dialog date picker instance's settings (anonymous object) - * @param pos int[2] - coordinates for the dialog's position within the screen or - * event - with x/y coordinates or - * leave empty for default (screen centre) - * @return the manager object - */ - _dialogDatepicker: function(input, date, onSelect, settings, pos) { - var id, browserWidth, browserHeight, scrollX, scrollY, - inst = this._dialogInst; // internal instance - - if (!inst) { - this.uuid += 1; - id = "dp" + this.uuid; - this._dialogInput = $("<input type='text' id='" + id + - "' style='position: absolute; top: -100px; width: 0px;'/>"); - this._dialogInput.keydown(this._doKeyDown); - $("body").append(this._dialogInput); - inst = this._dialogInst = this._newInst(this._dialogInput, false); - inst.settings = {}; - $.data(this._dialogInput[0], PROP_NAME, inst); - } - extendRemove(inst.settings, settings || {}); - date = (date && date.constructor === Date ? this._formatDate(inst, date) : date); - this._dialogInput.val(date); - - this._pos = (pos ? (pos.length ? pos : [pos.pageX, pos.pageY]) : null); - if (!this._pos) { - browserWidth = document.documentElement.clientWidth; - browserHeight = document.documentElement.clientHeight; - scrollX = document.documentElement.scrollLeft || document.body.scrollLeft; - scrollY = document.documentElement.scrollTop || document.body.scrollTop; - this._pos = // should use actual width/height below - [(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 + scrollY]; - } - - // move input on screen for focus, but hidden behind dialog - this._dialogInput.css("left", (this._pos[0] + 20) + "px").css("top", this._pos[1] + "px"); - inst.settings.onSelect = onSelect; - this._inDialog = true; - this.dpDiv.addClass(this._dialogClass); - this._showDatepicker(this._dialogInput[0]); - if ($.blockUI) { - $.blockUI(this.dpDiv); - } - $.data(this._dialogInput[0], PROP_NAME, inst); - return this; - }, - - /* Detach a datepicker from its control. - * @param target element - the target input field or division or span - */ - _destroyDatepicker: function(target) { - var nodeName, - $target = $(target), - inst = $.data(target, PROP_NAME); - - if (!$target.hasClass(this.markerClassName)) { - return; - } - - nodeName = target.nodeName.toLowerCase(); - $.removeData(target, PROP_NAME); - if (nodeName === "input") { - inst.append.remove(); - inst.trigger.remove(); - $target.removeClass(this.markerClassName). - unbind("focus", this._showDatepicker). - unbind("keydown", this._doKeyDown). - unbind("keypress", this._doKeyPress). - unbind("keyup", this._doKeyUp); - } else if (nodeName === "div" || nodeName === "span") { - $target.removeClass(this.markerClassName).empty(); - } - }, - - /* Enable the date picker to a jQuery selection. - * @param target element - the target input field or division or span - */ - _enableDatepicker: function(target) { - var nodeName, inline, - $target = $(target), - inst = $.data(target, PROP_NAME); - - if (!$target.hasClass(this.markerClassName)) { - return; - } - - nodeName = target.nodeName.toLowerCase(); - if (nodeName === "input") { - target.disabled = false; - inst.trigger.filter("button"). - each(function() { this.disabled = false; }).end(). - filter("img").css({opacity: "1.0", cursor: ""}); - } else if (nodeName === "div" || nodeName === "span") { - inline = $target.children("." + this._inlineClass); - inline.children().removeClass("ui-state-disabled"); - inline.find("select.ui-datepicker-month, select.ui-datepicker-year"). - prop("disabled", false); - } - this._disabledInputs = $.map(this._disabledInputs, - function(value) { return (value === target ? null : value); }); // delete entry - }, - - /* Disable the date picker to a jQuery selection. - * @param target element - the target input field or division or span - */ - _disableDatepicker: function(target) { - var nodeName, inline, - $target = $(target), - inst = $.data(target, PROP_NAME); - - if (!$target.hasClass(this.markerClassName)) { - return; - } - - nodeName = target.nodeName.toLowerCase(); - if (nodeName === "input") { - target.disabled = true; - inst.trigger.filter("button"). - each(function() { this.disabled = true; }).end(). - filter("img").css({opacity: "0.5", cursor: "default"}); - } else if (nodeName === "div" || nodeName === "span") { - inline = $target.children("." + this._inlineClass); - inline.children().addClass("ui-state-disabled"); - inline.find("select.ui-datepicker-month, select.ui-datepicker-year"). - prop("disabled", true); - } - this._disabledInputs = $.map(this._disabledInputs, - function(value) { return (value === target ? null : value); }); // delete entry - this._disabledInputs[this._disabledInputs.length] = target; - }, - - /* Is the first field in a jQuery collection disabled as a datepicker? - * @param target element - the target input field or division or span - * @return boolean - true if disabled, false if enabled - */ - _isDisabledDatepicker: function(target) { - if (!target) { - return false; - } - for (var i = 0; i < this._disabledInputs.length; i++) { - if (this._disabledInputs[i] === target) { - return true; - } - } - return false; - }, - - /* Retrieve the instance data for the target control. - * @param target element - the target input field or division or span - * @return object - the associated instance data - * @throws error if a jQuery problem getting data - */ - _getInst: function(target) { - try { - return $.data(target, PROP_NAME); - } - catch (err) { - throw "Missing instance data for this datepicker"; - } - }, - - /* Update or retrieve the settings for a date picker attached to an input field or division. - * @param target element - the target input field or division or span - * @param name object - the new settings to update or - * string - the name of the setting to change or retrieve, - * when retrieving also "all" for all instance settings or - * "defaults" for all global defaults - * @param value any - the new value for the setting - * (omit if above is an object or to retrieve a value) - */ - _optionDatepicker: function(target, name, value) { - var settings, date, minDate, maxDate, - inst = this._getInst(target); - - if (arguments.length === 2 && typeof name === "string") { - return (name === "defaults" ? $.extend({}, $.datepicker._defaults) : - (inst ? (name === "all" ? $.extend({}, inst.settings) : - this._get(inst, name)) : null)); - } - - settings = name || {}; - if (typeof name === "string") { - settings = {}; - settings[name] = value; - } - - if (inst) { - if (this._curInst === inst) { - this._hideDatepicker(); - } - - date = this._getDateDatepicker(target, true); - minDate = this._getMinMaxDate(inst, "min"); - maxDate = this._getMinMaxDate(inst, "max"); - extendRemove(inst.settings, settings); - // reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided - if (minDate !== null && settings.dateFormat !== undefined && settings.minDate === undefined) { - inst.settings.minDate = this._formatDate(inst, minDate); - } - if (maxDate !== null && settings.dateFormat !== undefined && settings.maxDate === undefined) { - inst.settings.maxDate = this._formatDate(inst, maxDate); - } - if ( "disabled" in settings ) { - if ( settings.disabled ) { - this._disableDatepicker(target); - } else { - this._enableDatepicker(target); - } - } - this._attachments($(target), inst); - this._autoSize(inst); - this._setDate(inst, date); - this._updateAlternate(inst); - this._updateDatepicker(inst); - } - }, - - // change method deprecated - _changeDatepicker: function(target, name, value) { - this._optionDatepicker(target, name, value); - }, - - /* Redraw the date picker attached to an input field or division. - * @param target element - the target input field or division or span - */ - _refreshDatepicker: function(target) { - var inst = this._getInst(target); - if (inst) { - this._updateDatepicker(inst); - } - }, - - /* Set the dates for a jQuery selection. - * @param target element - the target input field or division or span - * @param date Date - the new date - */ - _setDateDatepicker: function(target, date) { - var inst = this._getInst(target); - if (inst) { - this._setDate(inst, date); - this._updateDatepicker(inst); - this._updateAlternate(inst); - } - }, - - /* Get the date(s) for the first entry in a jQuery selection. - * @param target element - the target input field or division or span - * @param noDefault boolean - true if no default date is to be used - * @return Date - the current date - */ - _getDateDatepicker: function(target, noDefault) { - var inst = this._getInst(target); - if (inst && !inst.inline) { - this._setDateFromField(inst, noDefault); - } - return (inst ? this._getDate(inst) : null); - }, - - /* Handle keystrokes. */ - _doKeyDown: function(event) { - var onSelect, dateStr, sel, - inst = $.datepicker._getInst(event.target), - handled = true, - isRTL = inst.dpDiv.is(".ui-datepicker-rtl"); - - inst._keyEvent = true; - if ($.datepicker._datepickerShowing) { - switch (event.keyCode) { - case 9: $.datepicker._hideDatepicker(); - handled = false; - break; // hide on tab out - case 13: sel = $("td." + $.datepicker._dayOverClass + ":not(." + - $.datepicker._currentClass + ")", inst.dpDiv); - if (sel[0]) { - $.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]); - } - - onSelect = $.datepicker._get(inst, "onSelect"); - if (onSelect) { - dateStr = $.datepicker._formatDate(inst); - - // trigger custom callback - onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]); - } else { - $.datepicker._hideDatepicker(); - } - - return false; // don't submit the form - case 27: $.datepicker._hideDatepicker(); - break; // hide on escape - case 33: $.datepicker._adjustDate(event.target, (event.ctrlKey ? - -$.datepicker._get(inst, "stepBigMonths") : - -$.datepicker._get(inst, "stepMonths")), "M"); - break; // previous month/year on page up/+ ctrl - case 34: $.datepicker._adjustDate(event.target, (event.ctrlKey ? - +$.datepicker._get(inst, "stepBigMonths") : - +$.datepicker._get(inst, "stepMonths")), "M"); - break; // next month/year on page down/+ ctrl - case 35: if (event.ctrlKey || event.metaKey) { - $.datepicker._clearDate(event.target); - } - handled = event.ctrlKey || event.metaKey; - break; // clear on ctrl or command +end - case 36: if (event.ctrlKey || event.metaKey) { - $.datepicker._gotoToday(event.target); - } - handled = event.ctrlKey || event.metaKey; - break; // current on ctrl or command +home - case 37: if (event.ctrlKey || event.metaKey) { - $.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), "D"); - } - handled = event.ctrlKey || event.metaKey; - // -1 day on ctrl or command +left - if (event.originalEvent.altKey) { - $.datepicker._adjustDate(event.target, (event.ctrlKey ? - -$.datepicker._get(inst, "stepBigMonths") : - -$.datepicker._get(inst, "stepMonths")), "M"); - } - // next month/year on alt +left on Mac - break; - case 38: if (event.ctrlKey || event.metaKey) { - $.datepicker._adjustDate(event.target, -7, "D"); - } - handled = event.ctrlKey || event.metaKey; - break; // -1 week on ctrl or command +up - case 39: if (event.ctrlKey || event.metaKey) { - $.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), "D"); - } - handled = event.ctrlKey || event.metaKey; - // +1 day on ctrl or command +right - if (event.originalEvent.altKey) { - $.datepicker._adjustDate(event.target, (event.ctrlKey ? - +$.datepicker._get(inst, "stepBigMonths") : - +$.datepicker._get(inst, "stepMonths")), "M"); - } - // next month/year on alt +right - break; - case 40: if (event.ctrlKey || event.metaKey) { - $.datepicker._adjustDate(event.target, +7, "D"); - } - handled = event.ctrlKey || event.metaKey; - break; // +1 week on ctrl or command +down - default: handled = false; - } - } else if (event.keyCode === 36 && event.ctrlKey) { // display the date picker on ctrl+home - $.datepicker._showDatepicker(this); - } else { - handled = false; - } - - if (handled) { - event.preventDefault(); - event.stopPropagation(); - } - }, - - /* Filter entered characters - based on date format. */ - _doKeyPress: function(event) { - var chars, chr, - inst = $.datepicker._getInst(event.target); - - if ($.datepicker._get(inst, "constrainInput")) { - chars = $.datepicker._possibleChars($.datepicker._get(inst, "dateFormat")); - chr = String.fromCharCode(event.charCode == null ? event.keyCode : event.charCode); - return event.ctrlKey || event.metaKey || (chr < " " || !chars || chars.indexOf(chr) > -1); - } - }, - - /* Synchronise manual entry and field/alternate field. */ - _doKeyUp: function(event) { - var date, - inst = $.datepicker._getInst(event.target); - - if (inst.input.val() !== inst.lastVal) { - try { - date = $.datepicker.parseDate($.datepicker._get(inst, "dateFormat"), - (inst.input ? inst.input.val() : null), - $.datepicker._getFormatConfig(inst)); - - if (date) { // only if valid - $.datepicker._setDateFromField(inst); - $.datepicker._updateAlternate(inst); - $.datepicker._updateDatepicker(inst); - } - } - catch (err) { - } - } - return true; - }, - - /* Pop-up the date picker for a given input field. - * If false returned from beforeShow event handler do not show. - * @param input element - the input field attached to the date picker or - * event - if triggered by focus - */ - _showDatepicker: function(input) { - input = input.target || input; - if (input.nodeName.toLowerCase() !== "input") { // find from button/image trigger - input = $("input", input.parentNode)[0]; - } - - if ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput === input) { // already here - return; - } - - var inst, beforeShow, beforeShowSettings, isFixed, - offset, showAnim, duration; - - inst = $.datepicker._getInst(input); - if ($.datepicker._curInst && $.datepicker._curInst !== inst) { - $.datepicker._curInst.dpDiv.stop(true, true); - if ( inst && $.datepicker._datepickerShowing ) { - $.datepicker._hideDatepicker( $.datepicker._curInst.input[0] ); - } - } - - beforeShow = $.datepicker._get(inst, "beforeShow"); - beforeShowSettings = beforeShow ? beforeShow.apply(input, [input, inst]) : {}; - if(beforeShowSettings === false){ - return; - } - extendRemove(inst.settings, beforeShowSettings); - - inst.lastVal = null; - $.datepicker._lastInput = input; - $.datepicker._setDateFromField(inst); - - if ($.datepicker._inDialog) { // hide cursor - input.value = ""; - } - if (!$.datepicker._pos) { // position below input - $.datepicker._pos = $.datepicker._findPos(input); - $.datepicker._pos[1] += input.offsetHeight; // add the height - } - - isFixed = false; - $(input).parents().each(function() { - isFixed |= $(this).css("position") === "fixed"; - return !isFixed; - }); - - offset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]}; - $.datepicker._pos = null; - //to avoid flashes on Firefox - inst.dpDiv.empty(); - // determine sizing offscreen - inst.dpDiv.css({position: "absolute", display: "block", top: "-1000px"}); - $.datepicker._updateDatepicker(inst); - // fix width for dynamic number of date pickers - // and adjust position before showing - offset = $.datepicker._checkOffset(inst, offset, isFixed); - inst.dpDiv.css({position: ($.datepicker._inDialog && $.blockUI ? - "static" : (isFixed ? "fixed" : "absolute")), display: "none", - left: offset.left + "px", top: offset.top + "px"}); - - if (!inst.inline) { - showAnim = $.datepicker._get(inst, "showAnim"); - duration = $.datepicker._get(inst, "duration"); - inst.dpDiv.zIndex($(input).zIndex()+1); - $.datepicker._datepickerShowing = true; - - if ( $.effects && $.effects.effect[ showAnim ] ) { - inst.dpDiv.show(showAnim, $.datepicker._get(inst, "showOptions"), duration); - } else { - inst.dpDiv[showAnim || "show"](showAnim ? duration : null); - } - - if ( $.datepicker._shouldFocusInput( inst ) ) { - inst.input.focus(); - } - - $.datepicker._curInst = inst; - } - }, - - /* Generate the date picker content. */ - _updateDatepicker: function(inst) { - this.maxRows = 4; //Reset the max number of rows being displayed (see #7043) - instActive = inst; // for delegate hover events - inst.dpDiv.empty().append(this._generateHTML(inst)); - this._attachHandlers(inst); - inst.dpDiv.find("." + this._dayOverClass + " a").mouseover(); - - var origyearshtml, - numMonths = this._getNumberOfMonths(inst), - cols = numMonths[1], - width = 17; - - inst.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""); - if (cols > 1) { - inst.dpDiv.addClass("ui-datepicker-multi-" + cols).css("width", (width * cols) + "em"); - } - inst.dpDiv[(numMonths[0] !== 1 || numMonths[1] !== 1 ? "add" : "remove") + - "Class"]("ui-datepicker-multi"); - inst.dpDiv[(this._get(inst, "isRTL") ? "add" : "remove") + - "Class"]("ui-datepicker-rtl"); - - if (inst === $.datepicker._curInst && $.datepicker._datepickerShowing && $.datepicker._shouldFocusInput( inst ) ) { - inst.input.focus(); - } - - // deffered render of the years select (to avoid flashes on Firefox) - if( inst.yearshtml ){ - origyearshtml = inst.yearshtml; - setTimeout(function(){ - //assure that inst.yearshtml didn't change. - if( origyearshtml === inst.yearshtml && inst.yearshtml ){ - inst.dpDiv.find("select.ui-datepicker-year:first").replaceWith(inst.yearshtml); - } - origyearshtml = inst.yearshtml = null; - }, 0); - } - }, - - // #6694 - don't focus the input if it's already focused - // this breaks the change event in IE - // Support: IE and jQuery <1.9 - _shouldFocusInput: function( inst ) { - return inst.input && inst.input.is( ":visible" ) && !inst.input.is( ":disabled" ) && !inst.input.is( ":focus" ); - }, - - /* Check positioning to remain on screen. */ - _checkOffset: function(inst, offset, isFixed) { - var dpWidth = inst.dpDiv.outerWidth(), - dpHeight = inst.dpDiv.outerHeight(), - inputWidth = inst.input ? inst.input.outerWidth() : 0, - inputHeight = inst.input ? inst.input.outerHeight() : 0, - viewWidth = document.documentElement.clientWidth + (isFixed ? 0 : $(document).scrollLeft()), - viewHeight = document.documentElement.clientHeight + (isFixed ? 0 : $(document).scrollTop()); - - offset.left -= (this._get(inst, "isRTL") ? (dpWidth - inputWidth) : 0); - offset.left -= (isFixed && offset.left === inst.input.offset().left) ? $(document).scrollLeft() : 0; - offset.top -= (isFixed && offset.top === (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0; - - // now check if datepicker is showing outside window viewport - move to a better place if so. - offset.left -= Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ? - Math.abs(offset.left + dpWidth - viewWidth) : 0); - offset.top -= Math.min(offset.top, (offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ? - Math.abs(dpHeight + inputHeight) : 0); - - return offset; - }, - - /* Find an object's position on the screen. */ - _findPos: function(obj) { - var position, - inst = this._getInst(obj), - isRTL = this._get(inst, "isRTL"); - - while (obj && (obj.type === "hidden" || obj.nodeType !== 1 || $.expr.filters.hidden(obj))) { - obj = obj[isRTL ? "previousSibling" : "nextSibling"]; - } - - position = $(obj).offset(); - return [position.left, position.top]; - }, - - /* Hide the date picker from view. - * @param input element - the input field attached to the date picker - */ - _hideDatepicker: function(input) { - var showAnim, duration, postProcess, onClose, - inst = this._curInst; - - if (!inst || (input && inst !== $.data(input, PROP_NAME))) { - return; - } - - if (this._datepickerShowing) { - showAnim = this._get(inst, "showAnim"); - duration = this._get(inst, "duration"); - postProcess = function() { - $.datepicker._tidyDialog(inst); - }; - - // DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed - if ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) ) { - inst.dpDiv.hide(showAnim, $.datepicker._get(inst, "showOptions"), duration, postProcess); - } else { - inst.dpDiv[(showAnim === "slideDown" ? "slideUp" : - (showAnim === "fadeIn" ? "fadeOut" : "hide"))]((showAnim ? duration : null), postProcess); - } - - if (!showAnim) { - postProcess(); - } - this._datepickerShowing = false; - - onClose = this._get(inst, "onClose"); - if (onClose) { - onClose.apply((inst.input ? inst.input[0] : null), [(inst.input ? inst.input.val() : ""), inst]); - } - - this._lastInput = null; - if (this._inDialog) { - this._dialogInput.css({ position: "absolute", left: "0", top: "-100px" }); - if ($.blockUI) { - $.unblockUI(); - $("body").append(this.dpDiv); - } - } - this._inDialog = false; - } - }, - - /* Tidy up after a dialog display. */ - _tidyDialog: function(inst) { - inst.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar"); - }, - - /* Close date picker if clicked elsewhere. */ - _checkExternalClick: function(event) { - if (!$.datepicker._curInst) { - return; - } - - var $target = $(event.target), - inst = $.datepicker._getInst($target[0]); - - if ( ( ( $target[0].id !== $.datepicker._mainDivId && - $target.parents("#" + $.datepicker._mainDivId).length === 0 && - !$target.hasClass($.datepicker.markerClassName) && - !$target.closest("." + $.datepicker._triggerClass).length && - $.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI) ) ) || - ( $target.hasClass($.datepicker.markerClassName) && $.datepicker._curInst !== inst ) ) { - $.datepicker._hideDatepicker(); - } - }, - - /* Adjust one of the date sub-fields. */ - _adjustDate: function(id, offset, period) { - var target = $(id), - inst = this._getInst(target[0]); - - if (this._isDisabledDatepicker(target[0])) { - return; - } - this._adjustInstDate(inst, offset + - (period === "M" ? this._get(inst, "showCurrentAtPos") : 0), // undo positioning - period); - this._updateDatepicker(inst); - }, - - /* Action for current link. */ - _gotoToday: function(id) { - var date, - target = $(id), - inst = this._getInst(target[0]); - - if (this._get(inst, "gotoCurrent") && inst.currentDay) { - inst.selectedDay = inst.currentDay; - inst.drawMonth = inst.selectedMonth = inst.currentMonth; - inst.drawYear = inst.selectedYear = inst.currentYear; - } else { - date = new Date(); - inst.selectedDay = date.getDate(); - inst.drawMonth = inst.selectedMonth = date.getMonth(); - inst.drawYear = inst.selectedYear = date.getFullYear(); - } - this._notifyChange(inst); - this._adjustDate(target); - }, - - /* Action for selecting a new month/year. */ - _selectMonthYear: function(id, select, period) { - var target = $(id), - inst = this._getInst(target[0]); - - inst["selected" + (period === "M" ? "Month" : "Year")] = - inst["draw" + (period === "M" ? "Month" : "Year")] = - parseInt(select.options[select.selectedIndex].value,10); - - this._notifyChange(inst); - this._adjustDate(target); - }, - - /* Action for selecting a day. */ - _selectDay: function(id, month, year, td) { - var inst, - target = $(id); - - if ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) { - return; - } - - inst = this._getInst(target[0]); - inst.selectedDay = inst.currentDay = $("a", td).html(); - inst.selectedMonth = inst.currentMonth = month; - inst.selectedYear = inst.currentYear = year; - this._selectDate(id, this._formatDate(inst, - inst.currentDay, inst.currentMonth, inst.currentYear)); - }, - - /* Erase the input field and hide the date picker. */ - _clearDate: function(id) { - var target = $(id); - this._selectDate(target, ""); - }, - - /* Update the input field with the selected date. */ - _selectDate: function(id, dateStr) { - var onSelect, - target = $(id), - inst = this._getInst(target[0]); - - dateStr = (dateStr != null ? dateStr : this._formatDate(inst)); - if (inst.input) { - inst.input.val(dateStr); - } - this._updateAlternate(inst); - - onSelect = this._get(inst, "onSelect"); - if (onSelect) { - onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]); // trigger custom callback - } else if (inst.input) { - inst.input.trigger("change"); // fire the change event - } - - if (inst.inline){ - this._updateDatepicker(inst); - } else { - this._hideDatepicker(); - this._lastInput = inst.input[0]; - if (typeof(inst.input[0]) !== "object") { - inst.input.focus(); // restore focus - } - this._lastInput = null; - } - }, - - /* Update any alternate field to synchronise with the main field. */ - _updateAlternate: function(inst) { - var altFormat, date, dateStr, - altField = this._get(inst, "altField"); - - if (altField) { // update alternate field too - altFormat = this._get(inst, "altFormat") || this._get(inst, "dateFormat"); - date = this._getDate(inst); - dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst)); - $(altField).each(function() { $(this).val(dateStr); }); - } - }, - - /* Set as beforeShowDay function to prevent selection of weekends. - * @param date Date - the date to customise - * @return [boolean, string] - is this date selectable?, what is its CSS class? - */ - noWeekends: function(date) { - var day = date.getDay(); - return [(day > 0 && day < 6), ""]; - }, - - /* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition. - * @param date Date - the date to get the week for - * @return number - the number of the week within the year that contains this date - */ - iso8601Week: function(date) { - var time, - checkDate = new Date(date.getTime()); - - // Find Thursday of this week starting on Monday - checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7)); - - time = checkDate.getTime(); - checkDate.setMonth(0); // Compare with Jan 1 - checkDate.setDate(1); - return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1; - }, - - /* Parse a string value into a date object. - * See formatDate below for the possible formats. - * - * @param format string - the expected format of the date - * @param value string - the date in the above format - * @param settings Object - attributes include: - * shortYearCutoff number - the cutoff year for determining the century (optional) - * dayNamesShort string[7] - abbreviated names of the days from Sunday (optional) - * dayNames string[7] - names of the days from Sunday (optional) - * monthNamesShort string[12] - abbreviated names of the months (optional) - * monthNames string[12] - names of the months (optional) - * @return Date - the extracted date value or null if value is blank - */ - parseDate: function (format, value, settings) { - if (format == null || value == null) { - throw "Invalid arguments"; - } - - value = (typeof value === "object" ? value.toString() : value + ""); - if (value === "") { - return null; - } - - var iFormat, dim, extra, - iValue = 0, - shortYearCutoffTemp = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff, - shortYearCutoff = (typeof shortYearCutoffTemp !== "string" ? shortYearCutoffTemp : - new Date().getFullYear() % 100 + parseInt(shortYearCutoffTemp, 10)), - dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort, - dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames, - monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort, - monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames, - year = -1, - month = -1, - day = -1, - doy = -1, - literal = false, - date, - // Check whether a format character is doubled - lookAhead = function(match) { - var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match); - if (matches) { - iFormat++; - } - return matches; - }, - // Extract a number from the string value - getNumber = function(match) { - var isDoubled = lookAhead(match), - size = (match === "@" ? 14 : (match === "!" ? 20 : - (match === "y" && isDoubled ? 4 : (match === "o" ? 3 : 2)))), - digits = new RegExp("^\\d{1," + size + "}"), - num = value.substring(iValue).match(digits); - if (!num) { - throw "Missing number at position " + iValue; - } - iValue += num[0].length; - return parseInt(num[0], 10); - }, - // Extract a name from the string value and convert to an index - getName = function(match, shortNames, longNames) { - var index = -1, - names = $.map(lookAhead(match) ? longNames : shortNames, function (v, k) { - return [ [k, v] ]; - }).sort(function (a, b) { - return -(a[1].length - b[1].length); - }); - - $.each(names, function (i, pair) { - var name = pair[1]; - if (value.substr(iValue, name.length).toLowerCase() === name.toLowerCase()) { - index = pair[0]; - iValue += name.length; - return false; - } - }); - if (index !== -1) { - return index + 1; - } else { - throw "Unknown name at position " + iValue; - } - }, - // Confirm that a literal character matches the string value - checkLiteral = function() { - if (value.charAt(iValue) !== format.charAt(iFormat)) { - throw "Unexpected literal at position " + iValue; - } - iValue++; - }; - - for (iFormat = 0; iFormat < format.length; iFormat++) { - if (literal) { - if (format.charAt(iFormat) === "'" && !lookAhead("'")) { - literal = false; - } else { - checkLiteral(); - } - } else { - switch (format.charAt(iFormat)) { - case "d": - day = getNumber("d"); - break; - case "D": - getName("D", dayNamesShort, dayNames); - break; - case "o": - doy = getNumber("o"); - break; - case "m": - month = getNumber("m"); - break; - case "M": - month = getName("M", monthNamesShort, monthNames); - break; - case "y": - year = getNumber("y"); - break; - case "@": - date = new Date(getNumber("@")); - year = date.getFullYear(); - month = date.getMonth() + 1; - day = date.getDate(); - break; - case "!": - date = new Date((getNumber("!") - this._ticksTo1970) / 10000); - year = date.getFullYear(); - month = date.getMonth() + 1; - day = date.getDate(); - break; - case "'": - if (lookAhead("'")){ - checkLiteral(); - } else { - literal = true; - } - break; - default: - checkLiteral(); - } - } - } - - if (iValue < value.length){ - extra = value.substr(iValue); - if (!/^\s+/.test(extra)) { - throw "Extra/unparsed characters found in date: " + extra; - } - } - - if (year === -1) { - year = new Date().getFullYear(); - } else if (year < 100) { - year += new Date().getFullYear() - new Date().getFullYear() % 100 + - (year <= shortYearCutoff ? 0 : -100); - } - - if (doy > -1) { - month = 1; - day = doy; - do { - dim = this._getDaysInMonth(year, month - 1); - if (day <= dim) { - break; - } - month++; - day -= dim; - } while (true); - } - - date = this._daylightSavingAdjust(new Date(year, month - 1, day)); - if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) { - throw "Invalid date"; // E.g. 31/02/00 - } - return date; - }, - - /* Standard date formats. */ - ATOM: "yy-mm-dd", // RFC 3339 (ISO 8601) - COOKIE: "D, dd M yy", - ISO_8601: "yy-mm-dd", - RFC_822: "D, d M y", - RFC_850: "DD, dd-M-y", - RFC_1036: "D, d M y", - RFC_1123: "D, d M yy", - RFC_2822: "D, d M yy", - RSS: "D, d M y", // RFC 822 - TICKS: "!", - TIMESTAMP: "@", - W3C: "yy-mm-dd", // ISO 8601 - - _ticksTo1970: (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) + - Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000), - - /* Format a date object into a string value. - * The format can be combinations of the following: - * d - day of month (no leading zero) - * dd - day of month (two digit) - * o - day of year (no leading zeros) - * oo - day of year (three digit) - * D - day name short - * DD - day name long - * m - month of year (no leading zero) - * mm - month of year (two digit) - * M - month name short - * MM - month name long - * y - year (two digit) - * yy - year (four digit) - * @ - Unix timestamp (ms since 01/01/1970) - * ! - Windows ticks (100ns since 01/01/0001) - * "..." - literal text - * '' - single quote - * - * @param format string - the desired format of the date - * @param date Date - the date value to format - * @param settings Object - attributes include: - * dayNamesShort string[7] - abbreviated names of the days from Sunday (optional) - * dayNames string[7] - names of the days from Sunday (optional) - * monthNamesShort string[12] - abbreviated names of the months (optional) - * monthNames string[12] - names of the months (optional) - * @return string - the date in the above format - */ - formatDate: function (format, date, settings) { - if (!date) { - return ""; - } - - var iFormat, - dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort, - dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames, - monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort, - monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames, - // Check whether a format character is doubled - lookAhead = function(match) { - var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match); - if (matches) { - iFormat++; - } - return matches; - }, - // Format a number, with leading zero if necessary - formatNumber = function(match, value, len) { - var num = "" + value; - if (lookAhead(match)) { - while (num.length < len) { - num = "0" + num; - } - } - return num; - }, - // Format a name, short or long as requested - formatName = function(match, value, shortNames, longNames) { - return (lookAhead(match) ? longNames[value] : shortNames[value]); - }, - output = "", - literal = false; - - if (date) { - for (iFormat = 0; iFormat < format.length; iFormat++) { - if (literal) { - if (format.charAt(iFormat) === "'" && !lookAhead("'")) { - literal = false; - } else { - output += format.charAt(iFormat); - } - } else { - switch (format.charAt(iFormat)) { - case "d": - output += formatNumber("d", date.getDate(), 2); - break; - case "D": - output += formatName("D", date.getDay(), dayNamesShort, dayNames); - break; - case "o": - output += formatNumber("o", - Math.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3); - break; - case "m": - output += formatNumber("m", date.getMonth() + 1, 2); - break; - case "M": - output += formatName("M", date.getMonth(), monthNamesShort, monthNames); - break; - case "y": - output += (lookAhead("y") ? date.getFullYear() : - (date.getYear() % 100 < 10 ? "0" : "") + date.getYear() % 100); - break; - case "@": - output += date.getTime(); - break; - case "!": - output += date.getTime() * 10000 + this._ticksTo1970; - break; - case "'": - if (lookAhead("'")) { - output += "'"; - } else { - literal = true; - } - break; - default: - output += format.charAt(iFormat); - } - } - } - } - return output; - }, - - /* Extract all possible characters from the date format. */ - _possibleChars: function (format) { - var iFormat, - chars = "", - literal = false, - // Check whether a format character is doubled - lookAhead = function(match) { - var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match); - if (matches) { - iFormat++; - } - return matches; - }; - - for (iFormat = 0; iFormat < format.length; iFormat++) { - if (literal) { - if (format.charAt(iFormat) === "'" && !lookAhead("'")) { - literal = false; - } else { - chars += format.charAt(iFormat); - } - } else { - switch (format.charAt(iFormat)) { - case "d": case "m": case "y": case "@": - chars += "0123456789"; - break; - case "D": case "M": - return null; // Accept anything - case "'": - if (lookAhead("'")) { - chars += "'"; - } else { - literal = true; - } - break; - default: - chars += format.charAt(iFormat); - } - } - } - return chars; - }, - - /* Get a setting value, defaulting if necessary. */ - _get: function(inst, name) { - return inst.settings[name] !== undefined ? - inst.settings[name] : this._defaults[name]; - }, - - /* Parse existing date and initialise date picker. */ - _setDateFromField: function(inst, noDefault) { - if (inst.input.val() === inst.lastVal) { - return; - } - - var dateFormat = this._get(inst, "dateFormat"), - dates = inst.lastVal = inst.input ? inst.input.val() : null, - defaultDate = this._getDefaultDate(inst), - date = defaultDate, - settings = this._getFormatConfig(inst); - - try { - date = this.parseDate(dateFormat, dates, settings) || defaultDate; - } catch (event) { - dates = (noDefault ? "" : dates); - } - inst.selectedDay = date.getDate(); - inst.drawMonth = inst.selectedMonth = date.getMonth(); - inst.drawYear = inst.selectedYear = date.getFullYear(); - inst.currentDay = (dates ? date.getDate() : 0); - inst.currentMonth = (dates ? date.getMonth() : 0); - inst.currentYear = (dates ? date.getFullYear() : 0); - this._adjustInstDate(inst); - }, - - /* Retrieve the default date shown on opening. */ - _getDefaultDate: function(inst) { - return this._restrictMinMax(inst, - this._determineDate(inst, this._get(inst, "defaultDate"), new Date())); - }, - - /* A date may be specified as an exact value or a relative one. */ - _determineDate: function(inst, date, defaultDate) { - var offsetNumeric = function(offset) { - var date = new Date(); - date.setDate(date.getDate() + offset); - return date; - }, - offsetString = function(offset) { - try { - return $.datepicker.parseDate($.datepicker._get(inst, "dateFormat"), - offset, $.datepicker._getFormatConfig(inst)); - } - catch (e) { - // Ignore - } - - var date = (offset.toLowerCase().match(/^c/) ? - $.datepicker._getDate(inst) : null) || new Date(), - year = date.getFullYear(), - month = date.getMonth(), - day = date.getDate(), - pattern = /([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g, - matches = pattern.exec(offset); - - while (matches) { - switch (matches[2] || "d") { - case "d" : case "D" : - day += parseInt(matches[1],10); break; - case "w" : case "W" : - day += parseInt(matches[1],10) * 7; break; - case "m" : case "M" : - month += parseInt(matches[1],10); - day = Math.min(day, $.datepicker._getDaysInMonth(year, month)); - break; - case "y": case "Y" : - year += parseInt(matches[1],10); - day = Math.min(day, $.datepicker._getDaysInMonth(year, month)); - break; - } - matches = pattern.exec(offset); - } - return new Date(year, month, day); - }, - newDate = (date == null || date === "" ? defaultDate : (typeof date === "string" ? offsetString(date) : - (typeof date === "number" ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : new Date(date.getTime())))); - - newDate = (newDate && newDate.toString() === "Invalid Date" ? defaultDate : newDate); - if (newDate) { - newDate.setHours(0); - newDate.setMinutes(0); - newDate.setSeconds(0); - newDate.setMilliseconds(0); - } - return this._daylightSavingAdjust(newDate); - }, - - /* Handle switch to/from daylight saving. - * Hours may be non-zero on daylight saving cut-over: - * > 12 when midnight changeover, but then cannot generate - * midnight datetime, so jump to 1AM, otherwise reset. - * @param date (Date) the date to check - * @return (Date) the corrected date - */ - _daylightSavingAdjust: function(date) { - if (!date) { - return null; - } - date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0); - return date; - }, - - /* Set the date(s) directly. */ - _setDate: function(inst, date, noChange) { - var clear = !date, - origMonth = inst.selectedMonth, - origYear = inst.selectedYear, - newDate = this._restrictMinMax(inst, this._determineDate(inst, date, new Date())); - - inst.selectedDay = inst.currentDay = newDate.getDate(); - inst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth(); - inst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear(); - if ((origMonth !== inst.selectedMonth || origYear !== inst.selectedYear) && !noChange) { - this._notifyChange(inst); - } - this._adjustInstDate(inst); - if (inst.input) { - inst.input.val(clear ? "" : this._formatDate(inst)); - } - }, - - /* Retrieve the date(s) directly. */ - _getDate: function(inst) { - var startDate = (!inst.currentYear || (inst.input && inst.input.val() === "") ? null : - this._daylightSavingAdjust(new Date( - inst.currentYear, inst.currentMonth, inst.currentDay))); - return startDate; - }, - - /* Attach the onxxx handlers. These are declared statically so - * they work with static code transformers like Caja. - */ - _attachHandlers: function(inst) { - var stepMonths = this._get(inst, "stepMonths"), - id = "#" + inst.id.replace( /\\\\/g, "\\" ); - inst.dpDiv.find("[data-handler]").map(function () { - var handler = { - prev: function () { - $.datepicker._adjustDate(id, -stepMonths, "M"); - }, - next: function () { - $.datepicker._adjustDate(id, +stepMonths, "M"); - }, - hide: function () { - $.datepicker._hideDatepicker(); - }, - today: function () { - $.datepicker._gotoToday(id); - }, - selectDay: function () { - $.datepicker._selectDay(id, +this.getAttribute("data-month"), +this.getAttribute("data-year"), this); - return false; - }, - selectMonth: function () { - $.datepicker._selectMonthYear(id, this, "M"); - return false; - }, - selectYear: function () { - $.datepicker._selectMonthYear(id, this, "Y"); - return false; - } - }; - $(this).bind(this.getAttribute("data-event"), handler[this.getAttribute("data-handler")]); - }); - }, - - /* Generate the HTML for the current state of the date picker. */ - _generateHTML: function(inst) { - var maxDraw, prevText, prev, nextText, next, currentText, gotoDate, - controls, buttonPanel, firstDay, showWeek, dayNames, dayNamesMin, - monthNames, monthNamesShort, beforeShowDay, showOtherMonths, - selectOtherMonths, defaultDate, html, dow, row, group, col, selectedDate, - cornerClass, calender, thead, day, daysInMonth, leadDays, curRows, numRows, - printDate, dRow, tbody, daySettings, otherMonth, unselectable, - tempDate = new Date(), - today = this._daylightSavingAdjust( - new Date(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate())), // clear time - isRTL = this._get(inst, "isRTL"), - showButtonPanel = this._get(inst, "showButtonPanel"), - hideIfNoPrevNext = this._get(inst, "hideIfNoPrevNext"), - navigationAsDateFormat = this._get(inst, "navigationAsDateFormat"), - numMonths = this._getNumberOfMonths(inst), - showCurrentAtPos = this._get(inst, "showCurrentAtPos"), - stepMonths = this._get(inst, "stepMonths"), - isMultiMonth = (numMonths[0] !== 1 || numMonths[1] !== 1), - currentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999, 9, 9) : - new Date(inst.currentYear, inst.currentMonth, inst.currentDay))), - minDate = this._getMinMaxDate(inst, "min"), - maxDate = this._getMinMaxDate(inst, "max"), - drawMonth = inst.drawMonth - showCurrentAtPos, - drawYear = inst.drawYear; - - if (drawMonth < 0) { - drawMonth += 12; - drawYear--; - } - if (maxDate) { - maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(), - maxDate.getMonth() - (numMonths[0] * numMonths[1]) + 1, maxDate.getDate())); - maxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw); - while (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw) { - drawMonth--; - if (drawMonth < 0) { - drawMonth = 11; - drawYear--; - } - } - } - inst.drawMonth = drawMonth; - inst.drawYear = drawYear; - - prevText = this._get(inst, "prevText"); - prevText = (!navigationAsDateFormat ? prevText : this.formatDate(prevText, - this._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)), - this._getFormatConfig(inst))); - - prev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ? - "<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click'" + - " title='" + prevText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w") + "'>" + prevText + "</span></a>" : - (hideIfNoPrevNext ? "" : "<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+ prevText +"'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w") + "'>" + prevText + "</span></a>")); - - nextText = this._get(inst, "nextText"); - nextText = (!navigationAsDateFormat ? nextText : this.formatDate(nextText, - this._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)), - this._getFormatConfig(inst))); - - next = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ? - "<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click'" + - " title='" + nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e") + "'>" + nextText + "</span></a>" : - (hideIfNoPrevNext ? "" : "<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+ nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e") + "'>" + nextText + "</span></a>")); - - currentText = this._get(inst, "currentText"); - gotoDate = (this._get(inst, "gotoCurrent") && inst.currentDay ? currentDate : today); - currentText = (!navigationAsDateFormat ? currentText : - this.formatDate(currentText, gotoDate, this._getFormatConfig(inst))); - - controls = (!inst.inline ? "<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>" + - this._get(inst, "closeText") + "</button>" : ""); - - buttonPanel = (showButtonPanel) ? "<div class='ui-datepicker-buttonpane ui-widget-content'>" + (isRTL ? controls : "") + - (this._isInRange(inst, gotoDate) ? "<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'" + - ">" + currentText + "</button>" : "") + (isRTL ? "" : controls) + "</div>" : ""; - - firstDay = parseInt(this._get(inst, "firstDay"),10); - firstDay = (isNaN(firstDay) ? 0 : firstDay); - - showWeek = this._get(inst, "showWeek"); - dayNames = this._get(inst, "dayNames"); - dayNamesMin = this._get(inst, "dayNamesMin"); - monthNames = this._get(inst, "monthNames"); - monthNamesShort = this._get(inst, "monthNamesShort"); - beforeShowDay = this._get(inst, "beforeShowDay"); - showOtherMonths = this._get(inst, "showOtherMonths"); - selectOtherMonths = this._get(inst, "selectOtherMonths"); - defaultDate = this._getDefaultDate(inst); - html = ""; - dow; - for (row = 0; row < numMonths[0]; row++) { - group = ""; - this.maxRows = 4; - for (col = 0; col < numMonths[1]; col++) { - selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay)); - cornerClass = " ui-corner-all"; - calender = ""; - if (isMultiMonth) { - calender += "<div class='ui-datepicker-group"; - if (numMonths[1] > 1) { - switch (col) { - case 0: calender += " ui-datepicker-group-first"; - cornerClass = " ui-corner-" + (isRTL ? "right" : "left"); break; - case numMonths[1]-1: calender += " ui-datepicker-group-last"; - cornerClass = " ui-corner-" + (isRTL ? "left" : "right"); break; - default: calender += " ui-datepicker-group-middle"; cornerClass = ""; break; - } - } - calender += "'>"; - } - calender += "<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix" + cornerClass + "'>" + - (/all|left/.test(cornerClass) && row === 0 ? (isRTL ? next : prev) : "") + - (/all|right/.test(cornerClass) && row === 0 ? (isRTL ? prev : next) : "") + - this._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate, - row > 0 || col > 0, monthNames, monthNamesShort) + // draw month headers - "</div><table class='ui-datepicker-calendar'><thead>" + - "<tr>"; - thead = (showWeek ? "<th class='ui-datepicker-week-col'>" + this._get(inst, "weekHeader") + "</th>" : ""); - for (dow = 0; dow < 7; dow++) { // days of the week - day = (dow + firstDay) % 7; - thead += "<th" + ((dow + firstDay + 6) % 7 >= 5 ? " class='ui-datepicker-week-end'" : "") + ">" + - "<span title='" + dayNames[day] + "'>" + dayNamesMin[day] + "</span></th>"; - } - calender += thead + "</tr></thead><tbody>"; - daysInMonth = this._getDaysInMonth(drawYear, drawMonth); - if (drawYear === inst.selectedYear && drawMonth === inst.selectedMonth) { - inst.selectedDay = Math.min(inst.selectedDay, daysInMonth); - } - leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7; - curRows = Math.ceil((leadDays + daysInMonth) / 7); // calculate the number of rows to generate - numRows = (isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows); //If multiple months, use the higher number of rows (see #7043) - this.maxRows = numRows; - printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays)); - for (dRow = 0; dRow < numRows; dRow++) { // create date picker rows - calender += "<tr>"; - tbody = (!showWeek ? "" : "<td class='ui-datepicker-week-col'>" + - this._get(inst, "calculateWeek")(printDate) + "</td>"); - for (dow = 0; dow < 7; dow++) { // create date picker days - daySettings = (beforeShowDay ? - beforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, ""]); - otherMonth = (printDate.getMonth() !== drawMonth); - unselectable = (otherMonth && !selectOtherMonths) || !daySettings[0] || - (minDate && printDate < minDate) || (maxDate && printDate > maxDate); - tbody += "<td class='" + - ((dow + firstDay + 6) % 7 >= 5 ? " ui-datepicker-week-end" : "") + // highlight weekends - (otherMonth ? " ui-datepicker-other-month" : "") + // highlight days from other months - ((printDate.getTime() === selectedDate.getTime() && drawMonth === inst.selectedMonth && inst._keyEvent) || // user pressed key - (defaultDate.getTime() === printDate.getTime() && defaultDate.getTime() === selectedDate.getTime()) ? - // or defaultDate is current printedDate and defaultDate is selectedDate - " " + this._dayOverClass : "") + // highlight selected day - (unselectable ? " " + this._unselectableClass + " ui-state-disabled": "") + // highlight unselectable days - (otherMonth && !showOtherMonths ? "" : " " + daySettings[1] + // highlight custom dates - (printDate.getTime() === currentDate.getTime() ? " " + this._currentClass : "") + // highlight selected day - (printDate.getTime() === today.getTime() ? " ui-datepicker-today" : "")) + "'" + // highlight today (if different) - ((!otherMonth || showOtherMonths) && daySettings[2] ? " title='" + daySettings[2].replace(/'/g, "&#39;") + "'" : "") + // cell title - (unselectable ? "" : " data-handler='selectDay' data-event='click' data-month='" + printDate.getMonth() + "' data-year='" + printDate.getFullYear() + "'") + ">" + // actions - (otherMonth && !showOtherMonths ? "&#xa0;" : // display for other months - (unselectable ? "<span class='ui-state-default'>" + printDate.getDate() + "</span>" : "<a class='ui-state-default" + - (printDate.getTime() === today.getTime() ? " ui-state-highlight" : "") + - (printDate.getTime() === currentDate.getTime() ? " ui-state-active" : "") + // highlight selected day - (otherMonth ? " ui-priority-secondary" : "") + // distinguish dates from other months - "' href='#'>" + printDate.getDate() + "</a>")) + "</td>"; // display selectable date - printDate.setDate(printDate.getDate() + 1); - printDate = this._daylightSavingAdjust(printDate); - } - calender += tbody + "</tr>"; - } - drawMonth++; - if (drawMonth > 11) { - drawMonth = 0; - drawYear++; - } - calender += "</tbody></table>" + (isMultiMonth ? "</div>" + - ((numMonths[0] > 0 && col === numMonths[1]-1) ? "<div class='ui-datepicker-row-break'></div>" : "") : ""); - group += calender; - } - html += group; - } - html += buttonPanel; - inst._keyEvent = false; - return html; - }, - - /* Generate the month and year header. */ - _generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate, - secondary, monthNames, monthNamesShort) { - - var inMinYear, inMaxYear, month, years, thisYear, determineYear, year, endYear, - changeMonth = this._get(inst, "changeMonth"), - changeYear = this._get(inst, "changeYear"), - showMonthAfterYear = this._get(inst, "showMonthAfterYear"), - html = "<div class='ui-datepicker-title'>", - monthHtml = ""; - - // month selection - if (secondary || !changeMonth) { - monthHtml += "<span class='ui-datepicker-month'>" + monthNames[drawMonth] + "</span>"; - } else { - inMinYear = (minDate && minDate.getFullYear() === drawYear); - inMaxYear = (maxDate && maxDate.getFullYear() === drawYear); - monthHtml += "<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>"; - for ( month = 0; month < 12; month++) { - if ((!inMinYear || month >= minDate.getMonth()) && (!inMaxYear || month <= maxDate.getMonth())) { - monthHtml += "<option value='" + month + "'" + - (month === drawMonth ? " selected='selected'" : "") + - ">" + monthNamesShort[month] + "</option>"; - } - } - monthHtml += "</select>"; - } - - if (!showMonthAfterYear) { - html += monthHtml + (secondary || !(changeMonth && changeYear) ? "&#xa0;" : ""); - } - - // year selection - if ( !inst.yearshtml ) { - inst.yearshtml = ""; - if (secondary || !changeYear) { - html += "<span class='ui-datepicker-year'>" + drawYear + "</span>"; - } else { - // determine range of years to display - years = this._get(inst, "yearRange").split(":"); - thisYear = new Date().getFullYear(); - determineYear = function(value) { - var year = (value.match(/c[+\-].*/) ? drawYear + parseInt(value.substring(1), 10) : - (value.match(/[+\-].*/) ? thisYear + parseInt(value, 10) : - parseInt(value, 10))); - return (isNaN(year) ? thisYear : year); - }; - year = determineYear(years[0]); - endYear = Math.max(year, determineYear(years[1] || "")); - year = (minDate ? Math.max(year, minDate.getFullYear()) : year); - endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear); - inst.yearshtml += "<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>"; - for (; year <= endYear; year++) { - inst.yearshtml += "<option value='" + year + "'" + - (year === drawYear ? " selected='selected'" : "") + - ">" + year + "</option>"; - } - inst.yearshtml += "</select>"; - - html += inst.yearshtml; - inst.yearshtml = null; - } - } - - html += this._get(inst, "yearSuffix"); - if (showMonthAfterYear) { - html += (secondary || !(changeMonth && changeYear) ? "&#xa0;" : "") + monthHtml; - } - html += "</div>"; // Close datepicker_header - return html; - }, - - /* Adjust one of the date sub-fields. */ - _adjustInstDate: function(inst, offset, period) { - var year = inst.drawYear + (period === "Y" ? offset : 0), - month = inst.drawMonth + (period === "M" ? offset : 0), - day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) + (period === "D" ? offset : 0), - date = this._restrictMinMax(inst, this._daylightSavingAdjust(new Date(year, month, day))); - - inst.selectedDay = date.getDate(); - inst.drawMonth = inst.selectedMonth = date.getMonth(); - inst.drawYear = inst.selectedYear = date.getFullYear(); - if (period === "M" || period === "Y") { - this._notifyChange(inst); - } - }, - - /* Ensure a date is within any min/max bounds. */ - _restrictMinMax: function(inst, date) { - var minDate = this._getMinMaxDate(inst, "min"), - maxDate = this._getMinMaxDate(inst, "max"), - newDate = (minDate && date < minDate ? minDate : date); - return (maxDate && newDate > maxDate ? maxDate : newDate); - }, - - /* Notify change of month/year. */ - _notifyChange: function(inst) { - var onChange = this._get(inst, "onChangeMonthYear"); - if (onChange) { - onChange.apply((inst.input ? inst.input[0] : null), - [inst.selectedYear, inst.selectedMonth + 1, inst]); - } - }, - - /* Determine the number of months to show. */ - _getNumberOfMonths: function(inst) { - var numMonths = this._get(inst, "numberOfMonths"); - return (numMonths == null ? [1, 1] : (typeof numMonths === "number" ? [1, numMonths] : numMonths)); - }, - - /* Determine the current maximum date - ensure no time components are set. */ - _getMinMaxDate: function(inst, minMax) { - return this._determineDate(inst, this._get(inst, minMax + "Date"), null); - }, - - /* Find the number of days in a given month. */ - _getDaysInMonth: function(year, month) { - return 32 - this._daylightSavingAdjust(new Date(year, month, 32)).getDate(); - }, - - /* Find the day of the week of the first of a month. */ - _getFirstDayOfMonth: function(year, month) { - return new Date(year, month, 1).getDay(); - }, - - /* Determines if we should allow a "next/prev" month display change. */ - _canAdjustMonth: function(inst, offset, curYear, curMonth) { - var numMonths = this._getNumberOfMonths(inst), - date = this._daylightSavingAdjust(new Date(curYear, - curMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]), 1)); - - if (offset < 0) { - date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth())); - } - return this._isInRange(inst, date); - }, - - /* Is the given date in the accepted range? */ - _isInRange: function(inst, date) { - var yearSplit, currentYear, - minDate = this._getMinMaxDate(inst, "min"), - maxDate = this._getMinMaxDate(inst, "max"), - minYear = null, - maxYear = null, - years = this._get(inst, "yearRange"); - if (years){ - yearSplit = years.split(":"); - currentYear = new Date().getFullYear(); - minYear = parseInt(yearSplit[0], 10); - maxYear = parseInt(yearSplit[1], 10); - if ( yearSplit[0].match(/[+\-].*/) ) { - minYear += currentYear; - } - if ( yearSplit[1].match(/[+\-].*/) ) { - maxYear += currentYear; - } - } - - return ((!minDate || date.getTime() >= minDate.getTime()) && - (!maxDate || date.getTime() <= maxDate.getTime()) && - (!minYear || date.getFullYear() >= minYear) && - (!maxYear || date.getFullYear() <= maxYear)); - }, - - /* Provide the configuration settings for formatting/parsing. */ - _getFormatConfig: function(inst) { - var shortYearCutoff = this._get(inst, "shortYearCutoff"); - shortYearCutoff = (typeof shortYearCutoff !== "string" ? shortYearCutoff : - new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10)); - return {shortYearCutoff: shortYearCutoff, - dayNamesShort: this._get(inst, "dayNamesShort"), dayNames: this._get(inst, "dayNames"), - monthNamesShort: this._get(inst, "monthNamesShort"), monthNames: this._get(inst, "monthNames")}; - }, - - /* Format the given date for display. */ - _formatDate: function(inst, day, month, year) { - if (!day) { - inst.currentDay = inst.selectedDay; - inst.currentMonth = inst.selectedMonth; - inst.currentYear = inst.selectedYear; - } - var date = (day ? (typeof day === "object" ? day : - this._daylightSavingAdjust(new Date(year, month, day))) : - this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay))); - return this.formatDate(this._get(inst, "dateFormat"), date, this._getFormatConfig(inst)); - } -}); - -/* - * Bind hover events for datepicker elements. - * Done via delegate so the binding only occurs once in the lifetime of the parent div. - * Global instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker. - */ -function bindHover(dpDiv) { - var selector = "button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a"; - return dpDiv.delegate(selector, "mouseout", function() { - $(this).removeClass("ui-state-hover"); - if (this.className.indexOf("ui-datepicker-prev") !== -1) { - $(this).removeClass("ui-datepicker-prev-hover"); - } - if (this.className.indexOf("ui-datepicker-next") !== -1) { - $(this).removeClass("ui-datepicker-next-hover"); - } - }) - .delegate(selector, "mouseover", function(){ - if (!$.datepicker._isDisabledDatepicker( instActive.inline ? dpDiv.parent()[0] : instActive.input[0])) { - $(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"); - $(this).addClass("ui-state-hover"); - if (this.className.indexOf("ui-datepicker-prev") !== -1) { - $(this).addClass("ui-datepicker-prev-hover"); - } - if (this.className.indexOf("ui-datepicker-next") !== -1) { - $(this).addClass("ui-datepicker-next-hover"); - } - } - }); -} - -/* jQuery extend now ignores nulls! */ -function extendRemove(target, props) { - $.extend(target, props); - for (var name in props) { - if (props[name] == null) { - target[name] = props[name]; - } - } - return target; -} - -/* Invoke the datepicker functionality. - @param options string - a command, optionally followed by additional parameters or - Object - settings for attaching new datepicker functionality - @return jQuery object */ -$.fn.datepicker = function(options){ - - /* Verify an empty collection wasn't passed - Fixes #6976 */ - if ( !this.length ) { - return this; - } - - /* Initialise the date picker. */ - if (!$.datepicker.initialized) { - $(document).mousedown($.datepicker._checkExternalClick); - $.datepicker.initialized = true; - } - - /* Append datepicker main container to body if not exist. */ - if ($("#"+$.datepicker._mainDivId).length === 0) { - $("body").append($.datepicker.dpDiv); - } - - var otherArgs = Array.prototype.slice.call(arguments, 1); - if (typeof options === "string" && (options === "isDisabled" || options === "getDate" || options === "widget")) { - return $.datepicker["_" + options + "Datepicker"]. - apply($.datepicker, [this[0]].concat(otherArgs)); - } - if (options === "option" && arguments.length === 2 && typeof arguments[1] === "string") { - return $.datepicker["_" + options + "Datepicker"]. - apply($.datepicker, [this[0]].concat(otherArgs)); - } - return this.each(function() { - typeof options === "string" ? - $.datepicker["_" + options + "Datepicker"]. - apply($.datepicker, [this].concat(otherArgs)) : - $.datepicker._attachDatepicker(this, options); - }); -}; - -$.datepicker = new Datepicker(); // singleton instance -$.datepicker.initialized = false; -$.datepicker.uuid = new Date().getTime(); -$.datepicker.version = "1.10.4"; - -})(jQuery); - -(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.4", - 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 activeElement, - that = this; - - if ( !this._isOpen || this._trigger( "beforeClose", event ) === false ) { - return; - } - - this._isOpen = false; - this._destroyOverlay(); - - if ( !this.opener.filter(":focusable").focus().length ) { - - // support: IE9 - // IE9 throws an "Unspecified error" accessing document.activeElement from an <iframe> - try { - activeElement = this.document[ 0 ].activeElement; - - // Support: IE9, IE10 - // If the <body> is blurred, IE will switch windows, see #4520 - if ( activeElement && activeElement.nodeName.toLowerCase() !== "body" ) { - - // 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 - $( activeElement ).blur(); - } - } catch ( error ) {} - } - - 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(); - } - } - }); - - // support: IE - // Use type="button" to prevent enter keypresses in textboxes from closing the - // dialog in IE (#9312) - this.uiDialogTitlebarClose = $( "<button type='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("&#160;"); - } - 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 ) { - 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 ) ); - -(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); - -(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); - -(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); - -(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); - -(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); - -(function( $, undefined ) { - -$.effects.effect.fade = function( o, done ) { - var el = $( this ), - mode = $.effects.setMode( el, o.mode || "toggle" ); - - el.animate({ - opacity: mode - }, { - queue: false, - duration: o.duration, - easing: o.easing, - complete: done - }); -}; - -})( jQuery ); - -(function( $, undefined ) { - -$.effects.effect.fold = 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", - hide = mode === "hide", - size = o.size || 15, - percent = /([0-9]+)%/.exec( size ), - horizFirst = !!o.horizFirst, - widthFirst = show !== horizFirst, - ref = widthFirst ? [ "width", "height" ] : [ "height", "width" ], - duration = o.duration / 2, - wrapper, distance, - animation1 = {}, - animation2 = {}; - - $.effects.save( el, props ); - el.show(); - - // Create Wrapper - wrapper = $.effects.createWrapper( el ).css({ - overflow: "hidden" - }); - distance = widthFirst ? - [ wrapper.width(), wrapper.height() ] : - [ wrapper.height(), wrapper.width() ]; - - if ( percent ) { - size = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ]; - } - if ( show ) { - wrapper.css( horizFirst ? { - height: 0, - width: size - } : { - height: size, - width: 0 - }); - } - - // Animation - animation1[ ref[ 0 ] ] = show ? distance[ 0 ] : size; - animation2[ ref[ 1 ] ] = show ? distance[ 1 ] : 0; - - // Animate - wrapper - .animate( animation1, duration, o.easing ) - .animate( animation2, duration, o.easing, function() { - if ( hide ) { - el.hide(); - } - $.effects.restore( el, props ); - $.effects.removeWrapper( el ); - done(); - }); - -}; - -})(jQuery); - -(function( $, undefined ) { - -$.effects.effect.highlight = function( o, done ) { - var elem = $( this ), - props = [ "backgroundImage", "backgroundColor", "opacity" ], - mode = $.effects.setMode( elem, o.mode || "show" ), - animation = { - backgroundColor: elem.css( "backgroundColor" ) - }; - - if (mode === "hide") { - animation.opacity = 0; - } - - $.effects.save( elem, props ); - - elem - .show() - .css({ - backgroundImage: "none", - backgroundColor: o.color || "#ffff99" - }) - .animate( animation, { - queue: false, - duration: o.duration, - easing: o.easing, - complete: function() { - if ( mode === "hide" ) { - elem.hide(); - } - $.effects.restore( elem, props ); - done(); - } - }); -}; - -})(jQuery); - -(function( $, undefined ) { - -$.effects.effect.pulsate = function( o, done ) { - var elem = $( this ), - mode = $.effects.setMode( elem, o.mode || "show" ), - show = mode === "show", - hide = mode === "hide", - showhide = ( show || mode === "hide" ), - - // showing or hiding leaves of the "last" animation - anims = ( ( o.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ), - duration = o.duration / anims, - animateTo = 0, - queue = elem.queue(), - queuelen = queue.length, - i; - - if ( show || !elem.is(":visible")) { - elem.css( "opacity", 0 ).show(); - animateTo = 1; - } - - // anims - 1 opacity "toggles" - for ( i = 1; i < anims; i++ ) { - elem.animate({ - opacity: animateTo - }, duration, o.easing ); - animateTo = 1 - animateTo; - } - - elem.animate({ - opacity: animateTo - }, duration, o.easing); - - elem.queue(function() { - if ( hide ) { - elem.hide(); - } - done(); - }); - - // We just queued up "anims" animations, we need to put them next in the queue - if ( queuelen > 1 ) { - queue.splice.apply( queue, - [ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) ); - } - elem.dequeue(); -}; - -})(jQuery); - -(function( $, undefined ) { - -$.effects.effect.puff = function( o, done ) { - var elem = $( this ), - mode = $.effects.setMode( elem, o.mode || "hide" ), - hide = mode === "hide", - percent = parseInt( o.percent, 10 ) || 150, - factor = percent / 100, - original = { - height: elem.height(), - width: elem.width(), - outerHeight: elem.outerHeight(), - outerWidth: elem.outerWidth() - }; - - $.extend( o, { - effect: "scale", - queue: false, - fade: true, - mode: mode, - complete: done, - percent: hide ? percent : 100, - from: hide ? - original : - { - height: original.height * factor, - width: original.width * factor, - outerHeight: original.outerHeight * factor, - outerWidth: original.outerWidth * factor - } - }); - - elem.effect( o ); -}; - -$.effects.effect.scale = function( o, done ) { - - // Create element - var el = $( this ), - options = $.extend( true, {}, o ), - mode = $.effects.setMode( el, o.mode || "effect" ), - percent = parseInt( o.percent, 10 ) || - ( parseInt( o.percent, 10 ) === 0 ? 0 : ( mode === "hide" ? 0 : 100 ) ), - direction = o.direction || "both", - origin = o.origin, - original = { - height: el.height(), - width: el.width(), - outerHeight: el.outerHeight(), - outerWidth: el.outerWidth() - }, - factor = { - y: direction !== "horizontal" ? (percent / 100) : 1, - x: direction !== "vertical" ? (percent / 100) : 1 - }; - - // We are going to pass this effect to the size effect: - options.effect = "size"; - options.queue = false; - options.complete = done; - - // Set default origin and restore for show/hide - if ( mode !== "effect" ) { - options.origin = origin || ["middle","center"]; - options.restore = true; - } - - options.from = o.from || ( mode === "show" ? { - height: 0, - width: 0, - outerHeight: 0, - outerWidth: 0 - } : original ); - options.to = { - height: original.height * factor.y, - width: original.width * factor.x, - outerHeight: original.outerHeight * factor.y, - outerWidth: original.outerWidth * factor.x - }; - - // Fade option to support puff - if ( options.fade ) { - if ( mode === "show" ) { - options.from.opacity = 0; - options.to.opacity = 1; - } - if ( mode === "hide" ) { - options.from.opacity = 1; - options.to.opacity = 0; - } - } - - // Animate - el.effect( options ); - -}; - -$.effects.effect.size = function( o, done ) { - - // Create element - var original, baseline, factor, - el = $( this ), - props0 = [ "position", "top", "bottom", "left", "right", "width", "height", "overflow", "opacity" ], - - // Always restore - props1 = [ "position", "top", "bottom", "left", "right", "overflow", "opacity" ], - - // Copy for children - props2 = [ "width", "height", "overflow" ], - cProps = [ "fontSize" ], - vProps = [ "borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom" ], - hProps = [ "borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight" ], - - // Set options - mode = $.effects.setMode( el, o.mode || "effect" ), - restore = o.restore || mode !== "effect", - scale = o.scale || "both", - origin = o.origin || [ "middle", "center" ], - position = el.css( "position" ), - props = restore ? props0 : props1, - zero = { - height: 0, - width: 0, - outerHeight: 0, - outerWidth: 0 - }; - - if ( mode === "show" ) { - el.show(); - } - original = { - height: el.height(), - width: el.width(), - outerHeight: el.outerHeight(), - outerWidth: el.outerWidth() - }; - - if ( o.mode === "toggle" && mode === "show" ) { - el.from = o.to || zero; - el.to = o.from || original; - } else { - el.from = o.from || ( mode === "show" ? zero : original ); - el.to = o.to || ( mode === "hide" ? zero : original ); - } - - // Set scaling factor - factor = { - from: { - y: el.from.height / original.height, - x: el.from.width / original.width - }, - to: { - y: el.to.height / original.height, - x: el.to.width / original.width - } - }; - - // Scale the css box - if ( scale === "box" || scale === "both" ) { - - // Vertical props scaling - if ( factor.from.y !== factor.to.y ) { - props = props.concat( vProps ); - el.from = $.effects.setTransition( el, vProps, factor.from.y, el.from ); - el.to = $.effects.setTransition( el, vProps, factor.to.y, el.to ); - } - - // Horizontal props scaling - if ( factor.from.x !== factor.to.x ) { - props = props.concat( hProps ); - el.from = $.effects.setTransition( el, hProps, factor.from.x, el.from ); - el.to = $.effects.setTransition( el, hProps, factor.to.x, el.to ); - } - } - - // Scale the content - if ( scale === "content" || scale === "both" ) { - - // Vertical props scaling - if ( factor.from.y !== factor.to.y ) { - props = props.concat( cProps ).concat( props2 ); - el.from = $.effects.setTransition( el, cProps, factor.from.y, el.from ); - el.to = $.effects.setTransition( el, cProps, factor.to.y, el.to ); - } - } - - $.effects.save( el, props ); - el.show(); - $.effects.createWrapper( el ); - el.css( "overflow", "hidden" ).css( el.from ); - - // Adjust - if (origin) { // Calculate baseline shifts - baseline = $.effects.getBaseline( origin, original ); - el.from.top = ( original.outerHeight - el.outerHeight() ) * baseline.y; - el.from.left = ( original.outerWidth - el.outerWidth() ) * baseline.x; - el.to.top = ( original.outerHeight - el.to.outerHeight ) * baseline.y; - el.to.left = ( original.outerWidth - el.to.outerWidth ) * baseline.x; - } - el.css( el.from ); // set top & left - - // Animate - if ( scale === "content" || scale === "both" ) { // Scale the children - - // Add margins/font-size - vProps = vProps.concat([ "marginTop", "marginBottom" ]).concat(cProps); - hProps = hProps.concat([ "marginLeft", "marginRight" ]); - props2 = props0.concat(vProps).concat(hProps); - - el.find( "*[width]" ).each( function(){ - var child = $( this ), - c_original = { - height: child.height(), - width: child.width(), - outerHeight: child.outerHeight(), - outerWidth: child.outerWidth() - }; - if (restore) { - $.effects.save(child, props2); - } - - child.from = { - height: c_original.height * factor.from.y, - width: c_original.width * factor.from.x, - outerHeight: c_original.outerHeight * factor.from.y, - outerWidth: c_original.outerWidth * factor.from.x - }; - child.to = { - height: c_original.height * factor.to.y, - width: c_original.width * factor.to.x, - outerHeight: c_original.height * factor.to.y, - outerWidth: c_original.width * factor.to.x - }; - - // Vertical props scaling - if ( factor.from.y !== factor.to.y ) { - child.from = $.effects.setTransition( child, vProps, factor.from.y, child.from ); - child.to = $.effects.setTransition( child, vProps, factor.to.y, child.to ); - } - - // Horizontal props scaling - if ( factor.from.x !== factor.to.x ) { - child.from = $.effects.setTransition( child, hProps, factor.from.x, child.from ); - child.to = $.effects.setTransition( child, hProps, factor.to.x, child.to ); - } - - // Animate children - child.css( child.from ); - child.animate( child.to, o.duration, o.easing, function() { - - // Restore children - if ( restore ) { - $.effects.restore( child, props2 ); - } - }); - }); - } - - // Animate - el.animate( el.to, { - queue: false, - duration: o.duration, - easing: o.easing, - complete: function() { - if ( el.to.opacity === 0 ) { - el.css( "opacity", el.from.opacity ); - } - if( mode === "hide" ) { - el.hide(); - } - $.effects.restore( el, props ); - if ( !restore ) { - - // we need to calculate our new positioning based on the scaling - if ( position === "static" ) { - el.css({ - position: "relative", - top: el.to.top, - left: el.to.left - }); - } else { - $.each([ "top", "left" ], function( idx, pos ) { - el.css( pos, function( _, str ) { - var val = parseInt( str, 10 ), - toRef = idx ? el.to.left : el.to.top; - - // if original was "auto", recalculate the new value from wrapper - if ( str === "auto" ) { - return toRef + "px"; - } - - return val + toRef + "px"; - }); - }); - } - } - - $.effects.removeWrapper( el ); - done(); - } - }); - -}; - -})(jQuery); - -(function( $, undefined ) { - -$.effects.effect.shake = function( o, done ) { - - var el = $( this ), - props = [ "position", "top", "bottom", "left", "right", "height", "width" ], - mode = $.effects.setMode( el, o.mode || "effect" ), - direction = o.direction || "left", - distance = o.distance || 20, - times = o.times || 3, - anims = times * 2 + 1, - speed = Math.round(o.duration/anims), - ref = (direction === "up" || direction === "down") ? "top" : "left", - positiveMotion = (direction === "up" || direction === "left"), - animation = {}, - animation1 = {}, - animation2 = {}, - i, - - // we will need to re-assemble the queue to stack our animations in place - queue = el.queue(), - queuelen = queue.length; - - $.effects.save( el, props ); - el.show(); - $.effects.createWrapper( el ); - - // Animation - animation[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance; - animation1[ ref ] = ( positiveMotion ? "+=" : "-=" ) + distance * 2; - animation2[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance * 2; - - // Animate - el.animate( animation, speed, o.easing ); - - // Shakes - for ( i = 1; i < times; i++ ) { - el.animate( animation1, speed, o.easing ).animate( animation2, speed, o.easing ); - } - el - .animate( animation1, speed, o.easing ) - .animate( animation, speed / 2, o.easing ) - .queue(function() { - if ( mode === "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); - -(function( $, undefined ) { - -$.effects.effect.slide = function( o, done ) { - - // Create element - var el = $( this ), - props = [ "position", "top", "bottom", "left", "right", "width", "height" ], - mode = $.effects.setMode( el, o.mode || "show" ), - show = mode === "show", - direction = o.direction || "left", - ref = (direction === "up" || direction === "down") ? "top" : "left", - positiveMotion = (direction === "up" || direction === "left"), - distance, - animation = {}; - - // Adjust - $.effects.save( el, props ); - el.show(); - distance = o.distance || el[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ); - - $.effects.createWrapper( el ).css({ - overflow: "hidden" - }); - - if ( show ) { - el.css( ref, positiveMotion ? (isNaN(distance) ? "-" + distance : -distance) : distance ); - } - - // Animation - animation[ ref ] = ( show ? - ( positiveMotion ? "+=" : "-=") : - ( positiveMotion ? "-=" : "+=")) + - 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); - -(function( $, undefined ) { - -$.effects.effect.transfer = function( o, done ) { - var elem = $( this ), - target = $( o.to ), - targetFixed = target.css( "position" ) === "fixed", - body = $("body"), - fixTop = targetFixed ? body.scrollTop() : 0, - fixLeft = targetFixed ? body.scrollLeft() : 0, - endPosition = target.offset(), - animation = { - top: endPosition.top - fixTop , - left: endPosition.left - fixLeft , - height: target.innerHeight(), - width: target.innerWidth() - }, - startPosition = elem.offset(), - transfer = $( "<div class='ui-effects-transfer'></div>" ) - .appendTo( document.body ) - .addClass( o.className ) - .css({ - top: startPosition.top - fixTop , - left: startPosition.left - fixLeft , - height: elem.innerHeight(), - width: elem.innerWidth(), - position: targetFixed ? "fixed" : "absolute" - }) - .animate( animation, o.duration, o.easing, function() { - transfer.remove(); - done(); - }); -}; - -})(jQuery); - -(function( $, undefined ) { - -$.widget( "ui.menu", { - version: "1.10.4", - defaultElement: "<ul>", - delay: 300, - options: { - icons: { - submenu: "ui-icon-carat-1-e" - }, - menus: "ul", - position: { - my: "left top", - at: "right top" - }, - role: "menu", - - // callbacks - blur: null, - focus: null, - select: null - }, - - _create: function() { - this.activeMenu = this.element; - // flag used to prevent firing of the click handler - // as the event bubbles up through nested menus - this.mouseHandled = false; - this.element - .uniqueId() - .addClass( "ui-menu ui-widget ui-widget-content ui-corner-all" ) - .toggleClass( "ui-menu-icons", !!this.element.find( ".ui-icon" ).length ) - .attr({ - role: this.options.role, - tabIndex: 0 - }) - // need to catch all clicks on disabled menu - // not possible through _on - .bind( "click" + this.eventNamespace, $.proxy(function( event ) { - if ( this.options.disabled ) { - event.preventDefault(); - } - }, this )); - - if ( this.options.disabled ) { - this.element - .addClass( "ui-state-disabled" ) - .attr( "aria-disabled", "true" ); - } - - this._on({ - // Prevent focus from sticking to links inside menu after clicking - // them (focus should always stay on UL during navigation). - "mousedown .ui-menu-item > a": function( event ) { - event.preventDefault(); - }, - "click .ui-state-disabled > a": function( event ) { - event.preventDefault(); - }, - "click .ui-menu-item:has(a)": function( event ) { - var target = $( event.target ).closest( ".ui-menu-item" ); - if ( !this.mouseHandled && target.not( ".ui-state-disabled" ).length ) { - this.select( event ); - - // Only set the mouseHandled flag if the event will bubble, see #9469. - if ( !event.isPropagationStopped() ) { - this.mouseHandled = true; - } - - // Open submenu on click - if ( target.has( ".ui-menu" ).length ) { - this.expand( event ); - } else if ( !this.element.is( ":focus" ) && $( this.document[ 0 ].activeElement ).closest( ".ui-menu" ).length ) { - - // Redirect focus to the menu - this.element.trigger( "focus", [ true ] ); - - // If the active item is on the top level, let it stay active. - // Otherwise, blur the active item since it is no longer visible. - if ( this.active && this.active.parents( ".ui-menu" ).length === 1 ) { - clearTimeout( this.timer ); - } - } - } - }, - "mouseenter .ui-menu-item": function( event ) { - var target = $( event.currentTarget ); - // Remove ui-state-active class from siblings of the newly focused menu item - // to avoid a jump caused by adjacent elements both having a class with a border - target.siblings().children( ".ui-state-active" ).removeClass( "ui-state-active" ); - this.focus( event, target ); - }, - mouseleave: "collapseAll", - "mouseleave .ui-menu": "collapseAll", - focus: function( event, keepActiveItem ) { - // If there's already an active item, keep it active - // If not, activate the first item - var item = this.active || this.element.children( ".ui-menu-item" ).eq( 0 ); - - if ( !keepActiveItem ) { - this.focus( event, item ); - } - }, - blur: function( event ) { - this._delay(function() { - if ( !$.contains( this.element[0], this.document[0].activeElement ) ) { - this.collapseAll( event ); - } - }); - }, - keydown: "_keydown" - }); - - this.refresh(); - - // Clicks outside of a menu collapse any open menus - this._on( this.document, { - click: function( event ) { - if ( !$( event.target ).closest( ".ui-menu" ).length ) { - this.collapseAll( event ); - } - - // Reset the mouseHandled flag - this.mouseHandled = false; - } - }); - }, - - _destroy: function() { - // Destroy (sub)menus - this.element - .removeAttr( "aria-activedescendant" ) - .find( ".ui-menu" ).addBack() - .removeClass( "ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons" ) - .removeAttr( "role" ) - .removeAttr( "tabIndex" ) - .removeAttr( "aria-labelledby" ) - .removeAttr( "aria-expanded" ) - .removeAttr( "aria-hidden" ) - .removeAttr( "aria-disabled" ) - .removeUniqueId() - .show(); - - // Destroy menu items - this.element.find( ".ui-menu-item" ) - .removeClass( "ui-menu-item" ) - .removeAttr( "role" ) - .removeAttr( "aria-disabled" ) - .children( "a" ) - .removeUniqueId() - .removeClass( "ui-corner-all ui-state-hover" ) - .removeAttr( "tabIndex" ) - .removeAttr( "role" ) - .removeAttr( "aria-haspopup" ) - .children().each( function() { - var elem = $( this ); - if ( elem.data( "ui-menu-submenu-carat" ) ) { - elem.remove(); - } - }); - - // Destroy menu dividers - this.element.find( ".ui-menu-divider" ).removeClass( "ui-menu-divider ui-widget-content" ); - }, - - _keydown: function( event ) { - var match, prev, character, skip, regex, - preventDefault = true; - - function escape( value ) { - return value.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" ); - } - - switch ( event.keyCode ) { - case $.ui.keyCode.PAGE_UP: - this.previousPage( event ); - break; - case $.ui.keyCode.PAGE_DOWN: - this.nextPage( event ); - break; - case $.ui.keyCode.HOME: - this._move( "first", "first", event ); - break; - case $.ui.keyCode.END: - this._move( "last", "last", event ); - break; - case $.ui.keyCode.UP: - this.previous( event ); - break; - case $.ui.keyCode.DOWN: - this.next( event ); - break; - case $.ui.keyCode.LEFT: - this.collapse( event ); - break; - case $.ui.keyCode.RIGHT: - if ( this.active && !this.active.is( ".ui-state-disabled" ) ) { - this.expand( event ); - } - break; - case $.ui.keyCode.ENTER: - case $.ui.keyCode.SPACE: - this._activate( event ); - break; - case $.ui.keyCode.ESCAPE: - this.collapse( event ); - break; - default: - preventDefault = false; - prev = this.previousFilter || ""; - character = String.fromCharCode( event.keyCode ); - skip = false; - - clearTimeout( this.filterTimer ); - - if ( character === prev ) { - skip = true; - } else { - character = prev + character; - } - - regex = new RegExp( "^" + escape( character ), "i" ); - match = this.activeMenu.children( ".ui-menu-item" ).filter(function() { - return regex.test( $( this ).children( "a" ).text() ); - }); - match = skip && match.index( this.active.next() ) !== -1 ? - this.active.nextAll( ".ui-menu-item" ) : - match; - - // If no matches on the current filter, reset to the last character pressed - // to move down the menu to the first item that starts with that character - if ( !match.length ) { - character = String.fromCharCode( event.keyCode ); - regex = new RegExp( "^" + escape( character ), "i" ); - match = this.activeMenu.children( ".ui-menu-item" ).filter(function() { - return regex.test( $( this ).children( "a" ).text() ); - }); - } - - if ( match.length ) { - this.focus( event, match ); - if ( match.length > 1 ) { - this.previousFilter = character; - this.filterTimer = this._delay(function() { - delete this.previousFilter; - }, 1000 ); - } else { - delete this.previousFilter; - } - } else { - delete this.previousFilter; - } - } - - if ( preventDefault ) { - event.preventDefault(); - } - }, - - _activate: function( event ) { - if ( !this.active.is( ".ui-state-disabled" ) ) { - if ( this.active.children( "a[aria-haspopup='true']" ).length ) { - this.expand( event ); - } else { - this.select( event ); - } - } - }, - - refresh: function() { - var menus, - icon = this.options.icons.submenu, - submenus = this.element.find( this.options.menus ); - - this.element.toggleClass( "ui-menu-icons", !!this.element.find( ".ui-icon" ).length ); - - // Initialize nested menus - submenus.filter( ":not(.ui-menu)" ) - .addClass( "ui-menu ui-widget ui-widget-content ui-corner-all" ) - .hide() - .attr({ - role: this.options.role, - "aria-hidden": "true", - "aria-expanded": "false" - }) - .each(function() { - var menu = $( this ), - item = menu.prev( "a" ), - submenuCarat = $( "<span>" ) - .addClass( "ui-menu-icon ui-icon " + icon ) - .data( "ui-menu-submenu-carat", true ); - - item - .attr( "aria-haspopup", "true" ) - .prepend( submenuCarat ); - menu.attr( "aria-labelledby", item.attr( "id" ) ); - }); - - menus = submenus.add( this.element ); - - // Don't refresh list items that are already adapted - menus.children( ":not(.ui-menu-item):has(a)" ) - .addClass( "ui-menu-item" ) - .attr( "role", "presentation" ) - .children( "a" ) - .uniqueId() - .addClass( "ui-corner-all" ) - .attr({ - tabIndex: -1, - role: this._itemRole() - }); - - // Initialize unlinked menu-items containing spaces and/or dashes only as dividers - menus.children( ":not(.ui-menu-item)" ).each(function() { - var item = $( this ); - // hyphen, em dash, en dash - if ( !/[^\-\u2014\u2013\s]/.test( item.text() ) ) { - item.addClass( "ui-widget-content ui-menu-divider" ); - } - }); - - // Add aria-disabled attribute to any disabled menu item - menus.children( ".ui-state-disabled" ).attr( "aria-disabled", "true" ); - - // If the active item has been removed, blur the menu - if ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) { - this.blur(); - } - }, - - _itemRole: function() { - return { - menu: "menuitem", - listbox: "option" - }[ this.options.role ]; - }, - - _setOption: function( key, value ) { - if ( key === "icons" ) { - this.element.find( ".ui-menu-icon" ) - .removeClass( this.options.icons.submenu ) - .addClass( value.submenu ); - } - this._super( key, value ); - }, - - focus: function( event, item ) { - var nested, focused; - this.blur( event, event && event.type === "focus" ); - - this._scrollIntoView( item ); - - this.active = item.first(); - focused = this.active.children( "a" ).addClass( "ui-state-focus" ); - // Only update aria-activedescendant if there's a role - // otherwise we assume focus is managed elsewhere - if ( this.options.role ) { - this.element.attr( "aria-activedescendant", focused.attr( "id" ) ); - } - - // Highlight active parent menu item, if any - this.active - .parent() - .closest( ".ui-menu-item" ) - .children( "a:first" ) - .addClass( "ui-state-active" ); - - if ( event && event.type === "keydown" ) { - this._close(); - } else { - this.timer = this._delay(function() { - this._close(); - }, this.delay ); - } - - nested = item.children( ".ui-menu" ); - if ( nested.length && event && ( /^mouse/.test( event.type ) ) ) { - this._startOpening(nested); - } - this.activeMenu = item.parent(); - - this._trigger( "focus", event, { item: item } ); - }, - - _scrollIntoView: function( item ) { - var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight; - if ( this._hasScroll() ) { - borderTop = parseFloat( $.css( this.activeMenu[0], "borderTopWidth" ) ) || 0; - paddingTop = parseFloat( $.css( this.activeMenu[0], "paddingTop" ) ) || 0; - offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop; - scroll = this.activeMenu.scrollTop(); - elementHeight = this.activeMenu.height(); - itemHeight = item.height(); - - if ( offset < 0 ) { - this.activeMenu.scrollTop( scroll + offset ); - } else if ( offset + itemHeight > elementHeight ) { - this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight ); - } - } - }, - - blur: function( event, fromFocus ) { - if ( !fromFocus ) { - clearTimeout( this.timer ); - } - - if ( !this.active ) { - return; - } - - this.active.children( "a" ).removeClass( "ui-state-focus" ); - this.active = null; - - this._trigger( "blur", event, { item: this.active } ); - }, - - _startOpening: function( submenu ) { - clearTimeout( this.timer ); - - // Don't open if already open fixes a Firefox bug that caused a .5 pixel - // shift in the submenu position when mousing over the carat icon - if ( submenu.attr( "aria-hidden" ) !== "true" ) { - return; - } - - this.timer = this._delay(function() { - this._close(); - this._open( submenu ); - }, this.delay ); - }, - - _open: function( submenu ) { - var position = $.extend({ - of: this.active - }, this.options.position ); - - clearTimeout( this.timer ); - this.element.find( ".ui-menu" ).not( submenu.parents( ".ui-menu" ) ) - .hide() - .attr( "aria-hidden", "true" ); - - submenu - .show() - .removeAttr( "aria-hidden" ) - .attr( "aria-expanded", "true" ) - .position( position ); - }, - - collapseAll: function( event, all ) { - clearTimeout( this.timer ); - this.timer = this._delay(function() { - // If we were passed an event, look for the submenu that contains the event - var currentMenu = all ? this.element : - $( event && event.target ).closest( this.element.find( ".ui-menu" ) ); - - // If we found no valid submenu ancestor, use the main menu to close all sub menus anyway - if ( !currentMenu.length ) { - currentMenu = this.element; - } - - this._close( currentMenu ); - - this.blur( event ); - this.activeMenu = currentMenu; - }, this.delay ); - }, - - // With no arguments, closes the currently active menu - if nothing is active - // it closes all menus. If passed an argument, it will search for menus BELOW - _close: function( startMenu ) { - if ( !startMenu ) { - startMenu = this.active ? this.active.parent() : this.element; - } - - startMenu - .find( ".ui-menu" ) - .hide() - .attr( "aria-hidden", "true" ) - .attr( "aria-expanded", "false" ) - .end() - .find( "a.ui-state-active" ) - .removeClass( "ui-state-active" ); - }, - - collapse: function( event ) { - var newItem = this.active && - this.active.parent().closest( ".ui-menu-item", this.element ); - if ( newItem && newItem.length ) { - this._close(); - this.focus( event, newItem ); - } - }, - - expand: function( event ) { - var newItem = this.active && - this.active - .children( ".ui-menu " ) - .children( ".ui-menu-item" ) - .first(); - - if ( newItem && newItem.length ) { - this._open( newItem.parent() ); - - // Delay so Firefox will not hide activedescendant change in expanding submenu from AT - this._delay(function() { - this.focus( event, newItem ); - }); - } - }, - - next: function( event ) { - this._move( "next", "first", event ); - }, - - previous: function( event ) { - this._move( "prev", "last", event ); - }, - - isFirstItem: function() { - return this.active && !this.active.prevAll( ".ui-menu-item" ).length; - }, - - isLastItem: function() { - return this.active && !this.active.nextAll( ".ui-menu-item" ).length; - }, - - _move: function( direction, filter, event ) { - var next; - if ( this.active ) { - if ( direction === "first" || direction === "last" ) { - next = this.active - [ direction === "first" ? "prevAll" : "nextAll" ]( ".ui-menu-item" ) - .eq( -1 ); - } else { - next = this.active - [ direction + "All" ]( ".ui-menu-item" ) - .eq( 0 ); - } - } - if ( !next || !next.length || !this.active ) { - next = this.activeMenu.children( ".ui-menu-item" )[ filter ](); - } - - this.focus( event, next ); - }, - - nextPage: function( event ) { - var item, base, height; - - if ( !this.active ) { - this.next( event ); - return; - } - if ( this.isLastItem() ) { - return; - } - if ( this._hasScroll() ) { - base = this.active.offset().top; - height = this.element.height(); - this.active.nextAll( ".ui-menu-item" ).each(function() { - item = $( this ); - return item.offset().top - base - height < 0; - }); - - this.focus( event, item ); - } else { - this.focus( event, this.activeMenu.children( ".ui-menu-item" ) - [ !this.active ? "first" : "last" ]() ); - } - }, - - previousPage: function( event ) { - var item, base, height; - if ( !this.active ) { - this.next( event ); - return; - } - if ( this.isFirstItem() ) { - return; - } - if ( this._hasScroll() ) { - base = this.active.offset().top; - height = this.element.height(); - this.active.prevAll( ".ui-menu-item" ).each(function() { - item = $( this ); - return item.offset().top - base + height > 0; - }); - - this.focus( event, item ); - } else { - this.focus( event, this.activeMenu.children( ".ui-menu-item" ).first() ); - } - }, - - _hasScroll: function() { - return this.element.outerHeight() < this.element.prop( "scrollHeight" ); - }, - - select: function( event ) { - // TODO: It should never be possible to not have an active item at this - // point, but the tests don't trigger mouseenter before click. - this.active = this.active || $( event.target ).closest( ".ui-menu-item" ); - var ui = { item: this.active }; - if ( !this.active.has( ".ui-menu" ).length ) { - this.collapseAll( event, true ); - } - this._trigger( "select", event, ui ); - } -}); - -}( jQuery )); - -(function( $, undefined ) { - -$.ui = $.ui || {}; - -var cachedScrollbarWidth, - max = Math.max, - abs = Math.abs, - round = Math.round, - rhorizontal = /left|center|right/, - rvertical = /top|center|bottom/, - roffset = /[\+\-]\d+(\.[\d]+)?%?/, - rposition = /^\w+/, - rpercent = /%$/, - _position = $.fn.position; - -function getOffsets( offsets, width, height ) { - return [ - parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ), - parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 ) - ]; -} - -function parseCss( element, property ) { - return parseInt( $.css( element, property ), 10 ) || 0; -} - -function getDimensions( elem ) { - var raw = elem[0]; - if ( raw.nodeType === 9 ) { - return { - width: elem.width(), - height: elem.height(), - offset: { top: 0, left: 0 } - }; - } - if ( $.isWindow( raw ) ) { - return { - width: elem.width(), - height: elem.height(), - offset: { top: elem.scrollTop(), left: elem.scrollLeft() } - }; - } - if ( raw.preventDefault ) { - return { - width: 0, - height: 0, - offset: { top: raw.pageY, left: raw.pageX } - }; - } - return { - width: elem.outerWidth(), - height: elem.outerHeight(), - offset: elem.offset() - }; -} - -$.position = { - scrollbarWidth: function() { - if ( cachedScrollbarWidth !== undefined ) { - return cachedScrollbarWidth; - } - var w1, w2, - div = $( "<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>" ), - innerDiv = div.children()[0]; - - $( "body" ).append( div ); - w1 = innerDiv.offsetWidth; - div.css( "overflow", "scroll" ); - - w2 = innerDiv.offsetWidth; - - if ( w1 === w2 ) { - w2 = div[0].clientWidth; - } - - div.remove(); - - return (cachedScrollbarWidth = w1 - w2); - }, - getScrollInfo: function( within ) { - var overflowX = within.isWindow || within.isDocument ? "" : - within.element.css( "overflow-x" ), - overflowY = within.isWindow || within.isDocument ? "" : - within.element.css( "overflow-y" ), - hasOverflowX = overflowX === "scroll" || - ( overflowX === "auto" && within.width < within.element[0].scrollWidth ), - hasOverflowY = overflowY === "scroll" || - ( overflowY === "auto" && within.height < within.element[0].scrollHeight ); - return { - width: hasOverflowY ? $.position.scrollbarWidth() : 0, - height: hasOverflowX ? $.position.scrollbarWidth() : 0 - }; - }, - getWithinInfo: function( element ) { - var withinElement = $( element || window ), - isWindow = $.isWindow( withinElement[0] ), - isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9; - return { - element: withinElement, - isWindow: isWindow, - isDocument: isDocument, - offset: withinElement.offset() || { left: 0, top: 0 }, - scrollLeft: withinElement.scrollLeft(), - scrollTop: withinElement.scrollTop(), - width: isWindow ? withinElement.width() : withinElement.outerWidth(), - height: isWindow ? withinElement.height() : withinElement.outerHeight() - }; - } -}; - -$.fn.position = function( options ) { - if ( !options || !options.of ) { - return _position.apply( this, arguments ); - } - - // make a copy, we don't want to modify arguments - options = $.extend( {}, options ); - - var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions, - target = $( options.of ), - within = $.position.getWithinInfo( options.within ), - scrollInfo = $.position.getScrollInfo( within ), - collision = ( options.collision || "flip" ).split( " " ), - offsets = {}; - - dimensions = getDimensions( target ); - if ( target[0].preventDefault ) { - // force left top to allow flipping - options.at = "left top"; - } - targetWidth = dimensions.width; - targetHeight = dimensions.height; - targetOffset = dimensions.offset; - // clone to reuse original targetOffset later - basePosition = $.extend( {}, targetOffset ); - - // force my and at to have valid horizontal and vertical positions - // if a value is missing or invalid, it will be converted to center - $.each( [ "my", "at" ], function() { - var pos = ( options[ this ] || "" ).split( " " ), - horizontalOffset, - verticalOffset; - - if ( pos.length === 1) { - pos = rhorizontal.test( pos[ 0 ] ) ? - pos.concat( [ "center" ] ) : - rvertical.test( pos[ 0 ] ) ? - [ "center" ].concat( pos ) : - [ "center", "center" ]; - } - pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center"; - pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center"; - - // calculate offsets - horizontalOffset = roffset.exec( pos[ 0 ] ); - verticalOffset = roffset.exec( pos[ 1 ] ); - offsets[ this ] = [ - horizontalOffset ? horizontalOffset[ 0 ] : 0, - verticalOffset ? verticalOffset[ 0 ] : 0 - ]; - - // reduce to just the positions without the offsets - options[ this ] = [ - rposition.exec( pos[ 0 ] )[ 0 ], - rposition.exec( pos[ 1 ] )[ 0 ] - ]; - }); - - // normalize collision option - if ( collision.length === 1 ) { - collision[ 1 ] = collision[ 0 ]; - } - - if ( options.at[ 0 ] === "right" ) { - basePosition.left += targetWidth; - } else if ( options.at[ 0 ] === "center" ) { - basePosition.left += targetWidth / 2; - } - - if ( options.at[ 1 ] === "bottom" ) { - basePosition.top += targetHeight; - } else if ( options.at[ 1 ] === "center" ) { - basePosition.top += targetHeight / 2; - } - - atOffset = getOffsets( offsets.at, targetWidth, targetHeight ); - basePosition.left += atOffset[ 0 ]; - basePosition.top += atOffset[ 1 ]; - - return this.each(function() { - var collisionPosition, using, - elem = $( this ), - elemWidth = elem.outerWidth(), - elemHeight = elem.outerHeight(), - marginLeft = parseCss( this, "marginLeft" ), - marginTop = parseCss( this, "marginTop" ), - collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) + scrollInfo.width, - collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) + scrollInfo.height, - position = $.extend( {}, basePosition ), - myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() ); - - if ( options.my[ 0 ] === "right" ) { - position.left -= elemWidth; - } else if ( options.my[ 0 ] === "center" ) { - position.left -= elemWidth / 2; - } - - if ( options.my[ 1 ] === "bottom" ) { - position.top -= elemHeight; - } else if ( options.my[ 1 ] === "center" ) { - position.top -= elemHeight / 2; - } - - position.left += myOffset[ 0 ]; - position.top += myOffset[ 1 ]; - - // if the browser doesn't support fractions, then round for consistent results - if ( !$.support.offsetFractions ) { - position.left = round( position.left ); - position.top = round( position.top ); - } - - collisionPosition = { - marginLeft: marginLeft, - marginTop: marginTop - }; - - $.each( [ "left", "top" ], function( i, dir ) { - if ( $.ui.position[ collision[ i ] ] ) { - $.ui.position[ collision[ i ] ][ dir ]( position, { - targetWidth: targetWidth, - targetHeight: targetHeight, - elemWidth: elemWidth, - elemHeight: elemHeight, - collisionPosition: collisionPosition, - collisionWidth: collisionWidth, - collisionHeight: collisionHeight, - offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ], - my: options.my, - at: options.at, - within: within, - elem : elem - }); - } - }); - - if ( options.using ) { - // adds feedback as second argument to using callback, if present - using = function( props ) { - var left = targetOffset.left - position.left, - right = left + targetWidth - elemWidth, - top = targetOffset.top - position.top, - bottom = top + targetHeight - elemHeight, - feedback = { - target: { - element: target, - left: targetOffset.left, - top: targetOffset.top, - width: targetWidth, - height: targetHeight - }, - element: { - element: elem, - left: position.left, - top: position.top, - width: elemWidth, - height: elemHeight - }, - horizontal: right < 0 ? "left" : left > 0 ? "right" : "center", - vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle" - }; - if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) { - feedback.horizontal = "center"; - } - if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) { - feedback.vertical = "middle"; - } - if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) { - feedback.important = "horizontal"; - } else { - feedback.important = "vertical"; - } - options.using.call( this, props, feedback ); - }; - } - - elem.offset( $.extend( position, { using: using } ) ); - }); -}; - -$.ui.position = { - fit: { - left: function( position, data ) { - var within = data.within, - withinOffset = within.isWindow ? within.scrollLeft : within.offset.left, - outerWidth = within.width, - collisionPosLeft = position.left - data.collisionPosition.marginLeft, - overLeft = withinOffset - collisionPosLeft, - overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset, - newOverRight; - - // element is wider than within - if ( data.collisionWidth > outerWidth ) { - // element is initially over the left side of within - if ( overLeft > 0 && overRight <= 0 ) { - newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset; - position.left += overLeft - newOverRight; - // element is initially over right side of within - } else if ( overRight > 0 && overLeft <= 0 ) { - position.left = withinOffset; - // element is initially over both left and right sides of within - } else { - if ( overLeft > overRight ) { - position.left = withinOffset + outerWidth - data.collisionWidth; - } else { - position.left = withinOffset; - } - } - // too far left -> align with left edge - } else if ( overLeft > 0 ) { - position.left += overLeft; - // too far right -> align with right edge - } else if ( overRight > 0 ) { - position.left -= overRight; - // adjust based on position and margin - } else { - position.left = max( position.left - collisionPosLeft, position.left ); - } - }, - top: function( position, data ) { - var within = data.within, - withinOffset = within.isWindow ? within.scrollTop : within.offset.top, - outerHeight = data.within.height, - collisionPosTop = position.top - data.collisionPosition.marginTop, - overTop = withinOffset - collisionPosTop, - overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset, - newOverBottom; - - // element is taller than within - if ( data.collisionHeight > outerHeight ) { - // element is initially over the top of within - if ( overTop > 0 && overBottom <= 0 ) { - newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset; - position.top += overTop - newOverBottom; - // element is initially over bottom of within - } else if ( overBottom > 0 && overTop <= 0 ) { - position.top = withinOffset; - // element is initially over both top and bottom of within - } else { - if ( overTop > overBottom ) { - position.top = withinOffset + outerHeight - data.collisionHeight; - } else { - position.top = withinOffset; - } - } - // too far up -> align with top - } else if ( overTop > 0 ) { - position.top += overTop; - // too far down -> align with bottom edge - } else if ( overBottom > 0 ) { - position.top -= overBottom; - // adjust based on position and margin - } else { - position.top = max( position.top - collisionPosTop, position.top ); - } - } - }, - flip: { - left: function( position, data ) { - var within = data.within, - withinOffset = within.offset.left + within.scrollLeft, - outerWidth = within.width, - offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left, - collisionPosLeft = position.left - data.collisionPosition.marginLeft, - overLeft = collisionPosLeft - offsetLeft, - overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft, - myOffset = data.my[ 0 ] === "left" ? - -data.elemWidth : - data.my[ 0 ] === "right" ? - data.elemWidth : - 0, - atOffset = data.at[ 0 ] === "left" ? - data.targetWidth : - data.at[ 0 ] === "right" ? - -data.targetWidth : - 0, - offset = -2 * data.offset[ 0 ], - newOverRight, - newOverLeft; - - if ( overLeft < 0 ) { - newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset; - if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) { - position.left += myOffset + atOffset + offset; - } - } - else if ( overRight > 0 ) { - newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft; - if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) { - position.left += myOffset + atOffset + offset; - } - } - }, - top: function( position, data ) { - var within = data.within, - withinOffset = within.offset.top + within.scrollTop, - outerHeight = within.height, - offsetTop = within.isWindow ? within.scrollTop : within.offset.top, - collisionPosTop = position.top - data.collisionPosition.marginTop, - overTop = collisionPosTop - offsetTop, - overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop, - top = data.my[ 1 ] === "top", - myOffset = top ? - -data.elemHeight : - data.my[ 1 ] === "bottom" ? - data.elemHeight : - 0, - atOffset = data.at[ 1 ] === "top" ? - data.targetHeight : - data.at[ 1 ] === "bottom" ? - -data.targetHeight : - 0, - offset = -2 * data.offset[ 1 ], - newOverTop, - newOverBottom; - if ( overTop < 0 ) { - newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset; - if ( ( position.top + myOffset + atOffset + offset) > overTop && ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) ) { - position.top += myOffset + atOffset + offset; - } - } - else if ( overBottom > 0 ) { - newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop; - if ( ( position.top + myOffset + atOffset + offset) > overBottom && ( newOverTop > 0 || abs( newOverTop ) < overBottom ) ) { - position.top += myOffset + atOffset + offset; - } - } - } - }, - flipfit: { - left: function() { - $.ui.position.flip.left.apply( this, arguments ); - $.ui.position.fit.left.apply( this, arguments ); - }, - top: function() { - $.ui.position.flip.top.apply( this, arguments ); - $.ui.position.fit.top.apply( this, arguments ); - } - } -}; - -// fraction support test -(function () { - var testElement, testElementParent, testElementStyle, offsetLeft, i, - body = document.getElementsByTagName( "body" )[ 0 ], - div = document.createElement( "div" ); - - //Create a "fake body" for testing based on method used in jQuery.support - testElement = document.createElement( body ? "div" : "body" ); - testElementStyle = { - visibility: "hidden", - width: 0, - height: 0, - border: 0, - margin: 0, - background: "none" - }; - if ( body ) { - $.extend( testElementStyle, { - position: "absolute", - left: "-1000px", - top: "-1000px" - }); - } - for ( i in testElementStyle ) { - testElement.style[ i ] = testElementStyle[ i ]; - } - testElement.appendChild( div ); - testElementParent = body || document.documentElement; - testElementParent.insertBefore( testElement, testElementParent.firstChild ); - - div.style.cssText = "position: absolute; left: 10.7432222px;"; - - offsetLeft = $( div ).offset().left; - $.support.offsetFractions = offsetLeft > 10 && offsetLeft < 11; - - testElement.innerHTML = ""; - testElementParent.removeChild( testElement ); -})(); - -}( jQuery ) ); - -(function( $, undefined ) { - -$.widget( "ui.progressbar", { - version: "1.10.4", - options: { - max: 100, - value: 0, - - change: null, - complete: null - }, - - min: 0, - - _create: function() { - // Constrain initial value - this.oldValue = this.options.value = this._constrainedValue(); - - this.element - .addClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" ) - .attr({ - // Only set static values, aria-valuenow and aria-valuemax are - // set inside _refreshValue() - role: "progressbar", - "aria-valuemin": this.min - }); - - this.valueDiv = $( "<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>" ) - .appendTo( this.element ); - - this._refreshValue(); - }, - - _destroy: function() { - this.element - .removeClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" ) - .removeAttr( "role" ) - .removeAttr( "aria-valuemin" ) - .removeAttr( "aria-valuemax" ) - .removeAttr( "aria-valuenow" ); - - this.valueDiv.remove(); - }, - - value: function( newValue ) { - if ( newValue === undefined ) { - return this.options.value; - } - - this.options.value = this._constrainedValue( newValue ); - this._refreshValue(); - }, - - _constrainedValue: function( newValue ) { - if ( newValue === undefined ) { - newValue = this.options.value; - } - - this.indeterminate = newValue === false; - - // sanitize value - if ( typeof newValue !== "number" ) { - newValue = 0; - } - - return this.indeterminate ? false : - Math.min( this.options.max, Math.max( this.min, newValue ) ); - }, - - _setOptions: function( options ) { - // Ensure "value" option is set after other values (like max) - var value = options.value; - delete options.value; - - this._super( options ); - - this.options.value = this._constrainedValue( value ); - this._refreshValue(); - }, - - _setOption: function( key, value ) { - if ( key === "max" ) { - // Don't allow a max less than min - value = Math.max( this.min, value ); - } - - this._super( key, value ); - }, - - _percentage: function() { - return this.indeterminate ? 100 : 100 * ( this.options.value - this.min ) / ( this.options.max - this.min ); - }, - - _refreshValue: function() { - var value = this.options.value, - percentage = this._percentage(); - - this.valueDiv - .toggle( this.indeterminate || value > this.min ) - .toggleClass( "ui-corner-right", value === this.options.max ) - .width( percentage.toFixed(0) + "%" ); - - this.element.toggleClass( "ui-progressbar-indeterminate", this.indeterminate ); - - if ( this.indeterminate ) { - this.element.removeAttr( "aria-valuenow" ); - if ( !this.overlayDiv ) { - this.overlayDiv = $( "<div class='ui-progressbar-overlay'></div>" ).appendTo( this.valueDiv ); - } - } else { - this.element.attr({ - "aria-valuemax": this.options.max, - "aria-valuenow": value - }); - if ( this.overlayDiv ) { - this.overlayDiv.remove(); - this.overlayDiv = null; - } - } - - if ( this.oldValue !== value ) { - this.oldValue = value; - this._trigger( "change" ); - } - if ( value === this.options.max ) { - this._trigger( "complete" ); - } - } -}); - -})( jQuery ); - -(function( $, undefined ) { - -// number of pages in a slider -// (how many times can you page up/down to go through the whole range) -var numPages = 5; - -$.widget( "ui.slider", $.ui.mouse, { - version: "1.10.4", - widgetEventPrefix: "slide", - - options: { - animate: false, - distance: 0, - max: 100, - min: 0, - orientation: "horizontal", - range: false, - step: 1, - value: 0, - values: null, - - // callbacks - change: null, - slide: null, - start: null, - stop: null - }, - - _create: function() { - this._keySliding = false; - this._mouseSliding = false; - this._animateOff = true; - this._handleIndex = null; - this._detectOrientation(); - this._mouseInit(); - - this.element - .addClass( "ui-slider" + - " ui-slider-" + this.orientation + - " ui-widget" + - " ui-widget-content" + - " ui-corner-all"); - - this._refresh(); - this._setOption( "disabled", this.options.disabled ); - - this._animateOff = false; - }, - - _refresh: function() { - this._createRange(); - this._createHandles(); - this._setupEvents(); - this._refreshValue(); - }, - - _createHandles: function() { - var i, handleCount, - options = this.options, - existingHandles = this.element.find( ".ui-slider-handle" ).addClass( "ui-state-default ui-corner-all" ), - handle = "<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>", - handles = []; - - handleCount = ( options.values && options.values.length ) || 1; - - if ( existingHandles.length > handleCount ) { - existingHandles.slice( handleCount ).remove(); - existingHandles = existingHandles.slice( 0, handleCount ); - } - - for ( i = existingHandles.length; i < handleCount; i++ ) { - handles.push( handle ); - } - - this.handles = existingHandles.add( $( handles.join( "" ) ).appendTo( this.element ) ); - - this.handle = this.handles.eq( 0 ); - - this.handles.each(function( i ) { - $( this ).data( "ui-slider-handle-index", i ); - }); - }, - - _createRange: function() { - var options = this.options, - classes = ""; - - if ( options.range ) { - if ( options.range === true ) { - if ( !options.values ) { - options.values = [ this._valueMin(), this._valueMin() ]; - } else if ( options.values.length && options.values.length !== 2 ) { - options.values = [ options.values[0], options.values[0] ]; - } else if ( $.isArray( options.values ) ) { - options.values = options.values.slice(0); - } - } - - if ( !this.range || !this.range.length ) { - this.range = $( "<div></div>" ) - .appendTo( this.element ); - - classes = "ui-slider-range" + - // note: this isn't the most fittingly semantic framework class for this element, - // but worked best visually with a variety of themes - " ui-widget-header ui-corner-all"; - } else { - this.range.removeClass( "ui-slider-range-min ui-slider-range-max" ) - // Handle range switching from true to min/max - .css({ - "left": "", - "bottom": "" - }); - } - - this.range.addClass( classes + - ( ( options.range === "min" || options.range === "max" ) ? " ui-slider-range-" + options.range : "" ) ); - } else { - if ( this.range ) { - this.range.remove(); - } - this.range = null; - } - }, - - _setupEvents: function() { - var elements = this.handles.add( this.range ).filter( "a" ); - this._off( elements ); - this._on( elements, this._handleEvents ); - this._hoverable( elements ); - this._focusable( elements ); - }, - - _destroy: function() { - this.handles.remove(); - if ( this.range ) { - this.range.remove(); - } - - this.element - .removeClass( "ui-slider" + - " ui-slider-horizontal" + - " ui-slider-vertical" + - " ui-widget" + - " ui-widget-content" + - " ui-corner-all" ); - - this._mouseDestroy(); - }, - - _mouseCapture: function( event ) { - var position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle, - that = this, - o = this.options; - - if ( o.disabled ) { - return false; - } - - this.elementSize = { - width: this.element.outerWidth(), - height: this.element.outerHeight() - }; - this.elementOffset = this.element.offset(); - - position = { x: event.pageX, y: event.pageY }; - normValue = this._normValueFromMouse( position ); - distance = this._valueMax() - this._valueMin() + 1; - this.handles.each(function( i ) { - var thisDistance = Math.abs( normValue - that.values(i) ); - if (( distance > thisDistance ) || - ( distance === thisDistance && - (i === that._lastChangedValue || that.values(i) === o.min ))) { - distance = thisDistance; - closestHandle = $( this ); - index = i; - } - }); - - allowed = this._start( event, index ); - if ( allowed === false ) { - return false; - } - this._mouseSliding = true; - - this._handleIndex = index; - - closestHandle - .addClass( "ui-state-active" ) - .focus(); - - offset = closestHandle.offset(); - mouseOverHandle = !$( event.target ).parents().addBack().is( ".ui-slider-handle" ); - this._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : { - left: event.pageX - offset.left - ( closestHandle.width() / 2 ), - top: event.pageY - offset.top - - ( closestHandle.height() / 2 ) - - ( parseInt( closestHandle.css("borderTopWidth"), 10 ) || 0 ) - - ( parseInt( closestHandle.css("borderBottomWidth"), 10 ) || 0) + - ( parseInt( closestHandle.css("marginTop"), 10 ) || 0) - }; - - if ( !this.handles.hasClass( "ui-state-hover" ) ) { - this._slide( event, index, normValue ); - } - this._animateOff = true; - return true; - }, - - _mouseStart: function() { - return true; - }, - - _mouseDrag: function( event ) { - var position = { x: event.pageX, y: event.pageY }, - normValue = this._normValueFromMouse( position ); - - this._slide( event, this._handleIndex, normValue ); - - return false; - }, - - _mouseStop: function( event ) { - this.handles.removeClass( "ui-state-active" ); - this._mouseSliding = false; - - this._stop( event, this._handleIndex ); - this._change( event, this._handleIndex ); - - this._handleIndex = null; - this._clickOffset = null; - this._animateOff = false; - - return false; - }, - - _detectOrientation: function() { - this.orientation = ( this.options.orientation === "vertical" ) ? "vertical" : "horizontal"; - }, - - _normValueFromMouse: function( position ) { - var pixelTotal, - pixelMouse, - percentMouse, - valueTotal, - valueMouse; - - if ( this.orientation === "horizontal" ) { - pixelTotal = this.elementSize.width; - pixelMouse = position.x - this.elementOffset.left - ( this._clickOffset ? this._clickOffset.left : 0 ); - } else { - pixelTotal = this.elementSize.height; - pixelMouse = position.y - this.elementOffset.top - ( this._clickOffset ? this._clickOffset.top : 0 ); - } - - percentMouse = ( pixelMouse / pixelTotal ); - if ( percentMouse > 1 ) { - percentMouse = 1; - } - if ( percentMouse < 0 ) { - percentMouse = 0; - } - if ( this.orientation === "vertical" ) { - percentMouse = 1 - percentMouse; - } - - valueTotal = this._valueMax() - this._valueMin(); - valueMouse = this._valueMin() + percentMouse * valueTotal; - - return this._trimAlignValue( valueMouse ); - }, - - _start: function( event, index ) { - var uiHash = { - handle: this.handles[ index ], - value: this.value() - }; - if ( this.options.values && this.options.values.length ) { - uiHash.value = this.values( index ); - uiHash.values = this.values(); - } - return this._trigger( "start", event, uiHash ); - }, - - _slide: function( event, index, newVal ) { - var otherVal, - newValues, - allowed; - - if ( this.options.values && this.options.values.length ) { - otherVal = this.values( index ? 0 : 1 ); - - if ( ( this.options.values.length === 2 && this.options.range === true ) && - ( ( index === 0 && newVal > otherVal) || ( index === 1 && newVal < otherVal ) ) - ) { - newVal = otherVal; - } - - if ( newVal !== this.values( index ) ) { - newValues = this.values(); - newValues[ index ] = newVal; - // A slide can be canceled by returning false from the slide callback - allowed = this._trigger( "slide", event, { - handle: this.handles[ index ], - value: newVal, - values: newValues - } ); - otherVal = this.values( index ? 0 : 1 ); - if ( allowed !== false ) { - this.values( index, newVal ); - } - } - } else { - if ( newVal !== this.value() ) { - // A slide can be canceled by returning false from the slide callback - allowed = this._trigger( "slide", event, { - handle: this.handles[ index ], - value: newVal - } ); - if ( allowed !== false ) { - this.value( newVal ); - } - } - } - }, - - _stop: function( event, index ) { - var uiHash = { - handle: this.handles[ index ], - value: this.value() - }; - if ( this.options.values && this.options.values.length ) { - uiHash.value = this.values( index ); - uiHash.values = this.values(); - } - - this._trigger( "stop", event, uiHash ); - }, - - _change: function( event, index ) { - if ( !this._keySliding && !this._mouseSliding ) { - var uiHash = { - handle: this.handles[ index ], - value: this.value() - }; - if ( this.options.values && this.options.values.length ) { - uiHash.value = this.values( index ); - uiHash.values = this.values(); - } - - //store the last changed value index for reference when handles overlap - this._lastChangedValue = index; - - this._trigger( "change", event, uiHash ); - } - }, - - value: function( newValue ) { - if ( arguments.length ) { - this.options.value = this._trimAlignValue( newValue ); - this._refreshValue(); - this._change( null, 0 ); - return; - } - - return this._value(); - }, - - values: function( index, newValue ) { - var vals, - newValues, - i; - - if ( arguments.length > 1 ) { - this.options.values[ index ] = this._trimAlignValue( newValue ); - this._refreshValue(); - this._change( null, index ); - return; - } - - if ( arguments.length ) { - if ( $.isArray( arguments[ 0 ] ) ) { - vals = this.options.values; - newValues = arguments[ 0 ]; - for ( i = 0; i < vals.length; i += 1 ) { - vals[ i ] = this._trimAlignValue( newValues[ i ] ); - this._change( null, i ); - } - this._refreshValue(); - } else { - if ( this.options.values && this.options.values.length ) { - return this._values( index ); - } else { - return this.value(); - } - } - } else { - return this._values(); - } - }, - - _setOption: function( key, value ) { - var i, - valsLength = 0; - - if ( key === "range" && this.options.range === true ) { - if ( value === "min" ) { - this.options.value = this._values( 0 ); - this.options.values = null; - } else if ( value === "max" ) { - this.options.value = this._values( this.options.values.length-1 ); - this.options.values = null; - } - } - - if ( $.isArray( this.options.values ) ) { - valsLength = this.options.values.length; - } - - $.Widget.prototype._setOption.apply( this, arguments ); - - switch ( key ) { - case "orientation": - this._detectOrientation(); - this.element - .removeClass( "ui-slider-horizontal ui-slider-vertical" ) - .addClass( "ui-slider-" + this.orientation ); - this._refreshValue(); - break; - case "value": - this._animateOff = true; - this._refreshValue(); - this._change( null, 0 ); - this._animateOff = false; - break; - case "values": - this._animateOff = true; - this._refreshValue(); - for ( i = 0; i < valsLength; i += 1 ) { - this._change( null, i ); - } - this._animateOff = false; - break; - case "min": - case "max": - this._animateOff = true; - this._refreshValue(); - this._animateOff = false; - break; - case "range": - this._animateOff = true; - this._refresh(); - this._animateOff = false; - break; - } - }, - - //internal value getter - // _value() returns value trimmed by min and max, aligned by step - _value: function() { - var val = this.options.value; - val = this._trimAlignValue( val ); - - return val; - }, - - //internal values getter - // _values() returns array of values trimmed by min and max, aligned by step - // _values( index ) returns single value trimmed by min and max, aligned by step - _values: function( index ) { - var val, - vals, - i; - - if ( arguments.length ) { - val = this.options.values[ index ]; - val = this._trimAlignValue( val ); - - return val; - } else if ( this.options.values && this.options.values.length ) { - // .slice() creates a copy of the array - // this copy gets trimmed by min and max and then returned - vals = this.options.values.slice(); - for ( i = 0; i < vals.length; i+= 1) { - vals[ i ] = this._trimAlignValue( vals[ i ] ); - } - - return vals; - } else { - return []; - } - }, - - // returns the step-aligned value that val is closest to, between (inclusive) min and max - _trimAlignValue: function( val ) { - if ( val <= this._valueMin() ) { - return this._valueMin(); - } - if ( val >= this._valueMax() ) { - return this._valueMax(); - } - var step = ( this.options.step > 0 ) ? this.options.step : 1, - valModStep = (val - this._valueMin()) % step, - alignValue = val - valModStep; - - if ( Math.abs(valModStep) * 2 >= step ) { - alignValue += ( valModStep > 0 ) ? step : ( -step ); - } - - // Since JavaScript has problems with large floats, round - // the final value to 5 digits after the decimal point (see #4124) - return parseFloat( alignValue.toFixed(5) ); - }, - - _valueMin: function() { - return this.options.min; - }, - - _valueMax: function() { - return this.options.max; - }, - - _refreshValue: function() { - var lastValPercent, valPercent, value, valueMin, valueMax, - oRange = this.options.range, - o = this.options, - that = this, - animate = ( !this._animateOff ) ? o.animate : false, - _set = {}; - - if ( this.options.values && this.options.values.length ) { - this.handles.each(function( i ) { - valPercent = ( that.values(i) - that._valueMin() ) / ( that._valueMax() - that._valueMin() ) * 100; - _set[ that.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%"; - $( this ).stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate ); - if ( that.options.range === true ) { - if ( that.orientation === "horizontal" ) { - if ( i === 0 ) { - that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { left: valPercent + "%" }, o.animate ); - } - if ( i === 1 ) { - that.range[ animate ? "animate" : "css" ]( { width: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } ); - } - } else { - if ( i === 0 ) { - that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { bottom: ( valPercent ) + "%" }, o.animate ); - } - if ( i === 1 ) { - that.range[ animate ? "animate" : "css" ]( { height: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } ); - } - } - } - lastValPercent = valPercent; - }); - } else { - value = this.value(); - valueMin = this._valueMin(); - valueMax = this._valueMax(); - valPercent = ( valueMax !== valueMin ) ? - ( value - valueMin ) / ( valueMax - valueMin ) * 100 : - 0; - _set[ this.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%"; - this.handle.stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate ); - - if ( oRange === "min" && this.orientation === "horizontal" ) { - this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { width: valPercent + "%" }, o.animate ); - } - if ( oRange === "max" && this.orientation === "horizontal" ) { - this.range[ animate ? "animate" : "css" ]( { width: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } ); - } - if ( oRange === "min" && this.orientation === "vertical" ) { - this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { height: valPercent + "%" }, o.animate ); - } - if ( oRange === "max" && this.orientation === "vertical" ) { - this.range[ animate ? "animate" : "css" ]( { height: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } ); - } - } - }, - - _handleEvents: { - keydown: function( event ) { - var allowed, curVal, newVal, step, - index = $( event.target ).data( "ui-slider-handle-index" ); - - switch ( event.keyCode ) { - case $.ui.keyCode.HOME: - case $.ui.keyCode.END: - case $.ui.keyCode.PAGE_UP: - case $.ui.keyCode.PAGE_DOWN: - case $.ui.keyCode.UP: - case $.ui.keyCode.RIGHT: - case $.ui.keyCode.DOWN: - case $.ui.keyCode.LEFT: - event.preventDefault(); - if ( !this._keySliding ) { - this._keySliding = true; - $( event.target ).addClass( "ui-state-active" ); - allowed = this._start( event, index ); - if ( allowed === false ) { - return; - } - } - break; - } - - step = this.options.step; - if ( this.options.values && this.options.values.length ) { - curVal = newVal = this.values( index ); - } else { - curVal = newVal = this.value(); - } - - switch ( event.keyCode ) { - case $.ui.keyCode.HOME: - newVal = this._valueMin(); - break; - case $.ui.keyCode.END: - newVal = this._valueMax(); - break; - case $.ui.keyCode.PAGE_UP: - newVal = this._trimAlignValue( curVal + ( (this._valueMax() - this._valueMin()) / numPages ) ); - break; - case $.ui.keyCode.PAGE_DOWN: - newVal = this._trimAlignValue( curVal - ( (this._valueMax() - this._valueMin()) / numPages ) ); - break; - case $.ui.keyCode.UP: - case $.ui.keyCode.RIGHT: - if ( curVal === this._valueMax() ) { - return; - } - newVal = this._trimAlignValue( curVal + step ); - break; - case $.ui.keyCode.DOWN: - case $.ui.keyCode.LEFT: - if ( curVal === this._valueMin() ) { - return; - } - newVal = this._trimAlignValue( curVal - step ); - break; - } - - this._slide( event, index, newVal ); - }, - click: function( event ) { - event.preventDefault(); - }, - keyup: function( event ) { - var index = $( event.target ).data( "ui-slider-handle-index" ); - - if ( this._keySliding ) { - this._keySliding = false; - this._stop( event, index ); - this._change( event, index ); - $( event.target ).removeClass( "ui-state-active" ); - } - } - } - -}); - -}(jQuery)); - -(function( $ ) { - -function modifier( fn ) { - return function() { - var previous = this.element.val(); - fn.apply( this, arguments ); - this._refresh(); - if ( previous !== this.element.val() ) { - this._trigger( "change" ); - } - }; -} - -$.widget( "ui.spinner", { - version: "1.10.4", - defaultElement: "<input>", - widgetEventPrefix: "spin", - options: { - culture: null, - icons: { - down: "ui-icon-triangle-1-s", - up: "ui-icon-triangle-1-n" - }, - incremental: true, - max: null, - min: null, - numberFormat: null, - page: 10, - step: 1, - - change: null, - spin: null, - start: null, - stop: null - }, - - _create: function() { - // handle string values that need to be parsed - this._setOption( "max", this.options.max ); - this._setOption( "min", this.options.min ); - this._setOption( "step", this.options.step ); - - // Only format if there is a value, prevents the field from being marked - // as invalid in Firefox, see #9573. - if ( this.value() !== "" ) { - // Format the value, but don't constrain. - this._value( this.element.val(), true ); - } - - this._draw(); - this._on( this._events ); - this._refresh(); - - // 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" ); - } - }); - }, - - _getCreateOptions: function() { - var options = {}, - element = this.element; - - $.each( [ "min", "max", "step" ], function( i, option ) { - var value = element.attr( option ); - if ( value !== undefined && value.length ) { - options[ option ] = value; - } - }); - - return options; - }, - - _events: { - keydown: function( event ) { - if ( this._start( event ) && this._keydown( event ) ) { - event.preventDefault(); - } - }, - keyup: "_stop", - focus: function() { - this.previous = this.element.val(); - }, - blur: function( event ) { - if ( this.cancelBlur ) { - delete this.cancelBlur; - return; - } - - this._stop(); - this._refresh(); - if ( this.previous !== this.element.val() ) { - this._trigger( "change", event ); - } - }, - mousewheel: function( event, delta ) { - if ( !delta ) { - return; - } - if ( !this.spinning && !this._start( event ) ) { - return false; - } - - this._spin( (delta > 0 ? 1 : -1) * this.options.step, event ); - clearTimeout( this.mousewheelTimer ); - this.mousewheelTimer = this._delay(function() { - if ( this.spinning ) { - this._stop( event ); - } - }, 100 ); - event.preventDefault(); - }, - "mousedown .ui-spinner-button": function( event ) { - var previous; - - // We never want the buttons to have focus; whenever the user is - // interacting with the spinner, the focus should be on the input. - // If the input is focused then this.previous is properly set from - // when the input first received focus. If the input is not focused - // then we need to set this.previous based on the value before spinning. - previous = this.element[0] === this.document[0].activeElement ? - this.previous : this.element.val(); - function checkFocus() { - var isActive = this.element[0] === this.document[0].activeElement; - if ( !isActive ) { - this.element.focus(); - this.previous = previous; - // support: IE - // IE sets focus asynchronously, so we need to check if focus - // moved off of the input because the user clicked on the button. - this._delay(function() { - this.previous = previous; - }); - } - } - - // ensure focus is on (or stays on) the text field - event.preventDefault(); - checkFocus.call( this ); - - // support: IE - // IE doesn't prevent moving focus even with event.preventDefault() - // so we set a flag to know when we should ignore the blur event - // and check (again) if focus moved off of the input. - this.cancelBlur = true; - this._delay(function() { - delete this.cancelBlur; - checkFocus.call( this ); - }); - - if ( this._start( event ) === false ) { - return; - } - - this._repeat( null, $( event.currentTarget ).hasClass( "ui-spinner-up" ) ? 1 : -1, event ); - }, - "mouseup .ui-spinner-button": "_stop", - "mouseenter .ui-spinner-button": function( event ) { - // button will add ui-state-active if mouse was down while mouseleave and kept down - if ( !$( event.currentTarget ).hasClass( "ui-state-active" ) ) { - return; - } - - if ( this._start( event ) === false ) { - return false; - } - this._repeat( null, $( event.currentTarget ).hasClass( "ui-spinner-up" ) ? 1 : -1, event ); - }, - // TODO: do we really want to consider this a stop? - // shouldn't we just stop the repeater and wait until mouseup before - // we trigger the stop event? - "mouseleave .ui-spinner-button": "_stop" - }, - - _draw: function() { - var uiSpinner = this.uiSpinner = this.element - .addClass( "ui-spinner-input" ) - .attr( "autocomplete", "off" ) - .wrap( this._uiSpinnerHtml() ) - .parent() - // add buttons - .append( this._buttonHtml() ); - - this.element.attr( "role", "spinbutton" ); - - // button bindings - this.buttons = uiSpinner.find( ".ui-spinner-button" ) - .attr( "tabIndex", -1 ) - .button() - .removeClass( "ui-corner-all" ); - - // IE 6 doesn't understand height: 50% for the buttons - // unless the wrapper has an explicit height - if ( this.buttons.height() > Math.ceil( uiSpinner.height() * 0.5 ) && - uiSpinner.height() > 0 ) { - uiSpinner.height( uiSpinner.height() ); - } - - // disable spinner if element was already disabled - if ( this.options.disabled ) { - this.disable(); - } - }, - - _keydown: function( event ) { - var options = this.options, - keyCode = $.ui.keyCode; - - switch ( event.keyCode ) { - case keyCode.UP: - this._repeat( null, 1, event ); - return true; - case keyCode.DOWN: - this._repeat( null, -1, event ); - return true; - case keyCode.PAGE_UP: - this._repeat( null, options.page, event ); - return true; - case keyCode.PAGE_DOWN: - this._repeat( null, -options.page, event ); - return true; - } - - return false; - }, - - _uiSpinnerHtml: function() { - return "<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"; - }, - - _buttonHtml: function() { - return "" + - "<a class='ui-spinner-button ui-spinner-up ui-corner-tr'>" + - "<span class='ui-icon " + this.options.icons.up + "'>&#9650;</span>" + - "</a>" + - "<a class='ui-spinner-button ui-spinner-down ui-corner-br'>" + - "<span class='ui-icon " + this.options.icons.down + "'>&#9660;</span>" + - "</a>"; - }, - - _start: function( event ) { - if ( !this.spinning && this._trigger( "start", event ) === false ) { - return false; - } - - if ( !this.counter ) { - this.counter = 1; - } - this.spinning = true; - return true; - }, - - _repeat: function( i, steps, event ) { - i = i || 500; - - clearTimeout( this.timer ); - this.timer = this._delay(function() { - this._repeat( 40, steps, event ); - }, i ); - - this._spin( steps * this.options.step, event ); - }, - - _spin: function( step, event ) { - var value = this.value() || 0; - - if ( !this.counter ) { - this.counter = 1; - } - - value = this._adjustValue( value + step * this._increment( this.counter ) ); - - if ( !this.spinning || this._trigger( "spin", event, { value: value } ) !== false) { - this._value( value ); - this.counter++; - } - }, - - _increment: function( i ) { - var incremental = this.options.incremental; - - if ( incremental ) { - return $.isFunction( incremental ) ? - incremental( i ) : - Math.floor( i*i*i/50000 - i*i/500 + 17*i/200 + 1 ); - } - - return 1; - }, - - _precision: function() { - var precision = this._precisionOf( this.options.step ); - if ( this.options.min !== null ) { - precision = Math.max( precision, this._precisionOf( this.options.min ) ); - } - return precision; - }, - - _precisionOf: function( num ) { - var str = num.toString(), - decimal = str.indexOf( "." ); - return decimal === -1 ? 0 : str.length - decimal - 1; - }, - - _adjustValue: function( value ) { - var base, aboveMin, - options = this.options; - - // make sure we're at a valid step - // - find out where we are relative to the base (min or 0) - base = options.min !== null ? options.min : 0; - aboveMin = value - base; - // - round to the nearest step - aboveMin = Math.round(aboveMin / options.step) * options.step; - // - rounding is based on 0, so adjust back to our base - value = base + aboveMin; - - // fix precision from bad JS floating point math - value = parseFloat( value.toFixed( this._precision() ) ); - - // clamp the value - if ( options.max !== null && value > options.max) { - return options.max; - } - if ( options.min !== null && value < options.min ) { - return options.min; - } - - return value; - }, - - _stop: function( event ) { - if ( !this.spinning ) { - return; - } - - clearTimeout( this.timer ); - clearTimeout( this.mousewheelTimer ); - this.counter = 0; - this.spinning = false; - this._trigger( "stop", event ); - }, - - _setOption: function( key, value ) { - if ( key === "culture" || key === "numberFormat" ) { - var prevValue = this._parse( this.element.val() ); - this.options[ key ] = value; - this.element.val( this._format( prevValue ) ); - return; - } - - if ( key === "max" || key === "min" || key === "step" ) { - if ( typeof value === "string" ) { - value = this._parse( value ); - } - } - if ( key === "icons" ) { - this.buttons.first().find( ".ui-icon" ) - .removeClass( this.options.icons.up ) - .addClass( value.up ); - this.buttons.last().find( ".ui-icon" ) - .removeClass( this.options.icons.down ) - .addClass( value.down ); - } - - this._super( key, value ); - - if ( key === "disabled" ) { - if ( value ) { - this.element.prop( "disabled", true ); - this.buttons.button( "disable" ); - } else { - this.element.prop( "disabled", false ); - this.buttons.button( "enable" ); - } - } - }, - - _setOptions: modifier(function( options ) { - this._super( options ); - this._value( this.element.val() ); - }), - - _parse: function( val ) { - if ( typeof val === "string" && val !== "" ) { - val = window.Globalize && this.options.numberFormat ? - Globalize.parseFloat( val, 10, this.options.culture ) : +val; - } - return val === "" || isNaN( val ) ? null : val; - }, - - _format: function( value ) { - if ( value === "" ) { - return ""; - } - return window.Globalize && this.options.numberFormat ? - Globalize.format( value, this.options.numberFormat, this.options.culture ) : - value; - }, - - _refresh: function() { - this.element.attr({ - "aria-valuemin": this.options.min, - "aria-valuemax": this.options.max, - // TODO: what should we do with values that can't be parsed? - "aria-valuenow": this._parse( this.element.val() ) - }); - }, - - // update the value without triggering change - _value: function( value, allowAny ) { - var parsed; - if ( value !== "" ) { - parsed = this._parse( value ); - if ( parsed !== null ) { - if ( !allowAny ) { - parsed = this._adjustValue( parsed ); - } - value = this._format( parsed ); - } - } - this.element.val( value ); - this._refresh(); - }, - - _destroy: function() { - this.element - .removeClass( "ui-spinner-input" ) - .prop( "disabled", false ) - .removeAttr( "autocomplete" ) - .removeAttr( "role" ) - .removeAttr( "aria-valuemin" ) - .removeAttr( "aria-valuemax" ) - .removeAttr( "aria-valuenow" ); - this.uiSpinner.replaceWith( this.element ); - }, - - stepUp: modifier(function( steps ) { - this._stepUp( steps ); - }), - _stepUp: function( steps ) { - if ( this._start() ) { - this._spin( (steps || 1) * this.options.step ); - this._stop(); - } - }, - - stepDown: modifier(function( steps ) { - this._stepDown( steps ); - }), - _stepDown: function( steps ) { - if ( this._start() ) { - this._spin( (steps || 1) * -this.options.step ); - this._stop(); - } - }, - - pageUp: modifier(function( pages ) { - this._stepUp( (pages || 1) * this.options.page ); - }), - - pageDown: modifier(function( pages ) { - this._stepDown( (pages || 1) * this.options.page ); - }), - - value: function( newVal ) { - if ( !arguments.length ) { - return this._parse( this.element.val() ); - } - modifier( this._value ).call( this, newVal ); - }, - - widget: function() { - return this.uiSpinner; - } -}); - -}( jQuery ) ); - -(function( $, undefined ) { - -var tabId = 0, - rhash = /#.*$/; - -function getNextTabId() { - return ++tabId; -} - -function isLocal( anchor ) { - // support: IE7 - // IE7 doesn't normalize the href property when set via script (#9317) - anchor = anchor.cloneNode( false ); - - return anchor.hash.length > 1 && - decodeURIComponent( anchor.href.replace( rhash, "" ) ) === - decodeURIComponent( location.href.replace( rhash, "" ) ); -} - -$.widget( "ui.tabs", { - version: "1.10.4", - delay: 300, - options: { - active: null, - collapsible: false, - event: "click", - heightStyle: "content", - hide: null, - show: null, - - // callbacks - activate: null, - beforeActivate: null, - beforeLoad: null, - load: null - }, - - _create: function() { - var that = this, - options = this.options; - - this.running = false; - - this.element - .addClass( "ui-tabs ui-widget ui-widget-content ui-corner-all" ) - .toggleClass( "ui-tabs-collapsible", options.collapsible ) - // Prevent users from focusing disabled tabs via click - .delegate( ".ui-tabs-nav > li", "mousedown" + this.eventNamespace, function( event ) { - if ( $( this ).is( ".ui-state-disabled" ) ) { - event.preventDefault(); - } - }) - // support: IE <9 - // Preventing the default action in mousedown doesn't prevent IE - // from focusing the element, so if the anchor gets focused, blur. - // We don't have to worry about focusing the previously focused - // element since clicking on a non-focusable element should focus - // the body anyway. - .delegate( ".ui-tabs-anchor", "focus" + this.eventNamespace, function() { - if ( $( this ).closest( "li" ).is( ".ui-state-disabled" ) ) { - this.blur(); - } - }); - - this._processTabs(); - options.active = this._initialActive(); - - // Take disabling tabs via class attribute from HTML - // into account and update option properly. - if ( $.isArray( options.disabled ) ) { - options.disabled = $.unique( options.disabled.concat( - $.map( this.tabs.filter( ".ui-state-disabled" ), function( li ) { - return that.tabs.index( li ); - }) - ) ).sort(); - } - - // check for length avoids error when initializing empty list - if ( this.options.active !== false && this.anchors.length ) { - this.active = this._findActive( options.active ); - } else { - this.active = $(); - } - - this._refresh(); - - if ( this.active.length ) { - this.load( options.active ); - } - }, - - _initialActive: function() { - var active = this.options.active, - collapsible = this.options.collapsible, - locationHash = location.hash.substring( 1 ); - - if ( active === null ) { - // check the fragment identifier in the URL - if ( locationHash ) { - this.tabs.each(function( i, tab ) { - if ( $( tab ).attr( "aria-controls" ) === locationHash ) { - active = i; - return false; - } - }); - } - - // check for a tab marked active via a class - if ( active === null ) { - active = this.tabs.index( this.tabs.filter( ".ui-tabs-active" ) ); - } - - // no active tab, set to false - if ( active === null || active === -1 ) { - active = this.tabs.length ? 0 : false; - } - } - - // handle numbers: negative, out of range - if ( active !== false ) { - active = this.tabs.index( this.tabs.eq( active ) ); - if ( active === -1 ) { - active = collapsible ? false : 0; - } - } - - // don't allow collapsible: false and active: false - if ( !collapsible && active === false && this.anchors.length ) { - active = 0; - } - - return active; - }, - - _getCreateEventData: function() { - return { - tab: this.active, - panel: !this.active.length ? $() : this._getPanelForTab( this.active ) - }; - }, - - _tabKeydown: function( event ) { - var focusedTab = $( this.document[0].activeElement ).closest( "li" ), - selectedIndex = this.tabs.index( focusedTab ), - goingForward = true; - - if ( this._handlePageNav( event ) ) { - return; - } - - switch ( event.keyCode ) { - case $.ui.keyCode.RIGHT: - case $.ui.keyCode.DOWN: - selectedIndex++; - break; - case $.ui.keyCode.UP: - case $.ui.keyCode.LEFT: - goingForward = false; - selectedIndex--; - break; - case $.ui.keyCode.END: - selectedIndex = this.anchors.length - 1; - break; - case $.ui.keyCode.HOME: - selectedIndex = 0; - break; - case $.ui.keyCode.SPACE: - // Activate only, no collapsing - event.preventDefault(); - clearTimeout( this.activating ); - this._activate( selectedIndex ); - return; - case $.ui.keyCode.ENTER: - // Toggle (cancel delayed activation, allow collapsing) - event.preventDefault(); - clearTimeout( this.activating ); - // Determine if we should collapse or activate - this._activate( selectedIndex === this.options.active ? false : selectedIndex ); - return; - default: - return; - } - - // Focus the appropriate tab, based on which key was pressed - event.preventDefault(); - clearTimeout( this.activating ); - selectedIndex = this._focusNextTab( selectedIndex, goingForward ); - - // Navigating with control key will prevent automatic activation - if ( !event.ctrlKey ) { - // Update aria-selected immediately so that AT think the tab is already selected. - // Otherwise AT may confuse the user by stating that they need to activate the tab, - // but the tab will already be activated by the time the announcement finishes. - focusedTab.attr( "aria-selected", "false" ); - this.tabs.eq( selectedIndex ).attr( "aria-selected", "true" ); - - this.activating = this._delay(function() { - this.option( "active", selectedIndex ); - }, this.delay ); - } - }, - - _panelKeydown: function( event ) { - if ( this._handlePageNav( event ) ) { - return; - } - - // Ctrl+up moves focus to the current tab - if ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) { - event.preventDefault(); - this.active.focus(); - } - }, - - // Alt+page up/down moves focus to the previous/next tab (and activates) - _handlePageNav: function( event ) { - if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) { - this._activate( this._focusNextTab( this.options.active - 1, false ) ); - return true; - } - if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) { - this._activate( this._focusNextTab( this.options.active + 1, true ) ); - return true; - } - }, - - _findNextTab: function( index, goingForward ) { - var lastTabIndex = this.tabs.length - 1; - - function constrain() { - if ( index > lastTabIndex ) { - index = 0; - } - if ( index < 0 ) { - index = lastTabIndex; - } - return index; - } - - while ( $.inArray( constrain(), this.options.disabled ) !== -1 ) { - index = goingForward ? index + 1 : index - 1; - } - - return index; - }, - - _focusNextTab: function( index, goingForward ) { - index = this._findNextTab( index, goingForward ); - this.tabs.eq( index ).focus(); - return index; - }, - - _setOption: function( key, value ) { - if ( key === "active" ) { - // _activate() will handle invalid values and update this.options - this._activate( value ); - return; - } - - if ( key === "disabled" ) { - // don't use the widget factory's disabled handling - this._setupDisabled( value ); - return; - } - - this._super( key, value); - - if ( key === "collapsible" ) { - this.element.toggleClass( "ui-tabs-collapsible", value ); - // Setting collapsible: false while collapsed; open first panel - if ( !value && this.options.active === false ) { - this._activate( 0 ); - } - } - - if ( key === "event" ) { - this._setupEvents( value ); - } - - if ( key === "heightStyle" ) { - this._setupHeightStyle( value ); - } - }, - - _tabId: function( tab ) { - return tab.attr( "aria-controls" ) || "ui-tabs-" + getNextTabId(); - }, - - _sanitizeSelector: function( hash ) { - return hash ? hash.replace( /[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g, "\\$&" ) : ""; - }, - - refresh: function() { - var options = this.options, - lis = this.tablist.children( ":has(a[href])" ); - - // get disabled tabs from class attribute from HTML - // this will get converted to a boolean if needed in _refresh() - options.disabled = $.map( lis.filter( ".ui-state-disabled" ), function( tab ) { - return lis.index( tab ); - }); - - this._processTabs(); - - // was collapsed or no tabs - if ( options.active === false || !this.anchors.length ) { - options.active = false; - this.active = $(); - // was active, but active tab is gone - } else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) { - // all remaining tabs are disabled - if ( this.tabs.length === options.disabled.length ) { - options.active = false; - this.active = $(); - // activate previous tab - } else { - this._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) ); - } - // was active, active tab still exists - } else { - // make sure active index is correct - options.active = this.tabs.index( this.active ); - } - - this._refresh(); - }, - - _refresh: function() { - this._setupDisabled( this.options.disabled ); - this._setupEvents( this.options.event ); - this._setupHeightStyle( this.options.heightStyle ); - - this.tabs.not( this.active ).attr({ - "aria-selected": "false", - tabIndex: -1 - }); - this.panels.not( this._getPanelForTab( this.active ) ) - .hide() - .attr({ - "aria-expanded": "false", - "aria-hidden": "true" - }); - - // Make sure one tab is in the tab order - if ( !this.active.length ) { - this.tabs.eq( 0 ).attr( "tabIndex", 0 ); - } else { - this.active - .addClass( "ui-tabs-active ui-state-active" ) - .attr({ - "aria-selected": "true", - tabIndex: 0 - }); - this._getPanelForTab( this.active ) - .show() - .attr({ - "aria-expanded": "true", - "aria-hidden": "false" - }); - } - }, - - _processTabs: function() { - var that = this; - - this.tablist = this._getList() - .addClass( "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" ) - .attr( "role", "tablist" ); - - this.tabs = this.tablist.find( "> li:has(a[href])" ) - .addClass( "ui-state-default ui-corner-top" ) - .attr({ - role: "tab", - tabIndex: -1 - }); - - this.anchors = this.tabs.map(function() { - return $( "a", this )[ 0 ]; - }) - .addClass( "ui-tabs-anchor" ) - .attr({ - role: "presentation", - tabIndex: -1 - }); - - this.panels = $(); - - this.anchors.each(function( i, anchor ) { - var selector, panel, panelId, - anchorId = $( anchor ).uniqueId().attr( "id" ), - tab = $( anchor ).closest( "li" ), - originalAriaControls = tab.attr( "aria-controls" ); - - // inline tab - if ( isLocal( anchor ) ) { - selector = anchor.hash; - panel = that.element.find( that._sanitizeSelector( selector ) ); - // remote tab - } else { - panelId = that._tabId( tab ); - selector = "#" + panelId; - panel = that.element.find( selector ); - if ( !panel.length ) { - panel = that._createPanel( panelId ); - panel.insertAfter( that.panels[ i - 1 ] || that.tablist ); - } - panel.attr( "aria-live", "polite" ); - } - - if ( panel.length) { - that.panels = that.panels.add( panel ); - } - if ( originalAriaControls ) { - tab.data( "ui-tabs-aria-controls", originalAriaControls ); - } - tab.attr({ - "aria-controls": selector.substring( 1 ), - "aria-labelledby": anchorId - }); - panel.attr( "aria-labelledby", anchorId ); - }); - - this.panels - .addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" ) - .attr( "role", "tabpanel" ); - }, - - // allow overriding how to find the list for rare usage scenarios (#7715) - _getList: function() { - return this.tablist || this.element.find( "ol,ul" ).eq( 0 ); - }, - - _createPanel: function( id ) { - return $( "<div>" ) - .attr( "id", id ) - .addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" ) - .data( "ui-tabs-destroy", true ); - }, - - _setupDisabled: function( disabled ) { - if ( $.isArray( disabled ) ) { - if ( !disabled.length ) { - disabled = false; - } else if ( disabled.length === this.anchors.length ) { - disabled = true; - } - } - - // disable tabs - for ( var i = 0, li; ( li = this.tabs[ i ] ); i++ ) { - if ( disabled === true || $.inArray( i, disabled ) !== -1 ) { - $( li ) - .addClass( "ui-state-disabled" ) - .attr( "aria-disabled", "true" ); - } else { - $( li ) - .removeClass( "ui-state-disabled" ) - .removeAttr( "aria-disabled" ); - } - } - - this.options.disabled = disabled; - }, - - _setupEvents: function( event ) { - var events = { - click: function( event ) { - event.preventDefault(); - } - }; - if ( event ) { - $.each( event.split(" "), function( index, eventName ) { - events[ eventName ] = "_eventHandler"; - }); - } - - this._off( this.anchors.add( this.tabs ).add( this.panels ) ); - this._on( this.anchors, events ); - this._on( this.tabs, { keydown: "_tabKeydown" } ); - this._on( this.panels, { keydown: "_panelKeydown" } ); - - this._focusable( this.tabs ); - this._hoverable( this.tabs ); - }, - - _setupHeightStyle: function( heightStyle ) { - var maxHeight, - parent = this.element.parent(); - - if ( heightStyle === "fill" ) { - maxHeight = parent.height(); - maxHeight -= this.element.outerHeight() - this.element.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.element.children().not( this.panels ).each(function() { - maxHeight -= $( this ).outerHeight( true ); - }); - - this.panels.each(function() { - $( this ).height( Math.max( 0, maxHeight - - $( this ).innerHeight() + $( this ).height() ) ); - }) - .css( "overflow", "auto" ); - } else if ( heightStyle === "auto" ) { - maxHeight = 0; - this.panels.each(function() { - maxHeight = Math.max( maxHeight, $( this ).height( "" ).height() ); - }).height( maxHeight ); - } - }, - - _eventHandler: function( event ) { - var options = this.options, - active = this.active, - anchor = $( event.currentTarget ), - tab = anchor.closest( "li" ), - clickedIsActive = tab[ 0 ] === active[ 0 ], - collapsing = clickedIsActive && options.collapsible, - toShow = collapsing ? $() : this._getPanelForTab( tab ), - toHide = !active.length ? $() : this._getPanelForTab( active ), - eventData = { - oldTab: active, - oldPanel: toHide, - newTab: collapsing ? $() : tab, - newPanel: toShow - }; - - event.preventDefault(); - - if ( tab.hasClass( "ui-state-disabled" ) || - // tab is already loading - tab.hasClass( "ui-tabs-loading" ) || - // can't switch durning an animation - this.running || - // 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.tabs.index( tab ); - - this.active = clickedIsActive ? $() : tab; - if ( this.xhr ) { - this.xhr.abort(); - } - - if ( !toHide.length && !toShow.length ) { - $.error( "jQuery UI Tabs: Mismatching fragment identifier." ); - } - - if ( toShow.length ) { - this.load( this.tabs.index( tab ), event ); - } - this._toggle( event, eventData ); - }, - - // handles show/hide for selecting tabs - _toggle: function( event, eventData ) { - var that = this, - toShow = eventData.newPanel, - toHide = eventData.oldPanel; - - this.running = true; - - function complete() { - that.running = false; - that._trigger( "activate", event, eventData ); - } - - function show() { - eventData.newTab.closest( "li" ).addClass( "ui-tabs-active ui-state-active" ); - - if ( toShow.length && that.options.show ) { - that._show( toShow, that.options.show, complete ); - } else { - toShow.show(); - complete(); - } - } - - // start out by hiding, then showing, then completing - if ( toHide.length && this.options.hide ) { - this._hide( toHide, this.options.hide, function() { - eventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" ); - show(); - }); - } else { - eventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" ); - toHide.hide(); - show(); - } - - toHide.attr({ - "aria-expanded": "false", - "aria-hidden": "true" - }); - eventData.oldTab.attr( "aria-selected", "false" ); - // If we're switching tabs, remove the old tab from the tab order. - // If we're opening from collapsed state, remove the previous tab from the tab order. - // If we're collapsing, then keep the collapsing tab in the tab order. - if ( toShow.length && toHide.length ) { - eventData.oldTab.attr( "tabIndex", -1 ); - } else if ( toShow.length ) { - this.tabs.filter(function() { - return $( this ).attr( "tabIndex" ) === 0; - }) - .attr( "tabIndex", -1 ); - } - - toShow.attr({ - "aria-expanded": "true", - "aria-hidden": "false" - }); - eventData.newTab.attr({ - "aria-selected": "true", - tabIndex: 0 - }); - }, - - _activate: function( index ) { - var anchor, - active = this._findActive( index ); - - // trying to activate the already active panel - if ( active[ 0 ] === this.active[ 0 ] ) { - return; - } - - // trying to collapse, simulate a click on the current active header - if ( !active.length ) { - active = this.active; - } - - anchor = active.find( ".ui-tabs-anchor" )[ 0 ]; - this._eventHandler({ - target: anchor, - currentTarget: anchor, - preventDefault: $.noop - }); - }, - - _findActive: function( index ) { - return index === false ? $() : this.tabs.eq( index ); - }, - - _getIndex: function( index ) { - // meta-function to give users option to provide a href string instead of a numerical index. - if ( typeof index === "string" ) { - index = this.anchors.index( this.anchors.filter( "[href$='" + index + "']" ) ); - } - - return index; - }, - - _destroy: function() { - if ( this.xhr ) { - this.xhr.abort(); - } - - this.element.removeClass( "ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible" ); - - this.tablist - .removeClass( "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" ) - .removeAttr( "role" ); - - this.anchors - .removeClass( "ui-tabs-anchor" ) - .removeAttr( "role" ) - .removeAttr( "tabIndex" ) - .removeUniqueId(); - - this.tabs.add( this.panels ).each(function() { - if ( $.data( this, "ui-tabs-destroy" ) ) { - $( this ).remove(); - } else { - $( this ) - .removeClass( "ui-state-default ui-state-active ui-state-disabled " + - "ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel" ) - .removeAttr( "tabIndex" ) - .removeAttr( "aria-live" ) - .removeAttr( "aria-busy" ) - .removeAttr( "aria-selected" ) - .removeAttr( "aria-labelledby" ) - .removeAttr( "aria-hidden" ) - .removeAttr( "aria-expanded" ) - .removeAttr( "role" ); - } - }); - - this.tabs.each(function() { - var li = $( this ), - prev = li.data( "ui-tabs-aria-controls" ); - if ( prev ) { - li - .attr( "aria-controls", prev ) - .removeData( "ui-tabs-aria-controls" ); - } else { - li.removeAttr( "aria-controls" ); - } - }); - - this.panels.show(); - - if ( this.options.heightStyle !== "content" ) { - this.panels.css( "height", "" ); - } - }, - - enable: function( index ) { - var disabled = this.options.disabled; - if ( disabled === false ) { - return; - } - - if ( index === undefined ) { - disabled = false; - } else { - index = this._getIndex( index ); - if ( $.isArray( disabled ) ) { - disabled = $.map( disabled, function( num ) { - return num !== index ? num : null; - }); - } else { - disabled = $.map( this.tabs, function( li, num ) { - return num !== index ? num : null; - }); - } - } - this._setupDisabled( disabled ); - }, - - disable: function( index ) { - var disabled = this.options.disabled; - if ( disabled === true ) { - return; - } - - if ( index === undefined ) { - disabled = true; - } else { - index = this._getIndex( index ); - if ( $.inArray( index, disabled ) !== -1 ) { - return; - } - if ( $.isArray( disabled ) ) { - disabled = $.merge( [ index ], disabled ).sort(); - } else { - disabled = [ index ]; - } - } - this._setupDisabled( disabled ); - }, - - load: function( index, event ) { - index = this._getIndex( index ); - var that = this, - tab = this.tabs.eq( index ), - anchor = tab.find( ".ui-tabs-anchor" ), - panel = this._getPanelForTab( tab ), - eventData = { - tab: tab, - panel: panel - }; - - // not remote - if ( isLocal( anchor[ 0 ] ) ) { - return; - } - - this.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) ); - - // support: jQuery <1.8 - // jQuery <1.8 returns false if the request is canceled in beforeSend, - // but as of 1.8, $.ajax() always returns a jqXHR object. - if ( this.xhr && this.xhr.statusText !== "canceled" ) { - tab.addClass( "ui-tabs-loading" ); - panel.attr( "aria-busy", "true" ); - - this.xhr - .success(function( response ) { - // support: jQuery <1.8 - // http://bugs.jquery.com/ticket/11778 - setTimeout(function() { - panel.html( response ); - that._trigger( "load", event, eventData ); - }, 1 ); - }) - .complete(function( jqXHR, status ) { - // support: jQuery <1.8 - // http://bugs.jquery.com/ticket/11778 - setTimeout(function() { - if ( status === "abort" ) { - that.panels.stop( false, true ); - } - - tab.removeClass( "ui-tabs-loading" ); - panel.removeAttr( "aria-busy" ); - - if ( jqXHR === that.xhr ) { - delete that.xhr; - } - }, 1 ); - }); - } - }, - - _ajaxSettings: function( anchor, event, eventData ) { - var that = this; - return { - url: anchor.attr( "href" ), - beforeSend: function( jqXHR, settings ) { - return that._trigger( "beforeLoad", event, - $.extend( { jqXHR : jqXHR, ajaxSettings: settings }, eventData ) ); - } - }; - }, - - _getPanelForTab: function( tab ) { - var id = $( tab ).attr( "aria-controls" ); - return this.element.find( this._sanitizeSelector( "#" + id ) ); - } -}); - -})( jQuery ); - -(function( $ ) { - -var increments = 0; - -function addDescribedBy( elem, id ) { - var describedby = (elem.attr( "aria-describedby" ) || "").split( /\s+/ ); - describedby.push( id ); - elem - .data( "ui-tooltip-id", id ) - .attr( "aria-describedby", $.trim( describedby.join( " " ) ) ); -} - -function removeDescribedBy( elem ) { - var id = elem.data( "ui-tooltip-id" ), - describedby = (elem.attr( "aria-describedby" ) || "").split( /\s+/ ), - index = $.inArray( id, describedby ); - if ( index !== -1 ) { - describedby.splice( index, 1 ); - } - - elem.removeData( "ui-tooltip-id" ); - describedby = $.trim( describedby.join( " " ) ); - if ( describedby ) { - elem.attr( "aria-describedby", describedby ); - } else { - elem.removeAttr( "aria-describedby" ); - } -} - -$.widget( "ui.tooltip", { - version: "1.10.4", - options: { - content: function() { - // support: IE<9, Opera in jQuery <1.7 - // .text() can't accept undefined, so coerce to a string - var title = $( this ).attr( "title" ) || ""; - // Escape title, since we're going from an attribute to raw HTML - return $( "<a>" ).text( title ).html(); - }, - hide: true, - // Disabled elements have inconsistent behavior across browsers (#8661) - items: "[title]:not([disabled])", - position: { - my: "left top+15", - at: "left bottom", - collision: "flipfit flip" - }, - show: true, - tooltipClass: null, - track: false, - - // callbacks - close: null, - open: null - }, - - _create: function() { - this._on({ - mouseover: "open", - focusin: "open" - }); - - // IDs of generated tooltips, needed for destroy - this.tooltips = {}; - // IDs of parent tooltips where we removed the title attribute - this.parents = {}; - - if ( this.options.disabled ) { - this._disable(); - } - }, - - _setOption: function( key, value ) { - var that = this; - - if ( key === "disabled" ) { - this[ value ? "_disable" : "_enable" ](); - this.options[ key ] = value; - // disable element style changes - return; - } - - this._super( key, value ); - - if ( key === "content" ) { - $.each( this.tooltips, function( id, element ) { - that._updateContent( element ); - }); - } - }, - - _disable: function() { - var that = this; - - // close open tooltips - $.each( this.tooltips, function( id, element ) { - var event = $.Event( "blur" ); - event.target = event.currentTarget = element[0]; - that.close( event, true ); - }); - - // remove title attributes to prevent native tooltips - this.element.find( this.options.items ).addBack().each(function() { - var element = $( this ); - if ( element.is( "[title]" ) ) { - element - .data( "ui-tooltip-title", element.attr( "title" ) ) - .attr( "title", "" ); - } - }); - }, - - _enable: function() { - // restore title attributes - this.element.find( this.options.items ).addBack().each(function() { - var element = $( this ); - if ( element.data( "ui-tooltip-title" ) ) { - element.attr( "title", element.data( "ui-tooltip-title" ) ); - } - }); - }, - - open: function( event ) { - var that = this, - target = $( event ? event.target : this.element ) - // we need closest here due to mouseover bubbling, - // but always pointing at the same event target - .closest( this.options.items ); - - // No element to show a tooltip for or the tooltip is already open - if ( !target.length || target.data( "ui-tooltip-id" ) ) { - return; - } - - if ( target.attr( "title" ) ) { - target.data( "ui-tooltip-title", target.attr( "title" ) ); - } - - target.data( "ui-tooltip-open", true ); - - // kill parent tooltips, custom or native, for hover - if ( event && event.type === "mouseover" ) { - target.parents().each(function() { - var parent = $( this ), - blurEvent; - if ( parent.data( "ui-tooltip-open" ) ) { - blurEvent = $.Event( "blur" ); - blurEvent.target = blurEvent.currentTarget = this; - that.close( blurEvent, true ); - } - if ( parent.attr( "title" ) ) { - parent.uniqueId(); - that.parents[ this.id ] = { - element: this, - title: parent.attr( "title" ) - }; - parent.attr( "title", "" ); - } - }); - } - - this._updateContent( target, event ); - }, - - _updateContent: function( target, event ) { - var content, - contentOption = this.options.content, - that = this, - eventType = event ? event.type : null; - - if ( typeof contentOption === "string" ) { - return this._open( event, target, contentOption ); - } - - content = contentOption.call( target[0], function( response ) { - // ignore async response if tooltip was closed already - if ( !target.data( "ui-tooltip-open" ) ) { - return; - } - // IE may instantly serve a cached response for ajax requests - // delay this call to _open so the other call to _open runs first - that._delay(function() { - // jQuery creates a special event for focusin when it doesn't - // exist natively. To improve performance, the native event - // object is reused and the type is changed. Therefore, we can't - // rely on the type being correct after the event finished - // bubbling, so we set it back to the previous value. (#8740) - if ( event ) { - event.type = eventType; - } - this._open( event, target, response ); - }); - }); - if ( content ) { - this._open( event, target, content ); - } - }, - - _open: function( event, target, content ) { - var tooltip, events, delayedShow, - positionOption = $.extend( {}, this.options.position ); - - if ( !content ) { - return; - } - - // Content can be updated multiple times. If the tooltip already - // exists, then just update the content and bail. - tooltip = this._find( target ); - if ( tooltip.length ) { - tooltip.find( ".ui-tooltip-content" ).html( content ); - return; - } - - // if we have a title, clear it to prevent the native tooltip - // we have to check first to avoid defining a title if none exists - // (we don't want to cause an element to start matching [title]) - // - // We use removeAttr only for key events, to allow IE to export the correct - // accessible attributes. For mouse events, set to empty string to avoid - // native tooltip showing up (happens only when removing inside mouseover). - if ( target.is( "[title]" ) ) { - if ( event && event.type === "mouseover" ) { - target.attr( "title", "" ); - } else { - target.removeAttr( "title" ); - } - } - - tooltip = this._tooltip( target ); - addDescribedBy( target, tooltip.attr( "id" ) ); - tooltip.find( ".ui-tooltip-content" ).html( content ); - - function position( event ) { - positionOption.of = event; - if ( tooltip.is( ":hidden" ) ) { - return; - } - tooltip.position( positionOption ); - } - if ( this.options.track && event && /^mouse/.test( event.type ) ) { - this._on( this.document, { - mousemove: position - }); - // trigger once to override element-relative positioning - position( event ); - } else { - tooltip.position( $.extend({ - of: target - }, this.options.position ) ); - } - - tooltip.hide(); - - this._show( tooltip, this.options.show ); - // Handle tracking tooltips that are shown with a delay (#8644). As soon - // as the tooltip is visible, position the tooltip using the most recent - // event. - if ( this.options.show && this.options.show.delay ) { - delayedShow = this.delayedShow = setInterval(function() { - if ( tooltip.is( ":visible" ) ) { - position( positionOption.of ); - clearInterval( delayedShow ); - } - }, $.fx.interval ); - } - - this._trigger( "open", event, { tooltip: tooltip } ); - - events = { - keyup: function( event ) { - if ( event.keyCode === $.ui.keyCode.ESCAPE ) { - var fakeEvent = $.Event(event); - fakeEvent.currentTarget = target[0]; - this.close( fakeEvent, true ); - } - }, - remove: function() { - this._removeTooltip( tooltip ); - } - }; - if ( !event || event.type === "mouseover" ) { - events.mouseleave = "close"; - } - if ( !event || event.type === "focusin" ) { - events.focusout = "close"; - } - this._on( true, target, events ); - }, - - close: function( event ) { - var that = this, - target = $( event ? event.currentTarget : this.element ), - tooltip = this._find( target ); - - // disabling closes the tooltip, so we need to track when we're closing - // to avoid an infinite loop in case the tooltip becomes disabled on close - if ( this.closing ) { - return; - } - - // Clear the interval for delayed tracking tooltips - clearInterval( this.delayedShow ); - - // only set title if we had one before (see comment in _open()) - if ( target.data( "ui-tooltip-title" ) ) { - target.attr( "title", target.data( "ui-tooltip-title" ) ); - } - - removeDescribedBy( target ); - - tooltip.stop( true ); - this._hide( tooltip, this.options.hide, function() { - that._removeTooltip( $( this ) ); - }); - - target.removeData( "ui-tooltip-open" ); - this._off( target, "mouseleave focusout keyup" ); - // Remove 'remove' binding only on delegated targets - if ( target[0] !== this.element[0] ) { - this._off( target, "remove" ); - } - this._off( this.document, "mousemove" ); - - if ( event && event.type === "mouseleave" ) { - $.each( this.parents, function( id, parent ) { - $( parent.element ).attr( "title", parent.title ); - delete that.parents[ id ]; - }); - } - - this.closing = true; - this._trigger( "close", event, { tooltip: tooltip } ); - this.closing = false; - }, - - _tooltip: function( element ) { - var id = "ui-tooltip-" + increments++, - tooltip = $( "<div>" ) - .attr({ - id: id, - role: "tooltip" - }) - .addClass( "ui-tooltip ui-widget ui-corner-all ui-widget-content " + - ( this.options.tooltipClass || "" ) ); - $( "<div>" ) - .addClass( "ui-tooltip-content" ) - .appendTo( tooltip ); - tooltip.appendTo( this.document[0].body ); - this.tooltips[ id ] = element; - return tooltip; - }, - - _find: function( target ) { - var id = target.data( "ui-tooltip-id" ); - return id ? $( "#" + id ) : $(); - }, - - _removeTooltip: function( tooltip ) { - tooltip.remove(); - delete this.tooltips[ tooltip.attr( "id" ) ]; - }, - - _destroy: function() { - var that = this; - - // close open tooltips - $.each( this.tooltips, function( id, element ) { - // Delegate to close method to handle common cleanup - var event = $.Event( "blur" ); - event.target = event.currentTarget = element[0]; - that.close( event, true ); - - // Remove immediately; destroying an open tooltip doesn't use the - // hide animation - $( "#" + id ).remove(); - - // Restore the title - if ( element.data( "ui-tooltip-title" ) ) { - element.attr( "title", element.data( "ui-tooltip-title" ) ); - element.removeData( "ui-tooltip-title" ); - } - }); - } -}); - -}( jQuery ) ); diff --git a/assets/js/plugins/jquery-ui/jquery-ui.min.css b/assets/js/plugins/jquery-ui/jquery-ui.min.css deleted file mode 100644 index 98796382..00000000 --- a/assets/js/plugins/jquery-ui/jquery-ui.min.css +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Includes: jquery.ui.core.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css, jquery.ui.theme.css -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ .ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin-top:2px;padding:.5em .5em .5em .7em;min-height:0}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-noicons{padding-left:.7em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:700;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:0;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:0}.ui-menu .ui-menu{margin-top:-3px;position:absolute}.ui-menu .ui-menu-item{margin:0;padding:0;width:100%;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-divider{margin:5px -2px 5px -2px;height:0;font-size:0;line-height:0;border-width:1px 0 0}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;min-height:0;font-weight:400}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:400;margin:-1px}.ui-menu .ui-state-disabled{font-weight:400;margin:.4em 0 .2em;line-height:1.5}.ui-menu .ui-state-disabled a{cursor:default}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em}.ui-menu .ui-menu-icon{position:static;float:right}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url(images/animated-overlay.gif);height:100%;filter:alpha(opacity=25);opacity:.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted #000}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:0;background:0;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:0;border-bottom:0;border-right:0}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:0}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;color:#222;font-weight:700}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;font-weight:400;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;font-weight:400;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:400;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:700}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:400}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_cd0a0a_256x240.png)}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px} \ No newline at end of file diff --git a/assets/js/plugins/jquery-ui/jquery-ui.min.js b/assets/js/plugins/jquery-ui/jquery-ui.min.js deleted file mode 100644 index 6afd6154..00000000 --- a/assets/js/plugins/jquery-ui/jquery-ui.min.js +++ /dev/null @@ -1,12 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 -* http://jqueryui.com -* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.sortable.js, jquery.ui.effect.js, jquery.ui.accordion.js, jquery.ui.autocomplete.js, jquery.ui.button.js, jquery.ui.datepicker.js, jquery.ui.dialog.js, jquery.ui.effect-blind.js, jquery.ui.effect-bounce.js, jquery.ui.effect-clip.js, jquery.ui.effect-drop.js, jquery.ui.effect-explode.js, jquery.ui.effect-fade.js, jquery.ui.effect-fold.js, jquery.ui.effect-highlight.js, jquery.ui.effect-pulsate.js, jquery.ui.effect-scale.js, jquery.ui.effect-shake.js, jquery.ui.effect-slide.js, jquery.ui.effect-transfer.js, jquery.ui.menu.js, jquery.ui.position.js, jquery.ui.progressbar.js, jquery.ui.slider.js, jquery.ui.spinner.js, jquery.ui.tabs.js, jquery.ui.tooltip.js -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -(function(t,e){function i(e,i){var n,o,a,r=e.nodeName.toLowerCase();return"area"===r?(n=e.parentNode,o=n.name,e.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap=#"+o+"]")[0],!!a&&s(a)):!1):(/input|select|textarea|button|object/.test(r)?!e.disabled:"a"===r?e.href||i:i)&&s(e)}function s(e){return t.expr.filters.visible(e)&&!t(e).parents().addBack().filter(function(){return"hidden"===t.css(this,"visibility")}).length}var n=0,o=/^ui-id-\d+$/;t.ui=t.ui||{},t.extend(t.ui,{version:"1.10.4",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),t.fn.extend({focus:function(e){return function(i,s){return"number"==typeof i?this.each(function(){var e=this;setTimeout(function(){t(e).focus(),s&&s.call(e)},i)}):e.apply(this,arguments)}}(t.fn.focus),scrollParent:function(){var e;return e=t.ui.ie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(t.css(this,"position"))&&/(auto|scroll)/.test(t.css(this,"overflow")+t.css(this,"overflow-y")+t.css(this,"overflow-x"))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(t.css(this,"overflow")+t.css(this,"overflow-y")+t.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!e.length?t(document):e},zIndex:function(i){if(i!==e)return this.css("zIndex",i);if(this.length)for(var s,n,o=t(this[0]);o.length&&o[0]!==document;){if(s=o.css("position"),("absolute"===s||"relative"===s||"fixed"===s)&&(n=parseInt(o.css("zIndex"),10),!isNaN(n)&&0!==n))return n;o=o.parent()}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++n)})},removeUniqueId:function(){return this.each(function(){o.test(this.id)&&t(this).removeAttr("id")})}}),t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])},focusable:function(e){return i(e,!isNaN(t.attr(e,"tabindex")))},tabbable:function(e){var s=t.attr(e,"tabindex"),n=isNaN(s);return(n||s>=0)&&i(e,!n)}}),t("<a>").outerWidth(1).jquery||t.each(["Width","Height"],function(i,s){function n(e,i,s,n){return t.each(o,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),n&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var o="Width"===s?["Left","Right"]:["Top","Bottom"],a=s.toLowerCase(),r={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+s]=function(i){return i===e?r["inner"+s].call(this):this.each(function(){t(this).css(a,n(this,i)+"px")})},t.fn["outer"+s]=function(e,i){return"number"!=typeof e?r["outer"+s].call(this,e):this.each(function(){t(this).css(a,n(this,e,!0,i)+"px")})}}),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(t.fn.removeData=function(e){return function(i){return arguments.length?e.call(this,t.camelCase(i)):e.call(this)}}(t.fn.removeData)),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),t.support.selectstart="onselectstart"in document.createElement("div"),t.fn.extend({disableSelection:function(){return this.bind((t.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(t){t.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),t.extend(t.ui,{plugin:{add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i){var s,n=t.plugins[e];if(n&&t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType)for(s=0;n.length>s;s++)t.options[n[s][0]]&&n[s][1].apply(t.element,i)}},hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)}})})(jQuery),function(t,e){var i=0,s=Array.prototype.slice,n=t.cleanData;t.cleanData=function(e){for(var i,s=0;null!=(i=e[s]);s++)try{t(i).triggerHandler("remove")}catch(o){}n(e)},t.widget=function(i,s,n){var o,a,r,h,l={},c=i.split(".")[0];i=i.split(".")[1],o=c+"-"+i,n||(n=s,s=t.Widget),t.expr[":"][o.toLowerCase()]=function(e){return!!t.data(e,o)},t[c]=t[c]||{},a=t[c][i],r=t[c][i]=function(t,i){return this._createWidget?(arguments.length&&this._createWidget(t,i),e):new r(t,i)},t.extend(r,a,{version:n.version,_proto:t.extend({},n),_childConstructors:[]}),h=new s,h.options=t.widget.extend({},h.options),t.each(n,function(i,n){return t.isFunction(n)?(l[i]=function(){var t=function(){return s.prototype[i].apply(this,arguments)},e=function(t){return s.prototype[i].apply(this,t)};return function(){var i,s=this._super,o=this._superApply;return this._super=t,this._superApply=e,i=n.apply(this,arguments),this._super=s,this._superApply=o,i}}(),e):(l[i]=n,e)}),r.prototype=t.widget.extend(h,{widgetEventPrefix:a?h.widgetEventPrefix||i:i},l,{constructor:r,namespace:c,widgetName:i,widgetFullName:o}),a?(t.each(a._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,r,i._proto)}),delete a._childConstructors):s._childConstructors.push(r),t.widget.bridge(i,r)},t.widget.extend=function(i){for(var n,o,a=s.call(arguments,1),r=0,h=a.length;h>r;r++)for(n in a[r])o=a[r][n],a[r].hasOwnProperty(n)&&o!==e&&(i[n]=t.isPlainObject(o)?t.isPlainObject(i[n])?t.widget.extend({},i[n],o):t.widget.extend({},o):o);return i},t.widget.bridge=function(i,n){var o=n.prototype.widgetFullName||i;t.fn[i]=function(a){var r="string"==typeof a,h=s.call(arguments,1),l=this;return a=!r&&h.length?t.widget.extend.apply(null,[a].concat(h)):a,r?this.each(function(){var s,n=t.data(this,o);return n?t.isFunction(n[a])&&"_"!==a.charAt(0)?(s=n[a].apply(n,h),s!==n&&s!==e?(l=s&&s.jquery?l.pushStack(s.get()):s,!1):e):t.error("no such method '"+a+"' for "+i+" widget instance"):t.error("cannot call methods on "+i+" prior to initialization; "+"attempted to call method '"+a+"'")}):this.each(function(){var e=t.data(this,o);e?e.option(a||{})._init():t.data(this,o,new n(a,this))}),l}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this.bindings=t(),this.hoverable=t(),this.focusable=t(),s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:t.noop,_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(t.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:t.noop,widget:function(){return this.element},option:function(i,s){var n,o,a,r=i;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof i)if(r={},n=i.split("."),i=n.shift(),n.length){for(o=r[i]=t.widget.extend({},this.options[i]),a=0;n.length-1>a;a++)o[n[a]]=o[n[a]]||{},o=o[n[a]];if(i=n.pop(),1===arguments.length)return o[i]===e?null:o[i];o[i]=s}else{if(1===arguments.length)return this.options[i]===e?null:this.options[i];r[i]=s}return this._setOptions(r),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return this.options[t]=e,"disabled"===t&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!e).attr("aria-disabled",e),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_on:function(i,s,n){var o,a=this;"boolean"!=typeof i&&(n=s,s=i,i=!1),n?(s=o=t(s),this.bindings=this.bindings.add(s)):(n=s,s=this.element,o=this.widget()),t.each(n,function(n,r){function h(){return i||a.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof r?a[r]:r).apply(a,arguments):e}"string"!=typeof r&&(h.guid=r.guid=r.guid||h.guid||t.guid++);var l=n.match(/^(\w+)\s*(.*)$/),c=l[1]+a.eventNamespace,u=l[2];u?o.delegate(u,c,h):s.bind(c,h)})},_off:function(t,e){e=(e||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(e).undelegate(e)},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){t(e.currentTarget).addClass("ui-state-hover")},mouseleave:function(e){t(e.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){t(e.currentTarget).addClass("ui-state-focus")},focusout:function(e){t(e.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}})}(jQuery),function(t){var e=!1;t(document).mouseup(function(){e=!1}),t.widget("ui.mouse",{version:"1.10.4",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.bind("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).bind("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):undefined}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&t(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(i){if(!e){this._mouseStarted&&this._mouseUp(i),this._mouseDownEvent=i;var s=this,n=1===i.which,o="string"==typeof this.options.cancel&&i.target.nodeName?t(i.target).closest(this.options.cancel).length:!1;return n&&!o&&this._mouseCapture(i)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){s.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(i)&&this._mouseDelayMet(i)&&(this._mouseStarted=this._mouseStart(i)!==!1,!this._mouseStarted)?(i.preventDefault(),!0):(!0===t.data(i.target,this.widgetName+".preventClickEvent")&&t.removeData(i.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return s._mouseMove(t)},this._mouseUpDelegate=function(t){return s._mouseUp(t)},t(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),i.preventDefault(),e=!0,!0)):!0}},_mouseMove:function(e){return t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button?this._mouseUp(e):this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){return t(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),!1},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}})}(jQuery),function(t){t.widget("ui.draggable",t.ui.mouse,{version:"1.10.4",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"!==this.options.helper||/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._mouseInit()},_destroy:function(){this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy()},_mouseCapture:function(e){var i=this.options;return this.helper||i.disabled||t(e.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(e),this.handle?(t(i.iframeFix===!0?"iframe":i.iframeFix).each(function(){t("<div class='ui-draggable-iframeFix' style='background: #fff;'></div>").css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(t(this).offset()).appendTo("body")}),!0):!1)},_mouseStart:function(e){var i=this.options;return this.helper=this._createHelper(e),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),t.ui.ddmanager&&(t.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offsetParent=this.helper.offsetParent(),this.offsetParentCssPosition=this.offsetParent.css("position"),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},this.offset.scroll=!1,t.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",e)===!1?(this._clear(),!1):(this._cacheHelperProportions(),t.ui.ddmanager&&!i.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this._mouseDrag(e,!0),t.ui.ddmanager&&t.ui.ddmanager.dragStart(this,e),!0)},_mouseDrag:function(e,i){if("fixed"===this.offsetParentCssPosition&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(e),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",e,s)===!1)return this._mouseUp({}),!1;this.position=s.position}return this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),!1},_mouseStop:function(e){var i=this,s=!1;return t.ui.ddmanager&&!this.options.dropBehaviour&&(s=t.ui.ddmanager.drop(this,e)),this.dropped&&(s=this.dropped,this.dropped=!1),"original"!==this.options.helper||t.contains(this.element[0].ownerDocument,this.element[0])?("invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||t.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?t(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",e)!==!1&&i._clear()}):this._trigger("stop",e)!==!1&&this._clear(),!1):!1},_mouseUp:function(e){return t("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),t.ui.ddmanager&&t.ui.ddmanager.dragStop(this,e),t.ui.mouse.prototype._mouseUp.call(this,e)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(e){return this.options.handle?!!t(e.target).closest(this.element.find(this.options.handle)).length:!0},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper)?t(i.helper.apply(this.element[0],[e])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return s.parents("body").length||s.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s[0]===this.element[0]||/(fixed|absolute)/.test(s.css("position"))||s.css("position","absolute"),s},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_getParentOffset:function(){var e=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&t.ui.ie)&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var t=this.element.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options;return n.containment?"window"===n.containment?(this.containment=[t(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,t(window).scrollLeft()+t(window).width()-this.helperProportions.width-this.margins.left,t(window).scrollTop()+(t(window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],undefined):"document"===n.containment?(this.containment=[0,0,t(document).width()-this.helperProportions.width-this.margins.left,(t(document).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],undefined):n.containment.constructor===Array?(this.containment=n.containment,undefined):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=t(n.containment),s=i[0],s&&(e="hidden"!==i.css("overflow"),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(e?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(e?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=i),undefined):(this.containment=null,undefined)},_convertPositionTo:function(e,i){i||(i=this.position);var s="absolute"===e?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent;return this.offset.scroll||(this.offset.scroll={top:n.scrollTop(),left:n.scrollLeft()}),{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():this.offset.scroll.top)*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():this.offset.scroll.left)*s}},_generatePosition:function(e){var i,s,n,o,a=this.options,r="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=e.pageX,l=e.pageY;return this.offset.scroll||(this.offset.scroll={top:r.scrollTop(),left:r.scrollLeft()}),this.originalPosition&&(this.containment&&(this.relative_container?(s=this.relative_container.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,e.pageX-this.offset.click.left<i[0]&&(h=i[0]+this.offset.click.left),e.pageY-this.offset.click.top<i[1]&&(l=i[1]+this.offset.click.top),e.pageX-this.offset.click.left>i[2]&&(h=i[2]+this.offset.click.left),e.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),a.grid&&(n=a.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/a.grid[1])*a.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-a.grid[1]:n+a.grid[1]:n,o=a.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/a.grid[0])*a.grid[0]:this.originalPageX,h=i?o-this.offset.click.left>=i[0]||o-this.offset.click.left>i[2]?o:o-this.offset.click.left>=i[0]?o-a.grid[0]:o+a.grid[0]:o)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():this.offset.scroll.left)}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1},_trigger:function(e,i,s){return s=s||this._uiHash(),t.ui.plugin.call(this,e,[i,s]),"drag"===e&&(this.positionAbs=this._convertPositionTo("absolute")),t.Widget.prototype._trigger.call(this,e,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),t.ui.plugin.add("draggable","connectToSortable",{start:function(e,i){var s=t(this).data("ui-draggable"),n=s.options,o=t.extend({},i,{item:s.element});s.sortables=[],t(n.connectToSortable).each(function(){var i=t.data(this,"ui-sortable");i&&!i.options.disabled&&(s.sortables.push({instance:i,shouldRevert:i.options.revert}),i.refreshPositions(),i._trigger("activate",e,o))})},stop:function(e,i){var s=t(this).data("ui-draggable"),n=t.extend({},i,{item:s.element});t.each(s.sortables,function(){this.instance.isOver?(this.instance.isOver=0,s.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=this.shouldRevert),this.instance._mouseStop(e),this.instance.options.helper=this.instance.options._helper,"original"===s.options.helper&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",e,n))})},drag:function(e,i){var s=t(this).data("ui-draggable"),n=this;t.each(s.sortables,function(){var o=!1,a=this;this.instance.positionAbs=s.positionAbs,this.instance.helperProportions=s.helperProportions,this.instance.offset.click=s.offset.click,this.instance._intersectsWith(this.instance.containerCache)&&(o=!0,t.each(s.sortables,function(){return this.instance.positionAbs=s.positionAbs,this.instance.helperProportions=s.helperProportions,this.instance.offset.click=s.offset.click,this!==a&&this.instance._intersectsWith(this.instance.containerCache)&&t.contains(a.instance.element[0],this.instance.element[0])&&(o=!1),o})),o?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=t(n).clone().removeAttr("id").appendTo(this.instance.element).data("ui-sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return i.helper[0]},e.target=this.instance.currentItem[0],this.instance._mouseCapture(e,!0),this.instance._mouseStart(e,!0,!0),this.instance.offset.click.top=s.offset.click.top,this.instance.offset.click.left=s.offset.click.left,this.instance.offset.parent.left-=s.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=s.offset.parent.top-this.instance.offset.parent.top,s._trigger("toSortable",e),s.dropped=this.instance.element,s.currentItem=s.element,this.instance.fromOutside=s),this.instance.currentItem&&this.instance._mouseDrag(e)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",e,this.instance._uiHash(this.instance)),this.instance._mouseStop(e,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),s._trigger("fromSortable",e),s.dropped=!1)})}}),t.ui.plugin.add("draggable","cursor",{start:function(){var e=t("body"),i=t(this).data("ui-draggable").options;e.css("cursor")&&(i._cursor=e.css("cursor")),e.css("cursor",i.cursor)},stop:function(){var e=t(this).data("ui-draggable").options;e._cursor&&t("body").css("cursor",e._cursor)}}),t.ui.plugin.add("draggable","opacity",{start:function(e,i){var s=t(i.helper),n=t(this).data("ui-draggable").options;s.css("opacity")&&(n._opacity=s.css("opacity")),s.css("opacity",n.opacity)},stop:function(e,i){var s=t(this).data("ui-draggable").options;s._opacity&&t(i.helper).css("opacity",s._opacity)}}),t.ui.plugin.add("draggable","scroll",{start:function(){var e=t(this).data("ui-draggable");e.scrollParent[0]!==document&&"HTML"!==e.scrollParent[0].tagName&&(e.overflowOffset=e.scrollParent.offset())},drag:function(e){var i=t(this).data("ui-draggable"),s=i.options,n=!1;i.scrollParent[0]!==document&&"HTML"!==i.scrollParent[0].tagName?(s.axis&&"x"===s.axis||(i.overflowOffset.top+i.scrollParent[0].offsetHeight-e.pageY<s.scrollSensitivity?i.scrollParent[0].scrollTop=n=i.scrollParent[0].scrollTop+s.scrollSpeed:e.pageY-i.overflowOffset.top<s.scrollSensitivity&&(i.scrollParent[0].scrollTop=n=i.scrollParent[0].scrollTop-s.scrollSpeed)),s.axis&&"y"===s.axis||(i.overflowOffset.left+i.scrollParent[0].offsetWidth-e.pageX<s.scrollSensitivity?i.scrollParent[0].scrollLeft=n=i.scrollParent[0].scrollLeft+s.scrollSpeed:e.pageX-i.overflowOffset.left<s.scrollSensitivity&&(i.scrollParent[0].scrollLeft=n=i.scrollParent[0].scrollLeft-s.scrollSpeed))):(s.axis&&"x"===s.axis||(e.pageY-t(document).scrollTop()<s.scrollSensitivity?n=t(document).scrollTop(t(document).scrollTop()-s.scrollSpeed):t(window).height()-(e.pageY-t(document).scrollTop())<s.scrollSensitivity&&(n=t(document).scrollTop(t(document).scrollTop()+s.scrollSpeed))),s.axis&&"y"===s.axis||(e.pageX-t(document).scrollLeft()<s.scrollSensitivity?n=t(document).scrollLeft(t(document).scrollLeft()-s.scrollSpeed):t(window).width()-(e.pageX-t(document).scrollLeft())<s.scrollSensitivity&&(n=t(document).scrollLeft(t(document).scrollLeft()+s.scrollSpeed)))),n!==!1&&t.ui.ddmanager&&!s.dropBehaviour&&t.ui.ddmanager.prepareOffsets(i,e)}}),t.ui.plugin.add("draggable","snap",{start:function(){var e=t(this).data("ui-draggable"),i=e.options;e.snapElements=[],t(i.snap.constructor!==String?i.snap.items||":data(ui-draggable)":i.snap).each(function(){var i=t(this),s=i.offset();this!==e.element[0]&&e.snapElements.push({item:this,width:i.outerWidth(),height:i.outerHeight(),top:s.top,left:s.left})})},drag:function(e,i){var s,n,o,a,r,h,l,c,u,d,p=t(this).data("ui-draggable"),f=p.options,g=f.snapTolerance,m=i.offset.left,v=m+p.helperProportions.width,_=i.offset.top,b=_+p.helperProportions.height;for(u=p.snapElements.length-1;u>=0;u--)r=p.snapElements[u].left,h=r+p.snapElements[u].width,l=p.snapElements[u].top,c=l+p.snapElements[u].height,r-g>v||m>h+g||l-g>b||_>c+g||!t.contains(p.snapElements[u].item.ownerDocument,p.snapElements[u].item)?(p.snapElements[u].snapping&&p.options.snap.release&&p.options.snap.release.call(p.element,e,t.extend(p._uiHash(),{snapItem:p.snapElements[u].item})),p.snapElements[u].snapping=!1):("inner"!==f.snapMode&&(s=g>=Math.abs(l-b),n=g>=Math.abs(c-_),o=g>=Math.abs(r-v),a=g>=Math.abs(h-m),s&&(i.position.top=p._convertPositionTo("relative",{top:l-p.helperProportions.height,left:0}).top-p.margins.top),n&&(i.position.top=p._convertPositionTo("relative",{top:c,left:0}).top-p.margins.top),o&&(i.position.left=p._convertPositionTo("relative",{top:0,left:r-p.helperProportions.width}).left-p.margins.left),a&&(i.position.left=p._convertPositionTo("relative",{top:0,left:h}).left-p.margins.left)),d=s||n||o||a,"outer"!==f.snapMode&&(s=g>=Math.abs(l-_),n=g>=Math.abs(c-b),o=g>=Math.abs(r-m),a=g>=Math.abs(h-v),s&&(i.position.top=p._convertPositionTo("relative",{top:l,left:0}).top-p.margins.top),n&&(i.position.top=p._convertPositionTo("relative",{top:c-p.helperProportions.height,left:0}).top-p.margins.top),o&&(i.position.left=p._convertPositionTo("relative",{top:0,left:r}).left-p.margins.left),a&&(i.position.left=p._convertPositionTo("relative",{top:0,left:h-p.helperProportions.width}).left-p.margins.left)),!p.snapElements[u].snapping&&(s||n||o||a||d)&&p.options.snap.snap&&p.options.snap.snap.call(p.element,e,t.extend(p._uiHash(),{snapItem:p.snapElements[u].item})),p.snapElements[u].snapping=s||n||o||a||d)}}),t.ui.plugin.add("draggable","stack",{start:function(){var e,i=this.data("ui-draggable").options,s=t.makeArray(t(i.stack)).sort(function(e,i){return(parseInt(t(e).css("zIndex"),10)||0)-(parseInt(t(i).css("zIndex"),10)||0)});s.length&&(e=parseInt(t(s[0]).css("zIndex"),10)||0,t(s).each(function(i){t(this).css("zIndex",e+i)}),this.css("zIndex",e+s.length))}}),t.ui.plugin.add("draggable","zIndex",{start:function(e,i){var s=t(i.helper),n=t(this).data("ui-draggable").options;s.css("zIndex")&&(n._zIndex=s.css("zIndex")),s.css("zIndex",n.zIndex)},stop:function(e,i){var s=t(this).data("ui-draggable").options;s._zIndex&&t(i.helper).css("zIndex",s._zIndex)}})}(jQuery),function(t){function e(t,e,i){return t>e&&e+i>t}t.widget("ui.droppable",{version:"1.10.4",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var e,i=this.options,s=i.accept; -this.isover=!1,this.isout=!0,this.accept=t.isFunction(s)?s:function(t){return t.is(s)},this.proportions=function(){return arguments.length?(e=arguments[0],undefined):e?e:e={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},t.ui.ddmanager.droppables[i.scope]=t.ui.ddmanager.droppables[i.scope]||[],t.ui.ddmanager.droppables[i.scope].push(this),i.addClasses&&this.element.addClass("ui-droppable")},_destroy:function(){for(var e=0,i=t.ui.ddmanager.droppables[this.options.scope];i.length>e;e++)i[e]===this&&i.splice(e,1);this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(e,i){"accept"===e&&(this.accept=t.isFunction(i)?i:function(t){return t.is(i)}),t.Widget.prototype._setOption.apply(this,arguments)},_activate:function(e){var i=t.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),i&&this._trigger("activate",e,this.ui(i))},_deactivate:function(e){var i=t.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),i&&this._trigger("deactivate",e,this.ui(i))},_over:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",e,this.ui(i)))},_out:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",e,this.ui(i)))},_drop:function(e,i){var s=i||t.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var e=t.data(this,"ui-droppable");return e.options.greedy&&!e.options.disabled&&e.options.scope===s.options.scope&&e.accept.call(e.element[0],s.currentItem||s.element)&&t.ui.intersect(s,t.extend(e,{offset:e.element.offset()}),e.options.tolerance)?(n=!0,!1):undefined}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",e,this.ui(s)),this.element):!1):!1},ui:function(t){return{draggable:t.currentItem||t.element,helper:t.helper,position:t.position,offset:t.positionAbs}}}),t.ui.intersect=function(t,i,s){if(!i.offset)return!1;var n,o,a=(t.positionAbs||t.position.absolute).left,r=(t.positionAbs||t.position.absolute).top,h=a+t.helperProportions.width,l=r+t.helperProportions.height,c=i.offset.left,u=i.offset.top,d=c+i.proportions().width,p=u+i.proportions().height;switch(s){case"fit":return a>=c&&d>=h&&r>=u&&p>=l;case"intersect":return a+t.helperProportions.width/2>c&&d>h-t.helperProportions.width/2&&r+t.helperProportions.height/2>u&&p>l-t.helperProportions.height/2;case"pointer":return n=(t.positionAbs||t.position.absolute).left+(t.clickOffset||t.offset.click).left,o=(t.positionAbs||t.position.absolute).top+(t.clickOffset||t.offset.click).top,e(o,u,i.proportions().height)&&e(n,c,i.proportions().width);case"touch":return(r>=u&&p>=r||l>=u&&p>=l||u>r&&l>p)&&(a>=c&&d>=a||h>=c&&d>=h||c>a&&h>d);default:return!1}},t.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(e,i){var s,n,o=t.ui.ddmanager.droppables[e.options.scope]||[],a=i?i.type:null,r=(e.currentItem||e.element).find(":data(ui-droppable)").addBack();t:for(s=0;o.length>s;s++)if(!(o[s].options.disabled||e&&!o[s].accept.call(o[s].element[0],e.currentItem||e.element))){for(n=0;r.length>n;n++)if(r[n]===o[s].element[0]){o[s].proportions().height=0;continue t}o[s].visible="none"!==o[s].element.css("display"),o[s].visible&&("mousedown"===a&&o[s]._activate.call(o[s],i),o[s].offset=o[s].element.offset(),o[s].proportions({width:o[s].element[0].offsetWidth,height:o[s].element[0].offsetHeight}))}},drop:function(e,i){var s=!1;return t.each((t.ui.ddmanager.droppables[e.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&t.ui.intersect(e,this,this.options.tolerance)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(e,i){e.element.parentsUntil("body").bind("scroll.droppable",function(){e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)})},drag:function(e,i){e.options.refreshPositions&&t.ui.ddmanager.prepareOffsets(e,i),t.each(t.ui.ddmanager.droppables[e.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,o,a=t.ui.intersect(e,this,this.options.tolerance),r=!a&&this.isover?"isout":a&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,o=this.element.parents(":data(ui-droppable)").filter(function(){return t.data(this,"ui-droppable").options.scope===n}),o.length&&(s=t.data(o[0],"ui-droppable"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(e,i){e.element.parentsUntil("body").unbind("scroll.droppable"),e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)}}}(jQuery),function(t){function e(t){return parseInt(t,10)||0}function i(t){return!isNaN(parseInt(t,10))}t.widget("ui.resizable",t.ui.mouse,{version:"1.10.4",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_create:function(){var e,i,s,n,o,a=this,r=this.options;if(this.element.addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!r.aspectRatio,aspectRatio:r.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:r.helper||r.ghost||r.animate?r.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(t("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.data("ui-resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=r.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),e=this.handles.split(","),this.handles={},i=0;e.length>i;i++)s=t.trim(e[i]),o="ui-resizable-"+s,n=t("<div class='ui-resizable-handle "+o+"'></div>"),n.css({zIndex:r.zIndex}),"se"===s&&n.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(n);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String&&(this.handles[i]=t(this.handles[i],this.element).show()),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),t(this.handles[i]).length},this._renderAxis(this.element),this._handles=t(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){a.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),a.axis=n&&n[1]?n[1]:"se")}),r.autoHide&&(this._handles.hide(),t(this.element).addClass("ui-resizable-autohide").mouseenter(function(){r.disabled||(t(this).removeClass("ui-resizable-autohide"),a._handles.show())}).mouseleave(function(){r.disabled||a.resizing||(t(this).addClass("ui-resizable-autohide"),a._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(i){var s,n,o,a=this.options,r=this.element.position(),h=this.element;return this.resizing=!0,/absolute/.test(h.css("position"))?h.css({position:"absolute",top:h.css("top"),left:h.css("left")}):h.is(".ui-draggable")&&h.css({position:"absolute",top:r.top,left:r.left}),this._renderProxy(),s=e(this.helper.css("left")),n=e(this.helper.css("top")),a.containment&&(s+=t(a.containment).scrollLeft()||0,n+=t(a.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:s,top:n},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:h.width(),height:h.height()},this.originalSize=this._helper?{width:h.outerWidth(),height:h.outerHeight()}:{width:h.width(),height:h.height()},this.originalPosition={left:s,top:n},this.sizeDiff={width:h.outerWidth()-h.width(),height:h.outerHeight()-h.height()},this.originalMousePosition={left:i.pageX,top:i.pageY},this.aspectRatio="number"==typeof a.aspectRatio?a.aspectRatio:this.originalSize.width/this.originalSize.height||1,o=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===o?this.axis+"-resize":o),h.addClass("ui-resizable-resizing"),this._propagate("start",i),!0},_mouseDrag:function(e){var i,s=this.helper,n={},o=this.originalMousePosition,a=this.axis,r=this.position.top,h=this.position.left,l=this.size.width,c=this.size.height,u=e.pageX-o.left||0,d=e.pageY-o.top||0,p=this._change[a];return p?(i=p.apply(this,[e,u,d]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),this.position.top!==r&&(n.top=this.position.top+"px"),this.position.left!==h&&(n.left=this.position.left+"px"),this.size.width!==l&&(n.width=this.size.width+"px"),this.size.height!==c&&(n.height=this.size.height+"px"),s.css(n),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(n)||this._trigger("resize",e,this.ui()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&t.ui.hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null,h=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updateVirtualBoundaries:function(t){var e,s,n,o,a,r=this.options;a={minWidth:i(r.minWidth)?r.minWidth:0,maxWidth:i(r.maxWidth)?r.maxWidth:1/0,minHeight:i(r.minHeight)?r.minHeight:0,maxHeight:i(r.maxHeight)?r.maxHeight:1/0},(this._aspectRatio||t)&&(e=a.minHeight*this.aspectRatio,n=a.minWidth/this.aspectRatio,s=a.maxHeight*this.aspectRatio,o=a.maxWidth/this.aspectRatio,e>a.minWidth&&(a.minWidth=e),n>a.minHeight&&(a.minHeight=n),a.maxWidth>s&&(a.maxWidth=s),a.maxHeight>o&&(a.maxHeight=o)),this._vBoundaries=a},_updateCache:function(t){this.offset=this.helper.offset(),i(t.left)&&(this.position.left=t.left),i(t.top)&&(this.position.top=t.top),i(t.height)&&(this.size.height=t.height),i(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,s=this.size,n=this.axis;return i(t.height)?t.width=t.height*this.aspectRatio:i(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===n&&(t.left=e.left+(s.width-t.width),t.top=null),"nw"===n&&(t.top=e.top+(s.height-t.height),t.left=e.left+(s.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,s=this.axis,n=i(t.width)&&e.maxWidth&&e.maxWidth<t.width,o=i(t.height)&&e.maxHeight&&e.maxHeight<t.height,a=i(t.width)&&e.minWidth&&e.minWidth>t.width,r=i(t.height)&&e.minHeight&&e.minHeight>t.height,h=this.originalPosition.left+this.originalSize.width,l=this.position.top+this.size.height,c=/sw|nw|w/.test(s),u=/nw|ne|n/.test(s);return a&&(t.width=e.minWidth),r&&(t.height=e.minHeight),n&&(t.width=e.maxWidth),o&&(t.height=e.maxHeight),a&&c&&(t.left=h-e.minWidth),n&&c&&(t.left=h-e.maxWidth),r&&u&&(t.top=l-e.minHeight),o&&u&&(t.top=l-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_proportionallyResize:function(){if(this._proportionallyResizeElements.length){var t,e,i,s,n,o=this.helper||this.element;for(t=0;this._proportionallyResizeElements.length>t;t++){if(n=this._proportionallyResizeElements[t],!this.borderDif)for(this.borderDif=[],i=[n.css("borderTopWidth"),n.css("borderRightWidth"),n.css("borderBottomWidth"),n.css("borderLeftWidth")],s=[n.css("paddingTop"),n.css("paddingRight"),n.css("paddingBottom"),n.css("paddingLeft")],e=0;i.length>e;e++)this.borderDif[e]=(parseInt(i[e],10)||0)+(parseInt(s[e],10)||0);n.css({height:o.height()-this.borderDif[0]-this.borderDif[2]||0,width:o.width()-this.borderDif[1]-this.borderDif[3]||0})}}},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("<div style='overflow:hidden;'></div>"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).data("ui-resizable"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&t.ui.hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseInt(i.element.css("left"),10)+(i.position.left-i.originalPosition.left)||null,c=parseInt(i.element.css("top"),10)+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseInt(i.element.css("width"),10),height:parseInt(i.element.css("height"),10),top:parseInt(i.element.css("top"),10),left:parseInt(i.element.css("left"),10)};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var i,s,n,o,a,r,h,l=t(this).data("ui-resizable"),c=l.options,u=l.element,d=c.containment,p=d instanceof t?d.get(0):/parent/.test(d)?u.parent().get(0):d;p&&(l.containerElement=t(p),/document/.test(d)||d===document?(l.containerOffset={left:0,top:0},l.containerPosition={left:0,top:0},l.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(i=t(p),s=[],t(["Top","Right","Left","Bottom"]).each(function(t,n){s[t]=e(i.css("padding"+n))}),l.containerOffset=i.offset(),l.containerPosition=i.position(),l.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},n=l.containerOffset,o=l.containerSize.height,a=l.containerSize.width,r=t.ui.hasScroll(p,"left")?p.scrollWidth:a,h=t.ui.hasScroll(p)?p.scrollHeight:o,l.parentData={element:p,left:n.left,top:n.top,width:r,height:h}))},resize:function(e){var i,s,n,o,a=t(this).data("ui-resizable"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio),a.position.top=a._helper?h.top:0),a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top,i=Math.abs((a._helper?a.offset.left-u.left:a.offset.left-u.left)+a.sizeDiff.width),s=Math.abs((a._helper?a.offset.top-u.top:a.offset.top-h.top)+a.sizeDiff.height),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o&&(i-=Math.abs(a.parentData.left)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio))},stop:function(){var e=t(this).data("ui-resizable"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).data("ui-resizable"),i=e.options,s=function(e){t(e).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseInt(e.width(),10),height:parseInt(e.height(),10),left:parseInt(e.css("left"),10),top:parseInt(e.css("top"),10)})})};"object"!=typeof i.alsoResize||i.alsoResize.parentNode?s(i.alsoResize):i.alsoResize.length?(i.alsoResize=i.alsoResize[0],s(i.alsoResize)):t.each(i.alsoResize,function(t){s(t)})},resize:function(e,i){var s=t(this).data("ui-resizable"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0},h=function(e,s){t(e).each(function(){var e=t(this),n=t(this).data("ui-resizable-alsoresize"),o={},a=s&&s.length?s:e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(a,function(t,e){var i=(n[e]||0)+(r[e]||0);i&&i>=0&&(o[e]=i||null)}),e.css(o)})};"object"!=typeof n.alsoResize||n.alsoResize.nodeType?h(n.alsoResize):t.each(n.alsoResize,function(t,e){h(t,e)})},stop:function(){t(this).removeData("resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).data("ui-resizable"),i=e.options,s=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof i.ghost?i.ghost:""),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).data("ui-resizable");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).data("ui-resizable");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e=t(this).data("ui-resizable"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,a=e.axis,r="number"==typeof i.grid?[i.grid,i.grid]:i.grid,h=r[0]||1,l=r[1]||1,c=Math.round((s.width-n.width)/h)*h,u=Math.round((s.height-n.height)/l)*l,d=n.width+c,p=n.height+u,f=i.maxWidth&&d>i.maxWidth,g=i.maxHeight&&p>i.maxHeight,m=i.minWidth&&i.minWidth>d,v=i.minHeight&&i.minHeight>p;i.grid=r,m&&(d+=h),v&&(p+=l),f&&(d-=h),g&&(p-=l),/^(se|s|e)$/.test(a)?(e.size.width=d,e.size.height=p):/^(ne)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.top=o.top-u):/^(sw)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.left=o.left-c):(p-l>0?(e.size.height=p,e.position.top=o.top-u):(e.size.height=l,e.position.top=o.top+n.height-l),d-h>0?(e.size.width=d,e.position.left=o.left-c):(e.size.width=h,e.position.left=o.left+n.width-h))}})}(jQuery),function(t){t.widget("ui.selectable",t.ui.mouse,{version:"1.10.4",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var e,i=this;this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){e=t(i.options.filter,i.element[0]),e.addClass("ui-selectee"),e.each(function(){var e=t(this),i=e.offset();t.data(this,"selectable-item",{element:this,$element:e,left:i.left,top:i.top,right:i.left+e.outerWidth(),bottom:i.top+e.outerHeight(),startselected:!1,selected:e.hasClass("ui-selected"),selecting:e.hasClass("ui-selecting"),unselecting:e.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=e.addClass("ui-selectee"),this._mouseInit(),this.helper=t("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(e){var i=this,s=this.options;this.opos=[e.pageX,e.pageY],this.options.disabled||(this.selectees=t(s.filter,this.element[0]),this._trigger("start",e),t(s.appendTo).append(this.helper),this.helper.css({left:e.pageX,top:e.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=t.data(this,"selectable-item");s.startselected=!0,e.metaKey||e.ctrlKey||(s.$element.removeClass("ui-selected"),s.selected=!1,s.$element.addClass("ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",e,{unselecting:s.element}))}),t(e.target).parents().addBack().each(function(){var s,n=t.data(this,"selectable-item");return n?(s=!e.metaKey&&!e.ctrlKey||!n.$element.hasClass("ui-selected"),n.$element.removeClass(s?"ui-unselecting":"ui-selected").addClass(s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",e,{selecting:n.element}):i._trigger("unselecting",e,{unselecting:n.element}),!1):undefined}))},_mouseDrag:function(e){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,o=this.opos[0],a=this.opos[1],r=e.pageX,h=e.pageY;return o>r&&(i=r,r=o,o=i),a>h&&(i=h,h=a,a=i),this.helper.css({left:o,top:a,width:r-o,height:h-a}),this.selectees.each(function(){var i=t.data(this,"selectable-item"),l=!1;i&&i.element!==s.element[0]&&("touch"===n.tolerance?l=!(i.left>r||o>i.right||i.top>h||a>i.bottom):"fit"===n.tolerance&&(l=i.left>o&&r>i.right&&i.top>a&&h>i.bottom),l?(i.selected&&(i.$element.removeClass("ui-selected"),i.selected=!1),i.unselecting&&(i.$element.removeClass("ui-unselecting"),i.unselecting=!1),i.selecting||(i.$element.addClass("ui-selecting"),i.selecting=!0,s._trigger("selecting",e,{selecting:i.element}))):(i.selecting&&((e.metaKey||e.ctrlKey)&&i.startselected?(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.$element.addClass("ui-selected"),i.selected=!0):(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.startselected&&(i.$element.addClass("ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",e,{unselecting:i.element}))),i.selected&&(e.metaKey||e.ctrlKey||i.startselected||(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",e,{unselecting:i.element})))))}),!1}},_mouseStop:function(e){var i=this;return this.dragged=!1,t(".ui-unselecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");s.$element.removeClass("ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",e,{unselected:s.element})}),t(".ui-selecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");s.$element.removeClass("ui-selecting").addClass("ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",e,{selected:s.element})}),this._trigger("stop",e),this.helper.remove(),!1}})}(jQuery),function(t){function e(t,e,i){return t>e&&e+i>t}function i(t){return/left|right/.test(t.css("float"))||/inline|table-cell/.test(t.css("display"))}t.widget("ui.sortable",t.ui.mouse,{version:"1.10.4",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_create:function(){var t=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?"x"===t.axis||i(this.items[0].item):!1,this.offset=this.element.offset(),this._mouseInit(),this.ready=!0},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var t=this.items.length-1;t>=0;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_setOption:function(e,i){"disabled"===e?(this.options[e]=i,this.widget().toggleClass("ui-sortable-disabled",!!i)):t.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(e,i){var s=null,n=!1,o=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(e),t(e.target).parents().each(function(){return t.data(this,o.widgetName+"-item")===o?(s=t(this),!1):undefined}),t.data(e.target,o.widgetName+"-item")===o&&(s=t(e.target)),s?!this.options.handle||i||(t(this.options.handle,s).find("*").addBack().each(function(){this===e.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(e,i,s){var n,o,a=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(e),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},t.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,a.cursorAt&&this._adjustOffsetFromHelper(a.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),a.containment&&this._setContainment(),a.cursor&&"auto"!==a.cursor&&(o=this.document.find("body"),this.storedCursor=o.css("cursor"),o.css("cursor",a.cursor),this.storedStylesheet=t("<style>*{ cursor: "+a.cursor+" !important; }</style>").appendTo(o)),a.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",a.opacity)),a.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",a.zIndex)),this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",e,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",e,this._uiHash(this));return t.ui.ddmanager&&(t.ui.ddmanager.current=this),t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(e),!0},_mouseDrag:function(e){var i,s,n,o,a=this.options,r=!1;for(this.position=this._generatePosition(e),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-e.pageY<a.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+a.scrollSpeed:e.pageY-this.overflowOffset.top<a.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-a.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-e.pageX<a.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+a.scrollSpeed:e.pageX-this.overflowOffset.left<a.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-a.scrollSpeed)):(e.pageY-t(document).scrollTop()<a.scrollSensitivity?r=t(document).scrollTop(t(document).scrollTop()-a.scrollSpeed):t(window).height()-(e.pageY-t(document).scrollTop())<a.scrollSensitivity&&(r=t(document).scrollTop(t(document).scrollTop()+a.scrollSpeed)),e.pageX-t(document).scrollLeft()<a.scrollSensitivity?r=t(document).scrollLeft(t(document).scrollLeft()-a.scrollSpeed):t(window).width()-(e.pageX-t(document).scrollLeft())<a.scrollSensitivity&&(r=t(document).scrollLeft(t(document).scrollLeft()+a.scrollSpeed))),r!==!1&&t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],n=s.item[0],o=this._intersectsWithPointer(s),o&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===o?"next":"prev"]()[0]!==n&&!t.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!t.contains(this.element[0],n):!0)){if(this.direction=1===o?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break; -this._rearrange(e,s),this._trigger("change",e,this._uiHash());break}return this._contactContainers(e),t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),this._trigger("sort",e,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(e,i){if(e){if(t.ui.ddmanager&&!this.options.dropBehaviour&&t.ui.ddmanager.drop(this,e),this.options.revert){var s=this,n=this.placeholder.offset(),o=this.options.axis,a={};o&&"x"!==o||(a.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollLeft)),o&&"y"!==o||(a.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,t(this.helper).animate(a,parseInt(this.options.revert,10)||500,function(){s._clear(e)})}else this._clear(e,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var e=this.containers.length-1;e>=0;e--)this.containers[e]._trigger("deactivate",null,this._uiHash(this)),this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",null,this._uiHash(this)),this.containers[e].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),t.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?t(this.domPosition.prev).after(this.currentItem):t(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},t(i).each(function(){var i=(t(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);i&&s.push((e.key||i[1]+"[]")+"="+(e.key&&e.expression?i[1]:i[2]))}),!s.length&&e.key&&s.push(e.key+"="),s.join("&")},toArray:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},i.each(function(){s.push(t(e.item||this).attr(e.attribute||"id")||"")}),s},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,o=t.left,a=o+t.width,r=t.top,h=r+t.height,l=this.offset.click.top,c=this.offset.click.left,u="x"===this.options.axis||s+l>r&&h>s+l,d="y"===this.options.axis||e+c>o&&a>e+c,p=u&&d;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>t[this.floating?"width":"height"]?p:e+this.helperProportions.width/2>o&&a>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(t){var i="x"===this.options.axis||e(this.positionAbs.top+this.offset.click.top,t.top,t.height),s="y"===this.options.axis||e(this.positionAbs.left+this.offset.click.left,t.left,t.width),n=i&&s,o=this._getDragVerticalDirection(),a=this._getDragHorizontalDirection();return n?this.floating?a&&"right"===a||"down"===o?2:1:o&&("down"===o?2:1):!1},_intersectsWithSides:function(t){var i=e(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),s=e(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),n=this._getDragVerticalDirection(),o=this._getDragHorizontalDirection();return this.floating&&o?"right"===o&&s||"left"===o&&!s:n&&("down"===n&&i||"up"===n&&!i)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!==t&&(t>0?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!==t&&(t>0?"right":"left")},refresh:function(t){return this._refreshItems(t),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(e){function i(){r.push(this)}var s,n,o,a,r=[],h=[],l=this._connectWith();if(l&&e)for(s=l.length-1;s>=0;s--)for(o=t(l[s]),n=o.length-1;n>=0;n--)a=t.data(o[n],this.widgetFullName),a&&a!==this&&!a.options.disabled&&h.push([t.isFunction(a.options.items)?a.options.items.call(a.element):t(a.options.items,a.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),a]);for(h.push([t.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):t(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=h.length-1;s>=0;s--)h[s][0].each(i);return t(r)},_removeCurrentsFromItems:function(){var e=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=t.grep(this.items,function(t){for(var i=0;e.length>i;i++)if(e[i]===t.item[0])return!1;return!0})},_refreshItems:function(e){this.items=[],this.containers=[this];var i,s,n,o,a,r,h,l,c=this.items,u=[[t.isFunction(this.options.items)?this.options.items.call(this.element[0],e,{item:this.currentItem}):t(this.options.items,this.element),this]],d=this._connectWith();if(d&&this.ready)for(i=d.length-1;i>=0;i--)for(n=t(d[i]),s=n.length-1;s>=0;s--)o=t.data(n[s],this.widgetFullName),o&&o!==this&&!o.options.disabled&&(u.push([t.isFunction(o.options.items)?o.options.items.call(o.element[0],e,{item:this.currentItem}):t(o.options.items,o.element),o]),this.containers.push(o));for(i=u.length-1;i>=0;i--)for(a=u[i][1],r=u[i][0],s=0,l=r.length;l>s;s++)h=t(r[s]),h.data(this.widgetName+"-item",a),c.push({item:h,instance:a,width:0,height:0,left:0,top:0})},refreshPositions:function(e){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,o;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?t(this.options.toleranceElement,s.item):s.item,e||(s.width=n.outerWidth(),s.height=n.outerHeight()),o=n.offset(),s.left=o.left,s.top=o.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)o=this.containers[i].element.offset(),this.containers[i].containerCache.left=o.left,this.containers[i].containerCache.top=o.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(e){e=e||this;var i,s=e.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=e.currentItem[0].nodeName.toLowerCase(),n=t("<"+s+">",e.document[0]).addClass(i||e.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tr"===s?e.currentItem.children().each(function(){t("<td>&#160;</td>",e.document[0]).attr("colspan",t(this).attr("colspan")||1).appendTo(n)}):"img"===s&&n.attr("src",e.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(t,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(e.currentItem.innerHeight()-parseInt(e.currentItem.css("paddingTop")||0,10)-parseInt(e.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(e.currentItem.innerWidth()-parseInt(e.currentItem.css("paddingLeft")||0,10)-parseInt(e.currentItem.css("paddingRight")||0,10)))}}),e.placeholder=t(s.placeholder.element.call(e.element,e.currentItem)),e.currentItem.after(e.placeholder),s.placeholder.update(e,e.placeholder)},_contactContainers:function(s){var n,o,a,r,h,l,c,u,d,p,f=null,g=null;for(n=this.containers.length-1;n>=0;n--)if(!t.contains(this.currentItem[0],this.containers[n].element[0]))if(this._intersectsWith(this.containers[n].containerCache)){if(f&&t.contains(this.containers[n].element[0],f.element[0]))continue;f=this.containers[n],g=n}else this.containers[n].containerCache.over&&(this.containers[n]._trigger("out",s,this._uiHash(this)),this.containers[n].containerCache.over=0);if(f)if(1===this.containers.length)this.containers[g].containerCache.over||(this.containers[g]._trigger("over",s,this._uiHash(this)),this.containers[g].containerCache.over=1);else{for(a=1e4,r=null,p=f.floating||i(this.currentItem),h=p?"left":"top",l=p?"width":"height",c=this.positionAbs[h]+this.offset.click[h],o=this.items.length-1;o>=0;o--)t.contains(this.containers[g].element[0],this.items[o].item[0])&&this.items[o].item[0]!==this.currentItem[0]&&(!p||e(this.positionAbs.top+this.offset.click.top,this.items[o].top,this.items[o].height))&&(u=this.items[o].item.offset()[h],d=!1,Math.abs(u-c)>Math.abs(u+this.items[o][l]-c)&&(d=!0,u+=this.items[o][l]),a>Math.abs(u-c)&&(a=Math.abs(u-c),r=this.items[o],this.direction=d?"up":"down"));if(!r&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[g])return;r?this._rearrange(s,r,null,!0):this._rearrange(s,null,this.containers[g].element,!0),this._trigger("change",s,this._uiHash()),this.containers[g]._trigger("change",s,this._uiHash(this)),this.currentContainer=this.containers[g],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[g]._trigger("over",s,this._uiHash(this)),this.containers[g].containerCache.over=1}},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper)?t(i.helper.apply(this.element[0],[e,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||t("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var e=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&t.ui.ie)&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var t=this.currentItem.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,t("document"===n.containment?document:window).width()-this.helperProportions.width-this.margins.left,(t("document"===n.containment?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(e=t(n.containment)[0],i=t(n.containment).offset(),s="hidden"!==t(e).css("overflow"),this.containment=[i.left+(parseInt(t(e).css("borderLeftWidth"),10)||0)+(parseInt(t(e).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(t(e).css("borderTopWidth"),10)||0)+(parseInt(t(e).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(e.scrollWidth,e.offsetWidth):e.offsetWidth)-(parseInt(t(e).css("borderLeftWidth"),10)||0)-(parseInt(t(e).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(e.scrollHeight,e.offsetHeight):e.offsetHeight)-(parseInt(t(e).css("borderTopWidth"),10)||0)-(parseInt(t(e).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(e,i){i||(i=this.position);var s="absolute"===e?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())*s}},_generatePosition:function(e){var i,s,n=this.options,o=e.pageX,a=e.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==document&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(e.pageX-this.offset.click.left<this.containment[0]&&(o=this.containment[0]+this.offset.click.left),e.pageY-this.offset.click.top<this.containment[1]&&(a=this.containment[1]+this.offset.click.top),e.pageX-this.offset.click.left>this.containment[2]&&(o=this.containment[2]+this.offset.click.left),e.pageY-this.offset.click.top>this.containment[3]&&(a=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((a-this.originalPageY)/n.grid[1])*n.grid[1],a=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((o-this.originalPageX)/n.grid[0])*n.grid[0],o=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){function i(t,e,i){return function(s){i._trigger(t,s,e._uiHash(e))}}this.reverting=!1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!e&&n.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||n.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(n.push(function(t){this._trigger("remove",t,this._uiHash())}),n.push(function(t){return function(e){t._trigger("receive",e,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(t){return function(e){t._trigger("update",e,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)e||n.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,this.cancelHelperRemoval){if(!e){for(this._trigger("beforeStop",t,this._uiHash()),s=0;n.length>s;s++)n[s].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!1}if(e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null,!e){for(s=0;n.length>s;s++)n[s].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!0},_trigger:function(){t.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(e){var i=e||this;return{helper:i.helper,placeholder:i.placeholder||t([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:e?e.element:null}}})}(jQuery),function(t,e){var i="ui-effects-";t.effects={effect:{}},function(t,e){function i(t,e,i){var s=u[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:0>t?0:t>s.max?s.max:t)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(t,o){var a,r=o.re.exec(i),h=r&&o.parse(r),l=o.space||"rgba";return h?(a=s[l](h),s[c[l].cache]=a[c[l].cache],n=s._rgba=a._rgba,!1):e}),n.length?("0,0,0,0"===n.join()&&t.extend(n,o.transparent),s):o[i]}function n(t,e,i){return i=(i+1)%1,1>6*i?t+6*(e-t)*i:1>2*i?e:2>3*i?t+6*(e-t)*(2/3-i):t}var o,a="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[t[1],t[2],t[3],t[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[2.55*t[1],2.55*t[2],2.55*t[3],t[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(t){return[t[1],t[2]/100,t[3]/100,t[4]]}}],l=t.Color=function(e,i,s,n){return new t.Color.fn.parse(e,i,s,n)},c={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},u={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},d=l.support={},p=t("<p>")[0],f=t.each;p.style.cssText="background-color:rgba(1,1,1,.5)",d.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(c,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),l.fn=t.extend(l.prototype,{parse:function(n,a,r,h){if(n===e)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=t(n).css(a),a=e);var u=this,d=t.type(n),p=this._rgba=[];return a!==e&&(n=[n,a,r,h],d="array"),"string"===d?this.parse(s(n)||o._default):"array"===d?(f(c.rgba.props,function(t,e){p[e.idx]=i(n[e.idx],e)}),this):"object"===d?(n instanceof l?f(c,function(t,e){n[e.cache]&&(u[e.cache]=n[e.cache].slice())}):f(c,function(e,s){var o=s.cache;f(s.props,function(t,e){if(!u[o]&&s.to){if("alpha"===t||null==n[t])return;u[o]=s.to(u._rgba)}u[o][e.idx]=i(n[t],e,!0)}),u[o]&&0>t.inArray(null,u[o].slice(0,3))&&(u[o][3]=1,s.from&&(u._rgba=s.from(u[o])))}),this):e},is:function(t){var i=l(t),s=!0,n=this;return f(c,function(t,o){var a,r=i[o.cache];return r&&(a=n[o.cache]||o.to&&o.to(n._rgba)||[],f(o.props,function(t,i){return null!=r[i.idx]?s=r[i.idx]===a[i.idx]:e})),s}),s},_space:function(){var t=[],e=this;return f(c,function(i,s){e[s.cache]&&t.push(i)}),t.pop()},transition:function(t,e){var s=l(t),n=s._space(),o=c[n],a=0===this.alpha()?l("transparent"):this,r=a[o.cache]||o.to(a._rgba),h=r.slice();return s=s[o.cache],f(o.props,function(t,n){var o=n.idx,a=r[o],l=s[o],c=u[n.type]||{};null!==l&&(null===a?h[o]=l:(c.mod&&(l-a>c.mod/2?a+=c.mod:a-l>c.mod/2&&(a-=c.mod)),h[o]=i((l-a)*e+a,n)))}),this[n](h)},blend:function(e){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(e)._rgba;return l(t.map(i,function(t,e){return(1-s)*n[e]+s*t}))},toRgbaString:function(){var e="rgba(",i=t.map(this._rgba,function(t,e){return null==t?e>2?1:0:t});return 1===i[3]&&(i.pop(),e="rgb("),e+i.join()+")"},toHslaString:function(){var e="hsla(",i=t.map(this.hsla(),function(t,e){return null==t&&(t=e>2?1:0),e&&3>e&&(t=Math.round(100*t)+"%"),t});return 1===i[3]&&(i.pop(),e="hsl("),e+i.join()+")"},toHexString:function(e){var i=this._rgba.slice(),s=i.pop();return e&&i.push(~~(255*s)),"#"+t.map(i,function(t){return t=(t||0).toString(16),1===t.length?"0"+t:t}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,c.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e,i,s=t[0]/255,n=t[1]/255,o=t[2]/255,a=t[3],r=Math.max(s,n,o),h=Math.min(s,n,o),l=r-h,c=r+h,u=.5*c;return e=h===r?0:s===r?60*(n-o)/l+360:n===r?60*(o-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=u?l/c:l/(2-c),[Math.round(e)%360,i,u,null==a?1:a]},c.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,i=t[1],s=t[2],o=t[3],a=.5>=s?s*(1+i):s+i-s*i,r=2*s-a;return[Math.round(255*n(r,a,e+1/3)),Math.round(255*n(r,a,e)),Math.round(255*n(r,a,e-1/3)),o]},f(c,function(s,n){var o=n.props,a=n.cache,h=n.to,c=n.from;l.fn[s]=function(s){if(h&&!this[a]&&(this[a]=h(this._rgba)),s===e)return this[a].slice();var n,r=t.type(s),u="array"===r||"object"===r?s:arguments,d=this[a].slice();return f(o,function(t,e){var s=u["object"===r?t:e.idx];null==s&&(s=d[e.idx]),d[e.idx]=i(s,e)}),c?(n=l(c(d)),n[a]=d,n):l(d)},f(o,function(e,i){l.fn[e]||(l.fn[e]=function(n){var o,a=t.type(n),h="alpha"===e?this._hsla?"hsla":"rgba":s,l=this[h](),c=l[i.idx];return"undefined"===a?c:("function"===a&&(n=n.call(this,c),a=t.type(n)),null==n&&i.empty?this:("string"===a&&(o=r.exec(n),o&&(n=c+parseFloat(o[2])*("+"===o[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(e){var i=e.split(" ");f(i,function(e,i){t.cssHooks[i]={set:function(e,n){var o,a,r="";if("transparent"!==n&&("string"!==t.type(n)||(o=s(n)))){if(n=l(o||n),!d.rgba&&1!==n._rgba[3]){for(a="backgroundColor"===i?e.parentNode:e;(""===r||"transparent"===r)&&a&&a.style;)try{r=t.css(a,"backgroundColor"),a=a.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{e.style[i]=n}catch(h){}}},t.fx.step[i]=function(e){e.colorInit||(e.start=l(e.elem,i),e.end=l(e.end),e.colorInit=!0),t.cssHooks[i].set(e.elem,e.start.transition(e.end,e.pos))}})},l.hook(a),t.cssHooks.borderColor={expand:function(t){var e={};return f(["Top","Right","Bottom","Left"],function(i,s){e["border"+s+"Color"]=t}),e}},o=t.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(jQuery),function(){function i(e){var i,s,n=e.ownerDocument.defaultView?e.ownerDocument.defaultView.getComputedStyle(e,null):e.currentStyle,o={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(o[t.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(o[i]=n[i]);return o}function s(e,i){var s,n,a={};for(s in i)n=i[s],e[s]!==n&&(o[s]||(t.fx.step[s]||!isNaN(parseFloat(n)))&&(a[s]=n));return a}var n=["add","remove","toggle"],o={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};t.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(e,i){t.fx.step[i]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(jQuery.style(t.elem,i,t.end),t.setAttr=!0)}}),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.effects.animateClass=function(e,o,a,r){var h=t.speed(o,a,r);return this.queue(function(){var o,a=t(this),r=a.attr("class")||"",l=h.children?a.find("*").addBack():a;l=l.map(function(){var e=t(this);return{el:e,start:i(this)}}),o=function(){t.each(n,function(t,i){e[i]&&a[i+"Class"](e[i])})},o(),l=l.map(function(){return this.end=i(this.el[0]),this.diff=s(this.start,this.end),this}),a.attr("class",r),l=l.map(function(){var e=this,i=t.Deferred(),s=t.extend({},h,{queue:!1,complete:function(){i.resolve(e)}});return this.el.animate(this.diff,s),i.promise()}),t.when.apply(t,l.get()).done(function(){o(),t.each(arguments,function(){var e=this.el;t.each(this.diff,function(t){e.css(t,"")})}),h.complete.call(a[0])})})},t.fn.extend({addClass:function(e){return function(i,s,n,o){return s?t.effects.animateClass.call(this,{add:i},s,n,o):e.apply(this,arguments)}}(t.fn.addClass),removeClass:function(e){return function(i,s,n,o){return arguments.length>1?t.effects.animateClass.call(this,{remove:i},s,n,o):e.apply(this,arguments)}}(t.fn.removeClass),toggleClass:function(i){return function(s,n,o,a,r){return"boolean"==typeof n||n===e?o?t.effects.animateClass.call(this,n?{add:s}:{remove:s},o,a,r):i.apply(this,arguments):t.effects.animateClass.call(this,{toggle:s},n,o,a)}}(t.fn.toggleClass),switchClass:function(e,i,s,n,o){return t.effects.animateClass.call(this,{add:i,remove:e},s,n,o)}})}(),function(){function s(e,i,s,n){return t.isPlainObject(e)&&(i=e,e=e.effect),e={effect:e},null==i&&(i={}),t.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||t.fx.speeds[i])&&(n=s,s=i,i={}),t.isFunction(s)&&(n=s,s=null),i&&t.extend(e,i),s=s||i.duration,e.duration=t.fx.off?0:"number"==typeof s?s:s in t.fx.speeds?t.fx.speeds[s]:t.fx.speeds._default,e.complete=n||i.complete,e}function n(e){return!e||"number"==typeof e||t.fx.speeds[e]?!0:"string"!=typeof e||t.effects.effect[e]?t.isFunction(e)?!0:"object"!=typeof e||e.effect?!1:!0:!0}t.extend(t.effects,{version:"1.10.4",save:function(t,e){for(var s=0;e.length>s;s++)null!==e[s]&&t.data(i+e[s],t[0].style[e[s]])},restore:function(t,s){var n,o;for(o=0;s.length>o;o++)null!==s[o]&&(n=t.data(i+s[o]),n===e&&(n=""),t.css(s[o],n))},setMode:function(t,e){return"toggle"===e&&(e=t.is(":hidden")?"show":"hide"),e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createWrapper:function(e){if(e.parent().is(".ui-effects-wrapper"))return e.parent();var i={width:e.outerWidth(!0),height:e.outerHeight(!0),"float":e.css("float")},s=t("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:e.width(),height:e.height()},o=document.activeElement;try{o.id}catch(a){o=document.body}return e.wrap(s),(e[0]===o||t.contains(e[0],o))&&t(o).focus(),s=e.parent(),"static"===e.css("position")?(s.css({position:"relative"}),e.css({position:"relative"})):(t.extend(i,{position:e.css("position"),zIndex:e.css("z-index")}),t.each(["top","left","bottom","right"],function(t,s){i[s]=e.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),e.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),e.css(n),s.css(i).show()},removeWrapper:function(e){var i=document.activeElement;return e.parent().is(".ui-effects-wrapper")&&(e.parent().replaceWith(e),(e[0]===i||t.contains(e[0],i))&&t(i).focus()),e},setTransition:function(e,i,s,n){return n=n||{},t.each(i,function(t,i){var o=e.cssUnit(i);o[0]>0&&(n[i]=o[0]*s+o[1])}),n}}),t.fn.extend({effect:function(){function e(e){function s(){t.isFunction(o)&&o.call(n[0]),t.isFunction(e)&&e()}var n=t(this),o=i.complete,r=i.mode;(n.is(":hidden")?"hide"===r:"show"===r)?(n[r](),s()):a.call(n[0],i,s)}var i=s.apply(this,arguments),n=i.mode,o=i.queue,a=t.effects.effect[i.effect];return t.fx.off||!a?n?this[n](i.duration,i.complete):this.each(function(){i.complete&&i.complete.call(this)}):o===!1?this.each(e):this.queue(o||"fx",e)},show:function(t){return function(e){if(n(e))return t.apply(this,arguments);var i=s.apply(this,arguments);return i.mode="show",this.effect.call(this,i)}}(t.fn.show),hide:function(t){return function(e){if(n(e))return t.apply(this,arguments);var i=s.apply(this,arguments);return i.mode="hide",this.effect.call(this,i)}}(t.fn.hide),toggle:function(t){return function(e){if(n(e)||"boolean"==typeof e)return t.apply(this,arguments);var i=s.apply(this,arguments);return i.mode="toggle",this.effect.call(this,i)}}(t.fn.toggle),cssUnit:function(e){var i=this.css(e),s=[];return t.each(["em","px","%","pt"],function(t,e){i.indexOf(e)>0&&(s=[parseFloat(i),e])}),s}})}(),function(){var e={};t.each(["Quad","Cubic","Quart","Quint","Expo"],function(t,i){e[i]=function(e){return Math.pow(e,t+2)}}),t.extend(e,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;((e=Math.pow(2,--i))-1)/11>t;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),t.each(e,function(e,i){t.easing["easeIn"+e]=i,t.easing["easeOut"+e]=function(t){return 1-i(1-t)},t.easing["easeInOut"+e]=function(t){return.5>t?i(2*t)/2:1-i(-2*t+2)/2}})}()}(jQuery),function(t){var e=0,i={},s={};i.height=i.paddingTop=i.paddingBottom=i.borderTopWidth=i.borderBottomWidth="hide",s.height=s.paddingTop=s.paddingBottom=s.borderTopWidth=s.borderBottomWidth="show",t.widget("ui.accordion",{version:"1.10.4",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},_create:function(){var e=this.options;this.prevShow=this.prevHide=t(),this.element.addClass("ui-accordion ui-widget ui-helper-reset").attr("role","tablist"),e.collapsible||e.active!==!1&&null!=e.active||(e.active=0),this._processPanels(),0>e.active&&(e.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():t(),content:this.active.length?this.active.next():t()}},_createIcons:function(){var e=this.options.icons;e&&(t("<span>").addClass("ui-accordion-header-icon ui-icon "+e.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(e.header).addClass(e.activeHeader),this.headers.addClass("ui-accordion-icons")) -},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){return"active"===t?(this._activate(e),undefined):("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||this.options.active!==!1||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons()),"disabled"===t&&this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!e),undefined)},_keydown:function(e){if(!e.altKey&&!e.ctrlKey){var i=t.ui.keyCode,s=this.headers.length,n=this.headers.index(e.target),o=!1;switch(e.keyCode){case i.RIGHT:case i.DOWN:o=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:o=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(e);break;case i.HOME:o=this.headers[0];break;case i.END:o=this.headers[s-1]}o&&(t(e.target).attr("tabIndex",-1),t(o).attr("tabIndex",0),o.focus(),e.preventDefault())}},_panelKeyDown:function(e){e.keyCode===t.ui.keyCode.UP&&e.ctrlKey&&t(e.currentTarget).prev().focus()},refresh:function(){var e=this.options;this._processPanels(),e.active===!1&&e.collapsible===!0||!this.headers.length?(e.active=!1,this.active=t()):e.active===!1?this._activate(0):this.active.length&&!t.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(e.active=!1,this.active=t()):this._activate(Math.max(0,e.active-1)):e.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){this.headers=this.element.find(this.options.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all"),this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").filter(":not(.ui-accordion-content-active)").hide()},_refresh:function(){var i,s=this.options,n=s.heightStyle,o=this.element.parent(),a=this.accordionId="ui-accordion-"+(this.element.attr("id")||++e);this.active=this._findActive(s.active).addClass("ui-accordion-header-active ui-state-active ui-corner-top").removeClass("ui-corner-all"),this.active.next().addClass("ui-accordion-content-active").show(),this.headers.attr("role","tab").each(function(e){var i=t(this),s=i.attr("id"),n=i.next(),o=n.attr("id");s||(s=a+"-header-"+e,i.attr("id",s)),o||(o=a+"-panel-"+e,n.attr("id",o)),i.attr("aria-controls",o),n.attr("aria-labelledby",s)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(s.event),"fill"===n?(i=o.height(),this.element.siblings(":visible").each(function(){var e=t(this),s=e.css("position");"absolute"!==s&&"fixed"!==s&&(i-=e.outerHeight(!0))}),this.headers.each(function(){i-=t(this).outerHeight(!0)}),this.headers.next().each(function(){t(this).height(Math.max(0,i-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===n&&(i=0,this.headers.next().each(function(){i=Math.max(i,t(this).css("height","").height())}).height(i))},_activate:function(e){var i=this._findActive(e)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return"number"==typeof e?this.headers.eq(e):t()},_setupEvents:function(e){var i={keydown:"_keydown"};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(e){var i=this.options,s=this.active,n=t(e.currentTarget),o=n[0]===s[0],a=o&&i.collapsible,r=a?t():n.next(),h=s.next(),l={oldHeader:s,oldPanel:h,newHeader:a?t():n,newPanel:r};e.preventDefault(),o&&!i.collapsible||this._trigger("beforeActivate",e,l)===!1||(i.active=a?!1:this.headers.index(n),this.active=o?t():n,this._toggle(l),s.removeClass("ui-accordion-header-active ui-state-active"),i.icons&&s.children(".ui-accordion-header-icon").removeClass(i.icons.activeHeader).addClass(i.icons.header),o||(n.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),i.icons&&n.children(".ui-accordion-header-icon").removeClass(i.icons.header).addClass(i.icons.activeHeader),n.next().addClass("ui-accordion-content-active")))},_toggle:function(e){var i=e.newPanel,s=this.prevShow.length?this.prevShow:e.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,e):(s.hide(),i.show(),this._toggleComplete(e)),s.attr({"aria-hidden":"true"}),s.prev().attr("aria-selected","false"),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===t(this).attr("tabIndex")}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true",tabIndex:0,"aria-expanded":"true"})},_animate:function(t,e,n){var o,a,r,h=this,l=0,c=t.length&&(!e.length||t.index()<e.index()),u=this.options.animate||{},d=c&&u.down||u,p=function(){h._toggleComplete(n)};return"number"==typeof d&&(r=d),"string"==typeof d&&(a=d),a=a||d.easing||u.easing,r=r||d.duration||u.duration,e.length?t.length?(o=t.show().outerHeight(),e.animate(i,{duration:r,easing:a,step:function(t,e){e.now=Math.round(t)}}),t.hide().animate(s,{duration:r,easing:a,complete:p,step:function(t,i){i.now=Math.round(t),"height"!==i.prop?l+=i.now:"content"!==h.options.heightStyle&&(i.now=Math.round(o-e.outerHeight()-l),l=0)}}),undefined):e.animate(i,r,a,p):t.animate(s,r,a,p)},_toggleComplete:function(t){var e=t.oldPanel;e.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"),e.length&&(e.parent()[0].className=e.parent()[0].className),this._trigger("activate",null,t)}})}(jQuery),function(t){t.widget("ui.autocomplete",{version:"1.10.4",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),o="textarea"===n,a="input"===n;this.isMultiLine=o?!0:a?!1:this.element.prop("isContentEditable"),this.valueMethod=this.element[o||a?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,i=!0,undefined;e=!1,s=!1,i=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:case o.NUMPAD_ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),undefined;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),undefined):(this._searchTimeout(t),undefined)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,undefined):(clearTimeout(this.searching),this.close(t),this._change(t),undefined)}}),this._initSource(),this.menu=t("<ul>").addClass("ui-autocomplete ui-front").appendTo(this._appendTo()).menu({role:null}).hide().data("ui-menu"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var i=this.menu.element[0];t(e.target).closest(".ui-menu-item").length||this._delay(function(){var e=this;this.document.one("mousedown",function(s){s.target===e.element[0]||s.target===i||t.contains(i,s.target)||e.close()})})},menufocus:function(e,i){if(this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type)))return this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),undefined;var s=i.item.data("ui-autocomplete-item");!1!==this._trigger("focus",e,{item:s})?e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(s.value):this.liveRegion.text(s.value)},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=t("<span>",{role:"status","aria-live":"polite"}).addClass("ui-helper-hidden-accessible").insertBefore(this.element),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e||(e=this.element.closest(".ui-front")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){this.term!==this._value()&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length<this.options.minLength?this.close(e):this._trigger("search",e)!==!1?this._search(t):undefined},_search:function(t){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:t},this._response())},_response:function(){var e=++this.requestIndex;return t.proxy(function(t){e===this.requestIndex&&this.__response(t),this.pending--,this.pending||this.element.removeClass("ui-autocomplete-loading")},this)},__response:function(t){t&&(t=this._normalize(t)),this._trigger("response",null,{content:t}),!this.options.disabled&&t&&t.length&&!this.cancelSearch?(this._suggest(t),this._trigger("open")):this._close()},close:function(t){this.cancelSearch=!0,this._close(t)},_close:function(t){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",t))},_change:function(t){this.previous!==this._value()&&this._trigger("change",t,{item:this.selectedItem})},_normalize:function(e){return e.length&&e[0].label&&e[0].value?e:t.map(e,function(e){return"string"==typeof e?{label:e,value:e}:t.extend({label:e.label||e.value,value:e.value||e.label},e)})},_suggest:function(e){var i=this.menu.element.empty();this._renderMenu(i,e),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(t.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var t=this.menu.element;t.outerWidth(Math.max(t.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(e,i){var s=this;t.each(i,function(t,i){s._renderItemData(e,i)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-autocomplete-item",e)},_renderItem:function(e,i){return t("<li>").append(t("<a>").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this._value(this.term),this.menu.blur(),undefined):(this.menu[t](e),undefined):(this.search(null,e),undefined)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){var e;this._superApply(arguments),this.options.disabled||this.cancelSearch||(e=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,this.liveRegion.text(e))}})}(jQuery),function(t){var e,i="ui-button ui-widget ui-state-default ui-corner-all",s="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",n=function(){var e=t(this);setTimeout(function(){e.find(":ui-button").button("refresh")},1)},o=function(e){var i=e.name,s=e.form,n=t([]);return i&&(i=i.replace(/'/g,"\\'"),n=s?t(s).find("[name='"+i+"']"):t("[name='"+i+"']",e.ownerDocument).filter(function(){return!this.form})),n};t.widget("ui.button",{version:"1.10.4",defaultElement:"<button>",options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset"+this.eventNamespace).bind("reset"+this.eventNamespace,n),"boolean"!=typeof this.options.disabled?this.options.disabled=!!this.element.prop("disabled"):this.element.prop("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var s=this,a=this.options,r="checkbox"===this.type||"radio"===this.type,h=r?"":"ui-state-active";null===a.label&&(a.label="input"===this.type?this.buttonElement.val():this.buttonElement.html()),this._hoverable(this.buttonElement),this.buttonElement.addClass(i).attr("role","button").bind("mouseenter"+this.eventNamespace,function(){a.disabled||this===e&&t(this).addClass("ui-state-active")}).bind("mouseleave"+this.eventNamespace,function(){a.disabled||t(this).removeClass(h)}).bind("click"+this.eventNamespace,function(t){a.disabled&&(t.preventDefault(),t.stopImmediatePropagation())}),this._on({focus:function(){this.buttonElement.addClass("ui-state-focus")},blur:function(){this.buttonElement.removeClass("ui-state-focus")}}),r&&this.element.bind("change"+this.eventNamespace,function(){s.refresh()}),"checkbox"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){return a.disabled?!1:undefined}):"radio"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){if(a.disabled)return!1;t(this).addClass("ui-state-active"),s.buttonElement.attr("aria-pressed","true");var e=s.element[0];o(e).not(e).map(function(){return t(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown"+this.eventNamespace,function(){return a.disabled?!1:(t(this).addClass("ui-state-active"),e=this,s.document.one("mouseup",function(){e=null}),undefined)}).bind("mouseup"+this.eventNamespace,function(){return a.disabled?!1:(t(this).removeClass("ui-state-active"),undefined)}).bind("keydown"+this.eventNamespace,function(e){return a.disabled?!1:((e.keyCode===t.ui.keyCode.SPACE||e.keyCode===t.ui.keyCode.ENTER)&&t(this).addClass("ui-state-active"),undefined)}).bind("keyup"+this.eventNamespace+" blur"+this.eventNamespace,function(){t(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(e){e.keyCode===t.ui.keyCode.SPACE&&t(this).click()})),this._setOption("disabled",a.disabled),this._resetButton()},_determineButtonType:function(){var t,e,i;this.type=this.element.is("[type=checkbox]")?"checkbox":this.element.is("[type=radio]")?"radio":this.element.is("input")?"input":"button","checkbox"===this.type||"radio"===this.type?(t=this.element.parents().last(),e="label[for='"+this.element.attr("id")+"']",this.buttonElement=t.find(e),this.buttonElement.length||(t=t.length?t.siblings():this.element.siblings(),this.buttonElement=t.filter(e),this.buttonElement.length||(this.buttonElement=t.find(e))),this.element.addClass("ui-helper-hidden-accessible"),i=this.element.is(":checked"),i&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.prop("aria-pressed",i)):this.buttonElement=this.element},widget:function(){return this.buttonElement},_destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(i+" ui-state-active "+s).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title")},_setOption:function(t,e){return this._super(t,e),"disabled"===t?(this.element.prop("disabled",!!e),e&&this.buttonElement.removeClass("ui-state-focus"),undefined):(this._resetButton(),undefined)},refresh:function(){var e=this.element.is("input, button")?this.element.is(":disabled"):this.element.hasClass("ui-button-disabled");e!==this.options.disabled&&this._setOption("disabled",e),"radio"===this.type?o(this.element[0]).each(function(){t(this).is(":checked")?t(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):t(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):"checkbox"===this.type&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if("input"===this.type)return this.options.label&&this.element.val(this.options.label),undefined;var e=this.buttonElement.removeClass(s),i=t("<span></span>",this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(e.empty()).text(),n=this.options.icons,o=n.primary&&n.secondary,a=[];n.primary||n.secondary?(this.options.text&&a.push("ui-button-text-icon"+(o?"s":n.primary?"-primary":"-secondary")),n.primary&&e.prepend("<span class='ui-button-icon-primary ui-icon "+n.primary+"'></span>"),n.secondary&&e.append("<span class='ui-button-icon-secondary ui-icon "+n.secondary+"'></span>"),this.options.text||(a.push(o?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||e.attr("title",t.trim(i)))):a.push("ui-button-text-only"),e.addClass(a.join(" "))}}),t.widget("ui.buttonset",{version:"1.10.4",options:{items:"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(t,e){"disabled"===t&&this.buttons.button("option",t,e),this._super(t,e)},refresh:function(){var e="rtl"===this.element.css("direction");this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return t(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(e?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(e?"ui-corner-left":"ui-corner-right").end().end()},_destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return t(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy")}})}(jQuery),function(t,e){function i(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},t.extend(this._defaults,this.regional[""]),this.dpDiv=s(t("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function s(e){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return e.delegate(i,"mouseout",function(){t(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).removeClass("ui-datepicker-next-hover")}).delegate(i,"mouseover",function(){t.datepicker._isDisabledDatepicker(o.inline?e.parent()[0]:o.input[0])||(t(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),t(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).addClass("ui-datepicker-next-hover"))})}function n(e,i){t.extend(e,i);for(var s in i)null==i[s]&&(e[s]=i[s]);return e}t.extend(t.ui,{datepicker:{version:"1.10.4"}});var o,a="datepicker";t.extend(i.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(t){return n(this._defaults,t||{}),this},_attachDatepicker:function(e,i){var s,n,o;s=e.nodeName.toLowerCase(),n="div"===s||"span"===s,e.id||(this.uuid+=1,e.id="dp"+this.uuid),o=this._newInst(t(e),n),o.settings=t.extend({},i||{}),"input"===s?this._connectDatepicker(e,o):n&&this._inlineDatepicker(e,o)},_newInst:function(e,i){var n=e[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:n,input:e,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?s(t("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(e,i){var s=t(e);i.append=t([]),i.trigger=t([]),s.hasClass(this.markerClassName)||(this._attachments(s,i),s.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp),this._autoSize(i),t.data(e,a,i),i.settings.disabled&&this._disableDatepicker(e))},_attachments:function(e,i){var s,n,o,a=this._get(i,"appendText"),r=this._get(i,"isRTL");i.append&&i.append.remove(),a&&(i.append=t("<span class='"+this._appendClass+"'>"+a+"</span>"),e[r?"before":"after"](i.append)),e.unbind("focus",this._showDatepicker),i.trigger&&i.trigger.remove(),s=this._get(i,"showOn"),("focus"===s||"both"===s)&&e.focus(this._showDatepicker),("button"===s||"both"===s)&&(n=this._get(i,"buttonText"),o=this._get(i,"buttonImage"),i.trigger=t(this._get(i,"buttonImageOnly")?t("<img/>").addClass(this._triggerClass).attr({src:o,alt:n,title:n}):t("<button type='button'></button>").addClass(this._triggerClass).html(o?t("<img/>").attr({src:o,alt:n,title:n}):n)),e[r?"before":"after"](i.trigger),i.trigger.click(function(){return t.datepicker._datepickerShowing&&t.datepicker._lastInput===e[0]?t.datepicker._hideDatepicker():t.datepicker._datepickerShowing&&t.datepicker._lastInput!==e[0]?(t.datepicker._hideDatepicker(),t.datepicker._showDatepicker(e[0])):t.datepicker._showDatepicker(e[0]),!1}))},_autoSize:function(t){if(this._get(t,"autoSize")&&!t.inline){var e,i,s,n,o=new Date(2009,11,20),a=this._get(t,"dateFormat");a.match(/[DM]/)&&(e=function(t){for(i=0,s=0,n=0;t.length>n;n++)t[n].length>i&&(i=t[n].length,s=n);return s},o.setMonth(e(this._get(t,a.match(/MM/)?"monthNames":"monthNamesShort"))),o.setDate(e(this._get(t,a.match(/DD/)?"dayNames":"dayNamesShort"))+20-o.getDay())),t.input.attr("size",this._formatDate(t,o).length)}},_inlineDatepicker:function(e,i){var s=t(e);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),t.data(e,a,i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(e),i.dpDiv.css("display","block"))},_dialogDatepicker:function(e,i,s,o,r){var h,l,c,u,d,p=this._dialogInst;return p||(this.uuid+=1,h="dp"+this.uuid,this._dialogInput=t("<input type='text' id='"+h+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.keydown(this._doKeyDown),t("body").append(this._dialogInput),p=this._dialogInst=this._newInst(this._dialogInput,!1),p.settings={},t.data(this._dialogInput[0],a,p)),n(p.settings,o||{}),i=i&&i.constructor===Date?this._formatDate(p,i):i,this._dialogInput.val(i),this._pos=r?r.length?r:[r.pageX,r.pageY]:null,this._pos||(l=document.documentElement.clientWidth,c=document.documentElement.clientHeight,u=document.documentElement.scrollLeft||document.body.scrollLeft,d=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[l/2-100+u,c/2-150+d]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),p.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),t.blockUI&&t.blockUI(this.dpDiv),t.data(this._dialogInput[0],a,p),this},_destroyDatepicker:function(e){var i,s=t(e),n=t.data(e,a);s.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),t.removeData(e,a),"input"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty())},_enableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,a);n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!1,o.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,a);n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!0,o.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(!t)return!1;for(var e=0;this._disabledInputs.length>e;e++)if(this._disabledInputs[e]===t)return!0;return!1},_getInst:function(e){try{return t.data(e,a)}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(i,s,o){var a,r,h,l,c=this._getInst(i);return 2===arguments.length&&"string"==typeof s?"defaults"===s?t.extend({},t.datepicker._defaults):c?"all"===s?t.extend({},c.settings):this._get(c,s):null:(a=s||{},"string"==typeof s&&(a={},a[s]=o),c&&(this._curInst===c&&this._hideDatepicker(),r=this._getDateDatepicker(i,!0),h=this._getMinMaxDate(c,"min"),l=this._getMinMaxDate(c,"max"),n(c.settings,a),null!==h&&a.dateFormat!==e&&a.minDate===e&&(c.settings.minDate=this._formatDate(c,h)),null!==l&&a.dateFormat!==e&&a.maxDate===e&&(c.settings.maxDate=this._formatDate(c,l)),"disabled"in a&&(a.disabled?this._disableDatepicker(i):this._enableDatepicker(i)),this._attachments(t(i),c),this._autoSize(c),this._setDate(c,r),this._updateAlternate(c),this._updateDatepicker(c)),e)},_changeDatepicker:function(t,e,i){this._optionDatepicker(t,e,i)},_refreshDatepicker:function(t){var e=this._getInst(t);e&&this._updateDatepicker(e)},_setDateDatepicker:function(t,e){var i=this._getInst(t);i&&(this._setDate(i,e),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(t,e){var i=this._getInst(t);return i&&!i.inline&&this._setDateFromField(i,e),i?this._getDate(i):null},_doKeyDown:function(e){var i,s,n,o=t.datepicker._getInst(e.target),a=!0,r=o.dpDiv.is(".ui-datepicker-rtl");if(o._keyEvent=!0,t.datepicker._datepickerShowing)switch(e.keyCode){case 9:t.datepicker._hideDatepicker(),a=!1;break;case 13:return n=t("td."+t.datepicker._dayOverClass+":not(."+t.datepicker._currentClass+")",o.dpDiv),n[0]&&t.datepicker._selectDay(e.target,o.selectedMonth,o.selectedYear,n[0]),i=t.datepicker._get(o,"onSelect"),i?(s=t.datepicker._formatDate(o),i.apply(o.input?o.input[0]:null,[s,o])):t.datepicker._hideDatepicker(),!1;case 27:t.datepicker._hideDatepicker();break;case 33:t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 34:t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M"); -break;case 35:(e.ctrlKey||e.metaKey)&&t.datepicker._clearDate(e.target),a=e.ctrlKey||e.metaKey;break;case 36:(e.ctrlKey||e.metaKey)&&t.datepicker._gotoToday(e.target),a=e.ctrlKey||e.metaKey;break;case 37:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?1:-1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 38:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,-7,"D"),a=e.ctrlKey||e.metaKey;break;case 39:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?-1:1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 40:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,7,"D"),a=e.ctrlKey||e.metaKey;break;default:a=!1}else 36===e.keyCode&&e.ctrlKey?t.datepicker._showDatepicker(this):a=!1;a&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(i){var s,n,o=t.datepicker._getInst(i.target);return t.datepicker._get(o,"constrainInput")?(s=t.datepicker._possibleChars(t.datepicker._get(o,"dateFormat")),n=String.fromCharCode(null==i.charCode?i.keyCode:i.charCode),i.ctrlKey||i.metaKey||" ">n||!s||s.indexOf(n)>-1):e},_doKeyUp:function(e){var i,s=t.datepicker._getInst(e.target);if(s.input.val()!==s.lastVal)try{i=t.datepicker.parseDate(t.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,t.datepicker._getFormatConfig(s)),i&&(t.datepicker._setDateFromField(s),t.datepicker._updateAlternate(s),t.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(e){if(e=e.target||e,"input"!==e.nodeName.toLowerCase()&&(e=t("input",e.parentNode)[0]),!t.datepicker._isDisabledDatepicker(e)&&t.datepicker._lastInput!==e){var i,s,o,a,r,h,l;i=t.datepicker._getInst(e),t.datepicker._curInst&&t.datepicker._curInst!==i&&(t.datepicker._curInst.dpDiv.stop(!0,!0),i&&t.datepicker._datepickerShowing&&t.datepicker._hideDatepicker(t.datepicker._curInst.input[0])),s=t.datepicker._get(i,"beforeShow"),o=s?s.apply(e,[e,i]):{},o!==!1&&(n(i.settings,o),i.lastVal=null,t.datepicker._lastInput=e,t.datepicker._setDateFromField(i),t.datepicker._inDialog&&(e.value=""),t.datepicker._pos||(t.datepicker._pos=t.datepicker._findPos(e),t.datepicker._pos[1]+=e.offsetHeight),a=!1,t(e).parents().each(function(){return a|="fixed"===t(this).css("position"),!a}),r={left:t.datepicker._pos[0],top:t.datepicker._pos[1]},t.datepicker._pos=null,i.dpDiv.empty(),i.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),t.datepicker._updateDatepicker(i),r=t.datepicker._checkOffset(i,r,a),i.dpDiv.css({position:t.datepicker._inDialog&&t.blockUI?"static":a?"fixed":"absolute",display:"none",left:r.left+"px",top:r.top+"px"}),i.inline||(h=t.datepicker._get(i,"showAnim"),l=t.datepicker._get(i,"duration"),i.dpDiv.zIndex(t(e).zIndex()+1),t.datepicker._datepickerShowing=!0,t.effects&&t.effects.effect[h]?i.dpDiv.show(h,t.datepicker._get(i,"showOptions"),l):i.dpDiv[h||"show"](h?l:null),t.datepicker._shouldFocusInput(i)&&i.input.focus(),t.datepicker._curInst=i))}},_updateDatepicker:function(e){this.maxRows=4,o=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e),e.dpDiv.find("."+this._dayOverClass+" a").mouseover();var i,s=this._getNumberOfMonths(e),n=s[1],a=17;e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&e.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",a*n+"em"),e.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),e.dpDiv[(this._get(e,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),e===t.datepicker._curInst&&t.datepicker._datepickerShowing&&t.datepicker._shouldFocusInput(e)&&e.input.focus(),e.yearshtml&&(i=e.yearshtml,setTimeout(function(){i===e.yearshtml&&e.yearshtml&&e.dpDiv.find("select.ui-datepicker-year:first").replaceWith(e.yearshtml),i=e.yearshtml=null},0))},_shouldFocusInput:function(t){return t.input&&t.input.is(":visible")&&!t.input.is(":disabled")&&!t.input.is(":focus")},_checkOffset:function(e,i,s){var n=e.dpDiv.outerWidth(),o=e.dpDiv.outerHeight(),a=e.input?e.input.outerWidth():0,r=e.input?e.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:t(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:t(document).scrollTop());return i.left-=this._get(e,"isRTL")?n-a:0,i.left-=s&&i.left===e.input.offset().left?t(document).scrollLeft():0,i.top-=s&&i.top===e.input.offset().top+r?t(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+o>l&&l>o?Math.abs(o+r):0),i},_findPos:function(e){for(var i,s=this._getInst(e),n=this._get(s,"isRTL");e&&("hidden"===e.type||1!==e.nodeType||t.expr.filters.hidden(e));)e=e[n?"previousSibling":"nextSibling"];return i=t(e).offset(),[i.left,i.top]},_hideDatepicker:function(e){var i,s,n,o,r=this._curInst;!r||e&&r!==t.data(e,a)||this._datepickerShowing&&(i=this._get(r,"showAnim"),s=this._get(r,"duration"),n=function(){t.datepicker._tidyDialog(r)},t.effects&&(t.effects.effect[i]||t.effects[i])?r.dpDiv.hide(i,t.datepicker._get(r,"showOptions"),s,n):r.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!1,o=this._get(r,"onClose"),o&&o.apply(r.input?r.input[0]:null,[r.input?r.input.val():"",r]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),t.blockUI&&(t.unblockUI(),t("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(t){t.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(e){if(t.datepicker._curInst){var i=t(e.target),s=t.datepicker._getInst(i[0]);(i[0].id!==t.datepicker._mainDivId&&0===i.parents("#"+t.datepicker._mainDivId).length&&!i.hasClass(t.datepicker.markerClassName)&&!i.closest("."+t.datepicker._triggerClass).length&&t.datepicker._datepickerShowing&&(!t.datepicker._inDialog||!t.blockUI)||i.hasClass(t.datepicker.markerClassName)&&t.datepicker._curInst!==s)&&t.datepicker._hideDatepicker()}},_adjustDate:function(e,i,s){var n=t(e),o=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(o,i+("M"===s?this._get(o,"showCurrentAtPos"):0),s),this._updateDatepicker(o))},_gotoToday:function(e){var i,s=t(e),n=this._getInst(s[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(e,i,s){var n=t(e),o=this._getInst(n[0]);o["selected"+("M"===s?"Month":"Year")]=o["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(o),this._adjustDate(n)},_selectDay:function(e,i,s,n){var o,a=t(e);t(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(a[0])||(o=this._getInst(a[0]),o.selectedDay=o.currentDay=t("a",n).html(),o.selectedMonth=o.currentMonth=i,o.selectedYear=o.currentYear=s,this._selectDate(e,this._formatDate(o,o.currentDay,o.currentMonth,o.currentYear)))},_clearDate:function(e){var i=t(e);this._selectDate(i,"")},_selectDate:function(e,i){var s,n=t(e),o=this._getInst(n[0]);i=null!=i?i:this._formatDate(o),o.input&&o.input.val(i),this._updateAlternate(o),s=this._get(o,"onSelect"),s?s.apply(o.input?o.input[0]:null,[i,o]):o.input&&o.input.trigger("change"),o.inline?this._updateDatepicker(o):(this._hideDatepicker(),this._lastInput=o.input[0],"object"!=typeof o.input[0]&&o.input.focus(),this._lastInput=null)},_updateAlternate:function(e){var i,s,n,o=this._get(e,"altField");o&&(i=this._get(e,"altFormat")||this._get(e,"dateFormat"),s=this._getDate(e),n=this.formatDate(i,s,this._getFormatConfig(e)),t(o).each(function(){t(this).val(n)}))},noWeekends:function(t){var e=t.getDay();return[e>0&&6>e,""]},iso8601Week:function(t){var e,i=new Date(t.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),e=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((e-i)/864e5)/7)+1},parseDate:function(i,s,n){if(null==i||null==s)throw"Invalid arguments";if(s="object"==typeof s?""+s:s+"",""===s)return null;var o,a,r,h,l=0,c=(n?n.shortYearCutoff:null)||this._defaults.shortYearCutoff,u="string"!=typeof c?c:(new Date).getFullYear()%100+parseInt(c,10),d=(n?n.dayNamesShort:null)||this._defaults.dayNamesShort,p=(n?n.dayNames:null)||this._defaults.dayNames,f=(n?n.monthNamesShort:null)||this._defaults.monthNamesShort,g=(n?n.monthNames:null)||this._defaults.monthNames,m=-1,v=-1,_=-1,b=-1,y=!1,w=function(t){var e=i.length>o+1&&i.charAt(o+1)===t;return e&&o++,e},x=function(t){var e=w(t),i="@"===t?14:"!"===t?20:"y"===t&&e?4:"o"===t?3:2,n=RegExp("^\\d{1,"+i+"}"),o=s.substring(l).match(n);if(!o)throw"Missing number at position "+l;return l+=o[0].length,parseInt(o[0],10)},k=function(i,n,o){var a=-1,r=t.map(w(i)?o:n,function(t,e){return[[e,t]]}).sort(function(t,e){return-(t[1].length-e[1].length)});if(t.each(r,function(t,i){var n=i[1];return s.substr(l,n.length).toLowerCase()===n.toLowerCase()?(a=i[0],l+=n.length,!1):e}),-1!==a)return a+1;throw"Unknown name at position "+l},D=function(){if(s.charAt(l)!==i.charAt(o))throw"Unexpected literal at position "+l;l++};for(o=0;i.length>o;o++)if(y)"'"!==i.charAt(o)||w("'")?D():y=!1;else switch(i.charAt(o)){case"d":_=x("d");break;case"D":k("D",d,p);break;case"o":b=x("o");break;case"m":v=x("m");break;case"M":v=k("M",f,g);break;case"y":m=x("y");break;case"@":h=new Date(x("@")),m=h.getFullYear(),v=h.getMonth()+1,_=h.getDate();break;case"!":h=new Date((x("!")-this._ticksTo1970)/1e4),m=h.getFullYear(),v=h.getMonth()+1,_=h.getDate();break;case"'":w("'")?D():y=!0;break;default:D()}if(s.length>l&&(r=s.substr(l),!/^\s+/.test(r)))throw"Extra/unparsed characters found in date: "+r;if(-1===m?m=(new Date).getFullYear():100>m&&(m+=(new Date).getFullYear()-(new Date).getFullYear()%100+(u>=m?0:-100)),b>-1)for(v=1,_=b;;){if(a=this._getDaysInMonth(m,v-1),a>=_)break;v++,_-=a}if(h=this._daylightSavingAdjust(new Date(m,v-1,_)),h.getFullYear()!==m||h.getMonth()+1!==v||h.getDate()!==_)throw"Invalid date";return h},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(t,e,i){if(!e)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,o=(i?i.dayNames:null)||this._defaults.dayNames,a=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(e){var i=t.length>s+1&&t.charAt(s+1)===e;return i&&s++,i},l=function(t,e,i){var s=""+e;if(h(t))for(;i>s.length;)s="0"+s;return s},c=function(t,e,i,s){return h(t)?s[e]:i[e]},u="",d=!1;if(e)for(s=0;t.length>s;s++)if(d)"'"!==t.charAt(s)||h("'")?u+=t.charAt(s):d=!1;else switch(t.charAt(s)){case"d":u+=l("d",e.getDate(),2);break;case"D":u+=c("D",e.getDay(),n,o);break;case"o":u+=l("o",Math.round((new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime()-new Date(e.getFullYear(),0,0).getTime())/864e5),3);break;case"m":u+=l("m",e.getMonth()+1,2);break;case"M":u+=c("M",e.getMonth(),a,r);break;case"y":u+=h("y")?e.getFullYear():(10>e.getYear()%100?"0":"")+e.getYear()%100;break;case"@":u+=e.getTime();break;case"!":u+=1e4*e.getTime()+this._ticksTo1970;break;case"'":h("'")?u+="'":d=!0;break;default:u+=t.charAt(s)}return u},_possibleChars:function(t){var e,i="",s=!1,n=function(i){var s=t.length>e+1&&t.charAt(e+1)===i;return s&&e++,s};for(e=0;t.length>e;e++)if(s)"'"!==t.charAt(e)||n("'")?i+=t.charAt(e):s=!1;else switch(t.charAt(e)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=t.charAt(e)}return i},_get:function(t,i){return t.settings[i]!==e?t.settings[i]:this._defaults[i]},_setDateFromField:function(t,e){if(t.input.val()!==t.lastVal){var i=this._get(t,"dateFormat"),s=t.lastVal=t.input?t.input.val():null,n=this._getDefaultDate(t),o=n,a=this._getFormatConfig(t);try{o=this.parseDate(i,s,a)||n}catch(r){s=e?"":s}t.selectedDay=o.getDate(),t.drawMonth=t.selectedMonth=o.getMonth(),t.drawYear=t.selectedYear=o.getFullYear(),t.currentDay=s?o.getDate():0,t.currentMonth=s?o.getMonth():0,t.currentYear=s?o.getFullYear():0,this._adjustInstDate(t)}},_getDefaultDate:function(t){return this._restrictMinMax(t,this._determineDate(t,this._get(t,"defaultDate"),new Date))},_determineDate:function(e,i,s){var n=function(t){var e=new Date;return e.setDate(e.getDate()+t),e},o=function(i){try{return t.datepicker.parseDate(t.datepicker._get(e,"dateFormat"),i,t.datepicker._getFormatConfig(e))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?t.datepicker._getDate(e):null)||new Date,o=n.getFullYear(),a=n.getMonth(),r=n.getDate(),h=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||"d"){case"d":case"D":r+=parseInt(l[1],10);break;case"w":case"W":r+=7*parseInt(l[1],10);break;case"m":case"M":a+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a));break;case"y":case"Y":o+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a))}l=h.exec(i)}return new Date(o,a,r)},a=null==i||""===i?s:"string"==typeof i?o(i):"number"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return a=a&&"Invalid Date"==""+a?s:a,a&&(a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0)),this._daylightSavingAdjust(a)},_daylightSavingAdjust:function(t){return t?(t.setHours(t.getHours()>12?t.getHours()+2:0),t):null},_setDate:function(t,e,i){var s=!e,n=t.selectedMonth,o=t.selectedYear,a=this._restrictMinMax(t,this._determineDate(t,e,new Date));t.selectedDay=t.currentDay=a.getDate(),t.drawMonth=t.selectedMonth=t.currentMonth=a.getMonth(),t.drawYear=t.selectedYear=t.currentYear=a.getFullYear(),n===t.selectedMonth&&o===t.selectedYear||i||this._notifyChange(t),this._adjustInstDate(t),t.input&&t.input.val(s?"":this._formatDate(t))},_getDate:function(t){var e=!t.currentYear||t.input&&""===t.input.val()?null:this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return e},_attachHandlers:function(e){var i=this._get(e,"stepMonths"),s="#"+e.id.replace(/\\\\/g,"\\");e.dpDiv.find("[data-handler]").map(function(){var e={prev:function(){t.datepicker._adjustDate(s,-i,"M")},next:function(){t.datepicker._adjustDate(s,+i,"M")},hide:function(){t.datepicker._hideDatepicker()},today:function(){t.datepicker._gotoToday(s)},selectDay:function(){return t.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return t.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return t.datepicker._selectMonthYear(s,this,"Y"),!1}};t(this).bind(this.getAttribute("data-event"),e[this.getAttribute("data-handler")])})},_generateHTML:function(t){var e,i,s,n,o,a,r,h,l,c,u,d,p,f,g,m,v,_,b,y,w,x,k,D,C,I,P,T,M,S,z,A,E,H,N,W,O,F,R,L=new Date,j=this._daylightSavingAdjust(new Date(L.getFullYear(),L.getMonth(),L.getDate())),Y=this._get(t,"isRTL"),B=this._get(t,"showButtonPanel"),V=this._get(t,"hideIfNoPrevNext"),K=this._get(t,"navigationAsDateFormat"),q=this._getNumberOfMonths(t),U=this._get(t,"showCurrentAtPos"),Q=this._get(t,"stepMonths"),X=1!==q[0]||1!==q[1],$=this._daylightSavingAdjust(t.currentDay?new Date(t.currentYear,t.currentMonth,t.currentDay):new Date(9999,9,9)),G=this._getMinMaxDate(t,"min"),J=this._getMinMaxDate(t,"max"),Z=t.drawMonth-U,te=t.drawYear;if(0>Z&&(Z+=12,te--),J)for(e=this._daylightSavingAdjust(new Date(J.getFullYear(),J.getMonth()-q[0]*q[1]+1,J.getDate())),e=G&&G>e?G:e;this._daylightSavingAdjust(new Date(te,Z,1))>e;)Z--,0>Z&&(Z=11,te--);for(t.drawMonth=Z,t.drawYear=te,i=this._get(t,"prevText"),i=K?this.formatDate(i,this._daylightSavingAdjust(new Date(te,Z-Q,1)),this._getFormatConfig(t)):i,s=this._canAdjustMonth(t,-1,te,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>":V?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>",n=this._get(t,"nextText"),n=K?this.formatDate(n,this._daylightSavingAdjust(new Date(te,Z+Q,1)),this._getFormatConfig(t)):n,o=this._canAdjustMonth(t,1,te,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>":V?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>",a=this._get(t,"currentText"),r=this._get(t,"gotoCurrent")&&t.currentDay?$:j,a=K?this.formatDate(a,r,this._getFormatConfig(t)):a,h=t.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(t,"closeText")+"</button>",l=B?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(Y?h:"")+(this._isInRange(t,r)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+a+"</button>":"")+(Y?"":h)+"</div>":"",c=parseInt(this._get(t,"firstDay"),10),c=isNaN(c)?0:c,u=this._get(t,"showWeek"),d=this._get(t,"dayNames"),p=this._get(t,"dayNamesMin"),f=this._get(t,"monthNames"),g=this._get(t,"monthNamesShort"),m=this._get(t,"beforeShowDay"),v=this._get(t,"showOtherMonths"),_=this._get(t,"selectOtherMonths"),b=this._getDefaultDate(t),y="",x=0;q[0]>x;x++){for(k="",this.maxRows=4,D=0;q[1]>D;D++){if(C=this._daylightSavingAdjust(new Date(te,Z,t.selectedDay)),I=" ui-corner-all",P="",X){if(P+="<div class='ui-datepicker-group",q[1]>1)switch(D){case 0:P+=" ui-datepicker-group-first",I=" ui-corner-"+(Y?"right":"left");break;case q[1]-1:P+=" ui-datepicker-group-last",I=" ui-corner-"+(Y?"left":"right");break;default:P+=" ui-datepicker-group-middle",I=""}P+="'>"}for(P+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+I+"'>"+(/all|left/.test(I)&&0===x?Y?o:s:"")+(/all|right/.test(I)&&0===x?Y?s:o:"")+this._generateMonthYearHeader(t,Z,te,G,J,x>0||D>0,f,g)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",T=u?"<th class='ui-datepicker-week-col'>"+this._get(t,"weekHeader")+"</th>":"",w=0;7>w;w++)M=(w+c)%7,T+="<th"+((w+c+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+d[M]+"'>"+p[M]+"</span></th>";for(P+=T+"</tr></thead><tbody>",S=this._getDaysInMonth(te,Z),te===t.selectedYear&&Z===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,S)),z=(this._getFirstDayOfMonth(te,Z)-c+7)%7,A=Math.ceil((z+S)/7),E=X?this.maxRows>A?this.maxRows:A:A,this.maxRows=E,H=this._daylightSavingAdjust(new Date(te,Z,1-z)),N=0;E>N;N++){for(P+="<tr>",W=u?"<td class='ui-datepicker-week-col'>"+this._get(t,"calculateWeek")(H)+"</td>":"",w=0;7>w;w++)O=m?m.apply(t.input?t.input[0]:null,[H]):[!0,""],F=H.getMonth()!==Z,R=F&&!_||!O[0]||G&&G>H||J&&H>J,W+="<td class='"+((w+c+6)%7>=5?" ui-datepicker-week-end":"")+(F?" ui-datepicker-other-month":"")+(H.getTime()===C.getTime()&&Z===t.selectedMonth&&t._keyEvent||b.getTime()===H.getTime()&&b.getTime()===C.getTime()?" "+this._dayOverClass:"")+(R?" "+this._unselectableClass+" ui-state-disabled":"")+(F&&!v?"":" "+O[1]+(H.getTime()===$.getTime()?" "+this._currentClass:"")+(H.getTime()===j.getTime()?" ui-datepicker-today":""))+"'"+(F&&!v||!O[2]?"":" title='"+O[2].replace(/'/g,"&#39;")+"'")+(R?"":" data-handler='selectDay' data-event='click' data-month='"+H.getMonth()+"' data-year='"+H.getFullYear()+"'")+">"+(F&&!v?"&#xa0;":R?"<span class='ui-state-default'>"+H.getDate()+"</span>":"<a class='ui-state-default"+(H.getTime()===j.getTime()?" ui-state-highlight":"")+(H.getTime()===$.getTime()?" ui-state-active":"")+(F?" ui-priority-secondary":"")+"' href='#'>"+H.getDate()+"</a>")+"</td>",H.setDate(H.getDate()+1),H=this._daylightSavingAdjust(H);P+=W+"</tr>"}Z++,Z>11&&(Z=0,te++),P+="</tbody></table>"+(X?"</div>"+(q[0]>0&&D===q[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),k+=P}y+=k}return y+=l,t._keyEvent=!1,y},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var h,l,c,u,d,p,f,g,m=this._get(t,"changeMonth"),v=this._get(t,"changeYear"),_=this._get(t,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",y="";if(o||!m)y+="<span class='ui-datepicker-month'>"+a[e]+"</span>";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,y+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",c=0;12>c;c++)(!h||c>=s.getMonth())&&(!l||n.getMonth()>=c)&&(y+="<option value='"+c+"'"+(c===e?" selected='selected'":"")+">"+r[c]+"</option>");y+="</select>"}if(_||(b+=y+(!o&&m&&v?"":"&#xa0;")),!t.yearshtml)if(t.yearshtml="",o||!v)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(u=this._get(t,"yearRange").split(":"),d=(new Date).getFullYear(),p=function(t){var e=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?d+parseInt(t,10):parseInt(t,10);return isNaN(e)?d:e},f=p(u[0]),g=Math.max(f,p(u[1]||"")),f=s?Math.max(f,s.getFullYear()):f,g=n?Math.min(g,n.getFullYear()):g,t.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";g>=f;f++)t.yearshtml+="<option value='"+f+"'"+(f===i?" selected='selected'":"")+">"+f+"</option>";t.yearshtml+="</select>",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),_&&(b+=(!o&&m&&v?"":"&#xa0;")+y),b+="</div>"},_adjustInstDate:function(t,e,i){var s=t.drawYear+("Y"===i?e:0),n=t.drawMonth+("M"===i?e:0),o=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),a=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,o)));t.selectedDay=a.getDate(),t.drawMonth=t.selectedMonth=a.getMonth(),t.drawYear=t.selectedYear=a.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),s=this._getMinMaxDate(t,"max"),n=i&&i>e?i:e;return s&&n>s?s:n},_notifyChange:function(t){var e=this._get(t,"onChangeMonthYear");e&&e.apply(t.input?t.input[0]:null,[t.selectedYear,t.selectedMonth+1,t])},_getNumberOfMonths:function(t){var e=this._get(t,"numberOfMonths");return null==e?[1,1]:"number"==typeof e?[1,e]:e},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+"Date"),null)},_getDaysInMonth:function(t,e){return 32-this._daylightSavingAdjust(new Date(t,e,32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,1).getDay()},_canAdjustMonth:function(t,e,i,s){var n=this._getNumberOfMonths(t),o=this._daylightSavingAdjust(new Date(i,s+(0>e?e:n[0]*n[1]),1));return 0>e&&o.setDate(this._getDaysInMonth(o.getFullYear(),o.getMonth())),this._isInRange(t,o)},_isInRange:function(t,e){var i,s,n=this._getMinMaxDate(t,"min"),o=this._getMinMaxDate(t,"max"),a=null,r=null,h=this._get(t,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),a=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(a+=s),i[1].match(/[+\-].*/)&&(r+=s)),(!n||e.getTime()>=n.getTime())&&(!o||e.getTime()<=o.getTime())&&(!a||e.getFullYear()>=a)&&(!r||r>=e.getFullYear())},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),{shortYearCutoff:e,dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);var n=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),n,this._getFormatConfig(t))}}),t.fn.datepicker=function(e){if(!this.length)return this;t.datepicker.initialized||(t(document).mousedown(t.datepicker._checkExternalClick),t.datepicker.initialized=!0),0===t("#"+t.datepicker._mainDivId).length&&t("body").append(t.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof e||"isDisabled"!==e&&"getDate"!==e&&"widget"!==e?"option"===e&&2===arguments.length&&"string"==typeof arguments[1]?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof e?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this].concat(i)):t.datepicker._attachDatepicker(this,e)}):t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i))},t.datepicker=new i,t.datepicker.initialized=!1,t.datepicker.uuid=(new Date).getTime(),t.datepicker.version="1.10.4"}(jQuery),function(t){var e={buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},i={maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0};t.widget("ui.dialog",{version:"1.10.4",options:{appendTo:"body",autoOpen:!0,buttons:[],closeOnEscape:!0,closeText:"close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(e){var i=t(this).css(e).offset().top;0>i&&t(this).css("top",e.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),this.options.title=this.options.title||this.originalTitle,this._createWrapper(),this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(this.uiDialog),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&t.fn.draggable&&this._makeDraggable(),this.options.resizable&&t.fn.resizable&&this._makeResizable(),this._isOpen=!1},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var e=this.options.appendTo;return e&&(e.jquery||e.nodeType)?t(e):this.document.find(e||"body").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._destroyOverlay(),this.element.removeUniqueId().removeClass("ui-dialog-content ui-widget-content").css(this.originalCss).detach(),this.uiDialog.stop(!0,!0).remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),t=e.parent.children().eq(e.index),t.length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog},disable:t.noop,enable:t.noop,close:function(e){var i,s=this;if(this._isOpen&&this._trigger("beforeClose",e)!==!1){if(this._isOpen=!1,this._destroyOverlay(),!this.opener.filter(":focusable").focus().length)try{i=this.document[0].activeElement,i&&"body"!==i.nodeName.toLowerCase()&&t(i).blur()}catch(n){}this._hide(this.uiDialog,this.options.hide,function(){s._trigger("close",e)})}},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(t,e){var i=!!this.uiDialog.nextAll(":visible").insertBefore(this.uiDialog).length;return i&&!e&&this._trigger("focus",t),i},open:function(){var e=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),undefined):(this._isOpen=!0,this.opener=t(this.document[0].activeElement),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this._show(this.uiDialog,this.options.show,function(){e._focusTabbable(),e._trigger("focus")}),this._trigger("open"),undefined)},_focusTabbable:function(){var t=this.element.find("[autofocus]");t.length||(t=this.element.find(":tabbable")),t.length||(t=this.uiDialogButtonPane.find(":tabbable")),t.length||(t=this.uiDialogTitlebarClose.filter(":tabbable")),t.length||(t=this.uiDialog),t.eq(0).focus()},_keepFocus:function(e){function i(){var e=this.document[0].activeElement,i=this.uiDialog[0]===e||t.contains(this.uiDialog[0],e);i||this._focusTabbable()}e.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=t("<div>").addClass("ui-dialog ui-widget ui-widget-content ui-corner-all ui-front "+this.options.dialogClass).hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._on(this.uiDialog,{keydown:function(e){if(this.options.closeOnEscape&&!e.isDefaultPrevented()&&e.keyCode&&e.keyCode===t.ui.keyCode.ESCAPE)return e.preventDefault(),this.close(e),undefined;if(e.keyCode===t.ui.keyCode.TAB){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");e.target!==n[0]&&e.target!==this.uiDialog[0]||e.shiftKey?e.target!==s[0]&&e.target!==this.uiDialog[0]||!e.shiftKey||(n.focus(1),e.preventDefault()):(s.focus(1),e.preventDefault())}},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var e;this.uiDialogTitlebar=t("<div>").addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(this.uiDialog),this._on(this.uiDialogTitlebar,{mousedown:function(e){t(e.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.focus()}}),this.uiDialogTitlebarClose=t("<button type='button'></button>").button({label:this.options.closeText,icons:{primary:"ui-icon-closethick"},text:!1}).addClass("ui-dialog-titlebar-close").appendTo(this.uiDialogTitlebar),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),e=t("<span>").uniqueId().addClass("ui-dialog-title").prependTo(this.uiDialogTitlebar),this._title(e),this.uiDialog.attr({"aria-labelledby":e.attr("id")})},_title:function(t){this.options.title||t.html("&#160;"),t.text(this.options.title)},_createButtonPane:function(){this.uiDialogButtonPane=t("<div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),this.uiButtonSet=t("<div>").addClass("ui-dialog-buttonset").appendTo(this.uiDialogButtonPane),this._createButtons()},_createButtons:function(){var e=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),t.isEmptyObject(i)||t.isArray(i)&&!i.length?(this.uiDialog.removeClass("ui-dialog-buttons"),undefined):(t.each(i,function(i,s){var n,o;s=t.isFunction(s)?{click:s,text:i}:s,s=t.extend({type:"button"},s),n=s.click,s.click=function(){n.apply(e.element[0],arguments)},o={icons:s.icons,text:s.showText},delete s.icons,delete s.showText,t("<button></button>",s).button(o).appendTo(e.uiButtonSet)}),this.uiDialog.addClass("ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),undefined)},_makeDraggable:function(){function e(t){return{position:t.position,offset:t.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,n){t(this).addClass("ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,e(n))},drag:function(t,s){i._trigger("drag",t,e(s))},stop:function(n,o){s.position=[o.position.left-i.document.scrollLeft(),o.position.top-i.document.scrollTop()],t(this).removeClass("ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,e(o))}})},_makeResizable:function(){function e(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}var i=this,s=this.options,n=s.resizable,o=this.uiDialog.css("position"),a="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw"; -this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:a,start:function(s,n){t(this).addClass("ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,e(n))},resize:function(t,s){i._trigger("resize",t,e(s))},stop:function(n,o){s.height=t(this).height(),s.width=t(this).width(),t(this).removeClass("ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,e(o))}}).css("position",o)},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(s){var n=this,o=!1,a={};t.each(s,function(t,s){n._setOption(t,s),t in e&&(o=!0),t in i&&(a[t]=s)}),o&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",a)},_setOption:function(t,e){var i,s,n=this.uiDialog;"dialogClass"===t&&n.removeClass(this.options.dialogClass).addClass(e),"disabled"!==t&&(this._super(t,e),"appendTo"===t&&this.uiDialog.appendTo(this._appendTo()),"buttons"===t&&this._createButtons(),"closeText"===t&&this.uiDialogTitlebarClose.button({label:""+e}),"draggable"===t&&(i=n.is(":data(ui-draggable)"),i&&!e&&n.draggable("destroy"),!i&&e&&this._makeDraggable()),"position"===t&&this._position(),"resizable"===t&&(s=n.is(":data(ui-resizable)"),s&&!e&&n.resizable("destroy"),s&&"string"==typeof e&&n.resizable("option","handles",e),s||e===!1||this._makeResizable()),"title"===t&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var e=t(this);return t("<div>").css({position:"absolute",width:e.outerWidth(),height:e.outerHeight()}).appendTo(e.parent()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(e){return t(e.target).closest(".ui-dialog").length?!0:!!t(e.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var e=this,i=this.widgetFullName;t.ui.dialog.overlayInstances||this._delay(function(){t.ui.dialog.overlayInstances&&this.document.bind("focusin.dialog",function(s){e._allowInteraction(s)||(s.preventDefault(),t(".ui-dialog:visible:last .ui-dialog-content").data(i)._focusTabbable())})}),this.overlay=t("<div>").addClass("ui-widget-overlay ui-front").appendTo(this._appendTo()),this._on(this.overlay,{mousedown:"_keepFocus"}),t.ui.dialog.overlayInstances++}},_destroyOverlay:function(){this.options.modal&&this.overlay&&(t.ui.dialog.overlayInstances--,t.ui.dialog.overlayInstances||this.document.unbind("focusin.dialog"),this.overlay.remove(),this.overlay=null)}}),t.ui.dialog.overlayInstances=0,t.uiBackCompat!==!1&&t.widget("ui.dialog",t.ui.dialog,{_position:function(){var e,i=this.options.position,s=[],n=[0,0];i?(("string"==typeof i||"object"==typeof i&&"0"in i)&&(s=i.split?i.split(" "):[i[0],i[1]],1===s.length&&(s[1]=s[0]),t.each(["left","top"],function(t,e){+s[t]===s[t]&&(n[t]=s[t],s[t]=e)}),i={my:s[0]+(0>n[0]?n[0]:"+"+n[0])+" "+s[1]+(0>n[1]?n[1]:"+"+n[1]),at:s.join(" ")}),i=t.extend({},t.ui.dialog.prototype.options.position,i)):i=t.ui.dialog.prototype.options.position,e=this.uiDialog.is(":visible"),e||this.uiDialog.show(),this.uiDialog.position(i),e||this.uiDialog.hide()}})}(jQuery),function(t){var e=/up|down|vertical/,i=/up|left|vertical|horizontal/;t.effects.effect.blind=function(s,n){var o,a,r,h=t(this),l=["position","top","bottom","left","right","height","width"],c=t.effects.setMode(h,s.mode||"hide"),u=s.direction||"up",d=e.test(u),p=d?"height":"width",f=d?"top":"left",g=i.test(u),m={},v="show"===c;h.parent().is(".ui-effects-wrapper")?t.effects.save(h.parent(),l):t.effects.save(h,l),h.show(),o=t.effects.createWrapper(h).css({overflow:"hidden"}),a=o[p](),r=parseFloat(o.css(f))||0,m[p]=v?a:0,g||(h.css(d?"bottom":"right",0).css(d?"top":"left","auto").css({position:"absolute"}),m[f]=v?r:a+r),v&&(o.css(p,0),g||o.css(f,r+a)),o.animate(m,{duration:s.duration,easing:s.easing,queue:!1,complete:function(){"hide"===c&&h.hide(),t.effects.restore(h,l),t.effects.removeWrapper(h),n()}})}}(jQuery),function(t){t.effects.effect.bounce=function(e,i){var s,n,o,a=t(this),r=["position","top","bottom","left","right","height","width"],h=t.effects.setMode(a,e.mode||"effect"),l="hide"===h,c="show"===h,u=e.direction||"up",d=e.distance,p=e.times||5,f=2*p+(c||l?1:0),g=e.duration/f,m=e.easing,v="up"===u||"down"===u?"top":"left",_="up"===u||"left"===u,b=a.queue(),y=b.length;for((c||l)&&r.push("opacity"),t.effects.save(a,r),a.show(),t.effects.createWrapper(a),d||(d=a["top"===v?"outerHeight":"outerWidth"]()/3),c&&(o={opacity:1},o[v]=0,a.css("opacity",0).css(v,_?2*-d:2*d).animate(o,g,m)),l&&(d/=Math.pow(2,p-1)),o={},o[v]=0,s=0;p>s;s++)n={},n[v]=(_?"-=":"+=")+d,a.animate(n,g,m).animate(o,g,m),d=l?2*d:d/2;l&&(n={opacity:0},n[v]=(_?"-=":"+=")+d,a.animate(n,g,m)),a.queue(function(){l&&a.hide(),t.effects.restore(a,r),t.effects.removeWrapper(a),i()}),y>1&&b.splice.apply(b,[1,0].concat(b.splice(y,f+1))),a.dequeue()}}(jQuery),function(t){t.effects.effect.clip=function(e,i){var s,n,o,a=t(this),r=["position","top","bottom","left","right","height","width"],h=t.effects.setMode(a,e.mode||"hide"),l="show"===h,c=e.direction||"vertical",u="vertical"===c,d=u?"height":"width",p=u?"top":"left",f={};t.effects.save(a,r),a.show(),s=t.effects.createWrapper(a).css({overflow:"hidden"}),n="IMG"===a[0].tagName?s:a,o=n[d](),l&&(n.css(d,0),n.css(p,o/2)),f[d]=l?o:0,f[p]=l?0:o/2,n.animate(f,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){l||a.hide(),t.effects.restore(a,r),t.effects.removeWrapper(a),i()}})}}(jQuery),function(t){t.effects.effect.drop=function(e,i){var s,n=t(this),o=["position","top","bottom","left","right","opacity","height","width"],a=t.effects.setMode(n,e.mode||"hide"),r="show"===a,h=e.direction||"left",l="up"===h||"down"===h?"top":"left",c="up"===h||"left"===h?"pos":"neg",u={opacity:r?1:0};t.effects.save(n,o),n.show(),t.effects.createWrapper(n),s=e.distance||n["top"===l?"outerHeight":"outerWidth"](!0)/2,r&&n.css("opacity",0).css(l,"pos"===c?-s:s),u[l]=(r?"pos"===c?"+=":"-=":"pos"===c?"-=":"+=")+s,n.animate(u,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){"hide"===a&&n.hide(),t.effects.restore(n,o),t.effects.removeWrapper(n),i()}})}}(jQuery),function(t){t.effects.effect.explode=function(e,i){function s(){b.push(this),b.length===u*d&&n()}function n(){p.css({visibility:"visible"}),t(b).remove(),g||p.hide(),i()}var o,a,r,h,l,c,u=e.pieces?Math.round(Math.sqrt(e.pieces)):3,d=u,p=t(this),f=t.effects.setMode(p,e.mode||"hide"),g="show"===f,m=p.show().css("visibility","hidden").offset(),v=Math.ceil(p.outerWidth()/d),_=Math.ceil(p.outerHeight()/u),b=[];for(o=0;u>o;o++)for(h=m.top+o*_,c=o-(u-1)/2,a=0;d>a;a++)r=m.left+a*v,l=a-(d-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-a*v,top:-o*_}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:v,height:_,left:r+(g?l*v:0),top:h+(g?c*_:0),opacity:g?0:1}).animate({left:r+(g?0:l*v),top:h+(g?0:c*_),opacity:g?1:0},e.duration||500,e.easing,s)}}(jQuery),function(t){t.effects.effect.fade=function(e,i){var s=t(this),n=t.effects.setMode(s,e.mode||"toggle");s.animate({opacity:n},{queue:!1,duration:e.duration,easing:e.easing,complete:i})}}(jQuery),function(t){t.effects.effect.fold=function(e,i){var s,n,o=t(this),a=["position","top","bottom","left","right","height","width"],r=t.effects.setMode(o,e.mode||"hide"),h="show"===r,l="hide"===r,c=e.size||15,u=/([0-9]+)%/.exec(c),d=!!e.horizFirst,p=h!==d,f=p?["width","height"]:["height","width"],g=e.duration/2,m={},v={};t.effects.save(o,a),o.show(),s=t.effects.createWrapper(o).css({overflow:"hidden"}),n=p?[s.width(),s.height()]:[s.height(),s.width()],u&&(c=parseInt(u[1],10)/100*n[l?0:1]),h&&s.css(d?{height:0,width:c}:{height:c,width:0}),m[f[0]]=h?n[0]:c,v[f[1]]=h?n[1]:0,s.animate(m,g,e.easing).animate(v,g,e.easing,function(){l&&o.hide(),t.effects.restore(o,a),t.effects.removeWrapper(o),i()})}}(jQuery),function(t){t.effects.effect.highlight=function(e,i){var s=t(this),n=["backgroundImage","backgroundColor","opacity"],o=t.effects.setMode(s,e.mode||"show"),a={backgroundColor:s.css("backgroundColor")};"hide"===o&&(a.opacity=0),t.effects.save(s,n),s.show().css({backgroundImage:"none",backgroundColor:e.color||"#ffff99"}).animate(a,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){"hide"===o&&s.hide(),t.effects.restore(s,n),i()}})}}(jQuery),function(t){t.effects.effect.pulsate=function(e,i){var s,n=t(this),o=t.effects.setMode(n,e.mode||"show"),a="show"===o,r="hide"===o,h=a||"hide"===o,l=2*(e.times||5)+(h?1:0),c=e.duration/l,u=0,d=n.queue(),p=d.length;for((a||!n.is(":visible"))&&(n.css("opacity",0).show(),u=1),s=1;l>s;s++)n.animate({opacity:u},c,e.easing),u=1-u;n.animate({opacity:u},c,e.easing),n.queue(function(){r&&n.hide(),i()}),p>1&&d.splice.apply(d,[1,0].concat(d.splice(p,l+1))),n.dequeue()}}(jQuery),function(t){t.effects.effect.puff=function(e,i){var s=t(this),n=t.effects.setMode(s,e.mode||"hide"),o="hide"===n,a=parseInt(e.percent,10)||150,r=a/100,h={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()};t.extend(e,{effect:"scale",queue:!1,fade:!0,mode:n,complete:i,percent:o?a:100,from:o?h:{height:h.height*r,width:h.width*r,outerHeight:h.outerHeight*r,outerWidth:h.outerWidth*r}}),s.effect(e)},t.effects.effect.scale=function(e,i){var s=t(this),n=t.extend(!0,{},e),o=t.effects.setMode(s,e.mode||"effect"),a=parseInt(e.percent,10)||(0===parseInt(e.percent,10)?0:"hide"===o?0:100),r=e.direction||"both",h=e.origin,l={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()},c={y:"horizontal"!==r?a/100:1,x:"vertical"!==r?a/100:1};n.effect="size",n.queue=!1,n.complete=i,"effect"!==o&&(n.origin=h||["middle","center"],n.restore=!0),n.from=e.from||("show"===o?{height:0,width:0,outerHeight:0,outerWidth:0}:l),n.to={height:l.height*c.y,width:l.width*c.x,outerHeight:l.outerHeight*c.y,outerWidth:l.outerWidth*c.x},n.fade&&("show"===o&&(n.from.opacity=0,n.to.opacity=1),"hide"===o&&(n.from.opacity=1,n.to.opacity=0)),s.effect(n)},t.effects.effect.size=function(e,i){var s,n,o,a=t(this),r=["position","top","bottom","left","right","width","height","overflow","opacity"],h=["position","top","bottom","left","right","overflow","opacity"],l=["width","height","overflow"],c=["fontSize"],u=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],d=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=t.effects.setMode(a,e.mode||"effect"),f=e.restore||"effect"!==p,g=e.scale||"both",m=e.origin||["middle","center"],v=a.css("position"),_=f?r:h,b={height:0,width:0,outerHeight:0,outerWidth:0};"show"===p&&a.show(),s={height:a.height(),width:a.width(),outerHeight:a.outerHeight(),outerWidth:a.outerWidth()},"toggle"===e.mode&&"show"===p?(a.from=e.to||b,a.to=e.from||s):(a.from=e.from||("show"===p?b:s),a.to=e.to||("hide"===p?b:s)),o={from:{y:a.from.height/s.height,x:a.from.width/s.width},to:{y:a.to.height/s.height,x:a.to.width/s.width}},("box"===g||"both"===g)&&(o.from.y!==o.to.y&&(_=_.concat(u),a.from=t.effects.setTransition(a,u,o.from.y,a.from),a.to=t.effects.setTransition(a,u,o.to.y,a.to)),o.from.x!==o.to.x&&(_=_.concat(d),a.from=t.effects.setTransition(a,d,o.from.x,a.from),a.to=t.effects.setTransition(a,d,o.to.x,a.to))),("content"===g||"both"===g)&&o.from.y!==o.to.y&&(_=_.concat(c).concat(l),a.from=t.effects.setTransition(a,c,o.from.y,a.from),a.to=t.effects.setTransition(a,c,o.to.y,a.to)),t.effects.save(a,_),a.show(),t.effects.createWrapper(a),a.css("overflow","hidden").css(a.from),m&&(n=t.effects.getBaseline(m,s),a.from.top=(s.outerHeight-a.outerHeight())*n.y,a.from.left=(s.outerWidth-a.outerWidth())*n.x,a.to.top=(s.outerHeight-a.to.outerHeight)*n.y,a.to.left=(s.outerWidth-a.to.outerWidth)*n.x),a.css(a.from),("content"===g||"both"===g)&&(u=u.concat(["marginTop","marginBottom"]).concat(c),d=d.concat(["marginLeft","marginRight"]),l=r.concat(u).concat(d),a.find("*[width]").each(function(){var i=t(this),s={height:i.height(),width:i.width(),outerHeight:i.outerHeight(),outerWidth:i.outerWidth()};f&&t.effects.save(i,l),i.from={height:s.height*o.from.y,width:s.width*o.from.x,outerHeight:s.outerHeight*o.from.y,outerWidth:s.outerWidth*o.from.x},i.to={height:s.height*o.to.y,width:s.width*o.to.x,outerHeight:s.height*o.to.y,outerWidth:s.width*o.to.x},o.from.y!==o.to.y&&(i.from=t.effects.setTransition(i,u,o.from.y,i.from),i.to=t.effects.setTransition(i,u,o.to.y,i.to)),o.from.x!==o.to.x&&(i.from=t.effects.setTransition(i,d,o.from.x,i.from),i.to=t.effects.setTransition(i,d,o.to.x,i.to)),i.css(i.from),i.animate(i.to,e.duration,e.easing,function(){f&&t.effects.restore(i,l)})})),a.animate(a.to,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){0===a.to.opacity&&a.css("opacity",a.from.opacity),"hide"===p&&a.hide(),t.effects.restore(a,_),f||("static"===v?a.css({position:"relative",top:a.to.top,left:a.to.left}):t.each(["top","left"],function(t,e){a.css(e,function(e,i){var s=parseInt(i,10),n=t?a.to.left:a.to.top;return"auto"===i?n+"px":s+n+"px"})})),t.effects.removeWrapper(a),i()}})}}(jQuery),function(t){t.effects.effect.shake=function(e,i){var s,n=t(this),o=["position","top","bottom","left","right","height","width"],a=t.effects.setMode(n,e.mode||"effect"),r=e.direction||"left",h=e.distance||20,l=e.times||3,c=2*l+1,u=Math.round(e.duration/c),d="up"===r||"down"===r?"top":"left",p="up"===r||"left"===r,f={},g={},m={},v=n.queue(),_=v.length;for(t.effects.save(n,o),n.show(),t.effects.createWrapper(n),f[d]=(p?"-=":"+=")+h,g[d]=(p?"+=":"-=")+2*h,m[d]=(p?"-=":"+=")+2*h,n.animate(f,u,e.easing),s=1;l>s;s++)n.animate(g,u,e.easing).animate(m,u,e.easing);n.animate(g,u,e.easing).animate(f,u/2,e.easing).queue(function(){"hide"===a&&n.hide(),t.effects.restore(n,o),t.effects.removeWrapper(n),i()}),_>1&&v.splice.apply(v,[1,0].concat(v.splice(_,c+1))),n.dequeue()}}(jQuery),function(t){t.effects.effect.slide=function(e,i){var s,n=t(this),o=["position","top","bottom","left","right","width","height"],a=t.effects.setMode(n,e.mode||"show"),r="show"===a,h=e.direction||"left",l="up"===h||"down"===h?"top":"left",c="up"===h||"left"===h,u={};t.effects.save(n,o),n.show(),s=e.distance||n["top"===l?"outerHeight":"outerWidth"](!0),t.effects.createWrapper(n).css({overflow:"hidden"}),r&&n.css(l,c?isNaN(s)?"-"+s:-s:s),u[l]=(r?c?"+=":"-=":c?"-=":"+=")+s,n.animate(u,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){"hide"===a&&n.hide(),t.effects.restore(n,o),t.effects.removeWrapper(n),i()}})}}(jQuery),function(t){t.effects.effect.transfer=function(e,i){var s=t(this),n=t(e.to),o="fixed"===n.css("position"),a=t("body"),r=o?a.scrollTop():0,h=o?a.scrollLeft():0,l=n.offset(),c={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},u=s.offset(),d=t("<div class='ui-effects-transfer'></div>").appendTo(document.body).addClass(e.className).css({top:u.top-r,left:u.left-h,height:s.innerHeight(),width:s.innerWidth(),position:o?"fixed":"absolute"}).animate(c,e.duration,e.easing,function(){d.remove(),i()})}}(jQuery),function(t){t.widget("ui.menu",{version:"1.10.4",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content ui-corner-all").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}).bind("click"+this.eventNamespace,t.proxy(function(t){this.options.disabled&&t.preventDefault()},this)),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item > a":function(t){t.preventDefault()},"click .ui-state-disabled > a":function(t){t.preventDefault()},"click .ui-menu-item:has(a)":function(e){var i=t(e.target).closest(".ui-menu-item");!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&t(this.document[0].activeElement).closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){var i=t(e.currentTarget);i.siblings().children(".ui-state-active").removeClass("ui-state-active"),this.focus(e,i)},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.children(".ui-menu-item").eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){t.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(e){t(e.target).closest(".ui-menu").length||this.collapseAll(e),this.mouseHandled=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeClass("ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").children("a").removeUniqueId().removeClass("ui-corner-all ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var e=t(this);e.data("ui-menu-submenu-carat")&&e.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(e){function i(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}var s,n,o,a,r,h=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:h=!1,n=this.previousFilter||"",o=String.fromCharCode(e.keyCode),a=!1,clearTimeout(this.filterTimer),o===n?a=!0:o=n+o,r=RegExp("^"+i(o),"i"),s=this.activeMenu.children(".ui-menu-item").filter(function(){return r.test(t(this).children("a").text())}),s=a&&-1!==s.index(this.active.next())?this.active.nextAll(".ui-menu-item"):s,s.length||(o=String.fromCharCode(e.keyCode),r=RegExp("^"+i(o),"i"),s=this.activeMenu.children(".ui-menu-item").filter(function(){return r.test(t(this).children("a").text())})),s.length?(this.focus(e,s),s.length>1?(this.previousFilter=o,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter):delete this.previousFilter}h&&e.preventDefault()},_activate:function(t){this.active.is(".ui-state-disabled")||(this.active.children("a[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i=this.options.icons.submenu,s=this.element.find(this.options.menus);this.element.toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length),s.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-corner-all").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),s=e.prev("a"),n=t("<span>").addClass("ui-menu-icon ui-icon "+i).data("ui-menu-submenu-carat",!0);s.attr("aria-haspopup","true").prepend(n),e.attr("aria-labelledby",s.attr("id"))}),e=s.add(this.element),e.children(":not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","presentation").children("a").uniqueId().addClass("ui-corner-all").attr({tabIndex:-1,role:this._itemRole()}),e.children(":not(.ui-menu-item)").each(function(){var e=t(this);/[^\-\u2014\u2013\s]/.test(e.text())||e.addClass("ui-widget-content ui-menu-divider")}),e.children(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){"icons"===t&&this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(e.submenu),this._super(t,e)},focus:function(t,e){var i,s;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children("a").addClass("ui-state-focus"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),this.active.parent().closest(".ui-menu-item").children("a:first").addClass("ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.height(),0>n?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this.active.children("a").removeClass("ui-state-focus"),this.active=null,this._trigger("blur",t,{item:this.active}))},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find("a.ui-state-active").removeClass("ui-state-active")},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").children(".ui-menu-item").first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.children(".ui-menu-item")[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.children(".ui-menu-item")[this.active?"last":"first"]())),undefined):(this.next(e),undefined)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.children(".ui-menu-item").first())),undefined):(this.next(e),undefined)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(e){this.active=this.active||t(e.target).closest(".ui-menu-item");var i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(e,!0),this._trigger("select",e,i)}})}(jQuery),function(t,e){function i(t,e,i){return[parseFloat(t[0])*(p.test(t[0])?e/100:1),parseFloat(t[1])*(p.test(t[1])?i/100:1)]}function s(e,i){return parseInt(t.css(e,i),10)||0}function n(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}t.ui=t.ui||{};var o,a=Math.max,r=Math.abs,h=Math.round,l=/left|center|right/,c=/top|center|bottom/,u=/[\+\-]\d+(\.[\d]+)?%?/,d=/^\w+/,p=/%$/,f=t.fn.position;t.position={scrollbarWidth:function(){if(o!==e)return o;var i,s,n=t("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),a=n.children()[0];return t("body").append(n),i=a.offsetWidth,n.css("overflow","scroll"),s=a.offsetWidth,i===s&&(s=n[0].clientWidth),n.remove(),o=i-s},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.width<e.element[0].scrollWidth,o="scroll"===s||"auto"===s&&e.height<e.element[0].scrollHeight;return{width:o?t.position.scrollbarWidth():0,height:n?t.position.scrollbarWidth():0}},getWithinInfo:function(e){var i=t(e||window),s=t.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType;return{element:i,isWindow:s,isDocument:n,offset:i.offset()||{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:s?i.width():i.outerWidth(),height:s?i.height():i.outerHeight()}}},t.fn.position=function(e){if(!e||!e.of)return f.apply(this,arguments);e=t.extend({},e);var o,p,g,m,v,_,b=t(e.of),y=t.position.getWithinInfo(e.within),w=t.position.getScrollInfo(y),x=(e.collision||"flip").split(" "),k={};return _=n(b),b[0].preventDefault&&(e.at="left top"),p=_.width,g=_.height,m=_.offset,v=t.extend({},m),t.each(["my","at"],function(){var t,i,s=(e[this]||"").split(" ");1===s.length&&(s=l.test(s[0])?s.concat(["center"]):c.test(s[0])?["center"].concat(s):["center","center"]),s[0]=l.test(s[0])?s[0]:"center",s[1]=c.test(s[1])?s[1]:"center",t=u.exec(s[0]),i=u.exec(s[1]),k[this]=[t?t[0]:0,i?i[0]:0],e[this]=[d.exec(s[0])[0],d.exec(s[1])[0]]}),1===x.length&&(x[1]=x[0]),"right"===e.at[0]?v.left+=p:"center"===e.at[0]&&(v.left+=p/2),"bottom"===e.at[1]?v.top+=g:"center"===e.at[1]&&(v.top+=g/2),o=i(k.at,p,g),v.left+=o[0],v.top+=o[1],this.each(function(){var n,l,c=t(this),u=c.outerWidth(),d=c.outerHeight(),f=s(this,"marginLeft"),_=s(this,"marginTop"),D=u+f+s(this,"marginRight")+w.width,C=d+_+s(this,"marginBottom")+w.height,I=t.extend({},v),P=i(k.my,c.outerWidth(),c.outerHeight());"right"===e.my[0]?I.left-=u:"center"===e.my[0]&&(I.left-=u/2),"bottom"===e.my[1]?I.top-=d:"center"===e.my[1]&&(I.top-=d/2),I.left+=P[0],I.top+=P[1],t.support.offsetFractions||(I.left=h(I.left),I.top=h(I.top)),n={marginLeft:f,marginTop:_},t.each(["left","top"],function(i,s){t.ui.position[x[i]]&&t.ui.position[x[i]][s](I,{targetWidth:p,targetHeight:g,elemWidth:u,elemHeight:d,collisionPosition:n,collisionWidth:D,collisionHeight:C,offset:[o[0]+P[0],o[1]+P[1]],my:e.my,at:e.at,within:y,elem:c})}),e.using&&(l=function(t){var i=m.left-I.left,s=i+p-u,n=m.top-I.top,o=n+g-d,h={target:{element:b,left:m.left,top:m.top,width:p,height:g},element:{element:c,left:I.left,top:I.top,width:u,height:d},horizontal:0>s?"left":i>0?"right":"center",vertical:0>o?"top":n>0?"bottom":"middle"};u>p&&p>r(i+s)&&(h.horizontal="center"),d>g&&g>r(n+o)&&(h.vertical="middle"),h.important=a(r(i),r(s))>a(r(n),r(o))?"horizontal":"vertical",e.using.call(this,t,h)}),c.offset(t.extend(I,{using:l}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,o=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-o-n;e.collisionWidth>o?h>0&&0>=l?(i=t.left+h+e.collisionWidth-o-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+o-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=a(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,o=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-o-n;e.collisionHeight>o?h>0&&0>=l?(i=t.top+h+e.collisionHeight-o-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+o-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=a(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,a=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-a-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-a-o,(0>i||r(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>r(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,a=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-a-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-a-o,t.top+p+f+g>c&&(0>s||r(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-h,t.top+p+f+g>u&&(i>0||u>r(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}},function(){var e,i,s,n,o,a=document.getElementsByTagName("body")[0],r=document.createElement("div");e=document.createElement(a?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},a&&t.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(o in s)e.style[o]=s[o];e.appendChild(r),i=a||document.documentElement,i.insertBefore(e,i.firstChild),r.style.cssText="position: absolute; left: 10.7432222px;",n=t(r).offset().left,t.support.offsetFractions=n>10&&11>n,e.innerHTML="",i.removeChild(e)}()}(jQuery),function(t,e){t.widget("ui.progressbar",{version:"1.10.4",options:{max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min}),this.valueDiv=t("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),this._refreshValue() -},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(t){return t===e?this.options.value:(this.options.value=this._constrainedValue(t),this._refreshValue(),e)},_constrainedValue:function(t){return t===e&&(t=this.options.value),this.indeterminate=t===!1,"number"!=typeof t&&(t=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var e=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||e>this.min).toggleClass("ui-corner-right",e===this.options.max).width(i.toFixed(0)+"%"),this.element.toggleClass("ui-progressbar-indeterminate",this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=t("<div class='ui-progressbar-overlay'></div>").appendTo(this.valueDiv))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":e}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),e===this.options.max&&this._trigger("complete")}})}(jQuery),function(t){var e=5;t.widget("ui.slider",t.ui.mouse,{version:"1.10.4",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"),this._refresh(),this._setOption("disabled",this.options.disabled),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var e,i,s=this.options,n=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),o="<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>",a=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),e=n.length;i>e;e++)a.push(o);this.handles=n.add(t(a.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.each(function(e){t(this).data("ui-slider-handle-index",e)})},_createRange:function(){var e=this.options,i="";e.range?(e.range===!0&&(e.values?e.values.length&&2!==e.values.length?e.values=[e.values[0],e.values[0]]:t.isArray(e.values)&&(e.values=e.values.slice(0)):e.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?this.range.removeClass("ui-slider-range-min ui-slider-range-max").css({left:"",bottom:""}):(this.range=t("<div></div>").appendTo(this.element),i="ui-slider-range ui-widget-header ui-corner-all"),this.range.addClass(i+("min"===e.range||"max"===e.range?" ui-slider-range-"+e.range:""))):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){var t=this.handles.add(this.range).filter("a");this._off(t),this._on(t,this._handleEvents),this._hoverable(t),this._focusable(t)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(e){var i,s,n,o,a,r,h,l,c=this,u=this.options;return u.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:e.pageX,y:e.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(e){var i=Math.abs(s-c.values(e));(n>i||n===i&&(e===c._lastChangedValue||c.values(e)===u.min))&&(n=i,o=t(this),a=e)}),r=this._start(e,a),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=a,o.addClass("ui-state-active").focus(),h=o.offset(),l=!t(e.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:e.pageX-h.left-o.width()/2,top:e.pageY-h.top-o.height()/2-(parseInt(o.css("borderTopWidth"),10)||0)-(parseInt(o.css("borderBottomWidth"),10)||0)+(parseInt(o.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(e,a,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,i),!1},_mouseStop:function(t){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,i,s,n,o;return"horizontal"===this.orientation?(e=this.elementSize.width,i=t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,i=t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/e,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),o=this._valueMin()+s*n,this._trimAlignValue(o)},_start:function(t,e){var i={handle:this.handles[e],value:this.value()};return this.options.values&&this.options.values.length&&(i.value=this.values(e),i.values=this.values()),this._trigger("start",t,i)},_slide:function(t,e,i){var s,n,o;this.options.values&&this.options.values.length?(s=this.values(e?0:1),2===this.options.values.length&&this.options.range===!0&&(0===e&&i>s||1===e&&s>i)&&(i=s),i!==this.values(e)&&(n=this.values(),n[e]=i,o=this._trigger("slide",t,{handle:this.handles[e],value:i,values:n}),s=this.values(e?0:1),o!==!1&&this.values(e,i))):i!==this.value()&&(o=this._trigger("slide",t,{handle:this.handles[e],value:i}),o!==!1&&this.value(i))},_stop:function(t,e){var i={handle:this.handles[e],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(e),i.values=this.values()),this._trigger("stop",t,i)},_change:function(t,e){if(!this._keySliding&&!this._mouseSliding){var i={handle:this.handles[e],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(e),i.values=this.values()),this._lastChangedValue=e,this._trigger("change",t,i)}},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),this._change(null,0),undefined):this._value()},values:function(e,i){var s,n,o;if(arguments.length>1)return this.options.values[e]=this._trimAlignValue(i),this._refreshValue(),this._change(null,e),undefined;if(!arguments.length)return this._values();if(!t.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(e):this.value();for(s=this.options.values,n=arguments[0],o=0;s.length>o;o+=1)s[o]=this._trimAlignValue(n[o]),this._change(null,o);this._refreshValue()},_setOption:function(e,i){var s,n=0;switch("range"===e&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),t.isArray(this.options.values)&&(n=this.options.values.length),t.Widget.prototype._setOption.apply(this,arguments),e){case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue();break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=0;n>s;s+=1)this._change(null,s);this._animateOff=!1;break;case"min":case"max":this._animateOff=!0,this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_value:function(){var t=this.options.value;return t=this._trimAlignValue(t)},_values:function(t){var e,i,s;if(arguments.length)return e=this.options.values[t],e=this._trimAlignValue(e);if(this.options.values&&this.options.values.length){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(t){if(this._valueMin()>=t)return this._valueMin();if(t>=this._valueMax())return this._valueMax();var e=this.options.step>0?this.options.step:1,i=(t-this._valueMin())%e,s=t-i;return 2*Math.abs(i)>=e&&(s+=i>0?e:-e),parseFloat(s.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var e,i,s,n,o,a=this.options.range,r=this.options,h=this,l=this._animateOff?!1:r.animate,c={};this.options.values&&this.options.values.length?this.handles.each(function(s){i=100*((h.values(s)-h._valueMin())/(h._valueMax()-h._valueMin())),c["horizontal"===h.orientation?"left":"bottom"]=i+"%",t(this).stop(1,1)[l?"animate":"css"](c,r.animate),h.options.range===!0&&("horizontal"===h.orientation?(0===s&&h.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:r.animate})):(0===s&&h.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:r.animate}))),e=i}):(s=this.value(),n=this._valueMin(),o=this._valueMax(),i=o!==n?100*((s-n)/(o-n)):0,c["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](c,r.animate),"min"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},r.animate),"max"===a&&"horizontal"===this.orientation&&this.range[l?"animate":"css"]({width:100-i+"%"},{queue:!1,duration:r.animate}),"min"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},r.animate),"max"===a&&"vertical"===this.orientation&&this.range[l?"animate":"css"]({height:100-i+"%"},{queue:!1,duration:r.animate}))},_handleEvents:{keydown:function(i){var s,n,o,a,r=t(i.target).data("ui-slider-handle-index");switch(i.keyCode){case t.ui.keyCode.HOME:case t.ui.keyCode.END:case t.ui.keyCode.PAGE_UP:case t.ui.keyCode.PAGE_DOWN:case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(i.preventDefault(),!this._keySliding&&(this._keySliding=!0,t(i.target).addClass("ui-state-active"),s=this._start(i,r),s===!1))return}switch(a=this.options.step,n=o=this.options.values&&this.options.values.length?this.values(r):this.value(),i.keyCode){case t.ui.keyCode.HOME:o=this._valueMin();break;case t.ui.keyCode.END:o=this._valueMax();break;case t.ui.keyCode.PAGE_UP:o=this._trimAlignValue(n+(this._valueMax()-this._valueMin())/e);break;case t.ui.keyCode.PAGE_DOWN:o=this._trimAlignValue(n-(this._valueMax()-this._valueMin())/e);break;case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:if(n===this._valueMax())return;o=this._trimAlignValue(n+a);break;case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(n===this._valueMin())return;o=this._trimAlignValue(n-a)}this._slide(i,r,o)},click:function(t){t.preventDefault()},keyup:function(e){var i=t(e.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(e,i),this._change(e,i),t(e.target).removeClass("ui-state-active"))}}})}(jQuery),function(t){function e(t){return function(){var e=this.element.val();t.apply(this,arguments),this._refresh(),e!==this.element.val()&&this._trigger("change")}}t.widget("ui.spinner",{version:"1.10.4",defaultElement:"<input>",widgetEventPrefix:"spin",options:{culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var e={},i=this.element;return t.each(["min","max","step"],function(t,s){var n=i.attr(s);void 0!==n&&n.length&&(e[s]=n)}),e},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t),void 0)},mousewheel:function(t,e){if(e){if(!this.spinning&&!this._start(t))return!1;this._spin((e>0?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},"mousedown .ui-spinner-button":function(e){function i(){var t=this.element[0]===this.document[0].activeElement;t||(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),e.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(e)!==!1&&this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(e){return t(e.currentTarget).hasClass("ui-state-active")?this._start(e)===!1?!1:(this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var t=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this.element.attr("role","spinbutton"),this.buttons=t.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(.5*t.height())&&t.height()>0&&t.height(t.height()),this.options.disabled&&this.disable()},_keydown:function(e){var i=this.options,s=t.ui.keyCode;switch(e.keyCode){case s.UP:return this._repeat(null,1,e),!0;case s.DOWN:return this._repeat(null,-1,e),!0;case s.PAGE_UP:return this._repeat(null,i.page,e),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,e),!0}return!1},_uiSpinnerHtml:function(){return"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"},_buttonHtml:function(){return"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'><span class='ui-icon "+this.options.icons.up+"'>&#9650;</span>"+"</a>"+"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>"+"<span class='ui-icon "+this.options.icons.down+"'>&#9660;</span>"+"</a>"},_start:function(t){return this.spinning||this._trigger("start",t)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&this._trigger("spin",e,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(e){var i=this.options.incremental;return i?t.isFunction(i)?i(e):Math.floor(e*e*e/5e4-e*e/500+17*e/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_adjustValue:function(t){var e,i,s=this.options;return e=null!==s.min?s.min:0,i=t-e,i=Math.round(i/s.step)*s.step,t=e+i,t=parseFloat(t.toFixed(this._precision())),null!==s.max&&t>s.max?s.max:null!==s.min&&s.min>t?s.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",t))},_setOption:function(t,e){if("culture"===t||"numberFormat"===t){var i=this._parse(this.element.val());return this.options[t]=e,this.element.val(this._format(i)),void 0}("max"===t||"min"===t||"step"===t)&&"string"==typeof e&&(e=this._parse(e)),"icons"===t&&(this.buttons.first().find(".ui-icon").removeClass(this.options.icons.up).addClass(e.up),this.buttons.last().find(".ui-icon").removeClass(this.options.icons.down).addClass(e.down)),this._super(t,e),"disabled"===t&&(e?(this.element.prop("disabled",!0),this.buttons.button("disable")):(this.element.prop("disabled",!1),this.buttons.button("enable")))},_setOptions:e(function(t){this._super(t),this._value(this.element.val())}),_parse:function(t){return"string"==typeof t&&""!==t&&(t=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t),""===t||isNaN(t)?null:t},_format:function(t){return""===t?"":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},_value:function(t,e){var i;""!==t&&(i=this._parse(t),null!==i&&(e||(i=this._adjustValue(i)),t=this._format(i))),this.element.val(t),this._refresh()},_destroy:function(){this.element.removeClass("ui-spinner-input").prop("disabled",!1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:e(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:e(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:e(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:e(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){return arguments.length?(e(this._value).call(this,t),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}})}(jQuery),function(t,e){function i(){return++n}function s(t){return t=t.cloneNode(!1),t.hash.length>1&&decodeURIComponent(t.href.replace(o,""))===decodeURIComponent(location.href.replace(o,""))}var n=0,o=/#.*$/;t.widget("ui.tabs",{version:"1.10.4",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_create:function(){var e=this,i=this.options;this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",i.collapsible).delegate(".ui-tabs-nav > li","mousedown"+this.eventNamespace,function(e){t(this).is(".ui-state-disabled")&&e.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){t(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this._processTabs(),i.active=this._initialActive(),t.isArray(i.disabled)&&(i.disabled=t.unique(i.disabled.concat(t.map(this.tabs.filter(".ui-state-disabled"),function(t){return e.tabs.index(t)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):t(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var i=this.options.active,s=this.options.collapsible,n=location.hash.substring(1);return null===i&&(n&&this.tabs.each(function(s,o){return t(o).attr("aria-controls")===n?(i=s,!1):e}),null===i&&(i=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===i||-1===i)&&(i=this.tabs.length?0:!1)),i!==!1&&(i=this.tabs.index(this.tabs.eq(i)),-1===i&&(i=s?!1:0)),!s&&i===!1&&this.anchors.length&&(i=0),i},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):t()}},_tabKeydown:function(i){var s=t(this.document[0].activeElement).closest("li"),n=this.tabs.index(s),o=!0;if(!this._handlePageNav(i)){switch(i.keyCode){case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:n++;break;case t.ui.keyCode.UP:case t.ui.keyCode.LEFT:o=!1,n--;break;case t.ui.keyCode.END:n=this.anchors.length-1;break;case t.ui.keyCode.HOME:n=0;break;case t.ui.keyCode.SPACE:return i.preventDefault(),clearTimeout(this.activating),this._activate(n),e;case t.ui.keyCode.ENTER:return i.preventDefault(),clearTimeout(this.activating),this._activate(n===this.options.active?!1:n),e;default:return}i.preventDefault(),clearTimeout(this.activating),n=this._focusNextTab(n,o),i.ctrlKey||(s.attr("aria-selected","false"),this.tabs.eq(n).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",n)},this.delay))}},_panelKeydown:function(e){this._handlePageNav(e)||e.ctrlKey&&e.keyCode===t.ui.keyCode.UP&&(e.preventDefault(),this.active.focus())},_handlePageNav:function(i){return i.altKey&&i.keyCode===t.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):i.altKey&&i.keyCode===t.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):e},_findNextTab:function(e,i){function s(){return e>n&&(e=0),0>e&&(e=n),e}for(var n=this.tabs.length-1;-1!==t.inArray(s(),this.options.disabled);)e=i?e+1:e-1;return e},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).focus(),t},_setOption:function(t,i){return"active"===t?(this._activate(i),e):"disabled"===t?(this._setupDisabled(i),e):(this._super(t,i),"collapsible"===t&&(this.element.toggleClass("ui-tabs-collapsible",i),i||this.options.active!==!1||this._activate(0)),"event"===t&&this._setupEvents(i),"heightStyle"===t&&this._setupHeightStyle(i),e)},_tabId:function(t){return t.attr("aria-controls")||"ui-tabs-"+i()},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var e=this.options,i=this.tablist.children(":has(a[href])");e.disabled=t.map(i.filter(".ui-state-disabled"),function(t){return i.index(t)}),this._processTabs(),e.active!==!1&&this.anchors.length?this.active.length&&!t.contains(this.tablist[0],this.active[0])?this.tabs.length===e.disabled.length?(e.active=!1,this.active=t()):this._activate(this._findNextTab(Math.max(0,e.active-1),!1)):e.active=this.tabs.index(this.active):(e.active=!1,this.active=t()),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-expanded":"false","aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-expanded":"true","aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var e=this;this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist"),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return t("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=t(),this.anchors.each(function(i,n){var o,a,r,h=t(n).uniqueId().attr("id"),l=t(n).closest("li"),c=l.attr("aria-controls");s(n)?(o=n.hash,a=e.element.find(e._sanitizeSelector(o))):(r=e._tabId(l),o="#"+r,a=e.element.find(o),a.length||(a=e._createPanel(r),a.insertAfter(e.panels[i-1]||e.tablist)),a.attr("aria-live","polite")),a.length&&(e.panels=e.panels.add(a)),c&&l.data("ui-tabs-aria-controls",c),l.attr({"aria-controls":o.substring(1),"aria-labelledby":h}),a.attr("aria-labelledby",h)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel")},_getList:function(){return this.tablist||this.element.find("ol,ul").eq(0)},_createPanel:function(e){return t("<div>").attr("id",e).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(e){t.isArray(e)&&(e.length?e.length===this.anchors.length&&(e=!0):e=!1);for(var i,s=0;i=this.tabs[s];s++)e===!0||-1!==t.inArray(s,e)?t(i).addClass("ui-state-disabled").attr("aria-disabled","true"):t(i).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=e},_setupEvents:function(e){var i={click:function(t){t.preventDefault()}};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(e){var i,s=this.element.parent();"fill"===e?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var e=t(this),s=e.css("position");"absolute"!==s&&"fixed"!==s&&(i-=e.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=t(this).outerHeight(!0)}),this.panels.each(function(){t(this).height(Math.max(0,i-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.panels.each(function(){i=Math.max(i,t(this).height("").height())}).height(i))},_eventHandler:function(e){var i=this.options,s=this.active,n=t(e.currentTarget),o=n.closest("li"),a=o[0]===s[0],r=a&&i.collapsible,h=r?t():this._getPanelForTab(o),l=s.length?this._getPanelForTab(s):t(),c={oldTab:s,oldPanel:l,newTab:r?t():o,newPanel:h};e.preventDefault(),o.hasClass("ui-state-disabled")||o.hasClass("ui-tabs-loading")||this.running||a&&!i.collapsible||this._trigger("beforeActivate",e,c)===!1||(i.active=r?!1:this.tabs.index(o),this.active=a?t():o,this.xhr&&this.xhr.abort(),l.length||h.length||t.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(o),e),this._toggle(e,c))},_toggle:function(e,i){function s(){o.running=!1,o._trigger("activate",e,i)}function n(){i.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),a.length&&o.options.show?o._show(a,o.options.show,s):(a.show(),s())}var o=this,a=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),n()}):(i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),r.hide(),n()),r.attr({"aria-expanded":"false","aria-hidden":"true"}),i.oldTab.attr("aria-selected","false"),a.length&&r.length?i.oldTab.attr("tabIndex",-1):a.length&&this.tabs.filter(function(){return 0===t(this).attr("tabIndex")}).attr("tabIndex",-1),a.attr({"aria-expanded":"true","aria-hidden":"false"}),i.newTab.attr({"aria-selected":"true",tabIndex:0})},_activate:function(e){var i,s=this._findActive(e);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return e===!1?t():this.tabs.eq(e)},_getIndex:function(t){return"string"==typeof t&&(t=this.anchors.index(this.anchors.filter("[href$='"+t+"']"))),t},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){t.data(this,"ui-tabs-destroy")?t(this).remove():t(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var e=t(this),i=e.data("ui-tabs-aria-controls");i?e.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):e.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(i){var s=this.options.disabled;s!==!1&&(i===e?s=!1:(i=this._getIndex(i),s=t.isArray(s)?t.map(s,function(t){return t!==i?t:null}):t.map(this.tabs,function(t,e){return e!==i?e:null})),this._setupDisabled(s))},disable:function(i){var s=this.options.disabled;if(s!==!0){if(i===e)s=!0;else{if(i=this._getIndex(i),-1!==t.inArray(i,s))return;s=t.isArray(s)?t.merge([i],s).sort():[i]}this._setupDisabled(s)}},load:function(e,i){e=this._getIndex(e);var n=this,o=this.tabs.eq(e),a=o.find(".ui-tabs-anchor"),r=this._getPanelForTab(o),h={tab:o,panel:r};s(a[0])||(this.xhr=t.ajax(this._ajaxSettings(a,i,h)),this.xhr&&"canceled"!==this.xhr.statusText&&(o.addClass("ui-tabs-loading"),r.attr("aria-busy","true"),this.xhr.success(function(t){setTimeout(function(){r.html(t),n._trigger("load",i,h)},1)}).complete(function(t,e){setTimeout(function(){"abort"===e&&n.panels.stop(!1,!0),o.removeClass("ui-tabs-loading"),r.removeAttr("aria-busy"),t===n.xhr&&delete n.xhr},1)})))},_ajaxSettings:function(e,i,s){var n=this;return{url:e.attr("href"),beforeSend:function(e,o){return n._trigger("beforeLoad",i,t.extend({jqXHR:e,ajaxSettings:o},s))}}},_getPanelForTab:function(e){var i=t(e).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}})}(jQuery),function(t){function e(e,i){var s=(e.attr("aria-describedby")||"").split(/\s+/);s.push(i),e.data("ui-tooltip-id",i).attr("aria-describedby",t.trim(s.join(" ")))}function i(e){var i=e.data("ui-tooltip-id"),s=(e.attr("aria-describedby")||"").split(/\s+/),n=t.inArray(i,s);-1!==n&&s.splice(n,1),e.removeData("ui-tooltip-id"),s=t.trim(s.join(" ")),s?e.attr("aria-describedby",s):e.removeAttr("aria-describedby")}var s=0;t.widget("ui.tooltip",{version:"1.10.4",options:{content:function(){var e=t(this).attr("title")||"";return t("<a>").text(e).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable()},_setOption:function(e,i){var s=this;return"disabled"===e?(this[i?"_disable":"_enable"](),this.options[e]=i,void 0):(this._super(e,i),"content"===e&&t.each(this.tooltips,function(t,e){s._updateContent(e)}),void 0)},_disable:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur");n.target=n.currentTarget=s[0],e.close(n,!0)}),this.element.find(this.options.items).addBack().each(function(){var e=t(this);e.is("[title]")&&e.data("ui-tooltip-title",e.attr("title")).attr("title","")})},_enable:function(){this.element.find(this.options.items).addBack().each(function(){var e=t(this);e.data("ui-tooltip-title")&&e.attr("title",e.data("ui-tooltip-title"))})},open:function(e){var i=this,s=t(e?e.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),e&&"mouseover"===e.type&&s.parents().each(function(){var e,s=t(this);s.data("ui-tooltip-open")&&(e=t.Event("blur"),e.target=e.currentTarget=this,i.close(e,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._updateContent(s,e))},_updateContent:function(t,e){var i,s=this.options.content,n=this,o=e?e.type:null; -return"string"==typeof s?this._open(e,t,s):(i=s.call(t[0],function(i){t.data("ui-tooltip-open")&&n._delay(function(){e&&(e.type=o),this._open(e,t,i)})}),i&&this._open(e,t,i),void 0)},_open:function(i,s,n){function o(t){l.of=t,a.is(":hidden")||a.position(l)}var a,r,h,l=t.extend({},this.options.position);if(n){if(a=this._find(s),a.length)return a.find(".ui-tooltip-content").html(n),void 0;s.is("[title]")&&(i&&"mouseover"===i.type?s.attr("title",""):s.removeAttr("title")),a=this._tooltip(s),e(s,a.attr("id")),a.find(".ui-tooltip-content").html(n),this.options.track&&i&&/^mouse/.test(i.type)?(this._on(this.document,{mousemove:o}),o(i)):a.position(t.extend({of:s},this.options.position)),a.hide(),this._show(a,this.options.show),this.options.show&&this.options.show.delay&&(h=this.delayedShow=setInterval(function(){a.is(":visible")&&(o(l.of),clearInterval(h))},t.fx.interval)),this._trigger("open",i,{tooltip:a}),r={keyup:function(e){if(e.keyCode===t.ui.keyCode.ESCAPE){var i=t.Event(e);i.currentTarget=s[0],this.close(i,!0)}},remove:function(){this._removeTooltip(a)}},i&&"mouseover"!==i.type||(r.mouseleave="close"),i&&"focusin"!==i.type||(r.focusout="close"),this._on(!0,s,r)}},close:function(e){var s=this,n=t(e?e.currentTarget:this.element),o=this._find(n);this.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&n.attr("title",n.data("ui-tooltip-title")),i(n),o.stop(!0),this._hide(o,this.options.hide,function(){s._removeTooltip(t(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),e&&"mouseleave"===e.type&&t.each(this.parents,function(e,i){t(i.element).attr("title",i.title),delete s.parents[e]}),this.closing=!0,this._trigger("close",e,{tooltip:o}),this.closing=!1)},_tooltip:function(e){var i="ui-tooltip-"+s++,n=t("<div>").attr({id:i,role:"tooltip"}).addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||""));return t("<div>").addClass("ui-tooltip-content").appendTo(n),n.appendTo(this.document[0].body),this.tooltips[i]=e,n},_find:function(e){var i=e.data("ui-tooltip-id");return i?t("#"+i):t()},_removeTooltip:function(t){t.remove(),delete this.tooltips[t.attr("id")]},_destroy:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur");n.target=n.currentTarget=s[0],e.close(n,!0),t("#"+i).remove(),s.data("ui-tooltip-title")&&(s.attr("title",s.data("ui-tooltip-title")),s.removeData("ui-tooltip-title"))})}})}(jQuery); \ No newline at end of file diff --git a/assets/js/plugins/jsKnob/jquery.knob.js b/assets/js/plugins/jsKnob/jquery.knob.js deleted file mode 100644 index a49aa29b..00000000 --- a/assets/js/plugins/jsKnob/jquery.knob.js +++ /dev/null @@ -1,791 +0,0 @@ -/*!jQuery Knob*/ -/** - * Downward compatible, touchable dial - * - * Version: 1.2.8 - * Requires: jQuery v1.7+ - * - * Copyright (c) 2012 Anthony Terrien - * Under MIT License (http://www.opensource.org/licenses/mit-license.php) - * - * Thanks to vor, eskimoblood, spiffistan, FabrizioC - */ -(function($) { - - /** - * Kontrol library - */ - "use strict"; - - /** - * Definition of globals and core - */ - var k = {}, // kontrol - max = Math.max, - min = Math.min; - - k.c = {}; - k.c.d = $(document); - k.c.t = function (e) { - return e.originalEvent.touches.length - 1; - }; - - /** - * Kontrol Object - * - * Definition of an abstract UI control - * - * Each concrete component must call this one. - * <code> - * k.o.call(this); - * </code> - */ - k.o = function () { - var s = this; - - this.o = null; // array of options - this.$ = null; // jQuery wrapped element - this.i = null; // mixed HTMLInputElement or array of HTMLInputElement - this.g = null; // deprecated 2D graphics context for 'pre-rendering' - this.v = null; // value ; mixed array or integer - this.cv = null; // change value ; not commited value - this.x = 0; // canvas x position - this.y = 0; // canvas y position - this.w = 0; // canvas width - this.h = 0; // canvas height - this.$c = null; // jQuery canvas element - this.c = null; // rendered canvas context - this.t = 0; // touches index - this.isInit = false; - this.fgColor = null; // main color - this.pColor = null; // previous color - this.dH = null; // draw hook - this.cH = null; // change hook - this.eH = null; // cancel hook - this.rH = null; // release hook - this.scale = 1; // scale factor - this.relative = false; - this.relativeWidth = false; - this.relativeHeight = false; - this.$div = null; // component div - - this.run = function () { - var cf = function (e, conf) { - var k; - for (k in conf) { - s.o[k] = conf[k]; - } - s._carve().init(); - s._configure() - ._draw(); - }; - - if(this.$.data('kontroled')) return; - this.$.data('kontroled', true); - - this.extend(); - this.o = $.extend( - { - // Config - min : this.$.data('min') !== undefined ? this.$.data('min') : 0, - max : this.$.data('max') !== undefined ? this.$.data('max') : 100, - stopper : true, - readOnly : this.$.data('readonly') || (this.$.attr('readonly') === 'readonly'), - - // UI - cursor : (this.$.data('cursor') === true && 30) || - this.$.data('cursor') || 0, - thickness : ( - this.$.data('thickness') && - Math.max(Math.min(this.$.data('thickness'), 1), 0.01) - ) || 0.35, - lineCap : this.$.data('linecap') || 'butt', - width : this.$.data('width') || 200, - height : this.$.data('height') || 200, - displayInput : this.$.data('displayinput') == null || this.$.data('displayinput'), - displayPrevious : this.$.data('displayprevious'), - fgColor : this.$.data('fgcolor') || '#87CEEB', - inputColor: this.$.data('inputcolor'), - font: this.$.data('font') || 'Arial', - fontWeight: this.$.data('font-weight') || 'bold', - inline : false, - step : this.$.data('step') || 1, - rotation: this.$.data('rotation'), - - // Hooks - draw : null, // function () {} - change : null, // function (value) {} - cancel : null, // function () {} - release : null, // function (value) {} - - // Output formatting, allows to add unit: %, ms ... - format: function(v) { - return v; - }, - parse: function (v) { - return parseFloat(v); - } - }, this.o - ); - - // finalize options - this.o.flip = this.o.rotation === 'anticlockwise' || this.o.rotation === 'acw'; - if(!this.o.inputColor) { - this.o.inputColor = this.o.fgColor; - } - - // routing value - if(this.$.is('fieldset')) { - - // fieldset = array of integer - this.v = {}; - this.i = this.$.find('input'); - this.i.each(function(k) { - var $this = $(this); - s.i[k] = $this; - s.v[k] = s.o.parse($this.val()); - - $this.bind( - 'change blur' - , function () { - var val = {}; - val[k] = $this.val(); - s.val(val); - } - ); - }); - this.$.find('legend').remove(); - - } else { - - // input = integer - this.i = this.$; - this.v = this.o.parse(this.$.val()); - (this.v === '') && (this.v = this.o.min); - - this.$.bind( - 'change blur' - , function () { - s.val(s._validate(s.o.parse(s.$.val()))); - } - ); - - } - - (!this.o.displayInput) && this.$.hide(); - - // adds needed DOM elements (canvas, div) - this.$c = $(document.createElement('canvas')).attr({ - width: this.o.width, - height: this.o.height - }); - - // wraps all elements in a div - // add to DOM before Canvas init is triggered - this.$div = $('<div style="' - + (this.o.inline ? 'display:inline;' : '') - + 'width:' + this.o.width + 'px;height:' + this.o.height + 'px;' - + '"></div>'); - - this.$.wrap(this.$div).before(this.$c); - this.$div = this.$.parent(); - - if (typeof G_vmlCanvasManager !== 'undefined') { - G_vmlCanvasManager.initElement(this.$c[0]); - } - - this.c = this.$c[0].getContext ? this.$c[0].getContext('2d') : null; - - if (!this.c) { - throw { - name: "CanvasNotSupportedException", - message: "Canvas not supported. Please use excanvas on IE8.0.", - toString: function(){return this.name + ": " + this.message} - } - } - - // hdpi support - this.scale = (window.devicePixelRatio || 1) / - ( - this.c.webkitBackingStorePixelRatio || - this.c.mozBackingStorePixelRatio || - this.c.msBackingStorePixelRatio || - this.c.oBackingStorePixelRatio || - this.c.backingStorePixelRatio || 1 - ); - - // detects relative width / height - this.relativeWidth = ((this.o.width % 1 !== 0) && - this.o.width.indexOf('%')); - this.relativeHeight = ((this.o.height % 1 !== 0) && - this.o.height.indexOf('%')); - this.relative = (this.relativeWidth || this.relativeHeight); - - // computes size and carves the component - this._carve(); - - // prepares props for transaction - if (this.v instanceof Object) { - this.cv = {}; - this.copy(this.v, this.cv); - } else { - this.cv = this.v; - } - - // binds configure event - this.$ - .bind("configure", cf) - .parent() - .bind("configure", cf); - - // finalize init - this._listen() - ._configure() - ._xy() - .init(); - - this.isInit = true; - - this.$.val(this.o.format(this.v)); - this._draw(); - - return this; - }; - - this._carve = function() { - if(this.relative) { - var w = this.relativeWidth ? - this.$div.parent().width() * - parseInt(this.o.width) / 100 : - this.$div.parent().width(), - h = this.relativeHeight ? - this.$div.parent().height() * - parseInt(this.o.height) / 100 : - this.$div.parent().height(); - - // apply relative - this.w = this.h = Math.min(w, h); - } else { - this.w = this.o.width; - this.h = this.o.height; - } - - // finalize div - this.$div.css({ - 'width': this.w + 'px', - 'height': this.h + 'px' - }); - - // finalize canvas with computed width - this.$c.attr({ - width: this.w, - height: this.h - }); - - // scaling - if (this.scale !== 1) { - this.$c[0].width = this.$c[0].width * this.scale; - this.$c[0].height = this.$c[0].height * this.scale; - this.$c.width(this.w); - this.$c.height(this.h); - } - - return this; - } - - this._draw = function () { - - // canvas pre-rendering - var d = true; - - s.g = s.c; - - s.clear(); - - s.dH - && (d = s.dH()); - - (d !== false) && s.draw(); - - }; - - this._touch = function (e) { - - var touchMove = function (e) { - - var v = s.xy2val( - e.originalEvent.touches[s.t].pageX, - e.originalEvent.touches[s.t].pageY - ); - - if (v == s.cv) return; - - if (s.cH && (s.cH(v) === false)) return; - - s.change(s._validate(v)); - s._draw(); - }; - - // get touches index - this.t = k.c.t(e); - - // First touch - touchMove(e); - - // Touch events listeners - k.c.d - .bind("touchmove.k", touchMove) - .bind( - "touchend.k" - , function () { - k.c.d.unbind('touchmove.k touchend.k'); - s.val(s.cv); - } - ); - - return this; - }; - - this._mouse = function (e) { - - var mouseMove = function (e) { - var v = s.xy2val(e.pageX, e.pageY); - - if (v == s.cv) return; - - if (s.cH && (s.cH(v) === false)) return; - - s.change(s._validate(v)); - s._draw(); - }; - - // First click - mouseMove(e); - - // Mouse events listeners - k.c.d - .bind("mousemove.k", mouseMove) - .bind( - // Escape key cancel current change - "keyup.k" - , function (e) { - if (e.keyCode === 27) { - k.c.d.unbind("mouseup.k mousemove.k keyup.k"); - - if ( - s.eH - && (s.eH() === false) - ) return; - - s.cancel(); - } - } - ) - .bind( - "mouseup.k" - , function (e) { - k.c.d.unbind('mousemove.k mouseup.k keyup.k'); - s.val(s.cv); - } - ); - - return this; - }; - - this._xy = function () { - var o = this.$c.offset(); - this.x = o.left; - this.y = o.top; - return this; - }; - - this._listen = function () { - - if (!this.o.readOnly) { - this.$c - .bind( - "mousedown" - , function (e) { - e.preventDefault(); - s._xy()._mouse(e); - } - ) - .bind( - "touchstart" - , function (e) { - e.preventDefault(); - s._xy()._touch(e); - } - ); - - this.listen(); - } else { - this.$.attr('readonly', 'readonly'); - } - - if(this.relative) { - $(window).resize(function() { - s._carve() - .init(); - s._draw(); - }); - } - - return this; - }; - - this._configure = function () { - - // Hooks - if (this.o.draw) this.dH = this.o.draw; - if (this.o.change) this.cH = this.o.change; - if (this.o.cancel) this.eH = this.o.cancel; - if (this.o.release) this.rH = this.o.release; - - if (this.o.displayPrevious) { - this.pColor = this.h2rgba(this.o.fgColor, "0.4"); - this.fgColor = this.h2rgba(this.o.fgColor, "0.6"); - } else { - this.fgColor = this.o.fgColor; - } - - return this; - }; - - this._clear = function () { - this.$c[0].width = this.$c[0].width; - }; - - this._validate = function(v) { - return (~~ (((v < 0) ? -0.5 : 0.5) + (v/this.o.step))) * this.o.step; - }; - - // Abstract methods - this.listen = function () {}; // on start, one time - this.extend = function () {}; // each time configure triggered - this.init = function () {}; // each time configure triggered - this.change = function (v) {}; // on change - this.val = function (v) {}; // on release - this.xy2val = function (x, y) {}; // - this.draw = function () {}; // on change / on release - this.clear = function () { this._clear(); }; - - // Utils - this.h2rgba = function (h, a) { - var rgb; - h = h.substring(1,7) - rgb = [parseInt(h.substring(0,2),16) - ,parseInt(h.substring(2,4),16) - ,parseInt(h.substring(4,6),16)]; - return "rgba(" + rgb[0] + "," + rgb[1] + "," + rgb[2] + "," + a + ")"; - }; - - this.copy = function (f, t) { - for (var i in f) { t[i] = f[i]; } - }; - }; - - - /** - * k.Dial - */ - k.Dial = function () { - k.o.call(this); - - this.startAngle = null; - this.xy = null; - this.radius = null; - this.lineWidth = null; - this.cursorExt = null; - this.w2 = null; - this.PI2 = 2*Math.PI; - - this.extend = function () { - this.o = $.extend( - { - bgColor : this.$.data('bgcolor') || '#EEEEEE', - angleOffset : this.$.data('angleoffset') || 0, - angleArc : this.$.data('anglearc') || 360, - inline : true - }, this.o - ); - }; - - this.val = function (v, triggerRelease) { - if (null != v) { - - // reverse format - v = this.o.parse(v); - - if ( - triggerRelease !== false && (v != this.v) && this.rH && - (this.rH(v) === false) - ) return; - - this.cv = this.o.stopper ? max(min(v, this.o.max), this.o.min) : v; - this.v = this.cv; - this.$.val(this.o.format(this.v)); - this._draw(); - } else { - return this.v; - } - }; - - this.xy2val = function (x, y) { - var a, ret; - - a = Math.atan2( - x - (this.x + this.w2) - , - (y - this.y - this.w2) - ) - this.angleOffset; - - if (this.o.flip) { - a = this.angleArc - a - this.PI2; - } - - if(this.angleArc != this.PI2 && (a < 0) && (a > -0.5)) { - // if isset angleArc option, set to min if .5 under min - a = 0; - } else if (a < 0) { - a += this.PI2; - } - - ret = ~~ (0.5 + (a * (this.o.max - this.o.min) / this.angleArc)) - + this.o.min; - - this.o.stopper && (ret = max(min(ret, this.o.max), this.o.min)); - - return ret; - }; - - this.listen = function () { - // bind MouseWheel - var s = this, mwTimerStop, mwTimerRelease, - mw = function (e) { - e.preventDefault(); - - var ori = e.originalEvent - ,deltaX = ori.detail || ori.wheelDeltaX - ,deltaY = ori.detail || ori.wheelDeltaY - ,v = s._validate(s.o.parse(s.$.val())) - + (deltaX>0 || deltaY>0 ? s.o.step : deltaX<0 || deltaY<0 ? -s.o.step : 0); - - v = max(min(v, s.o.max), s.o.min); - - s.val(v, false); - - if(s.rH) { - // Handle mousewheel stop - clearTimeout(mwTimerStop); - mwTimerStop = setTimeout(function() { - s.rH(v); - mwTimerStop = null; - }, 100); - - // Handle mousewheel releases - if(!mwTimerRelease) { - mwTimerRelease = setTimeout(function() { - if(mwTimerStop) s.rH(v); - mwTimerRelease = null; - }, 200); - } - } - } - , kval, to, m = 1, kv = {37:-s.o.step, 38:s.o.step, 39:s.o.step, 40:-s.o.step}; - - this.$ - .bind( - "keydown" - ,function (e) { - var kc = e.keyCode; - - // numpad support - if(kc >= 96 && kc <= 105) { - kc = e.keyCode = kc - 48; - } - - kval = parseInt(String.fromCharCode(kc)); - - if (isNaN(kval)) { - - (kc !== 13) // enter - && (kc !== 8) // bs - && (kc !== 9) // tab - && (kc !== 189) // - - && (kc !== 190 || s.$.val().match(/\./)) // . only allowed once - && e.preventDefault(); - - // arrows - if ($.inArray(kc,[37,38,39,40]) > -1) { - e.preventDefault(); - - var v = s.o.parse(s.$.val()) + kv[kc] * m; - s.o.stopper && (v = max(min(v, s.o.max), s.o.min)); - - s.change(v); - s._draw(); - - // long time keydown speed-up - to = window.setTimeout( - function () { m *= 2; }, 30 - ); - } - } - } - ) - .bind( - "keyup" - ,function (e) { - if (isNaN(kval)) { - if (to) { - window.clearTimeout(to); - to = null; - m = 1; - s.val(s.$.val()); - } - } else { - // kval postcond - (s.$.val() > s.o.max && s.$.val(s.o.max)) - || (s.$.val() < s.o.min && s.$.val(s.o.min)); - } - - } - ); - - this.$c.bind("mousewheel DOMMouseScroll", mw); - this.$.bind("mousewheel DOMMouseScroll", mw) - }; - - this.init = function () { - - if ( - this.v < this.o.min - || this.v > this.o.max - ) this.v = this.o.min; - - this.$.val(this.v); - this.w2 = this.w / 2; - this.cursorExt = this.o.cursor / 100; - this.xy = this.w2 * this.scale; - this.lineWidth = this.xy * this.o.thickness; - this.lineCap = this.o.lineCap; - this.radius = this.xy - this.lineWidth / 2; - - this.o.angleOffset - && (this.o.angleOffset = isNaN(this.o.angleOffset) ? 0 : this.o.angleOffset); - - this.o.angleArc - && (this.o.angleArc = isNaN(this.o.angleArc) ? this.PI2 : this.o.angleArc); - - // deg to rad - this.angleOffset = this.o.angleOffset * Math.PI / 180; - this.angleArc = this.o.angleArc * Math.PI / 180; - - // compute start and end angles - this.startAngle = 1.5 * Math.PI + this.angleOffset; - this.endAngle = 1.5 * Math.PI + this.angleOffset + this.angleArc; - - var s = max( - String(Math.abs(this.o.max)).length - , String(Math.abs(this.o.min)).length - , 2 - ) + 2; - - this.o.displayInput - && this.i.css({ - 'width' : ((this.w / 2 + 4) >> 0) + 'px' - ,'height' : ((this.w / 3) >> 0) + 'px' - ,'position' : 'absolute' - ,'vertical-align' : 'middle' - ,'margin-top' : ((this.w / 3) >> 0) + 'px' - ,'margin-left' : '-' + ((this.w * 3 / 4 + 2) >> 0) + 'px' - ,'border' : 0 - ,'background' : 'none' - ,'font' : this.o.fontWeight + ' ' + ((this.w / s) >> 0) + 'px ' + this.o.font - ,'text-align' : 'center' - ,'color' : this.o.inputColor || this.o.fgColor - ,'padding' : '0px' - ,'-webkit-appearance': 'none' - }) - || this.i.css({ - 'width' : '0px' - ,'visibility' : 'hidden' - }); - }; - - this.change = function (v) { - this.cv = v; - this.$.val(this.o.format(v)); - }; - - this.angle = function (v) { - return (v - this.o.min) * this.angleArc / (this.o.max - this.o.min); - }; - - this.arc = function (v) { - var sa, ea; - v = this.angle(v); - if (this.o.flip) { - sa = this.endAngle + 0.00001; - ea = sa - v - 0.00001; - } else { - sa = this.startAngle - 0.00001; - ea = sa + v + 0.00001; - } - this.o.cursor - && (sa = ea - this.cursorExt) - && (ea = ea + this.cursorExt); - return { - s: sa, - e: ea, - d: this.o.flip && !this.o.cursor - }; - }; - - this.draw = function () { - - var c = this.g, // context - a = this.arc(this.cv) // Arc - , pa // Previous arc - , r = 1; - - c.lineWidth = this.lineWidth; - c.lineCap = this.lineCap; - - c.beginPath(); - c.strokeStyle = this.o.bgColor; - c.arc(this.xy, this.xy, this.radius, this.endAngle - 0.00001, this.startAngle + 0.00001, true); - c.stroke(); - - if (this.o.displayPrevious) { - pa = this.arc(this.v); - c.beginPath(); - c.strokeStyle = this.pColor; - c.arc(this.xy, this.xy, this.radius, pa.s, pa.e, pa.d); - c.stroke(); - r = (this.cv == this.v); - } - - c.beginPath(); - c.strokeStyle = r ? this.o.fgColor : this.fgColor ; - c.arc(this.xy, this.xy, this.radius, a.s, a.e, a.d); - c.stroke(); - }; - - this.cancel = function () { - this.val(this.v); - }; - }; - - $.fn.dial = $.fn.knob = function (o) { - return this.each( - function () { - var d = new k.Dial(); - d.o = o; - d.$ = $(this); - d.run(); - } - ).parent(); - }; - -})(jQuery); diff --git a/assets/js/plugins/jsTree/jstree.min.js b/assets/js/plugins/jsTree/jstree.min.js deleted file mode 100644 index e19446dd..00000000 --- a/assets/js/plugins/jsTree/jstree.min.js +++ /dev/null @@ -1,5 +0,0 @@ -/*! jsTree - v3.0.9 - 2015-01-05 - (MIT) */ -!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a,b){"use strict";if(!a.jstree){var c=0,d=!1,e=!1,f=!1,g=[],h=a("script:last").attr("src"),i=document,j=i.createElement("LI"),k,l;j.setAttribute("role","treeitem"),k=i.createElement("I"),k.className="jstree-icon jstree-ocl",k.setAttribute("role","presentation"),j.appendChild(k),k=i.createElement("A"),k.className="jstree-anchor",k.setAttribute("href","#"),k.setAttribute("tabindex","-1"),l=i.createElement("I"),l.className="jstree-icon jstree-themeicon",l.setAttribute("role","presentation"),k.appendChild(l),j.appendChild(k),k=l=null,a.jstree={version:"3.0.9",defaults:{plugins:[]},plugins:{},path:h&&-1!==h.indexOf("/")?h.replace(/\/[^\/]+$/,""):"",idregex:/[\\:&!^|()\[\]<>@*'+~#";.,=\- \/${}%?`]/g},a.jstree.create=function(b,d){var e=new a.jstree.core(++c),f=d;return d=a.extend(!0,{},a.jstree.defaults,d),f&&f.plugins&&(d.plugins=f.plugins),a.each(d.plugins,function(a,b){"core"!==a&&(e=e.plugin(b,d[b]))}),e.init(b,d),e},a.jstree.destroy=function(){a(".jstree:jstree").jstree("destroy"),a(document).off(".jstree")},a.jstree.core=function(a){this._id=a,this._cnt=0,this._wrk=null,this._data={core:{themes:{name:!1,dots:!1,icons:!1},selected:[],last_error:{},working:!1,worker_queue:[],focused:null}}},a.jstree.reference=function(b){var c=null,d=null;if(b&&b.id&&(b=b.id),!d||!d.length)try{d=a(b)}catch(e){}if(!d||!d.length)try{d=a("#"+b.replace(a.jstree.idregex,"\\$&"))}catch(e){}return d&&d.length&&(d=d.closest(".jstree")).length&&(d=d.data("jstree"))?c=d:a(".jstree").each(function(){var d=a(this).data("jstree");return d&&d._model.data[b]?(c=d,!1):void 0}),c},a.fn.jstree=function(c){var d="string"==typeof c,e=Array.prototype.slice.call(arguments,1),f=null;return c!==!0||this.length?(this.each(function(){var g=a.jstree.reference(this),h=d&&g?g[c]:null;return f=d&&h?h.apply(g,e):null,g||d||c!==b&&!a.isPlainObject(c)||a(this).data("jstree",new a.jstree.create(this,c)),(g&&!d||c===!0)&&(f=g||!1),null!==f&&f!==b?!1:void 0}),null!==f&&f!==b?f:this):!1},a.expr[":"].jstree=a.expr.createPseudo(function(c){return function(c){return a(c).hasClass("jstree")&&a(c).data("jstree")!==b}}),a.jstree.defaults.core={data:!1,strings:!1,check_callback:!1,error:a.noop,animation:200,multiple:!0,themes:{name:!1,url:!1,dir:!1,dots:!0,icons:!0,stripes:!1,variant:!1,responsive:!1},expand_selected_onload:!0,worker:!0,force_text:!1,dblclick_toggle:!0},a.jstree.core.prototype={plugin:function(b,c){var d=a.jstree.plugins[b];return d?(this._data[b]={},d.prototype=this,new d(c,this)):this},init:function(b,c){this._model={data:{"#":{id:"#",parent:null,parents:[],children:[],children_d:[],state:{loaded:!1}}},changed:[],force_full_redraw:!1,redraw_timeout:!1,default_state:{loaded:!0,opened:!1,selected:!1,disabled:!1}},this.element=a(b).addClass("jstree jstree-"+this._id),this.settings=c,this._data.core.ready=!1,this._data.core.loaded=!1,this._data.core.rtl="rtl"===this.element.css("direction"),this.element[this._data.core.rtl?"addClass":"removeClass"]("jstree-rtl"),this.element.attr("role","tree"),this.settings.core.multiple&&this.element.attr("aria-multiselectable",!0),this.element.attr("tabindex")||this.element.attr("tabindex","0"),this.bind(),this.trigger("init"),this._data.core.original_container_html=this.element.find(" > ul > li").clone(!0),this._data.core.original_container_html.find("li").addBack().contents().filter(function(){return 3===this.nodeType&&(!this.nodeValue||/^\s+$/.test(this.nodeValue))}).remove(),this.element.html("<ul class='jstree-container-ul jstree-children' role='group'><li id='j"+this._id+"_loading' class='jstree-initial-node jstree-loading jstree-leaf jstree-last' role='tree-item'><i class='jstree-icon jstree-ocl'></i><a class='jstree-anchor' href='#'><i class='jstree-icon jstree-themeicon-hidden'></i>"+this.get_string("Loading ...")+"</a></li></ul>"),this.element.attr("aria-activedescendant","j"+this._id+"_loading"),this._data.core.li_height=this.get_container_ul().children("li").first().height()||24,this.trigger("loading"),this.load_node("#")},destroy:function(a){if(this._wrk)try{window.URL.revokeObjectURL(this._wrk),this._wrk=null}catch(b){}a||this.element.empty(),this.teardown()},teardown:function(){this.unbind(),this.element.removeClass("jstree").removeData("jstree").find("[class^='jstree']").addBack().attr("class",function(){return this.className.replace(/jstree[^ ]*|$/gi,"")}),this.element=null},bind:function(){var b="",c=null,d=0;this.element.on("dblclick.jstree",function(){if(document.selection&&document.selection.empty)document.selection.empty();else if(window.getSelection){var a=window.getSelection();try{a.removeAllRanges(),a.collapse()}catch(b){}}}).on("mousedown.jstree",a.proxy(function(a){a.target===this.element[0]&&(a.preventDefault(),d=+new Date)},this)).on("mousedown.jstree",".jstree-ocl",function(a){a.preventDefault()}).on("click.jstree",".jstree-ocl",a.proxy(function(a){this.toggle_node(a.target)},this)).on("dblclick.jstree",".jstree-anchor",a.proxy(function(a){this.settings.core.dblclick_toggle&&this.toggle_node(a.target)},this)).on("click.jstree",".jstree-anchor",a.proxy(function(b){b.preventDefault(),b.currentTarget!==document.activeElement&&a(b.currentTarget).focus(),this.activate_node(b.currentTarget,b)},this)).on("keydown.jstree",".jstree-anchor",a.proxy(function(b){if("INPUT"===b.target.tagName)return!0;var c=null;switch(this._data.core.rtl&&(37===b.which?b.which=39:39===b.which&&(b.which=37)),b.which){case 32:b.ctrlKey&&(b.type="click",a(b.currentTarget).trigger(b));break;case 13:b.type="click",a(b.currentTarget).trigger(b);break;case 37:b.preventDefault(),this.is_open(b.currentTarget)?this.close_node(b.currentTarget):(c=this.get_parent(b.currentTarget),c&&"#"!==c.id&&this.get_node(c,!0).children(".jstree-anchor").focus());break;case 38:b.preventDefault(),c=this.get_prev_dom(b.currentTarget),c&&c.length&&c.children(".jstree-anchor").focus();break;case 39:b.preventDefault(),this.is_closed(b.currentTarget)?this.open_node(b.currentTarget,function(a){this.get_node(a,!0).children(".jstree-anchor").focus()}):this.is_open(b.currentTarget)&&(c=this.get_node(b.currentTarget,!0).children(".jstree-children")[0],c&&a(this._firstChild(c)).children(".jstree-anchor").focus());break;case 40:b.preventDefault(),c=this.get_next_dom(b.currentTarget),c&&c.length&&c.children(".jstree-anchor").focus();break;case 106:this.open_all();break;case 36:b.preventDefault(),c=this._firstChild(this.get_container_ul()[0]),c&&a(c).children(".jstree-anchor").filter(":visible").focus();break;case 35:b.preventDefault(),this.element.find(".jstree-anchor").filter(":visible").last().focus()}},this)).on("load_node.jstree",a.proxy(function(b,c){c.status&&("#"!==c.node.id||this._data.core.loaded||(this._data.core.loaded=!0,this._firstChild(this.get_container_ul()[0])&&this.element.attr("aria-activedescendant",this._firstChild(this.get_container_ul()[0]).id),this.trigger("loaded")),this._data.core.ready||setTimeout(a.proxy(function(){if(!this.get_container_ul().find(".jstree-loading").length){if(this._data.core.ready=!0,this._data.core.selected.length){if(this.settings.core.expand_selected_onload){var b=[],c,d;for(c=0,d=this._data.core.selected.length;d>c;c++)b=b.concat(this._model.data[this._data.core.selected[c]].parents);for(b=a.vakata.array_unique(b),c=0,d=b.length;d>c;c++)this.open_node(b[c],!1,0)}this.trigger("changed",{action:"ready",selected:this._data.core.selected})}this.trigger("ready")}},this),0))},this)).on("keypress.jstree",a.proxy(function(d){if("INPUT"===d.target.tagName)return!0;c&&clearTimeout(c),c=setTimeout(function(){b=""},500);var e=String.fromCharCode(d.which).toLowerCase(),f=this.element.find(".jstree-anchor").filter(":visible"),g=f.index(document.activeElement)||0,h=!1;if(b+=e,b.length>1){if(f.slice(g).each(a.proxy(function(c,d){return 0===a(d).text().toLowerCase().indexOf(b)?(a(d).focus(),h=!0,!1):void 0},this)),h)return;if(f.slice(0,g).each(a.proxy(function(c,d){return 0===a(d).text().toLowerCase().indexOf(b)?(a(d).focus(),h=!0,!1):void 0},this)),h)return}if(new RegExp("^"+e+"+$").test(b)){if(f.slice(g+1).each(a.proxy(function(b,c){return a(c).text().toLowerCase().charAt(0)===e?(a(c).focus(),h=!0,!1):void 0},this)),h)return;if(f.slice(0,g+1).each(a.proxy(function(b,c){return a(c).text().toLowerCase().charAt(0)===e?(a(c).focus(),h=!0,!1):void 0},this)),h)return}},this)).on("init.jstree",a.proxy(function(){var a=this.settings.core.themes;this._data.core.themes.dots=a.dots,this._data.core.themes.stripes=a.stripes,this._data.core.themes.icons=a.icons,this.set_theme(a.name||"default",a.url),this.set_theme_variant(a.variant)},this)).on("loading.jstree",a.proxy(function(){this[this._data.core.themes.dots?"show_dots":"hide_dots"](),this[this._data.core.themes.icons?"show_icons":"hide_icons"](),this[this._data.core.themes.stripes?"show_stripes":"hide_stripes"]()},this)).on("blur.jstree",".jstree-anchor",a.proxy(function(b){this._data.core.focused=null,a(b.currentTarget).filter(".jstree-hovered").mouseleave(),this.element.attr("tabindex","0")},this)).on("focus.jstree",".jstree-anchor",a.proxy(function(b){var c=this.get_node(b.currentTarget);c&&c.id&&(this._data.core.focused=c.id),this.element.find(".jstree-hovered").not(b.currentTarget).mouseleave(),a(b.currentTarget).mouseenter(),this.element.attr("tabindex","-1")},this)).on("focus.jstree",a.proxy(function(){+new Date-d>500&&!this._data.core.focused&&(d=0,this.get_node(this.element.attr("aria-activedescendant"),!0).find("> .jstree-anchor").focus())},this)).on("mouseenter.jstree",".jstree-anchor",a.proxy(function(a){this.hover_node(a.currentTarget)},this)).on("mouseleave.jstree",".jstree-anchor",a.proxy(function(a){this.dehover_node(a.currentTarget)},this))},unbind:function(){this.element.off(".jstree"),a(document).off(".jstree-"+this._id)},trigger:function(a,b){b||(b={}),b.instance=this,this.element.triggerHandler(a.replace(".jstree","")+".jstree",b)},get_container:function(){return this.element},get_container_ul:function(){return this.element.children(".jstree-children").first()},get_string:function(b){var c=this.settings.core.strings;return a.isFunction(c)?c.call(this,b):c&&c[b]?c[b]:b},_firstChild:function(a){a=a?a.firstChild:null;while(null!==a&&1!==a.nodeType)a=a.nextSibling;return a},_nextSibling:function(a){a=a?a.nextSibling:null;while(null!==a&&1!==a.nodeType)a=a.nextSibling;return a},_previousSibling:function(a){a=a?a.previousSibling:null;while(null!==a&&1!==a.nodeType)a=a.previousSibling;return a},get_node:function(b,c){b&&b.id&&(b=b.id);var d;try{if(this._model.data[b])b=this._model.data[b];else if("string"==typeof b&&this._model.data[b.replace(/^#/,"")])b=this._model.data[b.replace(/^#/,"")];else if("string"==typeof b&&(d=a("#"+b.replace(a.jstree.idregex,"\\$&"),this.element)).length&&this._model.data[d.closest(".jstree-node").attr("id")])b=this._model.data[d.closest(".jstree-node").attr("id")];else if((d=a(b,this.element)).length&&this._model.data[d.closest(".jstree-node").attr("id")])b=this._model.data[d.closest(".jstree-node").attr("id")];else{if(!(d=a(b,this.element)).length||!d.hasClass("jstree"))return!1;b=this._model.data["#"]}return c&&(b="#"===b.id?this.element:a("#"+b.id.replace(a.jstree.idregex,"\\$&"),this.element)),b}catch(e){return!1}},get_path:function(a,b,c){if(a=a.parents?a:this.get_node(a),!a||"#"===a.id||!a.parents)return!1;var d,e,f=[];for(f.push(c?a.id:a.text),d=0,e=a.parents.length;e>d;d++)f.push(c?a.parents[d]:this.get_text(a.parents[d]));return f=f.reverse().slice(1),b?f.join(b):f},get_next_dom:function(b,c){var d;if(b=this.get_node(b,!0),b[0]===this.element[0]){d=this._firstChild(this.get_container_ul()[0]);while(d&&0===d.offsetHeight)d=this._nextSibling(d);return d?a(d):!1}if(!b||!b.length)return!1;if(c){d=b[0];do d=this._nextSibling(d);while(d&&0===d.offsetHeight);return d?a(d):!1}if(b.hasClass("jstree-open")){d=this._firstChild(b.children(".jstree-children")[0]);while(d&&0===d.offsetHeight)d=this._nextSibling(d);if(null!==d)return a(d)}d=b[0];do d=this._nextSibling(d);while(d&&0===d.offsetHeight);return null!==d?a(d):b.parentsUntil(".jstree",".jstree-node").next(".jstree-node:visible").first()},get_prev_dom:function(b,c){var d;if(b=this.get_node(b,!0),b[0]===this.element[0]){d=this.get_container_ul()[0].lastChild;while(d&&0===d.offsetHeight)d=this._previousSibling(d);return d?a(d):!1}if(!b||!b.length)return!1;if(c){d=b[0];do d=this._previousSibling(d);while(d&&0===d.offsetHeight);return d?a(d):!1}d=b[0];do d=this._previousSibling(d);while(d&&0===d.offsetHeight);if(null!==d){b=a(d);while(b.hasClass("jstree-open"))b=b.children(".jstree-children").first().children(".jstree-node:visible:last");return b}return d=b[0].parentNode.parentNode,d&&d.className&&-1!==d.className.indexOf("jstree-node")?a(d):!1},get_parent:function(a){return a=this.get_node(a),a&&"#"!==a.id?a.parent:!1},get_children_dom:function(a){return a=this.get_node(a,!0),a[0]===this.element[0]?this.get_container_ul().children(".jstree-node"):a&&a.length?a.children(".jstree-children").children(".jstree-node"):!1},is_parent:function(a){return a=this.get_node(a),a&&(a.state.loaded===!1||a.children.length>0)},is_loaded:function(a){return a=this.get_node(a),a&&a.state.loaded},is_loading:function(a){return a=this.get_node(a),a&&a.state&&a.state.loading},is_open:function(a){return a=this.get_node(a),a&&a.state.opened},is_closed:function(a){return a=this.get_node(a),a&&this.is_parent(a)&&!a.state.opened},is_leaf:function(a){return!this.is_parent(a)},load_node:function(b,c){var d,e,f,g,h;if(a.isArray(b))return this._load_nodes(b.slice(),c),!0;if(b=this.get_node(b),!b)return c&&c.call(this,b,!1),!1;if(b.state.loaded){for(b.state.loaded=!1,d=0,e=b.children_d.length;e>d;d++){for(f=0,g=b.parents.length;g>f;f++)this._model.data[b.parents[f]].children_d=a.vakata.array_remove_item(this._model.data[b.parents[f]].children_d,b.children_d[d]);this._model.data[b.children_d[d]].state.selected&&(h=!0,this._data.core.selected=a.vakata.array_remove_item(this._data.core.selected,b.children_d[d])),delete this._model.data[b.children_d[d]]}b.children=[],b.children_d=[],h&&this.trigger("changed",{action:"load_node",node:b,selected:this._data.core.selected})}return b.state.loading=!0,this.get_node(b,!0).addClass("jstree-loading").attr("aria-busy",!0),this._load_node(b,a.proxy(function(a){b=this._model.data[b.id],b.state.loading=!1,b.state.loaded=a;var d=this.get_node(b,!0);b.state.loaded&&!b.children.length&&d&&d.length&&!d.hasClass("jstree-leaf")&&d.removeClass("jstree-closed jstree-open").addClass("jstree-leaf"),d.removeClass("jstree-loading").attr("aria-busy",!1),this.trigger("load_node",{node:b,status:a}),c&&c.call(this,b,a)},this)),!0},_load_nodes:function(a,b,c){var d=!0,e=function(){this._load_nodes(a,b,!0)},f=this._model.data,g,h;for(g=0,h=a.length;h>g;g++)!f[a[g]]||f[a[g]].state.loaded&&c||(this.is_loading(a[g])||this.load_node(a[g],e),d=!1);d&&b&&!b.done&&(b.call(this,a),b.done=!0)},load_all:function(a,b){if(a||(a="#"),a=this.get_node(a),!a)return!1;var c=[],d=this._model.data,e=d[a.id].children_d,f,g;for(a.state&&!a.state.loaded&&c.push(a.id),f=0,g=e.length;g>f;f++)d[e[f]]&&d[e[f]].state&&!d[e[f]].state.loaded&&c.push(e[f]);c.length?this._load_nodes(c,function(){this.load_all(a,b)}):(b&&b.call(this,a),this.trigger("load_all",{node:a}))},_load_node:function(b,c){var d=this.settings.core.data,e;return d?a.isFunction(d)?d.call(this,b,a.proxy(function(d){d===!1&&c.call(this,!1),this["string"==typeof d?"_append_html_data":"_append_json_data"](b,"string"==typeof d?a(d):d,function(a){c.call(this,a)})},this)):"object"==typeof d?d.url?(d=a.extend(!0,{},d),a.isFunction(d.url)&&(d.url=d.url.call(this,b)),a.isFunction(d.data)&&(d.data=d.data.call(this,b)),a.ajax(d).done(a.proxy(function(d,e,f){var g=f.getResponseHeader("Content-Type");return-1!==g.indexOf("json")||"object"==typeof d?this._append_json_data(b,d,function(a){c.call(this,a)}):-1!==g.indexOf("html")||"string"==typeof d?this._append_html_data(b,a(d),function(a){c.call(this,a)}):(this._data.core.last_error={error:"ajax",plugin:"core",id:"core_04",reason:"Could not load node",data:JSON.stringify({id:b.id,xhr:f})},this.settings.core.error.call(this,this._data.core.last_error),c.call(this,!1))},this)).fail(a.proxy(function(a){c.call(this,!1),this._data.core.last_error={error:"ajax",plugin:"core",id:"core_04",reason:"Could not load node",data:JSON.stringify({id:b.id,xhr:a})},this.settings.core.error.call(this,this._data.core.last_error)},this))):(e=a.isArray(d)||a.isPlainObject(d)?JSON.parse(JSON.stringify(d)):d,"#"===b.id?this._append_json_data(b,e,function(a){c.call(this,a)}):(this._data.core.last_error={error:"nodata",plugin:"core",id:"core_05",reason:"Could not load node",data:JSON.stringify({id:b.id})},this.settings.core.error.call(this,this._data.core.last_error),c.call(this,!1))):"string"==typeof d?"#"===b.id?this._append_html_data(b,a(d),function(a){c.call(this,a)}):(this._data.core.last_error={error:"nodata",plugin:"core",id:"core_06",reason:"Could not load node",data:JSON.stringify({id:b.id})},this.settings.core.error.call(this,this._data.core.last_error),c.call(this,!1)):c.call(this,!1):"#"===b.id?this._append_html_data(b,this._data.core.original_container_html.clone(!0),function(a){c.call(this,a)}):c.call(this,!1)},_node_changed:function(a){a=this.get_node(a),a&&this._model.changed.push(a.id)},_append_html_data:function(b,c,d){b=this.get_node(b),b.children=[],b.children_d=[];var e=c.is("ul")?c.children():c,f=b.id,g=[],h=[],i=this._model.data,j=i[f],k=this._data.core.selected.length,l,m,n;for(e.each(a.proxy(function(b,c){l=this._parse_model_from_html(a(c),f,j.parents.concat()),l&&(g.push(l),h.push(l),i[l].children_d.length&&(h=h.concat(i[l].children_d)))},this)),j.children=g,j.children_d=h,m=0,n=j.parents.length;n>m;m++)i[j.parents[m]].children_d=i[j.parents[m]].children_d.concat(h);this.trigger("model",{nodes:h,parent:f}),"#"!==f?(this._node_changed(f),this.redraw()):(this.get_container_ul().children(".jstree-initial-node").remove(),this.redraw(!0)),this._data.core.selected.length!==k&&this.trigger("changed",{action:"model",selected:this._data.core.selected}),d.call(this,!0)},_append_json_data:function(b,c,d,e){b=this.get_node(b),b.children=[],b.children_d=[],c.d&&(c=c.d,"string"==typeof c&&(c=JSON.parse(c))),a.isArray(c)||(c=[c]);var f=null,g={df:this._model.default_state,dat:c,par:b.id,m:this._model.data,t_id:this._id,t_cnt:this._cnt,sel:this._data.core.selected},h=function(a,b){a.data&&(a=a.data);var c=a.dat,d=a.par,e=[],f=[],g=[],h=a.df,i=a.t_id,j=a.t_cnt,k=a.m,l=k[d],m=a.sel,n,o,p,q,r=function(a,c,d){d=d?d.concat():[],c&&d.unshift(c);var e=a.id.toString(),f,i,j,l,m={id:e,text:a.text||"",icon:a.icon!==b?a.icon:!0,parent:c,parents:d,children:a.children||[],children_d:a.children_d||[],data:a.data,state:{},li_attr:{id:!1},a_attr:{href:"#"},original:!1};for(f in h)h.hasOwnProperty(f)&&(m.state[f]=h[f]);if(a&&a.data&&a.data.jstree&&a.data.jstree.icon&&(m.icon=a.data.jstree.icon),a&&a.data&&(m.data=a.data,a.data.jstree))for(f in a.data.jstree)a.data.jstree.hasOwnProperty(f)&&(m.state[f]=a.data.jstree[f]);if(a&&"object"==typeof a.state)for(f in a.state)a.state.hasOwnProperty(f)&&(m.state[f]=a.state[f]);if(a&&"object"==typeof a.li_attr)for(f in a.li_attr)a.li_attr.hasOwnProperty(f)&&(m.li_attr[f]=a.li_attr[f]);if(m.li_attr.id||(m.li_attr.id=e),a&&"object"==typeof a.a_attr)for(f in a.a_attr)a.a_attr.hasOwnProperty(f)&&(m.a_attr[f]=a.a_attr[f]);for(a&&a.children&&a.children===!0&&(m.state.loaded=!1,m.children=[],m.children_d=[]),k[m.id]=m,f=0,i=m.children.length;i>f;f++)j=r(k[m.children[f]],m.id,d),l=k[j],m.children_d.push(j),l.children_d.length&&(m.children_d=m.children_d.concat(l.children_d));return delete a.data,delete a.children,k[m.id].original=a,m.state.selected&&g.push(m.id),m.id},s=function(a,c,d){d=d?d.concat():[],c&&d.unshift(c);var e=!1,f,l,m,n,o;do e="j"+i+"_"+ ++j;while(k[e]);o={id:!1,text:"string"==typeof a?a:"",icon:"object"==typeof a&&a.icon!==b?a.icon:!0,parent:c,parents:d,children:[],children_d:[],data:null,state:{},li_attr:{id:!1},a_attr:{href:"#"},original:!1};for(f in h)h.hasOwnProperty(f)&&(o.state[f]=h[f]);if(a&&a.id&&(o.id=a.id.toString()),a&&a.text&&(o.text=a.text),a&&a.data&&a.data.jstree&&a.data.jstree.icon&&(o.icon=a.data.jstree.icon),a&&a.data&&(o.data=a.data,a.data.jstree))for(f in a.data.jstree)a.data.jstree.hasOwnProperty(f)&&(o.state[f]=a.data.jstree[f]);if(a&&"object"==typeof a.state)for(f in a.state)a.state.hasOwnProperty(f)&&(o.state[f]=a.state[f]);if(a&&"object"==typeof a.li_attr)for(f in a.li_attr)a.li_attr.hasOwnProperty(f)&&(o.li_attr[f]=a.li_attr[f]);if(o.li_attr.id&&!o.id&&(o.id=o.li_attr.id.toString()),o.id||(o.id=e),o.li_attr.id||(o.li_attr.id=o.id),a&&"object"==typeof a.a_attr)for(f in a.a_attr)a.a_attr.hasOwnProperty(f)&&(o.a_attr[f]=a.a_attr[f]);if(a&&a.children&&a.children.length){for(f=0,l=a.children.length;l>f;f++)m=s(a.children[f],o.id,d),n=k[m],o.children.push(m),n.children_d.length&&(o.children_d=o.children_d.concat(n.children_d));o.children_d=o.children_d.concat(o.children)}return a&&a.children&&a.children===!0&&(o.state.loaded=!1,o.children=[],o.children_d=[]),delete a.data,delete a.children,o.original=a,k[o.id]=o,o.state.selected&&g.push(o.id),o.id};if(c.length&&c[0].id!==b&&c[0].parent!==b){for(o=0,p=c.length;p>o;o++)c[o].children||(c[o].children=[]),k[c[o].id.toString()]=c[o];for(o=0,p=c.length;p>o;o++)k[c[o].parent.toString()].children.push(c[o].id.toString()),l.children_d.push(c[o].id.toString());for(o=0,p=l.children.length;p>o;o++)n=r(k[l.children[o]],d,l.parents.concat()),f.push(n),k[n].children_d.length&&(f=f.concat(k[n].children_d));for(o=0,p=l.parents.length;p>o;o++)k[l.parents[o]].children_d=k[l.parents[o]].children_d.concat(f);q={cnt:j,mod:k,sel:m,par:d,dpc:f,add:g}}else{for(o=0,p=c.length;p>o;o++)n=s(c[o],d,l.parents.concat()),n&&(e.push(n),f.push(n),k[n].children_d.length&&(f=f.concat(k[n].children_d)));for(l.children=e,l.children_d=f,o=0,p=l.parents.length;p>o;o++)k[l.parents[o]].children_d=k[l.parents[o]].children_d.concat(f);q={cnt:j,mod:k,sel:m,par:d,dpc:f,add:g}}return"undefined"!=typeof window&&"undefined"!=typeof window.document?q:void postMessage(q)},i=function(b,c){if(this._cnt=b.cnt,this._model.data=b.mod,c){var e,f,g=b.add,h=b.sel,i=this._data.core.selected.slice(),j=this._model.data;if(h.length!==i.length||a.vakata.array_unique(h.concat(i)).length!==h.length){for(e=0,f=h.length;f>e;e++)-1===a.inArray(h[e],g)&&-1===a.inArray(h[e],i)&&(j[h[e]].state.selected=!1);for(e=0,f=i.length;f>e;e++)-1===a.inArray(i[e],h)&&(j[i[e]].state.selected=!0)}}b.add.length&&(this._data.core.selected=this._data.core.selected.concat(b.add)),this.trigger("model",{nodes:b.dpc,parent:b.par}),"#"!==b.par?(this._node_changed(b.par),this.redraw()):this.redraw(!0),b.add.length&&this.trigger("changed",{action:"model",selected:this._data.core.selected}),d.call(this,!0)};if(this.settings.core.worker&&window.Blob&&window.URL&&window.Worker)try{null===this._wrk&&(this._wrk=window.URL.createObjectURL(new window.Blob(["self.onmessage = "+h.toString()],{type:"text/javascript"}))),!this._data.core.working||e?(this._data.core.working=!0,f=new window.Worker(this._wrk),f.onmessage=a.proxy(function(a){i.call(this,a.data,!0);try{f.terminate(),f=null}catch(b){}this._data.core.worker_queue.length?this._append_json_data.apply(this,this._data.core.worker_queue.shift()):this._data.core.working=!1},this),g.par?f.postMessage(g):this._data.core.worker_queue.length?this._append_json_data.apply(this,this._data.core.worker_queue.shift()):this._data.core.working=!1):this._data.core.worker_queue.push([b,c,d,!0])}catch(j){i.call(this,h(g),!1),this._data.core.worker_queue.length?this._append_json_data.apply(this,this._data.core.worker_queue.shift()):this._data.core.working=!1}else i.call(this,h(g),!1)},_parse_model_from_html:function(b,c,d){d=d?[].concat(d):[],c&&d.unshift(c);var e,f,g=this._model.data,h={id:!1,text:!1,icon:!0,parent:c,parents:d,children:[],children_d:[],data:null,state:{},li_attr:{id:!1},a_attr:{href:"#"},original:!1},i,j,k;for(i in this._model.default_state)this._model.default_state.hasOwnProperty(i)&&(h.state[i]=this._model.default_state[i]);if(j=a.vakata.attributes(b,!0),a.each(j,function(b,c){return c=a.trim(c),c.length?(h.li_attr[b]=c,void("id"===b&&(h.id=c.toString()))):!0}),j=b.children("a").first(),j.length&&(j=a.vakata.attributes(j,!0),a.each(j,function(b,c){c=a.trim(c),c.length&&(h.a_attr[b]=c)})),j=b.children("a").first().length?b.children("a").first().clone():b.clone(),j.children("ins, i, ul").remove(),j=j.html(),j=a("<div />").html(j),h.text=this.settings.core.force_text?j.text():j.html(),j=b.data(),h.data=j?a.extend(!0,{},j):null,h.state.opened=b.hasClass("jstree-open"),h.state.selected=b.children("a").hasClass("jstree-clicked"),h.state.disabled=b.children("a").hasClass("jstree-disabled"),h.data&&h.data.jstree)for(i in h.data.jstree)h.data.jstree.hasOwnProperty(i)&&(h.state[i]=h.data.jstree[i]);j=b.children("a").children(".jstree-themeicon"),j.length&&(h.icon=j.hasClass("jstree-themeicon-hidden")?!1:j.attr("rel")),h.state.icon&&(h.icon=h.state.icon),j=b.children("ul").children("li");do k="j"+this._id+"_"+ ++this._cnt;while(g[k]);return h.id=h.li_attr.id?h.li_attr.id.toString():k,j.length?(j.each(a.proxy(function(b,c){e=this._parse_model_from_html(a(c),h.id,d),f=this._model.data[e],h.children.push(e),f.children_d.length&&(h.children_d=h.children_d.concat(f.children_d))},this)),h.children_d=h.children_d.concat(h.children)):b.hasClass("jstree-closed")&&(h.state.loaded=!1),h.li_attr["class"]&&(h.li_attr["class"]=h.li_attr["class"].replace("jstree-closed","").replace("jstree-open","")),h.a_attr["class"]&&(h.a_attr["class"]=h.a_attr["class"].replace("jstree-clicked","").replace("jstree-disabled","")),g[h.id]=h,h.state.selected&&this._data.core.selected.push(h.id),h.id},_parse_model_from_flat_json:function(a,c,d){d=d?d.concat():[],c&&d.unshift(c);var e=a.id.toString(),f=this._model.data,g=this._model.default_state,h,i,j,k,l={id:e,text:a.text||"",icon:a.icon!==b?a.icon:!0,parent:c,parents:d,children:a.children||[],children_d:a.children_d||[],data:a.data,state:{},li_attr:{id:!1},a_attr:{href:"#"},original:!1};for(h in g)g.hasOwnProperty(h)&&(l.state[h]=g[h]);if(a&&a.data&&a.data.jstree&&a.data.jstree.icon&&(l.icon=a.data.jstree.icon),a&&a.data&&(l.data=a.data,a.data.jstree))for(h in a.data.jstree)a.data.jstree.hasOwnProperty(h)&&(l.state[h]=a.data.jstree[h]);if(a&&"object"==typeof a.state)for(h in a.state)a.state.hasOwnProperty(h)&&(l.state[h]=a.state[h]);if(a&&"object"==typeof a.li_attr)for(h in a.li_attr)a.li_attr.hasOwnProperty(h)&&(l.li_attr[h]=a.li_attr[h]);if(l.li_attr.id||(l.li_attr.id=e),a&&"object"==typeof a.a_attr)for(h in a.a_attr)a.a_attr.hasOwnProperty(h)&&(l.a_attr[h]=a.a_attr[h]);for(a&&a.children&&a.children===!0&&(l.state.loaded=!1,l.children=[],l.children_d=[]),f[l.id]=l,h=0,i=l.children.length;i>h;h++)j=this._parse_model_from_flat_json(f[l.children[h]],l.id,d),k=f[j],l.children_d.push(j),k.children_d.length&&(l.children_d=l.children_d.concat(k.children_d));return delete a.data,delete a.children,f[l.id].original=a,l.state.selected&&this._data.core.selected.push(l.id),l.id},_parse_model_from_json:function(a,c,d){d=d?d.concat():[],c&&d.unshift(c);var e=!1,f,g,h,i,j=this._model.data,k=this._model.default_state,l;do e="j"+this._id+"_"+ ++this._cnt;while(j[e]);l={id:!1,text:"string"==typeof a?a:"",icon:"object"==typeof a&&a.icon!==b?a.icon:!0,parent:c,parents:d,children:[],children_d:[],data:null,state:{},li_attr:{id:!1},a_attr:{href:"#"},original:!1};for(f in k)k.hasOwnProperty(f)&&(l.state[f]=k[f]);if(a&&a.id&&(l.id=a.id.toString()),a&&a.text&&(l.text=a.text),a&&a.data&&a.data.jstree&&a.data.jstree.icon&&(l.icon=a.data.jstree.icon),a&&a.data&&(l.data=a.data,a.data.jstree))for(f in a.data.jstree)a.data.jstree.hasOwnProperty(f)&&(l.state[f]=a.data.jstree[f]);if(a&&"object"==typeof a.state)for(f in a.state)a.state.hasOwnProperty(f)&&(l.state[f]=a.state[f]);if(a&&"object"==typeof a.li_attr)for(f in a.li_attr)a.li_attr.hasOwnProperty(f)&&(l.li_attr[f]=a.li_attr[f]);if(l.li_attr.id&&!l.id&&(l.id=l.li_attr.id.toString()),l.id||(l.id=e),l.li_attr.id||(l.li_attr.id=l.id),a&&"object"==typeof a.a_attr)for(f in a.a_attr)a.a_attr.hasOwnProperty(f)&&(l.a_attr[f]=a.a_attr[f]);if(a&&a.children&&a.children.length){for(f=0,g=a.children.length;g>f;f++)h=this._parse_model_from_json(a.children[f],l.id,d),i=j[h],l.children.push(h),i.children_d.length&&(l.children_d=l.children_d.concat(i.children_d));l.children_d=l.children_d.concat(l.children)}return a&&a.children&&a.children===!0&&(l.state.loaded=!1,l.children=[],l.children_d=[]),delete a.data,delete a.children,l.original=a,j[l.id]=l,l.state.selected&&this._data.core.selected.push(l.id),l.id},_redraw:function(){var a=this._model.force_full_redraw?this._model.data["#"].children.concat([]):this._model.changed.concat([]),b=document.createElement("UL"),c,d,e,f=this._data.core.focused;for(d=0,e=a.length;e>d;d++)c=this.redraw_node(a[d],!0,this._model.force_full_redraw),c&&this._model.force_full_redraw&&b.appendChild(c);this._model.force_full_redraw&&(b.className=this.get_container_ul()[0].className,b.setAttribute("role","group"),this.element.empty().append(b)),null!==f&&(c=this.get_node(f,!0),c&&c.length&&c.children(".jstree-anchor")[0]!==document.activeElement?c.children(".jstree-anchor").focus():this._data.core.focused=null),this._model.force_full_redraw=!1,this._model.changed=[],this.trigger("redraw",{nodes:a})},redraw:function(a){a&&(this._model.force_full_redraw=!0),this._redraw()},draw_children:function(a){var b=this.get_node(a),c=!1,d=!1,e=!1,f=document;if(!b)return!1;if("#"===b.id)return this.redraw(!0);if(a=this.get_node(a,!0),!a||!a.length)return!1;if(a.children(".jstree-children").remove(),a=a[0],b.children.length&&b.state.loaded){for(e=f.createElement("UL"),e.setAttribute("role","group"),e.className="jstree-children",c=0,d=b.children.length;d>c;c++)e.appendChild(this.redraw_node(b.children[c],!0,!0));a.appendChild(e)}},redraw_node:function(b,c,d,e){var f=this.get_node(b),g=!1,h=!1,i=!1,k=!1,l=!1,m=!1,n="",o=document,p=this._model.data,q=!1,r=!1,s=null,t=0,u=0;if(!f)return!1;if("#"===f.id)return this.redraw(!0);if(c=c||0===f.children.length,b=document.querySelector?this.element[0].querySelector("#"+(-1!=="0123456789".indexOf(f.id[0])?"\\3"+f.id[0]+" "+f.id.substr(1).replace(a.jstree.idregex,"\\$&"):f.id.replace(a.jstree.idregex,"\\$&"))):document.getElementById(f.id))b=a(b),d||(g=b.parent().parent()[0],g===this.element[0]&&(g=null),h=b.index()),c||!f.children.length||b.children(".jstree-children").length||(c=!0),c||(i=b.children(".jstree-children")[0]),q=b.children(".jstree-anchor")[0]===document.activeElement,b.remove();else if(c=!0,!d){if(g="#"!==f.parent?a("#"+f.parent.replace(a.jstree.idregex,"\\$&"),this.element)[0]:null,!(null===g||g&&p[f.parent].state.opened))return!1;h=a.inArray(f.id,null===g?p["#"].children:p[f.parent].children)}b=j.cloneNode(!0),n="jstree-node ";for(k in f.li_attr)if(f.li_attr.hasOwnProperty(k)){if("id"===k)continue;"class"!==k?b.setAttribute(k,f.li_attr[k]):n+=f.li_attr[k]}f.a_attr.id||(f.a_attr.id=f.id+"_anchor"),b.setAttribute("aria-selected",!!f.state.selected),b.setAttribute("aria-level",f.parents.length),b.setAttribute("aria-labelledby",f.a_attr.id),f.state.disabled&&b.setAttribute("aria-disabled",!0),f.state.loaded&&!f.children.length?n+=" jstree-leaf":(n+=f.state.opened&&f.state.loaded?" jstree-open":" jstree-closed",b.setAttribute("aria-expanded",f.state.opened&&f.state.loaded)),null!==f.parent&&p[f.parent].children[p[f.parent].children.length-1]===f.id&&(n+=" jstree-last"),b.id=f.id,b.className=n,n=(f.state.selected?" jstree-clicked":"")+(f.state.disabled?" jstree-disabled":"");for(l in f.a_attr)if(f.a_attr.hasOwnProperty(l)){if("href"===l&&"#"===f.a_attr[l])continue;"class"!==l?b.childNodes[1].setAttribute(l,f.a_attr[l]):n+=" "+f.a_attr[l]}if(n.length&&(b.childNodes[1].className="jstree-anchor "+n),(f.icon&&f.icon!==!0||f.icon===!1)&&(f.icon===!1?b.childNodes[1].childNodes[0].className+=" jstree-themeicon-hidden":-1===f.icon.indexOf("/")&&-1===f.icon.indexOf(".")?b.childNodes[1].childNodes[0].className+=" "+f.icon+" jstree-themeicon-custom":(b.childNodes[1].childNodes[0].style.backgroundImage="url("+f.icon+")",b.childNodes[1].childNodes[0].style.backgroundPosition="center center",b.childNodes[1].childNodes[0].style.backgroundSize="auto",b.childNodes[1].childNodes[0].className+=" jstree-themeicon-custom")),this.settings.core.force_text?b.childNodes[1].appendChild(o.createTextNode(f.text)):b.childNodes[1].innerHTML+=f.text,c&&f.children.length&&(f.state.opened||e)&&f.state.loaded){for(m=o.createElement("UL"),m.setAttribute("role","group"),m.className="jstree-children",k=0,l=f.children.length;l>k;k++)m.appendChild(this.redraw_node(f.children[k],c,!0)); -b.appendChild(m)}if(i&&b.appendChild(i),!d){for(g||(g=this.element[0]),k=0,l=g.childNodes.length;l>k;k++)if(g.childNodes[k]&&g.childNodes[k].className&&-1!==g.childNodes[k].className.indexOf("jstree-children")){s=g.childNodes[k];break}s||(s=o.createElement("UL"),s.setAttribute("role","group"),s.className="jstree-children",g.appendChild(s)),g=s,h<g.childNodes.length?g.insertBefore(b,g.childNodes[h]):g.appendChild(b),q&&(t=this.element[0].scrollTop,u=this.element[0].scrollLeft,b.childNodes[1].focus(),this.element[0].scrollTop=t,this.element[0].scrollLeft=u)}return f.state.opened&&!f.state.loaded&&(f.state.opened=!1,setTimeout(a.proxy(function(){this.open_node(f.id,!1,0)},this),0)),b},open_node:function(c,d,e){var f,g,h,i;if(a.isArray(c)){for(c=c.slice(),f=0,g=c.length;g>f;f++)this.open_node(c[f],d,e);return!0}if(c=this.get_node(c),!c||"#"===c.id)return!1;if(e=e===b?this.settings.core.animation:e,!this.is_closed(c))return d&&d.call(this,c,!1),!1;if(this.is_loaded(c))h=this.get_node(c,!0),i=this,h.length&&(e&&h.children(".jstree-children").length&&h.children(".jstree-children").stop(!0,!0),c.children.length&&!this._firstChild(h.children(".jstree-children")[0])&&this.draw_children(c),e?(this.trigger("before_open",{node:c}),h.children(".jstree-children").css("display","none").end().removeClass("jstree-closed").addClass("jstree-open").attr("aria-expanded",!0).children(".jstree-children").stop(!0,!0).slideDown(e,function(){this.style.display="",i.trigger("after_open",{node:c})})):(this.trigger("before_open",{node:c}),h[0].className=h[0].className.replace("jstree-closed","jstree-open"),h[0].setAttribute("aria-expanded",!0))),c.state.opened=!0,d&&d.call(this,c,!0),h.length||this.trigger("before_open",{node:c}),this.trigger("open_node",{node:c}),e&&h.length||this.trigger("after_open",{node:c});else{if(this.is_loading(c))return setTimeout(a.proxy(function(){this.open_node(c,d,e)},this),500);this.load_node(c,function(a,b){return b?this.open_node(a,d,e):d?d.call(this,a,!1):!1})}},_open_to:function(b){if(b=this.get_node(b),!b||"#"===b.id)return!1;var c,d,e=b.parents;for(c=0,d=e.length;d>c;c+=1)"#"!==c&&this.open_node(e[c],!1,0);return a("#"+b.id.replace(a.jstree.idregex,"\\$&"),this.element)},close_node:function(c,d){var e,f,g,h;if(a.isArray(c)){for(c=c.slice(),e=0,f=c.length;f>e;e++)this.close_node(c[e],d);return!0}return c=this.get_node(c),c&&"#"!==c.id?this.is_closed(c)?!1:(d=d===b?this.settings.core.animation:d,g=this,h=this.get_node(c,!0),h.length&&(d?h.children(".jstree-children").attr("style","display:block !important").end().removeClass("jstree-open").addClass("jstree-closed").attr("aria-expanded",!1).children(".jstree-children").stop(!0,!0).slideUp(d,function(){this.style.display="",h.children(".jstree-children").remove(),g.trigger("after_close",{node:c})}):(h[0].className=h[0].className.replace("jstree-open","jstree-closed"),h.attr("aria-expanded",!1).children(".jstree-children").remove())),c.state.opened=!1,this.trigger("close_node",{node:c}),void(d&&h.length||this.trigger("after_close",{node:c}))):!1},toggle_node:function(b){var c,d;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.toggle_node(b[c]);return!0}return this.is_closed(b)?this.open_node(b):this.is_open(b)?this.close_node(b):void 0},open_all:function(a,b,c){if(a||(a="#"),a=this.get_node(a),!a)return!1;var d="#"===a.id?this.get_container_ul():this.get_node(a,!0),e,f,g;if(!d.length){for(e=0,f=a.children_d.length;f>e;e++)this.is_closed(this._model.data[a.children_d[e]])&&(this._model.data[a.children_d[e]].state.opened=!0);return this.trigger("open_all",{node:a})}c=c||d,g=this,d=this.is_closed(a)?d.find(".jstree-closed").addBack():d.find(".jstree-closed"),d.each(function(){g.open_node(this,function(a,d){d&&this.is_parent(a)&&this.open_all(a,b,c)},b||0)}),0===c.find(".jstree-closed").length&&this.trigger("open_all",{node:this.get_node(c)})},close_all:function(b,c){if(b||(b="#"),b=this.get_node(b),!b)return!1;var d="#"===b.id?this.get_container_ul():this.get_node(b,!0),e=this,f,g;if(!d.length){for(f=0,g=b.children_d.length;g>f;f++)this._model.data[b.children_d[f]].state.opened=!1;return this.trigger("close_all",{node:b})}d=this.is_open(b)?d.find(".jstree-open").addBack():d.find(".jstree-open"),a(d.get().reverse()).each(function(){e.close_node(this,c||0)}),this.trigger("close_all",{node:b})},is_disabled:function(a){return a=this.get_node(a),a&&a.state&&a.state.disabled},enable_node:function(b){var c,d;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.enable_node(b[c]);return!0}return b=this.get_node(b),b&&"#"!==b.id?(b.state.disabled=!1,this.get_node(b,!0).children(".jstree-anchor").removeClass("jstree-disabled").attr("aria-disabled",!1),void this.trigger("enable_node",{node:b})):!1},disable_node:function(b){var c,d;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.disable_node(b[c]);return!0}return b=this.get_node(b),b&&"#"!==b.id?(b.state.disabled=!0,this.get_node(b,!0).children(".jstree-anchor").addClass("jstree-disabled").attr("aria-disabled",!0),void this.trigger("disable_node",{node:b})):!1},activate_node:function(a,c){if(this.is_disabled(a))return!1;if(this._data.core.last_clicked=this._data.core.last_clicked&&this._data.core.last_clicked.id!==b?this.get_node(this._data.core.last_clicked.id):null,this._data.core.last_clicked&&!this._data.core.last_clicked.state.selected&&(this._data.core.last_clicked=null),!this._data.core.last_clicked&&this._data.core.selected.length&&(this._data.core.last_clicked=this.get_node(this._data.core.selected[this._data.core.selected.length-1])),this.settings.core.multiple&&(c.metaKey||c.ctrlKey||c.shiftKey)&&(!c.shiftKey||this._data.core.last_clicked&&this.get_parent(a)&&this.get_parent(a)===this._data.core.last_clicked.parent))if(c.shiftKey){var d=this.get_node(a).id,e=this._data.core.last_clicked.id,f=this.get_node(this._data.core.last_clicked.parent).children,g=!1,h,i;for(h=0,i=f.length;i>h;h+=1)f[h]===d&&(g=!g),f[h]===e&&(g=!g),g||f[h]===d||f[h]===e?this.select_node(f[h],!0,!1,c):this.deselect_node(f[h],!0,c);this.trigger("changed",{action:"select_node",node:this.get_node(a),selected:this._data.core.selected,event:c})}else this.is_selected(a)?this.deselect_node(a,!1,c):this.select_node(a,!1,!1,c);else!this.settings.core.multiple&&(c.metaKey||c.ctrlKey||c.shiftKey)&&this.is_selected(a)?this.deselect_node(a,!1,c):(this.deselect_all(!0),this.select_node(a,!1,!1,c),this._data.core.last_clicked=this.get_node(a));this.trigger("activate_node",{node:this.get_node(a)})},hover_node:function(a){if(a=this.get_node(a,!0),!a||!a.length||a.children(".jstree-hovered").length)return!1;var b=this.element.find(".jstree-hovered"),c=this.element;b&&b.length&&this.dehover_node(b),a.children(".jstree-anchor").addClass("jstree-hovered"),this.trigger("hover_node",{node:this.get_node(a)}),setTimeout(function(){c.attr("aria-activedescendant",a[0].id)},0)},dehover_node:function(a){return a=this.get_node(a,!0),a&&a.length&&a.children(".jstree-hovered").length?(a.children(".jstree-anchor").removeClass("jstree-hovered"),void this.trigger("dehover_node",{node:this.get_node(a)})):!1},select_node:function(b,c,d,e){var f,g,h,i;if(a.isArray(b)){for(b=b.slice(),g=0,h=b.length;h>g;g++)this.select_node(b[g],c,d,e);return!0}return b=this.get_node(b),b&&"#"!==b.id?(f=this.get_node(b,!0),void(b.state.selected||(b.state.selected=!0,this._data.core.selected.push(b.id),d||(f=this._open_to(b)),f&&f.length&&f.attr("aria-selected",!0).children(".jstree-anchor").addClass("jstree-clicked"),this.trigger("select_node",{node:b,selected:this._data.core.selected,event:e}),c||this.trigger("changed",{action:"select_node",node:b,selected:this._data.core.selected,event:e})))):!1},deselect_node:function(b,c,d){var e,f,g;if(a.isArray(b)){for(b=b.slice(),e=0,f=b.length;f>e;e++)this.deselect_node(b[e],c,d);return!0}return b=this.get_node(b),b&&"#"!==b.id?(g=this.get_node(b,!0),void(b.state.selected&&(b.state.selected=!1,this._data.core.selected=a.vakata.array_remove_item(this._data.core.selected,b.id),g.length&&g.attr("aria-selected",!1).children(".jstree-anchor").removeClass("jstree-clicked"),this.trigger("deselect_node",{node:b,selected:this._data.core.selected,event:d}),c||this.trigger("changed",{action:"deselect_node",node:b,selected:this._data.core.selected,event:d})))):!1},select_all:function(a){var b=this._data.core.selected.concat([]),c,d;for(this._data.core.selected=this._model.data["#"].children_d.concat(),c=0,d=this._data.core.selected.length;d>c;c++)this._model.data[this._data.core.selected[c]]&&(this._model.data[this._data.core.selected[c]].state.selected=!0);this.redraw(!0),this.trigger("select_all",{selected:this._data.core.selected}),a||this.trigger("changed",{action:"select_all",selected:this._data.core.selected,old_selection:b})},deselect_all:function(a){var b=this._data.core.selected.concat([]),c,d;for(c=0,d=this._data.core.selected.length;d>c;c++)this._model.data[this._data.core.selected[c]]&&(this._model.data[this._data.core.selected[c]].state.selected=!1);this._data.core.selected=[],this.element.find(".jstree-clicked").removeClass("jstree-clicked").parent().attr("aria-selected",!1),this.trigger("deselect_all",{selected:this._data.core.selected,node:b}),a||this.trigger("changed",{action:"deselect_all",selected:this._data.core.selected,old_selection:b})},is_selected:function(a){return a=this.get_node(a),a&&"#"!==a.id?a.state.selected:!1},get_selected:function(b){return b?a.map(this._data.core.selected,a.proxy(function(a){return this.get_node(a)},this)):this._data.core.selected.slice()},get_top_selected:function(b){var c=this.get_selected(!0),d={},e,f,g,h;for(e=0,f=c.length;f>e;e++)d[c[e].id]=c[e];for(e=0,f=c.length;f>e;e++)for(g=0,h=c[e].children_d.length;h>g;g++)d[c[e].children_d[g]]&&delete d[c[e].children_d[g]];c=[];for(e in d)d.hasOwnProperty(e)&&c.push(e);return b?a.map(c,a.proxy(function(a){return this.get_node(a)},this)):c},get_bottom_selected:function(b){var c=this.get_selected(!0),d=[],e,f;for(e=0,f=c.length;f>e;e++)c[e].children.length||d.push(c[e].id);return b?a.map(d,a.proxy(function(a){return this.get_node(a)},this)):d},get_state:function(){var a={core:{open:[],scroll:{left:this.element.scrollLeft(),top:this.element.scrollTop()},selected:[]}},b;for(b in this._model.data)this._model.data.hasOwnProperty(b)&&"#"!==b&&(this._model.data[b].state.opened&&a.core.open.push(b),this._model.data[b].state.selected&&a.core.selected.push(b));return a},set_state:function(c,d){if(c){if(c.core){var e,f,g,h;if(c.core.open)return a.isArray(c.core.open)?(e=!0,f=!1,g=this,a.each(c.core.open.concat([]),function(b,h){f=g.get_node(h),f&&(g.is_loaded(h)?(g.is_closed(h)&&g.open_node(h,!1,0),c&&c.core&&c.core.open&&a.vakata.array_remove_item(c.core.open,h)):(g.is_loading(h)||g.open_node(h,a.proxy(function(b,e){!e&&c&&c.core&&c.core.open&&a.vakata.array_remove_item(c.core.open,b.id),this.set_state(c,d)},g),0),e=!1))}),e&&(delete c.core.open,this.set_state(c,d)),!1):(delete c.core.open,this.set_state(c,d),!1);if(c.core.scroll)return c.core.scroll&&c.core.scroll.left!==b&&this.element.scrollLeft(c.core.scroll.left),c.core.scroll&&c.core.scroll.top!==b&&this.element.scrollTop(c.core.scroll.top),delete c.core.scroll,this.set_state(c,d),!1;if(c.core.selected)return h=this,this.deselect_all(),a.each(c.core.selected,function(a,b){h.select_node(b)}),delete c.core.selected,this.set_state(c,d),!1;if(a.isEmptyObject(c.core))return delete c.core,this.set_state(c,d),!1}return a.isEmptyObject(c)?(c=null,d&&d.call(this),this.trigger("set_state"),!1):!0}return!1},refresh:function(b,c){this._data.core.state=c===!0?{}:this.get_state(),c&&a.isFunction(c)&&(this._data.core.state=c.call(this,this._data.core.state)),this._cnt=0,this._model.data={"#":{id:"#",parent:null,parents:[],children:[],children_d:[],state:{loaded:!1}}};var d=this.get_container_ul()[0].className;b||(this.element.html("<ul class='"+d+"' role='group'><li class='jstree-initial-node jstree-loading jstree-leaf jstree-last' role='treeitem' id='j"+this._id+"_loading'><i class='jstree-icon jstree-ocl'></i><a class='jstree-anchor' href='#'><i class='jstree-icon jstree-themeicon-hidden'></i>"+this.get_string("Loading ...")+"</a></li></ul>"),this.element.attr("aria-activedescendant","j"+this._id+"_loading")),this.load_node("#",function(b,c){c&&(this.get_container_ul()[0].className=d,this._firstChild(this.get_container_ul()[0])&&this.element.attr("aria-activedescendant",this._firstChild(this.get_container_ul()[0]).id),this.set_state(a.extend(!0,{},this._data.core.state),function(){this.trigger("refresh")})),this._data.core.state=null})},refresh_node:function(b){if(b=this.get_node(b),!b||"#"===b.id)return!1;var c=[],d=[],e=this._data.core.selected.concat([]);d.push(b.id),b.state.opened===!0&&c.push(b.id),this.get_node(b,!0).find(".jstree-open").each(function(){c.push(this.id)}),this._load_nodes(d,a.proxy(function(a){this.open_node(c,!1,0),this.select_node(this._data.core.selected),this.trigger("refresh_node",{node:b,nodes:a})},this))},set_id:function(b,c){if(b=this.get_node(b),!b||"#"===b.id)return!1;var d,e,f=this._model.data;for(c=c.toString(),f[b.parent].children[a.inArray(b.id,f[b.parent].children)]=c,d=0,e=b.parents.length;e>d;d++)f[b.parents[d]].children_d[a.inArray(b.id,f[b.parents[d]].children_d)]=c;for(d=0,e=b.children.length;e>d;d++)f[b.children[d]].parent=c;for(d=0,e=b.children_d.length;e>d;d++)f[b.children_d[d]].parents[a.inArray(b.id,f[b.children_d[d]].parents)]=c;return d=a.inArray(b.id,this._data.core.selected),-1!==d&&(this._data.core.selected[d]=c),d=this.get_node(b.id,!0),d&&d.attr("id",c),delete f[b.id],b.id=c,f[c]=b,!0},get_text:function(a){return a=this.get_node(a),a&&"#"!==a.id?a.text:!1},set_text:function(b,c){var d,e;if(a.isArray(b)){for(b=b.slice(),d=0,e=b.length;e>d;d++)this.set_text(b[d],c);return!0}return b=this.get_node(b),b&&"#"!==b.id?(b.text=c,this.get_node(b,!0).length&&this.redraw_node(b.id),this.trigger("set_text",{obj:b,text:c}),!0):!1},get_json:function(b,c,d){if(b=this.get_node(b||"#"),!b)return!1;c&&c.flat&&!d&&(d=[]);var e={id:b.id,text:b.text,icon:this.get_icon(b),li_attr:a.extend(!0,{},b.li_attr),a_attr:a.extend(!0,{},b.a_attr),state:{},data:c&&c.no_data?!1:a.extend(!0,{},b.data)},f,g;if(c&&c.flat?e.parent=b.parent:e.children=[],!c||!c.no_state)for(f in b.state)b.state.hasOwnProperty(f)&&(e.state[f]=b.state[f]);if(c&&c.no_id&&(delete e.id,e.li_attr&&e.li_attr.id&&delete e.li_attr.id,e.a_attr&&e.a_attr.id&&delete e.a_attr.id),c&&c.flat&&"#"!==b.id&&d.push(e),!c||!c.no_children)for(f=0,g=b.children.length;g>f;f++)c&&c.flat?this.get_json(b.children[f],c,d):e.children.push(this.get_json(b.children[f],c));return c&&c.flat?d:"#"===b.id?e.children:e},create_node:function(c,d,e,f,g){if(null===c&&(c="#"),c=this.get_node(c),!c)return!1;if(e=e===b?"last":e,!e.toString().match(/^(before|after)$/)&&!g&&!this.is_loaded(c))return this.load_node(c,function(){this.create_node(c,d,e,f,!0)});d||(d={text:this.get_string("New node")}),"string"==typeof d&&(d={text:d}),d.text===b&&(d.text=this.get_string("New node"));var h,i,j,k;switch("#"===c.id&&("before"===e&&(e="first"),"after"===e&&(e="last")),e){case"before":h=this.get_node(c.parent),e=a.inArray(c.id,h.children),c=h;break;case"after":h=this.get_node(c.parent),e=a.inArray(c.id,h.children)+1,c=h;break;case"inside":case"first":e=0;break;case"last":e=c.children.length;break;default:e||(e=0)}if(e>c.children.length&&(e=c.children.length),d.id||(d.id=!0),!this.check("create_node",d,c,e))return this.settings.core.error.call(this,this._data.core.last_error),!1;if(d.id===!0&&delete d.id,d=this._parse_model_from_json(d,c.id,c.parents.concat()),!d)return!1;for(h=this.get_node(d),i=[],i.push(d),i=i.concat(h.children_d),this.trigger("model",{nodes:i,parent:c.id}),c.children_d=c.children_d.concat(i),j=0,k=c.parents.length;k>j;j++)this._model.data[c.parents[j]].children_d=this._model.data[c.parents[j]].children_d.concat(i);for(d=h,h=[],j=0,k=c.children.length;k>j;j++)h[j>=e?j+1:j]=c.children[j];return h[e]=d.id,c.children=h,this.redraw_node(c,!0),f&&f.call(this,this.get_node(d)),this.trigger("create_node",{node:this.get_node(d),parent:c.id,position:e}),d.id},rename_node:function(b,c){var d,e,f;if(a.isArray(b)){for(b=b.slice(),d=0,e=b.length;e>d;d++)this.rename_node(b[d],c);return!0}return b=this.get_node(b),b&&"#"!==b.id?(f=b.text,this.check("rename_node",b,this.get_parent(b),c)?(this.set_text(b,c),this.trigger("rename_node",{node:b,text:c,old:f}),!0):(this.settings.core.error.call(this,this._data.core.last_error),!1)):!1},delete_node:function(b){var c,d,e,f,g,h,i,j,k,l;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.delete_node(b[c]);return!0}if(b=this.get_node(b),!b||"#"===b.id)return!1;if(e=this.get_node(b.parent),f=a.inArray(b.id,e.children),l=!1,!this.check("delete_node",b,e,f))return this.settings.core.error.call(this,this._data.core.last_error),!1;for(-1!==f&&(e.children=a.vakata.array_remove(e.children,f)),g=b.children_d.concat([]),g.push(b.id),j=0,k=g.length;k>j;j++){for(h=0,i=b.parents.length;i>h;h++)f=a.inArray(g[j],this._model.data[b.parents[h]].children_d),-1!==f&&(this._model.data[b.parents[h]].children_d=a.vakata.array_remove(this._model.data[b.parents[h]].children_d,f));this._model.data[g[j]].state.selected&&(l=!0,f=a.inArray(g[j],this._data.core.selected),-1!==f&&(this._data.core.selected=a.vakata.array_remove(this._data.core.selected,f)))}for(this.trigger("delete_node",{node:b,parent:e.id}),l&&this.trigger("changed",{action:"delete_node",node:b,selected:this._data.core.selected,parent:e.id}),j=0,k=g.length;k>j;j++)delete this._model.data[g[j]];return this.redraw_node(e,!0),!0},check:function(b,c,d,e,f){c=c&&c.id?c:this.get_node(c),d=d&&d.id?d:this.get_node(d);var g=b.match(/^move_node|copy_node|create_node$/i)?d:c,h=this.settings.core.check_callback;return"move_node"!==b&&"copy_node"!==b||f&&f.is_multi||c.id!==d.id&&a.inArray(c.id,d.children)!==e&&-1===a.inArray(d.id,c.children_d)?(g&&g.data&&(g=g.data),g&&g.functions&&(g.functions[b]===!1||g.functions[b]===!0)?(g.functions[b]===!1&&(this._data.core.last_error={error:"check",plugin:"core",id:"core_02",reason:"Node data prevents function: "+b,data:JSON.stringify({chk:b,pos:e,obj:c&&c.id?c.id:!1,par:d&&d.id?d.id:!1})}),g.functions[b]):h===!1||a.isFunction(h)&&h.call(this,b,c,d,e,f)===!1||h&&h[b]===!1?(this._data.core.last_error={error:"check",plugin:"core",id:"core_03",reason:"User config for core.check_callback prevents function: "+b,data:JSON.stringify({chk:b,pos:e,obj:c&&c.id?c.id:!1,par:d&&d.id?d.id:!1})},!1):!0):(this._data.core.last_error={error:"check",plugin:"core",id:"core_01",reason:"Moving parent inside child",data:JSON.stringify({chk:b,pos:e,obj:c&&c.id?c.id:!1,par:d&&d.id?d.id:!1})},!1)},last_error:function(){return this._data.core.last_error},move_node:function(c,d,e,f,g,h){var i,j,k,l,m,n,o,p,q,r,s,t,u,v;if(d=this.get_node(d),e=e===b?0:e,!d)return!1;if(!e.toString().match(/^(before|after)$/)&&!g&&!this.is_loaded(d))return this.load_node(d,function(){this.move_node(c,d,e,f,!0)});if(a.isArray(c)){for(c=c.slice(),i=0,j=c.length;j>i;i++)this.move_node(c[i],d,e,f,g,!0)&&(d=c[i],e="after");return this.redraw(),!0}if(c=c&&c.id?c:this.get_node(c),!c||"#"===c.id)return!1;if(k=(c.parent||"#").toString(),m=e.toString().match(/^(before|after)$/)&&"#"!==d.id?this.get_node(d.parent):d,n=c.instance?c.instance:this._model.data[c.id]?this:a.jstree.reference(c.id),o=!n||!n._id||this._id!==n._id,l=n&&n._id&&k&&n._model.data[k]&&n._model.data[k].children?a.inArray(c.id,n._model.data[k].children):-1,o)return this.copy_node(c,d,e,f,g)?(n&&n.delete_node(c),!0):!1;switch("#"===d.id&&("before"===e&&(e="first"),"after"===e&&(e="last")),e){case"before":e=a.inArray(d.id,m.children);break;case"after":e=a.inArray(d.id,m.children)+1;break;case"inside":case"first":e=0;break;case"last":e=m.children.length;break;default:e||(e=0)}if(e>m.children.length&&(e=m.children.length),!this.check("move_node",c,m,e,{core:!0,is_multi:n&&n._id&&n._id!==this._id,is_foreign:!n||!n._id}))return this.settings.core.error.call(this,this._data.core.last_error),!1;if(c.parent===m.id){for(p=m.children.concat(),q=a.inArray(c.id,p),-1!==q&&(p=a.vakata.array_remove(p,q),e>q&&e--),q=[],r=0,s=p.length;s>r;r++)q[r>=e?r+1:r]=p[r];q[e]=c.id,m.children=q,this._node_changed(m.id),this.redraw("#"===m.id)}else{for(q=c.children_d.concat(),q.push(c.id),r=0,s=c.parents.length;s>r;r++){for(p=[],v=n._model.data[c.parents[r]].children_d,t=0,u=v.length;u>t;t++)-1===a.inArray(v[t],q)&&p.push(v[t]);n._model.data[c.parents[r]].children_d=p}for(n._model.data[k].children=a.vakata.array_remove_item(n._model.data[k].children,c.id),r=0,s=m.parents.length;s>r;r++)this._model.data[m.parents[r]].children_d=this._model.data[m.parents[r]].children_d.concat(q);for(p=[],r=0,s=m.children.length;s>r;r++)p[r>=e?r+1:r]=m.children[r];for(p[e]=c.id,m.children=p,m.children_d.push(c.id),m.children_d=m.children_d.concat(c.children_d),c.parent=m.id,q=m.parents.concat(),q.unshift(m.id),v=c.parents.length,c.parents=q,q=q.concat(),r=0,s=c.children_d.length;s>r;r++)this._model.data[c.children_d[r]].parents=this._model.data[c.children_d[r]].parents.slice(0,-1*v),Array.prototype.push.apply(this._model.data[c.children_d[r]].parents,q);("#"===k||"#"===m.id)&&(this._model.force_full_redraw=!0),this._model.force_full_redraw||(this._node_changed(k),this._node_changed(m.id)),h||this.redraw()}return f&&f.call(this,c,m,e),this.trigger("move_node",{node:c,parent:m.id,position:e,old_parent:k,old_position:l,is_multi:n&&n._id&&n._id!==this._id,is_foreign:!n||!n._id,old_instance:n,new_instance:this}),!0},copy_node:function(c,d,e,f,g,h){var i,j,k,l,m,n,o,p,q,r,s;if(d=this.get_node(d),e=e===b?0:e,!d)return!1;if(!e.toString().match(/^(before|after)$/)&&!g&&!this.is_loaded(d))return this.load_node(d,function(){this.copy_node(c,d,e,f,!0)});if(a.isArray(c)){for(c=c.slice(),i=0,j=c.length;j>i;i++)l=this.copy_node(c[i],d,e,f,g,!0),l&&(d=l,e="after");return this.redraw(),!0}if(c=c&&c.id?c:this.get_node(c),!c||"#"===c.id)return!1;switch(p=(c.parent||"#").toString(),q=e.toString().match(/^(before|after)$/)&&"#"!==d.id?this.get_node(d.parent):d,r=c.instance?c.instance:this._model.data[c.id]?this:a.jstree.reference(c.id),s=!r||!r._id||this._id!==r._id,"#"===d.id&&("before"===e&&(e="first"),"after"===e&&(e="last")),e){case"before":e=a.inArray(d.id,q.children);break;case"after":e=a.inArray(d.id,q.children)+1;break;case"inside":case"first":e=0;break;case"last":e=q.children.length;break;default:e||(e=0)}if(e>q.children.length&&(e=q.children.length),!this.check("copy_node",c,q,e,{core:!0,is_multi:r&&r._id&&r._id!==this._id,is_foreign:!r||!r._id}))return this.settings.core.error.call(this,this._data.core.last_error),!1;if(o=r?r.get_json(c,{no_id:!0,no_data:!0,no_state:!0}):c,!o)return!1;if(o.id===!0&&delete o.id,o=this._parse_model_from_json(o,q.id,q.parents.concat()),!o)return!1;for(l=this.get_node(o),c&&c.state&&c.state.loaded===!1&&(l.state.loaded=!1),k=[],k.push(o),k=k.concat(l.children_d),this.trigger("model",{nodes:k,parent:q.id}),m=0,n=q.parents.length;n>m;m++)this._model.data[q.parents[m]].children_d=this._model.data[q.parents[m]].children_d.concat(k);for(k=[],m=0,n=q.children.length;n>m;m++)k[m>=e?m+1:m]=q.children[m];return k[e]=l.id,q.children=k,q.children_d.push(l.id),q.children_d=q.children_d.concat(l.children_d),"#"===q.id&&(this._model.force_full_redraw=!0),this._model.force_full_redraw||this._node_changed(q.id),h||this.redraw("#"===q.id),f&&f.call(this,l,q,e),this.trigger("copy_node",{node:l,original:c,parent:q.id,position:e,old_parent:p,old_position:r&&r._id&&p&&r._model.data[p]&&r._model.data[p].children?a.inArray(c.id,r._model.data[p].children):-1,is_multi:r&&r._id&&r._id!==this._id,is_foreign:!r||!r._id,old_instance:r,new_instance:this}),l.id},cut:function(b){if(b||(b=this._data.core.selected.concat()),a.isArray(b)||(b=[b]),!b.length)return!1;var c=[],g,h,i;for(h=0,i=b.length;i>h;h++)g=this.get_node(b[h]),g&&g.id&&"#"!==g.id&&c.push(g);return c.length?(d=c,f=this,e="move_node",void this.trigger("cut",{node:b})):!1},copy:function(b){if(b||(b=this._data.core.selected.concat()),a.isArray(b)||(b=[b]),!b.length)return!1;var c=[],g,h,i;for(h=0,i=b.length;i>h;h++)g=this.get_node(b[h]),g&&g.id&&"#"!==g.id&&c.push(g);return c.length?(d=c,f=this,e="copy_node",void this.trigger("copy",{node:b})):!1},get_buffer:function(){return{mode:e,node:d,inst:f}},can_paste:function(){return e!==!1&&d!==!1},paste:function(a,b){return a=this.get_node(a),a&&e&&e.match(/^(copy_node|move_node)$/)&&d?(this[e](d,a,b)&&this.trigger("paste",{parent:a.id,node:d,mode:e}),d=!1,e=!1,void(f=!1)):!1},clear_buffer:function(){d=!1,e=!1,f=!1,this.trigger("clear_buffer")},edit:function(b,c){if(b=this.get_node(b),!b)return!1;if(this.settings.core.check_callback===!1)return this._data.core.last_error={error:"check",plugin:"core",id:"core_07",reason:"Could not edit node because of check_callback"},this.settings.core.error.call(this,this._data.core.last_error),!1;c="string"==typeof c?c:b.text,this.set_text(b,""),b=this._open_to(b);var d=this._data.core.rtl,e=this.element.width(),f=b.children(".jstree-anchor"),g=a("<span>"),h=c,i=a("<div />",{css:{position:"absolute",top:"-200px",left:d?"0px":"-1000px",visibility:"hidden"}}).appendTo("body"),j=a("<input />",{value:h,"class":"jstree-rename-input",css:{padding:"0",border:"1px solid silver","box-sizing":"border-box",display:"inline-block",height:this._data.core.li_height+"px",lineHeight:this._data.core.li_height+"px",width:"150px"},blur:a.proxy(function(){var c=g.children(".jstree-rename-input"),d=c.val();""===d&&(d=h),i.remove(),g.replaceWith(f),g.remove(),this.set_text(b,h),this.rename_node(b,a("<div></div>").text(d)[this.settings.core.force_text?"text":"html"]())===!1&&this.set_text(b,h)},this),keydown:function(a){var b=a.which;27===b&&(this.value=h),(27===b||13===b||37===b||38===b||39===b||40===b||32===b)&&a.stopImmediatePropagation(),(27===b||13===b)&&(a.preventDefault(),this.blur())},click:function(a){a.stopImmediatePropagation()},mousedown:function(a){a.stopImmediatePropagation()},keyup:function(a){j.width(Math.min(i.text("pW"+this.value).width(),e))},keypress:function(a){return 13===a.which?!1:void 0}}),k={fontFamily:f.css("fontFamily")||"",fontSize:f.css("fontSize")||"",fontWeight:f.css("fontWeight")||"",fontStyle:f.css("fontStyle")||"",fontStretch:f.css("fontStretch")||"",fontVariant:f.css("fontVariant")||"",letterSpacing:f.css("letterSpacing")||"",wordSpacing:f.css("wordSpacing")||""};g.attr("class",f.attr("class")).append(f.contents().clone()).append(j),f.replaceWith(g),i.css(k),j.css(k).width(Math.min(i.text("pW"+j[0].value).width(),e))[0].select()},set_theme:function(b,c){if(!b)return!1;if(c===!0){var d=this.settings.core.themes.dir;d||(d=a.jstree.path+"/themes"),c=d+"/"+b+"/style.css"}c&&-1===a.inArray(c,g)&&(a("head").append('<link rel="stylesheet" href="'+c+'" type="text/css" />'),g.push(c)),this._data.core.themes.name&&this.element.removeClass("jstree-"+this._data.core.themes.name),this._data.core.themes.name=b,this.element.addClass("jstree-"+b),this.element[this.settings.core.themes.responsive?"addClass":"removeClass"]("jstree-"+b+"-responsive"),this.trigger("set_theme",{theme:b})},get_theme:function(){return this._data.core.themes.name},set_theme_variant:function(a){this._data.core.themes.variant&&this.element.removeClass("jstree-"+this._data.core.themes.name+"-"+this._data.core.themes.variant),this._data.core.themes.variant=a,a&&this.element.addClass("jstree-"+this._data.core.themes.name+"-"+this._data.core.themes.variant)},get_theme_variant:function(){return this._data.core.themes.variant},show_stripes:function(){this._data.core.themes.stripes=!0,this.get_container_ul().addClass("jstree-striped")},hide_stripes:function(){this._data.core.themes.stripes=!1,this.get_container_ul().removeClass("jstree-striped")},toggle_stripes:function(){this._data.core.themes.stripes?this.hide_stripes():this.show_stripes()},show_dots:function(){this._data.core.themes.dots=!0,this.get_container_ul().removeClass("jstree-no-dots")},hide_dots:function(){this._data.core.themes.dots=!1,this.get_container_ul().addClass("jstree-no-dots")},toggle_dots:function(){this._data.core.themes.dots?this.hide_dots():this.show_dots()},show_icons:function(){this._data.core.themes.icons=!0,this.get_container_ul().removeClass("jstree-no-icons")},hide_icons:function(){this._data.core.themes.icons=!1,this.get_container_ul().addClass("jstree-no-icons")},toggle_icons:function(){this._data.core.themes.icons?this.hide_icons():this.show_icons()},set_icon:function(b,c){var d,e,f,g;if(a.isArray(b)){for(b=b.slice(),d=0,e=b.length;e>d;d++)this.set_icon(b[d],c);return!0}return b=this.get_node(b),b&&"#"!==b.id?(g=b.icon,b.icon=c,f=this.get_node(b,!0).children(".jstree-anchor").children(".jstree-themeicon"),c===!1?this.hide_icon(b):c===!0?(f.removeClass("jstree-themeicon-custom "+g).css("background","").removeAttr("rel"),g===!1&&this.show_icon(b)):-1===c.indexOf("/")&&-1===c.indexOf(".")?(f.removeClass(g).css("background",""),f.addClass(c+" jstree-themeicon-custom").attr("rel",c),g===!1&&this.show_icon(b)):(f.removeClass(g).css("background",""),f.addClass("jstree-themeicon-custom").css("background","url('"+c+"') center center no-repeat").attr("rel",c),g===!1&&this.show_icon(b)),!0):!1},get_icon:function(a){return a=this.get_node(a),a&&"#"!==a.id?a.icon:!1},hide_icon:function(b){var c,d;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.hide_icon(b[c]);return!0}return b=this.get_node(b),b&&"#"!==b?(b.icon=!1,this.get_node(b,!0).children(".jstree-anchor").children(".jstree-themeicon").addClass("jstree-themeicon-hidden"),!0):!1},show_icon:function(b){var c,d,e;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.show_icon(b[c]);return!0}return b=this.get_node(b),b&&"#"!==b?(e=this.get_node(b,!0),b.icon=e.length?e.children(".jstree-anchor").children(".jstree-themeicon").attr("rel"):!0,b.icon||(b.icon=!0),e.children(".jstree-anchor").children(".jstree-themeicon").removeClass("jstree-themeicon-hidden"),!0):!1}},a.vakata={},a.vakata.attributes=function(b,c){b=a(b)[0];var d=c?{}:[];return b&&b.attributes&&a.each(b.attributes,function(b,e){-1===a.inArray(e.name.toLowerCase(),["style","contenteditable","hasfocus","tabindex"])&&null!==e.value&&""!==a.trim(e.value)&&(c?d[e.name]=e.value:d.push(e.name))}),d},a.vakata.array_unique=function(a){var b=[],c,d,e;for(c=0,e=a.length;e>c;c++){for(d=0;c>=d;d++)if(a[c]===a[d])break;d===c&&b.push(a[c])}return b},a.vakata.array_remove=function(a,b,c){var d=a.slice((c||b)+1||a.length);return a.length=0>b?a.length+b:b,a.push.apply(a,d),a},a.vakata.array_remove_item=function(b,c){var d=a.inArray(c,b);return-1!==d?a.vakata.array_remove(b,d):b};var m=document.createElement("I");m.className="jstree-icon jstree-checkbox",m.setAttribute("role","presentation"),a.jstree.defaults.checkbox={visible:!0,three_state:!0,whole_node:!0,keep_selected_style:!0,cascade:"",tie_selection:!0},a.jstree.plugins.checkbox=function(b,c){this.bind=function(){c.bind.call(this),this._data.checkbox.uto=!1,this._data.checkbox.selected=[],this.settings.checkbox.three_state&&(this.settings.checkbox.cascade="up+down+undetermined"),this.element.on("init.jstree",a.proxy(function(){this._data.checkbox.visible=this.settings.checkbox.visible,this.settings.checkbox.keep_selected_style||this.element.addClass("jstree-checkbox-no-clicked"),this.settings.checkbox.tie_selection&&this.element.addClass("jstree-checkbox-selection")},this)).on("loading.jstree",a.proxy(function(){this[this._data.checkbox.visible?"show_checkboxes":"hide_checkboxes"]()},this)),-1!==this.settings.checkbox.cascade.indexOf("undetermined")&&this.element.on("changed.jstree uncheck_node.jstree check_node.jstree uncheck_all.jstree check_all.jstree move_node.jstree copy_node.jstree redraw.jstree open_node.jstree",a.proxy(function(){this._data.checkbox.uto&&clearTimeout(this._data.checkbox.uto),this._data.checkbox.uto=setTimeout(a.proxy(this._undetermined,this),50)},this)),this.settings.checkbox.tie_selection||this.element.on("model.jstree",a.proxy(function(a,b){var c=this._model.data,d=c[b.parent],e=b.nodes,f,g; -for(f=0,g=e.length;g>f;f++)c[e[f]].state.checked=c[e[f]].original&&c[e[f]].original.state&&c[e[f]].original.state.checked,c[e[f]].state.checked&&this._data.checkbox.selected.push(e[f])},this)),(-1!==this.settings.checkbox.cascade.indexOf("up")||-1!==this.settings.checkbox.cascade.indexOf("down"))&&this.element.on("model.jstree",a.proxy(function(b,c){var d=this._model.data,e=d[c.parent],f=c.nodes,g=[],h,i,j,k,l,m,n=this.settings.checkbox.cascade,o=this.settings.checkbox.tie_selection;if(-1!==n.indexOf("down"))if(e.state[o?"selected":"checked"]){for(i=0,j=f.length;j>i;i++)d[f[i]].state[o?"selected":"checked"]=!0;this._data[o?"core":"checkbox"].selected=this._data[o?"core":"checkbox"].selected.concat(f)}else for(i=0,j=f.length;j>i;i++)if(d[f[i]].state[o?"selected":"checked"]){for(k=0,l=d[f[i]].children_d.length;l>k;k++)d[d[f[i]].children_d[k]].state[o?"selected":"checked"]=!0;this._data[o?"core":"checkbox"].selected=this._data[o?"core":"checkbox"].selected.concat(d[f[i]].children_d)}if(-1!==n.indexOf("up")){for(i=0,j=e.children_d.length;j>i;i++)d[e.children_d[i]].children.length||g.push(d[e.children_d[i]].parent);for(g=a.vakata.array_unique(g),k=0,l=g.length;l>k;k++){e=d[g[k]];while(e&&"#"!==e.id){for(h=0,i=0,j=e.children.length;j>i;i++)h+=d[e.children[i]].state[o?"selected":"checked"];if(h!==j)break;e.state[o?"selected":"checked"]=!0,this._data[o?"core":"checkbox"].selected.push(e.id),m=this.get_node(e,!0),m&&m.length&&m.attr("aria-selected",!0).children(".jstree-anchor").addClass(o?"jstree-clicked":"jstree-checked"),e=this.get_node(e.parent)}}}this._data[o?"core":"checkbox"].selected=a.vakata.array_unique(this._data[o?"core":"checkbox"].selected)},this)).on(this.settings.checkbox.tie_selection?"select_node.jstree":"check_node.jstree",a.proxy(function(b,c){var d=c.node,e=this._model.data,f=this.get_node(d.parent),g=this.get_node(d,!0),h,i,j,k,l=this.settings.checkbox.cascade,m=this.settings.checkbox.tie_selection;if(-1!==l.indexOf("down"))for(this._data[m?"core":"checkbox"].selected=a.vakata.array_unique(this._data[m?"core":"checkbox"].selected.concat(d.children_d)),h=0,i=d.children_d.length;i>h;h++)k=e[d.children_d[h]],k.state[m?"selected":"checked"]=!0,k&&k.original&&k.original.state&&k.original.state.undetermined&&(k.original.state.undetermined=!1);if(-1!==l.indexOf("up"))while(f&&"#"!==f.id){for(j=0,h=0,i=f.children.length;i>h;h++)j+=e[f.children[h]].state[m?"selected":"checked"];if(j!==i)break;f.state[m?"selected":"checked"]=!0,this._data[m?"core":"checkbox"].selected.push(f.id),k=this.get_node(f,!0),k&&k.length&&k.attr("aria-selected",!0).children(".jstree-anchor").addClass(m?"jstree-clicked":"jstree-checked"),f=this.get_node(f.parent)}-1!==l.indexOf("down")&&g.length&&g.find(".jstree-anchor").addClass(m?"jstree-clicked":"jstree-checked").parent().attr("aria-selected",!0)},this)).on(this.settings.checkbox.tie_selection?"deselect_all.jstree":"uncheck_all.jstree",a.proxy(function(a,b){var c=this.get_node("#"),d=this._model.data,e,f,g;for(e=0,f=c.children_d.length;f>e;e++)g=d[c.children_d[e]],g&&g.original&&g.original.state&&g.original.state.undetermined&&(g.original.state.undetermined=!1)},this)).on(this.settings.checkbox.tie_selection?"deselect_node.jstree":"uncheck_node.jstree",a.proxy(function(b,c){var d=c.node,e=this.get_node(d,!0),f,g,h,i=this.settings.checkbox.cascade,j=this.settings.checkbox.tie_selection;if(d&&d.original&&d.original.state&&d.original.state.undetermined&&(d.original.state.undetermined=!1),-1!==i.indexOf("down"))for(f=0,g=d.children_d.length;g>f;f++)h=this._model.data[d.children_d[f]],h.state[j?"selected":"checked"]=!1,h&&h.original&&h.original.state&&h.original.state.undetermined&&(h.original.state.undetermined=!1);if(-1!==i.indexOf("up"))for(f=0,g=d.parents.length;g>f;f++)h=this._model.data[d.parents[f]],h.state[j?"selected":"checked"]=!1,h&&h.original&&h.original.state&&h.original.state.undetermined&&(h.original.state.undetermined=!1),h=this.get_node(d.parents[f],!0),h&&h.length&&h.attr("aria-selected",!1).children(".jstree-anchor").removeClass(j?"jstree-clicked":"jstree-checked");for(h=[],f=0,g=this._data[j?"core":"checkbox"].selected.length;g>f;f++)-1!==i.indexOf("down")&&-1!==a.inArray(this._data[j?"core":"checkbox"].selected[f],d.children_d)||-1!==i.indexOf("up")&&-1!==a.inArray(this._data[j?"core":"checkbox"].selected[f],d.parents)||h.push(this._data[j?"core":"checkbox"].selected[f]);this._data[j?"core":"checkbox"].selected=a.vakata.array_unique(h),-1!==i.indexOf("down")&&e.length&&e.find(".jstree-anchor").removeClass(j?"jstree-clicked":"jstree-checked").parent().attr("aria-selected",!1)},this)),-1!==this.settings.checkbox.cascade.indexOf("up")&&this.element.on("delete_node.jstree",a.proxy(function(a,b){var c=this.get_node(b.parent),d=this._model.data,e,f,g,h,i=this.settings.checkbox.tie_selection;while(c&&"#"!==c.id){for(g=0,e=0,f=c.children.length;f>e;e++)g+=d[c.children[e]].state[i?"selected":"checked"];if(g!==f)break;c.state[i?"selected":"checked"]=!0,this._data[i?"core":"checkbox"].selected.push(c.id),h=this.get_node(c,!0),h&&h.length&&h.attr("aria-selected",!0).children(".jstree-anchor").addClass(i?"jstree-clicked":"jstree-checked"),c=this.get_node(c.parent)}},this)).on("move_node.jstree",a.proxy(function(b,c){var d=c.is_multi,e=c.old_parent,f=this.get_node(c.parent),g=this._model.data,h,i,j,k,l,m=this.settings.checkbox.tie_selection;if(!d){h=this.get_node(e);while(h&&"#"!==h.id){for(i=0,j=0,k=h.children.length;k>j;j++)i+=g[h.children[j]].state[m?"selected":"checked"];if(i!==k)break;h.state[m?"selected":"checked"]=!0,this._data[m?"core":"checkbox"].selected.push(h.id),l=this.get_node(h,!0),l&&l.length&&l.attr("aria-selected",!0).children(".jstree-anchor").addClass(m?"jstree-clicked":"jstree-checked"),h=this.get_node(h.parent)}}h=f;while(h&&"#"!==h.id){for(i=0,j=0,k=h.children.length;k>j;j++)i+=g[h.children[j]].state[m?"selected":"checked"];if(i===k)h.state[m?"selected":"checked"]||(h.state[m?"selected":"checked"]=!0,this._data[m?"core":"checkbox"].selected.push(h.id),l=this.get_node(h,!0),l&&l.length&&l.attr("aria-selected",!0).children(".jstree-anchor").addClass(m?"jstree-clicked":"jstree-checked"));else{if(!h.state[m?"selected":"checked"])break;h.state[m?"selected":"checked"]=!1,this._data[m?"core":"checkbox"].selected=a.vakata.array_remove_item(this._data[m?"core":"checkbox"].selected,h.id),l=this.get_node(h,!0),l&&l.length&&l.attr("aria-selected",!1).children(".jstree-anchor").removeClass(m?"jstree-clicked":"jstree-checked")}h=this.get_node(h.parent)}},this))},this._undetermined=function(){var b,c,d=this._model.data,e=this.settings.checkbox.tie_selection,f=this._data[e?"core":"checkbox"].selected,g=[],h=this;for(b=0,c=f.length;c>b;b++)d[f[b]]&&d[f[b]].parents&&(g=g.concat(d[f[b]].parents));for(this.element.find(".jstree-closed").not(":has(.jstree-children)").each(function(){var a=h.get_node(this),e;if(a.state.loaded)for(b=0,c=a.children_d.length;c>b;b++)e=d[a.children_d[b]],!e.state.loaded&&e.original&&e.original.state&&e.original.state.undetermined&&e.original.state.undetermined===!0&&(g.push(e.id),g=g.concat(e.parents));else a.original&&a.original.state&&a.original.state.undetermined&&a.original.state.undetermined===!0&&(g.push(a.id),g=g.concat(a.parents))}),g=a.vakata.array_unique(g),g=a.vakata.array_remove_item(g,"#"),this.element.find(".jstree-undetermined").removeClass("jstree-undetermined"),b=0,c=g.length;c>b;b++)d[g[b]].state[e?"selected":"checked"]||(f=this.get_node(g[b],!0),f&&f.length&&f.children(".jstree-anchor").children(".jstree-checkbox").addClass("jstree-undetermined"))},this.redraw_node=function(b,d,e,f){if(b=c.redraw_node.apply(this,arguments)){var g,h,i=null;for(g=0,h=b.childNodes.length;h>g;g++)if(b.childNodes[g]&&b.childNodes[g].className&&-1!==b.childNodes[g].className.indexOf("jstree-anchor")){i=b.childNodes[g];break}i&&(!this.settings.checkbox.tie_selection&&this._model.data[b.id].state.checked&&(i.className+=" jstree-checked"),i.insertBefore(m.cloneNode(!1),i.childNodes[0]))}return e||-1===this.settings.checkbox.cascade.indexOf("undetermined")||(this._data.checkbox.uto&&clearTimeout(this._data.checkbox.uto),this._data.checkbox.uto=setTimeout(a.proxy(this._undetermined,this),50)),b},this.show_checkboxes=function(){this._data.core.themes.checkboxes=!0,this.get_container_ul().removeClass("jstree-no-checkboxes")},this.hide_checkboxes=function(){this._data.core.themes.checkboxes=!1,this.get_container_ul().addClass("jstree-no-checkboxes")},this.toggle_checkboxes=function(){this._data.core.themes.checkboxes?this.hide_checkboxes():this.show_checkboxes()},this.is_undetermined=function(b){b=this.get_node(b);var c=this.settings.checkbox.cascade,d,e,f=this.settings.checkbox.tie_selection,g=this._data[f?"core":"checkbox"].selected,h=this._model.data;if(!b||b.state[f?"selected":"checked"]===!0||-1===c.indexOf("undetermined")||-1===c.indexOf("down")&&-1===c.indexOf("up"))return!1;if(!b.state.loaded&&b.original.state.undetermined===!0)return!0;for(d=0,e=b.children_d.length;e>d;d++)if(-1!==a.inArray(b.children_d[d],g)||!h[b.children_d[d]].state.loaded&&h[b.children_d[d]].original.state.undetermined)return!0;return!1},this.activate_node=function(b,d){return this.settings.checkbox.tie_selection&&(this.settings.checkbox.whole_node||a(d.target).hasClass("jstree-checkbox"))&&(d.ctrlKey=!0),this.settings.checkbox.tie_selection||!this.settings.checkbox.whole_node&&!a(d.target).hasClass("jstree-checkbox")?c.activate_node.call(this,b,d):this.is_disabled(b)?!1:(this.is_checked(b)?this.uncheck_node(b,d):this.check_node(b,d),void this.trigger("activate_node",{node:this.get_node(b)}))},this.check_node=function(b,c){if(this.settings.checkbox.tie_selection)return this.select_node(b,!1,!0,c);var d,e,f,g;if(a.isArray(b)){for(b=b.slice(),e=0,f=b.length;f>e;e++)this.check_node(b[e],c);return!0}return b=this.get_node(b),b&&"#"!==b.id?(d=this.get_node(b,!0),void(b.state.checked||(b.state.checked=!0,this._data.checkbox.selected.push(b.id),d&&d.length&&d.children(".jstree-anchor").addClass("jstree-checked"),this.trigger("check_node",{node:b,selected:this._data.checkbox.selected,event:c})))):!1},this.uncheck_node=function(b,c){if(this.settings.checkbox.tie_selection)return this.deselect_node(b,!1,c);var d,e,f;if(a.isArray(b)){for(b=b.slice(),d=0,e=b.length;e>d;d++)this.uncheck_node(b[d],c);return!0}return b=this.get_node(b),b&&"#"!==b.id?(f=this.get_node(b,!0),void(b.state.checked&&(b.state.checked=!1,this._data.checkbox.selected=a.vakata.array_remove_item(this._data.checkbox.selected,b.id),f.length&&f.children(".jstree-anchor").removeClass("jstree-checked"),this.trigger("uncheck_node",{node:b,selected:this._data.checkbox.selected,event:c})))):!1},this.check_all=function(){if(this.settings.checkbox.tie_selection)return this.select_all();var a=this._data.checkbox.selected.concat([]),b,c;for(this._data.checkbox.selected=this._model.data["#"].children_d.concat(),b=0,c=this._data.checkbox.selected.length;c>b;b++)this._model.data[this._data.checkbox.selected[b]]&&(this._model.data[this._data.checkbox.selected[b]].state.checked=!0);this.redraw(!0),this.trigger("check_all",{selected:this._data.checkbox.selected})},this.uncheck_all=function(){if(this.settings.checkbox.tie_selection)return this.deselect_all();var a=this._data.checkbox.selected.concat([]),b,c;for(b=0,c=this._data.checkbox.selected.length;c>b;b++)this._model.data[this._data.checkbox.selected[b]]&&(this._model.data[this._data.checkbox.selected[b]].state.checked=!1);this._data.checkbox.selected=[],this.element.find(".jstree-checked").removeClass("jstree-checked"),this.trigger("uncheck_all",{selected:this._data.checkbox.selected,node:a})},this.is_checked=function(a){return this.settings.checkbox.tie_selection?this.is_selected(a):(a=this.get_node(a),a&&"#"!==a.id?a.state.checked:!1)},this.get_checked=function(b){return this.settings.checkbox.tie_selection?this.get_selected(b):b?a.map(this._data.checkbox.selected,a.proxy(function(a){return this.get_node(a)},this)):this._data.checkbox.selected},this.get_top_checked=function(b){if(this.settings.checkbox.tie_selection)return this.get_top_selected(b);var c=this.get_checked(!0),d={},e,f,g,h;for(e=0,f=c.length;f>e;e++)d[c[e].id]=c[e];for(e=0,f=c.length;f>e;e++)for(g=0,h=c[e].children_d.length;h>g;g++)d[c[e].children_d[g]]&&delete d[c[e].children_d[g]];c=[];for(e in d)d.hasOwnProperty(e)&&c.push(e);return b?a.map(c,a.proxy(function(a){return this.get_node(a)},this)):c},this.get_bottom_checked=function(b){if(this.settings.checkbox.tie_selection)return this.get_bottom_selected(b);var c=this.get_checked(!0),d=[],e,f;for(e=0,f=c.length;f>e;e++)c[e].children.length||d.push(c[e].id);return b?a.map(d,a.proxy(function(a){return this.get_node(a)},this)):d},this.load_node=function(b,d){var e,f,g,h,i,j;if(!a.isArray(b)&&!this.settings.checkbox.tie_selection&&(j=this.get_node(b),j&&j.state.loaded))for(e=0,f=j.children_d.length;f>e;e++)this._model.data[j.children_d[e]].state.checked&&(i=!0,this._data.checkbox.selected=a.vakata.array_remove_item(this._data.checkbox.selected,j.children_d[e]));return c.load_node.apply(this,arguments)},this.get_state=function(){var a=c.get_state.apply(this,arguments);return this.settings.checkbox.tie_selection?a:(a.checkbox=this._data.checkbox.selected.slice(),a)},this.set_state=function(b,d){var e=c.set_state.apply(this,arguments);if(e&&b.checkbox){if(!this.settings.checkbox.tie_selection){this.uncheck_all();var f=this;a.each(b.checkbox,function(a,b){f.check_node(b)})}return delete b.checkbox,!1}return e}};var n=null,o,p;a.jstree.defaults.contextmenu={select_node:!0,show_at_node:!0,items:function(b,c){return{create:{separator_before:!1,separator_after:!0,_disabled:!1,label:"Create",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.create_node(d,{},"last",function(a){setTimeout(function(){c.edit(a)},0)})}},rename:{separator_before:!1,separator_after:!1,_disabled:!1,label:"Rename",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.edit(d)}},remove:{separator_before:!1,icon:!1,separator_after:!1,_disabled:!1,label:"Delete",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.delete_node(c.is_selected(d)?c.get_selected():d)}},ccp:{separator_before:!0,icon:!1,separator_after:!1,label:"Edit",action:!1,submenu:{cut:{separator_before:!1,separator_after:!1,label:"Cut",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.cut(c.is_selected(d)?c.get_selected():d)}},copy:{separator_before:!1,icon:!1,separator_after:!1,label:"Copy",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.copy(c.is_selected(d)?c.get_selected():d)}},paste:{separator_before:!1,icon:!1,_disabled:function(b){return!a.jstree.reference(b.reference).can_paste()},separator_after:!1,label:"Paste",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.paste(d)}}}}}}},a.jstree.plugins.contextmenu=function(c,d){this.bind=function(){d.bind.call(this);var b=0;this.element.on("contextmenu.jstree",".jstree-anchor",a.proxy(function(a,c){a.preventDefault(),b=a.ctrlKey?+new Date:0,(c||n)&&(b=+new Date+1e4),n&&clearTimeout(n),this.is_loading(a.currentTarget)||this.show_contextmenu(a.currentTarget,a.pageX,a.pageY,a)},this)).on("click.jstree",".jstree-anchor",a.proxy(function(c){this._data.contextmenu.visible&&(!b||+new Date-b>250)&&a.vakata.context.hide(),b=0},this)).on("touchstart.jstree",".jstree-anchor",function(b){b.originalEvent&&b.originalEvent.changedTouches&&b.originalEvent.changedTouches[0]&&(o=b.pageX,p=b.pageY,n=setTimeout(function(){a(b.currentTarget).trigger("contextmenu",!0)},750))}),a(document).on("context_hide.vakata.jstree",a.proxy(function(){this._data.contextmenu.visible=!1},this))},this.teardown=function(){this._data.contextmenu.visible&&a.vakata.context.hide(),d.teardown.call(this)},this.show_contextmenu=function(c,d,e,f){if(c=this.get_node(c),!c||"#"===c.id)return!1;var g=this.settings.contextmenu,h=this.get_node(c,!0),i=h.children(".jstree-anchor"),j=!1,k=!1;(g.show_at_node||d===b||e===b)&&(j=i.offset(),d=j.left,e=j.top+this._data.core.li_height),this.settings.contextmenu.select_node&&!this.is_selected(c)&&this.activate_node(c,f),k=g.items,a.isFunction(k)&&(k=k.call(this,c,a.proxy(function(a){this._show_contextmenu(c,d,e,a)},this))),a.isPlainObject(k)&&this._show_contextmenu(c,d,e,k)},this._show_contextmenu=function(b,c,d,e){var f=this.get_node(b,!0),g=f.children(".jstree-anchor");a(document).one("context_show.vakata.jstree",a.proxy(function(b,c){var d="jstree-contextmenu jstree-"+this.get_theme()+"-contextmenu";a(c.element).addClass(d)},this)),this._data.contextmenu.visible=!0,a.vakata.context.show(g,{x:c,y:d},e),this.trigger("show_contextmenu",{node:b,x:c,y:d})}},a(function(){a(document).on("touchmove.vakata.jstree",function(a){n&&a.originalEvent&&a.originalEvent.changedTouches&&a.originalEvent.changedTouches[0]&&(Math.abs(o-a.pageX)>50||Math.abs(p-a.pageY)>50)&&clearTimeout(n)}).on("touchend.vakata.jstree",function(a){n&&clearTimeout(n)})}),function(a){var b=!1,c={element:!1,reference:!1,position_x:0,position_y:0,items:[],html:"",is_visible:!1};a.vakata.context={settings:{hide_onmouseleave:0,icons:!0},_trigger:function(b){a(document).triggerHandler("context_"+b+".vakata",{reference:c.reference,element:c.element,position:{x:c.position_x,y:c.position_y}})},_execute:function(b){return b=c.items[b],b&&(!b._disabled||a.isFunction(b._disabled)&&!b._disabled({item:b,reference:c.reference,element:c.element}))&&b.action?b.action.call(null,{item:b,reference:c.reference,element:c.element,position:{x:c.position_x,y:c.position_y}}):!1},_parse:function(b,d){if(!b)return!1;d||(c.html="",c.items=[]);var e="",f=!1,g;return d&&(e+="<ul>"),a.each(b,function(b,d){return d?(c.items.push(d),!f&&d.separator_before&&(e+="<li class='vakata-context-separator'><a href='#' "+(a.vakata.context.settings.icons?"":'style="margin-left:0px;"')+">&#160;</a></li>"),f=!1,e+="<li class='"+(d._class||"")+(d._disabled===!0||a.isFunction(d._disabled)&&d._disabled({item:d,reference:c.reference,element:c.element})?" vakata-contextmenu-disabled ":"")+"' "+(d.shortcut?" data-shortcut='"+d.shortcut+"' ":"")+">",e+="<a href='#' rel='"+(c.items.length-1)+"'>",a.vakata.context.settings.icons&&(e+="<i ",d.icon&&(e+=-1!==d.icon.indexOf("/")||-1!==d.icon.indexOf(".")?" style='background:url(\""+d.icon+"\") center center no-repeat' ":" class='"+d.icon+"' "),e+="></i><span class='vakata-contextmenu-sep'>&#160;</span>"),e+=(a.isFunction(d.label)?d.label({item:b,reference:c.reference,element:c.element}):d.label)+(d.shortcut?' <span class="vakata-contextmenu-shortcut vakata-contextmenu-shortcut-'+d.shortcut+'">'+(d.shortcut_label||"")+"</span>":"")+"</a>",d.submenu&&(g=a.vakata.context._parse(d.submenu,!0),g&&(e+=g)),e+="</li>",void(d.separator_after&&(e+="<li class='vakata-context-separator'><a href='#' "+(a.vakata.context.settings.icons?"":'style="margin-left:0px;"')+">&#160;</a></li>",f=!0))):!0}),e=e.replace(/<li class\='vakata-context-separator'\><\/li\>$/,""),d&&(e+="</ul>"),d||(c.html=e,a.vakata.context._trigger("parse")),e.length>10?e:!1},_show_submenu:function(c){if(c=a(c),c.length&&c.children("ul").length){var d=c.children("ul"),e=c.offset().left+c.outerWidth(),f=c.offset().top,g=d.width(),h=d.height(),i=a(window).width()+a(window).scrollLeft(),j=a(window).height()+a(window).scrollTop();b?c[e-(g+10+c.outerWidth())<0?"addClass":"removeClass"]("vakata-context-left"):c[e+g+10>i?"addClass":"removeClass"]("vakata-context-right"),f+h+10>j&&d.css("bottom","-1px"),d.show()}},show:function(d,e,f){var g,h,i,j,k,l,m,n,o=!0;switch(c.element&&c.element.length&&c.element.width(""),o){case!e&&!d:return!1;case!!e&&!!d:c.reference=d,c.position_x=e.x,c.position_y=e.y;break;case!e&&!!d:c.reference=d,g=d.offset(),c.position_x=g.left+d.outerHeight(),c.position_y=g.top;break;case!!e&&!d:c.position_x=e.x,c.position_y=e.y}d&&!f&&a(d).data("vakata_contextmenu")&&(f=a(d).data("vakata_contextmenu")),a.vakata.context._parse(f)&&c.element.html(c.html),c.items.length&&(c.element.appendTo("body"),h=c.element,i=c.position_x,j=c.position_y,k=h.width(),l=h.height(),m=a(window).width()+a(window).scrollLeft(),n=a(window).height()+a(window).scrollTop(),b&&(i-=h.outerWidth()-a(d).outerWidth(),i<a(window).scrollLeft()+20&&(i=a(window).scrollLeft()+20)),i+k+20>m&&(i=m-(k+20)),j+l+20>n&&(j=n-(l+20)),c.element.css({left:i,top:j}).show().find("a").first().focus().parent().addClass("vakata-context-hover"),c.is_visible=!0,a.vakata.context._trigger("show"))},hide:function(){c.is_visible&&(c.element.hide().find("ul").hide().end().find(":focus").blur().end().detach(),c.is_visible=!1,a.vakata.context._trigger("hide"))}},a(function(){b="rtl"===a("body").css("direction");var d=!1;c.element=a("<ul class='vakata-context'></ul>"),c.element.on("mouseenter","li",function(b){b.stopImmediatePropagation(),a.contains(this,b.relatedTarget)||(d&&clearTimeout(d),c.element.find(".vakata-context-hover").removeClass("vakata-context-hover").end(),a(this).siblings().find("ul").hide().end().end().parentsUntil(".vakata-context","li").addBack().addClass("vakata-context-hover"),a.vakata.context._show_submenu(this))}).on("mouseleave","li",function(b){a.contains(this,b.relatedTarget)||a(this).find(".vakata-context-hover").addBack().removeClass("vakata-context-hover")}).on("mouseleave",function(b){a(this).find(".vakata-context-hover").removeClass("vakata-context-hover"),a.vakata.context.settings.hide_onmouseleave&&(d=setTimeout(function(b){return function(){a.vakata.context.hide()}}(this),a.vakata.context.settings.hide_onmouseleave))}).on("click","a",function(b){b.preventDefault(),a(this).blur().parent().hasClass("vakata-context-disabled")||a.vakata.context._execute(a(this).attr("rel"))===!1||a.vakata.context.hide()}).on("keydown","a",function(b){var d=null;switch(b.which){case 13:case 32:b.type="mouseup",b.preventDefault(),a(b.currentTarget).trigger(b);break;case 37:c.is_visible&&(c.element.find(".vakata-context-hover").last().closest("li").first().find("ul").hide().find(".vakata-context-hover").removeClass("vakata-context-hover").end().end().children("a").focus(),b.stopImmediatePropagation(),b.preventDefault());break;case 38:c.is_visible&&(d=c.element.find("ul:visible").addBack().last().children(".vakata-context-hover").removeClass("vakata-context-hover").prevAll("li:not(.vakata-context-separator)").first(),d.length||(d=c.element.find("ul:visible").addBack().last().children("li:not(.vakata-context-separator)").last()),d.addClass("vakata-context-hover").children("a").focus(),b.stopImmediatePropagation(),b.preventDefault());break;case 39:c.is_visible&&(c.element.find(".vakata-context-hover").last().children("ul").show().children("li:not(.vakata-context-separator)").removeClass("vakata-context-hover").first().addClass("vakata-context-hover").children("a").focus(),b.stopImmediatePropagation(),b.preventDefault());break;case 40:c.is_visible&&(d=c.element.find("ul:visible").addBack().last().children(".vakata-context-hover").removeClass("vakata-context-hover").nextAll("li:not(.vakata-context-separator)").first(),d.length||(d=c.element.find("ul:visible").addBack().last().children("li:not(.vakata-context-separator)").first()),d.addClass("vakata-context-hover").children("a").focus(),b.stopImmediatePropagation(),b.preventDefault());break;case 27:a.vakata.context.hide(),b.preventDefault()}}).on("keydown",function(a){a.preventDefault();var b=c.element.find(".vakata-contextmenu-shortcut-"+a.which).parent();b.parent().not(".vakata-context-disabled")&&b.click()}),a(document).on("mousedown.vakata.jstree",function(b){c.is_visible&&!a.contains(c.element[0],b.target)&&a.vakata.context.hide()}).on("context_show.vakata.jstree",function(a,d){c.element.find("li:has(ul)").children("a").addClass("vakata-context-parent"),b&&c.element.addClass("vakata-context-rtl").css("direction","rtl"),c.element.find("ul").hide().end()})})}(a),a.jstree.defaults.dnd={copy:!0,open_timeout:500,is_draggable:!0,check_while_dragging:!0,always_copy:!1,inside_pos:0,drag_selection:!0,touch:!0},a.jstree.plugins.dnd=function(b,c){this.bind=function(){c.bind.call(this),this.element.on("mousedown.jstree touchstart.jstree",".jstree-anchor",a.proxy(function(b){if("touchstart"===b.type&&(!this.settings.dnd.touch||"selected"===this.settings.dnd.touch&&!a(b.currentTarget).hasClass("jstree-clicked")))return!0;var c=this.get_node(b.target),d=this.is_selected(c)&&this.settings.drag_selection?this.get_selected().length:1,e=d>1?d+" "+this.get_string("nodes"):this.get_text(b.currentTarget);return this.settings.core.force_text&&(e=a("<div />").text(e).html()),c&&c.id&&"#"!==c.id&&(1===b.which||"touchstart"===b.type)&&(this.settings.dnd.is_draggable===!0||a.isFunction(this.settings.dnd.is_draggable)&&this.settings.dnd.is_draggable.call(this,d>1?this.get_selected(!0):[c]))?(this.element.trigger("mousedown.jstree"),a.vakata.dnd.start(b,{jstree:!0,origin:this,obj:this.get_node(c,!0),nodes:d>1?this.get_selected():[c.id]},'<div id="jstree-dnd" class="jstree-'+this.get_theme()+" jstree-"+this.get_theme()+"-"+this.get_theme_variant()+" "+(this.settings.core.themes.responsive?" jstree-dnd-responsive":"")+'"><i class="jstree-icon jstree-er"></i>'+e+'<ins class="jstree-copy" style="display:none;">+</ins></div>')):void 0},this))}},a(function(){var b=!1,c=!1,d=!1,e=a('<div id="jstree-marker">&#160;</div>').hide();a(document).on("dnd_start.vakata.jstree",function(a,c){b=!1,c&&c.data&&c.data.jstree&&e.appendTo("body")}).on("dnd_move.vakata.jstree",function(f,g){if(d&&clearTimeout(d),g&&g.data&&g.data.jstree&&(!g.event.target.id||"jstree-marker"!==g.event.target.id)){var h=a.jstree.reference(g.event.target),i=!1,j=!1,k=!1,l,m,n,o,p,q,r,s,t,u,v,w,x,y;if(h&&h._data&&h._data.dnd)if(e.attr("class","jstree-"+h.get_theme()+(h.settings.core.themes.responsive?" jstree-dnd-responsive":"")),g.helper.children().attr("class","jstree-"+h.get_theme()+" jstree-"+h.get_theme()+"-"+h.get_theme_variant()+" "+(h.settings.core.themes.responsive?" jstree-dnd-responsive":"")).find(".jstree-copy").first()[g.data.origin&&(g.data.origin.settings.dnd.always_copy||g.data.origin.settings.dnd.copy&&(g.event.metaKey||g.event.ctrlKey))?"show":"hide"](),g.event.target!==h.element[0]&&g.event.target!==h.get_container_ul()[0]||0!==h.get_container_ul().children().length){if(i=a(g.event.target).closest(".jstree-anchor"),i&&i.length&&i.parent().is(".jstree-closed, .jstree-open, .jstree-leaf")&&(j=i.offset(),k=g.event.pageY-j.top,n=i.height(),q=n/3>k?["b","i","a"]:k>n-n/3?["a","i","b"]:k>n/2?["i","a","b"]:["i","b","a"],a.each(q,function(f,k){switch(k){case"b":l=j.left-6,m=j.top,o=h.get_parent(i),p=i.parent().index();break;case"i":x=h.settings.dnd.inside_pos,y=h.get_node(i.parent()),l=j.left-2,m=j.top+n/2+1,o=y.id,p="first"===x?0:"last"===x?y.children.length:Math.min(x,y.children.length);break;case"a":l=j.left-6,m=j.top+n,o=h.get_parent(i),p=i.parent().index()+1}for(r=!0,s=0,t=g.data.nodes.length;t>s;s++)if(u=g.data.origin&&(g.data.origin.settings.dnd.always_copy||g.data.origin.settings.dnd.copy&&(g.event.metaKey||g.event.ctrlKey))?"copy_node":"move_node",v=p,"move_node"===u&&"a"===k&&g.data.origin&&g.data.origin===h&&o===h.get_parent(g.data.nodes[s])&&(w=h.get_node(o),v>a.inArray(g.data.nodes[s],w.children)&&(v-=1)),r=r&&(h&&h.settings&&h.settings.dnd&&h.settings.dnd.check_while_dragging===!1||h.check(u,g.data.origin&&g.data.origin!==h?g.data.origin.get_node(g.data.nodes[s]):g.data.nodes[s],o,v,{dnd:!0,ref:h.get_node(i.parent()),pos:k,is_multi:g.data.origin&&g.data.origin!==h,is_foreign:!g.data.origin})),!r){h&&h.last_error&&(c=h.last_error());break}return"i"===k&&i.parent().is(".jstree-closed")&&h.settings.dnd.open_timeout&&(d=setTimeout(function(a,b){return function(){a.open_node(b)}}(h,i),h.settings.dnd.open_timeout)),r?(b={ins:h,par:o,pos:"i"!==k||"last"!==x||0!==p||h.is_loaded(y)?p:"last"},e.css({left:l+"px",top:m+"px"}).show(),g.helper.find(".jstree-icon").first().removeClass("jstree-er").addClass("jstree-ok"),c={},q=!0,!1):void 0}),q===!0))return}else{for(r=!0,s=0,t=g.data.nodes.length;t>s;s++)if(r=r&&h.check(g.data.origin&&(g.data.origin.settings.dnd.always_copy||g.data.origin.settings.dnd.copy&&(g.event.metaKey||g.event.ctrlKey))?"copy_node":"move_node",g.data.origin&&g.data.origin!==h?g.data.origin.get_node(g.data.nodes[s]):g.data.nodes[s],"#","last",{dnd:!0,ref:h.get_node("#"),pos:"i",is_multi:g.data.origin&&g.data.origin!==h,is_foreign:!g.data.origin}),!r)break;if(r)return b={ins:h,par:"#",pos:"last"},e.hide(),void g.helper.find(".jstree-icon").first().removeClass("jstree-er").addClass("jstree-ok")}b=!1,g.helper.find(".jstree-icon").removeClass("jstree-ok").addClass("jstree-er"),e.hide()}}).on("dnd_scroll.vakata.jstree",function(a,c){c&&c.data&&c.data.jstree&&(e.hide(),b=!1,c.helper.find(".jstree-icon").first().removeClass("jstree-ok").addClass("jstree-er"))}).on("dnd_stop.vakata.jstree",function(f,g){if(d&&clearTimeout(d),g&&g.data&&g.data.jstree){e.hide().detach();var h,i,j=[];if(b){for(h=0,i=g.data.nodes.length;i>h;h++)j[h]=g.data.origin?g.data.origin.get_node(g.data.nodes[h]):g.data.nodes[h],g.data.origin&&(j[h].instance=g.data.origin);for(b.ins[g.data.origin&&(g.data.origin.settings.dnd.always_copy||g.data.origin.settings.dnd.copy&&(g.event.metaKey||g.event.ctrlKey))?"copy_node":"move_node"](j,b.par,b.pos),h=0,i=j.length;i>h;h++)j[h].instance&&(j[h].instance=null)}else h=a(g.event.target).closest(".jstree"),h.length&&c&&c.error&&"check"===c.error&&(h=h.jstree(!0),h&&h.settings.core.error.call(this,c))}}).on("keyup.jstree keydown.jstree",function(b,c){c=a.vakata.dnd._get(),c&&c.data&&c.data.jstree&&c.helper.find(".jstree-copy").first()[c.data.origin&&(c.data.origin.settings.dnd.always_copy||c.data.origin.settings.dnd.copy&&(b.metaKey||b.ctrlKey))?"show":"hide"]()})}),function(a){var b={element:!1,target:!1,is_down:!1,is_drag:!1,helper:!1,helper_w:0,data:!1,init_x:0,init_y:0,scroll_l:0,scroll_t:0,scroll_e:!1,scroll_i:!1,is_touch:!1};a.vakata.dnd={settings:{scroll_speed:10,scroll_proximity:20,helper_left:5,helper_top:10,threshold:5,threshold_touch:50},_trigger:function(b,c){var d=a.vakata.dnd._get();d.event=c,a(document).triggerHandler("dnd_"+b+".vakata",d)},_get:function(){return{data:b.data,element:b.element,helper:b.helper}},_clean:function(){b.helper&&b.helper.remove(),b.scroll_i&&(clearInterval(b.scroll_i),b.scroll_i=!1),b={element:!1,target:!1,is_down:!1,is_drag:!1,helper:!1,helper_w:0,data:!1,init_x:0,init_y:0,scroll_l:0,scroll_t:0,scroll_e:!1,scroll_i:!1,is_touch:!1},a(document).off("mousemove.vakata.jstree touchmove.vakata.jstree",a.vakata.dnd.drag),a(document).off("mouseup.vakata.jstree touchend.vakata.jstree",a.vakata.dnd.stop)},_scroll:function(c){if(!b.scroll_e||!b.scroll_l&&!b.scroll_t)return b.scroll_i&&(clearInterval(b.scroll_i),b.scroll_i=!1),!1;if(!b.scroll_i)return b.scroll_i=setInterval(a.vakata.dnd._scroll,100),!1;if(c===!0)return!1;var d=b.scroll_e.scrollTop(),e=b.scroll_e.scrollLeft();b.scroll_e.scrollTop(d+b.scroll_t*a.vakata.dnd.settings.scroll_speed),b.scroll_e.scrollLeft(e+b.scroll_l*a.vakata.dnd.settings.scroll_speed),(d!==b.scroll_e.scrollTop()||e!==b.scroll_e.scrollLeft())&&a.vakata.dnd._trigger("scroll",b.scroll_e)},start:function(c,d,e){"touchstart"===c.type&&c.originalEvent&&c.originalEvent.changedTouches&&c.originalEvent.changedTouches[0]&&(c.pageX=c.originalEvent.changedTouches[0].pageX,c.pageY=c.originalEvent.changedTouches[0].pageY,c.target=document.elementFromPoint(c.originalEvent.changedTouches[0].pageX-window.pageXOffset,c.originalEvent.changedTouches[0].pageY-window.pageYOffset)),b.is_drag&&a.vakata.dnd.stop({});try{c.currentTarget.unselectable="on",c.currentTarget.onselectstart=function(){return!1},c.currentTarget.style&&(c.currentTarget.style.MozUserSelect="none")}catch(f){}return b.init_x=c.pageX,b.init_y=c.pageY,b.data=d,b.is_down=!0,b.element=c.currentTarget,b.target=c.target,b.is_touch="touchstart"===c.type,e!==!1&&(b.helper=a("<div id='vakata-dnd'></div>").html(e).css({display:"block",margin:"0",padding:"0",position:"absolute",top:"-2000px",lineHeight:"16px",zIndex:"10000"})),a(document).on("mousemove.vakata.jstree touchmove.vakata.jstree",a.vakata.dnd.drag),a(document).on("mouseup.vakata.jstree touchend.vakata.jstree",a.vakata.dnd.stop),!1 -},drag:function(c){if("touchmove"===c.type&&c.originalEvent&&c.originalEvent.changedTouches&&c.originalEvent.changedTouches[0]&&(c.pageX=c.originalEvent.changedTouches[0].pageX,c.pageY=c.originalEvent.changedTouches[0].pageY,c.target=document.elementFromPoint(c.originalEvent.changedTouches[0].pageX-window.pageXOffset,c.originalEvent.changedTouches[0].pageY-window.pageYOffset)),b.is_down){if(!b.is_drag){if(!(Math.abs(c.pageX-b.init_x)>(b.is_touch?a.vakata.dnd.settings.threshold_touch:a.vakata.dnd.settings.threshold)||Math.abs(c.pageY-b.init_y)>(b.is_touch?a.vakata.dnd.settings.threshold_touch:a.vakata.dnd.settings.threshold)))return;b.helper&&(b.helper.appendTo("body"),b.helper_w=b.helper.outerWidth()),b.is_drag=!0,a.vakata.dnd._trigger("start",c)}var d=!1,e=!1,f=!1,g=!1,h=!1,i=!1,j=!1,k=!1,l=!1,m=!1;return b.scroll_t=0,b.scroll_l=0,b.scroll_e=!1,a(a(c.target).parentsUntil("body").addBack().get().reverse()).filter(function(){return/^auto|scroll$/.test(a(this).css("overflow"))&&(this.scrollHeight>this.offsetHeight||this.scrollWidth>this.offsetWidth)}).each(function(){var d=a(this),e=d.offset();return this.scrollHeight>this.offsetHeight&&(e.top+d.height()-c.pageY<a.vakata.dnd.settings.scroll_proximity&&(b.scroll_t=1),c.pageY-e.top<a.vakata.dnd.settings.scroll_proximity&&(b.scroll_t=-1)),this.scrollWidth>this.offsetWidth&&(e.left+d.width()-c.pageX<a.vakata.dnd.settings.scroll_proximity&&(b.scroll_l=1),c.pageX-e.left<a.vakata.dnd.settings.scroll_proximity&&(b.scroll_l=-1)),b.scroll_t||b.scroll_l?(b.scroll_e=a(this),!1):void 0}),b.scroll_e||(d=a(document),e=a(window),f=d.height(),g=e.height(),h=d.width(),i=e.width(),j=d.scrollTop(),k=d.scrollLeft(),f>g&&c.pageY-j<a.vakata.dnd.settings.scroll_proximity&&(b.scroll_t=-1),f>g&&g-(c.pageY-j)<a.vakata.dnd.settings.scroll_proximity&&(b.scroll_t=1),h>i&&c.pageX-k<a.vakata.dnd.settings.scroll_proximity&&(b.scroll_l=-1),h>i&&i-(c.pageX-k)<a.vakata.dnd.settings.scroll_proximity&&(b.scroll_l=1),(b.scroll_t||b.scroll_l)&&(b.scroll_e=d)),b.scroll_e&&a.vakata.dnd._scroll(!0),b.helper&&(l=parseInt(c.pageY+a.vakata.dnd.settings.helper_top,10),m=parseInt(c.pageX+a.vakata.dnd.settings.helper_left,10),f&&l+25>f&&(l=f-50),h&&m+b.helper_w>h&&(m=h-(b.helper_w+2)),b.helper.css({left:m+"px",top:l+"px"})),a.vakata.dnd._trigger("move",c),!1}},stop:function(c){if("touchend"===c.type&&c.originalEvent&&c.originalEvent.changedTouches&&c.originalEvent.changedTouches[0]&&(c.pageX=c.originalEvent.changedTouches[0].pageX,c.pageY=c.originalEvent.changedTouches[0].pageY,c.target=document.elementFromPoint(c.originalEvent.changedTouches[0].pageX-window.pageXOffset,c.originalEvent.changedTouches[0].pageY-window.pageYOffset)),b.is_drag)a.vakata.dnd._trigger("stop",c);else if("touchend"===c.type&&c.target===b.target){var d=setTimeout(function(){a(c.target).click()},100);a(c.target).one("click",function(){d&&clearTimeout(d)})}return a.vakata.dnd._clean(),!1}}}(a),a.jstree.defaults.search={ajax:!1,fuzzy:!1,case_sensitive:!1,show_only_matches:!1,close_opened_onclear:!0,search_leaves_only:!1,search_callback:!1},a.jstree.plugins.search=function(c,d){this.bind=function(){d.bind.call(this),this._data.search.str="",this._data.search.dom=a(),this._data.search.res=[],this._data.search.opn=[],this._data.search.som=!1,this.element.on("before_open.jstree",a.proxy(function(b,c){var d,e,f,g=this._data.search.res,h=[],i=a();if(g&&g.length&&(this._data.search.dom=a(this.element[0].querySelectorAll("#"+a.map(g,function(b){return-1!=="0123456789".indexOf(b[0])?"\\3"+b[0]+" "+b.substr(1).replace(a.jstree.idregex,"\\$&"):b.replace(a.jstree.idregex,"\\$&")}).join(", #"))),this._data.search.dom.children(".jstree-anchor").addClass("jstree-search"),this._data.search.som&&this._data.search.res.length)){for(d=0,e=g.length;e>d;d++)h=h.concat(this.get_node(g[d]).parents);h=a.vakata.array_remove_item(a.vakata.array_unique(h),"#"),i=h.length?a(this.element[0].querySelectorAll("#"+a.map(h,function(b){return-1!=="0123456789".indexOf(b[0])?"\\3"+b[0]+" "+b.substr(1).replace(a.jstree.idregex,"\\$&"):b.replace(a.jstree.idregex,"\\$&")}).join(", #"))):a(),this.element.find(".jstree-node").hide().filter(".jstree-last").filter(function(){return this.nextSibling}).removeClass("jstree-last"),i=i.add(this._data.search.dom),i.parentsUntil(".jstree").addBack().show().filter(".jstree-children").each(function(){a(this).children(".jstree-node:visible").eq(-1).addClass("jstree-last")})}},this)).on("search.jstree",a.proxy(function(b,c){this._data.search.som&&c.nodes.length&&(this.element.find(".jstree-node").hide().filter(".jstree-last").filter(function(){return this.nextSibling}).removeClass("jstree-last"),c.nodes.parentsUntil(".jstree").addBack().show().filter(".jstree-children").each(function(){a(this).children(".jstree-node:visible").eq(-1).addClass("jstree-last")}))},this)).on("clear_search.jstree",a.proxy(function(a,b){this._data.search.som&&b.nodes.length&&this.element.find(".jstree-node").css("display","").filter(".jstree-last").filter(function(){return this.nextSibling}).removeClass("jstree-last")},this))},this.search=function(c,d,e){if(c===!1||""===a.trim(c.toString()))return this.clear_search();c=c.toString();var f=this.settings.search,g=f.ajax?f.ajax:!1,h=null,i=[],j=[],k,l;return this._data.search.res.length&&this.clear_search(),e===b&&(e=f.show_only_matches),d||g===!1?(this._data.search.str=c,this._data.search.dom=a(),this._data.search.res=[],this._data.search.opn=[],this._data.search.som=e,h=new a.vakata.search(c,!0,{caseSensitive:f.case_sensitive,fuzzy:f.fuzzy}),a.each(this._model.data,function(a,b){b.text&&(f.search_callback&&f.search_callback.call(this,c,b)||!f.search_callback&&h.search(b.text).isMatch)&&(!f.search_leaves_only||b.state.loaded&&0===b.children.length)&&(i.push(a),j=j.concat(b.parents))}),i.length&&(j=a.vakata.array_unique(j),this._search_open(j),this._data.search.dom=a(this.element[0].querySelectorAll("#"+a.map(i,function(b){return-1!=="0123456789".indexOf(b[0])?"\\3"+b[0]+" "+b.substr(1).replace(a.jstree.idregex,"\\$&"):b.replace(a.jstree.idregex,"\\$&")}).join(", #"))),this._data.search.res=i,this._data.search.dom.children(".jstree-anchor").addClass("jstree-search")),void this.trigger("search",{nodes:this._data.search.dom,str:c,res:this._data.search.res,show_only_matches:e})):a.isFunction(g)?g.call(this,c,a.proxy(function(b){b&&b.d&&(b=b.d),this._load_nodes(a.isArray(b)?a.vakata.array_unique(b):[],function(){this.search(c,!0,e)},!0)},this)):(g=a.extend({},g),g.data||(g.data={}),g.data.str=c,a.ajax(g).fail(a.proxy(function(){this._data.core.last_error={error:"ajax",plugin:"search",id:"search_01",reason:"Could not load search parents",data:JSON.stringify(g)},this.settings.core.error.call(this,this._data.core.last_error)},this)).done(a.proxy(function(b){b&&b.d&&(b=b.d),this._load_nodes(a.isArray(b)?a.vakata.array_unique(b):[],function(){this.search(c,!0,e)},!0)},this)))},this.clear_search=function(){this._data.search.dom.children(".jstree-anchor").removeClass("jstree-search"),this.settings.search.close_opened_onclear&&this.close_node(this._data.search.opn,0),this.trigger("clear_search",{nodes:this._data.search.dom,str:this._data.search.str,res:this._data.search.res}),this._data.search.str="",this._data.search.res=[],this._data.search.opn=[],this._data.search.dom=a()},this._search_open=function(b){var c=this;a.each(b.concat([]),function(d,e){if("#"===e)return!0;try{e=a("#"+e.replace(a.jstree.idregex,"\\$&"),c.element)}catch(f){}e&&e.length&&c.is_closed(e)&&(c._data.search.opn.push(e[0].id),c.open_node(e,function(){c._search_open(b)},0))})}},function(a){a.vakata.search=function(a,b,c){c=c||{},c.fuzzy!==!1&&(c.fuzzy=!0),a=c.caseSensitive?a:a.toLowerCase();var d=c.location||0,e=c.distance||100,f=c.threshold||.6,g=a.length,h,i,j,k;return g>32&&(c.fuzzy=!1),c.fuzzy&&(h=1<<g-1,i=function(){var b={},c=0;for(c=0;g>c;c++)b[a.charAt(c)]=0;for(c=0;g>c;c++)b[a.charAt(c)]|=1<<g-c-1;return b}(),j=function(a,b){var c=a/g,f=Math.abs(d-b);return e?c+f/e:f?1:c}),k=function(b){if(b=c.caseSensitive?b:b.toLowerCase(),a===b||-1!==b.indexOf(a))return{isMatch:!0,score:0};if(!c.fuzzy)return{isMatch:!1,score:1};var e,k,l=b.length,m=f,n=b.indexOf(a,d),o,p,q=g+l,r,s,t,u,v,w=1,x=[];for(-1!==n&&(m=Math.min(j(0,n),m),n=b.lastIndexOf(a,d+g),-1!==n&&(m=Math.min(j(0,n),m))),n=-1,e=0;g>e;e++){o=0,p=q;while(p>o)j(e,d+p)<=m?o=p:q=p,p=Math.floor((q-o)/2+o);for(q=p,s=Math.max(1,d-p+1),t=Math.min(d+p,l)+g,u=new Array(t+2),u[t+1]=(1<<e)-1,k=t;k>=s;k--)if(v=i[b.charAt(k-1)],u[k]=0===e?(u[k+1]<<1|1)&v:(u[k+1]<<1|1)&v|((r[k+1]|r[k])<<1|1)|r[k+1],u[k]&h&&(w=j(e,k-1),m>=w)){if(m=w,n=k-1,x.push(n),!(n>d))break;s=Math.max(1,2*d-n)}if(j(e+1,d)>m)break;r=u}return{isMatch:n>=0,score:w}},b===!0?{search:k}:k(b)}}(a),a.jstree.defaults.sort=function(a,b){return this.get_text(a)>this.get_text(b)?1:-1},a.jstree.plugins.sort=function(b,c){this.bind=function(){c.bind.call(this),this.element.on("model.jstree",a.proxy(function(a,b){this.sort(b.parent,!0)},this)).on("rename_node.jstree create_node.jstree",a.proxy(function(a,b){this.sort(b.parent||b.node.parent,!1),this.redraw_node(b.parent||b.node.parent,!0)},this)).on("move_node.jstree copy_node.jstree",a.proxy(function(a,b){this.sort(b.parent,!1),this.redraw_node(b.parent,!0)},this))},this.sort=function(b,c){var d,e;if(b=this.get_node(b),b&&b.children&&b.children.length&&(b.children.sort(a.proxy(this.settings.sort,this)),c))for(d=0,e=b.children_d.length;e>d;d++)this.sort(b.children_d[d],!1)}};var q=!1;a.jstree.defaults.state={key:"jstree",events:"changed.jstree open_node.jstree close_node.jstree check_node.jstree uncheck_node.jstree",ttl:!1,filter:!1},a.jstree.plugins.state=function(b,c){this.bind=function(){c.bind.call(this);var b=a.proxy(function(){this.element.on(this.settings.state.events,a.proxy(function(){q&&clearTimeout(q),q=setTimeout(a.proxy(function(){this.save_state()},this),100)},this)),this.trigger("state_ready")},this);this.element.on("ready.jstree",a.proxy(function(a,c){this.element.one("restore_state.jstree",b),this.restore_state()||b()},this))},this.save_state=function(){var b={state:this.get_state(),ttl:this.settings.state.ttl,sec:+new Date};a.vakata.storage.set(this.settings.state.key,JSON.stringify(b))},this.restore_state=function(){var b=a.vakata.storage.get(this.settings.state.key);if(b)try{b=JSON.parse(b)}catch(c){return!1}return b&&b.ttl&&b.sec&&+new Date-b.sec>b.ttl?!1:(b&&b.state&&(b=b.state),b&&a.isFunction(this.settings.state.filter)&&(b=this.settings.state.filter.call(this,b)),b?(this.element.one("set_state.jstree",function(c,d){d.instance.trigger("restore_state",{state:a.extend(!0,{},b)})}),this.set_state(b),!0):!1)},this.clear_state=function(){return a.vakata.storage.del(this.settings.state.key)}},function(a,b){a.vakata.storage={set:function(a,b){return window.localStorage.setItem(a,b)},get:function(a){return window.localStorage.getItem(a)},del:function(a){return window.localStorage.removeItem(a)}}}(a),a.jstree.defaults.types={"#":{},"default":{}},a.jstree.plugins.types=function(c,d){this.init=function(a,c){var e,f;if(c&&c.types&&c.types["default"])for(e in c.types)if("default"!==e&&"#"!==e&&c.types.hasOwnProperty(e))for(f in c.types["default"])c.types["default"].hasOwnProperty(f)&&c.types[e][f]===b&&(c.types[e][f]=c.types["default"][f]);d.init.call(this,a,c),this._model.data["#"].type="#"},this.refresh=function(a,b){d.refresh.call(this,a,b),this._model.data["#"].type="#"},this.bind=function(){this.element.on("model.jstree",a.proxy(function(a,c){var d=this._model.data,e=c.nodes,f=this.settings.types,g,h,i="default";for(g=0,h=e.length;h>g;g++)i="default",d[e[g]].original&&d[e[g]].original.type&&f[d[e[g]].original.type]&&(i=d[e[g]].original.type),d[e[g]].data&&d[e[g]].data.jstree&&d[e[g]].data.jstree.type&&f[d[e[g]].data.jstree.type]&&(i=d[e[g]].data.jstree.type),d[e[g]].type=i,d[e[g]].icon===!0&&f[i].icon!==b&&(d[e[g]].icon=f[i].icon);d["#"].type="#"},this)),d.bind.call(this)},this.get_json=function(b,c,e){var f,g,h=this._model.data,i=c?a.extend(!0,{},c,{no_id:!1}):{},j=d.get_json.call(this,b,i,e);if(j===!1)return!1;if(a.isArray(j))for(f=0,g=j.length;g>f;f++)j[f].type=j[f].id&&h[j[f].id]&&h[j[f].id].type?h[j[f].id].type:"default",c&&c.no_id&&(delete j[f].id,j[f].li_attr&&j[f].li_attr.id&&delete j[f].li_attr.id,j[f].a_attr&&j[f].a_attr.id&&delete j[f].a_attr.id);else j.type=j.id&&h[j.id]&&h[j.id].type?h[j.id].type:"default",c&&c.no_id&&(j=this._delete_ids(j));return j},this._delete_ids=function(b){if(a.isArray(b)){for(var c=0,d=b.length;d>c;c++)b[c]=this._delete_ids(b[c]);return b}return delete b.id,b.li_attr&&b.li_attr.id&&delete b.li_attr.id,b.a_attr&&b.a_attr.id&&delete b.a_attr.id,b.children&&a.isArray(b.children)&&(b.children=this._delete_ids(b.children)),b},this.check=function(c,e,f,g,h){if(d.check.call(this,c,e,f,g,h)===!1)return!1;e=e&&e.id?e:this.get_node(e),f=f&&f.id?f:this.get_node(f);var i=e&&e.id?a.jstree.reference(e.id):null,j,k,l,m;switch(i=i&&i._model&&i._model.data?i._model.data:null,c){case"create_node":case"move_node":case"copy_node":if("move_node"!==c||-1===a.inArray(e.id,f.children)){if(j=this.get_rules(f),j.max_children!==b&&-1!==j.max_children&&j.max_children===f.children.length)return this._data.core.last_error={error:"check",plugin:"types",id:"types_01",reason:"max_children prevents function: "+c,data:JSON.stringify({chk:c,pos:g,obj:e&&e.id?e.id:!1,par:f&&f.id?f.id:!1})},!1;if(j.valid_children!==b&&-1!==j.valid_children&&-1===a.inArray(e.type||"default",j.valid_children))return this._data.core.last_error={error:"check",plugin:"types",id:"types_02",reason:"valid_children prevents function: "+c,data:JSON.stringify({chk:c,pos:g,obj:e&&e.id?e.id:!1,par:f&&f.id?f.id:!1})},!1;if(i&&e.children_d&&e.parents){for(k=0,l=0,m=e.children_d.length;m>l;l++)k=Math.max(k,i[e.children_d[l]].parents.length);k=k-e.parents.length+1}(0>=k||k===b)&&(k=1);do{if(j.max_depth!==b&&-1!==j.max_depth&&j.max_depth<k)return this._data.core.last_error={error:"check",plugin:"types",id:"types_03",reason:"max_depth prevents function: "+c,data:JSON.stringify({chk:c,pos:g,obj:e&&e.id?e.id:!1,par:f&&f.id?f.id:!1})},!1;f=this.get_node(f.parent),j=this.get_rules(f),k++}while(f)}}return!0},this.get_rules=function(a){if(a=this.get_node(a),!a)return!1;var c=this.get_type(a,!0);return c.max_depth===b&&(c.max_depth=-1),c.max_children===b&&(c.max_children=-1),c.valid_children===b&&(c.valid_children=-1),c},this.get_type=function(b,c){return b=this.get_node(b),b?c?a.extend({type:b.type},this.settings.types[b.type]):b.type:!1},this.set_type=function(c,d){var e,f,g,h,i;if(a.isArray(c)){for(c=c.slice(),f=0,g=c.length;g>f;f++)this.set_type(c[f],d);return!0}return e=this.settings.types,c=this.get_node(c),e[d]&&c?(h=c.type,i=this.get_icon(c),c.type=d,(i===!0||e[h]&&e[h].icon!==b&&i===e[h].icon)&&this.set_icon(c,e[d].icon!==b?e[d].icon:!0),!0):!1}},a.jstree.defaults.unique={case_sensitive:!1,duplicate:function(a,b){return a+" ("+b+")"}},a.jstree.plugins.unique=function(c,d){this.check=function(b,c,e,f,g){if(d.check.call(this,b,c,e,f,g)===!1)return!1;if(c=c&&c.id?c:this.get_node(c),e=e&&e.id?e:this.get_node(e),!e||!e.children)return!0;var h="rename_node"===b?f:c.text,i=[],j=this.settings.unique.case_sensitive,k=this._model.data,l,m;for(l=0,m=e.children.length;m>l;l++)i.push(j?k[e.children[l]].text:k[e.children[l]].text.toLowerCase());switch(j||(h=h.toLowerCase()),b){case"delete_node":return!0;case"rename_node":return l=-1===a.inArray(h,i)||c.text&&c.text[j?"toString":"toLowerCase"]()===h,l||(this._data.core.last_error={error:"check",plugin:"unique",id:"unique_01",reason:"Child with name "+h+" already exists. Preventing: "+b,data:JSON.stringify({chk:b,pos:f,obj:c&&c.id?c.id:!1,par:e&&e.id?e.id:!1})}),l;case"create_node":return l=-1===a.inArray(h,i),l||(this._data.core.last_error={error:"check",plugin:"unique",id:"unique_04",reason:"Child with name "+h+" already exists. Preventing: "+b,data:JSON.stringify({chk:b,pos:f,obj:c&&c.id?c.id:!1,par:e&&e.id?e.id:!1})}),l;case"copy_node":return l=-1===a.inArray(h,i),l||(this._data.core.last_error={error:"check",plugin:"unique",id:"unique_02",reason:"Child with name "+h+" already exists. Preventing: "+b,data:JSON.stringify({chk:b,pos:f,obj:c&&c.id?c.id:!1,par:e&&e.id?e.id:!1})}),l;case"move_node":return l=c.parent===e.id||-1===a.inArray(h,i),l||(this._data.core.last_error={error:"check",plugin:"unique",id:"unique_03",reason:"Child with name "+h+" already exists. Preventing: "+b,data:JSON.stringify({chk:b,pos:f,obj:c&&c.id?c.id:!1,par:e&&e.id?e.id:!1})}),l}return!0},this.create_node=function(c,e,f,g,h){if(!e||e.text===b){if(null===c&&(c="#"),c=this.get_node(c),!c)return d.create_node.call(this,c,e,f,g,h);if(f=f===b?"last":f,!f.toString().match(/^(before|after)$/)&&!h&&!this.is_loaded(c))return d.create_node.call(this,c,e,f,g,h);e||(e={});var i,j,k,l,m,n=this._model.data,o=this.settings.unique.case_sensitive,p=this.settings.unique.duplicate;for(j=i=this.get_string("New node"),k=[],l=0,m=c.children.length;m>l;l++)k.push(o?n[c.children[l]].text:n[c.children[l]].text.toLowerCase());l=1;while(-1!==a.inArray(o?j:j.toLowerCase(),k))j=p.call(this,i,++l).toString();e.text=j}return d.create_node.call(this,c,e,f,g,h)}};var r=document.createElement("DIV");r.setAttribute("unselectable","on"),r.setAttribute("role","presentation"),r.className="jstree-wholerow",r.innerHTML="&#160;",a.jstree.plugins.wholerow=function(b,c){this.bind=function(){c.bind.call(this),this.element.on("ready.jstree set_state.jstree",a.proxy(function(){this.hide_dots()},this)).on("init.jstree loading.jstree ready.jstree",a.proxy(function(){this.get_container_ul().addClass("jstree-wholerow-ul")},this)).on("deselect_all.jstree",a.proxy(function(a,b){this.element.find(".jstree-wholerow-clicked").removeClass("jstree-wholerow-clicked")},this)).on("changed.jstree",a.proxy(function(a,b){this.element.find(".jstree-wholerow-clicked").removeClass("jstree-wholerow-clicked");var c=!1,d,e;for(d=0,e=b.selected.length;e>d;d++)c=this.get_node(b.selected[d],!0),c&&c.length&&c.children(".jstree-wholerow").addClass("jstree-wholerow-clicked")},this)).on("open_node.jstree",a.proxy(function(a,b){this.get_node(b.node,!0).find(".jstree-clicked").parent().children(".jstree-wholerow").addClass("jstree-wholerow-clicked")},this)).on("hover_node.jstree dehover_node.jstree",a.proxy(function(a,b){"hover_node"===a.type&&this.is_disabled(b.node)||this.get_node(b.node,!0).children(".jstree-wholerow")["hover_node"===a.type?"addClass":"removeClass"]("jstree-wholerow-hovered")},this)).on("contextmenu.jstree",".jstree-wholerow",a.proxy(function(b){b.preventDefault();var c=a.Event("contextmenu",{metaKey:b.metaKey,ctrlKey:b.ctrlKey,altKey:b.altKey,shiftKey:b.shiftKey,pageX:b.pageX,pageY:b.pageY});a(b.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(c)},this)).on("click.jstree",".jstree-wholerow",function(b){b.stopImmediatePropagation();var c=a.Event("click",{metaKey:b.metaKey,ctrlKey:b.ctrlKey,altKey:b.altKey,shiftKey:b.shiftKey});a(b.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(c).focus()}).on("click.jstree",".jstree-leaf > .jstree-ocl",a.proxy(function(b){b.stopImmediatePropagation();var c=a.Event("click",{metaKey:b.metaKey,ctrlKey:b.ctrlKey,altKey:b.altKey,shiftKey:b.shiftKey});a(b.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(c).focus()},this)).on("mouseover.jstree",".jstree-wholerow, .jstree-icon",a.proxy(function(a){return a.stopImmediatePropagation(),this.is_disabled(a.currentTarget)||this.hover_node(a.currentTarget),!1},this)).on("mouseleave.jstree",".jstree-node",a.proxy(function(a){this.dehover_node(a.currentTarget)},this))},this.teardown=function(){this.settings.wholerow&&this.element.find(".jstree-wholerow").remove(),c.teardown.call(this)},this.redraw_node=function(b,d,e,f){if(b=c.redraw_node.apply(this,arguments)){var g=r.cloneNode(!0);-1!==a.inArray(b.id,this._data.core.selected)&&(g.className+=" jstree-wholerow-clicked"),this._data.core.focused&&this._data.core.focused===b.id&&(g.className+=" jstree-wholerow-hovered"),b.insertBefore(g,b.childNodes[0])}return b}},function(a){if(document.registerElement&&Object&&Object.create){var b=Object.create(HTMLElement.prototype);b.createdCallback=function(){var b={core:{},plugins:[]},c;for(c in a.jstree.plugins)a.jstree.plugins.hasOwnProperty(c)&&this.attributes[c]&&(b.plugins.push(c),this.getAttribute(c)&&JSON.parse(this.getAttribute(c))&&(b[c]=JSON.parse(this.getAttribute(c))));for(c in a.jstree.defaults.core)a.jstree.defaults.core.hasOwnProperty(c)&&this.attributes[c]&&(b.core[c]=JSON.parse(this.getAttribute(c))||this.getAttribute(c));jQuery(this).jstree(b)};try{document.registerElement("vakata-jstree",{prototype:b})}catch(c){}}}(jQuery)}}); \ No newline at end of file diff --git a/assets/js/plugins/justified-gallery/README.md b/assets/js/plugins/justified-gallery/README.md deleted file mode 100644 index fb6c2927..00000000 --- a/assets/js/plugins/justified-gallery/README.md +++ /dev/null @@ -1,14 +0,0 @@ -<div align="center"> - <a href="http://miromannino.com/projects/justified-gallery/" target="_blank"> - <img alt="image" src="https://raw.github.com/miromannino/Justified-Gallery/gh-imgs/jgcover.png" /> - </a> -</div> - -This is a JQuery plugin that allows you to create an high quality justified gallery of images. - -A common problem, for people who create sites, is to create an elegant image gallery that manages -the various sizes of images. Flickr and Google+ manage this situation in an excellent way, -the purpose of this plugin is to give you the power of this solutions, with a new fast algorithm. - -You can read the entire description of this project -in the <a href="http://miromannino.com/projects/justified-gallery/">official project page</a>. diff --git a/assets/js/plugins/justified-gallery/jquery.justifiedgallery.css b/assets/js/plugins/justified-gallery/jquery.justifiedgallery.css deleted file mode 100644 index 5d544c45..00000000 --- a/assets/js/plugins/justified-gallery/jquery.justifiedgallery.css +++ /dev/null @@ -1,73 +0,0 @@ -/* -Justified Gallery -Version: 2.1 -Author: Miro Mannino -Author URI: http://miromannino.it - -Copyright 2012 Miro Mannino (miro.mannino@gmail.com) - -This file is part of Justified Gallery. - -This work is licensed under the Creative Commons Attribution 3.0 Unported License. - -To view a copy of this license, visit http://creativecommons.org/licenses/by/3.0/ -or send a letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA. -*/ - -html { overflow-y: scroll; } /*to prevent the loop when the scrollbar appear and disappear*/ - -.justifiedGallery { width: 100%; margin-bottom: 10px; } -.justifiedGallery .jg-image { - position: absolute; - display: inline-block; - vertical-align: top; - margin-left: 0px; -} -.justifiedGallery .jg-image img { - border: none; - margin: 0; - padding: 0; - display: none; -} -.justifiedGallery .jg-image a { text-decoration: none; } -.justifiedGallery .jg-image-label { - white-space: normal; - font: normal 12px arial; - background: #000; - color: #fff; - position: absolute; - left: 0; - right: 0; - padding: 5px 5px 10px 8px; - text-align: left; - opacity: 0; - filter:alpha(opacity=0); /* IE8 or Earlier */ -} -.justifiedGallery .jg-loading-img{ - margin: auto; - width: 50px; - height: 50px; - background:url(loading.gif) no-repeat center center; -} -.justifiedGallery .jg-loading{ - margin: auto; - width: 50px; - height: 50px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.justifiedGallery .jg-row { - position: relative; - white-space: nowrap; - overflow:hidden; - margin-bottom: 4px; -} - -.justifiedGallery .jg-error { - font-size: 12px; - border: 1px solid red; - background-color: #faa; - margin: 10px 0px 10px 0px; - padding: 5px 0px 5px 5px; -} \ No newline at end of file diff --git a/assets/js/plugins/justified-gallery/jquery.justifiedgallery.js b/assets/js/plugins/justified-gallery/jquery.justifiedgallery.js deleted file mode 100644 index df45caeb..00000000 --- a/assets/js/plugins/justified-gallery/jquery.justifiedgallery.js +++ /dev/null @@ -1,258 +0,0 @@ -/* -Justified Gallery -Version: 2.1 -Author: Miro Mannino -Author URI: http://miromannino.it - -Copyright 2012 Miro Mannino (miro.mannino@gmail.com) - -This file is part of Justified Gallery. - -This work is licensed under the Creative Commons Attribution 3.0 Unported License. - -To view a copy of this license, visit http://creativecommons.org/licenses/by/3.0/ -or send a letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA. -*/ - -(function($){ - - $.fn.justifiedGallery = function(options){ - - //TODO fare impostazione 'rel' che sostituisce tutti i link con il rel specificato - - var settings = $.extend( { - 'sizeRangeSuffixes' : {'lt100':'_t', 'lt240':'_m', 'lt320':'_n', 'lt500':'', 'lt640':'_z', 'lt1024':'_b'}, - 'rowHeight' : 120, - 'margins' : 1, - 'justifyLastRow' : true, - 'fixedHeight' : false, - 'captions' : true, - 'rel' : null, //rewrite the rel of each analyzed links - 'target' : null, //rewrite the target of all links - 'extension' : /\.[^.]+$/, - 'refreshTime' : 500, - 'onComplete' : null - }, options); - - function getErrorHtml(message, classOfError){ - return "<div class=\"jg-error " + classOfError + "\"style=\"\">" + message + "</div>"; - } - - return this.each(function(index, cont){ - $(cont).addClass("justifiedGallery"); - - var loaded = 0; - var images = new Array($(cont).find("img").length); - - if(images.length == 0) return; - - $(cont).append("<div class=\"jg-loading\"><div class=\"jg-loading-img\"></div></div>"); - - $(cont).find("a").each(function(index, entry){ - var imgEntry = $(entry).find("img"); - - images[index] = new Array(5); - images[index]["src"] = (typeof $(imgEntry).data("safe-src") != 'undefined') ? $(imgEntry).data("safe-src") : $(imgEntry).attr("src"); - images[index]["alt"] = $(imgEntry).attr("alt"); - images[index]["href"] = $(entry).attr("href"); - images[index]["title"] = $(entry).attr("title"); - images[index]["rel"] = (settings.rel != null) ? settings.rel : $(entry).attr("rel"); - images[index]["target"] = (settings.target != null) ? settings.target : $(entry).attr("target"); - images[index]["extension"] = images[index]["src"].match(settings.extension)[0]; - - $(entry).remove(); //remove the image, we have its data - - var img = new Image(); - - $(img).load(function() { - if(images[index]["height"] != settings.rowHeight) - images[index]["width"] = Math.ceil(this.width / (this.height / settings.rowHeight)); - else - images[index]["width"] = this.width; - images[index]["height"] = settings.rowHeight; - - var usedSizeRangeRegExp = new RegExp("(" + settings.sizeRangeSuffixes.lt100 + "|" - + settings.sizeRangeSuffixes.lt240 + "|" - + settings.sizeRangeSuffixes.lt320 + "|" - + settings.sizeRangeSuffixes.lt500 + "|" - + settings.sizeRangeSuffixes.lt640 + "|" - + settings.sizeRangeSuffixes.lt1024 + ")$"); - - images[index]["src"] = images[index]["src"].replace(settings.extension, "").replace(usedSizeRangeRegExp, ""); - - if(++loaded == images.length) startProcess(cont, images, settings); - }); - - $(img).error(function() { - $(cont).prepend(getErrorHtml("The image can't be loaded: \"" + images[index]["src"] +"\"", "jg-usedPrefixImageNotFound")); - images[index] = null; - if(++loaded == images.length) startProcess(cont, images, settings); - }); - - $(img).attr('src', images[index]["src"]); - - }); - }); - - function startProcess(cont, images, settings){ - //FadeOut the loading image and FadeIn the images after their loading - $(cont).find(".jg-loading").fadeOut(500, function(){ - $(this).remove(); //remove the loading image - processesImages($, cont, images, 0, settings); - if($.isFunction(settings.onComplete)) settings.onComplete.call(this, cont); - }); - } - - function buildImage(image, suffix, nw, nh, l, minRowHeight, settings){ - var ris; - ris = "<div class=\"jg-image\" style=\"left:" + l + "px\">"; - ris += " <a href=\"" + image["href"] + "\" "; - - if (typeof image["rel"] != 'undefined') ris += "rel=\"" + image["rel"] + "\""; - if (typeof image["target"] != 'undefined') ris += "target=\"" + image["target"] + "\""; - - ris += "title=\"" + image["title"] + "\">"; - ris += " <img alt=\"" + image["alt"] + "\" src=\"" + image["src"] + suffix + image.extension + "\""; - ris += "style=\"width: " + nw + "px; height: " + nh + "px;\">"; - - if(settings.captions) - ris += " <div style=\"bottom:" + (nh - minRowHeight) + "px;\" class=\"jg-image-label\">" + image["alt"] + "</div>"; - - ris += " </a></div>"; - return ris; - } - - function buildContRow(row, images, extraW, settings){ - var j, l = 0; - var minRowHeight; - for(var j = 0; j < row.length; j++){ - row[j]["nh"] = Math.ceil(images[row[j]["indx"]]["height"] * - ((images[row[j]["indx"]]["width"] + extraW) / - images[row[j]["indx"]]["width"])); - - row[j]["nw"] = images[row[j]["indx"]]["width"] + extraW; - - row[j]["suffix"] = getSuffix(row[j]["nw"], row[j]["nh"], settings); - - row[j]["l"] = l; - - if(!settings.fixedHeight){ - if(j == 0) - minRowHeight = row[j]["nh"]; - else - if(minRowHeight > row[j]["nh"]) minRowHeight = row[j]["nh"]; - } - - l += row[j]["nw"] + settings.margins; - } - - if(settings.fixedHeight) minRowHeight = settings.rowHeight; - - var rowCont = ""; - for(var j = 0; j < row.length; j++){ - rowCont += buildImage(images[row[j]["indx"]], row[j]["suffix"], - row[j]["nw"], row[j]["nh"], row[j]["l"], minRowHeight, settings); - } - - return "<div class=\"jg-row\" style=\"height: " + minRowHeight + "px; margin-bottom:" + settings.margins + "px;\">" + rowCont + "</div>"; - } - - function getSuffix(nw, nh, settings){ - var n; - if(nw > nh) n = nw; else n = nh; - if(n <= 100){ - return settings.sizeRangeSuffixes.lt100; //thumbnail (longest side:100) - }else if(n <= 240){ - return settings.sizeRangeSuffixes.lt240; //small (longest side:240) - }else if(n <= 320){ - return settings.sizeRangeSuffixes.lt320; //small (longest side:320) - }else if(n <= 500){ - return settings.sizeRangeSuffixes.lt500; //small (longest side:320) - }else if(n <= 640){ - return settings.sizeRangeSuffixes.lt640; //medium (longest side:640) - }else{ - return settings.sizeRangeSuffixes.lt1024; //large (longest side:1024) - } - } - - function processesImages($, cont, images, lastRowWidth, settings){ - var row = new Array(); - var row_i, i; - var partialRowWidth = 0; - var extraW; - var rowWidth = $(cont).width(); - - for(i = 0, row_i = 0; i < images.length; i++){ - if(images[i] == null) continue; - if(partialRowWidth + images[i]["width"] + settings.margins <= rowWidth){ - //we can add the image - partialRowWidth += images[i]["width"] + settings.margins; - row[row_i] = new Array(5); - row[row_i]["indx"] = i; - row_i++; - }else{ - //the row is full - extraW = Math.ceil((rowWidth - partialRowWidth + 1) / row.length); - $(cont).append(buildContRow(row, images, extraW, settings)); - - row = new Array(); - row[0] = new Array(5); - row[0]["indx"] = i; - row_i = 1; - partialRowWidth = images[i]["width"] + settings.margins; - } - } - - //last row---------------------- - //now we have all the images index loaded in the row arra - if(settings.justifyLastRow){ - extraW = Math.ceil((rowWidth - partialRowWidth + 1) / row.length); - }else{ - extraW = 0; - } - $(cont).append(buildContRow(row, images, extraW, settings)); - //--------------------------- - - //Captions--------------------- - if(settings.captions){ - $(cont).find(".jg-image").mouseenter(function(sender){ - $(sender.currentTarget).find(".jg-image-label").stop(); - $(sender.currentTarget).find(".jg-image-label").fadeTo(500, 0.7); - }); - $(cont).find(".jg-image").mouseleave(function(sender){ - $(sender.currentTarget).find(".jg-image-label").stop(); - $(sender.currentTarget).find(".jg-image-label").fadeTo(500, 0); - }); - } - - $(cont).find(".jg-resizedImageNotFound").remove(); - - //fade in the images that we have changed and need to be reloaded - $(cont).find(".jg-image img").load(function(){ - $(this).fadeTo(500, 1); - }).error(function(){ - $(cont).prepend(getErrorHtml("The image can't be loaded: \"" + $(this).attr("src") +"\"", "jg-resizedImageNotFound")); - }).each(function(){ - if(this.complete) $(this).load(); - }); - - checkWidth($, cont, images, rowWidth, settings); - - } - - function checkWidth($, cont, images, lastRowWidth, settings){ - var id = setInterval(function(){ - - if(lastRowWidth != $(cont).width()){ - $(cont).find(".jg-row").remove(); - clearInterval(id); - processesImages($, cont, images, lastRowWidth, settings); - return; - } - - }, settings.refreshTime); - } - - } - -})(jQuery); \ No newline at end of file diff --git a/assets/js/plugins/justified-gallery/jquery.justifiedgallery.min.css b/assets/js/plugins/justified-gallery/jquery.justifiedgallery.min.css deleted file mode 100644 index b32aca12..00000000 --- a/assets/js/plugins/justified-gallery/jquery.justifiedgallery.min.css +++ /dev/null @@ -1,17 +0,0 @@ -/* -Justified Gallery -Version: 2.1 -Author: Miro Mannino -Author URI: http://miromannino.it - -Copyright 2012 Miro Mannino (miro.mannino@gmail.com) - -This file is part of Justified Gallery. - -This work is licensed under the Creative Commons Attribution 3.0 Unported License. - -To view a copy of this license, visit http://creativecommons.org/licenses/by/3.0/ -or send a letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA. -*/ - -html{overflow-y:scroll}.justifiedGallery{width:100%;margin-bottom:10px}.justifiedGallery .jg-image{position:absolute;display:inline-block;vertical-align:top;margin-left:0}.justifiedGallery .jg-image img{border:none;margin:0;padding:0;display:none}.justifiedGallery .jg-image a{text-decoration:none}.justifiedGallery .jg-image-label{white-space:normal;font:normal 12px arial;background:#000;color:#fff;position:absolute;left:0;right:0;padding:5px 5px 10px 8px;text-align:left;opacity:0;filter:alpha(opacity=0)}.justifiedGallery .jg-loading-img{margin:auto;width:50px;height:50px;background:url(../img/loading.gif) no-repeat center center}.justifiedGallery .jg-loading{margin:auto;width:50px;height:50px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.justifiedGallery .jg-row{position:relative;white-space:nowrap;overflow:hidden;margin-bottom:4px}.justifiedGallery .jg-error{font-size:12px;border:1px solid red;background-color:#faa;margin:10px 0;padding:5px 0 5px 5px} \ No newline at end of file diff --git a/assets/js/plugins/justified-gallery/jquery.justifiedgallery.min.js b/assets/js/plugins/justified-gallery/jquery.justifiedgallery.min.js deleted file mode 100644 index 8d2c24a4..00000000 --- a/assets/js/plugins/justified-gallery/jquery.justifiedgallery.min.js +++ /dev/null @@ -1,24 +0,0 @@ -/* -Justified Gallery -Version: 2.1 -Author: Miro Mannino -Author URI: http://miromannino.it - -Copyright 2012 Miro Mannino (miro.mannino@gmail.com) - -This file is part of Justified Gallery. - -This work is licensed under the Creative Commons Attribution 3.0 Unported License. - -To view a copy of this license, visit http://creativecommons.org/licenses/by/3.0/ -or send a letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA. -*/ - -(function(d){d.fn.justifiedGallery=function(r){function n(b,i){return'<div class="jg-error '+i+'"style="">'+b+"</div>"}function o(b,i,j){d(b).find(".jg-loading").fadeOut(500,function(){d(this).remove();p(d,b,i,0,j);d.isFunction(j.onComplete)&&j.onComplete.call(this,b)})}function q(b,i,d,c){var a,h=0,g;for(a=0;a<b.length;a++){b[a].nh=Math.ceil(i[b[a].indx].height*((i[b[a].indx].width+d)/i[b[a].indx].width));b[a].nw=i[b[a].indx].width+d;var e=b[a],f=b[a].nw,m=b[a].nh,l=void 0,l=f>m?f:m;e.suffix=100>= -l?c.sizeRangeSuffixes.lt100:240>=l?c.sizeRangeSuffixes.lt240:320>=l?c.sizeRangeSuffixes.lt320:500>=l?c.sizeRangeSuffixes.lt500:640>=l?c.sizeRangeSuffixes.lt640:c.sizeRangeSuffixes.lt1024;b[a].l=h;c.fixedHeight||(0==a?g=b[a].nh:g>b[a].nh&&(g=b[a].nh));h+=b[a].nw+c.margins}c.fixedHeight&&(g=c.rowHeight);d="";for(a=0;a<b.length;a++)h=i[b[a].indx],e=b[a].nh,f=void 0,f='<div class="jg-image" style="left:'+b[a].l+'px">',f+=' <a href="'+h.href+'" ',"undefined"!=typeof h.rel&&(f+='rel="'+h.rel+'"'),"undefined"!= -typeof h.target&&(f+='target="'+h.target+'"'),f+='title="'+h.title+'">',f+=' <img alt="'+h.alt+'" src="'+h.src+b[a].suffix+h.extension+'"',f+='style="width: '+b[a].nw+"px; height: "+e+'px;">',c.captions&&(f+=' <div style="bottom:'+(e-g)+'px;" class="jg-image-label">'+h.alt+"</div>"),f+=" </a></div>",d+=f;return'<div class="jg-row" style="height: '+g+"px; margin-bottom:"+c.margins+'px;">'+d+"</div>"}function p(b,d,e,c,a){var c=[],h,g,k=0,f=b(d).width();for(h=g=0;g<e.length;g++)null!=e[g]&&(k+e[g].width+ -a.margins<=f?(k+=e[g].width+a.margins,c[h]=Array(5),c[h].indx=g,h++):(h=Math.ceil((f-k+1)/c.length),b(d).append(q(c,e,h,a)),c=[],c[0]=Array(5),c[0].indx=g,h=1,k=e[g].width+a.margins));h=a.justifyLastRow?Math.ceil((f-k+1)/c.length):0;b(d).append(q(c,e,h,a));a.captions&&(b(d).find(".jg-image").mouseenter(function(a){b(a.currentTarget).find(".jg-image-label").stop();b(a.currentTarget).find(".jg-image-label").fadeTo(500,0.7)}),b(d).find(".jg-image").mouseleave(function(a){b(a.currentTarget).find(".jg-image-label").stop(); -b(a.currentTarget).find(".jg-image-label").fadeTo(500,0)}));b(d).find(".jg-resizedImageNotFound").remove();b(d).find(".jg-image img").load(function(){b(this).fadeTo(500,1)}).error(function(){b(d).prepend(n("The image can't be loaded: \""+b(this).attr("src")+'"',"jg-resizedImageNotFound"))}).each(function(){this.complete&&b(this).load()});var m=setInterval(function(){if(f!=b(d).width()){b(d).find(".jg-row").remove();clearInterval(m);p(b,d,e,f,a)}},a.refreshTime)}var e=d.extend({sizeRangeSuffixes:{lt100:"_t", -lt240:"_m",lt320:"_n",lt500:"",lt640:"_z",lt1024:"_b"},rowHeight:120,margins:1,justifyLastRow:!0,fixedHeight:!1,captions:!0,rel:null,target:null,extension:/\.[^.]+$/,refreshTime:500,onComplete:null},r);return this.each(function(b,i){d(i).addClass("justifiedGallery");var j=0,c=Array(d(i).find("img").length);0!=c.length&&(d(i).append('<div class="jg-loading"><div class="jg-loading-img"></div></div>'),d(i).find("a").each(function(a,b){var g=d(b).find("img");c[a]=Array(5);c[a].src="undefined"!=typeof d(g).data("safe-src")? -d(g).data("safe-src"):d(g).attr("src");c[a].alt=d(g).attr("alt");c[a].href=d(b).attr("href");c[a].title=d(b).attr("title");c[a].rel=null!=e.rel?e.rel:d(b).attr("rel");c[a].target=null!=e.target?e.target:d(b).attr("target");c[a].extension=c[a].src.match(e.extension)[0];d(b).remove();g=new Image;d(g).load(function(){c[a].width=c[a].height!=e.rowHeight?Math.ceil(this.width/(this.height/e.rowHeight)):this.width;c[a].height=e.rowHeight;var b=RegExp("("+e.sizeRangeSuffixes.lt100+"|"+e.sizeRangeSuffixes.lt240+ -"|"+e.sizeRangeSuffixes.lt320+"|"+e.sizeRangeSuffixes.lt500+"|"+e.sizeRangeSuffixes.lt640+"|"+e.sizeRangeSuffixes.lt1024+")$");c[a].src=c[a].src.replace(e.extension,"").replace(b,"");++j==c.length&&o(i,c,e)});d(g).error(function(){d(i).prepend(n("The image can't be loaded: \""+c[a].src+'"',"jg-usedPrefixImageNotFound"));c[a]=null;++j==c.length&&o(i,c,e)});d(g).attr("src",c[a].src)}))})}})(jQuery); diff --git a/assets/js/plugins/justified-gallery/loading.gif b/assets/js/plugins/justified-gallery/loading.gif deleted file mode 100644 index 3e183920..00000000 Binary files a/assets/js/plugins/justified-gallery/loading.gif and /dev/null differ diff --git a/assets/js/plugins/jvectormap/jquery-jvectormap-1.2.2.min.js b/assets/js/plugins/jvectormap/jquery-jvectormap-1.2.2.min.js deleted file mode 100644 index ea54476f..00000000 --- a/assets/js/plugins/jvectormap/jquery-jvectormap-1.2.2.min.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * jVectorMap version 1.2.2 - * - * Copyright 2011-2013, Kirill Lebedev - * Licensed under the MIT license. - * - */(function(e){var t={set:{colors:1,values:1,backgroundColor:1,scaleColors:1,normalizeFunction:1,focus:1},get:{selectedRegions:1,selectedMarkers:1,mapObject:1,regionName:1}};e.fn.vectorMap=function(e){var n,r,i,n=this.children(".jvectormap-container").data("mapObject");if(e==="addMap")jvm.WorldMap.maps[arguments[1]]=arguments[2];else{if(!(e!=="set"&&e!=="get"||!t[e][arguments[1]]))return r=arguments[1].charAt(0).toUpperCase()+arguments[1].substr(1),n[e+r].apply(n,Array.prototype.slice.call(arguments,2));e=e||{},e.container=this,n=new jvm.WorldMap(e)}return this}})(jQuery),function(e){function r(t){var n=t||window.event,r=[].slice.call(arguments,1),i=0,s=!0,o=0,u=0;return t=e.event.fix(n),t.type="mousewheel",n.wheelDelta&&(i=n.wheelDelta/120),n.detail&&(i=-n.detail/3),u=i,n.axis!==undefined&&n.axis===n.HORIZONTAL_AXIS&&(u=0,o=-1*i),n.wheelDeltaY!==undefined&&(u=n.wheelDeltaY/120),n.wheelDeltaX!==undefined&&(o=-1*n.wheelDeltaX/120),r.unshift(t,i,o,u),(e.event.dispatch||e.event.handle).apply(this,r)}var t=["DOMMouseScroll","mousewheel"];if(e.event.fixHooks)for(var n=t.length;n;)e.event.fixHooks[t[--n]]=e.event.mouseHooks;e.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var e=t.length;e;)this.addEventListener(t[--e],r,!1);else this.onmousewheel=r},teardown:function(){if(this.removeEventListener)for(var e=t.length;e;)this.removeEventListener(t[--e],r,!1);else this.onmousewheel=null}},e.fn.extend({mousewheel:function(e){return e?this.bind("mousewheel",e):this.trigger("mousewheel")},unmousewheel:function(e){return this.unbind("mousewheel",e)}})}(jQuery);var jvm={inherits:function(e,t){function n(){}n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e,e.parentClass=t},mixin:function(e,t){var n;for(n in t.prototype)t.prototype.hasOwnProperty(n)&&(e.prototype[n]=t.prototype[n])},min:function(e){var t=Number.MAX_VALUE,n;if(e instanceof Array)for(n=0;n<e.length;n++)e[n]<t&&(t=e[n]);else for(n in e)e[n]<t&&(t=e[n]);return t},max:function(e){var t=Number.MIN_VALUE,n;if(e instanceof Array)for(n=0;n<e.length;n++)e[n]>t&&(t=e[n]);else for(n in e)e[n]>t&&(t=e[n]);return t},keys:function(e){var t=[],n;for(n in e)t.push(n);return t},values:function(e){var t=[],n,r;for(r=0;r<arguments.length;r++){e=arguments[r];for(n in e)t.push(e[n])}return t}};jvm.$=jQuery,jvm.AbstractElement=function(e,t){this.node=this.createElement(e),this.name=e,this.properties={},t&&this.set(t)},jvm.AbstractElement.prototype.set=function(e,t){var n;if(typeof e=="object")for(n in e)this.properties[n]=e[n],this.applyAttr(n,e[n]);else this.properties[e]=t,this.applyAttr(e,t)},jvm.AbstractElement.prototype.get=function(e){return this.properties[e]},jvm.AbstractElement.prototype.applyAttr=function(e,t){this.node.setAttribute(e,t)},jvm.AbstractElement.prototype.remove=function(){jvm.$(this.node).remove()},jvm.AbstractCanvasElement=function(e,t,n){this.container=e,this.setSize(t,n),this.rootElement=new jvm[this.classPrefix+"GroupElement"],this.node.appendChild(this.rootElement.node),this.container.appendChild(this.node)},jvm.AbstractCanvasElement.prototype.add=function(e,t){t=t||this.rootElement,t.add(e),e.canvas=this},jvm.AbstractCanvasElement.prototype.addPath=function(e,t,n){var r=new jvm[this.classPrefix+"PathElement"](e,t);return this.add(r,n),r},jvm.AbstractCanvasElement.prototype.addCircle=function(e,t,n){var r=new jvm[this.classPrefix+"CircleElement"](e,t);return this.add(r,n),r},jvm.AbstractCanvasElement.prototype.addGroup=function(e){var t=new jvm[this.classPrefix+"GroupElement"];return e?e.node.appendChild(t.node):this.node.appendChild(t.node),t.canvas=this,t},jvm.AbstractShapeElement=function(e,t,n){this.style=n||{},this.style.current={},this.isHovered=!1,this.isSelected=!1,this.updateStyle()},jvm.AbstractShapeElement.prototype.setHovered=function(e){this.isHovered!==e&&(this.isHovered=e,this.updateStyle())},jvm.AbstractShapeElement.prototype.setSelected=function(e){this.isSelected!==e&&(this.isSelected=e,this.updateStyle(),jvm.$(this.node).trigger("selected",[e]))},jvm.AbstractShapeElement.prototype.setStyle=function(e,t){var n={};typeof e=="object"?n=e:n[e]=t,jvm.$.extend(this.style.current,n),this.updateStyle()},jvm.AbstractShapeElement.prototype.updateStyle=function(){var e={};jvm.AbstractShapeElement.mergeStyles(e,this.style.initial),jvm.AbstractShapeElement.mergeStyles(e,this.style.current),this.isHovered&&jvm.AbstractShapeElement.mergeStyles(e,this.style.hover),this.isSelected&&(jvm.AbstractShapeElement.mergeStyles(e,this.style.selected),this.isHovered&&jvm.AbstractShapeElement.mergeStyles(e,this.style.selectedHover)),this.set(e)},jvm.AbstractShapeElement.mergeStyles=function(e,t){var n;t=t||{};for(n in t)t[n]===null?delete e[n]:e[n]=t[n]},jvm.SVGElement=function(e,t){jvm.SVGElement.parentClass.apply(this,arguments)},jvm.inherits(jvm.SVGElement,jvm.AbstractElement),jvm.SVGElement.svgns="http://www.w3.org/2000/svg",jvm.SVGElement.prototype.createElement=function(e){return document.createElementNS(jvm.SVGElement.svgns,e)},jvm.SVGElement.prototype.addClass=function(e){this.node.setAttribute("class",e)},jvm.SVGElement.prototype.getElementCtr=function(e){return jvm["SVG"+e]},jvm.SVGElement.prototype.getBBox=function(){return this.node.getBBox()},jvm.SVGGroupElement=function(){jvm.SVGGroupElement.parentClass.call(this,"g")},jvm.inherits(jvm.SVGGroupElement,jvm.SVGElement),jvm.SVGGroupElement.prototype.add=function(e){this.node.appendChild(e.node)},jvm.SVGCanvasElement=function(e,t,n){this.classPrefix="SVG",jvm.SVGCanvasElement.parentClass.call(this,"svg"),jvm.AbstractCanvasElement.apply(this,arguments)},jvm.inherits(jvm.SVGCanvasElement,jvm.SVGElement),jvm.mixin(jvm.SVGCanvasElement,jvm.AbstractCanvasElement),jvm.SVGCanvasElement.prototype.setSize=function(e,t){this.width=e,this.height=t,this.node.setAttribute("width",e),this.node.setAttribute("height",t)},jvm.SVGCanvasElement.prototype.applyTransformParams=function(e,t,n){this.scale=e,this.transX=t,this.transY=n,this.rootElement.node.setAttribute("transform","scale("+e+") translate("+t+", "+n+")")},jvm.SVGShapeElement=function(e,t,n){jvm.SVGShapeElement.parentClass.call(this,e,t),jvm.AbstractShapeElement.apply(this,arguments)},jvm.inherits(jvm.SVGShapeElement,jvm.SVGElement),jvm.mixin(jvm.SVGShapeElement,jvm.AbstractShapeElement),jvm.SVGPathElement=function(e,t){jvm.SVGPathElement.parentClass.call(this,"path",e,t),this.node.setAttribute("fill-rule","evenodd")},jvm.inherits(jvm.SVGPathElement,jvm.SVGShapeElement),jvm.SVGCircleElement=function(e,t){jvm.SVGCircleElement.parentClass.call(this,"circle",e,t)},jvm.inherits(jvm.SVGCircleElement,jvm.SVGShapeElement),jvm.VMLElement=function(e,t){jvm.VMLElement.VMLInitialized||jvm.VMLElement.initializeVML(),jvm.VMLElement.parentClass.apply(this,arguments)},jvm.inherits(jvm.VMLElement,jvm.AbstractElement),jvm.VMLElement.VMLInitialized=!1,jvm.VMLElement.initializeVML=function(){try{document.namespaces.rvml||document.namespaces.add("rvml","urn:schemas-microsoft-com:vml"),jvm.VMLElement.prototype.createElement=function(e){return document.createElement("<rvml:"+e+' class="rvml">')}}catch(e){jvm.VMLElement.prototype.createElement=function(e){return document.createElement("<"+e+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}document.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)"),jvm.VMLElement.VMLInitialized=!0},jvm.VMLElement.prototype.getElementCtr=function(e){return jvm["VML"+e]},jvm.VMLElement.prototype.addClass=function(e){jvm.$(this.node).addClass(e)},jvm.VMLElement.prototype.applyAttr=function(e,t){this.node[e]=t},jvm.VMLElement.prototype.getBBox=function(){var e=jvm.$(this.node);return{x:e.position().left/this.canvas.scale,y:e.position().top/this.canvas.scale,width:e.width()/this.canvas.scale,height:e.height()/this.canvas.scale}},jvm.VMLGroupElement=function(){jvm.VMLGroupElement.parentClass.call(this,"group"),this.node.style.left="0px",this.node.style.top="0px",this.node.coordorigin="0 0"},jvm.inherits(jvm.VMLGroupElement,jvm.VMLElement),jvm.VMLGroupElement.prototype.add=function(e){this.node.appendChild(e.node)},jvm.VMLCanvasElement=function(e,t,n){this.classPrefix="VML",jvm.VMLCanvasElement.parentClass.call(this,"group"),jvm.AbstractCanvasElement.apply(this,arguments),this.node.style.position="absolute"},jvm.inherits(jvm.VMLCanvasElement,jvm.VMLElement),jvm.mixin(jvm.VMLCanvasElement,jvm.AbstractCanvasElement),jvm.VMLCanvasElement.prototype.setSize=function(e,t){var n,r,i,s;this.width=e,this.height=t,this.node.style.width=e+"px",this.node.style.height=t+"px",this.node.coordsize=e+" "+t,this.node.coordorigin="0 0";if(this.rootElement){n=this.rootElement.node.getElementsByTagName("shape");for(i=0,s=n.length;i<s;i++)n[i].coordsize=e+" "+t,n[i].style.width=e+"px",n[i].style.height=t+"px";r=this.node.getElementsByTagName("group");for(i=0,s=r.length;i<s;i++)r[i].coordsize=e+" "+t,r[i].style.width=e+"px",r[i].style.height=t+"px"}},jvm.VMLCanvasElement.prototype.applyTransformParams=function(e,t,n){this.scale=e,this.transX=t,this.transY=n,this.rootElement.node.coordorigin=this.width-t-this.width/100+","+(this.height-n-this.height/100),this.rootElement.node.coordsize=this.width/e+","+this.height/e},jvm.VMLShapeElement=function(e,t){jvm.VMLShapeElement.parentClass.call(this,e,t),this.fillElement=new jvm.VMLElement("fill"),this.strokeElement=new jvm.VMLElement("stroke"),this.node.appendChild(this.fillElement.node),this.node.appendChild(this.strokeElement.node),this.node.stroked=!1,jvm.AbstractShapeElement.apply(this,arguments)},jvm.inherits(jvm.VMLShapeElement,jvm.VMLElement),jvm.mixin(jvm.VMLShapeElement,jvm.AbstractShapeElement),jvm.VMLShapeElement.prototype.applyAttr=function(e,t){switch(e){case"fill":this.node.fillcolor=t;break;case"fill-opacity":this.fillElement.node.opacity=Math.round(t*100)+"%";break;case"stroke":t==="none"?this.node.stroked=!1:this.node.stroked=!0,this.node.strokecolor=t;break;case"stroke-opacity":this.strokeElement.node.opacity=Math.round(t*100)+"%";break;case"stroke-width":parseInt(t,10)===0?this.node.stroked=!1:this.node.stroked=!0,this.node.strokeweight=t;break;case"d":this.node.path=jvm.VMLPathElement.pathSvgToVml(t);break;default:jvm.VMLShapeElement.parentClass.prototype.applyAttr.apply(this,arguments)}},jvm.VMLPathElement=function(e,t){var n=new jvm.VMLElement("skew");jvm.VMLPathElement.parentClass.call(this,"shape",e,t),this.node.coordorigin="0 0",n.node.on=!0,n.node.matrix="0.01,0,0,0.01,0,0",n.node.offset="0,0",this.node.appendChild(n.node)},jvm.inherits(jvm.VMLPathElement,jvm.VMLShapeElement),jvm.VMLPathElement.prototype.applyAttr=function(e,t){e==="d"?this.node.path=jvm.VMLPathElement.pathSvgToVml(t):jvm.VMLShapeElement.prototype.applyAttr.call(this,e,t)},jvm.VMLPathElement.pathSvgToVml=function(e){var t="",n=0,r=0,i,s;return e=e.replace(/(-?\d+)e(-?\d+)/g,"0"),e.replace(/([MmLlHhVvCcSs])\s*((?:-?\d*(?:\.\d+)?\s*,?\s*)+)/g,function(e,t,o,u){o=o.replace(/(\d)-/g,"$1,-").replace(/^\s+/g,"").replace(/\s+$/g,"").replace(/\s+/g,",").split(","),o[0]||o.shift();for(var a=0,f=o.length;a<f;a++)o[a]=Math.round(100*o[a]);switch(t){case"m":return n+=o[0],r+=o[1],"t"+o.join(",");case"M":return n=o[0],r=o[1],"m"+o.join(",");case"l":return n+=o[0],r+=o[1],"r"+o.join(",");case"L":return n=o[0],r=o[1],"l"+o.join(",");case"h":return n+=o[0],"r"+o[0]+",0";case"H":return n=o[0],"l"+n+","+r;case"v":return r+=o[0],"r0,"+o[0];case"V":return r=o[0],"l"+n+","+r;case"c":return i=n+o[o.length-4],s=r+o[o.length-3],n+=o[o.length-2],r+=o[o.length-1],"v"+o.join(",");case"C":return i=o[o.length-4],s=o[o.length-3],n=o[o.length-2],r=o[o.length-1],"c"+o.join(",");case"s":return o.unshift(r-s),o.unshift(n-i),i=n+o[o.length-4],s=r+o[o.length-3],n+=o[o.length-2],r+=o[o.length-1],"v"+o.join(",");case"S":return o.unshift(r+r-s),o.unshift(n+n-i),i=o[o.length-4],s=o[o.length-3],n=o[o.length-2],r=o[o.length-1],"c"+o.join(",")}return""}).replace(/z/g,"e")},jvm.VMLCircleElement=function(e,t){jvm.VMLCircleElement.parentClass.call(this,"oval",e,t)},jvm.inherits(jvm.VMLCircleElement,jvm.VMLShapeElement),jvm.VMLCircleElement.prototype.applyAttr=function(e,t){switch(e){case"r":this.node.style.width=t*2+"px",this.node.style.height=t*2+"px",this.applyAttr("cx",this.get("cx")||0),this.applyAttr("cy",this.get("cy")||0);break;case"cx":if(!t)return;this.node.style.left=t-(this.get("r")||0)+"px";break;case"cy":if(!t)return;this.node.style.top=t-(this.get("r")||0)+"px";break;default:jvm.VMLCircleElement.parentClass.prototype.applyAttr.call(this,e,t)}},jvm.VectorCanvas=function(e,t,n){return this.mode=window.SVGAngle?"svg":"vml",this.mode=="svg"?this.impl=new jvm.SVGCanvasElement(e,t,n):this.impl=new jvm.VMLCanvasElement(e,t,n),this.impl},jvm.SimpleScale=function(e){this.scale=e},jvm.SimpleScale.prototype.getValue=function(e){return e},jvm.OrdinalScale=function(e){this.scale=e},jvm.OrdinalScale.prototype.getValue=function(e){return this.scale[e]},jvm.NumericScale=function(e,t,n,r){this.scale=[],t=t||"linear",e&&this.setScale(e),t&&this.setNormalizeFunction(t),n&&this.setMin(n),r&&this.setMax(r)},jvm.NumericScale.prototype={setMin:function(e){this.clearMinValue=e,typeof this.normalize=="function"?this.minValue=this.normalize(e):this.minValue=e},setMax:function(e){this.clearMaxValue=e,typeof this.normalize=="function"?this.maxValue=this.normalize(e):this.maxValue=e},setScale:function(e){var t;for(t=0;t<e.length;t++)this.scale[t]=[e[t]]},setNormalizeFunction:function(e){e==="polynomial"?this.normalize=function(e){return Math.pow(e,.2)}:e==="linear"?delete this.normalize:this.normalize=e,this.setMin(this.clearMinValue),this.setMax(this.clearMaxValue)},getValue:function(e){var t=[],n=0,r,i=0,s;typeof this.normalize=="function"&&(e=this.normalize(e));for(i=0;i<this.scale.length-1;i++)r=this.vectorLength(this.vectorSubtract(this.scale[i+1],this.scale[i])),t.push(r),n+=r;s=(this.maxValue-this.minValue)/n;for(i=0;i<t.length;i++)t[i]*=s;i=0,e-=this.minValue;while(e-t[i]>=0)e-=t[i],i++;return i==this.scale.length-1?e=this.vectorToNum(this.scale[i]):e=this.vectorToNum(this.vectorAdd(this.scale[i],this.vectorMult(this.vectorSubtract(this.scale[i+1],this.scale[i]),e/t[i]))),e},vectorToNum:function(e){var t=0,n;for(n=0;n<e.length;n++)t+=Math.round(e[n])*Math.pow(256,e.length-n-1);return t},vectorSubtract:function(e,t){var n=[],r;for(r=0;r<e.length;r++)n[r]=e[r]-t[r];return n},vectorAdd:function(e,t){var n=[],r;for(r=0;r<e.length;r++)n[r]=e[r]+t[r];return n},vectorMult:function(e,t){var n=[],r;for(r=0;r<e.length;r++)n[r]=e[r]*t;return n},vectorLength:function(e){var t=0,n;for(n=0;n<e.length;n++)t+=e[n]*e[n];return Math.sqrt(t)}},jvm.ColorScale=function(e,t,n,r){jvm.ColorScale.parentClass.apply(this,arguments)},jvm.inherits(jvm.ColorScale,jvm.NumericScale),jvm.ColorScale.prototype.setScale=function(e){var t;for(t=0;t<e.length;t++)this.scale[t]=jvm.ColorScale.rgbToArray(e[t])},jvm.ColorScale.prototype.getValue=function(e){return jvm.ColorScale.numToRgb(jvm.ColorScale.parentClass.prototype.getValue.call(this,e))},jvm.ColorScale.arrayToRgb=function(e){var t="#",n,r;for(r=0;r<e.length;r++)n=e[r].toString(16),t+=n.length==1?"0"+n:n;return t},jvm.ColorScale.numToRgb=function(e){e=e.toString(16);while(e.length<6)e="0"+e;return"#"+e},jvm.ColorScale.rgbToArray=function(e){return e=e.substr(1),[parseInt(e.substr(0,2),16),parseInt(e.substr(2,2),16),parseInt(e.substr(4,2),16)]},jvm.DataSeries=function(e,t){var n;e=e||{},e.attribute=e.attribute||"fill",this.elements=t,this.params=e,e.attributes&&this.setAttributes(e.attributes),jvm.$.isArray(e.scale)?(n=e.attribute==="fill"||e.attribute==="stroke"?jvm.ColorScale:jvm.NumericScale,this.scale=new n(e.scale,e.normalizeFunction,e.min,e.max)):e.scale?this.scale=new jvm.OrdinalScale(e.scale):this.scale=new jvm.SimpleScale(e.scale),this.values=e.values||{},this.setValues(this.values)},jvm.DataSeries.prototype={setAttributes:function(e,t){var n=e,r;if(typeof e=="string")this.elements[e]&&this.elements[e].setStyle(this.params.attribute,t);else for(r in n)this.elements[r]&&this.elements[r].element.setStyle(this.params.attribute,n[r])},setValues:function(e){var t=Number.MIN_VALUE,n=Number.MAX_VALUE,r,i,s={};if(this.scale instanceof jvm.OrdinalScale||this.scale instanceof jvm.SimpleScale)for(i in e)e[i]?s[i]=this.scale.getValue(e[i]):s[i]=this.elements[i].element.style.initial[this.params.attribute];else{if(!this.params.min||!this.params.max){for(i in e)r=parseFloat(e[i]),r>t&&(t=e[i]),r<n&&(n=r);this.params.min||this.scale.setMin(n),this.params.max||this.scale.setMax(t),this.params.min=n,this.params.max=t}for(i in e)r=parseFloat(e[i]),isNaN(r)?s[i]=this.elements[i].element.style.initial[this.params.attribute]:s[i]=this.scale.getValue(r)}this.setAttributes(s),jvm.$.extend(this.values,e)},clear:function(){var e,t={};for(e in this.values)this.elements[e]&&(t[e]=this.elements[e].element.style.initial[this.params.attribute]);this.setAttributes(t),this.values={}},setScale:function(e){this.scale.setScale(e),this.values&&this.setValues(this.values)},setNormalizeFunction:function(e){this.scale.setNormalizeFunction(e),this.values&&this.setValues(this.values)}},jvm.Proj={degRad:180/Math.PI,radDeg:Math.PI/180,radius:6381372,sgn:function(e){return e>0?1:e<0?-1:e},mill:function(e,t,n){return{x:this.radius*(t-n)*this.radDeg,y:-this.radius*Math.log(Math.tan((45+.4*e)*this.radDeg))/.8}},mill_inv:function(e,t,n){return{lat:(2.5*Math.atan(Math.exp(.8*t/this.radius))-5*Math.PI/8)*this.degRad,lng:(n*this.radDeg+e/this.radius)*this.degRad}},merc:function(e,t,n){return{x:this.radius*(t-n)*this.radDeg,y:-this.radius*Math.log(Math.tan(Math.PI/4+e*Math.PI/360))}},merc_inv:function(e,t,n){return{lat:(2*Math.atan(Math.exp(t/this.radius))-Math.PI/2)*this.degRad,lng:(n*this.radDeg+e/this.radius)*this.degRad}},aea:function(e,t,n){var r=0,i=n*this.radDeg,s=29.5*this.radDeg,o=45.5*this.radDeg,u=e*this.radDeg,a=t*this.radDeg,f=(Math.sin(s)+Math.sin(o))/2,l=Math.cos(s)*Math.cos(s)+2*f*Math.sin(s),c=f*(a-i),h=Math.sqrt(l-2*f*Math.sin(u))/f,p=Math.sqrt(l-2*f*Math.sin(r))/f;return{x:h*Math.sin(c)*this.radius,y:-(p-h*Math.cos(c))*this.radius}},aea_inv:function(e,t,n){var r=e/this.radius,i=t/this.radius,s=0,o=n*this.radDeg,u=29.5*this.radDeg,a=45.5*this.radDeg,f=(Math.sin(u)+Math.sin(a))/2,l=Math.cos(u)*Math.cos(u)+2*f*Math.sin(u),c=Math.sqrt(l-2*f*Math.sin(s))/f,h=Math.sqrt(r*r+(c-i)*(c-i)),p=Math.atan(r/(c-i));return{lat:Math.asin((l-h*h*f*f)/(2*f))*this.degRad,lng:(o+p/f)*this.degRad}},lcc:function(e,t,n){var r=0,i=n*this.radDeg,s=t*this.radDeg,o=33*this.radDeg,u=45*this.radDeg,a=e*this.radDeg,f=Math.log(Math.cos(o)*(1/Math.cos(u)))/Math.log(Math.tan(Math.PI/4+u/2)*(1/Math.tan(Math.PI/4+o/2))),l=Math.cos(o)*Math.pow(Math.tan(Math.PI/4+o/2),f)/f,c=l*Math.pow(1/Math.tan(Math.PI/4+a/2),f),h=l*Math.pow(1/Math.tan(Math.PI/4+r/2),f);return{x:c*Math.sin(f*(s-i))*this.radius,y:-(h-c*Math.cos(f*(s-i)))*this.radius}},lcc_inv:function(e,t,n){var r=e/this.radius,i=t/this.radius,s=0,o=n*this.radDeg,u=33*this.radDeg,a=45*this.radDeg,f=Math.log(Math.cos(u)*(1/Math.cos(a)))/Math.log(Math.tan(Math.PI/4+a/2)*(1/Math.tan(Math.PI/4+u/2))),l=Math.cos(u)*Math.pow(Math.tan(Math.PI/4+u/2),f)/f,c=l*Math.pow(1/Math.tan(Math.PI/4+s/2),f),h=this.sgn(f)*Math.sqrt(r*r+(c-i)*(c-i)),p=Math.atan(r/(c-i));return{lat:(2*Math.atan(Math.pow(l/h,1/f))-Math.PI/2)*this.degRad,lng:(o+p/f)*this.degRad}}},jvm.WorldMap=function(e){var t=this,n;this.params=jvm.$.extend(!0,{},jvm.WorldMap.defaultParams,e);if(!jvm.WorldMap.maps[this.params.map])throw new Error("Attempt to use map which was not loaded: "+this.params.map);this.mapData=jvm.WorldMap.maps[this.params.map],this.markers={},this.regions={},this.regionsColors={},this.regionsData={},this.container=jvm.$("<div>").css({width:"100%",height:"100%"}).addClass("jvectormap-container"),this.params.container.append(this.container),this.container.data("mapObject",this),this.container.css({position:"relative",overflow:"hidden"}),this.defaultWidth=this.mapData.width,this.defaultHeight=this.mapData.height,this.setBackgroundColor(this.params.backgroundColor),this.onResize=function(){t.setSize()},jvm.$(window).resize(this.onResize);for(n in jvm.WorldMap.apiEvents)this.params[n]&&this.container.bind(jvm.WorldMap.apiEvents[n]+".jvectormap",this.params[n]);this.canvas=new jvm.VectorCanvas(this.container[0],this.width,this.height),"ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch?this.params.bindTouchEvents&&this.bindContainerTouchEvents():this.bindContainerEvents(),this.bindElementEvents(),this.createLabel(),this.params.zoomButtons&&this.bindZoomButtons(),this.createRegions(),this.createMarkers(this.params.markers||{}),this.setSize(),this.params.focusOn&&(typeof this.params.focusOn=="object"?this.setFocus.call(this,this.params.focusOn.scale,this.params.focusOn.x,this.params.focusOn.y):this.setFocus.call(this,this.params.focusOn)),this.params.selectedRegions&&this.setSelectedRegions(this.params.selectedRegions),this.params.selectedMarkers&&this.setSelectedMarkers(this.params.selectedMarkers),this.params.series&&this.createSeries()},jvm.WorldMap.prototype={transX:0,transY:0,scale:1,baseTransX:0,baseTransY:0,baseScale:1,width:0,height:0,setBackgroundColor:function(e){this.container.css("background-color",e)},resize:function(){var e=this.baseScale;this.width/this.height>this.defaultWidth/this.defaultHeight?(this.baseScale=this.height/this.defaultHeight,this.baseTransX=Math.abs(this.width-this.defaultWidth*this.baseScale)/(2*this.baseScale)):(this.baseScale=this.width/this.defaultWidth,this.baseTransY=Math.abs(this.height-this.defaultHeight*this.baseScale)/(2*this.baseScale)),this.scale*=this.baseScale/e,this.transX*=this.baseScale/e,this.transY*=this.baseScale/e},setSize:function(){this.width=this.container.width(),this.height=this.container.height(),this.resize(),this.canvas.setSize(this.width,this.height),this.applyTransform()},reset:function(){var e,t;for(e in this.series)for(t=0;t<this.series[e].length;t++)this.series[e][t].clear();this.scale=this.baseScale,this.transX=this.baseTransX,this.transY=this.baseTransY,this.applyTransform()},applyTransform:function(){var e,t,n,r;this.defaultWidth*this.scale<=this.width?(e=(this.width-this.defaultWidth*this.scale)/(2*this.scale),n=(this.width-this.defaultWidth*this.scale)/(2*this.scale)):(e=0,n=(this.width-this.defaultWidth*this.scale)/this.scale),this.defaultHeight*this.scale<=this.height?(t=(this.height-this.defaultHeight*this.scale)/(2*this.scale),r=(this.height-this.defaultHeight*this.scale)/(2*this.scale)):(t=0,r=(this.height-this.defaultHeight*this.scale)/this.scale),this.transY>t?this.transY=t:this.transY<r&&(this.transY=r),this.transX>e?this.transX=e:this.transX<n&&(this.transX=n),this.canvas.applyTransformParams(this.scale,this.transX,this.transY),this.markers&&this.repositionMarkers(),this.container.trigger("viewportChange",[this.scale/this.baseScale,this.transX,this.transY])},bindContainerEvents:function(){var e=!1,t,n,r=this;this.container.mousemove(function(i){return e&&(r.transX-=(t-i.pageX)/r.scale,r.transY-=(n-i.pageY)/r.scale,r.applyTransform(),t=i.pageX,n=i.pageY),!1}).mousedown(function(r){return e=!0,t=r.pageX,n=r.pageY,!1}),jvm.$("body").mouseup(function(){e=!1}),this.params.zoomOnScroll&&this.container.mousewheel(function(e,t,n,i){var s=jvm.$(r.container).offset(),o=e.pageX-s.left,u=e.pageY-s.top,a=Math.pow(1.3,i);r.label.hide(),r.setScale(r.scale*a,o,u),e.preventDefault()})},bindContainerTouchEvents:function(){var e,t,n=this,r,i,s,o,u,a=function(a){var f=a.originalEvent.touches,l,c,h,p;a.type=="touchstart"&&(u=0),f.length==1?(u==1&&(h=n.transX,p=n.transY,n.transX-=(r-f[0].pageX)/n.scale,n.transY-=(i-f[0].pageY)/n.scale,n.applyTransform(),n.label.hide(),(h!=n.transX||p!=n.transY)&&a.preventDefault()),r=f[0].pageX,i=f[0].pageY):f.length==2&&(u==2?(c=Math.sqrt(Math.pow(f[0].pageX-f[1].pageX,2)+Math.pow(f[0].pageY-f[1].pageY,2))/t,n.setScale(e*c,s,o),n.label.hide(),a.preventDefault()):(l=jvm.$(n.container).offset(),f[0].pageX>f[1].pageX?s=f[1].pageX+(f[0].pageX-f[1].pageX)/2:s=f[0].pageX+(f[1].pageX-f[0].pageX)/2,f[0].pageY>f[1].pageY?o=f[1].pageY+(f[0].pageY-f[1].pageY)/2:o=f[0].pageY+(f[1].pageY-f[0].pageY)/2,s-=l.left,o-=l.top,e=n.scale,t=Math.sqrt(Math.pow(f[0].pageX-f[1].pageX,2)+Math.pow(f[0].pageY-f[1].pageY,2)))),u=f.length};jvm.$(this.container).bind("touchstart",a),jvm.$(this.container).bind("touchmove",a)},bindElementEvents:function(){var e=this,t;this.container.mousemove(function(){t=!0}),this.container.delegate("[class~='jvectormap-element']","mouseover mouseout",function(t){var n=this,r=jvm.$(this).attr("class").baseVal?jvm.$(this).attr("class").baseVal:jvm.$(this).attr("class"),i=r.indexOf("jvectormap-region")===-1?"marker":"region",s=i=="region"?jvm.$(this).attr("data-code"):jvm.$(this).attr("data-index"),o=i=="region"?e.regions[s].element:e.markers[s].element,u=i=="region"?e.mapData.paths[s].name:e.markers[s].config.name||"",a=jvm.$.Event(i+"LabelShow.jvectormap"),f=jvm.$.Event(i+"Over.jvectormap");t.type=="mouseover"?(e.container.trigger(f,[s]),f.isDefaultPrevented()||o.setHovered(!0),e.label.text(u),e.container.trigger(a,[e.label,s]),a.isDefaultPrevented()||(e.label.show(),e.labelWidth=e.label.width(),e.labelHeight=e.label.height())):(o.setHovered(!1),e.label.hide(),e.container.trigger(i+"Out.jvectormap",[s]))}),this.container.delegate("[class~='jvectormap-element']","mousedown",function(e){t=!1}),this.container.delegate("[class~='jvectormap-element']","mouseup",function(n){var r=this,i=jvm.$(this).attr("class").baseVal?jvm.$(this).attr("class").baseVal:jvm.$(this).attr("class"),s=i.indexOf("jvectormap-region")===-1?"marker":"region",o=s=="region"?jvm.$(this).attr("data-code"):jvm.$(this).attr("data-index"),u=jvm.$.Event(s+"Click.jvectormap"),a=s=="region"?e.regions[o].element:e.markers[o].element;if(!t){e.container.trigger(u,[o]);if(s==="region"&&e.params.regionsSelectable||s==="marker"&&e.params.markersSelectable)u.isDefaultPrevented()||(e.params[s+"sSelectableOne"]&&e.clearSelected(s+"s"),a.setSelected(!a.isSelected))}})},bindZoomButtons:function(){var e=this;jvm.$("<div/>").addClass("jvectormap-zoomin").text("+").appendTo(this.container),jvm.$("<div/>").addClass("jvectormap-zoomout").html("&#x2212;").appendTo(this.container),this.container.find(".jvectormap-zoomin").click(function(){e.setScale(e.scale*e.params.zoomStep,e.width/2,e.height/2)}),this.container.find(".jvectormap-zoomout").click(function(){e.setScale(e.scale/e.params.zoomStep,e.width/2,e.height/2)})},createLabel:function(){var e=this;this.label=jvm.$("<div/>").addClass("jvectormap-label").appendTo(jvm.$("body")),this.container.mousemove(function(t){var n=t.pageX-15-e.labelWidth,r=t.pageY-15-e.labelHeight;n<5&&(n=t.pageX+15),r<5&&(r=t.pageY+15),e.label.is(":visible")&&e.label.css({left:n,top:r})})},setScale:function(e,t,n,r){var i,s=jvm.$.Event("zoom.jvectormap");e>this.params.zoomMax*this.baseScale?e=this.params.zoomMax*this.baseScale:e<this.params.zoomMin*this.baseScale&&(e=this.params.zoomMin*this.baseScale),typeof t!="undefined"&&typeof n!="undefined"&&(i=e/this.scale,r?(this.transX=t+this.defaultWidth*(this.width/(this.defaultWidth*e))/2,this.transY=n+this.defaultHeight*(this.height/(this.defaultHeight*e))/2):(this.transX-=(i-1)/e*t,this.transY-=(i-1)/e*n)),this.scale=e,this.applyTransform(),this.container.trigger(s,[e/this.baseScale])},setFocus:function(e,t,n){var r,i,s,o,u;if(jvm.$.isArray(e)||this.regions[e]){jvm.$.isArray(e)?o=e:o=[e];for(u=0;u<o.length;u++)this.regions[o[u]]&&(i=this.regions[o[u]].element.getBBox(),i&&(typeof r=="undefined"?r=i:(s={x:Math.min(r.x,i.x),y:Math.min(r.y,i.y),width:Math.max(r.x+r.width,i.x+i.width)-Math.min(r.x,i.x),height:Math.max(r.y+r.height,i.y+i.height)-Math.min(r.y,i.y)},r=s)));this.setScale(Math.min(this.width/r.width,this.height/r.height),-(r.x+r.width/2),-(r.y+r.height/2),!0)}else e*=this.baseScale,this.setScale(e,-t*this.defaultWidth,-n*this.defaultHeight,!0)},getSelected:function(e){var t,n=[];for(t in this[e])this[e][t].element.isSelected&&n.push(t);return n},getSelectedRegions:function(){return this.getSelected("regions")},getSelectedMarkers:function(){return this.getSelected("markers")},setSelected:function(e,t){var n;typeof t!="object"&&(t=[t]);if(jvm.$.isArray(t))for(n=0;n<t.length;n++)this[e][t[n]].element.setSelected(!0);else for(n in t)this[e][n].element.setSelected(!!t[n])},setSelectedRegions:function(e){this.setSelected("regions",e)},setSelectedMarkers:function(e){this.setSelected("markers",e)},clearSelected:function(e){var t={},n=this.getSelected(e),r;for(r=0;r<n.length;r++)t[n[r]]=!1;this.setSelected(e,t)},clearSelectedRegions:function(){this.clearSelected("regions")},clearSelectedMarkers:function(){this.clearSelected("markers")},getMapObject:function(){return this},getRegionName:function(e){return this.mapData.paths[e].name},createRegions:function(){var e,t,n=this;for(e in this.mapData.paths)t=this.canvas.addPath({d:this.mapData.paths[e].path,"data-code":e},jvm.$.extend(!0,{},this.params.regionStyle)),jvm.$(t.node).bind("selected",function(e,t){n.container.trigger("regionSelected.jvectormap",[jvm.$(this).attr("data-code"),t,n.getSelectedRegions()])}),t.addClass("jvectormap-region jvectormap-element"),this.regions[e]={element:t,config:this.mapData.paths[e]}},createMarkers:function(e){var t,n,r,i,s,o=this;this.markersGroup=this.markersGroup||this.canvas.addGroup();if(jvm.$.isArray(e)){s=e.slice(),e={};for(t=0;t<s.length;t++)e[t]=s[t]}for(t in e)i=e[t]instanceof Array?{latLng:e[t]}:e[t],r=this.getMarkerPosition(i),r!==!1&&(n=this.canvas.addCircle({"data-index":t,cx:r.x,cy:r.y},jvm.$.extend(!0,{},this.params.markerStyle,{initial:i.style||{}}),this.markersGroup),n.addClass("jvectormap-marker jvectormap-element"),jvm.$(n.node).bind("selected",function(e,t){o.container.trigger("markerSelected.jvectormap",[jvm.$(this).attr("data-index"),t,o.getSelectedMarkers()])}),this.markers[t]&&this.removeMarkers([t]),this.markers[t]={element:n,config:i})},repositionMarkers:function(){var e,t;for(e in this.markers)t=this.getMarkerPosition(this.markers[e].config),t!==!1&&this.markers[e].element.setStyle({cx:t.x,cy:t.y})},getMarkerPosition:function(e){return jvm.WorldMap.maps[this.params.map].projection?this.latLngToPoint.apply(this,e.latLng||[0,0]):{x:e.coords[0]*this.scale+this.transX*this.scale,y:e.coords[1]*this.scale+this.transY*this.scale}},addMarker:function(e,t,n){var r={},i=[],s,o,n=n||[];r[e]=t;for(o=0;o<n.length;o++)s={},s[e]=n[o],i.push(s);this.addMarkers(r,i)},addMarkers:function(e,t){var n;t=t||[],this.createMarkers(e);for(n=0;n<t.length;n++)this.series.markers[n].setValues(t[n]||{})},removeMarkers:function(e){var t;for(t=0;t<e.length;t++)this.markers[e[t]].element.remove(),delete this.markers[e[t]]},removeAllMarkers:function(){var e,t=[];for(e in this.markers)t.push(e);this.removeMarkers(t)},latLngToPoint:function(e,t){var n,r=jvm.WorldMap.maps[this.params.map].projection,i=r.centralMeridian,s=this.width-this.baseTransX*2*this.baseScale,o=this.height-this.baseTransY*2*this.baseScale,u,a,f=this.scale/this.baseScale;return t<-180+i&&(t+=360),n=jvm.Proj[r.type](e,t,i),u=this.getInsetForPoint(n.x,n.y),u?(a=u.bbox,n.x=(n.x-a[0].x)/(a[1].x-a[0].x)*u.width*this.scale,n.y=(n.y-a[0].y)/(a[1].y-a[0].y)*u.height*this.scale,{x:n.x+this.transX*this.scale+u.left*this.scale,y:n.y+this.transY*this.scale+u.top*this.scale}):!1},pointToLatLng:function(e,t){var n=jvm.WorldMap.maps[this.params.map].projection,r=n.centralMeridian,i=jvm.WorldMap.maps[this.params.map].insets,s,o,u,a,f;for(s=0;s<i.length;s++){o=i[s],u=o.bbox,a=e-(this.transX*this.scale+o.left*this.scale),f=t-(this.transY*this.scale+o.top*this.scale),a=a/(o.width*this.scale)*(u[1].x-u[0].x)+u[0].x,f=f/(o.height*this.scale)*(u[1].y-u[0].y)+u[0].y;if(a>u[0].x&&a<u[1].x&&f>u[0].y&&f<u[1].y)return jvm.Proj[n.type+"_inv"](a,-f,r)}return!1},getInsetForPoint:function(e,t){var n=jvm.WorldMap.maps[this.params.map].insets,r,i;for(r=0;r<n.length;r++){i=n[r].bbox;if(e>i[0].x&&e<i[1].x&&t>i[0].y&&t<i[1].y)return n[r]}},createSeries:function(){var e,t;this.series={markers:[],regions:[]};for(t in this.params.series)for(e=0;e<this.params.series[t].length;e++)this.series[t][e]=new jvm.DataSeries(this.params.series[t][e],this[t])},remove:function(){this.label.remove(),this.container.remove(),jvm.$(window).unbind("resize",this.onResize)}},jvm.WorldMap.maps={},jvm.WorldMap.defaultParams={map:"world_mill_en",backgroundColor:"#505050",zoomButtons:!0,zoomOnScroll:!0,zoomMax:8,zoomMin:1,zoomStep:1.6,regionsSelectable:!1,markersSelectable:!1,bindTouchEvents:!0,regionStyle:{initial:{fill:"white","fill-opacity":1,stroke:"none","stroke-width":0,"stroke-opacity":1},hover:{"fill-opacity":.8},selected:{fill:"yellow"},selectedHover -:{}},markerStyle:{initial:{fill:"grey",stroke:"#505050","fill-opacity":1,"stroke-width":1,"stroke-opacity":1,r:5},hover:{stroke:"black","stroke-width":2},selected:{fill:"blue"},selectedHover:{}}},jvm.WorldMap.apiEvents={onRegionLabelShow:"regionLabelShow",onRegionOver:"regionOver",onRegionOut:"regionOut",onRegionClick:"regionClick",onRegionSelected:"regionSelected",onMarkerLabelShow:"markerLabelShow",onMarkerOver:"markerOver",onMarkerOut:"markerOut",onMarkerClick:"markerClick",onMarkerSelected:"markerSelected",onViewportChange:"viewportChange"}; \ No newline at end of file diff --git a/assets/js/plugins/jvectormap/jquery-jvectormap-world-mill-en.js b/assets/js/plugins/jvectormap/jquery-jvectormap-world-mill-en.js deleted file mode 100644 index 89f77839..00000000 --- a/assets/js/plugins/jvectormap/jquery-jvectormap-world-mill-en.js +++ /dev/null @@ -1 +0,0 @@ -$.fn.vectorMap('addMap', 'world_mill_en',{"insets": [{"width": 900.0, "top": 0, "height": 440.7063107441331, "bbox": [{"y": -12671671.123330014, "x": -20004297.151525836}, {"y": 6930392.02513512, "x": 20026572.394749384}], "left": 0}], "paths": {"BD": {"path": "M652.71,228.85l-0.04,1.38l-0.46,-0.21l-0.42,0.3l0.05,0.65l-0.17,-1.37l-0.48,-1.26l-1.08,-1.6l-0.23,-0.13l-2.31,-0.11l-0.31,0.36l0.21,0.98l-0.6,1.11l-0.8,-0.4l-0.37,0.09l-0.23,0.3l-0.54,-0.21l-0.78,-0.19l-0.38,-2.04l-0.83,-1.89l0.4,-1.5l-0.16,-0.35l-1.24,-0.57l0.36,-0.62l1.5,-0.95l0.02,-0.49l-1.62,-1.26l0.64,-1.31l1.7,1.0l0.12,0.04l0.96,0.11l0.19,1.62l0.25,0.26l2.38,0.37l2.32,-0.04l1.06,0.33l-0.92,1.79l-0.97,0.13l-0.23,0.16l-0.77,1.51l0.05,0.35l1.37,1.37l0.5,-0.14l0.35,-1.46l0.24,-0.0l1.24,3.92Z", "name": "Bangladesh"}, "BE": {"path": "M429.28,143.95l1.76,0.25l0.13,-0.01l2.16,-0.64l1.46,1.34l1.26,0.71l-0.23,1.8l-0.44,0.08l-0.24,0.25l-0.2,1.36l-1.8,-1.22l-0.23,-0.05l-1.14,0.23l-1.62,-1.43l-1.15,-1.31l-0.21,-0.1l-0.95,-0.04l-0.21,-0.68l1.66,-0.54Z", "name": "Belgium"}, "BF": {"path": "M413.48,260.21l-1.22,-0.46l-0.13,-0.02l-1.17,0.1l-0.15,0.06l-0.73,0.53l-0.87,-0.41l-0.39,-0.75l-0.13,-0.13l-0.98,-0.48l-0.14,-1.2l0.63,-0.99l0.05,-0.18l-0.05,-0.73l1.9,-2.01l0.08,-0.14l0.35,-1.65l0.49,-0.44l1.05,0.3l0.21,-0.02l1.05,-0.52l0.13,-0.13l0.3,-0.58l1.87,-1.1l0.11,-0.1l0.43,-0.72l2.23,-1.01l1.21,-0.32l0.51,0.4l0.19,0.06l1.25,-0.01l-0.14,0.89l0.01,0.13l0.34,1.16l0.06,0.11l1.35,1.59l0.07,1.13l0.24,0.28l2.64,0.53l-0.05,1.39l-0.42,0.59l-1.11,0.21l-0.22,0.17l-0.46,0.99l-0.69,0.23l-2.12,-0.05l-1.14,-0.2l-0.19,0.03l-0.72,0.36l-1.07,-0.17l-4.35,0.12l-0.29,0.29l-0.06,1.44l0.25,1.45Z", "name": "Burkina Faso"}, "BG": {"path": "M477.63,166.84l0.51,0.9l0.33,0.14l0.9,-0.21l1.91,0.47l3.68,0.16l0.17,-0.05l1.2,-0.75l2.78,-0.67l1.72,1.05l1.02,0.24l-0.97,0.97l-0.91,2.17l0.0,0.24l0.56,1.19l-1.58,-0.3l-0.16,0.01l-2.55,0.95l-0.2,0.28l-0.02,1.23l-1.92,0.24l-1.68,-0.99l-0.27,-0.02l-1.94,0.8l-1.52,-0.07l-0.15,-1.72l-0.12,-0.21l-0.99,-0.76l0.18,-0.18l0.02,-0.39l-0.17,-0.22l0.33,-0.75l0.91,-0.91l0.01,-0.42l-1.16,-1.25l-0.18,-0.89l0.24,-0.27Z", "name": "Bulgaria"}, "BA": {"path": "M468.39,164.66l0.16,0.04l0.43,-0.0l-0.43,0.93l0.06,0.34l1.08,1.06l-0.28,1.09l-0.5,0.13l-0.47,0.28l-0.86,0.74l-0.1,0.16l-0.28,1.29l-1.81,-0.94l-0.9,-1.22l-1.0,-0.73l-1.1,-1.1l-0.55,-0.96l-1.11,-1.3l0.3,-0.75l0.59,0.46l0.42,-0.04l0.46,-0.54l1.0,-0.06l2.11,0.5l1.72,-0.03l1.06,0.64Z", "name": "Bosnia and Herzegovina"}, "BN": {"path": "M707.34,273.57l0.76,-0.72l1.59,-1.03l-0.18,1.93l-0.9,-0.06l-0.28,0.14l-0.31,0.51l-0.68,-0.78Z", "name": "Brunei"}, "BO": {"path": "M263.83,340.79l-0.23,-0.12l-2.86,-0.11l-0.28,0.17l-0.77,1.67l-1.17,-1.51l-0.18,-0.11l-3.28,-0.64l-0.28,0.1l-2.02,2.3l-1.43,0.29l-0.91,-3.35l-1.31,-2.88l0.75,-2.41l-0.09,-0.32l-1.23,-1.03l-0.31,-1.76l-0.05,-0.12l-1.12,-1.6l1.49,-2.62l0.01,-0.28l-1.0,-2.0l0.48,-0.72l0.02,-0.29l-0.37,-0.78l0.87,-1.13l0.06,-0.18l0.05,-2.17l0.12,-1.71l0.5,-0.8l0.01,-0.3l-1.9,-3.58l1.3,0.15l1.34,-0.05l0.23,-0.12l0.51,-0.7l2.12,-0.99l1.31,-0.93l2.81,-0.37l-0.21,1.51l0.01,0.13l0.29,0.91l-0.19,1.64l0.11,0.27l2.72,2.27l0.15,0.07l2.71,0.41l0.92,0.88l0.12,0.07l1.64,0.49l1.0,0.71l0.18,0.06l1.5,-0.02l1.24,0.64l0.1,1.31l0.05,0.14l0.44,0.68l0.02,0.73l-0.44,0.03l-0.27,0.39l0.96,2.99l0.28,0.21l4.43,0.1l-0.28,1.12l0.0,0.15l0.27,1.02l0.15,0.19l1.27,0.67l0.52,1.42l-0.42,1.91l-0.66,1.1l-0.04,0.2l0.21,1.3l-0.19,0.13l-0.01,-0.27l-0.15,-0.24l-2.33,-1.33l-0.14,-0.04l-2.38,-0.03l-4.36,0.76l-0.21,0.16l-1.2,2.29l-0.03,0.13l-0.06,1.37l-0.79,2.53l-0.05,-0.08Z", "name": "Bolivia"}, "JP": {"path": "M781.17,166.78l1.8,0.67l0.28,-0.04l1.38,-1.01l0.43,2.67l-3.44,0.77l-0.18,0.12l-2.04,2.79l-3.71,-1.94l-0.42,0.15l-1.29,3.11l-2.32,0.04l-0.3,-2.63l1.12,-2.1l2.51,-0.16l0.28,-0.25l0.73,-4.22l0.58,-1.9l2.59,2.84l2.0,1.1ZM773.66,187.36l-0.92,2.24l-0.01,0.2l0.4,1.3l-1.18,1.81l-3.06,1.28l-4.35,0.17l-0.19,0.08l-3.4,3.06l-1.36,-0.87l-0.1,-1.95l-0.34,-0.28l-4.35,0.62l-2.99,1.33l-2.87,0.05l-0.28,0.2l0.09,0.33l2.37,1.93l-1.57,4.44l-1.35,0.97l-0.9,-0.79l0.57,-2.32l-0.15,-0.34l-1.5,-0.77l-0.81,-1.53l2.04,-0.75l0.14,-0.1l1.28,-1.72l2.47,-1.43l1.84,-1.92l4.83,-0.82l2.62,0.57l0.33,-0.16l2.45,-4.77l1.38,1.14l0.38,0.0l5.1,-4.02l0.09,-0.11l1.57,-3.57l0.02,-0.16l-0.42,-3.22l0.94,-1.67l2.27,-0.47l1.26,3.82l-0.07,2.23l-2.26,2.86l-0.06,0.19l0.04,2.93ZM757.85,196.18l0.22,0.66l-1.11,1.33l-0.8,-0.7l-0.33,-0.04l-1.28,0.65l-0.14,0.15l-0.54,1.34l-1.17,-0.57l0.02,-1.03l1.2,-1.45l1.24,0.28l0.29,-0.1l0.9,-1.03l1.51,0.5Z", "name": "Japan"}, "BI": {"path": "M494.7,295.83l-0.14,-2.71l-0.04,-0.13l-0.34,-0.62l0.93,0.12l0.3,-0.16l0.67,-1.25l0.9,0.11l0.11,0.76l0.08,0.16l0.46,0.48l0.02,0.56l-0.55,0.48l-0.96,1.29l-0.82,0.82l-0.61,0.07Z", "name": "Burundi"}, "BJ": {"path": "M427.4,268.94l-1.58,0.22l-0.52,-1.45l0.11,-5.73l-0.08,-0.21l-0.43,-0.44l-0.09,-1.13l-0.09,-0.19l-1.52,-1.52l0.24,-1.01l0.7,-0.23l0.18,-0.16l0.45,-0.97l1.07,-0.21l0.19,-0.12l0.53,-0.73l0.73,-0.65l0.68,-0.0l1.69,1.3l-0.08,0.67l0.02,0.14l0.52,1.38l-0.44,0.9l-0.01,0.24l0.2,0.52l-1.1,1.42l-0.76,0.76l-0.08,0.13l-0.47,1.59l0.05,1.69l-0.13,3.79Z", "name": "Benin"}, "BT": {"path": "M650.38,213.78l0.88,0.75l-0.13,1.24l-1.77,0.07l-2.1,-0.18l-1.57,0.4l-2.02,-0.91l-0.02,-0.24l1.54,-1.87l1.18,-0.6l1.67,0.59l1.32,0.08l1.01,0.67Z", "name": "Bhutan"}, "JM": {"path": "M226.67,238.37l1.64,0.23l1.2,0.56l0.11,0.19l-1.25,0.03l-0.14,0.04l-0.65,0.37l-1.24,-0.37l-1.17,-0.77l0.11,-0.22l0.86,-0.15l0.52,0.08Z", "name": "Jamaica"}, "BW": {"path": "M484.91,331.96l0.53,0.52l0.82,1.53l2.83,2.86l0.14,0.08l0.85,0.22l0.03,0.81l0.74,1.66l0.21,0.17l1.87,0.39l1.17,0.87l-3.13,1.71l-2.3,2.01l-0.07,0.1l-0.82,1.74l-0.66,0.88l-1.24,0.19l-0.24,0.2l-0.65,1.98l-1.4,0.55l-1.9,-0.12l-1.2,-0.74l-1.06,-0.32l-0.22,0.02l-1.22,0.62l-0.14,0.14l-0.58,1.21l-1.16,0.79l-1.18,1.13l-1.5,0.23l-0.4,-0.68l0.22,-1.53l-0.04,-0.19l-1.48,-2.54l-0.11,-0.11l-0.53,-0.31l-0.0,-7.25l2.18,-0.08l0.29,-0.3l0.07,-9.0l1.63,-0.08l3.69,-0.86l0.84,0.93l0.38,0.05l1.53,-0.97l0.79,-0.03l1.3,-0.53l0.23,0.1l0.92,1.96Z", "name": "Botswana"}, "BR": {"path": "M259.49,274.87l1.42,0.25l1.97,0.62l0.28,-0.05l0.67,-0.55l1.76,-0.38l2.8,-0.94l0.12,-0.08l0.92,-0.96l0.05,-0.33l-0.15,-0.32l0.73,-0.06l0.36,0.35l-0.27,0.93l0.17,0.36l0.76,0.34l0.44,0.9l-0.58,0.73l-0.06,0.13l-0.4,2.13l0.03,0.19l0.62,1.22l0.17,1.11l0.11,0.19l1.54,1.18l0.15,0.06l1.23,0.12l0.29,-0.15l0.2,-0.36l0.71,-0.11l1.13,-0.44l0.79,-0.63l1.25,0.19l0.65,-0.08l1.32,0.2l0.32,-0.18l0.23,-0.51l-0.05,-0.31l-0.31,-0.37l0.11,-0.31l0.75,0.17l0.13,0.0l1.1,-0.24l1.34,0.5l1.08,0.51l0.33,-0.05l0.67,-0.58l0.27,0.05l0.28,0.57l0.31,0.17l1.2,-0.18l0.17,-0.08l1.03,-1.05l0.76,-1.82l1.39,-2.16l0.49,-0.07l0.52,1.17l1.4,4.37l0.2,0.2l1.14,0.35l0.05,1.39l-1.8,1.97l0.01,0.42l0.78,0.75l0.18,0.08l4.16,0.37l0.08,2.25l0.5,0.22l1.78,-1.54l2.98,0.85l4.07,1.5l1.07,1.28l-0.37,1.23l0.36,0.38l2.83,-0.75l4.8,1.3l3.75,-0.09l3.6,2.02l3.27,2.84l1.93,0.72l2.13,0.11l0.76,0.66l1.22,4.56l-0.96,4.03l-1.22,1.58l-3.52,3.51l-1.63,2.91l-1.75,2.09l-0.5,0.04l-0.26,0.19l-0.72,1.99l0.18,4.76l-0.95,5.56l-0.74,0.96l-0.06,0.15l-0.43,3.39l-2.49,3.34l-0.06,0.13l-0.4,2.56l-1.9,1.07l-0.13,0.16l-0.51,1.38l-2.59,0.0l-3.94,1.01l-1.82,1.19l-2.85,0.81l-3.01,2.17l-2.12,2.65l-0.06,0.13l-0.36,2.0l0.01,0.13l0.4,1.42l-0.45,2.63l-0.53,1.23l-1.76,1.53l-2.76,4.79l-2.16,2.15l-1.69,1.29l-0.09,0.12l-1.12,2.6l-1.3,1.26l-0.45,-1.02l0.99,-1.18l0.01,-0.37l-1.5,-1.95l-1.98,-1.54l-2.58,-1.77l-0.2,-0.05l-0.81,0.07l-2.42,-2.05l-0.25,-0.07l-0.77,0.14l2.75,-3.07l2.8,-2.61l1.67,-1.09l2.11,-1.49l0.13,-0.24l0.05,-2.15l-0.07,-0.2l-1.26,-1.54l-0.35,-0.09l-0.64,0.27l0.3,-0.95l0.34,-1.57l0.01,-1.52l-0.16,-0.26l-0.9,-0.48l-0.27,-0.01l-0.86,0.39l-0.65,-0.08l-0.23,-0.8l-0.23,-2.39l-0.04,-0.12l-0.47,-0.79l-0.14,-0.12l-1.69,-0.71l-0.25,0.01l-0.93,0.47l-2.29,-0.44l0.15,-3.3l-0.03,-0.15l-0.62,-1.22l0.57,-0.39l0.13,-0.3l-0.22,-1.37l0.67,-1.13l0.44,-2.04l-0.01,-0.17l-0.59,-1.61l-0.14,-0.16l-1.25,-0.66l-0.22,-0.82l0.35,-1.41l-0.28,-0.37l-4.59,-0.1l-0.78,-2.41l0.34,-0.02l0.28,-0.31l-0.03,-1.1l-0.05,-0.16l-0.45,-0.68l-0.1,-1.4l-0.16,-0.24l-1.45,-0.76l-0.14,-0.03l-1.48,0.02l-1.04,-0.73l-1.62,-0.48l-0.93,-0.9l-0.16,-0.08l-2.72,-0.41l-2.53,-2.12l0.18,-1.54l-0.01,-0.13l-0.29,-0.91l0.26,-1.83l-0.34,-0.34l-3.28,0.43l-0.14,0.05l-1.3,0.93l-2.16,1.01l-0.12,0.09l-0.47,0.65l-1.12,0.05l-1.84,-0.21l-0.12,0.01l-1.33,0.41l-0.82,-0.21l0.16,-3.6l-0.48,-0.26l-1.97,1.43l-1.96,-0.06l-0.86,-1.23l-0.22,-0.13l-1.23,-0.11l0.34,-0.69l-0.05,-0.33l-1.36,-1.5l-0.92,-2.0l0.45,-0.32l0.13,-0.25l-0.0,-0.87l1.34,-0.64l0.17,-0.32l-0.23,-1.23l0.56,-0.77l0.05,-0.13l0.16,-1.03l2.7,-1.61l2.01,-0.47l0.16,-0.09l0.24,-0.27l2.11,0.11l0.31,-0.25l1.13,-6.87l0.06,-1.12l-0.4,-1.53l-0.1,-0.15l-1.0,-0.82l0.01,-1.45l1.08,-0.32l0.39,0.2l0.44,-0.24l0.08,-0.96l-0.25,-0.32l-1.22,-0.22l-0.02,-1.01l4.57,0.05l0.22,-0.09l0.6,-0.63l0.44,0.5l0.47,1.42l0.45,0.16l0.27,-0.18l1.21,1.16l0.23,0.08l1.95,-0.16l0.23,-0.14l0.43,-0.67l1.76,-0.55l1.05,-0.42l0.18,-0.2l0.25,-0.92l1.65,-0.66l0.18,-0.35l-0.14,-0.53l-0.26,-0.22l-1.91,-0.19l-0.29,-1.33l0.1,-1.64l-0.15,-0.28l-0.44,-0.25Z", "name": "Brazil"}, "BS": {"path": "M227.51,216.69l0.3,0.18l-0.24,1.07l0.03,-1.04l-0.09,-0.21ZM226.5,224.03l-0.13,0.03l-0.54,-1.3l-0.09,-0.12l-0.78,-0.64l0.4,-1.26l0.33,0.05l0.79,2.0l0.01,1.24ZM225.76,216.5l-2.16,0.34l-0.07,-0.41l0.85,-0.16l1.36,0.07l0.02,0.16Z", "name": "The Bahamas"}, "BY": {"path": "M480.08,135.28l2.09,0.02l0.13,-0.03l2.72,-1.3l0.16,-0.19l0.55,-1.83l1.94,-1.06l0.15,-0.31l-0.2,-1.33l1.33,-0.52l2.58,-1.3l2.39,0.8l0.3,0.75l0.37,0.17l1.22,-0.39l2.18,0.75l0.2,1.36l-0.48,0.85l0.01,0.32l1.57,2.26l0.92,0.6l-0.1,0.41l0.19,0.35l1.61,0.57l0.48,0.6l-0.64,0.49l-1.91,-0.11l-0.18,0.05l-0.48,0.32l-0.1,0.39l0.57,1.1l0.51,1.78l-1.79,0.17l-0.18,0.08l-0.77,0.73l-0.09,0.19l-0.13,1.31l-0.75,-0.22l-2.11,0.15l-0.56,-0.66l-0.39,-0.06l-0.8,0.49l-0.79,-0.4l-0.13,-0.03l-1.94,-0.07l-2.76,-0.79l-2.58,-0.27l-1.98,0.07l-0.15,0.05l-1.31,0.86l-0.8,0.09l-0.04,-1.16l-0.03,-0.12l-0.63,-1.28l1.22,-0.56l0.17,-0.27l0.01,-1.35l-0.04,-0.15l-0.66,-1.24l-0.08,-1.12Z", "name": "Belarus"}, "BZ": {"path": "M198.03,239.7l0.28,0.19l0.43,-0.1l0.82,-1.42l0.0,0.07l0.29,0.29l0.16,0.0l-0.02,0.35l-0.39,1.08l0.02,0.25l0.16,0.29l-0.23,0.8l0.04,0.24l0.09,0.14l-0.25,1.12l-0.38,0.53l-0.33,0.06l-0.21,0.15l-0.41,0.74l-0.25,0.0l0.17,-2.58l0.01,-2.2Z", "name": "Belize"}, "RU": {"path": "M688.57,38.85l0.63,2.39l0.44,0.19l2.22,-1.23l7.18,0.07l5.54,2.49l1.85,1.77l-0.55,2.34l-2.64,1.42l-6.57,2.76l-1.95,1.5l0.12,0.53l3.09,0.68l3.69,1.23l0.21,-0.01l1.98,-0.81l1.16,2.84l0.5,0.08l1.03,-1.18l3.86,-0.74l7.79,0.78l0.56,2.05l0.27,0.22l10.47,0.71l0.32,-0.29l0.13,-3.34l4.98,0.8l3.96,-0.02l3.88,2.43l1.06,2.79l-1.38,1.83l0.01,0.38l3.15,3.64l0.1,0.08l3.94,1.86l0.4,-0.14l2.28,-4.56l3.75,1.94l0.22,0.02l4.18,-1.22l4.76,1.4l0.26,-0.04l1.74,-1.23l3.98,0.63l0.32,-0.41l-1.71,-4.1l3.0,-1.86l22.39,3.04l2.06,2.67l0.1,0.08l6.55,3.51l0.17,0.03l10.08,-0.86l4.86,0.73l1.91,1.72l-0.29,3.13l0.18,0.31l3.08,1.26l0.19,0.01l3.32,-0.9l4.37,-0.11l4.78,0.87l4.61,-0.48l4.26,3.82l0.32,0.05l3.1,-1.4l0.12,-0.45l-1.91,-2.67l0.92,-1.64l7.78,1.22l5.22,-0.26l7.12,2.1l9.6,5.22l6.4,4.15l-0.2,2.44l0.14,0.28l1.69,1.04l0.45,-0.31l-0.51,-2.66l6.31,0.58l4.52,3.61l-2.1,1.52l-4.02,0.42l-0.27,0.29l-0.06,3.83l-0.81,0.67l-2.14,-0.11l-1.91,-1.39l-3.19,-1.13l-0.51,-1.63l-0.21,-0.2l-2.54,-0.67l-0.13,-0.0l-2.69,0.5l-1.12,-1.19l0.48,-1.36l-0.38,-0.39l-3.0,0.98l-0.17,0.44l1.02,1.76l-1.27,1.55l-3.09,1.71l-3.15,-0.29l-0.3,0.18l0.07,0.34l2.22,2.1l1.47,3.22l1.15,1.09l0.25,1.41l-0.48,0.76l-4.47,-0.81l-0.17,0.02l-6.97,2.9l-2.2,0.44l-0.11,0.05l-3.83,2.68l-3.63,2.32l-0.1,0.11l-0.76,1.4l-3.3,-2.4l-0.3,-0.03l-6.31,2.85l-0.99,-1.21l-0.4,-0.06l-2.32,1.54l-3.23,-0.49l-0.33,0.2l-0.79,2.39l-2.97,3.51l-0.07,0.21l0.09,1.47l0.22,0.27l2.62,0.74l-0.3,4.7l-2.06,0.12l-0.26,0.2l-1.07,2.94l0.04,0.27l0.83,1.19l-4.03,1.63l-0.18,0.21l-0.83,3.72l-3.55,0.79l-0.23,0.23l-0.73,3.32l-3.22,2.76l-0.76,-1.88l-1.07,-4.88l-1.39,-7.59l1.17,-4.76l2.05,-2.08l0.09,-0.19l0.11,-1.46l3.67,-0.77l0.15,-0.08l4.47,-4.61l4.29,-3.82l4.48,-3.01l0.11,-0.14l2.01,-5.43l-0.31,-0.4l-3.04,0.33l-0.24,0.17l-1.47,3.11l-5.98,3.94l-1.91,-4.36l-0.33,-0.17l-6.46,1.3l-0.15,0.08l-6.27,6.33l-0.01,0.41l1.7,1.87l-5.04,0.87l-3.51,0.34l0.16,-2.32l-0.26,-0.32l-3.89,-0.56l-0.19,0.04l-3.02,1.77l-7.63,-0.63l-8.24,1.1l-0.16,0.07l-8.11,7.09l-9.6,8.31l0.16,0.52l3.79,0.42l1.16,2.03l0.17,0.14l2.43,0.76l0.31,-0.08l1.5,-1.61l2.49,0.2l3.46,3.6l0.08,2.67l-1.91,3.26l-0.04,0.14l-0.21,3.91l-1.11,5.09l-3.73,4.55l-0.87,2.21l-6.73,7.14l-1.59,1.77l-3.23,1.72l-1.38,0.03l-1.48,-1.39l-0.37,-0.03l-3.36,2.22l-0.11,0.14l-0.16,0.42l-0.01,-1.09l1.0,-0.06l0.28,-0.27l0.36,-3.6l-0.61,-2.51l1.85,-0.94l2.94,0.53l0.32,-0.15l1.71,-3.1l0.84,-3.38l0.97,-1.18l1.32,-2.88l-0.34,-0.42l-4.14,0.95l-2.18,1.25l-3.51,-0.0l-0.95,-2.81l-0.1,-0.14l-2.97,-2.3l-0.11,-0.05l-4.19,-1.0l-0.89,-3.08l-0.87,-2.03l-0.95,-1.46l-1.54,-3.37l-0.12,-0.14l-2.27,-1.28l-3.83,-1.02l-3.37,0.1l-3.11,0.61l-0.13,0.06l-2.07,1.69l0.04,0.49l1.23,0.72l0.03,1.53l-1.34,1.05l-2.26,3.51l-0.05,0.17l0.02,1.27l-3.25,1.9l-2.87,-1.17l-0.14,-0.02l-2.86,0.26l-1.22,-1.02l-0.12,-0.06l-1.5,-0.35l-0.23,0.04l-3.62,2.27l-3.24,0.53l-2.28,0.79l-3.08,-0.51l-2.24,0.03l-1.49,-1.61l-2.45,-1.57l-0.11,-0.04l-2.6,-0.43l-3.17,0.43l-2.31,0.59l-3.31,-1.28l-0.45,-2.31l-0.21,-0.23l-2.94,-0.85l-2.26,-0.39l-2.77,-1.36l-0.37,0.09l-2.59,3.45l-0.03,0.32l0.91,1.74l-2.15,2.01l-3.47,-0.79l-2.44,-0.12l-1.59,-1.46l-0.2,-0.08l-2.55,-0.05l-2.12,-0.98l-0.24,-0.01l-3.85,1.57l-4.74,2.79l-2.59,0.55l-0.79,0.21l-1.21,-1.81l-0.29,-0.13l-3.05,0.41l-0.96,-1.25l-0.14,-0.1l-1.65,-0.6l-1.15,-1.82l-0.13,-0.12l-1.38,-0.6l-0.19,-0.02l-3.49,0.82l-3.35,-1.85l-0.38,0.08l-1.08,1.4l-5.36,-8.17l-3.02,-2.52l0.72,-0.85l0.01,-0.38l-0.37,-0.08l-6.22,3.21l-1.98,0.16l0.17,-1.51l-0.2,-0.31l-3.22,-1.17l-0.19,-0.0l-2.3,0.74l-0.72,-3.27l-0.24,-0.23l-4.5,-0.75l-0.21,0.04l-2.2,1.42l-6.21,1.27l-0.11,0.05l-1.16,0.81l-9.3,1.19l-0.18,0.09l-1.15,1.17l-0.02,0.39l1.56,2.01l-2.02,0.74l-0.16,0.42l0.35,0.68l-2.18,1.49l0.02,0.51l3.83,2.16l-0.45,1.13l-3.31,-0.13l-0.25,0.12l-0.57,0.77l-2.97,-1.59l-0.15,-0.04l-3.97,0.07l-0.13,0.03l-2.53,1.32l-2.84,-1.28l-5.52,-2.3l-0.12,-0.02l-3.91,0.09l-0.16,0.05l-5.17,3.6l-0.13,0.21l-0.25,1.89l-2.17,-1.6l-0.44,0.1l-2.0,3.59l0.06,0.37l0.55,0.5l-1.32,2.23l0.04,0.36l2.13,2.17l0.23,0.09l1.7,-0.08l1.42,1.89l-0.23,1.5l0.19,0.32l0.94,0.38l-0.89,1.44l-2.3,0.49l-0.17,0.11l-2.49,3.2l0.0,0.37l2.2,2.81l-0.23,1.93l0.06,0.22l2.56,3.32l-1.27,1.02l-0.4,0.66l-0.8,-0.15l-1.65,-1.75l-0.18,-0.09l-0.66,-0.09l-1.45,-0.64l-0.72,-1.16l-0.18,-0.13l-2.34,-0.63l-0.17,0.0l-1.32,0.41l-0.31,-0.4l-0.12,-0.09l-3.49,-1.48l-3.67,-0.49l-2.1,-0.52l-0.3,0.1l-0.12,0.14l-2.96,-2.4l-2.89,-1.19l-1.69,-1.42l1.27,-0.35l0.16,-0.1l2.08,-2.61l-0.04,-0.41l-1.02,-0.9l3.21,-1.12l0.2,-0.31l-0.07,-0.69l-0.37,-0.26l-1.86,0.42l0.05,-0.86l1.11,-0.76l2.35,-0.23l0.25,-0.19l0.39,-1.07l0.0,-0.19l-0.51,-1.64l0.95,-1.58l0.04,-0.16l-0.03,-0.95l-0.22,-0.28l-3.69,-1.06l-1.43,0.02l-1.45,-1.44l-0.29,-0.08l-1.83,0.49l-2.88,-1.04l0.04,-0.42l-0.04,-0.18l-0.89,-1.43l-0.23,-0.14l-1.77,-0.14l-0.13,-0.66l0.52,-0.56l0.01,-0.4l-1.6,-1.9l-0.27,-0.1l-2.55,0.32l-0.71,-0.16l-0.3,0.1l-0.53,0.63l-0.58,-0.08l-0.56,-1.97l-0.48,-0.94l0.17,-0.11l1.92,0.11l0.2,-0.06l0.97,-0.74l0.05,-0.42l-0.72,-0.91l-0.13,-0.1l-1.43,-0.51l0.09,-0.36l-0.13,-0.33l-0.97,-0.59l-1.43,-2.06l0.44,-0.77l0.04,-0.19l-0.25,-1.64l-0.2,-0.24l-2.45,-0.84l-0.19,-0.0l-1.05,0.34l-0.25,-0.62l-0.18,-0.17l-2.5,-0.84l-0.74,-1.93l-0.21,-1.7l-0.13,-0.21l-0.92,-0.63l0.83,-0.89l0.07,-0.27l-0.71,-3.26l1.69,-2.01l0.03,-0.34l-0.24,-0.41l2.63,-1.9l-0.01,-0.49l-2.31,-1.57l5.08,-4.61l2.33,-2.24l1.01,-2.08l-0.09,-0.37l-3.52,-2.56l0.94,-2.38l-0.04,-0.29l-2.14,-2.86l1.61,-3.35l-0.01,-0.29l-2.81,-4.58l2.19,-3.04l-0.06,-0.42l-3.7,-2.76l0.32,-2.67l1.87,-0.38l4.26,-1.77l2.46,-1.47l3.96,2.58l0.12,0.05l6.81,1.04l9.37,4.87l1.81,1.92l0.15,2.55l-2.61,2.06l-3.95,1.07l-11.1,-3.15l-0.17,0.0l-1.84,0.53l-0.1,0.53l3.97,2.97l0.15,1.77l0.16,4.14l0.19,0.27l3.21,1.22l1.94,1.03l0.44,-0.22l0.32,-1.94l-0.07,-0.25l-1.32,-1.52l1.25,-1.2l5.87,2.45l0.24,-0.01l2.11,-0.98l0.13,-0.42l-1.55,-2.75l5.52,-3.84l2.13,0.22l2.28,1.42l0.43,-0.12l1.46,-2.87l-0.04,-0.33l-1.97,-2.37l1.14,-2.38l-0.02,-0.3l-1.42,-2.07l6.15,1.22l1.14,1.92l-2.74,0.46l-0.25,0.3l0.02,2.36l0.12,0.24l1.97,1.44l0.25,0.05l3.87,-0.91l0.22,-0.23l0.58,-2.55l5.09,-1.98l8.67,-3.69l1.22,0.14l-2.06,2.2l0.18,0.5l3.11,0.45l0.23,-0.07l1.71,-1.41l4.59,-0.12l0.12,-0.03l3.53,-1.72l2.7,2.48l0.42,-0.01l2.85,-2.88l-0.0,-0.43l-2.42,-2.35l1.0,-1.13l7.2,1.31l3.42,1.36l9.06,4.97l0.39,-0.08l1.67,-2.27l-0.04,-0.4l-2.46,-2.23l-0.06,-0.82l-0.26,-0.27l-2.64,-0.38l0.69,-1.76l0.0,-0.22l-1.32,-3.47l-0.07,-1.27l4.52,-4.09l0.08,-0.11l1.6,-4.18l1.67,-0.84l6.33,1.2l0.46,2.31l-2.31,3.67l0.05,0.38l1.49,1.41l0.77,3.04l-0.56,6.05l0.09,0.24l2.62,2.54l-0.99,2.65l-4.87,5.96l0.17,0.48l2.86,0.61l0.31,-0.13l0.94,-1.42l2.67,-1.04l0.18,-0.19l0.64,-2.01l2.11,-1.98l0.05,-0.37l-1.38,-2.32l1.11,-2.74l-0.24,-0.41l-2.53,-0.33l-0.53,-2.16l1.96,-4.42l-0.05,-0.32l-3.03,-3.48l4.21,-2.94l0.12,-0.3l-0.52,-3.04l0.72,-0.06l1.18,2.35l-0.97,4.39l0.2,0.35l2.68,0.84l0.37,-0.38l-1.05,-3.07l3.89,-1.71l5.05,-0.24l4.55,2.62l0.36,-0.05l0.05,-0.36l-2.19,-3.84l-0.23,-4.78l4.07,-0.92l5.98,0.21l5.47,-0.64l0.2,-0.48l-1.88,-2.37l2.65,-2.99l2.75,-0.13l0.12,-0.03l4.82,-2.48l6.56,-0.67l0.23,-0.14l0.76,-1.27l6.33,-0.46l1.97,1.11l0.28,0.01l5.55,-2.71l4.53,0.08l0.29,-0.21l0.67,-2.18l2.29,-2.15l5.75,-2.13l3.48,1.4l-2.7,1.03l-0.19,0.31l0.26,0.26l5.47,0.78ZM871.83,65.73l0.25,-0.15l1.99,0.01l3.3,1.2l-0.08,0.22l-2.41,1.03l-5.73,0.49l-0.31,-1.0l2.99,-1.8ZM797.64,48.44l-2.22,1.51l-3.85,-0.43l-4.35,-1.85l0.42,-1.13l4.42,0.72l5.59,1.17ZM783.82,46.06l-1.71,3.25l-9.05,-0.14l-4.11,1.15l-4.64,-3.04l1.21,-3.13l3.11,-0.91l6.53,0.22l8.66,2.59ZM780.37,145.71l2.28,5.23l-3.09,-0.89l-0.37,0.19l-1.54,4.65l0.04,0.27l2.38,3.17l-0.05,1.4l-1.41,-1.41l-0.46,0.04l-1.23,1.81l-0.33,-1.86l0.28,-3.1l-0.28,-3.41l0.58,-2.46l0.11,-4.39l-0.03,-0.13l-1.44,-3.2l0.21,-4.39l2.19,-1.49l0.09,-0.41l-0.81,-1.3l0.48,-0.21l0.56,1.94l0.86,3.23l-0.05,3.36l1.03,3.35ZM780.16,57.18l-3.4,0.03l-5.06,-0.53l1.97,-1.59l2.95,-0.42l3.35,1.75l0.18,0.77ZM683.84,31.18l-13.29,1.97l4.16,-6.56l1.88,-0.58l1.77,0.34l6.08,3.02l-0.6,1.8ZM670.94,28.02l-5.18,0.65l-6.89,-1.58l-4.03,-2.07l-1.88,-3.98l-0.18,-0.16l-2.8,-0.93l5.91,-3.62l5.25,-1.29l4.73,2.88l5.63,5.44l-0.57,4.66ZM564.37,68.98l-0.85,0.23l-7.93,-0.57l-0.6,-1.84l-0.21,-0.2l-4.34,-1.18l-0.3,-2.08l2.34,-0.92l0.19,-0.29l-0.08,-2.43l4.85,-4.0l-0.12,-0.52l-1.68,-0.43l5.47,-3.94l0.11,-0.33l-0.6,-2.02l5.36,-2.55l8.22,-3.27l8.29,-0.96l4.34,-1.94l4.67,-0.65l1.45,1.72l-1.43,1.37l-8.8,2.52l-7.65,2.42l-7.92,4.84l-3.73,4.75l-3.92,4.58l-0.07,0.23l0.51,3.88l0.11,0.2l4.32,3.39ZM548.86,18.57l-3.28,0.75l-2.25,0.44l-0.22,0.19l-0.3,0.81l-2.67,0.86l-2.27,-1.14l1.2,-1.51l-0.23,-0.49l-3.14,-0.1l2.48,-0.54l3.55,-0.07l0.44,1.36l0.49,0.12l1.4,-1.35l2.2,-0.9l3.13,1.08l-0.54,0.49ZM477.5,133.25l-4.21,0.05l-2.69,-0.34l0.39,-1.03l3.24,-1.06l2.51,0.58l0.85,0.43l-0.2,0.71l-0.0,0.15l0.12,0.52Z", "name": "Russia"}, "RW": {"path": "M497.03,288.12l0.78,1.11l-0.12,1.19l-0.49,0.21l-1.25,-0.15l-0.3,0.16l-0.67,1.24l-1.01,-0.13l0.16,-0.92l0.22,-0.12l0.15,-0.24l0.09,-1.37l0.49,-0.48l0.42,0.18l0.25,-0.01l1.26,-0.65Z", "name": "Rwanda"}, "RS": {"path": "M469.75,168.65l0.21,-0.21l0.36,-1.44l-0.08,-0.29l-1.06,-1.03l0.54,-1.16l-0.28,-0.43l-0.26,0.0l0.55,-0.67l-0.01,-0.39l-0.77,-0.86l-0.45,-0.89l1.56,-0.67l1.39,0.12l1.22,1.1l0.26,0.91l0.16,0.19l1.38,0.66l0.17,1.12l0.14,0.21l1.46,0.9l0.35,-0.03l0.62,-0.54l0.09,0.06l-0.28,0.25l-0.03,0.42l0.29,0.34l-0.44,0.5l-0.07,0.26l0.22,1.12l0.07,0.14l1.02,1.1l-0.81,0.84l-0.42,0.96l0.04,0.3l0.12,0.15l-0.15,0.16l-1.04,0.04l-0.39,0.08l0.33,-0.81l-0.29,-0.41l-0.21,0.01l-0.39,-0.45l-0.13,-0.09l-0.32,-0.11l-0.27,-0.4l-0.14,-0.11l-0.4,-0.16l-0.31,-0.37l-0.34,-0.09l-0.45,0.17l-0.18,0.18l-0.29,0.84l-0.96,-0.65l-0.81,-0.33l-0.32,-0.37l-0.22,-0.18Z", "name": "Republic of Serbia"}, "LT": {"path": "M478.13,133.31l-0.14,-0.63l0.25,-0.88l-0.15,-0.35l-1.17,-0.58l-2.43,-0.57l-0.45,-2.51l2.58,-0.97l4.14,0.22l2.3,-0.32l0.26,0.54l0.22,0.17l1.26,0.22l2.25,1.6l0.19,1.23l-1.87,1.01l-0.14,0.18l-0.54,1.83l-2.54,1.21l-2.18,-0.02l-0.52,-0.91l-0.18,-0.14l-1.11,-0.32Z", "name": "Lithuania"}, "LU": {"path": "M435.95,147.99l0.33,0.49l-0.11,1.07l-0.39,0.04l-0.29,-0.15l0.21,-1.4l0.25,-0.05Z", "name": "Luxembourg"}, "LR": {"path": "M401.37,273.67l-0.32,0.01l-2.48,-1.15l-2.24,-1.89l-2.14,-1.38l-1.47,-1.42l0.44,-0.59l0.05,-0.13l0.12,-0.65l1.07,-1.3l1.08,-1.09l0.52,-0.07l0.43,-0.18l0.84,1.24l-0.15,0.89l0.07,0.25l0.49,0.54l0.22,0.1l0.71,0.01l0.27,-0.16l0.42,-0.83l0.19,0.02l-0.06,0.52l0.23,1.12l-0.5,1.03l0.06,0.35l0.73,0.69l0.14,0.08l0.71,0.15l0.92,0.91l0.06,0.76l-0.17,0.22l-0.06,0.15l-0.17,1.8Z", "name": "Liberia"}, "RO": {"path": "M477.94,155.19l1.02,-0.64l1.49,0.33l1.52,0.01l1.09,0.73l0.32,0.01l0.81,-0.46l1.8,-0.3l0.18,-0.1l0.54,-0.64l0.86,0.0l0.64,0.26l0.71,0.87l0.8,1.35l1.39,1.81l0.07,1.25l-0.26,1.3l0.01,0.15l0.45,1.42l0.15,0.18l1.12,0.57l0.25,0.01l1.05,-0.45l0.86,0.4l0.03,0.43l-0.92,0.51l-0.63,-0.24l-0.4,0.22l-0.64,3.41l-1.12,-0.24l-1.78,-1.09l-0.23,-0.04l-2.95,0.71l-1.25,0.77l-3.55,-0.16l-1.89,-0.47l-0.14,-0.0l-0.75,0.17l-0.61,-1.07l-0.3,-0.36l0.36,-0.32l-0.04,-0.48l-0.62,-0.38l-0.36,0.03l-0.62,0.54l-1.15,-0.71l-0.18,-1.14l-0.17,-0.22l-1.4,-0.67l-0.24,-0.86l-0.09,-0.14l-0.96,-0.87l1.49,-0.44l0.16,-0.11l1.51,-2.14l1.15,-2.09l1.44,-0.63Z", "name": "Romania"}, "GW": {"path": "M383.03,256.73l-1.12,-0.88l-0.14,-0.06l-0.94,-0.15l-0.43,-0.54l0.01,-0.27l-0.13,-0.26l-0.68,-0.48l-0.05,-0.16l0.99,-0.31l0.77,0.08l0.15,-0.02l0.61,-0.26l4.25,0.1l-0.02,0.44l-0.19,0.18l-0.08,0.29l0.17,0.66l-0.17,0.14l-0.44,0.0l-0.16,0.05l-0.57,0.37l-0.66,-0.04l-0.24,0.1l-0.92,1.03Z", "name": "Guinea Bissau"}, "GT": {"path": "M195.13,249.89l-1.05,-0.35l-1.5,-0.04l-1.06,-0.47l-1.19,-0.93l0.04,-0.53l0.27,-0.55l-0.03,-0.31l-0.24,-0.32l1.02,-1.77l3.04,-0.01l0.3,-0.28l0.06,-0.88l-0.19,-0.3l-0.3,-0.11l-0.23,-0.45l-0.11,-0.12l-0.9,-0.58l-0.35,-0.33l0.37,-0.0l0.3,-0.3l0.0,-1.15l4.05,0.02l-0.02,1.74l-0.2,2.89l0.3,0.32l0.67,-0.0l0.75,0.42l0.4,-0.11l-0.62,0.53l-1.17,0.7l-0.13,0.16l-0.18,0.49l0.0,0.21l0.14,0.34l-0.35,0.44l-0.49,0.13l-0.2,0.41l0.03,0.06l-0.27,0.16l-0.86,0.64l-0.12,0.22ZM199.35,245.38l0.07,-0.13l0.05,0.02l-0.13,0.11Z", "name": "Guatemala"}, "GR": {"path": "M487.2,174.55l-0.64,1.54l-0.43,0.24l-1.41,-0.08l-1.28,-0.28l-0.14,0.0l-3.03,0.77l-0.13,0.51l1.39,1.34l-0.78,0.29l-1.2,0.0l-1.23,-1.42l-0.47,0.02l-0.47,0.65l-0.04,0.27l0.56,1.76l0.06,0.11l1.02,1.12l-0.66,0.45l-0.04,0.46l1.39,1.35l1.15,0.79l0.02,1.06l-1.91,-0.63l-0.36,0.42l0.56,1.12l-1.2,0.23l-0.22,0.4l0.8,2.14l-1.15,0.02l-1.89,-1.15l-0.89,-2.19l-0.43,-1.91l-0.05,-0.11l-0.98,-1.35l-1.24,-1.62l-0.13,-0.63l1.07,-1.32l0.06,-0.14l0.13,-0.81l0.68,-0.36l0.16,-0.25l0.03,-0.54l1.4,-0.23l0.12,-0.05l0.87,-0.6l1.26,0.05l0.25,-0.11l0.34,-0.43l0.33,-0.07l1.81,0.08l0.13,-0.02l1.87,-0.77l1.64,0.97l0.19,0.04l2.28,-0.28l0.26,-0.29l0.02,-0.95l0.56,0.36ZM480.44,192.0l1.05,0.74l0.01,0.0l-1.26,-0.23l0.2,-0.51ZM481.76,192.79l1.86,-0.15l1.53,0.17l-0.02,0.19l0.34,0.3l-2.28,0.15l0.01,-0.13l-0.25,-0.31l-1.19,-0.22ZM485.65,193.28l0.65,-0.16l-0.05,0.12l-0.6,0.04Z", "name": "Greece"}, "GQ": {"path": "M444.81,282.04l-0.21,-0.17l0.74,-2.4l3.56,0.05l0.02,2.42l-3.34,-0.02l-0.76,0.13Z", "name": "Equatorial Guinea"}, "GY": {"path": "M271.34,264.25l1.43,0.81l1.44,1.53l0.06,1.19l0.28,0.28l0.84,0.05l2.13,1.92l-0.34,1.93l-1.37,0.59l-0.17,0.34l0.12,0.51l-0.43,1.21l0.03,0.26l1.11,1.82l0.26,0.14l0.56,0.0l0.32,1.29l1.25,1.78l-0.08,0.01l-1.34,-0.21l-0.24,0.06l-0.78,0.64l-1.06,0.41l-0.76,0.1l-0.22,0.15l-0.18,0.32l-0.95,-0.1l-1.38,-1.05l-0.19,-1.13l-0.6,-1.18l0.37,-1.96l0.65,-0.83l0.03,-0.32l-0.57,-1.17l-0.15,-0.14l-0.62,-0.27l0.25,-0.85l-0.08,-0.3l-0.58,-0.58l-0.24,-0.09l-1.15,0.1l-1.41,-1.58l0.48,-0.49l0.09,-0.22l-0.04,-0.92l1.31,-0.34l0.73,-0.52l0.04,-0.44l-0.75,-0.82l0.16,-0.66l1.74,-1.3Z", "name": "Guyana"}, "GE": {"path": "M525.41,174.19l0.26,-0.88l-0.0,-0.17l-0.63,-2.06l-0.1,-0.15l-1.45,-1.12l-0.11,-0.05l-1.31,-0.33l-0.66,-0.69l1.97,0.48l3.65,0.49l3.3,1.41l0.39,0.5l0.33,0.1l1.43,-0.45l2.14,0.58l0.7,1.14l0.13,0.12l1.06,0.47l-0.18,0.11l-0.08,0.43l1.08,1.41l-0.06,0.06l-1.16,-0.15l-1.82,-0.84l-0.31,0.04l-0.55,0.44l-3.29,0.44l-2.32,-1.41l-0.17,-0.04l-2.25,0.12Z", "name": "Georgia"}, "GB": {"path": "M412.82,118.6l-2.31,3.4l-0.0,0.33l0.31,0.13l2.52,-0.49l2.34,0.02l-0.56,2.51l-2.22,3.13l0.22,0.47l2.43,0.21l2.35,4.35l0.17,0.14l1.58,0.51l1.49,3.78l0.73,1.37l0.2,0.15l2.76,0.59l-0.25,1.75l-1.18,0.91l-0.08,0.39l0.87,1.49l-1.96,1.51l-3.31,-0.02l-4.15,0.88l-1.07,-0.59l-0.35,0.04l-1.55,1.44l-2.17,-0.35l-0.22,0.05l-1.61,1.15l-0.78,-0.38l3.31,-3.12l2.18,-0.7l0.21,-0.31l-0.26,-0.27l-3.78,-0.54l-0.48,-0.9l2.3,-0.92l0.13,-0.46l-1.29,-1.71l0.39,-1.83l3.46,0.29l0.32,-0.24l0.37,-1.99l-0.06,-0.24l-1.71,-2.17l-0.18,-0.11l-2.91,-0.58l-0.43,-0.68l0.82,-1.4l-0.03,-0.35l-0.82,-0.97l-0.46,0.01l-0.85,1.05l-0.11,-2.6l-0.05,-0.16l-1.19,-1.7l0.86,-3.53l1.81,-2.75l1.88,0.26l2.38,-0.24ZM406.39,132.84l-1.09,1.92l-1.65,-0.62l-1.26,0.02l0.41,-1.46l0.0,-0.16l-0.42,-1.51l1.62,-0.11l2.39,1.92Z", "name": "United Kingdom"}, "GA": {"path": "M448.76,294.47l-2.38,-2.34l-1.63,-2.04l-1.46,-2.48l0.06,-0.66l0.54,-0.81l0.61,-1.82l0.46,-1.69l0.63,-0.11l3.62,0.03l0.3,-0.3l-0.02,-2.75l0.88,-0.12l1.47,0.32l0.13,0.0l1.39,-0.3l-0.13,0.87l0.03,0.19l0.7,1.29l0.3,0.16l1.74,-0.19l0.36,0.29l-1.01,2.7l0.05,0.29l1.13,1.42l0.25,1.82l-0.3,1.56l-0.64,0.99l-1.93,-0.09l-1.26,-1.13l-0.5,0.17l-0.16,0.91l-1.48,0.27l-0.12,0.05l-0.86,0.63l-0.08,0.39l0.81,1.42l-1.48,1.08Z", "name": "Gabon"}, "GN": {"path": "M399.83,265.31l-0.69,-0.06l-0.3,0.16l-0.43,0.85l-0.39,-0.01l-0.3,-0.33l0.14,-0.87l-0.05,-0.22l-1.05,-1.54l-0.37,-0.11l-0.61,0.27l-0.84,0.12l0.02,-0.54l-0.04,-0.17l-0.35,-0.57l0.07,-0.63l-0.03,-0.17l-0.57,-1.11l-0.7,-0.9l-0.24,-0.12l-2.0,-0.0l-0.19,0.07l-0.51,0.42l-0.6,0.05l-0.21,0.11l-0.43,0.55l-0.3,0.7l-1.04,0.86l-0.91,-1.24l-1.0,-1.02l-0.69,-0.37l-0.52,-0.42l-0.3,-1.11l-0.37,-0.56l-0.1,-0.1l-0.4,-0.23l0.77,-0.85l0.62,0.04l0.18,-0.05l0.58,-0.38l0.46,-0.0l0.19,-0.07l0.39,-0.34l0.1,-0.3l-0.17,-0.67l0.15,-0.14l0.09,-0.2l0.03,-0.57l0.87,0.02l1.76,0.6l0.13,0.01l0.55,-0.06l0.22,-0.13l0.08,-0.12l1.18,0.17l0.17,-0.02l0.09,0.56l0.3,0.25l0.4,-0.0l0.14,-0.03l0.56,-0.29l0.23,0.05l0.63,0.59l0.15,0.07l1.07,0.2l0.24,-0.06l0.65,-0.52l0.77,-0.32l0.55,-0.32l0.3,0.04l0.44,0.45l0.34,0.74l0.84,0.87l-0.35,0.45l-0.06,0.15l-0.1,0.82l0.42,0.31l0.35,-0.16l0.05,0.04l-0.1,0.59l0.09,0.27l0.42,0.4l-0.06,0.02l-0.18,0.21l-0.2,0.86l0.03,0.21l0.56,1.02l0.52,1.71l-0.65,0.21l-0.15,0.12l-0.24,0.35l-0.03,0.28l0.16,0.41l-0.1,0.76l-0.12,0.0Z", "name": "Guinea"}, "GM": {"path": "M379.18,251.48l0.15,-0.55l2.51,-0.07l0.21,-0.09l0.48,-0.52l0.58,-0.03l0.91,0.58l0.16,0.05l0.78,0.01l0.14,-0.03l0.59,-0.31l0.16,0.24l-0.71,0.38l-0.94,-0.04l-1.02,-0.51l-0.3,0.01l-0.86,0.55l-0.37,0.02l-0.14,0.04l-0.53,0.31l-1.81,-0.04Z", "name": "Gambia"}, "GL": {"path": "M304.13,6.6l8.19,-3.63l8.72,0.28l0.19,-0.06l3.12,-2.28l8.75,-0.61l19.94,0.8l14.93,4.75l-3.92,2.01l-9.52,0.27l-13.48,0.6l-0.27,0.2l0.09,0.33l1.26,1.09l0.22,0.07l8.81,-0.67l7.49,2.07l0.19,-0.01l4.68,-1.78l1.76,1.84l-2.59,3.26l-0.01,0.36l0.34,0.11l6.35,-2.2l12.09,-2.32l7.31,1.14l1.17,2.13l-9.9,4.05l-1.43,1.32l-7.91,0.98l-0.26,0.31l0.29,0.29l5.25,0.25l-2.63,3.72l-2.02,3.61l-0.04,0.15l0.08,6.05l0.07,0.19l2.61,3.0l-3.4,0.2l-4.12,1.66l-0.04,0.54l4.5,2.67l0.53,3.9l-2.39,0.42l-0.19,0.48l2.91,3.83l-5.0,0.32l-0.27,0.22l0.12,0.33l2.69,1.84l-0.65,1.35l-3.36,0.71l-3.46,0.01l-0.21,0.51l3.05,3.15l0.02,1.53l-4.54,-1.79l-0.32,0.06l-1.29,1.26l0.11,0.5l3.33,1.15l3.17,2.74l0.85,3.29l-4.0,0.78l-1.83,-1.66l-3.1,-2.64l-0.36,-0.02l-0.13,0.33l0.8,2.92l-2.76,2.26l-0.09,0.33l0.28,0.2l6.59,0.19l2.47,0.18l-5.86,3.38l-6.76,3.43l-7.26,1.48l-2.73,0.02l-0.16,0.05l-2.67,1.72l-3.44,4.42l-5.28,2.86l-1.73,0.18l-3.33,1.01l-3.59,0.96l-0.15,0.1l-2.15,2.52l-0.07,0.19l-0.03,2.76l-1.21,2.49l-4.03,3.1l-0.1,0.33l0.98,2.94l-2.31,6.57l-3.21,0.21l-3.6,-3.0l-0.19,-0.07l-4.9,-0.02l-2.29,-1.97l-1.69,-3.78l-4.31,-4.86l-1.23,-2.52l-0.34,-3.58l-0.08,-0.17l-3.35,-3.67l0.85,-2.92l-0.09,-0.31l-1.5,-1.34l2.33,-4.7l3.67,-1.57l0.15,-0.13l1.02,-1.93l0.52,-3.47l-0.44,-0.31l-2.85,1.57l-1.33,0.64l-2.12,0.59l-2.81,-1.32l-0.15,-2.79l0.88,-2.17l2.09,-0.06l5.07,1.2l0.34,-0.17l-0.11,-0.37l-4.3,-2.9l-2.24,-1.58l-0.25,-0.05l-2.38,0.62l-1.7,-0.93l2.62,-4.1l-0.03,-0.36l-1.51,-1.75l-1.97,-3.3l-3.01,-5.21l-0.1,-0.11l-3.04,-1.85l0.03,-1.94l-0.18,-0.28l-6.82,-3.01l-5.35,-0.38l-6.69,0.21l-6.03,0.37l-2.81,-1.59l-3.84,-2.9l5.94,-1.5l5.01,-0.28l0.28,-0.29l-0.26,-0.31l-10.68,-1.38l-5.38,-2.1l0.27,-1.68l9.3,-2.6l9.18,-2.68l0.19,-0.16l0.97,-2.05l-0.18,-0.42l-6.29,-1.91l1.81,-1.9l8.58,-4.05l3.6,-0.63l0.23,-0.4l-0.92,-2.37l5.59,-1.5l7.66,-0.95l7.58,-0.05l2.65,1.84l0.31,0.02l6.52,-3.29l5.85,2.24l3.55,0.49l5.17,1.95l0.38,-0.16l-0.13,-0.39l-5.77,-3.16l0.29,-2.26Z", "name": "Greenland"}, "KW": {"path": "M540.87,207.81l0.41,0.94l-0.18,0.51l0.0,0.21l0.65,1.66l-1.15,0.05l-0.54,-1.12l-0.24,-0.17l-1.73,-0.2l1.44,-2.06l1.33,0.18Z", "name": "Kuwait"}, "GH": {"path": "M423.16,269.88l-3.58,1.34l-1.41,0.87l-2.13,0.69l-1.91,-0.61l0.09,-0.75l-0.03,-0.17l-1.04,-2.07l0.62,-2.7l1.04,-2.08l0.03,-0.19l-1.0,-5.46l0.05,-1.12l4.04,-0.11l1.08,0.18l0.18,-0.03l0.72,-0.36l0.75,0.13l-0.11,0.48l0.06,0.26l0.98,1.22l-0.0,1.77l0.24,1.99l0.05,0.13l0.55,0.81l-0.52,2.14l0.19,1.37l0.69,1.66l0.38,0.62Z", "name": "Ghana"}, "OM": {"path": "M568.16,231.0l-0.08,0.1l-0.84,1.61l-0.93,-0.11l-0.27,0.11l-0.58,0.73l-0.4,1.32l-0.01,0.14l0.29,1.61l-0.07,0.09l-1.0,-0.01l-0.16,0.04l-1.56,0.97l-0.14,0.2l-0.23,1.17l-0.41,0.4l-1.44,-0.02l-0.17,0.05l-0.98,0.65l-0.13,0.25l0.01,0.87l-0.97,0.57l-1.27,-0.22l-0.19,0.03l-1.63,0.84l-0.88,0.11l-2.55,-5.57l7.2,-2.49l0.19,-0.19l1.67,-5.23l-0.03,-0.25l-1.1,-1.78l0.05,-0.89l0.68,-1.03l0.05,-0.16l0.01,-0.89l0.96,-0.44l0.07,-0.5l-0.32,-0.26l0.16,-1.31l0.85,-0.01l1.03,1.67l0.09,0.09l1.4,0.96l0.11,0.05l1.82,0.34l1.37,0.45l1.75,2.32l0.13,0.1l0.7,0.26l-0.0,0.3l-1.25,2.19l-1.01,0.8ZM561.88,218.47l-0.01,0.02l-0.15,-0.29l0.3,-0.38l-0.14,0.65Z", "name": "Oman"}, "_3": {"path": "M543.2,261.06l-1.07,1.46l-1.65,1.99l-1.91,0.01l-8.08,-2.95l-0.89,-0.84l-0.9,-1.19l-0.81,-1.23l0.44,-0.73l0.76,-1.12l0.49,0.28l0.52,1.05l1.13,1.06l0.2,0.08l1.24,0.01l2.42,-0.65l2.77,-0.31l2.17,-0.78l1.31,-0.19l0.84,-0.43l1.03,-0.06l-0.01,4.54Z", "name": "Somaliland"}, "_2": {"path": "M384.23,230.37l0.07,-0.06l0.28,-0.89l0.99,-1.13l0.07,-0.13l0.8,-3.54l3.4,-2.8l0.09,-0.13l0.76,-2.17l0.07,5.5l-2.07,0.21l-0.24,0.17l-0.61,1.36l-0.02,0.16l0.43,3.46l-4.01,-0.01ZM391.82,218.2l0.07,-0.06l0.75,-1.93l1.86,-0.25l0.94,0.34l1.14,0.0l0.18,-0.06l0.73,-0.56l1.41,-0.08l-0.0,2.72l-7.08,-0.12Z", "name": "Western Sahara"}, "_1": {"path": "M472.71,172.84l-0.07,-0.43l-0.16,-0.22l-0.53,-0.27l-0.38,-0.58l0.3,-0.43l0.51,-0.19l0.18,-0.18l0.3,-0.87l0.12,-0.04l0.22,0.26l0.12,0.09l0.38,0.15l0.28,0.41l0.15,0.12l0.34,0.12l0.43,0.5l0.15,0.07l-0.12,0.3l-0.27,0.32l-0.03,0.18l-0.31,0.06l-1.48,0.47l-0.15,0.17Z", "name": "Kosovo"}, "_0": {"path": "M503.54,192.92l0.09,-0.17l0.41,0.01l-0.08,0.01l-0.42,0.15ZM504.23,192.76l1.02,0.02l0.4,-0.13l-0.09,0.29l0.03,0.08l-0.35,0.16l-0.24,-0.04l-0.06,-0.1l-0.18,-0.17l-0.19,-0.08l-0.33,-0.02Z", "name": "Northern Cyprus"}, "JO": {"path": "M510.26,200.93l0.28,-0.57l2.53,1.0l0.27,-0.02l4.57,-2.77l0.84,2.84l-0.28,0.25l-4.95,1.37l-0.14,0.49l2.24,2.48l-0.5,0.28l-0.13,0.14l-0.35,0.78l-1.76,0.35l-0.2,0.14l-0.57,0.94l-0.94,0.73l-2.45,-0.38l-0.03,-0.12l1.23,-4.32l-0.04,-1.1l0.34,-0.75l0.03,-0.12l0.0,-1.63Z", "name": "Jordan"}, "HR": {"path": "M455.49,162.73l1.53,0.09l0.24,-0.1l0.29,-0.34l0.64,0.38l0.14,0.04l0.98,0.06l0.32,-0.3l-0.01,-0.66l0.67,-0.25l0.19,-0.22l0.21,-1.11l1.72,-0.72l0.65,0.32l1.94,1.37l2.07,0.6l0.22,-0.02l0.67,-0.33l0.47,0.94l0.67,0.76l-0.63,0.77l-0.91,-0.55l-0.16,-0.04l-1.69,0.04l-2.2,-0.51l-1.17,0.07l-0.21,0.11l-0.36,0.42l-0.67,-0.53l-0.46,0.12l-0.52,1.29l0.05,0.31l1.21,1.42l0.58,0.99l1.15,1.14l0.95,0.68l0.92,1.23l0.1,0.09l1.75,0.91l-1.87,-0.89l-1.5,-1.11l-2.23,-0.88l-1.77,-1.9l0.12,-0.06l0.1,-0.47l-1.07,-1.22l-0.04,-0.94l-0.21,-0.27l-1.61,-0.49l-0.35,0.14l-0.53,0.93l-0.41,-0.57l0.04,-0.73Z", "name": "Croatia"}, "HT": {"path": "M237.82,234.68l1.35,0.1l1.95,0.37l0.18,1.15l-0.16,0.83l-0.51,0.37l-0.06,0.44l0.57,0.68l-0.02,0.22l-1.31,-0.35l-1.26,0.17l-1.49,-0.18l-0.15,0.02l-1.03,0.43l-1.02,-0.61l0.09,-0.36l2.04,0.32l1.9,0.21l0.19,-0.05l0.9,-0.58l0.05,-0.47l-1.05,-1.03l0.02,-0.86l-0.23,-0.3l-1.13,-0.29l0.18,-0.23Z", "name": "Haiti"}, "HU": {"path": "M461.96,157.92l0.68,-1.66l-0.03,-0.29l-0.15,-0.22l0.84,-0.0l0.3,-0.26l0.12,-0.84l0.88,0.57l0.98,0.38l0.16,0.01l2.1,-0.39l0.23,-0.21l0.14,-0.45l0.88,-0.1l1.06,-0.43l0.13,0.1l0.28,0.04l1.18,-0.4l0.14,-0.1l0.52,-0.67l0.63,-0.15l2.6,0.95l0.26,-0.03l0.38,-0.23l1.12,0.7l0.1,0.49l-1.31,0.57l-0.14,0.13l-1.18,2.14l-1.44,2.04l-1.85,0.55l-1.51,-0.13l-0.14,0.02l-1.92,0.82l-0.85,0.42l-1.91,-0.55l-1.83,-1.31l-0.74,-0.37l-0.44,-0.97l-0.26,-0.18Z", "name": "Hungary"}, "HN": {"path": "M202.48,251.87l-0.33,-0.62l-0.18,-0.14l-0.5,-0.15l0.13,-0.76l-0.11,-0.28l-0.34,-0.28l-0.6,-0.23l-0.18,-0.01l-0.81,0.22l-0.16,-0.24l-0.72,-0.39l-0.51,-0.48l-0.12,-0.07l-0.31,-0.09l0.24,-0.3l0.04,-0.3l-0.16,-0.4l0.1,-0.28l1.14,-0.69l1.0,-0.86l0.09,0.04l0.3,-0.05l0.47,-0.39l0.49,-0.03l0.14,0.13l0.29,0.06l0.31,-0.1l1.16,0.22l1.24,-0.08l0.81,-0.28l0.29,-0.25l0.63,0.1l0.69,0.18l0.65,-0.06l0.49,-0.2l1.04,0.32l0.38,0.06l0.7,0.44l0.71,0.56l0.92,0.41l0.1,0.11l-0.11,-0.01l-0.23,0.09l-0.3,0.3l-0.76,0.29l-0.58,0.0l-0.15,0.04l-0.45,0.26l-0.31,-0.07l-0.37,-0.34l-0.28,-0.07l-0.26,0.07l-0.18,0.15l-0.23,0.43l-0.04,-0.0l-0.33,0.28l-0.03,0.4l-0.76,0.61l-0.45,0.3l-0.15,0.16l-0.51,-0.36l-0.41,0.06l-0.45,0.56l-0.41,-0.01l-0.59,0.06l-0.27,0.31l0.04,0.96l-0.07,0.0l-0.25,0.16l-0.24,0.45l-0.42,0.06Z", "name": "Honduras"}, "PR": {"path": "M254.95,238.31l1.15,0.21l0.2,0.23l-0.36,0.36l-1.76,-0.01l-1.2,0.07l-0.09,-0.69l0.17,-0.18l1.89,0.01Z", "name": "Puerto Rico"}, "PS": {"path": "M509.66,201.06l-0.0,1.44l-0.29,0.63l-0.59,0.19l0.02,-0.11l0.52,-0.31l-0.02,-0.53l-0.41,-0.2l0.36,-1.28l0.41,0.17Z", "name": "West Bank"}, "PT": {"path": "M398.65,173.6l0.75,-0.63l0.7,-0.3l0.51,1.2l0.28,0.18l1.48,-0.0l0.2,-0.08l0.33,-0.3l1.16,0.08l0.52,1.11l-0.95,0.66l-0.13,0.24l-0.03,2.2l-0.33,0.35l-0.08,0.18l-0.08,1.17l-0.86,0.19l-0.2,0.44l0.93,1.64l-0.64,1.79l0.07,0.31l0.72,0.72l-0.24,0.56l-0.9,1.05l-0.07,0.26l0.17,0.77l-0.73,0.54l-1.18,-0.36l-0.16,-0.0l-0.85,0.21l0.31,-1.81l-0.23,-1.87l-0.23,-0.25l-0.99,-0.24l-0.49,-0.91l0.18,-1.72l0.93,-0.99l0.08,-0.16l0.17,-1.17l0.52,-1.76l-0.04,-1.36l-0.51,-1.14l-0.09,-0.8Z", "name": "Portugal"}, "PY": {"path": "M264.33,341.43l0.93,-2.96l0.07,-1.42l1.1,-2.1l4.19,-0.73l2.22,0.04l2.12,1.21l0.07,0.76l0.7,1.38l-0.16,3.48l0.24,0.31l2.64,0.5l0.19,-0.03l0.9,-0.45l1.47,0.62l0.38,0.64l0.23,2.35l0.3,1.07l0.25,0.21l0.93,0.12l0.16,-0.02l0.8,-0.37l0.61,0.33l-0.0,1.25l-0.33,1.53l-0.5,1.57l-0.39,2.26l-2.14,1.94l-1.85,0.4l-2.74,-0.4l-2.13,-0.62l2.26,-3.75l0.03,-0.24l-0.36,-1.18l-0.17,-0.19l-2.55,-1.03l-3.04,-1.95l-2.07,-0.43l-4.4,-4.12Z", "name": "Paraguay"}, "PA": {"path": "M213.65,263.79l0.18,-0.43l0.02,-0.18l-0.06,-0.28l0.23,-0.18l-0.01,-0.48l-0.4,-0.29l-0.01,-0.62l0.57,-0.13l0.68,0.69l-0.04,0.39l0.26,0.33l1.0,0.11l0.27,-0.1l0.49,0.44l0.24,0.07l1.34,-0.22l1.04,-0.62l1.49,-0.5l0.86,-0.73l0.99,0.11l0.18,0.28l1.35,0.08l1.02,0.4l0.78,0.72l0.71,0.53l-0.1,0.12l-0.05,0.3l0.53,1.34l-0.28,0.44l-0.6,-0.13l-0.36,0.22l-0.2,0.76l-0.41,-0.36l-0.44,-1.12l0.49,-0.53l-0.14,-0.49l-0.51,-0.14l-0.41,-0.72l-0.11,-0.11l-1.25,-0.7l-0.19,-0.04l-1.1,0.16l-0.22,0.15l-0.47,0.81l-0.9,0.56l-0.49,0.08l-0.22,0.17l-0.25,0.52l0.05,0.32l0.93,1.07l-0.41,0.21l-0.29,0.3l-0.81,0.09l-0.36,-1.26l-0.53,-0.1l-0.21,0.28l-0.5,-0.09l-0.44,-0.88l-0.22,-0.16l-0.99,-0.16l-0.61,-0.28l-0.13,-0.03l-1.0,0.0Z", "name": "Panama"}, "PG": {"path": "M808.4,298.6l0.62,0.46l1.19,1.56l1.04,0.77l-0.18,0.37l-0.42,0.15l-0.92,-0.82l-1.05,-1.53l-0.27,-0.96ZM804.09,296.06l-0.3,0.26l-0.36,-1.11l-0.66,-1.06l-2.55,-1.89l-1.42,-0.59l0.17,-0.15l1.16,0.6l0.85,0.55l1.01,0.58l0.97,1.02l0.9,0.76l0.24,1.03ZM796.71,297.99l0.15,0.82l0.34,0.24l1.43,-0.19l0.19,-0.11l0.68,-0.82l1.36,-0.87l0.13,-0.31l-0.21,-1.13l1.04,-0.03l0.3,0.25l-0.04,1.17l-0.74,1.34l-1.17,0.18l-0.22,0.15l-0.35,0.62l-2.51,1.13l-1.21,-0.0l-1.99,-0.71l-1.19,-0.58l0.07,-0.28l1.98,0.32l1.46,-0.2l0.24,-0.21l0.25,-0.79ZM789.24,303.52l0.11,0.15l2.19,1.62l1.6,2.62l0.27,0.14l1.09,-0.06l-0.07,0.77l0.23,0.32l1.23,0.27l-0.14,0.09l0.05,0.53l2.39,0.95l-0.11,0.28l-1.33,0.14l-0.51,-0.55l-0.18,-0.09l-4.59,-0.65l-1.87,-1.55l-1.38,-1.35l-1.28,-2.17l-0.16,-0.13l-3.27,-1.1l-0.19,0.0l-2.12,0.72l-1.58,0.85l-0.15,0.31l0.28,1.63l-1.65,0.73l-1.37,-0.4l-2.3,-0.09l-0.08,-15.65l3.95,1.57l4.58,1.42l1.67,1.25l1.32,1.19l0.36,1.39l0.19,0.21l4.06,1.51l0.39,0.85l-1.9,0.22l-0.25,0.39l0.55,1.68Z", "name": "Papua New Guinea"}, "PE": {"path": "M246.44,329.21l-0.63,1.25l-1.05,0.54l-2.25,-1.33l-0.19,-0.93l-0.16,-0.21l-4.95,-2.58l-4.46,-2.79l-1.87,-1.52l-0.94,-1.91l0.33,-0.6l-0.01,-0.31l-2.11,-3.33l-2.46,-4.66l-2.36,-5.02l-1.04,-1.18l-0.77,-1.81l-0.08,-0.11l-1.95,-1.64l-1.54,-0.88l0.61,-0.85l0.02,-0.31l-1.15,-2.27l0.69,-1.56l1.59,-1.26l0.12,0.42l-0.56,0.47l-0.11,0.25l0.07,0.92l0.36,0.27l0.97,-0.19l0.85,0.23l0.99,1.19l0.41,0.05l1.42,-1.03l0.11,-0.16l0.46,-1.64l1.45,-2.06l2.92,-0.96l0.11,-0.07l2.73,-2.62l0.84,-1.72l0.02,-0.18l-0.3,-1.65l0.28,-0.1l1.49,1.06l0.77,1.14l0.1,0.09l1.08,0.6l1.43,2.55l0.21,0.15l1.86,0.31l0.18,-0.03l1.25,-0.6l0.77,0.37l0.17,0.03l1.4,-0.2l1.57,0.96l-1.45,2.29l0.23,0.46l0.63,0.05l0.66,0.7l-1.51,-0.08l-0.24,0.1l-0.27,0.31l-1.96,0.46l-2.95,1.74l-0.14,0.21l-0.17,1.1l-0.6,0.82l-0.05,0.23l0.21,1.13l-1.31,0.63l-0.17,0.27l0.0,0.91l-0.53,0.37l-0.1,0.37l1.04,2.27l1.31,1.46l-0.44,0.9l0.24,0.43l1.52,0.13l0.87,1.23l0.24,0.13l2.21,0.07l0.18,-0.06l1.55,-1.13l-0.14,3.22l0.23,0.3l1.14,0.29l0.16,-0.0l1.18,-0.36l1.97,3.71l-0.45,0.71l-0.04,0.14l-0.12,1.8l-0.05,2.07l-0.92,1.2l-0.03,0.31l0.38,0.8l-0.48,0.72l-0.02,0.3l1.01,2.02l-1.5,2.64Z", "name": "Peru"}, "PK": {"path": "M609.08,187.76l1.66,1.21l0.71,2.11l0.2,0.19l3.62,1.01l-1.98,1.95l-2.65,0.4l-3.75,-0.68l-0.26,0.08l-1.23,1.22l-0.07,0.31l0.89,2.46l0.88,1.92l0.1,0.12l1.67,1.14l-1.8,1.35l-0.12,0.25l0.04,1.85l-2.35,2.67l-1.59,2.79l-2.5,2.72l-2.76,-0.2l-0.24,0.09l-2.76,2.83l0.04,0.45l1.54,1.13l0.27,1.94l0.09,0.17l1.34,1.29l0.4,1.83l-5.14,-0.01l-0.22,0.09l-1.53,1.63l-1.52,-0.56l-0.76,-1.88l-1.93,-2.03l-0.25,-0.09l-4.6,0.5l-4.05,0.05l-3.1,0.33l0.77,-2.53l3.48,-1.33l0.19,-0.33l-0.21,-1.24l-0.19,-0.23l-1.01,-0.37l-0.06,-2.18l-0.17,-0.26l-2.32,-1.16l-0.96,-1.57l-0.56,-0.65l3.16,1.05l0.14,0.01l2.45,-0.4l1.44,0.33l0.3,-0.1l0.4,-0.47l1.58,0.22l0.14,-0.01l3.25,-1.14l0.2,-0.27l0.08,-2.23l1.23,-1.38l1.73,0.0l0.28,-0.2l0.22,-0.61l1.68,-0.32l0.86,0.24l0.27,-0.05l0.98,-0.78l0.11,-0.26l-0.13,-1.57l0.96,-1.52l1.51,-0.67l0.14,-0.41l-0.74,-1.4l1.86,0.07l0.26,-0.13l0.69,-1.01l0.05,-0.2l-0.09,-0.94l1.14,-1.09l0.09,-0.28l-0.29,-1.41l-0.51,-1.07l1.23,-1.05l2.6,-0.58l2.86,-0.33l1.33,-0.54l1.3,-0.29Z", "name": "Pakistan"}, "PH": {"path": "M737.11,263.82l0.25,1.66l0.14,1.34l-0.54,1.46l-0.64,-1.79l-0.5,-0.1l-1.17,1.28l-0.05,0.32l0.74,1.71l-0.49,0.81l-2.6,-1.28l-0.61,-1.57l0.68,-1.07l-0.07,-0.4l-1.59,-1.19l-0.42,0.06l-0.69,0.91l-1.01,-0.08l-0.21,0.06l-1.58,1.2l-0.17,-0.3l0.87,-1.88l1.48,-0.66l1.18,-0.81l0.71,0.92l0.34,0.1l1.9,-0.69l0.18,-0.18l0.34,-0.94l1.57,-0.06l0.29,-0.32l-0.1,-1.38l1.41,0.83l0.36,2.06ZM734.94,254.42l0.56,2.24l-1.41,-0.49l-0.4,0.3l0.07,0.94l0.51,1.3l-0.54,0.26l-0.08,-1.34l-0.25,-0.28l-0.56,-0.1l-0.23,-0.91l1.03,0.14l0.34,-0.31l-0.03,-0.96l-0.06,-0.18l-1.14,-1.44l1.62,0.04l0.57,0.78ZM724.68,238.33l1.48,0.71l0.33,-0.04l0.44,-0.38l0.05,0.13l-0.37,0.97l0.01,0.23l0.81,1.75l-0.59,1.92l-1.37,0.79l-0.14,0.2l-0.39,2.07l0.01,0.14l0.56,2.04l0.23,0.21l1.33,0.28l0.14,-0.0l1.0,-0.27l2.82,1.28l-0.2,1.16l0.12,0.29l0.66,0.5l-0.13,0.56l-1.54,-0.99l-0.89,-1.29l-0.49,0.0l-0.44,0.65l-1.34,-1.28l-0.26,-0.08l-2.18,0.36l-0.96,-0.44l0.09,-0.72l0.69,-0.57l-0.01,-0.47l-0.75,-0.59l-0.47,0.14l-0.15,0.43l-0.86,-1.02l-0.34,-1.02l-0.07,-1.74l0.49,0.41l0.49,-0.21l0.26,-3.99l0.73,-2.1l1.23,0.0ZM731.12,258.92l-0.82,0.75l-0.83,1.64l-0.52,0.5l-1.17,-1.33l0.36,-0.47l0.62,-0.7l0.07,-0.15l0.24,-1.35l0.73,-0.08l-0.31,1.29l0.16,0.34l0.37,-0.09l1.21,-1.6l-0.12,1.24ZM726.66,255.58l0.85,0.45l0.14,0.03l1.28,-0.0l-0.03,0.62l-1.04,0.96l-1.15,0.55l-0.05,-0.71l0.17,-1.26l-0.01,-0.13l-0.16,-0.51ZM724.92,252.06l-0.45,1.5l-0.7,-0.83l-0.95,-1.43l1.44,0.06l0.67,0.7ZM717.48,261.28l-1.87,1.35l0.21,-0.3l1.81,-1.57l1.5,-1.75l0.97,-1.84l0.23,1.08l-1.56,1.33l-1.29,1.7Z", "name": "Philippines"}, "PL": {"path": "M458.8,144.25l-0.96,-1.98l0.18,-1.06l-0.01,-0.15l-0.62,-1.8l-0.82,-1.11l0.56,-0.73l0.05,-0.28l-0.51,-1.51l1.48,-0.87l3.88,-1.58l3.06,-1.14l2.23,0.52l0.15,0.66l0.29,0.23l2.4,0.04l3.11,0.39l4.56,-0.05l1.12,0.32l0.51,0.89l0.1,1.45l0.03,0.12l0.66,1.23l-0.01,1.08l-1.33,0.61l-0.14,0.41l0.74,1.5l0.07,1.53l1.22,2.79l-0.19,0.66l-1.09,0.33l-0.14,0.09l-2.27,2.72l-0.04,0.31l0.35,0.8l-2.22,-1.16l-0.21,-0.02l-1.72,0.44l-1.1,-0.31l-0.21,0.02l-1.3,0.61l-1.11,-1.02l-0.32,-0.05l-0.81,0.35l-1.15,-1.61l-0.21,-0.12l-1.65,-0.17l-0.19,-0.82l-0.23,-0.23l-1.72,-0.37l-0.34,0.17l-0.25,0.56l-0.88,-0.44l0.12,-0.69l-0.25,-0.35l-1.78,-0.27l-1.08,-0.97Z", "name": "Poland"}, "ZM": {"path": "M502.81,308.32l1.09,1.04l0.58,1.94l-0.39,0.66l-0.5,2.05l-0.0,0.14l0.45,1.95l-0.69,0.77l-0.06,0.11l-0.76,2.37l0.15,0.36l0.62,0.31l-6.85,1.9l-0.22,0.33l0.2,1.54l-1.62,0.3l-0.12,0.05l-1.43,1.02l-0.11,0.15l-0.25,0.73l-0.73,0.17l-0.14,0.08l-2.18,2.12l-1.33,1.6l-0.65,0.05l-0.83,-0.29l-2.75,-0.28l-0.24,-0.1l-0.15,-0.27l-0.99,-0.58l-0.12,-0.04l-1.73,-0.14l-1.88,0.54l-1.5,-1.48l-1.61,-2.01l0.11,-7.73l4.92,0.03l0.29,-0.37l-0.19,-0.79l0.34,-0.86l0.0,-0.21l-0.41,-1.11l0.26,-1.14l-0.01,-0.16l-0.12,-0.36l0.18,0.01l0.1,0.56l0.31,0.25l1.14,-0.06l1.44,0.21l0.76,1.05l0.19,0.12l2.01,0.35l0.19,-0.03l1.24,-0.65l0.44,1.03l0.22,0.18l1.81,0.34l0.85,0.99l1.02,1.39l0.24,0.12l1.92,0.02l0.3,-0.32l-0.21,-2.74l-0.47,-0.23l-0.53,0.36l-1.58,-0.89l-0.51,-0.34l0.29,-2.36l0.44,-2.99l-0.03,-0.18l-0.5,-0.99l0.61,-1.38l0.53,-0.24l3.26,-0.41l0.89,0.23l1.01,0.62l1.04,0.44l1.6,0.43l1.35,0.72Z", "name": "Zambia"}, "EE": {"path": "M482.19,120.88l0.23,-1.68l-0.43,-0.31l-0.75,0.37l-1.34,-1.1l-0.18,-1.75l2.92,-0.95l3.07,-0.53l2.66,0.6l2.48,-0.1l0.18,0.31l-1.65,1.96l-0.06,0.26l0.71,3.25l-0.88,0.94l-1.85,-0.01l-2.08,-1.3l-1.14,-0.47l-0.2,-0.01l-1.69,0.51Z", "name": "Estonia"}, "EG": {"path": "M508.07,208.8l-0.66,1.06l-0.53,2.03l-0.64,1.32l-0.32,0.26l-1.74,-1.85l-1.77,-3.86l-0.48,-0.09l-0.26,0.25l-0.07,0.32l1.04,2.88l1.55,2.76l1.89,4.18l0.94,1.48l0.83,1.54l2.08,2.73l-0.3,0.28l-0.1,0.23l0.08,1.72l0.11,0.22l2.91,2.37l-28.78,0.0l0.0,-19.06l-0.73,-2.2l0.61,-1.59l0.0,-0.2l-0.34,-1.04l0.73,-1.08l3.13,-0.04l2.36,0.72l2.48,0.81l1.15,0.43l0.23,-0.01l1.93,-0.87l1.02,-0.78l2.08,-0.21l1.59,0.31l0.62,1.24l0.52,0.03l0.46,-0.71l1.86,0.59l1.95,0.16l0.17,-0.04l0.92,-0.52l1.48,4.24Z", "name": "Egypt"}, "ZA": {"path": "M467.06,373.27l-0.13,-0.29l0.01,-1.58l-0.02,-0.12l-0.71,-1.64l0.59,-0.37l0.14,-0.26l-0.07,-2.13l-0.05,-0.15l-1.63,-2.58l-1.25,-2.31l-1.71,-3.37l0.88,-0.98l0.7,0.52l0.39,1.08l0.23,0.19l1.1,0.19l1.55,0.51l0.14,0.01l1.35,-0.2l0.11,-0.04l2.24,-1.39l0.14,-0.25l0.0,-9.4l0.16,0.09l1.39,2.38l-0.22,1.53l0.04,0.19l0.56,0.94l0.3,0.14l1.79,-0.27l0.16,-0.08l1.23,-1.18l1.17,-0.79l0.1,-0.12l0.57,-1.19l1.02,-0.52l0.9,0.28l1.16,0.73l0.14,0.05l2.04,0.13l0.13,-0.02l1.6,-0.62l0.18,-0.19l0.63,-1.93l1.18,-0.19l0.19,-0.12l0.78,-1.05l0.81,-1.71l2.18,-1.91l3.44,-1.88l0.89,0.02l1.17,0.43l0.21,-0.0l0.76,-0.29l1.07,0.21l1.15,3.55l0.63,1.82l-0.44,2.9l0.1,0.52l-0.74,-0.29l-0.18,-0.01l-0.72,0.19l-0.21,0.2l-0.22,0.74l-0.66,0.97l-0.05,0.18l0.02,0.93l0.09,0.21l1.49,1.46l0.27,0.08l1.47,-0.29l0.22,-0.18l0.43,-1.01l1.29,0.02l-0.51,1.63l-0.29,2.2l-0.59,1.12l-2.2,1.78l-1.06,1.39l-0.72,1.44l-1.39,1.93l-2.81,2.84l-1.75,1.65l-1.85,1.24l-2.55,1.06l-1.23,0.14l-0.24,0.18l-0.22,0.54l-1.27,-0.35l-0.2,0.01l-1.15,0.5l-2.62,-0.52l-0.12,0.0l-1.46,0.33l-0.98,-0.14l-0.16,0.02l-2.55,1.1l-2.11,0.44l-1.59,1.07l-0.93,0.06l-0.97,-0.92l-0.19,-0.08l-0.72,-0.04l-1.0,-1.16l-0.25,0.05ZM493.72,359.24l-1.12,-0.86l-0.31,-0.03l-1.23,0.59l-1.36,1.07l-1.39,1.78l0.01,0.38l1.88,2.11l0.31,0.09l0.9,-0.27l0.18,-0.15l0.4,-0.77l1.28,-0.39l0.18,-0.16l0.42,-0.88l0.76,-1.32l-0.05,-0.37l-0.87,-0.82Z", "name": "South Africa"}, "EC": {"path": "M220.2,293.48l1.25,-1.76l0.02,-0.31l-0.54,-1.09l-0.5,-0.06l-0.78,0.94l-1.03,-0.75l0.33,-0.46l0.05,-0.23l-0.38,-2.04l0.66,-0.28l0.17,-0.19l0.45,-1.52l0.93,-1.58l0.04,-0.2l-0.13,-0.78l1.19,-0.47l1.57,-0.91l2.35,1.34l0.17,0.04l0.28,-0.02l0.52,0.91l0.21,0.15l2.12,0.35l0.2,-0.03l0.55,-0.31l1.08,0.73l0.97,0.54l0.31,1.67l-0.71,1.49l-2.64,2.54l-2.95,0.97l-0.15,0.11l-1.53,2.18l-0.49,1.68l-1.1,0.8l-0.87,-1.05l-0.15,-0.1l-1.01,-0.27l-0.13,-0.0l-0.7,0.14l-0.03,-0.43l0.6,-0.5l0.1,-0.31l-0.26,-0.91Z", "name": "Ecuador"}, "AL": {"path": "M470.27,171.7l0.38,0.19l0.45,-0.18l0.4,0.61l0.11,0.1l0.46,0.24l0.13,0.87l-0.3,0.95l-0.0,0.17l0.36,1.28l0.12,0.17l0.9,0.63l-0.03,0.44l-0.67,0.35l-0.16,0.22l-0.14,0.88l-0.96,1.18l-0.06,-0.03l-0.04,-0.48l-0.12,-0.22l-1.28,-0.92l-0.19,-1.25l0.2,-1.96l0.33,-0.89l-0.06,-0.3l-0.36,-0.41l-0.13,-0.75l0.66,-0.9Z", "name": "Albania"}, "AO": {"path": "M461.62,299.93l0.55,1.67l0.73,1.54l1.56,2.18l0.28,0.12l1.66,-0.2l0.81,-0.34l1.28,0.33l0.33,-0.14l0.39,-0.67l0.56,-1.3l1.37,-0.09l0.27,-0.21l0.07,-0.23l0.67,-0.01l-0.13,0.53l0.29,0.37l2.74,-0.02l0.04,1.29l0.03,0.13l0.46,0.87l-0.35,1.52l0.18,1.55l0.07,0.16l0.75,0.85l-0.13,2.89l0.41,0.29l0.56,-0.21l1.11,0.05l1.5,-0.37l0.9,0.12l0.18,0.53l-0.27,1.15l0.01,0.17l0.4,1.08l-0.33,0.85l-0.01,0.18l0.12,0.51l-4.83,-0.03l-0.3,0.3l-0.12,8.13l0.07,0.19l1.69,2.1l1.27,1.25l-4.03,0.92l-5.93,-0.36l-1.66,-1.19l-0.18,-0.06l-10.15,0.11l-0.34,0.13l-1.35,-1.05l-0.17,-0.06l-1.62,-0.08l-1.6,0.45l-0.88,0.36l-0.17,-1.2l0.34,-2.19l0.85,-2.32l0.14,-1.13l0.79,-2.24l0.57,-1.0l1.42,-1.64l0.82,-1.15l0.05,-0.13l0.26,-1.88l-0.13,-1.51l-0.07,-0.16l-0.72,-0.87l-1.23,-2.91l0.09,-0.37l0.73,-0.95l0.05,-0.27l-1.27,-4.12l-1.19,-1.54l0.1,-0.2l0.86,-0.28l0.78,0.03l0.83,-0.29l7.12,0.03ZM451.81,298.94l-0.17,0.07l-0.5,-1.42l0.85,-0.92l0.53,-0.29l0.48,0.44l-0.56,0.32l-0.1,0.1l-0.41,0.65l-0.05,0.14l-0.07,0.91Z", "name": "Angola"}, "KZ": {"path": "M598.42,172.08l-1.37,0.54l-3.3,2.09l-0.11,0.12l-1.01,1.97l-0.56,0.01l-0.6,-1.24l-0.26,-0.17l-2.95,-0.09l-0.46,-2.22l-0.29,-0.24l-0.91,-0.02l0.17,-2.72l-0.12,-0.26l-3.0,-2.22l-0.2,-0.06l-4.29,0.24l-2.8,0.42l-2.36,-2.7l-6.4,-3.65l-0.23,-0.03l-6.45,1.83l-0.22,0.29l0.1,10.94l-0.84,0.1l-1.65,-2.21l-0.11,-0.09l-1.69,-0.84l-0.2,-0.02l-2.84,0.63l-0.14,0.07l-0.71,0.64l-0.02,-0.11l0.57,-1.17l0.0,-0.26l-0.48,-1.05l-0.17,-0.16l-2.78,-0.99l-1.08,-2.62l-0.13,-0.15l-1.24,-0.7l-0.04,-0.48l2.07,0.25l0.34,-0.29l0.09,-2.03l1.84,-0.44l2.12,0.45l0.36,-0.25l0.45,-3.04l-0.45,-2.06l-0.31,-0.23l-2.44,0.15l-2.07,-0.75l-0.23,0.01l-2.88,1.38l-2.21,0.62l-0.96,-0.38l0.22,-1.39l-0.06,-0.23l-1.6,-2.12l-0.25,-0.12l-1.72,0.08l-1.87,-1.91l1.33,-2.24l-0.06,-0.38l-0.55,-0.5l1.72,-3.08l2.3,1.7l0.48,-0.2l0.29,-2.26l4.99,-3.48l3.76,-0.08l5.46,2.27l2.96,1.33l0.26,-0.01l2.59,-1.36l3.82,-0.06l3.13,1.67l0.38,-0.09l0.63,-0.85l3.36,0.14l0.29,-0.19l0.63,-1.57l-0.13,-0.37l-3.64,-2.05l2.0,-1.36l0.1,-0.38l-0.32,-0.62l2.09,-0.76l0.13,-0.47l-1.65,-2.13l0.89,-0.91l9.27,-1.18l0.13,-0.05l1.17,-0.82l6.2,-1.27l2.26,-1.43l4.19,0.7l0.74,3.39l0.38,0.22l2.52,-0.81l2.9,1.06l-0.18,1.63l0.32,0.33l2.52,-0.23l5.0,-2.58l0.03,0.39l3.16,2.62l5.57,8.48l0.49,0.02l1.18,-1.53l3.22,1.78l0.21,0.03l3.5,-0.83l1.21,0.52l1.16,1.82l0.15,0.12l1.67,0.61l1.01,1.32l0.28,0.11l3.04,-0.41l1.1,1.64l-1.68,1.89l-1.97,0.28l-0.26,0.29l-0.12,3.09l-1.2,1.23l-4.81,-1.01l-0.35,0.2l-1.77,5.51l-1.14,0.62l-4.92,1.23l-0.2,0.41l2.14,5.06l-1.45,0.67l-0.17,0.31l0.15,1.28l-1.05,-0.3l-1.21,-1.04l-0.17,-0.07l-3.73,-0.32l-4.15,-0.08l-0.92,0.31l-3.46,-1.24l-0.22,0.01l-1.42,0.63l-0.17,0.21l-0.32,1.49l-3.82,-0.97l-0.15,0.0l-1.65,0.43l-0.2,0.17l-0.51,1.21Z", "name": "Kazakhstan"}, "ET": {"path": "M516.0,247.63l1.21,0.92l0.3,0.04l1.3,-0.53l0.46,0.41l0.19,0.08l1.65,0.03l2.05,0.96l0.67,0.88l1.07,0.79l1.0,1.45l0.7,0.68l-0.72,0.92l-0.85,1.19l-0.04,0.25l0.19,0.67l0.04,0.74l0.29,0.28l1.4,0.04l0.55,-0.15l0.23,0.19l-0.41,0.67l0.01,0.32l0.92,1.39l0.93,1.23l0.99,0.94l0.1,0.06l8.19,2.99l1.51,0.01l-6.51,6.95l-3.14,0.11l-0.18,0.06l-2.15,1.71l-1.51,0.04l-0.22,0.1l-0.6,0.69l-1.46,-0.0l-0.93,-0.78l-0.32,-0.04l-2.29,1.05l-0.12,0.1l-0.64,0.9l-1.44,-0.17l-0.51,-0.26l-0.17,-0.03l-0.56,0.07l-0.68,-0.02l-3.1,-2.08l-0.17,-0.05l-1.62,0.0l-0.68,-0.65l0.0,-1.28l-0.21,-0.29l-1.19,-0.38l-1.42,-2.63l-0.13,-0.12l-1.05,-0.53l-0.46,-1.0l-1.27,-1.23l-0.17,-0.08l-1.08,-0.13l0.53,-0.9l1.17,-0.05l0.26,-0.17l0.37,-0.77l0.03,-0.14l-0.03,-2.23l0.7,-2.49l1.08,-0.65l0.14,-0.19l0.24,-1.0l1.03,-1.85l1.47,-1.22l0.09,-0.12l1.02,-2.51l0.36,-1.96l2.62,0.48l0.33,-0.18l0.63,-1.55Z", "name": "Ethiopia"}, "ZW": {"path": "M498.95,341.2l-1.16,-0.23l-0.16,0.01l-0.74,0.28l-1.11,-0.41l-1.02,-0.04l-1.52,-1.13l-0.12,-0.05l-1.79,-0.37l-0.65,-1.46l-0.01,-0.86l-0.22,-0.29l-0.99,-0.26l-2.74,-2.77l-0.77,-1.46l-0.52,-0.5l-0.72,-1.54l2.24,0.23l0.78,0.28l0.12,0.02l0.85,-0.06l0.21,-0.11l1.38,-1.66l2.11,-2.05l0.81,-0.18l0.22,-0.2l0.27,-0.8l1.29,-0.93l1.53,-0.28l0.11,0.66l0.3,0.25l2.02,-0.05l1.04,0.48l0.5,0.59l0.18,0.1l1.13,0.18l1.11,0.7l0.01,3.06l-0.49,1.82l-0.11,1.94l0.03,0.16l0.35,0.68l-0.24,1.3l-0.27,0.17l-0.12,0.15l-0.64,1.83l-2.49,2.8Z", "name": "Zimbabwe"}, "ES": {"path": "M398.67,172.8l0.09,-1.45l-0.06,-0.2l-0.82,-1.05l3.16,-1.96l3.01,0.54l3.33,-0.02l2.64,0.52l2.14,-0.15l3.9,0.1l0.91,1.08l0.14,0.09l4.61,1.38l0.26,-0.04l0.77,-0.55l2.66,1.29l0.17,0.03l2.59,-0.35l0.1,1.28l-2.2,1.85l-3.13,0.62l-0.23,0.23l-0.21,0.92l-1.54,1.68l-0.97,2.4l0.02,0.26l0.85,1.46l-1.27,1.14l-0.09,0.14l-0.5,1.73l-1.73,0.53l-0.15,0.1l-1.68,2.1l-3.03,0.04l-2.38,-0.05l-0.17,0.05l-1.57,1.01l-0.9,1.01l-0.96,-0.19l-0.82,-0.86l-0.69,-1.6l-0.22,-0.18l-2.14,-0.41l-0.13,-0.62l0.83,-0.97l0.39,-0.86l-0.06,-0.33l-0.73,-0.73l0.63,-1.74l-0.02,-0.25l-0.8,-1.41l0.69,-0.15l0.23,-0.27l0.09,-1.29l0.33,-0.36l0.08,-0.2l0.03,-2.16l1.03,-0.72l0.1,-0.37l-0.7,-1.5l-0.25,-0.17l-1.46,-0.11l-0.22,0.07l-0.34,0.3l-1.17,0.0l-0.55,-1.29l-0.39,-0.16l-1.02,0.44l-0.45,0.36Z", "name": "Spain"}, "ER": {"path": "M527.15,253.05l-0.77,-0.74l-1.01,-1.47l-1.14,-0.86l-0.62,-0.84l-0.11,-0.09l-2.18,-1.02l-0.12,-0.03l-1.61,-0.03l-0.52,-0.46l-0.31,-0.05l-1.31,0.54l-1.38,-1.06l-0.46,0.12l-0.69,1.68l-2.49,-0.46l-0.2,-0.76l1.06,-3.69l0.24,-1.65l0.66,-0.66l1.76,-0.4l0.16,-0.1l0.97,-1.13l1.24,2.55l0.68,2.34l0.09,0.14l1.4,1.27l3.39,2.4l1.37,1.43l2.14,2.34l0.94,0.6l-0.32,0.26l-0.85,-0.17Z", "name": "Eritrea"}, "ME": {"path": "M469.05,172.9l-0.57,-0.8l-0.1,-0.09l-0.82,-0.46l0.16,-0.33l0.35,-1.57l0.72,-0.62l0.27,-0.16l0.48,0.38l0.35,0.4l0.12,0.08l0.79,0.32l0.66,0.43l-0.43,0.62l-0.28,0.11l-0.07,-0.25l-0.53,-0.1l-1.09,1.49l-0.05,0.23l0.06,0.32Z", "name": "Montenegro"}, "MD": {"path": "M488.2,153.75l0.14,-0.11l1.49,-0.28l1.75,0.95l1.06,0.14l0.92,0.7l-0.15,0.9l0.15,0.31l0.8,0.46l0.33,1.2l0.09,0.14l0.72,0.66l-0.11,0.28l0.1,0.33l-0.06,0.02l-1.25,-0.08l-0.17,-0.29l-0.39,-0.12l-0.52,0.25l-0.16,0.36l0.13,0.42l-0.6,0.88l-0.43,1.03l-0.22,0.12l-0.32,-1.0l0.25,-1.34l-0.08,-1.38l-0.06,-0.17l-1.43,-1.87l-0.81,-1.36l-0.78,-0.95l-0.12,-0.09l-0.29,-0.12Z", "name": "Moldova"}, "MG": {"path": "M544.77,316.45l0.64,1.04l0.6,1.62l0.4,3.04l0.63,1.21l-0.22,1.07l-0.15,0.26l-0.59,-1.05l-0.52,-0.01l-0.47,0.76l-0.04,0.23l0.46,1.84l-0.19,0.92l-0.61,0.53l-0.1,0.21l-0.16,2.15l-0.97,2.98l-1.24,3.59l-1.55,4.97l-0.96,3.67l-1.08,2.93l-1.94,0.61l-2.05,1.06l-3.2,-1.53l-0.62,-1.26l-0.18,-2.39l-0.87,-2.07l-0.22,-1.8l0.4,-1.69l1.01,-0.4l0.19,-0.28l0.01,-0.79l1.15,-1.91l0.04,-0.11l0.23,-1.66l-0.03,-0.17l-0.57,-1.21l-0.46,-1.58l-0.19,-2.25l0.82,-1.36l0.33,-1.51l1.11,-0.1l1.4,-0.53l0.9,-0.45l1.03,-0.03l0.21,-0.09l1.41,-1.45l2.12,-1.65l0.75,-1.29l0.03,-0.24l-0.17,-0.56l0.53,0.15l0.32,-0.1l1.38,-1.77l0.06,-0.18l0.04,-1.44l0.54,-0.74l0.62,0.77Z", "name": "Madagascar"}, "MA": {"path": "M378.66,230.13l0.07,-0.75l0.93,-0.72l0.82,-1.37l0.04,-0.21l-0.14,-0.8l0.8,-1.74l1.33,-1.61l0.79,-0.4l0.14,-0.15l0.66,-1.55l0.08,-1.46l0.83,-1.52l1.6,-0.94l0.11,-0.11l1.56,-2.71l1.2,-0.99l2.24,-0.29l0.17,-0.08l1.95,-1.83l1.3,-0.77l2.09,-2.28l0.07,-0.26l-0.61,-3.34l0.92,-2.3l0.33,-1.44l1.52,-1.79l2.48,-1.27l1.86,-1.16l0.1,-0.11l1.67,-2.93l0.72,-1.59l1.54,0.01l1.43,1.14l0.21,0.06l2.33,-0.19l2.55,0.62l0.97,0.03l0.83,1.6l0.15,1.71l0.86,2.96l0.09,0.14l0.5,0.45l-0.31,0.73l-3.11,0.44l-0.16,0.07l-1.07,0.97l-1.36,0.23l-0.25,0.28l-0.1,1.85l-2.74,1.02l-0.14,0.11l-0.9,1.3l-1.93,0.69l-2.56,0.44l-4.04,2.01l-0.17,0.27l0.02,2.91l-0.08,0.0l-0.3,0.31l0.05,1.15l-1.25,0.07l-0.16,0.06l-0.73,0.55l-0.98,0.0l-0.85,-0.33l-0.15,-0.02l-2.11,0.29l-0.24,0.19l-0.76,1.95l-0.63,0.16l-0.21,0.19l-1.15,3.29l-3.42,2.81l-0.1,0.17l-0.81,3.57l-0.98,1.12l-0.3,0.85l-5.13,0.19Z", "name": "Morocco"}, "UZ": {"path": "M587.83,186.48l0.06,-1.46l-0.19,-0.29l-3.31,-1.24l-2.57,-1.4l-1.63,-1.38l-2.79,-1.98l-1.2,-2.98l-0.12,-0.14l-0.84,-0.54l-0.18,-0.05l-2.61,0.13l-0.76,-0.48l-0.25,-2.25l-0.17,-0.24l-3.37,-1.6l-0.32,0.04l-2.08,1.73l-2.11,1.02l-0.16,0.35l0.31,1.14l-2.14,0.03l-0.09,-10.68l6.1,-1.74l6.25,3.57l2.36,2.72l0.27,0.1l2.92,-0.44l4.17,-0.23l2.78,2.06l-0.18,2.87l0.29,0.32l0.98,0.02l0.46,2.22l0.28,0.24l3.0,0.09l0.61,1.25l0.28,0.17l0.93,-0.02l0.26,-0.16l1.06,-2.06l3.21,-2.03l1.3,-0.5l0.19,0.08l-1.75,1.62l0.05,0.48l1.85,1.12l0.27,0.02l1.65,-0.69l2.4,1.27l-2.69,1.79l-1.79,-0.27l-0.89,0.06l-0.22,-0.52l0.48,-1.26l-0.34,-0.4l-3.35,0.69l-0.22,0.18l-0.78,1.87l-1.07,1.47l-1.93,-0.13l-0.29,0.16l-0.65,1.29l0.16,0.42l1.69,0.64l0.48,1.91l-1.25,2.6l-1.64,-0.53l-1.18,-0.03Z", "name": "Uzbekistan"}, "MM": {"path": "M670.1,233.39l-1.46,1.11l-1.68,0.11l-0.26,0.19l-1.1,2.7l-0.95,0.42l-0.14,0.42l1.21,2.27l1.61,1.92l0.94,1.55l-0.82,1.99l-0.77,0.42l-0.13,0.39l0.64,1.35l1.62,1.97l0.26,1.32l-0.04,1.15l0.02,0.13l0.92,2.18l-1.3,2.23l-0.79,1.69l-0.1,-0.77l0.74,-1.87l-0.02,-0.26l-0.8,-1.42l0.2,-2.68l-0.06,-0.2l-0.98,-1.27l-0.8,-2.98l-0.45,-3.22l-1.11,-2.22l-0.45,-0.1l-1.64,1.28l-2.74,1.76l-1.26,-0.2l-1.27,-0.49l0.79,-2.93l0.0,-0.14l-0.52,-2.42l-1.93,-2.97l0.26,-0.8l-0.22,-0.39l-1.37,-0.31l-1.65,-1.98l-0.12,-1.5l0.41,0.19l0.42,-0.26l0.05,-1.7l1.08,-0.54l0.16,-0.34l-0.24,-1.0l0.5,-0.79l0.05,-0.15l0.08,-2.35l1.58,0.49l0.36,-0.15l1.12,-2.19l0.15,-1.34l1.35,-2.18l0.04,-0.17l-0.07,-1.35l2.97,-1.71l1.67,0.45l0.38,-0.33l-0.18,-1.46l0.7,-0.4l0.15,-0.32l-0.13,-0.72l0.94,-0.13l0.74,1.41l0.11,0.12l0.95,0.56l0.07,1.89l-0.09,2.08l-2.28,2.15l-0.09,0.19l-0.3,3.15l0.35,0.32l2.37,-0.39l0.53,2.17l0.2,0.21l1.3,0.42l-0.63,1.9l0.14,0.36l1.86,0.99l1.1,0.49l0.24,0.0l1.45,-0.6l0.04,0.51l-2.01,1.6l-0.56,0.96l-1.34,0.56Z", "name": "Myanmar"}, "ML": {"path": "M390.79,248.2l0.67,-0.37l0.14,-0.18l0.36,-1.31l0.51,-0.04l1.68,0.69l0.21,0.0l1.34,-0.48l0.89,0.16l0.3,-0.13l0.29,-0.44l9.89,-0.04l0.29,-0.21l0.56,-1.8l-0.11,-0.33l-0.33,-0.24l-2.37,-22.1l3.41,-0.04l8.37,5.73l8.38,5.68l0.56,1.15l0.14,0.14l1.56,0.75l0.99,0.36l0.03,1.45l0.33,0.29l2.45,-0.22l0.01,5.52l-1.3,1.64l-0.06,0.15l-0.18,1.37l-1.99,0.36l-3.4,0.22l-0.19,0.09l-0.85,0.83l-1.48,0.09l-1.49,0.01l-0.54,-0.43l-0.26,-0.05l-1.38,0.36l-2.39,1.08l-0.13,0.12l-0.44,0.73l-1.88,1.11l-0.11,0.12l-0.3,0.57l-0.86,0.42l-1.1,-0.31l-0.28,0.07l-0.69,0.62l-0.09,0.16l-0.35,1.66l-1.93,2.04l-0.08,0.23l0.05,0.76l-0.63,0.99l-0.04,0.19l0.14,1.23l-0.81,0.29l-0.32,0.17l-0.27,-0.75l-0.39,-0.18l-0.65,0.26l-0.36,-0.04l-0.29,0.14l-0.37,0.6l-1.69,-0.02l-0.63,-0.34l-0.32,0.02l-0.12,0.09l-0.47,-0.45l0.1,-0.6l-0.09,-0.27l-0.31,-0.3l-0.33,-0.05l-0.05,0.02l0.02,-0.21l0.46,-0.59l-0.02,-0.39l-0.99,-1.02l-0.34,-0.74l-0.56,-0.56l-0.17,-0.09l-0.5,-0.07l-0.19,0.04l-0.58,0.35l-0.79,0.33l-0.65,0.51l-0.85,-0.16l-0.63,-0.59l-0.14,-0.07l-0.41,-0.08l-0.2,0.03l-0.59,0.31l-0.07,0.0l-0.1,-0.63l0.11,-0.85l-0.21,-0.98l-0.11,-0.17l-0.86,-0.66l-0.45,-1.34l-0.1,-1.36Z", "name": "Mali"}, "MN": {"path": "M641.06,150.59l2.41,-0.53l4.76,-2.8l3.67,-1.49l2.06,0.96l0.12,0.03l2.5,0.05l1.59,1.45l0.19,0.08l2.47,0.12l3.59,0.81l0.27,-0.07l2.43,-2.28l0.06,-0.36l-0.93,-1.77l2.33,-3.1l2.66,1.3l2.26,0.39l2.75,0.8l0.44,2.3l0.19,0.22l3.56,1.38l0.18,0.01l2.35,-0.6l3.1,-0.42l2.4,0.41l2.37,1.52l1.49,1.63l0.23,0.1l2.29,-0.03l3.13,0.52l0.15,-0.01l2.28,-0.79l3.27,-0.53l0.11,-0.04l3.56,-2.23l1.31,0.31l1.26,1.05l0.22,0.07l2.45,-0.22l-0.98,1.96l-1.77,3.21l-0.01,0.28l0.64,1.31l0.35,0.16l1.35,-0.38l2.4,0.48l0.22,-0.04l1.78,-1.09l1.82,0.92l2.11,2.07l-0.17,0.68l-1.79,-0.31l-3.74,0.45l-1.85,0.96l-1.78,2.01l-3.74,1.18l-2.46,1.61l-2.45,-0.6l-1.42,-0.28l-0.31,0.13l-1.31,1.99l0.0,0.33l0.78,1.15l0.3,0.74l-1.58,0.93l-1.75,1.59l-2.83,1.03l-3.77,0.12l-4.05,1.05l-2.81,1.54l-0.95,-0.8l-0.19,-0.07l-2.96,0.0l-3.64,-1.8l-2.55,-0.48l-3.38,0.41l-5.13,-0.67l-2.66,0.06l-1.35,-1.65l-1.12,-2.78l-0.21,-0.18l-1.5,-0.33l-2.98,-1.89l-0.12,-0.04l-3.37,-0.43l-2.84,-0.51l-0.75,-1.13l0.93,-3.54l-0.04,-0.24l-1.73,-2.55l-0.15,-0.12l-3.52,-1.18l-1.99,-1.61l-0.54,-1.85Z", "name": "Mongolia"}, "MK": {"path": "M472.73,173.87l0.08,0.01l0.32,-0.25l0.08,-0.44l1.29,-0.41l1.37,-0.28l1.03,-0.04l1.06,0.82l0.14,1.59l-0.22,0.04l-0.17,0.11l-0.32,0.4l-1.2,-0.05l-0.18,0.05l-0.9,0.61l-1.45,0.23l-0.85,-0.59l-0.3,-1.09l0.22,-0.71Z", "name": "Macedonia"}, "MW": {"path": "M507.18,313.84l-0.67,1.85l-0.01,0.16l0.7,3.31l0.31,0.24l0.75,-0.03l0.78,0.71l0.99,1.75l0.2,3.03l-0.91,0.45l-0.14,0.15l-0.59,1.38l-1.24,-1.21l-0.17,-1.62l0.49,-1.12l0.02,-0.16l-0.15,-1.03l-0.13,-0.21l-0.99,-0.65l-0.26,-0.03l-0.53,0.18l-1.31,-1.12l-1.15,-0.59l0.66,-2.06l0.75,-0.84l0.07,-0.27l-0.47,-2.04l0.48,-1.94l0.4,-0.65l0.03,-0.24l-0.64,-2.15l-0.08,-0.13l-0.44,-0.42l1.34,0.26l1.25,1.73l0.67,3.3Z", "name": "Malawi"}, "MR": {"path": "M390.54,247.66l-1.48,-1.58l-1.51,-1.88l-0.12,-0.09l-1.64,-0.67l-1.17,-0.74l-0.17,-0.05l-1.4,0.03l-0.12,0.03l-1.14,0.52l-1.15,-0.21l-0.26,0.08l-0.44,0.43l-0.11,-0.72l0.68,-1.29l0.31,-2.43l-0.28,-2.63l-0.29,-1.27l0.24,-1.24l-0.03,-0.2l-0.65,-1.24l-1.19,-1.05l0.32,-0.51l9.64,0.02l0.3,-0.34l-0.46,-3.71l0.51,-1.12l2.17,-0.22l0.27,-0.3l-0.08,-6.5l7.91,0.13l0.31,-0.3l0.01,-3.5l8.17,5.63l-2.89,0.04l-0.29,0.33l2.42,22.56l0.12,0.21l0.26,0.19l-0.43,1.38l-9.83,0.04l-0.25,0.13l-0.27,0.41l-0.77,-0.14l-0.15,0.01l-1.3,0.47l-1.64,-0.67l-0.14,-0.02l-0.79,0.06l-0.27,0.22l-0.39,1.39l-0.53,0.29Z", "name": "Mauritania"}, "UG": {"path": "M500.74,287.17l-2.84,-0.02l-0.92,0.32l-1.37,0.71l-0.29,-0.12l0.02,-1.6l0.54,-0.89l0.04,-0.13l0.14,-1.96l0.49,-1.09l0.91,-1.24l0.97,-0.68l0.8,-0.89l-0.13,-0.49l-0.79,-0.27l0.13,-2.55l0.78,-0.52l1.45,0.51l0.18,0.01l1.97,-0.57l1.72,0.01l0.18,-0.06l1.29,-0.97l0.98,1.44l0.29,1.24l1.05,2.75l-0.84,1.68l-1.94,2.66l-0.06,0.18l0.02,2.36l-4.8,0.18Z", "name": "Uganda"}, "MY": {"path": "M717.6,273.52l-1.51,0.7l-2.13,-0.41l-2.88,-0.0l-0.29,0.21l-0.84,2.77l-0.9,0.82l-0.08,0.12l-1.23,3.34l-1.81,0.47l-2.29,-0.68l-0.14,-0.01l-1.2,0.22l-0.14,0.07l-1.36,1.18l-1.47,-0.17l-0.12,0.01l-1.46,0.46l-1.51,-1.25l-0.24,-0.97l1.26,0.59l0.2,0.02l1.93,-0.47l0.22,-0.22l0.47,-1.98l0.9,-0.4l2.97,-0.54l0.17,-0.09l1.8,-1.98l1.02,-1.32l0.9,1.03l0.48,-0.04l0.43,-0.7l1.02,0.07l0.32,-0.27l0.25,-2.72l1.84,-1.67l1.23,-1.89l0.73,-0.01l1.12,1.11l0.1,0.99l0.18,0.24l1.66,0.71l1.85,0.67l-0.09,0.51l-1.45,0.11l-0.26,0.4l0.35,0.97ZM673.78,269.53l0.17,1.14l0.35,0.25l1.65,-0.3l0.18,-0.11l0.68,-0.86l0.31,0.13l1.41,1.45l0.99,1.59l0.13,1.57l-0.26,1.09l0.0,0.15l0.24,0.84l0.18,1.46l0.11,0.2l0.82,0.64l0.92,2.08l-0.03,0.52l-1.4,0.13l-2.29,-1.79l-2.86,-1.92l-0.27,-1.16l-0.07,-0.13l-1.39,-1.61l-0.33,-1.99l-0.05,-0.12l-0.84,-1.27l0.26,-1.72l-0.03,-0.18l-0.45,-0.87l0.13,-0.13l1.71,0.92Z", "name": "Malaysia"}, "MX": {"path": "M133.41,213.83l0.61,0.09l0.27,-0.09l0.93,-1.01l0.08,-0.18l0.09,-1.22l-0.09,-0.23l-1.93,-1.94l-1.46,-0.77l-2.96,-5.62l-0.86,-2.1l2.44,-0.18l2.68,-0.25l-0.03,0.08l0.17,0.4l3.79,1.35l5.81,1.97l6.96,-0.02l0.3,-0.3l0.0,-0.84l3.91,0.0l0.87,0.93l1.27,0.87l1.44,1.17l0.79,1.37l0.62,1.49l0.12,0.14l1.35,0.85l2.08,0.82l0.35,-0.1l1.49,-2.04l1.81,-0.05l1.63,1.01l1.21,1.8l0.86,1.58l1.47,1.55l0.53,1.82l0.73,1.32l0.14,0.13l1.98,0.84l1.78,0.59l0.61,-0.03l-0.78,1.89l-0.45,1.96l-0.19,3.58l-0.24,1.27l0.01,0.14l0.43,1.43l0.78,1.31l0.49,1.98l0.06,0.12l1.63,1.9l0.61,1.51l0.98,1.28l0.16,0.11l2.58,0.67l0.98,1.02l0.31,0.08l2.17,-0.71l1.91,-0.26l1.87,-0.47l1.67,-0.49l1.59,-1.06l0.11,-0.14l0.6,-1.52l0.22,-2.21l0.35,-0.62l1.58,-0.64l2.59,-0.59l2.18,0.09l1.43,-0.2l0.39,0.36l-0.07,1.02l-1.28,1.48l-0.65,1.68l0.07,0.32l0.33,0.32l-0.79,2.49l-0.28,-0.3l-0.24,-0.09l-1.0,0.08l-0.24,0.15l-0.74,1.28l-0.19,-0.13l-0.28,-0.03l-0.3,0.12l-0.19,0.29l0.0,0.06l-4.34,-0.02l-0.3,0.3l-0.0,1.16l-0.83,0.0l-0.28,0.19l0.08,0.33l0.93,0.86l0.9,0.58l0.24,0.48l0.16,0.15l0.2,0.08l-0.03,0.38l-2.94,0.01l-0.26,0.15l-1.21,2.09l0.02,0.33l0.25,0.33l-0.21,0.44l-0.04,0.22l-2.42,-2.35l-1.36,-0.87l-2.04,-0.67l-0.13,-0.01l-1.4,0.19l-2.07,0.98l-1.14,0.23l-1.72,-0.66l-1.85,-0.48l-2.31,-1.16l-1.92,-0.38l-2.79,-1.18l-2.04,-1.2l-0.6,-0.66l-0.19,-0.1l-1.37,-0.15l-2.45,-0.78l-1.07,-1.18l-2.63,-1.44l-1.2,-1.56l-0.44,-0.93l0.5,-0.15l0.2,-0.39l-0.2,-0.58l0.46,-0.55l0.07,-0.19l0.01,-0.91l-0.06,-0.18l-0.81,-1.13l-0.25,-1.08l-0.86,-1.36l-2.21,-2.63l-2.53,-2.09l-1.2,-1.63l-0.11,-0.09l-2.08,-1.06l-0.34,-0.48l0.35,-1.53l-0.16,-0.34l-1.24,-0.61l-1.39,-1.23l-0.6,-1.81l-0.24,-0.2l-1.25,-0.2l-1.38,-1.35l-1.11,-1.25l-0.1,-0.76l-0.05,-0.13l-1.33,-2.04l-0.85,-2.02l0.04,-0.99l-0.14,-0.27l-1.81,-1.1l-0.2,-0.04l-0.74,0.11l-1.34,-0.72l-0.42,0.16l-0.4,1.12l-0.0,0.19l0.41,1.3l0.24,2.04l0.06,0.15l0.88,1.16l1.84,1.86l0.4,0.61l0.12,0.1l0.27,0.14l0.29,0.82l0.31,0.2l0.2,-0.02l0.43,1.51l0.09,0.14l0.72,0.65l0.51,0.91l1.58,1.4l0.8,2.42l0.77,1.23l0.66,1.19l0.13,1.34l0.28,0.27l1.08,0.08l0.92,1.1l0.83,1.08l-0.03,0.24l-0.88,0.81l-0.13,-0.0l-0.59,-1.42l-0.07,-0.11l-1.67,-1.53l-1.81,-1.28l-1.15,-0.61l0.07,-1.85l-0.38,-1.45l-0.12,-0.17l-2.91,-2.03l-0.39,0.04l-0.11,0.11l-0.42,-0.46l-0.11,-0.08l-1.49,-0.63l-1.09,-1.16Z", "name": "Mexico"}, "VU": {"path": "M839.92,325.66l0.78,0.73l-0.18,0.07l-0.6,-0.8ZM839.13,322.74l0.27,1.36l-0.13,-0.06l-0.21,-0.02l-0.29,0.08l-0.22,-0.43l-0.03,-1.32l0.61,0.4Z", "name": "Vanuatu"}, "FR": {"path": "M444.58,172.63l-0.68,1.92l-0.72,-0.38l-0.51,-1.79l0.43,-0.95l1.15,-0.83l0.33,2.04ZM429.71,147.03l1.77,1.57l0.26,0.07l1.16,-0.23l2.12,1.44l0.56,0.28l0.16,0.03l0.61,-0.06l1.09,0.78l0.13,0.05l3.18,0.53l-1.09,1.94l-0.3,2.16l-0.48,0.38l-1.0,-0.26l-0.37,0.32l0.07,0.66l-1.73,1.68l-0.09,0.21l-0.04,1.42l0.41,0.29l0.96,-0.4l0.67,1.07l-0.09,0.78l0.04,0.19l0.61,0.97l-0.71,0.78l-0.07,0.28l0.65,2.39l0.21,0.21l1.09,0.31l-0.2,0.95l-2.08,1.58l-4.81,-0.8l-0.13,0.01l-3.65,0.99l-0.22,0.24l-0.25,1.6l-2.59,0.35l-2.74,-1.33l-0.31,0.03l-0.79,0.57l-4.38,-1.31l-0.79,-0.94l1.16,-1.64l0.05,-0.15l0.48,-6.17l-0.06,-0.21l-2.58,-3.3l-1.89,-1.65l-0.11,-0.06l-3.64,-1.17l-0.2,-1.88l2.92,-0.63l4.14,0.82l0.35,-0.36l-0.65,-3.0l1.77,1.05l0.27,0.02l5.83,-2.54l0.17,-0.19l0.71,-2.54l1.75,-0.53l0.27,0.88l0.27,0.21l1.04,0.05l1.08,1.23ZM289.1,278.45l-0.85,0.84l-0.88,0.13l-0.25,-0.51l-0.21,-0.16l-0.56,-0.1l-0.25,0.07l-0.63,0.55l-0.62,-0.29l0.5,-0.88l0.21,-1.11l0.42,-1.05l-0.03,-0.28l-0.93,-1.42l-0.18,-1.54l1.13,-1.87l2.42,0.78l2.55,2.04l0.33,0.81l-1.4,2.16l-0.77,1.84Z", "name": "France"}, "FI": {"path": "M492.26,76.42l-0.38,3.12l0.12,0.28l3.6,2.69l-2.14,2.96l-0.01,0.33l2.83,4.61l-1.61,3.36l0.03,0.31l2.15,2.87l-0.96,2.44l0.1,0.35l3.51,2.55l-0.81,1.72l-2.28,2.19l-5.28,4.79l-4.51,0.31l-4.39,1.37l-3.87,0.75l-1.34,-1.89l-0.11,-0.09l-2.23,-1.14l0.53,-3.54l-0.01,-0.14l-1.17,-3.37l1.12,-2.13l2.23,-2.44l5.69,-4.33l1.65,-0.84l0.16,-0.31l-0.26,-1.73l-0.15,-0.22l-3.4,-1.91l-0.77,-1.47l-0.07,-6.45l-0.12,-0.24l-3.91,-2.94l-3.0,-1.92l0.97,-0.76l2.6,2.17l0.21,0.07l3.2,-0.21l2.63,1.03l0.3,-0.05l2.39,-1.94l0.09,-0.13l1.18,-3.12l3.63,-1.42l2.87,1.59l-0.98,2.87Z", "name": "Finland"}, "FJ": {"path": "M869.98,327.07l-1.31,0.44l-0.14,-0.41l0.96,-0.41l0.85,-0.17l1.43,-0.78l-0.16,0.65l-1.64,0.67ZM867.58,329.12l0.54,0.47l-0.31,1.0l-1.32,0.3l-1.13,-0.26l-0.17,-0.78l0.72,-0.66l0.98,0.27l0.25,-0.04l0.43,-0.29Z", "name": "Fiji"}, "FK": {"path": "M268.15,427.89l2.6,-1.73l1.98,0.77l0.31,-0.05l1.32,-1.17l1.58,1.18l-0.54,0.84l-3.1,0.92l-1.0,-1.04l-0.39,-0.04l-1.9,1.35l-0.86,-1.04Z", "name": "Falkland Islands"}, "NI": {"path": "M202.1,252.6l0.23,-0.0l0.12,-0.11l0.68,-0.09l0.22,-0.15l0.23,-0.43l0.2,-0.01l0.28,-0.31l-0.04,-0.97l0.29,-0.03l0.5,0.02l0.25,-0.11l0.37,-0.46l0.51,0.35l0.4,-0.06l0.23,-0.28l0.45,-0.29l0.87,-0.7l0.11,-0.21l0.02,-0.26l0.23,-0.12l0.25,-0.48l0.29,0.27l0.14,0.07l0.5,0.12l0.22,-0.03l0.48,-0.28l0.66,-0.02l0.87,-0.33l0.36,-0.32l0.21,0.01l-0.11,0.48l0.0,0.14l0.22,0.8l-0.54,0.85l-0.27,1.03l-0.09,1.18l0.14,0.72l0.05,0.95l-0.24,0.15l-0.13,0.19l-0.23,1.09l0.0,0.14l0.14,0.53l-0.42,0.53l-0.06,0.24l0.12,0.69l0.08,0.15l0.18,0.19l-0.26,0.23l-0.49,-0.11l-0.35,-0.44l-0.16,-0.1l-0.79,-0.21l-0.23,0.03l-0.45,0.26l-1.51,-0.62l-0.31,0.05l-0.17,0.15l-1.81,-1.62l-0.6,-0.9l-1.04,-0.79l-0.77,-0.71Z", "name": "Nicaragua"}, "NL": {"path": "M436.22,136.65l1.82,0.08l0.36,0.89l-0.6,2.96l-0.53,1.06l-1.32,0.0l-0.3,0.34l0.35,2.89l-0.83,-0.47l-1.56,-1.43l-0.29,-0.07l-2.26,0.67l-1.02,-0.15l0.68,-0.48l0.1,-0.12l2.14,-4.84l3.25,-1.35Z", "name": "Netherlands"}, "NO": {"path": "M491.45,67.31l7.06,3.0l-2.52,0.94l-0.11,0.49l2.43,2.49l-3.82,1.59l-1.48,0.3l0.89,-2.61l-0.14,-0.36l-3.21,-1.78l-0.25,-0.02l-3.89,1.52l-0.17,0.17l-1.2,3.17l-2.19,1.78l-2.53,-0.99l-0.13,-0.02l-3.15,0.21l-2.69,-2.25l-0.38,-0.01l-1.43,1.11l-1.47,0.17l-0.26,0.26l-0.33,2.57l-4.42,-0.65l-0.33,0.22l-0.6,2.19l-2.17,-0.01l-0.27,0.16l-4.15,7.68l-3.88,5.76l-0.0,0.33l0.81,1.23l-0.7,1.27l-2.3,-0.06l-0.28,0.18l-1.63,3.72l-0.02,0.13l0.15,5.17l0.07,0.18l1.51,1.84l-0.79,4.24l-2.04,2.5l-0.92,1.75l-1.39,-1.88l-0.44,-0.05l-4.89,4.21l-3.16,0.81l-3.24,-1.74l-0.86,-3.82l-0.78,-8.6l2.18,-2.36l6.56,-3.28l5.0,-4.16l4.63,-5.74l5.99,-8.09l4.17,-3.23l6.84,-5.49l5.39,-1.92l4.06,0.24l0.23,-0.09l3.72,-3.67l4.51,0.19l4.4,-0.89ZM484.58,19.95l4.42,1.82l-3.25,2.68l-7.14,0.65l-7.16,-0.91l-0.39,-1.37l-0.28,-0.22l-3.48,-0.1l-2.25,-2.15l7.09,-1.48l3.55,1.36l0.28,-0.03l2.42,-1.66l6.18,1.41ZM481.99,33.92l-4.73,1.85l-3.76,-1.06l1.27,-1.02l0.04,-0.43l-1.18,-1.35l4.46,-0.94l0.89,1.83l0.17,0.15l2.83,0.96ZM466.5,23.95l7.64,3.87l-5.63,1.94l-0.19,0.19l-1.35,3.88l-2.08,0.96l-0.16,0.19l-1.14,4.18l-2.71,0.18l-4.94,-2.95l1.95,-1.63l-0.08,-0.51l-3.7,-1.54l-4.79,-4.54l-1.78,-4.01l6.29,-1.88l1.25,1.81l0.25,0.13l3.57,-0.08l0.26,-0.17l0.87,-1.79l3.41,-0.18l3.08,1.94Z", "name": "Norway"}, "NA": {"path": "M461.88,357.98l-1.61,-1.77l-0.94,-1.9l-0.54,-2.58l-0.62,-1.95l-0.83,-4.05l-0.06,-3.13l-0.33,-1.5l-0.07,-0.14l-0.95,-1.06l-1.27,-2.12l-1.3,-3.1l-0.59,-1.71l-1.98,-2.46l-0.13,-1.67l0.99,-0.4l1.44,-0.42l1.48,0.07l1.42,1.11l0.31,0.03l0.32,-0.15l9.99,-0.11l1.66,1.18l0.16,0.06l6.06,0.37l4.69,-1.06l2.01,-0.57l1.5,0.14l0.63,0.37l-1.0,0.41l-0.7,0.01l-0.16,0.05l-1.38,0.88l-0.79,-0.88l-0.29,-0.09l-3.83,0.9l-1.84,0.08l-0.29,0.3l-0.07,8.99l-2.18,0.08l-0.29,0.3l-0.0,17.47l-2.04,1.27l-1.21,0.18l-1.51,-0.49l-0.99,-0.18l-0.36,-1.0l-0.1,-0.14l-0.99,-0.74l-0.4,0.04l-0.98,1.09Z", "name": "Namibia"}, "NC": {"path": "M835.87,338.68l2.06,1.63l1.01,0.94l-0.49,0.32l-1.21,-0.62l-1.76,-1.16l-1.58,-1.36l-1.61,-1.79l-0.16,-0.41l0.54,0.02l1.32,0.83l1.08,0.87l0.79,0.73Z", "name": "New Caledonia"}, "NE": {"path": "M426.67,254.17l0.03,-1.04l-0.24,-0.3l-2.66,-0.53l-0.06,-1.0l-0.07,-0.17l-1.37,-1.62l-0.3,-1.04l0.15,-0.94l1.37,-0.09l0.19,-0.09l0.85,-0.83l3.34,-0.22l2.22,-0.41l0.24,-0.26l0.2,-1.5l1.32,-1.65l0.07,-0.19l-0.01,-5.74l3.4,-1.13l7.24,-5.12l8.46,-4.95l3.76,1.08l1.35,1.39l0.36,0.05l1.39,-0.77l0.55,3.66l0.12,0.2l0.82,0.6l0.03,0.69l0.1,0.21l0.87,0.74l-0.47,0.99l-0.96,5.26l-0.13,3.25l-3.08,2.34l-0.1,0.15l-1.08,3.37l0.08,0.31l0.94,0.86l-0.01,1.51l0.29,0.3l1.25,0.05l-0.14,0.66l-0.51,0.11l-0.24,0.26l-0.06,0.57l-0.04,0.0l-1.59,-2.62l-0.21,-0.14l-0.59,-0.1l-0.23,0.05l-1.83,1.33l-1.79,-0.68l-1.42,-0.17l-0.17,0.03l-0.65,0.32l-1.39,-0.07l-0.19,0.06l-1.4,1.03l-1.12,0.05l-2.97,-1.29l-0.26,0.01l-1.12,0.59l-1.08,-0.04l-0.85,-0.88l-0.11,-0.07l-2.51,-0.95l-0.14,-0.02l-2.69,0.3l-0.16,0.07l-0.65,0.55l-0.1,0.16l-0.34,1.41l-0.69,0.98l-0.05,0.15l-0.13,1.72l-1.47,-1.13l-0.18,-0.06l-0.9,0.01l-0.2,0.08l-0.32,0.28Z", "name": "Niger"}, "NG": {"path": "M442.0,272.7l-2.4,0.83l-0.88,-0.12l-0.19,0.04l-0.89,0.52l-1.78,-0.05l-1.23,-1.44l-0.88,-1.87l-1.77,-1.66l-0.21,-0.08l-3.78,0.03l0.13,-3.75l-0.06,-1.58l0.44,-1.47l0.74,-0.75l1.21,-1.56l0.04,-0.29l-0.22,-0.56l0.44,-0.9l0.01,-0.24l-0.54,-1.44l0.26,-2.97l0.72,-1.06l0.33,-1.37l0.51,-0.43l2.53,-0.28l2.38,0.9l0.89,0.91l0.2,0.09l1.28,0.04l0.15,-0.03l1.06,-0.56l2.9,1.26l0.13,0.02l1.28,-0.06l0.16,-0.06l1.39,-1.02l1.36,0.07l0.15,-0.03l0.64,-0.32l1.22,0.13l1.9,0.73l0.28,-0.04l1.86,-1.35l0.33,0.06l1.62,2.67l0.29,0.14l0.32,-0.04l0.73,0.74l-0.19,0.37l-0.12,0.74l-2.03,1.89l-0.07,0.11l-0.66,1.62l-0.35,1.28l-0.48,0.51l-0.07,0.12l-0.48,1.67l-1.26,0.98l-0.1,0.15l-0.38,1.24l-0.58,1.07l-0.2,0.91l-1.43,0.7l-1.26,-0.93l-0.19,-0.06l-0.95,0.04l-0.2,0.09l-1.41,1.39l-0.61,0.02l-0.26,0.17l-1.19,2.42l-0.61,1.67Z", "name": "Nigeria"}, "NZ": {"path": "M857.9,379.62l1.85,3.1l0.33,0.14l0.22,-0.28l0.04,-1.41l0.57,0.4l0.35,2.06l0.17,0.22l2.02,0.94l1.78,0.26l0.22,-0.06l1.31,-1.01l0.84,0.22l-0.53,2.27l-0.67,1.5l-1.71,-0.05l-0.25,0.12l-0.67,0.89l-0.05,0.23l0.21,1.15l-0.31,0.46l-2.15,3.57l-1.6,0.99l-0.28,-0.51l-0.15,-0.13l-0.72,-0.3l1.27,-2.15l0.01,-0.29l-0.82,-1.63l-0.15,-0.14l-2.5,-1.09l0.05,-0.69l1.67,-0.94l0.15,-0.21l0.42,-2.24l-0.11,-1.95l-0.03,-0.12l-0.97,-1.85l0.05,-0.41l-0.09,-0.25l-1.18,-1.17l-1.94,-2.49l-0.86,-1.64l0.38,-0.09l1.24,1.43l0.12,0.08l1.81,0.68l0.67,2.39ZM853.93,393.55l0.57,1.24l0.44,0.12l1.51,-1.03l0.52,0.91l0.0,1.09l-0.88,1.31l-1.62,2.2l-1.26,1.2l-0.05,0.38l0.64,1.02l-1.4,0.03l-0.14,0.04l-2.14,1.16l-0.14,0.17l-0.67,2.0l-1.38,3.06l-3.07,2.19l-2.12,-0.06l-1.55,-0.99l-0.14,-0.05l-2.53,-0.2l-0.31,-0.84l1.25,-2.15l3.07,-2.97l1.62,-0.59l1.81,-1.17l2.18,-1.63l1.55,-1.65l1.08,-2.18l0.9,-0.72l0.11,-0.17l0.35,-1.56l1.37,-1.07l0.4,0.91Z", "name": "New Zealand"}, "NP": {"path": "M641.26,213.53l-0.14,0.95l0.32,1.64l-0.21,0.78l-1.83,0.04l-2.98,-0.62l-1.86,-0.25l-1.37,-1.3l-0.18,-0.08l-3.38,-0.34l-3.21,-1.49l-2.38,-1.34l-2.16,-0.92l0.84,-2.2l1.51,-1.18l0.89,-0.57l1.83,0.77l2.5,1.76l1.39,0.41l0.78,1.21l0.17,0.13l1.91,0.53l2.0,1.17l2.92,0.66l2.63,0.24Z", "name": "Nepal"}, "CI": {"path": "M413.53,272.08l-0.83,0.02l-1.79,-0.49l-1.64,0.03l-3.04,0.46l-1.73,0.72l-2.4,0.89l-0.12,-0.02l0.16,-1.7l0.19,-0.25l0.06,-0.2l-0.08,-0.99l-0.09,-0.19l-1.06,-1.05l-0.15,-0.08l-0.71,-0.15l-0.51,-0.48l0.45,-0.92l0.02,-0.19l-0.24,-1.16l0.07,-0.43l0.14,-0.0l0.3,-0.26l0.15,-1.1l-0.02,-0.15l-0.13,-0.34l0.09,-0.13l0.83,-0.27l0.19,-0.37l-0.62,-2.02l-0.55,-1.0l0.14,-0.59l0.35,-0.14l0.24,-0.16l0.53,0.29l0.14,0.04l1.93,0.02l0.26,-0.14l0.36,-0.58l0.39,0.01l0.43,-0.17l0.28,0.79l0.43,0.16l0.56,-0.31l0.89,-0.32l0.92,0.45l0.39,0.75l0.14,0.13l1.13,0.53l0.3,-0.03l0.81,-0.59l1.02,-0.08l1.49,0.57l0.62,3.33l-1.03,2.09l-0.65,2.84l0.02,0.2l1.05,2.08l-0.07,0.64Z", "name": "Ivory Coast"}, "CH": {"path": "M444.71,156.27l0.05,0.3l-0.34,0.69l0.13,0.4l1.13,0.58l1.07,0.1l-0.12,0.81l-0.87,0.42l-1.75,-0.37l-0.34,0.18l-0.47,1.1l-0.86,0.07l-0.33,-0.38l-0.41,-0.04l-1.34,1.01l-1.02,0.13l-0.93,-0.58l-0.82,-1.32l-0.37,-0.12l-0.77,0.32l0.02,-0.84l1.74,-1.69l0.09,-0.25l-0.04,-0.38l0.73,0.19l0.26,-0.06l0.6,-0.48l2.02,0.02l0.24,-0.12l0.38,-0.51l2.31,0.84Z", "name": "Switzerland"}, "CO": {"path": "M232.24,284.95l-0.94,-0.52l-1.22,-0.82l-0.31,-0.01l-0.62,0.35l-1.88,-0.31l-0.54,-0.95l-0.29,-0.15l-0.37,0.03l-2.34,-1.33l-0.15,-0.35l0.57,-0.11l0.24,-0.32l-0.1,-1.15l0.46,-0.71l1.11,-0.15l0.21,-0.13l1.05,-1.57l0.95,-1.31l-0.08,-0.43l-0.73,-0.47l0.4,-1.24l0.01,-0.16l-0.53,-2.15l0.44,-0.54l0.06,-0.24l-0.4,-2.13l-0.06,-0.13l-0.93,-1.22l0.21,-0.8l0.52,0.12l0.32,-0.13l0.47,-0.75l0.03,-0.27l-0.52,-1.32l0.09,-0.11l1.14,0.07l0.22,-0.08l1.82,-1.71l0.96,-0.25l0.22,-0.28l0.02,-0.81l0.43,-2.01l1.28,-1.04l1.48,-0.05l0.27,-0.19l0.12,-0.31l1.73,0.19l0.2,-0.05l1.96,-1.28l0.97,-0.56l1.16,-1.16l0.64,0.11l0.43,0.44l-0.31,0.55l-1.49,0.39l-0.19,0.16l-0.6,1.2l-0.97,0.74l-0.73,0.94l-0.06,0.13l-0.3,1.76l-0.68,1.44l0.23,0.43l1.1,0.14l0.27,0.97l0.08,0.13l0.49,0.49l0.17,0.85l-0.27,0.86l-0.01,0.14l0.09,0.53l0.2,0.23l0.52,0.18l0.54,0.79l0.27,0.13l3.18,-0.24l1.31,0.29l1.7,2.08l0.31,0.1l0.96,-0.26l1.75,0.13l1.41,-0.27l0.56,0.27l-0.36,1.07l-0.54,0.81l-0.05,0.13l-0.2,1.8l0.51,1.79l0.07,0.12l0.65,0.68l0.05,0.32l-1.16,1.14l0.05,0.47l0.86,0.52l0.6,0.79l0.31,1.01l-0.7,-0.81l-0.44,-0.01l-0.74,0.77l-4.75,-0.05l-0.3,0.31l0.03,1.57l0.25,0.29l1.2,0.21l-0.02,0.24l-0.1,-0.05l-0.22,-0.02l-1.41,0.41l-0.22,0.29l-0.01,1.82l0.11,0.23l1.04,0.85l0.35,1.3l-0.06,1.02l-1.02,6.26l-0.84,-0.89l-0.19,-0.09l-0.25,-0.02l1.35,-2.13l-0.1,-0.42l-1.92,-1.17l-0.2,-0.04l-1.41,0.2l-0.82,-0.39l-0.26,0.0l-1.29,0.62l-1.63,-0.27l-1.4,-2.5l-0.12,-0.12l-1.1,-0.61l-0.83,-1.2l-1.67,-1.19l-0.27,-0.04l-0.54,0.19Z", "name": "Colombia"}, "CN": {"path": "M740.32,148.94l0.22,0.21l4.3,1.03l2.84,2.2l0.99,2.92l0.28,0.2l3.8,0.0l0.15,-0.04l2.13,-1.24l3.5,-0.8l-1.05,2.29l-0.95,1.13l-0.06,0.12l-0.85,3.41l-1.56,2.81l-2.83,-0.51l-0.19,0.03l-2.15,1.09l-0.15,0.34l0.65,2.59l-0.33,3.3l-1.03,0.07l-0.28,0.3l0.01,0.75l-1.09,-1.2l-0.48,0.05l-0.94,1.6l-3.76,1.26l-0.2,0.36l0.29,1.19l-1.67,-0.08l-1.11,-0.88l-0.42,0.05l-1.69,2.08l-2.71,1.57l-2.04,1.88l-3.42,0.84l-0.11,0.05l-1.8,1.34l-1.54,0.46l0.52,-0.53l0.06,-0.33l-0.44,-0.96l1.84,-1.84l0.02,-0.41l-1.32,-1.56l-0.36,-0.08l-2.23,1.08l-2.83,2.06l-1.52,1.85l-2.32,0.13l-0.2,0.09l-1.28,1.37l-0.03,0.37l1.32,1.97l0.18,0.13l1.83,0.43l0.07,1.08l0.18,0.26l1.98,0.84l0.3,-0.03l2.66,-1.96l2.06,1.04l0.12,0.03l1.4,0.07l0.27,1.0l-3.24,0.73l-0.17,0.11l-1.13,1.5l-2.38,1.4l-0.1,0.1l-1.29,1.99l0.1,0.42l2.6,1.5l0.97,2.72l1.52,2.56l1.66,2.08l-0.03,1.76l-1.4,0.67l-0.15,0.38l0.6,1.47l0.13,0.15l1.29,0.75l-0.35,2.0l-0.58,1.96l-1.22,0.21l-0.2,0.14l-1.83,2.93l-2.02,3.51l-2.29,3.13l-3.4,2.42l-3.42,2.18l-2.75,0.3l-0.15,0.06l-1.32,1.01l-0.68,-0.67l-0.41,-0.01l-1.37,1.27l-3.42,1.28l-2.62,0.4l-0.24,0.21l-0.8,2.57l-0.95,0.11l-0.53,-1.54l0.52,-0.89l-0.19,-0.44l-3.36,-0.84l-0.17,0.01l-1.09,0.4l-2.36,-0.64l-1.0,-0.9l0.35,-1.34l-0.23,-0.37l-2.22,-0.47l-1.15,-0.94l-0.36,-0.02l-2.08,1.37l-2.35,0.29l-1.98,-0.01l-0.13,0.03l-1.32,0.63l-1.28,0.38l-0.21,0.33l0.33,2.65l-0.78,-0.04l-0.14,-0.39l-0.07,-1.04l-0.41,-0.26l-1.72,0.71l-0.96,-0.43l-1.63,-0.86l0.65,-1.95l-0.19,-0.38l-1.43,-0.46l-0.56,-2.27l-0.34,-0.22l-2.26,0.38l0.25,-2.65l2.29,-2.15l0.09,-0.2l0.1,-2.21l-0.07,-2.09l-0.15,-0.25l-1.02,-0.6l-0.8,-1.52l-0.31,-0.16l-1.42,0.2l-2.16,-0.32l0.55,-0.74l0.01,-0.35l-1.17,-1.7l-0.41,-0.08l-1.67,1.07l-1.97,-0.63l-0.25,0.03l-2.89,1.73l-2.26,1.99l-1.82,0.3l-1.0,-0.66l-0.15,-0.05l-1.28,-0.06l-1.75,-0.61l-0.24,0.02l-1.35,0.69l-0.1,0.08l-1.2,1.45l-0.14,-1.41l-0.4,-0.25l-1.46,0.55l-2.83,-0.26l-2.77,-0.61l-1.99,-1.17l-1.91,-0.54l-0.78,-1.21l-0.17,-0.13l-1.36,-0.38l-2.54,-1.79l-2.01,-0.84l-0.28,0.02l-0.89,0.56l-3.31,-1.83l-2.35,-1.67l-0.57,-2.49l1.34,0.28l0.36,-0.28l0.08,-1.42l-0.05,-0.19l-0.93,-1.34l0.24,-2.18l-0.07,-0.22l-2.69,-3.32l-0.15,-0.1l-3.97,-1.11l-0.69,-2.05l-0.11,-0.15l-1.79,-1.3l-0.39,-0.73l-0.36,-1.57l0.08,-1.09l-0.18,-0.3l-1.52,-0.66l-0.22,-0.01l-0.51,0.18l-0.52,-2.21l0.59,-0.55l0.06,-0.35l-0.22,-0.44l2.12,-1.24l1.63,-0.55l2.58,0.39l0.31,-0.16l0.87,-1.75l3.05,-0.34l0.21,-0.12l0.84,-1.12l3.87,-1.59l0.15,-0.14l0.35,-0.68l0.03,-0.17l-0.17,-1.51l1.52,-0.7l0.15,-0.39l-2.12,-5.0l4.62,-1.15l1.35,-0.72l0.14,-0.17l1.72,-5.37l4.7,0.99l0.28,-0.08l1.39,-1.43l0.08,-0.2l0.11,-2.95l1.83,-0.26l0.18,-0.1l1.85,-2.08l0.61,-0.17l0.57,1.97l0.1,0.15l2.2,1.75l3.48,1.17l1.59,2.36l-0.93,3.53l0.04,0.24l0.9,1.35l0.2,0.13l2.98,0.53l3.32,0.43l2.97,1.89l1.49,0.35l1.08,2.67l1.52,1.88l0.24,0.11l2.74,-0.07l5.15,0.67l3.36,-0.41l2.39,0.43l3.67,1.81l0.13,0.03l2.92,-0.0l1.02,0.86l0.34,0.03l2.88,-1.59l3.98,-1.03l3.81,-0.13l3.02,-1.12l1.77,-1.61l1.73,-1.01l0.13,-0.37l-0.41,-1.01l-0.72,-1.07l1.09,-1.66l1.21,0.24l2.57,0.63l0.24,-0.04l2.46,-1.62l3.78,-1.19l0.13,-0.09l1.8,-2.03l1.66,-0.84l3.54,-0.41l1.93,0.35l0.34,-0.22l0.27,-1.12l-0.08,-0.29l-2.27,-2.22l-2.08,-1.07l-0.29,0.01l-1.82,1.12l-2.36,-0.47l-0.14,0.01l-1.18,0.34l-0.46,-0.94l1.69,-3.08l1.1,-2.21l2.75,1.12l0.26,-0.02l3.53,-2.06l0.15,-0.26l-0.02,-1.35l2.18,-3.39l1.35,-1.04l0.12,-0.24l-0.03,-1.85l-0.15,-0.25l-1.0,-0.58l1.68,-1.37l3.01,-0.59l3.25,-0.09l3.67,0.99l2.08,1.18l1.51,3.3l0.95,1.45l0.85,1.99l0.92,3.19ZM697.0,237.37l-1.95,1.12l-1.74,-0.68l-0.06,-1.9l1.08,-1.03l2.62,-0.7l1.23,0.05l0.37,0.65l-1.01,1.08l-0.54,1.4Z", "name": "China"}, "CM": {"path": "M453.76,278.92l-0.26,-0.11l-0.18,-0.02l-1.42,0.31l-1.56,-0.33l-1.17,0.16l-3.7,-0.05l0.3,-1.63l-0.04,-0.21l-0.98,-1.66l-0.15,-0.13l-1.03,-0.38l-0.46,-1.01l-0.13,-0.14l-0.48,-0.27l0.02,-0.46l0.62,-1.72l1.1,-2.25l0.54,-0.02l0.2,-0.09l1.41,-1.39l0.73,-0.03l1.32,0.97l0.31,0.03l1.72,-0.85l0.16,-0.2l0.22,-1.0l0.57,-1.03l0.36,-1.18l1.26,-0.98l0.1,-0.15l0.49,-1.7l0.48,-0.51l0.07,-0.13l0.35,-1.3l0.63,-1.54l2.06,-1.92l0.09,-0.17l0.12,-0.79l0.24,-0.41l-0.04,-0.36l-0.89,-0.91l0.04,-0.45l0.28,-0.06l0.85,1.39l0.16,1.59l-0.09,1.66l0.04,0.17l1.09,1.84l-0.86,-0.02l-0.72,0.17l-1.07,-0.24l-0.34,0.17l-0.54,1.19l0.06,0.34l1.48,1.47l1.06,0.44l0.32,0.94l0.73,1.6l-0.32,0.57l-1.23,2.49l-0.54,0.41l-0.12,0.21l-0.19,1.95l0.24,1.08l-0.18,0.67l0.07,0.28l1.13,1.25l0.24,0.93l0.92,1.29l1.1,0.8l0.1,1.01l0.26,0.73l-0.12,0.93l-1.65,-0.49l-2.02,-0.66l-3.19,-0.11Z", "name": "Cameroon"}, "CL": {"path": "M246.8,429.1l-1.14,0.78l-2.25,1.21l-0.16,0.23l-0.37,2.94l-0.75,0.06l-2.72,-1.07l-2.83,-2.34l-3.06,-1.9l-0.71,-1.92l0.67,-1.84l-0.02,-0.25l-1.22,-2.13l-0.31,-5.41l1.02,-2.95l2.59,-2.4l-0.13,-0.51l-3.32,-0.8l2.06,-2.4l0.07,-0.15l0.79,-4.77l2.44,0.95l0.4,-0.22l1.31,-6.31l-0.16,-0.33l-1.68,-0.8l-0.42,0.21l-0.72,3.47l-1.01,-0.27l0.74,-4.06l0.85,-5.46l1.12,-1.96l0.03,-0.22l-0.71,-2.82l-0.19,-2.94l0.76,-0.07l0.26,-0.2l1.53,-4.62l1.73,-4.52l1.07,-4.2l-0.56,-4.2l0.73,-2.2l0.01,-0.12l-0.29,-3.3l1.46,-3.34l0.45,-5.19l0.8,-5.52l0.78,-5.89l-0.18,-4.33l-0.49,-3.47l1.1,-0.56l0.13,-0.13l0.44,-0.88l0.9,1.29l0.32,1.8l0.1,0.18l1.16,0.97l-0.73,2.33l0.01,0.21l1.33,2.91l0.97,3.6l0.35,0.22l1.57,-0.31l0.16,0.34l-0.79,2.51l-2.61,1.25l-0.17,0.28l0.08,4.36l-0.48,0.79l0.01,0.33l0.6,0.84l-1.62,1.55l-1.67,2.6l-0.89,2.47l-0.02,0.13l0.23,2.56l-1.5,2.76l-0.03,0.21l1.15,4.8l0.11,0.17l0.54,0.42l-0.01,2.37l-1.4,2.7l-0.03,0.15l0.06,2.25l-1.8,1.78l-0.09,0.21l0.02,2.73l0.71,2.63l-1.33,0.94l-0.12,0.17l-0.67,2.64l-0.59,3.03l0.4,3.55l-0.84,0.51l-0.14,0.31l0.58,3.5l0.08,0.16l0.96,0.99l-0.7,1.08l0.11,0.43l1.04,0.55l0.19,0.8l-0.89,0.48l-0.16,0.31l0.26,1.77l-0.89,4.06l-1.31,2.67l-0.03,0.19l0.28,1.53l-0.73,1.88l-1.85,1.37l-0.12,0.26l0.22,3.46l0.06,0.16l0.88,1.19l0.28,0.12l1.32,-0.17l-0.04,2.13l0.04,0.15l1.04,1.95l0.24,0.16l5.94,0.44ZM248.79,430.71l0.0,7.41l0.3,0.3l2.67,0.0l1.01,0.06l-0.54,0.91l-1.99,1.01l-1.13,-0.1l-1.42,-0.27l-1.87,-1.06l-2.57,-0.49l-3.09,-1.9l-2.52,-1.83l-2.65,-2.93l0.93,0.32l3.54,2.29l3.32,1.23l0.34,-0.09l1.29,-1.57l0.83,-2.32l2.11,-1.28l1.43,0.32Z", "name": "Chile"}, "CA": {"path": "M280.14,145.66l-1.66,2.88l0.06,0.37l0.37,0.03l1.5,-1.01l1.17,0.49l-0.64,0.83l0.13,0.46l2.22,0.89l0.28,-0.03l1.02,-0.7l2.09,0.83l-0.69,2.1l0.37,0.38l1.43,-0.45l0.27,1.43l0.74,1.88l-0.95,2.5l-0.88,0.09l-1.34,-0.48l0.49,-2.34l-0.14,-0.32l-0.7,-0.4l-0.36,0.04l-2.81,2.66l-0.63,-0.05l1.2,-1.01l-0.1,-0.52l-2.4,-0.77l-2.79,0.18l-4.65,-0.09l-0.22,-0.54l1.37,-0.99l0.01,-0.48l-0.82,-0.65l1.91,-1.79l2.57,-5.17l1.49,-1.81l2.04,-1.07l0.63,0.08l-0.27,0.51l-1.33,2.07ZM193.92,74.85l-0.01,4.24l0.19,0.28l0.33,-0.07l3.14,-3.22l2.65,2.5l-0.71,3.04l0.06,0.26l2.42,2.88l0.46,0.0l2.66,-3.14l1.83,-3.74l0.03,-0.12l0.13,-4.53l3.23,0.31l3.63,0.64l3.18,2.08l0.13,1.91l-1.79,2.22l-0.0,0.37l1.69,2.2l-0.28,1.8l-4.74,2.84l-3.33,0.62l-2.5,-1.21l-0.41,0.17l-0.73,2.05l-2.39,3.44l-0.74,1.78l-2.78,2.61l-3.48,0.26l-0.17,0.07l-1.98,1.68l-0.1,0.21l-0.15,2.33l-2.68,0.45l-0.17,0.09l-3.1,3.2l-2.75,4.38l-0.99,3.06l-0.14,4.31l0.25,0.31l3.5,0.58l1.07,3.24l1.18,2.76l0.34,0.18l3.43,-0.69l4.55,1.52l2.45,1.32l1.76,1.65l0.12,0.07l3.11,0.96l2.63,1.46l0.13,0.04l4.12,0.2l2.41,0.3l-0.36,2.81l0.8,3.51l1.81,3.78l0.08,0.1l3.73,3.17l0.34,0.03l1.93,-1.08l0.13,-0.15l1.35,-3.44l0.01,-0.18l-1.31,-5.38l-0.08,-0.14l-1.46,-1.5l3.68,-1.51l2.84,-2.46l1.45,-2.55l0.04,-0.17l-0.2,-2.39l-0.04,-0.12l-1.7,-3.07l-2.9,-2.64l2.79,-3.66l0.05,-0.27l-1.08,-3.38l-0.8,-5.75l1.45,-0.75l4.18,1.03l2.6,0.38l0.18,-0.03l1.93,-0.95l2.18,1.23l3.01,2.18l0.73,1.42l0.25,0.16l4.18,0.27l-0.06,2.95l0.83,4.7l0.22,0.24l2.19,0.55l1.75,2.08l0.38,0.07l3.63,-2.03l0.11,-0.11l2.38,-4.06l1.36,-1.43l1.76,3.01l3.26,4.68l2.68,4.19l-0.94,2.09l0.12,0.38l3.31,1.98l2.23,1.98l0.13,0.07l3.94,0.89l1.48,1.02l0.96,2.82l0.22,0.2l1.85,0.43l0.88,1.13l0.17,3.53l-1.68,1.16l-1.76,1.14l-4.08,1.17l-0.11,0.06l-3.08,2.65l-4.11,0.52l-5.35,-0.69l-3.76,-0.02l-2.62,0.23l-0.2,0.1l-2.05,2.29l-3.13,1.41l-0.11,0.08l-3.6,4.24l-2.87,2.92l-0.05,0.36l0.33,0.14l2.13,-0.52l0.15,-0.08l3.98,-4.15l5.16,-2.63l3.58,-0.31l1.82,1.3l-2.09,1.91l-0.09,0.29l0.8,3.46l0.82,2.37l0.15,0.17l3.25,1.56l0.16,0.03l4.14,-0.45l0.21,-0.12l2.03,-2.86l0.11,1.46l0.13,0.22l1.26,0.88l-2.7,1.78l-5.51,1.83l-2.52,1.26l-2.75,2.16l-1.52,-0.18l-0.08,-2.16l4.19,-2.47l0.14,-0.34l-0.3,-0.22l-4.01,0.1l-2.66,0.36l-1.45,-1.56l0.0,-4.16l-0.11,-0.23l-1.11,-0.91l-0.28,-0.05l-1.5,0.48l-0.7,-0.7l-0.45,0.02l-1.91,2.39l-0.8,2.5l-0.82,1.31l-0.95,0.43l-0.77,0.15l-0.23,0.2l-0.18,0.56l-8.2,0.02l-0.13,0.03l-1.19,0.61l-2.95,2.45l-0.78,1.13l-4.6,0.01l-0.12,0.02l-1.13,0.48l-0.13,0.44l0.37,0.55l0.2,0.82l-0.01,0.09l-3.1,1.42l-2.63,0.5l-2.84,1.57l-0.47,0.0l-0.72,-0.4l-0.18,-0.27l0.03,-0.15l0.52,-1.0l1.2,-1.71l0.73,-1.8l0.02,-0.17l-1.03,-5.47l-0.15,-0.21l-2.35,-1.32l0.16,-0.29l-0.05,-0.35l-0.37,-0.38l-0.22,-0.09l-0.56,0.0l-0.35,-0.34l-0.11,-0.65l-0.46,-0.2l-0.39,0.26l-0.2,-0.03l-0.11,-0.33l-0.48,-0.25l-0.21,-0.71l-0.15,-0.18l-3.97,-2.07l-4.8,-2.39l-0.25,-0.01l-2.19,0.89l-0.72,0.03l-3.04,-0.82l-0.14,-0.0l-1.94,0.4l-2.4,-0.98l-2.56,-0.51l-1.7,-0.19l-0.62,-0.44l-0.42,-1.67l-0.3,-0.23l-0.85,0.02l-0.29,0.3l-0.01,0.95l-69.26,-0.01l-4.77,-3.14l-1.78,-1.41l-4.51,-1.38l-1.3,-2.73l0.34,-1.96l-0.17,-0.33l-3.06,-1.37l-0.41,-2.58l-0.11,-0.18l-2.92,-2.4l-0.05,-1.53l1.32,-1.59l0.07,-0.2l-0.07,-2.21l-0.16,-0.26l-4.19,-2.22l-2.52,-4.02l-1.56,-2.6l-0.08,-0.09l-2.28,-1.64l-1.65,-1.48l-1.31,-1.89l-0.38,-0.1l-2.51,1.21l-2.28,1.92l-2.03,-2.22l-1.85,-1.71l-2.44,-1.04l-2.28,-0.12l0.03,-37.72l4.27,0.98l4.0,2.13l2.61,0.4l0.24,-0.07l2.17,-1.81l2.92,-1.33l3.63,0.53l0.18,-0.03l3.72,-1.94l3.89,-1.06l1.6,1.72l0.37,0.06l1.87,-1.04l0.14,-0.19l0.48,-1.83l1.37,0.38l4.18,3.96l0.41,0.0l2.89,-2.62l0.28,2.79l0.37,0.26l3.08,-0.73l0.17,-0.12l0.85,-1.16l2.81,0.24l3.83,1.86l5.86,1.61l3.46,0.75l2.44,-0.26l2.89,1.89l-3.12,1.89l-0.14,0.31l0.24,0.24l4.53,0.92l6.84,-0.5l2.04,-0.71l2.54,2.44l0.39,0.02l2.72,-2.16l-0.01,-0.48l-2.26,-1.61l1.27,-1.16l2.94,-0.19l1.94,-0.42l1.89,0.97l2.49,2.32l0.24,0.08l2.71,-0.33l4.35,1.9l0.17,0.02l3.86,-0.67l3.62,0.1l0.31,-0.33l-0.26,-2.44l1.9,-0.65l3.58,1.36l-0.01,3.84l0.23,0.29l0.34,-0.17l1.51,-3.23l1.81,0.1l0.31,-0.22l1.13,-4.37l-0.08,-0.29l-2.68,-2.73l-2.83,-1.76l0.19,-4.73l2.77,-3.15l3.06,0.69l2.44,1.97l3.24,4.88l-2.05,2.02l0.15,0.51l4.41,0.85ZM265.85,150.7l-0.84,0.04l-3.15,-0.99l-1.77,-1.17l0.19,-0.06l3.17,0.79l2.39,1.27l0.01,0.12ZM249.41,3.71l6.68,0.49l5.34,0.79l4.34,1.6l-0.08,1.24l-5.91,2.56l-6.03,1.21l-2.36,1.38l-0.14,0.34l0.29,0.22l4.37,-0.02l-4.96,3.01l-4.06,1.64l-0.11,0.08l-4.21,4.62l-5.07,0.92l-0.12,0.05l-1.53,1.1l-7.5,0.59l-0.28,0.28l0.24,0.31l2.67,0.54l-1.04,0.6l-0.09,0.44l1.89,2.49l-2.11,1.66l-3.83,1.52l-0.15,0.13l-1.14,2.01l-3.41,1.55l-0.16,0.36l0.35,1.19l0.3,0.22l3.98,-0.19l0.03,0.78l-6.42,2.99l-6.44,-1.41l-7.41,0.79l-3.72,-0.62l-4.48,-0.26l-0.25,-2.0l4.37,-1.13l0.21,-0.38l-1.14,-3.55l1.13,-0.28l6.61,2.29l0.35,-0.12l-0.04,-0.37l-3.41,-3.45l-0.14,-0.08l-3.57,-0.92l1.62,-1.7l4.36,-1.3l0.2,-0.18l0.71,-1.94l-0.12,-0.36l-3.45,-2.15l-0.88,-2.43l6.36,0.23l1.94,0.61l0.23,-0.02l3.91,-2.1l0.15,-0.32l-0.26,-0.24l-5.69,-0.67l-8.69,0.37l-4.3,-1.92l-2.12,-2.39l-2.82,-1.68l-0.44,-1.65l3.41,-1.06l2.93,-0.2l4.91,-0.99l3.69,-2.28l2.93,0.31l2.64,1.68l0.42,-0.1l1.84,-3.23l3.17,-0.96l4.45,-0.69l7.56,-0.26l1.26,0.64l0.18,0.03l7.2,-1.06l10.81,0.8ZM203.94,57.59l0.01,0.32l1.97,2.97l0.51,-0.01l2.26,-3.75l6.05,-1.89l4.08,4.72l-0.36,2.95l0.38,0.33l4.95,-1.36l0.11,-0.05l2.23,-1.77l5.37,2.31l3.32,2.14l0.3,1.89l0.36,0.25l4.48,-1.01l2.49,2.8l0.14,0.09l5.99,1.78l2.09,1.74l2.18,3.83l-4.29,1.91l-0.01,0.54l5.9,2.83l3.95,0.94l3.54,3.84l0.2,0.1l3.58,0.25l-0.67,2.51l-4.18,4.54l-2.84,-1.61l-3.91,-3.95l-0.26,-0.09l-3.24,0.52l-0.25,0.26l-0.32,2.37l0.1,0.26l2.63,2.38l3.42,1.89l0.96,1.0l1.57,3.8l-0.74,2.43l-2.85,-0.96l-6.26,-3.15l-0.38,0.09l0.04,0.39l3.54,3.4l2.55,2.31l0.23,0.78l-6.26,-1.43l-5.33,-2.25l-2.73,-1.73l0.67,-0.86l-0.09,-0.45l-7.38,-4.01l-0.44,0.27l0.03,0.89l-6.85,0.61l-1.8,-1.17l1.43,-2.6l4.56,-0.07l5.15,-0.52l0.23,-0.45l-0.76,-1.34l0.8,-1.89l3.21,-4.06l0.05,-0.29l-0.72,-1.95l-0.97,-1.47l-0.11,-0.1l-3.84,-2.1l-4.53,-1.33l1.09,-0.75l0.05,-0.45l-2.65,-2.75l-0.18,-0.09l-2.12,-0.24l-1.91,-1.47l-0.39,0.02l-1.27,1.25l-4.4,0.56l-9.06,-0.99l-5.28,-1.31l-4.01,-0.67l-1.72,-1.31l2.32,-1.85l0.1,-0.33l-0.28,-0.2l-3.3,-0.02l-0.74,-4.36l1.86,-4.09l2.46,-1.88l5.74,-1.15l-1.5,2.55ZM261.28,159.28l0.19,0.14l1.82,0.42l1.66,-0.05l-0.66,0.68l-0.75,0.16l-3.0,-1.25l-0.46,-0.77l0.51,-0.52l0.68,1.19ZM230.87,84.48l-2.48,0.19l-0.52,-1.74l0.96,-2.17l2.03,-0.53l1.71,1.04l0.02,1.6l-0.22,0.46l-1.5,1.16ZM229.52,58.19l0.14,0.82l-4.99,-0.22l-2.73,0.63l-0.59,-0.23l-2.61,-2.4l0.08,-1.38l0.94,-0.25l5.61,0.51l4.14,2.54ZM222.12,105.0l-0.79,1.63l-0.75,-0.22l-0.52,-0.91l0.04,-0.09l0.84,-1.01l0.74,0.06l0.44,0.55ZM183.77,38.22l2.72,1.65l0.16,0.04l4.83,-0.01l1.92,1.52l-0.51,1.75l0.18,0.36l2.84,1.14l1.56,1.19l0.16,0.06l3.37,0.22l3.65,0.42l4.07,-1.1l5.05,-0.43l3.96,0.35l2.53,1.8l0.48,1.79l-1.37,1.16l-3.6,1.03l-3.22,-0.59l-7.17,0.76l-5.1,0.09l-4.0,-0.6l-6.48,-1.56l-0.81,-2.57l-0.3,-2.49l-0.1,-0.19l-2.51,-2.25l-0.16,-0.07l-5.12,-0.63l-2.61,-1.45l0.75,-1.71l4.88,0.32ZM207.46,91.26l0.42,1.62l0.42,0.19l1.12,-0.55l1.35,0.99l2.74,1.39l2.73,1.2l0.2,1.74l0.35,0.26l1.72,-0.29l1.31,0.97l-1.72,0.96l-3.68,-0.9l-1.34,-1.71l-0.43,-0.04l-2.46,2.1l-3.23,1.85l-0.74,-1.98l-0.31,-0.19l-2.47,0.28l1.49,-1.34l0.1,-0.19l0.32,-3.15l0.79,-3.45l1.34,0.25ZM215.59,102.66l-2.73,2.0l-1.49,-0.08l-0.37,-0.7l1.61,-1.56l3.0,0.03l-0.02,0.3ZM202.79,24.07l0.11,0.12l2.54,1.53l-3.01,1.47l-4.55,4.07l-4.3,0.38l-5.07,-0.68l-2.51,-2.09l0.03,-1.72l1.86,-1.4l0.1,-0.34l-0.29,-0.2l-4.49,0.04l-2.63,-1.79l-1.45,-2.36l1.61,-2.38l1.65,-1.69l2.47,-0.4l0.19,-0.48l-0.72,-0.89l5.1,-0.26l3.1,3.05l0.13,0.07l4.21,1.25l3.99,1.06l1.92,3.65ZM187.5,59.3l-0.15,0.1l-2.59,3.4l-2.5,-0.15l-1.47,-3.92l0.04,-2.24l1.22,-1.92l2.34,-1.26l5.11,0.17l4.28,1.06l-3.36,3.86l-2.9,0.9ZM186.19,48.8l-1.15,1.63l-3.42,-0.35l-2.68,-1.15l1.11,-1.88l3.34,-1.27l2.01,1.63l0.79,1.38ZM185.78,35.41l-0.95,0.13l-4.48,-0.33l-0.4,-0.91l4.5,0.07l1.45,0.82l-0.1,0.21ZM180.76,32.56l-3.43,1.03l-1.85,-1.14l-1.01,-1.92l-0.16,-1.87l2.87,0.2l1.39,0.35l2.75,1.75l-0.55,1.6ZM181.03,76.32l-1.21,1.2l-3.19,-1.26l-0.18,-0.01l-1.92,0.45l-2.88,-1.67l1.84,-1.16l1.6,-1.77l2.45,1.17l1.45,0.77l2.05,2.28ZM169.72,54.76l2.83,0.97l0.14,0.01l4.25,-0.58l0.47,1.01l-2.19,2.16l0.07,0.48l3.61,1.95l-0.41,3.84l-3.87,1.68l-2.23,-0.36l-1.73,-1.75l-6.07,-3.53l0.03,-1.01l4.79,0.55l0.3,-0.16l-0.04,-0.34l-2.55,-2.89l2.59,-2.05ZM174.44,40.56l1.49,1.87l0.07,2.48l-1.07,3.52l-3.87,0.48l-2.41,-0.72l0.05,-2.72l-0.33,-0.3l-3.79,0.36l-0.13,-3.31l2.36,0.14l0.15,-0.03l3.7,-1.74l3.44,0.29l0.31,-0.22l0.03,-0.12ZM170.14,31.5l0.75,1.74l-3.52,-0.52l-4.19,-1.77l-4.65,-0.17l1.65,-1.11l-0.05,-0.52l-2.86,-1.26l-0.13,-1.58l4.52,0.7l6.66,1.99l1.84,2.5ZM134.64,58.08l-1.08,1.93l0.34,0.44l5.44,-1.41l3.37,2.32l0.37,-0.02l2.66,-2.28l2.03,1.38l2.01,4.53l0.53,0.04l1.26,-1.93l0.03,-0.27l-1.67,-4.55l1.82,-0.58l2.36,0.73l2.69,1.84l1.53,4.46l0.77,3.24l0.15,0.19l4.22,2.26l4.32,2.04l-0.21,1.51l-3.87,0.34l-0.19,0.5l1.45,1.54l-0.65,1.23l-4.3,-0.65l-4.4,-1.19l-2.97,0.28l-4.67,1.48l-6.31,0.65l-4.27,0.39l-1.26,-1.91l-0.15,-0.12l-3.42,-1.2l-0.16,-0.01l-2.05,0.45l-2.66,-3.02l1.2,-0.34l3.82,-0.76l3.58,0.19l3.27,-0.78l0.23,-0.29l-0.24,-0.29l-4.84,-1.06l-5.42,0.35l-3.4,-0.09l-0.97,-1.22l5.39,-1.7l0.21,-0.33l-0.3,-0.25l-3.82,0.06l-3.95,-1.1l1.88,-3.13l1.68,-1.81l6.54,-2.84l2.11,0.77ZM158.85,56.58l-1.82,2.62l-3.38,-2.9l0.49,-0.39l3.17,-0.18l1.54,0.86ZM149.71,42.7l1.0,1.87l0.37,0.14l2.17,-0.83l2.33,0.2l0.38,2.16l-1.38,2.17l-8.33,0.76l-6.34,2.15l-3.51,0.1l-0.22,-1.13l4.98,-2.12l0.17,-0.34l-0.31,-0.23l-11.27,0.6l-3.04,-0.78l3.14,-4.57l2.2,-1.35l6.87,1.7l4.4,3.0l0.14,0.05l4.37,0.39l0.27,-0.48l-3.41,-4.68l1.96,-1.62l2.28,0.53l0.79,2.32ZM145.44,29.83l-2.18,0.77l-3.79,-0.0l0.02,-0.31l2.34,-1.5l1.2,0.23l2.42,0.83ZM144.83,34.5l-4.44,1.46l-3.18,-1.48l1.6,-1.36l3.51,-0.53l3.1,0.75l-0.6,1.16ZM119.02,65.87l-6.17,2.07l-1.19,-1.82l-0.13,-0.11l-5.48,-2.32l0.92,-1.7l1.73,-3.44l2.16,-3.15l-0.02,-0.36l-2.09,-2.56l7.84,-0.71l3.59,1.02l6.32,0.27l2.35,1.37l2.25,1.71l-2.68,1.04l-6.21,3.41l-3.1,3.28l-0.08,0.21l0.0,1.81ZM129.66,35.4l-0.3,3.55l-1.77,1.67l-2.34,0.27l-4.62,2.2l-3.89,0.76l-2.83,-0.93l3.85,-3.52l5.04,-3.36l3.75,0.07l3.11,-0.7ZM111.24,152.74l-0.82,0.29l-3.92,-1.39l-0.7,-1.06l-0.12,-0.1l-2.15,-1.09l-0.41,-0.84l-0.2,-0.16l-2.44,-0.56l-0.84,-1.56l0.1,-0.36l2.34,0.64l1.53,0.5l2.28,0.34l0.78,1.04l1.24,1.55l0.09,0.08l2.42,1.3l0.81,1.39ZM88.54,134.82l0.14,0.02l2.0,-0.23l-0.67,3.48l0.06,0.24l1.78,2.22l-0.24,-0.0l-1.4,-1.42l-0.91,-1.53l-1.26,-1.08l-0.42,-1.35l0.09,-0.66l0.82,0.31Z", "name": "Canada"}, "CG": {"path": "M453.66,296.61l-0.9,-0.82l-0.35,-0.04l-0.83,0.48l-0.77,0.83l-1.65,-2.13l1.66,-1.2l0.08,-0.39l-0.81,-1.43l0.59,-0.43l1.62,-0.29l0.24,-0.24l0.1,-0.58l0.94,0.84l0.19,0.08l2.21,0.11l0.27,-0.14l0.81,-1.29l0.32,-1.76l-0.27,-1.96l-0.06,-0.15l-1.08,-1.35l1.02,-2.74l-0.09,-0.34l-0.62,-0.5l-0.22,-0.06l-1.66,0.18l-0.55,-1.03l0.12,-0.73l2.85,0.09l1.98,0.65l2.0,0.59l0.38,-0.25l0.17,-1.3l1.26,-2.24l1.34,-1.19l1.54,0.38l1.35,0.12l-0.11,1.15l-0.74,1.34l-0.5,1.61l-0.31,2.22l0.12,1.41l-0.4,0.9l-0.06,0.88l-0.24,0.67l-1.57,1.15l-1.24,1.41l-1.09,2.43l-0.03,0.13l0.08,1.95l-0.55,0.69l-1.46,1.23l-1.32,1.41l-0.61,-0.29l-0.13,-0.57l-0.29,-0.23l-1.36,-0.02l-0.23,0.1l-0.72,0.81l-0.41,-0.16Z", "name": "Republic of the Congo"}, "CF": {"path": "M459.41,266.56l1.9,-0.17l0.22,-0.12l0.36,-0.5l0.14,0.02l0.55,0.51l0.29,0.07l3.15,-0.96l0.12,-0.07l1.05,-0.97l1.29,-0.87l0.12,-0.33l-0.17,-0.61l0.38,-0.12l2.36,0.15l0.15,-0.03l2.36,-1.17l0.12,-0.1l1.78,-2.72l1.18,-0.96l1.23,-0.34l0.21,0.79l0.07,0.13l1.37,1.5l0.01,0.86l-0.39,1.0l-0.01,0.17l0.16,0.78l0.1,0.17l0.91,0.76l1.89,1.09l1.24,0.92l0.02,0.67l0.12,0.23l1.67,1.3l0.99,1.03l0.61,1.46l0.14,0.15l1.79,0.95l0.2,0.4l-0.44,0.14l-1.54,-0.06l-1.98,-0.26l-0.93,0.22l-0.19,0.14l-0.3,0.48l-0.57,0.05l-0.91,-0.49l-0.26,-0.01l-2.7,1.21l-1.04,-0.23l-0.21,0.03l-0.34,0.19l-0.12,0.13l-0.64,1.3l-1.67,-0.43l-1.77,-0.24l-1.58,-0.91l-2.06,-0.85l-0.27,0.02l-1.42,0.88l-0.97,1.27l-0.06,0.14l-0.19,1.46l-1.3,-0.11l-1.67,-0.42l-0.27,0.07l-1.55,1.41l-0.99,1.76l-0.14,-1.18l-0.13,-0.22l-1.1,-0.78l-0.86,-1.2l-0.2,-0.84l-0.07,-0.13l-1.07,-1.19l0.16,-0.59l0.0,-0.15l-0.24,-1.01l0.18,-1.77l0.5,-0.38l0.09,-0.11l1.18,-2.4Z", "name": "Central African Republic"}, "CD": {"path": "M497.85,276.25l-0.14,2.77l0.2,0.3l0.57,0.19l-0.47,0.52l-1.0,0.71l-0.96,1.31l-0.56,1.22l-0.16,2.04l-0.54,0.89l-0.04,0.15l-0.02,1.76l-0.63,0.61l-0.09,0.2l-0.08,1.33l-0.2,0.11l-0.15,0.21l-0.23,1.37l0.03,0.2l0.6,1.08l0.16,2.96l0.44,2.29l-0.24,1.25l0.01,0.15l0.5,1.46l0.07,0.12l1.41,1.37l1.09,2.56l-0.51,-0.11l-3.45,0.45l-0.67,0.3l-0.15,0.15l-0.71,1.61l0.01,0.26l0.52,1.03l-0.43,2.9l-0.31,2.55l0.13,0.29l0.7,0.46l1.75,0.99l0.31,-0.01l0.26,-0.17l0.15,1.9l-1.44,-0.02l-0.94,-1.28l-0.94,-1.1l-0.17,-0.1l-1.76,-0.33l-0.5,-1.18l-0.42,-0.15l-1.44,0.75l-1.79,-0.32l-0.77,-1.05l-0.2,-0.12l-1.59,-0.23l-0.97,0.04l-0.1,-0.53l-0.27,-0.25l-0.86,-0.06l-1.13,-0.15l-1.62,0.37l-1.04,-0.06l-0.32,0.09l0.11,-2.56l-0.08,-0.21l-0.77,-0.87l-0.17,-1.41l0.36,-1.47l-0.03,-0.21l-0.48,-0.91l-0.04,-1.52l-0.3,-0.29l-2.65,0.02l0.13,-0.53l-0.29,-0.37l-1.28,0.01l-0.28,0.21l-0.07,0.24l-1.35,0.09l-0.26,0.18l-0.62,1.45l-0.25,0.42l-1.17,-0.3l-0.19,0.01l-0.79,0.34l-1.44,0.18l-1.41,-1.96l-0.7,-1.47l-0.61,-1.86l-0.28,-0.21l-7.39,-0.03l-0.92,0.3l-0.78,-0.03l-0.78,0.25l-0.11,-0.25l0.35,-0.15l0.18,-0.26l0.07,-1.02l0.33,-0.52l0.72,-0.42l0.52,0.2l0.33,-0.08l0.76,-0.86l0.99,0.02l0.11,0.48l0.16,0.2l0.94,0.44l0.35,-0.07l1.46,-1.56l1.44,-1.21l0.68,-0.85l0.06,-0.2l-0.08,-1.99l1.04,-2.33l1.1,-1.23l1.62,-1.19l0.11,-0.14l0.29,-0.8l0.08,-0.94l0.38,-0.82l0.03,-0.16l-0.13,-1.38l0.3,-2.16l0.47,-1.51l0.73,-1.31l0.04,-0.12l0.15,-1.51l0.21,-1.66l0.89,-1.16l1.16,-0.7l1.9,0.79l1.69,0.95l1.81,0.24l1.85,0.48l0.35,-0.16l0.71,-1.43l0.16,-0.09l1.03,0.23l0.19,-0.02l2.65,-1.19l0.86,0.46l0.17,0.03l0.81,-0.08l0.23,-0.14l0.31,-0.5l0.75,-0.17l1.83,0.26l1.64,0.06l0.72,-0.21l1.39,1.9l0.16,0.11l1.12,0.3l0.24,-0.04l0.58,-0.36l1.05,0.15l0.15,-0.02l1.15,-0.44l0.47,0.84l0.08,0.09l2.08,1.57Z", "name": "Democratic Republic of the Congo"}, "CZ": {"path": "M463.29,152.22l-0.88,-0.47l-0.18,-0.03l-1.08,0.15l-1.86,-0.94l-0.21,-0.02l-0.88,0.24l-0.13,0.07l-1.25,1.17l-1.63,-0.91l-1.38,-1.36l-1.22,-0.75l-0.24,-1.24l-0.33,-0.75l1.53,-0.6l0.98,-0.84l1.74,-0.62l0.11,-0.07l0.47,-0.47l0.46,0.27l0.24,0.03l0.96,-0.3l1.06,0.95l0.15,0.07l1.57,0.24l-0.1,0.6l0.16,0.32l1.36,0.68l0.41,-0.15l0.28,-0.62l1.29,0.28l0.19,0.84l0.26,0.23l1.73,0.18l0.74,1.02l-0.17,0.0l-0.25,0.13l-0.32,0.49l-0.46,0.11l-0.22,0.23l-0.13,0.57l-0.32,0.1l-0.2,0.22l-0.03,0.14l-0.65,0.25l-1.05,-0.05l-0.28,0.17l-0.22,0.43Z", "name": "Czech Republic"}, "CY": {"path": "M505.03,193.75l-1.51,0.68l-1.0,-0.3l-0.32,-0.63l0.69,-0.06l0.41,0.13l0.19,-0.0l0.62,-0.22l0.31,0.02l0.06,0.22l0.49,0.17l0.06,-0.01Z", "name": "Cyprus"}, "CR": {"path": "M213.0,263.84l-0.98,-0.4l-0.3,-0.31l0.16,-0.24l0.05,-0.21l-0.09,-0.56l-0.1,-0.18l-0.76,-0.65l-0.99,-0.5l-0.74,-0.28l-0.13,-0.58l-0.12,-0.18l-0.66,-0.45l-0.34,-0.0l-0.13,0.31l0.13,0.59l-0.17,0.21l-0.34,-0.42l-0.14,-0.1l-0.7,-0.22l-0.23,-0.34l0.01,-0.62l0.31,-0.74l-0.14,-0.38l-0.3,-0.15l0.47,-0.4l1.48,0.6l0.26,-0.02l0.47,-0.27l0.58,0.15l0.35,0.44l0.17,0.11l0.74,0.17l0.27,-0.07l0.3,-0.27l0.52,1.09l0.97,1.02l0.77,0.71l-0.41,0.1l-0.23,0.3l0.01,1.02l0.12,0.24l0.2,0.14l-0.07,0.05l-0.11,0.3l0.08,0.37l-0.23,0.63Z", "name": "Costa Rica"}, "CU": {"path": "M215.01,226.09l2.08,0.18l1.94,0.03l2.24,0.86l0.95,0.92l0.25,0.08l2.22,-0.28l0.79,0.55l3.68,2.81l0.19,0.06l0.77,-0.03l1.18,0.42l-0.12,0.47l0.27,0.37l1.78,0.1l1.59,0.9l-0.11,0.22l-1.5,0.3l-1.64,0.13l-1.75,-0.2l-2.69,0.19l1.0,-0.86l-0.03,-0.48l-1.02,-0.68l-0.13,-0.05l-1.52,-0.16l-0.74,-0.64l-0.57,-1.42l-0.3,-0.19l-1.36,0.1l-2.23,-0.67l-0.71,-0.52l-0.14,-0.06l-3.2,-0.4l-0.42,-0.25l0.56,-0.39l0.12,-0.33l-0.27,-0.22l-2.46,-0.13l-0.2,0.06l-1.72,1.31l-0.94,0.03l-0.25,0.15l-0.29,0.53l-1.04,0.24l-0.29,-0.07l0.7,-0.43l0.1,-0.11l0.5,-0.87l1.04,-0.54l1.23,-0.49l1.86,-0.25l0.62,-0.28Z", "name": "Cuba"}, "SZ": {"path": "M500.95,353.41l-0.41,0.97l-1.16,0.23l-1.29,-1.26l-0.02,-0.71l0.63,-0.93l0.23,-0.7l0.47,-0.12l1.04,0.4l0.32,1.05l0.2,1.08Z", "name": "Swaziland"}, "SY": {"path": "M510.84,199.83l0.09,-0.11l0.07,-0.2l-0.04,-1.08l0.56,-1.4l1.3,-1.01l0.1,-0.34l-0.41,-1.11l-0.24,-0.19l-0.89,-0.11l-0.2,-1.84l0.55,-1.05l1.3,-1.22l0.09,-0.19l0.09,-1.09l0.39,0.27l0.25,0.04l2.66,-0.77l1.35,0.52l2.06,-0.01l2.93,-1.08l1.35,0.04l2.14,-0.34l-0.83,1.16l-1.31,0.68l-0.16,0.3l0.23,2.03l-0.9,3.25l-5.43,2.87l-4.79,2.91l-2.32,-0.92Z", "name": "Syria"}, "KG": {"path": "M599.04,172.15l0.38,-0.9l1.43,-0.37l4.04,1.02l0.37,-0.23l0.36,-1.64l1.17,-0.52l3.45,1.24l0.2,-0.0l0.86,-0.31l4.09,0.08l3.61,0.31l1.18,1.02l0.11,0.06l1.19,0.34l-0.13,0.26l-3.84,1.58l-0.13,0.1l-0.81,1.08l-3.08,0.34l-0.24,0.16l-0.85,1.7l-2.43,-0.37l-0.14,0.01l-1.79,0.61l-2.39,1.4l-0.12,0.39l0.25,0.49l-0.48,0.45l-4.57,0.43l-3.04,-0.94l-2.45,0.18l0.14,-1.02l2.42,0.44l0.27,-0.08l0.81,-0.81l1.76,0.27l0.21,-0.05l3.21,-2.14l-0.03,-0.51l-2.97,-1.57l-0.26,-0.01l-1.64,0.69l-1.38,-0.84l1.81,-1.67l-0.09,-0.5l-0.46,-0.18Z", "name": "Kyrgyzstan"}, "KE": {"path": "M523.3,287.04l0.06,0.17l1.29,1.8l-1.46,0.84l-0.11,0.11l-0.55,0.93l-0.81,0.16l-0.24,0.24l-0.34,1.69l-0.81,1.06l-0.46,1.58l-0.76,0.63l-3.3,-2.3l-0.16,-1.32l-0.15,-0.23l-9.35,-5.28l-0.02,-2.4l1.92,-2.63l0.91,-1.83l0.01,-0.24l-1.09,-2.86l-0.29,-1.24l-1.09,-1.63l2.93,-2.85l0.92,0.3l0.0,1.19l0.09,0.22l0.86,0.83l0.21,0.08l1.65,0.0l3.09,2.08l0.16,0.05l0.79,0.03l0.54,-0.06l0.58,0.28l1.67,0.2l0.28,-0.12l0.69,-0.98l2.04,-0.94l0.86,0.73l0.19,0.07l1.1,0.0l-1.82,2.36l-0.06,0.18l0.03,9.12Z", "name": "Kenya"}, "SS": {"path": "M505.7,261.39l0.02,1.64l-0.27,0.55l-1.15,0.05l-0.24,0.15l-0.85,1.44l0.22,0.45l1.44,0.17l1.15,1.12l0.42,0.95l0.14,0.15l1.06,0.54l1.33,2.45l-3.06,2.98l-1.44,1.08l-1.75,0.01l-1.92,0.56l-1.5,-0.53l-0.27,0.03l-0.85,0.57l-1.98,-1.5l-0.56,-1.02l-0.37,-0.13l-1.32,0.5l-1.08,-0.15l-0.2,0.04l-0.56,0.35l-0.9,-0.24l-1.44,-1.97l-0.39,-0.77l-0.13,-0.13l-1.78,-0.94l-0.65,-1.5l-1.08,-1.12l-1.57,-1.22l-0.02,-0.68l-0.12,-0.23l-1.37,-1.02l-1.17,-0.68l0.2,-0.08l0.86,-0.48l0.14,-0.18l0.63,-2.22l0.6,-1.02l1.47,-0.28l0.35,0.56l1.29,1.48l0.14,0.09l0.69,0.22l0.22,-0.02l0.83,-0.4l1.58,0.08l0.26,0.39l0.25,0.13l2.49,0.0l0.3,-0.25l0.06,-0.35l1.13,-0.42l0.18,-0.18l0.22,-0.63l0.68,-0.38l1.95,1.37l0.23,0.05l1.29,-0.26l0.19,-0.12l1.23,-1.8l1.36,-1.37l0.08,-0.25l-0.21,-1.52l-0.06,-0.15l-0.25,-0.3l0.94,-0.08l0.26,-0.21l0.1,-0.32l0.6,0.09l-0.25,1.67l0.3,1.83l0.11,0.19l1.22,0.94l0.25,0.73l-0.04,1.2l0.26,0.31l0.09,0.01Z", "name": "South Sudan"}, "SR": {"path": "M278.1,270.26l2.71,0.45l0.31,-0.14l0.19,-0.32l1.82,-0.16l2.25,0.56l-1.09,1.81l-0.04,0.19l0.2,1.72l0.05,0.13l0.9,1.35l-0.39,0.99l-0.21,1.09l-0.48,0.8l-1.2,-0.44l-0.17,-0.01l-1.12,0.24l-0.95,-0.21l-0.35,0.2l-0.25,0.73l0.05,0.29l0.3,0.35l-0.06,0.13l-1.01,-0.15l-1.42,-2.03l-0.32,-1.36l-0.29,-0.23l-0.63,-0.0l-0.95,-1.56l0.41,-1.16l0.01,-0.17l-0.08,-0.35l1.29,-0.56l0.18,-0.22l0.35,-1.97Z", "name": "Suriname"}, "KH": {"path": "M680.28,257.89l-0.93,-1.2l-1.24,-2.56l-0.56,-2.9l1.45,-1.92l3.07,-0.46l2.26,0.35l2.03,0.98l0.38,-0.11l1.0,-1.55l1.86,0.79l0.52,1.51l-0.28,2.82l-4.05,1.88l-0.12,0.45l0.79,1.1l-2.2,0.17l-2.08,0.98l-1.89,-0.33Z", "name": "Cambodia"}, "SV": {"path": "M197.02,248.89l0.18,-0.05l0.59,0.17l0.55,0.51l0.64,0.35l0.06,0.22l0.37,0.21l1.01,-0.28l0.38,0.13l0.16,0.13l-0.14,0.81l-0.18,0.38l-1.22,-0.03l-0.84,-0.23l-1.11,-0.52l-1.31,-0.15l-0.49,-0.38l0.02,-0.08l0.76,-0.57l0.46,-0.27l0.11,-0.35Z", "name": "El Salvador"}, "SK": {"path": "M468.01,150.02l0.05,0.07l0.36,0.1l0.85,-0.37l1.12,1.02l0.33,0.05l1.38,-0.65l1.07,0.3l0.16,0.0l1.69,-0.43l1.95,1.02l-0.51,0.64l-0.45,1.2l-0.32,0.2l-2.55,-0.93l-0.17,-0.01l-0.82,0.2l-0.17,0.11l-0.53,0.68l-0.94,0.32l-0.14,-0.11l-0.29,-0.04l-1.18,0.48l-0.95,0.09l-0.26,0.21l-0.15,0.47l-1.84,0.34l-0.82,-0.31l-1.14,-0.73l-0.2,-0.89l0.42,-0.84l0.91,0.05l0.12,-0.02l0.86,-0.33l0.18,-0.21l0.03,-0.13l0.32,-0.1l0.2,-0.22l0.12,-0.55l0.39,-0.1l0.18,-0.13l0.3,-0.45l0.43,-0.0Z", "name": "Slovakia"}, "KR": {"path": "M737.31,185.72l0.84,0.08l0.27,-0.12l0.89,-1.2l1.63,-0.13l1.1,-0.2l0.21,-0.16l0.12,-0.24l1.86,2.95l0.59,1.79l0.02,3.17l-0.84,1.38l-2.23,0.55l-1.95,1.14l-1.91,0.21l-0.22,-1.21l0.45,-2.07l-0.01,-0.17l-0.99,-2.67l1.54,-0.4l0.17,-0.46l-1.55,-2.24Z", "name": "South Korea"}, "SI": {"path": "M455.77,159.59l1.79,0.21l0.18,-0.04l1.2,-0.68l2.12,-0.08l0.21,-0.1l0.38,-0.42l0.1,0.01l0.28,0.62l-1.71,0.71l-0.18,0.22l-0.21,1.1l-0.71,0.26l-0.2,0.28l0.01,0.55l-0.59,-0.04l-0.79,-0.47l-0.38,0.06l-0.36,0.41l-0.84,-0.05l0.05,-0.15l-0.56,-1.24l0.21,-1.17Z", "name": "Slovenia"}, "KP": {"path": "M747.76,172.02l-0.23,-0.04l-0.26,0.08l-1.09,1.02l-0.78,1.06l-0.06,0.19l0.09,1.95l-1.12,0.57l-0.53,0.58l-0.88,0.82l-1.69,0.51l-1.09,0.79l-0.12,0.22l-0.07,1.17l-0.22,0.25l0.09,0.47l0.96,0.46l1.22,1.1l-0.19,0.37l-0.91,0.16l-1.75,0.14l-0.22,0.12l-0.87,1.18l-0.95,-0.09l-0.3,0.18l-0.97,-0.44l-0.39,0.13l-0.25,0.44l-0.29,0.09l-0.03,-0.2l-0.18,-0.23l-0.62,-0.25l-0.43,-0.29l0.52,-0.97l0.52,-0.3l0.13,-0.38l-0.18,-0.42l0.59,-1.47l0.01,-0.21l-0.16,-0.48l-0.22,-0.2l-1.41,-0.31l-0.82,-0.55l1.74,-1.62l2.73,-1.58l1.62,-1.96l0.96,0.76l0.17,0.06l2.17,0.11l0.31,-0.37l-0.32,-1.31l3.61,-1.21l0.16,-0.13l0.79,-1.34l1.25,1.38Z", "name": "North Korea"}, "SO": {"path": "M543.8,256.48l0.61,-0.05l1.14,-0.37l1.31,-0.25l0.12,-0.05l1.11,-0.81l0.57,-0.0l0.03,0.39l-0.23,1.49l0.01,1.25l-0.52,0.92l-0.7,2.71l-1.19,2.79l-1.54,3.2l-2.13,3.66l-2.12,2.79l-2.92,3.39l-2.47,2.0l-3.76,2.5l-2.33,1.9l-2.77,3.06l-0.61,1.35l-0.28,0.29l-1.22,-1.69l-0.03,-8.92l2.12,-2.76l0.59,-0.68l1.47,-0.04l0.18,-0.06l2.15,-1.71l3.16,-0.11l0.21,-0.09l7.08,-7.55l1.76,-2.12l1.14,-1.57l0.06,-0.18l0.01,-4.67Z", "name": "Somalia"}, "SN": {"path": "M379.28,250.34l-0.95,-1.82l-0.09,-0.1l-0.83,-0.6l0.62,-0.28l0.13,-0.11l1.21,-1.8l0.6,-1.31l0.71,-0.68l1.09,0.2l0.18,-0.02l1.17,-0.53l1.25,-0.03l1.17,0.73l1.59,0.65l1.47,1.83l1.59,1.7l0.12,1.56l0.49,1.46l0.1,0.14l0.85,0.65l0.18,0.82l-0.08,0.57l-0.13,0.05l-1.29,-0.19l-0.29,0.13l-0.11,0.16l-0.35,0.04l-1.83,-0.61l-5.84,-0.13l-0.12,0.02l-0.6,0.26l-0.87,-0.06l-1.01,0.32l-0.26,-1.26l1.9,0.04l0.16,-0.04l0.54,-0.32l0.37,-0.02l0.15,-0.05l0.78,-0.5l0.92,0.46l0.12,0.03l1.09,0.04l0.15,-0.03l1.08,-0.57l0.11,-0.44l-0.51,-0.74l-0.39,-0.1l-0.76,0.39l-0.62,-0.01l-0.92,-0.58l-0.18,-0.05l-0.79,0.04l-0.2,0.09l-0.48,0.51l-2.41,0.06Z", "name": "Senegal"}, "SL": {"path": "M392.19,267.53l-0.44,-0.12l-1.73,-0.97l-1.24,-1.28l-0.4,-0.84l-0.27,-1.65l1.21,-1.0l0.09,-0.12l0.27,-0.66l0.32,-0.41l0.56,-0.05l0.16,-0.07l0.5,-0.41l1.75,0.0l0.59,0.77l0.49,0.96l-0.07,0.64l0.04,0.19l0.36,0.58l-0.03,0.84l0.24,0.2l-0.64,0.65l-1.13,1.37l-0.06,0.14l-0.12,0.66l-0.43,0.58Z", "name": "Sierra Leone"}, "SB": {"path": "M826.74,311.51l0.23,0.29l-0.95,-0.01l-0.39,-0.63l0.65,0.27l0.45,0.09ZM825.01,308.52l-1.18,-1.39l-0.37,-1.06l0.24,0.0l0.82,1.84l0.49,0.6ZM823.21,309.42l-0.44,0.03l-1.43,-0.24l-0.32,-0.24l0.08,-0.5l1.29,0.31l0.72,0.47l0.11,0.18ZM817.9,303.81l2.59,1.44l0.3,0.41l-1.21,-0.66l-1.34,-0.89l-0.34,-0.3ZM813.77,302.4l0.48,0.34l0.1,0.08l-0.33,-0.17l-0.25,-0.25Z", "name": "Solomon Islands"}, "SA": {"path": "M528.24,243.1l-0.2,-0.69l-0.07,-0.12l-0.69,-0.71l-0.18,-0.94l-0.12,-0.19l-1.24,-0.89l-1.28,-2.09l-0.7,-2.08l-0.07,-0.11l-1.73,-1.79l-0.11,-0.07l-1.03,-0.39l-1.57,-2.36l-0.27,-1.72l0.1,-1.53l-0.03,-0.15l-1.44,-2.93l-1.25,-1.13l-1.34,-0.56l-0.72,-1.33l0.11,-0.49l-0.02,-0.2l-0.7,-1.38l-0.08,-0.1l-0.68,-0.56l-0.97,-1.98l-2.8,-4.03l-0.25,-0.13l-0.85,0.01l0.29,-1.11l0.12,-0.97l0.23,-0.81l2.52,0.39l0.23,-0.06l1.08,-0.84l0.6,-0.95l1.78,-0.35l0.22,-0.17l0.37,-0.83l0.74,-0.42l0.08,-0.46l-2.17,-2.4l4.55,-1.26l0.12,-0.06l0.36,-0.32l2.83,0.71l3.67,1.91l7.04,5.5l0.17,0.06l4.64,0.22l2.06,0.24l0.55,1.15l0.28,0.17l1.56,-0.06l0.9,2.15l0.14,0.15l1.14,0.57l0.39,0.85l0.11,0.13l1.59,1.06l0.12,0.91l-0.23,0.83l0.01,0.18l0.32,0.9l0.07,0.11l0.68,0.7l0.33,0.86l0.37,0.65l0.09,0.1l0.76,0.53l0.25,0.04l0.45,-0.12l0.35,0.75l0.1,0.63l0.96,2.68l0.23,0.19l7.53,1.33l0.27,-0.09l0.24,-0.26l0.87,1.41l-1.58,4.96l-7.34,2.54l-7.28,1.02l-2.34,1.17l-0.12,0.1l-1.74,2.63l-0.86,0.32l-0.49,-0.68l-0.28,-0.12l-0.92,0.12l-2.32,-0.25l-0.41,-0.23l-0.15,-0.04l-2.89,0.06l-0.63,0.2l-0.91,-0.59l-0.43,0.11l-0.66,1.27l-0.03,0.21l0.21,0.89l-0.6,0.45Z", "name": "Saudi Arabia"}, "SE": {"path": "M476.42,90.44l-0.15,0.1l-2.43,2.86l-0.07,0.24l0.36,2.31l-3.84,3.1l-4.83,3.38l-0.11,0.15l-1.82,5.45l0.03,0.26l1.78,2.68l2.27,1.99l-2.13,3.88l-2.49,0.82l-0.2,0.24l-0.95,6.05l-1.32,3.09l-2.82,-0.32l-0.3,0.16l-1.34,2.64l-2.48,0.14l-0.76,-3.15l-2.09,-4.04l-1.85,-5.01l1.03,-1.98l2.06,-2.53l0.06,-0.13l0.83,-4.45l-0.06,-0.25l-1.54,-1.86l-0.15,-5.0l1.52,-3.48l2.28,0.06l0.27,-0.16l0.87,-1.59l-0.01,-0.31l-0.8,-1.21l3.79,-5.63l4.07,-7.54l2.23,0.01l0.29,-0.22l0.59,-2.15l4.46,0.66l0.34,-0.26l0.34,-2.64l1.21,-0.14l3.24,2.08l3.78,2.85l0.06,6.37l0.03,0.14l0.67,1.29l-3.95,1.07Z", "name": "Sweden"}, "SD": {"path": "M505.98,259.75l-0.31,-0.9l-0.1,-0.14l-1.2,-0.93l-0.27,-1.66l0.29,-1.83l-0.25,-0.34l-1.16,-0.17l-0.33,0.21l-0.11,0.37l-1.3,0.11l-0.21,0.49l0.55,0.68l0.18,1.29l-1.31,1.33l-1.18,1.72l-1.04,0.21l-2.0,-1.4l-0.32,-0.02l-0.95,0.52l-0.14,0.16l-0.21,0.6l-1.16,0.43l-0.19,0.23l-0.04,0.27l-2.08,0.0l-0.25,-0.39l-0.24,-0.13l-1.81,-0.09l-0.14,0.03l-0.8,0.38l-0.49,-0.16l-1.22,-1.39l-0.42,-0.67l-0.31,-0.14l-1.81,0.35l-0.2,0.14l-0.72,1.24l-0.61,2.14l-0.73,0.4l-0.62,0.22l-0.83,-0.68l-0.12,-0.6l0.38,-0.97l0.01,-1.14l-0.08,-0.2l-1.39,-1.53l-0.25,-0.97l0.03,-0.57l-0.11,-0.25l-0.81,-0.66l-0.03,-1.34l-0.04,-0.14l-0.52,-0.98l-0.31,-0.15l-0.42,0.07l0.12,-0.44l0.63,-1.03l0.03,-0.23l-0.24,-0.88l0.69,-0.66l0.02,-0.41l-0.4,-0.46l0.58,-1.39l1.04,-1.71l1.97,0.16l0.32,-0.3l-0.12,-10.24l0.02,-0.8l2.59,-0.01l0.3,-0.3l0.0,-4.92l29.19,0.0l0.68,2.17l-0.4,0.35l-0.1,0.27l0.36,2.69l0.93,3.15l0.12,0.16l2.05,1.4l-0.99,1.15l-1.75,0.4l-0.15,0.08l-0.79,0.79l-0.08,0.17l-0.24,1.69l-1.07,3.75l-0.0,0.16l0.25,0.96l-0.38,2.1l-0.98,2.41l-1.52,1.3l-1.07,1.94l-0.25,0.99l-1.08,0.64l-0.13,0.18l-0.46,1.65Z", "name": "Sudan"}, "DO": {"path": "M241.7,234.97l0.15,-0.22l1.73,0.01l1.43,0.64l0.15,0.03l0.45,-0.04l0.36,0.74l0.28,0.17l1.02,-0.04l-0.04,0.43l0.27,0.33l1.03,0.09l0.91,0.7l-0.57,0.64l-0.99,-0.47l-0.16,-0.03l-1.11,0.11l-0.79,-0.12l-0.26,0.09l-0.38,0.4l-0.66,0.11l-0.28,-0.45l-0.38,-0.12l-0.83,0.37l-0.14,0.13l-0.85,1.49l-0.27,-0.17l-0.1,-0.58l0.05,-0.67l-0.07,-0.21l-0.44,-0.53l0.35,-0.25l0.12,-0.19l0.19,-1.0l-0.2,-1.4Z", "name": "Dominican Republic"}, "DJ": {"path": "M528.78,253.36l0.34,0.45l-0.06,0.76l-1.26,0.54l-0.05,0.53l0.82,0.53l-0.57,0.83l-0.3,-0.25l-0.27,-0.05l-0.56,0.17l-1.07,-0.03l-0.04,-0.56l-0.16,-0.56l0.76,-1.07l0.76,-0.97l0.89,0.18l0.25,-0.06l0.51,-0.42Z", "name": "Djibouti"}, "DK": {"path": "M452.4,129.07l-1.27,2.39l-2.25,-1.69l-0.26,-1.08l3.15,-1.0l0.63,1.39ZM447.87,126.25l-0.35,0.76l-0.47,-0.24l-0.38,0.09l-1.8,2.53l-0.03,0.29l0.56,1.4l-1.22,0.4l-1.68,-0.41l-0.92,-1.76l-0.07,-3.47l0.38,-0.88l0.62,-0.93l2.07,-0.21l0.19,-0.1l0.84,-0.95l1.5,-0.76l-0.06,1.26l-0.7,1.1l-0.03,0.25l0.3,1.0l0.18,0.19l1.06,0.42Z", "name": "Denmark"}, "DE": {"path": "M445.51,131.69l0.03,0.94l0.21,0.28l2.32,0.74l-0.02,1.0l0.37,0.3l2.55,-0.65l1.36,-0.89l2.63,1.27l1.09,1.01l0.51,1.51l-0.6,0.78l-0.0,0.36l0.88,1.17l0.58,1.68l-0.18,1.08l0.03,0.18l0.87,1.81l-0.66,0.2l-0.55,-0.32l-0.36,0.05l-0.58,0.58l-1.73,0.62l-0.99,0.84l-1.77,0.7l-0.16,0.4l0.42,0.94l0.26,1.34l0.14,0.2l1.25,0.76l1.22,1.2l-0.71,1.2l-0.81,0.37l-0.17,0.32l0.34,1.99l-0.04,0.09l-0.47,-0.39l-0.17,-0.07l-1.2,-0.1l-1.85,0.57l-2.15,-0.13l-0.29,0.18l-0.21,0.5l-0.96,-0.67l-0.24,-0.05l-0.67,0.16l-2.6,-0.94l-0.34,0.1l-0.42,0.57l-1.64,-0.02l0.26,-1.88l1.24,-2.15l-0.21,-0.45l-3.54,-0.58l-0.98,-0.71l0.12,-1.26l-0.05,-0.2l-0.44,-0.64l0.27,-2.18l-0.38,-3.14l1.17,-0.0l0.27,-0.17l0.63,-1.26l0.65,-3.17l-0.02,-0.17l-0.41,-1.0l0.32,-0.47l1.77,-0.16l0.37,0.6l0.47,0.06l1.7,-1.69l0.06,-0.33l-0.55,-1.24l-0.09,-1.51l1.5,0.36l0.16,-0.01l1.22,-0.4Z", "name": "Germany"}, "YE": {"path": "M553.53,242.65l-1.51,0.58l-0.17,0.16l-0.48,1.14l-0.07,0.79l-2.31,1.0l-3.98,1.19l-2.28,1.8l-0.97,0.12l-0.7,-0.14l-0.23,0.05l-1.42,1.03l-1.51,0.47l-2.07,0.13l-0.68,0.15l-0.17,0.1l-0.49,0.6l-0.57,0.16l-0.18,0.13l-0.3,0.49l-1.06,-0.05l-0.13,0.02l-0.73,0.32l-1.48,-0.11l-0.55,-1.26l0.07,-1.32l-0.04,-0.16l-0.39,-0.72l-0.48,-1.85l-0.52,-0.79l0.08,-0.02l0.22,-0.36l-0.23,-1.05l0.24,-0.39l0.04,-0.19l-0.09,-0.95l0.96,-0.72l0.11,-0.31l-0.23,-0.98l0.46,-0.88l0.75,0.49l0.26,0.03l0.63,-0.22l2.76,-0.06l0.5,0.25l2.42,0.26l0.85,-0.11l0.52,0.71l0.35,0.1l1.17,-0.43l0.15,-0.12l1.75,-2.64l2.22,-1.11l6.95,-0.96l2.55,5.58Z", "name": "Yemen"}, "AT": {"path": "M463.17,154.15l-0.14,0.99l-1.15,0.01l-0.24,0.47l0.39,0.56l-0.75,1.84l-0.36,0.4l-2.06,0.07l-0.14,0.04l-1.18,0.67l-1.96,-0.23l-3.43,-0.78l-0.5,-0.97l-0.33,-0.16l-2.47,0.55l-0.2,0.16l-0.18,0.37l-1.27,-0.38l-1.28,-0.09l-0.81,-0.41l0.25,-0.51l0.03,-0.18l-0.05,-0.28l0.35,-0.08l1.16,0.81l0.45,-0.13l0.27,-0.64l2.0,0.12l1.84,-0.57l1.05,0.09l0.71,0.59l0.47,-0.11l0.23,-0.54l0.02,-0.17l-0.32,-1.85l0.69,-0.31l0.13,-0.12l0.73,-1.23l1.61,0.89l0.35,-0.04l1.35,-1.27l0.7,-0.19l1.84,0.93l0.18,0.03l1.08,-0.15l0.81,0.43l-0.07,0.15l-0.02,0.2l0.24,1.06Z", "name": "Austria"}, "DZ": {"path": "M450.58,224.94l-8.31,4.86l-7.23,5.12l-3.46,1.13l-2.42,0.22l-0.02,-1.33l-0.2,-0.28l-1.15,-0.42l-1.45,-0.69l-0.55,-1.13l-0.1,-0.12l-8.45,-5.72l-17.72,-12.17l0.03,-0.38l-0.02,-3.21l3.84,-1.91l2.46,-0.41l2.1,-0.75l0.14,-0.11l0.9,-1.3l2.84,-1.06l0.19,-0.27l0.09,-1.81l1.21,-0.2l0.15,-0.07l1.06,-0.96l3.19,-0.46l0.23,-0.18l0.46,-1.08l-0.08,-0.34l-0.6,-0.54l-0.83,-2.85l-0.18,-1.8l-0.82,-1.57l2.13,-1.37l2.65,-0.49l0.13,-0.05l1.55,-1.15l2.34,-0.85l4.2,-0.51l4.07,-0.23l1.21,0.41l0.23,-0.01l2.3,-1.11l2.52,-0.02l0.94,0.62l0.2,0.05l1.25,-0.13l-0.36,1.03l-0.01,0.14l0.39,2.66l-0.56,2.2l-1.49,1.52l-0.08,0.24l0.22,2.12l0.11,0.2l1.94,1.58l0.02,0.54l0.12,0.23l1.45,1.06l1.04,4.85l0.81,2.42l0.13,1.19l-0.43,2.17l0.17,1.28l-0.31,1.53l0.2,1.56l-0.9,1.02l-0.01,0.38l1.43,1.88l0.09,1.06l0.04,0.13l0.89,1.48l0.37,0.12l1.03,-0.43l1.79,1.12l0.89,1.34Z", "name": "Algeria"}, "US": {"path": "M892.64,99.05l1.16,0.57l0.21,0.02l1.45,-0.38l1.92,0.99l2.17,0.47l-1.65,0.72l-1.75,-0.79l-0.93,-0.7l-0.21,-0.06l-2.11,0.22l-0.35,-0.2l0.09,-0.87ZM183.29,150.37l0.39,1.54l0.12,0.17l0.78,0.55l0.14,0.05l1.74,0.2l2.52,0.5l2.4,0.98l0.17,0.02l1.96,-0.4l3.01,0.81l0.91,-0.02l2.22,-0.88l4.67,2.33l3.86,2.01l0.21,0.71l0.15,0.18l0.33,0.17l-0.02,0.05l0.23,0.43l0.67,0.1l0.21,-0.05l0.1,-0.07l0.05,0.29l0.09,0.16l0.5,0.5l0.21,0.09l0.56,0.0l0.13,0.13l-0.2,0.36l0.12,0.41l2.49,1.39l0.99,5.24l-0.69,1.68l-1.16,1.64l-0.6,1.18l-0.06,0.31l0.04,0.22l0.28,0.43l0.11,0.1l0.85,0.47l0.15,0.04l0.63,0.0l0.14,-0.04l2.87,-1.58l2.6,-0.49l3.28,-1.5l0.17,-0.23l0.04,-0.43l-0.23,-0.93l-0.24,-0.39l0.74,-0.32l4.7,-0.01l0.25,-0.13l0.77,-1.15l2.9,-2.41l1.04,-0.52l8.35,-0.02l0.28,-0.21l0.2,-0.6l0.7,-0.14l1.06,-0.48l0.13,-0.11l0.92,-1.49l0.75,-2.39l1.67,-2.08l0.59,0.6l0.3,0.07l1.52,-0.49l0.88,0.72l-0.0,4.14l0.08,0.2l1.6,1.72l0.31,0.72l-2.42,1.35l-2.55,1.05l-2.64,0.9l-0.14,0.11l-1.33,1.81l-0.44,0.7l-0.05,0.15l-0.03,1.6l0.03,0.14l0.83,1.59l0.24,0.16l0.78,0.06l-1.15,0.33l-1.25,-0.04l-1.83,0.52l-2.51,0.29l-2.17,0.88l-0.17,0.36l0.33,0.22l3.55,-0.54l0.15,0.11l-2.87,0.73l-1.19,0.0l-0.16,-0.33l-0.36,0.06l-0.76,0.82l0.17,0.5l0.42,0.08l-0.45,1.75l-1.4,1.74l-0.04,-0.17l-0.21,-0.22l-0.48,-0.13l-0.77,-0.69l-0.36,-0.03l-0.12,0.34l0.52,1.58l0.09,0.14l0.52,0.43l0.03,0.87l-0.74,1.05l-0.39,0.63l0.05,-0.12l-0.08,-0.34l-1.19,-1.03l-0.28,-2.31l-0.26,-0.26l-0.32,0.19l-0.48,1.27l-0.01,0.19l0.39,1.33l-1.14,-0.31l-0.36,0.18l0.14,0.38l1.57,0.85l0.1,2.58l0.22,0.28l0.55,0.15l0.21,0.81l0.33,2.72l-1.46,1.94l-2.5,0.81l-0.12,0.07l-1.58,1.58l-1.15,0.17l-0.15,0.06l-1.27,1.03l-0.09,0.13l-0.32,0.85l-2.71,1.79l-1.45,1.37l-1.18,1.64l-0.05,0.12l-0.39,1.96l0.0,0.13l0.44,1.91l0.85,2.37l1.1,1.91l0.03,1.2l1.16,3.07l-0.08,1.74l-0.1,0.99l-0.57,1.48l-0.54,0.24l-0.97,-0.26l-0.34,-1.02l-0.12,-0.16l-0.89,-0.58l-2.44,-4.28l-0.34,-0.94l0.49,-1.71l-0.02,-0.21l-0.7,-1.5l-2.0,-2.35l-0.11,-0.08l-0.98,-0.42l-0.25,0.01l-2.42,1.19l-0.26,-0.08l-1.26,-1.29l-1.57,-0.68l-0.16,-0.02l-2.79,0.34l-2.18,-0.3l-1.98,0.19l-1.12,0.45l-0.14,0.44l0.4,0.65l-0.04,1.02l0.09,0.22l0.29,0.3l-0.06,0.05l-0.77,-0.33l-0.26,0.01l-0.87,0.48l-1.64,-0.08l-1.79,-1.39l-0.23,-0.06l-2.11,0.33l-1.75,-0.61l-0.14,-0.01l-1.61,0.2l-2.11,0.64l-0.11,0.06l-2.25,1.99l-2.53,1.21l-1.43,1.38l-0.58,1.22l-0.03,0.12l-0.03,1.86l0.13,1.32l0.3,0.62l-0.46,0.04l-1.71,-0.57l-1.85,-0.79l-0.63,-1.14l-0.54,-1.85l-0.07,-0.12l-1.45,-1.51l-0.86,-1.58l-1.26,-1.87l-0.09,-0.09l-1.76,-1.09l-0.17,-0.04l-2.05,0.05l-0.23,0.12l-1.44,1.97l-1.84,-0.72l-1.19,-0.76l-0.6,-1.45l-0.9,-1.52l-1.49,-1.21l-1.27,-0.87l-0.89,-0.96l-0.22,-0.1l-4.34,-0.0l-0.3,0.3l-0.0,0.84l-6.62,0.02l-5.66,-1.93l-3.48,-1.24l0.11,-0.25l-0.3,-0.42l-3.18,0.3l-2.6,0.2l-0.35,-1.19l-0.08,-0.13l-1.62,-1.61l-0.13,-0.08l-1.02,-0.29l-0.22,-0.66l-0.25,-0.2l-1.31,-0.13l-0.82,-0.7l-0.16,-0.07l-2.25,-0.27l-0.48,-0.34l-0.28,-1.44l-0.07,-0.14l-2.41,-2.84l-2.03,-3.89l0.08,-0.58l-0.1,-0.27l-1.08,-0.94l-1.87,-2.36l-0.33,-2.31l-0.07,-0.15l-1.24,-1.5l0.52,-2.4l-0.09,-2.57l-0.78,-2.3l0.96,-2.83l0.61,-5.66l-0.46,-4.26l-0.79,-2.71l-0.68,-1.4l0.13,-0.26l3.24,0.97l1.28,2.88l0.52,0.06l0.62,-0.84l0.06,-0.22l-0.4,-2.61l-0.74,-2.29l68.9,-0.0l0.3,-0.3l0.01,-0.95l0.32,-0.01ZM32.5,67.43l1.75,1.99l0.41,0.04l1.02,-0.81l3.79,0.25l-0.1,0.72l0.24,0.34l3.83,0.77l2.6,-0.44l5.21,1.41l4.84,0.43l1.9,0.57l0.15,0.01l3.25,-0.71l3.72,1.32l2.52,0.58l-0.03,38.14l0.29,0.3l2.41,0.11l2.34,1.0l1.7,1.59l2.22,2.42l0.42,0.03l2.41,-2.04l2.25,-1.08l1.23,1.76l1.71,1.53l2.24,1.62l1.54,2.56l2.56,4.09l0.11,0.11l4.1,2.17l0.06,1.93l-1.12,1.35l-1.22,-1.14l-2.08,-1.05l-0.68,-2.94l-0.09,-0.16l-3.18,-2.84l-1.32,-3.35l-0.25,-0.19l-2.43,-0.24l-3.93,-0.09l-2.85,-1.02l-5.24,-3.85l-6.77,-2.04l-3.52,0.3l-4.84,-1.7l-2.96,-1.6l-0.23,-0.02l-2.78,0.8l-0.21,0.35l0.46,2.31l-1.11,0.19l-2.9,0.78l-2.24,1.26l-2.42,0.68l-0.29,-1.79l1.07,-3.49l2.54,-1.11l0.12,-0.45l-0.69,-0.96l-0.41,-0.07l-3.19,2.12l-1.76,2.54l-3.57,2.62l-0.03,0.46l1.63,1.59l-2.14,2.38l-2.64,1.49l-2.49,1.09l-0.16,0.17l-0.58,1.48l-3.8,1.79l-0.14,0.14l-0.75,1.57l-2.75,1.41l-1.62,-0.25l-0.16,0.02l-2.35,0.98l-2.54,1.19l-2.06,1.15l-4.05,0.93l-0.1,-0.15l2.45,-1.45l2.49,-1.1l2.61,-1.88l3.03,-0.39l0.19,-0.1l1.2,-1.41l3.43,-2.11l0.61,-0.75l1.81,-1.24l0.13,-0.2l0.42,-2.7l1.24,-2.12l-0.03,-0.35l-0.34,-0.09l-2.73,1.05l-0.67,-0.53l-0.39,0.02l-1.13,1.11l-1.43,-1.62l-0.49,0.06l-0.41,0.8l-0.67,-1.31l-0.42,-0.12l-2.43,1.43l-1.18,-0.0l-0.18,-1.86l0.43,-1.3l-0.09,-0.33l-1.61,-1.33l-0.26,-0.06l-3.11,0.68l-2.0,-1.66l-1.61,-0.85l-0.01,-1.97l-0.11,-0.23l-1.76,-1.48l0.86,-1.96l2.01,-2.13l0.88,-1.94l1.79,-0.25l1.65,0.6l0.31,-0.06l1.91,-1.8l1.67,0.31l0.22,-0.04l1.91,-1.23l0.13,-0.33l-0.47,-1.82l-0.15,-0.19l-1.0,-0.52l1.51,-1.27l0.09,-0.34l-0.29,-0.19l-1.62,0.06l-2.66,0.88l-0.13,0.09l-0.62,0.72l-1.77,-0.8l-0.16,-0.02l-3.48,0.44l-3.5,-0.92l-1.06,-1.61l-2.78,-2.09l3.07,-1.51l5.52,-2.01l1.65,0.0l-0.28,1.73l0.31,0.35l5.29,-0.16l0.23,-0.49l-2.03,-2.59l-0.1,-0.08l-3.03,-1.58l-1.79,-2.12l-2.4,-1.83l-3.18,-1.27l1.13,-1.84l4.28,-0.14l0.15,-0.05l3.16,-2.0l0.13,-0.17l0.57,-2.07l2.43,-2.02l2.42,-0.52l4.67,-1.98l2.22,0.29l0.2,-0.04l3.74,-2.37l3.57,0.91ZM37.66,123.49l-2.31,1.26l-1.04,-0.75l-0.31,-1.35l2.06,-1.16l1.24,-0.51l1.48,0.22l0.76,0.81l-1.89,1.49ZM30.89,233.84l1.2,0.57l0.35,0.3l0.48,0.69l-1.6,0.86l-0.3,0.31l-0.24,-0.14l0.05,-0.54l-0.02,-0.15l-0.36,-0.83l0.05,-0.12l0.39,-0.38l0.07,-0.31l-0.09,-0.27ZM29.06,231.89l0.5,0.14l0.31,0.19l-0.46,0.1l-0.34,-0.43ZM25.02,230.13l0.2,-0.11l0.4,0.47l-0.43,-0.05l-0.17,-0.31ZM21.29,228.68l0.1,-0.07l0.22,0.02l0.02,0.21l-0.02,0.02l-0.32,-0.18ZM6.0,113.33l-1.19,0.45l-1.5,-0.64l-0.94,-0.63l1.76,-0.46l1.71,0.29l0.16,0.98Z", "name": "United States of America"}, "LV": {"path": "M473.99,127.16l0.07,-2.15l1.15,-2.11l2.05,-1.07l1.84,2.48l0.25,0.12l2.01,-0.07l0.29,-0.25l0.45,-2.58l1.85,-0.56l0.98,0.4l2.13,1.33l0.16,0.05l1.97,0.01l1.02,0.7l0.21,1.67l0.71,1.84l-2.44,1.23l-1.36,0.53l-2.28,-1.62l-0.12,-0.05l-1.18,-0.2l-0.28,-0.6l-0.31,-0.17l-2.43,0.35l-4.17,-0.23l-0.12,0.02l-2.45,0.93Z", "name": "Latvia"}, "UY": {"path": "M276.9,363.17l1.3,-0.23l2.4,2.04l0.22,0.07l0.82,-0.07l2.48,1.7l1.93,1.5l1.28,1.67l-0.95,1.14l-0.04,0.31l0.63,1.45l-0.96,1.57l-2.65,1.47l-1.73,-0.53l-0.15,-0.01l-1.25,0.28l-2.22,-1.16l-0.16,-0.03l-1.56,0.08l-1.33,-1.36l0.17,-1.58l0.48,-0.55l0.07,-0.2l-0.02,-2.74l0.66,-2.8l0.57,-2.02Z", "name": "Uruguay"}, "LB": {"path": "M510.44,198.11l-0.48,0.03l-0.26,0.17l-0.15,0.32l-0.21,-0.0l0.72,-1.85l1.19,-1.9l0.74,0.09l0.27,0.73l-1.19,0.93l-0.09,0.13l-0.54,1.36Z", "name": "Lebanon"}, "LA": {"path": "M684.87,248.8l0.61,-0.86l0.05,-0.16l0.11,-2.17l-0.08,-0.22l-1.96,-2.16l-0.15,-2.44l-0.08,-0.18l-1.9,-2.1l-0.19,-0.1l-1.89,-0.18l-0.29,0.15l-0.42,0.76l-1.21,0.06l-0.67,-0.41l-0.31,-0.0l-2.2,1.29l-0.05,-1.77l0.61,-2.7l-0.27,-0.37l-1.44,-0.1l-0.12,-1.31l-0.12,-0.21l-0.87,-0.65l0.38,-0.68l1.76,-1.41l0.08,0.22l0.27,0.2l1.33,0.07l0.31,-0.34l-0.35,-2.75l0.85,-0.25l1.32,1.88l1.11,2.36l0.27,0.17l2.89,0.02l0.78,1.82l-1.32,0.56l-0.12,0.09l-0.72,0.93l0.1,0.45l2.93,1.52l3.62,5.27l1.88,1.78l0.58,1.67l-0.38,2.11l-1.87,-0.79l-0.37,0.11l-0.99,1.54l-1.51,-0.73Z", "name": "Laos"}, "TW": {"path": "M725.6,222.5l-1.5,4.22l-0.82,1.65l-1.01,-1.7l-0.26,-1.8l1.4,-2.48l1.8,-1.81l0.76,0.53l-0.38,1.39Z", "name": "Taiwan"}, "TT": {"path": "M266.35,259.46l0.41,-0.39l0.09,-0.23l-0.04,-0.75l1.14,-0.26l0.2,0.03l-0.07,1.37l-1.73,0.23Z", "name": "Trinidad and Tobago"}, "TR": {"path": "M513.25,175.38l3.63,1.17l0.14,0.01l2.88,-0.45l2.11,0.26l0.18,-0.03l2.9,-1.53l2.51,-0.13l2.25,1.37l0.36,0.88l-0.23,1.36l0.19,0.33l1.81,0.72l0.61,0.53l-1.31,0.64l-0.16,0.34l0.76,3.24l-0.44,0.8l0.01,0.3l1.19,2.02l-0.71,0.29l-0.74,-0.62l-0.15,-0.07l-2.91,-0.37l-0.15,0.02l-1.04,0.43l-2.78,0.44l-1.44,-0.03l-2.83,1.06l-1.95,0.01l-1.28,-0.52l-0.2,-0.01l-2.62,0.76l-0.7,-0.48l-0.47,0.22l-0.13,1.49l-1.01,0.94l-0.58,-0.82l0.79,-0.9l0.04,-0.34l-0.31,-0.15l-1.46,0.23l-2.03,-0.64l-0.3,0.07l-1.65,1.58l-3.58,0.3l-1.94,-1.47l-0.17,-0.06l-2.7,-0.1l-0.28,0.17l-0.51,1.06l-1.47,0.29l-2.32,-1.46l-0.17,-0.05l-2.55,0.05l-1.4,-2.7l-1.72,-1.54l1.11,-2.06l-0.07,-0.37l-1.35,-1.19l2.47,-2.51l3.74,-0.11l0.26,-0.17l0.96,-2.07l4.56,0.38l0.19,-0.05l2.97,-1.92l2.84,-0.83l4.03,-0.06l4.31,2.08ZM488.85,176.8l-1.81,1.38l-0.57,-1.01l0.02,-0.36l0.45,-0.25l0.13,-0.15l0.78,-1.87l-0.11,-0.37l-0.72,-0.47l1.91,-0.71l1.89,0.35l0.25,0.97l0.17,0.2l1.87,0.83l-0.19,0.31l-2.82,0.16l-0.18,0.07l-1.06,0.91Z", "name": "Turkey"}, "LK": {"path": "M625.44,266.07l-0.35,2.4l-0.9,0.61l-1.91,0.5l-1.04,-1.75l-0.43,-3.5l1.0,-3.6l1.34,1.09l1.13,1.72l1.16,2.52Z", "name": "Sri Lanka"}, "TN": {"path": "M444.91,206.18l-0.99,-4.57l-0.12,-0.18l-1.43,-1.04l-0.02,-0.53l-0.11,-0.22l-1.95,-1.59l-0.19,-1.85l1.44,-1.47l0.08,-0.14l0.59,-2.34l-0.38,-2.77l0.44,-1.28l2.52,-1.08l1.41,0.28l-0.06,1.2l0.43,0.28l1.81,-0.9l0.02,0.06l-1.14,1.28l-0.08,0.2l-0.02,1.32l0.11,0.24l0.74,0.6l-0.29,2.18l-1.56,1.35l-0.09,0.32l0.48,1.54l0.28,0.21l1.11,0.04l0.55,1.17l0.15,0.14l0.76,0.35l-0.12,1.79l-1.1,0.72l-0.8,0.91l-1.68,1.04l-0.13,0.32l0.25,1.08l-0.18,0.96l-0.74,0.39Z", "name": "Tunisia"}, "TL": {"path": "M734.21,307.22l0.17,-0.34l1.99,-0.52l1.72,-0.08l0.78,-0.3l0.29,0.1l-0.43,0.32l-2.57,1.09l-1.71,0.59l-0.05,-0.49l-0.19,-0.36Z", "name": "East Timor"}, "TM": {"path": "M553.16,173.51l-0.12,1.0l-0.26,-0.65l0.38,-0.34ZM553.54,173.16l0.13,-0.12l0.43,-0.09l-0.56,0.21ZM555.68,172.6l0.65,-0.14l1.53,0.76l1.71,2.29l0.27,0.12l1.27,-0.14l2.81,-0.04l0.29,-0.38l-0.35,-1.27l1.98,-0.97l1.96,-1.63l3.05,1.44l0.25,2.23l0.14,0.22l0.96,0.61l0.18,0.05l2.61,-0.13l0.68,0.44l1.2,2.97l0.1,0.13l2.85,2.03l1.67,1.41l2.66,1.45l3.13,1.17l-0.05,1.23l-0.36,-0.04l-1.12,-0.73l-0.44,0.14l-0.34,0.89l-1.96,0.52l-0.22,0.23l-0.47,2.17l-1.26,0.78l-1.93,0.42l-0.21,0.18l-0.46,1.14l-1.64,0.33l-2.3,-0.97l-0.2,-2.23l-0.28,-0.27l-1.76,-0.1l-2.78,-2.48l-0.15,-0.07l-1.95,-0.31l-2.82,-1.48l-1.78,-0.27l-0.18,0.03l-1.03,0.51l-1.6,-0.08l-0.22,0.08l-1.72,1.6l-1.83,0.46l-0.39,-1.7l0.36,-3.0l-0.16,-0.3l-1.73,-0.88l0.57,-1.77l-0.25,-0.39l-1.33,-0.14l0.41,-1.85l2.05,0.63l0.21,-0.01l2.2,-0.95l0.09,-0.49l-1.78,-1.75l-0.69,-1.66l-0.07,-0.03Z", "name": "Turkmenistan"}, "TJ": {"path": "M597.99,178.71l-0.23,0.23l-2.57,-0.47l-0.35,0.25l-0.24,1.7l0.32,0.34l2.66,-0.22l3.15,0.95l4.47,-0.42l0.58,2.45l0.39,0.21l0.71,-0.25l1.22,0.53l-0.06,1.01l0.29,1.28l-2.19,-0.0l-1.71,-0.21l-0.23,0.07l-1.51,1.25l-1.05,0.27l-0.77,0.51l-0.71,-0.67l0.22,-2.28l-0.24,-0.32l-0.43,-0.08l0.17,-0.57l-0.16,-0.36l-1.36,-0.66l-0.34,0.05l-1.08,1.01l-0.09,0.15l-0.25,1.09l-0.24,0.26l-1.36,-0.05l-0.27,0.14l-0.65,1.06l-0.58,-0.39l-0.3,-0.02l-1.68,0.86l-0.36,-0.16l1.28,-2.65l0.02,-0.2l-0.54,-2.17l-0.18,-0.21l-1.53,-0.58l0.41,-0.82l1.89,0.13l0.26,-0.12l1.19,-1.63l0.77,-1.82l2.66,-0.55l-0.33,0.87l0.01,0.23l0.36,0.82l0.3,0.18l0.23,-0.02Z", "name": "Tajikistan"}, "LS": {"path": "M493.32,359.69l0.69,0.65l-0.65,1.12l-0.38,0.8l-1.27,0.39l-0.18,0.15l-0.4,0.77l-0.59,0.18l-1.59,-1.78l1.16,-1.5l1.3,-1.02l0.97,-0.46l0.94,0.72Z", "name": "Lesotho"}, "TH": {"path": "M677.42,253.68l-1.7,-0.88l-0.14,-0.03l-1.77,0.04l0.3,-1.64l-0.3,-0.35l-2.21,0.01l-0.3,0.28l-0.2,2.76l-2.15,5.9l-0.02,0.13l0.17,1.83l0.28,0.27l1.45,0.07l0.93,2.1l0.44,2.15l0.08,0.15l1.4,1.44l0.16,0.09l1.43,0.27l1.04,1.05l-0.58,0.73l-1.24,0.22l-0.15,-0.99l-0.15,-0.22l-2.04,-1.1l-0.36,0.06l-0.23,0.23l-0.72,-0.71l-0.41,-1.18l-0.06,-0.11l-1.33,-1.42l-1.22,-1.2l-0.5,0.13l-0.15,0.54l-0.14,-0.41l0.26,-1.48l0.73,-2.38l1.2,-2.57l1.37,-2.35l0.02,-0.27l-0.95,-2.26l0.03,-1.19l-0.29,-1.42l-0.06,-0.13l-1.65,-2.0l-0.46,-0.99l0.62,-0.34l0.13,-0.15l0.92,-2.23l-0.02,-0.27l-1.05,-1.74l-1.57,-1.86l-1.04,-1.96l0.76,-0.34l0.16,-0.16l1.07,-2.63l1.58,-0.1l0.16,-0.06l1.43,-1.11l1.24,-0.52l0.84,0.62l0.13,1.43l0.28,0.27l1.34,0.09l-0.54,2.39l0.05,2.39l0.45,0.25l2.48,-1.45l0.6,0.36l0.17,0.04l1.47,-0.07l0.25,-0.15l0.41,-0.73l1.58,0.15l1.76,1.93l0.15,2.44l0.08,0.18l1.94,2.15l-0.1,1.96l-0.66,0.93l-2.25,-0.34l-3.24,0.49l-0.19,0.12l-1.6,2.12l-0.06,0.24l0.48,2.46Z", "name": "Thailand"}, "TF": {"path": "M593.76,417.73l1.38,0.84l2.15,0.37l0.04,0.31l-0.59,1.24l-3.36,0.19l-0.05,-1.38l0.43,-1.56Z", "name": "French Southern and Antarctic Lands"}, "TG": {"path": "M425.23,269.29l-1.49,0.4l-0.43,-0.68l-0.64,-1.54l-0.18,-1.16l0.54,-2.21l-0.04,-0.24l-0.59,-0.86l-0.23,-1.9l0.0,-1.82l-0.07,-0.19l-0.95,-1.19l0.1,-0.41l1.58,0.04l-0.23,0.97l0.08,0.28l1.55,1.55l0.09,1.13l0.08,0.19l0.42,0.43l-0.11,5.66l0.52,1.53Z", "name": "Togo"}, "TD": {"path": "M457.57,252.46l0.23,-1.08l-0.28,-0.36l-1.32,-0.05l0.0,-1.35l-0.1,-0.22l-0.9,-0.82l0.99,-3.1l3.12,-2.37l0.12,-0.23l0.13,-3.33l0.95,-5.2l0.53,-1.09l-0.07,-0.36l-0.94,-0.81l-0.03,-0.7l-0.12,-0.23l-0.84,-0.61l-0.57,-3.76l2.21,-1.26l19.67,9.88l0.12,9.74l-1.83,-0.15l-0.28,0.14l-1.14,1.89l-0.68,1.62l0.05,0.31l0.33,0.38l-0.61,0.58l-0.08,0.3l0.25,0.93l-0.58,0.95l-0.29,1.01l0.34,0.37l0.67,-0.11l0.39,0.73l0.03,1.4l0.11,0.23l0.8,0.65l-0.01,0.24l-1.38,0.37l-0.11,0.06l-1.27,1.03l-1.83,2.76l-2.21,1.1l-2.34,-0.15l-0.82,0.25l-0.2,0.37l0.19,0.68l-1.16,0.79l-1.01,0.94l-2.92,0.89l-0.5,-0.46l-0.17,-0.08l-0.41,-0.05l-0.28,0.12l-0.38,0.54l-1.36,0.12l0.1,-0.18l0.01,-0.27l-0.78,-1.72l-0.35,-1.03l-0.17,-0.18l-1.03,-0.41l-1.29,-1.28l0.36,-0.78l0.9,0.2l0.14,-0.0l0.67,-0.17l1.36,0.02l0.26,-0.45l-1.32,-2.22l0.09,-1.64l-0.17,-1.68l-0.04,-0.13l-0.93,-1.53Z", "name": "Chad"}, "LY": {"path": "M457.99,226.38l-1.57,0.87l-1.25,-1.28l-0.13,-0.08l-3.85,-1.11l-1.04,-1.57l-0.09,-0.09l-1.98,-1.23l-0.27,-0.02l-0.93,0.39l-0.72,-1.2l-0.09,-1.07l-0.06,-0.16l-1.33,-1.75l0.83,-0.94l0.07,-0.24l-0.21,-1.64l0.31,-1.43l-0.17,-1.29l0.43,-2.26l-0.15,-1.33l-0.73,-2.18l0.99,-0.52l0.16,-0.21l0.22,-1.16l-0.22,-1.06l1.54,-0.95l0.81,-0.92l1.19,-0.78l0.14,-0.23l0.12,-1.76l2.57,0.84l0.16,0.01l0.99,-0.23l2.01,0.45l3.19,1.2l1.12,2.36l0.2,0.16l2.24,0.53l3.5,1.14l2.65,1.36l0.29,-0.01l1.22,-0.71l1.27,-1.32l0.07,-0.29l-0.55,-2.0l0.69,-1.19l1.7,-1.23l1.61,-0.35l3.2,0.54l0.78,1.14l0.24,0.13l0.85,0.01l0.84,0.47l2.35,0.31l0.42,0.63l-0.79,1.16l-0.04,0.26l0.35,1.08l-0.61,1.6l-0.0,0.2l0.73,2.16l0.0,24.24l-2.58,0.01l-0.3,0.29l-0.02,0.62l-19.55,-9.83l-0.28,0.01l-2.53,1.44Z", "name": "Libya"}, "AE": {"path": "M550.59,223.8l0.12,0.08l1.92,-0.41l3.54,0.15l0.23,-0.09l1.71,-1.79l1.86,-1.7l1.31,-1.36l0.26,0.5l0.28,1.72l-0.93,0.01l-0.3,0.26l-0.21,1.73l0.11,0.27l0.08,0.06l-0.7,0.32l-0.17,0.27l-0.01,0.99l-0.68,1.02l-0.05,0.15l-0.06,0.96l-0.32,0.36l-7.19,-1.27l-0.79,-2.22Z", "name": "United Arab Emirates"}, "VE": {"path": "M240.66,256.5l0.65,0.91l-0.03,1.13l-1.05,1.39l-0.03,0.31l0.95,2.0l0.32,0.17l1.08,-0.16l0.24,-0.21l0.56,-1.83l-0.06,-0.29l-0.71,-0.81l-0.1,-1.58l2.9,-0.96l0.19,-0.37l-0.29,-1.02l0.45,-0.41l0.72,1.43l0.26,0.16l1.65,0.04l1.46,1.27l0.08,0.72l0.3,0.27l2.28,0.02l2.55,-0.25l1.34,1.06l0.14,0.06l1.92,0.31l0.2,-0.03l1.4,-0.79l0.15,-0.25l0.02,-0.36l2.82,-0.14l1.17,-0.01l-0.41,0.14l-0.14,0.46l0.86,1.19l0.22,0.12l1.93,0.18l1.73,1.13l0.37,1.9l0.31,0.24l1.21,-0.05l0.52,0.32l-1.63,1.21l-0.11,0.17l-0.22,0.92l0.07,0.27l0.63,0.69l-0.31,0.24l-1.48,0.39l-0.22,0.3l0.04,1.03l-0.59,0.6l-0.01,0.41l1.67,1.87l0.23,0.48l-0.72,0.76l-2.71,0.91l-1.78,0.39l-0.13,0.06l-0.6,0.49l-1.84,-0.58l-1.89,-0.33l-0.18,0.03l-0.47,0.23l-0.02,0.53l0.96,0.56l-0.08,1.58l0.35,1.58l0.26,0.23l1.91,0.19l0.02,0.07l-1.54,0.62l-0.18,0.2l-0.25,0.92l-0.88,0.35l-1.85,0.58l-0.16,0.13l-0.4,0.64l-1.66,0.14l-1.22,-1.18l-0.79,-2.52l-0.67,-0.88l-0.66,-0.43l0.99,-0.98l0.09,-0.26l-0.09,-0.56l-0.08,-0.16l-0.66,-0.69l-0.47,-1.54l0.18,-1.67l0.55,-0.85l0.45,-1.35l-0.15,-0.36l-0.89,-0.43l-0.19,-0.02l-1.39,0.28l-1.76,-0.13l-0.92,0.23l-1.64,-2.01l-0.17,-0.1l-1.54,-0.33l-3.05,0.23l-0.5,-0.73l-0.15,-0.12l-0.45,-0.15l-0.05,-0.28l0.28,-0.86l0.01,-0.15l-0.2,-1.01l-0.08,-0.15l-0.5,-0.5l-0.3,-1.08l-0.25,-0.22l-0.89,-0.12l0.54,-1.18l0.29,-1.73l0.66,-0.85l0.94,-0.7l0.09,-0.11l0.3,-0.6Z", "name": "Venezuela"}, "AF": {"path": "M574.42,192.1l2.24,0.95l0.18,0.02l1.89,-0.38l0.22,-0.18l0.46,-1.14l1.82,-0.4l1.5,-0.91l0.14,-0.19l0.46,-2.12l1.93,-0.51l0.2,-0.18l0.26,-0.68l0.87,0.57l0.13,0.05l0.79,0.09l1.35,0.02l1.83,0.59l0.75,0.34l0.26,-0.01l1.66,-0.85l0.7,0.46l0.42,-0.09l0.72,-1.17l1.32,0.05l0.23,-0.1l0.39,-0.43l0.07,-0.14l0.24,-1.08l0.86,-0.81l0.94,0.46l-0.2,0.64l0.23,0.38l0.49,0.09l-0.21,2.15l0.09,0.25l0.99,0.94l0.38,0.03l0.83,-0.57l1.06,-0.27l0.12,-0.06l1.46,-1.21l1.63,0.2l2.4,0.0l0.17,0.32l-1.12,0.25l-1.23,0.52l-2.86,0.33l-2.69,0.6l-0.13,0.06l-1.46,1.25l-0.07,0.36l0.58,1.18l0.25,1.21l-1.13,1.08l-0.09,0.25l0.09,0.98l-0.53,0.79l-2.22,-0.08l-0.28,0.44l0.83,1.57l-1.3,0.58l-0.13,0.11l-1.06,1.69l-0.05,0.18l0.13,1.51l-0.73,0.58l-0.78,-0.22l-0.14,-0.01l-1.91,0.36l-0.23,0.19l-0.2,0.57l-1.65,-0.0l-0.22,0.1l-1.4,1.56l-0.08,0.19l-0.08,2.13l-2.99,1.05l-1.67,-0.23l-0.27,0.1l-0.39,0.46l-1.43,-0.31l-2.43,0.4l-3.69,-1.23l1.96,-2.15l0.08,-0.24l-0.21,-1.78l-0.23,-0.26l-1.69,-0.42l-0.19,-1.62l-0.77,-2.08l0.98,-1.41l-0.14,-0.45l-0.82,-0.31l0.6,-1.79l0.93,-3.21Z", "name": "Afghanistan"}, "IQ": {"path": "M534.42,190.89l0.13,0.14l1.5,0.78l0.15,1.34l-1.13,0.87l-0.11,0.16l-0.58,2.2l0.04,0.24l1.73,2.67l0.12,0.1l2.99,1.49l1.18,1.94l-0.39,1.89l0.29,0.36l0.5,-0.0l0.02,1.17l0.08,0.2l0.83,0.86l-2.36,-0.29l-0.29,0.13l-1.74,2.49l-4.4,-0.21l-7.03,-5.49l-3.73,-1.94l-2.92,-0.74l-0.89,-3.0l5.33,-2.81l0.15,-0.19l0.95,-3.43l-0.2,-2.0l1.19,-0.61l0.11,-0.09l1.23,-1.73l0.92,-0.38l2.75,0.35l0.81,0.68l0.31,0.05l0.94,-0.38l1.5,3.17Z", "name": "Iraq"}, "IS": {"path": "M384.26,87.96l-0.51,2.35l0.08,0.28l2.61,2.58l-2.99,2.83l-7.16,2.72l-2.08,0.7l-9.51,-1.71l1.89,-1.36l-0.07,-0.53l-4.4,-1.59l3.33,-0.59l0.25,-0.32l-0.11,-1.2l-0.25,-0.27l-4.82,-0.88l1.38,-2.2l3.54,-0.57l3.8,2.74l0.33,0.01l3.68,-2.18l3.02,1.12l0.25,-0.02l4.01,-2.18l3.72,0.27Z", "name": "Iceland"}, "IR": {"path": "M556.2,187.5l2.05,-0.52l0.13,-0.07l1.69,-1.57l1.55,0.08l0.15,-0.03l1.02,-0.5l1.64,0.25l2.82,1.48l1.91,0.3l2.8,2.49l0.18,0.08l1.61,0.09l0.19,2.09l-1.0,3.47l-0.69,2.04l0.18,0.38l0.73,0.28l-0.85,1.22l-0.04,0.28l0.81,2.19l0.19,1.72l0.23,0.26l1.69,0.42l0.17,1.43l-2.18,2.39l-0.01,0.4l1.22,1.42l1.0,1.62l0.12,0.11l2.23,1.11l0.06,2.2l0.2,0.27l1.03,0.38l0.14,0.83l-3.38,1.3l-0.18,0.19l-0.87,2.85l-4.44,-0.76l-2.75,-0.62l-2.64,-0.32l-1.01,-3.11l-0.17,-0.19l-1.2,-0.48l-0.18,-0.01l-1.99,0.51l-2.42,1.25l-2.89,-0.84l-2.48,-2.03l-2.41,-0.79l-1.61,-2.47l-1.84,-3.63l-0.36,-0.15l-1.22,0.4l-1.48,-0.84l-0.37,0.06l-0.72,0.82l-1.08,-1.12l-0.02,-1.35l-0.3,-0.29l-0.43,0.0l0.34,-1.64l-0.04,-0.22l-1.29,-2.11l-0.12,-0.11l-3.0,-1.49l-1.62,-2.49l0.52,-1.98l1.18,-0.92l0.11,-0.27l-0.19,-1.66l-0.16,-0.23l-1.55,-0.81l-1.58,-3.33l-1.3,-2.2l0.41,-0.75l0.03,-0.21l-0.73,-3.12l1.2,-0.59l0.35,0.9l1.26,1.35l0.15,0.09l1.81,0.39l0.91,-0.09l0.15,-0.06l2.9,-2.13l0.7,-0.16l0.48,0.56l-0.75,1.26l0.05,0.37l1.56,1.53l0.28,0.08l0.37,-0.09l0.7,1.89l0.21,0.19l2.31,0.59l1.69,1.4l0.15,0.07l3.66,0.49l3.91,-0.76l0.23,-0.19l0.19,-0.52Z", "name": "Iran"}, "AM": {"path": "M530.51,176.08l2.91,-0.39l0.41,0.63l0.11,0.1l0.66,0.36l-0.32,0.47l0.07,0.41l1.1,0.84l-0.53,0.7l0.06,0.42l1.06,0.8l1.01,0.44l0.04,1.56l-0.44,0.04l-0.88,-1.46l0.01,-0.37l-0.3,-0.31l-0.98,0.01l-0.65,-0.69l-0.26,-0.09l-0.38,0.06l-0.97,-0.82l-1.64,-0.65l0.2,-1.2l-0.02,-0.16l-0.28,-0.69Z", "name": "Armenia"}, "IT": {"path": "M451.68,158.58l0.2,0.16l3.3,0.75l-0.22,1.26l0.02,0.18l0.35,0.78l-1.4,-0.32l-0.21,0.03l-2.04,1.1l-0.16,0.29l0.13,1.47l-0.29,0.82l0.02,0.24l0.82,1.57l0.1,0.11l2.28,1.5l1.29,2.53l2.79,2.43l0.2,0.07l1.83,-0.02l0.31,0.34l-0.46,0.39l0.06,0.5l4.06,1.97l2.06,1.49l0.17,0.36l-0.24,0.53l-1.08,-1.07l-0.15,-0.08l-2.18,-0.49l-0.33,0.15l-1.05,1.91l0.11,0.4l1.63,0.98l-0.22,1.12l-0.84,0.14l-0.22,0.15l-1.27,2.38l-0.54,0.12l0.01,-0.47l0.48,-1.46l0.5,-0.58l0.03,-0.35l-0.97,-1.69l-0.76,-1.48l-0.17,-0.15l-0.94,-0.33l-0.68,-1.18l-0.16,-0.13l-1.53,-0.52l-1.03,-1.14l-0.19,-0.1l-1.78,-0.19l-1.88,-1.3l-2.27,-1.94l-1.64,-1.68l-0.76,-2.94l-0.21,-0.21l-1.22,-0.35l-2.01,-1.0l-0.24,-0.01l-1.15,0.42l-0.11,0.07l-1.38,1.36l-0.5,0.11l0.19,-0.87l-0.21,-0.35l-1.19,-0.34l-0.56,-2.06l0.76,-0.82l0.03,-0.36l-0.68,-1.08l0.04,-0.31l0.68,0.42l0.19,0.04l1.21,-0.15l0.14,-0.06l1.18,-0.89l0.25,0.29l0.25,0.1l1.19,-0.1l0.25,-0.18l0.45,-1.04l1.61,0.34l0.19,-0.02l1.1,-0.53l0.17,-0.22l0.15,-0.95l1.19,0.35l0.35,-0.16l0.23,-0.47l2.11,-0.47l0.45,0.89ZM459.35,184.63l-0.71,1.81l0.0,0.23l0.33,0.79l-0.37,1.03l-1.6,-0.91l-1.33,-0.34l-3.24,-1.36l0.23,-0.99l2.73,0.24l3.95,-0.5ZM443.95,175.91l1.26,1.77l-0.31,3.47l-0.82,-0.13l-0.26,0.08l-0.83,0.79l-0.64,-0.52l-0.1,-3.42l-0.44,-1.34l0.91,0.1l0.21,-0.06l1.01,-0.74Z", "name": "Italy"}, "VN": {"path": "M690.8,230.21l-2.86,1.93l-2.09,2.46l-0.06,0.11l-0.55,1.8l0.04,0.26l4.26,6.1l2.31,1.63l1.46,1.97l1.12,4.62l-0.32,4.3l-1.97,1.57l-2.85,1.62l-2.09,2.14l-2.83,2.13l-0.67,-1.19l0.65,-1.58l-0.09,-0.35l-1.47,-1.14l1.67,-0.79l2.57,-0.18l0.22,-0.47l-0.89,-1.24l3.88,-1.8l0.17,-0.24l0.31,-3.05l-0.01,-0.13l-0.56,-1.63l0.44,-2.48l-0.01,-0.15l-0.63,-1.81l-0.08,-0.12l-1.87,-1.77l-3.64,-5.3l-0.11,-0.1l-2.68,-1.39l0.45,-0.59l1.53,-0.65l0.16,-0.39l-0.97,-2.27l-0.27,-0.18l-2.89,-0.02l-1.04,-2.21l-1.28,-1.83l0.96,-0.46l1.97,0.01l2.43,-0.3l0.13,-0.05l1.95,-1.29l1.04,0.85l0.13,0.06l1.98,0.42l-0.32,1.21l0.09,0.3l1.19,1.07l0.12,0.07l1.88,0.51Z", "name": "Vietnam"}, "AR": {"path": "M258.11,341.34l1.4,1.81l0.51,-0.06l0.89,-1.94l2.51,0.1l0.36,0.49l4.6,4.31l0.15,0.08l1.99,0.39l3.01,1.93l2.5,1.01l0.28,0.91l-2.4,3.97l0.17,0.44l2.57,0.74l2.81,0.41l2.09,-0.44l0.14,-0.07l2.27,-2.06l0.09,-0.17l0.38,-2.2l0.88,-0.36l1.05,1.29l-0.04,1.88l-1.98,1.4l-1.72,1.13l-2.84,2.65l-3.34,3.73l-0.07,0.12l-0.63,2.22l-0.67,2.85l0.02,2.73l-0.47,0.54l-0.07,0.17l-0.36,3.28l0.12,0.27l3.03,2.32l-0.31,1.78l0.11,0.29l1.44,1.15l-0.11,1.17l-2.32,3.57l-3.59,1.51l-4.95,0.6l-2.72,-0.29l-0.32,0.38l0.5,1.67l-0.49,2.13l0.01,0.16l0.4,1.29l-1.27,0.88l-2.41,0.39l-2.33,-1.05l-0.31,0.04l-0.97,0.78l-0.11,0.27l0.35,2.98l0.16,0.23l1.69,0.91l0.31,-0.02l1.08,-0.75l0.46,0.96l-2.1,0.88l-2.01,1.89l-0.09,0.18l-0.36,3.05l-0.51,1.42l-2.16,0.01l-0.19,0.07l-1.96,1.59l-0.1,0.15l-0.72,2.34l0.08,0.31l2.46,2.31l0.13,0.07l2.09,0.56l-0.74,2.45l-2.86,1.75l-0.12,0.14l-1.59,3.71l-2.2,1.24l-0.1,0.09l-1.03,1.54l-0.04,0.23l0.81,3.45l0.06,0.13l1.13,1.32l-2.59,-0.57l-5.89,-0.44l-0.92,-1.73l0.05,-2.4l-0.34,-0.3l-1.49,0.19l-0.72,-0.98l-0.2,-3.21l1.79,-1.33l0.1,-0.13l0.79,-2.04l0.02,-0.16l-0.27,-1.52l1.31,-2.69l0.91,-4.15l-0.23,-1.72l0.91,-0.49l0.15,-0.33l-0.27,-1.16l-0.15,-0.2l-0.87,-0.46l0.65,-1.01l-0.04,-0.37l-1.06,-1.09l-0.54,-3.2l0.83,-0.51l0.14,-0.29l-0.42,-3.6l0.58,-2.98l0.64,-2.5l1.41,-1.0l0.12,-0.32l-0.75,-2.8l-0.01,-2.48l1.81,-1.78l0.09,-0.22l-0.06,-2.3l1.39,-2.69l0.03,-0.14l0.01,-2.58l-0.11,-0.24l-0.57,-0.45l-1.1,-4.59l1.49,-2.73l0.04,-0.17l-0.23,-2.59l0.86,-2.38l1.6,-2.48l1.74,-1.65l0.04,-0.39l-0.64,-0.89l0.42,-0.7l0.04,-0.16l-0.08,-4.26l2.55,-1.23l0.16,-0.18l0.86,-2.75l-0.01,-0.22l-0.22,-0.48l1.84,-2.1l3.0,0.59ZM256.77,438.98l-2.1,0.15l-1.18,-1.14l-0.19,-0.08l-1.53,-0.09l-2.38,-0.0l-0.0,-6.28l0.4,0.65l1.25,2.55l0.11,0.12l3.26,2.07l3.19,0.8l-0.82,1.26Z", "name": "Argentina"}, "AU": {"path": "M705.55,353.06l0.09,0.09l0.37,0.05l0.13,-0.35l-0.57,-1.69l0.48,0.3l0.71,0.99l0.34,0.11l0.2,-0.29l-0.04,-1.37l-0.04,-0.14l-1.22,-2.07l-0.28,-0.9l-0.51,-0.69l0.24,-1.33l0.52,-0.7l0.34,-1.32l0.01,-0.13l-0.25,-1.44l0.51,-0.94l0.1,1.03l0.23,0.26l0.32,-0.14l1.01,-1.72l1.94,-0.84l1.27,-1.14l1.84,-0.92l1.0,-0.18l0.6,0.28l0.26,-0.0l1.94,-0.96l1.48,-0.28l0.19,-0.13l0.32,-0.49l0.51,-0.18l1.42,0.05l2.63,-0.76l0.11,-0.06l1.36,-1.15l0.08,-0.1l0.61,-1.33l1.42,-1.27l0.1,-0.19l0.11,-1.03l0.06,-1.32l1.39,-1.74l0.85,1.79l0.4,0.14l1.07,-0.51l0.11,-0.45l-0.77,-1.05l0.53,-0.84l0.86,0.43l0.43,-0.22l0.29,-1.85l1.29,-1.19l0.6,-0.98l1.16,-0.4l0.2,-0.27l0.02,-0.34l0.74,0.2l0.38,-0.27l0.03,-0.44l1.98,-0.61l1.7,1.08l1.36,1.48l0.22,0.1l1.55,0.02l1.57,0.24l0.33,-0.4l-0.48,-1.27l1.09,-1.86l1.06,-0.63l0.1,-0.42l-0.28,-0.46l0.93,-1.24l1.36,-0.8l1.16,0.27l0.14,0.0l2.1,-0.48l0.23,-0.3l-0.05,-1.3l-0.18,-0.26l-1.08,-0.49l0.44,-0.12l1.52,0.58l1.39,1.06l2.11,0.65l0.19,-0.0l0.59,-0.21l1.44,0.72l0.27,0.0l1.37,-0.68l0.84,0.2l0.26,-0.06l0.37,-0.3l0.82,0.89l-0.56,1.14l-0.84,0.91l-0.75,0.07l-0.26,0.38l0.26,0.9l-0.67,1.15l-0.88,1.24l-0.05,0.25l0.18,0.72l0.12,0.17l1.99,1.42l1.96,0.84l1.25,0.86l1.8,1.51l0.19,0.07l0.63,-0.0l1.15,0.58l0.34,0.7l0.17,0.15l2.39,0.88l0.24,-0.02l1.65,-0.88l0.14,-0.16l0.49,-1.37l0.52,-1.19l0.31,-1.39l0.75,-2.02l0.01,-0.19l-0.33,-1.16l0.16,-0.67l0.0,-0.13l-0.28,-1.41l0.3,-1.78l0.42,-0.45l0.05,-0.33l-0.33,-0.73l0.56,-1.25l0.48,-1.39l0.07,-0.69l0.58,-0.59l0.48,0.84l0.17,1.53l0.17,0.24l0.47,0.23l0.09,0.9l0.05,0.14l0.87,1.23l0.17,1.33l-0.09,0.89l0.03,0.15l0.9,2.0l0.43,0.13l1.38,-0.83l0.71,0.92l1.06,0.88l-0.22,0.96l0.0,0.14l0.53,2.2l0.38,1.3l0.15,0.18l0.52,0.26l0.62,2.01l-0.23,1.27l0.02,0.18l0.81,1.76l0.14,0.14l2.69,1.35l3.21,2.21l-0.2,0.4l0.04,0.34l1.39,1.6l0.95,2.78l0.43,0.16l0.79,-0.46l0.85,0.96l0.39,0.05l0.22,-0.15l0.36,2.33l0.09,0.18l1.78,1.63l1.16,1.01l1.9,2.1l0.67,2.05l0.06,1.47l-0.17,1.64l0.03,0.17l1.16,2.22l-0.14,2.28l-0.43,1.24l-0.68,2.44l0.04,1.63l-0.48,1.92l-1.06,2.43l-1.79,1.32l-0.1,0.12l-0.91,2.15l-0.82,1.37l-0.76,2.47l-0.98,1.46l-0.63,2.14l-0.33,2.02l0.1,0.82l-1.21,0.85l-2.71,0.1l-0.13,0.03l-2.31,1.19l-1.21,1.17l-1.34,1.11l-1.89,-1.18l-1.33,-0.46l0.32,-1.24l-0.4,-0.35l-1.46,0.61l-2.06,1.98l-1.99,-0.73l-1.43,-0.46l-1.45,-0.22l-2.32,-0.81l-1.51,-1.67l-0.45,-2.11l-0.6,-1.5l-0.07,-0.11l-1.23,-1.16l-0.16,-0.08l-1.96,-0.28l0.59,-0.99l0.03,-0.24l-0.61,-2.1l-0.54,-0.08l-1.16,1.85l-1.23,0.29l0.73,-0.88l0.06,-0.12l0.37,-1.57l0.93,-1.33l0.05,-0.2l-0.2,-2.07l-0.53,-0.17l-2.01,2.35l-1.52,0.94l-0.12,0.14l-0.82,1.93l-1.5,-0.9l0.07,-1.32l-0.06,-0.2l-1.57,-2.04l-1.15,-0.92l0.3,-0.41l-0.1,-0.44l-3.21,-1.69l-0.13,-0.03l-1.69,-0.08l-2.35,-1.31l-0.16,-0.04l-4.55,0.27l-3.24,0.99l-2.8,0.91l-2.33,-0.18l-0.17,0.03l-2.63,1.41l-2.14,0.64l-0.2,0.19l-0.47,1.42l-0.8,0.99l-1.99,0.06l-1.55,0.24l-2.27,-0.5l-1.79,0.3l-1.71,0.13l-0.19,0.09l-1.38,1.39l-0.58,-0.1l-0.21,0.04l-1.26,0.8l-1.13,0.85l-1.72,-0.1l-1.6,-0.0l-2.58,-1.76l-1.21,-0.49l0.04,-1.19l1.04,-0.32l0.16,-0.12l0.42,-0.64l0.05,-0.19l-0.09,-0.97l0.3,-2.0l-0.28,-1.64l-1.34,-2.84l-0.39,-1.49l0.1,-1.51l-0.04,-0.17l-0.96,-1.72l-0.06,-0.73l-0.09,-0.19l-1.04,-1.01l-0.3,-2.02l-0.05,-0.12l-1.23,-1.83ZM784.95,393.35l2.39,1.01l0.2,0.01l3.26,-0.96l1.19,0.16l0.16,3.19l-0.78,0.95l-0.07,0.16l-0.19,1.83l-0.43,-0.41l-0.44,0.03l-1.61,1.96l-0.4,-0.12l-1.38,-0.09l-1.43,-2.42l-0.37,-2.03l-1.4,-2.53l0.04,-0.94l1.27,0.2Z", "name": "Australia"}, "IL": {"path": "M509.04,199.22l0.71,0.0l0.27,-0.17l0.15,-0.33l0.19,-0.01l0.02,0.73l-0.27,0.34l0.02,0.08l-0.32,0.62l-0.65,-0.27l-0.41,0.19l-0.52,1.85l0.16,0.35l0.14,0.07l-0.17,0.1l-0.14,0.21l-0.11,0.73l0.39,0.33l0.81,-0.26l0.03,0.64l-0.97,3.43l-1.28,-3.67l0.62,-0.78l-0.03,-0.41l0.58,-1.16l0.5,-2.07l0.27,-0.54Z", "name": "Israel"}, "IN": {"path": "M615.84,192.58l2.4,2.97l-0.24,2.17l0.05,0.2l0.94,1.35l-0.06,0.97l-1.46,-0.3l-0.35,0.36l0.7,3.06l0.12,0.18l2.46,1.75l3.11,1.72l-1.23,0.96l-0.1,0.13l-0.97,2.55l0.16,0.38l2.41,1.02l2.37,1.33l3.27,1.52l3.43,0.37l1.37,1.3l0.17,0.08l1.92,0.25l3.0,0.62l2.15,-0.04l0.28,-0.22l0.29,-1.06l0.0,-0.13l-0.32,-1.66l0.16,-0.94l1.0,-0.37l0.23,2.28l0.18,0.24l2.28,1.02l0.2,0.02l1.52,-0.41l2.06,0.18l2.08,-0.08l0.29,-0.27l0.18,-1.66l-0.1,-0.26l-0.53,-0.44l1.38,-0.23l0.15,-0.07l2.26,-2.0l2.75,-1.65l1.97,0.63l0.25,-0.03l1.54,-0.99l0.89,1.28l-0.72,0.97l0.2,0.48l2.49,0.37l0.11,0.61l-0.69,0.39l-0.15,0.3l0.15,1.22l-1.36,-0.37l-0.23,0.03l-3.24,1.86l-0.15,0.28l0.07,1.44l-1.33,2.16l-0.04,0.13l-0.12,1.24l-0.98,1.91l-1.72,-0.53l-0.39,0.28l-0.09,2.66l-0.52,0.83l-0.04,0.23l0.21,0.89l-0.71,0.36l-1.21,-3.85l-0.29,-0.21l-0.69,0.01l-0.29,0.23l-0.28,1.17l-0.84,-0.84l0.6,-1.17l0.97,-0.13l0.23,-0.16l1.15,-2.25l-0.18,-0.42l-1.54,-0.47l-2.3,0.04l-2.13,-0.33l-0.19,-1.63l-0.26,-0.26l-1.13,-0.13l-1.93,-1.13l-0.42,0.13l-0.88,1.82l0.08,0.37l1.47,1.15l-1.21,0.77l-0.1,0.1l-0.56,0.97l0.13,0.42l1.31,0.61l-0.36,1.35l0.01,0.2l0.85,1.95l0.37,2.05l-0.26,0.68l-1.55,-0.02l-3.09,0.54l-0.25,0.32l0.13,1.84l-1.21,1.4l-3.64,1.79l-2.79,3.04l-1.86,1.61l-2.48,1.68l-0.13,0.25l-0.0,1.0l-1.07,0.55l-2.21,0.9l-1.13,0.13l-0.25,0.19l-0.75,1.96l-0.02,0.15l0.52,3.31l0.13,2.03l-1.03,2.35l-0.03,0.12l-0.01,4.03l-1.02,0.1l-0.23,0.15l-1.14,1.93l0.04,0.36l0.44,0.48l-1.83,0.57l-0.18,0.15l-0.81,1.65l-0.74,0.53l-2.14,-2.12l-1.14,-3.47l-0.96,-2.57l-0.9,-1.26l-1.3,-2.38l-0.61,-3.14l-0.44,-1.62l-2.29,-3.56l-1.03,-4.94l-0.74,-3.29l0.01,-3.12l-0.49,-2.51l-0.41,-0.22l-3.56,1.53l-1.59,-0.28l-2.96,-2.87l0.94,-0.74l0.06,-0.41l-0.74,-1.03l-2.73,-2.1l1.35,-1.43l5.38,0.01l0.29,-0.36l-0.5,-2.29l-0.09,-0.15l-1.33,-1.28l-0.27,-1.96l-0.12,-0.2l-1.36,-1.0l2.42,-2.48l2.77,0.2l0.24,-0.1l2.62,-2.85l1.59,-2.8l2.41,-2.74l0.07,-0.2l-0.04,-1.82l2.01,-1.51l-0.01,-0.49l-1.95,-1.33l-0.83,-1.81l-0.82,-2.27l0.98,-0.97l3.64,0.66l2.89,-0.42l0.17,-0.08l2.18,-2.15Z", "name": "India"}, "TZ": {"path": "M505.77,287.58l0.36,0.23l8.95,5.03l0.15,1.3l0.13,0.21l3.4,2.37l-1.07,2.88l-0.02,0.14l0.15,1.42l0.15,0.23l1.47,0.84l0.05,0.42l-0.66,1.44l-0.02,0.18l0.13,0.72l-0.16,1.16l0.03,0.19l0.87,1.57l1.03,2.48l0.12,0.14l0.53,0.32l-1.59,1.18l-2.64,0.95l-1.45,-0.04l-0.2,0.07l-0.81,0.69l-1.64,0.06l-0.68,0.3l-2.9,-0.69l-1.71,0.17l-0.65,-3.18l-0.05,-0.12l-1.35,-1.88l-0.19,-0.12l-2.41,-0.46l-1.38,-0.74l-1.63,-0.44l-0.96,-0.41l-0.95,-0.58l-1.31,-3.09l-1.47,-1.46l-0.45,-1.31l0.24,-1.34l-0.39,-1.99l0.71,-0.08l0.18,-0.09l0.91,-0.91l0.98,-1.31l0.59,-0.5l0.11,-0.24l-0.02,-0.81l-0.08,-0.2l-0.47,-0.5l-0.1,-0.67l0.51,-0.23l0.18,-0.25l0.14,-1.47l-0.05,-0.2l-0.76,-1.09l0.45,-0.15l2.71,0.03l5.01,-0.19Z", "name": "Tanzania"}, "AZ": {"path": "M539.36,175.66l0.16,0.09l1.11,0.2l0.32,-0.15l0.4,-0.71l1.22,-0.99l1.11,1.33l1.26,2.09l0.22,0.14l1.06,0.13l0.28,0.29l-1.46,0.17l-0.26,0.24l-0.43,2.26l-0.39,0.92l-0.85,0.63l-0.12,0.25l0.06,1.2l-0.22,0.05l-1.28,-1.25l0.74,-1.25l-0.03,-0.35l-0.74,-0.86l-0.3,-0.1l-1.05,0.27l-2.49,1.82l-0.04,-1.46l-0.18,-0.27l-1.09,-0.47l-0.8,-0.6l0.53,-0.7l-0.06,-0.42l-1.11,-0.84l0.34,-0.51l-0.11,-0.43l-0.89,-0.48l-0.33,-0.49l0.25,-0.2l1.78,0.81l1.35,0.18l0.25,-0.09l0.34,-0.35l0.02,-0.39l-1.04,-1.36l0.28,-0.18l0.49,0.07l1.65,1.74ZM533.53,180.16l0.63,0.67l0.22,0.09l0.8,-0.0l0.04,0.31l0.66,1.09l-0.94,-0.21l-1.16,-1.24l-0.25,-0.71Z", "name": "Azerbaijan"}, "IE": {"path": "M405.17,135.35l0.36,2.16l-1.78,2.84l-4.28,1.91l-3.02,-0.43l1.81,-3.13l0.02,-0.26l-1.23,-3.26l3.24,-2.56l1.54,-1.32l0.37,1.33l-0.49,1.77l0.3,0.38l1.49,-0.05l1.68,0.63Z", "name": "Ireland"}, "ID": {"path": "M756.56,287.86l0.69,4.02l0.15,0.21l2.59,1.5l0.39,-0.07l2.05,-2.61l2.75,-1.45l2.09,-0.0l2.08,0.85l1.85,0.89l2.52,0.46l0.08,15.44l-1.72,-1.6l-0.15,-0.07l-2.54,-0.51l-0.29,0.1l-0.53,0.62l-2.53,0.06l0.78,-1.51l1.48,-0.66l0.17,-0.34l-0.65,-2.74l-1.23,-2.19l-0.14,-0.13l-4.85,-2.13l-2.09,-0.23l-3.7,-2.28l-0.41,0.1l-0.67,1.11l-0.63,0.14l-0.41,-0.67l-0.01,-1.01l-0.14,-0.25l-1.39,-0.89l2.05,-0.69l1.73,0.05l0.29,-0.39l-0.21,-0.66l-0.29,-0.21l-3.5,-0.0l-0.9,-1.36l-0.19,-0.13l-2.14,-0.44l-0.65,-0.76l2.86,-0.51l1.28,-0.79l3.75,0.96l0.32,0.76ZM758.01,300.37l-0.79,1.04l-0.14,-1.07l0.4,-0.81l0.29,-0.47l0.24,0.31l-0.0,1.0ZM747.45,292.9l0.48,1.02l-1.45,-0.69l-2.09,-0.21l-1.45,0.16l-1.28,-0.07l0.35,-0.81l2.86,-0.1l2.58,0.68ZM741.15,285.69l-0.16,-0.25l-0.72,-3.08l0.47,-1.86l0.35,-0.38l0.1,0.73l0.25,0.26l1.28,0.19l0.18,0.78l-0.11,1.8l-0.96,-0.18l-0.35,0.22l-0.38,1.52l0.05,0.24ZM741.19,285.75l0.76,0.97l-0.11,0.05l-0.65,-1.02ZM739.18,293.52l-0.61,0.54l-1.44,-0.38l-0.25,-0.55l1.93,-0.09l0.36,0.48ZM728.4,295.87l-0.27,-0.07l-2.26,0.89l-0.37,-0.41l0.27,-0.8l-0.09,-0.33l-1.68,-1.37l0.17,-2.29l-0.42,-0.3l-1.67,0.76l-0.17,0.29l0.21,2.92l0.09,3.34l-1.22,0.28l-0.78,-0.54l0.65,-2.1l0.01,-0.14l-0.39,-2.42l-0.29,-0.25l-0.86,-0.02l-0.63,-1.4l0.99,-1.61l0.35,-1.97l1.24,-3.73l0.49,-0.96l1.95,-1.7l1.86,0.69l3.16,0.35l2.92,-0.1l0.17,-0.06l2.24,-1.65l0.11,0.14l-1.8,2.22l-1.72,0.44l-2.41,-0.48l-4.21,0.13l-2.19,0.36l-0.25,0.24l-0.36,1.9l0.08,0.27l2.24,2.23l0.4,0.02l1.29,-1.08l3.19,-0.58l-0.19,0.06l-1.04,1.4l-2.13,0.94l-0.12,0.45l2.26,3.06l-0.37,0.69l0.03,0.32l1.51,1.95ZM728.48,295.97l0.59,0.76l-0.02,1.37l-1.0,0.55l-0.64,-0.58l1.09,-1.84l-0.02,-0.26ZM728.64,286.95l0.79,-0.14l-0.07,0.39l-0.72,-0.24ZM732.38,310.1l-1.89,0.49l-0.06,-0.06l0.17,-0.64l1.0,-1.42l2.14,-0.87l0.1,0.2l0.04,0.58l-1.49,1.72ZM728.26,305.71l-0.17,0.63l-3.53,0.67l-3.02,-0.28l-0.0,-0.42l1.66,-0.44l1.47,0.71l0.16,0.03l1.75,-0.21l1.69,-0.69ZM722.98,310.33l-0.74,0.03l-2.52,-1.35l1.42,-0.3l1.19,0.7l0.72,0.63l-0.06,0.28ZM716.24,305.63l0.66,0.49l0.22,0.06l1.35,-0.18l0.31,0.53l-4.18,0.77l-0.8,-0.01l0.51,-0.86l1.2,-0.02l0.24,-0.12l0.49,-0.65ZM715.84,280.21l0.09,0.34l2.25,1.86l-2.25,0.22l-0.24,0.17l-0.84,1.71l-0.03,0.15l0.1,2.11l-2.27,1.62l-0.13,0.24l-0.06,2.46l-0.74,2.92l-0.02,-0.05l-0.39,-0.16l-2.62,1.04l-0.86,-1.33l-0.23,-0.14l-1.71,-0.14l-1.19,-0.76l-0.25,-0.03l-2.78,0.84l-0.79,-1.05l-0.26,-0.12l-1.61,0.13l-1.8,-0.25l-0.36,-3.13l-0.15,-0.23l-1.18,-0.65l-1.13,-2.02l-0.33,-2.1l0.27,-2.19l1.05,-1.17l0.28,1.12l0.1,0.16l1.71,1.41l0.28,0.05l1.55,-0.49l1.54,0.17l0.23,-0.07l1.4,-1.21l1.05,-0.19l2.3,0.68l0.16,0.0l2.04,-0.53l0.21,-0.19l1.26,-3.41l0.91,-0.82l0.09,-0.14l0.8,-2.64l2.63,0.0l1.71,0.33l-1.19,1.89l0.02,0.34l1.74,2.24l-0.37,1.0ZM692.67,302.0l0.26,0.19l4.8,0.25l0.28,-0.16l0.44,-0.83l4.29,1.12l0.85,1.52l0.23,0.15l3.71,0.45l2.37,1.15l-2.06,0.69l-2.77,-1.0l-2.25,0.07l-2.57,-0.18l-2.31,-0.45l-2.94,-0.97l-1.84,-0.25l-0.13,0.01l-0.97,0.29l-4.34,-0.98l-0.38,-0.94l-0.25,-0.19l-1.76,-0.14l1.31,-1.84l2.81,0.14l1.97,0.96l0.95,0.19l0.28,0.74ZM685.63,299.27l-2.36,0.04l-2.07,-2.05l-3.17,-2.02l-1.06,-1.5l-1.88,-2.02l-1.22,-1.85l-1.9,-3.49l-2.2,-2.11l-0.71,-2.08l-0.94,-1.99l-0.1,-0.12l-2.21,-1.54l-1.35,-2.17l-1.86,-1.39l-2.53,-2.68l-0.14,-0.81l1.22,0.08l3.76,0.47l2.16,2.4l1.94,1.7l1.37,1.04l2.35,2.67l0.22,0.1l2.44,0.04l1.99,1.62l1.42,2.06l0.09,0.09l1.67,1.0l-0.88,1.8l0.11,0.39l1.44,0.87l0.13,0.04l0.68,0.05l0.41,1.62l0.87,1.4l0.22,0.14l1.71,0.21l1.06,1.38l-0.61,3.04l-0.09,3.6Z", "name": "Indonesia"}, "UA": {"path": "M500.54,141.42l0.9,0.13l0.27,-0.11l0.52,-0.62l0.68,0.13l2.43,-0.3l1.32,1.57l-0.45,0.48l-0.07,0.26l0.21,1.03l0.27,0.24l1.85,0.15l0.76,1.22l-0.05,0.55l0.2,0.31l3.18,1.15l0.18,0.01l1.75,-0.47l1.42,1.41l0.22,0.09l1.42,-0.03l3.44,0.99l0.02,0.65l-0.97,1.62l-0.03,0.24l0.52,1.67l-0.29,0.79l-2.24,0.22l-0.14,0.05l-1.29,0.89l-0.13,0.23l-0.07,1.16l-1.75,0.22l-0.12,0.04l-1.6,0.98l-2.27,0.16l-0.12,0.04l-2.16,1.17l-0.16,0.29l0.15,1.94l0.14,0.23l1.23,0.75l0.18,0.04l2.06,-0.15l-0.22,0.51l-2.67,0.54l-3.27,1.72l-1.0,-0.45l0.45,-1.19l-0.19,-0.39l-2.34,-0.78l0.15,-0.2l2.32,-1.0l0.09,-0.49l-0.73,-0.72l-0.15,-0.08l-3.69,-0.75l-0.14,-0.96l-0.35,-0.25l-2.32,0.39l-0.21,0.15l-0.91,1.7l-1.77,2.1l-0.93,-0.44l-0.24,-0.0l-1.05,0.45l-0.48,-0.25l0.13,-0.07l0.14,-0.15l0.43,-1.04l0.67,-0.97l0.04,-0.26l-0.1,-0.31l0.04,-0.02l0.11,0.19l0.24,0.15l1.48,0.09l0.78,-0.25l0.07,-0.53l-0.27,-0.19l0.09,-0.25l-0.08,-0.33l-0.81,-0.74l-0.34,-1.24l-0.14,-0.18l-0.73,-0.42l0.15,-0.87l-0.11,-0.29l-1.13,-0.86l-0.15,-0.06l-0.97,-0.11l-1.79,-0.97l-0.2,-0.03l-1.66,0.32l-0.13,0.06l-0.52,0.41l-0.95,-0.0l-0.23,0.11l-0.56,0.66l-1.74,0.29l-0.79,0.43l-1.01,-0.68l-0.16,-0.05l-1.57,-0.01l-1.52,-0.35l-0.23,0.04l-0.71,0.45l-0.09,-0.43l-0.13,-0.19l-1.18,-0.74l0.38,-1.02l0.53,-0.64l0.35,0.12l0.37,-0.41l-0.57,-1.29l2.1,-2.5l1.16,-0.36l0.2,-0.2l0.27,-0.92l-0.01,-0.2l-1.1,-2.52l0.79,-0.09l0.13,-0.05l1.3,-0.86l1.83,-0.07l2.48,0.26l2.84,0.8l1.91,0.06l0.88,0.45l0.29,-0.01l0.72,-0.44l0.49,0.58l0.25,0.11l2.2,-0.16l0.94,0.3l0.39,-0.26l0.15,-1.57l0.61,-0.59l2.01,-0.19Z", "name": "Ukraine"}, "QA": {"path": "M548.47,221.47l-0.15,-1.72l0.59,-1.23l0.38,-0.16l0.54,0.6l0.04,1.4l-0.47,1.37l-0.41,0.11l-0.53,-0.37Z", "name": "Qatar"}, "MZ": {"path": "M507.71,314.14l1.65,-0.18l2.96,0.7l0.2,-0.02l0.6,-0.29l1.68,-0.06l0.18,-0.07l0.8,-0.69l1.5,0.02l2.74,-0.98l1.74,-1.27l0.25,0.7l-0.1,2.47l0.31,2.27l0.1,3.97l0.42,1.24l-0.7,1.71l-0.94,1.73l-1.52,1.52l-5.06,2.21l-2.88,2.8l-1.01,0.51l-1.72,1.81l-0.99,0.58l-0.15,0.23l-0.21,1.86l0.04,0.19l1.17,1.95l0.47,1.47l0.03,0.74l0.39,0.28l0.05,-0.01l-0.06,2.13l-0.39,1.19l0.1,0.33l0.42,0.32l-0.28,0.83l-0.95,0.86l-2.03,0.88l-3.08,1.49l-1.1,0.99l-0.09,0.28l0.21,1.13l0.21,0.23l0.38,0.11l-0.14,0.89l-1.39,-0.02l-0.17,-0.94l-0.38,-1.23l-0.2,-0.89l0.44,-2.91l-0.01,-0.14l-0.65,-1.88l-1.15,-3.55l2.52,-2.85l0.68,-1.89l0.29,-0.18l0.14,-0.2l0.28,-1.53l-0.03,-0.19l-0.36,-0.7l0.1,-1.83l0.49,-1.84l-0.01,-3.26l-0.14,-0.25l-1.3,-0.83l-0.11,-0.04l-1.08,-0.17l-0.47,-0.55l-0.1,-0.08l-1.16,-0.54l-0.13,-0.03l-1.83,0.04l-0.32,-2.25l7.19,-1.99l1.32,1.12l0.29,0.06l0.55,-0.19l0.75,0.49l0.11,0.81l-0.49,1.11l-0.02,0.15l0.19,1.81l0.09,0.18l1.63,1.59l0.48,-0.1l0.72,-1.68l0.99,-0.49l0.17,-0.29l-0.21,-3.29l-0.04,-0.13l-1.11,-1.92l-0.9,-0.82l-0.21,-0.08l-0.62,0.03l-0.63,-2.98l0.61,-1.67Z", "name": "Mozambique"}}, "height": 440.7063107441331, "projection": {"type": "mill", "centralMeridian": 11.5}, "width": 900.0}); \ No newline at end of file diff --git a/assets/js/plugins/metisMenu/jquery.metisMenu.js b/assets/js/plugins/metisMenu/jquery.metisMenu.js deleted file mode 100644 index 3c9499c5..00000000 --- a/assets/js/plugins/metisMenu/jquery.metisMenu.js +++ /dev/null @@ -1,120 +0,0 @@ -/* - * metismenu - v1.1.3 - * Easy menu jQuery plugin for Twitter Bootstrap 3 - * https://github.com/onokumus/metisMenu - * - * Made by Osman Nuri Okumus - * Under MIT License - */ -;(function($, window, document, undefined) { - - var pluginName = "metisMenu", - defaults = { - toggle: true, - doubleTapToGo: false - }; - - function Plugin(element, options) { - this.element = $(element); - this.settings = $.extend({}, defaults, options); - this._defaults = defaults; - this._name = pluginName; - this.init(); - } - - Plugin.prototype = { - init: function() { - - var $this = this.element, - $toggle = this.settings.toggle, - obj = this; - - if (this.isIE() <= 9) { - $this.find("li.active").has("ul").children("ul").collapse("show"); - $this.find("li").not(".active").has("ul").children("ul").collapse("hide"); - } else { - $this.find("li.active").has("ul").children("ul").addClass("collapse in"); - $this.find("li").not(".active").has("ul").children("ul").addClass("collapse"); - } - - //add the "doubleTapToGo" class to active items if needed - if (obj.settings.doubleTapToGo) { - $this.find("li.active").has("ul").children("a").addClass("doubleTapToGo"); - } - - $this.find("li").has("ul").children("a").on("click" + "." + pluginName, function(e) { - e.preventDefault(); - - //Do we need to enable the double tap - if (obj.settings.doubleTapToGo) { - - //if we hit a second time on the link and the href is valid, navigate to that url - if (obj.doubleTapToGo($(this)) && $(this).attr("href") !== "#" && $(this).attr("href") !== "") { - e.stopPropagation(); - document.location = $(this).attr("href"); - return; - } - } - - $(this).parent("li").toggleClass("active").children("ul").collapse("toggle"); - - if ($toggle) { - $(this).parent("li").siblings().removeClass("active").children("ul.in").collapse("hide"); - } - - }); - }, - - isIE: function() { //https://gist.github.com/padolsey/527683 - var undef, - v = 3, - div = document.createElement("div"), - all = div.getElementsByTagName("i"); - - while ( - div.innerHTML = "<!--[if gt IE " + (++v) + "]><i></i><![endif]-->", - all[0] - ) { - return v > 4 ? v : undef; - } - }, - - //Enable the link on the second click. - doubleTapToGo: function(elem) { - var $this = this.element; - - //if the class "doubleTapToGo" exists, remove it and return - if (elem.hasClass("doubleTapToGo")) { - elem.removeClass("doubleTapToGo"); - return true; - } - - //does not exists, add a new class and return false - if (elem.parent().children("ul").length) { - //first remove all other class - $this.find(".doubleTapToGo").removeClass("doubleTapToGo"); - //add the class on the current element - elem.addClass("doubleTapToGo"); - return false; - } - }, - - remove: function() { - this.element.off("." + pluginName); - this.element.removeData(pluginName); - } - - }; - - $.fn[pluginName] = function(options) { - this.each(function () { - var el = $(this); - if (el.data(pluginName)) { - el.data(pluginName).remove(); - } - el.data(pluginName, new Plugin(this, options)); - }); - return this; - }; - -})(jQuery, window, document); \ No newline at end of file diff --git a/assets/js/plugins/morris/morris.js b/assets/js/plugins/morris/morris.js deleted file mode 100644 index fb99e3c7..00000000 --- a/assets/js/plugins/morris/morris.js +++ /dev/null @@ -1,1888 +0,0 @@ -(function() { - var $, Morris, minutesSpecHelper, secondsSpecHelper, - __slice = [].slice, - __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, - __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, - __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }; - - Morris = window.Morris = {}; - - $ = jQuery; - - Morris.EventEmitter = (function() { - function EventEmitter() {} - - EventEmitter.prototype.on = function(name, handler) { - if (this.handlers == null) { - this.handlers = {}; - } - if (this.handlers[name] == null) { - this.handlers[name] = []; - } - this.handlers[name].push(handler); - return this; - }; - - EventEmitter.prototype.fire = function() { - var args, handler, name, _i, _len, _ref, _results; - name = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : []; - if ((this.handlers != null) && (this.handlers[name] != null)) { - _ref = this.handlers[name]; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - handler = _ref[_i]; - _results.push(handler.apply(null, args)); - } - return _results; - } - }; - - return EventEmitter; - - })(); - - Morris.commas = function(num) { - var absnum, intnum, ret, strabsnum; - if (num != null) { - ret = num < 0 ? "-" : ""; - absnum = Math.abs(num); - intnum = Math.floor(absnum).toFixed(0); - ret += intnum.replace(/(?=(?:\d{3})+$)(?!^)/g, ','); - strabsnum = absnum.toString(); - if (strabsnum.length > intnum.length) { - ret += strabsnum.slice(intnum.length); - } - return ret; - } else { - return '-'; - } - }; - - Morris.pad2 = function(number) { - return (number < 10 ? '0' : '') + number; - }; - - Morris.Grid = (function(_super) { - __extends(Grid, _super); - - function Grid(options) { - this.resizeHandler = __bind(this.resizeHandler, this); - var _this = this; - if (typeof options.element === 'string') { - this.el = $(document.getElementById(options.element)); - } else { - this.el = $(options.element); - } - if ((this.el == null) || this.el.length === 0) { - throw new Error("Graph container element not found"); - } - if (this.el.css('position') === 'static') { - this.el.css('position', 'relative'); - } - this.options = $.extend({}, this.gridDefaults, this.defaults || {}, options); - if (typeof this.options.units === 'string') { - this.options.postUnits = options.units; - } - this.raphael = new Raphael(this.el[0]); - this.elementWidth = null; - this.elementHeight = null; - this.dirty = false; - this.selectFrom = null; - if (this.init) { - this.init(); - } - this.setData(this.options.data); - this.el.bind('mousemove', function(evt) { - var left, offset, right, width, x; - offset = _this.el.offset(); - x = evt.pageX - offset.left; - if (_this.selectFrom) { - left = _this.data[_this.hitTest(Math.min(x, _this.selectFrom))]._x; - right = _this.data[_this.hitTest(Math.max(x, _this.selectFrom))]._x; - width = right - left; - return _this.selectionRect.attr({ - x: left, - width: width - }); - } else { - return _this.fire('hovermove', x, evt.pageY - offset.top); - } - }); - this.el.bind('mouseleave', function(evt) { - if (_this.selectFrom) { - _this.selectionRect.hide(); - _this.selectFrom = null; - } - return _this.fire('hoverout'); - }); - this.el.bind('touchstart touchmove touchend', function(evt) { - var offset, touch; - touch = evt.originalEvent.touches[0] || evt.originalEvent.changedTouches[0]; - offset = _this.el.offset(); - _this.fire('hover', touch.pageX - offset.left, touch.pageY - offset.top); - return touch; - }); - this.el.bind('click', function(evt) { - var offset; - offset = _this.el.offset(); - return _this.fire('gridclick', evt.pageX - offset.left, evt.pageY - offset.top); - }); - if (this.options.rangeSelect) { - this.selectionRect = this.raphael.rect(0, 0, 0, this.el.innerHeight()).attr({ - fill: this.options.rangeSelectColor, - stroke: false - }).toBack().hide(); - this.el.bind('mousedown', function(evt) { - var offset; - offset = _this.el.offset(); - return _this.startRange(evt.pageX - offset.left); - }); - this.el.bind('mouseup', function(evt) { - var offset; - offset = _this.el.offset(); - _this.endRange(evt.pageX - offset.left); - return _this.fire('hovermove', evt.pageX - offset.left, evt.pageY - offset.top); - }); - } - if (this.options.resize) { - $(window).bind('resize', function(evt) { - if (_this.timeoutId != null) { - window.clearTimeout(_this.timeoutId); - } - return _this.timeoutId = window.setTimeout(_this.resizeHandler, 100); - }); - } - if (this.postInit) { - this.postInit(); - } - } - - Grid.prototype.gridDefaults = { - dateFormat: null, - axes: true, - grid: true, - gridLineColor: '#aaa', - gridStrokeWidth: 0.5, - gridTextColor: '#888', - gridTextSize: 12, - gridTextFamily: 'sans-serif', - gridTextWeight: 'normal', - hideHover: false, - yLabelFormat: null, - xLabelAngle: 0, - numLines: 5, - padding: 25, - parseTime: true, - postUnits: '', - preUnits: '', - ymax: 'auto', - ymin: 'auto 0', - goals: [], - goalStrokeWidth: 1.0, - goalLineColors: ['#666633', '#999966', '#cc6666', '#663333'], - events: [], - eventStrokeWidth: 1.0, - eventLineColors: ['#005a04', '#ccffbb', '#3a5f0b', '#005502'], - rangeSelect: null, - rangeSelectColor: '#eef', - resize: false - }; - - Grid.prototype.setData = function(data, redraw) { - var e, idx, index, maxGoal, minGoal, ret, row, step, total, y, ykey, ymax, ymin, yval, _ref; - if (redraw == null) { - redraw = true; - } - this.options.data = data; - if ((data == null) || data.length === 0) { - this.data = []; - this.raphael.clear(); - if (this.hover != null) { - this.hover.hide(); - } - return; - } - ymax = this.cumulative ? 0 : null; - ymin = this.cumulative ? 0 : null; - if (this.options.goals.length > 0) { - minGoal = Math.min.apply(Math, this.options.goals); - maxGoal = Math.max.apply(Math, this.options.goals); - ymin = ymin != null ? Math.min(ymin, minGoal) : minGoal; - ymax = ymax != null ? Math.max(ymax, maxGoal) : maxGoal; - } - this.data = (function() { - var _i, _len, _results; - _results = []; - for (index = _i = 0, _len = data.length; _i < _len; index = ++_i) { - row = data[index]; - ret = { - src: row - }; - ret.label = row[this.options.xkey]; - if (this.options.parseTime) { - ret.x = Morris.parseDate(ret.label); - if (this.options.dateFormat) { - ret.label = this.options.dateFormat(ret.x); - } else if (typeof ret.label === 'number') { - ret.label = new Date(ret.label).toString(); - } - } else { - ret.x = index; - if (this.options.xLabelFormat) { - ret.label = this.options.xLabelFormat(ret); - } - } - total = 0; - ret.y = (function() { - var _j, _len1, _ref, _results1; - _ref = this.options.ykeys; - _results1 = []; - for (idx = _j = 0, _len1 = _ref.length; _j < _len1; idx = ++_j) { - ykey = _ref[idx]; - yval = row[ykey]; - if (typeof yval === 'string') { - yval = parseFloat(yval); - } - if ((yval != null) && typeof yval !== 'number') { - yval = null; - } - if (yval != null) { - if (this.cumulative) { - total += yval; - } else { - if (ymax != null) { - ymax = Math.max(yval, ymax); - ymin = Math.min(yval, ymin); - } else { - ymax = ymin = yval; - } - } - } - if (this.cumulative && (total != null)) { - ymax = Math.max(total, ymax); - ymin = Math.min(total, ymin); - } - _results1.push(yval); - } - return _results1; - }).call(this); - _results.push(ret); - } - return _results; - }).call(this); - if (this.options.parseTime) { - this.data = this.data.sort(function(a, b) { - return (a.x > b.x) - (b.x > a.x); - }); - } - this.xmin = this.data[0].x; - this.xmax = this.data[this.data.length - 1].x; - this.events = []; - if (this.options.events.length > 0) { - if (this.options.parseTime) { - this.events = (function() { - var _i, _len, _ref, _results; - _ref = this.options.events; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - e = _ref[_i]; - _results.push(Morris.parseDate(e)); - } - return _results; - }).call(this); - } else { - this.events = this.options.events; - } - this.xmax = Math.max(this.xmax, Math.max.apply(Math, this.events)); - this.xmin = Math.min(this.xmin, Math.min.apply(Math, this.events)); - } - if (this.xmin === this.xmax) { - this.xmin -= 1; - this.xmax += 1; - } - this.ymin = this.yboundary('min', ymin); - this.ymax = this.yboundary('max', ymax); - if (this.ymin === this.ymax) { - if (ymin) { - this.ymin -= 1; - } - this.ymax += 1; - } - if (((_ref = this.options.axes) === true || _ref === 'both' || _ref === 'y') || this.options.grid === true) { - if (this.options.ymax === this.gridDefaults.ymax && this.options.ymin === this.gridDefaults.ymin) { - this.grid = this.autoGridLines(this.ymin, this.ymax, this.options.numLines); - this.ymin = Math.min(this.ymin, this.grid[0]); - this.ymax = Math.max(this.ymax, this.grid[this.grid.length - 1]); - } else { - step = (this.ymax - this.ymin) / (this.options.numLines - 1); - this.grid = (function() { - var _i, _ref1, _ref2, _results; - _results = []; - for (y = _i = _ref1 = this.ymin, _ref2 = this.ymax; step > 0 ? _i <= _ref2 : _i >= _ref2; y = _i += step) { - _results.push(y); - } - return _results; - }).call(this); - } - } - this.dirty = true; - if (redraw) { - return this.redraw(); - } - }; - - Grid.prototype.yboundary = function(boundaryType, currentValue) { - var boundaryOption, suggestedValue; - boundaryOption = this.options["y" + boundaryType]; - if (typeof boundaryOption === 'string') { - if (boundaryOption.slice(0, 4) === 'auto') { - if (boundaryOption.length > 5) { - suggestedValue = parseInt(boundaryOption.slice(5), 10); - if (currentValue == null) { - return suggestedValue; - } - return Math[boundaryType](currentValue, suggestedValue); - } else { - if (currentValue != null) { - return currentValue; - } else { - return 0; - } - } - } else { - return parseInt(boundaryOption, 10); - } - } else { - return boundaryOption; - } - }; - - Grid.prototype.autoGridLines = function(ymin, ymax, nlines) { - var gmax, gmin, grid, smag, span, step, unit, y, ymag; - span = ymax - ymin; - ymag = Math.floor(Math.log(span) / Math.log(10)); - unit = Math.pow(10, ymag); - gmin = Math.floor(ymin / unit) * unit; - gmax = Math.ceil(ymax / unit) * unit; - step = (gmax - gmin) / (nlines - 1); - if (unit === 1 && step > 1 && Math.ceil(step) !== step) { - step = Math.ceil(step); - gmax = gmin + step * (nlines - 1); - } - if (gmin < 0 && gmax > 0) { - gmin = Math.floor(ymin / step) * step; - gmax = Math.ceil(ymax / step) * step; - } - if (step < 1) { - smag = Math.floor(Math.log(step) / Math.log(10)); - grid = (function() { - var _i, _results; - _results = []; - for (y = _i = gmin; step > 0 ? _i <= gmax : _i >= gmax; y = _i += step) { - _results.push(parseFloat(y.toFixed(1 - smag))); - } - return _results; - })(); - } else { - grid = (function() { - var _i, _results; - _results = []; - for (y = _i = gmin; step > 0 ? _i <= gmax : _i >= gmax; y = _i += step) { - _results.push(y); - } - return _results; - })(); - } - return grid; - }; - - Grid.prototype._calc = function() { - var bottomOffsets, gridLine, h, i, w, yLabelWidths, _ref, _ref1; - w = this.el.width(); - h = this.el.height(); - if (this.elementWidth !== w || this.elementHeight !== h || this.dirty) { - this.elementWidth = w; - this.elementHeight = h; - this.dirty = false; - this.left = this.options.padding; - this.right = this.elementWidth - this.options.padding; - this.top = this.options.padding; - this.bottom = this.elementHeight - this.options.padding; - if ((_ref = this.options.axes) === true || _ref === 'both' || _ref === 'y') { - yLabelWidths = (function() { - var _i, _len, _ref1, _results; - _ref1 = this.grid; - _results = []; - for (_i = 0, _len = _ref1.length; _i < _len; _i++) { - gridLine = _ref1[_i]; - _results.push(this.measureText(this.yAxisFormat(gridLine)).width); - } - return _results; - }).call(this); - this.left += Math.max.apply(Math, yLabelWidths); - } - if ((_ref1 = this.options.axes) === true || _ref1 === 'both' || _ref1 === 'x') { - bottomOffsets = (function() { - var _i, _ref2, _results; - _results = []; - for (i = _i = 0, _ref2 = this.data.length; 0 <= _ref2 ? _i < _ref2 : _i > _ref2; i = 0 <= _ref2 ? ++_i : --_i) { - _results.push(this.measureText(this.data[i].text, -this.options.xLabelAngle).height); - } - return _results; - }).call(this); - this.bottom -= Math.max.apply(Math, bottomOffsets); - } - this.width = Math.max(1, this.right - this.left); - this.height = Math.max(1, this.bottom - this.top); - this.dx = this.width / (this.xmax - this.xmin); - this.dy = this.height / (this.ymax - this.ymin); - if (this.calc) { - return this.calc(); - } - } - }; - - Grid.prototype.transY = function(y) { - return this.bottom - (y - this.ymin) * this.dy; - }; - - Grid.prototype.transX = function(x) { - if (this.data.length === 1) { - return (this.left + this.right) / 2; - } else { - return this.left + (x - this.xmin) * this.dx; - } - }; - - Grid.prototype.redraw = function() { - this.raphael.clear(); - this._calc(); - this.drawGrid(); - this.drawGoals(); - this.drawEvents(); - if (this.draw) { - return this.draw(); - } - }; - - Grid.prototype.measureText = function(text, angle) { - var ret, tt; - if (angle == null) { - angle = 0; - } - tt = this.raphael.text(100, 100, text).attr('font-size', this.options.gridTextSize).attr('font-family', this.options.gridTextFamily).attr('font-weight', this.options.gridTextWeight).rotate(angle); - ret = tt.getBBox(); - tt.remove(); - return ret; - }; - - Grid.prototype.yAxisFormat = function(label) { - return this.yLabelFormat(label); - }; - - Grid.prototype.yLabelFormat = function(label) { - if (typeof this.options.yLabelFormat === 'function') { - return this.options.yLabelFormat(label); - } else { - return "" + this.options.preUnits + (Morris.commas(label)) + this.options.postUnits; - } - }; - - Grid.prototype.drawGrid = function() { - var lineY, y, _i, _len, _ref, _ref1, _ref2, _results; - if (this.options.grid === false && ((_ref = this.options.axes) !== true && _ref !== 'both' && _ref !== 'y')) { - return; - } - _ref1 = this.grid; - _results = []; - for (_i = 0, _len = _ref1.length; _i < _len; _i++) { - lineY = _ref1[_i]; - y = this.transY(lineY); - if ((_ref2 = this.options.axes) === true || _ref2 === 'both' || _ref2 === 'y') { - this.drawYAxisLabel(this.left - this.options.padding / 2, y, this.yAxisFormat(lineY)); - } - if (this.options.grid) { - _results.push(this.drawGridLine("M" + this.left + "," + y + "H" + (this.left + this.width))); - } else { - _results.push(void 0); - } - } - return _results; - }; - - Grid.prototype.drawGoals = function() { - var color, goal, i, _i, _len, _ref, _results; - _ref = this.options.goals; - _results = []; - for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) { - goal = _ref[i]; - color = this.options.goalLineColors[i % this.options.goalLineColors.length]; - _results.push(this.drawGoal(goal, color)); - } - return _results; - }; - - Grid.prototype.drawEvents = function() { - var color, event, i, _i, _len, _ref, _results; - _ref = this.events; - _results = []; - for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) { - event = _ref[i]; - color = this.options.eventLineColors[i % this.options.eventLineColors.length]; - _results.push(this.drawEvent(event, color)); - } - return _results; - }; - - Grid.prototype.drawGoal = function(goal, color) { - return this.raphael.path("M" + this.left + "," + (this.transY(goal)) + "H" + this.right).attr('stroke', color).attr('stroke-width', this.options.goalStrokeWidth); - }; - - Grid.prototype.drawEvent = function(event, color) { - return this.raphael.path("M" + (this.transX(event)) + "," + this.bottom + "V" + this.top).attr('stroke', color).attr('stroke-width', this.options.eventStrokeWidth); - }; - - Grid.prototype.drawYAxisLabel = function(xPos, yPos, text) { - return this.raphael.text(xPos, yPos, text).attr('font-size', this.options.gridTextSize).attr('font-family', this.options.gridTextFamily).attr('font-weight', this.options.gridTextWeight).attr('fill', this.options.gridTextColor).attr('text-anchor', 'end'); - }; - - Grid.prototype.drawGridLine = function(path) { - return this.raphael.path(path).attr('stroke', this.options.gridLineColor).attr('stroke-width', this.options.gridStrokeWidth); - }; - - Grid.prototype.startRange = function(x) { - this.hover.hide(); - this.selectFrom = x; - return this.selectionRect.attr({ - x: x, - width: 0 - }).show(); - }; - - Grid.prototype.endRange = function(x) { - var end, start; - if (this.selectFrom) { - start = Math.min(this.selectFrom, x); - end = Math.max(this.selectFrom, x); - this.options.rangeSelect.call(this.el, { - start: this.data[this.hitTest(start)].x, - end: this.data[this.hitTest(end)].x - }); - return this.selectFrom = null; - } - }; - - Grid.prototype.resizeHandler = function() { - this.timeoutId = null; - this.raphael.setSize(this.el.width(), this.el.height()); - return this.redraw(); - }; - - return Grid; - - })(Morris.EventEmitter); - - Morris.parseDate = function(date) { - var isecs, m, msecs, n, o, offsetmins, p, q, r, ret, secs; - if (typeof date === 'number') { - return date; - } - m = date.match(/^(\d+) Q(\d)$/); - n = date.match(/^(\d+)-(\d+)$/); - o = date.match(/^(\d+)-(\d+)-(\d+)$/); - p = date.match(/^(\d+) W(\d+)$/); - q = date.match(/^(\d+)-(\d+)-(\d+)[ T](\d+):(\d+)(Z|([+-])(\d\d):?(\d\d))?$/); - r = date.match(/^(\d+)-(\d+)-(\d+)[ T](\d+):(\d+):(\d+(\.\d+)?)(Z|([+-])(\d\d):?(\d\d))?$/); - if (m) { - return new Date(parseInt(m[1], 10), parseInt(m[2], 10) * 3 - 1, 1).getTime(); - } else if (n) { - return new Date(parseInt(n[1], 10), parseInt(n[2], 10) - 1, 1).getTime(); - } else if (o) { - return new Date(parseInt(o[1], 10), parseInt(o[2], 10) - 1, parseInt(o[3], 10)).getTime(); - } else if (p) { - ret = new Date(parseInt(p[1], 10), 0, 1); - if (ret.getDay() !== 4) { - ret.setMonth(0, 1 + ((4 - ret.getDay()) + 7) % 7); - } - return ret.getTime() + parseInt(p[2], 10) * 604800000; - } else if (q) { - if (!q[6]) { - return new Date(parseInt(q[1], 10), parseInt(q[2], 10) - 1, parseInt(q[3], 10), parseInt(q[4], 10), parseInt(q[5], 10)).getTime(); - } else { - offsetmins = 0; - if (q[6] !== 'Z') { - offsetmins = parseInt(q[8], 10) * 60 + parseInt(q[9], 10); - if (q[7] === '+') { - offsetmins = 0 - offsetmins; - } - } - return Date.UTC(parseInt(q[1], 10), parseInt(q[2], 10) - 1, parseInt(q[3], 10), parseInt(q[4], 10), parseInt(q[5], 10) + offsetmins); - } - } else if (r) { - secs = parseFloat(r[6]); - isecs = Math.floor(secs); - msecs = Math.round((secs - isecs) * 1000); - if (!r[8]) { - return new Date(parseInt(r[1], 10), parseInt(r[2], 10) - 1, parseInt(r[3], 10), parseInt(r[4], 10), parseInt(r[5], 10), isecs, msecs).getTime(); - } else { - offsetmins = 0; - if (r[8] !== 'Z') { - offsetmins = parseInt(r[10], 10) * 60 + parseInt(r[11], 10); - if (r[9] === '+') { - offsetmins = 0 - offsetmins; - } - } - return Date.UTC(parseInt(r[1], 10), parseInt(r[2], 10) - 1, parseInt(r[3], 10), parseInt(r[4], 10), parseInt(r[5], 10) + offsetmins, isecs, msecs); - } - } else { - return new Date(parseInt(date, 10), 0, 1).getTime(); - } - }; - - Morris.Hover = (function() { - Hover.defaults = { - "class": 'morris-hover morris-default-style' - }; - - function Hover(options) { - if (options == null) { - options = {}; - } - this.options = $.extend({}, Morris.Hover.defaults, options); - this.el = $("<div class='" + this.options["class"] + "'></div>"); - this.el.hide(); - this.options.parent.append(this.el); - } - - Hover.prototype.update = function(html, x, y) { - this.html; - this.show(); - return this.moveTo(x, y); - }; - - Hover.prototype.html = function(content) { - return this.el.html(content); - }; - - Hover.prototype.moveTo = function(x, y) { - var hoverHeight, hoverWidth, left, parentHeight, parentWidth, top; - parentWidth = this.options.parent.innerWidth(); - parentHeight = this.options.parent.innerHeight(); - hoverWidth = this.el.outerWidth(); - hoverHeight = this.el.outerHeight(); - left = Math.min(Math.max(0, x - hoverWidth / 2), parentWidth - hoverWidth); - if (y != null) { - top = y - hoverHeight - 10; - if (top < 0) { - top = y + 10; - if (top + hoverHeight > parentHeight) { - top = parentHeight / 2 - hoverHeight / 2; - } - } - } else { - top = parentHeight / 2 - hoverHeight / 2; - } - return this.el.css({ - left: left + "px", - top: parseInt(top) + "px" - }); - }; - - Hover.prototype.show = function() { - return this.el.show(); - }; - - Hover.prototype.hide = function() { - return this.el.hide(); - }; - - return Hover; - - })(); - - Morris.Line = (function(_super) { - __extends(Line, _super); - - function Line(options) { - this.hilight = __bind(this.hilight, this); - this.onHoverOut = __bind(this.onHoverOut, this); - this.onHoverMove = __bind(this.onHoverMove, this); - this.onGridClick = __bind(this.onGridClick, this); - if (!(this instanceof Morris.Line)) { - return new Morris.Line(options); - } - Line.__super__.constructor.call(this, options); - } - - Line.prototype.init = function() { - if (this.options.hideHover !== 'always') { - this.hover = new Morris.Hover({ - parent: this.el - }); - this.on('hovermove', this.onHoverMove); - this.on('hoverout', this.onHoverOut); - return this.on('gridclick', this.onGridClick); - } - }; - - Line.prototype.defaults = { - lineWidth: 3, - pointSize: 4, - lineColors: ['#0b62a4', '#7A92A3', '#4da74d', '#afd8f8', '#edc240', '#cb4b4b', '#9440ed'], - pointStrokeWidths: [1], - pointStrokeColors: ['#ffffff'], - pointFillColors: [], - smooth: true, - xLabels: 'auto', - xLabelFormat: null, - xLabelMargin: 24, - continuousLine: true, - hideHover: false - }; - - Line.prototype.calc = function() { - this.calcPoints(); - return this.generatePaths(); - }; - - Line.prototype.calcPoints = function() { - var row, y, _i, _len, _ref, _results; - _ref = this.data; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - row = _ref[_i]; - row._x = this.transX(row.x); - row._y = (function() { - var _j, _len1, _ref1, _results1; - _ref1 = row.y; - _results1 = []; - for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { - y = _ref1[_j]; - if (y != null) { - _results1.push(this.transY(y)); - } else { - _results1.push(y); - } - } - return _results1; - }).call(this); - _results.push(row._ymax = Math.min.apply(Math, [this.bottom].concat((function() { - var _j, _len1, _ref1, _results1; - _ref1 = row._y; - _results1 = []; - for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { - y = _ref1[_j]; - if (y != null) { - _results1.push(y); - } - } - return _results1; - })()))); - } - return _results; - }; - - Line.prototype.hitTest = function(x) { - var index, r, _i, _len, _ref; - if (this.data.length === 0) { - return null; - } - _ref = this.data.slice(1); - for (index = _i = 0, _len = _ref.length; _i < _len; index = ++_i) { - r = _ref[index]; - if (x < (r._x + this.data[index]._x) / 2) { - break; - } - } - return index; - }; - - Line.prototype.onGridClick = function(x, y) { - var index; - index = this.hitTest(x); - return this.fire('click', index, this.data[index].src, x, y); - }; - - Line.prototype.onHoverMove = function(x, y) { - var index; - index = this.hitTest(x); - return this.displayHoverForRow(index); - }; - - Line.prototype.onHoverOut = function() { - if (this.options.hideHover !== false) { - return this.displayHoverForRow(null); - } - }; - - Line.prototype.displayHoverForRow = function(index) { - var _ref; - if (index != null) { - (_ref = this.hover).update.apply(_ref, this.hoverContentForRow(index)); - return this.hilight(index); - } else { - this.hover.hide(); - return this.hilight(); - } - }; - - Line.prototype.hoverContentForRow = function(index) { - var content, j, row, y, _i, _len, _ref; - row = this.data[index]; - content = "<div class='morris-hover-row-label'>" + row.label + "</div>"; - _ref = row.y; - for (j = _i = 0, _len = _ref.length; _i < _len; j = ++_i) { - y = _ref[j]; - content += "<div class='morris-hover-point' style='color: " + (this.colorFor(row, j, 'label')) + "'>\n " + this.options.labels[j] + ":\n " + (this.yLabelFormat(y)) + "\n</div>"; - } - if (typeof this.options.hoverCallback === 'function') { - content = this.options.hoverCallback(index, this.options, content, row.src); - } - return [content, row._x, row._ymax]; - }; - - Line.prototype.generatePaths = function() { - var c, coords, i, r, smooth; - return this.paths = (function() { - var _i, _ref, _ref1, _results; - _results = []; - for (i = _i = 0, _ref = this.options.ykeys.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) { - smooth = typeof this.options.smooth === "boolean" ? this.options.smooth : (_ref1 = this.options.ykeys[i], __indexOf.call(this.options.smooth, _ref1) >= 0); - coords = (function() { - var _j, _len, _ref2, _results1; - _ref2 = this.data; - _results1 = []; - for (_j = 0, _len = _ref2.length; _j < _len; _j++) { - r = _ref2[_j]; - if (r._y[i] !== void 0) { - _results1.push({ - x: r._x, - y: r._y[i] - }); - } - } - return _results1; - }).call(this); - if (this.options.continuousLine) { - coords = (function() { - var _j, _len, _results1; - _results1 = []; - for (_j = 0, _len = coords.length; _j < _len; _j++) { - c = coords[_j]; - if (c.y !== null) { - _results1.push(c); - } - } - return _results1; - })(); - } - if (coords.length > 1) { - _results.push(Morris.Line.createPath(coords, smooth, this.bottom)); - } else { - _results.push(null); - } - } - return _results; - }).call(this); - }; - - Line.prototype.draw = function() { - var _ref; - if ((_ref = this.options.axes) === true || _ref === 'both' || _ref === 'x') { - this.drawXAxis(); - } - this.drawSeries(); - if (this.options.hideHover === false) { - return this.displayHoverForRow(this.data.length - 1); - } - }; - - Line.prototype.drawXAxis = function() { - var drawLabel, l, labels, prevAngleMargin, prevLabelMargin, row, ypos, _i, _len, _results, - _this = this; - ypos = this.bottom + this.options.padding / 2; - prevLabelMargin = null; - prevAngleMargin = null; - drawLabel = function(labelText, xpos) { - var label, labelBox, margin, offset, textBox; - label = _this.drawXAxisLabel(_this.transX(xpos), ypos, labelText); - textBox = label.getBBox(); - label.transform("r" + (-_this.options.xLabelAngle)); - labelBox = label.getBBox(); - label.transform("t0," + (labelBox.height / 2) + "..."); - if (_this.options.xLabelAngle !== 0) { - offset = -0.5 * textBox.width * Math.cos(_this.options.xLabelAngle * Math.PI / 180.0); - label.transform("t" + offset + ",0..."); - } - labelBox = label.getBBox(); - if (((prevLabelMargin == null) || prevLabelMargin >= labelBox.x + labelBox.width || (prevAngleMargin != null) && prevAngleMargin >= labelBox.x) && labelBox.x >= 0 && (labelBox.x + labelBox.width) < _this.el.width()) { - if (_this.options.xLabelAngle !== 0) { - margin = 1.25 * _this.options.gridTextSize / Math.sin(_this.options.xLabelAngle * Math.PI / 180.0); - prevAngleMargin = labelBox.x - margin; - } - return prevLabelMargin = labelBox.x - _this.options.xLabelMargin; - } else { - return label.remove(); - } - }; - if (this.options.parseTime) { - if (this.data.length === 1 && this.options.xLabels === 'auto') { - labels = [[this.data[0].label, this.data[0].x]]; - } else { - labels = Morris.labelSeries(this.xmin, this.xmax, this.width, this.options.xLabels, this.options.xLabelFormat); - } - } else { - labels = (function() { - var _i, _len, _ref, _results; - _ref = this.data; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - row = _ref[_i]; - _results.push([row.label, row.x]); - } - return _results; - }).call(this); - } - labels.reverse(); - _results = []; - for (_i = 0, _len = labels.length; _i < _len; _i++) { - l = labels[_i]; - _results.push(drawLabel(l[0], l[1])); - } - return _results; - }; - - Line.prototype.drawSeries = function() { - var i, _i, _j, _ref, _ref1, _results; - this.seriesPoints = []; - for (i = _i = _ref = this.options.ykeys.length - 1; _ref <= 0 ? _i <= 0 : _i >= 0; i = _ref <= 0 ? ++_i : --_i) { - this._drawLineFor(i); - } - _results = []; - for (i = _j = _ref1 = this.options.ykeys.length - 1; _ref1 <= 0 ? _j <= 0 : _j >= 0; i = _ref1 <= 0 ? ++_j : --_j) { - _results.push(this._drawPointFor(i)); - } - return _results; - }; - - Line.prototype._drawPointFor = function(index) { - var circle, row, _i, _len, _ref, _results; - this.seriesPoints[index] = []; - _ref = this.data; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - row = _ref[_i]; - circle = null; - if (row._y[index] != null) { - circle = this.drawLinePoint(row._x, row._y[index], this.colorFor(row, index, 'point'), index); - } - _results.push(this.seriesPoints[index].push(circle)); - } - return _results; - }; - - Line.prototype._drawLineFor = function(index) { - var path; - path = this.paths[index]; - if (path !== null) { - return this.drawLinePath(path, this.colorFor(null, index, 'line'), index); - } - }; - - Line.createPath = function(coords, smooth, bottom) { - var coord, g, grads, i, ix, lg, path, prevCoord, x1, x2, y1, y2, _i, _len; - path = ""; - if (smooth) { - grads = Morris.Line.gradients(coords); - } - prevCoord = { - y: null - }; - for (i = _i = 0, _len = coords.length; _i < _len; i = ++_i) { - coord = coords[i]; - if (coord.y != null) { - if (prevCoord.y != null) { - if (smooth) { - g = grads[i]; - lg = grads[i - 1]; - ix = (coord.x - prevCoord.x) / 4; - x1 = prevCoord.x + ix; - y1 = Math.min(bottom, prevCoord.y + ix * lg); - x2 = coord.x - ix; - y2 = Math.min(bottom, coord.y - ix * g); - path += "C" + x1 + "," + y1 + "," + x2 + "," + y2 + "," + coord.x + "," + coord.y; - } else { - path += "L" + coord.x + "," + coord.y; - } - } else { - if (!smooth || (grads[i] != null)) { - path += "M" + coord.x + "," + coord.y; - } - } - } - prevCoord = coord; - } - return path; - }; - - Line.gradients = function(coords) { - var coord, grad, i, nextCoord, prevCoord, _i, _len, _results; - grad = function(a, b) { - return (a.y - b.y) / (a.x - b.x); - }; - _results = []; - for (i = _i = 0, _len = coords.length; _i < _len; i = ++_i) { - coord = coords[i]; - if (coord.y != null) { - nextCoord = coords[i + 1] || { - y: null - }; - prevCoord = coords[i - 1] || { - y: null - }; - if ((prevCoord.y != null) && (nextCoord.y != null)) { - _results.push(grad(prevCoord, nextCoord)); - } else if (prevCoord.y != null) { - _results.push(grad(prevCoord, coord)); - } else if (nextCoord.y != null) { - _results.push(grad(coord, nextCoord)); - } else { - _results.push(null); - } - } else { - _results.push(null); - } - } - return _results; - }; - - Line.prototype.hilight = function(index) { - var i, _i, _j, _ref, _ref1; - if (this.prevHilight !== null && this.prevHilight !== index) { - for (i = _i = 0, _ref = this.seriesPoints.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) { - if (this.seriesPoints[i][this.prevHilight]) { - this.seriesPoints[i][this.prevHilight].animate(this.pointShrinkSeries(i)); - } - } - } - if (index !== null && this.prevHilight !== index) { - for (i = _j = 0, _ref1 = this.seriesPoints.length - 1; 0 <= _ref1 ? _j <= _ref1 : _j >= _ref1; i = 0 <= _ref1 ? ++_j : --_j) { - if (this.seriesPoints[i][index]) { - this.seriesPoints[i][index].animate(this.pointGrowSeries(i)); - } - } - } - return this.prevHilight = index; - }; - - Line.prototype.colorFor = function(row, sidx, type) { - if (typeof this.options.lineColors === 'function') { - return this.options.lineColors.call(this, row, sidx, type); - } else if (type === 'point') { - return this.options.pointFillColors[sidx % this.options.pointFillColors.length] || this.options.lineColors[sidx % this.options.lineColors.length]; - } else { - return this.options.lineColors[sidx % this.options.lineColors.length]; - } - }; - - Line.prototype.drawXAxisLabel = function(xPos, yPos, text) { - return this.raphael.text(xPos, yPos, text).attr('font-size', this.options.gridTextSize).attr('font-family', this.options.gridTextFamily).attr('font-weight', this.options.gridTextWeight).attr('fill', this.options.gridTextColor); - }; - - Line.prototype.drawLinePath = function(path, lineColor, lineIndex) { - return this.raphael.path(path).attr('stroke', lineColor).attr('stroke-width', this.lineWidthForSeries(lineIndex)); - }; - - Line.prototype.drawLinePoint = function(xPos, yPos, pointColor, lineIndex) { - return this.raphael.circle(xPos, yPos, this.pointSizeForSeries(lineIndex)).attr('fill', pointColor).attr('stroke-width', this.pointStrokeWidthForSeries(lineIndex)).attr('stroke', this.pointStrokeColorForSeries(lineIndex)); - }; - - Line.prototype.pointStrokeWidthForSeries = function(index) { - return this.options.pointStrokeWidths[index % this.options.pointStrokeWidths.length]; - }; - - Line.prototype.pointStrokeColorForSeries = function(index) { - return this.options.pointStrokeColors[index % this.options.pointStrokeColors.length]; - }; - - Line.prototype.lineWidthForSeries = function(index) { - if (this.options.lineWidth instanceof Array) { - return this.options.lineWidth[index % this.options.lineWidth.length]; - } else { - return this.options.lineWidth; - } - }; - - Line.prototype.pointSizeForSeries = function(index) { - if (this.options.pointSize instanceof Array) { - return this.options.pointSize[index % this.options.pointSize.length]; - } else { - return this.options.pointSize; - } - }; - - Line.prototype.pointGrowSeries = function(index) { - return Raphael.animation({ - r: this.pointSizeForSeries(index) + 3 - }, 25, 'linear'); - }; - - Line.prototype.pointShrinkSeries = function(index) { - return Raphael.animation({ - r: this.pointSizeForSeries(index) - }, 25, 'linear'); - }; - - return Line; - - })(Morris.Grid); - - Morris.labelSeries = function(dmin, dmax, pxwidth, specName, xLabelFormat) { - var d, d0, ddensity, name, ret, s, spec, t, _i, _len, _ref; - ddensity = 200 * (dmax - dmin) / pxwidth; - d0 = new Date(dmin); - spec = Morris.LABEL_SPECS[specName]; - if (spec === void 0) { - _ref = Morris.AUTO_LABEL_ORDER; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - name = _ref[_i]; - s = Morris.LABEL_SPECS[name]; - if (ddensity >= s.span) { - spec = s; - break; - } - } - } - if (spec === void 0) { - spec = Morris.LABEL_SPECS["second"]; - } - if (xLabelFormat) { - spec = $.extend({}, spec, { - fmt: xLabelFormat - }); - } - d = spec.start(d0); - ret = []; - while ((t = d.getTime()) <= dmax) { - if (t >= dmin) { - ret.push([spec.fmt(d), t]); - } - spec.incr(d); - } - return ret; - }; - - minutesSpecHelper = function(interval) { - return { - span: interval * 60 * 1000, - start: function(d) { - return new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours()); - }, - fmt: function(d) { - return "" + (Morris.pad2(d.getHours())) + ":" + (Morris.pad2(d.getMinutes())); - }, - incr: function(d) { - return d.setUTCMinutes(d.getUTCMinutes() + interval); - } - }; - }; - - secondsSpecHelper = function(interval) { - return { - span: interval * 1000, - start: function(d) { - return new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes()); - }, - fmt: function(d) { - return "" + (Morris.pad2(d.getHours())) + ":" + (Morris.pad2(d.getMinutes())) + ":" + (Morris.pad2(d.getSeconds())); - }, - incr: function(d) { - return d.setUTCSeconds(d.getUTCSeconds() + interval); - } - }; - }; - - Morris.LABEL_SPECS = { - "decade": { - span: 172800000000, - start: function(d) { - return new Date(d.getFullYear() - d.getFullYear() % 10, 0, 1); - }, - fmt: function(d) { - return "" + (d.getFullYear()); - }, - incr: function(d) { - return d.setFullYear(d.getFullYear() + 10); - } - }, - "year": { - span: 17280000000, - start: function(d) { - return new Date(d.getFullYear(), 0, 1); - }, - fmt: function(d) { - return "" + (d.getFullYear()); - }, - incr: function(d) { - return d.setFullYear(d.getFullYear() + 1); - } - }, - "month": { - span: 2419200000, - start: function(d) { - return new Date(d.getFullYear(), d.getMonth(), 1); - }, - fmt: function(d) { - return "" + (d.getFullYear()) + "-" + (Morris.pad2(d.getMonth() + 1)); - }, - incr: function(d) { - return d.setMonth(d.getMonth() + 1); - } - }, - "week": { - span: 604800000, - start: function(d) { - return new Date(d.getFullYear(), d.getMonth(), d.getDate()); - }, - fmt: function(d) { - return "" + (d.getFullYear()) + "-" + (Morris.pad2(d.getMonth() + 1)) + "-" + (Morris.pad2(d.getDate())); - }, - incr: function(d) { - return d.setDate(d.getDate() + 7); - } - }, - "day": { - span: 86400000, - start: function(d) { - return new Date(d.getFullYear(), d.getMonth(), d.getDate()); - }, - fmt: function(d) { - return "" + (d.getFullYear()) + "-" + (Morris.pad2(d.getMonth() + 1)) + "-" + (Morris.pad2(d.getDate())); - }, - incr: function(d) { - return d.setDate(d.getDate() + 1); - } - }, - "hour": minutesSpecHelper(60), - "30min": minutesSpecHelper(30), - "15min": minutesSpecHelper(15), - "10min": minutesSpecHelper(10), - "5min": minutesSpecHelper(5), - "minute": minutesSpecHelper(1), - "30sec": secondsSpecHelper(30), - "15sec": secondsSpecHelper(15), - "10sec": secondsSpecHelper(10), - "5sec": secondsSpecHelper(5), - "second": secondsSpecHelper(1) - }; - - Morris.AUTO_LABEL_ORDER = ["decade", "year", "month", "week", "day", "hour", "30min", "15min", "10min", "5min", "minute", "30sec", "15sec", "10sec", "5sec", "second"]; - - Morris.Area = (function(_super) { - var areaDefaults; - - __extends(Area, _super); - - areaDefaults = { - fillOpacity: 'auto', - behaveLikeLine: false - }; - - function Area(options) { - var areaOptions; - if (!(this instanceof Morris.Area)) { - return new Morris.Area(options); - } - areaOptions = $.extend({}, areaDefaults, options); - this.cumulative = !areaOptions.behaveLikeLine; - if (areaOptions.fillOpacity === 'auto') { - areaOptions.fillOpacity = areaOptions.behaveLikeLine ? .8 : 1; - } - Area.__super__.constructor.call(this, areaOptions); - } - - Area.prototype.calcPoints = function() { - var row, total, y, _i, _len, _ref, _results; - _ref = this.data; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - row = _ref[_i]; - row._x = this.transX(row.x); - total = 0; - row._y = (function() { - var _j, _len1, _ref1, _results1; - _ref1 = row.y; - _results1 = []; - for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { - y = _ref1[_j]; - if (this.options.behaveLikeLine) { - _results1.push(this.transY(y)); - } else { - total += y || 0; - _results1.push(this.transY(total)); - } - } - return _results1; - }).call(this); - _results.push(row._ymax = Math.max.apply(Math, row._y)); - } - return _results; - }; - - Area.prototype.drawSeries = function() { - var i, range, _i, _j, _k, _len, _ref, _ref1, _results, _results1, _results2; - this.seriesPoints = []; - if (this.options.behaveLikeLine) { - range = (function() { - _results = []; - for (var _i = 0, _ref = this.options.ykeys.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; 0 <= _ref ? _i++ : _i--){ _results.push(_i); } - return _results; - }).apply(this); - } else { - range = (function() { - _results1 = []; - for (var _j = _ref1 = this.options.ykeys.length - 1; _ref1 <= 0 ? _j <= 0 : _j >= 0; _ref1 <= 0 ? _j++ : _j--){ _results1.push(_j); } - return _results1; - }).apply(this); - } - _results2 = []; - for (_k = 0, _len = range.length; _k < _len; _k++) { - i = range[_k]; - this._drawFillFor(i); - this._drawLineFor(i); - _results2.push(this._drawPointFor(i)); - } - return _results2; - }; - - Area.prototype._drawFillFor = function(index) { - var path; - path = this.paths[index]; - if (path !== null) { - path = path + ("L" + (this.transX(this.xmax)) + "," + this.bottom + "L" + (this.transX(this.xmin)) + "," + this.bottom + "Z"); - return this.drawFilledPath(path, this.fillForSeries(index)); - } - }; - - Area.prototype.fillForSeries = function(i) { - var color; - color = Raphael.rgb2hsl(this.colorFor(this.data[i], i, 'line')); - return Raphael.hsl(color.h, this.options.behaveLikeLine ? color.s * 0.9 : color.s * 0.75, Math.min(0.98, this.options.behaveLikeLine ? color.l * 1.2 : color.l * 1.25)); - }; - - Area.prototype.drawFilledPath = function(path, fill) { - return this.raphael.path(path).attr('fill', fill).attr('fill-opacity', this.options.fillOpacity).attr('stroke', 'none'); - }; - - return Area; - - })(Morris.Line); - - Morris.Bar = (function(_super) { - __extends(Bar, _super); - - function Bar(options) { - this.onHoverOut = __bind(this.onHoverOut, this); - this.onHoverMove = __bind(this.onHoverMove, this); - this.onGridClick = __bind(this.onGridClick, this); - if (!(this instanceof Morris.Bar)) { - return new Morris.Bar(options); - } - Bar.__super__.constructor.call(this, $.extend({}, options, { - parseTime: false - })); - } - - Bar.prototype.init = function() { - this.cumulative = this.options.stacked; - if (this.options.hideHover !== 'always') { - this.hover = new Morris.Hover({ - parent: this.el - }); - this.on('hovermove', this.onHoverMove); - this.on('hoverout', this.onHoverOut); - return this.on('gridclick', this.onGridClick); - } - }; - - Bar.prototype.defaults = { - barSizeRatio: 0.75, - barGap: 3, - barColors: ['#0b62a4', '#7a92a3', '#4da74d', '#afd8f8', '#edc240', '#cb4b4b', '#9440ed'], - barOpacity: 1.0, - barRadius: [0, 0, 0, 0], - xLabelMargin: 50 - }; - - Bar.prototype.calc = function() { - var _ref; - this.calcBars(); - if (this.options.hideHover === false) { - return (_ref = this.hover).update.apply(_ref, this.hoverContentForRow(this.data.length - 1)); - } - }; - - Bar.prototype.calcBars = function() { - var idx, row, y, _i, _len, _ref, _results; - _ref = this.data; - _results = []; - for (idx = _i = 0, _len = _ref.length; _i < _len; idx = ++_i) { - row = _ref[idx]; - row._x = this.left + this.width * (idx + 0.5) / this.data.length; - _results.push(row._y = (function() { - var _j, _len1, _ref1, _results1; - _ref1 = row.y; - _results1 = []; - for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { - y = _ref1[_j]; - if (y != null) { - _results1.push(this.transY(y)); - } else { - _results1.push(null); - } - } - return _results1; - }).call(this)); - } - return _results; - }; - - Bar.prototype.draw = function() { - var _ref; - if ((_ref = this.options.axes) === true || _ref === 'both' || _ref === 'x') { - this.drawXAxis(); - } - return this.drawSeries(); - }; - - Bar.prototype.drawXAxis = function() { - var i, label, labelBox, margin, offset, prevAngleMargin, prevLabelMargin, row, textBox, ypos, _i, _ref, _results; - ypos = this.bottom + (this.options.xAxisLabelTopPadding || this.options.padding / 2); - prevLabelMargin = null; - prevAngleMargin = null; - _results = []; - for (i = _i = 0, _ref = this.data.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) { - row = this.data[this.data.length - 1 - i]; - label = this.drawXAxisLabel(row._x, ypos, row.label); - textBox = label.getBBox(); - label.transform("r" + (-this.options.xLabelAngle)); - labelBox = label.getBBox(); - label.transform("t0," + (labelBox.height / 2) + "..."); - if (this.options.xLabelAngle !== 0) { - offset = -0.5 * textBox.width * Math.cos(this.options.xLabelAngle * Math.PI / 180.0); - label.transform("t" + offset + ",0..."); - } - if (((prevLabelMargin == null) || prevLabelMargin >= labelBox.x + labelBox.width || (prevAngleMargin != null) && prevAngleMargin >= labelBox.x) && labelBox.x >= 0 && (labelBox.x + labelBox.width) < this.el.width()) { - if (this.options.xLabelAngle !== 0) { - margin = 1.25 * this.options.gridTextSize / Math.sin(this.options.xLabelAngle * Math.PI / 180.0); - prevAngleMargin = labelBox.x - margin; - } - _results.push(prevLabelMargin = labelBox.x - this.options.xLabelMargin); - } else { - _results.push(label.remove()); - } - } - return _results; - }; - - Bar.prototype.drawSeries = function() { - var barWidth, bottom, groupWidth, idx, lastTop, left, leftPadding, numBars, row, sidx, size, top, ypos, zeroPos; - groupWidth = this.width / this.options.data.length; - numBars = this.options.stacked != null ? 1 : this.options.ykeys.length; - barWidth = (groupWidth * this.options.barSizeRatio - this.options.barGap * (numBars - 1)) / numBars; - leftPadding = groupWidth * (1 - this.options.barSizeRatio) / 2; - zeroPos = this.ymin <= 0 && this.ymax >= 0 ? this.transY(0) : null; - return this.bars = (function() { - var _i, _len, _ref, _results; - _ref = this.data; - _results = []; - for (idx = _i = 0, _len = _ref.length; _i < _len; idx = ++_i) { - row = _ref[idx]; - lastTop = 0; - _results.push((function() { - var _j, _len1, _ref1, _results1; - _ref1 = row._y; - _results1 = []; - for (sidx = _j = 0, _len1 = _ref1.length; _j < _len1; sidx = ++_j) { - ypos = _ref1[sidx]; - if (ypos !== null) { - if (zeroPos) { - top = Math.min(ypos, zeroPos); - bottom = Math.max(ypos, zeroPos); - } else { - top = ypos; - bottom = this.bottom; - } - left = this.left + idx * groupWidth + leftPadding; - if (!this.options.stacked) { - left += sidx * (barWidth + this.options.barGap); - } - size = bottom - top; - if (this.options.stacked) { - top -= lastTop; - } - this.drawBar(left, top, barWidth, size, this.colorFor(row, sidx, 'bar'), this.options.barOpacity, this.options.barRadius); - _results1.push(lastTop += size); - } else { - _results1.push(null); - } - } - return _results1; - }).call(this)); - } - return _results; - }).call(this); - }; - - Bar.prototype.colorFor = function(row, sidx, type) { - var r, s; - if (typeof this.options.barColors === 'function') { - r = { - x: row.x, - y: row.y[sidx], - label: row.label - }; - s = { - index: sidx, - key: this.options.ykeys[sidx], - label: this.options.labels[sidx] - }; - return this.options.barColors.call(this, r, s, type); - } else { - return this.options.barColors[sidx % this.options.barColors.length]; - } - }; - - Bar.prototype.hitTest = function(x) { - if (this.data.length === 0) { - return null; - } - x = Math.max(Math.min(x, this.right), this.left); - return Math.min(this.data.length - 1, Math.floor((x - this.left) / (this.width / this.data.length))); - }; - - Bar.prototype.onGridClick = function(x, y) { - var index; - index = this.hitTest(x); - return this.fire('click', index, this.data[index].src, x, y); - }; - - Bar.prototype.onHoverMove = function(x, y) { - var index, _ref; - index = this.hitTest(x); - return (_ref = this.hover).update.apply(_ref, this.hoverContentForRow(index)); - }; - - Bar.prototype.onHoverOut = function() { - if (this.options.hideHover !== false) { - return this.hover.hide(); - } - }; - - Bar.prototype.hoverContentForRow = function(index) { - var content, j, row, x, y, _i, _len, _ref; - row = this.data[index]; - content = "<div class='morris-hover-row-label'>" + row.label + "</div>"; - _ref = row.y; - for (j = _i = 0, _len = _ref.length; _i < _len; j = ++_i) { - y = _ref[j]; - content += "<div class='morris-hover-point' style='color: " + (this.colorFor(row, j, 'label')) + "'>\n " + this.options.labels[j] + ":\n " + (this.yLabelFormat(y)) + "\n</div>"; - } - if (typeof this.options.hoverCallback === 'function') { - content = this.options.hoverCallback(index, this.options, content, row.src); - } - x = this.left + (index + 0.5) * this.width / this.data.length; - return [content, x]; - }; - - Bar.prototype.drawXAxisLabel = function(xPos, yPos, text) { - var label; - return label = this.raphael.text(xPos, yPos, text).attr('font-size', this.options.gridTextSize).attr('font-family', this.options.gridTextFamily).attr('font-weight', this.options.gridTextWeight).attr('fill', this.options.gridTextColor); - }; - - Bar.prototype.drawBar = function(xPos, yPos, width, height, barColor, opacity, radiusArray) { - var maxRadius, path; - maxRadius = Math.max.apply(Math, radiusArray); - if (maxRadius === 0 || maxRadius > height) { - path = this.raphael.rect(xPos, yPos, width, height); - } else { - path = this.raphael.path(this.roundedRect(xPos, yPos, width, height, radiusArray)); - } - return path.attr('fill', barColor).attr('fill-opacity', opacity).attr('stroke', 'none'); - }; - - Bar.prototype.roundedRect = function(x, y, w, h, r) { - if (r == null) { - r = [0, 0, 0, 0]; - } - return ["M", x, r[0] + y, "Q", x, y, x + r[0], y, "L", x + w - r[1], y, "Q", x + w, y, x + w, y + r[1], "L", x + w, y + h - r[2], "Q", x + w, y + h, x + w - r[2], y + h, "L", x + r[3], y + h, "Q", x, y + h, x, y + h - r[3], "Z"]; - }; - - return Bar; - - })(Morris.Grid); - - Morris.Donut = (function(_super) { - __extends(Donut, _super); - - Donut.prototype.defaults = { - colors: ['#0B62A4', '#3980B5', '#679DC6', '#95BBD7', '#B0CCE1', '#095791', '#095085', '#083E67', '#052C48', '#042135'], - backgroundColor: '#FFFFFF', - labelColor: '#000000', - formatter: Morris.commas, - resize: false - }; - - function Donut(options) { - this.resizeHandler = __bind(this.resizeHandler, this); - this.select = __bind(this.select, this); - this.click = __bind(this.click, this); - var _this = this; - if (!(this instanceof Morris.Donut)) { - return new Morris.Donut(options); - } - this.options = $.extend({}, this.defaults, options); - if (typeof options.element === 'string') { - this.el = $(document.getElementById(options.element)); - } else { - this.el = $(options.element); - } - if (this.el === null || this.el.length === 0) { - throw new Error("Graph placeholder not found."); - } - if (options.data === void 0 || options.data.length === 0) { - return; - } - this.raphael = new Raphael(this.el[0]); - if (this.options.resize) { - $(window).bind('resize', function(evt) { - if (_this.timeoutId != null) { - window.clearTimeout(_this.timeoutId); - } - return _this.timeoutId = window.setTimeout(_this.resizeHandler, 100); - }); - } - this.setData(options.data); - } - - Donut.prototype.redraw = function() { - var C, cx, cy, i, idx, last, max_value, min, next, seg, total, value, w, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2, _results; - this.raphael.clear(); - cx = this.el.width() / 2; - cy = this.el.height() / 2; - w = (Math.min(cx, cy) - 10) / 3; - total = 0; - _ref = this.values; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - value = _ref[_i]; - total += value; - } - min = 5 / (2 * w); - C = 1.9999 * Math.PI - min * this.data.length; - last = 0; - idx = 0; - this.segments = []; - _ref1 = this.values; - for (i = _j = 0, _len1 = _ref1.length; _j < _len1; i = ++_j) { - value = _ref1[i]; - next = last + min + C * (value / total); - seg = new Morris.DonutSegment(cx, cy, w * 2, w, last, next, this.data[i].color || this.options.colors[idx % this.options.colors.length], this.options.backgroundColor, idx, this.raphael); - seg.render(); - this.segments.push(seg); - seg.on('hover', this.select); - seg.on('click', this.click); - last = next; - idx += 1; - } - this.text1 = this.drawEmptyDonutLabel(cx, cy - 10, this.options.labelColor, 15, 800); - this.text2 = this.drawEmptyDonutLabel(cx, cy + 10, this.options.labelColor, 14); - max_value = Math.max.apply(Math, this.values); - idx = 0; - _ref2 = this.values; - _results = []; - for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) { - value = _ref2[_k]; - if (value === max_value) { - this.select(idx); - break; - } - _results.push(idx += 1); - } - return _results; - }; - - Donut.prototype.setData = function(data) { - var row; - this.data = data; - this.values = (function() { - var _i, _len, _ref, _results; - _ref = this.data; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - row = _ref[_i]; - _results.push(parseFloat(row.value)); - } - return _results; - }).call(this); - return this.redraw(); - }; - - Donut.prototype.click = function(idx) { - return this.fire('click', idx, this.data[idx]); - }; - - Donut.prototype.select = function(idx) { - var row, s, segment, _i, _len, _ref; - _ref = this.segments; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - s = _ref[_i]; - s.deselect(); - } - segment = this.segments[idx]; - segment.select(); - row = this.data[idx]; - return this.setLabels(row.label, this.options.formatter(row.value, row)); - }; - - Donut.prototype.setLabels = function(label1, label2) { - var inner, maxHeightBottom, maxHeightTop, maxWidth, text1bbox, text1scale, text2bbox, text2scale; - inner = (Math.min(this.el.width() / 2, this.el.height() / 2) - 10) * 2 / 3; - maxWidth = 1.8 * inner; - maxHeightTop = inner / 2; - maxHeightBottom = inner / 3; - this.text1.attr({ - text: label1, - transform: '' - }); - text1bbox = this.text1.getBBox(); - text1scale = Math.min(maxWidth / text1bbox.width, maxHeightTop / text1bbox.height); - this.text1.attr({ - transform: "S" + text1scale + "," + text1scale + "," + (text1bbox.x + text1bbox.width / 2) + "," + (text1bbox.y + text1bbox.height) - }); - this.text2.attr({ - text: label2, - transform: '' - }); - text2bbox = this.text2.getBBox(); - text2scale = Math.min(maxWidth / text2bbox.width, maxHeightBottom / text2bbox.height); - return this.text2.attr({ - transform: "S" + text2scale + "," + text2scale + "," + (text2bbox.x + text2bbox.width / 2) + "," + text2bbox.y - }); - }; - - Donut.prototype.drawEmptyDonutLabel = function(xPos, yPos, color, fontSize, fontWeight) { - var text; - text = this.raphael.text(xPos, yPos, '').attr('font-size', fontSize).attr('fill', color); - if (fontWeight != null) { - text.attr('font-weight', fontWeight); - } - return text; - }; - - Donut.prototype.resizeHandler = function() { - this.timeoutId = null; - this.raphael.setSize(this.el.width(), this.el.height()); - return this.redraw(); - }; - - return Donut; - - })(Morris.EventEmitter); - - Morris.DonutSegment = (function(_super) { - __extends(DonutSegment, _super); - - function DonutSegment(cx, cy, inner, outer, p0, p1, color, backgroundColor, index, raphael) { - this.cx = cx; - this.cy = cy; - this.inner = inner; - this.outer = outer; - this.color = color; - this.backgroundColor = backgroundColor; - this.index = index; - this.raphael = raphael; - this.deselect = __bind(this.deselect, this); - this.select = __bind(this.select, this); - this.sin_p0 = Math.sin(p0); - this.cos_p0 = Math.cos(p0); - this.sin_p1 = Math.sin(p1); - this.cos_p1 = Math.cos(p1); - this.is_long = (p1 - p0) > Math.PI ? 1 : 0; - this.path = this.calcSegment(this.inner + 3, this.inner + this.outer - 5); - this.selectedPath = this.calcSegment(this.inner + 3, this.inner + this.outer); - this.hilight = this.calcArc(this.inner); - } - - DonutSegment.prototype.calcArcPoints = function(r) { - return [this.cx + r * this.sin_p0, this.cy + r * this.cos_p0, this.cx + r * this.sin_p1, this.cy + r * this.cos_p1]; - }; - - DonutSegment.prototype.calcSegment = function(r1, r2) { - var ix0, ix1, iy0, iy1, ox0, ox1, oy0, oy1, _ref, _ref1; - _ref = this.calcArcPoints(r1), ix0 = _ref[0], iy0 = _ref[1], ix1 = _ref[2], iy1 = _ref[3]; - _ref1 = this.calcArcPoints(r2), ox0 = _ref1[0], oy0 = _ref1[1], ox1 = _ref1[2], oy1 = _ref1[3]; - return ("M" + ix0 + "," + iy0) + ("A" + r1 + "," + r1 + ",0," + this.is_long + ",0," + ix1 + "," + iy1) + ("L" + ox1 + "," + oy1) + ("A" + r2 + "," + r2 + ",0," + this.is_long + ",1," + ox0 + "," + oy0) + "Z"; - }; - - DonutSegment.prototype.calcArc = function(r) { - var ix0, ix1, iy0, iy1, _ref; - _ref = this.calcArcPoints(r), ix0 = _ref[0], iy0 = _ref[1], ix1 = _ref[2], iy1 = _ref[3]; - return ("M" + ix0 + "," + iy0) + ("A" + r + "," + r + ",0," + this.is_long + ",0," + ix1 + "," + iy1); - }; - - DonutSegment.prototype.render = function() { - var _this = this; - this.arc = this.drawDonutArc(this.hilight, this.color); - return this.seg = this.drawDonutSegment(this.path, this.color, this.backgroundColor, function() { - return _this.fire('hover', _this.index); - }, function() { - return _this.fire('click', _this.index); - }); - }; - - DonutSegment.prototype.drawDonutArc = function(path, color) { - return this.raphael.path(path).attr({ - stroke: color, - 'stroke-width': 2, - opacity: 0 - }); - }; - - DonutSegment.prototype.drawDonutSegment = function(path, fillColor, strokeColor, hoverFunction, clickFunction) { - return this.raphael.path(path).attr({ - fill: fillColor, - stroke: strokeColor, - 'stroke-width': 3 - }).hover(hoverFunction).click(clickFunction); - }; - - DonutSegment.prototype.select = function() { - if (!this.selected) { - this.seg.animate({ - path: this.selectedPath - }, 150, '<>'); - this.arc.animate({ - opacity: 1 - }, 150, '<>'); - return this.selected = true; - } - }; - - DonutSegment.prototype.deselect = function() { - if (this.selected) { - this.seg.animate({ - path: this.path - }, 150, '<>'); - this.arc.animate({ - opacity: 0 - }, 150, '<>'); - return this.selected = false; - } - }; - - return DonutSegment; - - })(Morris.EventEmitter); - -}).call(this); diff --git a/assets/js/plugins/morris/raphael-2.1.0.min.js b/assets/js/plugins/morris/raphael-2.1.0.min.js deleted file mode 100644 index d30dbad8..00000000 --- a/assets/js/plugins/morris/raphael-2.1.0.min.js +++ /dev/null @@ -1,10 +0,0 @@ -// ┌────────────────────────────────────────────────────────────────────┐ \\ -// │ Raphaël 2.1.0 - JavaScript Vector Library │ \\ -// ├────────────────────────────────────────────────────────────────────┤ \\ -// │ Copyright © 2008-2012 Dmitry Baranovskiy (http://raphaeljs.com) │ \\ -// │ Copyright © 2008-2012 Sencha Labs (http://sencha.com) │ \\ -// ├────────────────────────────────────────────────────────────────────┤ \\ -// │ Licensed under the MIT (http://raphaeljs.com/license.html) license.│ \\ -// └────────────────────────────────────────────────────────────────────┘ \\ - -(function(a){var b="0.3.4",c="hasOwnProperty",d=/[\.\/]/,e="*",f=function(){},g=function(a,b){return a-b},h,i,j={n:{}},k=function(a,b){var c=j,d=i,e=Array.prototype.slice.call(arguments,2),f=k.listeners(a),l=0,m=!1,n,o=[],p={},q=[],r=h,s=[];h=a,i=0;for(var t=0,u=f.length;t<u;t++)"zIndex"in f[t]&&(o.push(f[t].zIndex),f[t].zIndex<0&&(p[f[t].zIndex]=f[t]));o.sort(g);while(o[l]<0){n=p[o[l++]],q.push(n.apply(b,e));if(i){i=d;return q}}for(t=0;t<u;t++){n=f[t];if("zIndex"in n)if(n.zIndex==o[l]){q.push(n.apply(b,e));if(i)break;do{l++,n=p[o[l]],n&&q.push(n.apply(b,e));if(i)break}while(n)}else p[n.zIndex]=n;else{q.push(n.apply(b,e));if(i)break}}i=d,h=r;return q.length?q:null};k.listeners=function(a){var b=a.split(d),c=j,f,g,h,i,k,l,m,n,o=[c],p=[];for(i=0,k=b.length;i<k;i++){n=[];for(l=0,m=o.length;l<m;l++){c=o[l].n,g=[c[b[i]],c[e]],h=2;while(h--)f=g[h],f&&(n.push(f),p=p.concat(f.f||[]))}o=n}return p},k.on=function(a,b){var c=a.split(d),e=j;for(var g=0,h=c.length;g<h;g++)e=e.n,!e[c[g]]&&(e[c[g]]={n:{}}),e=e[c[g]];e.f=e.f||[];for(g=0,h=e.f.length;g<h;g++)if(e.f[g]==b)return f;e.f.push(b);return function(a){+a==+a&&(b.zIndex=+a)}},k.stop=function(){i=1},k.nt=function(a){if(a)return(new RegExp("(?:\\.|\\/|^)"+a+"(?:\\.|\\/|$)")).test(h);return h},k.off=k.unbind=function(a,b){var f=a.split(d),g,h,i,k,l,m,n,o=[j];for(k=0,l=f.length;k<l;k++)for(m=0;m<o.length;m+=i.length-2){i=[m,1],g=o[m].n;if(f[k]!=e)g[f[k]]&&i.push(g[f[k]]);else for(h in g)g[c](h)&&i.push(g[h]);o.splice.apply(o,i)}for(k=0,l=o.length;k<l;k++){g=o[k];while(g.n){if(b){if(g.f){for(m=0,n=g.f.length;m<n;m++)if(g.f[m]==b){g.f.splice(m,1);break}!g.f.length&&delete g.f}for(h in g.n)if(g.n[c](h)&&g.n[h].f){var p=g.n[h].f;for(m=0,n=p.length;m<n;m++)if(p[m]==b){p.splice(m,1);break}!p.length&&delete g.n[h].f}}else{delete g.f;for(h in g.n)g.n[c](h)&&g.n[h].f&&delete g.n[h].f}g=g.n}}},k.once=function(a,b){var c=function(){var d=b.apply(this,arguments);k.unbind(a,c);return d};return k.on(a,c)},k.version=b,k.toString=function(){return"You are running Eve "+b},typeof module!="undefined"&&module.exports?module.exports=k:typeof define!="undefined"?define("eve",[],function(){return k}):a.eve=k})(this),function(){function cF(a){for(var b=0;b<cy.length;b++)cy[b].el.paper==a&&cy.splice(b--,1)}function cE(b,d,e,f,h,i){e=Q(e);var j,k,l,m=[],o,p,q,t=b.ms,u={},v={},w={};if(f)for(y=0,z=cy.length;y<z;y++){var x=cy[y];if(x.el.id==d.id&&x.anim==b){x.percent!=e?(cy.splice(y,1),l=1):k=x,d.attr(x.totalOrigin);break}}else f=+v;for(var y=0,z=b.percents.length;y<z;y++){if(b.percents[y]==e||b.percents[y]>f*b.top){e=b.percents[y],p=b.percents[y-1]||0,t=t/b.top*(e-p),o=b.percents[y+1],j=b.anim[e];break}f&&d.attr(b.anim[b.percents[y]])}if(!!j){if(!k){for(var A in j)if(j[g](A))if(U[g](A)||d.paper.customAttributes[g](A)){u[A]=d.attr(A),u[A]==null&&(u[A]=T[A]),v[A]=j[A];switch(U[A]){case C:w[A]=(v[A]-u[A])/t;break;case"colour":u[A]=a.getRGB(u[A]);var B=a.getRGB(v[A]);w[A]={r:(B.r-u[A].r)/t,g:(B.g-u[A].g)/t,b:(B.b-u[A].b)/t};break;case"path":var D=bR(u[A],v[A]),E=D[1];u[A]=D[0],w[A]=[];for(y=0,z=u[A].length;y<z;y++){w[A][y]=[0];for(var F=1,G=u[A][y].length;F<G;F++)w[A][y][F]=(E[y][F]-u[A][y][F])/t}break;case"transform":var H=d._,I=ca(H[A],v[A]);if(I){u[A]=I.from,v[A]=I.to,w[A]=[],w[A].real=!0;for(y=0,z=u[A].length;y<z;y++){w[A][y]=[u[A][y][0]];for(F=1,G=u[A][y].length;F<G;F++)w[A][y][F]=(v[A][y][F]-u[A][y][F])/t}}else{var J=d.matrix||new cb,K={_:{transform:H.transform},getBBox:function(){return d.getBBox(1)}};u[A]=[J.a,J.b,J.c,J.d,J.e,J.f],b$(K,v[A]),v[A]=K._.transform,w[A]=[(K.matrix.a-J.a)/t,(K.matrix.b-J.b)/t,(K.matrix.c-J.c)/t,(K.matrix.d-J.d)/t,(K.matrix.e-J.e)/t,(K.matrix.f-J.f)/t]}break;case"csv":var L=r(j[A])[s](c),M=r(u[A])[s](c);if(A=="clip-rect"){u[A]=M,w[A]=[],y=M.length;while(y--)w[A][y]=(L[y]-u[A][y])/t}v[A]=L;break;default:L=[][n](j[A]),M=[][n](u[A]),w[A]=[],y=d.paper.customAttributes[A].length;while(y--)w[A][y]=((L[y]||0)-(M[y]||0))/t}}var O=j.easing,P=a.easing_formulas[O];if(!P){P=r(O).match(N);if(P&&P.length==5){var R=P;P=function(a){return cC(a,+R[1],+R[2],+R[3],+R[4],t)}}else P=bf}q=j.start||b.start||+(new Date),x={anim:b,percent:e,timestamp:q,start:q+(b.del||0),status:0,initstatus:f||0,stop:!1,ms:t,easing:P,from:u,diff:w,to:v,el:d,callback:j.callback,prev:p,next:o,repeat:i||b.times,origin:d.attr(),totalOrigin:h},cy.push(x);if(f&&!k&&!l){x.stop=!0,x.start=new Date-t*f;if(cy.length==1)return cA()}l&&(x.start=new Date-x.ms*f),cy.length==1&&cz(cA)}else k.initstatus=f,k.start=new Date-k.ms*f;eve("raphael.anim.start."+d.id,d,b)}}function cD(a,b){var c=[],d={};this.ms=b,this.times=1;if(a){for(var e in a)a[g](e)&&(d[Q(e)]=a[e],c.push(Q(e)));c.sort(bd)}this.anim=d,this.top=c[c.length-1],this.percents=c}function cC(a,b,c,d,e,f){function o(a,b){var c,d,e,f,j,k;for(e=a,k=0;k<8;k++){f=m(e)-a;if(z(f)<b)return e;j=(3*i*e+2*h)*e+g;if(z(j)<1e-6)break;e=e-f/j}c=0,d=1,e=a;if(e<c)return c;if(e>d)return d;while(c<d){f=m(e);if(z(f-a)<b)return e;a>f?c=e:d=e,e=(d-c)/2+c}return e}function n(a,b){var c=o(a,b);return((l*c+k)*c+j)*c}function m(a){return((i*a+h)*a+g)*a}var g=3*b,h=3*(d-b)-g,i=1-g-h,j=3*c,k=3*(e-c)-j,l=1-j-k;return n(a,1/(200*f))}function cq(){return this.x+q+this.y+q+this.width+" × "+this.height}function cp(){return this.x+q+this.y}function cb(a,b,c,d,e,f){a!=null?(this.a=+a,this.b=+b,this.c=+c,this.d=+d,this.e=+e,this.f=+f):(this.a=1,this.b=0,this.c=0,this.d=1,this.e=0,this.f=0)}function bH(b,c,d){b=a._path2curve(b),c=a._path2curve(c);var e,f,g,h,i,j,k,l,m,n,o=d?0:[];for(var p=0,q=b.length;p<q;p++){var r=b[p];if(r[0]=="M")e=i=r[1],f=j=r[2];else{r[0]=="C"?(m=[e,f].concat(r.slice(1)),e=m[6],f=m[7]):(m=[e,f,e,f,i,j,i,j],e=i,f=j);for(var s=0,t=c.length;s<t;s++){var u=c[s];if(u[0]=="M")g=k=u[1],h=l=u[2];else{u[0]=="C"?(n=[g,h].concat(u.slice(1)),g=n[6],h=n[7]):(n=[g,h,g,h,k,l,k,l],g=k,h=l);var v=bG(m,n,d);if(d)o+=v;else{for(var w=0,x=v.length;w<x;w++)v[w].segment1=p,v[w].segment2=s,v[w].bez1=m,v[w].bez2=n;o=o.concat(v)}}}}}return o}function bG(b,c,d){var e=a.bezierBBox(b),f=a.bezierBBox(c);if(!a.isBBoxIntersect(e,f))return d?0:[];var g=bB.apply(0,b),h=bB.apply(0,c),i=~~(g/5),j=~~(h/5),k=[],l=[],m={},n=d?0:[];for(var o=0;o<i+1;o++){var p=a.findDotsAtSegment.apply(a,b.concat(o/i));k.push({x:p.x,y:p.y,t:o/i})}for(o=0;o<j+1;o++)p=a.findDotsAtSegment.apply(a,c.concat(o/j)),l.push({x:p.x,y:p.y,t:o/j});for(o=0;o<i;o++)for(var q=0;q<j;q++){var r=k[o],s=k[o+1],t=l[q],u=l[q+1],v=z(s.x-r.x)<.001?"y":"x",w=z(u.x-t.x)<.001?"y":"x",x=bD(r.x,r.y,s.x,s.y,t.x,t.y,u.x,u.y);if(x){if(m[x.x.toFixed(4)]==x.y.toFixed(4))continue;m[x.x.toFixed(4)]=x.y.toFixed(4);var y=r.t+z((x[v]-r[v])/(s[v]-r[v]))*(s.t-r.t),A=t.t+z((x[w]-t[w])/(u[w]-t[w]))*(u.t-t.t);y>=0&&y<=1&&A>=0&&A<=1&&(d?n++:n.push({x:x.x,y:x.y,t1:y,t2:A}))}}return n}function bF(a,b){return bG(a,b,1)}function bE(a,b){return bG(a,b)}function bD(a,b,c,d,e,f,g,h){if(!(x(a,c)<y(e,g)||y(a,c)>x(e,g)||x(b,d)<y(f,h)||y(b,d)>x(f,h))){var i=(a*d-b*c)*(e-g)-(a-c)*(e*h-f*g),j=(a*d-b*c)*(f-h)-(b-d)*(e*h-f*g),k=(a-c)*(f-h)-(b-d)*(e-g);if(!k)return;var l=i/k,m=j/k,n=+l.toFixed(2),o=+m.toFixed(2);if(n<+y(a,c).toFixed(2)||n>+x(a,c).toFixed(2)||n<+y(e,g).toFixed(2)||n>+x(e,g).toFixed(2)||o<+y(b,d).toFixed(2)||o>+x(b,d).toFixed(2)||o<+y(f,h).toFixed(2)||o>+x(f,h).toFixed(2))return;return{x:l,y:m}}}function bC(a,b,c,d,e,f,g,h,i){if(!(i<0||bB(a,b,c,d,e,f,g,h)<i)){var j=1,k=j/2,l=j-k,m,n=.01;m=bB(a,b,c,d,e,f,g,h,l);while(z(m-i)>n)k/=2,l+=(m<i?1:-1)*k,m=bB(a,b,c,d,e,f,g,h,l);return l}}function bB(a,b,c,d,e,f,g,h,i){i==null&&(i=1),i=i>1?1:i<0?0:i;var j=i/2,k=12,l=[-0.1252,.1252,-0.3678,.3678,-0.5873,.5873,-0.7699,.7699,-0.9041,.9041,-0.9816,.9816],m=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],n=0;for(var o=0;o<k;o++){var p=j*l[o]+j,q=bA(p,a,c,e,g),r=bA(p,b,d,f,h),s=q*q+r*r;n+=m[o]*w.sqrt(s)}return j*n}function bA(a,b,c,d,e){var f=-3*b+9*c-9*d+3*e,g=a*f+6*b-12*c+6*d;return a*g-3*b+3*c}function by(a,b){var c=[];for(var d=0,e=a.length;e-2*!b>d;d+=2){var f=[{x:+a[d-2],y:+a[d-1]},{x:+a[d],y:+a[d+1]},{x:+a[d+2],y:+a[d+3]},{x:+a[d+4],y:+a[d+5]}];b?d?e-4==d?f[3]={x:+a[0],y:+a[1]}:e-2==d&&(f[2]={x:+a[0],y:+a[1]},f[3]={x:+a[2],y:+a[3]}):f[0]={x:+a[e-2],y:+a[e-1]}:e-4==d?f[3]=f[2]:d||(f[0]={x:+a[d],y:+a[d+1]}),c.push(["C",(-f[0].x+6*f[1].x+f[2].x)/6,(-f[0].y+6*f[1].y+f[2].y)/6,(f[1].x+6*f[2].x-f[3].x)/6,(f[1].y+6*f[2].y-f[3].y)/6,f[2].x,f[2].y])}return c}function bx(){return this.hex}function bv(a,b,c){function d(){var e=Array.prototype.slice.call(arguments,0),f=e.join("␀"),h=d.cache=d.cache||{},i=d.count=d.count||[];if(h[g](f)){bu(i,f);return c?c(h[f]):h[f]}i.length>=1e3&&delete h[i.shift()],i.push(f),h[f]=a[m](b,e);return c?c(h[f]):h[f]}return d}function bu(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return a.push(a.splice(c,1)[0])}function bm(a){if(Object(a)!==a)return a;var b=new a.constructor;for(var c in a)a[g](c)&&(b[c]=bm(a[c]));return b}function a(c){if(a.is(c,"function"))return b?c():eve.on("raphael.DOMload",c);if(a.is(c,E))return a._engine.create[m](a,c.splice(0,3+a.is(c[0],C))).add(c);var d=Array.prototype.slice.call(arguments,0);if(a.is(d[d.length-1],"function")){var e=d.pop();return b?e.call(a._engine.create[m](a,d)):eve.on("raphael.DOMload",function(){e.call(a._engine.create[m](a,d))})}return a._engine.create[m](a,arguments)}a.version="2.1.0",a.eve=eve;var b,c=/[, ]+/,d={circle:1,rect:1,path:1,ellipse:1,text:1,image:1},e=/\{(\d+)\}/g,f="prototype",g="hasOwnProperty",h={doc:document,win:window},i={was:Object.prototype[g].call(h.win,"Raphael"),is:h.win.Raphael},j=function(){this.ca=this.customAttributes={}},k,l="appendChild",m="apply",n="concat",o="createTouch"in h.doc,p="",q=" ",r=String,s="split",t="click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend touchcancel"[s](q),u={mousedown:"touchstart",mousemove:"touchmove",mouseup:"touchend"},v=r.prototype.toLowerCase,w=Math,x=w.max,y=w.min,z=w.abs,A=w.pow,B=w.PI,C="number",D="string",E="array",F="toString",G="fill",H=Object.prototype.toString,I={},J="push",K=a._ISURL=/^url\(['"]?([^\)]+?)['"]?\)$/i,L=/^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgba?\(\s*([\d\.]+%?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+%?(?:\s*,\s*[\d\.]+%?)?)\s*\)|hsba?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\)|hsla?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\))\s*$/i,M={NaN:1,Infinity:1,"-Infinity":1},N=/^(?:cubic-)?bezier\(([^,]+),([^,]+),([^,]+),([^\)]+)\)/,O=w.round,P="setAttribute",Q=parseFloat,R=parseInt,S=r.prototype.toUpperCase,T=a._availableAttrs={"arrow-end":"none","arrow-start":"none",blur:0,"clip-rect":"0 0 1e9 1e9",cursor:"default",cx:0,cy:0,fill:"#fff","fill-opacity":1,font:'10px "Arial"',"font-family":'"Arial"',"font-size":"10","font-style":"normal","font-weight":400,gradient:0,height:0,href:"http://raphaeljs.com/","letter-spacing":0,opacity:1,path:"M0,0",r:0,rx:0,ry:0,src:"",stroke:"#000","stroke-dasharray":"","stroke-linecap":"butt","stroke-linejoin":"butt","stroke-miterlimit":0,"stroke-opacity":1,"stroke-width":1,target:"_blank","text-anchor":"middle",title:"Raphael",transform:"",width:0,x:0,y:0},U=a._availableAnimAttrs={blur:C,"clip-rect":"csv",cx:C,cy:C,fill:"colour","fill-opacity":C,"font-size":C,height:C,opacity:C,path:"path",r:C,rx:C,ry:C,stroke:"colour","stroke-opacity":C,"stroke-width":C,transform:"transform",width:C,x:C,y:C},V=/[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]/g,W=/[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/,X={hs:1,rg:1},Y=/,?([achlmqrstvxz]),?/gi,Z=/([achlmrqstvz])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/ig,$=/([rstm])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/ig,_=/(-?\d*\.?\d*(?:e[\-+]?\d+)?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/ig,ba=a._radial_gradient=/^r(?:\(([^,]+?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*([^\)]+?)\))?/,bb={},bc=function(a,b){return a.key-b.key},bd=function(a,b){return Q(a)-Q(b)},be=function(){},bf=function(a){return a},bg=a._rectPath=function(a,b,c,d,e){if(e)return[["M",a+e,b],["l",c-e*2,0],["a",e,e,0,0,1,e,e],["l",0,d-e*2],["a",e,e,0,0,1,-e,e],["l",e*2-c,0],["a",e,e,0,0,1,-e,-e],["l",0,e*2-d],["a",e,e,0,0,1,e,-e],["z"]];return[["M",a,b],["l",c,0],["l",0,d],["l",-c,0],["z"]]},bh=function(a,b,c,d){d==null&&(d=c);return[["M",a,b],["m",0,-d],["a",c,d,0,1,1,0,2*d],["a",c,d,0,1,1,0,-2*d],["z"]]},bi=a._getPath={path:function(a){return a.attr("path")},circle:function(a){var b=a.attrs;return bh(b.cx,b.cy,b.r)},ellipse:function(a){var b=a.attrs;return bh(b.cx,b.cy,b.rx,b.ry)},rect:function(a){var b=a.attrs;return bg(b.x,b.y,b.width,b.height,b.r)},image:function(a){var b=a.attrs;return bg(b.x,b.y,b.width,b.height)},text:function(a){var b=a._getBBox();return bg(b.x,b.y,b.width,b.height)}},bj=a.mapPath=function(a,b){if(!b)return a;var c,d,e,f,g,h,i;a=bR(a);for(e=0,g=a.length;e<g;e++){i=a[e];for(f=1,h=i.length;f<h;f+=2)c=b.x(i[f],i[f+1]),d=b.y(i[f],i[f+1]),i[f]=c,i[f+1]=d}return a};a._g=h,a.type=h.win.SVGAngle||h.doc.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")?"SVG":"VML";if(a.type=="VML"){var bk=h.doc.createElement("div"),bl;bk.innerHTML='<v:shape adj="1"/>',bl=bk.firstChild,bl.style.behavior="url(#default#VML)";if(!bl||typeof bl.adj!="object")return a.type=p;bk=null}a.svg=!(a.vml=a.type=="VML"),a._Paper=j,a.fn=k=j.prototype=a.prototype,a._id=0,a._oid=0,a.is=function(a,b){b=v.call(b);if(b=="finite")return!M[g](+a);if(b=="array")return a instanceof Array;return b=="null"&&a===null||b==typeof a&&a!==null||b=="object"&&a===Object(a)||b=="array"&&Array.isArray&&Array.isArray(a)||H.call(a).slice(8,-1).toLowerCase()==b},a.angle=function(b,c,d,e,f,g){if(f==null){var h=b-d,i=c-e;if(!h&&!i)return 0;return(180+w.atan2(-i,-h)*180/B+360)%360}return a.angle(b,c,f,g)-a.angle(d,e,f,g)},a.rad=function(a){return a%360*B/180},a.deg=function(a){return a*180/B%360},a.snapTo=function(b,c,d){d=a.is(d,"finite")?d:10;if(a.is(b,E)){var e=b.length;while(e--)if(z(b[e]-c)<=d)return b[e]}else{b=+b;var f=c%b;if(f<d)return c-f;if(f>b-d)return c-f+b}return c};var bn=a.createUUID=function(a,b){return function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(a,b).toUpperCase()}}(/[xy]/g,function(a){var b=w.random()*16|0,c=a=="x"?b:b&3|8;return c.toString(16)});a.setWindow=function(b){eve("raphael.setWindow",a,h.win,b),h.win=b,h.doc=h.win.document,a._engine.initWin&&a._engine.initWin(h.win)};var bo=function(b){if(a.vml){var c=/^\s+|\s+$/g,d;try{var e=new ActiveXObject("htmlfile");e.write("<body>"),e.close(),d=e.body}catch(f){d=createPopup().document.body}var g=d.createTextRange();bo=bv(function(a){try{d.style.color=r(a).replace(c,p);var b=g.queryCommandValue("ForeColor");b=(b&255)<<16|b&65280|(b&16711680)>>>16;return"#"+("000000"+b.toString(16)).slice(-6)}catch(e){return"none"}})}else{var i=h.doc.createElement("i");i.title="Raphaël Colour Picker",i.style.display="none",h.doc.body.appendChild(i),bo=bv(function(a){i.style.color=a;return h.doc.defaultView.getComputedStyle(i,p).getPropertyValue("color")})}return bo(b)},bp=function(){return"hsb("+[this.h,this.s,this.b]+")"},bq=function(){return"hsl("+[this.h,this.s,this.l]+")"},br=function(){return this.hex},bs=function(b,c,d){c==null&&a.is(b,"object")&&"r"in b&&"g"in b&&"b"in b&&(d=b.b,c=b.g,b=b.r);if(c==null&&a.is(b,D)){var e=a.getRGB(b);b=e.r,c=e.g,d=e.b}if(b>1||c>1||d>1)b/=255,c/=255,d/=255;return[b,c,d]},bt=function(b,c,d,e){b*=255,c*=255,d*=255;var f={r:b,g:c,b:d,hex:a.rgb(b,c,d),toString:br};a.is(e,"finite")&&(f.opacity=e);return f};a.color=function(b){var c;a.is(b,"object")&&"h"in b&&"s"in b&&"b"in b?(c=a.hsb2rgb(b),b.r=c.r,b.g=c.g,b.b=c.b,b.hex=c.hex):a.is(b,"object")&&"h"in b&&"s"in b&&"l"in b?(c=a.hsl2rgb(b),b.r=c.r,b.g=c.g,b.b=c.b,b.hex=c.hex):(a.is(b,"string")&&(b=a.getRGB(b)),a.is(b,"object")&&"r"in b&&"g"in b&&"b"in b?(c=a.rgb2hsl(b),b.h=c.h,b.s=c.s,b.l=c.l,c=a.rgb2hsb(b),b.v=c.b):(b={hex:"none"},b.r=b.g=b.b=b.h=b.s=b.v=b.l=-1)),b.toString=br;return b},a.hsb2rgb=function(a,b,c,d){this.is(a,"object")&&"h"in a&&"s"in a&&"b"in a&&(c=a.b,b=a.s,a=a.h,d=a.o),a*=360;var e,f,g,h,i;a=a%360/60,i=c*b,h=i*(1-z(a%2-1)),e=f=g=c-i,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a];return bt(e,f,g,d)},a.hsl2rgb=function(a,b,c,d){this.is(a,"object")&&"h"in a&&"s"in a&&"l"in a&&(c=a.l,b=a.s,a=a.h);if(a>1||b>1||c>1)a/=360,b/=100,c/=100;a*=360;var e,f,g,h,i;a=a%360/60,i=2*b*(c<.5?c:1-c),h=i*(1-z(a%2-1)),e=f=g=c-i/2,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a];return bt(e,f,g,d)},a.rgb2hsb=function(a,b,c){c=bs(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g;f=x(a,b,c),g=f-y(a,b,c),d=g==0?null:f==a?(b-c)/g:f==b?(c-a)/g+2:(a-b)/g+4,d=(d+360)%6*60/360,e=g==0?0:g/f;return{h:d,s:e,b:f,toString:bp}},a.rgb2hsl=function(a,b,c){c=bs(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g,h,i;g=x(a,b,c),h=y(a,b,c),i=g-h,d=i==0?null:g==a?(b-c)/i:g==b?(c-a)/i+2:(a-b)/i+4,d=(d+360)%6*60/360,f=(g+h)/2,e=i==0?0:f<.5?i/(2*f):i/(2-2*f);return{h:d,s:e,l:f,toString:bq}},a._path2string=function(){return this.join(",").replace(Y,"$1")};var bw=a._preload=function(a,b){var c=h.doc.createElement("img");c.style.cssText="position:absolute;left:-9999em;top:-9999em",c.onload=function(){b.call(this),this.onload=null,h.doc.body.removeChild(this)},c.onerror=function(){h.doc.body.removeChild(this)},h.doc.body.appendChild(c),c.src=a};a.getRGB=bv(function(b){if(!b||!!((b=r(b)).indexOf("-")+1))return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:bx};if(b=="none")return{r:-1,g:-1,b:-1,hex:"none",toString:bx};!X[g](b.toLowerCase().substring(0,2))&&b.charAt()!="#"&&(b=bo(b));var c,d,e,f,h,i,j,k=b.match(L);if(k){k[2]&&(f=R(k[2].substring(5),16),e=R(k[2].substring(3,5),16),d=R(k[2].substring(1,3),16)),k[3]&&(f=R((i=k[3].charAt(3))+i,16),e=R((i=k[3].charAt(2))+i,16),d=R((i=k[3].charAt(1))+i,16)),k[4]&&(j=k[4][s](W),d=Q(j[0]),j[0].slice(-1)=="%"&&(d*=2.55),e=Q(j[1]),j[1].slice(-1)=="%"&&(e*=2.55),f=Q(j[2]),j[2].slice(-1)=="%"&&(f*=2.55),k[1].toLowerCase().slice(0,4)=="rgba"&&(h=Q(j[3])),j[3]&&j[3].slice(-1)=="%"&&(h/=100));if(k[5]){j=k[5][s](W),d=Q(j[0]),j[0].slice(-1)=="%"&&(d*=2.55),e=Q(j[1]),j[1].slice(-1)=="%"&&(e*=2.55),f=Q(j[2]),j[2].slice(-1)=="%"&&(f*=2.55),(j[0].slice(-3)=="deg"||j[0].slice(-1)=="°")&&(d/=360),k[1].toLowerCase().slice(0,4)=="hsba"&&(h=Q(j[3])),j[3]&&j[3].slice(-1)=="%"&&(h/=100);return a.hsb2rgb(d,e,f,h)}if(k[6]){j=k[6][s](W),d=Q(j[0]),j[0].slice(-1)=="%"&&(d*=2.55),e=Q(j[1]),j[1].slice(-1)=="%"&&(e*=2.55),f=Q(j[2]),j[2].slice(-1)=="%"&&(f*=2.55),(j[0].slice(-3)=="deg"||j[0].slice(-1)=="°")&&(d/=360),k[1].toLowerCase().slice(0,4)=="hsla"&&(h=Q(j[3])),j[3]&&j[3].slice(-1)=="%"&&(h/=100);return a.hsl2rgb(d,e,f,h)}k={r:d,g:e,b:f,toString:bx},k.hex="#"+(16777216|f|e<<8|d<<16).toString(16).slice(1),a.is(h,"finite")&&(k.opacity=h);return k}return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:bx}},a),a.hsb=bv(function(b,c,d){return a.hsb2rgb(b,c,d).hex}),a.hsl=bv(function(b,c,d){return a.hsl2rgb(b,c,d).hex}),a.rgb=bv(function(a,b,c){return"#"+(16777216|c|b<<8|a<<16).toString(16).slice(1)}),a.getColor=function(a){var b=this.getColor.start=this.getColor.start||{h:0,s:1,b:a||.75},c=this.hsb2rgb(b.h,b.s,b.b);b.h+=.075,b.h>1&&(b.h=0,b.s-=.2,b.s<=0&&(this.getColor.start={h:0,s:1,b:b.b}));return c.hex},a.getColor.reset=function(){delete this.start},a.parsePathString=function(b){if(!b)return null;var c=bz(b);if(c.arr)return bJ(c.arr);var d={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0},e=[];a.is(b,E)&&a.is(b[0],E)&&(e=bJ(b)),e.length||r(b).replace(Z,function(a,b,c){var f=[],g=b.toLowerCase();c.replace(_,function(a,b){b&&f.push(+b)}),g=="m"&&f.length>2&&(e.push([b][n](f.splice(0,2))),g="l",b=b=="m"?"l":"L");if(g=="r")e.push([b][n](f));else while(f.length>=d[g]){e.push([b][n](f.splice(0,d[g])));if(!d[g])break}}),e.toString=a._path2string,c.arr=bJ(e);return e},a.parseTransformString=bv(function(b){if(!b)return null;var c={r:3,s:4,t:2,m:6},d=[];a.is(b,E)&&a.is(b[0],E)&&(d=bJ(b)),d.length||r(b).replace($,function(a,b,c){var e=[],f=v.call(b);c.replace(_,function(a,b){b&&e.push(+b)}),d.push([b][n](e))}),d.toString=a._path2string;return d});var bz=function(a){var b=bz.ps=bz.ps||{};b[a]?b[a].sleep=100:b[a]={sleep:100},setTimeout(function(){for(var c in b)b[g](c)&&c!=a&&(b[c].sleep--,!b[c].sleep&&delete b[c])});return b[a]};a.findDotsAtSegment=function(a,b,c,d,e,f,g,h,i){var j=1-i,k=A(j,3),l=A(j,2),m=i*i,n=m*i,o=k*a+l*3*i*c+j*3*i*i*e+n*g,p=k*b+l*3*i*d+j*3*i*i*f+n*h,q=a+2*i*(c-a)+m*(e-2*c+a),r=b+2*i*(d-b)+m*(f-2*d+b),s=c+2*i*(e-c)+m*(g-2*e+c),t=d+2*i*(f-d)+m*(h-2*f+d),u=j*a+i*c,v=j*b+i*d,x=j*e+i*g,y=j*f+i*h,z=90-w.atan2(q-s,r-t)*180/B;(q>s||r<t)&&(z+=180);return{x:o,y:p,m:{x:q,y:r},n:{x:s,y:t},start:{x:u,y:v},end:{x:x,y:y},alpha:z}},a.bezierBBox=function(b,c,d,e,f,g,h,i){a.is(b,"array")||(b=[b,c,d,e,f,g,h,i]);var j=bQ.apply(null,b);return{x:j.min.x,y:j.min.y,x2:j.max.x,y2:j.max.y,width:j.max.x-j.min.x,height:j.max.y-j.min.y}},a.isPointInsideBBox=function(a,b,c){return b>=a.x&&b<=a.x2&&c>=a.y&&c<=a.y2},a.isBBoxIntersect=function(b,c){var d=a.isPointInsideBBox;return d(c,b.x,b.y)||d(c,b.x2,b.y)||d(c,b.x,b.y2)||d(c,b.x2,b.y2)||d(b,c.x,c.y)||d(b,c.x2,c.y)||d(b,c.x,c.y2)||d(b,c.x2,c.y2)||(b.x<c.x2&&b.x>c.x||c.x<b.x2&&c.x>b.x)&&(b.y<c.y2&&b.y>c.y||c.y<b.y2&&c.y>b.y)},a.pathIntersection=function(a,b){return bH(a,b)},a.pathIntersectionNumber=function(a,b){return bH(a,b,1)},a.isPointInsidePath=function(b,c,d){var e=a.pathBBox(b);return a.isPointInsideBBox(e,c,d)&&bH(b,[["M",c,d],["H",e.x2+10]],1)%2==1},a._removedFactory=function(a){return function(){eve("raphael.log",null,"Raphaël: you are calling to method “"+a+"” of removed object",a)}};var bI=a.pathBBox=function(a){var b=bz(a);if(b.bbox)return b.bbox;if(!a)return{x:0,y:0,width:0,height:0,x2:0,y2:0};a=bR(a);var c=0,d=0,e=[],f=[],g;for(var h=0,i=a.length;h<i;h++){g=a[h];if(g[0]=="M")c=g[1],d=g[2],e.push(c),f.push(d);else{var j=bQ(c,d,g[1],g[2],g[3],g[4],g[5],g[6]);e=e[n](j.min.x,j.max.x),f=f[n](j.min.y,j.max.y),c=g[5],d=g[6]}}var k=y[m](0,e),l=y[m](0,f),o=x[m](0,e),p=x[m](0,f),q={x:k,y:l,x2:o,y2:p,width:o-k,height:p-l};b.bbox=bm(q);return q},bJ=function(b){var c=bm(b);c.toString=a._path2string;return c},bK=a._pathToRelative=function(b){var c=bz(b);if(c.rel)return bJ(c.rel);if(!a.is(b,E)||!a.is(b&&b[0],E))b=a.parsePathString(b);var d=[],e=0,f=0,g=0,h=0,i=0;b[0][0]=="M"&&(e=b[0][1],f=b[0][2],g=e,h=f,i++,d.push(["M",e,f]));for(var j=i,k=b.length;j<k;j++){var l=d[j]=[],m=b[j];if(m[0]!=v.call(m[0])){l[0]=v.call(m[0]);switch(l[0]){case"a":l[1]=m[1],l[2]=m[2],l[3]=m[3],l[4]=m[4],l[5]=m[5],l[6]=+(m[6]-e).toFixed(3),l[7]=+(m[7]-f).toFixed(3);break;case"v":l[1]=+(m[1]-f).toFixed(3);break;case"m":g=m[1],h=m[2];default:for(var n=1,o=m.length;n<o;n++)l[n]=+(m[n]-(n%2?e:f)).toFixed(3)}}else{l=d[j]=[],m[0]=="m"&&(g=m[1]+e,h=m[2]+f);for(var p=0,q=m.length;p<q;p++)d[j][p]=m[p]}var r=d[j].length;switch(d[j][0]){case"z":e=g,f=h;break;case"h":e+=+d[j][r-1];break;case"v":f+=+d[j][r-1];break;default:e+=+d[j][r-2],f+=+d[j][r-1]}}d.toString=a._path2string,c.rel=bJ(d);return d},bL=a._pathToAbsolute=function(b){var c=bz(b);if(c.abs)return bJ(c.abs);if(!a.is(b,E)||!a.is(b&&b[0],E))b=a.parsePathString(b);if(!b||!b.length)return[["M",0,0]];var d=[],e=0,f=0,g=0,h=0,i=0;b[0][0]=="M"&&(e=+b[0][1],f=+b[0][2],g=e,h=f,i++,d[0]=["M",e,f]);var j=b.length==3&&b[0][0]=="M"&&b[1][0].toUpperCase()=="R"&&b[2][0].toUpperCase()=="Z";for(var k,l,m=i,o=b.length;m<o;m++){d.push(k=[]),l=b[m];if(l[0]!=S.call(l[0])){k[0]=S.call(l[0]);switch(k[0]){case"A":k[1]=l[1],k[2]=l[2],k[3]=l[3],k[4]=l[4],k[5]=l[5],k[6]=+(l[6]+e),k[7]=+(l[7]+f);break;case"V":k[1]=+l[1]+f;break;case"H":k[1]=+l[1]+e;break;case"R":var p=[e,f][n](l.slice(1));for(var q=2,r=p.length;q<r;q++)p[q]=+p[q]+e,p[++q]=+p[q]+f;d.pop(),d=d[n](by(p,j));break;case"M":g=+l[1]+e,h=+l[2]+f;default:for(q=1,r=l.length;q<r;q++)k[q]=+l[q]+(q%2?e:f)}}else if(l[0]=="R")p=[e,f][n](l.slice(1)),d.pop(),d=d[n](by(p,j)),k=["R"][n](l.slice(-2));else for(var s=0,t=l.length;s<t;s++)k[s]=l[s];switch(k[0]){case"Z":e=g,f=h;break;case"H":e=k[1];break;case"V":f=k[1];break;case"M":g=k[k.length-2],h=k[k.length-1];default:e=k[k.length-2],f=k[k.length-1]}}d.toString=a._path2string,c.abs=bJ(d);return d},bM=function(a,b,c,d){return[a,b,c,d,c,d]},bN=function(a,b,c,d,e,f){var g=1/3,h=2/3;return[g*a+h*c,g*b+h*d,g*e+h*c,g*f+h*d,e,f]},bO=function(a,b,c,d,e,f,g,h,i,j){var k=B*120/180,l=B/180*(+e||0),m=[],o,p=bv(function(a,b,c){var d=a*w.cos(c)-b*w.sin(c),e=a*w.sin(c)+b*w.cos(c);return{x:d,y:e}});if(!j){o=p(a,b,-l),a=o.x,b=o.y,o=p(h,i,-l),h=o.x,i=o.y;var q=w.cos(B/180*e),r=w.sin(B/180*e),t=(a-h)/2,u=(b-i)/2,v=t*t/(c*c)+u*u/(d*d);v>1&&(v=w.sqrt(v),c=v*c,d=v*d);var x=c*c,y=d*d,A=(f==g?-1:1)*w.sqrt(z((x*y-x*u*u-y*t*t)/(x*u*u+y*t*t))),C=A*c*u/d+(a+h)/2,D=A*-d*t/c+(b+i)/2,E=w.asin(((b-D)/d).toFixed(9)),F=w.asin(((i-D)/d).toFixed(9));E=a<C?B-E:E,F=h<C?B-F:F,E<0&&(E=B*2+E),F<0&&(F=B*2+F),g&&E>F&&(E=E-B*2),!g&&F>E&&(F=F-B*2)}else E=j[0],F=j[1],C=j[2],D=j[3];var G=F-E;if(z(G)>k){var H=F,I=h,J=i;F=E+k*(g&&F>E?1:-1),h=C+c*w.cos(F),i=D+d*w.sin(F),m=bO(h,i,c,d,e,0,g,I,J,[F,H,C,D])}G=F-E;var K=w.cos(E),L=w.sin(E),M=w.cos(F),N=w.sin(F),O=w.tan(G/4),P=4/3*c*O,Q=4/3*d*O,R=[a,b],S=[a+P*L,b-Q*K],T=[h+P*N,i-Q*M],U=[h,i];S[0]=2*R[0]-S[0],S[1]=2*R[1]-S[1];if(j)return[S,T,U][n](m);m=[S,T,U][n](m).join()[s](",");var V=[];for(var W=0,X=m.length;W<X;W++)V[W]=W%2?p(m[W-1],m[W],l).y:p(m[W],m[W+1],l).x;return V},bP=function(a,b,c,d,e,f,g,h,i){var j=1-i;return{x:A(j,3)*a+A(j,2)*3*i*c+j*3*i*i*e+A(i,3)*g,y:A(j,3)*b+A(j,2)*3*i*d+j*3*i*i*f+A(i,3)*h}},bQ=bv(function(a,b,c,d,e,f,g,h){var i=e-2*c+a-(g-2*e+c),j=2*(c-a)-2*(e-c),k=a-c,l=(-j+w.sqrt(j*j-4*i*k))/2/i,n=(-j-w.sqrt(j*j-4*i*k))/2/i,o=[b,h],p=[a,g],q;z(l)>"1e12"&&(l=.5),z(n)>"1e12"&&(n=.5),l>0&&l<1&&(q=bP(a,b,c,d,e,f,g,h,l),p.push(q.x),o.push(q.y)),n>0&&n<1&&(q=bP(a,b,c,d,e,f,g,h,n),p.push(q.x),o.push(q.y)),i=f-2*d+b-(h-2*f+d),j=2*(d-b)-2*(f-d),k=b-d,l=(-j+w.sqrt(j*j-4*i*k))/2/i,n=(-j-w.sqrt(j*j-4*i*k))/2/i,z(l)>"1e12"&&(l=.5),z(n)>"1e12"&&(n=.5),l>0&&l<1&&(q=bP(a,b,c,d,e,f,g,h,l),p.push(q.x),o.push(q.y)),n>0&&n<1&&(q=bP(a,b,c,d,e,f,g,h,n),p.push(q.x),o.push(q.y));return{min:{x:y[m](0,p),y:y[m](0,o)},max:{x:x[m](0,p),y:x[m](0,o)}}}),bR=a._path2curve=bv(function(a,b){var c=!b&&bz(a);if(!b&&c.curve)return bJ(c.curve);var d=bL(a),e=b&&bL(b),f={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},g={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},h=function(a,b){var c,d;if(!a)return["C",b.x,b.y,b.x,b.y,b.x,b.y];!(a[0]in{T:1,Q:1})&&(b.qx=b.qy=null);switch(a[0]){case"M":b.X=a[1],b.Y=a[2];break;case"A":a=["C"][n](bO[m](0,[b.x,b.y][n](a.slice(1))));break;case"S":c=b.x+(b.x-(b.bx||b.x)),d=b.y+(b.y-(b.by||b.y)),a=["C",c,d][n](a.slice(1));break;case"T":b.qx=b.x+(b.x-(b.qx||b.x)),b.qy=b.y+(b.y-(b.qy||b.y)),a=["C"][n](bN(b.x,b.y,b.qx,b.qy,a[1],a[2]));break;case"Q":b.qx=a[1],b.qy=a[2],a=["C"][n](bN(b.x,b.y,a[1],a[2],a[3],a[4]));break;case"L":a=["C"][n](bM(b.x,b.y,a[1],a[2]));break;case"H":a=["C"][n](bM(b.x,b.y,a[1],b.y));break;case"V":a=["C"][n](bM(b.x,b.y,b.x,a[1]));break;case"Z":a=["C"][n](bM(b.x,b.y,b.X,b.Y))}return a},i=function(a,b){if(a[b].length>7){a[b].shift();var c=a[b];while(c.length)a.splice(b++,0,["C"][n](c.splice(0,6)));a.splice(b,1),l=x(d.length,e&&e.length||0)}},j=function(a,b,c,f,g){a&&b&&a[g][0]=="M"&&b[g][0]!="M"&&(b.splice(g,0,["M",f.x,f.y]),c.bx=0,c.by=0,c.x=a[g][1],c.y=a[g][2],l=x(d.length,e&&e.length||0))};for(var k=0,l=x(d.length,e&&e.length||0);k<l;k++){d[k]=h(d[k],f),i(d,k),e&&(e[k]=h(e[k],g)),e&&i(e,k),j(d,e,f,g,k),j(e,d,g,f,k);var o=d[k],p=e&&e[k],q=o.length,r=e&&p.length;f.x=o[q-2],f.y=o[q-1],f.bx=Q(o[q-4])||f.x,f.by=Q(o[q-3])||f.y,g.bx=e&&(Q(p[r-4])||g.x),g.by=e&&(Q(p[r-3])||g.y),g.x=e&&p[r-2],g.y=e&&p[r-1]}e||(c.curve=bJ(d));return e?[d,e]:d},null,bJ),bS=a._parseDots=bv(function(b){var c=[];for(var d=0,e=b.length;d<e;d++){var f={},g=b[d].match(/^([^:]*):?([\d\.]*)/);f.color=a.getRGB(g[1]);if(f.color.error)return null;f.color=f.color.hex,g[2]&&(f.offset=g[2]+"%"),c.push(f)}for(d=1,e=c.length-1;d<e;d++)if(!c[d].offset){var h=Q(c[d-1].offset||0),i=0;for(var j=d+1;j<e;j++)if(c[j].offset){i=c[j].offset;break}i||(i=100,j=e),i=Q(i);var k=(i-h)/(j-d+1);for(;d<j;d++)h+=k,c[d].offset=h+"%"}return c}),bT=a._tear=function(a,b){a==b.top&&(b.top=a.prev),a==b.bottom&&(b.bottom=a.next),a.next&&(a.next.prev=a.prev),a.prev&&(a.prev.next=a.next)},bU=a._tofront=function(a,b){b.top!==a&&(bT(a,b),a.next=null,a.prev=b.top,b.top.next=a,b.top=a)},bV=a._toback=function(a,b){b.bottom!==a&&(bT(a,b),a.next=b.bottom,a.prev=null,b.bottom.prev=a,b.bottom=a)},bW=a._insertafter=function(a,b,c){bT(a,c),b==c.top&&(c.top=a),b.next&&(b.next.prev=a),a.next=b.next,a.prev=b,b.next=a},bX=a._insertbefore=function(a,b,c){bT(a,c),b==c.bottom&&(c.bottom=a),b.prev&&(b.prev.next=a),a.prev=b.prev,b.prev=a,a.next=b},bY=a.toMatrix=function(a,b){var c=bI(a),d={_:{transform:p},getBBox:function(){return c}};b$(d,b);return d.matrix},bZ=a.transformPath=function(a,b){return bj(a,bY(a,b))},b$=a._extractTransform=function(b,c){if(c==null)return b._.transform;c=r(c).replace(/\.{3}|\u2026/g,b._.transform||p);var d=a.parseTransformString(c),e=0,f=0,g=0,h=1,i=1,j=b._,k=new cb;j.transform=d||[];if(d)for(var l=0,m=d.length;l<m;l++){var n=d[l],o=n.length,q=r(n[0]).toLowerCase(),s=n[0]!=q,t=s?k.invert():0,u,v,w,x,y;q=="t"&&o==3?s?(u=t.x(0,0),v=t.y(0,0),w=t.x(n[1],n[2]),x=t.y(n[1],n[2]),k.translate(w-u,x-v)):k.translate(n[1],n[2]):q=="r"?o==2?(y=y||b.getBBox(1),k.rotate(n[1],y.x+y.width/2,y.y+y.height/2),e+=n[1]):o==4&&(s?(w=t.x(n[2],n[3]),x=t.y(n[2],n[3]),k.rotate(n[1],w,x)):k.rotate(n[1],n[2],n[3]),e+=n[1]):q=="s"?o==2||o==3?(y=y||b.getBBox(1),k.scale(n[1],n[o-1],y.x+y.width/2,y.y+y.height/2),h*=n[1],i*=n[o-1]):o==5&&(s?(w=t.x(n[3],n[4]),x=t.y(n[3],n[4]),k.scale(n[1],n[2],w,x)):k.scale(n[1],n[2],n[3],n[4]),h*=n[1],i*=n[2]):q=="m"&&o==7&&k.add(n[1],n[2],n[3],n[4],n[5],n[6]),j.dirtyT=1,b.matrix=k}b.matrix=k,j.sx=h,j.sy=i,j.deg=e,j.dx=f=k.e,j.dy=g=k.f,h==1&&i==1&&!e&&j.bbox?(j.bbox.x+=+f,j.bbox.y+=+g):j.dirtyT=1},b_=function(a){var b=a[0];switch(b.toLowerCase()){case"t":return[b,0,0];case"m":return[b,1,0,0,1,0,0];case"r":return a.length==4?[b,0,a[2],a[3]]:[b,0];case"s":return a.length==5?[b,1,1,a[3],a[4]]:a.length==3?[b,1,1]:[b,1]}},ca=a._equaliseTransform=function(b,c){c=r(c).replace(/\.{3}|\u2026/g,b),b=a.parseTransformString(b)||[],c=a.parseTransformString(c)||[];var d=x(b.length,c.length),e=[],f=[],g=0,h,i,j,k;for(;g<d;g++){j=b[g]||b_(c[g]),k=c[g]||b_(j);if(j[0]!=k[0]||j[0].toLowerCase()=="r"&&(j[2]!=k[2]||j[3]!=k[3])||j[0].toLowerCase()=="s"&&(j[3]!=k[3]||j[4]!=k[4]))return;e[g]=[],f[g]=[];for(h=0,i=x(j.length,k.length);h<i;h++)h in j&&(e[g][h]=j[h]),h in k&&(f[g][h]=k[h])}return{from:e,to:f}};a._getContainer=function(b,c,d,e){var f;f=e==null&&!a.is(b,"object")?h.doc.getElementById(b):b;if(f!=null){if(f.tagName)return c==null?{container:f,width:f.style.pixelWidth||f.offsetWidth,height:f.style.pixelHeight||f.offsetHeight}:{container:f,width:c,height:d};return{container:1,x:b,y:c,width:d,height:e}}},a.pathToRelative=bK,a._engine={},a.path2curve=bR,a.matrix=function(a,b,c,d,e,f){return new cb(a,b,c,d,e,f)},function(b){function d(a){var b=w.sqrt(c(a));a[0]&&(a[0]/=b),a[1]&&(a[1]/=b)}function c(a){return a[0]*a[0]+a[1]*a[1]}b.add=function(a,b,c,d,e,f){var g=[[],[],[]],h=[[this.a,this.c,this.e],[this.b,this.d,this.f],[0,0,1]],i=[[a,c,e],[b,d,f],[0,0,1]],j,k,l,m;a&&a instanceof cb&&(i=[[a.a,a.c,a.e],[a.b,a.d,a.f],[0,0,1]]);for(j=0;j<3;j++)for(k=0;k<3;k++){m=0;for(l=0;l<3;l++)m+=h[j][l]*i[l][k];g[j][k]=m}this.a=g[0][0],this.b=g[1][0],this.c=g[0][1],this.d=g[1][1],this.e=g[0][2],this.f=g[1][2]},b.invert=function(){var a=this,b=a.a*a.d-a.b*a.c;return new cb(a.d/b,-a.b/b,-a.c/b,a.a/b,(a.c*a.f-a.d*a.e)/b,(a.b*a.e-a.a*a.f)/b)},b.clone=function(){return new cb(this.a,this.b,this.c,this.d,this.e,this.f)},b.translate=function(a,b){this.add(1,0,0,1,a,b)},b.scale=function(a,b,c,d){b==null&&(b=a),(c||d)&&this.add(1,0,0,1,c,d),this.add(a,0,0,b,0,0),(c||d)&&this.add(1,0,0,1,-c,-d)},b.rotate=function(b,c,d){b=a.rad(b),c=c||0,d=d||0;var e=+w.cos(b).toFixed(9),f=+w.sin(b).toFixed(9);this.add(e,f,-f,e,c,d),this.add(1,0,0,1,-c,-d)},b.x=function(a,b){return a*this.a+b*this.c+this.e},b.y=function(a,b){return a*this.b+b*this.d+this.f},b.get=function(a){return+this[r.fromCharCode(97+a)].toFixed(4)},b.toString=function(){return a.svg?"matrix("+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)].join()+")":[this.get(0),this.get(2),this.get(1),this.get(3),0,0].join()},b.toFilter=function(){return"progid:DXImageTransform.Microsoft.Matrix(M11="+this.get(0)+", M12="+this.get(2)+", M21="+this.get(1)+", M22="+this.get(3)+", Dx="+this.get(4)+", Dy="+this.get(5)+", sizingmethod='auto expand')"},b.offset=function(){return[this.e.toFixed(4),this.f.toFixed(4)]},b.split=function(){var b={};b.dx=this.e,b.dy=this.f;var e=[[this.a,this.c],[this.b,this.d]];b.scalex=w.sqrt(c(e[0])),d(e[0]),b.shear=e[0][0]*e[1][0]+e[0][1]*e[1][1],e[1]=[e[1][0]-e[0][0]*b.shear,e[1][1]-e[0][1]*b.shear],b.scaley=w.sqrt(c(e[1])),d(e[1]),b.shear/=b.scaley;var f=-e[0][1],g=e[1][1];g<0?(b.rotate=a.deg(w.acos(g)),f<0&&(b.rotate=360-b.rotate)):b.rotate=a.deg(w.asin(f)),b.isSimple=!+b.shear.toFixed(9)&&(b.scalex.toFixed(9)==b.scaley.toFixed(9)||!b.rotate),b.isSuperSimple=!+b.shear.toFixed(9)&&b.scalex.toFixed(9)==b.scaley.toFixed(9)&&!b.rotate,b.noRotation=!+b.shear.toFixed(9)&&!b.rotate;return b},b.toTransformString=function(a){var b=a||this[s]();if(b.isSimple){b.scalex=+b.scalex.toFixed(4),b.scaley=+b.scaley.toFixed(4),b.rotate=+b.rotate.toFixed(4);return(b.dx||b.dy?"t"+[b.dx,b.dy]:p)+(b.scalex!=1||b.scaley!=1?"s"+[b.scalex,b.scaley,0,0]:p)+(b.rotate?"r"+[b.rotate,0,0]:p)}return"m"+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)]}}(cb.prototype);var cc=navigator.userAgent.match(/Version\/(.*?)\s/)||navigator.userAgent.match(/Chrome\/(\d+)/);navigator.vendor=="Apple Computer, Inc."&&(cc&&cc[1]<4||navigator.platform.slice(0,2)=="iP")||navigator.vendor=="Google Inc."&&cc&&cc[1]<8?k.safari=function(){var a=this.rect(-99,-99,this.width+99,this.height+99).attr({stroke:"none"});setTimeout(function(){a.remove()})}:k.safari=be;var cd=function(){this.returnValue=!1},ce=function(){return this.originalEvent.preventDefault()},cf=function(){this.cancelBubble=!0},cg=function(){return this.originalEvent.stopPropagation()},ch=function(){if(h.doc.addEventListener)return function(a,b,c,d){var e=o&&u[b]?u[b]:b,f=function(e){var f=h.doc.documentElement.scrollTop||h.doc.body.scrollTop,i=h.doc.documentElement.scrollLeft||h.doc.body.scrollLeft,j=e.clientX+i,k=e.clientY+f;if(o&&u[g](b))for(var l=0,m=e.targetTouches&&e.targetTouches.length;l<m;l++)if(e.targetTouches[l].target==a){var n=e;e=e.targetTouches[l],e.originalEvent=n,e.preventDefault=ce,e.stopPropagation=cg;break}return c.call(d,e,j,k)};a.addEventListener(e,f,!1);return function(){a.removeEventListener(e,f,!1);return!0}};if(h.doc.attachEvent)return function(a,b,c,d){var e=function(a){a=a||h.win.event;var b=h.doc.documentElement.scrollTop||h.doc.body.scrollTop,e=h.doc.documentElement.scrollLeft||h.doc.body.scrollLeft,f=a.clientX+e,g=a.clientY+b;a.preventDefault=a.preventDefault||cd,a.stopPropagation=a.stopPropagation||cf;return c.call(d,a,f,g)};a.attachEvent("on"+b,e);var f=function(){a.detachEvent("on"+b,e);return!0};return f}}(),ci=[],cj=function(a){var b=a.clientX,c=a.clientY,d=h.doc.documentElement.scrollTop||h.doc.body.scrollTop,e=h.doc.documentElement.scrollLeft||h.doc.body.scrollLeft,f,g=ci.length;while(g--){f=ci[g];if(o){var i=a.touches.length,j;while(i--){j=a.touches[i];if(j.identifier==f.el._drag.id){b=j.clientX,c=j.clientY,(a.originalEvent?a.originalEvent:a).preventDefault();break}}}else a.preventDefault();var k=f.el.node,l,m=k.nextSibling,n=k.parentNode,p=k.style.display;h.win.opera&&n.removeChild(k),k.style.display="none",l=f.el.paper.getElementByPoint(b,c),k.style.display=p,h.win.opera&&(m?n.insertBefore(k,m):n.appendChild(k)),l&&eve("raphael.drag.over."+f.el.id,f.el,l),b+=e,c+=d,eve("raphael.drag.move."+f.el.id,f.move_scope||f.el,b-f.el._drag.x,c-f.el._drag.y,b,c,a)}},ck=function(b){a.unmousemove(cj).unmouseup(ck);var c=ci.length,d;while(c--)d=ci[c],d.el._drag={},eve("raphael.drag.end."+d.el.id,d.end_scope||d.start_scope||d.move_scope||d.el,b);ci=[]},cl=a.el={};for(var cm=t.length;cm--;)(function(b){a[b]=cl[b]=function(c,d){a.is(c,"function")&&(this.events=this.events||[],this.events.push({name:b,f:c,unbind:ch(this.shape||this.node||h.doc,b,c,d||this)}));return this},a["un"+b]=cl["un"+b]=function(a){var c=this.events||[],d=c.length;while(d--)if(c[d].name==b&&c[d].f==a){c[d].unbind(),c.splice(d,1),!c.length&&delete this.events;return this}return this}})(t[cm]);cl.data=function(b,c){var d=bb[this.id]=bb[this.id]||{};if(arguments.length==1){if(a.is(b,"object")){for(var e in b)b[g](e)&&this.data(e,b[e]);return this}eve("raphael.data.get."+this.id,this,d[b],b);return d[b]}d[b]=c,eve("raphael.data.set."+this.id,this,c,b);return this},cl.removeData=function(a){a==null?bb[this.id]={}:bb[this.id]&&delete bb[this.id][a];return this},cl.hover=function(a,b,c,d){return this.mouseover(a,c).mouseout(b,d||c)},cl.unhover=function(a,b){return this.unmouseover(a).unmouseout(b)};var cn=[];cl.drag=function(b,c,d,e,f,g){function i(i){(i.originalEvent||i).preventDefault();var j=h.doc.documentElement.scrollTop||h.doc.body.scrollTop,k=h.doc.documentElement.scrollLeft||h.doc.body.scrollLeft;this._drag.x=i.clientX+k,this._drag.y=i.clientY+j,this._drag.id=i.identifier,!ci.length&&a.mousemove(cj).mouseup(ck),ci.push({el:this,move_scope:e,start_scope:f,end_scope:g}),c&&eve.on("raphael.drag.start."+this.id,c),b&&eve.on("raphael.drag.move."+this.id,b),d&&eve.on("raphael.drag.end."+this.id,d),eve("raphael.drag.start."+this.id,f||e||this,i.clientX+k,i.clientY+j,i)}this._drag={},cn.push({el:this,start:i}),this.mousedown(i);return this},cl.onDragOver=function(a){a?eve.on("raphael.drag.over."+this.id,a):eve.unbind("raphael.drag.over."+this.id)},cl.undrag=function(){var b=cn.length;while(b--)cn[b].el==this&&(this.unmousedown(cn[b].start),cn.splice(b,1),eve.unbind("raphael.drag.*."+this.id));!cn.length&&a.unmousemove(cj).unmouseup(ck)},k.circle=function(b,c,d){var e=a._engine.circle(this,b||0,c||0,d||0);this.__set__&&this.__set__.push(e);return e},k.rect=function(b,c,d,e,f){var g=a._engine.rect(this,b||0,c||0,d||0,e||0,f||0);this.__set__&&this.__set__.push(g);return g},k.ellipse=function(b,c,d,e){var f=a._engine.ellipse(this,b||0,c||0,d||0,e||0);this.__set__&&this.__set__.push(f);return f},k.path=function(b){b&&!a.is(b,D)&&!a.is(b[0],E)&&(b+=p);var c=a._engine.path(a.format[m](a,arguments),this);this.__set__&&this.__set__.push(c);return c},k.image=function(b,c,d,e,f){var g=a._engine.image(this,b||"about:blank",c||0,d||0,e||0,f||0);this.__set__&&this.__set__.push(g);return g},k.text=function(b,c,d){var e=a._engine.text(this,b||0,c||0,r(d));this.__set__&&this.__set__.push(e);return e},k.set=function(b){!a.is(b,"array")&&(b=Array.prototype.splice.call(arguments,0,arguments.length));var c=new cG(b);this.__set__&&this.__set__.push(c);return c},k.setStart=function(a){this.__set__=a||this.set()},k.setFinish=function(a){var b=this.__set__;delete this.__set__;return b},k.setSize=function(b,c){return a._engine.setSize.call(this,b,c)},k.setViewBox=function(b,c,d,e,f){return a._engine.setViewBox.call(this,b,c,d,e,f)},k.top=k.bottom=null,k.raphael=a;var co=function(a){var b=a.getBoundingClientRect(),c=a.ownerDocument,d=c.body,e=c.documentElement,f=e.clientTop||d.clientTop||0,g=e.clientLeft||d.clientLeft||0,i=b.top+(h.win.pageYOffset||e.scrollTop||d.scrollTop)-f,j=b.left+(h.win.pageXOffset||e.scrollLeft||d.scrollLeft)-g;return{y:i,x:j}};k.getElementByPoint=function(a,b){var c=this,d=c.canvas,e=h.doc.elementFromPoint(a,b);if(h.win.opera&&e.tagName=="svg"){var f=co(d),g=d.createSVGRect();g.x=a-f.x,g.y=b-f.y,g.width=g.height=1;var i=d.getIntersectionList(g,null);i.length&&(e=i[i.length-1])}if(!e)return null;while(e.parentNode&&e!=d.parentNode&&!e.raphael)e=e.parentNode;e==c.canvas.parentNode&&(e=d),e=e&&e.raphael?c.getById(e.raphaelid):null;return e},k.getById=function(a){var b=this.bottom;while(b){if(b.id==a)return b;b=b.next}return null},k.forEach=function(a,b){var c=this.bottom;while(c){if(a.call(b,c)===!1)return this;c=c.next}return this},k.getElementsByPoint=function(a,b){var c=this.set();this.forEach(function(d){d.isPointInside(a,b)&&c.push(d)});return c},cl.isPointInside=function(b,c){var d=this.realPath=this.realPath||bi[this.type](this);return a.isPointInsidePath(d,b,c)},cl.getBBox=function(a){if(this.removed)return{};var b=this._;if(a){if(b.dirty||!b.bboxwt)this.realPath=bi[this.type](this),b.bboxwt=bI(this.realPath),b.bboxwt.toString=cq,b.dirty=0;return b.bboxwt}if(b.dirty||b.dirtyT||!b.bbox){if(b.dirty||!this.realPath)b.bboxwt=0,this.realPath=bi[this.type](this);b.bbox=bI(bj(this.realPath,this.matrix)),b.bbox.toString=cq,b.dirty=b.dirtyT=0}return b.bbox},cl.clone=function(){if(this.removed)return null;var a=this.paper[this.type]().attr(this.attr());this.__set__&&this.__set__.push(a);return a},cl.glow=function(a){if(this.type=="text")return null;a=a||{};var b={width:(a.width||10)+(+this.attr("stroke-width")||1),fill:a.fill||!1,opacity:a.opacity||.5,offsetx:a.offsetx||0,offsety:a.offsety||0,color:a.color||"#000"},c=b.width/2,d=this.paper,e=d.set(),f=this.realPath||bi[this.type](this);f=this.matrix?bj(f,this.matrix):f;for(var g=1;g<c+1;g++)e.push(d.path(f).attr({stroke:b.color,fill:b.fill?b.color:"none","stroke-linejoin":"round","stroke-linecap":"round","stroke-width":+(b.width/c*g).toFixed(3),opacity:+(b.opacity/c).toFixed(3)}));return e.insertBefore(this).translate(b.offsetx,b.offsety)};var cr={},cs=function(b,c,d,e,f,g,h,i,j){return j==null?bB(b,c,d,e,f,g,h,i):a.findDotsAtSegment(b,c,d,e,f,g,h,i,bC(b,c,d,e,f,g,h,i,j))},ct=function(b,c){return function(d,e,f){d=bR(d);var g,h,i,j,k="",l={},m,n=0;for(var o=0,p=d.length;o<p;o++){i=d[o];if(i[0]=="M")g=+i[1],h=+i[2];else{j=cs(g,h,i[1],i[2],i[3],i[4],i[5],i[6]);if(n+j>e){if(c&&!l.start){m=cs(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n),k+=["C"+m.start.x,m.start.y,m.m.x,m.m.y,m.x,m.y];if(f)return k;l.start=k,k=["M"+m.x,m.y+"C"+m.n.x,m.n.y,m.end.x,m.end.y,i[5],i[6]].join(),n+=j,g=+i[5],h=+i[6];continue}if(!b&&!c){m=cs(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n);return{x:m.x,y:m.y,alpha:m.alpha}}}n+=j,g=+i[5],h=+i[6]}k+=i.shift()+i}l.end=k,m=b?n:c?l:a.findDotsAtSegment(g,h,i[0],i[1],i[2],i[3],i[4],i[5],1),m.alpha&&(m={x:m.x,y:m.y,alpha:m.alpha});return m}},cu=ct(1),cv=ct(),cw=ct(0,1);a.getTotalLength=cu,a.getPointAtLength=cv,a.getSubpath=function(a,b,c){if(this.getTotalLength(a)-c<1e-6)return cw(a,b).end;var d=cw(a,c,1);return b?cw(d,b).end:d},cl.getTotalLength=function(){if(this.type=="path"){if(this.node.getTotalLength)return this.node.getTotalLength();return cu(this.attrs.path)}},cl.getPointAtLength=function(a){if(this.type=="path")return cv(this.attrs.path,a)},cl.getSubpath=function(b,c){if(this.type=="path")return a.getSubpath(this.attrs.path,b,c)};var cx=a.easing_formulas={linear:function(a){return a},"<":function(a){return A(a,1.7)},">":function(a){return A(a,.48)},"<>":function(a){var b=.48-a/1.04,c=w.sqrt(.1734+b*b),d=c-b,e=A(z(d),1/3)*(d<0?-1:1),f=-c-b,g=A(z(f),1/3)*(f<0?-1:1),h=e+g+.5;return(1-h)*3*h*h+h*h*h},backIn:function(a){var b=1.70158;return a*a*((b+1)*a-b)},backOut:function(a){a=a-1;var b=1.70158;return a*a*((b+1)*a+b)+1},elastic:function(a){if(a==!!a)return a;return A(2,-10*a)*w.sin((a-.075)*2*B/.3)+1},bounce:function(a){var b=7.5625,c=2.75,d;a<1/c?d=b*a*a:a<2/c?(a-=1.5/c,d=b*a*a+.75):a<2.5/c?(a-=2.25/c,d=b*a*a+.9375):(a-=2.625/c,d=b*a*a+.984375);return d}};cx.easeIn=cx["ease-in"]=cx["<"],cx.easeOut=cx["ease-out"]=cx[">"],cx.easeInOut=cx["ease-in-out"]=cx["<>"],cx["back-in"]=cx.backIn,cx["back-out"]=cx.backOut;var cy=[],cz=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){setTimeout(a,16)},cA=function(){var b=+(new Date),c=0;for(;c<cy.length;c++){var d=cy[c];if(d.el.removed||d.paused)continue;var e=b-d.start,f=d.ms,h=d.easing,i=d.from,j=d.diff,k=d.to,l=d.t,m=d.el,o={},p,r={},s;d.initstatus?(e=(d.initstatus*d.anim.top-d.prev)/(d.percent-d.prev)*f,d.status=d.initstatus,delete d.initstatus,d.stop&&cy.splice(c--,1)):d.status=(d.prev+(d.percent-d.prev)*(e/f))/d.anim.top;if(e<0)continue;if(e<f){var t=h(e/f);for(var u in i)if(i[g](u)){switch(U[u]){case C:p=+i[u]+t*f*j[u];break;case"colour":p="rgb("+[cB(O(i[u].r+t*f*j[u].r)),cB(O(i[u].g+t*f*j[u].g)),cB(O(i[u].b+t*f*j[u].b))].join(",")+")";break;case"path":p=[];for(var v=0,w=i[u].length;v<w;v++){p[v]=[i[u][v][0]];for(var x=1,y=i[u][v].length;x<y;x++)p[v][x]=+i[u][v][x]+t*f*j[u][v][x];p[v]=p[v].join(q)}p=p.join(q);break;case"transform":if(j[u].real){p=[];for(v=0,w=i[u].length;v<w;v++){p[v]=[i[u][v][0]];for(x=1,y=i[u][v].length;x<y;x++)p[v][x]=i[u][v][x]+t*f*j[u][v][x]}}else{var z=function(a){return+i[u][a]+t*f*j[u][a]};p=[["m",z(0),z(1),z(2),z(3),z(4),z(5)]]}break;case"csv":if(u=="clip-rect"){p=[],v=4;while(v--)p[v]=+i[u][v]+t*f*j[u][v]}break;default:var A=[][n](i[u]);p=[],v=m.paper.customAttributes[u].length;while(v--)p[v]=+A[v]+t*f*j[u][v]}o[u]=p}m.attr(o),function(a,b,c){setTimeout(function(){eve("raphael.anim.frame."+a,b,c)})}(m.id,m,d.anim)}else{(function(b,c,d){setTimeout(function(){eve("raphael.anim.frame."+c.id,c,d),eve("raphael.anim.finish."+c.id,c,d),a.is(b,"function")&&b.call(c)})})(d.callback,m,d.anim),m.attr(k),cy.splice(c--,1);if(d.repeat>1&&!d.next){for(s in k)k[g](s)&&(r[s]=d.totalOrigin[s]);d.el.attr(r),cE(d.anim,d.el,d.anim.percents[0],null,d.totalOrigin,d.repeat-1)}d.next&&!d.stop&&cE(d.anim,d.el,d.next,null,d.totalOrigin,d.repeat)}}a.svg&&m&&m.paper&&m.paper.safari(),cy.length&&cz(cA)},cB=function(a){return a>255?255:a<0?0:a};cl.animateWith=function(b,c,d,e,f,g){var h=this;if(h.removed){g&&g.call(h);return h}var i=d instanceof cD?d:a.animation(d,e,f,g),j,k;cE(i,h,i.percents[0],null,h.attr());for(var l=0,m=cy.length;l<m;l++)if(cy[l].anim==c&&cy[l].el==b){cy[m-1].start=cy[l].start;break}return h},cl.onAnimation=function(a){a?eve.on("raphael.anim.frame."+this.id,a):eve.unbind("raphael.anim.frame."+this.id);return this},cD.prototype.delay=function(a){var b=new cD(this.anim,this.ms);b.times=this.times,b.del=+a||0;return b},cD.prototype.repeat=function(a){var b=new cD(this.anim,this.ms);b.del=this.del,b.times=w.floor(x(a,0))||1;return b},a.animation=function(b,c,d,e){if(b instanceof cD)return b;if(a.is(d,"function")||!d)e=e||d||null,d=null;b=Object(b),c=+c||0;var f={},h,i;for(i in b)b[g](i)&&Q(i)!=i&&Q(i)+"%"!=i&&(h=!0,f[i]=b[i]);if(!h)return new cD(b,c);d&&(f.easing=d),e&&(f.callback=e);return new cD({100:f},c)},cl.animate=function(b,c,d,e){var f=this;if(f.removed){e&&e.call(f);return f}var g=b instanceof cD?b:a.animation(b,c,d,e);cE(g,f,g.percents[0],null,f.attr());return f},cl.setTime=function(a,b){a&&b!=null&&this.status(a,y(b,a.ms)/a.ms);return this},cl.status=function(a,b){var c=[],d=0,e,f;if(b!=null){cE(a,this,-1,y(b,1));return this}e=cy.length;for(;d<e;d++){f=cy[d];if(f.el.id==this.id&&(!a||f.anim==a)){if(a)return f.status;c.push({anim:f.anim,status:f.status})}}if(a)return 0;return c},cl.pause=function(a){for(var b=0;b<cy.length;b++)cy[b].el.id==this.id&&(!a||cy[b].anim==a)&&eve("raphael.anim.pause."+this.id,this,cy[b].anim)!==!1&&(cy[b].paused=!0);return this},cl.resume=function(a){for(var b=0;b<cy.length;b++)if(cy[b].el.id==this.id&&(!a||cy[b].anim==a)){var c=cy[b];eve("raphael.anim.resume."+this.id,this,c.anim)!==!1&&(delete c.paused,this.status(c.anim,c.status))}return this},cl.stop=function(a){for(var b=0;b<cy.length;b++)cy[b].el.id==this.id&&(!a||cy[b].anim==a)&&eve("raphael.anim.stop."+this.id,this,cy[b].anim)!==!1&&cy.splice(b--,1);return this},eve.on("raphael.remove",cF),eve.on("raphael.clear",cF),cl.toString=function(){return"Raphaël’s object"};var cG=function(a){this.items=[],this.length=0,this.type="set";if(a)for(var b=0,c=a.length;b<c;b++)a[b]&&(a[b].constructor==cl.constructor||a[b].constructor==cG)&&(this[this.items.length]=this.items[this.items.length]=a[b],this.length++)},cH=cG.prototype;cH.push=function(){var a,b;for(var c=0,d=arguments.length;c<d;c++)a=arguments[c],a&&(a.constructor==cl.constructor||a.constructor==cG)&&(b=this.items.length,this[b]=this.items[b]=a,this.length++);return this},cH.pop=function(){this.length&&delete this[this.length--];return this.items.pop()},cH.forEach=function(a,b){for(var c=0,d=this.items.length;c<d;c++)if(a.call(b,this.items[c],c)===!1)return this;return this};for(var cI in cl)cl[g](cI)&&(cH[cI]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a][m](c,b)})}}(cI));cH.attr=function(b,c){if(b&&a.is(b,E)&&a.is(b[0],"object"))for(var d=0,e=b.length;d<e;d++)this.items[d].attr(b[d]);else for(var f=0,g=this.items.length;f<g;f++)this.items[f].attr(b,c);return this},cH.clear=function(){while(this.length)this.pop()},cH.splice=function(a,b,c){a=a<0?x(this.length+a,0):a,b=x(0,y(this.length-a,b));var d=[],e=[],f=[],g;for(g=2;g<arguments.length;g++)f.push(arguments[g]);for(g=0;g<b;g++)e.push(this[a+g]);for(;g<this.length-a;g++)d.push(this[a+g]);var h=f.length;for(g=0;g<h+d.length;g++)this.items[a+g]=this[a+g]=g<h?f[g]:d[g-h];g=this.items.length=this.length-=b-h;while(this[g])delete this[g++];return new cG(e)},cH.exclude=function(a){for(var b=0,c=this.length;b<c;b++)if(this[b]==a){this.splice(b,1);return!0}},cH.animate=function(b,c,d,e){(a.is(d,"function")||!d)&&(e=d||null);var f=this.items.length,g=f,h,i=this,j;if(!f)return this;e&&(j=function(){!--f&&e.call(i)}),d=a.is(d,D)?d:j;var k=a.animation(b,c,d,j);h=this.items[--g].animate(k);while(g--)this.items[g]&&!this.items[g].removed&&this.items[g].animateWith(h,k,k);return this},cH.insertAfter=function(a){var b=this.items.length;while(b--)this.items[b].insertAfter(a);return this},cH.getBBox=function(){var a=[],b=[],c=[],d=[];for(var e=this.items.length;e--;)if(!this.items[e].removed){var f=this.items[e].getBBox();a.push(f.x),b.push(f.y),c.push(f.x+f.width),d.push(f.y+f.height)}a=y[m](0,a),b=y[m](0,b),c=x[m](0,c),d=x[m](0,d);return{x:a,y:b,x2:c,y2:d,width:c-a,height:d-b}},cH.clone=function(a){a=new cG;for(var b=0,c=this.items.length;b<c;b++)a.push(this.items[b].clone());return a},cH.toString=function(){return"Raphaël‘s set"},a.registerFont=function(a){if(!a.face)return a;this.fonts=this.fonts||{};var b={w:a.w,face:{},glyphs:{}},c=a.face["font-family"];for(var d in a.face)a.face[g](d)&&(b.face[d]=a.face[d]);this.fonts[c]?this.fonts[c].push(b):this.fonts[c]=[b];if(!a.svg){b.face["units-per-em"]=R(a.face["units-per-em"],10);for(var e in a.glyphs)if(a.glyphs[g](e)){var f=a.glyphs[e];b.glyphs[e]={w:f.w,k:{},d:f.d&&"M"+f.d.replace(/[mlcxtrv]/g,function(a){return{l:"L",c:"C",x:"z",t:"m",r:"l",v:"c"}[a]||"M"})+"z"};if(f.k)for(var h in f.k)f[g](h)&&(b.glyphs[e].k[h]=f.k[h])}}return a},k.getFont=function(b,c,d,e){e=e||"normal",d=d||"normal",c=+c||{normal:400,bold:700,lighter:300,bolder:800}[c]||400;if(!!a.fonts){var f=a.fonts[b];if(!f){var h=new RegExp("(^|\\s)"+b.replace(/[^\w\d\s+!~.:_-]/g,p)+"(\\s|$)","i");for(var i in a.fonts)if(a.fonts[g](i)&&h.test(i)){f=a.fonts[i];break}}var j;if(f)for(var k=0,l=f.length;k<l;k++){j=f[k];if(j.face["font-weight"]==c&&(j.face["font-style"]==d||!j.face["font-style"])&&j.face["font-stretch"]==e)break}return j}},k.print=function(b,d,e,f,g,h,i){h=h||"middle",i=x(y(i||0,1),-1);var j=r(e)[s](p),k=0,l=0,m=p,n;a.is(f,e)&&(f=this.getFont(f));if(f){n=(g||16)/f.face["units-per-em"];var o=f.face.bbox[s](c),q=+o[0],t=o[3]-o[1],u=0,v=+o[1]+(h=="baseline"?t+ +f.face.descent:t/2);for(var w=0,z=j.length;w<z;w++){if(j[w]=="\n")k=0,B=0,l=0,u+=t;else{var A=l&&f.glyphs[j[w-1]]||{},B=f.glyphs[j[w]];k+=l?(A.w||f.w)+(A.k&&A.k[j[w]]||0)+f.w*i:0,l=1}B&&B.d&&(m+=a.transformPath(B.d,["t",k*n,u*n,"s",n,n,q,v,"t",(b-q)/n,(d-v)/n]))}}return this.path(m).attr({fill:"#000",stroke:"none"})},k.add=function(b){if(a.is(b,"array")){var c=this.set(),e=0,f=b.length,h;for(;e<f;e++)h=b[e]||{},d[g](h.type)&&c.push(this[h.type]().attr(h))}return c},a.format=function(b,c){var d=a.is(c,E)?[0][n](c):arguments;b&&a.is(b,D)&&d.length-1&&(b=b.replace(e,function(a,b){return d[++b]==null?p:d[b]}));return b||p},a.fullfill=function(){var a=/\{([^\}]+)\}/g,b=/(?:(?:^|\.)(.+?)(?=\[|\.|$|\()|\[('|")(.+?)\2\])(\(\))?/g,c=function(a,c,d){var e=d;c.replace(b,function(a,b,c,d,f){b=b||d,e&&(b in e&&(e=e[b]),typeof e=="function"&&f&&(e=e()))}),e=(e==null||e==d?a:e)+"";return e};return function(b,d){return String(b).replace(a,function(a,b){return c(a,b,d)})}}(),a.ninja=function(){i.was?h.win.Raphael=i.is:delete Raphael;return a},a.st=cH,function(b,c,d){function e(){/in/.test(b.readyState)?setTimeout(e,9):a.eve("raphael.DOMload")}b.readyState==null&&b.addEventListener&&(b.addEventListener(c,d=function(){b.removeEventListener(c,d,!1),b.readyState="complete"},!1),b.readyState="loading"),e()}(document,"DOMContentLoaded"),i.was?h.win.Raphael=a:Raphael=a,eve.on("raphael.DOMload",function(){b=!0})}(),window.Raphael.svg&&function(a){var b="hasOwnProperty",c=String,d=parseFloat,e=parseInt,f=Math,g=f.max,h=f.abs,i=f.pow,j=/[, ]+/,k=a.eve,l="",m=" ",n="http://www.w3.org/1999/xlink",o={block:"M5,0 0,2.5 5,5z",classic:"M5,0 0,2.5 5,5 3.5,3 3.5,2z",diamond:"M2.5,0 5,2.5 2.5,5 0,2.5z",open:"M6,1 1,3.5 6,6",oval:"M2.5,0A2.5,2.5,0,0,1,2.5,5 2.5,2.5,0,0,1,2.5,0z"},p={};a.toString=function(){return"Your browser supports SVG.\nYou are running Raphaël "+this.version};var q=function(d,e){if(e){typeof d=="string"&&(d=q(d));for(var f in e)e[b](f)&&(f.substring(0,6)=="xlink:"?d.setAttributeNS(n,f.substring(6),c(e[f])):d.setAttribute(f,c(e[f])))}else d=a._g.doc.createElementNS("http://www.w3.org/2000/svg",d),d.style&&(d.style.webkitTapHighlightColor="rgba(0,0,0,0)");return d},r=function(b,e){var j="linear",k=b.id+e,m=.5,n=.5,o=b.node,p=b.paper,r=o.style,s=a._g.doc.getElementById(k);if(!s){e=c(e).replace(a._radial_gradient,function(a,b,c){j="radial";if(b&&c){m=d(b),n=d(c);var e=(n>.5)*2-1;i(m-.5,2)+i(n-.5,2)>.25&&(n=f.sqrt(.25-i(m-.5,2))*e+.5)&&n!=.5&&(n=n.toFixed(5)-1e-5*e)}return l}),e=e.split(/\s*\-\s*/);if(j=="linear"){var t=e.shift();t=-d(t);if(isNaN(t))return null;var u=[0,0,f.cos(a.rad(t)),f.sin(a.rad(t))],v=1/(g(h(u[2]),h(u[3]))||1);u[2]*=v,u[3]*=v,u[2]<0&&(u[0]=-u[2],u[2]=0),u[3]<0&&(u[1]=-u[3],u[3]=0)}var w=a._parseDots(e);if(!w)return null;k=k.replace(/[\(\)\s,\xb0#]/g,"_"),b.gradient&&k!=b.gradient.id&&(p.defs.removeChild(b.gradient),delete b.gradient);if(!b.gradient){s=q(j+"Gradient",{id:k}),b.gradient=s,q(s,j=="radial"?{fx:m,fy:n}:{x1:u[0],y1:u[1],x2:u[2],y2:u[3],gradientTransform:b.matrix.invert()}),p.defs.appendChild(s);for(var x=0,y=w.length;x<y;x++)s.appendChild(q("stop",{offset:w[x].offset?w[x].offset:x?"100%":"0%","stop-color":w[x].color||"#fff"}))}}q(o,{fill:"url(#"+k+")",opacity:1,"fill-opacity":1}),r.fill=l,r.opacity=1,r.fillOpacity=1;return 1},s=function(a){var b=a.getBBox(1);q(a.pattern,{patternTransform:a.matrix.invert()+" translate("+b.x+","+b.y+")"})},t=function(d,e,f){if(d.type=="path"){var g=c(e).toLowerCase().split("-"),h=d.paper,i=f?"end":"start",j=d.node,k=d.attrs,m=k["stroke-width"],n=g.length,r="classic",s,t,u,v,w,x=3,y=3,z=5;while(n--)switch(g[n]){case"block":case"classic":case"oval":case"diamond":case"open":case"none":r=g[n];break;case"wide":y=5;break;case"narrow":y=2;break;case"long":x=5;break;case"short":x=2}r=="open"?(x+=2,y+=2,z+=2,u=1,v=f?4:1,w={fill:"none",stroke:k.stroke}):(v=u=x/2,w={fill:k.stroke,stroke:"none"}),d._.arrows?f?(d._.arrows.endPath&&p[d._.arrows.endPath]--,d._.arrows.endMarker&&p[d._.arrows.endMarker]--):(d._.arrows.startPath&&p[d._.arrows.startPath]--,d._.arrows.startMarker&&p[d._.arrows.startMarker]--):d._.arrows={};if(r!="none"){var A="raphael-marker-"+r,B="raphael-marker-"+i+r+x+y;a._g.doc.getElementById(A)?p[A]++:(h.defs.appendChild(q(q("path"),{"stroke-linecap":"round",d:o[r],id:A})),p[A]=1);var C=a._g.doc.getElementById(B),D;C?(p[B]++,D=C.getElementsByTagName("use")[0]):(C=q(q("marker"),{id:B,markerHeight:y,markerWidth:x,orient:"auto",refX:v,refY:y/2}),D=q(q("use"),{"xlink:href":"#"+A,transform:(f?"rotate(180 "+x/2+" "+y/2+") ":l)+"scale("+x/z+","+y/z+")","stroke-width":(1/((x/z+y/z)/2)).toFixed(4)}),C.appendChild(D),h.defs.appendChild(C),p[B]=1),q(D,w);var F=u*(r!="diamond"&&r!="oval");f?(s=d._.arrows.startdx*m||0,t=a.getTotalLength(k.path)-F*m):(s=F*m,t=a.getTotalLength(k.path)-(d._.arrows.enddx*m||0)),w={},w["marker-"+i]="url(#"+B+")";if(t||s)w.d=Raphael.getSubpath(k.path,s,t);q(j,w),d._.arrows[i+"Path"]=A,d._.arrows[i+"Marker"]=B,d._.arrows[i+"dx"]=F,d._.arrows[i+"Type"]=r,d._.arrows[i+"String"]=e}else f?(s=d._.arrows.startdx*m||0,t=a.getTotalLength(k.path)-s):(s=0,t=a.getTotalLength(k.path)-(d._.arrows.enddx*m||0)),d._.arrows[i+"Path"]&&q(j,{d:Raphael.getSubpath(k.path,s,t)}),delete d._.arrows[i+"Path"],delete d._.arrows[i+"Marker"],delete d._.arrows[i+"dx"],delete d._.arrows[i+"Type"],delete d._.arrows[i+"String"];for(w in p)if(p[b](w)&&!p[w]){var G=a._g.doc.getElementById(w);G&&G.parentNode.removeChild(G)}}},u={"":[0],none:[0],"-":[3,1],".":[1,1],"-.":[3,1,1,1],"-..":[3,1,1,1,1,1],". ":[1,3],"- ":[4,3],"--":[8,3],"- .":[4,3,1,3],"--.":[8,3,1,3],"--..":[8,3,1,3,1,3]},v=function(a,b,d){b=u[c(b).toLowerCase()];if(b){var e=a.attrs["stroke-width"]||"1",f={round:e,square:e,butt:0}[a.attrs["stroke-linecap"]||d["stroke-linecap"]]||0,g=[],h=b.length;while(h--)g[h]=b[h]*e+(h%2?1:-1)*f;q(a.node,{"stroke-dasharray":g.join(",")})}},w=function(d,f){var i=d.node,k=d.attrs,m=i.style.visibility;i.style.visibility="hidden";for(var o in f)if(f[b](o)){if(!a._availableAttrs[b](o))continue;var p=f[o];k[o]=p;switch(o){case"blur":d.blur(p);break;case"href":case"title":case"target":var u=i.parentNode;if(u.tagName.toLowerCase()!="a"){var w=q("a");u.insertBefore(w,i),w.appendChild(i),u=w}o=="target"?u.setAttributeNS(n,"show",p=="blank"?"new":p):u.setAttributeNS(n,o,p);break;case"cursor":i.style.cursor=p;break;case"transform":d.transform(p);break;case"arrow-start":t(d,p);break;case"arrow-end":t(d,p,1);break;case"clip-rect":var x=c(p).split(j);if(x.length==4){d.clip&&d.clip.parentNode.parentNode.removeChild(d.clip.parentNode);var z=q("clipPath"),A=q("rect");z.id=a.createUUID(),q(A,{x:x[0],y:x[1],width:x[2],height:x[3]}),z.appendChild(A),d.paper.defs.appendChild(z),q(i,{"clip-path":"url(#"+z.id+")"}),d.clip=A}if(!p){var B=i.getAttribute("clip-path");if(B){var C=a._g.doc.getElementById(B.replace(/(^url\(#|\)$)/g,l));C&&C.parentNode.removeChild(C),q(i,{"clip-path":l}),delete d.clip}}break;case"path":d.type=="path"&&(q(i,{d:p?k.path=a._pathToAbsolute(p):"M0,0"}),d._.dirty=1,d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1)));break;case"width":i.setAttribute(o,p),d._.dirty=1;if(k.fx)o="x",p=k.x;else break;case"x":k.fx&&(p=-k.x-(k.width||0));case"rx":if(o=="rx"&&d.type=="rect")break;case"cx":i.setAttribute(o,p),d.pattern&&s(d),d._.dirty=1;break;case"height":i.setAttribute(o,p),d._.dirty=1;if(k.fy)o="y",p=k.y;else break;case"y":k.fy&&(p=-k.y-(k.height||0));case"ry":if(o=="ry"&&d.type=="rect")break;case"cy":i.setAttribute(o,p),d.pattern&&s(d),d._.dirty=1;break;case"r":d.type=="rect"?q(i,{rx:p,ry:p}):i.setAttribute(o,p),d._.dirty=1;break;case"src":d.type=="image"&&i.setAttributeNS(n,"href",p);break;case"stroke-width":if(d._.sx!=1||d._.sy!=1)p/=g(h(d._.sx),h(d._.sy))||1;d.paper._vbSize&&(p*=d.paper._vbSize),i.setAttribute(o,p),k["stroke-dasharray"]&&v(d,k["stroke-dasharray"],f),d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1));break;case"stroke-dasharray":v(d,p,f);break;case"fill":var D=c(p).match(a._ISURL);if(D){z=q("pattern");var F=q("image");z.id=a.createUUID(),q(z,{x:0,y:0,patternUnits:"userSpaceOnUse",height:1,width:1}),q(F,{x:0,y:0,"xlink:href":D[1]}),z.appendChild(F),function(b){a._preload(D[1],function(){var a=this.offsetWidth,c=this.offsetHeight;q(b,{width:a,height:c}),q(F,{width:a,height:c}),d.paper.safari()})}(z),d.paper.defs.appendChild(z),q(i,{fill:"url(#"+z.id+")"}),d.pattern=z,d.pattern&&s(d);break}var G=a.getRGB(p);if(!G.error)delete f.gradient,delete k.gradient,!a.is(k.opacity,"undefined")&&a.is(f.opacity,"undefined")&&q(i,{opacity:k.opacity}),!a.is(k["fill-opacity"],"undefined")&&a.is(f["fill-opacity"],"undefined")&&q(i,{"fill-opacity":k["fill-opacity"]});else if((d.type=="circle"||d.type=="ellipse"||c(p).charAt()!="r")&&r(d,p)){if("opacity"in k||"fill-opacity"in k){var H=a._g.doc.getElementById(i.getAttribute("fill").replace(/^url\(#|\)$/g,l));if(H){var I=H.getElementsByTagName("stop");q(I[I.length-1],{"stop-opacity":("opacity"in k?k.opacity:1)*("fill-opacity"in k?k["fill-opacity"]:1)})}}k.gradient=p,k.fill="none";break}G[b]("opacity")&&q(i,{"fill-opacity":G.opacity>1?G.opacity/100:G.opacity});case"stroke":G=a.getRGB(p),i.setAttribute(o,G.hex),o=="stroke"&&G[b]("opacity")&&q(i,{"stroke-opacity":G.opacity>1?G.opacity/100:G.opacity}),o=="stroke"&&d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1));break;case"gradient":(d.type=="circle"||d.type=="ellipse"||c(p).charAt()!="r")&&r(d,p);break;case"opacity":k.gradient&&!k[b]("stroke-opacity")&&q(i,{"stroke-opacity":p>1?p/100:p});case"fill-opacity":if(k.gradient){H=a._g.doc.getElementById(i.getAttribute("fill").replace(/^url\(#|\)$/g,l)),H&&(I=H.getElementsByTagName("stop"),q(I[I.length-1],{"stop-opacity":p}));break};default:o=="font-size"&&(p=e(p,10)+"px");var J=o.replace(/(\-.)/g,function(a){return a.substring(1).toUpperCase()});i.style[J]=p,d._.dirty=1,i.setAttribute(o,p)}}y(d,f),i.style.visibility=m},x=1.2,y=function(d,f){if(d.type=="text"&&!!(f[b]("text")||f[b]("font")||f[b]("font-size")||f[b]("x")||f[b]("y"))){var g=d.attrs,h=d.node,i=h.firstChild?e(a._g.doc.defaultView.getComputedStyle(h.firstChild,l).getPropertyValue("font-size"),10):10;if(f[b]("text")){g.text=f.text;while(h.firstChild)h.removeChild(h.firstChild);var j=c(f.text).split("\n"),k=[],m;for(var n=0,o=j.length;n<o;n++)m=q("tspan"),n&&q(m,{dy:i*x,x:g.x}),m.appendChild(a._g.doc.createTextNode(j[n])),h.appendChild(m),k[n]=m}else{k=h.getElementsByTagName("tspan");for(n=0,o=k.length;n<o;n++)n?q(k[n],{dy:i*x,x:g.x}):q(k[0],{dy:0})}q(h,{x:g.x,y:g.y}),d._.dirty=1;var p=d._getBBox(),r=g.y-(p.y+p.height/2);r&&a.is(r,"finite")&&q(k[0],{dy:r})}},z=function(b,c){var d=0,e=0;this[0]=this.node=b,b.raphael=!0,this.id=a._oid++,b.raphaelid=this.id,this.matrix=a.matrix(),this.realPath=null,this.paper=c,this.attrs=this.attrs||{},this._={transform:[],sx:1,sy:1,deg:0,dx:0,dy:0,dirty:1},!c.bottom&&(c.bottom=this),this.prev=c.top,c.top&&(c.top.next=this),c.top=this,this.next=null},A=a.el;z.prototype=A,A.constructor=z,a._engine.path=function(a,b){var c=q("path");b.canvas&&b.canvas.appendChild(c);var d=new z(c,b);d.type="path",w(d,{fill:"none",stroke:"#000",path:a});return d},A.rotate=function(a,b,e){if(this.removed)return this;a=c(a).split(j),a.length-1&&(b=d(a[1]),e=d(a[2])),a=d(a[0]),e==null&&(b=e);if(b==null||e==null){var f=this.getBBox(1);b=f.x+f.width/2,e=f.y+f.height/2}this.transform(this._.transform.concat([["r",a,b,e]]));return this},A.scale=function(a,b,e,f){if(this.removed)return this;a=c(a).split(j),a.length-1&&(b=d(a[1]),e=d(a[2]),f=d(a[3])),a=d(a[0]),b==null&&(b=a),f==null&&(e=f);if(e==null||f==null)var g=this.getBBox(1);e=e==null?g.x+g.width/2:e,f=f==null?g.y+g.height/2:f,this.transform(this._.transform.concat([["s",a,b,e,f]]));return this},A.translate=function(a,b){if(this.removed)return this;a=c(a).split(j),a.length-1&&(b=d(a[1])),a=d(a[0])||0,b=+b||0,this.transform(this._.transform.concat([["t",a,b]]));return this},A.transform=function(c){var d=this._;if(c==null)return d.transform;a._extractTransform(this,c),this.clip&&q(this.clip,{transform:this.matrix.invert()}),this.pattern&&s(this),this.node&&q(this.node,{transform:this.matrix});if(d.sx!=1||d.sy!=1){var e=this.attrs[b]("stroke-width")?this.attrs["stroke-width"]:1;this.attr({"stroke-width":e})}return this},A.hide=function(){!this.removed&&this.paper.safari(this.node.style.display="none");return this},A.show=function(){!this.removed&&this.paper.safari(this.node.style.display="");return this},A.remove=function(){if(!this.removed&&!!this.node.parentNode){var b=this.paper;b.__set__&&b.__set__.exclude(this),k.unbind("raphael.*.*."+this.id),this.gradient&&b.defs.removeChild(this.gradient),a._tear(this,b),this.node.parentNode.tagName.toLowerCase()=="a"?this.node.parentNode.parentNode.removeChild(this.node.parentNode):this.node.parentNode.removeChild(this.node);for(var c in this)this[c]=typeof this[c]=="function"?a._removedFactory(c):null;this.removed=!0}},A._getBBox=function(){if(this.node.style.display=="none"){this.show();var a=!0}var b={};try{b=this.node.getBBox()}catch(c){}finally{b=b||{}}a&&this.hide();return b},A.attr=function(c,d){if(this.removed)return this;if(c==null){var e={};for(var f in this.attrs)this.attrs[b](f)&&(e[f]=this.attrs[f]);e.gradient&&e.fill=="none"&&(e.fill=e.gradient)&&delete e.gradient,e.transform=this._.transform;return e}if(d==null&&a.is(c,"string")){if(c=="fill"&&this.attrs.fill=="none"&&this.attrs.gradient)return this.attrs.gradient;if(c=="transform")return this._.transform;var g=c.split(j),h={};for(var i=0,l=g.length;i<l;i++)c=g[i],c in this.attrs?h[c]=this.attrs[c]:a.is(this.paper.customAttributes[c],"function")?h[c]=this.paper.customAttributes[c].def:h[c]=a._availableAttrs[c];return l-1?h:h[g[0]]}if(d==null&&a.is(c,"array")){h={};for(i=0,l=c.length;i<l;i++)h[c[i]]=this.attr(c[i]);return h}if(d!=null){var m={};m[c]=d}else c!=null&&a.is(c,"object")&&(m=c);for(var n in m)k("raphael.attr."+n+"."+this.id,this,m[n]);for(n in this.paper.customAttributes)if(this.paper.customAttributes[b](n)&&m[b](n)&&a.is(this.paper.customAttributes[n],"function")){var o=this.paper.customAttributes[n].apply(this,[].concat(m[n]));this.attrs[n]=m[n];for(var p in o)o[b](p)&&(m[p]=o[p])}w(this,m);return this},A.toFront=function(){if(this.removed)return this;this.node.parentNode.tagName.toLowerCase()=="a"?this.node.parentNode.parentNode.appendChild(this.node.parentNode):this.node.parentNode.appendChild(this.node);var b=this.paper;b.top!=this&&a._tofront(this,b);return this},A.toBack=function(){if(this.removed)return this;var b=this.node.parentNode;b.tagName.toLowerCase()=="a"?b.parentNode.insertBefore(this.node.parentNode,this.node.parentNode.parentNode.firstChild):b.firstChild!=this.node&&b.insertBefore(this.node,this.node.parentNode.firstChild),a._toback(this,this.paper);var c=this.paper;return this},A.insertAfter=function(b){if(this.removed)return this;var c=b.node||b[b.length-1].node;c.nextSibling?c.parentNode.insertBefore(this.node,c.nextSibling):c.parentNode.appendChild(this.node),a._insertafter(this,b,this.paper);return this},A.insertBefore=function(b){if(this.removed)return this;var c=b.node||b[0].node;c.parentNode.insertBefore(this.node,c),a._insertbefore(this,b,this.paper);return this},A.blur=function(b){var c=this;if(+b!==0){var d=q("filter"),e=q("feGaussianBlur");c.attrs.blur=b,d.id=a.createUUID(),q(e,{stdDeviation:+b||1.5}),d.appendChild(e),c.paper.defs.appendChild(d),c._blur=d,q(c.node,{filter:"url(#"+d.id+")"})}else c._blur&&(c._blur.parentNode.removeChild(c._blur),delete c._blur,delete c.attrs.blur),c.node.removeAttribute("filter")},a._engine.circle=function(a,b,c,d){var e=q("circle");a.canvas&&a.canvas.appendChild(e);var f=new z(e,a);f.attrs={cx:b,cy:c,r:d,fill:"none",stroke:"#000"},f.type="circle",q(e,f.attrs);return f},a._engine.rect=function(a,b,c,d,e,f){var g=q("rect");a.canvas&&a.canvas.appendChild(g);var h=new z(g,a);h.attrs={x:b,y:c,width:d,height:e,r:f||0,rx:f||0,ry:f||0,fill:"none",stroke:"#000"},h.type="rect",q(g,h.attrs);return h},a._engine.ellipse=function(a,b,c,d,e){var f=q("ellipse");a.canvas&&a.canvas.appendChild(f);var g=new z(f,a);g.attrs={cx:b,cy:c,rx:d,ry:e,fill:"none",stroke:"#000"},g.type="ellipse",q(f,g.attrs);return g},a._engine.image=function(a,b,c,d,e,f){var g=q("image");q(g,{x:c,y:d,width:e,height:f,preserveAspectRatio:"none"}),g.setAttributeNS(n,"href",b),a.canvas&&a.canvas.appendChild(g);var h=new z(g,a);h.attrs={x:c,y:d,width:e,height:f,src:b},h.type="image";return h},a._engine.text=function(b,c,d,e){var f=q("text");b.canvas&&b.canvas.appendChild(f);var g=new z(f,b);g.attrs={x:c,y:d,"text-anchor":"middle",text:e,font:a._availableAttrs.font,stroke:"none",fill:"#000"},g.type="text",w(g,g.attrs);return g},a._engine.setSize=function(a,b){this.width=a||this.width,this.height=b||this.height,this.canvas.setAttribute("width",this.width),this.canvas.setAttribute("height",this.height),this._viewBox&&this.setViewBox.apply(this,this._viewBox);return this},a._engine.create=function(){var b=a._getContainer.apply(0,arguments),c=b&&b.container,d=b.x,e=b.y,f=b.width,g=b.height;if(!c)throw new Error("SVG container not found.");var h=q("svg"),i="overflow:hidden;",j;d=d||0,e=e||0,f=f||512,g=g||342,q(h,{height:g,version:1.1,width:f,xmlns:"http://www.w3.org/2000/svg"}),c==1?(h.style.cssText=i+"position:absolute;left:"+d+"px;top:"+e+"px",a._g.doc.body.appendChild(h),j=1):(h.style.cssText=i+"position:relative",c.firstChild?c.insertBefore(h,c.firstChild):c.appendChild(h)),c=new a._Paper,c.width=f,c.height=g,c.canvas=h,c.clear(),c._left=c._top=0,j&&(c.renderfix=function(){}),c.renderfix();return c},a._engine.setViewBox=function(a,b,c,d,e){k("raphael.setViewBox",this,this._viewBox,[a,b,c,d,e]);var f=g(c/this.width,d/this.height),h=this.top,i=e?"meet":"xMinYMin",j,l;a==null?(this._vbSize&&(f=1),delete this._vbSize,j="0 0 "+this.width+m+this.height):(this._vbSize=f,j=a+m+b+m+c+m+d),q(this.canvas,{viewBox:j,preserveAspectRatio:i});while(f&&h)l="stroke-width"in h.attrs?h.attrs["stroke-width"]:1,h.attr({"stroke-width":l}),h._.dirty=1,h._.dirtyT=1,h=h.prev;this._viewBox=[a,b,c,d,!!e];return this},a.prototype.renderfix=function(){var a=this.canvas,b=a.style,c;try{c=a.getScreenCTM()||a.createSVGMatrix()}catch(d){c=a.createSVGMatrix()}var e=-c.e%1,f=-c.f%1;if(e||f)e&&(this._left=(this._left+e)%1,b.left=this._left+"px"),f&&(this._top=(this._top+f)%1,b.top=this._top+"px")},a.prototype.clear=function(){a.eve("raphael.clear",this);var b=this.canvas;while(b.firstChild)b.removeChild(b.firstChild);this.bottom=this.top=null,(this.desc=q("desc")).appendChild(a._g.doc.createTextNode("Created with Raphaël "+a.version)),b.appendChild(this.desc),b.appendChild(this.defs=q("defs"))},a.prototype.remove=function(){k("raphael.remove",this),this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas);for(var b in this)this[b]=typeof this[b]=="function"?a._removedFactory(b):null};var B=a.st;for(var C in A)A[b](C)&&!B[b](C)&&(B[C]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a].apply(c,b)})}}(C))}(window.Raphael),window.Raphael.vml&&function(a){var b="hasOwnProperty",c=String,d=parseFloat,e=Math,f=e.round,g=e.max,h=e.min,i=e.abs,j="fill",k=/[, ]+/,l=a.eve,m=" progid:DXImageTransform.Microsoft",n=" ",o="",p={M:"m",L:"l",C:"c",Z:"x",m:"t",l:"r",c:"v",z:"x"},q=/([clmz]),?([^clmz]*)/gi,r=/ progid:\S+Blur\([^\)]+\)/g,s=/-?[^,\s-]+/g,t="position:absolute;left:0;top:0;width:1px;height:1px",u=21600,v={path:1,rect:1,image:1},w={circle:1,ellipse:1},x=function(b){var d=/[ahqstv]/ig,e=a._pathToAbsolute;c(b).match(d)&&(e=a._path2curve),d=/[clmz]/g;if(e==a._pathToAbsolute&&!c(b).match(d)){var g=c(b).replace(q,function(a,b,c){var d=[],e=b.toLowerCase()=="m",g=p[b];c.replace(s,function(a){e&&d.length==2&&(g+=d+p[b=="m"?"l":"L"],d=[]),d.push(f(a*u))});return g+d});return g}var h=e(b),i,j;g=[];for(var k=0,l=h.length;k<l;k++){i=h[k],j=h[k][0].toLowerCase(),j=="z"&&(j="x");for(var m=1,r=i.length;m<r;m++)j+=f(i[m]*u)+(m!=r-1?",":o);g.push(j)}return g.join(n)},y=function(b,c,d){var e=a.matrix();e.rotate(-b,.5,.5);return{dx:e.x(c,d),dy:e.y(c,d)}},z=function(a,b,c,d,e,f){var g=a._,h=a.matrix,k=g.fillpos,l=a.node,m=l.style,o=1,p="",q,r=u/b,s=u/c;m.visibility="hidden";if(!!b&&!!c){l.coordsize=i(r)+n+i(s),m.rotation=f*(b*c<0?-1:1);if(f){var t=y(f,d,e);d=t.dx,e=t.dy}b<0&&(p+="x"),c<0&&(p+=" y")&&(o=-1),m.flip=p,l.coordorigin=d*-r+n+e*-s;if(k||g.fillsize){var v=l.getElementsByTagName(j);v=v&&v[0],l.removeChild(v),k&&(t=y(f,h.x(k[0],k[1]),h.y(k[0],k[1])),v.position=t.dx*o+n+t.dy*o),g.fillsize&&(v.size=g.fillsize[0]*i(b)+n+g.fillsize[1]*i(c)),l.appendChild(v)}m.visibility="visible"}};a.toString=function(){return"Your browser doesn’t support SVG. Falling down to VML.\nYou are running Raphaël "+this.version};var A=function(a,b,d){var e=c(b).toLowerCase().split("-"),f=d?"end":"start",g=e.length,h="classic",i="medium",j="medium";while(g--)switch(e[g]){case"block":case"classic":case"oval":case"diamond":case"open":case"none":h=e[g];break;case"wide":case"narrow":j=e[g];break;case"long":case"short":i=e[g]}var k=a.node.getElementsByTagName("stroke")[0];k[f+"arrow"]=h,k[f+"arrowlength"]=i,k[f+"arrowwidth"]=j},B=function(e,i){e.attrs=e.attrs||{};var l=e.node,m=e.attrs,p=l.style,q,r=v[e.type]&&(i.x!=m.x||i.y!=m.y||i.width!=m.width||i.height!=m.height||i.cx!=m.cx||i.cy!=m.cy||i.rx!=m.rx||i.ry!=m.ry||i.r!=m.r),s=w[e.type]&&(m.cx!=i.cx||m.cy!=i.cy||m.r!=i.r||m.rx!=i.rx||m.ry!=i.ry),t=e;for(var y in i)i[b](y)&&(m[y]=i[y]);r&&(m.path=a._getPath[e.type](e),e._.dirty=1),i.href&&(l.href=i.href),i.title&&(l.title=i.title),i.target&&(l.target=i.target),i.cursor&&(p.cursor=i.cursor),"blur"in i&&e.blur(i.blur);if(i.path&&e.type=="path"||r)l.path=x(~c(m.path).toLowerCase().indexOf("r")?a._pathToAbsolute(m.path):m.path),e.type=="image"&&(e._.fillpos=[m.x,m.y],e._.fillsize=[m.width,m.height],z(e,1,1,0,0,0));"transform"in i&&e.transform(i.transform);if(s){var B=+m.cx,D=+m.cy,E=+m.rx||+m.r||0,G=+m.ry||+m.r||0;l.path=a.format("ar{0},{1},{2},{3},{4},{1},{4},{1}x",f((B-E)*u),f((D-G)*u),f((B+E)*u),f((D+G)*u),f(B*u))}if("clip-rect"in i){var H=c(i["clip-rect"]).split(k);if(H.length==4){H[2]=+H[2]+ +H[0],H[3]=+H[3]+ +H[1];var I=l.clipRect||a._g.doc.createElement("div"),J=I.style;J.clip=a.format("rect({1}px {2}px {3}px {0}px)",H),l.clipRect||(J.position="absolute",J.top=0,J.left=0,J.width=e.paper.width+"px",J.height=e.paper.height+"px",l.parentNode.insertBefore(I,l),I.appendChild(l),l.clipRect=I)}i["clip-rect"]||l.clipRect&&(l.clipRect.style.clip="auto")}if(e.textpath){var K=e.textpath.style;i.font&&(K.font=i.font),i["font-family"]&&(K.fontFamily='"'+i["font-family"].split(",")[0].replace(/^['"]+|['"]+$/g,o)+'"'),i["font-size"]&&(K.fontSize=i["font-size"]),i["font-weight"]&&(K.fontWeight=i["font-weight"]),i["font-style"]&&(K.fontStyle=i["font-style"])}"arrow-start"in i&&A(t,i["arrow-start"]),"arrow-end"in i&&A(t,i["arrow-end"],1);if(i.opacity!=null||i["stroke-width"]!=null||i.fill!=null||i.src!=null||i.stroke!=null||i["stroke-width"]!=null||i["stroke-opacity"]!=null||i["fill-opacity"]!=null||i["stroke-dasharray"]!=null||i["stroke-miterlimit"]!=null||i["stroke-linejoin"]!=null||i["stroke-linecap"]!=null){var L=l.getElementsByTagName(j),M=!1;L=L&&L[0],!L&&(M=L=F(j)),e.type=="image"&&i.src&&(L.src=i.src),i.fill&&(L.on=!0);if(L.on==null||i.fill=="none"||i.fill===null)L.on=!1;if(L.on&&i.fill){var N=c(i.fill).match(a._ISURL);if(N){L.parentNode==l&&l.removeChild(L),L.rotate=!0,L.src=N[1],L.type="tile";var O=e.getBBox(1);L.position=O.x+n+O.y,e._.fillpos=[O.x,O.y],a._preload(N[1],function(){e._.fillsize=[this.offsetWidth,this.offsetHeight]})}else L.color=a.getRGB(i.fill).hex,L.src=o,L.type="solid",a.getRGB(i.fill).error&&(t.type in{circle:1,ellipse:1}||c(i.fill).charAt()!="r")&&C(t,i.fill,L)&&(m.fill="none",m.gradient=i.fill,L.rotate=!1)}if("fill-opacity"in i||"opacity"in i){var P=((+m["fill-opacity"]+1||2)-1)*((+m.opacity+1||2)-1)*((+a.getRGB(i.fill).o+1||2)-1);P=h(g(P,0),1),L.opacity=P,L.src&&(L.color="none")}l.appendChild(L);var Q=l.getElementsByTagName("stroke")&&l.getElementsByTagName("stroke")[0],T=!1;!Q&&(T=Q=F("stroke"));if(i.stroke&&i.stroke!="none"||i["stroke-width"]||i["stroke-opacity"]!=null||i["stroke-dasharray"]||i["stroke-miterlimit"]||i["stroke-linejoin"]||i["stroke-linecap"])Q.on=!0;(i.stroke=="none"||i.stroke===null||Q.on==null||i.stroke==0||i["stroke-width"]==0)&&(Q.on=!1);var U=a.getRGB(i.stroke);Q.on&&i.stroke&&(Q.color=U.hex),P=((+m["stroke-opacity"]+1||2)-1)*((+m.opacity+1||2)-1)*((+U.o+1||2)-1);var V=(d(i["stroke-width"])||1)*.75;P=h(g(P,0),1),i["stroke-width"]==null&&(V=m["stroke-width"]),i["stroke-width"]&&(Q.weight=V),V&&V<1&&(P*=V)&&(Q.weight=1),Q.opacity=P,i["stroke-linejoin"]&&(Q.joinstyle=i["stroke-linejoin"]||"miter"),Q.miterlimit=i["stroke-miterlimit"]||8,i["stroke-linecap"]&&(Q.endcap=i["stroke-linecap"]=="butt"?"flat":i["stroke-linecap"]=="square"?"square":"round");if(i["stroke-dasharray"]){var W={"-":"shortdash",".":"shortdot","-.":"shortdashdot","-..":"shortdashdotdot",". ":"dot","- ":"dash","--":"longdash","- .":"dashdot","--.":"longdashdot","--..":"longdashdotdot"};Q.dashstyle=W[b](i["stroke-dasharray"])?W[i["stroke-dasharray"]]:o}T&&l.appendChild(Q)}if(t.type=="text"){t.paper.canvas.style.display=o;var X=t.paper.span,Y=100,Z=m.font&&m.font.match(/\d+(?:\.\d*)?(?=px)/);p=X.style,m.font&&(p.font=m.font),m["font-family"]&&(p.fontFamily=m["font-family"]),m["font-weight"]&&(p.fontWeight=m["font-weight"]),m["font-style"]&&(p.fontStyle=m["font-style"]),Z=d(m["font-size"]||Z&&Z[0])||10,p.fontSize=Z*Y+"px",t.textpath.string&&(X.innerHTML=c(t.textpath.string).replace(/</g,"&#60;").replace(/&/g,"&#38;").replace(/\n/g,"<br>"));var $=X.getBoundingClientRect();t.W=m.w=($.right-$.left)/Y,t.H=m.h=($.bottom-$.top)/Y,t.X=m.x,t.Y=m.y+t.H/2,("x"in i||"y"in i)&&(t.path.v=a.format("m{0},{1}l{2},{1}",f(m.x*u),f(m.y*u),f(m.x*u)+1));var _=["x","y","text","font","font-family","font-weight","font-style","font-size"];for(var ba=0,bb=_.length;ba<bb;ba++)if(_[ba]in i){t._.dirty=1;break}switch(m["text-anchor"]){case"start":t.textpath.style["v-text-align"]="left",t.bbx=t.W/2;break;case"end":t.textpath.style["v-text-align"]="right",t.bbx=-t.W/2;break;default:t.textpath.style["v-text-align"]="center",t.bbx=0}t.textpath.style["v-text-kern"]=!0}},C=function(b,f,g){b.attrs=b.attrs||{};var h=b.attrs,i=Math.pow,j,k,l="linear",m=".5 .5";b.attrs.gradient=f,f=c(f).replace(a._radial_gradient,function(a,b,c){l="radial",b&&c&&(b=d(b),c=d(c),i(b-.5,2)+i(c-.5,2)>.25&&(c=e.sqrt(.25-i(b-.5,2))*((c>.5)*2-1)+.5),m=b+n+c);return o}),f=f.split(/\s*\-\s*/);if(l=="linear"){var p=f.shift();p=-d(p);if(isNaN(p))return null}var q=a._parseDots(f);if(!q)return null;b=b.shape||b.node;if(q.length){b.removeChild(g),g.on=!0,g.method="none",g.color=q[0].color,g.color2=q[q.length-1].color;var r=[];for(var s=0,t=q.length;s<t;s++)q[s].offset&&r.push(q[s].offset+n+q[s].color);g.colors=r.length?r.join():"0% "+g.color,l=="radial"?(g.type="gradientTitle",g.focus="100%",g.focussize="0 0",g.focusposition=m,g.angle=0):(g.type="gradient",g.angle=(270-p)%360),b.appendChild(g)}return 1},D=function(b,c){this[0]=this.node=b,b.raphael=!0,this.id=a._oid++,b.raphaelid=this.id,this.X=0,this.Y=0,this.attrs={},this.paper=c,this.matrix=a.matrix(),this._={transform:[],sx:1,sy:1,dx:0,dy:0,deg:0,dirty:1,dirtyT:1},!c.bottom&&(c.bottom=this),this.prev=c.top,c.top&&(c.top.next=this),c.top=this,this.next=null},E=a.el;D.prototype=E,E.constructor=D,E.transform=function(b){if(b==null)return this._.transform;var d=this.paper._viewBoxShift,e=d?"s"+[d.scale,d.scale]+"-1-1t"+[d.dx,d.dy]:o,f;d&&(f=b=c(b).replace(/\.{3}|\u2026/g,this._.transform||o)),a._extractTransform(this,e+b);var g=this.matrix.clone(),h=this.skew,i=this.node,j,k=~c(this.attrs.fill).indexOf("-"),l=!c(this.attrs.fill).indexOf("url(");g.translate(-0.5,-0.5);if(l||k||this.type=="image"){h.matrix="1 0 0 1",h.offset="0 0",j=g.split();if(k&&j.noRotation||!j.isSimple){i.style.filter=g.toFilter();var m=this.getBBox(),p=this.getBBox(1),q=m.x-p.x,r=m.y-p.y;i.coordorigin=q*-u+n+r*-u,z(this,1,1,q,r,0)}else i.style.filter=o,z(this,j.scalex,j.scaley,j.dx,j.dy,j.rotate)}else i.style.filter=o,h.matrix=c(g),h.offset=g.offset();f&&(this._.transform=f);return this},E.rotate=function(a,b,e){if(this.removed)return this;if(a!=null){a=c(a).split(k),a.length-1&&(b=d(a[1]),e=d(a[2])),a=d(a[0]),e==null&&(b=e);if(b==null||e==null){var f=this.getBBox(1);b=f.x+f.width/2,e=f.y+f.height/2}this._.dirtyT=1,this.transform(this._.transform.concat([["r",a,b,e]]));return this}},E.translate=function(a,b){if(this.removed)return this;a=c(a).split(k),a.length-1&&(b=d(a[1])),a=d(a[0])||0,b=+b||0,this._.bbox&&(this._.bbox.x+=a,this._.bbox.y+=b),this.transform(this._.transform.concat([["t",a,b]]));return this},E.scale=function(a,b,e,f){if(this.removed)return this;a=c(a).split(k),a.length-1&&(b=d(a[1]),e=d(a[2]),f=d(a[3]),isNaN(e)&&(e=null),isNaN(f)&&(f=null)),a=d(a[0]),b==null&&(b=a),f==null&&(e=f);if(e==null||f==null)var g=this.getBBox(1);e=e==null?g.x+g.width/2:e,f=f==null?g.y+g.height/2:f,this.transform(this._.transform.concat([["s",a,b,e,f]])),this._.dirtyT=1;return this},E.hide=function(){!this.removed&&(this.node.style.display="none");return this},E.show=function(){!this.removed&&(this.node.style.display=o);return this},E._getBBox=function(){if(this.removed)return{};return{x:this.X+(this.bbx||0)-this.W/2,y:this.Y-this.H,width:this.W,height:this.H}},E.remove=function(){if(!this.removed&&!!this.node.parentNode){this.paper.__set__&&this.paper.__set__.exclude(this),a.eve.unbind("raphael.*.*."+this.id),a._tear(this,this.paper),this.node.parentNode.removeChild(this.node),this.shape&&this.shape.parentNode.removeChild(this.shape);for(var b in this)this[b]=typeof this[b]=="function"?a._removedFactory(b):null;this.removed=!0}},E.attr=function(c,d){if(this.removed)return this;if(c==null){var e={};for(var f in this.attrs)this.attrs[b](f)&&(e[f]=this.attrs[f]);e.gradient&&e.fill=="none"&&(e.fill=e.gradient)&&delete e.gradient,e.transform=this._.transform;return e}if(d==null&&a.is(c,"string")){if(c==j&&this.attrs.fill=="none"&&this.attrs.gradient)return this.attrs.gradient;var g=c.split(k),h={};for(var i=0,m=g.length;i<m;i++)c=g[i],c in this.attrs?h[c]=this.attrs[c]:a.is(this.paper.customAttributes[c],"function")?h[c]=this.paper.customAttributes[c].def:h[c]=a._availableAttrs[c];return m-1?h:h[g[0]]}if(this.attrs&&d==null&&a.is(c,"array")){h={};for(i=0,m=c.length;i<m;i++)h[c[i]]=this.attr(c[i]);return h}var n;d!=null&&(n={},n[c]=d),d==null&&a.is(c,"object")&&(n=c);for(var o in n)l("raphael.attr."+o+"."+this.id,this,n[o]);if(n){for(o in this.paper.customAttributes)if(this.paper.customAttributes[b](o)&&n[b](o)&&a.is(this.paper.customAttributes[o],"function")){var p=this.paper.customAttributes[o].apply(this,[].concat(n[o]));this.attrs[o]=n[o];for(var q in p)p[b](q)&&(n[q]=p[q])}n.text&&this.type=="text"&&(this.textpath.string=n.text),B(this,n)}return this},E.toFront=function(){!this.removed&&this.node.parentNode.appendChild(this.node),this.paper&&this.paper.top!=this&&a._tofront(this,this.paper);return this},E.toBack=function(){if(this.removed)return this;this.node.parentNode.firstChild!=this.node&&(this.node.parentNode.insertBefore(this.node,this.node.parentNode.firstChild),a._toback(this,this.paper));return this},E.insertAfter=function(b){if(this.removed)return this;b.constructor==a.st.constructor&&(b=b[b.length-1]),b.node.nextSibling?b.node.parentNode.insertBefore(this.node,b.node.nextSibling):b.node.parentNode.appendChild(this.node),a._insertafter(this,b,this.paper);return this},E.insertBefore=function(b){if(this.removed)return this;b.constructor==a.st.constructor&&(b=b[0]),b.node.parentNode.insertBefore(this.node,b.node),a._insertbefore(this,b,this.paper);return this},E.blur=function(b){var c=this.node.runtimeStyle,d=c.filter;d=d.replace(r,o),+b!==0?(this.attrs.blur=b,c.filter=d+n+m+".Blur(pixelradius="+(+b||1.5)+")",c.margin=a.format("-{0}px 0 0 -{0}px",f(+b||1.5))):(c.filter=d,c.margin=0,delete this.attrs.blur)},a._engine.path=function(a,b){var c=F("shape");c.style.cssText=t,c.coordsize=u+n+u,c.coordorigin=b.coordorigin;var d=new D(c,b),e={fill:"none",stroke:"#000"};a&&(e.path=a),d.type="path",d.path=[],d.Path=o,B(d,e),b.canvas.appendChild(c);var f=F("skew");f.on=!0,c.appendChild(f),d.skew=f,d.transform(o);return d},a._engine.rect=function(b,c,d,e,f,g){var h=a._rectPath(c,d,e,f,g),i=b.path(h),j=i.attrs;i.X=j.x=c,i.Y=j.y=d,i.W=j.width=e,i.H=j.height=f,j.r=g,j.path=h,i.type="rect";return i},a._engine.ellipse=function(a,b,c,d,e){var f=a.path(),g=f.attrs;f.X=b-d,f.Y=c-e,f.W=d*2,f.H=e*2,f.type="ellipse",B(f,{cx:b,cy:c,rx:d,ry:e});return f},a._engine.circle=function(a,b,c,d){var e=a.path(),f=e.attrs;e.X=b-d,e.Y=c-d,e.W=e.H=d*2,e.type="circle",B(e,{cx:b,cy:c,r:d});return e},a._engine.image=function(b,c,d,e,f,g){var h=a._rectPath(d,e,f,g),i=b.path(h).attr({stroke:"none"}),k=i.attrs,l=i.node,m=l.getElementsByTagName(j)[0];k.src=c,i.X=k.x=d,i.Y=k.y=e,i.W=k.width=f,i.H=k.height=g,k.path=h,i.type="image",m.parentNode==l&&l.removeChild(m),m.rotate=!0,m.src=c,m.type="tile",i._.fillpos=[d,e],i._.fillsize=[f,g],l.appendChild(m),z(i,1,1,0,0,0);return i},a._engine.text=function(b,d,e,g){var h=F("shape"),i=F("path"),j=F("textpath");d=d||0,e=e||0,g=g||"",i.v=a.format("m{0},{1}l{2},{1}",f(d*u),f(e*u),f(d*u)+1),i.textpathok=!0,j.string=c(g),j.on=!0,h.style.cssText=t,h.coordsize=u+n+u,h.coordorigin="0 0";var k=new D(h,b),l={fill:"#000",stroke:"none",font:a._availableAttrs.font,text:g};k.shape=h,k.path=i,k.textpath=j,k.type="text",k.attrs.text=c(g),k.attrs.x=d,k.attrs.y=e,k.attrs.w=1,k.attrs.h=1,B(k,l),h.appendChild(j),h.appendChild(i),b.canvas.appendChild(h);var m=F("skew");m.on=!0,h.appendChild(m),k.skew=m,k.transform(o);return k},a._engine.setSize=function(b,c){var d=this.canvas.style;this.width=b,this.height=c,b==+b&&(b+="px"),c==+c&&(c+="px"),d.width=b,d.height=c,d.clip="rect(0 "+b+" "+c+" 0)",this._viewBox&&a._engine.setViewBox.apply(this,this._viewBox);return this},a._engine.setViewBox=function(b,c,d,e,f){a.eve("raphael.setViewBox",this,this._viewBox,[b,c,d,e,f]);var h=this.width,i=this.height,j=1/g(d/h,e/i),k,l;f&&(k=i/e,l=h/d,d*k<h&&(b-=(h-d*k)/2/k),e*l<i&&(c-=(i-e*l)/2/l)),this._viewBox=[b,c,d,e,!!f],this._viewBoxShift={dx:-b,dy:-c,scale:j},this.forEach(function(a){a.transform("...")});return this};var F;a._engine.initWin=function(a){var b=a.document;b.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)");try{!b.namespaces.rvml&&b.namespaces.add("rvml","urn:schemas-microsoft-com:vml"),F=function(a){return b.createElement("<rvml:"+a+' class="rvml">')}}catch(c){F=function(a){return b.createElement("<"+a+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}},a._engine.initWin(a._g.win),a._engine.create=function(){var b=a._getContainer.apply(0,arguments),c=b.container,d=b.height,e,f=b.width,g=b.x,h=b.y;if(!c)throw new Error("VML container not found.");var i=new a._Paper,j=i.canvas=a._g.doc.createElement("div"),k=j.style;g=g||0,h=h||0,f=f||512,d=d||342,i.width=f,i.height=d,f==+f&&(f+="px"),d==+d&&(d+="px"),i.coordsize=u*1e3+n+u*1e3,i.coordorigin="0 0",i.span=a._g.doc.createElement("span"),i.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;",j.appendChild(i.span),k.cssText=a.format("top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden",f,d),c==1?(a._g.doc.body.appendChild(j),k.left=g+"px",k.top=h+"px",k.position="absolute"):c.firstChild?c.insertBefore(j,c.firstChild):c.appendChild(j),i.renderfix=function(){};return i},a.prototype.clear=function(){a.eve("raphael.clear",this),this.canvas.innerHTML=o,this.span=a._g.doc.createElement("span"),this.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;",this.canvas.appendChild(this.span),this.bottom=this.top=null},a.prototype.remove=function(){a.eve("raphael.remove",this),this.canvas.parentNode.removeChild(this.canvas);for(var b in this)this[b]=typeof this[b]=="function"?a._removedFactory(b):null;return!0};var G=a.st;for(var H in E)E[b](H)&&!G[b](H)&&(G[H]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a].apply(c,b)})}}(H))}(window.Raphael) \ No newline at end of file diff --git a/assets/js/plugins/nestable/jquery.nestable.js b/assets/js/plugins/nestable/jquery.nestable.js deleted file mode 100644 index 53b9c285..00000000 --- a/assets/js/plugins/nestable/jquery.nestable.js +++ /dev/null @@ -1,484 +0,0 @@ -/*! - * Nestable jQuery Plugin - Copyright (c) 2012 David Bushell - http://dbushell.com/ - * Dual-licensed under the BSD or MIT licenses - */ -;(function($, window, document, undefined) -{ - var hasTouch = 'ontouchstart' in document; - - /** - * Detect CSS pointer-events property - * events are normally disabled on the dragging element to avoid conflicts - * https://github.com/ausi/Feature-detection-technique-for-pointer-events/blob/master/modernizr-pointerevents.js - */ - var hasPointerEvents = (function() - { - var el = document.createElement('div'), - docEl = document.documentElement; - if (!('pointerEvents' in el.style)) { - return false; - } - el.style.pointerEvents = 'auto'; - el.style.pointerEvents = 'x'; - docEl.appendChild(el); - var supports = window.getComputedStyle && window.getComputedStyle(el, '').pointerEvents === 'auto'; - docEl.removeChild(el); - return !!supports; - })(); - - var defaults = { - listNodeName : 'ol', - itemNodeName : 'li', - rootClass : 'dd', - listClass : 'dd-list', - itemClass : 'dd-item', - dragClass : 'dd-dragel', - handleClass : 'dd-handle', - collapsedClass : 'dd-collapsed', - placeClass : 'dd-placeholder', - noDragClass : 'dd-nodrag', - emptyClass : 'dd-empty', - expandBtnHTML : '<button data-action="expand" type="button">Expand</button>', - collapseBtnHTML : '<button data-action="collapse" type="button">Collapse</button>', - group : 0, - maxDepth : 5, - threshold : 20 - }; - - function Plugin(element, options) - { - this.w = $(document); - this.el = $(element); - this.options = $.extend({}, defaults, options); - this.init(); - } - - Plugin.prototype = { - - init: function() - { - var list = this; - - list.reset(); - - list.el.data('nestable-group', this.options.group); - - list.placeEl = $('<div class="' + list.options.placeClass + '"/>'); - - $.each(this.el.find(list.options.itemNodeName), function(k, el) { - list.setParent($(el)); - }); - - list.el.on('click', 'button', function(e) { - if (list.dragEl) { - return; - } - var target = $(e.currentTarget), - action = target.data('action'), - item = target.parent(list.options.itemNodeName); - if (action === 'collapse') { - list.collapseItem(item); - } - if (action === 'expand') { - list.expandItem(item); - } - }); - - var onStartEvent = function(e) - { - var handle = $(e.target); - if (!handle.hasClass(list.options.handleClass)) { - if (handle.closest('.' + list.options.noDragClass).length) { - return; - } - handle = handle.closest('.' + list.options.handleClass); - } - - if (!handle.length || list.dragEl) { - return; - } - - list.isTouch = /^touch/.test(e.type); - if (list.isTouch && e.touches.length !== 1) { - return; - } - - e.preventDefault(); - list.dragStart(e.touches ? e.touches[0] : e); - }; - - var onMoveEvent = function(e) - { - if (list.dragEl) { - e.preventDefault(); - list.dragMove(e.touches ? e.touches[0] : e); - } - }; - - var onEndEvent = function(e) - { - if (list.dragEl) { - e.preventDefault(); - list.dragStop(e.touches ? e.touches[0] : e); - } - }; - - if (hasTouch) { - list.el[0].addEventListener('touchstart', onStartEvent, false); - window.addEventListener('touchmove', onMoveEvent, false); - window.addEventListener('touchend', onEndEvent, false); - window.addEventListener('touchcancel', onEndEvent, false); - } - - list.el.on('mousedown', onStartEvent); - list.w.on('mousemove', onMoveEvent); - list.w.on('mouseup', onEndEvent); - - }, - - serialize: function() - { - var data, - depth = 0, - list = this; - step = function(level, depth) - { - var array = [ ], - items = level.children(list.options.itemNodeName); - items.each(function() - { - var li = $(this), - item = $.extend({}, li.data()), - sub = li.children(list.options.listNodeName); - if (sub.length) { - item.children = step(sub, depth + 1); - } - array.push(item); - }); - return array; - }; - data = step(list.el.find(list.options.listNodeName).first(), depth); - return data; - }, - - serialise: function() - { - return this.serialize(); - }, - - reset: function() - { - this.mouse = { - offsetX : 0, - offsetY : 0, - startX : 0, - startY : 0, - lastX : 0, - lastY : 0, - nowX : 0, - nowY : 0, - distX : 0, - distY : 0, - dirAx : 0, - dirX : 0, - dirY : 0, - lastDirX : 0, - lastDirY : 0, - distAxX : 0, - distAxY : 0 - }; - this.isTouch = false; - this.moving = false; - this.dragEl = null; - this.dragRootEl = null; - this.dragDepth = 0; - this.hasNewRoot = false; - this.pointEl = null; - }, - - expandItem: function(li) - { - li.removeClass(this.options.collapsedClass); - li.children('[data-action="expand"]').hide(); - li.children('[data-action="collapse"]').show(); - li.children(this.options.listNodeName).show(); - }, - - collapseItem: function(li) - { - var lists = li.children(this.options.listNodeName); - if (lists.length) { - li.addClass(this.options.collapsedClass); - li.children('[data-action="collapse"]').hide(); - li.children('[data-action="expand"]').show(); - li.children(this.options.listNodeName).hide(); - } - }, - - expandAll: function() - { - var list = this; - list.el.find(list.options.itemNodeName).each(function() { - list.expandItem($(this)); - }); - }, - - collapseAll: function() - { - var list = this; - list.el.find(list.options.itemNodeName).each(function() { - list.collapseItem($(this)); - }); - }, - - setParent: function(li) - { - if (li.children(this.options.listNodeName).length) { - li.prepend($(this.options.expandBtnHTML)); - li.prepend($(this.options.collapseBtnHTML)); - } - li.children('[data-action="expand"]').hide(); - }, - - unsetParent: function(li) - { - li.removeClass(this.options.collapsedClass); - li.children('[data-action]').remove(); - li.children(this.options.listNodeName).remove(); - }, - - dragStart: function(e) - { - var mouse = this.mouse, - target = $(e.target), - dragItem = target.closest(this.options.itemNodeName); - - this.placeEl.css('height', dragItem.height()); - - mouse.offsetX = e.offsetX !== undefined ? e.offsetX : e.pageX - target.offset().left; - mouse.offsetY = e.offsetY !== undefined ? e.offsetY : e.pageY - target.offset().top; - mouse.startX = mouse.lastX = e.pageX; - mouse.startY = mouse.lastY = e.pageY; - - this.dragRootEl = this.el; - - this.dragEl = $(document.createElement(this.options.listNodeName)).addClass(this.options.listClass + ' ' + this.options.dragClass); - this.dragEl.css('width', dragItem.width()); - - dragItem.after(this.placeEl); - dragItem[0].parentNode.removeChild(dragItem[0]); - dragItem.appendTo(this.dragEl); - - $(document.body).append(this.dragEl); - this.dragEl.css({ - 'left' : e.pageX - mouse.offsetX, - 'top' : e.pageY - mouse.offsetY - }); - // total depth of dragging item - var i, depth, - items = this.dragEl.find(this.options.itemNodeName); - for (i = 0; i < items.length; i++) { - depth = $(items[i]).parents(this.options.listNodeName).length; - if (depth > this.dragDepth) { - this.dragDepth = depth; - } - } - }, - - dragStop: function(e) - { - var el = this.dragEl.children(this.options.itemNodeName).first(); - el[0].parentNode.removeChild(el[0]); - this.placeEl.replaceWith(el); - - this.dragEl.remove(); - this.el.trigger('change'); - if (this.hasNewRoot) { - this.dragRootEl.trigger('change'); - } - this.reset(); - }, - - dragMove: function(e) - { - var list, parent, prev, next, depth, - opt = this.options, - mouse = this.mouse; - - this.dragEl.css({ - 'left' : e.pageX - mouse.offsetX, - 'top' : e.pageY - mouse.offsetY - }); - - // mouse position last events - mouse.lastX = mouse.nowX; - mouse.lastY = mouse.nowY; - // mouse position this events - mouse.nowX = e.pageX; - mouse.nowY = e.pageY; - // distance mouse moved between events - mouse.distX = mouse.nowX - mouse.lastX; - mouse.distY = mouse.nowY - mouse.lastY; - // direction mouse was moving - mouse.lastDirX = mouse.dirX; - mouse.lastDirY = mouse.dirY; - // direction mouse is now moving (on both axis) - mouse.dirX = mouse.distX === 0 ? 0 : mouse.distX > 0 ? 1 : -1; - mouse.dirY = mouse.distY === 0 ? 0 : mouse.distY > 0 ? 1 : -1; - // axis mouse is now moving on - var newAx = Math.abs(mouse.distX) > Math.abs(mouse.distY) ? 1 : 0; - - // do nothing on first move - if (!mouse.moving) { - mouse.dirAx = newAx; - mouse.moving = true; - return; - } - - // calc distance moved on this axis (and direction) - if (mouse.dirAx !== newAx) { - mouse.distAxX = 0; - mouse.distAxY = 0; - } else { - mouse.distAxX += Math.abs(mouse.distX); - if (mouse.dirX !== 0 && mouse.dirX !== mouse.lastDirX) { - mouse.distAxX = 0; - } - mouse.distAxY += Math.abs(mouse.distY); - if (mouse.dirY !== 0 && mouse.dirY !== mouse.lastDirY) { - mouse.distAxY = 0; - } - } - mouse.dirAx = newAx; - - /** - * move horizontal - */ - if (mouse.dirAx && mouse.distAxX >= opt.threshold) { - // reset move distance on x-axis for new phase - mouse.distAxX = 0; - prev = this.placeEl.prev(opt.itemNodeName); - // increase horizontal level if previous sibling exists and is not collapsed - if (mouse.distX > 0 && prev.length && !prev.hasClass(opt.collapsedClass)) { - // cannot increase level when item above is collapsed - list = prev.find(opt.listNodeName).last(); - // check if depth limit has reached - depth = this.placeEl.parents(opt.listNodeName).length; - if (depth + this.dragDepth <= opt.maxDepth) { - // create new sub-level if one doesn't exist - if (!list.length) { - list = $('<' + opt.listNodeName + '/>').addClass(opt.listClass); - list.append(this.placeEl); - prev.append(list); - this.setParent(prev); - } else { - // else append to next level up - list = prev.children(opt.listNodeName).last(); - list.append(this.placeEl); - } - } - } - // decrease horizontal level - if (mouse.distX < 0) { - // we can't decrease a level if an item preceeds the current one - next = this.placeEl.next(opt.itemNodeName); - if (!next.length) { - parent = this.placeEl.parent(); - this.placeEl.closest(opt.itemNodeName).after(this.placeEl); - if (!parent.children().length) { - this.unsetParent(parent.parent()); - } - } - } - } - - var isEmpty = false; - - // find list item under cursor - if (!hasPointerEvents) { - this.dragEl[0].style.visibility = 'hidden'; - } - this.pointEl = $(document.elementFromPoint(e.pageX - document.body.scrollLeft, e.pageY - (window.pageYOffset || document.documentElement.scrollTop))); - if (!hasPointerEvents) { - this.dragEl[0].style.visibility = 'visible'; - } - if (this.pointEl.hasClass(opt.handleClass)) { - this.pointEl = this.pointEl.parent(opt.itemNodeName); - } - if (this.pointEl.hasClass(opt.emptyClass)) { - isEmpty = true; - } - else if (!this.pointEl.length || !this.pointEl.hasClass(opt.itemClass)) { - return; - } - - // find parent list of item under cursor - var pointElRoot = this.pointEl.closest('.' + opt.rootClass), - isNewRoot = this.dragRootEl.data('nestable-id') !== pointElRoot.data('nestable-id'); - - /** - * move vertical - */ - if (!mouse.dirAx || isNewRoot || isEmpty) { - // check if groups match if dragging over new root - if (isNewRoot && opt.group !== pointElRoot.data('nestable-group')) { - return; - } - // check depth limit - depth = this.dragDepth - 1 + this.pointEl.parents(opt.listNodeName).length; - if (depth > opt.maxDepth) { - return; - } - var before = e.pageY < (this.pointEl.offset().top + this.pointEl.height() / 2); - parent = this.placeEl.parent(); - // if empty create new list to replace empty placeholder - if (isEmpty) { - list = $(document.createElement(opt.listNodeName)).addClass(opt.listClass); - list.append(this.placeEl); - this.pointEl.replaceWith(list); - } - else if (before) { - this.pointEl.before(this.placeEl); - } - else { - this.pointEl.after(this.placeEl); - } - if (!parent.children().length) { - this.unsetParent(parent.parent()); - } - if (!this.dragRootEl.find(opt.itemNodeName).length) { - this.dragRootEl.append('<div class="' + opt.emptyClass + '"/>'); - } - // parent root list has changed - if (isNewRoot) { - this.dragRootEl = pointElRoot; - this.hasNewRoot = this.el[0] !== this.dragRootEl[0]; - } - } - } - - }; - - $.fn.nestable = function(params) - { - var lists = this, - retval = this; - - lists.each(function() - { - var plugin = $(this).data("nestable"); - - if (!plugin) { - $(this).data("nestable", new Plugin(this, params)); - $(this).data("nestable-id", new Date().getTime()); - } else { - if (typeof params === 'string' && typeof plugin[params] === 'function') { - retval = plugin[params](); - } - } - }); - - return retval || lists; - }; - -})(window.jQuery || window.Zepto, window, document); diff --git a/assets/js/plugins/nouslider/jquery.nouislider.min.js b/assets/js/plugins/nouslider/jquery.nouislider.min.js deleted file mode 100644 index bc3d187f..00000000 --- a/assets/js/plugins/nouslider/jquery.nouislider.min.js +++ /dev/null @@ -1,34 +0,0 @@ -/* - -$.classVal - WTFPL - refreshless.com/classval/ */ -(function(b){function h(a,e){var d=!1;b.each(a?q:g,function(a){if(b(e).hasClass(a))return d=a,!1});return d}var n=b.fn.val,g={},q={},u={};b.classVal=function(a,b,d,l){"string"===typeof a&&"boolean"===typeof l&&(b&&(g[a]=b),d&&(q[a]=d),u[a]=l)};b.fn.val=function(){var a=Array.prototype.slice.call(arguments,0),e,d;return a.length?this.each(function(){(e=h(!0,this))?(d=u[e]?b(this):this,d[q[e]].apply(this,a)):n.apply(b(this),a)}):(e=h(!1,this))?(d=u[e]?this:this[0],d[g[e]].apply(d)):n.apply(this)}})(window.jQuery|| -window.Zepto);/* - -$.Link (part of noUiSlider) - WTFPL */ -(function(b){function h(a,b,d){if((a[b]||a[d])&&a[b]===a[d])throw Error("(Link) '"+b+"' can't match '"+d+"'.'");}function n(a){void 0===a&&(a={});if("object"!==typeof a)throw Error("(Format) 'format' option must be an object.");var e={};b(q).each(function(b,l){if(void 0===a[l])e[l]=u[b];else if(typeof a[l]===typeof u[b]){if("decimals"===l&&(0>a[l]||7<a[l]))throw Error("(Format) 'format.decimals' option must be between 0 and 7.");e[l]=a[l]}else throw Error("(Format) 'format."+l+"' must be a "+typeof u[b]+ -".");});h(e,"mark","thousand");h(e,"prefix","negative");h(e,"prefix","negativeBefore");this.r=e}function g(a,e){"object"!==typeof a&&b.error("(Link) Initialize with an object.");return new g.prototype.p(a.target||function(){},a.method,a.format||{},e)}var q="decimals mark thousand prefix postfix encoder decoder negative negativeBefore to from".split(" "),u=[2,".","","","",function(a){return a},function(a){return a},"-","",function(a){return a},function(a){return a}];n.prototype.a=function(a){return this.r[a]}; -n.prototype.L=function(a){function b(a){return a.split("").reverse().join("")}a=this.a("encoder")(a);var d=this.a("decimals"),l="",g="",h="",n="";0===parseFloat(a.toFixed(d))&&(a="0");0>a&&(l=this.a("negative"),g=this.a("negativeBefore"));a=Math.abs(a).toFixed(d).toString();a=a.split(".");this.a("thousand")?(h=b(a[0]).match(/.{1,3}/g),h=b(h.join(b(this.a("thousand"))))):h=a[0];this.a("mark")&&1<a.length&&(n=this.a("mark")+a[1]);return this.a("to")(g+this.a("prefix")+l+h+n+this.a("postfix"))};n.prototype.w= -function(a){function b(a){return a.replace(/[\-\/\\\^$*+?.()|\[\]{}]/g,"\\$&")}var d;if(null===a||void 0===a)return!1;a=this.a("from")(a);a=a.toString();d=a.replace(RegExp("^"+b(this.a("negativeBefore"))),"");a!==d?(a=d,d="-"):d="";a=a.replace(RegExp("^"+b(this.a("prefix"))),"");this.a("negative")&&(d="",a=a.replace(RegExp("^"+b(this.a("negative"))),"-"));a=a.replace(RegExp(b(this.a("postfix"))+"$"),"").replace(RegExp(b(this.a("thousand")),"g"),"").replace(this.a("mark"),".");a=this.a("decoder")(parseFloat(d+ -a));return isNaN(a)?!1:a};g.prototype.K=function(a,e){this.method=e||"html";this.j=b(a.replace("-tooltip-","")||"<div/>")[0]};g.prototype.H=function(a){this.method="val";this.j=document.createElement("input");this.j.name=a;this.j.type="hidden"};g.prototype.G=function(a){function e(a,b){return[b?null:a,b?a:null]}var d=this;this.method="val";this.target=a.on("change",function(a){d.B.val(e(b(a.target).val(),d.t),{link:d,set:!0})})};g.prototype.p=function(a,e,d,g){this.g=d;this.update=!g;if("string"=== -typeof a&&0===a.indexOf("-tooltip-"))this.K(a,e);else if("string"===typeof a&&0!==a.indexOf("-"))this.H(a);else if("function"===typeof a)this.target=!1,this.method=a;else{if(a instanceof b||b.zepto&&b.zepto.isZ(a)){if(!e){if(a.is("input, select, textarea")){this.G(a);return}e="html"}if("function"===typeof e||"string"===typeof e&&a[e]){this.method=e;this.target=a;return}}throw new RangeError("(Link) Invalid Link.");}};g.prototype.write=function(a,b,d,g){if(!this.update||!1!==g)if(this.u=a,this.F=a= -this.format(a),"function"===typeof this.method)this.method.call(this.target[0]||d[0],a,b,d);else this.target[this.method](a,b,d)};g.prototype.q=function(a){this.g=new n(b.extend({},a,this.g instanceof n?this.g.r:this.g))};g.prototype.J=function(a){this.B=a};g.prototype.I=function(a){this.t=a};g.prototype.format=function(a){return this.g.L(a)};g.prototype.A=function(a){return this.g.w(a)};g.prototype.p.prototype=g.prototype;b.Link=g})(window.jQuery||window.Zepto);/* - -$.fn.noUiSlider - WTFPL - refreshless.com/nouislider/ */ -(function(b){function h(a){return"number"===typeof a&&!isNaN(a)&&isFinite(a)}function n(a){return b.isArray(a)?a:[a]}function g(a,c){a.addClass(c);setTimeout(function(){a.removeClass(c)},300)}function q(a,c){return 100*c/(a[1]-a[0])}function u(a,c){if(c>=a.d.slice(-1)[0])return 100;for(var b=1,f,d,e;c>=a.d[b];)b++;f=a.d[b-1];d=a.d[b];e=a.c[b-1];f=[f,d];return e+q(f,0>f[0]?c+Math.abs(f[0]):c-f[0])/(100/(a.c[b]-e))}function a(a,c){if(100<=c)return a.d.slice(-1)[0];for(var b=1,f,d,e;c>=a.c[b];)b++;f= -a.d[b-1];d=a.d[b];e=a.c[b-1];f=[f,d];return 100/(a.c[b]-e)*(c-e)*(f[1]-f[0])/100+f[0]}function e(a,c){for(var b=1,f;c>=a.c[b];)b++;if(a.m)return f=a.c[b-1],b=a.c[b],c-f>(b-f)/2?b:f;a.h[b-1]?(f=a.h[b-1],b=a.c[b-1]+Math.round((c-a.c[b-1])/f)*f):b=c;return b}function d(a,c){if(!h(c))throw Error("noUiSlider: 'step' is not numeric.");a.h[0]=c}function l(a,c){if("object"!==typeof c||b.isArray(c))throw Error("noUiSlider: 'range' is not an object.");b.each(c,function(c,f){var d;"number"===typeof f&&(f=[f]); -if(!b.isArray(f))throw Error("noUiSlider: 'range' contains invalid value.");d="min"===c?0:"max"===c?100:parseFloat(c);if(!h(d)||!h(f[0]))throw Error("noUiSlider: 'range' value isn't numeric.");a.c.push(d);a.d.push(f[0]);d?a.h.push(isNaN(f[1])?!1:f[1]):isNaN(f[1])||(a.h[0]=f[1])});b.each(a.h,function(c,b){if(!b)return!0;a.h[c]=q([a.d[c],a.d[c+1]],b)/(100/(a.c[c+1]-a.c[c]))})}function z(a,c){"number"===typeof c&&(c=[c]);if(!b.isArray(c)||!c.length||2<c.length)throw Error("noUiSlider: 'start' option is incorrect."); -a.b=c.length;a.start=c}function A(a,c){a.m=c;if("boolean"!==typeof c)throw Error("noUiSlider: 'snap' option must be a boolean.");}function B(a,c){if("lower"===c&&1===a.b)a.i=1;else if("upper"===c&&1===a.b)a.i=2;else if(!0===c&&2===a.b)a.i=3;else if(!1===c)a.i=0;else throw Error("noUiSlider: 'connect' option doesn't match handle count.");}function y(a,c){switch(c){case "horizontal":a.k=0;break;case "vertical":a.k=1;break;default:throw Error("noUiSlider: 'orientation' option is invalid.");}}function I(a, -c){if(2<a.c.length)throw Error("noUiSlider: 'margin' option is only supported on linear sliders.");a.margin=q(a.d,c);if(!h(c))throw Error("noUiSlider: 'margin' option must be numeric.");}function J(a,c){switch(c){case "ltr":a.dir=0;break;case "rtl":a.dir=1;a.i=[0,2,1,3][a.i];break;default:throw Error("noUiSlider: 'direction' option was not recognized.");}}function K(a,c){if("string"!==typeof c)throw Error("noUiSlider: 'behaviour' must be a string containing options.");var b=0<=c.indexOf("snap");a.n= -{s:0<=c.indexOf("tap")||b,extend:0<=c.indexOf("extend"),v:0<=c.indexOf("drag"),fixed:0<=c.indexOf("fixed"),m:b}}function L(a,c,d){a.o=[c.lower,c.upper];a.g=c.format;b.each(a.o,function(a,e){if(!b.isArray(e))throw Error("noUiSlider: 'serialization."+(a?"upper":"lower")+"' must be an array.");b.each(e,function(){if(!(this instanceof b.Link))throw Error("noUiSlider: 'serialization."+(a?"upper":"lower")+"' can only contain Link instances.");this.I(a);this.J(d);this.q(c.format)})});a.dir&&1<a.b&&a.o.reverse()} -function M(a,c){var e={c:[],d:[],h:[!1],margin:0},f;f={step:{e:!1,f:d},range:{e:!0,f:l},start:{e:!0,f:z},snap:{e:!1,f:A},connect:{e:!0,f:B},orientation:{e:!1,f:y},margin:{e:!1,f:I},direction:{e:!0,f:J},behaviour:{e:!0,f:K},serialization:{e:!0,f:L}};a=b.extend({connect:!1,direction:"ltr",behaviour:"tap",orientation:"horizontal"},a);a.serialization=b.extend({lower:[],upper:[],format:{}},a.serialization);b.each(f,function(b,d){if(void 0===a[b]){if(d.e)throw Error("noUiSlider: '"+b+"' is required."); -return!0}d.f(e,a[b],c)});e.style=e.k?"top":"left";return e}function N(a,c){var d=b("<div><div/></div>").addClass(k[2]),f=["-lower","-upper"];a.dir&&f.reverse();d.children().addClass(k[3]+" "+k[3]+f[c]);return d}function O(a,c){c.j&&(c=new b.Link({target:b(c.j).clone().appendTo(a),method:c.method,format:c.g},!0));return c}function P(a,c){var d,f=[];for(d=0;d<a.b;d++){var e=f,g=d,k=a.o[d],h=c[d].children(),l=a.g,n=void 0,q=[],n=new b.Link({},!0);n.q(l);q.push(n);for(n=0;n<k.length;n++)q.push(O(h,k[n])); -e[g]=q}return f}function Q(a,c,b){switch(a){case 1:c.addClass(k[7]);b[0].addClass(k[6]);break;case 3:b[1].addClass(k[6]);case 2:b[0].addClass(k[7]);case 0:c.addClass(k[6])}}function R(a,b){var d,f=[];for(d=0;d<a.b;d++)f.push(N(a,d).appendTo(b));return f}function S(a,c){c.addClass([k[0],k[8+a.dir],k[4+a.k]].join(" "));return b("<div/>").appendTo(c).addClass(k[1])}function T(d,c,h){function f(){return r[["width","height"][c.k]]()}function l(a){var b,c=[s.val()];for(b=0;b<a.length;b++)s.trigger(a[b], -c)}function q(d,p,f){var g=d[0]!==m[0][0]?1:0,H=v[0]+c.margin,l=v[1]-c.margin;f&&1<m.length&&(p=g?Math.max(p,H):Math.min(p,l));100>p&&(p=e(c,p));p=Math.max(Math.min(parseFloat(p.toFixed(7)),100),0);if(p===v[g])return 1===m.length?!1:p===H||p===l?0:!1;d.css(c.style,p+"%");d.is(":first-child")&&d.toggleClass(k[17],50<p);v[g]=p;c.dir&&(p=100-p);b(w[g]).each(function(){this.write(a(c,p),d.children(),s)});return!0}function G(a,b,c){c||g(s,k[14]);q(a,b,!1);l(["slide","set","change"])}function t(a,b,d,f){a= -a.replace(/\s/g,".nui ")+".nui";b.on(a,function(a){var b=s.attr("disabled");if(s.hasClass(k[14])||void 0!==b&&null!==b)return!1;a.preventDefault();var b=0===a.type.indexOf("touch"),p=0===a.type.indexOf("mouse"),e=0===a.type.indexOf("pointer"),D,g,l=a;0===a.type.indexOf("MSPointer")&&(e=!0);a.originalEvent&&(a=a.originalEvent);b&&(D=a.changedTouches[0].pageX,g=a.changedTouches[0].pageY);if(p||e)e||void 0!==window.pageXOffset||(window.pageXOffset=document.documentElement.scrollLeft,window.pageYOffset= -document.documentElement.scrollTop),D=a.clientX+window.pageXOffset,g=a.clientY+window.pageYOffset;l.C=[D,g];l.cursor=p;a=l;a.l=a.C[c.k];d(a,f)})}function y(a,b){var c=b.b||m,d,e=!1,e=100*(a.l-b.start)/f(),g=c[0][0]!==m[0][0]?1:0;var k=b.D;d=e+k[0];e+=k[1];1<c.length?(0>d&&(e+=Math.abs(d)),100<e&&(d-=e-100),d=[Math.max(Math.min(d,100),0),Math.max(Math.min(e,100),0)]):d=[d,e];e=q(c[0],d[g],1===c.length);1<c.length&&(e=q(c[1],d[g?0:1],!1)||e);e&&l(["slide"])}function z(a){b("."+k[15]).removeClass(k[15]); -a.cursor&&b("body").css("cursor","").off(".nui");E.off(".nui");s.removeClass(k[12]);l(["set","change"])}function C(a,c){1===c.b.length&&c.b[0].children().addClass(k[15]);a.stopPropagation();t(x.move,E,y,{start:a.l,b:c.b,D:[v[0],v[m.length-1]]});t(x.end,E,z,null);a.cursor&&(b("body").css("cursor",b(a.target).css("cursor")),1<m.length&&s.addClass(k[12]),b("body").on("selectstart.nui",!1))}function A(a){var d=a.l,e=0;a.stopPropagation();b.each(m,function(){e+=this.offset()[c.style]});e=d<e/2||1===m.length? -0:1;d-=r.offset()[c.style];d=100*d/f();G(m[e],d,c.n.m);c.n.m&&C(a,{b:[m[e]]})}function B(a){var b=(a=a.l<r.offset()[c.style])?0:100;a=a?0:m.length-1;G(m[a],b,!1)}var s=b(d),v=[-1,-1],r,w,m;if(s.hasClass(k[0]))throw Error("Slider was already initialized.");r=S(c,s);m=R(c,r);w=P(c,m);Q(c.i,s,m);(function(a){var b;if(!a.fixed)for(b=0;b<m.length;b++)t(x.start,m[b].children(),C,{b:[m[b]]});a.s&&t(x.start,r,A,{b:m});a.extend&&(s.addClass(k[16]),a.s&&t(x.start,s,B,{b:m}));a.v&&(b=r.find("."+k[7]).addClass(k[10]), -a.fixed&&(b=b.add(r.children().not(b).children())),t(x.start,b,C,{b:m}))})(c.n);d.vSet=function(){var a=Array.prototype.slice.call(arguments,0),d,e,f,h,r,F,t=n(a[0]);"object"===typeof a[1]?(d=a[1].set,e=a[1].link,f=a[1].update,h=a[1].animate):!0===a[1]&&(d=!0);c.dir&&1<c.b&&t.reverse();h&&g(s,k[14]);a=1<m.length?3:1;1===t.length&&(a=1);for(r=0;r<a;r++)h=e||w[r%2][0],h=h.A(t[r%2]),!1!==h&&(h=u(c,h),c.dir&&(h=100-h),!0!==q(m[r%2],h,!0)&&b(w[r%2]).each(function(a){if(!a)return F=this.u,!0;this.write(F, -m[r%2].children(),s,f)}));!0===d&&l(["set"]);return this};d.vGet=function(){var a,b=[];for(a=0;a<c.b;a++)b[a]=w[a][0].F;return 1===b.length?b[0]:c.dir?b.reverse():b};d.destroy=function(){b.each(w,function(){b.each(this,function(){this.target&&this.target.off(".nui")})});b(this).off(".nui").removeClass(k.join(" ")).empty();return h};s.val(c.start)}function U(a){if(!this.length)throw Error("noUiSlider: Can't initialize slider on empty selection.");var b=M(a,this);return this.each(function(){T(this, -b,a)})}function V(a){return this.each(function(){var c=b(this).val(),d=this.destroy(),e=b.extend({},d,a);b(this).noUiSlider(e);d.start===e.start&&b(this).val(c)})}var E=b(document),x=window.navigator.pointerEnabled?{start:"pointerdown",move:"pointermove",end:"pointerup"}:window.navigator.msPointerEnabled?{start:"MSPointerDown",move:"MSPointerMove",end:"MSPointerUp"}:{start:"mousedown touchstart",move:"mousemove touchmove",end:"mouseup touchend"},k="noUi-target noUi-base noUi-origin noUi-handle noUi-horizontal noUi-vertical noUi-background noUi-connect noUi-ltr noUi-rtl noUi-dragable noUi-state-drag noUi-state-tap noUi-active noUi-extended noUi-stacking".split(" "); -b.noUiSlider={Link:b.Link};b.fn.noUiSlider=function(a,b){return(b?V:U).call(this,a)};b.classVal(k[0],"vGet","vSet",!1)})(window.jQuery||window.Zepto); diff --git a/assets/js/plugins/pace/pace.min.js b/assets/js/plugins/pace/pace.min.js deleted file mode 100644 index 9f7c7dc9..00000000 --- a/assets/js/plugins/pace/pace.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! pace 0.5.1 */ -(function(){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W=[].slice,X={}.hasOwnProperty,Y=function(a,b){function c(){this.constructor=a}for(var d in b)X.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},Z=[].indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(b in this&&this[b]===a)return b;return-1};for(t={catchupTime:500,initialRate:.03,minTime:500,ghostTime:500,maxProgressPerFrame:10,easeFactor:1.25,startOnPageLoad:!0,restartOnPushState:!0,restartOnRequestAfter:500,target:"body",elements:{checkInterval:100,selectors:["body"]},eventLag:{minSamples:10,sampleCount:3,lagThreshold:3},ajax:{trackMethods:["GET"],trackWebSockets:!0,ignoreURLs:[]}},B=function(){var a;return null!=(a="undefined"!=typeof performance&&null!==performance?"function"==typeof performance.now?performance.now():void 0:void 0)?a:+new Date},D=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame,s=window.cancelAnimationFrame||window.mozCancelAnimationFrame,null==D&&(D=function(a){return setTimeout(a,50)},s=function(a){return clearTimeout(a)}),F=function(a){var b,c;return b=B(),(c=function(){var d;return d=B()-b,d>=33?(b=B(),a(d,function(){return D(c)})):setTimeout(c,33-d)})()},E=function(){var a,b,c;return c=arguments[0],b=arguments[1],a=3<=arguments.length?W.call(arguments,2):[],"function"==typeof c[b]?c[b].apply(c,a):c[b]},u=function(){var a,b,c,d,e,f,g;for(b=arguments[0],d=2<=arguments.length?W.call(arguments,1):[],f=0,g=d.length;g>f;f++)if(c=d[f])for(a in c)X.call(c,a)&&(e=c[a],null!=b[a]&&"object"==typeof b[a]&&null!=e&&"object"==typeof e?u(b[a],e):b[a]=e);return b},p=function(a){var b,c,d,e,f;for(c=b=0,e=0,f=a.length;f>e;e++)d=a[e],c+=Math.abs(d),b++;return c/b},w=function(a,b){var c,d,e;if(null==a&&(a="options"),null==b&&(b=!0),e=document.querySelector("[data-pace-"+a+"]")){if(c=e.getAttribute("data-pace-"+a),!b)return c;try{return JSON.parse(c)}catch(f){return d=f,"undefined"!=typeof console&&null!==console?console.error("Error parsing inline pace options",d):void 0}}},g=function(){function a(){}return a.prototype.on=function(a,b,c,d){var e;return null==d&&(d=!1),null==this.bindings&&(this.bindings={}),null==(e=this.bindings)[a]&&(e[a]=[]),this.bindings[a].push({handler:b,ctx:c,once:d})},a.prototype.once=function(a,b,c){return this.on(a,b,c,!0)},a.prototype.off=function(a,b){var c,d,e;if(null!=(null!=(d=this.bindings)?d[a]:void 0)){if(null==b)return delete this.bindings[a];for(c=0,e=[];c<this.bindings[a].length;)this.bindings[a][c].handler===b?e.push(this.bindings[a].splice(c,1)):e.push(c++);return e}},a.prototype.trigger=function(){var a,b,c,d,e,f,g,h,i;if(c=arguments[0],a=2<=arguments.length?W.call(arguments,1):[],null!=(g=this.bindings)?g[c]:void 0){for(e=0,i=[];e<this.bindings[c].length;)h=this.bindings[c][e],d=h.handler,b=h.ctx,f=h.once,d.apply(null!=b?b:this,a),f?i.push(this.bindings[c].splice(e,1)):i.push(e++);return i}},a}(),null==window.Pace&&(window.Pace={}),u(Pace,g.prototype),C=Pace.options=u({},t,window.paceOptions,w()),T=["ajax","document","eventLag","elements"],P=0,R=T.length;R>P;P++)J=T[P],C[J]===!0&&(C[J]=t[J]);i=function(a){function b(){return U=b.__super__.constructor.apply(this,arguments)}return Y(b,a),b}(Error),b=function(){function a(){this.progress=0}return a.prototype.getElement=function(){var a;if(null==this.el){if(a=document.querySelector(C.target),!a)throw new i;this.el=document.createElement("div"),this.el.className="pace pace-active",document.body.className=document.body.className.replace(/pace-done/g,""),document.body.className+=" pace-running",this.el.innerHTML='<div class="pace-progress">\n <div class="pace-progress-inner"></div>\n</div>\n<div class="pace-activity"></div>',null!=a.firstChild?a.insertBefore(this.el,a.firstChild):a.appendChild(this.el)}return this.el},a.prototype.finish=function(){var a;return a=this.getElement(),a.className=a.className.replace("pace-active",""),a.className+=" pace-inactive",document.body.className=document.body.className.replace("pace-running",""),document.body.className+=" pace-done"},a.prototype.update=function(a){return this.progress=a,this.render()},a.prototype.destroy=function(){try{this.getElement().parentNode.removeChild(this.getElement())}catch(a){i=a}return this.el=void 0},a.prototype.render=function(){var a,b;return null==document.querySelector(C.target)?!1:(a=this.getElement(),a.children[0].style.width=""+this.progress+"%",(!this.lastRenderedProgress||this.lastRenderedProgress|0!==this.progress|0)&&(a.children[0].setAttribute("data-progress-text",""+(0|this.progress)+"%"),this.progress>=100?b="99":(b=this.progress<10?"0":"",b+=0|this.progress),a.children[0].setAttribute("data-progress",""+b)),this.lastRenderedProgress=this.progress)},a.prototype.done=function(){return this.progress>=100},a}(),h=function(){function a(){this.bindings={}}return a.prototype.trigger=function(a,b){var c,d,e,f,g;if(null!=this.bindings[a]){for(f=this.bindings[a],g=[],d=0,e=f.length;e>d;d++)c=f[d],g.push(c.call(this,b));return g}},a.prototype.on=function(a,b){var c;return null==(c=this.bindings)[a]&&(c[a]=[]),this.bindings[a].push(b)},a}(),O=window.XMLHttpRequest,N=window.XDomainRequest,M=window.WebSocket,v=function(a,b){var c,d,e,f;f=[];for(d in b.prototype)try{e=b.prototype[d],null==a[d]&&"function"!=typeof e?f.push(a[d]=e):f.push(void 0)}catch(g){c=g}return f},z=[],Pace.ignore=function(){var a,b,c;return b=arguments[0],a=2<=arguments.length?W.call(arguments,1):[],z.unshift("ignore"),c=b.apply(null,a),z.shift(),c},Pace.track=function(){var a,b,c;return b=arguments[0],a=2<=arguments.length?W.call(arguments,1):[],z.unshift("track"),c=b.apply(null,a),z.shift(),c},I=function(a){var b;if(null==a&&(a="GET"),"track"===z[0])return"force";if(!z.length&&C.ajax){if("socket"===a&&C.ajax.trackWebSockets)return!0;if(b=a.toUpperCase(),Z.call(C.ajax.trackMethods,b)>=0)return!0}return!1},j=function(a){function b(){var a,c=this;b.__super__.constructor.apply(this,arguments),a=function(a){var b;return b=a.open,a.open=function(d,e){return I(d)&&c.trigger("request",{type:d,url:e,request:a}),b.apply(a,arguments)}},window.XMLHttpRequest=function(b){var c;return c=new O(b),a(c),c},v(window.XMLHttpRequest,O),null!=N&&(window.XDomainRequest=function(){var b;return b=new N,a(b),b},v(window.XDomainRequest,N)),null!=M&&C.ajax.trackWebSockets&&(window.WebSocket=function(a,b){var d;return d=null!=b?new M(a,b):new M(a),I("socket")&&c.trigger("request",{type:"socket",url:a,protocols:b,request:d}),d},v(window.WebSocket,M))}return Y(b,a),b}(h),Q=null,x=function(){return null==Q&&(Q=new j),Q},H=function(a){var b,c,d,e;for(e=C.ajax.ignoreURLs,c=0,d=e.length;d>c;c++)if(b=e[c],"string"==typeof b){if(-1!==a.indexOf(b))return!0}else if(b.test(a))return!0;return!1},x().on("request",function(b){var c,d,e,f,g;return f=b.type,e=b.request,g=b.url,H(g)?void 0:Pace.running||C.restartOnRequestAfter===!1&&"force"!==I(f)?void 0:(d=arguments,c=C.restartOnRequestAfter||0,"boolean"==typeof c&&(c=0),setTimeout(function(){var b,c,g,h,i,j;if(b="socket"===f?e.readyState<2:0<(h=e.readyState)&&4>h){for(Pace.restart(),i=Pace.sources,j=[],c=0,g=i.length;g>c;c++){if(J=i[c],J instanceof a){J.watch.apply(J,d);break}j.push(void 0)}return j}},c))}),a=function(){function a(){var a=this;this.elements=[],x().on("request",function(){return a.watch.apply(a,arguments)})}return a.prototype.watch=function(a){var b,c,d,e;return d=a.type,b=a.request,e=a.url,H(e)?void 0:(c="socket"===d?new m(b):new n(b),this.elements.push(c))},a}(),n=function(){function a(a){var b,c,d,e,f,g,h=this;if(this.progress=0,null!=window.ProgressEvent)for(c=null,a.addEventListener("progress",function(a){return h.progress=a.lengthComputable?100*a.loaded/a.total:h.progress+(100-h.progress)/2}),g=["load","abort","timeout","error"],d=0,e=g.length;e>d;d++)b=g[d],a.addEventListener(b,function(){return h.progress=100});else f=a.onreadystatechange,a.onreadystatechange=function(){var b;return 0===(b=a.readyState)||4===b?h.progress=100:3===a.readyState&&(h.progress=50),"function"==typeof f?f.apply(null,arguments):void 0}}return a}(),m=function(){function a(a){var b,c,d,e,f=this;for(this.progress=0,e=["error","open"],c=0,d=e.length;d>c;c++)b=e[c],a.addEventListener(b,function(){return f.progress=100})}return a}(),d=function(){function a(a){var b,c,d,f;for(null==a&&(a={}),this.elements=[],null==a.selectors&&(a.selectors=[]),f=a.selectors,c=0,d=f.length;d>c;c++)b=f[c],this.elements.push(new e(b))}return a}(),e=function(){function a(a){this.selector=a,this.progress=0,this.check()}return a.prototype.check=function(){var a=this;return document.querySelector(this.selector)?this.done():setTimeout(function(){return a.check()},C.elements.checkInterval)},a.prototype.done=function(){return this.progress=100},a}(),c=function(){function a(){var a,b,c=this;this.progress=null!=(b=this.states[document.readyState])?b:100,a=document.onreadystatechange,document.onreadystatechange=function(){return null!=c.states[document.readyState]&&(c.progress=c.states[document.readyState]),"function"==typeof a?a.apply(null,arguments):void 0}}return a.prototype.states={loading:0,interactive:50,complete:100},a}(),f=function(){function a(){var a,b,c,d,e,f=this;this.progress=0,a=0,e=[],d=0,c=B(),b=setInterval(function(){var g;return g=B()-c-50,c=B(),e.push(g),e.length>C.eventLag.sampleCount&&e.shift(),a=p(e),++d>=C.eventLag.minSamples&&a<C.eventLag.lagThreshold?(f.progress=100,clearInterval(b)):f.progress=100*(3/(a+3))},50)}return a}(),l=function(){function a(a){this.source=a,this.last=this.sinceLastUpdate=0,this.rate=C.initialRate,this.catchup=0,this.progress=this.lastProgress=0,null!=this.source&&(this.progress=E(this.source,"progress"))}return a.prototype.tick=function(a,b){var c;return null==b&&(b=E(this.source,"progress")),b>=100&&(this.done=!0),b===this.last?this.sinceLastUpdate+=a:(this.sinceLastUpdate&&(this.rate=(b-this.last)/this.sinceLastUpdate),this.catchup=(b-this.progress)/C.catchupTime,this.sinceLastUpdate=0,this.last=b),b>this.progress&&(this.progress+=this.catchup*a),c=1-Math.pow(this.progress/100,C.easeFactor),this.progress+=c*this.rate*a,this.progress=Math.min(this.lastProgress+C.maxProgressPerFrame,this.progress),this.progress=Math.max(0,this.progress),this.progress=Math.min(100,this.progress),this.lastProgress=this.progress,this.progress},a}(),K=null,G=null,q=null,L=null,o=null,r=null,Pace.running=!1,y=function(){return C.restartOnPushState?Pace.restart():void 0},null!=window.history.pushState&&(S=window.history.pushState,window.history.pushState=function(){return y(),S.apply(window.history,arguments)}),null!=window.history.replaceState&&(V=window.history.replaceState,window.history.replaceState=function(){return y(),V.apply(window.history,arguments)}),k={ajax:a,elements:d,document:c,eventLag:f},(A=function(){var a,c,d,e,f,g,h,i;for(Pace.sources=K=[],g=["ajax","elements","document","eventLag"],c=0,e=g.length;e>c;c++)a=g[c],C[a]!==!1&&K.push(new k[a](C[a]));for(i=null!=(h=C.extraSources)?h:[],d=0,f=i.length;f>d;d++)J=i[d],K.push(new J(C));return Pace.bar=q=new b,G=[],L=new l})(),Pace.stop=function(){return Pace.trigger("stop"),Pace.running=!1,q.destroy(),r=!0,null!=o&&("function"==typeof s&&s(o),o=null),A()},Pace.restart=function(){return Pace.trigger("restart"),Pace.stop(),Pace.start()},Pace.go=function(){var a;return Pace.running=!0,q.render(),a=B(),r=!1,o=F(function(b,c){var d,e,f,g,h,i,j,k,m,n,o,p,s,t,u,v;for(k=100-q.progress,e=o=0,f=!0,i=p=0,t=K.length;t>p;i=++p)for(J=K[i],n=null!=G[i]?G[i]:G[i]=[],h=null!=(v=J.elements)?v:[J],j=s=0,u=h.length;u>s;j=++s)g=h[j],m=null!=n[j]?n[j]:n[j]=new l(g),f&=m.done,m.done||(e++,o+=m.tick(b));return d=o/e,q.update(L.tick(b,d)),q.done()||f||r?(q.update(100),Pace.trigger("done"),setTimeout(function(){return q.finish(),Pace.running=!1,Pace.trigger("hide")},Math.max(C.ghostTime,Math.max(C.minTime-(B()-a),0)))):c()})},Pace.start=function(a){u(C,a),Pace.running=!0;try{q.render()}catch(b){i=b}return document.querySelector(".pace")?(Pace.trigger("start"),Pace.go()):setTimeout(Pace.start,50)},"function"==typeof define&&define.amd?define(function(){return Pace}):"object"==typeof exports?module.exports=Pace:C.startOnPageLoad&&Pace.start()}).call(this); \ No newline at end of file diff --git a/assets/js/plugins/peity/jquery.peity.min.js b/assets/js/plugins/peity/jquery.peity.min.js deleted file mode 100644 index 085b7250..00000000 --- a/assets/js/plugins/peity/jquery.peity.min.js +++ /dev/null @@ -1,13 +0,0 @@ -// Peity jQuery plugin version 2.0.3 -// (c) 2014 Ben Pickles -// -// http://benpickles.github.io/peity -// -// Released under MIT license. -(function(e,q,h){var o=function(a,b){var c=q.createElementNS("http://www.w3.org/2000/svg",a);e.each(b,function(a,b){c.setAttribute(a,b)});return c},t="createElementNS"in q&&o("svg",{}).createSVGRect,r=1/(window.devicePixelRatio||1),j=e.fn.peity=function(a,b){t&&this.each(function(){var c=e(this),d=c.data("peity");if(d)a&&(d.type=a),e.extend(d.opts,b);else{var f=j.defaults[a],g={};e.each(c.data(),function(a,b){a in f&&(g[a]=b)});var h=e.extend({},f,g,b),d=new s(c,a,h);c.change(function(){d.draw()}).data("peity", - d)}d.draw()});return this},s=function(a,b,c){this.$el=a;this.type=b;this.opts=c},m=s.prototype;m.draw=function(){j.graphers[this.type].call(this,this.opts)};m.fill=function(){var a=this.opts.fill,b=a;e.isFunction(b)||(b=function(b,d){return a[d%a.length]});return b};m.prepare=function(a,b){var c;this.svg?c=e(this.svg).empty():(this.svg=o("svg",{"class":"peity"}),this.$el.hide().after(this.svg),c=e(this.svg).data("peity",this));this.svg.setAttribute("height",b);this.svg.setAttribute("width",a);return c}; - m.values=function(){return e.map(this.$el.text().split(this.opts.delimiter),function(a){return parseFloat(a)})};j.defaults={};j.graphers={};j.register=function(a,b,c){this.defaults[a]=b;this.graphers[a]=c};j.register("pie",{delimiter:null,diameter:16,fill:["#ff9900","#fff4dd","#ffc66e"]},function(a){if(!a.delimiter){var b=this.$el.text().match(/[^0-9\.]/);a.delimiter=b?b[0]:","}b=this.values();if("/"==a.delimiter)var c=b[0],b=[c,h.max(0,b[1]-c)];for(var d=0,c=b.length,f=0;d<c;d++)f+=b[d];for(var a= - this.prepare(a.width||a.diameter,a.height||a.diameter),d=a.width(),g=a.height(),a=d/2,g=g/2,p=h.min(a,g),e=h.PI,j=this.fill(),i=-e/2,d=0;d<c;d++){var n=b[d],l=n/f,k;if(0!=l){if(1==l)k=o("circle",{cx:a,cy:g,r:p});else{k=2*l*e;var l=i+k,m=p*h.cos(i)+a,i=p*h.sin(i)+g,q=p*h.cos(l)+a,r=p*h.sin(l)+g;k=o("path",{d:["M",a,g,"L",m,i,"A",p,p,0,k>e?1:0,1,q,r,"Z"].join(" ")});i=l}k.setAttribute("fill",j.call(this,n,d,b));this.svg.appendChild(k)}}});j.register("line",{delimiter:",",fill:"#c6d9fd",height:16,max:null, - min:0,stroke:"#4d89f9",strokeWidth:1,width:32},function(a){var b=this.values();1==b.length&&b.push(b[0]);for(var c=h.max.apply(h,b.concat([a.max])),d=h.min.apply(h,b.concat([a.min])),f=this.prepare(a.width,a.height),g=f.width(),f=f.height()-a.strokeWidth,e=g/(b.length-1),c=c-d,j=0==c?f:f/c,m=f+d*j,c=[0,m],i=0;i<b.length;i++)c.push(i*e,f-j*(b[i]-d)+a.strokeWidth/2);c.push(g,m);b=o("polygon",{fill:a.fill,points:c.join(" ")});this.svg.appendChild(b);a.strokeWidth&&(a=o("polyline",{fill:"transparent", - points:c.slice(2,c.length-2).join(" "),stroke:a.stroke,"stroke-width":a.strokeWidth,"stroke-linecap":"square"}),this.svg.appendChild(a))});j.register("bar",{delimiter:",",fill:["#4D89F9"],gap:1,height:16,max:null,min:0,width:32},function(a){for(var b=this.values(),c=h.max.apply(h,b.concat([a.max])),d=h.min.apply(h,b.concat([a.min])),f=this.prepare(a.width,a.height),g=f.width(),f=f.height(),e=c-d,j=0==e?0:f/e,a=a.gap,g=(g+a)/b.length,m=this.fill(),i=0;i<b.length;i++){var n=b[i],l=f-j*(n-d),k=j*n;if(0== - k){if(k=r,0>=d&&0<c||0==e)l-=r}else 0>k&&(l+=k,k=-k);n=o("rect",{fill:m.call(this,n,i,b),x:i*g,y:l,width:g-a,height:k});this.svg.appendChild(n)}})})(jQuery,document,Math); diff --git a/assets/js/plugins/rickshaw/rickshaw.min.js b/assets/js/plugins/rickshaw/rickshaw.min.js deleted file mode 100644 index 7775cf6d..00000000 --- a/assets/js/plugins/rickshaw/rickshaw.min.js +++ /dev/null @@ -1,3 +0,0 @@ -(function(root,factory){if(typeof define==="function"&&define.amd){define(["d3"],function(d3){return root.Rickshaw=factory(d3)})}else if(typeof exports==="object"){module.exports=factory(require("d3"))}else{root.Rickshaw=factory(d3)}})(this,function(d3){var Rickshaw={namespace:function(namespace,obj){var parts=namespace.split(".");var parent=Rickshaw;for(var i=1,length=parts.length;i<length;i++){var currentPart=parts[i];parent[currentPart]=parent[currentPart]||{};parent=parent[currentPart]}return parent},keys:function(obj){var keys=[];for(var key in obj)keys.push(key);return keys},extend:function(destination,source){for(var property in source){destination[property]=source[property]}return destination},clone:function(obj){return JSON.parse(JSON.stringify(obj))}};(function(globalContext){var _toString=Object.prototype.toString,NULL_TYPE="Null",UNDEFINED_TYPE="Undefined",BOOLEAN_TYPE="Boolean",NUMBER_TYPE="Number",STRING_TYPE="String",OBJECT_TYPE="Object",FUNCTION_CLASS="[object Function]";function isFunction(object){return _toString.call(object)===FUNCTION_CLASS}function extend(destination,source){for(var property in source)if(source.hasOwnProperty(property))destination[property]=source[property];return destination}function keys(object){if(Type(object)!==OBJECT_TYPE){throw new TypeError}var results=[];for(var property in object){if(object.hasOwnProperty(property)){results.push(property)}}return results}function Type(o){switch(o){case null:return NULL_TYPE;case void 0:return UNDEFINED_TYPE}var type=typeof o;switch(type){case"boolean":return BOOLEAN_TYPE;case"number":return NUMBER_TYPE;case"string":return STRING_TYPE}return OBJECT_TYPE}function isUndefined(object){return typeof object==="undefined"}var slice=Array.prototype.slice;function argumentNames(fn){var names=fn.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1].replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g,"").replace(/\s+/g,"").split(",");return names.length==1&&!names[0]?[]:names}function wrap(fn,wrapper){var __method=fn;return function(){var a=update([bind(__method,this)],arguments);return wrapper.apply(this,a)}}function update(array,args){var arrayLength=array.length,length=args.length;while(length--)array[arrayLength+length]=args[length];return array}function merge(array,args){array=slice.call(array,0);return update(array,args)}function bind(fn,context){if(arguments.length<2&&isUndefined(arguments[0]))return this;var __method=fn,args=slice.call(arguments,2);return function(){var a=merge(args,arguments);return __method.apply(context,a)}}var emptyFunction=function(){};var Class=function(){var IS_DONTENUM_BUGGY=function(){for(var p in{toString:1}){if(p==="toString")return false}return true}();function subclass(){}function create(){var parent=null,properties=[].slice.apply(arguments);if(isFunction(properties[0]))parent=properties.shift();function klass(){this.initialize.apply(this,arguments)}extend(klass,Class.Methods);klass.superclass=parent;klass.subclasses=[];if(parent){subclass.prototype=parent.prototype;klass.prototype=new subclass;try{parent.subclasses.push(klass)}catch(e){}}for(var i=0,length=properties.length;i<length;i++)klass.addMethods(properties[i]);if(!klass.prototype.initialize)klass.prototype.initialize=emptyFunction;klass.prototype.constructor=klass;return klass}function addMethods(source){var ancestor=this.superclass&&this.superclass.prototype,properties=keys(source);if(IS_DONTENUM_BUGGY){if(source.toString!=Object.prototype.toString)properties.push("toString");if(source.valueOf!=Object.prototype.valueOf)properties.push("valueOf")}for(var i=0,length=properties.length;i<length;i++){var property=properties[i],value=source[property];if(ancestor&&isFunction(value)&&argumentNames(value)[0]=="$super"){var method=value;value=wrap(function(m){return function(){return ancestor[m].apply(this,arguments)}}(property),method);value.valueOf=bind(method.valueOf,method);value.toString=bind(method.toString,method)}this.prototype[property]=value}return this}return{create:create,Methods:{addMethods:addMethods}}}();if(globalContext.exports){globalContext.exports.Class=Class}else{globalContext.Class=Class}})(Rickshaw);Rickshaw.namespace("Rickshaw.Compat.ClassList");Rickshaw.Compat.ClassList=function(){if(typeof document!=="undefined"&&!("classList"in document.createElement("a"))){(function(view){"use strict";var classListProp="classList",protoProp="prototype",elemCtrProto=(view.HTMLElement||view.Element)[protoProp],objCtr=Object,strTrim=String[protoProp].trim||function(){return this.replace(/^\s+|\s+$/g,"")},arrIndexOf=Array[protoProp].indexOf||function(item){var i=0,len=this.length;for(;i<len;i++){if(i in this&&this[i]===item){return i}}return-1},DOMEx=function(type,message){this.name=type;this.code=DOMException[type];this.message=message},checkTokenAndGetIndex=function(classList,token){if(token===""){throw new DOMEx("SYNTAX_ERR","An invalid or illegal string was specified")}if(/\s/.test(token)){throw new DOMEx("INVALID_CHARACTER_ERR","String contains an invalid character")}return arrIndexOf.call(classList,token)},ClassList=function(elem){var trimmedClasses=strTrim.call(elem.className),classes=trimmedClasses?trimmedClasses.split(/\s+/):[],i=0,len=classes.length;for(;i<len;i++){this.push(classes[i])}this._updateClassName=function(){elem.className=this.toString()}},classListProto=ClassList[protoProp]=[],classListGetter=function(){return new ClassList(this)};DOMEx[protoProp]=Error[protoProp];classListProto.item=function(i){return this[i]||null};classListProto.contains=function(token){token+="";return checkTokenAndGetIndex(this,token)!==-1};classListProto.add=function(token){token+="";if(checkTokenAndGetIndex(this,token)===-1){this.push(token);this._updateClassName()}};classListProto.remove=function(token){token+="";var index=checkTokenAndGetIndex(this,token);if(index!==-1){this.splice(index,1);this._updateClassName()}};classListProto.toggle=function(token){token+="";if(checkTokenAndGetIndex(this,token)===-1){this.add(token)}else{this.remove(token)}};classListProto.toString=function(){return this.join(" ")};if(objCtr.defineProperty){var classListPropDesc={get:classListGetter,enumerable:true,configurable:true};try{objCtr.defineProperty(elemCtrProto,classListProp,classListPropDesc)}catch(ex){if(ex.number===-2146823252){classListPropDesc.enumerable=false;objCtr.defineProperty(elemCtrProto,classListProp,classListPropDesc)}}}else if(objCtr[protoProp].__defineGetter__){elemCtrProto.__defineGetter__(classListProp,classListGetter)}})(window)}};if(typeof RICKSHAW_NO_COMPAT!=="undefined"&&!RICKSHAW_NO_COMPAT||typeof RICKSHAW_NO_COMPAT==="undefined"){new Rickshaw.Compat.ClassList}Rickshaw.namespace("Rickshaw.Graph");Rickshaw.Graph=function(args){var self=this;this.initialize=function(args){if(!args.element)throw"Rickshaw.Graph needs a reference to an element";if(args.element.nodeType!==1)throw"Rickshaw.Graph element was defined but not an HTML element";this.element=args.element;this.series=args.series;this.window={};this.updateCallbacks=[];this.configureCallbacks=[];this.defaults={interpolation:"cardinal",offset:"zero",min:undefined,max:undefined,preserve:false,xScale:undefined,yScale:undefined,stack:true};this._loadRenderers();this.configure(args);this.validateSeries(args.series);this.series.active=function(){return self.series.filter(function(s){return!s.disabled})};this.setSize({width:args.width,height:args.height});this.element.classList.add("rickshaw_graph");this.vis=d3.select(this.element).append("svg:svg").attr("width",this.width).attr("height",this.height);this.discoverRange()};this._loadRenderers=function(){for(var name in Rickshaw.Graph.Renderer){if(!name||!Rickshaw.Graph.Renderer.hasOwnProperty(name))continue;var r=Rickshaw.Graph.Renderer[name];if(!r||!r.prototype||!r.prototype.render)continue;self.registerRenderer(new r({graph:self}))}};this.validateSeries=function(series){if(!Array.isArray(series)&&!(series instanceof Rickshaw.Series)){var seriesSignature=Object.prototype.toString.apply(series);throw"series is not an array: "+seriesSignature}var pointsCount;series.forEach(function(s){if(!(s instanceof Object)){throw"series element is not an object: "+s}if(!s.data){throw"series has no data: "+JSON.stringify(s)}if(!Array.isArray(s.data)){throw"series data is not an array: "+JSON.stringify(s.data)}if(s.data.length>0){var x=s.data[0].x;var y=s.data[0].y;if(typeof x!="number"||typeof y!="number"&&y!==null){throw"x and y properties of points should be numbers instead of "+typeof x+" and "+typeof y}}if(s.data.length>=3){if(s.data[2].x<s.data[1].x||s.data[1].x<s.data[0].x||s.data[s.data.length-1].x<s.data[0].x){throw"series data needs to be sorted on x values for series name: "+s.name}}},this)};this.dataDomain=function(){var data=this.series.map(function(s){return s.data});var min=d3.min(data.map(function(d){return d[0].x}));var max=d3.max(data.map(function(d){return d[d.length-1].x}));return[min,max]};this.discoverRange=function(){var domain=this.renderer.domain();this.x=(this.xScale||d3.scale.linear()).copy().domain(domain.x).range([0,this.width]);this.y=(this.yScale||d3.scale.linear()).copy().domain(domain.y).range([this.height,0]);this.x.magnitude=d3.scale.linear().domain([domain.x[0]-domain.x[0],domain.x[1]-domain.x[0]]).range([0,this.width]);this.y.magnitude=d3.scale.linear().domain([domain.y[0]-domain.y[0],domain.y[1]-domain.y[0]]).range([0,this.height])};this.render=function(){var stackedData=this.stackData();this.discoverRange();this.renderer.render();this.updateCallbacks.forEach(function(callback){callback()})};this.update=this.render;this.stackData=function(){var data=this.series.active().map(function(d){return d.data}).map(function(d){return d.filter(function(d){return this._slice(d)},this)},this);var preserve=this.preserve;if(!preserve){this.series.forEach(function(series){if(series.scale){preserve=true}})}data=preserve?Rickshaw.clone(data):data;this.series.active().forEach(function(series,index){if(series.scale){var seriesData=data[index];if(seriesData){seriesData.forEach(function(d){d.y=series.scale(d.y)})}}});this.stackData.hooks.data.forEach(function(entry){data=entry.f.apply(self,[data])});var stackedData;if(!this.renderer.unstack){this._validateStackable();var layout=d3.layout.stack();layout.offset(self.offset);stackedData=layout(data)}stackedData=stackedData||data;if(this.renderer.unstack){stackedData.forEach(function(seriesData){seriesData.forEach(function(d){d.y0=d.y0===undefined?0:d.y0})})}this.stackData.hooks.after.forEach(function(entry){stackedData=entry.f.apply(self,[data])});var i=0;this.series.forEach(function(series){if(series.disabled)return;series.stack=stackedData[i++]});this.stackedData=stackedData;return stackedData};this._validateStackable=function(){var series=this.series;var pointsCount;series.forEach(function(s){pointsCount=pointsCount||s.data.length;if(pointsCount&&s.data.length!=pointsCount){throw"stacked series cannot have differing numbers of points: "+pointsCount+" vs "+s.data.length+"; see Rickshaw.Series.fill()"}},this)};this.stackData.hooks={data:[],after:[]};this._slice=function(d){if(this.window.xMin||this.window.xMax){var isInRange=true;if(this.window.xMin&&d.x<this.window.xMin)isInRange=false;if(this.window.xMax&&d.x>this.window.xMax)isInRange=false;return isInRange}return true};this.onUpdate=function(callback){this.updateCallbacks.push(callback)};this.onConfigure=function(callback){this.configureCallbacks.push(callback)};this.registerRenderer=function(renderer){this._renderers=this._renderers||{};this._renderers[renderer.name]=renderer};this.configure=function(args){this.config=this.config||{};if(args.width||args.height){this.setSize(args)}Rickshaw.keys(this.defaults).forEach(function(k){this.config[k]=k in args?args[k]:k in this?this[k]:this.defaults[k]},this);Rickshaw.keys(this.config).forEach(function(k){this[k]=this.config[k]},this);if("stack"in args)args.unstack=!args.stack;var renderer=args.renderer||this.renderer&&this.renderer.name||"stack";this.setRenderer(renderer,args);this.configureCallbacks.forEach(function(callback){callback(args)})};this.setRenderer=function(r,args){if(typeof r=="function"){this.renderer=new r({graph:self});this.registerRenderer(this.renderer)}else{if(!this._renderers[r]){throw"couldn't find renderer "+r}this.renderer=this._renderers[r]}if(typeof args=="object"){this.renderer.configure(args)}};this.setSize=function(args){args=args||{};if(typeof window!==undefined){var style=window.getComputedStyle(this.element,null);var elementWidth=parseInt(style.getPropertyValue("width"),10);var elementHeight=parseInt(style.getPropertyValue("height"),10)}this.width=args.width||elementWidth||400;this.height=args.height||elementHeight||250;this.vis&&this.vis.attr("width",this.width).attr("height",this.height)};this.initialize(args)};Rickshaw.namespace("Rickshaw.Fixtures.Color");Rickshaw.Fixtures.Color=function(){this.schemes={};this.schemes.spectrum14=["#ecb796","#dc8f70","#b2a470","#92875a","#716c49","#d2ed82","#bbe468","#a1d05d","#e7cbe6","#d8aad6","#a888c2","#9dc2d3","#649eb9","#387aa3"].reverse();this.schemes.spectrum2000=["#57306f","#514c76","#646583","#738394","#6b9c7d","#84b665","#a7ca50","#bfe746","#e2f528","#fff726","#ecdd00","#d4b11d","#de8800","#de4800","#c91515","#9a0000","#7b0429","#580839","#31082b"];this.schemes.spectrum2001=["#2f243f","#3c2c55","#4a3768","#565270","#6b6b7c","#72957f","#86ad6e","#a1bc5e","#b8d954","#d3e04e","#ccad2a","#cc8412","#c1521d","#ad3821","#8a1010","#681717","#531e1e","#3d1818","#320a1b"];this.schemes.classic9=["#423d4f","#4a6860","#848f39","#a2b73c","#ddcb53","#c5a32f","#7d5836","#963b20","#7c2626","#491d37","#2f254a"].reverse();this.schemes.httpStatus={503:"#ea5029",502:"#d23f14",500:"#bf3613",410:"#efacea",409:"#e291dc",403:"#f457e8",408:"#e121d2",401:"#b92dae",405:"#f47ceb",404:"#a82a9f",400:"#b263c6",301:"#6fa024",302:"#87c32b",307:"#a0d84c",304:"#28b55c",200:"#1a4f74",206:"#27839f",201:"#52adc9",202:"#7c979f",203:"#a5b8bd",204:"#c1cdd1"};this.schemes.colorwheel=["#b5b6a9","#858772","#785f43","#96557e","#4682b4","#65b9ac","#73c03a","#cb513a"].reverse();this.schemes.cool=["#5e9d2f","#73c03a","#4682b4","#7bc3b8","#a9884e","#c1b266","#a47493","#c09fb5"];this.schemes.munin=["#00cc00","#0066b3","#ff8000","#ffcc00","#330099","#990099","#ccff00","#ff0000","#808080","#008f00","#00487d","#b35a00","#b38f00","#6b006b","#8fb300","#b30000","#bebebe","#80ff80","#80c9ff","#ffc080","#ffe680","#aa80ff","#ee00cc","#ff8080","#666600","#ffbfff","#00ffcc","#cc6699","#999900"]};Rickshaw.namespace("Rickshaw.Fixtures.RandomData");Rickshaw.Fixtures.RandomData=function(timeInterval){var addData;timeInterval=timeInterval||1;var lastRandomValue=200;var timeBase=Math.floor((new Date).getTime()/1e3);this.addData=function(data){var randomValue=Math.random()*100+15+lastRandomValue;var index=data[0].length;var counter=1;data.forEach(function(series){var randomVariance=Math.random()*20;var v=randomValue/25+counter++ +(Math.cos(index*counter*11/960)+2)*15+(Math.cos(index/7)+2)*7+(Math.cos(index/17)+2)*1;series.push({x:index*timeInterval+timeBase,y:v+randomVariance})});lastRandomValue=randomValue*.85};this.removeData=function(data){data.forEach(function(series){series.shift()});timeBase+=timeInterval}};Rickshaw.namespace("Rickshaw.Fixtures.Time");Rickshaw.Fixtures.Time=function(){var self=this;this.months=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];this.units=[{name:"decade",seconds:86400*365.25*10,formatter:function(d){return parseInt(d.getUTCFullYear()/10,10)*10}},{name:"year",seconds:86400*365.25,formatter:function(d){return d.getUTCFullYear()}},{name:"month",seconds:86400*30.5,formatter:function(d){return self.months[d.getUTCMonth()]}},{name:"week",seconds:86400*7,formatter:function(d){return self.formatDate(d)}},{name:"day",seconds:86400,formatter:function(d){return d.getUTCDate()}},{name:"6 hour",seconds:3600*6,formatter:function(d){return self.formatTime(d)}},{name:"hour",seconds:3600,formatter:function(d){return self.formatTime(d)}},{name:"15 minute",seconds:60*15,formatter:function(d){return self.formatTime(d)}},{name:"minute",seconds:60,formatter:function(d){return d.getUTCMinutes()}},{name:"15 second",seconds:15,formatter:function(d){return d.getUTCSeconds()+"s"}},{name:"second",seconds:1,formatter:function(d){return d.getUTCSeconds()+"s"}},{name:"decisecond",seconds:1/10,formatter:function(d){return d.getUTCMilliseconds()+"ms"}},{name:"centisecond",seconds:1/100,formatter:function(d){return d.getUTCMilliseconds()+"ms"}}];this.unit=function(unitName){return this.units.filter(function(unit){return unitName==unit.name}).shift()};this.formatDate=function(d){return d3.time.format("%b %e")(d)};this.formatTime=function(d){return d.toUTCString().match(/(\d+:\d+):/)[1]};this.ceil=function(time,unit){var date,floor,year;if(unit.name=="month"){date=new Date(time*1e3);floor=Date.UTC(date.getUTCFullYear(),date.getUTCMonth())/1e3;if(floor==time)return time;year=date.getUTCFullYear();var month=date.getUTCMonth();if(month==11){month=0;year=year+1}else{month+=1}return Date.UTC(year,month)/1e3}if(unit.name=="year"){date=new Date(time*1e3);floor=Date.UTC(date.getUTCFullYear(),0)/1e3;if(floor==time)return time;year=date.getUTCFullYear()+1;return Date.UTC(year,0)/1e3}return Math.ceil(time/unit.seconds)*unit.seconds}};Rickshaw.namespace("Rickshaw.Fixtures.Time.Local");Rickshaw.Fixtures.Time.Local=function(){var self=this;this.months=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];this.units=[{name:"decade",seconds:86400*365.25*10,formatter:function(d){return parseInt(d.getFullYear()/10,10)*10}},{name:"year",seconds:86400*365.25,formatter:function(d){return d.getFullYear()}},{name:"month",seconds:86400*30.5,formatter:function(d){return self.months[d.getMonth()]}},{name:"week",seconds:86400*7,formatter:function(d){return self.formatDate(d)}},{name:"day",seconds:86400,formatter:function(d){return d.getDate()}},{name:"6 hour",seconds:3600*6,formatter:function(d){return self.formatTime(d)}},{name:"hour",seconds:3600,formatter:function(d){return self.formatTime(d)}},{name:"15 minute",seconds:60*15,formatter:function(d){return self.formatTime(d)}},{name:"minute",seconds:60,formatter:function(d){return d.getMinutes()}},{name:"15 second",seconds:15,formatter:function(d){return d.getSeconds()+"s"}},{name:"second",seconds:1,formatter:function(d){return d.getSeconds()+"s"}},{name:"decisecond",seconds:1/10,formatter:function(d){return d.getMilliseconds()+"ms"}},{name:"centisecond",seconds:1/100,formatter:function(d){return d.getMilliseconds()+"ms"}}];this.unit=function(unitName){return this.units.filter(function(unit){return unitName==unit.name}).shift()};this.formatDate=function(d){return d3.time.format("%b %e")(d)};this.formatTime=function(d){return d.toString().match(/(\d+:\d+):/)[1]};this.ceil=function(time,unit){var date,floor,year;if(unit.name=="day"){var nearFuture=new Date((time+unit.seconds-1)*1e3);var rounded=new Date(0);rounded.setMilliseconds(0);rounded.setSeconds(0);rounded.setMinutes(0);rounded.setHours(0);rounded.setDate(nearFuture.getDate());rounded.setMonth(nearFuture.getMonth());rounded.setFullYear(nearFuture.getFullYear());return rounded.getTime()/1e3}if(unit.name=="month"){date=new Date(time*1e3);floor=new Date(date.getFullYear(),date.getMonth()).getTime()/1e3;if(floor==time)return time;year=date.getFullYear();var month=date.getMonth();if(month==11){month=0;year=year+1}else{month+=1}return new Date(year,month).getTime()/1e3}if(unit.name=="year"){date=new Date(time*1e3);floor=new Date(date.getUTCFullYear(),0).getTime()/1e3;if(floor==time)return time;year=date.getFullYear()+1;return new Date(year,0).getTime()/1e3}return Math.ceil(time/unit.seconds)*unit.seconds}};Rickshaw.namespace("Rickshaw.Fixtures.Number");Rickshaw.Fixtures.Number.formatKMBT=function(y){var abs_y=Math.abs(y);if(abs_y>=1e12){return y/1e12+"T"}else if(abs_y>=1e9){return y/1e9+"B"}else if(abs_y>=1e6){return y/1e6+"M"}else if(abs_y>=1e3){return y/1e3+"K"}else if(abs_y<1&&y>0){return y.toFixed(2)}else if(abs_y===0){return""}else{return y}};Rickshaw.Fixtures.Number.formatBase1024KMGTP=function(y){var abs_y=Math.abs(y);if(abs_y>=0x4000000000000){return y/0x4000000000000+"P"}else if(abs_y>=1099511627776){return y/1099511627776+"T"}else if(abs_y>=1073741824){return y/1073741824+"G"}else if(abs_y>=1048576){return y/1048576+"M"}else if(abs_y>=1024){return y/1024+"K"}else if(abs_y<1&&y>0){return y.toFixed(2)}else if(abs_y===0){return""}else{return y}};Rickshaw.namespace("Rickshaw.Color.Palette");Rickshaw.Color.Palette=function(args){var color=new Rickshaw.Fixtures.Color;args=args||{};this.schemes={};this.scheme=color.schemes[args.scheme]||args.scheme||color.schemes.colorwheel;this.runningIndex=0;this.generatorIndex=0;if(args.interpolatedStopCount){var schemeCount=this.scheme.length-1;var i,j,scheme=[];for(i=0;i<schemeCount;i++){scheme.push(this.scheme[i]);var generator=d3.interpolateHsl(this.scheme[i],this.scheme[i+1]);for(j=1;j<args.interpolatedStopCount;j++){scheme.push(generator(1/args.interpolatedStopCount*j))}}scheme.push(this.scheme[this.scheme.length-1]);this.scheme=scheme}this.rotateCount=this.scheme.length;this.color=function(key){return this.scheme[key]||this.scheme[this.runningIndex++]||this.interpolateColor()||"#808080"};this.interpolateColor=function(){if(!Array.isArray(this.scheme))return;var color;if(this.generatorIndex==this.rotateCount*2-1){color=d3.interpolateHsl(this.scheme[this.generatorIndex],this.scheme[0])(.5);this.generatorIndex=0;this.rotateCount*=2}else{color=d3.interpolateHsl(this.scheme[this.generatorIndex],this.scheme[this.generatorIndex+1])(.5);this.generatorIndex++}this.scheme.push(color);return color}};Rickshaw.namespace("Rickshaw.Graph.Ajax");Rickshaw.Graph.Ajax=Rickshaw.Class.create({initialize:function(args){this.dataURL=args.dataURL;this.onData=args.onData||function(d){return d};this.onComplete=args.onComplete||function(){};this.onError=args.onError||function(){};this.args=args;this.request()},request:function(){jQuery.ajax({url:this.dataURL,dataType:"json",success:this.success.bind(this),error:this.error.bind(this)})},error:function(){console.log("error loading dataURL: "+this.dataURL);this.onError(this)},success:function(data,status){data=this.onData(data);this.args.series=this._splice({data:data,series:this.args.series});this.graph=this.graph||new Rickshaw.Graph(this.args);this.graph.render();this.onComplete(this)},_splice:function(args){var data=args.data;var series=args.series;if(!args.series)return data;series.forEach(function(s){var seriesKey=s.key||s.name;if(!seriesKey)throw"series needs a key or a name";data.forEach(function(d){var dataKey=d.key||d.name;if(!dataKey)throw"data needs a key or a name";if(seriesKey==dataKey){var properties=["color","name","data"];properties.forEach(function(p){if(d[p])s[p]=d[p]})}})});return series}});Rickshaw.namespace("Rickshaw.Graph.Annotate");Rickshaw.Graph.Annotate=function(args){var graph=this.graph=args.graph;this.elements={intimeline:args.element};var self=this;this.data={};this.elements.intimeline.classList.add("rickshaw_annotation_intimeline");this.add=function(time,content,end_time){self.data[time]=self.data[time]||{boxes:[]};self.data[time].boxes.push({content:content,end:end_time})};this.update=function(){Rickshaw.keys(self.data).forEach(function(time){var annotation=self.data[time];var left=self.graph.x(time);if(left<0||left>self.graph.x.range()[1]){if(annotation.element){annotation.line.classList.add("offscreen");annotation.element.style.display="none"}annotation.boxes.forEach(function(box){if(box.rangeElement)box.rangeElement.classList.add("offscreen")});return}if(!annotation.element){var element=annotation.element=document.createElement("div");element.classList.add("annotation");this.elements.intimeline.appendChild(element);element.addEventListener("click",function(e){element.classList.toggle("active");annotation.line.classList.toggle("active");annotation.boxes.forEach(function(box){if(box.rangeElement)box.rangeElement.classList.toggle("active")})},false)}annotation.element.style.left=left+"px";annotation.element.style.display="block";annotation.boxes.forEach(function(box){var element=box.element;if(!element){element=box.element=document.createElement("div");element.classList.add("content");element.innerHTML=box.content;annotation.element.appendChild(element);annotation.line=document.createElement("div");annotation.line.classList.add("annotation_line");self.graph.element.appendChild(annotation.line);if(box.end){box.rangeElement=document.createElement("div");box.rangeElement.classList.add("annotation_range");self.graph.element.appendChild(box.rangeElement)}}if(box.end){var annotationRangeStart=left;var annotationRangeEnd=Math.min(self.graph.x(box.end),self.graph.x.range()[1]);if(annotationRangeStart>annotationRangeEnd){annotationRangeEnd=left;annotationRangeStart=Math.max(self.graph.x(box.end),self.graph.x.range()[0])}var annotationRangeWidth=annotationRangeEnd-annotationRangeStart;box.rangeElement.style.left=annotationRangeStart+"px";box.rangeElement.style.width=annotationRangeWidth+"px";box.rangeElement.classList.remove("offscreen")}annotation.line.classList.remove("offscreen");annotation.line.style.left=left+"px"})},this)};this.graph.onUpdate(function(){self.update()})};Rickshaw.namespace("Rickshaw.Graph.Axis.Time");Rickshaw.Graph.Axis.Time=function(args){var self=this;this.graph=args.graph;this.elements=[];this.ticksTreatment=args.ticksTreatment||"plain";this.fixedTimeUnit=args.timeUnit;var time=args.timeFixture||new Rickshaw.Fixtures.Time;this.appropriateTimeUnit=function(){var unit;var units=time.units;var domain=this.graph.x.domain();var rangeSeconds=domain[1]-domain[0];units.forEach(function(u){if(Math.floor(rangeSeconds/u.seconds)>=2){unit=unit||u}});return unit||time.units[time.units.length-1]};this.tickOffsets=function(){var domain=this.graph.x.domain();var unit=this.fixedTimeUnit||this.appropriateTimeUnit();var count=Math.ceil((domain[1]-domain[0])/unit.seconds);var runningTick=domain[0];var offsets=[];for(var i=0;i<count;i++){var tickValue=time.ceil(runningTick,unit);runningTick=tickValue+unit.seconds/2;offsets.push({value:tickValue,unit:unit})}return offsets};this.render=function(){this.elements.forEach(function(e){e.parentNode.removeChild(e)});this.elements=[];var offsets=this.tickOffsets();offsets.forEach(function(o){if(self.graph.x(o.value)>self.graph.x.range()[1])return;var element=document.createElement("div");element.style.left=self.graph.x(o.value)+"px";element.classList.add("x_tick");element.classList.add(self.ticksTreatment);var title=document.createElement("div");title.classList.add("title");title.innerHTML=o.unit.formatter(new Date(o.value*1e3));element.appendChild(title);self.graph.element.appendChild(element);self.elements.push(element)})};this.graph.onUpdate(function(){self.render()})};Rickshaw.namespace("Rickshaw.Graph.Axis.X");Rickshaw.Graph.Axis.X=function(args){var self=this;var berthRate=.1;this.initialize=function(args){this.graph=args.graph;this.orientation=args.orientation||"top";this.pixelsPerTick=args.pixelsPerTick||75;if(args.ticks)this.staticTicks=args.ticks;if(args.tickValues)this.tickValues=args.tickValues;this.tickSize=args.tickSize||4;this.ticksTreatment=args.ticksTreatment||"plain";if(args.element){this.element=args.element;this._discoverSize(args.element,args);this.vis=d3.select(args.element).append("svg:svg").attr("height",this.height).attr("width",this.width).attr("class","rickshaw_graph x_axis_d3");this.element=this.vis[0][0];this.element.style.position="relative";this.setSize({width:args.width,height:args.height})}else{this.vis=this.graph.vis}this.graph.onUpdate(function(){self.render()})};this.setSize=function(args){args=args||{};if(!this.element)return;this._discoverSize(this.element.parentNode,args);this.vis.attr("height",this.height).attr("width",this.width*(1+berthRate));var berth=Math.floor(this.width*berthRate/2);this.element.style.left=-1*berth+"px"};this.render=function(){if(this._renderWidth!==undefined&&this.graph.width!==this._renderWidth)this.setSize({auto:true});var axis=d3.svg.axis().scale(this.graph.x).orient(this.orientation);axis.tickFormat(args.tickFormat||function(x){return x});if(this.tickValues)axis.tickValues(this.tickValues);this.ticks=this.staticTicks||Math.floor(this.graph.width/this.pixelsPerTick);var berth=Math.floor(this.width*berthRate/2)||0;var transform;if(this.orientation=="top"){var yOffset=this.height||this.graph.height;transform="translate("+berth+","+yOffset+")"}else{transform="translate("+berth+", 0)"}if(this.element){this.vis.selectAll("*").remove()}this.vis.append("svg:g").attr("class",["x_ticks_d3",this.ticksTreatment].join(" ")).attr("transform",transform).call(axis.ticks(this.ticks).tickSubdivide(0).tickSize(this.tickSize));var gridSize=(this.orientation=="bottom"?1:-1)*this.graph.height;this.graph.vis.append("svg:g").attr("class","x_grid_d3").call(axis.ticks(this.ticks).tickSubdivide(0).tickSize(gridSize)).selectAll("text").each(function(){this.parentNode.setAttribute("data-x-value",this.textContent)});this._renderHeight=this.graph.height};this._discoverSize=function(element,args){if(typeof window!=="undefined"){var style=window.getComputedStyle(element,null);var elementHeight=parseInt(style.getPropertyValue("height"),10);if(!args.auto){var elementWidth=parseInt(style.getPropertyValue("width"),10)}}this.width=(args.width||elementWidth||this.graph.width)*(1+berthRate);this.height=args.height||elementHeight||40};this.initialize(args)};Rickshaw.namespace("Rickshaw.Graph.Axis.Y");Rickshaw.Graph.Axis.Y=Rickshaw.Class.create({initialize:function(args){this.graph=args.graph;this.orientation=args.orientation||"right";this.pixelsPerTick=args.pixelsPerTick||75;if(args.ticks)this.staticTicks=args.ticks;if(args.tickValues)this.tickValues=args.tickValues;this.tickSize=args.tickSize||4;this.ticksTreatment=args.ticksTreatment||"plain";this.tickFormat=args.tickFormat||function(y){return y};this.berthRate=.1;if(args.element){this.element=args.element;this.vis=d3.select(args.element).append("svg:svg").attr("class","rickshaw_graph y_axis");this.element=this.vis[0][0];this.element.style.position="relative";this.setSize({width:args.width,height:args.height})}else{this.vis=this.graph.vis}var self=this;this.graph.onUpdate(function(){self.render()})},setSize:function(args){args=args||{};if(!this.element)return;if(typeof window!=="undefined"){var style=window.getComputedStyle(this.element.parentNode,null);var elementWidth=parseInt(style.getPropertyValue("width"),10);if(!args.auto){var elementHeight=parseInt(style.getPropertyValue("height"),10)}}this.width=args.width||elementWidth||this.graph.width*this.berthRate;this.height=args.height||elementHeight||this.graph.height;this.vis.attr("width",this.width).attr("height",this.height*(1+this.berthRate));var berth=this.height*this.berthRate;if(this.orientation=="left"){this.element.style.top=-1*berth+"px"}},render:function(){if(this._renderHeight!==undefined&&this.graph.height!==this._renderHeight)this.setSize({auto:true});this.ticks=this.staticTicks||Math.floor(this.graph.height/this.pixelsPerTick);var axis=this._drawAxis(this.graph.y);this._drawGrid(axis);this._renderHeight=this.graph.height},_drawAxis:function(scale){var axis=d3.svg.axis().scale(scale).orient(this.orientation);axis.tickFormat(this.tickFormat);if(this.tickValues)axis.tickValues(this.tickValues);if(this.orientation=="left"){var berth=this.height*this.berthRate;var transform="translate("+this.width+", "+berth+")"}if(this.element){this.vis.selectAll("*").remove()}this.vis.append("svg:g").attr("class",["y_ticks",this.ticksTreatment].join(" ")).attr("transform",transform).call(axis.ticks(this.ticks).tickSubdivide(0).tickSize(this.tickSize));return axis},_drawGrid:function(axis){var gridSize=(this.orientation=="right"?1:-1)*this.graph.width;this.graph.vis.append("svg:g").attr("class","y_grid").call(axis.ticks(this.ticks).tickSubdivide(0).tickSize(gridSize)).selectAll("text").each(function(){this.parentNode.setAttribute("data-y-value",this.textContent) -})}});Rickshaw.namespace("Rickshaw.Graph.Axis.Y.Scaled");Rickshaw.Graph.Axis.Y.Scaled=Rickshaw.Class.create(Rickshaw.Graph.Axis.Y,{initialize:function($super,args){if(typeof args.scale==="undefined"){throw new Error("Scaled requires scale")}this.scale=args.scale;if(typeof args.grid==="undefined"){this.grid=true}else{this.grid=args.grid}$super(args)},_drawAxis:function($super,scale){var domain=this.scale.domain();var renderDomain=this.graph.renderer.domain().y;var extents=[Math.min.apply(Math,domain),Math.max.apply(Math,domain)];var extentMap=d3.scale.linear().domain([0,1]).range(extents);var adjExtents=[extentMap(renderDomain[0]),extentMap(renderDomain[1])];var adjustment=d3.scale.linear().domain(extents).range(adjExtents);var adjustedScale=this.scale.copy().domain(domain.map(adjustment)).range(scale.range());return $super(adjustedScale)},_drawGrid:function($super,axis){if(this.grid){$super(axis)}}});Rickshaw.namespace("Rickshaw.Graph.Behavior.Series.Highlight");Rickshaw.Graph.Behavior.Series.Highlight=function(args){this.graph=args.graph;this.legend=args.legend;var self=this;var colorSafe={};var activeLine=null;var disabledColor=args.disabledColor||function(seriesColor){return d3.interpolateRgb(seriesColor,d3.rgb("#d8d8d8"))(.8).toString()};this.addHighlightEvents=function(l){l.element.addEventListener("mouseover",function(e){if(activeLine)return;else activeLine=l;self.legend.lines.forEach(function(line){if(l===line){if(self.graph.renderer.unstack&&(line.series.renderer?line.series.renderer.unstack:true)){var seriesIndex=self.graph.series.indexOf(line.series);line.originalIndex=seriesIndex;var series=self.graph.series.splice(seriesIndex,1)[0];self.graph.series.push(series)}return}colorSafe[line.series.name]=colorSafe[line.series.name]||line.series.color;line.series.color=disabledColor(line.series.color)});self.graph.update()},false);l.element.addEventListener("mouseout",function(e){if(!activeLine)return;else activeLine=null;self.legend.lines.forEach(function(line){if(l===line&&line.hasOwnProperty("originalIndex")){var series=self.graph.series.pop();self.graph.series.splice(line.originalIndex,0,series);delete line.originalIndex}if(colorSafe[line.series.name]){line.series.color=colorSafe[line.series.name]}});self.graph.update()},false)};if(this.legend){this.legend.lines.forEach(function(l){self.addHighlightEvents(l)})}};Rickshaw.namespace("Rickshaw.Graph.Behavior.Series.Order");Rickshaw.Graph.Behavior.Series.Order=function(args){this.graph=args.graph;this.legend=args.legend;var self=this;if(typeof window.jQuery=="undefined"){throw"couldn't find jQuery at window.jQuery"}if(typeof window.jQuery.ui=="undefined"){throw"couldn't find jQuery UI at window.jQuery.ui"}jQuery(function(){jQuery(self.legend.list).sortable({containment:"parent",tolerance:"pointer",update:function(event,ui){var series=[];jQuery(self.legend.list).find("li").each(function(index,item){if(!item.series)return;series.push(item.series)});for(var i=self.graph.series.length-1;i>=0;i--){self.graph.series[i]=series.shift()}self.graph.update()}});jQuery(self.legend.list).disableSelection()});this.graph.onUpdate(function(){var h=window.getComputedStyle(self.legend.element).height;self.legend.element.style.height=h})};Rickshaw.namespace("Rickshaw.Graph.Behavior.Series.Toggle");Rickshaw.Graph.Behavior.Series.Toggle=function(args){this.graph=args.graph;this.legend=args.legend;var self=this;this.addAnchor=function(line){var anchor=document.createElement("a");anchor.innerHTML="&#10004;";anchor.classList.add("action");line.element.insertBefore(anchor,line.element.firstChild);anchor.onclick=function(e){if(line.series.disabled){line.series.enable();line.element.classList.remove("disabled")}else{if(this.graph.series.filter(function(s){return!s.disabled}).length<=1)return;line.series.disable();line.element.classList.add("disabled")}}.bind(this);var label=line.element.getElementsByTagName("span")[0];label.onclick=function(e){var disableAllOtherLines=line.series.disabled;if(!disableAllOtherLines){for(var i=0;i<self.legend.lines.length;i++){var l=self.legend.lines[i];if(line.series===l.series){}else if(l.series.disabled){}else{disableAllOtherLines=true;break}}}if(disableAllOtherLines){line.series.enable();line.element.classList.remove("disabled");self.legend.lines.forEach(function(l){if(line.series===l.series){}else{l.series.disable();l.element.classList.add("disabled")}})}else{self.legend.lines.forEach(function(l){l.series.enable();l.element.classList.remove("disabled")})}}};if(this.legend){var $=jQuery;if(typeof $!="undefined"&&$(this.legend.list).sortable){$(this.legend.list).sortable({start:function(event,ui){ui.item.bind("no.onclick",function(event){event.preventDefault()})},stop:function(event,ui){setTimeout(function(){ui.item.unbind("no.onclick")},250)}})}this.legend.lines.forEach(function(l){self.addAnchor(l)})}this._addBehavior=function(){this.graph.series.forEach(function(s){s.disable=function(){if(self.graph.series.length<=1){throw"only one series left"}s.disabled=true;self.graph.update()};s.enable=function(){s.disabled=false;self.graph.update()}})};this._addBehavior();this.updateBehaviour=function(){this._addBehavior()}};Rickshaw.namespace("Rickshaw.Graph.HoverDetail");Rickshaw.Graph.HoverDetail=Rickshaw.Class.create({initialize:function(args){var graph=this.graph=args.graph;this.xFormatter=args.xFormatter||function(x){return new Date(x*1e3).toUTCString()};this.yFormatter=args.yFormatter||function(y){return y===null?y:y.toFixed(2)};var element=this.element=document.createElement("div");element.className="detail";this.visible=true;graph.element.appendChild(element);this.lastEvent=null;this._addListeners();this.onShow=args.onShow;this.onHide=args.onHide;this.onRender=args.onRender;this.formatter=args.formatter||this.formatter},formatter:function(series,x,y,formattedX,formattedY,d){return series.name+":&nbsp;"+formattedY},update:function(e){e=e||this.lastEvent;if(!e)return;this.lastEvent=e;if(!e.target.nodeName.match(/^(path|svg|rect|circle)$/))return;var graph=this.graph;var eventX=e.offsetX||e.layerX;var eventY=e.offsetY||e.layerY;var j=0;var points=[];var nearestPoint;this.graph.series.active().forEach(function(series){var data=this.graph.stackedData[j++];if(!data.length)return;var domainX=graph.x.invert(eventX);var domainIndexScale=d3.scale.linear().domain([data[0].x,data.slice(-1)[0].x]).range([0,data.length-1]);var approximateIndex=Math.round(domainIndexScale(domainX));if(approximateIndex==data.length-1)approximateIndex--;var dataIndex=Math.min(approximateIndex||0,data.length-1);for(var i=approximateIndex;i<data.length-1;){if(!data[i]||!data[i+1])break;if(data[i].x<=domainX&&data[i+1].x>domainX){dataIndex=Math.abs(domainX-data[i].x)<Math.abs(domainX-data[i+1].x)?i:i+1;break}if(data[i+1].x<=domainX){i++}else{i--}}if(dataIndex<0)dataIndex=0;var value=data[dataIndex];var distance=Math.sqrt(Math.pow(Math.abs(graph.x(value.x)-eventX),2)+Math.pow(Math.abs(graph.y(value.y+value.y0)-eventY),2));var xFormatter=series.xFormatter||this.xFormatter;var yFormatter=series.yFormatter||this.yFormatter;var point={formattedXValue:xFormatter(value.x),formattedYValue:yFormatter(series.scale?series.scale.invert(value.y):value.y),series:series,value:value,distance:distance,order:j,name:series.name};if(!nearestPoint||distance<nearestPoint.distance){nearestPoint=point}points.push(point)},this);if(!nearestPoint)return;nearestPoint.active=true;var domainX=nearestPoint.value.x;var formattedXValue=nearestPoint.formattedXValue;this.element.innerHTML="";this.element.style.left=graph.x(domainX)+"px";this.visible&&this.render({points:points,detail:points,mouseX:eventX,mouseY:eventY,formattedXValue:formattedXValue,domainX:domainX})},hide:function(){this.visible=false;this.element.classList.add("inactive");if(typeof this.onHide=="function"){this.onHide()}},show:function(){this.visible=true;this.element.classList.remove("inactive");if(typeof this.onShow=="function"){this.onShow()}},render:function(args){var graph=this.graph;var points=args.points;var point=points.filter(function(p){return p.active}).shift();if(point.value.y===null)return;var formattedXValue=point.formattedXValue;var formattedYValue=point.formattedYValue;this.element.innerHTML="";this.element.style.left=graph.x(point.value.x)+"px";var xLabel=document.createElement("div");xLabel.className="x_label";xLabel.innerHTML=formattedXValue;this.element.appendChild(xLabel);var item=document.createElement("div");item.className="item";var series=point.series;var actualY=series.scale?series.scale.invert(point.value.y):point.value.y;item.innerHTML=this.formatter(series,point.value.x,actualY,formattedXValue,formattedYValue,point);item.style.top=this.graph.y(point.value.y0+point.value.y)+"px";this.element.appendChild(item);var dot=document.createElement("div");dot.className="dot";dot.style.top=item.style.top;dot.style.borderColor=series.color;this.element.appendChild(dot);if(point.active){item.classList.add("active");dot.classList.add("active")}var alignables=[xLabel,item];alignables.forEach(function(el){el.classList.add("left")});this.show();var leftAlignError=this._calcLayoutError(alignables);if(leftAlignError>0){alignables.forEach(function(el){el.classList.remove("left");el.classList.add("right")});var rightAlignError=this._calcLayoutError(alignables);if(rightAlignError>leftAlignError){alignables.forEach(function(el){el.classList.remove("right");el.classList.add("left")})}}if(typeof this.onRender=="function"){this.onRender(args)}},_calcLayoutError:function(alignables){var parentRect=this.element.parentNode.getBoundingClientRect();var error=0;var alignRight=alignables.forEach(function(el){var rect=el.getBoundingClientRect();if(!rect.width){return}if(rect.right>parentRect.right){error+=rect.right-parentRect.right}if(rect.left<parentRect.left){error+=parentRect.left-rect.left}});return error},_addListeners:function(){this.graph.element.addEventListener("mousemove",function(e){this.visible=true;this.update(e)}.bind(this),false);this.graph.onUpdate(function(){this.update()}.bind(this));this.graph.element.addEventListener("mouseout",function(e){if(e.relatedTarget&&!(e.relatedTarget.compareDocumentPosition(this.graph.element)&Node.DOCUMENT_POSITION_CONTAINS)){this.hide()}}.bind(this),false)}});Rickshaw.namespace("Rickshaw.Graph.JSONP");Rickshaw.Graph.JSONP=Rickshaw.Class.create(Rickshaw.Graph.Ajax,{request:function(){jQuery.ajax({url:this.dataURL,dataType:"jsonp",success:this.success.bind(this),error:this.error.bind(this)})}});Rickshaw.namespace("Rickshaw.Graph.Legend");Rickshaw.Graph.Legend=Rickshaw.Class.create({className:"rickshaw_legend",initialize:function(args){this.element=args.element;this.graph=args.graph;this.naturalOrder=args.naturalOrder;this.element.classList.add(this.className);this.list=document.createElement("ul");this.element.appendChild(this.list);this.render();this.graph.onUpdate(function(){})},render:function(){var self=this;while(this.list.firstChild){this.list.removeChild(this.list.firstChild)}this.lines=[];var series=this.graph.series.map(function(s){return s});if(!this.naturalOrder){series=series.reverse()}series.forEach(function(s){self.addLine(s)})},addLine:function(series){var line=document.createElement("li");line.className="line";if(series.disabled){line.className+=" disabled"}if(series.className){d3.select(line).classed(series.className,true)}var swatch=document.createElement("div");swatch.className="swatch";swatch.style.backgroundColor=series.color;line.appendChild(swatch);var label=document.createElement("span");label.className="label";label.innerHTML=series.name;line.appendChild(label);this.list.appendChild(line);line.series=series;if(series.noLegend){line.style.display="none"}var _line={element:line,series:series};if(this.shelving){this.shelving.addAnchor(_line);this.shelving.updateBehaviour()}if(this.highlighter){this.highlighter.addHighlightEvents(_line)}this.lines.push(_line);return line}});Rickshaw.namespace("Rickshaw.Graph.RangeSlider");Rickshaw.Graph.RangeSlider=Rickshaw.Class.create({initialize:function(args){var element=this.element=args.element;var graph=this.graph=args.graph;this.slideCallbacks=[];this.build();graph.onUpdate(function(){this.update()}.bind(this))},build:function(){var element=this.element;var graph=this.graph;var $=jQuery;var domain=graph.dataDomain();var self=this;$(function(){$(element).slider({range:true,min:domain[0],max:domain[1],values:[domain[0],domain[1]],slide:function(event,ui){if(ui.values[1]<=ui.values[0])return;graph.window.xMin=ui.values[0];graph.window.xMax=ui.values[1];graph.update();var domain=graph.dataDomain();if(domain[0]==ui.values[0]){graph.window.xMin=undefined}if(domain[1]==ui.values[1]){graph.window.xMax=undefined}self.slideCallbacks.forEach(function(callback){callback(graph,graph.window.xMin,graph.window.xMax)})}})});$(element)[0].style.width=graph.width+"px"},update:function(){var element=this.element;var graph=this.graph;var $=jQuery;var values=$(element).slider("option","values");var domain=graph.dataDomain();$(element).slider("option","min",domain[0]);$(element).slider("option","max",domain[1]);if(graph.window.xMin==null){values[0]=domain[0]}if(graph.window.xMax==null){values[1]=domain[1]}$(element).slider("option","values",values)},onSlide:function(callback){this.slideCallbacks.push(callback)}});Rickshaw.namespace("Rickshaw.Graph.RangeSlider.Preview");Rickshaw.Graph.RangeSlider.Preview=Rickshaw.Class.create({initialize:function(args){if(!args.element)throw"Rickshaw.Graph.RangeSlider.Preview needs a reference to an element";if(!args.graph&&!args.graphs)throw"Rickshaw.Graph.RangeSlider.Preview needs a reference to an graph or an array of graphs";this.element=args.element;this.element.style.position="relative";this.graphs=args.graph?[args.graph]:args.graphs;this.defaults={height:75,width:400,gripperColor:undefined,frameTopThickness:3,frameHandleThickness:10,frameColor:"#d4d4d4",frameOpacity:1,minimumFrameWidth:0,heightRatio:.2};this.heightRatio=args.heightRatio||this.defaults.heightRatio;this.defaults.gripperColor=d3.rgb(this.defaults.frameColor).darker().toString();this.configureCallbacks=[];this.slideCallbacks=[];this.previews=[];if(!args.width)this.widthFromGraph=true;if(!args.height)this.heightFromGraph=true;if(this.widthFromGraph||this.heightFromGraph){this.graphs[0].onConfigure(function(){this.configure(args);this.render()}.bind(this))}args.width=args.width||this.graphs[0].width||this.defaults.width;args.height=args.height||this.graphs[0].height*this.heightRatio||this.defaults.height;this.configure(args);this.render()},onSlide:function(callback){this.slideCallbacks.push(callback)},onConfigure:function(callback){this.configureCallbacks.push(callback)},configure:function(args){this.config=this.config||{};this.configureCallbacks.forEach(function(callback){callback(args)});Rickshaw.keys(this.defaults).forEach(function(k){this.config[k]=k in args?args[k]:k in this.config?this.config[k]:this.defaults[k]},this);if("width"in args||"height"in args){if(this.widthFromGraph){this.config.width=this.graphs[0].width}if(this.heightFromGraph){this.config.height=this.graphs[0].height*this.heightRatio;this.previewHeight=this.config.height}this.previews.forEach(function(preview){var height=this.previewHeight/this.graphs.length-this.config.frameTopThickness*2;var width=this.config.width-this.config.frameHandleThickness*2;preview.setSize({width:width,height:height});if(this.svg){var svgHeight=height+this.config.frameHandleThickness*2;var svgWidth=width+this.config.frameHandleThickness*2;this.svg.style("width",svgWidth+"px");this.svg.style("height",svgHeight+"px")}},this)}},render:function(){var self=this;this.svg=d3.select(this.element).selectAll("svg.rickshaw_range_slider_preview").data([null]);this.previewHeight=this.config.height-this.config.frameTopThickness*2;this.previewWidth=this.config.width-this.config.frameHandleThickness*2;this.currentFrame=[0,this.previewWidth];var buildGraph=function(parent,index){var graphArgs=Rickshaw.extend({},parent.config);var height=self.previewHeight/self.graphs.length;var renderer=parent.renderer.name;Rickshaw.extend(graphArgs,{element:this.appendChild(document.createElement("div")),height:height,width:self.previewWidth,series:parent.series,renderer:renderer});var graph=new Rickshaw.Graph(graphArgs);self.previews.push(graph);parent.onUpdate(function(){graph.render();self.render()});parent.onConfigure(function(args){delete args.height;args.width=args.width-self.config.frameHandleThickness*2;graph.configure(args);graph.render()});graph.render()};var graphContainer=d3.select(this.element).selectAll("div.rickshaw_range_slider_preview_container").data(this.graphs);var translateCommand="translate("+this.config.frameHandleThickness+"px, "+this.config.frameTopThickness+"px)";graphContainer.enter().append("div").classed("rickshaw_range_slider_preview_container",true).style("-webkit-transform",translateCommand).style("-moz-transform",translateCommand).style("-ms-transform",translateCommand).style("transform",translateCommand).each(buildGraph);graphContainer.exit().remove();var masterGraph=this.graphs[0];var domainScale=d3.scale.linear().domain([0,this.previewWidth]).range(masterGraph.dataDomain());var currentWindow=[masterGraph.window.xMin,masterGraph.window.xMax];this.currentFrame[0]=currentWindow[0]===undefined?0:Math.round(domainScale.invert(currentWindow[0]));if(this.currentFrame[0]<0)this.currentFrame[0]=0;this.currentFrame[1]=currentWindow[1]===undefined?this.previewWidth:domainScale.invert(currentWindow[1]);if(this.currentFrame[1]-this.currentFrame[0]<self.config.minimumFrameWidth){this.currentFrame[1]=(this.currentFrame[0]||0)+self.config.minimumFrameWidth}this.svg.enter().append("svg").classed("rickshaw_range_slider_preview",true).style("height",this.config.height+"px").style("width",this.config.width+"px").style("position","absolute").style("top",0);this._renderDimming();this._renderFrame();this._renderGrippers();this._renderHandles();this._renderMiddle();this._registerMouseEvents()},_renderDimming:function(){var element=this.svg.selectAll("path.dimming").data([null]);element.enter().append("path").attr("fill","white").attr("fill-opacity","0.7").attr("fill-rule","evenodd").classed("dimming",true);var path="";path+=" M "+this.config.frameHandleThickness+" "+this.config.frameTopThickness;path+=" h "+this.previewWidth;path+=" v "+this.previewHeight;path+=" h "+-this.previewWidth;path+=" z ";path+=" M "+Math.max(this.currentFrame[0],this.config.frameHandleThickness)+" "+this.config.frameTopThickness;path+=" H "+Math.min(this.currentFrame[1]+this.config.frameHandleThickness*2,this.previewWidth+this.config.frameHandleThickness);path+=" v "+this.previewHeight;path+=" H "+Math.max(this.currentFrame[0],this.config.frameHandleThickness);path+=" z";element.attr("d",path)},_renderFrame:function(){var element=this.svg.selectAll("path.frame").data([null]);element.enter().append("path").attr("stroke","white").attr("stroke-width","1px").attr("stroke-linejoin","round").attr("fill",this.config.frameColor).attr("fill-opacity",this.config.frameOpacity).attr("fill-rule","evenodd").classed("frame",true);var path="";path+=" M "+this.currentFrame[0]+" 0";path+=" H "+(this.currentFrame[1]+this.config.frameHandleThickness*2);path+=" V "+this.config.height;path+=" H "+this.currentFrame[0];path+=" z";path+=" M "+(this.currentFrame[0]+this.config.frameHandleThickness)+" "+this.config.frameTopThickness;path+=" H "+(this.currentFrame[1]+this.config.frameHandleThickness);path+=" v "+this.previewHeight;path+=" H "+(this.currentFrame[0]+this.config.frameHandleThickness);path+=" z";element.attr("d",path)},_renderGrippers:function(){var gripper=this.svg.selectAll("path.gripper").data([null]);gripper.enter().append("path").attr("stroke",this.config.gripperColor).classed("gripper",true);var path="";[.4,.6].forEach(function(spacing){path+=" M "+Math.round(this.currentFrame[0]+this.config.frameHandleThickness*spacing)+" "+Math.round(this.config.height*.3);path+=" V "+Math.round(this.config.height*.7);path+=" M "+Math.round(this.currentFrame[1]+this.config.frameHandleThickness*(1+spacing))+" "+Math.round(this.config.height*.3);path+=" V "+Math.round(this.config.height*.7)}.bind(this));gripper.attr("d",path)},_renderHandles:function(){var leftHandle=this.svg.selectAll("rect.left_handle").data([null]);leftHandle.enter().append("rect").attr("width",this.config.frameHandleThickness).style("cursor","ew-resize").style("fill-opacity","0").classed("left_handle",true);leftHandle.attr("x",this.currentFrame[0]).attr("height",this.config.height);var rightHandle=this.svg.selectAll("rect.right_handle").data([null]);rightHandle.enter().append("rect").attr("width",this.config.frameHandleThickness).style("cursor","ew-resize").style("fill-opacity","0").classed("right_handle",true);rightHandle.attr("x",this.currentFrame[1]+this.config.frameHandleThickness).attr("height",this.config.height)},_renderMiddle:function(){var middleHandle=this.svg.selectAll("rect.middle_handle").data([null]);middleHandle.enter().append("rect").style("cursor","move").style("fill-opacity","0").classed("middle_handle",true);middleHandle.attr("width",Math.max(0,this.currentFrame[1]-this.currentFrame[0])).attr("x",this.currentFrame[0]+this.config.frameHandleThickness).attr("height",this.config.height)},_registerMouseEvents:function(){var element=d3.select(this.element);var drag={target:null,start:null,stop:null,left:false,right:false,rigid:false};var self=this;function onMousemove(datum,index){drag.stop=self._getClientXFromEvent(d3.event,drag);var distanceTraveled=drag.stop-drag.start;var frameAfterDrag=self.frameBeforeDrag.slice(0);var minimumFrameWidth=self.config.minimumFrameWidth;if(drag.rigid){minimumFrameWidth=self.frameBeforeDrag[1]-self.frameBeforeDrag[0]}if(drag.left){frameAfterDrag[0]=Math.max(frameAfterDrag[0]+distanceTraveled,0)}if(drag.right){frameAfterDrag[1]=Math.min(frameAfterDrag[1]+distanceTraveled,self.previewWidth)}var currentFrameWidth=frameAfterDrag[1]-frameAfterDrag[0];if(currentFrameWidth<=minimumFrameWidth){if(drag.left){frameAfterDrag[0]=frameAfterDrag[1]-minimumFrameWidth}if(drag.right){frameAfterDrag[1]=frameAfterDrag[0]+minimumFrameWidth}if(frameAfterDrag[0]<=0){frameAfterDrag[1]-=frameAfterDrag[0];frameAfterDrag[0]=0}if(frameAfterDrag[1]>=self.previewWidth){frameAfterDrag[0]-=frameAfterDrag[1]-self.previewWidth;frameAfterDrag[1]=self.previewWidth}}self.graphs.forEach(function(graph){var domainScale=d3.scale.linear().interpolate(d3.interpolateNumber).domain([0,self.previewWidth]).range(graph.dataDomain());var windowAfterDrag=[domainScale(frameAfterDrag[0]),domainScale(frameAfterDrag[1])];self.slideCallbacks.forEach(function(callback){callback(graph,windowAfterDrag[0],windowAfterDrag[1])});if(frameAfterDrag[0]===0){windowAfterDrag[0]=undefined}if(frameAfterDrag[1]===self.previewWidth){windowAfterDrag[1]=undefined}graph.window.xMin=windowAfterDrag[0];graph.window.xMax=windowAfterDrag[1];graph.update()})}function onMousedown(){drag.target=d3.event.target;drag.start=self._getClientXFromEvent(d3.event,drag);self.frameBeforeDrag=self.currentFrame.slice();d3.event.preventDefault?d3.event.preventDefault():d3.event.returnValue=false;d3.select(document).on("mousemove.rickshaw_range_slider_preview",onMousemove);d3.select(document).on("mouseup.rickshaw_range_slider_preview",onMouseup);d3.select(document).on("touchmove.rickshaw_range_slider_preview",onMousemove);d3.select(document).on("touchend.rickshaw_range_slider_preview",onMouseup);d3.select(document).on("touchcancel.rickshaw_range_slider_preview",onMouseup)}function onMousedownLeftHandle(datum,index){drag.left=true;onMousedown()}function onMousedownRightHandle(datum,index){drag.right=true;onMousedown()}function onMousedownMiddleHandle(datum,index){drag.left=true;drag.right=true;drag.rigid=true;onMousedown()}function onMouseup(datum,index){d3.select(document).on("mousemove.rickshaw_range_slider_preview",null);d3.select(document).on("mouseup.rickshaw_range_slider_preview",null);d3.select(document).on("touchmove.rickshaw_range_slider_preview",null);d3.select(document).on("touchend.rickshaw_range_slider_preview",null);d3.select(document).on("touchcancel.rickshaw_range_slider_preview",null);delete self.frameBeforeDrag;drag.left=false;drag.right=false;drag.rigid=false}element.select("rect.left_handle").on("mousedown",onMousedownLeftHandle);element.select("rect.right_handle").on("mousedown",onMousedownRightHandle);element.select("rect.middle_handle").on("mousedown",onMousedownMiddleHandle);element.select("rect.left_handle").on("touchstart",onMousedownLeftHandle);element.select("rect.right_handle").on("touchstart",onMousedownRightHandle);element.select("rect.middle_handle").on("touchstart",onMousedownMiddleHandle)},_getClientXFromEvent:function(event,drag){switch(event.type){case"touchstart":case"touchmove":var touchList=event.changedTouches;var touch=null;for(var touchIndex=0;touchIndex<touchList.length;touchIndex++){if(touchList[touchIndex].target===drag.target){touch=touchList[touchIndex];break}}return touch!==null?touch.clientX:undefined;default:return event.clientX}}});Rickshaw.namespace("Rickshaw.Graph.Renderer");Rickshaw.Graph.Renderer=Rickshaw.Class.create({initialize:function(args){this.graph=args.graph;this.tension=args.tension||this.tension;this.configure(args)},seriesPathFactory:function(){},seriesStrokeFactory:function(){},defaults:function(){return{tension:.8,strokeWidth:2,unstack:true,padding:{top:.01,right:0,bottom:.01,left:0},stroke:false,fill:false}},domain:function(data){var stackedData=data||this.graph.stackedData||this.graph.stackData();var xMin=+Infinity;var xMax=-Infinity;var yMin=+Infinity;var yMax=-Infinity;stackedData.forEach(function(series){series.forEach(function(d){if(d.y==null)return;var y=d.y+d.y0;if(y<yMin)yMin=y;if(y>yMax)yMax=y});if(!series.length)return;if(series[0].x<xMin)xMin=series[0].x;if(series[series.length-1].x>xMax)xMax=series[series.length-1].x});xMin-=(xMax-xMin)*this.padding.left;xMax+=(xMax-xMin)*this.padding.right;yMin=this.graph.min==="auto"?yMin:this.graph.min||0;yMax=this.graph.max===undefined?yMax:this.graph.max;if(this.graph.min==="auto"||yMin<0){yMin-=(yMax-yMin)*this.padding.bottom}if(this.graph.max===undefined){yMax+=(yMax-yMin)*this.padding.top}return{x:[xMin,xMax],y:[yMin,yMax]}},render:function(args){args=args||{};var graph=this.graph;var series=args.series||graph.series;var vis=args.vis||graph.vis;vis.selectAll("*").remove();var data=series.filter(function(s){return!s.disabled}).map(function(s){return s.stack});var pathNodes=vis.selectAll("path.path").data(data).enter().append("svg:path").classed("path",true).attr("d",this.seriesPathFactory());if(this.stroke){var strokeNodes=vis.selectAll("path.stroke").data(data).enter().append("svg:path").classed("stroke",true).attr("d",this.seriesStrokeFactory())}var i=0;series.forEach(function(series){if(series.disabled)return;series.path=pathNodes[0][i];if(this.stroke)series.stroke=strokeNodes[0][i];this._styleSeries(series);i++},this)},_styleSeries:function(series){var fill=this.fill?series.color:"none";var stroke=this.stroke?series.color:"none";series.path.setAttribute("fill",fill);series.path.setAttribute("stroke",stroke);series.path.setAttribute("stroke-width",this.strokeWidth);if(series.className){d3.select(series.path).classed(series.className,true)}if(series.className&&this.stroke){d3.select(series.stroke).classed(series.className,true)}},configure:function(args){args=args||{};Rickshaw.keys(this.defaults()).forEach(function(key){if(!args.hasOwnProperty(key)){this[key]=this[key]||this.graph[key]||this.defaults()[key];return}if(typeof this.defaults()[key]=="object"){Rickshaw.keys(this.defaults()[key]).forEach(function(k){this[key][k]=args[key][k]!==undefined?args[key][k]:this[key][k]!==undefined?this[key][k]:this.defaults()[key][k]},this)}else{this[key]=args[key]!==undefined?args[key]:this[key]!==undefined?this[key]:this.graph[key]!==undefined?this.graph[key]:this.defaults()[key]}},this)},setStrokeWidth:function(strokeWidth){if(strokeWidth!==undefined){this.strokeWidth=strokeWidth}},setTension:function(tension){if(tension!==undefined){this.tension=tension}}});Rickshaw.namespace("Rickshaw.Graph.Renderer.Line");Rickshaw.Graph.Renderer.Line=Rickshaw.Class.create(Rickshaw.Graph.Renderer,{name:"line",defaults:function($super){return Rickshaw.extend($super(),{unstack:true,fill:false,stroke:true})},seriesPathFactory:function(){var graph=this.graph;var factory=d3.svg.line().x(function(d){return graph.x(d.x)}).y(function(d){return graph.y(d.y)}).interpolate(this.graph.interpolation).tension(this.tension);factory.defined&&factory.defined(function(d){return d.y!==null});return factory}});Rickshaw.namespace("Rickshaw.Graph.Renderer.Stack");Rickshaw.Graph.Renderer.Stack=Rickshaw.Class.create(Rickshaw.Graph.Renderer,{name:"stack",defaults:function($super){return Rickshaw.extend($super(),{fill:true,stroke:false,unstack:false})},seriesPathFactory:function(){var graph=this.graph;var factory=d3.svg.area().x(function(d){return graph.x(d.x)}).y0(function(d){return graph.y(d.y0)}).y1(function(d){return graph.y(d.y+d.y0)}).interpolate(this.graph.interpolation).tension(this.tension);factory.defined&&factory.defined(function(d){return d.y!==null});return factory}});Rickshaw.namespace("Rickshaw.Graph.Renderer.Bar");Rickshaw.Graph.Renderer.Bar=Rickshaw.Class.create(Rickshaw.Graph.Renderer,{name:"bar",defaults:function($super){var defaults=Rickshaw.extend($super(),{gapSize:.05,unstack:false});delete defaults.tension;return defaults},initialize:function($super,args){args=args||{};this.gapSize=args.gapSize||this.gapSize;$super(args)},domain:function($super){var domain=$super();var frequentInterval=this._frequentInterval(this.graph.stackedData.slice(-1).shift());domain.x[1]+=Number(frequentInterval.magnitude);return domain},barWidth:function(series){var frequentInterval=this._frequentInterval(series.stack);var barWidth=this.graph.x.magnitude(frequentInterval.magnitude)*(1-this.gapSize);return barWidth},render:function(args){args=args||{};var graph=this.graph;var series=args.series||graph.series;var vis=args.vis||graph.vis;vis.selectAll("*").remove();var barWidth=this.barWidth(series.active()[0]);var barXOffset=0;var activeSeriesCount=series.filter(function(s){return!s.disabled}).length;var seriesBarWidth=this.unstack?barWidth/activeSeriesCount:barWidth;var transform=function(d){var matrix=[1,0,0,d.y<0?-1:1,0,d.y<0?graph.y.magnitude(Math.abs(d.y))*2:0];return"matrix("+matrix.join(",")+")"};series.forEach(function(series){if(series.disabled)return;var barWidth=this.barWidth(series);var nodes=vis.selectAll("path").data(series.stack.filter(function(d){return d.y!==null})).enter().append("svg:rect").attr("x",function(d){return graph.x(d.x)+barXOffset}).attr("y",function(d){return graph.y(d.y0+Math.abs(d.y))*(d.y<0?-1:1)}).attr("width",seriesBarWidth).attr("height",function(d){return graph.y.magnitude(Math.abs(d.y))}).attr("transform",transform);Array.prototype.forEach.call(nodes[0],function(n){n.setAttribute("fill",series.color)});if(this.unstack)barXOffset+=seriesBarWidth},this)},_frequentInterval:function(data){var intervalCounts={};for(var i=0;i<data.length-1;i++){var interval=data[i+1].x-data[i].x;intervalCounts[interval]=intervalCounts[interval]||0;intervalCounts[interval]++}var frequentInterval={count:0,magnitude:1};Rickshaw.keys(intervalCounts).forEach(function(i){if(frequentInterval.count<intervalCounts[i]){frequentInterval={count:intervalCounts[i],magnitude:i}}});return frequentInterval}});Rickshaw.namespace("Rickshaw.Graph.Renderer.Area");Rickshaw.Graph.Renderer.Area=Rickshaw.Class.create(Rickshaw.Graph.Renderer,{name:"area",defaults:function($super){return Rickshaw.extend($super(),{unstack:false,fill:false,stroke:false})},seriesPathFactory:function(){var graph=this.graph;var factory=d3.svg.area().x(function(d){return graph.x(d.x)}).y0(function(d){return graph.y(d.y0)}).y1(function(d){return graph.y(d.y+d.y0)}).interpolate(graph.interpolation).tension(this.tension); - factory.defined&&factory.defined(function(d){return d.y!==null});return factory},seriesStrokeFactory:function(){var graph=this.graph;var factory=d3.svg.line().x(function(d){return graph.x(d.x)}).y(function(d){return graph.y(d.y+d.y0)}).interpolate(graph.interpolation).tension(this.tension);factory.defined&&factory.defined(function(d){return d.y!==null});return factory},render:function(args){args=args||{};var graph=this.graph;var series=args.series||graph.series;var vis=args.vis||graph.vis;vis.selectAll("*").remove();var method=this.unstack?"append":"insert";var data=series.filter(function(s){return!s.disabled}).map(function(s){return s.stack});var nodes=vis.selectAll("path").data(data).enter()[method]("svg:g","g");nodes.append("svg:path").attr("d",this.seriesPathFactory()).attr("class","area");if(this.stroke){nodes.append("svg:path").attr("d",this.seriesStrokeFactory()).attr("class","line")}var i=0;series.forEach(function(series){if(series.disabled)return;series.path=nodes[0][i++];this._styleSeries(series)},this)},_styleSeries:function(series){if(!series.path)return;d3.select(series.path).select(".area").attr("fill",series.color);if(this.stroke){d3.select(series.path).select(".line").attr("fill","none").attr("stroke",series.stroke||d3.interpolateRgb(series.color,"black")(.125)).attr("stroke-width",this.strokeWidth)}if(series.className){series.path.setAttribute("class",series.className)}}});Rickshaw.namespace("Rickshaw.Graph.Renderer.ScatterPlot");Rickshaw.Graph.Renderer.ScatterPlot=Rickshaw.Class.create(Rickshaw.Graph.Renderer,{name:"scatterplot",defaults:function($super){return Rickshaw.extend($super(),{unstack:true,fill:true,stroke:false,padding:{top:.01,right:.01,bottom:.01,left:.01},dotSize:4})},initialize:function($super,args){$super(args)},render:function(args){args=args||{};var graph=this.graph;var series=args.series||graph.series;var vis=args.vis||graph.vis;var dotSize=this.dotSize;vis.selectAll("*").remove();series.forEach(function(series){if(series.disabled)return;var nodes=vis.selectAll("path").data(series.stack.filter(function(d){return d.y!==null})).enter().append("svg:circle").attr("cx",function(d){return graph.x(d.x)}).attr("cy",function(d){return graph.y(d.y)}).attr("r",function(d){return"r"in d?d.r:dotSize});if(series.className){nodes.classed(series.className,true)}Array.prototype.forEach.call(nodes[0],function(n){n.setAttribute("fill",series.color)})},this)}});Rickshaw.namespace("Rickshaw.Graph.Renderer.Multi");Rickshaw.Graph.Renderer.Multi=Rickshaw.Class.create(Rickshaw.Graph.Renderer,{name:"multi",initialize:function($super,args){$super(args)},defaults:function($super){return Rickshaw.extend($super(),{unstack:true,fill:false,stroke:true})},configure:function($super,args){args=args||{};this.config=args;$super(args)},domain:function($super){this.graph.stackData();var domains=[];var groups=this._groups();this._stack(groups);groups.forEach(function(group){var data=group.series.filter(function(s){return!s.disabled}).map(function(s){return s.stack});if(!data.length)return;var domain=null;if(group.renderer&&group.renderer.domain){domain=group.renderer.domain(data)}else{domain=$super(data)}domains.push(domain)});var xMin=d3.min(domains.map(function(d){return d.x[0]}));var xMax=d3.max(domains.map(function(d){return d.x[1]}));var yMin=d3.min(domains.map(function(d){return d.y[0]}));var yMax=d3.max(domains.map(function(d){return d.y[1]}));return{x:[xMin,xMax],y:[yMin,yMax]}},_groups:function(){var graph=this.graph;var renderGroups={};graph.series.forEach(function(series){if(series.disabled)return;if(!renderGroups[series.renderer]){var ns="http://www.w3.org/2000/svg";var vis=document.createElementNS(ns,"g");graph.vis[0][0].appendChild(vis);var renderer=graph._renderers[series.renderer];var config={};var defaults=[this.defaults(),renderer.defaults(),this.config,this.graph];defaults.forEach(function(d){Rickshaw.extend(config,d)});renderer.configure(config);renderGroups[series.renderer]={renderer:renderer,series:[],vis:d3.select(vis)}}renderGroups[series.renderer].series.push(series)},this);var groups=[];Object.keys(renderGroups).forEach(function(key){var group=renderGroups[key];groups.push(group)});return groups},_stack:function(groups){groups.forEach(function(group){var series=group.series.filter(function(series){return!series.disabled});var data=series.map(function(series){return series.stack});if(!group.renderer.unstack){var layout=d3.layout.stack();var stackedData=Rickshaw.clone(layout(data));series.forEach(function(series,index){series._stack=Rickshaw.clone(stackedData[index])})}},this);return groups},render:function(){this.graph.series.forEach(function(series){if(!series.renderer){throw new Error("Each series needs a renderer for graph 'multi' renderer")}});this.graph.vis.selectAll("*").remove();var groups=this._groups();groups=this._stack(groups);groups.forEach(function(group){var series=group.series.filter(function(series){return!series.disabled});series.active=function(){return series};group.renderer.render({series:series,vis:group.vis});series.forEach(function(s){s.stack=s._stack||s.stack||s.data})})}});Rickshaw.namespace("Rickshaw.Graph.Renderer.LinePlot");Rickshaw.Graph.Renderer.LinePlot=Rickshaw.Class.create(Rickshaw.Graph.Renderer,{name:"lineplot",defaults:function($super){return Rickshaw.extend($super(),{unstack:true,fill:false,stroke:true,padding:{top:.01,right:.01,bottom:.01,left:.01},dotSize:3,strokeWidth:2})},seriesPathFactory:function(){var graph=this.graph;var factory=d3.svg.line().x(function(d){return graph.x(d.x)}).y(function(d){return graph.y(d.y)}).interpolate(this.graph.interpolation).tension(this.tension);factory.defined&&factory.defined(function(d){return d.y!==null});return factory},render:function(args){args=args||{};var graph=this.graph;var series=args.series||graph.series;var vis=args.vis||graph.vis;var dotSize=this.dotSize;vis.selectAll("*").remove();var data=series.filter(function(s){return!s.disabled}).map(function(s){return s.stack});var nodes=vis.selectAll("path").data(data).enter().append("svg:path").attr("d",this.seriesPathFactory());var i=0;series.forEach(function(series){if(series.disabled)return;series.path=nodes[0][i++];this._styleSeries(series)},this);series.forEach(function(series){if(series.disabled)return;var nodes=vis.selectAll("x").data(series.stack.filter(function(d){return d.y!==null})).enter().append("svg:circle").attr("cx",function(d){return graph.x(d.x)}).attr("cy",function(d){return graph.y(d.y)}).attr("r",function(d){return"r"in d?d.r:dotSize});Array.prototype.forEach.call(nodes[0],function(n){if(!n)return;n.setAttribute("data-color",series.color);n.setAttribute("fill","white");n.setAttribute("stroke",series.color);n.setAttribute("stroke-width",this.strokeWidth)}.bind(this))},this)}});Rickshaw.namespace("Rickshaw.Graph.Smoother");Rickshaw.Graph.Smoother=Rickshaw.Class.create({initialize:function(args){this.graph=args.graph;this.element=args.element;this.aggregationScale=1;this.build();this.graph.stackData.hooks.data.push({name:"smoother",orderPosition:50,f:this.transformer.bind(this)})},build:function(){var self=this;var $=jQuery;if(this.element){$(function(){$(self.element).slider({min:1,max:100,slide:function(event,ui){self.setScale(ui.value);self.graph.update()}})})}},setScale:function(scale){if(scale<1){throw"scale out of range: "+scale}this.aggregationScale=scale;this.graph.update()},transformer:function(data){if(this.aggregationScale==1)return data;var aggregatedData=[];data.forEach(function(seriesData){var aggregatedSeriesData=[];while(seriesData.length){var avgX=0,avgY=0;var slice=seriesData.splice(0,this.aggregationScale);slice.forEach(function(d){avgX+=d.x/slice.length;avgY+=d.y/slice.length});aggregatedSeriesData.push({x:avgX,y:avgY})}aggregatedData.push(aggregatedSeriesData)}.bind(this));return aggregatedData}});Rickshaw.namespace("Rickshaw.Graph.Socketio");Rickshaw.Graph.Socketio=Rickshaw.Class.create(Rickshaw.Graph.Ajax,{request:function(){var socket=io.connect(this.dataURL);var self=this;socket.on("rickshaw",function(data){self.success(data)})}});Rickshaw.namespace("Rickshaw.Series");Rickshaw.Series=Rickshaw.Class.create(Array,{initialize:function(data,palette,options){options=options||{};this.palette=new Rickshaw.Color.Palette(palette);this.timeBase=typeof options.timeBase==="undefined"?Math.floor((new Date).getTime()/1e3):options.timeBase;var timeInterval=typeof options.timeInterval=="undefined"?1e3:options.timeInterval;this.setTimeInterval(timeInterval);if(data&&typeof data=="object"&&Array.isArray(data)){data.forEach(function(item){this.addItem(item)},this)}},addItem:function(item){if(typeof item.name==="undefined"){throw"addItem() needs a name"}item.color=item.color||this.palette.color(item.name);item.data=item.data||[];if(item.data.length===0&&this.length&&this.getIndex()>0){this[0].data.forEach(function(plot){item.data.push({x:plot.x,y:0})})}else if(item.data.length===0){item.data.push({x:this.timeBase-(this.timeInterval||0),y:0})}this.push(item);if(this.legend){this.legend.addLine(this.itemByName(item.name))}},addData:function(data,x){var index=this.getIndex();Rickshaw.keys(data).forEach(function(name){if(!this.itemByName(name)){this.addItem({name:name})}},this);this.forEach(function(item){item.data.push({x:x||(index*this.timeInterval||1)+this.timeBase,y:data[item.name]||0})},this)},getIndex:function(){return this[0]&&this[0].data&&this[0].data.length?this[0].data.length:0},itemByName:function(name){for(var i=0;i<this.length;i++){if(this[i].name==name)return this[i]}},setTimeInterval:function(iv){this.timeInterval=iv/1e3},setTimeBase:function(t){this.timeBase=t},dump:function(){var data={timeBase:this.timeBase,timeInterval:this.timeInterval,items:[]};this.forEach(function(item){var newItem={color:item.color,name:item.name,data:[]};item.data.forEach(function(plot){newItem.data.push({x:plot.x,y:plot.y})});data.items.push(newItem)});return data},load:function(data){if(data.timeInterval){this.timeInterval=data.timeInterval}if(data.timeBase){this.timeBase=data.timeBase}if(data.items){data.items.forEach(function(item){this.push(item);if(this.legend){this.legend.addLine(this.itemByName(item.name))}},this)}}});Rickshaw.Series.zeroFill=function(series){Rickshaw.Series.fill(series,0)};Rickshaw.Series.fill=function(series,fill){var x;var i=0;var data=series.map(function(s){return s.data});while(i<Math.max.apply(null,data.map(function(d){return d.length}))){x=Math.min.apply(null,data.filter(function(d){return d[i]}).map(function(d){return d[i].x}));data.forEach(function(d){if(!d[i]||d[i].x!=x){d.splice(i,0,{x:x,y:fill})}});i++}};Rickshaw.namespace("Rickshaw.Series.FixedDuration");Rickshaw.Series.FixedDuration=Rickshaw.Class.create(Rickshaw.Series,{initialize:function(data,palette,options){options=options||{};if(typeof options.timeInterval==="undefined"){throw new Error("FixedDuration series requires timeInterval")}if(typeof options.maxDataPoints==="undefined"){throw new Error("FixedDuration series requires maxDataPoints")}this.palette=new Rickshaw.Color.Palette(palette);this.timeBase=typeof options.timeBase==="undefined"?Math.floor((new Date).getTime()/1e3):options.timeBase;this.setTimeInterval(options.timeInterval);if(this[0]&&this[0].data&&this[0].data.length){this.currentSize=this[0].data.length;this.currentIndex=this[0].data.length}else{this.currentSize=0;this.currentIndex=0}this.maxDataPoints=options.maxDataPoints;if(data&&typeof data=="object"&&Array.isArray(data)){data.forEach(function(item){this.addItem(item)},this);this.currentSize+=1;this.currentIndex+=1}this.timeBase-=(this.maxDataPoints-this.currentSize)*this.timeInterval;if(typeof this.maxDataPoints!=="undefined"&&this.currentSize<this.maxDataPoints){for(var i=this.maxDataPoints-this.currentSize-1;i>1;i--){this.currentSize+=1;this.currentIndex+=1;this.forEach(function(item){item.data.unshift({x:((i-1)*this.timeInterval||1)+this.timeBase,y:0,i:i})},this)}}},addData:function($super,data,x){$super(data,x);this.currentSize+=1;this.currentIndex+=1;if(this.maxDataPoints!==undefined){while(this.currentSize>this.maxDataPoints){this.dropData()}}},dropData:function(){this.forEach(function(item){item.data.splice(0,1)});this.currentSize-=1},getIndex:function(){return this.currentIndex}});return Rickshaw}); \ No newline at end of file diff --git a/assets/js/plugins/rickshaw/vendor/d3.v3.js b/assets/js/plugins/rickshaw/vendor/d3.v3.js deleted file mode 100644 index 3c24cd19..00000000 --- a/assets/js/plugins/rickshaw/vendor/d3.v3.js +++ /dev/null @@ -1,5 +0,0 @@ -d3=function(){function n(n){return null!=n&&!isNaN(n)}function t(n){return n.length}function e(n){for(var t=1;n*t%1;)t*=10;return t}function r(n,t){try{for(var e in t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}catch(r){n.prototype=t}}function u(){}function i(){}function o(n,t,e){return function(){var r=e.apply(t,arguments);return r===t?n:r}}function a(n,t){if(t in n)return t;t=t.charAt(0).toUpperCase()+t.substring(1);for(var e=0,r=Do.length;r>e;++e){var u=Do[e]+t;if(u in n)return u}}function c(){}function l(){}function s(n){function t(){for(var t,r=e,u=-1,i=r.length;++u<i;)(t=r[u].on)&&t.apply(this,arguments);return n}var e=[],r=new u;return t.on=function(t,u){var i,o=r.get(t);return arguments.length<2?o&&o.on:(o&&(o.on=null,e=e.slice(0,i=e.indexOf(o)).concat(e.slice(i+1)),r.remove(t)),u&&e.push(r.set(t,{on:u})),n)},t}function f(){mo.event.preventDefault()}function h(){for(var n,t=mo.event;n=t.sourceEvent;)t=n;return t}function g(n){for(var t=new l,e=0,r=arguments.length;++e<r;)t[arguments[e]]=s(t);return t.of=function(e,r){return function(u){try{var i=u.sourceEvent=mo.event;u.target=n,mo.event=u,t[u.type].apply(e,r)}finally{mo.event=i}}},t}function p(n){return Lo(n,Ro),n}function d(n){return"function"==typeof n?n:function(){return Ho(n,this)}}function v(n){return"function"==typeof n?n:function(){return Fo(n,this)}}function m(n,t){function e(){this.removeAttribute(n)}function r(){this.removeAttributeNS(n.space,n.local)}function u(){this.setAttribute(n,t)}function i(){this.setAttributeNS(n.space,n.local,t)}function o(){var e=t.apply(this,arguments);null==e?this.removeAttribute(n):this.setAttribute(n,e)}function a(){var e=t.apply(this,arguments);null==e?this.removeAttributeNS(n.space,n.local):this.setAttributeNS(n.space,n.local,e)}return n=mo.ns.qualify(n),null==t?n.local?r:e:"function"==typeof t?n.local?a:o:n.local?i:u}function y(n){return n.trim().replace(/\s+/g," ")}function M(n){return new RegExp("(?:^|\\s+)"+mo.requote(n)+"(?:\\s+|$)","g")}function x(n,t){function e(){for(var e=-1;++e<u;)n[e](this,t)}function r(){for(var e=-1,r=t.apply(this,arguments);++e<u;)n[e](this,r)}n=n.trim().split(/\s+/).map(b);var u=n.length;return"function"==typeof t?r:e}function b(n){var t=M(n);return function(e,r){if(u=e.classList)return r?u.add(n):u.remove(n);var u=e.getAttribute("class")||"";r?(t.lastIndex=0,t.test(u)||e.setAttribute("class",y(u+" "+n))):e.setAttribute("class",y(u.replace(t," ")))}}function _(n,t,e){function r(){this.style.removeProperty(n)}function u(){this.style.setProperty(n,t,e)}function i(){var r=t.apply(this,arguments);null==r?this.style.removeProperty(n):this.style.setProperty(n,r,e)}return null==t?r:"function"==typeof t?i:u}function w(n,t){function e(){delete this[n]}function r(){this[n]=t}function u(){var e=t.apply(this,arguments);null==e?delete this[n]:this[n]=e}return null==t?e:"function"==typeof t?u:r}function S(n){return"function"==typeof n?n:(n=mo.ns.qualify(n)).local?function(){return xo.createElementNS(n.space,n.local)}:function(){return xo.createElementNS(this.namespaceURI,n)}}function E(n){return{__data__:n}}function k(n){return function(){return Oo(this,n)}}function A(n){return arguments.length||(n=mo.ascending),function(t,e){return t&&e?n(t.__data__,e.__data__):!t-!e}}function N(n,t){for(var e=0,r=n.length;r>e;e++)for(var u,i=n[e],o=0,a=i.length;a>o;o++)(u=i[o])&&t(u,o,e);return n}function T(n){return Lo(n,Io),n}function q(n){var t,e;return function(r,u,i){var o,a=n[i].update,c=a.length;for(i!=e&&(e=i,t=0),u>=t&&(t=u+1);!(o=a[t])&&++t<c;);return o}}function z(){var n=this.__transition__;n&&++n.active}function C(n,t,e){function r(){var t=this[o];t&&(this.removeEventListener(n,t,t.$),delete this[o])}function u(){var u=l(t,Mo(arguments));r.call(this),this.addEventListener(n,this[o]=u,u.$=e),u._=t}function i(){var t,e=new RegExp("^__on([^.]+)"+mo.requote(n)+"$");for(var r in this)if(t=r.match(e)){var u=this[r];this.removeEventListener(t[1],u,u.$),delete this[r]}}var o="__on"+n,a=n.indexOf("."),l=D;a>0&&(n=n.substring(0,a));var s=Zo.get(n);return s&&(n=s,l=j),a?t?u:r:t?c:i}function D(n,t){return function(e){var r=mo.event;mo.event=e,t[0]=this.__data__;try{n.apply(this,t)}finally{mo.event=r}}}function j(n,t){var e=D(n,t);return function(n){var t=this,r=n.relatedTarget;r&&(r===t||8&r.compareDocumentPosition(t))||e.call(t,n)}}function L(){var n=".dragsuppress-"+ ++Xo,t="touchmove"+n,e="selectstart"+n,r="dragstart"+n,u="click"+n,i=mo.select(_o).on(t,f).on(e,f).on(r,f),o=bo.style,a=o[Vo];return o[Vo]="none",function(t){function e(){i.on(u,null)}i.on(n,null),o[Vo]=a,t&&(i.on(u,function(){f(),e()},!0),setTimeout(e,0))}}function H(n,t){t.changedTouches&&(t=t.changedTouches[0]);var e=n.ownerSVGElement||n;if(e.createSVGPoint){var r=e.createSVGPoint();if(0>$o&&(_o.scrollX||_o.scrollY)){e=mo.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var u=e[0][0].getScreenCTM();$o=!(u.f||u.e),e.remove()}return $o?(r.x=t.pageX,r.y=t.pageY):(r.x=t.clientX,r.y=t.clientY),r=r.matrixTransform(n.getScreenCTM().inverse()),[r.x,r.y]}var i=n.getBoundingClientRect();return[t.clientX-i.left-n.clientLeft,t.clientY-i.top-n.clientTop]}function F(n){return n>0?1:0>n?-1:0}function P(n){return n>1?0:-1>n?Bo:Math.acos(n)}function O(n){return n>1?Jo:-1>n?-Jo:Math.asin(n)}function R(n){return((n=Math.exp(n))-1/n)/2}function Y(n){return((n=Math.exp(n))+1/n)/2}function I(n){return((n=Math.exp(2*n))-1)/(n+1)}function U(n){return(n=Math.sin(n/2))*n}function Z(){}function V(n,t,e){return new X(n,t,e)}function X(n,t,e){this.h=n,this.s=t,this.l=e}function $(n,t,e){function r(n){return n>360?n-=360:0>n&&(n+=360),60>n?i+(o-i)*n/60:180>n?o:240>n?i+(o-i)*(240-n)/60:i}function u(n){return Math.round(255*r(n))}var i,o;return n=isNaN(n)?0:(n%=360)<0?n+360:n,t=isNaN(t)?0:0>t?0:t>1?1:t,e=0>e?0:e>1?1:e,o=.5>=e?e*(1+t):e+t-e*t,i=2*e-o,ot(u(n+120),u(n),u(n-120))}function B(n,t,e){return new W(n,t,e)}function W(n,t,e){this.h=n,this.c=t,this.l=e}function J(n,t,e){return isNaN(n)&&(n=0),isNaN(t)&&(t=0),G(e,Math.cos(n*=Qo)*t,Math.sin(n)*t)}function G(n,t,e){return new K(n,t,e)}function K(n,t,e){this.l=n,this.a=t,this.b=e}function Q(n,t,e){var r=(n+16)/116,u=r+t/500,i=r-e/200;return u=tt(u)*sa,r=tt(r)*fa,i=tt(i)*ha,ot(rt(3.2404542*u-1.5371385*r-.4985314*i),rt(-.969266*u+1.8760108*r+.041556*i),rt(.0556434*u-.2040259*r+1.0572252*i))}function nt(n,t,e){return n>0?B(Math.atan2(e,t)*na,Math.sqrt(t*t+e*e),n):B(0/0,0/0,n)}function tt(n){return n>.206893034?n*n*n:(n-4/29)/7.787037}function et(n){return n>.008856?Math.pow(n,1/3):7.787037*n+4/29}function rt(n){return Math.round(255*(.00304>=n?12.92*n:1.055*Math.pow(n,1/2.4)-.055))}function ut(n){return ot(n>>16,255&n>>8,255&n)}function it(n){return ut(n)+""}function ot(n,t,e){return new at(n,t,e)}function at(n,t,e){this.r=n,this.g=t,this.b=e}function ct(n){return 16>n?"0"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}function lt(n,t,e){var r,u,i,o=0,a=0,c=0;if(r=/([a-z]+)\((.*)\)/i.exec(n))switch(u=r[2].split(","),r[1]){case"hsl":return e(parseFloat(u[0]),parseFloat(u[1])/100,parseFloat(u[2])/100);case"rgb":return t(gt(u[0]),gt(u[1]),gt(u[2]))}return(i=da.get(n))?t(i.r,i.g,i.b):(null!=n&&"#"===n.charAt(0)&&(4===n.length?(o=n.charAt(1),o+=o,a=n.charAt(2),a+=a,c=n.charAt(3),c+=c):7===n.length&&(o=n.substring(1,3),a=n.substring(3,5),c=n.substring(5,7)),o=parseInt(o,16),a=parseInt(a,16),c=parseInt(c,16)),t(o,a,c))}function st(n,t,e){var r,u,i=Math.min(n/=255,t/=255,e/=255),o=Math.max(n,t,e),a=o-i,c=(o+i)/2;return a?(u=.5>c?a/(o+i):a/(2-o-i),r=n==o?(t-e)/a+(e>t?6:0):t==o?(e-n)/a+2:(n-t)/a+4,r*=60):(r=0/0,u=c>0&&1>c?0:r),V(r,u,c)}function ft(n,t,e){n=ht(n),t=ht(t),e=ht(e);var r=et((.4124564*n+.3575761*t+.1804375*e)/sa),u=et((.2126729*n+.7151522*t+.072175*e)/fa),i=et((.0193339*n+.119192*t+.9503041*e)/ha);return G(116*u-16,500*(r-u),200*(u-i))}function ht(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function gt(n){var t=parseFloat(n);return"%"===n.charAt(n.length-1)?Math.round(2.55*t):t}function pt(n){return"function"==typeof n?n:function(){return n}}function dt(n){return n}function vt(n){return function(t,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=null),mt(t,e,n,r)}}function mt(n,t,e,r){function u(){var n,t=c.status;if(!t&&c.responseText||t>=200&&300>t||304===t){try{n=e.call(i,c)}catch(r){return o.error.call(i,r),void 0}o.load.call(i,n)}else o.error.call(i,c)}var i={},o=mo.dispatch("beforesend","progress","load","error"),a={},c=new XMLHttpRequest,l=null;return!_o.XDomainRequest||"withCredentials"in c||!/^(http(s)?:)?\/\//.test(n)||(c=new XDomainRequest),"onload"in c?c.onload=c.onerror=u:c.onreadystatechange=function(){c.readyState>3&&u()},c.onprogress=function(n){var t=mo.event;mo.event=n;try{o.progress.call(i,c)}finally{mo.event=t}},i.header=function(n,t){return n=(n+"").toLowerCase(),arguments.length<2?a[n]:(null==t?delete a[n]:a[n]=t+"",i)},i.mimeType=function(n){return arguments.length?(t=null==n?null:n+"",i):t},i.responseType=function(n){return arguments.length?(l=n,i):l},i.response=function(n){return e=n,i},["get","post"].forEach(function(n){i[n]=function(){return i.send.apply(i,[n].concat(Mo(arguments)))}}),i.send=function(e,r,u){if(2===arguments.length&&"function"==typeof r&&(u=r,r=null),c.open(e,n,!0),null==t||"accept"in a||(a.accept=t+",*/*"),c.setRequestHeader)for(var s in a)c.setRequestHeader(s,a[s]);return null!=t&&c.overrideMimeType&&c.overrideMimeType(t),null!=l&&(c.responseType=l),null!=u&&i.on("error",u).on("load",function(n){u(null,n)}),o.beforesend.call(i,c),c.send(null==r?null:r),i},i.abort=function(){return c.abort(),i},mo.rebind(i,o,"on"),null==r?i:i.get(yt(r))}function yt(n){return 1===n.length?function(t,e){n(null==t?e:null)}:n}function Mt(){var n=bt(),t=_t()-n;t>24?(isFinite(t)&&(clearTimeout(Ma),Ma=setTimeout(Mt,t)),ya=0):(ya=1,ba(Mt))}function xt(n,t,e){var r=arguments.length;2>r&&(t=0),3>r&&(e=Date.now()),xa.callback=n,xa.time=e+t}function bt(){var n=Date.now();for(xa=va;xa;)n>=xa.time&&(xa.flush=xa.callback(n-xa.time)),xa=xa.next;return n}function _t(){for(var n,t=va,e=1/0;t;)t.flush?t=n?n.next=t.next:va=t.next:(t.time<e&&(e=t.time),t=(n=t).next);return ma=n,e}function wt(n,t){var e=Math.pow(10,3*Math.abs(8-t));return{scale:t>8?function(n){return n/e}:function(n){return n*e},symbol:n}}function St(n,t){return t-(n?Math.ceil(Math.log(n)/Math.LN10):1)}function Et(n){return n+""}function kt(){}function At(n,t,e){var r=e.s=n+t,u=r-n,i=r-u;e.t=n-i+(t-u)}function Nt(n,t){n&&Da.hasOwnProperty(n.type)&&Da[n.type](n,t)}function Tt(n,t,e){var r,u=-1,i=n.length-e;for(t.lineStart();++u<i;)r=n[u],t.point(r[0],r[1],r[2]);t.lineEnd()}function qt(n,t){var e=-1,r=n.length;for(t.polygonStart();++e<r;)Tt(n[e],t,1);t.polygonEnd()}function zt(){function n(n,t){n*=Qo,t=t*Qo/2+Bo/4;var e=n-r,o=Math.cos(t),a=Math.sin(t),c=i*a,l=u*o+c*Math.cos(e),s=c*Math.sin(e);La.add(Math.atan2(s,l)),r=n,u=o,i=a}var t,e,r,u,i;Ha.point=function(o,a){Ha.point=n,r=(t=o)*Qo,u=Math.cos(a=(e=a)*Qo/2+Bo/4),i=Math.sin(a)},Ha.lineEnd=function(){n(t,e)}}function Ct(n){var t=n[0],e=n[1],r=Math.cos(e);return[r*Math.cos(t),r*Math.sin(t),Math.sin(e)]}function Dt(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function jt(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function Lt(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function Ht(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function Ft(n){var t=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function Pt(n){return[Math.atan2(n[1],n[0]),O(n[2])]}function Ot(n,t){return Math.abs(n[0]-t[0])<Go&&Math.abs(n[1]-t[1])<Go}function Rt(n,t){n*=Qo;var e=Math.cos(t*=Qo);Yt(e*Math.cos(n),e*Math.sin(n),Math.sin(t))}function Yt(n,t,e){++Fa,Oa+=(n-Oa)/Fa,Ra+=(t-Ra)/Fa,Ya+=(e-Ya)/Fa}function It(){function n(n,u){n*=Qo;var i=Math.cos(u*=Qo),o=i*Math.cos(n),a=i*Math.sin(n),c=Math.sin(u),l=Math.atan2(Math.sqrt((l=e*c-r*a)*l+(l=r*o-t*c)*l+(l=t*a-e*o)*l),t*o+e*a+r*c);Pa+=l,Ia+=l*(t+(t=o)),Ua+=l*(e+(e=a)),Za+=l*(r+(r=c)),Yt(t,e,r)}var t,e,r;Ba.point=function(u,i){u*=Qo;var o=Math.cos(i*=Qo);t=o*Math.cos(u),e=o*Math.sin(u),r=Math.sin(i),Ba.point=n,Yt(t,e,r)}}function Ut(){Ba.point=Rt}function Zt(){function n(n,t){n*=Qo;var e=Math.cos(t*=Qo),o=e*Math.cos(n),a=e*Math.sin(n),c=Math.sin(t),l=u*c-i*a,s=i*o-r*c,f=r*a-u*o,h=Math.sqrt(l*l+s*s+f*f),g=r*o+u*a+i*c,p=h&&-P(g)/h,d=Math.atan2(h,g);Va+=p*l,Xa+=p*s,$a+=p*f,Pa+=d,Ia+=d*(r+(r=o)),Ua+=d*(u+(u=a)),Za+=d*(i+(i=c)),Yt(r,u,i)}var t,e,r,u,i;Ba.point=function(o,a){t=o,e=a,Ba.point=n,o*=Qo;var c=Math.cos(a*=Qo);r=c*Math.cos(o),u=c*Math.sin(o),i=Math.sin(a),Yt(r,u,i)},Ba.lineEnd=function(){n(t,e),Ba.lineEnd=Ut,Ba.point=Rt}}function Vt(){return!0}function Xt(n,t,e,r,u){var i=[],o=[];if(n.forEach(function(n){if(!((t=n.length-1)<=0)){var t,e=n[0],r=n[t];if(Ot(e,r)){u.lineStart();for(var a=0;t>a;++a)u.point((e=n[a])[0],e[1]);return u.lineEnd(),void 0}var c={point:e,points:n,other:null,visited:!1,entry:!0,subject:!0},l={point:e,points:[e],other:c,visited:!1,entry:!1,subject:!1};c.other=l,i.push(c),o.push(l),c={point:r,points:[r],other:null,visited:!1,entry:!1,subject:!0},l={point:r,points:[r],other:c,visited:!1,entry:!0,subject:!1},c.other=l,i.push(c),o.push(l)}}),o.sort(t),$t(i),$t(o),i.length){for(var a=0,c=e,l=o.length;l>a;++a)o[a].entry=c=!c;for(var s,f,h,g=i[0];;){for(s=g;s.visited;)if((s=s.next)===g)return;f=s.points,u.lineStart();do{if(s.visited=s.other.visited=!0,s.entry){if(s.subject)for(var a=0;a<f.length;a++)u.point((h=f[a])[0],h[1]);else r(s.point,s.next.point,1,u);s=s.next}else{if(s.subject){f=s.prev.points;for(var a=f.length;--a>=0;)u.point((h=f[a])[0],h[1])}else r(s.point,s.prev.point,-1,u);s=s.prev}s=s.other,f=s.points}while(!s.visited);u.lineEnd()}}}function $t(n){if(t=n.length){for(var t,e,r=0,u=n[0];++r<t;)u.next=e=n[r],e.prev=u,u=e;u.next=e=n[0],e.prev=u}}function Bt(n,t,e,r){return function(u,i){function o(t,e){var r=u(t,e);n(t=r[0],e=r[1])&&i.point(t,e)}function a(n,t){var e=u(n,t);v.point(e[0],e[1])}function c(){y.point=a,v.lineStart()}function l(){y.point=o,v.lineEnd()}function s(n,t){d.push([n,t]);var e=u(n,t);x.point(e[0],e[1])}function f(){x.lineStart(),d=[]}function h(){s(d[0][0],d[0][1]),x.lineEnd();var n,t=x.clean(),e=M.buffer(),r=e.length;if(d.pop(),p.push(d),d=null,r){if(1&t){n=e[0];var u,r=n.length-1,o=-1;for(i.lineStart();++o<r;)i.point((u=n[o])[0],u[1]);return i.lineEnd(),void 0}r>1&&2&t&&e.push(e.pop().concat(e.shift())),g.push(e.filter(Wt))}}var g,p,d,v=t(i),m=u.invert(r[0],r[1]),y={point:o,lineStart:c,lineEnd:l,polygonStart:function(){y.point=s,y.lineStart=f,y.lineEnd=h,g=[],p=[],i.polygonStart()},polygonEnd:function(){y.point=o,y.lineStart=c,y.lineEnd=l,g=mo.merge(g);var n=Kt(m,p);g.length?Xt(g,Gt,n,e,i):n&&(i.lineStart(),e(null,null,1,i),i.lineEnd()),i.polygonEnd(),g=p=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}},M=Jt(),x=t(M);return y}}function Wt(n){return n.length>1}function Jt(){var n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:c,buffer:function(){var e=t;return t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function Gt(n,t){return((n=n.point)[0]<0?n[1]-Jo-Go:Jo-n[1])-((t=t.point)[0]<0?t[1]-Jo-Go:Jo-t[1])}function Kt(n,t){var e=n[0],r=n[1],u=[Math.sin(e),-Math.cos(e),0],i=0,o=0;La.reset();for(var a=0,c=t.length;c>a;++a){var l=t[a],s=l.length;if(s)for(var f=l[0],h=f[0],g=f[1]/2+Bo/4,p=Math.sin(g),d=Math.cos(g),v=1;;){v===s&&(v=0),n=l[v];var m=n[0],y=n[1]/2+Bo/4,M=Math.sin(y),x=Math.cos(y),b=m-h,_=Math.abs(b)>Bo,w=p*M;if(La.add(Math.atan2(w*Math.sin(b),d*x+w*Math.cos(b))),i+=_?b+(b>=0?2:-2)*Bo:b,_^h>=e^m>=e){var S=jt(Ct(f),Ct(n));Ft(S);var E=jt(u,S);Ft(E);var k=(_^b>=0?-1:1)*O(E[2]);(r>k||r===k&&(S[0]||S[1]))&&(o+=_^b>=0?1:-1)}if(!v++)break;h=m,p=M,d=x,f=n}}return(-Go>i||Go>i&&0>La)^1&o}function Qt(n){var t,e=0/0,r=0/0,u=0/0;return{lineStart:function(){n.lineStart(),t=1},point:function(i,o){var a=i>0?Bo:-Bo,c=Math.abs(i-e);Math.abs(c-Bo)<Go?(n.point(e,r=(r+o)/2>0?Jo:-Jo),n.point(u,r),n.lineEnd(),n.lineStart(),n.point(a,r),n.point(i,r),t=0):u!==a&&c>=Bo&&(Math.abs(e-u)<Go&&(e-=u*Go),Math.abs(i-a)<Go&&(i-=a*Go),r=ne(e,r,i,o),n.point(u,r),n.lineEnd(),n.lineStart(),n.point(a,r),t=0),n.point(e=i,r=o),u=a},lineEnd:function(){n.lineEnd(),e=r=0/0},clean:function(){return 2-t}}}function ne(n,t,e,r){var u,i,o=Math.sin(n-e);return Math.abs(o)>Go?Math.atan((Math.sin(t)*(i=Math.cos(r))*Math.sin(e)-Math.sin(r)*(u=Math.cos(t))*Math.sin(n))/(u*i*o)):(t+r)/2}function te(n,t,e,r){var u;if(null==n)u=e*Jo,r.point(-Bo,u),r.point(0,u),r.point(Bo,u),r.point(Bo,0),r.point(Bo,-u),r.point(0,-u),r.point(-Bo,-u),r.point(-Bo,0),r.point(-Bo,u);else if(Math.abs(n[0]-t[0])>Go){var i=(n[0]<t[0]?1:-1)*Bo;u=e*i/2,r.point(-i,u),r.point(0,u),r.point(i,u)}else r.point(t[0],t[1])}function ee(n){function t(n,t){return Math.cos(n)*Math.cos(t)>i}function e(n){var e,i,c,l,s;return{lineStart:function(){l=c=!1,s=1},point:function(f,h){var g,p=[f,h],d=t(f,h),v=o?d?0:u(f,h):d?u(f+(0>f?Bo:-Bo),h):0;if(!e&&(l=c=d)&&n.lineStart(),d!==c&&(g=r(e,p),(Ot(e,g)||Ot(p,g))&&(p[0]+=Go,p[1]+=Go,d=t(p[0],p[1]))),d!==c)s=0,d?(n.lineStart(),g=r(p,e),n.point(g[0],g[1])):(g=r(e,p),n.point(g[0],g[1]),n.lineEnd()),e=g;else if(a&&e&&o^d){var m;v&i||!(m=r(p,e,!0))||(s=0,o?(n.lineStart(),n.point(m[0][0],m[0][1]),n.point(m[1][0],m[1][1]),n.lineEnd()):(n.point(m[1][0],m[1][1]),n.lineEnd(),n.lineStart(),n.point(m[0][0],m[0][1])))}!d||e&&Ot(e,p)||n.point(p[0],p[1]),e=p,c=d,i=v},lineEnd:function(){c&&n.lineEnd(),e=null},clean:function(){return s|(l&&c)<<1}}}function r(n,t,e){var r=Ct(n),u=Ct(t),o=[1,0,0],a=jt(r,u),c=Dt(a,a),l=a[0],s=c-l*l;if(!s)return!e&&n;var f=i*c/s,h=-i*l/s,g=jt(o,a),p=Ht(o,f),d=Ht(a,h);Lt(p,d);var v=g,m=Dt(p,v),y=Dt(v,v),M=m*m-y*(Dt(p,p)-1);if(!(0>M)){var x=Math.sqrt(M),b=Ht(v,(-m-x)/y);if(Lt(b,p),b=Pt(b),!e)return b;var _,w=n[0],S=t[0],E=n[1],k=t[1];w>S&&(_=w,w=S,S=_);var A=S-w,N=Math.abs(A-Bo)<Go,T=N||Go>A;if(!N&&E>k&&(_=E,E=k,k=_),T?N?E+k>0^b[1]<(Math.abs(b[0]-w)<Go?E:k):E<=b[1]&&b[1]<=k:A>Bo^(w<=b[0]&&b[0]<=S)){var q=Ht(v,(-m+x)/y);return Lt(q,p),[b,Pt(q)]}}}function u(t,e){var r=o?n:Bo-n,u=0;return-r>t?u|=1:t>r&&(u|=2),-r>e?u|=4:e>r&&(u|=8),u}var i=Math.cos(n),o=i>0,a=Math.abs(i)>Go,c=Te(n,6*Qo);return Bt(t,e,c,o?[0,-n]:[-Bo,n-Bo])}function re(n,t,e,r){function u(r,u){return Math.abs(r[0]-n)<Go?u>0?0:3:Math.abs(r[0]-e)<Go?u>0?2:1:Math.abs(r[1]-t)<Go?u>0?1:0:u>0?3:2}function i(n,t){return o(n.point,t.point)}function o(n,t){var e=u(n,1),r=u(t,1);return e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}function a(u,i){var o=i[0]-u[0],a=i[1]-u[1],c=[0,1];return Math.abs(o)<Go&&Math.abs(a)<Go?n<=u[0]&&u[0]<=e&&t<=u[1]&&u[1]<=r:ue(n-u[0],o,c)&&ue(u[0]-e,-o,c)&&ue(t-u[1],a,c)&&ue(u[1]-r,-a,c)?(c[1]<1&&(i[0]=u[0]+c[1]*o,i[1]=u[1]+c[1]*a),c[0]>0&&(u[0]+=c[0]*o,u[1]+=c[0]*a),!0):!1}return function(c){function l(n){for(var t=0,e=y.length,r=n[1],u=0;e>u;++u)for(var i,o=1,a=y[u],c=a.length,l=a[0];c>o;++o)i=a[o],l[1]<=r?i[1]>r&&s(l,i,n)>0&&++t:i[1]<=r&&s(l,i,n)<0&&--t,l=i;return 0!==t}function s(n,t,e){return(t[0]-n[0])*(e[1]-n[1])-(e[0]-n[0])*(t[1]-n[1])}function f(i,a,c,l){var s=0,f=0;if(null==i||(s=u(i,c))!==(f=u(a,c))||o(i,a)<0^c>0){do l.point(0===s||3===s?n:e,s>1?r:t);while((s=(s+c+4)%4)!==f)}else l.point(a[0],a[1])}function h(u,i){return u>=n&&e>=u&&i>=t&&r>=i}function g(n,t){h(n,t)&&c.point(n,t)}function p(){q.point=v,y&&y.push(M=[]),k=!0,E=!1,w=S=0/0}function d(){m&&(v(x,b),_&&E&&T.rejoin(),m.push(T.buffer())),q.point=g,E&&c.lineEnd()}function v(n,t){n=Math.max(-Ja,Math.min(Ja,n)),t=Math.max(-Ja,Math.min(Ja,t));var e=h(n,t);if(y&&M.push([n,t]),k)x=n,b=t,_=e,k=!1,e&&(c.lineStart(),c.point(n,t));else if(e&&E)c.point(n,t);else{var r=[w,S],u=[n,t];a(r,u)?(E||(c.lineStart(),c.point(r[0],r[1])),c.point(u[0],u[1]),e||c.lineEnd(),A=!1):e&&(c.lineStart(),c.point(n,t),A=!1)}w=n,S=t,E=e}var m,y,M,x,b,_,w,S,E,k,A,N=c,T=Jt(),q={point:g,lineStart:p,lineEnd:d,polygonStart:function(){c=T,m=[],y=[],A=!0},polygonEnd:function(){c=N,m=mo.merge(m);var t=l([n,r]),e=A&&t,u=m.length;(e||u)&&(c.polygonStart(),e&&(c.lineStart(),f(null,null,1,c),c.lineEnd()),u&&Xt(m,i,t,f,c),c.polygonEnd()),m=y=M=null}};return q}}function ue(n,t,e){if(Math.abs(t)<Go)return 0>=n;var r=n/t;if(t>0){if(r>e[1])return!1;r>e[0]&&(e[0]=r)}else{if(r<e[0])return!1;r<e[1]&&(e[1]=r)}return!0}function ie(n,t){function e(e,r){return e=n(e,r),t(e[0],e[1])}return n.invert&&t.invert&&(e.invert=function(e,r){return e=t.invert(e,r),e&&n.invert(e[0],e[1])}),e}function oe(n){var t=0,e=Bo/3,r=be(n),u=r(t,e);return u.parallels=function(n){return arguments.length?r(t=n[0]*Bo/180,e=n[1]*Bo/180):[180*(t/Bo),180*(e/Bo)]},u}function ae(n,t){function e(n,t){var e=Math.sqrt(i-2*u*Math.sin(t))/u;return[e*Math.sin(n*=u),o-e*Math.cos(n)]}var r=Math.sin(n),u=(r+Math.sin(t))/2,i=1+r*(2*u-r),o=Math.sqrt(i)/u;return e.invert=function(n,t){var e=o-t;return[Math.atan2(n,e)/u,O((i-(n*n+e*e)*u*u)/(2*u))]},e}function ce(){function n(n,t){Ka+=u*n-r*t,r=n,u=t}var t,e,r,u;rc.point=function(i,o){rc.point=n,t=r=i,e=u=o},rc.lineEnd=function(){n(t,e)}}function le(n,t){Qa>n&&(Qa=n),n>tc&&(tc=n),nc>t&&(nc=t),t>ec&&(ec=t)}function se(){function n(n,t){o.push("M",n,",",t,i)}function t(n,t){o.push("M",n,",",t),a.point=e}function e(n,t){o.push("L",n,",",t)}function r(){a.point=n}function u(){o.push("Z")}var i=fe(4.5),o=[],a={point:n,lineStart:function(){a.point=t},lineEnd:r,polygonStart:function(){a.lineEnd=u},polygonEnd:function(){a.lineEnd=r,a.point=n},pointRadius:function(n){return i=fe(n),a},result:function(){if(o.length){var n=o.join("");return o=[],n}}};return a}function fe(n){return"m0,"+n+"a"+n+","+n+" 0 1,1 0,"+-2*n+"a"+n+","+n+" 0 1,1 0,"+2*n+"z"}function he(n,t){Oa+=n,Ra+=t,++Ya}function ge(){function n(n,r){var u=n-t,i=r-e,o=Math.sqrt(u*u+i*i);Ia+=o*(t+n)/2,Ua+=o*(e+r)/2,Za+=o,he(t=n,e=r)}var t,e;ic.point=function(r,u){ic.point=n,he(t=r,e=u)}}function pe(){ic.point=he}function de(){function n(n,t){var e=n-r,i=t-u,o=Math.sqrt(e*e+i*i);Ia+=o*(r+n)/2,Ua+=o*(u+t)/2,Za+=o,o=u*n-r*t,Va+=o*(r+n),Xa+=o*(u+t),$a+=3*o,he(r=n,u=t)}var t,e,r,u;ic.point=function(i,o){ic.point=n,he(t=r=i,e=u=o)},ic.lineEnd=function(){n(t,e)}}function ve(n){function t(t,e){n.moveTo(t,e),n.arc(t,e,o,0,Wo)}function e(t,e){n.moveTo(t,e),a.point=r}function r(t,e){n.lineTo(t,e)}function u(){a.point=t}function i(){n.closePath()}var o=4.5,a={point:t,lineStart:function(){a.point=e},lineEnd:u,polygonStart:function(){a.lineEnd=i},polygonEnd:function(){a.lineEnd=u,a.point=t},pointRadius:function(n){return o=n,a},result:c};return a}function me(n){function t(t){function r(e,r){e=n(e,r),t.point(e[0],e[1])}function u(){M=0/0,S.point=o,t.lineStart()}function o(r,u){var o=Ct([r,u]),a=n(r,u);e(M,x,y,b,_,w,M=a[0],x=a[1],y=r,b=o[0],_=o[1],w=o[2],i,t),t.point(M,x)}function a(){S.point=r,t.lineEnd()}function c(){u(),S.point=l,S.lineEnd=s}function l(n,t){o(f=n,h=t),g=M,p=x,d=b,v=_,m=w,S.point=o}function s(){e(M,x,y,b,_,w,g,p,f,d,v,m,i,t),S.lineEnd=a,a()}var f,h,g,p,d,v,m,y,M,x,b,_,w,S={point:r,lineStart:u,lineEnd:a,polygonStart:function(){t.polygonStart(),S.lineStart=c},polygonEnd:function(){t.polygonEnd(),S.lineStart=u}};return S}function e(t,i,o,a,c,l,s,f,h,g,p,d,v,m){var y=s-t,M=f-i,x=y*y+M*M;if(x>4*r&&v--){var b=a+g,_=c+p,w=l+d,S=Math.sqrt(b*b+_*_+w*w),E=Math.asin(w/=S),k=Math.abs(Math.abs(w)-1)<Go?(o+h)/2:Math.atan2(_,b),A=n(k,E),N=A[0],T=A[1],q=N-t,z=T-i,C=M*q-y*z;(C*C/x>r||Math.abs((y*q+M*z)/x-.5)>.3||u>a*g+c*p+l*d)&&(e(t,i,o,a,c,l,N,T,k,b/=S,_/=S,w,v,m),m.point(N,T),e(N,T,k,b,_,w,s,f,h,g,p,d,v,m))}}var r=.5,u=Math.cos(30*Qo),i=16;return t.precision=function(n){return arguments.length?(i=(r=n*n)>0&&16,t):Math.sqrt(r)},t}function ye(n){this.stream=n}function Me(n){var t=me(function(t,e){return n([t*na,e*na])});return function(n){var e=new ye(n=t(n));return e.point=function(t,e){n.point(t*Qo,e*Qo)},e}}function xe(n){return be(function(){return n})()}function be(n){function t(n){return n=a(n[0]*Qo,n[1]*Qo),[n[0]*h+c,l-n[1]*h]}function e(n){return n=a.invert((n[0]-c)/h,(l-n[1])/h),n&&[n[0]*na,n[1]*na]}function r(){a=ie(o=Ee(m,y,M),i);var n=i(d,v);return c=g-n[0]*h,l=p+n[1]*h,u()}function u(){return s&&(s.valid=!1,s=null),t}var i,o,a,c,l,s,f=me(function(n,t){return n=i(n,t),[n[0]*h+c,l-n[1]*h]}),h=150,g=480,p=250,d=0,v=0,m=0,y=0,M=0,x=Wa,b=dt,_=null,w=null;return t.stream=function(n){return s&&(s.valid=!1),s=_e(x(o,f(b(n)))),s.valid=!0,s},t.clipAngle=function(n){return arguments.length?(x=null==n?(_=n,Wa):ee((_=+n)*Qo),u()):_},t.clipExtent=function(n){return arguments.length?(w=n,b=n?re(n[0][0],n[0][1],n[1][0],n[1][1]):dt,u()):w},t.scale=function(n){return arguments.length?(h=+n,r()):h},t.translate=function(n){return arguments.length?(g=+n[0],p=+n[1],r()):[g,p]},t.center=function(n){return arguments.length?(d=n[0]%360*Qo,v=n[1]%360*Qo,r()):[d*na,v*na]},t.rotate=function(n){return arguments.length?(m=n[0]%360*Qo,y=n[1]%360*Qo,M=n.length>2?n[2]%360*Qo:0,r()):[m*na,y*na,M*na]},mo.rebind(t,f,"precision"),function(){return i=n.apply(this,arguments),t.invert=i.invert&&e,r()}}function _e(n){var t=new ye(n);return t.point=function(t,e){n.point(t*Qo,e*Qo)},t}function we(n,t){return[n,t]}function Se(n,t){return[n>Bo?n-Wo:-Bo>n?n+Wo:n,t]}function Ee(n,t,e){return n?t||e?ie(Ae(n),Ne(t,e)):Ae(n):t||e?Ne(t,e):Se}function ke(n){return function(t,e){return t+=n,[t>Bo?t-Wo:-Bo>t?t+Wo:t,e]}}function Ae(n){var t=ke(n);return t.invert=ke(-n),t}function Ne(n,t){function e(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Math.sin(n)*e,l=Math.sin(t),s=l*r+a*u;return[Math.atan2(c*i-s*o,a*r-l*u),O(s*i+c*o)]}var r=Math.cos(n),u=Math.sin(n),i=Math.cos(t),o=Math.sin(t);return e.invert=function(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Math.sin(n)*e,l=Math.sin(t),s=l*i-c*o;return[Math.atan2(c*i+l*o,a*r+s*u),O(s*r-a*u)]},e}function Te(n,t){var e=Math.cos(n),r=Math.sin(n);return function(u,i,o,a){var c=o*t;null!=u?(u=qe(e,u),i=qe(e,i),(o>0?i>u:u>i)&&(u+=o*Wo)):(u=n+o*Wo,i=n-.5*c);for(var l,s=u;o>0?s>i:i>s;s-=c)a.point((l=Pt([e,-r*Math.cos(s),-r*Math.sin(s)]))[0],l[1])}}function qe(n,t){var e=Ct(t);e[0]-=n,Ft(e);var r=P(-e[1]);return((-e[2]<0?-r:r)+2*Math.PI-Go)%(2*Math.PI)}function ze(n,t,e){var r=mo.range(n,t-Go,e).concat(t);return function(n){return r.map(function(t){return[n,t]})}}function Ce(n,t,e){var r=mo.range(n,t-Go,e).concat(t);return function(n){return r.map(function(t){return[t,n]})}}function De(n){return n.source}function je(n){return n.target}function Le(n,t,e,r){var u=Math.cos(t),i=Math.sin(t),o=Math.cos(r),a=Math.sin(r),c=u*Math.cos(n),l=u*Math.sin(n),s=o*Math.cos(e),f=o*Math.sin(e),h=2*Math.asin(Math.sqrt(U(r-t)+u*o*U(e-n))),g=1/Math.sin(h),p=h?function(n){var t=Math.sin(n*=h)*g,e=Math.sin(h-n)*g,r=e*c+t*s,u=e*l+t*f,o=e*i+t*a;return[Math.atan2(u,r)*na,Math.atan2(o,Math.sqrt(r*r+u*u))*na]}:function(){return[n*na,t*na]};return p.distance=h,p}function He(){function n(n,u){var i=Math.sin(u*=Qo),o=Math.cos(u),a=Math.abs((n*=Qo)-t),c=Math.cos(a);oc+=Math.atan2(Math.sqrt((a=o*Math.sin(a))*a+(a=r*i-e*o*c)*a),e*i+r*o*c),t=n,e=i,r=o}var t,e,r;ac.point=function(u,i){t=u*Qo,e=Math.sin(i*=Qo),r=Math.cos(i),ac.point=n},ac.lineEnd=function(){ac.point=ac.lineEnd=c}}function Fe(n,t){function e(t,e){var r=Math.cos(t),u=Math.cos(e),i=n(r*u);return[i*u*Math.sin(t),i*Math.sin(e)]}return e.invert=function(n,e){var r=Math.sqrt(n*n+e*e),u=t(r),i=Math.sin(u),o=Math.cos(u);return[Math.atan2(n*i,r*o),Math.asin(r&&e*i/r)]},e}function Pe(n,t){function e(n,t){var e=Math.abs(Math.abs(t)-Jo)<Go?0:o/Math.pow(u(t),i);return[e*Math.sin(i*n),o-e*Math.cos(i*n)]}var r=Math.cos(n),u=function(n){return Math.tan(Bo/4+n/2)},i=n===t?Math.sin(n):Math.log(r/Math.cos(t))/Math.log(u(t)/u(n)),o=r*Math.pow(u(n),i)/i;return i?(e.invert=function(n,t){var e=o-t,r=F(i)*Math.sqrt(n*n+e*e);return[Math.atan2(n,e)/i,2*Math.atan(Math.pow(o/r,1/i))-Jo]},e):Re}function Oe(n,t){function e(n,t){var e=i-t;return[e*Math.sin(u*n),i-e*Math.cos(u*n)]}var r=Math.cos(n),u=n===t?Math.sin(n):(r-Math.cos(t))/(t-n),i=r/u+n;return Math.abs(u)<Go?we:(e.invert=function(n,t){var e=i-t;return[Math.atan2(n,e)/u,i-F(u)*Math.sqrt(n*n+e*e)]},e)}function Re(n,t){return[n,Math.log(Math.tan(Bo/4+t/2))]}function Ye(n){var t,e=xe(n),r=e.scale,u=e.translate,i=e.clipExtent;return e.scale=function(){var n=r.apply(e,arguments);return n===e?t?e.clipExtent(null):e:n},e.translate=function(){var n=u.apply(e,arguments);return n===e?t?e.clipExtent(null):e:n},e.clipExtent=function(n){var o=i.apply(e,arguments);if(o===e){if(t=null==n){var a=Bo*r(),c=u();i([[c[0]-a,c[1]-a],[c[0]+a,c[1]+a]])}}else t&&(o=null);return o},e.clipExtent(null)}function Ie(n,t){var e=Math.cos(t)*Math.sin(n);return[Math.log((1+e)/(1-e))/2,Math.atan2(Math.tan(t),Math.cos(n))]}function Ue(n){function t(t){function o(){l.push("M",i(n(s),a))}for(var c,l=[],s=[],f=-1,h=t.length,g=pt(e),p=pt(r);++f<h;)u.call(this,c=t[f],f)?s.push([+g.call(this,c,f),+p.call(this,c,f)]):s.length&&(o(),s=[]);return s.length&&o(),l.length?l.join(""):null}var e=Ze,r=Ve,u=Vt,i=Xe,o=i.key,a=.7;return t.x=function(n){return arguments.length?(e=n,t):e},t.y=function(n){return arguments.length?(r=n,t):r},t.defined=function(n){return arguments.length?(u=n,t):u},t.interpolate=function(n){return arguments.length?(o="function"==typeof n?i=n:(i=gc.get(n)||Xe).key,t):o},t.tension=function(n){return arguments.length?(a=n,t):a},t}function Ze(n){return n[0]}function Ve(n){return n[1]}function Xe(n){return n.join("L")}function $e(n){return Xe(n)+"Z"}function Be(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t<e;)u.push("H",(r[0]+(r=n[t])[0])/2,"V",r[1]);return e>1&&u.push("H",r[0]),u.join("")}function We(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t<e;)u.push("V",(r=n[t])[1],"H",r[0]);return u.join("")}function Je(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t<e;)u.push("H",(r=n[t])[0],"V",r[1]);return u.join("")}function Ge(n,t){return n.length<4?Xe(n):n[1]+nr(n.slice(1,n.length-1),tr(n,t))}function Ke(n,t){return n.length<3?Xe(n):n[0]+nr((n.push(n[0]),n),tr([n[n.length-2]].concat(n,[n[1]]),t))}function Qe(n,t){return n.length<3?Xe(n):n[0]+nr(n,tr(n,t))}function nr(n,t){if(t.length<1||n.length!=t.length&&n.length!=t.length+2)return Xe(n);var e=n.length!=t.length,r="",u=n[0],i=n[1],o=t[0],a=o,c=1;if(e&&(r+="Q"+(i[0]-2*o[0]/3)+","+(i[1]-2*o[1]/3)+","+i[0]+","+i[1],u=n[1],c=2),t.length>1){a=t[1],i=n[c],c++,r+="C"+(u[0]+o[0])+","+(u[1]+o[1])+","+(i[0]-a[0])+","+(i[1]-a[1])+","+i[0]+","+i[1];for(var l=2;l<t.length;l++,c++)i=n[c],a=t[l],r+="S"+(i[0]-a[0])+","+(i[1]-a[1])+","+i[0]+","+i[1]}if(e){var s=n[c];r+="Q"+(i[0]+2*a[0]/3)+","+(i[1]+2*a[1]/3)+","+s[0]+","+s[1]}return r}function tr(n,t){for(var e,r=[],u=(1-t)/2,i=n[0],o=n[1],a=1,c=n.length;++a<c;)e=i,i=o,o=n[a],r.push([u*(o[0]-e[0]),u*(o[1]-e[1])]);return r}function er(n){if(n.length<3)return Xe(n);var t=1,e=n.length,r=n[0],u=r[0],i=r[1],o=[u,u,u,(r=n[1])[0]],a=[i,i,i,r[1]],c=[u,",",i,"L",or(vc,o),",",or(vc,a)];for(n.push(n[e-1]);++t<=e;)r=n[t],o.shift(),o.push(r[0]),a.shift(),a.push(r[1]),ar(c,o,a);return n.pop(),c.push("L",r),c.join("")}function rr(n){if(n.length<4)return Xe(n);for(var t,e=[],r=-1,u=n.length,i=[0],o=[0];++r<3;)t=n[r],i.push(t[0]),o.push(t[1]);for(e.push(or(vc,i)+","+or(vc,o)),--r;++r<u;)t=n[r],i.shift(),i.push(t[0]),o.shift(),o.push(t[1]),ar(e,i,o);return e.join("")}function ur(n){for(var t,e,r=-1,u=n.length,i=u+4,o=[],a=[];++r<4;)e=n[r%u],o.push(e[0]),a.push(e[1]);for(t=[or(vc,o),",",or(vc,a)],--r;++r<i;)e=n[r%u],o.shift(),o.push(e[0]),a.shift(),a.push(e[1]),ar(t,o,a);return t.join("")}function ir(n,t){var e=n.length-1;if(e)for(var r,u,i=n[0][0],o=n[0][1],a=n[e][0]-i,c=n[e][1]-o,l=-1;++l<=e;)r=n[l],u=l/e,r[0]=t*r[0]+(1-t)*(i+u*a),r[1]=t*r[1]+(1-t)*(o+u*c);return er(n)}function or(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]+n[3]*t[3]}function ar(n,t,e){n.push("C",or(pc,t),",",or(pc,e),",",or(dc,t),",",or(dc,e),",",or(vc,t),",",or(vc,e))}function cr(n,t){return(t[1]-n[1])/(t[0]-n[0])}function lr(n){for(var t=0,e=n.length-1,r=[],u=n[0],i=n[1],o=r[0]=cr(u,i);++t<e;)r[t]=(o+(o=cr(u=i,i=n[t+1])))/2;return r[t]=o,r -}function sr(n){for(var t,e,r,u,i=[],o=lr(n),a=-1,c=n.length-1;++a<c;)t=cr(n[a],n[a+1]),Math.abs(t)<Go?o[a]=o[a+1]=0:(e=o[a]/t,r=o[a+1]/t,u=e*e+r*r,u>9&&(u=3*t/Math.sqrt(u),o[a]=u*e,o[a+1]=u*r));for(a=-1;++a<=c;)u=(n[Math.min(c,a+1)][0]-n[Math.max(0,a-1)][0])/(6*(1+o[a]*o[a])),i.push([u||0,o[a]*u||0]);return i}function fr(n){return n.length<3?Xe(n):n[0]+nr(n,sr(n))}function hr(n,t,e,r){var u,i,o,a,c,l,s;return u=r[n],i=u[0],o=u[1],u=r[t],a=u[0],c=u[1],u=r[e],l=u[0],s=u[1],(s-o)*(a-i)-(c-o)*(l-i)>0}function gr(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function pr(n,t,e,r){var u=n[0],i=e[0],o=t[0]-u,a=r[0]-i,c=n[1],l=e[1],s=t[1]-c,f=r[1]-l,h=(a*(c-l)-f*(u-i))/(f*o-a*s);return[u+h*o,c+h*s]}function dr(n){var t=n[0],e=n[n.length-1];return!(t[0]-e[0]||t[1]-e[1])}function vr(n,t){var e={list:n.map(function(n,t){return{index:t,x:n[0],y:n[1]}}).sort(function(n,t){return n.y<t.y?-1:n.y>t.y?1:n.x<t.x?-1:n.x>t.x?1:0}),bottomSite:null},r={list:[],leftEnd:null,rightEnd:null,init:function(){r.leftEnd=r.createHalfEdge(null,"l"),r.rightEnd=r.createHalfEdge(null,"l"),r.leftEnd.r=r.rightEnd,r.rightEnd.l=r.leftEnd,r.list.unshift(r.leftEnd,r.rightEnd)},createHalfEdge:function(n,t){return{edge:n,side:t,vertex:null,l:null,r:null}},insert:function(n,t){t.l=n,t.r=n.r,n.r.l=t,n.r=t},leftBound:function(n){var t=r.leftEnd;do t=t.r;while(t!=r.rightEnd&&u.rightOf(t,n));return t=t.l},del:function(n){n.l.r=n.r,n.r.l=n.l,n.edge=null},right:function(n){return n.r},left:function(n){return n.l},leftRegion:function(n){return null==n.edge?e.bottomSite:n.edge.region[n.side]},rightRegion:function(n){return null==n.edge?e.bottomSite:n.edge.region[yc[n.side]]}},u={bisect:function(n,t){var e={region:{l:n,r:t},ep:{l:null,r:null}},r=t.x-n.x,u=t.y-n.y,i=r>0?r:-r,o=u>0?u:-u;return e.c=n.x*r+n.y*u+.5*(r*r+u*u),i>o?(e.a=1,e.b=u/r,e.c/=r):(e.b=1,e.a=r/u,e.c/=u),e},intersect:function(n,t){var e=n.edge,r=t.edge;if(!e||!r||e.region.r==r.region.r)return null;var u=e.a*r.b-e.b*r.a;if(Math.abs(u)<1e-10)return null;var i,o,a=(e.c*r.b-r.c*e.b)/u,c=(r.c*e.a-e.c*r.a)/u,l=e.region.r,s=r.region.r;l.y<s.y||l.y==s.y&&l.x<s.x?(i=n,o=e):(i=t,o=r);var f=a>=o.region.r.x;return f&&"l"===i.side||!f&&"r"===i.side?null:{x:a,y:c}},rightOf:function(n,t){var e=n.edge,r=e.region.r,u=t.x>r.x;if(u&&"l"===n.side)return 1;if(!u&&"r"===n.side)return 0;if(1===e.a){var i=t.y-r.y,o=t.x-r.x,a=0,c=0;if(!u&&e.b<0||u&&e.b>=0?c=a=i>=e.b*o:(c=t.x+t.y*e.b>e.c,e.b<0&&(c=!c),c||(a=1)),!a){var l=r.x-e.region.l.x;c=e.b*(o*o-i*i)<l*i*(1+2*o/l+e.b*e.b),e.b<0&&(c=!c)}}else{var s=e.c-e.a*t.x,f=t.y-s,h=t.x-r.x,g=s-r.y;c=f*f>h*h+g*g}return"l"===n.side?c:!c},endPoint:function(n,e,r){n.ep[e]=r,n.ep[yc[e]]&&t(n)},distance:function(n,t){var e=n.x-t.x,r=n.y-t.y;return Math.sqrt(e*e+r*r)}},i={list:[],insert:function(n,t,e){n.vertex=t,n.ystar=t.y+e;for(var r=0,u=i.list,o=u.length;o>r;r++){var a=u[r];if(!(n.ystar>a.ystar||n.ystar==a.ystar&&t.x>a.vertex.x))break}u.splice(r,0,n)},del:function(n){for(var t=0,e=i.list,r=e.length;r>t&&e[t]!=n;++t);e.splice(t,1)},empty:function(){return 0===i.list.length},nextEvent:function(n){for(var t=0,e=i.list,r=e.length;r>t;++t)if(e[t]==n)return e[t+1];return null},min:function(){var n=i.list[0];return{x:n.vertex.x,y:n.ystar}},extractMin:function(){return i.list.shift()}};r.init(),e.bottomSite=e.list.shift();for(var o,a,c,l,s,f,h,g,p,d,v,m,y,M=e.list.shift();;)if(i.empty()||(o=i.min()),M&&(i.empty()||M.y<o.y||M.y==o.y&&M.x<o.x))a=r.leftBound(M),c=r.right(a),h=r.rightRegion(a),m=u.bisect(h,M),f=r.createHalfEdge(m,"l"),r.insert(a,f),d=u.intersect(a,f),d&&(i.del(a),i.insert(a,d,u.distance(d,M))),a=f,f=r.createHalfEdge(m,"r"),r.insert(a,f),d=u.intersect(f,c),d&&i.insert(f,d,u.distance(d,M)),M=e.list.shift();else{if(i.empty())break;a=i.extractMin(),l=r.left(a),c=r.right(a),s=r.right(c),h=r.leftRegion(a),g=r.rightRegion(c),v=a.vertex,u.endPoint(a.edge,a.side,v),u.endPoint(c.edge,c.side,v),r.del(a),i.del(c),r.del(c),y="l",h.y>g.y&&(p=h,h=g,g=p,y="r"),m=u.bisect(h,g),f=r.createHalfEdge(m,y),r.insert(l,f),u.endPoint(m,yc[y],v),d=u.intersect(l,f),d&&(i.del(l),i.insert(l,d,u.distance(d,h))),d=u.intersect(f,s),d&&i.insert(f,d,u.distance(d,h))}for(a=r.right(r.leftEnd);a!=r.rightEnd;a=r.right(a))t(a.edge)}function mr(n){return n.x}function yr(n){return n.y}function Mr(){return{leaf:!0,nodes:[],point:null,x:null,y:null}}function xr(n,t,e,r,u,i){if(!n(t,e,r,u,i)){var o=.5*(e+u),a=.5*(r+i),c=t.nodes;c[0]&&xr(n,c[0],e,r,o,a),c[1]&&xr(n,c[1],o,r,u,a),c[2]&&xr(n,c[2],e,a,o,i),c[3]&&xr(n,c[3],o,a,u,i)}}function br(n,t){n=mo.rgb(n),t=mo.rgb(t);var e=n.r,r=n.g,u=n.b,i=t.r-e,o=t.g-r,a=t.b-u;return function(n){return"#"+ct(Math.round(e+i*n))+ct(Math.round(r+o*n))+ct(Math.round(u+a*n))}}function _r(n,t){var e,r={},u={};for(e in n)e in t?r[e]=Er(n[e],t[e]):u[e]=n[e];for(e in t)e in n||(u[e]=t[e]);return function(n){for(e in r)u[e]=r[e](n);return u}}function wr(n,t){return t-=n=+n,function(e){return n+t*e}}function Sr(n,t){var e,r,u,i,o,a=0,c=0,l=[],s=[];for(n+="",t+="",Mc.lastIndex=0,r=0;e=Mc.exec(t);++r)e.index&&l.push(t.substring(a,c=e.index)),s.push({i:l.length,x:e[0]}),l.push(null),a=Mc.lastIndex;for(a<t.length&&l.push(t.substring(a)),r=0,i=s.length;(e=Mc.exec(n))&&i>r;++r)if(o=s[r],o.x==e[0]){if(o.i)if(null==l[o.i+1])for(l[o.i-1]+=o.x,l.splice(o.i,1),u=r+1;i>u;++u)s[u].i--;else for(l[o.i-1]+=o.x+l[o.i+1],l.splice(o.i,2),u=r+1;i>u;++u)s[u].i-=2;else if(null==l[o.i+1])l[o.i]=o.x;else for(l[o.i]=o.x+l[o.i+1],l.splice(o.i+1,1),u=r+1;i>u;++u)s[u].i--;s.splice(r,1),i--,r--}else o.x=wr(parseFloat(e[0]),parseFloat(o.x));for(;i>r;)o=s.pop(),null==l[o.i+1]?l[o.i]=o.x:(l[o.i]=o.x+l[o.i+1],l.splice(o.i+1,1)),i--;return 1===l.length?null==l[0]?(o=s[0].x,function(n){return o(n)+""}):function(){return t}:function(n){for(r=0;i>r;++r)l[(o=s[r]).i]=o.x(n);return l.join("")}}function Er(n,t){for(var e,r=mo.interpolators.length;--r>=0&&!(e=mo.interpolators[r](n,t)););return e}function kr(n,t){var e,r=[],u=[],i=n.length,o=t.length,a=Math.min(n.length,t.length);for(e=0;a>e;++e)r.push(Er(n[e],t[e]));for(;i>e;++e)u[e]=n[e];for(;o>e;++e)u[e]=t[e];return function(n){for(e=0;a>e;++e)u[e]=r[e](n);return u}}function Ar(n){return function(t){return 0>=t?0:t>=1?1:n(t)}}function Nr(n){return function(t){return 1-n(1-t)}}function Tr(n){return function(t){return.5*(.5>t?n(2*t):2-n(2-2*t))}}function qr(n){return n*n}function zr(n){return n*n*n}function Cr(n){if(0>=n)return 0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(.5>n?e:3*(n-t)+e-.75)}function Dr(n){return function(t){return Math.pow(t,n)}}function jr(n){return 1-Math.cos(n*Jo)}function Lr(n){return Math.pow(2,10*(n-1))}function Hr(n){return 1-Math.sqrt(1-n*n)}function Fr(n,t){var e;return arguments.length<2&&(t=.45),arguments.length?e=t/Wo*Math.asin(1/n):(n=1,e=t/4),function(r){return 1+n*Math.pow(2,-10*r)*Math.sin((r-e)*Wo/t)}}function Pr(n){return n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}function Or(n){return 1/2.75>n?7.5625*n*n:2/2.75>n?7.5625*(n-=1.5/2.75)*n+.75:2.5/2.75>n?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function Rr(n,t){n=mo.hcl(n),t=mo.hcl(t);var e=n.h,r=n.c,u=n.l,i=t.h-e,o=t.c-r,a=t.l-u;return isNaN(o)&&(o=0,r=isNaN(r)?t.c:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return J(e+i*n,r+o*n,u+a*n)+""}}function Yr(n,t){n=mo.hsl(n),t=mo.hsl(t);var e=n.h,r=n.s,u=n.l,i=t.h-e,o=t.s-r,a=t.l-u;return isNaN(o)&&(o=0,r=isNaN(r)?t.s:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return $(e+i*n,r+o*n,u+a*n)+""}}function Ir(n,t){n=mo.lab(n),t=mo.lab(t);var e=n.l,r=n.a,u=n.b,i=t.l-e,o=t.a-r,a=t.b-u;return function(n){return Q(e+i*n,r+o*n,u+a*n)+""}}function Ur(n,t){return t-=n,function(e){return Math.round(n+t*e)}}function Zr(n){var t=[n.a,n.b],e=[n.c,n.d],r=Xr(t),u=Vr(t,e),i=Xr($r(e,t,-u))||0;t[0]*e[1]<e[0]*t[1]&&(t[0]*=-1,t[1]*=-1,r*=-1,u*=-1),this.rotate=(r?Math.atan2(t[1],t[0]):Math.atan2(-e[0],e[1]))*na,this.translate=[n.e,n.f],this.scale=[r,i],this.skew=i?Math.atan2(u,i)*na:0}function Vr(n,t){return n[0]*t[0]+n[1]*t[1]}function Xr(n){var t=Math.sqrt(Vr(n,n));return t&&(n[0]/=t,n[1]/=t),t}function $r(n,t,e){return n[0]+=e*t[0],n[1]+=e*t[1],n}function Br(n,t){var e,r=[],u=[],i=mo.transform(n),o=mo.transform(t),a=i.translate,c=o.translate,l=i.rotate,s=o.rotate,f=i.skew,h=o.skew,g=i.scale,p=o.scale;return a[0]!=c[0]||a[1]!=c[1]?(r.push("translate(",null,",",null,")"),u.push({i:1,x:wr(a[0],c[0])},{i:3,x:wr(a[1],c[1])})):c[0]||c[1]?r.push("translate("+c+")"):r.push(""),l!=s?(l-s>180?s+=360:s-l>180&&(l+=360),u.push({i:r.push(r.pop()+"rotate(",null,")")-2,x:wr(l,s)})):s&&r.push(r.pop()+"rotate("+s+")"),f!=h?u.push({i:r.push(r.pop()+"skewX(",null,")")-2,x:wr(f,h)}):h&&r.push(r.pop()+"skewX("+h+")"),g[0]!=p[0]||g[1]!=p[1]?(e=r.push(r.pop()+"scale(",null,",",null,")"),u.push({i:e-4,x:wr(g[0],p[0])},{i:e-2,x:wr(g[1],p[1])})):(1!=p[0]||1!=p[1])&&r.push(r.pop()+"scale("+p+")"),e=u.length,function(n){for(var t,i=-1;++i<e;)r[(t=u[i]).i]=t.x(n);return r.join("")}}function Wr(n,t){return t=t-(n=+n)?1/(t-n):0,function(e){return(e-n)*t}}function Jr(n,t){return t=t-(n=+n)?1/(t-n):0,function(e){return Math.max(0,Math.min(1,(e-n)*t))}}function Gr(n){for(var t=n.source,e=n.target,r=Qr(t,e),u=[t];t!==r;)t=t.parent,u.push(t);for(var i=u.length;e!==r;)u.splice(i,0,e),e=e.parent;return u}function Kr(n){for(var t=[],e=n.parent;null!=e;)t.push(n),n=e,e=e.parent;return t.push(n),t}function Qr(n,t){if(n===t)return n;for(var e=Kr(n),r=Kr(t),u=e.pop(),i=r.pop(),o=null;u===i;)o=u,u=e.pop(),i=r.pop();return o}function nu(n){n.fixed|=2}function tu(n){n.fixed&=-7}function eu(n){n.fixed|=4,n.px=n.x,n.py=n.y}function ru(n){n.fixed&=-5}function uu(n,t,e){var r=0,u=0;if(n.charge=0,!n.leaf)for(var i,o=n.nodes,a=o.length,c=-1;++c<a;)i=o[c],null!=i&&(uu(i,t,e),n.charge+=i.charge,r+=i.charge*i.cx,u+=i.charge*i.cy);if(n.point){n.leaf||(n.point.x+=Math.random()-.5,n.point.y+=Math.random()-.5);var l=t*e[n.point.index];n.charge+=n.pointCharge=l,r+=l*n.point.x,u+=l*n.point.y}n.cx=r/n.charge,n.cy=u/n.charge}function iu(n,t){return mo.rebind(n,t,"sort","children","value"),n.nodes=n,n.links=lu,n}function ou(n){return n.children}function au(n){return n.value}function cu(n,t){return t.value-n.value}function lu(n){return mo.merge(n.map(function(n){return(n.children||[]).map(function(t){return{source:n,target:t}})}))}function su(n){return n.x}function fu(n){return n.y}function hu(n,t,e){n.y0=t,n.y=e}function gu(n){return mo.range(n.length)}function pu(n){for(var t=-1,e=n[0].length,r=[];++t<e;)r[t]=0;return r}function du(n){for(var t,e=1,r=0,u=n[0][1],i=n.length;i>e;++e)(t=n[e][1])>u&&(r=e,u=t);return r}function vu(n){return n.reduce(mu,0)}function mu(n,t){return n+t[1]}function yu(n,t){return Mu(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function Mu(n,t){for(var e=-1,r=+n[0],u=(n[1]-r)/t,i=[];++e<=t;)i[e]=u*e+r;return i}function xu(n){return[mo.min(n),mo.max(n)]}function bu(n,t){return n.parent==t.parent?1:2}function _u(n){var t=n.children;return t&&t.length?t[0]:n._tree.thread}function wu(n){var t,e=n.children;return e&&(t=e.length)?e[t-1]:n._tree.thread}function Su(n,t){var e=n.children;if(e&&(u=e.length))for(var r,u,i=-1;++i<u;)t(r=Su(e[i],t),n)>0&&(n=r);return n}function Eu(n,t){return n.x-t.x}function ku(n,t){return t.x-n.x}function Au(n,t){return n.depth-t.depth}function Nu(n,t){function e(n,r){var u=n.children;if(u&&(o=u.length))for(var i,o,a=null,c=-1;++c<o;)i=u[c],e(i,a),a=i;t(n,r)}e(n,null)}function Tu(n){for(var t,e=0,r=0,u=n.children,i=u.length;--i>=0;)t=u[i]._tree,t.prelim+=e,t.mod+=e,e+=t.shift+(r+=t.change)}function qu(n,t,e){n=n._tree,t=t._tree;var r=e/(t.number-n.number);n.change+=r,t.change-=r,t.shift+=e,t.prelim+=e,t.mod+=e}function zu(n,t,e){return n._tree.ancestor.parent==t.parent?n._tree.ancestor:e}function Cu(n,t){return n.value-t.value}function Du(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function ju(n,t){n._pack_next=t,t._pack_prev=n}function Lu(n,t){var e=t.x-n.x,r=t.y-n.y,u=n.r+t.r;return.999*u*u>e*e+r*r}function Hu(n){function t(n){s=Math.min(n.x-n.r,s),f=Math.max(n.x+n.r,f),h=Math.min(n.y-n.r,h),g=Math.max(n.y+n.r,g)}if((e=n.children)&&(l=e.length)){var e,r,u,i,o,a,c,l,s=1/0,f=-1/0,h=1/0,g=-1/0;if(e.forEach(Fu),r=e[0],r.x=-r.r,r.y=0,t(r),l>1&&(u=e[1],u.x=u.r,u.y=0,t(u),l>2))for(i=e[2],Ru(r,u,i),t(i),Du(r,i),r._pack_prev=i,Du(i,u),u=r._pack_next,o=3;l>o;o++){Ru(r,u,i=e[o]);var p=0,d=1,v=1;for(a=u._pack_next;a!==u;a=a._pack_next,d++)if(Lu(a,i)){p=1;break}if(1==p)for(c=r._pack_prev;c!==a._pack_prev&&!Lu(c,i);c=c._pack_prev,v++);p?(v>d||d==v&&u.r<r.r?ju(r,u=a):ju(r=c,u),o--):(Du(r,i),u=i,t(i))}var m=(s+f)/2,y=(h+g)/2,M=0;for(o=0;l>o;o++)i=e[o],i.x-=m,i.y-=y,M=Math.max(M,i.r+Math.sqrt(i.x*i.x+i.y*i.y));n.r=M,e.forEach(Pu)}}function Fu(n){n._pack_next=n._pack_prev=n}function Pu(n){delete n._pack_next,delete n._pack_prev}function Ou(n,t,e,r){var u=n.children;if(n.x=t+=r*n.x,n.y=e+=r*n.y,n.r*=r,u)for(var i=-1,o=u.length;++i<o;)Ou(u[i],t,e,r)}function Ru(n,t,e){var r=n.r+e.r,u=t.x-n.x,i=t.y-n.y;if(r&&(u||i)){var o=t.r+e.r,a=u*u+i*i;o*=o,r*=r;var c=.5+(r-o)/(2*a),l=Math.sqrt(Math.max(0,2*o*(r+a)-(r-=a)*r-o*o))/(2*a);e.x=n.x+c*u+l*i,e.y=n.y+c*i-l*u}else e.x=n.x+r,e.y=n.y}function Yu(n){return 1+mo.max(n,function(n){return n.y})}function Iu(n){return n.reduce(function(n,t){return n+t.x},0)/n.length}function Uu(n){var t=n.children;return t&&t.length?Uu(t[0]):n}function Zu(n){var t,e=n.children;return e&&(t=e.length)?Zu(e[t-1]):n}function Vu(n){return{x:n.x,y:n.y,dx:n.dx,dy:n.dy}}function Xu(n,t){var e=n.x+t[3],r=n.y+t[0],u=n.dx-t[1]-t[3],i=n.dy-t[0]-t[2];return 0>u&&(e+=u/2,u=0),0>i&&(r+=i/2,i=0),{x:e,y:r,dx:u,dy:i}}function $u(n){var t=n[0],e=n[n.length-1];return e>t?[t,e]:[e,t]}function Bu(n){return n.rangeExtent?n.rangeExtent():$u(n.range())}function Wu(n,t,e,r){var u=e(n[0],n[1]),i=r(t[0],t[1]);return function(n){return i(u(n))}}function Ju(n,t){var e,r=0,u=n.length-1,i=n[r],o=n[u];return i>o&&(e=r,r=u,u=e,e=i,i=o,o=e),n[r]=t.floor(i),n[u]=t.ceil(o),n}function Gu(n){return n?{floor:function(t){return Math.floor(t/n)*n},ceil:function(t){return Math.ceil(t/n)*n}}:Tc}function Ku(n,t,e,r){var u=[],i=[],o=0,a=Math.min(n.length,t.length)-1;for(n[a]<n[0]&&(n=n.slice().reverse(),t=t.slice().reverse());++o<=a;)u.push(e(n[o-1],n[o])),i.push(r(t[o-1],t[o]));return function(t){var e=mo.bisect(n,t,1,a)-1;return i[e](u[e](t))}}function Qu(n,t,e,r){function u(){var u=Math.min(n.length,t.length)>2?Ku:Wu,c=r?Jr:Wr;return o=u(n,t,c,e),a=u(t,n,c,Er),i}function i(n){return o(n)}var o,a;return i.invert=function(n){return a(n)},i.domain=function(t){return arguments.length?(n=t.map(Number),u()):n},i.range=function(n){return arguments.length?(t=n,u()):t},i.rangeRound=function(n){return i.range(n).interpolate(Ur)},i.clamp=function(n){return arguments.length?(r=n,u()):r},i.interpolate=function(n){return arguments.length?(e=n,u()):e},i.ticks=function(t){return ri(n,t)},i.tickFormat=function(t,e){return ui(n,t,e)},i.nice=function(t){return ti(n,t),u()},i.copy=function(){return Qu(n,t,e,r)},u()}function ni(n,t){return mo.rebind(n,t,"range","rangeRound","interpolate","clamp")}function ti(n,t){return Ju(n,Gu(ei(n,t)[2]))}function ei(n,t){null==t&&(t=10);var e=$u(n),r=e[1]-e[0],u=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),i=t/r*u;return.15>=i?u*=10:.35>=i?u*=5:.75>=i&&(u*=2),e[0]=Math.ceil(e[0]/u)*u,e[1]=Math.floor(e[1]/u)*u+.5*u,e[2]=u,e}function ri(n,t){return mo.range.apply(mo,ei(n,t))}function ui(n,t,e){var r=-Math.floor(Math.log(ei(n,t)[2])/Math.LN10+.01);return mo.format(e?e.replace(Aa,function(n,t,e,u,i,o,a,c,l,s){return[t,e,u,i,o,a,c,l||"."+(r-2*("%"===s)),s].join("")}):",."+r+"f")}function ii(n,t,e,r){function u(n){return(e?Math.log(0>n?0:n):-Math.log(n>0?0:-n))/Math.log(t)}function i(n){return e?Math.pow(t,n):-Math.pow(t,-n)}function o(t){return n(u(t))}return o.invert=function(t){return i(n.invert(t))},o.domain=function(t){return arguments.length?(e=t[0]>=0,n.domain((r=t.map(Number)).map(u)),o):r},o.base=function(e){return arguments.length?(t=+e,n.domain(r.map(u)),o):t},o.nice=function(){var t=Ju(r.map(u),e?Math:zc);return n.domain(t),r=t.map(i),o},o.ticks=function(){var n=$u(r),o=[],a=n[0],c=n[1],l=Math.floor(u(a)),s=Math.ceil(u(c)),f=t%1?2:t;if(isFinite(s-l)){if(e){for(;s>l;l++)for(var h=1;f>h;h++)o.push(i(l)*h);o.push(i(l))}else for(o.push(i(l));l++<s;)for(var h=f-1;h>0;h--)o.push(i(l)*h);for(l=0;o[l]<a;l++);for(s=o.length;o[s-1]>c;s--);o=o.slice(l,s)}return o},o.tickFormat=function(n,t){if(!arguments.length)return qc;arguments.length<2?t=qc:"function"!=typeof t&&(t=mo.format(t));var r,a=Math.max(.1,n/o.ticks().length),c=e?(r=1e-12,Math.ceil):(r=-1e-12,Math.floor);return function(n){return n/i(c(u(n)+r))<=a?t(n):""}},o.copy=function(){return ii(n.copy(),t,e,r)},ni(o,n)}function oi(n,t,e){function r(t){return n(u(t))}var u=ai(t),i=ai(1/t);return r.invert=function(t){return i(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain((e=t.map(Number)).map(u)),r):e},r.ticks=function(n){return ri(e,n)},r.tickFormat=function(n,t){return ui(e,n,t)},r.nice=function(n){return r.domain(ti(e,n))},r.exponent=function(o){return arguments.length?(u=ai(t=o),i=ai(1/t),n.domain(e.map(u)),r):t},r.copy=function(){return oi(n.copy(),t,e)},ni(r,n)}function ai(n){return function(t){return 0>t?-Math.pow(-t,n):Math.pow(t,n)}}function ci(n,t){function e(e){return o[((i.get(e)||"range"===t.t&&i.set(e,n.push(e)))-1)%o.length]}function r(t,e){return mo.range(n.length).map(function(n){return t+e*n})}var i,o,a;return e.domain=function(r){if(!arguments.length)return n;n=[],i=new u;for(var o,a=-1,c=r.length;++a<c;)i.has(o=r[a])||i.set(o,n.push(o));return e[t.t].apply(e,t.a)},e.range=function(n){return arguments.length?(o=n,a=0,t={t:"range",a:arguments},e):o},e.rangePoints=function(u,i){arguments.length<2&&(i=0);var c=u[0],l=u[1],s=(l-c)/(Math.max(1,n.length-1)+i);return o=r(n.length<2?(c+l)/2:c+s*i/2,s),a=0,t={t:"rangePoints",a:arguments},e},e.rangeBands=function(u,i,c){arguments.length<2&&(i=0),arguments.length<3&&(c=i);var l=u[1]<u[0],s=u[l-0],f=u[1-l],h=(f-s)/(n.length-i+2*c);return o=r(s+h*c,h),l&&o.reverse(),a=h*(1-i),t={t:"rangeBands",a:arguments},e},e.rangeRoundBands=function(u,i,c){arguments.length<2&&(i=0),arguments.length<3&&(c=i);var l=u[1]<u[0],s=u[l-0],f=u[1-l],h=Math.floor((f-s)/(n.length-i+2*c)),g=f-s-(n.length-i)*h;return o=r(s+Math.round(g/2),h),l&&o.reverse(),a=Math.round(h*(1-i)),t={t:"rangeRoundBands",a:arguments},e},e.rangeBand=function(){return a},e.rangeExtent=function(){return $u(t.a[0])},e.copy=function(){return ci(n,t)},e.domain(n)}function li(n,t){function e(){var e=0,i=t.length;for(u=[];++e<i;)u[e-1]=mo.quantile(n,e/i);return r}function r(n){return isNaN(n=+n)?void 0:t[mo.bisect(u,n)]}var u;return r.domain=function(t){return arguments.length?(n=t.filter(function(n){return!isNaN(n)}).sort(mo.ascending),e()):n},r.range=function(n){return arguments.length?(t=n,e()):t},r.quantiles=function(){return u},r.invertExtent=function(e){return e=t.indexOf(e),0>e?[0/0,0/0]:[e>0?u[e-1]:n[0],e<u.length?u[e]:n[n.length-1]]},r.copy=function(){return li(n,t)},e()}function si(n,t,e){function r(t){return e[Math.max(0,Math.min(o,Math.floor(i*(t-n))))]}function u(){return i=e.length/(t-n),o=e.length-1,r}var i,o;return r.domain=function(e){return arguments.length?(n=+e[0],t=+e[e.length-1],u()):[n,t]},r.range=function(n){return arguments.length?(e=n,u()):e},r.invertExtent=function(t){return t=e.indexOf(t),t=0>t?0/0:t/i+n,[t,t+1/i]},r.copy=function(){return si(n,t,e)},u()}function fi(n,t){function e(e){return e>=e?t[mo.bisect(n,e)]:void 0}return e.domain=function(t){return arguments.length?(n=t,e):n},e.range=function(n){return arguments.length?(t=n,e):t},e.invertExtent=function(e){return e=t.indexOf(e),[n[e-1],n[e]]},e.copy=function(){return fi(n,t)},e}function hi(n){function t(n){return+n}return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=e.map(t),t):n},t.ticks=function(t){return ri(n,t)},t.tickFormat=function(t,e){return ui(n,t,e)},t.copy=function(){return hi(n)},t}function gi(n){return n.innerRadius}function pi(n){return n.outerRadius}function di(n){return n.startAngle}function vi(n){return n.endAngle}function mi(n){for(var t,e,r,u=-1,i=n.length;++u<i;)t=n[u],e=t[0],r=t[1]+Hc,t[0]=e*Math.cos(r),t[1]=e*Math.sin(r);return n}function yi(n){function t(t){function c(){d.push("M",a(n(m),f),s,l(n(v.reverse()),f),"Z")}for(var h,g,p,d=[],v=[],m=[],y=-1,M=t.length,x=pt(e),b=pt(u),_=e===r?function(){return g}:pt(r),w=u===i?function(){return p}:pt(i);++y<M;)o.call(this,h=t[y],y)?(v.push([g=+x.call(this,h,y),p=+b.call(this,h,y)]),m.push([+_.call(this,h,y),+w.call(this,h,y)])):v.length&&(c(),v=[],m=[]);return v.length&&c(),d.length?d.join(""):null}var e=Ze,r=Ze,u=0,i=Ve,o=Vt,a=Xe,c=a.key,l=a,s="L",f=.7;return t.x=function(n){return arguments.length?(e=r=n,t):r},t.x0=function(n){return arguments.length?(e=n,t):e},t.x1=function(n){return arguments.length?(r=n,t):r},t.y=function(n){return arguments.length?(u=i=n,t):i},t.y0=function(n){return arguments.length?(u=n,t):u},t.y1=function(n){return arguments.length?(i=n,t):i},t.defined=function(n){return arguments.length?(o=n,t):o},t.interpolate=function(n){return arguments.length?(c="function"==typeof n?a=n:(a=gc.get(n)||Xe).key,l=a.reverse||a,s=a.closed?"M":"L",t):c},t.tension=function(n){return arguments.length?(f=n,t):f},t}function Mi(n){return n.radius}function xi(n){return[n.x,n.y]}function bi(n){return function(){var t=n.apply(this,arguments),e=t[0],r=t[1]+Hc;return[e*Math.cos(r),e*Math.sin(r)]}}function _i(){return 64}function wi(){return"circle"}function Si(n){var t=Math.sqrt(n/Bo);return"M0,"+t+"A"+t+","+t+" 0 1,1 0,"+-t+"A"+t+","+t+" 0 1,1 0,"+t+"Z"}function Ei(n,t){return Lo(n,Uc),n.id=t,n}function ki(n,t,e,r){var u=n.id;return N(n,"function"==typeof e?function(n,i,o){n.__transition__[u].tween.set(t,r(e.call(n,n.__data__,i,o)))}:(e=r(e),function(n){n.__transition__[u].tween.set(t,e)}))}function Ai(n){return null==n&&(n=""),function(){this.textContent=n}}function Ni(n,t,e,r){var i=n.__transition__||(n.__transition__={active:0,count:0}),o=i[e];if(!o){var a=r.time;o=i[e]={tween:new u,time:a,ease:r.ease,delay:r.delay,duration:r.duration},++i.count,mo.timer(function(r){function u(r){return i.active>e?l():(i.active=e,o.event&&o.event.start.call(n,s,t),o.tween.forEach(function(e,r){(r=r.call(n,s,t))&&p.push(r)}),c(r||1)?1:(xt(c,h,a),void 0))}function c(r){if(i.active!==e)return l();for(var u=r/g,a=f(u),c=p.length;c>0;)p[--c].call(n,a);return u>=1?(o.event&&o.event.end.call(n,s,t),l()):void 0}function l(){return--i.count?delete i[e]:delete n.__transition__,1}var s=n.__data__,f=o.ease,h=o.delay,g=o.duration,p=[];return r>=h?u(r-h):(xt(u,h,a),void 0)},0,a)}}function Ti(n,t){n.attr("transform",function(n){return"translate("+t(n)+",0)"})}function qi(n,t){n.attr("transform",function(n){return"translate(0,"+t(n)+")"})}function zi(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function Ci(n,t,e){function r(t){var e=n(t),r=i(e,1);return r-t>t-e?e:r}function u(e){return t(e=n(new Jc(e-1)),1),e}function i(n,e){return t(n=new Jc(+n),e),n}function o(n,r,i){var o=u(n),a=[];if(i>1)for(;r>o;)e(o)%i||a.push(new Date(+o)),t(o,1);else for(;r>o;)a.push(new Date(+o)),t(o,1);return a}function a(n,t,e){try{Jc=zi;var r=new zi;return r._=n,o(r,t,e)}finally{Jc=Date}}n.floor=n,n.round=r,n.ceil=u,n.offset=i,n.range=o;var c=n.utc=Di(n);return c.floor=c,c.round=Di(r),c.ceil=Di(u),c.offset=Di(i),c.range=a,n}function Di(n){return function(t,e){try{Jc=zi;var r=new zi;return r._=t,n(r,e)._}finally{Jc=Date}}}function ji(n){function t(t){for(var r,u,i,o=[],a=-1,c=0;++a<e;)37===n.charCodeAt(a)&&(o.push(n.substring(c,a)),null!=(u=dl[r=n.charAt(++a)])&&(r=n.charAt(++a)),(i=vl[r])&&(r=i(t,null==u?"e"===r?" ":"0":u)),o.push(r),c=a+1);return o.push(n.substring(c,a)),o.join("")}var e=n.length;return t.parse=function(t){var e={y:1900,m:0,d:1,H:0,M:0,S:0,L:0,Z:null},r=Li(e,n,t,0);if(r!=t.length)return null;"p"in e&&(e.H=e.H%12+12*e.p);var u=null!=e.Z&&Jc!==zi,i=new(u?zi:Jc);return"j"in e?i.setFullYear(e.y,0,e.j):"w"in e&&("W"in e||"U"in e)?(i.setFullYear(e.y,0,1),i.setFullYear(e.y,0,"W"in e?(e.w+6)%7+7*e.W-(i.getDay()+5)%7:e.w+7*e.U-(i.getDay()+6)%7)):i.setFullYear(e.y,e.m,e.d),i.setHours(e.H+Math.floor(e.Z/100),e.M+e.Z%100,e.S,e.L),u?i._:i},t.toString=function(){return n},t}function Li(n,t,e,r){for(var u,i,o,a=0,c=t.length,l=e.length;c>a;){if(r>=l)return-1;if(u=t.charCodeAt(a++),37===u){if(o=t.charAt(a++),i=ml[o in dl?t.charAt(a++):o],!i||(r=i(n,e,r))<0)return-1}else if(u!=e.charCodeAt(r++))return-1}return r}function Hi(n){return new RegExp("^(?:"+n.map(mo.requote).join("|")+")","i")}function Fi(n){for(var t=new u,e=-1,r=n.length;++e<r;)t.set(n[e].toLowerCase(),e);return t}function Pi(n,t,e){var r=0>n?"-":"",u=(r?-n:n)+"",i=u.length;return r+(e>i?new Array(e-i+1).join(t)+u:u)}function Oi(n,t,e){cl.lastIndex=0;var r=cl.exec(t.substring(e));return r?(n.w=ll.get(r[0].toLowerCase()),e+r[0].length):-1}function Ri(n,t,e){ol.lastIndex=0;var r=ol.exec(t.substring(e));return r?(n.w=al.get(r[0].toLowerCase()),e+r[0].length):-1}function Yi(n,t,e){yl.lastIndex=0;var r=yl.exec(t.substring(e,e+1));return r?(n.w=+r[0],e+r[0].length):-1}function Ii(n,t,e){yl.lastIndex=0;var r=yl.exec(t.substring(e));return r?(n.U=+r[0],e+r[0].length):-1}function Ui(n,t,e){yl.lastIndex=0;var r=yl.exec(t.substring(e));return r?(n.W=+r[0],e+r[0].length):-1}function Zi(n,t,e){hl.lastIndex=0;var r=hl.exec(t.substring(e));return r?(n.m=gl.get(r[0].toLowerCase()),e+r[0].length):-1}function Vi(n,t,e){sl.lastIndex=0;var r=sl.exec(t.substring(e));return r?(n.m=fl.get(r[0].toLowerCase()),e+r[0].length):-1}function Xi(n,t,e){return Li(n,vl.c.toString(),t,e)}function $i(n,t,e){return Li(n,vl.x.toString(),t,e)}function Bi(n,t,e){return Li(n,vl.X.toString(),t,e)}function Wi(n,t,e){yl.lastIndex=0;var r=yl.exec(t.substring(e,e+4));return r?(n.y=+r[0],e+r[0].length):-1}function Ji(n,t,e){yl.lastIndex=0;var r=yl.exec(t.substring(e,e+2));return r?(n.y=Ki(+r[0]),e+r[0].length):-1}function Gi(n,t,e){return/^[+-]\d{4}$/.test(t=t.substring(e,e+5))?(n.Z=+t,e+5):-1}function Ki(n){return n+(n>68?1900:2e3)}function Qi(n,t,e){yl.lastIndex=0;var r=yl.exec(t.substring(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function no(n,t,e){yl.lastIndex=0;var r=yl.exec(t.substring(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function to(n,t,e){yl.lastIndex=0;var r=yl.exec(t.substring(e,e+3));return r?(n.j=+r[0],e+r[0].length):-1}function eo(n,t,e){yl.lastIndex=0;var r=yl.exec(t.substring(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function ro(n,t,e){yl.lastIndex=0;var r=yl.exec(t.substring(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function uo(n,t,e){yl.lastIndex=0;var r=yl.exec(t.substring(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function io(n,t,e){yl.lastIndex=0;var r=yl.exec(t.substring(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function oo(n,t,e){var r=Ml.get(t.substring(e,e+=2).toLowerCase());return null==r?-1:(n.p=r,e)}function ao(n){var t=n.getTimezoneOffset(),e=t>0?"-":"+",r=~~(Math.abs(t)/60),u=Math.abs(t)%60;return e+Pi(r,"0",2)+Pi(u,"0",2)}function co(n,t,e){pl.lastIndex=0;var r=pl.exec(t.substring(e,e+1));return r?e+r[0].length:-1}function lo(n){function t(n){try{Jc=zi;var t=new Jc;return t._=n,e(t)}finally{Jc=Date}}var e=ji(n);return t.parse=function(n){try{Jc=zi;var t=e.parse(n);return t&&t._}finally{Jc=Date}},t.toString=e.toString,t}function so(n){return n.toISOString()}function fo(n,t,e){function r(t){return n(t)}function u(n,e){var r=n[1]-n[0],u=r/e,i=mo.bisect(bl,u);return i==bl.length?[t.year,ei(n.map(function(n){return n/31536e6}),e)[2]]:i?t[u/bl[i-1]<bl[i]/u?i-1:i]:[El,ei(n,e)[2]]}return r.invert=function(t){return ho(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain(t),r):n.domain().map(ho)},r.nice=function(n,t){function e(e){return!isNaN(e)&&!n.range(e,ho(+e+1),t).length}var i=r.domain(),o=$u(i),a=null==n?u(o,10):"number"==typeof n&&u(o,n);return a&&(n=a[0],t=a[1]),r.domain(Ju(i,t>1?{floor:function(t){for(;e(t=n.floor(t));)t=ho(t-1);return t},ceil:function(t){for(;e(t=n.ceil(t));)t=ho(+t+1);return t}}:n))},r.ticks=function(n,t){var e=$u(r.domain()),i=null==n?u(e,10):"number"==typeof n?u(e,n):!n.range&&[{range:n},t];return i&&(n=i[0],t=i[1]),n.range(e[0],ho(+e[1]+1),1>t?1:t)},r.tickFormat=function(){return e},r.copy=function(){return fo(n.copy(),t,e)},ni(r,n)}function ho(n){return new Date(n)}function go(n){return function(t){for(var e=n.length-1,r=n[e];!r[1](t);)r=n[--e];return r[0](t)}}function po(n){return JSON.parse(n.responseText)}function vo(n){var t=xo.createRange();return t.selectNode(xo.body),t.createContextualFragment(n.responseText)}var mo={version:"3.3.6"};Date.now||(Date.now=function(){return+new Date});var yo=[].slice,Mo=function(n){return yo.call(n)},xo=document,bo=xo.documentElement,_o=window;try{Mo(bo.childNodes)[0].nodeType}catch(wo){Mo=function(n){for(var t=n.length,e=new Array(t);t--;)e[t]=n[t];return e}}try{xo.createElement("div").style.setProperty("opacity",0,"")}catch(So){var Eo=_o.Element.prototype,ko=Eo.setAttribute,Ao=Eo.setAttributeNS,No=_o.CSSStyleDeclaration.prototype,To=No.setProperty;Eo.setAttribute=function(n,t){ko.call(this,n,t+"")},Eo.setAttributeNS=function(n,t,e){Ao.call(this,n,t,e+"")},No.setProperty=function(n,t,e){To.call(this,n,t+"",e)}}mo.ascending=function(n,t){return t>n?-1:n>t?1:n>=t?0:0/0},mo.descending=function(n,t){return n>t?-1:t>n?1:t>=n?0:0/0},mo.min=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u<i&&!(null!=(e=n[u])&&e>=e);)e=void 0;for(;++u<i;)null!=(r=n[u])&&e>r&&(e=r)}else{for(;++u<i&&!(null!=(e=t.call(n,n[u],u))&&e>=e);)e=void 0;for(;++u<i;)null!=(r=t.call(n,n[u],u))&&e>r&&(e=r)}return e},mo.max=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u<i&&!(null!=(e=n[u])&&e>=e);)e=void 0;for(;++u<i;)null!=(r=n[u])&&r>e&&(e=r)}else{for(;++u<i&&!(null!=(e=t.call(n,n[u],u))&&e>=e);)e=void 0;for(;++u<i;)null!=(r=t.call(n,n[u],u))&&r>e&&(e=r)}return e},mo.extent=function(n,t){var e,r,u,i=-1,o=n.length;if(1===arguments.length){for(;++i<o&&!(null!=(e=u=n[i])&&e>=e);)e=u=void 0;for(;++i<o;)null!=(r=n[i])&&(e>r&&(e=r),r>u&&(u=r))}else{for(;++i<o&&!(null!=(e=u=t.call(n,n[i],i))&&e>=e);)e=void 0;for(;++i<o;)null!=(r=t.call(n,n[i],i))&&(e>r&&(e=r),r>u&&(u=r))}return[e,u]},mo.sum=function(n,t){var e,r=0,u=n.length,i=-1;if(1===arguments.length)for(;++i<u;)isNaN(e=+n[i])||(r+=e);else for(;++i<u;)isNaN(e=+t.call(n,n[i],i))||(r+=e);return r},mo.mean=function(t,e){var r,u=t.length,i=0,o=-1,a=0;if(1===arguments.length)for(;++o<u;)n(r=t[o])&&(i+=(r-i)/++a);else for(;++o<u;)n(r=e.call(t,t[o],o))&&(i+=(r-i)/++a);return a?i:void 0},mo.quantile=function(n,t){var e=(n.length-1)*t+1,r=Math.floor(e),u=+n[r-1],i=e-r;return i?u+i*(n[r]-u):u},mo.median=function(t,e){return arguments.length>1&&(t=t.map(e)),t=t.filter(n),t.length?mo.quantile(t.sort(mo.ascending),.5):void 0},mo.bisector=function(n){return{left:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n.call(t,t[i],i)<e?r=i+1:u=i}return r},right:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;e<n.call(t,t[i],i)?u=i:r=i+1}return r}}};var qo=mo.bisector(function(n){return n});mo.bisectLeft=qo.left,mo.bisect=mo.bisectRight=qo.right,mo.shuffle=function(n){for(var t,e,r=n.length;r;)e=0|Math.random()*r--,t=n[r],n[r]=n[e],n[e]=t;return n},mo.permute=function(n,t){for(var e=t.length,r=new Array(e);e--;)r[e]=n[t[e]];return r},mo.pairs=function(n){for(var t,e=0,r=n.length-1,u=n[0],i=new Array(0>r?0:r);r>e;)i[e]=[t=u,u=n[++e]];return i},mo.zip=function(){if(!(u=arguments.length))return[];for(var n=-1,e=mo.min(arguments,t),r=new Array(e);++n<e;)for(var u,i=-1,o=r[n]=new Array(u);++i<u;)o[i]=arguments[i][n];return r},mo.transpose=function(n){return mo.zip.apply(mo,n)},mo.keys=function(n){var t=[];for(var e in n)t.push(e);return t},mo.values=function(n){var t=[];for(var e in n)t.push(n[e]);return t},mo.entries=function(n){var t=[]; - for(var e in n)t.push({key:e,value:n[e]});return t},mo.merge=function(n){return Array.prototype.concat.apply([],n)},mo.range=function(n,t,r){if(arguments.length<3&&(r=1,arguments.length<2&&(t=n,n=0)),1/0===(t-n)/r)throw new Error("infinite range");var u,i=[],o=e(Math.abs(r)),a=-1;if(n*=o,t*=o,r*=o,0>r)for(;(u=n+r*++a)>t;)i.push(u/o);else for(;(u=n+r*++a)<t;)i.push(u/o);return i},mo.map=function(n){var t=new u;if(n instanceof u)n.forEach(function(n,e){t.set(n,e)});else for(var e in n)t.set(e,n[e]);return t},r(u,{has:function(n){return zo+n in this},get:function(n){return this[zo+n]},set:function(n,t){return this[zo+n]=t},remove:function(n){return n=zo+n,n in this&&delete this[n]},keys:function(){var n=[];return this.forEach(function(t){n.push(t)}),n},values:function(){var n=[];return this.forEach(function(t,e){n.push(e)}),n},entries:function(){var n=[];return this.forEach(function(t,e){n.push({key:t,value:e})}),n},forEach:function(n){for(var t in this)t.charCodeAt(0)===Co&&n.call(this,t.substring(1),this[t])}});var zo="\x00",Co=zo.charCodeAt(0);mo.nest=function(){function n(t,a,c){if(c>=o.length)return r?r.call(i,a):e?a.sort(e):a;for(var l,s,f,h,g=-1,p=a.length,d=o[c++],v=new u;++g<p;)(h=v.get(l=d(s=a[g])))?h.push(s):v.set(l,[s]);return t?(s=t(),f=function(e,r){s.set(e,n(t,r,c))}):(s={},f=function(e,r){s[e]=n(t,r,c)}),v.forEach(f),s}function t(n,e){if(e>=o.length)return n;var r=[],u=a[e++];return n.forEach(function(n,u){r.push({key:n,values:t(u,e)})}),u?r.sort(function(n,t){return u(n.key,t.key)}):r}var e,r,i={},o=[],a=[];return i.map=function(t,e){return n(e,t,0)},i.entries=function(e){return t(n(mo.map,e,0),0)},i.key=function(n){return o.push(n),i},i.sortKeys=function(n){return a[o.length-1]=n,i},i.sortValues=function(n){return e=n,i},i.rollup=function(n){return r=n,i},i},mo.set=function(n){var t=new i;if(n)for(var e=0,r=n.length;r>e;++e)t.add(n[e]);return t},r(i,{has:function(n){return zo+n in this},add:function(n){return this[zo+n]=!0,n},remove:function(n){return n=zo+n,n in this&&delete this[n]},values:function(){var n=[];return this.forEach(function(t){n.push(t)}),n},forEach:function(n){for(var t in this)t.charCodeAt(0)===Co&&n.call(this,t.substring(1))}}),mo.behavior={},mo.rebind=function(n,t){for(var e,r=1,u=arguments.length;++r<u;)n[e=arguments[r]]=o(n,t,t[e]);return n};var Do=["webkit","ms","moz","Moz","o","O"];mo.dispatch=function(){for(var n=new l,t=-1,e=arguments.length;++t<e;)n[arguments[t]]=s(n);return n},l.prototype.on=function(n,t){var e=n.indexOf("."),r="";if(e>=0&&(r=n.substring(e+1),n=n.substring(0,e)),n)return arguments.length<2?this[n].on(r):this[n].on(r,t);if(2===arguments.length){if(null==t)for(n in this)this.hasOwnProperty(n)&&this[n].on(r,null);return this}},mo.event=null,mo.requote=function(n){return n.replace(jo,"\\$&")};var jo=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,Lo={}.__proto__?function(n,t){n.__proto__=t}:function(n,t){for(var e in t)n[e]=t[e]},Ho=function(n,t){return t.querySelector(n)},Fo=function(n,t){return t.querySelectorAll(n)},Po=bo[a(bo,"matchesSelector")],Oo=function(n,t){return Po.call(n,t)};"function"==typeof Sizzle&&(Ho=function(n,t){return Sizzle(n,t)[0]||null},Fo=function(n,t){return Sizzle.uniqueSort(Sizzle(n,t))},Oo=Sizzle.matchesSelector),mo.selection=function(){return Uo};var Ro=mo.selection.prototype=[];Ro.select=function(n){var t,e,r,u,i=[];n=d(n);for(var o=-1,a=this.length;++o<a;){i.push(t=[]),t.parentNode=(r=this[o]).parentNode;for(var c=-1,l=r.length;++c<l;)(u=r[c])?(t.push(e=n.call(u,u.__data__,c,o)),e&&"__data__"in u&&(e.__data__=u.__data__)):t.push(null)}return p(i)},Ro.selectAll=function(n){var t,e,r=[];n=v(n);for(var u=-1,i=this.length;++u<i;)for(var o=this[u],a=-1,c=o.length;++a<c;)(e=o[a])&&(r.push(t=Mo(n.call(e,e.__data__,a,u))),t.parentNode=e);return p(r)};var Yo={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};mo.ns={prefix:Yo,qualify:function(n){var t=n.indexOf(":"),e=n;return t>=0&&(e=n.substring(0,t),n=n.substring(t+1)),Yo.hasOwnProperty(e)?{space:Yo[e],local:n}:n}},Ro.attr=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node();return n=mo.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in n)this.each(m(t,n[t]));return this}return this.each(m(n,t))},Ro.classed=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node(),r=(n=n.trim().split(/^|\s+/g)).length,u=-1;if(t=e.classList){for(;++u<r;)if(!t.contains(n[u]))return!1}else for(t=e.getAttribute("class");++u<r;)if(!M(n[u]).test(t))return!1;return!0}for(t in n)this.each(x(t,n[t]));return this}return this.each(x(n,t))},Ro.style=function(n,t,e){var r=arguments.length;if(3>r){if("string"!=typeof n){2>r&&(t="");for(e in n)this.each(_(e,n[e],t));return this}if(2>r)return _o.getComputedStyle(this.node(),null).getPropertyValue(n);e=""}return this.each(_(n,t,e))},Ro.property=function(n,t){if(arguments.length<2){if("string"==typeof n)return this.node()[n];for(t in n)this.each(w(t,n[t]));return this}return this.each(w(n,t))},Ro.text=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.textContent=null==t?"":t}:null==n?function(){this.textContent=""}:function(){this.textContent=n}):this.node().textContent},Ro.html=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.innerHTML=null==t?"":t}:null==n?function(){this.innerHTML=""}:function(){this.innerHTML=n}):this.node().innerHTML},Ro.append=function(n){return n=S(n),this.select(function(){return this.appendChild(n.apply(this,arguments))})},Ro.insert=function(n,t){return n=S(n),t=d(t),this.select(function(){return this.insertBefore(n.apply(this,arguments),t.apply(this,arguments))})},Ro.remove=function(){return this.each(function(){var n=this.parentNode;n&&n.removeChild(this)})},Ro.data=function(n,t){function e(n,e){var r,i,o,a=n.length,f=e.length,h=Math.min(a,f),g=new Array(f),p=new Array(f),d=new Array(a);if(t){var v,m=new u,y=new u,M=[];for(r=-1;++r<a;)v=t.call(i=n[r],i.__data__,r),m.has(v)?d[r]=i:m.set(v,i),M.push(v);for(r=-1;++r<f;)v=t.call(e,o=e[r],r),(i=m.get(v))?(g[r]=i,i.__data__=o):y.has(v)||(p[r]=E(o)),y.set(v,o),m.remove(v);for(r=-1;++r<a;)m.has(M[r])&&(d[r]=n[r])}else{for(r=-1;++r<h;)i=n[r],o=e[r],i?(i.__data__=o,g[r]=i):p[r]=E(o);for(;f>r;++r)p[r]=E(e[r]);for(;a>r;++r)d[r]=n[r]}p.update=g,p.parentNode=g.parentNode=d.parentNode=n.parentNode,c.push(p),l.push(g),s.push(d)}var r,i,o=-1,a=this.length;if(!arguments.length){for(n=new Array(a=(r=this[0]).length);++o<a;)(i=r[o])&&(n[o]=i.__data__);return n}var c=T([]),l=p([]),s=p([]);if("function"==typeof n)for(;++o<a;)e(r=this[o],n.call(r,r.parentNode.__data__,o));else for(;++o<a;)e(r=this[o],n);return l.enter=function(){return c},l.exit=function(){return s},l},Ro.datum=function(n){return arguments.length?this.property("__data__",n):this.property("__data__")},Ro.filter=function(n){var t,e,r,u=[];"function"!=typeof n&&(n=k(n));for(var i=0,o=this.length;o>i;i++){u.push(t=[]),t.parentNode=(e=this[i]).parentNode;for(var a=0,c=e.length;c>a;a++)(r=e[a])&&n.call(r,r.__data__,a)&&t.push(r)}return p(u)},Ro.order=function(){for(var n=-1,t=this.length;++n<t;)for(var e,r=this[n],u=r.length-1,i=r[u];--u>=0;)(e=r[u])&&(i&&i!==e.nextSibling&&i.parentNode.insertBefore(e,i),i=e);return this},Ro.sort=function(n){n=A.apply(this,arguments);for(var t=-1,e=this.length;++t<e;)this[t].sort(n);return this.order()},Ro.each=function(n){return N(this,function(t,e,r){n.call(t,t.__data__,e,r)})},Ro.call=function(n){var t=Mo(arguments);return n.apply(t[0]=this,t),this},Ro.empty=function(){return!this.node()},Ro.node=function(){for(var n=0,t=this.length;t>n;n++)for(var e=this[n],r=0,u=e.length;u>r;r++){var i=e[r];if(i)return i}return null},Ro.size=function(){var n=0;return this.each(function(){++n}),n};var Io=[];mo.selection.enter=T,mo.selection.enter.prototype=Io,Io.append=Ro.append,Io.empty=Ro.empty,Io.node=Ro.node,Io.call=Ro.call,Io.size=Ro.size,Io.select=function(n){for(var t,e,r,u,i,o=[],a=-1,c=this.length;++a<c;){r=(u=this[a]).update,o.push(t=[]),t.parentNode=u.parentNode;for(var l=-1,s=u.length;++l<s;)(i=u[l])?(t.push(r[l]=e=n.call(u.parentNode,i.__data__,l,a)),e.__data__=i.__data__):t.push(null)}return p(o)},Io.insert=function(n,t){return arguments.length<2&&(t=q(this)),Ro.insert.call(this,n,t)},Ro.transition=function(){for(var n,t,e=Oc||++Zc,r=[],u=Rc||{time:Date.now(),ease:Cr,delay:0,duration:250},i=-1,o=this.length;++i<o;){r.push(n=[]);for(var a=this[i],c=-1,l=a.length;++c<l;)(t=a[c])&&Ni(t,c,e,u),n.push(t)}return Ei(r,e)},Ro.interrupt=function(){return this.each(z)},mo.select=function(n){var t=["string"==typeof n?Ho(n,xo):n];return t.parentNode=bo,p([t])},mo.selectAll=function(n){var t=Mo("string"==typeof n?Fo(n,xo):n);return t.parentNode=bo,p([t])};var Uo=mo.select(bo);Ro.on=function(n,t,e){var r=arguments.length;if(3>r){if("string"!=typeof n){2>r&&(t=!1);for(e in n)this.each(C(e,n[e],t));return this}if(2>r)return(r=this.node()["__on"+n])&&r._;e=!1}return this.each(C(n,t,e))};var Zo=mo.map({mouseenter:"mouseover",mouseleave:"mouseout"});Zo.forEach(function(n){"on"+n in xo&&Zo.remove(n)});var Vo=a(bo.style,"userSelect"),Xo=0;mo.mouse=function(n){return H(n,h())};var $o=/WebKit/.test(_o.navigator.userAgent)?-1:0;mo.touches=function(n,t){return arguments.length<2&&(t=h().touches),t?Mo(t).map(function(t){var e=H(n,t);return e.identifier=t.identifier,e}):[]},mo.behavior.drag=function(){function n(){this.on("mousedown.drag",o).on("touchstart.drag",a)}function t(){return mo.event.changedTouches[0].identifier}function e(n,t){return mo.touches(n).filter(function(n){return n.identifier===t})[0]}function r(n,t,e,r){return function(){function o(){var n=t(s,g),e=n[0]-d[0],r=n[1]-d[1];v|=e|r,d=n,f({type:"drag",x:n[0]+c[0],y:n[1]+c[1],dx:e,dy:r})}function a(){m.on(e+"."+p,null).on(r+"."+p,null),y(v&&mo.event.target===h),f({type:"dragend"})}var c,l=this,s=l.parentNode,f=u.of(l,arguments),h=mo.event.target,g=n(),p=null==g?"drag":"drag-"+g,d=t(s,g),v=0,m=mo.select(_o).on(e+"."+p,o).on(r+"."+p,a),y=L();i?(c=i.apply(l,arguments),c=[c.x-d[0],c.y-d[1]]):c=[0,0],f({type:"dragstart"})}}var u=g(n,"drag","dragstart","dragend"),i=null,o=r(c,mo.mouse,"mousemove","mouseup"),a=r(t,e,"touchmove","touchend");return n.origin=function(t){return arguments.length?(i=t,n):i},mo.rebind(n,u,"on")};var Bo=Math.PI,Wo=2*Bo,Jo=Bo/2,Go=1e-6,Ko=Go*Go,Qo=Bo/180,na=180/Bo,ta=Math.SQRT2,ea=2,ra=4;mo.interpolateZoom=function(n,t){function e(n){var t=n*y;if(m){var e=Y(d),o=i/(ea*h)*(e*I(ta*t+d)-R(d));return[r+o*l,u+o*s,i*e/Y(ta*t+d)]}return[r+n*l,u+n*s,i*Math.exp(ta*t)]}var r=n[0],u=n[1],i=n[2],o=t[0],a=t[1],c=t[2],l=o-r,s=a-u,f=l*l+s*s,h=Math.sqrt(f),g=(c*c-i*i+ra*f)/(2*i*ea*h),p=(c*c-i*i-ra*f)/(2*c*ea*h),d=Math.log(Math.sqrt(g*g+1)-g),v=Math.log(Math.sqrt(p*p+1)-p),m=v-d,y=(m||Math.log(c/i))/ta;return e.duration=1e3*y,e},mo.behavior.zoom=function(){function n(n){n.on(A,l).on(oa+".zoom",h).on(N,p).on("dblclick.zoom",d).on(q,s)}function t(n){return[(n[0]-S.x)/S.k,(n[1]-S.y)/S.k]}function e(n){return[n[0]*S.k+S.x,n[1]*S.k+S.y]}function r(n){S.k=Math.max(k[0],Math.min(k[1],n))}function u(n,t){t=e(t),S.x+=n[0]-t[0],S.y+=n[1]-t[1]}function i(){b&&b.domain(x.range().map(function(n){return(n-S.x)/S.k}).map(x.invert)),w&&w.domain(_.range().map(function(n){return(n-S.y)/S.k}).map(_.invert))}function o(n){n({type:"zoomstart"})}function a(n){i(),n({type:"zoom",scale:S.k,translate:[S.x,S.y]})}function c(n){n({type:"zoomend"})}function l(){function n(){s=1,u(mo.mouse(r),h),a(i)}function e(){f.on(N,_o===r?p:null).on(T,null),g(s&&mo.event.target===l),c(i)}var r=this,i=C.of(r,arguments),l=mo.event.target,s=0,f=mo.select(_o).on(N,n).on(T,e),h=t(mo.mouse(r)),g=L();z.call(r),o(i)}function s(){function n(){var n=mo.touches(p);return g=S.k,n.forEach(function(n){n.identifier in v&&(v[n.identifier]=t(n))}),n}function e(){for(var t=mo.event.changedTouches,e=0,i=t.length;i>e;++e)v[t[e].identifier]=null;var o=n(),c=Date.now();if(1===o.length){if(500>c-M){var l=o[0],s=v[l.identifier];r(2*S.k),u(l,s),f(),a(d)}M=c}else if(o.length>1){var l=o[0],h=o[1],g=l[0]-h[0],p=l[1]-h[1];m=g*g+p*p}}function i(){for(var n,t,e,i,o=mo.touches(p),c=0,l=o.length;l>c;++c,i=null)if(e=o[c],i=v[e.identifier]){if(t)break;n=e,t=i}if(i){var s=(s=e[0]-n[0])*s+(s=e[1]-n[1])*s,f=m&&Math.sqrt(s/m);n=[(n[0]+e[0])/2,(n[1]+e[1])/2],t=[(t[0]+i[0])/2,(t[1]+i[1])/2],r(f*g)}M=null,u(n,t),a(d)}function h(){if(mo.event.touches.length){for(var t=mo.event.changedTouches,e=0,r=t.length;r>e;++e)delete v[t[e].identifier];for(var u in v)return void n()}_.on(x,null).on(b,null),w.on(A,l).on(q,s),E(),c(d)}var g,p=this,d=C.of(p,arguments),v={},m=0,y=mo.event.changedTouches[0].identifier,x="touchmove.zoom-"+y,b="touchend.zoom-"+y,_=mo.select(_o).on(x,i).on(b,h),w=mo.select(p).on(A,null).on(q,e),E=L();z.call(p),e(),o(d)}function h(){var n=C.of(this,arguments);y?clearTimeout(y):(z.call(this),o(n)),y=setTimeout(function(){y=null,c(n)},50),f();var e=m||mo.mouse(this);v||(v=t(e)),r(Math.pow(2,.002*ua())*S.k),u(e,v),a(n)}function p(){v=null}function d(){var n=C.of(this,arguments),e=mo.mouse(this),i=t(e),l=Math.log(S.k)/Math.LN2;o(n),r(Math.pow(2,mo.event.shiftKey?Math.ceil(l)-1:Math.floor(l)+1)),u(e,i),a(n),c(n)}var v,m,y,M,x,b,_,w,S={x:0,y:0,k:1},E=[960,500],k=ia,A="mousedown.zoom",N="mousemove.zoom",T="mouseup.zoom",q="touchstart.zoom",C=g(n,"zoomstart","zoom","zoomend");return n.event=function(n){n.each(function(){var n=C.of(this,arguments),t=S;Oc?mo.select(this).transition().each("start.zoom",function(){S=this.__chart__||{x:0,y:0,k:1},o(n)}).tween("zoom:zoom",function(){var e=E[0],r=E[1],u=e/2,i=r/2,o=mo.interpolateZoom([(u-S.x)/S.k,(i-S.y)/S.k,e/S.k],[(u-t.x)/t.k,(i-t.y)/t.k,e/t.k]);return function(t){var r=o(t),c=e/r[2];this.__chart__=S={x:u-r[0]*c,y:i-r[1]*c,k:c},a(n)}}).each("end.zoom",function(){c(n)}):(this.__chart__=S,o(n),a(n),c(n))})},n.translate=function(t){return arguments.length?(S={x:+t[0],y:+t[1],k:S.k},i(),n):[S.x,S.y]},n.scale=function(t){return arguments.length?(S={x:S.x,y:S.y,k:+t},i(),n):S.k},n.scaleExtent=function(t){return arguments.length?(k=null==t?ia:[+t[0],+t[1]],n):k},n.center=function(t){return arguments.length?(m=t&&[+t[0],+t[1]],n):m},n.size=function(t){return arguments.length?(E=t&&[+t[0],+t[1]],n):E},n.x=function(t){return arguments.length?(b=t,x=t.copy(),S={x:0,y:0,k:1},n):b},n.y=function(t){return arguments.length?(w=t,_=t.copy(),S={x:0,y:0,k:1},n):w},mo.rebind(n,C,"on")};var ua,ia=[0,1/0],oa="onwheel"in xo?(ua=function(){return-mo.event.deltaY*(mo.event.deltaMode?120:1)},"wheel"):"onmousewheel"in xo?(ua=function(){return mo.event.wheelDelta},"mousewheel"):(ua=function(){return-mo.event.detail},"MozMousePixelScroll");Z.prototype.toString=function(){return this.rgb()+""},mo.hsl=function(n,t,e){return 1===arguments.length?n instanceof X?V(n.h,n.s,n.l):lt(""+n,st,V):V(+n,+t,+e)};var aa=X.prototype=new Z;aa.brighter=function(n){return n=Math.pow(.7,arguments.length?n:1),V(this.h,this.s,this.l/n)},aa.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),V(this.h,this.s,n*this.l)},aa.rgb=function(){return $(this.h,this.s,this.l)},mo.hcl=function(n,t,e){return 1===arguments.length?n instanceof W?B(n.h,n.c,n.l):n instanceof K?nt(n.l,n.a,n.b):nt((n=ft((n=mo.rgb(n)).r,n.g,n.b)).l,n.a,n.b):B(+n,+t,+e)};var ca=W.prototype=new Z;ca.brighter=function(n){return B(this.h,this.c,Math.min(100,this.l+la*(arguments.length?n:1)))},ca.darker=function(n){return B(this.h,this.c,Math.max(0,this.l-la*(arguments.length?n:1)))},ca.rgb=function(){return J(this.h,this.c,this.l).rgb()},mo.lab=function(n,t,e){return 1===arguments.length?n instanceof K?G(n.l,n.a,n.b):n instanceof W?J(n.l,n.c,n.h):ft((n=mo.rgb(n)).r,n.g,n.b):G(+n,+t,+e)};var la=18,sa=.95047,fa=1,ha=1.08883,ga=K.prototype=new Z;ga.brighter=function(n){return G(Math.min(100,this.l+la*(arguments.length?n:1)),this.a,this.b)},ga.darker=function(n){return G(Math.max(0,this.l-la*(arguments.length?n:1)),this.a,this.b)},ga.rgb=function(){return Q(this.l,this.a,this.b)},mo.rgb=function(n,t,e){return 1===arguments.length?n instanceof at?ot(n.r,n.g,n.b):lt(""+n,ot,$):ot(~~n,~~t,~~e)};var pa=at.prototype=new Z;pa.brighter=function(n){n=Math.pow(.7,arguments.length?n:1);var t=this.r,e=this.g,r=this.b,u=30;return t||e||r?(t&&u>t&&(t=u),e&&u>e&&(e=u),r&&u>r&&(r=u),ot(Math.min(255,~~(t/n)),Math.min(255,~~(e/n)),Math.min(255,~~(r/n)))):ot(u,u,u)},pa.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),ot(~~(n*this.r),~~(n*this.g),~~(n*this.b))},pa.hsl=function(){return st(this.r,this.g,this.b)},pa.toString=function(){return"#"+ct(this.r)+ct(this.g)+ct(this.b)};var da=mo.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});da.forEach(function(n,t){da.set(n,ut(t))}),mo.functor=pt,mo.xhr=vt(dt),mo.dsv=function(n,t){function e(n,e,i){arguments.length<3&&(i=e,e=null);var o=mo.xhr(n,t,i);return o.row=function(n){return arguments.length?o.response(null==(e=n)?r:u(n)):e},o.row(e)}function r(n){return e.parse(n.responseText)}function u(n){return function(t){return e.parse(t.responseText,n)}}function o(t){return t.map(a).join(n)}function a(n){return c.test(n)?'"'+n.replace(/\"/g,'""')+'"':n}var c=new RegExp('["'+n+"\n]"),l=n.charCodeAt(0);return e.parse=function(n,t){var r;return e.parseRows(n,function(n,e){if(r)return r(n,e-1);var u=new Function("d","return {"+n.map(function(n,t){return JSON.stringify(n)+": d["+t+"]"}).join(",")+"}");r=t?function(n,e){return t(u(n),e)}:u})},e.parseRows=function(n,t){function e(){if(s>=c)return o;if(u)return u=!1,i;var t=s;if(34===n.charCodeAt(t)){for(var e=t;e++<c;)if(34===n.charCodeAt(e)){if(34!==n.charCodeAt(e+1))break;++e}s=e+2;var r=n.charCodeAt(e+1);return 13===r?(u=!0,10===n.charCodeAt(e+2)&&++s):10===r&&(u=!0),n.substring(t+1,e).replace(/""/g,'"')}for(;c>s;){var r=n.charCodeAt(s++),a=1;if(10===r)u=!0;else if(13===r)u=!0,10===n.charCodeAt(s)&&(++s,++a);else if(r!==l)continue;return n.substring(t,s-a)}return n.substring(t)}for(var r,u,i={},o={},a=[],c=n.length,s=0,f=0;(r=e())!==o;){for(var h=[];r!==i&&r!==o;)h.push(r),r=e();(!t||(h=t(h,f++)))&&a.push(h)}return a},e.format=function(t){if(Array.isArray(t[0]))return e.formatRows(t);var r=new i,u=[];return t.forEach(function(n){for(var t in n)r.has(t)||u.push(r.add(t))}),[u.map(a).join(n)].concat(t.map(function(t){return u.map(function(n){return a(t[n])}).join(n)})).join("\n")},e.formatRows=function(n){return n.map(o).join("\n")},e},mo.csv=mo.dsv(",","text/csv"),mo.tsv=mo.dsv(" ","text/tab-separated-values");var va,ma,ya,Ma,xa,ba=_o[a(_o,"requestAnimationFrame")]||function(n){setTimeout(n,17)};mo.timer=function(n,t,e){var r=arguments.length;2>r&&(t=0),3>r&&(e=Date.now());var u=e+t,i={callback:n,time:u,next:null};ma?ma.next=i:va=i,ma=i,ya||(Ma=clearTimeout(Ma),ya=1,ba(Mt))},mo.timer.flush=function(){bt(),_t()};var _a=".",wa=",",Sa=[3,3],Ea="$",ka=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"].map(wt);mo.formatPrefix=function(n,t){var e=0;return n&&(0>n&&(n*=-1),t&&(n=mo.round(n,St(n,t))),e=1+Math.floor(1e-12+Math.log(n)/Math.LN10),e=Math.max(-24,Math.min(24,3*Math.floor((0>=e?e+1:e-1)/3)))),ka[8+e/3]},mo.round=function(n,t){return t?Math.round(n*(t=Math.pow(10,t)))/t:Math.round(n)},mo.format=function(n){var t=Aa.exec(n),e=t[1]||" ",r=t[2]||">",u=t[3]||"",i=t[4]||"",o=t[5],a=+t[6],c=t[7],l=t[8],s=t[9],f=1,h="",g=!1;switch(l&&(l=+l.substring(1)),(o||"0"===e&&"="===r)&&(o=e="0",r="=",c&&(a-=Math.floor((a-1)/4))),s){case"n":c=!0,s="g";break;case"%":f=100,h="%",s="f";break;case"p":f=100,h="%",s="r";break;case"b":case"o":case"x":case"X":"#"===i&&(i="0"+s.toLowerCase());case"c":case"d":g=!0,l=0;break;case"s":f=-1,s="r"}"#"===i?i="":"$"===i&&(i=Ea),"r"!=s||l||(s="g"),null!=l&&("g"==s?l=Math.max(1,Math.min(21,l)):("e"==s||"f"==s)&&(l=Math.max(0,Math.min(20,l)))),s=Na.get(s)||Et;var p=o&&c;return function(n){if(g&&n%1)return"";var t=0>n||0===n&&0>1/n?(n=-n,"-"):u;if(0>f){var d=mo.formatPrefix(n,l);n=d.scale(n),h=d.symbol}else n*=f;n=s(n,l);var v=n.lastIndexOf("."),m=0>v?n:n.substring(0,v),y=0>v?"":_a+n.substring(v+1);!o&&c&&(m=Ta(m));var M=i.length+m.length+y.length+(p?0:t.length),x=a>M?new Array(M=a-M+1).join(e):"";return p&&(m=Ta(x+m)),t+=i,n=m+y,("<"===r?t+n+x:">"===r?x+t+n:"^"===r?x.substring(0,M>>=1)+t+n+x.substring(M):t+(p?n:x+n))+h}};var Aa=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,Na=mo.map({b:function(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(n,t){return(n=mo.round(n,St(n,t))).toFixed(Math.max(0,Math.min(20,St(n*(1+1e-15),t))))}}),Ta=dt;if(Sa){var qa=Sa.length;Ta=function(n){for(var t=n.length,e=[],r=0,u=Sa[0];t>0&&u>0;)e.push(n.substring(t-=u,t+u)),u=Sa[r=(r+1)%qa];return e.reverse().join(wa)}}mo.geo={},kt.prototype={s:0,t:0,add:function(n){At(n,this.t,za),At(za.s,this.s,this),this.s?this.t+=za.t:this.s=za.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var za=new kt;mo.geo.stream=function(n,t){n&&Ca.hasOwnProperty(n.type)?Ca[n.type](n,t):Nt(n,t)};var Ca={Feature:function(n,t){Nt(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,r=-1,u=e.length;++r<u;)Nt(e[r].geometry,t)}},Da={Sphere:function(n,t){t.sphere()},Point:function(n,t){n=n.coordinates,t.point(n[0],n[1],n[2])},MultiPoint:function(n,t){for(var e=n.coordinates,r=-1,u=e.length;++r<u;)n=e[r],t.point(n[0],n[1],n[2])},LineString:function(n,t){Tt(n.coordinates,t,0)},MultiLineString:function(n,t){for(var e=n.coordinates,r=-1,u=e.length;++r<u;)Tt(e[r],t,0)},Polygon:function(n,t){qt(n.coordinates,t)},MultiPolygon:function(n,t){for(var e=n.coordinates,r=-1,u=e.length;++r<u;)qt(e[r],t)},GeometryCollection:function(n,t){for(var e=n.geometries,r=-1,u=e.length;++r<u;)Nt(e[r],t)}};mo.geo.area=function(n){return ja=0,mo.geo.stream(n,Ha),ja};var ja,La=new kt,Ha={sphere:function(){ja+=4*Bo},point:c,lineStart:c,lineEnd:c,polygonStart:function(){La.reset(),Ha.lineStart=zt},polygonEnd:function(){var n=2*La;ja+=0>n?4*Bo+n:n,Ha.lineStart=Ha.lineEnd=Ha.point=c}};mo.geo.bounds=function(){function n(n,t){M.push(x=[s=n,h=n]),f>t&&(f=t),t>g&&(g=t)}function t(t,e){var r=Ct([t*Qo,e*Qo]);if(m){var u=jt(m,r),i=[u[1],-u[0],0],o=jt(i,u);Ft(o),o=Pt(o);var c=t-p,l=c>0?1:-1,d=o[0]*na*l,v=Math.abs(c)>180;if(v^(d>l*p&&l*t>d)){var y=o[1]*na;y>g&&(g=y)}else if(d=(d+360)%360-180,v^(d>l*p&&l*t>d)){var y=-o[1]*na;f>y&&(f=y)}else f>e&&(f=e),e>g&&(g=e);v?p>t?a(s,t)>a(s,h)&&(h=t):a(t,h)>a(s,h)&&(s=t):h>=s?(s>t&&(s=t),t>h&&(h=t)):t>p?a(s,t)>a(s,h)&&(h=t):a(t,h)>a(s,h)&&(s=t)}else n(t,e);m=r,p=t}function e(){b.point=t}function r(){x[0]=s,x[1]=h,b.point=n,m=null}function u(n,e){if(m){var r=n-p;y+=Math.abs(r)>180?r+(r>0?360:-360):r}else d=n,v=e;Ha.point(n,e),t(n,e)}function i(){Ha.lineStart()}function o(){u(d,v),Ha.lineEnd(),Math.abs(y)>Go&&(s=-(h=180)),x[0]=s,x[1]=h,m=null}function a(n,t){return(t-=n)<0?t+360:t}function c(n,t){return n[0]-t[0]}function l(n,t){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:n<t[0]||t[1]<n}var s,f,h,g,p,d,v,m,y,M,x,b={point:n,lineStart:e,lineEnd:r,polygonStart:function(){b.point=u,b.lineStart=i,b.lineEnd=o,y=0,Ha.polygonStart()},polygonEnd:function(){Ha.polygonEnd(),b.point=n,b.lineStart=e,b.lineEnd=r,0>La?(s=-(h=180),f=-(g=90)):y>Go?g=90:-Go>y&&(f=-90),x[0]=s,x[1]=h}};return function(n){g=h=-(s=f=1/0),M=[],mo.geo.stream(n,b);var t=M.length;if(t){M.sort(c);for(var e,r=1,u=M[0],i=[u];t>r;++r)e=M[r],l(e[0],u)||l(e[1],u)?(a(u[0],e[1])>a(u[0],u[1])&&(u[1]=e[1]),a(e[0],u[1])>a(u[0],u[1])&&(u[0]=e[0])):i.push(u=e);for(var o,e,p=-1/0,t=i.length-1,r=0,u=i[t];t>=r;u=e,++r)e=i[r],(o=a(u[1],e[0]))>p&&(p=o,s=e[0],h=u[1])}return M=x=null,1/0===s||1/0===f?[[0/0,0/0],[0/0,0/0]]:[[s,f],[h,g]]}}(),mo.geo.centroid=function(n){Fa=Pa=Oa=Ra=Ya=Ia=Ua=Za=Va=Xa=$a=0,mo.geo.stream(n,Ba);var t=Va,e=Xa,r=$a,u=t*t+e*e+r*r;return Ko>u&&(t=Ia,e=Ua,r=Za,Go>Pa&&(t=Oa,e=Ra,r=Ya),u=t*t+e*e+r*r,Ko>u)?[0/0,0/0]:[Math.atan2(e,t)*na,O(r/Math.sqrt(u))*na]};var Fa,Pa,Oa,Ra,Ya,Ia,Ua,Za,Va,Xa,$a,Ba={sphere:c,point:Rt,lineStart:It,lineEnd:Ut,polygonStart:function(){Ba.lineStart=Zt},polygonEnd:function(){Ba.lineStart=It}},Wa=Bt(Vt,Qt,te,[-Bo,-Bo/2]),Ja=1e9;mo.geo.clipExtent=function(){var n,t,e,r,u,i,o={stream:function(n){return u&&(u.valid=!1),u=i(n),u.valid=!0,u},extent:function(a){return arguments.length?(i=re(n=+a[0][0],t=+a[0][1],e=+a[1][0],r=+a[1][1]),u&&(u.valid=!1,u=null),o):[[n,t],[e,r]]}};return o.extent([[0,0],[960,500]])},(mo.geo.conicEqualArea=function(){return oe(ae)}).raw=ae,mo.geo.albers=function(){return mo.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},mo.geo.albersUsa=function(){function n(n){var i=n[0],o=n[1];return t=null,e(i,o),t||(r(i,o),t)||u(i,o),t}var t,e,r,u,i=mo.geo.albers(),o=mo.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),a=mo.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),c={point:function(n,e){t=[n,e]}};return n.invert=function(n){var t=i.scale(),e=i.translate(),r=(n[0]-e[0])/t,u=(n[1]-e[1])/t;return(u>=.12&&.234>u&&r>=-.425&&-.214>r?o:u>=.166&&.234>u&&r>=-.214&&-.115>r?a:i).invert(n)},n.stream=function(n){var t=i.stream(n),e=o.stream(n),r=a.stream(n);return{point:function(n,u){t.point(n,u),e.point(n,u),r.point(n,u)},sphere:function(){t.sphere(),e.sphere(),r.sphere()},lineStart:function(){t.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){t.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){t.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){t.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},n.precision=function(t){return arguments.length?(i.precision(t),o.precision(t),a.precision(t),n):i.precision()},n.scale=function(t){return arguments.length?(i.scale(t),o.scale(.35*t),a.scale(t),n.translate(i.translate())):i.scale()},n.translate=function(t){if(!arguments.length)return i.translate();var l=i.scale(),s=+t[0],f=+t[1];return e=i.translate(t).clipExtent([[s-.455*l,f-.238*l],[s+.455*l,f+.238*l]]).stream(c).point,r=o.translate([s-.307*l,f+.201*l]).clipExtent([[s-.425*l+Go,f+.12*l+Go],[s-.214*l-Go,f+.234*l-Go]]).stream(c).point,u=a.translate([s-.205*l,f+.212*l]).clipExtent([[s-.214*l+Go,f+.166*l+Go],[s-.115*l-Go,f+.234*l-Go]]).stream(c).point,n},n.scale(1070)};var Ga,Ka,Qa,nc,tc,ec,rc={point:c,lineStart:c,lineEnd:c,polygonStart:function(){Ka=0,rc.lineStart=ce},polygonEnd:function(){rc.lineStart=rc.lineEnd=rc.point=c,Ga+=Math.abs(Ka/2)}},uc={point:le,lineStart:c,lineEnd:c,polygonStart:c,polygonEnd:c},ic={point:he,lineStart:ge,lineEnd:pe,polygonStart:function(){ic.lineStart=de},polygonEnd:function(){ic.point=he,ic.lineStart=ge,ic.lineEnd=pe}};mo.geo.transform=function(n){return{stream:function(t){var e=new ye(t);for(var r in n)e[r]=n[r];return e}}},ye.prototype={point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},mo.geo.path=function(){function n(n){return n&&("function"==typeof a&&i.pointRadius(+a.apply(this,arguments)),o&&o.valid||(o=u(i)),mo.geo.stream(n,o)),i.result()}function t(){return o=null,n}var e,r,u,i,o,a=4.5;return n.area=function(n){return Ga=0,mo.geo.stream(n,u(rc)),Ga},n.centroid=function(n){return Oa=Ra=Ya=Ia=Ua=Za=Va=Xa=$a=0,mo.geo.stream(n,u(ic)),$a?[Va/$a,Xa/$a]:Za?[Ia/Za,Ua/Za]:Ya?[Oa/Ya,Ra/Ya]:[0/0,0/0]},n.bounds=function(n){return tc=ec=-(Qa=nc=1/0),mo.geo.stream(n,u(uc)),[[Qa,nc],[tc,ec]]},n.projection=function(n){return arguments.length?(u=(e=n)?n.stream||Me(n):dt,t()):e},n.context=function(n){return arguments.length?(i=null==(r=n)?new se:new ve(n),"function"!=typeof a&&i.pointRadius(a),t()):r},n.pointRadius=function(t){return arguments.length?(a="function"==typeof t?t:(i.pointRadius(+t),+t),n):a},n.projection(mo.geo.albersUsa()).context(null)},mo.geo.projection=xe,mo.geo.projectionMutator=be,(mo.geo.equirectangular=function(){return xe(we)}).raw=we.invert=we,mo.geo.rotation=function(n){function t(t){return t=n(t[0]*Qo,t[1]*Qo),t[0]*=na,t[1]*=na,t}return n=Ee(n[0]%360*Qo,n[1]*Qo,n.length>2?n[2]*Qo:0),t.invert=function(t){return t=n.invert(t[0]*Qo,t[1]*Qo),t[0]*=na,t[1]*=na,t},t},Se.invert=we,mo.geo.circle=function(){function n(){var n="function"==typeof r?r.apply(this,arguments):r,t=Ee(-n[0]*Qo,-n[1]*Qo,0).invert,u=[];return e(null,null,1,{point:function(n,e){u.push(n=t(n,e)),n[0]*=na,n[1]*=na}}),{type:"Polygon",coordinates:[u]}}var t,e,r=[0,0],u=6;return n.origin=function(t){return arguments.length?(r=t,n):r},n.angle=function(r){return arguments.length?(e=Te((t=+r)*Qo,u*Qo),n):t},n.precision=function(r){return arguments.length?(e=Te(t*Qo,(u=+r)*Qo),n):u},n.angle(90)},mo.geo.distance=function(n,t){var e,r=(t[0]-n[0])*Qo,u=n[1]*Qo,i=t[1]*Qo,o=Math.sin(r),a=Math.cos(r),c=Math.sin(u),l=Math.cos(u),s=Math.sin(i),f=Math.cos(i);return Math.atan2(Math.sqrt((e=f*o)*e+(e=l*s-c*f*a)*e),c*s+l*f*a)},mo.geo.graticule=function(){function n(){return{type:"MultiLineString",coordinates:t()}}function t(){return mo.range(Math.ceil(i/v)*v,u,v).map(h).concat(mo.range(Math.ceil(l/m)*m,c,m).map(g)).concat(mo.range(Math.ceil(r/p)*p,e,p).filter(function(n){return Math.abs(n%v)>Go -}).map(s)).concat(mo.range(Math.ceil(a/d)*d,o,d).filter(function(n){return Math.abs(n%m)>Go}).map(f))}var e,r,u,i,o,a,c,l,s,f,h,g,p=10,d=p,v=90,m=360,y=2.5;return n.lines=function(){return t().map(function(n){return{type:"LineString",coordinates:n}})},n.outline=function(){return{type:"Polygon",coordinates:[h(i).concat(g(c).slice(1),h(u).reverse().slice(1),g(l).reverse().slice(1))]}},n.extent=function(t){return arguments.length?n.majorExtent(t).minorExtent(t):n.minorExtent()},n.majorExtent=function(t){return arguments.length?(i=+t[0][0],u=+t[1][0],l=+t[0][1],c=+t[1][1],i>u&&(t=i,i=u,u=t),l>c&&(t=l,l=c,c=t),n.precision(y)):[[i,l],[u,c]]},n.minorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],a=+t[0][1],o=+t[1][1],r>e&&(t=r,r=e,e=t),a>o&&(t=a,a=o,o=t),n.precision(y)):[[r,a],[e,o]]},n.step=function(t){return arguments.length?n.majorStep(t).minorStep(t):n.minorStep()},n.majorStep=function(t){return arguments.length?(v=+t[0],m=+t[1],n):[v,m]},n.minorStep=function(t){return arguments.length?(p=+t[0],d=+t[1],n):[p,d]},n.precision=function(t){return arguments.length?(y=+t,s=ze(a,o,90),f=Ce(r,e,y),h=ze(l,c,90),g=Ce(i,u,y),n):y},n.majorExtent([[-180,-90+Go],[180,90-Go]]).minorExtent([[-180,-80-Go],[180,80+Go]])},mo.geo.greatArc=function(){function n(){return{type:"LineString",coordinates:[t||r.apply(this,arguments),e||u.apply(this,arguments)]}}var t,e,r=De,u=je;return n.distance=function(){return mo.geo.distance(t||r.apply(this,arguments),e||u.apply(this,arguments))},n.source=function(e){return arguments.length?(r=e,t="function"==typeof e?null:e,n):r},n.target=function(t){return arguments.length?(u=t,e="function"==typeof t?null:t,n):u},n.precision=function(){return arguments.length?n:0},n},mo.geo.interpolate=function(n,t){return Le(n[0]*Qo,n[1]*Qo,t[0]*Qo,t[1]*Qo)},mo.geo.length=function(n){return oc=0,mo.geo.stream(n,ac),oc};var oc,ac={sphere:c,point:c,lineStart:He,lineEnd:c,polygonStart:c,polygonEnd:c},cc=Fe(function(n){return Math.sqrt(2/(1+n))},function(n){return 2*Math.asin(n/2)});(mo.geo.azimuthalEqualArea=function(){return xe(cc)}).raw=cc;var lc=Fe(function(n){var t=Math.acos(n);return t&&t/Math.sin(t)},dt);(mo.geo.azimuthalEquidistant=function(){return xe(lc)}).raw=lc,(mo.geo.conicConformal=function(){return oe(Pe)}).raw=Pe,(mo.geo.conicEquidistant=function(){return oe(Oe)}).raw=Oe;var sc=Fe(function(n){return 1/n},Math.atan);(mo.geo.gnomonic=function(){return xe(sc)}).raw=sc,Re.invert=function(n,t){return[n,2*Math.atan(Math.exp(t))-Jo]},(mo.geo.mercator=function(){return Ye(Re)}).raw=Re;var fc=Fe(function(){return 1},Math.asin);(mo.geo.orthographic=function(){return xe(fc)}).raw=fc;var hc=Fe(function(n){return 1/(1+n)},function(n){return 2*Math.atan(n)});(mo.geo.stereographic=function(){return xe(hc)}).raw=hc,Ie.invert=function(n,t){return[Math.atan2(R(n),Math.cos(t)),O(Math.sin(t)/Y(n))]},(mo.geo.transverseMercator=function(){return Ye(Ie)}).raw=Ie,mo.geom={},mo.svg={},mo.svg.line=function(){return Ue(dt)};var gc=mo.map({linear:Xe,"linear-closed":$e,step:Be,"step-before":We,"step-after":Je,basis:er,"basis-open":rr,"basis-closed":ur,bundle:ir,cardinal:Qe,"cardinal-open":Ge,"cardinal-closed":Ke,monotone:fr});gc.forEach(function(n,t){t.key=n,t.closed=/-closed$/.test(n)});var pc=[0,2/3,1/3,0],dc=[0,1/3,2/3,0],vc=[0,1/6,2/3,1/6];mo.geom.hull=function(n){function t(n){if(n.length<3)return[];var t,u,i,o,a,c,l,s,f,h,g,p,d=pt(e),v=pt(r),m=n.length,y=m-1,M=[],x=[],b=0;if(d===Ze&&r===Ve)t=n;else for(i=0,t=[];m>i;++i)t.push([+d.call(this,u=n[i],i),+v.call(this,u,i)]);for(i=1;m>i;++i)(t[i][1]<t[b][1]||t[i][1]==t[b][1]&&t[i][0]<t[b][0])&&(b=i);for(i=0;m>i;++i)i!==b&&(c=t[i][1]-t[b][1],a=t[i][0]-t[b][0],M.push({angle:Math.atan2(c,a),index:i}));for(M.sort(function(n,t){return n.angle-t.angle}),g=M[0].angle,h=M[0].index,f=0,i=1;y>i;++i){if(o=M[i].index,g==M[i].angle){if(a=t[h][0]-t[b][0],c=t[h][1]-t[b][1],l=t[o][0]-t[b][0],s=t[o][1]-t[b][1],a*a+c*c>=l*l+s*s){M[i].index=-1;continue}M[f].index=-1}g=M[i].angle,f=i,h=o}for(x.push(b),i=0,o=0;2>i;++o)M[o].index>-1&&(x.push(M[o].index),i++);for(p=x.length;y>o;++o)if(!(M[o].index<0)){for(;!hr(x[p-2],x[p-1],M[o].index,t);)--p;x[p++]=M[o].index}var _=[];for(i=p-1;i>=0;--i)_.push(n[x[i]]);return _}var e=Ze,r=Ve;return arguments.length?t(n):(t.x=function(n){return arguments.length?(e=n,t):e},t.y=function(n){return arguments.length?(r=n,t):r},t)},mo.geom.polygon=function(n){return Lo(n,mc),n};var mc=mo.geom.polygon.prototype=[];mc.area=function(){for(var n,t=-1,e=this.length,r=this[e-1],u=0;++t<e;)n=r,r=this[t],u+=n[1]*r[0]-n[0]*r[1];return.5*u},mc.centroid=function(n){var t,e,r=-1,u=this.length,i=0,o=0,a=this[u-1];for(arguments.length||(n=-1/(6*this.area()));++r<u;)t=a,a=this[r],e=t[0]*a[1]-a[0]*t[1],i+=(t[0]+a[0])*e,o+=(t[1]+a[1])*e;return[i*n,o*n]},mc.clip=function(n){for(var t,e,r,u,i,o,a=dr(n),c=-1,l=this.length-dr(this),s=this[l-1];++c<l;){for(t=n.slice(),n.length=0,u=this[c],i=t[(r=t.length-a)-1],e=-1;++e<r;)o=t[e],gr(o,s,u)?(gr(i,s,u)||n.push(pr(i,o,s,u)),n.push(o)):gr(i,s,u)&&n.push(pr(i,o,s,u)),i=o;a&&n.push(n[0]),s=u}return n},mo.geom.delaunay=function(n){var t=n.map(function(){return[]}),e=[];return vr(n,function(e){t[e.region.l.index].push(n[e.region.r.index])}),t.forEach(function(t,r){var u=n[r],i=u[0],o=u[1];t.forEach(function(n){n.angle=Math.atan2(n[0]-i,n[1]-o)}),t.sort(function(n,t){return n.angle-t.angle});for(var a=0,c=t.length-1;c>a;a++)e.push([u,t[a],t[a+1]])}),e},mo.geom.voronoi=function(n){function t(n){var t,i,o,a=n.map(function(){return[]}),c=pt(e),l=pt(r),s=n.length,f=1e6;if(c===Ze&&l===Ve)t=n;else for(t=new Array(s),o=0;s>o;++o)t[o]=[+c.call(this,i=n[o],o),+l.call(this,i,o)];if(vr(t,function(n){var t,e,r,u,i,o;1===n.a&&n.b>=0?(t=n.ep.r,e=n.ep.l):(t=n.ep.l,e=n.ep.r),1===n.a?(i=t?t.y:-f,r=n.c-n.b*i,o=e?e.y:f,u=n.c-n.b*o):(r=t?t.x:-f,i=n.c-n.a*r,u=e?e.x:f,o=n.c-n.a*u);var c=[r,i],l=[u,o];a[n.region.l.index].push(c,l),a[n.region.r.index].push(c,l)}),a=a.map(function(n,e){var r=t[e][0],u=t[e][1],i=n.map(function(n){return Math.atan2(n[0]-r,n[1]-u)}),o=mo.range(n.length).sort(function(n,t){return i[n]-i[t]});return o.filter(function(n,t){return!t||i[n]-i[o[t-1]]>Go}).map(function(t){return n[t]})}),a.forEach(function(n,e){var r=n.length;if(!r)return n.push([-f,-f],[-f,f],[f,f],[f,-f]);if(!(r>2)){var u=t[e],i=n[0],o=n[1],a=u[0],c=u[1],l=i[0],s=i[1],h=o[0],g=o[1],p=Math.abs(h-l),d=g-s;if(Math.abs(d)<Go){var v=s>c?-f:f;n.push([-f,v],[f,v])}else if(Go>p){var m=l>a?-f:f;n.push([m,-f],[m,f])}else{var v=(l-a)*(g-s)>(h-l)*(s-c)?f:-f,y=Math.abs(d)-p;Math.abs(y)<Go?n.push([0>d?v:-v,v]):(y>0&&(v*=-1),n.push([-f,v],[f,v]))}}}),u)for(o=0;s>o;++o)u.clip(a[o]);for(o=0;s>o;++o)a[o].point=n[o];return a}var e=Ze,r=Ve,u=null;return arguments.length?t(n):(t.x=function(n){return arguments.length?(e=n,t):e},t.y=function(n){return arguments.length?(r=n,t):r},t.clipExtent=function(n){if(!arguments.length)return u&&[u[0],u[2]];if(null==n)u=null;else{var e=+n[0][0],r=+n[0][1],i=+n[1][0],o=+n[1][1];u=mo.geom.polygon([[e,r],[e,o],[i,o],[i,r]])}return t},t.size=function(n){return arguments.length?t.clipExtent(n&&[[0,0],n]):u&&u[2]},t.links=function(n){var t,u,i,o=n.map(function(){return[]}),a=[],c=pt(e),l=pt(r),s=n.length;if(c===Ze&&l===Ve)t=n;else for(t=new Array(s),i=0;s>i;++i)t[i]=[+c.call(this,u=n[i],i),+l.call(this,u,i)];return vr(t,function(t){var e=t.region.l.index,r=t.region.r.index;o[e][r]||(o[e][r]=o[r][e]=!0,a.push({source:n[e],target:n[r]}))}),a},t.triangles=function(n){if(e===Ze&&r===Ve)return mo.geom.delaunay(n);for(var t,u=new Array(c),i=pt(e),o=pt(r),a=-1,c=n.length;++a<c;)(u[a]=[+i.call(this,t=n[a],a),+o.call(this,t,a)]).data=t;return mo.geom.delaunay(u).map(function(n){return n.map(function(n){return n.data})})},t)};var yc={l:"r",r:"l"};mo.geom.quadtree=function(n,t,e,r,u){function i(n){function i(n,t,e,r,u,i,o,a){if(!isNaN(e)&&!isNaN(r))if(n.leaf){var c=n.x,s=n.y;if(null!=c)if(Math.abs(c-e)+Math.abs(s-r)<.01)l(n,t,e,r,u,i,o,a);else{var f=n.point;n.x=n.y=n.point=null,l(n,f,c,s,u,i,o,a),l(n,t,e,r,u,i,o,a)}else n.x=e,n.y=r,n.point=t}else l(n,t,e,r,u,i,o,a)}function l(n,t,e,r,u,o,a,c){var l=.5*(u+a),s=.5*(o+c),f=e>=l,h=r>=s,g=(h<<1)+f;n.leaf=!1,n=n.nodes[g]||(n.nodes[g]=Mr()),f?u=l:a=l,h?o=s:c=s,i(n,t,e,r,u,o,a,c)}var s,f,h,g,p,d,v,m,y,M=pt(a),x=pt(c);if(null!=t)d=t,v=e,m=r,y=u;else if(m=y=-(d=v=1/0),f=[],h=[],p=n.length,o)for(g=0;p>g;++g)s=n[g],s.x<d&&(d=s.x),s.y<v&&(v=s.y),s.x>m&&(m=s.x),s.y>y&&(y=s.y),f.push(s.x),h.push(s.y);else for(g=0;p>g;++g){var b=+M(s=n[g],g),_=+x(s,g);d>b&&(d=b),v>_&&(v=_),b>m&&(m=b),_>y&&(y=_),f.push(b),h.push(_)}var w=m-d,S=y-v;w>S?y=v+w:m=d+S;var E=Mr();if(E.add=function(n){i(E,n,+M(n,++g),+x(n,g),d,v,m,y)},E.visit=function(n){xr(n,E,d,v,m,y)},g=-1,null==t){for(;++g<p;)i(E,n[g],f[g],h[g],d,v,m,y);--g}else n.forEach(E.add);return f=h=n=s=null,E}var o,a=Ze,c=Ve;return(o=arguments.length)?(a=mr,c=yr,3===o&&(u=e,r=t,e=t=0),i(n)):(i.x=function(n){return arguments.length?(a=n,i):a},i.y=function(n){return arguments.length?(c=n,i):c},i.extent=function(n){return arguments.length?(null==n?t=e=r=u=null:(t=+n[0][0],e=+n[0][1],r=+n[1][0],u=+n[1][1]),i):null==t?null:[[t,e],[r,u]]},i.size=function(n){return arguments.length?(null==n?t=e=r=u=null:(t=e=0,r=+n[0],u=+n[1]),i):null==t?null:[r-t,u-e]},i)},mo.interpolateRgb=br,mo.interpolateObject=_r,mo.interpolateNumber=wr,mo.interpolateString=Sr;var Mc=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g;mo.interpolate=Er,mo.interpolators=[function(n,t){var e=typeof t;return("string"===e?da.has(t)||/^(#|rgb\(|hsl\()/.test(t)?br:Sr:t instanceof Z?br:"object"===e?Array.isArray(t)?kr:_r:wr)(n,t)}],mo.interpolateArray=kr;var xc=function(){return dt},bc=mo.map({linear:xc,poly:Dr,quad:function(){return qr},cubic:function(){return zr},sin:function(){return jr},exp:function(){return Lr},circle:function(){return Hr},elastic:Fr,back:Pr,bounce:function(){return Or}}),_c=mo.map({"in":dt,out:Nr,"in-out":Tr,"out-in":function(n){return Tr(Nr(n))}});mo.ease=function(n){var t=n.indexOf("-"),e=t>=0?n.substring(0,t):n,r=t>=0?n.substring(t+1):"in";return e=bc.get(e)||xc,r=_c.get(r)||dt,Ar(r(e.apply(null,Array.prototype.slice.call(arguments,1))))},mo.interpolateHcl=Rr,mo.interpolateHsl=Yr,mo.interpolateLab=Ir,mo.interpolateRound=Ur,mo.transform=function(n){var t=xo.createElementNS(mo.ns.prefix.svg,"g");return(mo.transform=function(n){if(null!=n){t.setAttribute("transform",n);var e=t.transform.baseVal.consolidate()}return new Zr(e?e.matrix:wc)})(n)},Zr.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var wc={a:1,b:0,c:0,d:1,e:0,f:0};mo.interpolateTransform=Br,mo.layout={},mo.layout.bundle=function(){return function(n){for(var t=[],e=-1,r=n.length;++e<r;)t.push(Gr(n[e]));return t}},mo.layout.chord=function(){function n(){var n,l,f,h,g,p={},d=[],v=mo.range(i),m=[];for(e=[],r=[],n=0,h=-1;++h<i;){for(l=0,g=-1;++g<i;)l+=u[h][g];d.push(l),m.push(mo.range(i)),n+=l}for(o&&v.sort(function(n,t){return o(d[n],d[t])}),a&&m.forEach(function(n,t){n.sort(function(n,e){return a(u[t][n],u[t][e])})}),n=(Wo-s*i)/n,l=0,h=-1;++h<i;){for(f=l,g=-1;++g<i;){var y=v[h],M=m[y][g],x=u[y][M],b=l,_=l+=x*n;p[y+"-"+M]={index:y,subindex:M,startAngle:b,endAngle:_,value:x}}r[y]={index:y,startAngle:f,endAngle:l,value:(l-f)/n},l+=s}for(h=-1;++h<i;)for(g=h-1;++g<i;){var w=p[h+"-"+g],S=p[g+"-"+h];(w.value||S.value)&&e.push(w.value<S.value?{source:S,target:w}:{source:w,target:S})}c&&t()}function t(){e.sort(function(n,t){return c((n.source.value+n.target.value)/2,(t.source.value+t.target.value)/2)})}var e,r,u,i,o,a,c,l={},s=0;return l.matrix=function(n){return arguments.length?(i=(u=n)&&u.length,e=r=null,l):u},l.padding=function(n){return arguments.length?(s=n,e=r=null,l):s},l.sortGroups=function(n){return arguments.length?(o=n,e=r=null,l):o},l.sortSubgroups=function(n){return arguments.length?(a=n,e=null,l):a},l.sortChords=function(n){return arguments.length?(c=n,e&&t(),l):c},l.chords=function(){return e||n(),e},l.groups=function(){return r||n(),r},l},mo.layout.force=function(){function n(n){return function(t,e,r,u){if(t.point!==n){var i=t.cx-n.x,o=t.cy-n.y,a=1/Math.sqrt(i*i+o*o);if(d>(u-e)*a){var c=t.charge*a*a;return n.px-=i*c,n.py-=o*c,!0}if(t.point&&isFinite(a)){var c=t.pointCharge*a*a;n.px-=i*c,n.py-=o*c}}return!t.charge}}function t(n){n.px=mo.event.x,n.py=mo.event.y,a.resume()}var e,r,u,i,o,a={},c=mo.dispatch("start","tick","end"),l=[1,1],s=.9,f=Sc,h=Ec,g=-30,p=.1,d=.8,v=[],m=[];return a.tick=function(){if((r*=.99)<.005)return c.end({type:"end",alpha:r=0}),!0;var t,e,a,f,h,d,y,M,x,b=v.length,_=m.length;for(e=0;_>e;++e)a=m[e],f=a.source,h=a.target,M=h.x-f.x,x=h.y-f.y,(d=M*M+x*x)&&(d=r*i[e]*((d=Math.sqrt(d))-u[e])/d,M*=d,x*=d,h.x-=M*(y=f.weight/(h.weight+f.weight)),h.y-=x*y,f.x+=M*(y=1-y),f.y+=x*y);if((y=r*p)&&(M=l[0]/2,x=l[1]/2,e=-1,y))for(;++e<b;)a=v[e],a.x+=(M-a.x)*y,a.y+=(x-a.y)*y;if(g)for(uu(t=mo.geom.quadtree(v),r,o),e=-1;++e<b;)(a=v[e]).fixed||t.visit(n(a));for(e=-1;++e<b;)a=v[e],a.fixed?(a.x=a.px,a.y=a.py):(a.x-=(a.px-(a.px=a.x))*s,a.y-=(a.py-(a.py=a.y))*s);c.tick({type:"tick",alpha:r})},a.nodes=function(n){return arguments.length?(v=n,a):v},a.links=function(n){return arguments.length?(m=n,a):m},a.size=function(n){return arguments.length?(l=n,a):l},a.linkDistance=function(n){return arguments.length?(f="function"==typeof n?n:+n,a):f},a.distance=a.linkDistance,a.linkStrength=function(n){return arguments.length?(h="function"==typeof n?n:+n,a):h},a.friction=function(n){return arguments.length?(s=+n,a):s},a.charge=function(n){return arguments.length?(g="function"==typeof n?n:+n,a):g},a.gravity=function(n){return arguments.length?(p=+n,a):p},a.theta=function(n){return arguments.length?(d=+n,a):d},a.alpha=function(n){return arguments.length?(n=+n,r?r=n>0?n:0:n>0&&(c.start({type:"start",alpha:r=n}),mo.timer(a.tick)),a):r},a.start=function(){function n(n,r){for(var u,i=t(e),o=-1,a=i.length;++o<a;)if(!isNaN(u=i[o][n]))return u;return Math.random()*r}function t(){if(!c){for(c=[],r=0;p>r;++r)c[r]=[];for(r=0;d>r;++r){var n=m[r];c[n.source.index].push(n.target),c[n.target.index].push(n.source)}}return c[e]}var e,r,c,s,p=v.length,d=m.length,y=l[0],M=l[1];for(e=0;p>e;++e)(s=v[e]).index=e,s.weight=0;for(e=0;d>e;++e)s=m[e],"number"==typeof s.source&&(s.source=v[s.source]),"number"==typeof s.target&&(s.target=v[s.target]),++s.source.weight,++s.target.weight;for(e=0;p>e;++e)s=v[e],isNaN(s.x)&&(s.x=n("x",y)),isNaN(s.y)&&(s.y=n("y",M)),isNaN(s.px)&&(s.px=s.x),isNaN(s.py)&&(s.py=s.y);if(u=[],"function"==typeof f)for(e=0;d>e;++e)u[e]=+f.call(this,m[e],e);else for(e=0;d>e;++e)u[e]=f;if(i=[],"function"==typeof h)for(e=0;d>e;++e)i[e]=+h.call(this,m[e],e);else for(e=0;d>e;++e)i[e]=h;if(o=[],"function"==typeof g)for(e=0;p>e;++e)o[e]=+g.call(this,v[e],e);else for(e=0;p>e;++e)o[e]=g;return a.resume()},a.resume=function(){return a.alpha(.1)},a.stop=function(){return a.alpha(0)},a.drag=function(){return e||(e=mo.behavior.drag().origin(dt).on("dragstart.force",nu).on("drag.force",t).on("dragend.force",tu)),arguments.length?(this.on("mouseover.force",eu).on("mouseout.force",ru).call(e),void 0):e},mo.rebind(a,c,"on")};var Sc=20,Ec=1;mo.layout.hierarchy=function(){function n(t,o,a){var c=u.call(e,t,o);if(t.depth=o,a.push(t),c&&(l=c.length)){for(var l,s,f=-1,h=t.children=[],g=0,p=o+1;++f<l;)s=n(c[f],p,a),s.parent=t,h.push(s),g+=s.value;r&&h.sort(r),i&&(t.value=g)}else i&&(t.value=+i.call(e,t,o)||0);return t}function t(n,r){var u=n.children,o=0;if(u&&(a=u.length))for(var a,c=-1,l=r+1;++c<a;)o+=t(u[c],l);else i&&(o=+i.call(e,n,r)||0);return i&&(n.value=o),o}function e(t){var e=[];return n(t,0,e),e}var r=cu,u=ou,i=au;return e.sort=function(n){return arguments.length?(r=n,e):r},e.children=function(n){return arguments.length?(u=n,e):u},e.value=function(n){return arguments.length?(i=n,e):i},e.revalue=function(n){return t(n,0),n},e},mo.layout.partition=function(){function n(t,e,r,u){var i=t.children;if(t.x=e,t.y=t.depth*u,t.dx=r,t.dy=u,i&&(o=i.length)){var o,a,c,l=-1;for(r=t.value?r/t.value:0;++l<o;)n(a=i[l],e,c=a.value*r,u),e+=c}}function t(n){var e=n.children,r=0;if(e&&(u=e.length))for(var u,i=-1;++i<u;)r=Math.max(r,t(e[i]));return 1+r}function e(e,i){var o=r.call(this,e,i);return n(o[0],0,u[0],u[1]/t(o[0])),o}var r=mo.layout.hierarchy(),u=[1,1];return e.size=function(n){return arguments.length?(u=n,e):u},iu(e,r)},mo.layout.pie=function(){function n(i){var o=i.map(function(e,r){return+t.call(n,e,r)}),a=+("function"==typeof r?r.apply(this,arguments):r),c=(("function"==typeof u?u.apply(this,arguments):u)-a)/mo.sum(o),l=mo.range(i.length);null!=e&&l.sort(e===kc?function(n,t){return o[t]-o[n]}:function(n,t){return e(i[n],i[t])});var s=[];return l.forEach(function(n){var t;s[n]={data:i[n],value:t=o[n],startAngle:a,endAngle:a+=t*c}}),s}var t=Number,e=kc,r=0,u=Wo;return n.value=function(e){return arguments.length?(t=e,n):t},n.sort=function(t){return arguments.length?(e=t,n):e},n.startAngle=function(t){return arguments.length?(r=t,n):r},n.endAngle=function(t){return arguments.length?(u=t,n):u},n};var kc={};mo.layout.stack=function(){function n(a,c){var l=a.map(function(e,r){return t.call(n,e,r)}),s=l.map(function(t){return t.map(function(t,e){return[i.call(n,t,e),o.call(n,t,e)]})}),f=e.call(n,s,c);l=mo.permute(l,f),s=mo.permute(s,f);var h,g,p,d=r.call(n,s,c),v=l.length,m=l[0].length;for(g=0;m>g;++g)for(u.call(n,l[0][g],p=d[g],s[0][g][1]),h=1;v>h;++h)u.call(n,l[h][g],p+=s[h-1][g][1],s[h][g][1]);return a}var t=dt,e=gu,r=pu,u=hu,i=su,o=fu;return n.values=function(e){return arguments.length?(t=e,n):t},n.order=function(t){return arguments.length?(e="function"==typeof t?t:Ac.get(t)||gu,n):e},n.offset=function(t){return arguments.length?(r="function"==typeof t?t:Nc.get(t)||pu,n):r},n.x=function(t){return arguments.length?(i=t,n):i},n.y=function(t){return arguments.length?(o=t,n):o},n.out=function(t){return arguments.length?(u=t,n):u},n};var Ac=mo.map({"inside-out":function(n){var t,e,r=n.length,u=n.map(du),i=n.map(vu),o=mo.range(r).sort(function(n,t){return u[n]-u[t]}),a=0,c=0,l=[],s=[];for(t=0;r>t;++t)e=o[t],c>a?(a+=i[e],l.push(e)):(c+=i[e],s.push(e));return s.reverse().concat(l)},reverse:function(n){return mo.range(n.length).reverse()},"default":gu}),Nc=mo.map({silhouette:function(n){var t,e,r,u=n.length,i=n[0].length,o=[],a=0,c=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];r>a&&(a=r),o.push(r)}for(e=0;i>e;++e)c[e]=(a-o[e])/2;return c},wiggle:function(n){var t,e,r,u,i,o,a,c,l,s=n.length,f=n[0],h=f.length,g=[];for(g[0]=c=l=0,e=1;h>e;++e){for(t=0,u=0;s>t;++t)u+=n[t][e][1];for(t=0,i=0,a=f[e][0]-f[e-1][0];s>t;++t){for(r=0,o=(n[t][e][1]-n[t][e-1][1])/(2*a);t>r;++r)o+=(n[r][e][1]-n[r][e-1][1])/a;i+=o*n[t][e][1]}g[e]=c-=u?i/u*a:0,l>c&&(l=c)}for(e=0;h>e;++e)g[e]-=l;return g},expand:function(n){var t,e,r,u=n.length,i=n[0].length,o=1/u,a=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];if(r)for(t=0;u>t;t++)n[t][e][1]/=r;else for(t=0;u>t;t++)n[t][e][1]=o}for(e=0;i>e;++e)a[e]=0;return a},zero:pu});mo.layout.histogram=function(){function n(n,i){for(var o,a,c=[],l=n.map(e,this),s=r.call(this,l,i),f=u.call(this,s,l,i),i=-1,h=l.length,g=f.length-1,p=t?1:1/h;++i<g;)o=c[i]=[],o.dx=f[i+1]-(o.x=f[i]),o.y=0;if(g>0)for(i=-1;++i<h;)a=l[i],a>=s[0]&&a<=s[1]&&(o=c[mo.bisect(f,a,1,g)-1],o.y+=p,o.push(n[i]));return c}var t=!0,e=Number,r=xu,u=yu;return n.value=function(t){return arguments.length?(e=t,n):e},n.range=function(t){return arguments.length?(r=pt(t),n):r},n.bins=function(t){return arguments.length?(u="number"==typeof t?function(n){return Mu(n,t)}:pt(t),n):u},n.frequency=function(e){return arguments.length?(t=!!e,n):t},n},mo.layout.tree=function(){function n(n,i){function o(n,t){var r=n.children,u=n._tree;if(r&&(i=r.length)){for(var i,a,l,s=r[0],f=s,h=-1;++h<i;)l=r[h],o(l,a),f=c(l,a,f),a=l;Tu(n);var g=.5*(s._tree.prelim+l._tree.prelim);t?(u.prelim=t._tree.prelim+e(n,t),u.mod=u.prelim-g):u.prelim=g}else t&&(u.prelim=t._tree.prelim+e(n,t))}function a(n,t){n.x=n._tree.prelim+t;var e=n.children;if(e&&(r=e.length)){var r,u=-1;for(t+=n._tree.mod;++u<r;)a(e[u],t)}}function c(n,t,r){if(t){for(var u,i=n,o=n,a=t,c=n.parent.children[0],l=i._tree.mod,s=o._tree.mod,f=a._tree.mod,h=c._tree.mod;a=wu(a),i=_u(i),a&&i;)c=_u(c),o=wu(o),o._tree.ancestor=n,u=a._tree.prelim+f-i._tree.prelim-l+e(a,i),u>0&&(qu(zu(a,n,r),n,u),l+=u,s+=u),f+=a._tree.mod,l+=i._tree.mod,h+=c._tree.mod,s+=o._tree.mod;a&&!wu(o)&&(o._tree.thread=a,o._tree.mod+=f-s),i&&!_u(c)&&(c._tree.thread=i,c._tree.mod+=l-h,r=n)}return r}var l=t.call(this,n,i),s=l[0];Nu(s,function(n,t){n._tree={ancestor:n,prelim:0,mod:0,change:0,shift:0,number:t?t._tree.number+1:0}}),o(s),a(s,-s._tree.prelim);var f=Su(s,ku),h=Su(s,Eu),g=Su(s,Au),p=f.x-e(f,h)/2,d=h.x+e(h,f)/2,v=g.depth||1;return Nu(s,u?function(n){n.x*=r[0],n.y=n.depth*r[1],delete n._tree}:function(n){n.x=(n.x-p)/(d-p)*r[0],n.y=n.depth/v*r[1],delete n._tree}),l}var t=mo.layout.hierarchy().sort(null).value(null),e=bu,r=[1,1],u=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(u=null==(r=t),n):u?null:r},n.nodeSize=function(t){return arguments.length?(u=null!=(r=t),n):u?r:null},iu(n,t)},mo.layout.pack=function(){function n(n,i){var o=e.call(this,n,i),a=o[0],c=u[0],l=u[1],s=null==t?Math.sqrt:"function"==typeof t?t:function(){return t};if(a.x=a.y=0,Nu(a,function(n){n.r=+s(n.value)}),Nu(a,Hu),r){var f=r*(t?1:Math.max(2*a.r/c,2*a.r/l))/2;Nu(a,function(n){n.r+=f}),Nu(a,Hu),Nu(a,function(n){n.r-=f})}return Ou(a,c/2,l/2,t?1:1/Math.max(2*a.r/c,2*a.r/l)),o}var t,e=mo.layout.hierarchy().sort(Cu),r=0,u=[1,1];return n.size=function(t){return arguments.length?(u=t,n):u},n.radius=function(e){return arguments.length?(t=null==e||"function"==typeof e?e:+e,n):t},n.padding=function(t){return arguments.length?(r=+t,n):r},iu(n,e)},mo.layout.cluster=function(){function n(n,i){var o,a=t.call(this,n,i),c=a[0],l=0;Nu(c,function(n){var t=n.children;t&&t.length?(n.x=Iu(t),n.y=Yu(t)):(n.x=o?l+=e(n,o):0,n.y=0,o=n)});var s=Uu(c),f=Zu(c),h=s.x-e(s,f)/2,g=f.x+e(f,s)/2;return Nu(c,u?function(n){n.x=(n.x-c.x)*r[0],n.y=(c.y-n.y)*r[1]}:function(n){n.x=(n.x-h)/(g-h)*r[0],n.y=(1-(c.y?n.y/c.y:1))*r[1]}),a}var t=mo.layout.hierarchy().sort(null).value(null),e=bu,r=[1,1],u=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(u=null==(r=t),n):u?null:r},n.nodeSize=function(t){return arguments.length?(u=null!=(r=t),n):u?r:null},iu(n,t)},mo.layout.treemap=function(){function n(n,t){for(var e,r,u=-1,i=n.length;++u<i;)r=(e=n[u]).value*(0>t?0:t),e.area=isNaN(r)||0>=r?0:r}function t(e){var i=e.children;if(i&&i.length){var o,a,c,l=f(e),s=[],h=i.slice(),p=1/0,d="slice"===g?l.dx:"dice"===g?l.dy:"slice-dice"===g?1&e.depth?l.dy:l.dx:Math.min(l.dx,l.dy);for(n(h,l.dx*l.dy/e.value),s.area=0;(c=h.length)>0;)s.push(o=h[c-1]),s.area+=o.area,"squarify"!==g||(a=r(s,d))<=p?(h.pop(),p=a):(s.area-=s.pop().area,u(s,d,l,!1),d=Math.min(l.dx,l.dy),s.length=s.area=0,p=1/0);s.length&&(u(s,d,l,!0),s.length=s.area=0),i.forEach(t)}}function e(t){var r=t.children;if(r&&r.length){var i,o=f(t),a=r.slice(),c=[];for(n(a,o.dx*o.dy/t.value),c.area=0;i=a.pop();)c.push(i),c.area+=i.area,null!=i.z&&(u(c,i.z?o.dx:o.dy,o,!a.length),c.length=c.area=0);r.forEach(e)}}function r(n,t){for(var e,r=n.area,u=0,i=1/0,o=-1,a=n.length;++o<a;)(e=n[o].area)&&(i>e&&(i=e),e>u&&(u=e));return r*=r,t*=t,r?Math.max(t*u*p/r,r/(t*i*p)):1/0}function u(n,t,e,r){var u,i=-1,o=n.length,a=e.x,l=e.y,s=t?c(n.area/t):0;if(t==e.dx){for((r||s>e.dy)&&(s=e.dy);++i<o;)u=n[i],u.x=a,u.y=l,u.dy=s,a+=u.dx=Math.min(e.x+e.dx-a,s?c(u.area/s):0);u.z=!0,u.dx+=e.x+e.dx-a,e.y+=s,e.dy-=s}else{for((r||s>e.dx)&&(s=e.dx);++i<o;)u=n[i],u.x=a,u.y=l,u.dx=s,l+=u.dy=Math.min(e.y+e.dy-l,s?c(u.area/s):0);u.z=!1,u.dy+=e.y+e.dy-l,e.x+=s,e.dx-=s}}function i(r){var u=o||a(r),i=u[0];return i.x=0,i.y=0,i.dx=l[0],i.dy=l[1],o&&a.revalue(i),n([i],i.dx*i.dy/i.value),(o?e:t)(i),h&&(o=u),u}var o,a=mo.layout.hierarchy(),c=Math.round,l=[1,1],s=null,f=Vu,h=!1,g="squarify",p=.5*(1+Math.sqrt(5));return i.size=function(n){return arguments.length?(l=n,i):l},i.padding=function(n){function t(t){var e=n.call(i,t,t.depth);return null==e?Vu(t):Xu(t,"number"==typeof e?[e,e,e,e]:e)}function e(t){return Xu(t,n)}if(!arguments.length)return s;var r;return f=null==(s=n)?Vu:"function"==(r=typeof n)?t:"number"===r?(n=[n,n,n,n],e):e,i},i.round=function(n){return arguments.length?(c=n?Math.round:Number,i):c!=Number},i.sticky=function(n){return arguments.length?(h=n,o=null,i):h},i.ratio=function(n){return arguments.length?(p=n,i):p},i.mode=function(n){return arguments.length?(g=n+"",i):g},iu(i,a)},mo.random={normal:function(n,t){var e=arguments.length;return 2>e&&(t=1),1>e&&(n=0),function(){var e,r,u;do e=2*Math.random()-1,r=2*Math.random()-1,u=e*e+r*r;while(!u||u>1);return n+t*e*Math.sqrt(-2*Math.log(u)/u)}},logNormal:function(){var n=mo.random.normal.apply(mo,arguments);return function(){return Math.exp(n())}},irwinHall:function(n){return function(){for(var t=0,e=0;n>e;e++)t+=Math.random();return t/n}}},mo.scale={};var Tc={floor:dt,ceil:dt};mo.scale.linear=function(){return Qu([0,1],[0,1],Er,!1)},mo.scale.log=function(){return ii(mo.scale.linear().domain([0,1]),10,!0,[1,10])};var qc=mo.format(".0e"),zc={floor:function(n){return-Math.ceil(-n)},ceil:function(n){return-Math.floor(-n)}};mo.scale.pow=function(){return oi(mo.scale.linear(),1,[0,1])},mo.scale.sqrt=function(){return mo.scale.pow().exponent(.5)},mo.scale.ordinal=function(){return ci([],{t:"range",a:[[]]})},mo.scale.category10=function(){return mo.scale.ordinal().range(Cc)},mo.scale.category20=function(){return mo.scale.ordinal().range(Dc)},mo.scale.category20b=function(){return mo.scale.ordinal().range(jc)},mo.scale.category20c=function(){return mo.scale.ordinal().range(Lc)};var Cc=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(it),Dc=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(it),jc=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(it),Lc=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(it);mo.scale.quantile=function(){return li([],[])},mo.scale.quantize=function(){return si(0,1,[0,1])},mo.scale.threshold=function(){return fi([.5],[0,1])},mo.scale.identity=function(){return hi([0,1])},mo.svg.arc=function(){function n(){var n=t.apply(this,arguments),i=e.apply(this,arguments),o=r.apply(this,arguments)+Hc,a=u.apply(this,arguments)+Hc,c=(o>a&&(c=o,o=a,a=c),a-o),l=Bo>c?"0":"1",s=Math.cos(o),f=Math.sin(o),h=Math.cos(a),g=Math.sin(a);return c>=Fc?n?"M0,"+i+"A"+i+","+i+" 0 1,1 0,"+-i+"A"+i+","+i+" 0 1,1 0,"+i+"M0,"+n+"A"+n+","+n+" 0 1,0 0,"+-n+"A"+n+","+n+" 0 1,0 0,"+n+"Z":"M0,"+i+"A"+i+","+i+" 0 1,1 0,"+-i+"A"+i+","+i+" 0 1,1 0,"+i+"Z":n?"M"+i*s+","+i*f+"A"+i+","+i+" 0 "+l+",1 "+i*h+","+i*g+"L"+n*h+","+n*g+"A"+n+","+n+" 0 "+l+",0 "+n*s+","+n*f+"Z":"M"+i*s+","+i*f+"A"+i+","+i+" 0 "+l+",1 "+i*h+","+i*g+"L0,0"+"Z"}var t=gi,e=pi,r=di,u=vi;return n.innerRadius=function(e){return arguments.length?(t=pt(e),n):t},n.outerRadius=function(t){return arguments.length?(e=pt(t),n):e},n.startAngle=function(t){return arguments.length?(r=pt(t),n):r},n.endAngle=function(t){return arguments.length?(u=pt(t),n):u},n.centroid=function(){var n=(t.apply(this,arguments)+e.apply(this,arguments))/2,i=(r.apply(this,arguments)+u.apply(this,arguments))/2+Hc;return[Math.cos(i)*n,Math.sin(i)*n]},n};var Hc=-Jo,Fc=Wo-Go;mo.svg.line.radial=function(){var n=Ue(mi);return n.radius=n.x,delete n.x,n.angle=n.y,delete n.y,n},We.reverse=Je,Je.reverse=We,mo.svg.area=function(){return yi(dt)},mo.svg.area.radial=function(){var n=yi(mi);return n.radius=n.x,delete n.x,n.innerRadius=n.x0,delete n.x0,n.outerRadius=n.x1,delete n.x1,n.angle=n.y,delete n.y,n.startAngle=n.y0,delete n.y0,n.endAngle=n.y1,delete n.y1,n},mo.svg.chord=function(){function n(n,a){var c=t(this,i,n,a),l=t(this,o,n,a);return"M"+c.p0+r(c.r,c.p1,c.a1-c.a0)+(e(c,l)?u(c.r,c.p1,c.r,c.p0):u(c.r,c.p1,l.r,l.p0)+r(l.r,l.p1,l.a1-l.a0)+u(l.r,l.p1,c.r,c.p0))+"Z"}function t(n,t,e,r){var u=t.call(n,e,r),i=a.call(n,u,r),o=c.call(n,u,r)+Hc,s=l.call(n,u,r)+Hc;return{r:i,a0:o,a1:s,p0:[i*Math.cos(o),i*Math.sin(o)],p1:[i*Math.cos(s),i*Math.sin(s)]}}function e(n,t){return n.a0==t.a0&&n.a1==t.a1}function r(n,t,e){return"A"+n+","+n+" 0 "+ +(e>Bo)+",1 "+t}function u(n,t,e,r){return"Q 0,0 "+r}var i=De,o=je,a=Mi,c=di,l=vi;return n.radius=function(t){return arguments.length?(a=pt(t),n):a},n.source=function(t){return arguments.length?(i=pt(t),n):i},n.target=function(t){return arguments.length?(o=pt(t),n):o},n.startAngle=function(t){return arguments.length?(c=pt(t),n):c},n.endAngle=function(t){return arguments.length?(l=pt(t),n):l},n},mo.svg.diagonal=function(){function n(n,u){var i=t.call(this,n,u),o=e.call(this,n,u),a=(i.y+o.y)/2,c=[i,{x:i.x,y:a},{x:o.x,y:a},o];return c=c.map(r),"M"+c[0]+"C"+c[1]+" "+c[2]+" "+c[3]}var t=De,e=je,r=xi;return n.source=function(e){return arguments.length?(t=pt(e),n):t},n.target=function(t){return arguments.length?(e=pt(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},mo.svg.diagonal.radial=function(){var n=mo.svg.diagonal(),t=xi,e=n.projection;return n.projection=function(n){return arguments.length?e(bi(t=n)):t},n},mo.svg.symbol=function(){function n(n,r){return(Pc.get(t.call(this,n,r))||Si)(e.call(this,n,r))}var t=wi,e=_i;return n.type=function(e){return arguments.length?(t=pt(e),n):t},n.size=function(t){return arguments.length?(e=pt(t),n):e},n};var Pc=mo.map({circle:Si,cross:function(n){var t=Math.sqrt(n/5)/2;return"M"+-3*t+","+-t+"H"+-t+"V"+-3*t+"H"+t+"V"+-t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+-t+"V"+t+"H"+-3*t+"Z"},diamond:function(n){var t=Math.sqrt(n/(2*Ic)),e=t*Ic;return"M0,"+-t+"L"+e+",0"+" 0,"+t+" "+-e+",0"+"Z"},square:function(n){var t=Math.sqrt(n)/2;return"M"+-t+","+-t+"L"+t+","+-t+" "+t+","+t+" "+-t+","+t+"Z"},"triangle-down":function(n){var t=Math.sqrt(n/Yc),e=t*Yc/2;return"M0,"+e+"L"+t+","+-e+" "+-t+","+-e+"Z"},"triangle-up":function(n){var t=Math.sqrt(n/Yc),e=t*Yc/2;return"M0,"+-e+"L"+t+","+e+" "+-t+","+e+"Z"}});mo.svg.symbolTypes=Pc.keys();var Oc,Rc,Yc=Math.sqrt(3),Ic=Math.tan(30*Qo),Uc=[],Zc=0;Uc.call=Ro.call,Uc.empty=Ro.empty,Uc.node=Ro.node,Uc.size=Ro.size,mo.transition=function(n){return arguments.length?Oc?n.transition():n:Uo.transition()},mo.transition.prototype=Uc,Uc.select=function(n){var t,e,r,u=this.id,i=[];n=d(n);for(var o=-1,a=this.length;++o<a;){i.push(t=[]);for(var c=this[o],l=-1,s=c.length;++l<s;)(r=c[l])&&(e=n.call(r,r.__data__,l,o))?("__data__"in r&&(e.__data__=r.__data__),Ni(e,l,u,r.__transition__[u]),t.push(e)):t.push(null)}return Ei(i,u)},Uc.selectAll=function(n){var t,e,r,u,i,o=this.id,a=[];n=v(n);for(var c=-1,l=this.length;++c<l;)for(var s=this[c],f=-1,h=s.length;++f<h;)if(r=s[f]){i=r.__transition__[o],e=n.call(r,r.__data__,f,c),a.push(t=[]);for(var g=-1,p=e.length;++g<p;)(u=e[g])&&Ni(u,g,o,i),t.push(u)}return Ei(a,o)},Uc.filter=function(n){var t,e,r,u=[];"function"!=typeof n&&(n=k(n));for(var i=0,o=this.length;o>i;i++){u.push(t=[]);for(var e=this[i],a=0,c=e.length;c>a;a++)(r=e[a])&&n.call(r,r.__data__,a)&&t.push(r)}return Ei(u,this.id)},Uc.tween=function(n,t){var e=this.id;return arguments.length<2?this.node().__transition__[e].tween.get(n):N(this,null==t?function(t){t.__transition__[e].tween.remove(n)}:function(r){r.__transition__[e].tween.set(n,t)})},Uc.attr=function(n,t){function e(){this.removeAttribute(a)}function r(){this.removeAttributeNS(a.space,a.local)}function u(n){return null==n?e:(n+="",function(){var t,e=this.getAttribute(a);return e!==n&&(t=o(e,n),function(n){this.setAttribute(a,t(n))})})}function i(n){return null==n?r:(n+="",function(){var t,e=this.getAttributeNS(a.space,a.local);return e!==n&&(t=o(e,n),function(n){this.setAttributeNS(a.space,a.local,t(n)) -})})}if(arguments.length<2){for(t in n)this.attr(t,n[t]);return this}var o="transform"==n?Br:Er,a=mo.ns.qualify(n);return ki(this,"attr."+n,t,a.local?i:u)},Uc.attrTween=function(n,t){function e(n,e){var r=t.call(this,n,e,this.getAttribute(u));return r&&function(n){this.setAttribute(u,r(n))}}function r(n,e){var r=t.call(this,n,e,this.getAttributeNS(u.space,u.local));return r&&function(n){this.setAttributeNS(u.space,u.local,r(n))}}var u=mo.ns.qualify(n);return this.tween("attr."+n,u.local?r:e)},Uc.style=function(n,t,e){function r(){this.style.removeProperty(n)}function u(t){return null==t?r:(t+="",function(){var r,u=_o.getComputedStyle(this,null).getPropertyValue(n);return u!==t&&(r=Er(u,t),function(t){this.style.setProperty(n,r(t),e)})})}var i=arguments.length;if(3>i){if("string"!=typeof n){2>i&&(t="");for(e in n)this.style(e,n[e],t);return this}e=""}return ki(this,"style."+n,t,u)},Uc.styleTween=function(n,t,e){function r(r,u){var i=t.call(this,r,u,_o.getComputedStyle(this,null).getPropertyValue(n));return i&&function(t){this.style.setProperty(n,i(t),e)}}return arguments.length<3&&(e=""),this.tween("style."+n,r)},Uc.text=function(n){return ki(this,"text",n,Ai)},Uc.remove=function(){return this.each("end.transition",function(){var n;this.__transition__.count<2&&(n=this.parentNode)&&n.removeChild(this)})},Uc.ease=function(n){var t=this.id;return arguments.length<1?this.node().__transition__[t].ease:("function"!=typeof n&&(n=mo.ease.apply(mo,arguments)),N(this,function(e){e.__transition__[t].ease=n}))},Uc.delay=function(n){var t=this.id;return N(this,"function"==typeof n?function(e,r,u){e.__transition__[t].delay=+n.call(e,e.__data__,r,u)}:(n=+n,function(e){e.__transition__[t].delay=n}))},Uc.duration=function(n){var t=this.id;return N(this,"function"==typeof n?function(e,r,u){e.__transition__[t].duration=Math.max(1,n.call(e,e.__data__,r,u))}:(n=Math.max(1,n),function(e){e.__transition__[t].duration=n}))},Uc.each=function(n,t){var e=this.id;if(arguments.length<2){var r=Rc,u=Oc;Oc=e,N(this,function(t,r,u){Rc=t.__transition__[e],n.call(t,t.__data__,r,u)}),Rc=r,Oc=u}else N(this,function(r){var u=r.__transition__[e];(u.event||(u.event=mo.dispatch("start","end"))).on(n,t)});return this},Uc.transition=function(){for(var n,t,e,r,u=this.id,i=++Zc,o=[],a=0,c=this.length;c>a;a++){o.push(n=[]);for(var t=this[a],l=0,s=t.length;s>l;l++)(e=t[l])&&(r=Object.create(e.__transition__[u]),r.delay+=r.duration,Ni(e,l,i,r)),n.push(e)}return Ei(o,i)},mo.svg.axis=function(){function n(n){n.each(function(){var n,l=mo.select(this),s=this.__chart__||e,f=this.__chart__=e.copy(),h=null==c?f.ticks?f.ticks.apply(f,a):f.domain():c,g=null==t?f.tickFormat?f.tickFormat.apply(f,a):dt:t,p=l.selectAll(".tick").data(h,f),d=p.enter().insert("g",".domain").attr("class","tick").style("opacity",Go),v=mo.transition(p.exit()).style("opacity",Go).remove(),m=mo.transition(p).style("opacity",1),y=Bu(f),M=l.selectAll(".domain").data([0]),x=(M.enter().append("path").attr("class","domain"),mo.transition(M));d.append("line"),d.append("text");var b=d.select("line"),_=m.select("line"),w=p.select("text").text(g),S=d.select("text"),E=m.select("text");switch(r){case"bottom":n=Ti,b.attr("y2",u),S.attr("y",Math.max(u,0)+o),_.attr("x2",0).attr("y2",u),E.attr("x",0).attr("y",Math.max(u,0)+o),w.attr("dy",".71em").style("text-anchor","middle"),x.attr("d","M"+y[0]+","+i+"V0H"+y[1]+"V"+i);break;case"top":n=Ti,b.attr("y2",-u),S.attr("y",-(Math.max(u,0)+o)),_.attr("x2",0).attr("y2",-u),E.attr("x",0).attr("y",-(Math.max(u,0)+o)),w.attr("dy","0em").style("text-anchor","middle"),x.attr("d","M"+y[0]+","+-i+"V0H"+y[1]+"V"+-i);break;case"left":n=qi,b.attr("x2",-u),S.attr("x",-(Math.max(u,0)+o)),_.attr("x2",-u).attr("y2",0),E.attr("x",-(Math.max(u,0)+o)).attr("y",0),w.attr("dy",".32em").style("text-anchor","end"),x.attr("d","M"+-i+","+y[0]+"H0V"+y[1]+"H"+-i);break;case"right":n=qi,b.attr("x2",u),S.attr("x",Math.max(u,0)+o),_.attr("x2",u).attr("y2",0),E.attr("x",Math.max(u,0)+o).attr("y",0),w.attr("dy",".32em").style("text-anchor","start"),x.attr("d","M"+i+","+y[0]+"H0V"+y[1]+"H"+i)}if(f.rangeBand){var k=f.rangeBand()/2,A=function(n){return f(n)+k};d.call(n,A),m.call(n,A)}else d.call(n,s),m.call(n,f),v.call(n,f)})}var t,e=mo.scale.linear(),r=Vc,u=6,i=6,o=3,a=[10],c=null;return n.scale=function(t){return arguments.length?(e=t,n):e},n.orient=function(t){return arguments.length?(r=t in Xc?t+"":Vc,n):r},n.ticks=function(){return arguments.length?(a=arguments,n):a},n.tickValues=function(t){return arguments.length?(c=t,n):c},n.tickFormat=function(e){return arguments.length?(t=e,n):t},n.tickSize=function(t){var e=arguments.length;return e?(u=+t,i=+arguments[e-1],n):u},n.innerTickSize=function(t){return arguments.length?(u=+t,n):u},n.outerTickSize=function(t){return arguments.length?(i=+t,n):i},n.tickPadding=function(t){return arguments.length?(o=+t,n):o},n.tickSubdivide=function(){return arguments.length&&n},n};var Vc="bottom",Xc={top:1,right:1,bottom:1,left:1};mo.svg.brush=function(){function n(i){i.each(function(){var i=mo.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",u).on("touchstart.brush",u),o=i.selectAll(".background").data([0]);o.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),i.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var a=i.selectAll(".resize").data(v,dt);a.exit().remove(),a.enter().append("g").attr("class",function(n){return"resize "+n}).style("cursor",function(n){return $c[n]}).append("rect").attr("x",function(n){return/[ew]$/.test(n)?-3:null}).attr("y",function(n){return/^[ns]/.test(n)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),a.style("display",n.empty()?"none":null);var s,f=mo.transition(i),h=mo.transition(o);c&&(s=Bu(c),h.attr("x",s[0]).attr("width",s[1]-s[0]),e(f)),l&&(s=Bu(l),h.attr("y",s[0]).attr("height",s[1]-s[0]),r(f)),t(f)})}function t(n){n.selectAll(".resize").attr("transform",function(n){return"translate("+s[+/e$/.test(n)]+","+h[+/^s/.test(n)]+")"})}function e(n){n.select(".extent").attr("x",s[0]),n.selectAll(".extent,.n>rect,.s>rect").attr("width",s[1]-s[0])}function r(n){n.select(".extent").attr("y",h[0]),n.selectAll(".extent,.e>rect,.w>rect").attr("height",h[1]-h[0])}function u(){function u(){32==mo.event.keyCode&&(N||(M=null,q[0]-=s[1],q[1]-=h[1],N=2),f())}function g(){32==mo.event.keyCode&&2==N&&(q[0]+=s[1],q[1]+=h[1],N=0,f())}function v(){var n=mo.mouse(b),u=!1;x&&(n[0]+=x[0],n[1]+=x[1]),N||(mo.event.altKey?(M||(M=[(s[0]+s[1])/2,(h[0]+h[1])/2]),q[0]=s[+(n[0]<M[0])],q[1]=h[+(n[1]<M[1])]):M=null),k&&m(n,c,0)&&(e(S),u=!0),A&&m(n,l,1)&&(r(S),u=!0),u&&(t(S),w({type:"brush",mode:N?"move":"resize"}))}function m(n,t,e){var r,u,a=Bu(t),c=a[0],l=a[1],f=q[e],g=e?h:s,v=g[1]-g[0];return N&&(c-=f,l-=v+f),r=(e?d:p)?Math.max(c,Math.min(l,n[e])):n[e],N?u=(r+=f)+v:(M&&(f=Math.max(c,Math.min(l,2*M[e]-r))),r>f?(u=r,r=f):u=f),g[0]!=r||g[1]!=u?(e?o=null:i=null,g[0]=r,g[1]=u,!0):void 0}function y(){v(),S.style("pointer-events","all").selectAll(".resize").style("display",n.empty()?"none":null),mo.select("body").style("cursor",null),z.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),T(),w({type:"brushend"})}var M,x,b=this,_=mo.select(mo.event.target),w=a.of(b,arguments),S=mo.select(b),E=_.datum(),k=!/^(n|s)$/.test(E)&&c,A=!/^(e|w)$/.test(E)&&l,N=_.classed("extent"),T=L(),q=mo.mouse(b),z=mo.select(_o).on("keydown.brush",u).on("keyup.brush",g);if(mo.event.changedTouches?z.on("touchmove.brush",v).on("touchend.brush",y):z.on("mousemove.brush",v).on("mouseup.brush",y),S.interrupt().selectAll("*").interrupt(),N)q[0]=s[0]-q[0],q[1]=h[0]-q[1];else if(E){var C=+/w$/.test(E),D=+/^n/.test(E);x=[s[1-C]-q[0],h[1-D]-q[1]],q[0]=s[C],q[1]=h[D]}else mo.event.altKey&&(M=q.slice());S.style("pointer-events","none").selectAll(".resize").style("display",null),mo.select("body").style("cursor",_.style("cursor")),w({type:"brushstart"}),v()}var i,o,a=g(n,"brushstart","brush","brushend"),c=null,l=null,s=[0,0],h=[0,0],p=!0,d=!0,v=Bc[0];return n.event=function(n){n.each(function(){var n=a.of(this,arguments),t={x:s,y:h,i:i,j:o},e=this.__chart__||t;this.__chart__=t,Oc?mo.select(this).transition().each("start.brush",function(){i=e.i,o=e.j,s=e.x,h=e.y,n({type:"brushstart"})}).tween("brush:brush",function(){var e=kr(s,t.x),r=kr(h,t.y);return i=o=null,function(u){s=t.x=e(u),h=t.y=r(u),n({type:"brush",mode:"resize"})}}).each("end.brush",function(){i=t.i,o=t.j,n({type:"brush",mode:"resize"}),n({type:"brushend"})}):(n({type:"brushstart"}),n({type:"brush",mode:"resize"}),n({type:"brushend"}))})},n.x=function(t){return arguments.length?(c=t,v=Bc[!c<<1|!l],n):c},n.y=function(t){return arguments.length?(l=t,v=Bc[!c<<1|!l],n):l},n.clamp=function(t){return arguments.length?(c&&l?(p=!!t[0],d=!!t[1]):c?p=!!t:l&&(d=!!t),n):c&&l?[p,d]:c?p:l?d:null},n.extent=function(t){var e,r,u,a,f;return arguments.length?(c&&(e=t[0],r=t[1],l&&(e=e[0],r=r[0]),i=[e,r],c.invert&&(e=c(e),r=c(r)),e>r&&(f=e,e=r,r=f),(e!=s[0]||r!=s[1])&&(s=[e,r])),l&&(u=t[0],a=t[1],c&&(u=u[1],a=a[1]),o=[u,a],l.invert&&(u=l(u),a=l(a)),u>a&&(f=u,u=a,a=f),(u!=h[0]||a!=h[1])&&(h=[u,a])),n):(c&&(i?(e=i[0],r=i[1]):(e=s[0],r=s[1],c.invert&&(e=c.invert(e),r=c.invert(r)),e>r&&(f=e,e=r,r=f))),l&&(o?(u=o[0],a=o[1]):(u=h[0],a=h[1],l.invert&&(u=l.invert(u),a=l.invert(a)),u>a&&(f=u,u=a,a=f))),c&&l?[[e,u],[r,a]]:c?[e,r]:l&&[u,a])},n.clear=function(){return n.empty()||(s=[0,0],h=[0,0],i=o=null),n},n.empty=function(){return!!c&&s[0]==s[1]||!!l&&h[0]==h[1]},mo.rebind(n,a,"on")};var $c={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Bc=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],Wc=mo.time={},Jc=Date,Gc=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];zi.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){Kc.setUTCDate.apply(this._,arguments)},setDay:function(){Kc.setUTCDay.apply(this._,arguments)},setFullYear:function(){Kc.setUTCFullYear.apply(this._,arguments)},setHours:function(){Kc.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){Kc.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){Kc.setUTCMinutes.apply(this._,arguments)},setMonth:function(){Kc.setUTCMonth.apply(this._,arguments)},setSeconds:function(){Kc.setUTCSeconds.apply(this._,arguments)},setTime:function(){Kc.setTime.apply(this._,arguments)}};var Kc=Date.prototype,Qc="%a %b %e %X %Y",nl="%m/%d/%Y",tl="%H:%M:%S",el=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],rl=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],ul=["January","February","March","April","May","June","July","August","September","October","November","December"],il=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];Wc.year=Ci(function(n){return n=Wc.day(n),n.setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return n.getFullYear()}),Wc.years=Wc.year.range,Wc.years.utc=Wc.year.utc.range,Wc.day=Ci(function(n){var t=new Jc(2e3,0);return t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return n.getDate()-1}),Wc.days=Wc.day.range,Wc.days.utc=Wc.day.utc.range,Wc.dayOfYear=function(n){var t=Wc.year(n);return Math.floor((n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5)},Gc.forEach(function(n,t){n=n.toLowerCase(),t=7-t;var e=Wc[n]=Ci(function(n){return(n=Wc.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},function(n,t){n.setDate(n.getDate()+7*Math.floor(t))},function(n){var e=Wc.year(n).getDay();return Math.floor((Wc.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});Wc[n+"s"]=e.range,Wc[n+"s"].utc=e.utc.range,Wc[n+"OfYear"]=function(n){var e=Wc.year(n).getDay();return Math.floor((Wc.dayOfYear(n)+(e+t)%7)/7)}}),Wc.week=Wc.sunday,Wc.weeks=Wc.sunday.range,Wc.weeks.utc=Wc.sunday.utc.range,Wc.weekOfYear=Wc.sundayOfYear,Wc.format=ji;var ol=Hi(el),al=Fi(el),cl=Hi(rl),ll=Fi(rl),sl=Hi(ul),fl=Fi(ul),hl=Hi(il),gl=Fi(il),pl=/^%/,dl={"-":"",_:" ",0:"0"},vl={a:function(n){return rl[n.getDay()]},A:function(n){return el[n.getDay()]},b:function(n){return il[n.getMonth()]},B:function(n){return ul[n.getMonth()]},c:ji(Qc),d:function(n,t){return Pi(n.getDate(),t,2)},e:function(n,t){return Pi(n.getDate(),t,2)},H:function(n,t){return Pi(n.getHours(),t,2)},I:function(n,t){return Pi(n.getHours()%12||12,t,2)},j:function(n,t){return Pi(1+Wc.dayOfYear(n),t,3)},L:function(n,t){return Pi(n.getMilliseconds(),t,3)},m:function(n,t){return Pi(n.getMonth()+1,t,2)},M:function(n,t){return Pi(n.getMinutes(),t,2)},p:function(n){return n.getHours()>=12?"PM":"AM"},S:function(n,t){return Pi(n.getSeconds(),t,2)},U:function(n,t){return Pi(Wc.sundayOfYear(n),t,2)},w:function(n){return n.getDay()},W:function(n,t){return Pi(Wc.mondayOfYear(n),t,2)},x:ji(nl),X:ji(tl),y:function(n,t){return Pi(n.getFullYear()%100,t,2)},Y:function(n,t){return Pi(n.getFullYear()%1e4,t,4)},Z:ao,"%":function(){return"%"}},ml={a:Oi,A:Ri,b:Zi,B:Vi,c:Xi,d:no,e:no,H:eo,I:eo,j:to,L:io,m:Qi,M:ro,p:oo,S:uo,U:Ii,w:Yi,W:Ui,x:$i,X:Bi,y:Ji,Y:Wi,Z:Gi,"%":co},yl=/^\s*\d+/,Ml=mo.map({am:0,pm:1});ji.utc=lo;var xl=lo("%Y-%m-%dT%H:%M:%S.%LZ");ji.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?so:xl,so.parse=function(n){var t=new Date(n);return isNaN(t)?null:t},so.toString=xl.toString,Wc.second=Ci(function(n){return new Jc(1e3*Math.floor(n/1e3))},function(n,t){n.setTime(n.getTime()+1e3*Math.floor(t))},function(n){return n.getSeconds()}),Wc.seconds=Wc.second.range,Wc.seconds.utc=Wc.second.utc.range,Wc.minute=Ci(function(n){return new Jc(6e4*Math.floor(n/6e4))},function(n,t){n.setTime(n.getTime()+6e4*Math.floor(t))},function(n){return n.getMinutes()}),Wc.minutes=Wc.minute.range,Wc.minutes.utc=Wc.minute.utc.range,Wc.hour=Ci(function(n){var t=n.getTimezoneOffset()/60;return new Jc(36e5*(Math.floor(n/36e5-t)+t))},function(n,t){n.setTime(n.getTime()+36e5*Math.floor(t))},function(n){return n.getHours()}),Wc.hours=Wc.hour.range,Wc.hours.utc=Wc.hour.utc.range,Wc.month=Ci(function(n){return n=Wc.day(n),n.setDate(1),n},function(n,t){n.setMonth(n.getMonth()+t)},function(n){return n.getMonth()}),Wc.months=Wc.month.range,Wc.months.utc=Wc.month.utc.range;var bl=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],_l=[[Wc.second,1],[Wc.second,5],[Wc.second,15],[Wc.second,30],[Wc.minute,1],[Wc.minute,5],[Wc.minute,15],[Wc.minute,30],[Wc.hour,1],[Wc.hour,3],[Wc.hour,6],[Wc.hour,12],[Wc.day,1],[Wc.day,2],[Wc.week,1],[Wc.month,1],[Wc.month,3],[Wc.year,1]],wl=[[ji("%Y"),Vt],[ji("%B"),function(n){return n.getMonth()}],[ji("%b %d"),function(n){return 1!=n.getDate()}],[ji("%a %d"),function(n){return n.getDay()&&1!=n.getDate()}],[ji("%I %p"),function(n){return n.getHours()}],[ji("%I:%M"),function(n){return n.getMinutes()}],[ji(":%S"),function(n){return n.getSeconds()}],[ji(".%L"),function(n){return n.getMilliseconds()}]],Sl=go(wl);_l.year=Wc.year,Wc.scale=function(){return fo(mo.scale.linear(),_l,Sl)};var El={range:function(n,t,e){return mo.range(+n,+t,e).map(ho)}},kl=_l.map(function(n){return[n[0].utc,n[1]]}),Al=[[lo("%Y"),Vt],[lo("%B"),function(n){return n.getUTCMonth()}],[lo("%b %d"),function(n){return 1!=n.getUTCDate()}],[lo("%a %d"),function(n){return n.getUTCDay()&&1!=n.getUTCDate()}],[lo("%I %p"),function(n){return n.getUTCHours()}],[lo("%I:%M"),function(n){return n.getUTCMinutes()}],[lo(":%S"),function(n){return n.getUTCSeconds()}],[lo(".%L"),function(n){return n.getUTCMilliseconds()}]],Nl=go(Al);return kl.year=Wc.year.utc,Wc.scale.utc=function(){return fo(mo.scale.linear(),kl,Nl)},mo.text=vt(function(n){return n.responseText}),mo.json=function(n,t){return mt(n,"application/json",po,t)},mo.html=function(n,t){return mt(n,"text/html",vo,t)},mo.xml=vt(function(n){return n.responseXML}),mo}(); \ No newline at end of file diff --git a/assets/js/plugins/slimscroll/jquery.slimscroll.js b/assets/js/plugins/slimscroll/jquery.slimscroll.js deleted file mode 100644 index 2ea5b080..00000000 --- a/assets/js/plugins/slimscroll/jquery.slimscroll.js +++ /dev/null @@ -1,464 +0,0 @@ -/*! Copyright (c) 2011 Piotr Rochala (http://rocha.la) - * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) - * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. - * - * Version: 1.3.0 - * - */ -(function($) { - - jQuery.fn.extend({ - slimScroll: function(options) { - - var defaults = { - - // width in pixels of the visible scroll area - width : 'auto', - - // height in pixels of the visible scroll area - height : '250px', - - // width in pixels of the scrollbar and rail - size : '7px', - - // scrollbar color, accepts any hex/color value - color: '#000', - - // scrollbar position - left/right - position : 'right', - - // distance in pixels between the side edge and the scrollbar - distance : '1px', - - // default scroll position on load - top / bottom / $('selector') - start : 'top', - - // sets scrollbar opacity - opacity : .4, - - // enables always-on mode for the scrollbar - alwaysVisible : false, - - // check if we should hide the scrollbar when user is hovering over - disableFadeOut : false, - - // sets visibility of the rail - railVisible : false, - - // sets rail color - railColor : '#333', - - // sets rail opacity - railOpacity : .2, - - // whether we should use jQuery UI Draggable to enable bar dragging - railDraggable : true, - - // defautlt CSS class of the slimscroll rail - railClass : 'slimScrollRail', - - // defautlt CSS class of the slimscroll bar - barClass : 'slimScrollBar', - - // defautlt CSS class of the slimscroll wrapper - wrapperClass : 'slimScrollDiv', - - // check if mousewheel should scroll the window if we reach top/bottom - allowPageScroll : false, - - // scroll amount applied to each mouse wheel step - wheelStep : 20, - - // scroll amount applied when user is using gestures - touchScrollStep : 200, - - // sets border radius - borderRadius: '7px', - - // sets border radius of the rail - railBorderRadius : '7px' - }; - - var o = $.extend(defaults, options); - - // do it for every element that matches selector - this.each(function(){ - - var isOverPanel, isOverBar, isDragg, queueHide, touchDif, - barHeight, percentScroll, lastScroll, - divS = '<div></div>', - minBarHeight = 30, - releaseScroll = false; - - // used in event handlers and for better minification - var me = $(this); - - // ensure we are not binding it again - if (me.parent().hasClass(o.wrapperClass)) - { - // start from last bar position - var offset = me.scrollTop(); - - // find bar and rail - bar = me.parent().find('.' + o.barClass); - rail = me.parent().find('.' + o.railClass); - - getBarHeight(); - - // check if we should scroll existing instance - if ($.isPlainObject(options)) - { - // Pass height: auto to an existing slimscroll object to force a resize after contents have changed - if ( 'height' in options && options.height == 'auto' ) { - me.parent().css('height', 'auto'); - me.css('height', 'auto'); - var height = me.parent().parent().height(); - me.parent().css('height', height); - me.css('height', height); - } - - if ('scrollTo' in options) - { - // jump to a static point - offset = parseInt(o.scrollTo); - } - else if ('scrollBy' in options) - { - // jump by value pixels - offset += parseInt(o.scrollBy); - } - else if ('destroy' in options) - { - // remove slimscroll elements - bar.remove(); - rail.remove(); - me.unwrap(); - return; - } - - // scroll content by the given offset - scrollContent(offset, false, true); - } - - return; - } - - // optionally set height to the parent's height - o.height = (o.height == 'auto') ? me.parent().height() : o.height; - - // wrap content - var wrapper = $(divS) - .addClass(o.wrapperClass) - .css({ - position: 'relative', - overflow: 'hidden', - width: o.width, - height: o.height - }); - - // update style for the div - me.css({ - overflow: 'hidden', - width: o.width, - height: o.height - }); - - // create scrollbar rail - var rail = $(divS) - .addClass(o.railClass) - .css({ - width: o.size, - height: '100%', - position: 'absolute', - top: 0, - display: (o.alwaysVisible && o.railVisible) ? 'block' : 'none', - 'border-radius': o.railBorderRadius, - background: o.railColor, - opacity: o.railOpacity, - zIndex: 90 - }); - - // create scrollbar - var bar = $(divS) - .addClass(o.barClass) - .css({ - background: o.color, - width: o.size, - position: 'absolute', - top: 0, - opacity: o.opacity, - display: o.alwaysVisible ? 'block' : 'none', - 'border-radius' : o.borderRadius, - BorderRadius: o.borderRadius, - MozBorderRadius: o.borderRadius, - WebkitBorderRadius: o.borderRadius, - zIndex: 99 - }); - - // set position - var posCss = (o.position == 'right') ? { right: o.distance } : { left: o.distance }; - rail.css(posCss); - bar.css(posCss); - - // wrap it - me.wrap(wrapper); - - // append to parent div - me.parent().append(bar); - me.parent().append(rail); - - // make it draggable and no longer dependent on the jqueryUI - if (o.railDraggable){ - bar.bind("mousedown", function(e) { - var $doc = $(document); - isDragg = true; - t = parseFloat(bar.css('top')); - pageY = e.pageY; - - $doc.bind("mousemove.slimscroll", function(e){ - currTop = t + e.pageY - pageY; - bar.css('top', currTop); - scrollContent(0, bar.position().top, false);// scroll content - }); - - $doc.bind("mouseup.slimscroll", function(e) { - isDragg = false;hideBar(); - $doc.unbind('.slimscroll'); - }); - return false; - }).bind("selectstart.slimscroll", function(e){ - e.stopPropagation(); - e.preventDefault(); - return false; - }); - } - - // on rail over - rail.hover(function(){ - showBar(); - }, function(){ - hideBar(); - }); - - // on bar over - bar.hover(function(){ - isOverBar = true; - }, function(){ - isOverBar = false; - }); - - // show on parent mouseover - me.hover(function(){ - isOverPanel = true; - showBar(); - hideBar(); - }, function(){ - isOverPanel = false; - hideBar(); - }); - - // support for mobile - me.bind('touchstart', function(e,b){ - if (e.originalEvent.touches.length) - { - // record where touch started - touchDif = e.originalEvent.touches[0].pageY; - } - }); - - me.bind('touchmove', function(e){ - // prevent scrolling the page if necessary - if(!releaseScroll) - { - e.originalEvent.preventDefault(); - } - if (e.originalEvent.touches.length) - { - // see how far user swiped - var diff = (touchDif - e.originalEvent.touches[0].pageY) / o.touchScrollStep; - // scroll content - scrollContent(diff, true); - touchDif = e.originalEvent.touches[0].pageY; - } - }); - - // set up initial height - getBarHeight(); - - // check start position - if (o.start === 'bottom') - { - // scroll content to bottom - bar.css({ top: me.outerHeight() - bar.outerHeight() }); - scrollContent(0, true); - } - else if (o.start !== 'top') - { - // assume jQuery selector - scrollContent($(o.start).position().top, null, true); - - // make sure bar stays hidden - if (!o.alwaysVisible) { bar.hide(); } - } - - // attach scroll events - attachWheel(); - - function _onWheel(e) - { - // use mouse wheel only when mouse is over - if (!isOverPanel) { return; } - - var e = e || window.event; - - var delta = 0; - if (e.wheelDelta) { delta = -e.wheelDelta/120; } - if (e.detail) { delta = e.detail / 3; } - - var target = e.target || e.srcTarget || e.srcElement; - if ($(target).closest('.' + o.wrapperClass).is(me.parent())) { - // scroll content - scrollContent(delta, true); - } - - // stop window scroll - if (e.preventDefault && !releaseScroll) { e.preventDefault(); } - if (!releaseScroll) { e.returnValue = false; } - } - - function scrollContent(y, isWheel, isJump) - { - releaseScroll = false; - var delta = y; - var maxTop = me.outerHeight() - bar.outerHeight(); - - if (isWheel) - { - // move bar with mouse wheel - delta = parseInt(bar.css('top')) + y * parseInt(o.wheelStep) / 100 * bar.outerHeight(); - - // move bar, make sure it doesn't go out - delta = Math.min(Math.max(delta, 0), maxTop); - - // if scrolling down, make sure a fractional change to the - // scroll position isn't rounded away when the scrollbar's CSS is set - // this flooring of delta would happened automatically when - // bar.css is set below, but we floor here for clarity - delta = (y > 0) ? Math.ceil(delta) : Math.floor(delta); - - // scroll the scrollbar - bar.css({ top: delta + 'px' }); - } - - // calculate actual scroll amount - percentScroll = parseInt(bar.css('top')) / (me.outerHeight() - bar.outerHeight()); - delta = percentScroll * (me[0].scrollHeight - me.outerHeight()); - - if (isJump) - { - delta = y; - var offsetTop = delta / me[0].scrollHeight * me.outerHeight(); - offsetTop = Math.min(Math.max(offsetTop, 0), maxTop); - bar.css({ top: offsetTop + 'px' }); - } - - // scroll content - me.scrollTop(delta); - - // fire scrolling event - me.trigger('slimscrolling', ~~delta); - - // ensure bar is visible - showBar(); - - // trigger hide when scroll is stopped - hideBar(); - } - - function attachWheel() - { - if (window.addEventListener) - { - this.addEventListener('DOMMouseScroll', _onWheel, false ); - this.addEventListener('mousewheel', _onWheel, false ); - this.addEventListener('MozMousePixelScroll', _onWheel, false ); - } - else - { - document.attachEvent("onmousewheel", _onWheel) - } - } - - function getBarHeight() - { - // calculate scrollbar height and make sure it is not too small - barHeight = Math.max((me.outerHeight() / me[0].scrollHeight) * me.outerHeight(), minBarHeight); - bar.css({ height: barHeight + 'px' }); - - // hide scrollbar if content is not long enough - var display = barHeight == me.outerHeight() ? 'none' : 'block'; - bar.css({ display: display }); - } - - function showBar() - { - // recalculate bar height - getBarHeight(); - clearTimeout(queueHide); - - // when bar reached top or bottom - if (percentScroll == ~~percentScroll) - { - //release wheel - releaseScroll = o.allowPageScroll; - - // publish approporiate event - if (lastScroll != percentScroll) - { - var msg = (~~percentScroll == 0) ? 'top' : 'bottom'; - me.trigger('slimscroll', msg); - } - } - else - { - releaseScroll = false; - } - lastScroll = percentScroll; - - // show only when required - if(barHeight >= me.outerHeight()) { - //allow window scroll - releaseScroll = true; - return; - } - bar.stop(true,true).fadeIn('fast'); - if (o.railVisible) { rail.stop(true,true).fadeIn('fast'); } - } - - function hideBar() - { - // only hide when options allow it - if (!o.alwaysVisible) - { - queueHide = setTimeout(function(){ - if (!(o.disableFadeOut && isOverPanel) && !isOverBar && !isDragg) - { - bar.fadeOut('slow'); - rail.fadeOut('slow'); - } - }, 1000); - } - } - - }); - - // maintain chainability - return this; - } - }); - - jQuery.fn.extend({ - slimscroll: jQuery.fn.slimScroll - }); - -})(jQuery); diff --git a/assets/js/plugins/slimscroll/jquery.slimscroll.min.js b/assets/js/plugins/slimscroll/jquery.slimscroll.min.js deleted file mode 100644 index 26220d6b..00000000 --- a/assets/js/plugins/slimscroll/jquery.slimscroll.min.js +++ /dev/null @@ -1,16 +0,0 @@ -/*! Copyright (c) 2011 Piotr Rochala (http://rocha.la) - * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) - * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. - * - * Version: 1.3.0 - * - */ -(function(f){jQuery.fn.extend({slimScroll:function(h){var a=f.extend({width:"auto",height:"250px",size:"7px",color:"#000",position:"right",distance:"1px",start:"top",opacity:0.4,alwaysVisible:!1,disableFadeOut:!1,railVisible:!1,railColor:"#333",railOpacity:0.2,railDraggable:!0,railClass:"slimScrollRail",barClass:"slimScrollBar",wrapperClass:"slimScrollDiv",allowPageScroll:!1,wheelStep:20,touchScrollStep:200,borderRadius:"7px",railBorderRadius:"7px"},h);this.each(function(){function r(d){if(s){d=d|| -window.event;var c=0;d.wheelDelta&&(c=-d.wheelDelta/120);d.detail&&(c=d.detail/3);f(d.target||d.srcTarget||d.srcElement).closest("."+a.wrapperClass).is(b.parent())&&m(c,!0);d.preventDefault&&!k&&d.preventDefault();k||(d.returnValue=!1)}}function m(d,f,h){k=!1;var e=d,g=b.outerHeight()-c.outerHeight();f&&(e=parseInt(c.css("top"))+d*parseInt(a.wheelStep)/100*c.outerHeight(),e=Math.min(Math.max(e,0),g),e=0<d?Math.ceil(e):Math.floor(e),c.css({top:e+"px"}));l=parseInt(c.css("top"))/(b.outerHeight()-c.outerHeight()); -e=l*(b[0].scrollHeight-b.outerHeight());h&&(e=d,d=e/b[0].scrollHeight*b.outerHeight(),d=Math.min(Math.max(d,0),g),c.css({top:d+"px"}));b.scrollTop(e);b.trigger("slimscrolling",~~e);v();p()}function C(){window.addEventListener?(this.addEventListener("DOMMouseScroll",r,!1),this.addEventListener("mousewheel",r,!1),this.addEventListener("MozMousePixelScroll",r,!1)):document.attachEvent("onmousewheel",r)}function w(){u=Math.max(b.outerHeight()/b[0].scrollHeight*b.outerHeight(),D);c.css({height:u+"px"}); -var a=u==b.outerHeight()?"none":"block";c.css({display:a})}function v(){w();clearTimeout(A);l==~~l?(k=a.allowPageScroll,B!=l&&b.trigger("slimscroll",0==~~l?"top":"bottom")):k=!1;B=l;u>=b.outerHeight()?k=!0:(c.stop(!0,!0).fadeIn("fast"),a.railVisible&&g.stop(!0,!0).fadeIn("fast"))}function p(){a.alwaysVisible||(A=setTimeout(function(){a.disableFadeOut&&s||(x||y)||(c.fadeOut("slow"),g.fadeOut("slow"))},1E3))}var s,x,y,A,z,u,l,B,D=30,k=!1,b=f(this);if(b.parent().hasClass(a.wrapperClass)){var n=b.scrollTop(), -c=b.parent().find("."+a.barClass),g=b.parent().find("."+a.railClass);w();if(f.isPlainObject(h)){if("height"in h&&"auto"==h.height){b.parent().css("height","auto");b.css("height","auto");var q=b.parent().parent().height();b.parent().css("height",q);b.css("height",q)}if("scrollTo"in h)n=parseInt(a.scrollTo);else if("scrollBy"in h)n+=parseInt(a.scrollBy);else if("destroy"in h){c.remove();g.remove();b.unwrap();return}m(n,!1,!0)}}else{a.height="auto"==a.height?b.parent().height():a.height;n=f("<div></div>").addClass(a.wrapperClass).css({position:"relative", -overflow:"hidden",width:a.width,height:a.height});b.css({overflow:"hidden",width:a.width,height:a.height});var g=f("<div></div>").addClass(a.railClass).css({width:a.size,height:"100%",position:"absolute",top:0,display:a.alwaysVisible&&a.railVisible?"block":"none","border-radius":a.railBorderRadius,background:a.railColor,opacity:a.railOpacity,zIndex:90}),c=f("<div></div>").addClass(a.barClass).css({background:a.color,width:a.size,position:"absolute",top:0,opacity:a.opacity,display:a.alwaysVisible? -"block":"none","border-radius":a.borderRadius,BorderRadius:a.borderRadius,MozBorderRadius:a.borderRadius,WebkitBorderRadius:a.borderRadius,zIndex:99}),q="right"==a.position?{right:a.distance}:{left:a.distance};g.css(q);c.css(q);b.wrap(n);b.parent().append(c);b.parent().append(g);a.railDraggable&&c.bind("mousedown",function(a){var b=f(document);y=!0;t=parseFloat(c.css("top"));pageY=a.pageY;b.bind("mousemove.slimscroll",function(a){currTop=t+a.pageY-pageY;c.css("top",currTop);m(0,c.position().top,!1)}); -b.bind("mouseup.slimscroll",function(a){y=!1;p();b.unbind(".slimscroll")});return!1}).bind("selectstart.slimscroll",function(a){a.stopPropagation();a.preventDefault();return!1});g.hover(function(){v()},function(){p()});c.hover(function(){x=!0},function(){x=!1});b.hover(function(){s=!0;v();p()},function(){s=!1;p()});b.bind("touchstart",function(a,b){a.originalEvent.touches.length&&(z=a.originalEvent.touches[0].pageY)});b.bind("touchmove",function(b){k||b.originalEvent.preventDefault();b.originalEvent.touches.length&& -(m((z-b.originalEvent.touches[0].pageY)/a.touchScrollStep,!0),z=b.originalEvent.touches[0].pageY)});w();"bottom"===a.start?(c.css({top:b.outerHeight()-c.outerHeight()}),m(0,!0)):"top"!==a.start&&(m(f(a.start).position().top,null,!0),a.alwaysVisible||c.hide());C()}});return this}});jQuery.fn.extend({slimscroll:jQuery.fn.slimScroll})})(jQuery); \ No newline at end of file diff --git a/assets/js/plugins/sparkline/jquery.sparkline.min.js b/assets/js/plugins/sparkline/jquery.sparkline.min.js deleted file mode 100644 index dc350431..00000000 --- a/assets/js/plugins/sparkline/jquery.sparkline.min.js +++ /dev/null @@ -1,5 +0,0 @@ -/* jquery.sparkline 2.1.2 - http://omnipotent.net/jquery.sparkline/ - ** Licensed under the New BSD License - see above site for details */ - -(function(a,b,c){(function(a){typeof define=="function"&&define.amd?define(["jquery"],a):jQuery&&!jQuery.fn.sparkline&&a(jQuery)})(function(d){"use strict";var e={},f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L=0;f=function(){return{common:{type:"line",lineColor:"#00f",fillColor:"#cdf",defaultPixelsPerValue:3,width:"auto",height:"auto",composite:!1,tagValuesAttribute:"values",tagOptionsPrefix:"spark",enableTagOptions:!1,enableHighlight:!0,highlightLighten:1.4,tooltipSkipNull:!0,tooltipPrefix:"",tooltipSuffix:"",disableHiddenCheck:!1,numberFormatter:!1,numberDigitGroupCount:3,numberDigitGroupSep:",",numberDecimalMark:".",disableTooltips:!1,disableInteraction:!1},line:{spotColor:"#f80",highlightSpotColor:"#5f5",highlightLineColor:"#f22",spotRadius:1.5,minSpotColor:"#f80",maxSpotColor:"#f80",lineWidth:1,normalRangeMin:c,normalRangeMax:c,normalRangeColor:"#ccc",drawNormalOnTop:!1,chartRangeMin:c,chartRangeMax:c,chartRangeMinX:c,chartRangeMaxX:c,tooltipFormat:new h('<span style="color: {{color}}">&#9679;</span> {{prefix}}{{y}}{{suffix}}')},bar:{barColor:"#3366cc",negBarColor:"#f44",stackedBarColor:["#3366cc","#dc3912","#ff9900","#109618","#66aa00","#dd4477","#0099c6","#990099"],zeroColor:c,nullColor:c,zeroAxis:!0,barWidth:4,barSpacing:1,chartRangeMax:c,chartRangeMin:c,chartRangeClip:!1,colorMap:c,tooltipFormat:new h('<span style="color: {{color}}">&#9679;</span> {{prefix}}{{value}}{{suffix}}')},tristate:{barWidth:4,barSpacing:1,posBarColor:"#6f6",negBarColor:"#f44",zeroBarColor:"#999",colorMap:{},tooltipFormat:new h('<span style="color: {{color}}">&#9679;</span> {{value:map}}'),tooltipValueLookups:{map:{"-1":"Loss",0:"Draw",1:"Win"}}},discrete:{lineHeight:"auto",thresholdColor:c,thresholdValue:0,chartRangeMax:c,chartRangeMin:c,chartRangeClip:!1,tooltipFormat:new h("{{prefix}}{{value}}{{suffix}}")},bullet:{targetColor:"#f33",targetWidth:3,performanceColor:"#33f",rangeColors:["#d3dafe","#a8b6ff","#7f94ff"],base:c,tooltipFormat:new h("{{fieldkey:fields}} - {{value}}"),tooltipValueLookups:{fields:{r:"Range",p:"Performance",t:"Target"}}},pie:{offset:0,sliceColors:["#3366cc","#dc3912","#ff9900","#109618","#66aa00","#dd4477","#0099c6","#990099"],borderWidth:0,borderColor:"#000",tooltipFormat:new h('<span style="color: {{color}}">&#9679;</span> {{value}} ({{percent.1}}%)')},box:{raw:!1,boxLineColor:"#000",boxFillColor:"#cdf",whiskerColor:"#000",outlierLineColor:"#333",outlierFillColor:"#fff",medianColor:"#f00",showOutliers:!0,outlierIQR:1.5,spotRadius:1.5,target:c,targetColor:"#4a2",chartRangeMax:c,chartRangeMin:c,tooltipFormat:new h("{{field:fields}}: {{value}}"),tooltipFormatFieldlistKey:"field",tooltipValueLookups:{fields:{lq:"Lower Quartile",med:"Median",uq:"Upper Quartile",lo:"Left Outlier",ro:"Right Outlier",lw:"Left Whisker",rw:"Right Whisker"}}}}},E='.jqstooltip { position: absolute;left: 0px;top: 0px;visibility: hidden;background: rgb(0, 0, 0) transparent;background-color: rgba(0,0,0,0.6);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)";color: white;font: 10px arial, san serif;text-align: left;white-space: nowrap;padding: 5px;border: 1px solid white;z-index: 10000;}.jqsfield { color: white;font: 10px arial, san serif;text-align: left;}',g=function(){var a,b;return a=function(){this.init.apply(this,arguments)},arguments.length>1?(arguments[0]?(a.prototype=d.extend(new arguments[0],arguments[arguments.length-1]),a._super=arguments[0].prototype):a.prototype=arguments[arguments.length-1],arguments.length>2&&(b=Array.prototype.slice.call(arguments,1,-1),b.unshift(a.prototype),d.extend.apply(d,b))):a.prototype=arguments[0],a.prototype.cls=a,a},d.SPFormatClass=h=g({fre:/\{\{([\w.]+?)(:(.+?))?\}\}/g,precre:/(\w+)\.(\d+)/,init:function(a,b){this.format=a,this.fclass=b},render:function(a,b,d){var e=this,f=a,g,h,i,j,k;return this.format.replace(this.fre,function(){var a;return h=arguments[1],i=arguments[3],g=e.precre.exec(h),g?(k=g[2],h=g[1]):k=!1,j=f[h],j===c?"":i&&b&&b[i]?(a=b[i],a.get?b[i].get(j)||j:b[i][j]||j):(n(j)&&(d.get("numberFormatter")?j=d.get("numberFormatter")(j):j=s(j,k,d.get("numberDigitGroupCount"),d.get("numberDigitGroupSep"),d.get("numberDecimalMark"))),j)})}}),d.spformat=function(a,b){return new h(a,b)},i=function(a,b,c){return a<b?b:a>c?c:a},j=function(a,c){var d;return c===2?(d=b.floor(a.length/2),a.length%2?a[d]:(a[d-1]+a[d])/2):a.length%2?(d=(a.length*c+c)/4,d%1?(a[b.floor(d)]+a[b.floor(d)-1])/2:a[d-1]):(d=(a.length*c+2)/4,d%1?(a[b.floor(d)]+a[b.floor(d)-1])/2:a[d-1])},k=function(a){var b;switch(a){case"undefined":a=c;break;case"null":a=null;break;case"true":a=!0;break;case"false":a=!1;break;default:b=parseFloat(a),a==b&&(a=b)}return a},l=function(a){var b,c=[];for(b=a.length;b--;)c[b]=k(a[b]);return c},m=function(a,b){var c,d,e=[];for(c=0,d=a.length;c<d;c++)a[c]!==b&&e.push(a[c]);return e},n=function(a){return!isNaN(parseFloat(a))&&isFinite(a)},s=function(a,b,c,e,f){var g,h;a=(b===!1?parseFloat(a).toString():a.toFixed(b)).split(""),g=(g=d.inArray(".",a))<0?a.length:g,g<a.length&&(a[g]=f);for(h=g-c;h>0;h-=c)a.splice(h,0,e);return a.join("")},o=function(a,b,c){var d;for(d=b.length;d--;){if(c&&b[d]===null)continue;if(b[d]!==a)return!1}return!0},p=function(a){var b=0,c;for(c=a.length;c--;)b+=typeof a[c]=="number"?a[c]:0;return b},r=function(a){return d.isArray(a)?a:[a]},q=function(b){var c;a.createStyleSheet?a.createStyleSheet().cssText=b:(c=a.createElement("style"),c.type="text/css",a.getElementsByTagName("head")[0].appendChild(c),c[typeof a.body.style.WebkitAppearance=="string"?"innerText":"innerHTML"]=b)},d.fn.simpledraw=function(b,e,f,g){var h,i;if(f&&(h=this.data("_jqs_vcanvas")))return h;if(d.fn.sparkline.canvas===!1)return!1;if(d.fn.sparkline.canvas===c){var j=a.createElement("canvas");if(!j.getContext||!j.getContext("2d")){if(!a.namespaces||!!a.namespaces.v)return d.fn.sparkline.canvas=!1,!1;a.namespaces.add("v","urn:schemas-microsoft-com:vml","#default#VML"),d.fn.sparkline.canvas=function(a,b,c,d){return new J(a,b,c)}}else d.fn.sparkline.canvas=function(a,b,c,d){return new I(a,b,c,d)}}return b===c&&(b=d(this).innerWidth()),e===c&&(e=d(this).innerHeight()),h=d.fn.sparkline.canvas(b,e,this,g),i=d(this).data("_jqs_mhandler"),i&&i.registerCanvas(h),h},d.fn.cleardraw=function(){var a=this.data("_jqs_vcanvas");a&&a.reset()},d.RangeMapClass=t=g({init:function(a){var b,c,d=[];for(b in a)a.hasOwnProperty(b)&&typeof b=="string"&&b.indexOf(":")>-1&&(c=b.split(":"),c[0]=c[0].length===0?-Infinity:parseFloat(c[0]),c[1]=c[1].length===0?Infinity:parseFloat(c[1]),c[2]=a[b],d.push(c));this.map=a,this.rangelist=d||!1},get:function(a){var b=this.rangelist,d,e,f;if((f=this.map[a])!==c)return f;if(b)for(d=b.length;d--;){e=b[d];if(e[0]<=a&&e[1]>=a)return e[2]}return c}}),d.range_map=function(a){return new t(a)},u=g({init:function(a,b){var c=d(a);this.$el=c,this.options=b,this.currentPageX=0,this.currentPageY=0,this.el=a,this.splist=[],this.tooltip=null,this.over=!1,this.displayTooltips=!b.get("disableTooltips"),this.highlightEnabled=!b.get("disableHighlight")},registerSparkline:function(a){this.splist.push(a),this.over&&this.updateDisplay()},registerCanvas:function(a){var b=d(a.canvas);this.canvas=a,this.$canvas=b,b.mouseenter(d.proxy(this.mouseenter,this)),b.mouseleave(d.proxy(this.mouseleave,this)),b.click(d.proxy(this.mouseclick,this))},reset:function(a){this.splist=[],this.tooltip&&a&&(this.tooltip.remove(),this.tooltip=c)},mouseclick:function(a){var b=d.Event("sparklineClick");b.originalEvent=a,b.sparklines=this.splist,this.$el.trigger(b)},mouseenter:function(b){d(a.body).unbind("mousemove.jqs"),d(a.body).bind("mousemove.jqs",d.proxy(this.mousemove,this)),this.over=!0,this.currentPageX=b.pageX,this.currentPageY=b.pageY,this.currentEl=b.target,!this.tooltip&&this.displayTooltips&&(this.tooltip=new v(this.options),this.tooltip.updatePosition(b.pageX,b.pageY)),this.updateDisplay()},mouseleave:function(){d(a.body).unbind("mousemove.jqs");var b=this.splist,c=b.length,e=!1,f,g;this.over=!1,this.currentEl=null,this.tooltip&&(this.tooltip.remove(),this.tooltip=null);for(g=0;g<c;g++)f=b[g],f.clearRegionHighlight()&&(e=!0);e&&this.canvas.render()},mousemove:function(a){this.currentPageX=a.pageX,this.currentPageY=a.pageY,this.currentEl=a.target,this.tooltip&&this.tooltip.updatePosition(a.pageX,a.pageY),this.updateDisplay()},updateDisplay:function(){var a=this.splist,b=a.length,c=!1,e=this.$canvas.offset(),f=this.currentPageX-e.left,g=this.currentPageY-e.top,h,i,j,k,l;if(!this.over)return;for(j=0;j<b;j++)i=a[j],k=i.setRegionHighlight(this.currentEl,f,g),k&&(c=!0);if(c){l=d.Event("sparklineRegionChange"),l.sparklines=this.splist,this.$el.trigger(l);if(this.tooltip){h="";for(j=0;j<b;j++)i=a[j],h+=i.getCurrentRegionTooltip();this.tooltip.setContent(h)}this.disableHighlight||this.canvas.render()}k===null&&this.mouseleave()}}),v=g({sizeStyle:"position: static !important;display: block !important;visibility: hidden !important;float: left !important;",init:function(b){var c=b.get("tooltipClassname","jqstooltip"),e=this.sizeStyle,f;this.container=b.get("tooltipContainer")||a.body,this.tooltipOffsetX=b.get("tooltipOffsetX",10),this.tooltipOffsetY=b.get("tooltipOffsetY",12),d("#jqssizetip").remove(),d("#jqstooltip").remove(),this.sizetip=d("<div/>",{id:"jqssizetip",style:e,"class":c}),this.tooltip=d("<div/>",{id:"jqstooltip","class":c}).appendTo(this.container),f=this.tooltip.offset(),this.offsetLeft=f.left,this.offsetTop=f.top,this.hidden=!0,d(window).unbind("resize.jqs scroll.jqs"),d(window).bind("resize.jqs scroll.jqs",d.proxy(this.updateWindowDims,this)),this.updateWindowDims()},updateWindowDims:function(){this.scrollTop=d(window).scrollTop(),this.scrollLeft=d(window).scrollLeft(),this.scrollRight=this.scrollLeft+d(window).width(),this.updatePosition()},getSize:function(a){this.sizetip.html(a).appendTo(this.container),this.width=this.sizetip.width()+1,this.height=this.sizetip.height(),this.sizetip.remove()},setContent:function(a){if(!a){this.tooltip.css("visibility","hidden"),this.hidden=!0;return}this.getSize(a),this.tooltip.html(a).css({width:this.width,height:this.height,visibility:"visible"}),this.hidden&&(this.hidden=!1,this.updatePosition())},updatePosition:function(a,b){if(a===c){if(this.mousex===c)return;a=this.mousex-this.offsetLeft,b=this.mousey-this.offsetTop}else this.mousex=a-=this.offsetLeft,this.mousey=b-=this.offsetTop;if(!this.height||!this.width||this.hidden)return;b-=this.height+this.tooltipOffsetY,a+=this.tooltipOffsetX,b<this.scrollTop&&(b=this.scrollTop),a<this.scrollLeft?a=this.scrollLeft:a+this.width>this.scrollRight&&(a=this.scrollRight-this.width),this.tooltip.css({left:a,top:b})},remove:function(){this.tooltip.remove(),this.sizetip.remove(),this.sizetip=this.tooltip=c,d(window).unbind("resize.jqs scroll.jqs")}}),F=function(){q(E)},d(F),K=[],d.fn.sparkline=function(b,e){return this.each(function(){var f=new d.fn.sparkline.options(this,e),g=d(this),h,i;h=function(){var e,h,i,j,k,l,m;if(b==="html"||b===c){m=this.getAttribute(f.get("tagValuesAttribute"));if(m===c||m===null)m=g.html();e=m.replace(/(^\s*<!--)|(-->\s*$)|\s+/g,"").split(",")}else e=b;h=f.get("width")==="auto"?e.length*f.get("defaultPixelsPerValue"):f.get("width");if(f.get("height")==="auto"){if(!f.get("composite")||!d.data(this,"_jqs_vcanvas"))j=a.createElement("span"),j.innerHTML="a",g.html(j),i=d(j).innerHeight()||d(j).height(),d(j).remove(),j=null}else i=f.get("height");f.get("disableInteraction")?k=!1:(k=d.data(this,"_jqs_mhandler"),k?f.get("composite")||k.reset():(k=new u(this,f),d.data(this,"_jqs_mhandler",k)));if(f.get("composite")&&!d.data(this,"_jqs_vcanvas")){d.data(this,"_jqs_errnotify")||(alert("Attempted to attach a composite sparkline to an element with no existing sparkline"),d.data(this,"_jqs_errnotify",!0));return}l=new(d.fn.sparkline[f.get("type")])(this,e,f,h,i),l.render(),k&&k.registerSparkline(l)};if(d(this).html()&&!f.get("disableHiddenCheck")&&d(this).is(":hidden")||!d(this).parents("body").length){if(!f.get("composite")&&d.data(this,"_jqs_pending"))for(i=K.length;i;i--)K[i-1][0]==this&&K.splice(i-1,1);K.push([this,h]),d.data(this,"_jqs_pending",!0)}else h.call(this)})},d.fn.sparkline.defaults=f(),d.sparkline_display_visible=function(){var a,b,c,e=[];for(b=0,c=K.length;b<c;b++)a=K[b][0],d(a).is(":visible")&&!d(a).parents().is(":hidden")?(K[b][1].call(a),d.data(K[b][0],"_jqs_pending",!1),e.push(b)):!d(a).closest("html").length&&!d.data(a,"_jqs_pending")&&(d.data(K[b][0],"_jqs_pending",!1),e.push(b));for(b=e.length;b;b--)K.splice(e[b-1],1)},d.fn.sparkline.options=g({init:function(a,b){var c,f,g,h;this.userOptions=b=b||{},this.tag=a,this.tagValCache={},f=d.fn.sparkline.defaults,g=f.common,this.tagOptionsPrefix=b.enableTagOptions&&(b.tagOptionsPrefix||g.tagOptionsPrefix),h=this.getTagSetting("type"),h===e?c=f[b.type||g.type]:c=f[h],this.mergedOptions=d.extend({},g,c,b)},getTagSetting:function(a){var b=this.tagOptionsPrefix,d,f,g,h;if(b===!1||b===c)return e;if(this.tagValCache.hasOwnProperty(a))d=this.tagValCache.key;else{d=this.tag.getAttribute(b+a);if(d===c||d===null)d=e;else if(d.substr(0,1)==="["){d=d.substr(1,d.length-2).split(",");for(f=d.length;f--;)d[f]=k(d[f].replace(/(^\s*)|(\s*$)/g,""))}else if(d.substr(0,1)==="{"){g=d.substr(1,d.length-2).split(","),d={};for(f=g.length;f--;)h=g[f].split(":",2),d[h[0].replace(/(^\s*)|(\s*$)/g,"")]=k(h[1].replace(/(^\s*)|(\s*$)/g,""))}else d=k(d);this.tagValCache.key=d}return d},get:function(a,b){var d=this.getTagSetting(a),f;return d!==e?d:(f=this.mergedOptions[a])===c?b:f}}),d.fn.sparkline._base=g({disabled:!1,init:function(a,b,e,f,g){this.el=a,this.$el=d(a),this.values=b,this.options=e,this.width=f,this.height=g,this.currentRegion=c},initTarget:function(){var a=!this.options.get("disableInteraction");(this.target=this.$el.simpledraw(this.width,this.height,this.options.get("composite"),a))?(this.canvasWidth=this.target.pixelWidth,this.canvasHeight=this.target.pixelHeight):this.disabled=!0},render:function(){return this.disabled?(this.el.innerHTML="",!1):!0},getRegion:function(a,b){},setRegionHighlight:function(a,b,d){var e=this.currentRegion,f=!this.options.get("disableHighlight"),g;return b>this.canvasWidth||d>this.canvasHeight||b<0||d<0?null:(g=this.getRegion(a,b,d),e!==g?(e!==c&&f&&this.removeHighlight(),this.currentRegion=g,g!==c&&f&&this.renderHighlight(),!0):!1)},clearRegionHighlight:function(){return this.currentRegion!==c?(this.removeHighlight(),this.currentRegion=c,!0):!1},renderHighlight:function(){this.changeHighlight(!0)},removeHighlight:function(){this.changeHighlight(!1)},changeHighlight:function(a){},getCurrentRegionTooltip:function(){var a=this.options,b="",e=[],f,g,i,j,k,l,m,n,o,p,q,r,s,t;if(this.currentRegion===c)return"";f=this.getCurrentRegionFields(),q=a.get("tooltipFormatter");if(q)return q(this,a,f);a.get("tooltipChartTitle")&&(b+='<div class="jqs jqstitle">'+a.get("tooltipChartTitle")+"</div>\n"),g=this.options.get("tooltipFormat");if(!g)return"";d.isArray(g)||(g=[g]),d.isArray(f)||(f=[f]),m=this.options.get("tooltipFormatFieldlist"),n=this.options.get("tooltipFormatFieldlistKey");if(m&&n){o=[];for(l=f.length;l--;)p=f[l][n],(t=d.inArray(p,m))!=-1&&(o[t]=f[l]);f=o}i=g.length,s=f.length;for(l=0;l<i;l++){r=g[l],typeof r=="string"&&(r=new h(r)),j=r.fclass||"jqsfield";for(t=0;t<s;t++)if(!f[t].isNull||!a.get("tooltipSkipNull"))d.extend(f[t],{prefix:a.get("tooltipPrefix"),suffix:a.get("tooltipSuffix")}),k=r.render(f[t],a.get("tooltipValueLookups"),a),e.push('<div class="'+j+'">'+k+"</div>")}return e.length?b+e.join("\n"):""},getCurrentRegionFields:function(){},calcHighlightColor:function(a,c){var d=c.get("highlightColor"),e=c.get("highlightLighten"),f,g,h,j;if(d)return d;if(e){f=/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(a)||/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(a);if(f){h=[],g=a.length===4?16:1;for(j=0;j<3;j++)h[j]=i(b.round(parseInt(f[j+1],16)*g*e),0,255);return"rgb("+h.join(",")+")"}}return a}}),w={changeHighlight:function(a){var b=this.currentRegion,c=this.target,e=this.regionShapes[b],f;e&&(f=this.renderRegion(b,a),d.isArray(f)||d.isArray(e)?(c.replaceWithShapes(e,f),this.regionShapes[b]=d.map(f,function(a){return a.id})):(c.replaceWithShape(e,f),this.regionShapes[b]=f.id))},render:function(){var a=this.values,b=this.target,c=this.regionShapes,e,f,g,h;if(!this.cls._super.render.call(this))return;for(g=a.length;g--;){e=this.renderRegion(g);if(e)if(d.isArray(e)){f=[];for(h=e.length;h--;)e[h].append(),f.push(e[h].id);c[g]=f}else e.append(),c[g]=e.id;else c[g]=null}b.render()}},d.fn.sparkline.line=x=g(d.fn.sparkline._base,{type:"line",init:function(a,b,c,d,e){x._super.init.call(this,a,b,c,d,e),this.vertices=[],this.regionMap=[],this.xvalues=[],this.yvalues=[],this.yminmax=[],this.hightlightSpotId=null,this.lastShapeId=null,this.initTarget()},getRegion:function(a,b,d){var e,f=this.regionMap;for(e=f.length;e--;)if(f[e]!==null&&b>=f[e][0]&&b<=f[e][1])return f[e][2];return c},getCurrentRegionFields:function(){var a=this.currentRegion;return{isNull:this.yvalues[a]===null,x:this.xvalues[a],y:this.yvalues[a],color:this.options.get("lineColor"),fillColor:this.options.get("fillColor"),offset:a}},renderHighlight:function(){var a=this.currentRegion,b=this.target,d=this.vertices[a],e=this.options,f=e.get("spotRadius"),g=e.get("highlightSpotColor"),h=e.get("highlightLineColor"),i,j;if(!d)return;f&&g&&(i=b.drawCircle(d[0],d[1],f,c,g),this.highlightSpotId=i.id,b.insertAfterShape(this.lastShapeId,i)),h&&(j=b.drawLine(d[0],this.canvasTop,d[0],this.canvasTop+this.canvasHeight,h),this.highlightLineId=j.id,b.insertAfterShape(this.lastShapeId,j))},removeHighlight:function(){var a=this.target;this.highlightSpotId&&(a.removeShapeId(this.highlightSpotId),this.highlightSpotId=null),this.highlightLineId&&(a.removeShapeId(this.highlightLineId),this.highlightLineId=null)},scanValues:function(){var a=this.values,c=a.length,d=this.xvalues,e=this.yvalues,f=this.yminmax,g,h,i,j,k;for(g=0;g<c;g++)h=a[g],i=typeof a[g]=="string",j=typeof a[g]=="object"&&a[g]instanceof Array,k=i&&a[g].split(":"),i&&k.length===2?(d.push(Number(k[0])),e.push(Number(k[1])),f.push(Number(k[1]))):j?(d.push(h[0]),e.push(h[1]),f.push(h[1])):(d.push(g),a[g]===null||a[g]==="null"?e.push(null):(e.push(Number(h)),f.push(Number(h))));this.options.get("xvalues")&&(d=this.options.get("xvalues")),this.maxy=this.maxyorg=b.max.apply(b,f),this.miny=this.minyorg=b.min.apply(b,f),this.maxx=b.max.apply(b,d),this.minx=b.min.apply(b,d),this.xvalues=d,this.yvalues=e,this.yminmax=f},processRangeOptions:function(){var a=this.options,b=a.get("normalRangeMin"),d=a.get("normalRangeMax");b!==c&&(b<this.miny&&(this.miny=b),d>this.maxy&&(this.maxy=d)),a.get("chartRangeMin")!==c&&(a.get("chartRangeClip")||a.get("chartRangeMin")<this.miny)&&(this.miny=a.get("chartRangeMin")),a.get("chartRangeMax")!==c&&(a.get("chartRangeClip")||a.get("chartRangeMax")>this.maxy)&&(this.maxy=a.get("chartRangeMax")),a.get("chartRangeMinX")!==c&&(a.get("chartRangeClipX")||a.get("chartRangeMinX")<this.minx)&&(this.minx=a.get("chartRangeMinX")),a.get("chartRangeMaxX")!==c&&(a.get("chartRangeClipX")||a.get("chartRangeMaxX")>this.maxx)&&(this.maxx=a.get("chartRangeMaxX"))},drawNormalRange:function(a,d,e,f,g){var h=this.options.get("normalRangeMin"),i=this.options.get("normalRangeMax"),j=d+b.round(e-e*((i-this.miny)/g)),k=b.round(e*(i-h)/g);this.target.drawRect(a,j,f,k,c,this.options.get("normalRangeColor")).append()},render:function(){var a=this.options,e=this.target,f=this.canvasWidth,g=this.canvasHeight,h=this.vertices,i=a.get("spotRadius"),j=this.regionMap,k,l,m,n,o,p,q,r,s,u,v,w,y,z,A,B,C,D,E,F,G,H,I,J,K;if(!x._super.render.call(this))return;this.scanValues(),this.processRangeOptions(),I=this.xvalues,J=this.yvalues;if(!this.yminmax.length||this.yvalues.length<2)return;n=o=0,k=this.maxx-this.minx===0?1:this.maxx-this.minx,l=this.maxy-this.miny===0?1:this.maxy-this.miny,m=this.yvalues.length-1,i&&(f<i*4||g<i*4)&&(i=0);if(i){G=a.get("highlightSpotColor")&&!a.get("disableInteraction");if(G||a.get("minSpotColor")||a.get("spotColor")&&J[m]===this.miny)g-=b.ceil(i);if(G||a.get("maxSpotColor")||a.get("spotColor")&&J[m]===this.maxy)g-=b.ceil(i),n+=b.ceil(i);if(G||(a.get("minSpotColor")||a.get("maxSpotColor"))&&(J[0]===this.miny||J[0]===this.maxy))o+=b.ceil(i),f-=b.ceil(i);if(G||a.get("spotColor")||a.get("minSpotColor")||a.get("maxSpotColor")&&(J[m]===this.miny||J[m]===this.maxy))f-=b.ceil(i)}g--,a.get("normalRangeMin")!==c&&!a.get("drawNormalOnTop")&&this.drawNormalRange(o,n,g,f,l),q=[],r=[q],z=A=null,B=J.length;for(K=0;K<B;K++)s=I[K],v=I[K+1],u=J[K],w=o+b.round((s-this.minx)*(f/k)),y=K<B-1?o+b.round((v-this.minx)*(f/k)):f,A=w+(y-w)/2,j[K]=[z||0,A,K],z=A,u===null?K&&(J[K-1]!==null&&(q=[],r.push(q)),h.push(null)):(u<this.miny&&(u=this.miny),u>this.maxy&&(u=this.maxy),q.length||q.push([w,n+g]),p=[w,n+b.round(g-g*((u-this.miny)/l))],q.push(p),h.push(p));C=[],D=[],E=r.length;for(K=0;K<E;K++)q=r[K],q.length&&(a.get("fillColor")&&(q.push([q[q.length-1][0],n+g]),D.push(q.slice(0)),q.pop()),q.length>2&&(q[0]=[q[0][0],q[1][1]]),C.push(q));E=D.length;for(K=0;K<E;K++)e.drawShape(D[K],a.get("fillColor"),a.get("fillColor")).append();a.get("normalRangeMin")!==c&&a.get("drawNormalOnTop")&&this.drawNormalRange(o,n,g,f,l),E=C.length;for(K=0;K<E;K++)e.drawShape(C[K],a.get("lineColor"),c,a.get("lineWidth")).append();if(i&&a.get("valueSpots")){F=a.get("valueSpots"),F.get===c&&(F=new t(F));for(K=0;K<B;K++)H=F.get(J[K]),H&&e.drawCircle(o+b.round((I[K]-this.minx)*(f/k)),n+b.round(g-g*((J[K]-this.miny)/l)),i,c,H).append()}i&&a.get("spotColor")&&J[m]!==null&&e.drawCircle(o+b.round((I[I.length-1]-this.minx)*(f/k)),n+b.round(g-g*((J[m]-this.miny)/l)),i,c,a.get("spotColor")).append(),this.maxy!==this.minyorg&&(i&&a.get("minSpotColor")&&(s=I[d.inArray(this.minyorg,J)],e.drawCircle(o+b.round((s-this.minx)*(f/k)),n+b.round(g-g*((this.minyorg-this.miny)/l)),i,c,a.get("minSpotColor")).append()),i&&a.get("maxSpotColor")&&(s=I[d.inArray(this.maxyorg,J)],e.drawCircle(o+b.round((s-this.minx)*(f/k)),n+b.round(g-g*((this.maxyorg-this.miny)/l)),i,c,a.get("maxSpotColor")).append())),this.lastShapeId=e.getLastShapeId(),this.canvasTop=n,e.render()}}),d.fn.sparkline.bar=y=g(d.fn.sparkline._base,w,{type:"bar",init:function(a,e,f,g,h){var j=parseInt(f.get("barWidth"),10),n=parseInt(f.get("barSpacing"),10),o=f.get("chartRangeMin"),p=f.get("chartRangeMax"),q=f.get("chartRangeClip"),r=Infinity,s=-Infinity,u,v,w,x,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R;y._super.init.call(this,a,e,f,g,h);for(A=0,B=e.length;A<B;A++){O=e[A],u=typeof O=="string"&&O.indexOf(":")>-1;if(u||d.isArray(O))J=!0,u&&(O=e[A]=l(O.split(":"))),O=m(O,null),v=b.min.apply(b,O),w=b.max.apply(b,O),v<r&&(r=v),w>s&&(s=w)}this.stacked=J,this.regionShapes={},this.barWidth=j,this.barSpacing=n,this.totalBarWidth=j+n,this.width=g=e.length*j+(e.length-1)*n,this.initTarget(),q&&(H=o===c?-Infinity:o,I=p===c?Infinity:p),z=[],x=J?[]:z;var S=[],T=[];for(A=0,B=e.length;A<B;A++)if(J){K=e[A],e[A]=N=[],S[A]=0,x[A]=T[A]=0;for(L=0,M=K.length;L<M;L++)O=N[L]=q?i(K[L],H,I):K[L],O!==null&&(O>0&&(S[A]+=O),r<0&&s>0?O<0?T[A]+=b.abs(O):x[A]+=O:x[A]+=b.abs(O-(O<0?s:r)),z.push(O))}else O=q?i(e[A],H,I):e[A],O=e[A]=k(O),O!==null&&z.push(O);this.max=G=b.max.apply(b,z),this.min=F=b.min.apply(b,z),this.stackMax=s=J?b.max.apply(b,S):G,this.stackMin=r=J?b.min.apply(b,z):F,f.get("chartRangeMin")!==c&&(f.get("chartRangeClip")||f.get("chartRangeMin")<F)&&(F=f.get("chartRangeMin")),f.get("chartRangeMax")!==c&&(f.get("chartRangeClip")||f.get("chartRangeMax")>G)&&(G=f.get("chartRangeMax")),this.zeroAxis=D=f.get("zeroAxis",!0),F<=0&&G>=0&&D?E=0:D==0?E=F:F>0?E=F:E=G,this.xaxisOffset=E,C=J?b.max.apply(b,x)+b.max.apply(b,T):G-F,this.canvasHeightEf=D&&F<0?this.canvasHeight-2:this.canvasHeight-1,F<E?(Q=J&&G>=0?s:G,P=(Q-E)/C*this.canvasHeight,P!==b.ceil(P)&&(this.canvasHeightEf-=2,P=b.ceil(P))):P=this.canvasHeight,this.yoffset=P,d.isArray(f.get("colorMap"))?(this.colorMapByIndex=f.get("colorMap"),this.colorMapByValue=null):(this.colorMapByIndex=null,this.colorMapByValue=f.get("colorMap"),this.colorMapByValue&&this.colorMapByValue.get===c&&(this.colorMapByValue=new t(this.colorMapByValue))),this.range=C},getRegion:function(a,d,e){var f=b.floor(d/this.totalBarWidth);return f<0||f>=this.values.length?c:f},getCurrentRegionFields:function(){var a=this.currentRegion,b=r(this.values[a]),c=[],d,e;for(e=b.length;e--;)d=b[e],c.push({isNull:d===null,value:d,color:this.calcColor(e,d,a),offset:a});return c},calcColor:function(a,b,e){var f=this.colorMapByIndex,g=this.colorMapByValue,h=this.options,i,j;return this.stacked?i=h.get("stackedBarColor"):i=b<0?h.get("negBarColor"):h.get("barColor"),b===0&&h.get("zeroColor")!==c&&(i=h.get("zeroColor")),g&&(j=g.get(b))?i=j:f&&f.length>e&&(i=f[e]),d.isArray(i)?i[a%i.length]:i},renderRegion:function(a,e){var f=this.values[a],g=this.options,h=this.xaxisOffset,i=[],j=this.range,k=this.stacked,l=this.target,m=a*this.totalBarWidth,n=this.canvasHeightEf,p=this.yoffset,q,r,s,t,u,v,w,x,y,z;f=d.isArray(f)?f:[f],w=f.length,x=f[0],t=o(null,f),z=o(h,f,!0);if(t)return g.get("nullColor")?(s=e?g.get("nullColor"):this.calcHighlightColor(g.get("nullColor"),g),q=p>0?p-1:p,l.drawRect(m,q,this.barWidth-1,0,s,s)):c;u=p;for(v=0;v<w;v++){x=f[v];if(k&&x===h){if(!z||y)continue;y=!0}j>0?r=b.floor(n*(b.abs(x-h)/j))+1:r=1,x<h||x===h&&p===0?(q=u,u+=r):(q=p-r,p-=r),s=this.calcColor(v,x,a),e&&(s=this.calcHighlightColor(s,g)),i.push(l.drawRect(m,q,this.barWidth-1,r-1,s,s))}return i.length===1?i[0]:i}}),d.fn.sparkline.tristate=z=g(d.fn.sparkline._base,w,{type:"tristate",init:function(a,b,e,f,g){var h=parseInt(e.get("barWidth"),10),i=parseInt(e.get("barSpacing"),10);z._super.init.call(this,a,b,e,f,g),this.regionShapes={},this.barWidth=h,this.barSpacing=i,this.totalBarWidth=h+i,this.values=d.map(b,Number),this.width=f=b.length*h+(b.length-1)*i,d.isArray(e.get("colorMap"))?(this.colorMapByIndex=e.get("colorMap"),this.colorMapByValue=null):(this.colorMapByIndex=null,this.colorMapByValue=e.get("colorMap"),this.colorMapByValue&&this.colorMapByValue.get===c&&(this.colorMapByValue=new t(this.colorMapByValue))),this.initTarget()},getRegion:function(a,c,d){return b.floor(c/this.totalBarWidth)},getCurrentRegionFields:function(){var a=this.currentRegion;return{isNull:this.values[a]===c,value:this.values[a],color:this.calcColor(this.values[a],a),offset:a}},calcColor:function(a,b){var c=this.values,d=this.options,e=this.colorMapByIndex,f=this.colorMapByValue,g,h;return f&&(h=f.get(a))?g=h:e&&e.length>b?g=e[b]:c[b]<0?g=d.get("negBarColor"):c[b]>0?g=d.get("posBarColor"):g=d.get("zeroBarColor"),g},renderRegion:function(a,c){var d=this.values,e=this.options,f=this.target,g,h,i,j,k,l;g=f.pixelHeight,i=b.round(g/2),j=a*this.totalBarWidth,d[a]<0?(k=i,h=i-1):d[a]>0?(k=0,h=i-1):(k=i-1,h=2),l=this.calcColor(d[a],a);if(l===null)return;return c&&(l=this.calcHighlightColor(l,e)),f.drawRect(j,k,this.barWidth-1,h-1,l,l)}}),d.fn.sparkline.discrete=A=g(d.fn.sparkline._base,w,{type:"discrete",init:function(a,e,f,g,h){A._super.init.call(this,a,e,f,g,h),this.regionShapes={},this.values=e=d.map(e,Number),this.min=b.min.apply(b,e),this.max=b.max.apply(b,e),this.range=this.max-this.min,this.width=g=f.get("width")==="auto"?e.length*2:this.width,this.interval=b.floor(g/e.length),this.itemWidth=g/e.length,f.get("chartRangeMin")!==c&&(f.get("chartRangeClip")||f.get("chartRangeMin")<this.min)&&(this.min=f.get("chartRangeMin")),f.get("chartRangeMax")!==c&&(f.get("chartRangeClip")||f.get("chartRangeMax")>this.max)&&(this.max=f.get("chartRangeMax")),this.initTarget(),this.target&&(this.lineHeight=f.get("lineHeight")==="auto"?b.round(this.canvasHeight*.3):f.get("lineHeight"))},getRegion:function(a,c,d){return b.floor(c/this.itemWidth)},getCurrentRegionFields:function(){var a=this.currentRegion;return{isNull:this.values[a]===c,value:this.values[a],offset:a}},renderRegion:function(a,c){var d=this.values,e=this.options,f=this.min,g=this.max,h=this.range,j=this.interval,k=this.target,l=this.canvasHeight,m=this.lineHeight,n=l-m,o,p,q,r;return p=i(d[a],f,g),r=a*j,o=b.round(n-n*((p-f)/h)),q=e.get("thresholdColor")&&p<e.get("thresholdValue")?e.get("thresholdColor"):e.get("lineColor"),c&&(q=this.calcHighlightColor(q,e)),k.drawLine(r,o,r,o+m,q)}}),d.fn.sparkline.bullet=B=g(d.fn.sparkline._base,{type:"bullet",init:function(a,d,e,f,g){var h,i,j;B._super.init.call(this,a,d,e,f,g),this.values=d=l(d),j=d.slice(),j[0]=j[0]===null?j[2]:j[0],j[1]=d[1]===null?j[2]:j[1],h=b.min.apply(b,d),i=b.max.apply(b,d),e.get("base")===c?h=h<0?h:0:h=e.get("base"),this.min=h,this.max=i,this.range=i-h,this.shapes={},this.valueShapes={},this.regiondata={},this.width=f=e.get("width")==="auto"?"4.0em":f,this.target=this.$el.simpledraw(f,g,e.get("composite")),d.length||(this.disabled=!0),this.initTarget()},getRegion:function(a,b,d){var e=this.target.getShapeAt(a,b,d);return e!==c&&this.shapes[e]!==c?this.shapes[e]:c},getCurrentRegionFields:function(){var a=this.currentRegion;return{fieldkey:a.substr(0,1),value:this.values[a.substr(1)],region:a}},changeHighlight:function(a){var b=this.currentRegion,c=this.valueShapes[b],d;delete this.shapes[c];switch(b.substr(0,1)){case"r":d=this.renderRange(b.substr(1),a);break;case"p":d=this.renderPerformance(a);break;case"t":d=this.renderTarget(a)}this.valueShapes[b]=d.id,this.shapes[d.id]=b,this.target.replaceWithShape(c,d)},renderRange:function(a,c){var d=this.values[a],e=b.round(this.canvasWidth*((d-this.min)/this.range)),f=this.options.get("rangeColors")[a-2];return c&&(f=this.calcHighlightColor(f,this.options)),this.target.drawRect(0,0,e-1,this.canvasHeight-1,f,f)},renderPerformance:function(a){var c=this.values[1],d=b.round(this.canvasWidth*((c-this.min)/this.range)),e=this.options.get("performanceColor");return a&&(e=this.calcHighlightColor(e,this.options)),this.target.drawRect(0,b.round(this.canvasHeight*.3),d-1,b.round(this.canvasHeight*.4)-1,e,e)},renderTarget:function(a){var c=this.values[0],d=b.round(this.canvasWidth*((c-this.min)/this.range)-this.options.get("targetWidth")/2),e=b.round(this.canvasHeight*.1),f=this.canvasHeight-e*2,g=this.options.get("targetColor");return a&&(g=this.calcHighlightColor(g,this.options)),this.target.drawRect(d,e,this.options.get("targetWidth")-1,f-1,g,g)},render:function(){var a=this.values.length,b=this.target,c,d;if(!B._super.render.call(this))return;for(c=2;c<a;c++)d=this.renderRange(c).append(),this.shapes[d.id]="r"+c,this.valueShapes["r"+c]=d.id;this.values[1]!==null&&(d=this.renderPerformance().append(),this.shapes[d.id]="p1",this.valueShapes.p1=d.id),this.values[0]!==null&&(d=this.renderTarget().append(),this.shapes[d.id]="t0",this.valueShapes.t0=d.id),b.render()}}),d.fn.sparkline.pie=C=g(d.fn.sparkline._base,{type:"pie",init:function(a,c,e,f,g){var h=0,i;C._super.init.call(this,a,c,e,f,g),this.shapes={},this.valueShapes={},this.values=c=d.map(c,Number),e.get("width")==="auto"&&(this.width=this.height);if(c.length>0)for(i=c.length;i--;)h+=c[i];this.total=h,this.initTarget(),this.radius=b.floor(b.min(this.canvasWidth,this.canvasHeight)/2)},getRegion:function(a,b,d){var e=this.target.getShapeAt(a,b,d);return e!==c&&this.shapes[e]!==c?this.shapes[e]:c},getCurrentRegionFields:function(){var a=this.currentRegion;return{isNull:this.values[a]===c,value:this.values[a],percent:this.values[a]/this.total*100,color:this.options.get("sliceColors")[a%this.options.get("sliceColors").length],offset:a}},changeHighlight:function(a){var b=this.currentRegion,c=this.renderSlice(b,a),d=this.valueShapes[b];delete this.shapes[d],this.target.replaceWithShape(d,c),this.valueShapes[b]=c.id,this.shapes[c.id]=b},renderSlice:function(a,d){var e=this.target,f=this.options,g=this.radius,h=f.get("borderWidth"),i=f.get("offset"),j=2*b.PI,k=this.values,l=this.total,m=i?2*b.PI*(i/360):0,n,o,p,q,r;q=k.length;for(p=0;p<q;p++){n=m,o=m,l>0&&(o=m+j*(k[p]/l));if(a===p)return r=f.get("sliceColors")[p%f.get("sliceColors").length],d&&(r=this.calcHighlightColor(r,f)),e.drawPieSlice(g,g,g-h,n,o,c,r);m=o}},render:function(){var a=this.target,d=this.values,e=this.options,f=this.radius,g=e.get("borderWidth"),h,i;if(!C._super.render.call(this))return;g&&a.drawCircle(f,f,b.floor(f-g/2),e.get("borderColor"),c,g).append();for(i=d.length;i--;)d[i]&&(h=this.renderSlice(i).append(),this.valueShapes[i]=h.id,this.shapes[h.id]=i);a.render()}}),d.fn.sparkline.box=D=g(d.fn.sparkline._base,{type:"box",init:function(a,b,c,e,f){D._super.init.call(this,a,b,c,e,f),this.values=d.map(b,Number),this.width=c.get("width")==="auto"?"4.0em":e,this.initTarget(),this.values.length||(this.disabled=1)},getRegion:function(){return 1},getCurrentRegionFields:function(){var a=[{field:"lq",value:this.quartiles[0]},{field:"med",value:this.quartiles - [1]},{field:"uq",value:this.quartiles[2]}];return this.loutlier!==c&&a.push({field:"lo",value:this.loutlier}),this.routlier!==c&&a.push({field:"ro",value:this.routlier}),this.lwhisker!==c&&a.push({field:"lw",value:this.lwhisker}),this.rwhisker!==c&&a.push({field:"rw",value:this.rwhisker}),a},render:function(){var a=this.target,d=this.values,e=d.length,f=this.options,g=this.canvasWidth,h=this.canvasHeight,i=f.get("chartRangeMin")===c?b.min.apply(b,d):f.get("chartRangeMin"),k=f.get("chartRangeMax")===c?b.max.apply(b,d):f.get("chartRangeMax"),l=0,m,n,o,p,q,r,s,t,u,v,w;if(!D._super.render.call(this))return;if(f.get("raw"))f.get("showOutliers")&&d.length>5?(n=d[0],m=d[1],p=d[2],q=d[3],r=d[4],s=d[5],t=d[6]):(m=d[0],p=d[1],q=d[2],r=d[3],s=d[4]);else{d.sort(function(a,b){return a-b}),p=j(d,1),q=j(d,2),r=j(d,3),o=r-p;if(f.get("showOutliers")){m=s=c;for(u=0;u<e;u++)m===c&&d[u]>p-o*f.get("outlierIQR")&&(m=d[u]),d[u]<r+o*f.get("outlierIQR")&&(s=d[u]);n=d[0],t=d[e-1]}else m=d[0],s=d[e-1]}this.quartiles=[p,q,r],this.lwhisker=m,this.rwhisker=s,this.loutlier=n,this.routlier=t,w=g/(k-i+1),f.get("showOutliers")&&(l=b.ceil(f.get("spotRadius")),g-=2*b.ceil(f.get("spotRadius")),w=g/(k-i+1),n<m&&a.drawCircle((n-i)*w+l,h/2,f.get("spotRadius"),f.get("outlierLineColor"),f.get("outlierFillColor")).append(),t>s&&a.drawCircle((t-i)*w+l,h/2,f.get("spotRadius"),f.get("outlierLineColor"),f.get("outlierFillColor")).append()),a.drawRect(b.round((p-i)*w+l),b.round(h*.1),b.round((r-p)*w),b.round(h*.8),f.get("boxLineColor"),f.get("boxFillColor")).append(),a.drawLine(b.round((m-i)*w+l),b.round(h/2),b.round((p-i)*w+l),b.round(h/2),f.get("lineColor")).append(),a.drawLine(b.round((m-i)*w+l),b.round(h/4),b.round((m-i)*w+l),b.round(h-h/4),f.get("whiskerColor")).append(),a.drawLine(b.round((s-i)*w+l),b.round(h/2),b.round((r-i)*w+l),b.round(h/2),f.get("lineColor")).append(),a.drawLine(b.round((s-i)*w+l),b.round(h/4),b.round((s-i)*w+l),b.round(h-h/4),f.get("whiskerColor")).append(),a.drawLine(b.round((q-i)*w+l),b.round(h*.1),b.round((q-i)*w+l),b.round(h*.9),f.get("medianColor")).append(),f.get("target")&&(v=b.ceil(f.get("spotRadius")),a.drawLine(b.round((f.get("target")-i)*w+l),b.round(h/2-v),b.round((f.get("target")-i)*w+l),b.round(h/2+v),f.get("targetColor")).append(),a.drawLine(b.round((f.get("target")-i)*w+l-v),b.round(h/2),b.round((f.get("target")-i)*w+l+v),b.round(h/2),f.get("targetColor")).append()),a.render()}}),G=g({init:function(a,b,c,d){this.target=a,this.id=b,this.type=c,this.args=d},append:function(){return this.target.appendShape(this),this}}),H=g({_pxregex:/(\d+)(px)?\s*$/i,init:function(a,b,c){if(!a)return;this.width=a,this.height=b,this.target=c,this.lastShapeId=null,c[0]&&(c=c[0]),d.data(c,"_jqs_vcanvas",this)},drawLine:function(a,b,c,d,e,f){return this.drawShape([[a,b],[c,d]],e,f)},drawShape:function(a,b,c,d){return this._genShape("Shape",[a,b,c,d])},drawCircle:function(a,b,c,d,e,f){return this._genShape("Circle",[a,b,c,d,e,f])},drawPieSlice:function(a,b,c,d,e,f,g){return this._genShape("PieSlice",[a,b,c,d,e,f,g])},drawRect:function(a,b,c,d,e,f){return this._genShape("Rect",[a,b,c,d,e,f])},getElement:function(){return this.canvas},getLastShapeId:function(){return this.lastShapeId},reset:function(){alert("reset not implemented")},_insert:function(a,b){d(b).html(a)},_calculatePixelDims:function(a,b,c){var e;e=this._pxregex.exec(b),e?this.pixelHeight=e[1]:this.pixelHeight=d(c).height(),e=this._pxregex.exec(a),e?this.pixelWidth=e[1]:this.pixelWidth=d(c).width()},_genShape:function(a,b){var c=L++;return b.unshift(c),new G(this,c,a,b)},appendShape:function(a){alert("appendShape not implemented")},replaceWithShape:function(a,b){alert("replaceWithShape not implemented")},insertAfterShape:function(a,b){alert("insertAfterShape not implemented")},removeShapeId:function(a){alert("removeShapeId not implemented")},getShapeAt:function(a,b,c){alert("getShapeAt not implemented")},render:function(){alert("render not implemented")}}),I=g(H,{init:function(b,e,f,g){I._super.init.call(this,b,e,f),this.canvas=a.createElement("canvas"),f[0]&&(f=f[0]),d.data(f,"_jqs_vcanvas",this),d(this.canvas).css({display:"inline-block",width:b,height:e,verticalAlign:"top"}),this._insert(this.canvas,f),this._calculatePixelDims(b,e,this.canvas),this.canvas.width=this.pixelWidth,this.canvas.height=this.pixelHeight,this.interact=g,this.shapes={},this.shapeseq=[],this.currentTargetShapeId=c,d(this.canvas).css({width:this.pixelWidth,height:this.pixelHeight})},_getContext:function(a,b,d){var e=this.canvas.getContext("2d");return a!==c&&(e.strokeStyle=a),e.lineWidth=d===c?1:d,b!==c&&(e.fillStyle=b),e},reset:function(){var a=this._getContext();a.clearRect(0,0,this.pixelWidth,this.pixelHeight),this.shapes={},this.shapeseq=[],this.currentTargetShapeId=c},_drawShape:function(a,b,d,e,f){var g=this._getContext(d,e,f),h,i;g.beginPath(),g.moveTo(b[0][0]+.5,b[0][1]+.5);for(h=1,i=b.length;h<i;h++)g.lineTo(b[h][0]+.5,b[h][1]+.5);d!==c&&g.stroke(),e!==c&&g.fill(),this.targetX!==c&&this.targetY!==c&&g.isPointInPath(this.targetX,this.targetY)&&(this.currentTargetShapeId=a)},_drawCircle:function(a,d,e,f,g,h,i){var j=this._getContext(g,h,i);j.beginPath(),j.arc(d,e,f,0,2*b.PI,!1),this.targetX!==c&&this.targetY!==c&&j.isPointInPath(this.targetX,this.targetY)&&(this.currentTargetShapeId=a),g!==c&&j.stroke(),h!==c&&j.fill()},_drawPieSlice:function(a,b,d,e,f,g,h,i){var j=this._getContext(h,i);j.beginPath(),j.moveTo(b,d),j.arc(b,d,e,f,g,!1),j.lineTo(b,d),j.closePath(),h!==c&&j.stroke(),i&&j.fill(),this.targetX!==c&&this.targetY!==c&&j.isPointInPath(this.targetX,this.targetY)&&(this.currentTargetShapeId=a)},_drawRect:function(a,b,c,d,e,f,g){return this._drawShape(a,[[b,c],[b+d,c],[b+d,c+e],[b,c+e],[b,c]],f,g)},appendShape:function(a){return this.shapes[a.id]=a,this.shapeseq.push(a.id),this.lastShapeId=a.id,a.id},replaceWithShape:function(a,b){var c=this.shapeseq,d;this.shapes[b.id]=b;for(d=c.length;d--;)c[d]==a&&(c[d]=b.id);delete this.shapes[a]},replaceWithShapes:function(a,b){var c=this.shapeseq,d={},e,f,g;for(f=a.length;f--;)d[a[f]]=!0;for(f=c.length;f--;)e=c[f],d[e]&&(c.splice(f,1),delete this.shapes[e],g=f);for(f=b.length;f--;)c.splice(g,0,b[f].id),this.shapes[b[f].id]=b[f]},insertAfterShape:function(a,b){var c=this.shapeseq,d;for(d=c.length;d--;)if(c[d]===a){c.splice(d+1,0,b.id),this.shapes[b.id]=b;return}},removeShapeId:function(a){var b=this.shapeseq,c;for(c=b.length;c--;)if(b[c]===a){b.splice(c,1);break}delete this.shapes[a]},getShapeAt:function(a,b,c){return this.targetX=b,this.targetY=c,this.render(),this.currentTargetShapeId},render:function(){var a=this.shapeseq,b=this.shapes,c=a.length,d=this._getContext(),e,f,g;d.clearRect(0,0,this.pixelWidth,this.pixelHeight);for(g=0;g<c;g++)e=a[g],f=b[e],this["_draw"+f.type].apply(this,f.args);this.interact||(this.shapes={},this.shapeseq=[])}}),J=g(H,{init:function(b,c,e){var f;J._super.init.call(this,b,c,e),e[0]&&(e=e[0]),d.data(e,"_jqs_vcanvas",this),this.canvas=a.createElement("span"),d(this.canvas).css({display:"inline-block",position:"relative",overflow:"hidden",width:b,height:c,margin:"0px",padding:"0px",verticalAlign:"top"}),this._insert(this.canvas,e),this._calculatePixelDims(b,c,this.canvas),this.canvas.width=this.pixelWidth,this.canvas.height=this.pixelHeight,f='<v:group coordorigin="0 0" coordsize="'+this.pixelWidth+" "+this.pixelHeight+'"'+' style="position:absolute;top:0;left:0;width:'+this.pixelWidth+"px;height="+this.pixelHeight+'px;"></v:group>',this.canvas.insertAdjacentHTML("beforeEnd",f),this.group=d(this.canvas).children()[0],this.rendered=!1,this.prerender=""},_drawShape:function(a,b,d,e,f){var g=[],h,i,j,k,l,m,n;for(n=0,m=b.length;n<m;n++)g[n]=""+b[n][0]+","+b[n][1];return h=g.splice(0,1),f=f===c?1:f,i=d===c?' stroked="false" ':' strokeWeight="'+f+'px" strokeColor="'+d+'" ',j=e===c?' filled="false"':' fillColor="'+e+'" filled="true" ',k=g[0]===g[g.length-1]?"x ":"",l='<v:shape coordorigin="0 0" coordsize="'+this.pixelWidth+" "+this.pixelHeight+'" '+' id="jqsshape'+a+'" '+i+j+' style="position:absolute;left:0px;top:0px;height:'+this.pixelHeight+"px;width:"+this.pixelWidth+'px;padding:0px;margin:0px;" '+' path="m '+h+" l "+g.join(", ")+" "+k+'e">'+" </v:shape>",l},_drawCircle:function(a,b,d,e,f,g,h){var i,j,k;return b-=e,d-=e,i=f===c?' stroked="false" ':' strokeWeight="'+h+'px" strokeColor="'+f+'" ',j=g===c?' filled="false"':' fillColor="'+g+'" filled="true" ',k='<v:oval id="jqsshape'+a+'" '+i+j+' style="position:absolute;top:'+d+"px; left:"+b+"px; width:"+e*2+"px; height:"+e*2+'px"></v:oval>',k},_drawPieSlice:function(a,d,e,f,g,h,i,j){var k,l,m,n,o,p,q,r;if(g===h)return"";h-g===2*b.PI&&(g=0,h=2*b.PI),l=d+b.round(b.cos(g)*f),m=e+b.round(b.sin(g)*f),n=d+b.round(b.cos(h)*f),o=e+b.round(b.sin(h)*f);if(l===n&&m===o){if(h-g<b.PI)return"";l=n=d+f,m=o=e}return l===n&&m===o&&h-g<b.PI?"":(k=[d-f,e-f,d+f,e+f,l,m,n,o],p=i===c?' stroked="false" ':' strokeWeight="1px" strokeColor="'+i+'" ',q=j===c?' filled="false"':' fillColor="'+j+'" filled="true" ',r='<v:shape coordorigin="0 0" coordsize="'+this.pixelWidth+" "+this.pixelHeight+'" '+' id="jqsshape'+a+'" '+p+q+' style="position:absolute;left:0px;top:0px;height:'+this.pixelHeight+"px;width:"+this.pixelWidth+'px;padding:0px;margin:0px;" '+' path="m '+d+","+e+" wa "+k.join(", ")+' x e">'+" </v:shape>",r)},_drawRect:function(a,b,c,d,e,f,g){return this._drawShape(a,[[b,c],[b,c+e],[b+d,c+e],[b+d,c],[b,c]],f,g)},reset:function(){this.group.innerHTML=""},appendShape:function(a){var b=this["_draw"+a.type].apply(this,a.args);return this.rendered?this.group.insertAdjacentHTML("beforeEnd",b):this.prerender+=b,this.lastShapeId=a.id,a.id},replaceWithShape:function(a,b){var c=d("#jqsshape"+a),e=this["_draw"+b.type].apply(this,b.args);c[0].outerHTML=e},replaceWithShapes:function(a,b){var c=d("#jqsshape"+a[0]),e="",f=b.length,g;for(g=0;g<f;g++)e+=this["_draw"+b[g].type].apply(this,b[g].args);c[0].outerHTML=e;for(g=1;g<a.length;g++)d("#jqsshape"+a[g]).remove()},insertAfterShape:function(a,b){var c=d("#jqsshape"+a),e=this["_draw"+b.type].apply(this,b.args);c[0].insertAdjacentHTML("afterEnd",e)},removeShapeId:function(a){var b=d("#jqsshape"+a);this.group.removeChild(b[0])},getShapeAt:function(a,b,c){var d=a.id.substr(8);return d},render:function(){this.rendered||(this.group.innerHTML=this.prerender,this.rendered=!0)}})})})(document,Math); \ No newline at end of file diff --git a/assets/js/plugins/staps/jquery.steps.min.js b/assets/js/plugins/staps/jquery.steps.min.js deleted file mode 100644 index 84915bce..00000000 --- a/assets/js/plugins/staps/jquery.steps.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * jQuery Steps v1.0.6 - 04/27/2014 - * Copyright (c) 2014 Rafael Staib (http://www.jquery-steps.com) - * Licensed under MIT http://www.opensource.org/licenses/MIT - */ -!function(a,b){function c(a,b){o(a).push(b)}function d(d,e,f){var g=d.children(e.headerTag),h=d.children(e.bodyTag);g.length>h.length?R(Z,"contents"):g.length<h.length&&R(Z,"titles");var i=e.startIndex;if(f.stepCount=g.length,e.saveState&&a.cookie){var j=a.cookie(U+q(d)),k=parseInt(j,0);!isNaN(k)&&k<f.stepCount&&(i=k)}f.currentIndex=i,g.each(function(e){var f=a(this),g=h.eq(e),i=g.data("mode"),j=null==i?$.html:r($,/^\s*$/.test(i)||isNaN(i)?i:parseInt(i,0)),k=j===$.html||g.data("url")===b?"":g.data("url"),l=j!==$.html&&"1"===g.data("loaded"),m=a.extend({},bb,{title:f.html(),content:j===$.html?g.html():"",contentUrl:k,contentMode:j,contentLoaded:l});c(d,m)})}function e(a){a.triggerHandler("canceled")}function f(a,b){return a.currentIndex-b}function g(b,c){var d=i(b);b.unbind(d).removeData("uid").removeData("options").removeData("state").removeData("steps").removeData("eventNamespace").find(".actions a").unbind(d),b.removeClass(c.clearFixCssClass+" vertical");var e=b.find(".content > *");e.removeData("loaded").removeData("mode").removeData("url"),e.removeAttr("id").removeAttr("role").removeAttr("tabindex").removeAttr("class").removeAttr("style")._removeAria("labelledby")._removeAria("hidden"),b.find(".content > [data-mode='async'],.content > [data-mode='iframe']").empty();var f=a('<{0} class="{1}"></{0}>'.format(b.get(0).tagName,b.attr("class"))),g=b._id();return null!=g&&""!==g&&f._id(g),f.html(b.find(".content").html()),b.after(f),b.remove(),f}function h(a,b){var c=a.find(".steps li").eq(b.currentIndex);a.triggerHandler("finishing",[b.currentIndex])?(c.addClass("done").removeClass("error"),a.triggerHandler("finished",[b.currentIndex])):c.addClass("error")}function i(a){var b=a.data("eventNamespace");return null==b&&(b="."+q(a),a.data("eventNamespace",b)),b}function j(a,b){var c=q(a);return a.find("#"+c+V+b)}function k(a,b){var c=q(a);return a.find("#"+c+W+b)}function l(a,b){var c=q(a);return a.find("#"+c+X+b)}function m(a){return a.data("options")}function n(a){return a.data("state")}function o(a){return a.data("steps")}function p(a,b){var c=o(a);return(0>b||b>=c.length)&&R(Y),c[b]}function q(a){var b=a.data("uid");return null==b&&(b=a._id(),null==b&&(b="steps-uid-".concat(T),a._id(b)),T++,a.data("uid",b)),b}function r(a,c){if(S("enumType",a),S("keyOrValue",c),"string"==typeof c){var d=a[c];return d===b&&R("The enum key '{0}' does not exist.",c),d}if("number"==typeof c){for(var e in a)if(a[e]===c)return c;R("Invalid enum value '{0}'.",c)}else R("Invalid key or value type.")}function s(a,b,c){return B(a,b,c,v(c,1))}function t(a,b,c){return B(a,b,c,f(c,1))}function u(a,b,c,d){if((0>d||d>=c.stepCount)&&R(Y),!(b.forceMoveForward&&d<c.currentIndex)){var e=c.currentIndex;return a.triggerHandler("stepChanging",[c.currentIndex,d])?(c.currentIndex=d,O(a,b,c),E(a,b,c,e),D(a,b,c),A(a,b,c),P(a,b,c,d,e),a.triggerHandler("stepChanged",[d,e])):a.find(".steps li").eq(e).addClass("error"),!0}}function v(a,b){return a.currentIndex+b}function w(b){var c=a.extend(!0,{},cb,b);return this.each(function(){var b=a(this),e={currentIndex:c.startIndex,currentStep:null,stepCount:0,transitionElement:null};b.data("options",c),b.data("state",e),b.data("steps",[]),d(b,c,e),J(b,c,e),G(b,c),c.autoFocus&&0===T&&j(b,c.startIndex).focus()})}function x(b,c,d,e,f){(0>e||e>d.stepCount)&&R(Y),f=a.extend({},bb,f),y(b,e,f),d.currentIndex!==d.stepCount&&d.currentIndex>=e&&(d.currentIndex++,O(b,c,d)),d.stepCount++;var g=b.find(".content"),h=a("<{0}>{1}</{0}>".format(c.headerTag,f.title)),i=a("<{0}></{0}>".format(c.bodyTag));return(null==f.contentMode||f.contentMode===$.html)&&i.html(f.content),0===e?g.prepend(i).prepend(h):k(b,e-1).after(i).after(h),K(b,d,i,e),N(b,c,d,h,e),F(b,c,d,e),e===d.currentIndex&&E(b,c,d),D(b,c,d),b}function y(a,b,c){o(a).splice(b,0,c)}function z(b){var c=a(this),d=m(c),e=n(c);if(d.suppressPaginationOnFocus&&c.find(":focus").is(":input"))return b.preventDefault(),!1;var f={left:37,right:39};b.keyCode===f.left?(b.preventDefault(),t(c,d,e)):b.keyCode===f.right&&(b.preventDefault(),s(c,d,e))}function A(b,c,d){if(d.stepCount>0){var e=p(b,d.currentIndex);if(!c.enableContentCache||!e.contentLoaded)switch(r($,e.contentMode)){case $.iframe:b.find(".content > .body").eq(d.currentIndex).empty().html('<iframe src="'+e.contentUrl+'" frameborder="0" scrolling="no" />').data("loaded","1");break;case $.async:var f=k(b,d.currentIndex)._aria("busy","true").empty().append(M(c.loadingTemplate,{text:c.labels.loading}));a.ajax({url:e.contentUrl,cache:!1}).done(function(a){f.empty().html(a)._aria("busy","false").data("loaded","1")})}}}function B(a,b,c,d){var e=c.currentIndex;if(d>=0&&d<c.stepCount&&!(b.forceMoveForward&&d<c.currentIndex)){var f=j(a,d),g=f.parent(),h=g.hasClass("disabled");return g._enableAria(),f.click(),e===c.currentIndex&&h?(g._enableAria(!1),!1):!0}return!1}function C(b){b.preventDefault();var c=a(this),d=c.parent().parent().parent().parent(),f=m(d),g=n(d),i=c.attr("href");switch(i.substring(i.lastIndexOf("#")+1)){case"cancel":e(d);break;case"finish":h(d,g);break;case"next":s(d,f,g);break;case"previous":t(d,f,g)}}function D(a,b,c){if(b.enablePagination){var d=a.find(".actions a[href$='#finish']").parent(),e=a.find(".actions a[href$='#next']").parent();if(!b.forceMoveForward){var f=a.find(".actions a[href$='#previous']").parent();f._enableAria(c.currentIndex>0)}b.enableFinishButton&&b.showFinishButtonAlways?(d._enableAria(c.stepCount>0),e._enableAria(c.stepCount>1&&c.stepCount>c.currentIndex+1)):(d._showAria(b.enableFinishButton&&c.stepCount>=c.currentIndex+1),e._showAria(0===c.stepCount||c.stepCount>c.currentIndex+1)._enableAria(c.stepCount>c.currentIndex+1||!b.enableFinishButton))}}function E(b,c,d,e){var f=j(b,d.currentIndex),g=a('<span class="current-info audible">'+c.labels.current+" </span>"),h=b.find(".content > .title");if(null!=e){var i=j(b,e);i.parent().addClass("done").removeClass("error")._selectAria(!1),h.eq(e).removeClass("current").next(".body").removeClass("current"),g=i.find(".current-info"),f.focus()}f.prepend(g).parent()._selectAria().removeClass("done")._enableAria(),h.eq(d.currentIndex).addClass("current").next(".body").addClass("current")}function F(a,b,c,d){for(var e=q(a),f=d;f<c.stepCount;f++){var g=e+V+f,h=e+W+f,i=e+X+f,j=a.find(".title").eq(f)._id(i);a.find(".steps a").eq(f)._id(g)._aria("controls",h).attr("href","#"+i).html(M(b.titleTemplate,{index:f+1,title:j.html()})),a.find(".body").eq(f)._id(h)._aria("labelledby",i)}}function G(a,b){var c=i(a);a.bind("canceled"+c,b.onCanceled),a.bind("finishing"+c,b.onFinishing),a.bind("finished"+c,b.onFinished),a.bind("stepChanging"+c,b.onStepChanging),a.bind("stepChanged"+c,b.onStepChanged),b.enableKeyNavigation&&a.bind("keyup"+c,z),a.find(".actions a").bind("click"+c,C)}function H(a,b,c,d){return 0>d||d>=c.stepCount||c.currentIndex===d?!1:(I(a,d),c.currentIndex>d&&(c.currentIndex--,O(a,b,c)),c.stepCount--,l(a,d).remove(),k(a,d).remove(),j(a,d).parent().remove(),0===d&&a.find(".steps li").first().addClass("first"),d===c.stepCount&&a.find(".steps li").eq(d).addClass("last"),F(a,b,c,d),D(a,b,c),!0)}function I(a,b){o(a).splice(b,1)}function J(b,c,d){var e='<{0} class="{1}">{2}</{0}>',f=r(_,c.stepsOrientation),g=f===_.vertical?" vertical":"",h=a(e.format(c.contentContainerTag,"content "+c.clearFixCssClass,b.html())),i=a(e.format(c.stepsContainerTag,"steps "+c.clearFixCssClass,'<ul role="tablist"></ul>')),j=h.children(c.headerTag),k=h.children(c.bodyTag);b.attr("role","application").empty().append(i).append(h).addClass(c.cssClass+" "+c.clearFixCssClass+g),k.each(function(c){K(b,d,a(this),c)}),j.each(function(e){N(b,c,d,a(this),e)}),E(b,c,d),L(b,c,d)}function K(a,b,c,d){var e=q(a),f=e+W+d,g=e+X+d;c._id(f).attr("role","tabpanel")._aria("labelledby",g).addClass("body")._showAria(b.currentIndex===d)}function L(a,b,c){if(b.enablePagination){var d='<{0} class="actions {1}"><ul role="menu" aria-label="{2}">{3}</ul></{0}>',e='<li><a href="#{0}" role="menuitem">{1}</a></li>',f="";b.forceMoveForward||(f+=e.format("previous",b.labels.previous)),f+=e.format("next",b.labels.next),b.enableFinishButton&&(f+=e.format("finish",b.labels.finish)),b.enableCancelButton&&(f+=e.format("cancel",b.labels.cancel)),a.append(d.format(b.actionContainerTag,b.clearFixCssClass,b.labels.pagination,f)),D(a,b,c),A(a,b,c)}}function M(a,c){for(var d=a.match(/#([a-z]*)#/gi),e=0;e<d.length;e++){var f=d[e],g=f.substring(1,f.length-1);c[g]===b&&R("The key '{0}' does not exist in the substitute collection!",g),a=a.replace(f,c[g])}return a}function N(b,c,d,e,f){var g=q(b),h=g+V+f,j=g+W+f,k=g+X+f,l=b.find(".steps > ul"),m=M(c.titleTemplate,{index:f+1,title:e.html()}),n=a('<li role="tab"><a id="'+h+'" href="#'+k+'" aria-controls="'+j+'">'+m+"</a></li>");n._enableAria(c.enableAllSteps||d.currentIndex>f),d.currentIndex>f&&n.addClass("done"),e._id(k).attr("tabindex","-1").addClass("title"),0===f?l.prepend(n):l.find("li").eq(f-1).after(n),0===f&&l.find("li").removeClass("first").eq(f).addClass("first"),f===d.stepCount-1&&l.find("li").removeClass("last").eq(f).addClass("last"),n.children("a").bind("click"+i(b),Q)}function O(b,c,d){c.saveState&&a.cookie&&a.cookie(U+q(b),d.currentIndex)}function P(b,c,d,e,f){var g=b.find(".content > .body"),h=r(ab,c.transitionEffect),i=c.transitionEffectSpeed,j=g.eq(e),k=g.eq(f);switch(h){case ab.fade:case ab.slide:var l=h===ab.fade?"fadeOut":"slideUp",m=h===ab.fade?"fadeIn":"slideDown";d.transitionElement=j,k[l](i,function(){var b=a(this)._showAria(!1).parent().parent(),c=n(b);c.transitionElement&&(c.transitionElement[m](i,function(){a(this)._showAria()}),c.transitionElement=null)}).promise();break;case ab.slideLeft:var o=k.outerWidth(!0),p=e>f?-o:o,q=e>f?o:-o;k.animate({left:p},i,function(){a(this)._showAria(!1)}).promise(),j.css("left",q+"px")._showAria().animate({left:0},i).promise();break;default:k._showAria(!1),j._showAria()}}function Q(b){b.preventDefault();var c=a(this),d=c.parent().parent().parent().parent(),e=m(d),f=n(d),g=f.currentIndex;if(c.parent().is(":not(.disabled):not(.current)")){var h=c.attr("href"),i=parseInt(h.substring(h.lastIndexOf("-")+1),0);u(d,e,f,i)}return g===f.currentIndex?(j(d,g).focus(),!1):void 0}function R(a){throw arguments.length>1&&(a=a.format(Array.prototype.slice.call(arguments,1))),new Error(a)}function S(a,b){null==b&&R("The argument '{0}' is null or undefined.",a)}a.fn.extend({_aria:function(a,b){return this.attr("aria-"+a,b)},_removeAria:function(a){return this.removeAttr("aria-"+a)},_enableAria:function(a){return null==a||a?this.removeClass("disabled")._aria("disabled","false"):this.addClass("disabled")._aria("disabled","true")},_showAria:function(a){return null==a||a?this.show()._aria("hidden","false"):this.hide()._aria("hidden","true")},_selectAria:function(a){return null==a||a?this.addClass("current")._aria("selected","true"):this.removeClass("current")._aria("selected","false")},_id:function(a){return a?this.attr("id",a):this.attr("id")}}),String.prototype.format||(String.prototype.format=function(){for(var b=1===arguments.length&&a.isArray(arguments[0])?arguments[0]:arguments,c=this,d=0;d<b.length;d++){var e=new RegExp("\\{"+d+"\\}","gm");c=c.replace(e,b[d])}return c});var T=0,U="jQu3ry_5teps_St@te_",V="-t-",W="-p-",X="-h-",Y="Index out of range.",Z="One or more corresponding step {0} are missing.";a.fn.steps=function(b){return a.fn.steps[b]?a.fn.steps[b].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof b&&b?void a.error("Method "+b+" does not exist on jQuery.steps"):w.apply(this,arguments)},a.fn.steps.add=function(a){var b=n(this);return x(this,m(this),b,b.stepCount,a)},a.fn.steps.destroy=function(){return g(this,m(this))},a.fn.steps.finish=function(){h(this,n(this))},a.fn.steps.getCurrentIndex=function(){return n(this).currentIndex},a.fn.steps.getCurrentStep=function(){return p(this,n(this).currentIndex)},a.fn.steps.getStep=function(a){return p(this,a)},a.fn.steps.insert=function(a,b){return x(this,m(this),n(this),a,b)},a.fn.steps.next=function(){return s(this,m(this),n(this))},a.fn.steps.previous=function(){return t(this,m(this),n(this))},a.fn.steps.remove=function(a){return H(this,m(this),n(this),a)},a.fn.steps.setStep=function(){throw new Error("Not yet implemented!")},a.fn.steps.skip=function(){throw new Error("Not yet implemented!")};var $=a.fn.steps.contentMode={html:0,iframe:1,async:2},_=a.fn.steps.stepsOrientation={horizontal:0,vertical:1},ab=a.fn.steps.transitionEffect={none:0,fade:1,slide:2,slideLeft:3},bb=a.fn.steps.stepModel={title:"",content:"",contentUrl:"",contentMode:$.html,contentLoaded:!1},cb=a.fn.steps.defaults={headerTag:"h1",bodyTag:"div",contentContainerTag:"div",actionContainerTag:"div",stepsContainerTag:"div",cssClass:"wizard",clearFixCssClass:"clearfix",stepsOrientation:_.horizontal,titleTemplate:'<span class="number">#index#.</span> #title#',loadingTemplate:'<span class="spinner"></span> #text#',autoFocus:!1,enableAllSteps:!1,enableKeyNavigation:!0,enablePagination:!0,suppressPaginationOnFocus:!0,enableContentCache:!0,enableCancelButton:!0,enableFinishButton:!0,preloadContent:!1,showFinishButtonAlways:!1,forceMoveForward:!1,saveState:!1,startIndex:0,transitionEffect:ab.none,transitionEffectSpeed:200,onStepChanging:function(){return!0},onStepChanged:function(){},onCanceled:function(){},onFinishing:function(){return!0},onFinished:function(){},labels:{cancel:"Cancel",current:"current step:",pagination:"Pagination",finish:"Finish",next:"Next",previous:"Previous",loading:"Loading ..."}}}(jQuery); \ No newline at end of file diff --git a/assets/js/plugins/summernote/summernote.min.js b/assets/js/plugins/summernote/summernote.min.js deleted file mode 100644 index 6290d1c6..00000000 --- a/assets/js/plugins/summernote/summernote.min.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(a){"function"==typeof define&&define.amd?define(["jquery","codemirror"],a):a(window.jQuery,window.CodeMirror)}(function(a,b){"function"!=typeof Array.prototype.reduce&&(Array.prototype.reduce=function(a,b){var c,d,e=this.length>>>0,f=!1;for(1<arguments.length&&(d=b,f=!0),c=0;e>c;++c)this.hasOwnProperty(c)&&(f?d=a(d,this[c],c,this):(d=this[c],f=!0));if(!f)throw new TypeError("Reduce of empty array with no initial value");return d});var c={bMac:navigator.appVersion.indexOf("Mac")>-1,bMSIE:navigator.userAgent.indexOf("MSIE")>-1||navigator.userAgent.indexOf("Trident")>-1,bFF:navigator.userAgent.indexOf("Firefox")>-1,jqueryVersion:parseFloat(a.fn.jquery),bCodeMirror:!!b},d=function(){var a=function(a){return function(b){return a===b}},b=function(a,b){return a===b},c=function(){return!0},d=function(){return!1},e=function(a){return function(){return!a.apply(a,arguments)}},f=function(a){return a};return{eq:a,eq2:b,ok:c,fail:d,not:e,self:f}}(),e=function(){var a=function(a){return a[0]},b=function(a){return a[a.length-1]},c=function(a){return a.slice(0,a.length-1)},e=function(a){return a.slice(1)},f=function(a,b){var c=a.indexOf(b);return-1===c?null:a[c+1]},g=function(a,b){var c=a.indexOf(b);return-1===c?null:a[c-1]},h=function(a,b){return b=b||d.self,a.reduce(function(a,c){return a+b(c)},0)},i=function(a){for(var b=[],c=-1,d=a.length;++c<d;)b[c]=a[c];return b},j=function(c,d){if(0===c.length)return[];var f=e(c);return f.reduce(function(a,c){var e=b(a);return d(b(e),c)?e[e.length]=c:a[a.length]=[c],a},[[a(c)]])},k=function(a){for(var b=[],c=0,d=a.length;d>c;c++)a[c]&&b.push(a[c]);return b};return{head:a,last:b,initial:c,tail:e,prev:g,next:f,sum:h,from:i,compact:k,clusterBy:j}}(),f=function(){var b=function(b){return b&&a(b).hasClass("note-editable")},g=function(b){return b&&a(b).hasClass("note-control-sizing")},h=function(a){var b=function(b){return function(){return a.find(b)}};return{editor:function(){return a},dropzone:b(".note-dropzone"),toolbar:b(".note-toolbar"),editable:b(".note-editable"),codable:b(".note-codable"),statusbar:b(".note-statusbar"),popover:b(".note-popover"),handle:b(".note-handle"),dialog:b(".note-dialog")}},i=function(a){return function(b){return b&&b.nodeName===a}},j=function(a){return a&&/^DIV|^P|^LI|^H[1-7]/.test(a.nodeName)},k=function(a){return a&&/^UL|^OL/.test(a.nodeName)},l=function(a){return a&&/^TD|^TH/.test(a.nodeName)},m=function(a,c){for(;a;){if(c(a))return a;if(b(a))break;a=a.parentNode}return null},n=function(a,b){b=b||d.fail;var c=[];return m(a,function(a){return c.push(a),b(a)}),c},o=function(b,c){for(var d=n(b),e=c;e;e=e.parentNode)if(a.inArray(e,d)>-1)return e;return null},p=function(a,b){var c=[],d=!1,e=!1;return function f(g){if(g){if(g===a&&(d=!0),d&&!e&&c.push(g),g===b)return void(e=!0);for(var h=0,i=g.childNodes.length;i>h;h++)f(g.childNodes[h])}}(o(a,b)),c},q=function(a,b){b=b||d.fail;for(var c=[];a&&(c.push(a),!b(a));)a=a.previousSibling;return c},r=function(a,b){b=b||d.fail;for(var c=[];a&&(c.push(a),!b(a));)a=a.nextSibling;return c},s=function(a,b){var c=[];return b=b||d.ok,function e(d){a!==d&&b(d)&&c.push(d);for(var f=0,g=d.childNodes.length;g>f;f++)e(d.childNodes[f])}(a),c},t=function(a,b){var c=b.nextSibling,d=b.parentNode;return c?d.insertBefore(a,c):d.appendChild(a),a},u=function(b,c){return a.each(c,function(a,c){b.appendChild(c)}),b},v=i("#text"),w=function(a){return v(a)?a.nodeValue.length:a.childNodes.length},x=function(a){for(var b=0;a=a.previousSibling;)b+=1;return b},y=function(b,c){var f=e.initial(n(c,d.eq(b)));return a.map(f,x).reverse()},z=function(a,b){for(var c=a,d=0,e=b.length;e>d;d++)c=c.childNodes[b[d]];return c},A=function(a,b){if(0===b)return a;if(b>=w(a))return a.nextSibling;if(v(a))return a.splitText(b);var c=a.childNodes[b];return a=t(a.cloneNode(!1),a),u(a,r(c))},B=function(a,b,c){var e=n(b,d.eq(a));return 1===e.length?A(b,c):e.reduce(function(a,d){var e=d.cloneNode(!1);return t(e,d),a===b&&(a=A(a,c)),u(e,r(a)),e})},C=function(a,b){if(a&&a.parentNode){if(a.removeNode)return a.removeNode(b);var c=a.parentNode;if(!b){var d,e,f=[];for(d=0,e=a.childNodes.length;e>d;d++)f.push(a.childNodes[d]);for(d=0,e=f.length;e>d;d++)c.insertBefore(f[d],a)}c.removeChild(a)}},D=function(a){return f.isTextarea(a[0])?a.val():a.html()};return{blank:c.bMSIE?"&nbsp;":"<br/>",emptyPara:"<p><br/></p>",isEditable:b,isControlSizing:g,buildLayoutInfo:h,isText:v,isPara:j,isList:k,isTable:i("TABLE"),isCell:l,isAnchor:i("A"),isDiv:i("DIV"),isLi:i("LI"),isSpan:i("SPAN"),isB:i("B"),isU:i("U"),isS:i("S"),isI:i("I"),isImg:i("IMG"),isTextarea:i("TEXTAREA"),ancestor:m,listAncestor:n,listNext:r,listPrev:q,listDescendant:s,commonAncestor:o,listBetween:p,insertAfter:t,position:x,makeOffsetPath:y,fromOffsetPath:z,split:B,remove:C,html:D}}(),g={version:"0.5.2",options:{width:null,height:null,focus:!1,tabsize:4,styleWithSpan:!0,disableLinkTarget:!1,disableDragAndDrop:!1,codemirror:null,lang:"en-US",direction:null,toolbar:[["style",["style"]],["font",["bold","italic","underline","clear"]],["fontname",["fontname"]],["color",["color"]],["para",["ul","ol","paragraph"]],["height",["height"]],["table",["table"]],["insert",["link","picture","video"]],["view",["fullscreen","codeview"]],["help",["help"]]],oninit:null,onfocus:null,onblur:null,onenter:null,onkeyup:null,onkeydown:null,onImageUpload:null,onImageUploadError:null,onToolbarClick:null,keyMap:{pc:{"CTRL+Z":"undo","CTRL+Y":"redo",TAB:"tab","SHIFT+TAB":"untab","CTRL+B":"bold","CTRL+I":"italic","CTRL+U":"underline","CTRL+SHIFT+S":"strikethrough","CTRL+BACKSLASH":"removeFormat","CTRL+SHIFT+L":"justifyLeft","CTRL+SHIFT+E":"justifyCenter","CTRL+SHIFT+R":"justifyRight","CTRL+SHIFT+J":"justifyFull","CTRL+SHIFT+NUM7":"insertUnorderedList","CTRL+SHIFT+NUM8":"insertOrderedList","CTRL+LEFTBRACKET":"outdent","CTRL+RIGHTBRACKET":"indent","CTRL+NUM0":"formatPara","CTRL+NUM1":"formatH1","CTRL+NUM2":"formatH2","CTRL+NUM3":"formatH3","CTRL+NUM4":"formatH4","CTRL+NUM5":"formatH5","CTRL+NUM6":"formatH6","CTRL+ENTER":"insertHorizontalRule"},mac:{"CMD+Z":"undo","CMD+SHIFT+Z":"redo",TAB:"tab","SHIFT+TAB":"untab","CMD+B":"bold","CMD+I":"italic","CMD+U":"underline","CMD+SHIFT+S":"strikethrough","CMD+BACKSLASH":"removeFormat","CMD+SHIFT+L":"justifyLeft","CMD+SHIFT+E":"justifyCenter","CMD+SHIFT+R":"justifyRight","CMD+SHIFT+J":"justifyFull","CMD+SHIFT+NUM7":"insertUnorderedList","CMD+SHIFT+NUM8":"insertOrderedList","CMD+LEFTBRACKET":"outdent","CMD+RIGHTBRACKET":"indent","CMD+NUM0":"formatPara","CMD+NUM1":"formatH1","CMD+NUM2":"formatH2","CMD+NUM3":"formatH3","CMD+NUM4":"formatH4","CMD+NUM5":"formatH5","CMD+NUM6":"formatH6","CMD+ENTER":"insertHorizontalRule"}}},lang:{"en-US":{font:{bold:"Bold",italic:"Italic",underline:"Underline",strike:"Strike",clear:"Remove Font Style",height:"Line Height",name:"Font Family",size:"Font Size"},image:{image:"Picture",insert:"Insert Image",resizeFull:"Resize Full",resizeHalf:"Resize Half",resizeQuarter:"Resize Quarter",floatLeft:"Float Left",floatRight:"Float Right",floatNone:"Float None",dragImageHere:"Drag an image here",selectFromFiles:"Select from files",url:"Image URL",remove:"Remove Image"},link:{link:"Link",insert:"Insert Link",unlink:"Unlink",edit:"Edit",textToDisplay:"Text to display",url:"To what URL should this link go?",openInNewWindow:"Open in new window"},video:{video:"Video",videoLink:"Video Link",insert:"Insert Video",url:"Video URL?",providers:"(YouTube, Vimeo, Vine, Instagram, or DailyMotion)"},table:{table:"Table"},hr:{insert:"Insert Horizontal Rule"},style:{style:"Style",normal:"Normal",blockquote:"Quote",pre:"Code",h1:"Header 1",h2:"Header 2",h3:"Header 3",h4:"Header 4",h5:"Header 5",h6:"Header 6"},lists:{unordered:"Unordered list",ordered:"Ordered list"},options:{help:"Help",fullscreen:"Full Screen",codeview:"Code View"},paragraph:{paragraph:"Paragraph",outdent:"Outdent",indent:"Indent",left:"Align left",center:"Align center",right:"Align right",justify:"Justify full"},color:{recent:"Recent Color",more:"More Color",background:"BackColor",foreground:"FontColor",transparent:"Transparent",setTransparent:"Set transparent",reset:"Reset",resetToDefault:"Reset to default"},shortcut:{shortcuts:"Keyboard shortcuts",close:"Close",textFormatting:"Text formatting",action:"Action",paragraphFormatting:"Paragraph formatting",documentStyle:"Document Style"},history:{undo:"Undo",redo:"Redo"}}}},h=function(){var b=function(b){return a.Deferred(function(c){a.extend(new FileReader,{onload:function(a){var b=a.target.result;c.resolve(b)},onerror:function(){c.reject(this)}}).readAsDataURL(b)}).promise()},c=function(b){return a.Deferred(function(c){a("<img>").one("load",function(){c.resolve(a(this))}).one("error abort",function(){c.reject(a(this))}).css({display:"none"}).appendTo(document.body).attr("src",b)}).promise()};return{readFileAsDataURL:b,createImage:c}}(),i={isEdit:function(a){return-1!==[8,9,13,32].indexOf(a)},nameFromCode:{8:"BACKSPACE",9:"TAB",13:"ENTER",32:"SPACE",48:"NUM0",49:"NUM1",50:"NUM2",51:"NUM3",52:"NUM4",53:"NUM5",54:"NUM6",55:"NUM7",56:"NUM8",66:"B",69:"E",73:"I",74:"J",75:"K",76:"L",82:"R",83:"S",85:"U",89:"Y",90:"Z",191:"SLASH",219:"LEFTBRACKET",220:"BACKSLASH",221:"RIGHTBRACKET"}},j=function(){var b=function(b,d){if(c.jqueryVersion<1.9){var e={};return a.each(d,function(a,c){e[c]=b.css(c)}),e}return b.css.call(b,d)};this.stylePara=function(b,c){a.each(b.nodes(f.isPara),function(b,d){a(d).css(c)})},this.current=function(c,d){var e=a(f.isText(c.sc)?c.sc.parentNode:c.sc),g=["font-family","font-size","text-align","list-style-type","line-height"],h=b(e,g)||{};if(h["font-size"]=parseInt(h["font-size"],10),h["font-bold"]=document.queryCommandState("bold")?"bold":"normal",h["font-italic"]=document.queryCommandState("italic")?"italic":"normal",h["font-underline"]=document.queryCommandState("underline")?"underline":"normal",h["font-strikethrough"]=document.queryCommandState("strikeThrough")?"strikethrough":"normal",c.isOnList()){var i=["circle","disc","disc-leading-zero","square"],j=a.inArray(h["list-style-type"],i)>-1;h["list-style"]=j?"unordered":"ordered"}else h["list-style"]="none";var k=f.ancestor(c.sc,f.isPara);if(k&&k.style["line-height"])h["line-height"]=k.style.lineHeight;else{var l=parseInt(h["line-height"],10)/parseInt(h["font-size"],10);h["line-height"]=l.toFixed(1)}return h.image=f.isImg(d)&&d,h.anchor=c.isOnAnchor()&&f.ancestor(c.sc,f.isAnchor),h.aAncestor=f.listAncestor(c.sc,f.isEditable),h}},k=function(){var b=!!document.createRange,c=function(a,b){var c,d,g=a.parentElement(),h=document.body.createTextRange(),i=e.from(g.childNodes);for(c=0;c<i.length;c++)if(!f.isText(i[c])){if(h.moveToElementText(i[c]),h.compareEndPoints("StartToStart",a)>=0)break;d=i[c]}if(0!==c&&f.isText(i[c-1])){var j=document.body.createTextRange(),k=null;j.moveToElementText(d||g),j.collapse(!d),k=d?d.nextSibling:g.firstChild;var l=a.duplicate();l.setEndPoint("StartToStart",j);for(var m=l.text.replace(/[\r\n]/g,"").length;m>k.nodeValue.length&&k.nextSibling;)m-=k.nodeValue.length,k=k.nextSibling;{k.nodeValue}b&&k.nextSibling&&f.isText(k.nextSibling)&&m===k.nodeValue.length&&(m-=k.nodeValue.length,k=k.nextSibling),g=k,c=m}return{cont:g,offset:c}},g=function(a){var b=function(a,c){var g,h;if(f.isText(a)){var i=f.listPrev(a,d.not(f.isText)),j=e.last(i).previousSibling;g=j||a.parentNode,c+=e.sum(e.tail(i),f.length),h=!j}else{if(g=a.childNodes[c]||a,f.isText(g))return b(g,c);c=0,h=!1}return{cont:g,collapseToStart:h,offset:c}},c=document.body.createTextRange(),g=b(a.cont,a.offset);return c.moveToElementText(g.cont),c.collapse(g.collapseToStart),c.moveStart("character",g.offset),c},h=function(c,h,i,j){this.sc=c,this.so=h,this.ec=i,this.eo=j;var k=function(){if(b){var a=document.createRange();return a.setStart(c,h),a.setEnd(i,j),a}var d=g({cont:c,offset:h});return d.setEndPoint("EndToEnd",g({cont:i,offset:j})),d};this.select=function(){var a=k();if(b){var c=document.getSelection();c.rangeCount>0&&c.removeAllRanges(),c.addRange(a)}else a.select()},this.nodes=function(b){var g=f.listBetween(c,i),h=e.compact(a.map(g,function(a){return f.ancestor(a,b)}));return a.map(e.clusterBy(h,d.eq2),e.head)},this.commonAncestor=function(){return f.commonAncestor(c,i)};var l=function(a){return function(){var b=f.ancestor(c,a);return!!b&&b===f.ancestor(i,a)}};this.isOnEditable=l(f.isEditable),this.isOnList=l(f.isList),this.isOnAnchor=l(f.isAnchor),this.isOnCell=l(f.isCell),this.isCollapsed=function(){return c===i&&h===j},this.insertNode=function(a){var c=k();b?c.insertNode(a):c.pasteHTML(a.outerHTML)},this.toString=function(){var a=k();return b?a.toString():a.text},this.bookmark=function(a){return{s:{path:f.makeOffsetPath(a,c),offset:h},e:{path:f.makeOffsetPath(a,i),offset:j}}}};return{create:function(a,d,e,f){if(0===arguments.length)if(b){var g=document.getSelection();if(0===g.rangeCount)return null;var i=g.getRangeAt(0);a=i.startContainer,d=i.startOffset,e=i.endContainer,f=i.endOffset}else{var j=document.selection.createRange(),k=j.duplicate();k.collapse(!1);var l=j;l.collapse(!0);var m=c(l,!0),n=c(k,!1);a=m.cont,d=m.offset,e=n.cont,f=n.offset}else 2===arguments.length&&(e=a,f=d);return new h(a,d,e,f)},createFromNode:function(a){return this.create(a,0,a,1)},createFromBookmark:function(a,b){var c=f.fromOffsetPath(a,b.s.path),d=b.s.offset,e=f.fromOffsetPath(a,b.e.path),g=b.e.offset;return new h(c,d,e,g)}}}(),l=function(){this.tab=function(a,b){var c=f.ancestor(a.commonAncestor(),f.isCell),d=f.ancestor(c,f.isTable),g=f.listDescendant(d,f.isCell),h=e[b?"prev":"next"](g,c);h&&k.create(h,0).select()},this.createTable=function(b,c){for(var d,e=[],g=0;b>g;g++)e.push("<td>"+f.blank+"</td>");d=e.join("");for(var h,i=[],j=0;c>j;j++)i.push("<tr>"+d+"</tr>");h=i.join("");var k='<table class="table table-bordered">'+h+"</table>";return a(k)[0]}},m=function(){var b=new j,d=new l;this.saveRange=function(a){a.data("range",k.create())},this.restoreRange=function(a){var b=a.data("range");b&&b.select()},this.currentStyle=function(a){var c=k.create();return c.isOnEditable()&&b.current(c,a)},this.undo=function(a){a.data("NoteHistory").undo(a)},this.redo=function(a){a.data("NoteHistory").redo(a)};for(var e=this.recordUndo=function(a){a.data("NoteHistory").recordUndo(a)},g=["bold","italic","underline","strikethrough","justifyLeft","justifyCenter","justifyRight","justifyFull","insertOrderedList","insertUnorderedList","indent","outdent","formatBlock","removeFormat","backColor","foreColor","insertHorizontalRule","fontName"],i=0,m=g.length;m>i;i++)this[g[i]]=function(a){return function(b,c){e(b),document.execCommand(a,!1,c)}}(g[i]);var n=function(b,c,d){e(b);var g=new Array(d+1).join("&nbsp;");c.insertNode(a('<span id="noteTab">'+g+"</span>")[0]);var h=a("#noteTab").removeAttr("id");c=k.create(h[0],1),c.select(),f.remove(h[0])};this.tab=function(a,b){var c=k.create();c.isCollapsed()&&c.isOnCell()?d.tab(c):n(a,c,b.tabsize)},this.untab=function(){var a=k.create();a.isCollapsed()&&a.isOnCell()&&d.tab(a,!0)},this.insertImage=function(a,b){h.createImage(b).then(function(b){e(a),b.css({display:"",width:Math.min(a.width(),b.width())}),k.create().insertNode(b[0])}).fail(function(){var b=a.data("callbacks");b.onImageUploadError&&b.onImageUploadError()})},this.insertVideo=function(b,c){e(b);var d,f=/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/,g=c.match(f),h=/\/\/instagram.com\/p\/(.[a-zA-Z0-9]*)/,i=c.match(h),j=/\/\/vine.co\/v\/(.[a-zA-Z0-9]*)/,l=c.match(j),m=/\/\/(player.)?vimeo.com\/([a-z]*\/)*([0-9]{6,11})[?]?.*/,n=c.match(m),o=/.+dailymotion.com\/(video|hub)\/([^_]+)[^#]*(#video=([^_&]+))?/,p=c.match(o);if(g&&11===g[2].length){var q=g[2];d=a("<iframe>").attr("src","//www.youtube.com/embed/"+q).attr("width","640").attr("height","360")}else i&&i[0].length>0?d=a("<iframe>").attr("src",i[0]+"/embed/").attr("width","612").attr("height","710").attr("scrolling","no").attr("allowtransparency","true"):l&&l[0].length>0?d=a("<iframe>").attr("src",l[0]+"/embed/simple").attr("width","600").attr("height","600").attr("class","vine-embed"):n&&n[3].length>0?d=a("<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>").attr("src","//player.vimeo.com/video/"+n[3]).attr("width","640").attr("height","360"):p&&p[2].length>0&&(d=a("<iframe>").attr("src","//www.dailymotion.com/embed/video/"+p[2]).attr("width","640").attr("height","360"));d&&(d.attr("frameborder",0),k.create().insertNode(d[0]))},this.formatBlock=function(a,b){e(a),b=c.bMSIE?"<"+b+">":b,document.execCommand("FormatBlock",!1,b)},this.formatPara=function(a){this.formatBlock(a,"P")};for(var i=1;6>=i;i++)this["formatH"+i]=function(a){return function(b){this.formatBlock(b,"H"+a)}}(i);this.fontSize=function(a,b){e(a),document.execCommand("fontSize",!1,3),c.bFF?a.find("font[size=3]").removeAttr("size").css("font-size",b+"px"):a.find("span").filter(function(){return"medium"===this.style.fontSize}).css("font-size",b+"px")},this.lineHeight=function(a,c){e(a),b.stylePara(k.create(),{lineHeight:c})},this.unlink=function(a){var b=k.create();if(b.isOnAnchor()){e(a);var c=f.ancestor(b.sc,f.isAnchor);b=k.createFromNode(c),b.select(),document.execCommand("unlink")}},this.createLink=function(b,d,g){var h=k.create();e(b);var i=d;if(-1!==d.indexOf("@")&&-1===d.indexOf(":")?i="mailto:"+d:-1===d.indexOf("://")&&(i="http://"+d),(c.bMSIE||c.bFF)&&h.isCollapsed()){h.insertNode(a('<A id="linkAnchor">'+d+"</A>")[0]);var j=a("#linkAnchor").attr("href",i).removeAttr("id");h=k.createFromNode(j[0]),h.select()}else document.execCommand("createlink",!1,i),h=k.create();a.each(h.nodes(f.isAnchor),function(b,c){g?a(c).attr("target","_blank"):a(c).removeAttr("target")})},this.getLinkInfo=function(){var b=k.create(),c=!0,d="";if(b.isOnAnchor()){var e=f.ancestor(b.sc,f.isAnchor);b=k.createFromNode(e),c="_blank"===a(e).attr("target"),d=e.href}return{text:b.toString(),url:d,newWindow:c}},this.getVideoInfo=function(){var a=k.create();if(a.isOnAnchor()){var b=f.ancestor(a.sc,f.isAnchor);a=k.createFromNode(b)}return{text:a.toString()}},this.color=function(a,b){var c=JSON.parse(b),d=c.foreColor,f=c.backColor;e(a),d&&document.execCommand("foreColor",!1,d),f&&document.execCommand("backColor",!1,f)},this.insertTable=function(a,b){e(a);var c=b.split("x");k.create().insertNode(d.createTable(c[0],c[1]))},this.floatMe=function(a,b,c){e(a),c.css("float",b)},this.resize=function(a,b,c){e(a),c.css({width:a.width()*b+"px",height:""})},this.resizeTo=function(a,b,c){var d;if(c){var e=a.y/a.x,f=b.data("ratio");d={width:f>e?a.x:a.y/f,height:f>e?a.x*f:a.y}}else d={width:a.x,height:a.y};b.css(d)},this.removeMedia=function(a,b,c){e(a),c.detach()}},n=function(){var a=[],b=[],c=function(a){var b=a[0],c=k.create();return{contents:a.html(),bookmark:c.bookmark(b),scrollTop:a.scrollTop()}},d=function(a,b){a.html(b.contents).scrollTop(b.scrollTop),k.createFromBookmark(a[0],b.bookmark).select()};this.undo=function(e){var f=c(e);0!==a.length&&(d(e,a.pop()),b.push(f))},this.redo=function(e){var f=c(e);0!==b.length&&(d(e,b.pop()),a.push(f))},this.recordUndo=function(d){b=[],a.push(c(d))}},o=function(){this.update=function(b,c){var d=function(b,c){b.find(".dropdown-menu li a").each(function(){var b=a(this).data("value")+""==c+"";this.className=b?"checked":""})},f=function(a,c){var d=b.find(a);d.toggleClass("active",c())},g=b.find(".note-fontname");if(g.length>0){var h=c["font-family"];h&&(h=e.head(h.split(",")),h=h.replace(/\'/g,""),g.find(".note-current-fontname").text(h),d(g,h))}var i=b.find(".note-fontsize");i.find(".note-current-fontsize").text(c["font-size"]),d(i,parseFloat(c["font-size"]));var j=b.find(".note-height");d(j,parseFloat(c["line-height"])),f('button[data-event="bold"]',function(){return"bold"===c["font-bold"]}),f('button[data-event="italic"]',function(){return"italic"===c["font-italic"]}),f('button[data-event="underline"]',function(){return"underline"===c["font-underline"]}),f('button[data-event="strikethrough"]',function(){return"strikethrough"===c["font-strikethrough"]}),f('button[data-event="justifyLeft"]',function(){return"left"===c["text-align"]||"start"===c["text-align"]}),f('button[data-event="justifyCenter"]',function(){return"center"===c["text-align"]}),f('button[data-event="justifyRight"]',function(){return"right"===c["text-align"]}),f('button[data-event="justifyFull"]',function(){return"justify"===c["text-align"]}),f('button[data-event="insertUnorderedList"]',function(){return"unordered"===c["list-style"]}),f('button[data-event="insertOrderedList"]',function(){return"ordered"===c["list-style"]})},this.updateRecentColor=function(b,c,d){var e=a(b).closest(".note-color"),f=e.find(".note-recent-color"),g=JSON.parse(f.attr("data-value"));g[c]=d,f.attr("data-value",JSON.stringify(g));var h="backColor"===c?"background-color":"color";f.find("i").css(h,d)},this.updateFullscreen=function(a,b){var c=a.find('button[data-event="fullscreen"]');c.toggleClass("active",b)},this.updateCodeview=function(a,b){var c=a.find('button[data-event="codeview"]');c.toggleClass("active",b)},this.activate=function(a){a.find("button").not('button[data-event="codeview"]').removeClass("disabled")},this.deactivate=function(a){a.find("button").not('button[data-event="codeview"]').addClass("disabled")}},p=function(){var b=function(b,c){var d=a(c),e=d.position(),f=d.height();b.css({display:"block",left:e.left,top:e.top+f})};this.update=function(a,c){var d=a.find(".note-link-popover");if(c.anchor){var e=d.find("a");e.attr("href",c.anchor.href).html(c.anchor.href),b(d,c.anchor)}else d.hide();var f=a.find(".note-image-popover");c.image?b(f,c.image):f.hide()},this.hide=function(a){a.children().hide()}},q=function(){this.update=function(b,c){var d=b.find(".note-control-selection");if(c.image){var e=a(c.image),f=e.position(),g={w:e.width(),h:e.height()};d.css({display:"block",left:f.left,top:f.top,width:g.w,height:g.h}).data("target",c.image);var h=g.w+"x"+g.h;d.find(".note-control-selection-info").text(h)}else d.hide()},this.hide=function(a){a.children().hide()}},r=function(){var b=function(a,b){a.toggleClass("disabled",!b),a.attr("disabled",!b)};this.showImageDialog=function(c,d){return a.Deferred(function(a){var e=d.find(".note-image-dialog"),f=d.find(".note-image-input"),g=d.find(".note-image-url"),h=d.find(".note-image-btn");e.one("shown.bs.modal",function(){f.replaceWith(f.clone().on("change",function(){e.modal("hide"),a.resolve(this.files)})),h.click(function(b){b.preventDefault(),e.modal("hide"),a.resolve(g.val())}),g.keyup(function(){b(h,g.val())}).val("").focus()}).one("hidden.bs.modal",function(){c.focus(),f.off("change"),g.off("keyup"),h.off("click")}).modal("show")})},this.showVideoDialog=function(c,d,e){return a.Deferred(function(a){var f=d.find(".note-video-dialog"),g=f.find(".note-video-url"),h=f.find(".note-video-btn");f.one("shown.bs.modal",function(){g.val(e.text).keyup(function(){b(h,g.val())}).trigger("keyup").trigger("focus"),h.click(function(b){b.preventDefault(),f.modal("hide"),a.resolve(g.val())})}).one("hidden.bs.modal",function(){c.focus(),g.off("keyup"),h.off("click")}).modal("show")})},this.showLinkDialog=function(c,d,e){return a.Deferred(function(a){var f=d.find(".note-link-dialog"),g=f.find(".note-link-text"),h=f.find(".note-link-url"),i=f.find(".note-link-btn"),j=f.find("input[type=checkbox]");f.one("shown.bs.modal",function(){g.val(e.text),h.keyup(function(){b(i,h.val()),e.text||g.val(h.val())}).val(e.url).trigger("focus"),j.prop("checked",e.newWindow),i.one("click",function(b){b.preventDefault(),f.modal("hide"),a.resolve(h.val(),j.is(":checked"))})}).one("hidden.bs.modal",function(){c.focus(),h.off("keyup")}).modal("show")}).promise()},this.showHelpDialog=function(a,b){var c=b.find(".note-help-dialog");c.one("hidden.bs.modal",function(){a.focus()}).modal("show")}},s=function(){var d=new m,g=new o,j=new p,k=new q,l=new r,s=function(b){var c=a(b).closest(".note-editor");return c.length>0&&f.buildLayoutInfo(c)},t=function(b,c){d.restoreRange(b);var e=b.data("callbacks");e.onImageUpload?e.onImageUpload(c,d,b):a.each(c,function(a,c){h.readFileAsDataURL(c).then(function(a){d.insertImage(b,a)}).fail(function(){e.onImageUploadError&&e.onImageUploadError()})})},u=function(a){f.isImg(a.target)&&a.preventDefault()},v=function(a){var b=s(a.currentTarget||a.target),c=d.currentStyle(a.target);c&&(g.update(b.toolbar(),c),j.update(b.popover(),c),k.update(b.handle(),c))},w=function(a){var b=s(a.currentTarget||a.target);j.hide(b.popover()),k.hide(b.handle())},x=function(a){var b=a.originalEvent;if(b.clipboardData&&b.clipboardData.items&&b.clipboardData.items.length){var c=s(a.currentTarget||a.target),d=e.head(b.clipboardData.items),f="file"===d.kind&&-1!==d.type.indexOf("image/");f&&t(c.editable(),[d.getAsFile()])}},y=function(b){if(f.isControlSizing(b.target)){var c=s(b.target),e=c.handle(),g=c.popover(),h=c.editable(),i=c.editor(),l=e.find(".note-control-selection").data("target"),m=a(l),n=m.offset(),o=a(document).scrollTop();i.on("mousemove",function(a){d.resizeTo({x:a.clientX-n.left,y:a.clientY-(n.top-o)},m,!a.shiftKey),k.update(e,{image:l}),j.update(g,{image:l})}).one("mouseup",function(){i.off("mousemove")}),m.data("ratio")||m.data("ratio",m.height()/m.width()),d.recordUndo(h),b.stopPropagation(),b.preventDefault()}},z=function(b){var c=a(b.target).closest("[data-event]");c.length>0&&b.preventDefault()},A=function(e){var h=a(e.target).closest("[data-event]");if(h.length>0){var i,j,k,m=h.attr("data-event"),n=h.attr("data-value"),o=s(e.target),p=o.editor(),q=o.toolbar(),r=o.dialog(),u=o.editable(),w=o.codable(),x=p.data("options");if(-1!==a.inArray(m,["resize","floatMe","removeMedia"])){var y=o.handle(),z=y.find(".note-control-selection");k=a(z.data("target"))}if(d[m]&&(u.trigger("focus"),d[m](u,n,k)),-1!==a.inArray(m,["backColor","foreColor"]))g.updateRecentColor(h[0],m,n);else if("showLinkDialog"===m){u.focus();var A=d.getLinkInfo();d.saveRange(u),l.showLinkDialog(u,r,A).then(function(a,b){d.restoreRange(u),d.createLink(u,a,b)})}else if("showImageDialog"===m)u.focus(),l.showImageDialog(u,r).then(function(a){"string"==typeof a?(d.restoreRange(u),d.insertImage(u,a)):t(u,a)});else if("showVideoDialog"===m){u.focus();var B=d.getVideoInfo();d.saveRange(u),l.showVideoDialog(u,r,B).then(function(a){d.restoreRange(u),d.insertVideo(u,a)})}else if("showHelpDialog"===m)l.showHelpDialog(u,r);else if("fullscreen"===m){var C=a("html, body"),D=function(a){p.css("width",a.w),u.css("height",a.h),w.css("height",a.h),w.data("cmEditor")&&w.data("cmEditor").setSize(null,a.h)};p.toggleClass("fullscreen");var E=p.hasClass("fullscreen");E?(u.data("orgHeight",u.css("height")),a(window).on("resize",function(){D({w:a(window).width(),h:a(window).height()-q.outerHeight()})}).trigger("resize"),C.css("overflow","hidden")):(a(window).off("resize"),D({w:x.width||"",h:u.data("orgHeight")}),C.css("overflow","auto")),g.updateFullscreen(q,E)}else if("codeview"===m){p.toggleClass("codeview");var F=p.hasClass("codeview");if(F){if(w.val(u.html()),w.height(u.height()),g.deactivate(q),w.focus(),c.bCodeMirror){j=b.fromTextArea(w[0],a.extend({mode:"text/html",lineNumbers:!0},x.codemirror));var G=p.data("options").codemirror.tern||!1;G&&(i=new b.TernServer(G),j.ternServer=i,j.on("cursorActivity",function(a){i.updateArgHints(a)})),j.setSize(null,u.outerHeight()),j.autoFormatRange&&j.autoFormatRange({line:0,ch:0},{line:j.lineCount(),ch:j.getTextArea().value.length}),w.data("cmEditor",j)}}else c.bCodeMirror&&(j=w.data("cmEditor"),w.val(j.getValue()),j.toTextArea()),u.html(w.val()||f.emptyPara),u.height(x.height?w.height():"auto"),g.activate(q),u.focus();g.updateCodeview(o.toolbar(),F)}v(e)}},B=24,C=function(b){var c=a(document),d=s(b.target).editable(),e=d.offset().top-c.scrollTop();c.on("mousemove",function(a){var b=a.clientY-(e+B);d.height(b)}).one("mouseup",function(){c.off("mousemove")}),b.stopPropagation(),b.preventDefault()},D=18,E=function(b){var c,d=a(b.target.parentNode),e=d.next(),f=d.find(".note-dimension-picker-mousecatcher"),g=d.find(".note-dimension-picker-highlighted"),h=d.find(".note-dimension-picker-unhighlighted");if(void 0===b.offsetX){var i=a(b.target).offset();c={x:b.pageX-i.left,y:b.pageY-i.top}}else c={x:b.offsetX,y:b.offsetY};var j={c:Math.ceil(c.x/D)||1,r:Math.ceil(c.y/D)||1};g.css({width:j.c+"em",height:j.r+"em"}),f.attr("data-value",j.c+"x"+j.r),3<j.c&&j.c<10&&h.css({width:j.c+1+"em"}),3<j.r&&j.r<10&&h.css({height:j.r+1+"em"}),e.html(j.c+" x "+j.r)},F=function(b){var c=a(),d=b.dropzone,e=b.dropzone.find(".note-dropzone-message");a(document).on("dragenter",function(a){var f=b.editor.hasClass("codeview");f||0!==c.length||(b.editor.addClass("dragover"),d.width(b.editor.width()),d.height(b.editor.height()),e.text("Drag Image Here")),c=c.add(a.target)}).on("dragleave",function(a){c=c.not(a.target),0===c.length&&b.editor.removeClass("dragover")}).on("drop",function(){c=a(),b.editor.removeClass("dragover")}),d.on("dragenter",function(){d.addClass("hover"),e.text("Drop Image")}).on("dragleave",function(){d.removeClass("hover"),e.text("Drag Image Here")}),d.on("drop",function(a){var b=a.originalEvent.dataTransfer;if(b&&b.files){var c=s(a.currentTarget||a.target);c.editable().focus(),t(c.editable(),b.files)}a.preventDefault()}).on("dragover",!1)};this.bindKeyMap=function(a,b){var c=a.editor,e=a.editable;e.on("keydown",function(a){var f=[];a.metaKey&&f.push("CMD"),a.ctrlKey&&f.push("CTRL"),a.shiftKey&&f.push("SHIFT");var g=i.nameFromCode[a.keyCode];g&&f.push(g);var h=b[f.join("+")];h?(a.preventDefault(),d[h](e,c.data("options"))):i.isEdit(a.keyCode)&&d.recordUndo(e)})},this.attach=function(a,b){this.bindKeyMap(a,b.keyMap[c.bMac?"mac":"pc"]),a.editable.on("mousedown",u),a.editable.on("keyup mouseup",v),a.editable.on("scroll",w),a.editable.on("paste",x),b.disableDragAndDrop||F(a),a.handle.on("mousedown",y),a.toolbar.on("click",A),a.popover.on("click",A),a.toolbar.on("mousedown",z),a.popover.on("mousedown",z),a.statusbar.on("mousedown",C);var e=a.toolbar,f=e.find(".note-dimension-picker-mousecatcher");if(f.on("mousemove",E),a.editable.on("blur",function(){d.saveRange(a.editable)}),a.editor.data("options",b),b.styleWithSpan&&!c.bMSIE&&setTimeout(function(){document.execCommand("styleWithCSS",0,!0)}),a.editable.data("NoteHistory",new n),b.onenter&&a.editable.keypress(function(a){a.keyCode===i.ENTER&&b.onenter(a)}),b.onfocus&&a.editable.focus(b.onfocus),b.onblur&&a.editable.blur(b.onblur),b.onkeyup&&a.editable.keyup(b.onkeyup),b.onkeydown&&a.editable.keydown(b.onkeydown),b.onpaste&&a.editable.on("paste",b.onpaste),b.onToolbarClick&&a.toolbar.click(b.onToolbarClick),b.onChange){var g=function(){b.onChange(a.editable,a.editable.html())};c.bMSIE?a.editable.on("DOMCharacterDataModified, DOMSubtreeModified, DOMNodeInserted",g):a.editable.on("input",g)}a.editable.data("callbacks",{onAutoSave:b.onAutoSave,onImageUpload:b.onImageUpload,onImageUploadError:b.onImageUploadError,onFileUpload:b.onFileUpload,onFileUploadError:b.onFileUpload})},this.dettach=function(a){a.editable.off(),a.toolbar.off(),a.handle.off(),a.popover.off()}},t=function(){var b,d,e,g,h;b={picture:function(a){return'<button type="button" class="btn btn-default btn-sm btn-small" title="'+a.image.image+'" data-event="showImageDialog" tabindex="-1"><i class="fa fa-picture-o icon-picture"></i></button>'},link:function(a){return'<button type="button" class="btn btn-default btn-sm btn-small" title="'+a.link.link+'" data-event="showLinkDialog" tabindex="-1"><i class="fa fa-link icon-link"></i></button>'},video:function(a){return'<button type="button" class="btn btn-default btn-sm btn-small" title="'+a.video.video+'" data-event="showVideoDialog" tabindex="-1"><i class="fa fa-youtube-play icon-play"></i></button>'},table:function(a){return'<button type="button" class="btn btn-default btn-sm btn-small dropdown-toggle" title="'+a.table.table+'" data-toggle="dropdown" tabindex="-1"><i class="fa fa-table icon-table"></i> <span class="caret"></span></button><ul class="dropdown-menu"><div class="note-dimension-picker"><div class="note-dimension-picker-mousecatcher" data-event="insertTable" data-value="1x1"></div><div class="note-dimension-picker-highlighted"></div><div class="note-dimension-picker-unhighlighted"></div></div><div class="note-dimension-display"> 1 x 1 </div></ul>' -},style:function(a){return'<button type="button" class="btn btn-default btn-sm btn-small dropdown-toggle" title="'+a.style.style+'" data-toggle="dropdown" tabindex="-1"><i class="fa fa-magic icon-magic"></i> <span class="caret"></span></button><ul class="dropdown-menu"><li><a data-event="formatBlock" data-value="p">'+a.style.normal+'</a></li><li><a data-event="formatBlock" data-value="blockquote"><blockquote>'+a.style.blockquote+'</blockquote></a></li><li><a data-event="formatBlock" data-value="pre">'+a.style.pre+'</a></li><li><a data-event="formatBlock" data-value="h1"><h1>'+a.style.h1+'</h1></a></li><li><a data-event="formatBlock" data-value="h2"><h2>'+a.style.h2+'</h2></a></li><li><a data-event="formatBlock" data-value="h3"><h3>'+a.style.h3+'</h3></a></li><li><a data-event="formatBlock" data-value="h4"><h4>'+a.style.h4+'</h4></a></li><li><a data-event="formatBlock" data-value="h5"><h5>'+a.style.h5+'</h5></a></li><li><a data-event="formatBlock" data-value="h6"><h6>'+a.style.h6+"</h6></a></li></ul>"},fontname:function(a){var b=["Serif","Sans","Arial","Arial Black","Courier","Courier New","Comic Sans MS","Helvetica","Impact","Lucida Grande","Lucida Sans","Tahoma","Times","Times New Roman","Verdana"],c='<button type="button" class="btn btn-default btn-sm btn-small dropdown-toggle" data-toggle="dropdown" title="'+a.font.name+'" tabindex="-1"><span class="note-current-fontname">Arial</span> <b class="caret"></b></button>';c+='<ul class="dropdown-menu">';for(var d=0;d<b.length;d++)c+='<li><a data-event="fontName" data-value="'+b[d]+'"><i class="fa fa-check icon-ok"></i> '+b[d]+"</a></li>";return c+="</ul>"},fontsize:function(a){return'<button type="button" class="btn btn-default btn-sm btn-small dropdown-toggle" data-toggle="dropdown" title="'+a.font.size+'" tabindex="-1"><span class="note-current-fontsize">11</span> <b class="caret"></b></button><ul class="dropdown-menu"><li><a data-event="fontSize" data-value="8"><i class="fa fa-check icon-ok"></i> 8</a></li><li><a data-event="fontSize" data-value="9"><i class="fa fa-check icon-ok"></i> 9</a></li><li><a data-event="fontSize" data-value="10"><i class="fa fa-check icon-ok"></i> 10</a></li><li><a data-event="fontSize" data-value="11"><i class="fa fa-check icon-ok"></i> 11</a></li><li><a data-event="fontSize" data-value="12"><i class="fa fa-check icon-ok"></i> 12</a></li><li><a data-event="fontSize" data-value="14"><i class="fa fa-check icon-ok"></i> 14</a></li><li><a data-event="fontSize" data-value="18"><i class="fa fa-check icon-ok"></i> 18</a></li><li><a data-event="fontSize" data-value="24"><i class="fa fa-check icon-ok"></i> 24</a></li><li><a data-event="fontSize" data-value="36"><i class="fa fa-check icon-ok"></i> 36</a></li></ul>'},color:function(a){return'<button type="button" class="btn btn-default btn-sm btn-small note-recent-color" title="'+a.color.recent+'" data-event="color" data-value=\'{"backColor":"yellow"}\' tabindex="-1"><i class="fa fa-font icon-font" style="color:black;background-color:yellow;"></i></button><button type="button" class="btn btn-default btn-sm btn-small dropdown-toggle" title="'+a.color.more+'" data-toggle="dropdown" tabindex="-1"><span class="caret"></span></button><ul class="dropdown-menu"><li><div class="btn-group"><div class="note-palette-title">'+a.color.background+'</div><div class="note-color-reset" data-event="backColor" data-value="inherit" title="'+a.color.transparent+'">'+a.color.setTransparent+'</div><div class="note-color-palette" data-target-event="backColor"></div></div><div class="btn-group"><div class="note-palette-title">'+a.color.foreground+'</div><div class="note-color-reset" data-event="foreColor" data-value="inherit" title="'+a.color.reset+'">'+a.color.resetToDefault+'</div><div class="note-color-palette" data-target-event="foreColor"></div></div></li></ul>'},bold:function(a){return'<button type="button" class="btn btn-default btn-sm btn-small" title="'+a.font.bold+'" data-shortcut="Ctrl+B" data-mac-shortcut="⌘+B" data-event="bold" tabindex="-1"><i class="fa fa-bold icon-bold"></i></button>'},italic:function(a){return'<button type="button" class="btn btn-default btn-sm btn-small" title="'+a.font.italic+'" data-shortcut="Ctrl+I" data-mac-shortcut="⌘+I" data-event="italic" tabindex="-1"><i class="fa fa-italic icon-italic"></i></button>'},underline:function(a){return'<button type="button" class="btn btn-default btn-sm btn-small" title="'+a.font.underline+'" data-shortcut="Ctrl+U" data-mac-shortcut="⌘+U" data-event="underline" tabindex="-1"><i class="fa fa-underline icon-underline"></i></button>'},strike:function(a){return'<button type="button" class="btn btn-default btn-sm btn-small" title="'+a.font.strike+'" data-event="strikethrough" tabindex="-1"><i class="fa fa-strikethrough icon-strikethrough"></i></button>'},clear:function(a){return'<button type="button" class="btn btn-default btn-sm btn-small" title="'+a.font.clear+'" data-shortcut="Ctrl+\\" data-mac-shortcut="⌘+\\" data-event="removeFormat" tabindex="-1"><i class="fa fa-eraser icon-eraser"></i></button>'},ul:function(a){return'<button type="button" class="btn btn-default btn-sm btn-small" title="'+a.lists.unordered+'" data-shortcut="Ctrl+Shift+8" data-mac-shortcut="⌘+⇧+7" data-event="insertUnorderedList" tabindex="-1"><i class="fa fa-list-ul icon-list-ul"></i></button>'},ol:function(a){return'<button type="button" class="btn btn-default btn-sm btn-small" title="'+a.lists.ordered+'" data-shortcut="Ctrl+Shift+7" data-mac-shortcut="⌘+⇧+8" data-event="insertOrderedList" tabindex="-1"><i class="fa fa-list-ol icon-list-ol"></i></button>'},paragraph:function(a){return'<button type="button" class="btn btn-default btn-sm btn-small dropdown-toggle" title="'+a.paragraph.paragraph+'" data-toggle="dropdown" tabindex="-1"><i class="fa fa-align-left icon-align-left"></i> <span class="caret"></span></button><div class="dropdown-menu"><div class="note-align btn-group"><button type="button" class="btn btn-default btn-sm btn-small" title="'+a.paragraph.left+'" data-shortcut="Ctrl+Shift+L" data-mac-shortcut="⌘+⇧+L" data-event="justifyLeft" tabindex="-1"><i class="fa fa-align-left icon-align-left"></i></button><button type="button" class="btn btn-default btn-sm btn-small" title="'+a.paragraph.center+'" data-shortcut="Ctrl+Shift+E" data-mac-shortcut="⌘+⇧+E" data-event="justifyCenter" tabindex="-1"><i class="fa fa-align-center icon-align-center"></i></button><button type="button" class="btn btn-default btn-sm btn-small" title="'+a.paragraph.right+'" data-shortcut="Ctrl+Shift+R" data-mac-shortcut="⌘+⇧+R" data-event="justifyRight" tabindex="-1"><i class="fa fa-align-right icon-align-right"></i></button><button type="button" class="btn btn-default btn-sm btn-small" title="'+a.paragraph.justify+'" data-shortcut="Ctrl+Shift+J" data-mac-shortcut="⌘+⇧+J" data-event="justifyFull" tabindex="-1"><i class="fa fa-align-justify icon-align-justify"></i></button></div><div class="note-list btn-group"><button type="button" class="btn btn-default btn-sm btn-small" title="'+a.paragraph.outdent+'" data-shortcut="Ctrl+[" data-mac-shortcut="⌘+[" data-event="outdent" tabindex="-1"><i class="fa fa-outdent icon-indent-left"></i></button><button type="button" class="btn btn-default btn-sm btn-small" title="'+a.paragraph.indent+'" data-shortcut="Ctrl+]" data-mac-shortcut="⌘+]" data-event="indent" tabindex="-1"><i class="fa fa-indent icon-indent-right"></i></button></div></div>'},height:function(a){return'<button type="button" class="btn btn-default btn-sm btn-small dropdown-toggle" data-toggle="dropdown" title="'+a.font.height+'" tabindex="-1"><i class="fa fa-text-height icon-text-height"></i>&nbsp; <b class="caret"></b></button><ul class="dropdown-menu"><li><a data-event="lineHeight" data-value="1.0"><i class="fa fa-check icon-ok"></i> 1.0</a></li><li><a data-event="lineHeight" data-value="1.2"><i class="fa fa-check icon-ok"></i> 1.2</a></li><li><a data-event="lineHeight" data-value="1.4"><i class="fa fa-check icon-ok"></i> 1.4</a></li><li><a data-event="lineHeight" data-value="1.5"><i class="fa fa-check icon-ok"></i> 1.5</a></li><li><a data-event="lineHeight" data-value="1.6"><i class="fa fa-check icon-ok"></i> 1.6</a></li><li><a data-event="lineHeight" data-value="1.8"><i class="fa fa-check icon-ok"></i> 1.8</a></li><li><a data-event="lineHeight" data-value="2.0"><i class="fa fa-check icon-ok"></i> 2.0</a></li><li><a data-event="lineHeight" data-value="3.0"><i class="fa fa-check icon-ok"></i> 3.0</a></li></ul>'},help:function(a){return'<button type="button" class="btn btn-default btn-sm btn-small" title="'+a.options.help+'" data-event="showHelpDialog" tabindex="-1"><i class="fa fa-question icon-question"></i></button>'},fullscreen:function(a){return'<button type="button" class="btn btn-default btn-sm btn-small" title="'+a.options.fullscreen+'" data-event="fullscreen" tabindex="-1"><i class="fa fa-arrows-alt icon-fullscreen"></i></button>'},codeview:function(a){return'<button type="button" class="btn btn-default btn-sm btn-small" title="'+a.options.codeview+'" data-event="codeview" tabindex="-1"><i class="fa fa-code icon-code"></i></button>'},undo:function(a){return'<button type="button" class="btn btn-default btn-sm btn-small" title="'+a.history.undo+'" data-event="undo" tabindex="-1"><i class="fa fa-undo icon-undo"></i></button>'},redo:function(a){return'<button type="button" class="btn btn-default btn-sm btn-small" title="'+a.history.redo+'" data-event="redo" tabindex="-1"><i class="fa fa-repeat icon-repeat"></i></button>'}},d=function(a){return'<div class="note-popover"><div class="note-link-popover popover bottom in" style="display: none;"><div class="arrow"></div><div class="popover-content note-link-content"><a href="http://www.google.com" target="_blank">www.google.com</a>&nbsp;&nbsp;<div class="note-insert btn-group"><button type="button" class="btn btn-default btn-sm btn-small" title="'+a.link.edit+'" data-event="showLinkDialog" tabindex="-1"><i class="fa fa-edit icon-edit"></i></button><button type="button" class="btn btn-default btn-sm btn-small" title="'+a.link.unlink+'" data-event="unlink" tabindex="-1"><i class="fa fa-unlink icon-unlink"></i></button></div></div></div><div class="note-image-popover popover bottom in" style="display: none;"><div class="arrow"></div><div class="popover-content note-image-content"><div class="btn-group"><button type="button" class="btn btn-default btn-sm btn-small" title="'+a.image.resizeFull+'" data-event="resize" data-value="1" tabindex="-1"><span class="note-fontsize-10">100%</span> </button><button type="button" class="btn btn-default btn-sm btn-small" title="'+a.image.resizeHalf+'" data-event="resize" data-value="0.5" tabindex="-1"><span class="note-fontsize-10">50%</span> </button><button type="button" class="btn btn-default btn-sm btn-small" title="'+a.image.resizeQuarter+'" data-event="resize" data-value="0.25" tabindex="-1"><span class="note-fontsize-10">25%</span> </button></div><div class="btn-group"><button type="button" class="btn btn-default btn-sm btn-small" title="'+a.image.floatLeft+'" data-event="floatMe" data-value="left" tabindex="-1"><i class="fa fa-align-left icon-align-left"></i></button><button type="button" class="btn btn-default btn-sm btn-small" title="'+a.image.floatRight+'" data-event="floatMe" data-value="right" tabindex="-1"><i class="fa fa-align-right icon-align-right"></i></button><button type="button" class="btn btn-default btn-sm btn-small" title="'+a.image.floatNone+'" data-event="floatMe" data-value="none" tabindex="-1"><i class="fa fa-align-justify icon-align-justify"></i></button></div><div class="btn-group"><button type="button" class="btn btn-default btn-sm btn-small" title="'+a.image.remove+'" data-event="removeMedia" data-value="none" tabindex="-1"><i class="fa fa-trash-o icon-trash"></i></button></div></div></div></div>'};var e=function(){return'<div class="note-handle"><div class="note-control-selection"><div class="note-control-selection-bg"></div><div class="note-control-holder note-control-nw"></div><div class="note-control-holder note-control-ne"></div><div class="note-control-holder note-control-sw"></div><div class="note-control-sizing note-control-se"></div><div class="note-control-selection-info"></div></div></div>'},i=function(a){return'<table class="note-shortcut"><thead><tr><th></th><th>'+a.shortcut.textFormatting+"</th></tr></thead><tbody><tr><td>⌘ + B</td><td>"+a.font.bold+"</td></tr><tr><td>⌘ + I</td><td>"+a.font.italic+"</td></tr><tr><td>⌘ + U</td><td>"+a.font.underline+"</td></tr><tr><td>⌘ + ⇧ + S</td><td>"+a.font.strike+"</td></tr><tr><td>⌘ + \\</td><td>"+a.font.clear+"</td></tr></tr></tbody></table>"},j=function(a){return'<table class="note-shortcut"><thead><tr><th></th><th>'+a.shortcut.action+"</th></tr></thead><tbody><tr><td>⌘ + Z</td><td>"+a.history.undo+"</td></tr><tr><td>⌘ + ⇧ + Z</td><td>"+a.history.redo+"</td></tr><tr><td>⌘ + ]</td><td>"+a.paragraph.indent+"</td></tr><tr><td>⌘ + [</td><td>"+a.paragraph.outdent+"</td></tr><tr><td>⌘ + ENTER</td><td>"+a.hr.insert+"</td></tr></tbody></table>"},k=function(a,b){var c='<table class="note-shortcut"><thead><tr><th></th><th>'+a.shortcut.extraKeys+"</th></tr></thead><tbody>";for(var d in b.extraKeys)b.extraKeys.hasOwnProperty(d)&&(c+="<tr><td>"+d+"</td><td>"+b.extraKeys[d]+"</td></tr>");return c+="</tbody></table>"},l=function(a){return'<table class="note-shortcut"><thead><tr><th></th><th>'+a.shortcut.paragraphFormatting+"</th></tr></thead><tbody><tr><td>⌘ + ⇧ + L</td><td>"+a.paragraph.left+"</td></tr><tr><td>⌘ + ⇧ + E</td><td>"+a.paragraph.center+"</td></tr><tr><td>⌘ + ⇧ + R</td><td>"+a.paragraph.right+"</td></tr><tr><td>⌘ + ⇧ + J</td><td>"+a.paragraph.justify+"</td></tr><tr><td>⌘ + ⇧ + NUM7</td><td>"+a.lists.ordered+"</td></tr><tr><td>⌘ + ⇧ + NUM8</td><td>"+a.lists.unordered+"</td></tr></tbody></table>"},m=function(a){return'<table class="note-shortcut"><thead><tr><th></th><th>'+a.shortcut.documentStyle+"</th></tr></thead><tbody><tr><td>⌘ + NUM0</td><td>"+a.style.normal+"</td></tr><tr><td>⌘ + NUM1</td><td>"+a.style.h1+"</td></tr><tr><td>⌘ + NUM2</td><td>"+a.style.h2+"</td></tr><tr><td>⌘ + NUM3</td><td>"+a.style.h3+"</td></tr><tr><td>⌘ + NUM4</td><td>"+a.style.h4+"</td></tr><tr><td>⌘ + NUM5</td><td>"+a.style.h5+"</td></tr><tr><td>⌘ + NUM6</td><td>"+a.style.h6+"</td></tr></tbody></table>"},n=function(a,b){var c='<table class="note-shortcut-layout"><tbody><tr><td>'+j(a,b)+"</td><td>"+i(a,b)+"</td></tr><tr><td>"+m(a,b)+"</td><td>"+l(a,b)+"</td></tr>";return b.extraKeys&&(c+='<tr><td colspan="2">'+k(a,b)+"</td></tr>"),c+="</tbody</table>"},o=function(a){return a.replace(/⌘/g,"Ctrl").replace(/⇧/g,"Shift")};g=function(a,b){var d=function(){return'<div class="note-image-dialog modal" aria-hidden="false"><div class="modal-dialog"><div class="modal-content"><div class="modal-header"><button type="button" class="close" aria-hidden="true" tabindex="-1">&times;</button><h4>'+a.image.insert+'</h4></div><div class="modal-body"><div class="row-fluid"><h5>'+a.image.selectFromFiles+'</h5><input class="note-image-input" type="file" name="files" accept="image/*" /><h5>'+a.image.url+'</h5><input class="note-image-url form-control span12" type="text" /></div></div><div class="modal-footer"><button href="#" class="btn btn-primary note-image-btn disabled" disabled="disabled">'+a.image.insert+"</button></div></div></div></div>"},e=function(){return'<div class="note-link-dialog modal" aria-hidden="false"><div class="modal-dialog"><div class="modal-content"><div class="modal-header"><button type="button" class="close" aria-hidden="true" tabindex="-1">&times;</button><h4>'+a.link.insert+'</h4></div><div class="modal-body"><div class="row-fluid"><div class="form-group"><label>'+a.link.textToDisplay+'</label><input class="note-link-text form-control span12" disabled type="text" /></div><div class="form-group"><label>'+a.link.url+'</label><input class="note-link-url form-control span12" type="text" /></div>'+(b.disableLinkTarget?"":'<div class="checkbox"><label><input type="checkbox" checked> '+a.link.openInNewWindow+"</label></div>")+'</div></div><div class="modal-footer"><button href="#" class="btn btn-primary note-link-btn disabled" disabled="disabled">'+a.link.insert+"</button></div></div></div></div>"},f=function(){return'<div class="note-video-dialog modal" aria-hidden="false"><div class="modal-dialog"><div class="modal-content"><div class="modal-header"><button type="button" class="close" aria-hidden="true" tabindex="-1">&times;</button><h4>'+a.video.insert+'</h4></div><div class="modal-body"><div class="row-fluid"><div class="form-group"><label>'+a.video.url+'</label>&nbsp;<small class="text-muted">'+a.video.providers+'</small><input class="note-video-url form-control span12" type="text" /></div></div></div><div class="modal-footer"><button href="#" class="btn btn-primary note-video-btn disabled" disabled="disabled">'+a.video.insert+"</button></div></div></div></div>"},g=function(){return'<div class="note-help-dialog modal" aria-hidden="false"><div class="modal-dialog"><div class="modal-content"><div class="modal-body"><a class="modal-close pull-right" aria-hidden="true" tabindex="-1">'+a.shortcut.close+'</a><div class="title">'+a.shortcut.shortcuts+"</div>"+(c.bMac?n(a,b):o(n(a,b)))+'<p class="text-center"><a href="//hackerwins.github.io/summernote/" target="_blank">Summernote 0.5.2</a> · <a href="//github.com/HackerWins/summernote" target="_blank">Project</a> · <a href="//github.com/HackerWins/summernote/issues" target="_blank">Issues</a></p></div></div></div></div>'};return'<div class="note-dialog">'+d()+e()+f()+g()+"</div>"},h=function(){return'<div class="note-resizebar"><div class="note-icon-bar"></div><div class="note-icon-bar"></div><div class="note-icon-bar"></div></div>'};var p=function(b,d){b.find("button").each(function(b,d){var e=a(d),f=e.attr(c.bMac?"data-mac-shortcut":"data-shortcut");f&&e.attr("title",function(a,b){return b+" ("+f+")"})}).tooltip({container:"body",trigger:"hover",placement:d||"top"}).on("click",function(){a(this).tooltip("hide")})},q=[["#000000","#424242","#636363","#9C9C94","#CEC6CE","#EFEFEF","#F7F7F7","#FFFFFF"],["#FF0000","#FF9C00","#FFFF00","#00FF00","#00FFFF","#0000FF","#9C00FF","#FF00FF"],["#F7C6CE","#FFE7CE","#FFEFC6","#D6EFD6","#CEDEE7","#CEE7F7","#D6D6E7","#E7D6DE"],["#E79C9C","#FFC69C","#FFE79C","#B5D6A5","#A5C6CE","#9CC6EF","#B5A5D6","#D6A5BD"],["#E76363","#F7AD6B","#FFD663","#94BD7B","#73A5AD","#6BADDE","#8C7BC6","#C67BA5"],["#CE0000","#E79439","#EFC631","#6BA54A","#4A7B8C","#3984C6","#634AA5","#A54A7B"],["#9C0000","#B56308","#BD9400","#397B21","#104A5A","#085294","#311873","#731842"],["#630000","#7B3900","#846300","#295218","#083139","#003163","#21104A","#4A1031"]],r=function(b){b.find(".note-color-palette").each(function(){for(var b=a(this),c=b.attr("data-target-event"),d=[],e=0,f=q.length;f>e;e++){for(var g=q[e],h=[],i=0,j=g.length;j>i;i++){var k=g[i];h.push(['<button type="button" class="note-color-btn" style="background-color:',k,';" data-event="',c,'" data-value="',k,'" title="',k,'" data-toggle="button" tabindex="-1"></button>'].join(""))}d.push("<div>"+h.join("")+"</div>")}b.html(d.join(""))})};this.createLayout=function(c,i){var j=c.next();if(!j||!j.hasClass("note-editor")){var k=a('<div class="note-editor"></div>');i.width&&k.width(i.width),i.height>0&&a('<div class="note-statusbar">'+h()+"</div>").prependTo(k);var l=!c.is(":disabled"),m=a('<div class="note-editable" contentEditable="'+l+'"></div>').prependTo(k);i.height&&m.height(i.height),i.direction&&m.attr("dir",i.direction),m.html(f.html(c)||f.emptyPara),a('<textarea class="note-codable"></textarea>').prependTo(k);for(var n=a.summernote.lang[i.lang],o="",q=0,s=i.toolbar.length;s>q;q++){var t=i.toolbar[q];o+='<div class="note-'+t[0]+' btn-group">';for(var u=0,v=t[1].length;v>u;u++)o+=b[t[1][u]](n);o+="</div>"}o='<div class="note-toolbar btn-toolbar">'+o+"</div>";var w=a(o).prependTo(k);r(w),p(w,"bottom");var x=a(d(n)).prependTo(k);p(x),a(e()).prependTo(k);var y=a(g(n,i)).prependTo(k);y.find("button.close, a.modal-close").click(function(){a(this).closest(".modal").modal("hide")}),a('<div class="note-dropzone"><div class="note-dropzone-message"></div></div>').prependTo(k),k.insertAfter(c),c.hide()}},this.layoutInfoFromHolder=function(a){var b=a.next();if(b.hasClass("note-editor")){var c=f.buildLayoutInfo(b);for(var d in c)c.hasOwnProperty(d)&&(c[d]=c[d].call());return c}},this.removeLayout=function(a){var b=this.layoutInfoFromHolder(a);b&&(a.html(b.editable.html()),b.editor.remove(),a.show())}};a.summernote=a.summernote||{},a.extend(a.summernote,g);var u=new t,v=new s;a.fn.extend({summernote:function(b){if(b=a.extend({},a.summernote.options,b),this.each(function(c,d){var e=a(d);u.createLayout(e,b);var g=u.layoutInfoFromHolder(e);v.attach(g,b),f.isTextarea(e[0])&&e.closest("form").submit(function(){e.html(e.code())})}),this.first()&&b.focus){var c=u.layoutInfoFromHolder(this.first());c.editable.focus()}return this.length>0&&b.oninit&&b.oninit(),this},code:function(b){if(void 0===b){var d=this.first();if(0===d.length)return;var e=u.layoutInfoFromHolder(d);if(e&&e.editable){var f=e.editor.hasClass("codeview");return f&&c.bCodeMirror&&e.codable.data("cmEditor").save(),f?e.codable.val():e.editable.html()}return d.html()}return this.each(function(c,d){var e=u.layoutInfoFromHolder(a(d));e&&e.editable&&e.editable.html(b)}),this},destroy:function(){return this.each(function(b,c){var d=a(c),e=u.layoutInfoFromHolder(d);e&&e.editable&&(v.dettach(e),u.removeLayout(d))}),this}})}); \ No newline at end of file diff --git a/assets/js/plugins/switchery/switchery.js b/assets/js/plugins/switchery/switchery.js deleted file mode 100644 index 0ee11c04..00000000 --- a/assets/js/plugins/switchery/switchery.js +++ /dev/null @@ -1 +0,0 @@ -(function(){function require(path,parent,orig){var resolved=require.resolve(path);if(null==resolved){orig=orig||path;parent=parent||"root";var err=new Error('Failed to require "'+orig+'" from "'+parent+'"');err.path=orig;err.parent=parent;err.require=true;throw err}var module=require.modules[resolved];if(!module._resolving&&!module.exports){var mod={};mod.exports={};mod.client=mod.component=true;module._resolving=true;module.call(this,mod.exports,require.relative(resolved),mod);delete module._resolving;module.exports=mod.exports}return module.exports}require.modules={};require.aliases={};require.resolve=function(path){if(path.charAt(0)==="/")path=path.slice(1);var paths=[path,path+".js",path+".json",path+"/index.js",path+"/index.json"];for(var i=0;i<paths.length;i++){var path=paths[i];if(require.modules.hasOwnProperty(path))return path;if(require.aliases.hasOwnProperty(path))return require.aliases[path]}};require.normalize=function(curr,path){var segs=[];if("."!=path.charAt(0))return path;curr=curr.split("/");path=path.split("/");for(var i=0;i<path.length;++i){if(".."==path[i]){curr.pop()}else if("."!=path[i]&&""!=path[i]){segs.push(path[i])}}return curr.concat(segs).join("/")};require.register=function(path,definition){require.modules[path]=definition};require.alias=function(from,to){if(!require.modules.hasOwnProperty(from)){throw new Error('Failed to alias "'+from+'", it does not exist')}require.aliases[to]=from};require.relative=function(parent){var p=require.normalize(parent,"..");function lastIndexOf(arr,obj){var i=arr.length;while(i--){if(arr[i]===obj)return i}return-1}function localRequire(path){var resolved=localRequire.resolve(path);return require(resolved,parent,path)}localRequire.resolve=function(path){var c=path.charAt(0);if("/"==c)return path.slice(1);if("."==c)return require.normalize(p,path);var segs=parent.split("/");var i=lastIndexOf(segs,"deps")+1;if(!i)i=0;path=segs.slice(0,i+1).join("/")+"/deps/"+path;return path};localRequire.exists=function(path){return require.modules.hasOwnProperty(localRequire.resolve(path))};return localRequire};require.register("abpetkov-transitionize/transitionize.js",function(exports,require,module){module.exports=Transitionize;function Transitionize(element,props){if(!(this instanceof Transitionize))return new Transitionize(element,props);this.element=element;this.props=props||{};this.init()}Transitionize.prototype.isSafari=function(){return/Safari/.test(navigator.userAgent)&&/Apple Computer/.test(navigator.vendor)};Transitionize.prototype.init=function(){var transitions=[];for(var key in this.props){transitions.push(key+" "+this.props[key])}this.element.style.transition=transitions.join(", ");if(this.isSafari())this.element.style.webkitTransition=transitions.join(", ")}});require.register("ftlabs-fastclick/lib/fastclick.js",function(exports,require,module){function FastClick(layer){"use strict";var oldOnClick,self=this;this.trackingClick=false;this.trackingClickStart=0;this.targetElement=null;this.touchStartX=0;this.touchStartY=0;this.lastTouchIdentifier=0;this.touchBoundary=10;this.layer=layer;if(!layer||!layer.nodeType){throw new TypeError("Layer must be a document node")}this.onClick=function(){return FastClick.prototype.onClick.apply(self,arguments)};this.onMouse=function(){return FastClick.prototype.onMouse.apply(self,arguments)};this.onTouchStart=function(){return FastClick.prototype.onTouchStart.apply(self,arguments)};this.onTouchMove=function(){return FastClick.prototype.onTouchMove.apply(self,arguments)};this.onTouchEnd=function(){return FastClick.prototype.onTouchEnd.apply(self,arguments)};this.onTouchCancel=function(){return FastClick.prototype.onTouchCancel.apply(self,arguments)};if(FastClick.notNeeded(layer)){return}if(this.deviceIsAndroid){layer.addEventListener("mouseover",this.onMouse,true);layer.addEventListener("mousedown",this.onMouse,true);layer.addEventListener("mouseup",this.onMouse,true)}layer.addEventListener("click",this.onClick,true);layer.addEventListener("touchstart",this.onTouchStart,false);layer.addEventListener("touchmove",this.onTouchMove,false);layer.addEventListener("touchend",this.onTouchEnd,false);layer.addEventListener("touchcancel",this.onTouchCancel,false);if(!Event.prototype.stopImmediatePropagation){layer.removeEventListener=function(type,callback,capture){var rmv=Node.prototype.removeEventListener;if(type==="click"){rmv.call(layer,type,callback.hijacked||callback,capture)}else{rmv.call(layer,type,callback,capture)}};layer.addEventListener=function(type,callback,capture){var adv=Node.prototype.addEventListener;if(type==="click"){adv.call(layer,type,callback.hijacked||(callback.hijacked=function(event){if(!event.propagationStopped){callback(event)}}),capture)}else{adv.call(layer,type,callback,capture)}}}if(typeof layer.onclick==="function"){oldOnClick=layer.onclick;layer.addEventListener("click",function(event){oldOnClick(event)},false);layer.onclick=null}}FastClick.prototype.deviceIsAndroid=navigator.userAgent.indexOf("Android")>0;FastClick.prototype.deviceIsIOS=/iP(ad|hone|od)/.test(navigator.userAgent);FastClick.prototype.deviceIsIOS4=FastClick.prototype.deviceIsIOS&&/OS 4_\d(_\d)?/.test(navigator.userAgent);FastClick.prototype.deviceIsIOSWithBadTarget=FastClick.prototype.deviceIsIOS&&/OS ([6-9]|\d{2})_\d/.test(navigator.userAgent);FastClick.prototype.needsClick=function(target){"use strict";switch(target.nodeName.toLowerCase()){case"button":case"select":case"textarea":if(target.disabled){return true}break;case"input":if(this.deviceIsIOS&&target.type==="file"||target.disabled){return true}break;case"label":case"video":return true}return/\bneedsclick\b/.test(target.className)};FastClick.prototype.needsFocus=function(target){"use strict";switch(target.nodeName.toLowerCase()){case"textarea":return true;case"select":return!this.deviceIsAndroid;case"input":switch(target.type){case"button":case"checkbox":case"file":case"image":case"radio":case"submit":return false}return!target.disabled&&!target.readOnly;default:return/\bneedsfocus\b/.test(target.className)}};FastClick.prototype.sendClick=function(targetElement,event){"use strict";var clickEvent,touch;if(document.activeElement&&document.activeElement!==targetElement){document.activeElement.blur()}touch=event.changedTouches[0];clickEvent=document.createEvent("MouseEvents");clickEvent.initMouseEvent(this.determineEventType(targetElement),true,true,window,1,touch.screenX,touch.screenY,touch.clientX,touch.clientY,false,false,false,false,0,null);clickEvent.forwardedTouchEvent=true;targetElement.dispatchEvent(clickEvent)};FastClick.prototype.determineEventType=function(targetElement){"use strict";if(this.deviceIsAndroid&&targetElement.tagName.toLowerCase()==="select"){return"mousedown"}return"click"};FastClick.prototype.focus=function(targetElement){"use strict";var length;if(this.deviceIsIOS&&targetElement.setSelectionRange&&targetElement.type.indexOf("date")!==0&&targetElement.type!=="time"){length=targetElement.value.length;targetElement.setSelectionRange(length,length)}else{targetElement.focus()}};FastClick.prototype.updateScrollParent=function(targetElement){"use strict";var scrollParent,parentElement;scrollParent=targetElement.fastClickScrollParent;if(!scrollParent||!scrollParent.contains(targetElement)){parentElement=targetElement;do{if(parentElement.scrollHeight>parentElement.offsetHeight){scrollParent=parentElement;targetElement.fastClickScrollParent=parentElement;break}parentElement=parentElement.parentElement}while(parentElement)}if(scrollParent){scrollParent.fastClickLastScrollTop=scrollParent.scrollTop}};FastClick.prototype.getTargetElementFromEventTarget=function(eventTarget){"use strict";if(eventTarget.nodeType===Node.TEXT_NODE){return eventTarget.parentNode}return eventTarget};FastClick.prototype.onTouchStart=function(event){"use strict";var targetElement,touch,selection;if(event.targetTouches.length>1){return true}targetElement=this.getTargetElementFromEventTarget(event.target);touch=event.targetTouches[0];if(this.deviceIsIOS){selection=window.getSelection();if(selection.rangeCount&&!selection.isCollapsed){return true}if(!this.deviceIsIOS4){if(touch.identifier===this.lastTouchIdentifier){event.preventDefault();return false}this.lastTouchIdentifier=touch.identifier;this.updateScrollParent(targetElement)}}this.trackingClick=true;this.trackingClickStart=event.timeStamp;this.targetElement=targetElement;this.touchStartX=touch.pageX;this.touchStartY=touch.pageY;if(event.timeStamp-this.lastClickTime<200){event.preventDefault()}return true};FastClick.prototype.touchHasMoved=function(event){"use strict";var touch=event.changedTouches[0],boundary=this.touchBoundary;if(Math.abs(touch.pageX-this.touchStartX)>boundary||Math.abs(touch.pageY-this.touchStartY)>boundary){return true}return false};FastClick.prototype.onTouchMove=function(event){"use strict";if(!this.trackingClick){return true}if(this.targetElement!==this.getTargetElementFromEventTarget(event.target)||this.touchHasMoved(event)){this.trackingClick=false;this.targetElement=null}return true};FastClick.prototype.findControl=function(labelElement){"use strict";if(labelElement.control!==undefined){return labelElement.control}if(labelElement.htmlFor){return document.getElementById(labelElement.htmlFor)}return labelElement.querySelector("button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea")};FastClick.prototype.onTouchEnd=function(event){"use strict";var forElement,trackingClickStart,targetTagName,scrollParent,touch,targetElement=this.targetElement;if(!this.trackingClick){return true}if(event.timeStamp-this.lastClickTime<200){this.cancelNextClick=true;return true}this.cancelNextClick=false;this.lastClickTime=event.timeStamp;trackingClickStart=this.trackingClickStart;this.trackingClick=false;this.trackingClickStart=0;if(this.deviceIsIOSWithBadTarget){touch=event.changedTouches[0];targetElement=document.elementFromPoint(touch.pageX-window.pageXOffset,touch.pageY-window.pageYOffset)||targetElement;targetElement.fastClickScrollParent=this.targetElement.fastClickScrollParent}targetTagName=targetElement.tagName.toLowerCase();if(targetTagName==="label"){forElement=this.findControl(targetElement);if(forElement){this.focus(targetElement);if(this.deviceIsAndroid){return false}targetElement=forElement}}else if(this.needsFocus(targetElement)){if(event.timeStamp-trackingClickStart>100||this.deviceIsIOS&&window.top!==window&&targetTagName==="input"){this.targetElement=null;return false}this.focus(targetElement);if(!this.deviceIsIOS4||targetTagName!=="select"){this.targetElement=null;event.preventDefault()}return false}if(this.deviceIsIOS&&!this.deviceIsIOS4){scrollParent=targetElement.fastClickScrollParent;if(scrollParent&&scrollParent.fastClickLastScrollTop!==scrollParent.scrollTop){return true}}if(!this.needsClick(targetElement)){event.preventDefault();this.sendClick(targetElement,event)}return false};FastClick.prototype.onTouchCancel=function(){"use strict";this.trackingClick=false;this.targetElement=null};FastClick.prototype.onMouse=function(event){"use strict";if(!this.targetElement){return true}if(event.forwardedTouchEvent){return true}if(!event.cancelable){return true}if(!this.needsClick(this.targetElement)||this.cancelNextClick){if(event.stopImmediatePropagation){event.stopImmediatePropagation()}else{event.propagationStopped=true}event.stopPropagation();event.preventDefault();return false}return true};FastClick.prototype.onClick=function(event){"use strict";var permitted;if(this.trackingClick){this.targetElement=null;this.trackingClick=false;return true}if(event.target.type==="submit"&&event.detail===0){return true}permitted=this.onMouse(event);if(!permitted){this.targetElement=null}return permitted};FastClick.prototype.destroy=function(){"use strict";var layer=this.layer;if(this.deviceIsAndroid){layer.removeEventListener("mouseover",this.onMouse,true);layer.removeEventListener("mousedown",this.onMouse,true);layer.removeEventListener("mouseup",this.onMouse,true)}layer.removeEventListener("click",this.onClick,true);layer.removeEventListener("touchstart",this.onTouchStart,false);layer.removeEventListener("touchmove",this.onTouchMove,false);layer.removeEventListener("touchend",this.onTouchEnd,false);layer.removeEventListener("touchcancel",this.onTouchCancel,false)};FastClick.notNeeded=function(layer){"use strict";var metaViewport;var chromeVersion;if(typeof window.ontouchstart==="undefined"){return true}chromeVersion=+(/Chrome\/([0-9]+)/.exec(navigator.userAgent)||[,0])[1];if(chromeVersion){if(FastClick.prototype.deviceIsAndroid){metaViewport=document.querySelector("meta[name=viewport]");if(metaViewport){if(metaViewport.content.indexOf("user-scalable=no")!==-1){return true}if(chromeVersion>31&&window.innerWidth<=window.screen.width){return true}}}else{return true}}if(layer.style.msTouchAction==="none"){return true}return false};FastClick.attach=function(layer){"use strict";return new FastClick(layer)};if(typeof define!=="undefined"&&define.amd){define(function(){"use strict";return FastClick})}else if(typeof module!=="undefined"&&module.exports){module.exports=FastClick.attach;module.exports.FastClick=FastClick}else{window.FastClick=FastClick}});require.register("switchery/switchery.js",function(exports,require,module){var transitionize=require("transitionize"),fastclick=require("fastclick");module.exports=Switchery;var defaults={color:"#64bd63",secondaryColor:"#dfdfdf",className:"switchery",disabled:false,disabledOpacity:.5,speed:"0.4s"};function Switchery(element,options){if(!(this instanceof Switchery))return new Switchery(element,options);this.element=element;this.options=options||{};for(var i in defaults){if(this.options[i]==null){this.options[i]=defaults[i]}}if(this.element!=null&&this.element.type=="checkbox")this.init()}Switchery.prototype.hide=function(){this.element.style.display="none"};Switchery.prototype.show=function(){var switcher=this.create();this.insertAfter(this.element,switcher)};Switchery.prototype.create=function(){this.switcher=document.createElement("span");this.jack=document.createElement("small");this.switcher.appendChild(this.jack);this.switcher.className=this.options.className;return this.switcher};Switchery.prototype.insertAfter=function(reference,target){reference.parentNode.insertBefore(target,reference.nextSibling)};Switchery.prototype.isChecked=function(){return this.element.checked};Switchery.prototype.isDisabled=function(){return this.options.disabled||this.element.disabled};Switchery.prototype.setPosition=function(clicked){var checked=this.isChecked(),switcher=this.switcher,jack=this.jack;if(clicked&&checked)checked=false;else if(clicked&&!checked)checked=true;if(checked===true){this.element.checked=true;if(window.getComputedStyle)jack.style.left=parseInt(window.getComputedStyle(switcher).width)-parseInt(window.getComputedStyle(jack).width)+"px";else jack.style.left=parseInt(switcher.currentStyle["width"])-parseInt(jack.currentStyle["width"])+"px";if(this.options.color)this.colorize();this.setSpeed()}else{jack.style.left=0;this.element.checked=false;this.switcher.style.boxShadow="inset 0 0 0 0 "+this.options.secondaryColor;this.switcher.style.borderColor=this.options.secondaryColor;this.switcher.style.backgroundColor="";this.setSpeed()}};Switchery.prototype.setSpeed=function(){var switcherProp={},jackProp={left:this.options.speed.replace(/[a-z]/,"")/2+"s"};if(this.isChecked()){switcherProp={border:this.options.speed,"box-shadow":this.options.speed,"background-color":this.options.speed.replace(/[a-z]/,"")*3+"s"}}else{switcherProp={border:this.options.speed,"box-shadow":this.options.speed}}transitionize(this.switcher,switcherProp);transitionize(this.jack,jackProp)};Switchery.prototype.setAttributes=function(){var id=this.element.getAttribute("id"),name=this.element.getAttribute("name");if(id)this.switcher.setAttribute("id",id);if(name)this.switcher.setAttribute("name",name)};Switchery.prototype.colorize=function(){this.switcher.style.backgroundColor=this.options.color;this.switcher.style.borderColor=this.options.color;this.switcher.style.boxShadow="inset 0 0 0 16px "+this.options.color};Switchery.prototype.handleOnchange=function(state){if(typeof Event==="function"||!document.fireEvent){var event=document.createEvent("HTMLEvents");event.initEvent("change",true,true);this.element.dispatchEvent(event)}else{this.element.fireEvent("onchange")}};Switchery.prototype.handleChange=function(){var self=this,el=this.element;if(el.addEventListener){el.addEventListener("change",function(){self.setPosition()})}else{el.attachEvent("onchange",function(){self.setPosition()})}};Switchery.prototype.handleClick=function(){var self=this,switcher=this.switcher;if(this.isDisabled()===false){fastclick(switcher);if(switcher.addEventListener){switcher.addEventListener("click",function(){self.setPosition(true);self.handleOnchange(self.element.checked)})}else{switcher.attachEvent("onclick",function(){self.setPosition(true);self.handleOnchange(self.element.checked)})}}else{this.element.disabled=true;this.switcher.style.opacity=this.options.disabledOpacity}};Switchery.prototype.disableLabel=function(){var parent=this.element.parentNode,labels=document.getElementsByTagName("label"),attached=null;for(var i=0;i<labels.length;i++){if(labels[i].getAttribute("for")===this.element.id){attached=true}}if(attached===true||parent.tagName.toLowerCase()==="label"){if(parent.addEventListener){parent.addEventListener("click",function(e){e.preventDefault()})}else{parent.attachEvent("onclick",function(e){e.returnValue=false})}}};Switchery.prototype.markAsSwitched=function(){this.element.setAttribute("data-switchery",true)};Switchery.prototype.markedAsSwitched=function(){return this.element.getAttribute("data-switchery")};Switchery.prototype.init=function(){this.hide();this.show();this.setPosition();this.setAttributes();this.markAsSwitched();this.disableLabel();this.handleChange();this.handleClick()}});require.alias("abpetkov-transitionize/transitionize.js","switchery/deps/transitionize/transitionize.js");require.alias("abpetkov-transitionize/transitionize.js","switchery/deps/transitionize/index.js");require.alias("abpetkov-transitionize/transitionize.js","transitionize/index.js");require.alias("abpetkov-transitionize/transitionize.js","abpetkov-transitionize/index.js");require.alias("ftlabs-fastclick/lib/fastclick.js","switchery/deps/fastclick/lib/fastclick.js");require.alias("ftlabs-fastclick/lib/fastclick.js","switchery/deps/fastclick/index.js");require.alias("ftlabs-fastclick/lib/fastclick.js","fastclick/index.js");require.alias("ftlabs-fastclick/lib/fastclick.js","ftlabs-fastclick/index.js");require.alias("switchery/switchery.js","switchery/index.js");if(typeof exports=="object"){module.exports=require("switchery")}else if(typeof define=="function"&&define.amd){define(function(){return require("switchery")})}else{this["Switchery"]=require("switchery")}})(); \ No newline at end of file diff --git a/assets/js/plugins/toastr/toastr.min.js b/assets/js/plugins/toastr/toastr.min.js deleted file mode 100644 index cf70cf63..00000000 --- a/assets/js/plugins/toastr/toastr.min.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(e){e(["jquery"],function(e){return function(){function t(e,t,n){return f({type:O.error,iconClass:g().iconClasses.error,message:e,optionsOverride:n,title:t})}function n(t,n){return t||(t=g()),v=e("#"+t.containerId),v.length?v:(n&&(v=c(t)),v)}function i(e,t,n){return f({type:O.info,iconClass:g().iconClasses.info,message:e,optionsOverride:n,title:t})}function o(e){w=e}function s(e,t,n){return f({type:O.success,iconClass:g().iconClasses.success,message:e,optionsOverride:n,title:t})}function a(e,t,n){return f({type:O.warning,iconClass:g().iconClasses.warning,message:e,optionsOverride:n,title:t})}function r(e){var t=g();v||n(t),l(e,t)||u(t)}function d(t){var i=g();return v||n(i),t&&0===e(":focus",t).length?void h(t):void(v.children().length&&v.remove())}function u(t){for(var n=v.children(),i=n.length-1;i>=0;i--)l(e(n[i]),t)}function l(t,n){return t&&0===e(":focus",t).length?(t[n.hideMethod]({duration:n.hideDuration,easing:n.hideEasing,complete:function(){h(t)}}),!0):!1}function c(t){return v=e("<div/>").attr("id",t.containerId).addClass(t.positionClass).attr("aria-live","polite").attr("role","alert"),v.appendTo(e(t.target)),v}function p(){return{tapToDismiss:!0,toastClass:"toast",containerId:"toast-container",debug:!1,showMethod:"fadeIn",showDuration:300,showEasing:"swing",onShown:void 0,hideMethod:"fadeOut",hideDuration:1e3,hideEasing:"swing",onHidden:void 0,extendedTimeOut:1e3,iconClasses:{error:"toast-error",info:"toast-info",success:"toast-success",warning:"toast-warning"},iconClass:"toast-info",positionClass:"toast-top-right",timeOut:5e3,titleClass:"toast-title",messageClass:"toast-message",target:"body",closeHtml:'<button type="button">&times;</button>',newestOnTop:!0,preventDuplicates:!1,progressBar:!1}}function m(e){w&&w(e)}function f(t){function i(t){return!e(":focus",l).length||t?(clearTimeout(O.intervalId),l[r.hideMethod]({duration:r.hideDuration,easing:r.hideEasing,complete:function(){h(l),r.onHidden&&"hidden"!==b.state&&r.onHidden(),b.state="hidden",b.endTime=new Date,m(b)}})):void 0}function o(){(r.timeOut>0||r.extendedTimeOut>0)&&(u=setTimeout(i,r.extendedTimeOut),O.maxHideTime=parseFloat(r.extendedTimeOut),O.hideEta=(new Date).getTime()+O.maxHideTime)}function s(){clearTimeout(u),O.hideEta=0,l.stop(!0,!0)[r.showMethod]({duration:r.showDuration,easing:r.showEasing})}function a(){var e=(O.hideEta-(new Date).getTime())/O.maxHideTime*100;f.width(e+"%")}var r=g(),d=t.iconClass||r.iconClass;if("undefined"!=typeof t.optionsOverride&&(r=e.extend(r,t.optionsOverride),d=t.optionsOverride.iconClass||d),r.preventDuplicates){if(t.message===C)return;C=t.message}T++,v=n(r,!0);var u=null,l=e("<div/>"),c=e("<div/>"),p=e("<div/>"),f=e("<div/>"),w=e(r.closeHtml),O={intervalId:null,hideEta:null,maxHideTime:null},b={toastId:T,state:"visible",startTime:new Date,options:r,map:t};return t.iconClass&&l.addClass(r.toastClass).addClass(d),t.title&&(c.append(t.title).addClass(r.titleClass),l.append(c)),t.message&&(p.append(t.message).addClass(r.messageClass),l.append(p)),r.closeButton&&(w.addClass("toast-close-button").attr("role","button"),l.prepend(w)),r.progressBar&&(f.addClass("toast-progress"),l.prepend(f)),l.hide(),r.newestOnTop?v.prepend(l):v.append(l),l[r.showMethod]({duration:r.showDuration,easing:r.showEasing,complete:r.onShown}),r.timeOut>0&&(u=setTimeout(i,r.timeOut),O.maxHideTime=parseFloat(r.timeOut),O.hideEta=(new Date).getTime()+O.maxHideTime,r.progressBar&&(O.intervalId=setInterval(a,10))),l.hover(s,o),!r.onclick&&r.tapToDismiss&&l.click(i),r.closeButton&&w&&w.click(function(e){e.stopPropagation?e.stopPropagation():void 0!==e.cancelBubble&&e.cancelBubble!==!0&&(e.cancelBubble=!0),i(!0)}),r.onclick&&l.click(function(){r.onclick(),i()}),m(b),r.debug&&console&&console.log(b),l}function g(){return e.extend({},p(),b.options)}function h(e){v||(v=n()),e.is(":visible")||(e.remove(),e=null,0===v.children().length&&(v.remove(),C=void 0))}var v,w,C,T=0,O={error:"error",info:"info",success:"success",warning:"warning"},b={clear:r,remove:d,error:t,getContainer:n,info:i,options:{},subscribe:o,success:s,version:"2.1.0",warning:a};return b}()})}("function"==typeof define&&define.amd?define:function(e,t){"undefined"!=typeof module&&module.exports?module.exports=t(require("jquery")):window.toastr=t(window.jQuery)}); -//# sourceMappingURL=/toastr.js.map \ No newline at end of file diff --git a/assets/js/plugins/validate/jquery.validate.min.js b/assets/js/plugins/validate/jquery.validate.min.js deleted file mode 100644 index 52646177..00000000 --- a/assets/js/plugins/validate/jquery.validate.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery Validation Plugin - v1.13.0 - 7/1/2014 - * http://jqueryvalidation.org/ - * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ -!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a(jQuery)}(function(a){a.extend(a.fn,{validate:function(b){if(!this.length)return void(b&&b.debug&&window.console&&console.warn("Nothing selected, can't validate, returning nothing."));var c=a.data(this[0],"validator");return c?c:(this.attr("novalidate","novalidate"),c=new a.validator(b,this[0]),a.data(this[0],"validator",c),c.settings.onsubmit&&(this.validateDelegate(":submit","click",function(b){c.settings.submitHandler&&(c.submitButton=b.target),a(b.target).hasClass("cancel")&&(c.cancelSubmit=!0),void 0!==a(b.target).attr("formnovalidate")&&(c.cancelSubmit=!0)}),this.submit(function(b){function d(){var d;return c.settings.submitHandler?(c.submitButton&&(d=a("<input type='hidden'/>").attr("name",c.submitButton.name).val(a(c.submitButton).val()).appendTo(c.currentForm)),c.settings.submitHandler.call(c,c.currentForm,b),c.submitButton&&d.remove(),!1):!0}return c.settings.debug&&b.preventDefault(),c.cancelSubmit?(c.cancelSubmit=!1,d()):c.form()?c.pendingRequest?(c.formSubmitted=!0,!1):d():(c.focusInvalid(),!1)})),c)},valid:function(){var b,c;return a(this[0]).is("form")?b=this.validate().form():(b=!0,c=a(this[0].form).validate(),this.each(function(){b=c.element(this)&&b})),b},removeAttrs:function(b){var c={},d=this;return a.each(b.split(/\s/),function(a,b){c[b]=d.attr(b),d.removeAttr(b)}),c},rules:function(b,c){var d,e,f,g,h,i,j=this[0];if(b)switch(d=a.data(j.form,"validator").settings,e=d.rules,f=a.validator.staticRules(j),b){case"add":a.extend(f,a.validator.normalizeRule(c)),delete f.messages,e[j.name]=f,c.messages&&(d.messages[j.name]=a.extend(d.messages[j.name],c.messages));break;case"remove":return c?(i={},a.each(c.split(/\s/),function(b,c){i[c]=f[c],delete f[c],"required"===c&&a(j).removeAttr("aria-required")}),i):(delete e[j.name],f)}return g=a.validator.normalizeRules(a.extend({},a.validator.classRules(j),a.validator.attributeRules(j),a.validator.dataRules(j),a.validator.staticRules(j)),j),g.required&&(h=g.required,delete g.required,g=a.extend({required:h},g),a(j).attr("aria-required","true")),g.remote&&(h=g.remote,delete g.remote,g=a.extend(g,{remote:h})),g}}),a.extend(a.expr[":"],{blank:function(b){return!a.trim(""+a(b).val())},filled:function(b){return!!a.trim(""+a(b).val())},unchecked:function(b){return!a(b).prop("checked")}}),a.validator=function(b,c){this.settings=a.extend(!0,{},a.validator.defaults,b),this.currentForm=c,this.init()},a.validator.format=function(b,c){return 1===arguments.length?function(){var c=a.makeArray(arguments);return c.unshift(b),a.validator.format.apply(this,c)}:(arguments.length>2&&c.constructor!==Array&&(c=a.makeArray(arguments).slice(1)),c.constructor!==Array&&(c=[c]),a.each(c,function(a,c){b=b.replace(new RegExp("\\{"+a+"\\}","g"),function(){return c})}),b)},a.extend(a.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",validClass:"valid",errorElement:"label",focusInvalid:!0,errorContainer:a([]),errorLabelContainer:a([]),onsubmit:!0,ignore:":hidden",ignoreTitle:!1,onfocusin:function(a){this.lastActive=a,this.settings.focusCleanup&&!this.blockFocusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,a,this.settings.errorClass,this.settings.validClass),this.hideThese(this.errorsFor(a)))},onfocusout:function(a){this.checkable(a)||!(a.name in this.submitted)&&this.optional(a)||this.element(a)},onkeyup:function(a,b){(9!==b.which||""!==this.elementValue(a))&&(a.name in this.submitted||a===this.lastElement)&&this.element(a)},onclick:function(a){a.name in this.submitted?this.element(a):a.parentNode.name in this.submitted&&this.element(a.parentNode)},highlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).addClass(c).removeClass(d):a(b).addClass(c).removeClass(d)},unhighlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).removeClass(c).addClass(d):a(b).removeClass(c).addClass(d)}},setDefaults:function(b){a.extend(a.validator.defaults,b)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date ( ISO ).",number:"Please enter a valid number.",digits:"Please enter only digits.",creditcard:"Please enter a valid credit card number.",equalTo:"Please enter the same value again.",maxlength:a.validator.format("Please enter no more than {0} characters."),minlength:a.validator.format("Please enter at least {0} characters."),rangelength:a.validator.format("Please enter a value between {0} and {1} characters long."),range:a.validator.format("Please enter a value between {0} and {1}."),max:a.validator.format("Please enter a value less than or equal to {0}."),min:a.validator.format("Please enter a value greater than or equal to {0}.")},autoCreateRanges:!1,prototype:{init:function(){function b(b){var c=a.data(this[0].form,"validator"),d="on"+b.type.replace(/^validate/,""),e=c.settings;e[d]&&!this.is(e.ignore)&&e[d].call(c,this[0],b)}this.labelContainer=a(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||a(this.currentForm),this.containers=a(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var c,d=this.groups={};a.each(this.settings.groups,function(b,c){"string"==typeof c&&(c=c.split(/\s/)),a.each(c,function(a,c){d[c]=b})}),c=this.settings.rules,a.each(c,function(b,d){c[b]=a.validator.normalizeRule(d)}),a(this.currentForm).validateDelegate(":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'] ,[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], [type='radio'], [type='checkbox']","focusin focusout keyup",b).validateDelegate("select, option, [type='radio'], [type='checkbox']","click",b),this.settings.invalidHandler&&a(this.currentForm).bind("invalid-form.validate",this.settings.invalidHandler),a(this.currentForm).find("[required], [data-rule-required], .required").attr("aria-required","true")},form:function(){return this.checkForm(),a.extend(this.submitted,this.errorMap),this.invalid=a.extend({},this.errorMap),this.valid()||a(this.currentForm).triggerHandler("invalid-form",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var a=0,b=this.currentElements=this.elements();b[a];a++)this.check(b[a]);return this.valid()},element:function(b){var c=this.clean(b),d=this.validationTargetFor(c),e=!0;return this.lastElement=d,void 0===d?delete this.invalid[c.name]:(this.prepareElement(d),this.currentElements=a(d),e=this.check(d)!==!1,e?delete this.invalid[d.name]:this.invalid[d.name]=!0),a(b).attr("aria-invalid",!e),this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),e},showErrors:function(b){if(b){a.extend(this.errorMap,b),this.errorList=[];for(var c in b)this.errorList.push({message:b[c],element:this.findByName(c)[0]});this.successList=a.grep(this.successList,function(a){return!(a.name in b)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){a.fn.resetForm&&a(this.currentForm).resetForm(),this.submitted={},this.lastElement=null,this.prepareForm(),this.hideErrors(),this.elements().removeClass(this.settings.errorClass).removeData("previousValue").removeAttr("aria-invalid")},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(a){var b,c=0;for(b in a)c++;return c},hideErrors:function(){this.hideThese(this.toHide)},hideThese:function(a){a.not(this.containers).text(""),this.addWrapper(a).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{a(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus().trigger("focusin")}catch(b){}},findLastActive:function(){var b=this.lastActive;return b&&1===a.grep(this.errorList,function(a){return a.element.name===b.name}).length&&b},elements:function(){var b=this,c={};return a(this.currentForm).find("input, select, textarea").not(":submit, :reset, :image, [disabled]").not(this.settings.ignore).filter(function(){return!this.name&&b.settings.debug&&window.console&&console.error("%o has no name assigned",this),this.name in c||!b.objectLength(a(this).rules())?!1:(c[this.name]=!0,!0)})},clean:function(b){return a(b)[0]},errors:function(){var b=this.settings.errorClass.split(" ").join(".");return a(this.settings.errorElement+"."+b,this.errorContext)},reset:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=a([]),this.toHide=a([]),this.currentElements=a([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(a){this.reset(),this.toHide=this.errorsFor(a)},elementValue:function(b){var c,d=a(b),e=b.type;return"radio"===e||"checkbox"===e?a("input[name='"+b.name+"']:checked").val():"number"===e&&"undefined"!=typeof b.validity?b.validity.badInput?!1:d.val():(c=d.val(),"string"==typeof c?c.replace(/\r/g,""):c)},check:function(b){b=this.validationTargetFor(this.clean(b));var c,d,e,f=a(b).rules(),g=a.map(f,function(a,b){return b}).length,h=!1,i=this.elementValue(b);for(d in f){e={method:d,parameters:f[d]};try{if(c=a.validator.methods[d].call(this,i,b,e.parameters),"dependency-mismatch"===c&&1===g){h=!0;continue}if(h=!1,"pending"===c)return void(this.toHide=this.toHide.not(this.errorsFor(b)));if(!c)return this.formatAndAdd(b,e),!1}catch(j){throw this.settings.debug&&window.console&&console.log("Exception occurred when checking element "+b.id+", check the '"+e.method+"' method.",j),j}}if(!h)return this.objectLength(f)&&this.successList.push(b),!0},customDataMessage:function(b,c){return a(b).data("msg"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase())||a(b).data("msg")},customMessage:function(a,b){var c=this.settings.messages[a];return c&&(c.constructor===String?c:c[b])},findDefined:function(){for(var a=0;a<arguments.length;a++)if(void 0!==arguments[a])return arguments[a];return void 0},defaultMessage:function(b,c){return this.findDefined(this.customMessage(b.name,c),this.customDataMessage(b,c),!this.settings.ignoreTitle&&b.title||void 0,a.validator.messages[c],"<strong>Warning: No message defined for "+b.name+"</strong>")},formatAndAdd:function(b,c){var d=this.defaultMessage(b,c.method),e=/\$?\{(\d+)\}/g;"function"==typeof d?d=d.call(this,c.parameters,b):e.test(d)&&(d=a.validator.format(d.replace(e,"{$1}"),c.parameters)),this.errorList.push({message:d,element:b,method:c.method}),this.errorMap[b.name]=d,this.submitted[b.name]=d},addWrapper:function(a){return this.settings.wrapper&&(a=a.add(a.parent(this.settings.wrapper))),a},defaultShowErrors:function(){var a,b,c;for(a=0;this.errorList[a];a++)c=this.errorList[a],this.settings.highlight&&this.settings.highlight.call(this,c.element,this.settings.errorClass,this.settings.validClass),this.showLabel(c.element,c.message);if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(a=0;this.successList[a];a++)this.showLabel(this.successList[a]);if(this.settings.unhighlight)for(a=0,b=this.validElements();b[a];a++)this.settings.unhighlight.call(this,b[a],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return a(this.errorList).map(function(){return this.element})},showLabel:function(b,c){var d,e,f,g=this.errorsFor(b),h=this.idOrName(b),i=a(b).attr("aria-describedby");g.length?(g.removeClass(this.settings.validClass).addClass(this.settings.errorClass),g.html(c)):(g=a("<"+this.settings.errorElement+">").attr("id",h+"-error").addClass(this.settings.errorClass).html(c||""),d=g,this.settings.wrapper&&(d=g.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()),this.labelContainer.length?this.labelContainer.append(d):this.settings.errorPlacement?this.settings.errorPlacement(d,a(b)):d.insertAfter(b),g.is("label")?g.attr("for",h):0===g.parents("label[for='"+h+"']").length&&(f=g.attr("id"),i?i.match(new RegExp("\b"+f+"\b"))||(i+=" "+f):i=f,a(b).attr("aria-describedby",i),e=this.groups[b.name],e&&a.each(this.groups,function(b,c){c===e&&a("[name='"+b+"']",this.currentForm).attr("aria-describedby",g.attr("id"))}))),!c&&this.settings.success&&(g.text(""),"string"==typeof this.settings.success?g.addClass(this.settings.success):this.settings.success(g,b)),this.toShow=this.toShow.add(g)},errorsFor:function(b){var c=this.idOrName(b),d=a(b).attr("aria-describedby"),e="label[for='"+c+"'], label[for='"+c+"'] *";return d&&(e=e+", #"+d.replace(/\s+/g,", #")),this.errors().filter(e)},idOrName:function(a){return this.groups[a.name]||(this.checkable(a)?a.name:a.id||a.name)},validationTargetFor:function(a){return this.checkable(a)&&(a=this.findByName(a.name).not(this.settings.ignore)[0]),a},checkable:function(a){return/radio|checkbox/i.test(a.type)},findByName:function(b){return a(this.currentForm).find("[name='"+b+"']")},getLength:function(b,c){switch(c.nodeName.toLowerCase()){case"select":return a("option:selected",c).length;case"input":if(this.checkable(c))return this.findByName(c.name).filter(":checked").length}return b.length},depend:function(a,b){return this.dependTypes[typeof a]?this.dependTypes[typeof a](a,b):!0},dependTypes:{"boolean":function(a){return a},string:function(b,c){return!!a(b,c.form).length},"function":function(a,b){return a(b)}},optional:function(b){var c=this.elementValue(b);return!a.validator.methods.required.call(this,c,b)&&"dependency-mismatch"},startRequest:function(a){this.pending[a.name]||(this.pendingRequest++,this.pending[a.name]=!0)},stopRequest:function(b,c){this.pendingRequest--,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[b.name],c&&0===this.pendingRequest&&this.formSubmitted&&this.form()?(a(this.currentForm).submit(),this.formSubmitted=!1):!c&&0===this.pendingRequest&&this.formSubmitted&&(a(this.currentForm).triggerHandler("invalid-form",[this]),this.formSubmitted=!1)},previousValue:function(b){return a.data(b,"previousValue")||a.data(b,"previousValue",{old:null,valid:!0,message:this.defaultMessage(b,"remote")})}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(b,c){b.constructor===String?this.classRuleSettings[b]=c:a.extend(this.classRuleSettings,b)},classRules:function(b){var c={},d=a(b).attr("class");return d&&a.each(d.split(" "),function(){this in a.validator.classRuleSettings&&a.extend(c,a.validator.classRuleSettings[this])}),c},attributeRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)"required"===c?(d=b.getAttribute(c),""===d&&(d=!0),d=!!d):d=f.attr(c),/min|max/.test(c)&&(null===g||/number|range|text/.test(g))&&(d=Number(d)),d||0===d?e[c]=d:g===c&&"range"!==g&&(e[c]=!0);return e.maxlength&&/-1|2147483647|524288/.test(e.maxlength)&&delete e.maxlength,e},dataRules:function(b){var c,d,e={},f=a(b);for(c in a.validator.methods)d=f.data("rule"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase()),void 0!==d&&(e[c]=d);return e},staticRules:function(b){var c={},d=a.data(b.form,"validator");return d.settings.rules&&(c=a.validator.normalizeRule(d.settings.rules[b.name])||{}),c},normalizeRules:function(b,c){return a.each(b,function(d,e){if(e===!1)return void delete b[d];if(e.param||e.depends){var f=!0;switch(typeof e.depends){case"string":f=!!a(e.depends,c.form).length;break;case"function":f=e.depends.call(c,c)}f?b[d]=void 0!==e.param?e.param:!0:delete b[d]}}),a.each(b,function(d,e){b[d]=a.isFunction(e)?e(c):e}),a.each(["minlength","maxlength"],function(){b[this]&&(b[this]=Number(b[this]))}),a.each(["rangelength","range"],function(){var c;b[this]&&(a.isArray(b[this])?b[this]=[Number(b[this][0]),Number(b[this][1])]:"string"==typeof b[this]&&(c=b[this].replace(/[\[\]]/g,"").split(/[\s,]+/),b[this]=[Number(c[0]),Number(c[1])]))}),a.validator.autoCreateRanges&&(b.min&&b.max&&(b.range=[b.min,b.max],delete b.min,delete b.max),b.minlength&&b.maxlength&&(b.rangelength=[b.minlength,b.maxlength],delete b.minlength,delete b.maxlength)),b},normalizeRule:function(b){if("string"==typeof b){var c={};a.each(b.split(/\s/),function(){c[this]=!0}),b=c}return b},addMethod:function(b,c,d){a.validator.methods[b]=c,a.validator.messages[b]=void 0!==d?d:a.validator.messages[b],c.length<3&&a.validator.addClassRules(b,a.validator.normalizeRule(b))},methods:{required:function(b,c,d){if(!this.depend(d,c))return"dependency-mismatch";if("select"===c.nodeName.toLowerCase()){var e=a(c).val();return e&&e.length>0}return this.checkable(c)?this.getLength(b,c)>0:a.trim(b).length>0},email:function(a,b){return this.optional(b)||/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(a)},url:function(a,b){return this.optional(b)||/^(https?|s?ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(a)},date:function(a,b){return this.optional(b)||!/Invalid|NaN/.test(new Date(a).toString())},dateISO:function(a,b){return this.optional(b)||/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(a)},number:function(a,b){return this.optional(b)||/^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(a)},digits:function(a,b){return this.optional(b)||/^\d+$/.test(a)},creditcard:function(a,b){if(this.optional(b))return"dependency-mismatch";if(/[^0-9 \-]+/.test(a))return!1;var c,d,e=0,f=0,g=!1;if(a=a.replace(/\D/g,""),a.length<13||a.length>19)return!1;for(c=a.length-1;c>=0;c--)d=a.charAt(c),f=parseInt(d,10),g&&(f*=2)>9&&(f-=9),e+=f,g=!g;return e%10===0},minlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(a.trim(b),c);return this.optional(c)||e>=d},maxlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(a.trim(b),c);return this.optional(c)||d>=e},rangelength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(a.trim(b),c);return this.optional(c)||e>=d[0]&&e<=d[1]},min:function(a,b,c){return this.optional(b)||a>=c},max:function(a,b,c){return this.optional(b)||c>=a},range:function(a,b,c){return this.optional(b)||a>=c[0]&&a<=c[1]},equalTo:function(b,c,d){var e=a(d);return this.settings.onfocusout&&e.unbind(".validate-equalTo").bind("blur.validate-equalTo",function(){a(c).valid()}),b===e.val()},remote:function(b,c,d){if(this.optional(c))return"dependency-mismatch";var e,f,g=this.previousValue(c);return this.settings.messages[c.name]||(this.settings.messages[c.name]={}),g.originalMessage=this.settings.messages[c.name].remote,this.settings.messages[c.name].remote=g.message,d="string"==typeof d&&{url:d}||d,g.old===b?g.valid:(g.old=b,e=this,this.startRequest(c),f={},f[c.name]=b,a.ajax(a.extend(!0,{url:d,mode:"abort",port:"validate"+c.name,dataType:"json",data:f,context:e.currentForm,success:function(d){var f,h,i,j=d===!0||"true"===d;e.settings.messages[c.name].remote=g.originalMessage,j?(i=e.formSubmitted,e.prepareElement(c),e.formSubmitted=i,e.successList.push(c),delete e.invalid[c.name],e.showErrors()):(f={},h=d||e.defaultMessage(c,"remote"),f[c.name]=g.message=a.isFunction(h)?h(b):h,e.invalid[c.name]=!0,e.showErrors(f)),g.valid=j,e.stopRequest(c,j)}},d)),"pending")}}}),a.format=function(){throw"$.format has been deprecated. Please use $.validator.format instead."};var b,c={};a.ajaxPrefilter?a.ajaxPrefilter(function(a,b,d){var e=a.port;"abort"===a.mode&&(c[e]&&c[e].abort(),c[e]=d)}):(b=a.ajax,a.ajax=function(d){var e=("mode"in d?d:a.ajaxSettings).mode,f=("port"in d?d:a.ajaxSettings).port;return"abort"===e?(c[f]&&c[f].abort(),c[f]=b.apply(this,arguments),c[f]):b.apply(this,arguments)}),a.extend(a.fn,{validateDelegate:function(b,c,d){return this.bind(c,function(c){var e=a(c.target);return e.is(b)?d.apply(e,arguments):void 0})}})}); \ No newline at end of file diff --git a/assets/js/plugins/video/responsible-video.js b/assets/js/plugins/video/responsible-video.js deleted file mode 100644 index b74f1607..00000000 --- a/assets/js/plugins/video/responsible-video.js +++ /dev/null @@ -1,21 +0,0 @@ -$(function() { - var $allVideos = $("iframe[src^='http://player.vimeo.com'], iframe[src^='http://www.youtube.com'], object, embed"), - $fluidEl = $("figure"); - - $allVideos.each(function() { - $(this) - // jQuery .data does not work on object/embed elements - .attr('data-aspectRatio', this.height / this.width) - .removeAttr('height') - .removeAttr('width'); - }); - $(window).resize(function() { - var newWidth = $fluidEl.width(); - $allVideos.each(function() { - var $el = $(this); - $el - .width(newWidth) - .height(newWidth * $el.attr('data-aspectRatio')); - }); - }).resize(); -}); \ No newline at end of file diff --git a/assets/js/tsort.min.js b/assets/js/tsort.min.js deleted file mode 100644 index 1738c647..00000000 --- a/assets/js/tsort.min.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * jQuery Animated Table Sorter 0.2.2 (02/25/2013) - * - * http://www.matanhershberg.com/plugins/jquery-animated-table-sorter/ - * -*/ - -(function(a){a.fn.tableSort=function(q){var b=a.extend({animation:"slide",rowspan:!1,sortAs:{},speed:300,distance:"300px",delay:1},q);return this.each(function(){function q(e){for(var b="",d=0;d<=e.length;d++)if(a.isNumeric(e.charAt(d))||"."==e.charAt(d))b+=e.charAt(d);return b}var h=[],n=[],l=!1,p=[],j=[],r=[],m=[],f,c=a(this),l=!1;!0==b.rowspan&&a(c).find("td").each(function(){if(void 0!=a(this).attr("rowspan")){var b=a(this).attr("rowspan");a(this).removeAttr("rowspan");for(var c=a(this).parent().index(), -d=1;1<b;){switch(a(this).index()){case 0:a(this).clone().prependTo(a(this).parent().parent().children().eq(c+d));break;default:a(this).clone().insertAfter(a(this).parent().parent().children().eq(c+d).children().eq(a(this).index()-1))}d++;b--}}});0>=b.delay&&(b.delay=1);a(c).find("tr:first-child th").each(function(e){if(void 0!=b.sortBy)switch(b.sortBy[e]){case "text":case "numeric":case "nosort":m[e]=b.sortBy[e];return}if(void 0!=a(this).attr("data-sort"))switch(a(this).attr("data-sort")){case "text":case "numeric":case "nosort":m[e]= -a(this).attr("data-sort");return}for(var g=a(c).find("tr:eq(1) td:eq("+e+")").text(),d=0,h=0,f=0;f<=g.length-1;f++)a.isNumeric(g.charAt(f))||","==g.charAt(f)||"."==g.charAt(f)?d++:h++;m[e]=d>h?"numeric":"text"});a(c).css("position","relative");a(c).find("tr:first-child th").each(function(b){"nosort"!=m[b]&&a('<div class="sortArrow"><div class="sortArrowAscending"></div><div class="sortArrowDescending"></div></div>').appendTo(a(this))});a(c).find("tr:first-child th").each(function(){r.push(a(this).outerWidth(!0))}); -a(c).find("tr td, tr th").each(function(){a(this).css({minWidth:r[a(this).index()]})});a(c).find("tr").each(function(){a(this).width(a(this).outerWidth(!0));a(this).height(a(this).outerHeight(!0))});a(c).height(a(this).outerHeight()).width(a(this).outerWidth());var g=0;a(c).find("tr").each(function(){a(this).css("top",g);g+=a(this).outerHeight()});a(c).find("tr").each(function(){a(this).css("position","absolute")});a(c).find("tr th").each(function(b){"nosort"!=m[b]&&a(this).css("cursor","pointer")}); -a(c).find("tr th").click(function(){if(!l&&"nosort"!=m[a(this).index()]){f=a(this).index();0==h.length&&a(c).find("tr").each(function(d){0<d&&a(this).addClass("tsort_id-"+(d-1));a(this).find("td").each(function(c){a(this).is(":first-child")&&(h.push({}),h[h.length-1].id=d-1,h[h.length-1].td=[],h[h.length-1].height=a(this).parent().height());void 0!=a(this).attr("data-sortAs")?h[h.length-1].td.push(a(this).attr("data-sortAs")):void 0!=typeof b.sortAs&&void 0!=b.sortAs[a(this).text()]?h[h.length-1].td.push(b.sortAs[a(this).text()]): -"numeric"==m[c]?h[h.length-1].td.push(q(a(this).text())):h[h.length-1].td.push(a(this).text())})});p[f]||(p[f]=h.concat(),"numeric"==m[f]?p[f].sort(function(a,b){return a.td[f]-b.td[f]}):"text"==m[f]&&p[f].sort(function(a,b){return a.td[f].localeCompare(b.td[f])}));if(0==j.length)j.push({column_id:f,direction:"ascending"});else if(0!=j.length)if(f==j[j.length-1].column_id)switch(j[j.length-1].direction){case "ascending":j.push({column_id:f,direction:"descending"});break;case "descending":j.push({column_id:f, -direction:"ascending"})}else j.push({column_id:f,direction:"ascending"});var e=p[f],e="ascending"==j[j.length-1].direction?e.concat():e.concat().reverse();g=a(c).find("tr").height();if("none"==b.animation)for(index=0;index<e.length;index++){var k=e[index];a(c).find("tr.tsort_id-"+k.id).css({top:g}).appendTo(c);g+=k.height}else if("slide"==b.animation)for(index=0;index<e.length;index++)k=e[index],a(c).find("tr.tsort_id-"+k.id).stop().delay(b.delay*index).animate({top:g},b.speed,"swing").appendTo(c), -g+=k.height;else if("fadeAll"==b.animation)l=!0,a(c).find("tr:gt(0)").fadeOut(b.speed).promise().done(function(){for(index=0;index<e.length;index++){var d=e[index];a(c).find("tr.tsort_id-"+d.id).css({top:g}).appendTo(c);g+=d.height;index==h.length-1&&a(c).find("tr").delay(1).fadeIn(b.speed,"swing").promise().done(function(){l=!1})}});else if("fade"==b.animation){l=!0;if(0==n.length)for(index=0;index<e.length;index++)k=e[index],n[k.id]=a(c).find("tr.tsort_id-"+k.id).clone();a(c).find("tr:gt(0)").each(function(d){a(this).delay(d* -b.delay).fadeOut(b.speed,"swing",function(){a(this).remove();a(n[e[d].id]).clone().hide().css({top:g}).appendTo(c).delay(1).fadeIn(b.speed,"swing",function(){d==h.length-1&&(l=!1)});g+=e[d].height})})}else if("slideLeftAll"==b.animation)l=!0,a(c).find("tr:gt(0)").each(function(d){a(this).delay(d*b.delay).animate({left:"-"+b.distance,opacity:0},b.speed,"swing");d==h.length-1&&a(this).promise().done(function(){for(d=0;d<e.length;d++){var f=e[d];a(c).find("tr.tsort_id-"+f.id).css({top:g,left:"",right:"-"+ -b.distance}).appendTo(c).delay(d*b.delay).animate({right:"0px",opacity:1},b.speed,"swing",function(){a(this).css("right","auto");a(this).is("tr:last-child")&&(l=!1)});g+=f.height}})});else if("slideLeft"==b.animation){l=!0;if(0==n.length)for(index=0;index<e.length;index++)k=e[index],n[k.id]=a(c).find("tr.tsort_id-"+k.id).clone();a(c).find("tr:gt(0)").each(function(d){a(this).delay(d*b.delay).animate({left:"-"+b.distance,opacity:0},b.speed,"swing",function(){a(this).remove();a(n[e[d].id]).clone().css({opacity:0}).appendTo(c).css({top:g, -left:"",right:"-"+b.distance}).animate({right:"0px",opacity:1},b.speed,function(){a(this).css("right","auto");d==h.length-1&&(l=!1)});g+=e[d].height})})}k=j[j.length-1].direction;a(c).find("tr:first-child th div.sortArrow div").stop(!0,!0).fadeOut(b.speed,"swing");switch(k){case "ascending":a(c).find("tr:first-child th div.sortArrow div.sortArrowAscending").eq(f).fadeIn(b.speed,"swing");break;case "descending":a(c).find("tr:first-child th div.sortArrow div.sortArrowDescending").eq(f).fadeIn(b.speed, -"swing")}}})})}})(jQuery); \ No newline at end of file diff --git a/assets/js/underscore.js b/assets/js/underscore.js deleted file mode 100644 index 73d60654..00000000 --- a/assets/js/underscore.js +++ /dev/null @@ -1,7 +0,0 @@ -// Underscore.js 1.5.0 -// http://underscorejs.org -// (c) 2009-2011 Jeremy Ashkenas, DocumentCloud Inc. -// (c) 2011-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. -!function(){var n=this,t=n._,r={},e=Array.prototype,u=Object.prototype,i=Function.prototype,a=e.push,o=e.slice,c=e.concat,l=u.toString,f=u.hasOwnProperty,s=e.forEach,p=e.map,v=e.reduce,h=e.reduceRight,d=e.filter,g=e.every,m=e.some,y=e.indexOf,b=e.lastIndexOf,x=Array.isArray,_=Object.keys,w=i.bind,j=function(n){return n instanceof j?n:this instanceof j?(this._wrapped=n,void 0):new j(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=j),exports._=j):n._=j,j.VERSION="1.5.0";var A=j.each=j.forEach=function(n,t,e){if(null!=n)if(s&&n.forEach===s)n.forEach(t,e);else if(n.length===+n.length){for(var u=0,i=n.length;i>u;u++)if(t.call(e,n[u],u,n)===r)return}else for(var a in n)if(j.has(n,a)&&t.call(e,n[a],a,n)===r)return};j.map=j.collect=function(n,t,r){var e=[];return null==n?e:p&&n.map===p?n.map(t,r):(A(n,function(n,u,i){e.push(t.call(r,n,u,i))}),e)};var E="Reduce of empty array with no initial value";j.reduce=j.foldl=j.inject=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),v&&n.reduce===v)return e&&(t=j.bind(t,e)),u?n.reduce(t,r):n.reduce(t);if(A(n,function(n,i,a){u?r=t.call(e,r,n,i,a):(r=n,u=!0)}),!u)throw new TypeError(E);return r},j.reduceRight=j.foldr=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),h&&n.reduceRight===h)return e&&(t=j.bind(t,e)),u?n.reduceRight(t,r):n.reduceRight(t);var i=n.length;if(i!==+i){var a=j.keys(n);i=a.length}if(A(n,function(o,c,l){c=a?a[--i]:--i,u?r=t.call(e,r,n[c],c,l):(r=n[c],u=!0)}),!u)throw new TypeError(E);return r},j.find=j.detect=function(n,t,r){var e;return O(n,function(n,u,i){return t.call(r,n,u,i)?(e=n,!0):void 0}),e},j.filter=j.select=function(n,t,r){var e=[];return null==n?e:d&&n.filter===d?n.filter(t,r):(A(n,function(n,u,i){t.call(r,n,u,i)&&e.push(n)}),e)},j.reject=function(n,t,r){return j.filter(n,function(n,e,u){return!t.call(r,n,e,u)},r)},j.every=j.all=function(n,t,e){t||(t=j.identity);var u=!0;return null==n?u:g&&n.every===g?n.every(t,e):(A(n,function(n,i,a){return(u=u&&t.call(e,n,i,a))?void 0:r}),!!u)};var O=j.some=j.any=function(n,t,e){t||(t=j.identity);var u=!1;return null==n?u:m&&n.some===m?n.some(t,e):(A(n,function(n,i,a){return u||(u=t.call(e,n,i,a))?r:void 0}),!!u)};j.contains=j.include=function(n,t){return null==n?!1:y&&n.indexOf===y?n.indexOf(t)!=-1:O(n,function(n){return n===t})},j.invoke=function(n,t){var r=o.call(arguments,2),e=j.isFunction(t);return j.map(n,function(n){return(e?t:n[t]).apply(n,r)})},j.pluck=function(n,t){return j.map(n,function(n){return n[t]})},j.where=function(n,t,r){return j.isEmpty(t)?r?void 0:[]:j[r?"find":"filter"](n,function(n){for(var r in t)if(t[r]!==n[r])return!1;return!0})},j.findWhere=function(n,t){return j.where(n,t,!0)},j.max=function(n,t,r){if(!t&&j.isArray(n)&&n[0]===+n[0]&&n.length<65535)return Math.max.apply(Math,n);if(!t&&j.isEmpty(n))return-1/0;var e={computed:-1/0,value:-1/0};return A(n,function(n,u,i){var a=t?t.call(r,n,u,i):n;a>e.computed&&(e={value:n,computed:a})}),e.value},j.min=function(n,t,r){if(!t&&j.isArray(n)&&n[0]===+n[0]&&n.length<65535)return Math.min.apply(Math,n);if(!t&&j.isEmpty(n))return 1/0;var e={computed:1/0,value:1/0};return A(n,function(n,u,i){var a=t?t.call(r,n,u,i):n;a<e.computed&&(e={value:n,computed:a})}),e.value},j.shuffle=function(n){var t,r=0,e=[];return A(n,function(n){t=j.random(r++),e[r-1]=e[t],e[t]=n}),e};var F=function(n){return j.isFunction(n)?n:function(t){return t[n]}};j.sortBy=function(n,t,r){var e=F(t);return j.pluck(j.map(n,function(n,t,u){return{value:n,index:t,criteria:e.call(r,n,t,u)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||r===void 0)return 1;if(e>r||e===void 0)return-1}return n.index<t.index?-1:1}),"value")};var k=function(n,t,r,e){var u={},i=F(null==t?j.identity:t);return A(n,function(t,a){var o=i.call(r,t,a,n);e(u,o,t)}),u};j.groupBy=function(n,t,r){return k(n,t,r,function(n,t,r){(j.has(n,t)?n[t]:n[t]=[]).push(r)})},j.countBy=function(n,t,r){return k(n,t,r,function(n,t){j.has(n,t)||(n[t]=0),n[t]++})},j.sortedIndex=function(n,t,r,e){r=null==r?j.identity:F(r);for(var u=r.call(e,t),i=0,a=n.length;a>i;){var o=i+a>>>1;r.call(e,n[o])<u?i=o+1:a=o}return i},j.toArray=function(n){return n?j.isArray(n)?o.call(n):n.length===+n.length?j.map(n,j.identity):j.values(n):[]},j.size=function(n){return null==n?0:n.length===+n.length?n.length:j.keys(n).length},j.first=j.head=j.take=function(n,t,r){return null==n?void 0:null==t||r?n[0]:o.call(n,0,t)},j.initial=function(n,t,r){return o.call(n,0,n.length-(null==t||r?1:t))},j.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:o.call(n,Math.max(n.length-t,0))},j.rest=j.tail=j.drop=function(n,t,r){return o.call(n,null==t||r?1:t)},j.compact=function(n){return j.filter(n,j.identity)};var R=function(n,t,r){return t&&j.every(n,j.isArray)?c.apply(r,n):(A(n,function(n){j.isArray(n)||j.isArguments(n)?t?a.apply(r,n):R(n,t,r):r.push(n)}),r)};j.flatten=function(n,t){return R(n,t,[])},j.without=function(n){return j.difference(n,o.call(arguments,1))},j.uniq=j.unique=function(n,t,r,e){j.isFunction(t)&&(e=r,r=t,t=!1);var u=r?j.map(n,r,e):n,i=[],a=[];return A(u,function(r,e){(t?e&&a[a.length-1]===r:j.contains(a,r))||(a.push(r),i.push(n[e]))}),i},j.union=function(){return j.uniq(j.flatten(arguments,!0))},j.intersection=function(n){var t=o.call(arguments,1);return j.filter(j.uniq(n),function(n){return j.every(t,function(t){return j.indexOf(t,n)>=0})})},j.difference=function(n){var t=c.apply(e,o.call(arguments,1));return j.filter(n,function(n){return!j.contains(t,n)})},j.zip=function(){return j.unzip.apply(j,o.call(arguments))},j.unzip=function(){for(var n=j.max(j.pluck(arguments,"length").concat(0)),t=new Array(n),r=0;n>r;r++)t[r]=j.pluck(arguments,""+r);return t},j.object=function(n,t){if(null==n)return{};for(var r={},e=0,u=n.length;u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},j.indexOf=function(n,t,r){if(null==n)return-1;var e=0,u=n.length;if(r){if("number"!=typeof r)return e=j.sortedIndex(n,t),n[e]===t?e:-1;e=0>r?Math.max(0,u+r):r}if(y&&n.indexOf===y)return n.indexOf(t,r);for(;u>e;e++)if(n[e]===t)return e;return-1},j.lastIndexOf=function(n,t,r){if(null==n)return-1;var e=null!=r;if(b&&n.lastIndexOf===b)return e?n.lastIndexOf(t,r):n.lastIndexOf(t);for(var u=e?r:n.length;u--;)if(n[u]===t)return u;return-1},j.range=function(n,t,r){arguments.length<=1&&(t=n||0,n=0),r=arguments[2]||1;for(var e=Math.max(Math.ceil((t-n)/r),0),u=0,i=new Array(e);e>u;)i[u++]=n,n+=r;return i};var M=function(){};j.bind=function(n,t){var r,e;if(w&&n.bind===w)return w.apply(n,o.call(arguments,1));if(!j.isFunction(n))throw new TypeError;return r=o.call(arguments,2),e=function(){if(!(this instanceof e))return n.apply(t,r.concat(o.call(arguments)));M.prototype=n.prototype;var u=new M;M.prototype=null;var i=n.apply(u,r.concat(o.call(arguments)));return Object(i)===i?i:u}},j.partial=function(n){var t=o.call(arguments,1);return function(){return n.apply(this,t.concat(o.call(arguments)))}},j.bindAll=function(n){var t=o.call(arguments,1);if(0===t.length)throw new Error("bindAll must be passed function names");return A(t,function(t){n[t]=j.bind(n[t],n)}),n},j.memoize=function(n,t){var r={};return t||(t=j.identity),function(){var e=t.apply(this,arguments);return j.has(r,e)?r[e]:r[e]=n.apply(this,arguments)}},j.delay=function(n,t){var r=o.call(arguments,2);return setTimeout(function(){return n.apply(null,r)},t)},j.defer=function(n){return j.delay.apply(j,[n,1].concat(o.call(arguments,1)))},j.throttle=function(n,t,r){var e,u,i,a=null,o=0;r||(r={});var c=function(){o=new Date,a=null,i=n.apply(e,u)};return function(){var l=new Date;o||r.leading!==!1||(o=l);var f=t-(l-o);return e=this,u=arguments,0>=f?(clearTimeout(a),a=null,o=l,i=n.apply(e,u)):a||r.trailing===!1||(a=setTimeout(c,f)),i}},j.debounce=function(n,t,r){var e,u=null;return function(){var i=this,a=arguments,o=function(){u=null,r||(e=n.apply(i,a))},c=r&&!u;return clearTimeout(u),u=setTimeout(o,t),c&&(e=n.apply(i,a)),e}},j.once=function(n){var t,r=!1;return function(){return r?t:(r=!0,t=n.apply(this,arguments),n=null,t)}},j.wrap=function(n,t){return function(){var r=[n];return a.apply(r,arguments),t.apply(this,r)}},j.compose=function(){var n=arguments;return function(){for(var t=arguments,r=n.length-1;r>=0;r--)t=[n[r].apply(this,t)];return t[0]}},j.after=function(n,t){return function(){return--n<1?t.apply(this,arguments):void 0}},j.keys=_||function(n){if(n!==Object(n))throw new TypeError("Invalid object");var t=[];for(var r in n)j.has(n,r)&&t.push(r);return t},j.values=function(n){var t=[];for(var r in n)j.has(n,r)&&t.push(n[r]);return t},j.pairs=function(n){var t=[];for(var r in n)j.has(n,r)&&t.push([r,n[r]]);return t},j.invert=function(n){var t={};for(var r in n)j.has(n,r)&&(t[n[r]]=r);return t},j.functions=j.methods=function(n){var t=[];for(var r in n)j.isFunction(n[r])&&t.push(r);return t.sort()},j.extend=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]=t[r]}),n},j.pick=function(n){var t={},r=c.apply(e,o.call(arguments,1));return A(r,function(r){r in n&&(t[r]=n[r])}),t},j.omit=function(n){var t={},r=c.apply(e,o.call(arguments,1));for(var u in n)j.contains(r,u)||(t[u]=n[u]);return t},j.defaults=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]===void 0&&(n[r]=t[r])}),n},j.clone=function(n){return j.isObject(n)?j.isArray(n)?n.slice():j.extend({},n):n},j.tap=function(n,t){return t(n),n};var S=function(n,t,r,e){if(n===t)return 0!==n||1/n==1/t;if(null==n||null==t)return n===t;n instanceof j&&(n=n._wrapped),t instanceof j&&(t=t._wrapped);var u=l.call(n);if(u!=l.call(t))return!1;switch(u){case"[object String]":return n==String(t);case"[object Number]":return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case"[object Date]":case"[object Boolean]":return+n==+t;case"[object RegExp]":return n.source==t.source&&n.global==t.global&&n.multiline==t.multiline&&n.ignoreCase==t.ignoreCase}if("object"!=typeof n||"object"!=typeof t)return!1;for(var i=r.length;i--;)if(r[i]==n)return e[i]==t;var a=n.constructor,o=t.constructor;if(a!==o&&!(j.isFunction(a)&&a instanceof a&&j.isFunction(o)&&o instanceof o))return!1;r.push(n),e.push(t);var c=0,f=!0;if("[object Array]"==u){if(c=n.length,f=c==t.length)for(;c--&&(f=S(n[c],t[c],r,e)););}else{for(var s in n)if(j.has(n,s)&&(c++,!(f=j.has(t,s)&&S(n[s],t[s],r,e))))break;if(f){for(s in t)if(j.has(t,s)&&!c--)break;f=!c}}return r.pop(),e.pop(),f};j.isEqual=function(n,t){return S(n,t,[],[])},j.isEmpty=function(n){if(null==n)return!0;if(j.isArray(n)||j.isString(n))return 0===n.length;for(var t in n)if(j.has(n,t))return!1;return!0},j.isElement=function(n){return!(!n||1!==n.nodeType)},j.isArray=x||function(n){return"[object Array]"==l.call(n)},j.isObject=function(n){return n===Object(n)},A(["Arguments","Function","String","Number","Date","RegExp"],function(n){j["is"+n]=function(t){return l.call(t)=="[object "+n+"]"}}),j.isArguments(arguments)||(j.isArguments=function(n){return!(!n||!j.has(n,"callee"))}),"function"!=typeof/./&&(j.isFunction=function(n){return"function"==typeof n}),j.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},j.isNaN=function(n){return j.isNumber(n)&&n!=+n},j.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"==l.call(n)},j.isNull=function(n){return null===n},j.isUndefined=function(n){return n===void 0},j.has=function(n,t){return f.call(n,t)},j.noConflict=function(){return n._=t,this},j.identity=function(n){return n},j.times=function(n,t,r){for(var e=Array(Math.max(0,n)),u=0;n>u;u++)e[u]=t.call(r,u);return e},j.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))};var I={escape:{"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;"}};I.unescape=j.invert(I.escape);var T={escape:new RegExp("["+j.keys(I.escape).join("")+"]","g"),unescape:new RegExp("("+j.keys(I.unescape).join("|")+")","g")};j.each(["escape","unescape"],function(n){j[n]=function(t){return null==t?"":(""+t).replace(T[n],function(t){return I[n][t]})}}),j.result=function(n,t){if(null==n)return void 0;var r=n[t];return j.isFunction(r)?r.call(n):r},j.mixin=function(n){A(j.functions(n),function(t){var r=j[t]=n[t];j.prototype[t]=function(){var n=[this._wrapped];return a.apply(n,arguments),D.call(this,r.apply(j,n))}})};var N=0;j.uniqueId=function(n){var t=++N+"";return n?n+t:t},j.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var q=/(.)^/,B={"'":"'","\\":"\\","\r":"r","\n":"n"," ":"t","\u2028":"u2028","\u2029":"u2029"},z=/\\|'|\r|\n|\t|\u2028|\u2029/g;j.template=function(n,t,r){var e;r=j.defaults({},r,j.templateSettings);var u=new RegExp([(r.escape||q).source,(r.interpolate||q).source,(r.evaluate||q).source].join("|")+"|$","g"),i=0,a="__p+='";n.replace(u,function(t,r,e,u,o){return a+=n.slice(i,o).replace(z,function(n){return"\\"+B[n]}),r&&(a+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'"),e&&(a+="'+\n((__t=("+e+"))==null?'':__t)+\n'"),u&&(a+="';\n"+u+"\n__p+='"),i=o+t.length,t}),a+="';\n",r.variable||(a="with(obj||{}){\n"+a+"}\n"),a="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+a+"return __p;\n";try{e=new Function(r.variable||"obj","_",a)}catch(o){throw o.source=a,o}if(t)return e(t,j);var c=function(n){return e.call(this,n,j)};return c.source="function("+(r.variable||"obj")+"){\n"+a+"}",c},j.chain=function(n){return j(n).chain()};var D=function(n){return this._chain?j(n).chain():n};j.mixin(j),A(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=e[n];j.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!=n&&"splice"!=n||0!==r.length||delete r[0],D.call(this,r)}}),A(["concat","join","slice"],function(n){var t=e[n];j.prototype[n]=function(){return D.call(this,t.apply(this._wrapped,arguments))}}),j.extend(j.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}})}.call(this); -//# sourceMappingURL=underscore-min.map \ No newline at end of file diff --git a/assets/js/upload.min.js b/assets/js/upload.min.js deleted file mode 100644 index 6d31c977..00000000 --- a/assets/js/upload.min.js +++ /dev/null @@ -1,12 +0,0 @@ -/*! - * bootstrap-fileinput v4.4.0 - * http://plugins.krajee.com/file-input - * - * Author: Kartik Visweswaran - * Copyright: 2014 - 2017, Kartik Visweswaran, Krajee.com - * - * Licensed under the BSD 3-Clause - * https://github.com/kartik-v/bootstrap-fileinput/blob/master/LICENSE.md - */!function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof module&&module.exports?module.exports=e(require("jquery")):e(window.jQuery)}(function(e){"use strict";e.fn.fileinputLocales={},e.fn.fileinputThemes={};var i,t;i={FRAMES:".kv-preview-thumb",SORT_CSS:"file-sortable",STYLE_SETTING:'style="width:{width};height:{height};"',OBJECT_PARAMS:'<param name="controller" value="true" />\n<param name="allowFullScreen" value="true" />\n<param name="allowScriptAccess" value="always" />\n<param name="autoPlay" value="false" />\n<param name="autoStart" value="false" />\n<param name="quality" value="high" />\n',DEFAULT_PREVIEW:'<div class="file-preview-other">\n<span class="{previewFileIconClass}">{previewFileIcon}</span>\n</div>',MODAL_ID:"kvFileinputModal",MODAL_EVENTS:["show","shown","hide","hidden","loaded"],objUrl:window.URL||window.webkitURL,compare:function(e,i,t){return void 0!==e&&(t?e===i:e.match(i))},isIE:function(e){if("Microsoft Internet Explorer"!==navigator.appName)return!1;if(10===e)return new RegExp("msie\\s"+e,"i").test(navigator.userAgent);var i,t=document.createElement("div");return t.innerHTML="<!--[if IE "+e+"]> <i></i> <![endif]-->",i=t.getElementsByTagName("i").length,document.body.appendChild(t),t.parentNode.removeChild(t),i},initModal:function(i){var t=e("body");t.length&&i.appendTo(t)},isEmpty:function(i,t){return void 0===i||null===i||0===i.length||t&&""===e.trim(i)},isArray:function(e){return Array.isArray(e)||"[object Array]"===Object.prototype.toString.call(e)},ifSet:function(e,i,t){return t=t||"",i&&"object"==typeof i&&e in i?i[e]:t},cleanArray:function(e){return e instanceof Array||(e=[]),e.filter(function(e){return void 0!==e&&null!==e})},spliceArray:function(e,i){var t,a=0,r=[];if(!(e instanceof Array))return[];for(t=0;t<e.length;t++)t!==i&&(r[a]=e[t],a++);return r},getNum:function(e,i){return i=i||0,"number"==typeof e?e:("string"==typeof e&&(e=parseFloat(e)),isNaN(e)?i:e)},hasFileAPISupport:function(){return!(!window.File||!window.FileReader)},hasDragDropSupport:function(){var e=document.createElement("div");return!i.isIE(9)&&(void 0!==e.draggable||void 0!==e.ondragstart&&void 0!==e.ondrop)},hasFileUploadSupport:function(){return i.hasFileAPISupport()&&window.FormData},addCss:function(e,i){e.removeClass(i).addClass(i)},getElement:function(t,a,r){return i.isEmpty(t)||i.isEmpty(t[a])?r:e(t[a])},uniqId:function(){return Math.round((new Date).getTime()+100*Math.random())},htmlEncode:function(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;")},replaceTags:function(i,t){var a=i;return t?(e.each(t,function(e,i){"function"==typeof i&&(i=i()),a=a.split(e).join(i)}),a):a},cleanMemory:function(e){var t=e.is("img")?e.attr("src"):e.find("source").attr("src");i.objUrl.revokeObjectURL(t)},findFileName:function(e){var i=e.lastIndexOf("/");return-1===i&&(i=e.lastIndexOf("\\")),e.split(e.substring(i,i+1)).pop()},checkFullScreen:function(){return document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement},toggleFullScreen:function(e){var t=document,a=t.documentElement;a&&e&&!i.checkFullScreen()?a.requestFullscreen?a.requestFullscreen():a.msRequestFullscreen?a.msRequestFullscreen():a.mozRequestFullScreen?a.mozRequestFullScreen():a.webkitRequestFullscreen&&a.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT):t.exitFullscreen?t.exitFullscreen():t.msExitFullscreen?t.msExitFullscreen():t.mozCancelFullScreen?t.mozCancelFullScreen():t.webkitExitFullscreen&&t.webkitExitFullscreen()},moveArray:function(e,i,t){if(t>=e.length)for(var a=t-e.length;a--+1;)e.push(void 0);return e.splice(t,0,e.splice(i,1)[0]),e},cleanZoomCache:function(e){var i=e.closest(".kv-zoom-cache-theme");i.length||(i=e.closest(".kv-zoom-cache")),i.remove()}},t=function(t,a){var r=this;r.$element=e(t),r._validate()&&(r.isPreviewable=i.hasFileAPISupport(),r.isIE9=i.isIE(9),r.isIE10=i.isIE(10),r.isPreviewable||r.isIE9?(r._init(a),r._listen()):r.$element.removeClass("file-loading"))},t.prototype={constructor:t,_init:function(t){var a,r,n=this,o=n.$element;n.options=t,e.each(t,function(e,t){switch(e){case"minFileCount":case"maxFileCount":case"minFileSize":case"maxFileSize":case"maxFilePreviewSize":case"resizeImageQuality":case"resizeIfSizeMoreThan":case"progressUploadThreshold":case"initialPreviewCount":case"zoomModalHeight":case"minImageHeight":case"maxImageHeight":case"minImageWidth":case"maxImageWidth":n[e]=i.getNum(t);break;default:n[e]=t}}),n.$form=o.closest("form"),n._initTemplateDefaults(),n.fileInputCleared=!1,n.fileBatchCompleted=!0,n.isPreviewable||(n.showPreview=!1),n.uploadFileAttr=i.isEmpty(o.attr("name"))?"file_data":o.attr("name"),n.reader=null,n.formdata={},n.clearStack(),n.uploadCount=0,n.uploadStatus={},n.uploadLog=[],n.uploadAsyncCount=0,n.loadedImages=[],n.totalImagesCount=0,n.ajaxRequests=[],n.isError=!1,n.ajaxAborted=!1,n.cancelling=!1,r=n._getLayoutTemplate("progress"),n.progressTemplate=r.replace("{class}",n.progressClass),n.progressCompleteTemplate=r.replace("{class}",n.progressCompleteClass),n.progressErrorTemplate=r.replace("{class}",n.progressErrorClass),n.dropZoneEnabled=i.hasDragDropSupport()&&n.dropZoneEnabled,n.isDisabled=o.attr("disabled")||o.attr("readonly"),n.isDisabled&&o.attr("disabled",!0),n.isUploadable=i.hasFileUploadSupport()&&!i.isEmpty(n.uploadUrl),n.isClickable=n.browseOnZoneClick&&n.showPreview&&(n.isUploadable&&n.dropZoneEnabled||!i.isEmpty(n.defaultPreviewContent)),n.slug="function"==typeof t.slugCallback?t.slugCallback:n._slugDefault,n.mainTemplate=n.showCaption?n._getLayoutTemplate("main1"):n._getLayoutTemplate("main2"),n.captionTemplate=n._getLayoutTemplate("caption"),n.previewGenericTemplate=n._getPreviewTemplate("generic"),n.resizeImage&&(n.maxImageWidth||n.maxImageHeight)&&(n.imageCanvas=document.createElement("canvas"),n.imageCanvasContext=n.imageCanvas.getContext("2d")),i.isEmpty(o.attr("id"))&&o.attr("id",i.uniqId()),n.namespace=".fileinput_"+o.attr("id").replace(/-/g,"_"),void 0===n.$container?n.$container=n._createContainer():n._refreshContainer(),a=n.$container,n.$dropZone=a.find(".file-drop-zone"),n.$progress=a.find(".kv-upload-progress"),n.$btnUpload=a.find(".fileinput-upload"),n.$captionContainer=i.getElement(t,"elCaptionContainer",a.find(".file-caption")),n.$caption=i.getElement(t,"elCaptionText",a.find(".file-caption-name")),n.$previewContainer=i.getElement(t,"elPreviewContainer",a.find(".file-preview")),n.$preview=i.getElement(t,"elPreviewImage",a.find(".file-preview-thumbnails")),n.$previewStatus=i.getElement(t,"elPreviewStatus",a.find(".file-preview-status")),n.$errorContainer=i.getElement(t,"elErrorContainer",n.$previewContainer.find(".kv-fileinput-error")),i.isEmpty(n.msgErrorClass)||i.addCss(n.$errorContainer,n.msgErrorClass),n.$errorContainer.hide(),n.previewInitId="preview-"+i.uniqId(),n._initPreviewCache(),n._initPreview(!0),n._initPreviewActions(),n._setFileDropZoneTitle(),o.removeClass("file-loading"),o.attr("disabled")&&n.disable(),n._initZoom()},_initTemplateDefaults:function(){var t,a,r,n,o,l,s,d,c,p,u,f,m,g,v,h,w,_,b,C,y,E,x,T,S,F,I,P,k,z,A,$,D,U,j,R=this;t='{preview}\n<div class="kv-upload-progress hide"></div>\n<div class="input-group {class}">\n {caption}\n <div class="input-group-btn">\n {remove}\n {cancel}\n {upload}\n {browse}\n </div>\n</div>',a='{preview}\n<div class="kv-upload-progress hide"></div>\n{remove}\n{cancel}\n{upload}\n{browse}\n',r='<div class="file-preview {class}">\n {close} <div class="{dropClass}">\n <div class="file-preview-thumbnails">\n </div>\n <div class="clearfix"></div> <div class="file-preview-status text-center text-success"></div>\n <div class="kv-fileinput-error"></div>\n </div>\n</div>',o='<div class="close fileinput-remove">&times;</div>\n',n='<i class="glyphicon glyphicon-file kv-caption-icon"></i>',l='<div tabindex="500" class="form-control file-caption {class}">\n <div class="file-caption-name"></div>\n</div>\n',s='<button type="{type}" tabindex="500" title="{title}" class="{css}" {status}>{icon} {label}</button>',d='<a href="{href}" tabindex="500" title="{title}" class="{css}" {status}>{icon} {label}</a>',c='<div tabindex="500" class="{css}" {status}>{icon} {label}</div>',p='<div id="'+i.MODAL_ID+'" class="file-zoom-dialog modal fade" tabindex="-1" aria-labelledby="'+i.MODAL_ID+'Label"></div>',u='<div class="modal-dialog modal-lg" role="document">\n <div class="modal-content">\n <div class="modal-header">\n <div class="kv-zoom-actions pull-right">{toggleheader}{fullscreen}{borderless}{close}</div>\n <h3 class="modal-title">{heading} <small><span class="kv-zoom-title"></span></small></h3>\n </div>\n <div class="modal-body">\n <div class="floating-buttons"></div>\n <div class="kv-zoom-body file-zoom-content {zoomFrameClass}"></div>\n{prev} {next}\n </div>\n </div>\n</div>\n',f='<div class="progress">\n <div class="{class}" role="progressbar" aria-valuenow="{percent}" aria-valuemin="0" aria-valuemax="100" style="width:{percent}%;">\n {status}\n </div>\n</div>',m=" <samp>({sizeText})</samp>",g='<div class="file-thumbnail-footer">\n <div class="file-footer-caption" title="{caption}">{caption}<br>{size}</div>\n {progress} {actions}\n</div>',v='<div class="file-upload-indicator" title="{indicatorTitle}">{indicator}</div>\n{drag}\n<div class="file-actions">\n <div class="file-footer-buttons">\n {upload} {delete} {zoom} {other} </div>\n <div class="clearfix"></div>\n</div>',h='<button type="button" class="kv-file-remove {removeClass}" title="{removeTitle}" {dataUrl}{dataKey}>{removeIcon}</button>\n',w='<button type="button" class="kv-file-upload {uploadClass}" title="{uploadTitle}">{uploadIcon}</button>',_='<button type="button" class="kv-file-zoom {zoomClass}" title="{zoomTitle}">{zoomIcon}</button>',b='<span class="file-drag-handle {dragClass}" title="{dragTitle}">{dragIcon}</span>',C='<div class="file-preview-frame {frameClass}" id="{previewId}" data-fileindex="{fileindex}" data-template="{template}"',y=C+'><div class="kv-file-content">\n',E=C+' title="{caption}"><div class="kv-file-content">\n',x="</div>{footer}\n</div>\n",T="{content}\n",S='<div class="kv-preview-data file-preview-html" title="{caption}" '+i.STYLE_SETTING+">{data}</div>\n",F='<img src="{data}" class="file-preview-image kv-preview-data" title="{caption}" alt="{caption}" '+i.STYLE_SETTING+">\n",I='<textarea class="kv-preview-data file-preview-text" title="{caption}" readonly '+i.STYLE_SETTING+">{data}</textarea>\n",P='<video class="kv-preview-data file-preview-video" width="{width}" height="{height}" controls>\n<source src="{data}" type="{type}">\n'+i.DEFAULT_PREVIEW+"\n</video>\n",k='<div class="file-preview-audio"><audio class="kv-preview-data" controls>\n<source src="{data}" type="{type}">\n'+i.DEFAULT_PREVIEW+"\n</audio></div>\n",z='<object class="kv-preview-data file-object" type="application/x-shockwave-flash" width="{width}" height="{height}" data="{data}">\n'+i.OBJECT_PARAMS+" "+i.DEFAULT_PREVIEW+"\n</object>\n",A='<object class="kv-preview-data file-object {typeCss}" data="{data}" type="{type}" width="{width}" height="{height}">\n<param name="movie" value="{caption}" />\n'+i.OBJECT_PARAMS+" "+i.DEFAULT_PREVIEW+"\n</object>\n",$='<embed class="kv-preview-data" src="{data}" width="{width}" height="{height}" type="application/pdf">\n',D='<div class="kv-preview-data file-preview-other-frame">\n'+i.DEFAULT_PREVIEW+"\n</div>\n",U='<div class="kv-zoom-cache" style="display:none">{zoomContent}</div>',j={width:"100%",height:"100%","min-height":"480px"},R.defaults={layoutTemplates:{main1:t,main2:a,preview:r,close:o,fileIcon:n,caption:l,modalMain:p,modal:u,progress:f,size:m,footer:g,actions:v,actionDelete:h,actionUpload:w,actionZoom:_,actionDrag:b,btnDefault:s,btnLink:d,btnBrowse:c,zoomCache:U},previewMarkupTags:{tagBefore1:y,tagBefore2:E,tagAfter:x},previewContentTemplates:{generic:T,html:S,image:F,text:I,video:P,audio:k,flash:z,object:A,pdf:$,other:D},allowedPreviewTypes:["image","html","text","video","audio","flash","pdf","object"],previewTemplates:{},previewSettings:{image:{width:"auto",height:"160px"},html:{width:"213px",height:"160px"},text:{width:"213px",height:"160px"},video:{width:"auto",height:"100%","max-width":"100%"},audio:{width:"100%",height:"30px"},flash:{width:"auto",height:"100%","max-width":"100%"},object:{height:"100%"},pdf:{width:"160px",height:"160px"},other:{width:"160px",height:"160px"}},previewZoomSettings:{image:{width:"auto",height:"auto","max-width":"100%","max-height":"100%"},html:j,text:j,video:{width:"auto",height:"100%","max-width":"100%"},audio:{width:"100%",height:"30px"},flash:{width:"auto",height:"480px"},object:{width:"auto",height:"100%","max-width":"100%","min-height":"480px"},pdf:j,other:{width:"auto",height:"100%","min-height":"480px"}},fileTypeSettings:{image:function(e,t){return i.compare(e,"image.*")||i.compare(t,/\.(gif|png|jpe?g)$/i)},html:function(e,t){return i.compare(e,"text/html")||i.compare(t,/\.(htm|html)$/i)},text:function(e,t){return i.compare(e,"text.*")||i.compare(t,/\.(xml|javascript)$/i)||i.compare(t,/\.(txt|md|csv|nfo|ini|json|php|js|css)$/i)},video:function(e,t){return i.compare(e,"video.*")&&(i.compare(e,/(ogg|mp4|mp?g|mov|webm|3gp)$/i)||i.compare(t,/\.(og?|mp4|webm|mp?g|mov|3gp)$/i))},audio:function(e,t){return i.compare(e,"audio.*")&&(i.compare(t,/(ogg|mp3|mp?g|wav)$/i)||i.compare(t,/\.(og?|mp3|mp?g|wav)$/i))},flash:function(e,t){return i.compare(e,"application/x-shockwave-flash",!0)||i.compare(t,/\.(swf)$/i)},pdf:function(e,t){return i.compare(e,"application/pdf",!0)||i.compare(t,/\.(pdf)$/i)},object:function(){return!0},other:function(){return!0}},fileActionSettings:{showRemove:!0,showUpload:!0,showZoom:!0,showDrag:!0,removeIcon:'<i class="glyphicon glyphicon-trash text-danger"></i>',removeClass:"btn btn-xs btn-default",removeTitle:"Remove file",uploadIcon:'<i class="glyphicon glyphicon-upload text-info"></i>',uploadClass:"btn btn-xs btn-default",uploadTitle:"Upload file",zoomIcon:'<i class="glyphicon glyphicon-zoom-in"></i>',zoomClass:"btn btn-xs btn-default",zoomTitle:"View Details",dragIcon:'<i class="glyphicon glyphicon-menu-hamburger"></i>',dragClass:"text-info",dragTitle:"Move / Rearrange",dragSettings:{},indicatorNew:'<i class="glyphicon glyphicon-hand-down text-warning"></i>',indicatorSuccess:'<i class="glyphicon glyphicon-ok-sign text-success"></i>',indicatorError:'<i class="glyphicon glyphicon-exclamation-sign text-danger"></i>',indicatorLoading:'<i class="glyphicon glyphicon-hand-up text-muted"></i>',indicatorNewTitle:"Not uploaded yet",indicatorSuccessTitle:"Uploaded",indicatorErrorTitle:"Upload Error",indicatorLoadingTitle:"Uploading ..."}},e.each(R.defaults,function(i,t){return"allowedPreviewTypes"===i?void(void 0===R.allowedPreviewTypes&&(R.allowedPreviewTypes=t)):void(R[i]=e.extend(!0,{},t,R[i]))}),R._initPreviewTemplates()},_initPreviewTemplates:function(){var t,a=this,r=a.defaults,n=a.previewMarkupTags,o=n.tagAfter;e.each(r.previewContentTemplates,function(e,r){i.isEmpty(a.previewTemplates[e])&&(t=n.tagBefore2,"generic"!==e&&"image"!==e&&"html"!==e&&"text"!==e||(t=n.tagBefore1),a.previewTemplates[e]=t+r+o)})},_initPreviewCache:function(){var t=this;t.previewCache={data:{},init:function(){var e=t.initialPreview;e.length>0&&!i.isArray(e)&&(e=e.split(t.initialPreviewDelimiter)),t.previewCache.data={content:e,config:t.initialPreviewConfig,tags:t.initialPreviewThumbTags}},fetch:function(){return t.previewCache.data.content.filter(function(e){return null!==e})},count:function(e){return t.previewCache.data&&t.previewCache.data.content?e?t.previewCache.data.content.length:t.previewCache.fetch().length:0},get:function(a,r){var n,o,l,s,d,c,p,u="init_"+a,f=t.previewCache.data,m=f.config[a],g=f.content[a],v=t.previewInitId+"-"+u,h=i.ifSet("previewAsData",m,t.initialPreviewAsData),w=function(e,a,r,n,o,l,s,d,c){return d=" file-preview-initial "+i.SORT_CSS+(d?" "+d:""),t._generatePreviewTemplate(e,a,r,n,o,!1,null,d,l,s,c)};return g?(r=void 0===r?!0:r,l=i.ifSet("type",m,t.initialPreviewFileType||"generic"),d=i.ifSet("filename",m,i.ifSet("caption",m)),c=i.ifSet("filetype",m,l),s=t.previewCache.footer(a,r,m&&m.size||null),p=i.ifSet("frameClass",m),n=h?w(l,g,d,c,v,s,u,p):w("generic",g,d,c,v,s,u,p,l).replace(/\{content}/g,f.content[a]),f.tags.length&&f.tags[a]&&(n=i.replaceTags(n,f.tags[a])),i.isEmpty(m)||i.isEmpty(m.frameAttr)||(o=e(document.createElement("div")).html(n),o.find(".file-preview-initial").attr(m.frameAttr),n=o.html(),o.remove()),n):""},add:function(e,a,r,n){var o,l=t.previewCache.data;return i.isArray(e)||(e=e.split(t.initialPreviewDelimiter)),n?(o=l.content.push(e)-1,l.config[o]=a,l.tags[o]=r):(o=e.length-1,l.content=e,l.config=a,l.tags=r),t.previewCache.data=l,o},set:function(e,a,r,n){var o,l,s=t.previewCache.data;if(e&&e.length&&(i.isArray(e)||(e=e.split(t.initialPreviewDelimiter)),l=e.filter(function(e){return null!==e}),l.length)){if(void 0===s.content&&(s.content=[]),void 0===s.config&&(s.config=[]),void 0===s.tags&&(s.tags=[]),n){for(o=0;o<e.length;o++)e[o]&&s.content.push(e[o]);for(o=0;o<a.length;o++)a[o]&&s.config.push(a[o]);for(o=0;o<r.length;o++)r[o]&&s.tags.push(r[o])}else s.content=e,s.config=a,s.tags=r;t.previewCache.data=s}},unset:function(e){var i=t.previewCache.count();if(i){if(1===i)return t.previewCache.data.content=[],t.previewCache.data.config=[],t.previewCache.data.tags=[],t.initialPreview=[],t.initialPreviewConfig=[],void(t.initialPreviewThumbTags=[]);t.previewCache.data.content[e]=null,t.previewCache.data.config[e]=null,t.previewCache.data.tags[e]=null}},out:function(){var e,i,a="",r=t.previewCache.count(!0);if(0===r)return{content:"",caption:""};for(i=0;r>i;i++)a+=t.previewCache.get(i);return e=t._getMsgSelected(t.previewCache.count()),{content:a,caption:e}},footer:function(e,a,r){var n=t.previewCache.data;if(!n||!n.config||0===n.config.length||i.isEmpty(n.config[e]))return"";a=void 0===a?!0:a;var o=n.config[e],l=i.ifSet("caption",o),s="",d=i.ifSet("width",o,"auto"),c=i.ifSet("url",o,!1),p=i.ifSet("key",o,null),u=t.fileActionSettings,f=i.ifSet("showDelete",o,!0),m=i.ifSet("showZoom",o,u.showZoom),g=i.ifSet("showDrag",o,u.showDrag),v=c===!1&&a;return t.initialPreviewShowDelete&&(s=t._renderFileActions(!1,f,m,g,v,c,p,!0)),t._getLayoutTemplate("footer").replace(/\{progress}/g,t._renderThumbProgress()).replace(/\{actions}/g,s).replace(/\{caption}/g,l).replace(/\{size}/g,t._getSize(r)).replace(/\{width}/g,d).replace(/\{indicator}/g,"").replace(/\{indicatorTitle}/g,"")}},t.previewCache.init()},_handler:function(e,i,t){var a=this,r=a.namespace,n=i.split(" ").join(r+" ")+r;e&&e.length&&e.off(n).on(n,t)},_log:function(e){var i=this,t=i.$element.attr("id");t&&(e='"'+t+'": '+e),"undefined"!=typeof window.console.log?window.console.log(e):window.alert(e)},_validate:function(){var e=this,i="file"===e.$element.attr("type");return i||e._log('The input "type" must be set to "file" for initializing the "bootstrap-fileinput" plugin.'),i},_errorsExist:function(){var i,t=this;return t.$errorContainer.find("li").length?!0:(i=e(document.createElement("div")).html(t.$errorContainer.html()),i.find("span.kv-error-close").remove(),i.find("ul").remove(),!!e.trim(i.text()).length)},_errorHandler:function(e,i){var t=this,a=e.target.error;a.code===a.NOT_FOUND_ERR?t._showError(t.msgFileNotFound.replace("{name}",i)):a.code===a.SECURITY_ERR?t._showError(t.msgFileSecured.replace("{name}",i)):a.code===a.NOT_READABLE_ERR?t._showError(t.msgFileNotReadable.replace("{name}",i)):a.code===a.ABORT_ERR?t._showError(t.msgFilePreviewAborted.replace("{name}",i)):t._showError(t.msgFilePreviewError.replace("{name}",i))},_addError:function(e){var i=this,t=i.$errorContainer;e&&t.length&&(t.html(i.errorCloseButton+e),i._handler(t.find(".kv-error-close"),"click",function(){t.fadeOut("slow")}))},_resetErrors:function(e){var i=this,t=i.$errorContainer;i.isError=!1,i.$container.removeClass("has-error"),t.html(""),e?t.fadeOut("slow"):t.hide()},_showFolderError:function(e){var t,a=this,r=a.$errorContainer;e&&(t=a.msgFoldersNotAllowed.replace(/\{n}/g,e),a._addError(t),i.addCss(a.$container,"has-error"),r.fadeIn(800),a._raise("filefoldererror",[e,t]))},_showUploadError:function(e,t,a){var r=this,n=r.$errorContainer,o=a||"fileuploaderror",l=t&&t.id?'<li data-file-id="'+t.id+'">'+e+"</li>":"<li>"+e+"</li>";return 0===n.find("ul").length?r._addError("<ul>"+l+"</ul>"):n.find("ul").append(l),n.fadeIn(800),r._raise(o,[t,e]),r.$container.removeClass("file-input-new"),i.addCss(r.$container,"has-error"),!0},_showError:function(e,t,a){var r=this,n=r.$errorContainer,o=a||"fileerror";return t=t||{},t.reader=r.reader,r._addError(e),n.fadeIn(800),r._raise(o,[t,e]),r.isUploadable||r._clearFileInput(),r.$container.removeClass("file-input-new"),i.addCss(r.$container,"has-error"),r.$btnUpload.attr("disabled",!0),!0},_noFilesError:function(e){var t=this,a=t.minFileCount>1?t.filePlural:t.fileSingle,r=t.msgFilesTooLess.replace("{n}",t.minFileCount).replace("{files}",a),n=t.$errorContainer;t._addError(r),t.isError=!0,t._updateFileDetails(0),n.fadeIn(800),t._raise("fileerror",[e,r]),t._clearFileInput(),i.addCss(t.$container,"has-error")},_parseError:function(i,t,a,r){var n=this,o=e.trim(a+""),l="."===o.slice(-1)?"":".",s=void 0!==t.responseJSON&&void 0!==t.responseJSON.error?t.responseJSON.error:t.responseText;return n.cancelling&&n.msgUploadAborted&&(o=n.msgUploadAborted),n.showAjaxErrorDetails&&s?(s=e.trim(s.replace(/\n\s*\n/g,"\n")),s=s.length>0?"<pre>"+s+"</pre>":"",o+=l+s):o+=l,o===l&&(o=n.msgAjaxError.replace("{operation}",i)),n.cancelling=!1,r?"<b>"+r+": </b>"+o:o},_parseFileType:function(e){var t,a,r,n,o=this,l=o.allowedPreviewTypes||[];for(n=0;n<l.length;n++)if(r=l[n],t=o.fileTypeSettings[r],a=t(e.type,e.name)?r:"",!i.isEmpty(a))return a;return"other"},_getPreviewIcon:function(i){var t,a=this,r=null;return i&&i.indexOf(".")>-1&&(t=i.split(".").pop(),a.previewFileIconSettings&&a.previewFileIconSettings[t]&&(r=a.previewFileIconSettings[t]),a.previewFileExtSettings&&e.each(a.previewFileExtSettings,function(e,i){return a.previewFileIconSettings[e]&&i(t)?void(r=a.previewFileIconSettings[e]):void 0})),r},_parseFilePreviewIcon:function(e,i){var t=this,a=t._getPreviewIcon(i)||t.previewFileIcon;return e.indexOf("{previewFileIcon}")>-1&&(e=e.replace(/\{previewFileIconClass}/g,t.previewFileIconClass).replace(/\{previewFileIcon}/g,a)),e},_raise:function(i,t){var a=this,r=e.Event(i);if(void 0!==t?a.$element.trigger(r,t):a.$element.trigger(r),r.isDefaultPrevented()||r.result===!1)return!1;switch(i){case"filebatchuploadcomplete":case"filebatchuploadsuccess":case"fileuploaded":case"fileclear":case"filecleared":case"filereset":case"fileerror":case"filefoldererror":case"fileuploaderror":case"filebatchuploaderror":case"filedeleteerror":case"filecustomerror":case"filesuccessremove":break;default:a.ajaxAborted=r.result}return!0},_listenFullScreen:function(e){var i,t,a=this,r=a.$modal;r&&r.length&&(i=r&&r.find(".btn-fullscreen"),t=r&&r.find(".btn-borderless"),i.length&&t.length&&(i.removeClass("active").attr("aria-pressed","false"),t.removeClass("active").attr("aria-pressed","false"),e?i.addClass("active").attr("aria-pressed","true"):t.addClass("active").attr("aria-pressed","true"),r.hasClass("file-zoom-fullscreen")?a._maximizeZoomDialog():e?a._maximizeZoomDialog():t.removeClass("active").attr("aria-pressed","false")))},_listen:function(){var t,a=this,r=a.$element,n=a.$form,o=a.$container;a._handler(r,"change",e.proxy(a._change,a)),a.showBrowse&&a._handler(a.$btnFile,"click",e.proxy(a._browse,a)),a._handler(o.find(".fileinput-remove:not([disabled])"),"click",e.proxy(a.clear,a)),a._handler(o.find(".fileinput-cancel"),"click",e.proxy(a.cancel,a)),a._initDragDrop(),a._handler(n,"reset",e.proxy(a.reset,a)),a.isUploadable||a._handler(n,"submit",e.proxy(a._submitForm,a)),a._handler(a.$container.find(".fileinput-upload"),"click",e.proxy(a._uploadClick,a)),a._handler(e(window),"resize",function(){a._listenFullScreen(screen.width===window.innerWidth&&screen.height===window.innerHeight)}),t="webkitfullscreenchange mozfullscreenchange fullscreenchange MSFullscreenChange",a._handler(e(document),t,function(){a._listenFullScreen(i.checkFullScreen())}),a._initClickable()},_initClickable:function(){var t,a=this;a.isClickable&&(t=a.isUploadable?a.$dropZone:a.$preview.find(".file-default-preview"),i.addCss(t,"clickable"),t.attr("tabindex",-1),a._handler(t,"click",function(i){var r=e(i.target);r.parents(".file-preview-thumbnails").length&&!r.parents(".file-default-preview").length||(a.$element.trigger("click"),t.blur())}))},_initDragDrop:function(){var i=this,t=i.$dropZone;i.isUploadable&&i.dropZoneEnabled&&i.showPreview&&(i._handler(t,"dragenter dragover",e.proxy(i._zoneDragEnter,i)),i._handler(t,"dragleave",e.proxy(i._zoneDragLeave,i)),i._handler(t,"drop",e.proxy(i._zoneDrop,i)),i._handler(e(document),"dragenter dragover drop",i._zoneDragDropInit))},_zoneDragDropInit:function(e){e.stopPropagation(),e.preventDefault()},_zoneDragEnter:function(t){var a=this,r=e.inArray("Files",t.originalEvent.dataTransfer.types)>-1;return a._zoneDragDropInit(t),a.isDisabled||!r?(t.originalEvent.dataTransfer.effectAllowed="none",void(t.originalEvent.dataTransfer.dropEffect="none")):void i.addCss(a.$dropZone,"file-highlighted")},_zoneDragLeave:function(e){var i=this;i._zoneDragDropInit(e),i.isDisabled||i.$dropZone.removeClass("file-highlighted")},_zoneDrop:function(e){var t=this;e.preventDefault(),t.isDisabled||i.isEmpty(e.originalEvent.dataTransfer.files)||(t._change(e,"dragdrop"),t.$dropZone.removeClass("file-highlighted"))},_uploadClick:function(e){var t,a=this,r=a.$container.find(".fileinput-upload"),n=!r.hasClass("disabled")&&i.isEmpty(r.attr("disabled"));if(!e||!e.isDefaultPrevented()){if(!a.isUploadable)return void(n&&"submit"!==r.attr("type")&&(t=r.closest("form"),t.length&&t.trigger("submit"),e.preventDefault()));e.preventDefault(),n&&a.upload()}},_submitForm:function(){var e=this,i=e.$element,t=i.get(0).files;return t&&e.minFileCount>0&&e._getFileCount(t.length)<e.minFileCount?(e._noFilesError({}),!1):!e._abort({})},_clearPreview:function(){var t=this,a=t.$preview,r=t.showUploadedThumbs?a.find(i.FRAMES+":not(.file-preview-success)"):a.find(i.FRAMES);r.each(function(){var t=e(this);t.remove(),i.cleanZoomCache(a.find("#zoom-"+t.attr("id")))}),t.$preview.find(i.FRAMES).length&&t.showPreview||t._resetUpload(),t._validateDefaultPreview()},_initSortable:function(){var t,a=this,r=a.$preview,n="."+i.SORT_CSS;window.KvSortable&&0!==r.find(n).length&&(t={handle:".drag-handle-init",dataIdAttr:"data-preview-id",draggable:n,onSort:function(t){var r,n,o=t.oldIndex,l=t.newIndex;a.initialPreview=i.moveArray(a.initialPreview,o,l),a.initialPreviewConfig=i.moveArray(a.initialPreviewConfig,o,l),a.previewCache.init();for(var s=0;s<a.initialPreviewConfig.length;s++)null!==a.initialPreviewConfig[s]&&(r=a.initialPreviewConfig[s].key,n=e(".kv-file-remove[data-key='"+r+"']").closest(i.FRAMES),n.attr("data-fileindex","init_"+s).data("fileindex","init_"+s));a._raise("filesorted",{previewId:e(t.item).attr("id"),oldIndex:o,newIndex:l,stack:a.initialPreviewConfig})}},r.data("kvsortable")&&r.kvsortable("destroy"),e.extend(!0,t,a.fileActionSettings.dragSettings),r.kvsortable(t))},_initPreview:function(e){var t,a=this,r=a.initialCaption||"";return a.previewCache.count()?(t=a.previewCache.out(),r=e&&a.initialCaption?a.initialCaption:t.caption,a.$preview.html(t.content),a._setInitThumbAttr(),a._setCaption(r),a._initSortable(),void(i.isEmpty(t.content)||a.$container.removeClass("file-input-new"))):(a._clearPreview(),void(e?a._setCaption(r):a._initCaption()))},_getZoomButton:function(e){var i=this,t=i.previewZoomButtonIcons[e],a=i.previewZoomButtonClasses[e],r=' title="'+(i.previewZoomButtonTitles[e]||"")+'" ',n=r+("close"===e?' data-dismiss="modal" aria-hidden="true"':"");return"fullscreen"!==e&&"borderless"!==e&&"toggleheader"!==e||(n+=' data-toggle="button" aria-pressed="false" autocomplete="off"'),'<button type="button" class="'+a+" btn-"+e+'"'+n+">"+t+"</button>"},_getModalContent:function(){var e=this;return e._getLayoutTemplate("modal").replace(/\{zoomFrameClass}/g,e.frameClass).replace(/\{heading}/g,e.msgZoomModalHeading).replace(/\{prev}/g,e._getZoomButton("prev")).replace(/\{next}/g,e._getZoomButton("next")).replace(/\{toggleheader}/g,e._getZoomButton("toggleheader")).replace(/\{fullscreen}/g,e._getZoomButton("fullscreen")).replace(/\{borderless}/g,e._getZoomButton("borderless")).replace(/\{close}/g,e._getZoomButton("close"))},_listenModalEvent:function(e){var t=this,a=t.$modal,r=function(e){return{sourceEvent:e,previewId:a.data("previewId"),modal:a}};a.on(e+".bs.modal",function(n){var o=a.find(".btn-fullscreen"),l=a.find(".btn-borderless");t._raise("filezoom"+e,r(n)),"shown"===e&&(l.removeClass("active").attr("aria-pressed","false"),o.removeClass("active").attr("aria-pressed","false"),a.hasClass("file-zoom-fullscreen")&&(t._maximizeZoomDialog(),i.checkFullScreen()?o.addClass("active").attr("aria-pressed","true"):l.addClass("active").attr("aria-pressed","true")))})},_initZoom:function(){var t,a=this,r=a._getLayoutTemplate("modalMain"),n="#"+i.MODAL_ID;a.showPreview&&(a.$modal=e(n),a.$modal&&a.$modal.length||(t=e(document.createElement("div")).html(r).insertAfter(a.$container),a.$modal=e(n).insertBefore(t),t.remove()),i.initModal(a.$modal),a.$modal.html(a._getModalContent()),e.each(i.MODAL_EVENTS,function(e,i){a._listenModalEvent(i)}))},_initZoomButtons:function(){var t,a,r=this,n=r.$modal.data("previewId")||"",o=r.$preview,l=o.find(i.FRAMES).toArray(),s=l.length,d=r.$modal.find(".btn-prev"),c=r.$modal.find(".btn-next");return l.length<2?(d.hide(),void c.hide()):(d.show(),c.show(),void(s&&(t=e(l[0]),a=e(l[s-1]),d.removeAttr("disabled"),c.removeAttr("disabled"),t.length&&t.attr("id")===n&&d.attr("disabled",!0),a.length&&a.attr("id")===n&&c.attr("disabled",!0))))},_maximizeZoomDialog:function(){var i=this,t=i.$modal,a=t.find(".modal-header:visible"),r=t.find(".modal-footer:visible"),n=t.find(".modal-body"),o=e(window).height(),l=0;t.addClass("file-zoom-fullscreen"),a&&a.length&&(o-=a.outerHeight(!0)),r&&r.length&&(o-=r.outerHeight(!0)),n&&n.length&&(l=n.outerHeight(!0)-n.height(),o-=l),t.find(".kv-zoom-body").height(o)},_resizeZoomDialog:function(e){var t=this,a=t.$modal,r=a.find(".btn-fullscreen"),n=a.find(".btn-borderless");if(a.hasClass("file-zoom-fullscreen"))i.toggleFullScreen(!1),e?r.hasClass("active")||(a.removeClass("file-zoom-fullscreen"),t._resizeZoomDialog(!0),n.hasClass("active")&&n.removeClass("active").attr("aria-pressed","false")):r.hasClass("active")?r.removeClass("active").attr("aria-pressed","false"):(a.removeClass("file-zoom-fullscreen"),t.$modal.find(".kv-zoom-body").css("height",t.zoomModalHeight));else{if(!e)return void t._maximizeZoomDialog();i.toggleFullScreen(!0)}a.focus()},_setZoomContent:function(t,a){var r,n,o,l,s,d,c,p,u,f,m=this,g=t.attr("id"),v=m.$modal,h=v.find(".btn-prev"),w=v.find(".btn-next"),_=v.find(".btn-fullscreen"),b=v.find(".btn-borderless"),C=v.find(".btn-toggleheader"),y=m.$preview.find("#zoom-"+g);n=y.attr("data-template")||"generic",r=y.find(".kv-file-content"),o=r.length?r.html():"",u=t.data("caption")||"",f=t.data("size")||"",l=u+" "+f,v.find(".kv-zoom-title").html(l),s=v.find(".kv-zoom-body"),v.removeClass("kv-single-content"),a?(p=s.addClass("file-thumb-loading").clone().insertAfter(s),s.html(o).hide(),p.fadeOut("fast",function(){s.fadeIn("fast",function(){s.removeClass("file-thumb-loading")}),p.remove()})):s.html(o),c=m.previewZoomSettings[n],c&&(d=s.find(".kv-preview-data"),i.addCss(d,"file-zoom-detail"),e.each(c,function(e,i){d.css(e,i),(d.attr("width")&&"width"===e||d.attr("height")&&"height"===e)&&d.removeAttr(e)})),v.data("previewId",g),m._handler(h,"click",function(){m._zoomSlideShow("prev",g)}),m._handler(w,"click",function(){m._zoomSlideShow("next",g); -}),m._handler(_,"click",function(){m._resizeZoomDialog(!0)}),m._handler(b,"click",function(){m._resizeZoomDialog(!1)}),m._handler(C,"click",function(){var e,i=v.find(".modal-header"),t=v.find(".modal-body .floating-buttons"),a=i.find(".kv-zoom-actions"),r=function(e){var t=m.$modal.find(".kv-zoom-body"),a=m.zoomModalHeight;v.hasClass("file-zoom-fullscreen")&&(a=t.outerHeight(!0),e||(a-=i.outerHeight(!0))),t.css("height",e?a+e:a)};i.is(":visible")?(e=i.outerHeight(!0),i.slideUp("slow",function(){a.find(".btn").appendTo(t),r(e)})):(t.find(".btn").appendTo(a),i.slideDown("slow",function(){r()})),v.focus()}),m._handler(v,"keydown",function(e){var i=e.which||e.keyCode;37!==i||h.attr("disabled")||m._zoomSlideShow("prev",g),39!==i||w.attr("disabled")||m._zoomSlideShow("next",g)})},_zoomPreview:function(e){var t,a=this,r=a.$modal;if(!e.length)throw"Cannot zoom to detailed preview!";i.initModal(r),r.html(a._getModalContent()),t=e.closest(i.FRAMES),a._setZoomContent(t),r.modal("show"),a._initZoomButtons()},_zoomSlideShow:function(t,a){var r,n,o,l=this,s=l.$modal.find(".kv-zoom-actions .btn-"+t),d=l.$preview.find(i.FRAMES).toArray(),c=d.length;if(!s.attr("disabled")){for(n=0;c>n;n++)if(e(d[n]).attr("id")===a){o="prev"===t?n-1:n+1;break}0>o||o>=c||!d[o]||(r=e(d[o]),r.length&&l._setZoomContent(r,!0),l._initZoomButtons(),l._raise("filezoom"+t,{previewId:a,modal:l.$modal}))}},_initZoomButton:function(){var i=this;i.$preview.find(".kv-file-zoom").each(function(){var t=e(this);i._handler(t,"click",function(){i._zoomPreview(t)})})},_clearObjects:function(i){i.find("video audio").each(function(){this.pause(),e(this).remove()}),i.find("img object div").each(function(){e(this).remove()})},_clearFileInput:function(){var t,a,r,n=this,o=n.$element;n.fileInputCleared=!0,i.isEmpty(o.val())||(n.isIE9||n.isIE10?(t=o.closest("form"),a=e(document.createElement("form")),r=e(document.createElement("div")),o.before(r),t.length?t.after(a):r.after(a),a.append(o).trigger("reset"),r.before(o).remove(),a.remove()):o.val(""))},_resetUpload:function(){var e=this;e.uploadCache={content:[],config:[],tags:[],append:!0},e.uploadCount=0,e.uploadStatus={},e.uploadLog=[],e.uploadAsyncCount=0,e.loadedImages=[],e.totalImagesCount=0,e.$btnUpload.removeAttr("disabled"),e._setProgress(0),i.addCss(e.$progress,"hide"),e._resetErrors(!1),e.ajaxAborted=!1,e.ajaxRequests=[],e._resetCanvas(),e.cacheInitialPreview={},e.overwriteInitial&&(e.initialPreview=[],e.initialPreviewConfig=[],e.initialPreviewThumbTags=[],e.previewCache.data={content:[],config:[],tags:[]})},_resetCanvas:function(){var e=this;e.canvas&&e.imageCanvasContext&&e.imageCanvasContext.clearRect(0,0,e.canvas.width,e.canvas.height)},_hasInitialPreview:function(){var e=this;return!e.overwriteInitial&&e.previewCache.count()},_resetPreview:function(){var e,i,t=this;t.previewCache.count()?(e=t.previewCache.out(),t.$preview.html(e.content),t._setInitThumbAttr(),i=t.initialCaption?t.initialCaption:e.caption,t._setCaption(i)):(t._clearPreview(),t._initCaption()),t.showPreview&&(t._initZoom(),t._initSortable())},_clearDefaultPreview:function(){var e=this;e.$preview.find(".file-default-preview").remove()},_validateDefaultPreview:function(){var e=this;e.showPreview&&!i.isEmpty(e.defaultPreviewContent)&&(e.$preview.html('<div class="file-default-preview">'+e.defaultPreviewContent+"</div>"),e.$container.removeClass("file-input-new"),e._initClickable())},_resetPreviewThumbs:function(e){var i,t=this;return e?(t._clearPreview(),void t.clearStack()):void(t._hasInitialPreview()?(i=t.previewCache.out(),t.$preview.html(i.content),t._setInitThumbAttr(),t._setCaption(i.caption),t._initPreviewActions()):t._clearPreview())},_getLayoutTemplate:function(e){var t=this,a=t.layoutTemplates[e];return i.isEmpty(t.customLayoutTags)?a:i.replaceTags(a,t.customLayoutTags)},_getPreviewTemplate:function(e){var t=this,a=t.previewTemplates[e];return i.isEmpty(t.customPreviewTags)?a:i.replaceTags(a,t.customPreviewTags)},_getOutData:function(e,i,t){var a=this;return e=e||{},i=i||{},t=t||a.filestack.slice(0)||{},{form:a.formdata,files:t,filenames:a.filenames,filescount:a.getFilesCount(),extra:a._getExtraData(),response:i,reader:a.reader,jqXHR:e}},_getMsgSelected:function(e){var i=this,t=1===e?i.fileSingle:i.filePlural;return e>0?i.msgSelected.replace("{n}",e).replace("{files}",t):i.msgNoFilesSelected},_getThumbs:function(e){return e=e||"",this.$preview.find(i.FRAMES+":not(.file-preview-initial)"+e)},_getExtraData:function(e,i){var t=this,a=t.uploadExtraData;return"function"==typeof t.uploadExtraData&&(a=t.uploadExtraData(e,i)),a},_initXhr:function(e,i,t){var a=this;return e.upload&&e.upload.addEventListener("progress",function(e){var r=0,n=e.total,o=e.loaded||e.position;e.lengthComputable&&(r=Math.floor(o/n*100)),i?a._setAsyncUploadStatus(i,r,t):a._setProgress(r)},!1),e},_ajaxSubmit:function(i,t,a,r,n,o){var l,s=this;s._raise("filepreajax",[n,o])&&(s._uploadExtra(n,o),l=e.extend(!0,{},{xhr:function(){var i=e.ajaxSettings.xhr();return s._initXhr(i,n,s.getFileStack().length)},url:s.uploadUrl,type:"POST",dataType:"json",data:s.formdata,cache:!1,processData:!1,contentType:!1,beforeSend:i,success:t,complete:a,error:r},s.ajaxSettings),s.ajaxRequests.push(e.ajax(l)))},_mergeArray:function(e,t){var a=this,r=i.cleanArray(a[e]),n=i.cleanArray(t);a[e]=r.concat(n)},_initUploadSuccess:function(t,a,r){var n,o,l,s,d,c,p,u,f,m=this;m.showPreview&&"object"==typeof t&&!e.isEmptyObject(t)&&void 0!==t.initialPreview&&t.initialPreview.length>0&&(m.hasInitData=!0,c=t.initialPreview||[],p=t.initialPreviewConfig||[],u=t.initialPreviewThumbTags||[],n=!(void 0!==t.append&&!t.append),c.length>0&&!i.isArray(c)&&(c=c.split(m.initialPreviewDelimiter)),m._mergeArray("initialPreview",c),m._mergeArray("initialPreviewConfig",p),m._mergeArray("initialPreviewThumbTags",u),void 0!==a?r?(f=a.attr("data-fileindex"),m.uploadCache.content[f]=c[0],m.uploadCache.config[f]=p[0]||[],m.uploadCache.tags[f]=u[0]||[],m.uploadCache.append=n):(l=m.previewCache.add(c,p[0],u[0],n),o=m.previewCache.get(l,!1),s=e(document.createElement("div")).html(o).hide().insertAfter(a),d=s.find(".kv-zoom-cache"),d&&d.length&&d.insertAfter(a),a.fadeOut("slow",function(){var e=s.find(".file-preview-frame");e&&e.length&&e.insertBefore(a).fadeIn("slow").css("display:inline-block"),m._initPreviewActions(),m._clearFileInput(),i.cleanZoomCache(m.$preview.find("#zoom-"+a.attr("id"))),a.remove(),s.remove(),m._initSortable()})):(m.previewCache.set(c,p,u,n),m._initPreview(),m._initPreviewActions()))},_initSuccessThumbs:function(){var t=this;t.showPreview&&t._getThumbs(i.FRAMES+".file-preview-success").each(function(){var a=e(this),r=t.$preview,n=a.find(".kv-file-remove");n.removeAttr("disabled"),t._handler(n,"click",function(){var e=a.attr("id"),n=t._raise("filesuccessremove",[e,a.data("fileindex")]);i.cleanMemory(a),n!==!1&&a.fadeOut("slow",function(){i.cleanZoomCache(r.find("#zoom-"+e)),a.remove(),r.find(i.FRAMES).length||t.reset()})})})},_checkAsyncComplete:function(){var i,t,a=this;for(t=0;t<a.filestack.length;t++)if(a.filestack[t]&&(i=a.previewInitId+"-"+t,-1===e.inArray(i,a.uploadLog)))return!1;return a.uploadAsyncCount===a.uploadLog.length},_uploadExtra:function(i,t){var a=this,r=a._getExtraData(i,t);0!==r.length&&e.each(r,function(e,i){a.formdata.append(e,i)})},_uploadSingle:function(t,a,r){var n,o,l,s,d,c,p,u,f,m,g=this,v=g.getFileStack().length,h=new FormData,w=g.previewInitId+"-"+t,_=g.filestack.length>0||!e.isEmptyObject(g.uploadExtraData),b=e("#"+w).find(".file-thumb-progress"),C={id:w,index:t};g.formdata=h,g.showPreview&&(o=e("#"+w+":not(.file-preview-initial)"),s=o.find(".kv-file-upload"),d=o.find(".kv-file-remove"),b.removeClass("hide")),0===v||!_||s&&s.hasClass("disabled")||g._abort(C)||(m=function(e,i){g.updateStack(e,void 0),g.uploadLog.push(i),g._checkAsyncComplete()&&(g.fileBatchCompleted=!0)},l=function(){var e,t,a,r=g.uploadCache,n=0,o=g.cacheInitialPreview;g.fileBatchCompleted&&(o&&o.content&&(n=o.content.length),setTimeout(function(){if(g.showPreview){if(g.previewCache.set(r.content,r.config,r.tags,r.append),n){for(t=0;t<r.content.length;t++)a=t+n,o.content[a]=r.content[t],o.config.length&&(o.config[a]=r.config[t]),o.tags.length&&(o.tags[a]=r.tags[t]);g.initialPreview=i.cleanArray(o.content),g.initialPreviewConfig=i.cleanArray(o.config),g.initialPreviewThumbTags=i.cleanArray(o.tags)}else g.initialPreview=r.content,g.initialPreviewConfig=r.config,g.initialPreviewThumbTags=r.tags;g.cacheInitialPreview={},g.hasInitData&&(g._initPreview(),g._initPreviewActions())}g.unlock(),g._clearFileInput(),e=g.$preview.find(".file-preview-initial"),g.uploadAsync&&e.length&&(i.addCss(e,i.SORT_CSS),g._initSortable()),g._raise("filebatchuploadcomplete",[g.filestack,g._getExtraData()]),g.uploadCount=0,g.uploadStatus={},g.uploadLog=[],g._setProgress(101)},100))},c=function(a){n=g._getOutData(a),g.fileBatchCompleted=!1,g.showPreview&&(o.hasClass("file-preview-success")||(g._setThumbStatus(o,"Loading"),i.addCss(o,"file-uploading")),s.attr("disabled",!0),d.attr("disabled",!0)),r||g.lock(),g._raise("filepreupload",[n,w,t]),e.extend(!0,C,n),g._abort(C)&&(a.abort(),g._setProgressCancelled())},p=function(a,l,d){var c=g.showPreview&&o.attr("id")?o.attr("id"):w;n=g._getOutData(d,a),e.extend(!0,C,n),setTimeout(function(){i.isEmpty(a)||i.isEmpty(a.error)?(g.showPreview&&(g._setThumbStatus(o,"Success"),s.hide(),g._initUploadSuccess(a,o,r),g._setProgress(101,b)),g._raise("fileuploaded",[n,c,t]),r?m(t,c):g.updateStack(t,void 0)):(g._showUploadError(a.error,C),g._setPreviewError(o,t),r&&m(t,c))},100)},u=function(){setTimeout(function(){g.showPreview&&(s.removeAttr("disabled"),d.removeAttr("disabled"),o.removeClass("file-uploading")),r?l():(g.unlock(!1),g._clearFileInput()),g._initSuccessThumbs()},100)},f=function(i,n,l){var s=g.ajaxOperations.uploadThumb,d=g._parseError(s,i,l,r?a[t].name:null);setTimeout(function(){r&&m(t,w),g.uploadStatus[w]=100,g._setPreviewError(o,t),e.extend(!0,C,g._getOutData(i)),g._setProgress(101,b,g.msgAjaxProgressError.replace("{operation}",s)),g._showUploadError(d,C)},100)},h.append(g.uploadFileAttr,a[t],g.filenames[t]),h.append("file_id",t),g._ajaxSubmit(c,p,u,f,w,t))},_uploadBatch:function(){var t,a,r,n,o,l=this,s=l.filestack,d=s.length,c={},p=l.filestack.length>0||!e.isEmptyObject(l.uploadExtraData);l.formdata=new FormData,0!==d&&p&&!l._abort(c)&&(o=function(){e.each(s,function(e){l.updateStack(e,void 0)}),l._clearFileInput()},t=function(t){l.lock();var a=l._getOutData(t);l.showPreview&&l._getThumbs().each(function(){var t=e(this),a=t.find(".kv-file-upload"),r=t.find(".kv-file-remove");t.hasClass("file-preview-success")||(l._setThumbStatus(t,"Loading"),i.addCss(t,"file-uploading")),a.attr("disabled",!0),r.attr("disabled",!0)}),l._raise("filebatchpreupload",[a]),l._abort(a)&&(t.abort(),l._setProgressCancelled())},a=function(t,a,r){var n=l._getOutData(r,t),s=l._getThumbs(":not(.file-preview-error)"),d=0,c=i.isEmpty(t)||i.isEmpty(t.errorkeys)?[]:t.errorkeys;i.isEmpty(t)||i.isEmpty(t.error)?(l._raise("filebatchuploadsuccess",[n]),o(),l.showPreview?(s.each(function(){var i=e(this),t=i.find(".kv-file-upload");i.find(".kv-file-upload").hide(),l._setThumbStatus(i,"Success"),i.removeClass("file-uploading"),t.removeAttr("disabled")}),l._initUploadSuccess(t)):l.reset(),l._setProgress(101)):(l.showPreview&&(s.each(function(){var i=e(this),t=i.find(".kv-file-remove"),a=i.find(".kv-file-upload");return i.removeClass("file-uploading"),a.removeAttr("disabled"),t.removeAttr("disabled"),0===c.length?void l._setPreviewError(i):(-1!==e.inArray(d,c)?l._setPreviewError(i):(i.find(".kv-file-upload").hide(),l._setThumbStatus(i,"Success"),l.updateStack(d,void 0)),void d++)}),l._initUploadSuccess(t)),l._showUploadError(t.error,n,"filebatchuploaderror"))},n=function(){l.unlock(),l._initSuccessThumbs(),l._clearFileInput(),l._raise("filebatchuploadcomplete",[l.filestack,l._getExtraData()])},r=function(i,t,a){var r=l._getOutData(i),n=l.ajaxOperations.uploadBatch,o=l._parseError(n,i,a);l._showUploadError(o,r,"filebatchuploaderror"),l.uploadFileCount=d-1,l.showPreview&&(l._getThumbs().each(function(){var i=e(this),t=i.attr("data-fileindex");i.removeClass("file-uploading"),void 0!==l.filestack[t]&&l._setPreviewError(i)}),l._getThumbs().removeClass("file-uploading"),l._getThumbs(" .kv-file-upload").removeAttr("disabled"),l._getThumbs(" .kv-file-delete").removeAttr("disabled"),l._setProgress(101,l.$progress,l.msgAjaxProgressError.replace("{operation}",n)))},e.each(s,function(e,t){i.isEmpty(s[e])||l.formdata.append(l.uploadFileAttr,t,l.filenames[e])}),l._ajaxSubmit(t,a,n,r))},_uploadExtraOnly:function(){var e,t,a,r,n=this,o={};n.formdata=new FormData,n._abort(o)||(e=function(e){n.lock();var i=n._getOutData(e);n._raise("filebatchpreupload",[i]),n._setProgress(50),o.data=i,o.xhr=e,n._abort(o)&&(e.abort(),n._setProgressCancelled())},t=function(e,t,a){var r=n._getOutData(a,e);i.isEmpty(e)||i.isEmpty(e.error)?(n._raise("filebatchuploadsuccess",[r]),n._clearFileInput(),n._initUploadSuccess(e),n._setProgress(101)):n._showUploadError(e.error,r,"filebatchuploaderror")},a=function(){n.unlock(),n._clearFileInput(),n._raise("filebatchuploadcomplete",[n.filestack,n._getExtraData()])},r=function(e,i,t){var a=n._getOutData(e),r=n.ajaxOperations.uploadExtra,l=n._parseError(r,e,t);o.data=a,n._showUploadError(l,a,"filebatchuploaderror"),n._setProgress(101,n.$progress,n.msgAjaxProgressError.replace("{operation}",r))},n._ajaxSubmit(e,t,a,r))},_deleteFileIndex:function(t){var a=this,r=t.attr("data-fileindex");"init_"===r.substring(0,5)&&(r=parseInt(r.replace("init_","")),a.initialPreview=i.spliceArray(a.initialPreview,r),a.initialPreviewConfig=i.spliceArray(a.initialPreviewConfig,r),a.initialPreviewThumbTags=i.spliceArray(a.initialPreviewThumbTags,r),a.$preview.find(i.FRAMES).each(function(){var i=e(this),t=i.attr("data-fileindex");"init_"===t.substring(0,5)&&(t=parseInt(t.replace("init_","")),t>r&&(t--,i.attr("data-fileindex","init_"+t)))}),a.uploadAsync&&(a.cacheInitialPreview=a.getPreview()))},_initFileActions:function(){var t=this,a=t.$preview;t.showPreview&&(t._initZoomButton(),a.find(i.FRAMES+" .kv-file-remove").each(function(){var r,n,o,l,s=e(this),d=s.closest(i.FRAMES),c=d.attr("id"),p=d.attr("data-fileindex");t._handler(s,"click",function(){return l=t._raise("filepreremove",[c,p]),l!==!1&&t._validateMinCount()?(r=d.hasClass("file-preview-error"),i.cleanMemory(d),void d.fadeOut("slow",function(){i.cleanZoomCache(a.find("#zoom-"+c)),t.updateStack(p,void 0),t._clearObjects(d),d.remove(),c&&r&&t.$errorContainer.find('li[data-file-id="'+c+'"]').fadeOut("fast",function(){e(this).remove(),t._errorsExist()||t._resetErrors()}),t._clearFileInput();var l=t.getFileStack(!0),s=t.previewCache.count(),u=l.length,f=t.showPreview&&a.find(i.FRAMES).length;0!==u||0!==s||f?(n=s+u,o=n>1?t._getMsgSelected(n):l[0]?t._getFileNames()[0]:"",t._setCaption(o)):t.reset(),t._raise("fileremoved",[c,p])})):!1})}),t.$preview.find(i.FRAMES+" .kv-file-upload").each(function(){var a=e(this);t._handler(a,"click",function(){var e=a.closest(i.FRAMES),r=e.attr("data-fileindex");e.hasClass("file-preview-error")||t._uploadSingle(r,t.filestack,!1)})}))},_initPreviewActions:function(){var t=this,a=t.$preview,r=t.deleteExtraData||{},n=i.FRAMES+" .kv-file-remove",o=function(){var e=t.isUploadable?t.previewCache.count():t.$element.get(0).files.length;0!==a.find(n).length||e||(t.reset(),t.initialCaption="")};t._initZoomButton(),a.find(n).each(function(){var n=e(this),l=n.data("url")||t.deleteUrl,s=n.data("key");if(!i.isEmpty(l)&&void 0!==s){var d,c,p,u,f=n.closest(i.FRAMES),m=t.previewCache.data,g=f.data("fileindex");g=parseInt(g.replace("init_","")),p=i.isEmpty(m.config)&&i.isEmpty(m.config[g])?null:m.config[g],u=i.isEmpty(p)||i.isEmpty(p.extra)?r:p.extra,"function"==typeof u&&(u=u()),c={id:n.attr("id"),key:s,extra:u},d=e.extend(!0,{},{url:l,type:"POST",dataType:"json",data:e.extend(!0,{},{key:s},u),beforeSend:function(e){t.ajaxAborted=!1,t._raise("filepredelete",[s,e,u]),t.ajaxAborted?e.abort():(i.addCss(f,"file-uploading"),i.addCss(n,"disabled"))},success:function(e,r,l){var d,p;return i.isEmpty(e)||i.isEmpty(e.error)?(t.previewCache.init(),g=parseInt(f.data("fileindex").replace("init_","")),t.previewCache.unset(g),d=t.previewCache.count(),p=d>0?t._getMsgSelected(d):"",t._deleteFileIndex(f),t._setCaption(p),t._raise("filedeleted",[s,l,u]),f.removeClass("file-uploading").addClass("file-deleted"),void f.fadeOut("slow",function(){i.cleanZoomCache(a.find("#zoom-"+f.attr("id"))),t._clearObjects(f),f.remove(),o(),d||0!==t.getFileStack().length||(t._setCaption(""),t.reset())})):(c.jqXHR=l,c.response=e,t._showError(e.error,c,"filedeleteerror"),f.removeClass("file-uploading"),n.removeClass("disabled"),void o())},error:function(e,i,a){var r=t.ajaxOperations.deleteThumb,n=t._parseError(r,e,a);c.jqXHR=e,c.response={},t._showError(n,c,"filedeleteerror"),f.removeClass("file-uploading"),o()}},t.ajaxDeleteSettings),t._handler(n,"click",function(){return t._validateMinCount()?void e.ajax(d):!1})}})},_hideFileIcon:function(){this.overwriteInitial&&this.$captionContainer.find(".kv-caption-icon").hide()},_showFileIcon:function(){this.$captionContainer.find(".kv-caption-icon").show()},_getSize:function(i){var t,a,r,n=this,o=parseFloat(i),l=n.fileSizeGetter;return e.isNumeric(i)&&e.isNumeric(o)?("function"==typeof l?r=l(o):0===o?r="0.00 B":(t=Math.floor(Math.log(o)/Math.log(1024)),a=["B","KB","MB","GB","TB","PB","EB","ZB","YB"],r=1*(o/Math.pow(1024,t)).toFixed(2)+" "+a[t]),n._getLayoutTemplate("size").replace("{sizeText}",r)):""},_generatePreviewTemplate:function(t,a,r,n,o,l,s,d,c,p,u){var f,m=this,g=m.slug(r),v="",h=m.previewSettings[t]||m.defaults.previewSettings[t],w=h&&h.width?h.width:"",_=h&&h.height?h.height:"",b=c||m._renderFileFooter(g,s,i.isEmpty(w)?"auto":w,l),C=m._getPreviewIcon(r),y="type-default",E=C&&m.preferIconicPreview,x=C&&m.preferIconicZoomPreview,T=function(a,l,s,c){var f=s?"zoom-"+o:o,v=m._getPreviewTemplate(a),h=(d||"")+" "+c;return m.frameClass&&(h=m.frameClass+" "+h),s&&(h=h.replace(" "+i.SORT_CSS,"")),v=m._parseFilePreviewIcon(v,r),"text"===a&&(l=i.htmlEncode(l)),"object"!==t||n||e.each(m.defaults.fileTypeSettings,function(e,i){"object"!==e&&"other"!==e&&i(r,n)&&(y="type-"+e)}),v.replace(/\{previewId}/g,f).replace(/\{caption}/g,g).replace(/\{frameClass}/g,h).replace(/\{type}/g,n).replace(/\{fileindex}/g,p).replace(/\{width}/g,w).replace(/\{height}/g,_).replace(/\{typeCss}/g,y).replace(/\{footer}/g,b).replace(/\{data}/g,l).replace(/\{template}/g,u||t)};return p=p||o.slice(o.lastIndexOf("-")+1),m.fileActionSettings.showZoom&&(v=T(x?"other":t,a,!0,"kv-zoom-thumb")),v="\n"+m._getLayoutTemplate("zoomCache").replace("{zoomContent}",v),f=T(E?"other":t,a,!1,"kv-preview-thumb"),f+v},_previewDefault:function(t,a,r){var n=this,o=n.$preview;if(n.showPreview){var l,s=t?t.name:"",d=t?t.type:"",c=t.size||0,p=n.slug(s),u=r===!0&&!n.isUploadable,f=i.objUrl.createObjectURL(t);n._clearDefaultPreview(),l=n._generatePreviewTemplate("other",f,s,d,a,u,c),o.append("\n"+l),n._setThumbAttr(a,p,c),r===!0&&n.isUploadable&&n._setThumbStatus(e("#"+a),"Error")}},_previewFile:function(e,i,t,a,r){if(this.showPreview){var n,o=this,l=o._parseFileType(i),s=i?i.name:"",d=o.slug(s),c=o.allowedPreviewTypes,p=o.allowedPreviewMimeTypes,u=o.$preview,f=c&&c.indexOf(l)>=0,m=i.size||0,g="text"===l||"html"===l||"image"===l?t.target.result:r,v=p&&-1!==p.indexOf(i.type);"html"===l&&o.purifyHtml&&window.DOMPurify&&(g=window.DOMPurify.sanitize(g)),f||v?(n=o._generatePreviewTemplate(l,g,s,i.type,a,!1,m),o._clearDefaultPreview(),u.append("\n"+n),o._validateImage(a,d,i.type,i.size)):o._previewDefault(i,a),o._setThumbAttr(a,d,m),o._initSortable()}},_setThumbAttr:function(i,t,a){var r=this,n=e("#"+i);n.length&&(a=a&&a>0?r._getSize(a):"",n.data({caption:t,size:a}))},_setInitThumbAttr:function(){var e,t,a,r,n=this,o=n.previewCache.data,l=n.previewCache.count(!0);if(0!==l)for(var s=0;l>s;s++)e=o.config[s],r=n.previewInitId+"-init_"+s,t=i.ifSet("caption",e,i.ifSet("filename",e)),a=i.ifSet("size",e),n._setThumbAttr(r,t,a)},_slugDefault:function(e){return i.isEmpty(e)?"":String(e).replace(/[\-\[\]\/\{}:;#%=\(\)\*\+\?\\\^\$\|<>&"']/g,"_")},_readFiles:function(t){this.reader=new FileReader;var a,r=this,n=r.$element,o=r.$preview,l=r.reader,s=r.$previewContainer,d=r.$previewStatus,c=r.msgLoading,p=r.msgProgress,u=r.previewInitId,f=t.length,m=r.fileTypeSettings,g=r.filestack.length,v=r.allowedFileTypes,h=v?v.length:0,w=r.allowedFileExtensions,_=i.isEmpty(w)?"":w.join(", "),b=r.maxFilePreviewSize&&parseFloat(r.maxFilePreviewSize),C=o.length&&(!b||isNaN(b)),y=function(i,n,o,l){var s=e.extend(!0,{},r._getOutData({},{},t),{id:o,index:l}),d={id:o,index:l,file:n,files:t};return r._previewDefault(n,o,!0),r.isUploadable&&(r.addToStack(void 0),setTimeout(function(){a(l+1)},100)),r._initFileActions(),r.removeFromPreviewOnError&&e("#"+o).remove(),r.isUploadable?r._showUploadError(i,s):r._showError(i,d)};r.loadedImages=[],r.totalImagesCount=0,e.each(t,function(e,i){var t=r.fileTypeSettings.image;t&&t(i.type)&&r.totalImagesCount++}),a=function(e){if(i.isEmpty(n.attr("multiple"))&&(f=1),e>=f)return r.isUploadable&&r.filestack.length>0?r._raise("filebatchselected",[r.getFileStack()]):r._raise("filebatchselected",[t]),s.removeClass("file-thumb-loading"),void d.html("");var E,x,T,S,F,I,P,k,z,A,$=g+e,D=u+"-"+$,U=t[e],j=U.name?r.slug(U.name):"",R=(U.size||0)/1e3,M="",L=i.objUrl.createObjectURL(U),Z=0,O="";if(h>0)for(S=0;h>S;S++)k=v[S],z=r.msgFileTypes[k]||k,O+=0===S?z:", "+z;if(j===!1)return void a(e+1);if(0===j.length)return F=r.msgInvalidFileName.replace("{name}",i.htmlEncode(U.name)),void(r.isError=y(F,U,D,e));if(i.isEmpty(w)||(M=new RegExp("\\.("+w.join("|")+")$","i")),T=R.toFixed(2),r.maxFileSize>0&&R>r.maxFileSize)return F=r.msgSizeTooLarge.replace("{name}",j).replace("{size}",T).replace("{maxSize}",r.maxFileSize),void(r.isError=y(F,U,D,e));if(null!==r.minFileSize&&R<=i.getNum(r.minFileSize))return F=r.msgSizeTooSmall.replace("{name}",j).replace("{size}",T).replace("{minSize}",r.minFileSize),void(r.isError=y(F,U,D,e));if(!i.isEmpty(v)&&i.isArray(v)){for(S=0;S<v.length;S+=1)I=v[S],A=m[I],Z+=A&&"function"==typeof A&&A(U.type,U.name)?1:0;if(0===Z)return F=r.msgInvalidFileType.replace("{name}",j).replace("{types}",O),void(r.isError=y(F,U,D,e))}return 0!==Z||i.isEmpty(w)||!i.isArray(w)||i.isEmpty(M)||(P=i.compare(j,M),Z+=i.isEmpty(P)?0:P.length,0!==Z)?r.showPreview?!C&&R>b?(r.addToStack(U),s.addClass("file-thumb-loading"),r._previewDefault(U,D),r._initFileActions(),r._updateFileDetails(f),void a(e+1)):(o.length&&void 0!==FileReader?(d.html(c.replace("{index}",e+1).replace("{files}",f)),s.addClass("file-thumb-loading"),l.onerror=function(e){r._errorHandler(e,j)},l.onload=function(i){r._previewFile(e,U,i,D,L),r._initFileActions()},l.onloadend=function(){F=p.replace("{index}",e+1).replace("{files}",f).replace("{percent}",50).replace("{name}",j),setTimeout(function(){d.html(F),r._updateFileDetails(f),a(e+1)},100),r._raise("fileloaded",[U,D,e,l])},l.onprogress=function(i){if(i.lengthComputable){var t=i.loaded/i.total*100,a=Math.ceil(t);F=p.replace("{index}",e+1).replace("{files}",f).replace("{percent}",a).replace("{name}",j),setTimeout(function(){d.html(F)},100)}},E=m.text,x=m.image,E(U.type,j)?l.readAsText(U,r.textEncoding):x(U.type,j)?l.readAsDataURL(U):l.readAsArrayBuffer(U)):(r._previewDefault(U,D),setTimeout(function(){a(e+1),r._updateFileDetails(f)},100),r._raise("fileloaded",[U,D,e,l])),void r.addToStack(U)):(r.addToStack(U),setTimeout(function(){a(e+1)},100),void r._raise("fileloaded",[U,D,e,l])):(F=r.msgInvalidFileExtension.replace("{name}",j).replace("{extensions}",_),void(r.isError=y(F,U,D,e)))},a(0),r._updateFileDetails(f,!1)},_updateFileDetails:function(e){var t=this,a=t.$element,r=t.getFileStack(),n=i.isIE(9)&&i.findFileName(a.val())||a[0].files[0]&&a[0].files[0].name||r.length&&r[0].name||"",o=t.slug(n),l=t.isUploadable?r.length:e,s=t.previewCache.count()+l,d=l>1?t._getMsgSelected(s):o;t.isError?(t.$previewContainer.removeClass("file-thumb-loading"),t.$previewStatus.html(""),t.$captionContainer.find(".kv-caption-icon").hide()):t._showFileIcon(),t._setCaption(d,t.isError),t.$container.removeClass("file-input-new file-input-ajax-new"),1===arguments.length&&t._raise("fileselect",[e,o]),t.previewCache.count()&&t._initPreviewActions()},_setThumbStatus:function(e,i){var t=this;if(t.showPreview){var a="indicator"+i,r=a+"Title",n="file-preview-"+i.toLowerCase(),o=e.find(".file-upload-indicator"),l=t.fileActionSettings;e.removeClass("file-preview-success file-preview-error file-preview-loading"),"Error"===i&&e.find(".kv-file-upload").attr("disabled",!0),"Success"===i&&(e.find(".file-drag-handle").remove(),o.css("margin-left",0)),o.html(l[a]),o.attr("title",l[r]),e.addClass(n)}},_setProgressCancelled:function(){var e=this;e._setProgress(101,e.$progress,e.msgCancelled)},_setProgress:function(e,t,a){var r,n,o=this,l=Math.min(e,100),s=o.progressUploadThreshold,d=100>=e?o.progressTemplate:o.progressCompleteTemplate,c=100>l?o.progressTemplate:a?o.progressErrorTemplate:d;t=t||o.$progress,i.isEmpty(c)||(s&&l>s&&100>=e?r=c.replace(/\{percent}/g,s).replace(/\{status}/g,o.msgUploadThreshold):(n=e>100?o.msgUploadEnd:l+"%",r=c.replace(/\{percent}/g,l).replace(/\{status}/g,n)),t.html(r),a&&t.find('[role="progressbar"]').html(a))},_setFileDropZoneTitle:function(){var e,t=this,a=t.$container.find(".file-drop-zone"),r=t.dropZoneTitle;t.isClickable&&(e=i.isEmpty(t.$element.attr("multiple"))?t.fileSingle:t.filePlural,r+=t.dropZoneClickTitle.replace("{files}",e)),a.find("."+t.dropZoneTitleClass).remove(),t.isUploadable&&t.showPreview&&0!==a.length&&!(t.getFileStack().length>0)&&t.dropZoneEnabled&&(0===a.find(i.FRAMES).length&&i.isEmpty(t.defaultPreviewContent)&&a.prepend('<div class="'+t.dropZoneTitleClass+'">'+r+"</div>"),t.$container.removeClass("file-input-new"),i.addCss(t.$container,"file-input-ajax-new"))},_setAsyncUploadStatus:function(i,t,a){var r=this,n=0;r._setProgress(t,e("#"+i).find(".file-thumb-progress")),r.uploadStatus[i]=t,e.each(r.uploadStatus,function(e,i){n+=i}),r._setProgress(Math.floor(n/a))},_validateMinCount:function(){var e=this,i=e.isUploadable?e.getFileStack().length:e.$element.get(0).files.length;return e.validateInitialCount&&e.minFileCount>0&&e._getFileCount(i-1)<e.minFileCount?(e._noFilesError({}),!1):!0},_getFileCount:function(e){var i=this,t=0;return i.validateInitialCount&&!i.overwriteInitial&&(t=i.previewCache.count(),e+=t),e},_getFileId:function(e){var i,t=this,a=t.generateFileId;return"function"==typeof a?a(e,event):e?(i=e.webkitRelativePath||e.fileName||e.name||null,i?e.size+"-"+i.replace(/[^0-9a-zA-Z_-]/gim,""):null):null},_getFileName:function(e){return e&&e.name?this.slug(e.name):void 0},_getFileIds:function(e){var i=this;return i.fileids.filter(function(i){return e?void 0!==i:void 0!==i&&null!==i})},_getFileNames:function(e){var i=this;return i.filenames.filter(function(i){return e?void 0!==i:void 0!==i&&null!==i})},_setPreviewError:function(e,i,t){var a=this;void 0!==i&&a.updateStack(i,t),a.removeFromPreviewOnError?e.remove():a._setThumbStatus(e,"Error")},_checkDimensions:function(e,t,a,r,n,o,l){var s,d,c,p,u=this,f="Small"===t?"min":"max",m=u[f+"Image"+o];!i.isEmpty(m)&&a.length&&(c=a[0],d="Width"===o?c.naturalWidth||c.width:c.naturalHeight||c.height,p="Small"===t?d>=m:m>=d,p||(s=u["msgImage"+o+t].replace("{name}",n).replace("{size}",m),u._showUploadError(s,l),u._setPreviewError(r,e,null)))},_validateImage:function(e,i,t,a){var r,n,o,l=this,s=l.$preview,d=s.find("#"+e),c=d.attr("data-fileindex"),p=d.find("img");i=i||"Untitled",p.length&&l._handler(p,"load",function(){n=d.width(),o=s.width(),n>o&&(p.css("width","100%"),d.css("width","97%")),r={ind:c,id:e},l._checkDimensions(c,"Small",p,d,i,"Width",r),l._checkDimensions(c,"Small",p,d,i,"Height",r),l.resizeImage||(l._checkDimensions(c,"Large",p,d,i,"Width",r),l._checkDimensions(c,"Large",p,d,i,"Height",r)),l._raise("fileimageloaded",[e]),l.loadedImages.push({ind:c,img:p,thumb:d,pid:e,typ:t,siz:a,validated:!1}),l._validateAllImages()})},_validateAllImages:function(){var e,i,t,a=this,r={val:0},n=a.loadedImages.length,o=a.resizeIfSizeMoreThan;if(n===a.totalImagesCount&&(a._raise("fileimagesloaded"),a.resizeImage))for(e=0;e<a.loadedImages.length;e++)i=a.loadedImages[e],i.validated||(t=i.siz,t&&t>1e3*o&&a._getResizedImage(i,r,n),a.loadedImages[e].validated=!0)},_getResizedImage:function(i,t,a){var r,n,o,l,s=this,d=e(i.img)[0],c=d.naturalWidth,p=d.naturalHeight,u=1,f=s.maxImageWidth||c,m=s.maxImageHeight||p,g=!(!c||!p),v=s.imageCanvas,h=s.imageCanvasContext,w=i.typ,_=i.pid,b=i.ind,C=i.thumb;if(o=function(e,i,t){s.isUploadable?s._showUploadError(e,i,t):s._showError(e,i,t),s._setPreviewError(C,b)},(!s.filestack[b]||!g||f>=c&&m>=p)&&(g&&s.filestack[b]&&s._raise("fileimageresized",[_,b]),t.val++,t.val===a&&s._raise("fileimagesresized"),!g))return void o(s.msgImageResizeError,{id:_,index:b},"fileimageresizeerror");w=w||s.resizeDefaultImageType,r=c>f,n=p>m,u="width"===s.resizePreference?r?f/c:n?m/p:1:n?m/p:r?f/c:1,s._resetCanvas(),c*=u,p*=u,v.width=c,v.height=p;try{h.drawImage(d,0,0,c,p),v.toBlob(function(e){s.filestack[b]=e,s._raise("fileimageresized",[_,b]),t.val++,t.val===a&&s._raise("fileimagesresized",[void 0,void 0]),e instanceof Blob||o(s.msgImageResizeError,{id:_,index:b},"fileimageresizeerror")},w,s.resizeQuality)}catch(y){t.val++,t.val===a&&s._raise("fileimagesresized",[void 0,void 0]),l=s.msgImageResizeException.replace("{errors}",y.message),o(l,{id:_,index:b},"fileimageresizeexception")}},_initBrowse:function(e){var i=this;i.showBrowse?(i.$btnFile=e.find(".btn-file"),i.$btnFile.append(i.$element)):i.$element.hide()},_initCaption:function(){var e=this,t=e.initialCaption||"";return e.overwriteInitial||i.isEmpty(t)?(e.$caption.html(""),!1):(e._setCaption(t),!0)},_setCaption:function(t,a){var r,n,o,l,s=this,d=s.getFileStack();if(s.$caption.length){if(a)r=e("<div>"+s.msgValidationError+"</div>").text(),o=d.length,l=o?1===o&&d[0]?s._getFileNames()[0]:s._getMsgSelected(o):s._getMsgSelected(s.msgNo),n='<span class="'+s.msgValidationErrorClass+'">'+s.msgValidationErrorIcon+(i.isEmpty(t)?l:t)+"</span>";else{if(i.isEmpty(t))return;r=e("<div>"+t+"</div>").text(),n=s._getLayoutTemplate("fileIcon")+r}s.$caption.html(n),s.$caption.attr("title",r),s.$captionContainer.find(".file-caption-ellipsis").attr("title",r)}},_createContainer:function(){var i=this,t=e(document.createElement("div")).attr({"class":"file-input file-input-new"}).html(i._renderMain());return i.$element.before(t),i._initBrowse(t),i.theme&&t.addClass("theme-"+i.theme),t},_refreshContainer:function(){var e=this,i=e.$container;i.before(e.$element),i.html(e._renderMain()),e._initBrowse(i)},_renderMain:function(){var e=this,i=e.isUploadable&&e.dropZoneEnabled?" file-drop-zone":"file-drop-disabled",t=e.showClose?e._getLayoutTemplate("close"):"",a=e.showPreview?e._getLayoutTemplate("preview").replace(/\{class}/g,e.previewClass).replace(/\{dropClass}/g,i):"",r=e.isDisabled?e.captionClass+" file-caption-disabled":e.captionClass,n=e.captionTemplate.replace(/\{class}/g,r+" kv-fileinput-caption");return e.mainTemplate.replace(/\{class}/g,e.mainClass+(!e.showBrowse&&e.showCaption?" no-browse":"")).replace(/\{preview}/g,a).replace(/\{close}/g,t).replace(/\{caption}/g,n).replace(/\{upload}/g,e._renderButton("upload")).replace(/\{remove}/g,e._renderButton("remove")).replace(/\{cancel}/g,e._renderButton("cancel")).replace(/\{browse}/g,e._renderButton("browse"))},_renderButton:function(e){var t=this,a=t._getLayoutTemplate("btnDefault"),r=t[e+"Class"],n=t[e+"Title"],o=t[e+"Icon"],l=t[e+"Label"],s=t.isDisabled?" disabled":"",d="button";switch(e){case"remove":if(!t.showRemove)return"";break;case"cancel":if(!t.showCancel)return"";r+=" hide";break;case"upload":if(!t.showUpload)return"";t.isUploadable&&!t.isDisabled?a=t._getLayoutTemplate("btnLink").replace("{href}",t.uploadUrl):d="submit";break;case"browse":if(!t.showBrowse)return"";a=t._getLayoutTemplate("btnBrowse"); - break;default:return""}return r+="browse"===e?" btn-file":" fileinput-"+e+" fileinput-"+e+"-button",i.isEmpty(l)||(l=' <span class="'+t.buttonLabelClass+'">'+l+"</span>"),a.replace("{type}",d).replace("{css}",r).replace("{title}",n).replace("{status}",s).replace("{icon}",o).replace("{label}",l)},_renderThumbProgress:function(){var e=this;return'<div class="file-thumb-progress hide">'+e.progressTemplate.replace(/\{percent}/g,"0").replace(/\{status}/g,e.msgUploadBegin)+"</div>"},_renderFileFooter:function(e,t,a,r){var n,o=this,l=o.fileActionSettings,s=l.showRemove,d=l.showDrag,c=l.showUpload,p=l.showZoom,u=o._getLayoutTemplate("footer"),f=r?l.indicatorError:l.indicatorNew,m=r?l.indicatorErrorTitle:l.indicatorNewTitle;return t=o._getSize(t),n=o.isUploadable?u.replace(/\{actions}/g,o._renderFileActions(c,s,p,d,!1,!1,!1)).replace(/\{caption}/g,e).replace(/\{size}/g,t).replace(/\{width}/g,a).replace(/\{progress}/g,o._renderThumbProgress()).replace(/\{indicator}/g,f).replace(/\{indicatorTitle}/g,m):u.replace(/\{actions}/g,o._renderFileActions(!1,!1,p,d,!1,!1,!1)).replace(/\{caption}/g,e).replace(/\{size}/g,t).replace(/\{width}/g,a).replace(/\{progress}/g,"").replace(/\{indicator}/g,f).replace(/\{indicatorTitle}/g,m),n=i.replaceTags(n,o.previewThumbTags)},_renderFileActions:function(e,i,t,a,r,n,o,l){if(!(e||i||t||a))return"";var s,d=this,c=n===!1?"":' data-url="'+n+'"',p=o===!1?"":' data-key="'+o+'"',u="",f="",m="",g="",v=d._getLayoutTemplate("actions"),h=d.fileActionSettings,w=d.otherActionButtons.replace(/\{dataKey}/g,p),_=r?h.removeClass+" disabled":h.removeClass;return i&&(u=d._getLayoutTemplate("actionDelete").replace(/\{removeClass}/g,_).replace(/\{removeIcon}/g,h.removeIcon).replace(/\{removeTitle}/g,h.removeTitle).replace(/\{dataUrl}/g,c).replace(/\{dataKey}/g,p)),e&&(f=d._getLayoutTemplate("actionUpload").replace(/\{uploadClass}/g,h.uploadClass).replace(/\{uploadIcon}/g,h.uploadIcon).replace(/\{uploadTitle}/g,h.uploadTitle)),t&&(m=d._getLayoutTemplate("actionZoom").replace(/\{zoomClass}/g,h.zoomClass).replace(/\{zoomIcon}/g,h.zoomIcon).replace(/\{zoomTitle}/g,h.zoomTitle)),a&&l&&(s="drag-handle-init "+h.dragClass,g=d._getLayoutTemplate("actionDrag").replace(/\{dragClass}/g,s).replace(/\{dragTitle}/g,h.dragTitle).replace(/\{dragIcon}/g,h.dragIcon)),v.replace(/\{delete}/g,u).replace(/\{upload}/g,f).replace(/\{zoom}/g,m).replace(/\{drag}/g,g).replace(/\{other}/g,w)},_browse:function(e){var i=this;i._raise("filebrowse"),e&&e.isDefaultPrevented()||(i.isError&&!i.isUploadable&&i.clear(),i.$captionContainer.focus())},_filterDuplicate:function(e,i,t){var a=this,r=a._getFileId(e);r&&t&&t.indexOf(r)>-1||(t||(t=[]),i.push(e),t.push(r))},_change:function(t){var a=this,r=a.$element;if(!a.isUploadable&&i.isEmpty(r.val())&&a.fileInputCleared)return void(a.fileInputCleared=!1);a.fileInputCleared=!1;var n,o,l,s,d=[],c=arguments.length>1,p=a.isUploadable,u=c?t.originalEvent.dataTransfer.files:r.get(0).files,f=a.filestack.length,m=i.isEmpty(r.attr("multiple")),g=m&&f>0,v=0,h=a._getFileIds(),w=function(i,t,r,n){var o=e.extend(!0,{},a._getOutData({},{},u),{id:r,index:n}),l={id:r,index:n,file:t,files:u};return a.isUploadable?a._showUploadError(i,o):a._showError(i,l)};if(a.reader=null,a._resetUpload(),a._hideFileIcon(),a.isUploadable&&a.$container.find(".file-drop-zone ."+a.dropZoneTitleClass).remove(),c?e.each(u,function(e,i){i&&!i.type&&void 0!==i.size&&i.size%4096===0?v++:a._filterDuplicate(i,d,h)}):(u=t.target&&void 0===t.target.files?t.target.value?[{name:t.target.value.replace(/^.+\\/,"")}]:[]:t.target.files||{},e.each(u,function(e,i){a._filterDuplicate(i,d,h)})),i.isEmpty(d)||0===d.length)return p||a.clear(),a._showFolderError(v),void a._raise("fileselectnone");if(a._resetErrors(),s=d.length,o=a._getFileCount(a.isUploadable?a.getFileStack().length+s:s),a.maxFileCount>0&&o>a.maxFileCount){if(!a.autoReplace||s>a.maxFileCount)return l=a.autoReplace&&s>a.maxFileCount?s:o,n=a.msgFilesTooMany.replace("{m}",a.maxFileCount).replace("{n}",l),a.isError=w(n,null,null,null),a.$captionContainer.find(".kv-caption-icon").hide(),a._setCaption("",!0),void a.$container.removeClass("file-input-new file-input-ajax-new");o>a.maxFileCount&&a._resetPreviewThumbs(p)}else!p||g?(a._resetPreviewThumbs(!1),g&&a.clearStack()):!p||0!==f||a.previewCache.count()&&!a.overwriteInitial||a._resetPreviewThumbs(!0);a.isPreviewable?a._readFiles(d):a._updateFileDetails(1),a._showFolderError(v)},_abort:function(i){var t,a=this;return a.ajaxAborted&&"object"==typeof a.ajaxAborted&&void 0!==a.ajaxAborted.message?(t=e.extend(!0,{},a._getOutData(),i),t.abortData=a.ajaxAborted.data||{},t.abortMessage=a.ajaxAborted.message,a._setProgress(101,a.$progress,a.msgCancelled),a._showUploadError(a.ajaxAborted.message,t,"filecustomerror"),a.cancel(),!0):!1},_resetFileStack:function(){var t=this,a=0,r=[],n=[],o=[];t._getThumbs().each(function(){var l,s=e(this),d=s.attr("data-fileindex"),c=t.filestack[d],p=s.attr("id");"-1"!==d&&-1!==d&&(void 0!==c?(r[a]=c,n[a]=t._getFileName(c),o[a]=t._getFileId(c),s.attr({id:t.previewInitId+"-"+a,"data-fileindex":a}),a++):(l="uploaded-"+i.uniqId(),s.attr({id:l,"data-fileindex":"-1"}),t.$preview.find("#zoom-"+p).attr("id","zoom-"+l)))}),t.filestack=r,t.filenames=n,t.fileids=o},clearStack:function(){var e=this;return e.filestack=[],e.filenames=[],e.fileids=[],e.$element},updateStack:function(e,i){var t=this;return t.filestack[e]=i,t.filenames[e]=t._getFileName(i),t.fileids[e]=i&&t._getFileId(i)||null,t.$element},addToStack:function(e){var i=this;return i.filestack.push(e),i.filenames.push(i._getFileName(e)),i.fileids.push(i._getFileId(e)),i.$element},getFileStack:function(e){var i=this;return i.filestack.filter(function(i){return e?void 0!==i:void 0!==i&&null!==i})},getFilesCount:function(){var e=this,i=e.isUploadable?e.getFileStack().length:e.$element.get(0).files.length;return e._getFileCount(i)},lock:function(){var e=this;return e._resetErrors(),e.disable(),e.showRemove&&i.addCss(e.$container.find(".fileinput-remove"),"hide"),e.showCancel&&e.$container.find(".fileinput-cancel").removeClass("hide"),e._raise("filelock",[e.filestack,e._getExtraData()]),e.$element},unlock:function(e){var t=this;return void 0===e&&(e=!0),t.enable(),t.showCancel&&i.addCss(t.$container.find(".fileinput-cancel"),"hide"),t.showRemove&&t.$container.find(".fileinput-remove").removeClass("hide"),e&&t._resetFileStack(),t._raise("fileunlock",[t.filestack,t._getExtraData()]),t.$element},cancel:function(){var i,t=this,a=t.ajaxRequests,r=a.length;if(r>0)for(i=0;r>i;i+=1)t.cancelling=!0,a[i].abort();return t._setProgressCancelled(),t._getThumbs().each(function(){var i=e(this),a=i.attr("data-fileindex");i.removeClass("file-uploading"),void 0!==t.filestack[a]&&(i.find(".kv-file-upload").removeClass("disabled").removeAttr("disabled"),i.find(".kv-file-remove").removeClass("disabled").removeAttr("disabled")),t.unlock()}),t.$element},clear:function(){var t,a=this;if(a._raise("fileclear"))return a.$btnUpload.removeAttr("disabled"),a._getThumbs().find("video,audio,img").each(function(){i.cleanMemory(e(this))}),a._resetUpload(),a.clearStack(),a._clearFileInput(),a._resetErrors(!0),a._hasInitialPreview()?(a._showFileIcon(),a._resetPreview(),a._initPreviewActions(),a.$container.removeClass("file-input-new")):(a._getThumbs().each(function(){a._clearObjects(e(this))}),a.isUploadable&&(a.previewCache.data={}),a.$preview.html(""),t=!a.overwriteInitial&&a.initialCaption.length>0?a.initialCaption:"",a.$caption.html(t),a.$caption.attr("title",""),i.addCss(a.$container,"file-input-new"),a._validateDefaultPreview()),0===a.$container.find(i.FRAMES).length&&(a._initCaption()||a.$captionContainer.find(".kv-caption-icon").hide()),a._hideFileIcon(),a._raise("filecleared"),a.$captionContainer.focus(),a._setFileDropZoneTitle(),a.$element},reset:function(){var e=this;if(e._raise("filereset"))return e._resetPreview(),e.$container.find(".fileinput-filename").text(""),i.addCss(e.$container,"file-input-new"),(e.$preview.find(i.FRAMES).length||e.isUploadable&&e.dropZoneEnabled)&&e.$container.removeClass("file-input-new"),e._setFileDropZoneTitle(),e.clearStack(),e.formdata={},e.$element},disable:function(){var e=this;return e.isDisabled=!0,e._raise("filedisabled"),e.$element.attr("disabled","disabled"),e.$container.find(".kv-fileinput-caption").addClass("file-caption-disabled"),e.$container.find(".btn-file, .fileinput-remove, .fileinput-upload, .file-preview-frame button").attr("disabled",!0),e._initDragDrop(),e.$element},enable:function(){var e=this;return e.isDisabled=!1,e._raise("fileenabled"),e.$element.removeAttr("disabled"),e.$container.find(".kv-fileinput-caption").removeClass("file-caption-disabled"),e.$container.find(".btn-file, .fileinput-remove, .fileinput-upload, .file-preview-frame button").removeAttr("disabled"),e._initDragDrop(),e.$element},upload:function(){var t,a,r,n=this,o=n.getFileStack().length,l={},s=!e.isEmptyObject(n._getExtraData());if(n.isUploadable&&!n.isDisabled){if(n.minFileCount>0&&n._getFileCount(o)<n.minFileCount)return void n._noFilesError(l);if(n._resetUpload(),0===o&&!s)return void n._showUploadError(n.msgUploadEmpty);if(n.$progress.removeClass("hide"),n.uploadCount=0,n.uploadStatus={},n.uploadLog=[],n.lock(),n._setProgress(2),0===o&&s)return void n._uploadExtraOnly();if(r=n.filestack.length,n.hasInitData=!1,!n.uploadAsync)return n._uploadBatch(),n.$element;for(a=n._getOutData(),n._raise("filebatchpreupload",[a]),n.fileBatchCompleted=!1,n.uploadCache={content:[],config:[],tags:[],append:!0},n.uploadAsyncCount=n.getFileStack().length,t=0;r>t;t++)n.uploadCache.content[t]=null,n.uploadCache.config[t]=null,n.uploadCache.tags[t]=null;for(n.$preview.find(".file-preview-initial").removeClass(i.SORT_CSS),n._initSortable(),n.cacheInitialPreview=n.getPreview(),t=0;r>t;t++)void 0!==n.filestack[t]&&n._uploadSingle(t,n.filestack,!0)}},destroy:function(){var i=this,t=i.$form,a=i.$container,r=i.$element,n=i.namespace;return e(document).off(n),e(window).off(n),t&&t.length&&t.off(n),r.insertBefore(a).off(n).removeData(),a.off().remove(),r},refresh:function(i){var t=this,a=t.$element;return i=i?e.extend(!0,{},t.options,i):t.options,t.destroy(),a.fileinput(i),a.val()&&a.trigger("change.fileinput"),a},zoom:function(t){var a=this,r=e("#"+t),n=a.$modal;return r.length?(i.initModal(n),n.html(a._getModalContent()),a._setZoomContent(r),n.modal("show"),void a._initZoomButtons()):void a._log('Cannot zoom to detailed preview! Invalid frame with id: "'+t+'".')},getPreview:function(){var e=this;return{content:e.initialPreview,config:e.initialPreviewConfig,tags:e.initialPreviewThumbTags}}},e.fn.fileinput=function(a){if(i.hasFileAPISupport()||i.isIE(9)){var r=Array.apply(null,arguments),n=[];switch(r.shift(),this.each(function(){var o,l=e(this),s=l.data("fileinput"),d="object"==typeof a&&a,c=d.theme||l.data("theme"),p={},u={},f=d.language||l.data("language")||e.fn.fileinput.defaults.language||"en";s||(c&&(u=e.fn.fileinputThemes[c]||{}),"en"===f||i.isEmpty(e.fn.fileinputLocales[f])||(p=e.fn.fileinputLocales[f]||{}),o=e.extend(!0,{},e.fn.fileinput.defaults,u,e.fn.fileinputLocales.en,p,d,l.data()),s=new t(this,o),l.data("fileinput",s)),"string"==typeof a&&n.push(s[a].apply(s,r))}),n.length){case 0:return this;case 1:return n[0];default:return n}}},e.fn.fileinput.defaults={language:"en",showCaption:!0,showBrowse:!0,showPreview:!0,showRemove:!0,showUpload:!0,showCancel:!0,showClose:!0,showUploadedThumbs:!0,browseOnZoneClick:!1,autoReplace:!1,generateFileId:null,previewClass:"",captionClass:"",frameClass:"krajee-default",mainClass:"file-caption-main",mainTemplate:null,purifyHtml:!0,fileSizeGetter:null,initialCaption:"",initialPreview:[],initialPreviewDelimiter:"*$$*",initialPreviewAsData:!1,initialPreviewFileType:"image",initialPreviewConfig:[],initialPreviewThumbTags:[],previewThumbTags:{},initialPreviewShowDelete:!0,removeFromPreviewOnError:!1,deleteUrl:"",deleteExtraData:{},overwriteInitial:!0,previewZoomButtonIcons:{prev:'<i class="glyphicon glyphicon-triangle-left"></i>',next:'<i class="glyphicon glyphicon-triangle-right"></i>',toggleheader:'<i class="glyphicon glyphicon-resize-vertical"></i>',fullscreen:'<i class="glyphicon glyphicon-fullscreen"></i>',borderless:'<i class="glyphicon glyphicon-resize-full"></i>',close:'<i class="glyphicon glyphicon-remove"></i>'},previewZoomButtonClasses:{prev:"btn btn-navigate",next:"btn btn-navigate",toggleheader:"btn btn-default btn-header-toggle",fullscreen:"btn btn-default",borderless:"btn btn-default",close:"btn btn-default"},preferIconicPreview:!1,preferIconicZoomPreview:!1,allowedPreviewTypes:void 0,allowedPreviewMimeTypes:null,allowedFileTypes:null,allowedFileExtensions:null,defaultPreviewContent:null,customLayoutTags:{},customPreviewTags:{},previewFileIcon:'<i class="glyphicon glyphicon-file"></i>',previewFileIconClass:"file-other-icon",previewFileIconSettings:{},previewFileExtSettings:{},buttonLabelClass:"hidden-xs",browseIcon:'<i class="glyphicon glyphicon-folder-open"></i>&nbsp;',browseClass:"btn btn-primary",removeIcon:'<i class="glyphicon glyphicon-trash"></i>',removeClass:"btn btn-default",cancelIcon:'<i class="glyphicon glyphicon-ban-circle"></i>',cancelClass:"btn btn-default",uploadIcon:'<i class="glyphicon glyphicon-upload"></i>',uploadClass:"btn btn-default",uploadUrl:null,uploadAsync:!0,uploadExtraData:{},zoomModalHeight:480,minImageWidth:null,minImageHeight:null,maxImageWidth:null,maxImageHeight:null,resizeImage:!1,resizePreference:"width",resizeQuality:.92,resizeDefaultImageType:"image/jpeg",resizeIfSizeMoreThan:0,minFileSize:0,maxFileSize:0,maxFilePreviewSize:25600,minFileCount:0,maxFileCount:0,validateInitialCount:!1,msgValidationErrorClass:"text-danger",msgValidationErrorIcon:'<i class="glyphicon glyphicon-exclamation-sign"></i> ',msgErrorClass:"file-error-message",progressThumbClass:"progress-bar progress-bar-success progress-bar-striped active",progressClass:"progress-bar progress-bar-success progress-bar-striped active",progressCompleteClass:"progress-bar progress-bar-success",progressErrorClass:"progress-bar progress-bar-danger",progressUploadThreshold:99,previewFileType:"image",elCaptionContainer:null,elCaptionText:null,elPreviewContainer:null,elPreviewImage:null,elPreviewStatus:null,elErrorContainer:null,errorCloseButton:'<span class="close kv-error-close">&times;</span>',slugCallback:null,dropZoneEnabled:!0,dropZoneTitleClass:"file-drop-zone-title",fileActionSettings:{},otherActionButtons:"",textEncoding:"UTF-8",ajaxSettings:{},ajaxDeleteSettings:{},showAjaxErrorDetails:!0},e.fn.fileinputLocales.en={fileSingle:"file",filePlural:"files",browseLabel:"Browse &hellip;",removeLabel:"Remove",removeTitle:"Clear selected files",cancelLabel:"Cancel",cancelTitle:"Abort ongoing upload",uploadLabel:"Upload",uploadTitle:"Upload selected files",msgNo:"No",msgNoFilesSelected:"No files selected",msgCancelled:"Cancelled",msgZoomModalHeading:"Detailed Preview",msgSizeTooSmall:'File "{name}" (<b>{size} KB</b>) is too small and must be larger than <b>{minSize} KB</b>.',msgSizeTooLarge:'File "{name}" (<b>{size} KB</b>) exceeds maximum allowed upload size of <b>{maxSize} KB</b>.',msgFilesTooLess:"You must select at least <b>{n}</b> {files} to upload.",msgFilesTooMany:"Number of files selected for upload <b>({n})</b> exceeds maximum allowed limit of <b>{m}</b>.",msgFileNotFound:'File "{name}" not found!',msgFileSecured:'Security restrictions prevent reading the file "{name}".',msgFileNotReadable:'File "{name}" is not readable.',msgFilePreviewAborted:'File preview aborted for "{name}".',msgFilePreviewError:'An error occurred while reading the file "{name}".',msgInvalidFileName:'Invalid or unsupported characters in file name "{name}".',msgInvalidFileType:'Invalid type for file "{name}". Only "{types}" files are supported.',msgInvalidFileExtension:'Invalid extension for file "{name}". Only "{extensions}" files are supported.',msgFileTypes:{image:"image",html:"HTML",text:"text",video:"video",audio:"audio",flash:"flash",pdf:"PDF",object:"object"},msgUploadAborted:"The file upload was aborted",msgUploadThreshold:"Processing...",msgUploadBegin:"Initializing...",msgUploadEnd:"Done",msgUploadEmpty:"No valid data available for upload.",msgValidationError:"Validation Error",msgLoading:"Loading file {index} of {files} &hellip;",msgProgress:"Loading file {index} of {files} - {name} - {percent}% completed.",msgSelected:"{n} {files} selected",msgFoldersNotAllowed:"Drag & drop files only! {n} folder(s) dropped were skipped.",msgImageWidthSmall:'Width of image file "{name}" must be at least {size} px.',msgImageHeightSmall:'Height of image file "{name}" must be at least {size} px.',msgImageWidthLarge:'Width of image file "{name}" cannot exceed {size} px.',msgImageHeightLarge:'Height of image file "{name}" cannot exceed {size} px.',msgImageResizeError:"Could not get the image dimensions to resize.",msgImageResizeException:"Error while resizing the image.<pre>{errors}</pre>",msgAjaxError:"Something went wrong with the {operation} operation. Please try again later!",msgAjaxProgressError:"{operation} failed",ajaxOperations:{deleteThumb:"file delete",uploadThumb:"file upload",uploadBatch:"batch file upload",uploadExtra:"form data upload"},dropZoneTitle:"Drag & drop files here &hellip;",dropZoneClickTitle:"<br>(or click to select {files})",previewZoomButtonTitles:{prev:"View previous file",next:"View next file",toggleheader:"Toggle header",fullscreen:"Toggle full screen",borderless:"Toggle borderless mode",close:"Close detailed preview"}},e.fn.fileinput.Constructor=t,e(document).ready(function(){var i=e("input.file[type=file]");i.length&&i.fileinput()})}); \ No newline at end of file diff --git a/assets/js/validation.js b/assets/js/validation.js deleted file mode 100644 index b5a9bfdb..00000000 --- a/assets/js/validation.js +++ /dev/null @@ -1,469 +0,0 @@ -/** - * @author Kishor Mali - */ - - -$(document).ready(function(){ - - jQuery.validator.addMethod("notEqualTo", function(value, element) - { - if(value == $('#mobile1').val() && $('#mobile1').val() != "") - { - return false; - } - else - { - return true; - } - },""); - - jQuery.validator.addMethod("lessThanBrothers", function(value, element) - { - if(value <= $('#no_of_brothers').val()) - { - return true; - } - else - { - return false; - } - },""); - - jQuery.validator.addMethod("lessThanSisters", function(value, element) - { - if(value <= $('#no_of_sisters').val()) - { - return true; - } - else - { - return false; - } - },""); - - jQuery.validator.addMethod("selected", function(value, element) - { - if(value == 0) { return false; } - else { return true; } - },"This field is required."); - - - jQuery.validator.addMethod("greaterThan", function(value, element) - { - var value = parseFloat(value); - var smaller = parseFloat($("#part_anual_income_from").val()); - - if(value < smaller) - { return false; } - else - { return true; } - },"To Salary is must greater than from."); - - - jQuery.validator.addMethod("acceptImgExtension", function(value, element) - { - if(value == "") - { - return true; - } - else - { - var extension = (value.substring(value.lastIndexOf('.') + 1)).toLowerCase(); - - if(extension == 'jpg'|| extension=='png' || extension == "jpeg" || extension == "gif") - { return true; } - else - { return false; } - } - - - }, ""); - - - jQuery.validator.addMethod("acceptDocExtension", function(value, element) - { - if(value == "") - { - return true; - } - else - { - var extension = (value.substring(value.lastIndexOf('.') + 1)).toLowerCase(); - - if(extension == 'jpg'|| extension=='png' || extension == "jpeg" || extension == "gif") - { return true; } - else - { return false; } - } - }, ""); - - - jQuery.validator.addMethod("checkUsername", function(value, element) - { - var response; - var post_url_check_username = baseurl + "user/checkUsernameExist/"; - - $.ajax({ - type: "POST", - url: post_url_check_username, - data: {username : value}, - dataType: "json", - async: false - }).done(function(result){ - //alert(result.status); - if(result.status == true){ - response = false; - }else{ - response = true; - } - }); - return response; - }, "Username already taken."); - - - jQuery.validator.addMethod("checkEmailExist", function(value, element) - { - var response = false; - - var post_url_check_email = baseurl +"user/checkEmailExist/"; - - $.ajax({ - type: "POST", - url: post_url_check_email, - data: {email : value}, - dataType: "json", - async: false - }).done(function(result){ - if(result.status == true){ - response = false; - }else{ - response = true; - } - }); - return response; - }, "Email already taken."); - - - jQuery.validator.addMethod("checkMobileExist", function(value, element) - { - var response = false; - - var post_url_check_mobile = baseurl + "user/checkMobileExist/"; - - $.ajax({ - type: "POST", - url: post_url_check_mobile, - data: {mob : value}, - dataType: "json", - async: false - }).done(function(result){ - if(result.status == true){ - response = false; - }else{ - response = true; - } - }); - return response; - }, "Mobile number already registered."); - - jQuery.validator.addMethod("checkMobileExist2", function(value, element) - { - var response = false; - - var post_url_check_mobile2 = baseurl + "user/checkMobileExist2/"; - - if(value == "") - { - response = true; - } - else - { - $.ajax({ - type: "POST", - url: post_url_check_mobile2, - data: {mob : value}, - dataType: "json", - async: false - }).done(function(result){ - if(result.status == true) - { - response = false; - }else - { - response = true; - } - }); - } - return response; - }, "Mobile number already registered."); - - - jQuery.validator.addMethod("checkPhoneExist", function(value, element) - { - var response = false; - - var post_url_check_phone = baseurl +"user/checkPhoneExist/"; - - if(value == "") - { - response = true; - } - else - { - $.ajax({ - type: "POST", - url: post_url_check_phone, - data: {mob : value}, - dataType: "json", - async: false - }).done(function(result){ - if(result.status == true) - { - response = false; - }else - { - response = true; - } - }); - } - return response; - }, "Phone number already registered."); - - - jQuery.validator.addMethod('checkMobileExist1Same', function(value, element) - { - var response = false; - - var post_url_check_phone = baseurl +"profile/checkMobileExist1Same/"; - - if(value == "") - { - response = true; - } - else - { - $.ajax({ - type: "POST", - url: post_url_check_phone, - data: {mob : value}, - dataType: "json", - async: false - }).done(function(result){ - if(result.status == true) - { - response = false; - }else - { - response = true; - } - }); - } - return response; - }, "Mobile number already registered."); - - - jQuery.validator.addMethod('checkMobileExist2Same', function(value, element) - { - var response = false; - - var post_url_check_mobile2 = baseurl + "profile/checkMobileExist2Same/"; - - if(value == "") - { - response = true; - } - else - { - $.ajax({ - type: "POST", - url: post_url_check_mobile2, - data: {mob : value}, - dataType: "json", - async: false - }).done(function(result){ - if(result.status == true) - { - response = false; - }else - { - response = true; - } - }); - } - return response; - }, "Mobile number already registered."); - - - jQuery.validator.addMethod('checkPhoneExistSame', function(value, element) - { - var response = false; - - var post_url_check_mobile2 = baseurl + "profile/checkPhoneExistSame/"; - - if(value == "") - { - response = true; - } - else - { - $.ajax({ - type: "POST", - url: post_url_check_mobile2, - data: {mob : value}, - dataType: "json", - async: false - }).done(function(result){ - if(result.status == true) - { - response = false; - }else - { - response = true; - } - }); - } - return response; - },"Phone number already registered."); - - - - jQuery.validator.addMethod('checkDateFormat', function(value, element){ - - var stringPattern = /^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$/gm; - - if(stringPattern.test(value)) - { - return true; - } - else - { - return false; - } - },"Please enter correct date."); - - - jQuery.validator.addMethod('checkWhiteSpaces', function(value, element){ - - var stringPattern = /\s/; - - if(stringPattern.test(value)) - { - return false; - } - else - { - return true; - } - },"Spaces are not allowed in username."); - - - jQuery.validator.addMethod('checkDateDifference', function(value, element){ - - var birthYear = parseInt( value.substring(value.lastIndexOf('/') + 1)), - dateNow = new Date(), - dateDiff = dateNow.getFullYear() - birthYear; - - if(dateDiff < 17) - { - return false; - } - else - { - return true; - } - },"Please enter less than 18 years of current date."); - - - /* Make checkboxes work like radio buttons - Start - - $('.radio_eating').click(function() { - selectedBox = this.id; - - $('.radio_eating').each(function() { - if ( this.id == selectedBox ) - { - this.checked = true; - } - else - { - this.checked = false; - }; - }); - }); - - $('.radio_drinking').click(function() { - selectedBox = this.id; - - $('.radio_drinking').each(function() { - if ( this.id == selectedBox ) - { - this.checked = true; - } - else - { - this.checked = false; - }; - }); - }); - - $('.radio_smoking').click(function() { - selectedBox = this.id; - - $('.radio_smoking').each(function() { - if ( this.id == selectedBox ) - { - this.checked = true; - } - else - { - this.checked = false; - }; - }); - }); - */ - - - /* Physical Disability Textbox enable disable - Start */ - - $('#physical_status').prop('disabled',true); - - $('#chk_physical_status').click(function() - { - if($('#chk_physical_status').prop('checked') == false) - { - $('#physical_status').prop('disabled',true); - } - else - { - $('#physical_status').prop('disabled',false); - } - }); - - - /* Physical Disability Textbox enable disable - End */ - - - jQuery.validator.addMethod("checkEmailExistFranchise", function(value, element) - { - var response = false; - - var post_url_check_email_franchise = baseurl +"franchise/franchise/checkEmailExist/"; - - $.ajax({ - type: "POST", - url: post_url_check_email_franchise, - data: {email : value}, - dataType: "json", - async: false - }).done(function(result){ - if(result.status == true){ - response = false; - }else{ - response = true; - } - }); - return response; - }, "Email already taken."); - - -}); diff --git a/assets/plugins/bootstrap-slider/bootstrap-slider.js b/assets/plugins/bootstrap-slider/bootstrap-slider.js deleted file mode 100644 index 2e072fe6..00000000 --- a/assets/plugins/bootstrap-slider/bootstrap-slider.js +++ /dev/null @@ -1,1167 +0,0 @@ -/*! ========================================================= - * bootstrap-slider.js - * - * Maintainers: - * Kyle Kemp - * - Twitter: @seiyria - * - Github: seiyria - * Rohit Kalkur - * - Twitter: @Rovolutionary - * - Github: rovolution - * - * ========================================================= - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================= */ - - -/** - * Bridget makes jQuery widgets - * v1.0.1 - * MIT license - */ -( function( $ ) { - - ( function( $ ) { - - 'use strict'; - - // -------------------------- utils -------------------------- // - - var slice = Array.prototype.slice; - - function noop() {} - - // -------------------------- definition -------------------------- // - - function defineBridget( $ ) { - - // bail if no jQuery - if ( !$ ) { - return; - } - - // -------------------------- addOptionMethod -------------------------- // - - /** - * adds option method -> $().plugin('option', {...}) - * @param {Function} PluginClass - constructor class - */ - function addOptionMethod( PluginClass ) { - // don't overwrite original option method - if ( PluginClass.prototype.option ) { - return; - } - - // option setter - PluginClass.prototype.option = function( opts ) { - // bail out if not an object - if ( !$.isPlainObject( opts ) ){ - return; - } - this.options = $.extend( true, this.options, opts ); - }; - } - - - // -------------------------- plugin bridge -------------------------- // - - // helper function for logging errors - // $.error breaks jQuery chaining - var logError = typeof console === 'undefined' ? noop : - function( message ) { - console.error( message ); - }; - - /** - * jQuery plugin bridge, access methods like $elem.plugin('method') - * @param {String} namespace - plugin name - * @param {Function} PluginClass - constructor class - */ - function bridge( namespace, PluginClass ) { - // add to jQuery fn namespace - $.fn[ namespace ] = function( options ) { - if ( typeof options === 'string' ) { - // call plugin method when first argument is a string - // get arguments for method - var args = slice.call( arguments, 1 ); - - for ( var i=0, len = this.length; i < len; i++ ) { - var elem = this[i]; - var instance = $.data( elem, namespace ); - if ( !instance ) { - logError( "cannot call methods on " + namespace + " prior to initialization; " + - "attempted to call '" + options + "'" ); - continue; - } - if ( !$.isFunction( instance[options] ) || options.charAt(0) === '_' ) { - logError( "no such method '" + options + "' for " + namespace + " instance" ); - continue; - } - - // trigger method with arguments - var returnValue = instance[ options ].apply( instance, args); - - // break look and return first value if provided - if ( returnValue !== undefined && returnValue !== instance) { - return returnValue; - } - } - // return this if no return value - return this; - } else { - var objects = this.map( function() { - var instance = $.data( this, namespace ); - if ( instance ) { - // apply options & init - instance.option( options ); - instance._init(); - } else { - // initialize new instance - instance = new PluginClass( this, options ); - $.data( this, namespace, instance ); - } - return $(this); - }); - - if(!objects || objects.length > 1) { - return objects; - } else { - return objects[0]; - } - } - }; - - } - - // -------------------------- bridget -------------------------- // - - /** - * converts a Prototypical class into a proper jQuery plugin - * the class must have a ._init method - * @param {String} namespace - plugin name, used in $().pluginName - * @param {Function} PluginClass - constructor class - */ - $.bridget = function( namespace, PluginClass ) { - addOptionMethod( PluginClass ); - bridge( namespace, PluginClass ); - }; - - return $.bridget; - - } - - // get jquery from browser global - defineBridget( $ ); - - })( $ ); - - - /************************************************* - - BOOTSTRAP-SLIDER SOURCE CODE - - **************************************************/ - - (function( $ ) { - - var ErrorMsgs = { - formatInvalidInputErrorMsg : function(input) { - return "Invalid input value '" + input + "' passed in"; - }, - callingContextNotSliderInstance : "Calling context element does not have instance of Slider bound to it. Check your code to make sure the JQuery object returned from the call to the slider() initializer is calling the method" - }; - - - - /************************************************* - - CONSTRUCTOR - - **************************************************/ - var Slider = function(element, options) { - createNewSlider.call(this, element, options); - return this; - }; - - function createNewSlider(element, options) { - /************************************************* - - Create Markup - - **************************************************/ - if(typeof element === "string") { - this.element = document.querySelector(element); - } else if(element instanceof HTMLElement) { - this.element = element; - } - - var origWidth = this.element.style.width; - var updateSlider = false; - var parent = this.element.parentNode; - var sliderTrackSelection; - var sliderMinHandle; - var sliderMaxHandle; - - if (this.sliderElem) { - updateSlider = true; - } else { - /* Create elements needed for slider */ - this.sliderElem = document.createElement("div"); - this.sliderElem.className = "slider"; - - /* Create slider track elements */ - var sliderTrack = document.createElement("div"); - sliderTrack.className = "slider-track"; - - sliderTrackSelection = document.createElement("div"); - sliderTrackSelection.className = "slider-selection"; - - sliderMinHandle = document.createElement("div"); - sliderMinHandle.className = "slider-handle min-slider-handle"; - - sliderMaxHandle = document.createElement("div"); - sliderMaxHandle.className = "slider-handle max-slider-handle"; - - sliderTrack.appendChild(sliderTrackSelection); - sliderTrack.appendChild(sliderMinHandle); - sliderTrack.appendChild(sliderMaxHandle); - - var createAndAppendTooltipSubElements = function(tooltipElem) { - var arrow = document.createElement("div"); - arrow.className = "tooltip-arrow"; - - var inner = document.createElement("div"); - inner.className = "tooltip-inner"; - - tooltipElem.appendChild(arrow); - tooltipElem.appendChild(inner); - }; - - /* Create tooltip elements */ - var sliderTooltip = document.createElement("div"); - sliderTooltip.className = "tooltip tooltip-main"; - createAndAppendTooltipSubElements(sliderTooltip); - - var sliderTooltipMin = document.createElement("div"); - sliderTooltipMin.className = "tooltip tooltip-min"; - createAndAppendTooltipSubElements(sliderTooltipMin); - - var sliderTooltipMax = document.createElement("div"); - sliderTooltipMax.className = "tooltip tooltip-max"; - createAndAppendTooltipSubElements(sliderTooltipMax); - - - /* Append components to sliderElem */ - this.sliderElem.appendChild(sliderTrack); - this.sliderElem.appendChild(sliderTooltip); - this.sliderElem.appendChild(sliderTooltipMin); - this.sliderElem.appendChild(sliderTooltipMax); - - /* Append slider element to parent container, right before the original <input> element */ - parent.insertBefore(this.sliderElem, this.element); - - /* Hide original <input> element */ - this.element.style.display = "none"; - } - /* If JQuery exists, cache JQ references */ - if($) { - this.$element = $(this.element); - this.$sliderElem = $(this.sliderElem); - } - - /************************************************* - - Process Options - - **************************************************/ - options = options ? options : {}; - var optionTypes = Object.keys(this.defaultOptions); - - for(var i = 0; i < optionTypes.length; i++) { - var optName = optionTypes[i]; - - // First check if an option was passed in via the constructor - var val = options[optName]; - // If no data attrib, then check data atrributes - val = (typeof val !== 'undefined') ? val : getDataAttrib(this.element, optName); - // Finally, if nothing was specified, use the defaults - val = (val !== null) ? val : this.defaultOptions[optName]; - - // Set all options on the instance of the Slider - if(!this.options) { - this.options = {}; - } - this.options[optName] = val; - } - - function getDataAttrib(element, optName) { - var dataName = "data-slider-" + optName; - var dataValString = element.getAttribute(dataName); - - try { - return JSON.parse(dataValString); - } - catch(err) { - return dataValString; - } - } - - /************************************************* - - Setup - - **************************************************/ - this.eventToCallbackMap = {}; - this.sliderElem.id = this.options.id; - - this.touchCapable = 'ontouchstart' in window || (window.DocumentTouch && document instanceof window.DocumentTouch); - - this.tooltip = this.sliderElem.querySelector('.tooltip-main'); - this.tooltipInner = this.tooltip.querySelector('.tooltip-inner'); - - this.tooltip_min = this.sliderElem.querySelector('.tooltip-min'); - this.tooltipInner_min = this.tooltip_min.querySelector('.tooltip-inner'); - - this.tooltip_max = this.sliderElem.querySelector('.tooltip-max'); - this.tooltipInner_max= this.tooltip_max.querySelector('.tooltip-inner'); - - if (updateSlider === true) { - // Reset classes - this._removeClass(this.sliderElem, 'slider-horizontal'); - this._removeClass(this.sliderElem, 'slider-vertical'); - this._removeClass(this.tooltip, 'hide'); - this._removeClass(this.tooltip_min, 'hide'); - this._removeClass(this.tooltip_max, 'hide'); - - // Undo existing inline styles for track - ["left", "top", "width", "height"].forEach(function(prop) { - this._removeProperty(this.trackSelection, prop); - }, this); - - // Undo inline styles on handles - [this.handle1, this.handle2].forEach(function(handle) { - this._removeProperty(handle, 'left'); - this._removeProperty(handle, 'top'); - }, this); - - // Undo inline styles and classes on tooltips - [this.tooltip, this.tooltip_min, this.tooltip_max].forEach(function(tooltip) { - this._removeProperty(tooltip, 'left'); - this._removeProperty(tooltip, 'top'); - this._removeProperty(tooltip, 'margin-left'); - this._removeProperty(tooltip, 'margin-top'); - - this._removeClass(tooltip, 'right'); - this._removeClass(tooltip, 'top'); - }, this); - } - - if(this.options.orientation === 'vertical') { - this._addClass(this.sliderElem,'slider-vertical'); - - this.stylePos = 'top'; - this.mousePos = 'pageY'; - this.sizePos = 'offsetHeight'; - - this._addClass(this.tooltip, 'right'); - this.tooltip.style.left = '100%'; - - this._addClass(this.tooltip_min, 'right'); - this.tooltip_min.style.left = '100%'; - - this._addClass(this.tooltip_max, 'right'); - this.tooltip_max.style.left = '100%'; - } else { - this._addClass(this.sliderElem, 'slider-horizontal'); - this.sliderElem.style.width = origWidth; - - this.options.orientation = 'horizontal'; - this.stylePos = 'left'; - this.mousePos = 'pageX'; - this.sizePos = 'offsetWidth'; - - this._addClass(this.tooltip, 'top'); - this.tooltip.style.top = -this.tooltip.outerHeight - 14 + 'px'; - - this._addClass(this.tooltip_min, 'top'); - this.tooltip_min.style.top = -this.tooltip_min.outerHeight - 14 + 'px'; - - this._addClass(this.tooltip_max, 'top'); - this.tooltip_max.style.top = -this.tooltip_max.outerHeight - 14 + 'px'; - } - - if (this.options.value instanceof Array) { - this.options.range = true; - } else if (this.options.range) { - // User wants a range, but value is not an array - this.options.value = [this.options.value, this.options.max]; - } - - this.trackSelection = sliderTrackSelection || this.trackSelection; - if (this.options.selection === 'none') { - this._addClass(this.trackSelection, 'hide'); - } - - this.handle1 = sliderMinHandle || this.handle1; - this.handle2 = sliderMaxHandle || this.handle2; - - if (updateSlider === true) { - // Reset classes - this._removeClass(this.handle1, 'round triangle'); - this._removeClass(this.handle2, 'round triangle hide'); - } - - var availableHandleModifiers = ['round', 'triangle', 'custom']; - var isValidHandleType = availableHandleModifiers.indexOf(this.options.handle) !== -1; - if (isValidHandleType) { - this._addClass(this.handle1, this.options.handle); - this._addClass(this.handle2, this.options.handle); - } - - this.offset = this._offset(this.sliderElem); - this.size = this.sliderElem[this.sizePos]; - this.setValue(this.options.value); - - /****************************************** - - Bind Event Listeners - - ******************************************/ - - // Bind keyboard handlers - this.handle1Keydown = this._keydown.bind(this, 0); - this.handle1.addEventListener("keydown", this.handle1Keydown, false); - - this.handle2Keydown = this._keydown.bind(this, 0); - this.handle2.addEventListener("keydown", this.handle2Keydown, false); - - if (this.touchCapable) { - // Bind touch handlers - this.mousedown = this._mousedown.bind(this); - this.sliderElem.addEventListener("touchstart", this.mousedown, false); - } else { - // Bind mouse handlers - this.mousedown = this._mousedown.bind(this); - this.sliderElem.addEventListener("mousedown", this.mousedown, false); - } - - // Bind tooltip-related handlers - if(this.options.tooltip === 'hide') { - this._addClass(this.tooltip, 'hide'); - this._addClass(this.tooltip_min, 'hide'); - this._addClass(this.tooltip_max, 'hide'); - } else if(this.options.tooltip === 'always') { - this._showTooltip(); - this._alwaysShowTooltip = true; - } else { - this.showTooltip = this._showTooltip.bind(this); - this.hideTooltip = this._hideTooltip.bind(this); - - this.sliderElem.addEventListener("mouseenter", this.showTooltip, false); - this.sliderElem.addEventListener("mouseleave", this.hideTooltip, false); - - this.handle1.addEventListener("focus", this.showTooltip, false); - this.handle1.addEventListener("blur", this.hideTooltip, false); - - this.handle2.addEventListener("focus", this.showTooltip, false); - this.handle2.addEventListener("blur", this.hideTooltip, false); - } - - if(this.options.enabled) { - this.enable(); - } else { - this.disable(); - } - } - - /************************************************* - - INSTANCE PROPERTIES/METHODS - - - Any methods bound to the prototype are considered - part of the plugin's `public` interface - - **************************************************/ - Slider.prototype = { - _init: function() {}, // NOTE: Must exist to support bridget - - constructor: Slider, - - defaultOptions: { - id: "", - min: 0, - max: 10, - step: 1, - precision: 0, - orientation: 'horizontal', - value: 5, - range: false, - selection: 'before', - tooltip: 'show', - tooltip_split: false, - handle: 'round', - reversed: false, - enabled: true, - formatter: function(val) { - if(val instanceof Array) { - return val[0] + " : " + val[1]; - } else { - return val; - } - }, - natural_arrow_keys: false - }, - - over: false, - - inDrag: false, - - getValue: function() { - if (this.options.range) { - return this.options.value; - } - return this.options.value[0]; - }, - - setValue: function(val, triggerSlideEvent) { - if (!val) { - val = 0; - } - this.options.value = this._validateInputValue(val); - var applyPrecision = this._applyPrecision.bind(this); - - if (this.options.range) { - this.options.value[0] = applyPrecision(this.options.value[0]); - this.options.value[1] = applyPrecision(this.options.value[1]); - - this.options.value[0] = Math.max(this.options.min, Math.min(this.options.max, this.options.value[0])); - this.options.value[1] = Math.max(this.options.min, Math.min(this.options.max, this.options.value[1])); - } else { - this.options.value = applyPrecision(this.options.value); - this.options.value = [ Math.max(this.options.min, Math.min(this.options.max, this.options.value))]; - this._addClass(this.handle2, 'hide'); - if (this.options.selection === 'after') { - this.options.value[1] = this.options.max; - } else { - this.options.value[1] = this.options.min; - } - } - - this.diff = this.options.max - this.options.min; - if (this.diff > 0) { - this.percentage = [ - (this.options.value[0] - this.options.min) * 100 / this.diff, - (this.options.value[1] - this.options.min) * 100 / this.diff, - this.options.step * 100 / this.diff - ]; - } else { - this.percentage = [0, 0, 100]; - } - - this._layout(); - - var sliderValue = this.options.range ? this.options.value : this.options.value[0]; - this._setDataVal(sliderValue); - - if(triggerSlideEvent === true) { - this._trigger('slide', sliderValue); - } - - return this; - }, - - destroy: function(){ - // Remove event handlers on slider elements - this._removeSliderEventHandlers(); - - // Remove the slider from the DOM - this.sliderElem.parentNode.removeChild(this.sliderElem); - /* Show original <input> element */ - this.element.style.display = ""; - - // Clear out custom event bindings - this._cleanUpEventCallbacksMap(); - - // Remove data values - this.element.removeAttribute("data"); - - // Remove JQuery handlers/data - if($) { - this._unbindJQueryEventHandlers(); - this.$element.removeData('slider'); - } - }, - - disable: function() { - this.options.enabled = false; - this.handle1.removeAttribute("tabindex"); - this.handle2.removeAttribute("tabindex"); - this._addClass(this.sliderElem, 'slider-disabled'); - this._trigger('slideDisabled'); - - return this; - }, - - enable: function() { - this.options.enabled = true; - this.handle1.setAttribute("tabindex", 0); - this.handle2.setAttribute("tabindex", 0); - this._removeClass(this.sliderElem, 'slider-disabled'); - this._trigger('slideEnabled'); - - return this; - }, - - toggle: function() { - if(this.options.enabled) { - this.disable(); - } else { - this.enable(); - } - - return this; - }, - - isEnabled: function() { - return this.options.enabled; - }, - - on: function(evt, callback) { - if($) { - this.$element.on(evt, callback); - this.$sliderElem.on(evt, callback); - } else { - this._bindNonQueryEventHandler(evt, callback); - } - return this; - }, - - getAttribute: function(attribute) { - if(attribute) { - return this.options[attribute]; - } else { - return this.options; - } - }, - - setAttribute: function(attribute, value) { - this.options[attribute] = value; - return this; - }, - - refresh: function() { - this._removeSliderEventHandlers(); - createNewSlider.call(this, this.element, this.options); - if($) { - // Bind new instance of slider to the element - $.data(this.element, 'slider', this); - } - return this; - }, - - /******************************+ - - HELPERS - - - Any method that is not part of the public interface. - - Place it underneath this comment block and write its signature like so: - - _fnName : function() {...} - - ********************************/ - _removeSliderEventHandlers: function() { - // Remove event listeners from handle1 - this.handle1.removeEventListener("keydown", this.handle1Keydown, false); - this.handle1.removeEventListener("focus", this.showTooltip, false); - this.handle1.removeEventListener("blur", this.hideTooltip, false); - - // Remove event listeners from handle2 - this.handle2.removeEventListener("keydown", this.handle2Keydown, false); - this.handle2.removeEventListener("focus", this.handle2Keydown, false); - this.handle2.removeEventListener("blur", this.handle2Keydown, false); - - // Remove event listeners from sliderElem - this.sliderElem.removeEventListener("mouseenter", this.showTooltip, false); - this.sliderElem.removeEventListener("mouseleave", this.hideTooltip, false); - this.sliderElem.removeEventListener("touchstart", this.mousedown, false); - this.sliderElem.removeEventListener("mousedown", this.mousedown, false); - }, - _bindNonQueryEventHandler: function(evt, callback) { - if(this.eventToCallbackMap[evt]===undefined) { - this.eventToCallbackMap[evt] = []; - } - this.eventToCallbackMap[evt].push(callback); - }, - _cleanUpEventCallbacksMap: function() { - var eventNames = Object.keys(this.eventToCallbackMap); - for(var i = 0; i < eventNames.length; i++) { - var eventName = eventNames[i]; - this.eventToCallbackMap[eventName] = null; - } - }, - _showTooltip: function() { - if (this.options.tooltip_split === false ){ - this._addClass(this.tooltip, 'in'); - } else { - this._addClass(this.tooltip_min, 'in'); - this._addClass(this.tooltip_max, 'in'); - } - this.over = true; - }, - _hideTooltip: function() { - if (this.inDrag === false && this.alwaysShowTooltip !== true) { - this._removeClass(this.tooltip, 'in'); - this._removeClass(this.tooltip_min, 'in'); - this._removeClass(this.tooltip_max, 'in'); - } - this.over = false; - }, - _layout: function() { - var positionPercentages; - - if(this.options.reversed) { - positionPercentages = [ 100 - this.percentage[0], this.percentage[1] ]; - } else { - positionPercentages = [ this.percentage[0], this.percentage[1] ]; - } - - this.handle1.style[this.stylePos] = positionPercentages[0]+'%'; - this.handle2.style[this.stylePos] = positionPercentages[1]+'%'; - - if (this.options.orientation === 'vertical') { - this.trackSelection.style.top = Math.min(positionPercentages[0], positionPercentages[1]) +'%'; - this.trackSelection.style.height = Math.abs(positionPercentages[0] - positionPercentages[1]) +'%'; - } else { - this.trackSelection.style.left = Math.min(positionPercentages[0], positionPercentages[1]) +'%'; - this.trackSelection.style.width = Math.abs(positionPercentages[0] - positionPercentages[1]) +'%'; - - var offset_min = this.tooltip_min.getBoundingClientRect(); - var offset_max = this.tooltip_max.getBoundingClientRect(); - - if (offset_min.right > offset_max.left) { - this._removeClass(this.tooltip_max, 'top'); - this._addClass(this.tooltip_max, 'bottom'); - this.tooltip_max.style.top = 18 + 'px'; - } else { - this._removeClass(this.tooltip_max, 'bottom'); - this._addClass(this.tooltip_max, 'top'); - this.tooltip_max.style.top = -30 + 'px'; - } - } - - - var formattedTooltipVal; - - if (this.options.range) { - formattedTooltipVal = this.options.formatter(this.options.value); - this._setText(this.tooltipInner, formattedTooltipVal); - this.tooltip.style[this.stylePos] = (positionPercentages[1] + positionPercentages[0])/2 + '%'; - - if (this.options.orientation === 'vertical') { - this._css(this.tooltip, 'margin-top', -this.tooltip.offsetHeight / 2 + 'px'); - } else { - this._css(this.tooltip, 'margin-left', -this.tooltip.offsetWidth / 2 + 'px'); - } - - if (this.options.orientation === 'vertical') { - this._css(this.tooltip, 'margin-top', -this.tooltip.offsetHeight / 2 + 'px'); - } else { - this._css(this.tooltip, 'margin-left', -this.tooltip.offsetWidth / 2 + 'px'); - } - - var innerTooltipMinText = this.options.formatter(this.options.value[0]); - this._setText(this.tooltipInner_min, innerTooltipMinText); - - var innerTooltipMaxText = this.options.formatter(this.options.value[1]); - this._setText(this.tooltipInner_max, innerTooltipMaxText); - - this.tooltip_min.style[this.stylePos] = positionPercentages[0] + '%'; - - if (this.options.orientation === 'vertical') { - this._css(this.tooltip_min, 'margin-top', -this.tooltip_min.offsetHeight / 2 + 'px'); - } else { - this._css(this.tooltip_min, 'margin-left', -this.tooltip_min.offsetWidth / 2 + 'px'); - } - - this.tooltip_max.style[this.stylePos] = positionPercentages[1] + '%'; - - if (this.options.orientation === 'vertical') { - this._css(this.tooltip_max, 'margin-top', -this.tooltip_max.offsetHeight / 2 + 'px'); - } else { - this._css(this.tooltip_max, 'margin-left', -this.tooltip_max.offsetWidth / 2 + 'px'); - } - } else { - formattedTooltipVal = this.options.formatter(this.options.value[0]); - this._setText(this.tooltipInner, formattedTooltipVal); - - this.tooltip.style[this.stylePos] = positionPercentages[0] + '%'; - if (this.options.orientation === 'vertical') { - this._css(this.tooltip, 'margin-top', -this.tooltip.offsetHeight / 2 + 'px'); - } else { - this._css(this.tooltip, 'margin-left', -this.tooltip.offsetWidth / 2 + 'px'); - } - } - }, - _removeProperty: function(element, prop) { - if (element.style.removeProperty) { - element.style.removeProperty(prop); - } else { - element.style.removeAttribute(prop); - } - }, - _mousedown: function(ev) { - if(!this.options.enabled) { - return false; - } - - this._triggerFocusOnHandle(); - - this.offset = this._offset(this.sliderElem); - this.size = this.sliderElem[this.sizePos]; - - var percentage = this._getPercentage(ev); - - if (this.options.range) { - var diff1 = Math.abs(this.percentage[0] - percentage); - var diff2 = Math.abs(this.percentage[1] - percentage); - this.dragged = (diff1 < diff2) ? 0 : 1; - } else { - this.dragged = 0; - } - - this.percentage[this.dragged] = this.options.reversed ? 100 - percentage : percentage; - this._layout(); - - this.mousemove = this._mousemove.bind(this); - this.mouseup = this._mouseup.bind(this); - - if (this.touchCapable) { - // Touch: Bind touch events: - document.addEventListener("touchmove", this.mousemove, false); - document.addEventListener("touchend", this.mouseup, false); - } else { - // Bind mouse events: - document.addEventListener("mousemove", this.mousemove, false); - document.addEventListener("mouseup", this.mouseup, false); - } - - this.inDrag = true; - - var val = this._calculateValue(); - this._trigger('slideStart', val); - this._setDataVal(val); - this.setValue(val); - - this._pauseEvent(ev); - - return true; - }, - _triggerFocusOnHandle: function(handleIdx) { - if(handleIdx === 0) { - this.handle1.focus(); - } - if(handleIdx === 1) { - this.handle2.focus(); - } - }, - _keydown: function(handleIdx, ev) { - if(!this.options.enabled) { - return false; - } - - var dir; - switch (ev.keyCode) { - case 37: // left - case 40: // down - dir = -1; - break; - case 39: // right - case 38: // up - dir = 1; - break; - } - if (!dir) { - return; - } - - // use natural arrow keys instead of from min to max - if (this.options.natural_arrow_keys) { - var ifVerticalAndNotReversed = (this.options.orientation === 'vertical' && !this.options.reversed); - var ifHorizontalAndReversed = (this.options.orientation === 'horizontal' && this.options.reversed); - - if (ifVerticalAndNotReversed || ifHorizontalAndReversed) { - dir = dir * -1; - } - } - - var oneStepValuePercentageChange = dir * this.percentage[2]; - var percentage = this.percentage[handleIdx] + oneStepValuePercentageChange; - - if (percentage > 100) { - percentage = 100; - } else if (percentage < 0) { - percentage = 0; - } - - this.dragged = handleIdx; - this._adjustPercentageForRangeSliders(percentage); - this.percentage[this.dragged] = percentage; - this._layout(); - - var val = this._calculateValue(); - - this._trigger('slideStart', val); - this._setDataVal(val); - this.setValue(val, true); - - this._trigger('slideStop', val); - this._setDataVal(val); - - this._pauseEvent(ev); - - return false; - }, - _pauseEvent: function(ev) { - if(ev.stopPropagation) { - ev.stopPropagation(); - } - if(ev.preventDefault) { - ev.preventDefault(); - } - ev.cancelBubble=true; - ev.returnValue=false; - }, - _mousemove: function(ev) { - if(!this.options.enabled) { - return false; - } - - var percentage = this._getPercentage(ev); - this._adjustPercentageForRangeSliders(percentage); - this.percentage[this.dragged] = this.options.reversed ? 100 - percentage : percentage; - this._layout(); - - var val = this._calculateValue(); - this.setValue(val, true); - - return false; - }, - _adjustPercentageForRangeSliders: function(percentage) { - if (this.options.range) { - if (this.dragged === 0 && this.percentage[1] < percentage) { - this.percentage[0] = this.percentage[1]; - this.dragged = 1; - } else if (this.dragged === 1 && this.percentage[0] > percentage) { - this.percentage[1] = this.percentage[0]; - this.dragged = 0; - } - } - }, - _mouseup: function() { - if(!this.options.enabled) { - return false; - } - if (this.touchCapable) { - // Touch: Unbind touch event handlers: - document.removeEventListener("touchmove", this.mousemove, false); - document.removeEventListener("touchend", this.mouseup, false); - } else { - // Unbind mouse event handlers: - document.removeEventListener("mousemove", this.mousemove, false); - document.removeEventListener("mouseup", this.mouseup, false); - } - - this.inDrag = false; - if (this.over === false) { - this._hideTooltip(); - } - var val = this._calculateValue(); - - this._layout(); - this._setDataVal(val); - this._trigger('slideStop', val); - - return false; - }, - _calculateValue: function() { - var val; - if (this.options.range) { - val = [this.options.min,this.options.max]; - if (this.percentage[0] !== 0){ - val[0] = (Math.max(this.options.min, this.options.min + Math.round((this.diff * this.percentage[0]/100)/this.options.step)*this.options.step)); - val[0] = this._applyPrecision(val[0]); - } - if (this.percentage[1] !== 100){ - val[1] = (Math.min(this.options.max, this.options.min + Math.round((this.diff * this.percentage[1]/100)/this.options.step)*this.options.step)); - val[1] = this._applyPrecision(val[1]); - } - this.options.value = val; - } else { - val = (this.options.min + Math.round((this.diff * this.percentage[0]/100)/this.options.step)*this.options.step); - if (val < this.options.min) { - val = this.options.min; - } - else if (val > this.options.max) { - val = this.options.max; - } - val = parseFloat(val); - val = this._applyPrecision(val); - this.options.value = [val, this.options.value[1]]; - } - return val; - }, - _applyPrecision: function(val) { - var precision = this.options.precision || this._getNumDigitsAfterDecimalPlace(this.step); - return this._applyToFixedAndParseFloat(val, precision); - }, - _getNumDigitsAfterDecimalPlace: function(num) { - var match = (''+num).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/); - if (!match) { return 0; } - return Math.max(0, (match[1] ? match[1].length : 0) - (match[2] ? +match[2] : 0)); - }, - _applyToFixedAndParseFloat: function(num, toFixedInput) { - var truncatedNum = num.toFixed(toFixedInput); - return parseFloat(truncatedNum); - }, - /* - Credits to Mike Samuel for the following method! - Source: http://stackoverflow.com/questions/10454518/javascript-how-to-retrieve-the-number-of-decimals-of-a-string-number - */ - _getPercentage: function(ev) { - if (this.touchCapable && (ev.type === 'touchstart' || ev.type === 'touchmove')) { - ev = ev.touches[0]; - } - var percentage = (ev[this.mousePos] - this.offset[this.stylePos])*100/this.size; - percentage = Math.round(percentage/this.percentage[2])*this.percentage[2]; - return Math.max(0, Math.min(100, percentage)); - }, - _validateInputValue: function(val) { - if(typeof val === 'number') { - return val; - } else if(val instanceof Array) { - this._validateArray(val); - return val; - } else { - throw new Error( ErrorMsgs.formatInvalidInputErrorMsg(val) ); - } - }, - _validateArray: function(val) { - for(var i = 0; i < val.length; i++) { - var input = val[i]; - if (typeof input !== 'number') { throw new Error( ErrorMsgs.formatInvalidInputErrorMsg(input) ); } - } - }, - _setDataVal: function(val) { - var value = "value: '" + val + "'"; - this.element.setAttribute('data', value); - this.element.setAttribute('value', val); - }, - _trigger: function(evt, val) { - val = val || undefined; - - var callbackFnArray = this.eventToCallbackMap[evt]; - if(callbackFnArray && callbackFnArray.length) { - for(var i = 0; i < callbackFnArray.length; i++) { - var callbackFn = callbackFnArray[i]; - callbackFn(val); - } - } - - /* If JQuery exists, trigger JQuery events */ - if($) { - this._triggerJQueryEvent(evt, val); - } - }, - _triggerJQueryEvent: function(evt, val) { - var eventData = { - type: evt, - value: val - }; - this.$element.trigger(eventData); - this.$sliderElem.trigger(eventData); - }, - _unbindJQueryEventHandlers: function() { - this.$element.off(); - this.$sliderElem.off(); - }, - _setText: function(element, text) { - if(typeof element.innerText !== "undefined") { - element.innerText = text; - } else if(typeof element.textContent !== "undefined") { - element.textContent = text; - } - }, - _removeClass: function(element, classString) { - var classes = classString.split(" "); - var newClasses = element.className; - - for(var i = 0; i < classes.length; i++) { - var classTag = classes[i]; - var regex = new RegExp("(?:\\s|^)" + classTag + "(?:\\s|$)"); - newClasses = newClasses.replace(regex, " "); - } - - element.className = newClasses.trim(); - }, - _addClass: function(element, classString) { - var classes = classString.split(" "); - var newClasses = element.className; - - for(var i = 0; i < classes.length; i++) { - var classTag = classes[i]; - var regex = new RegExp("(?:\\s|^)" + classTag + "(?:\\s|$)"); - var ifClassExists = regex.test(newClasses); - - if(!ifClassExists) { - newClasses += " " + classTag; - } - } - - element.className = newClasses.trim(); - }, - _offset: function (obj) { - var ol = 0; - var ot = 0; - if (obj.offsetParent) { - do { - ol += obj.offsetLeft; - ot += obj.offsetTop; - } while (obj = obj.offsetParent); - } - return { - left: ol, - top: ot - }; - }, - _css: function(elementRef, styleName, value) { - elementRef.style[styleName] = value; - } - }; - - /********************************* - - Attach to global namespace - - *********************************/ - if($) { - var namespace = $.fn.slider ? 'bootstrapSlider' : 'slider'; - $.bridget(namespace, Slider); - } else { - window.Slider = Slider; - } - - - })( $ ); - -})( window.jQuery ); \ No newline at end of file diff --git a/assets/plugins/bootstrap-slider/slider.css b/assets/plugins/bootstrap-slider/slider.css deleted file mode 100644 index a96db7fb..00000000 --- a/assets/plugins/bootstrap-slider/slider.css +++ /dev/null @@ -1,169 +0,0 @@ -/*! - * Slider for Bootstrap - * - * Copyright 2012 Stefan Petre - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - */ -.slider { - display: block; - vertical-align: middle; - position: relative; - -} -.slider.slider-horizontal { - width: 100%; - height: 20px; - margin-bottom: 20px; -} -.slider.slider-horizontal:last-of-type { - margin-bottom: 0; -} -.slider.slider-horizontal .slider-track { - height: 10px; - width: 100%; - margin-top: -5px; - top: 50%; - left: 0; -} -.slider.slider-horizontal .slider-selection { - height: 100%; - top: 0; - bottom: 0; -} -.slider.slider-horizontal .slider-handle { - margin-left: -10px; - margin-top: -5px; -} -.slider.slider-horizontal .slider-handle.triangle { - border-width: 0 10px 10px 10px; - width: 0; - height: 0; - border-bottom-color: #0480be; - margin-top: 0; -} -.slider.slider-vertical { - height: 230px; - width: 20px; - margin-right: 20px; - display: inline-block; -} -.slider.slider-vertical:last-of-type { - margin-right: 0; -} -.slider.slider-vertical .slider-track { - width: 10px; - height: 100%; - margin-left: -5px; - left: 50%; - top: 0; -} -.slider.slider-vertical .slider-selection { - width: 100%; - left: 0; - top: 0; - bottom: 0; -} -.slider.slider-vertical .slider-handle { - margin-left: -5px; - margin-top: -10px; -} -.slider.slider-vertical .slider-handle.triangle { - border-width: 10px 0 10px 10px; - width: 1px; - height: 1px; - border-left-color: #0480be; - margin-left: 0; -} -.slider input { - display: none; -} -.slider .tooltip-inner { - white-space: nowrap; -} -.slider-track { - position: absolute; - cursor: pointer; - background-color: #f7f7f7; - background-image: -moz-linear-gradient(top, #f0f0f0, #f9f9f9); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f0f0f0), to(#f9f9f9)); - background-image: -webkit-linear-gradient(top, #f0f0f0, #f9f9f9); - background-image: -o-linear-gradient(top, #f0f0f0, #f9f9f9); - background-image: linear-gradient(to bottom, #f0f0f0, #f9f9f9); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0f0f0', endColorstr='#fff9f9f9', GradientType=0); - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.slider-selection { - position: absolute; - background-color: #f7f7f7; - background-image: -moz-linear-gradient(top, #f9f9f9, #f5f5f5); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f9f9f9), to(#f5f5f5)); - background-image: -webkit-linear-gradient(top, #f9f9f9, #f5f5f5); - background-image: -o-linear-gradient(top, #f9f9f9, #f5f5f5); - background-image: linear-gradient(to bottom, #f9f9f9, #f5f5f5); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9', endColorstr='#fff5f5f5', GradientType=0); - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.slider-handle { - position: absolute; - width: 20px; - height: 20px; - background-color: #444; - -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); - -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); - box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); - opacity: 1; - border: 0px solid transparent; -} -.slider-handle.round { - -webkit-border-radius: 20px; - -moz-border-radius: 20px; - border-radius: 20px; -} -.slider-handle.triangle { - background: transparent none; -} - -.slider-disabled .slider-selection { - opacity: 0.5; -} - -#red .slider-selection { - background: #f56954; -} - -#blue .slider-selection { - background: #3c8dbc; -} - -#green .slider-selection { - background: #00a65a; -} - -#yellow .slider-selection { - background: #f39c12; -} - -#aqua .slider-selection { - background: #00c0ef; -} - -#purple .slider-selection { - background: #932ab6; -} \ No newline at end of file diff --git a/assets/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.min.js b/assets/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.min.js deleted file mode 100644 index 627b7764..00000000 --- a/assets/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! bootstrap3-wysihtml5-bower 2013-11-22 */ -var wysihtml5={version:"0.3.0",commands:{},dom:{},quirks:{},toolbar:{},lang:{},selection:{},views:{},INVISIBLE_SPACE:"",EMPTY_FUNCTION:function(){},ELEMENT_NODE:1,TEXT_NODE:3,BACKSPACE_KEY:8,ENTER_KEY:13,ESCAPE_KEY:27,SPACE_KEY:32,DELETE_KEY:46};window.rangy=function(){function a(a,b){var c=typeof a[b];return c==j||!(c!=i||!a[b])||"unknown"==c}function b(a,b){return!(typeof a[b]!=i||!a[b])}function c(a,b){return typeof a[b]!=k}function d(a){return function(b,c){for(var d=c.length;d--;)if(!a(b,c[d]))return!1;return!0}}function e(a){return a&&p(a,o)&&r(a,n)}function f(a){window.alert("Rangy not supported in your browser. Reason: "+a),s.initialized=!0,s.supported=!1}function g(){if(!s.initialized){var c,d=!1,g=!1;for(a(document,"createRange")&&(c=document.createRange(),p(c,m)&&r(c,l)&&(d=!0),c.detach()),(c=b(document,"body")?document.body:document.getElementsByTagName("body")[0])&&a(c,"createTextRange")&&(c=c.createTextRange(),e(c)&&(g=!0)),!d&&!g&&f("Neither Range nor TextRange are implemented"),s.initialized=!0,s.features={implementsDomRange:d,implementsTextRange:g},d=u.concat(t),g=0,c=d.length;c>g;++g)try{d[g](s)}catch(h){b(window,"console")&&a(window.console,"log")&&window.console.log("Init listener threw an exception. Continuing.",h)}}}function h(a){this.name=a,this.supported=this.initialized=!1}var i="object",j="function",k="undefined",l="startContainer startOffset endContainer endOffset collapsed commonAncestorContainer START_TO_START START_TO_END END_TO_START END_TO_END".split(" "),m="setStart setStartBefore setStartAfter setEnd setEndBefore setEndAfter collapse selectNode selectNodeContents compareBoundaryPoints deleteContents extractContents cloneContents insertNode surroundContents cloneRange toString detach".split(" "),n="boundingHeight boundingLeft boundingTop boundingWidth htmlText text".split(" "),o="collapse compareEndPoints duplicate getBookmark moveToBookmark moveToElementText parentElement pasteHTML select setEndPoint getBoundingClientRect".split(" "),p=d(a),q=d(b),r=d(c),s={version:"1.2.2",initialized:!1,supported:!0,util:{isHostMethod:a,isHostObject:b,isHostProperty:c,areHostMethods:p,areHostObjects:q,areHostProperties:r,isTextRange:e},features:{},modules:{},config:{alertOnWarn:!1,preferTextRange:!1}};s.fail=f,s.warn=function(a){a="Rangy warning: "+a,s.config.alertOnWarn?window.alert(a):typeof window.console!=k&&typeof window.console.log!=k&&window.console.log(a)},{}.hasOwnProperty?s.util.extend=function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])}:f("hasOwnProperty not supported");var t=[],u=[];s.init=g,s.addInitListener=function(a){s.initialized?a(s):t.push(a)};var v=[];s.addCreateMissingNativeApiListener=function(a){v.push(a)},s.createMissingNativeApi=function(a){a=a||window,g();for(var b=0,c=v.length;c>b;++b)v[b](a)},h.prototype.fail=function(a){throw this.initialized=!0,this.supported=!1,Error("Module '"+this.name+"' failed to load: "+a)},h.prototype.warn=function(a){s.warn("Module "+this.name+": "+a)},h.prototype.createError=function(a){return Error("Error in Rangy "+this.name+" module: "+a)},s.createModule=function(a,b){var c=new h(a);s.modules[a]=c,u.push(function(a){b(a,c),c.initialized=!0,c.supported=!0})},s.requireModules=function(a){for(var b,c,d=0,e=a.length;e>d;++d){if(c=a[d],b=s.modules[c],!(b&&b instanceof h))throw Error("Module '"+c+"' not found");if(!b.supported)throw Error("Module '"+c+"' not supported")}};var w=!1,q=function(){w||(w=!0,s.initialized||g())};if(typeof window==k)f("No window found");else{if(typeof document!=k)return a(document,"addEventListener")&&document.addEventListener("DOMContentLoaded",q,!1),a(window,"addEventListener")?window.addEventListener("load",q,!1):a(window,"attachEvent")?window.attachEvent("onload",q):f("Window does not have required addEventListener or attachEvent method"),s;f("No document found")}}(),rangy.createModule("DomUtil",function(a,b){function c(a){for(var b=0;a=a.previousSibling;)b++;return b}function d(a,b){var c,d=[];for(c=a;c;c=c.parentNode)d.push(c);for(c=b;c;c=c.parentNode)if(p(d,c))return c;return null}function e(a,b,c){for(c=c?a:a.parentNode;c;){if(a=c.parentNode,a===b)return c;c=a}return null}function f(a){return a=a.nodeType,3==a||4==a||8==a}function g(a,b){var c=b.nextSibling,d=b.parentNode;return c?d.insertBefore(a,c):d.appendChild(a),a}function h(a){if(9==a.nodeType)return a;if(typeof a.ownerDocument!=m)return a.ownerDocument;if(typeof a.document!=m)return a.document;if(a.parentNode)return h(a.parentNode);throw Error("getDocument: no document found for node")}function i(a){return a?f(a)?'"'+a.data+'"':1==a.nodeType?"<"+a.nodeName+(a.id?' id="'+a.id+'"':"")+">["+a.childNodes.length+"]":a.nodeName:"[No node]"}function j(a){this._next=this.root=a}function k(a,b){this.node=a,this.offset=b}function l(a){this.code=this[a],this.codeName=a,this.message="DOMException: "+this.codeName}var m="undefined",n=a.util;n.areHostMethods(document,["createDocumentFragment","createElement","createTextNode"])||b.fail("document missing a Node creation method"),n.isHostMethod(document,"getElementsByTagName")||b.fail("document missing getElementsByTagName method");var o=document.createElement("div");n.areHostMethods(o,["insertBefore","appendChild","cloneNode"])||b.fail("Incomplete Element implementation"),n.isHostProperty(o,"innerHTML")||b.fail("Element is missing innerHTML property"),o=document.createTextNode("test"),n.areHostMethods(o,["splitText","deleteData","insertData","appendData","cloneNode"])||b.fail("Incomplete Text Node implementation");var p=function(a,b){for(var c=a.length;c--;)if(a[c]===b)return!0;return!1};j.prototype={_current:null,hasNext:function(){return!!this._next},next:function(){var a,b=this._current=this._next;if(this._current){if(a=b.firstChild,!a)for(a=null;b!==this.root&&!(a=b.nextSibling);)b=b.parentNode;this._next=a}return this._current},detach:function(){this._current=this._next=this.root=null}},k.prototype={equals:function(a){return this.node===a.node&this.offset==a.offset},inspect:function(){return"[DomPosition("+i(this.node)+":"+this.offset+")]"}},l.prototype={INDEX_SIZE_ERR:1,HIERARCHY_REQUEST_ERR:3,WRONG_DOCUMENT_ERR:4,NO_MODIFICATION_ALLOWED_ERR:7,NOT_FOUND_ERR:8,NOT_SUPPORTED_ERR:9,INVALID_STATE_ERR:11},l.prototype.toString=function(){return this.message},a.dom={arrayContains:p,isHtmlNamespace:function(a){var b;return typeof a.namespaceURI==m||null===(b=a.namespaceURI)||"http://www.w3.org/1999/xhtml"==b},parentElement:function(a){return a=a.parentNode,1==a.nodeType?a:null},getNodeIndex:c,getNodeLength:function(a){var b;return f(a)?a.length:(b=a.childNodes)?b.length:0},getCommonAncestor:d,isAncestorOf:function(a,b,c){for(b=c?b:b.parentNode;b;){if(b===a)return!0;b=b.parentNode}return!1},getClosestAncestorIn:e,isCharacterDataNode:f,insertAfter:g,splitDataNode:function(a,b){var c=a.cloneNode(!1);return c.deleteData(0,b),a.deleteData(b,a.length-b),g(c,a),c},getDocument:h,getWindow:function(a){if(a=h(a),typeof a.defaultView!=m)return a.defaultView;if(typeof a.parentWindow!=m)return a.parentWindow;throw Error("Cannot get a window object for node")},getIframeWindow:function(a){if(typeof a.contentWindow!=m)return a.contentWindow;if(typeof a.contentDocument!=m)return a.contentDocument.defaultView;throw Error("getIframeWindow: No Window object found for iframe element")},getIframeDocument:function(a){if(typeof a.contentDocument!=m)return a.contentDocument;if(typeof a.contentWindow!=m)return a.contentWindow.document;throw Error("getIframeWindow: No Document object found for iframe element")},getBody:function(a){return n.isHostObject(a,"body")?a.body:a.getElementsByTagName("body")[0]},getRootContainer:function(a){for(var b;b=a.parentNode;)a=b;return a},comparePoints:function(a,b,f,g){var h;if(a==f)return b===g?0:g>b?-1:1;if(h=e(f,a,!0))return b<=c(h)?-1:1;if(h=e(a,f,!0))return c(h)<g?-1:1;if(b=d(a,f),a=a===b?b:e(a,b,!0),f=f===b?b:e(f,b,!0),a===f)throw Error("comparePoints got to case 4 and childA and childB are the same!");for(b=b.firstChild;b;){if(b===a)return-1;if(b===f)return 1;b=b.nextSibling}throw Error("Should not be here!")},inspectNode:i,fragmentFromNodeChildren:function(a){for(var b,c=h(a).createDocumentFragment();b=a.firstChild;)c.appendChild(b);return c},createIterator:function(a){return new j(a)},DomPosition:k},a.DOMException=l}),rangy.createModule("DomRange",function(a){function b(a,b){return 3!=a.nodeType&&(H.isAncestorOf(a,b.startContainer,!0)||H.isAncestorOf(a,b.endContainer,!0))}function c(a){return H.getDocument(a.startContainer)}function d(a,b,c){if(b=a._listeners[b])for(var d=0,e=b.length;e>d;++d)b[d].call(a,{target:a,args:c})}function e(a){return new I(a.parentNode,H.getNodeIndex(a))}function f(a){return new I(a.parentNode,H.getNodeIndex(a)+1)}function g(a,b,c){var d=11==a.nodeType?a.firstChild:a;return H.isCharacterDataNode(b)?c==b.length?H.insertAfter(a,b):b.parentNode.insertBefore(a,0==c?b:H.splitDataNode(b,c)):c>=b.childNodes.length?b.appendChild(a):b.insertBefore(a,b.childNodes[c]),d}function h(a){for(var b,d,e=c(a.range).createDocumentFragment();d=a.next();){if(b=a.isPartiallySelectedSubtree(),d=d.cloneNode(!b),b&&(b=a.getSubtreeIterator(),d.appendChild(h(b)),b.detach(!0)),10==d.nodeType)throw new J("HIERARCHY_REQUEST_ERR");e.appendChild(d)}return e}function i(a,b,c){for(var d,e,c=c||{stop:!1};d=a.next();)if(a.isPartiallySelectedSubtree()){if(!1===b(d)){c.stop=!0;break}if(d=a.getSubtreeIterator(),i(d,b,c),d.detach(!0),c.stop)break}else for(d=H.createIterator(d);e=d.next();)if(!1===b(e))return c.stop=!0,void 0}function j(a){for(var b;a.next();)a.isPartiallySelectedSubtree()?(b=a.getSubtreeIterator(),j(b),b.detach(!0)):a.remove()}function k(a){for(var b,d,e=c(a.range).createDocumentFragment();b=a.next();){if(a.isPartiallySelectedSubtree()?(b=b.cloneNode(!1),d=a.getSubtreeIterator(),b.appendChild(k(d)),d.detach(!0)):a.remove(),10==b.nodeType)throw new J("HIERARCHY_REQUEST_ERR");e.appendChild(b)}return e}function l(a,b,c){var d,e=!(!b||!b.length),f=!!c;e&&(d=RegExp("^("+b.join("|")+")$"));var g=[];return i(new n(a,!1),function(a){(!e||d.test(a.nodeType))&&(!f||c(a))&&g.push(a)}),g}function m(a){return"["+("undefined"==typeof a.getName?"Range":a.getName())+"("+H.inspectNode(a.startContainer)+":"+a.startOffset+", "+H.inspectNode(a.endContainer)+":"+a.endOffset+")]"}function n(a,b){if(this.range=a,this.clonePartiallySelectedTextNodes=b,!a.collapsed){this.sc=a.startContainer,this.so=a.startOffset,this.ec=a.endContainer,this.eo=a.endOffset;var c=a.commonAncestorContainer;this.sc===this.ec&&H.isCharacterDataNode(this.sc)?(this.isSingleCharacterDataNode=!0,this._first=this._last=this._next=this.sc):(this._first=this._next=this.sc!==c||H.isCharacterDataNode(this.sc)?H.getClosestAncestorIn(this.sc,c,!0):this.sc.childNodes[this.so],this._last=this.ec!==c||H.isCharacterDataNode(this.ec)?H.getClosestAncestorIn(this.ec,c,!0):this.ec.childNodes[this.eo-1])}}function o(a){this.code=this[a],this.codeName=a,this.message="RangeException: "+this.codeName}function p(a,b,c){this.nodes=l(a,b,c),this._next=this.nodes[0],this._position=0}function q(a){return function(b,c){for(var d,e=c?b:b.parentNode;e;){if(d=e.nodeType,H.arrayContains(a,d))return e;e=e.parentNode}return null}}function r(a,b){if(R(a,b))throw new o("INVALID_NODE_TYPE_ERR")}function s(a){if(!a.startContainer)throw new J("INVALID_STATE_ERR")}function t(a,b){if(!H.arrayContains(b,a.nodeType))throw new o("INVALID_NODE_TYPE_ERR")}function u(a,b){if(0>b||b>(H.isCharacterDataNode(a)?a.length:a.childNodes.length))throw new J("INDEX_SIZE_ERR")}function v(a,b){if(P(a,!0)!==P(b,!0))throw new J("WRONG_DOCUMENT_ERR")}function w(a){if(Q(a,!0))throw new J("NO_MODIFICATION_ALLOWED_ERR")}function x(a,b){if(!a)throw new J(b)}function y(a){if(s(a),!((H.arrayContains(L,a.startContainer.nodeType)||P(a.startContainer,!0))&&(H.arrayContains(L,a.endContainer.nodeType)||P(a.endContainer,!0))&&a.startOffset<=(H.isCharacterDataNode(a.startContainer)?a.startContainer.length:a.startContainer.childNodes.length)&&a.endOffset<=(H.isCharacterDataNode(a.endContainer)?a.endContainer.length:a.endContainer.childNodes.length)))throw Error("Range error: Range is no longer valid after DOM mutation ("+a.inspect()+")")}function z(){}function A(a){a.START_TO_START=W,a.START_TO_END=X,a.END_TO_END=Y,a.END_TO_START=Z,a.NODE_BEFORE=$,a.NODE_AFTER=_,a.NODE_BEFORE_AND_AFTER=ab,a.NODE_INSIDE=bb}function B(a){A(a),A(a.prototype)}function C(a,b){return function(){y(this);var c=this.startContainer,d=this.startOffset,e=this.commonAncestorContainer,g=new n(this,!0);return c!==e&&(c=H.getClosestAncestorIn(c,e,!0),d=f(c),c=d.node,d=d.offset),i(g,w),g.reset(),e=a(g),g.detach(),b(this,c,d,c,d),e}}function D(c,d,g){function h(a,b){return function(c){s(this),t(c,K),t(O(c),L),c=(a?e:f)(c),(b?i:l)(this,c.node,c.offset)}}function i(a,b,c){var e=a.endContainer,f=a.endOffset;(b!==a.startContainer||c!==a.startOffset)&&((O(b)!=O(e)||1==H.comparePoints(b,c,e,f))&&(e=b,f=c),d(a,b,c,e,f))}function l(a,b,c){var e=a.startContainer,f=a.startOffset;(b!==a.endContainer||c!==a.endOffset)&&((O(b)!=O(e)||-1==H.comparePoints(b,c,e,f))&&(e=b,f=c),d(a,e,f,b,c))}c.prototype=new z,a.util.extend(c.prototype,{setStart:function(a,b){s(this),r(a,!0),u(a,b),i(this,a,b)},setEnd:function(a,b){s(this),r(a,!0),u(a,b),l(this,a,b)},setStartBefore:h(!0,!0),setStartAfter:h(!1,!0),setEndBefore:h(!0,!1),setEndAfter:h(!1,!1),collapse:function(a){y(this),a?d(this,this.startContainer,this.startOffset,this.startContainer,this.startOffset):d(this,this.endContainer,this.endOffset,this.endContainer,this.endOffset)},selectNodeContents:function(a){s(this),r(a,!0),d(this,a,0,a,H.getNodeLength(a))},selectNode:function(a){s(this),r(a,!1),t(a,K);var b=e(a),a=f(a);d(this,b.node,b.offset,a.node,a.offset)},extractContents:C(k,d),deleteContents:C(j,d),canSurroundContents:function(){y(this),w(this.startContainer),w(this.endContainer);var a=new n(this,!0),c=a._first&&b(a._first,this)||a._last&&b(a._last,this);return a.detach(),!c},detach:function(){g(this)},splitBoundaries:function(){y(this);var a=this.startContainer,b=this.startOffset,c=this.endContainer,e=this.endOffset,f=a===c;H.isCharacterDataNode(c)&&e>0&&e<c.length&&H.splitDataNode(c,e),H.isCharacterDataNode(a)&&b>0&&b<a.length&&(a=H.splitDataNode(a,b),f?(e-=b,c=a):c==a.parentNode&&e>=H.getNodeIndex(a)&&e++,b=0),d(this,a,b,c,e)},normalizeBoundaries:function(){y(this);var a=this.startContainer,b=this.startOffset,c=this.endContainer,e=this.endOffset,f=function(a){var b=a.nextSibling;b&&b.nodeType==a.nodeType&&(c=a,e=a.length,a.appendData(b.data),b.parentNode.removeChild(b))},g=function(d){var f=d.previousSibling;if(f&&f.nodeType==d.nodeType){a=d;var g=d.length;b=f.length,d.insertData(0,f.data),f.parentNode.removeChild(f),a==c?(e+=b,c=a):c==d.parentNode&&(f=H.getNodeIndex(d),e==f?(c=d,e=g):e>f&&e--)}},h=!0;H.isCharacterDataNode(c)?c.length==e&&f(c):(e>0&&(h=c.childNodes[e-1])&&H.isCharacterDataNode(h)&&f(h),h=!this.collapsed),h?H.isCharacterDataNode(a)?0==b&&g(a):b<a.childNodes.length&&(f=a.childNodes[b])&&H.isCharacterDataNode(f)&&g(f):(a=c,b=e),d(this,a,b,c,e)},collapseToPoint:function(a,b){s(this),r(a,!0),u(a,b),(a!==this.startContainer||b!==this.startOffset||a!==this.endContainer||b!==this.endOffset)&&d(this,a,b,a,b)}}),B(c)}function E(a){a.collapsed=a.startContainer===a.endContainer&&a.startOffset===a.endOffset,a.commonAncestorContainer=a.collapsed?a.startContainer:H.getCommonAncestor(a.startContainer,a.endContainer)}function F(a,b,c,e,f){var g=a.startContainer!==b||a.startOffset!==c,h=a.endContainer!==e||a.endOffset!==f;a.startContainer=b,a.startOffset=c,a.endContainer=e,a.endOffset=f,E(a),d(a,"boundarychange",{startMoved:g,endMoved:h})}function G(a){this.startContainer=a,this.startOffset=0,this.endContainer=a,this.endOffset=0,this._listeners={boundarychange:[],detach:[]},E(this)}a.requireModules(["DomUtil"]);var H=a.dom,I=H.DomPosition,J=a.DOMException;n.prototype={_current:null,_next:null,_first:null,_last:null,isSingleCharacterDataNode:!1,reset:function(){this._current=null,this._next=this._first},hasNext:function(){return!!this._next},next:function(){var a=this._current=this._next;return a&&(this._next=a!==this._last?a.nextSibling:null,H.isCharacterDataNode(a)&&this.clonePartiallySelectedTextNodes&&(a===this.ec&&(a=a.cloneNode(!0)).deleteData(this.eo,a.length-this.eo),this._current===this.sc&&(a=a.cloneNode(!0)).deleteData(0,this.so))),a},remove:function(){var a,b,c=this._current;!H.isCharacterDataNode(c)||c!==this.sc&&c!==this.ec?c.parentNode&&c.parentNode.removeChild(c):(a=c===this.sc?this.so:0,b=c===this.ec?this.eo:c.length,a!=b&&c.deleteData(a,b-a))},isPartiallySelectedSubtree:function(){return b(this._current,this.range)},getSubtreeIterator:function(){var a;if(this.isSingleCharacterDataNode)a=this.range.cloneRange(),a.collapse();else{a=new G(c(this.range));var b=this._current,d=b,e=0,f=b,g=H.getNodeLength(b);H.isAncestorOf(b,this.sc,!0)&&(d=this.sc,e=this.so),H.isAncestorOf(b,this.ec,!0)&&(f=this.ec,g=this.eo),F(a,d,e,f,g)}return new n(a,this.clonePartiallySelectedTextNodes)},detach:function(a){a&&this.range.detach(),this.range=this._current=this._next=this._first=this._last=this.sc=this.so=this.ec=this.eo=null}},o.prototype={BAD_BOUNDARYPOINTS_ERR:1,INVALID_NODE_TYPE_ERR:2},o.prototype.toString=function(){return this.message},p.prototype={_current:null,hasNext:function(){return!!this._next},next:function(){return this._current=this._next,this._next=this.nodes[++this._position],this._current},detach:function(){this._current=this._next=this.nodes=null}};var K=[1,3,4,5,7,8,10],L=[2,9,11],M=[1,3,4,5,7,8,10,11],N=[1,3,4,5,7,8],O=H.getRootContainer,P=q([9,11]),Q=q([5,6,10,12]),R=q([6,10,12]),S=document.createElement("style"),T=!1;try{S.innerHTML="<b>x</b>",T=3==S.firstChild.nodeType}catch(U){}a.features.htmlParsingConforms=T;var V="startContainer startOffset endContainer endOffset collapsed commonAncestorContainer".split(" "),W=0,X=1,Y=2,Z=3,$=0,_=1,ab=2,bb=3;z.prototype={attachListener:function(a,b){this._listeners[a].push(b)},compareBoundaryPoints:function(a,b){y(this),v(this.startContainer,b.startContainer);var c=a==Z||a==W?"start":"end",d=a==X||a==W?"start":"end";return H.comparePoints(this[c+"Container"],this[c+"Offset"],b[d+"Container"],b[d+"Offset"])},insertNode:function(a){if(y(this),t(a,M),w(this.startContainer),H.isAncestorOf(a,this.startContainer,!0))throw new J("HIERARCHY_REQUEST_ERR");this.setStartBefore(g(a,this.startContainer,this.startOffset))},cloneContents:function(){y(this);var a,b;return this.collapsed?c(this).createDocumentFragment():this.startContainer===this.endContainer&&H.isCharacterDataNode(this.startContainer)?(a=this.startContainer.cloneNode(!0),a.data=a.data.slice(this.startOffset,this.endOffset),b=c(this).createDocumentFragment(),b.appendChild(a),b):(b=new n(this,!0),a=h(b),b.detach(),a)},canSurroundContents:function(){y(this),w(this.startContainer),w(this.endContainer);var a=new n(this,!0),c=a._first&&b(a._first,this)||a._last&&b(a._last,this);return a.detach(),!c},surroundContents:function(a){if(t(a,N),!this.canSurroundContents())throw new o("BAD_BOUNDARYPOINTS_ERR");var b=this.extractContents();if(a.hasChildNodes())for(;a.lastChild;)a.removeChild(a.lastChild);g(a,this.startContainer,this.startOffset),a.appendChild(b),this.selectNode(a)},cloneRange:function(){y(this);for(var a,b=new G(c(this)),d=V.length;d--;)a=V[d],b[a]=this[a];return b},toString:function(){y(this);var a=this.startContainer;if(a===this.endContainer&&H.isCharacterDataNode(a))return 3==a.nodeType||4==a.nodeType?a.data.slice(this.startOffset,this.endOffset):"";var b=[],a=new n(this,!0);return i(a,function(a){(3==a.nodeType||4==a.nodeType)&&b.push(a.data)}),a.detach(),b.join("")},compareNode:function(a){y(this);var b=a.parentNode,c=H.getNodeIndex(a);if(!b)throw new J("NOT_FOUND_ERR");return a=this.comparePoint(b,c),b=this.comparePoint(b,c+1),0>a?b>0?ab:$:b>0?_:bb},comparePoint:function(a,b){return y(this),x(a,"HIERARCHY_REQUEST_ERR"),v(a,this.startContainer),0>H.comparePoints(a,b,this.startContainer,this.startOffset)?-1:0<H.comparePoints(a,b,this.endContainer,this.endOffset)?1:0},createContextualFragment:T?function(a){var b=this.startContainer,c=H.getDocument(b);if(!b)throw new J("INVALID_STATE_ERR");var d=null;return 1==b.nodeType?d=b:H.isCharacterDataNode(b)&&(d=H.parentElement(b)),d=null===d||"HTML"==d.nodeName&&H.isHtmlNamespace(H.getDocument(d).documentElement)&&H.isHtmlNamespace(d)?c.createElement("body"):d.cloneNode(!1),d.innerHTML=a,H.fragmentFromNodeChildren(d)}:function(a){s(this);var b=c(this).createElement("body");return b.innerHTML=a,H.fragmentFromNodeChildren(b)},toHtml:function(){y(this);var a=c(this).createElement("div");return a.appendChild(this.cloneContents()),a.innerHTML},intersectsNode:function(a,b){if(y(this),x(a,"NOT_FOUND_ERR"),H.getDocument(a)!==c(this))return!1;var d=a.parentNode,e=H.getNodeIndex(a);x(d,"NOT_FOUND_ERR");var f=H.comparePoints(d,e,this.endContainer,this.endOffset),d=H.comparePoints(d,e+1,this.startContainer,this.startOffset);return b?0>=f&&d>=0:0>f&&d>0},isPointInRange:function(a,b){return y(this),x(a,"HIERARCHY_REQUEST_ERR"),v(a,this.startContainer),0<=H.comparePoints(a,b,this.startContainer,this.startOffset)&&0>=H.comparePoints(a,b,this.endContainer,this.endOffset)},intersectsRange:function(a,b){if(y(this),c(a)!=c(this))throw new J("WRONG_DOCUMENT_ERR");var d=H.comparePoints(this.startContainer,this.startOffset,a.endContainer,a.endOffset),e=H.comparePoints(this.endContainer,this.endOffset,a.startContainer,a.startOffset);return b?0>=d&&e>=0:0>d&&e>0},intersection:function(a){if(this.intersectsRange(a)){var b=H.comparePoints(this.startContainer,this.startOffset,a.startContainer,a.startOffset),c=H.comparePoints(this.endContainer,this.endOffset,a.endContainer,a.endOffset),d=this.cloneRange();return-1==b&&d.setStart(a.startContainer,a.startOffset),1==c&&d.setEnd(a.endContainer,a.endOffset),d}return null},union:function(a){if(this.intersectsRange(a,!0)){var b=this.cloneRange();return-1==H.comparePoints(a.startContainer,a.startOffset,this.startContainer,this.startOffset)&&b.setStart(a.startContainer,a.startOffset),1==H.comparePoints(a.endContainer,a.endOffset,this.endContainer,this.endOffset)&&b.setEnd(a.endContainer,a.endOffset),b}throw new o("Ranges do not intersect")},containsNode:function(a,b){return b?this.intersectsNode(a,!1):this.compareNode(a)==bb},containsNodeContents:function(a){return 0<=this.comparePoint(a,0)&&0>=this.comparePoint(a,H.getNodeLength(a))},containsRange:function(a){return this.intersection(a).equals(a)},containsNodeText:function(a){var b=this.cloneRange();b.selectNode(a);var c=b.getNodes([3]);return 0<c.length?(b.setStart(c[0],0),a=c.pop(),b.setEnd(a,a.length),a=this.containsRange(b),b.detach(),a):this.containsNodeContents(a)},createNodeIterator:function(a,b){return y(this),new p(this,a,b)},getNodes:function(a,b){return y(this),l(this,a,b)},getDocument:function(){return c(this)},collapseBefore:function(a){s(this),this.setEndBefore(a),this.collapse(!1)},collapseAfter:function(a){s(this),this.setStartAfter(a),this.collapse(!0)},getName:function(){return"DomRange"},equals:function(a){return G.rangesEqual(this,a)},inspect:function(){return m(this)}},D(G,F,function(a){s(a),a.startContainer=a.startOffset=a.endContainer=a.endOffset=null,a.collapsed=a.commonAncestorContainer=null,d(a,"detach",null),a._listeners=null}),a.rangePrototype=z.prototype,G.rangeProperties=V,G.RangeIterator=n,G.copyComparisonConstants=B,G.createPrototypeRange=D,G.inspect=m,G.getRangeDocument=c,G.rangesEqual=function(a,b){return a.startContainer===b.startContainer&&a.startOffset===b.startOffset&&a.endContainer===b.endContainer&&a.endOffset===b.endOffset},a.DomRange=G,a.RangeException=o}),rangy.createModule("WrappedRange",function(a){function b(a,b,c,d){var g=a.duplicate();g.collapse(c);var h=g.parentElement();if(e.isAncestorOf(b,h,!0)||(h=b),!h.canHaveHTML)return new f(h.parentNode,e.getNodeIndex(h));var i,b=e.getDocument(h).createElement("span"),j=c?"StartToStart":"StartToEnd";do h.insertBefore(b,b.previousSibling),g.moveToElementText(b);while(0<(i=g.compareEndPoints(j,a))&&b.previousSibling);if(j=b.nextSibling,-1==i&&j&&e.isCharacterDataNode(j)){if(g.setEndPoint(c?"EndToStart":"EndToEnd",a),/[\r\n]/.test(j.data))for(h=g.duplicate(),c=h.text.replace(/\r\n/g,"\r").length,c=h.moveStart("character",c);-1==h.compareEndPoints("StartToEnd",h);)c++,h.moveStart("character",1);else c=g.text.length;h=new f(j,c)}else j=(d||!c)&&b.previousSibling,h=(c=(d||c)&&b.nextSibling)&&e.isCharacterDataNode(c)?new f(c,0):j&&e.isCharacterDataNode(j)?new f(j,j.length):new f(h,e.getNodeIndex(b));return b.parentNode.removeChild(b),h}function c(a,b){var c,d,f=a.offset,g=e.getDocument(a.node),h=g.body.createTextRange(),i=e.isCharacterDataNode(a.node);return i?(c=a.node,d=c.parentNode):(c=a.node.childNodes,c=f<c.length?c[f]:null,d=a.node),g=g.createElement("span"),g.innerHTML="&#feff;",c?d.insertBefore(g,c):d.appendChild(g),h.moveToElementText(g),h.collapse(!b),d.removeChild(g),i&&h[b?"moveStart":"moveEnd"]("character",f),h}a.requireModules(["DomUtil","DomRange"]);var d,e=a.dom,f=e.DomPosition,g=a.DomRange;if(!a.features.implementsDomRange||a.features.implementsTextRange&&a.config.preferTextRange){if(a.features.implementsTextRange){d=function(a){this.textRange=a,this.refresh()},d.prototype=new g(document),d.prototype.refresh=function(){var a,c,d=this.textRange;a=d.parentElement();var f=d.duplicate();f.collapse(!0),c=f.parentElement(),f=d.duplicate(),f.collapse(!1),d=f.parentElement(),c=c==d?c:e.getCommonAncestor(c,d),c=c==a?c:e.getCommonAncestor(a,c),0==this.textRange.compareEndPoints("StartToEnd",this.textRange)?c=a=b(this.textRange,c,!0,!0):(a=b(this.textRange,c,!0,!1),c=b(this.textRange,c,!1,!1)),this.setStart(a.node,a.offset),this.setEnd(c.node,c.offset)},g.copyComparisonConstants(d);var h=function(){return this}();"undefined"==typeof h.Range&&(h.Range=d),a.createNativeRange=function(a){return a=a||document,a.body.createTextRange()}}}else(function(){function b(a){for(var b,c=h.length;c--;)b=h[c],a[b]=a.nativeRange[b]}var c,f,h=g.rangeProperties;d=function(a){if(!a)throw Error("Range must be specified");this.nativeRange=a,b(this)},g.createPrototypeRange(d,function(a,b,c,d,e){var f=a.endContainer!==d||a.endOffset!=e;(a.startContainer!==b||a.startOffset!=c||f)&&(a.setEnd(d,e),a.setStart(b,c))},function(a){a.nativeRange.detach(),a.detached=!0;for(var b,c=h.length;c--;)b=h[c],a[b]=null}),c=d.prototype,c.selectNode=function(a){this.nativeRange.selectNode(a),b(this)},c.deleteContents=function(){this.nativeRange.deleteContents(),b(this)},c.extractContents=function(){var a=this.nativeRange.extractContents();return b(this),a},c.cloneContents=function(){return this.nativeRange.cloneContents()},c.surroundContents=function(a){this.nativeRange.surroundContents(a),b(this)},c.collapse=function(a){this.nativeRange.collapse(a),b(this)},c.cloneRange=function(){return new d(this.nativeRange.cloneRange())},c.refresh=function(){b(this)},c.toString=function(){return this.nativeRange.toString()};var i=document.createTextNode("test");e.getBody(document).appendChild(i);var j=document.createRange();j.setStart(i,0),j.setEnd(i,0);try{j.setStart(i,1),c.setStart=function(a,c){this.nativeRange.setStart(a,c),b(this)},c.setEnd=function(a,c){this.nativeRange.setEnd(a,c),b(this)},f=function(a){return function(c){this.nativeRange[a](c),b(this)}}}catch(k){c.setStart=function(a,c){try{this.nativeRange.setStart(a,c)}catch(d){this.nativeRange.setEnd(a,c),this.nativeRange.setStart(a,c)}b(this)},c.setEnd=function(a,c){try{this.nativeRange.setEnd(a,c)}catch(d){this.nativeRange.setStart(a,c),this.nativeRange.setEnd(a,c)}b(this)},f=function(a,c){return function(d){try{this.nativeRange[a](d)}catch(e){this.nativeRange[c](d),this.nativeRange[a](d)}b(this)}}}c.setStartBefore=f("setStartBefore","setEndBefore"),c.setStartAfter=f("setStartAfter","setEndAfter"),c.setEndBefore=f("setEndBefore","setStartBefore"),c.setEndAfter=f("setEndAfter","setStartAfter"),j.selectNodeContents(i),c.selectNodeContents=j.startContainer==i&&j.endContainer==i&&0==j.startOffset&&j.endOffset==i.length?function(a){this.nativeRange.selectNodeContents(a),b(this)}:function(a){this.setStart(a,0),this.setEnd(a,g.getEndOffset(a))},j.selectNodeContents(i),j.setEnd(i,3),f=document.createRange(),f.selectNodeContents(i),f.setEnd(i,4),f.setStart(i,2),c.compareBoundaryPoints=-1==j.compareBoundaryPoints(j.START_TO_END,f)&1==j.compareBoundaryPoints(j.END_TO_START,f)?function(a,b){return b=b.nativeRange||b,a==b.START_TO_END?a=b.END_TO_START:a==b.END_TO_START&&(a=b.START_TO_END),this.nativeRange.compareBoundaryPoints(a,b)}:function(a,b){return this.nativeRange.compareBoundaryPoints(a,b.nativeRange||b)},a.util.isHostMethod(j,"createContextualFragment")&&(c.createContextualFragment=function(a){return this.nativeRange.createContextualFragment(a)}),e.getBody(document).removeChild(i),j.detach(),f.detach()})(),a.createNativeRange=function(a){return a=a||document,a.createRange()};a.features.implementsTextRange&&(d.rangeToTextRange=function(a){if(a.collapsed)return c(new f(a.startContainer,a.startOffset),!0);var b=c(new f(a.startContainer,a.startOffset),!0),d=c(new f(a.endContainer,a.endOffset),!1),a=e.getDocument(a.startContainer).body.createTextRange();return a.setEndPoint("StartToStart",b),a.setEndPoint("EndToEnd",d),a}),d.prototype.getName=function(){return"WrappedRange"},a.WrappedRange=d,a.createRange=function(b){return b=b||document,new d(a.createNativeRange(b))},a.createRangyRange=function(a){return a=a||document,new g(a)},a.createIframeRange=function(b){return a.createRange(e.getIframeDocument(b))},a.createIframeRangyRange=function(b){return a.createRangyRange(e.getIframeDocument(b))},a.addCreateMissingNativeApiListener(function(b){b=b.document,"undefined"==typeof b.createRange&&(b.createRange=function(){return a.createRange(this)}),b=b=null})}),rangy.createModule("WrappedSelection",function(a,b){function c(a){return(a||window).getSelection()}function d(a){return(a||window).document.selection}function e(a,b,c){var d=c?"end":"start",c=c?"start":"end";a.anchorNode=b[d+"Container"],a.anchorOffset=b[d+"Offset"],a.focusNode=b[c+"Container"],a.focusOffset=b[c+"Offset"]}function f(a){a.anchorNode=a.focusNode=null,a.anchorOffset=a.focusOffset=0,a.rangeCount=0,a.isCollapsed=!0,a._ranges.length=0}function g(b){var c;return b instanceof t?(c=b._selectionNativeRange,c||(c=a.createNativeRange(r.getDocument(b.startContainer)),c.setEnd(b.endContainer,b.endOffset),c.setStart(b.startContainer,b.startOffset),b._selectionNativeRange=c,b.attachListener("detach",function(){this._selectionNativeRange=null}))):b instanceof u?c=b.nativeRange:a.features.implementsDomRange&&b instanceof r.getWindow(b.startContainer).Range&&(c=b),c}function h(a){var b,c=a.getNodes();a:if(c.length&&1==c[0].nodeType){b=1;for(var d=c.length;d>b;++b)if(!r.isAncestorOf(c[0],c[b])){b=!1;break a}b=!0}else b=!1;if(!b)throw Error("getSingleElementFromRange: range "+a.inspect()+" did not consist of a single element");return c[0]}function i(a,b){var c=new u(b);a._ranges=[c],e(a,c,!1),a.rangeCount=1,a.isCollapsed=c.collapsed}function j(b){if(b._ranges.length=0,"None"==b.docSelection.type)f(b);else{var c=b.docSelection.createRange();if(c&&"undefined"!=typeof c.text)i(b,c);else{b.rangeCount=c.length;for(var d,g=r.getDocument(c.item(0)),h=0;h<b.rangeCount;++h)d=a.createRange(g),d.selectNode(c.item(h)),b._ranges.push(d);b.isCollapsed=1==b.rangeCount&&b._ranges[0].collapsed,e(b,b._ranges[b.rangeCount-1],!1)}}}function k(a,b){for(var c=a.docSelection.createRange(),d=h(b),e=r.getDocument(c.item(0)),e=r.getBody(e).createControlRange(),f=0,g=c.length;g>f;++f)e.add(c.item(f));try{e.add(d)}catch(i){throw Error("addRange(): Element within the specified Range could not be added to control selection (does it have layout?)")}e.select(),j(a)}function l(a,b,c){this.nativeSelection=a,this.docSelection=b,this._ranges=[],this.win=c,this.refresh()}function m(a,b){for(var c,d=r.getDocument(b[0].startContainer),d=r.getBody(d).createControlRange(),e=0;rangeCount>e;++e){c=h(b[e]); -try{d.add(c)}catch(f){throw Error("setRanges(): Element within the one of the specified Ranges could not be added to control selection (does it have layout?)")}}d.select(),j(a)}function n(a,b){if(a.anchorNode&&r.getDocument(a.anchorNode)!==r.getDocument(b))throw new v("WRONG_DOCUMENT_ERR")}function o(a){var b=[],c=new w(a.anchorNode,a.anchorOffset),d=new w(a.focusNode,a.focusOffset),e="function"==typeof a.getName?a.getName():"Selection";if("undefined"!=typeof a.rangeCount)for(var f=0,g=a.rangeCount;g>f;++f)b[f]=t.inspect(a.getRangeAt(f));return"["+e+"(Ranges: "+b.join(", ")+")(anchor: "+c.inspect()+", focus: "+d.inspect()+"]"}a.requireModules(["DomUtil","DomRange","WrappedRange"]),a.config.checkSelectionRanges=!0;var p,q,r=a.dom,s=a.util,t=a.DomRange,u=a.WrappedRange,v=a.DOMException,w=r.DomPosition,x=a.util.isHostMethod(window,"getSelection"),y=a.util.isHostObject(document,"selection"),z=y&&(!x||a.config.preferTextRange);z?(p=d,a.isSelectionValid=function(a){var a=(a||window).document,b=a.selection;return"None"!=b.type||r.getDocument(b.createRange().parentElement())==a}):x?(p=c,a.isSelectionValid=function(){return!0}):b.fail("Neither document.selection or window.getSelection() detected."),a.getNativeSelection=p;var x=p(),A=a.createNativeRange(document),B=r.getBody(document),C=s.areHostObjects(x,s.areHostProperties(x,["anchorOffset","focusOffset"]));a.features.selectionHasAnchorAndFocus=C;var D=s.isHostMethod(x,"extend");a.features.selectionHasExtend=D;var E="number"==typeof x.rangeCount;a.features.selectionHasRangeCount=E;var F=!1,G=!0;s.areHostMethods(x,["addRange","getRangeAt","removeAllRanges"])&&"number"==typeof x.rangeCount&&a.features.implementsDomRange&&function(){var a=document.createElement("iframe");B.appendChild(a);var b=r.getIframeDocument(a);b.open(),b.write("<html><head></head><body>12</body></html>"),b.close();var c=r.getIframeWindow(a).getSelection(),d=b.documentElement.lastChild.firstChild,b=b.createRange();b.setStart(d,1),b.collapse(!0),c.addRange(b),G=1==c.rangeCount,c.removeAllRanges();var e=b.cloneRange();b.setStart(d,0),e.setEnd(d,2),c.addRange(b),c.addRange(e),F=2==c.rangeCount,b.detach(),e.detach(),B.removeChild(a)}(),a.features.selectionSupportsMultipleRanges=F,a.features.collapsedNonEditableSelectionsSupported=G;var H,I=!1;B&&s.isHostMethod(B,"createControlRange")&&(H=B.createControlRange(),s.areHostProperties(H,["item","add"])&&(I=!0)),a.features.implementsControlRange=I,q=C?function(a){return a.anchorNode===a.focusNode&&a.anchorOffset===a.focusOffset}:function(a){return a.rangeCount?a.getRangeAt(a.rangeCount-1).collapsed:!1};var J;if(s.isHostMethod(x,"getRangeAt")?J=function(a,b){try{return a.getRangeAt(b)}catch(c){return null}}:C&&(J=function(b){var c=r.getDocument(b.anchorNode),c=a.createRange(c);return c.setStart(b.anchorNode,b.anchorOffset),c.setEnd(b.focusNode,b.focusOffset),c.collapsed!==this.isCollapsed&&(c.setStart(b.focusNode,b.focusOffset),c.setEnd(b.anchorNode,b.anchorOffset)),c}),a.getSelection=function(a){var a=a||window,b=a._rangySelection,c=p(a),e=y?d(a):null;return b?(b.nativeSelection=c,b.docSelection=e,b.refresh(a)):(b=new l(c,e,a),a._rangySelection=b),b},a.getIframeSelection=function(b){return a.getSelection(r.getIframeWindow(b))},H=l.prototype,!z&&C&&s.areHostMethods(x,["removeAllRanges","addRange"])){H.removeAllRanges=function(){this.nativeSelection.removeAllRanges(),f(this)};var K=function(b,c){var d=t.getRangeDocument(c),d=a.createRange(d);d.collapseToPoint(c.endContainer,c.endOffset),b.nativeSelection.addRange(g(d)),b.nativeSelection.extend(c.startContainer,c.startOffset),b.refresh()};H.addRange=E?function(b,c){if(I&&y&&"Control"==this.docSelection.type)k(this,b);else if(c&&D)K(this,b);else{var d;F?d=this.rangeCount:(this.removeAllRanges(),d=0),this.nativeSelection.addRange(g(b)),this.rangeCount=this.nativeSelection.rangeCount,this.rangeCount==d+1?(a.config.checkSelectionRanges&&(d=J(this.nativeSelection,this.rangeCount-1))&&!t.rangesEqual(d,b)&&(b=new u(d)),this._ranges[this.rangeCount-1]=b,e(this,b,N(this.nativeSelection)),this.isCollapsed=q(this)):this.refresh()}}:function(a,b){b&&D?K(this,a):(this.nativeSelection.addRange(g(a)),this.refresh())},H.setRanges=function(a){if(I&&a.length>1)m(this,a);else{this.removeAllRanges();for(var b=0,c=a.length;c>b;++b)this.addRange(a[b])}}}else{if(!(s.isHostMethod(x,"empty")&&s.isHostMethod(A,"select")&&I&&z))return b.fail("No means of selecting a Range or TextRange was found"),!1;H.removeAllRanges=function(){try{if(this.docSelection.empty(),"None"!=this.docSelection.type){var a;if(this.anchorNode)a=r.getDocument(this.anchorNode);else if("Control"==this.docSelection.type){var b=this.docSelection.createRange();b.length&&(a=r.getDocument(b.item(0)).body.createTextRange())}a&&(a.body.createTextRange().select(),this.docSelection.empty())}}catch(c){}f(this)},H.addRange=function(a){"Control"==this.docSelection.type?k(this,a):(u.rangeToTextRange(a).select(),this._ranges[0]=a,this.rangeCount=1,this.isCollapsed=this._ranges[0].collapsed,e(this,a,!1))},H.setRanges=function(a){this.removeAllRanges();var b=a.length;b>1?m(this,a):b&&this.addRange(a[0])}}H.getRangeAt=function(a){if(0>a||a>=this.rangeCount)throw new v("INDEX_SIZE_ERR");return this._ranges[a]};var L;if(z)L=function(b){var c;a.isSelectionValid(b.win)?c=b.docSelection.createRange():(c=r.getBody(b.win.document).createTextRange(),c.collapse(!0)),"Control"==b.docSelection.type?j(b):c&&"undefined"!=typeof c.text?i(b,c):f(b)};else if(s.isHostMethod(x,"getRangeAt")&&"number"==typeof x.rangeCount)L=function(b){if(I&&y&&"Control"==b.docSelection.type)j(b);else if(b._ranges.length=b.rangeCount=b.nativeSelection.rangeCount,b.rangeCount){for(var c=0,d=b.rangeCount;d>c;++c)b._ranges[c]=new a.WrappedRange(b.nativeSelection.getRangeAt(c));e(b,b._ranges[b.rangeCount-1],N(b.nativeSelection)),b.isCollapsed=q(b)}else f(b)};else{if(!C||"boolean"!=typeof x.isCollapsed||"boolean"!=typeof A.collapsed||!a.features.implementsDomRange)return b.fail("No means of obtaining a Range or TextRange from the user's selection was found"),!1;L=function(a){var b;b=a.nativeSelection,b.anchorNode?(b=J(b,0),a._ranges=[b],a.rangeCount=1,b=a.nativeSelection,a.anchorNode=b.anchorNode,a.anchorOffset=b.anchorOffset,a.focusNode=b.focusNode,a.focusOffset=b.focusOffset,a.isCollapsed=q(a)):f(a)}}H.refresh=function(a){var b=a?this._ranges.slice(0):null;if(L(this),a){if(a=b.length,a!=this._ranges.length)return!1;for(;a--;)if(!t.rangesEqual(b[a],this._ranges[a]))return!1;return!0}};var M=function(a,b){var c=a.getAllRanges(),d=!1;a.removeAllRanges();for(var e=0,g=c.length;g>e;++e)d||b!==c[e]?a.addRange(c[e]):d=!0;a.rangeCount||f(a)};H.removeRange=I?function(a){if("Control"==this.docSelection.type){for(var b,c=this.docSelection.createRange(),a=h(a),d=r.getDocument(c.item(0)),d=r.getBody(d).createControlRange(),e=!1,f=0,g=c.length;g>f;++f)b=c.item(f),b!==a||e?d.add(c.item(f)):e=!0;d.select(),j(this)}else M(this,a)}:function(a){M(this,a)};var N;!z&&C&&a.features.implementsDomRange?(N=function(a){var b=!1;return a.anchorNode&&(b=1==r.comparePoints(a.anchorNode,a.anchorOffset,a.focusNode,a.focusOffset)),b},H.isBackwards=function(){return N(this)}):N=H.isBackwards=function(){return!1},H.toString=function(){for(var a=[],b=0,c=this.rangeCount;c>b;++b)a[b]=""+this._ranges[b];return a.join("")},H.collapse=function(b,c){n(this,b);var d=a.createRange(r.getDocument(b));d.collapseToPoint(b,c),this.removeAllRanges(),this.addRange(d),this.isCollapsed=!0},H.collapseToStart=function(){if(!this.rangeCount)throw new v("INVALID_STATE_ERR");var a=this._ranges[0];this.collapse(a.startContainer,a.startOffset)},H.collapseToEnd=function(){if(!this.rangeCount)throw new v("INVALID_STATE_ERR");var a=this._ranges[this.rangeCount-1];this.collapse(a.endContainer,a.endOffset)},H.selectAllChildren=function(b){n(this,b);var c=a.createRange(r.getDocument(b));c.selectNodeContents(b),this.removeAllRanges(),this.addRange(c)},H.deleteFromDocument=function(){if(I&&y&&"Control"==this.docSelection.type){for(var a,b=this.docSelection.createRange();b.length;)a=b.item(0),b.remove(a),a.parentNode.removeChild(a);this.refresh()}else if(this.rangeCount){b=this.getAllRanges(),this.removeAllRanges(),a=0;for(var c=b.length;c>a;++a)b[a].deleteContents();this.addRange(b[c-1])}},H.getAllRanges=function(){return this._ranges.slice(0)},H.setSingleRange=function(a){this.setRanges([a])},H.containsNode=function(a,b){for(var c=0,d=this._ranges.length;d>c;++c)if(this._ranges[c].containsNode(a,b))return!0;return!1},H.toHtml=function(){var a="";if(this.rangeCount){for(var a=t.getRangeDocument(this._ranges[0]).createElement("div"),b=0,c=this._ranges.length;c>b;++b)a.appendChild(this._ranges[b].cloneContents());a=a.innerHTML}return a},H.getName=function(){return"WrappedSelection"},H.inspect=function(){return o(this)},H.detach=function(){this.win=this.anchorNode=this.focusNode=this.win._rangySelection=null},l.inspect=o,a.Selection=l,a.selectionPrototype=H,a.addCreateMissingNativeApiListener(function(b){"undefined"==typeof b.getSelection&&(b.getSelection=function(){return a.getSelection(this)}),b=null})});var Base=function(){};Base.extend=function(a,b){var c=Base.prototype.extend;Base._prototyping=!0;var d=new this;c.call(d,a),d.base=function(){},delete Base._prototyping;var e=d.constructor,f=d.constructor=function(){if(!Base._prototyping)if(this._constructing||this.constructor==f)this._constructing=!0,e.apply(this,arguments),delete this._constructing;else if(null!=arguments[0])return(arguments[0].extend||c).call(arguments[0],d)};return f.ancestor=this,f.extend=this.extend,f.forEach=this.forEach,f.implement=this.implement,f.prototype=d,f.toString=this.toString,f.valueOf=function(a){return"object"==a?f:e.valueOf()},c.call(f,b),"function"==typeof f.init&&f.init(),f},Base.prototype={extend:function(a,b){if(1<arguments.length){var c=this[a];if(c&&"function"==typeof b&&(!c.valueOf||c.valueOf()!=b.valueOf())&&/\bbase\b/.test(b)){var d=b.valueOf(),b=function(){var a=this.base||Base.prototype.base;this.base=c;var b=d.apply(this,arguments);return this.base=a,b};b.valueOf=function(a){return"object"==a?b:d},b.toString=Base.toString}this[a]=b}else if(a){var e=Base.prototype.extend;!Base._prototyping&&"function"!=typeof this&&(e=this.extend||e);for(var f={toSource:null},g=["constructor","toString","valueOf"],h=Base._prototyping?0:1;i=g[h++];)a[i]!=f[i]&&e.call(this,i,a[i]);for(var i in a)f[i]||e.call(this,i,a[i])}return this}},Base=Base.extend({constructor:function(a){this.extend(a)}},{ancestor:Object,version:"1.1",forEach:function(a,b,c){for(var d in a)void 0===this.prototype[d]&&b.call(c,a[d],d,a)},implement:function(){for(var a=0;a<arguments.length;a++)"function"==typeof arguments[a]?arguments[a](this.prototype):this.prototype.extend(arguments[a]);return this},toString:function(){return""+this.valueOf()}}),wysihtml5.browser=function(){var a=navigator.userAgent,b=document.createElement("div"),c=-1!==a.indexOf("MSIE")&&-1===a.indexOf("Opera"),d=-1!==a.indexOf("Gecko")&&-1===a.indexOf("KHTML"),e=-1!==a.indexOf("AppleWebKit/"),f=-1!==a.indexOf("Chrome/"),g=-1!==a.indexOf("Opera/");return{USER_AGENT:a,supported:function(){var a=this.USER_AGENT.toLowerCase(),c="contentEditable"in b,d=document.execCommand&&document.queryCommandSupported&&document.queryCommandState,e=document.querySelector&&document.querySelectorAll,a=this.isIos()&&5>(/ipad|iphone|ipod/.test(a)&&a.match(/ os (\d+).+? like mac os x/)||[,0])[1]||-1!==a.indexOf("opera mobi")||-1!==a.indexOf("hpwos/");return c&&d&&e&&!a},isTouchDevice:function(){return this.supportsEvent("touchmove")},isIos:function(){var a=this.USER_AGENT.toLowerCase();return-1!==a.indexOf("webkit")&&-1!==a.indexOf("mobile")},supportsSandboxedIframes:function(){return c},throwsMixedContentWarningWhenIframeSrcIsEmpty:function(){return!("querySelector"in document)},displaysCaretInEmptyContentEditableCorrectly:function(){return!d},hasCurrentStyleProperty:function(){return"currentStyle"in b},insertsLineBreaksOnReturn:function(){return d},supportsPlaceholderAttributeOn:function(a){return"placeholder"in a},supportsEvent:function(a){var c;return(c="on"+a in b)||(b.setAttribute("on"+a,"return;"),c="function"==typeof b["on"+a]),c},supportsEventsInIframeCorrectly:function(){return!g},firesOnDropOnlyWhenOnDragOverIsCancelled:function(){return e||d},supportsDataTransfer:function(){try{return e&&(window.Clipboard||window.DataTransfer).prototype.getData}catch(a){return!1}},supportsHTML5Tags:function(a){return a=a.createElement("div"),a.innerHTML="<article>foo</article>","<article>foo</article>"===a.innerHTML.toLowerCase()},supportsCommand:function(){var a={formatBlock:c,insertUnorderedList:c||g||e,insertOrderedList:c||g||e},b={insertHTML:d};return function(c,d){if(!a[d]){try{return c.queryCommandSupported(d)}catch(e){}try{return c.queryCommandEnabled(d)}catch(f){return!!b[d]}}return!1}}(),doesAutoLinkingInContentEditable:function(){return c},canDisableAutoLinking:function(){return this.supportsCommand(document,"AutoUrlDetect")},clearsContentEditableCorrectly:function(){return d||g||e},supportsGetAttributeCorrectly:function(){return"1"!=document.createElement("td").getAttribute("rowspan")},canSelectImagesInContentEditable:function(){return d||c||g},clearsListsInContentEditableCorrectly:function(){return d||c||e},autoScrollsToCaret:function(){return!e},autoClosesUnclosedTags:function(){var a,c=b.cloneNode(!1);return c.innerHTML="<p><div></div>",c=c.innerHTML.toLowerCase(),a="<p></p><div></div>"===c||"<p><div></div></p>"===c,this.autoClosesUnclosedTags=function(){return a},a},supportsNativeGetElementsByClassName:function(){return-1!==(""+document.getElementsByClassName).indexOf("[native code]")},supportsSelectionModify:function(){return"getSelection"in window&&"modify"in window.getSelection()},supportsClassList:function(){return"classList"in b},needsSpaceAfterLineBreak:function(){return g},supportsSpeechApiOn:function(b){return 11<=(a.match(/Chrome\/(\d+)/)||[,0])[1]&&("onwebkitspeechchange"in b||"speech"in b)},crashesWhenDefineProperty:function(a){return c&&("XMLHttpRequest"===a||"XDomainRequest"===a)},doesAsyncFocus:function(){return c},hasProblemsSettingCaretAfterImg:function(){return c},hasUndoInContextMenu:function(){return d||f||g}}}(),wysihtml5.lang.array=function(a){return{contains:function(b){if(a.indexOf)return-1!==a.indexOf(b);for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return!0;return!1},without:function(b){for(var b=wysihtml5.lang.array(b),c=[],d=0,e=a.length;e>d;d++)b.contains(a[d])||c.push(a[d]);return c},get:function(){for(var b=0,c=a.length,d=[];c>b;b++)d.push(a[b]);return d}}},wysihtml5.lang.Dispatcher=Base.extend({observe:function(a,b){return this.events=this.events||{},this.events[a]=this.events[a]||[],this.events[a].push(b),this},on:function(){return this.observe.apply(this,wysihtml5.lang.array(arguments).get())},fire:function(a,b){this.events=this.events||{};for(var c=this.events[a]||[],d=0;d<c.length;d++)c[d].call(this,b);return this},stopObserving:function(a,b){this.events=this.events||{};var c,d,e=0;if(a){for(c=this.events[a]||[],d=[];e<c.length;e++)c[e]!==b&&b&&d.push(c[e]);this.events[a]=d}else this.events={};return this}}),wysihtml5.lang.object=function(a){return{merge:function(b){for(var c in b)a[c]=b[c];return this},get:function(){return a},clone:function(){var b,c={};for(b in a)c[b]=a[b];return c},isArray:function(){return"[object Array]"===Object.prototype.toString.call(a)}}},function(){var a=/^\s+/,b=/\s+$/;wysihtml5.lang.string=function(c){return c=""+c,{trim:function(){return c.replace(a,"").replace(b,"")},interpolate:function(a){for(var b in a)c=this.replace("#{"+b+"}").by(a[b]);return c},replace:function(a){return{by:function(b){return c.split(a).join(b)}}}}}}(),function(a){function b(a){return a.replace(e,function(a,b){var c=(b.match(f)||[])[1]||"",d=h[c],b=b.replace(f,"");b.split(d).length>b.split(c).length&&(b+=c,c="");var e=d=b;return b.length>g&&(e=e.substr(0,g)+"..."),"www."===d.substr(0,4)&&(d="http://"+d),'<a href="'+d+'">'+e+"</a>"+c})}function c(f){if(!d.contains(f.nodeName)){if(f.nodeType!==a.TEXT_NODE||!f.data.match(e)){for(h=a.lang.array(f.childNodes).get(),g=h.length,i=0;g>i;i++)c(h[i]);return f}var g,h=f.parentNode;g=h.ownerDocument;var i=g._wysihtml5_tempElement;for(i||(i=g._wysihtml5_tempElement=g.createElement("div")),g=i,g.innerHTML="<span></span>"+b(f.data),g.removeChild(g.firstChild);g.firstChild;)h.insertBefore(g.firstChild,f);h.removeChild(f)}}var d=a.lang.array("CODE PRE A SCRIPT HEAD TITLE STYLE".split(" ")),e=/((https?:\/\/|www\.)[^\s<]{3,})/gi,f=/([^\w\/\-](,?))$/i,g=100,h={")":"(","]":"[","}":"{"};a.dom.autoLink=function(a){var b;a:{b=a;for(var e;b.parentNode;){if(b=b.parentNode,e=b.nodeName,d.contains(e)){b=!0;break a}if("body"===e)break}b=!1}return b?a:(a===a.ownerDocument.documentElement&&(a=a.ownerDocument.body),c(a))},a.dom.autoLink.URL_REG_EXP=e}(wysihtml5),function(a){var b=a.browser.supportsClassList(),c=a.dom;c.addClass=function(a,d){return b?a.classList.add(d):(c.hasClass(a,d)||(a.className+=" "+d),void 0)},c.removeClass=function(a,c){return b?a.classList.remove(c):(a.className=a.className.replace(RegExp("(^|\\s+)"+c+"(\\s+|$)")," "),void 0)},c.hasClass=function(a,c){if(b)return a.classList.contains(c);var d=a.className;return 0<d.length&&(d==c||RegExp("(^|\\s)"+c+"(\\s|$)").test(d))}}(wysihtml5),wysihtml5.dom.contains=function(){var a=document.documentElement;return a.contains?function(a,b){return b.nodeType!==wysihtml5.ELEMENT_NODE&&(b=b.parentNode),a!==b&&a.contains(b)}:a.compareDocumentPosition?function(a,b){return!!(16&a.compareDocumentPosition(b))}:void 0}(),wysihtml5.dom.convertToList=function(){function a(a,b){var c=a.createElement("li");return b.appendChild(c),c}return function(b,c){if("UL"===b.nodeName||"OL"===b.nodeName||"MENU"===b.nodeName)return b;var d,e,f,g,h,i=b.ownerDocument,j=i.createElement(c),k=b.querySelectorAll("br"),l=k.length;for(h=0;l>h;h++)for(d=k[h];(e=d.parentNode)&&e!==b&&e.lastChild===d;){if("block"===wysihtml5.dom.getStyle("display").from(e)){e.removeChild(d);break}wysihtml5.dom.insert(d).after(d.parentNode)}for(k=wysihtml5.lang.array(b.childNodes).get(),l=k.length,h=0;l>h;h++)g=g||a(i,j),d=k[h],e="block"===wysihtml5.dom.getStyle("display").from(d),f="BR"===d.nodeName,e?(g=g.firstChild?a(i,j):g,g.appendChild(d),g=null):f?g=g.firstChild?null:g:g.appendChild(d);return b.parentNode.replaceChild(j,b),j}}(),wysihtml5.dom.copyAttributes=function(a){return{from:function(b){return{to:function(c){for(var d,e=0,f=a.length;f>e;e++)d=a[e],"undefined"!=typeof b[d]&&""!==b[d]&&(c[d]=b[d]);return{andTo:arguments.callee}}}}}},function(a){var b=["-webkit-box-sizing","-moz-box-sizing","-ms-box-sizing","box-sizing"],c=function(c){var d;a:for(var e=0,f=b.length;f>e;e++)if("border-box"===a.getStyle(b[e]).from(c)){d=b[e];break a}return d?parseInt(a.getStyle("width").from(c),10)<c.offsetWidth:!1};a.copyStyles=function(d){return{from:function(e){c(e)&&(d=wysihtml5.lang.array(d).without(b));for(var f,g="",h=d.length,i=0;h>i;i++)f=d[i],g+=f+":"+a.getStyle(f).from(e)+";";return{to:function(b){return a.setStyles(g).on(b),{andTo:arguments.callee}}}}}}}(wysihtml5.dom),function(a){a.dom.delegate=function(b,c,d,e){return a.dom.observe(b,d,function(d){for(var f=d.target,g=a.lang.array(b.querySelectorAll(c));f&&f!==b;){if(g.contains(f)){e.call(f,d);break}f=f.parentNode}})}}(wysihtml5),wysihtml5.dom.getAsDom=function(){var a="abbr article aside audio bdi canvas command datalist details figcaption figure footer header hgroup keygen mark meter nav output progress rp rt ruby svg section source summary time track video wbr".split(" ");return function(b,c){var d,c=c||document;if("object"==typeof b&&b.nodeType)d=c.createElement("div"),d.appendChild(b);else if(wysihtml5.browser.supportsHTML5Tags(c))d=c.createElement("div"),d.innerHTML=b;else{if(d=c,!d._wysihtml5_supportsHTML5Tags){for(var e=0,f=a.length;f>e;e++)d.createElement(a[e]);d._wysihtml5_supportsHTML5Tags=!0}d=c,e=d.createElement("div"),e.style.display="none",d.body.appendChild(e);try{e.innerHTML=b}catch(g){}d.body.removeChild(e),d=e}return d}}(),wysihtml5.dom.getParentElement=function(){function a(a,b){return b&&b.length?"string"==typeof b?a===b:wysihtml5.lang.array(b).contains(a):!0}return function(b,c,d){if(d=d||50,c.className||c.classRegExp){a:{for(var e=c.nodeName,f=c.className,c=c.classRegExp;d--&&b&&"BODY"!==b.nodeName;){var g;if((g=b.nodeType===wysihtml5.ELEMENT_NODE)&&(g=a(b.nodeName,e))){g=f;var h=(b.className||"").match(c)||[];g=g?h[h.length-1]===g:!!h.length}if(g)break a;b=b.parentNode}b=null}return b}a:{for(e=c.nodeName,f=d;f--&&b&&"BODY"!==b.nodeName;){if(a(b.nodeName,e))break a;b=b.parentNode}b=null}return b}}(),wysihtml5.dom.getStyle=function(){function a(a){return a.replace(c,function(a){return a.charAt(1).toUpperCase()})}var b={"float":"styleFloat"in document.createElement("div").style?"styleFloat":"cssFloat"},c=/\-[a-z]/g;return function(c){return{from:function(d){if(d.nodeType===wysihtml5.ELEMENT_NODE){var e=d.ownerDocument,f=b[c]||a(c),g=d.style,h=d.currentStyle,i=g[f];if(i)return i;if(h)try{return h[f]}catch(j){}var k,f=e.defaultView||e.parentWindow,e=("height"===c||"width"===c)&&"TEXTAREA"===d.nodeName;if(f.getComputedStyle)return e&&(k=g.overflow,g.overflow="hidden"),d=f.getComputedStyle(d,null).getPropertyValue(c),e&&(g.overflow=k||""),d}}}}}(),wysihtml5.dom.hasElementWithTagName=function(){var a={},b=1;return function(c,d){var e=(c._wysihtml5_identifier||(c._wysihtml5_identifier=b++))+":"+d,f=a[e];return f||(f=a[e]=c.getElementsByTagName(d)),0<f.length}}(),function(a){var b={},c=1;a.dom.hasElementWithClassName=function(d,e){if(!a.browser.supportsNativeGetElementsByClassName())return!!d.querySelector("."+e);var f=(d._wysihtml5_identifier||(d._wysihtml5_identifier=c++))+":"+e,g=b[f];return g||(g=b[f]=d.getElementsByClassName(e)),0<g.length}}(wysihtml5),wysihtml5.dom.insert=function(a){return{after:function(b){b.parentNode.insertBefore(a,b.nextSibling)},before:function(b){b.parentNode.insertBefore(a,b)},into:function(b){b.appendChild(a)}}},wysihtml5.dom.insertCSS=function(a){return a=a.join("\n"),{into:function(b){var c=b.head||b.getElementsByTagName("head")[0],d=b.createElement("style");d.type="text/css",d.styleSheet?d.styleSheet.cssText=a:d.appendChild(b.createTextNode(a)),c&&c.appendChild(d)}}},wysihtml5.dom.observe=function(a,b,c){for(var d,e,b="string"==typeof b?[b]:b,f=0,g=b.length;g>f;f++)e=b[f],a.addEventListener?a.addEventListener(e,c,!1):(d=function(b){"target"in b||(b.target=b.srcElement),b.preventDefault=b.preventDefault||function(){this.returnValue=!1},b.stopPropagation=b.stopPropagation||function(){this.cancelBubble=!0},c.call(a,b)},a.attachEvent("on"+e,d));return{stop:function(){for(var e,f=0,g=b.length;g>f;f++)e=b[f],a.removeEventListener?a.removeEventListener(e,c,!1):a.detachEvent("on"+e,d)}}},wysihtml5.dom.parse=function(){function a(b,e){var f,g=b.childNodes,h=g.length;f=c[b.nodeType];var i=0;if(f=f&&f(b),!f)return null;for(i=0;h>i;i++)(newChild=a(g[i],e))&&f.appendChild(newChild);return e&&1>=f.childNodes.length&&f.nodeName.toLowerCase()===d&&!f.attributes.length?f.firstChild:f}function b(a,b){var c,b=b.toLowerCase();if((c="IMG"==a.nodeName)&&(c="src"==b)){var d;try{d=a.complete&&!a.mozMatchesSelector(":-moz-broken")}catch(e){a.complete&&"complete"===a.readyState&&(d=!0)}c=!0===d}return c?a.src:h&&"outerHTML"in a?-1!=a.outerHTML.toLowerCase().indexOf(" "+b+"=")?a.getAttribute(b):null:a.getAttribute(b)}var c={1:function(a){var c,f,h=g.tags;if(f=a.nodeName.toLowerCase(),c=a.scopeName,a._wysihtml5)return null;if(a._wysihtml5=1,"wysihtml5-temp"===a.className)return null;if(c&&"HTML"!=c&&(f=c+":"+f),"outerHTML"in a&&!wysihtml5.browser.autoClosesUnclosedTags()&&"P"===a.nodeName&&"</p>"!==a.outerHTML.slice(-4).toLowerCase()&&(f="div"),f in h){if(c=h[f],!c||c.remove)return null;c="string"==typeof c?{rename_tag:c}:c}else{if(!a.firstChild)return null;c={rename_tag:d}}f=a.ownerDocument.createElement(c.rename_tag||f);var h={},k=c.set_class,l=c.add_class,m=c.set_attributes,n=c.check_attributes,o=g.classes,p=0,q=[];c=[];var r,s=[],t=[];if(m&&(h=wysihtml5.lang.object(m).clone()),n)for(r in n)(m=i[n[r]])&&(m=m(b(a,r)),"string"==typeof m&&(h[r]=m));if(k&&q.push(k),l)for(r in l)(m=j[l[r]])&&(k=m(b(a,r)),"string"==typeof k&&q.push(k));for(o["_wysihtml5-temp-placeholder"]=1,(t=a.getAttribute("class"))&&(q=q.concat(t.split(e))),l=q.length;l>p;p++)a=q[p],o[a]&&c.push(a);for(o=c.length;o--;)a=c[o],wysihtml5.lang.array(s).contains(a)||s.unshift(a);s.length&&(h["class"]=s.join(" "));for(r in h)try{f.setAttribute(r,h[r])}catch(u){}return h.src&&("undefined"!=typeof h.width&&f.setAttribute("width",h.width),"undefined"!=typeof h.height&&f.setAttribute("height",h.height)),f},3:function(a){return a.ownerDocument.createTextNode(a.data)}},d="span",e=/\s+/,f={tags:{},classes:{}},g={},h=!wysihtml5.browser.supportsGetAttributeCorrectly(),i={url:function(){var a=/^https?:\/\//i;return function(b){return b&&b.match(a)?b.replace(a,function(a){return a.toLowerCase()}):null}}(),alt:function(){var a=/[^ a-z0-9_\-]/gi;return function(b){return b?b.replace(a,""):""}}(),numbers:function(){var a=/\D/g;return function(b){return(b=(b||"").replace(a,""))||null}}()},j={align_img:function(){var a={left:"wysiwyg-float-left",right:"wysiwyg-float-right"};return function(b){return a[(""+b).toLowerCase()]}}(),align_text:function(){var a={left:"wysiwyg-text-align-left",right:"wysiwyg-text-align-right",center:"wysiwyg-text-align-center",justify:"wysiwyg-text-align-justify"};return function(b){return a[(""+b).toLowerCase()]}}(),clear_br:function(){var a={left:"wysiwyg-clear-left",right:"wysiwyg-clear-right",both:"wysiwyg-clear-both",all:"wysiwyg-clear-both"};return function(b){return a[(""+b).toLowerCase()]}}(),size_font:function(){var a={1:"wysiwyg-font-size-xx-small",2:"wysiwyg-font-size-small",3:"wysiwyg-font-size-medium",4:"wysiwyg-font-size-large",5:"wysiwyg-font-size-x-large",6:"wysiwyg-font-size-xx-large",7:"wysiwyg-font-size-xx-large","-":"wysiwyg-font-size-smaller","+":"wysiwyg-font-size-larger"};return function(b){return a[(""+b).charAt(0)]}}()};return function(b,c,d,e){wysihtml5.lang.object(g).merge(f).merge(c).get();for(var d=d||b.ownerDocument||document,c=d.createDocumentFragment(),h="string"==typeof b,b=h?wysihtml5.dom.getAsDom(b,d):b;b.firstChild;)d=b.firstChild,b.removeChild(d),(d=a(d,e))&&c.appendChild(d);return b.innerHTML="",b.appendChild(c),h?wysihtml5.quirks.getCorrectInnerHTML(b):b}}(),wysihtml5.dom.removeEmptyTextNodes=function(a){for(var b=wysihtml5.lang.array(a.childNodes).get(),c=b.length,d=0;c>d;d++)a=b[d],a.nodeType===wysihtml5.TEXT_NODE&&""===a.data&&a.parentNode.removeChild(a)},wysihtml5.dom.renameElement=function(a,b){for(var c,d=a.ownerDocument.createElement(b);c=a.firstChild;)d.appendChild(c);return wysihtml5.dom.copyAttributes(["align","className"]).from(a).to(d),a.parentNode.replaceChild(d,a),d},wysihtml5.dom.replaceWithChildNodes=function(a){if(a.parentNode)if(a.firstChild){for(var b=a.ownerDocument.createDocumentFragment();a.firstChild;)b.appendChild(a.firstChild);a.parentNode.replaceChild(b,a)}else a.parentNode.removeChild(a)},function(a){function b(a){var b=a.ownerDocument.createElement("br");a.appendChild(b)}a.resolveList=function(c){if("MENU"===c.nodeName||"UL"===c.nodeName||"OL"===c.nodeName){var d,e,f,g=c.ownerDocument.createDocumentFragment(),h=c.previousElementSibling||c.previousSibling;for(h&&"block"!==a.getStyle("display").from(h)&&b(g);f=c.firstChild;){for(d=f.lastChild;h=f.firstChild;)e=(e=h===d)&&"block"!==a.getStyle("display").from(h)&&"BR"!==h.nodeName,g.appendChild(h),e&&b(g);f.parentNode.removeChild(f)}c.parentNode.replaceChild(g,c)}}}(wysihtml5.dom),function(a){var b=document,c="parent top opener frameElement frames localStorage globalStorage sessionStorage indexedDB".split(" "),d="open close openDialog showModalDialog alert confirm prompt openDatabase postMessage XMLHttpRequest XDomainRequest".split(" "),e=["referrer","write","open","close"];a.dom.Sandbox=Base.extend({constructor:function(b,c){this.callback=b||a.EMPTY_FUNCTION,this.config=a.lang.object({}).merge(c).get(),this.iframe=this._createIframe()},insertInto:function(a){"string"==typeof a&&(a=b.getElementById(a)),a.appendChild(this.iframe)},getIframe:function(){return this.iframe},getWindow:function(){this._readyError()},getDocument:function(){this._readyError()},destroy:function(){var a=this.getIframe();a.parentNode.removeChild(a)},_readyError:function(){throw Error("wysihtml5.Sandbox: Sandbox iframe isn't loaded yet")},_createIframe:function(){var c=this,d=b.createElement("iframe");return d.className="wysihtml5-sandbox",a.dom.setAttributes({security:"restricted",allowtransparency:"true",frameborder:0,width:0,height:0,marginwidth:0,marginheight:0}).on(d),a.browser.throwsMixedContentWarningWhenIframeSrcIsEmpty()&&(d.src="javascript:'<html></html>'"),d.onload=function(){d.onreadystatechange=d.onload=null,c._onLoadIframe(d)},d.onreadystatechange=function(){/loaded|complete/.test(d.readyState)&&(d.onreadystatechange=d.onload=null,c._onLoadIframe(d))},d},_onLoadIframe:function(f){if(a.dom.contains(b.documentElement,f)){var g=this,h=f.contentWindow,i=f.contentWindow.document,j=this._getHtml({charset:b.characterSet||b.charset||"utf-8",stylesheets:this.config.stylesheets});if(i.open("text/html","replace"),i.write(j),i.close(),this.getWindow=function(){return f.contentWindow},this.getDocument=function(){return f.contentWindow.document},h.onerror=function(a,b,c){throw Error("wysihtml5.Sandbox: "+a,b,c)},!a.browser.supportsSandboxedIframes()){var k,j=0;for(k=c.length;k>j;j++)this._unset(h,c[j]);for(j=0,k=d.length;k>j;j++)this._unset(h,d[j],a.EMPTY_FUNCTION);for(j=0,k=e.length;k>j;j++)this._unset(i,e[j]);this._unset(i,"cookie","",!0)}this.loaded=!0,setTimeout(function(){g.callback(g)},0)}},_getHtml:function(b){var c,d=b.stylesheets,e="",f=0;if(d="string"==typeof d?[d]:d)for(c=d.length;c>f;f++)e+='<link rel="stylesheet" href="'+d[f]+'">';return b.stylesheets=e,a.lang.string('<!DOCTYPE html><html><head><meta charset="#{charset}">#{stylesheets}</head><body></body></html>').interpolate(b)},_unset:function(b,c,d,e){try{b[c]=d}catch(f){}try{b.__defineGetter__(c,function(){return d})}catch(g){}if(e)try{b.__defineSetter__(c,function(){})}catch(h){}if(!a.browser.crashesWhenDefineProperty(c))try{var i={get:function(){return d}};e&&(i.set=function(){}),Object.defineProperty(b,c,i)}catch(j){}}})}(wysihtml5),function(){var a={className:"class"};wysihtml5.dom.setAttributes=function(b){return{on:function(c){for(var d in b)c.setAttribute(a[d]||d,b[d])}}}}(),wysihtml5.dom.setStyles=function(a){return{on:function(b){if(b=b.style,"string"==typeof a)b.cssText+=";"+a;else for(var c in a)"float"===c?(b.cssFloat=a[c],b.styleFloat=a[c]):b[c]=a[c]}}},function(a){a.simulatePlaceholder=function(b,c,d){var e=function(){c.hasPlaceholderSet()&&c.clear(),a.removeClass(c.element,"placeholder")},f=function(){c.isEmpty()&&(c.setValue(d),a.addClass(c.element,"placeholder"))};b.observe("set_placeholder",f).observe("unset_placeholder",e).observe("focus:composer",e).observe("paste:composer",e).observe("blur:composer",f),f()}}(wysihtml5.dom),function(a){var b=document.documentElement;"textContent"in b?(a.setTextContent=function(a,b){a.textContent=b},a.getTextContent=function(a){return a.textContent}):"innerText"in b?(a.setTextContent=function(a,b){a.innerText=b},a.getTextContent=function(a){return a.innerText}):(a.setTextContent=function(a,b){a.nodeValue=b},a.getTextContent=function(a){return a.nodeValue})}(wysihtml5.dom),wysihtml5.quirks.cleanPastedHTML=function(){var a={"a u":wysihtml5.dom.replaceWithChildNodes};return function(b,c,d){var e,f,g,c=c||a,d=d||b.ownerDocument||document,h="string"==typeof b,i=0,b=h?wysihtml5.dom.getAsDom(b,d):b;for(g in c)for(e=b.querySelectorAll(g),d=c[g],f=e.length;f>i;i++)d(e[i]);return h?b.innerHTML:b}}(),function(a){var b=a.dom;a.quirks.ensureProperClearing=function(){var a=function(){var a=this;setTimeout(function(){var b=a.innerHTML.toLowerCase();("<p>&nbsp;</p>"==b||"<p>&nbsp;</p><p>&nbsp;</p>"==b)&&(a.innerHTML="") -},0)};return function(c){b.observe(c.element,["cut","keydown"],a)}}(),a.quirks.ensureProperClearingOfLists=function(){var c=["OL","UL","MENU"];return function(d){b.observe(d.element,"keydown",function(e){if(e.keyCode===a.BACKSPACE_KEY){var f=d.selection.getSelectedNode(),e=d.element;e.firstChild&&a.lang.array(c).contains(e.firstChild.nodeName)&&(f=b.getParentElement(f,{nodeName:c}))&&f==e.firstChild&&1>=f.childNodes.length&&(f.firstChild?""===f.firstChild.innerHTML:1)&&f.parentNode.removeChild(f)}})}}()}(wysihtml5),function(a){a.quirks.getCorrectInnerHTML=function(b){var c=b.innerHTML;if(-1===c.indexOf("%7E"))return c;var d,e,f,g,b=b.querySelectorAll("[href*='~'], [src*='~']");for(g=0,f=b.length;f>g;g++)d=b[g].href||b[g].src,e=a.lang.string(d).replace("~").by("%7E"),c=a.lang.string(c).replace(e).by(d);return c}}(wysihtml5),function(a){var b=a.dom,c="LI P H1 H2 H3 H4 H5 H6".split(" "),d=["UL","OL","MENU"];a.quirks.insertLineBreakOnReturn=function(e){function f(c){if(c=b.getParentElement(c,{nodeName:["P","DIV"]},2)){var d=document.createTextNode(a.INVISIBLE_SPACE);b.insert(d).before(c),b.replaceWithChildNodes(c),e.selection.selectNode(d)}}b.observe(e.element.ownerDocument,"keydown",function(g){var h=g.keyCode;if(!(g.shiftKey||h!==a.ENTER_KEY&&h!==a.BACKSPACE_KEY)){var i=e.selection.getSelectedNode();(i=b.getParentElement(i,{nodeName:c},4))?"LI"!==i.nodeName||h!==a.ENTER_KEY&&h!==a.BACKSPACE_KEY?i.nodeName.match(/H[1-6]/)&&h===a.ENTER_KEY&&setTimeout(function(){f(e.selection.getSelectedNode())},0):setTimeout(function(){var a,c=e.selection.getSelectedNode();c&&((a=b.getParentElement(c,{nodeName:d},2))||f(c))},0):h===a.ENTER_KEY&&!a.browser.insertsLineBreaksOnReturn()&&(e.commands.exec("insertLineBreak"),g.preventDefault())}})}}(wysihtml5),function(a){a.quirks.redraw=function(b){a.dom.addClass(b,"wysihtml5-quirks-redraw"),a.dom.removeClass(b,"wysihtml5-quirks-redraw");try{var c=b.ownerDocument;c.execCommand("italic",!1,null),c.execCommand("italic",!1,null)}catch(d){}}}(wysihtml5),function(a){var b=a.dom;a.Selection=Base.extend({constructor:function(a){window.rangy.init(),this.editor=a,this.composer=a.composer,this.doc=this.composer.doc},getBookmark:function(){var a=this.getRange();return a&&a.cloneRange()},setBookmark:function(a){a&&this.setSelection(a)},setBefore:function(a){var b=rangy.createRange(this.doc);return b.setStartBefore(a),b.setEndBefore(a),this.setSelection(b)},setAfter:function(a){var b=rangy.createRange(this.doc);return b.setStartAfter(a),b.setEndAfter(a),this.setSelection(b)},selectNode:function(c){var d=rangy.createRange(this.doc),e=c.nodeType===a.ELEMENT_NODE,f="canHaveHTML"in c?c.canHaveHTML:"IMG"!==c.nodeName,g=e?c.innerHTML:c.data,g=""===g||g===a.INVISIBLE_SPACE,h=b.getStyle("display").from(c),h="block"===h||"list-item"===h;if(g&&e&&f)try{c.innerHTML=a.INVISIBLE_SPACE}catch(i){}f?d.selectNodeContents(c):d.selectNode(c),f&&g&&e?d.collapse(h):f&&g&&(d.setStartAfter(c),d.setEndAfter(c)),this.setSelection(d)},getSelectedNode:function(a){return a&&this.doc.selection&&"Control"===this.doc.selection.type&&(a=this.doc.selection.createRange())&&a.length?a.item(0):(a=this.getSelection(this.doc),a.focusNode===a.anchorNode?a.focusNode:(a=this.getRange(this.doc))?a.commonAncestorContainer:this.doc.body)},executeAndRestore:function(b,c){var d=this.doc.body,e=c&&d.scrollTop,f=c&&d.scrollLeft,g='<span class="_wysihtml5-temp-placeholder">'+a.INVISIBLE_SPACE+"</span>",h=this.getRange(this.doc);if(h){g=h.createContextualFragment(g),h.insertNode(g);try{b(h.startContainer,h.endContainer)}catch(i){setTimeout(function(){throw i},0)}(caretPlaceholder=this.doc.querySelector("._wysihtml5-temp-placeholder"))?(h=rangy.createRange(this.doc),h.selectNode(caretPlaceholder),h.deleteContents(),this.setSelection(h)):d.focus(),c&&(d.scrollTop=e,d.scrollLeft=f);try{caretPlaceholder.parentNode.removeChild(caretPlaceholder)}catch(j){}}else b(d,d)},executeAndRestoreSimple:function(a){var b,c,d,e=this.getRange(),f=this.doc.body;if(e){b=e.getNodes([3]),f=b[0]||e.startContainer,d=b[b.length-1]||e.endContainer,b=f===e.startContainer?e.startOffset:0,c=d===e.endContainer?e.endOffset:d.length;try{a(e.startContainer,e.endContainer)}catch(g){setTimeout(function(){throw g},0)}a=rangy.createRange(this.doc);try{a.setStart(f,b)}catch(h){}try{a.setEnd(d,c)}catch(i){}try{this.setSelection(a)}catch(j){}}else a(f,f)},insertHTML:function(a){var a=rangy.createRange(this.doc).createContextualFragment(a),b=a.lastChild;this.insertNode(a),b&&this.setAfter(b)},insertNode:function(a){var b=this.getRange();b&&b.insertNode(a)},surround:function(a){var b=this.getRange();if(b)try{b.surroundContents(a),this.selectNode(a)}catch(c){a.appendChild(b.extractContents()),b.insertNode(a)}},scrollIntoView:function(){var b,c=this.doc,d=c.documentElement.scrollHeight>c.documentElement.offsetHeight;if((b=c._wysihtml5ScrollIntoViewElement)||(b=c.createElement("span"),b.innerHTML=a.INVISIBLE_SPACE),b=c._wysihtml5ScrollIntoViewElement=b,d){this.insertNode(b);var d=b,e=0;if(d.parentNode)do e+=d.offsetTop||0,d=d.offsetParent;while(d);d=e,b.parentNode.removeChild(b),d>c.body.scrollTop&&(c.body.scrollTop=d)}},selectLine:function(){a.browser.supportsSelectionModify()?this._selectLine_W3C():this.doc.selection&&this._selectLine_MSIE()},_selectLine_W3C:function(){var a=this.doc.defaultView.getSelection();a.modify("extend","left","lineboundary"),a.modify("extend","right","lineboundary")},_selectLine_MSIE:function(){var a,b=this.doc.selection.createRange(),c=b.boundingTop,d=this.doc.body.scrollWidth;if(b.moveToPoint){for(0===c&&(a=this.doc.createElement("span"),this.insertNode(a),c=a.offsetTop,a.parentNode.removeChild(a)),c+=1,a=-10;d>a;a+=2)try{b.moveToPoint(a,c);break}catch(e){}for(a=this.doc.selection.createRange();d>=0;d--)try{a.moveToPoint(d,c);break}catch(f){}b.setEndPoint("EndToEnd",a),b.select()}},getText:function(){var a=this.getSelection();return a?a.toString():""},getNodes:function(a,b){var c=this.getRange();return c?c.getNodes([a],b):[]},getRange:function(){var a=this.getSelection();return a&&a.rangeCount&&a.getRangeAt(0)},getSelection:function(){return rangy.getSelection(this.doc.defaultView||this.doc.parentWindow)},setSelection:function(a){return rangy.getSelection(this.doc.defaultView||this.doc.parentWindow).setSingleRange(a)}})}(wysihtml5),function(a,b){function c(a,c){return b.dom.isCharacterDataNode(a)?0==c?!!a.previousSibling:c==a.length?!!a.nextSibling:!0:c>0&&c<a.childNodes.length}function d(a,c,e){var f;if(b.dom.isCharacterDataNode(c)&&(0==e?(e=b.dom.getNodeIndex(c),c=c.parentNode):e==c.length?(e=b.dom.getNodeIndex(c)+1,c=c.parentNode):f=b.dom.splitDataNode(c,e)),!f){f=c.cloneNode(!1),f.id&&f.removeAttribute("id");for(var g;g=c.childNodes[e];)f.appendChild(g);b.dom.insertAfter(f,c)}return c==a?f:d(a,f.parentNode,b.dom.getNodeIndex(f))}function e(b){this.firstTextNode=(this.isElementMerge=b.nodeType==a.ELEMENT_NODE)?b.lastChild:b,this.textNodes=[this.firstTextNode]}function f(a,b,c,d){this.tagNames=a||[g],this.cssClass=b||"",this.similarClassRegExp=c,this.normalize=d,this.applyToAnyTagName=!1}var g="span",h=/\s+/g;e.prototype={doMerge:function(){for(var a,b,c=[],d=0,e=this.textNodes.length;e>d;++d)a=this.textNodes[d],b=a.parentNode,c[d]=a.data,d&&(b.removeChild(a),b.hasChildNodes()||b.parentNode.removeChild(b));return this.firstTextNode.data=c=c.join("")},getLength:function(){for(var a=this.textNodes.length,b=0;a--;)b+=this.textNodes[a].length;return b},toString:function(){for(var a=[],b=0,c=this.textNodes.length;c>b;++b)a[b]="'"+this.textNodes[b].data+"'";return"[Merge("+a.join(",")+")]"}},f.prototype={getAncestorWithClass:function(c){for(var d;c;){if(this.cssClass)if(d=this.cssClass,c.className){var e=c.className.match(this.similarClassRegExp)||[];d=e[e.length-1]===d}else d=!1;else d=!0;if(c.nodeType==a.ELEMENT_NODE&&b.dom.arrayContains(this.tagNames,c.tagName.toLowerCase())&&d)return c;c=c.parentNode}return!1},postApply:function(a,b){for(var c,d,f,g=a[0],h=a[a.length-1],i=[],j=g,k=h,l=0,m=h.length,n=0,o=a.length;o>n;++n)d=a[n],(f=this.getAdjacentMergeableTextNode(d.parentNode,!1))?(c||(c=new e(f),i.push(c)),c.textNodes.push(d),d===g&&(j=c.firstTextNode,l=j.length),d===h&&(k=c.firstTextNode,m=c.getLength())):c=null;if((g=this.getAdjacentMergeableTextNode(h.parentNode,!0))&&(c||(c=new e(h),i.push(c)),c.textNodes.push(g)),i.length){for(n=0,o=i.length;o>n;++n)i[n].doMerge();b.setStart(j,l),b.setEnd(k,m)}},getAdjacentMergeableTextNode:function(b,c){var d=b.nodeType==a.TEXT_NODE,e=d?b.parentNode:b,f=c?"nextSibling":"previousSibling";if(d){if((d=b[f])&&d.nodeType==a.TEXT_NODE)return d}else if((d=e[f])&&this.areElementsMergeable(b,d))return d[c?"firstChild":"lastChild"];return null},areElementsMergeable:function(a,c){var d;if((d=b.dom.arrayContains(this.tagNames,(a.tagName||"").toLowerCase()))&&(d=b.dom.arrayContains(this.tagNames,(c.tagName||"").toLowerCase()))&&(d=a.className.replace(h," ")==c.className.replace(h," ")))a:if(a.attributes.length!=c.attributes.length)d=!1;else{d=0;for(var e,f,g=a.attributes.length;g>d;++d)if(e=a.attributes[d],f=e.name,"class"!=f&&(f=c.attributes.getNamedItem(f),e.specified!=f.specified||e.specified&&e.nodeValue!==f.nodeValue)){d=!1;break a}d=!0}return d},createContainer:function(a){return a=a.createElement(this.tagNames[0]),this.cssClass&&(a.className=this.cssClass),a},applyToTextNode:function(a){var c=a.parentNode;1==c.childNodes.length&&b.dom.arrayContains(this.tagNames,c.tagName.toLowerCase())?this.cssClass&&(a=this.cssClass,c.className?(c.className&&(c.className=c.className.replace(this.similarClassRegExp,"")),c.className+=" "+a):c.className=a):(c=this.createContainer(b.dom.getDocument(a)),a.parentNode.insertBefore(c,a),c.appendChild(a))},isRemovable:function(c){return b.dom.arrayContains(this.tagNames,c.tagName.toLowerCase())&&a.lang.string(c.className).trim()==this.cssClass},undoToTextNode:function(a,b,e){if(b.containsNode(e)||(a=b.cloneRange(),a.selectNode(e),a.isPointInRange(b.endContainer,b.endOffset)&&c(b.endContainer,b.endOffset)&&(d(e,b.endContainer,b.endOffset),b.setEndAfter(e)),a.isPointInRange(b.startContainer,b.startOffset)&&c(b.startContainer,b.startOffset)&&(e=d(e,b.startContainer,b.startOffset))),this.similarClassRegExp&&e.className&&(e.className=e.className.replace(this.similarClassRegExp,"")),this.isRemovable(e)){for(b=e,e=b.parentNode;b.firstChild;)e.insertBefore(b.firstChild,b);e.removeChild(b)}},applyToRange:function(b){var c=b.getNodes([a.TEXT_NODE]);if(!c.length)try{var d=this.createContainer(b.endContainer.ownerDocument);return b.surroundContents(d),this.selectNode(b,d),void 0}catch(e){}if(b.splitBoundaries(),c=b.getNodes([a.TEXT_NODE]),c.length){for(var f=0,g=c.length;g>f;++f)d=c[f],this.getAncestorWithClass(d)||this.applyToTextNode(d);b.setStart(c[0],0),d=c[c.length-1],b.setEnd(d,d.length),this.normalize&&this.postApply(c,b)}},undoToRange:function(b){var c,d,e=b.getNodes([a.TEXT_NODE]);e.length?(b.splitBoundaries(),e=b.getNodes([a.TEXT_NODE])):(e=b.endContainer.ownerDocument.createTextNode(a.INVISIBLE_SPACE),b.insertNode(e),b.selectNode(e),e=[e]);for(var f=0,g=e.length;g>f;++f)c=e[f],(d=this.getAncestorWithClass(c))&&this.undoToTextNode(c,b,d);1==g?this.selectNode(b,e[0]):(b.setStart(e[0],0),c=e[e.length-1],b.setEnd(c,c.length),this.normalize&&this.postApply(e,b))},selectNode:function(b,c){var d=c.nodeType===a.ELEMENT_NODE,e="canHaveHTML"in c?c.canHaveHTML:!0,f=d?c.innerHTML:c.data;if((f=""===f||f===a.INVISIBLE_SPACE)&&d&&e)try{c.innerHTML=a.INVISIBLE_SPACE}catch(g){}b.selectNodeContents(c),f&&d?b.collapse(!1):f&&(b.setStartAfter(c),b.setEndAfter(c))},getTextSelectedByRange:function(a,b){var c=b.cloneRange();c.selectNodeContents(a);var d=c.intersection(b),d=d?d.toString():"";return c.detach(),d},isAppliedToRange:function(b){var c,d=[],e=b.getNodes([a.TEXT_NODE]);if(!e.length)return(c=this.getAncestorWithClass(b.startContainer))?[c]:!1;for(var f,g=0,h=e.length;h>g;++g){if(f=this.getTextSelectedByRange(e[g],b),c=this.getAncestorWithClass(e[g]),""!=f&&!c)return!1;d.push(c)}return d},toggleRange:function(a){this.isAppliedToRange(a)?this.undoToRange(a):this.applyToRange(a)}},a.selection.HTMLApplier=f}(wysihtml5,rangy),wysihtml5.Commands=Base.extend({constructor:function(a){this.editor=a,this.composer=a.composer,this.doc=this.composer.doc},support:function(a){return wysihtml5.browser.supportsCommand(this.doc,a)},exec:function(a,b){var c=wysihtml5.commands[a],d=wysihtml5.lang.array(arguments).get(),e=c&&c.exec,f=null;if(this.editor.fire("beforecommand:composer"),e)d.unshift(this.composer),f=e.apply(c,d);else try{f=this.doc.execCommand(a,!1,b)}catch(g){}return this.editor.fire("aftercommand:composer"),f},state:function(a){var b=wysihtml5.commands[a],c=wysihtml5.lang.array(arguments).get(),d=b&&b.state;if(d)return c.unshift(this.composer),d.apply(b,c);try{return this.doc.queryCommandState(a)}catch(e){return!1}},value:function(a){var b=wysihtml5.commands[a],c=b&&b.value;if(c)return c.call(b,this.composer,a);try{return this.doc.queryCommandValue(a)}catch(d){return null}}}),function(a){a.commands.bold={exec:function(b,c){return a.commands.formatInline.exec(b,c,"b")},state:function(b,c){return a.commands.formatInline.state(b,c,"b")},value:function(){}}}(wysihtml5),function(a){function b(b,f){var g,h,i,j=b.doc,k="_wysihtml5-temp-"+ +new Date,l=0;for(a.commands.formatInline.exec(b,c,d,k,/non-matching-class/g),g=j.querySelectorAll(d+"."+k),k=g.length;k>l;l++)for(i in h=g[l],h.removeAttribute("class"),f)h.setAttribute(i,f[i]);l=h,1===k&&(i=e.getTextContent(h),k=!!h.querySelector("*"),i=""===i||i===a.INVISIBLE_SPACE,!k&&i&&(e.setTextContent(h,f.text||h.href),j=j.createTextNode(" "),b.selection.setAfter(h),b.selection.insertNode(j),l=j)),b.selection.setAfter(l)}var c,d="A",e=a.dom;a.commands.createLink={exec:function(a,c,d){var f=this.state(a,c);f?a.selection.executeAndRestore(function(){for(var a,b,c,d=f.length,g=0;d>g;g++)a=f[g],b=e.getParentElement(a,{nodeName:"code"}),c=e.getTextContent(a),c.match(e.autoLink.URL_REG_EXP)&&!b?e.renameElement(a,"code"):e.replaceWithChildNodes(a)}):(d="object"==typeof d?d:{href:d},b(a,d))},state:function(b,c){return a.commands.formatInline.state(b,c,"A")},value:function(){return c}}}(wysihtml5),function(a){var b=/wysiwyg-font-size-[a-z\-]+/g;a.commands.fontSize={exec:function(c,d,e){return a.commands.formatInline.exec(c,d,"span","wysiwyg-font-size-"+e,b)},state:function(c,d,e){return a.commands.formatInline.state(c,d,"span","wysiwyg-font-size-"+e,b)},value:function(){}}}(wysihtml5),function(a){var b=/wysiwyg-color-[a-z]+/g;a.commands.foreColor={exec:function(c,d,e){return a.commands.formatInline.exec(c,d,"span","wysiwyg-color-"+e,b)},state:function(c,d,e){return a.commands.formatInline.state(c,d,"span","wysiwyg-color-"+e,b)},value:function(){}}}(wysihtml5),function(a){function b(b){for(b=b.previousSibling;b&&b.nodeType===a.TEXT_NODE&&!a.lang.string(b.data).trim();)b=b.previousSibling;return b}function c(b){for(b=b.nextSibling;b&&b.nodeType===a.TEXT_NODE&&!a.lang.string(b.data).trim();)b=b.nextSibling;return b}function d(a){return"BR"===a.nodeName||"block"===g.getStyle("display").from(a)?!0:!1}function e(b,c,d,e){if(e)var f=g.observe(b,"DOMNodeInserted",function(b){var c,b=b.target;b.nodeType===a.ELEMENT_NODE&&(c=g.getStyle("display").from(b),"inline"!==c.substr(0,6)&&(b.className+=" "+e))});b.execCommand(c,!1,d),f&&f.stop()}function f(a,d){a.selection.selectLine(),a.selection.surround(d);var e=c(d),f=b(d);e&&"BR"===e.nodeName&&e.parentNode.removeChild(e),f&&"BR"===f.nodeName&&f.parentNode.removeChild(f),(e=d.lastChild)&&"BR"===e.nodeName&&e.parentNode.removeChild(e),a.selection.selectNode(d)}var g=a.dom,h="H1 H2 H3 H4 H5 H6 P BLOCKQUOTE DIV".split(" ");a.commands.formatBlock={exec:function(i,j,k,l,m){var n,o=i.doc,p=this.state(i,j,k,l,m),k="string"==typeof k?k.toUpperCase():k;if(p)i.selection.executeAndRestoreSimple(function(){m&&(p.className=p.className.replace(m,""));var e=!!a.lang.string(p.className).trim();if(e||p.nodeName!==(k||"DIV"))e&&g.renameElement(p,"DIV");else{var e=p,f=e.ownerDocument,h=c(e),i=b(e);h&&!d(h)&&e.parentNode.insertBefore(f.createElement("br"),h),i&&!d(i)&&e.parentNode.insertBefore(f.createElement("br"),e),g.replaceWithChildNodes(p)}});else{if((null===k||a.lang.array(h).contains(k))&&(n=i.selection.getSelectedNode(),p=g.getParentElement(n,{nodeName:h})))return i.selection.executeAndRestoreSimple(function(){if(k&&(p=g.renameElement(p,k)),l){var a=p;a.className?(a.className=a.className.replace(m,""),a.className+=" "+l):a.className=l}}),void 0;i.commands.support(j)?e(o,j,k||"DIV",l):(p=o.createElement(k||"DIV"),l&&(p.className=l),f(i,p))}},state:function(a,b,c,d,e){return c="string"==typeof c?c.toUpperCase():c,a=a.selection.getSelectedNode(),g.getParentElement(a,{nodeName:c,className:d,classRegExp:e})},value:function(){}}}(wysihtml5),function(a){function b(b,e,f){var g=b+":"+e;if(!d[g]){var h=d,i=a.selection.HTMLApplier,j=c[b],b=j?[b.toLowerCase(),j.toLowerCase()]:[b.toLowerCase()];h[g]=new i(b,e,f,!0)}return d[g]}var c={strong:"b",em:"i",b:"strong",i:"em"},d={};a.commands.formatInline={exec:function(a,c,d,e,f){return(c=a.selection.getRange())?(b(d,e,f).toggleRange(c),a.selection.setSelection(c),void 0):!1},state:function(d,e,f,g,h){var e=d.doc,i=c[f]||f;return!a.dom.hasElementWithTagName(e,f)&&!a.dom.hasElementWithTagName(e,i)||g&&!a.dom.hasElementWithClassName(e,g)?!1:(d=d.selection.getRange(),d?b(f,g,h).isAppliedToRange(d):!1)},value:function(){}}}(wysihtml5),function(a){a.commands.insertHTML={exec:function(a,b,c){a.commands.support(b)?a.doc.execCommand(b,!1,c):a.selection.insertHTML(c)},state:function(){return!1},value:function(){}}}(wysihtml5),function(a){a.commands.insertImage={exec:function(b,c,d){var e,d="object"==typeof d?d:{src:d},f=b.doc,c=this.state(b);if(c)b.selection.setBefore(c),d=c.parentNode,d.removeChild(c),a.dom.removeEmptyTextNodes(d),"A"===d.nodeName&&!d.firstChild&&(b.selection.setAfter(d),d.parentNode.removeChild(d)),a.quirks.redraw(b.element);else{c=f.createElement("IMG");for(e in d)c[e]=d[e];b.selection.insertNode(c),a.browser.hasProblemsSettingCaretAfterImg()?(d=f.createTextNode(a.INVISIBLE_SPACE),b.selection.insertNode(d),b.selection.setAfter(d)):b.selection.setAfter(c)}},state:function(b){var c;return a.dom.hasElementWithTagName(b.doc,"IMG")?(c=b.selection.getSelectedNode())?"IMG"===c.nodeName?c:c.nodeType!==a.ELEMENT_NODE?!1:(c=b.selection.getText(),(c=a.lang.string(c).trim())?!1:(b=b.selection.getNodes(a.ELEMENT_NODE,function(a){return"IMG"===a.nodeName}),1!==b.length?!1:b[0])):!1:!1},value:function(a){return(a=this.state(a))&&a.src}}}(wysihtml5),function(a){var b="<br>"+(a.browser.needsSpaceAfterLineBreak()?" ":"");a.commands.insertLineBreak={exec:function(c,d){c.commands.support(d)?(c.doc.execCommand(d,!1,null),a.browser.autoScrollsToCaret()||c.selection.scrollIntoView()):c.commands.exec("insertHTML",b)},state:function(){return!1},value:function(){}}}(wysihtml5),function(a){a.commands.insertOrderedList={exec:function(b,c){var d,e=b.doc,f=b.selection.getSelectedNode(),g=a.dom.getParentElement(f,{nodeName:"OL"}),h=a.dom.getParentElement(f,{nodeName:"UL"}),f="_wysihtml5-temp-"+(new Date).getTime();b.commands.support(c)?e.execCommand(c,!1,null):g?b.selection.executeAndRestoreSimple(function(){a.dom.resolveList(g)}):h?b.selection.executeAndRestoreSimple(function(){a.dom.renameElement(h,"ol")}):(b.commands.exec("formatBlock","div",f),d=e.querySelector("."+f),e=""===d.innerHTML||d.innerHTML===a.INVISIBLE_SPACE,b.selection.executeAndRestoreSimple(function(){g=a.dom.convertToList(d,"ol")}),e&&b.selection.selectNode(g.querySelector("li")))},state:function(b){return b=b.selection.getSelectedNode(),a.dom.getParentElement(b,{nodeName:"OL"})},value:function(){}}}(wysihtml5),function(a){a.commands.insertUnorderedList={exec:function(b,c){var d,e=b.doc,f=b.selection.getSelectedNode(),g=a.dom.getParentElement(f,{nodeName:"UL"}),h=a.dom.getParentElement(f,{nodeName:"OL"}),f="_wysihtml5-temp-"+(new Date).getTime();b.commands.support(c)?e.execCommand(c,!1,null):g?b.selection.executeAndRestoreSimple(function(){a.dom.resolveList(g)}):h?b.selection.executeAndRestoreSimple(function(){a.dom.renameElement(h,"ul")}):(b.commands.exec("formatBlock","div",f),d=e.querySelector("."+f),e=""===d.innerHTML||d.innerHTML===a.INVISIBLE_SPACE,b.selection.executeAndRestoreSimple(function(){g=a.dom.convertToList(d,"ul")}),e&&b.selection.selectNode(g.querySelector("li")))},state:function(b){return b=b.selection.getSelectedNode(),a.dom.getParentElement(b,{nodeName:"UL"})},value:function(){}}}(wysihtml5),function(a){a.commands.italic={exec:function(b,c){return a.commands.formatInline.exec(b,c,"i")},state:function(b,c){return a.commands.formatInline.state(b,c,"i")},value:function(){}}}(wysihtml5),function(a){var b=/wysiwyg-text-align-[a-z]+/g;a.commands.justifyCenter={exec:function(c){return a.commands.formatBlock.exec(c,"formatBlock",null,"wysiwyg-text-align-center",b)},state:function(c){return a.commands.formatBlock.state(c,"formatBlock",null,"wysiwyg-text-align-center",b)},value:function(){}}}(wysihtml5),function(a){var b=/wysiwyg-text-align-[a-z]+/g;a.commands.justifyLeft={exec:function(c){return a.commands.formatBlock.exec(c,"formatBlock",null,"wysiwyg-text-align-left",b)},state:function(c){return a.commands.formatBlock.state(c,"formatBlock",null,"wysiwyg-text-align-left",b)},value:function(){}}}(wysihtml5),function(a){var b=/wysiwyg-text-align-[a-z]+/g;a.commands.justifyRight={exec:function(c){return a.commands.formatBlock.exec(c,"formatBlock",null,"wysiwyg-text-align-right",b)},state:function(c){return a.commands.formatBlock.state(c,"formatBlock",null,"wysiwyg-text-align-right",b)},value:function(){}}}(wysihtml5),function(a){a.commands.underline={exec:function(b,c){return a.commands.formatInline.exec(b,c,"u")},state:function(b,c){return a.commands.formatInline.state(b,c,"u")},value:function(){}}}(wysihtml5),function(a){var b='<span id="_wysihtml5-undo" class="_wysihtml5-temp">'+a.INVISIBLE_SPACE+"</span>",c='<span id="_wysihtml5-redo" class="_wysihtml5-temp">'+a.INVISIBLE_SPACE+"</span>",d=a.dom;a.UndoManager=a.lang.Dispatcher.extend({constructor:function(a){this.editor=a,this.composer=a.composer,this.element=this.composer.element,this.history=[this.composer.getValue()],this.position=1,this.composer.commands.support("insertHTML")&&this._observe()},_observe:function(){var e,f=this,g=this.composer.sandbox.getDocument();if(d.observe(this.element,"keydown",function(a){if(!a.altKey&&(a.ctrlKey||a.metaKey)){var b=a.keyCode,c=90===b&&a.shiftKey||89===b;90!==b||a.shiftKey?c&&(f.redo(),a.preventDefault()):(f.undo(),a.preventDefault())}}),d.observe(this.element,"keydown",function(a){a=a.keyCode,a!==e&&(e=a,(8===a||46===a)&&f.transact())}),a.browser.hasUndoInContextMenu()){var h,i,j=function(){for(var a;a=g.querySelector("._wysihtml5-temp");)a.parentNode.removeChild(a);clearInterval(h)};d.observe(this.element,"contextmenu",function(){j(),f.composer.selection.executeAndRestoreSimple(function(){f.element.lastChild&&f.composer.selection.setAfter(f.element.lastChild),g.execCommand("insertHTML",!1,b),g.execCommand("insertHTML",!1,c),g.execCommand("undo",!1,null)}),h=setInterval(function(){g.getElementById("_wysihtml5-redo")?(j(),f.redo()):g.getElementById("_wysihtml5-undo")||(j(),f.undo())},400),i||(i=!0,d.observe(document,"mousedown",j),d.observe(g,["mousedown","paste","cut","copy"],j))})}this.editor.observe("newword:composer",function(){f.transact()}).observe("beforecommand:composer",function(){f.transact()})},transact:function(){var a=this.history[this.position-1],b=this.composer.getValue();b!=a&&(40<(this.history.length=this.position)&&(this.history.shift(),this.position--),this.position++,this.history.push(b))},undo:function(){this.transact(),1>=this.position||(this.set(this.history[--this.position-1]),this.editor.fire("undo:composer"))},redo:function(){this.position>=this.history.length||(this.set(this.history[++this.position-1]),this.editor.fire("redo:composer"))},set:function(a){this.composer.setValue(a),this.editor.focus(!0)}})}(wysihtml5),wysihtml5.views.View=Base.extend({constructor:function(a,b,c){this.parent=a,this.element=b,this.config=c,this._observeViewChange()},_observeViewChange:function(){var a=this;this.parent.observe("beforeload",function(){a.parent.observe("change_view",function(b){b===a.name?(a.parent.currentView=a,a.show(),setTimeout(function(){a.focus()},0)):a.hide()})})},focus:function(){if(this.element.ownerDocument.querySelector(":focus")!==this.element)try{this.element.focus()}catch(a){}},hide:function(){this.element.style.display="none"},show:function(){this.element.style.display=""},disable:function(){this.element.setAttribute("disabled","disabled")},enable:function(){this.element.removeAttribute("disabled")}}),function(a){var b=a.dom,c=a.browser;a.views.Composer=a.views.View.extend({name:"composer",CARET_HACK:"<br>",constructor:function(a,b,c){this.base(a,b,c),this.textarea=this.parent.textarea,this._initSandbox()},clear:function(){this.element.innerHTML=c.displaysCaretInEmptyContentEditableCorrectly()?"":this.CARET_HACK},getValue:function(b){var c=this.isEmpty()?"":a.quirks.getCorrectInnerHTML(this.element);return b&&(c=this.parent.parse(c)),c=a.lang.string(c).replace(a.INVISIBLE_SPACE).by("")},setValue:function(a,b){b&&(a=this.parent.parse(a)),this.element.innerHTML=a},show:function(){this.iframe.style.display=this._displayStyle||"",this.disable(),this.enable()},hide:function(){this._displayStyle=b.getStyle("display").from(this.iframe),"none"===this._displayStyle&&(this._displayStyle=null),this.iframe.style.display="none"},disable:function(){this.element.removeAttribute("contentEditable"),this.base()},enable:function(){this.element.setAttribute("contentEditable","true"),this.base()},focus:function(b){a.browser.doesAsyncFocus()&&this.hasPlaceholderSet()&&this.clear(),this.base();var c=this.element.lastChild;b&&c&&("BR"===c.nodeName?this.selection.setBefore(this.element.lastChild):this.selection.setAfter(this.element.lastChild))},getTextContent:function(){return b.getTextContent(this.element)},hasPlaceholderSet:function(){return this.getTextContent()==this.textarea.element.getAttribute("placeholder")},isEmpty:function(){var a=this.element.innerHTML;return""===a||a===this.CARET_HACK||this.hasPlaceholderSet()||""===this.getTextContent()&&!this.element.querySelector("blockquote, ul, ol, img, embed, object, table, iframe, svg, video, audio, button, input, select, textarea")},_initSandbox:function(){var a=this;this.sandbox=new b.Sandbox(function(){a._create()},{stylesheets:this.config.stylesheets}),this.iframe=this.sandbox.getIframe();var c=document.createElement("input");c.type="hidden",c.name="_wysihtml5_mode",c.value=1;var d=this.textarea.element;b.insert(this.iframe).after(d),b.insert(c).after(d)},_create:function(){var d=this;this.doc=this.sandbox.getDocument(),this.element=this.doc.body,this.textarea=this.parent.textarea,this.element.innerHTML=this.textarea.getValue(!0),this.enable(),this.selection=new a.Selection(this.parent),this.commands=new a.Commands(this.parent),b.copyAttributes("className spellcheck title lang dir accessKey".split(" ")).from(this.textarea.element).to(this.element),b.addClass(this.element,this.config.composerClassName),this.config.style&&this.style(),this.observe();var e=this.config.name;e&&(b.addClass(this.element,e),b.addClass(this.iframe,e)),(e="string"==typeof this.config.placeholder?this.config.placeholder:this.textarea.element.getAttribute("placeholder"))&&b.simulatePlaceholder(this.parent,this,e),this.commands.exec("styleWithCSS",!1),this._initAutoLinking(),this._initObjectResizing(),this._initUndoManager(),(this.textarea.element.hasAttribute("autofocus")||document.querySelector(":focus")==this.textarea.element)&&setTimeout(function(){d.focus()},100),a.quirks.insertLineBreakOnReturn(this),c.clearsContentEditableCorrectly()||a.quirks.ensureProperClearing(this),c.clearsListsInContentEditableCorrectly()||a.quirks.ensureProperClearingOfLists(this),this.initSync&&this.config.sync&&this.initSync(),this.textarea.hide(),this.parent.fire("beforeload").fire("load")},_initAutoLinking:function(){var d=this,e=c.canDisableAutoLinking(),f=c.doesAutoLinkingInContentEditable();if(e&&this.commands.exec("autoUrlDetect",!1),this.config.autoLink){(!f||f&&e)&&this.parent.observe("newword:composer",function(){d.selection.executeAndRestore(function(a,c){b.autoLink(c.parentNode)})});var g=this.sandbox.getDocument().getElementsByTagName("a"),h=b.autoLink.URL_REG_EXP,i=function(c){return c=a.lang.string(b.getTextContent(c)).trim(),"www."===c.substr(0,4)&&(c="http://"+c),c};b.observe(this.element,"keydown",function(a){if(g.length){var c,a=d.selection.getSelectedNode(a.target.ownerDocument),e=b.getParentElement(a,{nodeName:"A"},4);e&&(c=i(e),setTimeout(function(){var a=i(e);a!==c&&a.match(h)&&e.setAttribute("href",a)},0))}})}},_initObjectResizing:function(){var d=["width","height"],e=d.length,f=this.element;this.commands.exec("enableObjectResizing",this.config.allowObjectResizing),this.config.allowObjectResizing?c.supportsEvent("resizeend")&&b.observe(f,"resizeend",function(b){for(var c,b=b.target||b.srcElement,g=b.style,h=0;e>h;h++)c=d[h],g[c]&&(b.setAttribute(c,parseInt(g[c],10)),g[c]="");a.quirks.redraw(f)}):c.supportsEvent("resizestart")&&b.observe(f,"resizestart",function(a){a.preventDefault()})},_initUndoManager:function(){new a.UndoManager(this.parent)}})}(wysihtml5),function(a){var b=a.dom,c=document,d=window,e=c.createElement("div"),f="background-color color cursor font-family font-size font-style font-variant font-weight line-height letter-spacing text-align text-decoration text-indent text-rendering word-break word-wrap word-spacing".split(" "),g="background-color border-collapse border-bottom-color border-bottom-style border-bottom-width border-left-color border-left-style border-left-width border-right-color border-right-style border-right-width border-top-color border-top-style border-top-width clear display float margin-bottom margin-left margin-right margin-top outline-color outline-offset outline-width outline-style padding-left padding-right padding-top padding-bottom position top left right bottom z-index vertical-align text-align -webkit-box-sizing -moz-box-sizing -ms-box-sizing box-sizing -webkit-box-shadow -moz-box-shadow -ms-box-shadow box-shadow -webkit-border-top-right-radius -moz-border-radius-topright border-top-right-radius -webkit-border-bottom-right-radius -moz-border-radius-bottomright border-bottom-right-radius -webkit-border-bottom-left-radius -moz-border-radius-bottomleft border-bottom-left-radius -webkit-border-top-left-radius -moz-border-radius-topleft border-top-left-radius width height".split(" "),h="width height top left right bottom".split(" "),i=["html { height: 100%; }","body { min-height: 100%; padding: 0; margin: 0; margin-top: -1px; padding-top: 1px; }","._wysihtml5-temp { display: none; }",a.browser.isGecko?"body.placeholder { color: graytext !important; }":"body.placeholder { color: #a9a9a9 !important; }","body[disabled] { background-color: #eee !important; color: #999 !important; cursor: default !important; }","img:-moz-broken { -moz-force-broken-image-icon: 1; height: 24px; width: 24px; }"],j=function(a){if(a.setActive)try{a.setActive()}catch(e){}else{var f=a.style,g=c.documentElement.scrollTop||c.body.scrollTop,h=c.documentElement.scrollLeft||c.body.scrollLeft,f={position:f.position,top:f.top,left:f.left,WebkitUserSelect:f.WebkitUserSelect};b.setStyles({position:"absolute",top:"-99999px",left:"-99999px",WebkitUserSelect:"none"}).on(a),a.focus(),b.setStyles(f).on(a),d.scrollTo&&d.scrollTo(h,g)}};a.views.Composer.prototype.style=function(){var k=this,l=c.querySelector(":focus"),m=this.textarea.element,n=m.hasAttribute("placeholder"),o=n&&m.getAttribute("placeholder");this.focusStylesHost=this.focusStylesHost||e.cloneNode(!1),this.blurStylesHost=this.blurStylesHost||e.cloneNode(!1),n&&m.removeAttribute("placeholder"),m===l&&m.blur(),b.copyStyles(g).from(m).to(this.iframe).andTo(this.blurStylesHost),b.copyStyles(f).from(m).to(this.element).andTo(this.blurStylesHost),b.insertCSS(i).into(this.element.ownerDocument),j(m),b.copyStyles(g).from(m).to(this.focusStylesHost),b.copyStyles(f).from(m).to(this.focusStylesHost); -var p=a.lang.array(g).without(["display"]);if(l?l.focus():m.blur(),n&&m.setAttribute("placeholder",o),!a.browser.hasCurrentStyleProperty())var q=b.observe(d,"resize",function(){if(b.contains(document.documentElement,k.iframe)){var a=b.getStyle("display").from(m),c=b.getStyle("display").from(k.iframe);m.style.display="",k.iframe.style.display="none",b.copyStyles(h).from(m).to(k.iframe).andTo(k.focusStylesHost).andTo(k.blurStylesHost),k.iframe.style.display=c,m.style.display=a}else q.stop()});return this.parent.observe("focus:composer",function(){b.copyStyles(p).from(k.focusStylesHost).to(k.iframe),b.copyStyles(f).from(k.focusStylesHost).to(k.element)}),this.parent.observe("blur:composer",function(){b.copyStyles(p).from(k.blurStylesHost).to(k.iframe),b.copyStyles(f).from(k.blurStylesHost).to(k.element)}),this}}(wysihtml5),function(a){var b=a.dom,c=a.browser,d={66:"bold",73:"italic",85:"underline"};a.views.Composer.prototype.observe=function(){var e=this,f=this.getValue(),g=this.sandbox.getIframe(),h=this.element,i=c.supportsEventsInIframeCorrectly()?h:this.sandbox.getWindow(),j=c.supportsEvent("drop")?["drop","paste"]:["dragdrop","paste"];b.observe(g,"DOMNodeRemoved",function(){clearInterval(k),e.parent.fire("destroy:composer")});var k=setInterval(function(){b.contains(document.documentElement,g)||(clearInterval(k),e.parent.fire("destroy:composer"))},250);b.observe(i,"focus",function(){e.parent.fire("focus").fire("focus:composer"),setTimeout(function(){f=e.getValue()},0)}),b.observe(i,"blur",function(){f!==e.getValue()&&e.parent.fire("change").fire("change:composer"),e.parent.fire("blur").fire("blur:composer")}),a.browser.isIos()&&b.observe(h,"blur",function(){var a=h.ownerDocument.createElement("input"),b=document.documentElement.scrollTop||document.body.scrollTop,c=document.documentElement.scrollLeft||document.body.scrollLeft;try{e.selection.insertNode(a)}catch(d){h.appendChild(a)}a.focus(),a.parentNode.removeChild(a),window.scrollTo(c,b)}),b.observe(h,"dragenter",function(){e.parent.fire("unset_placeholder")}),c.firesOnDropOnlyWhenOnDragOverIsCancelled()&&b.observe(h,["dragover","dragenter"],function(a){a.preventDefault()}),b.observe(h,j,function(a){var b,d=a.dataTransfer;d&&c.supportsDataTransfer()&&(b=d.getData("text/html")||d.getData("text/plain")),b?(h.focus(),e.commands.exec("insertHTML",b),e.parent.fire("paste").fire("paste:composer"),a.stopPropagation(),a.preventDefault()):setTimeout(function(){e.parent.fire("paste").fire("paste:composer")},0)}),b.observe(h,"keyup",function(b){b=b.keyCode,(b===a.SPACE_KEY||b===a.ENTER_KEY)&&e.parent.fire("newword:composer")}),this.parent.observe("paste:composer",function(){setTimeout(function(){e.parent.fire("newword:composer")},0)}),c.canSelectImagesInContentEditable()||b.observe(h,"mousedown",function(a){var b=a.target;"IMG"===b.nodeName&&(e.selection.selectNode(b),a.preventDefault())}),b.observe(h,"keydown",function(a){var b=d[a.keyCode];(a.ctrlKey||a.metaKey)&&!a.altKey&&b&&(e.commands.exec(b),a.preventDefault())}),b.observe(h,"keydown",function(b){var c=e.selection.getSelectedNode(!0),d=b.keyCode;!c||"IMG"!==c.nodeName||d!==a.BACKSPACE_KEY&&d!==a.DELETE_KEY||(d=c.parentNode,d.removeChild(c),"A"===d.nodeName&&!d.firstChild&&d.parentNode.removeChild(d),setTimeout(function(){a.quirks.redraw(h)},0),b.preventDefault())});var l={IMG:"Image: ",A:"Link: "};b.observe(h,"mouseover",function(a){var a=a.target,b=a.nodeName;!("A"!==b&&"IMG"!==b)&&!a.hasAttribute("title")&&(b=l[b]+(a.getAttribute("href")||a.getAttribute("src")),a.setAttribute("title",b))})}}(wysihtml5),function(a){a.views.Synchronizer=Base.extend({constructor:function(a,b,c){this.editor=a,this.textarea=b,this.composer=c,this._observe()},fromComposerToTextarea:function(b){this.textarea.setValue(a.lang.string(this.composer.getValue()).trim(),b)},fromTextareaToComposer:function(a){var b=this.textarea.getValue();b?this.composer.setValue(b,a):(this.composer.clear(),this.editor.fire("set_placeholder"))},sync:function(a){"textarea"===this.editor.currentView.name?this.fromTextareaToComposer(a):this.fromComposerToTextarea(a)},_observe:function(){var b,c=this,d=this.textarea.element.form,e=function(){b=setInterval(function(){c.fromComposerToTextarea()},400)},f=function(){clearInterval(b),b=null};e(),d&&(a.dom.observe(d,"submit",function(){c.sync(!0)}),a.dom.observe(d,"reset",function(){setTimeout(function(){c.fromTextareaToComposer()},0)})),this.editor.observe("change_view",function(a){"composer"!==a||b?"textarea"===a&&(c.fromComposerToTextarea(!0),f()):(c.fromTextareaToComposer(!0),e())}),this.editor.observe("destroy:composer",f)}})}(wysihtml5),wysihtml5.views.Textarea=wysihtml5.views.View.extend({name:"textarea",constructor:function(a,b,c){this.base(a,b,c),this._observe()},clear:function(){this.element.value=""},getValue:function(a){var b=this.isEmpty()?"":this.element.value;return a&&(b=this.parent.parse(b)),b},setValue:function(a,b){b&&(a=this.parent.parse(a)),this.element.value=a},hasPlaceholderSet:function(){var a=wysihtml5.browser.supportsPlaceholderAttributeOn(this.element),b=this.element.getAttribute("placeholder")||null,c=this.element.value;return a&&!c||c===b},isEmpty:function(){return!wysihtml5.lang.string(this.element.value).trim()||this.hasPlaceholderSet()},_observe:function(){var a=this.element,b=this.parent,c={focusin:"focus",focusout:"blur"},d=wysihtml5.browser.supportsEvent("focusin")?["focusin","focusout","change"]:["focus","blur","change"];b.observe("beforeload",function(){wysihtml5.dom.observe(a,d,function(a){a=c[a.type]||a.type,b.fire(a).fire(a+":textarea")}),wysihtml5.dom.observe(a,["paste","drop"],function(){setTimeout(function(){b.fire("paste").fire("paste:textarea")},0)})})}}),function(a){var b=a.dom;a.toolbar.Dialog=a.lang.Dispatcher.extend({constructor:function(a,b){this.link=a,this.container=b},_observe:function(){if(!this._observed){var c=this,d=function(a){var b=c._serialize();b==c.elementToChange?c.fire("edit",b):c.fire("save",b),c.hide(),a.preventDefault(),a.stopPropagation()};b.observe(c.link,"click",function(){b.hasClass(c.link,"wysihtml5-command-dialog-opened")&&setTimeout(function(){c.hide()},0)}),b.observe(this.container,"keydown",function(b){var e=b.keyCode;e===a.ENTER_KEY&&d(b),e===a.ESCAPE_KEY&&c.hide()}),b.delegate(this.container,"[data-wysihtml5-dialog-action=save]","click",d),b.delegate(this.container,"[data-wysihtml5-dialog-action=cancel]","click",function(a){c.fire("cancel"),c.hide(),a.preventDefault(),a.stopPropagation()});for(var e=this.container.querySelectorAll("input, select, textarea"),f=0,g=e.length,h=function(){clearInterval(c.interval)};g>f;f++)b.observe(e[f],"change",h);this._observed=!0}},_serialize:function(){for(var a=this.elementToChange||{},b=this.container.querySelectorAll("[data-wysihtml5-dialog-field]"),c=b.length,d=0;c>d;d++)a[b[d].getAttribute("data-wysihtml5-dialog-field")]=b[d].value;return a},_interpolate:function(a){for(var b,c,d=document.querySelector(":focus"),e=this.container.querySelectorAll("[data-wysihtml5-dialog-field]"),f=e.length,g=0;f>g;g++)b=e[g],b!==d&&!(a&&"hidden"===b.type)&&(c=b.getAttribute("data-wysihtml5-dialog-field"),c=this.elementToChange?this.elementToChange[c]||"":b.defaultValue,b.value=c)},show:function(a){var c=this,d=this.container.querySelector("input, select, textarea");if(this.elementToChange=a,this._observe(),this._interpolate(),a&&(this.interval=setInterval(function(){c._interpolate(!0)},500)),b.addClass(this.link,"wysihtml5-command-dialog-opened"),this.container.style.display="",this.fire("show"),d&&!a)try{d.focus()}catch(e){}},hide:function(){clearInterval(this.interval),this.elementToChange=null,b.removeClass(this.link,"wysihtml5-command-dialog-opened"),this.container.style.display="none",this.fire("hide")}})}(wysihtml5),function(a){var b=a.dom,c={position:"relative"},d={left:0,margin:0,opacity:0,overflow:"hidden",padding:0,position:"absolute",top:0,zIndex:1},e={cursor:"inherit",fontSize:"50px",height:"50px",marginTop:"-25px",outline:0,padding:0,position:"absolute",right:"-4px",top:"50%"},f={"x-webkit-speech":"",speech:""};a.toolbar.Speech=function(g,h){var i=document.createElement("input");if(a.browser.supportsSpeechApiOn(i)){var j=document.createElement("div");a.lang.object(d).merge({width:h.offsetWidth+"px",height:h.offsetHeight+"px"}),b.insert(i).into(j),b.insert(j).into(h),b.setStyles(e).on(i),b.setAttributes(f).on(i),b.setStyles(d).on(j),b.setStyles(c).on(h),b.observe(i,"onwebkitspeechchange"in i?"webkitspeechchange":"speechchange",function(){g.execCommand("insertText",i.value),i.value=""}),b.observe(i,"click",function(a){b.hasClass(h,"wysihtml5-command-disabled")&&a.preventDefault(),a.stopPropagation()})}else h.style.display="none"}}(wysihtml5),function(a){var b=a.dom;a.toolbar.Toolbar=Base.extend({constructor:function(b,c){this.editor=b,this.container="string"==typeof c?document.getElementById(c):c,this.composer=b.composer,this._getLinks("command"),this._getLinks("action"),this._observe(),this.show();for(var d=this.container.querySelectorAll("[data-wysihtml5-command=insertSpeech]"),e=d.length,f=0;e>f;f++)new a.toolbar.Speech(this,d[f])},_getLinks:function(b){for(var c,d,e,f,g,h=this[b+"Links"]=a.lang.array(this.container.querySelectorAll("[data-wysihtml5-"+b+"]")).get(),i=h.length,j=0,k=this[b+"Mapping"]={};i>j;j++)c=h[j],e=c.getAttribute("data-wysihtml5-"+b),f=c.getAttribute("data-wysihtml5-"+b+"-value"),d=this.container.querySelector("[data-wysihtml5-"+b+"-group='"+e+"']"),g=this._getDialog(c,e),k[e+":"+f]={link:c,group:d,name:e,value:f,dialog:g,state:!1}},_getDialog:function(b,c){var d,e,f=this,g=this.container.querySelector("[data-wysihtml5-dialog='"+c+"']");return g&&(d=new a.toolbar.Dialog(b,g),d.observe("show",function(){e=f.composer.selection.getBookmark(),f.editor.fire("show:dialog",{command:c,dialogContainer:g,commandLink:b})}),d.observe("save",function(a){e&&f.composer.selection.setBookmark(e),f._execCommand(c,a),f.editor.fire("save:dialog",{command:c,dialogContainer:g,commandLink:b})}),d.observe("cancel",function(){f.editor.focus(!1),f.editor.fire("cancel:dialog",{command:c,dialogContainer:g,commandLink:b})})),d},execCommand:function(a,b){if(!this.commandsDisabled){var c=this.commandMapping[a+":"+b];c&&c.dialog&&!c.state?c.dialog.show():this._execCommand(a,b)}},_execCommand:function(a,b){this.editor.focus(!1),this.composer.commands.exec(a,b),this._updateLinkStates()},execAction:function(a){var b=this.editor;switch(a){case"change_view":b.currentView===b.textarea?b.fire("change_view","composer"):b.fire("change_view","textarea")}},_observe:function(){for(var a=this,c=this.editor,d=this.container,e=this.commandLinks.concat(this.actionLinks),f=e.length,g=0;f>g;g++)b.setAttributes({href:"javascript:;",unselectable:"on"}).on(e[g]);b.delegate(d,"[data-wysihtml5-command]","mousedown",function(a){a.preventDefault()}),b.delegate(d,"[data-wysihtml5-command]","click",function(b){var c=this.getAttribute("data-wysihtml5-command"),d=this.getAttribute("data-wysihtml5-command-value");a.execCommand(c,d),b.preventDefault()}),b.delegate(d,"[data-wysihtml5-action]","click",function(b){var c=this.getAttribute("data-wysihtml5-action");a.execAction(c),b.preventDefault()}),c.observe("focus:composer",function(){a.bookmark=null,clearInterval(a.interval),a.interval=setInterval(function(){a._updateLinkStates()},500)}),c.observe("blur:composer",function(){clearInterval(a.interval)}),c.observe("destroy:composer",function(){clearInterval(a.interval)}),c.observe("change_view",function(c){setTimeout(function(){a.commandsDisabled="composer"!==c,a._updateLinkStates(),a.commandsDisabled?b.addClass(d,"wysihtml5-commands-disabled"):b.removeClass(d,"wysihtml5-commands-disabled")},0)})},_updateLinkStates:function(){var c,d,e,f=this.commandMapping,g=this.actionMapping;for(c in f)e=f[c],this.commandsDisabled?(d=!1,b.removeClass(e.link,"wysihtml5-command-active"),e.group&&b.removeClass(e.group,"wysihtml5-command-active"),e.dialog&&e.dialog.hide()):(d=this.composer.commands.state(e.name,e.value),a.lang.object(d).isArray()&&(d=1===d.length?d[0]:!0),b.removeClass(e.link,"wysihtml5-command-disabled"),e.group&&b.removeClass(e.group,"wysihtml5-command-disabled")),e.state!==d&&((e.state=d)?(b.addClass(e.link,"wysihtml5-command-active"),e.group&&b.addClass(e.group,"wysihtml5-command-active"),e.dialog&&("object"==typeof d?e.dialog.show(d):e.dialog.hide())):(b.removeClass(e.link,"wysihtml5-command-active"),e.group&&b.removeClass(e.group,"wysihtml5-command-active"),e.dialog&&e.dialog.hide()));for(c in g)f=g[c],"change_view"===f.name&&(f.state=this.editor.currentView===this.editor.textarea,f.state?b.addClass(f.link,"wysihtml5-action-active"):b.removeClass(f.link,"wysihtml5-action-active"))},show:function(){this.container.style.display=""},hide:function(){this.container.style.display="none"}})}(wysihtml5),function(a){var b={name:void 0,style:!0,toolbar:void 0,autoLink:!0,parserRules:{tags:{br:{},span:{},div:{},p:{}},classes:{}},parser:a.dom.parse,composerClassName:"wysihtml5-editor",bodyClassName:"wysihtml5-supported",stylesheets:[],placeholderText:void 0,allowObjectResizing:!0,supportTouchDevices:!0};a.Editor=a.lang.Dispatcher.extend({constructor:function(c,d){if(this.textareaElement="string"==typeof c?document.getElementById(c):c,this.config=a.lang.object({}).merge(b).merge(d).get(),this.currentView=this.textarea=new a.views.Textarea(this,this.textareaElement,this.config),this._isCompatible=a.browser.supported(),!this._isCompatible||!this.config.supportTouchDevices&&a.browser.isTouchDevice()){var e=this;setTimeout(function(){e.fire("beforeload").fire("load")},0)}else{a.dom.addClass(document.body,this.config.bodyClassName),this.currentView=this.composer=new a.views.Composer(this,this.textareaElement,this.config),"function"==typeof this.config.parser&&this._initParser(),this.observe("beforeload",function(){this.synchronizer=new a.views.Synchronizer(this,this.textarea,this.composer),this.config.toolbar&&(this.toolbar=new a.toolbar.Toolbar(this,this.config.toolbar))});try{console.log("Heya! This page is using wysihtml5 for rich text editing. Check out https://github.com/xing/wysihtml5")}catch(f){}}},isCompatible:function(){return this._isCompatible},clear:function(){return this.currentView.clear(),this},getValue:function(a){return this.currentView.getValue(a)},setValue:function(a,b){return a?(this.currentView.setValue(a,b),this):this.clear()},focus:function(a){return this.currentView.focus(a),this},disable:function(){return this.currentView.disable(),this},enable:function(){return this.currentView.enable(),this},isEmpty:function(){return this.currentView.isEmpty()},hasPlaceholderSet:function(){return this.currentView.hasPlaceholderSet()},parse:function(b){var c=this.config.parser(b,this.config.parserRules,this.composer.sandbox.getDocument(),!0);return"object"==typeof b&&a.quirks.redraw(b),c},_initParser:function(){this.observe("paste:composer",function(){var b=this;b.composer.selection.executeAndRestore(function(){a.quirks.cleanPastedHTML(b.composer.element),b.parse(b.composer.element)},!0)}),this.observe("paste:textarea",function(){this.textarea.setValue(this.parse(this.textarea.getValue()))})}})}(wysihtml5);var Handlebars=function(){var a=function(){"use strict";function a(a){this.string=a}var b;return a.prototype.toString=function(){return""+this.string},b=a}(),b=function(a){"use strict";function b(a){return h[a]||"&amp;"}function c(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])}function d(a){return a instanceof g?a.toString():a||0===a?(a=""+a,j.test(a)?a.replace(i,b):a):""}function e(a){return a||0===a?m(a)&&0===a.length?!0:!1:!0}var f={},g=a,h={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"},i=/[&<>"'`]/g,j=/[&<>"'`]/;f.extend=c;var k=Object.prototype.toString;f.toString=k;var l=function(a){return"function"==typeof a};l(/x/)&&(l=function(a){return"function"==typeof a&&"[object Function]"===k.call(a)});var l;f.isFunction=l;var m=Array.isArray||function(a){return a&&"object"==typeof a?"[object Array]"===k.call(a):!1};return f.isArray=m,f.escapeExpression=d,f.isEmpty=e,f}(a),c=function(){"use strict";function a(){for(var a=Error.prototype.constructor.apply(this,arguments),b=0;b<c.length;b++)this[c[b]]=a[c[b]]}var b,c=["description","fileName","lineNumber","message","name","number","stack"];return a.prototype=new Error,b=a}(),d=function(a,b){"use strict";function c(a,b){this.helpers=a||{},this.partials=b||{},d(this)}function d(a){a.registerHelper("helperMissing",function(a){if(2===arguments.length)return void 0;throw new Error("Missing helper: '"+a+"'")}),a.registerHelper("blockHelperMissing",function(b,c){var d=c.inverse||function(){},e=c.fn;return m(b)&&(b=b.call(this)),b===!0?e(this):b===!1||null==b?d(this):l(b)?b.length>0?a.helpers.each(b,c):d(this):e(b)}),a.registerHelper("each",function(a,b){var c,d=b.fn,e=b.inverse,f=0,g="";if(m(a)&&(a=a.call(this)),b.data&&(c=q(b.data)),a&&"object"==typeof a)if(l(a))for(var h=a.length;h>f;f++)c&&(c.index=f,c.first=0===f,c.last=f===a.length-1),g+=d(a[f],{data:c});else for(var i in a)a.hasOwnProperty(i)&&(c&&(c.key=i),g+=d(a[i],{data:c}),f++);return 0===f&&(g=e(this)),g}),a.registerHelper("if",function(a,b){return m(a)&&(a=a.call(this)),!b.hash.includeZero&&!a||g.isEmpty(a)?b.inverse(this):b.fn(this)}),a.registerHelper("unless",function(b,c){return a.helpers["if"].call(this,b,{fn:c.inverse,inverse:c.fn,hash:c.hash})}),a.registerHelper("with",function(a,b){return m(a)&&(a=a.call(this)),g.isEmpty(a)?void 0:b.fn(a)}),a.registerHelper("log",function(b,c){var d=c.data&&null!=c.data.level?parseInt(c.data.level,10):1;a.log(d,b)})}function e(a,b){p.log(a,b)}var f={},g=a,h=b,i="1.1.2";f.VERSION=i;var j=4;f.COMPILER_REVISION=j;var k={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:">= 1.0.0"};f.REVISION_CHANGES=k;var l=g.isArray,m=g.isFunction,n=g.toString,o="[object Object]";f.HandlebarsEnvironment=c,c.prototype={constructor:c,logger:p,log:e,registerHelper:function(a,b,c){if(n.call(a)===o){if(c||b)throw new h("Arg not supported with multiple helpers");g.extend(this.helpers,a)}else c&&(b.not=c),this.helpers[a]=b},registerPartial:function(a,b){n.call(a)===o?g.extend(this.partials,a):this.partials[a]=b}};var p={methodMap:{0:"debug",1:"info",2:"warn",3:"error"},DEBUG:0,INFO:1,WARN:2,ERROR:3,level:3,log:function(a,b){if(p.level<=a){var c=p.methodMap[a];"undefined"!=typeof console&&console[c]&&console[c].call(console,b)}}};f.logger=p,f.log=e;var q=function(a){var b={};return g.extend(b,a),b};return f.createFrame=q,f}(b,c),e=function(a,b,c){"use strict";function d(a){var b=a&&a[0]||1,c=m;if(b!==c){if(c>b){var d=n[c],e=n[b];throw new Error("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version ("+d+") or downgrade your runtime to an older version ("+e+").")}throw new Error("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version ("+a[1]+").")}}function e(a,b){if(!b)throw new Error("No environment passed to template");var c;c=b.compile?function(a,c,d,e,f,g){var i=h.apply(this,arguments);if(i)return i;var j={helpers:e,partials:f,data:g};return f[c]=b.compile(a,{data:void 0!==g},b),f[c](d,j)}:function(a,b){var c=h.apply(this,arguments);if(c)return c;throw new l("The partial "+b+" could not be compiled when running in runtime-only mode")};var e={escapeExpression:k.escapeExpression,invokePartial:c,programs:[],program:function(a,b,c){var d=this.programs[a];return c?d=g(a,b,c):d||(d=this.programs[a]=g(a,b)),d},merge:function(a,b){var c=a||b;return a&&b&&a!==b&&(c={},k.extend(c,b),k.extend(c,a)),c},programWithDepth:f,noop:i,compilerInfo:null};return function(c,f){f=f||{};var g,h,i=f.partial?f:b;f.partial||(g=f.helpers,h=f.partials);var j=a.call(e,i,c,g,h,f.data);return f.partial||d(e.compilerInfo),j}}function f(a,b,c){var d=Array.prototype.slice.call(arguments,3),e=function(a,e){return e=e||{},b.apply(this,[a,e.data||c].concat(d))};return e.program=a,e.depth=d.length,e}function g(a,b,c){var d=function(a,d){return d=d||{},b(a,d.data||c)};return d.program=a,d.depth=0,d}function h(a,b,c,d,e,f){var g={partial:!0,helpers:d,partials:e,data:f};if(void 0===a)throw new l("The partial "+b+" could not be found");return a instanceof Function?a(c,g):void 0}function i(){return""}var j={},k=a,l=b,m=c.COMPILER_REVISION,n=c.REVISION_CHANGES;return j.template=e,j.programWithDepth=f,j.program=g,j.invokePartial=h,j.noop=i,j}(b,c,d),f=function(a,b,c,d,e){"use strict";var f,g=a,h=b,i=c,j=d,k=e,l=function(){var a=new g.HandlebarsEnvironment;return j.extend(a,g),a.SafeString=h,a.Exception=i,a.Utils=j,a.VM=k,a.template=function(b){return k.template(b,a)},a},m=l();return m.create=l,f=m}(d,a,c,b,e);return f}(),glob="undefined"==typeof window?global:window,Handlebars=glob.Handlebars||require("handlebars");this.wysihtml5=this.wysihtml5||{},this.wysihtml5.tpl=this.wysihtml5.tpl||{},this.wysihtml5.tpl.color=Handlebars.template(function(a,b,c,d,e){function f(a){var b,c="";return c+="btn-"+k((b=a&&a.options,b=null==b||b===!1?b:b.size,typeof b===j?b.apply(a):b))}this.compilerInfo=[4,">= 1.0.0"],c=this.merge(c,a.helpers),e=e||{};var g,h,i="",j="function",k=this.escapeExpression,l=this;return i+='<li class="dropdown">\n <a class="btn btn-default dropdown-toggle ',h=c["if"].call(b,(g=b&&b.options,null==g||g===!1?g:g.size),{hash:{},inverse:l.noop,fn:l.program(1,f,e),data:e}),(h||0===h)&&(i+=h),i+='" data-toggle="dropdown" tabindex="-1">\n <span class="current-color">'+k((g=b&&b.locale,g=null==g||g===!1?g:g.colours,g=null==g||g===!1?g:g.black,typeof g===j?g.apply(b):g))+'</span>\n <b class="caret"></b>\n </a>\n <ul class="dropdown-menu">\n <li><div class="wysihtml5-colors" data-wysihtml5-command-value="black"></div><a class="wysihtml5-colors-title" data-wysihtml5-command="foreColor" data-wysihtml5-command-value="black">'+k((g=b&&b.locale,g=null==g||g===!1?g:g.colours,g=null==g||g===!1?g:g.black,typeof g===j?g.apply(b):g))+'</a></li>\n <li><div class="wysihtml5-colors" data-wysihtml5-command-value="silver"></div><a class="wysihtml5-colors-title" data-wysihtml5-command="foreColor" data-wysihtml5-command-value="silver">'+k((g=b&&b.locale,g=null==g||g===!1?g:g.colours,g=null==g||g===!1?g:g.silver,typeof g===j?g.apply(b):g))+'</a></li>\n <li><div class="wysihtml5-colors" data-wysihtml5-command-value="gray"></div><a class="wysihtml5-colors-title" data-wysihtml5-command="foreColor" data-wysihtml5-command-value="gray">'+k((g=b&&b.locale,g=null==g||g===!1?g:g.colours,g=null==g||g===!1?g:g.gray,typeof g===j?g.apply(b):g))+'</a></li>\n <li><div class="wysihtml5-colors" data-wysihtml5-command-value="maroon"></div><a class="wysihtml5-colors-title" data-wysihtml5-command="foreColor" data-wysihtml5-command-value="maroon">'+k((g=b&&b.locale,g=null==g||g===!1?g:g.colours,g=null==g||g===!1?g:g.maroon,typeof g===j?g.apply(b):g))+'</a></li>\n <li><div class="wysihtml5-colors" data-wysihtml5-command-value="red"></div><a class="wysihtml5-colors-title" data-wysihtml5-command="foreColor" data-wysihtml5-command-value="red">'+k((g=b&&b.locale,g=null==g||g===!1?g:g.colours,g=null==g||g===!1?g:g.red,typeof g===j?g.apply(b):g))+'</a></li>\n <li><div class="wysihtml5-colors" data-wysihtml5-command-value="purple"></div><a class="wysihtml5-colors-title" data-wysihtml5-command="foreColor" data-wysihtml5-command-value="purple">'+k((g=b&&b.locale,g=null==g||g===!1?g:g.colours,g=null==g||g===!1?g:g.purple,typeof g===j?g.apply(b):g))+'</a></li>\n <li><div class="wysihtml5-colors" data-wysihtml5-command-value="green"></div><a class="wysihtml5-colors-title" data-wysihtml5-command="foreColor" data-wysihtml5-command-value="green">'+k((g=b&&b.locale,g=null==g||g===!1?g:g.colours,g=null==g||g===!1?g:g.green,typeof g===j?g.apply(b):g))+'</a></li>\n <li><div class="wysihtml5-colors" data-wysihtml5-command-value="olive"></div><a class="wysihtml5-colors-title" data-wysihtml5-command="foreColor" data-wysihtml5-command-value="olive">'+k((g=b&&b.locale,g=null==g||g===!1?g:g.colours,g=null==g||g===!1?g:g.olive,typeof g===j?g.apply(b):g))+'</a></li>\n <li><div class="wysihtml5-colors" data-wysihtml5-command-value="navy"></div><a class="wysihtml5-colors-title" data-wysihtml5-command="foreColor" data-wysihtml5-command-value="navy">'+k((g=b&&b.locale,g=null==g||g===!1?g:g.colours,g=null==g||g===!1?g:g.navy,typeof g===j?g.apply(b):g))+'</a></li>\n <li><div class="wysihtml5-colors" data-wysihtml5-command-value="blue"></div><a class="wysihtml5-colors-title" data-wysihtml5-command="foreColor" data-wysihtml5-command-value="blue">'+k((g=b&&b.locale,g=null==g||g===!1?g:g.colours,g=null==g||g===!1?g:g.blue,typeof g===j?g.apply(b):g))+'</a></li>\n <li><div class="wysihtml5-colors" data-wysihtml5-command-value="orange"></div><a class="wysihtml5-colors-title" data-wysihtml5-command="foreColor" data-wysihtml5-command-value="orange">'+k((g=b&&b.locale,g=null==g||g===!1?g:g.colours,g=null==g||g===!1?g:g.orange,typeof g===j?g.apply(b):g))+"</a></li>\n </ul>\n</li>\n"}),this.wysihtml5.tpl.emphasis=Handlebars.template(function(a,b,c,d,e){function f(a){var b,c="";return c+="btn-"+k((b=a&&a.options,b=null==b||b===!1?b:b.size,typeof b===j?b.apply(a):b))}this.compilerInfo=[4,">= 1.0.0"],c=this.merge(c,a.helpers),e=e||{};var g,h,i="",j="function",k=this.escapeExpression,l=this;return i+='<li>\n <div class="btn-group">\n <a class="btn ',h=c["if"].call(b,(g=b&&b.options,null==g||g===!1?g:g.size),{hash:{},inverse:l.noop,fn:l.program(1,f,e),data:e}),(h||0===h)&&(i+=h),i+=' btn-default" data-wysihtml5-command="bold" title="CTRL+B" tabindex="-1">'+k((g=b&&b.locale,g=null==g||g===!1?g:g.emphasis,g=null==g||g===!1?g:g.bold,typeof g===j?g.apply(b):g))+'</a>\n <a class="btn ',h=c["if"].call(b,(g=b&&b.options,null==g||g===!1?g:g.size),{hash:{},inverse:l.noop,fn:l.program(1,f,e),data:e}),(h||0===h)&&(i+=h),i+=' btn-default" data-wysihtml5-command="italic" title="CTRL+I" tabindex="-1">'+k((g=b&&b.locale,g=null==g||g===!1?g:g.emphasis,g=null==g||g===!1?g:g.italic,typeof g===j?g.apply(b):g))+'</a>\n <a class="btn ',h=c["if"].call(b,(g=b&&b.options,null==g||g===!1?g:g.size),{hash:{},inverse:l.noop,fn:l.program(1,f,e),data:e}),(h||0===h)&&(i+=h),i+=' btn-default" data-wysihtml5-command="underline" title="CTRL+U" tabindex="-1">'+k((g=b&&b.locale,g=null==g||g===!1?g:g.emphasis,g=null==g||g===!1?g:g.underline,typeof g===j?g.apply(b):g))+"</a>\n </div>\n</li>\n"}),this.wysihtml5.tpl["font-styles"]=Handlebars.template(function(a,b,c,d,e){function f(a){var b,c="";return c+="btn-"+k((b=a&&a.options,b=null==b||b===!1?b:b.size,typeof b===j?b.apply(a):b))}this.compilerInfo=[4,">= 1.0.0"],c=this.merge(c,a.helpers),e=e||{};var g,h,i="",j="function",k=this.escapeExpression,l=this;return i+='<li class="dropdown">\n <a class="btn btn-default dropdown-toggle ',h=c["if"].call(b,(g=b&&b.options,null==g||g===!1?g:g.size),{hash:{},inverse:l.noop,fn:l.program(1,f,e),data:e}),(h||0===h)&&(i+=h),i+='" data-toggle="dropdown">\n <span class="glyphicon glyphicon-font"></span>\n <span class="current-font">'+k((g=b&&b.locale,g=null==g||g===!1?g:g.font_styles,g=null==g||g===!1?g:g.normal,typeof g===j?g.apply(b):g))+'</span>\n <b class="caret"></b>\n </a>\n <ul class="dropdown-menu">\n <li><a data-wysihtml5-command="formatBlock" data-wysihtml5-command-value="div" tabindex="-1">'+k((g=b&&b.locale,g=null==g||g===!1?g:g.font_styles,g=null==g||g===!1?g:g.normal,typeof g===j?g.apply(b):g))+'</a></li>\n <li><a data-wysihtml5-command="formatBlock" data-wysihtml5-command-value="h1" tabindex="-1">'+k((g=b&&b.locale,g=null==g||g===!1?g:g.font_styles,g=null==g||g===!1?g:g.h1,typeof g===j?g.apply(b):g))+'</a></li>\n <li><a data-wysihtml5-command="formatBlock" data-wysihtml5-command-value="h2" tabindex="-1">'+k((g=b&&b.locale,g=null==g||g===!1?g:g.font_styles,g=null==g||g===!1?g:g.h2,typeof g===j?g.apply(b):g))+'</a></li>\n <li><a data-wysihtml5-command="formatBlock" data-wysihtml5-command-value="h3" tabindex="-1">'+k((g=b&&b.locale,g=null==g||g===!1?g:g.font_styles,g=null==g||g===!1?g:g.h3,typeof g===j?g.apply(b):g))+'</a></li>\n <li><a data-wysihtml5-command="formatBlock" data-wysihtml5-command-value="h4" tabindex="-1">'+k((g=b&&b.locale,g=null==g||g===!1?g:g.font_styles,g=null==g||g===!1?g:g.h4,typeof g===j?g.apply(b):g))+'</a></li>\n <li><a data-wysihtml5-command="formatBlock" data-wysihtml5-command-value="h5" tabindex="-1">'+k((g=b&&b.locale,g=null==g||g===!1?g:g.font_styles,g=null==g||g===!1?g:g.h5,typeof g===j?g.apply(b):g))+'</a></li>\n <li><a data-wysihtml5-command="formatBlock" data-wysihtml5-command-value="h6" tabindex="-1">'+k((g=b&&b.locale,g=null==g||g===!1?g:g.font_styles,g=null==g||g===!1?g:g.h6,typeof g===j?g.apply(b):g))+"</a></li>\n </ul>\n</li>\n"}),this.wysihtml5.tpl.html=Handlebars.template(function(a,b,c,d,e){function f(a){var b,c="";return c+="btn-"+k((b=a&&a.options,b=null==b||b===!1?b:b.size,typeof b===j?b.apply(a):b))}this.compilerInfo=[4,">= 1.0.0"],c=this.merge(c,a.helpers),e=e||{};var g,h,i="",j="function",k=this.escapeExpression,l=this;return i+='<li>\n <div class="btn-group">\n <a class="btn ',h=c["if"].call(b,(g=b&&b.options,null==g||g===!1?g:g.size),{hash:{},inverse:l.noop,fn:l.program(1,f,e),data:e}),(h||0===h)&&(i+=h),i+=' btn-default" data-wysihtml5-action="change_view" title="'+k((g=b&&b.locale,g=null==g||g===!1?g:g.html,g=null==g||g===!1?g:g.edit,typeof g===j?g.apply(b):g))+'" tabindex="-1">\n <span class="glyphicon glyphicon-pencil"></span>\n </a>\n </div>\n</li>\n'}),this.wysihtml5.tpl.image=Handlebars.template(function(a,b,c,d,e){function f(a){var b,c="";return c+="btn-"+k((b=a&&a.options,b=null==b||b===!1?b:b.size,typeof b===j?b.apply(a):b))}this.compilerInfo=[4,">= 1.0.0"],c=this.merge(c,a.helpers),e=e||{};var g,h,i="",j="function",k=this.escapeExpression,l=this;return i+='<li>\n <div class="bootstrap-wysihtml5-insert-image-modal modal fade">\n <div class="modal-dialog">\n <div class="modal-content">\n <div class="modal-header">\n <a class="close" data-dismiss="modal">&times;</a>\n <h3>'+k((g=b&&b.locale,g=null==g||g===!1?g:g.image,g=null==g||g===!1?g:g.insert,typeof g===j?g.apply(b):g))+'</h3>\n </div>\n <div class="modal-body">\n <input value="http://" class="bootstrap-wysihtml5-insert-image-url form-control">\n </div>\n <div class="modal-footer">\n <a class="btn btn-default" data-dismiss="modal">'+k((g=b&&b.locale,g=null==g||g===!1?g:g.image,g=null==g||g===!1?g:g.cancel,typeof g===j?g.apply(b):g))+'</a>\n <a class="btn btn-primary" data-dismiss="modal">'+k((g=b&&b.locale,g=null==g||g===!1?g:g.image,g=null==g||g===!1?g:g.insert,typeof g===j?g.apply(b):g))+'</a>\n </div>\n </div>\n </div>\n </div>\n <a class="btn ',h=c["if"].call(b,(g=b&&b.options,null==g||g===!1?g:g.size),{hash:{},inverse:l.noop,fn:l.program(1,f,e),data:e}),(h||0===h)&&(i+=h),i+=' btn-default" data-wysihtml5-command="insertImage" title="'+k((g=b&&b.locale,g=null==g||g===!1?g:g.image,g=null==g||g===!1?g:g.insert,typeof g===j?g.apply(b):g))+'" tabindex="-1">\n <span class="glyphicon glyphicon-picture"></span>\n </a>\n</li>\n'}),this.wysihtml5.tpl.link=Handlebars.template(function(a,b,c,d,e){function f(a){var b,c="";return c+="btn-"+k((b=a&&a.options,b=null==b||b===!1?b:b.size,typeof b===j?b.apply(a):b))}this.compilerInfo=[4,">= 1.0.0"],c=this.merge(c,a.helpers),e=e||{};var g,h,i="",j="function",k=this.escapeExpression,l=this;return i+='<li>\n <div class="bootstrap-wysihtml5-insert-link-modal modal fade">\n <div class="modal-dialog">\n <div class="modal-content">\n <div class="modal-header">\n <a class="close" data-dismiss="modal">&times;</a>\n <h3>'+k((g=b&&b.locale,g=null==g||g===!1?g:g.link,g=null==g||g===!1?g:g.insert,typeof g===j?g.apply(b):g))+'</h3>\n </div>\n <div class="modal-body">\n <input value="http://" class="bootstrap-wysihtml5-insert-link-url form-control">\n <div class="checkbox"><label> <input type="checkbox" class="bootstrap-wysihtml5-insert-link-target" checked>'+k((g=b&&b.locale,g=null==g||g===!1?g:g.link,g=null==g||g===!1?g:g.target,typeof g===j?g.apply(b):g))+'</label></div>\n </div>\n <div class="modal-footer">\n <a class="btn btn-default" data-dismiss="modal">'+k((g=b&&b.locale,g=null==g||g===!1?g:g.link,g=null==g||g===!1?g:g.cancel,typeof g===j?g.apply(b):g))+'</a>\n <a href="#" class="btn btn-primary" data-dismiss="modal">'+k((g=b&&b.locale,g=null==g||g===!1?g:g.link,g=null==g||g===!1?g:g.insert,typeof g===j?g.apply(b):g))+'</a>\n </div>\n </div>\n </div>\n </div>\n <a class="btn ',h=c["if"].call(b,(g=b&&b.options,null==g||g===!1?g:g.size),{hash:{},inverse:l.noop,fn:l.program(1,f,e),data:e}),(h||0===h)&&(i+=h),i+=' btn-default" data-wysihtml5-command="createLink" title="'+k((g=b&&b.locale,g=null==g||g===!1?g:g.link,g=null==g||g===!1?g:g.insert,typeof g===j?g.apply(b):g))+'" tabindex="-1">\n <span class="glyphicon glyphicon-share"></span>\n </a>\n</li>\n' -}),this.wysihtml5.tpl.lists=Handlebars.template(function(a,b,c,d,e){function f(a){var b,c="";return c+="btn-"+k((b=a&&a.options,b=null==b||b===!1?b:b.size,typeof b===j?b.apply(a):b))}this.compilerInfo=[4,">= 1.0.0"],c=this.merge(c,a.helpers),e=e||{};var g,h,i="",j="function",k=this.escapeExpression,l=this;return i+='<li>\n <div class="btn-group">\n <a class="btn ',h=c["if"].call(b,(g=b&&b.options,null==g||g===!1?g:g.size),{hash:{},inverse:l.noop,fn:l.program(1,f,e),data:e}),(h||0===h)&&(i+=h),i+=' btn-default" data-wysihtml5-command="insertUnorderedList" title="'+k((g=b&&b.locale,g=null==g||g===!1?g:g.lists,g=null==g||g===!1?g:g.unordered,typeof g===j?g.apply(b):g))+'" tabindex="-1"><span class="glyphicon glyphicon-list"></span></a>\n <a class="btn ',h=c["if"].call(b,(g=b&&b.options,null==g||g===!1?g:g.size),{hash:{},inverse:l.noop,fn:l.program(1,f,e),data:e}),(h||0===h)&&(i+=h),i+=' btn-default" data-wysihtml5-command="insertOrderedList" title="'+k((g=b&&b.locale,g=null==g||g===!1?g:g.lists,g=null==g||g===!1?g:g.ordered,typeof g===j?g.apply(b):g))+'" tabindex="-1"><span class="glyphicon glyphicon-th-list"></span></a>\n <a class="btn ',h=c["if"].call(b,(g=b&&b.options,null==g||g===!1?g:g.size),{hash:{},inverse:l.noop,fn:l.program(1,f,e),data:e}),(h||0===h)&&(i+=h),i+=' btn-default" data-wysihtml5-command="Outdent" title="'+k((g=b&&b.locale,g=null==g||g===!1?g:g.lists,g=null==g||g===!1?g:g.outdent,typeof g===j?g.apply(b):g))+'" tabindex="-1"><span class="glyphicon glyphicon-indent-right"></span></a>\n <a class="btn ',h=c["if"].call(b,(g=b&&b.options,null==g||g===!1?g:g.size),{hash:{},inverse:l.noop,fn:l.program(1,f,e),data:e}),(h||0===h)&&(i+=h),i+=' btn-default" data-wysihtml5-command="Indent" title="'+k((g=b&&b.locale,g=null==g||g===!1?g:g.lists,g=null==g||g===!1?g:g.indent,typeof g===j?g.apply(b):g))+'" tabindex="-1"><span class="glyphicon glyphicon-indent-left"></span></a>\n </div>\n</li>\n'}),"object"==typeof exports&&exports&&(module.exports=this.wysihtml5.tpl),!function(a,b){"use strict";var c=function(a,c,d){return b.tpl[a]({locale:c,options:d})},d=function(c,d){this.el=c;var e=d||f;for(var g in e.customTemplates)b.tpl[g]=e.customTemplates[g];this.toolbar=this.createToolbar(c,e),this.editor=this.createEditor(d),window.editor=this.editor,a("iframe.wysihtml5-sandbox").each(function(b,c){a(c.contentWindow).off("focus.wysihtml5").on({"focus.wysihtml5":function(){a("li.dropdown").removeClass("open")}})})};d.prototype={constructor:d,createEditor:function(c){c=c||{},c=a.extend(!0,{},c),c.toolbar=this.toolbar[0];var d=new b.Editor(this.el[0],c);if(c&&c.events)for(var e in c.events)d.on(e,c.events[e]);return d},createToolbar:function(b,d){var e=this,h=a("<ul/>",{"class":"wysihtml5-toolbar",style:"display:none"}),i=d.locale||f.locale||"en";for(var j in f){var k=!1;void 0!==d[j]?d[j]===!0&&(k=!0):k=f[j],k===!0&&(h.append(c(j,g[i],d)),"html"===j&&this.initHtml(h),"link"===j&&this.initInsertLink(h),"image"===j&&this.initInsertImage(h))}if(d.toolbar)for(j in d.toolbar)h.append(d.toolbar[j]);return h.find('a[data-wysihtml5-command="formatBlock"]').click(function(b){var c=b.target||b.srcElement,d=a(c);e.toolbar.find(".current-font").text(d.html())}),h.find('a[data-wysihtml5-command="foreColor"]').click(function(b){var c=b.target||b.srcElement,d=a(c);e.toolbar.find(".current-color").text(d.html())}),this.el.before(h),h},initHtml:function(a){var b='a[data-wysihtml5-action="change_view"]';a.find(b).click(function(){a.find("a.btn").not(b).toggleClass("disabled")})},initInsertImage:function(b){var c,d=this,e=b.find(".bootstrap-wysihtml5-insert-image-modal"),f=e.find(".bootstrap-wysihtml5-insert-image-url"),g=e.find("a.btn-primary"),h=f.val(),i=function(){var a=f.val();f.val(h),d.editor.currentView.element.focus(),c&&(d.editor.composer.selection.setBookmark(c),c=null),d.editor.composer.commands.exec("insertImage",a)};f.keypress(function(a){13==a.which&&(i(),e.modal("hide"))}),g.click(i),e.on("shown",function(){f.focus()}),e.on("hide",function(){d.editor.currentView.element.focus()}),b.find("a[data-wysihtml5-command=insertImage]").click(function(){var b=a(this).hasClass("wysihtml5-command-active");return b?!0:(d.editor.currentView.element.focus(!1),c=d.editor.composer.selection.getBookmark(),e.appendTo("body").modal("show"),e.on("click.dismiss.modal",'[data-dismiss="modal"]',function(a){a.stopPropagation()}),!1)})},initInsertLink:function(b){var c,d=this,e=b.find(".bootstrap-wysihtml5-insert-link-modal"),f=e.find(".bootstrap-wysihtml5-insert-link-url"),g=e.find(".bootstrap-wysihtml5-insert-link-target"),h=e.find("a.btn-primary"),i=f.val(),j=function(){var a=f.val();f.val(i),d.editor.currentView.element.focus(),c&&(d.editor.composer.selection.setBookmark(c),c=null);var b=g.prop("checked");d.editor.composer.commands.exec("createLink",{href:a,target:b?"_blank":"_self",rel:b?"nofollow":""})};f.keypress(function(a){13==a.which&&(j(),e.modal("hide"))}),h.click(j),e.on("shown",function(){f.focus()}),e.on("hide",function(){d.editor.currentView.element.focus()}),b.find("a[data-wysihtml5-command=createLink]").click(function(){var b=a(this).hasClass("wysihtml5-command-active");return b?!0:(d.editor.currentView.element.focus(!1),c=d.editor.composer.selection.getBookmark(),e.appendTo("body").modal("show"),e.on("click.dismiss.modal",'[data-dismiss="modal"]',function(a){a.stopPropagation()}),!1)})}};var e={resetDefaults:function(){a.fn.wysihtml5.defaultOptions=a.extend(!0,{},a.fn.wysihtml5.defaultOptionsCache)},bypassDefaults:function(b){return this.each(function(){var c=a(this);c.data("wysihtml5",new d(c,b))})},shallowExtend:function(b){var c=a.extend({},a.fn.wysihtml5.defaultOptions,b||{},a(this).data()),d=this;return e.bypassDefaults.apply(d,[c])},deepExtend:function(b){var c=a.extend(!0,{},a.fn.wysihtml5.defaultOptions,b||{}),d=this;return e.bypassDefaults.apply(d,[c])},init:function(a){var b=this;return e.shallowExtend.apply(b,[a])}};a.fn.wysihtml5=function(b){return e[b]?e[b].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof b&&b?(a.error("Method "+b+" does not exist on jQuery.wysihtml5"),void 0):e.init.apply(this,arguments)},a.fn.wysihtml5.Constructor=d;var f=a.fn.wysihtml5.defaultOptions={"font-styles":!0,color:!1,emphasis:!0,lists:!0,html:!1,link:!0,image:!0,events:{},parserRules:{classes:{"wysiwyg-color-silver":1,"wysiwyg-color-gray":1,"wysiwyg-color-white":1,"wysiwyg-color-maroon":1,"wysiwyg-color-red":1,"wysiwyg-color-purple":1,"wysiwyg-color-fuchsia":1,"wysiwyg-color-green":1,"wysiwyg-color-lime":1,"wysiwyg-color-olive":1,"wysiwyg-color-yellow":1,"wysiwyg-color-navy":1,"wysiwyg-color-blue":1,"wysiwyg-color-teal":1,"wysiwyg-color-aqua":1,"wysiwyg-color-orange":1},tags:{b:{},i:{},strong:{},em:{},p:{},br:{},ol:{},ul:{},li:{},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},blockquote:{},u:1,img:{check_attributes:{width:"numbers",alt:"alt",src:"url",height:"numbers"}},a:{check_attributes:{href:"url"},set_attributes:{target:"_blank",rel:"nofollow"}},span:1,div:1,code:1,pre:1}},locale:"en"};"undefined"==typeof a.fn.wysihtml5.defaultOptionsCache&&(a.fn.wysihtml5.defaultOptionsCache=a.extend(!0,{},a.fn.wysihtml5.defaultOptions));var g=a.fn.wysihtml5.locale={}}(window.jQuery,window.wysihtml5),function(a){a.fn.wysihtml5.locale.en=a.fn.wysihtml5.locale["en-US"]={font_styles:{normal:"Normal text",h1:"Heading 1",h2:"Heading 2",h3:"Heading 3",h4:"Heading 4",h5:"Heading 5",h6:"Heading 6"},emphasis:{bold:"Bold",italic:"Italic",underline:"Underline"},lists:{unordered:"Unordered list",ordered:"Ordered list",outdent:"Outdent",indent:"Indent"},link:{insert:"Insert link",cancel:"Cancel",target:"Open link in new window"},image:{insert:"Insert image",cancel:"Cancel"},html:{edit:"Edit HTML"},colours:{black:"Black",silver:"Silver",gray:"Grey",maroon:"Maroon",red:"Red",purple:"Purple",green:"Green",olive:"Olive",navy:"Navy",blue:"Blue",orange:"Orange"}}}(jQuery); \ No newline at end of file diff --git a/assets/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.css b/assets/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.css deleted file mode 100644 index 44ed7774..00000000 --- a/assets/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.css +++ /dev/null @@ -1,102 +0,0 @@ -ul.wysihtml5-toolbar { - margin: 0; - padding: 0; - display: block; -} - -ul.wysihtml5-toolbar::after { - clear: both; - display: table; - content: ""; -} - -ul.wysihtml5-toolbar > li { - float: left; - display: list-item; - list-style: none; - margin: 0 5px 10px 0; -} - -ul.wysihtml5-toolbar a[data-wysihtml5-command=bold] { - font-weight: bold; -} - -ul.wysihtml5-toolbar a[data-wysihtml5-command=italic] { - font-style: italic; -} - -ul.wysihtml5-toolbar a[data-wysihtml5-command=underline] { - text-decoration: underline; -} - -ul.wysihtml5-toolbar a.btn.wysihtml5-command-active { - background-image: none; - -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05); - background-color: #E6E6E6; - background-color: #D9D9D9; - outline: 0; -} - -ul.wysihtml5-commands-disabled .dropdown-menu { - display: none !important; -} - -ul.wysihtml5-toolbar div.wysihtml5-colors { - display:block; - width: 50px; - height: 20px; - margin-top: 2px; - margin-left: 5px; - position: absolute; - pointer-events: none; -} - -ul.wysihtml5-toolbar a.wysihtml5-colors-title { - padding-left: 70px; -} - -ul.wysihtml5-toolbar div[data-wysihtml5-command-value="black"] { - background: black !important; -} - -ul.wysihtml5-toolbar div[data-wysihtml5-command-value="silver"] { - background: silver !important; -} - -ul.wysihtml5-toolbar div[data-wysihtml5-command-value="gray"] { - background: gray !important; -} - -ul.wysihtml5-toolbar div[data-wysihtml5-command-value="maroon"] { - background: maroon !important; -} - -ul.wysihtml5-toolbar div[data-wysihtml5-command-value="red"] { - background: red !important; -} - -ul.wysihtml5-toolbar div[data-wysihtml5-command-value="purple"] { - background: purple !important; -} - -ul.wysihtml5-toolbar div[data-wysihtml5-command-value="green"] { - background: green !important; -} - -ul.wysihtml5-toolbar div[data-wysihtml5-command-value="olive"] { - background: olive !important; -} - -ul.wysihtml5-toolbar div[data-wysihtml5-command-value="navy"] { - background: navy !important; -} - -ul.wysihtml5-toolbar div[data-wysihtml5-command-value="blue"] { - background: blue !important; -} - -ul.wysihtml5-toolbar div[data-wysihtml5-command-value="orange"] { - background: orange !important; -} diff --git a/assets/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.js b/assets/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.js deleted file mode 100644 index 4fbbf663..00000000 --- a/assets/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.js +++ /dev/null @@ -1,350 +0,0 @@ -/* jshint expr: true */ -!(function($, wysi) { - 'use strict'; - - var templates = function(key, locale, options) { - return wysi.tpl[key]({locale: locale, options: options}); - }; - - var Wysihtml5 = function(el, options) { - this.el = el; - var toolbarOpts = options || defaultOptions; - for(var t in toolbarOpts.customTemplates) { - wysi.tpl[t] = toolbarOpts.customTemplates[t]; - } - this.toolbar = this.createToolbar(el, toolbarOpts); - this.editor = this.createEditor(options); - - window.editor = this.editor; - - $('iframe.wysihtml5-sandbox').each(function(i, el){ - $(el.contentWindow).off('focus.wysihtml5').on({ - 'focus.wysihtml5' : function(){ - $('li.dropdown').removeClass('open'); - } - }); - }); - }; - - Wysihtml5.prototype = { - - constructor: Wysihtml5, - - createEditor: function(options) { - options = options || {}; - - // Add the toolbar to a clone of the options object so multiple instances - // of the WYISYWG don't break because 'toolbar' is already defined - options = $.extend(true, {}, options); - options.toolbar = this.toolbar[0]; - - var editor = new wysi.Editor(this.el[0], options); - - if(options && options.events) { - for(var eventName in options.events) { - editor.on(eventName, options.events[eventName]); - } - } - return editor; - }, - - createToolbar: function(el, options) { - var self = this; - var toolbar = $('<ul/>', { - 'class' : 'wysihtml5-toolbar', - 'style': 'display:none' - }); - var culture = options.locale || defaultOptions.locale || 'en'; - for(var key in defaultOptions) { - var value = false; - - if(options[key] !== undefined) { - if(options[key] === true) { - value = true; - } - } else { - value = defaultOptions[key]; - } - - if(value === true) { - toolbar.append(templates(key, locale[culture], options)); - - if(key === 'html') { - this.initHtml(toolbar); - } - - if(key === 'link') { - this.initInsertLink(toolbar); - } - - if(key === 'image') { - this.initInsertImage(toolbar); - } - } - } - - if(options.toolbar) { - for(key in options.toolbar) { - toolbar.append(options.toolbar[key]); - } - } - - toolbar.find('a[data-wysihtml5-command="formatBlock"]').click(function(e) { - var target = e.target || e.srcElement; - var el = $(target); - self.toolbar.find('.current-font').text(el.html()); - }); - - toolbar.find('a[data-wysihtml5-command="foreColor"]').click(function(e) { - var target = e.target || e.srcElement; - var el = $(target); - self.toolbar.find('.current-color').text(el.html()); - }); - - this.el.before(toolbar); - - return toolbar; - }, - - initHtml: function(toolbar) { - var changeViewSelector = 'a[data-wysihtml5-action="change_view"]'; - toolbar.find(changeViewSelector).click(function(e) { - toolbar.find('a.btn').not(changeViewSelector).toggleClass('disabled'); - }); - }, - - initInsertImage: function(toolbar) { - var self = this; - var insertImageModal = toolbar.find('.bootstrap-wysihtml5-insert-image-modal'); - var urlInput = insertImageModal.find('.bootstrap-wysihtml5-insert-image-url'); - var insertButton = insertImageModal.find('a.btn-primary'); - var initialValue = urlInput.val(); - var caretBookmark; - - var insertImage = function() { - var url = urlInput.val(); - urlInput.val(initialValue); - self.editor.currentView.element.focus(); - if (caretBookmark) { - self.editor.composer.selection.setBookmark(caretBookmark); - caretBookmark = null; - } - self.editor.composer.commands.exec('insertImage', url); - }; - - urlInput.keypress(function(e) { - if(e.which == 13) { - insertImage(); - insertImageModal.modal('hide'); - } - }); - - insertButton.click(insertImage); - - insertImageModal.on('shown', function() { - urlInput.focus(); - }); - - insertImageModal.on('hide', function() { - self.editor.currentView.element.focus(); - }); - - toolbar.find('a[data-wysihtml5-command=insertImage]').click(function() { - var activeButton = $(this).hasClass('wysihtml5-command-active'); - - if (!activeButton) { - self.editor.currentView.element.focus(false); - caretBookmark = self.editor.composer.selection.getBookmark(); - insertImageModal.appendTo('body').modal('show'); - insertImageModal.on('click.dismiss.modal', '[data-dismiss="modal"]', function(e) { - e.stopPropagation(); - }); - return false; - } - else { - return true; - } - }); - }, - - initInsertLink: function(toolbar) { - var self = this; - var insertLinkModal = toolbar.find('.bootstrap-wysihtml5-insert-link-modal'); - var urlInput = insertLinkModal.find('.bootstrap-wysihtml5-insert-link-url'); - var targetInput = insertLinkModal.find('.bootstrap-wysihtml5-insert-link-target'); - var insertButton = insertLinkModal.find('a.btn-primary'); - var initialValue = urlInput.val(); - var caretBookmark; - - var insertLink = function() { - var url = urlInput.val(); - urlInput.val(initialValue); - self.editor.currentView.element.focus(); - if (caretBookmark) { - self.editor.composer.selection.setBookmark(caretBookmark); - caretBookmark = null; - } - - var newWindow = targetInput.prop('checked'); - self.editor.composer.commands.exec('createLink', { - 'href' : url, - 'target' : (newWindow ? '_blank' : '_self'), - 'rel' : (newWindow ? 'nofollow' : '') - }); - }; - var pressedEnter = false; - - urlInput.keypress(function(e) { - if(e.which == 13) { - insertLink(); - insertLinkModal.modal('hide'); - } - }); - - insertButton.click(insertLink); - - insertLinkModal.on('shown', function() { - urlInput.focus(); - }); - - insertLinkModal.on('hide', function() { - self.editor.currentView.element.focus(); - }); - - toolbar.find('a[data-wysihtml5-command=createLink]').click(function() { - var activeButton = $(this).hasClass('wysihtml5-command-active'); - - if (!activeButton) { - self.editor.currentView.element.focus(false); - caretBookmark = self.editor.composer.selection.getBookmark(); - insertLinkModal.appendTo('body').modal('show'); - insertLinkModal.on('click.dismiss.modal', '[data-dismiss="modal"]', function(e) { - e.stopPropagation(); - }); - return false; - } - else { - return true; - } - }); - } - }; - - // these define our public api - var methods = { - resetDefaults: function() { - $.fn.wysihtml5.defaultOptions = $.extend(true, {}, $.fn.wysihtml5.defaultOptionsCache); - }, - bypassDefaults: function(options) { - return this.each(function () { - var $this = $(this); - $this.data('wysihtml5', new Wysihtml5($this, options)); - }); - }, - shallowExtend: function (options) { - var settings = $.extend({}, $.fn.wysihtml5.defaultOptions, options || {}, $(this).data()); - var that = this; - return methods.bypassDefaults.apply(that, [settings]); - }, - deepExtend: function(options) { - var settings = $.extend(true, {}, $.fn.wysihtml5.defaultOptions, options || {}); - var that = this; - return methods.bypassDefaults.apply(that, [settings]); - }, - init: function(options) { - var that = this; - return methods.shallowExtend.apply(that, [options]); - } - }; - - $.fn.wysihtml5 = function ( method ) { - if ( methods[method] ) { - return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 )); - } else if ( typeof method === 'object' || ! method ) { - return methods.init.apply( this, arguments ); - } else { - $.error( 'Method ' + method + ' does not exist on jQuery.wysihtml5' ); - } - }; - - $.fn.wysihtml5.Constructor = Wysihtml5; - - var defaultOptions = $.fn.wysihtml5.defaultOptions = { - 'font-styles': true, - 'color': false, - 'emphasis': true, - 'lists': true, - 'html': false, - 'link': true, - 'image': true, - events: {}, - parserRules: { - classes: { - 'wysiwyg-color-silver' : 1, - 'wysiwyg-color-gray' : 1, - 'wysiwyg-color-white' : 1, - 'wysiwyg-color-maroon' : 1, - 'wysiwyg-color-red' : 1, - 'wysiwyg-color-purple' : 1, - 'wysiwyg-color-fuchsia' : 1, - 'wysiwyg-color-green' : 1, - 'wysiwyg-color-lime' : 1, - 'wysiwyg-color-olive' : 1, - 'wysiwyg-color-yellow' : 1, - 'wysiwyg-color-navy' : 1, - 'wysiwyg-color-blue' : 1, - 'wysiwyg-color-teal' : 1, - 'wysiwyg-color-aqua' : 1, - 'wysiwyg-color-orange' : 1 - }, - tags: { - 'b': {}, - 'i': {}, - 'strong': {}, - 'em': {}, - 'p': {}, - 'br': {}, - 'ol': {}, - 'ul': {}, - 'li': {}, - 'h1': {}, - 'h2': {}, - 'h3': {}, - 'h4': {}, - 'h5': {}, - 'h6': {}, - 'blockquote': {}, - 'u': 1, - 'img': { - 'check_attributes': { - 'width': 'numbers', - 'alt': 'alt', - 'src': 'url', - 'height': 'numbers' - } - }, - 'a': { - check_attributes: { - 'href': 'url' // important to avoid XSS - }, - 'set_attributes': { - 'target': '_blank', - 'rel': 'nofollow' - } - }, - 'span': 1, - 'div': 1, - // to allow save and edit files with code tag hacks - 'code': 1, - 'pre': 1 - } - }, - locale: 'en' - }; - - if (typeof $.fn.wysihtml5.defaultOptionsCache === 'undefined') { - $.fn.wysihtml5.defaultOptionsCache = $.extend(true, {}, $.fn.wysihtml5.defaultOptions); - } - - var locale = $.fn.wysihtml5.locale = {}; -})(window.jQuery, window.wysihtml5); diff --git a/assets/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.min.css b/assets/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.min.css deleted file mode 100644 index d8dd3c22..00000000 --- a/assets/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.min.css +++ /dev/null @@ -1,3 +0,0 @@ -/*! bootstrap3-wysihtml5-bower 2013-11-22 */ - -ul.wysihtml5-toolbar{margin:0;padding:0;display:block}ul.wysihtml5-toolbar::after{clear:both;display:table;content:""}ul.wysihtml5-toolbar>li{float:left;display:list-item;list-style:none;margin:0 5px 10px 0}ul.wysihtml5-toolbar a[data-wysihtml5-command=bold]{font-weight:700}ul.wysihtml5-toolbar a[data-wysihtml5-command=italic]{font-style:italic}ul.wysihtml5-toolbar a[data-wysihtml5-command=underline]{text-decoration:underline}ul.wysihtml5-toolbar a.btn.wysihtml5-command-active{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);background-color:#E6E6E6;background-color:#D9D9D9;outline:0}ul.wysihtml5-commands-disabled .dropdown-menu{display:none!important}ul.wysihtml5-toolbar div.wysihtml5-colors{display:block;width:50px;height:20px;margin-top:2px;margin-left:5px;position:absolute;pointer-events:none}ul.wysihtml5-toolbar a.wysihtml5-colors-title{padding-left:70px}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=black]{background:#000!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=silver]{background:silver!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=gray]{background:gray!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=maroon]{background:maroon!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=red]{background:red!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=purple]{background:purple!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=green]{background:green!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=olive]{background:olive!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=navy]{background:navy!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=blue]{background:#00f!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=orange]{background:orange!important} \ No newline at end of file diff --git a/assets/plugins/chartjs/Chart.js b/assets/plugins/chartjs/Chart.js deleted file mode 100644 index e34e08a4..00000000 --- a/assets/plugins/chartjs/Chart.js +++ /dev/null @@ -1,3457 +0,0 @@ -/*! - * Chart.js - * http://chartjs.org/ - * Version: 1.0.1 - * - * Copyright 2015 Nick Downie - * Released under the MIT license - * https://github.com/nnnick/Chart.js/blob/master/LICENSE.md - */ - - -(function(){ - - "use strict"; - - //Declare root variable - window in the browser, global on the server - var root = this, - previous = root.Chart; - - //Occupy the global variable of Chart, and create a simple base class - var Chart = function(context){ - var chart = this; - this.canvas = context.canvas; - - this.ctx = context; - - //Variables global to the chart - var width = this.width = context.canvas.width; - var height = this.height = context.canvas.height; - this.aspectRatio = this.width / this.height; - //High pixel density displays - multiply the size of the canvas height/width by the device pixel ratio, then scale. - helpers.retinaScale(this); - - return this; - }; - //Globally expose the defaults to allow for user updating/changing - Chart.defaults = { - global: { - // Boolean - Whether to animate the chart - animation: true, - - // Number - Number of animation steps - animationSteps: 60, - - // String - Animation easing effect - animationEasing: "easeOutQuart", - - // Boolean - If we should show the scale at all - showScale: true, - - // Boolean - If we want to override with a hard coded scale - scaleOverride: false, - - // ** Required if scaleOverride is true ** - // Number - The number of steps in a hard coded scale - scaleSteps: null, - // Number - The value jump in the hard coded scale - scaleStepWidth: null, - // Number - The scale starting value - scaleStartValue: null, - - // String - Colour of the scale line - scaleLineColor: "rgba(0,0,0,.1)", - - // Number - Pixel width of the scale line - scaleLineWidth: 1, - - // Boolean - Whether to show labels on the scale - scaleShowLabels: true, - - // Interpolated JS string - can access value - scaleLabel: "<%=value%>", - - // Boolean - Whether the scale should stick to integers, and not show any floats even if drawing space is there - scaleIntegersOnly: true, - - // Boolean - Whether the scale should start at zero, or an order of magnitude down from the lowest value - scaleBeginAtZero: false, - - // String - Scale label font declaration for the scale label - scaleFontFamily: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif", - - // Number - Scale label font size in pixels - scaleFontSize: 12, - - // String - Scale label font weight style - scaleFontStyle: "normal", - - // String - Scale label font colour - scaleFontColor: "#666", - - // Boolean - whether or not the chart should be responsive and resize when the browser does. - responsive: false, - - // Boolean - whether to maintain the starting aspect ratio or not when responsive, if set to false, will take up entire container - maintainAspectRatio: true, - - // Boolean - Determines whether to draw tooltips on the canvas or not - attaches events to touchmove & mousemove - showTooltips: true, - - // Boolean - Determines whether to draw built-in tooltip or call custom tooltip function - customTooltips: false, - - // Array - Array of string names to attach tooltip events - tooltipEvents: ["mousemove", "touchstart", "touchmove", "mouseout"], - - // String - Tooltip background colour - tooltipFillColor: "rgba(0,0,0,0.8)", - - // String - Tooltip label font declaration for the scale label - tooltipFontFamily: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif", - - // Number - Tooltip label font size in pixels - tooltipFontSize: 14, - - // String - Tooltip font weight style - tooltipFontStyle: "normal", - - // String - Tooltip label font colour - tooltipFontColor: "#fff", - - // String - Tooltip title font declaration for the scale label - tooltipTitleFontFamily: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif", - - // Number - Tooltip title font size in pixels - tooltipTitleFontSize: 14, - - // String - Tooltip title font weight style - tooltipTitleFontStyle: "bold", - - // String - Tooltip title font colour - tooltipTitleFontColor: "#fff", - - // Number - pixel width of padding around tooltip text - tooltipYPadding: 6, - - // Number - pixel width of padding around tooltip text - tooltipXPadding: 6, - - // Number - Size of the caret on the tooltip - tooltipCaretSize: 8, - - // Number - Pixel radius of the tooltip border - tooltipCornerRadius: 6, - - // Number - Pixel offset from point x to tooltip edge - tooltipXOffset: 10, - - // String - Template string for single tooltips - tooltipTemplate: "<%if (label){%><%=label%>: <%}%><%= value %>", - - // String - Template string for single tooltips - multiTooltipTemplate: "<%= value %>", - - // String - Colour behind the legend colour block - multiTooltipKeyBackground: '#fff', - - // Function - Will fire on animation progression. - onAnimationProgress: function(){}, - - // Function - Will fire on animation completion. - onAnimationComplete: function(){} - - } - }; - - //Create a dictionary of chart types, to allow for extension of existing types - Chart.types = {}; - - //Global Chart helpers object for utility methods and classes - var helpers = Chart.helpers = {}; - - //-- Basic js utility methods - var each = helpers.each = function(loopable,callback,self){ - var additionalArgs = Array.prototype.slice.call(arguments, 3); - // Check to see if null or undefined firstly. - if (loopable){ - if (loopable.length === +loopable.length){ - var i; - for (i=0; i<loopable.length; i++){ - callback.apply(self,[loopable[i], i].concat(additionalArgs)); - } - } - else{ - for (var item in loopable){ - callback.apply(self,[loopable[item],item].concat(additionalArgs)); - } - } - } - }, - clone = helpers.clone = function(obj){ - var objClone = {}; - each(obj,function(value,key){ - if (obj.hasOwnProperty(key)) objClone[key] = value; - }); - return objClone; - }, - extend = helpers.extend = function(base){ - each(Array.prototype.slice.call(arguments,1), function(extensionObject) { - each(extensionObject,function(value,key){ - if (extensionObject.hasOwnProperty(key)) base[key] = value; - }); - }); - return base; - }, - merge = helpers.merge = function(base,master){ - //Merge properties in left object over to a shallow clone of object right. - var args = Array.prototype.slice.call(arguments,0); - args.unshift({}); - return extend.apply(null, args); - }, - indexOf = helpers.indexOf = function(arrayToSearch, item){ - if (Array.prototype.indexOf) { - return arrayToSearch.indexOf(item); - } - else{ - for (var i = 0; i < arrayToSearch.length; i++) { - if (arrayToSearch[i] === item) return i; - } - return -1; - } - }, - where = helpers.where = function(collection, filterCallback){ - var filtered = []; - - helpers.each(collection, function(item){ - if (filterCallback(item)){ - filtered.push(item); - } - }); - - return filtered; - }, - findNextWhere = helpers.findNextWhere = function(arrayToSearch, filterCallback, startIndex){ - // Default to start of the array - if (!startIndex){ - startIndex = -1; - } - for (var i = startIndex + 1; i < arrayToSearch.length; i++) { - var currentItem = arrayToSearch[i]; - if (filterCallback(currentItem)){ - return currentItem; - } - } - }, - findPreviousWhere = helpers.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex){ - // Default to end of the array - if (!startIndex){ - startIndex = arrayToSearch.length; - } - for (var i = startIndex - 1; i >= 0; i--) { - var currentItem = arrayToSearch[i]; - if (filterCallback(currentItem)){ - return currentItem; - } - } - }, - inherits = helpers.inherits = function(extensions){ - //Basic javascript inheritance based on the model created in Backbone.js - var parent = this; - var ChartElement = (extensions && extensions.hasOwnProperty("constructor")) ? extensions.constructor : function(){ return parent.apply(this, arguments); }; - - var Surrogate = function(){ this.constructor = ChartElement;}; - Surrogate.prototype = parent.prototype; - ChartElement.prototype = new Surrogate(); - - ChartElement.extend = inherits; - - if (extensions) extend(ChartElement.prototype, extensions); - - ChartElement.__super__ = parent.prototype; - - return ChartElement; - }, - noop = helpers.noop = function(){}, - uid = helpers.uid = (function(){ - var id=0; - return function(){ - return "chart-" + id++; - }; - })(), - warn = helpers.warn = function(str){ - //Method for warning of errors - if (window.console && typeof window.console.warn == "function") console.warn(str); - }, - amd = helpers.amd = (typeof define == 'function' && define.amd), - //-- Math methods - isNumber = helpers.isNumber = function(n){ - return !isNaN(parseFloat(n)) && isFinite(n); - }, - max = helpers.max = function(array){ - return Math.max.apply( Math, array ); - }, - min = helpers.min = function(array){ - return Math.min.apply( Math, array ); - }, - cap = helpers.cap = function(valueToCap,maxValue,minValue){ - if(isNumber(maxValue)) { - if( valueToCap > maxValue ) { - return maxValue; - } - } - else if(isNumber(minValue)){ - if ( valueToCap < minValue ){ - return minValue; - } - } - return valueToCap; - }, - getDecimalPlaces = helpers.getDecimalPlaces = function(num){ - if (num%1!==0 && isNumber(num)){ - return num.toString().split(".")[1].length; - } - else { - return 0; - } - }, - toRadians = helpers.radians = function(degrees){ - return degrees * (Math.PI/180); - }, - // Gets the angle from vertical upright to the point about a centre. - getAngleFromPoint = helpers.getAngleFromPoint = function(centrePoint, anglePoint){ - var distanceFromXCenter = anglePoint.x - centrePoint.x, - distanceFromYCenter = anglePoint.y - centrePoint.y, - radialDistanceFromCenter = Math.sqrt( distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter); - - - var angle = Math.PI * 2 + Math.atan2(distanceFromYCenter, distanceFromXCenter); - - //If the segment is in the top left quadrant, we need to add another rotation to the angle - if (distanceFromXCenter < 0 && distanceFromYCenter < 0){ - angle += Math.PI*2; - } - - return { - angle: angle, - distance: radialDistanceFromCenter - }; - }, - aliasPixel = helpers.aliasPixel = function(pixelWidth){ - return (pixelWidth % 2 === 0) ? 0 : 0.5; - }, - splineCurve = helpers.splineCurve = function(FirstPoint,MiddlePoint,AfterPoint,t){ - //Props to Rob Spencer at scaled innovation for his post on splining between points - //http://scaledinnovation.com/analytics/splines/aboutSplines.html - var d01=Math.sqrt(Math.pow(MiddlePoint.x-FirstPoint.x,2)+Math.pow(MiddlePoint.y-FirstPoint.y,2)), - d12=Math.sqrt(Math.pow(AfterPoint.x-MiddlePoint.x,2)+Math.pow(AfterPoint.y-MiddlePoint.y,2)), - fa=t*d01/(d01+d12),// scaling factor for triangle Ta - fb=t*d12/(d01+d12); - return { - inner : { - x : MiddlePoint.x-fa*(AfterPoint.x-FirstPoint.x), - y : MiddlePoint.y-fa*(AfterPoint.y-FirstPoint.y) - }, - outer : { - x: MiddlePoint.x+fb*(AfterPoint.x-FirstPoint.x), - y : MiddlePoint.y+fb*(AfterPoint.y-FirstPoint.y) - } - }; - }, - calculateOrderOfMagnitude = helpers.calculateOrderOfMagnitude = function(val){ - return Math.floor(Math.log(val) / Math.LN10); - }, - calculateScaleRange = helpers.calculateScaleRange = function(valuesArray, drawingSize, textSize, startFromZero, integersOnly){ - - //Set a minimum step of two - a point at the top of the graph, and a point at the base - var minSteps = 2, - maxSteps = Math.floor(drawingSize/(textSize * 1.5)), - skipFitting = (minSteps >= maxSteps); - - var maxValue = max(valuesArray), - minValue = min(valuesArray); - - // We need some degree of seperation here to calculate the scales if all the values are the same - // Adding/minusing 0.5 will give us a range of 1. - if (maxValue === minValue){ - maxValue += 0.5; - // So we don't end up with a graph with a negative start value if we've said always start from zero - if (minValue >= 0.5 && !startFromZero){ - minValue -= 0.5; - } - else{ - // Make up a whole number above the values - maxValue += 0.5; - } - } - - var valueRange = Math.abs(maxValue - minValue), - rangeOrderOfMagnitude = calculateOrderOfMagnitude(valueRange), - graphMax = Math.ceil(maxValue / (1 * Math.pow(10, rangeOrderOfMagnitude))) * Math.pow(10, rangeOrderOfMagnitude), - graphMin = (startFromZero) ? 0 : Math.floor(minValue / (1 * Math.pow(10, rangeOrderOfMagnitude))) * Math.pow(10, rangeOrderOfMagnitude), - graphRange = graphMax - graphMin, - stepValue = Math.pow(10, rangeOrderOfMagnitude), - numberOfSteps = Math.round(graphRange / stepValue); - - //If we have more space on the graph we'll use it to give more definition to the data - while((numberOfSteps > maxSteps || (numberOfSteps * 2) < maxSteps) && !skipFitting) { - if(numberOfSteps > maxSteps){ - stepValue *=2; - numberOfSteps = Math.round(graphRange/stepValue); - // Don't ever deal with a decimal number of steps - cancel fitting and just use the minimum number of steps. - if (numberOfSteps % 1 !== 0){ - skipFitting = true; - } - } - //We can fit in double the amount of scale points on the scale - else{ - //If user has declared ints only, and the step value isn't a decimal - if (integersOnly && rangeOrderOfMagnitude >= 0){ - //If the user has said integers only, we need to check that making the scale more granular wouldn't make it a float - if(stepValue/2 % 1 === 0){ - stepValue /=2; - numberOfSteps = Math.round(graphRange/stepValue); - } - //If it would make it a float break out of the loop - else{ - break; - } - } - //If the scale doesn't have to be an int, make the scale more granular anyway. - else{ - stepValue /=2; - numberOfSteps = Math.round(graphRange/stepValue); - } - - } - } - - if (skipFitting){ - numberOfSteps = minSteps; - stepValue = graphRange / numberOfSteps; - } - - return { - steps : numberOfSteps, - stepValue : stepValue, - min : graphMin, - max : graphMin + (numberOfSteps * stepValue) - }; - - }, - /* jshint ignore:start */ - // Blows up jshint errors based on the new Function constructor - //Templating methods - //Javascript micro templating by John Resig - source at http://ejohn.org/blog/javascript-micro-templating/ - template = helpers.template = function(templateString, valuesObject){ - - // If templateString is function rather than string-template - call the function for valuesObject - - if(templateString instanceof Function){ - return templateString(valuesObject); - } - - var cache = {}; - function tmpl(str, data){ - // Figure out if we're getting a template, or if we need to - // load the template - and be sure to cache the result. - var fn = !/\W/.test(str) ? - cache[str] = cache[str] : - - // Generate a reusable function that will serve as a template - // generator (and which will be cached). - new Function("obj", - "var p=[],print=function(){p.push.apply(p,arguments);};" + - - // Introduce the data as local variables using with(){} - "with(obj){p.push('" + - - // Convert the template into pure JavaScript - str - .replace(/[\r\t\n]/g, " ") - .split("<%").join("\t") - .replace(/((^|%>)[^\t]*)'/g, "$1\r") - .replace(/\t=(.*?)%>/g, "',$1,'") - .split("\t").join("');") - .split("%>").join("p.push('") - .split("\r").join("\\'") + - "');}return p.join('');" - ); - - // Provide some basic currying to the user - return data ? fn( data ) : fn; - } - return tmpl(templateString,valuesObject); - }, - /* jshint ignore:end */ - generateLabels = helpers.generateLabels = function(templateString,numberOfSteps,graphMin,stepValue){ - var labelsArray = new Array(numberOfSteps); - if (labelTemplateString){ - each(labelsArray,function(val,index){ - labelsArray[index] = template(templateString,{value: (graphMin + (stepValue*(index+1)))}); - }); - } - return labelsArray; - }, - //--Animation methods - //Easing functions adapted from Robert Penner's easing equations - //http://www.robertpenner.com/easing/ - easingEffects = helpers.easingEffects = { - linear: function (t) { - return t; - }, - easeInQuad: function (t) { - return t * t; - }, - easeOutQuad: function (t) { - return -1 * t * (t - 2); - }, - easeInOutQuad: function (t) { - if ((t /= 1 / 2) < 1) return 1 / 2 * t * t; - return -1 / 2 * ((--t) * (t - 2) - 1); - }, - easeInCubic: function (t) { - return t * t * t; - }, - easeOutCubic: function (t) { - return 1 * ((t = t / 1 - 1) * t * t + 1); - }, - easeInOutCubic: function (t) { - if ((t /= 1 / 2) < 1) return 1 / 2 * t * t * t; - return 1 / 2 * ((t -= 2) * t * t + 2); - }, - easeInQuart: function (t) { - return t * t * t * t; - }, - easeOutQuart: function (t) { - return -1 * ((t = t / 1 - 1) * t * t * t - 1); - }, - easeInOutQuart: function (t) { - if ((t /= 1 / 2) < 1) return 1 / 2 * t * t * t * t; - return -1 / 2 * ((t -= 2) * t * t * t - 2); - }, - easeInQuint: function (t) { - return 1 * (t /= 1) * t * t * t * t; - }, - easeOutQuint: function (t) { - return 1 * ((t = t / 1 - 1) * t * t * t * t + 1); - }, - easeInOutQuint: function (t) { - if ((t /= 1 / 2) < 1) return 1 / 2 * t * t * t * t * t; - return 1 / 2 * ((t -= 2) * t * t * t * t + 2); - }, - easeInSine: function (t) { - return -1 * Math.cos(t / 1 * (Math.PI / 2)) + 1; - }, - easeOutSine: function (t) { - return 1 * Math.sin(t / 1 * (Math.PI / 2)); - }, - easeInOutSine: function (t) { - return -1 / 2 * (Math.cos(Math.PI * t / 1) - 1); - }, - easeInExpo: function (t) { - return (t === 0) ? 1 : 1 * Math.pow(2, 10 * (t / 1 - 1)); - }, - easeOutExpo: function (t) { - return (t === 1) ? 1 : 1 * (-Math.pow(2, -10 * t / 1) + 1); - }, - easeInOutExpo: function (t) { - if (t === 0) return 0; - if (t === 1) return 1; - if ((t /= 1 / 2) < 1) return 1 / 2 * Math.pow(2, 10 * (t - 1)); - return 1 / 2 * (-Math.pow(2, -10 * --t) + 2); - }, - easeInCirc: function (t) { - if (t >= 1) return t; - return -1 * (Math.sqrt(1 - (t /= 1) * t) - 1); - }, - easeOutCirc: function (t) { - return 1 * Math.sqrt(1 - (t = t / 1 - 1) * t); - }, - easeInOutCirc: function (t) { - if ((t /= 1 / 2) < 1) return -1 / 2 * (Math.sqrt(1 - t * t) - 1); - return 1 / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1); - }, - easeInElastic: function (t) { - var s = 1.70158; - var p = 0; - var a = 1; - if (t === 0) return 0; - if ((t /= 1) == 1) return 1; - if (!p) p = 1 * 0.3; - if (a < Math.abs(1)) { - a = 1; - s = p / 4; - } else s = p / (2 * Math.PI) * Math.asin(1 / a); - return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * 1 - s) * (2 * Math.PI) / p)); - }, - easeOutElastic: function (t) { - var s = 1.70158; - var p = 0; - var a = 1; - if (t === 0) return 0; - if ((t /= 1) == 1) return 1; - if (!p) p = 1 * 0.3; - if (a < Math.abs(1)) { - a = 1; - s = p / 4; - } else s = p / (2 * Math.PI) * Math.asin(1 / a); - return a * Math.pow(2, -10 * t) * Math.sin((t * 1 - s) * (2 * Math.PI) / p) + 1; - }, - easeInOutElastic: function (t) { - var s = 1.70158; - var p = 0; - var a = 1; - if (t === 0) return 0; - if ((t /= 1 / 2) == 2) return 1; - if (!p) p = 1 * (0.3 * 1.5); - if (a < Math.abs(1)) { - a = 1; - s = p / 4; - } else s = p / (2 * Math.PI) * Math.asin(1 / a); - if (t < 1) return -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * 1 - s) * (2 * Math.PI) / p)); - return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * 1 - s) * (2 * Math.PI) / p) * 0.5 + 1; - }, - easeInBack: function (t) { - var s = 1.70158; - return 1 * (t /= 1) * t * ((s + 1) * t - s); - }, - easeOutBack: function (t) { - var s = 1.70158; - return 1 * ((t = t / 1 - 1) * t * ((s + 1) * t + s) + 1); - }, - easeInOutBack: function (t) { - var s = 1.70158; - if ((t /= 1 / 2) < 1) return 1 / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)); - return 1 / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2); - }, - easeInBounce: function (t) { - return 1 - easingEffects.easeOutBounce(1 - t); - }, - easeOutBounce: function (t) { - if ((t /= 1) < (1 / 2.75)) { - return 1 * (7.5625 * t * t); - } else if (t < (2 / 2.75)) { - return 1 * (7.5625 * (t -= (1.5 / 2.75)) * t + 0.75); - } else if (t < (2.5 / 2.75)) { - return 1 * (7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375); - } else { - return 1 * (7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375); - } - }, - easeInOutBounce: function (t) { - if (t < 1 / 2) return easingEffects.easeInBounce(t * 2) * 0.5; - return easingEffects.easeOutBounce(t * 2 - 1) * 0.5 + 1 * 0.5; - } - }, - //Request animation polyfill - http://www.paulirish.com/2011/requestanimationframe-for-smart-animating/ - requestAnimFrame = helpers.requestAnimFrame = (function(){ - return window.requestAnimationFrame || - window.webkitRequestAnimationFrame || - window.mozRequestAnimationFrame || - window.oRequestAnimationFrame || - window.msRequestAnimationFrame || - function(callback) { - return window.setTimeout(callback, 1000 / 60); - }; - })(), - cancelAnimFrame = helpers.cancelAnimFrame = (function(){ - return window.cancelAnimationFrame || - window.webkitCancelAnimationFrame || - window.mozCancelAnimationFrame || - window.oCancelAnimationFrame || - window.msCancelAnimationFrame || - function(callback) { - return window.clearTimeout(callback, 1000 / 60); - }; - })(), - animationLoop = helpers.animationLoop = function(callback,totalSteps,easingString,onProgress,onComplete,chartInstance){ - - var currentStep = 0, - easingFunction = easingEffects[easingString] || easingEffects.linear; - - var animationFrame = function(){ - currentStep++; - var stepDecimal = currentStep/totalSteps; - var easeDecimal = easingFunction(stepDecimal); - - callback.call(chartInstance,easeDecimal,stepDecimal, currentStep); - onProgress.call(chartInstance,easeDecimal,stepDecimal); - if (currentStep < totalSteps){ - chartInstance.animationFrame = requestAnimFrame(animationFrame); - } else{ - onComplete.apply(chartInstance); - } - }; - requestAnimFrame(animationFrame); - }, - //-- DOM methods - getRelativePosition = helpers.getRelativePosition = function(evt){ - var mouseX, mouseY; - var e = evt.originalEvent || evt, - canvas = evt.currentTarget || evt.srcElement, - boundingRect = canvas.getBoundingClientRect(); - - if (e.touches){ - mouseX = e.touches[0].clientX - boundingRect.left; - mouseY = e.touches[0].clientY - boundingRect.top; - - } - else{ - mouseX = e.clientX - boundingRect.left; - mouseY = e.clientY - boundingRect.top; - } - - return { - x : mouseX, - y : mouseY - }; - - }, - addEvent = helpers.addEvent = function(node,eventType,method){ - if (node.addEventListener){ - node.addEventListener(eventType,method); - } else if (node.attachEvent){ - node.attachEvent("on"+eventType, method); - } else { - node["on"+eventType] = method; - } - }, - removeEvent = helpers.removeEvent = function(node, eventType, handler){ - if (node.removeEventListener){ - node.removeEventListener(eventType, handler, false); - } else if (node.detachEvent){ - node.detachEvent("on"+eventType,handler); - } else{ - node["on" + eventType] = noop; - } - }, - bindEvents = helpers.bindEvents = function(chartInstance, arrayOfEvents, handler){ - // Create the events object if it's not already present - if (!chartInstance.events) chartInstance.events = {}; - - each(arrayOfEvents,function(eventName){ - chartInstance.events[eventName] = function(){ - handler.apply(chartInstance, arguments); - }; - addEvent(chartInstance.chart.canvas,eventName,chartInstance.events[eventName]); - }); - }, - unbindEvents = helpers.unbindEvents = function (chartInstance, arrayOfEvents) { - each(arrayOfEvents, function(handler,eventName){ - removeEvent(chartInstance.chart.canvas, eventName, handler); - }); - }, - getMaximumWidth = helpers.getMaximumWidth = function(domNode){ - var container = domNode.parentNode; - // TODO = check cross browser stuff with this. - return container.clientWidth; - }, - getMaximumHeight = helpers.getMaximumHeight = function(domNode){ - var container = domNode.parentNode; - // TODO = check cross browser stuff with this. - return container.clientHeight; - }, - getMaximumSize = helpers.getMaximumSize = helpers.getMaximumWidth, // legacy support - retinaScale = helpers.retinaScale = function(chart){ - var ctx = chart.ctx, - width = chart.canvas.width, - height = chart.canvas.height; - - if (window.devicePixelRatio) { - ctx.canvas.style.width = width + "px"; - ctx.canvas.style.height = height + "px"; - ctx.canvas.height = height * window.devicePixelRatio; - ctx.canvas.width = width * window.devicePixelRatio; - ctx.scale(window.devicePixelRatio, window.devicePixelRatio); - } - }, - //-- Canvas methods - clear = helpers.clear = function(chart){ - chart.ctx.clearRect(0,0,chart.width,chart.height); - }, - fontString = helpers.fontString = function(pixelSize,fontStyle,fontFamily){ - return fontStyle + " " + pixelSize+"px " + fontFamily; - }, - longestText = helpers.longestText = function(ctx,font,arrayOfStrings){ - ctx.font = font; - var longest = 0; - each(arrayOfStrings,function(string){ - var textWidth = ctx.measureText(string).width; - longest = (textWidth > longest) ? textWidth : longest; - }); - return longest; - }, - drawRoundedRectangle = helpers.drawRoundedRectangle = function(ctx,x,y,width,height,radius){ - ctx.beginPath(); - ctx.moveTo(x + radius, y); - ctx.lineTo(x + width - radius, y); - ctx.quadraticCurveTo(x + width, y, x + width, y + radius); - ctx.lineTo(x + width, y + height - radius); - ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height); - ctx.lineTo(x + radius, y + height); - ctx.quadraticCurveTo(x, y + height, x, y + height - radius); - ctx.lineTo(x, y + radius); - ctx.quadraticCurveTo(x, y, x + radius, y); - ctx.closePath(); - }; - - - //Store a reference to each instance - allowing us to globally resize chart instances on window resize. - //Destroy method on the chart will remove the instance of the chart from this reference. - Chart.instances = {}; - - Chart.Type = function(data,options,chart){ - this.options = options; - this.chart = chart; - this.id = uid(); - //Add the chart instance to the global namespace - Chart.instances[this.id] = this; - - // Initialize is always called when a chart type is created - // By default it is a no op, but it should be extended - if (options.responsive){ - this.resize(); - } - this.initialize.call(this,data); - }; - - //Core methods that'll be a part of every chart type - extend(Chart.Type.prototype,{ - initialize : function(){return this;}, - clear : function(){ - clear(this.chart); - return this; - }, - stop : function(){ - // Stops any current animation loop occuring - helpers.cancelAnimFrame.call(root, this.animationFrame); - return this; - }, - resize : function(callback){ - this.stop(); - var canvas = this.chart.canvas, - newWidth = getMaximumWidth(this.chart.canvas), - newHeight = this.options.maintainAspectRatio ? newWidth / this.chart.aspectRatio : getMaximumHeight(this.chart.canvas); - - canvas.width = this.chart.width = newWidth; - canvas.height = this.chart.height = newHeight; - - retinaScale(this.chart); - - if (typeof callback === "function"){ - callback.apply(this, Array.prototype.slice.call(arguments, 1)); - } - return this; - }, - reflow : noop, - render : function(reflow){ - if (reflow){ - this.reflow(); - } - if (this.options.animation && !reflow){ - helpers.animationLoop( - this.draw, - this.options.animationSteps, - this.options.animationEasing, - this.options.onAnimationProgress, - this.options.onAnimationComplete, - this - ); - } - else{ - this.draw(); - this.options.onAnimationComplete.call(this); - } - return this; - }, - generateLegend : function(){ - return template(this.options.legendTemplate,this); - }, - destroy : function(){ - this.clear(); - unbindEvents(this, this.events); - var canvas = this.chart.canvas; - - // Reset canvas height/width attributes starts a fresh with the canvas context - canvas.width = this.chart.width; - canvas.height = this.chart.height; - - // < IE9 doesn't support removeProperty - if (canvas.style.removeProperty) { - canvas.style.removeProperty('width'); - canvas.style.removeProperty('height'); - } else { - canvas.style.removeAttribute('width'); - canvas.style.removeAttribute('height'); - } - - delete Chart.instances[this.id]; - }, - showTooltip : function(ChartElements, forceRedraw){ - // Only redraw the chart if we've actually changed what we're hovering on. - if (typeof this.activeElements === 'undefined') this.activeElements = []; - - var isChanged = (function(Elements){ - var changed = false; - - if (Elements.length !== this.activeElements.length){ - changed = true; - return changed; - } - - each(Elements, function(element, index){ - if (element !== this.activeElements[index]){ - changed = true; - } - }, this); - return changed; - }).call(this, ChartElements); - - if (!isChanged && !forceRedraw){ - return; - } - else{ - this.activeElements = ChartElements; - } - this.draw(); - if(this.options.customTooltips){ - this.options.customTooltips(false); - } - if (ChartElements.length > 0){ - // If we have multiple datasets, show a MultiTooltip for all of the data points at that index - if (this.datasets && this.datasets.length > 1) { - var dataArray, - dataIndex; - - for (var i = this.datasets.length - 1; i >= 0; i--) { - dataArray = this.datasets[i].points || this.datasets[i].bars || this.datasets[i].segments; - dataIndex = indexOf(dataArray, ChartElements[0]); - if (dataIndex !== -1){ - break; - } - } - var tooltipLabels = [], - tooltipColors = [], - medianPosition = (function(index) { - - // Get all the points at that particular index - var Elements = [], - dataCollection, - xPositions = [], - yPositions = [], - xMax, - yMax, - xMin, - yMin; - helpers.each(this.datasets, function(dataset){ - dataCollection = dataset.points || dataset.bars || dataset.segments; - if (dataCollection[dataIndex] && dataCollection[dataIndex].hasValue()){ - Elements.push(dataCollection[dataIndex]); - } - }); - - helpers.each(Elements, function(element) { - xPositions.push(element.x); - yPositions.push(element.y); - - - //Include any colour information about the element - tooltipLabels.push(helpers.template(this.options.multiTooltipTemplate, element)); - tooltipColors.push({ - fill: element._saved.fillColor || element.fillColor, - stroke: element._saved.strokeColor || element.strokeColor - }); - - }, this); - - yMin = min(yPositions); - yMax = max(yPositions); - - xMin = min(xPositions); - xMax = max(xPositions); - - return { - x: (xMin > this.chart.width/2) ? xMin : xMax, - y: (yMin + yMax)/2 - }; - }).call(this, dataIndex); - - new Chart.MultiTooltip({ - x: medianPosition.x, - y: medianPosition.y, - xPadding: this.options.tooltipXPadding, - yPadding: this.options.tooltipYPadding, - xOffset: this.options.tooltipXOffset, - fillColor: this.options.tooltipFillColor, - textColor: this.options.tooltipFontColor, - fontFamily: this.options.tooltipFontFamily, - fontStyle: this.options.tooltipFontStyle, - fontSize: this.options.tooltipFontSize, - titleTextColor: this.options.tooltipTitleFontColor, - titleFontFamily: this.options.tooltipTitleFontFamily, - titleFontStyle: this.options.tooltipTitleFontStyle, - titleFontSize: this.options.tooltipTitleFontSize, - cornerRadius: this.options.tooltipCornerRadius, - labels: tooltipLabels, - legendColors: tooltipColors, - legendColorBackground : this.options.multiTooltipKeyBackground, - title: ChartElements[0].label, - chart: this.chart, - ctx: this.chart.ctx, - custom: this.options.customTooltips - }).draw(); - - } else { - each(ChartElements, function(Element) { - var tooltipPosition = Element.tooltipPosition(); - new Chart.Tooltip({ - x: Math.round(tooltipPosition.x), - y: Math.round(tooltipPosition.y), - xPadding: this.options.tooltipXPadding, - yPadding: this.options.tooltipYPadding, - fillColor: this.options.tooltipFillColor, - textColor: this.options.tooltipFontColor, - fontFamily: this.options.tooltipFontFamily, - fontStyle: this.options.tooltipFontStyle, - fontSize: this.options.tooltipFontSize, - caretHeight: this.options.tooltipCaretSize, - cornerRadius: this.options.tooltipCornerRadius, - text: template(this.options.tooltipTemplate, Element), - chart: this.chart, - custom: this.options.customTooltips - }).draw(); - }, this); - } - } - return this; - }, - toBase64Image : function(){ - return this.chart.canvas.toDataURL.apply(this.chart.canvas, arguments); - } - }); - - Chart.Type.extend = function(extensions){ - - var parent = this; - - var ChartType = function(){ - return parent.apply(this,arguments); - }; - - //Copy the prototype object of the this class - ChartType.prototype = clone(parent.prototype); - //Now overwrite some of the properties in the base class with the new extensions - extend(ChartType.prototype, extensions); - - ChartType.extend = Chart.Type.extend; - - if (extensions.name || parent.prototype.name){ - - var chartName = extensions.name || parent.prototype.name; - //Assign any potential default values of the new chart type - - //If none are defined, we'll use a clone of the chart type this is being extended from. - //I.e. if we extend a line chart, we'll use the defaults from the line chart if our new chart - //doesn't define some defaults of their own. - - var baseDefaults = (Chart.defaults[parent.prototype.name]) ? clone(Chart.defaults[parent.prototype.name]) : {}; - - Chart.defaults[chartName] = extend(baseDefaults,extensions.defaults); - - Chart.types[chartName] = ChartType; - - //Register this new chart type in the Chart prototype - Chart.prototype[chartName] = function(data,options){ - var config = merge(Chart.defaults.global, Chart.defaults[chartName], options || {}); - return new ChartType(data,config,this); - }; - } else{ - warn("Name not provided for this chart, so it hasn't been registered"); - } - return parent; - }; - - Chart.Element = function(configuration){ - extend(this,configuration); - this.initialize.apply(this,arguments); - this.save(); - }; - extend(Chart.Element.prototype,{ - initialize : function(){}, - restore : function(props){ - if (!props){ - extend(this,this._saved); - } else { - each(props,function(key){ - this[key] = this._saved[key]; - },this); - } - return this; - }, - save : function(){ - this._saved = clone(this); - delete this._saved._saved; - return this; - }, - update : function(newProps){ - each(newProps,function(value,key){ - this._saved[key] = this[key]; - this[key] = value; - },this); - return this; - }, - transition : function(props,ease){ - each(props,function(value,key){ - this[key] = ((value - this._saved[key]) * ease) + this._saved[key]; - },this); - return this; - }, - tooltipPosition : function(){ - return { - x : this.x, - y : this.y - }; - }, - hasValue: function(){ - return isNumber(this.value); - } - }); - - Chart.Element.extend = inherits; - - - Chart.Point = Chart.Element.extend({ - display: true, - inRange: function(chartX,chartY){ - var hitDetectionRange = this.hitDetectionRadius + this.radius; - return ((Math.pow(chartX-this.x, 2)+Math.pow(chartY-this.y, 2)) < Math.pow(hitDetectionRange,2)); - }, - draw : function(){ - if (this.display){ - var ctx = this.ctx; - ctx.beginPath(); - - ctx.arc(this.x, this.y, this.radius, 0, Math.PI*2); - ctx.closePath(); - - ctx.strokeStyle = this.strokeColor; - ctx.lineWidth = this.strokeWidth; - - ctx.fillStyle = this.fillColor; - - ctx.fill(); - ctx.stroke(); - } - - - //Quick debug for bezier curve splining - //Highlights control points and the line between them. - //Handy for dev - stripped in the min version. - - // ctx.save(); - // ctx.fillStyle = "black"; - // ctx.strokeStyle = "black" - // ctx.beginPath(); - // ctx.arc(this.controlPoints.inner.x,this.controlPoints.inner.y, 2, 0, Math.PI*2); - // ctx.fill(); - - // ctx.beginPath(); - // ctx.arc(this.controlPoints.outer.x,this.controlPoints.outer.y, 2, 0, Math.PI*2); - // ctx.fill(); - - // ctx.moveTo(this.controlPoints.inner.x,this.controlPoints.inner.y); - // ctx.lineTo(this.x, this.y); - // ctx.lineTo(this.controlPoints.outer.x,this.controlPoints.outer.y); - // ctx.stroke(); - - // ctx.restore(); - - - - } - }); - - Chart.Arc = Chart.Element.extend({ - inRange : function(chartX,chartY){ - - var pointRelativePosition = helpers.getAngleFromPoint(this, { - x: chartX, - y: chartY - }); - - //Check if within the range of the open/close angle - var betweenAngles = (pointRelativePosition.angle >= this.startAngle && pointRelativePosition.angle <= this.endAngle), - withinRadius = (pointRelativePosition.distance >= this.innerRadius && pointRelativePosition.distance <= this.outerRadius); - - return (betweenAngles && withinRadius); - //Ensure within the outside of the arc centre, but inside arc outer - }, - tooltipPosition : function(){ - var centreAngle = this.startAngle + ((this.endAngle - this.startAngle) / 2), - rangeFromCentre = (this.outerRadius - this.innerRadius) / 2 + this.innerRadius; - return { - x : this.x + (Math.cos(centreAngle) * rangeFromCentre), - y : this.y + (Math.sin(centreAngle) * rangeFromCentre) - }; - }, - draw : function(animationPercent){ - - var easingDecimal = animationPercent || 1; - - var ctx = this.ctx; - - ctx.beginPath(); - - ctx.arc(this.x, this.y, this.outerRadius, this.startAngle, this.endAngle); - - ctx.arc(this.x, this.y, this.innerRadius, this.endAngle, this.startAngle, true); - - ctx.closePath(); - ctx.strokeStyle = this.strokeColor; - ctx.lineWidth = this.strokeWidth; - - ctx.fillStyle = this.fillColor; - - ctx.fill(); - ctx.lineJoin = 'bevel'; - - if (this.showStroke){ - ctx.stroke(); - } - } - }); - - Chart.Rectangle = Chart.Element.extend({ - draw : function(){ - var ctx = this.ctx, - halfWidth = this.width/2, - leftX = this.x - halfWidth, - rightX = this.x + halfWidth, - top = this.base - (this.base - this.y), - halfStroke = this.strokeWidth / 2; - - // Canvas doesn't allow us to stroke inside the width so we can - // adjust the sizes to fit if we're setting a stroke on the line - if (this.showStroke){ - leftX += halfStroke; - rightX -= halfStroke; - top += halfStroke; - } - - ctx.beginPath(); - - ctx.fillStyle = this.fillColor; - ctx.strokeStyle = this.strokeColor; - ctx.lineWidth = this.strokeWidth; - - // It'd be nice to keep this class totally generic to any rectangle - // and simply specify which border to miss out. - ctx.moveTo(leftX, this.base); - ctx.lineTo(leftX, top); - ctx.lineTo(rightX, top); - ctx.lineTo(rightX, this.base); - ctx.fill(); - if (this.showStroke){ - ctx.stroke(); - } - }, - height : function(){ - return this.base - this.y; - }, - inRange : function(chartX,chartY){ - return (chartX >= this.x - this.width/2 && chartX <= this.x + this.width/2) && (chartY >= this.y && chartY <= this.base); - } - }); - - Chart.Tooltip = Chart.Element.extend({ - draw : function(){ - - var ctx = this.chart.ctx; - - ctx.font = fontString(this.fontSize,this.fontStyle,this.fontFamily); - - this.xAlign = "center"; - this.yAlign = "above"; - - //Distance between the actual element.y position and the start of the tooltip caret - var caretPadding = this.caretPadding = 2; - - var tooltipWidth = ctx.measureText(this.text).width + 2*this.xPadding, - tooltipRectHeight = this.fontSize + 2*this.yPadding, - tooltipHeight = tooltipRectHeight + this.caretHeight + caretPadding; - - if (this.x + tooltipWidth/2 >this.chart.width){ - this.xAlign = "left"; - } else if (this.x - tooltipWidth/2 < 0){ - this.xAlign = "right"; - } - - if (this.y - tooltipHeight < 0){ - this.yAlign = "below"; - } - - - var tooltipX = this.x - tooltipWidth/2, - tooltipY = this.y - tooltipHeight; - - ctx.fillStyle = this.fillColor; - - // Custom Tooltips - if(this.custom){ - this.custom(this); - } - else{ - switch(this.yAlign) - { - case "above": - //Draw a caret above the x/y - ctx.beginPath(); - ctx.moveTo(this.x,this.y - caretPadding); - ctx.lineTo(this.x + this.caretHeight, this.y - (caretPadding + this.caretHeight)); - ctx.lineTo(this.x - this.caretHeight, this.y - (caretPadding + this.caretHeight)); - ctx.closePath(); - ctx.fill(); - break; - case "below": - tooltipY = this.y + caretPadding + this.caretHeight; - //Draw a caret below the x/y - ctx.beginPath(); - ctx.moveTo(this.x, this.y + caretPadding); - ctx.lineTo(this.x + this.caretHeight, this.y + caretPadding + this.caretHeight); - ctx.lineTo(this.x - this.caretHeight, this.y + caretPadding + this.caretHeight); - ctx.closePath(); - ctx.fill(); - break; - } - - switch(this.xAlign) - { - case "left": - tooltipX = this.x - tooltipWidth + (this.cornerRadius + this.caretHeight); - break; - case "right": - tooltipX = this.x - (this.cornerRadius + this.caretHeight); - break; - } - - drawRoundedRectangle(ctx,tooltipX,tooltipY,tooltipWidth,tooltipRectHeight,this.cornerRadius); - - ctx.fill(); - - ctx.fillStyle = this.textColor; - ctx.textAlign = "center"; - ctx.textBaseline = "middle"; - ctx.fillText(this.text, tooltipX + tooltipWidth/2, tooltipY + tooltipRectHeight/2); - } - } - }); - - Chart.MultiTooltip = Chart.Element.extend({ - initialize : function(){ - this.font = fontString(this.fontSize,this.fontStyle,this.fontFamily); - - this.titleFont = fontString(this.titleFontSize,this.titleFontStyle,this.titleFontFamily); - - this.height = (this.labels.length * this.fontSize) + ((this.labels.length-1) * (this.fontSize/2)) + (this.yPadding*2) + this.titleFontSize *1.5; - - this.ctx.font = this.titleFont; - - var titleWidth = this.ctx.measureText(this.title).width, - //Label has a legend square as well so account for this. - labelWidth = longestText(this.ctx,this.font,this.labels) + this.fontSize + 3, - longestTextWidth = max([labelWidth,titleWidth]); - - this.width = longestTextWidth + (this.xPadding*2); - - - var halfHeight = this.height/2; - - //Check to ensure the height will fit on the canvas - //The three is to buffer form the very - if (this.y - halfHeight < 0 ){ - this.y = halfHeight; - } else if (this.y + halfHeight > this.chart.height){ - this.y = this.chart.height - halfHeight; - } - - //Decide whether to align left or right based on position on canvas - if (this.x > this.chart.width/2){ - this.x -= this.xOffset + this.width; - } else { - this.x += this.xOffset; - } - - - }, - getLineHeight : function(index){ - var baseLineHeight = this.y - (this.height/2) + this.yPadding, - afterTitleIndex = index-1; - - //If the index is zero, we're getting the title - if (index === 0){ - return baseLineHeight + this.titleFontSize/2; - } else{ - return baseLineHeight + ((this.fontSize*1.5*afterTitleIndex) + this.fontSize/2) + this.titleFontSize * 1.5; - } - - }, - draw : function(){ - // Custom Tooltips - if(this.custom){ - this.custom(this); - } - else{ - drawRoundedRectangle(this.ctx,this.x,this.y - this.height/2,this.width,this.height,this.cornerRadius); - var ctx = this.ctx; - ctx.fillStyle = this.fillColor; - ctx.fill(); - ctx.closePath(); - - ctx.textAlign = "left"; - ctx.textBaseline = "middle"; - ctx.fillStyle = this.titleTextColor; - ctx.font = this.titleFont; - - ctx.fillText(this.title,this.x + this.xPadding, this.getLineHeight(0)); - - ctx.font = this.font; - helpers.each(this.labels,function(label,index){ - ctx.fillStyle = this.textColor; - ctx.fillText(label,this.x + this.xPadding + this.fontSize + 3, this.getLineHeight(index + 1)); - - //A bit gnarly, but clearing this rectangle breaks when using explorercanvas (clears whole canvas) - //ctx.clearRect(this.x + this.xPadding, this.getLineHeight(index + 1) - this.fontSize/2, this.fontSize, this.fontSize); - //Instead we'll make a white filled block to put the legendColour palette over. - - ctx.fillStyle = this.legendColorBackground; - ctx.fillRect(this.x + this.xPadding, this.getLineHeight(index + 1) - this.fontSize/2, this.fontSize, this.fontSize); - - ctx.fillStyle = this.legendColors[index].fill; - ctx.fillRect(this.x + this.xPadding, this.getLineHeight(index + 1) - this.fontSize/2, this.fontSize, this.fontSize); - - - },this); - } - } - }); - - Chart.Scale = Chart.Element.extend({ - initialize : function(){ - this.fit(); - }, - buildYLabels : function(){ - this.yLabels = []; - - var stepDecimalPlaces = getDecimalPlaces(this.stepValue); - - for (var i=0; i<=this.steps; i++){ - this.yLabels.push(template(this.templateString,{value:(this.min + (i * this.stepValue)).toFixed(stepDecimalPlaces)})); - } - this.yLabelWidth = (this.display && this.showLabels) ? longestText(this.ctx,this.font,this.yLabels) : 0; - }, - addXLabel : function(label){ - this.xLabels.push(label); - this.valuesCount++; - this.fit(); - }, - removeXLabel : function(){ - this.xLabels.shift(); - this.valuesCount--; - this.fit(); - }, - // Fitting loop to rotate x Labels and figure out what fits there, and also calculate how many Y steps to use - fit: function(){ - // First we need the width of the yLabels, assuming the xLabels aren't rotated - - // To do that we need the base line at the top and base of the chart, assuming there is no x label rotation - this.startPoint = (this.display) ? this.fontSize : 0; - this.endPoint = (this.display) ? this.height - (this.fontSize * 1.5) - 5 : this.height; // -5 to pad labels - - // Apply padding settings to the start and end point. - this.startPoint += this.padding; - this.endPoint -= this.padding; - - // Cache the starting height, so can determine if we need to recalculate the scale yAxis - var cachedHeight = this.endPoint - this.startPoint, - cachedYLabelWidth; - - // Build the current yLabels so we have an idea of what size they'll be to start - /* - * This sets what is returned from calculateScaleRange as static properties of this class: - * - this.steps; - this.stepValue; - this.min; - this.max; - * - */ - this.calculateYRange(cachedHeight); - - // With these properties set we can now build the array of yLabels - // and also the width of the largest yLabel - this.buildYLabels(); - - this.calculateXLabelRotation(); - - while((cachedHeight > this.endPoint - this.startPoint)){ - cachedHeight = this.endPoint - this.startPoint; - cachedYLabelWidth = this.yLabelWidth; - - this.calculateYRange(cachedHeight); - this.buildYLabels(); - - // Only go through the xLabel loop again if the yLabel width has changed - if (cachedYLabelWidth < this.yLabelWidth){ - this.calculateXLabelRotation(); - } - } - - }, - calculateXLabelRotation : function(){ - //Get the width of each grid by calculating the difference - //between x offsets between 0 and 1. - - this.ctx.font = this.font; - - var firstWidth = this.ctx.measureText(this.xLabels[0]).width, - lastWidth = this.ctx.measureText(this.xLabels[this.xLabels.length - 1]).width, - firstRotated, - lastRotated; - - - this.xScalePaddingRight = lastWidth/2 + 3; - this.xScalePaddingLeft = (firstWidth/2 > this.yLabelWidth + 10) ? firstWidth/2 : this.yLabelWidth + 10; - - this.xLabelRotation = 0; - if (this.display){ - var originalLabelWidth = longestText(this.ctx,this.font,this.xLabels), - cosRotation, - firstRotatedWidth; - this.xLabelWidth = originalLabelWidth; - //Allow 3 pixels x2 padding either side for label readability - var xGridWidth = Math.floor(this.calculateX(1) - this.calculateX(0)) - 6; - - //Max label rotate should be 90 - also act as a loop counter - while ((this.xLabelWidth > xGridWidth && this.xLabelRotation === 0) || (this.xLabelWidth > xGridWidth && this.xLabelRotation <= 90 && this.xLabelRotation > 0)){ - cosRotation = Math.cos(toRadians(this.xLabelRotation)); - - firstRotated = cosRotation * firstWidth; - lastRotated = cosRotation * lastWidth; - - // We're right aligning the text now. - if (firstRotated + this.fontSize / 2 > this.yLabelWidth + 8){ - this.xScalePaddingLeft = firstRotated + this.fontSize / 2; - } - this.xScalePaddingRight = this.fontSize/2; - - - this.xLabelRotation++; - this.xLabelWidth = cosRotation * originalLabelWidth; - - } - if (this.xLabelRotation > 0){ - this.endPoint -= Math.sin(toRadians(this.xLabelRotation))*originalLabelWidth + 3; - } - } - else{ - this.xLabelWidth = 0; - this.xScalePaddingRight = this.padding; - this.xScalePaddingLeft = this.padding; - } - - }, - // Needs to be overidden in each Chart type - // Otherwise we need to pass all the data into the scale class - calculateYRange: noop, - drawingArea: function(){ - return this.startPoint - this.endPoint; - }, - calculateY : function(value){ - var scalingFactor = this.drawingArea() / (this.min - this.max); - return this.endPoint - (scalingFactor * (value - this.min)); - }, - calculateX : function(index){ - var isRotated = (this.xLabelRotation > 0), - // innerWidth = (this.offsetGridLines) ? this.width - offsetLeft - this.padding : this.width - (offsetLeft + halfLabelWidth * 2) - this.padding, - innerWidth = this.width - (this.xScalePaddingLeft + this.xScalePaddingRight), - valueWidth = innerWidth/(this.valuesCount - ((this.offsetGridLines) ? 0 : 1)), - valueOffset = (valueWidth * index) + this.xScalePaddingLeft; - - if (this.offsetGridLines){ - valueOffset += (valueWidth/2); - } - - return Math.round(valueOffset); - }, - update : function(newProps){ - helpers.extend(this, newProps); - this.fit(); - }, - draw : function(){ - var ctx = this.ctx, - yLabelGap = (this.endPoint - this.startPoint) / this.steps, - xStart = Math.round(this.xScalePaddingLeft); - if (this.display){ - ctx.fillStyle = this.textColor; - ctx.font = this.font; - each(this.yLabels,function(labelString,index){ - var yLabelCenter = this.endPoint - (yLabelGap * index), - linePositionY = Math.round(yLabelCenter), - drawHorizontalLine = this.showHorizontalLines; - - ctx.textAlign = "right"; - ctx.textBaseline = "middle"; - if (this.showLabels){ - ctx.fillText(labelString,xStart - 10,yLabelCenter); - } - - // This is X axis, so draw it - if (index === 0 && !drawHorizontalLine){ - drawHorizontalLine = true; - } - - if (drawHorizontalLine){ - ctx.beginPath(); - } - - if (index > 0){ - // This is a grid line in the centre, so drop that - ctx.lineWidth = this.gridLineWidth; - ctx.strokeStyle = this.gridLineColor; - } else { - // This is the first line on the scale - ctx.lineWidth = this.lineWidth; - ctx.strokeStyle = this.lineColor; - } - - linePositionY += helpers.aliasPixel(ctx.lineWidth); - - if(drawHorizontalLine){ - ctx.moveTo(xStart, linePositionY); - ctx.lineTo(this.width, linePositionY); - ctx.stroke(); - ctx.closePath(); - } - - ctx.lineWidth = this.lineWidth; - ctx.strokeStyle = this.lineColor; - ctx.beginPath(); - ctx.moveTo(xStart - 5, linePositionY); - ctx.lineTo(xStart, linePositionY); - ctx.stroke(); - ctx.closePath(); - - },this); - - each(this.xLabels,function(label,index){ - var xPos = this.calculateX(index) + aliasPixel(this.lineWidth), - // Check to see if line/bar here and decide where to place the line - linePos = this.calculateX(index - (this.offsetGridLines ? 0.5 : 0)) + aliasPixel(this.lineWidth), - isRotated = (this.xLabelRotation > 0), - drawVerticalLine = this.showVerticalLines; - - // This is Y axis, so draw it - if (index === 0 && !drawVerticalLine){ - drawVerticalLine = true; - } - - if (drawVerticalLine){ - ctx.beginPath(); - } - - if (index > 0){ - // This is a grid line in the centre, so drop that - ctx.lineWidth = this.gridLineWidth; - ctx.strokeStyle = this.gridLineColor; - } else { - // This is the first line on the scale - ctx.lineWidth = this.lineWidth; - ctx.strokeStyle = this.lineColor; - } - - if (drawVerticalLine){ - ctx.moveTo(linePos,this.endPoint); - ctx.lineTo(linePos,this.startPoint - 3); - ctx.stroke(); - ctx.closePath(); - } - - - ctx.lineWidth = this.lineWidth; - ctx.strokeStyle = this.lineColor; - - - // Small lines at the bottom of the base grid line - ctx.beginPath(); - ctx.moveTo(linePos,this.endPoint); - ctx.lineTo(linePos,this.endPoint + 5); - ctx.stroke(); - ctx.closePath(); - - ctx.save(); - ctx.translate(xPos,(isRotated) ? this.endPoint + 12 : this.endPoint + 8); - ctx.rotate(toRadians(this.xLabelRotation)*-1); - ctx.font = this.font; - ctx.textAlign = (isRotated) ? "right" : "center"; - ctx.textBaseline = (isRotated) ? "middle" : "top"; - ctx.fillText(label, 0, 0); - ctx.restore(); - },this); - - } - } - - }); - - Chart.RadialScale = Chart.Element.extend({ - initialize: function(){ - this.size = min([this.height, this.width]); - this.drawingArea = (this.display) ? (this.size/2) - (this.fontSize/2 + this.backdropPaddingY) : (this.size/2); - }, - calculateCenterOffset: function(value){ - // Take into account half font size + the yPadding of the top value - var scalingFactor = this.drawingArea / (this.max - this.min); - - return (value - this.min) * scalingFactor; - }, - update : function(){ - if (!this.lineArc){ - this.setScaleSize(); - } else { - this.drawingArea = (this.display) ? (this.size/2) - (this.fontSize/2 + this.backdropPaddingY) : (this.size/2); - } - this.buildYLabels(); - }, - buildYLabels: function(){ - this.yLabels = []; - - var stepDecimalPlaces = getDecimalPlaces(this.stepValue); - - for (var i=0; i<=this.steps; i++){ - this.yLabels.push(template(this.templateString,{value:(this.min + (i * this.stepValue)).toFixed(stepDecimalPlaces)})); - } - }, - getCircumference : function(){ - return ((Math.PI*2) / this.valuesCount); - }, - setScaleSize: function(){ - /* - * Right, this is really confusing and there is a lot of maths going on here - * The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9 - * - * Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif - * - * Solution: - * - * We assume the radius of the polygon is half the size of the canvas at first - * at each index we check if the text overlaps. - * - * Where it does, we store that angle and that index. - * - * After finding the largest index and angle we calculate how much we need to remove - * from the shape radius to move the point inwards by that x. - * - * We average the left and right distances to get the maximum shape radius that can fit in the box - * along with labels. - * - * Once we have that, we can find the centre point for the chart, by taking the x text protrusion - * on each side, removing that from the size, halving it and adding the left x protrusion width. - * - * This will mean we have a shape fitted to the canvas, as large as it can be with the labels - * and position it in the most space efficient manner - * - * https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif - */ - - - // Get maximum radius of the polygon. Either half the height (minus the text width) or half the width. - // Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points - var largestPossibleRadius = min([(this.height/2 - this.pointLabelFontSize - 5), this.width/2]), - pointPosition, - i, - textWidth, - halfTextWidth, - furthestRight = this.width, - furthestRightIndex, - furthestRightAngle, - furthestLeft = 0, - furthestLeftIndex, - furthestLeftAngle, - xProtrusionLeft, - xProtrusionRight, - radiusReductionRight, - radiusReductionLeft, - maxWidthRadius; - this.ctx.font = fontString(this.pointLabelFontSize,this.pointLabelFontStyle,this.pointLabelFontFamily); - for (i=0;i<this.valuesCount;i++){ - // 5px to space the text slightly out - similar to what we do in the draw function. - pointPosition = this.getPointPosition(i, largestPossibleRadius); - textWidth = this.ctx.measureText(template(this.templateString, { value: this.labels[i] })).width + 5; - if (i === 0 || i === this.valuesCount/2){ - // If we're at index zero, or exactly the middle, we're at exactly the top/bottom - // of the radar chart, so text will be aligned centrally, so we'll half it and compare - // w/left and right text sizes - halfTextWidth = textWidth/2; - if (pointPosition.x + halfTextWidth > furthestRight) { - furthestRight = pointPosition.x + halfTextWidth; - furthestRightIndex = i; - } - if (pointPosition.x - halfTextWidth < furthestLeft) { - furthestLeft = pointPosition.x - halfTextWidth; - furthestLeftIndex = i; - } - } - else if (i < this.valuesCount/2) { - // Less than half the values means we'll left align the text - if (pointPosition.x + textWidth > furthestRight) { - furthestRight = pointPosition.x + textWidth; - furthestRightIndex = i; - } - } - else if (i > this.valuesCount/2){ - // More than half the values means we'll right align the text - if (pointPosition.x - textWidth < furthestLeft) { - furthestLeft = pointPosition.x - textWidth; - furthestLeftIndex = i; - } - } - } - - xProtrusionLeft = furthestLeft; - - xProtrusionRight = Math.ceil(furthestRight - this.width); - - furthestRightAngle = this.getIndexAngle(furthestRightIndex); - - furthestLeftAngle = this.getIndexAngle(furthestLeftIndex); - - radiusReductionRight = xProtrusionRight / Math.sin(furthestRightAngle + Math.PI/2); - - radiusReductionLeft = xProtrusionLeft / Math.sin(furthestLeftAngle + Math.PI/2); - - // Ensure we actually need to reduce the size of the chart - radiusReductionRight = (isNumber(radiusReductionRight)) ? radiusReductionRight : 0; - radiusReductionLeft = (isNumber(radiusReductionLeft)) ? radiusReductionLeft : 0; - - this.drawingArea = largestPossibleRadius - (radiusReductionLeft + radiusReductionRight)/2; - - //this.drawingArea = min([maxWidthRadius, (this.height - (2 * (this.pointLabelFontSize + 5)))/2]) - this.setCenterPoint(radiusReductionLeft, radiusReductionRight); - - }, - setCenterPoint: function(leftMovement, rightMovement){ - - var maxRight = this.width - rightMovement - this.drawingArea, - maxLeft = leftMovement + this.drawingArea; - - this.xCenter = (maxLeft + maxRight)/2; - // Always vertically in the centre as the text height doesn't change - this.yCenter = (this.height/2); - }, - - getIndexAngle : function(index){ - var angleMultiplier = (Math.PI * 2) / this.valuesCount; - // Start from the top instead of right, so remove a quarter of the circle - - return index * angleMultiplier - (Math.PI/2); - }, - getPointPosition : function(index, distanceFromCenter){ - var thisAngle = this.getIndexAngle(index); - return { - x : (Math.cos(thisAngle) * distanceFromCenter) + this.xCenter, - y : (Math.sin(thisAngle) * distanceFromCenter) + this.yCenter - }; - }, - draw: function(){ - if (this.display){ - var ctx = this.ctx; - each(this.yLabels, function(label, index){ - // Don't draw a centre value - if (index > 0){ - var yCenterOffset = index * (this.drawingArea/this.steps), - yHeight = this.yCenter - yCenterOffset, - pointPosition; - - // Draw circular lines around the scale - if (this.lineWidth > 0){ - ctx.strokeStyle = this.lineColor; - ctx.lineWidth = this.lineWidth; - - if(this.lineArc){ - ctx.beginPath(); - ctx.arc(this.xCenter, this.yCenter, yCenterOffset, 0, Math.PI*2); - ctx.closePath(); - ctx.stroke(); - } else{ - ctx.beginPath(); - for (var i=0;i<this.valuesCount;i++) - { - pointPosition = this.getPointPosition(i, this.calculateCenterOffset(this.min + (index * this.stepValue))); - if (i === 0){ - ctx.moveTo(pointPosition.x, pointPosition.y); - } else { - ctx.lineTo(pointPosition.x, pointPosition.y); - } - } - ctx.closePath(); - ctx.stroke(); - } - } - if(this.showLabels){ - ctx.font = fontString(this.fontSize,this.fontStyle,this.fontFamily); - if (this.showLabelBackdrop){ - var labelWidth = ctx.measureText(label).width; - ctx.fillStyle = this.backdropColor; - ctx.fillRect( - this.xCenter - labelWidth/2 - this.backdropPaddingX, - yHeight - this.fontSize/2 - this.backdropPaddingY, - labelWidth + this.backdropPaddingX*2, - this.fontSize + this.backdropPaddingY*2 - ); - } - ctx.textAlign = 'center'; - ctx.textBaseline = "middle"; - ctx.fillStyle = this.fontColor; - ctx.fillText(label, this.xCenter, yHeight); - } - } - }, this); - - if (!this.lineArc){ - ctx.lineWidth = this.angleLineWidth; - ctx.strokeStyle = this.angleLineColor; - for (var i = this.valuesCount - 1; i >= 0; i--) { - if (this.angleLineWidth > 0){ - var outerPosition = this.getPointPosition(i, this.calculateCenterOffset(this.max)); - ctx.beginPath(); - ctx.moveTo(this.xCenter, this.yCenter); - ctx.lineTo(outerPosition.x, outerPosition.y); - ctx.stroke(); - ctx.closePath(); - } - // Extra 3px out for some label spacing - var pointLabelPosition = this.getPointPosition(i, this.calculateCenterOffset(this.max) + 5); - ctx.font = fontString(this.pointLabelFontSize,this.pointLabelFontStyle,this.pointLabelFontFamily); - ctx.fillStyle = this.pointLabelFontColor; - - var labelsCount = this.labels.length, - halfLabelsCount = this.labels.length/2, - quarterLabelsCount = halfLabelsCount/2, - upperHalf = (i < quarterLabelsCount || i > labelsCount - quarterLabelsCount), - exactQuarter = (i === quarterLabelsCount || i === labelsCount - quarterLabelsCount); - if (i === 0){ - ctx.textAlign = 'center'; - } else if(i === halfLabelsCount){ - ctx.textAlign = 'center'; - } else if (i < halfLabelsCount){ - ctx.textAlign = 'left'; - } else { - ctx.textAlign = 'right'; - } - - // Set the correct text baseline based on outer positioning - if (exactQuarter){ - ctx.textBaseline = 'middle'; - } else if (upperHalf){ - ctx.textBaseline = 'bottom'; - } else { - ctx.textBaseline = 'top'; - } - - ctx.fillText(this.labels[i], pointLabelPosition.x, pointLabelPosition.y); - } - } - } - } - }); - - // Attach global event to resize each chart instance when the browser resizes - helpers.addEvent(window, "resize", (function(){ - // Basic debounce of resize function so it doesn't hurt performance when resizing browser. - var timeout; - return function(){ - clearTimeout(timeout); - timeout = setTimeout(function(){ - each(Chart.instances,function(instance){ - // If the responsive flag is set in the chart instance config - // Cascade the resize event down to the chart. - if (instance.options.responsive){ - instance.resize(instance.render, true); - } - }); - }, 50); - }; - })()); - - - if (amd) { - define(function(){ - return Chart; - }); - } else if (typeof module === 'object' && module.exports) { - module.exports = Chart; - } - - root.Chart = Chart; - - Chart.noConflict = function(){ - root.Chart = previous; - return Chart; - }; - -}).call(this); - -(function(){ - "use strict"; - - var root = this, - Chart = root.Chart, - helpers = Chart.helpers; - - - var defaultConfig = { - //Boolean - Whether the scale should start at zero, or an order of magnitude down from the lowest value - scaleBeginAtZero : true, - - //Boolean - Whether grid lines are shown across the chart - scaleShowGridLines : true, - - //String - Colour of the grid lines - scaleGridLineColor : "rgba(0,0,0,.05)", - - //Number - Width of the grid lines - scaleGridLineWidth : 1, - - //Boolean - Whether to show horizontal lines (except X axis) - scaleShowHorizontalLines: true, - - //Boolean - Whether to show vertical lines (except Y axis) - scaleShowVerticalLines: true, - - //Boolean - If there is a stroke on each bar - barShowStroke : true, - - //Number - Pixel width of the bar stroke - barStrokeWidth : 2, - - //Number - Spacing between each of the X value sets - barValueSpacing : 5, - - //Number - Spacing between data sets within X values - barDatasetSpacing : 1, - - //String - A legend template - legendTemplate : "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<datasets.length; i++){%><li><span style=\"background-color:<%=datasets[i].fillColor%>\"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>" - - }; - - - Chart.Type.extend({ - name: "Bar", - defaults : defaultConfig, - initialize: function(data){ - - //Expose options as a scope variable here so we can access it in the ScaleClass - var options = this.options; - - this.ScaleClass = Chart.Scale.extend({ - offsetGridLines : true, - calculateBarX : function(datasetCount, datasetIndex, barIndex){ - //Reusable method for calculating the xPosition of a given bar based on datasetIndex & width of the bar - var xWidth = this.calculateBaseWidth(), - xAbsolute = this.calculateX(barIndex) - (xWidth/2), - barWidth = this.calculateBarWidth(datasetCount); - - return xAbsolute + (barWidth * datasetIndex) + (datasetIndex * options.barDatasetSpacing) + barWidth/2; - }, - calculateBaseWidth : function(){ - return (this.calculateX(1) - this.calculateX(0)) - (2*options.barValueSpacing); - }, - calculateBarWidth : function(datasetCount){ - //The padding between datasets is to the right of each bar, providing that there are more than 1 dataset - var baseWidth = this.calculateBaseWidth() - ((datasetCount - 1) * options.barDatasetSpacing); - - return (baseWidth / datasetCount); - } - }); - - this.datasets = []; - - //Set up tooltip events on the chart - if (this.options.showTooltips){ - helpers.bindEvents(this, this.options.tooltipEvents, function(evt){ - var activeBars = (evt.type !== 'mouseout') ? this.getBarsAtEvent(evt) : []; - - this.eachBars(function(bar){ - bar.restore(['fillColor', 'strokeColor']); - }); - helpers.each(activeBars, function(activeBar){ - activeBar.fillColor = activeBar.highlightFill; - activeBar.strokeColor = activeBar.highlightStroke; - }); - this.showTooltip(activeBars); - }); - } - - //Declare the extension of the default point, to cater for the options passed in to the constructor - this.BarClass = Chart.Rectangle.extend({ - strokeWidth : this.options.barStrokeWidth, - showStroke : this.options.barShowStroke, - ctx : this.chart.ctx - }); - - //Iterate through each of the datasets, and build this into a property of the chart - helpers.each(data.datasets,function(dataset,datasetIndex){ - - var datasetObject = { - label : dataset.label || null, - fillColor : dataset.fillColor, - strokeColor : dataset.strokeColor, - bars : [] - }; - - this.datasets.push(datasetObject); - - helpers.each(dataset.data,function(dataPoint,index){ - //Add a new point for each piece of data, passing any required data to draw. - datasetObject.bars.push(new this.BarClass({ - value : dataPoint, - label : data.labels[index], - datasetLabel: dataset.label, - strokeColor : dataset.strokeColor, - fillColor : dataset.fillColor, - highlightFill : dataset.highlightFill || dataset.fillColor, - highlightStroke : dataset.highlightStroke || dataset.strokeColor - })); - },this); - - },this); - - this.buildScale(data.labels); - - this.BarClass.prototype.base = this.scale.endPoint; - - this.eachBars(function(bar, index, datasetIndex){ - helpers.extend(bar, { - width : this.scale.calculateBarWidth(this.datasets.length), - x: this.scale.calculateBarX(this.datasets.length, datasetIndex, index), - y: this.scale.endPoint - }); - bar.save(); - }, this); - - this.render(); - }, - update : function(){ - this.scale.update(); - // Reset any highlight colours before updating. - helpers.each(this.activeElements, function(activeElement){ - activeElement.restore(['fillColor', 'strokeColor']); - }); - - this.eachBars(function(bar){ - bar.save(); - }); - this.render(); - }, - eachBars : function(callback){ - helpers.each(this.datasets,function(dataset, datasetIndex){ - helpers.each(dataset.bars, callback, this, datasetIndex); - },this); - }, - getBarsAtEvent : function(e){ - var barsArray = [], - eventPosition = helpers.getRelativePosition(e), - datasetIterator = function(dataset){ - barsArray.push(dataset.bars[barIndex]); - }, - barIndex; - - for (var datasetIndex = 0; datasetIndex < this.datasets.length; datasetIndex++) { - for (barIndex = 0; barIndex < this.datasets[datasetIndex].bars.length; barIndex++) { - if (this.datasets[datasetIndex].bars[barIndex].inRange(eventPosition.x,eventPosition.y)){ - helpers.each(this.datasets, datasetIterator); - return barsArray; - } - } - } - - return barsArray; - }, - buildScale : function(labels){ - var self = this; - - var dataTotal = function(){ - var values = []; - self.eachBars(function(bar){ - values.push(bar.value); - }); - return values; - }; - - var scaleOptions = { - templateString : this.options.scaleLabel, - height : this.chart.height, - width : this.chart.width, - ctx : this.chart.ctx, - textColor : this.options.scaleFontColor, - fontSize : this.options.scaleFontSize, - fontStyle : this.options.scaleFontStyle, - fontFamily : this.options.scaleFontFamily, - valuesCount : labels.length, - beginAtZero : this.options.scaleBeginAtZero, - integersOnly : this.options.scaleIntegersOnly, - calculateYRange: function(currentHeight){ - var updatedRanges = helpers.calculateScaleRange( - dataTotal(), - currentHeight, - this.fontSize, - this.beginAtZero, - this.integersOnly - ); - helpers.extend(this, updatedRanges); - }, - xLabels : labels, - font : helpers.fontString(this.options.scaleFontSize, this.options.scaleFontStyle, this.options.scaleFontFamily), - lineWidth : this.options.scaleLineWidth, - lineColor : this.options.scaleLineColor, - showHorizontalLines : this.options.scaleShowHorizontalLines, - showVerticalLines : this.options.scaleShowVerticalLines, - gridLineWidth : (this.options.scaleShowGridLines) ? this.options.scaleGridLineWidth : 0, - gridLineColor : (this.options.scaleShowGridLines) ? this.options.scaleGridLineColor : "rgba(0,0,0,0)", - padding : (this.options.showScale) ? 0 : (this.options.barShowStroke) ? this.options.barStrokeWidth : 0, - showLabels : this.options.scaleShowLabels, - display : this.options.showScale - }; - - if (this.options.scaleOverride){ - helpers.extend(scaleOptions, { - calculateYRange: helpers.noop, - steps: this.options.scaleSteps, - stepValue: this.options.scaleStepWidth, - min: this.options.scaleStartValue, - max: this.options.scaleStartValue + (this.options.scaleSteps * this.options.scaleStepWidth) - }); - } - - this.scale = new this.ScaleClass(scaleOptions); - }, - addData : function(valuesArray,label){ - //Map the values array for each of the datasets - helpers.each(valuesArray,function(value,datasetIndex){ - //Add a new point for each piece of data, passing any required data to draw. - this.datasets[datasetIndex].bars.push(new this.BarClass({ - value : value, - label : label, - x: this.scale.calculateBarX(this.datasets.length, datasetIndex, this.scale.valuesCount+1), - y: this.scale.endPoint, - width : this.scale.calculateBarWidth(this.datasets.length), - base : this.scale.endPoint, - strokeColor : this.datasets[datasetIndex].strokeColor, - fillColor : this.datasets[datasetIndex].fillColor - })); - },this); - - this.scale.addXLabel(label); - //Then re-render the chart. - this.update(); - }, - removeData : function(){ - this.scale.removeXLabel(); - //Then re-render the chart. - helpers.each(this.datasets,function(dataset){ - dataset.bars.shift(); - },this); - this.update(); - }, - reflow : function(){ - helpers.extend(this.BarClass.prototype,{ - y: this.scale.endPoint, - base : this.scale.endPoint - }); - var newScaleProps = helpers.extend({ - height : this.chart.height, - width : this.chart.width - }); - this.scale.update(newScaleProps); - }, - draw : function(ease){ - var easingDecimal = ease || 1; - this.clear(); - - var ctx = this.chart.ctx; - - this.scale.draw(easingDecimal); - - //Draw all the bars for each dataset - helpers.each(this.datasets,function(dataset,datasetIndex){ - helpers.each(dataset.bars,function(bar,index){ - if (bar.hasValue()){ - bar.base = this.scale.endPoint; - //Transition then draw - bar.transition({ - x : this.scale.calculateBarX(this.datasets.length, datasetIndex, index), - y : this.scale.calculateY(bar.value), - width : this.scale.calculateBarWidth(this.datasets.length) - }, easingDecimal).draw(); - } - },this); - - },this); - } - }); - - -}).call(this); - -(function(){ - "use strict"; - - var root = this, - Chart = root.Chart, - //Cache a local reference to Chart.helpers - helpers = Chart.helpers; - - var defaultConfig = { - //Boolean - Whether we should show a stroke on each segment - segmentShowStroke : true, - - //String - The colour of each segment stroke - segmentStrokeColor : "#fff", - - //Number - The width of each segment stroke - segmentStrokeWidth : 2, - - //The percentage of the chart that we cut out of the middle. - percentageInnerCutout : 50, - - //Number - Amount of animation steps - animationSteps : 100, - - //String - Animation easing effect - animationEasing : "easeOutBounce", - - //Boolean - Whether we animate the rotation of the Doughnut - animateRotate : true, - - //Boolean - Whether we animate scaling the Doughnut from the centre - animateScale : false, - - //String - A legend template - legendTemplate : "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<segments.length; i++){%><li><span style=\"background-color:<%=segments[i].fillColor%>\"></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>" - - }; - - - Chart.Type.extend({ - //Passing in a name registers this chart in the Chart namespace - name: "Doughnut", - //Providing a defaults will also register the deafults in the chart namespace - defaults : defaultConfig, - //Initialize is fired when the chart is initialized - Data is passed in as a parameter - //Config is automatically merged by the core of Chart.js, and is available at this.options - initialize: function(data){ - - //Declare segments as a static property to prevent inheriting across the Chart type prototype - this.segments = []; - this.outerRadius = (helpers.min([this.chart.width,this.chart.height]) - this.options.segmentStrokeWidth/2)/2; - - this.SegmentArc = Chart.Arc.extend({ - ctx : this.chart.ctx, - x : this.chart.width/2, - y : this.chart.height/2 - }); - - //Set up tooltip events on the chart - if (this.options.showTooltips){ - helpers.bindEvents(this, this.options.tooltipEvents, function(evt){ - var activeSegments = (evt.type !== 'mouseout') ? this.getSegmentsAtEvent(evt) : []; - - helpers.each(this.segments,function(segment){ - segment.restore(["fillColor"]); - }); - helpers.each(activeSegments,function(activeSegment){ - activeSegment.fillColor = activeSegment.highlightColor; - }); - this.showTooltip(activeSegments); - }); - } - this.calculateTotal(data); - - helpers.each(data,function(datapoint, index){ - this.addData(datapoint, index, true); - },this); - - this.render(); - }, - getSegmentsAtEvent : function(e){ - var segmentsArray = []; - - var location = helpers.getRelativePosition(e); - - helpers.each(this.segments,function(segment){ - if (segment.inRange(location.x,location.y)) segmentsArray.push(segment); - },this); - return segmentsArray; - }, - addData : function(segment, atIndex, silent){ - var index = atIndex || this.segments.length; - this.segments.splice(index, 0, new this.SegmentArc({ - value : segment.value, - outerRadius : (this.options.animateScale) ? 0 : this.outerRadius, - innerRadius : (this.options.animateScale) ? 0 : (this.outerRadius/100) * this.options.percentageInnerCutout, - fillColor : segment.color, - highlightColor : segment.highlight || segment.color, - showStroke : this.options.segmentShowStroke, - strokeWidth : this.options.segmentStrokeWidth, - strokeColor : this.options.segmentStrokeColor, - startAngle : Math.PI * 1.5, - circumference : (this.options.animateRotate) ? 0 : this.calculateCircumference(segment.value), - label : segment.label - })); - if (!silent){ - this.reflow(); - this.update(); - } - }, - calculateCircumference : function(value){ - return (Math.PI*2)*(value / this.total); - }, - calculateTotal : function(data){ - this.total = 0; - helpers.each(data,function(segment){ - this.total += segment.value; - },this); - }, - update : function(){ - this.calculateTotal(this.segments); - - // Reset any highlight colours before updating. - helpers.each(this.activeElements, function(activeElement){ - activeElement.restore(['fillColor']); - }); - - helpers.each(this.segments,function(segment){ - segment.save(); - }); - this.render(); - }, - - removeData: function(atIndex){ - var indexToDelete = (helpers.isNumber(atIndex)) ? atIndex : this.segments.length-1; - this.segments.splice(indexToDelete, 1); - this.reflow(); - this.update(); - }, - - reflow : function(){ - helpers.extend(this.SegmentArc.prototype,{ - x : this.chart.width/2, - y : this.chart.height/2 - }); - this.outerRadius = (helpers.min([this.chart.width,this.chart.height]) - this.options.segmentStrokeWidth/2)/2; - helpers.each(this.segments, function(segment){ - segment.update({ - outerRadius : this.outerRadius, - innerRadius : (this.outerRadius/100) * this.options.percentageInnerCutout - }); - }, this); - }, - draw : function(easeDecimal){ - var animDecimal = (easeDecimal) ? easeDecimal : 1; - this.clear(); - helpers.each(this.segments,function(segment,index){ - segment.transition({ - circumference : this.calculateCircumference(segment.value), - outerRadius : this.outerRadius, - innerRadius : (this.outerRadius/100) * this.options.percentageInnerCutout - },animDecimal); - - segment.endAngle = segment.startAngle + segment.circumference; - - segment.draw(); - if (index === 0){ - segment.startAngle = Math.PI * 1.5; - } - //Check to see if it's the last segment, if not get the next and update the start angle - if (index < this.segments.length-1){ - this.segments[index+1].startAngle = segment.endAngle; - } - },this); - - } - }); - - Chart.types.Doughnut.extend({ - name : "Pie", - defaults : helpers.merge(defaultConfig,{percentageInnerCutout : 0}) - }); - -}).call(this); -(function(){ - "use strict"; - - var root = this, - Chart = root.Chart, - helpers = Chart.helpers; - - var defaultConfig = { - - ///Boolean - Whether grid lines are shown across the chart - scaleShowGridLines : true, - - //String - Colour of the grid lines - scaleGridLineColor : "rgba(0,0,0,.05)", - - //Number - Width of the grid lines - scaleGridLineWidth : 1, - - //Boolean - Whether to show horizontal lines (except X axis) - scaleShowHorizontalLines: true, - - //Boolean - Whether to show vertical lines (except Y axis) - scaleShowVerticalLines: true, - - //Boolean - Whether the line is curved between points - bezierCurve : true, - - //Number - Tension of the bezier curve between points - bezierCurveTension : 0.4, - - //Boolean - Whether to show a dot for each point - pointDot : true, - - //Number - Radius of each point dot in pixels - pointDotRadius : 4, - - //Number - Pixel width of point dot stroke - pointDotStrokeWidth : 1, - - //Number - amount extra to add to the radius to cater for hit detection outside the drawn point - pointHitDetectionRadius : 20, - - //Boolean - Whether to show a stroke for datasets - datasetStroke : true, - - //Number - Pixel width of dataset stroke - datasetStrokeWidth : 2, - - //Boolean - Whether to fill the dataset with a colour - datasetFill : true, - - //String - A legend template - legendTemplate : "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<datasets.length; i++){%><li><span style=\"background-color:<%=datasets[i].strokeColor%>\"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>" - - }; - - - Chart.Type.extend({ - name: "Line", - defaults : defaultConfig, - initialize: function(data){ - //Declare the extension of the default point, to cater for the options passed in to the constructor - this.PointClass = Chart.Point.extend({ - strokeWidth : this.options.pointDotStrokeWidth, - radius : this.options.pointDotRadius, - display: this.options.pointDot, - hitDetectionRadius : this.options.pointHitDetectionRadius, - ctx : this.chart.ctx, - inRange : function(mouseX){ - return (Math.pow(mouseX-this.x, 2) < Math.pow(this.radius + this.hitDetectionRadius,2)); - } - }); - - this.datasets = []; - - //Set up tooltip events on the chart - if (this.options.showTooltips){ - helpers.bindEvents(this, this.options.tooltipEvents, function(evt){ - var activePoints = (evt.type !== 'mouseout') ? this.getPointsAtEvent(evt) : []; - this.eachPoints(function(point){ - point.restore(['fillColor', 'strokeColor']); - }); - helpers.each(activePoints, function(activePoint){ - activePoint.fillColor = activePoint.highlightFill; - activePoint.strokeColor = activePoint.highlightStroke; - }); - this.showTooltip(activePoints); - }); - } - - //Iterate through each of the datasets, and build this into a property of the chart - helpers.each(data.datasets,function(dataset){ - - var datasetObject = { - label : dataset.label || null, - fillColor : dataset.fillColor, - strokeColor : dataset.strokeColor, - pointColor : dataset.pointColor, - pointStrokeColor : dataset.pointStrokeColor, - points : [] - }; - - this.datasets.push(datasetObject); - - - helpers.each(dataset.data,function(dataPoint,index){ - //Add a new point for each piece of data, passing any required data to draw. - datasetObject.points.push(new this.PointClass({ - value : dataPoint, - label : data.labels[index], - datasetLabel: dataset.label, - strokeColor : dataset.pointStrokeColor, - fillColor : dataset.pointColor, - highlightFill : dataset.pointHighlightFill || dataset.pointColor, - highlightStroke : dataset.pointHighlightStroke || dataset.pointStrokeColor - })); - },this); - - this.buildScale(data.labels); - - - this.eachPoints(function(point, index){ - helpers.extend(point, { - x: this.scale.calculateX(index), - y: this.scale.endPoint - }); - point.save(); - }, this); - - },this); - - - this.render(); - }, - update : function(){ - this.scale.update(); - // Reset any highlight colours before updating. - helpers.each(this.activeElements, function(activeElement){ - activeElement.restore(['fillColor', 'strokeColor']); - }); - this.eachPoints(function(point){ - point.save(); - }); - this.render(); - }, - eachPoints : function(callback){ - helpers.each(this.datasets,function(dataset){ - helpers.each(dataset.points,callback,this); - },this); - }, - getPointsAtEvent : function(e){ - var pointsArray = [], - eventPosition = helpers.getRelativePosition(e); - helpers.each(this.datasets,function(dataset){ - helpers.each(dataset.points,function(point){ - if (point.inRange(eventPosition.x,eventPosition.y)) pointsArray.push(point); - }); - },this); - return pointsArray; - }, - buildScale : function(labels){ - var self = this; - - var dataTotal = function(){ - var values = []; - self.eachPoints(function(point){ - values.push(point.value); - }); - - return values; - }; - - var scaleOptions = { - templateString : this.options.scaleLabel, - height : this.chart.height, - width : this.chart.width, - ctx : this.chart.ctx, - textColor : this.options.scaleFontColor, - fontSize : this.options.scaleFontSize, - fontStyle : this.options.scaleFontStyle, - fontFamily : this.options.scaleFontFamily, - valuesCount : labels.length, - beginAtZero : this.options.scaleBeginAtZero, - integersOnly : this.options.scaleIntegersOnly, - calculateYRange : function(currentHeight){ - var updatedRanges = helpers.calculateScaleRange( - dataTotal(), - currentHeight, - this.fontSize, - this.beginAtZero, - this.integersOnly - ); - helpers.extend(this, updatedRanges); - }, - xLabels : labels, - font : helpers.fontString(this.options.scaleFontSize, this.options.scaleFontStyle, this.options.scaleFontFamily), - lineWidth : this.options.scaleLineWidth, - lineColor : this.options.scaleLineColor, - showHorizontalLines : this.options.scaleShowHorizontalLines, - showVerticalLines : this.options.scaleShowVerticalLines, - gridLineWidth : (this.options.scaleShowGridLines) ? this.options.scaleGridLineWidth : 0, - gridLineColor : (this.options.scaleShowGridLines) ? this.options.scaleGridLineColor : "rgba(0,0,0,0)", - padding: (this.options.showScale) ? 0 : this.options.pointDotRadius + this.options.pointDotStrokeWidth, - showLabels : this.options.scaleShowLabels, - display : this.options.showScale - }; - - if (this.options.scaleOverride){ - helpers.extend(scaleOptions, { - calculateYRange: helpers.noop, - steps: this.options.scaleSteps, - stepValue: this.options.scaleStepWidth, - min: this.options.scaleStartValue, - max: this.options.scaleStartValue + (this.options.scaleSteps * this.options.scaleStepWidth) - }); - } - - - this.scale = new Chart.Scale(scaleOptions); - }, - addData : function(valuesArray,label){ - //Map the values array for each of the datasets - - helpers.each(valuesArray,function(value,datasetIndex){ - //Add a new point for each piece of data, passing any required data to draw. - this.datasets[datasetIndex].points.push(new this.PointClass({ - value : value, - label : label, - x: this.scale.calculateX(this.scale.valuesCount+1), - y: this.scale.endPoint, - strokeColor : this.datasets[datasetIndex].pointStrokeColor, - fillColor : this.datasets[datasetIndex].pointColor - })); - },this); - - this.scale.addXLabel(label); - //Then re-render the chart. - this.update(); - }, - removeData : function(){ - this.scale.removeXLabel(); - //Then re-render the chart. - helpers.each(this.datasets,function(dataset){ - dataset.points.shift(); - },this); - this.update(); - }, - reflow : function(){ - var newScaleProps = helpers.extend({ - height : this.chart.height, - width : this.chart.width - }); - this.scale.update(newScaleProps); - }, - draw : function(ease){ - var easingDecimal = ease || 1; - this.clear(); - - var ctx = this.chart.ctx; - - // Some helper methods for getting the next/prev points - var hasValue = function(item){ - return item.value !== null; - }, - nextPoint = function(point, collection, index){ - return helpers.findNextWhere(collection, hasValue, index) || point; - }, - previousPoint = function(point, collection, index){ - return helpers.findPreviousWhere(collection, hasValue, index) || point; - }; - - this.scale.draw(easingDecimal); - - - helpers.each(this.datasets,function(dataset){ - var pointsWithValues = helpers.where(dataset.points, hasValue); - - //Transition each point first so that the line and point drawing isn't out of sync - //We can use this extra loop to calculate the control points of this dataset also in this loop - - helpers.each(dataset.points, function(point, index){ - if (point.hasValue()){ - point.transition({ - y : this.scale.calculateY(point.value), - x : this.scale.calculateX(index) - }, easingDecimal); - } - },this); - - - // Control points need to be calculated in a seperate loop, because we need to know the current x/y of the point - // This would cause issues when there is no animation, because the y of the next point would be 0, so beziers would be skewed - if (this.options.bezierCurve){ - helpers.each(pointsWithValues, function(point, index){ - var tension = (index > 0 && index < pointsWithValues.length - 1) ? this.options.bezierCurveTension : 0; - point.controlPoints = helpers.splineCurve( - previousPoint(point, pointsWithValues, index), - point, - nextPoint(point, pointsWithValues, index), - tension - ); - - // Prevent the bezier going outside of the bounds of the graph - - // Cap puter bezier handles to the upper/lower scale bounds - if (point.controlPoints.outer.y > this.scale.endPoint){ - point.controlPoints.outer.y = this.scale.endPoint; - } - else if (point.controlPoints.outer.y < this.scale.startPoint){ - point.controlPoints.outer.y = this.scale.startPoint; - } - - // Cap inner bezier handles to the upper/lower scale bounds - if (point.controlPoints.inner.y > this.scale.endPoint){ - point.controlPoints.inner.y = this.scale.endPoint; - } - else if (point.controlPoints.inner.y < this.scale.startPoint){ - point.controlPoints.inner.y = this.scale.startPoint; - } - },this); - } - - - //Draw the line between all the points - ctx.lineWidth = this.options.datasetStrokeWidth; - ctx.strokeStyle = dataset.strokeColor; - ctx.beginPath(); - - helpers.each(pointsWithValues, function(point, index){ - if (index === 0){ - ctx.moveTo(point.x, point.y); - } - else{ - if(this.options.bezierCurve){ - var previous = previousPoint(point, pointsWithValues, index); - - ctx.bezierCurveTo( - previous.controlPoints.outer.x, - previous.controlPoints.outer.y, - point.controlPoints.inner.x, - point.controlPoints.inner.y, - point.x, - point.y - ); - } - else{ - ctx.lineTo(point.x,point.y); - } - } - }, this); - - ctx.stroke(); - - if (this.options.datasetFill && pointsWithValues.length > 0){ - //Round off the line by going to the base of the chart, back to the start, then fill. - ctx.lineTo(pointsWithValues[pointsWithValues.length - 1].x, this.scale.endPoint); - ctx.lineTo(pointsWithValues[0].x, this.scale.endPoint); - ctx.fillStyle = dataset.fillColor; - ctx.closePath(); - ctx.fill(); - } - - //Now draw the points over the line - //A little inefficient double looping, but better than the line - //lagging behind the point positions - helpers.each(pointsWithValues,function(point){ - point.draw(); - }); - },this); - } - }); - - -}).call(this); - -(function(){ - "use strict"; - - var root = this, - Chart = root.Chart, - //Cache a local reference to Chart.helpers - helpers = Chart.helpers; - - var defaultConfig = { - //Boolean - Show a backdrop to the scale label - scaleShowLabelBackdrop : true, - - //String - The colour of the label backdrop - scaleBackdropColor : "rgba(255,255,255,0.75)", - - // Boolean - Whether the scale should begin at zero - scaleBeginAtZero : true, - - //Number - The backdrop padding above & below the label in pixels - scaleBackdropPaddingY : 2, - - //Number - The backdrop padding to the side of the label in pixels - scaleBackdropPaddingX : 2, - - //Boolean - Show line for each value in the scale - scaleShowLine : true, - - //Boolean - Stroke a line around each segment in the chart - segmentShowStroke : true, - - //String - The colour of the stroke on each segement. - segmentStrokeColor : "#fff", - - //Number - The width of the stroke value in pixels - segmentStrokeWidth : 2, - - //Number - Amount of animation steps - animationSteps : 100, - - //String - Animation easing effect. - animationEasing : "easeOutBounce", - - //Boolean - Whether to animate the rotation of the chart - animateRotate : true, - - //Boolean - Whether to animate scaling the chart from the centre - animateScale : false, - - //String - A legend template - legendTemplate : "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<segments.length; i++){%><li><span style=\"background-color:<%=segments[i].fillColor%>\"></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>" - }; - - - Chart.Type.extend({ - //Passing in a name registers this chart in the Chart namespace - name: "PolarArea", - //Providing a defaults will also register the deafults in the chart namespace - defaults : defaultConfig, - //Initialize is fired when the chart is initialized - Data is passed in as a parameter - //Config is automatically merged by the core of Chart.js, and is available at this.options - initialize: function(data){ - this.segments = []; - //Declare segment class as a chart instance specific class, so it can share props for this instance - this.SegmentArc = Chart.Arc.extend({ - showStroke : this.options.segmentShowStroke, - strokeWidth : this.options.segmentStrokeWidth, - strokeColor : this.options.segmentStrokeColor, - ctx : this.chart.ctx, - innerRadius : 0, - x : this.chart.width/2, - y : this.chart.height/2 - }); - this.scale = new Chart.RadialScale({ - display: this.options.showScale, - fontStyle: this.options.scaleFontStyle, - fontSize: this.options.scaleFontSize, - fontFamily: this.options.scaleFontFamily, - fontColor: this.options.scaleFontColor, - showLabels: this.options.scaleShowLabels, - showLabelBackdrop: this.options.scaleShowLabelBackdrop, - backdropColor: this.options.scaleBackdropColor, - backdropPaddingY : this.options.scaleBackdropPaddingY, - backdropPaddingX: this.options.scaleBackdropPaddingX, - lineWidth: (this.options.scaleShowLine) ? this.options.scaleLineWidth : 0, - lineColor: this.options.scaleLineColor, - lineArc: true, - width: this.chart.width, - height: this.chart.height, - xCenter: this.chart.width/2, - yCenter: this.chart.height/2, - ctx : this.chart.ctx, - templateString: this.options.scaleLabel, - valuesCount: data.length - }); - - this.updateScaleRange(data); - - this.scale.update(); - - helpers.each(data,function(segment,index){ - this.addData(segment,index,true); - },this); - - //Set up tooltip events on the chart - if (this.options.showTooltips){ - helpers.bindEvents(this, this.options.tooltipEvents, function(evt){ - var activeSegments = (evt.type !== 'mouseout') ? this.getSegmentsAtEvent(evt) : []; - helpers.each(this.segments,function(segment){ - segment.restore(["fillColor"]); - }); - helpers.each(activeSegments,function(activeSegment){ - activeSegment.fillColor = activeSegment.highlightColor; - }); - this.showTooltip(activeSegments); - }); - } - - this.render(); - }, - getSegmentsAtEvent : function(e){ - var segmentsArray = []; - - var location = helpers.getRelativePosition(e); - - helpers.each(this.segments,function(segment){ - if (segment.inRange(location.x,location.y)) segmentsArray.push(segment); - },this); - return segmentsArray; - }, - addData : function(segment, atIndex, silent){ - var index = atIndex || this.segments.length; - - this.segments.splice(index, 0, new this.SegmentArc({ - fillColor: segment.color, - highlightColor: segment.highlight || segment.color, - label: segment.label, - value: segment.value, - outerRadius: (this.options.animateScale) ? 0 : this.scale.calculateCenterOffset(segment.value), - circumference: (this.options.animateRotate) ? 0 : this.scale.getCircumference(), - startAngle: Math.PI * 1.5 - })); - if (!silent){ - this.reflow(); - this.update(); - } - }, - removeData: function(atIndex){ - var indexToDelete = (helpers.isNumber(atIndex)) ? atIndex : this.segments.length-1; - this.segments.splice(indexToDelete, 1); - this.reflow(); - this.update(); - }, - calculateTotal: function(data){ - this.total = 0; - helpers.each(data,function(segment){ - this.total += segment.value; - },this); - this.scale.valuesCount = this.segments.length; - }, - updateScaleRange: function(datapoints){ - var valuesArray = []; - helpers.each(datapoints,function(segment){ - valuesArray.push(segment.value); - }); - - var scaleSizes = (this.options.scaleOverride) ? - { - steps: this.options.scaleSteps, - stepValue: this.options.scaleStepWidth, - min: this.options.scaleStartValue, - max: this.options.scaleStartValue + (this.options.scaleSteps * this.options.scaleStepWidth) - } : - helpers.calculateScaleRange( - valuesArray, - helpers.min([this.chart.width, this.chart.height])/2, - this.options.scaleFontSize, - this.options.scaleBeginAtZero, - this.options.scaleIntegersOnly - ); - - helpers.extend( - this.scale, - scaleSizes, - { - size: helpers.min([this.chart.width, this.chart.height]), - xCenter: this.chart.width/2, - yCenter: this.chart.height/2 - } - ); - - }, - update : function(){ - this.calculateTotal(this.segments); - - helpers.each(this.segments,function(segment){ - segment.save(); - }); - this.render(); - }, - reflow : function(){ - helpers.extend(this.SegmentArc.prototype,{ - x : this.chart.width/2, - y : this.chart.height/2 - }); - this.updateScaleRange(this.segments); - this.scale.update(); - - helpers.extend(this.scale,{ - xCenter: this.chart.width/2, - yCenter: this.chart.height/2 - }); - - helpers.each(this.segments, function(segment){ - segment.update({ - outerRadius : this.scale.calculateCenterOffset(segment.value) - }); - }, this); - - }, - draw : function(ease){ - var easingDecimal = ease || 1; - //Clear & draw the canvas - this.clear(); - helpers.each(this.segments,function(segment, index){ - segment.transition({ - circumference : this.scale.getCircumference(), - outerRadius : this.scale.calculateCenterOffset(segment.value) - },easingDecimal); - - segment.endAngle = segment.startAngle + segment.circumference; - - // If we've removed the first segment we need to set the first one to - // start at the top. - if (index === 0){ - segment.startAngle = Math.PI * 1.5; - } - - //Check to see if it's the last segment, if not get the next and update the start angle - if (index < this.segments.length - 1){ - this.segments[index+1].startAngle = segment.endAngle; - } - segment.draw(); - }, this); - this.scale.draw(); - } - }); - -}).call(this); -(function(){ - "use strict"; - - var root = this, - Chart = root.Chart, - helpers = Chart.helpers; - - - - Chart.Type.extend({ - name: "Radar", - defaults:{ - //Boolean - Whether to show lines for each scale point - scaleShowLine : true, - - //Boolean - Whether we show the angle lines out of the radar - angleShowLineOut : true, - - //Boolean - Whether to show labels on the scale - scaleShowLabels : false, - - // Boolean - Whether the scale should begin at zero - scaleBeginAtZero : true, - - //String - Colour of the angle line - angleLineColor : "rgba(0,0,0,.1)", - - //Number - Pixel width of the angle line - angleLineWidth : 1, - - //String - Point label font declaration - pointLabelFontFamily : "'Arial'", - - //String - Point label font weight - pointLabelFontStyle : "normal", - - //Number - Point label font size in pixels - pointLabelFontSize : 10, - - //String - Point label font colour - pointLabelFontColor : "#666", - - //Boolean - Whether to show a dot for each point - pointDot : true, - - //Number - Radius of each point dot in pixels - pointDotRadius : 3, - - //Number - Pixel width of point dot stroke - pointDotStrokeWidth : 1, - - //Number - amount extra to add to the radius to cater for hit detection outside the drawn point - pointHitDetectionRadius : 20, - - //Boolean - Whether to show a stroke for datasets - datasetStroke : true, - - //Number - Pixel width of dataset stroke - datasetStrokeWidth : 2, - - //Boolean - Whether to fill the dataset with a colour - datasetFill : true, - - //String - A legend template - legendTemplate : "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<datasets.length; i++){%><li><span style=\"background-color:<%=datasets[i].strokeColor%>\"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>" - - }, - - initialize: function(data){ - this.PointClass = Chart.Point.extend({ - strokeWidth : this.options.pointDotStrokeWidth, - radius : this.options.pointDotRadius, - display: this.options.pointDot, - hitDetectionRadius : this.options.pointHitDetectionRadius, - ctx : this.chart.ctx - }); - - this.datasets = []; - - this.buildScale(data); - - //Set up tooltip events on the chart - if (this.options.showTooltips){ - helpers.bindEvents(this, this.options.tooltipEvents, function(evt){ - var activePointsCollection = (evt.type !== 'mouseout') ? this.getPointsAtEvent(evt) : []; - - this.eachPoints(function(point){ - point.restore(['fillColor', 'strokeColor']); - }); - helpers.each(activePointsCollection, function(activePoint){ - activePoint.fillColor = activePoint.highlightFill; - activePoint.strokeColor = activePoint.highlightStroke; - }); - - this.showTooltip(activePointsCollection); - }); - } - - //Iterate through each of the datasets, and build this into a property of the chart - helpers.each(data.datasets,function(dataset){ - - var datasetObject = { - label: dataset.label || null, - fillColor : dataset.fillColor, - strokeColor : dataset.strokeColor, - pointColor : dataset.pointColor, - pointStrokeColor : dataset.pointStrokeColor, - points : [] - }; - - this.datasets.push(datasetObject); - - helpers.each(dataset.data,function(dataPoint,index){ - //Add a new point for each piece of data, passing any required data to draw. - var pointPosition; - if (!this.scale.animation){ - pointPosition = this.scale.getPointPosition(index, this.scale.calculateCenterOffset(dataPoint)); - } - datasetObject.points.push(new this.PointClass({ - value : dataPoint, - label : data.labels[index], - datasetLabel: dataset.label, - x: (this.options.animation) ? this.scale.xCenter : pointPosition.x, - y: (this.options.animation) ? this.scale.yCenter : pointPosition.y, - strokeColor : dataset.pointStrokeColor, - fillColor : dataset.pointColor, - highlightFill : dataset.pointHighlightFill || dataset.pointColor, - highlightStroke : dataset.pointHighlightStroke || dataset.pointStrokeColor - })); - },this); - - },this); - - this.render(); - }, - eachPoints : function(callback){ - helpers.each(this.datasets,function(dataset){ - helpers.each(dataset.points,callback,this); - },this); - }, - - getPointsAtEvent : function(evt){ - var mousePosition = helpers.getRelativePosition(evt), - fromCenter = helpers.getAngleFromPoint({ - x: this.scale.xCenter, - y: this.scale.yCenter - }, mousePosition); - - var anglePerIndex = (Math.PI * 2) /this.scale.valuesCount, - pointIndex = Math.round((fromCenter.angle - Math.PI * 1.5) / anglePerIndex), - activePointsCollection = []; - - // If we're at the top, make the pointIndex 0 to get the first of the array. - if (pointIndex >= this.scale.valuesCount || pointIndex < 0){ - pointIndex = 0; - } - - if (fromCenter.distance <= this.scale.drawingArea){ - helpers.each(this.datasets, function(dataset){ - activePointsCollection.push(dataset.points[pointIndex]); - }); - } - - return activePointsCollection; - }, - - buildScale : function(data){ - this.scale = new Chart.RadialScale({ - display: this.options.showScale, - fontStyle: this.options.scaleFontStyle, - fontSize: this.options.scaleFontSize, - fontFamily: this.options.scaleFontFamily, - fontColor: this.options.scaleFontColor, - showLabels: this.options.scaleShowLabels, - showLabelBackdrop: this.options.scaleShowLabelBackdrop, - backdropColor: this.options.scaleBackdropColor, - backdropPaddingY : this.options.scaleBackdropPaddingY, - backdropPaddingX: this.options.scaleBackdropPaddingX, - lineWidth: (this.options.scaleShowLine) ? this.options.scaleLineWidth : 0, - lineColor: this.options.scaleLineColor, - angleLineColor : this.options.angleLineColor, - angleLineWidth : (this.options.angleShowLineOut) ? this.options.angleLineWidth : 0, - // Point labels at the edge of each line - pointLabelFontColor : this.options.pointLabelFontColor, - pointLabelFontSize : this.options.pointLabelFontSize, - pointLabelFontFamily : this.options.pointLabelFontFamily, - pointLabelFontStyle : this.options.pointLabelFontStyle, - height : this.chart.height, - width: this.chart.width, - xCenter: this.chart.width/2, - yCenter: this.chart.height/2, - ctx : this.chart.ctx, - templateString: this.options.scaleLabel, - labels: data.labels, - valuesCount: data.datasets[0].data.length - }); - - this.scale.setScaleSize(); - this.updateScaleRange(data.datasets); - this.scale.buildYLabels(); - }, - updateScaleRange: function(datasets){ - var valuesArray = (function(){ - var totalDataArray = []; - helpers.each(datasets,function(dataset){ - if (dataset.data){ - totalDataArray = totalDataArray.concat(dataset.data); - } - else { - helpers.each(dataset.points, function(point){ - totalDataArray.push(point.value); - }); - } - }); - return totalDataArray; - })(); - - - var scaleSizes = (this.options.scaleOverride) ? - { - steps: this.options.scaleSteps, - stepValue: this.options.scaleStepWidth, - min: this.options.scaleStartValue, - max: this.options.scaleStartValue + (this.options.scaleSteps * this.options.scaleStepWidth) - } : - helpers.calculateScaleRange( - valuesArray, - helpers.min([this.chart.width, this.chart.height])/2, - this.options.scaleFontSize, - this.options.scaleBeginAtZero, - this.options.scaleIntegersOnly - ); - - helpers.extend( - this.scale, - scaleSizes - ); - - }, - addData : function(valuesArray,label){ - //Map the values array for each of the datasets - this.scale.valuesCount++; - helpers.each(valuesArray,function(value,datasetIndex){ - var pointPosition = this.scale.getPointPosition(this.scale.valuesCount, this.scale.calculateCenterOffset(value)); - this.datasets[datasetIndex].points.push(new this.PointClass({ - value : value, - label : label, - x: pointPosition.x, - y: pointPosition.y, - strokeColor : this.datasets[datasetIndex].pointStrokeColor, - fillColor : this.datasets[datasetIndex].pointColor - })); - },this); - - this.scale.labels.push(label); - - this.reflow(); - - this.update(); - }, - removeData : function(){ - this.scale.valuesCount--; - this.scale.labels.shift(); - helpers.each(this.datasets,function(dataset){ - dataset.points.shift(); - },this); - this.reflow(); - this.update(); - }, - update : function(){ - this.eachPoints(function(point){ - point.save(); - }); - this.reflow(); - this.render(); - }, - reflow: function(){ - helpers.extend(this.scale, { - width : this.chart.width, - height: this.chart.height, - size : helpers.min([this.chart.width, this.chart.height]), - xCenter: this.chart.width/2, - yCenter: this.chart.height/2 - }); - this.updateScaleRange(this.datasets); - this.scale.setScaleSize(); - this.scale.buildYLabels(); - }, - draw : function(ease){ - var easeDecimal = ease || 1, - ctx = this.chart.ctx; - this.clear(); - this.scale.draw(); - - helpers.each(this.datasets,function(dataset){ - - //Transition each point first so that the line and point drawing isn't out of sync - helpers.each(dataset.points,function(point,index){ - if (point.hasValue()){ - point.transition(this.scale.getPointPosition(index, this.scale.calculateCenterOffset(point.value)), easeDecimal); - } - },this); - - - - //Draw the line between all the points - ctx.lineWidth = this.options.datasetStrokeWidth; - ctx.strokeStyle = dataset.strokeColor; - ctx.beginPath(); - helpers.each(dataset.points,function(point,index){ - if (index === 0){ - ctx.moveTo(point.x,point.y); - } - else{ - ctx.lineTo(point.x,point.y); - } - },this); - ctx.closePath(); - ctx.stroke(); - - ctx.fillStyle = dataset.fillColor; - ctx.fill(); - - //Now draw the points over the line - //A little inefficient double looping, but better than the line - //lagging behind the point positions - helpers.each(dataset.points,function(point){ - if (point.hasValue()){ - point.draw(); - } - }); - - },this); - - } - - }); - - - - - -}).call(this); \ No newline at end of file diff --git a/assets/plugins/chartjs/Chart.min.js b/assets/plugins/chartjs/Chart.min.js deleted file mode 100644 index 7dd4e43c..00000000 --- a/assets/plugins/chartjs/Chart.min.js +++ /dev/null @@ -1,11 +0,0 @@ -/*! - * Chart.js - * http://chartjs.org/ - * Version: 1.0.1 - * - * Copyright 2015 Nick Downie - * Released under the MIT license - * https://github.com/nnnick/Chart.js/blob/master/LICENSE.md - */ -(function(){"use strict";var t=this,i=t.Chart,e=function(t){this.canvas=t.canvas,this.ctx=t;this.width=t.canvas.width,this.height=t.canvas.height;return this.aspectRatio=this.width/this.height,s.retinaScale(this),this};e.defaults={global:{animation:!0,animationSteps:60,animationEasing:"easeOutQuart",showScale:!0,scaleOverride:!1,scaleSteps:null,scaleStepWidth:null,scaleStartValue:null,scaleLineColor:"rgba(0,0,0,.1)",scaleLineWidth:1,scaleShowLabels:!0,scaleLabel:"<%=value%>",scaleIntegersOnly:!0,scaleBeginAtZero:!1,scaleFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",scaleFontSize:12,scaleFontStyle:"normal",scaleFontColor:"#666",responsive:!1,maintainAspectRatio:!0,showTooltips:!0,customTooltips:!1,tooltipEvents:["mousemove","touchstart","touchmove","mouseout"],tooltipFillColor:"rgba(0,0,0,0.8)",tooltipFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",tooltipFontSize:14,tooltipFontStyle:"normal",tooltipFontColor:"#fff",tooltipTitleFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",tooltipTitleFontSize:14,tooltipTitleFontStyle:"bold",tooltipTitleFontColor:"#fff",tooltipYPadding:6,tooltipXPadding:6,tooltipCaretSize:8,tooltipCornerRadius:6,tooltipXOffset:10,tooltipTemplate:"<%if (label){%><%=label%>: <%}%><%= value %>",multiTooltipTemplate:"<%= value %>",multiTooltipKeyBackground:"#fff",onAnimationProgress:function(){},onAnimationComplete:function(){}}},e.types={};var s=e.helpers={},n=s.each=function(t,i,e){var s=Array.prototype.slice.call(arguments,3);if(t)if(t.length===+t.length){var n;for(n=0;n<t.length;n++)i.apply(e,[t[n],n].concat(s))}else for(var o in t)i.apply(e,[t[o],o].concat(s))},o=s.clone=function(t){var i={};return n(t,function(e,s){t.hasOwnProperty(s)&&(i[s]=e)}),i},a=s.extend=function(t){return n(Array.prototype.slice.call(arguments,1),function(i){n(i,function(e,s){i.hasOwnProperty(s)&&(t[s]=e)})}),t},h=s.merge=function(){var t=Array.prototype.slice.call(arguments,0);return t.unshift({}),a.apply(null,t)},l=s.indexOf=function(t,i){if(Array.prototype.indexOf)return t.indexOf(i);for(var e=0;e<t.length;e++)if(t[e]===i)return e;return-1},r=(s.where=function(t,i){var e=[];return s.each(t,function(t){i(t)&&e.push(t)}),e},s.findNextWhere=function(t,i,e){e||(e=-1);for(var s=e+1;s<t.length;s++){var n=t[s];if(i(n))return n}},s.findPreviousWhere=function(t,i,e){e||(e=t.length);for(var s=e-1;s>=0;s--){var n=t[s];if(i(n))return n}},s.inherits=function(t){var i=this,e=t&&t.hasOwnProperty("constructor")?t.constructor:function(){return i.apply(this,arguments)},s=function(){this.constructor=e};return s.prototype=i.prototype,e.prototype=new s,e.extend=r,t&&a(e.prototype,t),e.__super__=i.prototype,e}),c=s.noop=function(){},u=s.uid=function(){var t=0;return function(){return"chart-"+t++}}(),d=s.warn=function(t){window.console&&"function"==typeof window.console.warn&&console.warn(t)},p=s.amd="function"==typeof define&&define.amd,f=s.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},g=s.max=function(t){return Math.max.apply(Math,t)},m=s.min=function(t){return Math.min.apply(Math,t)},v=(s.cap=function(t,i,e){if(f(i)){if(t>i)return i}else if(f(e)&&e>t)return e;return t},s.getDecimalPlaces=function(t){return t%1!==0&&f(t)?t.toString().split(".")[1].length:0}),S=s.radians=function(t){return t*(Math.PI/180)},x=(s.getAngleFromPoint=function(t,i){var e=i.x-t.x,s=i.y-t.y,n=Math.sqrt(e*e+s*s),o=2*Math.PI+Math.atan2(s,e);return 0>e&&0>s&&(o+=2*Math.PI),{angle:o,distance:n}},s.aliasPixel=function(t){return t%2===0?0:.5}),y=(s.splineCurve=function(t,i,e,s){var n=Math.sqrt(Math.pow(i.x-t.x,2)+Math.pow(i.y-t.y,2)),o=Math.sqrt(Math.pow(e.x-i.x,2)+Math.pow(e.y-i.y,2)),a=s*n/(n+o),h=s*o/(n+o);return{inner:{x:i.x-a*(e.x-t.x),y:i.y-a*(e.y-t.y)},outer:{x:i.x+h*(e.x-t.x),y:i.y+h*(e.y-t.y)}}},s.calculateOrderOfMagnitude=function(t){return Math.floor(Math.log(t)/Math.LN10)}),C=(s.calculateScaleRange=function(t,i,e,s,n){var o=2,a=Math.floor(i/(1.5*e)),h=o>=a,l=g(t),r=m(t);l===r&&(l+=.5,r>=.5&&!s?r-=.5:l+=.5);for(var c=Math.abs(l-r),u=y(c),d=Math.ceil(l/(1*Math.pow(10,u)))*Math.pow(10,u),p=s?0:Math.floor(r/(1*Math.pow(10,u)))*Math.pow(10,u),f=d-p,v=Math.pow(10,u),S=Math.round(f/v);(S>a||a>2*S)&&!h;)if(S>a)v*=2,S=Math.round(f/v),S%1!==0&&(h=!0);else if(n&&u>=0){if(v/2%1!==0)break;v/=2,S=Math.round(f/v)}else v/=2,S=Math.round(f/v);return h&&(S=o,v=f/S),{steps:S,stepValue:v,min:p,max:p+S*v}},s.template=function(t,i){function e(t,i){var e=/\W/.test(t)?new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+t.replace(/[\r\t\n]/g," ").split("<%").join(" ").replace(/((^|%>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)%>/g,"',$1,'").split(" ").join("');").split("%>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');"):s[t]=s[t];return i?e(i):e}if(t instanceof Function)return t(i);var s={};return e(t,i)}),w=(s.generateLabels=function(t,i,e,s){var o=new Array(i);return labelTemplateString&&n(o,function(i,n){o[n]=C(t,{value:e+s*(n+1)})}),o},s.easingEffects={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return-1*t*(t-2)},easeInOutQuad:function(t){return(t/=.5)<1?.5*t*t:-0.5*(--t*(t-2)-1)},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return 1*((t=t/1-1)*t*t+1)},easeInOutCubic:function(t){return(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return-1*((t=t/1-1)*t*t*t-1)},easeInOutQuart:function(t){return(t/=.5)<1?.5*t*t*t*t:-0.5*((t-=2)*t*t*t-2)},easeInQuint:function(t){return 1*(t/=1)*t*t*t*t},easeOutQuint:function(t){return 1*((t=t/1-1)*t*t*t*t+1)},easeInOutQuint:function(t){return(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},easeInSine:function(t){return-1*Math.cos(t/1*(Math.PI/2))+1},easeOutSine:function(t){return 1*Math.sin(t/1*(Math.PI/2))},easeInOutSine:function(t){return-0.5*(Math.cos(Math.PI*t/1)-1)},easeInExpo:function(t){return 0===t?1:1*Math.pow(2,10*(t/1-1))},easeOutExpo:function(t){return 1===t?1:1*(-Math.pow(2,-10*t/1)+1)},easeInOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(-Math.pow(2,-10*--t)+2)},easeInCirc:function(t){return t>=1?t:-1*(Math.sqrt(1-(t/=1)*t)-1)},easeOutCirc:function(t){return 1*Math.sqrt(1-(t=t/1-1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-0.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var i=1.70158,e=0,s=1;return 0===t?0:1==(t/=1)?1:(e||(e=.3),s<Math.abs(1)?(s=1,i=e/4):i=e/(2*Math.PI)*Math.asin(1/s),-(s*Math.pow(2,10*(t-=1))*Math.sin(2*(1*t-i)*Math.PI/e)))},easeOutElastic:function(t){var i=1.70158,e=0,s=1;return 0===t?0:1==(t/=1)?1:(e||(e=.3),s<Math.abs(1)?(s=1,i=e/4):i=e/(2*Math.PI)*Math.asin(1/s),s*Math.pow(2,-10*t)*Math.sin(2*(1*t-i)*Math.PI/e)+1)},easeInOutElastic:function(t){var i=1.70158,e=0,s=1;return 0===t?0:2==(t/=.5)?1:(e||(e=.3*1.5),s<Math.abs(1)?(s=1,i=e/4):i=e/(2*Math.PI)*Math.asin(1/s),1>t?-.5*s*Math.pow(2,10*(t-=1))*Math.sin(2*(1*t-i)*Math.PI/e):s*Math.pow(2,-10*(t-=1))*Math.sin(2*(1*t-i)*Math.PI/e)*.5+1)},easeInBack:function(t){var i=1.70158;return 1*(t/=1)*t*((i+1)*t-i)},easeOutBack:function(t){var i=1.70158;return 1*((t=t/1-1)*t*((i+1)*t+i)+1)},easeInOutBack:function(t){var i=1.70158;return(t/=.5)<1?.5*t*t*(((i*=1.525)+1)*t-i):.5*((t-=2)*t*(((i*=1.525)+1)*t+i)+2)},easeInBounce:function(t){return 1-w.easeOutBounce(1-t)},easeOutBounce:function(t){return(t/=1)<1/2.75?7.5625*t*t:2/2.75>t?1*(7.5625*(t-=1.5/2.75)*t+.75):2.5/2.75>t?1*(7.5625*(t-=2.25/2.75)*t+.9375):1*(7.5625*(t-=2.625/2.75)*t+.984375)},easeInOutBounce:function(t){return.5>t?.5*w.easeInBounce(2*t):.5*w.easeOutBounce(2*t-1)+.5}}),b=s.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)}}(),P=(s.cancelAnimFrame=function(){return window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||window.oCancelAnimationFrame||window.msCancelAnimationFrame||function(t){return window.clearTimeout(t,1e3/60)}}(),s.animationLoop=function(t,i,e,s,n,o){var a=0,h=w[e]||w.linear,l=function(){a++;var e=a/i,r=h(e);t.call(o,r,e,a),s.call(o,r,e),i>a?o.animationFrame=b(l):n.apply(o)};b(l)},s.getRelativePosition=function(t){var i,e,s=t.originalEvent||t,n=t.currentTarget||t.srcElement,o=n.getBoundingClientRect();return s.touches?(i=s.touches[0].clientX-o.left,e=s.touches[0].clientY-o.top):(i=s.clientX-o.left,e=s.clientY-o.top),{x:i,y:e}},s.addEvent=function(t,i,e){t.addEventListener?t.addEventListener(i,e):t.attachEvent?t.attachEvent("on"+i,e):t["on"+i]=e}),L=s.removeEvent=function(t,i,e){t.removeEventListener?t.removeEventListener(i,e,!1):t.detachEvent?t.detachEvent("on"+i,e):t["on"+i]=c},k=(s.bindEvents=function(t,i,e){t.events||(t.events={}),n(i,function(i){t.events[i]=function(){e.apply(t,arguments)},P(t.chart.canvas,i,t.events[i])})},s.unbindEvents=function(t,i){n(i,function(i,e){L(t.chart.canvas,e,i)})}),F=s.getMaximumWidth=function(t){var i=t.parentNode;return i.clientWidth},R=s.getMaximumHeight=function(t){var i=t.parentNode;return i.clientHeight},T=(s.getMaximumSize=s.getMaximumWidth,s.retinaScale=function(t){var i=t.ctx,e=t.canvas.width,s=t.canvas.height;window.devicePixelRatio&&(i.canvas.style.width=e+"px",i.canvas.style.height=s+"px",i.canvas.height=s*window.devicePixelRatio,i.canvas.width=e*window.devicePixelRatio,i.scale(window.devicePixelRatio,window.devicePixelRatio))}),A=s.clear=function(t){t.ctx.clearRect(0,0,t.width,t.height)},M=s.fontString=function(t,i,e){return i+" "+t+"px "+e},W=s.longestText=function(t,i,e){t.font=i;var s=0;return n(e,function(i){var e=t.measureText(i).width;s=e>s?e:s}),s},z=s.drawRoundedRectangle=function(t,i,e,s,n,o){t.beginPath(),t.moveTo(i+o,e),t.lineTo(i+s-o,e),t.quadraticCurveTo(i+s,e,i+s,e+o),t.lineTo(i+s,e+n-o),t.quadraticCurveTo(i+s,e+n,i+s-o,e+n),t.lineTo(i+o,e+n),t.quadraticCurveTo(i,e+n,i,e+n-o),t.lineTo(i,e+o),t.quadraticCurveTo(i,e,i+o,e),t.closePath()};e.instances={},e.Type=function(t,i,s){this.options=i,this.chart=s,this.id=u(),e.instances[this.id]=this,i.responsive&&this.resize(),this.initialize.call(this,t)},a(e.Type.prototype,{initialize:function(){return this},clear:function(){return A(this.chart),this},stop:function(){return s.cancelAnimFrame.call(t,this.animationFrame),this},resize:function(t){this.stop();var i=this.chart.canvas,e=F(this.chart.canvas),s=this.options.maintainAspectRatio?e/this.chart.aspectRatio:R(this.chart.canvas);return i.width=this.chart.width=e,i.height=this.chart.height=s,T(this.chart),"function"==typeof t&&t.apply(this,Array.prototype.slice.call(arguments,1)),this},reflow:c,render:function(t){return t&&this.reflow(),this.options.animation&&!t?s.animationLoop(this.draw,this.options.animationSteps,this.options.animationEasing,this.options.onAnimationProgress,this.options.onAnimationComplete,this):(this.draw(),this.options.onAnimationComplete.call(this)),this},generateLegend:function(){return C(this.options.legendTemplate,this)},destroy:function(){this.clear(),k(this,this.events);var t=this.chart.canvas;t.width=this.chart.width,t.height=this.chart.height,t.style.removeProperty?(t.style.removeProperty("width"),t.style.removeProperty("height")):(t.style.removeAttribute("width"),t.style.removeAttribute("height")),delete e.instances[this.id]},showTooltip:function(t,i){"undefined"==typeof this.activeElements&&(this.activeElements=[]);var o=function(t){var i=!1;return t.length!==this.activeElements.length?i=!0:(n(t,function(t,e){t!==this.activeElements[e]&&(i=!0)},this),i)}.call(this,t);if(o||i){if(this.activeElements=t,this.draw(),this.options.customTooltips&&this.options.customTooltips(!1),t.length>0)if(this.datasets&&this.datasets.length>1){for(var a,h,r=this.datasets.length-1;r>=0&&(a=this.datasets[r].points||this.datasets[r].bars||this.datasets[r].segments,h=l(a,t[0]),-1===h);r--);var c=[],u=[],d=function(){var t,i,e,n,o,a=[],l=[],r=[];return s.each(this.datasets,function(i){t=i.points||i.bars||i.segments,t[h]&&t[h].hasValue()&&a.push(t[h])}),s.each(a,function(t){l.push(t.x),r.push(t.y),c.push(s.template(this.options.multiTooltipTemplate,t)),u.push({fill:t._saved.fillColor||t.fillColor,stroke:t._saved.strokeColor||t.strokeColor})},this),o=m(r),e=g(r),n=m(l),i=g(l),{x:n>this.chart.width/2?n:i,y:(o+e)/2}}.call(this,h);new e.MultiTooltip({x:d.x,y:d.y,xPadding:this.options.tooltipXPadding,yPadding:this.options.tooltipYPadding,xOffset:this.options.tooltipXOffset,fillColor:this.options.tooltipFillColor,textColor:this.options.tooltipFontColor,fontFamily:this.options.tooltipFontFamily,fontStyle:this.options.tooltipFontStyle,fontSize:this.options.tooltipFontSize,titleTextColor:this.options.tooltipTitleFontColor,titleFontFamily:this.options.tooltipTitleFontFamily,titleFontStyle:this.options.tooltipTitleFontStyle,titleFontSize:this.options.tooltipTitleFontSize,cornerRadius:this.options.tooltipCornerRadius,labels:c,legendColors:u,legendColorBackground:this.options.multiTooltipKeyBackground,title:t[0].label,chart:this.chart,ctx:this.chart.ctx,custom:this.options.customTooltips}).draw()}else n(t,function(t){var i=t.tooltipPosition();new e.Tooltip({x:Math.round(i.x),y:Math.round(i.y),xPadding:this.options.tooltipXPadding,yPadding:this.options.tooltipYPadding,fillColor:this.options.tooltipFillColor,textColor:this.options.tooltipFontColor,fontFamily:this.options.tooltipFontFamily,fontStyle:this.options.tooltipFontStyle,fontSize:this.options.tooltipFontSize,caretHeight:this.options.tooltipCaretSize,cornerRadius:this.options.tooltipCornerRadius,text:C(this.options.tooltipTemplate,t),chart:this.chart,custom:this.options.customTooltips}).draw()},this);return this}},toBase64Image:function(){return this.chart.canvas.toDataURL.apply(this.chart.canvas,arguments)}}),e.Type.extend=function(t){var i=this,s=function(){return i.apply(this,arguments)};if(s.prototype=o(i.prototype),a(s.prototype,t),s.extend=e.Type.extend,t.name||i.prototype.name){var n=t.name||i.prototype.name,l=e.defaults[i.prototype.name]?o(e.defaults[i.prototype.name]):{};e.defaults[n]=a(l,t.defaults),e.types[n]=s,e.prototype[n]=function(t,i){var o=h(e.defaults.global,e.defaults[n],i||{});return new s(t,o,this)}}else d("Name not provided for this chart, so it hasn't been registered");return i},e.Element=function(t){a(this,t),this.initialize.apply(this,arguments),this.save()},a(e.Element.prototype,{initialize:function(){},restore:function(t){return t?n(t,function(t){this[t]=this._saved[t]},this):a(this,this._saved),this},save:function(){return this._saved=o(this),delete this._saved._saved,this},update:function(t){return n(t,function(t,i){this._saved[i]=this[i],this[i]=t},this),this},transition:function(t,i){return n(t,function(t,e){this[e]=(t-this._saved[e])*i+this._saved[e]},this),this},tooltipPosition:function(){return{x:this.x,y:this.y}},hasValue:function(){return f(this.value)}}),e.Element.extend=r,e.Point=e.Element.extend({display:!0,inRange:function(t,i){var e=this.hitDetectionRadius+this.radius;return Math.pow(t-this.x,2)+Math.pow(i-this.y,2)<Math.pow(e,2)},draw:function(){if(this.display){var t=this.ctx;t.beginPath(),t.arc(this.x,this.y,this.radius,0,2*Math.PI),t.closePath(),t.strokeStyle=this.strokeColor,t.lineWidth=this.strokeWidth,t.fillStyle=this.fillColor,t.fill(),t.stroke()}}}),e.Arc=e.Element.extend({inRange:function(t,i){var e=s.getAngleFromPoint(this,{x:t,y:i}),n=e.angle>=this.startAngle&&e.angle<=this.endAngle,o=e.distance>=this.innerRadius&&e.distance<=this.outerRadius;return n&&o},tooltipPosition:function(){var t=this.startAngle+(this.endAngle-this.startAngle)/2,i=(this.outerRadius-this.innerRadius)/2+this.innerRadius;return{x:this.x+Math.cos(t)*i,y:this.y+Math.sin(t)*i}},draw:function(t){var i=this.ctx;i.beginPath(),i.arc(this.x,this.y,this.outerRadius,this.startAngle,this.endAngle),i.arc(this.x,this.y,this.innerRadius,this.endAngle,this.startAngle,!0),i.closePath(),i.strokeStyle=this.strokeColor,i.lineWidth=this.strokeWidth,i.fillStyle=this.fillColor,i.fill(),i.lineJoin="bevel",this.showStroke&&i.stroke()}}),e.Rectangle=e.Element.extend({draw:function(){var t=this.ctx,i=this.width/2,e=this.x-i,s=this.x+i,n=this.base-(this.base-this.y),o=this.strokeWidth/2;this.showStroke&&(e+=o,s-=o,n+=o),t.beginPath(),t.fillStyle=this.fillColor,t.strokeStyle=this.strokeColor,t.lineWidth=this.strokeWidth,t.moveTo(e,this.base),t.lineTo(e,n),t.lineTo(s,n),t.lineTo(s,this.base),t.fill(),this.showStroke&&t.stroke()},height:function(){return this.base-this.y},inRange:function(t,i){return t>=this.x-this.width/2&&t<=this.x+this.width/2&&i>=this.y&&i<=this.base}}),e.Tooltip=e.Element.extend({draw:function(){var t=this.chart.ctx;t.font=M(this.fontSize,this.fontStyle,this.fontFamily),this.xAlign="center",this.yAlign="above";var i=this.caretPadding=2,e=t.measureText(this.text).width+2*this.xPadding,s=this.fontSize+2*this.yPadding,n=s+this.caretHeight+i;this.x+e/2>this.chart.width?this.xAlign="left":this.x-e/2<0&&(this.xAlign="right"),this.y-n<0&&(this.yAlign="below");var o=this.x-e/2,a=this.y-n;if(t.fillStyle=this.fillColor,this.custom)this.custom(this);else{switch(this.yAlign){case"above":t.beginPath(),t.moveTo(this.x,this.y-i),t.lineTo(this.x+this.caretHeight,this.y-(i+this.caretHeight)),t.lineTo(this.x-this.caretHeight,this.y-(i+this.caretHeight)),t.closePath(),t.fill();break;case"below":a=this.y+i+this.caretHeight,t.beginPath(),t.moveTo(this.x,this.y+i),t.lineTo(this.x+this.caretHeight,this.y+i+this.caretHeight),t.lineTo(this.x-this.caretHeight,this.y+i+this.caretHeight),t.closePath(),t.fill()}switch(this.xAlign){case"left":o=this.x-e+(this.cornerRadius+this.caretHeight);break;case"right":o=this.x-(this.cornerRadius+this.caretHeight)}z(t,o,a,e,s,this.cornerRadius),t.fill(),t.fillStyle=this.textColor,t.textAlign="center",t.textBaseline="middle",t.fillText(this.text,o+e/2,a+s/2)}}}),e.MultiTooltip=e.Element.extend({initialize:function(){this.font=M(this.fontSize,this.fontStyle,this.fontFamily),this.titleFont=M(this.titleFontSize,this.titleFontStyle,this.titleFontFamily),this.height=this.labels.length*this.fontSize+(this.labels.length-1)*(this.fontSize/2)+2*this.yPadding+1.5*this.titleFontSize,this.ctx.font=this.titleFont;var t=this.ctx.measureText(this.title).width,i=W(this.ctx,this.font,this.labels)+this.fontSize+3,e=g([i,t]);this.width=e+2*this.xPadding;var s=this.height/2;this.y-s<0?this.y=s:this.y+s>this.chart.height&&(this.y=this.chart.height-s),this.x>this.chart.width/2?this.x-=this.xOffset+this.width:this.x+=this.xOffset},getLineHeight:function(t){var i=this.y-this.height/2+this.yPadding,e=t-1;return 0===t?i+this.titleFontSize/2:i+(1.5*this.fontSize*e+this.fontSize/2)+1.5*this.titleFontSize},draw:function(){if(this.custom)this.custom(this);else{z(this.ctx,this.x,this.y-this.height/2,this.width,this.height,this.cornerRadius);var t=this.ctx;t.fillStyle=this.fillColor,t.fill(),t.closePath(),t.textAlign="left",t.textBaseline="middle",t.fillStyle=this.titleTextColor,t.font=this.titleFont,t.fillText(this.title,this.x+this.xPadding,this.getLineHeight(0)),t.font=this.font,s.each(this.labels,function(i,e){t.fillStyle=this.textColor,t.fillText(i,this.x+this.xPadding+this.fontSize+3,this.getLineHeight(e+1)),t.fillStyle=this.legendColorBackground,t.fillRect(this.x+this.xPadding,this.getLineHeight(e+1)-this.fontSize/2,this.fontSize,this.fontSize),t.fillStyle=this.legendColors[e].fill,t.fillRect(this.x+this.xPadding,this.getLineHeight(e+1)-this.fontSize/2,this.fontSize,this.fontSize)},this)}}}),e.Scale=e.Element.extend({initialize:function(){this.fit()},buildYLabels:function(){this.yLabels=[];for(var t=v(this.stepValue),i=0;i<=this.steps;i++)this.yLabels.push(C(this.templateString,{value:(this.min+i*this.stepValue).toFixed(t)}));this.yLabelWidth=this.display&&this.showLabels?W(this.ctx,this.font,this.yLabels):0},addXLabel:function(t){this.xLabels.push(t),this.valuesCount++,this.fit()},removeXLabel:function(){this.xLabels.shift(),this.valuesCount--,this.fit()},fit:function(){this.startPoint=this.display?this.fontSize:0,this.endPoint=this.display?this.height-1.5*this.fontSize-5:this.height,this.startPoint+=this.padding,this.endPoint-=this.padding;var t,i=this.endPoint-this.startPoint;for(this.calculateYRange(i),this.buildYLabels(),this.calculateXLabelRotation();i>this.endPoint-this.startPoint;)i=this.endPoint-this.startPoint,t=this.yLabelWidth,this.calculateYRange(i),this.buildYLabels(),t<this.yLabelWidth&&this.calculateXLabelRotation()},calculateXLabelRotation:function(){this.ctx.font=this.font;var t,i,e=this.ctx.measureText(this.xLabels[0]).width,s=this.ctx.measureText(this.xLabels[this.xLabels.length-1]).width;if(this.xScalePaddingRight=s/2+3,this.xScalePaddingLeft=e/2>this.yLabelWidth+10?e/2:this.yLabelWidth+10,this.xLabelRotation=0,this.display){var n,o=W(this.ctx,this.font,this.xLabels);this.xLabelWidth=o;for(var a=Math.floor(this.calculateX(1)-this.calculateX(0))-6;this.xLabelWidth>a&&0===this.xLabelRotation||this.xLabelWidth>a&&this.xLabelRotation<=90&&this.xLabelRotation>0;)n=Math.cos(S(this.xLabelRotation)),t=n*e,i=n*s,t+this.fontSize/2>this.yLabelWidth+8&&(this.xScalePaddingLeft=t+this.fontSize/2),this.xScalePaddingRight=this.fontSize/2,this.xLabelRotation++,this.xLabelWidth=n*o;this.xLabelRotation>0&&(this.endPoint-=Math.sin(S(this.xLabelRotation))*o+3)}else this.xLabelWidth=0,this.xScalePaddingRight=this.padding,this.xScalePaddingLeft=this.padding},calculateYRange:c,drawingArea:function(){return this.startPoint-this.endPoint},calculateY:function(t){var i=this.drawingArea()/(this.min-this.max);return this.endPoint-i*(t-this.min)},calculateX:function(t){var i=(this.xLabelRotation>0,this.width-(this.xScalePaddingLeft+this.xScalePaddingRight)),e=i/(this.valuesCount-(this.offsetGridLines?0:1)),s=e*t+this.xScalePaddingLeft;return this.offsetGridLines&&(s+=e/2),Math.round(s)},update:function(t){s.extend(this,t),this.fit()},draw:function(){var t=this.ctx,i=(this.endPoint-this.startPoint)/this.steps,e=Math.round(this.xScalePaddingLeft);this.display&&(t.fillStyle=this.textColor,t.font=this.font,n(this.yLabels,function(n,o){var a=this.endPoint-i*o,h=Math.round(a),l=this.showHorizontalLines;t.textAlign="right",t.textBaseline="middle",this.showLabels&&t.fillText(n,e-10,a),0!==o||l||(l=!0),l&&t.beginPath(),o>0?(t.lineWidth=this.gridLineWidth,t.strokeStyle=this.gridLineColor):(t.lineWidth=this.lineWidth,t.strokeStyle=this.lineColor),h+=s.aliasPixel(t.lineWidth),l&&(t.moveTo(e,h),t.lineTo(this.width,h),t.stroke(),t.closePath()),t.lineWidth=this.lineWidth,t.strokeStyle=this.lineColor,t.beginPath(),t.moveTo(e-5,h),t.lineTo(e,h),t.stroke(),t.closePath()},this),n(this.xLabels,function(i,e){var s=this.calculateX(e)+x(this.lineWidth),n=this.calculateX(e-(this.offsetGridLines?.5:0))+x(this.lineWidth),o=this.xLabelRotation>0,a=this.showVerticalLines;0!==e||a||(a=!0),a&&t.beginPath(),e>0?(t.lineWidth=this.gridLineWidth,t.strokeStyle=this.gridLineColor):(t.lineWidth=this.lineWidth,t.strokeStyle=this.lineColor),a&&(t.moveTo(n,this.endPoint),t.lineTo(n,this.startPoint-3),t.stroke(),t.closePath()),t.lineWidth=this.lineWidth,t.strokeStyle=this.lineColor,t.beginPath(),t.moveTo(n,this.endPoint),t.lineTo(n,this.endPoint+5),t.stroke(),t.closePath(),t.save(),t.translate(s,o?this.endPoint+12:this.endPoint+8),t.rotate(-1*S(this.xLabelRotation)),t.font=this.font,t.textAlign=o?"right":"center",t.textBaseline=o?"middle":"top",t.fillText(i,0,0),t.restore()},this))}}),e.RadialScale=e.Element.extend({initialize:function(){this.size=m([this.height,this.width]),this.drawingArea=this.display?this.size/2-(this.fontSize/2+this.backdropPaddingY):this.size/2},calculateCenterOffset:function(t){var i=this.drawingArea/(this.max-this.min);return(t-this.min)*i},update:function(){this.lineArc?this.drawingArea=this.display?this.size/2-(this.fontSize/2+this.backdropPaddingY):this.size/2:this.setScaleSize(),this.buildYLabels()},buildYLabels:function(){this.yLabels=[];for(var t=v(this.stepValue),i=0;i<=this.steps;i++)this.yLabels.push(C(this.templateString,{value:(this.min+i*this.stepValue).toFixed(t)}))},getCircumference:function(){return 2*Math.PI/this.valuesCount},setScaleSize:function(){var t,i,e,s,n,o,a,h,l,r,c,u,d=m([this.height/2-this.pointLabelFontSize-5,this.width/2]),p=this.width,g=0;for(this.ctx.font=M(this.pointLabelFontSize,this.pointLabelFontStyle,this.pointLabelFontFamily),i=0;i<this.valuesCount;i++)t=this.getPointPosition(i,d),e=this.ctx.measureText(C(this.templateString,{value:this.labels[i]})).width+5,0===i||i===this.valuesCount/2?(s=e/2,t.x+s>p&&(p=t.x+s,n=i),t.x-s<g&&(g=t.x-s,a=i)):i<this.valuesCount/2?t.x+e>p&&(p=t.x+e,n=i):i>this.valuesCount/2&&t.x-e<g&&(g=t.x-e,a=i);l=g,r=Math.ceil(p-this.width),o=this.getIndexAngle(n),h=this.getIndexAngle(a),c=r/Math.sin(o+Math.PI/2),u=l/Math.sin(h+Math.PI/2),c=f(c)?c:0,u=f(u)?u:0,this.drawingArea=d-(u+c)/2,this.setCenterPoint(u,c)},setCenterPoint:function(t,i){var e=this.width-i-this.drawingArea,s=t+this.drawingArea;this.xCenter=(s+e)/2,this.yCenter=this.height/2},getIndexAngle:function(t){var i=2*Math.PI/this.valuesCount;return t*i-Math.PI/2},getPointPosition:function(t,i){var e=this.getIndexAngle(t);return{x:Math.cos(e)*i+this.xCenter,y:Math.sin(e)*i+this.yCenter}},draw:function(){if(this.display){var t=this.ctx;if(n(this.yLabels,function(i,e){if(e>0){var s,n=e*(this.drawingArea/this.steps),o=this.yCenter-n;if(this.lineWidth>0)if(t.strokeStyle=this.lineColor,t.lineWidth=this.lineWidth,this.lineArc)t.beginPath(),t.arc(this.xCenter,this.yCenter,n,0,2*Math.PI),t.closePath(),t.stroke();else{t.beginPath();for(var a=0;a<this.valuesCount;a++)s=this.getPointPosition(a,this.calculateCenterOffset(this.min+e*this.stepValue)),0===a?t.moveTo(s.x,s.y):t.lineTo(s.x,s.y);t.closePath(),t.stroke()}if(this.showLabels){if(t.font=M(this.fontSize,this.fontStyle,this.fontFamily),this.showLabelBackdrop){var h=t.measureText(i).width;t.fillStyle=this.backdropColor,t.fillRect(this.xCenter-h/2-this.backdropPaddingX,o-this.fontSize/2-this.backdropPaddingY,h+2*this.backdropPaddingX,this.fontSize+2*this.backdropPaddingY)}t.textAlign="center",t.textBaseline="middle",t.fillStyle=this.fontColor,t.fillText(i,this.xCenter,o)}}},this),!this.lineArc){t.lineWidth=this.angleLineWidth,t.strokeStyle=this.angleLineColor;for(var i=this.valuesCount-1;i>=0;i--){if(this.angleLineWidth>0){var e=this.getPointPosition(i,this.calculateCenterOffset(this.max));t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(e.x,e.y),t.stroke(),t.closePath()}var s=this.getPointPosition(i,this.calculateCenterOffset(this.max)+5);t.font=M(this.pointLabelFontSize,this.pointLabelFontStyle,this.pointLabelFontFamily),t.fillStyle=this.pointLabelFontColor;var o=this.labels.length,a=this.labels.length/2,h=a/2,l=h>i||i>o-h,r=i===h||i===o-h;t.textAlign=0===i?"center":i===a?"center":a>i?"left":"right",t.textBaseline=r?"middle":l?"bottom":"top",t.fillText(this.labels[i],s.x,s.y)}}}}}),s.addEvent(window,"resize",function(){var t;return function(){clearTimeout(t),t=setTimeout(function(){n(e.instances,function(t){t.options.responsive&&t.resize(t.render,!0)})},50)}}()),p?define(function(){return e}):"object"==typeof module&&module.exports&&(module.exports=e),t.Chart=e,e.noConflict=function(){return t.Chart=i,e}}).call(this),function(){"use strict";var t=this,i=t.Chart,e=i.helpers,s={scaleBeginAtZero:!0,scaleShowGridLines:!0,scaleGridLineColor:"rgba(0,0,0,.05)",scaleGridLineWidth:1,scaleShowHorizontalLines:!0,scaleShowVerticalLines:!0,barShowStroke:!0,barStrokeWidth:2,barValueSpacing:5,barDatasetSpacing:1,legendTemplate:'<ul class="<%=name.toLowerCase()%>-legend"><% for (var i=0; i<datasets.length; i++){%><li><span style="background-color:<%=datasets[i].fillColor%>"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>'};i.Type.extend({name:"Bar",defaults:s,initialize:function(t){var s=this.options;this.ScaleClass=i.Scale.extend({offsetGridLines:!0,calculateBarX:function(t,i,e){var n=this.calculateBaseWidth(),o=this.calculateX(e)-n/2,a=this.calculateBarWidth(t);return o+a*i+i*s.barDatasetSpacing+a/2},calculateBaseWidth:function(){return this.calculateX(1)-this.calculateX(0)-2*s.barValueSpacing},calculateBarWidth:function(t){var i=this.calculateBaseWidth()-(t-1)*s.barDatasetSpacing;return i/t}}),this.datasets=[],this.options.showTooltips&&e.bindEvents(this,this.options.tooltipEvents,function(t){var i="mouseout"!==t.type?this.getBarsAtEvent(t):[];this.eachBars(function(t){t.restore(["fillColor","strokeColor"])}),e.each(i,function(t){t.fillColor=t.highlightFill,t.strokeColor=t.highlightStroke}),this.showTooltip(i)}),this.BarClass=i.Rectangle.extend({strokeWidth:this.options.barStrokeWidth,showStroke:this.options.barShowStroke,ctx:this.chart.ctx}),e.each(t.datasets,function(i){var s={label:i.label||null,fillColor:i.fillColor,strokeColor:i.strokeColor,bars:[]};this.datasets.push(s),e.each(i.data,function(e,n){s.bars.push(new this.BarClass({value:e,label:t.labels[n],datasetLabel:i.label,strokeColor:i.strokeColor,fillColor:i.fillColor,highlightFill:i.highlightFill||i.fillColor,highlightStroke:i.highlightStroke||i.strokeColor}))},this)},this),this.buildScale(t.labels),this.BarClass.prototype.base=this.scale.endPoint,this.eachBars(function(t,i,s){e.extend(t,{width:this.scale.calculateBarWidth(this.datasets.length),x:this.scale.calculateBarX(this.datasets.length,s,i),y:this.scale.endPoint}),t.save()},this),this.render()},update:function(){this.scale.update(),e.each(this.activeElements,function(t){t.restore(["fillColor","strokeColor"])}),this.eachBars(function(t){t.save()}),this.render()},eachBars:function(t){e.each(this.datasets,function(i,s){e.each(i.bars,t,this,s)},this)},getBarsAtEvent:function(t){for(var i,s=[],n=e.getRelativePosition(t),o=function(t){s.push(t.bars[i])},a=0;a<this.datasets.length;a++)for(i=0;i<this.datasets[a].bars.length;i++)if(this.datasets[a].bars[i].inRange(n.x,n.y))return e.each(this.datasets,o),s;return s},buildScale:function(t){var i=this,s=function(){var t=[];return i.eachBars(function(i){t.push(i.value)}),t},n={templateString:this.options.scaleLabel,height:this.chart.height,width:this.chart.width,ctx:this.chart.ctx,textColor:this.options.scaleFontColor,fontSize:this.options.scaleFontSize,fontStyle:this.options.scaleFontStyle,fontFamily:this.options.scaleFontFamily,valuesCount:t.length,beginAtZero:this.options.scaleBeginAtZero,integersOnly:this.options.scaleIntegersOnly,calculateYRange:function(t){var i=e.calculateScaleRange(s(),t,this.fontSize,this.beginAtZero,this.integersOnly);e.extend(this,i)},xLabels:t,font:e.fontString(this.options.scaleFontSize,this.options.scaleFontStyle,this.options.scaleFontFamily),lineWidth:this.options.scaleLineWidth,lineColor:this.options.scaleLineColor,showHorizontalLines:this.options.scaleShowHorizontalLines,showVerticalLines:this.options.scaleShowVerticalLines,gridLineWidth:this.options.scaleShowGridLines?this.options.scaleGridLineWidth:0,gridLineColor:this.options.scaleShowGridLines?this.options.scaleGridLineColor:"rgba(0,0,0,0)",padding:this.options.showScale?0:this.options.barShowStroke?this.options.barStrokeWidth:0,showLabels:this.options.scaleShowLabels,display:this.options.showScale};this.options.scaleOverride&&e.extend(n,{calculateYRange:e.noop,steps:this.options.scaleSteps,stepValue:this.options.scaleStepWidth,min:this.options.scaleStartValue,max:this.options.scaleStartValue+this.options.scaleSteps*this.options.scaleStepWidth}),this.scale=new this.ScaleClass(n)},addData:function(t,i){e.each(t,function(t,e){this.datasets[e].bars.push(new this.BarClass({value:t,label:i,x:this.scale.calculateBarX(this.datasets.length,e,this.scale.valuesCount+1),y:this.scale.endPoint,width:this.scale.calculateBarWidth(this.datasets.length),base:this.scale.endPoint,strokeColor:this.datasets[e].strokeColor,fillColor:this.datasets[e].fillColor}))},this),this.scale.addXLabel(i),this.update()},removeData:function(){this.scale.removeXLabel(),e.each(this.datasets,function(t){t.bars.shift()},this),this.update()},reflow:function(){e.extend(this.BarClass.prototype,{y:this.scale.endPoint,base:this.scale.endPoint}); -var t=e.extend({height:this.chart.height,width:this.chart.width});this.scale.update(t)},draw:function(t){var i=t||1;this.clear();this.chart.ctx;this.scale.draw(i),e.each(this.datasets,function(t,s){e.each(t.bars,function(t,e){t.hasValue()&&(t.base=this.scale.endPoint,t.transition({x:this.scale.calculateBarX(this.datasets.length,s,e),y:this.scale.calculateY(t.value),width:this.scale.calculateBarWidth(this.datasets.length)},i).draw())},this)},this)}})}.call(this),function(){"use strict";var t=this,i=t.Chart,e=i.helpers,s={segmentShowStroke:!0,segmentStrokeColor:"#fff",segmentStrokeWidth:2,percentageInnerCutout:50,animationSteps:100,animationEasing:"easeOutBounce",animateRotate:!0,animateScale:!1,legendTemplate:'<ul class="<%=name.toLowerCase()%>-legend"><% for (var i=0; i<segments.length; i++){%><li><span style="background-color:<%=segments[i].fillColor%>"></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>'};i.Type.extend({name:"Doughnut",defaults:s,initialize:function(t){this.segments=[],this.outerRadius=(e.min([this.chart.width,this.chart.height])-this.options.segmentStrokeWidth/2)/2,this.SegmentArc=i.Arc.extend({ctx:this.chart.ctx,x:this.chart.width/2,y:this.chart.height/2}),this.options.showTooltips&&e.bindEvents(this,this.options.tooltipEvents,function(t){var i="mouseout"!==t.type?this.getSegmentsAtEvent(t):[];e.each(this.segments,function(t){t.restore(["fillColor"])}),e.each(i,function(t){t.fillColor=t.highlightColor}),this.showTooltip(i)}),this.calculateTotal(t),e.each(t,function(t,i){this.addData(t,i,!0)},this),this.render()},getSegmentsAtEvent:function(t){var i=[],s=e.getRelativePosition(t);return e.each(this.segments,function(t){t.inRange(s.x,s.y)&&i.push(t)},this),i},addData:function(t,i,e){var s=i||this.segments.length;this.segments.splice(s,0,new this.SegmentArc({value:t.value,outerRadius:this.options.animateScale?0:this.outerRadius,innerRadius:this.options.animateScale?0:this.outerRadius/100*this.options.percentageInnerCutout,fillColor:t.color,highlightColor:t.highlight||t.color,showStroke:this.options.segmentShowStroke,strokeWidth:this.options.segmentStrokeWidth,strokeColor:this.options.segmentStrokeColor,startAngle:1.5*Math.PI,circumference:this.options.animateRotate?0:this.calculateCircumference(t.value),label:t.label})),e||(this.reflow(),this.update())},calculateCircumference:function(t){return 2*Math.PI*(t/this.total)},calculateTotal:function(t){this.total=0,e.each(t,function(t){this.total+=t.value},this)},update:function(){this.calculateTotal(this.segments),e.each(this.activeElements,function(t){t.restore(["fillColor"])}),e.each(this.segments,function(t){t.save()}),this.render()},removeData:function(t){var i=e.isNumber(t)?t:this.segments.length-1;this.segments.splice(i,1),this.reflow(),this.update()},reflow:function(){e.extend(this.SegmentArc.prototype,{x:this.chart.width/2,y:this.chart.height/2}),this.outerRadius=(e.min([this.chart.width,this.chart.height])-this.options.segmentStrokeWidth/2)/2,e.each(this.segments,function(t){t.update({outerRadius:this.outerRadius,innerRadius:this.outerRadius/100*this.options.percentageInnerCutout})},this)},draw:function(t){var i=t?t:1;this.clear(),e.each(this.segments,function(t,e){t.transition({circumference:this.calculateCircumference(t.value),outerRadius:this.outerRadius,innerRadius:this.outerRadius/100*this.options.percentageInnerCutout},i),t.endAngle=t.startAngle+t.circumference,t.draw(),0===e&&(t.startAngle=1.5*Math.PI),e<this.segments.length-1&&(this.segments[e+1].startAngle=t.endAngle)},this)}}),i.types.Doughnut.extend({name:"Pie",defaults:e.merge(s,{percentageInnerCutout:0})})}.call(this),function(){"use strict";var t=this,i=t.Chart,e=i.helpers,s={scaleShowGridLines:!0,scaleGridLineColor:"rgba(0,0,0,.05)",scaleGridLineWidth:1,scaleShowHorizontalLines:!0,scaleShowVerticalLines:!0,bezierCurve:!0,bezierCurveTension:.4,pointDot:!0,pointDotRadius:4,pointDotStrokeWidth:1,pointHitDetectionRadius:20,datasetStroke:!0,datasetStrokeWidth:2,datasetFill:!0,legendTemplate:'<ul class="<%=name.toLowerCase()%>-legend"><% for (var i=0; i<datasets.length; i++){%><li><span style="background-color:<%=datasets[i].strokeColor%>"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>'};i.Type.extend({name:"Line",defaults:s,initialize:function(t){this.PointClass=i.Point.extend({strokeWidth:this.options.pointDotStrokeWidth,radius:this.options.pointDotRadius,display:this.options.pointDot,hitDetectionRadius:this.options.pointHitDetectionRadius,ctx:this.chart.ctx,inRange:function(t){return Math.pow(t-this.x,2)<Math.pow(this.radius+this.hitDetectionRadius,2)}}),this.datasets=[],this.options.showTooltips&&e.bindEvents(this,this.options.tooltipEvents,function(t){var i="mouseout"!==t.type?this.getPointsAtEvent(t):[];this.eachPoints(function(t){t.restore(["fillColor","strokeColor"])}),e.each(i,function(t){t.fillColor=t.highlightFill,t.strokeColor=t.highlightStroke}),this.showTooltip(i)}),e.each(t.datasets,function(i){var s={label:i.label||null,fillColor:i.fillColor,strokeColor:i.strokeColor,pointColor:i.pointColor,pointStrokeColor:i.pointStrokeColor,points:[]};this.datasets.push(s),e.each(i.data,function(e,n){s.points.push(new this.PointClass({value:e,label:t.labels[n],datasetLabel:i.label,strokeColor:i.pointStrokeColor,fillColor:i.pointColor,highlightFill:i.pointHighlightFill||i.pointColor,highlightStroke:i.pointHighlightStroke||i.pointStrokeColor}))},this),this.buildScale(t.labels),this.eachPoints(function(t,i){e.extend(t,{x:this.scale.calculateX(i),y:this.scale.endPoint}),t.save()},this)},this),this.render()},update:function(){this.scale.update(),e.each(this.activeElements,function(t){t.restore(["fillColor","strokeColor"])}),this.eachPoints(function(t){t.save()}),this.render()},eachPoints:function(t){e.each(this.datasets,function(i){e.each(i.points,t,this)},this)},getPointsAtEvent:function(t){var i=[],s=e.getRelativePosition(t);return e.each(this.datasets,function(t){e.each(t.points,function(t){t.inRange(s.x,s.y)&&i.push(t)})},this),i},buildScale:function(t){var s=this,n=function(){var t=[];return s.eachPoints(function(i){t.push(i.value)}),t},o={templateString:this.options.scaleLabel,height:this.chart.height,width:this.chart.width,ctx:this.chart.ctx,textColor:this.options.scaleFontColor,fontSize:this.options.scaleFontSize,fontStyle:this.options.scaleFontStyle,fontFamily:this.options.scaleFontFamily,valuesCount:t.length,beginAtZero:this.options.scaleBeginAtZero,integersOnly:this.options.scaleIntegersOnly,calculateYRange:function(t){var i=e.calculateScaleRange(n(),t,this.fontSize,this.beginAtZero,this.integersOnly);e.extend(this,i)},xLabels:t,font:e.fontString(this.options.scaleFontSize,this.options.scaleFontStyle,this.options.scaleFontFamily),lineWidth:this.options.scaleLineWidth,lineColor:this.options.scaleLineColor,showHorizontalLines:this.options.scaleShowHorizontalLines,showVerticalLines:this.options.scaleShowVerticalLines,gridLineWidth:this.options.scaleShowGridLines?this.options.scaleGridLineWidth:0,gridLineColor:this.options.scaleShowGridLines?this.options.scaleGridLineColor:"rgba(0,0,0,0)",padding:this.options.showScale?0:this.options.pointDotRadius+this.options.pointDotStrokeWidth,showLabels:this.options.scaleShowLabels,display:this.options.showScale};this.options.scaleOverride&&e.extend(o,{calculateYRange:e.noop,steps:this.options.scaleSteps,stepValue:this.options.scaleStepWidth,min:this.options.scaleStartValue,max:this.options.scaleStartValue+this.options.scaleSteps*this.options.scaleStepWidth}),this.scale=new i.Scale(o)},addData:function(t,i){e.each(t,function(t,e){this.datasets[e].points.push(new this.PointClass({value:t,label:i,x:this.scale.calculateX(this.scale.valuesCount+1),y:this.scale.endPoint,strokeColor:this.datasets[e].pointStrokeColor,fillColor:this.datasets[e].pointColor}))},this),this.scale.addXLabel(i),this.update()},removeData:function(){this.scale.removeXLabel(),e.each(this.datasets,function(t){t.points.shift()},this),this.update()},reflow:function(){var t=e.extend({height:this.chart.height,width:this.chart.width});this.scale.update(t)},draw:function(t){var i=t||1;this.clear();var s=this.chart.ctx,n=function(t){return null!==t.value},o=function(t,i,s){return e.findNextWhere(i,n,s)||t},a=function(t,i,s){return e.findPreviousWhere(i,n,s)||t};this.scale.draw(i),e.each(this.datasets,function(t){var h=e.where(t.points,n);e.each(t.points,function(t,e){t.hasValue()&&t.transition({y:this.scale.calculateY(t.value),x:this.scale.calculateX(e)},i)},this),this.options.bezierCurve&&e.each(h,function(t,i){var s=i>0&&i<h.length-1?this.options.bezierCurveTension:0;t.controlPoints=e.splineCurve(a(t,h,i),t,o(t,h,i),s),t.controlPoints.outer.y>this.scale.endPoint?t.controlPoints.outer.y=this.scale.endPoint:t.controlPoints.outer.y<this.scale.startPoint&&(t.controlPoints.outer.y=this.scale.startPoint),t.controlPoints.inner.y>this.scale.endPoint?t.controlPoints.inner.y=this.scale.endPoint:t.controlPoints.inner.y<this.scale.startPoint&&(t.controlPoints.inner.y=this.scale.startPoint)},this),s.lineWidth=this.options.datasetStrokeWidth,s.strokeStyle=t.strokeColor,s.beginPath(),e.each(h,function(t,i){if(0===i)s.moveTo(t.x,t.y);else if(this.options.bezierCurve){var e=a(t,h,i);s.bezierCurveTo(e.controlPoints.outer.x,e.controlPoints.outer.y,t.controlPoints.inner.x,t.controlPoints.inner.y,t.x,t.y)}else s.lineTo(t.x,t.y)},this),s.stroke(),this.options.datasetFill&&h.length>0&&(s.lineTo(h[h.length-1].x,this.scale.endPoint),s.lineTo(h[0].x,this.scale.endPoint),s.fillStyle=t.fillColor,s.closePath(),s.fill()),e.each(h,function(t){t.draw()})},this)}})}.call(this),function(){"use strict";var t=this,i=t.Chart,e=i.helpers,s={scaleShowLabelBackdrop:!0,scaleBackdropColor:"rgba(255,255,255,0.75)",scaleBeginAtZero:!0,scaleBackdropPaddingY:2,scaleBackdropPaddingX:2,scaleShowLine:!0,segmentShowStroke:!0,segmentStrokeColor:"#fff",segmentStrokeWidth:2,animationSteps:100,animationEasing:"easeOutBounce",animateRotate:!0,animateScale:!1,legendTemplate:'<ul class="<%=name.toLowerCase()%>-legend"><% for (var i=0; i<segments.length; i++){%><li><span style="background-color:<%=segments[i].fillColor%>"></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>'};i.Type.extend({name:"PolarArea",defaults:s,initialize:function(t){this.segments=[],this.SegmentArc=i.Arc.extend({showStroke:this.options.segmentShowStroke,strokeWidth:this.options.segmentStrokeWidth,strokeColor:this.options.segmentStrokeColor,ctx:this.chart.ctx,innerRadius:0,x:this.chart.width/2,y:this.chart.height/2}),this.scale=new i.RadialScale({display:this.options.showScale,fontStyle:this.options.scaleFontStyle,fontSize:this.options.scaleFontSize,fontFamily:this.options.scaleFontFamily,fontColor:this.options.scaleFontColor,showLabels:this.options.scaleShowLabels,showLabelBackdrop:this.options.scaleShowLabelBackdrop,backdropColor:this.options.scaleBackdropColor,backdropPaddingY:this.options.scaleBackdropPaddingY,backdropPaddingX:this.options.scaleBackdropPaddingX,lineWidth:this.options.scaleShowLine?this.options.scaleLineWidth:0,lineColor:this.options.scaleLineColor,lineArc:!0,width:this.chart.width,height:this.chart.height,xCenter:this.chart.width/2,yCenter:this.chart.height/2,ctx:this.chart.ctx,templateString:this.options.scaleLabel,valuesCount:t.length}),this.updateScaleRange(t),this.scale.update(),e.each(t,function(t,i){this.addData(t,i,!0)},this),this.options.showTooltips&&e.bindEvents(this,this.options.tooltipEvents,function(t){var i="mouseout"!==t.type?this.getSegmentsAtEvent(t):[];e.each(this.segments,function(t){t.restore(["fillColor"])}),e.each(i,function(t){t.fillColor=t.highlightColor}),this.showTooltip(i)}),this.render()},getSegmentsAtEvent:function(t){var i=[],s=e.getRelativePosition(t);return e.each(this.segments,function(t){t.inRange(s.x,s.y)&&i.push(t)},this),i},addData:function(t,i,e){var s=i||this.segments.length;this.segments.splice(s,0,new this.SegmentArc({fillColor:t.color,highlightColor:t.highlight||t.color,label:t.label,value:t.value,outerRadius:this.options.animateScale?0:this.scale.calculateCenterOffset(t.value),circumference:this.options.animateRotate?0:this.scale.getCircumference(),startAngle:1.5*Math.PI})),e||(this.reflow(),this.update())},removeData:function(t){var i=e.isNumber(t)?t:this.segments.length-1;this.segments.splice(i,1),this.reflow(),this.update()},calculateTotal:function(t){this.total=0,e.each(t,function(t){this.total+=t.value},this),this.scale.valuesCount=this.segments.length},updateScaleRange:function(t){var i=[];e.each(t,function(t){i.push(t.value)});var s=this.options.scaleOverride?{steps:this.options.scaleSteps,stepValue:this.options.scaleStepWidth,min:this.options.scaleStartValue,max:this.options.scaleStartValue+this.options.scaleSteps*this.options.scaleStepWidth}:e.calculateScaleRange(i,e.min([this.chart.width,this.chart.height])/2,this.options.scaleFontSize,this.options.scaleBeginAtZero,this.options.scaleIntegersOnly);e.extend(this.scale,s,{size:e.min([this.chart.width,this.chart.height]),xCenter:this.chart.width/2,yCenter:this.chart.height/2})},update:function(){this.calculateTotal(this.segments),e.each(this.segments,function(t){t.save()}),this.render()},reflow:function(){e.extend(this.SegmentArc.prototype,{x:this.chart.width/2,y:this.chart.height/2}),this.updateScaleRange(this.segments),this.scale.update(),e.extend(this.scale,{xCenter:this.chart.width/2,yCenter:this.chart.height/2}),e.each(this.segments,function(t){t.update({outerRadius:this.scale.calculateCenterOffset(t.value)})},this)},draw:function(t){var i=t||1;this.clear(),e.each(this.segments,function(t,e){t.transition({circumference:this.scale.getCircumference(),outerRadius:this.scale.calculateCenterOffset(t.value)},i),t.endAngle=t.startAngle+t.circumference,0===e&&(t.startAngle=1.5*Math.PI),e<this.segments.length-1&&(this.segments[e+1].startAngle=t.endAngle),t.draw()},this),this.scale.draw()}})}.call(this),function(){"use strict";var t=this,i=t.Chart,e=i.helpers;i.Type.extend({name:"Radar",defaults:{scaleShowLine:!0,angleShowLineOut:!0,scaleShowLabels:!1,scaleBeginAtZero:!0,angleLineColor:"rgba(0,0,0,.1)",angleLineWidth:1,pointLabelFontFamily:"'Arial'",pointLabelFontStyle:"normal",pointLabelFontSize:10,pointLabelFontColor:"#666",pointDot:!0,pointDotRadius:3,pointDotStrokeWidth:1,pointHitDetectionRadius:20,datasetStroke:!0,datasetStrokeWidth:2,datasetFill:!0,legendTemplate:'<ul class="<%=name.toLowerCase()%>-legend"><% for (var i=0; i<datasets.length; i++){%><li><span style="background-color:<%=datasets[i].strokeColor%>"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>'},initialize:function(t){this.PointClass=i.Point.extend({strokeWidth:this.options.pointDotStrokeWidth,radius:this.options.pointDotRadius,display:this.options.pointDot,hitDetectionRadius:this.options.pointHitDetectionRadius,ctx:this.chart.ctx}),this.datasets=[],this.buildScale(t),this.options.showTooltips&&e.bindEvents(this,this.options.tooltipEvents,function(t){var i="mouseout"!==t.type?this.getPointsAtEvent(t):[];this.eachPoints(function(t){t.restore(["fillColor","strokeColor"])}),e.each(i,function(t){t.fillColor=t.highlightFill,t.strokeColor=t.highlightStroke}),this.showTooltip(i)}),e.each(t.datasets,function(i){var s={label:i.label||null,fillColor:i.fillColor,strokeColor:i.strokeColor,pointColor:i.pointColor,pointStrokeColor:i.pointStrokeColor,points:[]};this.datasets.push(s),e.each(i.data,function(e,n){var o;this.scale.animation||(o=this.scale.getPointPosition(n,this.scale.calculateCenterOffset(e))),s.points.push(new this.PointClass({value:e,label:t.labels[n],datasetLabel:i.label,x:this.options.animation?this.scale.xCenter:o.x,y:this.options.animation?this.scale.yCenter:o.y,strokeColor:i.pointStrokeColor,fillColor:i.pointColor,highlightFill:i.pointHighlightFill||i.pointColor,highlightStroke:i.pointHighlightStroke||i.pointStrokeColor}))},this)},this),this.render()},eachPoints:function(t){e.each(this.datasets,function(i){e.each(i.points,t,this)},this)},getPointsAtEvent:function(t){var i=e.getRelativePosition(t),s=e.getAngleFromPoint({x:this.scale.xCenter,y:this.scale.yCenter},i),n=2*Math.PI/this.scale.valuesCount,o=Math.round((s.angle-1.5*Math.PI)/n),a=[];return(o>=this.scale.valuesCount||0>o)&&(o=0),s.distance<=this.scale.drawingArea&&e.each(this.datasets,function(t){a.push(t.points[o])}),a},buildScale:function(t){this.scale=new i.RadialScale({display:this.options.showScale,fontStyle:this.options.scaleFontStyle,fontSize:this.options.scaleFontSize,fontFamily:this.options.scaleFontFamily,fontColor:this.options.scaleFontColor,showLabels:this.options.scaleShowLabels,showLabelBackdrop:this.options.scaleShowLabelBackdrop,backdropColor:this.options.scaleBackdropColor,backdropPaddingY:this.options.scaleBackdropPaddingY,backdropPaddingX:this.options.scaleBackdropPaddingX,lineWidth:this.options.scaleShowLine?this.options.scaleLineWidth:0,lineColor:this.options.scaleLineColor,angleLineColor:this.options.angleLineColor,angleLineWidth:this.options.angleShowLineOut?this.options.angleLineWidth:0,pointLabelFontColor:this.options.pointLabelFontColor,pointLabelFontSize:this.options.pointLabelFontSize,pointLabelFontFamily:this.options.pointLabelFontFamily,pointLabelFontStyle:this.options.pointLabelFontStyle,height:this.chart.height,width:this.chart.width,xCenter:this.chart.width/2,yCenter:this.chart.height/2,ctx:this.chart.ctx,templateString:this.options.scaleLabel,labels:t.labels,valuesCount:t.datasets[0].data.length}),this.scale.setScaleSize(),this.updateScaleRange(t.datasets),this.scale.buildYLabels()},updateScaleRange:function(t){var i=function(){var i=[];return e.each(t,function(t){t.data?i=i.concat(t.data):e.each(t.points,function(t){i.push(t.value)})}),i}(),s=this.options.scaleOverride?{steps:this.options.scaleSteps,stepValue:this.options.scaleStepWidth,min:this.options.scaleStartValue,max:this.options.scaleStartValue+this.options.scaleSteps*this.options.scaleStepWidth}:e.calculateScaleRange(i,e.min([this.chart.width,this.chart.height])/2,this.options.scaleFontSize,this.options.scaleBeginAtZero,this.options.scaleIntegersOnly);e.extend(this.scale,s)},addData:function(t,i){this.scale.valuesCount++,e.each(t,function(t,e){var s=this.scale.getPointPosition(this.scale.valuesCount,this.scale.calculateCenterOffset(t));this.datasets[e].points.push(new this.PointClass({value:t,label:i,x:s.x,y:s.y,strokeColor:this.datasets[e].pointStrokeColor,fillColor:this.datasets[e].pointColor}))},this),this.scale.labels.push(i),this.reflow(),this.update()},removeData:function(){this.scale.valuesCount--,this.scale.labels.shift(),e.each(this.datasets,function(t){t.points.shift()},this),this.reflow(),this.update()},update:function(){this.eachPoints(function(t){t.save()}),this.reflow(),this.render()},reflow:function(){e.extend(this.scale,{width:this.chart.width,height:this.chart.height,size:e.min([this.chart.width,this.chart.height]),xCenter:this.chart.width/2,yCenter:this.chart.height/2}),this.updateScaleRange(this.datasets),this.scale.setScaleSize(),this.scale.buildYLabels()},draw:function(t){var i=t||1,s=this.chart.ctx;this.clear(),this.scale.draw(),e.each(this.datasets,function(t){e.each(t.points,function(t,e){t.hasValue()&&t.transition(this.scale.getPointPosition(e,this.scale.calculateCenterOffset(t.value)),i)},this),s.lineWidth=this.options.datasetStrokeWidth,s.strokeStyle=t.strokeColor,s.beginPath(),e.each(t.points,function(t,i){0===i?s.moveTo(t.x,t.y):s.lineTo(t.x,t.y)},this),s.closePath(),s.stroke(),s.fillStyle=t.fillColor,s.fill(),e.each(t.points,function(t){t.hasValue()&&t.draw()})},this)}})}.call(this); \ No newline at end of file diff --git a/assets/plugins/ckeditor/CHANGES.md b/assets/plugins/ckeditor/CHANGES.md deleted file mode 100644 index 249f0d41..00000000 --- a/assets/plugins/ckeditor/CHANGES.md +++ /dev/null @@ -1,378 +0,0 @@ -CKEditor 4 Changelog -==================== - -## CKEditor 4.3.1 - -**Important Notes:** - -* To match the naming convention, the `language` button is now `Language` ([#11201](http://dev.ckeditor.com/ticket/11201)). -* [Enhanced Image](http://ckeditor.com/addon/image2) button, context menu, command, and icon names match those of the [Image](http://ckeditor.com/addon/image) plugin ([#11222](http://dev.ckeditor.com/ticket/11222)). - -Fixed Issues: - -* [#11244](http://dev.ckeditor.com/ticket/11244): Changed: The [`widget.repository.checkWidgets()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.repository-method-checkWidgets) method now fires the [`widget.repository.checkWidgets`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.repository-event-checkWidgets) event, so from CKEditor 4.3.1 it is preferred to use the method rather than fire the event. -* [#11171](http://dev.ckeditor.com/ticket/11171): Fixed: [`editor.insertElement()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-insertElement) and [`editor.insertText()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-insertText) methods do not call the [`widget.repository.checkWidgets()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.repository-method-checkWidgets) method. -* [#11085](http://dev.ckeditor.com/ticket/11085): [IE8] Replaced preview generated by the [Mathematical Formulas](http://ckeditor.com/addon/mathjax) widget with a placeholder. -* [#11044](http://dev.ckeditor.com/ticket/11044): Enhanced WAI-ARIA support for the [Language](http://ckeditor.com/addon/language) plugin drop-down menu. -* [#11075](http://dev.ckeditor.com/ticket/11075): With drop-down menu button focused, pressing the *Down Arrow* key will now open the menu and focus its first option. -* [#11165](http://dev.ckeditor.com/ticket/11165): Fixed: The [File Browser](http://ckeditor.com/addon/filebrowser) plugin cannot be removed from the editor. -* [#11159](http://dev.ckeditor.com/ticket/11159): [IE9-10] [Enhanced Image](http://ckeditor.com/addon/image2): Fixed buggy discovery of image dimensions. -* [#11101](http://dev.ckeditor.com/ticket/11101): Drop-down lists no longer break when given double quotes. -* [#11077](http://dev.ckeditor.com/ticket/11077): [Enhanced Image](http://ckeditor.com/addon/image2): Empty undo step recorded when resizing the image. -* [#10853](http://dev.ckeditor.com/ticket/10853): [Enhanced Image](http://ckeditor.com/addon/image2): Widget has paragraph wrapper when de-captioning unaligned image. -* [#11198](http://dev.ckeditor.com/ticket/11198): Widgets: Drag handler is not fully visible when an inline widget is in a heading. -* [#11132](http://dev.ckeditor.com/ticket/11132): [Firefox] Fixed: Caret is lost after drag and drop of an inline widget. -* [#11182](http://dev.ckeditor.com/ticket/11182): [IE10-11] Fixed: Editor crashes (IE11) or works with minor issues (IE10) if a page is loaded in Quirks Mode. See [`env.quirks`](http://docs.ckeditor.com/#!/api/CKEDITOR.env-property-quirks) for more details. -* [#11204](http://dev.ckeditor.com/ticket/11204): Added `figure` and `figcaption` styles to the `contents.css` file so [Enhanced Image](http://ckeditor.com/addon/image2) looks nicer. -* [#11202](http://dev.ckeditor.com/ticket/11202): Fixed: No newline in [BBCode](http://ckeditor.com/addon/bbcode) mode. -* [#10890](http://dev.ckeditor.com/ticket/10890): Fixed: Error thrown when pressing the *Delete* key in a list item. -* [#10055](http://dev.ckeditor.com/ticket/10055): [IE8-10] Fixed: *Delete* pressed on a selected image causes the browser to go back. -* [#11183](http://dev.ckeditor.com/ticket/11183): Fixed: Inserting a horizontal rule or a table in multiple row selection causes a browser crash. Additionally, the [`editor.insertElement()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-insertElement) method does not insert the element into every range of a selection any more. -* [#11042](http://dev.ckeditor.com/ticket/11042): Fixed: Selection made on an element containing a non-editable element was not auto faked. -* [#11125](http://dev.ckeditor.com/ticket/11125): Fixed: Keyboard navigation through menu and drop-down items will now cycle. -* [#11011](http://dev.ckeditor.com/ticket/11011): Fixed: The [`editor.applyStyle()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-applyStyle) method removes attributes from nested elements. -* [#11179](http://dev.ckeditor.com/ticket/11179): Fixed: [`editor.destroy()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-destroy) does not cleanup content generated by the [Table Resize](http://ckeditor.com/addon/tableresize) plugin for inline editors. -* [#11237](http://dev.ckeditor.com/ticket/11237): Fixed: Table border attribute value is deleted when pasting content from Microsoft Word. -* [#11250](http://dev.ckeditor.com/ticket/11250): Fixed: HTML entities inside the `<textarea>` element are not encoded. -* [#11260](http://dev.ckeditor.com/ticket/11260): Fixed: Initially disabled buttons are not read by JAWS as disabled. -* [#11200](http://dev.ckeditor.com/ticket/11200): Added [Clipboard](http://ckeditor.com/addon/clipboard) plugin as a dependency for [Widget](http://ckeditor.com/addon/widget) to fix drag and drop. - -## CKEditor 4.3 - -New Features: - -* [#10612](http://dev.ckeditor.com/ticket/10612): Internet Explorer 11 support. -* [#10869](http://dev.ckeditor.com/ticket/10869): Widgets: Added better integration with the [Elements Path](http://ckeditor.com/addon/elementspath) plugin. -* [#10886](http://dev.ckeditor.com/ticket/10886): Widgets: Added tooltip to the drag handle. -* [#10933](http://dev.ckeditor.com/ticket/10933): Widgets: Introduced drag and drop of block widgets with the [Line Utilities](http://ckeditor.com/addon/lineutils) plugin. -* [#10936](http://dev.ckeditor.com/ticket/10936): Widget System changes for easier integration with other dialog systems. -* [#10895](http://dev.ckeditor.com/ticket/10895): [Enhanced Image](http://ckeditor.com/addon/image2): Added file browser integration. -* [#11002](http://dev.ckeditor.com/ticket/11002): Added the [`draggable`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.definition-property-draggable) option to disable drag and drop support for widgets. -* [#10937](http://dev.ckeditor.com/ticket/10937): [Mathematical Formulas](http://ckeditor.com/addon/mathjax) widget improvements: - * loading indicator ([#10948](http://dev.ckeditor.com/ticket/10948)), - * applying paragraph changes (like font color change) to iframe ([#10841](http://dev.ckeditor.com/ticket/10841)), - * Firefox and IE9 clipboard fixes ([#10857](http://dev.ckeditor.com/ticket/10857)), - * fixing same origin policy issue ([#10840](http://dev.ckeditor.com/ticket/10840)), - * fixing undo bugs ([#10842](http://dev.ckeditor.com/ticket/10842), [#10930](http://dev.ckeditor.com/ticket/10930)), - * fixing other minor bugs. -* [#10862](http://dev.ckeditor.com/ticket/10862): [Placeholder](http://ckeditor.com/addon/placeholder) plugin was rewritten as a widget. -* [#10822](http://dev.ckeditor.com/ticket/10822): Added styles system integration with non-editable elements (for example widgets) and their nested editables. Styles cannot change non-editable content and are applied in nested editable only if allowed by its type and content filter. -* [#10856](http://dev.ckeditor.com/ticket/10856): Menu buttons will now toggle the visibility of their panels when clicked multiple times. [Language](http://ckeditor.com/addon/language) plugin fixes: Added active language highlighting, added an option to remove the language. -* [#10028](http://dev.ckeditor.com/ticket/10028): New [`config.dialog_noConfirmCancel`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-dialog_noConfirmCancel) configuration option that eliminates the need to confirm closing of a dialog window when the user changed any of its fields. -* [#10848](http://dev.ckeditor.com/ticket/10848): Integrate remaining plugins ([Styles](http://ckeditor.com/addon/stylescombo), [Format](http://ckeditor.com/addon/format), [Font](http://ckeditor.com/addon/font), [Color Button](http://ckeditor.com/addon/colorbutton), [Language](http://ckeditor.com/addon/language) and [Indent](http://ckeditor.com/addon/indent)) with [active filter](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-activeFilter). -* [#10855](http://dev.ckeditor.com/ticket/10855): Change the extension of emoticons in the [BBCode](http://ckeditor.com/addon/bbcode) sample from GIF to PNG. - -Fixed Issues: - -* [#10831](http://dev.ckeditor.com/ticket/10831): [Enhanced Image](http://ckeditor.com/addon/image2): Merged `image2inline` and `image2block` into one `image2` widget. -* [#10835](http://dev.ckeditor.com/ticket/10835): [Enhanced Image](http://ckeditor.com/addon/image2): Improved visibility of the resize handle. -* [#10836](http://dev.ckeditor.com/ticket/10836): [Enhanced Image](http://ckeditor.com/addon/image2): Preserve custom mouse cursor while resizing the image. -* [#10939](http://dev.ckeditor.com/ticket/10939): [Firefox] [Enhanced Image](http://ckeditor.com/addon/image2): hovering the image causes it to change. -* [#10866](http://dev.ckeditor.com/ticket/10866): Fixed: Broken *Tab* key navigation in the [Enhanced Image](http://ckeditor.com/addon/image2) dialog window. -* [#10833](http://dev.ckeditor.com/ticket/10833): Fixed: *Lock ratio* option should be on by default in the [Enhanced Image](http://ckeditor.com/addon/image2) dialog window. -* [#10881](http://dev.ckeditor.com/ticket/10881): Various improvements to *Enter* key behavior in nested editables. -* [#10879](http://dev.ckeditor.com/ticket/10879): [Remove Format](http://ckeditor.com/addon/removeformat) should not leak from a nested editable. -* [#10877](http://dev.ckeditor.com/ticket/10877): Fixed: [WebSpellChecker](http://ckeditor.com/addon/wsc) fails to apply changes if a nested editable was focused. -* [#10877](http://dev.ckeditor.com/ticket/10877): Fixed: [SCAYT](http://ckeditor.com/addon/wsc) blocks typing in nested editables. -* [#11079](http://dev.ckeditor.com/ticket/11079): Add button icons to the [Placeholder](http://ckeditor.com/addon/placeholder) sample. -* [#10870](http://dev.ckeditor.com/ticket/10870): The `paste` command is no longer being disabled when the clipboard is empty. -* [#10854](http://dev.ckeditor.com/ticket/10854): Fixed: Firefox prepends `<br>` to `<body>`, so it is stripped by the HTML data processor. -* [#10823](http://dev.ckeditor.com/ticket/10823): Fixed: [Link](http://ckeditor.com/addon/link) plugin does not work with non-editable content. -* [#10828](http://dev.ckeditor.com/ticket/10828): [Magic Line](http://ckeditor.com/addon/magicline) integration with the Widget System. -* [#10865](http://dev.ckeditor.com/ticket/10865): Improved hiding copybin, so copying widgets works smoothly. -* [#11066](http://dev.ckeditor.com/ticket/11066): Widget's private parts use CSS reset. -* [#11027](http://dev.ckeditor.com/ticket/11027): Fixed: Block commands break on widgets; added the [`contentDomInvalidated`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-contentDomInvalidated) event. -* [#10430](http://dev.ckeditor.com/ticket/10430): Resolve dependence of the [Image](http://ckeditor.com/addon/image) plugin on the [Form Elements](http://ckeditor.com/addon/forms) plugin. -* [#10911](http://dev.ckeditor.com/ticket/10911): Fixed: Browser *Alt* hotkeys will no longer be blocked while a widget is focused. -* [#11082](http://dev.ckeditor.com/ticket/11082): Fixed: Selected widget is not copied or cut when using toolbar buttons or context menu. -* [#11083](http://dev.ckeditor.com/ticket/11083): Fixed list and div element application to block widgets. -* [#10887](http://dev.ckeditor.com/ticket/10887): Internet Explorer 8 compatibility issues related to the Widget System. -* [#11074](http://dev.ckeditor.com/ticket/11074): Temporarily disabled inline widget drag and drop, because of seriously buggy native `range#moveToPoint` method. -* [#11098](http://dev.ckeditor.com/ticket/11098): Fixed: Wrong selection position after undoing widget drag and drop. -* [#11110](http://dev.ckeditor.com/ticket/11110): Fixed: IFrame and Flash objects are being incorrectly pasted in certain conditions. -* [#11129](http://dev.ckeditor.com/ticket/11129): Page break is lost when loading data. -* [#11123](http://dev.ckeditor.com/ticket/11123): [Firefox] Widget is destroyed after being dragged outside of `<body>`. -* [#11124](http://dev.ckeditor.com/ticket/11124): Fixed the [Elements Path](http://ckeditor.com/addon/elementspath) in an editor using the [Div Editing Area](http://ckeditor.com/addon/divarea). - -## CKEditor 4.3 Beta - -New Features: - -* [#9764](http://dev.ckeditor.com/ticket/9764): Widget System. - * [Widget plugin](http://ckeditor.com/addon/widget) introducing the [Widget API](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget). - * New [`editor.enterMode`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-enterMode) and [`editor.shiftEnterMode`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-shiftEnterMode) properties &ndash; normalized versions of [`config.enterMode`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-enterMode) and [`config.shiftEnterMode`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-shiftEnterMode). - * Dynamic editor settings. Starting from CKEditor 4.3 Beta, *Enter* mode values and [content filter](http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter) instances may be changed dynamically (for example when the caret was placed in an element in which editor features should be adjusted). When you are implementing a new editor feature, you should base its behavior on [dynamic](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-activeEnterMode) or [static](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-enterMode) *Enter* mode values depending on whether this feature works in selection context or globally on editor content. - * Dynamic *Enter* mode values &ndash; [`editor.setActiveEnterMode`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-setActiveEnterMode) method, [`editor.activeEnterModeChange`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-activeEnterModeChange) event, and two properties: [`editor.activeEnterMode`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-activeEnterMode) and [`editor.activeShiftEnterMode`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-activeShiftEnterMode). - * Dynamic content filter instances &ndash; [`editor.setActiveFilter`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-setActiveFilter) method, [`editor.activeFilterChange`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-activeFilterChange) event, and [`editor.activeFilter`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-activeFilter) property. - * "Fake" selection was introduced. It makes it possible to virtually select any element when the real selection remains hidden. See the [`selection.fake`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.selection-method-fake) method. - * Default [`htmlParser.filter`](http://docs.ckeditor.com/#!/api/CKEDITOR.htmlParser.filter) rules are not applied to non-editable elements (elements with `contenteditable` attribute set to `false` and their descendants) anymore. To add a rule which will be applied to all elements you need to pass an additional argument to the [`filter.addRules`](http://docs.ckeditor.com/#!/api/CKEDITOR.htmlParser.filter-method-addRules) method. - * Dozens of new methods were introduced &ndash; most interesting ones: - * [`document.find`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.document-method-find), - * [`document.findOne`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.document-method-findOne), - * [`editable.insertElementIntoRange`](http://docs.ckeditor.com/#!/api/CKEDITOR.editable-method-insertElementIntoRange), - * [`range.moveToClosestEditablePosition`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.range-method-moveToClosestEditablePosition), - * New methods for [`htmlParser.node`](http://docs.ckeditor.com/#!/api/CKEDITOR.htmlParser.node) and [`htmlParser.element`](http://docs.ckeditor.com/#!/api/CKEDITOR.htmlParser.element). -* [#10659](http://dev.ckeditor.com/ticket/10659): New [Enhanced Image](http://ckeditor.com/addon/image2) plugin that introduces a widget with integrated image captions, an option to center images, and dynamic "click and drag" resizing. -* [#10664](http://dev.ckeditor.com/ticket/10664): New [Mathematical Formulas](http://ckeditor.com/addon/mathjax) plugin that introduces the MathJax widget. -* [#7987](https://dev.ckeditor.com/ticket/7987): New [Language](http://ckeditor.com/addon/language) plugin that implements Language toolbar button to support [WCAG 3.1.2 Language of Parts](http://www.w3.org/TR/UNDERSTANDING-WCAG20/meaning-other-lang-id.html). -* [#10708](http://dev.ckeditor.com/ticket/10708): New [smileys](http://ckeditor.com/addon/smiley). - -## CKEditor 4.2.3 - -Fixed Issues: - -* [#10994](http://dev.ckeditor.com/ticket/10994): Fixed: Loading external jQuery library when opening the [jQuery Adapter](http://docs.ckeditor.com/#!/guide/dev_jquery) sample directly from file. -* [#10975](http://dev.ckeditor.com/ticket/10975): [IE] Fixed: Error thrown while opening the color palette. -* [#9929](http://dev.ckeditor.com/ticket/9929): [Blink/WebKit] Fixed: A non-breaking space is created once a character is deleted and a regular space is typed. -* [#10963](http://dev.ckeditor.com/ticket/10963): Fixed: JAWS issue with the keyboard shortcut for [Magic Line](http://ckeditor.com/addon/magicline). -* [#11096](http://dev.ckeditor.com/ticket/11096): Fixed: TypeError: Object has no method 'is'. - -## CKEditor 4.2.2 - -Fixed Issues: - -* [#9314](http://dev.ckeditor.com/ticket/9314): Fixed: Incorrect error message on closing a dialog window without saving changs. -* [#10308](http://dev.ckeditor.com/ticket/10308): [IE10] Fixed: Unspecified error when deleting a row. -* [#10945](http://dev.ckeditor.com/ticket/10945): [Chrome] Fixed: Clicking with a mouse inside the editor does not show the caret. -* [#10912](http://dev.ckeditor.com/ticket/10912): Prevent default action when content of a non-editable link is clicked. -* [#10913](http://dev.ckeditor.com/ticket/10913): Fixed [`CKEDITOR.plugins.addExternal`](http://docs.ckeditor.com/#!/api/CKEDITOR.resourceManager-method-addExternal) not handling paths including file name specified. -* [#10666](http://dev.ckeditor.com/ticket/10666): Fixed [`CKEDITOR.tools.isArray`](http://docs.ckeditor.com/#!/api/CKEDITOR.tools-method-isArray) not working cross frame. -* [#10910](http://dev.ckeditor.com/ticket/10910): [IE9] Fixed JavaScript error thrown in Compatibility Mode when clicking and/or typing in the editing area. -* [#10868](http://dev.ckeditor.com/ticket/10868): [IE8] Prevent the browser from crashing when applying the Inline Quotation style. -* [#10915](http://dev.ckeditor.com/ticket/10915): Fixed: Invalid CSS filter in the Kama skin. -* [#10914](http://dev.ckeditor.com/ticket/10914): Plugins [Indent List](http://ckeditor.com/addon/indentlist) and [Indent Block](http://ckeditor.com/addon/indentblock) are now included in the build configuration. -* [#10812](http://dev.ckeditor.com/ticket/10812): Fixed [`range#createBookmark2`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.range-method-createBookmark2) incorrectly normalizing offsets. This bug was causing many issues: [#10850](http://dev.ckeditor.com/ticket/10850), [#10842](http://dev.ckeditor.com/ticket/10842). -* [#10951](http://dev.ckeditor.com/ticket/10951): Reviewed and optimized focus handling on panels (combo, menu buttons, color buttons, and context menu) to enhance accessibility. Fixed [#10705](http://dev.ckeditor.com/ticket/10705), [#10706](http://dev.ckeditor.com/ticket/10706) and [#10707](http://dev.ckeditor.com/ticket/10707). -* [#10704](http://dev.ckeditor.com/ticket/10704): Fixed a JAWS issue with the Select Color dialog window title not being announced. -* [#10753](http://dev.ckeditor.com/ticket/10753): The floating toolbar in inline instances now has a dedicated accessibility label. - -## CKEditor 4.2.1 - -Fixed Issues: - -* [#10301](http://dev.ckeditor.com/ticket/10301): [IE9-10] Undo fails after 3+ consecutive paste actions with a JavaScript error. -* [#10689](http://dev.ckeditor.com/ticket/10689): Save toolbar button saves only the first editor instance. -* [#10368](http://dev.ckeditor.com/ticket/10368): Move language reading direction definition (`dir`) from main language file to core. -* [#9330](http://dev.ckeditor.com/ticket/9330): Fixed pasting anchors from MS Word. -* [#8103](http://dev.ckeditor.com/ticket/8103): Fixed pasting nested lists from MS Word. -* [#9958](http://dev.ckeditor.com/ticket/9958): [IE9] Pressing the "OK" button will trigger the `onbeforeunload` event in the popup dialog. -* [#10662](http://dev.ckeditor.com/ticket/10662): Fixed styles from the Styles drop-down list not registering to the ACF in case when the [Shared Spaces plugin](http://ckeditor.com/addon/sharedspace) is used. -* [#9654](http://dev.ckeditor.com/ticket/9654): Problems with Internet Explorer 10 Quirks Mode. -* [#9816](http://dev.ckeditor.com/ticket/9816): Floating toolbar does not reposition vertically in several cases. -* [#10646](http://dev.ckeditor.com/ticket/10646): Removing a selected sublist or nested table with *Backspace/Delete* removes the parent element. -* [#10623](http://dev.ckeditor.com/ticket/10623): [WebKit] Page is scrolled when opening a drop-down list. -* [#10004](http://dev.ckeditor.com/ticket/10004): [ChromeVox] Button names are not announced. -* [#10731](http://dev.ckeditor.com/ticket/10731): [WebSpellChecker](http://ckeditor.com/addon/wsc) plugin breaks cloning of editor configuration. -* It is now possible to set per instance [WebSpellChecker](http://ckeditor.com/addon/wsc) plugin configuration instead of setting the configuration globally. - -## CKEditor 4.2 - -**Important Notes:** - -* Dropped compatibility support for Internet Explorer 7 and Firefox 3.6. - -* Both the Basic and the Standard distribution packages will not contain the new [Indent Block](http://ckeditor.com/addon/indentblock) plugin. Because of this the [Advanced Content Filter](http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter) might remove block indentations from existing contents. If you want to prevent this, either [add an appropriate ACF rule to your filter](http://docs.ckeditor.com/#!/guide/dev_allowed_content_rules) or create a custom build based on the Basic/Standard package and add the Indent Block plugin in [CKBuilder](http://ckeditor.com/builder). - -New Features: - -* [#10027](http://dev.ckeditor.com/ticket/10027): Separated list and block indentation into two plugins: [Indent List](http://ckeditor.com/addon/indentlist) and [Indent Block](http://ckeditor.com/addon/indentblock). -* [#8244](http://dev.ckeditor.com/ticket/8244): Use *(Shift+)Tab* to indent and outdent lists. -* [#10281](http://dev.ckeditor.com/ticket/10281): The [jQuery Adapter](http://docs.ckeditor.com/#!/guide/dev_jquery) is now available. Several jQuery-related issues fixed: [#8261](http://dev.ckeditor.com/ticket/8261), [#9077](http://dev.ckeditor.com/ticket/9077), [#8710](http://dev.ckeditor.com/ticket/8710), [#8530](http://dev.ckeditor.com/ticket/8530), [#9019](http://dev.ckeditor.com/ticket/9019), [#6181](http://dev.ckeditor.com/ticket/6181), [#7876](http://dev.ckeditor.com/ticket/7876), [#6906](http://dev.ckeditor.com/ticket/6906). -* [#10042](http://dev.ckeditor.com/ticket/10042): Introduced [`config.title`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-title) setting to change the human-readable title of the editor. -* [#9794](http://dev.ckeditor.com/ticket/9794): Added [`editor.onChange`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-change) event. -* [#9923](http://dev.ckeditor.com/ticket/9923): HiDPI support in the editor UI. HiDPI icons for [Moono skin](http://ckeditor.com/addon/moono) added. -* [#8031](http://dev.ckeditor.com/ticket/8031): Handle `required` attributes on `<textarea>` elements &mdash; introduced [`editor.required`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-required) event. -* [#10280](http://dev.ckeditor.com/ticket/10280): Ability to replace `<textarea>` elements with the inline editor. - -Fixed Issues: - -* [#10599](http://dev.ckeditor.com/ticket/10599): [Indent](http://ckeditor.com/addon/indent) plugin is no longer required by the [List](http://ckeditor.com/addon/list) plugin. -* [#10370](http://dev.ckeditor.com/ticket/10370): Inconsistency in data events between framed and inline editors. -* [#10438](http://dev.ckeditor.com/ticket/10438): [FF, IE] No selection is done on an editable element on executing [`editor.setData()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-setData). - -## CKEditor 4.1.3 - -New Features: - -* Added new translation: Indonesian. - -Fixed Issues: - -* [#10644](http://dev.ckeditor.com/ticket/10644): Fixed a critical bug when pasting plain text in Blink-based browsers. -* [#5189](http://dev.ckeditor.com/ticket/5189): [Find/Replace](http://ckeditor.com/addon/find) dialog window: rename "Cancel" button to "Close". -* [#10562](http://dev.ckeditor.com/ticket/10562): [Housekeeping] Unified CSS gradient filter formats in the [Moono](http://ckeditor.com/addon/moono) skin. -* [#10537](http://dev.ckeditor.com/ticket/10537): Advanced Content Filter should register a default rule for [`config.shiftEnterMode`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-shiftEnterMode). -* [#10610](http://dev.ckeditor.com/ticket/10610): [`CKEDITOR.dialog.addIframe()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dialog-static-method-addIframe) incorrectly sets the iframe size in dialog windows. - -## CKEditor 4.1.2 - -New Features: - -* Added new translation: Sinhala. - -Fixed Issues: - -* [#10339](http://dev.ckeditor.com/ticket/10339): Fixed: Error thrown when inserted data was totally stripped out after filtering and processing. -* [#10298](http://dev.ckeditor.com/ticket/10298): Fixed: Data processor breaks attributes containing protected parts. -* [#10367](http://dev.ckeditor.com/ticket/10367): Fixed: [`editable.insertText()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editable-method-insertText) loses characters when `RegExp` replace controls are being inserted. -* [#10165](http://dev.ckeditor.com/ticket/10165): [IE] Access denied error when `document.domain` has been altered. -* [#9761](http://dev.ckeditor.com/ticket/9761): Update the *Backspace* key state in [`keystrokeHandler.blockedKeystrokes`](http://docs.ckeditor.com/#!/api/CKEDITOR.keystrokeHandler-property-blockedKeystrokes) when calling [`editor.setReadOnly()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-setReadOnly). -* [#6504](http://dev.ckeditor.com/ticket/6504): Fixed: Race condition while loading several [`config.customConfig`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-customConfig) files. -* [#10146](http://dev.ckeditor.com/ticket/10146): [Firefox] Empty lines are being removed while [`config.enterMode`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-enterMode) is [`CKEDITOR.ENTER_BR`](http://docs.ckeditor.com/#!/api/CKEDITOR-property-ENTER_BR). -* [#10360](http://dev.ckeditor.com/ticket/10360): Fixed: ARIA `role="application"` should not be used for dialog windows. -* [#10361](http://dev.ckeditor.com/ticket/10361): Fixed: ARIA `role="application"` should not be used for floating panels. -* [#10510](http://dev.ckeditor.com/ticket/10510): Introduced unique voice labels to differentiate between different editor instances. -* [#9945](http://dev.ckeditor.com/ticket/9945): [iOS] Scrolling not possible on iPad. -* [#10389](http://dev.ckeditor.com/ticket/10389): Fixed: Invalid HTML in the "Text and Table" template. -* [WebSpellChecker](http://ckeditor.com/addon/wsc) plugin user interface was changed to match CKEditor 4 style. - -## CKEditor 4.1.1 - -New Features: - -* Added new translation: Albanian. - -Fixed Issues: - -* [#10172](http://dev.ckeditor.com/ticket/10172): Pressing *Delete* or *Backspace* in an empty table cell moves the cursor to the next/previous cell. -* [#10219](http://dev.ckeditor.com/ticket/10219): Error thrown when destroying an editor instance in parallel with a `mouseup` event. -* [#10265](http://dev.ckeditor.com/ticket/10265): Wrong loop type in the [File Browser](http://ckeditor.com/addon/filebrowser) plugin. -* [#10249](http://dev.ckeditor.com/ticket/10249): Wrong undo/redo states at start. -* [#10268](http://dev.ckeditor.com/ticket/10268): [Show Blocks](http://ckeditor.com/addon/showblocks) does not recover after switching to Source view. -* [#9995](http://dev.ckeditor.com/ticket/9995): HTML code in the `<textarea>` should not be modified by the [`htmlDataProcessor`](http://docs.ckeditor.com/#!/api/CKEDITOR.htmlDataProcessor). -* [#10320](http://dev.ckeditor.com/ticket/10320): [Justify](http://ckeditor.com/addon/justify) plugin should add elements to Advanced Content Filter based on current [Enter mode](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-enterMode). -* [#10260](http://dev.ckeditor.com/ticket/10260): Fixed: Advanced Content Filter blocks [`tabSpaces`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-tabSpaces). Unified `data-cke-*` attributes filtering. -* [#10315](http://dev.ckeditor.com/ticket/10315): [WebKit] [Undo manager](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.undo.UndoManager) should not record snapshots after a filling character was added/removed. -* [#10291](http://dev.ckeditor.com/ticket/10291): [WebKit] Space after a filling character should be secured. -* [#10330](http://dev.ckeditor.com/ticket/10330): [WebKit] The filling character is not removed on `keydown` in specific cases. -* [#10285](http://dev.ckeditor.com/ticket/10285): Fixed: Styled text pasted from MS Word causes an infinite loop. -* [#10131](http://dev.ckeditor.com/ticket/10131): Fixed: [`undoManager.update()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.undo.UndoManager-method-update) does not refresh the command state. -* [#10337](http://dev.ckeditor.com/ticket/10337): Fixed: Unable to remove `<s>` using [Remove Format](http://ckeditor.com/addon/removeformat). - -## CKEditor 4.1 - -Fixed Issues: - -* [#10192](http://dev.ckeditor.com/ticket/10192): Closing lists with the *Enter* key does not work with [Advanced Content Filter](http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter) in several cases. -* [#10191](http://dev.ckeditor.com/ticket/10191): Fixed allowed content rules unification, so the [`filter.allowedContent`](http://docs.ckeditor.com/#!/api/CKEDITOR.filter-property-allowedContent) property always contains rules in the same format. -* [#10224](http://dev.ckeditor.com/ticket/10224): Advanced Content Filter does not remove non-empty `<a>` elements anymore. -* Minor issues in plugin integration with Advanced Content Filter: - * [#10166](http://dev.ckeditor.com/ticket/10166): Added transformation from the `align` attribute to `float` style to preserve backward compatibility after the introduction of Advanced Content Filter. - * [#10195](http://dev.ckeditor.com/ticket/10195): [Image](http://ckeditor.com/addon/image) plugin no longer registers rules for links to Advanced Content Filter. - * [#10213](http://dev.ckeditor.com/ticket/10213): [Justify](http://ckeditor.com/addon/justify) plugin is now correctly registering rules to Advanced Content Filter when [`config.justifyClasses`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-justifyClasses) is defined. - -## CKEditor 4.1 RC - -New Features: - -* [#9829](http://dev.ckeditor.com/ticket/9829): Advanced Content Filter - data and features activation based on editor configuration. - - Brand new data filtering system that works in 2 modes: - - * Based on loaded features (toolbar items, plugins) - the data will be filtered according to what the editor in its - current configuration can handle. - * Based on [`config.allowedContent`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-allowedContent) rules - the data - will be filtered and the editor features (toolbar items, commands, keystrokes) will be enabled if they are allowed. - - See the `datafiltering.html` sample, [guides](http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter) and [`CKEDITOR.filter` API documentation](http://docs.ckeditor.com/#!/api/CKEDITOR.filter). -* [#9387](http://dev.ckeditor.com/ticket/9387): Reintroduced [Shared Spaces](http://ckeditor.com/addon/sharedspace) - the ability to display toolbar and bottom editor space in selected locations and to share them by different editor instances. -* [#9907](http://dev.ckeditor.com/ticket/9907): Added the [`contentPreview`](http://docs.ckeditor.com/#!/api/CKEDITOR-event-contentPreview) event for preview data manipulation. -* [#9713](http://dev.ckeditor.com/ticket/9713): Introduced the [Source Dialog](http://ckeditor.com/addon/sourcedialog) plugin that brings raw HTML editing for inline editor instances. -* Included in [#9829](http://dev.ckeditor.com/ticket/9829): Introduced new events, [`toHtml`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-toHtml) and [`toDataFormat`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-toDataFormat), allowing for better integration with data processing. -* [#9981](http://dev.ckeditor.com/ticket/9981): Added ability to filter [`htmlParser.fragment`](http://docs.ckeditor.com/#!/api/CKEDITOR.htmlParser.fragment), [`htmlParser.element`](http://docs.ckeditor.com/#!/api/CKEDITOR.htmlParser.element) etc. by many [`htmlParser.filter`](http://docs.ckeditor.com/#!/api/CKEDITOR.htmlParser.filter)s before writing structure to an HTML string. -* Included in [#10103](http://dev.ckeditor.com/ticket/10103): - * Introduced the [`editor.status`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-status) property to make it easier to check the current status of the editor. - * Default [`command`](http://docs.ckeditor.com/#!/api/CKEDITOR.command) state is now [`CKEDITOR.TRISTATE_DISABLE`](http://docs.ckeditor.com/#!/api/CKEDITOR-property-TRISTATE_DISABLED). It will be activated on [`editor.instanceReady`](http://docs.ckeditor.com/#!/api/CKEDITOR-event-instanceReady) or immediately after being added if the editor is already initialized. -* [#9796](http://dev.ckeditor.com/ticket/9796): Introduced `<s>` as a default tag for strikethrough, which replaces obsolete `<strike>` in HTML5. - -## CKEditor 4.0.3 - -Fixed Issues: - -* [#10196](http://dev.ckeditor.com/ticket/10196): Fixed context menus not opening with keyboard shortcuts when [Autogrow](http://ckeditor.com/addon/autogrow) is enabled. -* [#10212](http://dev.ckeditor.com/ticket/10212): [IE7-10] Undo command throws errors after multiple switches between Source and WYSIWYG view. -* [#10219](http://dev.ckeditor.com/ticket/10219): [Inline editor] Error thrown after calling [`editor.destroy()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-destroy). - -## CKEditor 4.0.2 - -Fixed Issues: - -* [#9779](http://dev.ckeditor.com/ticket/9779): Fixed overriding [`CKEDITOR.getUrl()`](http://docs.ckeditor.com/#!/api/CKEDITOR-method-getUrl) with `CKEDITOR_GETURL`. -* [#9772](http://dev.ckeditor.com/ticket/9772): Custom buttons in the dialog window footer have different look and size ([Moono](http://ckeditor.com/addon/moono), [Kama](http://ckeditor.com/addon/kama) skins). -* [#9029](http://dev.ckeditor.com/ticket/9029): Custom styles added with the [`stylesSet.add()`](http://docs.ckeditor.com/#!/api/CKEDITOR.stylesSet-method-add) are displayed in the wrong order. -* [#9887](http://dev.ckeditor.com/ticket/9887): Disable [Magic Line](http://ckeditor.com/addon/magicline) when [`editor.readOnly`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-readOnly) is set. -* [#9882](http://dev.ckeditor.com/ticket/9882): Fixed empty document title on [`editor.getData()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-getData) if set via the Document Properties dialog window. -* [#9773](http://dev.ckeditor.com/ticket/9773): Fixed rendering problems with selection fields in the Kama skin. -* [#9851](http://dev.ckeditor.com/ticket/9851): The [`selectionChange`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-selectionChange) event is not fired when mouse selection ended outside editable. -* [#9903](http://dev.ckeditor.com/ticket/9903): [Inline editor] Bad positioning of floating space with page horizontal scroll. -* [#9872](http://dev.ckeditor.com/ticket/9872): [`editor.checkDirty()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-checkDirty) returns `true` when called onload. Removed the obsolete `editor.mayBeDirty` flag. -* [#9893](http://dev.ckeditor.com/ticket/9893): [IE] Fixed broken toolbar when editing mixed direction content in Quirks mode. -* [#9845](http://dev.ckeditor.com/ticket/9845): Fixed TAB navigation in the [Link](http://ckeditor.com/addon/link) dialog window when the Anchor option is used and no anchors are available. -* [#9883](http://dev.ckeditor.com/ticket/9883): Maximizing was making the entire page editable with [divarea](http://ckeditor.com/addon/divarea)-based editors. -* [#9940](http://dev.ckeditor.com/ticket/9940): [Firefox] Navigating back to a page with the editor was making the entire page editable. -* [#9966](http://dev.ckeditor.com/ticket/9966): Fixed: Unable to type square brackets with French keyboard layout. Changed [Magic Line](http://ckeditor.com/addon/magicline) keystrokes. -* [#9507](http://dev.ckeditor.com/ticket/9507): [Firefox] Selection is moved before editable position when the editor is focused for the first time. -* [#9947](http://dev.ckeditor.com/ticket/9947): [WebKit] Editor overflows parent container in some edge cases. -* [#10105](http://dev.ckeditor.com/ticket/10105): Fixed: Broken [sourcearea](http://ckeditor.com/addon/sourcearea) view when an RTL language is set. -* [#10123](http://dev.ckeditor.com/ticket/10123): [WebKit] Fixed: Several dialog windows have broken layout since the latest WebKit release. -* [#10152](http://dev.ckeditor.com/ticket/10152): Fixed: Invalid ARIA property used on menu items. - -## CKEditor 4.0.1.1 - -Fixed Issues: - -* Security update: Added protection against XSS attack and possible path disclosure in the PHP sample. - -## CKEditor 4.0.1 - -Fixed Issues: - -* [#9655](http://dev.ckeditor.com/ticket/9655): Support for IE Quirks Mode in the new [Moono skin](http://ckeditor.com/addon/moono). -* Accessibility issues (mainly in inline editor): [#9364](http://dev.ckeditor.com/ticket/9364), [#9368](http://dev.ckeditor.com/ticket/9368), [#9369](http://dev.ckeditor.com/ticket/9369), [#9370](http://dev.ckeditor.com/ticket/9370), [#9541](http://dev.ckeditor.com/ticket/9541), [#9543](http://dev.ckeditor.com/ticket/9543), [#9841](http://dev.ckeditor.com/ticket/9841), [#9844](http://dev.ckeditor.com/ticket/9844). -* [Magic Line](http://ckeditor.com/addon/magicline) plugin: - * [#9481](http://dev.ckeditor.com/ticket/9481): Added accessibility support for Magic Line. - * [#9509](http://dev.ckeditor.com/ticket/9509): Added Magic Line support for forms. - * [#9573](http://dev.ckeditor.com/ticket/9573): Magic Line does not disappear on `mouseout` in a specific case. -* [#9754](http://dev.ckeditor.com/ticket/9754): [WebKit] Cutting & pasting simple unformatted text generates an inline wrapper in WebKit browsers. -* [#9456](http://dev.ckeditor.com/ticket/9456): [Chrome] Properly paste bullet list style from MS Word. -* [#9699](http://dev.ckeditor.com/ticket/9699), [#9758](http://dev.ckeditor.com/ticket/9758): Improved selection locking when selecting by dragging. -* Context menu: - * [#9712](http://dev.ckeditor.com/ticket/9712): Opening the context menu destroys editor focus. - * [#9366](http://dev.ckeditor.com/ticket/9366): Context menu should be displayed over the floating toolbar. - * [#9706](http://dev.ckeditor.com/ticket/9706): Context menu generates a JavaScript error in inline mode when the editor is attached to a header element. -* [#9800](http://dev.ckeditor.com/ticket/9800): Hide float panel when resizing the window. -* [#9721](http://dev.ckeditor.com/ticket/9721): Padding in content of div-based editor puts the editing area under the bottom UI space. -* [#9528](http://dev.ckeditor.com/ticket/9528): Host page `box-sizing` style should not influence the editor UI elements. -* [#9503](http://dev.ckeditor.com/ticket/9503): [Form Elements](http://ckeditor.com/addon/forms) plugin adds context menu listeners only on supported input types. Added support for `tel`, `email`, `search` and `url` input types. -* [#9769](http://dev.ckeditor.com/ticket/9769): Improved floating toolbar positioning in a narrow window. -* [#9875](http://dev.ckeditor.com/ticket/9875): Table dialog window does not populate width correctly. -* [#8675](http://dev.ckeditor.com/ticket/8675): Deleting cells in a nested table removes the outer table cell. -* [#9815](http://dev.ckeditor.com/ticket/9815): Cannot edit dialog window fields in an editor initialized in the jQuery UI modal dialog. -* [#8888](http://dev.ckeditor.com/ticket/8888): CKEditor dialog windows do not show completely in a small window. -* [#9360](http://dev.ckeditor.com/ticket/9360): [Inline editor] Blocks shown for a `<div>` element stay permanently even after the user exits editing the `<div>`. -* [#9531](http://dev.ckeditor.com/ticket/9531): [Firefox & Inline editor] Toolbar is lost when closing the Format drop-down list by clicking its button. -* [#9553](http://dev.ckeditor.com/ticket/9553): Table width incorrectly set when the `border-width` style is specified. -* [#9594](http://dev.ckeditor.com/ticket/9594): Cannot tab past CKEditor when it is in read-only mode. -* [#9658](http://dev.ckeditor.com/ticket/9658): [IE9] Justify not working on selected images. -* [#9686](http://dev.ckeditor.com/ticket/9686): Added missing contents styles for `<pre>` elements. -* [#9709](http://dev.ckeditor.com/ticket/9709): [Paste from Word](http://ckeditor.com/addon/pastefromword) should not depend on configuration from other styles. -* [#9726](http://dev.ckeditor.com/ticket/9726): Removed [Color Dialog](http://ckeditor.com/addon/colordialog) plugin dependency from [Table Tools](http://ckeditor.com/addon/tabletools). -* [#9765](http://dev.ckeditor.com/ticket/9765): Toolbar Collapse command documented incorrectly in the [Accessibility Instructions](http://ckeditor.com/addon/a11yhelp) dialog window. -* [#9771](http://dev.ckeditor.com/ticket/9771): [WebKit & Opera] Fixed scrolling issues when pasting. -* [#9787](http://dev.ckeditor.com/ticket/9787): [IE9] `onChange` is not fired for checkboxes in dialogs. -* [#9842](http://dev.ckeditor.com/ticket/9842): [Firefox 17] When opening a toolbar menu for the first time and pressing the *Down Arrow* key, focus goes to the next toolbar button instead of the menu options. -* [#9847](http://dev.ckeditor.com/ticket/9847): [Elements Path](http://ckeditor.com/addon/elementspath) should not be initialized in the inline editor. -* [#9853](http://dev.ckeditor.com/ticket/9853): [`editor.addRemoveFormatFilter()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-addRemoveFormatFilter) is exposed before it really works. -* [#8893](http://dev.ckeditor.com/ticket/8893): Value of the [`pasteFromWordCleanupFile`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-pasteFromWordCleanupFile) configuration option is now taken from the instance configuration. -* [#9693](http://dev.ckeditor.com/ticket/9693): Removed "Live Preview" checkbox from UI color picker. - - -## CKEditor 4.0 - -The first stable release of the new CKEditor 4 code line. - -The CKEditor JavaScript API has been kept compatible with CKEditor 4, whenever -possible. The list of relevant changes can be found in the [API Changes page of -the CKEditor 4 documentation][1]. - -[1]: http://docs.ckeditor.com/#!/guide/dev_api_changes "API Changes" diff --git a/assets/plugins/ckeditor/LICENSE.md b/assets/plugins/ckeditor/LICENSE.md deleted file mode 100644 index cf70e61e..00000000 --- a/assets/plugins/ckeditor/LICENSE.md +++ /dev/null @@ -1,1264 +0,0 @@ -Software License Agreement -========================== - -CKEditor - The text editor for Internet - http://ckeditor.com -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - -Licensed under the terms of any of the following licenses at your -choice: - - - GNU General Public License Version 2 or later (the "GPL") - http://www.gnu.org/licenses/gpl.html - (See Appendix A) - - - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - http://www.gnu.org/licenses/lgpl.html - (See Appendix B) - - - Mozilla Public License Version 1.1 or later (the "MPL") - http://www.mozilla.org/MPL/MPL-1.1.html - (See Appendix C) - -You are not required to, but if you want to explicitly declare the -license you have chosen to be bound to when using, reproducing, -modifying and distributing this software, just include a text file -titled "legal.txt" in your version of this software, indicating your -license choice. In any case, your choice will not restrict any -recipient of your version of this software to use, reproduce, modify -and distribute this software under any of the above licenses. - -Sources of Intellectual Property Included in CKEditor ------------------------------------------------------ - -Where not otherwise indicated, all CKEditor content is authored by -CKSource engineers and consists of CKSource-owned intellectual -property. In some specific instances, CKEditor will incorporate work -done by developers outside of CKSource with their express permission. - -Trademarks ----------- - -CKEditor is a trademark of CKSource - Frederico Knabben. All other brand -and product names are trademarks, registered trademarks or service -marks of their respective holders. - ---- - -Appendix A: The GPL License ---------------------------- - -GNU GENERAL PUBLIC LICENSE -Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software-to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - -GNU GENERAL PUBLIC LICENSE -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - -NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - -END OF TERMS AND CONDITIONS - - -Appendix B: The LGPL License ----------------------------- - -GNU LESSER GENERAL PUBLIC LICENSE -Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - -Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software-to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages-typically libraries-of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - -GNU LESSER GENERAL PUBLIC LICENSE -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - -NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - -END OF TERMS AND CONDITIONS - - -Appendix C: The MPL License ---------------------------- - -MOZILLA PUBLIC LICENSE -Version 1.1 - -1. Definitions. - - 1.0.1. "Commercial Use" means distribution or otherwise making the - Covered Code available to a third party. - - 1.1. "Contributor" means each entity that creates or contributes to - the creation of Modifications. - - 1.2. "Contributor Version" means the combination of the Original - Code, prior Modifications used by a Contributor, and the Modifications - made by that particular Contributor. - - 1.3. "Covered Code" means the Original Code or Modifications or the - combination of the Original Code and Modifications, in each case - including portions thereof. - - 1.4. "Electronic Distribution Mechanism" means a mechanism generally - accepted in the software development community for the electronic - transfer of data. - - 1.5. "Executable" means Covered Code in any form other than Source - Code. - - 1.6. "Initial Developer" means the individual or entity identified - as the Initial Developer in the Source Code notice required by Exhibit - A. - - 1.7. "Larger Work" means a work which combines Covered Code or - portions thereof with code not governed by the terms of this License. - - 1.8. "License" means this document. - - 1.8.1. "Licensable" means having the right to grant, to the maximum - extent possible, whether at the time of the initial grant or - subsequently acquired, any and all of the rights conveyed herein. - - 1.9. "Modifications" means any addition to or deletion from the - substance or structure of either the Original Code or any previous - Modifications. When Covered Code is released as a series of files, a - Modification is: - A. Any addition to or deletion from the contents of a file - containing Original Code or previous Modifications. - - B. Any new file that contains any part of the Original Code or - previous Modifications. - - 1.10. "Original Code" means Source Code of computer software code - which is described in the Source Code notice required by Exhibit A as - Original Code, and which, at the time of its release under this - License is not already Covered Code governed by this License. - - 1.10.1. "Patent Claims" means any patent claim(s), now owned or - hereafter acquired, including without limitation, method, process, - and apparatus claims, in any patent Licensable by grantor. - - 1.11. "Source Code" means the preferred form of the Covered Code for - making modifications to it, including all modules it contains, plus - any associated interface definition files, scripts used to control - compilation and installation of an Executable, or source code - differential comparisons against either the Original Code or another - well known, available Covered Code of the Contributor's choice. The - Source Code can be in a compressed or archival form, provided the - appropriate decompression or de-archiving software is widely available - for no charge. - - 1.12. "You" (or "Your") means an individual or a legal entity - exercising rights under, and complying with all of the terms of, this - License or a future version of this License issued under Section 6.1. - For legal entities, "You" includes any entity which controls, is - controlled by, or is under common control with You. For purposes of - this definition, "control" means (a) the power, direct or indirect, - to cause the direction or management of such entity, whether by - contract or otherwise, or (b) ownership of more than fifty percent - (50%) of the outstanding shares or beneficial ownership of such - entity. - -2. Source Code License. - - 2.1. The Initial Developer Grant. - The Initial Developer hereby grants You a world-wide, royalty-free, - non-exclusive license, subject to third party intellectual property - claims: - (a) under intellectual property rights (other than patent or - trademark) Licensable by Initial Developer to use, reproduce, - modify, display, perform, sublicense and distribute the Original - Code (or portions thereof) with or without Modifications, and/or - as part of a Larger Work; and - - (b) under Patents Claims infringed by the making, using or - selling of Original Code, to make, have made, use, practice, - sell, and offer for sale, and/or otherwise dispose of the - Original Code (or portions thereof). - - (c) the licenses granted in this Section 2.1(a) and (b) are - effective on the date Initial Developer first distributes - Original Code under the terms of this License. - - (d) Notwithstanding Section 2.1(b) above, no patent license is - granted: 1) for code that You delete from the Original Code; 2) - separate from the Original Code; or 3) for infringements caused - by: i) the modification of the Original Code or ii) the - combination of the Original Code with other software or devices. - - 2.2. Contributor Grant. - Subject to third party intellectual property claims, each Contributor - hereby grants You a world-wide, royalty-free, non-exclusive license - - (a) under intellectual property rights (other than patent or - trademark) Licensable by Contributor, to use, reproduce, modify, - display, perform, sublicense and distribute the Modifications - created by such Contributor (or portions thereof) either on an - unmodified basis, with other Modifications, as Covered Code - and/or as part of a Larger Work; and - - (b) under Patent Claims infringed by the making, using, or - selling of Modifications made by that Contributor either alone - and/or in combination with its Contributor Version (or portions - of such combination), to make, use, sell, offer for sale, have - made, and/or otherwise dispose of: 1) Modifications made by that - Contributor (or portions thereof); and 2) the combination of - Modifications made by that Contributor with its Contributor - Version (or portions of such combination). - - (c) the licenses granted in Sections 2.2(a) and 2.2(b) are - effective on the date Contributor first makes Commercial Use of - the Covered Code. - - (d) Notwithstanding Section 2.2(b) above, no patent license is - granted: 1) for any code that Contributor has deleted from the - Contributor Version; 2) separate from the Contributor Version; - 3) for infringements caused by: i) third party modifications of - Contributor Version or ii) the combination of Modifications made - by that Contributor with other software (except as part of the - Contributor Version) or other devices; or 4) under Patent Claims - infringed by Covered Code in the absence of Modifications made by - that Contributor. - -3. Distribution Obligations. - - 3.1. Application of License. - The Modifications which You create or to which You contribute are - governed by the terms of this License, including without limitation - Section 2.2. The Source Code version of Covered Code may be - distributed only under the terms of this License or a future version - of this License released under Section 6.1, and You must include a - copy of this License with every copy of the Source Code You - distribute. You may not offer or impose any terms on any Source Code - version that alters or restricts the applicable version of this - License or the recipients' rights hereunder. However, You may include - an additional document offering the additional rights described in - Section 3.5. - - 3.2. Availability of Source Code. - Any Modification which You create or to which You contribute must be - made available in Source Code form under the terms of this License - either on the same media as an Executable version or via an accepted - Electronic Distribution Mechanism to anyone to whom you made an - Executable version available; and if made available via Electronic - Distribution Mechanism, must remain available for at least twelve (12) - months after the date it initially became available, or at least six - (6) months after a subsequent version of that particular Modification - has been made available to such recipients. You are responsible for - ensuring that the Source Code version remains available even if the - Electronic Distribution Mechanism is maintained by a third party. - - 3.3. Description of Modifications. - You must cause all Covered Code to which You contribute to contain a - file documenting the changes You made to create that Covered Code and - the date of any change. You must include a prominent statement that - the Modification is derived, directly or indirectly, from Original - Code provided by the Initial Developer and including the name of the - Initial Developer in (a) the Source Code, and (b) in any notice in an - Executable version or related documentation in which You describe the - origin or ownership of the Covered Code. - - 3.4. Intellectual Property Matters - (a) Third Party Claims. - If Contributor has knowledge that a license under a third party's - intellectual property rights is required to exercise the rights - granted by such Contributor under Sections 2.1 or 2.2, - Contributor must include a text file with the Source Code - distribution titled "LEGAL" which describes the claim and the - party making the claim in sufficient detail that a recipient will - know whom to contact. If Contributor obtains such knowledge after - the Modification is made available as described in Section 3.2, - Contributor shall promptly modify the LEGAL file in all copies - Contributor makes available thereafter and shall take other steps - (such as notifying appropriate mailing lists or newsgroups) - reasonably calculated to inform those who received the Covered - Code that new knowledge has been obtained. - - (b) Contributor APIs. - If Contributor's Modifications include an application programming - interface and Contributor has knowledge of patent licenses which - are reasonably necessary to implement that API, Contributor must - also include this information in the LEGAL file. - - (c) Representations. - Contributor represents that, except as disclosed pursuant to - Section 3.4(a) above, Contributor believes that Contributor's - Modifications are Contributor's original creation(s) and/or - Contributor has sufficient rights to grant the rights conveyed by - this License. - - 3.5. Required Notices. - You must duplicate the notice in Exhibit A in each file of the Source - Code. If it is not possible to put such notice in a particular Source - Code file due to its structure, then You must include such notice in a - location (such as a relevant directory) where a user would be likely - to look for such a notice. If You created one or more Modification(s) - You may add your name as a Contributor to the notice described in - Exhibit A. You must also duplicate this License in any documentation - for the Source Code where You describe recipients' rights or ownership - rights relating to Covered Code. You may choose to offer, and to - charge a fee for, warranty, support, indemnity or liability - obligations to one or more recipients of Covered Code. However, You - may do so only on Your own behalf, and not on behalf of the Initial - Developer or any Contributor. You must make it absolutely clear than - any such warranty, support, indemnity or liability obligation is - offered by You alone, and You hereby agree to indemnify the Initial - Developer and every Contributor for any liability incurred by the - Initial Developer or such Contributor as a result of warranty, - support, indemnity or liability terms You offer. - - 3.6. Distribution of Executable Versions. - You may distribute Covered Code in Executable form only if the - requirements of Section 3.1-3.5 have been met for that Covered Code, - and if You include a notice stating that the Source Code version of - the Covered Code is available under the terms of this License, - including a description of how and where You have fulfilled the - obligations of Section 3.2. The notice must be conspicuously included - in any notice in an Executable version, related documentation or - collateral in which You describe recipients' rights relating to the - Covered Code. You may distribute the Executable version of Covered - Code or ownership rights under a license of Your choice, which may - contain terms different from this License, provided that You are in - compliance with the terms of this License and that the license for the - Executable version does not attempt to limit or alter the recipient's - rights in the Source Code version from the rights set forth in this - License. If You distribute the Executable version under a different - license You must make it absolutely clear that any terms which differ - from this License are offered by You alone, not by the Initial - Developer or any Contributor. You hereby agree to indemnify the - Initial Developer and every Contributor for any liability incurred by - the Initial Developer or such Contributor as a result of any such - terms You offer. - - 3.7. Larger Works. - You may create a Larger Work by combining Covered Code with other code - not governed by the terms of this License and distribute the Larger - Work as a single product. In such a case, You must make sure the - requirements of this License are fulfilled for the Covered Code. - -4. Inability to Comply Due to Statute or Regulation. - - If it is impossible for You to comply with any of the terms of this - License with respect to some or all of the Covered Code due to - statute, judicial order, or regulation then You must: (a) comply with - the terms of this License to the maximum extent possible; and (b) - describe the limitations and the code they affect. Such description - must be included in the LEGAL file described in Section 3.4 and must - be included with all distributions of the Source Code. Except to the - extent prohibited by statute or regulation, such description must be - sufficiently detailed for a recipient of ordinary skill to be able to - understand it. - -5. Application of this License. - - This License applies to code to which the Initial Developer has - attached the notice in Exhibit A and to related Covered Code. - -6. Versions of the License. - - 6.1. New Versions. - Netscape Communications Corporation ("Netscape") may publish revised - and/or new versions of the License from time to time. Each version - will be given a distinguishing version number. - - 6.2. Effect of New Versions. - Once Covered Code has been published under a particular version of the - License, You may always continue to use it under the terms of that - version. You may also choose to use such Covered Code under the terms - of any subsequent version of the License published by Netscape. No one - other than Netscape has the right to modify the terms applicable to - Covered Code created under this License. - - 6.3. Derivative Works. - If You create or use a modified version of this License (which you may - only do in order to apply it to code which is not already Covered Code - governed by this License), You must (a) rename Your license so that - the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", - "MPL", "NPL" or any confusingly similar phrase do not appear in your - license (except to note that your license differs from this License) - and (b) otherwise make it clear that Your version of the license - contains terms which differ from the Mozilla Public License and - Netscape Public License. (Filling in the name of the Initial - Developer, Original Code or Contributor in the notice described in - Exhibit A shall not of themselves be deemed to be modifications of - this License.) - -7. DISCLAIMER OF WARRANTY. - - COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, - WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF - DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. - THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE - IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, - YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE - COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER - OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF - ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. - -8. TERMINATION. - - 8.1. This License and the rights granted hereunder will terminate - automatically if You fail to comply with terms herein and fail to cure - such breach within 30 days of becoming aware of the breach. All - sublicenses to the Covered Code which are properly granted shall - survive any termination of this License. Provisions which, by their - nature, must remain in effect beyond the termination of this License - shall survive. - - 8.2. If You initiate litigation by asserting a patent infringement - claim (excluding declatory judgment actions) against Initial Developer - or a Contributor (the Initial Developer or Contributor against whom - You file such action is referred to as "Participant") alleging that: - - (a) such Participant's Contributor Version directly or indirectly - infringes any patent, then any and all rights granted by such - Participant to You under Sections 2.1 and/or 2.2 of this License - shall, upon 60 days notice from Participant terminate prospectively, - unless if within 60 days after receipt of notice You either: (i) - agree in writing to pay Participant a mutually agreeable reasonable - royalty for Your past and future use of Modifications made by such - Participant, or (ii) withdraw Your litigation claim with respect to - the Contributor Version against such Participant. If within 60 days - of notice, a reasonable royalty and payment arrangement are not - mutually agreed upon in writing by the parties or the litigation claim - is not withdrawn, the rights granted by Participant to You under - Sections 2.1 and/or 2.2 automatically terminate at the expiration of - the 60 day notice period specified above. - - (b) any software, hardware, or device, other than such Participant's - Contributor Version, directly or indirectly infringes any patent, then - any rights granted to You by such Participant under Sections 2.1(b) - and 2.2(b) are revoked effective as of the date You first made, used, - sold, distributed, or had made, Modifications made by that - Participant. - - 8.3. If You assert a patent infringement claim against Participant - alleging that such Participant's Contributor Version directly or - indirectly infringes any patent where such claim is resolved (such as - by license or settlement) prior to the initiation of patent - infringement litigation, then the reasonable value of the licenses - granted by such Participant under Sections 2.1 or 2.2 shall be taken - into account in determining the amount or value of any payment or - license. - - 8.4. In the event of termination under Sections 8.1 or 8.2 above, - all end user license agreements (excluding distributors and resellers) - which have been validly granted by You or any distributor hereunder - prior to termination shall survive termination. - -9. LIMITATION OF LIABILITY. - - UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT - (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL - DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, - OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR - ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY - CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, - WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER - COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN - INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF - LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY - RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW - PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE - EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO - THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. - -10. U.S. GOVERNMENT END USERS. - - The Covered Code is a "commercial item," as that term is defined in - 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer - software" and "commercial computer software documentation," as such - terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 - C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), - all U.S. Government End Users acquire Covered Code with only those - rights set forth herein. - -11. MISCELLANEOUS. - - This License represents the complete agreement concerning subject - matter hereof. If any provision of this License is held to be - unenforceable, such provision shall be reformed only to the extent - necessary to make it enforceable. This License shall be governed by - California law provisions (except to the extent applicable law, if - any, provides otherwise), excluding its conflict-of-law provisions. - With respect to disputes in which at least one party is a citizen of, - or an entity chartered or registered to do business in the United - States of America, any litigation relating to this License shall be - subject to the jurisdiction of the Federal Courts of the Northern - District of California, with venue lying in Santa Clara County, - California, with the losing party responsible for costs, including - without limitation, court costs and reasonable attorneys' fees and - expenses. The application of the United Nations Convention on - Contracts for the International Sale of Goods is expressly excluded. - Any law or regulation which provides that the language of a contract - shall be construed against the drafter shall not apply to this - License. - -12. RESPONSIBILITY FOR CLAIMS. - - As between Initial Developer and the Contributors, each party is - responsible for claims and damages arising, directly or indirectly, - out of its utilization of rights under this License and You agree to - work with Initial Developer and Contributors to distribute such - responsibility on an equitable basis. Nothing herein is intended or - shall be deemed to constitute any admission of liability. - -13. MULTIPLE-LICENSED CODE. - - Initial Developer may designate portions of the Covered Code as - "Multiple-Licensed". "Multiple-Licensed" means that the Initial - Developer permits you to utilize portions of the Covered Code under - Your choice of the NPL or the alternative licenses, if any, specified - by the Initial Developer in the file described in Exhibit A. - -EXHIBIT A -Mozilla Public License. - - ``The contents of this file are subject to the Mozilla Public License - Version 1.1 (the "License"); you may not use this file except in - compliance with the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the - License for the specific language governing rights and limitations - under the License. - - The Original Code is ______________________________________. - - The Initial Developer of the Original Code is ________________________. - Portions created by ______________________ are Copyright (C) ______ - _______________________. All Rights Reserved. - - Contributor(s): ______________________________________. - - Alternatively, the contents of this file may be used under the terms - of the _____ license (the "[___] License"), in which case the - provisions of [______] License are applicable instead of those - above. If you wish to allow use of your version of this file only - under the terms of the [____] License and not to allow others to use - your version of this file under the MPL, indicate your decision by - deleting the provisions above and replace them with the notice and - other provisions required by the [___] License. If you do not delete - the provisions above, a recipient may use your version of this file - under either the MPL or the [___] License." - - [NOTE: The text of this Exhibit A may differ slightly from the text of - the notices in the Source Code files of the Original Code. You should - use the text of this Exhibit A rather than the text found in the - Original Code Source Code for Your Modifications.] diff --git a/assets/plugins/ckeditor/README.md b/assets/plugins/ckeditor/README.md deleted file mode 100644 index 378c267e..00000000 --- a/assets/plugins/ckeditor/README.md +++ /dev/null @@ -1,39 +0,0 @@ -CKEditor 4 -========== - -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -http://ckeditor.com - See LICENSE.md for license information. - -CKEditor is a text editor to be used inside web pages. It's not a replacement -for desktop text editors like Word or OpenOffice, but a component to be used as -part of web applications and websites. - -## Documentation - -The full editor documentation is available online at the following address: -http://docs.ckeditor.com - -## Installation - -Installing CKEditor is an easy task. Just follow these simple steps: - - 1. **Download** the latest version from the CKEditor website: - http://ckeditor.com. You should have already completed this step, but be - sure you have the very latest version. - 2. **Extract** (decompress) the downloaded file into the root of your website. - -**Note:** CKEditor is by default installed in the `ckeditor` folder. You can -place the files in whichever you want though. - -## Checking Your Installation - -The editor comes with a few sample pages that can be used to verify that -installation proceeded properly. Take a look at the `samples` directory. - -To test your installation, just call the following page at your website: - - http://<your site>/<CKEditor installation path>/samples/index.html - -For example: - - http://www.example.com/ckeditor/samples/index.html diff --git a/assets/plugins/ckeditor/adapters/jquery.js b/assets/plugins/ckeditor/adapters/jquery.js deleted file mode 100644 index 2851ea44..00000000 --- a/assets/plugins/ckeditor/adapters/jquery.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -(function(a){CKEDITOR.config.jqueryOverrideVal="undefined"==typeof CKEDITOR.config.jqueryOverrideVal?!0:CKEDITOR.config.jqueryOverrideVal;"undefined"!=typeof a&&(a.extend(a.fn,{ckeditorGet:function(){var a=this.eq(0).data("ckeditorInstance");if(!a)throw"CKEditor is not initialized yet, use ckeditor() with a callback.";return a},ckeditor:function(g,d){if(!CKEDITOR.env.isCompatible)throw Error("The environment is incompatible.");if(!a.isFunction(g))var k=d,d=g,g=k;var i=[],d=d||{};this.each(function(){var b= -a(this),c=b.data("ckeditorInstance"),f=b.data("_ckeditorInstanceLock"),h=this,j=new a.Deferred;i.push(j.promise());if(c&&!f)g&&g.apply(c,[this]),j.resolve();else if(f)c.once("instanceReady",function(){setTimeout(function(){c.element?(c.element.$==h&&g&&g.apply(c,[h]),j.resolve()):setTimeout(arguments.callee,100)},0)},null,null,9999);else{if(d.autoUpdateElement||"undefined"==typeof d.autoUpdateElement&&CKEDITOR.config.autoUpdateElement)d.autoUpdateElementJquery=!0;d.autoUpdateElement=!1;b.data("_ckeditorInstanceLock", -!0);c=a(this).is("textarea")?CKEDITOR.replace(h,d):CKEDITOR.inline(h,d);b.data("ckeditorInstance",c);c.on("instanceReady",function(d){var e=d.editor;setTimeout(function(){if(e.element){d.removeListener();e.on("dataReady",function(){b.trigger("dataReady.ckeditor",[e])});e.on("setData",function(a){b.trigger("setData.ckeditor",[e,a.data])});e.on("getData",function(a){b.trigger("getData.ckeditor",[e,a.data])},999);e.on("destroy",function(){b.trigger("destroy.ckeditor",[e])});e.on("save",function(){a(h.form).submit(); -return!1},null,null,20);if(e.config.autoUpdateElementJquery&&b.is("textarea")&&a(h.form).length){var c=function(){b.ckeditor(function(){e.updateElement()})};a(h.form).submit(c);a(h.form).bind("form-pre-serialize",c);b.bind("destroy.ckeditor",function(){a(h.form).unbind("submit",c);a(h.form).unbind("form-pre-serialize",c)})}e.on("destroy",function(){b.removeData("ckeditorInstance")});b.removeData("_ckeditorInstanceLock");b.trigger("instanceReady.ckeditor",[e]);g&&g.apply(e,[h]);j.resolve()}else setTimeout(arguments.callee, -100)},0)},null,null,9999)}});var f=new a.Deferred;this.promise=f.promise();a.when.apply(this,i).then(function(){f.resolve()});this.editor=this.eq(0).data("ckeditorInstance");return this}}),CKEDITOR.config.jqueryOverrideVal&&(a.fn.val=CKEDITOR.tools.override(a.fn.val,function(g){return function(d){if(arguments.length){var k=this,i=[],f=this.each(function(){var b=a(this),c=b.data("ckeditorInstance");if(b.is("textarea")&&c){var f=new a.Deferred;c.setData(d,function(){f.resolve()});i.push(f.promise()); -return!0}return g.call(b,d)});if(i.length){var b=new a.Deferred;a.when.apply(this,i).done(function(){b.resolveWith(k)});return b.promise()}return f}var f=a(this).eq(0),c=f.data("ckeditorInstance");return f.is("textarea")&&c?c.getData():g.call(f)}})))})(window.jQuery); \ No newline at end of file diff --git a/assets/plugins/ckeditor/build-config.js b/assets/plugins/ckeditor/build-config.js deleted file mode 100644 index 59e52e30..00000000 --- a/assets/plugins/ckeditor/build-config.js +++ /dev/null @@ -1,142 +0,0 @@ - -/** - * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.html or http://ckeditor.com/license - */ - -/** - * This file was added automatically by CKEditor builder. - * You may re-use it at any time at http://ckeditor.com/builder to build CKEditor again. - * - * NOTE: - * This file is not used by CKEditor, you may remove it. - * Changing this file will not change your CKEditor configuration. - */ - -var CKBUILDER_CONFIG = { - skin: 'moono', - preset: 'standard', - ignore: [ - 'dev', - '.gitignore', - '.gitattributes', - 'README.md', - '.mailmap' - ], - plugins : { - 'about' : 1, - 'a11yhelp' : 1, - 'basicstyles' : 1, - 'blockquote' : 1, - 'clipboard' : 1, - 'contextmenu' : 1, - 'resize' : 1, - 'toolbar' : 1, - 'elementspath' : 1, - 'enterkey' : 1, - 'entities' : 1, - 'filebrowser' : 1, - 'floatingspace' : 1, - 'format' : 1, - 'horizontalrule' : 1, - 'htmlwriter' : 1, - 'wysiwygarea' : 1, - 'image' : 1, - 'indentlist' : 1, - 'link' : 1, - 'list' : 1, - 'magicline' : 1, - 'maximize' : 1, - 'pastetext' : 1, - 'pastefromword' : 1, - 'removeformat' : 1, - 'sourcearea' : 1, - 'specialchar' : 1, - 'scayt' : 1, - 'stylescombo' : 1, - 'tab' : 1, - 'table' : 1, - 'tabletools' : 1, - 'undo' : 1, - 'wsc' : 1, - 'dialog' : 1, - 'dialogui' : 1, - 'menu' : 1, - 'floatpanel' : 1, - 'panel' : 1, - 'button' : 1, - 'popup' : 1, - 'richcombo' : 1, - 'listblock' : 1, - 'indent' : 1, - 'fakeobjects' : 1, - 'menubutton' : 1 - }, - languages : { - 'af' : 1, - 'sq' : 1, - 'ar' : 1, - 'eu' : 1, - 'bn' : 1, - 'bs' : 1, - 'bg' : 1, - 'ca' : 1, - 'zh-cn' : 1, - 'zh' : 1, - 'hr' : 1, - 'cs' : 1, - 'da' : 1, - 'nl' : 1, - 'en' : 1, - 'en-au' : 1, - 'en-ca' : 1, - 'en-gb' : 1, - 'eo' : 1, - 'et' : 1, - 'fo' : 1, - 'fi' : 1, - 'fr' : 1, - 'fr-ca' : 1, - 'gl' : 1, - 'ka' : 1, - 'de' : 1, - 'el' : 1, - 'gu' : 1, - 'he' : 1, - 'hi' : 1, - 'hu' : 1, - 'is' : 1, - 'id' : 1, - 'it' : 1, - 'ja' : 1, - 'km' : 1, - 'ko' : 1, - 'ku' : 1, - 'lv' : 1, - 'lt' : 1, - 'mk' : 1, - 'ms' : 1, - 'mn' : 1, - 'no' : 1, - 'nb' : 1, - 'fa' : 1, - 'pl' : 1, - 'pt-br' : 1, - 'pt' : 1, - 'ro' : 1, - 'ru' : 1, - 'sr' : 1, - 'sr-latn' : 1, - 'si' : 1, - 'sk' : 1, - 'sl' : 1, - 'es' : 1, - 'sv' : 1, - 'th' : 1, - 'tr' : 1, - 'ug' : 1, - 'uk' : 1, - 'vi' : 1, - 'cy' : 1 - } -}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/ckeditor.js b/assets/plugins/ckeditor/ckeditor.js deleted file mode 100644 index 90b26d8f..00000000 --- a/assets/plugins/ckeditor/ckeditor.js +++ /dev/null @@ -1,900 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -(function(){if(window.CKEDITOR&&window.CKEDITOR.dom)return;window.CKEDITOR||(window.CKEDITOR=function(){var a={timestamp:"DBAA",version:"4.3.1",revision:"3ecd0b8",rnd:Math.floor(900*Math.random())+100,_:{pending:[]},status:"unloaded",basePath:function(){var b=window.CKEDITOR_BASEPATH||"";if(!b)for(var d=document.getElementsByTagName("script"),a=0;a<d.length;a++){var e=d[a].src.match(/(^|.*[\\\/])ckeditor(?:_basic)?(?:_source)?.js(?:\?.*)?$/i);if(e){b=e[1];break}}-1==b.indexOf(":/")&&(b=0===b.indexOf("/")?location.href.match(/^.*?:\/\/[^\/]*/)[0]+b:location.href.match(/^[^\?]*\/(?:)/)[0]+ -b);if(!b)throw'The CKEditor installation path could not be automatically detected. Please set the global variable "CKEDITOR_BASEPATH" before creating editor instances.';return b}(),getUrl:function(b){-1==b.indexOf(":/")&&0!==b.indexOf("/")&&(b=this.basePath+b);this.timestamp&&("/"!=b.charAt(b.length-1)&&!/[&?]t=/.test(b))&&(b+=(0<=b.indexOf("?")?"&":"?")+"t="+this.timestamp);return b},domReady:function(){function b(){try{document.addEventListener?(document.removeEventListener("DOMContentLoaded",b, -!1),d()):document.attachEvent&&"complete"===document.readyState&&(document.detachEvent("onreadystatechange",b),d())}catch(a){}}function d(){for(var d;d=a.shift();)d()}var a=[];return function(d){a.push(d);"complete"===document.readyState&&setTimeout(b,1);if(1==a.length)if(document.addEventListener)document.addEventListener("DOMContentLoaded",b,!1),window.addEventListener("load",b,!1);else if(document.attachEvent){document.attachEvent("onreadystatechange",b);window.attachEvent("onload",b);d=!1;try{d= -!window.frameElement}catch(e){}if(document.documentElement.doScroll&&d){var i=function(){try{document.documentElement.doScroll("left")}catch(d){setTimeout(i,1);return}b()};i()}}}}()},e=window.CKEDITOR_GETURL;if(e){var b=a.getUrl;a.getUrl=function(c){return e.call(a,c)||b.call(a,c)}}return a}()); -CKEDITOR.event||(CKEDITOR.event=function(){},CKEDITOR.event.implementOn=function(a){var e=CKEDITOR.event.prototype,b;for(b in e)a[b]==void 0&&(a[b]=e[b])},CKEDITOR.event.prototype=function(){function a(a){var d=e(this);return d[a]||(d[a]=new b(a))}var e=function(b){b=b.getPrivate&&b.getPrivate()||b._||(b._={});return b.events||(b.events={})},b=function(b){this.name=b;this.listeners=[]};b.prototype={getListenerIndex:function(b){for(var d=0,a=this.listeners;d<a.length;d++)if(a[d].fn==b)return d;return-1}}; -return{define:function(b,d){var h=a.call(this,b);CKEDITOR.tools.extend(h,d,true)},on:function(b,d,h,e,n){function i(a,f,o,q){a={name:b,sender:this,editor:a,data:f,listenerData:e,stop:o,cancel:q,removeListener:j};return d.call(h,a)===false?false:a.data}function j(){q.removeListener(b,d)}var o=a.call(this,b);if(o.getListenerIndex(d)<0){o=o.listeners;h||(h=this);isNaN(n)&&(n=10);var q=this;i.fn=d;i.priority=n;for(var s=o.length-1;s>=0;s--)if(o[s].priority<=n){o.splice(s+1,0,i);return{removeListener:j}}o.unshift(i)}return{removeListener:j}}, -once:function(){var b=arguments[1];arguments[1]=function(d){d.removeListener();return b.apply(this,arguments)};return this.on.apply(this,arguments)},capture:function(){CKEDITOR.event.useCapture=1;var b=this.on.apply(this,arguments);CKEDITOR.event.useCapture=0;return b},fire:function(){var b=0,d=function(){b=1},a=0,g=function(){a=1};return function(n,i,j){var o=e(this)[n],n=b,q=a;b=a=0;if(o){var s=o.listeners;if(s.length)for(var s=s.slice(0),u,f=0;f<s.length;f++){if(o.errorProof)try{u=s[f].call(this, -j,i,d,g)}catch(p){}else u=s[f].call(this,j,i,d,g);u===false?a=1:typeof u!="undefined"&&(i=u);if(b||a)break}}i=a?false:typeof i=="undefined"?true:i;b=n;a=q;return i}}(),fireOnce:function(b,d,a){d=this.fire(b,d,a);delete e(this)[b];return d},removeListener:function(b,d){var a=e(this)[b];if(a){var g=a.getListenerIndex(d);g>=0&&a.listeners.splice(g,1)}},removeAllListeners:function(){var b=e(this),d;for(d in b)delete b[d]},hasListeners:function(b){return(b=e(this)[b])&&b.listeners.length>0}}}()); -CKEDITOR.editor||(CKEDITOR.editor=function(){CKEDITOR._.pending.push([this,arguments]);CKEDITOR.event.call(this)},CKEDITOR.editor.prototype.fire=function(a,e){a in{instanceReady:1,loaded:1}&&(this[a]=true);return CKEDITOR.event.prototype.fire.call(this,a,e,this)},CKEDITOR.editor.prototype.fireOnce=function(a,e){a in{instanceReady:1,loaded:1}&&(this[a]=true);return CKEDITOR.event.prototype.fireOnce.call(this,a,e,this)},CKEDITOR.event.implementOn(CKEDITOR.editor.prototype)); -CKEDITOR.env||(CKEDITOR.env=function(){var a=navigator.userAgent.toLowerCase(),e=window.opera,b={ie:a.indexOf("trident/")>-1,opera:!!e&&e.version,webkit:a.indexOf(" applewebkit/")>-1,air:a.indexOf(" adobeair/")>-1,mac:a.indexOf("macintosh")>-1,quirks:document.compatMode=="BackCompat"&&(!document.documentMode||document.documentMode<10),mobile:a.indexOf("mobile")>-1,iOS:/(ipad|iphone|ipod)/.test(a),isCustomDomain:function(){if(!this.ie)return false;var d=document.domain,b=window.location.hostname;return d!= -b&&d!="["+b+"]"},secure:location.protocol=="https:"};b.gecko=navigator.product=="Gecko"&&!b.webkit&&!b.opera&&!b.ie;if(b.webkit)a.indexOf("chrome")>-1?b.chrome=true:b.safari=true;var c=0;if(b.ie){c=b.quirks||!document.documentMode?parseFloat(a.match(/msie (\d+)/)[1]):document.documentMode;b.ie9Compat=c==9;b.ie8Compat=c==8;b.ie7Compat=c==7;b.ie6Compat=c<7||b.quirks}if(b.gecko){var d=a.match(/rv:([\d\.]+)/);if(d){d=d[1].split(".");c=d[0]*1E4+(d[1]||0)*100+(d[2]||0)*1}}b.opera&&(c=parseFloat(e.version())); -b.air&&(c=parseFloat(a.match(/ adobeair\/(\d+)/)[1]));b.webkit&&(c=parseFloat(a.match(/ applewebkit\/(\d+)/)[1]));b.version=c;b.isCompatible=b.iOS&&c>=534||!b.mobile&&(b.ie&&c>6||b.gecko&&c>=10801||b.opera&&c>=9.5||b.air&&c>=1||b.webkit&&c>=522||false);b.hidpi=window.devicePixelRatio>=2;b.needsBrFiller=b.gecko||b.webkit||b.ie&&c>10;b.needsNbspFiller=b.ie&&c<11;b.cssClass="cke_browser_"+(b.ie?"ie":b.gecko?"gecko":b.opera?"opera":b.webkit?"webkit":"unknown");if(b.quirks)b.cssClass=b.cssClass+" cke_browser_quirks"; -if(b.ie){b.cssClass=b.cssClass+(" cke_browser_ie"+(b.quirks||b.version<7?"6":b.version));if(b.quirks)b.cssClass=b.cssClass+" cke_browser_iequirks"}if(b.gecko)if(c<10900)b.cssClass=b.cssClass+" cke_browser_gecko18";else if(c<=11E3)b.cssClass=b.cssClass+" cke_browser_gecko19";if(b.air)b.cssClass=b.cssClass+" cke_browser_air";if(b.iOS)b.cssClass=b.cssClass+" cke_browser_ios";if(b.hidpi)b.cssClass=b.cssClass+" cke_hidpi";return b}()); -"unloaded"==CKEDITOR.status&&function(){CKEDITOR.event.implementOn(CKEDITOR);CKEDITOR.loadFullCore=function(){if(CKEDITOR.status!="basic_ready")CKEDITOR.loadFullCore._load=1;else{delete CKEDITOR.loadFullCore;var a=document.createElement("script");a.type="text/javascript";a.src=CKEDITOR.basePath+"ckeditor.js";document.getElementsByTagName("head")[0].appendChild(a)}};CKEDITOR.loadFullCoreTimeout=0;CKEDITOR.add=function(a){(this._.pending||(this._.pending=[])).push(a)};(function(){CKEDITOR.domReady(function(){var a= -CKEDITOR.loadFullCore,e=CKEDITOR.loadFullCoreTimeout;if(a){CKEDITOR.status="basic_ready";a&&a._load?a():e&&setTimeout(function(){CKEDITOR.loadFullCore&&CKEDITOR.loadFullCore()},e*1E3)}})})();CKEDITOR.status="basic_loaded"}();CKEDITOR.dom={}; -(function(){var a=[],e=CKEDITOR.env.gecko?"-moz-":CKEDITOR.env.webkit?"-webkit-":CKEDITOR.env.opera?"-o-":CKEDITOR.env.ie?"-ms-":"";CKEDITOR.on("reset",function(){a=[]});CKEDITOR.tools={arrayCompare:function(b,a){if(!b&&!a)return true;if(!b||!a||b.length!=a.length)return false;for(var d=0;d<b.length;d++)if(b[d]!=a[d])return false;return true},clone:function(b){var a;if(b&&b instanceof Array){a=[];for(var d=0;d<b.length;d++)a[d]=CKEDITOR.tools.clone(b[d]);return a}if(b===null||typeof b!="object"|| -b instanceof String||b instanceof Number||b instanceof Boolean||b instanceof Date||b instanceof RegExp)return b;a=new b.constructor;for(d in b)a[d]=CKEDITOR.tools.clone(b[d]);return a},capitalize:function(b,a){return b.charAt(0).toUpperCase()+(a?b.slice(1):b.slice(1).toLowerCase())},extend:function(b){var a=arguments.length,d,h;if(typeof(d=arguments[a-1])=="boolean")a--;else if(typeof(d=arguments[a-2])=="boolean"){h=arguments[a-1];a=a-2}for(var e=1;e<a;e++){var n=arguments[e],i;for(i in n)if(d=== -true||b[i]==void 0)if(!h||i in h)b[i]=n[i]}return b},prototypedCopy:function(b){var a=function(){};a.prototype=b;return new a},copy:function(b){var a={},d;for(d in b)a[d]=b[d];return a},isArray:function(b){return Object.prototype.toString.call(b)=="[object Array]"},isEmpty:function(b){for(var a in b)if(b.hasOwnProperty(a))return false;return true},cssVendorPrefix:function(b,a,d){if(d)return e+b+":"+a+";"+b+":"+a;d={};d[b]=a;d[e+b]=a;return d},cssStyleToDomStyle:function(){var b=document.createElement("div").style, -a=typeof b.cssFloat!="undefined"?"cssFloat":typeof b.styleFloat!="undefined"?"styleFloat":"float";return function(d){return d=="float"?a:d.replace(/-./g,function(d){return d.substr(1).toUpperCase()})}}(),buildStyleHtml:function(b){for(var b=[].concat(b),a,d=[],h=0;h<b.length;h++)if(a=b[h])/@import|[{}]/.test(a)?d.push("<style>"+a+"</style>"):d.push('<link type="text/css" rel=stylesheet href="'+a+'">');return d.join("")},htmlEncode:function(b){return(""+b).replace(/&/g,"&amp;").replace(/>/g,"&gt;").replace(/</g, -"&lt;")},htmlEncodeAttr:function(b){return b.replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")},htmlDecodeAttr:function(b){return b.replace(/&quot;/g,'"').replace(/&lt;/g,"<").replace(/&gt;/g,">")},getNextNumber:function(){var b=0;return function(){return++b}}(),getNextId:function(){return"cke_"+this.getNextNumber()},override:function(b,a){var d=a(b);d.prototype=b.prototype;return d},setTimeout:function(b,a,d,h,e){e||(e=window);d||(d=e);return e.setTimeout(function(){h?b.apply(d,[].concat(h)): -b.apply(d)},a||0)},trim:function(){var b=/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g;return function(a){return a.replace(b,"")}}(),ltrim:function(){var b=/^[ \t\n\r]+/g;return function(a){return a.replace(b,"")}}(),rtrim:function(){var b=/[ \t\n\r]+$/g;return function(a){return a.replace(b,"")}}(),indexOf:function(b,a){if(typeof a=="function")for(var d=0,h=b.length;d<h;d++){if(a(b[d]))return d}else{if(b.indexOf)return b.indexOf(a);d=0;for(h=b.length;d<h;d++)if(b[d]===a)return d}return-1},search:function(b, -a){var d=CKEDITOR.tools.indexOf(b,a);return d>=0?b[d]:null},bind:function(b,a){return function(){return b.apply(a,arguments)}},createClass:function(b){var a=b.$,d=b.base,h=b.privates||b._,e=b.proto,b=b.statics;!a&&(a=function(){d&&this.base.apply(this,arguments)});if(h)var n=a,a=function(){var d=this._||(this._={}),a;for(a in h){var b=h[a];d[a]=typeof b=="function"?CKEDITOR.tools.bind(b,this):b}n.apply(this,arguments)};if(d){a.prototype=this.prototypedCopy(d.prototype);a.prototype.constructor=a;a.base= -d;a.baseProto=d.prototype;a.prototype.base=function(){this.base=d.prototype.base;d.apply(this,arguments);this.base=arguments.callee}}e&&this.extend(a.prototype,e,true);b&&this.extend(a,b,true);return a},addFunction:function(b,c){return a.push(function(){return b.apply(c||this,arguments)})-1},removeFunction:function(b){a[b]=null},callFunction:function(b){var c=a[b];return c&&c.apply(window,Array.prototype.slice.call(arguments,1))},cssLength:function(){var a=/^-?\d+\.?\d*px$/,c;return function(d){c= -CKEDITOR.tools.trim(d+"")+"px";return a.test(c)?c:d||""}}(),convertToPx:function(){var a;return function(c){if(!a){a=CKEDITOR.dom.element.createFromHtml('<div style="position:absolute;left:-9999px;top:-9999px;margin:0px;padding:0px;border:0px;"></div>',CKEDITOR.document);CKEDITOR.document.getBody().append(a)}if(!/%$/.test(c)){a.setStyle("width",c);return a.$.clientWidth}return c}}(),repeat:function(a,c){return Array(c+1).join(a)},tryThese:function(){for(var a,c=0,d=arguments.length;c<d;c++){var h= -arguments[c];try{a=h();break}catch(e){}}return a},genKey:function(){return Array.prototype.slice.call(arguments).join("-")},defer:function(a){return function(){var c=arguments,d=this;window.setTimeout(function(){a.apply(d,c)},0)}},normalizeCssText:function(a,c){var d=[],h,e=CKEDITOR.tools.parseCssText(a,true,c);for(h in e)d.push(h+":"+e[h]);d.sort();return d.length?d.join(";")+";":""},convertRgbToHex:function(a){return a.replace(/(?:rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\))/gi,function(a,d,b,e){a= -[d,b,e];for(d=0;d<3;d++)a[d]=("0"+parseInt(a[d],10).toString(16)).slice(-2);return"#"+a.join("")})},parseCssText:function(a,c,d){var h={};if(d){d=new CKEDITOR.dom.element("span");d.setAttribute("style",a);a=CKEDITOR.tools.convertRgbToHex(d.getAttribute("style")||"")}if(!a||a==";")return h;a.replace(/&quot;/g,'"').replace(/\s*([^:;\s]+)\s*:\s*([^;]+)\s*(?=;|$)/g,function(a,d,b){if(c){d=d.toLowerCase();d=="font-family"&&(b=b.toLowerCase().replace(/["']/g,"").replace(/\s*,\s*/g,","));b=CKEDITOR.tools.trim(b)}h[d]= -b});return h},writeCssText:function(a,c){var d,h=[];for(d in a)h.push(d+":"+a[d]);c&&h.sort();return h.join("; ")},objectCompare:function(a,c,d){var h;if(!a&&!c)return true;if(!a||!c)return false;for(h in a)if(a[h]!=c[h])return false;if(!d)for(h in c)if(a[h]!=c[h])return false;return true},objectKeys:function(a){var c=[],d;for(d in a)c.push(d);return c},convertArrayToObject:function(a,c){var d={};arguments.length==1&&(c=true);for(var h=0,e=a.length;h<e;++h)d[a[h]]=c;return d},fixDomain:function(){for(var a;;)try{a= -window.parent.document.domain;break}catch(c){a=a?a.replace(/.+?(?:\.|$)/,""):document.domain;if(!a)break;document.domain=a}return!!a},eventsBuffer:function(a,c){function d(){e=(new Date).getTime();h=false;c()}var h,e=0;return{input:function(){if(!h){var c=(new Date).getTime()-e;c<a?h=setTimeout(d,a-c):d()}},reset:function(){h&&clearTimeout(h);h=e=0}}},enableHtml5Elements:function(a,c){for(var d=["abbr","article","aside","audio","bdi","canvas","data","datalist","details","figcaption","figure","footer", -"header","hgroup","mark","meter","nav","output","progress","section","summary","time","video"],h=d.length,e;h--;){e=a.createElement(d[h]);c&&a.appendChild(e)}}}})(); -CKEDITOR.dtd=function(){var a=CKEDITOR.tools.extend,e=function(a,d){for(var b=CKEDITOR.tools.clone(a),h=1;h<arguments.length;h++){var d=arguments[h],c;for(c in d)delete b[c]}return b},b={},c={},d={address:1,article:1,aside:1,blockquote:1,details:1,div:1,dl:1,fieldset:1,figure:1,footer:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,header:1,hgroup:1,hr:1,menu:1,nav:1,ol:1,p:1,pre:1,section:1,table:1,ul:1},h={command:1,link:1,meta:1,noscript:1,script:1,style:1},g={},n={"#":1},i={center:1,dir:1,noframes:1}; -a(b,{a:1,abbr:1,area:1,audio:1,b:1,bdi:1,bdo:1,br:1,button:1,canvas:1,cite:1,code:1,command:1,datalist:1,del:1,dfn:1,em:1,embed:1,i:1,iframe:1,img:1,input:1,ins:1,kbd:1,keygen:1,label:1,map:1,mark:1,meter:1,noscript:1,object:1,output:1,progress:1,q:1,ruby:1,s:1,samp:1,script:1,select:1,small:1,span:1,strong:1,sub:1,sup:1,textarea:1,time:1,u:1,"var":1,video:1,wbr:1},n,{acronym:1,applet:1,basefont:1,big:1,font:1,isindex:1,strike:1,style:1,tt:1});a(c,d,b,i);e={a:e(b,{a:1,button:1}),abbr:b,address:c, -area:g,article:a({style:1},c),aside:a({style:1},c),audio:a({source:1,track:1},c),b:b,base:g,bdi:b,bdo:b,blockquote:c,body:c,br:g,button:e(b,{a:1,button:1}),canvas:b,caption:c,cite:b,code:b,col:g,colgroup:{col:1},command:g,datalist:a({option:1},b),dd:c,del:b,details:a({summary:1},c),dfn:b,div:a({style:1},c),dl:{dt:1,dd:1},dt:c,em:b,embed:g,fieldset:a({legend:1},c),figcaption:c,figure:a({figcaption:1},c),footer:c,form:c,h1:b,h2:b,h3:b,h4:b,h5:b,h6:b,head:a({title:1,base:1},h),header:c,hgroup:{h1:1, -h2:1,h3:1,h4:1,h5:1,h6:1},hr:g,html:a({head:1,body:1},c,h),i:b,iframe:n,img:g,input:g,ins:b,kbd:b,keygen:g,label:b,legend:b,li:c,link:g,map:c,mark:b,menu:a({li:1},c),meta:g,meter:e(b,{meter:1}),nav:c,noscript:a({link:1,meta:1,style:1},b),object:a({param:1},b),ol:{li:1},optgroup:{option:1},option:n,output:b,p:b,param:g,pre:b,progress:e(b,{progress:1}),q:b,rp:b,rt:b,ruby:a({rp:1,rt:1},b),s:b,samp:b,script:n,section:a({style:1},c),select:{optgroup:1,option:1},small:b,source:g,span:b,strong:b,style:n, -sub:b,summary:b,sup:b,table:{caption:1,colgroup:1,thead:1,tfoot:1,tbody:1,tr:1},tbody:{tr:1},td:c,textarea:n,tfoot:{tr:1},th:c,thead:{tr:1},time:e(b,{time:1}),title:n,tr:{th:1,td:1},track:g,u:b,ul:{li:1},"var":b,video:a({source:1,track:1},c),wbr:g,acronym:b,applet:a({param:1},c),basefont:g,big:b,center:c,dialog:g,dir:{li:1},font:b,isindex:g,noframes:c,strike:b,tt:b};a(e,{$block:a({audio:1,dd:1,dt:1,figcaption:1,li:1,video:1},d,i),$blockLimit:{article:1,aside:1,audio:1,body:1,caption:1,details:1,dir:1, -div:1,dl:1,fieldset:1,figcaption:1,figure:1,footer:1,form:1,header:1,hgroup:1,menu:1,nav:1,ol:1,section:1,table:1,td:1,th:1,tr:1,ul:1,video:1},$cdata:{script:1,style:1},$editable:{address:1,article:1,aside:1,blockquote:1,body:1,details:1,div:1,fieldset:1,figcaption:1,footer:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,header:1,hgroup:1,nav:1,p:1,pre:1,section:1},$empty:{area:1,base:1,basefont:1,br:1,col:1,command:1,dialog:1,embed:1,hr:1,img:1,input:1,isindex:1,keygen:1,link:1,meta:1,param:1,source:1,track:1, -wbr:1},$inline:b,$list:{dl:1,ol:1,ul:1},$listItem:{dd:1,dt:1,li:1},$nonBodyContent:a({body:1,head:1,html:1},e.head),$nonEditable:{applet:1,audio:1,button:1,embed:1,iframe:1,map:1,object:1,option:1,param:1,script:1,textarea:1,video:1},$object:{applet:1,audio:1,button:1,hr:1,iframe:1,img:1,input:1,object:1,select:1,table:1,textarea:1,video:1},$removeEmpty:{abbr:1,acronym:1,b:1,bdi:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,mark:1,meter:1,output:1,q:1,ruby:1,s:1,samp:1, -small:1,span:1,strike:1,strong:1,sub:1,sup:1,time:1,tt:1,u:1,"var":1},$tabIndex:{a:1,area:1,button:1,input:1,object:1,select:1,textarea:1},$tableContent:{caption:1,col:1,colgroup:1,tbody:1,td:1,tfoot:1,th:1,thead:1,tr:1},$transparent:{a:1,audio:1,canvas:1,del:1,ins:1,map:1,noscript:1,object:1,video:1},$intermediate:{caption:1,colgroup:1,dd:1,dt:1,figcaption:1,legend:1,li:1,optgroup:1,option:1,rp:1,rt:1,summary:1,tbody:1,td:1,tfoot:1,th:1,thead:1,tr:1}});return e}(); -CKEDITOR.dom.event=function(a){this.$=a}; -CKEDITOR.dom.event.prototype={getKey:function(){return this.$.keyCode||this.$.which},getKeystroke:function(){var a=this.getKey();if(this.$.ctrlKey||this.$.metaKey)a=a+CKEDITOR.CTRL;this.$.shiftKey&&(a=a+CKEDITOR.SHIFT);this.$.altKey&&(a=a+CKEDITOR.ALT);return a},preventDefault:function(a){var e=this.$;e.preventDefault?e.preventDefault():e.returnValue=false;a&&this.stopPropagation()},stopPropagation:function(){var a=this.$;a.stopPropagation?a.stopPropagation():a.cancelBubble=true},getTarget:function(){var a= -this.$.target||this.$.srcElement;return a?new CKEDITOR.dom.node(a):null},getPhase:function(){return this.$.eventPhase||2},getPageOffset:function(){var a=this.getTarget().getDocument().$;return{x:this.$.pageX||this.$.clientX+(a.documentElement.scrollLeft||a.body.scrollLeft),y:this.$.pageY||this.$.clientY+(a.documentElement.scrollTop||a.body.scrollTop)}}};CKEDITOR.CTRL=1114112;CKEDITOR.SHIFT=2228224;CKEDITOR.ALT=4456448;CKEDITOR.EVENT_PHASE_CAPTURING=1;CKEDITOR.EVENT_PHASE_AT_TARGET=2; -CKEDITOR.EVENT_PHASE_BUBBLING=3;CKEDITOR.dom.domObject=function(a){if(a)this.$=a}; -CKEDITOR.dom.domObject.prototype=function(){var a=function(a,b){return function(c){typeof CKEDITOR!="undefined"&&a.fire(b,new CKEDITOR.dom.event(c))}};return{getPrivate:function(){var a;if(!(a=this.getCustomData("_")))this.setCustomData("_",a={});return a},on:function(e){var b=this.getCustomData("_cke_nativeListeners");if(!b){b={};this.setCustomData("_cke_nativeListeners",b)}if(!b[e]){b=b[e]=a(this,e);this.$.addEventListener?this.$.addEventListener(e,b,!!CKEDITOR.event.useCapture):this.$.attachEvent&& -this.$.attachEvent("on"+e,b)}return CKEDITOR.event.prototype.on.apply(this,arguments)},removeListener:function(a){CKEDITOR.event.prototype.removeListener.apply(this,arguments);if(!this.hasListeners(a)){var b=this.getCustomData("_cke_nativeListeners"),c=b&&b[a];if(c){this.$.removeEventListener?this.$.removeEventListener(a,c,false):this.$.detachEvent&&this.$.detachEvent("on"+a,c);delete b[a]}}},removeAllListeners:function(){var a=this.getCustomData("_cke_nativeListeners"),b;for(b in a){var c=a[b];this.$.detachEvent? -this.$.detachEvent("on"+b,c):this.$.removeEventListener&&this.$.removeEventListener(b,c,false);delete a[b]}}}}(); -(function(a){var e={};CKEDITOR.on("reset",function(){e={}});a.equals=function(a){try{return a&&a.$===this.$}catch(c){return false}};a.setCustomData=function(a,c){var d=this.getUniqueId();(e[d]||(e[d]={}))[a]=c;return this};a.getCustomData=function(a){var c=this.$["data-cke-expando"];return(c=c&&e[c])&&a in c?c[a]:null};a.removeCustomData=function(a){var c=this.$["data-cke-expando"],c=c&&e[c],d,h;if(c){d=c[a];h=a in c;delete c[a]}return h?d:null};a.clearCustomData=function(){this.removeAllListeners(); -var a=this.$["data-cke-expando"];a&&delete e[a]};a.getUniqueId=function(){return this.$["data-cke-expando"]||(this.$["data-cke-expando"]=CKEDITOR.tools.getNextNumber())};CKEDITOR.event.implementOn(a)})(CKEDITOR.dom.domObject.prototype); -CKEDITOR.dom.node=function(a){return a?new CKEDITOR.dom[a.nodeType==CKEDITOR.NODE_DOCUMENT?"document":a.nodeType==CKEDITOR.NODE_ELEMENT?"element":a.nodeType==CKEDITOR.NODE_TEXT?"text":a.nodeType==CKEDITOR.NODE_COMMENT?"comment":a.nodeType==CKEDITOR.NODE_DOCUMENT_FRAGMENT?"documentFragment":"domObject"](a):this};CKEDITOR.dom.node.prototype=new CKEDITOR.dom.domObject;CKEDITOR.NODE_ELEMENT=1;CKEDITOR.NODE_DOCUMENT=9;CKEDITOR.NODE_TEXT=3;CKEDITOR.NODE_COMMENT=8;CKEDITOR.NODE_DOCUMENT_FRAGMENT=11; -CKEDITOR.POSITION_IDENTICAL=0;CKEDITOR.POSITION_DISCONNECTED=1;CKEDITOR.POSITION_FOLLOWING=2;CKEDITOR.POSITION_PRECEDING=4;CKEDITOR.POSITION_IS_CONTAINED=8;CKEDITOR.POSITION_CONTAINS=16; -CKEDITOR.tools.extend(CKEDITOR.dom.node.prototype,{appendTo:function(a,e){a.append(this,e);return a},clone:function(a,e){var b=this.$.cloneNode(a),c=function(d){d["data-cke-expando"]&&(d["data-cke-expando"]=false);if(d.nodeType==CKEDITOR.NODE_ELEMENT){e||d.removeAttribute("id",false);if(a)for(var d=d.childNodes,b=0;b<d.length;b++)c(d[b])}};c(b);return new CKEDITOR.dom.node(b)},hasPrevious:function(){return!!this.$.previousSibling},hasNext:function(){return!!this.$.nextSibling},insertAfter:function(a){a.$.parentNode.insertBefore(this.$, -a.$.nextSibling);return a},insertBefore:function(a){a.$.parentNode.insertBefore(this.$,a.$);return a},insertBeforeMe:function(a){this.$.parentNode.insertBefore(a.$,this.$);return a},getAddress:function(a){for(var e=[],b=this.getDocument().$.documentElement,c=this.$;c&&c!=b;){var d=c.parentNode;d&&e.unshift(this.getIndex.call({$:c},a));c=d}return e},getDocument:function(){return new CKEDITOR.dom.document(this.$.ownerDocument||this.$.parentNode.ownerDocument)},getIndex:function(a){var e=this.$,b=-1, -c;if(!this.$.parentNode)return b;do if(!a||!(e!=this.$&&e.nodeType==CKEDITOR.NODE_TEXT&&(c||!e.nodeValue))){b++;c=e.nodeType==CKEDITOR.NODE_TEXT}while(e=e.previousSibling);return b},getNextSourceNode:function(a,e,b){if(b&&!b.call)var c=b,b=function(a){return!a.equals(c)};var a=!a&&this.getFirst&&this.getFirst(),d;if(!a){if(this.type==CKEDITOR.NODE_ELEMENT&&b&&b(this,true)===false)return null;a=this.getNext()}for(;!a&&(d=(d||this).getParent());){if(b&&b(d,true)===false)return null;a=d.getNext()}return!a|| -b&&b(a)===false?null:e&&e!=a.type?a.getNextSourceNode(false,e,b):a},getPreviousSourceNode:function(a,e,b){if(b&&!b.call)var c=b,b=function(a){return!a.equals(c)};var a=!a&&this.getLast&&this.getLast(),d;if(!a){if(this.type==CKEDITOR.NODE_ELEMENT&&b&&b(this,true)===false)return null;a=this.getPrevious()}for(;!a&&(d=(d||this).getParent());){if(b&&b(d,true)===false)return null;a=d.getPrevious()}return!a||b&&b(a)===false?null:e&&a.type!=e?a.getPreviousSourceNode(false,e,b):a},getPrevious:function(a){var e= -this.$,b;do b=(e=e.previousSibling)&&e.nodeType!=10&&new CKEDITOR.dom.node(e);while(b&&a&&!a(b));return b},getNext:function(a){var e=this.$,b;do b=(e=e.nextSibling)&&new CKEDITOR.dom.node(e);while(b&&a&&!a(b));return b},getParent:function(a){var e=this.$.parentNode;return e&&(e.nodeType==CKEDITOR.NODE_ELEMENT||a&&e.nodeType==CKEDITOR.NODE_DOCUMENT_FRAGMENT)?new CKEDITOR.dom.node(e):null},getParents:function(a){var e=this,b=[];do b[a?"push":"unshift"](e);while(e=e.getParent());return b},getCommonAncestor:function(a){if(a.equals(this))return this; -if(a.contains&&a.contains(this))return a;var e=this.contains?this:this.getParent();do if(e.contains(a))return e;while(e=e.getParent());return null},getPosition:function(a){var e=this.$,b=a.$;if(e.compareDocumentPosition)return e.compareDocumentPosition(b);if(e==b)return CKEDITOR.POSITION_IDENTICAL;if(this.type==CKEDITOR.NODE_ELEMENT&&a.type==CKEDITOR.NODE_ELEMENT){if(e.contains){if(e.contains(b))return CKEDITOR.POSITION_CONTAINS+CKEDITOR.POSITION_PRECEDING;if(b.contains(e))return CKEDITOR.POSITION_IS_CONTAINED+ -CKEDITOR.POSITION_FOLLOWING}if("sourceIndex"in e)return e.sourceIndex<0||b.sourceIndex<0?CKEDITOR.POSITION_DISCONNECTED:e.sourceIndex<b.sourceIndex?CKEDITOR.POSITION_PRECEDING:CKEDITOR.POSITION_FOLLOWING}for(var e=this.getAddress(),a=a.getAddress(),b=Math.min(e.length,a.length),c=0;c<=b-1;c++)if(e[c]!=a[c]){if(c<b)return e[c]<a[c]?CKEDITOR.POSITION_PRECEDING:CKEDITOR.POSITION_FOLLOWING;break}return e.length<a.length?CKEDITOR.POSITION_CONTAINS+CKEDITOR.POSITION_PRECEDING:CKEDITOR.POSITION_IS_CONTAINED+ -CKEDITOR.POSITION_FOLLOWING},getAscendant:function(a,e){var b=this.$,c;if(!e)b=b.parentNode;for(;b;){if(b.nodeName&&(c=b.nodeName.toLowerCase(),typeof a=="string"?c==a:c in a))return new CKEDITOR.dom.node(b);try{b=b.parentNode}catch(d){b=null}}return null},hasAscendant:function(a,e){var b=this.$;if(!e)b=b.parentNode;for(;b;){if(b.nodeName&&b.nodeName.toLowerCase()==a)return true;b=b.parentNode}return false},move:function(a,e){a.append(this.remove(),e)},remove:function(a){var e=this.$,b=e.parentNode; -if(b){if(a)for(;a=e.firstChild;)b.insertBefore(e.removeChild(a),e);b.removeChild(e)}return this},replace:function(a){this.insertBefore(a);a.remove()},trim:function(){this.ltrim();this.rtrim()},ltrim:function(){for(var a;this.getFirst&&(a=this.getFirst());){if(a.type==CKEDITOR.NODE_TEXT){var e=CKEDITOR.tools.ltrim(a.getText()),b=a.getLength();if(e){if(e.length<b){a.split(b-e.length);this.$.removeChild(this.$.firstChild)}}else{a.remove();continue}}break}},rtrim:function(){for(var a;this.getLast&&(a= -this.getLast());){if(a.type==CKEDITOR.NODE_TEXT){var e=CKEDITOR.tools.rtrim(a.getText()),b=a.getLength();if(e){if(e.length<b){a.split(e.length);this.$.lastChild.parentNode.removeChild(this.$.lastChild)}}else{a.remove();continue}}break}if(CKEDITOR.env.needsBrFiller)(a=this.$.lastChild)&&(a.type==1&&a.nodeName.toLowerCase()=="br")&&a.parentNode.removeChild(a)},isReadOnly:function(){var a=this;this.type!=CKEDITOR.NODE_ELEMENT&&(a=this.getParent());if(a&&typeof a.$.isContentEditable!="undefined")return!(a.$.isContentEditable|| -a.data("cke-editable"));for(;a;){if(a.data("cke-editable"))break;if(a.getAttribute("contentEditable")=="false")return true;if(a.getAttribute("contentEditable")=="true")break;a=a.getParent()}return!a}});CKEDITOR.dom.window=function(a){CKEDITOR.dom.domObject.call(this,a)};CKEDITOR.dom.window.prototype=new CKEDITOR.dom.domObject; -CKEDITOR.tools.extend(CKEDITOR.dom.window.prototype,{focus:function(){this.$.focus()},getViewPaneSize:function(){var a=this.$.document,e=a.compatMode=="CSS1Compat";return{width:(e?a.documentElement.clientWidth:a.body.clientWidth)||0,height:(e?a.documentElement.clientHeight:a.body.clientHeight)||0}},getScrollPosition:function(){var a=this.$;if("pageXOffset"in a)return{x:a.pageXOffset||0,y:a.pageYOffset||0};a=a.document;return{x:a.documentElement.scrollLeft||a.body.scrollLeft||0,y:a.documentElement.scrollTop|| -a.body.scrollTop||0}},getFrame:function(){var a=this.$.frameElement;return a?new CKEDITOR.dom.element.get(a):null}});CKEDITOR.dom.document=function(a){CKEDITOR.dom.domObject.call(this,a)};CKEDITOR.dom.document.prototype=new CKEDITOR.dom.domObject; -CKEDITOR.tools.extend(CKEDITOR.dom.document.prototype,{type:CKEDITOR.NODE_DOCUMENT,appendStyleSheet:function(a){if(this.$.createStyleSheet)this.$.createStyleSheet(a);else{var e=new CKEDITOR.dom.element("link");e.setAttributes({rel:"stylesheet",type:"text/css",href:a});this.getHead().append(e)}},appendStyleText:function(a){if(this.$.createStyleSheet){var e=this.$.createStyleSheet("");e.cssText=a}else{var b=new CKEDITOR.dom.element("style",this);b.append(new CKEDITOR.dom.text(a,this));this.getHead().append(b)}return e|| -b.$.sheet},createElement:function(a,e){var b=new CKEDITOR.dom.element(a,this);if(e){e.attributes&&b.setAttributes(e.attributes);e.styles&&b.setStyles(e.styles)}return b},createText:function(a){return new CKEDITOR.dom.text(a,this)},focus:function(){this.getWindow().focus()},getActive:function(){return new CKEDITOR.dom.element(this.$.activeElement)},getById:function(a){return(a=this.$.getElementById(a))?new CKEDITOR.dom.element(a):null},getByAddress:function(a,e){for(var b=this.$.documentElement,c= -0;b&&c<a.length;c++){var d=a[c];if(e)for(var h=-1,g=0;g<b.childNodes.length;g++){var n=b.childNodes[g];if(!(e===true&&n.nodeType==3&&n.previousSibling&&n.previousSibling.nodeType==3)){h++;if(h==d){b=n;break}}}else b=b.childNodes[d]}return b?new CKEDITOR.dom.node(b):null},getElementsByTag:function(a,e){if((!CKEDITOR.env.ie||document.documentMode>8)&&e)a=e+":"+a;return new CKEDITOR.dom.nodeList(this.$.getElementsByTagName(a))},getHead:function(){var a=this.$.getElementsByTagName("head")[0];return a= -a?new CKEDITOR.dom.element(a):this.getDocumentElement().append(new CKEDITOR.dom.element("head"),true)},getBody:function(){return new CKEDITOR.dom.element(this.$.body)},getDocumentElement:function(){return new CKEDITOR.dom.element(this.$.documentElement)},getWindow:function(){return new CKEDITOR.dom.window(this.$.parentWindow||this.$.defaultView)},write:function(a){this.$.open("text/html","replace");CKEDITOR.env.ie&&(a=a.replace(/(?:^\s*<!DOCTYPE[^>]*?>)|^/i,'$&\n<script data-cke-temp="1">('+CKEDITOR.tools.fixDomain+ -")();<\/script>"));this.$.write(a);this.$.close()},find:function(a){return new CKEDITOR.dom.nodeList(this.$.querySelectorAll(a))},findOne:function(a){return(a=this.$.querySelector(a))?new CKEDITOR.dom.element(a):null},_getHtml5ShivFrag:function(){var a=this.getCustomData("html5ShivFrag");if(!a){a=this.$.createDocumentFragment();CKEDITOR.tools.enableHtml5Elements(a,true);this.setCustomData("html5ShivFrag",a)}return a}});CKEDITOR.dom.nodeList=function(a){this.$=a}; -CKEDITOR.dom.nodeList.prototype={count:function(){return this.$.length},getItem:function(a){if(a<0||a>=this.$.length)return null;return(a=this.$[a])?new CKEDITOR.dom.node(a):null}};CKEDITOR.dom.element=function(a,e){typeof a=="string"&&(a=(e?e.$:document).createElement(a));CKEDITOR.dom.domObject.call(this,a)};CKEDITOR.dom.element.get=function(a){return(a=typeof a=="string"?document.getElementById(a)||document.getElementsByName(a)[0]:a)&&(a.$?a:new CKEDITOR.dom.element(a))}; -CKEDITOR.dom.element.prototype=new CKEDITOR.dom.node;CKEDITOR.dom.element.createFromHtml=function(a,e){var b=new CKEDITOR.dom.element("div",e);b.setHtml(a);return b.getFirst().remove()}; -CKEDITOR.dom.element.setMarker=function(a,e,b,c){var d=e.getCustomData("list_marker_id")||e.setCustomData("list_marker_id",CKEDITOR.tools.getNextNumber()).getCustomData("list_marker_id"),h=e.getCustomData("list_marker_names")||e.setCustomData("list_marker_names",{}).getCustomData("list_marker_names");a[d]=e;h[b]=1;return e.setCustomData(b,c)};CKEDITOR.dom.element.clearAllMarkers=function(a){for(var e in a)CKEDITOR.dom.element.clearMarkers(a,a[e],1)}; -CKEDITOR.dom.element.clearMarkers=function(a,e,b){var c=e.getCustomData("list_marker_names"),d=e.getCustomData("list_marker_id"),h;for(h in c)e.removeCustomData(h);e.removeCustomData("list_marker_names");if(b){e.removeCustomData("list_marker_id");delete a[d]}}; -(function(){function a(a){var b=true;if(!a.$.id){a.$.id="cke_tmp_"+CKEDITOR.tools.getNextNumber();b=false}return function(){b||a.removeAttribute("id")}}function e(a,b){return"#"+a.$.id+" "+b.split(/,\s*/).join(", #"+a.$.id+" ")}function b(a){for(var b=0,e=0,n=c[a].length;e<n;e++)b=b+(parseInt(this.getComputedStyle(c[a][e])||0,10)||0);return b}CKEDITOR.tools.extend(CKEDITOR.dom.element.prototype,{type:CKEDITOR.NODE_ELEMENT,addClass:function(a){var b=this.$.className;b&&(RegExp("(?:^|\\s)"+a+"(?:\\s|$)", -"").test(b)||(b=b+(" "+a)));this.$.className=b||a},removeClass:function(a){var b=this.getAttribute("class");if(b){a=RegExp("(?:^|\\s+)"+a+"(?=\\s|$)","i");if(a.test(b))(b=b.replace(a,"").replace(/^\s+/,""))?this.setAttribute("class",b):this.removeAttribute("class")}return this},hasClass:function(a){return RegExp("(?:^|\\s+)"+a+"(?=\\s|$)","").test(this.getAttribute("class"))},append:function(a,b){typeof a=="string"&&(a=this.getDocument().createElement(a));b?this.$.insertBefore(a.$,this.$.firstChild): -this.$.appendChild(a.$);return a},appendHtml:function(a){if(this.$.childNodes.length){var b=new CKEDITOR.dom.element("div",this.getDocument());b.setHtml(a);b.moveChildren(this)}else this.setHtml(a)},appendText:function(a){this.$.text!=void 0?this.$.text=this.$.text+a:this.append(new CKEDITOR.dom.text(a))},appendBogus:function(a){if(a||CKEDITOR.env.needsBrFiller||CKEDITOR.env.opera){for(a=this.getLast();a&&a.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.rtrim(a.getText());)a=a.getPrevious();if(!a||!a.is|| -!a.is("br")){a=CKEDITOR.env.opera?this.getDocument().createText(""):this.getDocument().createElement("br");CKEDITOR.env.gecko&&a.setAttribute("type","_moz");this.append(a)}}},breakParent:function(a){var b=new CKEDITOR.dom.range(this.getDocument());b.setStartAfter(this);b.setEndAfter(a);a=b.extractContents();b.insertNode(this.remove());a.insertAfterNode(this)},contains:CKEDITOR.env.ie||CKEDITOR.env.webkit?function(a){var b=this.$;return a.type!=CKEDITOR.NODE_ELEMENT?b.contains(a.getParent().$):b!= -a.$&&b.contains(a.$)}:function(a){return!!(this.$.compareDocumentPosition(a.$)&16)},focus:function(){function a(){try{this.$.focus()}catch(b){}}return function(b){b?CKEDITOR.tools.setTimeout(a,100,this):a.call(this)}}(),getHtml:function(){var a=this.$.innerHTML;return CKEDITOR.env.ie?a.replace(/<\?[^>]*>/g,""):a},getOuterHtml:function(){if(this.$.outerHTML)return this.$.outerHTML.replace(/<\?[^>]*>/,"");var a=this.$.ownerDocument.createElement("div");a.appendChild(this.$.cloneNode(true));return a.innerHTML}, -getClientRect:function(){var a=CKEDITOR.tools.extend({},this.$.getBoundingClientRect());!a.width&&(a.width=a.right-a.left);!a.height&&(a.height=a.bottom-a.top);return a},setHtml:CKEDITOR.env.ie&&CKEDITOR.env.version<9?function(a){try{var b=this.$;if(this.getParent())return b.innerHTML=a;var c=this.getDocument()._getHtml5ShivFrag();c.appendChild(b);b.innerHTML=a;c.removeChild(b);return a}catch(e){this.$.innerHTML="";b=new CKEDITOR.dom.element("body",this.getDocument());b.$.innerHTML=a;for(b=b.getChildren();b.count();)this.append(b.getItem(0)); -return a}}:function(a){return this.$.innerHTML=a},setText:function(a){CKEDITOR.dom.element.prototype.setText=this.$.innerText!=void 0?function(a){return this.$.innerText=a}:function(a){return this.$.textContent=a};return this.setText(a)},getAttribute:function(){var a=function(a){return this.$.getAttribute(a,2)};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)?function(a){switch(a){case "class":a="className";break;case "http-equiv":a="httpEquiv";break;case "name":return this.$.name; -case "tabindex":a=this.$.getAttribute(a,2);a!==0&&this.$.tabIndex===0&&(a=null);return a;case "checked":a=this.$.attributes.getNamedItem(a);return(a.specified?a.nodeValue:this.$.checked)?"checked":null;case "hspace":case "value":return this.$[a];case "style":return this.$.style.cssText;case "contenteditable":case "contentEditable":return this.$.attributes.getNamedItem("contentEditable").specified?this.$.getAttribute("contentEditable"):null}return this.$.getAttribute(a,2)}:a}(),getChildren:function(){return new CKEDITOR.dom.nodeList(this.$.childNodes)}, -getComputedStyle:CKEDITOR.env.ie?function(a){return this.$.currentStyle[CKEDITOR.tools.cssStyleToDomStyle(a)]}:function(a){var b=this.getWindow().$.getComputedStyle(this.$,null);return b?b.getPropertyValue(a):""},getDtd:function(){var a=CKEDITOR.dtd[this.getName()];this.getDtd=function(){return a};return a},getElementsByTag:CKEDITOR.dom.document.prototype.getElementsByTag,getTabIndex:CKEDITOR.env.ie?function(){var a=this.$.tabIndex;a===0&&(!CKEDITOR.dtd.$tabIndex[this.getName()]&&parseInt(this.getAttribute("tabindex"), -10)!==0)&&(a=-1);return a}:CKEDITOR.env.webkit?function(){var a=this.$.tabIndex;if(a==void 0){a=parseInt(this.getAttribute("tabindex"),10);isNaN(a)&&(a=-1)}return a}:function(){return this.$.tabIndex},getText:function(){return this.$.textContent||this.$.innerText||""},getWindow:function(){return this.getDocument().getWindow()},getId:function(){return this.$.id||null},getNameAtt:function(){return this.$.name||null},getName:function(){var a=this.$.nodeName.toLowerCase();if(CKEDITOR.env.ie&&!(document.documentMode> -8)){var b=this.$.scopeName;b!="HTML"&&(a=b.toLowerCase()+":"+a)}return(this.getName=function(){return a})()},getValue:function(){return this.$.value},getFirst:function(a){var b=this.$.firstChild;(b=b&&new CKEDITOR.dom.node(b))&&(a&&!a(b))&&(b=b.getNext(a));return b},getLast:function(a){var b=this.$.lastChild;(b=b&&new CKEDITOR.dom.node(b))&&(a&&!a(b))&&(b=b.getPrevious(a));return b},getStyle:function(a){return this.$.style[CKEDITOR.tools.cssStyleToDomStyle(a)]},is:function(){var a=this.getName(); -if(typeof arguments[0]=="object")return!!arguments[0][a];for(var b=0;b<arguments.length;b++)if(arguments[b]==a)return true;return false},isEditable:function(a){var b=this.getName();if(this.isReadOnly()||this.getComputedStyle("display")=="none"||this.getComputedStyle("visibility")=="hidden"||CKEDITOR.dtd.$nonEditable[b]||CKEDITOR.dtd.$empty[b]||this.is("a")&&(this.data("cke-saved-name")||this.hasAttribute("name"))&&!this.getChildCount())return false;if(a!==false){a=CKEDITOR.dtd[b]||CKEDITOR.dtd.span; -return!(!a||!a["#"])}return true},isIdentical:function(a){var b=this.clone(0,1),a=a.clone(0,1);b.removeAttributes(["_moz_dirty","data-cke-expando","data-cke-saved-href","data-cke-saved-name"]);a.removeAttributes(["_moz_dirty","data-cke-expando","data-cke-saved-href","data-cke-saved-name"]);if(b.$.isEqualNode){b.$.style.cssText=CKEDITOR.tools.normalizeCssText(b.$.style.cssText);a.$.style.cssText=CKEDITOR.tools.normalizeCssText(a.$.style.cssText);return b.$.isEqualNode(a.$)}b=b.getOuterHtml();a=a.getOuterHtml(); -if(CKEDITOR.env.ie&&CKEDITOR.env.version<9&&this.is("a")){var c=this.getParent();if(c.type==CKEDITOR.NODE_ELEMENT){c=c.clone();c.setHtml(b);b=c.getHtml();c.setHtml(a);a=c.getHtml()}}return b==a},isVisible:function(){var a=(this.$.offsetHeight||this.$.offsetWidth)&&this.getComputedStyle("visibility")!="hidden",b,c;if(a&&(CKEDITOR.env.webkit||CKEDITOR.env.opera)){b=this.getWindow();if(!b.equals(CKEDITOR.document.getWindow())&&(c=b.$.frameElement))a=(new CKEDITOR.dom.element(c)).isVisible()}return!!a}, -isEmptyInlineRemoveable:function(){if(!CKEDITOR.dtd.$removeEmpty[this.getName()])return false;for(var a=this.getChildren(),b=0,c=a.count();b<c;b++){var e=a.getItem(b);if(!(e.type==CKEDITOR.NODE_ELEMENT&&e.data("cke-bookmark"))&&(e.type==CKEDITOR.NODE_ELEMENT&&!e.isEmptyInlineRemoveable()||e.type==CKEDITOR.NODE_TEXT&&CKEDITOR.tools.trim(e.getText())))return false}return true},hasAttributes:CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)?function(){for(var a=this.$.attributes,b=0;b< -a.length;b++){var c=a[b];switch(c.nodeName){case "class":if(this.getAttribute("class"))return true;case "data-cke-expando":continue;default:if(c.specified)return true}}return false}:function(){var a=this.$.attributes,b=a.length,c={"data-cke-expando":1,_moz_dirty:1};return b>0&&(b>2||!c[a[0].nodeName]||b==2&&!c[a[1].nodeName])},hasAttribute:function(){function a(b){b=this.$.attributes.getNamedItem(b);return!(!b||!b.specified)}return CKEDITOR.env.ie&&CKEDITOR.env.version<8?function(b){return b=="name"? -!!this.$.name:a.call(this,b)}:a}(),hide:function(){this.setStyle("display","none")},moveChildren:function(a,b){var c=this.$,a=a.$;if(c!=a){var e;if(b)for(;e=c.lastChild;)a.insertBefore(c.removeChild(e),a.firstChild);else for(;e=c.firstChild;)a.appendChild(c.removeChild(e))}},mergeSiblings:function(){function a(b,d,c){if(d&&d.type==CKEDITOR.NODE_ELEMENT){for(var e=[];d.data("cke-bookmark")||d.isEmptyInlineRemoveable();){e.push(d);d=c?d.getNext():d.getPrevious();if(!d||d.type!=CKEDITOR.NODE_ELEMENT)return}if(b.isIdentical(d)){for(var j= -c?b.getLast():b.getFirst();e.length;)e.shift().move(b,!c);d.moveChildren(b,!c);d.remove();j&&j.type==CKEDITOR.NODE_ELEMENT&&j.mergeSiblings()}}}return function(b){if(b===false||CKEDITOR.dtd.$removeEmpty[this.getName()]||this.is("a")){a(this,this.getNext(),true);a(this,this.getPrevious())}}}(),show:function(){this.setStyles({display:"",visibility:""})},setAttribute:function(){var a=function(a,b){this.$.setAttribute(a,b);return this};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)? -function(b,c){b=="class"?this.$.className=c:b=="style"?this.$.style.cssText=c:b=="tabindex"?this.$.tabIndex=c:b=="checked"?this.$.checked=c:b=="contenteditable"?a.call(this,"contentEditable",c):a.apply(this,arguments);return this}:CKEDITOR.env.ie8Compat&&CKEDITOR.env.secure?function(b,c){if(b=="src"&&c.match(/^http:\/\//))try{a.apply(this,arguments)}catch(e){}else a.apply(this,arguments);return this}:a}(),setAttributes:function(a){for(var b in a)this.setAttribute(b,a[b]);return this},setValue:function(a){this.$.value= -a;return this},removeAttribute:function(){var a=function(a){this.$.removeAttribute(a)};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)?function(a){a=="class"?a="className":a=="tabindex"?a="tabIndex":a=="contenteditable"&&(a="contentEditable");this.$.removeAttribute(a)}:a}(),removeAttributes:function(a){if(CKEDITOR.tools.isArray(a))for(var b=0;b<a.length;b++)this.removeAttribute(a[b]);else for(b in a)a.hasOwnProperty(b)&&this.removeAttribute(b)},removeStyle:function(a){var b= -this.$.style;if(!b.removeProperty&&(a=="border"||a=="margin"||a=="padding")){var c=["top","left","right","bottom"],e;a=="border"&&(e=["color","style","width"]);for(var b=[],i=0;i<c.length;i++)if(e)for(var j=0;j<e.length;j++)b.push([a,c[i],e[j]].join("-"));else b.push([a,c[i]].join("-"));for(a=0;a<b.length;a++)this.removeStyle(b[a])}else{b.removeProperty?b.removeProperty(a):b.removeAttribute(CKEDITOR.tools.cssStyleToDomStyle(a));this.$.style.cssText||this.removeAttribute("style")}},setStyle:function(a, -b){this.$.style[CKEDITOR.tools.cssStyleToDomStyle(a)]=b;return this},setStyles:function(a){for(var b in a)this.setStyle(b,a[b]);return this},setOpacity:function(a){if(CKEDITOR.env.ie&&CKEDITOR.env.version<9){a=Math.round(a*100);this.setStyle("filter",a>=100?"":"progid:DXImageTransform.Microsoft.Alpha(opacity="+a+")")}else this.setStyle("opacity",a)},unselectable:function(){this.setStyles(CKEDITOR.tools.cssVendorPrefix("user-select","none"));if(CKEDITOR.env.ie||CKEDITOR.env.opera){this.setAttribute("unselectable", -"on");for(var a,b=this.getElementsByTag("*"),c=0,e=b.count();c<e;c++){a=b.getItem(c);a.setAttribute("unselectable","on")}}},getPositionedAncestor:function(){for(var a=this;a.getName()!="html";){if(a.getComputedStyle("position")!="static")return a;a=a.getParent()}return null},getDocumentPosition:function(a){var b=0,c=0,e=this.getDocument(),i=e.getBody(),j=e.$.compatMode=="BackCompat";if(document.documentElement.getBoundingClientRect){var o=this.$.getBoundingClientRect(),q=e.$.documentElement,s=q.clientTop|| -i.$.clientTop||0,u=q.clientLeft||i.$.clientLeft||0,f=true;if(CKEDITOR.env.ie){f=e.getDocumentElement().contains(this);e=e.getBody().contains(this);f=j&&e||!j&&f}if(f){b=o.left+(!j&&q.scrollLeft||i.$.scrollLeft);b=b-u;c=o.top+(!j&&q.scrollTop||i.$.scrollTop);c=c-s}}else{i=this;for(e=null;i&&!(i.getName()=="body"||i.getName()=="html");){b=b+(i.$.offsetLeft-i.$.scrollLeft);c=c+(i.$.offsetTop-i.$.scrollTop);if(!i.equals(this)){b=b+(i.$.clientLeft||0);c=c+(i.$.clientTop||0)}for(;e&&!e.equals(i);){b=b- -e.$.scrollLeft;c=c-e.$.scrollTop;e=e.getParent()}e=i;i=(o=i.$.offsetParent)?new CKEDITOR.dom.element(o):null}}if(a){i=this.getWindow();e=a.getWindow();if(!i.equals(e)&&i.$.frameElement){a=(new CKEDITOR.dom.element(i.$.frameElement)).getDocumentPosition(a);b=b+a.x;c=c+a.y}}if(!document.documentElement.getBoundingClientRect&&CKEDITOR.env.gecko&&!j){b=b+(this.$.clientLeft?1:0);c=c+(this.$.clientTop?1:0)}return{x:b,y:c}},scrollIntoView:function(a){var b=this.getParent();if(b){do{(b.$.clientWidth&&b.$.clientWidth< -b.$.scrollWidth||b.$.clientHeight&&b.$.clientHeight<b.$.scrollHeight)&&!b.is("body")&&this.scrollIntoParent(b,a,1);if(b.is("html")){var c=b.getWindow();try{var e=c.$.frameElement;e&&(b=new CKEDITOR.dom.element(e))}catch(i){}}}while(b=b.getParent())}},scrollIntoParent:function(a,b,c){var e,i,j,o;function q(b,f){if(/body|html/.test(a.getName()))a.getWindow().$.scrollBy(b,f);else{a.$.scrollLeft=a.$.scrollLeft+b;a.$.scrollTop=a.$.scrollTop+f}}function s(a,b){var d={x:0,y:0};if(!a.is(f?"body":"html")){var c= -a.$.getBoundingClientRect();d.x=c.left;d.y=c.top}c=a.getWindow();if(!c.equals(b)){c=s(CKEDITOR.dom.element.get(c.$.frameElement),b);d.x=d.x+c.x;d.y=d.y+c.y}return d}function u(a,b){return parseInt(a.getComputedStyle("margin-"+b)||0,10)||0}!a&&(a=this.getWindow());j=a.getDocument();var f=j.$.compatMode=="BackCompat";a instanceof CKEDITOR.dom.window&&(a=f?j.getBody():j.getDocumentElement());j=a.getWindow();i=s(this,j);var p=s(a,j),y=this.$.offsetHeight;e=this.$.offsetWidth;var m=a.$.clientHeight,k= -a.$.clientWidth;j=i.x-u(this,"left")-p.x||0;o=i.y-u(this,"top")-p.y||0;e=i.x+e+u(this,"right")-(p.x+k)||0;i=i.y+y+u(this,"bottom")-(p.y+m)||0;if(o<0||i>0)q(0,b===true?o:b===false?i:o<0?o:i);if(c&&(j<0||e>0))q(j<0?j:e,0)},setState:function(a,b,c){b=b||"cke";switch(a){case CKEDITOR.TRISTATE_ON:this.addClass(b+"_on");this.removeClass(b+"_off");this.removeClass(b+"_disabled");c&&this.setAttribute("aria-pressed",true);c&&this.removeAttribute("aria-disabled");break;case CKEDITOR.TRISTATE_DISABLED:this.addClass(b+ -"_disabled");this.removeClass(b+"_off");this.removeClass(b+"_on");c&&this.setAttribute("aria-disabled",true);c&&this.removeAttribute("aria-pressed");break;default:this.addClass(b+"_off");this.removeClass(b+"_on");this.removeClass(b+"_disabled");c&&this.removeAttribute("aria-pressed");c&&this.removeAttribute("aria-disabled")}},getFrameDocument:function(){var a=this.$;try{a.contentWindow.document}catch(b){a.src=a.src}return a&&new CKEDITOR.dom.document(a.contentWindow.document)},copyAttributes:function(a, -b){for(var c=this.$.attributes,b=b||{},e=0;e<c.length;e++){var i=c[e],j=i.nodeName.toLowerCase(),o;if(!(j in b))if(j=="checked"&&(o=this.getAttribute(j)))a.setAttribute(j,o);else if(i.specified||CKEDITOR.env.ie&&i.nodeValue&&j=="value"){o=this.getAttribute(j);if(o===null)o=i.nodeValue;a.setAttribute(j,o)}}if(this.$.style.cssText!=="")a.$.style.cssText=this.$.style.cssText},renameNode:function(a){if(this.getName()!=a){var b=this.getDocument(),a=new CKEDITOR.dom.element(a,b);this.copyAttributes(a); -this.moveChildren(a);this.getParent()&&this.$.parentNode.replaceChild(a.$,this.$);a.$["data-cke-expando"]=this.$["data-cke-expando"];this.$=a.$}},getChild:function(){function a(b,c){var d=b.childNodes;if(c>=0&&c<d.length)return d[c]}return function(b){var c=this.$;if(b.slice)for(;b.length>0&&c;)c=a(c,b.shift());else c=a(c,b);return c?new CKEDITOR.dom.node(c):null}}(),getChildCount:function(){return this.$.childNodes.length},disableContextMenu:function(){this.on("contextmenu",function(a){a.data.getTarget().hasClass("cke_enable_context_menu")|| -a.data.preventDefault()})},getDirection:function(a){return a?this.getComputedStyle("direction")||this.getDirection()||this.getParent()&&this.getParent().getDirection(1)||this.getDocument().$.dir||"ltr":this.getStyle("direction")||this.getAttribute("dir")},data:function(a,b){a="data-"+a;if(b===void 0)return this.getAttribute(a);b===false?this.removeAttribute(a):this.setAttribute(a,b);return null},getEditor:function(){var a=CKEDITOR.instances,b,c;for(b in a){c=a[b];if(c.element.equals(this)&&c.elementMode!= -CKEDITOR.ELEMENT_MODE_APPENDTO)return c}return null},find:function(b){var c=a(this),b=new CKEDITOR.dom.nodeList(this.$.querySelectorAll(e(this,b)));c();return b},findOne:function(b){var c=a(this),b=this.$.querySelector(e(this,b));c();return b?new CKEDITOR.dom.element(b):null},forEach:function(a,b,c){if(!c&&(!b||this.type==b))var e=a(this);if(e!==false)for(var c=this.getChildren(),i=0;i<c.count();i++){e=c.getItem(i);e.type==CKEDITOR.NODE_ELEMENT?e.forEach(a,b):(!b||e.type==b)&&a(e)}}});var c={width:["border-left-width", -"border-right-width","padding-left","padding-right"],height:["border-top-width","border-bottom-width","padding-top","padding-bottom"]};CKEDITOR.dom.element.prototype.setSize=function(a,c,e){if(typeof c=="number"){if(e&&(!CKEDITOR.env.ie||!CKEDITOR.env.quirks))c=c-b.call(this,a);this.setStyle(a,c+"px")}};CKEDITOR.dom.element.prototype.getSize=function(a,c){var e=Math.max(this.$["offset"+CKEDITOR.tools.capitalize(a)],this.$["client"+CKEDITOR.tools.capitalize(a)])||0;c&&(e=e-b.call(this,a));return e}})(); -CKEDITOR.dom.documentFragment=function(a){a=a||CKEDITOR.document;this.$=a.type==CKEDITOR.NODE_DOCUMENT?a.$.createDocumentFragment():a}; -CKEDITOR.tools.extend(CKEDITOR.dom.documentFragment.prototype,CKEDITOR.dom.element.prototype,{type:CKEDITOR.NODE_DOCUMENT_FRAGMENT,insertAfterNode:function(a){a=a.$;a.parentNode.insertBefore(this.$,a.nextSibling)}},!0,{append:1,appendBogus:1,getFirst:1,getLast:1,getParent:1,getNext:1,getPrevious:1,appendTo:1,moveChildren:1,insertBefore:1,insertAfterNode:1,replace:1,trim:1,type:1,ltrim:1,rtrim:1,getDocument:1,getChildCount:1,getChild:1,getChildren:1}); -(function(){function a(a,b){var c=this.range;if(this._.end)return null;if(!this._.start){this._.start=1;if(c.collapsed){this.end();return null}c.optimize()}var f,d=c.startContainer;f=c.endContainer;var o=c.startOffset,e=c.endOffset,k,l=this.guard,t=this.type,h=a?"getPreviousSourceNode":"getNextSourceNode";if(!a&&!this._.guardLTR){var r=f.type==CKEDITOR.NODE_ELEMENT?f:f.getParent(),i=f.type==CKEDITOR.NODE_ELEMENT?f.getChild(e):f.getNext();this._.guardLTR=function(a,b){return(!b||!r.equals(a))&&(!i|| -!a.equals(i))&&(a.type!=CKEDITOR.NODE_ELEMENT||!b||!a.equals(c.root))}}if(a&&!this._.guardRTL){var g=d.type==CKEDITOR.NODE_ELEMENT?d:d.getParent(),j=d.type==CKEDITOR.NODE_ELEMENT?o?d.getChild(o-1):null:d.getPrevious();this._.guardRTL=function(a,b){return(!b||!g.equals(a))&&(!j||!a.equals(j))&&(a.type!=CKEDITOR.NODE_ELEMENT||!b||!a.equals(c.root))}}var n=a?this._.guardRTL:this._.guardLTR;k=l?function(a,b){return n(a,b)===false?false:l(a,b)}:n;if(this.current)f=this.current[h](false,t,k);else{if(a)f.type== -CKEDITOR.NODE_ELEMENT&&(f=e>0?f.getChild(e-1):k(f,true)===false?null:f.getPreviousSourceNode(true,t,k));else{f=d;if(f.type==CKEDITOR.NODE_ELEMENT&&!(f=f.getChild(o)))f=k(d,true)===false?null:d.getNextSourceNode(true,t,k)}f&&k(f)===false&&(f=null)}for(;f&&!this._.end;){this.current=f;if(!this.evaluator||this.evaluator(f)!==false){if(!b)return f}else if(b&&this.evaluator)return false;f=f[h](false,t,k)}this.end();return this.current=null}function e(b){for(var c,d=null;c=a.call(this,b);)d=c;return d} -function b(a){if(j(a))return false;if(a.type==CKEDITOR.NODE_TEXT)return true;if(a.type==CKEDITOR.NODE_ELEMENT){if(a.is(CKEDITOR.dtd.$inline)||a.getAttribute("contenteditable")=="false")return true;var b;if(b=!CKEDITOR.env.needsBrFiller)if(b=a.is(o))a:{b=0;for(var c=a.getChildCount();b<c;++b)if(!j(a.getChild(b))){b=false;break a}b=true}if(b)return true}return false}CKEDITOR.dom.walker=CKEDITOR.tools.createClass({$:function(a){this.range=a;this._={}},proto:{end:function(){this._.end=1},next:function(){return a.call(this)}, -previous:function(){return a.call(this,1)},checkForward:function(){return a.call(this,0,1)!==false},checkBackward:function(){return a.call(this,1,1)!==false},lastForward:function(){return e.call(this)},lastBackward:function(){return e.call(this,1)},reset:function(){delete this.current;this._={}}}});var c={block:1,"list-item":1,table:1,"table-row-group":1,"table-header-group":1,"table-footer-group":1,"table-row":1,"table-column-group":1,"table-column":1,"table-cell":1,"table-caption":1},d={absolute:1, -fixed:1};CKEDITOR.dom.element.prototype.isBlockBoundary=function(a){return this.getComputedStyle("float")=="none"&&!(this.getComputedStyle("position")in d)&&c[this.getComputedStyle("display")]?true:!!(this.is(CKEDITOR.dtd.$block)||a&&this.is(a))};CKEDITOR.dom.walker.blockBoundary=function(a){return function(b){return!(b.type==CKEDITOR.NODE_ELEMENT&&b.isBlockBoundary(a))}};CKEDITOR.dom.walker.listItemBoundary=function(){return this.blockBoundary({br:1})};CKEDITOR.dom.walker.bookmark=function(a,b){function c(a){return a&& -a.getName&&a.getName()=="span"&&a.data("cke-bookmark")}return function(f){var d,o;d=f&&f.type!=CKEDITOR.NODE_ELEMENT&&(o=f.getParent())&&c(o);d=a?d:d||c(f);return!!(b^d)}};CKEDITOR.dom.walker.whitespaces=function(a){return function(b){var c;b&&b.type==CKEDITOR.NODE_TEXT&&(c=!CKEDITOR.tools.trim(b.getText())||CKEDITOR.env.webkit&&b.getText()=="​");return!!(a^c)}};CKEDITOR.dom.walker.invisible=function(a){var b=CKEDITOR.dom.walker.whitespaces();return function(c){if(b(c))c=1;else{c.type==CKEDITOR.NODE_TEXT&& -(c=c.getParent());c=!c.$.offsetHeight}return!!(a^c)}};CKEDITOR.dom.walker.nodeType=function(a,b){return function(c){return!!(b^c.type==a)}};CKEDITOR.dom.walker.bogus=function(a){function b(a){return!g(a)&&!n(a)}return function(c){var f=CKEDITOR.env.needsBrFiller?c.is&&c.is("br"):c.getText&&h.test(c.getText());if(f){f=c.getParent();c=c.getNext(b);f=f.isBlockBoundary()&&(!c||c.type==CKEDITOR.NODE_ELEMENT&&c.isBlockBoundary())}return!!(a^f)}};CKEDITOR.dom.walker.temp=function(a){return function(b){b.type!= -CKEDITOR.NODE_ELEMENT&&(b=b.getParent());b=b&&b.hasAttribute("data-cke-temp");return!!(a^b)}};var h=/^[\t\r\n ]*(?:&nbsp;|\xa0)$/,g=CKEDITOR.dom.walker.whitespaces(),n=CKEDITOR.dom.walker.bookmark(),i=CKEDITOR.dom.walker.temp();CKEDITOR.dom.walker.ignored=function(a){return function(b){b=g(b)||n(b)||i(b);return!!(a^b)}};var j=CKEDITOR.dom.walker.ignored(),o=function(a){var b={},c;for(c in a)CKEDITOR.dtd[c]["#"]&&(b[c]=1);return b}(CKEDITOR.dtd.$block);CKEDITOR.dom.walker.editable=function(a){return function(c){return!!(a^ -b(c))}};CKEDITOR.dom.element.prototype.getBogus=function(){var a=this;do a=a.getPreviousSourceNode();while(n(a)||g(a)||a.type==CKEDITOR.NODE_ELEMENT&&a.is(CKEDITOR.dtd.$inline)&&!a.is(CKEDITOR.dtd.$empty));return a&&(CKEDITOR.env.needsBrFiller?a.is&&a.is("br"):a.getText&&h.test(a.getText()))?a:false}})(); -CKEDITOR.dom.range=function(a){this.endOffset=this.endContainer=this.startOffset=this.startContainer=null;this.collapsed=true;var e=a instanceof CKEDITOR.dom.document;this.document=e?a:a.getDocument();this.root=e?a.getBody():a}; -(function(){function a(){var a=false,b=CKEDITOR.dom.walker.whitespaces(),c=CKEDITOR.dom.walker.bookmark(true),d=CKEDITOR.dom.walker.bogus();return function(f){if(c(f)||b(f))return true;if(d(f)&&!a)return a=true;return f.type==CKEDITOR.NODE_TEXT&&(f.hasAscendant("pre")||CKEDITOR.tools.trim(f.getText()).length)||f.type==CKEDITOR.NODE_ELEMENT&&!f.is(h)?false:true}}function e(a){var b=CKEDITOR.dom.walker.whitespaces(),c=CKEDITOR.dom.walker.bookmark(1);return function(d){return c(d)||b(d)?true:!a&&g(d)|| -d.type==CKEDITOR.NODE_ELEMENT&&d.is(CKEDITOR.dtd.$removeEmpty)}}function b(a){return function(){var b;return this[a?"getPreviousNode":"getNextNode"](function(a){!b&&j(a)&&(b=a);return i(a)&&!(g(a)&&a.equals(b))})}}var c=function(a){a.collapsed=a.startContainer&&a.endContainer&&a.startContainer.equals(a.endContainer)&&a.startOffset==a.endOffset},d=function(a,b,c,d){a.optimizeBookmark();var f=a.startContainer,e=a.endContainer,h=a.startOffset,m=a.endOffset,k,l;if(e.type==CKEDITOR.NODE_TEXT)e=e.split(m); -else if(e.getChildCount()>0)if(m>=e.getChildCount()){e=e.append(a.document.createText(""));l=true}else e=e.getChild(m);if(f.type==CKEDITOR.NODE_TEXT){f.split(h);f.equals(e)&&(e=f.getNext())}else if(h)if(h>=f.getChildCount()){f=f.append(a.document.createText(""));k=true}else f=f.getChild(h).getPrevious();else{f=f.append(a.document.createText(""),1);k=true}var h=f.getParents(),m=e.getParents(),t,i,r;for(t=0;t<h.length;t++){i=h[t];r=m[t];if(!i.equals(r))break}for(var g=c,j,n,E,z=t;z<h.length;z++){j= -h[z];g&&!j.equals(f)&&(n=g.append(j.clone()));for(j=j.getNext();j;){if(j.equals(m[z])||j.equals(e))break;E=j.getNext();if(b==2)g.append(j.clone(true));else{j.remove();b==1&&g.append(j)}j=E}g&&(g=n)}g=c;for(c=t;c<m.length;c++){j=m[c];b>0&&!j.equals(e)&&(n=g.append(j.clone()));if(!h[c]||j.$.parentNode!=h[c].$.parentNode)for(j=j.getPrevious();j;){if(j.equals(h[c])||j.equals(f))break;E=j.getPrevious();if(b==2)g.$.insertBefore(j.$.cloneNode(true),g.$.firstChild);else{j.remove();b==1&&g.$.insertBefore(j.$, -g.$.firstChild)}j=E}g&&(g=n)}if(b==2){i=a.startContainer;if(i.type==CKEDITOR.NODE_TEXT){i.$.data=i.$.data+i.$.nextSibling.data;i.$.parentNode.removeChild(i.$.nextSibling)}a=a.endContainer;if(a.type==CKEDITOR.NODE_TEXT&&a.$.nextSibling){a.$.data=a.$.data+a.$.nextSibling.data;a.$.parentNode.removeChild(a.$.nextSibling)}}else{if(i&&r&&(f.$.parentNode!=i.$.parentNode||e.$.parentNode!=r.$.parentNode)){b=r.getIndex();k&&r.$.parentNode==f.$.parentNode&&b--;if(d&&i.type==CKEDITOR.NODE_ELEMENT){d=CKEDITOR.dom.element.createFromHtml('<span data-cke-bookmark="1" style="display:none">&nbsp;</span>', -a.document);d.insertAfter(i);i.mergeSiblings(false);a.moveToBookmark({startNode:d})}else a.setStart(r.getParent(),b)}a.collapse(true)}k&&f.remove();l&&e.$.parentNode&&e.remove()},h={abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,"var":1},g=CKEDITOR.dom.walker.bogus(),n=/^[\t\r\n ]*(?:&nbsp;|\xa0)$/,i=CKEDITOR.dom.walker.editable(),j=CKEDITOR.dom.walker.ignored(true);CKEDITOR.dom.range.prototype= -{clone:function(){var a=new CKEDITOR.dom.range(this.root);a.startContainer=this.startContainer;a.startOffset=this.startOffset;a.endContainer=this.endContainer;a.endOffset=this.endOffset;a.collapsed=this.collapsed;return a},collapse:function(a){if(a){this.endContainer=this.startContainer;this.endOffset=this.startOffset}else{this.startContainer=this.endContainer;this.startOffset=this.endOffset}this.collapsed=true},cloneContents:function(){var a=new CKEDITOR.dom.documentFragment(this.document);this.collapsed|| -d(this,2,a);return a},deleteContents:function(a){this.collapsed||d(this,0,null,a)},extractContents:function(a){var b=new CKEDITOR.dom.documentFragment(this.document);this.collapsed||d(this,1,b,a);return b},createBookmark:function(a){var b,c,d,f,e=this.collapsed;b=this.document.createElement("span");b.data("cke-bookmark",1);b.setStyle("display","none");b.setHtml("&nbsp;");if(a){d="cke_bm_"+CKEDITOR.tools.getNextNumber();b.setAttribute("id",d+(e?"C":"S"))}if(!e){c=b.clone();c.setHtml("&nbsp;");a&&c.setAttribute("id", -d+"E");f=this.clone();f.collapse();f.insertNode(c)}f=this.clone();f.collapse(true);f.insertNode(b);if(c){this.setStartAfter(b);this.setEndBefore(c)}else this.moveToPosition(b,CKEDITOR.POSITION_AFTER_END);return{startNode:a?d+(e?"C":"S"):b,endNode:a?d+"E":c,serializable:a,collapsed:e}},createBookmark2:function(){function a(b){var c=b.container,d=b.offset,f;f=c;var e=d;f=f.type!=CKEDITOR.NODE_ELEMENT||e===0||e==f.getChildCount()?0:f.getChild(e-1).type==CKEDITOR.NODE_TEXT&&f.getChild(e).type==CKEDITOR.NODE_TEXT; -if(f){c=c.getChild(d-1);d=c.getLength()}c.type==CKEDITOR.NODE_ELEMENT&&d>1&&(d=c.getChild(d-1).getIndex(true)+1);if(c.type==CKEDITOR.NODE_TEXT){f=c;for(e=0;(f=f.getPrevious())&&f.type==CKEDITOR.NODE_TEXT;)e=e+f.getLength();d=d+e}b.container=c;b.offset=d}return function(b){var c=this.collapsed,d={container:this.startContainer,offset:this.startOffset},f={container:this.endContainer,offset:this.endOffset};if(b){a(d);c||a(f)}return{start:d.container.getAddress(b),end:c?null:f.container.getAddress(b), -startOffset:d.offset,endOffset:f.offset,normalized:b,collapsed:c,is2:true}}}(),moveToBookmark:function(a){if(a.is2){var b=this.document.getByAddress(a.start,a.normalized),c=a.startOffset,d=a.end&&this.document.getByAddress(a.end,a.normalized),a=a.endOffset;this.setStart(b,c);d?this.setEnd(d,a):this.collapse(true)}else{b=(c=a.serializable)?this.document.getById(a.startNode):a.startNode;a=c?this.document.getById(a.endNode):a.endNode;this.setStartBefore(b);b.remove();if(a){this.setEndBefore(a);a.remove()}else this.collapse(true)}}, -getBoundaryNodes:function(){var a=this.startContainer,b=this.endContainer,c=this.startOffset,d=this.endOffset,f;if(a.type==CKEDITOR.NODE_ELEMENT){f=a.getChildCount();if(f>c)a=a.getChild(c);else if(f<1)a=a.getPreviousSourceNode();else{for(a=a.$;a.lastChild;)a=a.lastChild;a=new CKEDITOR.dom.node(a);a=a.getNextSourceNode()||a}}if(b.type==CKEDITOR.NODE_ELEMENT){f=b.getChildCount();if(f>d)b=b.getChild(d).getPreviousSourceNode(true);else if(f<1)b=b.getPreviousSourceNode();else{for(b=b.$;b.lastChild;)b= -b.lastChild;b=new CKEDITOR.dom.node(b)}}a.getPosition(b)&CKEDITOR.POSITION_FOLLOWING&&(a=b);return{startNode:a,endNode:b}},getCommonAncestor:function(a,b){var c=this.startContainer,d=this.endContainer,c=c.equals(d)?a&&c.type==CKEDITOR.NODE_ELEMENT&&this.startOffset==this.endOffset-1?c.getChild(this.startOffset):c:c.getCommonAncestor(d);return b&&!c.is?c.getParent():c},optimize:function(){var a=this.startContainer,b=this.startOffset;a.type!=CKEDITOR.NODE_ELEMENT&&(b?b>=a.getLength()&&this.setStartAfter(a): -this.setStartBefore(a));a=this.endContainer;b=this.endOffset;a.type!=CKEDITOR.NODE_ELEMENT&&(b?b>=a.getLength()&&this.setEndAfter(a):this.setEndBefore(a))},optimizeBookmark:function(){var a=this.startContainer,b=this.endContainer;a.is&&(a.is("span")&&a.data("cke-bookmark"))&&this.setStartAt(a,CKEDITOR.POSITION_BEFORE_START);b&&(b.is&&b.is("span")&&b.data("cke-bookmark"))&&this.setEndAt(b,CKEDITOR.POSITION_AFTER_END)},trim:function(a,b){var c=this.startContainer,d=this.startOffset,f=this.collapsed; -if((!a||f)&&c&&c.type==CKEDITOR.NODE_TEXT){if(d)if(d>=c.getLength()){d=c.getIndex()+1;c=c.getParent()}else{var e=c.split(d),d=c.getIndex()+1,c=c.getParent();if(this.startContainer.equals(this.endContainer))this.setEnd(e,this.endOffset-this.startOffset);else if(c.equals(this.endContainer))this.endOffset=this.endOffset+1}else{d=c.getIndex();c=c.getParent()}this.setStart(c,d);if(f){this.collapse(true);return}}c=this.endContainer;d=this.endOffset;if(!b&&!f&&c&&c.type==CKEDITOR.NODE_TEXT){if(d){d>=c.getLength()|| -c.split(d);d=c.getIndex()+1}else d=c.getIndex();c=c.getParent();this.setEnd(c,d)}},enlarge:function(a,b){function c(a){return a&&a.type==CKEDITOR.NODE_ELEMENT&&a.hasAttribute("contenteditable")?null:a}switch(a){case CKEDITOR.ENLARGE_INLINE:var d=1;case CKEDITOR.ENLARGE_ELEMENT:if(this.collapsed)break;var f=this.getCommonAncestor(),e=this.root,h,m,k,l,t,i=false,r,j;r=this.startContainer;j=this.startOffset;if(r.type==CKEDITOR.NODE_TEXT){if(j){r=!CKEDITOR.tools.trim(r.substring(0,j)).length&&r;i=!!r}if(r&& -!(l=r.getPrevious()))k=r.getParent()}else{j&&(l=r.getChild(j-1)||r.getLast());l||(k=r)}for(k=c(k);k||l;){if(k&&!l){!t&&k.equals(f)&&(t=true);if(d?k.isBlockBoundary():!e.contains(k))break;if(!i||k.getComputedStyle("display")!="inline"){i=false;t?h=k:this.setStartBefore(k)}l=k.getPrevious()}for(;l;){r=false;if(l.type==CKEDITOR.NODE_COMMENT)l=l.getPrevious();else{if(l.type==CKEDITOR.NODE_TEXT){j=l.getText();/[^\s\ufeff]/.test(j)&&(l=null);r=/[\s\ufeff]$/.test(j)}else if((l.$.offsetWidth>0||b&&l.is("br"))&& -!l.data("cke-bookmark"))if(i&&CKEDITOR.dtd.$removeEmpty[l.getName()]){j=l.getText();if(/[^\s\ufeff]/.test(j))l=null;else for(var g=l.$.getElementsByTagName("*"),n=0,E;E=g[n++];)if(!CKEDITOR.dtd.$removeEmpty[E.nodeName.toLowerCase()]){l=null;break}l&&(r=!!j.length)}else l=null;r&&(i?t?h=k:k&&this.setStartBefore(k):i=true);if(l){r=l.getPrevious();if(!k&&!r){k=l;l=null;break}l=r}else k=null}}k&&(k=c(k.getParent()))}r=this.endContainer;j=this.endOffset;k=l=null;t=i=false;if(r.type==CKEDITOR.NODE_TEXT){r= -!CKEDITOR.tools.trim(r.substring(j)).length&&r;i=!(r&&r.getLength());if(r&&!(l=r.getNext()))k=r.getParent()}else(l=r.getChild(j))||(k=r);for(;k||l;){if(k&&!l){!t&&k.equals(f)&&(t=true);if(d?k.isBlockBoundary():!e.contains(k))break;if(!i||k.getComputedStyle("display")!="inline"){i=false;t?m=k:k&&this.setEndAfter(k)}l=k.getNext()}for(;l;){r=false;if(l.type==CKEDITOR.NODE_TEXT){j=l.getText();/[^\s\ufeff]/.test(j)&&(l=null);r=/^[\s\ufeff]/.test(j)}else if(l.type==CKEDITOR.NODE_ELEMENT){if((l.$.offsetWidth> -0||b&&l.is("br"))&&!l.data("cke-bookmark"))if(i&&CKEDITOR.dtd.$removeEmpty[l.getName()]){j=l.getText();if(/[^\s\ufeff]/.test(j))l=null;else{g=l.$.getElementsByTagName("*");for(n=0;E=g[n++];)if(!CKEDITOR.dtd.$removeEmpty[E.nodeName.toLowerCase()]){l=null;break}}l&&(r=!!j.length)}else l=null}else r=1;r&&i&&(t?m=k:this.setEndAfter(k));if(l){r=l.getNext();if(!k&&!r){k=l;l=null;break}l=r}else k=null}k&&(k=c(k.getParent()))}if(h&&m){f=h.contains(m)?m:h;this.setStartBefore(f);this.setEndAfter(f)}break;case CKEDITOR.ENLARGE_BLOCK_CONTENTS:case CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS:k= -new CKEDITOR.dom.range(this.root);e=this.root;k.setStartAt(e,CKEDITOR.POSITION_AFTER_START);k.setEnd(this.startContainer,this.startOffset);k=new CKEDITOR.dom.walker(k);var z,M,Q=CKEDITOR.dom.walker.blockBoundary(a==CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS?{br:1}:null),v=null,w=function(a){if(a.type==CKEDITOR.NODE_ELEMENT&&a.getAttribute("contenteditable")=="false")if(v){if(v.equals(a)){v=null;return}}else v=a;else if(v)return;var b=Q(a);b||(z=a);return b},d=function(a){var b=w(a);!b&&(a.is&&a.is("br"))&& -(M=a);return b};k.guard=w;k=k.lastBackward();z=z||e;this.setStartAt(z,!z.is("br")&&(!k&&this.checkStartOfBlock()||k&&z.contains(k))?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_AFTER_END);if(a==CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS){k=this.clone();k=new CKEDITOR.dom.walker(k);var H=CKEDITOR.dom.walker.whitespaces(),C=CKEDITOR.dom.walker.bookmark();k.evaluator=function(a){return!H(a)&&!C(a)};if((k=k.previous())&&k.type==CKEDITOR.NODE_ELEMENT&&k.is("br"))break}k=this.clone();k.collapse();k.setEndAt(e, -CKEDITOR.POSITION_BEFORE_END);k=new CKEDITOR.dom.walker(k);k.guard=a==CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS?d:w;z=null;k=k.lastForward();z=z||e;this.setEndAt(z,!k&&this.checkEndOfBlock()||k&&z.contains(k)?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_BEFORE_START);M&&this.setEndAfter(M)}},shrink:function(a,b,c){if(!this.collapsed){var a=a||CKEDITOR.SHRINK_TEXT,d=this.clone(),f=this.startContainer,e=this.endContainer,h=this.startOffset,m=this.endOffset,k=1,l=1;if(f&&f.type==CKEDITOR.NODE_TEXT)if(h)if(h>= -f.getLength())d.setStartAfter(f);else{d.setStartBefore(f);k=0}else d.setStartBefore(f);if(e&&e.type==CKEDITOR.NODE_TEXT)if(m)if(m>=e.getLength())d.setEndAfter(e);else{d.setEndAfter(e);l=0}else d.setEndBefore(e);var d=new CKEDITOR.dom.walker(d),t=CKEDITOR.dom.walker.bookmark();d.evaluator=function(b){return b.type==(a==CKEDITOR.SHRINK_ELEMENT?CKEDITOR.NODE_ELEMENT:CKEDITOR.NODE_TEXT)};var j;d.guard=function(b,d){if(t(b))return true;if(a==CKEDITOR.SHRINK_ELEMENT&&b.type==CKEDITOR.NODE_TEXT||d&&b.equals(j)|| -c===false&&b.type==CKEDITOR.NODE_ELEMENT&&b.isBlockBoundary()||b.type==CKEDITOR.NODE_ELEMENT&&b.hasAttribute("contenteditable"))return false;!d&&b.type==CKEDITOR.NODE_ELEMENT&&(j=b);return true};if(k)(f=d[a==CKEDITOR.SHRINK_ELEMENT?"lastForward":"next"]())&&this.setStartAt(f,b?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_START);if(l){d.reset();(d=d[a==CKEDITOR.SHRINK_ELEMENT?"lastBackward":"previous"]())&&this.setEndAt(d,b?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_AFTER_END)}return!(!k&& -!l)}},insertNode:function(a){this.optimizeBookmark();this.trim(false,true);var b=this.startContainer,c=b.getChild(this.startOffset);c?a.insertBefore(c):b.append(a);a.getParent()&&a.getParent().equals(this.endContainer)&&this.endOffset++;this.setStartBefore(a)},moveToPosition:function(a,b){this.setStartAt(a,b);this.collapse(true)},moveToRange:function(a){this.setStart(a.startContainer,a.startOffset);this.setEnd(a.endContainer,a.endOffset)},selectNodeContents:function(a){this.setStart(a,0);this.setEnd(a, -a.type==CKEDITOR.NODE_TEXT?a.getLength():a.getChildCount())},setStart:function(a,b){if(a.type==CKEDITOR.NODE_ELEMENT&&CKEDITOR.dtd.$empty[a.getName()]){b=a.getIndex();a=a.getParent()}this.startContainer=a;this.startOffset=b;if(!this.endContainer){this.endContainer=a;this.endOffset=b}c(this)},setEnd:function(a,b){if(a.type==CKEDITOR.NODE_ELEMENT&&CKEDITOR.dtd.$empty[a.getName()]){b=a.getIndex()+1;a=a.getParent()}this.endContainer=a;this.endOffset=b;if(!this.startContainer){this.startContainer=a;this.startOffset= -b}c(this)},setStartAfter:function(a){this.setStart(a.getParent(),a.getIndex()+1)},setStartBefore:function(a){this.setStart(a.getParent(),a.getIndex())},setEndAfter:function(a){this.setEnd(a.getParent(),a.getIndex()+1)},setEndBefore:function(a){this.setEnd(a.getParent(),a.getIndex())},setStartAt:function(a,b){switch(b){case CKEDITOR.POSITION_AFTER_START:this.setStart(a,0);break;case CKEDITOR.POSITION_BEFORE_END:a.type==CKEDITOR.NODE_TEXT?this.setStart(a,a.getLength()):this.setStart(a,a.getChildCount()); -break;case CKEDITOR.POSITION_BEFORE_START:this.setStartBefore(a);break;case CKEDITOR.POSITION_AFTER_END:this.setStartAfter(a)}c(this)},setEndAt:function(a,b){switch(b){case CKEDITOR.POSITION_AFTER_START:this.setEnd(a,0);break;case CKEDITOR.POSITION_BEFORE_END:a.type==CKEDITOR.NODE_TEXT?this.setEnd(a,a.getLength()):this.setEnd(a,a.getChildCount());break;case CKEDITOR.POSITION_BEFORE_START:this.setEndBefore(a);break;case CKEDITOR.POSITION_AFTER_END:this.setEndAfter(a)}c(this)},fixBlock:function(a,b){var c= -this.createBookmark(),d=this.document.createElement(b);this.collapse(a);this.enlarge(CKEDITOR.ENLARGE_BLOCK_CONTENTS);this.extractContents().appendTo(d);d.trim();d.appendBogus();this.insertNode(d);this.moveToBookmark(c);return d},splitBlock:function(a){var b=new CKEDITOR.dom.elementPath(this.startContainer,this.root),c=new CKEDITOR.dom.elementPath(this.endContainer,this.root),d=b.block,f=c.block,e=null;if(!b.blockLimit.equals(c.blockLimit))return null;if(a!="br"){if(!d){d=this.fixBlock(true,a);f= -(new CKEDITOR.dom.elementPath(this.endContainer,this.root)).block}f||(f=this.fixBlock(false,a))}a=d&&this.checkStartOfBlock();b=f&&this.checkEndOfBlock();this.deleteContents();if(d&&d.equals(f))if(b){e=new CKEDITOR.dom.elementPath(this.startContainer,this.root);this.moveToPosition(f,CKEDITOR.POSITION_AFTER_END);f=null}else if(a){e=new CKEDITOR.dom.elementPath(this.startContainer,this.root);this.moveToPosition(d,CKEDITOR.POSITION_BEFORE_START);d=null}else{f=this.splitElement(d);d.is("ul","ol")||d.appendBogus()}return{previousBlock:d, -nextBlock:f,wasStartOfBlock:a,wasEndOfBlock:b,elementPath:e}},splitElement:function(a){if(!this.collapsed)return null;this.setEndAt(a,CKEDITOR.POSITION_BEFORE_END);var b=this.extractContents(),c=a.clone(false);b.appendTo(c);c.insertAfter(a);this.moveToPosition(a,CKEDITOR.POSITION_AFTER_END);return c},removeEmptyBlocksAtEnd:function(){function a(d){return function(a){return b(a)||(c(a)||a.type==CKEDITOR.NODE_ELEMENT&&a.isEmptyInlineRemoveable())||d.is("table")&&a.is("caption")?false:true}}var b=CKEDITOR.dom.walker.whitespaces(), -c=CKEDITOR.dom.walker.bookmark(false);return function(b){for(var c=this.createBookmark(),d=this[b?"endPath":"startPath"](),e=d.block||d.blockLimit,m;e&&!e.equals(d.root)&&!e.getFirst(a(e));){m=e.getParent();this[b?"setEndAt":"setStartAt"](e,CKEDITOR.POSITION_AFTER_END);e.remove(1);e=m}this.moveToBookmark(c)}}(),startPath:function(){return new CKEDITOR.dom.elementPath(this.startContainer,this.root)},endPath:function(){return new CKEDITOR.dom.elementPath(this.endContainer,this.root)},checkBoundaryOfElement:function(a, -b){var c=b==CKEDITOR.START,d=this.clone();d.collapse(c);d[c?"setStartAt":"setEndAt"](a,c?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_END);d=new CKEDITOR.dom.walker(d);d.evaluator=e(c);return d[c?"checkBackward":"checkForward"]()},checkStartOfBlock:function(){var b=this.startContainer,c=this.startOffset;if(CKEDITOR.env.ie&&c&&b.type==CKEDITOR.NODE_TEXT){b=CKEDITOR.tools.ltrim(b.substring(0,c));n.test(b)&&this.trim(0,1)}this.trim();b=new CKEDITOR.dom.elementPath(this.startContainer,this.root); -c=this.clone();c.collapse(true);c.setStartAt(b.block||b.blockLimit,CKEDITOR.POSITION_AFTER_START);b=new CKEDITOR.dom.walker(c);b.evaluator=a();return b.checkBackward()},checkEndOfBlock:function(){var b=this.endContainer,c=this.endOffset;if(CKEDITOR.env.ie&&b.type==CKEDITOR.NODE_TEXT){b=CKEDITOR.tools.rtrim(b.substring(c));n.test(b)&&this.trim(1,0)}this.trim();b=new CKEDITOR.dom.elementPath(this.endContainer,this.root);c=this.clone();c.collapse(false);c.setEndAt(b.block||b.blockLimit,CKEDITOR.POSITION_BEFORE_END); -b=new CKEDITOR.dom.walker(c);b.evaluator=a();return b.checkForward()},getPreviousNode:function(a,b,c){var d=this.clone();d.collapse(1);d.setStartAt(c||this.root,CKEDITOR.POSITION_AFTER_START);c=new CKEDITOR.dom.walker(d);c.evaluator=a;c.guard=b;return c.previous()},getNextNode:function(a,b,c){var d=this.clone();d.collapse();d.setEndAt(c||this.root,CKEDITOR.POSITION_BEFORE_END);c=new CKEDITOR.dom.walker(d);c.evaluator=a;c.guard=b;return c.next()},checkReadOnly:function(){function a(b,c){for(;b;){if(b.type== -CKEDITOR.NODE_ELEMENT){if(b.getAttribute("contentEditable")=="false"&&!b.data("cke-editable"))return 0;if(b.is("html")||b.getAttribute("contentEditable")=="true"&&(b.contains(c)||b.equals(c)))break}b=b.getParent()}return 1}return function(){var b=this.startContainer,c=this.endContainer;return!(a(b,c)&&a(c,b))}}(),moveToElementEditablePosition:function(a,b){if(a.type==CKEDITOR.NODE_ELEMENT&&!a.isEditable(false)){this.moveToPosition(a,b?CKEDITOR.POSITION_AFTER_END:CKEDITOR.POSITION_BEFORE_START);return true}for(var c= -0;a;){if(a.type==CKEDITOR.NODE_TEXT){b&&this.endContainer&&this.checkEndOfBlock()&&n.test(a.getText())?this.moveToPosition(a,CKEDITOR.POSITION_BEFORE_START):this.moveToPosition(a,b?CKEDITOR.POSITION_AFTER_END:CKEDITOR.POSITION_BEFORE_START);c=1;break}if(a.type==CKEDITOR.NODE_ELEMENT)if(a.isEditable()){this.moveToPosition(a,b?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_AFTER_START);c=1}else if(b&&a.is("br")&&this.endContainer&&this.checkEndOfBlock())this.moveToPosition(a,CKEDITOR.POSITION_BEFORE_START); -else if(a.getAttribute("contenteditable")=="false"&&a.is(CKEDITOR.dtd.$block)){this.setStartBefore(a);this.setEndAfter(a);return true}var d=a,f=c,e=void 0;d.type==CKEDITOR.NODE_ELEMENT&&d.isEditable(false)&&(e=d[b?"getLast":"getFirst"](j));!f&&!e&&(e=d[b?"getPrevious":"getNext"](j));a=e}return!!c},moveToClosestEditablePosition:function(a,b){var c=new CKEDITOR.dom.range(this.root),d=0,f,e=[CKEDITOR.POSITION_AFTER_END,CKEDITOR.POSITION_BEFORE_START];c.moveToPosition(a,e[b?0:1]);if(a.is(CKEDITOR.dtd.$block)){if(f= -c[b?"getNextEditableNode":"getPreviousEditableNode"]()){d=1;if(f.type==CKEDITOR.NODE_ELEMENT&&f.is(CKEDITOR.dtd.$block)&&f.getAttribute("contenteditable")=="false"){c.setStartAt(f,CKEDITOR.POSITION_BEFORE_START);c.setEndAt(f,CKEDITOR.POSITION_AFTER_END)}else c.moveToPosition(f,e[b?1:0])}}else d=1;d&&this.moveToRange(c);return!!d},moveToElementEditStart:function(a){return this.moveToElementEditablePosition(a)},moveToElementEditEnd:function(a){return this.moveToElementEditablePosition(a,true)},getEnclosedNode:function(){var a= -this.clone();a.optimize();if(a.startContainer.type!=CKEDITOR.NODE_ELEMENT||a.endContainer.type!=CKEDITOR.NODE_ELEMENT)return null;var a=new CKEDITOR.dom.walker(a),b=CKEDITOR.dom.walker.bookmark(false,true),c=CKEDITOR.dom.walker.whitespaces(true);a.evaluator=function(a){return c(a)&&b(a)};var d=a.next();a.reset();return d&&d.equals(a.previous())?d:null},getTouchedStartNode:function(){var a=this.startContainer;return this.collapsed||a.type!=CKEDITOR.NODE_ELEMENT?a:a.getChild(this.startOffset)||a},getTouchedEndNode:function(){var a= -this.endContainer;return this.collapsed||a.type!=CKEDITOR.NODE_ELEMENT?a:a.getChild(this.endOffset-1)||a},getNextEditableNode:b(),getPreviousEditableNode:b(1),scrollIntoView:function(){var a=new CKEDITOR.dom.element.createFromHtml("<span>&nbsp;</span>",this.document),b,c,d,f=this.clone();f.optimize();if(d=f.startContainer.type==CKEDITOR.NODE_TEXT){c=f.startContainer.getText();b=f.startContainer.split(f.startOffset);a.insertAfter(f.startContainer)}else f.insertNode(a);a.scrollIntoView();if(d){f.startContainer.setText(c); -b.remove()}a.remove()}}})();CKEDITOR.POSITION_AFTER_START=1;CKEDITOR.POSITION_BEFORE_END=2;CKEDITOR.POSITION_BEFORE_START=3;CKEDITOR.POSITION_AFTER_END=4;CKEDITOR.ENLARGE_ELEMENT=1;CKEDITOR.ENLARGE_BLOCK_CONTENTS=2;CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS=3;CKEDITOR.ENLARGE_INLINE=4;CKEDITOR.START=1;CKEDITOR.END=2;CKEDITOR.SHRINK_ELEMENT=1;CKEDITOR.SHRINK_TEXT=2;"use strict"; -(function(){function a(a){if(!(arguments.length<1)){this.range=a;this.forceBrBreak=0;this.enlargeBr=1;this.enforceRealBlocks=0;this._||(this._={})}}function e(a,b,c){for(a=a.getNextSourceNode(b,null,c);!h(a);)a=a.getNextSourceNode(b,null,c);return a}function b(a){var b=[];a.forEach(function(a){if(a.getAttribute("contenteditable")=="true"){b.push(a);return false}},CKEDITOR.NODE_ELEMENT,true);return b}function c(a,d,e,h){a:{h==void 0&&(h=b(e));for(var g;g=h.shift();)if(g.getDtd().p){h={element:g,remaining:h}; -break a}h=null}if(!h)return 0;if((g=CKEDITOR.filter.instances[h.element.data("cke-filter")])&&!g.check(d))return c(a,d,e,h.remaining);d=new CKEDITOR.dom.range(h.element);d.selectNodeContents(h.element);d=d.createIterator();d.enlargeBr=a.enlargeBr;d.enforceRealBlocks=a.enforceRealBlocks;d.activeFilter=d.filter=g;a._.nestedEditable={element:h.element,container:e,remaining:h.remaining,iterator:d};return 1}var d=/^[\r\n\t ]+$/,h=CKEDITOR.dom.walker.bookmark(false,true),g=CKEDITOR.dom.walker.whitespaces(true), -n=function(a){return h(a)&&g(a)};a.prototype={getNextParagraph:function(a){var b,g,q,s,u,a=a||"p";if(this._.nestedEditable){if(b=this._.nestedEditable.iterator.getNextParagraph(a)){this.activeFilter=this._.nestedEditable.iterator.activeFilter;return b}this.activeFilter=this.filter;if(c(this,a,this._.nestedEditable.container,this._.nestedEditable.remaining)){this.activeFilter=this._.nestedEditable.iterator.activeFilter;return this._.nestedEditable.iterator.getNextParagraph(a)}this._.nestedEditable= -null}if(!this.range.root.getDtd()[a])return null;if(!this._.started){var f=this.range.clone();f.shrink(CKEDITOR.SHRINK_ELEMENT,true);g=f.endContainer.hasAscendant("pre",true)||f.startContainer.hasAscendant("pre",true);f.enlarge(this.forceBrBreak&&!g||!this.enlargeBr?CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS:CKEDITOR.ENLARGE_BLOCK_CONTENTS);if(!f.collapsed){g=new CKEDITOR.dom.walker(f.clone());var p=CKEDITOR.dom.walker.bookmark(true,true);g.evaluator=p;this._.nextNode=g.next();g=new CKEDITOR.dom.walker(f.clone()); -g.evaluator=p;g=g.previous();this._.lastNode=g.getNextSourceNode(true);if(this._.lastNode&&this._.lastNode.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.trim(this._.lastNode.getText())&&this._.lastNode.getParent().isBlockBoundary()){p=this.range.clone();p.moveToPosition(this._.lastNode,CKEDITOR.POSITION_AFTER_END);if(p.checkEndOfBlock()){p=new CKEDITOR.dom.elementPath(p.endContainer,p.root);this._.lastNode=(p.block||p.blockLimit).getNextSourceNode(true)}}if(!this._.lastNode||!f.root.contains(this._.lastNode)){this._.lastNode= -this._.docEndMarker=f.document.createText("");this._.lastNode.insertAfter(g)}f=null}this._.started=1;g=f}p=this._.nextNode;f=this._.lastNode;for(this._.nextNode=null;p;){var y=0,m=p.hasAscendant("pre"),k=p.type!=CKEDITOR.NODE_ELEMENT,l=0;if(k)p.type==CKEDITOR.NODE_TEXT&&d.test(p.getText())&&(k=0);else{var t=p.getName();if(CKEDITOR.dtd.$block[t]&&p.getAttribute("contenteditable")=="false"){b=p;c(this,a,b);break}else if(p.isBlockBoundary(this.forceBrBreak&&!m&&{br:1})){if(t=="br")k=1;else if(!g&&!p.getChildCount()&& -t!="hr"){b=p;q=p.equals(f);break}if(g){g.setEndAt(p,CKEDITOR.POSITION_BEFORE_START);if(t!="br")this._.nextNode=p}y=1}else{if(p.getFirst()){if(!g){g=this.range.clone();g.setStartAt(p,CKEDITOR.POSITION_BEFORE_START)}p=p.getFirst();continue}k=1}}if(k&&!g){g=this.range.clone();g.setStartAt(p,CKEDITOR.POSITION_BEFORE_START)}q=(!y||k)&&p.equals(f);if(g&&!y)for(;!p.getNext(n)&&!q;){t=p.getParent();if(t.isBlockBoundary(this.forceBrBreak&&!m&&{br:1})){y=1;k=0;q||t.equals(f);g.setEndAt(t,CKEDITOR.POSITION_BEFORE_END); -break}p=t;k=1;q=p.equals(f);l=1}k&&g.setEndAt(p,CKEDITOR.POSITION_AFTER_END);p=e(p,l,f);if((q=!p)||y&&g)break}if(!b){if(!g){this._.docEndMarker&&this._.docEndMarker.remove();return this._.nextNode=null}b=new CKEDITOR.dom.elementPath(g.startContainer,g.root);p=b.blockLimit;y={div:1,th:1,td:1};b=b.block;if(!b&&p&&!this.enforceRealBlocks&&y[p.getName()]&&g.checkStartOfBlock()&&g.checkEndOfBlock()&&!p.equals(g.root))b=p;else if(!b||this.enforceRealBlocks&&b.getName()=="li"){b=this.range.document.createElement(a); -g.extractContents().appendTo(b);b.trim();g.insertNode(b);s=u=true}else if(b.getName()!="li"){if(!g.checkStartOfBlock()||!g.checkEndOfBlock()){b=b.clone(false);g.extractContents().appendTo(b);b.trim();u=g.splitBlock();s=!u.wasStartOfBlock;u=!u.wasEndOfBlock;g.insertNode(b)}}else if(!q)this._.nextNode=b.equals(f)?null:e(g.getBoundaryNodes().endNode,1,f)}if(s)(s=b.getPrevious())&&s.type==CKEDITOR.NODE_ELEMENT&&(s.getName()=="br"?s.remove():s.getLast()&&s.getLast().$.nodeName.toLowerCase()=="br"&&s.getLast().remove()); -if(u)(s=b.getLast())&&s.type==CKEDITOR.NODE_ELEMENT&&s.getName()=="br"&&(!CKEDITOR.env.needsBrFiller||s.getPrevious(h)||s.getNext(h))&&s.remove();if(!this._.nextNode)this._.nextNode=q||b.equals(f)||!f?null:e(b,1,f);return b}};CKEDITOR.dom.range.prototype.createIterator=function(){return new a(this)}})(); -CKEDITOR.command=function(a,e){this.uiItems=[];this.exec=function(b){if(this.state==CKEDITOR.TRISTATE_DISABLED||!this.checkAllowed())return false;this.editorFocus&&a.focus();return this.fire("exec")===false?true:e.exec.call(this,a,b)!==false};this.refresh=function(a,b){if(!this.readOnly&&a.readOnly)return true;if(this.context&&!b.isContextFor(this.context)){this.disable();return true}if(!this.checkAllowed(true)){this.disable();return true}this.startDisabled||this.enable();this.modes&&!this.modes[a.mode]&& -this.disable();return this.fire("refresh",{editor:a,path:b})===false?true:e.refresh&&e.refresh.apply(this,arguments)!==false};var b;this.checkAllowed=function(c){return!c&&typeof b=="boolean"?b:b=a.activeFilter.checkFeature(this)};CKEDITOR.tools.extend(this,e,{modes:{wysiwyg:1},editorFocus:1,contextSensitive:!!e.context,state:CKEDITOR.TRISTATE_DISABLED});CKEDITOR.event.call(this)}; -CKEDITOR.command.prototype={enable:function(){this.state==CKEDITOR.TRISTATE_DISABLED&&this.checkAllowed()&&this.setState(!this.preserveState||typeof this.previousState=="undefined"?CKEDITOR.TRISTATE_OFF:this.previousState)},disable:function(){this.setState(CKEDITOR.TRISTATE_DISABLED)},setState:function(a){if(this.state==a||a!=CKEDITOR.TRISTATE_DISABLED&&!this.checkAllowed())return false;this.previousState=this.state;this.state=a;this.fire("state");return true},toggleState:function(){this.state==CKEDITOR.TRISTATE_OFF? -this.setState(CKEDITOR.TRISTATE_ON):this.state==CKEDITOR.TRISTATE_ON&&this.setState(CKEDITOR.TRISTATE_OFF)}};CKEDITOR.event.implementOn(CKEDITOR.command.prototype);CKEDITOR.ENTER_P=1;CKEDITOR.ENTER_BR=2;CKEDITOR.ENTER_DIV=3; -CKEDITOR.config={customConfig:"config.js",autoUpdateElement:!0,language:"",defaultLanguage:"en",contentsLangDirection:"",enterMode:CKEDITOR.ENTER_P,forceEnterMode:!1,shiftEnterMode:CKEDITOR.ENTER_BR,docType:"<!DOCTYPE html>",bodyId:"",bodyClass:"",fullPage:!1,height:200,extraPlugins:"",removePlugins:"",protectedSource:[],tabIndex:0,width:"",baseFloatZIndex:1E4,blockedKeystrokes:[CKEDITOR.CTRL+66,CKEDITOR.CTRL+73,CKEDITOR.CTRL+85]}; -(function(){function a(a,b,c,f,k){var m=b.name;if((f||typeof a.elements!="function"||a.elements(m))&&(!a.match||a.match(b))){if(f=!k){a:if(a.nothingRequired)f=true;else{if(k=a.requiredClasses){m=b.classes;for(f=0;f<k.length;++f)if(CKEDITOR.tools.indexOf(m,k[f])==-1){f=false;break a}}f=d(b.styles,a.requiredStyles)&&d(b.attributes,a.requiredAttributes)}f=!f}if(!f){if(!a.propertiesOnly)c.valid=true;if(!c.allAttributes)c.allAttributes=e(a.attributes,b.attributes,c.validAttributes);if(!c.allStyles)c.allStyles= -e(a.styles,b.styles,c.validStyles);if(!c.allClasses){a=a.classes;b=b.classes;f=c.validClasses;if(a)if(a===true)b=true;else{for(var k=0,m=b.length,l;k<m;++k){l=b[k];f[l]||(f[l]=a(l))}b=false}else b=false;c.allClasses=b}}}}function e(a,b,c){if(!a)return false;if(a===true)return true;for(var d in b)c[d]||(c[d]=a(d,b[d]));return false}function b(a,b){if(!a)return false;if(a===true)return a;if(typeof a=="string"){a=r(a);return a=="*"?true:CKEDITOR.tools.convertArrayToObject(a.split(b))}if(CKEDITOR.tools.isArray(a))return a.length? -CKEDITOR.tools.convertArrayToObject(a):false;var c={},d=0,f;for(f in a){c[f]=a[f];d++}return d?c:false}function c(b){if(b._.filterFunction)return b._.filterFunction;var c=/^cke:(object|embed|param)$/,d=/^(object|embed|param)$/;return b._.filterFunction=function(f,e,k,m,l,h,t){var g=f.name,r,y=false;if(l)f.name=g=g.replace(c,"$1");if(k=k&&k[g]){i(f);for(g=0;g<k.length;++g)p(b,f,k[g]);j(f)}if(e){var g=f.name,k=e.elements[g],x=e.generic,e={valid:false,validAttributes:{},validClasses:{},validStyles:{}, -allAttributes:false,allClasses:false,allStyles:false};if(!k&&!x){m.push(f);return true}i(f);if(k){g=0;for(r=k.length;g<r;++g)a(k[g],f,e,true,h)}if(x){g=0;for(r=x.length;g<r;++g)a(x[g],f,e,false,h)}if(!e.valid){m.push(f);return true}h=e.validAttributes;g=e.validStyles;k=e.validClasses;r=f.attributes;var x=f.styles,n=r["class"],L=r.style,A,z,E=[],I=[],s=/^data-cke-/,q=false;delete r.style;delete r["class"];if(!e.allAttributes)for(A in r)if(!h[A])if(s.test(A)){if(A!=(z=A.replace(/^data-cke-saved-/,""))&& -!h[z]){delete r[A];q=true}}else{delete r[A];q=true}if(e.allStyles){if(L)r.style=L}else{for(A in x)g[A]?E.push(A+":"+x[A]):q=true;if(E.length)r.style=E.sort().join("; ")}if(e.allClasses)n&&(r["class"]=n);else{for(A in k)k[A]&&I.push(A);I.length&&(r["class"]=I.sort().join(" "));n&&I.length<n.split(/\s+/).length&&(q=true)}q&&(y=true);if(!t&&!o(f)){m.push(f);return true}}if(l)f.name=f.name.replace(d,"cke:$1");return y}}function d(a,b){if(!b)return true;for(var c=0;c<b.length;++c)if(!(b[c]in a))return false; -return true}function h(a){if(!a)return{};for(var a=a.split(/\s*,\s*/).sort(),b={};a.length;)b[a.shift()]=L;return b}function g(a){for(var b,c,d,f,e={},k=1,a=r(a);b=a.match(z);){if(c=b[2]){d=n(c,"styles");f=n(c,"attrs");c=n(c,"classes")}else d=f=c=null;e["$"+k++]={elements:b[1],classes:c,styles:d,attributes:f};a=a.slice(b[0].length)}return e}function n(a,b){var c=a.match(M[b]);return c?r(c[1]):null}function i(a){if(!a.styles)a.styles=CKEDITOR.tools.parseCssText(a.attributes.style||"",1);if(!a.classes)a.classes= -a.attributes["class"]?a.attributes["class"].split(/\s+/):[]}function j(a){var b=a.attributes,c;delete b.style;delete b["class"];if(c=CKEDITOR.tools.writeCssText(a.styles,true))b.style=c;a.classes.length&&(b["class"]=a.classes.sort().join(" "))}function o(a){switch(a.name){case "a":if(!a.children.length&&!a.attributes.name)return false;break;case "img":if(!a.attributes.src)return false}return true}function q(a){return!a?false:a===true?true:function(b){return b in a}}function s(){return new CKEDITOR.htmlParser.element("br")} -function u(a){return a.type==CKEDITOR.NODE_ELEMENT&&(a.name=="br"||t.$block[a.name])}function f(a,b,c){var d=a.name;if(t.$empty[d]||!a.children.length)if(d=="hr"&&b=="br")a.replaceWith(s());else{a.parent&&c.push({check:"it",el:a.parent});a.remove()}else if(t.$block[d]||d=="tr")if(b=="br"){if(a.previous&&!u(a.previous)){b=s();b.insertBefore(a)}if(a.next&&!u(a.next)){b=s();b.insertAfter(a)}a.replaceWithChildren()}else{var d=a.children,f;b:{f=t[b];for(var e=0,k=d.length,m;e<k;++e){m=d[e];if(m.type== -CKEDITOR.NODE_ELEMENT&&!f[m.name]){f=false;break b}}f=true}if(f){a.name=b;a.attributes={};c.push({check:"parent-down",el:a})}else{f=a.parent;for(var e=f.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT||f.name=="body",l,k=d.length;k>0;){m=d[--k];if(e&&(m.type==CKEDITOR.NODE_TEXT||m.type==CKEDITOR.NODE_ELEMENT&&t.$inline[m.name])){if(!l){l=new CKEDITOR.htmlParser.element(b);l.insertAfter(a);c.push({check:"parent-down",el:l})}l.add(m,0)}else{l=null;m.insertAfter(a);f.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT&&(m.type== -CKEDITOR.NODE_ELEMENT&&!t[f.name][m.name])&&c.push({check:"el-up",el:m})}}a.remove()}}else if(d=="style")a.remove();else{a.parent&&c.push({check:"it",el:a.parent});a.replaceWithChildren()}}function p(a,b,c){var d,f;for(d=0;d<c.length;++d){f=c[d];if((!f.check||a.check(f.check,false))&&(!f.left||f.left(b))){f.right(b,Q);break}}}function y(a,b){var c=b.getDefinition(),d=c.attributes,f=c.styles,e,k,m,l;if(a.name!=c.element)return false;for(e in d)if(e=="class"){c=d[e].split(/\s+/);for(m=a.classes.join("|");l= -c.pop();)if(m.indexOf(l)==-1)return false}else if(a.attributes[e]!=d[e])return false;for(k in f)if(a.styles[k]!=f[k])return false;return true}function m(a,b){var c,d;if(typeof a=="string")c=a;else if(a instanceof CKEDITOR.style)d=a;else{c=a[0];d=a[1]}return[{element:c,left:d,right:function(a,c){c.transform(a,b)}}]}function k(a){return function(b){return y(b,a)}}function l(a){return function(b,c){c[a](b)}}var t=CKEDITOR.dtd,x=CKEDITOR.tools.copy,r=CKEDITOR.tools.trim,L="cke-test",A=["","p","br","div"]; -CKEDITOR.filter=function(a){this.allowedContent=[];this.disabled=false;this.editor=null;this.id=CKEDITOR.tools.getNextNumber();this._={rules:{},transformations:{},cachedTests:{}};CKEDITOR.filter.instances[this.id]=this;if(a instanceof CKEDITOR.editor){a=this.editor=a;this.customConfig=true;var b=a.config.allowedContent;if(b===true)this.disabled=true;else{if(!b)this.customConfig=false;this.allow(b,"config",1);this.allow(a.config.extraAllowedContent,"extra",1);this.allow(A[a.enterMode]+" "+A[a.shiftEnterMode], -"default",1)}}else{this.customConfig=false;this.allow(a,"default",1)}};CKEDITOR.filter.instances={};CKEDITOR.filter.prototype={allow:function(a,c,d){if(this.disabled||this.customConfig&&!d||!a)return false;this._.cachedChecks={};var f,e;if(typeof a=="string")a=g(a);else if(a instanceof CKEDITOR.style){e=a.getDefinition();d={};a=e.attributes;d[e.element]=e={styles:e.styles,requiredStyles:e.styles&&CKEDITOR.tools.objectKeys(e.styles)};if(a){a=x(a);e.classes=a["class"]?a["class"].split(/\s+/):null;e.requiredClasses= -e.classes;delete a["class"];e.attributes=a;e.requiredAttributes=a&&CKEDITOR.tools.objectKeys(a)}a=d}else if(CKEDITOR.tools.isArray(a)){for(f=0;f<a.length;++f)e=this.allow(a[f],c,d);return e}var k,d=[];for(k in a){e=a[k];e=typeof e=="boolean"?{}:typeof e=="function"?{match:e}:x(e);if(k.charAt(0)!="$")e.elements=k;if(c)e.featureName=c.toLowerCase();var m=e;m.elements=b(m.elements,/\s+/)||null;m.propertiesOnly=m.propertiesOnly||m.elements===true;var l=/\s*,\s*/,h=void 0;for(h in I){m[h]=b(m[h],l)||null; -var p=m,t=E[h],r=b(m[E[h]],l),i=m[h],j=[],y=true,n=void 0;r?y=false:r={};for(n in i)if(n.charAt(0)=="!"){n=n.slice(1);j.push(n);r[n]=true;y=false}for(;n=j.pop();){i[n]=i["!"+n];delete i["!"+n]}p[t]=(y?false:r)||null}m.match=m.match||null;this.allowedContent.push(e);d.push(e)}c=this._.rules;k=c.elements||{};a=c.generic||[];e=0;for(m=d.length;e<m;++e){l=x(d[e]);h=l.classes===true||l.styles===true||l.attributes===true;p=l;t=void 0;for(t in I)p[t]=q(p[t]);r=true;for(t in E){t=E[t];p[t]=CKEDITOR.tools.objectKeys(p[t]); -p[t]&&(r=false)}p.nothingRequired=r;if(l.elements===true||l.elements===null){l.elements=q(l.elements);a[h?"unshift":"push"](l)}else{p=l.elements;delete l.elements;for(f in p)if(k[f])k[f][h?"unshift":"push"](l);else k[f]=[l]}}c.elements=k;c.generic=a.length?a:null;return true},applyTo:function(a,b,d,e){if(this.disabled)return false;var k=[],m=!d&&this._.rules,l=this._.transformations,h=c(this),p=this.editor&&this.editor.config.protectedSource,g=false;a.forEach(function(a){if(a.type==CKEDITOR.NODE_ELEMENT){if(a.attributes["data-cke-filter"]== -"off")return false;if(!b||!(a.name=="span"&&~CKEDITOR.tools.objectKeys(a.attributes).join("|").indexOf("data-cke-")))h(a,m,l,k,b)&&(g=true)}else if(a.type==CKEDITOR.NODE_COMMENT&&a.value.match(/^\{cke_protected\}(?!\{C\})/)){var c;a:{var d=decodeURIComponent(a.value.replace(/^\{cke_protected\}/,""));c=[];var f,e,C;if(p)for(e=0;e<p.length;++e)if((C=d.match(p[e]))&&C[0].length==d.length){c=true;break a}d=CKEDITOR.htmlParser.fragment.fromHtml(d);d.children.length==1&&(f=d.children[0]).type==CKEDITOR.NODE_ELEMENT&& -h(f,m,l,c,b);c=!c.length}c||k.push(a)}},null,true);k.length&&(g=true);for(var r,a=[],e=A[e||(this.editor?this.editor.enterMode:CKEDITOR.ENTER_P)];d=k.pop();)d.type==CKEDITOR.NODE_ELEMENT?f(d,e,a):d.remove();for(;r=a.pop();){d=r.el;if(d.parent)switch(r.check){case "it":t.$removeEmpty[d.name]&&!d.children.length?f(d,e,a):o(d)||f(d,e,a);break;case "el-up":d.parent.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT&&!t[d.parent.name][d.name]&&f(d,e,a);break;case "parent-down":d.parent.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT&& -!t[d.parent.name][d.name]&&f(d.parent,e,a)}}return g},checkFeature:function(a){if(this.disabled||!a)return true;a.toFeature&&(a=a.toFeature(this.editor));return!a.requiredContent||this.check(a.requiredContent)},disable:function(){this.disabled=true},addContentForms:function(a){if(!this.disabled&&a){var b,c,d=[],f;for(b=0;b<a.length&&!f;++b){c=a[b];if((typeof c=="string"||c instanceof CKEDITOR.style)&&this.check(c))f=c}if(f){for(b=0;b<a.length;++b)d.push(m(a[b],f));this.addTransformations(d)}}},addFeature:function(a){if(this.disabled|| -!a)return true;a.toFeature&&(a=a.toFeature(this.editor));this.allow(a.allowedContent,a.name);this.addTransformations(a.contentTransformations);this.addContentForms(a.contentForms);return this.customConfig&&a.requiredContent?this.check(a.requiredContent):true},addTransformations:function(a){var b,c;if(!this.disabled&&a){var d=this._.transformations,f;for(f=0;f<a.length;++f){b=a[f];var e=void 0,m=void 0,h=void 0,p=void 0,t=void 0,g=void 0;c=[];for(m=0;m<b.length;++m){h=b[m];if(typeof h=="string"){h= -h.split(/\s*:\s*/);p=h[0];t=null;g=h[1]}else{p=h.check;t=h.left;g=h.right}if(!e){e=h;e=e.element?e.element:p?p.match(/^([a-z0-9]+)/i)[0]:e.left.getDefinition().element}t instanceof CKEDITOR.style&&(t=k(t));c.push({check:p==e?null:p,left:t,right:typeof g=="string"?l(g):g})}b=e;d[b]||(d[b]=[]);d[b].push(c)}}},check:function(a,b,d){if(this.disabled)return true;if(CKEDITOR.tools.isArray(a)){for(var f=a.length;f--;)if(this.check(a[f],b,d))return true;return false}var e,k;if(typeof a=="string"){k=a+"<"+ -(b===false?"0":"1")+(d?"1":"0")+">";if(k in this._.cachedChecks)return this._.cachedChecks[k];f=g(a).$1;e=f.styles;var m=f.classes;f.name=f.elements;f.classes=m=m?m.split(/\s*,\s*/):[];f.styles=h(e);f.attributes=h(f.attributes);f.children=[];m.length&&(f.attributes["class"]=m.join(" "));if(e)f.attributes.style=CKEDITOR.tools.writeCssText(f.styles);e=f}else{f=a.getDefinition();e=f.styles;m=f.attributes||{};if(e){e=x(e);m.style=CKEDITOR.tools.writeCssText(e,true)}else e={};e={name:f.element,attributes:m, -classes:m["class"]?m["class"].split(/\s+/):[],styles:e,children:[]}}var m=CKEDITOR.tools.clone(e),l=[],t;if(b!==false&&(t=this._.transformations[e.name])){for(f=0;f<t.length;++f)p(this,e,t[f]);j(e)}c(this)(m,this._.rules,b===false?false:this._.transformations,l,false,!d,!d);b=l.length>0?false:CKEDITOR.tools.objectCompare(e.attributes,m.attributes,true)?true:false;typeof a=="string"&&(this._.cachedChecks[k]=b);return b},getAllowedEnterMode:function(){var a=["p","div","br"],b={p:CKEDITOR.ENTER_P,div:CKEDITOR.ENTER_DIV, -br:CKEDITOR.ENTER_BR};return function(c,d){var f=a.slice(),e;if(this.check(A[c]))return c;for(d||(f=f.reverse());e=f.pop();)if(this.check(e))return b[e];return CKEDITOR.ENTER_BR}}()};var I={styles:1,attributes:1,classes:1},E={styles:"requiredStyles",attributes:"requiredAttributes",classes:"requiredClasses"},z=/^([a-z0-9*\s]+)((?:\s*\{[!\w\-,\s\*]+\}\s*|\s*\[[!\w\-,\s\*]+\]\s*|\s*\([!\w\-,\s\*]+\)\s*){0,3})(?:;\s*|$)/i,M={styles:/{([^}]+)}/,attrs:/\[([^\]]+)\]/,classes:/\(([^\)]+)\)/},Q=CKEDITOR.filter.transformationsTools= -{sizeToStyle:function(a){this.lengthToStyle(a,"width");this.lengthToStyle(a,"height")},sizeToAttribute:function(a){this.lengthToAttribute(a,"width");this.lengthToAttribute(a,"height")},lengthToStyle:function(a,b,c){c=c||b;if(!(c in a.styles)){var d=a.attributes[b];if(d){/^\d+$/.test(d)&&(d=d+"px");a.styles[c]=d}}delete a.attributes[b]},lengthToAttribute:function(a,b,c){c=c||b;if(!(c in a.attributes)){var d=a.styles[b],f=d&&d.match(/^(\d+)(?:\.\d*)?px$/);f?a.attributes[c]=f[1]:d==L&&(a.attributes[c]= -L)}delete a.styles[b]},alignmentToStyle:function(a){if(!("float"in a.styles)){var b=a.attributes.align;if(b=="left"||b=="right")a.styles["float"]=b}delete a.attributes.align},alignmentToAttribute:function(a){if(!("align"in a.attributes)){var b=a.styles["float"];if(b=="left"||b=="right")a.attributes.align=b}delete a.styles["float"]},matchesStyle:y,transform:function(a,b){if(typeof b=="string")a.name=b;else{var c=b.getDefinition(),d=c.styles,f=c.attributes,e,k,m,l;a.name=c.element;for(e in f)if(e== -"class"){c=a.classes.join("|");for(m=f[e].split(/\s+/);l=m.pop();)c.indexOf(l)==-1&&a.classes.push(l)}else a.attributes[e]=f[e];for(k in d)a.styles[k]=d[k]}}}})(); -(function(){CKEDITOR.focusManager=function(a){if(a.focusManager)return a.focusManager;this.hasFocus=false;this.currentActive=null;this._={editor:a};return this};CKEDITOR.focusManager._={blurDelay:200};CKEDITOR.focusManager.prototype={focus:function(a){this._.timer&&clearTimeout(this._.timer);if(a)this.currentActive=a;if(!this.hasFocus&&!this._.locked){(a=CKEDITOR.currentInstance)&&a.focusManager.blur(1);this.hasFocus=true;(a=this._.editor.container)&&a.addClass("cke_focus");this._.editor.fire("focus")}}, -lock:function(){this._.locked=1},unlock:function(){delete this._.locked},blur:function(a){function e(){if(this.hasFocus){this.hasFocus=false;var a=this._.editor.container;a&&a.removeClass("cke_focus");this._.editor.fire("blur")}}if(!this._.locked){this._.timer&&clearTimeout(this._.timer);var b=CKEDITOR.focusManager._.blurDelay;a||!b?e.call(this):this._.timer=CKEDITOR.tools.setTimeout(function(){delete this._.timer;e.call(this)},b,this)}},add:function(a,e){var b=a.getCustomData("focusmanager");if(!b|| -b!=this){b&&b.remove(a);var b="focus",c="blur";if(e)if(CKEDITOR.env.ie){b="focusin";c="focusout"}else CKEDITOR.event.useCapture=1;var d={blur:function(){a.equals(this.currentActive)&&this.blur()},focus:function(){this.focus(a)}};a.on(b,d.focus,this);a.on(c,d.blur,this);if(e)CKEDITOR.event.useCapture=0;a.setCustomData("focusmanager",this);a.setCustomData("focusmanager_handlers",d)}},remove:function(a){a.removeCustomData("focusmanager");var e=a.removeCustomData("focusmanager_handlers");a.removeListener("blur", -e.blur);a.removeListener("focus",e.focus)}}})();CKEDITOR.keystrokeHandler=function(a){if(a.keystrokeHandler)return a.keystrokeHandler;this.keystrokes={};this.blockedKeystrokes={};this._={editor:a};return this}; -(function(){var a,e=function(b){var b=b.data,d=b.getKeystroke(),e=this.keystrokes[d],g=this._.editor;a=g.fire("key",{keyCode:d})===false;if(!a){e&&(a=g.execCommand(e,{from:"keystrokeHandler"})!==false);a||(a=!!this.blockedKeystrokes[d])}a&&b.preventDefault(true);return!a},b=function(b){if(a){a=false;b.data.preventDefault(true)}};CKEDITOR.keystrokeHandler.prototype={attach:function(a){a.on("keydown",e,this);if(CKEDITOR.env.opera||CKEDITOR.env.gecko&&CKEDITOR.env.mac)a.on("keypress",b,this)}}})(); -(function(){CKEDITOR.lang={languages:{af:1,ar:1,bg:1,bn:1,bs:1,ca:1,cs:1,cy:1,da:1,de:1,el:1,"en-au":1,"en-ca":1,"en-gb":1,en:1,eo:1,es:1,et:1,eu:1,fa:1,fi:1,fo:1,"fr-ca":1,fr:1,gl:1,gu:1,he:1,hi:1,hr:1,hu:1,id:1,is:1,it:1,ja:1,ka:1,km:1,ko:1,ku:1,lt:1,lv:1,mk:1,mn:1,ms:1,nb:1,nl:1,no:1,pl:1,"pt-br":1,pt:1,ro:1,ru:1,si:1,sk:1,sl:1,sq:1,"sr-latn":1,sr:1,sv:1,th:1,tr:1,ug:1,uk:1,vi:1,"zh-cn":1,zh:1},rtl:{ar:1,fa:1,he:1,ku:1,ug:1},load:function(a,e,b){if(!a||!CKEDITOR.lang.languages[a])a=this.detect(e, -a);this[a]?b(a,this[a]):CKEDITOR.scriptLoader.load(CKEDITOR.getUrl("lang/"+a+".js"),function(){this[a].dir=this.rtl[a]?"rtl":"ltr";b(a,this[a])},this)},detect:function(a,e){var b=this.languages,e=e||navigator.userLanguage||navigator.language||a,c=e.toLowerCase().match(/([a-z]+)(?:-([a-z]+))?/),d=c[1],c=c[2];b[d+"-"+c]?d=d+"-"+c:b[d]||(d=null);CKEDITOR.lang.detect=d?function(){return d}:function(a){return a};return d||a}}})(); -CKEDITOR.scriptLoader=function(){var a={},e={};return{load:function(b,c,d,h){var g=typeof b=="string";g&&(b=[b]);d||(d=CKEDITOR);var n=b.length,i=[],j=[],o=function(a){c&&(g?c.call(d,a):c.call(d,i,j))};if(n===0)o(true);else{var q=function(a,b){(b?i:j).push(a);if(--n<=0){h&&CKEDITOR.document.getDocumentElement().removeStyle("cursor");o(b)}},s=function(b,c){a[b]=1;var d=e[b];delete e[b];for(var f=0;f<d.length;f++)d[f](b,c)},u=function(b){if(a[b])q(b,true);else{var d=e[b]||(e[b]=[]);d.push(q);if(!(d.length> -1)){var f=new CKEDITOR.dom.element("script");f.setAttributes({type:"text/javascript",src:b});if(c)if(CKEDITOR.env.ie&&CKEDITOR.env.version<11)f.$.onreadystatechange=function(){if(f.$.readyState=="loaded"||f.$.readyState=="complete"){f.$.onreadystatechange=null;s(b,true)}};else{f.$.onload=function(){setTimeout(function(){s(b,true)},0)};f.$.onerror=function(){s(b,false)}}f.appendTo(CKEDITOR.document.getHead())}}};h&&CKEDITOR.document.getDocumentElement().setStyle("cursor","wait");for(var f=0;f<n;f++)u(b[f])}}, -queue:function(){function a(){var b;(b=c[0])&&this.load(b.scriptUrl,b.callback,CKEDITOR,0)}var c=[];return function(d,e){var g=this;c.push({scriptUrl:d,callback:function(){e&&e.apply(this,arguments);c.shift();a.call(g)}});c.length==1&&a.call(this)}}()}}();CKEDITOR.resourceManager=function(a,e){this.basePath=a;this.fileName=e;this.registered={};this.loaded={};this.externals={};this._={waitingList:{}}}; -CKEDITOR.resourceManager.prototype={add:function(a,e){if(this.registered[a])throw'[CKEDITOR.resourceManager.add] The resource name "'+a+'" is already registered.';var b=this.registered[a]=e||{};b.name=a;b.path=this.getPath(a);CKEDITOR.fire(a+CKEDITOR.tools.capitalize(this.fileName)+"Ready",b);return this.get(a)},get:function(a){return this.registered[a]||null},getPath:function(a){var e=this.externals[a];return CKEDITOR.getUrl(e&&e.dir||this.basePath+a+"/")},getFilePath:function(a){var e=this.externals[a]; -return CKEDITOR.getUrl(this.getPath(a)+(e?e.file:this.fileName+".js"))},addExternal:function(a,e,b){for(var a=a.split(","),c=0;c<a.length;c++){var d=a[c];b||(e=e.replace(/[^\/]+$/,function(a){b=a;return""}));this.externals[d]={dir:e,file:b||this.fileName+".js"}}},load:function(a,e,b){CKEDITOR.tools.isArray(a)||(a=a?[a]:[]);for(var c=this.loaded,d=this.registered,h=[],g={},n={},i=0;i<a.length;i++){var j=a[i];if(j)if(!c[j]&&!d[j]){var o=this.getFilePath(j);h.push(o);o in g||(g[o]=[]);g[o].push(j)}else n[j]= -this.get(j)}CKEDITOR.scriptLoader.load(h,function(a,d){if(d.length)throw'[CKEDITOR.resourceManager.load] Resource name "'+g[d[0]].join(",")+'" was not found at "'+d[0]+'".';for(var h=0;h<a.length;h++)for(var f=g[a[h]],p=0;p<f.length;p++){var i=f[p];n[i]=this.get(i);c[i]=1}e.call(b,n)},this)}};CKEDITOR.plugins=new CKEDITOR.resourceManager("plugins/","plugin"); -CKEDITOR.plugins.load=CKEDITOR.tools.override(CKEDITOR.plugins.load,function(a){var e={};return function(b,c,d){var h={},g=function(b){a.call(this,b,function(a){CKEDITOR.tools.extend(h,a);var b=[],n;for(n in a){var q=a[n],s=q&&q.requires;if(!e[n]){if(q.icons)for(var u=q.icons.split(","),f=u.length;f--;)CKEDITOR.skin.addIcon(u[f],q.path+"icons/"+(CKEDITOR.env.hidpi&&q.hidpi?"hidpi/":"")+u[f]+".png");e[n]=1}if(s){s.split&&(s=s.split(","));for(q=0;q<s.length;q++)h[s[q]]||b.push(s[q])}}if(b.length)g.call(this, -b);else{for(n in h){q=h[n];if(q.onLoad&&!q.onLoad._called){q.onLoad()===false&&delete h[n];q.onLoad._called=1}}c&&c.call(d||window,h)}},this)};g.call(this,b)}});CKEDITOR.plugins.setLang=function(a,e,b){var c=this.get(a),a=c.langEntries||(c.langEntries={}),c=c.lang||(c.lang=[]);c.split&&(c=c.split(","));CKEDITOR.tools.indexOf(c,e)==-1&&c.push(e);a[e]=b};CKEDITOR.ui=function(a){if(a.ui)return a.ui;this.items={};this.instances={};this.editor=a;this._={handlers:{}};return this}; -CKEDITOR.ui.prototype={add:function(a,e,b){b.name=a.toLowerCase();var c=this.items[a]={type:e,command:b.command||null,args:Array.prototype.slice.call(arguments,2)};CKEDITOR.tools.extend(c,b)},get:function(a){return this.instances[a]},create:function(a){var e=this.items[a],b=e&&this._.handlers[e.type],c=e&&e.command&&this.editor.getCommand(e.command),b=b&&b.create.apply(this,e.args);this.instances[a]=b;c&&c.uiItems.push(b);if(b&&!b.type)b.type=e.type;return b},addHandler:function(a,e){this._.handlers[a]= -e},space:function(a){return CKEDITOR.document.getById(this.spaceId(a))},spaceId:function(a){return this.editor.id+"_"+a}};CKEDITOR.event.implementOn(CKEDITOR.ui); -(function(){function a(a,c,h){CKEDITOR.event.call(this);a=a&&CKEDITOR.tools.clone(a);if(c!==void 0){if(c instanceof CKEDITOR.dom.element){if(!h)throw Error("One of the element modes must be specified.");}else throw Error("Expect element of type CKEDITOR.dom.element.");if(CKEDITOR.env.ie&&CKEDITOR.env.quirks&&h==CKEDITOR.ELEMENT_MODE_INLINE)throw Error("Inline element mode is not supported on IE quirks.");if(!(h==CKEDITOR.ELEMENT_MODE_INLINE?c.is(CKEDITOR.dtd.$editable)||c.is("textarea"):h==CKEDITOR.ELEMENT_MODE_REPLACE? -!c.is(CKEDITOR.dtd.$nonBodyContent):1))throw Error('The specified element mode is not supported on element: "'+c.getName()+'".');this.element=c;this.elementMode=h;this.name=this.elementMode!=CKEDITOR.ELEMENT_MODE_APPENDTO&&(c.getId()||c.getNameAtt())}else this.elementMode=CKEDITOR.ELEMENT_MODE_NONE;this._={};this.commands={};this.templates={};this.name=this.name||e();this.id=CKEDITOR.tools.getNextId();this.status="unloaded";this.config=CKEDITOR.tools.prototypedCopy(CKEDITOR.config);this.ui=new CKEDITOR.ui(this); -this.focusManager=new CKEDITOR.focusManager(this);this.keystrokeHandler=new CKEDITOR.keystrokeHandler(this);this.on("readOnly",b);this.on("selectionChange",function(a){d(this,a.data.path)});this.on("activeFilterChange",function(){d(this,this.elementPath(),true)});this.on("mode",b);this.on("instanceReady",function(){this.config.startupFocus&&this.focus()});CKEDITOR.fire("instanceCreated",null,this);CKEDITOR.add(this);CKEDITOR.tools.setTimeout(function(){g(this,a)},0,this)}function e(){do var a="editor"+ -++s;while(CKEDITOR.instances[a]);return a}function b(){var a=this.commands,b;for(b in a)c(this,a[b])}function c(a,b){b[b.startDisabled?"disable":a.readOnly&&!b.readOnly?"disable":b.modes[a.mode]?"enable":"disable"]()}function d(a,b,c){if(b){var d,e,l=a.commands;for(e in l){d=l[e];(c||d.contextSensitive)&&d.refresh(a,b)}}}function h(a){var b=a.config.customConfig;if(!b)return false;var b=CKEDITOR.getUrl(b),c=u[b]||(u[b]={});if(c.fn){c.fn.call(a,a.config);(CKEDITOR.getUrl(a.config.customConfig)==b|| -!h(a))&&a.fireOnce("customConfigLoaded")}else CKEDITOR.scriptLoader.queue(b,function(){c.fn=CKEDITOR.editorConfig?CKEDITOR.editorConfig:function(){};h(a)});return true}function g(a,b){a.on("customConfigLoaded",function(){if(b){if(b.on)for(var c in b.on)a.on(c,b.on[c]);CKEDITOR.tools.extend(a.config,b,true);delete a.config.on}c=a.config;a.readOnly=!(!c.readOnly&&!(a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?a.element.is("textarea")?a.element.hasAttribute("disabled"):a.element.isReadOnly():a.elementMode== -CKEDITOR.ELEMENT_MODE_REPLACE&&a.element.hasAttribute("disabled")));a.blockless=a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?!(a.element.is("textarea")||CKEDITOR.dtd[a.element.getName()].p):false;a.tabIndex=c.tabIndex||a.element&&a.element.getAttribute("tabindex")||0;a.activeEnterMode=a.enterMode=a.blockless?CKEDITOR.ENTER_BR:c.enterMode;a.activeShiftEnterMode=a.shiftEnterMode=a.blockless?CKEDITOR.ENTER_BR:c.shiftEnterMode;if(c.skin)CKEDITOR.skinName=c.skin;a.fireOnce("configLoaded");a.dataProcessor= -new CKEDITOR.htmlDataProcessor(a);a.filter=a.activeFilter=new CKEDITOR.filter(a);n(a)});if(b&&b.customConfig!=void 0)a.config.customConfig=b.customConfig;h(a)||a.fireOnce("customConfigLoaded")}function n(a){CKEDITOR.skin.loadPart("editor",function(){i(a)})}function i(a){CKEDITOR.lang.load(a.config.language,a.config.defaultLanguage,function(b,c){var d=a.config.title;a.langCode=b;a.lang=CKEDITOR.tools.prototypedCopy(c);a.title=typeof d=="string"||d===false?d:[a.lang.editor,a.name].join(", ");if(CKEDITOR.env.gecko&& -CKEDITOR.env.version<10900&&a.lang.dir=="rtl")a.lang.dir="ltr";if(!a.config.contentsLangDirection)a.config.contentsLangDirection=a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?a.element.getDirection(1):a.lang.dir;a.fire("langLoaded");j(a)})}function j(a){a.getStylesSet(function(b){a.once("loaded",function(){a.fire("stylesSet",{styles:b})},null,null,1);o(a)})}function o(a){var b=a.config,c=b.plugins,d=b.extraPlugins,e=b.removePlugins;if(d)var l=RegExp("(?:^|,)(?:"+d.replace(/\s*,\s*/g,"|")+")(?=,|$)", -"g"),c=c.replace(l,""),c=c+(","+d);if(e)var h=RegExp("(?:^|,)(?:"+e.replace(/\s*,\s*/g,"|")+")(?=,|$)","g"),c=c.replace(h,"");CKEDITOR.env.air&&(c=c+",adobeair");CKEDITOR.plugins.load(c.split(","),function(c){var d=[],e=[],k=[];a.plugins=c;for(var l in c){var m=c[l],g=m.lang,i=null,j=m.requires,v;CKEDITOR.tools.isArray(j)&&(j=j.join(","));if(j&&(v=j.match(h)))for(;j=v.pop();)CKEDITOR.tools.setTimeout(function(a,b){throw Error('Plugin "'+a.replace(",","")+'" cannot be removed from the plugins list, because it\'s required by "'+ -b+'" plugin.');},0,null,[j,l]);if(g&&!a.lang[l]){g.split&&(g=g.split(","));if(CKEDITOR.tools.indexOf(g,a.langCode)>=0)i=a.langCode;else{i=a.langCode.replace(/-.*/,"");i=i!=a.langCode&&CKEDITOR.tools.indexOf(g,i)>=0?i:CKEDITOR.tools.indexOf(g,"en")>=0?"en":g[0]}if(!m.langEntries||!m.langEntries[i])k.push(CKEDITOR.getUrl(m.path+"lang/"+i+".js"));else{a.lang[l]=m.langEntries[i];i=null}}e.push(i);d.push(m)}CKEDITOR.scriptLoader.load(k,function(){for(var c=["beforeInit","init","afterInit"],k=0;k<c.length;k++)for(var m= -0;m<d.length;m++){var l=d[m];k===0&&(e[m]&&l.lang&&l.langEntries)&&(a.lang[l.name]=l.langEntries[e[m]]);if(l[c[k]])l[c[k]](a)}a.fireOnce("pluginsLoaded");b.keystrokes&&a.setKeystroke(a.config.keystrokes);for(m=0;m<a.config.blockedKeystrokes.length;m++)a.keystrokeHandler.blockedKeystrokes[a.config.blockedKeystrokes[m]]=1;a.status="loaded";a.fireOnce("loaded");CKEDITOR.fire("instanceLoaded",null,a)})})}function q(){var a=this.element;if(a&&this.elementMode!=CKEDITOR.ELEMENT_MODE_APPENDTO){var b=this.getData(); -this.config.htmlEncodeOutput&&(b=CKEDITOR.tools.htmlEncode(b));a.is("textarea")?a.setValue(b):a.setHtml(b);return true}return false}a.prototype=CKEDITOR.editor.prototype;CKEDITOR.editor=a;var s=0,u={};CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{addCommand:function(a,b){b.name=a.toLowerCase();var d=new CKEDITOR.command(this,b);this.mode&&c(this,d);return this.commands[a]=d},_attachToForm:function(){var a=this,b=a.element,c=new CKEDITOR.dom.element(b.$.form);if(b.is("textarea")&&c){var d=function(c){a.updateElement(); -a._.required&&(!b.getValue()&&a.fire("required")===false)&&c.data.preventDefault()};c.on("submit",d);if(c.$.submit&&c.$.submit.call&&c.$.submit.apply)c.$.submit=CKEDITOR.tools.override(c.$.submit,function(a){return function(){d();a.apply?a.apply(this):a()}});a.on("destroy",function(){c.removeListener("submit",d)})}},destroy:function(a){this.fire("beforeDestroy");!a&&q.call(this);this.editable(null);this.status="destroyed";this.fire("destroy");this.removeAllListeners();CKEDITOR.remove(this);CKEDITOR.fire("instanceDestroyed", -null,this)},elementPath:function(a){return(a=a||this.getSelection().getStartElement())?new CKEDITOR.dom.elementPath(a,this.editable()):null},createRange:function(){var a=this.editable();return a?new CKEDITOR.dom.range(a):null},execCommand:function(a,b){var c=this.getCommand(a),d={name:a,commandData:b,command:c};if(c&&c.state!=CKEDITOR.TRISTATE_DISABLED&&this.fire("beforeCommandExec",d)!==true){d.returnValue=c.exec(d.commandData);if(!c.async&&this.fire("afterCommandExec",d)!==true)return d.returnValue}return false}, -getCommand:function(a){return this.commands[a]},getData:function(a){!a&&this.fire("beforeGetData");var b=this._.data;if(typeof b!="string")b=(b=this.element)&&this.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE?b.is("textarea")?b.getValue():b.getHtml():"";b={dataValue:b};!a&&this.fire("getData",b);return b.dataValue},getSnapshot:function(){var a=this.fire("getSnapshot");if(typeof a!="string"){var b=this.element;b&&this.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE&&(a=b.is("textarea")?b.getValue():b.getHtml())}return a}, -loadSnapshot:function(a){this.fire("loadSnapshot",a)},setData:function(a,b,c){if(b)this.on("dataReady",function(a){a.removeListener();b.call(a.editor)});a={dataValue:a};!c&&this.fire("setData",a);this._.data=a.dataValue;!c&&this.fire("afterSetData",a)},setReadOnly:function(a){a=a==void 0||a;if(this.readOnly!=a){this.readOnly=a;this.keystrokeHandler.blockedKeystrokes[8]=+a;this.editable().setReadOnly(a);this.fire("readOnly")}},insertHtml:function(a,b){this.fire("insertHtml",{dataValue:a,mode:b})}, -insertText:function(a){this.fire("insertText",a)},insertElement:function(a){this.fire("insertElement",a)},focus:function(){this.fire("beforeFocus")},checkDirty:function(){return this.status=="ready"&&this._.previousValue!==this.getSnapshot()},resetDirty:function(){this._.previousValue=this.getSnapshot()},updateElement:function(){return q.call(this)},setKeystroke:function(){for(var a=this.keystrokeHandler.keystrokes,b=CKEDITOR.tools.isArray(arguments[0])?arguments[0]:[[].slice.call(arguments,0)],c, -d,e=b.length;e--;){c=b[e];d=0;if(CKEDITOR.tools.isArray(c)){d=c[1];c=c[0]}d?a[c]=d:delete a[c]}},addFeature:function(a){return this.filter.addFeature(a)},setActiveFilter:function(a){if(!a)a=this.filter;if(this.activeFilter!==a){this.activeFilter=a;this.fire("activeFilterChange");a===this.filter?this.setActiveEnterMode(null,null):this.setActiveEnterMode(a.getAllowedEnterMode(this.enterMode),a.getAllowedEnterMode(this.shiftEnterMode,true))}},setActiveEnterMode:function(a,b){a=a?this.blockless?CKEDITOR.ENTER_BR: -a:this.enterMode;b=b?this.blockless?CKEDITOR.ENTER_BR:b:this.shiftEnterMode;if(this.activeEnterMode!=a||this.activeShiftEnterMode!=b){this.activeEnterMode=a;this.activeShiftEnterMode=b;this.fire("activeEnterModeChange")}}})})();CKEDITOR.ELEMENT_MODE_NONE=0;CKEDITOR.ELEMENT_MODE_REPLACE=1;CKEDITOR.ELEMENT_MODE_APPENDTO=2;CKEDITOR.ELEMENT_MODE_INLINE=3; -CKEDITOR.htmlParser=function(){this._={htmlPartsRegex:RegExp("<(?:(?:\\/([^>]+)>)|(?:!--([\\S|\\s]*?)--\>)|(?:([^\\s>]+)\\s*((?:(?:\"[^\"]*\")|(?:'[^']*')|[^\"'>])*)\\/?>))","g")}}; -(function(){var a=/([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g,e={checked:1,compact:1,declare:1,defer:1,disabled:1,ismap:1,multiple:1,nohref:1,noresize:1,noshade:1,nowrap:1,readonly:1,selected:1};CKEDITOR.htmlParser.prototype={onTagOpen:function(){},onTagClose:function(){},onText:function(){},onCDATA:function(){},onComment:function(){},parse:function(b){for(var c,d,h=0,g;c=this._.htmlPartsRegex.exec(b);){d=c.index;if(d>h){h=b.substring(h,d);if(g)g.push(h);else this.onText(h)}h= -this._.htmlPartsRegex.lastIndex;if(d=c[1]){d=d.toLowerCase();if(g&&CKEDITOR.dtd.$cdata[d]){this.onCDATA(g.join(""));g=null}if(!g){this.onTagClose(d);continue}}if(g)g.push(c[0]);else if(d=c[3]){d=d.toLowerCase();if(!/="/.test(d)){var n={},i;c=c[4];var j=!!(c&&c.charAt(c.length-1)=="/");if(c)for(;i=a.exec(c);){var o=i[1].toLowerCase();i=i[2]||i[3]||i[4]||"";n[o]=!i&&e[o]?o:CKEDITOR.tools.htmlDecodeAttr(i)}this.onTagOpen(d,n,j);!g&&CKEDITOR.dtd.$cdata[d]&&(g=[])}}else if(d=c[2])this.onComment(d)}if(b.length> -h)this.onText(b.substring(h,b.length))}}})(); -CKEDITOR.htmlParser.basicWriter=CKEDITOR.tools.createClass({$:function(){this._={output:[]}},proto:{openTag:function(a){this._.output.push("<",a)},openTagClose:function(a,e){e?this._.output.push(" />"):this._.output.push(">")},attribute:function(a,e){typeof e=="string"&&(e=CKEDITOR.tools.htmlEncodeAttr(e));this._.output.push(" ",a,'="',e,'"')},closeTag:function(a){this._.output.push("</",a,">")},text:function(a){this._.output.push(a)},comment:function(a){this._.output.push("<\!--",a,"--\>")},write:function(a){this._.output.push(a)}, -reset:function(){this._.output=[];this._.indent=false},getHtml:function(a){var e=this._.output.join("");a&&this.reset();return e}}});"use strict"; -(function(){CKEDITOR.htmlParser.node=function(){};CKEDITOR.htmlParser.node.prototype={remove:function(){var a=this.parent.children,e=CKEDITOR.tools.indexOf(a,this),b=this.previous,c=this.next;b&&(b.next=c);c&&(c.previous=b);a.splice(e,1);this.parent=null},replaceWith:function(a){var e=this.parent.children,b=CKEDITOR.tools.indexOf(e,this),c=a.previous=this.previous,d=a.next=this.next;c&&(c.next=a);d&&(d.previous=a);e[b]=a;a.parent=this.parent;this.parent=null},insertAfter:function(a){var e=a.parent.children, -b=CKEDITOR.tools.indexOf(e,a),c=a.next;e.splice(b+1,0,this);this.next=a.next;this.previous=a;a.next=this;c&&(c.previous=this);this.parent=a.parent},insertBefore:function(a){var e=a.parent.children,b=CKEDITOR.tools.indexOf(e,a);e.splice(b,0,this);this.next=a;(this.previous=a.previous)&&(a.previous.next=this);a.previous=this;this.parent=a.parent},getAscendant:function(a){var e=typeof a=="function"?a:typeof a=="string"?function(b){return b.name==a}:function(b){return b.name in a},b=this.parent;for(;b&& -b.type==CKEDITOR.NODE_ELEMENT;){if(e(b))return b;b=b.parent}return null},wrapWith:function(a){this.replaceWith(a);a.add(this);return a},getIndex:function(){return CKEDITOR.tools.indexOf(this.parent.children,this)},getFilterContext:function(a){return a||{}}}})();"use strict";CKEDITOR.htmlParser.comment=function(a){this.value=a;this._={isBlockLike:false}}; -CKEDITOR.htmlParser.comment.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_COMMENT,filter:function(a,e){var b=this.value;if(!(b=a.onComment(e,b,this))){this.remove();return false}if(typeof b!="string"){this.replaceWith(b);return false}this.value=b;return true},writeHtml:function(a,e){e&&this.filter(e);a.comment(this.value)}});"use strict"; -(function(){CKEDITOR.htmlParser.text=function(a){this.value=a;this._={isBlockLike:false}};CKEDITOR.htmlParser.text.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_TEXT,filter:function(a,e){if(!(this.value=a.onText(e,this.value,this))){this.remove();return false}},writeHtml:function(a,e){e&&this.filter(e);a.text(this.value)}})})();"use strict"; -(function(){CKEDITOR.htmlParser.cdata=function(a){this.value=a};CKEDITOR.htmlParser.cdata.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_TEXT,filter:function(){},writeHtml:function(a){a.write(this.value)}})})();"use strict";CKEDITOR.htmlParser.fragment=function(){this.children=[];this.parent=null;this._={isBlockLike:true,hasInlineStarted:false}}; -(function(){function a(a){return a.attributes["data-cke-survive"]?false:a.name=="a"&&a.attributes.href||CKEDITOR.dtd.$removeEmpty[a.name]}var e=CKEDITOR.tools.extend({table:1,ul:1,ol:1,dl:1},CKEDITOR.dtd.table,CKEDITOR.dtd.ul,CKEDITOR.dtd.ol,CKEDITOR.dtd.dl),b={ol:1,ul:1},c=CKEDITOR.tools.extend({},{html:1},CKEDITOR.dtd.html,CKEDITOR.dtd.body,CKEDITOR.dtd.head,{style:1,script:1});CKEDITOR.htmlParser.fragment.fromHtml=function(d,h,g){function n(a){var b;if(p.length>0)for(var c=0;c<p.length;c++){var d= -p[c],e=d.name,f=CKEDITOR.dtd[e],k=m.name&&CKEDITOR.dtd[m.name];if((!k||k[e])&&(!a||!f||f[a]||!CKEDITOR.dtd[a])){if(!b){i();b=1}d=d.clone();d.parent=m;m=d;p.splice(c,1);c--}else if(e==m.name){o(m,m.parent,1);c--}}}function i(){for(;y.length;)o(y.shift(),m)}function j(a){if(a._.isBlockLike&&a.name!="pre"&&a.name!="textarea"){var b=a.children.length,c=a.children[b-1],d;if(c&&c.type==CKEDITOR.NODE_TEXT)(d=CKEDITOR.tools.rtrim(c.value))?c.value=d:a.children.length=b-1}}function o(b,c,d){var c=c||m||f, -e=m;if(b.previous===void 0){if(q(c,b)){m=c;u.onTagOpen(g,{});b.returnPoint=c=m}j(b);(!a(b)||b.children.length)&&c.add(b);b.name=="pre"&&(l=false);b.name=="textarea"&&(k=false)}if(b.returnPoint){m=b.returnPoint;delete b.returnPoint}else m=d?c:e}function q(a,b){if((a==f||a.name=="body")&&g&&(!a.name||CKEDITOR.dtd[a.name][g])){var c,d;return(c=b.attributes&&(d=b.attributes["data-cke-real-element-type"])?d:b.name)&&c in CKEDITOR.dtd.$inline&&!(c in CKEDITOR.dtd.head)&&!b.isOrphan||b.type==CKEDITOR.NODE_TEXT}} -function s(a,b){return a in CKEDITOR.dtd.$listItem||a in CKEDITOR.dtd.$tableContent?a==b||a=="dt"&&b=="dd"||a=="dd"&&b=="dt":false}var u=new CKEDITOR.htmlParser,f=h instanceof CKEDITOR.htmlParser.element?h:typeof h=="string"?new CKEDITOR.htmlParser.element(h):new CKEDITOR.htmlParser.fragment,p=[],y=[],m=f,k=f.name=="textarea",l=f.name=="pre";u.onTagOpen=function(d,f,h,g){f=new CKEDITOR.htmlParser.element(d,f);if(f.isUnknown&&h)f.isEmpty=true;f.isOptionalClose=g;if(a(f))p.push(f);else{if(d=="pre")l= -true;else{if(d=="br"&&l){m.add(new CKEDITOR.htmlParser.text("\n"));return}d=="textarea"&&(k=true)}if(d=="br")y.push(f);else{for(;;){g=(h=m.name)?CKEDITOR.dtd[h]||(m._.isBlockLike?CKEDITOR.dtd.div:CKEDITOR.dtd.span):c;if(!f.isUnknown&&!m.isUnknown&&!g[d])if(m.isOptionalClose)u.onTagClose(h);else if(d in b&&h in b){h=m.children;(h=h[h.length-1])&&h.name=="li"||o(h=new CKEDITOR.htmlParser.element("li"),m);!f.returnPoint&&(f.returnPoint=m);m=h}else if(d in CKEDITOR.dtd.$listItem&&!s(d,h))u.onTagOpen(d== -"li"?"ul":"dl",{},0,1);else if(h in e&&!s(d,h)){!f.returnPoint&&(f.returnPoint=m);m=m.parent}else{h in CKEDITOR.dtd.$inline&&p.unshift(m);if(m.parent)o(m,m.parent,1);else{f.isOrphan=1;break}}else break}n(d);i();f.parent=m;f.isEmpty?o(f):m=f}}};u.onTagClose=function(a){for(var b=p.length-1;b>=0;b--)if(a==p[b].name){p.splice(b,1);return}for(var c=[],d=[],e=m;e!=f&&e.name!=a;){e._.isBlockLike||d.unshift(e);c.push(e);e=e.returnPoint||e.parent}if(e!=f){for(b=0;b<c.length;b++){var k=c[b];o(k,k.parent)}m= -e;e._.isBlockLike&&i();o(e,e.parent);if(e==m)m=m.parent;p=p.concat(d)}a=="body"&&(g=false)};u.onText=function(a){if((!m._.hasInlineStarted||y.length)&&!l&&!k){a=CKEDITOR.tools.ltrim(a);if(a.length===0)return}var d=m.name,f=d?CKEDITOR.dtd[d]||(m._.isBlockLike?CKEDITOR.dtd.div:CKEDITOR.dtd.span):c;if(!k&&!f["#"]&&d in e){u.onTagOpen(d in b?"li":d=="dl"?"dd":d=="table"?"tr":d=="tr"?"td":"");u.onText(a)}else{i();n();!l&&!k&&(a=a.replace(/[\t\r\n ]{2,}|[\t\r\n]/g," "));a=new CKEDITOR.htmlParser.text(a); -if(q(m,a))this.onTagOpen(g,{},0,1);m.add(a)}};u.onCDATA=function(a){m.add(new CKEDITOR.htmlParser.cdata(a))};u.onComment=function(a){i();n();m.add(new CKEDITOR.htmlParser.comment(a))};u.parse(d);for(i();m!=f;)o(m,m.parent,1);j(f);return f};CKEDITOR.htmlParser.fragment.prototype={type:CKEDITOR.NODE_DOCUMENT_FRAGMENT,add:function(a,b){isNaN(b)&&(b=this.children.length);var c=b>0?this.children[b-1]:null;if(c){if(a._.isBlockLike&&c.type==CKEDITOR.NODE_TEXT){c.value=CKEDITOR.tools.rtrim(c.value);if(c.value.length=== -0){this.children.pop();this.add(a);return}}c.next=a}a.previous=c;a.parent=this;this.children.splice(b,0,a);if(!this._.hasInlineStarted)this._.hasInlineStarted=a.type==CKEDITOR.NODE_TEXT||a.type==CKEDITOR.NODE_ELEMENT&&!a._.isBlockLike},filter:function(a,b){b=this.getFilterContext(b);a.onRoot(b,this);this.filterChildren(a,false,b)},filterChildren:function(a,b,c){if(this.childrenFilteredBy!=a.id){c=this.getFilterContext(c);if(b&&!this.parent)a.onRoot(c,this);this.childrenFilteredBy=a.id;for(b=0;b<this.children.length;b++)this.children[b].filter(a, -c)===false&&b--}},writeHtml:function(a,b){b&&this.filter(b);this.writeChildrenHtml(a)},writeChildrenHtml:function(a,b,c){var e=this.getFilterContext();if(c&&!this.parent&&b)b.onRoot(e,this);b&&this.filterChildren(b,false,e);b=0;c=this.children;for(e=c.length;b<e;b++)c[b].writeHtml(a)},forEach:function(a,b,c){if(!c&&(!b||this.type==b))var e=a(this);if(e!==false)for(var c=this.children,i=0;i<c.length;i++){e=c[i];e.type==CKEDITOR.NODE_ELEMENT?e.forEach(a,b):(!b||e.type==b)&&a(e)}},getFilterContext:function(a){return a|| -{}}}})();"use strict"; -(function(){function a(){this.rules=[]}function e(b,c,d,e){var g,n;for(g in c){(n=b[g])||(n=b[g]=new a);n.add(c[g],d,e)}}CKEDITOR.htmlParser.filter=CKEDITOR.tools.createClass({$:function(b){this.id=CKEDITOR.tools.getNextNumber();this.elementNameRules=new a;this.attributeNameRules=new a;this.elementsRules={};this.attributesRules={};this.textRules=new a;this.commentRules=new a;this.rootRules=new a;b&&this.addRules(b,10)},proto:{addRules:function(a,c){var d;if(typeof c=="number")d=c;else if(c&&"priority"in -c)d=c.priority;typeof d!="number"&&(d=10);typeof c!="object"&&(c={});a.elementNames&&this.elementNameRules.addMany(a.elementNames,d,c);a.attributeNames&&this.attributeNameRules.addMany(a.attributeNames,d,c);a.elements&&e(this.elementsRules,a.elements,d,c);a.attributes&&e(this.attributesRules,a.attributes,d,c);a.text&&this.textRules.add(a.text,d,c);a.comment&&this.commentRules.add(a.comment,d,c);a.root&&this.rootRules.add(a.root,d,c)},applyTo:function(a){a.filter(this)},onElementName:function(a,c){return this.elementNameRules.execOnName(a, -c)},onAttributeName:function(a,c){return this.attributeNameRules.execOnName(a,c)},onText:function(a,c){return this.textRules.exec(a,c)},onComment:function(a,c,d){return this.commentRules.exec(a,c,d)},onRoot:function(a,c){return this.rootRules.exec(a,c)},onElement:function(a,c){for(var d=[this.elementsRules["^"],this.elementsRules[c.name],this.elementsRules.$],e,g=0;g<3;g++)if(e=d[g]){e=e.exec(a,c,this);if(e===false)return null;if(e&&e!=c)return this.onNode(a,e);if(c.parent&&!c.name)break}return c}, -onNode:function(a,c){var d=c.type;return d==CKEDITOR.NODE_ELEMENT?this.onElement(a,c):d==CKEDITOR.NODE_TEXT?new CKEDITOR.htmlParser.text(this.onText(a,c.value)):d==CKEDITOR.NODE_COMMENT?new CKEDITOR.htmlParser.comment(this.onComment(a,c.value)):null},onAttribute:function(a,c,d,e){return(d=this.attributesRules[d])?d.exec(a,e,c,this):e}}});CKEDITOR.htmlParser.filterRulesGroup=a;a.prototype={add:function(a,c,d){this.rules.splice(this.findIndex(c),0,{value:a,priority:c,options:d})},addMany:function(a, -c,d){for(var e=[this.findIndex(c),0],g=0,n=a.length;g<n;g++)e.push({value:a[g],priority:c,options:d});this.rules.splice.apply(this.rules,e)},findIndex:function(a){for(var c=this.rules,d=c.length-1;d>=0&&a<c[d].priority;)d--;return d+1},exec:function(a,c){var d=c instanceof CKEDITOR.htmlParser.node||c instanceof CKEDITOR.htmlParser.fragment,e=Array.prototype.slice.call(arguments,1),g=this.rules,n=g.length,i,j,o,q;for(q=0;q<n;q++){if(d){i=c.type;j=c.name}o=g[q];if(!a.nonEditable||o.options.applyToAll){o= -o.value.apply(null,e);if(o===false||d&&o&&(o.name!=j||o.type!=i))return o;o!=void 0&&(e[0]=c=o)}}return c},execOnName:function(a,c){for(var d=0,e=this.rules,g=e.length,n;c&&d<g;d++){n=e[d];if(!a.nonEditable||n.options.applyToAll)c=c.replace(n.value[0],n.value[1])}return c}}})(); -(function(){function a(a,e){function f(a){return a||CKEDITOR.env.needsNbspFiller?new CKEDITOR.htmlParser.text(" "):new CKEDITOR.htmlParser.element("br",{"data-cke-bogus":1})}function l(a,d){return function(e){if(e.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT){var k=[],l=b(e),g,C;if(l)for(m(l,1)&&k.push(l);l;){if(h(l)&&(g=c(l))&&m(g))if((C=c(g))&&!h(C))k.push(g);else{f(v).insertAfter(g);g.remove()}l=l.previous}for(l=0;l<k.length;l++)k[l].remove();if(k=CKEDITOR.env.opera&&!a||(typeof d=="function"?d(e)!== -false:d))if(!v&&!CKEDITOR.env.needsBrFiller&&e.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT)k=false;else if(!v&&!CKEDITOR.env.needsBrFiller&&(document.documentMode>7||e.name in CKEDITOR.dtd.tr||e.name in CKEDITOR.dtd.$listItem))k=false;else{k=b(e);k=!k||e.name=="form"&&k.name=="input"}k&&e.add(f(a))}}}function m(a,b){if((!v||CKEDITOR.env.needsBrFiller)&&a.type==CKEDITOR.NODE_ELEMENT&&a.name=="br"&&!a.attributes["data-cke-eol"])return true;var c;if(a.type==CKEDITOR.NODE_TEXT&&(c=a.value.match(y))){if(c.index){(new CKEDITOR.htmlParser.text(a.value.substring(0, -c.index))).insertBefore(a);a.value=c[0]}if(!CKEDITOR.env.needsBrFiller&&v&&(!b||a.parent.name in i))return true;if(!v)if((c=a.previous)&&c.name=="br"||!c||h(c))return true}return false}var r={elements:{}},v=e=="html",i=CKEDITOR.tools.extend({},t),p;for(p in i)"#"in k[p]||delete i[p];for(p in i)r.elements[p]=l(v,a.config.fillEmptyBlocks!==false);r.root=l(v);r.elements.br=function(a){return function(b){if(b.parent.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT){var e=b.attributes;if("data-cke-bogus"in e||"data-cke-eol"in -e)delete e["data-cke-bogus"];else{for(e=b.next;e&&d(e);)e=e.next;var k=c(b);!e&&h(b.parent)?g(b.parent,f(a)):h(e)&&(k&&!h(k))&&f(a).insertBefore(e)}}}}(v);return r}function e(a,b){return a!=CKEDITOR.ENTER_BR&&b!==false?a==CKEDITOR.ENTER_DIV?"div":"p":false}function b(a){for(a=a.children[a.children.length-1];a&&d(a);)a=a.previous;return a}function c(a){for(a=a.previous;a&&d(a);)a=a.previous;return a}function d(a){return a.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.trim(a.value)||a.type==CKEDITOR.NODE_ELEMENT&& -a.attributes["data-cke-bookmark"]}function h(a){return a&&(a.type==CKEDITOR.NODE_ELEMENT&&a.name in t||a.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT)}function g(a,b){var c=a.children[a.children.length-1];a.children.push(b);b.parent=a;if(c){c.next=b;b.previous=c}}function n(a){a=a.attributes;a.contenteditable!="false"&&(a["data-cke-editable"]=a.contenteditable?"true":1);a.contenteditable="false"}function i(a){a=a.attributes;switch(a["data-cke-editable"]){case "true":a.contenteditable="true";break;case "1":delete a.contenteditable}} -function j(a){return a.replace(I,function(a,b,c){return"<"+b+c.replace(E,function(a,b){if(!/^on/.test(b)&&c.indexOf("data-cke-saved-"+b)==-1){a=a.slice(1);return" data-cke-saved-"+a+" data-cke-"+CKEDITOR.rnd+"-"+a}return a})+">"})}function o(a,b){return a.replace(b,function(a,b,c){a.indexOf("<textarea")===0&&(a=b+u(c).replace(/</g,"&lt;").replace(/>/g,"&gt;")+"</textarea>");return"<cke:encoded>"+encodeURIComponent(a)+"</cke:encoded>"})}function q(a){return a.replace(Q,function(a,b){return decodeURIComponent(b)})} -function s(a){return a.replace(/<\!--(?!{cke_protected})[\s\S]+?--\>/g,function(a){return"<\!--"+m+"{C}"+encodeURIComponent(a).replace(/--/g,"%2D%2D")+"--\>"})}function u(a){return a.replace(/<\!--\{cke_protected\}\{C\}([\s\S]+?)--\>/g,function(a,b){return decodeURIComponent(b)})}function f(a,b){var c=b._.dataStore;return a.replace(/<\!--\{cke_protected\}([\s\S]+?)--\>/g,function(a,b){return decodeURIComponent(b)}).replace(/\{cke_protected_(\d+)\}/g,function(a,b){return c&&c[b]||""})}function p(a, -b){for(var c=[],d=b.config.protectedSource,e=b._.dataStore||(b._.dataStore={id:1}),f=/<\!--\{cke_temp(comment)?\}(\d*?)--\>/g,d=[/<script[\s\S]*?<\/script>/gi,/<noscript[\s\S]*?<\/noscript>/gi].concat(d),a=a.replace(/<\!--[\s\S]*?--\>/g,function(a){return"<\!--{cke_tempcomment}"+(c.push(a)-1)+"--\>"}),k=0;k<d.length;k++)a=a.replace(d[k],function(a){a=a.replace(f,function(a,b,d){return c[d]});return/cke_temp(comment)?/.test(a)?a:"<\!--{cke_temp}"+(c.push(a)-1)+"--\>"});a=a.replace(f,function(a,b,d){return"<\!--"+ -m+(b?"{C}":"")+encodeURIComponent(c[d]).replace(/--/g,"%2D%2D")+"--\>"});return a.replace(/(['"]).*?\1/g,function(a){return a.replace(/<\!--\{cke_protected\}([\s\S]+?)--\>/g,function(a,b){e[e.id]=decodeURIComponent(b);return"{cke_protected_"+e.id++ +"}"})})}CKEDITOR.htmlDataProcessor=function(b){var c,d,k=this;this.editor=b;this.dataFilter=c=new CKEDITOR.htmlParser.filter;this.htmlFilter=d=new CKEDITOR.htmlParser.filter;this.writer=new CKEDITOR.htmlParser.basicWriter;c.addRules(x);c.addRules(r,{applyToAll:true}); -c.addRules(a(b,"data"),{applyToAll:true});d.addRules(L);d.addRules(A,{applyToAll:true});d.addRules(a(b,"html"),{applyToAll:true});b.on("toHtml",function(a){var a=a.data,c=a.dataValue,c=p(c,b),c=o(c,M),c=j(c),c=o(c,z),c=c.replace(v,"$1cke:$2"),c=c.replace(H,"<cke:$1$2></cke:$1>"),c=CKEDITOR.env.opera?c:c.replace(/(<pre\b[^>]*>)(\r\n|\n)/g,"$1$2$2"),d=a.context||b.editable().getName(),f;if(CKEDITOR.env.ie&&CKEDITOR.env.version<9&&d=="pre"){d="div";c="<pre>"+c+"</pre>";f=1}d=b.document.createElement(d); -d.setHtml("a"+c);c=d.getHtml().substr(1);c=c.replace(RegExp(" data-cke-"+CKEDITOR.rnd+"-","ig")," ");f&&(c=c.replace(/^<pre>|<\/pre>$/gi,""));c=c.replace(w,"$1$2");c=q(c);c=u(c);a.dataValue=CKEDITOR.htmlParser.fragment.fromHtml(c,a.context,a.fixForBody===false?false:e(a.enterMode,b.config.autoParagraph))},null,null,5);b.on("toHtml",function(a){a.data.filter.applyTo(a.data.dataValue,true,a.data.dontFilter,a.data.enterMode)&&b.fire("dataFiltered")},null,null,6);b.on("toHtml",function(a){a.data.dataValue.filterChildren(k.dataFilter, -true)},null,null,10);b.on("toHtml",function(a){var a=a.data,b=a.dataValue,c=new CKEDITOR.htmlParser.basicWriter;b.writeChildrenHtml(c);b=c.getHtml(true);a.dataValue=s(b)},null,null,15);b.on("toDataFormat",function(a){var c=a.data.dataValue;a.data.enterMode!=CKEDITOR.ENTER_BR&&(c=c.replace(/^<br *\/?>/i,""));a.data.dataValue=CKEDITOR.htmlParser.fragment.fromHtml(c,a.data.context,e(a.data.enterMode,b.config.autoParagraph))},null,null,5);b.on("toDataFormat",function(a){a.data.dataValue.filterChildren(k.htmlFilter, -true)},null,null,10);b.on("toDataFormat",function(a){a.data.filter.applyTo(a.data.dataValue,false,true)},null,null,11);b.on("toDataFormat",function(a){var c=a.data.dataValue,d=k.writer;d.reset();c.writeChildrenHtml(d);c=d.getHtml(true);c=u(c);c=f(c,b);a.data.dataValue=c},null,null,15)};CKEDITOR.htmlDataProcessor.prototype={toHtml:function(a,b,c,d){var e=this.editor,f,k,l;if(b&&typeof b=="object"){f=b.context;c=b.fixForBody;d=b.dontFilter;k=b.filter;l=b.enterMode}else f=b;!f&&f!==null&&(f=e.editable().getName()); -return e.fire("toHtml",{dataValue:a,context:f,fixForBody:c,dontFilter:d,filter:k||e.filter,enterMode:l||e.enterMode}).dataValue},toDataFormat:function(a,b){var c,d,e;if(b){c=b.context;d=b.filter;e=b.enterMode}!c&&c!==null&&(c=this.editor.editable().getName());return this.editor.fire("toDataFormat",{dataValue:a,filter:d||this.editor.filter,context:c,enterMode:e||this.editor.enterMode}).dataValue}};var y=/(?:&nbsp;|\xa0)$/,m="{cke_protected}",k=CKEDITOR.dtd,l=["caption","colgroup","col","thead","tfoot", -"tbody"],t=CKEDITOR.tools.extend({},k.$blockLimit,k.$block),x={elements:{input:n,textarea:n}},r={attributeNames:[[/^on/,"data-cke-pa-on"],[/^data-cke-expando$/,""]]},L={elements:{embed:function(a){var b=a.parent;if(b&&b.name=="object"){var c=b.attributes.width,b=b.attributes.height;if(c)a.attributes.width=c;if(b)a.attributes.height=b}},a:function(a){if(!a.children.length&&!a.attributes.name&&!a.attributes["data-cke-saved-name"])return false}}},A={elementNames:[[/^cke:/,""],[/^\?xml:namespace$/,""]], -attributeNames:[[/^data-cke-(saved|pa)-/,""],[/^data-cke-.*/,""],["hidefocus",""]],elements:{$:function(a){var b=a.attributes;if(b){if(b["data-cke-temp"])return false;for(var c=["name","href","src"],d,e=0;e<c.length;e++){d="data-cke-saved-"+c[e];d in b&&delete b[c[e]]}}return a},table:function(a){a.children.slice(0).sort(function(a,b){var c,d;if(a.type==CKEDITOR.NODE_ELEMENT&&b.type==a.type){c=CKEDITOR.tools.indexOf(l,a.name);d=CKEDITOR.tools.indexOf(l,b.name)}if(!(c>-1&&d>-1&&c!=d)){c=a.parent?a.getIndex(): --1;d=b.parent?b.getIndex():-1}return c>d?1:-1})},param:function(a){a.children=[];a.isEmpty=true;return a},span:function(a){a.attributes["class"]=="Apple-style-span"&&delete a.name},html:function(a){delete a.attributes.contenteditable;delete a.attributes["class"]},body:function(a){delete a.attributes.spellcheck;delete a.attributes.contenteditable},style:function(a){var b=a.children[0];if(b&&b.value)b.value=CKEDITOR.tools.trim(b.value);if(!a.attributes.type)a.attributes.type="text/css"},title:function(a){var b= -a.children[0];!b&&g(a,b=new CKEDITOR.htmlParser.text);b.value=a.attributes["data-cke-title"]||""},input:i,textarea:i},attributes:{"class":function(a){return CKEDITOR.tools.ltrim(a.replace(/(?:^|\s+)cke_[^\s]*/g,""))||false}}};if(CKEDITOR.env.ie)A.attributes.style=function(a){return a.replace(/(^|;)([^\:]+)/g,function(a){return a.toLowerCase()})};var I=/<(a|area|img|input|source)\b([^>]*)>/gi,E=/\s(on\w+|href|src|name)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+))/gi,z=/(?:<style(?=[ >])[^>]*>[\s\S]*?<\/style>)|(?:<(:?link|meta|base)[^>]*>)/gi, -M=/(<textarea(?=[ >])[^>]*>)([\s\S]*?)(?:<\/textarea>)/gi,Q=/<cke:encoded>([^<]*)<\/cke:encoded>/gi,v=/(<\/?)((?:object|embed|param|html|body|head|title)[^>]*>)/gi,w=/(<\/?)cke:((?:html|body|head|title)[^>]*>)/gi,H=/<cke:(param|embed)([^>]*?)\/?>(?!\s*<\/cke:\1)/gi})();"use strict"; -CKEDITOR.htmlParser.element=function(a,e){this.name=a;this.attributes=e||{};this.children=[];var b=a||"",c=b.match(/^cke:(.*)/);c&&(b=c[1]);b=!(!CKEDITOR.dtd.$nonBodyContent[b]&&!CKEDITOR.dtd.$block[b]&&!CKEDITOR.dtd.$listItem[b]&&!CKEDITOR.dtd.$tableContent[b]&&!(CKEDITOR.dtd.$nonEditable[b]||b=="br"));this.isEmpty=!!CKEDITOR.dtd.$empty[a];this.isUnknown=!CKEDITOR.dtd[a];this._={isBlockLike:b,hasInlineStarted:this.isEmpty||!b}}; -CKEDITOR.htmlParser.cssStyle=function(a){var e={};((a instanceof CKEDITOR.htmlParser.element?a.attributes.style:a)||"").replace(/&quot;/g,'"').replace(/\s*([^ :;]+)\s*:\s*([^;]+)\s*(?=;|$)/g,function(a,c,d){c=="font-family"&&(d=d.replace(/["']/g,""));e[c.toLowerCase()]=d});return{rules:e,populate:function(a){var c=this.toString();if(c)a instanceof CKEDITOR.dom.element?a.setAttribute("style",c):a instanceof CKEDITOR.htmlParser.element?a.attributes.style=c:a.style=c},toString:function(){var a=[],c; -for(c in e)e[c]&&a.push(c,":",e[c],";");return a.join("")}}}; -(function(){function a(a){return function(b){return b.type==CKEDITOR.NODE_ELEMENT&&(typeof a=="string"?b.name==a:b.name in a)}}var e=function(a,b){a=a[0];b=b[0];return a<b?-1:a>b?1:0},b=CKEDITOR.htmlParser.fragment.prototype;CKEDITOR.htmlParser.element.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_ELEMENT,add:b.add,clone:function(){return new CKEDITOR.htmlParser.element(this.name,this.attributes)},filter:function(a,b){var e=this,g,n,b=e.getFilterContext(b);if(b.off)return true; -if(!e.parent)a.onRoot(b,e);for(;;){g=e.name;if(!(n=a.onElementName(b,g))){this.remove();return false}e.name=n;if(!(e=a.onElement(b,e))){this.remove();return false}if(e!==this){this.replaceWith(e);return false}if(e.name==g)break;if(e.type!=CKEDITOR.NODE_ELEMENT){this.replaceWith(e);return false}if(!e.name){this.replaceWithChildren();return false}}g=e.attributes;var i,j;for(i in g){j=i;for(n=g[i];;)if(j=a.onAttributeName(b,i))if(j!=i){delete g[i];i=j}else break;else{delete g[i];break}j&&((n=a.onAttribute(b, -e,j,n))===false?delete g[j]:g[j]=n)}e.isEmpty||this.filterChildren(a,false,b);return true},filterChildren:b.filterChildren,writeHtml:function(a,b){b&&this.filter(b);var h=this.name,g=[],n=this.attributes,i,j;a.openTag(h,n);for(i in n)g.push([i,n[i]]);a.sortAttributes&&g.sort(e);i=0;for(j=g.length;i<j;i++){n=g[i];a.attribute(n[0],n[1])}a.openTagClose(h,this.isEmpty);this.writeChildrenHtml(a);this.isEmpty||a.closeTag(h)},writeChildrenHtml:b.writeChildrenHtml,replaceWithChildren:function(){for(var a= -this.children,b=a.length;b;)a[--b].insertAfter(this);this.remove()},forEach:b.forEach,getFirst:function(b){if(!b)return this.children.length?this.children[0]:null;typeof b!="function"&&(b=a(b));for(var d=0,e=this.children.length;d<e;++d)if(b(this.children[d]))return this.children[d];return null},getHtml:function(){var a=new CKEDITOR.htmlParser.basicWriter;this.writeChildrenHtml(a);return a.getHtml()},setHtml:function(a){for(var a=this.children=CKEDITOR.htmlParser.fragment.fromHtml(a).children,b=0, -e=a.length;b<e;++b)a[b].parent=this},getOuterHtml:function(){var a=new CKEDITOR.htmlParser.basicWriter;this.writeHtml(a);return a.getHtml()},split:function(a){for(var b=this.children.splice(a,this.children.length-a),e=this.clone(),g=0;g<b.length;++g)b[g].parent=e;e.children=b;if(b[0])b[0].previous=null;if(a>0)this.children[a-1].next=null;this.parent.add(e,this.getIndex()+1);return e},removeClass:function(a){var b=this.attributes["class"];if(b)(b=CKEDITOR.tools.trim(b.replace(RegExp("(?:\\s+|^)"+a+ -"(?:\\s+|$)")," ")))?this.attributes["class"]=b:delete this.attributes["class"]},hasClass:function(a){var b=this.attributes["class"];return!b?false:RegExp("(?:^|\\s)"+a+"(?=\\s|$)").test(b)},getFilterContext:function(a){var b=[];a||(a={off:false,nonEditable:false});!a.off&&this.attributes["data-cke-processor"]=="off"&&b.push("off",true);!a.nonEditable&&this.attributes.contenteditable=="false"&&b.push("nonEditable",true);if(b.length)for(var a=CKEDITOR.tools.copy(a),e=0;e<b.length;e=e+2)a[b[e]]=b[e+ -1];return a}},true)})();(function(){var a={};CKEDITOR.template=function(e){if(a[e])this.output=a[e];else{var b=e.replace(/'/g,"\\'").replace(/{([^}]+)}/g,function(a,b){return"',data['"+b+"']==undefined?'{"+b+"}':data['"+b+"'],'"});this.output=a[e]=Function("data","buffer","return buffer?buffer.push('"+b+"'):['"+b+"'].join('');")}}})();delete CKEDITOR.loadFullCore;CKEDITOR.instances={};CKEDITOR.document=new CKEDITOR.dom.document(document); -CKEDITOR.add=function(a){CKEDITOR.instances[a.name]=a;a.on("focus",function(){if(CKEDITOR.currentInstance!=a){CKEDITOR.currentInstance=a;CKEDITOR.fire("currentInstance")}});a.on("blur",function(){if(CKEDITOR.currentInstance==a){CKEDITOR.currentInstance=null;CKEDITOR.fire("currentInstance")}});CKEDITOR.fire("instance",null,a)};CKEDITOR.remove=function(a){delete CKEDITOR.instances[a.name]}; -(function(){var a={};CKEDITOR.addTemplate=function(e,b){var c=a[e];if(c)return c;c={name:e,source:b};CKEDITOR.fire("template",c);return a[e]=new CKEDITOR.template(c.source)};CKEDITOR.getTemplate=function(e){return a[e]}})();(function(){var a=[];CKEDITOR.addCss=function(e){a.push(e)};CKEDITOR.getCss=function(){return a.join("\n")}})();CKEDITOR.on("instanceDestroyed",function(){CKEDITOR.tools.isEmpty(this.instances)&&CKEDITOR.fire("reset")});CKEDITOR.TRISTATE_ON=1;CKEDITOR.TRISTATE_OFF=2; -CKEDITOR.TRISTATE_DISABLED=0; -(function(){CKEDITOR.inline=function(a,e){if(!CKEDITOR.env.isCompatible)return null;a=CKEDITOR.dom.element.get(a);if(a.getEditor())throw'The editor instance "'+a.getEditor().name+'" is already attached to the provided element.';var b=new CKEDITOR.editor(e,a,CKEDITOR.ELEMENT_MODE_INLINE),c=a.is("textarea")?a:null;if(c){b.setData(c.getValue(),null,true);a=CKEDITOR.dom.element.createFromHtml('<div contenteditable="'+!!b.readOnly+'" class="cke_textarea_inline">'+c.getValue()+"</div>",CKEDITOR.document); -a.insertAfter(c);c.hide();c.$.form&&b._attachToForm()}else b.setData(a.getHtml(),null,true);b.on("loaded",function(){b.fire("uiReady");b.editable(a);b.container=a;b.setData(b.getData(1));b.resetDirty();b.fire("contentDom");b.mode="wysiwyg";b.fire("mode");b.status="ready";b.fireOnce("instanceReady");CKEDITOR.fire("instanceReady",null,b)},null,null,1E4);b.on("destroy",function(){if(c){b.container.clearCustomData();b.container.remove();c.show()}b.element.clearCustomData();delete b.element});return b}; -CKEDITOR.inlineAll=function(){var a,e,b;for(b in CKEDITOR.dtd.$editable)for(var c=CKEDITOR.document.getElementsByTag(b),d=0,h=c.count();d<h;d++){a=c.getItem(d);if(a.getAttribute("contenteditable")=="true"){e={element:a,config:{}};CKEDITOR.fire("inline",e)!==false&&CKEDITOR.inline(a,e.config)}}};CKEDITOR.domReady(function(){!CKEDITOR.disableAutoInline&&CKEDITOR.inlineAll()})})();CKEDITOR.replaceClass="ckeditor"; -(function(){function a(a,c,g,n){if(!CKEDITOR.env.isCompatible)return null;a=CKEDITOR.dom.element.get(a);if(a.getEditor())throw'The editor instance "'+a.getEditor().name+'" is already attached to the provided element.';var i=new CKEDITOR.editor(c,a,n);if(n==CKEDITOR.ELEMENT_MODE_REPLACE){a.setStyle("visibility","hidden");i._.required=a.hasAttribute("required");a.removeAttribute("required")}g&&i.setData(g,null,true);i.on("loaded",function(){b(i);n==CKEDITOR.ELEMENT_MODE_REPLACE&&(i.config.autoUpdateElement&& -a.$.form)&&i._attachToForm();i.setMode(i.config.startupMode,function(){i.resetDirty();i.status="ready";i.fireOnce("instanceReady");CKEDITOR.fire("instanceReady",null,i)})});i.on("destroy",e);return i}function e(){var a=this.container,b=this.element;if(a){a.clearCustomData();a.remove()}if(b){b.clearCustomData();if(this.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE){b.show();this._.required&&b.setAttribute("required","required")}delete this.element}}function b(a){var b=a.name,e=a.element,n=a.elementMode, -i=a.fire("uiSpace",{space:"top",html:""}).html,j=a.fire("uiSpace",{space:"bottom",html:""}).html;c||(c=CKEDITOR.addTemplate("maincontainer",'<{outerEl} id="cke_{name}" class="{id} cke cke_reset cke_chrome cke_editor_{name} cke_{langDir} '+CKEDITOR.env.cssClass+'" dir="{langDir}" lang="{langCode}" role="application" aria-labelledby="cke_{name}_arialbl"><span id="cke_{name}_arialbl" class="cke_voice_label">{voiceLabel}</span><{outerEl} class="cke_inner cke_reset" role="presentation">{topHtml}<{outerEl} id="{contentId}" class="cke_contents cke_reset" role="presentation"></{outerEl}>{bottomHtml}</{outerEl}></{outerEl}>')); -b=CKEDITOR.dom.element.createFromHtml(c.output({id:a.id,name:b,langDir:a.lang.dir,langCode:a.langCode,voiceLabel:[a.lang.editor,a.name].join(", "),topHtml:i?'<span id="'+a.ui.spaceId("top")+'" class="cke_top cke_reset_all" role="presentation" style="height:auto">'+i+"</span>":"",contentId:a.ui.spaceId("contents"),bottomHtml:j?'<span id="'+a.ui.spaceId("bottom")+'" class="cke_bottom cke_reset_all" role="presentation">'+j+"</span>":"",outerEl:CKEDITOR.env.ie?"span":"div"}));if(n==CKEDITOR.ELEMENT_MODE_REPLACE){e.hide(); -b.insertAfter(e)}else e.append(b);a.container=b;i&&a.ui.space("top").unselectable();j&&a.ui.space("bottom").unselectable();e=a.config.width;n=a.config.height;e&&b.setStyle("width",CKEDITOR.tools.cssLength(e));n&&a.ui.space("contents").setStyle("height",CKEDITOR.tools.cssLength(n));b.disableContextMenu();CKEDITOR.env.webkit&&b.on("focus",function(){a.focus()});a.fireOnce("uiReady")}CKEDITOR.replace=function(b,c){return a(b,c,null,CKEDITOR.ELEMENT_MODE_REPLACE)};CKEDITOR.appendTo=function(b,c,e){return a(b, -c,e,CKEDITOR.ELEMENT_MODE_APPENDTO)};CKEDITOR.replaceAll=function(){for(var a=document.getElementsByTagName("textarea"),b=0;b<a.length;b++){var c=null,e=a[b];if(e.name||e.id){if(typeof arguments[0]=="string"){if(!RegExp("(?:^|\\s)"+arguments[0]+"(?:$|\\s)").test(e.className))continue}else if(typeof arguments[0]=="function"){c={};if(arguments[0](e,c)===false)continue}this.replace(e,c)}}};CKEDITOR.editor.prototype.addMode=function(a,b){(this._.modes||(this._.modes={}))[a]=b};CKEDITOR.editor.prototype.setMode= -function(a,b){var c=this,e=this._.modes;if(!(a==c.mode||!e||!e[a])){c.fire("beforeSetMode",a);if(c.mode){var i=c.checkDirty();c._.previousMode=c.mode;c.fire("beforeModeUnload");c.editable(0);c.ui.space("contents").setHtml("");c.mode=""}this._.modes[a](function(){c.mode=a;i!==void 0&&!i&&c.resetDirty();setTimeout(function(){c.fire("mode");b&&b.call(c)},0)})}};CKEDITOR.editor.prototype.resize=function(a,b,c,e){var i=this.container,j=this.ui.space("contents"),o=CKEDITOR.env.webkit&&this.document&&this.document.getWindow().$.frameElement, -e=e?i.getChild(1):i;e.setSize("width",a,true);o&&(o.style.width="1%");j.setStyle("height",Math.max(b-(c?0:(e.$.offsetHeight||0)-(j.$.clientHeight||0)),0)+"px");o&&(o.style.width="100%");this.fire("resize")};CKEDITOR.editor.prototype.getResizable=function(a){return a?this.ui.space("contents"):this.container};var c;CKEDITOR.domReady(function(){CKEDITOR.replaceClass&&CKEDITOR.replaceAll(CKEDITOR.replaceClass)})})();CKEDITOR.config.startupMode="wysiwyg"; -(function(){function a(a){var b=a.editor,d=a.data.path,m=d.blockLimit,k=a.data.selection,l=k.getRanges()[0],g;if(CKEDITOR.env.gecko||CKEDITOR.env.ie&&CKEDITOR.env.needsBrFiller)if(k=e(k,d)){k.appendBogus();g=CKEDITOR.env.ie}if(b.config.autoParagraph!==false&&b.activeEnterMode!=CKEDITOR.ENTER_BR&&b.editable().equals(m)&&!d.block&&l.collapsed&&!l.getCommonAncestor().isReadOnly()){d=l.clone();d.enlarge(CKEDITOR.ENLARGE_BLOCK_CONTENTS);m=new CKEDITOR.dom.walker(d);m.guard=function(a){return!c(a)||a.type== -CKEDITOR.NODE_COMMENT||a.isReadOnly()};if(!m.checkForward()||d.checkStartOfBlock()&&d.checkEndOfBlock()){b=l.fixBlock(true,b.activeEnterMode==CKEDITOR.ENTER_DIV?"div":"p");if(!CKEDITOR.env.needsBrFiller)(b=b.getFirst(c))&&(b.type==CKEDITOR.NODE_TEXT&&CKEDITOR.tools.trim(b.getText()).match(/^(?:&nbsp;|\xa0)$/))&&b.remove();g=1;a.cancel()}}g&&l.select()}function e(a,b){if(a.isFake)return 0;var e=b.block||b.blockLimit,d=e&&e.getLast(c);if(e&&e.isBlockBoundary()&&(!d||!(d.type==CKEDITOR.NODE_ELEMENT&& -d.isBlockBoundary()))&&!e.is("pre")&&!e.getBogus())return e}function b(a){var b=a.data.getTarget();if(b.is("input")){b=b.getAttribute("type");(b=="submit"||b=="reset")&&a.data.preventDefault()}}function c(a){return o(a)&&q(a)}function d(a,b){return function(c){var e=CKEDITOR.dom.element.get(c.data.$.toElement||c.data.$.fromElement||c.data.$.relatedTarget);(!e||!b.equals(e)&&!b.contains(e))&&a.call(this,c)}}function h(a){var b,e=a.getRanges()[0],d=a.root,k={table:1,ul:1,ol:1,dl:1};if(e.startPath().contains(k)){var a= -function(a){return function(e,d){d&&(e.type==CKEDITOR.NODE_ELEMENT&&e.is(k))&&(b=e);if(!d&&c(e)&&(!a||!i(e)))return false}},l=e.clone();l.collapse(1);l.setStartAt(d,CKEDITOR.POSITION_AFTER_START);d=new CKEDITOR.dom.walker(l);d.guard=a();d.checkBackward();if(b){l=e.clone();l.collapse();l.setEndAt(b,CKEDITOR.POSITION_AFTER_END);d=new CKEDITOR.dom.walker(l);d.guard=a(true);b=false;d.checkForward();return b}}return null}function g(a){a.editor.focus();a.editor.fire("saveSnapshot")}function n(a,b){var c= -a.editor;!b&&c.getSelection().scrollIntoView();setTimeout(function(){c.fire("saveSnapshot")},0)}CKEDITOR.editable=CKEDITOR.tools.createClass({base:CKEDITOR.dom.element,$:function(a,b){this.base(b.$||b);this.editor=a;this.hasFocus=false;this.setup()},proto:{focus:function(){var a;if(CKEDITOR.env.webkit&&!this.hasFocus){a=this.editor._.previousActive||this.getDocument().getActive();if(this.contains(a)){a.focus();return}}try{this.$[CKEDITOR.env.ie&&this.getDocument().equals(CKEDITOR.document)?"setActive": -"focus"]()}catch(b){if(!CKEDITOR.env.ie)throw b;}if(CKEDITOR.env.safari&&!this.isInline()){a=CKEDITOR.document.getActive();a.equals(this.getWindow().getFrame())||this.getWindow().focus()}},on:function(a,b){var c=Array.prototype.slice.call(arguments,0);if(CKEDITOR.env.ie&&/^focus|blur$/.exec(a)){a=a=="focus"?"focusin":"focusout";b=d(b,this);c[0]=a;c[1]=b}return CKEDITOR.dom.element.prototype.on.apply(this,c)},attachListener:function(a,b,c,e,d,l){!this._.listeners&&(this._.listeners=[]);var g=Array.prototype.slice.call(arguments, -1),g=a.on.apply(a,g);this._.listeners.push(g);return g},clearListeners:function(){var a=this._.listeners;try{for(;a.length;)a.pop().removeListener()}catch(b){}},restoreAttrs:function(){var a=this._.attrChanges,b,c;for(c in a)if(a.hasOwnProperty(c)){b=a[c];b!==null?this.setAttribute(c,b):this.removeAttribute(c)}},attachClass:function(a){var b=this.getCustomData("classes");if(!this.hasClass(a)){!b&&(b=[]);b.push(a);this.setCustomData("classes",b);this.addClass(a)}},changeAttr:function(a,b){var c=this.getAttribute(a); -if(b!==c){!this._.attrChanges&&(this._.attrChanges={});a in this._.attrChanges||(this._.attrChanges[a]=c);this.setAttribute(a,b)}},insertHtml:function(a,b){g(this);s(this,b||"html",a)},insertText:function(a){g(this);var b=this.editor,c=b.getSelection().getStartElement().hasAscendant("pre",true)?CKEDITOR.ENTER_BR:b.activeEnterMode,b=c==CKEDITOR.ENTER_BR,e=CKEDITOR.tools,a=e.htmlEncode(a.replace(/\r\n/g,"\n")),a=a.replace(/\t/g,"&nbsp;&nbsp; &nbsp;"),c=c==CKEDITOR.ENTER_P?"p":"div";if(!b){var d=/\n{2}/g; -if(d.test(a))var l="<"+c+">",h="</"+c+">",a=l+a.replace(d,function(){return h+l})+h}a=a.replace(/\n/g,"<br>");b||(a=a.replace(RegExp("<br>(?=</"+c+">)"),function(a){return e.repeat(a,2)}));a=a.replace(/^ | $/g,"&nbsp;");a=a.replace(/(>|\s) /g,function(a,b){return b+"&nbsp;"}).replace(/ (?=<)/g,"&nbsp;");s(this,"text",a)},insertElement:function(a,b){b?this.insertElementIntoRange(a,b):this.insertElementIntoSelection(a)},insertElementIntoRange:function(a,b){var c=this.editor,e=c.config.enterMode,d=a.getName(), -l=CKEDITOR.dtd.$block[d];if(b.checkReadOnly())return false;b.deleteContents(1);b.startContainer.type==CKEDITOR.NODE_ELEMENT&&b.startContainer.is({tr:1,table:1,tbody:1,thead:1,tfoot:1})&&u(b);var g,h;if(l)for(;(g=b.getCommonAncestor(0,1))&&(h=CKEDITOR.dtd[g.getName()])&&(!h||!h[d]);)if(g.getName()in CKEDITOR.dtd.span)b.splitElement(g);else if(b.checkStartOfBlock()&&b.checkEndOfBlock()){b.setStartBefore(g);b.collapse(true);g.remove()}else b.splitBlock(e==CKEDITOR.ENTER_DIV?"div":"p",c.editable());b.insertNode(a); -return true},insertElementIntoSelection:function(a){var b=this.editor,e=b.activeEnterMode,b=b.getSelection(),d=b.getRanges()[0],k=a.getName(),k=CKEDITOR.dtd.$block[k];g(this);if(this.insertElementIntoRange(a,d)){d.moveToPosition(a,CKEDITOR.POSITION_AFTER_END);if(k)if((k=a.getNext(function(a){return c(a)&&!i(a)}))&&k.type==CKEDITOR.NODE_ELEMENT&&k.is(CKEDITOR.dtd.$block))k.getDtd()["#"]?d.moveToElementEditStart(k):d.moveToElementEditEnd(a);else if(!k&&e!=CKEDITOR.ENTER_BR){k=d.fixBlock(true,e==CKEDITOR.ENTER_DIV? -"div":"p");d.moveToElementEditStart(k)}}b.selectRanges([d]);n(this,CKEDITOR.env.opera)},setData:function(a,b){b||(a=this.editor.dataProcessor.toHtml(a));this.setHtml(a);this.editor.fire("dataReady")},getData:function(a){var b=this.getHtml();a||(b=this.editor.dataProcessor.toDataFormat(b));return b},setReadOnly:function(a){this.setAttribute("contenteditable",!a)},detach:function(){this.removeClass("cke_editable");var a=this.editor;this._.detach();delete a.document;delete a.window},isInline:function(){return this.getDocument().equals(CKEDITOR.document)}, -setup:function(){var a=this.editor;this.attachListener(a,"beforeGetData",function(){var b=this.getData();this.is("textarea")||a.config.ignoreEmptyParagraph!==false&&(b=b.replace(j,function(a,b){return b}));a.setData(b,null,1)},this);this.attachListener(a,"getSnapshot",function(a){a.data=this.getData(1)},this);this.attachListener(a,"afterSetData",function(){this.setData(a.getData(1))},this);this.attachListener(a,"loadSnapshot",function(a){this.setData(a.data,1)},this);this.attachListener(a,"beforeFocus", -function(){var b=a.getSelection();(b=b&&b.getNative())&&b.type=="Control"||this.focus()},this);this.attachListener(a,"insertHtml",function(a){this.insertHtml(a.data.dataValue,a.data.mode)},this);this.attachListener(a,"insertElement",function(a){this.insertElement(a.data)},this);this.attachListener(a,"insertText",function(a){this.insertText(a.data)},this);this.setReadOnly(a.readOnly);this.attachClass("cke_editable");this.attachClass(a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?"cke_editable_inline": -a.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE||a.elementMode==CKEDITOR.ELEMENT_MODE_APPENDTO?"cke_editable_themed":"");this.attachClass("cke_contents_"+a.config.contentsLangDirection);a.keystrokeHandler.blockedKeystrokes[8]=+a.readOnly;a.keystrokeHandler.attach(this);this.on("blur",function(a){CKEDITOR.env.opera&&CKEDITOR.document.getActive().equals(this.isInline()?this:this.getWindow().getFrame())?a.cancel():this.hasFocus=false},null,null,-1);this.on("focus",function(){this.hasFocus=true},null,null, --1);a.focusManager.add(this);if(this.equals(CKEDITOR.document.getActive())){this.hasFocus=true;a.once("contentDom",function(){a.focusManager.focus()})}this.isInline()&&this.changeAttr("tabindex",a.tabIndex);if(!this.is("textarea")){a.document=this.getDocument();a.window=this.getWindow();var e=a.document;this.changeAttr("spellcheck",!a.config.disableNativeSpellChecker);var d=a.config.contentsLangDirection;this.getDirection(1)!=d&&this.changeAttr("dir",d);var m=CKEDITOR.getCss();if(m){d=e.getHead(); -if(!d.getCustomData("stylesheet")){m=e.appendStyleText(m);m=new CKEDITOR.dom.element(m.ownerNode||m.owningElement);d.setCustomData("stylesheet",m);m.data("cke-temp",1)}}d=e.getCustomData("stylesheet_ref")||0;e.setCustomData("stylesheet_ref",d+1);this.setCustomData("cke_includeReadonly",!a.config.disableReadonlyStyling);this.attachListener(this,"click",function(a){var a=a.data,b=(new CKEDITOR.dom.elementPath(a.getTarget(),this)).contains("a");b&&(a.$.button!=2&&b.isReadOnly())&&a.preventDefault()}); -var k={8:1,46:1};this.attachListener(a,"key",function(b){if(a.readOnly)return true;var c=b.data.keyCode,e;if(c in k){var b=a.getSelection(),d,m=b.getRanges()[0],g=m.startPath(),i,j,n,c=c==8;if(CKEDITOR.env.ie&&CKEDITOR.env.version<11&&(d=b.getSelectedElement())||(d=h(b))){a.fire("saveSnapshot");m.moveToPosition(d,CKEDITOR.POSITION_BEFORE_START);d.remove();m.select();a.fire("saveSnapshot");e=1}else if(m.collapsed)if((i=g.block)&&(n=i[c?"getPrevious":"getNext"](o))&&n.type==CKEDITOR.NODE_ELEMENT&&n.is("table")&& -m[c?"checkStartOfBlock":"checkEndOfBlock"]()){a.fire("saveSnapshot");m[c?"checkEndOfBlock":"checkStartOfBlock"]()&&i.remove();m["moveToElementEdit"+(c?"End":"Start")](n);m.select();a.fire("saveSnapshot");e=1}else if(g.blockLimit&&g.blockLimit.is("td")&&(j=g.blockLimit.getAscendant("table"))&&m.checkBoundaryOfElement(j,c?CKEDITOR.START:CKEDITOR.END)&&(n=j[c?"getPrevious":"getNext"](o))){a.fire("saveSnapshot");m["moveToElementEdit"+(c?"End":"Start")](n);m.checkStartOfBlock()&&m.checkEndOfBlock()?n.remove(): -m.select();a.fire("saveSnapshot");e=1}else if((j=g.contains(["td","th","caption"]))&&m.checkBoundaryOfElement(j,c?CKEDITOR.START:CKEDITOR.END))e=1}return!e});a.blockless&&(CKEDITOR.env.ie&&CKEDITOR.env.needsBrFiller)&&this.attachListener(this,"keyup",function(b){if(b.data.getKeystroke()in k&&!this.getFirst(c)){this.appendBogus();b=a.createRange();b.moveToPosition(this,CKEDITOR.POSITION_AFTER_START);b.select()}});this.attachListener(this,"dblclick",function(b){if(a.readOnly)return false;b={element:b.data.getTarget()}; -a.fire("doubleclick",b)});CKEDITOR.env.ie&&this.attachListener(this,"click",b);!CKEDITOR.env.ie&&!CKEDITOR.env.opera&&this.attachListener(this,"mousedown",function(b){var c=b.data.getTarget();if(c.is("img","hr","input","textarea","select")){a.getSelection().selectElement(c);c.is("input","textarea","select")&&b.data.preventDefault()}});CKEDITOR.env.gecko&&this.attachListener(this,"mouseup",function(b){if(b.data.$.button==2){b=b.data.getTarget();if(!b.getOuterHtml().replace(j,"")){var c=a.createRange(); -c.moveToElementEditStart(b);c.select(true)}}});if(CKEDITOR.env.webkit){this.attachListener(this,"click",function(a){a.data.getTarget().is("input","select")&&a.data.preventDefault()});this.attachListener(this,"mouseup",function(a){a.data.getTarget().is("input","textarea")&&a.data.preventDefault()})}}}},_:{detach:function(){this.editor.setData(this.editor.getData(),0,1);this.clearListeners();this.restoreAttrs();var a;if(a=this.removeCustomData("classes"))for(;a.length;)this.removeClass(a.pop());a=this.getDocument(); -var b=a.getHead();if(b.getCustomData("stylesheet")){var c=a.getCustomData("stylesheet_ref");if(--c)a.setCustomData("stylesheet_ref",c);else{a.removeCustomData("stylesheet_ref");b.removeCustomData("stylesheet").remove()}}delete this.editor}}});CKEDITOR.editor.prototype.editable=function(a){var b=this._.editable;if(b&&a)return 0;if(arguments.length)b=this._.editable=a?a instanceof CKEDITOR.editable?a:new CKEDITOR.editable(this,a):(b&&b.detach(),null);return b};var i=CKEDITOR.dom.walker.bogus(),j=/(^|<body\b[^>]*>)\s*<(p|div|address|h\d|center|pre)[^>]*>\s*(?:<br[^>]*>|&nbsp;|\u00A0|&#160;)?\s*(:?<\/\2>)?\s*(?=$|<\/body>)/gi, -o=CKEDITOR.dom.walker.whitespaces(true),q=CKEDITOR.dom.walker.bookmark(false,true);CKEDITOR.on("instanceLoaded",function(b){var c=b.editor;c.on("insertElement",function(a){a=a.data;if(a.type==CKEDITOR.NODE_ELEMENT&&(a.is("input")||a.is("textarea"))){a.getAttribute("contentEditable")!="false"&&a.data("cke-editable",a.hasAttribute("contenteditable")?"true":"1");a.setAttribute("contentEditable",false)}});c.on("selectionChange",function(b){if(!c.readOnly){var e=c.getSelection();if(e&&!e.isLocked){e=c.checkDirty(); -c.fire("lockSnapshot");a(b);c.fire("unlockSnapshot");!e&&c.resetDirty()}}})});CKEDITOR.on("instanceCreated",function(a){var b=a.editor;b.on("mode",function(){var a=b.editable();if(a&&a.isInline()){var c=b.title;a.changeAttr("role","textbox");a.changeAttr("aria-label",c);c&&a.changeAttr("title",c);if(c=this.ui.space(this.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?"top":"contents")){var e=CKEDITOR.tools.getNextId(),d=CKEDITOR.dom.element.createFromHtml('<span id="'+e+'" class="cke_voice_label">'+this.lang.common.editorHelp+ -"</span>");c.append(d);a.changeAttr("aria-describedby",e)}}})});CKEDITOR.addCss(".cke_editable{cursor:text}.cke_editable img,.cke_editable input,.cke_editable textarea{cursor:default}");var s=function(){function a(b){return b.type==CKEDITOR.NODE_ELEMENT}function b(c,e){var d,k,m,l,h=[],i=e.range.startContainer;d=e.range.startPath();for(var i=g[i.getName()],r=0,j=c.getChildren(),n=j.count(),o=-1,q=-1,x=0,s=d.contains(g.$list);r<n;++r){d=j.getItem(r);if(a(d)){m=d.getName();if(s&&m in CKEDITOR.dtd.$list)h= -h.concat(b(d,e));else{l=!!i[m];if(m=="br"&&d.data("cke-eol")&&(!r||r==n-1)){x=(k=r?h[r-1].node:j.getItem(r+1))&&(!a(k)||!k.is("br"));k=k&&a(k)&&g.$block[k.getName()]}o==-1&&!l&&(o=r);l||(q=r);h.push({isElement:1,isLineBreak:x,isBlock:d.isBlockBoundary(),hasBlockSibling:k,node:d,name:m,allowed:l});k=x=0}}else h.push({isElement:0,node:d,allowed:1})}if(o>-1)h[o].firstNotAllowed=1;if(q>-1)h[q].lastNotAllowed=1;return h}function e(b,c){var d=[],k=b.getChildren(),m=k.count(),l,h=0,r=g[c],i=!b.is(g.$inline)|| -b.is("br");for(i&&d.push(" ");h<m;h++){l=k.getItem(h);a(l)&&!l.is(r)?d=d.concat(e(l,c)):d.push(l)}i&&d.push(" ");return d}function d(b){return b&&a(b)&&(b.is(g.$removeEmpty)||b.is("a")&&!b.isBlockBoundary())}function k(b,c,e,d){var l=b.clone(),m,g;l.setEndAt(c,CKEDITOR.POSITION_BEFORE_END);if((m=(new CKEDITOR.dom.walker(l)).next())&&a(m)&&h[m.getName()]&&(g=m.getPrevious())&&a(g)&&!g.getParent().equals(b.startContainer)&&e.contains(g)&&d.contains(m)&&m.isIdentical(g)){m.moveChildren(g);m.remove(); -k(b,c,e,d)}}function l(b,c){function e(b,c){if(c.isBlock&&c.isElement&&!c.node.is("br")&&a(b)&&b.is("br")){b.remove();return 1}}var d=c.endContainer.getChild(c.endOffset),k=c.endContainer.getChild(c.endOffset-1);d&&e(d,b[b.length-1]);if(k&&e(k,b[0])){c.setEnd(c.endContainer,c.endOffset-1);c.collapse()}}var g=CKEDITOR.dtd,h={p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,ul:1,ol:1,li:1,pre:1,dl:1,blockquote:1},r={p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1},i=CKEDITOR.tools.extend({},g.$inline);delete i.br;return function(h, -j,o){var q=h.editor;h.getDocument();var x=q.getSelection().getRanges()[0],s=false;if(j=="unfiltered_html"){j="html";s=true}if(!x.checkReadOnly()){var v=(new CKEDITOR.dom.elementPath(x.startContainer,x.root)).blockLimit||x.root,j={type:j,dontFilter:s,editable:h,editor:q,range:x,blockLimit:v,mergeCandidates:[],zombies:[]},q=j.range,s=j.mergeCandidates,w,H,C,D;if(j.type=="text"&&q.shrink(CKEDITOR.SHRINK_ELEMENT,true,false)){w=CKEDITOR.dom.element.createFromHtml("<span>&nbsp;</span>",q.document);q.insertNode(w); -q.setStartAfter(w)}H=new CKEDITOR.dom.elementPath(q.startContainer);j.endPath=C=new CKEDITOR.dom.elementPath(q.endContainer);if(!q.collapsed){var v=C.block||C.blockLimit,X=q.getCommonAncestor();v&&(!v.equals(X)&&!v.contains(X)&&q.checkEndOfBlock())&&j.zombies.push(v);q.deleteContents()}for(;(D=a(q.startContainer)&&q.startContainer.getChild(q.startOffset-1))&&a(D)&&D.isBlockBoundary()&&H.contains(D);)q.moveToPosition(D,CKEDITOR.POSITION_BEFORE_END);k(q,j.blockLimit,H,C);if(w){q.setEndBefore(w);q.collapse(); -w.remove()}w=q.startPath();if(v=w.contains(d,false,1)){q.splitElement(v);j.inlineStylesRoot=v;j.inlineStylesPeak=w.lastElement}w=q.createBookmark();(v=w.startNode.getPrevious(c))&&a(v)&&d(v)&&s.push(v);(v=w.startNode.getNext(c))&&a(v)&&d(v)&&s.push(v);for(v=w.startNode;(v=v.getParent())&&d(v);)s.push(v);q.moveToBookmark(w);if(w=o){w=j.range;if(j.type=="text"&&j.inlineStylesRoot){D=j.inlineStylesPeak;q=D.getDocument().createText("{cke-peak}");for(s=j.inlineStylesRoot.getParent();!D.equals(s);){q=q.appendTo(D.clone()); -D=D.getParent()}o=q.getOuterHtml().split("{cke-peak}").join(o)}D=j.blockLimit.getName();if(/^\s+|\s+$/.test(o)&&"span"in CKEDITOR.dtd[D])var u='<span data-cke-marker="1">&nbsp;</span>',o=u+o+u;o=j.editor.dataProcessor.toHtml(o,{context:null,fixForBody:false,dontFilter:j.dontFilter,filter:j.editor.activeFilter,enterMode:j.editor.activeEnterMode});D=w.document.createElement("body");D.setHtml(o);if(u){D.getFirst().remove();D.getLast().remove()}if((u=w.startPath().block)&&!(u.getChildCount()==1&&u.getBogus()))a:{var F; -if(D.getChildCount()==1&&a(F=D.getFirst())&&F.is(r)){u=F.getElementsByTag("*");w=0;for(s=u.count();w<s;w++){q=u.getItem(w);if(!q.is(i))break a}F.moveChildren(F.getParent(1));F.remove()}}j.dataWrapper=D;w=o}if(w){F=j.range;var u=F.document,B,o=j.blockLimit;w=0;var J;D=[];var G,O,s=q=0,K,R;H=F.startContainer;var v=j.endPath.elements[0],S;C=v.getPosition(H);X=!!v.getCommonAncestor(H)&&C!=CKEDITOR.POSITION_IDENTICAL&&!(C&CKEDITOR.POSITION_CONTAINS+CKEDITOR.POSITION_IS_CONTAINED);H=b(j.dataWrapper,j); -for(l(H,F);w<H.length;w++){C=H[w];if(B=C.isLineBreak){B=F;K=o;var N=void 0,U=void 0;if(C.hasBlockSibling)B=1;else{N=B.startContainer.getAscendant(g.$block,1);if(!N||!N.is({div:1,p:1}))B=0;else{U=N.getPosition(K);if(U==CKEDITOR.POSITION_IDENTICAL||U==CKEDITOR.POSITION_CONTAINS)B=0;else{K=B.splitElement(N);B.moveToPosition(K,CKEDITOR.POSITION_AFTER_START);B=1}}}}if(B)s=w>0;else{B=F.startPath();if(!C.isBlock&&j.editor.config.autoParagraph!==false&&(j.editor.activeEnterMode!=CKEDITOR.ENTER_BR&&j.editor.editable().equals(B.blockLimit)&& -!B.block)&&(O=j.editor.activeEnterMode!=CKEDITOR.ENTER_BR&&j.editor.config.autoParagraph!==false?j.editor.activeEnterMode==CKEDITOR.ENTER_DIV?"div":"p":false)){O=u.createElement(O);O.appendBogus();F.insertNode(O);CKEDITOR.env.needsBrFiller&&(J=O.getBogus())&&J.remove();F.moveToPosition(O,CKEDITOR.POSITION_BEFORE_END)}if((B=F.startPath().block)&&!B.equals(G)){if(J=B.getBogus()){J.remove();D.push(B)}G=B}C.firstNotAllowed&&(q=1);if(q&&C.isElement){B=F.startContainer;for(K=null;B&&!g[B.getName()][C.name];){if(B.equals(o)){B= -null;break}K=B;B=B.getParent()}if(B){if(K){R=F.splitElement(K);j.zombies.push(R);j.zombies.push(K)}}else{K=o.getName();S=!w;B=w==H.length-1;K=e(C.node,K);for(var N=[],U=K.length,Y=0,$=void 0,aa=0,ba=-1;Y<U;Y++){$=K[Y];if($==" "){if(!aa&&(!S||Y)){N.push(new CKEDITOR.dom.text(" "));ba=N.length}aa=1}else{N.push($);aa=0}}B&&ba==N.length&&N.pop();S=N}}if(S){for(;B=S.pop();)F.insertNode(B);S=0}else F.insertNode(C.node);if(C.lastNotAllowed&&w<H.length-1){(R=X?v:R)&&F.setEndAt(R,CKEDITOR.POSITION_AFTER_START); -q=0}F.collapse()}}j.dontMoveCaret=s;j.bogusNeededBlocks=D}J=j.range;var V;R=j.bogusNeededBlocks;for(S=J.createBookmark();G=j.zombies.pop();)if(G.getParent()){O=J.clone();O.moveToElementEditStart(G);O.removeEmptyBlocksAtEnd()}if(R)for(;G=R.pop();)CKEDITOR.env.needsBrFiller?G.appendBogus():G.append(J.document.createText(" "));for(;G=j.mergeCandidates.pop();)G.mergeSiblings();J.moveToBookmark(S);if(!j.dontMoveCaret){for(G=a(J.startContainer)&&J.startContainer.getChild(J.startOffset-1);G&&a(G)&&!G.is(g.$empty);){if(G.isBlockBoundary())J.moveToPosition(G, -CKEDITOR.POSITION_BEFORE_END);else{if(d(G)&&G.getHtml().match(/(\s|&nbsp;)$/g)){V=null;break}V=J.clone();V.moveToPosition(G,CKEDITOR.POSITION_BEFORE_END)}G=G.getLast(c)}V&&J.moveToRange(V)}x.select();n(h)}}}(),u=function(){function a(b){b=new CKEDITOR.dom.walker(b);b.guard=function(a,b){if(b)return false;if(a.type==CKEDITOR.NODE_ELEMENT)return a.is(CKEDITOR.dtd.$tableContent)};b.evaluator=function(a){return a.type==CKEDITOR.NODE_ELEMENT};return b}function b(a,c,e){c=a.getDocument().createElement(c); -a.append(c,e);return c}function c(a){var b=a.count(),e;for(b;b-- >0;){e=a.getItem(b);if(!CKEDITOR.tools.trim(e.getHtml())){e.appendBogus();CKEDITOR.env.ie&&(CKEDITOR.env.version<9&&e.getChildCount())&&e.getFirst().remove()}}}return function(e){var d=e.startContainer,l=d.getAscendant("table",1),g=false;c(l.getElementsByTag("td"));c(l.getElementsByTag("th"));l=e.clone();l.setStart(d,0);l=a(l).lastBackward();if(!l){l=e.clone();l.setEndAt(d,CKEDITOR.POSITION_BEFORE_END);l=a(l).lastForward();g=true}l|| -(l=d);if(l.is("table")){e.setStartAt(l,CKEDITOR.POSITION_BEFORE_START);e.collapse(true);l.remove()}else{l.is({tbody:1,thead:1,tfoot:1})&&(l=b(l,"tr",g));l.is("tr")&&(l=b(l,l.getParent().is("thead")?"th":"td",g));(d=l.getBogus())&&d.remove();e.moveToPosition(l,g?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_END)}}}()})(); -(function(){function a(){var a=this._.fakeSelection,b;if(a){b=this.getSelection(1);if(!b||!b.isHidden()){a.reset();a=0}}if(!a){a=b||this.getSelection(1);if(!a||a.getType()==CKEDITOR.SELECTION_NONE)return}this.fire("selectionCheck",a);b=this.elementPath();if(!b.compare(this._.selectionPreviousPath)){if(CKEDITOR.env.webkit)this._.previousActive=this.document.getActive();this._.selectionPreviousPath=b;this.fire("selectionChange",{selection:a,path:b})}}function e(){q=true;if(!o){b.call(this);o=CKEDITOR.tools.setTimeout(b, -200,this)}}function b(){o=null;if(q){CKEDITOR.tools.setTimeout(a,0,this);q=false}}function c(a){function b(c,e){return!c||c.type==CKEDITOR.NODE_TEXT?false:a.clone()["moveToElementEdit"+(e?"End":"Start")](c)}if(!(a.root instanceof CKEDITOR.editable))return false;var c=a.startContainer,e=a.getPreviousNode(s,null,c),d=a.getNextNode(s,null,c);return b(e)||b(d,1)||!e&&!d&&!(c.type==CKEDITOR.NODE_ELEMENT&&c.isBlockBoundary()&&c.getBogus())?true:false}function d(a){return a.getCustomData("cke-fillingChar")} -function h(a,b){var c=a&&a.removeCustomData("cke-fillingChar");if(c){if(b!==false){var e,d=a.getDocument().getSelection().getNative(),f=d&&d.type!="None"&&d.getRangeAt(0);if(c.getLength()>1&&f&&f.intersectsNode(c.$)){e=[d.anchorOffset,d.focusOffset];f=d.focusNode==c.$&&d.focusOffset>0;d.anchorNode==c.$&&d.anchorOffset>0&&e[0]--;f&&e[1]--;var h;f=d;if(!f.isCollapsed){h=f.getRangeAt(0);h.setStart(f.anchorNode,f.anchorOffset);h.setEnd(f.focusNode,f.focusOffset);h=h.collapsed}h&&e.unshift(e.pop())}}c.setText(g(c.getText())); -if(e){c=d.getRangeAt(0);c.setStart(c.startContainer,e[0]);c.setEnd(c.startContainer,e[1]);d.removeAllRanges();d.addRange(c)}}}function g(a){return a.replace(/\u200B( )?/g,function(a){return a[1]?" ":""})}function n(a,b,c){var e=a.on("focus",function(a){a.cancel()},null,null,-100);if(CKEDITOR.env.ie)var d=a.getDocument().on("selectionchange",function(a){a.cancel()},null,null,-100);else{var f=new CKEDITOR.dom.range(a);f.moveToElementEditStart(a);var g=a.getDocument().$.createRange();g.setStart(f.startContainer.$, -f.startOffset);g.collapse(1);b.removeAllRanges();b.addRange(g)}c&&a.focus();e.removeListener();d&&d.removeListener()}function i(a){var b=CKEDITOR.dom.element.createFromHtml('<div data-cke-hidden-sel="1" data-cke-temp="1" style="'+(CKEDITOR.env.ie?"display:none":"position:fixed;top:0;left:-1000px")+'">&nbsp;</div>',a.document);a.fire("lockSnapshot");a.editable().append(b);var c=a.getSelection(),e=a.createRange(),d=c.root.on("selectionchange",function(a){a.cancel()},null,null,0);e.setStartAt(b,CKEDITOR.POSITION_AFTER_START); -e.setEndAt(b,CKEDITOR.POSITION_BEFORE_END);c.selectRanges([e]);d.removeListener();a.fire("unlockSnapshot");a._.hiddenSelectionContainer=b}function j(a){var b={37:1,39:1,8:1,46:1};return function(c){var e=c.data.getKeystroke();if(b[e]){var d=a.getSelection().getRanges(),f=d[0];if(d.length==1&&f.collapsed)if((e=f[e<38?"getPreviousEditableNode":"getNextEditableNode"]())&&e.type==CKEDITOR.NODE_ELEMENT&&e.getAttribute("contenteditable")=="false"){a.getSelection().fake(e);c.data.preventDefault();c.cancel()}}}} -var o,q,s=CKEDITOR.dom.walker.invisible(1),u=function(){function a(b){return function(a){var c=a.editor.createRange();c.moveToClosestEditablePosition(a.selected,b)&&a.editor.getSelection().selectRanges([c]);return false}}function b(a){return function(b){var c=b.editor,e=c.createRange(),d;if(!(d=e.moveToClosestEditablePosition(b.selected,a)))d=e.moveToClosestEditablePosition(b.selected,!a);d&&c.getSelection().selectRanges([e]);c.fire("saveSnapshot");b.selected.remove();if(!d){e.moveToElementEditablePosition(c.editable()); -c.getSelection().selectRanges([e])}c.fire("saveSnapshot");return false}}var c=a(),e=a(1);return{37:c,38:c,39:e,40:e,8:b(),46:b(1)}}();CKEDITOR.on("instanceCreated",function(b){function c(){var a=d.getSelection();a&&a.removeAllRanges()}var d=b.editor;d.on("contentDom",function(){var b=d.document,c=CKEDITOR.document,k=d.editable(),m=b.getBody(),g=b.getDocumentElement(),i=k.isInline(),o,n;CKEDITOR.env.gecko&&k.attachListener(k,"focus",function(a){a.removeListener();if(o!==0)if((a=d.getSelection().getNative())&& -a.isCollapsed&&a.anchorNode==k.$){a=d.createRange();a.moveToElementEditStart(k);a.select()}},null,null,-2);k.attachListener(k,CKEDITOR.env.webkit?"DOMFocusIn":"focus",function(){o&&CKEDITOR.env.webkit&&(o=d._.previousActive&&d._.previousActive.equals(b.getActive()));d.unlockSelection(o);o=0},null,null,-1);k.attachListener(k,"mousedown",function(){o=0});if(CKEDITOR.env.ie||CKEDITOR.env.opera||i){var q=function(){n=new CKEDITOR.dom.selection(d.getSelection());n.lock()};f?k.attachListener(k,"beforedeactivate", -q,null,null,-1):k.attachListener(d,"selectionCheck",q,null,null,-1);k.attachListener(k,CKEDITOR.env.webkit?"DOMFocusOut":"blur",function(){d.lockSelection(n);o=1},null,null,-1);k.attachListener(k,"mousedown",function(){o=0})}if(CKEDITOR.env.ie&&!i){var p;k.attachListener(k,"mousedown",function(a){if(a.data.$.button==2){a=d.document.getSelection();if(!a||a.getType()==CKEDITOR.SELECTION_NONE)p=d.window.getScrollPosition()}});k.attachListener(k,"mouseup",function(a){if(a.data.$.button==2&&p){d.document.$.documentElement.scrollLeft= -p.x;d.document.$.documentElement.scrollTop=p.y}p=null});if(b.$.compatMode!="BackCompat"){if(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)g.on("mousedown",function(a){function b(a){a=a.data.$;if(e){var c=m.$.createTextRange();try{c.moveToPoint(a.x,a.y)}catch(d){}e.setEndPoint(f.compareEndPoints("StartToStart",c)<0?"EndToEnd":"StartToStart",c);e.select()}}function d(){g.removeListener("mousemove",b);c.removeListener("mouseup",d);g.removeListener("mouseup",d);e.select()}a=a.data;if(a.getTarget().is("html")&& -a.$.y<g.$.clientHeight&&a.$.x<g.$.clientWidth){var e=m.$.createTextRange();try{e.moveToPoint(a.$.x,a.$.y)}catch(k){}var f=e.duplicate();g.on("mousemove",b);c.on("mouseup",d);g.on("mouseup",d)}});if(CKEDITOR.env.version>7&&CKEDITOR.env.version<11){g.on("mousedown",function(a){if(a.data.getTarget().is("html")){c.on("mouseup",v);g.on("mouseup",v)}});var v=function(){c.removeListener("mouseup",v);g.removeListener("mouseup",v);var a=CKEDITOR.document.$.selection,d=a.createRange();a.type!="None"&&d.parentElement().ownerDocument== -b.$&&d.select()}}}}k.attachListener(k,"selectionchange",a,d);k.attachListener(k,"keyup",e,d);k.attachListener(k,CKEDITOR.env.webkit?"DOMFocusIn":"focus",function(){d.forceNextSelectionCheck();d.selectionChange(1)});if(i?CKEDITOR.env.webkit||CKEDITOR.env.gecko:CKEDITOR.env.opera){var w;k.attachListener(k,"mousedown",function(){w=1});k.attachListener(b.getDocumentElement(),"mouseup",function(){w&&e.call(d);w=0})}else k.attachListener(CKEDITOR.env.ie?k:b.getDocumentElement(),"mouseup",e,d);CKEDITOR.env.webkit&& -k.attachListener(b,"keydown",function(a){switch(a.data.getKey()){case 13:case 33:case 34:case 35:case 36:case 37:case 39:case 8:case 45:case 46:h(k)}},null,null,-1);k.attachListener(k,"keydown",j(d),null,null,-1)});d.on("contentDomUnload",d.forceNextSelectionCheck,d);d.on("dataReady",function(){delete d._.fakeSelection;delete d._.hiddenSelectionContainer;d.selectionChange(1)});d.on("loadSnapshot",function(){var a=d.editable().getLast(function(a){return a.type==CKEDITOR.NODE_ELEMENT});a&&a.hasAttribute("data-cke-hidden-sel")&& -a.remove()},null,null,100);CKEDITOR.env.ie9Compat&&d.on("beforeDestroy",c,null,null,9);CKEDITOR.env.webkit&&d.on("setData",c);d.on("contentDomUnload",function(){d.unlockSelection()});d.on("key",function(a){if(d.mode=="wysiwyg"){var b=d.getSelection();if(b.isFake){var c=u[a.data.keyCode];if(c)return c({editor:d,selected:b.getSelectedElement(),selection:b,keyEvent:a})}}})});CKEDITOR.on("instanceReady",function(a){var b=a.editor;if(CKEDITOR.env.webkit){b.on("selectionChange",function(){var a=b.editable(), -c=d(a);c&&(c.getCustomData("ready")?h(a):c.setCustomData("ready",1))},null,null,-1);b.on("beforeSetMode",function(){h(b.editable())},null,null,-1);var c,e,a=function(){var a=b.editable();if(a)if(a=d(a)){var f=b.document.$.defaultView.getSelection();f.type=="Caret"&&f.anchorNode==a.$&&(e=1);c=a.getText();a.setText(g(c))}},f=function(){var a=b.editable();if(a)if(a=d(a)){a.setText(c);if(e){b.document.$.defaultView.getSelection().setPosition(a.$,a.getLength());e=0}}};b.on("beforeUndoImage",a);b.on("afterUndoImage", -f);b.on("beforeGetData",a,null,null,0);b.on("getData",f)}});CKEDITOR.editor.prototype.selectionChange=function(b){(b?a:e).call(this)};CKEDITOR.editor.prototype.getSelection=function(a){if((this._.savedSelection||this._.fakeSelection)&&!a)return this._.savedSelection||this._.fakeSelection;return(a=this.editable())&&this.mode=="wysiwyg"?new CKEDITOR.dom.selection(a):null};CKEDITOR.editor.prototype.lockSelection=function(a){a=a||this.getSelection(1);if(a.getType()!=CKEDITOR.SELECTION_NONE){!a.isLocked&& -a.lock();this._.savedSelection=a;return true}return false};CKEDITOR.editor.prototype.unlockSelection=function(a){var b=this._.savedSelection;if(b){b.unlock(a);delete this._.savedSelection;return true}return false};CKEDITOR.editor.prototype.forceNextSelectionCheck=function(){delete this._.selectionPreviousPath};CKEDITOR.dom.document.prototype.getSelection=function(){return new CKEDITOR.dom.selection(this)};CKEDITOR.dom.range.prototype.select=function(){var a=this.root instanceof CKEDITOR.editable? -this.root.editor.getSelection():new CKEDITOR.dom.selection(this.root);a.selectRanges([this]);return a};CKEDITOR.SELECTION_NONE=1;CKEDITOR.SELECTION_TEXT=2;CKEDITOR.SELECTION_ELEMENT=3;var f=typeof window.getSelection!="function",p=1;CKEDITOR.dom.selection=function(a){if(a instanceof CKEDITOR.dom.selection)var b=a,a=a.root;var c=a instanceof CKEDITOR.dom.element;this.rev=b?b.rev:p++;this.document=a instanceof CKEDITOR.dom.document?a:a.getDocument();this.root=a=c?a:this.document.getBody();this.isLocked= -0;this._={cache:{}};if(b){CKEDITOR.tools.extend(this._.cache,b._.cache);this.isFake=b.isFake;this.isLocked=b.isLocked;return this}b=f?this.document.$.selection:this.document.getWindow().$.getSelection();if(CKEDITOR.env.webkit)(b.type=="None"&&this.document.getActive().equals(a)||b.type=="Caret"&&b.anchorNode.nodeType==CKEDITOR.NODE_DOCUMENT)&&n(a,b);else if(CKEDITOR.env.gecko)b&&(this.document.getActive().equals(a)&&b.anchorNode&&b.anchorNode.nodeType==CKEDITOR.NODE_DOCUMENT)&&n(a,b,true);else if(CKEDITOR.env.ie){var d; -try{d=this.document.getActive()}catch(e){}if(f)b.type=="None"&&(d&&d.equals(this.document.getDocumentElement()))&&n(a,null,true);else{(b=b&&b.anchorNode)&&(b=new CKEDITOR.dom.node(b));d&&(d.equals(this.document.getDocumentElement())&&b&&(a.equals(b)||a.contains(b)))&&n(a,null,true)}}d=this.getNative();var g,h;if(d)if(d.getRangeAt)g=(h=d.rangeCount&&d.getRangeAt(0))&&new CKEDITOR.dom.node(h.commonAncestorContainer);else{try{h=d.createRange()}catch(j){}g=h&&CKEDITOR.dom.element.get(h.item&&h.item(0)|| -h.parentElement())}if(!g||!(g.type==CKEDITOR.NODE_ELEMENT||g.type==CKEDITOR.NODE_TEXT)||!this.root.equals(g)&&!this.root.contains(g)){this._.cache.type=CKEDITOR.SELECTION_NONE;this._.cache.startElement=null;this._.cache.selectedElement=null;this._.cache.selectedText="";this._.cache.ranges=new CKEDITOR.dom.rangeList}return this};var y={img:1,hr:1,li:1,table:1,tr:1,td:1,th:1,embed:1,object:1,ol:1,ul:1,a:1,input:1,form:1,select:1,textarea:1,button:1,fieldset:1,thead:1,tfoot:1};CKEDITOR.dom.selection.prototype= -{getNative:function(){return this._.cache.nativeSel!==void 0?this._.cache.nativeSel:this._.cache.nativeSel=f?this.document.$.selection:this.document.getWindow().$.getSelection()},getType:f?function(){var a=this._.cache;if(a.type)return a.type;var b=CKEDITOR.SELECTION_NONE;try{var c=this.getNative(),d=c.type;if(d=="Text")b=CKEDITOR.SELECTION_TEXT;if(d=="Control")b=CKEDITOR.SELECTION_ELEMENT;if(c.createRange().parentElement())b=CKEDITOR.SELECTION_TEXT}catch(e){}return a.type=b}:function(){var a=this._.cache; -if(a.type)return a.type;var b=CKEDITOR.SELECTION_TEXT,c=this.getNative();if(!c||!c.rangeCount)b=CKEDITOR.SELECTION_NONE;else if(c.rangeCount==1){var c=c.getRangeAt(0),d=c.startContainer;if(d==c.endContainer&&d.nodeType==1&&c.endOffset-c.startOffset==1&&y[d.childNodes[c.startOffset].nodeName.toLowerCase()])b=CKEDITOR.SELECTION_ELEMENT}return a.type=b},getRanges:function(){var a=f?function(){function a(b){return(new CKEDITOR.dom.node(b)).getIndex()}var b=function(b,c){b=b.duplicate();b.collapse(c); -var d=b.parentElement();if(!d.hasChildNodes())return{container:d,offset:0};for(var e=d.children,f,g,h=b.duplicate(),l=0,m=e.length-1,j=-1,i,o;l<=m;){j=Math.floor((l+m)/2);f=e[j];h.moveToElementText(f);i=h.compareEndPoints("StartToStart",b);if(i>0)m=j-1;else if(i<0)l=j+1;else return{container:d,offset:a(f)}}if(j==-1||j==e.length-1&&i<0){h.moveToElementText(d);h.setEndPoint("StartToStart",b);h=h.text.replace(/(\r\n|\r)/g,"\n").length;e=d.childNodes;if(!h){f=e[e.length-1];return f.nodeType!=CKEDITOR.NODE_TEXT? -{container:d,offset:e.length}:{container:f,offset:f.nodeValue.length}}for(d=e.length;h>0&&d>0;){g=e[--d];if(g.nodeType==CKEDITOR.NODE_TEXT){o=g;h=h-g.nodeValue.length}}return{container:o,offset:-h}}h.collapse(i>0?true:false);h.setEndPoint(i>0?"StartToStart":"EndToStart",b);h=h.text.replace(/(\r\n|\r)/g,"\n").length;if(!h)return{container:d,offset:a(f)+(i>0?0:1)};for(;h>0;)try{g=f[i>0?"previousSibling":"nextSibling"];if(g.nodeType==CKEDITOR.NODE_TEXT){h=h-g.nodeValue.length;o=g}f=g}catch(n){return{container:d, -offset:a(f)}}return{container:o,offset:i>0?-h:o.nodeValue.length+h}};return function(){var a=this.getNative(),c=a&&a.createRange(),d=this.getType();if(!a)return[];if(d==CKEDITOR.SELECTION_TEXT){a=new CKEDITOR.dom.range(this.root);d=b(c,true);a.setStart(new CKEDITOR.dom.node(d.container),d.offset);d=b(c);a.setEnd(new CKEDITOR.dom.node(d.container),d.offset);a.endContainer.getPosition(a.startContainer)&CKEDITOR.POSITION_PRECEDING&&a.endOffset<=a.startContainer.getIndex()&&a.collapse();return[a]}if(d== -CKEDITOR.SELECTION_ELEMENT){for(var d=[],e=0;e<c.length;e++){for(var f=c.item(e),k=f.parentNode,g=0,a=new CKEDITOR.dom.range(this.root);g<k.childNodes.length&&k.childNodes[g]!=f;g++);a.setStart(new CKEDITOR.dom.node(k),g);a.setEnd(new CKEDITOR.dom.node(k),g+1);d.push(a)}return d}return[]}}():function(){var a=[],b,c=this.getNative();if(!c)return a;for(var d=0;d<c.rangeCount;d++){var e=c.getRangeAt(d);b=new CKEDITOR.dom.range(this.root);b.setStart(new CKEDITOR.dom.node(e.startContainer),e.startOffset); -b.setEnd(new CKEDITOR.dom.node(e.endContainer),e.endOffset);a.push(b)}return a};return function(b){var c=this._.cache;if(c.ranges&&!b)return c.ranges;if(!c.ranges)c.ranges=new CKEDITOR.dom.rangeList(a.call(this));if(b)for(var d=c.ranges,e=0;e<d.length;e++){var f=d[e];f.getCommonAncestor().isReadOnly()&&d.splice(e,1);if(!f.collapsed){if(f.startContainer.isReadOnly())for(var b=f.startContainer,g;b;){if((g=b.type==CKEDITOR.NODE_ELEMENT)&&b.is("body")||!b.isReadOnly())break;g&&b.getAttribute("contentEditable")== -"false"&&f.setStartAfter(b);b=b.getParent()}b=f.startContainer;g=f.endContainer;var h=f.startOffset,j=f.endOffset,i=f.clone();b&&b.type==CKEDITOR.NODE_TEXT&&(h>=b.getLength()?i.setStartAfter(b):i.setStartBefore(b));g&&g.type==CKEDITOR.NODE_TEXT&&(j?i.setEndAfter(g):i.setEndBefore(g));b=new CKEDITOR.dom.walker(i);b.evaluator=function(a){if(a.type==CKEDITOR.NODE_ELEMENT&&a.isReadOnly()){var b=f.clone();f.setEndBefore(a);f.collapsed&&d.splice(e--,1);if(!(a.getPosition(i.endContainer)&CKEDITOR.POSITION_CONTAINS)){b.setStartAfter(a); -b.collapsed||d.splice(e+1,0,b)}return true}return false};b.next()}}return c.ranges}}(),getStartElement:function(){var a=this._.cache;if(a.startElement!==void 0)return a.startElement;var b;switch(this.getType()){case CKEDITOR.SELECTION_ELEMENT:return this.getSelectedElement();case CKEDITOR.SELECTION_TEXT:var c=this.getRanges()[0];if(c){if(c.collapsed){b=c.startContainer;b.type!=CKEDITOR.NODE_ELEMENT&&(b=b.getParent())}else{for(c.optimize();;){b=c.startContainer;if(c.startOffset==(b.getChildCount?b.getChildCount(): -b.getLength())&&!b.isBlockBoundary())c.setStartAfter(b);else break}b=c.startContainer;if(b.type!=CKEDITOR.NODE_ELEMENT)return b.getParent();b=b.getChild(c.startOffset);if(!b||b.type!=CKEDITOR.NODE_ELEMENT)b=c.startContainer;else for(c=b.getFirst();c&&c.type==CKEDITOR.NODE_ELEMENT;){b=c;c=c.getFirst()}}b=b.$}}return a.startElement=b?new CKEDITOR.dom.element(b):null},getSelectedElement:function(){var a=this._.cache;if(a.selectedElement!==void 0)return a.selectedElement;var b=this,c=CKEDITOR.tools.tryThese(function(){return b.getNative().createRange().item(0)}, -function(){for(var a=b.getRanges()[0].clone(),c,d,e=2;e&&(!(c=a.getEnclosedNode())||!(c.type==CKEDITOR.NODE_ELEMENT&&y[c.getName()]&&(d=c)));e--)a.shrink(CKEDITOR.SHRINK_ELEMENT);return d&&d.$});return a.selectedElement=c?new CKEDITOR.dom.element(c):null},getSelectedText:function(){var a=this._.cache;if(a.selectedText!==void 0)return a.selectedText;var b=this.getNative(),b=f?b.type=="Control"?"":b.createRange().text:b.toString();return a.selectedText=b},lock:function(){this.getRanges();this.getStartElement(); -this.getSelectedElement();this.getSelectedText();this._.cache.nativeSel=null;this.isLocked=1},unlock:function(a){if(this.isLocked){if(a)var b=this.getSelectedElement(),c=!b&&this.getRanges(),d=this.isFake;this.isLocked=0;this.reset();if(a)(a=b||c[0]&&c[0].getCommonAncestor())&&a.getAscendant("body",1)&&(d?this.fake(b):b?this.selectElement(b):this.selectRanges(c))}},reset:function(){this._.cache={};this.isFake=0;var a=this.root.editor;if(a&&a._.fakeSelection&&this.rev==a._.fakeSelection.rev){delete a._.fakeSelection; -var b=a._.hiddenSelectionContainer;if(b){a.fire("lockSnapshot");b.remove();a.fire("unlockSnapshot")}delete a._.hiddenSelectionContainer}this.rev=p++},selectElement:function(a){var b=new CKEDITOR.dom.range(this.root);b.setStartBefore(a);b.setEndAfter(a);this.selectRanges([b])},selectRanges:function(a){this.reset();if(a.length)if(this.isLocked){var b=CKEDITOR.document.getActive();this.unlock();this.selectRanges(a);this.lock();!b.equals(this.root)&&b.focus()}else{a:{var d,e;if(a.length==1&&!(e=a[0]).collapsed&& -(b=e.getEnclosedNode())&&b.type==CKEDITOR.NODE_ELEMENT){e=e.clone();e.shrink(CKEDITOR.SHRINK_ELEMENT,true);if((d=e.getEnclosedNode())&&d.type==CKEDITOR.NODE_ELEMENT)b=d;if(b.getAttribute("contenteditable")=="false")break a}b=void 0}if(b)this.fake(b);else{if(f){e=CKEDITOR.dom.walker.whitespaces(true);d=/\ufeff|\u00a0/;var g={table:1,tbody:1,tr:1};if(a.length>1){b=a[a.length-1];a[0].setEnd(b.endContainer,b.endOffset)}var b=a[0],a=b.collapsed,j,i,o,n=b.getEnclosedNode();if(n&&n.type==CKEDITOR.NODE_ELEMENT&& -n.getName()in y&&(!n.is("a")||!n.getText()))try{o=n.$.createControlRange();o.addElement(n.$);o.select();return}catch(q){}(b.startContainer.type==CKEDITOR.NODE_ELEMENT&&b.startContainer.getName()in g||b.endContainer.type==CKEDITOR.NODE_ELEMENT&&b.endContainer.getName()in g)&&b.shrink(CKEDITOR.NODE_ELEMENT,true);o=b.createBookmark();var g=o.startNode,p;if(!a)p=o.endNode;o=b.document.$.body.createTextRange();o.moveToElementText(g.$);o.moveStart("character",1);if(p){d=b.document.$.body.createTextRange(); -d.moveToElementText(p.$);o.setEndPoint("EndToEnd",d);o.moveEnd("character",-1)}else{j=g.getNext(e);i=g.hasAscendant("pre");j=!(j&&j.getText&&j.getText().match(d))&&(i||!g.hasPrevious()||g.getPrevious().is&&g.getPrevious().is("br"));i=b.document.createElement("span");i.setHtml("&#65279;");i.insertBefore(g);j&&b.document.createText("").insertBefore(g)}b.setStartBefore(g);g.remove();if(a){if(j){o.moveStart("character",-1);o.select();b.document.$.selection.clear()}else o.select();b.moveToPosition(i, -CKEDITOR.POSITION_BEFORE_START);i.remove()}else{b.setEndBefore(p);p.remove();o.select()}}else{p=this.getNative();if(!p)return;if(CKEDITOR.env.opera){b=this.document.$.createRange();b.selectNodeContents(this.root.$);p.addRange(b)}this.removeAllRanges();for(o=0;o<a.length;o++){if(o<a.length-1){b=a[o];j=a[o+1];d=b.clone();d.setStart(b.endContainer,b.endOffset);d.setEnd(j.startContainer,j.startOffset);if(!d.collapsed){d.shrink(CKEDITOR.NODE_ELEMENT,true);i=d.getCommonAncestor();d=d.getEnclosedNode(); -if(i.isReadOnly()||d&&d.isReadOnly()){j.setStart(b.startContainer,b.startOffset);a.splice(o--,1);continue}}}b=a[o];i=this.document.$.createRange();j=b.startContainer;if(CKEDITOR.env.opera&&b.collapsed&&j.type==CKEDITOR.NODE_ELEMENT){d=j.getChild(b.startOffset-1);e=j.getChild(b.startOffset);if(!d&&!e&&j.is(CKEDITOR.dtd.$removeEmpty)||d&&d.type==CKEDITOR.NODE_ELEMENT||e&&e.type==CKEDITOR.NODE_ELEMENT){b.insertNode(this.document.createText(""));b.collapse(1)}}if(b.collapsed&&CKEDITOR.env.webkit&&c(b)){j= -this.root;h(j,false);d=j.getDocument().createText("​");j.setCustomData("cke-fillingChar",d);b.insertNode(d);if((j=d.getNext())&&!d.getPrevious()&&j.type==CKEDITOR.NODE_ELEMENT&&j.getName()=="br"){h(this.root);b.moveToPosition(j,CKEDITOR.POSITION_BEFORE_START)}else b.moveToPosition(d,CKEDITOR.POSITION_AFTER_END)}i.setStart(b.startContainer.$,b.startOffset);try{i.setEnd(b.endContainer.$,b.endOffset)}catch(s){if(s.toString().indexOf("NS_ERROR_ILLEGAL_VALUE")>=0){b.collapse(1);i.setEnd(b.endContainer.$, -b.endOffset)}else throw s;}p.addRange(i)}}this.reset();this.root.fire("selectionchange")}}},fake:function(a){var b=this.root.editor;this.reset();i(b);var c=this._.cache,d=new CKEDITOR.dom.range(this.root);d.setStartBefore(a);d.setEndAfter(a);c.ranges=new CKEDITOR.dom.rangeList(d);c.selectedElement=c.startElement=a;c.type=CKEDITOR.SELECTION_ELEMENT;c.selectedText=c.nativeSel=null;this.isFake=1;this.rev=p++;b._.fakeSelection=this;this.root.fire("selectionchange")},isHidden:function(){var a=this.getCommonAncestor(); -a&&a.type==CKEDITOR.NODE_TEXT&&(a=a.getParent());return!(!a||!a.data("cke-hidden-sel"))},createBookmarks:function(a){a=this.getRanges().createBookmarks(a);this.isFake&&(a.isFake=1);return a},createBookmarks2:function(a){a=this.getRanges().createBookmarks2(a);this.isFake&&(a.isFake=1);return a},selectBookmarks:function(a){for(var b=[],c=0;c<a.length;c++){var d=new CKEDITOR.dom.range(this.root);d.moveToBookmark(a[c]);b.push(d)}a.isFake?this.fake(b[0].getEnclosedNode()):this.selectRanges(b);return this}, -getCommonAncestor:function(){var a=this.getRanges();return!a.length?null:a[0].startContainer.getCommonAncestor(a[a.length-1].endContainer)},scrollIntoView:function(){this.type!=CKEDITOR.SELECTION_NONE&&this.getRanges()[0].scrollIntoView()},removeAllRanges:function(){var a=this.getNative();try{a&&a[f?"empty":"removeAllRanges"]()}catch(b){}this.reset()}}})();"use strict"; -CKEDITOR.editor.prototype.attachStyleStateChange=function(a,e){var b=this._.styleStateChangeCallbacks;if(!b){b=this._.styleStateChangeCallbacks=[];this.on("selectionChange",function(a){for(var d=0;d<b.length;d++){var e=b[d],g=e.style.checkActive(a.data.path)?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF;e.fn.call(this,g)}})}b.push({style:a,fn:e})};CKEDITOR.STYLE_BLOCK=1;CKEDITOR.STYLE_INLINE=2;CKEDITOR.STYLE_OBJECT=3; -(function(){function a(a,b){for(var c,d;a=a.getParent();){if(a.equals(b))break;if(a.getAttribute("data-nostyle"))c=a;else if(!d){var e=a.getAttribute("contentEditable");e=="false"?c=a:e=="true"&&(d=1)}}return c}function e(b){var d=b.document;if(b.collapsed){d=y(this,d);b.insertNode(d);b.moveToPosition(d,CKEDITOR.POSITION_BEFORE_END)}else{var f=this.element,g=this._.definition,h,j=g.ignoreReadonly,i=j||g.includeReadonly;i==void 0&&(i=b.root.getCustomData("cke_includeReadonly"));var k=CKEDITOR.dtd[f]; -if(!k){h=true;k=CKEDITOR.dtd.span}b.enlarge(CKEDITOR.ENLARGE_INLINE,1);b.trim();var l=b.createBookmark(),m=l.startNode,o=l.endNode,n=m,q;if(!j){var p=b.getCommonAncestor(),j=a(m,p),p=a(o,p);j&&(n=j.getNextSourceNode(true));p&&(o=p)}for(n.getPosition(o)==CKEDITOR.POSITION_FOLLOWING&&(n=0);n;){j=false;if(n.equals(o)){n=null;j=true}else{var s=n.type==CKEDITOR.NODE_ELEMENT?n.getName():null,p=s&&n.getAttribute("contentEditable")=="false",r=s&&n.getAttribute("data-nostyle");if(s&&n.data("cke-bookmark")){n= -n.getNextSourceNode(true);continue}if(p&&i&&CKEDITOR.dtd.$block[s])for(var t=n,x=c(t),z=void 0,A=x.length,I=0,t=A&&new CKEDITOR.dom.range(t.getDocument());I<A;++I){var z=x[I],L=CKEDITOR.filter.instances[z.data("cke-filter")];if(L?L.check(this):1){t.selectNodeContents(z);e.call(this,t)}}x=s?!k[s]||r?0:p&&!i?0:(n.getPosition(o)|M)==M&&(!g.childRule||g.childRule(n)):1;if(x)if((x=n.getParent())&&((x.getDtd()||CKEDITOR.dtd.span)[f]||h)&&(!g.parentRule||g.parentRule(x))){if(!q&&(!s||!CKEDITOR.dtd.$removeEmpty[s]|| -(n.getPosition(o)|M)==M)){q=b.clone();q.setStartBefore(n)}s=n.type;if(s==CKEDITOR.NODE_TEXT||p||s==CKEDITOR.NODE_ELEMENT&&!n.getChildCount()){for(var s=n,W;(j=!s.getNext(E))&&(W=s.getParent(),k[W.getName()])&&(W.getPosition(m)|Q)==Q&&(!g.childRule||g.childRule(W));)s=W;q.setEndAfter(s)}}else j=true;else j=true;n=n.getNextSourceNode(r||p)}if(j&&q&&!q.collapsed){for(var j=y(this,d),p=j.hasAttributes(),r=q.getCommonAncestor(),s={},x={},z={},A={},T,P,Z;j&&r;){if(r.getName()==f){for(T in g.attributes)if(!A[T]&& -(Z=r.getAttribute(P)))j.getAttribute(T)==Z?x[T]=1:A[T]=1;for(P in g.styles)if(!z[P]&&(Z=r.getStyle(P)))j.getStyle(P)==Z?s[P]=1:z[P]=1}r=r.getParent()}for(T in x)j.removeAttribute(T);for(P in s)j.removeStyle(P);p&&!j.hasAttributes()&&(j=null);if(j){q.extractContents().appendTo(j);q.insertNode(j);u.call(this,j);j.mergeSiblings();CKEDITOR.env.ie||j.$.normalize()}else{j=new CKEDITOR.dom.element("span");q.extractContents().appendTo(j);q.insertNode(j);u.call(this,j);j.remove(true)}q=null}}b.moveToBookmark(l); -b.shrink(CKEDITOR.SHRINK_TEXT);b.shrink(CKEDITOR.NODE_ELEMENT,true)}}function b(a){function b(){for(var a=new CKEDITOR.dom.elementPath(d.getParent()),c=new CKEDITOR.dom.elementPath(k.getParent()),e=null,f=null,g=0;g<a.elements.length;g++){var h=a.elements[g];if(h==a.block||h==a.blockLimit)break;m.checkElementRemovable(h)&&(e=h)}for(g=0;g<c.elements.length;g++){h=c.elements[g];if(h==c.block||h==c.blockLimit)break;m.checkElementRemovable(h)&&(f=h)}f&&k.breakParent(f);e&&d.breakParent(e)}a.enlarge(CKEDITOR.ENLARGE_INLINE, -1);var c=a.createBookmark(),d=c.startNode;if(a.collapsed){for(var e=new CKEDITOR.dom.elementPath(d.getParent(),a.root),g,j=0,h;j<e.elements.length&&(h=e.elements[j]);j++){if(h==e.block||h==e.blockLimit)break;if(this.checkElementRemovable(h)){var i;if(a.collapsed&&(a.checkBoundaryOfElement(h,CKEDITOR.END)||(i=a.checkBoundaryOfElement(h,CKEDITOR.START)))){g=h;g.match=i?"start":"end"}else{h.mergeSiblings();h.is(this.element)?s.call(this,h):f(h,l(this)[h.getName()])}}}if(g){h=d;for(j=0;;j++){i=e.elements[j]; -if(i.equals(g))break;else if(i.match)continue;else i=i.clone();i.append(h);h=i}h[g.match=="start"?"insertBefore":"insertAfter"](g)}}else{var k=c.endNode,m=this;b();for(e=d;!e.equals(k);){g=e.getNextSourceNode();if(e.type==CKEDITOR.NODE_ELEMENT&&this.checkElementRemovable(e)){e.getName()==this.element?s.call(this,e):f(e,l(this)[e.getName()]);if(g.type==CKEDITOR.NODE_ELEMENT&&g.contains(d)){b();g=d.getNext()}}e=g}}a.moveToBookmark(c);a.shrink(CKEDITOR.NODE_ELEMENT,true)}function c(a){var b=[];a.forEach(function(a){if(a.getAttribute("contenteditable")== -"true"){b.push(a);return false}},CKEDITOR.NODE_ELEMENT,true);return b}function d(a){var b=a.getEnclosedNode()||a.getCommonAncestor(false,true);(a=(new CKEDITOR.dom.elementPath(b,a.root)).contains(this.element,1))&&!a.isReadOnly()&&m(a,this)}function h(a){var b=a.getCommonAncestor(true,true);if(a=(new CKEDITOR.dom.elementPath(b,a.root)).contains(this.element,1)){var b=this._.definition,c=b.attributes;if(c)for(var d in c)a.removeAttribute(d,c[d]);if(b.styles)for(var e in b.styles)b.styles.hasOwnProperty(e)&& -a.removeStyle(e)}}function g(a){var b=a.createBookmark(true),c=a.createIterator();c.enforceRealBlocks=true;if(this._.enterMode)c.enlargeBr=this._.enterMode!=CKEDITOR.ENTER_BR;for(var d,e=a.document,f;d=c.getNextParagraph();)if(!d.isReadOnly()&&(c.activeFilter?c.activeFilter.check(this):1)){f=y(this,e,d);i(d,f)}a.moveToBookmark(b)}function n(a){var b=a.createBookmark(1),c=a.createIterator();c.enforceRealBlocks=true;c.enlargeBr=this._.enterMode!=CKEDITOR.ENTER_BR;for(var d,e;d=c.getNextParagraph();)if(this.checkElementRemovable(d))if(d.is("pre")){(e= -this._.enterMode==CKEDITOR.ENTER_BR?null:a.document.createElement(this._.enterMode==CKEDITOR.ENTER_P?"p":"div"))&&d.copyAttributes(e);i(d,e)}else s.call(this,d);a.moveToBookmark(b)}function i(a,b){var c=!b;if(c){b=a.getDocument().createElement("div");a.copyAttributes(b)}var d=b&&b.is("pre"),e=a.is("pre"),f=!d&&e;if(d&&!e){e=b;(f=a.getBogus())&&f.remove();f=a.getHtml();f=o(f,/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g,"");f=f.replace(/[ \t\r\n]*(<br[^>]*>)[ \t\r\n]*/gi,"$1");f=f.replace(/([ \t\n\r]+|&nbsp;)/g, -" ");f=f.replace(/<br\b[^>]*>/gi,"\n");if(CKEDITOR.env.ie){var g=a.getDocument().createElement("div");g.append(e);e.$.outerHTML="<pre>"+f+"</pre>";e.copyAttributes(g.getFirst());e=g.getFirst().remove()}else e.setHtml(f);b=e}else f?b=q(c?[a.getHtml()]:j(a),b):a.moveChildren(b);b.replace(a);if(d){var c=b,h;if((h=c.getPrevious(z))&&h.type==CKEDITOR.NODE_ELEMENT&&h.is("pre")){d=o(h.getHtml(),/\n$/,"")+"\n\n"+o(c.getHtml(),/^\n/,"");CKEDITOR.env.ie?c.$.outerHTML="<pre>"+d+"</pre>":c.setHtml(d);h.remove()}}else c&& -p(b)}function j(a){a.getName();var b=[];o(a.getOuterHtml(),/(\S\s*)\n(?:\s|(<span[^>]+data-cke-bookmark.*?\/span>))*\n(?!$)/gi,function(a,b,c){return b+"</pre>"+c+"<pre>"}).replace(/<pre\b.*?>([\s\S]*?)<\/pre>/gi,function(a,c){b.push(c)});return b}function o(a,b,c){var d="",e="",a=a.replace(/(^<span[^>]+data-cke-bookmark.*?\/span>)|(<span[^>]+data-cke-bookmark.*?\/span>$)/gi,function(a,b,c){b&&(d=b);c&&(e=c);return""});return d+a.replace(b,c)+e}function q(a,b){var c;a.length>1&&(c=new CKEDITOR.dom.documentFragment(b.getDocument())); -for(var d=0;d<a.length;d++){var e=a[d],e=e.replace(/(\r\n|\r)/g,"\n"),e=o(e,/^[ \t]*\n/,""),e=o(e,/\n$/,""),e=o(e,/^[ \t]+|[ \t]+$/g,function(a,b){return a.length==1?"&nbsp;":b?" "+CKEDITOR.tools.repeat("&nbsp;",a.length-1):CKEDITOR.tools.repeat("&nbsp;",a.length-1)+" "}),e=e.replace(/\n/g,"<br>"),e=e.replace(/[ \t]{2,}/g,function(a){return CKEDITOR.tools.repeat("&nbsp;",a.length-1)+" "});if(c){var f=b.clone();f.setHtml(e);c.append(f)}else b.setHtml(e)}return c||b}function s(a,b){var c=this._.definition, -d=c.attributes,c=c.styles,e=l(this)[a.getName()],g=CKEDITOR.tools.isEmpty(d)&&CKEDITOR.tools.isEmpty(c),h;for(h in d)if(!((h=="class"||this._.definition.fullMatch)&&a.getAttribute(h)!=t(h,d[h]))&&!(b&&h.slice(0,5)=="data-")){g=a.hasAttribute(h);a.removeAttribute(h)}for(var j in c)if(!(this._.definition.fullMatch&&a.getStyle(j)!=t(j,c[j],true))){g=g||!!a.getStyle(j);a.removeStyle(j)}f(a,e,r[a.getName()]);g&&(this._.definition.alwaysRemoveElement?p(a,1):!CKEDITOR.dtd.$block[a.getName()]||this._.enterMode== -CKEDITOR.ENTER_BR&&!a.hasAttributes()?p(a):a.renameNode(this._.enterMode==CKEDITOR.ENTER_P?"p":"div"))}function u(a){for(var b=l(this),c=a.getElementsByTag(this.element),d,e=c.count();--e>=0;){d=c.getItem(e);d.isReadOnly()||s.call(this,d,true)}for(var g in b)if(g!=this.element){c=a.getElementsByTag(g);for(e=c.count()-1;e>=0;e--){d=c.getItem(e);d.isReadOnly()||f(d,b[g])}}}function f(a,b,c){if(b=b&&b.attributes)for(var d=0;d<b.length;d++){var e=b[d][0],f;if(f=a.getAttribute(e)){var g=b[d][1];(g===null|| -g.test&&g.test(f)||typeof g=="string"&&f==g)&&a.removeAttribute(e)}}c||p(a)}function p(a,b){if(!a.hasAttributes()||b)if(CKEDITOR.dtd.$block[a.getName()]){var c=a.getPrevious(z),d=a.getNext(z);c&&(c.type==CKEDITOR.NODE_TEXT||!c.isBlockBoundary({br:1}))&&a.append("br",1);d&&(d.type==CKEDITOR.NODE_TEXT||!d.isBlockBoundary({br:1}))&&a.append("br");a.remove(true)}else{c=a.getFirst();d=a.getLast();a.remove(true);if(c){c.type==CKEDITOR.NODE_ELEMENT&&c.mergeSiblings();d&&(!c.equals(d)&&d.type==CKEDITOR.NODE_ELEMENT)&& -d.mergeSiblings()}}}function y(a,b,c){var d;d=a.element;d=="*"&&(d="span");d=new CKEDITOR.dom.element(d,b);c&&c.copyAttributes(d);d=m(d,a);b.getCustomData("doc_processing_style")&&d.hasAttribute("id")?d.removeAttribute("id"):b.setCustomData("doc_processing_style",1);return d}function m(a,b){var c=b._.definition,d=c.attributes,c=CKEDITOR.style.getStyleText(c);if(d)for(var e in d)a.setAttribute(e,d[e]);c&&a.setAttribute("style",c);return a}function k(a,b){for(var c in a)a[c]=a[c].replace(I,function(a, -c){return b[c]})}function l(a){if(a._.overrides)return a._.overrides;var b=a._.overrides={},c=a._.definition.overrides;if(c){CKEDITOR.tools.isArray(c)||(c=[c]);for(var d=0;d<c.length;d++){var e=c[d],f,g;if(typeof e=="string")f=e.toLowerCase();else{f=e.element?e.element.toLowerCase():a.element;g=e.attributes}e=b[f]||(b[f]={});if(g){var e=e.attributes=e.attributes||[],h;for(h in g)e.push([h.toLowerCase(),g[h]])}}}return b}function t(a,b,c){var d=new CKEDITOR.dom.element("span");d[c?"setStyle":"setAttribute"](a, -b);return d[c?"getStyle":"getAttribute"](a)}function x(a,b){for(var c=a.document,d=a.getRanges(),e=b?this.removeFromRange:this.applyToRange,f,g=d.createIterator();f=g.getNextRange();)e.call(this,f);a.selectRanges(d);c.removeCustomData("doc_processing_style")}var r={address:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,section:1,header:1,footer:1,nav:1,article:1,aside:1,figure:1,dialog:1,hgroup:1,time:1,meter:1,menu:1,command:1,keygen:1,output:1,progress:1,details:1,datagrid:1,datalist:1},L={a:1, -embed:1,hr:1,img:1,li:1,object:1,ol:1,table:1,td:1,tr:1,th:1,ul:1,dl:1,dt:1,dd:1,form:1,audio:1,video:1},A=/\s*(?:;\s*|$)/,I=/#\((.+?)\)/g,E=CKEDITOR.dom.walker.bookmark(0,1),z=CKEDITOR.dom.walker.whitespaces(1);CKEDITOR.style=function(a,b){var c=a.attributes;if(c&&c.style){a.styles=CKEDITOR.tools.extend({},a.styles,CKEDITOR.tools.parseCssText(c.style));delete c.style}if(b){a=CKEDITOR.tools.clone(a);k(a.attributes,b);k(a.styles,b)}c=this.element=a.element?typeof a.element=="string"?a.element.toLowerCase(): -a.element:"*";this.type=a.type||(r[c]?CKEDITOR.STYLE_BLOCK:L[c]?CKEDITOR.STYLE_OBJECT:CKEDITOR.STYLE_INLINE);if(typeof this.element=="object")this.type=CKEDITOR.STYLE_OBJECT;this._={definition:a}};CKEDITOR.editor.prototype.applyStyle=function(a){a.checkApplicable(this.elementPath())&&x.call(a,this.getSelection())};CKEDITOR.editor.prototype.removeStyle=function(a){a.checkApplicable(this.elementPath())&&x.call(a,this.getSelection(),1)};CKEDITOR.style.prototype={apply:function(a){x.call(this,a.getSelection())}, -remove:function(a){x.call(this,a.getSelection(),1)},applyToRange:function(a){return(this.applyToRange=this.type==CKEDITOR.STYLE_INLINE?e:this.type==CKEDITOR.STYLE_BLOCK?g:this.type==CKEDITOR.STYLE_OBJECT?d:null).call(this,a)},removeFromRange:function(a){return(this.removeFromRange=this.type==CKEDITOR.STYLE_INLINE?b:this.type==CKEDITOR.STYLE_BLOCK?n:this.type==CKEDITOR.STYLE_OBJECT?h:null).call(this,a)},applyToObject:function(a){m(a,this)},checkActive:function(a){switch(this.type){case CKEDITOR.STYLE_BLOCK:return this.checkElementRemovable(a.block|| -a.blockLimit,true);case CKEDITOR.STYLE_OBJECT:case CKEDITOR.STYLE_INLINE:for(var b=a.elements,c=0,d;c<b.length;c++){d=b[c];if(!(this.type==CKEDITOR.STYLE_INLINE&&(d==a.block||d==a.blockLimit))){if(this.type==CKEDITOR.STYLE_OBJECT){var e=d.getName();if(!(typeof this.element=="string"?e==this.element:e in this.element))continue}if(this.checkElementRemovable(d,true))return true}}}return false},checkApplicable:function(a,b){if(b&&!b.check(this))return false;switch(this.type){case CKEDITOR.STYLE_OBJECT:return!!a.contains(this.element); -case CKEDITOR.STYLE_BLOCK:return!!a.blockLimit.getDtd()[this.element]}return true},checkElementMatch:function(a,b){var c=this._.definition;if(!a||!c.ignoreReadonly&&a.isReadOnly())return false;var d=a.getName();if(typeof this.element=="string"?d==this.element:d in this.element){if(!b&&!a.hasAttributes())return true;if(d=c._AC)c=d;else{var d={},e=0,f=c.attributes;if(f)for(var g in f){e++;d[g]=f[g]}if(g=CKEDITOR.style.getStyleText(c)){d.style||e++;d.style=g}d._length=e;c=c._AC=d}if(c._length){for(var h in c)if(h!= -"_length"){e=a.getAttribute(h)||"";if(h=="style")a:{d=c[h];typeof d=="string"&&(d=CKEDITOR.tools.parseCssText(d));typeof e=="string"&&(e=CKEDITOR.tools.parseCssText(e,true));g=void 0;for(g in d)if(!(g in e&&(e[g]==d[g]||d[g]=="inherit"||e[g]=="inherit"))){d=false;break a}d=true}else d=c[h]==e;if(d){if(!b)return true}else if(b)return false}if(b)return true}else return true}return false},checkElementRemovable:function(a,b){if(this.checkElementMatch(a,b))return true;var c=l(this)[a.getName()];if(c){var d; -if(!(c=c.attributes))return true;for(var e=0;e<c.length;e++){d=c[e][0];if(d=a.getAttribute(d)){var f=c[e][1];if(f===null||typeof f=="string"&&d==f||f.test(d))return true}}}return false},buildPreview:function(a){var b=this._.definition,c=[],d=b.element;d=="bdo"&&(d="span");var c=["<",d],e=b.attributes;if(e)for(var f in e)c.push(" ",f,'="',e[f],'"');(e=CKEDITOR.style.getStyleText(b))&&c.push(' style="',e,'"');c.push(">",a||b.name,"</",d,">");return c.join("")},getDefinition:function(){return this._.definition}}; -CKEDITOR.style.getStyleText=function(a){var b=a._ST;if(b)return b;var b=a.styles,c=a.attributes&&a.attributes.style||"",d="";c.length&&(c=c.replace(A,";"));for(var e in b){var f=b[e],g=(e+":"+f).replace(A,";");f=="inherit"?d=d+g:c=c+g}c.length&&(c=CKEDITOR.tools.normalizeCssText(c,true));return a._ST=c+d};var M=CKEDITOR.POSITION_PRECEDING|CKEDITOR.POSITION_IDENTICAL|CKEDITOR.POSITION_IS_CONTAINED,Q=CKEDITOR.POSITION_FOLLOWING|CKEDITOR.POSITION_IDENTICAL|CKEDITOR.POSITION_IS_CONTAINED})(); -CKEDITOR.styleCommand=function(a,e){this.requiredContent=this.allowedContent=this.style=a;CKEDITOR.tools.extend(this,e,true)};CKEDITOR.styleCommand.prototype.exec=function(a){a.focus();this.state==CKEDITOR.TRISTATE_OFF?a.applyStyle(this.style):this.state==CKEDITOR.TRISTATE_ON&&a.removeStyle(this.style)};CKEDITOR.stylesSet=new CKEDITOR.resourceManager("","stylesSet");CKEDITOR.addStylesSet=CKEDITOR.tools.bind(CKEDITOR.stylesSet.add,CKEDITOR.stylesSet); -CKEDITOR.loadStylesSet=function(a,e,b){CKEDITOR.stylesSet.addExternal(a,e,"");CKEDITOR.stylesSet.load(a,b)}; -CKEDITOR.editor.prototype.getStylesSet=function(a){if(this._.stylesDefinitions)a(this._.stylesDefinitions);else{var e=this,b=e.config.stylesCombo_stylesSet||e.config.stylesSet;if(b===false)a(null);else if(b instanceof Array){e._.stylesDefinitions=b;a(b)}else{b||(b="default");var b=b.split(":"),c=b[0];CKEDITOR.stylesSet.addExternal(c,b[1]?b.slice(1).join(":"):CKEDITOR.getUrl("styles.js"),"");CKEDITOR.stylesSet.load(c,function(b){e._.stylesDefinitions=b[c];a(e._.stylesDefinitions)})}}}; -CKEDITOR.dom.comment=function(a,e){typeof a=="string"&&(a=(e?e.$:document).createComment(a));CKEDITOR.dom.domObject.call(this,a)};CKEDITOR.dom.comment.prototype=new CKEDITOR.dom.node;CKEDITOR.tools.extend(CKEDITOR.dom.comment.prototype,{type:CKEDITOR.NODE_COMMENT,getOuterHtml:function(){return"<\!--"+this.$.nodeValue+"--\>"}});"use strict"; -(function(){var a={},e={},b;for(b in CKEDITOR.dtd.$blockLimit)b in CKEDITOR.dtd.$list||(a[b]=1);for(b in CKEDITOR.dtd.$block)b in CKEDITOR.dtd.$blockLimit||b in CKEDITOR.dtd.$empty||(e[b]=1);CKEDITOR.dom.elementPath=function(b,d){var h=null,g=null,n=[],i=b,j,d=d||b.getDocument().getBody();do if(i.type==CKEDITOR.NODE_ELEMENT){n.push(i);if(!this.lastElement){this.lastElement=i;if(i.is(CKEDITOR.dtd.$object)||i.getAttribute("contenteditable")=="false")continue}if(i.equals(d))break;if(!g){j=i.getName(); -i.getAttribute("contenteditable")=="true"?g=i:!h&&e[j]&&(h=i);if(a[j]){var o;if(o=!h){if(j=j=="div"){a:{j=i.getChildren();o=0;for(var q=j.count();o<q;o++){var s=j.getItem(o);if(s.type==CKEDITOR.NODE_ELEMENT&&CKEDITOR.dtd.$block[s.getName()]){j=true;break a}}j=false}j=!j}o=j}o?h=i:g=i}}}while(i=i.getParent());g||(g=d);this.block=h;this.blockLimit=g;this.root=d;this.elements=n}})(); -CKEDITOR.dom.elementPath.prototype={compare:function(a){var e=this.elements,a=a&&a.elements;if(!a||e.length!=a.length)return false;for(var b=0;b<e.length;b++)if(!e[b].equals(a[b]))return false;return true},contains:function(a,e,b){var c;typeof a=="string"&&(c=function(b){return b.getName()==a});a instanceof CKEDITOR.dom.element?c=function(b){return b.equals(a)}:CKEDITOR.tools.isArray(a)?c=function(b){return CKEDITOR.tools.indexOf(a,b.getName())>-1}:typeof a=="function"?c=a:typeof a=="object"&&(c= -function(b){return b.getName()in a});var d=this.elements,h=d.length;e&&h--;if(b){d=Array.prototype.slice.call(d,0);d.reverse()}for(e=0;e<h;e++)if(c(d[e]))return d[e];return null},isContextFor:function(a){var e;if(a in CKEDITOR.dtd.$block){e=this.contains(CKEDITOR.dtd.$intermediate)||this.root.equals(this.block)&&this.block||this.blockLimit;return!!e.getDtd()[a]}return true},direction:function(){return(this.block||this.blockLimit||this.root).getDirection(1)}}; -CKEDITOR.dom.text=function(a,e){typeof a=="string"&&(a=(e?e.$:document).createTextNode(a));this.$=a};CKEDITOR.dom.text.prototype=new CKEDITOR.dom.node; -CKEDITOR.tools.extend(CKEDITOR.dom.text.prototype,{type:CKEDITOR.NODE_TEXT,getLength:function(){return this.$.nodeValue.length},getText:function(){return this.$.nodeValue},setText:function(a){this.$.nodeValue=a},split:function(a){var e=this.$.parentNode,b=e.childNodes.length,c=this.getLength(),d=this.getDocument(),h=new CKEDITOR.dom.text(this.$.splitText(a),d);if(e.childNodes.length==b)if(a>=c){h=d.createText("");h.insertAfter(this)}else{a=d.createText("");a.insertAfter(h);a.remove()}return h},substring:function(a, -e){return typeof e!="number"?this.$.nodeValue.substr(a):this.$.nodeValue.substring(a,e)}}); -(function(){function a(a,c,d){var e=a.serializable,g=c[d?"endContainer":"startContainer"],n=d?"endOffset":"startOffset",i=e?c.document.getById(a.startNode):a.startNode,a=e?c.document.getById(a.endNode):a.endNode;if(g.equals(i.getPrevious())){c.startOffset=c.startOffset-g.getLength()-a.getPrevious().getLength();g=a.getNext()}else if(g.equals(a.getPrevious())){c.startOffset=c.startOffset-g.getLength();g=a.getNext()}g.equals(i.getParent())&&c[n]++;g.equals(a.getParent())&&c[n]++;c[d?"endContainer":"startContainer"]= -g;return c}CKEDITOR.dom.rangeList=function(a){if(a instanceof CKEDITOR.dom.rangeList)return a;a?a instanceof CKEDITOR.dom.range&&(a=[a]):a=[];return CKEDITOR.tools.extend(a,e)};var e={createIterator:function(){var a=this,c=CKEDITOR.dom.walker.bookmark(),d=[],e;return{getNextRange:function(g){e=e==void 0?0:e+1;var n=a[e];if(n&&a.length>1){if(!e)for(var i=a.length-1;i>=0;i--)d.unshift(a[i].createBookmark(true));if(g)for(var j=0;a[e+j+1];){for(var o=n.document,g=0,i=o.getById(d[j].endNode),o=o.getById(d[j+ -1].startNode);;){i=i.getNextSourceNode(false);if(o.equals(i))g=1;else if(c(i)||i.type==CKEDITOR.NODE_ELEMENT&&i.isBlockBoundary())continue;break}if(!g)break;j++}for(n.moveToBookmark(d.shift());j--;){i=a[++e];i.moveToBookmark(d.shift());n.setEnd(i.endContainer,i.endOffset)}}return n}}},createBookmarks:function(b){for(var c=[],d,e=0;e<this.length;e++){c.push(d=this[e].createBookmark(b,true));for(var g=e+1;g<this.length;g++){this[g]=a(d,this[g]);this[g]=a(d,this[g],true)}}return c},createBookmarks2:function(a){for(var c= -[],d=0;d<this.length;d++)c.push(this[d].createBookmark2(a));return c},moveToBookmarks:function(a){for(var c=0;c<this.length;c++)this[c].moveToBookmark(a[c])}}})(); -(function(){function a(){return CKEDITOR.getUrl(CKEDITOR.skinName.split(",")[1]||"skins/"+CKEDITOR.skinName.split(",")[0]+"/")}function e(b){var c=CKEDITOR.skin["ua_"+b],d=CKEDITOR.env;if(c)for(var c=c.split(",").sort(function(a,b){return a>b?-1:1}),e=0,g;e<c.length;e++){g=c[e];if(d.ie&&(g.replace(/^ie/,"")==d.version||d.quirks&&g=="iequirks"))g="ie";if(d[g]){b=b+("_"+c[e]);break}}return CKEDITOR.getUrl(a()+b+".css")}function b(a,b){if(!h[a]){CKEDITOR.document.appendStyleSheet(e(a));h[a]=1}b&&b()} -function c(a){var b=a.getById(g);if(!b){b=a.getHead().append("style");b.setAttribute("id",g);b.setAttribute("type","text/css")}return b}function d(a,b,c){var d,e,f;if(CKEDITOR.env.webkit){b=b.split("}").slice(0,-1);for(e=0;e<b.length;e++)b[e]=b[e].split("{")}for(var g=0;g<a.length;g++)if(CKEDITOR.env.webkit)for(e=0;e<b.length;e++){f=b[e][1];for(d=0;d<c.length;d++)f=f.replace(c[d][0],c[d][1]);a[g].$.sheet.addRule(b[e][0],f)}else{f=b;for(d=0;d<c.length;d++)f=f.replace(c[d][0],c[d][1]);CKEDITOR.env.ie&& -CKEDITOR.env.version<11?a[g].$.styleSheet.cssText=a[g].$.styleSheet.cssText+f:a[g].$.innerHTML=a[g].$.innerHTML+f}}var h={};CKEDITOR.skin={path:a,loadPart:function(c,d){CKEDITOR.skin.name!=CKEDITOR.skinName.split(",")[0]?CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(a()+"skin.js"),function(){b(c,d)}):b(c,d)},getPath:function(a){return CKEDITOR.getUrl(e(a))},icons:{},addIcon:function(a,b,c,d){a=a.toLowerCase();this.icons[a]||(this.icons[a]={path:b,offset:c||0,bgsize:d||"16px"})},getIconStyle:function(a, -b,c,d,e){var f;if(a){a=a.toLowerCase();b&&(f=this.icons[a+"-rtl"]);f||(f=this.icons[a])}a=c||f&&f.path||"";d=d||f&&f.offset;e=e||f&&f.bgsize||"16px";return a&&"background-image:url("+CKEDITOR.getUrl(a)+");background-position:0 "+d+"px;background-size:"+e+";"}};CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{getUiColor:function(){return this.uiColor},setUiColor:function(a){var b=c(CKEDITOR.document);return(this.setUiColor=function(a){var c=CKEDITOR.skin.chameleon,e=[[i,a]];this.uiColor=a;d([b],c(this, -"editor"),e);d(n,c(this,"panel"),e)}).call(this,a)}});var g="cke_ui_color",n=[],i=/\$color/g;CKEDITOR.on("instanceLoaded",function(a){if(!CKEDITOR.env.ie||!CKEDITOR.env.quirks){var b=a.editor,a=function(a){a=(a.data[0]||a.data).element.getElementsByTag("iframe").getItem(0).getFrameDocument();if(!a.getById("cke_ui_color")){a=c(a);n.push(a);var e=b.getUiColor();e&&d([a],CKEDITOR.skin.chameleon(b,"panel"),[[i,e]])}};b.on("panelShow",a);b.on("menuShow",a);b.config.uiColor&&b.setUiColor(b.config.uiColor)}})})(); -(function(){if(CKEDITOR.env.webkit)CKEDITOR.env.hc=false;else{var a=CKEDITOR.dom.element.createFromHtml('<div style="width:0px;height:0px;position:absolute;left:-10000px;border: 1px solid;border-color: red blue;"></div>',CKEDITOR.document);a.appendTo(CKEDITOR.document.getHead());try{CKEDITOR.env.hc=a.getComputedStyle("border-top-color")==a.getComputedStyle("border-right-color")}catch(e){CKEDITOR.env.hc=false}a.remove()}if(CKEDITOR.env.hc)CKEDITOR.env.cssClass=CKEDITOR.env.cssClass+" cke_hc";CKEDITOR.document.appendStyleText(".cke{visibility:hidden;}"); -CKEDITOR.status="loaded";CKEDITOR.fireOnce("loaded");if(a=CKEDITOR._.pending){delete CKEDITOR._.pending;for(var b=0;b<a.length;b++){CKEDITOR.editor.prototype.constructor.apply(a[b][0],a[b][1]);CKEDITOR.add(a[b][0])}}})();/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.skin.name="moono";CKEDITOR.skin.ua_editor="ie,iequirks,ie7,ie8,gecko";CKEDITOR.skin.ua_dialog="ie,iequirks,ie7,ie8,opera"; -CKEDITOR.skin.chameleon=function(){var b=function(){return function(b,e){for(var a=b.match(/[^#]./g),c=0;3>c;c++){var f=a,h=c,d;d=parseInt(a[c],16);d=("0"+(0>e?0|d*(1+e):0|d+(255-d)*e).toString(16)).slice(-2);f[h]=d}return"#"+a.join("")}}(),c=function(){var b=new CKEDITOR.template("background:#{to};background-image:-webkit-gradient(linear,lefttop,leftbottom,from({from}),to({to}));background-image:-moz-linear-gradient(top,{from},{to});background-image:-webkit-linear-gradient(top,{from},{to});background-image:-o-linear-gradient(top,{from},{to});background-image:-ms-linear-gradient(top,{from},{to});background-image:linear-gradient(top,{from},{to});filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='{from}',endColorstr='{to}');");return function(c, -a){return b.output({from:c,to:a})}}(),f={editor:new CKEDITOR.template("{id}.cke_chrome [border-color:{defaultBorder};] {id} .cke_top [ {defaultGradient}border-bottom-color:{defaultBorder};] {id} .cke_bottom [{defaultGradient}border-top-color:{defaultBorder};] {id} .cke_resizer [border-right-color:{ckeResizer}] {id} .cke_dialog_title [{defaultGradient}border-bottom-color:{defaultBorder};] {id} .cke_dialog_footer [{defaultGradient}outline-color:{defaultBorder};border-top-color:{defaultBorder};] {id} .cke_dialog_tab [{lightGradient}border-color:{defaultBorder};] {id} .cke_dialog_tab:hover [{mediumGradient}] {id} .cke_dialog_contents [border-top-color:{defaultBorder};] {id} .cke_dialog_tab_selected, {id} .cke_dialog_tab_selected:hover [background:{dialogTabSelected};border-bottom-color:{dialogTabSelectedBorder};] {id} .cke_dialog_body [background:{dialogBody};border-color:{defaultBorder};] {id} .cke_toolgroup [{lightGradient}border-color:{defaultBorder};] {id} a.cke_button_off:hover, {id} a.cke_button_off:focus, {id} a.cke_button_off:active [{mediumGradient}] {id} .cke_button_on [{ckeButtonOn}] {id} .cke_toolbar_separator [background-color: {ckeToolbarSeparator};] {id} .cke_combo_button [border-color:{defaultBorder};{lightGradient}] {id} a.cke_combo_button:hover, {id} a.cke_combo_button:focus, {id} .cke_combo_on a.cke_combo_button [border-color:{defaultBorder};{mediumGradient}] {id} .cke_path_item [color:{elementsPathColor};] {id} a.cke_path_item:hover, {id} a.cke_path_item:focus, {id} a.cke_path_item:active [background-color:{elementsPathBg};] {id}.cke_panel [border-color:{defaultBorder};] "), -panel:new CKEDITOR.template(".cke_panel_grouptitle [{lightGradient}border-color:{defaultBorder};] .cke_menubutton_icon [background-color:{menubuttonIcon};] .cke_menubutton:hover .cke_menubutton_icon, .cke_menubutton:focus .cke_menubutton_icon, .cke_menubutton:active .cke_menubutton_icon [background-color:{menubuttonIconHover};] .cke_menuseparator [background-color:{menubuttonIcon};] a:hover.cke_colorbox, a:focus.cke_colorbox, a:active.cke_colorbox [border-color:{defaultBorder};] a:hover.cke_colorauto, a:hover.cke_colormore, a:focus.cke_colorauto, a:focus.cke_colormore, a:active.cke_colorauto, a:active.cke_colormore [background-color:{ckeColorauto};border-color:{defaultBorder};] ")}; -return function(g,e){var a=g.uiColor,a={id:"."+g.id,defaultBorder:b(a,-0.1),defaultGradient:c(b(a,0.9),a),lightGradient:c(b(a,1),b(a,0.7)),mediumGradient:c(b(a,0.8),b(a,0.5)),ckeButtonOn:c(b(a,0.6),b(a,0.7)),ckeResizer:b(a,-0.4),ckeToolbarSeparator:b(a,0.5),ckeColorauto:b(a,0.8),dialogBody:b(a,0.7),dialogTabSelected:c("#FFFFFF","#FFFFFF"),dialogTabSelectedBorder:"#FFF",elementsPathColor:b(a,-0.6),elementsPathBg:a,menubuttonIcon:b(a,0.5),menubuttonIconHover:b(a,0.3)};return f[e].output(a).replace(/\[/g, -"{").replace(/\]/g,"}")}}();CKEDITOR.plugins.add("dialogui",{onLoad:function(){var i=function(b){this._||(this._={});this._["default"]=this._.initValue=b["default"]||"";this._.required=b.required||!1;for(var a=[this._],d=1;d<arguments.length;d++)a.push(arguments[d]);a.push(!0);CKEDITOR.tools.extend.apply(CKEDITOR.tools,a);return this._},r={build:function(b,a,d){return new CKEDITOR.ui.dialog.textInput(b,a,d)}},l={build:function(b,a,d){return new CKEDITOR.ui.dialog[a.type](b,a,d)}},n={isChanged:function(){return this.getValue()!= -this.getInitValue()},reset:function(b){this.setValue(this.getInitValue(),b)},setInitValue:function(){this._.initValue=this.getValue()},resetInitValue:function(){this._.initValue=this._["default"]},getInitValue:function(){return this._.initValue}},o=CKEDITOR.tools.extend({},CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors,{onChange:function(b,a){this._.domOnChangeRegistered||(b.on("load",function(){this.getInputElement().on("change",function(){b.parts.dialog.isVisible()&&this.fire("change",{value:this.getValue()})}, -this)},this),this._.domOnChangeRegistered=!0);this.on("change",a)}},!0),s=/^on([A-Z]\w+)/,p=function(b){for(var a in b)(s.test(a)||"title"==a||"type"==a)&&delete b[a];return b};CKEDITOR.tools.extend(CKEDITOR.ui.dialog,{labeledElement:function(b,a,d,e){if(!(4>arguments.length)){var c=i.call(this,a);c.labelId=CKEDITOR.tools.getNextId()+"_label";this._.children=[];CKEDITOR.ui.dialog.uiElement.call(this,b,a,d,"div",null,{role:"presentation"},function(){var f=[],d=a.required?" cke_required":"";"horizontal"!= -a.labelLayout?f.push('<label class="cke_dialog_ui_labeled_label'+d+'" ',' id="'+c.labelId+'"',c.inputId?' for="'+c.inputId+'"':"",(a.labelStyle?' style="'+a.labelStyle+'"':"")+">",a.label,"</label>",'<div class="cke_dialog_ui_labeled_content"',a.controlStyle?' style="'+a.controlStyle+'"':"",' role="radiogroup" aria-labelledby="'+c.labelId+'">',e.call(this,b,a),"</div>"):(d={type:"hbox",widths:a.widths,padding:0,children:[{type:"html",html:'<label class="cke_dialog_ui_labeled_label'+d+'" id="'+c.labelId+ -'" for="'+c.inputId+'"'+(a.labelStyle?' style="'+a.labelStyle+'"':"")+">"+CKEDITOR.tools.htmlEncode(a.label)+"</span>"},{type:"html",html:'<span class="cke_dialog_ui_labeled_content"'+(a.controlStyle?' style="'+a.controlStyle+'"':"")+">"+e.call(this,b,a)+"</span>"}]},CKEDITOR.dialog._.uiElementBuilders.hbox.build(b,d,f));return f.join("")})}},textInput:function(b,a,d){if(!(3>arguments.length)){i.call(this,a);var e=this._.inputId=CKEDITOR.tools.getNextId()+"_textInput",c={"class":"cke_dialog_ui_input_"+ -a.type,id:e,type:a.type};a.validate&&(this.validate=a.validate);a.maxLength&&(c.maxlength=a.maxLength);a.size&&(c.size=a.size);a.inputStyle&&(c.style=a.inputStyle);var f=this,h=!1;b.on("load",function(){f.getInputElement().on("keydown",function(a){a.data.getKeystroke()==13&&(h=true)});f.getInputElement().on("keyup",function(a){if(a.data.getKeystroke()==13&&h){b.getButton("ok")&&setTimeout(function(){b.getButton("ok").click()},0);h=false}},null,null,1E3)});CKEDITOR.ui.dialog.labeledElement.call(this, -b,a,d,function(){var b=['<div class="cke_dialog_ui_input_',a.type,'" role="presentation"'];a.width&&b.push('style="width:'+a.width+'" ');b.push("><input ");c["aria-labelledby"]=this._.labelId;this._.required&&(c["aria-required"]=this._.required);for(var d in c)b.push(d+'="'+c[d]+'" ');b.push(" /></div>");return b.join("")})}},textarea:function(b,a,d){if(!(3>arguments.length)){i.call(this,a);var e=this,c=this._.inputId=CKEDITOR.tools.getNextId()+"_textarea",f={};a.validate&&(this.validate=a.validate); -f.rows=a.rows||5;f.cols=a.cols||20;f["class"]="cke_dialog_ui_input_textarea "+(a["class"]||"");"undefined"!=typeof a.inputStyle&&(f.style=a.inputStyle);a.dir&&(f.dir=a.dir);CKEDITOR.ui.dialog.labeledElement.call(this,b,a,d,function(){f["aria-labelledby"]=this._.labelId;this._.required&&(f["aria-required"]=this._.required);var a=['<div class="cke_dialog_ui_input_textarea" role="presentation"><textarea id="',c,'" '],b;for(b in f)a.push(b+'="'+CKEDITOR.tools.htmlEncode(f[b])+'" ');a.push(">",CKEDITOR.tools.htmlEncode(e._["default"]), -"</textarea></div>");return a.join("")})}},checkbox:function(b,a,d){if(!(3>arguments.length)){var e=i.call(this,a,{"default":!!a["default"]});a.validate&&(this.validate=a.validate);CKEDITOR.ui.dialog.uiElement.call(this,b,a,d,"span",null,null,function(){var c=CKEDITOR.tools.extend({},a,{id:a.id?a.id+"_checkbox":CKEDITOR.tools.getNextId()+"_checkbox"},true),d=[],h=CKEDITOR.tools.getNextId()+"_label",g={"class":"cke_dialog_ui_checkbox_input",type:"checkbox","aria-labelledby":h};p(c);if(a["default"])g.checked= -"checked";if(typeof c.inputStyle!="undefined")c.style=c.inputStyle;e.checkbox=new CKEDITOR.ui.dialog.uiElement(b,c,d,"input",null,g);d.push(' <label id="',h,'" for="',g.id,'"'+(a.labelStyle?' style="'+a.labelStyle+'"':"")+">",CKEDITOR.tools.htmlEncode(a.label),"</label>");return d.join("")})}},radio:function(b,a,d){if(!(3>arguments.length)){i.call(this,a);this._["default"]||(this._["default"]=this._.initValue=a.items[0][1]);a.validate&&(this.validate=a.valdiate);var e=[],c=this;CKEDITOR.ui.dialog.labeledElement.call(this, -b,a,d,function(){for(var d=[],h=[],g=(a.id?a.id:CKEDITOR.tools.getNextId())+"_radio",k=0;k<a.items.length;k++){var j=a.items[k],i=j[2]!==void 0?j[2]:j[0],l=j[1]!==void 0?j[1]:j[0],m=CKEDITOR.tools.getNextId()+"_radio_input",n=m+"_label",m=CKEDITOR.tools.extend({},a,{id:m,title:null,type:null},true),i=CKEDITOR.tools.extend({},m,{title:i},true),o={type:"radio","class":"cke_dialog_ui_radio_input",name:g,value:l,"aria-labelledby":n},q=[];if(c._["default"]==l)o.checked="checked";p(m);p(i);if(typeof m.inputStyle!= -"undefined")m.style=m.inputStyle;m.keyboardFocusable=true;e.push(new CKEDITOR.ui.dialog.uiElement(b,m,q,"input",null,o));q.push(" ");new CKEDITOR.ui.dialog.uiElement(b,i,q,"label",null,{id:n,"for":o.id},j[0]);d.push(q.join(""))}new CKEDITOR.ui.dialog.hbox(b,e,d,h);return h.join("")});this._.children=e}},button:function(b,a,d){if(arguments.length){"function"==typeof a&&(a=a(b.getParentEditor()));i.call(this,a,{disabled:a.disabled||!1});CKEDITOR.event.implementOn(this);var e=this;b.on("load",function(){var a= -this.getElement();(function(){a.on("click",function(a){e.click();a.data.preventDefault()});a.on("keydown",function(a){a.data.getKeystroke()in{32:1}&&(e.click(),a.data.preventDefault())})})();a.unselectable()},this);var c=CKEDITOR.tools.extend({},a);delete c.style;var f=CKEDITOR.tools.getNextId()+"_label";CKEDITOR.ui.dialog.uiElement.call(this,b,c,d,"a",null,{style:a.style,href:"javascript:void(0)",title:a.label,hidefocus:"true","class":a["class"],role:"button","aria-labelledby":f},'<span id="'+f+ -'" class="cke_dialog_ui_button">'+CKEDITOR.tools.htmlEncode(a.label)+"</span>")}},select:function(b,a,d){if(!(3>arguments.length)){var e=i.call(this,a);a.validate&&(this.validate=a.validate);e.inputId=CKEDITOR.tools.getNextId()+"_select";CKEDITOR.ui.dialog.labeledElement.call(this,b,a,d,function(){var c=CKEDITOR.tools.extend({},a,{id:a.id?a.id+"_select":CKEDITOR.tools.getNextId()+"_select"},true),d=[],h=[],g={id:e.inputId,"class":"cke_dialog_ui_input_select","aria-labelledby":this._.labelId};d.push('<div class="cke_dialog_ui_input_', -a.type,'" role="presentation"');a.width&&d.push('style="width:'+a.width+'" ');d.push(">");if(a.size!=void 0)g.size=a.size;if(a.multiple!=void 0)g.multiple=a.multiple;p(c);for(var k=0,j;k<a.items.length&&(j=a.items[k]);k++)h.push('<option value="',CKEDITOR.tools.htmlEncode(j[1]!==void 0?j[1]:j[0]).replace(/"/g,"&quot;"),'" /> ',CKEDITOR.tools.htmlEncode(j[0]));if(typeof c.inputStyle!="undefined")c.style=c.inputStyle;e.select=new CKEDITOR.ui.dialog.uiElement(b,c,d,"select",null,g,h.join(""));d.push("</div>"); -return d.join("")})}},file:function(b,a,d){if(!(3>arguments.length)){void 0===a["default"]&&(a["default"]="");var e=CKEDITOR.tools.extend(i.call(this,a),{definition:a,buttons:[]});a.validate&&(this.validate=a.validate);b.on("load",function(){CKEDITOR.document.getById(e.frameId).getParent().addClass("cke_dialog_ui_input_file")});CKEDITOR.ui.dialog.labeledElement.call(this,b,a,d,function(){e.frameId=CKEDITOR.tools.getNextId()+"_fileInput";var b=['<iframe frameborder="0" allowtransparency="0" class="cke_dialog_ui_input_file" role="presentation" id="', -e.frameId,'" title="',a.label,'" src="javascript:void('];b.push(CKEDITOR.env.ie?"(function(){"+encodeURIComponent("document.open();("+CKEDITOR.tools.fixDomain+")();document.close();")+"})()":"0");b.push(')"></iframe>');return b.join("")})}},fileButton:function(b,a,d){if(!(3>arguments.length)){i.call(this,a);var e=this;a.validate&&(this.validate=a.validate);var c=CKEDITOR.tools.extend({},a),f=c.onClick;c.className=(c.className?c.className+" ":"")+"cke_dialog_ui_button";c.onClick=function(c){var d= -a["for"];if(!f||f.call(this,c)!==false){b.getContentElement(d[0],d[1]).submit();this.disable()}};b.on("load",function(){b.getContentElement(a["for"][0],a["for"][1])._.buttons.push(e)});CKEDITOR.ui.dialog.button.call(this,b,c,d)}},html:function(){var b=/^\s*<[\w:]+\s+([^>]*)?>/,a=/^(\s*<[\w:]+(?:\s+[^>]*)?)((?:.|\r|\n)+)$/,d=/\/$/;return function(e,c,f){if(!(3>arguments.length)){var h=[],g=c.html;"<"!=g.charAt(0)&&(g="<span>"+g+"</span>");var k=c.focus;if(k){var j=this.focus;this.focus=function(){("function"== -typeof k?k:j).call(this);this.fire("focus")};c.isFocusable&&(this.isFocusable=this.isFocusable);this.keyboardFocusable=!0}CKEDITOR.ui.dialog.uiElement.call(this,e,c,h,"span",null,null,"");h=h.join("").match(b);g=g.match(a)||["","",""];d.test(g[1])&&(g[1]=g[1].slice(0,-1),g[2]="/"+g[2]);f.push([g[1]," ",h[1]||"",g[2]].join(""))}}}(),fieldset:function(b,a,d,e,c){var f=c.label;this._={children:a};CKEDITOR.ui.dialog.uiElement.call(this,b,c,e,"fieldset",null,null,function(){var a=[];f&&a.push("<legend"+ -(c.labelStyle?' style="'+c.labelStyle+'"':"")+">"+f+"</legend>");for(var b=0;b<d.length;b++)a.push(d[b]);return a.join("")})}},!0);CKEDITOR.ui.dialog.html.prototype=new CKEDITOR.ui.dialog.uiElement;CKEDITOR.ui.dialog.labeledElement.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{setLabel:function(b){var a=CKEDITOR.document.getById(this._.labelId);1>a.getChildCount()?(new CKEDITOR.dom.text(b,CKEDITOR.document)).appendTo(a):a.getChild(0).$.nodeValue=b;return this},getLabel:function(){var b= -CKEDITOR.document.getById(this._.labelId);return!b||1>b.getChildCount()?"":b.getChild(0).getText()},eventProcessors:o},!0);CKEDITOR.ui.dialog.button.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{click:function(){return!this._.disabled?this.fire("click",{dialog:this._.dialog}):!1},enable:function(){this._.disabled=!1;var b=this.getElement();b&&b.removeClass("cke_disabled")},disable:function(){this._.disabled=!0;this.getElement().addClass("cke_disabled")},isVisible:function(){return this.getElement().getFirst().isVisible()}, -isEnabled:function(){return!this._.disabled},eventProcessors:CKEDITOR.tools.extend({},CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors,{onClick:function(b,a){this.on("click",function(){a.apply(this,arguments)})}},!0),accessKeyUp:function(){this.click()},accessKeyDown:function(){this.focus()},keyboardFocusable:!0},!0);CKEDITOR.ui.dialog.textInput.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement,{getInputElement:function(){return CKEDITOR.document.getById(this._.inputId)}, -focus:function(){var b=this.selectParentTab();setTimeout(function(){var a=b.getInputElement();a&&a.$.focus()},0)},select:function(){var b=this.selectParentTab();setTimeout(function(){var a=b.getInputElement();a&&(a.$.focus(),a.$.select())},0)},accessKeyUp:function(){this.select()},setValue:function(b){!b&&(b="");return CKEDITOR.ui.dialog.uiElement.prototype.setValue.apply(this,arguments)},keyboardFocusable:!0},n,!0);CKEDITOR.ui.dialog.textarea.prototype=new CKEDITOR.ui.dialog.textInput;CKEDITOR.ui.dialog.select.prototype= -CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement,{getInputElement:function(){return this._.select.getElement()},add:function(b,a,d){var e=new CKEDITOR.dom.element("option",this.getDialog().getParentEditor().document),c=this.getInputElement().$;e.$.text=b;e.$.value=void 0===a||null===a?b:a;void 0===d||null===d?CKEDITOR.env.ie?c.add(e.$):c.add(e.$,null):c.add(e.$,d);return this},remove:function(b){this.getInputElement().$.remove(b);return this},clear:function(){for(var b=this.getInputElement().$;0< -b.length;)b.remove(0);return this},keyboardFocusable:!0},n,!0);CKEDITOR.ui.dialog.checkbox.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{getInputElement:function(){return this._.checkbox.getElement()},setValue:function(b,a){this.getInputElement().$.checked=b;!a&&this.fire("change",{value:b})},getValue:function(){return this.getInputElement().$.checked},accessKeyUp:function(){this.setValue(!this.getValue())},eventProcessors:{onChange:function(b,a){if(!CKEDITOR.env.ie||8<CKEDITOR.env.version)return o.onChange.apply(this, -arguments);b.on("load",function(){var a=this._.checkbox.getElement();a.on("propertychange",function(b){b=b.data.$;"checked"==b.propertyName&&this.fire("change",{value:a.$.checked})},this)},this);this.on("change",a);return null}},keyboardFocusable:!0},n,!0);CKEDITOR.ui.dialog.radio.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{setValue:function(b,a){for(var d=this._.children,e,c=0;c<d.length&&(e=d[c]);c++)e.getElement().$.checked=e.getValue()==b;!a&&this.fire("change",{value:b})}, -getValue:function(){for(var b=this._.children,a=0;a<b.length;a++)if(b[a].getElement().$.checked)return b[a].getValue();return null},accessKeyUp:function(){var b=this._.children,a;for(a=0;a<b.length;a++)if(b[a].getElement().$.checked){b[a].getElement().focus();return}b[0].getElement().focus()},eventProcessors:{onChange:function(b,a){if(CKEDITOR.env.ie)b.on("load",function(){for(var a=this._.children,b=this,c=0;c<a.length;c++)a[c].getElement().on("propertychange",function(a){a=a.data.$;"checked"==a.propertyName&& -this.$.checked&&b.fire("change",{value:this.getAttribute("value")})})},this),this.on("change",a);else return o.onChange.apply(this,arguments);return null}}},n,!0);CKEDITOR.ui.dialog.file.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement,n,{getInputElement:function(){var b=CKEDITOR.document.getById(this._.frameId).getFrameDocument();return 0<b.$.forms.length?new CKEDITOR.dom.element(b.$.forms[0].elements[0]):this.getElement()},submit:function(){this.getInputElement().getParent().$.submit(); -return this},getAction:function(){return this.getInputElement().getParent().$.action},registerEvents:function(b){var a=/^on([A-Z]\w+)/,d,e=function(a,b,c,d){a.on("formLoaded",function(){a.getInputElement().on(c,d,a)})},c;for(c in b)if(d=c.match(a))this.eventProcessors[c]?this.eventProcessors[c].call(this,this._.dialog,b[c]):e(this,this._.dialog,d[1].toLowerCase(),b[c]);return this},reset:function(){function b(){d.$.open();var b="";e.size&&(b=e.size-(CKEDITOR.env.ie?7:0));var i=a.frameId+"_input"; -d.$.write(['<html dir="'+g+'" lang="'+k+'"><head><title></title></head><body style="margin: 0; overflow: hidden; background: transparent;">','<form enctype="multipart/form-data" method="POST" dir="'+g+'" lang="'+k+'" action="',CKEDITOR.tools.htmlEncode(e.action),'"><label id="',a.labelId,'" for="',i,'" style="display:none">',CKEDITOR.tools.htmlEncode(e.label),'</label><input id="',i,'" aria-labelledby="',a.labelId,'" type="file" name="',CKEDITOR.tools.htmlEncode(e.id||"cke_upload"),'" size="',CKEDITOR.tools.htmlEncode(0< -b?b:""),'" /></form></body></html><script>',CKEDITOR.env.ie?"("+CKEDITOR.tools.fixDomain+")();":"","window.parent.CKEDITOR.tools.callFunction("+f+");","window.onbeforeunload = function() {window.parent.CKEDITOR.tools.callFunction("+h+")}","<\/script>"].join(""));d.$.close();for(b=0;b<c.length;b++)c[b].enable()}var a=this._,d=CKEDITOR.document.getById(a.frameId).getFrameDocument(),e=a.definition,c=a.buttons,f=this.formLoadedNumber,h=this.formUnloadNumber,g=a.dialog._.editor.lang.dir,k=a.dialog._.editor.langCode; -f||(f=this.formLoadedNumber=CKEDITOR.tools.addFunction(function(){this.fire("formLoaded")},this),h=this.formUnloadNumber=CKEDITOR.tools.addFunction(function(){this.getInputElement().clearCustomData()},this),this.getDialog()._.editor.on("destroy",function(){CKEDITOR.tools.removeFunction(f);CKEDITOR.tools.removeFunction(h)}));CKEDITOR.env.gecko?setTimeout(b,500):b()},getValue:function(){return this.getInputElement().$.value||""},setInitValue:function(){this._.initValue=""},eventProcessors:{onChange:function(b, -a){this._.domOnChangeRegistered||(this.on("formLoaded",function(){this.getInputElement().on("change",function(){this.fire("change",{value:this.getValue()})},this)},this),this._.domOnChangeRegistered=!0);this.on("change",a)}},keyboardFocusable:!0},!0);CKEDITOR.ui.dialog.fileButton.prototype=new CKEDITOR.ui.dialog.button;CKEDITOR.ui.dialog.fieldset.prototype=CKEDITOR.tools.clone(CKEDITOR.ui.dialog.hbox.prototype);CKEDITOR.dialog.addUIElement("text",r);CKEDITOR.dialog.addUIElement("password",r);CKEDITOR.dialog.addUIElement("textarea", -l);CKEDITOR.dialog.addUIElement("checkbox",l);CKEDITOR.dialog.addUIElement("radio",l);CKEDITOR.dialog.addUIElement("button",l);CKEDITOR.dialog.addUIElement("select",l);CKEDITOR.dialog.addUIElement("file",l);CKEDITOR.dialog.addUIElement("fileButton",l);CKEDITOR.dialog.addUIElement("html",l);CKEDITOR.dialog.addUIElement("fieldset",{build:function(b,a,d){for(var e=a.children,c,f=[],h=[],g=0;g<e.length&&(c=e[g]);g++){var i=[];f.push(i);h.push(CKEDITOR.dialog._.uiElementBuilders[c.type].build(b,c,i))}return new CKEDITOR.ui.dialog[a.type](b, -h,f,d,a)}})}});CKEDITOR.DIALOG_RESIZE_NONE=0;CKEDITOR.DIALOG_RESIZE_WIDTH=1;CKEDITOR.DIALOG_RESIZE_HEIGHT=2;CKEDITOR.DIALOG_RESIZE_BOTH=3; -(function(){function t(){for(var a=this._.tabIdList.length,b=CKEDITOR.tools.indexOf(this._.tabIdList,this._.currentTabId)+a,c=b-1;c>b-a;c--)if(this._.tabs[this._.tabIdList[c%a]][0].$.offsetHeight)return this._.tabIdList[c%a];return null}function u(){for(var a=this._.tabIdList.length,b=CKEDITOR.tools.indexOf(this._.tabIdList,this._.currentTabId),c=b+1;c<b+a;c++)if(this._.tabs[this._.tabIdList[c%a]][0].$.offsetHeight)return this._.tabIdList[c%a];return null}function G(a,b){for(var c=a.$.getElementsByTagName("input"), -e=0,d=c.length;e<d;e++){var g=new CKEDITOR.dom.element(c[e]);"text"==g.getAttribute("type").toLowerCase()&&(b?(g.setAttribute("value",g.getCustomData("fake_value")||""),g.removeCustomData("fake_value")):(g.setCustomData("fake_value",g.getAttribute("value")),g.setAttribute("value","")))}}function P(a,b){var c=this.getInputElement();c&&(a?c.removeAttribute("aria-invalid"):c.setAttribute("aria-invalid",!0));a||(this.select?this.select():this.focus());b&&alert(b);this.fire("validated",{valid:a,msg:b})} -function Q(){var a=this.getInputElement();a&&a.removeAttribute("aria-invalid")}function R(a){var a=CKEDITOR.dom.element.createFromHtml(CKEDITOR.addTemplate("dialog",S).output({id:CKEDITOR.tools.getNextNumber(),editorId:a.id,langDir:a.lang.dir,langCode:a.langCode,editorDialogClass:"cke_editor_"+a.name.replace(/\./g,"\\.")+"_dialog",closeTitle:a.lang.common.close,hidpi:CKEDITOR.env.hidpi?"cke_hidpi":""})),b=a.getChild([0,0,0,0,0]),c=b.getChild(0),e=b.getChild(1);if(CKEDITOR.env.ie&&!CKEDITOR.env.ie6Compat){var d= -"javascript:void(function(){"+encodeURIComponent("document.open();("+CKEDITOR.tools.fixDomain+")();document.close();")+"}())";CKEDITOR.dom.element.createFromHtml('<iframe frameBorder="0" class="cke_iframe_shim" src="'+d+'" tabIndex="-1"></iframe>').appendTo(b.getParent())}c.unselectable();e.unselectable();return{element:a,parts:{dialog:a.getChild(0),title:c,close:e,tabs:b.getChild(2),contents:b.getChild([3,0,0,0]),footer:b.getChild([3,0,1,0])}}}function H(a,b,c){this.element=b;this.focusIndex=c;this.tabIndex= -0;this.isFocusable=function(){return!b.getAttribute("disabled")&&b.isVisible()};this.focus=function(){a._.currentFocusIndex=this.focusIndex;this.element.focus()};b.on("keydown",function(a){a.data.getKeystroke()in{32:1,13:1}&&this.fire("click")});b.on("focus",function(){this.fire("mouseover")});b.on("blur",function(){this.fire("mouseout")})}function T(a){function b(){a.layout()}var c=CKEDITOR.document.getWindow();c.on("resize",b);a.on("hide",function(){c.removeListener("resize",b)})}function I(a,b){this._= -{dialog:a};CKEDITOR.tools.extend(this,b)}function U(a){function b(b){var c=a.getSize(),h=CKEDITOR.document.getWindow().getViewPaneSize(),o=b.data.$.screenX,j=b.data.$.screenY,n=o-e.x,m=j-e.y;e={x:o,y:j};d.x+=n;d.y+=m;a.move(d.x+i[3]<f?-i[3]:d.x-i[1]>h.width-c.width-f?h.width-c.width+("rtl"==g.lang.dir?0:i[1]):d.x,d.y+i[0]<f?-i[0]:d.y-i[2]>h.height-c.height-f?h.height-c.height+i[2]:d.y,1);b.data.preventDefault()}function c(){CKEDITOR.document.removeListener("mousemove",b);CKEDITOR.document.removeListener("mouseup", -c);if(CKEDITOR.env.ie6Compat){var a=q.getChild(0).getFrameDocument();a.removeListener("mousemove",b);a.removeListener("mouseup",c)}}var e=null,d=null;a.getElement().getFirst();var g=a.getParentEditor(),f=g.config.dialog_magnetDistance,i=CKEDITOR.skin.margins||[0,0,0,0];"undefined"==typeof f&&(f=20);a.parts.title.on("mousedown",function(f){e={x:f.data.$.screenX,y:f.data.$.screenY};CKEDITOR.document.on("mousemove",b);CKEDITOR.document.on("mouseup",c);d=a.getPosition();if(CKEDITOR.env.ie6Compat){var k= -q.getChild(0).getFrameDocument();k.on("mousemove",b);k.on("mouseup",c)}f.data.preventDefault()},a)}function V(a){var b,c;function e(d){var e="rtl"==i.lang.dir,j=o.width,C=o.height,D=j+(d.data.$.screenX-b)*(e?-1:1)*(a._.moved?1:2),n=C+(d.data.$.screenY-c)*(a._.moved?1:2),x=a._.element.getFirst(),x=e&&x.getComputedStyle("right"),y=a.getPosition();y.y+n>h.height&&(n=h.height-y.y);if((e?x:y.x)+D>h.width)D=h.width-(e?x:y.x);if(f==CKEDITOR.DIALOG_RESIZE_WIDTH||f==CKEDITOR.DIALOG_RESIZE_BOTH)j=Math.max(g.minWidth|| -0,D-l);if(f==CKEDITOR.DIALOG_RESIZE_HEIGHT||f==CKEDITOR.DIALOG_RESIZE_BOTH)C=Math.max(g.minHeight||0,n-k);a.resize(j,C);a._.moved||a.layout();d.data.preventDefault()}function d(){CKEDITOR.document.removeListener("mouseup",d);CKEDITOR.document.removeListener("mousemove",e);j&&(j.remove(),j=null);if(CKEDITOR.env.ie6Compat){var a=q.getChild(0).getFrameDocument();a.removeListener("mouseup",d);a.removeListener("mousemove",e)}}var g=a.definition,f=g.resizable;if(f!=CKEDITOR.DIALOG_RESIZE_NONE){var i=a.getParentEditor(), -l,k,h,o,j,n=CKEDITOR.tools.addFunction(function(f){o=a.getSize();var g=a.parts.contents;g.$.getElementsByTagName("iframe").length&&(j=CKEDITOR.dom.element.createFromHtml('<div class="cke_dialog_resize_cover" style="height: 100%; position: absolute; width: 100%;"></div>'),g.append(j));k=o.height-a.parts.contents.getSize("height",!(CKEDITOR.env.gecko||CKEDITOR.env.opera||CKEDITOR.env.ie&&CKEDITOR.env.quirks));l=o.width-a.parts.contents.getSize("width",1);b=f.screenX;c=f.screenY;h=CKEDITOR.document.getWindow().getViewPaneSize(); -CKEDITOR.document.on("mousemove",e);CKEDITOR.document.on("mouseup",d);CKEDITOR.env.ie6Compat&&(g=q.getChild(0).getFrameDocument(),g.on("mousemove",e),g.on("mouseup",d));f.preventDefault&&f.preventDefault()});a.on("load",function(){var b="";f==CKEDITOR.DIALOG_RESIZE_WIDTH?b=" cke_resizer_horizontal":f==CKEDITOR.DIALOG_RESIZE_HEIGHT&&(b=" cke_resizer_vertical");b=CKEDITOR.dom.element.createFromHtml('<div class="cke_resizer'+b+" cke_resizer_"+i.lang.dir+'" title="'+CKEDITOR.tools.htmlEncode(i.lang.common.resize)+ -'" onmousedown="CKEDITOR.tools.callFunction('+n+', event )">'+("ltr"==i.lang.dir?"◢":"◣")+"</div>");a.parts.footer.append(b,1)});i.on("destroy",function(){CKEDITOR.tools.removeFunction(n)})}}function E(a){a.data.preventDefault(1)}function J(a){var b=CKEDITOR.document.getWindow(),c=a.config,e=c.dialog_backgroundCoverColor||"white",d=c.dialog_backgroundCoverOpacity,g=c.baseFloatZIndex,c=CKEDITOR.tools.genKey(e,d,g),f=w[c];f?f.show():(g=['<div tabIndex="-1" style="position: ',CKEDITOR.env.ie6Compat? -"absolute":"fixed","; z-index: ",g,"; top: 0px; left: 0px; ",!CKEDITOR.env.ie6Compat?"background-color: "+e:"",'" class="cke_dialog_background_cover">'],CKEDITOR.env.ie6Compat&&(e="<html><body style=\\'background-color:"+e+";\\'></body></html>",g.push('<iframe hidefocus="true" frameborder="0" id="cke_dialog_background_iframe" src="javascript:'),g.push("void((function(){"+encodeURIComponent("document.open();("+CKEDITOR.tools.fixDomain+")();document.write( '"+e+"' );document.close();")+"})())"),g.push('" style="position:absolute;left:0;top:0;width:100%;height: 100%;filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0)"></iframe>')), -g.push("</div>"),f=CKEDITOR.dom.element.createFromHtml(g.join("")),f.setOpacity(void 0!=d?d:0.5),f.on("keydown",E),f.on("keypress",E),f.on("keyup",E),f.appendTo(CKEDITOR.document.getBody()),w[c]=f);a.focusManager.add(f);q=f;var a=function(){var a=b.getViewPaneSize();f.setStyles({width:a.width+"px",height:a.height+"px"})},i=function(){var a=b.getScrollPosition(),c=CKEDITOR.dialog._.currentTop;f.setStyles({left:a.x+"px",top:a.y+"px"});if(c){do{a=c.getPosition();c.move(a.x,a.y)}while(c=c._.parentDialog) -}};F=a;b.on("resize",a);a();(!CKEDITOR.env.mac||!CKEDITOR.env.webkit)&&f.focus();if(CKEDITOR.env.ie6Compat){var l=function(){i();arguments.callee.prevScrollHandler.apply(this,arguments)};b.$.setTimeout(function(){l.prevScrollHandler=window.onscroll||function(){};window.onscroll=l},0);i()}}function K(a){q&&(a.focusManager.remove(q),a=CKEDITOR.document.getWindow(),q.hide(),a.removeListener("resize",F),CKEDITOR.env.ie6Compat&&a.$.setTimeout(function(){window.onscroll=window.onscroll&&window.onscroll.prevScrollHandler|| -null},0),F=null)}var r=CKEDITOR.tools.cssLength,S='<div class="cke_reset_all {editorId} {editorDialogClass} {hidpi}" dir="{langDir}" lang="{langCode}" role="dialog" aria-labelledby="cke_dialog_title_{id}"><table class="cke_dialog '+CKEDITOR.env.cssClass+' cke_{langDir}" style="position:absolute" role="presentation"><tr><td role="presentation"><div class="cke_dialog_body" role="presentation"><div id="cke_dialog_title_{id}" class="cke_dialog_title" role="presentation"></div><a id="cke_dialog_close_button_{id}" class="cke_dialog_close_button" href="javascript:void(0)" title="{closeTitle}" role="button"><span class="cke_label">X</span></a><div id="cke_dialog_tabs_{id}" class="cke_dialog_tabs" role="tablist"></div><table class="cke_dialog_contents" role="presentation"><tr><td id="cke_dialog_contents_{id}" class="cke_dialog_contents_body" role="presentation"></td></tr><tr><td id="cke_dialog_footer_{id}" class="cke_dialog_footer" role="presentation"></td></tr></table></div></td></tr></table></div>'; -CKEDITOR.dialog=function(a,b){function c(){var a=m._.focusList;a.sort(function(a,b){return a.tabIndex!=b.tabIndex?b.tabIndex-a.tabIndex:a.focusIndex-b.focusIndex});for(var b=a.length,c=0;c<b;c++)a[c].focusIndex=c}function e(a){var b=m._.focusList,a=a||0;if(!(1>b.length)){var c=m._.currentFocusIndex;try{b[c].getInputElement().$.blur()}catch(f){}for(var d=c=(c+a+b.length)%b.length;a&&!b[d].isFocusable()&&!(d=(d+a+b.length)%b.length,d==c););b[d].focus();"text"==b[d].type&&b[d].select()}}function d(b){if(m== -CKEDITOR.dialog._.currentTop){var c=b.data.getKeystroke(),d="rtl"==a.lang.dir;o=j=0;if(9==c||c==CKEDITOR.SHIFT+9)c=c==CKEDITOR.SHIFT+9,m._.tabBarMode?(c=c?t.call(m):u.call(m),m.selectPage(c),m._.tabs[c][0].focus()):e(c?-1:1),o=1;else if(c==CKEDITOR.ALT+121&&!m._.tabBarMode&&1<m.getPageCount())m._.tabBarMode=!0,m._.tabs[m._.currentTabId][0].focus(),o=1;else if((37==c||39==c)&&m._.tabBarMode)c=c==(d?39:37)?t.call(m):u.call(m),m.selectPage(c),m._.tabs[c][0].focus(),o=1;else if((13==c||32==c)&&m._.tabBarMode)this.selectPage(this._.currentTabId), -this._.tabBarMode=!1,this._.currentFocusIndex=-1,e(1),o=1;else if(13==c){c=b.data.getTarget();if(!c.is("a","button","select","textarea")&&(!c.is("input")||"button"!=c.$.type))(c=this.getButton("ok"))&&CKEDITOR.tools.setTimeout(c.click,0,c),o=1;j=1}else if(27==c)(c=this.getButton("cancel"))?CKEDITOR.tools.setTimeout(c.click,0,c):!1!==this.fire("cancel",{hide:!0}).hide&&this.hide(),j=1;else return;g(b)}}function g(a){o?a.data.preventDefault(1):j&&a.data.stopPropagation()}var f=CKEDITOR.dialog._.dialogDefinitions[b], -i=CKEDITOR.tools.clone(W),l=a.config.dialog_buttonsOrder||"OS",k=a.lang.dir,h={},o,j;("OS"==l&&CKEDITOR.env.mac||"rtl"==l&&"ltr"==k||"ltr"==l&&"rtl"==k)&&i.buttons.reverse();f=CKEDITOR.tools.extend(f(a),i);f=CKEDITOR.tools.clone(f);f=new L(this,f);i=R(a);this._={editor:a,element:i.element,name:b,contentSize:{width:0,height:0},size:{width:0,height:0},contents:{},buttons:{},accessKeyMap:{},tabs:{},tabIdList:[],currentTabId:null,currentTabIndex:null,pageCount:0,lastTab:null,tabBarMode:!1,focusList:[], -currentFocusIndex:0,hasFocus:!1};this.parts=i.parts;CKEDITOR.tools.setTimeout(function(){a.fire("ariaWidget",this.parts.contents)},0,this);i={position:CKEDITOR.env.ie6Compat?"absolute":"fixed",top:0,visibility:"hidden"};i["rtl"==k?"right":"left"]=0;this.parts.dialog.setStyles(i);CKEDITOR.event.call(this);this.definition=f=CKEDITOR.fire("dialogDefinition",{name:b,definition:f},a).definition;if(!("removeDialogTabs"in a._)&&a.config.removeDialogTabs){i=a.config.removeDialogTabs.split(";");for(k=0;k< -i.length;k++)if(l=i[k].split(":"),2==l.length){var n=l[0];h[n]||(h[n]=[]);h[n].push(l[1])}a._.removeDialogTabs=h}if(a._.removeDialogTabs&&(h=a._.removeDialogTabs[b]))for(k=0;k<h.length;k++)f.removeContents(h[k]);if(f.onLoad)this.on("load",f.onLoad);if(f.onShow)this.on("show",f.onShow);if(f.onHide)this.on("hide",f.onHide);if(f.onOk)this.on("ok",function(b){a.fire("saveSnapshot");setTimeout(function(){a.fire("saveSnapshot")},0);!1===f.onOk.call(this,b)&&(b.data.hide=!1)});if(f.onCancel)this.on("cancel", -function(a){!1===f.onCancel.call(this,a)&&(a.data.hide=!1)});var m=this,p=function(a){var b=m._.contents,c=!1,d;for(d in b)for(var f in b[d])if(c=a.call(this,b[d][f]))return};this.on("ok",function(a){p(function(b){if(b.validate){var c=b.validate(this),d="string"==typeof c||!1===c;d&&(a.data.hide=!1,a.stop());P.call(b,!d,"string"==typeof c?c:void 0);return d}})},this,null,0);this.on("cancel",function(b){p(function(c){if(c.isChanged())return!a.config.dialog_noConfirmCancel&&!confirm(a.lang.common.confirmCancel)&& -(b.data.hide=!1),!0})},this,null,0);this.parts.close.on("click",function(a){!1!==this.fire("cancel",{hide:!0}).hide&&this.hide();a.data.preventDefault()},this);this.changeFocus=e;var v=this._.element;a.focusManager.add(v,1);this.on("show",function(){v.on("keydown",d,this);if(CKEDITOR.env.opera||CKEDITOR.env.gecko)v.on("keypress",g,this)});this.on("hide",function(){v.removeListener("keydown",d);(CKEDITOR.env.opera||CKEDITOR.env.gecko)&&v.removeListener("keypress",g);p(function(a){Q.apply(a)})});this.on("iframeAdded", -function(a){(new CKEDITOR.dom.document(a.data.iframe.$.contentWindow.document)).on("keydown",d,this,null,0)});this.on("show",function(){c();if(a.config.dialog_startupFocusTab&&1<m._.pageCount)m._.tabBarMode=!0,m._.tabs[m._.currentTabId][0].focus();else if(!this._.hasFocus)if(this._.currentFocusIndex=-1,f.onFocus){var b=f.onFocus.call(this);b&&b.focus()}else e(1)},this,null,4294967295);if(CKEDITOR.env.ie6Compat)this.on("load",function(){var a=this.getElement(),b=a.getFirst();b.remove();b.appendTo(a)}, -this);U(this);V(this);(new CKEDITOR.dom.text(f.title,CKEDITOR.document)).appendTo(this.parts.title);for(k=0;k<f.contents.length;k++)(h=f.contents[k])&&this.addPage(h);this.parts.tabs.on("click",function(a){var b=a.data.getTarget();b.hasClass("cke_dialog_tab")&&(b=b.$.id,this.selectPage(b.substring(4,b.lastIndexOf("_"))),this._.tabBarMode&&(this._.tabBarMode=!1,this._.currentFocusIndex=-1,e(1)),a.data.preventDefault())},this);k=[];h=CKEDITOR.dialog._.uiElementBuilders.hbox.build(this,{type:"hbox", -className:"cke_dialog_footer_buttons",widths:[],children:f.buttons},k).getChild();this.parts.footer.setHtml(k.join(""));for(k=0;k<h.length;k++)this._.buttons[h[k].id]=h[k]};CKEDITOR.dialog.prototype={destroy:function(){this.hide();this._.element.remove()},resize:function(){return function(a,b){if(!this._.contentSize||!(this._.contentSize.width==a&&this._.contentSize.height==b))CKEDITOR.dialog.fire("resize",{dialog:this,width:a,height:b},this._.editor),this.fire("resize",{width:a,height:b},this._.editor), -this.parts.contents.setStyles({width:a+"px",height:b+"px"}),"rtl"==this._.editor.lang.dir&&this._.position&&(this._.position.x=CKEDITOR.document.getWindow().getViewPaneSize().width-this._.contentSize.width-parseInt(this._.element.getFirst().getStyle("right"),10)),this._.contentSize={width:a,height:b}}}(),getSize:function(){var a=this._.element.getFirst();return{width:a.$.offsetWidth||0,height:a.$.offsetHeight||0}},move:function(a,b,c){var e=this._.element.getFirst(),d="rtl"==this._.editor.lang.dir, -g="fixed"==e.getComputedStyle("position");CKEDITOR.env.ie&&e.setStyle("zoom","100%");if(!g||!this._.position||!(this._.position.x==a&&this._.position.y==b))this._.position={x:a,y:b},g||(g=CKEDITOR.document.getWindow().getScrollPosition(),a+=g.x,b+=g.y),d&&(g=this.getSize(),a=CKEDITOR.document.getWindow().getViewPaneSize().width-g.width-a),b={top:(0<b?b:0)+"px"},b[d?"right":"left"]=(0<a?a:0)+"px",e.setStyles(b),c&&(this._.moved=1)},getPosition:function(){return CKEDITOR.tools.extend({},this._.position)}, -show:function(){var a=this._.element,b=this.definition;!a.getParent()||!a.getParent().equals(CKEDITOR.document.getBody())?a.appendTo(CKEDITOR.document.getBody()):a.setStyle("display","block");if(CKEDITOR.env.gecko&&10900>CKEDITOR.env.version){var c=this.parts.dialog;c.setStyle("position","absolute");setTimeout(function(){c.setStyle("position","fixed")},0)}this.resize(this._.contentSize&&this._.contentSize.width||b.width||b.minWidth,this._.contentSize&&this._.contentSize.height||b.height||b.minHeight); -this.reset();this.selectPage(this.definition.contents[0].id);null===CKEDITOR.dialog._.currentZIndex&&(CKEDITOR.dialog._.currentZIndex=this._.editor.config.baseFloatZIndex);this._.element.getFirst().setStyle("z-index",CKEDITOR.dialog._.currentZIndex+=10);null===CKEDITOR.dialog._.currentTop?(CKEDITOR.dialog._.currentTop=this,this._.parentDialog=null,J(this._.editor)):(this._.parentDialog=CKEDITOR.dialog._.currentTop,this._.parentDialog.getElement().getFirst().$.style.zIndex-=Math.floor(this._.editor.config.baseFloatZIndex/ -2),CKEDITOR.dialog._.currentTop=this);a.on("keydown",M);a.on(CKEDITOR.env.opera?"keypress":"keyup",N);this._.hasFocus=!1;for(var e in b.contents)if(b.contents[e]){var a=b.contents[e],d=this._.tabs[a.id],g=a.requiredContent,f=0;if(d){for(var i in this._.contents[a.id]){var l=this._.contents[a.id][i];"hbox"==l.type||("vbox"==l.type||!l.getInputElement())||(l.requiredContent&&!this._.editor.activeFilter.check(l.requiredContent)?l.disable():(l.enable(),f++))}!f||g&&!this._.editor.activeFilter.check(g)? -d[0].addClass("cke_dialog_tab_disabled"):d[0].removeClass("cke_dialog_tab_disabled")}}CKEDITOR.tools.setTimeout(function(){this.layout();T(this);this.parts.dialog.setStyle("visibility","");this.fireOnce("load",{});CKEDITOR.ui.fire("ready",this);this.fire("show",{});this._.editor.fire("dialogShow",this);this._.parentDialog||this._.editor.focusManager.lock();this.foreach(function(a){a.setInitValue&&a.setInitValue()})},100,this)},layout:function(){var a=this.parts.dialog,b=this.getSize(),c=CKEDITOR.document.getWindow().getViewPaneSize(), -e=(c.width-b.width)/2,d=(c.height-b.height)/2;CKEDITOR.env.ie6Compat||(b.height+(0<d?d:0)>c.height||b.width+(0<e?e:0)>c.width?a.setStyle("position","absolute"):a.setStyle("position","fixed"));this.move(this._.moved?this._.position.x:e,this._.moved?this._.position.y:d)},foreach:function(a){for(var b in this._.contents)for(var c in this._.contents[b])a.call(this,this._.contents[b][c]);return this},reset:function(){var a=function(a){a.reset&&a.reset(1)};return function(){this.foreach(a);return this}}(), -setupContent:function(){var a=arguments;this.foreach(function(b){b.setup&&b.setup.apply(b,a)})},commitContent:function(){var a=arguments;this.foreach(function(b){CKEDITOR.env.ie&&this._.currentFocusIndex==b.focusIndex&&b.getInputElement().$.blur();b.commit&&b.commit.apply(b,a)})},hide:function(){if(this.parts.dialog.isVisible()){this.fire("hide",{});this._.editor.fire("dialogHide",this);this.selectPage(this._.tabIdList[0]);var a=this._.element;a.setStyle("display","none");this.parts.dialog.setStyle("visibility", -"hidden");for(X(this);CKEDITOR.dialog._.currentTop!=this;)CKEDITOR.dialog._.currentTop.hide();if(this._.parentDialog){var b=this._.parentDialog.getElement().getFirst();b.setStyle("z-index",parseInt(b.$.style.zIndex,10)+Math.floor(this._.editor.config.baseFloatZIndex/2))}else K(this._.editor);if(CKEDITOR.dialog._.currentTop=this._.parentDialog)CKEDITOR.dialog._.currentZIndex-=10;else{CKEDITOR.dialog._.currentZIndex=null;a.removeListener("keydown",M);a.removeListener(CKEDITOR.env.opera?"keypress":"keyup", -N);var c=this._.editor;c.focus();setTimeout(function(){c.focusManager.unlock()},0)}delete this._.parentDialog;this.foreach(function(a){a.resetInitValue&&a.resetInitValue()})}},addPage:function(a){if(!a.requiredContent||this._.editor.filter.check(a.requiredContent)){for(var b=[],c=a.label?' title="'+CKEDITOR.tools.htmlEncode(a.label)+'"':"",e=CKEDITOR.dialog._.uiElementBuilders.vbox.build(this,{type:"vbox",className:"cke_dialog_page_contents",children:a.elements,expand:!!a.expand,padding:a.padding, -style:a.style||"width: 100%;"},b),d=this._.contents[a.id]={},g=e.getChild(),f=0;e=g.shift();)!e.notAllowed&&("hbox"!=e.type&&"vbox"!=e.type)&&f++,d[e.id]=e,"function"==typeof e.getChild&&g.push.apply(g,e.getChild());f||(a.hidden=!0);b=CKEDITOR.dom.element.createFromHtml(b.join(""));b.setAttribute("role","tabpanel");e=CKEDITOR.env;d="cke_"+a.id+"_"+CKEDITOR.tools.getNextNumber();c=CKEDITOR.dom.element.createFromHtml(['<a class="cke_dialog_tab"',0<this._.pageCount?" cke_last":"cke_first",c,a.hidden? -' style="display:none"':"",' id="',d,'"',e.gecko&&10900<=e.version&&!e.hc?"":' href="javascript:void(0)"',' tabIndex="-1" hidefocus="true" role="tab">',a.label,"</a>"].join(""));b.setAttribute("aria-labelledby",d);this._.tabs[a.id]=[c,b];this._.tabIdList.push(a.id);!a.hidden&&this._.pageCount++;this._.lastTab=c;this.updateStyle();b.setAttribute("name",a.id);b.appendTo(this.parts.contents);c.unselectable();this.parts.tabs.append(c);a.accessKey&&(O(this,this,"CTRL+"+a.accessKey,Y,Z),this._.accessKeyMap["CTRL+"+ -a.accessKey]=a.id)}},selectPage:function(a){if(this._.currentTabId!=a&&!this._.tabs[a][0].hasClass("cke_dialog_tab_disabled")&&!0!==this.fire("selectPage",{page:a,currentPage:this._.currentTabId})){for(var b in this._.tabs){var c=this._.tabs[b][0],e=this._.tabs[b][1];b!=a&&(c.removeClass("cke_dialog_tab_selected"),e.hide());e.setAttribute("aria-hidden",b!=a)}var d=this._.tabs[a];d[0].addClass("cke_dialog_tab_selected");CKEDITOR.env.ie6Compat||CKEDITOR.env.ie7Compat?(G(d[1]),d[1].show(),setTimeout(function(){G(d[1], -1)},0)):d[1].show();this._.currentTabId=a;this._.currentTabIndex=CKEDITOR.tools.indexOf(this._.tabIdList,a)}},updateStyle:function(){this.parts.dialog[(1===this._.pageCount?"add":"remove")+"Class"]("cke_single_page")},hidePage:function(a){var b=this._.tabs[a]&&this._.tabs[a][0];b&&(1!=this._.pageCount&&b.isVisible())&&(a==this._.currentTabId&&this.selectPage(t.call(this)),b.hide(),this._.pageCount--,this.updateStyle())},showPage:function(a){if(a=this._.tabs[a]&&this._.tabs[a][0])a.show(),this._.pageCount++, -this.updateStyle()},getElement:function(){return this._.element},getName:function(){return this._.name},getContentElement:function(a,b){var c=this._.contents[a];return c&&c[b]},getValueOf:function(a,b){return this.getContentElement(a,b).getValue()},setValueOf:function(a,b,c){return this.getContentElement(a,b).setValue(c)},getButton:function(a){return this._.buttons[a]},click:function(a){return this._.buttons[a].click()},disableButton:function(a){return this._.buttons[a].disable()},enableButton:function(a){return this._.buttons[a].enable()}, -getPageCount:function(){return this._.pageCount},getParentEditor:function(){return this._.editor},getSelectedElement:function(){return this.getParentEditor().getSelection().getSelectedElement()},addFocusable:function(a,b){if("undefined"==typeof b)b=this._.focusList.length,this._.focusList.push(new H(this,a,b));else{this._.focusList.splice(b,0,new H(this,a,b));for(var c=b+1;c<this._.focusList.length;c++)this._.focusList[c].focusIndex++}}};CKEDITOR.tools.extend(CKEDITOR.dialog,{add:function(a,b){if(!this._.dialogDefinitions[a]|| -"function"==typeof b)this._.dialogDefinitions[a]=b},exists:function(a){return!!this._.dialogDefinitions[a]},getCurrent:function(){return CKEDITOR.dialog._.currentTop},isTabEnabled:function(a,b,c){a=a.config.removeDialogTabs;return!(a&&a.match(RegExp("(?:^|;)"+b+":"+c+"(?:$|;)","i")))},okButton:function(){var a=function(a,c){c=c||{};return CKEDITOR.tools.extend({id:"ok",type:"button",label:a.lang.common.ok,"class":"cke_dialog_ui_button_ok",onClick:function(a){a=a.data.dialog;!1!==a.fire("ok",{hide:!0}).hide&& -a.hide()}},c,!0)};a.type="button";a.override=function(b){return CKEDITOR.tools.extend(function(c){return a(c,b)},{type:"button"},!0)};return a}(),cancelButton:function(){var a=function(a,c){c=c||{};return CKEDITOR.tools.extend({id:"cancel",type:"button",label:a.lang.common.cancel,"class":"cke_dialog_ui_button_cancel",onClick:function(a){a=a.data.dialog;!1!==a.fire("cancel",{hide:!0}).hide&&a.hide()}},c,!0)};a.type="button";a.override=function(b){return CKEDITOR.tools.extend(function(c){return a(c, -b)},{type:"button"},!0)};return a}(),addUIElement:function(a,b){this._.uiElementBuilders[a]=b}});CKEDITOR.dialog._={uiElementBuilders:{},dialogDefinitions:{},currentTop:null,currentZIndex:null};CKEDITOR.event.implementOn(CKEDITOR.dialog);CKEDITOR.event.implementOn(CKEDITOR.dialog.prototype);var W={resizable:CKEDITOR.DIALOG_RESIZE_BOTH,minWidth:600,minHeight:400,buttons:[CKEDITOR.dialog.okButton,CKEDITOR.dialog.cancelButton]},z=function(a,b,c){for(var e=0,d;d=a[e];e++)if(d.id==b||c&&d[c]&&(d=z(d[c], -b,c)))return d;return null},A=function(a,b,c,e,d){if(c){for(var g=0,f;f=a[g];g++){if(f.id==c)return a.splice(g,0,b),b;if(e&&f[e]&&(f=A(f[e],b,c,e,!0)))return f}if(d)return null}a.push(b);return b},B=function(a,b,c){for(var e=0,d;d=a[e];e++){if(d.id==b)return a.splice(e,1);if(c&&d[c]&&(d=B(d[c],b,c)))return d}return null},L=function(a,b){this.dialog=a;for(var c=b.contents,e=0,d;d=c[e];e++)c[e]=d&&new I(a,d);CKEDITOR.tools.extend(this,b)};L.prototype={getContents:function(a){return z(this.contents, -a)},getButton:function(a){return z(this.buttons,a)},addContents:function(a,b){return A(this.contents,a,b)},addButton:function(a,b){return A(this.buttons,a,b)},removeContents:function(a){B(this.contents,a)},removeButton:function(a){B(this.buttons,a)}};I.prototype={get:function(a){return z(this.elements,a,"children")},add:function(a,b){return A(this.elements,a,b,"children")},remove:function(a){B(this.elements,a,"children")}};var F,w={},q,s={},M=function(a){var b=a.data.$.ctrlKey||a.data.$.metaKey,c= -a.data.$.altKey,e=a.data.$.shiftKey,d=String.fromCharCode(a.data.$.keyCode);if((b=s[(b?"CTRL+":"")+(c?"ALT+":"")+(e?"SHIFT+":"")+d])&&b.length)b=b[b.length-1],b.keydown&&b.keydown.call(b.uiElement,b.dialog,b.key),a.data.preventDefault()},N=function(a){var b=a.data.$.ctrlKey||a.data.$.metaKey,c=a.data.$.altKey,e=a.data.$.shiftKey,d=String.fromCharCode(a.data.$.keyCode);if((b=s[(b?"CTRL+":"")+(c?"ALT+":"")+(e?"SHIFT+":"")+d])&&b.length)b=b[b.length-1],b.keyup&&(b.keyup.call(b.uiElement,b.dialog,b.key), -a.data.preventDefault())},O=function(a,b,c,e,d){(s[c]||(s[c]=[])).push({uiElement:a,dialog:b,key:c,keyup:d||a.accessKeyUp,keydown:e||a.accessKeyDown})},X=function(a){for(var b in s){for(var c=s[b],e=c.length-1;0<=e;e--)(c[e].dialog==a||c[e].uiElement==a)&&c.splice(e,1);0===c.length&&delete s[b]}},Z=function(a,b){a._.accessKeyMap[b]&&a.selectPage(a._.accessKeyMap[b])},Y=function(){};(function(){CKEDITOR.ui.dialog={uiElement:function(a,b,c,e,d,g,f){if(!(4>arguments.length)){var i=(e.call?e(b):e)||"div", -l=["<",i," "],k=(d&&d.call?d(b):d)||{},h=(g&&g.call?g(b):g)||{},o=(f&&f.call?f.call(this,a,b):f)||"",j=this.domId=h.id||CKEDITOR.tools.getNextId()+"_uiElement";this.id=b.id;b.requiredContent&&!a.getParentEditor().filter.check(b.requiredContent)&&(k.display="none",this.notAllowed=!0);h.id=j;var n={};b.type&&(n["cke_dialog_ui_"+b.type]=1);b.className&&(n[b.className]=1);b.disabled&&(n.cke_disabled=1);for(var m=h["class"]&&h["class"].split?h["class"].split(" "):[],j=0;j<m.length;j++)m[j]&&(n[m[j]]=1); -m=[];for(j in n)m.push(j);h["class"]=m.join(" ");b.title&&(h.title=b.title);n=(b.style||"").split(";");b.align&&(m=b.align,k["margin-left"]="left"==m?0:"auto",k["margin-right"]="right"==m?0:"auto");for(j in k)n.push(j+":"+k[j]);b.hidden&&n.push("display:none");for(j=n.length-1;0<=j;j--)""===n[j]&&n.splice(j,1);0<n.length&&(h.style=(h.style?h.style+"; ":"")+n.join("; "));for(j in h)l.push(j+'="'+CKEDITOR.tools.htmlEncode(h[j])+'" ');l.push(">",o,"</",i,">");c.push(l.join(""));(this._||(this._={})).dialog= -a;"boolean"==typeof b.isChanged&&(this.isChanged=function(){return b.isChanged});"function"==typeof b.isChanged&&(this.isChanged=b.isChanged);"function"==typeof b.setValue&&(this.setValue=CKEDITOR.tools.override(this.setValue,function(a){return function(c){a.call(this,b.setValue.call(this,c))}}));"function"==typeof b.getValue&&(this.getValue=CKEDITOR.tools.override(this.getValue,function(a){return function(){return b.getValue.call(this,a.call(this))}}));CKEDITOR.event.implementOn(this);this.registerEvents(b); -this.accessKeyUp&&(this.accessKeyDown&&b.accessKey)&&O(this,a,"CTRL+"+b.accessKey);var p=this;a.on("load",function(){var b=p.getInputElement();if(b){var c=p.type in{checkbox:1,ratio:1}&&CKEDITOR.env.ie&&CKEDITOR.env.version<8?"cke_dialog_ui_focused":"";b.on("focus",function(){a._.tabBarMode=false;a._.hasFocus=true;p.fire("focus");c&&this.addClass(c)});b.on("blur",function(){p.fire("blur");c&&this.removeClass(c)})}});CKEDITOR.tools.extend(this,b);this.keyboardFocusable&&(this.tabIndex=b.tabIndex|| -0,this.focusIndex=a._.focusList.push(this)-1,this.on("focus",function(){a._.currentFocusIndex=p.focusIndex}))}},hbox:function(a,b,c,e,d){if(!(4>arguments.length)){this._||(this._={});var g=this._.children=b,f=d&&d.widths||null,i=d&&d.height||null,l,k={role:"presentation"};d&&d.align&&(k.align=d.align);CKEDITOR.ui.dialog.uiElement.call(this,a,d||{type:"hbox"},e,"table",{},k,function(){var a=['<tbody><tr class="cke_dialog_ui_hbox">'];for(l=0;l<c.length;l++){var b="cke_dialog_ui_hbox_child",e=[];0=== -l&&(b="cke_dialog_ui_hbox_first");l==c.length-1&&(b="cke_dialog_ui_hbox_last");a.push('<td class="',b,'" role="presentation" ');f?f[l]&&e.push("width:"+r(f[l])):e.push("width:"+Math.floor(100/c.length)+"%");i&&e.push("height:"+r(i));d&&void 0!=d.padding&&e.push("padding:"+r(d.padding));CKEDITOR.env.ie&&(CKEDITOR.env.quirks&&g[l].align)&&e.push("text-align:"+g[l].align);0<e.length&&a.push('style="'+e.join("; ")+'" ');a.push(">",c[l],"</td>")}a.push("</tr></tbody>");return a.join("")})}},vbox:function(a, -b,c,e,d){if(!(3>arguments.length)){this._||(this._={});var g=this._.children=b,f=d&&d.width||null,i=d&&d.heights||null;CKEDITOR.ui.dialog.uiElement.call(this,a,d||{type:"vbox"},e,"div",null,{role:"presentation"},function(){var b=['<table role="presentation" cellspacing="0" border="0" '];b.push('style="');d&&d.expand&&b.push("height:100%;");b.push("width:"+r(f||"100%"),";");CKEDITOR.env.webkit&&b.push("float:none;");b.push('"');b.push('align="',CKEDITOR.tools.htmlEncode(d&&d.align||("ltr"==a.getParentEditor().lang.dir? -"left":"right")),'" ');b.push("><tbody>");for(var e=0;e<c.length;e++){var h=[];b.push('<tr><td role="presentation" ');f&&h.push("width:"+r(f||"100%"));i?h.push("height:"+r(i[e])):d&&d.expand&&h.push("height:"+Math.floor(100/c.length)+"%");d&&void 0!=d.padding&&h.push("padding:"+r(d.padding));CKEDITOR.env.ie&&(CKEDITOR.env.quirks&&g[e].align)&&h.push("text-align:"+g[e].align);0<h.length&&b.push('style="',h.join("; "),'" ');b.push(' class="cke_dialog_ui_vbox_child">',c[e],"</td></tr>")}b.push("</tbody></table>"); -return b.join("")})}}}})();CKEDITOR.ui.dialog.uiElement.prototype={getElement:function(){return CKEDITOR.document.getById(this.domId)},getInputElement:function(){return this.getElement()},getDialog:function(){return this._.dialog},setValue:function(a,b){this.getInputElement().setValue(a);!b&&this.fire("change",{value:a});return this},getValue:function(){return this.getInputElement().getValue()},isChanged:function(){return!1},selectParentTab:function(){for(var a=this.getInputElement();(a=a.getParent())&& --1==a.$.className.search("cke_dialog_page_contents"););if(!a)return this;a=a.getAttribute("name");this._.dialog._.currentTabId!=a&&this._.dialog.selectPage(a);return this},focus:function(){this.selectParentTab().getInputElement().focus();return this},registerEvents:function(a){var b=/^on([A-Z]\w+)/,c,e=function(a,b,c,d){b.on("load",function(){a.getInputElement().on(c,d,a)})},d;for(d in a)if(c=d.match(b))this.eventProcessors[d]?this.eventProcessors[d].call(this,this._.dialog,a[d]):e(this,this._.dialog, -c[1].toLowerCase(),a[d]);return this},eventProcessors:{onLoad:function(a,b){a.on("load",b,this)},onShow:function(a,b){a.on("show",b,this)},onHide:function(a,b){a.on("hide",b,this)}},accessKeyDown:function(){this.focus()},accessKeyUp:function(){},disable:function(){var a=this.getElement();this.getInputElement().setAttribute("disabled","true");a.addClass("cke_disabled")},enable:function(){var a=this.getElement();this.getInputElement().removeAttribute("disabled");a.removeClass("cke_disabled")},isEnabled:function(){return!this.getElement().hasClass("cke_disabled")}, -isVisible:function(){return this.getInputElement().isVisible()},isFocusable:function(){return!this.isEnabled()||!this.isVisible()?!1:!0}};CKEDITOR.ui.dialog.hbox.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{getChild:function(a){if(1>arguments.length)return this._.children.concat();a.splice||(a=[a]);return 2>a.length?this._.children[a[0]]:this._.children[a[0]]&&this._.children[a[0]].getChild?this._.children[a[0]].getChild(a.slice(1,a.length)):null}},!0);CKEDITOR.ui.dialog.vbox.prototype= -new CKEDITOR.ui.dialog.hbox;(function(){var a={build:function(a,c,e){for(var d=c.children,g,f=[],i=[],l=0;l<d.length&&(g=d[l]);l++){var k=[];f.push(k);i.push(CKEDITOR.dialog._.uiElementBuilders[g.type].build(a,g,k))}return new CKEDITOR.ui.dialog[c.type](a,i,f,e,c)}};CKEDITOR.dialog.addUIElement("hbox",a);CKEDITOR.dialog.addUIElement("vbox",a)})();CKEDITOR.dialogCommand=function(a,b){this.dialogName=a;CKEDITOR.tools.extend(this,b,!0)};CKEDITOR.dialogCommand.prototype={exec:function(a){CKEDITOR.env.opera? -CKEDITOR.tools.setTimeout(function(){a.openDialog(this.dialogName)},0,this):a.openDialog(this.dialogName)},canUndo:!1,editorFocus:1};(function(){var a=/^([a]|[^a])+$/,b=/^\d*$/,c=/^\d*(?:\.\d+)?$/,e=/^(((\d*(\.\d+))|(\d*))(px|\%)?)?$/,d=/^(((\d*(\.\d+))|(\d*))(px|em|ex|in|cm|mm|pt|pc|\%)?)?$/i,g=/^(\s*[\w-]+\s*:\s*[^:;]+(?:;|$))*$/;CKEDITOR.VALIDATE_OR=1;CKEDITOR.VALIDATE_AND=2;CKEDITOR.dialog.validate={functions:function(){var a=arguments;return function(){var b=this&&this.getValue?this.getValue(): -a[0],c=void 0,d=CKEDITOR.VALIDATE_AND,e=[],g;for(g=0;g<a.length;g++)if("function"==typeof a[g])e.push(a[g]);else break;g<a.length&&"string"==typeof a[g]&&(c=a[g],g++);g<a.length&&"number"==typeof a[g]&&(d=a[g]);var j=d==CKEDITOR.VALIDATE_AND?!0:!1;for(g=0;g<e.length;g++)j=d==CKEDITOR.VALIDATE_AND?j&&e[g](b):j||e[g](b);return!j?c:!0}},regex:function(a,b){return function(c){c=this&&this.getValue?this.getValue():c;return!a.test(c)?b:!0}},notEmpty:function(b){return this.regex(a,b)},integer:function(a){return this.regex(b, -a)},number:function(a){return this.regex(c,a)},cssLength:function(a){return this.functions(function(a){return d.test(CKEDITOR.tools.trim(a))},a)},htmlLength:function(a){return this.functions(function(a){return e.test(CKEDITOR.tools.trim(a))},a)},inlineStyle:function(a){return this.functions(function(a){return g.test(CKEDITOR.tools.trim(a))},a)},equals:function(a,b){return this.functions(function(b){return b==a},b)},notEqual:function(a,b){return this.functions(function(b){return b!=a},b)}};CKEDITOR.on("instanceDestroyed", -function(a){if(CKEDITOR.tools.isEmpty(CKEDITOR.instances)){for(var b;b=CKEDITOR.dialog._.currentTop;)b.hide();for(var c in w)w[c].remove();w={}}var a=a.editor._.storedDialogs,d;for(d in a)a[d].destroy()})})();CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{openDialog:function(a,b){var c=null,e=CKEDITOR.dialog._.dialogDefinitions[a];null===CKEDITOR.dialog._.currentTop&&J(this);if("function"==typeof e)c=this._.storedDialogs||(this._.storedDialogs={}),c=c[a]||(c[a]=new CKEDITOR.dialog(this,a)),b&&b.call(c, -c),c.show();else{if("failed"==e)throw K(this),Error('[CKEDITOR.dialog.openDialog] Dialog "'+a+'" failed when loading definition.');"string"==typeof e&&CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(e),function(){"function"!=typeof CKEDITOR.dialog._.dialogDefinitions[a]&&(CKEDITOR.dialog._.dialogDefinitions[a]="failed");this.openDialog(a,b)},this,0,1)}CKEDITOR.skin.loadPart("dialog");return c}})})(); -CKEDITOR.plugins.add("dialog",{requires:"dialogui",init:function(t){t.on("doubleclick",function(u){u.data.dialog&&t.openDialog(u.data.dialog)},null,null,999)}});CKEDITOR.plugins.add("about",{requires:"dialog",init:function(a){var b=a.addCommand("about",new CKEDITOR.dialogCommand("about"));b.modes={wysiwyg:1,source:1};b.canUndo=!1;b.readOnly=1;a.ui.addButton&&a.ui.addButton("About",{label:a.lang.about.title,command:"about",toolbar:"about"});CKEDITOR.dialog.add("about",this.path+"dialogs/about.js")}});(function(){CKEDITOR.plugins.add("a11yhelp",{requires:"dialog",availableLangs:{ar:1,bg:1,ca:1,cs:1,cy:1,da:1,de:1,el:1,en:1,eo:1,es:1,et:1,fa:1,fi:1,fr:1,"fr-ca":1,gl:1,gu:1,he:1,hi:1,hr:1,hu:1,id:1,it:1,ja:1,km:1,ko:1,ku:1,lt:1,lv:1,mk:1,mn:1,nb:1,nl:1,no:1,pl:1,pt:1,"pt-br":1,ro:1,ru:1,si:1,sk:1,sl:1,sq:1,sr:1,"sr-latn":1,sv:1,th:1,tr:1,ug:1,uk:1,vi:1,zh:1,"zh-cn":1},init:function(b){var c=this;b.addCommand("a11yHelp",{exec:function(){var a=b.langCode,a=c.availableLangs[a]?a:c.availableLangs[a.replace(/-.*/, -"")]?a.replace(/-.*/,""):"en";CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(c.path+"dialogs/lang/"+a+".js"),function(){b.lang.a11yhelp=c.langEntries[a];b.openDialog("a11yHelp")})},modes:{wysiwyg:1,source:1},readOnly:1,canUndo:!1});b.setKeystroke(CKEDITOR.ALT+48,"a11yHelp");CKEDITOR.dialog.add("a11yHelp",this.path+"dialogs/a11yhelp.js")}})})();CKEDITOR.plugins.add("basicstyles",{init:function(c){var e=0,d=function(g,d,b,a){if(a){var a=new CKEDITOR.style(a),f=h[b];f.unshift(a);c.attachStyleStateChange(a,function(a){!c.readOnly&&c.getCommand(b).setState(a)});c.addCommand(b,new CKEDITOR.styleCommand(a,{contentForms:f}));c.ui.addButton&&c.ui.addButton(g,{label:d,command:b,toolbar:"basicstyles,"+(e+=10)})}},h={bold:["strong","b",["span",function(a){a=a.styles["font-weight"];return"bold"==a||700<=+a}]],italic:["em","i",["span",function(a){return"italic"== -a.styles["font-style"]}]],underline:["u",["span",function(a){return"underline"==a.styles["text-decoration"]}]],strike:["s","strike",["span",function(a){return"line-through"==a.styles["text-decoration"]}]],subscript:["sub"],superscript:["sup"]},b=c.config,a=c.lang.basicstyles;d("Bold",a.bold,"bold",b.coreStyles_bold);d("Italic",a.italic,"italic",b.coreStyles_italic);d("Underline",a.underline,"underline",b.coreStyles_underline);d("Strike",a.strike,"strike",b.coreStyles_strike);d("Subscript",a.subscript, -"subscript",b.coreStyles_subscript);d("Superscript",a.superscript,"superscript",b.coreStyles_superscript);c.setKeystroke([[CKEDITOR.CTRL+66,"bold"],[CKEDITOR.CTRL+73,"italic"],[CKEDITOR.CTRL+85,"underline"]])}});CKEDITOR.config.coreStyles_bold={element:"strong",overrides:"b"};CKEDITOR.config.coreStyles_italic={element:"em",overrides:"i"};CKEDITOR.config.coreStyles_underline={element:"u"};CKEDITOR.config.coreStyles_strike={element:"s",overrides:"strike"};CKEDITOR.config.coreStyles_subscript={element:"sub"}; -CKEDITOR.config.coreStyles_superscript={element:"sup"};(function(){var k={exec:function(g){var a=g.getCommand("blockquote").state,i=g.getSelection(),c=i&&i.getRanges()[0];if(c){var h=i.createBookmarks();if(CKEDITOR.env.ie){var e=h[0].startNode,b=h[0].endNode,d;if(e&&"blockquote"==e.getParent().getName())for(d=e;d=d.getNext();)if(d.type==CKEDITOR.NODE_ELEMENT&&d.isBlockBoundary()){e.move(d,!0);break}if(b&&"blockquote"==b.getParent().getName())for(d=b;d=d.getPrevious();)if(d.type==CKEDITOR.NODE_ELEMENT&&d.isBlockBoundary()){b.move(d);break}}var f=c.createIterator(); -f.enlargeBr=g.config.enterMode!=CKEDITOR.ENTER_BR;if(a==CKEDITOR.TRISTATE_OFF){for(e=[];a=f.getNextParagraph();)e.push(a);1>e.length&&(a=g.document.createElement(g.config.enterMode==CKEDITOR.ENTER_P?"p":"div"),b=h.shift(),c.insertNode(a),a.append(new CKEDITOR.dom.text("",g.document)),c.moveToBookmark(b),c.selectNodeContents(a),c.collapse(!0),b=c.createBookmark(),e.push(a),h.unshift(b));d=e[0].getParent();c=[];for(b=0;b<e.length;b++)a=e[b],d=d.getCommonAncestor(a.getParent());for(a={table:1,tbody:1, -tr:1,ol:1,ul:1};a[d.getName()];)d=d.getParent();for(b=null;0<e.length;){for(a=e.shift();!a.getParent().equals(d);)a=a.getParent();a.equals(b)||c.push(a);b=a}for(;0<c.length;)if(a=c.shift(),"blockquote"==a.getName()){for(b=new CKEDITOR.dom.documentFragment(g.document);a.getFirst();)b.append(a.getFirst().remove()),e.push(b.getLast());b.replace(a)}else e.push(a);c=g.document.createElement("blockquote");for(c.insertBefore(e[0]);0<e.length;)a=e.shift(),c.append(a)}else if(a==CKEDITOR.TRISTATE_ON){b=[]; -for(d={};a=f.getNextParagraph();){for(e=c=null;a.getParent();){if("blockquote"==a.getParent().getName()){c=a.getParent();e=a;break}a=a.getParent()}c&&(e&&!e.getCustomData("blockquote_moveout"))&&(b.push(e),CKEDITOR.dom.element.setMarker(d,e,"blockquote_moveout",!0))}CKEDITOR.dom.element.clearAllMarkers(d);a=[];e=[];for(d={};0<b.length;)f=b.shift(),c=f.getParent(),f.getPrevious()?f.getNext()?(f.breakParent(f.getParent()),e.push(f.getNext())):f.remove().insertAfter(c):f.remove().insertBefore(c),c.getCustomData("blockquote_processed")|| -(e.push(c),CKEDITOR.dom.element.setMarker(d,c,"blockquote_processed",!0)),a.push(f);CKEDITOR.dom.element.clearAllMarkers(d);for(b=e.length-1;0<=b;b--){c=e[b];a:{d=c;for(var f=0,k=d.getChildCount(),j=void 0;f<k&&(j=d.getChild(f));f++)if(j.type==CKEDITOR.NODE_ELEMENT&&j.isBlockBoundary()){d=!1;break a}d=!0}d&&c.remove()}if(g.config.enterMode==CKEDITOR.ENTER_BR)for(c=!0;a.length;)if(f=a.shift(),"div"==f.getName()){b=new CKEDITOR.dom.documentFragment(g.document);c&&(f.getPrevious()&&!(f.getPrevious().type== -CKEDITOR.NODE_ELEMENT&&f.getPrevious().isBlockBoundary()))&&b.append(g.document.createElement("br"));for(c=f.getNext()&&!(f.getNext().type==CKEDITOR.NODE_ELEMENT&&f.getNext().isBlockBoundary());f.getFirst();)f.getFirst().remove().appendTo(b);c&&b.append(g.document.createElement("br"));b.replace(f);c=!1}}i.selectBookmarks(h);g.focus()}},refresh:function(g,a){this.setState(g.elementPath(a.block||a.blockLimit).contains("blockquote",1)?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF)},context:"blockquote", -allowedContent:"blockquote",requiredContent:"blockquote"};CKEDITOR.plugins.add("blockquote",{init:function(g){g.blockless||(g.addCommand("blockquote",k),g.ui.addButton&&g.ui.addButton("Blockquote",{label:g.lang.blockquote.toolbar,command:"blockquote",toolbar:"blocks,10"}))}})})();(function(){function w(b){function a(){var e=b.editable();e.on(q,function(b){(!CKEDITOR.env.ie||!n)&&u(b)});CKEDITOR.env.ie&&e.on("paste",function(e){r||(f(),e.data.preventDefault(),u(e),l("paste")||b.openDialog("paste"))});CKEDITOR.env.ie&&(e.on("contextmenu",h,null,null,0),e.on("beforepaste",function(b){b.data&&!b.data.$.ctrlKey&&h()},null,null,0));e.on("beforecut",function(){!n&&i(b)});var a;e.attachListener(CKEDITOR.env.ie?e:b.document.getDocumentElement(),"mouseup",function(){a=setTimeout(function(){s()}, -0)});b.on("destroy",function(){clearTimeout(a)});e.on("keyup",s)}function c(e){return{type:e,canUndo:"cut"==e,startDisabled:!0,exec:function(){"cut"==this.type&&i();var e;var a=this.type;if(CKEDITOR.env.ie)e=l(a);else try{e=b.document.$.execCommand(a,!1,null)}catch(d){e=!1}e||alert(b.lang.clipboard[this.type+"Error"]);return e}}}function d(){return{canUndo:!1,async:!0,exec:function(b,a){var d=function(a,d){a&&g(a.type,a.dataValue,!!d);b.fire("afterCommandExec",{name:"paste",command:c,returnValue:!!a})}, -c=this;"string"==typeof a?d({type:"auto",dataValue:a},1):b.getClipboardData(d)}}}function f(){r=1;setTimeout(function(){r=0},100)}function h(){n=1;setTimeout(function(){n=0},10)}function l(e){var a=b.document,d=a.getBody(),c=!1,i=function(){c=!0};d.on(e,i);(7<CKEDITOR.env.version?a.$:a.$.selection.createRange()).execCommand(e);d.removeListener(e,i);return c}function g(e,a,d){e={type:e};if(d&&!b.fire("beforePaste",e)||!a)return!1;e.dataValue=a;return b.fire("paste",e)}function i(){if(CKEDITOR.env.ie&& -!CKEDITOR.env.quirks){var e=b.getSelection(),a,d,c;if(e.getType()==CKEDITOR.SELECTION_ELEMENT&&(a=e.getSelectedElement()))d=e.getRanges()[0],c=b.document.createText(""),c.insertBefore(a),d.setStartBefore(c),d.setEndAfter(a),e.selectRanges([d]),setTimeout(function(){a.getParent()&&(c.remove(),e.selectElement(a))},0)}}function k(a,d){var c=b.document,i=b.editable(),k=function(b){b.cancel()},f=CKEDITOR.env.gecko&&10902>=CKEDITOR.env.version,h;if(!c.getById("cke_pastebin")){var o=b.getSelection(),v=o.createBookmarks(), -j=new CKEDITOR.dom.element((CKEDITOR.env.webkit||i.is("body"))&&!CKEDITOR.env.ie&&!CKEDITOR.env.opera?"body":"div",c);j.setAttributes({id:"cke_pastebin","data-cke-temp":"1"});CKEDITOR.env.opera&&j.appendBogus();var g=0,c=c.getWindow();f?(j.insertAfter(v[0].startNode),j.setStyle("display","inline")):(CKEDITOR.env.webkit?(i.append(j),j.addClass("cke_editable"),i.is("body")||(f="static"!=i.getComputedStyle("position")?i:CKEDITOR.dom.element.get(i.$.offsetParent),g=f.getDocumentPosition().y)):i.getAscendant(CKEDITOR.env.ie|| -CKEDITOR.env.opera?"body":"html",1).append(j),j.setStyles({position:"absolute",top:c.getScrollPosition().y-g+10+"px",width:"1px",height:Math.max(1,c.getViewPaneSize().height-20)+"px",overflow:"hidden",margin:0,padding:0}));(f=j.getParent().isReadOnly())?(j.setOpacity(0),j.setAttribute("contenteditable",!0)):j.setStyle("ltr"==b.config.contentsLangDirection?"left":"right","-1000px");b.on("selectionChange",k,null,null,0);CKEDITOR.env.webkit&&(h=i.once("blur",k,null,null,-100));f&&j.focus();f=new CKEDITOR.dom.range(j); -f.selectNodeContents(j);var l=f.select();CKEDITOR.env.ie&&(h=i.once("blur",function(){b.lockSelection(l)}));var m=CKEDITOR.document.getWindow().getScrollPosition().y;setTimeout(function(){if(CKEDITOR.env.webkit||CKEDITOR.env.opera)CKEDITOR.document[CKEDITOR.env.webkit?"getBody":"getDocumentElement"]().$.scrollTop=m;h&&h.removeListener();CKEDITOR.env.ie&&i.focus();o.selectBookmarks(v);j.remove();var a;if(CKEDITOR.env.webkit&&(a=j.getFirst())&&a.is&&a.hasClass("Apple-style-span"))j=a;b.removeListener("selectionChange", -k);d(j.getHtml())},0)}}function o(){if(CKEDITOR.env.ie){b.focus();f();var a=b.focusManager;a.lock();if(b.editable().fire(q)&&!l("paste"))return a.unlock(),!1;a.unlock()}else try{if(b.editable().fire(q)&&!b.document.$.execCommand("Paste",!1,null))throw 0;}catch(d){return!1}return!0}function p(a){if("wysiwyg"==b.mode)switch(a.data.keyCode){case CKEDITOR.CTRL+86:case CKEDITOR.SHIFT+45:a=b.editable();f();!CKEDITOR.env.ie&&a.fire("beforepaste");(CKEDITOR.env.opera||CKEDITOR.env.gecko&&10900>CKEDITOR.env.version)&& -a.fire("paste");break;case CKEDITOR.CTRL+88:case CKEDITOR.SHIFT+46:b.fire("saveSnapshot"),setTimeout(function(){b.fire("saveSnapshot")},0)}}function u(a){var d={type:"auto"},c=b.fire("beforePaste",d);k(a,function(b){b=b.replace(/<span[^>]+data-cke-bookmark[^<]*?<\/span>/ig,"");c&&g(d.type,b,0,1)})}function s(){if("wysiwyg"==b.mode){var a=m("paste");b.getCommand("cut").setState(m("cut"));b.getCommand("copy").setState(m("copy"));b.getCommand("paste").setState(a);b.fire("pasteState",a)}}function m(a){if(t&& -a in{paste:1,cut:1})return CKEDITOR.TRISTATE_DISABLED;if("paste"==a)return CKEDITOR.TRISTATE_OFF;var a=b.getSelection(),d=a.getRanges();return a.getType()==CKEDITOR.SELECTION_NONE||1==d.length&&d[0].collapsed?CKEDITOR.TRISTATE_DISABLED:CKEDITOR.TRISTATE_OFF}var n=0,r=0,t=0,q=CKEDITOR.env.ie?"beforepaste":"paste";(function(){b.on("key",p);b.on("contentDom",a);b.on("selectionChange",function(a){t=a.data.selection.getRanges()[0].checkReadOnly();s()});b.contextMenu&&b.contextMenu.addListener(function(a, -b){t=b.getRanges()[0].checkReadOnly();return{cut:m("cut"),copy:m("copy"),paste:m("paste")}})})();(function(){function a(d,c,i,e,f){var k=b.lang.clipboard[c];b.addCommand(c,i);b.ui.addButton&&b.ui.addButton(d,{label:k,command:c,toolbar:"clipboard,"+e});b.addMenuItems&&b.addMenuItem(c,{label:k,command:c,group:"clipboard",order:f})}a("Cut","cut",c("cut"),10,1);a("Copy","copy",c("copy"),20,4);a("Paste","paste",d(),30,8)})();b.getClipboardData=function(a,d){function c(a){a.removeListener();a.cancel(); -d(a.data)}function i(a){a.removeListener();a.cancel();g=!0;d({type:h,dataValue:a.data})}function f(){this.customTitle=a&&a.title}var k=!1,h="auto",g=!1;d||(d=a,a=null);b.on("paste",c,null,null,0);b.on("beforePaste",function(a){a.removeListener();k=true;h=a.data.type},null,null,1E3);!1===o()&&(b.removeListener("paste",c),k&&b.fire("pasteDialog",f)?(b.on("pasteDialogCommit",i),b.on("dialogHide",function(a){a.removeListener();a.data.removeListener("pasteDialogCommit",i);setTimeout(function(){g||d(null)}, -10)})):d(null))}}function x(b){if(CKEDITOR.env.webkit){if(!b.match(/^[^<]*$/g)&&!b.match(/^(<div><br( ?\/)?><\/div>|<div>[^<]*<\/div>)*$/gi))return"html"}else if(CKEDITOR.env.ie){if(!b.match(/^([^<]|<br( ?\/)?>)*$/gi)&&!b.match(/^(<p>([^<]|<br( ?\/)?>)*<\/p>|(\r\n))*$/gi))return"html"}else if(CKEDITOR.env.gecko||CKEDITOR.env.opera){if(!b.match(/^([^<]|<br( ?\/)?>)*$/gi))return"html"}else return"html";return"htmlifiedtext"}function y(b,a){function c(a){return CKEDITOR.tools.repeat("</p><p>",~~(a/2))+ -(1==a%2?"<br>":"")}a=a.replace(/\s+/g," ").replace(/> +</g,"><").replace(/<br ?\/>/gi,"<br>");a=a.replace(/<\/?[A-Z]+>/g,function(a){return a.toLowerCase()});if(a.match(/^[^<]$/))return a;CKEDITOR.env.webkit&&-1<a.indexOf("<div>")&&(a=a.replace(/^(<div>(<br>|)<\/div>)(?!$|(<div>(<br>|)<\/div>))/g,"<br>").replace(/^(<div>(<br>|)<\/div>){2}(?!$)/g,"<div></div>"),a.match(/<div>(<br>|)<\/div>/)&&(a="<p>"+a.replace(/(<div>(<br>|)<\/div>)+/g,function(a){return c(a.split("</div><div>").length+1)})+"</p>"), -a=a.replace(/<\/div><div>/g,"<br>"),a=a.replace(/<\/?div>/g,""));if((CKEDITOR.env.gecko||CKEDITOR.env.opera)&&b.enterMode!=CKEDITOR.ENTER_BR)CKEDITOR.env.gecko&&(a=a.replace(/^<br><br>$/,"<br>")),-1<a.indexOf("<br><br>")&&(a="<p>"+a.replace(/(<br>){2,}/g,function(a){return c(a.length/4)})+"</p>");return p(b,a)}function z(){var b=new CKEDITOR.htmlParser.filter,a={blockquote:1,dl:1,fieldset:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,ol:1,p:1,table:1,ul:1},c=CKEDITOR.tools.extend({br:0},CKEDITOR.dtd.$inline),d= -{p:1,br:1,"cke:br":1},f=CKEDITOR.dtd,h=CKEDITOR.tools.extend({area:1,basefont:1,embed:1,iframe:1,map:1,object:1,param:1},CKEDITOR.dtd.$nonBodyContent,CKEDITOR.dtd.$cdata),l=function(a){delete a.name;a.add(new CKEDITOR.htmlParser.text(" "))},g=function(a){for(var b=a,c;(b=b.next)&&b.name&&b.name.match(/^h\d$/);){c=new CKEDITOR.htmlParser.element("cke:br");c.isEmpty=!0;for(a.add(c);c=b.children.shift();)a.add(c)}};b.addRules({elements:{h1:g,h2:g,h3:g,h4:g,h5:g,h6:g,img:function(a){var a=CKEDITOR.tools.trim(a.attributes.alt|| -""),b=" ";a&&!a.match(/(^http|\.(jpe?g|gif|png))/i)&&(b=" ["+a+"] ");return new CKEDITOR.htmlParser.text(b)},td:l,th:l,$:function(b){var k=b.name,g;if(h[k])return!1;b.attributes=[];if("br"==k)return b;if(a[k])b.name="p";else if(c[k])delete b.name;else if(f[k]){g=new CKEDITOR.htmlParser.element("cke:br");g.isEmpty=!0;if(CKEDITOR.dtd.$empty[k])return g;b.add(g,0);g=g.clone();g.isEmpty=!0;b.add(g);delete b.name}d[b.name]||delete b.name;return b}}},{applyToAll:!0});return b}function A(b,a,c){var a=new CKEDITOR.htmlParser.fragment.fromHtml(a), -d=new CKEDITOR.htmlParser.basicWriter;a.writeHtml(d,c);var a=d.getHtml(),a=a.replace(/\s*(<\/?[a-z:]+ ?\/?>)\s*/g,"$1").replace(/(<cke:br \/>){2,}/g,"<cke:br />").replace(/(<cke:br \/>)(<\/?p>|<br \/>)/g,"$2").replace(/(<\/?p>|<br \/>)(<cke:br \/>)/g,"$1").replace(/<(cke:)?br( \/)?>/g,"<br>").replace(/<p><\/p>/g,""),f=0,a=a.replace(/<\/?p>/g,function(a){if("<p>"==a){if(1<++f)return"</p><p>"}else if(0<--f)return"</p><p>";return a}).replace(/<p><\/p>/g,"");return p(b,a)}function p(b,a){b.enterMode== -CKEDITOR.ENTER_BR?a=a.replace(/(<\/p><p>)+/g,function(a){return CKEDITOR.tools.repeat("<br>",2*(a.length/7))}).replace(/<\/?p>/g,""):b.enterMode==CKEDITOR.ENTER_DIV&&(a=a.replace(/<(\/)?p>/g,"<$1div>"));return a}CKEDITOR.plugins.add("clipboard",{requires:"dialog",init:function(b){var a;w(b);CKEDITOR.dialog.add("paste",CKEDITOR.getUrl(this.path+"dialogs/paste.js"));b.on("paste",function(a){var b=a.data.dataValue,f=CKEDITOR.dtd.$block;-1<b.indexOf("Apple-")&&(b=b.replace(/<span class="Apple-converted-space">&nbsp;<\/span>/gi, -" "),"html"!=a.data.type&&(b=b.replace(/<span class="Apple-tab-span"[^>]*>([^<]*)<\/span>/gi,function(a,b){return b.replace(/\t/g,"&nbsp;&nbsp; &nbsp;")})),-1<b.indexOf('<br class="Apple-interchange-newline">')&&(a.data.startsWithEOL=1,a.data.preSniffing="html",b=b.replace(/<br class="Apple-interchange-newline">/,"")),b=b.replace(/(<[^>]+) class="Apple-[^"]*"/gi,"$1"));if(b.match(/^<[^<]+cke_(editable|contents)/i)){var h,l,g=new CKEDITOR.dom.element("div");for(g.setHtml(b);1==g.getChildCount()&&(h= -g.getFirst())&&h.type==CKEDITOR.NODE_ELEMENT&&(h.hasClass("cke_editable")||h.hasClass("cke_contents"));)g=l=h;l&&(b=l.getHtml().replace(/<br>$/i,""))}CKEDITOR.env.ie?b=b.replace(/^&nbsp;(?: |\r\n)?<(\w+)/g,function(b,d){if(d.toLowerCase()in f){a.data.preSniffing="html";return"<"+d}return b}):CKEDITOR.env.webkit?b=b.replace(/<\/(\w+)><div><br><\/div>$/,function(b,d){if(d in f){a.data.endsWithEOL=1;return"</"+d+">"}return b}):CKEDITOR.env.gecko&&(b=b.replace(/(\s)<br>$/,"$1"));a.data.dataValue=b},null, -null,3);b.on("paste",function(c){var c=c.data,d=c.type,f=c.dataValue,h,l=b.config.clipboard_defaultContentType||"html";h="html"==d||"html"==c.preSniffing?"html":x(f);"htmlifiedtext"==h?f=y(b.config,f):"text"==d&&"html"==h&&(f=A(b.config,f,a||(a=z(b))));c.startsWithEOL&&(f='<br data-cke-eol="1">'+f);c.endsWithEOL&&(f+='<br data-cke-eol="1">');"auto"==d&&(d="html"==h||"html"==l?"html":"text");c.type=d;c.dataValue=f;delete c.preSniffing;delete c.startsWithEOL;delete c.endsWithEOL},null,null,6);b.on("paste", -function(a){a=a.data;b.insertHtml(a.dataValue,a.type);setTimeout(function(){b.fire("afterPaste")},0)},null,null,1E3);b.on("pasteDialog",function(a){setTimeout(function(){b.openDialog("paste",a.data)},0)})}})})();(function(){CKEDITOR.plugins.add("panel",{beforeInit:function(a){a.ui.addHandler(CKEDITOR.UI_PANEL,CKEDITOR.ui.panel.handler)}});CKEDITOR.UI_PANEL="panel";CKEDITOR.ui.panel=function(a,b){b&&CKEDITOR.tools.extend(this,b);CKEDITOR.tools.extend(this,{className:"",css:[]});this.id=CKEDITOR.tools.getNextId();this.document=a;this.isFramed=this.forceIFrame||this.css.length;this._={blocks:{}}};CKEDITOR.ui.panel.handler={create:function(a){return new CKEDITOR.ui.panel(a)}};var f=CKEDITOR.addTemplate("panel", -'<div lang="{langCode}" id="{id}" dir={dir} class="cke cke_reset_all {editorId} cke_panel cke_panel {cls} cke_{dir}" style="z-index:{z-index}" role="presentation">{frame}</div>'),g=CKEDITOR.addTemplate("panel-frame",'<iframe id="{id}" class="cke_panel_frame" role="presentation" frameborder="0" src="{src}"></iframe>'),h=CKEDITOR.addTemplate("panel-frame-inner",'<!DOCTYPE html><html class="cke_panel_container {env}" dir="{dir}" lang="{langCode}"><head>{css}</head><body class="cke_{dir}" style="margin:0;padding:0" onload="{onload}"></body></html>'); -CKEDITOR.ui.panel.prototype={render:function(a,b){this.getHolderElement=function(){var a=this._.holder;if(!a){if(this.isFramed){var a=this.document.getById(this.id+"_frame"),b=a.getParent(),a=a.getFrameDocument();CKEDITOR.env.iOS&&b.setStyles({overflow:"scroll","-webkit-overflow-scrolling":"touch"});b=CKEDITOR.tools.addFunction(CKEDITOR.tools.bind(function(){this.isLoaded=!0;if(this.onLoad)this.onLoad()},this));a.write(h.output(CKEDITOR.tools.extend({css:CKEDITOR.tools.buildStyleHtml(this.css),onload:"window.parent.CKEDITOR.tools.callFunction("+ -b+");"},d)));a.getWindow().$.CKEDITOR=CKEDITOR;a.on("key"+(CKEDITOR.env.opera?"press":"down"),function(a){var b=a.data.getKeystroke(),c=this.document.getById(this.id).getAttribute("dir");this._.onKeyDown&&!1===this._.onKeyDown(b)?a.data.preventDefault():(27==b||b==("rtl"==c?39:37))&&this.onEscape&&!1===this.onEscape(b)&&a.data.preventDefault()},this);a=a.getBody();a.unselectable();CKEDITOR.env.air&&CKEDITOR.tools.callFunction(b)}else a=this.document.getById(this.id);this._.holder=a}return a};var d= -{editorId:a.id,id:this.id,langCode:a.langCode,dir:a.lang.dir,cls:this.className,frame:"",env:CKEDITOR.env.cssClass,"z-index":a.config.baseFloatZIndex+1};if(this.isFramed){var e=CKEDITOR.env.air?"javascript:void(0)":CKEDITOR.env.ie?"javascript:void(function(){"+encodeURIComponent("document.open();("+CKEDITOR.tools.fixDomain+")();document.close();")+"}())":"";d.frame=g.output({id:this.id+"_frame",src:e})}e=f.output(d);b&&b.push(e);return e},addBlock:function(a,b){b=this._.blocks[a]=b instanceof CKEDITOR.ui.panel.block? -b:new CKEDITOR.ui.panel.block(this.getHolderElement(),b);this._.currentBlock||this.showBlock(a);return b},getBlock:function(a){return this._.blocks[a]},showBlock:function(a){var a=this._.blocks[a],b=this._.currentBlock,d=!this.forceIFrame||CKEDITOR.env.ie?this._.holder:this.document.getById(this.id+"_frame");b&&b.hide();this._.currentBlock=a;CKEDITOR.fire("ariaWidget",d);a._.focusIndex=-1;this._.onKeyDown=a.onKeyDown&&CKEDITOR.tools.bind(a.onKeyDown,a);a.show();return a},destroy:function(){this.element&& -this.element.remove()}};CKEDITOR.ui.panel.block=CKEDITOR.tools.createClass({$:function(a,b){this.element=a.append(a.getDocument().createElement("div",{attributes:{tabindex:-1,"class":"cke_panel_block"},styles:{display:"none"}}));b&&CKEDITOR.tools.extend(this,b);this.element.setAttributes({role:this.attributes.role||"presentation","aria-label":this.attributes["aria-label"],title:this.attributes.title||this.attributes["aria-label"]});this.keys={};this._.focusIndex=-1;this.element.disableContextMenu()}, -_:{markItem:function(a){-1!=a&&(a=this.element.getElementsByTag("a").getItem(this._.focusIndex=a),(CKEDITOR.env.webkit||CKEDITOR.env.opera)&&a.getDocument().getWindow().focus(),a.focus(),this.onMark&&this.onMark(a))}},proto:{show:function(){this.element.setStyle("display","")},hide:function(){(!this.onHide||!0!==this.onHide.call(this))&&this.element.setStyle("display","none")},onKeyDown:function(a,b){var d=this.keys[a];switch(d){case "next":for(var e=this._.focusIndex,d=this.element.getElementsByTag("a"), -c;c=d.getItem(++e);)if(c.getAttribute("_cke_focus")&&c.$.offsetWidth){this._.focusIndex=e;c.focus();break}return!c&&!b?(this._.focusIndex=-1,this.onKeyDown(a,1)):!1;case "prev":e=this._.focusIndex;for(d=this.element.getElementsByTag("a");0<e&&(c=d.getItem(--e));){if(c.getAttribute("_cke_focus")&&c.$.offsetWidth){this._.focusIndex=e;c.focus();break}c=null}return!c&&!b?(this._.focusIndex=d.count(),this.onKeyDown(a,1)):!1;case "click":case "mouseup":return e=this._.focusIndex,(c=0<=e&&this.element.getElementsByTag("a").getItem(e))&& -(c.$[d]?c.$[d]():c.$["on"+d]()),!1}return!0}}})})();CKEDITOR.plugins.add("floatpanel",{requires:"panel"}); -(function(){function q(a,b,c,i,f){var f=CKEDITOR.tools.genKey(b.getUniqueId(),c.getUniqueId(),a.lang.dir,a.uiColor||"",i.css||"",f||""),h=g[f];h||(h=g[f]=new CKEDITOR.ui.panel(b,i),h.element=c.append(CKEDITOR.dom.element.createFromHtml(h.render(a),b)),h.element.setStyles({display:"none",position:"absolute"}));return h}var g={};CKEDITOR.ui.floatPanel=CKEDITOR.tools.createClass({$:function(a,b,c,i){function f(){d.hide()}c.forceIFrame=1;c.toolbarRelated&&a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE&& -(b=CKEDITOR.document.getById("cke_"+a.name));var h=b.getDocument(),i=q(a,h,b,c,i||0),j=i.element,l=j.getFirst(),d=this;j.disableContextMenu();this.element=j;this._={editor:a,panel:i,parentElement:b,definition:c,document:h,iframe:l,children:[],dir:a.lang.dir};a.on("mode",f);a.on("resize",f);h.getWindow().on("resize",f)},proto:{addBlock:function(a,b){return this._.panel.addBlock(a,b)},addListBlock:function(a,b){return this._.panel.addListBlock(a,b)},getBlock:function(a){return this._.panel.getBlock(a)}, -showBlock:function(a,b,c,i,f,h){var j=this._.panel,l=j.showBlock(a);this.allowBlur(!1);a=this._.editor.editable();this._.returnFocus=a.hasFocus?a:new CKEDITOR.dom.element(CKEDITOR.document.$.activeElement);var d=this.element,a=this._.iframe,a=CKEDITOR.env.ie?a:new CKEDITOR.dom.window(a.$.contentWindow),g=d.getDocument(),o=this._.parentElement.getPositionedAncestor(),p=b.getDocumentPosition(g),g=o?o.getDocumentPosition(g):{x:0,y:0},m="rtl"==this._.dir,e=p.x+(i||0)-g.x,k=p.y+(f||0)-g.y;if(m&&(1==c|| -4==c))e+=b.$.offsetWidth;else if(!m&&(2==c||3==c))e+=b.$.offsetWidth-1;if(3==c||4==c)k+=b.$.offsetHeight-1;this._.panel._.offsetParentId=b.getId();d.setStyles({top:k+"px",left:0,display:""});d.setOpacity(0);d.getFirst().removeStyle("width");this._.editor.focusManager.add(a);this._.blurSet||(CKEDITOR.event.useCapture=!0,a.on("blur",function(a){this.allowBlur()&&a.data.getPhase()==CKEDITOR.EVENT_PHASE_AT_TARGET&&(this.visible&&!this._.activeChild)&&(delete this._.returnFocus,this.hide())},this),a.on("focus", -function(){this._.focused=!0;this.hideChild();this.allowBlur(!0)},this),CKEDITOR.event.useCapture=!1,this._.blurSet=1);j.onEscape=CKEDITOR.tools.bind(function(a){if(this.onEscape&&this.onEscape(a)===false)return false},this);CKEDITOR.tools.setTimeout(function(){var a=CKEDITOR.tools.bind(function(){d.removeStyle("width");if(l.autoSize){var a=l.element.getDocument(),a=(CKEDITOR.env.webkit?l.element:a.getBody()).$.scrollWidth;CKEDITOR.env.ie&&(CKEDITOR.env.quirks&&a>0)&&(a=a+((d.$.offsetWidth||0)-(d.$.clientWidth|| -0)+3));d.setStyle("width",a+10+"px");a=l.element.$.scrollHeight;CKEDITOR.env.ie&&(CKEDITOR.env.quirks&&a>0)&&(a=a+((d.$.offsetHeight||0)-(d.$.clientHeight||0)+3));d.setStyle("height",a+"px");j._.currentBlock.element.setStyle("display","none").removeStyle("display")}else d.removeStyle("height");m&&(e=e-d.$.offsetWidth);d.setStyle("left",e+"px");var b=j.element.getWindow(),a=d.$.getBoundingClientRect(),b=b.getViewPaneSize(),c=a.width||a.right-a.left,f=a.height||a.bottom-a.top,i=m?a.right:b.width-a.left, -g=m?b.width-a.right:a.left;m?i<c&&(e=g>c?e+c:b.width>c?e-a.left:e-a.right+b.width):i<c&&(e=g>c?e-c:b.width>c?e-a.right+b.width:e-a.left);c=a.top;b.height-a.top<f&&(k=c>f?k-f:b.height>f?k-a.bottom+b.height:k-a.top);if(CKEDITOR.env.ie){b=a=new CKEDITOR.dom.element(d.$.offsetParent);b.getName()=="html"&&(b=b.getDocument().getBody());b.getComputedStyle("direction")=="rtl"&&(e=CKEDITOR.env.ie8Compat?e-d.getDocument().getDocumentElement().$.scrollLeft*2:e-(a.$.scrollWidth-a.$.clientWidth))}var a=d.getFirst(), -n;(n=a.getCustomData("activePanel"))&&n.onHide&&n.onHide.call(this,1);a.setCustomData("activePanel",this);d.setStyles({top:k+"px",left:e+"px"});d.setOpacity(1);h&&h()},this);j.isLoaded?a():j.onLoad=a;CKEDITOR.tools.setTimeout(function(){var a=CKEDITOR.env.webkit&&CKEDITOR.document.getWindow().getScrollPosition().y;this.focus();l.element.focus();if(CKEDITOR.env.webkit)CKEDITOR.document.getBody().$.scrollTop=a;this.allowBlur(true);this._.editor.fire("panelShow",this)},0,this)},CKEDITOR.env.air?200: -0,this);this.visible=1;this.onShow&&this.onShow.call(this)},focus:function(){if(CKEDITOR.env.webkit){var a=CKEDITOR.document.getActive();!a.equals(this._.iframe)&&a.$.blur()}(this._.lastFocused||this._.iframe.getFrameDocument().getWindow()).focus()},blur:function(){var a=this._.iframe.getFrameDocument().getActive();a.is("a")&&(this._.lastFocused=a)},hide:function(a){if(this.visible&&(!this.onHide||!0!==this.onHide.call(this))){this.hideChild();CKEDITOR.env.gecko&&this._.iframe.getFrameDocument().$.activeElement.blur(); -this.element.setStyle("display","none");this.visible=0;this.element.getFirst().removeCustomData("activePanel");if(a=a&&this._.returnFocus)CKEDITOR.env.webkit&&a.type&&a.getWindow().$.focus(),a.focus();delete this._.lastFocused;this._.editor.fire("panelHide",this)}},allowBlur:function(a){var b=this._.panel;void 0!=a&&(b.allowBlur=a);return b.allowBlur},showAsChild:function(a,b,c,g,f,h){this._.activeChild==a&&a._.panel._.offsetParentId==c.getId()||(this.hideChild(),a.onHide=CKEDITOR.tools.bind(function(){CKEDITOR.tools.setTimeout(function(){this._.focused|| -this.hide()},0,this)},this),this._.activeChild=a,this._.focused=!1,a.showBlock(b,c,g,f,h),this.blur(),(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)&&setTimeout(function(){a.element.getChild(0).$.style.cssText+=""},100))},hideChild:function(a){var b=this._.activeChild;b&&(delete b.onHide,delete this._.activeChild,b.hide(),a&&this.focus())}}});CKEDITOR.on("instanceDestroyed",function(){var a=CKEDITOR.tools.isEmpty(CKEDITOR.instances),b;for(b in g){var c=g[b];a?c.destroy():c.element.hide()}a&&(g= -{})})})();CKEDITOR.plugins.add("menu",{requires:"floatpanel",beforeInit:function(g){for(var h=g.config.menu_groups.split(","),m=g._.menuGroups={},l=g._.menuItems={},a=0;a<h.length;a++)m[h[a]]=a+1;g.addMenuGroup=function(b,a){m[b]=a||100};g.addMenuItem=function(a,c){m[c.group]&&(l[a]=new CKEDITOR.menuItem(this,a,c))};g.addMenuItems=function(a){for(var c in a)this.addMenuItem(c,a[c])};g.getMenuItem=function(a){return l[a]};g.removeMenuItem=function(a){delete l[a]}}}); -(function(){function g(a){a.sort(function(a,c){return a.group<c.group?-1:a.group>c.group?1:a.order<c.order?-1:a.order>c.order?1:0})}var h='<span class="cke_menuitem"><a id="{id}" class="cke_menubutton cke_menubutton__{name} cke_menubutton_{state} {cls}" href="{href}" title="{title}" tabindex="-1"_cke_focus=1 hidefocus="true" role="{role}" aria-haspopup="{hasPopup}" aria-disabled="{disabled}" {ariaChecked}';if(CKEDITOR.env.opera||CKEDITOR.env.gecko&&CKEDITOR.env.mac)h+=' onkeypress="return false;"'; -CKEDITOR.env.gecko&&(h+=' onblur="this.style.cssText = this.style.cssText;"');var h=h+(' onmouseover="CKEDITOR.tools.callFunction({hoverFn},{index});" onmouseout="CKEDITOR.tools.callFunction({moveOutFn},{index});" '+(CKEDITOR.env.ie?'onclick="return false;" onmouseup':"onclick")+'="CKEDITOR.tools.callFunction({clickFn},{index}); return false;">'),m=CKEDITOR.addTemplate("menuItem",h+'<span class="cke_menubutton_inner"><span class="cke_menubutton_icon"><span class="cke_button_icon cke_button__{iconName}_icon" style="{iconStyle}"></span></span><span class="cke_menubutton_label">{label}</span>{arrowHtml}</span></a></span>'), -l=CKEDITOR.addTemplate("menuArrow",'<span class="cke_menuarrow"><span>{label}</span></span>');CKEDITOR.menu=CKEDITOR.tools.createClass({$:function(a,b){b=this._.definition=b||{};this.id=CKEDITOR.tools.getNextId();this.editor=a;this.items=[];this._.listeners=[];this._.level=b.level||1;var c=CKEDITOR.tools.extend({},b.panel,{css:[CKEDITOR.skin.getPath("editor")],level:this._.level-1,block:{}}),k=c.block.attributes=c.attributes||{};!k.role&&(k.role="menu");this._.panelDefinition=c},_:{onShow:function(){var a= -this.editor.getSelection(),b=a&&a.getStartElement(),c=this.editor.elementPath(),k=this._.listeners;this.removeAll();for(var e=0;e<k.length;e++){var j=k[e](b,a,c);if(j)for(var i in j){var f=this.editor.getMenuItem(i);if(f&&(!f.command||this.editor.getCommand(f.command).state))f.state=j[i],this.add(f)}}},onClick:function(a){this.hide();if(a.onClick)a.onClick();else a.command&&this.editor.execCommand(a.command)},onEscape:function(a){var b=this.parent;b?b._.panel.hideChild(1):27==a&&this.hide(1);return!1}, -onHide:function(){this.onHide&&this.onHide()},showSubMenu:function(a){var b=this._.subMenu,c=this.items[a];if(c=c.getItems&&c.getItems()){b?b.removeAll():(b=this._.subMenu=new CKEDITOR.menu(this.editor,CKEDITOR.tools.extend({},this._.definition,{level:this._.level+1},!0)),b.parent=this,b._.onClick=CKEDITOR.tools.bind(this._.onClick,this));for(var k in c){var e=this.editor.getMenuItem(k);e&&(e.state=c[k],b.add(e))}var j=this._.panel.getBlock(this.id).element.getDocument().getById(this.id+(""+a));setTimeout(function(){b.show(j, -2)},0)}else this._.panel.hideChild(1)}},proto:{add:function(a){a.order||(a.order=this.items.length);this.items.push(a)},removeAll:function(){this.items=[]},show:function(a,b,c,k){if(!this.parent&&(this._.onShow(),!this.items.length))return;var b=b||("rtl"==this.editor.lang.dir?2:1),e=this.items,j=this.editor,i=this._.panel,f=this._.element;if(!i){i=this._.panel=new CKEDITOR.ui.floatPanel(this.editor,CKEDITOR.document.getBody(),this._.panelDefinition,this._.level);i.onEscape=CKEDITOR.tools.bind(function(a){if(!1=== -this._.onEscape(a))return!1},this);i.onShow=function(){i._.panel.getHolderElement().getParent().addClass("cke cke_reset_all")};i.onHide=CKEDITOR.tools.bind(function(){this._.onHide&&this._.onHide()},this);f=i.addBlock(this.id,this._.panelDefinition.block);f.autoSize=!0;var d=f.keys;d[40]="next";d[9]="next";d[38]="prev";d[CKEDITOR.SHIFT+9]="prev";d["rtl"==j.lang.dir?37:39]=CKEDITOR.env.ie?"mouseup":"click";d[32]=CKEDITOR.env.ie?"mouseup":"click";CKEDITOR.env.ie&&(d[13]="mouseup");f=this._.element= -f.element;d=f.getDocument();d.getBody().setStyle("overflow","hidden");d.getElementsByTag("html").getItem(0).setStyle("overflow","hidden");this._.itemOverFn=CKEDITOR.tools.addFunction(function(a){clearTimeout(this._.showSubTimeout);this._.showSubTimeout=CKEDITOR.tools.setTimeout(this._.showSubMenu,j.config.menu_subMenuDelay||400,this,[a])},this);this._.itemOutFn=CKEDITOR.tools.addFunction(function(){clearTimeout(this._.showSubTimeout)},this);this._.itemClickFn=CKEDITOR.tools.addFunction(function(a){var b= -this.items[a];if(b.state==CKEDITOR.TRISTATE_DISABLED)this.hide(1);else if(b.getItems)this._.showSubMenu(a);else this._.onClick(b)},this)}g(e);for(var d=j.elementPath(),d=['<div class="cke_menu'+(d&&d.direction()!=j.lang.dir?" cke_mixed_dir_content":"")+'" role="presentation">'],h=e.length,m=h&&e[0].group,l=0;l<h;l++){var n=e[l];m!=n.group&&(d.push('<div class="cke_menuseparator" role="separator"></div>'),m=n.group);n.render(this,l,d)}d.push("</div>");f.setHtml(d.join(""));CKEDITOR.ui.fire("ready", -this);this.parent?this.parent._.panel.showAsChild(i,this.id,a,b,c,k):i.showBlock(this.id,a,b,c,k);j.fire("menuShow",[i])},addListener:function(a){this._.listeners.push(a)},hide:function(a){this._.onHide&&this._.onHide();this._.panel&&this._.panel.hide(a)}}});CKEDITOR.menuItem=CKEDITOR.tools.createClass({$:function(a,b,c){CKEDITOR.tools.extend(this,c,{order:0,className:"cke_menubutton__"+b});this.group=a._.menuGroups[this.group];this.editor=a;this.name=b},proto:{render:function(a,b,c){var h=a.id+(""+ -b),e="undefined"==typeof this.state?CKEDITOR.TRISTATE_OFF:this.state,j="",i=e==CKEDITOR.TRISTATE_ON?"on":e==CKEDITOR.TRISTATE_DISABLED?"disabled":"off";this.role in{menuitemcheckbox:1,menuitemradio:1}&&(j=' aria-checked="'+(e==CKEDITOR.TRISTATE_ON?"true":"false")+'"');var f=this.getItems,d="&#"+("rtl"==this.editor.lang.dir?"9668":"9658")+";",g=this.name;this.icon&&!/\./.test(this.icon)&&(g=this.icon);a={id:h,name:this.name,iconName:g,label:this.label,cls:this.className||"",state:i,hasPopup:f?"true": -"false",disabled:e==CKEDITOR.TRISTATE_DISABLED,title:this.label,href:"javascript:void('"+(this.label||"").replace("'")+"')",hoverFn:a._.itemOverFn,moveOutFn:a._.itemOutFn,clickFn:a._.itemClickFn,index:b,iconStyle:CKEDITOR.skin.getIconStyle(g,"rtl"==this.editor.lang.dir,g==this.icon?null:this.icon,this.iconOffset),arrowHtml:f?l.output({label:d}):"",role:this.role?this.role:"menuitem",ariaChecked:j};m.output(a,c)}}})})();CKEDITOR.config.menu_groups="clipboard,form,tablecell,tablecellproperties,tablerow,tablecolumn,table,anchor,link,image,flash,checkbox,radio,textfield,hiddenfield,imagebutton,button,select,textarea,div";CKEDITOR.plugins.add("contextmenu",{requires:"menu",onLoad:function(){CKEDITOR.plugins.contextMenu=CKEDITOR.tools.createClass({base:CKEDITOR.menu,$:function(a){this.base.call(this,a,{panel:{className:"cke_menu_panel",attributes:{"aria-label":a.lang.contextmenu.options}}})},proto:{addTarget:function(a,c){a.on("contextmenu",function(a){var a=a.data,b=CKEDITOR.env.webkit?d:CKEDITOR.env.mac?a.$.metaKey:a.$.ctrlKey;if(!c||!b){a.preventDefault();var e=a.getTarget().getDocument(),f=a.getTarget().getDocument().getDocumentElement(), -b=!e.equals(CKEDITOR.document),e=e.getWindow().getScrollPosition(),g=b?a.$.clientX:a.$.pageX||e.x+a.$.clientX,h=b?a.$.clientY:a.$.pageY||e.y+a.$.clientY;CKEDITOR.tools.setTimeout(function(){this.open(f,null,g,h)},CKEDITOR.env.ie?200:0,this)}},this);if(CKEDITOR.env.webkit){var d,b=function(){d=0};a.on("keydown",function(a){d=CKEDITOR.env.mac?a.data.$.metaKey:a.data.$.ctrlKey});a.on("keyup",b);a.on("contextmenu",b)}},open:function(a,c,d,b){this.editor.focus();a=a||CKEDITOR.document.getDocumentElement(); -this.editor.selectionChange(1);this.show(a,c,d,b)}}})},beforeInit:function(a){var c=a.contextMenu=new CKEDITOR.plugins.contextMenu(a);a.on("contentDom",function(){c.addTarget(a.editable(),!1!==a.config.browserContextMenuOnCtrl)});a.addCommand("contextMenu",{exec:function(){a.contextMenu.open(a.document.getBody())}});a.setKeystroke(CKEDITOR.SHIFT+121,"contextMenu");a.setKeystroke(CKEDITOR.CTRL+CKEDITOR.SHIFT+121,"contextMenu")}});CKEDITOR.plugins.add("resize",{init:function(b){var f,g,n,o,a=b.config,q=b.ui.spaceId("resizer"),h=b.element?b.element.getDirection(1):"ltr";!a.resize_dir&&(a.resize_dir="vertical");void 0==a.resize_maxWidth&&(a.resize_maxWidth=3E3);void 0==a.resize_maxHeight&&(a.resize_maxHeight=3E3);void 0==a.resize_minWidth&&(a.resize_minWidth=750);void 0==a.resize_minHeight&&(a.resize_minHeight=250);if(!1!==a.resize_enabled){var c=null,i=("both"==a.resize_dir||"horizontal"==a.resize_dir)&&a.resize_minWidth!=a.resize_maxWidth, -l=("both"==a.resize_dir||"vertical"==a.resize_dir)&&a.resize_minHeight!=a.resize_maxHeight,j=function(d){var e=f,m=g,c=e+(d.data.$.screenX-n)*("rtl"==h?-1:1),d=m+(d.data.$.screenY-o);i&&(e=Math.max(a.resize_minWidth,Math.min(c,a.resize_maxWidth)));l&&(m=Math.max(a.resize_minHeight,Math.min(d,a.resize_maxHeight)));b.resize(i?e:null,m)},k=function(){CKEDITOR.document.removeListener("mousemove",j);CKEDITOR.document.removeListener("mouseup",k);b.document&&(b.document.removeListener("mousemove",j),b.document.removeListener("mouseup", -k))},p=CKEDITOR.tools.addFunction(function(d){c||(c=b.getResizable());f=c.$.offsetWidth||0;g=c.$.offsetHeight||0;n=d.screenX;o=d.screenY;a.resize_minWidth>f&&(a.resize_minWidth=f);a.resize_minHeight>g&&(a.resize_minHeight=g);CKEDITOR.document.on("mousemove",j);CKEDITOR.document.on("mouseup",k);b.document&&(b.document.on("mousemove",j),b.document.on("mouseup",k));d.preventDefault&&d.preventDefault()});b.on("destroy",function(){CKEDITOR.tools.removeFunction(p)});b.on("uiSpace",function(a){if("bottom"== -a.data.space){var e="";i&&!l&&(e=" cke_resizer_horizontal");!i&&l&&(e=" cke_resizer_vertical");var c='<span id="'+q+'" class="cke_resizer'+e+" cke_resizer_"+h+'" title="'+CKEDITOR.tools.htmlEncode(b.lang.common.resize)+'" onmousedown="CKEDITOR.tools.callFunction('+p+', event)">'+("ltr"==h?"◢":"◣")+"</span>";"ltr"==h&&"ltr"==e?a.data.html+=c:a.data.html=c+a.data.html}},b,null,100);b.on("maximize",function(a){b.ui.space("resizer")[a.data==CKEDITOR.TRISTATE_ON?"hide":"show"]()})}}});(function(){var c='<a id="{id}" class="cke_button cke_button__{name} cke_button_{state} {cls}"'+(CKEDITOR.env.gecko&&10900<=CKEDITOR.env.version&&!CKEDITOR.env.hc?"":" href=\"javascript:void('{titleJs}')\"")+' title="{title}" tabindex="-1" hidefocus="true" role="button" aria-labelledby="{id}_label" aria-haspopup="{hasArrow}" aria-disabled="{ariaDisabled}"';if(CKEDITOR.env.opera||CKEDITOR.env.gecko&&CKEDITOR.env.mac)c+=' onkeypress="return false;"';CKEDITOR.env.gecko&&(c+=' onblur="this.style.cssText = this.style.cssText;"'); -var c=c+(' onkeydown="return CKEDITOR.tools.callFunction({keydownFn},event);" onfocus="return CKEDITOR.tools.callFunction({focusFn},event);" onmousedown="return CKEDITOR.tools.callFunction({mousedownFn},event);" '+(CKEDITOR.env.ie?'onclick="return false;" onmouseup':"onclick")+'="CKEDITOR.tools.callFunction({clickFn},this);return false;"><span class="cke_button_icon cke_button__{iconName}_icon" style="{style}"'),c=c+'>&nbsp;</span><span id="{id}_label" class="cke_button_label cke_button__{name}_label" aria-hidden="false">{label}</span>{arrowHtml}</a>', -m=CKEDITOR.addTemplate("buttonArrow",'<span class="cke_button_arrow">'+(CKEDITOR.env.hc?"&#9660;":"")+"</span>"),n=CKEDITOR.addTemplate("button",c);CKEDITOR.plugins.add("button",{beforeInit:function(a){a.ui.addHandler(CKEDITOR.UI_BUTTON,CKEDITOR.ui.button.handler)}});CKEDITOR.UI_BUTTON="button";CKEDITOR.ui.button=function(a){CKEDITOR.tools.extend(this,a,{title:a.label,click:a.click||function(b){b.execCommand(a.command)}});this._={}};CKEDITOR.ui.button.handler={create:function(a){return new CKEDITOR.ui.button(a)}}; -CKEDITOR.ui.button.prototype={render:function(a,b){var c=CKEDITOR.env,i=this._.id=CKEDITOR.tools.getNextId(),f="",e=this.command,l;this._.editor=a;var d={id:i,button:this,editor:a,focus:function(){CKEDITOR.document.getById(i).focus()},execute:function(){this.button.click(a)},attach:function(a){this.button.attach(a)}},o=CKEDITOR.tools.addFunction(function(a){if(d.onkey)return a=new CKEDITOR.dom.event(a),!1!==d.onkey(d,a.getKeystroke())}),p=CKEDITOR.tools.addFunction(function(a){var b;d.onfocus&&(b= -!1!==d.onfocus(d,new CKEDITOR.dom.event(a)));CKEDITOR.env.gecko&&10900>CKEDITOR.env.version&&a.preventBubble();return b}),j=0,q=CKEDITOR.tools.addFunction(function(){if(CKEDITOR.env.opera){var b=a.editable();b.isInline()&&b.hasFocus&&(a.lockSelection(),j=1)}});d.clickFn=l=CKEDITOR.tools.addFunction(function(){j&&(a.unlockSelection(1),j=0);d.execute()});if(this.modes){var k={},g=function(){var b=a.mode;b&&(b=this.modes[b]?void 0!=k[b]?k[b]:CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,b=a.readOnly&& -!this.readOnly?CKEDITOR.TRISTATE_DISABLED:b,this.setState(b),this.refresh&&this.refresh())};a.on("beforeModeUnload",function(){a.mode&&this._.state!=CKEDITOR.TRISTATE_DISABLED&&(k[a.mode]=this._.state)},this);a.on("activeFilterChange",g,this);a.on("mode",g,this);!this.readOnly&&a.on("readOnly",g,this)}else if(e&&(e=a.getCommand(e)))e.on("state",function(){this.setState(e.state)},this),f+=e.state==CKEDITOR.TRISTATE_ON?"on":e.state==CKEDITOR.TRISTATE_DISABLED?"disabled":"off";if(this.directional)a.on("contentDirChanged", -function(b){var c=CKEDITOR.document.getById(this._.id),d=c.getFirst(),b=b.data;b!=a.lang.dir?c.addClass("cke_"+b):c.removeClass("cke_ltr").removeClass("cke_rtl");d.setAttribute("style",CKEDITOR.skin.getIconStyle(h,"rtl"==b,this.icon,this.iconOffset))},this);e||(f+="off");var h=g=this.name||this.command;this.icon&&!/\./.test(this.icon)&&(h=this.icon,this.icon=null);c={id:i,name:g,iconName:h,label:this.label,cls:this.className||"",state:f,ariaDisabled:"disabled"==f?"true":"false",title:this.title,titleJs:c.gecko&& -10900<=c.version&&!c.hc?"":(this.title||"").replace("'",""),hasArrow:this.hasArrow?"true":"false",keydownFn:o,mousedownFn:q,focusFn:p,clickFn:l,style:CKEDITOR.skin.getIconStyle(h,"rtl"==a.lang.dir,this.icon,this.iconOffset),arrowHtml:this.hasArrow?m.output():""};n.output(c,b);if(this.onRender)this.onRender();return d},setState:function(a){if(this._.state==a)return!1;this._.state=a;var b=CKEDITOR.document.getById(this._.id);return b?(b.setState(a,"cke_button"),a==CKEDITOR.TRISTATE_DISABLED?b.setAttribute("aria-disabled", -!0):b.removeAttribute("aria-disabled"),a==CKEDITOR.TRISTATE_ON?b.setAttribute("aria-pressed",!0):b.removeAttribute("aria-pressed"),!0):!1},getState:function(){return this._.state},toFeature:function(a){if(this._.feature)return this._.feature;var b=this;!this.allowedContent&&(!this.requiredContent&&this.command)&&(b=a.getCommand(this.command)||b);return this._.feature=b}};CKEDITOR.ui.prototype.addButton=function(a,b){this.add(a,CKEDITOR.UI_BUTTON,b)}})();(function(){function w(a){function d(){for(var b=g(),e=CKEDITOR.tools.clone(a.config.toolbarGroups)||n(a),f=0;f<e.length;f++){var k=e[f];if("/"!=k){"string"==typeof k&&(k=e[f]={name:k});var i,d=k.groups;if(d)for(var h=0;h<d.length;h++)i=d[h],(i=b[i])&&c(k,i);(i=b[k.name])&&c(k,i)}}return e}function g(){var b={},c,f,e;for(c in a.ui.items)f=a.ui.items[c],e=f.toolbar||"others",e=e.split(","),f=e[0],e=parseInt(e[1]||-1,10),b[f]||(b[f]=[]),b[f].push({name:c,order:e});for(f in b)b[f]=b[f].sort(function(b, -a){return b.order==a.order?0:0>a.order?-1:0>b.order?1:b.order<a.order?-1:1});return b}function c(c,e){if(e.length){c.items?c.items.push(a.ui.create("-")):c.items=[];for(var f;f=e.shift();)if(f="string"==typeof f?f:f.name,!b||-1==CKEDITOR.tools.indexOf(b,f))(f=a.ui.create(f))&&a.addFeature(f)&&c.items.push(f)}}function h(b){var a=[],e,d,h;for(e=0;e<b.length;++e)d=b[e],h={},"/"==d?a.push(d):CKEDITOR.tools.isArray(d)?(c(h,CKEDITOR.tools.clone(d)),a.push(h)):d.items&&(c(h,CKEDITOR.tools.clone(d.items)), -h.name=d.name,a.push(h));return a}var b=a.config.removeButtons,b=b&&b.split(","),e=a.config.toolbar;"string"==typeof e&&(e=a.config["toolbar_"+e]);return a.toolbar=e?h(e):d()}function n(a){return a._.toolbarGroups||(a._.toolbarGroups=[{name:"document",groups:["mode","document","doctools"]},{name:"clipboard",groups:["clipboard","undo"]},{name:"editing",groups:["find","selection","spellchecker"]},{name:"forms"},"/",{name:"basicstyles",groups:["basicstyles","cleanup"]},{name:"paragraph",groups:["list", -"indent","blocks","align","bidi"]},{name:"links"},{name:"insert"},"/",{name:"styles"},{name:"colors"},{name:"tools"},{name:"others"},{name:"about"}])}var u=function(){this.toolbars=[];this.focusCommandExecuted=!1};u.prototype.focus=function(){for(var a=0,d;d=this.toolbars[a++];)for(var g=0,c;c=d.items[g++];)if(c.focus){c.focus();return}};var x={modes:{wysiwyg:1,source:1},readOnly:1,exec:function(a){a.toolbox&&(a.toolbox.focusCommandExecuted=!0,CKEDITOR.env.ie||CKEDITOR.env.air?setTimeout(function(){a.toolbox.focus()}, -100):a.toolbox.focus())}};CKEDITOR.plugins.add("toolbar",{requires:"button",init:function(a){var d,g=function(c,h){var b,e="rtl"==a.lang.dir,j=a.config.toolbarGroupCycling,o=e?37:39,e=e?39:37,j=void 0===j||j;switch(h){case 9:case CKEDITOR.SHIFT+9:for(;!b||!b.items.length;)if(b=9==h?(b?b.next:c.toolbar.next)||a.toolbox.toolbars[0]:(b?b.previous:c.toolbar.previous)||a.toolbox.toolbars[a.toolbox.toolbars.length-1],b.items.length)for(c=b.items[d?b.items.length-1:0];c&&!c.focus;)(c=d?c.previous:c.next)|| -(b=0);c&&c.focus();return!1;case o:b=c;do b=b.next,!b&&j&&(b=c.toolbar.items[0]);while(b&&!b.focus);b?b.focus():g(c,9);return!1;case 40:return c.button&&c.button.hasArrow?(a.once("panelShow",function(b){b.data._.panel._.currentBlock.onKeyDown(40)}),c.execute()):g(c,40==h?o:e),!1;case e:case 38:b=c;do b=b.previous,!b&&j&&(b=c.toolbar.items[c.toolbar.items.length-1]);while(b&&!b.focus);b?b.focus():(d=1,g(c,CKEDITOR.SHIFT+9),d=0);return!1;case 27:return a.focus(),!1;case 13:case 32:return c.execute(), -!1}return!0};a.on("uiSpace",function(c){if(c.data.space==a.config.toolbarLocation){c.removeListener();a.toolbox=new u;var d=CKEDITOR.tools.getNextId(),b=['<span id="',d,'" class="cke_voice_label">',a.lang.toolbar.toolbars,"</span>",'<span id="'+a.ui.spaceId("toolbox")+'" class="cke_toolbox" role="group" aria-labelledby="',d,'" onmousedown="return false;">'],d=!1!==a.config.toolbarStartupExpanded,e,j;a.config.toolbarCanCollapse&&a.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE&&b.push('<span class="cke_toolbox_main"'+ -(d?">":' style="display:none">'));for(var o=a.toolbox.toolbars,f=w(a),k=0;k<f.length;k++){var i,l=0,r,m=f[k],s;if(m)if(e&&(b.push("</span>"),j=e=0),"/"===m)b.push('<span class="cke_toolbar_break"></span>');else{s=m.items||m;for(var t=0;t<s.length;t++){var p=s[t],n;if(p)if(p.type==CKEDITOR.UI_SEPARATOR)j=e&&p;else{n=!1!==p.canGroup;if(!l){i=CKEDITOR.tools.getNextId();l={id:i,items:[]};r=m.name&&(a.lang.toolbar.toolbarGroups[m.name]||m.name);b.push('<span id="',i,'" class="cke_toolbar"',r?' aria-labelledby="'+ -i+'_label"':"",' role="toolbar">');r&&b.push('<span id="',i,'_label" class="cke_voice_label">',r,"</span>");b.push('<span class="cke_toolbar_start"></span>');var q=o.push(l)-1;0<q&&(l.previous=o[q-1],l.previous.next=l)}n?e||(b.push('<span class="cke_toolgroup" role="presentation">'),e=1):e&&(b.push("</span>"),e=0);i=function(c){c=c.render(a,b);q=l.items.push(c)-1;if(q>0){c.previous=l.items[q-1];c.previous.next=c}c.toolbar=l;c.onkey=g;c.onfocus=function(){a.toolbox.focusCommandExecuted||a.focus()}}; -j&&(i(j),j=0);i(p)}}e&&(b.push("</span>"),j=e=0);l&&b.push('<span class="cke_toolbar_end"></span></span>')}}a.config.toolbarCanCollapse&&b.push("</span>");if(a.config.toolbarCanCollapse&&a.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE){var v=CKEDITOR.tools.addFunction(function(){a.execCommand("toolbarCollapse")});a.on("destroy",function(){CKEDITOR.tools.removeFunction(v)});a.addCommand("toolbarCollapse",{readOnly:1,exec:function(b){var a=b.ui.space("toolbar_collapser"),c=a.getPrevious(),e=b.ui.space("contents"), -d=c.getParent(),f=parseInt(e.$.style.height,10),h=d.$.offsetHeight,g=a.hasClass("cke_toolbox_collapser_min");g?(c.show(),a.removeClass("cke_toolbox_collapser_min"),a.setAttribute("title",b.lang.toolbar.toolbarCollapse)):(c.hide(),a.addClass("cke_toolbox_collapser_min"),a.setAttribute("title",b.lang.toolbar.toolbarExpand));a.getFirst().setText(g?"▲":"◀");e.setStyle("height",f-(d.$.offsetHeight-h)+"px");b.fire("resize")},modes:{wysiwyg:1,source:1}});a.setKeystroke(CKEDITOR.ALT+(CKEDITOR.env.ie||CKEDITOR.env.webkit? -189:109),"toolbarCollapse");b.push('<a title="'+(d?a.lang.toolbar.toolbarCollapse:a.lang.toolbar.toolbarExpand)+'" id="'+a.ui.spaceId("toolbar_collapser")+'" tabIndex="-1" class="cke_toolbox_collapser');d||b.push(" cke_toolbox_collapser_min");b.push('" onclick="CKEDITOR.tools.callFunction('+v+')">','<span class="cke_arrow">&#9650;</span>',"</a>")}b.push("</span>");c.data.html+=b.join("")}});a.on("destroy",function(){if(this.toolbox){var a,d=0,b,e,g;for(a=this.toolbox.toolbars;d<a.length;d++){e=a[d].items; -for(b=0;b<e.length;b++)g=e[b],g.clickFn&&CKEDITOR.tools.removeFunction(g.clickFn),g.keyDownFn&&CKEDITOR.tools.removeFunction(g.keyDownFn)}}});a.on("uiReady",function(){var c=a.ui.space("toolbox");c&&a.focusManager.add(c,1)});a.addCommand("toolbarFocus",x);a.setKeystroke(CKEDITOR.ALT+121,"toolbarFocus");a.ui.add("-",CKEDITOR.UI_SEPARATOR,{});a.ui.addHandler(CKEDITOR.UI_SEPARATOR,{create:function(){return{render:function(a,d){d.push('<span class="cke_toolbar_separator" role="separator"></span>');return{}}}}})}}); -CKEDITOR.ui.prototype.addToolbarGroup=function(a,d,g){var c=n(this.editor),h=0===d,b={name:a};if(g){if(g=CKEDITOR.tools.search(c,function(a){return a.name==g})){!g.groups&&(g.groups=[]);if(d&&(d=CKEDITOR.tools.indexOf(g.groups,d),0<=d)){g.groups.splice(d+1,0,a);return}h?g.groups.splice(0,0,a):g.groups.push(a);return}d=null}d&&(d=CKEDITOR.tools.indexOf(c,function(a){return a.name==d}));h?c.splice(0,0,a):"number"==typeof d?c.splice(d+1,0,b):c.push(a)}})();CKEDITOR.UI_SEPARATOR="separator"; -CKEDITOR.config.toolbarLocation="top";(function(){var k;function n(a,c){function j(d){d=i.list[d];if(d.equals(a.editable())||"true"==d.getAttribute("contenteditable")){var e=a.createRange();e.selectNodeContents(d);e.select()}else a.getSelection().selectElement(d);a.focus()}function s(){l&&l.setHtml(o);delete i.list}var m=a.ui.spaceId("path"),l,i=a._.elementsPath,n=i.idBase;c.html+='<span id="'+m+'_label" class="cke_voice_label">'+a.lang.elementspath.eleLabel+'</span><span id="'+m+'" class="cke_path" role="group" aria-labelledby="'+m+ -'_label">'+o+"</span>";a.on("uiReady",function(){var d=a.ui.space("path");d&&a.focusManager.add(d,1)});i.onClick=j;var t=CKEDITOR.tools.addFunction(j),u=CKEDITOR.tools.addFunction(function(d,e){var g=i.idBase,b,e=new CKEDITOR.dom.event(e);b="rtl"==a.lang.dir;switch(e.getKeystroke()){case b?39:37:case 9:return(b=CKEDITOR.document.getById(g+(d+1)))||(b=CKEDITOR.document.getById(g+"0")),b.focus(),!1;case b?37:39:case CKEDITOR.SHIFT+9:return(b=CKEDITOR.document.getById(g+(d-1)))||(b=CKEDITOR.document.getById(g+ -(i.list.length-1))),b.focus(),!1;case 27:return a.focus(),!1;case 13:case 32:return j(d),!1}return!0});a.on("selectionChange",function(){a.editable();for(var d=[],e=i.list=[],g=[],b=i.filters,c=!0,j=a.elementPath().elements,f,k=j.length;k--;){var h=j[k],p=0;f=h.data("cke-display-name")?h.data("cke-display-name"):h.data("cke-real-element-type")?h.data("cke-real-element-type"):h.getName();c=h.hasAttribute("contenteditable")?"true"==h.getAttribute("contenteditable"):c;!c&&!h.hasAttribute("contenteditable")&& -(p=1);for(var q=0;q<b.length;q++){var r=b[q](h,f);if(!1===r){p=1;break}f=r||f}p||(e.unshift(h),g.unshift(f))}e=e.length;for(b=0;b<e;b++)f=g[b],c=a.lang.elementspath.eleTitle.replace(/%1/,f),f=v.output({id:n+b,label:c,text:f,jsTitle:"javascript:void('"+f+"')",index:b,keyDownFn:u,clickFn:t}),d.unshift(f);l||(l=CKEDITOR.document.getById(m));g=l;g.setHtml(d.join("")+o);a.fire("elementsPathUpdate",{space:g})});a.on("readOnly",s);a.on("contentDomUnload",s);a.addCommand("elementsPathFocus",k);a.setKeystroke(CKEDITOR.ALT+ -122,"elementsPathFocus")}k={editorFocus:!1,readOnly:1,exec:function(a){(a=CKEDITOR.document.getById(a._.elementsPath.idBase+"0"))&&a.focus(CKEDITOR.env.ie||CKEDITOR.env.air)}};var o='<span class="cke_path_empty">&nbsp;</span>',c="";if(CKEDITOR.env.opera||CKEDITOR.env.gecko&&CKEDITOR.env.mac)c+=' onkeypress="return false;"';CKEDITOR.env.gecko&&(c+=' onblur="this.style.cssText = this.style.cssText;"');var v=CKEDITOR.addTemplate("pathItem",'<a id="{id}" href="{jsTitle}" tabindex="-1" class="cke_path_item" title="{label}"'+ -(CKEDITOR.env.gecko&&10900>CKEDITOR.env.version?' onfocus="event.preventBubble();"':"")+c+' hidefocus="true" onkeydown="return CKEDITOR.tools.callFunction({keyDownFn},{index}, event );" onclick="CKEDITOR.tools.callFunction({clickFn},{index}); return false;" role="button" aria-label="{label}">{text}</a>');CKEDITOR.plugins.add("elementspath",{init:function(a){a._.elementsPath={idBase:"cke_elementspath_"+CKEDITOR.tools.getNextNumber()+"_",filters:[]};a.on("uiSpace",function(c){"bottom"==c.data.space&& -n(a,c.data)})}})})();(function(){function l(e,c,b){b=e.config.forceEnterMode||b;"wysiwyg"==e.mode&&(c||(c=e.activeEnterMode),e.elementPath().isContextFor("p")||(c=CKEDITOR.ENTER_BR,b=1),e.fire("saveSnapshot"),c==CKEDITOR.ENTER_BR?o(e,c,null,b):p(e,c,null,b),e.fire("saveSnapshot"))}function q(e){for(var e=e.getSelection().getRanges(!0),c=e.length-1;0<c;c--)e[c].deleteContents();return e[0]}CKEDITOR.plugins.add("enterkey",{init:function(e){e.addCommand("enter",{modes:{wysiwyg:1},editorFocus:!1,exec:function(c){l(c)}}); -e.addCommand("shiftEnter",{modes:{wysiwyg:1},editorFocus:!1,exec:function(c){l(c,c.activeShiftEnterMode,1)}});e.setKeystroke([[13,"enter"],[CKEDITOR.SHIFT+13,"shiftEnter"]])}});var t=CKEDITOR.dom.walker.whitespaces(),u=CKEDITOR.dom.walker.bookmark();CKEDITOR.plugins.enterkey={enterBlock:function(e,c,b,i){if(b=b||q(e)){var f=b.document,j=b.checkStartOfBlock(),h=b.checkEndOfBlock(),a=e.elementPath(b.startContainer).block,k=c==CKEDITOR.ENTER_DIV?"div":"p",d;if(j&&h){if(a&&(a.is("li")||a.getParent().is("li"))){b= -a.getParent();d=b.getParent();var i=!a.hasPrevious(),m=!a.hasNext(),k=e.getSelection(),g=k.createBookmarks(),j=a.getDirection(1),h=a.getAttribute("class"),n=a.getAttribute("style"),l=d.getDirection(1)!=j,e=e.enterMode!=CKEDITOR.ENTER_BR||l||n||h;if(d.is("li"))if(i||m)a[i?"insertBefore":"insertAfter"](d);else a.breakParent(d);else{if(e)if(d=f.createElement(c==CKEDITOR.ENTER_P?"p":"div"),l&&d.setAttribute("dir",j),n&&d.setAttribute("style",n),h&&d.setAttribute("class",h),a.moveChildren(d),i||m)d[i? -"insertBefore":"insertAfter"](b);else a.breakParent(b),d.insertAfter(b);else if(a.appendBogus(!0),i||m)for(;f=a[i?"getFirst":"getLast"]();)f[i?"insertBefore":"insertAfter"](b);else for(a.breakParent(b);f=a.getLast();)f.insertAfter(b);a.remove()}k.selectBookmarks(g);return}if(a&&a.getParent().is("blockquote")){a.breakParent(a.getParent());a.getPrevious().getFirst(CKEDITOR.dom.walker.invisible(1))||a.getPrevious().remove();a.getNext().getFirst(CKEDITOR.dom.walker.invisible(1))||a.getNext().remove(); -b.moveToElementEditStart(a);b.select();return}}else if(a&&a.is("pre")&&!h){o(e,c,b,i);return}if(h=b.splitBlock(k)){c=h.previousBlock;a=h.nextBlock;e=h.wasStartOfBlock;j=h.wasEndOfBlock;if(a)g=a.getParent(),g.is("li")&&(a.breakParent(g),a.move(a.getNext(),1));else if(c&&(g=c.getParent())&&g.is("li"))c.breakParent(g),g=c.getNext(),b.moveToElementEditStart(g),c.move(c.getPrevious());if(!e&&!j)a.is("li")&&(d=b.clone(),d.selectNodeContents(a),d=new CKEDITOR.dom.walker(d),d.evaluator=function(a){return!(u(a)|| -t(a)||a.type==CKEDITOR.NODE_ELEMENT&&a.getName()in CKEDITOR.dtd.$inline&&!(a.getName()in CKEDITOR.dtd.$empty))},(g=d.next())&&(g.type==CKEDITOR.NODE_ELEMENT&&g.is("ul","ol"))&&(CKEDITOR.env.needsBrFiller?f.createElement("br"):f.createText(" ")).insertBefore(g)),a&&b.moveToElementEditStart(a);else{if(c){if(c.is("li")||!r.test(c.getName())&&!c.is("pre"))d=c.clone()}else a&&(d=a.clone());d?i&&!d.is("li")&&d.renameNode(k):g&&g.is("li")?d=g:(d=f.createElement(k),c&&(m=c.getDirection())&&d.setAttribute("dir", -m));if(f=h.elementPath){i=0;for(k=f.elements.length;i<k;i++){g=f.elements[i];if(g.equals(f.block)||g.equals(f.blockLimit))break;CKEDITOR.dtd.$removeEmpty[g.getName()]&&(g=g.clone(),d.moveChildren(g),d.append(g))}}d.appendBogus();d.getParent()||b.insertNode(d);d.is("li")&&d.removeAttribute("value");if(CKEDITOR.env.ie&&e&&(!j||!c.getChildCount()))b.moveToElementEditStart(j?c:d),b.select();b.moveToElementEditStart(e&&!j?a:d)}b.select();b.scrollIntoView()}}},enterBr:function(e,c,b,i){if(b=b||q(e)){var f= -b.document,j=b.checkEndOfBlock(),h=new CKEDITOR.dom.elementPath(e.getSelection().getStartElement()),a=h.block,h=a&&h.block.getName();!i&&"li"==h?p(e,c,b,i):(!i&&j&&r.test(h)?(j=a.getDirection())?(f=f.createElement("div"),f.setAttribute("dir",j),f.insertAfter(a),b.setStart(f,0)):(f.createElement("br").insertAfter(a),CKEDITOR.env.gecko&&f.createText("").insertAfter(a),b.setStartAt(a.getNext(),CKEDITOR.env.ie?CKEDITOR.POSITION_BEFORE_START:CKEDITOR.POSITION_AFTER_START)):(a="pre"==h&&CKEDITOR.env.ie&& -8>CKEDITOR.env.version?f.createText("\r"):f.createElement("br"),b.deleteContents(),b.insertNode(a),CKEDITOR.env.needsBrFiller?(f.createText("").insertAfter(a),j&&a.getParent().appendBogus(),a.getNext().$.nodeValue="",b.setStartAt(a.getNext(),CKEDITOR.POSITION_AFTER_START)):b.setStartAt(a,CKEDITOR.POSITION_AFTER_END)),b.collapse(!0),b.select(),b.scrollIntoView())}}};var s=CKEDITOR.plugins.enterkey,o=s.enterBr,p=s.enterBlock,r=/^h[1-6]$/})();(function(){function j(a,b){var d={},e=[],f={nbsp:" ",shy:"­",gt:">",lt:"<",amp:"&",apos:"'",quot:'"'},a=a.replace(/\b(nbsp|shy|gt|lt|amp|apos|quot)(?:,|$)/g,function(a,h){var c=b?"&"+h+";":f[h];d[c]=b?f[h]:"&"+h+";";e.push(c);return""});if(!b&&a){var a=a.split(","),c=document.createElement("div"),g;c.innerHTML="&"+a.join(";&")+";";g=c.innerHTML;c=null;for(c=0;c<g.length;c++){var i=g.charAt(c);d[i]="&"+a[c]+";";e.push(i)}}d.regex=e.join(b?"|":"");return d}CKEDITOR.plugins.add("entities",{afterInit:function(a){var b= -a.config;if(a=(a=a.dataProcessor)&&a.htmlFilter){var d=[];!1!==b.basicEntities&&d.push("nbsp,gt,lt,amp");b.entities&&(d.length&&d.push("quot,iexcl,cent,pound,curren,yen,brvbar,sect,uml,copy,ordf,laquo,not,shy,reg,macr,deg,plusmn,sup2,sup3,acute,micro,para,middot,cedil,sup1,ordm,raquo,frac14,frac12,frac34,iquest,times,divide,fnof,bull,hellip,prime,Prime,oline,frasl,weierp,image,real,trade,alefsym,larr,uarr,rarr,darr,harr,crarr,lArr,uArr,rArr,dArr,hArr,forall,part,exist,empty,nabla,isin,notin,ni,prod,sum,minus,lowast,radic,prop,infin,ang,and,or,cap,cup,int,there4,sim,cong,asymp,ne,equiv,le,ge,sub,sup,nsub,sube,supe,oplus,otimes,perp,sdot,lceil,rceil,lfloor,rfloor,lang,rang,loz,spades,clubs,hearts,diams,circ,tilde,ensp,emsp,thinsp,zwnj,zwj,lrm,rlm,ndash,mdash,lsquo,rsquo,sbquo,ldquo,rdquo,bdquo,dagger,Dagger,permil,lsaquo,rsaquo,euro"), -b.entities_latin&&d.push("Agrave,Aacute,Acirc,Atilde,Auml,Aring,AElig,Ccedil,Egrave,Eacute,Ecirc,Euml,Igrave,Iacute,Icirc,Iuml,ETH,Ntilde,Ograve,Oacute,Ocirc,Otilde,Ouml,Oslash,Ugrave,Uacute,Ucirc,Uuml,Yacute,THORN,szlig,agrave,aacute,acirc,atilde,auml,aring,aelig,ccedil,egrave,eacute,ecirc,euml,igrave,iacute,icirc,iuml,eth,ntilde,ograve,oacute,ocirc,otilde,ouml,oslash,ugrave,uacute,ucirc,uuml,yacute,thorn,yuml,OElig,oelig,Scaron,scaron,Yuml"),b.entities_greek&&d.push("Alpha,Beta,Gamma,Delta,Epsilon,Zeta,Eta,Theta,Iota,Kappa,Lambda,Mu,Nu,Xi,Omicron,Pi,Rho,Sigma,Tau,Upsilon,Phi,Chi,Psi,Omega,alpha,beta,gamma,delta,epsilon,zeta,eta,theta,iota,kappa,lambda,mu,nu,xi,omicron,pi,rho,sigmaf,sigma,tau,upsilon,phi,chi,psi,omega,thetasym,upsih,piv"), -b.entities_additional&&d.push(b.entities_additional));var e=j(d.join(",")),f=e.regex?"["+e.regex+"]":"a^";delete e.regex;b.entities&&b.entities_processNumerical&&(f="[^ -~]|"+f);var f=RegExp(f,"g"),c=function(a){return b.entities_processNumerical=="force"||!e[a]?"&#"+a.charCodeAt(0)+";":e[a]},g=j("nbsp,gt,lt,amp,shy",!0),i=RegExp(g.regex,"g"),k=function(a){return g[a]};a.addRules({text:function(a){return a.replace(i,k).replace(f,c)}},{applyToAll:!0})}}})})();CKEDITOR.config.basicEntities=!0; -CKEDITOR.config.entities=!0;CKEDITOR.config.entities_latin=!0;CKEDITOR.config.entities_greek=!0;CKEDITOR.config.entities_additional="#39";CKEDITOR.plugins.add("popup"); -CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{popup:function(e,a,b,d){a=a||"80%";b=b||"70%";"string"==typeof a&&(1<a.length&&"%"==a.substr(a.length-1,1))&&(a=parseInt(window.screen.width*parseInt(a,10)/100,10));"string"==typeof b&&(1<b.length&&"%"==b.substr(b.length-1,1))&&(b=parseInt(window.screen.height*parseInt(b,10)/100,10));640>a&&(a=640);420>b&&(b=420);var f=parseInt((window.screen.height-b)/2,10),g=parseInt((window.screen.width-a)/2,10),d=(d||"location=no,menubar=no,toolbar=no,dependent=yes,minimizable=no,modal=yes,alwaysRaised=yes,resizable=yes,scrollbars=yes")+",width="+ -a+",height="+b+",top="+f+",left="+g,c=window.open("",null,d,!0);if(!c)return!1;try{-1==navigator.userAgent.toLowerCase().indexOf(" chrome/")&&(c.moveTo(g,f),c.resizeTo(a,b)),c.focus(),c.location.href=e}catch(h){window.open(e,null,d,!0)}return!0}});(function(){function g(a,c){var d=[];if(c)for(var b in c)d.push(b+"="+encodeURIComponent(c[b]));else return a;return a+(-1!=a.indexOf("?")?"&":"?")+d.join("&")}function i(a){a+="";return a.charAt(0).toUpperCase()+a.substr(1)}function k(){var a=this.getDialog(),c=a.getParentEditor();c._.filebrowserSe=this;var d=c.config["filebrowser"+i(a.getName())+"WindowWidth"]||c.config.filebrowserWindowWidth||"80%",a=c.config["filebrowser"+i(a.getName())+"WindowHeight"]||c.config.filebrowserWindowHeight||"70%", -b=this.filebrowser.params||{};b.CKEditor=c.name;b.CKEditorFuncNum=c._.filebrowserFn;b.langCode||(b.langCode=c.langCode);b=g(this.filebrowser.url,b);c.popup(b,d,a,c.config.filebrowserWindowFeatures||c.config.fileBrowserWindowFeatures)}function l(){var a=this.getDialog();a.getParentEditor()._.filebrowserSe=this;return!a.getContentElement(this["for"][0],this["for"][1]).getInputElement().$.value||!a.getContentElement(this["for"][0],this["for"][1]).getAction()?!1:!0}function m(a,c,d){var b=d.params||{}; -b.CKEditor=a.name;b.CKEditorFuncNum=a._.filebrowserFn;b.langCode||(b.langCode=a.langCode);c.action=g(d.url,b);c.filebrowser=d}function j(a,c,d,b){if(b&&b.length)for(var e,g=b.length;g--;)if(e=b[g],("hbox"==e.type||"vbox"==e.type||"fieldset"==e.type)&&j(a,c,d,e.children),e.filebrowser)if("string"==typeof e.filebrowser&&(e.filebrowser={action:"fileButton"==e.type?"QuickUpload":"Browse",target:e.filebrowser}),"Browse"==e.filebrowser.action){var f=e.filebrowser.url;void 0===f&&(f=a.config["filebrowser"+ -i(c)+"BrowseUrl"],void 0===f&&(f=a.config.filebrowserBrowseUrl));f&&(e.onClick=k,e.filebrowser.url=f,e.hidden=!1)}else if("QuickUpload"==e.filebrowser.action&&e["for"]&&(f=e.filebrowser.url,void 0===f&&(f=a.config["filebrowser"+i(c)+"UploadUrl"],void 0===f&&(f=a.config.filebrowserUploadUrl)),f)){var h=e.onClick;e.onClick=function(a){var b=a.sender;return h&&h.call(b,a)===false?false:l.call(b,a)};e.filebrowser.url=f;e.hidden=!1;m(a,d.getContents(e["for"][0]).get(e["for"][1]),e.filebrowser)}}function h(a, -c,d){if(-1!==d.indexOf(";")){for(var d=d.split(";"),b=0;b<d.length;b++)if(h(a,c,d[b]))return!0;return!1}return(a=a.getContents(c).get(d).filebrowser)&&a.url}function n(a,c){var d=this._.filebrowserSe.getDialog(),b=this._.filebrowserSe["for"],e=this._.filebrowserSe.filebrowser.onSelect;b&&d.getContentElement(b[0],b[1]).reset();if(!("function"==typeof c&&!1===c.call(this._.filebrowserSe))&&!(e&&!1===e.call(this._.filebrowserSe,a,c))&&("string"==typeof c&&c&&alert(c),a&&(b=this._.filebrowserSe,d=b.getDialog(), -b=b.filebrowser.target||null)))if(b=b.split(":"),e=d.getContentElement(b[0],b[1]))e.setValue(a),d.selectPage(b[0])}CKEDITOR.plugins.add("filebrowser",{requires:"popup",init:function(a){a._.filebrowserFn=CKEDITOR.tools.addFunction(n,a);a.on("destroy",function(){CKEDITOR.tools.removeFunction(this._.filebrowserFn)})}});CKEDITOR.on("dialogDefinition",function(a){if(a.editor.plugins.filebrowser)for(var c=a.data.definition,d,b=0;b<c.contents.length;++b)if(d=c.contents[b])j(a.editor,a.data.name,c,d.elements), -d.hidden&&d.filebrowser&&(d.hidden=!h(c,d.id,d.filebrowser))})})();(function(){function q(a){var i=a.config,l=a.fire("uiSpace",{space:"top",html:""}).html,o=function(){function f(a,c,e){b.setStyle(c,t(e));b.setStyle("position",a)}function e(a){var b=r.getDocumentPosition();switch(a){case "top":f("absolute","top",b.y-m-n);break;case "pin":f("fixed","top",q);break;case "bottom":f("absolute","top",b.y+(c.height||c.bottom-c.top)+n)}j=a}var j,r,k,c,h,m,s,l=i.floatSpaceDockedOffsetX||0,n=i.floatSpaceDockedOffsetY||0,p=i.floatSpacePinnedOffsetX||0,q=i.floatSpacePinnedOffsetY|| -0;return function(d){if(r=a.editable())if(d&&"focus"==d.name&&b.show(),b.removeStyle("left"),b.removeStyle("right"),k=b.getClientRect(),c=r.getClientRect(),h=g.getViewPaneSize(),m=k.height,s="pageXOffset"in g.$?g.$.pageXOffset:CKEDITOR.document.$.documentElement.scrollLeft,j){m+n<=c.top?e("top"):m+n>h.height-c.bottom?e("pin"):e("bottom");var d=h.width/2,d=0<c.left&&c.right<h.width&&c.width>k.width?"rtl"==a.config.contentsLangDirection?"right":"left":d-c.left>c.right-d?"left":"right",f;k.width>h.width? -(d="left",f=0):(f="left"==d?0<c.left?c.left:0:c.right<h.width?h.width-c.right:0,f+k.width>h.width&&(d="left"==d?"right":"left",f=0));b.setStyle(d,t(("pin"==j?p:l)+f+("pin"==j?0:"left"==d?s:-s)))}else j="pin",e("pin"),o(d)}}();if(l){var b=CKEDITOR.document.getBody().append(CKEDITOR.dom.element.createFromHtml(u.output({content:l,id:a.id,langDir:a.lang.dir,langCode:a.langCode,name:a.name,style:"display:none;z-index:"+(i.baseFloatZIndex-1),topId:a.ui.spaceId("top"),voiceLabel:a.lang.editorPanel+", "+ -a.name}))),p=CKEDITOR.tools.eventsBuffer(500,o),e=CKEDITOR.tools.eventsBuffer(100,o);b.unselectable();b.on("mousedown",function(a){a=a.data;a.getTarget().hasAscendant("a",1)||a.preventDefault()});a.on("focus",function(b){o(b);a.on("change",p.input);g.on("scroll",e.input);g.on("resize",e.input)});a.on("blur",function(){b.hide();a.removeListener("change",p.input);g.removeListener("scroll",e.input);g.removeListener("resize",e.input)});a.on("destroy",function(){g.removeListener("scroll",e.input);g.removeListener("resize", -e.input);b.clearCustomData();b.remove()});a.focusManager.hasFocus&&b.show();a.focusManager.add(b,1)}}var u=CKEDITOR.addTemplate("floatcontainer",'<div id="cke_{name}" class="cke {id} cke_reset_all cke_chrome cke_editor_{name} cke_float cke_{langDir} '+CKEDITOR.env.cssClass+'" dir="{langDir}" title="'+(CKEDITOR.env.gecko?" ":"")+'" lang="{langCode}" role="application" style="{style}" aria-labelledby="cke_{name}_arialbl"><span id="cke_{name}_arialbl" class="cke_voice_label">{voiceLabel}</span><div class="cke_inner"><div id="{topId}" class="cke_top" role="presentation">{content}</div></div></div>'), -g=CKEDITOR.document.getWindow(),t=CKEDITOR.tools.cssLength;CKEDITOR.plugins.add("floatingspace",{init:function(a){a.on("loaded",function(){q(this)},null,null,20)}})})();CKEDITOR.plugins.add("listblock",{requires:"panel",onLoad:function(){var f=CKEDITOR.addTemplate("panel-list",'<ul role="presentation" class="cke_panel_list">{items}</ul>'),g=CKEDITOR.addTemplate("panel-list-item",'<li id="{id}" class="cke_panel_listItem" role=presentation><a id="{id}_option" _cke_focus=1 hidefocus=true title="{title}" href="javascript:void(\'{val}\')" {onclick}="CKEDITOR.tools.callFunction({clickFn},\'{val}\'); return false;" role="option">{text}</a></li>'),h=CKEDITOR.addTemplate("panel-list-group", -'<h1 id="{id}" class="cke_panel_grouptitle" role="presentation" >{label}</h1>'),i=/\'/g;CKEDITOR.ui.panel.prototype.addListBlock=function(a,b){return this.addBlock(a,new CKEDITOR.ui.listBlock(this.getHolderElement(),b))};CKEDITOR.ui.listBlock=CKEDITOR.tools.createClass({base:CKEDITOR.ui.panel.block,$:function(a,b){var b=b||{},c=b.attributes||(b.attributes={});(this.multiSelect=!!b.multiSelect)&&(c["aria-multiselectable"]=!0);!c.role&&(c.role="listbox");this.base.apply(this,arguments);this.element.setAttribute("role", -c.role);c=this.keys;c[40]="next";c[9]="next";c[38]="prev";c[CKEDITOR.SHIFT+9]="prev";c[32]=CKEDITOR.env.ie?"mouseup":"click";CKEDITOR.env.ie&&(c[13]="mouseup");this._.pendingHtml=[];this._.pendingList=[];this._.items={};this._.groups={}},_:{close:function(){if(this._.started){var a=f.output({items:this._.pendingList.join("")});this._.pendingList=[];this._.pendingHtml.push(a);delete this._.started}},getClick:function(){this._.click||(this._.click=CKEDITOR.tools.addFunction(function(a){var b=this.toggle(a); -if(this.onClick)this.onClick(a,b)},this));return this._.click}},proto:{add:function(a,b,c){var d=CKEDITOR.tools.getNextId();this._.started||(this._.started=1,this._.size=this._.size||0);this._.items[a]=d;var e;e=CKEDITOR.tools.htmlEncodeAttr(a).replace(i,"\\'");a={id:d,val:e,onclick:CKEDITOR.env.ie?'onclick="return false;" onmouseup':"onclick",clickFn:this._.getClick(),title:CKEDITOR.tools.htmlEncodeAttr(c||a),text:b||a};this._.pendingList.push(g.output(a))},startGroup:function(a){this._.close(); -var b=CKEDITOR.tools.getNextId();this._.groups[a]=b;this._.pendingHtml.push(h.output({id:b,label:a}))},commit:function(){this._.close();this.element.appendHtml(this._.pendingHtml.join(""));delete this._.size;this._.pendingHtml=[]},toggle:function(a){var b=this.isMarked(a);b?this.unmark(a):this.mark(a);return!b},hideGroup:function(a){var b=(a=this.element.getDocument().getById(this._.groups[a]))&&a.getNext();a&&(a.setStyle("display","none"),b&&"ul"==b.getName()&&b.setStyle("display","none"))},hideItem:function(a){this.element.getDocument().getById(this._.items[a]).setStyle("display", -"none")},showAll:function(){var a=this._.items,b=this._.groups,c=this.element.getDocument(),d;for(d in a)c.getById(a[d]).setStyle("display","");for(var e in b)a=c.getById(b[e]),d=a.getNext(),a.setStyle("display",""),d&&"ul"==d.getName()&&d.setStyle("display","")},mark:function(a){this.multiSelect||this.unmarkAll();var a=this._.items[a],b=this.element.getDocument().getById(a);b.addClass("cke_selected");this.element.getDocument().getById(a+"_option").setAttribute("aria-selected",!0);this.onMark&&this.onMark(b)}, -unmark:function(a){var b=this.element.getDocument(),a=this._.items[a],c=b.getById(a);c.removeClass("cke_selected");b.getById(a+"_option").removeAttribute("aria-selected");this.onUnmark&&this.onUnmark(c)},unmarkAll:function(){var a=this._.items,b=this.element.getDocument(),c;for(c in a){var d=a[c];b.getById(d).removeClass("cke_selected");b.getById(d+"_option").removeAttribute("aria-selected")}this.onUnmark&&this.onUnmark()},isMarked:function(a){return this.element.getDocument().getById(this._.items[a]).hasClass("cke_selected")}, -focus:function(a){this._.focusIndex=-1;var b=this.element.getElementsByTag("a"),c,d=-1;if(a)for(c=this.element.getDocument().getById(this._.items[a]).getFirst();a=b.getItem(++d);){if(a.equals(c)){this._.focusIndex=d;break}}else this.element.focus();c&&setTimeout(function(){c.focus()},0)}}})}});CKEDITOR.plugins.add("richcombo",{requires:"floatpanel,listblock,button",beforeInit:function(d){d.ui.addHandler(CKEDITOR.UI_RICHCOMBO,CKEDITOR.ui.richCombo.handler)}}); -(function(){var d='<span id="{id}" class="cke_combo cke_combo__{name} {cls}" role="presentation"><span id="{id}_label" class="cke_combo_label">{label}</span><a class="cke_combo_button" hidefocus=true title="{title}" tabindex="-1"'+(CKEDITOR.env.gecko&&10900<=CKEDITOR.env.version&&!CKEDITOR.env.hc?"":'" href="javascript:void(\'{titleJs}\')"')+' hidefocus="true" role="button" aria-labelledby="{id}_label" aria-haspopup="true"';if(CKEDITOR.env.opera||CKEDITOR.env.gecko&&CKEDITOR.env.mac)d+=' onkeypress="return false;"'; -CKEDITOR.env.gecko&&(d+=' onblur="this.style.cssText = this.style.cssText;"');var d=d+(' onkeydown="return CKEDITOR.tools.callFunction({keydownFn},event,this);" onmousedown="return CKEDITOR.tools.callFunction({mousedownFn},event);" onfocus="return CKEDITOR.tools.callFunction({focusFn},event);" '+(CKEDITOR.env.ie?'onclick="return false;" onmouseup':"onclick")+'="CKEDITOR.tools.callFunction({clickFn},this);return false;"><span id="{id}_text" class="cke_combo_text cke_combo_inlinelabel">{label}</span><span class="cke_combo_open"><span class="cke_combo_arrow">'+ -(CKEDITOR.env.hc?"&#9660;":CKEDITOR.env.air?"&nbsp;":"")+"</span></span></a></span>"),i=CKEDITOR.addTemplate("combo",d);CKEDITOR.UI_RICHCOMBO="richcombo";CKEDITOR.ui.richCombo=CKEDITOR.tools.createClass({$:function(a){CKEDITOR.tools.extend(this,a,{canGroup:!1,title:a.label,modes:{wysiwyg:1},editorFocus:1});a=this.panel||{};delete this.panel;this.id=CKEDITOR.tools.getNextNumber();this.document=a.parent&&a.parent.getDocument()||CKEDITOR.document;a.className="cke_combopanel";a.block={multiSelect:a.multiSelect, -attributes:a.attributes};a.toolbarRelated=!0;this._={panelDefinition:a,items:{}}},proto:{renderHtml:function(a){var b=[];this.render(a,b);return b.join("")},render:function(a,b){function g(){var c=this.modes[a.mode]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED;a.readOnly&&!this.readOnly&&(c=CKEDITOR.TRISTATE_DISABLED);this.setState(c);this.setValue("");c!=CKEDITOR.TRISTATE_DISABLED&&this.refresh&&this.refresh()}var d=CKEDITOR.env,h="cke_"+this.id,e=CKEDITOR.tools.addFunction(function(b){j&&(a.unlockSelection(1), -j=0);c.execute(b)},this),f=this,c={id:h,combo:this,focus:function(){CKEDITOR.document.getById(h).getChild(1).focus()},execute:function(c){var b=f._;if(b.state!=CKEDITOR.TRISTATE_DISABLED)if(f.createPanel(a),b.on)b.panel.hide();else{f.commit();var d=f.getValue();d?b.list.mark(d):b.list.unmarkAll();b.panel.showBlock(f.id,new CKEDITOR.dom.element(c),4)}},clickFn:e};a.on("activeFilterChange",g,this);a.on("mode",g,this);!this.readOnly&&a.on("readOnly",g,this);var k=CKEDITOR.tools.addFunction(function(b, -d){var b=new CKEDITOR.dom.event(b),g=b.getKeystroke();if(40==g)a.once("panelShow",function(a){a.data._.panel._.currentBlock.onKeyDown(40)});switch(g){case 13:case 32:case 40:CKEDITOR.tools.callFunction(e,d);break;default:c.onkey(c,g)}b.preventDefault()}),l=CKEDITOR.tools.addFunction(function(){c.onfocus&&c.onfocus()}),j=0,m=CKEDITOR.tools.addFunction(function(){if(CKEDITOR.env.opera){var b=a.editable();b.isInline()&&b.hasFocus&&(a.lockSelection(),j=1)}});c.keyDownFn=k;d={id:h,name:this.name||this.command, -label:this.label,title:this.title,cls:this.className||"",titleJs:d.gecko&&10900<=d.version&&!d.hc?"":(this.title||"").replace("'",""),keydownFn:k,mousedownFn:m,focusFn:l,clickFn:e};i.output(d,b);if(this.onRender)this.onRender();return c},createPanel:function(a){if(!this._.panel){var b=this._.panelDefinition,d=this._.panelDefinition.block,i=b.parent||CKEDITOR.document.getBody(),h="cke_combopanel__"+this.name,e=new CKEDITOR.ui.floatPanel(a,i,b),f=e.addListBlock(this.id,d),c=this;e.onShow=function(){this.element.addClass(h); -c.setState(CKEDITOR.TRISTATE_ON);c._.on=1;c.editorFocus&&!a.focusManager.hasFocus&&a.focus();if(c.onOpen)c.onOpen();a.once("panelShow",function(){f.focus(!f.multiSelect&&c.getValue())})};e.onHide=function(b){this.element.removeClass(h);c.setState(c.modes&&c.modes[a.mode]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED);c._.on=0;if(!b&&c.onClose)c.onClose()};e.onEscape=function(){e.hide(1)};f.onClick=function(a,b){c.onClick&&c.onClick.call(c,a,b);e.hide()};this._.panel=e;this._.list=f;e.getBlock(this.id).onHide= -function(){c._.on=0;c.setState(CKEDITOR.TRISTATE_OFF)};this.init&&this.init()}},setValue:function(a,b){this._.value=a;var d=this.document.getById("cke_"+this.id+"_text");d&&(!a&&!b?(b=this.label,d.addClass("cke_combo_inlinelabel")):d.removeClass("cke_combo_inlinelabel"),d.setText("undefined"!=typeof b?b:a))},getValue:function(){return this._.value||""},unmarkAll:function(){this._.list.unmarkAll()},mark:function(a){this._.list.mark(a)},hideItem:function(a){this._.list.hideItem(a)},hideGroup:function(a){this._.list.hideGroup(a)}, -showAll:function(){this._.list.showAll()},add:function(a,b,d){this._.items[a]=d||a;this._.list.add(a,b,d)},startGroup:function(a){this._.list.startGroup(a)},commit:function(){this._.committed||(this._.list.commit(),this._.committed=1,CKEDITOR.ui.fire("ready",this));this._.committed=1},setState:function(a){if(this._.state!=a){var b=this.document.getById("cke_"+this.id);b.setState(a,"cke_combo");a==CKEDITOR.TRISTATE_DISABLED?b.setAttribute("aria-disabled",!0):b.removeAttribute("aria-disabled");this._.state= -a}},getState:function(){return this._.state},enable:function(){this._.state==CKEDITOR.TRISTATE_DISABLED&&this.setState(this._.lastState)},disable:function(){this._.state!=CKEDITOR.TRISTATE_DISABLED&&(this._.lastState=this._.state,this.setState(CKEDITOR.TRISTATE_DISABLED))}},statics:{handler:{create:function(a){return new CKEDITOR.ui.richCombo(a)}}}});CKEDITOR.ui.prototype.addRichCombo=function(a,b){this.add(a,CKEDITOR.UI_RICHCOMBO,b)}})();CKEDITOR.plugins.add("format",{requires:"richcombo",init:function(a){if(!a.blockless){for(var f=a.config,c=a.lang.format,j=f.format_tags.split(";"),d={},k=0,l=[],g=0;g<j.length;g++){var h=j[g],i=new CKEDITOR.style(f["format_"+h]);if(!a.filter.customConfig||a.filter.check(i))k++,d[h]=i,d[h]._.enterMode=a.config.enterMode,l.push(i)}0!==k&&a.ui.addRichCombo("Format",{label:c.label,title:c.panelTitle,toolbar:"styles,20",allowedContent:l,panel:{css:[CKEDITOR.skin.getPath("editor")].concat(f.contentsCss), -multiSelect:!1,attributes:{"aria-label":c.panelTitle}},init:function(){this.startGroup(c.panelTitle);for(var b in d){var a=c["tag_"+b];this.add(b,d[b].buildPreview(a),a)}},onClick:function(b){a.focus();a.fire("saveSnapshot");var b=d[b],c=a.elementPath();a[b.checkActive(c)?"removeStyle":"applyStyle"](b);setTimeout(function(){a.fire("saveSnapshot")},0)},onRender:function(){a.on("selectionChange",function(b){var c=this.getValue(),b=b.data.path;this.refresh();for(var e in d)if(d[e].checkActive(b)){e!= -c&&this.setValue(e,a.lang.format["tag_"+e]);return}this.setValue("")},this)},onOpen:function(){this.showAll();for(var b in d)a.activeFilter.check(d[b])||this.hideItem(b)},refresh:function(){var b=a.elementPath();if(b){if(b.isContextFor("p"))for(var c in d)if(a.activeFilter.check(d[c]))return;this.setState(CKEDITOR.TRISTATE_DISABLED)}}})}}});CKEDITOR.config.format_tags="p;h1;h2;h3;h4;h5;h6;pre;address;div";CKEDITOR.config.format_p={element:"p"};CKEDITOR.config.format_div={element:"div"}; -CKEDITOR.config.format_pre={element:"pre"};CKEDITOR.config.format_address={element:"address"};CKEDITOR.config.format_h1={element:"h1"};CKEDITOR.config.format_h2={element:"h2"};CKEDITOR.config.format_h3={element:"h3"};CKEDITOR.config.format_h4={element:"h4"};CKEDITOR.config.format_h5={element:"h5"};CKEDITOR.config.format_h6={element:"h6"};(function(){var b={canUndo:!1,exec:function(a){var b=a.document.createElement("hr");a.insertElement(b)},allowedContent:"hr",requiredContent:"hr"};CKEDITOR.plugins.add("horizontalrule",{init:function(a){a.blockless||(a.addCommand("horizontalrule",b),a.ui.addButton&&a.ui.addButton("HorizontalRule",{label:a.lang.horizontalrule.toolbar,command:"horizontalrule",toolbar:"insert,40"}))}})})();CKEDITOR.plugins.add("htmlwriter",{init:function(b){var a=new CKEDITOR.htmlWriter;a.forceSimpleAmpersand=b.config.forceSimpleAmpersand;a.indentationChars=b.config.dataIndentationChars||"\t";b.dataProcessor.writer=a}}); -CKEDITOR.htmlWriter=CKEDITOR.tools.createClass({base:CKEDITOR.htmlParser.basicWriter,$:function(){this.base();this.indentationChars="\t";this.selfClosingEnd=" />";this.lineBreakChars="\n";this.sortAttributes=1;this._.indent=0;this._.indentation="";this._.inPre=0;this._.rules={};var b=CKEDITOR.dtd,a;for(a in CKEDITOR.tools.extend({},b.$nonBodyContent,b.$block,b.$listItem,b.$tableContent))this.setRules(a,{indent:!b[a]["#"],breakBeforeOpen:1,breakBeforeClose:!b[a]["#"],breakAfterClose:1,needsSpace:a in -b.$block&&!(a in{li:1,dt:1,dd:1})});this.setRules("br",{breakAfterOpen:1});this.setRules("title",{indent:0,breakAfterOpen:0});this.setRules("style",{indent:0,breakBeforeClose:1});this.setRules("pre",{breakAfterOpen:1,indent:0})},proto:{openTag:function(b){var a=this._.rules[b];this._.afterCloser&&(a&&a.needsSpace&&this._.needsSpace)&&this._.output.push("\n");this._.indent?this.indentation():a&&a.breakBeforeOpen&&(this.lineBreak(),this.indentation());this._.output.push("<",b);this._.afterCloser=0}, -openTagClose:function(b,a){var c=this._.rules[b];a?(this._.output.push(this.selfClosingEnd),c&&c.breakAfterClose&&(this._.needsSpace=c.needsSpace)):(this._.output.push(">"),c&&c.indent&&(this._.indentation+=this.indentationChars));c&&c.breakAfterOpen&&this.lineBreak();"pre"==b&&(this._.inPre=1)},attribute:function(b,a){"string"==typeof a&&(this.forceSimpleAmpersand&&(a=a.replace(/&amp;/g,"&")),a=CKEDITOR.tools.htmlEncodeAttr(a));this._.output.push(" ",b,'="',a,'"')},closeTag:function(b){var a=this._.rules[b]; -a&&a.indent&&(this._.indentation=this._.indentation.substr(this.indentationChars.length));this._.indent?this.indentation():a&&a.breakBeforeClose&&(this.lineBreak(),this.indentation());this._.output.push("</",b,">");"pre"==b&&(this._.inPre=0);a&&a.breakAfterClose&&(this.lineBreak(),this._.needsSpace=a.needsSpace);this._.afterCloser=1},text:function(b){this._.indent&&(this.indentation(),!this._.inPre&&(b=CKEDITOR.tools.ltrim(b)));this._.output.push(b)},comment:function(b){this._.indent&&this.indentation(); -this._.output.push("<\!--",b,"--\>")},lineBreak:function(){!this._.inPre&&0<this._.output.length&&this._.output.push(this.lineBreakChars);this._.indent=1},indentation:function(){!this._.inPre&&this._.indentation&&this._.output.push(this._.indentation);this._.indent=0},reset:function(){this._.output=[];this._.indent=0;this._.indentation="";this._.afterCloser=0;this._.inPre=0},setRules:function(b,a){var c=this._.rules[b];c?CKEDITOR.tools.extend(c,a,!0):this._.rules[b]=a}}});(function(){function k(a){var d=this.editor,b=a.document,c=b.body;(a=b.getElementById("cke_actscrpt"))&&a.parentNode.removeChild(a);(a=b.getElementById("cke_shimscrpt"))&&a.parentNode.removeChild(a);CKEDITOR.env.gecko&&(c.contentEditable=!1,2E4>CKEDITOR.env.version&&(c.innerHTML=c.innerHTML.replace(/^.*<\!-- cke-content-start --\>/,""),setTimeout(function(){var a=new CKEDITOR.dom.range(new CKEDITOR.dom.document(b));a.setStart(new CKEDITOR.dom.node(c),0);d.getSelection().selectRanges([a])},0)));c.contentEditable= -!0;CKEDITOR.env.ie&&(c.hideFocus=!0,c.disabled=!0,c.removeAttribute("disabled"));delete this._.isLoadingData;this.$=c;b=new CKEDITOR.dom.document(b);this.setup();CKEDITOR.env.ie&&(b.getDocumentElement().addClass(b.$.compatMode),d.config.enterMode!=CKEDITOR.ENTER_P&&this.attachListener(b,"selectionchange",function(){var a=b.getBody(),c=d.getSelection(),e=c&&c.getRanges()[0];e&&(a.getHtml().match(/^<p>(?:&nbsp;|<br>)<\/p>$/i)&&e.startContainer.equals(a))&&setTimeout(function(){e=d.getSelection().getRanges()[0]; -if(!e.startContainer.equals("body")){a.getFirst().remove(1);e.moveToElementEditEnd(a);e.select()}},0)}));if(CKEDITOR.env.webkit||CKEDITOR.env.ie&&10<CKEDITOR.env.version)b.getDocumentElement().on("mousedown",function(a){a.data.getTarget().is("html")&&setTimeout(function(){d.editable().focus()})});try{d.document.$.execCommand("2D-position",!1,!0)}catch(e){}try{d.document.$.execCommand("enableInlineTableEditing",!1,!d.config.disableNativeTableHandles)}catch(g){}if(d.config.disableObjectResizing)try{this.getDocument().$.execCommand("enableObjectResizing", -!1,!1)}catch(f){this.attachListener(this,CKEDITOR.env.ie?"resizestart":"resize",function(a){a.data.preventDefault()})}(CKEDITOR.env.gecko||CKEDITOR.env.ie&&"CSS1Compat"==d.document.$.compatMode)&&this.attachListener(this,"keydown",function(a){var b=a.data.getKeystroke();if(b==33||b==34)if(CKEDITOR.env.ie)setTimeout(function(){d.getSelection().scrollIntoView()},0);else if(d.window.$.innerHeight>this.$.offsetHeight){var c=d.createRange();c[b==33?"moveToElementEditStart":"moveToElementEditEnd"](this); -c.select();a.data.preventDefault()}});CKEDITOR.env.ie&&this.attachListener(b,"blur",function(){try{b.$.selection.empty()}catch(a){}});d.document.getElementsByTag("title").getItem(0).data("cke-title",d.document.$.title);CKEDITOR.env.ie&&(d.document.$.title=this._.docTitle);CKEDITOR.tools.setTimeout(function(){d.fire("contentDom");if(this._.isPendingFocus){d.focus();this._.isPendingFocus=false}setTimeout(function(){d.fire("dataReady")},0);CKEDITOR.env.ie&&setTimeout(function(){if(d.document){var a= -d.document.$.body;a.runtimeStyle.marginBottom="0px";a.runtimeStyle.marginBottom=""}},1E3)},0,this)}function l(){var a=[];if(8<=CKEDITOR.document.$.documentMode){a.push("html.CSS1Compat [contenteditable=false]{min-height:0 !important}");var d=[],b;for(b in CKEDITOR.dtd.$removeEmpty)d.push("html.CSS1Compat "+b+"[contenteditable=false]");a.push(d.join(",")+"{display:inline-block}")}else CKEDITOR.env.gecko&&(a.push("html{height:100% !important}"),a.push("img:-moz-broken{-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}")); -a.push("html{cursor:text;*cursor:auto}");a.push("img,input,textarea{cursor:default}");return a.join("\n")}CKEDITOR.plugins.add("wysiwygarea",{init:function(a){a.config.fullPage&&a.addFeature({allowedContent:"html head title; style [media,type]; body (*)[id]; meta link [*]",requiredContent:"body"});a.addMode("wysiwyg",function(d){function b(b){b&&b.removeListener();a.editable(new j(a,e.$.contentWindow.document.body));a.setData(a.getData(1),d)}var c="document.open();"+(CKEDITOR.env.ie?"("+CKEDITOR.tools.fixDomain+ -")();":"")+"document.close();",c=CKEDITOR.env.air?"javascript:void(0)":CKEDITOR.env.ie?"javascript:void(function(){"+encodeURIComponent(c)+"}())":"",e=CKEDITOR.dom.element.createFromHtml('<iframe src="'+c+'" frameBorder="0"></iframe>');e.setStyles({width:"100%",height:"100%"});e.addClass("cke_wysiwyg_frame cke_reset");var g=a.ui.space("contents");g.append(e);if(c=CKEDITOR.env.ie||CKEDITOR.env.gecko)e.on("load",b);var f=a.title,h=a.lang.common.editorHelp;f&&(CKEDITOR.env.ie&&(f+=", "+h),e.setAttribute("title", -f));var f=CKEDITOR.tools.getNextId(),i=CKEDITOR.dom.element.createFromHtml('<span id="'+f+'" class="cke_voice_label">'+h+"</span>");g.append(i,1);a.on("beforeModeUnload",function(a){a.removeListener();i.remove()});e.setAttributes({"aria-describedby":f,tabIndex:a.tabIndex,allowTransparency:"true"});!c&&b();CKEDITOR.env.webkit&&(c=function(){g.setStyle("width","100%");e.hide();e.setSize("width",g.getSize("width"));g.removeStyle("width");e.show()},e.setCustomData("onResize",c),CKEDITOR.document.getWindow().on("resize", -c));a.fire("ariaWidget",e)})}});var j=CKEDITOR.tools.createClass({$:function(a){this.base.apply(this,arguments);this._.frameLoadedHandler=CKEDITOR.tools.addFunction(function(a){CKEDITOR.tools.setTimeout(k,0,this,a)},this);this._.docTitle=this.getWindow().getFrame().getAttribute("title")},base:CKEDITOR.editable,proto:{setData:function(a,d){var b=this.editor;if(d)this.setHtml(a),b.fire("dataReady");else{this._.isLoadingData=!0;b._.dataStore={id:1};var c=b.config,e=c.fullPage,g=c.docType,f=CKEDITOR.tools.buildStyleHtml(l()).replace(/<style>/, -'<style data-cke-temp="1">');e||(f+=CKEDITOR.tools.buildStyleHtml(b.config.contentsCss));var h=c.baseHref?'<base href="'+c.baseHref+'" data-cke-temp="1" />':"";e&&(a=a.replace(/<!DOCTYPE[^>]*>/i,function(a){b.docType=g=a;return""}).replace(/<\?xml\s[^\?]*\?>/i,function(a){b.xmlDeclaration=a;return""}));a=b.dataProcessor.toHtml(a);e?(/<body[\s|>]/.test(a)||(a="<body>"+a),/<html[\s|>]/.test(a)||(a="<html>"+a+"</html>"),/<head[\s|>]/.test(a)?/<title[\s|>]/.test(a)||(a=a.replace(/<head[^>]*>/,"$&<title></title>")): -a=a.replace(/<html[^>]*>/,"$&<head><title></title></head>"),h&&(a=a.replace(/<head>/,"$&"+h)),a=a.replace(/<\/head\s*>/,f+"$&"),a=g+a):a=c.docType+'<html dir="'+c.contentsLangDirection+'" lang="'+(c.contentsLanguage||b.langCode)+'"><head><title>'+this._.docTitle+"</title>"+h+f+"</head><body"+(c.bodyId?' id="'+c.bodyId+'"':"")+(c.bodyClass?' class="'+c.bodyClass+'"':"")+">"+a+"</body></html>";CKEDITOR.env.gecko&&(a=a.replace(/<body/,'<body contenteditable="true" '),2E4>CKEDITOR.env.version&&(a=a.replace(/<body[^>]*>/, -"$&<\!-- cke-content-start --\>")));c='<script id="cke_actscrpt" type="text/javascript"'+(CKEDITOR.env.ie?' defer="defer" ':"")+">var wasLoaded=0;function onload(){if(!wasLoaded)window.parent.CKEDITOR.tools.callFunction("+this._.frameLoadedHandler+",window);wasLoaded=1;}"+(CKEDITOR.env.ie?"onload();":'document.addEventListener("DOMContentLoaded", onload, false );')+"<\/script>";CKEDITOR.env.ie&&9>CKEDITOR.env.version&&(c+='<script id="cke_shimscrpt">window.parent.CKEDITOR.tools.enableHtml5Elements(document)<\/script>'); -a=a.replace(/(?=\s*<\/(:?head)>)/,c);this.clearCustomData();this.clearListeners();b.fire("contentDomUnload");var i=this.getDocument();try{i.write(a)}catch(j){setTimeout(function(){i.write(a)},0)}}},getData:function(a){if(a)return this.getHtml();var a=this.editor,d=a.config,b=d.fullPage,c=b&&a.docType,e=b&&a.xmlDeclaration,g=this.getDocument(),b=b?g.getDocumentElement().getOuterHtml():g.getBody().getHtml();CKEDITOR.env.gecko&&d.enterMode!=CKEDITOR.ENTER_BR&&(b=b.replace(/<br>(?=\s*(:?$|<\/body>))/, -""));b=a.dataProcessor.toDataFormat(b);e&&(b=e+"\n"+b);c&&(b=c+"\n"+b);return b},focus:function(){this._.isLoadingData?this._.isPendingFocus=!0:j.baseProto.focus.call(this)},detach:function(){var a=this.editor,d=a.document,b=a.window.getFrame();j.baseProto.detach.call(this);this.clearCustomData();d.getDocumentElement().clearCustomData();b.clearCustomData();CKEDITOR.tools.removeFunction(this._.frameLoadedHandler);(d=b.removeCustomData("onResize"))&&d.removeListener();a.fire("contentDomUnload");b.remove()}}})})(); -CKEDITOR.config.disableObjectResizing=!1;CKEDITOR.config.disableNativeTableHandles=!0;CKEDITOR.config.disableNativeSpellChecker=!0;CKEDITOR.config.contentsCss=CKEDITOR.basePath+"contents.css";(function(){function e(b,a){a||(a=b.getSelection().getSelectedElement());if(a&&a.is("img")&&!a.data("cke-realelement")&&!a.isReadOnly())return a}function f(b){var a=b.getStyle("float");if("inherit"==a||"none"==a)a=0;a||(a=b.getAttribute("align"));return a}CKEDITOR.plugins.add("image",{requires:"dialog",init:function(b){if(!b.plugins.image2){CKEDITOR.dialog.add("image",this.path+"dialogs/image.js");var a="img[alt,!src]{border-style,border-width,float,height,margin,margin-bottom,margin-left,margin-right,margin-top,width}"; -CKEDITOR.dialog.isTabEnabled(b,"image","advanced")&&(a="img[alt,dir,id,lang,longdesc,!src,title]{*}(*)");b.addCommand("image",new CKEDITOR.dialogCommand("image",{allowedContent:a,requiredContent:"img[alt,src]",contentTransformations:[["img{width}: sizeToStyle","img[width]: sizeToAttribute"],["img{float}: alignmentToStyle","img[align]: alignmentToAttribute"]]}));b.ui.addButton&&b.ui.addButton("Image",{label:b.lang.common.image,command:"image",toolbar:"insert,10"});b.on("doubleclick",function(b){var a= -b.data.element;a.is("img")&&(!a.data("cke-realelement")&&!a.isReadOnly())&&(b.data.dialog="image")});b.addMenuItems&&b.addMenuItems({image:{label:b.lang.image.menu,command:"image",group:"image"}});b.contextMenu&&b.contextMenu.addListener(function(a){if(e(b,a))return{image:CKEDITOR.TRISTATE_OFF}})}},afterInit:function(b){function a(a){var d=b.getCommand("justify"+a);if(d){if("left"==a||"right"==a)d.on("exec",function(d){var c=e(b),g;c&&(g=f(c),g==a?(c.removeStyle("float"),a==f(c)&&c.removeAttribute("align")): -c.setStyle("float",a),d.cancel())});d.on("refresh",function(d){var c=e(b);c&&(c=f(c),this.setState(c==a?CKEDITOR.TRISTATE_ON:"right"==a||"left"==a?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED),d.cancel())})}}b.plugins.image2||(a("left"),a("right"),a("center"),a("block"))}})})();CKEDITOR.config.image_removeLinkByEmptyURL=!0;(function(){function k(a,b){var e,f;b.on("refresh",function(a){var b=[i],c;for(c in a.data.states)b.push(a.data.states[c]);this.setState(CKEDITOR.tools.search(b,m)?m:i)},b,null,100);b.on("exec",function(b){e=a.getSelection();f=e.createBookmarks(1);b.data||(b.data={});b.data.done=!1},b,null,0);b.on("exec",function(){a.forceNextSelectionCheck();e.selectBookmarks(f)},b,null,100)}var i=CKEDITOR.TRISTATE_DISABLED,m=CKEDITOR.TRISTATE_OFF;CKEDITOR.plugins.add("indent",{init:function(a){var b=CKEDITOR.plugins.indent.genericDefinition; -k(a,a.addCommand("indent",new b(!0)));k(a,a.addCommand("outdent",new b));a.ui.addButton&&(a.ui.addButton("Indent",{label:a.lang.indent.indent,command:"indent",directional:!0,toolbar:"indent,20"}),a.ui.addButton("Outdent",{label:a.lang.indent.outdent,command:"outdent",directional:!0,toolbar:"indent,10"}));a.on("dirChanged",function(b){var f=a.createRange(),j=b.data.node;f.setStartBefore(j);f.setEndAfter(j);for(var l=new CKEDITOR.dom.walker(f),c;c=l.next();)if(c.type==CKEDITOR.NODE_ELEMENT)if(!c.equals(j)&& -c.getDirection()){f.setStartAfter(c);l=new CKEDITOR.dom.walker(f)}else{var d=a.config.indentClasses;if(d)for(var g=b.data.dir=="ltr"?["_rtl",""]:["","_rtl"],h=0;h<d.length;h++)if(c.hasClass(d[h]+g[0])){c.removeClass(d[h]+g[0]);c.addClass(d[h]+g[1])}d=c.getStyle("margin-right");g=c.getStyle("margin-left");d?c.setStyle("margin-left",d):c.removeStyle("margin-left");g?c.setStyle("margin-right",g):c.removeStyle("margin-right")}})}});CKEDITOR.plugins.indent={genericDefinition:function(a){this.isIndent= -!!a;this.startDisabled=!this.isIndent},specificDefinition:function(a,b,e){this.name=b;this.editor=a;this.jobs={};this.enterBr=a.config.enterMode==CKEDITOR.ENTER_BR;this.isIndent=!!e;this.relatedGlobal=e?"indent":"outdent";this.indentKey=e?9:CKEDITOR.SHIFT+9;this.database={}},registerCommands:function(a,b){a.on("pluginsLoaded",function(){for(var a in b)(function(a,b){var e=a.getCommand(b.relatedGlobal),c;for(c in b.jobs)e.on("exec",function(d){d.data.done||(a.fire("lockSnapshot"),b.execJob(a,c)&&(d.data.done= -!0),a.fire("unlockSnapshot"),CKEDITOR.dom.element.clearAllMarkers(b.database))},this,null,c),e.on("refresh",function(d){d.data.states||(d.data.states={});d.data.states[b.name+"@"+c]=b.refreshJob(a,c,d.data.path)},this,null,c);a.addFeature(b)})(this,b[a])})}};CKEDITOR.plugins.indent.genericDefinition.prototype={context:"p",exec:function(){}};CKEDITOR.plugins.indent.specificDefinition.prototype={execJob:function(a,b){var e=this.jobs[b];if(e.state!=i)return e.exec.call(this,a)},refreshJob:function(a, -b,e){b=this.jobs[b];b.state=a.activeFilter.checkFeature(this)?b.refresh.call(this,a,e):i;return b.state},getContext:function(a){return a.contains(this.context)}}})();(function(){function s(e){function g(b){for(var f=d.startContainer,a=d.endContainer;f&&!f.getParent().equals(b);)f=f.getParent();for(;a&&!a.getParent().equals(b);)a=a.getParent();if(!f||!a)return!1;for(var h=f,f=[],c=!1;!c;)h.equals(a)&&(c=!0),f.push(h),h=h.getNext();if(1>f.length)return!1;h=b.getParents(!0);for(a=0;a<h.length;a++)if(h[a].getName&&k[h[a].getName()]){b=h[a];break}for(var h=n.isIndent?1:-1,a=f[0],f=f[f.length-1],c=CKEDITOR.plugins.list.listToArray(b,o),g=c[f.getCustomData("listarray_index")].indent, -a=a.getCustomData("listarray_index");a<=f.getCustomData("listarray_index");a++)if(c[a].indent+=h,0<h){var l=c[a].parent;c[a].parent=new CKEDITOR.dom.element(l.getName(),l.getDocument())}for(a=f.getCustomData("listarray_index")+1;a<c.length&&c[a].indent>g;a++)c[a].indent+=h;f=CKEDITOR.plugins.list.arrayToList(c,o,null,e.config.enterMode,b.getDirection());if(!n.isIndent){var i;if((i=b.getParent())&&i.is("li"))for(var h=f.listNode.getChildren(),m=[],j,a=h.count()-1;0<=a;a--)(j=h.getItem(a))&&(j.is&& -j.is("li"))&&m.push(j)}f&&f.listNode.replace(b);if(m&&m.length)for(a=0;a<m.length;a++){for(j=b=m[a];(j=j.getNext())&&j.is&&j.getName()in k;)CKEDITOR.env.needsNbspFiller&&!b.getFirst(t)&&b.append(d.document.createText(" ")),b.append(j);b.insertAfter(i)}f&&e.fire("contentDomInvalidated");return!0}for(var n=this,o=this.database,k=this.context,l=e.getSelection(),l=(l&&l.getRanges()).createIterator(),d;d=l.getNextRange();){for(var b=d.getCommonAncestor();b&&!(b.type==CKEDITOR.NODE_ELEMENT&&k[b.getName()]);)b= -b.getParent();b||(b=d.startPath().contains(k))&&d.setEndAt(b,CKEDITOR.POSITION_BEFORE_END);if(!b){var c=d.getEnclosedNode();c&&(c.type==CKEDITOR.NODE_ELEMENT&&c.getName()in k)&&(d.setStartAt(c,CKEDITOR.POSITION_AFTER_START),d.setEndAt(c,CKEDITOR.POSITION_BEFORE_END),b=c)}b&&(d.startContainer.type==CKEDITOR.NODE_ELEMENT&&d.startContainer.getName()in k)&&(c=new CKEDITOR.dom.walker(d),c.evaluator=i,d.startContainer=c.next());b&&(d.endContainer.type==CKEDITOR.NODE_ELEMENT&&d.endContainer.getName()in k)&& -(c=new CKEDITOR.dom.walker(d),c.evaluator=i,d.endContainer=c.previous());if(b)return g(b)}return 0}function p(e,g){g||(g=e.contains(this.context));return g&&e.block&&e.block.equals(g.getFirst(i))}function i(e){return e.type==CKEDITOR.NODE_ELEMENT&&e.is("li")}function t(e){return u(e)&&v(e)}var u=CKEDITOR.dom.walker.whitespaces(!0),v=CKEDITOR.dom.walker.bookmark(!1,!0),q=CKEDITOR.TRISTATE_DISABLED,r=CKEDITOR.TRISTATE_OFF;CKEDITOR.plugins.add("indentlist",{requires:"indent",init:function(e){function g(e, -g){i.specificDefinition.apply(this,arguments);this.requiredContent=["ul","ol"];e.on("key",function(g){if("wysiwyg"==e.mode&&g.data.keyCode==this.indentKey){var d=this.getContext(e.elementPath());if(d&&(!this.isIndent||!p.call(this,e.elementPath(),d)))e.execCommand(this.relatedGlobal),g.cancel()}},this);this.jobs[this.isIndent?10:30]={refresh:this.isIndent?function(e,d){var b=this.getContext(d),c=p.call(this,d,b);return!b||!this.isIndent||c?q:r}:function(e,d){return!this.getContext(d)||this.isIndent? -q:r},exec:CKEDITOR.tools.bind(s,this)}}var i=CKEDITOR.plugins.indent;i.registerCommands(e,{indentlist:new g(e,"indentlist",!0),outdentlist:new g(e,"outdentlist")});CKEDITOR.tools.extend(g.prototype,i.specificDefinition.prototype,{context:{ol:1,ul:1}})}})})();(function(){function g(a,b){var c=j.exec(a),d=j.exec(b);if(c){if(!c[2]&&"px"==d[2])return d[1];if("px"==c[2]&&!d[2])return d[1]+"px"}return b}var i=CKEDITOR.htmlParser.cssStyle,h=CKEDITOR.tools.cssLength,j=/^((?:\d*(?:\.\d+))|(?:\d+))(.*)?$/i,l={elements:{$:function(a){var b=a.attributes;if((b=(b=(b=b&&b["data-cke-realelement"])&&new CKEDITOR.htmlParser.fragment.fromHtml(decodeURIComponent(b)))&&b.children[0])&&a.attributes["data-cke-resizable"]){var c=(new i(a)).rules,a=b.attributes,d=c.width,c= -c.height;d&&(a.width=g(a.width,d));c&&(a.height=g(a.height,c))}return b}}},k=CKEDITOR.plugins.add("fakeobjects",{init:function(a){a.filter.allow("img[!data-cke-realelement,src,alt,title](*){*}","fakeobjects")},afterInit:function(a){(a=(a=a.dataProcessor)&&a.htmlFilter)&&a.addRules(l)}});CKEDITOR.editor.prototype.createFakeElement=function(a,b,c,d){var e=this.lang.fakeobjects,e=e[c]||e.unknown,b={"class":b,"data-cke-realelement":encodeURIComponent(a.getOuterHtml()),"data-cke-real-node-type":a.type, -alt:e,title:e,align:a.getAttribute("align")||""};CKEDITOR.env.hc||(b.src=CKEDITOR.getUrl(k.path+"images/spacer.gif"));c&&(b["data-cke-real-element-type"]=c);d&&(b["data-cke-resizable"]=d,c=new i,d=a.getAttribute("width"),a=a.getAttribute("height"),d&&(c.rules.width=h(d)),a&&(c.rules.height=h(a)),c.populate(b));return this.document.createElement("img",{attributes:b})};CKEDITOR.editor.prototype.createFakeParserElement=function(a,b,c,d){var e=this.lang.fakeobjects,e=e[c]||e.unknown,f;f=new CKEDITOR.htmlParser.basicWriter; -a.writeHtml(f);f=f.getHtml();b={"class":b,"data-cke-realelement":encodeURIComponent(f),"data-cke-real-node-type":a.type,alt:e,title:e,align:a.attributes.align||""};CKEDITOR.env.hc||(b.src=CKEDITOR.getUrl(k.path+"images/spacer.gif"));c&&(b["data-cke-real-element-type"]=c);d&&(b["data-cke-resizable"]=d,d=a.attributes,a=new i,c=d.width,d=d.height,void 0!=c&&(a.rules.width=h(c)),void 0!=d&&(a.rules.height=h(d)),a.populate(b));return new CKEDITOR.htmlParser.element("img",b)};CKEDITOR.editor.prototype.restoreRealElement= -function(a){if(a.data("cke-real-node-type")!=CKEDITOR.NODE_ELEMENT)return null;var b=CKEDITOR.dom.element.createFromHtml(decodeURIComponent(a.data("cke-realelement")),this.document);if(a.data("cke-resizable")){var c=a.getStyle("width"),a=a.getStyle("height");c&&b.setAttribute("width",g(b.getAttribute("width"),c));a&&b.setAttribute("height",g(b.getAttribute("height"),a))}return b}})();CKEDITOR.plugins.add("link",{requires:"dialog,fakeobjects",onLoad:function(){function b(b){return d.replace(/%1/g,"rtl"==b?"right":"left").replace(/%2/g,"cke_contents_"+b)}var a="background:url("+CKEDITOR.getUrl(this.path+"images"+(CKEDITOR.env.hidpi?"/hidpi":"")+"/anchor.png")+") no-repeat %1 center;border:1px dotted #00f;background-size:16px;",d=".%2 a.cke_anchor,.%2 a.cke_anchor_empty,.cke_editable.%2 a[name],.cke_editable.%2 a[data-cke-saved-name]{"+a+"padding-%1:18px;cursor:auto;}"+(CKEDITOR.plugins.link.synAnchorSelector? -"a.cke_anchor_empty{display:inline-block;}":"")+".%2 img.cke_anchor{"+a+"width:16px;min-height:15px;height:1.15em;vertical-align:"+(CKEDITOR.env.opera?"middle":"text-bottom")+";}";CKEDITOR.addCss(b("ltr")+b("rtl"))},init:function(b){var a="a[!href]";CKEDITOR.dialog.isTabEnabled(b,"link","advanced")&&(a=a.replace("]",",accesskey,charset,dir,id,lang,name,rel,tabindex,title,type]{*}(*)"));CKEDITOR.dialog.isTabEnabled(b,"link","target")&&(a=a.replace("]",",target,onclick]"));b.addCommand("link",new CKEDITOR.dialogCommand("link", -{allowedContent:a,requiredContent:"a[href]"}));b.addCommand("anchor",new CKEDITOR.dialogCommand("anchor",{allowedContent:"a[!name,id]",requiredContent:"a[name]"}));b.addCommand("unlink",new CKEDITOR.unlinkCommand);b.addCommand("removeAnchor",new CKEDITOR.removeAnchorCommand);b.setKeystroke(CKEDITOR.CTRL+76,"link");b.ui.addButton&&(b.ui.addButton("Link",{label:b.lang.link.toolbar,command:"link",toolbar:"links,10"}),b.ui.addButton("Unlink",{label:b.lang.link.unlink,command:"unlink",toolbar:"links,20"}), -b.ui.addButton("Anchor",{label:b.lang.link.anchor.toolbar,command:"anchor",toolbar:"links,30"}));CKEDITOR.dialog.add("link",this.path+"dialogs/link.js");CKEDITOR.dialog.add("anchor",this.path+"dialogs/anchor.js");b.on("doubleclick",function(a){var c=CKEDITOR.plugins.link.getSelectedLink(b)||a.data.element;if(!c.isReadOnly())if(c.is("a")){a.data.dialog=c.getAttribute("name")&&(!c.getAttribute("href")||!c.getChildCount())?"anchor":"link";b.getSelection().selectElement(c)}else if(CKEDITOR.plugins.link.tryRestoreFakeAnchor(b, -c))a.data.dialog="anchor"});b.addMenuItems&&b.addMenuItems({anchor:{label:b.lang.link.anchor.menu,command:"anchor",group:"anchor",order:1},removeAnchor:{label:b.lang.link.anchor.remove,command:"removeAnchor",group:"anchor",order:5},link:{label:b.lang.link.menu,command:"link",group:"link",order:1},unlink:{label:b.lang.link.unlink,command:"unlink",group:"link",order:5}});b.contextMenu&&b.contextMenu.addListener(function(a){if(!a||a.isReadOnly())return null;a=CKEDITOR.plugins.link.tryRestoreFakeAnchor(b, -a);if(!a&&!(a=CKEDITOR.plugins.link.getSelectedLink(b)))return null;var c={};a.getAttribute("href")&&a.getChildCount()&&(c={link:CKEDITOR.TRISTATE_OFF,unlink:CKEDITOR.TRISTATE_OFF});if(a&&a.hasAttribute("name"))c.anchor=c.removeAnchor=CKEDITOR.TRISTATE_OFF;return c})},afterInit:function(b){var a=b.dataProcessor,d=a&&a.dataFilter,a=a&&a.htmlFilter,c=b._.elementsPath&&b._.elementsPath.filters;d&&d.addRules({elements:{a:function(a){var c=a.attributes;if(!c.name)return null;var d=!a.children.length;if(CKEDITOR.plugins.link.synAnchorSelector){var a= -d?"cke_anchor_empty":"cke_anchor",e=c["class"];if(c.name&&(!e||0>e.indexOf(a)))c["class"]=(e||"")+" "+a;d&&CKEDITOR.plugins.link.emptyAnchorFix&&(c.contenteditable="false",c["data-cke-editable"]=1)}else if(CKEDITOR.plugins.link.fakeAnchor&&d)return b.createFakeParserElement(a,"cke_anchor","anchor");return null}}});CKEDITOR.plugins.link.emptyAnchorFix&&a&&a.addRules({elements:{a:function(a){delete a.attributes.contenteditable}}});c&&c.push(function(a,c){if("a"==c&&(CKEDITOR.plugins.link.tryRestoreFakeAnchor(b, -a)||a.getAttribute("name")&&(!a.getAttribute("href")||!a.getChildCount())))return"anchor"})}}); -CKEDITOR.plugins.link={getSelectedLink:function(b){var a=b.getSelection(),d=a.getSelectedElement();return d&&d.is("a")?d:(a=a.getRanges()[0])?(a.shrink(CKEDITOR.SHRINK_TEXT),b.elementPath(a.getCommonAncestor()).contains("a",1)):null},fakeAnchor:CKEDITOR.env.opera||CKEDITOR.env.webkit,synAnchorSelector:CKEDITOR.env.ie&&11>CKEDITOR.env.version,emptyAnchorFix:CKEDITOR.env.ie&&8>CKEDITOR.env.version,tryRestoreFakeAnchor:function(b,a){if(a&&a.data("cke-real-element-type")&&"anchor"==a.data("cke-real-element-type")){var d= -b.restoreRealElement(a);if(d.data("cke-saved-name"))return d}}};CKEDITOR.unlinkCommand=function(){}; -CKEDITOR.unlinkCommand.prototype={exec:function(b){var a=new CKEDITOR.style({element:"a",type:CKEDITOR.STYLE_INLINE,alwaysRemoveElement:1});b.removeStyle(a)},refresh:function(b,a){var d=a.lastElement&&a.lastElement.getAscendant("a",!0);d&&"a"==d.getName()&&d.getAttribute("href")&&d.getChildCount()?this.setState(CKEDITOR.TRISTATE_OFF):this.setState(CKEDITOR.TRISTATE_DISABLED)},contextSensitive:1,startDisabled:1,requiredContent:"a[href]"};CKEDITOR.removeAnchorCommand=function(){}; -CKEDITOR.removeAnchorCommand.prototype={exec:function(b){var a=b.getSelection(),d=a.createBookmarks(),c;if(a&&(c=a.getSelectedElement())&&(CKEDITOR.plugins.link.fakeAnchor&&!c.getChildCount()?CKEDITOR.plugins.link.tryRestoreFakeAnchor(b,c):c.is("a")))c.remove(1);else if(c=CKEDITOR.plugins.link.getSelectedLink(b))c.hasAttribute("href")?(c.removeAttributes({name:1,"data-cke-saved-name":1}),c.removeClass("cke_anchor")):c.remove(1);a.selectBookmarks(d)},requiredContent:"a[name]"}; -CKEDITOR.tools.extend(CKEDITOR.config,{linkShowAdvancedTab:!0,linkShowTargetTab:!0});(function(){function E(c,k,e){function b(b){if((d=a[b?"getFirst":"getLast"]())&&(!d.is||!d.isBlockBoundary())&&(m=k.root[b?"getPrevious":"getNext"](CKEDITOR.dom.walker.invisible(!0)))&&(!m.is||!m.isBlockBoundary({br:1})))c.document.createElement("br")[b?"insertBefore":"insertAfter"](d)}for(var j=CKEDITOR.plugins.list.listToArray(k.root,e),g=[],h=0;h<k.contents.length;h++){var f=k.contents[h];if((f=f.getAscendant("li",!0))&&!f.getCustomData("list_item_processed"))g.push(f),CKEDITOR.dom.element.setMarker(e, -f,"list_item_processed",!0)}f=null;for(h=0;h<g.length;h++)f=g[h].getCustomData("listarray_index"),j[f].indent=-1;for(h=f+1;h<j.length;h++)if(j[h].indent>j[h-1].indent+1){g=j[h-1].indent+1-j[h].indent;for(f=j[h].indent;j[h]&&j[h].indent>=f;)j[h].indent+=g,h++;h--}var a=CKEDITOR.plugins.list.arrayToList(j,e,null,c.config.enterMode,k.root.getAttribute("dir")).listNode,d,m;b(!0);b();a.replace(k.root);c.fire("contentDomInvalidated")}function x(c,k){this.name=c;this.context=this.type=k;this.allowedContent= -k+" li";this.requiredContent=k}function A(c,k,e,b){for(var j,g;j=c[b?"getLast":"getFirst"](F);)(g=j.getDirection(1))!==k.getDirection(1)&&j.setAttribute("dir",g),j.remove(),e?j[b?"insertBefore":"insertAfter"](e):k.append(j,b)}function B(c){var k;(k=function(e){var b=c[e?"getPrevious":"getNext"](q);b&&(b.type==CKEDITOR.NODE_ELEMENT&&b.is(c.getName()))&&(A(c,b,null,!e),c.remove(),c=b)})();k(1)}function C(c){return c.type==CKEDITOR.NODE_ELEMENT&&(c.getName()in CKEDITOR.dtd.$block||c.getName()in CKEDITOR.dtd.$listItem)&& -CKEDITOR.dtd[c.getName()]["#"]}function y(c,k,e){c.fire("saveSnapshot");e.enlarge(CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS);var b=e.extractContents();k.trim(!1,!0);var j=k.createBookmark(),g=new CKEDITOR.dom.elementPath(k.startContainer),h=g.block,g=g.lastElement.getAscendant("li",1)||h,f=new CKEDITOR.dom.elementPath(e.startContainer),a=f.contains(CKEDITOR.dtd.$listItem),f=f.contains(CKEDITOR.dtd.$list);h?(h=h.getBogus())&&h.remove():f&&(h=f.getPrevious(q))&&v(h)&&h.remove();(h=b.getLast())&&(h.type== -CKEDITOR.NODE_ELEMENT&&h.is("br"))&&h.remove();(h=k.startContainer.getChild(k.startOffset))?b.insertBefore(h):k.startContainer.append(b);if(a&&(b=w(a)))g.contains(a)?(A(b,a.getParent(),a),b.remove()):g.append(b);for(;e.checkStartOfBlock()&&e.checkEndOfBlock();){f=e.startPath();b=f.block;if(!b)break;b.is("li")&&(g=b.getParent(),b.equals(g.getLast(q))&&b.equals(g.getFirst(q))&&(b=g));e.moveToPosition(b,CKEDITOR.POSITION_BEFORE_START);b.remove()}e=e.clone();b=c.editable();e.setEndAt(b,CKEDITOR.POSITION_BEFORE_END); -e=new CKEDITOR.dom.walker(e);e.evaluator=function(a){return q(a)&&!v(a)};(e=e.next())&&(e.type==CKEDITOR.NODE_ELEMENT&&e.getName()in CKEDITOR.dtd.$list)&&B(e);k.moveToBookmark(j);k.select();c.fire("saveSnapshot")}function w(c){return(c=c.getLast(q))&&c.type==CKEDITOR.NODE_ELEMENT&&c.getName()in r?c:null}var r={ol:1,ul:1},G=CKEDITOR.dom.walker.whitespaces(),D=CKEDITOR.dom.walker.bookmark(),q=function(c){return!(G(c)||D(c))},v=CKEDITOR.dom.walker.bogus();CKEDITOR.plugins.list={listToArray:function(c, -k,e,b,j){if(!r[c.getName()])return[];b||(b=0);e||(e=[]);for(var g=0,h=c.getChildCount();g<h;g++){var f=c.getChild(g);f.type==CKEDITOR.NODE_ELEMENT&&f.getName()in CKEDITOR.dtd.$list&&CKEDITOR.plugins.list.listToArray(f,k,e,b+1);if("li"==f.$.nodeName.toLowerCase()){var a={parent:c,indent:b,element:f,contents:[]};j?a.grandparent=j:(a.grandparent=c.getParent(),a.grandparent&&"li"==a.grandparent.$.nodeName.toLowerCase()&&(a.grandparent=a.grandparent.getParent()));k&&CKEDITOR.dom.element.setMarker(k,f, -"listarray_index",e.length);e.push(a);for(var d=0,m=f.getChildCount(),i;d<m;d++)i=f.getChild(d),i.type==CKEDITOR.NODE_ELEMENT&&r[i.getName()]?CKEDITOR.plugins.list.listToArray(i,k,e,b+1,a.grandparent):a.contents.push(i)}}return e},arrayToList:function(c,k,e,b,j){e||(e=0);if(!c||c.length<e+1)return null;for(var g,h=c[e].parent.getDocument(),f=new CKEDITOR.dom.documentFragment(h),a=null,d=e,m=Math.max(c[e].indent,0),i=null,n,l,p=b==CKEDITOR.ENTER_P?"p":"div";;){var o=c[d];g=o.grandparent;n=o.element.getDirection(1); -if(o.indent==m){if(!a||c[d].parent.getName()!=a.getName())a=c[d].parent.clone(!1,1),j&&a.setAttribute("dir",j),f.append(a);i=a.append(o.element.clone(0,1));n!=a.getDirection(1)&&i.setAttribute("dir",n);for(g=0;g<o.contents.length;g++)i.append(o.contents[g].clone(1,1));d++}else if(o.indent==Math.max(m,0)+1)o=c[d-1].element.getDirection(1),d=CKEDITOR.plugins.list.arrayToList(c,null,d,b,o!=n?n:null),!i.getChildCount()&&(CKEDITOR.env.needsNbspFiller&&!(7<h.$.documentMode))&&i.append(h.createText(" ")), -i.append(d.listNode),d=d.nextIndex;else if(-1==o.indent&&!e&&g){r[g.getName()]?(i=o.element.clone(!1,!0),n!=g.getDirection(1)&&i.setAttribute("dir",n)):i=new CKEDITOR.dom.documentFragment(h);var a=g.getDirection(1)!=n,u=o.element,z=u.getAttribute("class"),v=u.getAttribute("style"),w=i.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT&&(b!=CKEDITOR.ENTER_BR||a||v||z),s,x=o.contents.length,t;for(g=0;g<x;g++)if(s=o.contents[g],D(s)&&1<x)w?t=s.clone(1,1):i.append(s.clone(1,1));else if(s.type==CKEDITOR.NODE_ELEMENT&& -s.isBlockBoundary()){a&&!s.getDirection()&&s.setAttribute("dir",n);l=s;var y=u.getAttribute("style");y&&l.setAttribute("style",y.replace(/([^;])$/,"$1;")+(l.getAttribute("style")||""));z&&s.addClass(z);l=null;t&&(i.append(t),t=null);i.append(s.clone(1,1))}else w?(l||(l=h.createElement(p),i.append(l),a&&l.setAttribute("dir",n)),v&&l.setAttribute("style",v),z&&l.setAttribute("class",z),t&&(l.append(t),t=null),l.append(s.clone(1,1))):i.append(s.clone(1,1));t&&((l||i).append(t),t=null);i.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT&& -d!=c.length-1&&(CKEDITOR.env.needsBrFiller&&(n=i.getLast())&&(n.type==CKEDITOR.NODE_ELEMENT&&n.is("br"))&&n.remove(),n=i.getLast(q),(!n||!(n.type==CKEDITOR.NODE_ELEMENT&&n.is(CKEDITOR.dtd.$block)))&&i.append(h.createElement("br")));n=i.$.nodeName.toLowerCase();("div"==n||"p"==n)&&i.appendBogus();f.append(i);a=null;d++}else return null;l=null;if(c.length<=d||Math.max(c[d].indent,0)<m)break}if(k)for(c=f.getFirst();c;){if(c.type==CKEDITOR.NODE_ELEMENT&&(CKEDITOR.dom.element.clearMarkers(k,c),c.getName()in -CKEDITOR.dtd.$listItem&&(e=c,h=j=b=void 0,b=e.getDirection()))){for(j=e.getParent();j&&!(h=j.getDirection());)j=j.getParent();b==h&&e.removeAttribute("dir")}c=c.getNextSourceNode()}return{listNode:f,nextIndex:d}}};var H=/^h[1-6]$/,F=CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_ELEMENT);x.prototype={exec:function(c){this.refresh(c,c.elementPath());var k=c.config,e=c.getSelection(),b=e&&e.getRanges();if(this.state==CKEDITOR.TRISTATE_OFF){var j=c.editable();if(j.getFirst(q)){var g=1==b.length&&b[0];(k= -g&&g.getEnclosedNode())&&(k.is&&this.type==k.getName())&&this.setState(CKEDITOR.TRISTATE_ON)}else k.enterMode==CKEDITOR.ENTER_BR?j.appendBogus():b[0].fixBlock(1,k.enterMode==CKEDITOR.ENTER_P?"p":"div"),e.selectRanges(b)}for(var k=e.createBookmarks(!0),j=[],h={},b=b.createIterator(),f=0;(g=b.getNextRange())&&++f;){var a=g.getBoundaryNodes(),d=a.startNode,m=a.endNode;d.type==CKEDITOR.NODE_ELEMENT&&"td"==d.getName()&&g.setStartAt(a.startNode,CKEDITOR.POSITION_AFTER_START);m.type==CKEDITOR.NODE_ELEMENT&& -"td"==m.getName()&&g.setEndAt(a.endNode,CKEDITOR.POSITION_BEFORE_END);g=g.createIterator();for(g.forceBrBreak=this.state==CKEDITOR.TRISTATE_OFF;a=g.getNextParagraph();)if(!a.getCustomData("list_block")){CKEDITOR.dom.element.setMarker(h,a,"list_block",1);for(var i=c.elementPath(a),d=i.elements,m=0,i=i.blockLimit,n,l=d.length-1;0<=l&&(n=d[l]);l--)if(r[n.getName()]&&i.contains(n)){i.removeCustomData("list_group_object_"+f);(d=n.getCustomData("list_group_object"))?d.contents.push(a):(d={root:n,contents:[a]}, -j.push(d),CKEDITOR.dom.element.setMarker(h,n,"list_group_object",d));m=1;break}m||(m=i,m.getCustomData("list_group_object_"+f)?m.getCustomData("list_group_object_"+f).contents.push(a):(d={root:m,contents:[a]},CKEDITOR.dom.element.setMarker(h,m,"list_group_object_"+f,d),j.push(d)))}}for(n=[];0<j.length;)if(d=j.shift(),this.state==CKEDITOR.TRISTATE_OFF)if(r[d.root.getName()]){b=c;f=d;d=h;g=n;m=CKEDITOR.plugins.list.listToArray(f.root,d);i=[];for(a=0;a<f.contents.length;a++)if(l=f.contents[a],(l=l.getAscendant("li", -!0))&&!l.getCustomData("list_item_processed"))i.push(l),CKEDITOR.dom.element.setMarker(d,l,"list_item_processed",!0);for(var l=f.root.getDocument(),p=void 0,o=void 0,a=0;a<i.length;a++){var u=i[a].getCustomData("listarray_index"),p=m[u].parent;p.is(this.type)||(o=l.createElement(this.type),p.copyAttributes(o,{start:1,type:1}),o.removeStyle("list-style-type"),m[u].parent=o)}d=CKEDITOR.plugins.list.arrayToList(m,d,null,b.config.enterMode);m=void 0;i=d.listNode.getChildCount();for(a=0;a<i&&(m=d.listNode.getChild(a));a++)m.getName()== -this.type&&g.push(m);d.listNode.replace(f.root);b.fire("contentDomInvalidated")}else{m=c;a=d;g=n;i=a.contents;b=a.root.getDocument();f=[];1==i.length&&i[0].equals(a.root)&&(d=b.createElement("div"),i[0].moveChildren&&i[0].moveChildren(d),i[0].append(d),i[0]=d);a=a.contents[0].getParent();for(l=0;l<i.length;l++)a=a.getCommonAncestor(i[l].getParent());p=m.config.useComputedState;m=d=void 0;p=void 0===p||p;for(l=0;l<i.length;l++)for(o=i[l];u=o.getParent();){if(u.equals(a)){f.push(o);!m&&o.getDirection()&& -(m=1);o=o.getDirection(p);null!==d&&(d=d&&d!=o?null:o);break}o=u}if(!(1>f.length)){i=f[f.length-1].getNext();l=b.createElement(this.type);g.push(l);for(p=g=void 0;f.length;)g=f.shift(),p=b.createElement("li"),g.is("pre")||H.test(g.getName())||"false"==g.getAttribute("contenteditable")?g.appendTo(p):(g.copyAttributes(p),d&&g.getDirection()&&(p.removeStyle("direction"),p.removeAttribute("dir")),g.moveChildren(p),g.remove()),p.appendTo(l);d&&m&&l.setAttribute("dir",d);i?l.insertBefore(i):l.appendTo(a)}}else this.state== -CKEDITOR.TRISTATE_ON&&r[d.root.getName()]&&E.call(this,c,d,h);for(l=0;l<n.length;l++)B(n[l]);CKEDITOR.dom.element.clearAllMarkers(h);e.selectBookmarks(k);c.focus()},refresh:function(c,k){var e=k.contains(r,1),b=k.blockLimit||k.root;e&&b.contains(e)?this.setState(e.is(this.type)?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF):this.setState(CKEDITOR.TRISTATE_OFF)}};CKEDITOR.plugins.add("list",{requires:"indentlist",init:function(c){c.blockless||(c.addCommand("numberedlist",new x("numberedlist","ol")),c.addCommand("bulletedlist", -new x("bulletedlist","ul")),c.ui.addButton&&(c.ui.addButton("NumberedList",{label:c.lang.list.numberedlist,command:"numberedlist",directional:!0,toolbar:"list,10"}),c.ui.addButton("BulletedList",{label:c.lang.list.bulletedlist,command:"bulletedlist",directional:!0,toolbar:"list,20"})),c.on("key",function(k){var e=k.data.keyCode;if(c.mode=="wysiwyg"&&e in{8:1,46:1}){var b=c.getSelection().getRanges()[0],j=b&&b.startPath();if(b&&b.collapsed){var j=new CKEDITOR.dom.elementPath(b.startContainer),g=e== -8,h=c.editable(),f=new CKEDITOR.dom.walker(b.clone());f.evaluator=function(a){return q(a)&&!v(a)};f.guard=function(a,b){return!(b&&a.type==CKEDITOR.NODE_ELEMENT&&a.is("table"))};e=b.clone();if(g){var a,d;if((a=j.contains(r))&&b.checkBoundaryOfElement(a,CKEDITOR.START)&&(a=a.getParent())&&a.is("li")&&(a=w(a))){d=a;a=a.getPrevious(q);e.moveToPosition(a&&v(a)?a:d,CKEDITOR.POSITION_BEFORE_START)}else{f.range.setStartAt(h,CKEDITOR.POSITION_AFTER_START);f.range.setEnd(b.startContainer,b.startOffset);if((a= -f.previous())&&a.type==CKEDITOR.NODE_ELEMENT&&(a.getName()in r||a.is("li"))){if(!a.is("li")){f.range.selectNodeContents(a);f.reset();f.evaluator=C;a=f.previous()}d=a;e.moveToElementEditEnd(d)}}if(d){y(c,e,b);k.cancel()}else if((e=j.contains(r))&&b.checkBoundaryOfElement(e,CKEDITOR.START)){d=e.getFirst(q);if(b.checkBoundaryOfElement(d,CKEDITOR.START)){a=e.getPrevious(q);if(w(d)){if(a){b.moveToElementEditEnd(a);b.select()}}else c.execCommand("outdent");k.cancel()}}}else if(d=j.contains("li")){f.range.setEndAt(h, -CKEDITOR.POSITION_BEFORE_END);h=(j=d.getLast(q))&&C(j)?j:d;d=0;if((a=f.next())&&a.type==CKEDITOR.NODE_ELEMENT&&a.getName()in r&&a.equals(j)){d=1;a=f.next()}else b.checkBoundaryOfElement(h,CKEDITOR.END)&&(d=1);if(d&&a){b=b.clone();b.moveToElementEditStart(a);y(c,e,b);k.cancel()}}else{f.range.setEndAt(h,CKEDITOR.POSITION_BEFORE_END);if((a=f.next())&&a.type==CKEDITOR.NODE_ELEMENT&&a.is(r)){a=a.getFirst(q);if(j.block&&b.checkStartOfBlock()&&b.checkEndOfBlock()){j.block.remove();b.moveToElementEditStart(a); -b.select()}else if(w(a)){b.moveToElementEditStart(a);b.select()}else{b=b.clone();b.moveToElementEditStart(a);y(c,e,b)}k.cancel()}}setTimeout(function(){c.selectionChange(1)})}}}))}})})();(function(){function Q(a,c,d){return m(c)&&m(d)&&d.equals(c.getNext(function(a){return!(z(a)||A(a)||p(a))}))}function u(a){this.upper=a[0];this.lower=a[1];this.set.apply(this,a.slice(2))}function J(a){var c=a.element;if(c&&m(c)&&(c=c.getAscendant(a.triggers,!0))&&a.editable.contains(c)){var d=K(c,!0);if("true"==d.getAttribute("contenteditable"))return c;if(d.is(a.triggers))return d}return null}function ga(a,c,d){o(a,c);o(a,d);a=c.size.bottom;d=d.size.top;return a&&d?0|(a+d)/2:a||d}function r(a,c, -d){return c=c[d?"getPrevious":"getNext"](function(b){return b&&b.type==CKEDITOR.NODE_TEXT&&!z(b)||m(b)&&!p(b)&&!v(a,b)})}function K(a,c){if(a.data("cke-editable"))return null;for(c||(a=a.getParent());a&&!a.data("cke-editable");){if(a.hasAttribute("contenteditable"))return a;a=a.getParent()}return null}function ha(a){var c=a.doc,d=B('<span contenteditable="false" style="'+L+"position:absolute;border-top:1px dashed "+a.boxColor+'"></span>',c),b=this.path+"images/"+(n.hidpi?"hidpi/":"")+"icon.png";q(d, -{attach:function(){this.wrap.getParent()||this.wrap.appendTo(a.editable,!0);return this},lineChildren:[q(B('<span title="'+a.editor.lang.magicline.title+'" contenteditable="false">&#8629;</span>',c),{base:L+"height:17px;width:17px;"+(a.rtl?"left":"right")+":17px;background:url("+b+") center no-repeat "+a.boxColor+";cursor:pointer;"+(n.hc?"font-size: 15px;line-height:14px;border:1px solid #fff;text-align:center;":"")+(n.hidpi?"background-size: 9px 10px;":""),looks:["top:-8px;"+CKEDITOR.tools.cssVendorPrefix("border-radius", -"2px",1),"top:-17px;"+CKEDITOR.tools.cssVendorPrefix("border-radius","2px 2px 0px 0px",1),"top:-1px;"+CKEDITOR.tools.cssVendorPrefix("border-radius","0px 0px 2px 2px",1)]}),q(B(R,c),{base:S+"left:0px;border-left-color:"+a.boxColor+";",looks:["border-width:8px 0 8px 8px;top:-8px","border-width:8px 0 0 8px;top:-8px","border-width:0 0 8px 8px;top:0px"]}),q(B(R,c),{base:S+"right:0px;border-right-color:"+a.boxColor+";",looks:["border-width:8px 8px 8px 0;top:-8px","border-width:8px 8px 0 0;top:-8px","border-width:0 8px 8px 0;top:0px"]})], -detach:function(){this.wrap.getParent()&&this.wrap.remove();return this},mouseNear:function(){o(a,this);var b=a.holdDistance,c=this.size;return c&&a.mouse.y>c.top-b&&a.mouse.y<c.bottom+b&&a.mouse.x>c.left-b&&a.mouse.x<c.right+b?!0:!1},place:function(){var b=a.view,c=a.editable,d=a.trigger,h=d.upper,g=d.lower,j=h||g,l=j.getParent(),k={};this.trigger=d;h&&o(a,h,!0);g&&o(a,g,!0);o(a,l,!0);a.inInlineMode&&C(a,!0);l.equals(c)?(k.left=b.scroll.x,k.right=-b.scroll.x,k.width=""):(k.left=j.size.left-j.size.margin.left+ -b.scroll.x-(a.inInlineMode?b.editable.left+b.editable.border.left:0),k.width=j.size.outerWidth+j.size.margin.left+j.size.margin.right+b.scroll.x,k.right="");h&&g?k.top=h.size.margin.bottom===g.size.margin.top?0|h.size.bottom+h.size.margin.bottom/2:h.size.margin.bottom<g.size.margin.top?h.size.bottom+h.size.margin.bottom:h.size.bottom+h.size.margin.bottom-g.size.margin.top:h?g||(k.top=h.size.bottom+h.size.margin.bottom):k.top=g.size.top-g.size.margin.top;d.is(x)||k.top>b.scroll.y-15&&k.top<b.scroll.y+ -5?(k.top=a.inInlineMode?0:b.scroll.y,this.look(x)):d.is(y)||k.top>b.pane.bottom-5&&k.top<b.pane.bottom+15?(k.top=a.inInlineMode?b.editable.height+b.editable.padding.top+b.editable.padding.bottom:b.pane.bottom-1,this.look(y)):(a.inInlineMode&&(k.top-=b.editable.top+b.editable.border.top),this.look(s));a.inInlineMode&&(k.top--,k.top+=b.editable.scroll.top,k.left+=b.editable.scroll.left);for(var T in k)k[T]=CKEDITOR.tools.cssLength(k[T]);this.setStyles(k)},look:function(a){if(this.oldLook!=a){for(var b= -this.lineChildren.length,c;b--;)(c=this.lineChildren[b]).setAttribute("style",c.base+c.looks[0|a/2]);this.oldLook=a}},wrap:new M("span",a.doc)});for(c=d.lineChildren.length;c--;)d.lineChildren[c].appendTo(d);d.look(s);d.appendTo(d.wrap);d.unselectable();d.lineChildren[0].on("mouseup",function(b){d.detach();N(a,function(b){var c=a.line.trigger;b[c.is(D)?"insertBefore":"insertAfter"](c.is(D)?c.lower:c.upper)},!0);a.editor.focus();!n.ie&&a.enterMode!=CKEDITOR.ENTER_BR&&a.hotNode.scrollIntoView();b.data.preventDefault(!0)}); -d.on("mousedown",function(a){a.data.preventDefault(!0)});a.line=d}function N(a,c,d){var b=new CKEDITOR.dom.range(a.doc),e=a.editor,f;n.ie&&a.enterMode==CKEDITOR.ENTER_BR?f=a.doc.createText(E):(f=(f=K(a.element,!0))&&f.data("cke-enter-mode")||a.enterMode,f=new M(F[f],a.doc),f.is("br")||a.doc.createText(E).appendTo(f));d&&e.fire("saveSnapshot");c(f);b.moveToPosition(f,CKEDITOR.POSITION_AFTER_START);e.getSelection().selectRanges([b]);a.hotNode=f;d&&e.fire("saveSnapshot")}function U(a,c){return{canUndo:!0, -modes:{wysiwyg:1},exec:function(){function d(b){var d=n.ie&&9>n.version?" ":E,f=a.hotNode&&a.hotNode.getText()==d&&a.element.equals(a.hotNode)&&a.lastCmdDirection===!!c;N(a,function(d){f&&a.hotNode&&a.hotNode.remove();d[c?"insertAfter":"insertBefore"](b);d.setAttributes({"data-cke-magicline-hot":1,"data-cke-magicline-dir":!!c});a.lastCmdDirection=!!c});!n.ie&&a.enterMode!=CKEDITOR.ENTER_BR&&a.hotNode.scrollIntoView();a.line.detach()}return function(b){var b=b.getSelection().getStartElement(),e,b= -b.getAscendant(V,1);if(!W(a,b)&&b&&!b.equals(a.editable)&&!b.contains(a.editable)){if((e=K(b))&&"false"==e.getAttribute("contenteditable"))b=e;a.element=b;e=r(a,b,!c);var f;m(e)&&e.is(a.triggers)&&e.is(ia)&&(!r(a,e,!c)||(f=r(a,e,!c))&&m(f)&&f.is(a.triggers))?d(e):(f=J(a,b),m(f)&&(r(a,f,!c)?(b=r(a,f,!c))&&(m(b)&&b.is(a.triggers))&&d(f):d(f)))}}}()}}function v(a,c){if(!c||!(c.type==CKEDITOR.NODE_ELEMENT&&c.$))return!1;var d=a.line;return d.wrap.equals(c)||d.wrap.contains(c)}function m(a){return a&& -a.type==CKEDITOR.NODE_ELEMENT&&a.$}function p(a){if(!m(a))return!1;var c;if(!(c=X(a)))m(a)?(c={left:1,right:1,center:1},c=!(!c[a.getComputedStyle("float")]&&!c[a.getAttribute("align")])):c=!1;return c}function X(a){return!!{absolute:1,fixed:1}[a.getComputedStyle("position")]}function G(a,c){return m(c)?c.is(a.triggers):null}function W(a,c){if(!c)return!1;for(var d=c.getParents(1),b=d.length;b--;)for(var e=a.tabuList.length;e--;)if(d[b].hasAttribute(a.tabuList[e]))return!0;return!1}function ja(a,c, -d){c=c[d?"getLast":"getFirst"](function(b){return a.isRelevant(b)&&!b.is(ka)});if(!c)return!1;o(a,c);return d?c.size.top>a.mouse.y:c.size.bottom<a.mouse.y}function Y(a){var c=a.editable,d=a.mouse,b=a.view,e=a.triggerOffset;C(a);var f=d.y>(a.inInlineMode?b.editable.top+b.editable.height/2:Math.min(b.editable.height,b.pane.height)/2),c=c[f?"getLast":"getFirst"](function(a){return!(z(a)||A(a))});if(!c)return null;v(a,c)&&(c=a.line.wrap[f?"getPrevious":"getNext"](function(a){return!(z(a)||A(a))}));if(!m(c)|| -p(c)||!G(a,c))return null;o(a,c);return!f&&0<=c.size.top&&0<d.y&&d.y<c.size.top+e?(a=a.inInlineMode||0===b.scroll.y?x:s,new u([null,c,D,H,a])):f&&c.size.bottom<=b.pane.height&&d.y>c.size.bottom-e&&d.y<b.pane.height?(a=a.inInlineMode||c.size.bottom>b.pane.height-e&&c.size.bottom<b.pane.height?y:s,new u([c,null,Z,H,a])):null}function $(a){var c=a.mouse,d=a.view,b=a.triggerOffset,e=J(a);if(!e)return null;o(a,e);var b=Math.min(b,0|e.size.outerHeight/2),f=[],i,h;if(c.y>e.size.top-1&&c.y<e.size.top+b)h= -!1;else if(c.y>e.size.bottom-b&&c.y<e.size.bottom+1)h=!0;else return null;if(p(e)||ja(a,e,h)||e.getParent().is(aa))return null;var g=r(a,e,!h);if(g){if(g&&g.type==CKEDITOR.NODE_TEXT)return null;if(m(g)){if(p(g)||!G(a,g)||g.getParent().is(aa))return null;f=[g,e][h?"reverse":"concat"]().concat([O,H])}}else e.equals(a.editable[h?"getLast":"getFirst"](a.isRelevant))?(C(a),h&&c.y>e.size.bottom-b&&c.y<d.pane.height&&e.size.bottom>d.pane.height-b&&e.size.bottom<d.pane.height?i=y:0<c.y&&c.y<e.size.top+b&& -(i=x)):i=s,f=[null,e][h?"reverse":"concat"]().concat([h?Z:D,H,i,e.equals(a.editable[h?"getLast":"getFirst"](a.isRelevant))?h?y:x:s]);return 0 in f?new u(f):null}function P(a,c,d,b){for(var e=function(){var b=n.ie?c.$.currentStyle:a.win.$.getComputedStyle(c.$,"");return n.ie?function(a){return b[CKEDITOR.tools.cssStyleToDomStyle(a)]}:function(a){return b.getPropertyValue(a)}}(),f=c.getDocumentPosition(),i={},h={},g={},j={},l=t.length;l--;)i[t[l]]=parseInt(e("border-"+t[l]+"-width"),10)||0,g[t[l]]= -parseInt(e("padding-"+t[l]),10)||0,h[t[l]]=parseInt(e("margin-"+t[l]),10)||0;(!d||b)&&I(a,b);j.top=f.y-(d?0:a.view.scroll.y);j.left=f.x-(d?0:a.view.scroll.x);j.outerWidth=c.$.offsetWidth;j.outerHeight=c.$.offsetHeight;j.height=j.outerHeight-(g.top+g.bottom+i.top+i.bottom);j.width=j.outerWidth-(g.left+g.right+i.left+i.right);j.bottom=j.top+j.outerHeight;j.right=j.left+j.outerWidth;a.inInlineMode&&(j.scroll={top:c.$.scrollTop,left:c.$.scrollLeft});return q({border:i,padding:g,margin:h,ignoreScroll:d}, -j,!0)}function o(a,c,d){if(!m(c))return c.size=null;if(c.size){if(c.size.ignoreScroll==d&&c.size.date>new Date-ba)return null}else c.size={};return q(c.size,P(a,c,d),{date:+new Date},!0)}function C(a,c){a.view.editable=P(a,a.editable,c,!0)}function I(a,c){a.view||(a.view={});var d=a.view;if(c||!(d&&d.date>new Date-ba)){var b=a.win,d=b.getScrollPosition(),b=b.getViewPaneSize();q(a.view,{scroll:{x:d.x,y:d.y,width:a.doc.$.documentElement.scrollWidth-b.width,height:a.doc.$.documentElement.scrollHeight- -b.height},pane:{width:b.width,height:b.height,bottom:b.height+d.y},date:+new Date},!0)}}function la(a,c,d,b){for(var e=b,f=b,i=0,h=!1,g=!1,j=a.view.pane.height,l=a.mouse;l.y+i<j&&0<l.y-i;){h||(h=c(e,b));g||(g=c(f,b));!h&&0<l.y-i&&(e=d(a,{x:l.x,y:l.y-i}));!g&&l.y+i<j&&(f=d(a,{x:l.x,y:l.y+i}));if(h&&g)break;i+=2}return new u([e,f,null,null])}CKEDITOR.plugins.add("magicline",{init:function(a){var c=a.config,d=c.magicline_triggerOffset||30,b={editor:a,enterMode:c.enterMode,triggerOffset:d,holdDistance:0| -d*(c.magicline_holdDistance||0.5),boxColor:c.magicline_color||"#ff0000",rtl:"rtl"==c.contentsLangDirection,tabuList:["data-cke-hidden-sel"].concat(c.magicline_tabuList||[]),triggers:c.magicline_everywhere?V:{table:1,hr:1,div:1,ul:1,ol:1,dl:1,form:1,blockquote:1}},e,f,i;b.isRelevant=function(a){return m(a)&&!v(b,a)&&!p(a)};a.on("contentDom",function(){var d=a.editable(),g=a.document,j=a.window;q(b,{editable:d,inInlineMode:d.isInline(),doc:g,win:j,hotNode:null},!0);b.boundary=b.inInlineMode?b.editable: -b.doc.getDocumentElement();d.is(w.$inline)||(b.inInlineMode&&!X(d)&&d.setStyles({position:"relative",top:null,left:null}),ha.call(this,b),I(b),d.attachListener(a,"beforeUndoImage",function(){b.line.detach()}),d.attachListener(a,"beforeGetData",function(){b.line.wrap.getParent()&&(b.line.detach(),a.once("getData",function(){b.line.attach()},null,null,1E3))},null,null,0),d.attachListener(b.inInlineMode?g:g.getWindow().getFrame(),"mouseout",function(c){if("wysiwyg"==a.mode)if(b.inInlineMode){var d=c.data.$.clientX, -c=c.data.$.clientY;I(b);C(b,!0);var e=b.view.editable,f=b.view.scroll;if(!(d>e.left-f.x&&d<e.right-f.x)||!(c>e.top-f.y&&c<e.bottom-f.y))clearTimeout(i),i=null,b.line.detach()}else clearTimeout(i),i=null,b.line.detach()}),d.attachListener(d,"keyup",function(){b.hiddenMode=0}),d.attachListener(d,"keydown",function(c){if("wysiwyg"==a.mode)switch(c=c.data.getKeystroke(),a.getSelection().getStartElement(),c){case 2228240:case 16:b.hiddenMode=1,b.line.detach()}}),d.attachListener(b.inInlineMode?d:g,"mousemove", -function(c){f=!0;if(!("wysiwyg"!=a.mode||a.readOnly||i)){var d={x:c.data.$.clientX,y:c.data.$.clientY};i=setTimeout(function(){b.mouse=d;i=b.trigger=null;I(b);if(f&&!b.hiddenMode&&a.focusManager.hasFocus&&!b.line.mouseNear()&&(b.element=ca(b,!0)))(b.trigger=Y(b)||$(b)||da(b))&&!W(b,b.trigger.upper||b.trigger.lower)?b.line.attach().place():(b.trigger=null,b.line.detach()),f=!1},30)}}),d.attachListener(j,"scroll",function(){"wysiwyg"==a.mode&&(b.line.detach(),n.webkit&&(b.hiddenMode=1,clearTimeout(e), -e=setTimeout(function(){b.mouseDown||(b.hiddenMode=0)},50)))}),d.attachListener(ea?g:j,"mousedown",function(){"wysiwyg"==a.mode&&(b.line.detach(),b.hiddenMode=1,b.mouseDown=1)}),d.attachListener(ea?g:j,"mouseup",function(){b.hiddenMode=0;b.mouseDown=0}),a.addCommand("accessPreviousSpace",U(b)),a.addCommand("accessNextSpace",U(b,!0)),a.setKeystroke([[c.magicline_keystrokePrevious,"accessPreviousSpace"],[c.magicline_keystrokeNext,"accessNextSpace"]]),a.on("loadSnapshot",function(){var c,d,e,f;for(f in{p:1, -br:1,div:1}){c=a.document.getElementsByTag(f);for(e=c.count();e--;)if((d=c.getItem(e)).data("cke-magicline-hot")){b.hotNode=d;b.lastCmdDirection="true"===d.data("cke-magicline-dir")?!0:!1;return}}}),this.backdoor={accessFocusSpace:N,boxTrigger:u,isLine:v,getAscendantTrigger:J,getNonEmptyNeighbour:r,getSize:P,that:b,triggerEdge:$,triggerEditable:Y,triggerExpand:da})},this)}});var q=CKEDITOR.tools.extend,M=CKEDITOR.dom.element,B=M.createFromHtml,n=CKEDITOR.env,ea=CKEDITOR.env.ie&&9>CKEDITOR.env.version, -w=CKEDITOR.dtd,F={},D=128,Z=64,O=32,H=16,fa=8,x=4,y=2,s=1,E=" ",aa=w.$listItem,ka=w.$tableContent,ia=q({},w.$nonEditable,w.$empty),V=w.$block,ba=100,L="width:0px;height:0px;padding:0px;margin:0px;display:block;z-index:9999;color:#fff;position:absolute;font-size: 0px;line-height:0px;",S=L+"border-color:transparent;display:block;border-style:solid;",R="<span>"+E+"</span>";F[CKEDITOR.ENTER_BR]="br";F[CKEDITOR.ENTER_P]="p";F[CKEDITOR.ENTER_DIV]="div";u.prototype={set:function(a,c,d){this.properties=a+ -c+(d||s);return this},is:function(a){return(this.properties&a)==a}};var ca=function(){return function(a,c,d){if(!a.mouse)return null;var b=a.doc,e=a.line.wrap,d=d||a.mouse,f=new CKEDITOR.dom.element(b.$.elementFromPoint(d.x,d.y));c&&v(a,f)&&(e.hide(),f=new CKEDITOR.dom.element(b.$.elementFromPoint(d.x,d.y)),e.show());return!f||!(f.type==CKEDITOR.NODE_ELEMENT&&f.$)||n.ie&&9>n.version&&!a.boundary.equals(f)&&!a.boundary.contains(f)?null:f}}(),z=CKEDITOR.dom.walker.whitespaces(),A=CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_COMMENT), -da=function(){function a(a){var b=a.element,e,f,i;if(!m(b)||b.contains(a.editable)||b.isReadOnly())return null;i=la(a,function(a,b){return!b.equals(a)},function(a,b){return ca(a,!0,b)},b);e=i.upper;f=i.lower;if(Q(a,e,f))return i.set(O,fa);if(e&&b.contains(e))for(;!e.getParent().equals(b);)e=e.getParent();else e=b.getFirst(function(b){return c(a,b)});if(f&&b.contains(f))for(;!f.getParent().equals(b);)f=f.getParent();else f=b.getLast(function(b){return c(a,b)});if(!e||!f)return null;o(a,e);o(a,f);if(!(a.mouse.y> -e.size.top&&a.mouse.y<f.size.bottom))return null;for(var b=Number.MAX_VALUE,h,g,j,l;f&&!f.equals(e)&&(g=e.getNext(a.isRelevant));)h=Math.abs(ga(a,e,g)-a.mouse.y),h<b&&(b=h,j=e,l=g),e=g,o(a,e);if(!j||!l||!(a.mouse.y>j.size.top&&a.mouse.y<l.size.bottom))return null;i.upper=j;i.lower=l;return i.set(O,fa)}function c(a,b){return!(b&&b.type==CKEDITOR.NODE_TEXT||A(b)||p(b)||v(a,b)||b.type==CKEDITOR.NODE_ELEMENT&&b.$&&b.is("br"))}return function(c){var b=a(c),e;if(e=b){e=b.upper;var f=b.lower;e=!e||!f||p(f)|| -p(e)||f.equals(e)||e.equals(f)||f.contains(e)||e.contains(f)?!1:G(c,e)&&G(c,f)&&Q(c,e,f)?!0:!1}return e?b:null}}(),t=["top","left","right","bottom"]})();CKEDITOR.config.magicline_keystrokePrevious=CKEDITOR.CTRL+CKEDITOR.SHIFT+51;CKEDITOR.config.magicline_keystrokeNext=CKEDITOR.CTRL+CKEDITOR.SHIFT+52;(function(){function l(a){if(!a||a.type!=CKEDITOR.NODE_ELEMENT||"form"!=a.getName())return[];for(var e=[],f=["style","className"],b=0;b<f.length;b++){var d=a.$.elements.namedItem(f[b]);d&&(d=new CKEDITOR.dom.element(d),e.push([d,d.nextSibling]),d.remove())}return e}function o(a,e){if(a&&!(a.type!=CKEDITOR.NODE_ELEMENT||"form"!=a.getName())&&0<e.length)for(var f=e.length-1;0<=f;f--){var b=e[f][0],d=e[f][1];d?b.insertBefore(d):b.appendTo(a)}}function n(a,e){var f=l(a),b={},d=a.$;e||(b["class"]=d.className|| -"",d.className="");b.inline=d.style.cssText||"";e||(d.style.cssText="position: static; overflow: visible");o(f);return b}function p(a,e){var f=l(a),b=a.$;"class"in e&&(b.className=e["class"]);"inline"in e&&(b.style.cssText=e.inline);o(f)}function q(a){if(!a.editable().isInline()){var e=CKEDITOR.instances,f;for(f in e){var b=e[f];"wysiwyg"==b.mode&&!b.readOnly&&(b=b.document.getBody(),b.setAttribute("contentEditable",!1),b.setAttribute("contentEditable",!0))}a.editable().hasFocus&&(a.toolbox.focus(), -a.focus())}}CKEDITOR.plugins.add("maximize",{init:function(a){function e(){var b=d.getViewPaneSize();a.resize(b.width,b.height,null,!0)}if(a.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE){var f=a.lang,b=CKEDITOR.document,d=b.getWindow(),j,k,m,l=CKEDITOR.TRISTATE_OFF;a.addCommand("maximize",{modes:{wysiwyg:!CKEDITOR.env.iOS,source:!CKEDITOR.env.iOS},readOnly:1,editorFocus:!1,exec:function(){var h=a.container.getChild(1),g=a.ui.space("contents");if("wysiwyg"==a.mode){var c=a.getSelection();j=c&&c.getRanges(); -k=d.getScrollPosition()}else{var i=a.editable().$;j=!CKEDITOR.env.ie&&[i.selectionStart,i.selectionEnd];k=[i.scrollLeft,i.scrollTop]}if(this.state==CKEDITOR.TRISTATE_OFF){d.on("resize",e);m=d.getScrollPosition();for(c=a.container;c=c.getParent();)c.setCustomData("maximize_saved_styles",n(c)),c.setStyle("z-index",a.config.baseFloatZIndex-5);g.setCustomData("maximize_saved_styles",n(g,!0));h.setCustomData("maximize_saved_styles",n(h,!0));g={overflow:CKEDITOR.env.webkit?"":"hidden",width:0,height:0}; -b.getDocumentElement().setStyles(g);!CKEDITOR.env.gecko&&b.getDocumentElement().setStyle("position","fixed");(!CKEDITOR.env.gecko||!CKEDITOR.env.quirks)&&b.getBody().setStyles(g);CKEDITOR.env.ie?setTimeout(function(){d.$.scrollTo(0,0)},0):d.$.scrollTo(0,0);h.setStyle("position",CKEDITOR.env.gecko&&CKEDITOR.env.quirks?"fixed":"absolute");h.$.offsetLeft;h.setStyles({"z-index":a.config.baseFloatZIndex-5,left:"0px",top:"0px"});h.addClass("cke_maximized");e();g=h.getDocumentPosition();h.setStyles({left:-1* -g.x+"px",top:-1*g.y+"px"});CKEDITOR.env.gecko&&q(a)}else if(this.state==CKEDITOR.TRISTATE_ON){d.removeListener("resize",e);g=[g,h];for(c=0;c<g.length;c++)p(g[c],g[c].getCustomData("maximize_saved_styles")),g[c].removeCustomData("maximize_saved_styles");for(c=a.container;c=c.getParent();)p(c,c.getCustomData("maximize_saved_styles")),c.removeCustomData("maximize_saved_styles");CKEDITOR.env.ie?setTimeout(function(){d.$.scrollTo(m.x,m.y)},0):d.$.scrollTo(m.x,m.y);h.removeClass("cke_maximized");CKEDITOR.env.webkit&& -(h.setStyle("display","inline"),setTimeout(function(){h.setStyle("display","block")},0));a.fire("resize")}this.toggleState();if(c=this.uiItems[0])g=this.state==CKEDITOR.TRISTATE_OFF?f.maximize.maximize:f.maximize.minimize,c=CKEDITOR.document.getById(c._.id),c.getChild(1).setHtml(g),c.setAttribute("title",g),c.setAttribute("href",'javascript:void("'+g+'");');"wysiwyg"==a.mode?j?(CKEDITOR.env.gecko&&q(a),a.getSelection().selectRanges(j),(i=a.getSelection().getStartElement())&&i.scrollIntoView(!0)): -d.$.scrollTo(k.x,k.y):(j&&(i.selectionStart=j[0],i.selectionEnd=j[1]),i.scrollLeft=k[0],i.scrollTop=k[1]);j=k=null;l=this.state;a.fire("maximize",this.state)},canUndo:!1});a.ui.addButton&&a.ui.addButton("Maximize",{label:f.maximize.maximize,command:"maximize",toolbar:"tools,10"});a.on("mode",function(){var b=a.getCommand("maximize");b.setState(b.state==CKEDITOR.TRISTATE_DISABLED?CKEDITOR.TRISTATE_DISABLED:l)},null,null,100)}}})})();(function(){var c={canUndo:!1,async:!0,exec:function(a){a.getClipboardData({title:a.lang.pastetext.title},function(b){b&&a.fire("paste",{type:"text",dataValue:b.dataValue});a.fire("afterCommandExec",{name:"pastetext",command:c,returnValue:!!b})})}};CKEDITOR.plugins.add("pastetext",{requires:"clipboard",init:function(a){a.addCommand("pastetext",c);a.ui.addButton&&a.ui.addButton("PasteText",{label:a.lang.pastetext.button,command:"pastetext",toolbar:"clipboard,40"});if(a.config.forcePasteAsPlainText)a.on("beforePaste", -function(a){"html"!=a.data.type&&(a.data.type="text")});a.on("pasteState",function(b){a.getCommand("pastetext").setState(b.data)})}})})();(function(){function h(a,d,f){var b=CKEDITOR.cleanWord;b?f():(a=CKEDITOR.getUrl(a.config.pasteFromWordCleanupFile||d+"filter/default.js"),CKEDITOR.scriptLoader.load(a,f,null,!0));return!b}function i(a){a.data.type="html"}CKEDITOR.plugins.add("pastefromword",{requires:"clipboard",init:function(a){var d=0,f=this.path;a.addCommand("pastefromword",{canUndo:!1,async:!0,exec:function(a){var e=this;d=1;a.once("beforePaste",i);a.getClipboardData({title:a.lang.pastefromword.title},function(c){c&&a.fire("paste", -{type:"html",dataValue:c.dataValue});a.fire("afterCommandExec",{name:"pastefromword",command:e,returnValue:!!c})})}});a.ui.addButton&&a.ui.addButton("PasteFromWord",{label:a.lang.pastefromword.toolbar,command:"pastefromword",toolbar:"clipboard,50"});a.on("pasteState",function(b){a.getCommand("pastefromword").setState(b.data)});a.on("paste",function(b){var e=b.data,c=e.dataValue;if(c&&(d||/(class=\"?Mso|style=\"[^\"]*\bmso\-|w:WordDocument)/.test(c))){var g=h(a,f,function(){if(g)a.fire("paste",e); -else if(!a.config.pasteFromWordPromptCleanup||d||confirm(a.lang.pastefromword.confirmCleanup))e.dataValue=CKEDITOR.cleanWord(c,a)});g&&b.cancel()}},null,null,3)}})})();CKEDITOR.plugins.add("removeformat",{init:function(a){a.addCommand("removeFormat",CKEDITOR.plugins.removeformat.commands.removeformat);a.ui.addButton&&a.ui.addButton("RemoveFormat",{label:a.lang.removeformat.toolbar,command:"removeFormat",toolbar:"cleanup,10"})}}); -CKEDITOR.plugins.removeformat={commands:{removeformat:{exec:function(a){for(var h=a._.removeFormatRegex||(a._.removeFormatRegex=RegExp("^(?:"+a.config.removeFormatTags.replace(/,/g,"|")+")$","i")),e=a._.removeAttributes||(a._.removeAttributes=a.config.removeFormatAttributes.split(",")),f=CKEDITOR.plugins.removeformat.filter,k=a.getSelection().getRanges(1),l=k.createIterator(),c;c=l.getNextRange();){c.collapsed||c.enlarge(CKEDITOR.ENLARGE_ELEMENT);var i=c.createBookmark(),b=i.startNode,j=i.endNode, -d=function(b){for(var c=a.elementPath(b),e=c.elements,d=1,g;(g=e[d])&&!g.equals(c.block)&&!g.equals(c.blockLimit);d++)h.test(g.getName())&&f(a,g)&&b.breakParent(g)};d(b);if(j){d(j);for(b=b.getNextSourceNode(!0,CKEDITOR.NODE_ELEMENT);b&&!b.equals(j);)d=b.getNextSourceNode(!1,CKEDITOR.NODE_ELEMENT),!("img"==b.getName()&&b.data("cke-realelement"))&&f(a,b)&&(h.test(b.getName())?b.remove(1):(b.removeAttributes(e),a.fire("removeFormatCleanup",b))),b=d}c.moveToBookmark(i)}a.forceNextSelectionCheck();a.getSelection().selectRanges(k)}}}, -filter:function(a,h){for(var e=a._.removeFormatFilters||[],f=0;f<e.length;f++)if(!1===e[f](h))return!1;return!0}};CKEDITOR.editor.prototype.addRemoveFormatFilter=function(a){this._.removeFormatFilters||(this._.removeFormatFilters=[]);this._.removeFormatFilters.push(a)};CKEDITOR.config.removeFormatTags="b,big,code,del,dfn,em,font,i,ins,kbd,q,s,samp,small,span,strike,strong,sub,sup,tt,u,var";CKEDITOR.config.removeFormatAttributes="class,style,lang,width,height,align,hspace,valign";(function(){CKEDITOR.plugins.add("sourcearea",{init:function(a){function d(){this.hide();this.setStyle("height",this.getParent().$.clientHeight+"px");this.setStyle("width",this.getParent().$.clientWidth+"px");this.show()}if(a.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE){var e=CKEDITOR.plugins.sourcearea;a.addMode("source",function(e){var b=a.ui.space("contents").getDocument().createElement("textarea");b.setStyles(CKEDITOR.tools.extend({width:CKEDITOR.env.ie7Compat?"99%":"100%",height:"100%",resize:"none", -outline:"none","text-align":"left"},CKEDITOR.tools.cssVendorPrefix("tab-size",a.config.sourceAreaTabSize||4)));b.setAttribute("dir","ltr");b.addClass("cke_source cke_reset cke_enable_context_menu");a.ui.space("contents").append(b);b=a.editable(new c(a,b));b.setData(a.getData(1));CKEDITOR.env.ie&&(b.attachListener(a,"resize",d,b),b.attachListener(CKEDITOR.document.getWindow(),"resize",d,b),CKEDITOR.tools.setTimeout(d,0,b));a.fire("ariaWidget",this);e()});a.addCommand("source",e.commands.source);a.ui.addButton&& -a.ui.addButton("Source",{label:a.lang.sourcearea.toolbar,command:"source",toolbar:"mode,10"});a.on("mode",function(){a.getCommand("source").setState("source"==a.mode?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF)})}}});var c=CKEDITOR.tools.createClass({base:CKEDITOR.editable,proto:{setData:function(a){this.setValue(a);this.editor.fire("dataReady")},getData:function(){return this.getValue()},insertHtml:function(){},insertElement:function(){},insertText:function(){},setReadOnly:function(a){this[(a?"set": -"remove")+"Attribute"]("readOnly","readonly")},detach:function(){c.baseProto.detach.call(this);this.clearCustomData();this.remove()}}})})();CKEDITOR.plugins.sourcearea={commands:{source:{modes:{wysiwyg:1,source:1},editorFocus:!1,readOnly:1,exec:function(c){"wysiwyg"==c.mode&&c.fire("saveSnapshot");c.getCommand("source").setState(CKEDITOR.TRISTATE_DISABLED);c.setMode("source"==c.mode?"wysiwyg":"source")},canUndo:!1}}};CKEDITOR.plugins.add("specialchar",{availableLangs:{ar:1,bg:1,ca:1,cs:1,cy:1,de:1,el:1,en:1,eo:1,es:1,et:1,fa:1,fi:1,fr:1,"fr-ca":1,gl:1,he:1,hr:1,hu:1,id:1,it:1,ja:1,km:1,ku:1,lv:1,nb:1,nl:1,no:1,pl:1,pt:1,"pt-br":1,ru:1,si:1,sk:1,sl:1,sq:1,sv:1,th:1,tr:1,ug:1,uk:1,vi:1,zh:1,"zh-cn":1},requires:"dialog",init:function(a){var c=this;CKEDITOR.dialog.add("specialchar",this.path+"dialogs/specialchar.js");a.addCommand("specialchar",{exec:function(){var b=a.langCode,b=c.availableLangs[b]?b:c.availableLangs[b.replace(/-.*/, -"")]?b.replace(/-.*/,""):"en";CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(c.path+"dialogs/lang/"+b+".js"),function(){CKEDITOR.tools.extend(a.lang.specialchar,c.langEntries[b]);a.openDialog("specialchar")})},modes:{wysiwyg:1},canUndo:!1});a.ui.addButton&&a.ui.addButton("SpecialChar",{label:a.lang.specialchar.toolbar,command:"specialchar",toolbar:"insert,50"})}});CKEDITOR.config.specialChars="! &quot; # $ % &amp; ' ( ) * + - . / 0 1 2 3 4 5 6 7 8 9 : ; &lt; = &gt; ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ &euro; &lsquo; &rsquo; &ldquo; &rdquo; &ndash; &mdash; &iexcl; &cent; &pound; &curren; &yen; &brvbar; &sect; &uml; &copy; &ordf; &laquo; &not; &reg; &macr; &deg; &sup2; &sup3; &acute; &micro; &para; &middot; &cedil; &sup1; &ordm; &raquo; &frac14; &frac12; &frac34; &iquest; &Agrave; &Aacute; &Acirc; &Atilde; &Auml; &Aring; &AElig; &Ccedil; &Egrave; &Eacute; &Ecirc; &Euml; &Igrave; &Iacute; &Icirc; &Iuml; &ETH; &Ntilde; &Ograve; &Oacute; &Ocirc; &Otilde; &Ouml; &times; &Oslash; &Ugrave; &Uacute; &Ucirc; &Uuml; &Yacute; &THORN; &szlig; &agrave; &aacute; &acirc; &atilde; &auml; &aring; &aelig; &ccedil; &egrave; &eacute; &ecirc; &euml; &igrave; &iacute; &icirc; &iuml; &eth; &ntilde; &ograve; &oacute; &ocirc; &otilde; &ouml; &divide; &oslash; &ugrave; &uacute; &ucirc; &uuml; &yacute; &thorn; &yuml; &OElig; &oelig; &#372; &#374 &#373 &#375; &sbquo; &#8219; &bdquo; &hellip; &trade; &#9658; &bull; &rarr; &rArr; &hArr; &diams; &asymp;".split(" ");CKEDITOR.plugins.add("menubutton",{requires:"button,menu",onLoad:function(){var d=function(c){var a=this._,b=a.menu;a.state!==CKEDITOR.TRISTATE_DISABLED&&(a.on&&b?b.hide():(a.previousState=a.state,b||(b=a.menu=new CKEDITOR.menu(c,{panel:{className:"cke_menu_panel",attributes:{"aria-label":c.lang.common.options}}}),b.onHide=CKEDITOR.tools.bind(function(){var b=this.command?c.getCommand(this.command).modes:this.modes;this.setState(!b||b[c.mode]?a.previousState:CKEDITOR.TRISTATE_DISABLED);a.on=0},this), -this.onMenu&&b.addListener(this.onMenu)),this.setState(CKEDITOR.TRISTATE_ON),a.on=1,setTimeout(function(){b.show(CKEDITOR.document.getById(a.id),4)},0)))};CKEDITOR.ui.menuButton=CKEDITOR.tools.createClass({base:CKEDITOR.ui.button,$:function(c){delete c.panel;this.base(c);this.hasArrow=!0;this.click=d},statics:{handler:{create:function(c){return new CKEDITOR.ui.menuButton(c)}}}})},beforeInit:function(d){d.ui.addHandler(CKEDITOR.UI_MENUBUTTON,CKEDITOR.ui.menuButton.handler)}}); -CKEDITOR.UI_MENUBUTTON="menubutton";(function(){function o(a,c){var b=0,d;for(d in c)if(c[d]==a){b=1;break}return b}var j="",r=function(){function a(){b.once("focus",g);b.once("blur",c)}function c(b){var b=b.editor,c=d.getScayt(b),g=b.elementMode==CKEDITOR.ELEMENT_MODE_INLINE;c&&(d.setPaused(b,!c.disabled),d.setControlId(b,c.id),c.destroy(!0),delete d.instances[b.name],g&&a())}var b=this,g=function(){if(!("undefined"!=typeof d.instances[b.name]||null!=d.instances[b.name])){var a=b.config,c={};c.srcNodeRef="BODY"==b.editable().$.nodeName? -b.document.getWindow().$.frameElement:b.editable().$;c.assocApp="CKEDITOR."+CKEDITOR.version+"@"+CKEDITOR.revision;c.customerid=a.scayt_customerid||"1:WvF0D4-UtPqN1-43nkD4-NKvUm2-daQqk3-LmNiI-z7Ysb4-mwry24-T8YrS3-Q2tpq2";c.customDictionaryIds=a.scayt_customDictionaryIds||"";c.userDictionaryName=a.scayt_userDictionaryName||"";c.sLang=a.scayt_sLang||"en_US";c.onLoad=function(){CKEDITOR.env.ie&&8>CKEDITOR.env.version||this.addStyle(this.selectorCss(),"padding-bottom: 2px !important;");b.editable().hasFocus&& -!d.isControlRestored(b)&&this.focus()};a=window.scayt_custom_params;if("object"==typeof a)for(var g in a)c[g]=a[g];d.getControlId(b)&&(c.id=d.getControlId(b));var e=new window.scayt(c);e.afterMarkupRemove.push(function(a){(new CKEDITOR.dom.element(a,e.document)).mergeSiblings()});if(c=d.instances[b.name])e.sLang=c.sLang,e.option(c.option()),e.paused=c.paused;d.instances[b.name]=e;try{e.setDisabled(!1===d.isPaused(b))}catch(n){}b.fire("showScaytState")}};b.elementMode==CKEDITOR.ELEMENT_MODE_INLINE? -a():b.on("contentDom",g);b.on("contentDomUnload",function(){for(var a=CKEDITOR.document.getElementsByTag("script"),b=/^dojoIoScript(\d+)$/i,c=/^https?:\/\/svc\.webspellchecker\.net\/spellcheck\/script\/ssrv\.cgi/i,d=0;d<a.count();d++){var g=a.getItem(d),e=g.getId(),f=g.getAttribute("src");e&&(f&&e.match(b)&&f.match(c))&&g.remove()}});b.on("beforeCommandExec",function(a){"source"==a.data.name&&"source"==b.mode&&d.markControlRestore(b)});b.on("afterCommandExec",function(a){if(d.isScaytEnabled(b)&&"wysiwyg"== -b.mode&&("undo"==a.data.name||"redo"==a.data.name))d.getScayt(b).setDisabled(!0),d.refresh_timeout&&window.clearTimeout(d.refresh_timeout),d.refresh_timeout=window.setTimeout(function(){d.getScayt(b).setDisabled(!1);d.getScayt(b).focus();d.getScayt(b).refresh()},10)});b.on("destroy",c);b.on("setData",c);b.on("insertElement",function(){var a=d.getScayt(b);d.isScaytEnabled(b)&&(CKEDITOR.env.ie&&b.getSelection().unlock(!0),window.setTimeout(function(){a.focus();a.refresh()},10))},this,null,50);b.on("insertHtml", -function(){var a=d.getScayt(b);d.isScaytEnabled(b)&&(CKEDITOR.env.ie&&b.getSelection().unlock(!0),window.setTimeout(function(){a.focus();a.refresh()},10))},this,null,50);b.on("scaytDialog",function(a){a.data.djConfig=window.djConfig;a.data.scayt_control=d.getScayt(b);a.data.tab=j;a.data.scayt=window.scayt});var e=b.dataProcessor;(e=e&&e.htmlFilter)&&e.addRules({elements:{span:function(a){if(a.attributes["data-scayt_word"]&&a.attributes["data-scaytid"])return delete a.name,a}}});var e=CKEDITOR.plugins.undo.Image.prototype, -f="function"==typeof e.equalsContent?"equalsContent":"equals";e[f]=CKEDITOR.tools.override(e[f],function(a){return function(b){var c=this.contents,g=b.contents,e=d.getScayt(this.editor);e&&d.isScaytReady(this.editor)&&(this.contents=e.reset(c)||"",b.contents=e.reset(g)||"");e=a.apply(this,arguments);this.contents=c;b.contents=g;return e}});e=CKEDITOR.editor.prototype;e.checkDirty=CKEDITOR.tools.override(e.checkDirty,function(a){return function(){var b=null,c=d.getScayt(this);c&&d.isScaytReady(this)? -(b=c.reset(this.getSnapshot()),c=c.reset(this._.previousValue),b=b!==c):b=a.apply(this);return b}});b.document&&(b.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE||b.focusManager.hasFocus)&&g()};CKEDITOR.plugins.scayt={engineLoaded:!1,instances:{},controlInfo:{},setControlInfo:function(a,c){a&&(a.name&&"object"!=typeof this.controlInfo[a.name])&&(this.controlInfo[a.name]={});for(var b in c)this.controlInfo[a.name][b]=c[b]},isControlRestored:function(a){return a&&a.name&&this.controlInfo[a.name]?this.controlInfo[a.name].restored: -!1},markControlRestore:function(a){this.setControlInfo(a,{restored:!0})},setControlId:function(a,c){this.setControlInfo(a,{id:c})},getControlId:function(a){return a&&a.name&&this.controlInfo[a.name]&&this.controlInfo[a.name].id?this.controlInfo[a.name].id:null},setPaused:function(a,c){this.setControlInfo(a,{paused:c})},isPaused:function(a){if(a&&a.name&&this.controlInfo[a.name])return this.controlInfo[a.name].paused},getScayt:function(a){return this.instances[a.name]},isScaytReady:function(a){return!0=== -this.engineLoaded&&"undefined"!==typeof window.scayt&&this.getScayt(a)},isScaytEnabled:function(a){return(a=this.getScayt(a))?!1===a.disabled:!1},getUiTabs:function(a){var c=[],b=a.config.scayt_uiTabs||"1,1,1",b=b.split(",");b[3]="1";for(var d=0;4>d;d++)c[d]="undefined"!=typeof window.scayt&&"undefined"!=typeof window.scayt.uiTags?parseInt(b[d],10)&&window.scayt.uiTags[d]:parseInt(b[d],10);"object"==typeof a.plugins.wsc?c.push(1):c.push(0);return c},loadEngine:function(a){if(CKEDITOR.env.gecko&&10900> -CKEDITOR.env.version||CKEDITOR.env.opera||CKEDITOR.env.air)return a.fire("showScaytState");if(!0===this.engineLoaded)return r.apply(a);if(-1==this.engineLoaded)return CKEDITOR.on("scaytReady",function(){r.apply(a)});CKEDITOR.on("scaytReady",r,a);CKEDITOR.on("scaytReady",function(){this.engineLoaded=!0},this,null,0);this.engineLoaded=-1;var c=document.location.protocol,c=-1!=c.search(/https?:/)?c:"http:",c=a.config.scayt_srcUrl||c+"//svc.webspellchecker.net/scayt26/loader__base.js",b=d.parseUrl(c).path+ -"/";void 0==window.scayt?(CKEDITOR._djScaytConfig={baseUrl:b,addOnLoad:[function(){CKEDITOR.fireOnce("scaytReady")}],isDebug:!1},CKEDITOR.document.getHead().append(CKEDITOR.document.createElement("script",{attributes:{type:"text/javascript",async:"true",src:c}}))):CKEDITOR.fireOnce("scaytReady");return null},parseUrl:function(a){var c;return a.match&&(c=a.match(/(.*)[\/\\](.*?\.\w+)$/))?{path:c[1],file:c[2]}:a}};var d=CKEDITOR.plugins.scayt,p=function(a,c,b,d,e,f,h){a.addCommand(d,e);a.addMenuItem(d, -{label:b,command:d,group:f,order:h})},u={preserveState:!0,editorFocus:!1,canUndo:!1,exec:function(a){if(d.isScaytReady(a)){var c=d.isScaytEnabled(a);this.setState(c?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_ON);a=d.getScayt(a);a.focus();a.setDisabled(c)}else!a.config.scayt_autoStartup&&0<=d.engineLoaded&&(a.focus(),this.setState(CKEDITOR.TRISTATE_DISABLED),d.loadEngine(a))}};CKEDITOR.plugins.add("scayt",{requires:"menubutton,dialog",beforeInit:function(a){var c=a.config.scayt_contextMenuItemsOrder|| -"suggest|moresuggest|control",b="";if((c=c.split("|"))&&c.length)for(var d=0;d<c.length;d++)b+="scayt_"+c[d]+(c.length!=parseInt(d,10)+1?",":"");a.config.menu_groups=b+","+a.config.menu_groups},checkEnvironment:function(){return CKEDITOR.env.opera||CKEDITOR.env.air?0:1},init:function(a){var c=a.dataProcessor&&a.dataProcessor.dataFilter,b={elements:{span:function(a){var b=a.attributes;b&&b["data-scaytid"]&&delete a.name}}};c&&c.addRules(b);var g={},e={},f=a.addCommand("scaytcheck",u);CKEDITOR.dialog.add("scaytcheck", -CKEDITOR.getUrl(this.path+"dialogs/options.js"));c=d.getUiTabs(a);a.addMenuGroup("scaytButton");a.addMenuGroup("scayt_suggest",-10);a.addMenuGroup("scayt_moresuggest",-9);a.addMenuGroup("scayt_control",-8);var b={},h=a.lang.scayt;b.scaytToggle={label:h.enable,command:"scaytcheck",group:"scaytButton"};1==c[0]&&(b.scaytOptions={label:h.options,group:"scaytButton",onClick:function(){j="options";a.openDialog("scaytcheck")}});1==c[1]&&(b.scaytLangs={label:h.langs,group:"scaytButton",onClick:function(){j= -"langs";a.openDialog("scaytcheck")}});1==c[2]&&(b.scaytDict={label:h.dictionariesTab,group:"scaytButton",onClick:function(){j="dictionaries";a.openDialog("scaytcheck")}});b.scaytAbout={label:a.lang.scayt.about,group:"scaytButton",onClick:function(){j="about";a.openDialog("scaytcheck")}};1==c[4]&&(b.scaytWSC={label:a.lang.wsc.toolbar,group:"scaytButton",command:"checkspell"});a.addMenuItems(b);a.ui.add("Scayt",CKEDITOR.UI_MENUBUTTON,{label:h.title,title:CKEDITOR.env.opera?h.opera_title:h.title,modes:{wysiwyg:this.checkEnvironment()}, -toolbar:"spellchecker,20",onRender:function(){f.on("state",function(){this.setState(f.state)},this)},onMenu:function(){var b=d.isScaytEnabled(a);a.getMenuItem("scaytToggle").label=h[b?"disable":"enable"];var c=d.getUiTabs(a);return{scaytToggle:CKEDITOR.TRISTATE_OFF,scaytOptions:b&&c[0]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,scaytLangs:b&&c[1]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,scaytDict:b&&c[2]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,scaytAbout:b&&c[3]?CKEDITOR.TRISTATE_OFF: -CKEDITOR.TRISTATE_DISABLED,scaytWSC:c[4]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED}}});a.contextMenu&&a.addMenuItems&&a.contextMenu.addListener(function(b,c){if(!d.isScaytEnabled(a)||c.getRanges()[0].checkReadOnly())return null;var f=d.getScayt(a),n=f.getScaytNode();if(!n)return null;var i=f.getWord(n);if(!i)return null;var j=f.getLang(),l=a.config.scayt_contextCommands||"all",i=window.scayt.getSuggestion(i,j),l=l.split("|"),m;for(m in g){delete a._.menuItems[m];delete a.commands[m]}for(m in e){delete a._.menuItems[m]; -delete a.commands[m]}if(!i||!i.length){p(a,"no_sugg",h.noSuggestions,"scayt_no_sugg",{exec:function(){}},"scayt_control",1,true);e.scayt_no_sugg=CKEDITOR.TRISTATE_OFF}else{g={};e={};m=a.config.scayt_moreSuggestions||"on";var j=false,s=a.config.scayt_maxSuggestions;typeof s!="number"&&(s=5);!s&&(s=i.length);for(var k=0,r=i.length;k<r;k=k+1){var q="scayt_suggestion_"+i[k].replace(" ","_"),t=function(a,b){return{exec:function(){f.replace(a,b)}}}(n,i[k]);if(k<s){p(a,"button_"+q,i[k],q,t,"scayt_suggest", -k+1);e[q]=CKEDITOR.TRISTATE_OFF}else if(m=="on"){p(a,"button_"+q,i[k],q,t,"scayt_moresuggest",k+1);g[q]=CKEDITOR.TRISTATE_OFF;j=true}}if(j){a.addMenuItem("scayt_moresuggest",{label:h.moreSuggestions,group:"scayt_moresuggest",order:10,getItems:function(){return g}});e.scayt_moresuggest=CKEDITOR.TRISTATE_OFF}}if(o("all",l)||o("ignore",l)){p(a,"ignore",h.ignore,"scayt_ignore",{exec:function(){f.ignore(n)}},"scayt_control",2);e.scayt_ignore=CKEDITOR.TRISTATE_OFF}if(o("all",l)||o("ignoreall",l)){p(a,"ignore_all", -h.ignoreAll,"scayt_ignore_all",{exec:function(){f.ignoreAll(n)}},"scayt_control",3);e.scayt_ignore_all=CKEDITOR.TRISTATE_OFF}if(o("all",l)||o("add",l)){p(a,"add_word",h.addWord,"scayt_add_word",{exec:function(){window.scayt.addWordToUserDictionary(n)}},"scayt_control",4);e.scayt_add_word=CKEDITOR.TRISTATE_OFF}f.fireOnContextMenu&&f.fireOnContextMenu(a);return e});c=function(b){b.removeListener();CKEDITOR.env.opera||CKEDITOR.env.air?f.setState(CKEDITOR.TRISTATE_DISABLED):f.setState(d.isScaytEnabled(a)? -CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF)};a.on("showScaytState",c);a.on("instanceReady",c);if(a.config.scayt_autoStartup)a.on("instanceReady",function(){d.loadEngine(a)})},afterInit:function(a){var c,b=function(a){if(a.hasAttribute("data-scaytid"))return!1};a._.elementsPath&&(c=a._.elementsPath.filters)&&c.push(b);a.addRemoveFormatFilter&&a.addRemoveFormatFilter(b)}})})();(function(){CKEDITOR.plugins.add("stylescombo",{requires:"richcombo",init:function(c){var j=c.config,f=c.lang.stylescombo,e={},i=[],k=[];c.on("stylesSet",function(b){if(b=b.data.styles){for(var a,h,d=0,g=b.length;d<g;d++)if(a=b[d],!(c.blockless&&a.element in CKEDITOR.dtd.$block)&&(h=a.name,a=new CKEDITOR.style(a),!c.filter.customConfig||c.filter.check(a)))a._name=h,a._.enterMode=j.enterMode,a._.weight=d+1E3*(a.type==CKEDITOR.STYLE_OBJECT?1:a.type==CKEDITOR.STYLE_BLOCK?2:3),e[h]=a,i.push(a),k.push(a); -i.sort(function(a,b){return a._.weight-b._.weight})}});c.ui.addRichCombo("Styles",{label:f.label,title:f.panelTitle,toolbar:"styles,10",allowedContent:k,panel:{css:[CKEDITOR.skin.getPath("editor")].concat(j.contentsCss),multiSelect:!0,attributes:{"aria-label":f.panelTitle}},init:function(){var b,a,c,d,g,e;g=0;for(e=i.length;g<e;g++)b=i[g],a=b._name,d=b.type,d!=c&&(this.startGroup(f["panelTitle"+d]),c=d),this.add(a,b.type==CKEDITOR.STYLE_OBJECT?a:b.buildPreview(),a);this.commit()},onClick:function(b){c.focus(); -c.fire("saveSnapshot");var b=e[b],a=c.elementPath();c[b.checkActive(a)?"removeStyle":"applyStyle"](b);c.fire("saveSnapshot")},onRender:function(){c.on("selectionChange",function(b){for(var a=this.getValue(),b=b.data.path.elements,c=0,d=b.length,g;c<d;c++){g=b[c];for(var f in e)if(e[f].checkElementRemovable(g,!0)){f!=a&&this.setValue(f);return}}this.setValue("")},this)},onOpen:function(){var b=c.getSelection().getSelectedElement(),b=c.elementPath(b),a=[0,0,0,0];this.showAll();this.unmarkAll();for(var h in e){var d= -e[h],g=d.type;d.checkApplicable(b,c.activeFilter)?a[g]++:this.hideItem(h);d.checkActive(b)&&this.mark(h)}a[CKEDITOR.STYLE_BLOCK]||this.hideGroup(f["panelTitle"+CKEDITOR.STYLE_BLOCK]);a[CKEDITOR.STYLE_INLINE]||this.hideGroup(f["panelTitle"+CKEDITOR.STYLE_INLINE]);a[CKEDITOR.STYLE_OBJECT]||this.hideGroup(f["panelTitle"+CKEDITOR.STYLE_OBJECT])},refresh:function(){var b=c.elementPath();if(b){for(var a in e)if(e[a].checkApplicable(b,c.activeFilter))return;this.setState(CKEDITOR.TRISTATE_DISABLED)}},reset:function(){e= -{};i=[]}})}})})();(function(){function i(c){return{editorFocus:!1,canUndo:!1,modes:{wysiwyg:1},exec:function(d){if(d.editable().hasFocus){var e=d.getSelection(),b;if(b=(new CKEDITOR.dom.elementPath(e.getCommonAncestor(),e.root)).contains({td:1,th:1},1)){var e=d.createRange(),a=CKEDITOR.tools.tryThese(function(){var a=b.getParent().$.cells[b.$.cellIndex+(c?-1:1)];a.parentNode.parentNode;return a},function(){var a=b.getParent(),a=a.getAscendant("table").$.rows[a.$.rowIndex+(c?-1:1)];return a.cells[c?a.cells.length-1: -0]});if(!a&&!c){for(var f=b.getAscendant("table").$,a=b.getParent().$.cells,f=new CKEDITOR.dom.element(f.insertRow(-1),d.document),g=0,h=a.length;g<h;g++)f.append((new CKEDITOR.dom.element(a[g],d.document)).clone(!1,!1)).appendBogus();e.moveToElementEditStart(f)}else if(a)a=new CKEDITOR.dom.element(a),e.moveToElementEditStart(a),(!e.checkStartOfBlock()||!e.checkEndOfBlock())&&e.selectNodeContents(a);else return!0;e.select(!0);return!0}}return!1}}}var h={editorFocus:!1,modes:{wysiwyg:1,source:1}}, -g={exec:function(c){c.container.focusNext(!0,c.tabIndex)}},f={exec:function(c){c.container.focusPrevious(!0,c.tabIndex)}};CKEDITOR.plugins.add("tab",{init:function(c){for(var d=!1!==c.config.enableTabKeyTools,e=c.config.tabSpaces||0,b="";e--;)b+=" ";if(b)c.on("key",function(a){9==a.data.keyCode&&(c.insertHtml(b),a.cancel())});if(d)c.on("key",function(a){(9==a.data.keyCode&&c.execCommand("selectNextCell")||a.data.keyCode==CKEDITOR.SHIFT+9&&c.execCommand("selectPreviousCell"))&&a.cancel()});c.addCommand("blur", -CKEDITOR.tools.extend(g,h));c.addCommand("blurBack",CKEDITOR.tools.extend(f,h));c.addCommand("selectNextCell",i());c.addCommand("selectPreviousCell",i(!0))}})})(); -CKEDITOR.dom.element.prototype.focusNext=function(i,h){var g=void 0===h?this.getTabIndex():h,f,c,d,e,b,a;if(0>=g)for(b=this.getNextSourceNode(i,CKEDITOR.NODE_ELEMENT);b;){if(b.isVisible()&&0===b.getTabIndex()){d=b;break}b=b.getNextSourceNode(!1,CKEDITOR.NODE_ELEMENT)}else for(b=this.getDocument().getBody().getFirst();b=b.getNextSourceNode(!1,CKEDITOR.NODE_ELEMENT);){if(!f)if(!c&&b.equals(this)){if(c=!0,i){if(!(b=b.getNextSourceNode(!0,CKEDITOR.NODE_ELEMENT)))break;f=1}}else c&&!this.contains(b)&& -(f=1);if(b.isVisible()&&!(0>(a=b.getTabIndex()))){if(f&&a==g){d=b;break}a>g&&(!d||!e||a<e)?(d=b,e=a):!d&&0===a&&(d=b,e=a)}}d&&d.focus()}; -CKEDITOR.dom.element.prototype.focusPrevious=function(i,h){for(var g=void 0===h?this.getTabIndex():h,f,c,d,e=0,b,a=this.getDocument().getBody().getLast();a=a.getPreviousSourceNode(!1,CKEDITOR.NODE_ELEMENT);){if(!f)if(!c&&a.equals(this)){if(c=!0,i){if(!(a=a.getPreviousSourceNode(!0,CKEDITOR.NODE_ELEMENT)))break;f=1}}else c&&!this.contains(a)&&(f=1);if(a.isVisible()&&!(0>(b=a.getTabIndex())))if(0>=g){if(f&&0===b){d=a;break}b>e&&(d=a,e=b)}else{if(f&&b==g){d=a;break}if(b<g&&(!d||b>e))d=a,e=b}}d&&d.focus()};CKEDITOR.plugins.add("table",{requires:"dialog",init:function(a){function d(a){return CKEDITOR.tools.extend(a||{},{contextSensitive:1,refresh:function(a,e){this.setState(e.contains("table",1)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED)}})}if(!a.blockless){var b=a.lang.table;a.addCommand("table",new CKEDITOR.dialogCommand("table",{context:"table",allowedContent:"table{width,height}[align,border,cellpadding,cellspacing,summary];caption tbody thead tfoot;th td tr[scope];"+(a.plugins.dialogadvtab? -"table"+a.plugins.dialogadvtab.allowedContent():""),requiredContent:"table",contentTransformations:[["table{width}: sizeToStyle","table[width]: sizeToAttribute"]]}));a.addCommand("tableProperties",new CKEDITOR.dialogCommand("tableProperties",d()));a.addCommand("tableDelete",d({exec:function(a){var c=a.elementPath().contains("table",1);if(c){var b=c.getParent();1==b.getChildCount()&&!b.is("body","td","th")&&(c=b);a=a.createRange();a.moveToPosition(c,CKEDITOR.POSITION_BEFORE_START);c.remove();a.select()}}})); -a.ui.addButton&&a.ui.addButton("Table",{label:b.toolbar,command:"table",toolbar:"insert,30"});CKEDITOR.dialog.add("table",this.path+"dialogs/table.js");CKEDITOR.dialog.add("tableProperties",this.path+"dialogs/table.js");a.addMenuItems&&a.addMenuItems({table:{label:b.menu,command:"tableProperties",group:"table",order:5},tabledelete:{label:b.deleteTable,command:"tableDelete",group:"table",order:1}});a.on("doubleclick",function(a){a.data.element.is("table")&&(a.data.dialog="tableProperties")});a.contextMenu&& -a.contextMenu.addListener(function(){return{tabledelete:CKEDITOR.TRISTATE_OFF,table:CKEDITOR.TRISTATE_OFF}})}}});(function(){function p(e){function d(a){!(0<b.length)&&(a.type==CKEDITOR.NODE_ELEMENT&&y.test(a.getName())&&!a.getCustomData("selected_cell"))&&(CKEDITOR.dom.element.setMarker(c,a,"selected_cell",!0),b.push(a))}for(var e=e.getRanges(),b=[],c={},a=0;a<e.length;a++){var f=e[a];if(f.collapsed)f=f.getCommonAncestor(),(f=f.getAscendant("td",!0)||f.getAscendant("th",!0))&&b.push(f);else{var f=new CKEDITOR.dom.walker(f),g;for(f.guard=d;g=f.next();)if(g.type!=CKEDITOR.NODE_ELEMENT||!g.is(CKEDITOR.dtd.table))if((g= -g.getAscendant("td",!0)||g.getAscendant("th",!0))&&!g.getCustomData("selected_cell"))CKEDITOR.dom.element.setMarker(c,g,"selected_cell",!0),b.push(g)}}CKEDITOR.dom.element.clearAllMarkers(c);return b}function o(e,d){for(var b=p(e),c=b[0],a=c.getAscendant("table"),c=c.getDocument(),f=b[0].getParent(),g=f.$.rowIndex,b=b[b.length-1],h=b.getParent().$.rowIndex+b.$.rowSpan-1,b=new CKEDITOR.dom.element(a.$.rows[h]),g=d?g:h,f=d?f:b,b=CKEDITOR.tools.buildTableMap(a),a=b[g],g=d?b[g-1]:b[g+1],b=b[0].length, -c=c.createElement("tr"),h=0;a[h]&&h<b;h++){var i;1<a[h].rowSpan&&g&&a[h]==g[h]?(i=a[h],i.rowSpan+=1):(i=(new CKEDITOR.dom.element(a[h])).clone(),i.removeAttribute("rowSpan"),i.appendBogus(),c.append(i),i=i.$);h+=i.colSpan-1}d?c.insertBefore(f):c.insertAfter(f)}function q(e){if(e instanceof CKEDITOR.dom.selection){for(var d=p(e),b=d[0].getAscendant("table"),c=CKEDITOR.tools.buildTableMap(b),e=d[0].getParent().$.rowIndex,d=d[d.length-1],a=d.getParent().$.rowIndex+d.$.rowSpan-1,d=[],f=e;f<=a;f++){for(var g= -c[f],h=new CKEDITOR.dom.element(b.$.rows[f]),i=0;i<g.length;i++){var j=new CKEDITOR.dom.element(g[i]),l=j.getParent().$.rowIndex;1==j.$.rowSpan?j.remove():(j.$.rowSpan-=1,l==f&&(l=c[f+1],l[i-1]?j.insertAfter(new CKEDITOR.dom.element(l[i-1])):(new CKEDITOR.dom.element(b.$.rows[f+1])).append(j,1)));i+=j.$.colSpan-1}d.push(h)}c=b.$.rows;b=new CKEDITOR.dom.element(c[a+1]||(0<e?c[e-1]:null)||b.$.parentNode);for(f=d.length;0<=f;f--)q(d[f]);return b}e instanceof CKEDITOR.dom.element&&(b=e.getAscendant("table"), -1==b.$.rows.length?b.remove():e.remove());return null}function r(e,d){for(var b=d?Infinity:0,c=0;c<e.length;c++){var a;a=e[c];for(var f=d,g=a.getParent().$.cells,h=0,i=0;i<g.length;i++){var j=g[i],h=h+(f?1:j.colSpan);if(j==a.$)break}a=h-1;if(d?a<b:a>b)b=a}return b}function k(e,d){for(var b=p(e),c=b[0].getAscendant("table"),a=r(b,1),b=r(b),a=d?a:b,f=CKEDITOR.tools.buildTableMap(c),c=[],b=[],g=f.length,h=0;h<g;h++)c.push(f[h][a]),b.push(d?f[h][a-1]:f[h][a+1]);for(h=0;h<g;h++)c[h]&&(1<c[h].colSpan&& -b[h]==c[h]?(a=c[h],a.colSpan+=1):(a=(new CKEDITOR.dom.element(c[h])).clone(),a.removeAttribute("colSpan"),a.appendBogus(),a[d?"insertBefore":"insertAfter"].call(a,new CKEDITOR.dom.element(c[h])),a=a.$),h+=a.rowSpan-1)}function u(e,d){var b=e.getStartElement();if(b=b.getAscendant("td",1)||b.getAscendant("th",1)){var c=b.clone();c.appendBogus();d?c.insertBefore(b):c.insertAfter(b)}}function t(e){if(e instanceof CKEDITOR.dom.selection){var e=p(e),d=e[0]&&e[0].getAscendant("table"),b;a:{var c=0;b=e.length- -1;for(var a={},f,g;f=e[c++];)CKEDITOR.dom.element.setMarker(a,f,"delete_cell",!0);for(c=0;f=e[c++];)if((g=f.getPrevious())&&!g.getCustomData("delete_cell")||(g=f.getNext())&&!g.getCustomData("delete_cell")){CKEDITOR.dom.element.clearAllMarkers(a);b=g;break a}CKEDITOR.dom.element.clearAllMarkers(a);g=e[0].getParent();(g=g.getPrevious())?b=g.getLast():(g=e[b].getParent(),b=(g=g.getNext())?g.getChild(0):null)}for(g=e.length-1;0<=g;g--)t(e[g]);b?m(b,!0):d&&d.remove()}else e instanceof CKEDITOR.dom.element&& -(d=e.getParent(),1==d.getChildCount()?d.remove():e.remove())}function m(e,d){var b=e.getDocument(),c=CKEDITOR.document;CKEDITOR.env.ie&&11>CKEDITOR.env.version&&(c.focus(),b.focus());b=new CKEDITOR.dom.range(b);if(!b["moveToElementEdit"+(d?"End":"Start")](e))b.selectNodeContents(e),b.collapse(d?!1:!0);b.select(!0)}function v(e,d,b){e=e[d];if("undefined"==typeof b)return e;for(d=0;e&&d<e.length;d++){if(b.is&&e[d]==b.$)return d;if(d==b)return new CKEDITOR.dom.element(e[d])}return b.is?-1:null}function s(e, -d,b){var c=p(e),a;if((d?1!=c.length:2>c.length)||(a=e.getCommonAncestor())&&a.type==CKEDITOR.NODE_ELEMENT&&a.is("table"))return!1;var f,e=c[0];a=e.getAscendant("table");var g=CKEDITOR.tools.buildTableMap(a),h=g.length,i=g[0].length,j=e.getParent().$.rowIndex,l=v(g,j,e);if(d){var n;try{var m=parseInt(e.getAttribute("rowspan"),10)||1;f=parseInt(e.getAttribute("colspan"),10)||1;n=g["up"==d?j-m:"down"==d?j+m:j]["left"==d?l-f:"right"==d?l+f:l]}catch(z){return!1}if(!n||e.$==n)return!1;c["up"==d||"left"== -d?"unshift":"push"](new CKEDITOR.dom.element(n))}for(var d=e.getDocument(),o=j,m=n=0,q=!b&&new CKEDITOR.dom.documentFragment(d),s=0,d=0;d<c.length;d++){f=c[d];var k=f.getParent(),t=f.getFirst(),r=f.$.colSpan,u=f.$.rowSpan,k=k.$.rowIndex,w=v(g,k,f),s=s+r*u,m=Math.max(m,w-l+r);n=Math.max(n,k-j+u);if(!b){r=f;(u=r.getBogus())&&u.remove();r.trim();if(f.getChildren().count()){if(k!=o&&t&&(!t.isBlockBoundary||!t.isBlockBoundary({br:1})))(o=q.getLast(CKEDITOR.dom.walker.whitespaces(!0)))&&(!o.is||!o.is("br"))&& -q.append("br");f.moveChildren(q)}d?f.remove():f.setHtml("")}o=k}if(b)return n*m==s;q.moveChildren(e);e.appendBogus();m>=i?e.removeAttribute("rowSpan"):e.$.rowSpan=n;n>=h?e.removeAttribute("colSpan"):e.$.colSpan=m;b=new CKEDITOR.dom.nodeList(a.$.rows);c=b.count();for(d=c-1;0<=d;d--)a=b.getItem(d),a.$.cells.length||(a.remove(),c++);return e}function w(e,d){var b=p(e);if(1<b.length)return!1;if(d)return!0;var b=b[0],c=b.getParent(),a=c.getAscendant("table"),f=CKEDITOR.tools.buildTableMap(a),g=c.$.rowIndex, -h=v(f,g,b),i=b.$.rowSpan,j;if(1<i){j=Math.ceil(i/2);for(var i=Math.floor(i/2),c=g+j,a=new CKEDITOR.dom.element(a.$.rows[c]),f=v(f,c),l,c=b.clone(),g=0;g<f.length;g++)if(l=f[g],l.parentNode==a.$&&g>h){c.insertBefore(new CKEDITOR.dom.element(l));break}else l=null;l||a.append(c,!0)}else{i=j=1;a=c.clone();a.insertAfter(c);a.append(c=b.clone());l=v(f,g);for(h=0;h<l.length;h++)l[h].rowSpan++}c.appendBogus();b.$.rowSpan=j;c.$.rowSpan=i;1==j&&b.removeAttribute("rowSpan");1==i&&c.removeAttribute("rowSpan"); -return c}function x(e,d){var b=p(e);if(1<b.length)return!1;if(d)return!0;var b=b[0],c=b.getParent(),a=c.getAscendant("table"),a=CKEDITOR.tools.buildTableMap(a),f=v(a,c.$.rowIndex,b),g=b.$.colSpan;if(1<g)c=Math.ceil(g/2),g=Math.floor(g/2);else{for(var g=c=1,h=[],i=0;i<a.length;i++){var j=a[i];h.push(j[f]);1<j[f].rowSpan&&(i+=j[f].rowSpan-1)}for(a=0;a<h.length;a++)h[a].colSpan++}a=b.clone();a.insertAfter(b);a.appendBogus();b.$.colSpan=c;a.$.colSpan=g;1==c&&b.removeAttribute("colSpan");1==g&&a.removeAttribute("colSpan"); -return a}var y=/^(?:td|th)$/;CKEDITOR.plugins.tabletools={requires:"table,dialog,contextmenu",init:function(e){function d(a){return CKEDITOR.tools.extend(a||{},{contextSensitive:1,refresh:function(a,b){this.setState(b.contains({td:1,th:1},1)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED)}})}function b(a,b){var c=e.addCommand(a,b);e.addFeature(c)}var c=e.lang.table;b("cellProperties",new CKEDITOR.dialogCommand("cellProperties",d({allowedContent:"td th{width,height,border-color,background-color,white-space,vertical-align,text-align}[colspan,rowspan]", -requiredContent:"table"})));CKEDITOR.dialog.add("cellProperties",this.path+"dialogs/tableCell.js");b("rowDelete",d({requiredContent:"table",exec:function(a){a=a.getSelection();m(q(a))}}));b("rowInsertBefore",d({requiredContent:"table",exec:function(a){a=a.getSelection();o(a,!0)}}));b("rowInsertAfter",d({requiredContent:"table",exec:function(a){a=a.getSelection();o(a)}}));b("columnDelete",d({requiredContent:"table",exec:function(a){for(var a=a.getSelection(),a=p(a),b=a[0],c=a[a.length-1],a=b.getAscendant("table"), -d=CKEDITOR.tools.buildTableMap(a),e,j,l=[],n=0,o=d.length;n<o;n++)for(var k=0,q=d[n].length;k<q;k++)d[n][k]==b.$&&(e=k),d[n][k]==c.$&&(j=k);for(n=e;n<=j;n++)for(k=0;k<d.length;k++)c=d[k],b=new CKEDITOR.dom.element(a.$.rows[k]),c=new CKEDITOR.dom.element(c[n]),c.$&&(1==c.$.colSpan?c.remove():c.$.colSpan-=1,k+=c.$.rowSpan-1,b.$.cells.length||l.push(b));j=a.$.rows[0]&&a.$.rows[0].cells;e=new CKEDITOR.dom.element(j[e]||(e?j[e-1]:a.$.parentNode));l.length==o&&a.remove();e&&m(e,!0)}}));b("columnInsertBefore", -d({requiredContent:"table",exec:function(a){a=a.getSelection();k(a,!0)}}));b("columnInsertAfter",d({requiredContent:"table",exec:function(a){a=a.getSelection();k(a)}}));b("cellDelete",d({requiredContent:"table",exec:function(a){a=a.getSelection();t(a)}}));b("cellMerge",d({allowedContent:"td[colspan,rowspan]",requiredContent:"td[colspan,rowspan]",exec:function(a){m(s(a.getSelection()),!0)}}));b("cellMergeRight",d({allowedContent:"td[colspan]",requiredContent:"td[colspan]",exec:function(a){m(s(a.getSelection(), -"right"),!0)}}));b("cellMergeDown",d({allowedContent:"td[rowspan]",requiredContent:"td[rowspan]",exec:function(a){m(s(a.getSelection(),"down"),!0)}}));b("cellVerticalSplit",d({allowedContent:"td[rowspan]",requiredContent:"td[rowspan]",exec:function(a){m(w(a.getSelection()))}}));b("cellHorizontalSplit",d({allowedContent:"td[colspan]",requiredContent:"td[colspan]",exec:function(a){m(x(a.getSelection()))}}));b("cellInsertBefore",d({requiredContent:"table",exec:function(a){a=a.getSelection();u(a,!0)}})); -b("cellInsertAfter",d({requiredContent:"table",exec:function(a){a=a.getSelection();u(a)}}));e.addMenuItems&&e.addMenuItems({tablecell:{label:c.cell.menu,group:"tablecell",order:1,getItems:function(){var a=e.getSelection(),b=p(a);return{tablecell_insertBefore:CKEDITOR.TRISTATE_OFF,tablecell_insertAfter:CKEDITOR.TRISTATE_OFF,tablecell_delete:CKEDITOR.TRISTATE_OFF,tablecell_merge:s(a,null,!0)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,tablecell_merge_right:s(a,"right",!0)?CKEDITOR.TRISTATE_OFF: -CKEDITOR.TRISTATE_DISABLED,tablecell_merge_down:s(a,"down",!0)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,tablecell_split_vertical:w(a,!0)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,tablecell_split_horizontal:x(a,!0)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,tablecell_properties:0<b.length?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED}}},tablecell_insertBefore:{label:c.cell.insertBefore,group:"tablecell",command:"cellInsertBefore",order:5},tablecell_insertAfter:{label:c.cell.insertAfter, -group:"tablecell",command:"cellInsertAfter",order:10},tablecell_delete:{label:c.cell.deleteCell,group:"tablecell",command:"cellDelete",order:15},tablecell_merge:{label:c.cell.merge,group:"tablecell",command:"cellMerge",order:16},tablecell_merge_right:{label:c.cell.mergeRight,group:"tablecell",command:"cellMergeRight",order:17},tablecell_merge_down:{label:c.cell.mergeDown,group:"tablecell",command:"cellMergeDown",order:18},tablecell_split_horizontal:{label:c.cell.splitHorizontal,group:"tablecell", -command:"cellHorizontalSplit",order:19},tablecell_split_vertical:{label:c.cell.splitVertical,group:"tablecell",command:"cellVerticalSplit",order:20},tablecell_properties:{label:c.cell.title,group:"tablecellproperties",command:"cellProperties",order:21},tablerow:{label:c.row.menu,group:"tablerow",order:1,getItems:function(){return{tablerow_insertBefore:CKEDITOR.TRISTATE_OFF,tablerow_insertAfter:CKEDITOR.TRISTATE_OFF,tablerow_delete:CKEDITOR.TRISTATE_OFF}}},tablerow_insertBefore:{label:c.row.insertBefore, -group:"tablerow",command:"rowInsertBefore",order:5},tablerow_insertAfter:{label:c.row.insertAfter,group:"tablerow",command:"rowInsertAfter",order:10},tablerow_delete:{label:c.row.deleteRow,group:"tablerow",command:"rowDelete",order:15},tablecolumn:{label:c.column.menu,group:"tablecolumn",order:1,getItems:function(){return{tablecolumn_insertBefore:CKEDITOR.TRISTATE_OFF,tablecolumn_insertAfter:CKEDITOR.TRISTATE_OFF,tablecolumn_delete:CKEDITOR.TRISTATE_OFF}}},tablecolumn_insertBefore:{label:c.column.insertBefore, -group:"tablecolumn",command:"columnInsertBefore",order:5},tablecolumn_insertAfter:{label:c.column.insertAfter,group:"tablecolumn",command:"columnInsertAfter",order:10},tablecolumn_delete:{label:c.column.deleteColumn,group:"tablecolumn",command:"columnDelete",order:15}});e.contextMenu&&e.contextMenu.addListener(function(a,b,c){return(a=c.contains({td:1,th:1},1))&&!a.isReadOnly()?{tablecell:CKEDITOR.TRISTATE_OFF,tablerow:CKEDITOR.TRISTATE_OFF,tablecolumn:CKEDITOR.TRISTATE_OFF}:null})},getSelectedCells:p}; -CKEDITOR.plugins.add("tabletools",CKEDITOR.plugins.tabletools)})();CKEDITOR.tools.buildTableMap=function(p){for(var p=p.$.rows,o=-1,q=[],r=0;r<p.length;r++){o++;!q[o]&&(q[o]=[]);for(var k=-1,u=0;u<p[r].cells.length;u++){var t=p[r].cells[u];for(k++;q[o][k];)k++;for(var m=isNaN(t.colSpan)?1:t.colSpan,t=isNaN(t.rowSpan)?1:t.rowSpan,v=0;v<t;v++){q[o+v]||(q[o+v]=[]);for(var s=0;s<m;s++)q[o+v][k+s]=p[r].cells[u]}k+=m-1}}return q};(function(){function g(a){this.editor=a;this.reset()}CKEDITOR.plugins.add("undo",{init:function(a){function c(a){b.enabled&&!1!==a.data.command.canUndo&&b.save()}function d(){b.enabled=a.readOnly?!1:"wysiwyg"==a.mode;b.onChange()}var b=a.undoManager=new g(a),e=a.addCommand("undo",{exec:function(){b.undo()&&(a.selectionChange(),this.fire("afterUndo"))},startDisabled:!0,canUndo:!1}),f=a.addCommand("redo",{exec:function(){b.redo()&&(a.selectionChange(),this.fire("afterRedo"))},startDisabled:!0,canUndo:!1}); -a.setKeystroke([[CKEDITOR.CTRL+90,"undo"],[CKEDITOR.CTRL+89,"redo"],[CKEDITOR.CTRL+CKEDITOR.SHIFT+90,"redo"]]);b.onChange=function(){e.setState(b.undoable()?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED);f.setState(b.redoable()?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED)};a.on("beforeCommandExec",c);a.on("afterCommandExec",c);a.on("saveSnapshot",function(a){b.save(a.data&&a.data.contentOnly)});a.on("contentDom",function(){a.editable().on("keydown",function(a){a=a.data.getKey();(8==a||46== -a)&&b.type(a,0)});a.editable().on("keypress",function(a){b.type(a.data.getKey(),1)})});a.on("beforeModeUnload",function(){"wysiwyg"==a.mode&&b.save(!0)});a.on("mode",d);a.on("readOnly",d);a.ui.addButton&&(a.ui.addButton("Undo",{label:a.lang.undo.undo,command:"undo",toolbar:"undo,10"}),a.ui.addButton("Redo",{label:a.lang.undo.redo,command:"redo",toolbar:"undo,20"}));a.resetUndo=function(){b.reset();a.fire("saveSnapshot")};a.on("updateSnapshot",function(){b.currentImage&&b.update()});a.on("lockSnapshot", -function(a){b.lock(a.data&&a.data.dontUpdate)});a.on("unlockSnapshot",b.unlock,b)}});CKEDITOR.plugins.undo={};var f=CKEDITOR.plugins.undo.Image=function(a,c){this.editor=a;a.fire("beforeUndoImage");var d=a.getSnapshot();CKEDITOR.env.ie&&d&&(d=d.replace(/\s+data-cke-expando=".*?"/g,""));this.contents=d;c||(this.bookmarks=(d=d&&a.getSelection())&&d.createBookmarks2(!0));a.fire("afterUndoImage")},h=/\b(?:href|src|name)="[^"]*?"/gi;f.prototype={equalsContent:function(a){var c=this.contents,a=a.contents; -if(CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat))c=c.replace(h,""),a=a.replace(h,"");return c!=a?!1:!0},equalsSelection:function(a){var c=this.bookmarks,a=a.bookmarks;if(c||a){if(!c||!a||c.length!=a.length)return!1;for(var d=0;d<c.length;d++){var b=c[d],e=a[d];if(b.startOffset!=e.startOffset||b.endOffset!=e.endOffset||!CKEDITOR.tools.arrayCompare(b.start,e.start)||!CKEDITOR.tools.arrayCompare(b.end,e.end))return!1}}return!0}};g.prototype={type:function(a,c){var d=!c&&a!=this.lastKeystroke, -b=this.editor;if(!this.typing||c&&!this.wasCharacter||d){var e=new f(b),g=this.snapshots.length;CKEDITOR.tools.setTimeout(function(){var a=b.getSnapshot();CKEDITOR.env.ie&&(a=a.replace(/\s+data-cke-expando=".*?"/g,""));e.contents!=a&&g==this.snapshots.length&&(this.typing=!0,this.save(!1,e,!1)||this.snapshots.splice(this.index+1,this.snapshots.length-this.index-1),this.hasUndo=!0,this.hasRedo=!1,this.modifiersCount=this.typesCount=1,this.onChange())},0,this)}this.lastKeystroke=a;(this.wasCharacter= -c)?(this.modifiersCount=0,this.typesCount++,25<this.typesCount?(this.save(!1,null,!1),this.typesCount=1):setTimeout(function(){b.fire("change")},0)):(this.typesCount=0,this.modifiersCount++,25<this.modifiersCount?(this.save(!1,null,!1),this.modifiersCount=1):setTimeout(function(){b.fire("change")},0))},reset:function(){this.lastKeystroke=0;this.snapshots=[];this.index=-1;this.limit=this.editor.config.undoStackSize||20;this.currentImage=null;this.hasRedo=this.hasUndo=!1;this.locked=null;this.resetType()}, -resetType:function(){this.typing=!1;delete this.lastKeystroke;this.modifiersCount=this.typesCount=0},fireChange:function(){this.hasUndo=!!this.getNextImage(!0);this.hasRedo=!!this.getNextImage(!1);this.resetType();this.onChange()},save:function(a,c,d){if(this.locked)return!1;var b=this.snapshots;c||(c=new f(this.editor));if(!1===c.contents)return!1;if(this.currentImage)if(c.equalsContent(this.currentImage)){if(a||c.equalsSelection(this.currentImage))return!1}else this.editor.fire("change");b.splice(this.index+ -1,b.length-this.index-1);b.length==this.limit&&b.shift();this.index=b.push(c)-1;this.currentImage=c;!1!==d&&this.fireChange();return!0},restoreImage:function(a){var c=this.editor,d;a.bookmarks&&(c.focus(),d=c.getSelection());this.locked=1;this.editor.loadSnapshot(a.contents);a.bookmarks?d.selectBookmarks(a.bookmarks):CKEDITOR.env.ie&&(d=this.editor.document.getBody().$.createTextRange(),d.collapse(!0),d.select());this.locked=0;this.index=a.index;this.currentImage=this.snapshots[this.index];this.update(); -this.fireChange();c.fire("change")},getNextImage:function(a){var c=this.snapshots,d=this.currentImage,b;if(d)if(a)for(b=this.index-1;0<=b;b--){if(a=c[b],!d.equalsContent(a))return a.index=b,a}else for(b=this.index+1;b<c.length;b++)if(a=c[b],!d.equalsContent(a))return a.index=b,a;return null},redoable:function(){return this.enabled&&this.hasRedo},undoable:function(){return this.enabled&&this.hasUndo},undo:function(){if(this.undoable()){this.save(!0);var a=this.getNextImage(!0);if(a)return this.restoreImage(a), -!0}return!1},redo:function(){if(this.redoable()&&(this.save(!0),this.redoable())){var a=this.getNextImage(!1);if(a)return this.restoreImage(a),!0}return!1},update:function(a){if(!this.locked){a||(a=new f(this.editor));for(var c=this.index,d=this.snapshots;0<c&&this.currentImage.equalsContent(d[c-1]);)c-=1;d.splice(c,this.index-c+1,a);this.index=c;this.currentImage=a}},lock:function(a){this.locked?this.locked.level++:a?this.locked={level:1}:(a=new f(this.editor,!0),this.locked={update:this.currentImage&& -this.currentImage.equalsContent(a)?a:null,level:1})},unlock:function(){if(this.locked&&!--this.locked.level){var a=this.locked.update,c=a&&new f(this.editor,!0);this.locked=null;a&&!a.equalsContent(c)&&this.update()}}}})();CKEDITOR.config.wsc_removeGlobalVariable=!0; -CKEDITOR.plugins.add("wsc",{requires:"dialog",parseApi:function(a){a.config.wsc_onFinish="function"===typeof a.config.wsc_onFinish?a.config.wsc_onFinish:function(){};a.config.wsc_onClose="function"===typeof a.config.wsc_onClose?a.config.wsc_onClose:function(){}},parseConfig:function(a){a.config.wsc_customerId=a.config.wsc_customerId||CKEDITOR.config.wsc_customerId||"1:ua3xw1-2XyGJ3-GWruD3-6OFNT1-oXcuB1-nR6Bp4-hgQHc-EcYng3-sdRXG3-NOfFk";a.config.wsc_customDictionaryIds=a.config.wsc_customDictionaryIds|| -CKEDITOR.config.wsc_customDictionaryIds||"";a.config.wsc_userDictionaryName=a.config.wsc_userDictionaryName||CKEDITOR.config.wsc_userDictionaryName||"";a.config.wsc_customLoaderScript=a.config.wsc_customLoaderScript||CKEDITOR.config.wsc_customLoaderScript;CKEDITOR.config.wsc_cmd=a.config.wsc_cmd||CKEDITOR.config.wsc_cmd||"spell";CKEDITOR.config.wsc_version="v4.3.0-1e748a6"},init:function(a){this.parseConfig(a);this.parseApi(a);a.addCommand("checkspell",new CKEDITOR.dialogCommand("checkspell")).modes= -{wysiwyg:!CKEDITOR.env.opera&&!CKEDITOR.env.air&&document.domain==window.location.hostname};"undefined"==typeof a.plugins.scayt&&a.ui.addButton&&a.ui.addButton("SpellChecker",{label:a.lang.wsc.toolbar,command:"checkspell",toolbar:"spellchecker,10"});CKEDITOR.dialog.add("checkspell",this.path+(CKEDITOR.env.ie&&8>=CKEDITOR.env.version?"dialogs/wsc_ie.js":window.postMessage?"dialogs/wsc.js":"dialogs/wsc_ie.js"))}});CKEDITOR.config.plugins='dialogui,dialog,about,a11yhelp,basicstyles,blockquote,clipboard,panel,floatpanel,menu,contextmenu,resize,button,toolbar,elementspath,enterkey,entities,popup,filebrowser,floatingspace,listblock,richcombo,format,horizontalrule,htmlwriter,wysiwygarea,image,indent,indentlist,fakeobjects,link,list,magicline,maximize,pastetext,pastefromword,removeformat,sourcearea,specialchar,menubutton,scayt,stylescombo,tab,table,tabletools,undo,wsc';CKEDITOR.config.skin='moono';(function() {var setIcons = function(icons, strip) {var path = CKEDITOR.getUrl( 'plugins/' + strip );icons = icons.split( ',' );for ( var i = 0; i < icons.length; i++ )CKEDITOR.skin.icons[ icons[ i ] ] = { path: path, offset: -icons[ ++i ], bgsize : icons[ ++i ] };};if (CKEDITOR.env.hidpi) setIcons('about,0,,bold,24,,italic,48,,strike,72,,subscript,96,,superscript,120,,underline,144,,blockquote,168,,copy-rtl,192,,copy,216,,cut-rtl,240,,cut,264,,paste-rtl,288,,paste,312,,horizontalrule,336,,image,360,,indent-rtl,384,,indent,408,,outdent-rtl,432,,outdent,456,,anchor-rtl,480,,anchor,504,,link,528,,unlink,552,,bulletedlist-rtl,576,,bulletedlist,600,,numberedlist-rtl,624,,numberedlist,648,,maximize,672,,pastetext-rtl,696,,pastetext,720,,pastefromword-rtl,744,,pastefromword,768,,removeformat,792,,source-rtl,816,,source,840,,specialchar,864,,scayt,888,,table,912,,redo-rtl,936,,redo,960,,undo-rtl,984,,undo,1008,,spellchecker,1032,','icons_hidpi.png');else setIcons('about,0,auto,bold,24,auto,italic,48,auto,strike,72,auto,subscript,96,auto,superscript,120,auto,underline,144,auto,blockquote,168,auto,copy-rtl,192,auto,copy,216,auto,cut-rtl,240,auto,cut,264,auto,paste-rtl,288,auto,paste,312,auto,horizontalrule,336,auto,image,360,auto,indent-rtl,384,auto,indent,408,auto,outdent-rtl,432,auto,outdent,456,auto,anchor-rtl,480,auto,anchor,504,auto,link,528,auto,unlink,552,auto,bulletedlist-rtl,576,auto,bulletedlist,600,auto,numberedlist-rtl,624,auto,numberedlist,648,auto,maximize,672,auto,pastetext-rtl,696,auto,pastetext,720,auto,pastefromword-rtl,744,auto,pastefromword,768,auto,removeformat,792,auto,source-rtl,816,auto,source,840,auto,specialchar,864,auto,scayt,888,auto,table,912,auto,redo-rtl,936,auto,redo,960,auto,undo-rtl,984,auto,undo,1008,auto,spellchecker,1032,auto','icons.png');})();CKEDITOR.lang.languages={"af":1,"sq":1,"ar":1,"eu":1,"bn":1,"bs":1,"bg":1,"ca":1,"zh-cn":1,"zh":1,"hr":1,"cs":1,"da":1,"nl":1,"en":1,"en-au":1,"en-ca":1,"en-gb":1,"eo":1,"et":1,"fo":1,"fi":1,"fr":1,"fr-ca":1,"gl":1,"ka":1,"de":1,"el":1,"gu":1,"he":1,"hi":1,"hu":1,"is":1,"id":1,"it":1,"ja":1,"km":1,"ko":1,"ku":1,"lv":1,"lt":1,"mk":1,"ms":1,"mn":1,"no":1,"nb":1,"fa":1,"pl":1,"pt-br":1,"pt":1,"ro":1,"ru":1,"sr":1,"sr-latn":1,"si":1,"sk":1,"sl":1,"es":1,"sv":1,"th":1,"tr":1,"ug":1,"uk":1,"vi":1,"cy":1};}()); \ No newline at end of file diff --git a/assets/plugins/ckeditor/config.js b/assets/plugins/ckeditor/config.js deleted file mode 100644 index 66f6fbfa..00000000 --- a/assets/plugins/ckeditor/config.js +++ /dev/null @@ -1,38 +0,0 @@ -/** - * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ - -CKEDITOR.editorConfig = function( config ) { - // Define changes to default configuration here. - // For the complete reference: - // http://docs.ckeditor.com/#!/api/CKEDITOR.config - - // The toolbar groups arrangement, optimized for two toolbar rows. - config.toolbarGroups = [ - { name: 'clipboard', groups: [ 'clipboard', 'undo' ] }, - { name: 'editing', groups: [ 'find', 'selection', 'spellchecker' ] }, - { name: 'links' }, - { name: 'insert' }, - { name: 'forms' }, - { name: 'tools' }, - { name: 'document', groups: [ 'mode', 'document', 'doctools' ] }, - { name: 'others' }, - '/', - { name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ] }, - { name: 'paragraph', groups: [ 'list', 'indent', 'blocks', 'align', 'bidi' ] }, - { name: 'styles' }, - { name: 'colors' }, - { name: 'about' } - ]; - - // Remove some buttons, provided by the standard plugins, which we don't - // need to have in the Standard(s) toolbar. - config.removeButtons = 'Underline,Subscript,Superscript'; - - // Se the most common block elements. - config.format_tags = 'p;h1;h2;h3;pre'; - - // Make dialogs simpler. - config.removeDialogTabs = 'image:advanced;link:advanced'; -}; diff --git a/assets/plugins/ckeditor/contents.css b/assets/plugins/ckeditor/contents.css deleted file mode 100644 index 0874d26b..00000000 --- a/assets/plugins/ckeditor/contents.css +++ /dev/null @@ -1,123 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ - -body -{ - /* Font */ - font-family: sans-serif, Arial, Verdana, "Trebuchet MS"; - font-size: 12px; - - /* Text color */ - color: #333; - - /* Remove the background color to make it transparent */ - background-color: #fff; - - margin: 20px; -} - -.cke_editable -{ - font-size: 13px; - line-height: 1.6em; -} - -blockquote -{ - font-style: italic; - font-family: Georgia, Times, "Times New Roman", serif; - padding: 2px 0; - border-style: solid; - border-color: #ccc; - border-width: 0; -} - -.cke_contents_ltr blockquote -{ - padding-left: 20px; - padding-right: 8px; - border-left-width: 5px; -} - -.cke_contents_rtl blockquote -{ - padding-left: 8px; - padding-right: 20px; - border-right-width: 5px; -} - -a -{ - color: #0782C1; -} - -ol,ul,dl -{ - /* IE7: reset rtl list margin. (#7334) */ - *margin-right: 0px; - /* preserved spaces for list items with text direction other than the list. (#6249,#8049)*/ - padding: 0 40px; -} - -h1,h2,h3,h4,h5,h6 -{ - font-weight: normal; - line-height: 1.2em; -} - -hr -{ - border: 0px; - border-top: 1px solid #ccc; -} - -img.right -{ - border: 1px solid #ccc; - float: right; - margin-left: 15px; - padding: 5px; -} - -img.left -{ - border: 1px solid #ccc; - float: left; - margin-right: 15px; - padding: 5px; -} - -pre -{ - white-space: pre-wrap; /* CSS 2.1 */ - word-wrap: break-word; /* IE7 */ -} - -.marker -{ - background-color: Yellow; -} - -span[lang] -{ - font-style: italic; -} - -figure -{ - text-align: center; - border: solid 1px #ccc; - border-radius: 2px; - background: rgba(0,0,0,0.05); - padding: 10px; - margin: 10px 20px; - display: block; /* For IE8 */ -} - -figure figcaption -{ - text-align: center; - display: block; /* For IE8 */ -} diff --git a/assets/plugins/ckeditor/lang/af.js b/assets/plugins/ckeditor/lang/af.js deleted file mode 100644 index 899a6401..00000000 --- a/assets/plugins/ckeditor/lang/af.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['af']={"editor":"Teksverwerker","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Druk op ALT 0 vir hulp","browseServer":"Blaai op bediener","url":"URL","protocol":"Protokol","upload":"Oplaai","uploadSubmit":"Stuur na bediener","image":"Afbeelding","flash":"Flash","form":"Vorm","checkbox":"Merkhokkie","radio":"Radioknoppie","textField":"Teksveld","textarea":"Teks-area","hiddenField":"Blinde veld","button":"Knop","select":"Keuseveld","imageButton":"Afbeeldingsknop","notSet":"<geen instelling>","id":"Id","name":"Naam","langDir":"Skryfrigting","langDirLtr":"Links na regs (LTR)","langDirRtl":"Regs na links (RTL)","langCode":"Taalkode","longDescr":"Lang beskrywing URL","cssClass":"CSS klasse","advisoryTitle":"Aanbevole titel","cssStyle":"Styl","ok":"OK","cancel":"Kanselleer","close":"Sluit","preview":"Voorbeeld","resize":"Sleep om te herskaal","generalTab":"Algemeen","advancedTab":"Gevorderd","validateNumberFailed":"Hierdie waarde is nie 'n getal nie.","confirmNewPage":"Alle wysiginge sal verlore gaan. Is u seker dat u 'n nuwe bladsy wil laai?","confirmCancel":"Sommige opsies is gewysig. Is u seker dat u hierdie dialoogvenster wil sluit?","options":"Opsies","target":"Doel","targetNew":"Nuwe venster (_blank)","targetTop":"Boonste venster (_top)","targetSelf":"Selfde venster (_self)","targetParent":"Oorspronklike venster (_parent)","langDirLTR":"Links na Regs (LTR)","langDirRTL":"Regs na Links (RTL)","styles":"Styl","cssClasses":"CSS klasse","width":"Breedte","height":"Hoogte","align":"Oplyn","alignLeft":"Links","alignRight":"Regs","alignCenter":"Sentreer","alignTop":"Bo","alignMiddle":"Middel","alignBottom":"Onder","invalidValue":"Invalid value.","invalidHeight":"Hoogte moet 'n getal wees","invalidWidth":"Breedte moet 'n getal wees.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, nie beskikbaar nie</span>"},"about":{"copy":"Kopiereg &copy; $1. Alle regte voorbehou.","dlgTitle":"Info oor CKEditor","help":"Check $1 for help.","moreInfo":"Vir lisensie-informasie, besoek asb. ons webwerf:","title":"Info oor CKEditor","userGuide":"CKEditor User's Guide"},"basicstyles":{"bold":"Vet","italic":"Skuins","strike":"Deurstreep","subscript":"Onderskrif","superscript":"Bo-skrif","underline":"Onderstreep"},"blockquote":{"toolbar":"Sitaatblok"},"clipboard":{"copy":"Kopiëer","copyError":"U blaaier se sekuriteitsinstelling belet die kopiëringsaksie. Gebruik die sleutelbordkombinasie (Ctrl/Cmd+C).","cut":"Knip","cutError":"U blaaier se sekuriteitsinstelling belet die outomatiese knip-aksie. Gebruik die sleutelbordkombinasie (Ctrl/Cmd+X).","paste":"Plak","pasteArea":"Plak-area","pasteMsg":"Plak die teks in die volgende teks-area met die sleutelbordkombinasie (<STRONG>Ctrl/Cmd+V</STRONG>) en druk <STRONG>OK</STRONG>.","securityMsg":"Weens u blaaier se sekuriteitsinstelling is data op die knipbord nie toeganklik nie. U kan dit eers weer in hierdie venster plak.","title":"Byvoeg"},"contextmenu":{"options":"Konteks Spyskaart-opsies"},"toolbar":{"toolbarCollapse":"Verklein werkbalk","toolbarExpand":"Vergroot werkbalk","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"elementspath":{"eleLabel":"Elemente-pad","eleTitle":"%1 element"},"format":{"label":"Opmaak","panelTitle":"Opmaak","tag_address":"Adres","tag_div":"Normaal (DIV)","tag_h1":"Opskrif 1","tag_h2":"Opskrif 2","tag_h3":"Opskrif 3","tag_h4":"Opskrif 4","tag_h5":"Opskrif 5","tag_h6":"Opskrif 6","tag_p":"Normaal","tag_pre":"Opgemaak"},"horizontalrule":{"toolbar":"Horisontale lyn invoeg"},"image":{"alertUrl":"Gee URL van afbeelding.","alt":"Alternatiewe teks","border":"Rand","btnUpload":"Stuur na bediener","button2Img":"Wil u die geselekteerde afbeeldingsknop vervang met 'n eenvoudige afbeelding?","hSpace":"HSpasie","img2Button":"Wil u die geselekteerde afbeelding vervang met 'n afbeeldingsknop?","infoTab":"Afbeelding informasie","linkTab":"Skakel","lockRatio":"Vaste proporsie","menu":"Afbeelding eienskappe","resetSize":"Herstel grootte","title":"Afbeelding eienskappe","titleButton":"Afbeeldingsknop eienskappe","upload":"Oplaai","urlMissing":"Die URL na die afbeelding ontbreek.","vSpace":"VSpasie","validateBorder":"Rand moet 'n heelgetal wees.","validateHSpace":"HSpasie moet 'n heelgetal wees.","validateVSpace":"VSpasie moet 'n heelgetal wees."},"indent":{"indent":"Vergroot inspring","outdent":"Verklein inspring"},"fakeobjects":{"anchor":"Anker","flash":"Flash animasie","hiddenfield":"Verborge veld","iframe":"IFrame","unknown":"Onbekende objek"},"link":{"acccessKey":"Toegangsleutel","advanced":"Gevorderd","advisoryContentType":"Aanbevole inhoudstipe","advisoryTitle":"Aanbevole titel","anchor":{"toolbar":"Anker byvoeg/verander","menu":"Anker-eienskappe","title":"Anker-eienskappe","name":"Ankernaam","errorName":"Voltooi die ankernaam asseblief","remove":"Remove Anchor"},"anchorId":"Op element Id","anchorName":"Op ankernaam","charset":"Karakterstel van geskakelde bron","cssClasses":"CSS klasse","emailAddress":"E-posadres","emailBody":"Berig-inhoud","emailSubject":"Berig-onderwerp","id":"Id","info":"Skakel informasie","langCode":"Taalkode","langDir":"Skryfrigting","langDirLTR":"Links na regs (LTR)","langDirRTL":"Regs na links (RTL)","menu":"Wysig skakel","name":"Naam","noAnchors":"(Geen ankers beskikbaar in dokument)","noEmail":"Gee die e-posadres","noUrl":"Gee die skakel se URL","other":"<ander>","popupDependent":"Afhanklik (Netscape)","popupFeatures":"Eienskappe van opspringvenster","popupFullScreen":"Volskerm (IE)","popupLeft":"Posisie links","popupLocationBar":"Adresbalk","popupMenuBar":"Spyskaartbalk","popupResizable":"Herskaalbaar","popupScrollBars":"Skuifbalke","popupStatusBar":"Statusbalk","popupToolbar":"Werkbalk","popupTop":"Posisie bo","rel":"Relationship","selectAnchor":"Kies 'n anker","styles":"Styl","tabIndex":"Tab indeks","target":"Doel","targetFrame":"<raam>","targetFrameName":"Naam van doelraam","targetPopup":"<opspringvenster>","targetPopupName":"Naam van opspringvenster","title":"Skakel","toAnchor":"Anker in bladsy","toEmail":"E-pos","toUrl":"URL","toolbar":"Skakel invoeg/wysig","type":"Skakelsoort","unlink":"Verwyder skakel","upload":"Oplaai"},"list":{"bulletedlist":"Ongenommerde lys","numberedlist":"Genommerde lys"},"magicline":{"title":"Insert paragraph here"},"maximize":{"maximize":"Maksimaliseer","minimize":"Minimaliseer"},"pastetext":{"button":"Plak as eenvoudige teks","title":"Plak as eenvoudige teks"},"pastefromword":{"confirmCleanup":"Die teks wat u wil plak lyk asof dit uit Word gekopiëer is. Wil u dit eers skoonmaak voordat dit geplak word?","error":"Die geplakte teks kon nie skoongemaak word nie, weens 'n interne fout","title":"Plak vanuit Word","toolbar":"Plak vanuit Word"},"removeformat":{"toolbar":"Verwyder opmaak"},"sourcearea":{"toolbar":"Bron"},"specialchar":{"options":"Spesiale karakter-opsies","title":"Kies spesiale karakter","toolbar":"Voeg spesiaale karakter in"},"scayt":{"about":"SCAYT info","aboutTab":"Info","addWord":"Voeg woord by","allCaps":"Ignoreer woorde in hoofletters","dic_create":"Skep","dic_delete":"Verwijder","dic_field_name":"Naam van woordeboek","dic_info":"Aanvanklik word die gebruikerswoordeboek in 'n koekie gestoor. Koekies is egter beperk in grootte. Wanneer die gebruikerswoordeboek te groot vir 'n koekie geword het, kan dit op ons bediener gestoor word. Om u persoonlike woordeboek op ons bediener te stoor, gee asb. 'n naam vir u woordeboek. Indien u alreeds 'n gestoorde woordeboek het, tik die naam en kliek op die Herstel knop.","dic_rename":"Hernoem","dic_restore":"Herstel","dictionariesTab":"Woordeboeke","disable":"SCAYT af","emptyDic":"Woordeboeknaam mag nie leeg wees nie.","enable":"SCAYT aan","ignore":"Ignoreer","ignoreAll":"Ignoreer alles","ignoreDomainNames":"Ignoreer domeinname","langs":"Tale","languagesTab":"Tale","mixedCase":"Ignoreer woorde met hoof- en kleinletters","mixedWithDigits":"Ignoreer woorde met syfers","moreSuggestions":"Meer voorstelle","opera_title":"Nie ondersteun deur Opera nie","options":"Opsies","optionsTab":"Opsies","title":"Speltoets terwyl u tik","toggle":"SCAYT wissel aan/af","noSuggestions":"No suggestion"},"stylescombo":{"label":"Styl","panelTitle":"Opmaak style","panelTitle1":"Blok style","panelTitle2":"Inlyn style","panelTitle3":"Objek style"},"table":{"border":"Randbreedte","caption":"Naam","cell":{"menu":"Sel","insertBefore":"Voeg sel in voor","insertAfter":"Voeg sel in na","deleteCell":"Verwyder sel","merge":"Voeg selle saam","mergeRight":"Voeg saam na regs","mergeDown":"Voeg saam ondertoe","splitHorizontal":"Splits sel horisontaal","splitVertical":"Splits sel vertikaal","title":"Sel eienskappe","cellType":"Sel tipe","rowSpan":"Omspan rye","colSpan":"Omspan kolomme","wordWrap":"Woord terugloop","hAlign":"Horisontale oplyning","vAlign":"Vertikale oplyning","alignBaseline":"Basislyn","bgColor":"Agtergrondkleur","borderColor":"Randkleur","data":"Inhoud","header":"Opskrif","yes":"Ja","no":"Nee","invalidWidth":"Selbreedte moet 'n getal wees.","invalidHeight":"Selhoogte moet 'n getal wees.","invalidRowSpan":"Omspan rye moet 'n heelgetal wees.","invalidColSpan":"Omspan kolomme moet 'n heelgetal wees.","chooseColor":"Kies"},"cellPad":"Sel-spasie","cellSpace":"Sel-afstand","column":{"menu":"Kolom","insertBefore":"Voeg kolom in voor","insertAfter":"Voeg kolom in na","deleteColumn":"Verwyder kolom"},"columns":"Kolomme","deleteTable":"Verwyder tabel","headers":"Opskrifte","headersBoth":"Beide ","headersColumn":"Eerste kolom","headersNone":"Geen","headersRow":"Eerste ry","invalidBorder":"Randbreedte moet 'n getal wees.","invalidCellPadding":"Sel-spasie moet 'n getal wees.","invalidCellSpacing":"Sel-afstand moet 'n getal wees.","invalidCols":"Aantal kolomme moet 'n getal groter as 0 wees.","invalidHeight":"Tabelhoogte moet 'n getal wees.","invalidRows":"Aantal rye moet 'n getal groter as 0 wees.","invalidWidth":"Tabelbreedte moet 'n getal wees.","menu":"Tabel eienskappe","row":{"menu":"Ry","insertBefore":"Voeg ry in voor","insertAfter":"Voeg ry in na","deleteRow":"Verwyder ry"},"rows":"Rye","summary":"Opsomming","title":"Tabel eienskappe","toolbar":"Tabel","widthPc":"persent","widthPx":"piksels","widthUnit":"breedte-eenheid"},"undo":{"redo":"Oordoen","undo":"Ontdoen"},"wsc":{"btnIgnore":"Ignoreer","btnIgnoreAll":"Ignoreer alles","btnReplace":"Vervang","btnReplaceAll":"vervang alles","btnUndo":"Ontdoen","changeTo":"Verander na","errorLoading":"Fout by inlaai van diens: %s.","ieSpellDownload":"Speltoetser is nie geïnstalleer nie. Wil u dit nou aflaai?","manyChanges":"Klaar met speltoets: %1 woorde verander","noChanges":"Klaar met speltoets: Geen woorde verander nie","noMispell":"Klaar met speltoets: Geen foute nie","noSuggestions":"- Geen voorstel -","notAvailable":"Jammer, hierdie diens is nie nou beskikbaar nie.","notInDic":"Nie in woordeboek nie","oneChange":"Klaar met speltoets: Een woord verander","progress":"Spelling word getoets...","title":"Speltoetser","toolbar":"Speltoets"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/ar.js b/assets/plugins/ckeditor/lang/ar.js deleted file mode 100644 index 2c57ade9..00000000 --- a/assets/plugins/ckeditor/lang/ar.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['ar']={"editor":"محرر النص الغني","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"إضغط على ALT + 0 للحصول على المساعدة.","browseServer":"تصفح","url":"الرابط","protocol":"البروتوكول","upload":"رفع","uploadSubmit":"أرسل","image":"صورة","flash":"فلاش","form":"نموذج","checkbox":"خانة إختيار","radio":"زر اختيار","textField":"مربع نص","textarea":"مساحة نصية","hiddenField":"إدراج حقل خفي","button":"زر ضغط","select":"اختار","imageButton":"زر صورة","notSet":"<بدون تحديد>","id":"الرقم","name":"إسم","langDir":"إتجاه النص","langDirLtr":"اليسار لليمين (LTR)","langDirRtl":"اليمين لليسار (RTL)","langCode":"رمز اللغة","longDescr":"الوصف التفصيلى","cssClass":"فئات التنسيق","advisoryTitle":"عنوان التقرير","cssStyle":"نمط","ok":"موافق","cancel":"إلغاء الأمر","close":"أغلق","preview":"استعراض","resize":"تغيير الحجم","generalTab":"عام","advancedTab":"متقدم","validateNumberFailed":"لايوجد نتيجة","confirmNewPage":"ستفقد أي متغييرات اذا لم تقم بحفظها اولا. هل أنت متأكد أنك تريد صفحة جديدة؟","confirmCancel":"بعض الخيارات قد تغيرت. هل أنت متأكد من إغلاق مربع النص؟","options":"خيارات","target":"هدف الرابط","targetNew":"نافذة جديدة","targetTop":"النافذة الأعلى","targetSelf":"داخل النافذة","targetParent":"النافذة الأم","langDirLTR":"اليسار لليمين (LTR)","langDirRTL":"اليمين لليسار (RTL)","styles":"نمط","cssClasses":"فئات التنسيق","width":"العرض","height":"الإرتفاع","align":"محاذاة","alignLeft":"يسار","alignRight":"يمين","alignCenter":"وسط","alignTop":"أعلى","alignMiddle":"وسط","alignBottom":"أسفل","invalidValue":"قيمة غير مفبولة.","invalidHeight":"الارتفاع يجب أن يكون عدداً.","invalidWidth":"العرض يجب أن يكون عدداً.","invalidCssLength":"قيمة الخانة المخصصة لـ \"%1\" يجب أن تكون رقما موجبا، باستخدام أو من غير استخدام وحدة CSS قياس مقبولة (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"قيمة الخانة المخصصة لـ \"%1\" يجب أن تكون رقما موجبا، باستخدام أو من غير استخدام وحدة HTML قياس مقبولة (px or %).","invalidInlineStyle":"قيمة الخانة المخصصة لـ Inline Style يجب أن تختوي على مجموع واحد أو أكثر بالشكل التالي: \"name : value\", مفصولة بفاصلة منقزطة.","cssLengthTooltip":"أدخل رقما للقيمة بالبكسل أو رقما بوحدة CSS مقبولة (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, غير متاح</span>"},"about":{"copy":"حقوق النشر &copy; $1. جميع الحقوق محفوظة.","dlgTitle":"عن CKEditor","help":"راجع $1 من أجل المساعدة","moreInfo":"للحصول على معلومات الترخيص ، يرجى زيارة موقعنا:","title":"عن CKEditor","userGuide":"دليل مستخدم CKEditor."},"basicstyles":{"bold":"عريض","italic":"مائل","strike":"يتوسطه خط","subscript":"منخفض","superscript":"مرتفع","underline":"تسطير"},"blockquote":{"toolbar":"اقتباس"},"clipboard":{"copy":"نسخ","copyError":"الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع عمليات النسخ التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl/Cmd+C).","cut":"قص","cutError":"الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع القص التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl/Cmd+X).","paste":"لصق","pasteArea":"منطقة اللصق","pasteMsg":"الصق داخل الصندوق بإستخدام زرائر (<STRONG>Ctrl/Cmd+V</STRONG>) في لوحة المفاتيح، ثم اضغط زر <STRONG>موافق</STRONG>.","securityMsg":"نظراً لإعدادات الأمان الخاصة بمتصفحك، لن يتمكن هذا المحرر من الوصول لمحتوى حافظتك، لذلك يجب عليك لصق المحتوى مرة أخرى في هذه النافذة.","title":"لصق"},"contextmenu":{"options":"خصائص قائمة السياق"},"toolbar":{"toolbarCollapse":"تقليص شريط الأدوت","toolbarExpand":"تمديد شريط الأدوات","toolbarGroups":{"document":"مستند","clipboard":"الحافظة/الرجوع","editing":"تحرير","forms":"نماذج","basicstyles":"نمط بسيط","paragraph":"فقرة","links":"روابط","insert":"إدراج","styles":"أنماط","colors":"ألوان","tools":"أدوات"},"toolbars":"أشرطة أدوات المحرر"},"elementspath":{"eleLabel":"مسار العنصر","eleTitle":"عنصر 1%"},"format":{"label":"تنسيق","panelTitle":"تنسيق الفقرة","tag_address":"عنوان","tag_div":"عادي (DIV)","tag_h1":"العنوان 1","tag_h2":"العنوان 2","tag_h3":"العنوان 3","tag_h4":"العنوان 4","tag_h5":"العنوان 5","tag_h6":"العنوان 6","tag_p":"عادي","tag_pre":"منسّق"},"horizontalrule":{"toolbar":"خط فاصل"},"image":{"alertUrl":"فضلاً أكتب الموقع الذي توجد عليه هذه الصورة.","alt":"عنوان الصورة","border":"سمك الحدود","btnUpload":"أرسلها للخادم","button2Img":"هل تريد تحويل زر الصورة المختار إلى صورة بسيطة؟","hSpace":"تباعد أفقي","img2Button":"هل تريد تحويل الصورة المختارة إلى زر صورة؟","infoTab":"معلومات الصورة","linkTab":"الرابط","lockRatio":"تناسق الحجم","menu":"خصائص الصورة","resetSize":"إستعادة الحجم الأصلي","title":"خصائص الصورة","titleButton":"خصائص زر الصورة","upload":"رفع","urlMissing":"عنوان مصدر الصورة مفقود","vSpace":"تباعد عمودي","validateBorder":"الإطار يجب أن يكون عددا","validateHSpace":"HSpace يجب أن يكون عدداً.","validateVSpace":"VSpace يجب أن يكون عدداً."},"indent":{"indent":"زيادة المسافة البادئة","outdent":"إنقاص المسافة البادئة"},"fakeobjects":{"anchor":"إرساء","flash":"رسم متحرك بالفلاش","hiddenfield":"إدراج حقل خفي","iframe":"iframe","unknown":"عنصر غير معروف"},"link":{"acccessKey":"مفاتيح الإختصار","advanced":"متقدم","advisoryContentType":"نوع التقرير","advisoryTitle":"عنوان التقرير","anchor":{"toolbar":"إشارة مرجعية","menu":"تحرير الإشارة المرجعية","title":"خصائص الإشارة المرجعية","name":"اسم الإشارة المرجعية","errorName":"الرجاء كتابة اسم الإشارة المرجعية","remove":"إزالة الإشارة المرجعية"},"anchorId":"حسب رقم العنصر","anchorName":"حسب إسم الإشارة المرجعية","charset":"ترميز المادة المطلوبة","cssClasses":"فئات التنسيق","emailAddress":"البريد الإلكتروني","emailBody":"محتوى الرسالة","emailSubject":"موضوع الرسالة","id":"هوية","info":"معلومات الرابط","langCode":"رمز اللغة","langDir":"إتجاه نص اللغة","langDirLTR":"اليسار لليمين (LTR)","langDirRTL":"اليمين لليسار (RTL)","menu":"تحرير الرابط","name":"إسم","noAnchors":"(لا توجد علامات مرجعية في هذا المستند)","noEmail":"الرجاء كتابة الريد الإلكتروني","noUrl":"الرجاء كتابة رابط الموقع","other":"<أخرى>","popupDependent":"تابع (Netscape)","popupFeatures":"خصائص النافذة المنبثقة","popupFullScreen":"ملئ الشاشة (IE)","popupLeft":"التمركز لليسار","popupLocationBar":"شريط العنوان","popupMenuBar":"القوائم الرئيسية","popupResizable":"قابلة التشكيل","popupScrollBars":"أشرطة التمرير","popupStatusBar":"شريط الحالة","popupToolbar":"شريط الأدوات","popupTop":"التمركز للأعلى","rel":"العلاقة","selectAnchor":"اختر علامة مرجعية","styles":"نمط","tabIndex":"الترتيب","target":"هدف الرابط","targetFrame":"<إطار>","targetFrameName":"اسم الإطار المستهدف","targetPopup":"<نافذة منبثقة>","targetPopupName":"اسم النافذة المنبثقة","title":"رابط","toAnchor":"مكان في هذا المستند","toEmail":"بريد إلكتروني","toUrl":"الرابط","toolbar":"رابط","type":"نوع الربط","unlink":"إزالة رابط","upload":"رفع"},"list":{"bulletedlist":"ادخال/حذف تعداد نقطي","numberedlist":"ادخال/حذف تعداد رقمي"},"magicline":{"title":"إدراج فقرة هنا"},"maximize":{"maximize":"تكبير","minimize":"تصغير"},"pastetext":{"button":"لصق كنص بسيط","title":"لصق كنص بسيط"},"pastefromword":{"confirmCleanup":"يبدو أن النص المراد لصقه منسوخ من برنامج وورد. هل تود تنظيفه قبل الشروع في عملية اللصق؟","error":"لم يتم مسح المعلومات الملصقة لخلل داخلي","title":"لصق من وورد","toolbar":"لصق من وورد"},"removeformat":{"toolbar":"إزالة التنسيقات"},"sourcearea":{"toolbar":"المصدر"},"specialchar":{"options":"خيارات الأحرف الخاصة","title":"اختر حرف خاص","toolbar":"إدراج حرف خاص"},"scayt":{"about":"عن SCAYT","aboutTab":"عن","addWord":"إضافة كلمة","allCaps":"Ignore All-Caps Words","dic_create":"Create","dic_delete":"Delete","dic_field_name":"Dictionary name","dic_info":"Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.","dic_rename":"Rename","dic_restore":"Restore","dictionariesTab":"قواميس","disable":"تعطيل SCAYT","emptyDic":"اسم القاموس يجب ألا يكون فارغاً.","enable":"تفعيل SCAYT","ignore":"تجاهل","ignoreAll":"تجاهل الكل","ignoreDomainNames":"Ignore Domain Names","langs":"لغات","languagesTab":"لغات","mixedCase":"Ignore Words with Mixed Case","mixedWithDigits":"Ignore Words with Numbers","moreSuggestions":"المزيد من المقترحات","opera_title":"Not supported by Opera","options":"خيارات","optionsTab":"خيارات","title":"تدقيق إملائي أثناء الكتابة","toggle":"تثبيت SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"أنماط","panelTitle":"أنماط التنسيق","panelTitle1":"أنماط الفقرة","panelTitle2":"أنماط مضمنة","panelTitle3":"أنماط الكائن"},"table":{"border":"الحدود","caption":"الوصف","cell":{"menu":"خلية","insertBefore":"إدراج خلية قبل","insertAfter":"إدراج خلية بعد","deleteCell":"حذف خلية","merge":"دمج خلايا","mergeRight":"دمج لليمين","mergeDown":"دمج للأسفل","splitHorizontal":"تقسيم الخلية أفقياً","splitVertical":"تقسيم الخلية عمودياً","title":"خصائص الخلية","cellType":"نوع الخلية","rowSpan":"امتداد الصفوف","colSpan":"امتداد الأعمدة","wordWrap":"التفاف النص","hAlign":"محاذاة أفقية","vAlign":"محاذاة رأسية","alignBaseline":"خط القاعدة","bgColor":"لون الخلفية","borderColor":"لون الحدود","data":"بيانات","header":"عنوان","yes":"نعم","no":"لا","invalidWidth":"عرض الخلية يجب أن يكون عدداً.","invalidHeight":"ارتفاع الخلية يجب أن يكون عدداً.","invalidRowSpan":"امتداد الصفوف يجب أن يكون عدداً صحيحاً.","invalidColSpan":"امتداد الأعمدة يجب أن يكون عدداً صحيحاً.","chooseColor":"اختر"},"cellPad":"المسافة البادئة","cellSpace":"تباعد الخلايا","column":{"menu":"عمود","insertBefore":"إدراج عمود قبل","insertAfter":"إدراج عمود بعد","deleteColumn":"حذف أعمدة"},"columns":"أعمدة","deleteTable":"حذف الجدول","headers":"العناوين","headersBoth":"كلاهما","headersColumn":"العمود الأول","headersNone":"بدون","headersRow":"الصف الأول","invalidBorder":"حجم الحد يجب أن يكون عدداً.","invalidCellPadding":"المسافة البادئة يجب أن تكون عدداً","invalidCellSpacing":"المسافة بين الخلايا يجب أن تكون عدداً.","invalidCols":"عدد الأعمدة يجب أن يكون عدداً أكبر من صفر.","invalidHeight":"ارتفاع الجدول يجب أن يكون عدداً.","invalidRows":"عدد الصفوف يجب أن يكون عدداً أكبر من صفر.","invalidWidth":"عرض الجدول يجب أن يكون عدداً.","menu":"خصائص الجدول","row":{"menu":"صف","insertBefore":"إدراج صف قبل","insertAfter":"إدراج صف بعد","deleteRow":"حذف صفوف"},"rows":"صفوف","summary":"الخلاصة","title":"خصائص الجدول","toolbar":"جدول","widthPc":"بالمئة","widthPx":"بكسل","widthUnit":"وحدة العرض"},"undo":{"redo":"إعادة","undo":"تراجع"},"wsc":{"btnIgnore":"تجاهل","btnIgnoreAll":"تجاهل الكل","btnReplace":"تغيير","btnReplaceAll":"تغيير الكل","btnUndo":"تراجع","changeTo":"التغيير إلى","errorLoading":"خطأ في تحميل تطبيق خدمة الاستضافة: %s.","ieSpellDownload":"المدقق الإملائي (الإنجليزي) غير مثبّت. هل تود تحميله الآن؟","manyChanges":"تم إكمال التدقيق الإملائي: تم تغيير %1 من كلمات","noChanges":"تم التدقيق الإملائي: لم يتم تغيير أي كلمة","noMispell":"تم التدقيق الإملائي: لم يتم العثور على أي أخطاء إملائية","noSuggestions":"- لا توجد إقتراحات -","notAvailable":"عفواً، ولكن هذه الخدمة غير متاحة الان","notInDic":"ليست في القاموس","oneChange":"تم التدقيق الإملائي: تم تغيير كلمة واحدة فقط","progress":"جاري التدقيق الاملائى","title":"التدقيق الإملائي","toolbar":"تدقيق إملائي"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/bg.js b/assets/plugins/ckeditor/lang/bg.js deleted file mode 100644 index af3c4bef..00000000 --- a/assets/plugins/ckeditor/lang/bg.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['bg']={"editor":"Текстов редактор за форматиран текст","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"натиснете ALT 0 за помощ","browseServer":"Избор от сървъра","url":"URL","protocol":"Протокол","upload":"Качване","uploadSubmit":"Изпращане към сървъра","image":"Снимка","flash":"Флаш","form":"Форма","checkbox":"Поле за избор","radio":"Радио бутон","textField":"Текстово поле","textarea":"Текстова зона","hiddenField":"Скрито поле","button":"Бутон","select":"Поле за избор","imageButton":"Бутон за снимка","notSet":"<не е избрано>","id":"ID","name":"Име","langDir":"Посока на езика","langDirLtr":"Ляво на дясно (ЛнД)","langDirRtl":"Дясно на ляво (ДнЛ)","langCode":"Код на езика","longDescr":"Уеб адрес за дълго описание","cssClass":"Класове за CSS","advisoryTitle":"Препоръчително заглавие","cssStyle":"Стил","ok":"ОК","cancel":"Отказ","close":"Затвори","preview":"Преглед","resize":"Влачете за да оразмерите","generalTab":"Общи","advancedTab":"Разширено","validateNumberFailed":"Тази стойност не е число","confirmNewPage":"Всички незапазени промени ще бъдат изгубени. Сигурни ли сте, че желаете да заредите нова страница?","confirmCancel":"Някои от опциите са променени. Сигурни ли сте, че желаете да затворите прозореца?","options":"Опции","target":"Цел","targetNew":"Нов прозорец (_blank)","targetTop":"Горна позиция (_top)","targetSelf":"Текущия прозорец (_self)","targetParent":"Основен прозорец (_parent)","langDirLTR":"Ляво на дясно (ЛнД)","langDirRTL":"Дясно на ляво (ДнЛ)","styles":"Стил","cssClasses":"Класове за CSS","width":"Ширина","height":"Височина","align":"Подравняване","alignLeft":"Ляво","alignRight":"Дясно","alignCenter":"Център","alignTop":"Горе","alignMiddle":"По средата","alignBottom":"Долу","invalidValue":"Невалидна стойност.","invalidHeight":"Височината трябва да е число.","invalidWidth":"Ширина требе да е число.","invalidCssLength":"Стойността на полето \"%1\" трябва да бъде положително число с или без валидна CSS измервателна единица (px, %, in, cm, mm, em, ex, pt, или pc).","invalidHtmlLength":"Стойността на полето \"%1\" трябва да бъде положително число с или без валидна HTML измервателна единица (px или %).","invalidInlineStyle":"Стойността на стилa трябва да съдържат една или повече двойки във формат \"name : value\", разделени с двоеточие.","cssLengthTooltip":"Въведете числена стойност в пиксели или друга валидна CSS единица (px, %, in, cm, mm, em, ex, pt, или pc).","unavailable":"%1<span class=\"cke_accessibility\">, недостъпно</span>"},"about":{"copy":"Copyright &copy; $1. All rights reserved.","dlgTitle":"Относно CKEditor","help":"Проверете $1 за помощ.","moreInfo":"За лицензионна информация моля посетете сайта ни:","title":"Относно CKEditor","userGuide":"CKEditor User's Guide"},"basicstyles":{"bold":"Удебелен","italic":"Наклонен","strike":"Зачертан текст","subscript":"Индексиран текст","superscript":"Суперскрипт","underline":"Подчертан"},"blockquote":{"toolbar":"Блок за цитат"},"clipboard":{"copy":"Копирай","copyError":"Настройките за сигурност на вашия бразуър не разрешават на редактора да изпълни запаметяването. За целта използвайте клавиатурата (Ctrl/Cmd+C).","cut":"Отрежи","cutError":"Настройките за сигурност на Вашия браузър не позволяват на редактора автоматично да изъплни действията за отрязване. Моля ползвайте клавиатурните команди за целта (ctrl+x).","paste":"Вмъкни","pasteArea":"Зона за вмъкване","pasteMsg":"Вмъкнете тук съдъжанието с клавиатуарата (<STRONG>Ctrl/Cmd+V</STRONG>) и натиснете <STRONG>OK</STRONG>.","securityMsg":"Заради настройките за сигурност на Вашия браузър, редакторът не може да прочете данните от клипборда коректно.","title":"Вмъкни"},"contextmenu":{"options":"Опции на контекстното меню"},"toolbar":{"toolbarCollapse":"Свиване на лентата с инструменти","toolbarExpand":"Разширяване на лентата с инструменти","toolbarGroups":{"document":"Документ","clipboard":"Clipboard/Undo","editing":"Промяна","forms":"Форми","basicstyles":"Базови стилове","paragraph":"Параграф","links":"Връзки","insert":"Вмъкване","styles":"Стилове","colors":"Цветове","tools":"Инструменти"},"toolbars":"Ленти с инструменти"},"elementspath":{"eleLabel":"Път за елементите","eleTitle":"%1 елемент"},"format":{"label":"Формат","panelTitle":"Формат","tag_address":"Адрес","tag_div":"Параграф (DIV)","tag_h1":"Заглавие 1","tag_h2":"Заглавие 2","tag_h3":"Заглавие 3","tag_h4":"Заглавие 4","tag_h5":"Заглавие 5","tag_h6":"Заглавие 6","tag_p":"Нормален","tag_pre":"Форматиран"},"horizontalrule":{"toolbar":"Вмъкване на хоризонтална линия"},"image":{"alertUrl":"Моля, въведете пълния път до изображението","alt":"Алтернативен текст","border":"Рамка","btnUpload":"Изпрати я на сървъра","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"Хоризонтален отстъп","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"Инфо за снимка","linkTab":"Връзка","lockRatio":"Заключване на съотношението","menu":"Настройки за снимка","resetSize":"Нулиране на размер","title":"Настройки за снимка","titleButton":"Настойки за бутон за снимка","upload":"Качване","urlMissing":"Image source URL is missing.","vSpace":"Вертикален отстъп","validateBorder":"Border must be a whole number.","validateHSpace":"HSpace must be a whole number.","validateVSpace":"VSpace must be a whole number."},"indent":{"indent":"Увеличаване на отстъпа","outdent":"Намаляване на отстъпа"},"fakeobjects":{"anchor":"Кука","flash":"Флаш анимация","hiddenfield":"Скрито поле","iframe":"IFrame","unknown":"Неизвестен обект"},"link":{"acccessKey":"Ключ за достъп","advanced":"Разширено","advisoryContentType":"Препоръчителен тип на съдържанието","advisoryTitle":"Препоръчително заглавие","anchor":{"toolbar":"Котва","menu":"Промяна на котва","title":"Настройки на котва","name":"Име на котва","errorName":"Моля въведете име на котвата","remove":"Премахване на котва"},"anchorId":"По ID на елемент","anchorName":"По име на котва","charset":"Тип на свързания ресурс","cssClasses":"Класове за CSS","emailAddress":"E-mail aдрес","emailBody":"Съдържание","emailSubject":"Тема","id":"ID","info":"Инфо за връзката","langCode":"Код за езика","langDir":"Посока на езика","langDirLTR":"Ляво на Дясно (ЛнД)","langDirRTL":"Дясно на Ляво (ДнЛ)","menu":"Промяна на връзка","name":"Име","noAnchors":"(Няма котви в текущия документ)","noEmail":"Моля въведете e-mail aдрес","noUrl":"Моля въведете URL адреса","other":"<друго>","popupDependent":"Зависимост (Netscape)","popupFeatures":"Функции на изкачащ прозорец","popupFullScreen":"Цял екран (IE)","popupLeft":"Лява позиция","popupLocationBar":"Лента с локацията","popupMenuBar":"Лента за меню","popupResizable":"Оразмеряем","popupScrollBars":"Скролери","popupStatusBar":"Статусна лента","popupToolbar":"Лента с инструменти","popupTop":"Горна позиция","rel":"Връзка","selectAnchor":"Изберете котва","styles":"Стил","tabIndex":"Ред на достъп","target":"Цел","targetFrame":"<frame>","targetFrameName":"Име на целевият прозорец","targetPopup":"<изкачащ прозорец>","targetPopupName":"Име на изкачащ прозорец","title":"Връзка","toAnchor":"Връзка към котва в текста","toEmail":"E-mail","toUrl":"Уеб адрес","toolbar":"Връзка","type":"Тип на връзката","unlink":"Премахни връзката","upload":"Качване"},"list":{"bulletedlist":"Вмъкване/Премахване на точков списък","numberedlist":"Вмъкване/Премахване на номериран списък"},"magicline":{"title":"Вмъкнете параграф тук"},"maximize":{"maximize":"Максимизиране","minimize":"Минимизиране"},"pastetext":{"button":"Вмъкни като чист текст","title":"Вмъкни като чист текст"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Вмъкни от MS Word","toolbar":"Вмъкни от MS Word"},"removeformat":{"toolbar":"Премахване на форматирането"},"sourcearea":{"toolbar":"Източник"},"specialchar":{"options":"Опции за специален знак","title":"Избор на специален знак","toolbar":"Вмъкване на специален знак"},"scayt":{"about":"About SCAYT","aboutTab":"Относно","addWord":"Add Word","allCaps":"Ignore All-Caps Words","dic_create":"Нов","dic_delete":"Изтриване","dic_field_name":"Име на речнк","dic_info":"Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.","dic_rename":"Преименуване","dic_restore":"Възтановяване","dictionariesTab":"Речници","disable":"Disable SCAYT","emptyDic":"Dictionary name should not be empty.","enable":"Enable SCAYT","ignore":"Ignore","ignoreAll":"Ignore All","ignoreDomainNames":"Ignore Domain Names","langs":"Languages","languagesTab":"Езици","mixedCase":"Ignore Words with Mixed Case","mixedWithDigits":"Игнорирани думи и цифри","moreSuggestions":"More suggestions","opera_title":"Not supported by Opera","options":"Options","optionsTab":"Options","title":"Spell Check As You Type","toggle":"Toggle SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"Стилове","panelTitle":"Стилове за форматиране","panelTitle1":"Блокови стилове","panelTitle2":"Вътрешни стилове","panelTitle3":"Обектни стилове"},"table":{"border":"Размер на рамката","caption":"Заглавие","cell":{"menu":"Клетка","insertBefore":"Вмъкване на клетка преди","insertAfter":"Вмъкване на клетка след","deleteCell":"Изтриване на клетки","merge":"Сливане на клетки","mergeRight":"Сливане в дясно","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Настройки на клетката","cellType":"Тип на клетката","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Авто. пренос","hAlign":"Хоризонтално подравняване","vAlign":"Вертикално подравняване","alignBaseline":"Базова линия","bgColor":"Фон","borderColor":"Цвят на рамката","data":"Данни","header":"Хедър","yes":"Да","no":"Не","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Изберете"},"cellPad":"Отделяне на клетките","cellSpace":"Разтояние между клетките","column":{"menu":"Колона","insertBefore":"Вмъкване на колона преди","insertAfter":"Вмъкване на колона след","deleteColumn":"Изтриване на колони"},"columns":"Колони","deleteTable":"Изтриване на таблица","headers":"Хедъри","headersBoth":"Заедно","headersColumn":"Първа колона","headersNone":"Няма","headersRow":"Първи ред","invalidBorder":"Размерът на рамката трябва да е число.","invalidCellPadding":"Отстоянието на клетките трябва да е позитивно число.","invalidCellSpacing":"Интервала в клетките трябва да е позитивно число.","invalidCols":"Броят колони трябва да е по-голям от 0.","invalidHeight":"Височината на таблицата трябва да е число.","invalidRows":"Броят редове трябва да е по-голям от 0.","invalidWidth":"Ширината на таблицата трябва да е число.","menu":"Настройки на таблицата","row":{"menu":"Ред","insertBefore":"Вмъкване на ред преди","insertAfter":"Вмъкване на ред след","deleteRow":"Изтриване на редове"},"rows":"Редове","summary":"Обща информация","title":"Настройки на таблицата","toolbar":"Таблица","widthPc":"процент","widthPx":"пиксела","widthUnit":"единица за ширина"},"undo":{"redo":"Връщане на предишен статус","undo":"Възтанови"},"wsc":{"btnIgnore":"Игнорирай","btnIgnoreAll":"Игнорирай всичко","btnReplace":"Препокриване","btnReplaceAll":"Препокрий всичко","btnUndo":"Възтанови","changeTo":"Промени на","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Spell checker not installed. Do you want to download it now?","manyChanges":"Spell check complete: %1 words changed","noChanges":"Spell check complete: No words changed","noMispell":"Spell check complete: No misspellings found","noSuggestions":"- Няма препоръчани -","notAvailable":"Съжаляваме, но услугата не е достъпна за момента","notInDic":"Не е в речника","oneChange":"Spell check complete: One word changed","progress":"Проверява се правописа...","title":"Проверка на правопис","toolbar":"Проверка на правопис"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/bn.js b/assets/plugins/ckeditor/lang/bn.js deleted file mode 100644 index cace3736..00000000 --- a/assets/plugins/ckeditor/lang/bn.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['bn']={"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"ব্রাউজ সার্ভার","url":"URL","protocol":"প্রোটোকল","upload":"আপলোড","uploadSubmit":"ইহাকে সার্ভারে প্রেরন কর","image":"ছবির লেবেল যুক্ত কর","flash":"ফ্লাশ লেবেল যুক্ত কর","form":"ফর্ম","checkbox":"চেক বাক্স","radio":"রেডিও বাটন","textField":"টেক্সট ফীল্ড","textarea":"টেক্সট এরিয়া","hiddenField":"গুপ্ত ফীল্ড","button":"বাটন","select":"বাছাই ফীল্ড","imageButton":"ছবির বাটন","notSet":"<সেট নেই>","id":"আইডি","name":"নাম","langDir":"ভাষা লেখার দিক","langDirLtr":"বাম থেকে ডান (LTR)","langDirRtl":"ডান থেকে বাম (RTL)","langCode":"ভাষা কোড","longDescr":"URL এর লম্বা বর্ণনা","cssClass":"স্টাইল-শীট ক্লাস","advisoryTitle":"পরামর্শ শীর্ষক","cssStyle":"স্টাইল","ok":"ওকে","cancel":"বাতিল","close":"Close","preview":"প্রিভিউ","resize":"Resize","generalTab":"General","advancedTab":"এডভান্সড","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"টার্গেট","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"বাম থেকে ডান (LTR)","langDirRTL":"ডান থেকে বাম (RTL)","styles":"স্টাইল","cssClasses":"স্টাইল-শীট ক্লাস","width":"প্রস্থ","height":"দৈর্ঘ্য","align":"এলাইন","alignLeft":"বামে","alignRight":"ডানে","alignCenter":"মাঝখানে","alignTop":"উপর","alignMiddle":"মধ্য","alignBottom":"নীচে","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>"},"about":{"copy":"Copyright &copy; $1. All rights reserved.","dlgTitle":"About CKEditor","help":"Check $1 for help.","moreInfo":"For licensing information please visit our web site:","title":"About CKEditor","userGuide":"CKEditor User's Guide"},"basicstyles":{"bold":"বোল্ড","italic":"ইটালিক","strike":"স্ট্রাইক থ্রু","subscript":"অধোলেখ","superscript":"অভিলেখ","underline":"আন্ডারলাইন"},"blockquote":{"toolbar":"Block Quote"},"clipboard":{"copy":"কপি","copyError":"আপনার ব্রাউজারের সুরক্ষা সেটিংস এডিটরকে অটোমেটিক কপি করার অনুমতি দেয়নি। দয়া করে এই কাজের জন্য কিবোর্ড ব্যবহার করুন (Ctrl/Cmd+C)।","cut":"কাট","cutError":"আপনার ব্রাউজারের সুরক্ষা সেটিংস এডিটরকে অটোমেটিক কাট করার অনুমতি দেয়নি। দয়া করে এই কাজের জন্য কিবোর্ড ব্যবহার করুন (Ctrl/Cmd+X)।","paste":"পেস্ট","pasteArea":"Paste Area","pasteMsg":"অনুগ্রহ করে নীচের বাক্সে কিবোর্ড ব্যবহার করে (<STRONG>Ctrl/Cmd+V</STRONG>) পেস্ট করুন এবং <STRONG>OK</STRONG> চাপ দিন","securityMsg":"Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.","title":"পেস্ট"},"contextmenu":{"options":"Context Menu Options"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"format":{"label":"ফন্ট ফরমেট","panelTitle":"ফন্ট ফরমেট","tag_address":"ঠিকানা","tag_div":"শীর্ষক (DIV)","tag_h1":"শীর্ষক ১","tag_h2":"শীর্ষক ২","tag_h3":"শীর্ষক ৩","tag_h4":"শীর্ষক ৪","tag_h5":"শীর্ষক ৫","tag_h6":"শীর্ষক ৬","tag_p":"সাধারণ","tag_pre":"ফর্মেটেড"},"horizontalrule":{"toolbar":"রেখা যুক্ত কর"},"image":{"alertUrl":"অনুগ্রহক করে ছবির URL টাইপ করুন","alt":"বিকল্প টেক্সট","border":"বর্ডার","btnUpload":"ইহাকে সার্ভারে প্রেরন কর","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"হরাইজন্টাল স্পেস","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"ছবির তথ্য","linkTab":"লিংক","lockRatio":"অনুপাত লক কর","menu":"ছবির প্রোপার্টি","resetSize":"সাইজ পূর্বাবস্থায় ফিরিয়ে দাও","title":"ছবির প্রোপার্টি","titleButton":"ছবি বাটন প্রোপার্টি","upload":"আপলোড","urlMissing":"Image source URL is missing.","vSpace":"ভার্টিকেল স্পেস","validateBorder":"Border must be a whole number.","validateHSpace":"HSpace must be a whole number.","validateVSpace":"VSpace must be a whole number."},"indent":{"indent":"ইনডেন্ট বাড়াও","outdent":"ইনডেন্ট কমাও"},"fakeobjects":{"anchor":"Anchor","flash":"Flash Animation","hiddenfield":"Hidden Field","iframe":"IFrame","unknown":"Unknown Object"},"link":{"acccessKey":"এক্সেস কী","advanced":"এডভান্সড","advisoryContentType":"পরামর্শ কন্টেন্টের প্রকার","advisoryTitle":"পরামর্শ শীর্ষক","anchor":{"toolbar":"নোঙ্গর","menu":"নোঙর প্রোপার্টি","title":"নোঙর প্রোপার্টি","name":"নোঙরের নাম","errorName":"নোঙরের নাম টাইপ করুন","remove":"Remove Anchor"},"anchorId":"নোঙরের আইডি দিয়ে","anchorName":"নোঙরের নাম দিয়ে","charset":"লিংক রিসোর্স ক্যারেক্টর সেট","cssClasses":"স্টাইল-শীট ক্লাস","emailAddress":"ইমেইল ঠিকানা","emailBody":"মেসেজের দেহ","emailSubject":"মেসেজের বিষয়","id":"আইডি","info":"লিংক তথ্য","langCode":"ভাষা লেখার দিক","langDir":"ভাষা লেখার দিক","langDirLTR":"বাম থেকে ডান (LTR)","langDirRTL":"ডান থেকে বাম (RTL)","menu":"লিংক সম্পাদন","name":"নাম","noAnchors":"(No anchors available in the document)","noEmail":"অনুগ্রহ করে ইমেইল এড্রেস টাইপ করুন","noUrl":"অনুগ্রহ করে URL লিংক টাইপ করুন","other":"<other>","popupDependent":"ডিপেন্ডেন্ট (Netscape)","popupFeatures":"পপআপ উইন্ডো ফীচার সমূহ","popupFullScreen":"পূর্ণ পর্দা জুড়ে (IE)","popupLeft":"বামের পজিশন","popupLocationBar":"লোকেশন বার","popupMenuBar":"মেন্যু বার","popupResizable":"Resizable","popupScrollBars":"স্ক্রল বার","popupStatusBar":"স্ট্যাটাস বার","popupToolbar":"টুল বার","popupTop":"ডানের পজিশন","rel":"Relationship","selectAnchor":"নোঙর বাছাই","styles":"স্টাইল","tabIndex":"ট্যাব ইন্ডেক্স","target":"টার্গেট","targetFrame":"<ফ্রেম>","targetFrameName":"টার্গেট ফ্রেমের নাম","targetPopup":"<পপআপ উইন্ডো>","targetPopupName":"পপআপ উইন্ডোর নাম","title":"লিংক","toAnchor":"এই পেজে নোঙর কর","toEmail":"ইমেইল","toUrl":"URL","toolbar":"লিংক যুক্ত কর","type":"লিংক প্রকার","unlink":"লিংক সরাও","upload":"আপলোড"},"list":{"bulletedlist":"বুলেট লিস্ট লেবেল","numberedlist":"সাংখ্যিক লিস্টের লেবেল"},"magicline":{"title":"Insert paragraph here"},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"pastetext":{"button":"সাদা টেক্সট হিসেবে পেস্ট কর","title":"সাদা টেক্সট হিসেবে পেস্ট কর"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"পেস্ট (শব্দ)","toolbar":"পেস্ট (শব্দ)"},"removeformat":{"toolbar":"ফরমেট সরাও"},"sourcearea":{"toolbar":"সোর্স"},"specialchar":{"options":"Special Character Options","title":"বিশেষ ক্যারেক্টার বাছাই কর","toolbar":"বিশেষ অক্ষর যুক্ত কর"},"scayt":{"about":"About SCAYT","aboutTab":"About","addWord":"Add Word","allCaps":"Ignore All-Caps Words","dic_create":"Create","dic_delete":"Delete","dic_field_name":"Dictionary name","dic_info":"Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.","dic_rename":"Rename","dic_restore":"Restore","dictionariesTab":"Dictionaries","disable":"Disable SCAYT","emptyDic":"Dictionary name should not be empty.","enable":"Enable SCAYT","ignore":"Ignore","ignoreAll":"Ignore All","ignoreDomainNames":"Ignore Domain Names","langs":"Languages","languagesTab":"Languages","mixedCase":"Ignore Words with Mixed Case","mixedWithDigits":"Ignore Words with Numbers","moreSuggestions":"More suggestions","opera_title":"Not supported by Opera","options":"Options","optionsTab":"Options","title":"Spell Check As You Type","toggle":"Toggle SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"স্টাইল","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"table":{"border":"বর্ডার সাইজ","caption":"শীর্ষক","cell":{"menu":"সেল","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"সেল মুছে দাও","merge":"সেল জোড়া দাও","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"সেল প্যাডিং","cellSpace":"সেল স্পেস","column":{"menu":"কলাম","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"কলাম মুছে দাও"},"columns":"কলাম","deleteTable":"টেবিল ডিলীট কর","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"টেবিল প্রোপার্টি","row":{"menu":"রো","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"রো মুছে দাও"},"rows":"রো","summary":"সারাংশ","title":"টেবিল প্রোপার্টি","toolbar":"টেবিলের লেবেল যুক্ত কর","widthPc":"শতকরা","widthPx":"পিক্সেল","widthUnit":"width unit"},"undo":{"redo":"রি-ডু","undo":"আনডু"},"wsc":{"btnIgnore":"ইগনোর কর","btnIgnoreAll":"সব ইগনোর কর","btnReplace":"বদলে দাও","btnReplaceAll":"সব বদলে দাও","btnUndo":"আন্ডু","changeTo":"এতে বদলাও","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"বানান পরীক্ষক ইনস্টল করা নেই। আপনি কি এখনই এটা ডাউনলোড করতে চান?","manyChanges":"বানান পরীক্ষা শেষ: %1 গুলো শব্দ বদলে গ্যাছে","noChanges":"বানান পরীক্ষা শেষ: কোন শব্দ পরিবর্তন করা হয়নি","noMispell":"বানান পরীক্ষা শেষ: কোন ভুল বানান পাওয়া যায়নি","noSuggestions":"- কোন সাজেশন নেই -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"শব্দকোষে নেই","oneChange":"বানান পরীক্ষা শেষ: একটি মাত্র শব্দ পরিবর্তন করা হয়েছে","progress":"বানান পরীক্ষা চলছে...","title":"Spell Check","toolbar":"বানান চেক"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/bs.js b/assets/plugins/ckeditor/lang/bs.js deleted file mode 100644 index 903340a5..00000000 --- a/assets/plugins/ckeditor/lang/bs.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['bs']={"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Browse Server","url":"URL","protocol":"Protokol","upload":"Šalji","uploadSubmit":"Šalji na server","image":"Slika","flash":"Flash","form":"Form","checkbox":"Checkbox","radio":"Radio Button","textField":"Text Field","textarea":"Textarea","hiddenField":"Hidden Field","button":"Button","select":"Selection Field","imageButton":"Image Button","notSet":"<nije podešeno>","id":"Id","name":"Naziv","langDir":"Smjer pisanja","langDirLtr":"S lijeva na desno (LTR)","langDirRtl":"S desna na lijevo (RTL)","langCode":"Jezièni kôd","longDescr":"Dugaèki opis URL-a","cssClass":"Klase CSS stilova","advisoryTitle":"Advisory title","cssStyle":"Stil","ok":"OK","cancel":"Odustani","close":"Close","preview":"Prikaži","resize":"Resize","generalTab":"General","advancedTab":"Naprednije","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"Prozor","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"S lijeva na desno (LTR)","langDirRTL":"S desna na lijevo (RTL)","styles":"Stil","cssClasses":"Klase CSS stilova","width":"Širina","height":"Visina","align":"Poravnanje","alignLeft":"Lijevo","alignRight":"Desno","alignCenter":"Centar","alignTop":"Vrh","alignMiddle":"Sredina","alignBottom":"Dno","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>"},"about":{"copy":"Copyright &copy; $1. All rights reserved.","dlgTitle":"About CKEditor","help":"Check $1 for help.","moreInfo":"For licensing information please visit our web site:","title":"About CKEditor","userGuide":"CKEditor User's Guide"},"basicstyles":{"bold":"Boldiraj","italic":"Ukosi","strike":"Precrtaj","subscript":"Subscript","superscript":"Superscript","underline":"Podvuci"},"blockquote":{"toolbar":"Block Quote"},"clipboard":{"copy":"Kopiraj","copyError":"Sigurnosne postavke Vašeg pretraživaèa ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tastaturi (Ctrl/Cmd+C).","cut":"Izreži","cutError":"Sigurnosne postavke vašeg pretraživaèa ne dozvoljavaju operacije automatskog rezanja. Molimo koristite kraticu na tastaturi (Ctrl/Cmd+X).","paste":"Zalijepi","pasteArea":"Paste Area","pasteMsg":"Please paste inside the following box using the keyboard (<strong>Ctrl/Cmd+V</strong>) and hit OK","securityMsg":"Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.","title":"Zalijepi"},"contextmenu":{"options":"Context Menu Options"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"format":{"label":"Format","panelTitle":"Format","tag_address":"Address","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatted"},"horizontalrule":{"toolbar":"Ubaci horizontalnu liniju"},"image":{"alertUrl":"Molimo ukucajte URL od slike.","alt":"Tekst na slici","border":"Okvir","btnUpload":"Šalji na server","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"HSpace","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"Info slike","linkTab":"Link","lockRatio":"Zakljuèaj odnos","menu":"Svojstva slike","resetSize":"Resetuj dimenzije","title":"Svojstva slike","titleButton":"Image Button Properties","upload":"Šalji","urlMissing":"Image source URL is missing.","vSpace":"VSpace","validateBorder":"Border must be a whole number.","validateHSpace":"HSpace must be a whole number.","validateVSpace":"VSpace must be a whole number."},"indent":{"indent":"Poveæaj uvod","outdent":"Smanji uvod"},"fakeobjects":{"anchor":"Anchor","flash":"Flash Animation","hiddenfield":"Hidden Field","iframe":"IFrame","unknown":"Unknown Object"},"link":{"acccessKey":"Pristupna tipka","advanced":"Naprednije","advisoryContentType":"Advisory vrsta sadržaja","advisoryTitle":"Advisory title","anchor":{"toolbar":"Anchor","menu":"Edit Anchor","title":"Anchor Properties","name":"Anchor Name","errorName":"Please type the anchor name","remove":"Remove Anchor"},"anchorId":"Po Id-u elementa","anchorName":"Po nazivu sidra","charset":"Linked Resource Charset","cssClasses":"Klase CSS stilova","emailAddress":"E-Mail Adresa","emailBody":"Poruka","emailSubject":"Subjekt poruke","id":"Id","info":"Link info","langCode":"Smjer pisanja","langDir":"Smjer pisanja","langDirLTR":"S lijeva na desno (LTR)","langDirRTL":"S desna na lijevo (RTL)","menu":"Izmjeni link","name":"Naziv","noAnchors":"(Nema dostupnih sidra na stranici)","noEmail":"Molimo ukucajte e-mail adresu","noUrl":"Molimo ukucajte URL link","other":"<other>","popupDependent":"Ovisno (Netscape)","popupFeatures":"Moguænosti popup prozora","popupFullScreen":"Cijeli ekran (IE)","popupLeft":"Lijeva pozicija","popupLocationBar":"Traka za lokaciju","popupMenuBar":"Izborna traka","popupResizable":"Resizable","popupScrollBars":"Scroll traka","popupStatusBar":"Statusna traka","popupToolbar":"Traka sa alatima","popupTop":"Gornja pozicija","rel":"Relationship","selectAnchor":"Izaberi sidro","styles":"Stil","tabIndex":"Tab indeks","target":"Prozor","targetFrame":"<frejm>","targetFrameName":"Target Frame Name","targetPopup":"<popup prozor>","targetPopupName":"Naziv popup prozora","title":"Link","toAnchor":"Sidro na ovoj stranici","toEmail":"E-Mail","toUrl":"URL","toolbar":"Ubaci/Izmjeni link","type":"Tip linka","unlink":"Izbriši link","upload":"Šalji"},"list":{"bulletedlist":"Lista","numberedlist":"Numerisana lista"},"magicline":{"title":"Insert paragraph here"},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"pastetext":{"button":"Zalijepi kao obièan tekst","title":"Zalijepi kao obièan tekst"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Zalijepi iz Word-a","toolbar":"Zalijepi iz Word-a"},"removeformat":{"toolbar":"Poništi format"},"sourcearea":{"toolbar":"HTML kôd"},"specialchar":{"options":"Special Character Options","title":"Izaberi specijalni karakter","toolbar":"Ubaci specijalni karater"},"scayt":{"about":"About SCAYT","aboutTab":"About","addWord":"Add Word","allCaps":"Ignore All-Caps Words","dic_create":"Create","dic_delete":"Delete","dic_field_name":"Dictionary name","dic_info":"Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.","dic_rename":"Rename","dic_restore":"Restore","dictionariesTab":"Dictionaries","disable":"Disable SCAYT","emptyDic":"Dictionary name should not be empty.","enable":"Enable SCAYT","ignore":"Ignore","ignoreAll":"Ignore All","ignoreDomainNames":"Ignore Domain Names","langs":"Languages","languagesTab":"Languages","mixedCase":"Ignore Words with Mixed Case","mixedWithDigits":"Ignore Words with Numbers","moreSuggestions":"More suggestions","opera_title":"Not supported by Opera","options":"Options","optionsTab":"Options","title":"Spell Check As You Type","toggle":"Toggle SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"Stil","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"table":{"border":"Okvir","caption":"Naslov","cell":{"menu":"Cell","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"Briši æelije","merge":"Spoji æelije","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Uvod æelija","cellSpace":"Razmak æelija","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Briši kolone"},"columns":"Kolona","deleteTable":"Delete Table","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Svojstva tabele","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Briši redove"},"rows":"Redova","summary":"Summary","title":"Svojstva tabele","toolbar":"Tabela","widthPc":"posto","widthPx":"piksela","widthUnit":"width unit"},"undo":{"redo":"Ponovi","undo":"Vrati"},"wsc":{"btnIgnore":"Ignore","btnIgnoreAll":"Ignore All","btnReplace":"Replace","btnReplaceAll":"Replace All","btnUndo":"Undo","changeTo":"Change to","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Spell checker not installed. Do you want to download it now?","manyChanges":"Spell check complete: %1 words changed","noChanges":"Spell check complete: No words changed","noMispell":"Spell check complete: No misspellings found","noSuggestions":"- No suggestions -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Not in dictionary","oneChange":"Spell check complete: One word changed","progress":"Spell check in progress...","title":"Spell Check","toolbar":"Check Spelling"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/ca.js b/assets/plugins/ckeditor/lang/ca.js deleted file mode 100644 index ba85b2a2..00000000 --- a/assets/plugins/ckeditor/lang/ca.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['ca']={"editor":"Editor de text enriquit","editorPanel":"Panell de l'editor de text enriquit","common":{"editorHelp":"Premeu ALT 0 per ajuda","browseServer":"Veure servidor","url":"URL","protocol":"Protocol","upload":"Puja","uploadSubmit":"Envia-la al servidor","image":"Imatge","flash":"Flash","form":"Formulari","checkbox":"Casella de verificació","radio":"Botó d'opció","textField":"Camp de text","textarea":"Àrea de text","hiddenField":"Camp ocult","button":"Botó","select":"Camp de selecció","imageButton":"Botó d'imatge","notSet":"<no definit>","id":"Id","name":"Nom","langDir":"Direcció de l'idioma","langDirLtr":"D'esquerra a dreta (LTR)","langDirRtl":"De dreta a esquerra (RTL)","langCode":"Codi d'idioma","longDescr":"Descripció llarga de la URL","cssClass":"Classes del full d'estil","advisoryTitle":"Títol consultiu","cssStyle":"Estil","ok":"D'acord","cancel":"Cancel·la","close":"Tanca","preview":"Previsualitza","resize":"Arrossegueu per redimensionar","generalTab":"General","advancedTab":"Avançat","validateNumberFailed":"Aquest valor no és un número.","confirmNewPage":"Els canvis en aquest contingut que no es desin es perdran. Esteu segur que voleu carregar una pàgina nova?","confirmCancel":"Algunes opcions s'han canviat. Esteu segur que voleu tancar el quadre de diàleg?","options":"Opcions","target":"Destí","targetNew":"Nova finestra (_blank)","targetTop":"Finestra superior (_top)","targetSelf":"Mateixa finestra (_self)","targetParent":"Finestra pare (_parent)","langDirLTR":"D'esquerra a dreta (LTR)","langDirRTL":"De dreta a esquerra (RTL)","styles":"Estil","cssClasses":"Classes del full d'estil","width":"Amplada","height":"Alçada","align":"Alineació","alignLeft":"Ajusta a l'esquerra","alignRight":"Ajusta a la dreta","alignCenter":"Centre","alignTop":"Superior","alignMiddle":"Centre","alignBottom":"Inferior","invalidValue":"Valor no vàlid.","invalidHeight":"L'alçada ha de ser un número.","invalidWidth":"L'amplada ha de ser un número.","invalidCssLength":"El valor especificat per als \"%1\" camps ha de ser un número positiu amb o sense unitat de mesura vàlida de CSS (px, %, in, cm, mm, em, ex, pt o pc).","invalidHtmlLength":"El valor especificat per als \"%1\" camps ha de ser un número positiu amb o sense unitat de mesura vàlida d'HTML (px o %).","invalidInlineStyle":"El valor especificat per l'estil en línia ha de constar d'una o més tuples amb el format \"name: value\", separats per punt i coma.","cssLengthTooltip":"Introduïu un número per un valor en píxels o un número amb una unitat vàlida de CSS (px, %, in, cm, mm, em, ex, pt o pc).","unavailable":"%1<span class=\"cke_accessibility\">, no disponible</span>"},"about":{"copy":"Copyright &copy; $1. Tots els drets reservats.","dlgTitle":"Quant al CKEditor","help":"Premi $1 per obtenir ajuda.","moreInfo":"Per informació sobre llicències visiteu el nostre lloc web:","title":"Quant al CKEditor","userGuide":"Manual d'usuari de CKEditor"},"basicstyles":{"bold":"Negreta","italic":"Cursiva","strike":"Ratllat","subscript":"Subíndex","superscript":"Superíndex","underline":"Subratllat"},"blockquote":{"toolbar":"Bloc de cita"},"clipboard":{"copy":"Copiar","copyError":"La configuració de seguretat del vostre navegador no permet executar automàticament les operacions de copiar. Si us plau, utilitzeu el teclat (Ctrl/Cmd+C).","cut":"Retallar","cutError":"La configuració de seguretat del vostre navegador no permet executar automàticament les operacions de retallar. Si us plau, utilitzeu el teclat (Ctrl/Cmd+X).","paste":"Enganxar","pasteArea":"Àrea d'enganxat","pasteMsg":"Si us plau, enganxi dins del següent camp utilitzant el teclat (<strong>Ctrl/Cmd+V</strong>) i premi OK.","securityMsg":"A causa de la configuració de seguretat del vostre navegador, l'editor no pot accedir a les dades del porta-retalls directament. Enganxeu-ho un altre cop en aquesta finestra.","title":"Enganxar"},"contextmenu":{"options":"Opcions del menú contextual"},"toolbar":{"toolbarCollapse":"Redueix la barra d'eines","toolbarExpand":"Amplia la barra d'eines","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor de barra d'eines"},"elementspath":{"eleLabel":"Ruta dels elements","eleTitle":"%1 element"},"format":{"label":"Format","panelTitle":"Format","tag_address":"Adreça","tag_div":"Normal (DIV)","tag_h1":"Encapçalament 1","tag_h2":"Encapçalament 2","tag_h3":"Encapçalament 3","tag_h4":"Encapçalament 4","tag_h5":"Encapçalament 5","tag_h6":"Encapçalament 6","tag_p":"Normal","tag_pre":"Formatejat"},"horizontalrule":{"toolbar":"Insereix línia horitzontal"},"image":{"alertUrl":"Si us plau, escriviu la URL de la imatge","alt":"Text alternatiu","border":"Vora","btnUpload":"Envia-la al servidor","button2Img":"Voleu transformar el botó d'imatge seleccionat en una simple imatge?","hSpace":"Espaiat horit.","img2Button":"Voleu transformar la imatge seleccionada en un botó d'imatge?","infoTab":"Informació de la imatge","linkTab":"Enllaç","lockRatio":"Bloqueja les proporcions","menu":"Propietats de la imatge","resetSize":"Restaura la mida","title":"Propietats de la imatge","titleButton":"Propietats del botó d'imatge","upload":"Puja","urlMissing":"Falta la URL de la imatge.","vSpace":"Espaiat vert.","validateBorder":"La vora ha de ser un nombre enter.","validateHSpace":"HSpace ha de ser un nombre enter.","validateVSpace":"VSpace ha de ser un nombre enter."},"indent":{"indent":"Augmenta el sagnat","outdent":"Redueix el sagnat"},"fakeobjects":{"anchor":"Àncora","flash":"Animació Flash","hiddenfield":"Camp ocult","iframe":"IFrame","unknown":"Objecte desconegut"},"link":{"acccessKey":"Clau d'accés","advanced":"Avançat","advisoryContentType":"Tipus de contingut consultiu","advisoryTitle":"Títol consultiu","anchor":{"toolbar":"Insereix/Edita àncora","menu":"Propietats de l'àncora","title":"Propietats de l'àncora","name":"Nom de l'àncora","errorName":"Si us plau, escriviu el nom de l'ancora","remove":"Remove Anchor"},"anchorId":"Per Id d'element","anchorName":"Per nom d'àncora","charset":"Conjunt de caràcters font enllaçat","cssClasses":"Classes del full d'estil","emailAddress":"Adreça de correu electrònic","emailBody":"Cos del missatge","emailSubject":"Assumpte del missatge","id":"Id","info":"Informació de l'enllaç","langCode":"Direcció de l'idioma","langDir":"Direcció de l'idioma","langDirLTR":"D'esquerra a dreta (LTR)","langDirRTL":"De dreta a esquerra (RTL)","menu":"Edita l'enllaç","name":"Nom","noAnchors":"(No hi ha àncores disponibles en aquest document)","noEmail":"Si us plau, escrigui l'adreça correu electrònic","noUrl":"Si us plau, escrigui l'enllaç URL","other":"<altre>","popupDependent":"Depenent (Netscape)","popupFeatures":"Característiques finestra popup","popupFullScreen":"Pantalla completa (IE)","popupLeft":"Posició esquerra","popupLocationBar":"Barra d'adreça","popupMenuBar":"Barra de menú","popupResizable":"Redimensionable","popupScrollBars":"Barres d'scroll","popupStatusBar":"Barra d'estat","popupToolbar":"Barra d'eines","popupTop":"Posició dalt","rel":"Relació","selectAnchor":"Selecciona una àncora","styles":"Estil","tabIndex":"Index de Tab","target":"Destí","targetFrame":"<marc>","targetFrameName":"Nom del marc de destí","targetPopup":"<finestra emergent>","targetPopupName":"Nom finestra popup","title":"Enllaç","toAnchor":"Àncora en aquesta pàgina","toEmail":"Correu electrònic","toUrl":"URL","toolbar":"Insereix/Edita enllaç","type":"Tipus d'enllaç","unlink":"Elimina l'enllaç","upload":"Puja"},"list":{"bulletedlist":"Llista de pics","numberedlist":"Llista numerada"},"magicline":{"title":"Insereix el paràgraf aquí"},"maximize":{"maximize":"Maximitza","minimize":"Minimitza"},"pastetext":{"button":"Enganxa com a text no formatat","title":"Enganxa com a text no formatat"},"pastefromword":{"confirmCleanup":"El text que voleu enganxar sembla provenir de Word. Voleu netejar aquest text abans que sigui enganxat?","error":"No ha estat possible netejar les dades enganxades degut a un error intern","title":"Enganxa des del Word","toolbar":"Enganxa des del Word"},"removeformat":{"toolbar":"Elimina Format"},"sourcearea":{"toolbar":"Codi font"},"specialchar":{"options":"Opcions de caràcters especials","title":"Selecciona el caràcter especial","toolbar":"Insereix caràcter especial"},"scayt":{"about":"Quant a l'SCAYT","aboutTab":"Quant a","addWord":"Afegeix una paraula","allCaps":"Ignora paraules en majúscules","dic_create":"Crea","dic_delete":"Elimina","dic_field_name":"Nom del diccionari","dic_info":"Inicialment el diccionari d'usuari s'emmagatzema en una galeta. De totes maneres, les galetes tenen la mida limitada. Quan el diccionari creix massa, llavors el diccionari es pot emmagatzemar al nostre servidor. Per desar el vostre diccionari personal al nostre servidor heu d.'especificar un nom pel diccionari. Si ja heu desat un diccionari, teclegeu si us plau el seu nom i cliqueu el botó de restauració.","dic_rename":"Canvia el nom","dic_restore":"Restaura","dictionariesTab":"Diccionaris","disable":"Deshabilita SCAYT","emptyDic":"El nom del diccionari no hauria d'estar buit.","enable":"Habilitat l'SCAYT","ignore":"Ignora","ignoreAll":"Ignora'ls tots","ignoreDomainNames":"Ignora els noms de domini","langs":"Idiomes","languagesTab":"Idiomes","mixedCase":"Ignora paraules amb majúscules i minúscules","mixedWithDigits":"Ignora paraules amb números ","moreSuggestions":"Més suggerències","opera_title":"No és compatible amb l'Opera","options":"Opcions","optionsTab":"Opcions","title":"Spell Check As You Type","toggle":"Commuta l'SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"Estil","panelTitle":"Estils de format","panelTitle1":"Estils de bloc","panelTitle2":"Estils incrustats","panelTitle3":"Estils d'objecte"},"table":{"border":"Mida vora","caption":"Títol","cell":{"menu":"Cel·la","insertBefore":"Insereix abans","insertAfter":"Insereix després","deleteCell":"Suprimeix","merge":"Fusiona","mergeRight":"Fusiona a la dreta","mergeDown":"Fusiona avall","splitHorizontal":"Divideix horitzontalment","splitVertical":"Divideix verticalment","title":"Propietats de la cel·la","cellType":"Tipus de cel·la","rowSpan":"Expansió de files","colSpan":"Expansió de columnes","wordWrap":"Ajustar al contingut","hAlign":"Alineació Horizontal","vAlign":"Alineació Vertical","alignBaseline":"A la línia base","bgColor":"Color de fons","borderColor":"Color de la vora","data":"Dades","header":"Capçalera","yes":"Sí","no":"No","invalidWidth":"L'amplada de cel·la ha de ser un nombre.","invalidHeight":"L'alçada de cel·la ha de ser un nombre.","invalidRowSpan":"L'expansió de files ha de ser un nombre enter.","invalidColSpan":"L'expansió de columnes ha de ser un nombre enter.","chooseColor":"Trieu"},"cellPad":"Encoixinament de cel·les","cellSpace":"Espaiat de cel·les","column":{"menu":"Columna","insertBefore":"Insereix columna abans de","insertAfter":"Insereix columna darrera","deleteColumn":"Suprimeix una columna"},"columns":"Columnes","deleteTable":"Suprimeix la taula","headers":"Capçaleres","headersBoth":"Ambdues","headersColumn":"Primera columna","headersNone":"Cap","headersRow":"Primera fila","invalidBorder":"El gruix de la vora ha de ser un nombre.","invalidCellPadding":"L'encoixinament de cel·la ha de ser un nombre.","invalidCellSpacing":"L'espaiat de cel·la ha de ser un nombre.","invalidCols":"El nombre de columnes ha de ser un nombre major que 0.","invalidHeight":"L'alçada de la taula ha de ser un nombre.","invalidRows":"El nombre de files ha de ser un nombre major que 0.","invalidWidth":"L'amplada de la taula ha de ser un nombre.","menu":"Propietats de la taula","row":{"menu":"Fila","insertBefore":"Insereix fila abans de","insertAfter":"Insereix fila darrera","deleteRow":"Suprimeix una fila"},"rows":"Files","summary":"Resum","title":"Propietats de la taula","toolbar":"Taula","widthPc":"percentatge","widthPx":"píxels","widthUnit":"unitat d'amplada"},"undo":{"redo":"Refés","undo":"Desfés"},"wsc":{"btnIgnore":"Ignora","btnIgnoreAll":"Ignora-les totes","btnReplace":"Canvia","btnReplaceAll":"Canvia-les totes","btnUndo":"Desfés","changeTo":"Reemplaça amb","errorLoading":"Error carregant el servidor: %s.","ieSpellDownload":"Verificació ortogràfica no instal·lada. Voleu descarregar-ho ara?","manyChanges":"Verificació ortogràfica: s'han canviat %1 paraules","noChanges":"Verificació ortogràfica: no s'ha canviat cap paraula","noMispell":"Verificació ortogràfica acabada: no hi ha cap paraula mal escrita","noSuggestions":"Cap suggeriment","notAvailable":"El servei no es troba disponible ara.","notInDic":"No és al diccionari","oneChange":"Verificació ortogràfica: s'ha canviat una paraula","progress":"Verificació ortogràfica en curs...","title":"Comprova l'ortografia","toolbar":"Revisa l'ortografia"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/cs.js b/assets/plugins/ckeditor/lang/cs.js deleted file mode 100644 index 66748918..00000000 --- a/assets/plugins/ckeditor/lang/cs.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['cs']={"editor":"Textový editor","editorPanel":"Panel textového editoru","common":{"editorHelp":"Stiskněte ALT 0 pro nápovědu","browseServer":"Vybrat na serveru","url":"URL","protocol":"Protokol","upload":"Odeslat","uploadSubmit":"Odeslat na server","image":"Obrázek","flash":"Flash","form":"Formulář","checkbox":"Zaškrtávací políčko","radio":"Přepínač","textField":"Textové pole","textarea":"Textová oblast","hiddenField":"Skryté pole","button":"Tlačítko","select":"Seznam","imageButton":"Obrázkové tlačítko","notSet":"<nenastaveno>","id":"Id","name":"Jméno","langDir":"Směr jazyka","langDirLtr":"Zleva doprava (LTR)","langDirRtl":"Zprava doleva (RTL)","langCode":"Kód jazyka","longDescr":"Dlouhý popis URL","cssClass":"Třída stylu","advisoryTitle":"Pomocný titulek","cssStyle":"Styl","ok":"OK","cancel":"Zrušit","close":"Zavřít","preview":"Náhled","resize":"Uchopit pro změnu velikosti","generalTab":"Obecné","advancedTab":"Rozšířené","validateNumberFailed":"Zadaná hodnota není číselná.","confirmNewPage":"Jakékoliv neuložené změny obsahu budou ztraceny. Skutečně chcete otevřít novou stránku?","confirmCancel":"Některá z nastavení byla změněna. Skutečně chcete zavřít dialogové okno?","options":"Nastavení","target":"Cíl","targetNew":"Nové okno (_blank)","targetTop":"Okno nejvyšší úrovně (_top)","targetSelf":"Stejné okno (_self)","targetParent":"Rodičovské okno (_parent)","langDirLTR":"Zleva doprava (LTR)","langDirRTL":"Zprava doleva (RTL)","styles":"Styly","cssClasses":"Třídy stylů","width":"Šířka","height":"Výška","align":"Zarovnání","alignLeft":"Vlevo","alignRight":"Vpravo","alignCenter":"Na střed","alignTop":"Nahoru","alignMiddle":"Na střed","alignBottom":"Dolů","invalidValue":"Neplatná hodnota.","invalidHeight":"Zadaná výška musí být číslo.","invalidWidth":"Šířka musí být číslo.","invalidCssLength":"Hodnota určená pro pole \"%1\" musí být kladné číslo bez nebo s platnou jednotkou míry CSS (px, %, in, cm, mm, em, ex, pt, nebo pc).","invalidHtmlLength":"Hodnota určená pro pole \"%1\" musí být kladné číslo bez nebo s platnou jednotkou míry HTML (px nebo %).","invalidInlineStyle":"Hodnota určená pro řádkový styl se musí skládat z jedné nebo více n-tic ve formátu \"název : hodnota\", oddělené středníky","cssLengthTooltip":"Zadejte číslo jako hodnotu v pixelech nebo číslo s platnou jednotkou CSS (px, %, v cm, mm, em, ex, pt, nebo pc).","unavailable":"%1<span class=\"cke_accessibility\">, nedostupné</span>"},"about":{"copy":"Copyright &copy; $1. All rights reserved.","dlgTitle":"O aplikaci CKEditor","help":"Prohlédněte si $1 pro nápovědu.","moreInfo":"Pro informace o lincenci navštivte naši webovou stránku:","title":"O aplikaci CKEditor","userGuide":"Uživatelská příručka CKEditor"},"basicstyles":{"bold":"Tučné","italic":"Kurzíva","strike":"Přeškrtnuté","subscript":"Dolní index","superscript":"Horní index","underline":"Podtržené"},"blockquote":{"toolbar":"Citace"},"clipboard":{"copy":"Kopírovat","copyError":"Bezpečnostní nastavení vašeho prohlížeče nedovolují editoru spustit funkci pro kopírování zvoleného textu do schránky. Prosím zkopírujte zvolený text do schránky pomocí klávesnice (Ctrl/Cmd+C).","cut":"Vyjmout","cutError":"Bezpečnostní nastavení vašeho prohlížeče nedovolují editoru spustit funkci pro vyjmutí zvoleného textu do schránky. Prosím vyjměte zvolený text do schránky pomocí klávesnice (Ctrl/Cmd+X).","paste":"Vložit","pasteArea":"Oblast vkládání","pasteMsg":"Do následujícího pole vložte požadovaný obsah pomocí klávesnice (<STRONG>Ctrl/Cmd+V</STRONG>) a stiskněte <STRONG>OK</STRONG>.","securityMsg":"Z důvodů nastavení bezpečnosti vašeho prohlížeče nemůže editor přistupovat přímo do schránky. Obsah schránky prosím vložte znovu do tohoto okna.","title":"Vložit"},"contextmenu":{"options":"Nastavení kontextové nabídky"},"toolbar":{"toolbarCollapse":"Skrýt panel nástrojů","toolbarExpand":"Zobrazit panel nástrojů","toolbarGroups":{"document":"Dokument","clipboard":"Schránka/Zpět","editing":"Úpravy","forms":"Formuláře","basicstyles":"Základní styly","paragraph":"Odstavec","links":"Odkazy","insert":"Vložit","styles":"Styly","colors":"Barvy","tools":"Nástroje"},"toolbars":"Panely nástrojů editoru"},"elementspath":{"eleLabel":"Cesta objektu","eleTitle":"%1 objekt"},"format":{"label":"Formát","panelTitle":"Formát","tag_address":"Adresa","tag_div":"Normální (DIV)","tag_h1":"Nadpis 1","tag_h2":"Nadpis 2","tag_h3":"Nadpis 3","tag_h4":"Nadpis 4","tag_h5":"Nadpis 5","tag_h6":"Nadpis 6","tag_p":"Normální","tag_pre":"Naformátováno"},"horizontalrule":{"toolbar":"Vložit vodorovnou linku"},"image":{"alertUrl":"Zadejte prosím URL obrázku","alt":"Alternativní text","border":"Okraje","btnUpload":"Odeslat na server","button2Img":"Skutečně chcete převést zvolené obrázkové tlačítko na obyčejný obrázek?","hSpace":"Horizontální mezera","img2Button":"Skutečně chcete převést zvolený obrázek na obrázkové tlačítko?","infoTab":"Informace o obrázku","linkTab":"Odkaz","lockRatio":"Zámek","menu":"Vlastnosti obrázku","resetSize":"Původní velikost","title":"Vlastnosti obrázku","titleButton":"Vlastností obrázkového tlačítka","upload":"Odeslat","urlMissing":"Zadané URL zdroje obrázku nebylo nalezeno.","vSpace":"Vertikální mezera","validateBorder":"Okraj musí být nastaven v celých číslech.","validateHSpace":"Horizontální mezera musí být nastavena v celých číslech.","validateVSpace":"Vertikální mezera musí být nastavena v celých číslech."},"indent":{"indent":"Zvětšit odsazení","outdent":"Zmenšit odsazení"},"fakeobjects":{"anchor":"Záložka","flash":"Flash animace","hiddenfield":"Skryté pole","iframe":"IFrame","unknown":"Neznámý objekt"},"link":{"acccessKey":"Přístupový klíč","advanced":"Rozšířené","advisoryContentType":"Pomocný typ obsahu","advisoryTitle":"Pomocný titulek","anchor":{"toolbar":"Záložka","menu":"Vlastnosti záložky","title":"Vlastnosti záložky","name":"Název záložky","errorName":"Zadejte prosím název záložky","remove":"Odstranit záložku"},"anchorId":"Podle Id objektu","anchorName":"Podle jména kotvy","charset":"Přiřazená znaková sada","cssClasses":"Třída stylu","emailAddress":"E-mailová adresa","emailBody":"Tělo zprávy","emailSubject":"Předmět zprávy","id":"Id","info":"Informace o odkazu","langCode":"Kód jazyka","langDir":"Směr jazyka","langDirLTR":"Zleva doprava (LTR)","langDirRTL":"Zprava doleva (RTL)","menu":"Změnit odkaz","name":"Jméno","noAnchors":"(Ve stránce není definována žádná kotva!)","noEmail":"Zadejte prosím e-mailovou adresu","noUrl":"Zadejte prosím URL odkazu","other":"<jiný>","popupDependent":"Závislost (Netscape)","popupFeatures":"Vlastnosti vyskakovacího okna","popupFullScreen":"Celá obrazovka (IE)","popupLeft":"Levý okraj","popupLocationBar":"Panel umístění","popupMenuBar":"Panel nabídky","popupResizable":"Umožňující měnit velikost","popupScrollBars":"Posuvníky","popupStatusBar":"Stavový řádek","popupToolbar":"Panel nástrojů","popupTop":"Horní okraj","rel":"Vztah","selectAnchor":"Vybrat kotvu","styles":"Styl","tabIndex":"Pořadí prvku","target":"Cíl","targetFrame":"<rámec>","targetFrameName":"Název cílového rámu","targetPopup":"<vyskakovací okno>","targetPopupName":"Název vyskakovacího okna","title":"Odkaz","toAnchor":"Kotva v této stránce","toEmail":"E-mail","toUrl":"URL","toolbar":"Odkaz","type":"Typ odkazu","unlink":"Odstranit odkaz","upload":"Odeslat"},"list":{"bulletedlist":"Odrážky","numberedlist":"Číslování"},"magicline":{"title":"zde vložit odstavec"},"maximize":{"maximize":"Maximalizovat","minimize":"Minimalizovat"},"pastetext":{"button":"Vložit jako čistý text","title":"Vložit jako čistý text"},"pastefromword":{"confirmCleanup":"Jak je vidět, vkládaný text je kopírován z Wordu. Chcete jej před vložením vyčistit?","error":"Z důvodu vnitřní chyby nebylo možné provést vyčištění vkládaného textu.","title":"Vložit z Wordu","toolbar":"Vložit z Wordu"},"removeformat":{"toolbar":"Odstranit formátování"},"sourcearea":{"toolbar":"Zdroj"},"specialchar":{"options":"Nastavení speciálních znaků","title":"Výběr speciálního znaku","toolbar":"Vložit speciální znaky"},"scayt":{"about":"O aplikaci SCAYT","aboutTab":"O aplikaci","addWord":"Přidat slovo","allCaps":"Ignorovat slova tvořená velkými písmeny","dic_create":"Vytvořit","dic_delete":"Smazat","dic_field_name":"Název slovníku","dic_info":"Zpočátku se uživatelský slovník ukládá do cookies ve vašem prohlížeči. Ovšem cookies mají omezenou velikost, takže když slovník dosáhne velikosti, kdy se již do cookies nevejde, může být uložen na našem serveru. Chcete-li uložit váš osobní slovník na našem serveru, je třeba slovník nejdříve pojmenovat. Máte-li již slovník pojmenován a uložen, zadejte jeho název a klepněte na tlačítko Obnovit.","dic_rename":"Přejmenovat","dic_restore":"Obnovit","dictionariesTab":"Slovníky","disable":"Vypnout SCAYT","emptyDic":"Název slovníku nesmí být prázdný.","enable":"Zapnout SCAYT","ignore":"Přeskočit","ignoreAll":"Přeskočit vše","ignoreDomainNames":"Ignorovat doménová jména","langs":"Jazyky","languagesTab":"Jazyky","mixedCase":"Ignorovat slova obsahující různou velikost písma","mixedWithDigits":"Ignorovat slova obsahující čísla","moreSuggestions":"Více návrhů","opera_title":"Toto Opera nepodporuje","options":"Nastavení","optionsTab":"Nastavení","title":"Kontrola pravopisu během psaní (SCAYT)","toggle":"Vypínač SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"Styl","panelTitle":"Formátovací styly","panelTitle1":"Blokové styly","panelTitle2":"Řádkové styly","panelTitle3":"Objektové styly"},"table":{"border":"Ohraničení","caption":"Popis","cell":{"menu":"Buňka","insertBefore":"Vložit buňku před","insertAfter":"Vložit buňku za","deleteCell":"Smazat buňky","merge":"Sloučit buňky","mergeRight":"Sloučit doprava","mergeDown":"Sloučit dolů","splitHorizontal":"Rozdělit buňky vodorovně","splitVertical":"Rozdělit buňky svisle","title":"Vlastnosti buňky","cellType":"Typ buňky","rowSpan":"Spojit řádky","colSpan":"Spojit sloupce","wordWrap":"Zalamování","hAlign":"Vodorovné zarovnání","vAlign":"Svislé zarovnání","alignBaseline":"Na účaří","bgColor":"Barva pozadí","borderColor":"Barva okraje","data":"Data","header":"Hlavička","yes":"Ano","no":"Ne","invalidWidth":"Šířka buňky musí být číslo.","invalidHeight":"Zadaná výška buňky musí být číslená.","invalidRowSpan":"Zadaný počet sloučených řádků musí být celé číslo.","invalidColSpan":"Zadaný počet sloučených sloupců musí být celé číslo.","chooseColor":"Výběr"},"cellPad":"Odsazení obsahu v buňce","cellSpace":"Vzdálenost buněk","column":{"menu":"Sloupec","insertBefore":"Vložit sloupec před","insertAfter":"Vložit sloupec za","deleteColumn":"Smazat sloupec"},"columns":"Sloupce","deleteTable":"Smazat tabulku","headers":"Záhlaví","headersBoth":"Obojí","headersColumn":"První sloupec","headersNone":"Žádné","headersRow":"První řádek","invalidBorder":"Zdaná velikost okraje musí být číselná.","invalidCellPadding":"Zadané odsazení obsahu v buňce musí být číselné.","invalidCellSpacing":"Zadaná vzdálenost buněk musí být číselná.","invalidCols":"Počet sloupců musí být číslo větší než 0.","invalidHeight":"Zadaná výška tabulky musí být číselná.","invalidRows":"Počet řádků musí být číslo větší než 0.","invalidWidth":"Šířka tabulky musí být číslo.","menu":"Vlastnosti tabulky","row":{"menu":"Řádek","insertBefore":"Vložit řádek před","insertAfter":"Vložit řádek za","deleteRow":"Smazat řádky"},"rows":"Řádky","summary":"Souhrn","title":"Vlastnosti tabulky","toolbar":"Tabulka","widthPc":"procent","widthPx":"bodů","widthUnit":"jednotka šířky"},"undo":{"redo":"Znovu","undo":"Zpět"},"wsc":{"btnIgnore":"Přeskočit","btnIgnoreAll":"Přeskakovat vše","btnReplace":"Zaměnit","btnReplaceAll":"Zaměňovat vše","btnUndo":"Zpět","changeTo":"Změnit na","errorLoading":"Chyba nahrávání služby aplikace z: %s.","ieSpellDownload":"Kontrola pravopisu není nainstalována. Chcete ji nyní stáhnout?","manyChanges":"Kontrola pravopisu dokončena: %1 slov změněno","noChanges":"Kontrola pravopisu dokončena: Beze změn","noMispell":"Kontrola pravopisu dokončena: Žádné pravopisné chyby nenalezeny","noSuggestions":"- žádné návrhy -","notAvailable":"Omlouváme se, ale služba nyní není dostupná.","notInDic":"Není ve slovníku","oneChange":"Kontrola pravopisu dokončena: Jedno slovo změněno","progress":"Probíhá kontrola pravopisu...","title":"Kontrola pravopisu","toolbar":"Zkontrolovat pravopis"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/cy.js b/assets/plugins/ckeditor/lang/cy.js deleted file mode 100644 index a025e076..00000000 --- a/assets/plugins/ckeditor/lang/cy.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['cy']={"editor":"Golygydd Testun Cyfoethog","editorPanel":"Panel Golygydd Testun Cyfoethog","common":{"editorHelp":"Gwasgwch ALT 0 am gymorth","browseServer":"Pori'r Gweinydd","url":"URL","protocol":"Protocol","upload":"Lanlwytho","uploadSubmit":"Anfon i'r Gweinydd","image":"Delwedd","flash":"Flash","form":"Ffurflen","checkbox":"Blwch ticio","radio":"Botwm Radio","textField":"Maes Testun","textarea":"Ardal Testun","hiddenField":"Maes Cudd","button":"Botwm","select":"Maes Dewis","imageButton":"Botwm Delwedd","notSet":"<heb osod>","id":"Id","name":"Name","langDir":"Cyfeiriad Iaith","langDirLtr":"Chwith i'r Dde (LTR)","langDirRtl":"Dde i'r Chwith (RTL)","langCode":"Cod Iaith","longDescr":"URL Disgrifiad Hir","cssClass":"Dosbarthiadau Dalen Arddull","advisoryTitle":"Teitl Cynghorol","cssStyle":"Arddull","ok":"Iawn","cancel":"Diddymu","close":"Cau","preview":"Rhagolwg","resize":"Ailfeintio","generalTab":"Cyffredinol","advancedTab":"Uwch","validateNumberFailed":"'Dyw'r gwerth hwn ddim yn rhif.","confirmNewPage":"Byddwch chi'n colli unrhyw newidiadau i'r cynnwys sydd heb eu cadw. Ydych am barhau i lwytho tudalen newydd?","confirmCancel":"Cafodd rhai o'r opsiynau eu newid. Ydych chi wir am gau'r deialog?","options":"Opsiynau","target":"Targed","targetNew":"Ffenest Newydd (_blank)","targetTop":"Ffenest ar y Brig (_top)","targetSelf":"Yr un Ffenest (_self)","targetParent":"Ffenest y Rhiant (_parent)","langDirLTR":"Chwith i'r Dde (LTR)","langDirRTL":"Dde i'r Chwith (RTL)","styles":"Arddull","cssClasses":"Dosbarthiadau Dalen Arddull","width":"Lled","height":"Uchder","align":"Alinio","alignLeft":"Chwith","alignRight":"Dde","alignCenter":"Canol","alignTop":"Brig","alignMiddle":"Canol","alignBottom":"Gwaelod","invalidValue":"Gwerth annilys.","invalidHeight":"Mae'n rhaid i'r uchder fod yn rhif.","invalidWidth":"Mae'n rhaid i'r lled fod yn rhif.","invalidCssLength":"Mae'n rhaid i'r gwerth ar gyfer maes \"%1\" fod yn rhif positif gyda neu heb uned fesuriad CSS dilys (px, %, in, cm, mm, em, ex, pt, neu pc).","invalidHtmlLength":"Mae'n rhaid i'r gwerth ar gyfer maes \"%1\" fod yn rhif positif gyda neu heb uned fesuriad HTML dilys (px neu %).","invalidInlineStyle":"Mae'n rhaid i'r gwerth ar gyfer arddull mewn-llinell gynnwys un set neu fwy ar y fformat \"enw : gwerth\", wedi'u gwahanu gyda hanner colon.","cssLengthTooltip":"Rhowch rif am werth mewn picsel neu rhif gydag uned CSS dilys (px, %, in, cm, mm, em, pt neu pc).","unavailable":"%1<span class=\"cke_accessibility\">, ddim ar gael</span>"},"about":{"copy":"Hawlfraint &copy; $1. Cedwir pob hawl.","dlgTitle":"Ynghylch CKEditor","help":"Gwirio $1 am gymorth.","moreInfo":"Am wybodaeth ynghylch trwyddedau, ewch i'n gwefan:","title":"Ynghylch CKEditor","userGuide":"Canllawiau Defnyddiwr CKEditor"},"basicstyles":{"bold":"Bras","italic":"Italig","strike":"Llinell Trwyddo","subscript":"Is-sgript","superscript":"Uwchsgript","underline":"Tanlinellu"},"blockquote":{"toolbar":"Dyfyniad bloc"},"clipboard":{"copy":"Copïo","copyError":"'Dyw gosodiadau diogelwch eich porwr ddim yn caniatàu'r golygydd i gynnal 'gweithredoedd copïo' yn awtomatig. Defnyddiwch y bysellfwrdd (Ctrl/Cmd+C).","cut":"Torri","cutError":"Nid yw gosodiadau diogelwch eich porwr yn caniatàu'r golygydd i gynnal 'gweithredoedd torri' yn awtomatig. Defnyddiwch y bysellfwrdd (Ctrl/Cmd+X).","paste":"Gludo","pasteArea":"Ardal Gludo","pasteMsg":"Gludwch i mewn i'r blwch canlynol gan ddefnyddio'r bysellfwrdd (<strong>Ctrl/Cmd+V</strong>) a phwyso <strong>Iawn</strong>.","securityMsg":"Oherwydd gosodiadau diogelwch eich porwr, 'dyw'r porwr ddim yn gallu ennill mynediad i'r data ar y clipfwrdd yn uniongyrchol. Mae angen i chi ei ludo eto i'r ffenestr hon.","title":"Gludo"},"contextmenu":{"options":"Opsiynau Dewislen Cyd-destun"},"toolbar":{"toolbarCollapse":"Cyfangu'r Bar Offer","toolbarExpand":"Ehangu'r Bar Offer","toolbarGroups":{"document":"Dogfen","clipboard":"Clipfwrdd/Dadwneud","editing":"Golygu","forms":"Ffurflenni","basicstyles":"Arddulliau Sylfaenol","paragraph":"Paragraff","links":"Dolenni","insert":"Mewnosod","styles":"Arddulliau","colors":"Lliwiau","tools":"Offer"},"toolbars":"Bariau offer y golygydd"},"elementspath":{"eleLabel":"Llwybr elfennau","eleTitle":"Elfen %1"},"format":{"label":"Fformat","panelTitle":"Fformat Paragraff","tag_address":"Cyfeiriad","tag_div":"Normal (DIV)","tag_h1":"Pennawd 1","tag_h2":"Pennawd 2","tag_h3":"Pennawd 3","tag_h4":"Pennawd 4","tag_h5":"Pennawd 5","tag_h6":"Pennawd 6","tag_p":"Normal","tag_pre":"Wedi'i Fformatio"},"horizontalrule":{"toolbar":"Mewnosod Llinell Lorweddol"},"image":{"alertUrl":"Rhowch URL y ddelwedd","alt":"Testun Amgen","border":"Ymyl","btnUpload":"Anfon i'r Gweinydd","button2Img":"Ydych am drawsffurfio'r botwm ddelwedd hwn ar ddelwedd syml?","hSpace":"BwlchLl","img2Button":"Ydych am drawsffurfio'r ddelwedd hon ar fotwm delwedd?","infoTab":"Gwyb Delwedd","linkTab":"Dolen","lockRatio":"Cloi Cymhareb","menu":"Priodweddau Delwedd","resetSize":"Ailosod Maint","title":"Priodweddau Delwedd","titleButton":"Priodweddau Botwm Delwedd","upload":"Lanlwytho","urlMissing":"URL gwreiddiol y ddelwedd ar goll.","vSpace":"BwlchF","validateBorder":"Rhaid i'r ymyl fod yn gyfanrif.","validateHSpace":"Rhaid i'r HSpace fod yn gyfanrif.","validateVSpace":"Rhaid i'r VSpace fod yn gyfanrif."},"indent":{"indent":"Cynyddu'r Mewnoliad","outdent":"Lleihau'r Mewnoliad"},"fakeobjects":{"anchor":"Angor","flash":"Animeiddiant Flash","hiddenfield":"Maes Cudd","iframe":"IFrame","unknown":"Gwrthrych Anhysbys"},"link":{"acccessKey":"Allwedd Mynediad","advanced":"Uwch","advisoryContentType":"Math y Cynnwys Cynghorol","advisoryTitle":"Teitl Cynghorol","anchor":{"toolbar":"Angor","menu":"Golygu'r Angor","title":"Priodweddau'r Angor","name":"Enw'r Angor","errorName":"Teipiwch enw'r angor","remove":"Tynnwch yr Angor"},"anchorId":"Gan Id yr Elfen","anchorName":"Gan Enw'r Angor","charset":"Set Nodau'r Adnodd Cysylltiedig","cssClasses":"Dosbarthiadau Dalen Arddull","emailAddress":"Cyfeiriad E-Bost","emailBody":"Corff y Neges","emailSubject":"Testun y Neges","id":"Id","info":"Gwyb y Ddolen","langCode":"Cod Iaith","langDir":"Cyfeiriad Iaith","langDirLTR":"Chwith i'r Dde (LTR)","langDirRTL":"Dde i'r Chwith (RTL)","menu":"Golygu Dolen","name":"Enw","noAnchors":"(Dim angorau ar gael yn y ddogfen)","noEmail":"Teipiwch gyfeiriad yr e-bost","noUrl":"Teipiwch URL y ddolen","other":"<eraill>","popupDependent":"Dibynnol (Netscape)","popupFeatures":"Nodweddion Ffenestr Bop","popupFullScreen":"Sgrin Llawn (IE)","popupLeft":"Safle Chwith","popupLocationBar":"Bar Safle","popupMenuBar":"Dewislen","popupResizable":"Ailfeintiol","popupScrollBars":"Barrau Sgrolio","popupStatusBar":"Bar Statws","popupToolbar":"Bar Offer","popupTop":"Safle Top","rel":"Perthynas","selectAnchor":"Dewiswch Angor","styles":"Arddull","tabIndex":"Indecs Tab","target":"Targed","targetFrame":"<ffrâm>","targetFrameName":"Enw Ffrâm y Targed","targetPopup":"<ffenestr bop>","targetPopupName":"Enw Ffenestr Bop","title":"Dolen","toAnchor":"Dolen at angor yn y testun","toEmail":"E-bost","toUrl":"URL","toolbar":"Dolen","type":"Math y Ddolen","unlink":"Datgysylltu","upload":"Lanlwytho"},"list":{"bulletedlist":"Mewnosod/Tynnu Rhestr Bwled","numberedlist":"Mewnosod/Tynnu Rhestr Rhifol"},"magicline":{"title":"Mewnosod paragraff yma"},"maximize":{"maximize":"Mwyhau","minimize":"Lleihau"},"pastetext":{"button":"Gludo fel testun plaen","title":"Gludo fel Testun Plaen"},"pastefromword":{"confirmCleanup":"Mae'r testun rydych chi am ludo wedi'i gopïo o Word. Ydych chi am ei lanhau cyn ei ludo?","error":"Doedd dim modd glanhau y data a ludwyd oherwydd gwall mewnol","title":"Gludo o Word","toolbar":"Gludo o Word"},"removeformat":{"toolbar":"Tynnu Fformat"},"sourcearea":{"toolbar":"HTML"},"specialchar":{"options":"Opsiynau Nodau Arbennig","title":"Dewis Nod Arbennig","toolbar":"Mewnosod Nod Arbennig"},"scayt":{"about":"Ynghylch SCAYT","aboutTab":"Ynghylch","addWord":"Ychwanegu Gair","allCaps":"Anwybyddu Geiriau Nodau Uwch i Gyd","dic_create":"Creu","dic_delete":"Dileu","dic_field_name":"Enw'r geiriadur","dic_info":"Ar y cychwyn, caiff y Geiriadur ei storio mewn Cwci. Er, mae terfyn ar faint cwcis. Pan fydd Gweiriadur Defnyddiwr yn tyfu tu hwnt i gyfyngiadau maint Cwci, caiff y geiriadur ei storio ar ein gweinydd ni. er mwyn storio eich geiriadur poersonol chi ar ein gweinydd, bydd angen i chi osod enw ar gyfer y geiriadur. Os oes geiriadur 'da chi ar ein gweinydd yn barod, teipiwch ei enw a chliciwch y botwm Adfer.","dic_rename":"Ailenwi","dic_restore":"Adfer","dictionariesTab":"Geiriaduron","disable":"Analluogi SCAYT","emptyDic":"Ni ddylai enw'r geiriadur fod yn wag.","enable":"Galluogi SCAYT","ignore":"Anwybyddu","ignoreAll":"Anwybyddu pob","ignoreDomainNames":"Anwybyddu Enwau Parth","langs":"Ieithoedd","languagesTab":"Ieithoedd","mixedCase":"Anwybyddu Geiriau â Chymysgedd Nodau Uwch ac Is","mixedWithDigits":"Anwybyddu Geiriau â Rhifau","moreSuggestions":"Awgrymiadau pellach","opera_title":"Heb ei gynnal gan Opera","options":"Opsiynau","optionsTab":"Opsiynau","title":"Gwirio'r Sillafu Wrth Deipio","toggle":"Togl SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"Arddulliau","panelTitle":"Arddulliau Fformatio","panelTitle1":"Arddulliau Bloc","panelTitle2":"Arddulliau Mewnol","panelTitle3":"Arddulliau Gwrthrych"},"table":{"border":"Maint yr Ymyl","caption":"Pennawd","cell":{"menu":"Cell","insertBefore":"Mewnosod Cell Cyn","insertAfter":"Mewnosod Cell Ar Ôl","deleteCell":"Dileu Celloedd","merge":"Cyfuno Celloedd","mergeRight":"Cyfuno i'r Dde","mergeDown":"Cyfuno i Lawr","splitHorizontal":"Hollti'r Gell yn Lorweddol","splitVertical":"Hollti'r Gell yn Fertigol","title":"Priodweddau'r Gell","cellType":"Math y Gell","rowSpan":"Rhychwant Rhesi","colSpan":"Rhychwant Colofnau","wordWrap":"Lapio Geiriau","hAlign":"Aliniad Llorweddol","vAlign":"Aliniad Fertigol","alignBaseline":"Baslinell","bgColor":"Lliw Cefndir","borderColor":"Lliw Ymyl","data":"Data","header":"Pennyn","yes":"Ie","no":"Na","invalidWidth":"Mae'n rhaid i led y gell fod yn rhif.","invalidHeight":"Mae'n rhaid i uchder y gell fod yn rhif.","invalidRowSpan":"Mae'n rhaid i rychwant y rhesi fod yn gyfanrif.","invalidColSpan":"Mae'n rhaid i rychwant y colofnau fod yn gyfanrif.","chooseColor":"Dewis"},"cellPad":"Padio'r gell","cellSpace":"Bylchiad y gell","column":{"menu":"Colofn","insertBefore":"Mewnosod Colofn Cyn","insertAfter":"Mewnosod Colofn Ar Ôl","deleteColumn":"Dileu Colofnau"},"columns":"Colofnau","deleteTable":"Dileu Tabl","headers":"Penynnau","headersBoth":"Y Ddau","headersColumn":"Colofn gyntaf","headersNone":"Dim","headersRow":"Rhes gyntaf","invalidBorder":"Mae'n rhaid i faint yr ymyl fod yn rhif.","invalidCellPadding":"Mae'n rhaid i badiad y gell fod yn rhif positif.","invalidCellSpacing":"Mae'n rhaid i fylchiad y gell fod yn rhif positif.","invalidCols":"Mae'n rhaid cael o leiaf un golofn.","invalidHeight":"Mae'n rhaid i uchder y tabl fod yn rhif.","invalidRows":"Mae'n rhaid cael o leiaf un rhes.","invalidWidth":"Mae'n rhaid i led y tabl fod yn rhif.","menu":"Priodweddau'r Tabl","row":{"menu":"Rhes","insertBefore":"Mewnosod Rhes Cyn","insertAfter":"Mewnosod Rhes Ar Ôl","deleteRow":"Dileu Rhesi"},"rows":"Rhesi","summary":"Crynodeb","title":"Priodweddau'r Tabl","toolbar":"Tabl","widthPc":"y cant","widthPx":"picsel","widthUnit":"uned lled"},"undo":{"redo":"Ailwneud","undo":"Dadwneud"},"wsc":{"btnIgnore":"Anwybyddu Un","btnIgnoreAll":"Anwybyddu Pob","btnReplace":"Amnewid Un","btnReplaceAll":"Amnewid Pob","btnUndo":"Dadwneud","changeTo":"Newid i","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Gwirydd sillafu heb ei arsefydlu. A ydych am ei lawrlwytho nawr?","manyChanges":"Gwirio sillafu wedi gorffen: Newidiwyd %1 gair","noChanges":"Gwirio sillafu wedi gorffen: Dim newidiadau","noMispell":"Gwirio sillafu wedi gorffen: Dim camsillaf.","noSuggestions":"- Dim awgrymiadau -","notAvailable":"Nid yw'r gwasanaeth hwn ar gael yn bresennol.","notInDic":"Nid i'w gael yn y geiriadur","oneChange":"Gwirio sillafu wedi gorffen: Newidiwyd 1 gair","progress":"Gwirio sillafu yn ar y gweill...","title":"Gwirio Sillafu","toolbar":"Gwirio Sillafu"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/da.js b/assets/plugins/ckeditor/lang/da.js deleted file mode 100644 index 6ea9f3a4..00000000 --- a/assets/plugins/ckeditor/lang/da.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['da']={"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Tryk ALT 0 for hjælp","browseServer":"Gennemse...","url":"URL","protocol":"Protokol","upload":"Upload","uploadSubmit":"Upload","image":"Indsæt billede","flash":"Indsæt Flash","form":"Indsæt formular","checkbox":"Indsæt afkrydsningsfelt","radio":"Indsæt alternativknap","textField":"Indsæt tekstfelt","textarea":"Indsæt tekstboks","hiddenField":"Indsæt skjult felt","button":"Indsæt knap","select":"Indsæt liste","imageButton":"Indsæt billedknap","notSet":"<intet valgt>","id":"Id","name":"Navn","langDir":"Tekstretning","langDirLtr":"Fra venstre mod højre (LTR)","langDirRtl":"Fra højre mod venstre (RTL)","langCode":"Sprogkode","longDescr":"Udvidet beskrivelse","cssClass":"Typografiark (CSS)","advisoryTitle":"Titel","cssStyle":"Typografi (CSS)","ok":"OK","cancel":"Annullér","close":"Luk","preview":"Forhåndsvisning","resize":"Træk for at skalere","generalTab":"Generelt","advancedTab":"Avanceret","validateNumberFailed":"Værdien er ikke et tal.","confirmNewPage":"Alt indhold, der ikke er blevet gemt, vil gå tabt. Er du sikker på, at du vil indlæse en ny side?","confirmCancel":"Nogle af indstillingerne er blevet ændret. Er du sikker på, at du vil lukke vinduet?","options":"Vis muligheder","target":"Mål","targetNew":"Nyt vindue (_blank)","targetTop":"Øverste vindue (_top)","targetSelf":"Samme vindue (_self)","targetParent":"Samme vindue (_parent)","langDirLTR":"Venstre til højre (LTR)","langDirRTL":"Højre til venstre (RTL)","styles":"Style","cssClasses":"Stylesheetklasser","width":"Bredde","height":"Højde","align":"Justering","alignLeft":"Venstre","alignRight":"Højre","alignCenter":"Centreret","alignTop":"Øverst","alignMiddle":"Centreret","alignBottom":"Nederst","invalidValue":"Invalid value.","invalidHeight":"Højde skal være et tal.","invalidWidth":"Bredde skal være et tal.","invalidCssLength":"Værdien specificeret for \"%1\" feltet skal være et positivt nummer med eller uden en CSS måleenhed (px, %, in, cm, mm, em, ex, pt, eller pc).","invalidHtmlLength":"Værdien specificeret for \"%1\" feltet skal være et positivt nummer med eller uden en CSS måleenhed (px eller %).","invalidInlineStyle":"Værdien specificeret for inline style skal indeholde en eller flere elementer med et format som \"name:value\", separeret af semikoloner","cssLengthTooltip":"Indsæt en numerisk værdi i pixel eller nummer med en gyldig CSS værdi (px, %, in, cm, mm, em, ex, pt, eller pc).","unavailable":"%1<span class=\"cke_accessibility\">, ikke tilgængelig</span>"},"about":{"copy":"Copyright &copy; $1. Alle rettigheder forbeholdes.","dlgTitle":"Om CKEditor","help":"Se $1 for at få hjælp.","moreInfo":"For informationer omkring licens, se venligst vores hjemmeside (på engelsk):","title":"Om CKEditor","userGuide":"CKEditor-brugermanual"},"basicstyles":{"bold":"Fed","italic":"Kursiv","strike":"Gennemstreget","subscript":"Sænket skrift","superscript":"Hævet skrift","underline":"Understreget"},"blockquote":{"toolbar":"Blokcitat"},"clipboard":{"copy":"Kopiér","copyError":"Din browsers sikkerhedsindstillinger tillader ikke editoren at få automatisk adgang til udklipsholderen.<br><br>Brug i stedet tastaturet til at kopiere teksten (Ctrl/Cmd+C).","cut":"Klip","cutError":"Din browsers sikkerhedsindstillinger tillader ikke editoren at få automatisk adgang til udklipsholderen.<br><br>Brug i stedet tastaturet til at klippe teksten (Ctrl/Cmd+X).","paste":"Indsæt","pasteArea":"Indsæt område","pasteMsg":"Indsæt i feltet herunder (<STRONG>Ctrl/Cmd+V</STRONG>) og klik på <STRONG>OK</STRONG>.","securityMsg":"Din browsers sikkerhedsindstillinger tillader ikke editoren at få automatisk adgang til udklipsholderen.<br><br>Du skal indsætte udklipsholderens indhold i dette vindue igen.","title":"Indsæt"},"contextmenu":{"options":"Muligheder for hjælpemenu"},"toolbar":{"toolbarCollapse":"Sammenklap værktøjslinje","toolbarExpand":"Udvid værktøjslinje","toolbarGroups":{"document":"Dokument","clipboard":"Udklipsholder/Fortryd","editing":"Redigering","forms":"Formularer","basicstyles":"Basis styles","paragraph":"Paragraf","links":"Links","insert":"Indsæt","styles":"Typografier","colors":"Farver","tools":"Værktøjer"},"toolbars":"Editors værktøjslinjer"},"elementspath":{"eleLabel":"Sti på element","eleTitle":"%1 element"},"format":{"label":"Formatering","panelTitle":"Formatering","tag_address":"Adresse","tag_div":"Normal (DIV)","tag_h1":"Overskrift 1","tag_h2":"Overskrift 2","tag_h3":"Overskrift 3","tag_h4":"Overskrift 4","tag_h5":"Overskrift 5","tag_h6":"Overskrift 6","tag_p":"Normal","tag_pre":"Formateret"},"horizontalrule":{"toolbar":"Indsæt vandret streg"},"image":{"alertUrl":"Indtast stien til billedet","alt":"Alternativ tekst","border":"Ramme","btnUpload":"Upload fil til serveren","button2Img":"Vil du lave billedknappen om til et almindeligt billede?","hSpace":"Vandret margen","img2Button":"Vil du lave billedet om til en billedknap?","infoTab":"Generelt","linkTab":"Hyperlink","lockRatio":"Lås størrelsesforhold","menu":"Egenskaber for billede","resetSize":"Nulstil størrelse","title":"Egenskaber for billede","titleButton":"Egenskaber for billedknap","upload":"Upload","urlMissing":"Kilde på billed-URL mangler","vSpace":"Lodret margen","validateBorder":"Kant skal være et helt nummer.","validateHSpace":"HSpace skal være et helt nummer.","validateVSpace":"VSpace skal være et helt nummer."},"indent":{"indent":"Forøg indrykning","outdent":"Formindsk indrykning"},"fakeobjects":{"anchor":"Anker","flash":"Flashanimation","hiddenfield":"Skjult felt","iframe":"Iframe","unknown":"Ukendt objekt"},"link":{"acccessKey":"Genvejstast","advanced":"Avanceret","advisoryContentType":"Indholdstype","advisoryTitle":"Titel","anchor":{"toolbar":"Indsæt/redigér bogmærke","menu":"Egenskaber for bogmærke","title":"Egenskaber for bogmærke","name":"Bogmærkenavn","errorName":"Indtast bogmærkenavn","remove":"Fjern bogmærke"},"anchorId":"Efter element-Id","anchorName":"Efter ankernavn","charset":"Tegnsæt","cssClasses":"Typografiark","emailAddress":"E-mailadresse","emailBody":"Besked","emailSubject":"Emne","id":"Id","info":"Generelt","langCode":"Tekstretning","langDir":"Tekstretning","langDirLTR":"Fra venstre mod højre (LTR)","langDirRTL":"Fra højre mod venstre (RTL)","menu":"Redigér hyperlink","name":"Navn","noAnchors":"(Ingen bogmærker i dokumentet)","noEmail":"Indtast e-mailadresse!","noUrl":"Indtast hyperlink-URL!","other":"<anden>","popupDependent":"Koblet/dependent (Netscape)","popupFeatures":"Egenskaber for popup","popupFullScreen":"Fuld skærm (IE)","popupLeft":"Position fra venstre","popupLocationBar":"Adresselinje","popupMenuBar":"Menulinje","popupResizable":"Justérbar","popupScrollBars":"Scrollbar","popupStatusBar":"Statuslinje","popupToolbar":"Værktøjslinje","popupTop":"Position fra toppen","rel":"Relation","selectAnchor":"Vælg et anker","styles":"Typografi","tabIndex":"Tabulatorindeks","target":"Mål","targetFrame":"<ramme>","targetFrameName":"Destinationsvinduets navn","targetPopup":"<popup vindue>","targetPopupName":"Popupvinduets navn","title":"Egenskaber for hyperlink","toAnchor":"Bogmærke på denne side","toEmail":"E-mail","toUrl":"URL","toolbar":"Indsæt/redigér hyperlink","type":"Type","unlink":"Fjern hyperlink","upload":"Upload"},"list":{"bulletedlist":"Punktopstilling","numberedlist":"Talopstilling"},"magicline":{"title":"Insert paragraph here"},"maximize":{"maximize":"Maksimér","minimize":"Minimér"},"pastetext":{"button":"Indsæt som ikke-formateret tekst","title":"Indsæt som ikke-formateret tekst"},"pastefromword":{"confirmCleanup":"Den tekst du forsøger at indsætte ser ud til at komme fra Word. Vil du rense teksten før den indsættes?","error":"Det var ikke muligt at fjerne formatteringen på den indsatte tekst grundet en intern fejl","title":"Indsæt fra Word","toolbar":"Indsæt fra Word"},"removeformat":{"toolbar":"Fjern formatering"},"sourcearea":{"toolbar":"Kilde"},"specialchar":{"options":"Muligheder for specialkarakterer","title":"Vælg symbol","toolbar":"Indsæt symbol"},"scayt":{"about":"Om SCAYT","aboutTab":"Om","addWord":"Tilføj ord","allCaps":"Ignorer alle store bogstaver","dic_create":"Opret","dic_delete":"Slet","dic_field_name":"Navn på ordbog","dic_info":"Til start er brugerordbogen gemt i en Cookie. Dog har Cookies en begrænsning på størrelse. Når ordbogen når en bestemt størrelse kan den blive gemt på vores server. For at gemme din personlige ordbog på vores server skal du angive et navn for denne. Såfremt du allerede har gemt en ordbog, skriv navnet på denne og klik på Gendan knappen.","dic_rename":"Omdøb","dic_restore":"Gendan","dictionariesTab":"Ordbøger","disable":"Deaktivér SCAYT","emptyDic":"Ordbogsnavn må ikke være tom.","enable":"Aktivér SCAYT","ignore":"Ignorér","ignoreAll":"Ignorér alle","ignoreDomainNames":"Ignorér domænenavne","langs":"Sprog","languagesTab":"Sprog","mixedCase":"Ignorer ord med store og små bogstaver","mixedWithDigits":"Ignorér ord med numre","moreSuggestions":"Flere forslag","opera_title":"Ikke supporteret af Opera","options":"Indstillinger","optionsTab":"Indstillinger","title":"Stavekontrol mens du skriver","toggle":"Skift/toggle SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"Typografi","panelTitle":"Formattering på stylesheet","panelTitle1":"Block typografi","panelTitle2":"Inline typografi","panelTitle3":"Object typografi"},"table":{"border":"Rammebredde","caption":"Titel","cell":{"menu":"Celle","insertBefore":"Indsæt celle før","insertAfter":"Indsæt celle efter","deleteCell":"Slet celle","merge":"Flet celler","mergeRight":"Flet til højre","mergeDown":"Flet nedad","splitHorizontal":"Del celle vandret","splitVertical":"Del celle lodret","title":"Celleegenskaber","cellType":"Celletype","rowSpan":"Række span (rows span)","colSpan":"Kolonne span (columns span)","wordWrap":"Tekstombrydning","hAlign":"Vandret justering","vAlign":"Lodret justering","alignBaseline":"Grundlinje","bgColor":"Baggrundsfarve","borderColor":"Rammefarve","data":"Data","header":"Hoved","yes":"Ja","no":"Nej","invalidWidth":"Cellebredde skal være et tal.","invalidHeight":"Cellehøjde skal være et tal.","invalidRowSpan":"Række span skal være et heltal.","invalidColSpan":"Kolonne span skal være et heltal.","chooseColor":"Vælg"},"cellPad":"Cellemargen","cellSpace":"Celleafstand","column":{"menu":"Kolonne","insertBefore":"Indsæt kolonne før","insertAfter":"Indsæt kolonne efter","deleteColumn":"Slet kolonne"},"columns":"Kolonner","deleteTable":"Slet tabel","headers":"Hoved","headersBoth":"Begge","headersColumn":"Første kolonne","headersNone":"Ingen","headersRow":"Første række","invalidBorder":"Rammetykkelse skal være et tal.","invalidCellPadding":"Cellemargen skal være et tal.","invalidCellSpacing":"Celleafstand skal være et tal.","invalidCols":"Antallet af kolonner skal være større end 0.","invalidHeight":"Tabelhøjde skal være et tal.","invalidRows":"Antallet af rækker skal være større end 0.","invalidWidth":"Tabelbredde skal være et tal.","menu":"Egenskaber for tabel","row":{"menu":"Række","insertBefore":"Indsæt række før","insertAfter":"Indsæt række efter","deleteRow":"Slet række"},"rows":"Rækker","summary":"Resumé","title":"Egenskaber for tabel","toolbar":"Tabel","widthPc":"procent","widthPx":"pixels","widthUnit":"Bredde på enhed"},"undo":{"redo":"Annullér fortryd","undo":"Fortryd"},"wsc":{"btnIgnore":"Ignorér","btnIgnoreAll":"Ignorér alle","btnReplace":"Erstat","btnReplaceAll":"Erstat alle","btnUndo":"Tilbage","changeTo":"Forslag","errorLoading":"Fejl ved indlæsning af host: %s.","ieSpellDownload":"Stavekontrol ikke installeret. Vil du installere den nu?","manyChanges":"Stavekontrol færdig: %1 ord ændret","noChanges":"Stavekontrol færdig: Ingen ord ændret","noMispell":"Stavekontrol færdig: Ingen fejl fundet","noSuggestions":"(ingen forslag)","notAvailable":"Stavekontrol er desværre ikke tilgængelig.","notInDic":"Ikke i ordbogen","oneChange":"Stavekontrol færdig: Et ord ændret","progress":"Stavekontrollen arbejder...","title":"Stavekontrol","toolbar":"Stavekontrol"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/de.js b/assets/plugins/ckeditor/lang/de.js deleted file mode 100644 index 76d794b8..00000000 --- a/assets/plugins/ckeditor/lang/de.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['de']={"editor":"WYSIWYG-Editor","editorPanel":"WYSIWYG-Editor-Leiste","common":{"editorHelp":"Drücken Sie ALT 0 für Hilfe","browseServer":"Server durchsuchen","url":"URL","protocol":"Protokoll","upload":"Hochladen","uploadSubmit":"Zum Server senden","image":"Bild","flash":"Flash","form":"Formular","checkbox":"Checkbox","radio":"Radiobutton","textField":"Textfeld einzeilig","textarea":"Textfeld mehrzeilig","hiddenField":"Verstecktes Feld","button":"Klickbutton","select":"Auswahlfeld","imageButton":"Bildbutton","notSet":"<nichts>","id":"ID","name":"Name","langDir":"Schreibrichtung","langDirLtr":"Links nach Rechts (LTR)","langDirRtl":"Rechts nach Links (RTL)","langCode":"Sprachenkürzel","longDescr":"Langform URL","cssClass":"Stylesheet Klasse","advisoryTitle":"Titel Beschreibung","cssStyle":"Style","ok":"OK","cancel":"Abbrechen","close":"Schließen","preview":"Vorschau","resize":"Zum Vergrößern ziehen","generalTab":"Allgemein","advancedTab":"Erweitert","validateNumberFailed":"Dieser Wert ist keine Nummer.","confirmNewPage":"Alle nicht gespeicherten Änderungen gehen verlohren. Sind Sie sicher die neue Seite zu laden?","confirmCancel":"Einige Optionen wurden geändert. Wollen Sie den Dialog dennoch schließen?","options":"Optionen","target":"Zielseite","targetNew":"Neues Fenster (_blank)","targetTop":"Oberstes Fenster (_top)","targetSelf":"Gleiches Fenster (_self)","targetParent":"Oberes Fenster (_parent)","langDirLTR":"Links nach Rechts (LNR)","langDirRTL":"Rechts nach Links (RNL)","styles":"Style","cssClasses":"Stylesheet Klasse","width":"Breite","height":"Höhe","align":"Ausrichtung","alignLeft":"Links","alignRight":"Rechts","alignCenter":"Zentriert","alignTop":"Oben","alignMiddle":"Mitte","alignBottom":"Unten","invalidValue":"Ungültiger Wert.","invalidHeight":"Höhe muss eine Zahl sein.","invalidWidth":"Breite muss eine Zahl sein.","invalidCssLength":"Wert spezifiziert für \"%1\" Feld muss ein positiver numerischer Wert sein mit oder ohne korrekte CSS Messeinheit (px, %, in, cm, mm, em, ex, pt oder pc).","invalidHtmlLength":"Wert spezifiziert für \"%1\" Feld muss ein positiver numerischer Wert sein mit oder ohne korrekte HTML Messeinheit (px oder %).","invalidInlineStyle":"Wert spezifiziert für inline Stilart muss enthalten ein oder mehr Tupels mit dem Format \"Name : Wert\" getrennt mit Semikolons.","cssLengthTooltip":"Gebe eine Zahl ein für ein Wert in pixels oder eine Zahl mit einer korrekten CSS Messeinheit (px, %, in, cm, mm, em, ex, pt oder pc).","unavailable":"%1<span class=\"cke_accessibility\">, nicht verfügbar</span>"},"about":{"copy":"Copyright &copy; $1. Alle Rechte vorbehalten.","dlgTitle":"Über CKEditor","help":"Prüfe $1 für Hilfe.","moreInfo":"Für Informationen über unsere Lizenzbestimmungen besuchen sie bitte unsere Webseite:","title":"Über CKEditor","userGuide":"CKEditor Benutzerhandbuch"},"basicstyles":{"bold":"Fett","italic":"Kursiv","strike":"Durchgestrichen","subscript":"Tiefgestellt","superscript":"Hochgestellt","underline":"Unterstrichen"},"blockquote":{"toolbar":"Zitatblock"},"clipboard":{"copy":"Kopieren","copyError":"Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch kopieren. Bitte benutzen Sie die System-Zwischenablage über STRG-C (kopieren).","cut":"Ausschneiden","cutError":"Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch auszuschneiden. Bitte benutzen Sie die System-Zwischenablage über STRG-X (ausschneiden) und STRG-V (einfügen).","paste":"Einfügen","pasteArea":"Einfügebereich","pasteMsg":"Bitte fügen Sie den Text in der folgenden Box über die Tastatur (mit <STRONG>Strg+V</STRONG>) ein und bestätigen Sie mit <STRONG>OK</STRONG>.","securityMsg":"Aufgrund von Sicherheitsbeschränkungen Ihres Browsers kann der Editor nicht direkt auf die Zwischenablage zugreifen. Bitte fügen Sie den Inhalt erneut in diesem Fenster ein.","title":"Einfügen"},"contextmenu":{"options":"Kontextmenü Optionen"},"toolbar":{"toolbarCollapse":"Symbolleiste einklappen","toolbarExpand":"Symbolleiste ausklappen","toolbarGroups":{"document":"Dokument","clipboard":"Zwischenablage/Rückgängig","editing":"Editieren","forms":"Formularen","basicstyles":"Grundstile","paragraph":"Absatz","links":"Links","insert":"Einfügen","styles":"Stile","colors":"Farben","tools":"Werkzeuge"},"toolbars":"Editor Symbolleisten"},"elementspath":{"eleLabel":"Elements Pfad","eleTitle":"%1 Element"},"format":{"label":"Format","panelTitle":"Format","tag_address":"Addresse","tag_div":"Normal (DIV)","tag_h1":"Überschrift 1","tag_h2":"Überschrift 2","tag_h3":"Überschrift 3","tag_h4":"Überschrift 4","tag_h5":"Überschrift 5","tag_h6":"Überschrift 6","tag_p":"Normal","tag_pre":"Formatiert"},"horizontalrule":{"toolbar":"Horizontale Linie einfügen"},"image":{"alertUrl":"Bitte geben Sie die Bild-URL an","alt":"Alternativer Text","border":"Rahmen","btnUpload":"Zum Server senden","button2Img":"Möchten Sie den gewählten Bild-Button in ein einfaches Bild umwandeln?","hSpace":"Horizontal-Abstand","img2Button":"Möchten Sie das gewählten Bild in einen Bild-Button umwandeln?","infoTab":"Bild-Info","linkTab":"Link","lockRatio":"Größenverhältnis beibehalten","menu":"Bild-Eigenschaften","resetSize":"Größe zurücksetzen","title":"Bild-Eigenschaften","titleButton":"Bildbutton-Eigenschaften","upload":"Hochladen","urlMissing":"Imagequelle URL fehlt.","vSpace":"Vertikal-Abstand","validateBorder":"Rahmen muß eine ganze Zahl sein.","validateHSpace":"Horizontal-Abstand muß eine ganze Zahl sein.","validateVSpace":"Vertikal-Abstand muß eine ganze Zahl sein."},"indent":{"indent":"Einzug erhöhen","outdent":"Einzug verringern"},"fakeobjects":{"anchor":"Anker","flash":"Flash Animation","hiddenfield":"Verstecktes Feld","iframe":"IFrame","unknown":"Unbekanntes Objekt"},"link":{"acccessKey":"Zugriffstaste","advanced":"Erweitert","advisoryContentType":"Inhaltstyp","advisoryTitle":"Titel Beschreibung","anchor":{"toolbar":"Anker einfügen/editieren","menu":"Anker-Eigenschaften","title":"Anker-Eigenschaften","name":"Anker Name","errorName":"Bitte geben Sie den Namen des Ankers ein","remove":"Anker entfernen"},"anchorId":"nach Element Id","anchorName":"nach Anker Name","charset":"Ziel-Zeichensatz","cssClasses":"Stylesheet Klasse","emailAddress":"E-Mail Adresse","emailBody":"Nachrichtentext","emailSubject":"Betreffzeile","id":"Id","info":"Link-Info","langCode":"Sprachenkürzel","langDir":"Schreibrichtung","langDirLTR":"Links nach Rechts (LTR)","langDirRTL":"Rechts nach Links (RTL)","menu":"Link editieren","name":"Name","noAnchors":"(keine Anker im Dokument vorhanden)","noEmail":"Bitte geben Sie e-Mail Adresse an","noUrl":"Bitte geben Sie die Link-URL an","other":"<andere>","popupDependent":"Abhängig (Netscape)","popupFeatures":"Pop-up Fenster-Eigenschaften","popupFullScreen":"Vollbild (IE)","popupLeft":"Linke Position","popupLocationBar":"Adress-Leiste","popupMenuBar":"Menü-Leiste","popupResizable":"Größe änderbar","popupScrollBars":"Rollbalken","popupStatusBar":"Statusleiste","popupToolbar":"Symbolleiste","popupTop":"Obere Position","rel":"Beziehung","selectAnchor":"Anker auswählen","styles":"Style","tabIndex":"Tab-Index","target":"Zielseite","targetFrame":"<Frame>","targetFrameName":"Ziel-Fenster-Name","targetPopup":"<Pop-up Fenster>","targetPopupName":"Pop-up Fenster-Name","title":"Link","toAnchor":"Anker in dieser Seite","toEmail":"E-Mail","toUrl":"URL","toolbar":"Link einfügen/editieren","type":"Link-Typ","unlink":"Link entfernen","upload":"Hochladen"},"list":{"bulletedlist":"Liste","numberedlist":"Nummerierte Liste"},"magicline":{"title":"Absatz hier einfügen"},"maximize":{"maximize":"Maximieren","minimize":"Minimieren"},"pastetext":{"button":"Als Text einfügen","title":"Als Text einfügen"},"pastefromword":{"confirmCleanup":"Der Text, den Sie einfügen möchten, scheint aus MS-Word kopiert zu sein. Möchten Sie ihn zuvor bereinigen lassen?","error":"Aufgrund eines internen Fehlers war es nicht möglich die eingefügten Daten zu bereinigen","title":"Aus MS-Word einfügen","toolbar":"Aus MS-Word einfügen"},"removeformat":{"toolbar":"Formatierungen entfernen"},"sourcearea":{"toolbar":"Quellcode"},"specialchar":{"options":"Sonderzeichen Optionen","title":"Sonderzeichen auswählen","toolbar":"Sonderzeichen einfügen/editieren"},"scayt":{"about":"Über SCAYT","aboutTab":"Über","addWord":"Wort hinzufügen","allCaps":"Groß geschriebenen Wörter ignorieren","dic_create":"Erzeugen","dic_delete":"Löschen","dic_field_name":"Wörterbuchname","dic_info":"Anfangs wird das Benutzerwörterbuch in einem Cookie gespeichert. Allerdings sind Cookies in der Größe begrenzt. Wenn das Benutzerwörterbuch bis zu einem Punkt wächst, wo es nicht mehr in einem Cookie gespeichert werden kann, wird das Benutzerwörterbuch auf dem Server gespeichert. Um Ihr persönliches Wörterbuch auf dem Server zu speichern, müssen Sie einen Namen für das Wörterbuch angeben. Falls Sie schon ein gespeicherte Wörterbuch haben, geben Sie bitte dessen Namen ein und klicken Sie auf die Schaltfläche Wiederherstellen.","dic_rename":"Umbenennen","dic_restore":"Wiederherstellen","dictionariesTab":"Wörterbücher","disable":"SCAYT ausschalten","emptyDic":"Wörterbuchname sollte leer sein.","enable":"SCAYT einschalten","ignore":"Ignorieren","ignoreAll":"Alle ignorieren","ignoreDomainNames":"Domain-Namen ignorieren","langs":"Sprachen","languagesTab":"Sprachen","mixedCase":"Wörter mit gemischte Setzkasten ignorieren","mixedWithDigits":"Wörter mit Zahlen ignorieren","moreSuggestions":"Mehr Vorschläge","opera_title":"Nicht von Opera unterstützt","options":"Optionen","optionsTab":"Optionen","title":"Rechtschreibprüfung während der Texteingabe (SCAYT)","toggle":"SCAYT umschalten","noSuggestions":"No suggestion"},"stylescombo":{"label":"Stil","panelTitle":"Formatierungenstil","panelTitle1":"Block Stilart","panelTitle2":"Inline Stilart","panelTitle3":"Objekt Stilart"},"table":{"border":"Rahmen","caption":"Überschrift","cell":{"menu":"Zelle","insertBefore":"Zelle davor einfügen","insertAfter":"Zelle danach einfügen","deleteCell":"Zelle löschen","merge":"Zellen verbinden","mergeRight":"Nach rechts verbinden","mergeDown":"Nach unten verbinden","splitHorizontal":"Zelle horizontal teilen","splitVertical":"Zelle vertikal teilen","title":"Zellen-Eigenschaften","cellType":"Zellart","rowSpan":"Anzahl Zeilen verbinden","colSpan":"Anzahl Spalten verbinden","wordWrap":"Zeilenumbruch","hAlign":"Horizontale Ausrichtung","vAlign":"Vertikale Ausrichtung","alignBaseline":"Grundlinie","bgColor":"Hintergrundfarbe","borderColor":"Rahmenfarbe","data":"Daten","header":"Überschrift","yes":"Ja","no":"Nein","invalidWidth":"Zellenbreite muß eine Zahl sein.","invalidHeight":"Zellenhöhe muß eine Zahl sein.","invalidRowSpan":"\"Anzahl Zeilen verbinden\" muss eine Ganzzahl sein.","invalidColSpan":"\"Anzahl Spalten verbinden\" muss eine Ganzzahl sein.","chooseColor":"Wählen"},"cellPad":"Zellenabstand innen","cellSpace":"Zellenabstand außen","column":{"menu":"Spalte","insertBefore":"Spalte links davor einfügen","insertAfter":"Spalte rechts danach einfügen","deleteColumn":"Spalte löschen"},"columns":"Spalte","deleteTable":"Tabelle löschen","headers":"Kopfzeile","headersBoth":"Beide","headersColumn":"Erste Spalte","headersNone":"Keine","headersRow":"Erste Zeile","invalidBorder":"Die Rahmenbreite muß eine Zahl sein.","invalidCellPadding":"Der Zellenabstand innen muß eine positive Zahl sein.","invalidCellSpacing":"Der Zellenabstand außen muß eine positive Zahl sein.","invalidCols":"Die Anzahl der Spalten muß größer als 0 sein..","invalidHeight":"Die Tabellenbreite muß eine Zahl sein.","invalidRows":"Die Anzahl der Zeilen muß größer als 0 sein.","invalidWidth":"Die Tabellenbreite muss eine Zahl sein.","menu":"Tabellen-Eigenschaften","row":{"menu":"Zeile","insertBefore":"Zeile oberhalb einfügen","insertAfter":"Zeile unterhalb einfügen","deleteRow":"Zeile entfernen"},"rows":"Zeile","summary":"Inhaltsübersicht","title":"Tabellen-Eigenschaften","toolbar":"Tabelle","widthPc":"%","widthPx":"Pixel","widthUnit":"Breite Einheit"},"undo":{"redo":"Wiederherstellen","undo":"Rückgängig"},"wsc":{"btnIgnore":"Ignorieren","btnIgnoreAll":"Alle Ignorieren","btnReplace":"Ersetzen","btnReplaceAll":"Alle Ersetzen","btnUndo":"Rückgängig","changeTo":"Ändern in","errorLoading":"Fehler beim laden des Dienstanbieters: %s.","ieSpellDownload":"Rechtschreibprüfung nicht installiert. Möchten Sie sie jetzt herunterladen?","manyChanges":"Rechtschreibprüfung abgeschlossen - %1 Wörter geändert","noChanges":"Rechtschreibprüfung abgeschlossen - keine Worte geändert","noMispell":"Rechtschreibprüfung abgeschlossen - keine Fehler gefunden","noSuggestions":" - keine Vorschläge - ","notAvailable":"Entschuldigung, aber dieser Dienst steht im Moment nicht zur Verfügung.","notInDic":"Nicht im Wörterbuch","oneChange":"Rechtschreibprüfung abgeschlossen - ein Wort geändert","progress":"Rechtschreibprüfung läuft...","title":"Rechtschreibprüfung","toolbar":"Rechtschreibprüfung"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/el.js b/assets/plugins/ckeditor/lang/el.js deleted file mode 100644 index 022b707b..00000000 --- a/assets/plugins/ckeditor/lang/el.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['el']={"editor":"Επεξεργαστής Πλούσιου Κειμένου","editorPanel":"Πίνακας Επεξεργαστή Πλούσιου Κειμένου","common":{"editorHelp":"Πατήστε το ALT 0 για βοήθεια","browseServer":"Εξερεύνηση Διακομιστή","url":"URL","protocol":"Πρωτόκολλο","upload":"Αποστολή","uploadSubmit":"Αποστολή στον Διακομιστή","image":"Εικόνα","flash":"Flash","form":"Φόρμα","checkbox":"Κουτί Επιλογής","radio":"Κουμπί Επιλογής","textField":"Πεδίο Κειμένου","textarea":"Περιοχή Κειμένου","hiddenField":"Κρυφό Πεδίο","button":"Κουμπί","select":"Πεδίο Επιλογής","imageButton":"Κουμπί Εικόνας","notSet":"<δεν έχει ρυθμιστεί>","id":"Id","name":"Όνομα","langDir":"Κατεύθυνση Κειμένου","langDirLtr":"Αριστερά προς Δεξιά (LTR)","langDirRtl":"Δεξιά προς Αριστερά (RTL)","langCode":"Κωδικός Γλώσσας","longDescr":"Αναλυτική Περιγραφή URL","cssClass":"Κλάσεις Φύλλων Στυλ","advisoryTitle":"Ενδεικτικός Τίτλος","cssStyle":"Μορφή Κειμένου","ok":"OK","cancel":"Ακύρωση","close":"Κλείσιμο","preview":"Προεπισκόπηση","resize":"Αλλαγή Μεγέθους","generalTab":"Γενικά","advancedTab":"Για Προχωρημένους","validateNumberFailed":"Αυτή η τιμή δεν είναι αριθμός.","confirmNewPage":"Οι όποιες αλλαγές στο περιεχόμενο θα χαθούν. Είσαστε σίγουροι ότι θέλετε να φορτώσετε μια νέα σελίδα;","confirmCancel":"Μερικές επιλογές έχουν αλλάξει. Είσαστε σίγουροι ότι θέλετε να κλείσετε το παράθυρο διαλόγου;","options":"Επιλογές","target":"Προορισμός","targetNew":"Νέο Παράθυρο (_blank)","targetTop":"Αρχική Περιοχή (_top)","targetSelf":"Ίδιο Παράθυρο (_self)","targetParent":"Γονεϊκό Παράθυρο (_parent)","langDirLTR":"Αριστερά προς Δεξιά (LTR)","langDirRTL":"Δεξιά προς Αριστερά (RTL)","styles":"Μορφή","cssClasses":"Κλάσεις Φύλλων Στυλ","width":"Πλάτος","height":"Ύψος","align":"Στοίχιση","alignLeft":"Αριστερά","alignRight":"Δεξιά","alignCenter":"Κέντρο","alignTop":"Πάνω","alignMiddle":"Μέση","alignBottom":"Κάτω","invalidValue":"Μη έγκυρη τιμή.","invalidHeight":"Το ύψος πρέπει να είναι ένας αριθμός.","invalidWidth":"Το πλάτος πρέπει να είναι ένας αριθμός.","invalidCssLength":"Η τιμή που ορίζεται για το πεδίο \"%1\" πρέπει να είναι ένας θετικός αριθμός με ή χωρίς μια έγκυρη μονάδα μέτρησης CSS (px, %, in, cm, mm, em, ex, pt, ή pc).","invalidHtmlLength":"Η τιμή που ορίζεται για το πεδίο \"%1\" πρέπει να είναι ένας θετικός αριθμός με ή χωρίς μια έγκυρη μονάδα μέτρησης HTML (px ή %).","invalidInlineStyle":"Η τιμή για το εν σειρά στυλ πρέπει να περιέχει ένα ή περισσότερα ζεύγη με την μορφή \"όνομα: τιμή\" διαχωρισμένα με Ελληνικό ερωτηματικό.","cssLengthTooltip":"Εισάγεται μια τιμή σε pixel ή έναν αριθμό μαζί με μια έγκυρη μονάδα μέτρησης CSS (px, %, in, cm, mm, em, ex, pt, ή pc).","unavailable":"%1<span class=\"cke_accessibility\">, δεν είναι διαθέσιμο</span>"},"about":{"copy":"Πνευματικά δικαιώματα &copy; $1 Με επιφύλαξη παντός δικαιώματος.","dlgTitle":"Περί του CKEditor","help":"Ελέγξτε το $1 για βοήθεια.","moreInfo":"Για πληροφορίες αδειών παρακαλούμε επισκεφθείτε την ιστοσελίδα μας:","title":"Περί του CKEditor","userGuide":"Οδηγίες Χρήστη CKEditor"},"basicstyles":{"bold":"Έντονη","italic":"Πλάγια","strike":"Διακριτή Διαγραφή","subscript":"Δείκτης","superscript":"Εκθέτης","underline":"Υπογράμμιση"},"blockquote":{"toolbar":"Περιοχή Παράθεσης"},"clipboard":{"copy":"Αντιγραφή","copyError":"Οι ρυθμίσεις ασφαλείας του περιηγητή σας δεν επιτρέπουν την επιλεγμένη εργασία αντιγραφής. Παρακαλώ χρησιμοποιείστε το πληκτρολόγιο (Ctrl/Cmd+C).","cut":"Αποκοπή","cutError":"Οι ρυθμίσεις ασφαλείας του περιηγητή σας δεν επιτρέπουν την επιλεγμένη εργασία αποκοπής. Παρακαλώ χρησιμοποιείστε το πληκτρολόγιο (Ctrl/Cmd+X).","paste":"Επικόλληση","pasteArea":"Περιοχή Επικόλλησης","pasteMsg":"Παρακαλώ επικολλήστε στο ακόλουθο κουτί χρησιμοποιώντας το πληκτρολόγιο (<strong>Ctrl/Cmd+V</strong>) και πατήστε OK.","securityMsg":"Λόγων των ρυθμίσεων ασφάλειας του περιηγητή σας, ο επεξεργαστής δεν μπορεί να έχει πρόσβαση στην μνήμη επικόλλησης. Χρειάζεται να επικολλήσετε ξανά σε αυτό το παράθυρο.","title":"Επικόλληση"},"contextmenu":{"options":"Επιλογές Αναδυόμενου Μενού"},"toolbar":{"toolbarCollapse":"Σύμπτυξη Εργαλειοθήκης","toolbarExpand":"Ανάπτυξη Εργαλειοθήκης","toolbarGroups":{"document":"Έγγραφο","clipboard":"Πρόχειρο/Αναίρεση","editing":"Επεξεργασία","forms":"Φόρμες","basicstyles":"Βασικά Στυλ","paragraph":"Παράγραφος","links":"Σύνδεσμοι","insert":"Εισαγωγή","styles":"Στυλ","colors":"Χρώματα","tools":"Εργαλεία"},"toolbars":"Εργαλειοθήκες επεξεργαστή"},"elementspath":{"eleLabel":"Διαδρομή Στοιχείων","eleTitle":"Στοιχείο %1"},"format":{"label":"Μορφοποίηση","panelTitle":"Μορφοποίηση Παραγράφου","tag_address":"Διεύθυνση","tag_div":"Κανονική (DIV)","tag_h1":"Κεφαλίδα 1","tag_h2":"Κεφαλίδα 2","tag_h3":"Κεφαλίδα 3","tag_h4":"Κεφαλίδα 4","tag_h5":"Κεφαλίδα 5","tag_h6":"Κεφαλίδα 6","tag_p":"Κανονική","tag_pre":"Προ-μορφοποιημένη"},"horizontalrule":{"toolbar":"Εισαγωγή Οριζόντιας Γραμμής"},"image":{"alertUrl":"Εισάγετε την τοποθεσία (URL) της εικόνας","alt":"Εναλλακτικό Κείμενο","border":"Περίγραμμα","btnUpload":"Αποστολή στον Διακομιστή","button2Img":"Θέλετε να μετατρέψετε το επιλεγμένο κουμπί εικόνας σε απλή εικόνα;","hSpace":"HSpace","img2Button":"Θέλετε να μεταμορφώσετε την επιλεγμένη εικόνα που είναι πάνω σε ένα κουμπί;","infoTab":"Πληροφορίες Εικόνας","linkTab":"Σύνδεσμος","lockRatio":"Κλείδωμα Αναλογίας","menu":"Ιδιότητες Εικόνας","resetSize":"Επαναφορά Αρχικού Μεγέθους","title":"Ιδιότητες Εικόνας","titleButton":"Ιδιότητες Κουμπιού Εικόνας","upload":"Αποστολή","urlMissing":"Το URL πηγής για την εικόνα λείπει.","vSpace":"VSpace","validateBorder":"Το περίγραμμα πρέπει να είναι ένας ακέραιος αριθμός.","validateHSpace":"Το HSpace πρέπει να είναι ένας ακέραιος αριθμός.","validateVSpace":"Το VSpace πρέπει να είναι ένας ακέραιος αριθμός."},"indent":{"indent":"Αύξηση Εσοχής","outdent":"Μείωση Εσοχής"},"fakeobjects":{"anchor":"Άγκυρα","flash":"Ταινία Flash","hiddenfield":"Κρυφό Πεδίο","iframe":"IFrame","unknown":"Άγνωστο Αντικείμενο"},"link":{"acccessKey":"Συντόμευση","advanced":"Για Προχωρημένους","advisoryContentType":"Ενδεικτικός Τύπος Περιεχομένου","advisoryTitle":"Ενδεικτικός Τίτλος","anchor":{"toolbar":"Εισαγωγή/επεξεργασία Άγκυρας","menu":"Ιδιότητες άγκυρας","title":"Ιδιότητες άγκυρας","name":"Όνομα άγκυρας","errorName":"Παρακαλούμε εισάγετε όνομα άγκυρας","remove":"Αφαίρεση Άγκυρας"},"anchorId":"Βάσει του Element Id","anchorName":"Βάσει του Ονόματος Άγκυρας","charset":"Κωδικοποίηση Χαρακτήρων Προσαρτημένης Πηγής","cssClasses":"Κλάσεις Φύλλων Στυλ","emailAddress":"Διεύθυνση E-mail","emailBody":"Κείμενο Μηνύματος","emailSubject":"Θέμα Μηνύματος","id":"Id","info":"Πληροφορίες Συνδέσμου","langCode":"Κατεύθυνση Κειμένου","langDir":"Κατεύθυνση Κειμένου","langDirLTR":"Αριστερά προς Δεξιά (LTR)","langDirRTL":"Δεξιά προς Αριστερά (RTL)","menu":"Επεξεργασία Συνδέσμου","name":"Όνομα","noAnchors":"(Δεν υπάρχουν άγκυρες στο κείμενο)","noEmail":"Εισάγετε τη διεύθυνση ηλεκτρονικού ταχυδρομείου","noUrl":"Εισάγετε την τοποθεσία (URL) του συνδέσμου","other":"<άλλο>","popupDependent":"Εξαρτημένο (Netscape)","popupFeatures":"Επιλογές Αναδυόμενου Παραθύρου","popupFullScreen":"Πλήρης Οθόνη (IE)","popupLeft":"Θέση Αριστερά","popupLocationBar":"Γραμμή Τοποθεσίας","popupMenuBar":"Γραμμή Επιλογών","popupResizable":"Προσαρμοζόμενο Μέγεθος","popupScrollBars":"Μπάρες Κύλισης","popupStatusBar":"Γραμμή Κατάστασης","popupToolbar":"Εργαλειοθήκη","popupTop":"Θέση Πάνω","rel":"Σχέση","selectAnchor":"Επιλέξτε μια Άγκυρα","styles":"Μορφή","tabIndex":"Σειρά Μεταπήδησης","target":"Παράθυρο Προορισμού","targetFrame":"<πλαίσιο>","targetFrameName":"Όνομα Πλαισίου Προορισμού","targetPopup":"<αναδυόμενο παράθυρο>","targetPopupName":"Όνομα Αναδυόμενου Παραθύρου","title":"Σύνδεσμος","toAnchor":"Άγκυρα σε αυτήν τη σελίδα","toEmail":"E-Mail","toUrl":"URL","toolbar":"Σύνδεσμος","type":"Τύπος Συνδέσμου","unlink":"Αφαίρεση Συνδέσμου","upload":"Αποστολή"},"list":{"bulletedlist":"Εισαγωγή/Απομάκρυνση Λίστας Κουκκίδων","numberedlist":"Εισαγωγή/Απομάκρυνση Αριθμημένης Λίστας"},"magicline":{"title":"Εισάγετε παράγραφο εδώ"},"maximize":{"maximize":"Μεγιστοποίηση","minimize":"Ελαχιστοποίηση"},"pastetext":{"button":"Επικόλληση ως απλό κείμενο","title":"Επικόλληση ως απλό κείμενο"},"pastefromword":{"confirmCleanup":"Το κείμενο που επικολλάται φαίνεται να είναι αντιγραμμένο από το Word. Μήπως θα θέλατε να καθαριστεί προτού επικολληθεί;","error":"Δεν ήταν δυνατό να καθαριστούν τα δεδομένα λόγω ενός εσωτερικού σφάλματος","title":"Επικόλληση από το Word","toolbar":"Επικόλληση από το Word"},"removeformat":{"toolbar":"Εκκαθάριση Μορφοποίησης"},"sourcearea":{"toolbar":"Κώδικας"},"specialchar":{"options":"Επιλογές Ειδικών Χαρακτήρων","title":"Επιλέξτε Έναν Ειδικό Χαρακτήρα","toolbar":"Εισαγωγή Ειδικού Χαρακτήρα"},"scayt":{"about":"About SCAYT","aboutTab":"Περί","addWord":"Προσθήκη στο λεξικό","allCaps":"Να αγνοούνται όλες οι λέξεις σε κεφαλαία","dic_create":"Δημιουργία","dic_delete":"Διαγραφή","dic_field_name":"Όνομα λεξικού","dic_info":"Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.","dic_rename":"Μετονομασία","dic_restore":"Ανάκτηση","dictionariesTab":"Λεξικά","disable":"Disable SCAYT","emptyDic":"Το όνομα του λεξικού δεν πρέπει να είναι κενό.","enable":"Enable SCAYT","ignore":"Αγνόησε το","ignoreAll":"Να αγνοηθούν όλα","ignoreDomainNames":"Ignore Domain Names","langs":"Γλώσσες","languagesTab":"Γλώσσες","mixedCase":"Ignore Words with Mixed Case","mixedWithDigits":"Ignore Words with Numbers","moreSuggestions":"Περισσότερες προτάσεις","opera_title":"Not supported by Opera","options":"Επιλογές","optionsTab":"Επιλογές","title":"Spell Check As You Type","toggle":"Toggle SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"Μορφές","panelTitle":"Στυλ Μορφοποίησης","panelTitle1":"Στυλ Τμημάτων","panelTitle2":"Στυλ Εν Σειρά","panelTitle3":"Στυλ Αντικειμένων"},"table":{"border":"Πάχος Περιγράμματος","caption":"Λεζάντα","cell":{"menu":"Κελί","insertBefore":"Εισαγωγή Κελιού Πριν","insertAfter":"Εισαγωγή Κελιού Μετά","deleteCell":"Διαγραφή Κελιών","merge":"Ενοποίηση Κελιών","mergeRight":"Συγχώνευση Με Δεξιά","mergeDown":"Συγχώνευση Με Κάτω","splitHorizontal":"Οριζόντια Διαίρεση Κελιού","splitVertical":"Κατακόρυφη Διαίρεση Κελιού","title":"Ιδιότητες Κελιού","cellType":"Τύπος Κελιού","rowSpan":"Εύρος Γραμμών","colSpan":"Εύρος Στηλών","wordWrap":"Αναδίπλωση Λέξεων","hAlign":"Οριζόντια Στοίχιση","vAlign":"Κάθετη Στοίχιση","alignBaseline":"Baseline","bgColor":"Χρώμα Φόντου","borderColor":"Χρώμα Περιγράμματος","data":"Δεδομένα","header":"Κεφαλίδα","yes":"Ναι","no":"Όχι","invalidWidth":"Το πλάτος του κελιού πρέπει να είναι αριθμός.","invalidHeight":"Το ύψος του κελιού πρέπει να είναι αριθμός.","invalidRowSpan":"Το εύρος των γραμμών πρέπει να είναι ακέραιος αριθμός.","invalidColSpan":"Το εύρος των στηλών πρέπει να είναι ακέραιος αριθμός.","chooseColor":"Επιλέξτε"},"cellPad":"Αναπλήρωση κελιών","cellSpace":"Απόσταση κελιών","column":{"menu":"Στήλη","insertBefore":"Εισαγωγή Στήλης Πριν","insertAfter":"Εισαγωγή Στήλης Μετά","deleteColumn":"Διαγραφή Στηλών"},"columns":"Στήλες","deleteTable":"Διαγραφή Πίνακα","headers":"Κεφαλίδες","headersBoth":"Και τα δύο","headersColumn":"Πρώτη στήλη","headersNone":"Κανένα","headersRow":"Πρώτη Γραμμή","invalidBorder":"Το πάχος του περιγράμματος πρέπει να είναι ένας αριθμός.","invalidCellPadding":"Η αναπλήρωση των κελιών πρέπει να είναι θετικός αριθμός.","invalidCellSpacing":"Η απόσταση μεταξύ των κελιών πρέπει να είναι ένας θετικός αριθμός.","invalidCols":"Ο αριθμός των στηλών πρέπει να είναι μεγαλύτερος από 0.","invalidHeight":"Το ύψος του πίνακα πρέπει να είναι αριθμός.","invalidRows":"Ο αριθμός των σειρών πρέπει να είναι μεγαλύτερος από 0.","invalidWidth":"Το πλάτος του πίνακα πρέπει να είναι ένας αριθμός.","menu":"Ιδιότητες Πίνακα","row":{"menu":"Γραμμή","insertBefore":"Εισαγωγή Γραμμής Πριν","insertAfter":"Εισαγωγή Γραμμής Μετά","deleteRow":"Διαγραφή Γραμμών"},"rows":"Γραμμές","summary":"Περίληψη","title":"Ιδιότητες Πίνακα","toolbar":"Πίνακας","widthPc":"τοις εκατό","widthPx":"pixel","widthUnit":"μονάδα πλάτους"},"undo":{"redo":"Επανάληψη","undo":"Αναίρεση"},"wsc":{"btnIgnore":"Αγνόηση","btnIgnoreAll":"Αγνόηση όλων","btnReplace":"Αντικατάσταση","btnReplaceAll":"Αντικατάσταση όλων","btnUndo":"Αναίρεση","changeTo":"Αλλαγή σε","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Δεν υπάρχει εγκατεστημένος ορθογράφος. Θέλετε να τον κατεβάσετε τώρα;","manyChanges":"Ο ορθογραφικός έλεγχος ολοκληρώθηκε: Άλλαξαν %1 λέξεις","noChanges":"Ο ορθογραφικός έλεγχος ολοκληρώθηκε: Δεν άλλαξαν λέξεις","noMispell":"Ο ορθογραφικός έλεγχος ολοκληρώθηκε: Δεν βρέθηκαν λάθη","noSuggestions":"- Δεν υπάρχουν προτάσεις -","notAvailable":"Η υπηρεσία δεν είναι διαθέσιμη αυτήν την στιγμή.","notInDic":"Δεν υπάρχει στο λεξικό","oneChange":"Ο ορθογραφικός έλεγχος ολοκληρώθηκε: Άλλαξε μια λέξη","progress":"Γίνεται ορθογραφικός έλεγχος...","title":"Ορθογραφικός Έλεγχος","toolbar":"Ορθογραφικός Έλεγχος"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/en-au.js b/assets/plugins/ckeditor/lang/en-au.js deleted file mode 100644 index 2a3cd4da..00000000 --- a/assets/plugins/ckeditor/lang/en-au.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['en-au']={"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Browse Server","url":"URL","protocol":"Protocol","upload":"Upload","uploadSubmit":"Send it to the Server","image":"Image","flash":"Flash","form":"Form","checkbox":"Checkbox","radio":"Radio Button","textField":"Text Field","textarea":"Textarea","hiddenField":"Hidden Field","button":"Button","select":"Selection Field","imageButton":"Image Button","notSet":"<not set>","id":"Id","name":"Name","langDir":"Language Direction","langDirLtr":"Left to Right (LTR)","langDirRtl":"Right to Left (RTL)","langCode":"Language Code","longDescr":"Long Description URL","cssClass":"Stylesheet Classes","advisoryTitle":"Advisory Title","cssStyle":"Style","ok":"OK","cancel":"Cancel","close":"Close","preview":"Preview","resize":"Resize","generalTab":"General","advancedTab":"Advanced","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"Target","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Left to Right (LTR)","langDirRTL":"Right to Left (RTL)","styles":"Style","cssClasses":"Stylesheet Classes","width":"Width","height":"Height","align":"Align","alignLeft":"Left","alignRight":"Right","alignCenter":"Centre","alignTop":"Top","alignMiddle":"Middle","alignBottom":"Bottom","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>"},"about":{"copy":"Copyright &copy; $1. All rights reserved.","dlgTitle":"About CKEditor","help":"Check $1 for help.","moreInfo":"For licensing information please visit our web site:","title":"About CKEditor","userGuide":"CKEditor User's Guide"},"basicstyles":{"bold":"Bold","italic":"Italic","strike":"Strike Through","subscript":"Subscript","superscript":"Superscript","underline":"Underline"},"blockquote":{"toolbar":"Block Quote"},"clipboard":{"copy":"Copy","copyError":"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).","cut":"Cut","cutError":"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).","paste":"Paste","pasteArea":"Paste Area","pasteMsg":"Please paste inside the following box using the keyboard (<strong>Ctrl/Cmd+V</strong>) and hit OK","securityMsg":"Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.","title":"Paste"},"contextmenu":{"options":"Context Menu Options"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"format":{"label":"Format","panelTitle":"Paragraph Format","tag_address":"Address","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatted"},"horizontalrule":{"toolbar":"Insert Horizontal Line"},"image":{"alertUrl":"Please type the image URL","alt":"Alternative Text","border":"Border","btnUpload":"Send it to the Server","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"HSpace","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"Image Info","linkTab":"Link","lockRatio":"Lock Ratio","menu":"Image Properties","resetSize":"Reset Size","title":"Image Properties","titleButton":"Image Button Properties","upload":"Upload","urlMissing":"Image source URL is missing.","vSpace":"VSpace","validateBorder":"Border must be a whole number.","validateHSpace":"HSpace must be a whole number.","validateVSpace":"VSpace must be a whole number."},"indent":{"indent":"Increase Indent","outdent":"Decrease Indent"},"fakeobjects":{"anchor":"Anchor","flash":"Flash Animation","hiddenfield":"Hidden Field","iframe":"IFrame","unknown":"Unknown Object"},"link":{"acccessKey":"Access Key","advanced":"Advanced","advisoryContentType":"Advisory Content Type","advisoryTitle":"Advisory Title","anchor":{"toolbar":"Anchor","menu":"Edit Anchor","title":"Anchor Properties","name":"Anchor Name","errorName":"Please type the anchor name","remove":"Remove Anchor"},"anchorId":"By Element Id","anchorName":"By Anchor Name","charset":"Linked Resource Charset","cssClasses":"Stylesheet Classes","emailAddress":"E-Mail Address","emailBody":"Message Body","emailSubject":"Message Subject","id":"Id","info":"Link Info","langCode":"Language Code","langDir":"Language Direction","langDirLTR":"Left to Right (LTR)","langDirRTL":"Right to Left (RTL)","menu":"Edit Link","name":"Name","noAnchors":"(No anchors available in the document)","noEmail":"Please type the e-mail address","noUrl":"Please type the link URL","other":"<other>","popupDependent":"Dependent (Netscape)","popupFeatures":"Popup Window Features","popupFullScreen":"Full Screen (IE)","popupLeft":"Left Position","popupLocationBar":"Location Bar","popupMenuBar":"Menu Bar","popupResizable":"Resizable","popupScrollBars":"Scroll Bars","popupStatusBar":"Status Bar","popupToolbar":"Toolbar","popupTop":"Top Position","rel":"Relationship","selectAnchor":"Select an Anchor","styles":"Style","tabIndex":"Tab Index","target":"Target","targetFrame":"<frame>","targetFrameName":"Target Frame Name","targetPopup":"<popup window>","targetPopupName":"Popup Window Name","title":"Link","toAnchor":"Link to anchor in the text","toEmail":"E-mail","toUrl":"URL","toolbar":"Link","type":"Link Type","unlink":"Unlink","upload":"Upload"},"list":{"bulletedlist":"Insert/Remove Bulleted List","numberedlist":"Insert/Remove Numbered List"},"magicline":{"title":"Insert paragraph here"},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"pastetext":{"button":"Paste as plain text","title":"Paste as Plain Text"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Paste from Word","toolbar":"Paste from Word"},"removeformat":{"toolbar":"Remove Format"},"sourcearea":{"toolbar":"Source"},"specialchar":{"options":"Special Character Options","title":"Select Special Character","toolbar":"Insert Special Character"},"scayt":{"about":"About SCAYT","aboutTab":"About","addWord":"Add Word","allCaps":"Ignore All-Caps Words","dic_create":"Create","dic_delete":"Delete","dic_field_name":"Dictionary name","dic_info":"Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.","dic_rename":"Rename","dic_restore":"Restore","dictionariesTab":"Dictionaries","disable":"Disable SCAYT","emptyDic":"Dictionary name should not be empty.","enable":"Enable SCAYT","ignore":"Ignore","ignoreAll":"Ignore All","ignoreDomainNames":"Ignore Domain Names","langs":"Languages","languagesTab":"Languages","mixedCase":"Ignore Words with Mixed Case","mixedWithDigits":"Ignore Words with Numbers","moreSuggestions":"More suggestions","opera_title":"Not supported by Opera","options":"Options","optionsTab":"Options","title":"Spell Check As You Type","toggle":"Toggle SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"Styles","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"table":{"border":"Border size","caption":"Caption","cell":{"menu":"Cell","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"Delete Cells","merge":"Merge Cells","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Cell padding","cellSpace":"Cell spacing","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Delete Columns"},"columns":"Columns","deleteTable":"Delete Table","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a number.","invalidCellSpacing":"Cell spacing must be a number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Table Properties","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Delete Rows"},"rows":"Rows","summary":"Summary","title":"Table Properties","toolbar":"Table","widthPc":"percent","widthPx":"pixels","widthUnit":"width unit"},"undo":{"redo":"Redo","undo":"Undo"},"wsc":{"btnIgnore":"Ignore","btnIgnoreAll":"Ignore All","btnReplace":"Replace","btnReplaceAll":"Replace All","btnUndo":"Undo","changeTo":"Change to","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Spell checker not installed. Do you want to download it now?","manyChanges":"Spell check complete: %1 words changed","noChanges":"Spell check complete: No words changed","noMispell":"Spell check complete: No misspellings found","noSuggestions":"- No suggestions -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Not in dictionary","oneChange":"Spell check complete: One word changed","progress":"Spell check in progress...","title":"Spell Check","toolbar":"Check Spelling"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/en-ca.js b/assets/plugins/ckeditor/lang/en-ca.js deleted file mode 100644 index 0e2ce114..00000000 --- a/assets/plugins/ckeditor/lang/en-ca.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['en-ca']={"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Browse Server","url":"URL","protocol":"Protocol","upload":"Upload","uploadSubmit":"Send it to the Server","image":"Image","flash":"Flash","form":"Form","checkbox":"Checkbox","radio":"Radio Button","textField":"Text Field","textarea":"Textarea","hiddenField":"Hidden Field","button":"Button","select":"Selection Field","imageButton":"Image Button","notSet":"<not set>","id":"Id","name":"Name","langDir":"Language Direction","langDirLtr":"Left to Right (LTR)","langDirRtl":"Right to Left (RTL)","langCode":"Language Code","longDescr":"Long Description URL","cssClass":"Stylesheet Classes","advisoryTitle":"Advisory Title","cssStyle":"Style","ok":"OK","cancel":"Cancel","close":"Close","preview":"Preview","resize":"Resize","generalTab":"General","advancedTab":"Advanced","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"Target","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Left to Right (LTR)","langDirRTL":"Right to Left (RTL)","styles":"Style","cssClasses":"Stylesheet Classes","width":"Width","height":"Height","align":"Align","alignLeft":"Left","alignRight":"Right","alignCenter":"Centre","alignTop":"Top","alignMiddle":"Middle","alignBottom":"Bottom","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>"},"about":{"copy":"Copyright &copy; $1. All rights reserved.","dlgTitle":"About CKEditor","help":"Check $1 for help.","moreInfo":"For licensing information please visit our web site:","title":"About CKEditor","userGuide":"CKEditor User's Guide"},"basicstyles":{"bold":"Bold","italic":"Italic","strike":"Strike Through","subscript":"Subscript","superscript":"Superscript","underline":"Underline"},"blockquote":{"toolbar":"Block Quote"},"clipboard":{"copy":"Copy","copyError":"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).","cut":"Cut","cutError":"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).","paste":"Paste","pasteArea":"Paste Area","pasteMsg":"Please paste inside the following box using the keyboard (<strong>Ctrl/Cmd+V</strong>) and hit OK","securityMsg":"Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.","title":"Paste"},"contextmenu":{"options":"Context Menu Options"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"format":{"label":"Format","panelTitle":"Paragraph Format","tag_address":"Address","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatted"},"horizontalrule":{"toolbar":"Insert Horizontal Line"},"image":{"alertUrl":"Please type the image URL","alt":"Alternative Text","border":"Border","btnUpload":"Send it to the Server","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"HSpace","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"Image Info","linkTab":"Link","lockRatio":"Lock Ratio","menu":"Image Properties","resetSize":"Reset Size","title":"Image Properties","titleButton":"Image Button Properties","upload":"Upload","urlMissing":"Image source URL is missing.","vSpace":"VSpace","validateBorder":"Border must be a whole number.","validateHSpace":"HSpace must be a whole number.","validateVSpace":"VSpace must be a whole number."},"indent":{"indent":"Increase Indent","outdent":"Decrease Indent"},"fakeobjects":{"anchor":"Anchor","flash":"Flash Animation","hiddenfield":"Hidden Field","iframe":"IFrame","unknown":"Unknown Object"},"link":{"acccessKey":"Access Key","advanced":"Advanced","advisoryContentType":"Advisory Content Type","advisoryTitle":"Advisory Title","anchor":{"toolbar":"Anchor","menu":"Edit Anchor","title":"Anchor Properties","name":"Anchor Name","errorName":"Please type the anchor name","remove":"Remove Anchor"},"anchorId":"By Element Id","anchorName":"By Anchor Name","charset":"Linked Resource Charset","cssClasses":"Stylesheet Classes","emailAddress":"E-Mail Address","emailBody":"Message Body","emailSubject":"Message Subject","id":"Id","info":"Link Info","langCode":"Language Code","langDir":"Language Direction","langDirLTR":"Left to Right (LTR)","langDirRTL":"Right to Left (RTL)","menu":"Edit Link","name":"Name","noAnchors":"(No anchors available in the document)","noEmail":"Please type the e-mail address","noUrl":"Please type the link URL","other":"<other>","popupDependent":"Dependent (Netscape)","popupFeatures":"Popup Window Features","popupFullScreen":"Full Screen (IE)","popupLeft":"Left Position","popupLocationBar":"Location Bar","popupMenuBar":"Menu Bar","popupResizable":"Resizable","popupScrollBars":"Scroll Bars","popupStatusBar":"Status Bar","popupToolbar":"Toolbar","popupTop":"Top Position","rel":"Relationship","selectAnchor":"Select an Anchor","styles":"Style","tabIndex":"Tab Index","target":"Target","targetFrame":"<frame>","targetFrameName":"Target Frame Name","targetPopup":"<popup window>","targetPopupName":"Popup Window Name","title":"Link","toAnchor":"Link to anchor in the text","toEmail":"E-mail","toUrl":"URL","toolbar":"Link","type":"Link Type","unlink":"Unlink","upload":"Upload"},"list":{"bulletedlist":"Insert/Remove Bulleted List","numberedlist":"Insert/Remove Numbered List"},"magicline":{"title":"Insert paragraph here"},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"pastetext":{"button":"Paste as plain text","title":"Paste as Plain Text"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Paste from Word","toolbar":"Paste from Word"},"removeformat":{"toolbar":"Remove Format"},"sourcearea":{"toolbar":"Source"},"specialchar":{"options":"Special Character Options","title":"Select Special Character","toolbar":"Insert Special Character"},"scayt":{"about":"About SCAYT","aboutTab":"About","addWord":"Add Word","allCaps":"Ignore All-Caps Words","dic_create":"Create","dic_delete":"Delete","dic_field_name":"Dictionary name","dic_info":"Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.","dic_rename":"Rename","dic_restore":"Restore","dictionariesTab":"Dictionaries","disable":"Disable SCAYT","emptyDic":"Dictionary name should not be empty.","enable":"Enable SCAYT","ignore":"Ignore","ignoreAll":"Ignore All","ignoreDomainNames":"Ignore Domain Names","langs":"Languages","languagesTab":"Languages","mixedCase":"Ignore Words with Mixed Case","mixedWithDigits":"Ignore Words with Numbers","moreSuggestions":"More suggestions","opera_title":"Not supported by Opera","options":"Options","optionsTab":"Options","title":"Spell Check As You Type","toggle":"Toggle SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"Styles","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"table":{"border":"Border size","caption":"Caption","cell":{"menu":"Cell","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"Delete Cells","merge":"Merge Cells","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Cell padding","cellSpace":"Cell spacing","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Delete Columns"},"columns":"Columns","deleteTable":"Delete Table","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a number.","invalidCellSpacing":"Cell spacing must be a number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Table Properties","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Delete Rows"},"rows":"Rows","summary":"Summary","title":"Table Properties","toolbar":"Table","widthPc":"percent","widthPx":"pixels","widthUnit":"width unit"},"undo":{"redo":"Redo","undo":"Undo"},"wsc":{"btnIgnore":"Ignore","btnIgnoreAll":"Ignore All","btnReplace":"Replace","btnReplaceAll":"Replace All","btnUndo":"Undo","changeTo":"Change to","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Spell checker not installed. Do you want to download it now?","manyChanges":"Spell check complete: %1 words changed","noChanges":"Spell check complete: No words changed","noMispell":"Spell check complete: No misspellings found","noSuggestions":"- No suggestions -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Not in dictionary","oneChange":"Spell check complete: One word changed","progress":"Spell check in progress...","title":"Spell Check","toolbar":"Check Spelling"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/en-gb.js b/assets/plugins/ckeditor/lang/en-gb.js deleted file mode 100644 index 454e3e2a..00000000 --- a/assets/plugins/ckeditor/lang/en-gb.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['en-gb']={"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Browse Server","url":"URL","protocol":"Protocol","upload":"Upload","uploadSubmit":"Send it to the Server","image":"Image","flash":"Flash","form":"Form","checkbox":"Checkbox","radio":"Radio Button","textField":"Text Field","textarea":"Textarea","hiddenField":"Hidden Field","button":"Button","select":"Selection Field","imageButton":"Image Button","notSet":"<not set>","id":"Id","name":"Name","langDir":"Language Direction","langDirLtr":"Left to Right (LTR)","langDirRtl":"Right to Left (RTL)","langCode":"Language Code","longDescr":"Long Description URL","cssClass":"Stylesheet Classes","advisoryTitle":"Advisory Title","cssStyle":"Style","ok":"OK","cancel":"Cancel","close":"Close","preview":"Preview","resize":"Drag to resize","generalTab":"General","advancedTab":"Advanced","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialogue window?","options":"Options","target":"Target","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Left to Right (LTR)","langDirRTL":"Right to Left (RTL)","styles":"Style","cssClasses":"Stylesheet Classes","width":"Width","height":"Height","align":"Align","alignLeft":"Left","alignRight":"Right","alignCenter":"Centre","alignTop":"Top","alignMiddle":"Middle","alignBottom":"Bottom","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>"},"about":{"copy":"Copyright &copy; $1. All rights reserved.","dlgTitle":"About CKEditor","help":"Check $1 for help.","moreInfo":"For licensing information please visit our web site:","title":"About CKEditor","userGuide":"CKEditor User's Guide"},"basicstyles":{"bold":"Bold","italic":"Italic","strike":"Strike Through","subscript":"Subscript","superscript":"Superscript","underline":"Underline"},"blockquote":{"toolbar":"Block Quote"},"clipboard":{"copy":"Copy","copyError":"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).","cut":"Cut","cutError":"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).","paste":"Paste","pasteArea":"Paste Area","pasteMsg":"Please paste inside the following box using the keyboard (<strong>Ctrl/Cmd+V</strong>) and hit OK","securityMsg":"Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.","title":"Paste"},"contextmenu":{"options":"Context Menu Options"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"format":{"label":"Format","panelTitle":"Paragraph Format","tag_address":"Address","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatted"},"horizontalrule":{"toolbar":"Insert Horizontal Line"},"image":{"alertUrl":"Please type the image URL","alt":"Alternative Text","border":"Border","btnUpload":"Send it to the Server","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"HSpace","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"Image Info","linkTab":"Link","lockRatio":"Lock Ratio","menu":"Image Properties","resetSize":"Reset Size","title":"Image Properties","titleButton":"Image Button Properties","upload":"Upload","urlMissing":"Image source URL is missing.","vSpace":"VSpace","validateBorder":"Border must be a whole number.","validateHSpace":"HSpace must be a whole number.","validateVSpace":"VSpace must be a whole number."},"indent":{"indent":"Increase Indent","outdent":"Decrease Indent"},"fakeobjects":{"anchor":"Anchor","flash":"Flash Animation","hiddenfield":"Hidden Field","iframe":"IFrame","unknown":"Unknown Object"},"link":{"acccessKey":"Access Key","advanced":"Advanced","advisoryContentType":"Advisory Content Type","advisoryTitle":"Advisory Title","anchor":{"toolbar":"Anchor","menu":"Edit Anchor","title":"Anchor Properties","name":"Anchor Name","errorName":"Please type the anchor name","remove":"Remove Anchor"},"anchorId":"By Element Id","anchorName":"By Anchor Name","charset":"Linked Resource Charset","cssClasses":"Stylesheet Classes","emailAddress":"E-Mail Address","emailBody":"Message Body","emailSubject":"Message Subject","id":"Id","info":"Link Info","langCode":"Language Code","langDir":"Language Direction","langDirLTR":"Left to Right (LTR)","langDirRTL":"Right to Left (RTL)","menu":"Edit Link","name":"Name","noAnchors":"(No anchors available in the document)","noEmail":"Please type the e-mail address","noUrl":"Please type the link URL","other":"<other>","popupDependent":"Dependent (Netscape)","popupFeatures":"Popup Window Features","popupFullScreen":"Full Screen (IE)","popupLeft":"Left Position","popupLocationBar":"Location Bar","popupMenuBar":"Menu Bar","popupResizable":"Resizable","popupScrollBars":"Scroll Bars","popupStatusBar":"Status Bar","popupToolbar":"Toolbar","popupTop":"Top Position","rel":"Relationship","selectAnchor":"Select an Anchor","styles":"Style","tabIndex":"Tab Index","target":"Target","targetFrame":"<frame>","targetFrameName":"Target Frame Name","targetPopup":"<popup window>","targetPopupName":"Popup Window Name","title":"Link","toAnchor":"Link to anchor in the text","toEmail":"E-mail","toUrl":"URL","toolbar":"Link","type":"Link Type","unlink":"Unlink","upload":"Upload"},"list":{"bulletedlist":"Insert/Remove Bulleted List","numberedlist":"Insert/Remove Numbered List"},"magicline":{"title":"Insert paragraph here"},"maximize":{"maximize":"Maximise","minimize":"Minimise"},"pastetext":{"button":"Paste as plain text","title":"Paste as Plain Text"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Paste from Word","toolbar":"Paste from Word"},"removeformat":{"toolbar":"Remove Format"},"sourcearea":{"toolbar":"Source"},"specialchar":{"options":"Special Character Options","title":"Select Special Character","toolbar":"Insert Special Character"},"scayt":{"about":"About SCAYT","aboutTab":"About","addWord":"Add Word","allCaps":"Ignore All-Caps Words","dic_create":"Create","dic_delete":"Delete","dic_field_name":"Dictionary name","dic_info":"Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.","dic_rename":"Rename","dic_restore":"Restore","dictionariesTab":"Dictionaries","disable":"Disable SCAYT","emptyDic":"Dictionary name should not be empty.","enable":"Enable SCAYT","ignore":"Ignore","ignoreAll":"Ignore All","ignoreDomainNames":"Ignore Domain Names","langs":"Languages","languagesTab":"Languages","mixedCase":"Ignore Words with Mixed Case","mixedWithDigits":"Ignore Words with Numbers","moreSuggestions":"More suggestions","opera_title":"Not supported by Opera","options":"Options","optionsTab":"Options","title":"Spell Check As You Type","toggle":"Toggle SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"Styles","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"table":{"border":"Border size","caption":"Caption","cell":{"menu":"Cell","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"Delete Cells","merge":"Merge Cells","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Cell padding","cellSpace":"Cell spacing","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Delete Columns"},"columns":"Columns","deleteTable":"Delete Table","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a number.","invalidCellSpacing":"Cell spacing must be a number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Table Properties","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Delete Rows"},"rows":"Rows","summary":"Summary","title":"Table Properties","toolbar":"Table","widthPc":"percent","widthPx":"pixels","widthUnit":"width unit"},"undo":{"redo":"Redo","undo":"Undo"},"wsc":{"btnIgnore":"Ignore","btnIgnoreAll":"Ignore All","btnReplace":"Replace","btnReplaceAll":"Replace All","btnUndo":"Undo","changeTo":"Change to","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Spell checker not installed. Do you want to download it now?","manyChanges":"Spell check complete: %1 words changed","noChanges":"Spell check complete: No words changed","noMispell":"Spell check complete: No misspellings found","noSuggestions":"- No suggestions -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Not in dictionary","oneChange":"Spell check complete: One word changed","progress":"Spell check in progress...","title":"Spell Check","toolbar":"Check Spelling"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/en.js b/assets/plugins/ckeditor/lang/en.js deleted file mode 100644 index cffe567f..00000000 --- a/assets/plugins/ckeditor/lang/en.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['en']={"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Browse Server","url":"URL","protocol":"Protocol","upload":"Upload","uploadSubmit":"Send it to the Server","image":"Image","flash":"Flash","form":"Form","checkbox":"Checkbox","radio":"Radio Button","textField":"Text Field","textarea":"Textarea","hiddenField":"Hidden Field","button":"Button","select":"Selection Field","imageButton":"Image Button","notSet":"<not set>","id":"Id","name":"Name","langDir":"Language Direction","langDirLtr":"Left to Right (LTR)","langDirRtl":"Right to Left (RTL)","langCode":"Language Code","longDescr":"Long Description URL","cssClass":"Stylesheet Classes","advisoryTitle":"Advisory Title","cssStyle":"Style","ok":"OK","cancel":"Cancel","close":"Close","preview":"Preview","resize":"Resize","generalTab":"General","advancedTab":"Advanced","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"Target","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Left to Right (LTR)","langDirRTL":"Right to Left (RTL)","styles":"Style","cssClasses":"Stylesheet Classes","width":"Width","height":"Height","align":"Alignment","alignLeft":"Left","alignRight":"Right","alignCenter":"Center","alignTop":"Top","alignMiddle":"Middle","alignBottom":"Bottom","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>"},"about":{"copy":"Copyright &copy; $1. All rights reserved.","dlgTitle":"About CKEditor","help":"Check $1 for help.","moreInfo":"For licensing information please visit our web site:","title":"About CKEditor","userGuide":"CKEditor User's Guide"},"basicstyles":{"bold":"Bold","italic":"Italic","strike":"Strike Through","subscript":"Subscript","superscript":"Superscript","underline":"Underline"},"blockquote":{"toolbar":"Block Quote"},"clipboard":{"copy":"Copy","copyError":"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).","cut":"Cut","cutError":"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).","paste":"Paste","pasteArea":"Paste Area","pasteMsg":"Please paste inside the following box using the keyboard (<strong>Ctrl/Cmd+V</strong>) and hit OK","securityMsg":"Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.","title":"Paste"},"contextmenu":{"options":"Context Menu Options"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"format":{"label":"Format","panelTitle":"Paragraph Format","tag_address":"Address","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatted"},"horizontalrule":{"toolbar":"Insert Horizontal Line"},"image":{"alertUrl":"Please type the image URL","alt":"Alternative Text","border":"Border","btnUpload":"Send it to the Server","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"HSpace","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"Image Info","linkTab":"Link","lockRatio":"Lock Ratio","menu":"Image Properties","resetSize":"Reset Size","title":"Image Properties","titleButton":"Image Button Properties","upload":"Upload","urlMissing":"Image source URL is missing.","vSpace":"VSpace","validateBorder":"Border must be a whole number.","validateHSpace":"HSpace must be a whole number.","validateVSpace":"VSpace must be a whole number."},"indent":{"indent":"Increase Indent","outdent":"Decrease Indent"},"fakeobjects":{"anchor":"Anchor","flash":"Flash Animation","hiddenfield":"Hidden Field","iframe":"IFrame","unknown":"Unknown Object"},"link":{"acccessKey":"Access Key","advanced":"Advanced","advisoryContentType":"Advisory Content Type","advisoryTitle":"Advisory Title","anchor":{"toolbar":"Anchor","menu":"Edit Anchor","title":"Anchor Properties","name":"Anchor Name","errorName":"Please type the anchor name","remove":"Remove Anchor"},"anchorId":"By Element Id","anchorName":"By Anchor Name","charset":"Linked Resource Charset","cssClasses":"Stylesheet Classes","emailAddress":"E-Mail Address","emailBody":"Message Body","emailSubject":"Message Subject","id":"Id","info":"Link Info","langCode":"Language Code","langDir":"Language Direction","langDirLTR":"Left to Right (LTR)","langDirRTL":"Right to Left (RTL)","menu":"Edit Link","name":"Name","noAnchors":"(No anchors available in the document)","noEmail":"Please type the e-mail address","noUrl":"Please type the link URL","other":"<other>","popupDependent":"Dependent (Netscape)","popupFeatures":"Popup Window Features","popupFullScreen":"Full Screen (IE)","popupLeft":"Left Position","popupLocationBar":"Location Bar","popupMenuBar":"Menu Bar","popupResizable":"Resizable","popupScrollBars":"Scroll Bars","popupStatusBar":"Status Bar","popupToolbar":"Toolbar","popupTop":"Top Position","rel":"Relationship","selectAnchor":"Select an Anchor","styles":"Style","tabIndex":"Tab Index","target":"Target","targetFrame":"<frame>","targetFrameName":"Target Frame Name","targetPopup":"<popup window>","targetPopupName":"Popup Window Name","title":"Link","toAnchor":"Link to anchor in the text","toEmail":"E-mail","toUrl":"URL","toolbar":"Link","type":"Link Type","unlink":"Unlink","upload":"Upload"},"list":{"bulletedlist":"Insert/Remove Bulleted List","numberedlist":"Insert/Remove Numbered List"},"magicline":{"title":"Insert paragraph here"},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"pastetext":{"button":"Paste as plain text","title":"Paste as Plain Text"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Paste from Word","toolbar":"Paste from Word"},"removeformat":{"toolbar":"Remove Format"},"sourcearea":{"toolbar":"Source"},"specialchar":{"options":"Special Character Options","title":"Select Special Character","toolbar":"Insert Special Character"},"scayt":{"about":"About SCAYT","aboutTab":"About","addWord":"Add Word","allCaps":"Ignore All-Caps Words","dic_create":"Create","dic_delete":"Delete","dic_field_name":"Dictionary name","dic_info":"Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.","dic_rename":"Rename","dic_restore":"Restore","dictionariesTab":"Dictionaries","disable":"Disable SCAYT","emptyDic":"Dictionary name should not be empty.","enable":"Enable SCAYT","ignore":"Ignore","ignoreAll":"Ignore All","ignoreDomainNames":"Ignore Domain Names","langs":"Languages","languagesTab":"Languages","mixedCase":"Ignore Words with Mixed Case","mixedWithDigits":"Ignore Words with Numbers","moreSuggestions":"More suggestions","opera_title":"Not supported by Opera","options":"Options","optionsTab":"Options","title":"Spell Check As You Type","toggle":"Toggle SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"Styles","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"table":{"border":"Border size","caption":"Caption","cell":{"menu":"Cell","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"Delete Cells","merge":"Merge Cells","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Cell padding","cellSpace":"Cell spacing","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Delete Columns"},"columns":"Columns","deleteTable":"Delete Table","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Table Properties","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Delete Rows"},"rows":"Rows","summary":"Summary","title":"Table Properties","toolbar":"Table","widthPc":"percent","widthPx":"pixels","widthUnit":"width unit"},"undo":{"redo":"Redo","undo":"Undo"},"wsc":{"btnIgnore":"Ignore","btnIgnoreAll":"Ignore All","btnReplace":"Replace","btnReplaceAll":"Replace All","btnUndo":"Undo","changeTo":"Change to","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Spell checker not installed. Do you want to download it now?","manyChanges":"Spell check complete: %1 words changed","noChanges":"Spell check complete: No words changed","noMispell":"Spell check complete: No misspellings found","noSuggestions":"- No suggestions -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Not in dictionary","oneChange":"Spell check complete: One word changed","progress":"Spell check in progress...","title":"Spell Check","toolbar":"Check Spelling"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/eo.js b/assets/plugins/ckeditor/lang/eo.js deleted file mode 100644 index 6d7e2579..00000000 --- a/assets/plugins/ckeditor/lang/eo.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['eo']={"editor":"Redaktilo por Riĉiga Teksto","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Premu ALT 0 por helpilo","browseServer":"Foliumi en la Servilo","url":"URL","protocol":"Protokolo","upload":"Alŝuti","uploadSubmit":"Sendu al Servilo","image":"Bildo","flash":"Flaŝo","form":"Formularo","checkbox":"Markobutono","radio":"Radiobutono","textField":"Teksta kampo","textarea":"Teksta Areo","hiddenField":"Kaŝita Kampo","button":"Butono","select":"Elekta Kampo","imageButton":"Bildbutono","notSet":"<Defaŭlta>","id":"Id","name":"Nomo","langDir":"Skribdirekto","langDirLtr":"De maldekstro dekstren (LTR)","langDirRtl":"De dekstro maldekstren (RTL)","langCode":"Lingva Kodo","longDescr":"URL de Longa Priskribo","cssClass":"Klasoj de Stilfolioj","advisoryTitle":"Priskriba Titolo","cssStyle":"Stilo","ok":"Akcepti","cancel":"Rezigni","close":"Fermi","preview":"Vidigi Aspekton","resize":"Movigi por ŝanĝi la grandon","generalTab":"Ĝenerala","advancedTab":"Speciala","validateNumberFailed":"Tiu valoro ne estas nombro.","confirmNewPage":"La neregistritaj ŝanĝoj estas perdotaj. Ĉu vi certas, ke vi volas ŝargi novan paĝon?","confirmCancel":"Iuj opcioj esta ŝanĝitaj. Ĉu vi certas, ke vi volas fermi la dialogon?","options":"Opcioj","target":"Celo","targetNew":"Nova Fenestro (_blank)","targetTop":"Supra Fenestro (_top)","targetSelf":"Sama Fenestro (_self)","targetParent":"Patra Fenestro (_parent)","langDirLTR":"De maldekstro dekstren (LTR)","langDirRTL":"De dekstro maldekstren (RTL)","styles":"Stilo","cssClasses":"Stilfoliaj Klasoj","width":"Larĝo","height":"Alto","align":"Ĝisrandigo","alignLeft":"Maldekstre","alignRight":"Dekstre","alignCenter":"Centre","alignTop":"Supre","alignMiddle":"Centre","alignBottom":"Malsupre","invalidValue":"Nevalida Valoro","invalidHeight":"Alto devas esti nombro.","invalidWidth":"Larĝo devas esti nombro.","invalidCssLength":"La valoro indikita por la \"%1\" kampo devas esti pozitiva nombro kun aŭ sen valida CSSmezurunuo (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"La valoro indikita por la \"%1\" kampo devas esti pozitiva nombro kun aŭ sen valida HTMLmezurunuo (px or %).","invalidInlineStyle":"La valoro indikita por la enlinia stilo devas konsisti el unu aŭ pluraj elementoj kun la formato de \"nomo : valoro\", apartigitaj per punktokomoj.","cssLengthTooltip":"Entajpu nombron por rastrumera valoro aŭ nombron kun valida CSSunuo (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, nehavebla</span>"},"about":{"copy":"Copyright &copy; $1. Ĉiuj rajtoj rezervitaj.","dlgTitle":"Pri CKEditor","help":"Kontroli $1 por helpo.","moreInfo":"Por informoj pri licenco, bonvolu viziti nian retpaĝaron:","title":"Pri CKEditor","userGuide":"CKEditor Uzindikoj"},"basicstyles":{"bold":"Grasa","italic":"Kursiva","strike":"Trastreko","subscript":"Suba indico","superscript":"Supra indico","underline":"Substreko"},"blockquote":{"toolbar":"Citaĵo"},"clipboard":{"copy":"Kopii","copyError":"La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras kopiajn operaciojn. Bonvolu uzi la klavaron por tio (Ctrl/Cmd-C).","cut":"Eltondi","cutError":"La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras eltondajn operaciojn. Bonvolu uzi la klavaron por tio (Ctrl/Cmd-X).","paste":"Interglui","pasteArea":"Intergluoareo","pasteMsg":"Bonvolu glui la tekston en la jenan areon per uzado de la klavaro (<strong>Ctrl/Cmd+V</strong>) kaj premu OK","securityMsg":"Pro la sekurecagordo de via TTT-legilo, la redaktilo ne povas rekte atingi viajn datenojn en la poŝo. Bonvolu denove interglui la datenojn en tiun fenestron.","title":"Interglui"},"contextmenu":{"options":"Opcioj de Kunteksta Menuo"},"toolbar":{"toolbarCollapse":"Faldi la ilbreton","toolbarExpand":"Malfaldi la ilbreton","toolbarGroups":{"document":"Dokumento","clipboard":"Poŝo/Malfari","editing":"Redaktado","forms":"Formularoj","basicstyles":"Bazaj stiloj","paragraph":"Paragrafo","links":"Ligiloj","insert":"Enmeti","styles":"Stiloj","colors":"Koloroj","tools":"Iloj"},"toolbars":"Ilobretoj de la redaktilo"},"elementspath":{"eleLabel":"Vojo al Elementoj","eleTitle":"%1 elementoj"},"format":{"label":"Formato","panelTitle":"ParagrafFormato","tag_address":"Adreso","tag_div":"Normala (DIV)","tag_h1":"Titolo 1","tag_h2":"Titolo 2","tag_h3":"Titolo 3","tag_h4":"Titolo 4","tag_h5":"Titolo 5","tag_h6":"Titolo 6","tag_p":"Normala","tag_pre":"Formatita"},"horizontalrule":{"toolbar":"Enmeti Horizontalan Linion"},"image":{"alertUrl":"Bonvolu tajpi la retadreson de la bildo","alt":"Anstataŭiga Teksto","border":"Bordero","btnUpload":"Sendu al Servilo","button2Img":"Ĉu vi volas transformi la selektitan bildbutonon en simplan bildon?","hSpace":"Horizontala Spaco","img2Button":"Ĉu vi volas transformi la selektitan bildon en bildbutonon?","infoTab":"Informoj pri Bildo","linkTab":"Ligilo","lockRatio":"Konservi Proporcion","menu":"Atributoj de Bildo","resetSize":"Origina Grando","title":"Atributoj de Bildo","titleButton":"Bildbutonaj Atributoj","upload":"Alŝuti","urlMissing":"La fontretadreso de la bildo mankas.","vSpace":"Vertikala Spaco","validateBorder":"La bordero devas esti entjera nombro.","validateHSpace":"La horizontala spaco devas esti entjera nombro.","validateVSpace":"La vertikala spaco devas esti entjera nombro."},"indent":{"indent":"Pligrandigi Krommarĝenon","outdent":"Malpligrandigi Krommarĝenon"},"fakeobjects":{"anchor":"Ankro","flash":"FlaŝAnimacio","hiddenfield":"Kaŝita kampo","iframe":"Enlinia Kadro (IFrame)","unknown":"Nekonata objekto"},"link":{"acccessKey":"Fulmoklavo","advanced":"Speciala","advisoryContentType":"Enhavotipo","advisoryTitle":"Priskriba Titolo","anchor":{"toolbar":"Ankro","menu":"Enmeti/Ŝanĝi Ankron","title":"Ankraj Atributoj","name":"Ankra Nomo","errorName":"Bv entajpi la ankran nomon","remove":"Forigi Ankron"},"anchorId":"Per Elementidentigilo","anchorName":"Per Ankronomo","charset":"Signaro de la Ligita Rimedo","cssClasses":"Klasoj de Stilfolioj","emailAddress":"Retpoŝto","emailBody":"Mesaĝa korpo","emailSubject":"Mesaĝa Temo","id":"Id","info":"Informoj pri la Ligilo","langCode":"Lingva Kodo","langDir":"Skribdirekto","langDirLTR":"De maldekstro dekstren (LTR)","langDirRTL":"De dekstro maldekstren (RTL)","menu":"Ŝanĝi Ligilon","name":"Nomo","noAnchors":"<Ne disponeblas ankroj en la dokumento>","noEmail":"Bonvolu entajpi la retpoŝtadreson","noUrl":"Bonvolu entajpi la URL-on","other":"<alia>","popupDependent":"Dependa (Netscape)","popupFeatures":"Atributoj de la Ŝprucfenestro","popupFullScreen":"Tutekrane (IE)","popupLeft":"Maldekstra Pozicio","popupLocationBar":"Adresobreto","popupMenuBar":"Menubreto","popupResizable":"Dimensiŝanĝebla","popupScrollBars":"Rulumskaloj","popupStatusBar":"Statobreto","popupToolbar":"Ilobreto","popupTop":"Supra Pozicio","rel":"Rilato","selectAnchor":"Elekti Ankron","styles":"Stilo","tabIndex":"Taba Indekso","target":"Celo","targetFrame":"<kadro>","targetFrameName":"Nomo de CelKadro","targetPopup":"<ŝprucfenestro>","targetPopupName":"Nomo de Ŝprucfenestro","title":"Ligilo","toAnchor":"Ankri en tiu ĉi paĝo","toEmail":"Retpoŝto","toUrl":"URL","toolbar":"Enmeti/Ŝanĝi Ligilon","type":"Tipo de Ligilo","unlink":"Forigi Ligilon","upload":"Alŝuti"},"list":{"bulletedlist":"Bula Listo","numberedlist":"Numera Listo"},"magicline":{"title":"Enmeti paragrafon ĉi-tien"},"maximize":{"maximize":"Pligrandigi","minimize":"Malgrandigi"},"pastetext":{"button":"Interglui kiel platan tekston","title":"Interglui kiel platan tekston"},"pastefromword":{"confirmCleanup":"La teksto, kiun vi volas interglui, ŝajnas esti kopiita el Word. Ĉu vi deziras purigi ĝin antaŭ intergluo?","error":"Ne eblis purigi la intergluitajn datenojn pro interna eraro","title":"Interglui el Word","toolbar":"Interglui el Word"},"removeformat":{"toolbar":"Forigi Formaton"},"sourcearea":{"toolbar":"Fonto"},"specialchar":{"options":"Opcioj pri Specialaj Signoj","title":"Selekti Specialan Signon","toolbar":"Enmeti Specialan Signon"},"scayt":{"about":"Pri OKDVT","aboutTab":"Pri","addWord":"Almeti la vorton","allCaps":"Ignori la vortojn skribitajn nur per ĉefliteroj","dic_create":"Krei","dic_delete":"Forigi","dic_field_name":"Vortaronomo","dic_info":"Komence la vortaro de la uzanto estas konservita en kuketo. Tamen la kuketgrando estas limigita. Kiam la vortaro de la uzanto atingas grandon, kiu ne plu ebligas konservi ĝin en kuketo, tiam la vortaro povas esti konservata en niaj serviloj. Por konservi vian personan vortaron en nian servilon, vi devas indiki nomon por tiu vortaro. Se vi jam havas konservitan vortaron, bonvolu entajpi ties nomon kaj alklaki la restaŭrbutonon.","dic_rename":"Renomi","dic_restore":"Restaŭri","dictionariesTab":"Vortaroj","disable":"Malebligi OKDVT","emptyDic":"La vortaronomo ne devus esti malplena.","enable":"Ebligi OKDVT","ignore":"Ignori","ignoreAll":"Ignori ĉion","ignoreDomainNames":"Ignori domajnajn nomojn","langs":"Lingvoj","languagesTab":"Lingvoj","mixedCase":"Ignori vortojn kun miksa uskleco","mixedWithDigits":"Ignori vortojn kun nombroj","moreSuggestions":"Pli da sugestoj","opera_title":"Ne subportata de Opera","options":"Opcioj","optionsTab":"Opcioj","title":"OrtografiKontrolado Dum Vi Tajpas (OKDVT)","toggle":"Baskuligi OKDVT","noSuggestions":"No suggestion"},"stylescombo":{"label":"Stiloj","panelTitle":"Stiloj pri enpaĝigo","panelTitle1":"Stiloj de blokoj","panelTitle2":"Enliniaj Stiloj","panelTitle3":"Stiloj de objektoj"},"table":{"border":"Bordero","caption":"Tabeltitolo","cell":{"menu":"Ĉelo","insertBefore":"Enmeti Ĉelon Antaŭ","insertAfter":"Enmeti Ĉelon Post","deleteCell":"Forigi la Ĉelojn","merge":"Kunfandi la Ĉelojn","mergeRight":"Kunfandi dekstren","mergeDown":"Kunfandi malsupren ","splitHorizontal":"Horizontale dividi","splitVertical":"Vertikale dividi","title":"Ĉelatributoj","cellType":"Ĉeltipo","rowSpan":"Kunfando de linioj","colSpan":"Kunfando de kolumnoj","wordWrap":"Cezuro","hAlign":"Horizontala ĝisrandigo","vAlign":"Vertikala ĝisrandigo","alignBaseline":"Malsupro de la teksto","bgColor":"Fonkoloro","borderColor":"Borderkoloro","data":"Datenoj","header":"Supra paĝotitolo","yes":"Jes","no":"No","invalidWidth":"Ĉellarĝo devas esti nombro.","invalidHeight":"Ĉelalto devas esti nombro.","invalidRowSpan":"Kunfando de linioj devas esti entjera nombro.","invalidColSpan":"Kunfando de kolumnoj devas esti entjera nombro.","chooseColor":"Elektu"},"cellPad":"Interna Marĝeno de la ĉeloj","cellSpace":"Spaco inter la Ĉeloj","column":{"menu":"Kolumno","insertBefore":"Enmeti kolumnon antaŭ","insertAfter":"Enmeti kolumnon post","deleteColumn":"Forigi Kolumnojn"},"columns":"Kolumnoj","deleteTable":"Forigi Tabelon","headers":"Supraj Paĝotitoloj","headersBoth":"Ambaŭ","headersColumn":"Unua kolumno","headersNone":"Neniu","headersRow":"Unua linio","invalidBorder":"La bordergrando devas esti nombro.","invalidCellPadding":"La interna marĝeno en la ĉeloj devas esti pozitiva nombro.","invalidCellSpacing":"La spaco inter la ĉeloj devas esti pozitiva nombro.","invalidCols":"La nombro de la kolumnoj devas superi 0.","invalidHeight":"La tabelalto devas esti nombro.","invalidRows":"La nombro de la linioj devas superi 0.","invalidWidth":"La tabellarĝo devas esti nombro.","menu":"Atributoj de Tabelo","row":{"menu":"Linio","insertBefore":"Enmeti linion antaŭ","insertAfter":"Enmeti linion post","deleteRow":"Forigi Liniojn"},"rows":"Linioj","summary":"Resumo","title":"Atributoj de Tabelo","toolbar":"Tabelo","widthPc":"elcentoj","widthPx":"Rastrumeroj","widthUnit":"unuo de larĝo"},"undo":{"redo":"Refari","undo":"Malfari"},"wsc":{"btnIgnore":"Ignori","btnIgnoreAll":"Ignori Ĉion","btnReplace":"Anstataŭigi","btnReplaceAll":"Anstataŭigi Ĉion","btnUndo":"Malfari","changeTo":"Ŝanĝi al","errorLoading":"Eraro en la servoelŝuto el la gastiga komputiko: %s.","ieSpellDownload":"Ortografikontrolilo ne instalita. Ĉu vi volas elŝuti ĝin nun?","manyChanges":"Ortografikontrolado finita: %1 vortoj korektitaj","noChanges":"Ortografikontrolado finita: neniu vorto korektita","noMispell":"Ortografikontrolado finita: neniu eraro trovita","noSuggestions":"- Neniu propono -","notAvailable":"Bedaŭrinde la servo ne funkcias nuntempe.","notInDic":"Ne trovita en la vortaro","oneChange":"Ortografikontrolado finita: unu vorto korektita","progress":"La ortografio estas kontrolata...","title":"Kontroli la ortografion","toolbar":"Kontroli la ortografion"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/es.js b/assets/plugins/ckeditor/lang/es.js deleted file mode 100644 index 7a631e0f..00000000 --- a/assets/plugins/ckeditor/lang/es.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['es']={"editor":"Editor de texto enriquecido","editorPanel":"Panel del Editor de Texto Enriquecido","common":{"editorHelp":"Pulse ALT 0 para ayuda","browseServer":"Ver Servidor","url":"URL","protocol":"Protocolo","upload":"Cargar","uploadSubmit":"Enviar al Servidor","image":"Imagen","flash":"Flash","form":"Formulario","checkbox":"Casilla de Verificación","radio":"Botones de Radio","textField":"Campo de Texto","textarea":"Area de Texto","hiddenField":"Campo Oculto","button":"Botón","select":"Campo de Selección","imageButton":"Botón Imagen","notSet":"<No definido>","id":"Id","name":"Nombre","langDir":"Orientación","langDirLtr":"Izquierda a Derecha (LTR)","langDirRtl":"Derecha a Izquierda (RTL)","langCode":"Cód. de idioma","longDescr":"Descripción larga URL","cssClass":"Clases de hojas de estilo","advisoryTitle":"Título","cssStyle":"Estilo","ok":"Aceptar","cancel":"Cancelar","close":"Cerrar","preview":"Previsualización","resize":"Arrastre para redimensionar","generalTab":"General","advancedTab":"Avanzado","validateNumberFailed":"El valor no es un número.","confirmNewPage":"Cualquier cambio que no se haya guardado se perderá.\r\n¿Está seguro de querer crear una nueva página?","confirmCancel":"Algunas de las opciones se han cambiado.\r\n¿Está seguro de querer cerrar el diálogo?","options":"Opciones","target":"Destino","targetNew":"Nueva ventana (_blank)","targetTop":"Ventana principal (_top)","targetSelf":"Misma ventana (_self)","targetParent":"Ventana padre (_parent)","langDirLTR":"Izquierda a derecha (LTR)","langDirRTL":"Derecha a izquierda (RTL)","styles":"Estilos","cssClasses":"Clase de la hoja de estilos","width":"Anchura","height":"Altura","align":"Alineación","alignLeft":"Izquierda","alignRight":"Derecha","alignCenter":"Centrado","alignTop":"Tope","alignMiddle":"Centro","alignBottom":"Pie","invalidValue":"Valor no válido","invalidHeight":"Altura debe ser un número.","invalidWidth":"Anchura debe ser un número.","invalidCssLength":"El valor especificado para el campo \"%1\" debe ser un número positivo, incluyendo optionalmente una unidad de medida CSS válida (px, %, in, cm, mm, em, ex, pt, o pc).","invalidHtmlLength":"El valor especificado para el campo \"%1\" debe ser un número positivo, incluyendo optionalmente una unidad de medida HTML válida (px o %).","invalidInlineStyle":"El valor especificado para el estilo debe consistir en uno o más pares con el formato \"nombre: valor\", separados por punto y coma.","cssLengthTooltip":"Introduca un número para el valor en pixels o un número con una unidad de medida CSS válida (px, %, in, cm, mm, em, ex, pt, o pc).","unavailable":"%1<span class=\"cke_accessibility\">, no disponible</span>"},"about":{"copy":"Copyright &copy; $1. Todos los derechos reservados.","dlgTitle":"Acerca de CKEditor","help":"Lea la $1 para resolver sus dudas.","moreInfo":"Para información de licencia, por favor visite nuestro sitio web:","title":"Acerca de CKEditor","userGuide":"Guía de usuario de CKEditor"},"basicstyles":{"bold":"Negrita","italic":"Cursiva","strike":"Tachado","subscript":"Subíndice","superscript":"Superíndice","underline":"Subrayado"},"blockquote":{"toolbar":"Cita"},"clipboard":{"copy":"Copiar","copyError":"La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de copiado.\r\nPor favor use el teclado (Ctrl/Cmd+C).","cut":"Cortar","cutError":"La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de cortado.\r\nPor favor use el teclado (Ctrl/Cmd+X).","paste":"Pegar","pasteArea":"Zona de pegado","pasteMsg":"Por favor pegue dentro del cuadro utilizando el teclado (<STRONG>Ctrl/Cmd+V</STRONG>);\r\nluego presione <STRONG>Aceptar</STRONG>.","securityMsg":"Debido a la configuración de seguridad de su navegador, el editor no tiene acceso al portapapeles.\r\nEs necesario que lo pegue de nuevo en esta ventana.","title":"Pegar"},"contextmenu":{"options":"Opciones del menú contextual"},"toolbar":{"toolbarCollapse":"Contraer barra de herramientas","toolbarExpand":"Expandir barra de herramientas","toolbarGroups":{"document":"Documento","clipboard":"Portapapeles/Deshacer","editing":"Edición","forms":"Formularios","basicstyles":"Estilos básicos","paragraph":"Párrafo","links":"Enlaces","insert":"Insertar","styles":"Estilos","colors":"Colores","tools":"Herramientas"},"toolbars":"Barras de herramientas del editor"},"elementspath":{"eleLabel":"Ruta de los elementos","eleTitle":"%1 elemento"},"format":{"label":"Formato","panelTitle":"Formato","tag_address":"Dirección","tag_div":"Normal (DIV)","tag_h1":"Encabezado 1","tag_h2":"Encabezado 2","tag_h3":"Encabezado 3","tag_h4":"Encabezado 4","tag_h5":"Encabezado 5","tag_h6":"Encabezado 6","tag_p":"Normal","tag_pre":"Con formato"},"horizontalrule":{"toolbar":"Insertar Línea Horizontal"},"image":{"alertUrl":"Por favor escriba la URL de la imagen","alt":"Texto Alternativo","border":"Borde","btnUpload":"Enviar al Servidor","button2Img":"¿Desea convertir el botón de imagen en una simple imagen?","hSpace":"Esp.Horiz","img2Button":"¿Desea convertir la imagen en un botón de imagen?","infoTab":"Información de Imagen","linkTab":"Vínculo","lockRatio":"Proporcional","menu":"Propiedades de Imagen","resetSize":"Tamaño Original","title":"Propiedades de Imagen","titleButton":"Propiedades de Botón de Imagen","upload":"Cargar","urlMissing":"Debe indicar la URL de la imagen.","vSpace":"Esp.Vert","validateBorder":"El borde debe ser un número.","validateHSpace":"El espaciado horizontal debe ser un número.","validateVSpace":"El espaciado vertical debe ser un número."},"indent":{"indent":"Aumentar Sangría","outdent":"Disminuir Sangría"},"fakeobjects":{"anchor":"Ancla","flash":"Animación flash","hiddenfield":"Campo oculto","iframe":"IFrame","unknown":"Objeto desconocido"},"link":{"acccessKey":"Tecla de Acceso","advanced":"Avanzado","advisoryContentType":"Tipo de Contenido","advisoryTitle":"Título","anchor":{"toolbar":"Referencia","menu":"Propiedades de Referencia","title":"Propiedades de Referencia","name":"Nombre de la Referencia","errorName":"Por favor, complete el nombre de la Referencia","remove":"Quitar Referencia"},"anchorId":"Por ID de elemento","anchorName":"Por Nombre de Referencia","charset":"Fuente de caracteres vinculado","cssClasses":"Clases de hojas de estilo","emailAddress":"Dirección de E-Mail","emailBody":"Cuerpo del Mensaje","emailSubject":"Título del Mensaje","id":"Id","info":"Información de Vínculo","langCode":"Código idioma","langDir":"Orientación","langDirLTR":"Izquierda a Derecha (LTR)","langDirRTL":"Derecha a Izquierda (RTL)","menu":"Editar Vínculo","name":"Nombre","noAnchors":"(No hay referencias disponibles en el documento)","noEmail":"Por favor escriba la dirección de e-mail","noUrl":"Por favor escriba el vínculo URL","other":"<otro>","popupDependent":"Dependiente (Netscape)","popupFeatures":"Características de Ventana Emergente","popupFullScreen":"Pantalla Completa (IE)","popupLeft":"Posición Izquierda","popupLocationBar":"Barra de ubicación","popupMenuBar":"Barra de Menú","popupResizable":"Redimensionable","popupScrollBars":"Barras de desplazamiento","popupStatusBar":"Barra de Estado","popupToolbar":"Barra de Herramientas","popupTop":"Posición Derecha","rel":"Relación","selectAnchor":"Seleccionar una referencia","styles":"Estilo","tabIndex":"Indice de tabulación","target":"Destino","targetFrame":"<marco>","targetFrameName":"Nombre del Marco Destino","targetPopup":"<ventana emergente>","targetPopupName":"Nombre de Ventana Emergente","title":"Vínculo","toAnchor":"Referencia en esta página","toEmail":"E-Mail","toUrl":"URL","toolbar":"Insertar/Editar Vínculo","type":"Tipo de vínculo","unlink":"Eliminar Vínculo","upload":"Cargar"},"list":{"bulletedlist":"Viñetas","numberedlist":"Numeración"},"magicline":{"title":"Insertar párrafo aquí"},"maximize":{"maximize":"Maximizar","minimize":"Minimizar"},"pastetext":{"button":"Pegar como Texto Plano","title":"Pegar como Texto Plano"},"pastefromword":{"confirmCleanup":"El texto que desea parece provenir de Word.\r\n¿Desea depurarlo antes de pegarlo?","error":"No ha sido posible limpiar los datos debido a un error interno","title":"Pegar desde Word","toolbar":"Pegar desde Word"},"removeformat":{"toolbar":"Eliminar Formato"},"sourcearea":{"toolbar":"Fuente HTML"},"specialchar":{"options":"Opciones de caracteres especiales","title":"Seleccione un caracter especial","toolbar":"Insertar Caracter Especial"},"scayt":{"about":"Acerca de Corrector","aboutTab":"Acerca de","addWord":"Añadir palabra","allCaps":"Omitir palabras en MAYÚSCULAS","dic_create":"Crear","dic_delete":"Borrar","dic_field_name":"Nombre del diccionario","dic_info":"Inicialmente el Diccionario de usuario se guarda en una Cookie. Sin embargo, las cookies están limitadas en tamaño. Cuando el diccionario crece a un punto en el que no se puede guardar en una Cookie, el diccionario puede ser almacenado en nuestro servidor. Para almacenar su diccionario personalizado en nuestro servidor debe especificar un nombre para su diccionario. Si ya ha guardado un diccionaro, por favor, escriba su nombre y pulse el botón Recuperar","dic_rename":"Renombrar","dic_restore":"Recuperar","dictionariesTab":"Diccionarios","disable":"Desactivar Corrector","emptyDic":"El nombre del diccionario no puede estar en blanco.","enable":"Activar Corrector","ignore":"Ignorar","ignoreAll":"Ignorar Todas","ignoreDomainNames":"Omitir nombres de dominio","langs":"Idiomas","languagesTab":"Idiomas","mixedCase":"Ignorar palabras con combinación de mayúsculas y minúsculas","mixedWithDigits":"Omitir palabras con números","moreSuggestions":"Más sugerencias","opera_title":"No soportado en Opera","options":"Opciones","optionsTab":"Opciones","title":"Comprobar Ortografía Mientras Escribe","toggle":"Cambiar Corrector","noSuggestions":"No suggestion"},"stylescombo":{"label":"Estilo","panelTitle":"Estilos para formatear","panelTitle1":"Estilos de párrafo","panelTitle2":"Estilos de carácter","panelTitle3":"Estilos de objeto"},"table":{"border":"Tamaño de Borde","caption":"Título","cell":{"menu":"Celda","insertBefore":"Insertar celda a la izquierda","insertAfter":"Insertar celda a la derecha","deleteCell":"Eliminar Celdas","merge":"Combinar Celdas","mergeRight":"Combinar a la derecha","mergeDown":"Combinar hacia abajo","splitHorizontal":"Dividir la celda horizontalmente","splitVertical":"Dividir la celda verticalmente","title":"Propiedades de celda","cellType":"Tipo de Celda","rowSpan":"Expandir filas","colSpan":"Expandir columnas","wordWrap":"Ajustar al contenido","hAlign":"Alineación Horizontal","vAlign":"Alineación Vertical","alignBaseline":"Linea de base","bgColor":"Color de fondo","borderColor":"Color de borde","data":"Datos","header":"Encabezado","yes":"Sí","no":"No","invalidWidth":"La anchura de celda debe ser un número.","invalidHeight":"La altura de celda debe ser un número.","invalidRowSpan":"La expansión de filas debe ser un número entero.","invalidColSpan":"La expansión de columnas debe ser un número entero.","chooseColor":"Elegir"},"cellPad":"Esp. interior","cellSpace":"Esp. e/celdas","column":{"menu":"Columna","insertBefore":"Insertar columna a la izquierda","insertAfter":"Insertar columna a la derecha","deleteColumn":"Eliminar Columnas"},"columns":"Columnas","deleteTable":"Eliminar Tabla","headers":"Encabezados","headersBoth":"Ambas","headersColumn":"Primera columna","headersNone":"Ninguno","headersRow":"Primera fila","invalidBorder":"El tamaño del borde debe ser un número.","invalidCellPadding":"El espaciado interior debe ser un número.","invalidCellSpacing":"El espaciado entre celdas debe ser un número.","invalidCols":"El número de columnas debe ser un número mayor que 0.","invalidHeight":"La altura de tabla debe ser un número.","invalidRows":"El número de filas debe ser un número mayor que 0.","invalidWidth":"La anchura de tabla debe ser un número.","menu":"Propiedades de Tabla","row":{"menu":"Fila","insertBefore":"Insertar fila en la parte superior","insertAfter":"Insertar fila en la parte inferior","deleteRow":"Eliminar Filas"},"rows":"Filas","summary":"Síntesis","title":"Propiedades de Tabla","toolbar":"Tabla","widthPc":"porcentaje","widthPx":"pixeles","widthUnit":"unidad de la anchura"},"undo":{"redo":"Rehacer","undo":"Deshacer"},"wsc":{"btnIgnore":"Ignorar","btnIgnoreAll":"Ignorar Todo","btnReplace":"Reemplazar","btnReplaceAll":"Reemplazar Todo","btnUndo":"Deshacer","changeTo":"Cambiar a","errorLoading":"Error cargando la aplicación del servidor: %s.","ieSpellDownload":"Módulo de Control de Ortografía no instalado.\r\n¿Desea descargarlo ahora?","manyChanges":"Control finalizado: se ha cambiado %1 palabras","noChanges":"Control finalizado: no se ha cambiado ninguna palabra","noMispell":"Control finalizado: no se encontraron errores","noSuggestions":"- No hay sugerencias -","notAvailable":"Lo sentimos pero el servicio no está disponible.","notInDic":"No se encuentra en el Diccionario","oneChange":"Control finalizado: se ha cambiado una palabra","progress":"Control de Ortografía en progreso...","title":"Comprobar ortografía","toolbar":"Ortografía"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/et.js b/assets/plugins/ckeditor/lang/et.js deleted file mode 100644 index 38df2ad0..00000000 --- a/assets/plugins/ckeditor/lang/et.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['et']={"editor":"Rikkalik tekstiredaktor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Abi saamiseks vajuta ALT 0","browseServer":"Serveri sirvimine","url":"URL","protocol":"Protokoll","upload":"Laadi üles","uploadSubmit":"Saada serverisse","image":"Pilt","flash":"Flash","form":"Vorm","checkbox":"Märkeruut","radio":"Raadionupp","textField":"Tekstilahter","textarea":"Tekstiala","hiddenField":"Varjatud lahter","button":"Nupp","select":"Valiklahter","imageButton":"Piltnupp","notSet":"<määramata>","id":"ID","name":"Nimi","langDir":"Keele suund","langDirLtr":"Vasakult paremale (LTR)","langDirRtl":"Paremalt vasakule (RTL)","langCode":"Keele kood","longDescr":"Pikk kirjeldus URL","cssClass":"Stiilistiku klassid","advisoryTitle":"Soovituslik pealkiri","cssStyle":"Laad","ok":"OK","cancel":"Loobu","close":"Sulge","preview":"Eelvaade","resize":"Suuruse muutmiseks lohista","generalTab":"Üldine","advancedTab":"Täpsemalt","validateNumberFailed":"See väärtus pole number.","confirmNewPage":"Kõik salvestamata muudatused lähevad kaotsi. Kas oled kindel, et tahad laadida uue lehe?","confirmCancel":"Mõned valikud on muudetud. Kas oled kindel, et tahad dialoogi sulgeda?","options":"Valikud","target":"Sihtkoht","targetNew":"Uus aken (_blank)","targetTop":"Kõige ülemine aken (_top)","targetSelf":"Sama aken (_self)","targetParent":"Vanemaken (_parent)","langDirLTR":"Vasakult paremale (LTR)","langDirRTL":"Paremalt vasakule (RTL)","styles":"Stiili","cssClasses":"Stiililehe klassid","width":"Laius","height":"Kõrgus","align":"Joondus","alignLeft":"Vasak","alignRight":"Paremale","alignCenter":"Kesk","alignTop":"Üles","alignMiddle":"Keskele","alignBottom":"Alla","invalidValue":"Vigane väärtus.","invalidHeight":"Kõrgus peab olema number.","invalidWidth":"Laius peab olema number.","invalidCssLength":"\"%1\" välja jaoks määratud väärtus peab olema positiivne täisarv CSS ühikuga (px, %, in, cm, mm, em, ex, pt või pc) või ilma.","invalidHtmlLength":"\"%1\" välja jaoks määratud väärtus peab olema positiivne täisarv HTML ühikuga (px või %) või ilma.","invalidInlineStyle":"Reasisese stiili määrangud peavad koosnema paarisväärtustest (tuples), mis on semikoolonitega eraldatult järgnevas vormingus: \"nimi : väärtus\".","cssLengthTooltip":"Sisesta väärtus pikslites või number koos sobiva CSS-i ühikuga (px, %, in, cm, mm, em, ex, pt või pc).","unavailable":"%1<span class=\"cke_accessibility\">, pole saadaval</span>"},"about":{"copy":"Copyright &copy; $1. Kõik õigused kaitstud.","dlgTitle":"CKEditorist","help":"Abi jaoks vaata $1.","moreInfo":"Litsentsi andmed leiab meie veebilehelt:","title":"CKEditorist","userGuide":"CKEditori kasutusjuhendit"},"basicstyles":{"bold":"Paks","italic":"Kursiiv","strike":"Läbijoonitud","subscript":"Allindeks","superscript":"Ülaindeks","underline":"Allajoonitud"},"blockquote":{"toolbar":"Blokktsitaat"},"clipboard":{"copy":"Kopeeri","copyError":"Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt kopeerida. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl/Cmd+C).","cut":"Lõika","cutError":"Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt lõigata. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl/Cmd+X).","paste":"Aseta","pasteArea":"Asetamise ala","pasteMsg":"Palun aseta tekst järgnevasse kasti kasutades klaviatuuri klahvikombinatsiooni (<STRONG>Ctrl/Cmd+V</STRONG>) ja vajuta seejärel <STRONG>OK</STRONG>.","securityMsg":"Sinu veebisirvija turvaseadete tõttu ei oma redaktor otsest ligipääsu lõikelaua andmetele. Sa pead asetama need uuesti siia aknasse.","title":"Asetamine"},"contextmenu":{"options":"Kontekstimenüü valikud"},"toolbar":{"toolbarCollapse":"Tööriistariba peitmine","toolbarExpand":"Tööriistariba näitamine","toolbarGroups":{"document":"Dokument","clipboard":"Lõikelaud/tagasivõtmine","editing":"Muutmine","forms":"Vormid","basicstyles":"Põhistiilid","paragraph":"Lõik","links":"Lingid","insert":"Sisesta","styles":"Stiilid","colors":"Värvid","tools":"Tööriistad"},"toolbars":"Redaktori tööriistaribad"},"elementspath":{"eleLabel":"Elementide asukoht","eleTitle":"%1 element"},"format":{"label":"Vorming","panelTitle":"Vorming","tag_address":"Aadress","tag_div":"Tavaline (DIV)","tag_h1":"Pealkiri 1","tag_h2":"Pealkiri 2","tag_h3":"Pealkiri 3","tag_h4":"Pealkiri 4","tag_h5":"Pealkiri 5","tag_h6":"Pealkiri 6","tag_p":"Tavaline","tag_pre":"Vormindatud"},"horizontalrule":{"toolbar":"Horisontaaljoone sisestamine"},"image":{"alertUrl":"Palun kirjuta pildi URL","alt":"Alternatiivne tekst","border":"Joon","btnUpload":"Saada serverisse","button2Img":"Kas tahad teisendada valitud pildiga nupu tavaliseks pildiks?","hSpace":"H. vaheruum","img2Button":"Kas tahad teisendada valitud tavalise pildi pildiga nupuks?","infoTab":"Pildi info","linkTab":"Link","lockRatio":"Lukusta kuvasuhe","menu":"Pildi omadused","resetSize":"Lähtesta suurus","title":"Pildi omadused","titleButton":"Piltnupu omadused","upload":"Lae üles","urlMissing":"Pildi lähte-URL on puudu.","vSpace":"V. vaheruum","validateBorder":"Äärise laius peab olema täisarv.","validateHSpace":"Horisontaalne vaheruum peab olema täisarv.","validateVSpace":"Vertikaalne vaheruum peab olema täisarv."},"indent":{"indent":"Taande suurendamine","outdent":"Taande vähendamine"},"fakeobjects":{"anchor":"Ankur","flash":"Flashi animatsioon","hiddenfield":"Varjatud väli","iframe":"IFrame","unknown":"Tundmatu objekt"},"link":{"acccessKey":"Juurdepääsu võti","advanced":"Täpsemalt","advisoryContentType":"Juhendava sisu tüüp","advisoryTitle":"Juhendav tiitel","anchor":{"toolbar":"Ankru sisestamine/muutmine","menu":"Ankru omadused","title":"Ankru omadused","name":"Ankru nimi","errorName":"Palun sisesta ankru nimi","remove":"Eemalda ankur"},"anchorId":"Elemendi id järgi","anchorName":"Ankru nime järgi","charset":"Lingitud ressursi märgistik","cssClasses":"Stiilistiku klassid","emailAddress":"E-posti aadress","emailBody":"Sõnumi tekst","emailSubject":"Sõnumi teema","id":"ID","info":"Lingi info","langCode":"Keele suund","langDir":"Keele suund","langDirLTR":"Vasakult paremale (LTR)","langDirRTL":"Paremalt vasakule (RTL)","menu":"Muuda linki","name":"Nimi","noAnchors":"(Selles dokumendis pole ankruid)","noEmail":"Palun kirjuta e-posti aadress","noUrl":"Palun kirjuta lingi URL","other":"<muu>","popupDependent":"Sõltuv (Netscape)","popupFeatures":"Hüpikakna omadused","popupFullScreen":"Täisekraan (IE)","popupLeft":"Vasak asukoht","popupLocationBar":"Aadressiriba","popupMenuBar":"Menüüriba","popupResizable":"Suurust saab muuta","popupScrollBars":"Kerimisribad","popupStatusBar":"Olekuriba","popupToolbar":"Tööriistariba","popupTop":"Ülemine asukoht","rel":"Suhe","selectAnchor":"Vali ankur","styles":"Laad","tabIndex":"Tab indeks","target":"Sihtkoht","targetFrame":"<raam>","targetFrameName":"Sihtmärk raami nimi","targetPopup":"<hüpikaken>","targetPopupName":"Hüpikakna nimi","title":"Link","toAnchor":"Ankur sellel lehel","toEmail":"E-post","toUrl":"URL","toolbar":"Lingi lisamine/muutmine","type":"Lingi liik","unlink":"Lingi eemaldamine","upload":"Lae üles"},"list":{"bulletedlist":"Punktloend","numberedlist":"Numberloend"},"magicline":{"title":"Sisesta siia lõigu tekst"},"maximize":{"maximize":"Maksimeerimine","minimize":"Minimeerimine"},"pastetext":{"button":"Asetamine tavalise tekstina","title":"Asetamine tavalise tekstina"},"pastefromword":{"confirmCleanup":"Tekst, mida tahad asetada näib pärinevat Wordist. Kas tahad selle enne asetamist puhastada?","error":"Asetatud andmete puhastamine ei olnud sisemise vea tõttu võimalik","title":"Asetamine Wordist","toolbar":"Asetamine Wordist"},"removeformat":{"toolbar":"Vormingu eemaldamine"},"sourcearea":{"toolbar":"Lähtekood"},"specialchar":{"options":"Erimärkide valikud","title":"Erimärgi valimine","toolbar":"Erimärgi sisestamine"},"scayt":{"about":"SCAYT-ist lähemalt","aboutTab":"Lähemalt","addWord":"Lisa sõna","allCaps":"Läbivate suurtähtedega sõnade eiramine","dic_create":"Loo","dic_delete":"Kustuta","dic_field_name":"Sõnaraamatu nimi","dic_info":"Alguses säilitatakse kasutaja sõnaraamatut küpsises. Küpsise suurus on piiratud. Pärast sõnaraamatu kasvamist nii suureks, et see küpsisesse ei mahu, võib sõnaraamatut hoida meie serveris. Oma isikliku sõnaraamatu hoidmiseks meie serveris pead andma sellele nime. Kui sa juba oled sõnaraamatu salvestanud, sisesta selle nimi ja klõpsa taastamise nupule.","dic_rename":"Nimeta ümber","dic_restore":"Taasta","dictionariesTab":"Sõnaraamatud","disable":"SCAYT keelatud","emptyDic":"Sõnaraamatu nimi ei tohi olla tühi.","enable":"SCAYT lubatud","ignore":"Eira","ignoreAll":"Eira kõiki","ignoreDomainNames":"Domeeninimede eiramine","langs":"Keeled","languagesTab":"Keeled","mixedCase":"Tavapäratu tõstuga sõnade eiramine","mixedWithDigits":"Numbreid sisaldavate sõnade eiramine","moreSuggestions":"Veel soovitusi","opera_title":"Operas pole toetatud","options":"Valikud","optionsTab":"Valikud","title":"Õigekirjakontroll kirjutamise ajal","toggle":"SCAYT sisse/välja lülitamine","noSuggestions":"No suggestion"},"stylescombo":{"label":"Stiil","panelTitle":"Vormindusstiilid","panelTitle1":"Blokkstiilid","panelTitle2":"Reasisesed stiilid","panelTitle3":"Objektistiilid"},"table":{"border":"Joone suurus","caption":"Tabeli tiitel","cell":{"menu":"Lahter","insertBefore":"Sisesta lahter enne","insertAfter":"Sisesta lahter peale","deleteCell":"Eemalda lahtrid","merge":"Ühenda lahtrid","mergeRight":"Ühenda paremale","mergeDown":"Ühenda alla","splitHorizontal":"Poolita lahter horisontaalselt","splitVertical":"Poolita lahter vertikaalselt","title":"Lahtri omadused","cellType":"Lahtri liik","rowSpan":"Ridade vahe","colSpan":"Tulpade vahe","wordWrap":"Sõnade murdmine","hAlign":"Horisontaalne joondus","vAlign":"Vertikaalne joondus","alignBaseline":"Baasjoon","bgColor":"Tausta värv","borderColor":"Äärise värv","data":"Andmed","header":"Päis","yes":"Jah","no":"Ei","invalidWidth":"Lahtri laius peab olema number.","invalidHeight":"Lahtri kõrgus peab olema number.","invalidRowSpan":"Ridade vahe peab olema täisarv.","invalidColSpan":"Tulpade vahe peab olema täisarv.","chooseColor":"Vali"},"cellPad":"Lahtri täidis","cellSpace":"Lahtri vahe","column":{"menu":"Veerg","insertBefore":"Sisesta veerg enne","insertAfter":"Sisesta veerg peale","deleteColumn":"Eemalda veerud"},"columns":"Veerud","deleteTable":"Kustuta tabel","headers":"Päised","headersBoth":"Mõlemad","headersColumn":"Esimene tulp","headersNone":"Puudub","headersRow":"Esimene rida","invalidBorder":"Äärise suurus peab olema number.","invalidCellPadding":"Lahtrite polsterdus (padding) peab olema positiivne arv.","invalidCellSpacing":"Lahtrite vahe peab olema positiivne arv.","invalidCols":"Tulpade arv peab olema nullist suurem.","invalidHeight":"Tabeli kõrgus peab olema number.","invalidRows":"Ridade arv peab olema nullist suurem.","invalidWidth":"Tabeli laius peab olema number.","menu":"Tabeli omadused","row":{"menu":"Rida","insertBefore":"Sisesta rida enne","insertAfter":"Sisesta rida peale","deleteRow":"Eemalda read"},"rows":"Read","summary":"Kokkuvõte","title":"Tabeli omadused","toolbar":"Tabel","widthPc":"protsenti","widthPx":"pikslit","widthUnit":"laiuse ühik"},"undo":{"redo":"Toimingu kordamine","undo":"Tagasivõtmine"},"wsc":{"btnIgnore":"Ignoreeri","btnIgnoreAll":"Ignoreeri kõiki","btnReplace":"Asenda","btnReplaceAll":"Asenda kõik","btnUndo":"Võta tagasi","changeTo":"Muuda","errorLoading":"Viga rakenduse teenushosti laadimisel: %s.","ieSpellDownload":"Õigekirja kontrollija ei ole paigaldatud. Soovid sa selle alla laadida?","manyChanges":"Õigekirja kontroll sooritatud: %1 sõna muudetud","noChanges":"Õigekirja kontroll sooritatud: ühtegi sõna ei muudetud","noMispell":"Õigekirja kontroll sooritatud: õigekirjuvigu ei leitud","noSuggestions":"- Soovitused puuduvad -","notAvailable":"Kahjuks ei ole teenus praegu saadaval.","notInDic":"Puudub sõnastikust","oneChange":"Õigekirja kontroll sooritatud: üks sõna muudeti","progress":"Toimub õigekirja kontroll...","title":"Õigekirjakontroll","toolbar":"Õigekirjakontroll"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/eu.js b/assets/plugins/ckeditor/lang/eu.js deleted file mode 100644 index 8b3f82c3..00000000 --- a/assets/plugins/ckeditor/lang/eu.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['eu']={"editor":"Testu Aberastuko Editorea","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"ALT 0 sakatu laguntza jasotzeko","browseServer":"Zerbitzaria arakatu","url":"URL","protocol":"Protokoloa","upload":"Gora kargatu","uploadSubmit":"Zerbitzarira bidali","image":"Irudia","flash":"Flasha","form":"Formularioa","checkbox":"Kontrol-laukia","radio":"Aukera-botoia","textField":"Testu Eremua","textarea":"Testu-area","hiddenField":"Ezkutuko Eremua","button":"Botoia","select":"Hautespen Eremua","imageButton":"Irudi Botoia","notSet":"<Ezarri gabe>","id":"Id","name":"Izena","langDir":"Hizkuntzaren Norabidea","langDirLtr":"Ezkerretik Eskumara(LTR)","langDirRtl":"Eskumatik Ezkerrera (RTL)","langCode":"Hizkuntza Kodea","longDescr":"URL Deskribapen Luzea","cssClass":"Estilo-orriko Klaseak","advisoryTitle":"Izenburua","cssStyle":"Estiloa","ok":"Ados","cancel":"Utzi","close":"Itxi","preview":"Aurrebista","resize":"Arrastatu tamaina aldatzeko","generalTab":"Orokorra","advancedTab":"Aurreratua","validateNumberFailed":"Balio hau ez da zenbaki bat.","confirmNewPage":"Eduki honetan gorde gabe dauden aldaketak galduko dira. Ziur zaude orri berri bat kargatu nahi duzula?","confirmCancel":"Aukera batzuk aldatu egin dira. Ziur zaude elkarrizketa-koadroa itxi nahi duzula?","options":"Aukerak","target":"Target (Helburua)","targetNew":"Leiho Berria (_blank)","targetTop":"Goieneko Leihoan (_top)","targetSelf":"Leiho Berdinean (_self)","targetParent":"Leiho Gurasoan (_parent)","langDirLTR":"Ezkerretik Eskumara(LTR)","langDirRTL":"Eskumatik Ezkerrera (RTL)","styles":"Estiloa","cssClasses":"Estilo-orriko Klaseak","width":"Zabalera","height":"Altuera","align":"Lerrokatu","alignLeft":"Ezkerrera","alignRight":"Eskuman","alignCenter":"Erdian","alignTop":"Goian","alignMiddle":"Erdian","alignBottom":"Behean","invalidValue":"Balio ezegokia.","invalidHeight":"Altuera zenbaki bat izan behar da.","invalidWidth":"Zabalera zenbaki bat izan behar da.","invalidCssLength":"\"%1\" eremurako zehaztutako balioa zenbaki positibo bat izan behar du, aukeran CSS neurri unitate batekin (px, %, in, cm, mm, em, ex, pt edo pc).","invalidHtmlLength":"\"%1\" eremurako zehaztutako balioa zenbaki positibo bat izan behar du, aukeran HTML neurri unitate batekin (px edo %).","invalidInlineStyle":"Lerroko estiloan zehazten dena tupla \"name : value\" formatuko eta puntu eta komaz bereiztutako tupla bat edo gehiago izan behar dira.","cssLengthTooltip":"Zenbakia bakarrik zehazten bada pixeletan egongo da. CSS neurri unitatea ere zehaztu ahal da (px, %, in, cm, mm, em, ex, pt, edo pc).","unavailable":"%1<span class=\"cke_accessibility\">, erabilezina</span>"},"about":{"copy":"Copyright &copy; $1. Eskubide guztiak erreserbaturik.","dlgTitle":"CKEditor(r)i buruz","help":"$1 aztertu laguntza jasotzeko.","moreInfo":"Lizentziari buruzko informazioa gure webgunean:","title":"CKEditor(r)i buruz","userGuide":"CKEditor User's Guide"},"basicstyles":{"bold":"Lodia","italic":"Etzana","strike":"Marratua","subscript":"Azpi-indize","superscript":"Goi-indize","underline":"Azpimarratu"},"blockquote":{"toolbar":"Aipamen blokea"},"clipboard":{"copy":"Kopiatu","copyError":"Zure web nabigatzailearen segurtasun ezarpenak testuak automatikoki kopiatzea ez dute baimentzen. Mesedez teklatua erabili ezazu (Ctrl/Cmd+C).","cut":"Ebaki","cutError":"Zure web nabigatzailearen segurtasun ezarpenak testuak automatikoki moztea ez dute baimentzen. Mesedez teklatua erabili ezazu (Ctrl/Cmd+X).","paste":"Itsatsi","pasteArea":"Itsasteko Area","pasteMsg":"Mesedez teklatua erabilita (<STRONG>Ctrl/Cmd+V</STRONG>) ondorego eremuan testua itsatsi eta <STRONG>OK</STRONG> sakatu.","securityMsg":"Nabigatzailearen segurtasun ezarpenak direla eta, editoreak ezin du arbela zuzenean erabili. Leiho honetan berriro itsatsi behar duzu.","title":"Itsatsi"},"contextmenu":{"options":"Testuingurko Menuaren Aukerak"},"toolbar":{"toolbarCollapse":"Tresna-barra Txikitu","toolbarExpand":"Tresna-barra Luzatu","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editorearen Tresna-barra"},"elementspath":{"eleLabel":"Elementu bidea","eleTitle":"%1 elementua"},"format":{"label":"Formatua","panelTitle":"Formatua","tag_address":"Helbidea","tag_div":"Paragrafoa (DIV)","tag_h1":"Izenburua 1","tag_h2":"Izenburua 2","tag_h3":"Izenburua 3","tag_h4":"Izenburua 4","tag_h5":"Izenburua 5","tag_h6":"Izenburua 6","tag_p":"Arrunta","tag_pre":"Formateatua"},"horizontalrule":{"toolbar":"Txertatu Marra Horizontala"},"image":{"alertUrl":"Mesedez Irudiaren URLa idatzi","alt":"Ordezko Testua","border":"Ertza","btnUpload":"Zerbitzarira bidalia","button2Img":"Aukeratutako irudi botoia, irudi normal batean eraldatu nahi duzu?","hSpace":"HSpace","img2Button":"Aukeratutako irudia, irudi botoi batean eraldatu nahi duzu?","infoTab":"Irudi informazioa","linkTab":"Esteka","lockRatio":"Erlazioa Blokeatu","menu":"Irudi Ezaugarriak","resetSize":"Tamaina Berrezarri","title":"Irudi Ezaugarriak","titleButton":"Irudi Botoiaren Ezaugarriak","upload":"Gora Kargatu","urlMissing":"Irudiaren iturburu URL-a falta da.","vSpace":"VSpace","validateBorder":"Ertza zenbaki oso bat izan behar da.","validateHSpace":"HSpace zenbaki oso bat izan behar da.","validateVSpace":"VSpace zenbaki oso bat izan behar da."},"indent":{"indent":"Handitu Koska","outdent":"Txikitu Koska"},"fakeobjects":{"anchor":"Aingura","flash":"Flash Animazioa","hiddenfield":"Ezkutuko Eremua","iframe":"IFrame","unknown":"Objektu ezezaguna"},"link":{"acccessKey":"Sarbide-gakoa","advanced":"Aurreratua","advisoryContentType":"Eduki Mota (Content Type)","advisoryTitle":"Izenburua","anchor":{"toolbar":"Aingura","menu":"Ainguraren Ezaugarriak","title":"Ainguraren Ezaugarriak","name":"Ainguraren Izena","errorName":"Idatzi ainguraren izena","remove":"Remove Anchor"},"anchorId":"Elementuaren ID-gatik","anchorName":"Aingura izenagatik","charset":"Estekatutako Karaktere Multzoa","cssClasses":"Estilo-orriko Klaseak","emailAddress":"ePosta Helbidea","emailBody":"Mezuaren Gorputza","emailSubject":"Mezuaren Gaia","id":"Id","info":"Estekaren Informazioa","langCode":"Hizkuntzaren Norabidea","langDir":"Hizkuntzaren Norabidea","langDirLTR":"Ezkerretik Eskumara(LTR)","langDirRTL":"Eskumatik Ezkerrera (RTL)","menu":"Aldatu Esteka","name":"Izena","noAnchors":"(Ez daude aingurak eskuragarri dokumentuan)","noEmail":"Mesedez ePosta helbidea idatzi","noUrl":"Mesedez URL esteka idatzi","other":"<bestelakoa>","popupDependent":"Menpekoa (Netscape)","popupFeatures":"Popup Leihoaren Ezaugarriak","popupFullScreen":"Pantaila Osoa (IE)","popupLeft":"Ezkerreko Posizioa","popupLocationBar":"Kokaleku Barra","popupMenuBar":"Menu Barra","popupResizable":"Tamaina Aldakorra","popupScrollBars":"Korritze Barrak","popupStatusBar":"Egoera Barra","popupToolbar":"Tresna Barra","popupTop":"Goiko Posizioa","rel":"Erlazioa","selectAnchor":"Aingura bat hautatu","styles":"Estiloa","tabIndex":"Tabulazio Indizea","target":"Target (Helburua)","targetFrame":"<marko>","targetFrameName":"Marko Helburuaren Izena","targetPopup":"<popup leihoa>","targetPopupName":"Popup Leihoaren Izena","title":"Esteka","toAnchor":"Aingura orrialde honetan","toEmail":"ePosta","toUrl":"URL","toolbar":"Txertatu/Editatu Esteka","type":"Esteka Mota","unlink":"Kendu Esteka","upload":"Gora kargatu"},"list":{"bulletedlist":"Buletdun Zerrenda","numberedlist":"Zenbakidun Zerrenda"},"magicline":{"title":"Txertatu paragrafoa hemen"},"maximize":{"maximize":"Maximizatu","minimize":"Minimizatu"},"pastetext":{"button":"Testu Arrunta bezala Itsatsi","title":"Testu Arrunta bezala Itsatsi"},"pastefromword":{"confirmCleanup":"Itsatsi nahi duzun testua Wordetik hartua dela dirudi. Itsatsi baino lehen garbitu nahi duzu?","error":"Barneko errore bat dela eta ezin izan da testua garbitu","title":"Itsatsi Word-etik","toolbar":"Itsatsi Word-etik"},"removeformat":{"toolbar":"Kendu Formatua"},"sourcearea":{"toolbar":"HTML Iturburua"},"specialchar":{"options":"Karaktere Berezien Aukerak","title":"Karaktere Berezia Aukeratu","toolbar":"Txertatu Karaktere Berezia"},"scayt":{"about":"SCAYTi buruz","aboutTab":"Honi buruz","addWord":"Hitza Gehitu","allCaps":"Ignore All-Caps Words","dic_create":"Create","dic_delete":"Delete","dic_field_name":"Dictionary name","dic_info":"Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.","dic_rename":"Rename","dic_restore":"Restore","dictionariesTab":"Hiztegiak","disable":"Desgaitu SCAYT","emptyDic":"Hiztegiaren izena ezin da hutsik egon.","enable":"Gaitu SCAYT","ignore":"Baztertu","ignoreAll":"Denak baztertu","ignoreDomainNames":"Ignore Domain Names","langs":"Hizkuntzak","languagesTab":"Hizkuntzak","mixedCase":"Ignore Words with Mixed Case","mixedWithDigits":"Ignore Words with Numbers","moreSuggestions":"Iradokizun gehiago","opera_title":"Not supported by Opera","options":"Aukerak","optionsTab":"Aukerak","title":"Ortografia Zuzenketa Idatzi Ahala (SCAYT)","toggle":"SCAYT aldatu","noSuggestions":"No suggestion"},"stylescombo":{"label":"Estiloa","panelTitle":"Formatu Estiloak","panelTitle1":"Bloke Estiloak","panelTitle2":"Inline Estiloak","panelTitle3":"Objektu Estiloak"},"table":{"border":"Ertzaren Zabalera","caption":"Epigrafea","cell":{"menu":"Gelaxka","insertBefore":"Txertatu Gelaxka Aurretik","insertAfter":"Txertatu Gelaxka Ostean","deleteCell":"Kendu Gelaxkak","merge":"Batu Gelaxkak","mergeRight":"Elkartu Eskumara","mergeDown":"Elkartu Behera","splitHorizontal":"Banatu Gelaxkak Horizontalki","splitVertical":"Banatu Gelaxkak Bertikalki","title":"Gelaxken Ezaugarriak","cellType":"Gelaxka Mota","rowSpan":"Hedatutako Lerroak","colSpan":"Hedatutako Zutabeak","wordWrap":"Itzulbira","hAlign":"Lerrokatze Horizontala","vAlign":"Lerrokatze Bertikala","alignBaseline":"Oinarri-lerroan","bgColor":"Fondoaren Kolorea","borderColor":"Ertzaren Kolorea","data":"Data","header":"Goiburua","yes":"Bai","no":"Ez","invalidWidth":"Gelaxkaren zabalera zenbaki bat izan behar da.","invalidHeight":"Gelaxkaren altuera zenbaki bat izan behar da.","invalidRowSpan":"Lerroen hedapena zenbaki osoa izan behar da.","invalidColSpan":"Zutabeen hedapena zenbaki osoa izan behar da.","chooseColor":"Choose"},"cellPad":"Gelaxken betegarria","cellSpace":"Gelaxka arteko tartea","column":{"menu":"Zutabea","insertBefore":"Txertatu Zutabea Aurretik","insertAfter":"Txertatu Zutabea Ostean","deleteColumn":"Ezabatu Zutabeak"},"columns":"Zutabeak","deleteTable":"Ezabatu Taula","headers":"Goiburuak","headersBoth":"Biak","headersColumn":"Lehen zutabea","headersNone":"Bat ere ez","headersRow":"Lehen lerroa","invalidBorder":"Ertzaren tamaina zenbaki bat izan behar da.","invalidCellPadding":"Gelaxken betegarria zenbaki bat izan behar da.","invalidCellSpacing":"Gelaxka arteko tartea zenbaki bat izan behar da.","invalidCols":"Zutabe kopurua 0 baino handiagoa den zenbakia izan behar da.","invalidHeight":"Taularen altuera zenbaki bat izan behar da.","invalidRows":"Lerro kopurua 0 baino handiagoa den zenbakia izan behar da.","invalidWidth":"Taularen zabalera zenbaki bat izan behar da.","menu":"Taularen Ezaugarriak","row":{"menu":"Lerroa","insertBefore":"Txertatu Lerroa Aurretik","insertAfter":"Txertatu Lerroa Ostean","deleteRow":"Ezabatu Lerroak"},"rows":"Lerroak","summary":"Laburpena","title":"Taularen Ezaugarriak","toolbar":"Taula","widthPc":"ehuneko","widthPx":"pixel","widthUnit":"zabalera unitatea"},"undo":{"redo":"Berregin","undo":"Desegin"},"wsc":{"btnIgnore":"Ezikusi","btnIgnoreAll":"Denak Ezikusi","btnReplace":"Ordezkatu","btnReplaceAll":"Denak Ordezkatu","btnUndo":"Desegin","changeTo":"Honekin ordezkatu","errorLoading":"Errorea gertatu da aplikazioa zerbitzaritik kargatzean: %s.","ieSpellDownload":"Zuzentzaile ortografikoa ez dago instalatuta. Deskargatu nahi duzu?","manyChanges":"Zuzenketa ortografikoa bukatuta: %1 hitz aldatu dira","noChanges":"Zuzenketa ortografikoa bukatuta: Ez da ezer aldatu","noMispell":"Zuzenketa ortografikoa bukatuta: Akatsik ez","noSuggestions":"- Iradokizunik ez -","notAvailable":"Barkatu baina momentu honetan zerbitzua ez dago erabilgarri.","notInDic":"Ez dago hiztegian","oneChange":"Zuzenketa ortografikoa bukatuta: Hitz bat aldatu da","progress":"Zuzenketa ortografikoa martxan...","title":"Ortografia zuzenketa","toolbar":"Ortografia"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/fa.js b/assets/plugins/ckeditor/lang/fa.js deleted file mode 100644 index 094e08fc..00000000 --- a/assets/plugins/ckeditor/lang/fa.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['fa']={"editor":"ویرایشگر متن کامل","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"کلید Alt+0 را برای راهنمایی بفشارید","browseServer":"فهرستنمایی سرور","url":"URL","protocol":"پروتکل","upload":"آپلود","uploadSubmit":"به سرور بفرست","image":"تصویر","flash":"فلش","form":"فرم","checkbox":"چکباکس","radio":"دکمهی رادیویی","textField":"فیلد متنی","textarea":"ناحیهٴ متنی","hiddenField":"فیلد پنهان","button":"دکمه","select":"فیلد انتخاب چند گزینهای","imageButton":"دکمهی تصویری","notSet":"<تعین نشده>","id":"شناسه","name":"نام","langDir":"جهتنمای زبان","langDirLtr":"چپ به راست","langDirRtl":"راست به چپ","langCode":"کد زبان","longDescr":"URL توصیف طولانی","cssClass":"کلاسهای شیوهنامه (Stylesheet)","advisoryTitle":"عنوان کمکی","cssStyle":"شیوه (style)","ok":"پذیرش","cancel":"انصراف","close":"بستن","preview":"پیشنمایش","resize":"تغییر اندازه","generalTab":"عمومی","advancedTab":"پیشرفته","validateNumberFailed":"این مقدار یک عدد نیست.","confirmNewPage":"هر تغییر ایجاد شدهی ذخیره نشده از بین خواهد رفت. آیا اطمینان دارید که قصد بارگیری صفحه جدیدی را دارید؟","confirmCancel":"برخی از گزینهها تغییر کردهاند. آیا واقعا قصد بستن این پنجره را دارید؟","options":"گزینهها","target":"نحوه باز کردن","targetNew":"پنجره جدید","targetTop":"بالاترین پنجره","targetSelf":"همان پنجره","targetParent":"پنجره والد","langDirLTR":"چپ به راست","langDirRTL":"راست به چپ","styles":"سبک","cssClasses":"کلاسهای شیوهنامه","width":"عرض","height":"طول","align":"چینش","alignLeft":"چپ","alignRight":"راست","alignCenter":"مرکز","alignTop":"بالا","alignMiddle":"وسط","alignBottom":"پائین","invalidValue":"مقدار نامعتبر.","invalidHeight":"ارتفاع باید یک عدد باشد.","invalidWidth":"عرض باید یک عدد باشد.","invalidCssLength":"عدد تعیین شده برای فیلد \"%1\" باید یک عدد مثبت با یا بدون یک واحد اندازه گیری CSS معتبر باشد (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"عدد تعیین شده برای فیلد \"%1\" باید یک عدد مثبت با یا بدون یک واحد اندازه گیری HTML معتبر باشد (px or %).","invalidInlineStyle":"عدد تعیین شده برای سبک درونخطی -Inline Style- باید دارای یک یا چند چندتایی با شکلی شبیه \"name : value\" که باید با یک \";\" از هم جدا شوند.","cssLengthTooltip":"یک عدد برای یک مقدار بر حسب پیکسل و یا یک عدد با یک واحد CSS معتبر وارد کنید (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">، غیر قابل دسترس</span>"},"about":{"copy":"حق نشر &copy; $1. کلیه حقوق محفوظ است.","dlgTitle":"درباره CKEditor","help":" برای راهنمایی $1 را بررسی کنید.","moreInfo":"برای کسب اطلاعات مجوز لطفا به وب سایت ما مراجعه کنید:","title":"درباره CKEditor","userGuide":"راهنمای کاربران CKEditor"},"basicstyles":{"bold":"درشت","italic":"خمیده","strike":"میانخط","subscript":"زیرنویس","superscript":"بالانویس","underline":"زیرخطدار"},"blockquote":{"toolbar":"بلوک نقل قول"},"clipboard":{"copy":"رونوشت","copyError":"تنظیمات امنیتی مرورگر شما اجازه نمیدهد که ویرایشگر به طور خودکار عملکردهای کپی کردن را انجام دهد. لطفا با دکمههای صفحه کلید این کار را انجام دهید (Ctrl/Cmd+C).","cut":"برش","cutError":"تنظیمات امنیتی مرورگر شما اجازه نمیدهد که ویرایشگر به طور خودکار عملکردهای برش را انجام دهد. لطفا با دکمههای صفحه کلید این کار را انجام دهید (Ctrl/Cmd+X).","paste":"چسباندن","pasteArea":"محل چسباندن","pasteMsg":"لطفا متن را با کلیدهای (<STRONG>Ctrl/Cmd+V</STRONG>) در این جعبهٴ متنی بچسبانید و <STRONG>پذیرش</STRONG> را بزنید.","securityMsg":"به خاطر تنظیمات امنیتی مرورگر شما، ویرایشگر نمیتواند دسترسی مستقیم به دادههای clipboard داشته باشد. شما باید دوباره آنرا در این پنجره بچسبانید.","title":"چسباندن"},"contextmenu":{"options":"گزینههای منوی زمینه"},"toolbar":{"toolbarCollapse":"بستن نوار ابزار","toolbarExpand":"بازکردن نوار ابزار","toolbarGroups":{"document":"سند","clipboard":"حافظه موقت/برگشت","editing":"در حال ویرایش","forms":"فرمها","basicstyles":"شیوههای پایه","paragraph":"بند","links":"پیوندها","insert":"ورود","styles":"شیوهها","colors":"رنگها","tools":"ابزارها"},"toolbars":"نوار ابزار"},"elementspath":{"eleLabel":"مسیر عناصر","eleTitle":"%1 عنصر"},"format":{"label":"فرمت","panelTitle":"فرمت","tag_address":"آدرس","tag_div":"بند","tag_h1":"سرنویس 1","tag_h2":"سرنویس 2","tag_h3":"سرنویس 3","tag_h4":"سرنویس 4","tag_h5":"سرنویس 5","tag_h6":"سرنویس 6","tag_p":"نرمال","tag_pre":"فرمت شده"},"horizontalrule":{"toolbar":"گنجاندن خط افقی"},"image":{"alertUrl":"لطفا URL تصویر را بنویسید","alt":"متن جایگزین","border":"لبه","btnUpload":"به سرور بفرست","button2Img":"آیا مایلید از یک تصویر ساده روی دکمه تصویری انتخاب شده استفاده کنید؟","hSpace":"فاصلهٴ افقی","img2Button":"آیا مایلید از یک دکمه تصویری روی تصویر انتخاب شده استفاده کنید؟","infoTab":"اطلاعات تصویر","linkTab":"پیوند","lockRatio":"قفل کردن نسبت","menu":"ویژگیهای تصویر","resetSize":"بازنشانی اندازه","title":"ویژگیهای تصویر","titleButton":"ویژگیهای دکمهٴ تصویری","upload":"انتقال به سرور","urlMissing":"آدرس URL اصلی تصویر یافت نشد.","vSpace":"فاصلهٴ عمودی","validateBorder":"مقدار خطوط باید یک عدد باشد.","validateHSpace":"مقدار فاصله گذاری افقی باید یک عدد باشد.","validateVSpace":"مقدار فاصله گذاری عمودی باید یک عدد باشد."},"indent":{"indent":"افزایش تورفتگی","outdent":"کاهش تورفتگی"},"fakeobjects":{"anchor":"لنگر","flash":"انیمشن فلش","hiddenfield":"فیلد پنهان","iframe":"IFrame","unknown":"شیء ناشناخته"},"link":{"acccessKey":"کلید دستیابی","advanced":"پیشرفته","advisoryContentType":"نوع محتوای کمکی","advisoryTitle":"عنوان کمکی","anchor":{"toolbar":"گنجاندن/ویرایش لنگر","menu":"ویژگیهای لنگر","title":"ویژگیهای لنگر","name":"نام لنگر","errorName":"لطفا نام لنگر را بنویسید","remove":"حذف لنگر"},"anchorId":"با شناسهٴ المان","anchorName":"با نام لنگر","charset":"نویسهگان منبع پیوند شده","cssClasses":"کلاسهای شیوهنامه(Stylesheet)","emailAddress":"نشانی پست الکترونیکی","emailBody":"متن پیام","emailSubject":"موضوع پیام","id":"شناسه","info":"اطلاعات پیوند","langCode":"جهتنمای زبان","langDir":"جهتنمای زبان","langDirLTR":"چپ به راست (LTR)","langDirRTL":"راست به چپ (RTL)","menu":"ویرایش پیوند","name":"نام","noAnchors":"(در این سند لنگری دردسترس نیست)","noEmail":"لطفا نشانی پست الکترونیکی را بنویسید","noUrl":"لطفا URL پیوند را بنویسید","other":"<سایر>","popupDependent":"وابسته (Netscape)","popupFeatures":"ویژگیهای پنجرهٴ پاپاپ","popupFullScreen":"تمام صفحه (IE)","popupLeft":"موقعیت چپ","popupLocationBar":"نوار موقعیت","popupMenuBar":"نوار منو","popupResizable":"قابل تغییر اندازه","popupScrollBars":"میلههای پیمایش","popupStatusBar":"نوار وضعیت","popupToolbar":"نوار ابزار","popupTop":"موقعیت بالا","rel":"وابستگی","selectAnchor":"یک لنگر برگزینید","styles":"شیوه (style)","tabIndex":"نمایهٴ دسترسی با برگه","target":"مقصد","targetFrame":"<فریم>","targetFrameName":"نام فریم مقصد","targetPopup":"<پنجرهٴ پاپاپ>","targetPopupName":"نام پنجرهٴ پاپاپ","title":"پیوند","toAnchor":"لنگر در همین صفحه","toEmail":"پست الکترونیکی","toUrl":"URL","toolbar":"گنجاندن/ویرایش پیوند","type":"نوع پیوند","unlink":"برداشتن پیوند","upload":"انتقال به سرور"},"list":{"bulletedlist":"فهرست نقطهای","numberedlist":"فهرست شمارهدار"},"magicline":{"title":"قرار دادن بند در اینجا"},"maximize":{"maximize":"بیشنه کردن","minimize":"کمینه کردن"},"pastetext":{"button":"چسباندن به عنوان متن ساده","title":"چسباندن به عنوان متن ساده"},"pastefromword":{"confirmCleanup":"متنی که میخواهید بچسبانید به نظر میرسد که از Word کپی شده است. آیا میخواهید قبل از چسباندن آن را پاکسازی کنید؟","error":"به دلیل بروز خطای داخلی امکان پاکسازی اطلاعات بازنشانی شده وجود ندارد.","title":"چسباندن از Word","toolbar":"چسباندن از Word"},"removeformat":{"toolbar":"برداشتن فرمت"},"sourcearea":{"toolbar":"منبع"},"specialchar":{"options":"گزینههای نویسههای ویژه","title":"گزینش نویسهی ویژه","toolbar":"گنجاندن نویسهی ویژه"},"scayt":{"about":"درباره SCAYT","aboutTab":"درباره","addWord":"افزودن Word","allCaps":"نادیده گرفتن همه کلاه-واژهها","dic_create":"ایجاد","dic_delete":"حذف","dic_field_name":"نام دیکشنری","dic_info":"در ابتدا دیکشنری کاربر در کوکی ذخیره میشود. با این حال، کوکیها در اندازه محدود شدهاند. وقتی که دیکشنری کاربری بزرگ میشود و به نقطهای که نمیتواند در کوکی ذخیره شود، پس از آن دیکشنری ممکن است بر روی سرور ما ذخیره شود. برای ذخیره دیکشنری شخصی شما بر روی سرور ما، باید یک نام برای دیکشنری خود مشخص نمایید. اگر شما قبلا یک دیکشنری روی سرور ما ذخیره کردهاید، لطفا نام آنرا درج و روی دکمه بازیافت کلیک نمایید.","dic_rename":"تغییر نام","dic_restore":"بازیافت","dictionariesTab":"دیکشنریها","disable":"غیرفعالسازی SCAYT","emptyDic":"نام دیکشنری نباید خالی باشد.","enable":"فعالسازی SCAYT","ignore":"عبور کردن","ignoreAll":"عبور کردن از همه","ignoreDomainNames":"عبور از نامهای دامنه","langs":"زبانها","languagesTab":"زبانها","mixedCase":"عبور از کلماتی مرکب از حروف بزرگ و کوچک","mixedWithDigits":"عبور از کلمات به همراه عدد","moreSuggestions":"پیشنهادهای بیشتر","opera_title":"توسط اپرا پشتیبانی نمیشود","options":"گزینهها","optionsTab":"گزینهها","title":"بررسی املای تایپ شما","toggle":"ضامن SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"سبک","panelTitle":"سبکهای قالببندی","panelTitle1":"سبکهای بلوک","panelTitle2":"سبکهای درونخطی","panelTitle3":"سبکهای شیء"},"table":{"border":"اندازهٴ لبه","caption":"عنوان","cell":{"menu":"سلول","insertBefore":"افزودن سلول قبل از","insertAfter":"افزودن سلول بعد از","deleteCell":"حذف سلولها","merge":"ادغام سلولها","mergeRight":"ادغام به راست","mergeDown":"ادغام به پایین","splitHorizontal":"جدا کردن افقی سلول","splitVertical":"جدا کردن عمودی سلول","title":"ویژگیهای سلول","cellType":"نوع سلول","rowSpan":"محدوده ردیفها","colSpan":"محدوده ستونها","wordWrap":"شکستن کلمه","hAlign":"چینش افقی","vAlign":"چینش عمودی","alignBaseline":"خط مبنا","bgColor":"رنگ زمینه","borderColor":"رنگ خطوط","data":"اطلاعات","header":"سرنویس","yes":"بله","no":"خیر","invalidWidth":"عرض سلول باید یک عدد باشد.","invalidHeight":"ارتفاع سلول باید عدد باشد.","invalidRowSpan":"مقدار محدوده ردیفها باید یک عدد باشد.","invalidColSpan":"مقدار محدوده ستونها باید یک عدد باشد.","chooseColor":"انتخاب"},"cellPad":"فاصلهٴ پرشده در سلول","cellSpace":"فاصلهٴ میان سلولها","column":{"menu":"ستون","insertBefore":"افزودن ستون قبل از","insertAfter":"افزودن ستون بعد از","deleteColumn":"حذف ستونها"},"columns":"ستونها","deleteTable":"پاک کردن جدول","headers":"سرنویسها","headersBoth":"هردو","headersColumn":"اولین ستون","headersNone":"هیچ","headersRow":"اولین ردیف","invalidBorder":"مقدار اندازه خطوط باید یک عدد باشد.","invalidCellPadding":"بالشتک سلول باید یک عدد باشد.","invalidCellSpacing":"مقدار فاصلهگذاری سلول باید یک عدد باشد.","invalidCols":"تعداد ستونها باید یک عدد بزرگتر از 0 باشد.","invalidHeight":"مقدار ارتفاع جدول باید یک عدد باشد.","invalidRows":"تعداد ردیفها باید یک عدد بزرگتر از 0 باشد.","invalidWidth":"مقدار پهنای جدول باید یک عدد باشد.","menu":"ویژگیهای جدول","row":{"menu":"سطر","insertBefore":"افزودن سطر قبل از","insertAfter":"افزودن سطر بعد از","deleteRow":"حذف سطرها"},"rows":"سطرها","summary":"خلاصه","title":"ویژگیهای جدول","toolbar":"جدول","widthPc":"درصد","widthPx":"پیکسل","widthUnit":"واحد پهنا"},"undo":{"redo":"بازچیدن","undo":"واچیدن"},"wsc":{"btnIgnore":"چشمپوشی","btnIgnoreAll":"چشمپوشی همه","btnReplace":"جایگزینی","btnReplaceAll":"جایگزینی همه","btnUndo":"واچینش","changeTo":"تغییر به","errorLoading":"خطا در بارگیری برنامه خدمات میزبان: %s.","ieSpellDownload":"بررسی کنندهٴ املا نصب نشده است. آیا میخواهید آن را هماکنون دریافت کنید؟","manyChanges":"بررسی املا انجام شد. %1 واژه تغییر یافت","noChanges":"بررسی املا انجام شد. هیچ واژهای تغییر نیافت","noMispell":"بررسی املا انجام شد. هیچ غلط املائی یافت نشد","noSuggestions":"- پیشنهادی نیست -","notAvailable":"با عرض پوزش خدمات الان در دسترس نیستند.","notInDic":"در واژه~نامه یافت نشد","oneChange":"بررسی املا انجام شد. یک واژه تغییر یافت","progress":"بررسی املا در حال انجام...","title":"بررسی املا","toolbar":"بررسی املا"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/fi.js b/assets/plugins/ckeditor/lang/fi.js deleted file mode 100644 index 821bf76d..00000000 --- a/assets/plugins/ckeditor/lang/fi.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['fi']={"editor":"Rikastekstieditori","editorPanel":"Rikastekstieditoripaneeli","common":{"editorHelp":"Paina ALT 0 nähdäksesi ohjeen","browseServer":"Selaa palvelinta","url":"Osoite","protocol":"Protokolla","upload":"Lisää tiedosto","uploadSubmit":"Lähetä palvelimelle","image":"Kuva","flash":"Flash-animaatio","form":"Lomake","checkbox":"Valintaruutu","radio":"Radiopainike","textField":"Tekstikenttä","textarea":"Tekstilaatikko","hiddenField":"Piilokenttä","button":"Painike","select":"Valintakenttä","imageButton":"Kuvapainike","notSet":"<ei asetettu>","id":"Tunniste","name":"Nimi","langDir":"Kielen suunta","langDirLtr":"Vasemmalta oikealle (LTR)","langDirRtl":"Oikealta vasemmalle (RTL)","langCode":"Kielikoodi","longDescr":"Pitkän kuvauksen URL","cssClass":"Tyyliluokat","advisoryTitle":"Avustava otsikko","cssStyle":"Tyyli","ok":"OK","cancel":"Peruuta","close":"Sulje","preview":"Esikatselu","resize":"Raahaa muuttaaksesi kokoa","generalTab":"Yleinen","advancedTab":"Lisäominaisuudet","validateNumberFailed":"Arvon pitää olla numero.","confirmNewPage":"Kaikki tallentamattomat muutokset tähän sisältöön menetetään. Oletko varma, että haluat ladata uuden sivun?","confirmCancel":"Jotkut asetuksista on muuttuneet. Oletko varma, että haluat sulkea valintaikkunan?","options":"Asetukset","target":"Kohde","targetNew":"Uusi ikkuna (_blank)","targetTop":"Päällimmäinen ikkuna (_top)","targetSelf":"Sama ikkuna (_self)","targetParent":"Ylemmän tason ikkuna (_parent)","langDirLTR":"Vasemmalta oikealle (LTR)","langDirRTL":"Oikealta vasemmalle (RTL)","styles":"Tyyli","cssClasses":"Tyylitiedoston luokat","width":"Leveys","height":"Korkeus","align":"Kohdistus","alignLeft":"Vasemmalle","alignRight":"Oikealle","alignCenter":"Keskelle","alignTop":"Ylös","alignMiddle":"Keskelle","alignBottom":"Alas","invalidValue":"Virheellinen arvo.","invalidHeight":"Korkeuden täytyy olla numero.","invalidWidth":"Leveyden täytyy olla numero.","invalidCssLength":"Kentän \"%1\" arvon täytyy olla positiivinen luku CSS mittayksikön (px, %, in, cm, mm, em, ex, pt tai pc) kanssa tai ilman.","invalidHtmlLength":"Kentän \"%1\" arvon täytyy olla positiivinen luku HTML mittayksikön (px tai %) kanssa tai ilman.","invalidInlineStyle":"Tyylille annetun arvon täytyy koostua yhdestä tai useammasta \"nimi : arvo\" parista, jotka ovat eroteltuna toisistaan puolipisteillä.","cssLengthTooltip":"Anna numeroarvo pikseleinä tai numeroarvo CSS mittayksikön kanssa (px, %, in, cm, mm, em, ex, pt, tai pc).","unavailable":"%1<span class=\"cke_accessibility\">, ei saatavissa</span>"},"about":{"copy":"Copyright &copy; $1. Kaikki oikeuden pidätetään.","dlgTitle":"Tietoa CKEditorista","help":"Katso ohjeet: $1.","moreInfo":"Lisenssitiedot löytyvät kotisivuiltamme:","title":"Tietoa CKEditorista","userGuide":"CKEditorin käyttäjäopas"},"basicstyles":{"bold":"Lihavoitu","italic":"Kursivoitu","strike":"Yliviivattu","subscript":"Alaindeksi","superscript":"Yläindeksi","underline":"Alleviivattu"},"blockquote":{"toolbar":"Lainaus"},"clipboard":{"copy":"Kopioi","copyError":"Selaimesi turva-asetukset eivät salli editorin toteuttaa kopioimista. Käytä näppäimistöä kopioimiseen (Ctrl+C).","cut":"Leikkaa","cutError":"Selaimesi turva-asetukset eivät salli editorin toteuttaa leikkaamista. Käytä näppäimistöä leikkaamiseen (Ctrl+X).","paste":"Liitä","pasteArea":"Leikealue","pasteMsg":"Liitä painamalla (<STRONG>Ctrl+V</STRONG>) ja painamalla <STRONG>OK</STRONG>.","securityMsg":"Selaimesi turva-asetukset eivät salli editorin käyttää leikepöytää suoraan. Sinun pitää suorittaa liittäminen tässä ikkunassa.","title":"Liitä"},"contextmenu":{"options":"Pikavalikon ominaisuudet"},"toolbar":{"toolbarCollapse":"Kutista työkalupalkki","toolbarExpand":"Laajenna työkalupalkki","toolbarGroups":{"document":"Dokumentti","clipboard":"Leikepöytä/Kumoa","editing":"Muokkaus","forms":"Lomakkeet","basicstyles":"Perustyylit","paragraph":"Kappale","links":"Linkit","insert":"Lisää","styles":"Tyylit","colors":"Värit","tools":"Työkalut"},"toolbars":"Editorin työkalupalkit"},"elementspath":{"eleLabel":"Elementin polku","eleTitle":"%1 elementti"},"format":{"label":"Muotoilu","panelTitle":"Muotoilu","tag_address":"Osoite","tag_div":"Normaali (DIV)","tag_h1":"Otsikko 1","tag_h2":"Otsikko 2","tag_h3":"Otsikko 3","tag_h4":"Otsikko 4","tag_h5":"Otsikko 5","tag_h6":"Otsikko 6","tag_p":"Normaali","tag_pre":"Muotoiltu"},"horizontalrule":{"toolbar":"Lisää murtoviiva"},"image":{"alertUrl":"Kirjoita kuvan osoite (URL)","alt":"Vaihtoehtoinen teksti","border":"Kehys","btnUpload":"Lähetä palvelimelle","button2Img":"Haluatko muuntaa valitun kuvanäppäimen kuvaksi?","hSpace":"Vaakatila","img2Button":"Haluatko muuntaa valitun kuvan kuvanäppäimeksi?","infoTab":"Kuvan tiedot","linkTab":"Linkki","lockRatio":"Lukitse suhteet","menu":"Kuvan ominaisuudet","resetSize":"Alkuperäinen koko","title":"Kuvan ominaisuudet","titleButton":"Kuvapainikkeen ominaisuudet","upload":"Lisää kuva","urlMissing":"Kuvan lähdeosoite puuttuu.","vSpace":"Pystytila","validateBorder":"Kehyksen täytyy olla kokonaisluku.","validateHSpace":"HSpace-määrityksen täytyy olla kokonaisluku.","validateVSpace":"VSpace-määrityksen täytyy olla kokonaisluku."},"indent":{"indent":"Suurenna sisennystä","outdent":"Pienennä sisennystä"},"fakeobjects":{"anchor":"Ankkuri","flash":"Flash animaatio","hiddenfield":"Piilokenttä","iframe":"IFrame-kehys","unknown":"Tuntematon objekti"},"link":{"acccessKey":"Pikanäppäin","advanced":"Lisäominaisuudet","advisoryContentType":"Avustava sisällön tyyppi","advisoryTitle":"Avustava otsikko","anchor":{"toolbar":"Lisää ankkuri/muokkaa ankkuria","menu":"Ankkurin ominaisuudet","title":"Ankkurin ominaisuudet","name":"Nimi","errorName":"Ankkurille on kirjoitettava nimi","remove":"Poista ankkuri"},"anchorId":"Ankkurin ID:n mukaan","anchorName":"Ankkurin nimen mukaan","charset":"Linkitetty kirjaimisto","cssClasses":"Tyyliluokat","emailAddress":"Sähköpostiosoite","emailBody":"Viesti","emailSubject":"Aihe","id":"Tunniste","info":"Linkin tiedot","langCode":"Kielen suunta","langDir":"Kielen suunta","langDirLTR":"Vasemmalta oikealle (LTR)","langDirRTL":"Oikealta vasemmalle (RTL)","menu":"Muokkaa linkkiä","name":"Nimi","noAnchors":"(Ei ankkureita tässä dokumentissa)","noEmail":"Kirjoita sähköpostiosoite","noUrl":"Linkille on kirjoitettava URL","other":"<muu>","popupDependent":"Riippuva (Netscape)","popupFeatures":"Popup ikkunan ominaisuudet","popupFullScreen":"Täysi ikkuna (IE)","popupLeft":"Vasemmalta (px)","popupLocationBar":"Osoiterivi","popupMenuBar":"Valikkorivi","popupResizable":"Venytettävä","popupScrollBars":"Vierityspalkit","popupStatusBar":"Tilarivi","popupToolbar":"Vakiopainikkeet","popupTop":"Ylhäältä (px)","rel":"Suhde","selectAnchor":"Valitse ankkuri","styles":"Tyyli","tabIndex":"Tabulaattori indeksi","target":"Kohde","targetFrame":"<kehys>","targetFrameName":"Kohdekehyksen nimi","targetPopup":"<popup ikkuna>","targetPopupName":"Popup ikkunan nimi","title":"Linkki","toAnchor":"Ankkuri tässä sivussa","toEmail":"Sähköposti","toUrl":"Osoite","toolbar":"Lisää linkki/muokkaa linkkiä","type":"Linkkityyppi","unlink":"Poista linkki","upload":"Lisää tiedosto"},"list":{"bulletedlist":"Luettelomerkit","numberedlist":"Numerointi"},"magicline":{"title":"Lisää kappale tähän."},"maximize":{"maximize":"Suurenna","minimize":"Pienennä"},"pastetext":{"button":"Liitä tekstinä","title":"Liitä tekstinä"},"pastefromword":{"confirmCleanup":"Liittämäsi teksti näyttäisi olevan Word-dokumentista. Haluatko siivota sen ennen liittämistä? (Suositus: Kyllä)","error":"Liitetyn tiedon siivoaminen ei onnistunut sisäisen virheen takia","title":"Liitä Word-dokumentista","toolbar":"Liitä Word-dokumentista"},"removeformat":{"toolbar":"Poista muotoilu"},"sourcearea":{"toolbar":"Koodi"},"specialchar":{"options":"Erikoismerkin ominaisuudet","title":"Valitse erikoismerkki","toolbar":"Lisää erikoismerkki"},"scayt":{"about":"Tietoja oikoluvusta kirjoitetaessa","aboutTab":"Tietoa","addWord":"Lisää sana","allCaps":"Ohita sanat, jotka on kirjoitettu kokonaan isoilla kirjaimilla","dic_create":"Luo","dic_delete":"Poista","dic_field_name":"Sanakirjan nimi","dic_info":"Oletuksena sanakirjat tallennetaan evästeeseen, mutta evästeiden koko on kuitenkin rajallinen. Sanakirjan kasvaessa niin suureksi, ettei se enää mahdu evästeeseen, sanakirja täytyy tallentaa palvelimellemme. Tallentaaksesi sanakirjasi palvelimellemme tulee sinun antaa sille nimi. Jos olet jo tallentanut sanakirjan, anna sen nimi ja klikkaa Palauta-painiketta","dic_rename":"Nimeä uudelleen","dic_restore":"Palauta","dictionariesTab":"Sanakirjat","disable":"Poista käytöstä oikoluku kirjoitetaessa","emptyDic":"Sanakirjan nimi on annettava.","enable":"Ota käyttöön oikoluku kirjoitettaessa","ignore":"Ohita","ignoreAll":"Ohita kaikki","ignoreDomainNames":"Ohita verkkotunnukset","langs":"Kielet","languagesTab":"Kielet","mixedCase":"Ohita sanat, joissa on sekoitettu isoja ja pieniä kirjaimia","mixedWithDigits":"Ohita sanat, joissa on numeroita","moreSuggestions":"Lisää ehdotuksia","opera_title":"Opera ei tue tätä ominaisuutta","options":"Asetukset","optionsTab":"Asetukset","title":"Oikolue kirjoitettaessa","toggle":"Vaihda oikoluku kirjoittaessa tilaa","noSuggestions":"No suggestion"},"stylescombo":{"label":"Tyyli","panelTitle":"Muotoilujen tyylit","panelTitle1":"Lohkojen tyylit","panelTitle2":"Rivinsisäiset tyylit","panelTitle3":"Objektien tyylit"},"table":{"border":"Rajan paksuus","caption":"Otsikko","cell":{"menu":"Solu","insertBefore":"Lisää solu eteen","insertAfter":"Lisää solu perään","deleteCell":"Poista solut","merge":"Yhdistä solut","mergeRight":"Yhdistä oikealla olevan kanssa","mergeDown":"Yhdistä alla olevan kanssa","splitHorizontal":"Jaa solu vaakasuunnassa","splitVertical":"Jaa solu pystysuunnassa","title":"Solun ominaisuudet","cellType":"Solun tyyppi","rowSpan":"Rivin jatkuvuus","colSpan":"Solun jatkuvuus","wordWrap":"Rivitys","hAlign":"Horisontaali kohdistus","vAlign":"Vertikaali kohdistus","alignBaseline":"Alas (teksti)","bgColor":"Taustan väri","borderColor":"Reunan väri","data":"Data","header":"Ylätunniste","yes":"Kyllä","no":"Ei","invalidWidth":"Solun leveyden täytyy olla numero.","invalidHeight":"Solun korkeuden täytyy olla numero.","invalidRowSpan":"Rivin jatkuvuuden täytyy olla kokonaisluku.","invalidColSpan":"Solun jatkuvuuden täytyy olla kokonaisluku.","chooseColor":"Valitse"},"cellPad":"Solujen sisennys","cellSpace":"Solujen väli","column":{"menu":"Sarake","insertBefore":"Lisää sarake vasemmalle","insertAfter":"Lisää sarake oikealle","deleteColumn":"Poista sarakkeet"},"columns":"Sarakkeet","deleteTable":"Poista taulu","headers":"Ylätunnisteet","headersBoth":"Molemmat","headersColumn":"Ensimmäinen sarake","headersNone":"Ei","headersRow":"Ensimmäinen rivi","invalidBorder":"Reunan koon täytyy olla numero.","invalidCellPadding":"Solujen sisennyksen täytyy olla numero.","invalidCellSpacing":"Solujen välin täytyy olla numero.","invalidCols":"Sarakkeiden määrän täytyy olla suurempi kuin 0.","invalidHeight":"Taulun korkeuden täytyy olla numero.","invalidRows":"Rivien määrän täytyy olla suurempi kuin 0.","invalidWidth":"Taulun leveyden täytyy olla numero.","menu":"Taulun ominaisuudet","row":{"menu":"Rivi","insertBefore":"Lisää rivi yläpuolelle","insertAfter":"Lisää rivi alapuolelle","deleteRow":"Poista rivit"},"rows":"Rivit","summary":"Yhteenveto","title":"Taulun ominaisuudet","toolbar":"Taulu","widthPc":"prosenttia","widthPx":"pikseliä","widthUnit":"leveysyksikkö"},"undo":{"redo":"Toista","undo":"Kumoa"},"wsc":{"btnIgnore":"Jätä huomioimatta","btnIgnoreAll":"Jätä kaikki huomioimatta","btnReplace":"Korvaa","btnReplaceAll":"Korvaa kaikki","btnUndo":"Kumoa","changeTo":"Vaihda","errorLoading":"Virhe ladattaessa oikolukupalvelua isännältä: %s.","ieSpellDownload":"Oikeinkirjoituksen tarkistusta ei ole asennettu. Haluatko ladata sen nyt?","manyChanges":"Tarkistus valmis: %1 sanaa muutettiin","noChanges":"Tarkistus valmis: Yhtään sanaa ei muutettu","noMispell":"Tarkistus valmis: Ei virheitä","noSuggestions":"Ei ehdotuksia","notAvailable":"Valitettavasti oikoluku ei ole käytössä tällä hetkellä.","notInDic":"Ei sanakirjassa","oneChange":"Tarkistus valmis: Yksi sana muutettiin","progress":"Tarkistus käynnissä...","title":"Oikoluku","toolbar":"Tarkista oikeinkirjoitus"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/fo.js b/assets/plugins/ckeditor/lang/fo.js deleted file mode 100644 index 7f618f05..00000000 --- a/assets/plugins/ckeditor/lang/fo.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['fo']={"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Trýst ALT og 0 fyri vegleiðing","browseServer":"Ambætarakagi","url":"URL","protocol":"Protokoll","upload":"Send til ambætaran","uploadSubmit":"Send til ambætaran","image":"Myndir","flash":"Flash","form":"Formur","checkbox":"Flugubein","radio":"Radioknøttur","textField":"Tekstteigur","textarea":"Tekstumráði","hiddenField":"Fjaldur teigur","button":"Knøttur","select":"Valskrá","imageButton":"Myndaknøttur","notSet":"<ikki sett>","id":"Id","name":"Navn","langDir":"Tekstkós","langDirLtr":"Frá vinstru til høgru (LTR)","langDirRtl":"Frá høgru til vinstru (RTL)","langCode":"Málkoda","longDescr":"Víðkað URL frágreiðing","cssClass":"Typografi klassar","advisoryTitle":"Vegleiðandi heiti","cssStyle":"Typografi","ok":"Góðkent","cancel":"Avlýst","close":"Lat aftur","preview":"Frumsýn","resize":"Drag fyri at broyta stødd","generalTab":"Generelt","advancedTab":"Fjølbroytt","validateNumberFailed":"Hetta er ikki eitt tal.","confirmNewPage":"Allar ikki goymdar broytingar í hesum innihaldið hvørva. Skal nýggj síða lesast kortini?","confirmCancel":"Nakrir valmøguleikar eru broyttir. Ert tú vísur í, at dialogurin skal latast aftur?","options":"Options","target":"Target","targetNew":"Nýtt vindeyga (_blank)","targetTop":"Vindeyga ovast (_top)","targetSelf":"Sama vindeyga (_self)","targetParent":"Upphavligt vindeyga (_parent)","langDirLTR":"Frá vinstru til høgru (LTR)","langDirRTL":"Frá høgru til vinstru (RTL)","styles":"Style","cssClasses":"Stylesheet Classes","width":"Breidd","height":"Hædd","align":"Justering","alignLeft":"Vinstra","alignRight":"Høgra","alignCenter":"Miðsett","alignTop":"Ovast","alignMiddle":"Miðja","alignBottom":"Botnur","invalidValue":"Invalid value.","invalidHeight":"Hædd má vera eitt tal.","invalidWidth":"Breidd má vera eitt tal.","invalidCssLength":"Virðið sett í \"%1\" feltið má vera eitt positivt tal, við ella uttan gyldugum CSS mátieind (px, %, in, cm, mm, em, ex, pt, ella pc).","invalidHtmlLength":"Virðið sett í \"%1\" feltiðield má vera eitt positivt tal, við ella uttan gyldugum CSS mátieind (px ella %).","invalidInlineStyle":"Virði specifiserað fyri inline style má hava eitt ella fleiri pør (tuples) skrivað sum \"name : value\", hvørt parið sundurskilt við semi-colon.","cssLengthTooltip":"Skriva eitt tal fyri eitt virði í pixels ella eitt tal við gyldigum CSS eind (px, %, in, cm, mm, em, ex, pt, ella pc).","unavailable":"%1<span class=\"cke_accessibility\">, ikki tøkt</span>"},"about":{"copy":"Copyright &copy; $1. All rights reserved.","dlgTitle":"Um CKEditor","help":"Kekka $1 fyri hjálp.","moreInfo":"Licens upplýsingar finnast á heimasíðu okkara:","title":"Um CKEditor","userGuide":"CKEditor Brúkaravegleiðing"},"basicstyles":{"bold":"Feit skrift","italic":"Skráskrift","strike":"Yvirstrikað","subscript":"Lækkað skrift","superscript":"Hækkað skrift","underline":"Undirstrikað"},"blockquote":{"toolbar":"Blockquote"},"clipboard":{"copy":"Avrita","copyError":"Trygdaruppseting alnótskagans forðar tekstviðgeranum í at avrita tekstin. Vinarliga nýt knappaborðið til at avrita tekstin (Ctrl/Cmd+C).","cut":"Kvett","cutError":"Trygdaruppseting alnótskagans forðar tekstviðgeranum í at kvetta tekstin. Vinarliga nýt knappaborðið til at kvetta tekstin (Ctrl/Cmd+X).","paste":"Innrita","pasteArea":"Avritingarumráði","pasteMsg":"Vinarliga koyr tekstin í hendan rútin við knappaborðinum (<strong>Ctrl/Cmd+V</strong>) og klikk á <strong>Góðtak</strong>.","securityMsg":"Trygdaruppseting alnótskagans forðar tekstviðgeranum í beinleiðis atgongd til avritingarminnið. Tygum mugu royna aftur í hesum rútinum.","title":"Innrita"},"contextmenu":{"options":"Context Menu Options"},"toolbar":{"toolbarCollapse":"Lat Toolbar aftur","toolbarExpand":"Vís Toolbar","toolbarGroups":{"document":"Dokument","clipboard":"Clipboard/Undo","editing":"Editering","forms":"Formar","basicstyles":"Grundleggjandi Styles","paragraph":"Reglubrot","links":"Leinkjur","insert":"Set inn","styles":"Styles","colors":"Litir","tools":"Tól"},"toolbars":"Editor toolbars"},"elementspath":{"eleLabel":"Slóð til elementir","eleTitle":"%1 element"},"format":{"label":"Skriftsnið","panelTitle":"Skriftsnið","tag_address":"Adressa","tag_div":"Vanligt (DIV)","tag_h1":"Yvirskrift 1","tag_h2":"Yvirskrift 2","tag_h3":"Yvirskrift 3","tag_h4":"Yvirskrift 4","tag_h5":"Yvirskrift 5","tag_h6":"Yvirskrift 6","tag_p":"Vanligt","tag_pre":"Sniðgivið"},"horizontalrule":{"toolbar":"Ger vatnrætta linju"},"image":{"alertUrl":"Rita slóðina til myndina","alt":"Alternativur tekstur","border":"Bordi","btnUpload":"Send til ambætaran","button2Img":"Skal valdi myndaknøttur gerast til vanliga mynd?","hSpace":"Høgri breddi","img2Button":"Skal valda mynd gerast til myndaknøtt?","infoTab":"Myndaupplýsingar","linkTab":"Tilknýti","lockRatio":"Læs lutfallið","menu":"Myndaeginleikar","resetSize":"Upprunastødd","title":"Myndaeginleikar","titleButton":"Eginleikar fyri myndaknøtt","upload":"Send","urlMissing":"URL til mynd manglar.","vSpace":"Vinstri breddi","validateBorder":"Bordi má vera eitt heiltal.","validateHSpace":"HSpace má vera eitt heiltal.","validateVSpace":"VSpace má vera eitt heiltal."},"indent":{"indent":"Økja reglubrotarinntriv","outdent":"Minka reglubrotarinntriv"},"fakeobjects":{"anchor":"Anchor","flash":"Flash Animation","hiddenfield":"Fjaldur teigur","iframe":"IFrame","unknown":"Ókent Object"},"link":{"acccessKey":"Snarvegisknöttur","advanced":"Fjølbroytt","advisoryContentType":"Vegleiðandi innihaldsslag","advisoryTitle":"Vegleiðandi heiti","anchor":{"toolbar":"Ger/broyt marknastein","menu":"Eginleikar fyri marknastein","title":"Eginleikar fyri marknastein","name":"Heiti marknasteinsins","errorName":"Vinarliga rita marknasteinsins heiti","remove":"Strika marknastein"},"anchorId":"Eftir element Id","anchorName":"Eftir navni á marknasteini","charset":"Atknýtt teknsett","cssClasses":"Typografi klassar","emailAddress":"Teldupost-adressa","emailBody":"Breyðtekstur","emailSubject":"Evni","id":"Id","info":"Tilknýtis upplýsingar","langCode":"Tekstkós","langDir":"Tekstkós","langDirLTR":"Frá vinstru til høgru (LTR)","langDirRTL":"Frá høgru til vinstru (RTL)","menu":"Broyt tilknýti","name":"Navn","noAnchors":"(Eingir marknasteinar eru í hesum dokumentið)","noEmail":"Vinarliga skriva teldupost-adressu","noUrl":"Vinarliga skriva tilknýti (URL)","other":"<annað>","popupDependent":"Bundið (Netscape)","popupFeatures":"Popup vindeygans víðkaðu eginleikar","popupFullScreen":"Fullur skermur (IE)","popupLeft":"Frástøða frá vinstru","popupLocationBar":"Adressulinja","popupMenuBar":"Skrábjálki","popupResizable":"Stødd kann broytast","popupScrollBars":"Rullibjálki","popupStatusBar":"Støðufrágreiðingarbjálki","popupToolbar":"Amboðsbjálki","popupTop":"Frástøða frá íerva","rel":"Relatión","selectAnchor":"Vel ein marknastein","styles":"Typografi","tabIndex":"Tabulator indeks","target":"Target","targetFrame":"<ramma>","targetFrameName":"Vís navn vindeygans","targetPopup":"<popup vindeyga>","targetPopupName":"Popup vindeygans navn","title":"Tilknýti","toAnchor":"Tilknýti til marknastein í tekstinum","toEmail":"Teldupostur","toUrl":"URL","toolbar":"Ger/broyt tilknýti","type":"Tilknýtisslag","unlink":"Strika tilknýti","upload":"Send til ambætaran"},"list":{"bulletedlist":"Punktmerktur listi","numberedlist":"Talmerktur listi"},"magicline":{"title":"Insert paragraph here"},"maximize":{"maximize":"Maksimera","minimize":"Minimera"},"pastetext":{"button":"Innrita som reinan tekst","title":"Innrita som reinan tekst"},"pastefromword":{"confirmCleanup":"Teksturin, tú roynir at seta inn, sýnist at stava frá Word. Skal teksturin reinsast fyrst?","error":"Tað eydnaðist ikki at reinsa tekstin vegna ein internan feil","title":"Innrita frá Word","toolbar":"Innrita frá Word"},"removeformat":{"toolbar":"Strika sniðgeving"},"sourcearea":{"toolbar":"Kelda"},"specialchar":{"options":"Møguleikar við serteknum","title":"Vel sertekn","toolbar":"Set inn sertekn"},"scayt":{"about":"Um SCAYT","aboutTab":"Um","addWord":"Legg orð afturat","allCaps":"Loyp orð við bert stórum stavum um","dic_create":"Upprætta nýggja","dic_delete":"Strika","dic_field_name":"Orðabókanavn","dic_info":"Upprunaliga er brúkara-orðabókin goymd í eini cookie í tínum egna kaga. Men hesar cookies eru avmarkaðar í stødd. Tá brúkara-orðabókin veksur seg ov stóra til eina cookie, so er møguligt at goyma hana á ambætara okkara. Fyri at goyma persónligu orðabókina á ambætaranum eigur tú at velja eitt navn til tína skuffu. Hevur tú longu goymt eina orðabók, so vinarliga skriva navnið og klikk á knøttin Endurskapa.","dic_rename":"Broyt","dic_restore":"Endurskapa","dictionariesTab":"Orðabøkur","disable":"Nokta SCAYT","emptyDic":"Heiti á orðabók eigur ikki at vera tómt.","enable":"Loyv SCAYT","ignore":"Ignorera","ignoreAll":"Ignorera alt","ignoreDomainNames":"loyp økisnøvn um","langs":"Tungumál","languagesTab":"Tungumál","mixedCase":"Loyp orð við blandaðum smáum og stórum stavum um","mixedWithDigits":"Loyp orð við tølum um","moreSuggestions":"Fleiri tilráðingar","opera_title":"Ikki stuðlað í Opera","options":"Uppseting","optionsTab":"Uppseting","title":"Kanna stavseting, meðan tú skrivar","toggle":"Toggle SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"Typografi","panelTitle":"Formatterings stílir","panelTitle1":"Blokk stílir","panelTitle2":"Inline stílir","panelTitle3":"Object stílir"},"table":{"border":"Bordabreidd","caption":"Tabellfrágreiðing","cell":{"menu":"Meski","insertBefore":"Set meska inn áðrenn","insertAfter":"Set meska inn aftaná","deleteCell":"Strika meskar","merge":"Flætta meskar","mergeRight":"Flætta meskar til høgru","mergeDown":"Flætta saman","splitHorizontal":"Kloyv meska vatnrætt","splitVertical":"Kloyv meska loddrætt","title":"Mesku eginleikar","cellType":"Mesku slag","rowSpan":"Ræð spenni","colSpan":"Kolonnu spenni","wordWrap":"Orðkloyving","hAlign":"Horisontal plasering","vAlign":"Loddrøtt plasering","alignBaseline":"Basislinja","bgColor":"Bakgrundslitur","borderColor":"Bordalitur","data":"Data","header":"Header","yes":"Ja","no":"Nei","invalidWidth":"Meskubreidd má vera eitt tal.","invalidHeight":"Meskuhædd má vera eitt tal.","invalidRowSpan":"Raðspennið má vera eitt heiltal.","invalidColSpan":"Kolonnuspennið má vera eitt heiltal.","chooseColor":"Vel"},"cellPad":"Meskubreddi","cellSpace":"Fjarstøða millum meskar","column":{"menu":"Kolonna","insertBefore":"Set kolonnu inn áðrenn","insertAfter":"Set kolonnu inn aftaná","deleteColumn":"Strika kolonnur"},"columns":"Kolonnur","deleteTable":"Strika tabell","headers":"Yvirskriftir","headersBoth":"Báðir","headersColumn":"Fyrsta kolonna","headersNone":"Eingin","headersRow":"Fyrsta rað","invalidBorder":"Borda-stødd má vera eitt tal.","invalidCellPadding":"Cell padding má vera eitt tal.","invalidCellSpacing":"Cell spacing má vera eitt tal.","invalidCols":"Talið av kolonnum má vera eitt tal størri enn 0.","invalidHeight":"Tabell-hædd má vera eitt tal.","invalidRows":"Talið av røðum má vera eitt tal størri enn 0.","invalidWidth":"Tabell-breidd má vera eitt tal.","menu":"Eginleikar fyri tabell","row":{"menu":"Rað","insertBefore":"Set rað inn áðrenn","insertAfter":"Set rað inn aftaná","deleteRow":"Strika røðir"},"rows":"Røðir","summary":"Samandráttur","title":"Eginleikar fyri tabell","toolbar":"Tabell","widthPc":"prosent","widthPx":"pixels","widthUnit":"breiddar unit"},"undo":{"redo":"Vend aftur","undo":"Angra"},"wsc":{"btnIgnore":"Forfjóna","btnIgnoreAll":"Forfjóna alt","btnReplace":"Yvirskriva","btnReplaceAll":"Yvirskriva alt","btnUndo":"Angra","changeTo":"Broyt til","errorLoading":"Feilur við innlesing av application service host: %s.","ieSpellDownload":"Rættstavarin er ikki tøkur í tekstviðgeranum. Vilt tú heinta hann nú?","manyChanges":"Rættstavarin liðugur: %1 orð broytt","noChanges":"Rættstavarin liðugur: Einki orð varð broytt","noMispell":"Rættstavarin liðugur: Eingin feilur funnin","noSuggestions":"- Einki uppskot -","notAvailable":"Tíverri, ikki tøkt í løtuni.","notInDic":"Finst ikki í orðabókini","oneChange":"Rættstavarin liðugur: Eitt orð er broytt","progress":"Rættstavarin arbeiðir...","title":"Kanna stavseting","toolbar":"Kanna stavseting"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/fr-ca.js b/assets/plugins/ckeditor/lang/fr-ca.js deleted file mode 100644 index 56626232..00000000 --- a/assets/plugins/ckeditor/lang/fr-ca.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['fr-ca']={"editor":"Éditeur de texte enrichi","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Appuyez sur 0 pour de l'aide","browseServer":"Parcourir le serveur","url":"URL","protocol":"Protocole","upload":"Envoyer","uploadSubmit":"Envoyer au serveur","image":"Image","flash":"Animation Flash","form":"Formulaire","checkbox":"Case à cocher","radio":"Bouton radio","textField":"Champ texte","textarea":"Zone de texte","hiddenField":"Champ caché","button":"Bouton","select":"Liste déroulante","imageButton":"Bouton image","notSet":"<Par défaut>","id":"Id","name":"Nom","langDir":"Sens d'écriture","langDirLtr":"De gauche à droite (LTR)","langDirRtl":"De droite à gauche (RTL)","langCode":"Code langue","longDescr":"URL de description longue","cssClass":"Classes CSS","advisoryTitle":"Titre","cssStyle":"Style","ok":"OK","cancel":"Annuler","close":"Fermer","preview":"Aperçu","resize":"Redimensionner","generalTab":"Général","advancedTab":"Avancé","validateNumberFailed":"Cette valeur n'est pas un nombre.","confirmNewPage":"Les changements non sauvegardés seront perdus. Êtes-vous certain de vouloir charger une nouvelle page?","confirmCancel":"Certaines options ont été modifiées. Êtes-vous certain de vouloir fermer?","options":"Options","target":"Cible","targetNew":"Nouvelle fenêtre (_blank)","targetTop":"Fenêtre supérieur (_top)","targetSelf":"Cette fenêtre (_self)","targetParent":"Fenêtre parent (_parent)","langDirLTR":"De gauche à droite (LTR)","langDirRTL":"De droite à gauche (RTL)","styles":"Style","cssClasses":"Classe CSS","width":"Largeur","height":"Hauteur","align":"Alignement","alignLeft":"Gauche","alignRight":"Droite","alignCenter":"Centré","alignTop":"Haut","alignMiddle":"Milieu","alignBottom":"Bas","invalidValue":"Valeur invalide.","invalidHeight":"La hauteur doit être un nombre.","invalidWidth":"La largeur doit être un nombre.","invalidCssLength":"La valeur spécifiée pour le champ \"%1\" doit être un nombre positif avec ou sans unité de mesure CSS valide (px, %, in, cm, mm, em, ex, pt, ou pc).","invalidHtmlLength":"La valeur spécifiée pour le champ \"%1\" doit être un nombre positif avec ou sans unité de mesure HTML valide (px ou %).","invalidInlineStyle":"La valeur spécifiée pour le style intégré doit être composée d'un ou plusieurs couples de valeur au format \"nom : valeur\", separés par des points-virgules.","cssLengthTooltip":"Entrer un nombre pour la valeur en pixel ou un nombre avec une unité CSS valide (px, %, in, cm, mm, em, ex, pt, ou pc).","unavailable":"%1<span class=\"cke_accessibility\">, indisponible</span>"},"about":{"copy":"Copyright &copy; $1. Tous droits réservés.","dlgTitle":"À propos de CKEditor","help":"Consulter $1 pour l'aide.","moreInfo":"Pour les informations de licence, consulter notre site internet:","title":"À propos de CKEditor","userGuide":"Guide utilisateur de CKEditor"},"basicstyles":{"bold":"Gras","italic":"Italique","strike":"Barré","subscript":"Indice","superscript":"Exposant","underline":"Souligné"},"blockquote":{"toolbar":"Citation"},"clipboard":{"copy":"Copier","copyError":"Les paramètres de sécurité de votre navigateur empêchent l'éditeur de copier automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl/Cmd+C).","cut":"Couper","cutError":"Les paramètres de sécurité de votre navigateur empêchent l'éditeur de couper automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl/Cmd+X).","paste":"Coller","pasteArea":"Coller la zone","pasteMsg":"Veuillez coller dans la zone ci-dessous en utilisant le clavier (<STRONG>Ctrl/Cmd+V</STRONG>) et appuyer sur <STRONG>OK</STRONG>.","securityMsg":"A cause des paramètres de sécurité de votre navigateur, l'éditeur ne peut accéder au presse-papier directement. Vous devez coller à nouveau le contenu dans cette fenêtre.","title":"Coller"},"contextmenu":{"options":"Options du menu contextuel"},"toolbar":{"toolbarCollapse":"Enrouler la barre d'outils","toolbarExpand":"Dérouler la barre d'outils","toolbarGroups":{"document":"Document","clipboard":"Presse papier/Annuler","editing":"Édition","forms":"Formulaires","basicstyles":"Styles de base","paragraph":"Paragraphe","links":"Liens","insert":"Insérer","styles":"Styles","colors":"Couleurs","tools":"Outils"},"toolbars":"Barre d'outils de l'éditeur"},"elementspath":{"eleLabel":"Chemin d'éléments","eleTitle":"element %1"},"format":{"label":"Format","panelTitle":"Format de paragraphe","tag_address":"Adresse","tag_div":"Normal (DIV)","tag_h1":"En-tête 1","tag_h2":"En-tête 2","tag_h3":"En-tête 3","tag_h4":"En-tête 4","tag_h5":"En-tête 5","tag_h6":"En-tête 6","tag_p":"Normal","tag_pre":"Formaté"},"horizontalrule":{"toolbar":"Insérer un séparateur horizontale"},"image":{"alertUrl":"Veuillez saisir l'URL de l'image","alt":"Texte alternatif","border":"Bordure","btnUpload":"Envoyer sur le serveur","button2Img":"Désirez-vous transformer l'image sélectionnée en image simple?","hSpace":"Espacement horizontal","img2Button":"Désirez-vous transformer l'image sélectionnée en bouton image?","infoTab":"Informations sur l'image","linkTab":"Lien","lockRatio":"Verrouiller les proportions","menu":"Propriétés de l'image","resetSize":"Taille originale","title":"Propriétés de l'image","titleButton":"Propriétés du bouton image","upload":"Téléverser","urlMissing":"L'URL de la source de l'image est manquant.","vSpace":"Espacement vertical","validateBorder":"La bordure doit être un entier.","validateHSpace":"L'espacement horizontal doit être un entier.","validateVSpace":"L'espacement vertical doit être un entier."},"indent":{"indent":"Augmenter le retrait","outdent":"Diminuer le retrait"},"fakeobjects":{"anchor":"Ancre","flash":"Animation Flash","hiddenfield":"Champ caché","iframe":"IFrame","unknown":"Objet inconnu"},"link":{"acccessKey":"Touche d'accessibilité","advanced":"Avancé","advisoryContentType":"Type de contenu","advisoryTitle":"Description","anchor":{"toolbar":"Ancre","menu":"Modifier l'ancre","title":"Propriétés de l'ancre","name":"Nom de l'ancre","errorName":"Veuillez saisir le nom de l'ancre","remove":"Supprimer l'ancre"},"anchorId":"Par ID","anchorName":"Par nom","charset":"Encodage de la cible","cssClasses":"Classes CSS","emailAddress":"Courriel","emailBody":"Corps du message","emailSubject":"Objet du message","id":"ID","info":"Informations sur le lien","langCode":"Code de langue","langDir":"Sens d'écriture","langDirLTR":"De gauche à droite (LTR)","langDirRTL":"De droite à gauche (RTL)","menu":"Modifier le lien","name":"Nom","noAnchors":"(Pas d'ancre disponible dans le document)","noEmail":"Veuillez saisir le courriel","noUrl":"Veuillez saisir l'URL","other":"<autre>","popupDependent":"Dépendante (Netscape)","popupFeatures":"Caractéristiques de la fenêtre popup","popupFullScreen":"Plein écran (IE)","popupLeft":"Position de la gauche","popupLocationBar":"Barre d'adresse","popupMenuBar":"Barre de menu","popupResizable":"Redimensionnable","popupScrollBars":"Barres de défilement","popupStatusBar":"Barre d'état","popupToolbar":"Barre d'outils","popupTop":"Position à partir du haut","rel":"Relation","selectAnchor":"Sélectionner une ancre","styles":"Style","tabIndex":"Ordre de tabulation","target":"Destination","targetFrame":"<Cadre>","targetFrameName":"Nom du cadre de destination","targetPopup":"<fenêtre popup>","targetPopupName":"Nom de la fenêtre popup","title":"Lien","toAnchor":"Ancre dans cette page","toEmail":"Courriel","toUrl":"URL","toolbar":"Lien","type":"Type de lien","unlink":"Supprimer le lien","upload":"Téléverser"},"list":{"bulletedlist":"Liste à puces","numberedlist":"Liste numérotée"},"magicline":{"title":"Insérer le paragraphe ici"},"maximize":{"maximize":"Maximizer","minimize":"Minimizer"},"pastetext":{"button":"Coller comme texte","title":"Coller comme texte"},"pastefromword":{"confirmCleanup":"Le texte que vous tentez de coller semble provenir de Word. Désirez vous le nettoyer avant de coller?","error":"Il n'a pas été possible de nettoyer les données collées du à une erreur interne","title":"Coller de Word","toolbar":"Coller de Word"},"removeformat":{"toolbar":"Supprimer le formatage"},"sourcearea":{"toolbar":"Source"},"specialchar":{"options":"Option des caractères spéciaux","title":"Sélectionner un caractère spécial","toolbar":"Insérer un caractère spécial"},"scayt":{"about":"About SCAYT","aboutTab":"About","addWord":"Add Word","allCaps":"Ignore All-Caps Words","dic_create":"Create","dic_delete":"Delete","dic_field_name":"Dictionary name","dic_info":"Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.","dic_rename":"Rename","dic_restore":"Restore","dictionariesTab":"Dictionaries","disable":"Disable SCAYT","emptyDic":"Dictionary name should not be empty.","enable":"Enable SCAYT","ignore":"Ignore","ignoreAll":"Ignore All","ignoreDomainNames":"Ignore Domain Names","langs":"Languages","languagesTab":"Languages","mixedCase":"Ignore Words with Mixed Case","mixedWithDigits":"Ignore Words with Numbers","moreSuggestions":"More suggestions","opera_title":"Not supported by Opera","options":"Options","optionsTab":"Options","title":"Spell Check As You Type","toggle":"Toggle SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"Styles","panelTitle":"Styles de formattage","panelTitle1":"Styles de block","panelTitle2":"Styles en ligne","panelTitle3":"Styles d'objet"},"table":{"border":"Taille de la bordure","caption":"Titre","cell":{"menu":"Cellule","insertBefore":"Insérer une cellule avant","insertAfter":"Insérer une cellule après","deleteCell":"Supprimer des cellules","merge":"Fusionner les cellules","mergeRight":"Fusionner à droite","mergeDown":"Fusionner en bas","splitHorizontal":"Scinder la cellule horizontalement","splitVertical":"Scinder la cellule verticalement","title":"Propriétés de la cellule","cellType":"Type de cellule","rowSpan":"Fusion de lignes","colSpan":"Fusion de colonnes","wordWrap":"Retour à la ligne","hAlign":"Alignement horizontal","vAlign":"Alignement vertical","alignBaseline":"Bas du texte","bgColor":"Couleur d'arrière plan","borderColor":"Couleur de bordure","data":"Données","header":"En-tête","yes":"Oui","no":"Non","invalidWidth":"La largeur de cellule doit être un nombre.","invalidHeight":"La hauteur de cellule doit être un nombre.","invalidRowSpan":"La fusion de lignes doit être un nombre entier.","invalidColSpan":"La fusion de colonnes doit être un nombre entier.","chooseColor":"Sélectionner"},"cellPad":"Marge interne des cellules","cellSpace":"Espacement des cellules","column":{"menu":"Colonne","insertBefore":"Insérer une colonne avant","insertAfter":"Insérer une colonne après","deleteColumn":"Supprimer des colonnes"},"columns":"Colonnes","deleteTable":"Supprimer le tableau","headers":"En-têtes","headersBoth":"Les deux.","headersColumn":"Première colonne","headersNone":"Aucun","headersRow":"Première ligne","invalidBorder":"La taille de bordure doit être un nombre.","invalidCellPadding":"La marge interne des cellules doit être un nombre positif.","invalidCellSpacing":"L'espacement des cellules doit être un nombre positif.","invalidCols":"Le nombre de colonnes doit être supérieur à 0.","invalidHeight":"La hauteur du tableau doit être un nombre.","invalidRows":"Le nombre de lignes doit être supérieur à 0.","invalidWidth":"La largeur du tableau doit être un nombre.","menu":"Propriétés du tableau","row":{"menu":"Ligne","insertBefore":"Insérer une ligne avant","insertAfter":"Insérer une ligne après","deleteRow":"Supprimer des lignes"},"rows":"Lignes","summary":"Résumé","title":"Propriétés du tableau","toolbar":"Tableau","widthPc":"pourcentage","widthPx":"pixels","widthUnit":"unité de largeur"},"undo":{"redo":"Refaire","undo":"Annuler"},"wsc":{"btnIgnore":"Ignorer","btnIgnoreAll":"Ignorer tout","btnReplace":"Remplacer","btnReplaceAll":"Remplacer tout","btnUndo":"Annuler","changeTo":"Changer en","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Le Correcteur d'orthographe n'est pas installé. Souhaitez-vous le télécharger maintenant?","manyChanges":"Vérification d'orthographe terminée: %1 mots modifiés","noChanges":"Vérification d'orthographe terminée: Pas de modifications","noMispell":"Vérification d'orthographe terminée: pas d'erreur trouvée","noSuggestions":"- Pas de suggestion -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Pas dans le dictionnaire","oneChange":"Vérification d'orthographe terminée: Un mot modifié","progress":"Vérification d'orthographe en cours...","title":"Spell Check","toolbar":"Orthographe"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/fr.js b/assets/plugins/ckeditor/lang/fr.js deleted file mode 100644 index 653083be..00000000 --- a/assets/plugins/ckeditor/lang/fr.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['fr']={"editor":"Éditeur de Texte Enrichi","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Appuyez sur ALT-0 pour l'aide","browseServer":"Explorer le serveur","url":"URL","protocol":"Protocole","upload":"Envoyer","uploadSubmit":"Envoyer sur le serveur","image":"Image","flash":"Flash","form":"Formulaire","checkbox":"Case à cocher","radio":"Bouton Radio","textField":"Champ texte","textarea":"Zone de texte","hiddenField":"Champ caché","button":"Bouton","select":"Liste déroulante","imageButton":"Bouton image","notSet":"<non défini>","id":"Id","name":"Nom","langDir":"Sens d'écriture","langDirLtr":"Gauche à droite (LTR)","langDirRtl":"Droite à gauche (RTL)","langCode":"Code de langue","longDescr":"URL de description longue (longdesc => malvoyant)","cssClass":"Classe CSS","advisoryTitle":"Description (title)","cssStyle":"Style","ok":"OK","cancel":"Annuler","close":"Fermer","preview":"Aperçu","resize":"Déplacer pour modifier la taille","generalTab":"Général","advancedTab":"Avancé","validateNumberFailed":"Cette valeur n'est pas un nombre.","confirmNewPage":"Les changements non sauvegardés seront perdus. Êtes-vous sûr de vouloir charger une nouvelle page?","confirmCancel":"Certaines options ont été modifiées. Êtes-vous sûr de vouloir fermer?","options":"Options","target":"Cible (Target)","targetNew":"Nouvelle fenêtre (_blank)","targetTop":"Fenêtre supérieure (_top)","targetSelf":"Même fenêtre (_self)","targetParent":"Fenêtre parent (_parent)","langDirLTR":"Gauche à Droite (LTR)","langDirRTL":"Droite à Gauche (RTL)","styles":"Style","cssClasses":"Classes de style","width":"Largeur","height":"Hauteur","align":"Alignement","alignLeft":"Gauche","alignRight":"Droite","alignCenter":"Centré","alignTop":"Haut","alignMiddle":"Milieu","alignBottom":"Bas","invalidValue":"Valeur incorrecte.","invalidHeight":"La hauteur doit être un nombre.","invalidWidth":"La largeur doit être un nombre.","invalidCssLength":"La valeur spécifiée pour le champ \"%1\" doit être un nombre positif avec ou sans unité de mesure CSS valide (px, %, in, cm, mm, em, ex, pt, ou pc).","invalidHtmlLength":"La valeur spécifiée pour le champ \"%1\" doit être un nombre positif avec ou sans unité de mesure HTML valide (px ou %).","invalidInlineStyle":"La valeur spécifiée pour le style inline doit être composée d'un ou plusieurs couples de valeur au format \"nom : valeur\", separés par des points-virgules.","cssLengthTooltip":"Entrer un nombre pour une valeur en pixels ou un nombre avec une unité de mesure CSS valide (px, %, in, cm, mm, em, ex, pt, ou pc).","unavailable":"%1<span class=\"cke_accessibility\">, Indisponible</span>"},"about":{"copy":"Copyright &copy; $1. Tous droits réservés.","dlgTitle":"À propos de CKEditor","help":"Consulter $1 pour l'aide.","moreInfo":"Pour les informations de licence, veuillez visiter notre site web:","title":"À propos de CKEditor","userGuide":"Guide de l'utilisateur CKEditor en anglais"},"basicstyles":{"bold":"Gras","italic":"Italique","strike":"Barré","subscript":"Indice","superscript":"Exposant","underline":"Souligné"},"blockquote":{"toolbar":"Citation"},"clipboard":{"copy":"Copier","copyError":"Les paramètres de sécurité de votre navigateur ne permettent pas à l'éditeur d'exécuter automatiquement des opérations de copie. Veuillez utiliser le raccourci clavier (Ctrl/Cmd+C).","cut":"Couper","cutError":"Les paramètres de sécurité de votre navigateur ne permettent pas à l'éditeur d'exécuter automatiquement l'opération \"couper\". Veuillez utiliser le raccourci clavier (Ctrl/Cmd+X).","paste":"Coller","pasteArea":"Coller la zone","pasteMsg":"Veuillez coller le texte dans la zone suivante en utilisant le raccourci clavier (<strong>Ctrl/Cmd+V</strong>) et cliquez sur OK.","securityMsg":"A cause des paramètres de sécurité de votre navigateur, l'éditeur n'est pas en mesure d'accéder directement à vos données contenues dans le presse-papier. Vous devriez réessayer de coller les données dans la fenêtre.","title":"Coller"},"contextmenu":{"options":"Options du menu contextuel"},"toolbar":{"toolbarCollapse":"Enrouler la barre d'outils","toolbarExpand":"Dérouler la barre d'outils","toolbarGroups":{"document":"Document","clipboard":"Presse-papier/Défaire","editing":"Editer","forms":"Formulaires","basicstyles":"Styles de base","paragraph":"Paragraphe","links":"Liens","insert":"Insérer","styles":"Styles","colors":"Couleurs","tools":"Outils"},"toolbars":"Barre d'outils de l'éditeur"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 éléments"},"format":{"label":"Format","panelTitle":"Format de paragraphe","tag_address":"Adresse","tag_div":"Normal (DIV)","tag_h1":"Titre 1","tag_h2":"Titre 2","tag_h3":"Titre 3","tag_h4":"Titre 4","tag_h5":"Titre 5","tag_h6":"Titre 6","tag_p":"Normal","tag_pre":"Formaté"},"horizontalrule":{"toolbar":"Ligne horizontale"},"image":{"alertUrl":"Veuillez entrer l'adresse de l'image","alt":"Texte de remplacement","border":"Bordure","btnUpload":"Envoyer sur le serveur","button2Img":"Voulez-vous transformer le bouton image sélectionné en simple image?","hSpace":"Espacement horizontal","img2Button":"Voulez-vous transformer l'image en bouton image?","infoTab":"Informations sur l'image","linkTab":"Lien","lockRatio":"Conserver les proportions","menu":"Propriétés de l'image","resetSize":"Taille d'origine","title":"Propriétés de l'image","titleButton":"Propriétés du bouton image","upload":"Envoyer","urlMissing":"L'adresse source de l'image est manquante.","vSpace":"Espacement vertical","validateBorder":"Bordure doit être un entier.","validateHSpace":"HSpace doit être un entier.","validateVSpace":"VSpace doit être un entier."},"indent":{"indent":"Augmenter le retrait (tabulation)","outdent":"Diminuer le retrait (tabulation)"},"fakeobjects":{"anchor":"Ancre","flash":"Animation Flash","hiddenfield":"Champ caché","iframe":"IFrame","unknown":"Objet inconnu"},"link":{"acccessKey":"Touche d'accessibilité","advanced":"Avancé","advisoryContentType":"Type de contenu (ex: text/html)","advisoryTitle":"Description (title)","anchor":{"toolbar":"Ancre","menu":"Editer l'ancre","title":"Propriétés de l'ancre","name":"Nom de l'ancre","errorName":"Veuillez entrer le nom de l'ancre.","remove":"Supprimer l'ancre"},"anchorId":"Par ID d'élément","anchorName":"Par nom d'ancre","charset":"Charset de la cible","cssClasses":"Classe CSS","emailAddress":"Adresse E-Mail","emailBody":"Corps du message","emailSubject":"Sujet du message","id":"Id","info":"Infos sur le lien","langCode":"Code de langue","langDir":"Sens d'écriture","langDirLTR":"Gauche à droite","langDirRTL":"Droite à gauche","menu":"Editer le lien","name":"Nom","noAnchors":"(Aucune ancre disponible dans ce document)","noEmail":"Veuillez entrer l'adresse e-mail","noUrl":"Veuillez entrer l'adresse du lien","other":"<autre>","popupDependent":"Dépendante (Netscape)","popupFeatures":"Options de la fenêtre popup","popupFullScreen":"Plein écran (IE)","popupLeft":"Position gauche","popupLocationBar":"Barre d'adresse","popupMenuBar":"Barre de menu","popupResizable":"Redimensionnable","popupScrollBars":"Barres de défilement","popupStatusBar":"Barre de status","popupToolbar":"Barre d'outils","popupTop":"Position haute","rel":"Relation","selectAnchor":"Sélectionner l'ancre","styles":"Style","tabIndex":"Index de tabulation","target":"Cible","targetFrame":"<cadre>","targetFrameName":"Nom du Cadre destination","targetPopup":"<fenêtre popup>","targetPopupName":"Nom de la fenêtre popup","title":"Lien","toAnchor":"Transformer le lien en ancre dans le texte","toEmail":"E-mail","toUrl":"URL","toolbar":"Lien","type":"Type de lien","unlink":"Supprimer le lien","upload":"Envoyer"},"list":{"bulletedlist":"Insérer/Supprimer la liste à puces","numberedlist":"Insérer/Supprimer la liste numérotée"},"magicline":{"title":"Insérez un paragraphe ici"},"maximize":{"maximize":"Agrandir","minimize":"Minimiser"},"pastetext":{"button":"Coller comme texte sans mise en forme","title":"Coller comme texte sans mise en forme"},"pastefromword":{"confirmCleanup":"Le texte à coller semble provenir de Word. Désirez-vous le nettoyer avant de coller?","error":"Il n'a pas été possible de nettoyer les données collées à la suite d'une erreur interne.","title":"Coller depuis Word","toolbar":"Coller depuis Word"},"removeformat":{"toolbar":"Supprimer la mise en forme"},"sourcearea":{"toolbar":"Source"},"specialchar":{"options":"Options des caractères spéciaux","title":"Sélectionnez un caractère","toolbar":"Insérer un caractère spécial"},"scayt":{"about":"A propos de SCAYT","aboutTab":"À propos de","addWord":"Ajouter le mot","allCaps":"Ignorer les mots entièrement en majuscules","dic_create":"Créer","dic_delete":"Effacer","dic_field_name":"Nom du dictionnaire","dic_info":"Initialement, le dictionnaire de l'utilisateur est stocké dans un cookie. Cependant, les cookies sont limités en taille. Quand le dictionnaire atteint une taille qu'il n'est plus possible de stocker dans un cookie, il peut alors être stocké sur nos serveurs. Afin de stocker votre dictionnaire personnel sur nos serveurs, vous devez spécifier un nom pour ce dictionnaire. Si vous avez déjà un dictionnaire stocké, merci de taper son nom puis cliquer sur Restaurer pour le récupérer.","dic_rename":"Renommer","dic_restore":"Restaurer","dictionariesTab":"Dictionnaires","disable":"Désactiver SCAYT","emptyDic":"Le nom du dictionnaire ne devrait pas être vide.","enable":"Activer SCAYT","ignore":"Ignorer","ignoreAll":"Ignorer Tout","ignoreDomainNames":"Ignorer les noms de domaines","langs":"Langues","languagesTab":"Langues","mixedCase":"Ignorer les mots à casse multiple","mixedWithDigits":"Ignorer les mots contenant des chiffres","moreSuggestions":"Plus de suggestions","opera_title":"Non supporté par Opera","options":"Options","optionsTab":"Options","title":"Vérification de l'Orthographe en Cours de Frappe (SCAYT)","toggle":"Activer/Désactiver SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"Styles","panelTitle":"Styles de mise en page","panelTitle1":"Styles de blocs","panelTitle2":"Styles en ligne","panelTitle3":"Styles d'objet"},"table":{"border":"Taille de la bordure","caption":"Titre du tableau","cell":{"menu":"Cellule","insertBefore":"Insérer une cellule avant","insertAfter":"Insérer une cellule après","deleteCell":"Supprimer les cellules","merge":"Fusionner les cellules","mergeRight":"Fusionner à droite","mergeDown":"Fusionner en bas","splitHorizontal":"Fractionner horizontalement","splitVertical":"Fractionner verticalement","title":"Propriétés de la cellule","cellType":"Type de cellule","rowSpan":"Fusion de lignes","colSpan":"Fusion de colonnes","wordWrap":"Césure","hAlign":"Alignement Horizontal","vAlign":"Alignement Vertical","alignBaseline":"Bas du texte","bgColor":"Couleur d'arrière-plan","borderColor":"Couleur de Bordure","data":"Données","header":"Entête","yes":"Oui","no":"Non","invalidWidth":"La Largeur de Cellule doit être un nombre.","invalidHeight":"La Hauteur de Cellule doit être un nombre.","invalidRowSpan":"La fusion de lignes doit être un nombre entier.","invalidColSpan":"La fusion de colonnes doit être un nombre entier.","chooseColor":"Choisissez"},"cellPad":"Marge interne des cellules","cellSpace":"Espacement des cellules","column":{"menu":"Colonnes","insertBefore":"Insérer une colonne avant","insertAfter":"Insérer une colonne après","deleteColumn":"Supprimer les colonnes"},"columns":"Colonnes","deleteTable":"Supprimer le tableau","headers":"En-Têtes","headersBoth":"Les deux","headersColumn":"Première colonne","headersNone":"Aucunes","headersRow":"Première ligne","invalidBorder":"La taille de la bordure doit être un nombre.","invalidCellPadding":"La marge intérieure des cellules doit être un nombre positif.","invalidCellSpacing":"L'espacement des cellules doit être un nombre positif.","invalidCols":"Le nombre de colonnes doit être supérieur à 0.","invalidHeight":"La hauteur du tableau doit être un nombre.","invalidRows":"Le nombre de lignes doit être supérieur à 0.","invalidWidth":"La largeur du tableau doit être un nombre.","menu":"Propriétés du tableau","row":{"menu":"Ligne","insertBefore":"Insérer une ligne avant","insertAfter":"Insérer une ligne après","deleteRow":"Supprimer les lignes"},"rows":"Lignes","summary":"Résumé (description)","title":"Propriétés du tableau","toolbar":"Tableau","widthPc":"% pourcents","widthPx":"pixels","widthUnit":"unité de largeur"},"undo":{"redo":"Rétablir","undo":"Annuler"},"wsc":{"btnIgnore":"Ignorer","btnIgnoreAll":"Ignorer tout","btnReplace":"Remplacer","btnReplaceAll":"Remplacer tout","btnUndo":"Annuler","changeTo":"Modifier pour","errorLoading":"Erreur du chargement du service depuis l'hôte : %s.","ieSpellDownload":"La vérification d'orthographe n'est pas installée. Voulez-vous la télécharger maintenant?","manyChanges":"Vérification de l'orthographe terminée : %1 mots corrigés.","noChanges":"Vérification de l'orthographe terminée : Aucun mot corrigé.","noMispell":"Vérification de l'orthographe terminée : aucune erreur trouvée.","noSuggestions":"- Aucune suggestion -","notAvailable":"Désolé, le service est indisponible actuellement.","notInDic":"N'existe pas dans le dictionnaire.","oneChange":"Vérification de l'orthographe terminée : Un seul mot corrigé.","progress":"Vérification de l'orthographe en cours...","title":"Vérifier l'orthographe","toolbar":"Vérifier l'orthographe"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/gl.js b/assets/plugins/ckeditor/lang/gl.js deleted file mode 100644 index bdf5600e..00000000 --- a/assets/plugins/ckeditor/lang/gl.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['gl']={"editor":"Editor de texto mellorado","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Prema ALT 0 para obter axuda","browseServer":"Examinar o servidor","url":"URL","protocol":"Protocolo","upload":"Enviar","uploadSubmit":"Enviar ao servidor","image":"Imaxe","flash":"Flash","form":"Formulario","checkbox":"Caixa de selección","radio":"Botón de opción","textField":"Campo de texto","textarea":"Área de texto","hiddenField":"Campo agochado","button":"Botón","select":"Campo de selección","imageButton":"Botón de imaxe","notSet":"<sen estabelecer>","id":"ID","name":"Nome","langDir":"Dirección de escritura do idioma","langDirLtr":"Esquerda a dereita (LTR)","langDirRtl":"Dereita a esquerda (RTL)","langCode":"Código do idioma","longDescr":"Descrición completa do URL","cssClass":"Clases da folla de estilos","advisoryTitle":"Título","cssStyle":"Estilo","ok":"Aceptar","cancel":"Cancelar","close":"Pechar","preview":"Vista previa","resize":"Redimensionar","generalTab":"Xeral","advancedTab":"Avanzado","validateNumberFailed":"Este valor non é un número.","confirmNewPage":"Calquera cambio que non gardara neste contido perderase.\r\nConfirma que quere cargar unha páxina nova?","confirmCancel":"Algunhas das opcións foron cambiadas.\r\nConfirma que quere pechar o diálogo?","options":"Opcións","target":"Destino","targetNew":"Nova xanela (_blank)","targetTop":"Xanela principal (_top)","targetSelf":"Mesma xanela (_self)","targetParent":"Xanela superior (_parent)","langDirLTR":"Esquerda a dereita (LTR)","langDirRTL":"Dereita a esquerda (RTL)","styles":"Estilo","cssClasses":"Clases da folla de estilos","width":"Largo","height":"Alto","align":"Aliñamento","alignLeft":"Esquerda","alignRight":"Dereita","alignCenter":"Centro","alignTop":"Arriba","alignMiddle":"Centro","alignBottom":"Abaixo","invalidValue":"Valor incorrecto.","invalidHeight":"O alto debe ser un número.","invalidWidth":"O largo debe ser un número.","invalidCssLength":"O valor especificado para o campo «%1» debe ser un número positivo con ou sen unha unidade de medida CSS correcta (px, %, in, cm, mm, em, ex, pt, ou pc).","invalidHtmlLength":"O valor especificado para o campo «%1» debe ser un número positivo con ou sen unha unidade de medida HTML correcta (px ou %).","invalidInlineStyle":"O valor especificado no estilo en liña debe consistir nunha ou máis tuplas co formato «nome : valor», separadas por punto e coma.","cssLengthTooltip":"Escriba un número para o valor en píxeles ou un número cunha unidade CSS correcta (px, %, in, cm, mm, em, ex, pt, ou pc).","unavailable":"%1<span class=\"cke_accessibility\">, non dispoñíbel</span>"},"about":{"copy":"Copyright &copy; $1. Todos os dereitos reservados.","dlgTitle":"Sobre o CKEditor","help":"Consulte $1 para obter axuda.","moreInfo":"Para obter información sobre a licenza, visite o noso sitio web:","title":"Sobre o CKEditor","userGuide":"Guía do usuario do CKEditor"},"basicstyles":{"bold":"Negra","italic":"Cursiva","strike":"Riscado","subscript":"Subíndice","superscript":"Superíndice","underline":"Subliñado"},"blockquote":{"toolbar":"Cita"},"clipboard":{"copy":"Copiar","copyError":"Os axustes de seguranza do seu navegador non permiten que o editor realice automaticamente as tarefas de copia. Use o teclado para iso (Ctrl/Cmd+C).","cut":"Cortar","cutError":"Os axustes de seguranza do seu navegador non permiten que o editor realice automaticamente as tarefas de corte. Use o teclado para iso (Ctrl/Cmd+X).","paste":"Pegar","pasteArea":"Zona de pegado","pasteMsg":"Pegue dentro do seguinte cadro usando o teclado (<STRONG>Ctrl/Cmd+V</STRONG>) e prema en Aceptar","securityMsg":"Por mor da configuración de seguranza do seu navegador, o editor non ten acceso ao portapapeis. É necesario pegalo novamente nesta xanela.","title":"Pegar"},"contextmenu":{"options":"Opcións do menú contextual"},"toolbar":{"toolbarCollapse":"Contraer a barra de ferramentas","toolbarExpand":"Expandir a barra de ferramentas","toolbarGroups":{"document":"Documento","clipboard":"Portapapeis/desfacer","editing":"Edición","forms":"Formularios","basicstyles":"Estilos básicos","paragraph":"Paragrafo","links":"Ligazóns","insert":"Inserir","styles":"Estilos","colors":"Cores","tools":"Ferramentas"},"toolbars":"Barras de ferramentas do editor"},"elementspath":{"eleLabel":"Ruta dos elementos","eleTitle":"Elemento %1"},"format":{"label":"Formato","panelTitle":"Formato do parágrafo","tag_address":"Enderezo","tag_div":"Normal (DIV)","tag_h1":"Enacabezado 1","tag_h2":"Encabezado 2","tag_h3":"Encabezado 3","tag_h4":"Encabezado 4","tag_h5":"Encabezado 5","tag_h6":"Encabezado 6","tag_p":"Normal","tag_pre":"Formatado"},"horizontalrule":{"toolbar":"Inserir unha liña horizontal"},"image":{"alertUrl":"Escriba o URL da imaxe","alt":"Texto alternativo","border":"Bordo","btnUpload":"Enviar ao servidor","button2Img":"Quere converter o botón da imaxe seleccionada nunha imaxe sinxela?","hSpace":"Esp.Horiz.","img2Button":"Quere converter a imaxe seleccionada nun botón de imaxe?","infoTab":"Información da imaxe","linkTab":"Ligazón","lockRatio":"Proporcional","menu":"Propiedades da imaxe","resetSize":"Tamaño orixinal","title":"Propiedades da imaxe","titleButton":"Propiedades do botón de imaxe","upload":"Cargar","urlMissing":"Non se atopa o URL da imaxe.","vSpace":"Esp.Vert.","validateBorder":"O bordo debe ser un número.","validateHSpace":"O espazado horizontal debe ser un número.","validateVSpace":"O espazado vertical debe ser un número."},"indent":{"indent":"Aumentar a sangría","outdent":"Reducir a sangría"},"fakeobjects":{"anchor":"Ancoraxe","flash":"Animación «Flash»","hiddenfield":"Campo agochado","iframe":"IFrame","unknown":"Obxecto descoñecido"},"link":{"acccessKey":"Chave de acceso","advanced":"Avanzado","advisoryContentType":"Tipo de contido informativo","advisoryTitle":"Título","anchor":{"toolbar":"Ancoraxe","menu":"Editar a ancoraxe","title":"Propiedades da ancoraxe","name":"Nome da ancoraxe","errorName":"Escriba o nome da ancoraxe","remove":"Retirar a ancoraxe"},"anchorId":"Polo ID do elemento","anchorName":"Polo nome da ancoraxe","charset":"Codificación do recurso ligado","cssClasses":"Clases da folla de estilos","emailAddress":"Enderezo de correo","emailBody":"Corpo da mensaxe","emailSubject":"Asunto da mensaxe","id":"ID","info":"Información da ligazón","langCode":"Código do idioma","langDir":"Dirección de escritura do idioma","langDirLTR":"Esquerda a dereita (LTR)","langDirRTL":"Dereita a esquerda (RTL)","menu":"Editar a ligazón","name":"Nome","noAnchors":"(Non hai ancoraxes dispoñíbeis no documento)","noEmail":"Escriba o enderezo de correo","noUrl":"Escriba a ligazón URL","other":"<outro>","popupDependent":"Dependente (Netscape)","popupFeatures":"Características da xanela emerxente","popupFullScreen":"Pantalla completa (IE)","popupLeft":"Posición esquerda","popupLocationBar":"Barra de localización","popupMenuBar":"Barra do menú","popupResizable":"Redimensionábel","popupScrollBars":"Barras de desprazamento","popupStatusBar":"Barra de estado","popupToolbar":"Barra de ferramentas","popupTop":"Posición superior","rel":"Relación","selectAnchor":"Seleccionar unha ancoraxe","styles":"Estilo","tabIndex":"Índice de tabulación","target":"Destino","targetFrame":"<marco>","targetFrameName":"Nome do marco de destino","targetPopup":"<xanela emerxente>","targetPopupName":"Nome da xanela emerxente","title":"Ligazón","toAnchor":"Ligar coa ancoraxe no testo","toEmail":"Correo","toUrl":"URL","toolbar":"Ligazón","type":"Tipo de ligazón","unlink":"Eliminar a ligazón","upload":"Enviar"},"list":{"bulletedlist":"Inserir/retirar lista viñeteada","numberedlist":"Inserir/retirar lista numerada"},"magicline":{"title":"Inserir aquí o parágrafo"},"maximize":{"maximize":"Maximizar","minimize":"Minimizar"},"pastetext":{"button":"Pegar como texto simple","title":"Pegar como texto simple"},"pastefromword":{"confirmCleanup":"O texto que quere pegar semella ser copiado desde o Word. Quere depuralo antes de pegalo?","error":"Non foi posíbel depurar os datos pegados por mor dun erro interno","title":"Pegar desde Word","toolbar":"Pegar desde Word"},"removeformat":{"toolbar":"Retirar o formato"},"sourcearea":{"toolbar":"Orixe"},"specialchar":{"options":"Opcións de caracteres especiais","title":"Seleccione un carácter especial","toolbar":"Inserir un carácter especial"},"scayt":{"about":"About SCAYT","aboutTab":"About","addWord":"Add Word","allCaps":"Ignore All-Caps Words","dic_create":"Create","dic_delete":"Delete","dic_field_name":"Dictionary name","dic_info":"Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.","dic_rename":"Rename","dic_restore":"Restore","dictionariesTab":"Dictionaries","disable":"Disable SCAYT","emptyDic":"Dictionary name should not be empty.","enable":"Enable SCAYT","ignore":"Ignore","ignoreAll":"Ignore All","ignoreDomainNames":"Ignore Domain Names","langs":"Languages","languagesTab":"Languages","mixedCase":"Ignore Words with Mixed Case","mixedWithDigits":"Ignore Words with Numbers","moreSuggestions":"More suggestions","opera_title":"Not supported by Opera","options":"Options","optionsTab":"Options","title":"Spell Check As You Type","toggle":"Toggle SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"Estilos","panelTitle":"Estilos de formatando","panelTitle1":"Estilos de bloque","panelTitle2":"Estilos de carácter","panelTitle3":"Estilos de obxecto"},"table":{"border":"Tamaño do bordo","caption":"Título","cell":{"menu":"Cela","insertBefore":"Inserir a cela á esquerda","insertAfter":"Inserir a cela á dereita","deleteCell":"Eliminar celas","merge":"Combinar celas","mergeRight":"Combinar á dereita","mergeDown":"Combinar cara abaixo","splitHorizontal":"Dividir a cela en horizontal","splitVertical":"Dividir a cela en vertical","title":"Propiedades da cela","cellType":"Tipo de cela","rowSpan":"Expandir filas","colSpan":"Expandir columnas","wordWrap":"Axustar ao contido","hAlign":"Aliñación horizontal","vAlign":"Aliñación vertical","alignBaseline":"Liña de base","bgColor":"Cor do fondo","borderColor":"Cor do bordo","data":"Datos","header":"Cabeceira","yes":"Si","no":"Non","invalidWidth":"O largo da cela debe ser un número.","invalidHeight":"O alto da cela debe ser un número.","invalidRowSpan":"A expansión de filas debe ser un número enteiro.","invalidColSpan":"A expansión de columnas debe ser un número enteiro.","chooseColor":"Escoller"},"cellPad":"Marxe interior da cela","cellSpace":"Marxe entre celas","column":{"menu":"Columna","insertBefore":"Inserir a columna á esquerda","insertAfter":"Inserir a columna á dereita","deleteColumn":"Borrar Columnas"},"columns":"Columnas","deleteTable":"Borrar Táboa","headers":"Cabeceiras","headersBoth":"Ambas","headersColumn":"Primeira columna","headersNone":"Ningún","headersRow":"Primeira fila","invalidBorder":"O tamaño do bordo debe ser un número.","invalidCellPadding":"A marxe interior debe ser un número positivo.","invalidCellSpacing":"A marxe entre celas debe ser un número positivo.","invalidCols":"O número de columnas debe ser un número maior que 0.","invalidHeight":"O alto da táboa debe ser un número.","invalidRows":"O número de filas debe ser un número maior que 0","invalidWidth":"O largo da táboa debe ser un número.","menu":"Propiedades da táboa","row":{"menu":"Fila","insertBefore":"Inserir a fila por riba","insertAfter":"Inserir a fila por baixo","deleteRow":"Eliminar filas"},"rows":"Filas","summary":"Resumo","title":"Propiedades da táboa","toolbar":"Taboa","widthPc":"porcentaxe","widthPx":"píxeles","widthUnit":"unidade do largo"},"undo":{"redo":"Refacer","undo":"Desfacer"},"wsc":{"btnIgnore":"Ignorar","btnIgnoreAll":"Ignorar Todas","btnReplace":"Substituir","btnReplaceAll":"Substituir Todas","btnUndo":"Desfacer","changeTo":"Cambiar a","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"O corrector ortográfico non está instalado. ¿Quere descargalo agora?","manyChanges":"Corrección ortográfica rematada: %1 verbas substituidas","noChanges":"Corrección ortográfica rematada: Non se substituiu nengunha verba","noMispell":"Corrección ortográfica rematada: Non se atoparon erros","noSuggestions":"- Sen candidatos -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Non está no diccionario","oneChange":"Corrección ortográfica rematada: Unha verba substituida","progress":"Corrección ortográfica en progreso...","title":"Spell Check","toolbar":"Corrección Ortográfica"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/gu.js b/assets/plugins/ckeditor/lang/gu.js deleted file mode 100644 index c448cf4e..00000000 --- a/assets/plugins/ckeditor/lang/gu.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['gu']={"editor":"રીચ ટેક્ષ્ત્ એડીટર","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"પ્રેસ ALT 0 મદદ માટ","browseServer":"સર્વર બ્રાઉઝ કરો","url":"URL","protocol":"પ્રોટોકૉલ","upload":"અપલોડ","uploadSubmit":"આ સર્વરને મોકલવું","image":"ચિત્ર","flash":"ફ્લૅશ","form":"ફૉર્મ/પત્રક","checkbox":"ચેક બોક્સ","radio":"રેડિઓ બટન","textField":"ટેક્સ્ટ ફીલ્ડ, શબ્દ ક્ષેત્ર","textarea":"ટેક્સ્ટ એરિઆ, શબ્દ વિસ્તાર","hiddenField":"ગુપ્ત ક્ષેત્ર","button":"બટન","select":"પસંદગી ક્ષેત્ર","imageButton":"ચિત્ર બટન","notSet":"<સેટ નથી>","id":"Id","name":"નામ","langDir":"ભાષા લેખવાની પદ્ધતિ","langDirLtr":"ડાબે થી જમણે (LTR)","langDirRtl":"જમણે થી ડાબે (RTL)","langCode":"ભાષા કોડ","longDescr":"વધારે માહિતી માટે URL","cssClass":"સ્ટાઇલ-શીટ ક્લાસ","advisoryTitle":"મુખ્ય મથાળું","cssStyle":"સ્ટાઇલ","ok":"ઠીક છે","cancel":"રદ કરવું","close":"બંધ કરવું","preview":"જોવું","resize":"ખેંચી ને યોગ્ય કરવું","generalTab":"જનરલ","advancedTab":"અડ્વાન્સડ","validateNumberFailed":"આ રકમ આકડો નથી.","confirmNewPage":"સવે કાર્ય વગરનું ફકરો ખોવાઈ જશે. તમને ખાતરી છે કે તમને નવું પાનું ખોલવું છે?","confirmCancel":"ઘણા વિકલ્પો બદલાયા છે. તમારે આ બોક્ષ્ બંધ કરવું છે?","options":"વિકલ્પો","target":"લક્ષ્ય","targetNew":"નવી વિન્ડો (_blank)","targetTop":"ઉપરની વિન્ડો (_top)","targetSelf":"એજ વિન્ડો (_self)","targetParent":"પેરનટ વિન્ડો (_parent)","langDirLTR":"ડાબે થી જમણે (LTR)","langDirRTL":"જમણે થી ડાબે (RTL)","styles":"શૈલી","cssClasses":"શૈલી કલાસીસ","width":"પહોળાઈ","height":"ઊંચાઈ","align":"લાઇનદોરીમાં ગોઠવવું","alignLeft":"ડાબી બાજુ ગોઠવવું","alignRight":"જમણી","alignCenter":"મધ્ય સેન્ટર","alignTop":"ઉપર","alignMiddle":"વચ્ચે","alignBottom":"નીચે","invalidValue":"Invalid value.","invalidHeight":"ઉંચાઈ એક આંકડો હોવો જોઈએ.","invalidWidth":"પોહળ ઈ એક આંકડો હોવો જોઈએ.","invalidCssLength":"\"%1\" ની વેલ્યુ એક પોસીટીવ આંકડો હોવો જોઈએ અથવા CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc) વગર.","invalidHtmlLength":"\"%1\" ની વેલ્યુ એક પોસીટીવ આંકડો હોવો જોઈએ અથવા HTML measurement unit (px or %) વગર.","invalidInlineStyle":"ઈનલાઈન સ્ટાઈલ ની વેલ્યુ \"name : value\" ના ફોર્મેટ માં હોવી જોઈએ, વચ્ચે સેમી-કોલોન જોઈએ.","cssLengthTooltip":"પિક્ષ્લ્ નો આંકડો CSS unit (px, %, in, cm, mm, em, ex, pt, or pc) માં નાખો.","unavailable":"%1<span class=\"cke_accessibility\">, નથી મળતું</span>"},"about":{"copy":"કોપીરાઈટ &copy; $1. ઓલ રાઈટ્સ ","dlgTitle":"CKEditor વિષે","help":"મદદ માટે $1 તપાસો","moreInfo":"લાયસનસની માહિતી માટે અમારી વેબ સાઈટ","title":"CKEditor વિષે","userGuide":"CKEditor યુઝર્સ ગાઈડ"},"basicstyles":{"bold":"બોલ્ડ/સ્પષ્ટ","italic":"ઇટેલિક, ત્રાંસા","strike":"છેકી નાખવું","subscript":"એક ચિહ્નની નીચે કરેલું બીજું ચિહ્ન","superscript":"એક ચિહ્ન ઉપર કરેલું બીજું ચિહ્ન.","underline":"અન્ડર્લાઇન, નીચે લીટી"},"blockquote":{"toolbar":"બ્લૉક-કોટ, અવતરણચિહ્નો"},"clipboard":{"copy":"નકલ","copyError":"તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસ કોપી કરવાની પરવાનગી નથી આપતી. (Ctrl/Cmd+C) का प्रयोग करें।","cut":"કાપવું","cutError":"તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસ કટ કરવાની પરવાનગી નથી આપતી. (Ctrl/Cmd+X) નો ઉપયોગ કરો.","paste":"પેસ્ટ","pasteArea":"પેસ્ટ કરવાની જગ્યા","pasteMsg":"Ctrl/Cmd+V નો પ્રયોગ કરી પેસ્ટ કરો","securityMsg":"તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસના કારણે,એડિટર તમારા કિલ્પબોર્ડ ડેટા ને કોપી નથી કરી શકતો. તમારે આ વિન્ડોમાં ફરીથી પેસ્ટ કરવું પડશે.","title":"પેસ્ટ"},"contextmenu":{"options":"કોન્તેક્ષ્ત્ મેનુના વિકલ્પો"},"toolbar":{"toolbarCollapse":"ટૂલબાર નાનું કરવું","toolbarExpand":"ટૂલબાર મોટું કરવું","toolbarGroups":{"document":"દસ્તાવેજ","clipboard":"ક્લિપબોર્ડ/અન","editing":"એડીટ કરવું","forms":"ફોર્મ","basicstyles":"બેસિક્ સ્ટાઇલ","paragraph":"ફકરો","links":"લીંક","insert":"ઉમેરવું","styles":"સ્ટાઇલ","colors":"રંગ","tools":"ટૂલ્સ"},"toolbars":"એડીટર ટૂલ બાર"},"elementspath":{"eleLabel":"એલીમેન્ટ્સ નો ","eleTitle":"એલીમેન્ટ %1"},"format":{"label":"ફૉન્ટ ફૉર્મટ, રચનાની શૈલી","panelTitle":"ફૉન્ટ ફૉર્મટ, રચનાની શૈલી","tag_address":"સરનામું","tag_div":"શીર્ષક (DIV)","tag_h1":"શીર્ષક 1","tag_h2":"શીર્ષક 2","tag_h3":"શીર્ષક 3","tag_h4":"શીર્ષક 4","tag_h5":"શીર્ષક 5","tag_h6":"શીર્ષક 6","tag_p":"સામાન્ય","tag_pre":"ફૉર્મટેડ"},"horizontalrule":{"toolbar":"સમસ્તરીય રેખા ઇન્સર્ટ/દાખલ કરવી"},"image":{"alertUrl":"ચિત્રની URL ટાઇપ કરો","alt":"ઑલ્ટર્નટ ટેક્સ્ટ","border":"બોર્ડર","btnUpload":"આ સર્વરને મોકલવું","button2Img":"તમારે ઈમેજ બટનને સાદી ઈમેજમાં બદલવું છે.","hSpace":"સમસ્તરીય જગ્યા","img2Button":"તમારે સાદી ઈમેજને ઈમેજ બટનમાં બદલવું છે.","infoTab":"ચિત્ર ની જાણકારી","linkTab":"લિંક","lockRatio":"લૉક ગુણોત્તર","menu":"ચિત્રના ગુણ","resetSize":"રીસેટ સાઇઝ","title":"ચિત્રના ગુણ","titleButton":"ચિત્ર બટનના ગુણ","upload":"અપલોડ","urlMissing":"ઈમેજની મૂળ URL છે નહી.","vSpace":"લંબરૂપ જગ્યા","validateBorder":"બોર્ડેર આંકડો હોવો જોઈએ.","validateHSpace":"HSpaceઆંકડો હોવો જોઈએ.","validateVSpace":"VSpace આંકડો હોવો જોઈએ. "},"indent":{"indent":"ઇન્ડેન્ટ, લીટીના આરંભમાં જગ્યા વધારવી","outdent":"ઇન્ડેન્ટ લીટીના આરંભમાં જગ્યા ઘટાડવી"},"fakeobjects":{"anchor":"અનકર","flash":"ફ્લેશ ","hiddenfield":"હિડન ","iframe":"IFrame","unknown":"અનનોન ઓબ્જેક્ટ"},"link":{"acccessKey":"ઍક્સેસ કી","advanced":"અડ્વાન્સડ","advisoryContentType":"મુખ્ય કન્ટેન્ટ પ્રકાર","advisoryTitle":"મુખ્ય મથાળું","anchor":{"toolbar":"ઍંકર ઇન્સર્ટ/દાખલ કરવી","menu":"ઍંકરના ગુણ","title":"ઍંકરના ગુણ","name":"ઍંકરનું નામ","errorName":"ઍંકરનું નામ ટાઈપ કરો","remove":"સ્થિર નકરવું"},"anchorId":"ઍંકર એલિમન્ટ Id થી પસંદ કરો","anchorName":"ઍંકર નામથી પસંદ કરો","charset":"લિંક રિસૉર્સ કૅરિક્ટર સેટ","cssClasses":"સ્ટાઇલ-શીટ ક્લાસ","emailAddress":"ઈ-મેલ સરનામું","emailBody":"સંદેશ","emailSubject":"ઈ-મેલ વિષય","id":"Id","info":"લિંક ઇન્ફૉ ટૅબ","langCode":"ભાષા લેખવાની પદ્ધતિ","langDir":"ભાષા લેખવાની પદ્ધતિ","langDirLTR":"ડાબે થી જમણે (LTR)","langDirRTL":"જમણે થી ડાબે (RTL)","menu":" લિંક એડિટ/માં ફેરફાર કરવો","name":"નામ","noAnchors":"(ડૉક્યુમન્ટમાં ઍંકરની સંખ્યા)","noEmail":"ઈ-મેલ સરનામું ટાઇપ કરો","noUrl":"લિંક URL ટાઇપ કરો","other":"<other> <અન્ય>","popupDependent":"ડિપેન્ડન્ટ (Netscape)","popupFeatures":"પૉપ-અપ વિન્ડો ફીચરસૅ","popupFullScreen":"ફુલ સ્ક્રીન (IE)","popupLeft":"ડાબી બાજુ","popupLocationBar":"લોકેશન બાર","popupMenuBar":"મેન્યૂ બાર","popupResizable":"રીસાઈઝએબલ","popupScrollBars":"સ્ક્રોલ બાર","popupStatusBar":"સ્ટૅટસ બાર","popupToolbar":"ટૂલ બાર","popupTop":"જમણી બાજુ","rel":"સંબંધની સ્થિતિ","selectAnchor":"ઍંકર પસંદ કરો","styles":"સ્ટાઇલ","tabIndex":"ટૅબ ઇન્ડેક્સ","target":"ટાર્ગેટ/લક્ષ્ય","targetFrame":"<ફ્રેમ>","targetFrameName":"ટાર્ગેટ ફ્રેમ નું નામ","targetPopup":"<પૉપ-અપ વિન્ડો>","targetPopupName":"પૉપ-અપ વિન્ડો નું નામ","title":"લિંક","toAnchor":"આ પેજનો ઍંકર","toEmail":"ઈ-મેલ","toUrl":"URL","toolbar":"લિંક ઇન્સર્ટ/દાખલ કરવી","type":"લિંક પ્રકાર","unlink":"લિંક કાઢવી","upload":"અપલોડ"},"list":{"bulletedlist":"બુલેટ સૂચિ","numberedlist":"સંખ્યાંકન સૂચિ"},"magicline":{"title":"Insert paragraph here"},"maximize":{"maximize":"મોટું કરવું","minimize":"નાનું કરવું"},"pastetext":{"button":"પેસ્ટ (ટેક્સ્ટ)","title":"પેસ્ટ (ટેક્સ્ટ)"},"pastefromword":{"confirmCleanup":"તમે જે ટેક્ષ્ત્ કોપી કરી રહ્યા છો ટે વર્ડ ની છે. કોપી કરતા પેહલા સાફ કરવી છે?","error":"પેસ્ટ કરેલો ડેટા ઇન્ટરનલ એરર ના લીથે સાફ કરી શકાયો નથી.","title":"પેસ્ટ (વડૅ ટેક્સ્ટ)","toolbar":"પેસ્ટ (વડૅ ટેક્સ્ટ)"},"removeformat":{"toolbar":"ફૉર્મટ કાઢવું"},"sourcearea":{"toolbar":"મૂળ કે પ્રાથમિક દસ્તાવેજ"},"specialchar":{"options":"સ્પેશિઅલ કરેક્ટરના વિકલ્પો","title":"સ્પેશિઅલ વિશિષ્ટ અક્ષર પસંદ કરો","toolbar":"વિશિષ્ટ અક્ષર ઇન્સર્ટ/દાખલ કરવું"},"scayt":{"about":"SCAYT વિષે","aboutTab":"વિષે","addWord":"શબ્દ ઉમેરવો","allCaps":"ઓલ-કેપ્સ વર્ડ છોડી દો.","dic_create":"બનાવવું","dic_delete":"કાઢી નાખવું","dic_field_name":"શબ્દકોશ નામ","dic_info":"પેહલા User Dictionary, Cookie તરીકે સ્ટોર થાય છે. પણ Cookie ની સમતા ઓછી છે. જયારે User Dictionary, Cookie તરીકે સ્ટોર ના કરી શકાય, ત્યારે તે અમારા સર્વર પર સ્ટોર થાય છે. તમારી વ્યતિગત ડીકસ્નરી ને સર્વર પર સ્ટોર કરવા માટે તમારે તેનું નામ આપવું પડશે. જો તમે તમારી ડીકસ્નરી નું નામ આપેલું હોય તો તમે રિસ્ટોર બટન ક્લીક કરી શકો.","dic_rename":"નવું નામ આપવું","dic_restore":"પાછું ","dictionariesTab":"શબ્દકોશ","disable":"SCAYT ડિસેબલ કરવું","emptyDic":"ડિક્સનરીનું નામ ખાલી ના હોય.","enable":"SCAYT એનેબલ કરવું","ignore":"ઇગ્નોર","ignoreAll":"બધા ઇગ્નોર ","ignoreDomainNames":"ડોમેન નામ છોડી દો.","langs":"ભાષાઓ","languagesTab":"ભાષા","mixedCase":"મિક્સ કેસ વર્ડ છોડી દો.","mixedWithDigits":"આંકડા વાળા શબ્દ છોડી દો.","moreSuggestions":"વધારે વિકલ્પો","opera_title":"ઓપેરામાં સપોર્ટ નથી","options":"વિકલ્પો","optionsTab":"વિકલ્પો","title":"ટાઈપ કરતા સ્પેલ તપાસો","toggle":"SCAYT ટોગલ","noSuggestions":"No suggestion"},"stylescombo":{"label":"શૈલી/રીત","panelTitle":"ફોર્મેટ ","panelTitle1":"બ્લોક ","panelTitle2":"ઈનલાઈન ","panelTitle3":"ઓબ્જેક્ટ પદ્ધતિ"},"table":{"border":"કોઠાની બાજુ(બોર્ડર) સાઇઝ","caption":"મથાળું/કૅપ્શન ","cell":{"menu":"કોષના ખાના","insertBefore":"પહેલાં કોષ ઉમેરવો","insertAfter":"પછી કોષ ઉમેરવો","deleteCell":"કોષ ડિલીટ/કાઢી નાખવો","merge":"કોષ ભેગા કરવા","mergeRight":"જમણી બાજુ ભેગા કરવા","mergeDown":"નીચે ભેગા કરવા","splitHorizontal":"કોષને સમસ્તરીય વિભાજન કરવું","splitVertical":"કોષને સીધું ને ઊભું વિભાજન કરવું","title":"સેલના ગુણ","cellType":"સેલનો પ્રકાર","rowSpan":"આડી કટારની જગ્યા","colSpan":"ઊભી કતારની જગ્યા","wordWrap":"વર્ડ રેપ","hAlign":"સપાટ લાઈનદોરી","vAlign":"ઊભી લાઈનદોરી","alignBaseline":"બસે લાઈન","bgColor":"પાછાળનો રંગ","borderColor":"બોર્ડેર રંગ","data":"સ્વીકૃત માહિતી","header":"મથાળું","yes":"હા","no":"ના","invalidWidth":"સેલની પોહલાઈ આંકડો હોવો જોઈએ.","invalidHeight":"સેલની ઊંચાઈ આંકડો હોવો જોઈએ.","invalidRowSpan":"રો સ્પાન આંકડો હોવો જોઈએ.","invalidColSpan":"કોલમ સ્પાન આંકડો હોવો જોઈએ.","chooseColor":"પસંદ કરવું"},"cellPad":"સેલ પૅડિંગ","cellSpace":"સેલ અંતર","column":{"menu":"કૉલમ/ઊભી કટાર","insertBefore":"પહેલાં કૉલમ/ઊભી કટાર ઉમેરવી","insertAfter":"પછી કૉલમ/ઊભી કટાર ઉમેરવી","deleteColumn":"કૉલમ/ઊભી કટાર ડિલીટ/કાઢી નાખવી"},"columns":"કૉલમ/ઊભી કટાર","deleteTable":"કોઠો ડિલીટ/કાઢી નાખવું","headers":"મથાળા","headersBoth":"બેવું","headersColumn":"પહેલી ઊભી કટાર","headersNone":"નથી ","headersRow":"પહેલી કટાર","invalidBorder":"બોર્ડર એક આંકડો હોવો જોઈએ","invalidCellPadding":"સેલની અંદરની જગ્યા સુન્ય કરતા વધારે હોવી જોઈએ.","invalidCellSpacing":"સેલ વચ્ચેની જગ્યા સુન્ય કરતા વધારે હોવી જોઈએ.","invalidCols":"ઉભી કટાર, 0 કરતા વધારે હોવી જોઈએ.","invalidHeight":"ટેબલની ઊંચાઈ આંકડો હોવો જોઈએ.","invalidRows":"આડી કટાર, 0 કરતા વધારે હોવી જોઈએ.","invalidWidth":"ટેબલની પોહલાઈ આંકડો હોવો જોઈએ.","menu":"ટેબલ, કોઠાનું મથાળું","row":{"menu":"પંક્તિના ખાના","insertBefore":"પહેલાં પંક્તિ ઉમેરવી","insertAfter":"પછી પંક્તિ ઉમેરવી","deleteRow":"પંક્તિઓ ડિલીટ/કાઢી નાખવી"},"rows":"પંક્તિના ખાના","summary":"ટૂંકો એહેવાલ","title":"ટેબલ, કોઠાનું મથાળું","toolbar":"ટેબલ, કોઠો","widthPc":"પ્રતિશત","widthPx":"પિકસલ","widthUnit":"પોહાલાઈ એકમ"},"undo":{"redo":"રિડૂ; પછી હતી એવી સ્થિતિ પાછી લાવવી","undo":"રદ કરવું; પહેલાં હતી એવી સ્થિતિ પાછી લાવવી"},"wsc":{"btnIgnore":"ઇગ્નોર/અવગણના કરવી","btnIgnoreAll":"બધાની ઇગ્નોર/અવગણના કરવી","btnReplace":"બદલવું","btnReplaceAll":"બધા બદલી કરો","btnUndo":"અન્ડૂ","changeTo":"આનાથી બદલવું","errorLoading":"સર્વિસ એપ્લીકેશન લોડ નથી થ: %s.","ieSpellDownload":"સ્પેલ-ચેકર ઇન્સ્ટોલ નથી. શું તમે ડાઉનલોડ કરવા માંગો છો?","manyChanges":"શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: %1 શબ્દ બદલયા છે","noChanges":"શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: એકપણ શબ્દ બદલયો નથી","noMispell":"શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: ખોટી જોડણી મળી નથી","noSuggestions":"- કઇ સજેશન નથી -","notAvailable":"માફ કરશો, આ સુવિધા ઉપલબ્ધ નથી","notInDic":"શબ્દકોશમાં નથી","oneChange":"શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: એક શબ્દ બદલયો છે","progress":"શબ્દની જોડણી/સ્પેલ ચેક ચાલુ છે...","title":"સ્પેલ ","toolbar":"જોડણી (સ્પેલિંગ) તપાસવી"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/he.js b/assets/plugins/ckeditor/lang/he.js deleted file mode 100644 index 1e0f3a3b..00000000 --- a/assets/plugins/ckeditor/lang/he.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['he']={"editor":"עורך טקסט עשיר","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"לחץ אלט ALT + 0 לעזרה","browseServer":"סייר השרת","url":"כתובת (URL)","protocol":"פרוטוקול","upload":"העלאה","uploadSubmit":"שליחה לשרת","image":"תמונה","flash":"פלאש","form":"טופס","checkbox":"תיבת סימון","radio":"לחצן אפשרויות","textField":"שדה טקסט","textarea":"איזור טקסט","hiddenField":"שדה חבוי","button":"כפתור","select":"שדה בחירה","imageButton":"כפתור תמונה","notSet":"<לא נקבע>","id":"זיהוי (ID)","name":"שם","langDir":"כיוון שפה","langDirLtr":"שמאל לימין (LTR)","langDirRtl":"ימין לשמאל (RTL)","langCode":"קוד שפה","longDescr":"קישור לתיאור מפורט","cssClass":"מחלקת עיצוב (CSS Class)","advisoryTitle":"כותרת מוצעת","cssStyle":"סגנון","ok":"אישור","cancel":"ביטול","close":"סגירה","preview":"תצוגה מקדימה","resize":"יש לגרור בכדי לשנות את הגודל","generalTab":"כללי","advancedTab":"אפשרויות מתקדמות","validateNumberFailed":"הערך חייב להיות מספרי.","confirmNewPage":"כל השינויים שלא נשמרו יאבדו. האם להעלות דף חדש?","confirmCancel":"חלק מהאפשרויות שונו, האם לסגור את הדיאלוג?","options":"אפשרויות","target":"מטרה","targetNew":"חלון חדש (_blank)","targetTop":"החלון העליון ביותר (_top)","targetSelf":"אותו חלון (_self)","targetParent":"חלון האב (_parent)","langDirLTR":"שמאל לימין (LTR)","langDirRTL":"ימין לשמאל (RTL)","styles":"סגנון","cssClasses":"מחלקות גליונות סגנון","width":"רוחב","height":"גובה","align":"יישור","alignLeft":"לשמאל","alignRight":"לימין","alignCenter":"מרכז","alignTop":"למעלה","alignMiddle":"לאמצע","alignBottom":"לתחתית","invalidValue":"ערך לא חוקי.","invalidHeight":"הגובה חייב להיות מספר.","invalidWidth":"הרוחב חייב להיות מספר.","invalidCssLength":"הערך שצוין לשדה \"%1\" חייב להיות מספר חיובי עם או ללא יחידת מידה חוקית של CSS (px, %, in, cm, mm, em, ex, pt, או pc).","invalidHtmlLength":"הערך שצוין לשדה \"%1\" חייב להיות מספר חיובי עם או ללא יחידת מידה חוקית של HTML (px או %).","invalidInlineStyle":"הערך שצויין לשדה הסגנון חייב להכיל זוג ערכים אחד או יותר בפורמט \"שם : ערך\", מופרדים על ידי נקודה-פסיק.","cssLengthTooltip":"יש להכניס מספר המייצג פיקסלים או מספר עם יחידת גליונות סגנון תקינה (px, %, in, cm, mm, em, ex, pt, או pc).","unavailable":"%1<span class=\"cke_accessibility\">, לא זמין</span>"},"about":{"copy":"Copyright &copy; $1. כל הזכויות שמורות.","dlgTitle":"אודות CKEditor","help":"היכנסו ל$1 לעזרה.","moreInfo":"למידע נוסף בקרו באתרנו:","title":"אודות CKEditor","userGuide":"מדריך המשתמש של CKEditor"},"basicstyles":{"bold":"מודגש","italic":"נטוי","strike":"כתיב מחוק","subscript":"כתיב תחתון","superscript":"כתיב עליון","underline":"קו תחתון"},"blockquote":{"toolbar":"בלוק ציטוט"},"clipboard":{"copy":"העתקה","copyError":"הגדרות האבטחה בדפדפן שלך לא מאפשרות לעורך לבצע פעולות העתקה אוטומטיות. יש להשתמש במקלדת לשם כך (Ctrl/Cmd+C).","cut":"גזירה","cutError":"הגדרות האבטחה בדפדפן שלך לא מאפשרות לעורך לבצע פעולות גזירה אוטומטיות. יש להשתמש במקלדת לשם כך (Ctrl/Cmd+X).","paste":"הדבקה","pasteArea":"איזור הדבקה","pasteMsg":"נא להדביק בתוך הקופסה באמצעות (<b>Ctrl/Cmd+V</b>) וללחוץ על <b>אישור</b>.","securityMsg":"עקב הגדרות אבטחה בדפדפן, לא ניתן לגשת אל לוח הגזירים (Clipboard) בצורה ישירה. נא להדביק שוב בחלון זה.","title":"הדבקה"},"contextmenu":{"options":"אפשרויות תפריט ההקשר"},"toolbar":{"toolbarCollapse":"מזעור סרגל כלים","toolbarExpand":"הרחבת סרגל כלים","toolbarGroups":{"document":"מסמך","clipboard":"לוח הגזירים (Clipboard)/צעד אחרון","editing":"עריכה","forms":"טפסים","basicstyles":"עיצוב בסיסי","paragraph":"פסקה","links":"קישורים","insert":"הכנסה","styles":"עיצוב","colors":"צבעים","tools":"כלים"},"toolbars":"סרגלי כלים של העורך"},"elementspath":{"eleLabel":"עץ האלמנטים","eleTitle":"%1 אלמנט"},"format":{"label":"עיצוב","panelTitle":"עיצוב","tag_address":"כתובת","tag_div":"נורמלי (DIV)","tag_h1":"כותרת","tag_h2":"כותרת 2","tag_h3":"כותרת 3","tag_h4":"כותרת 4","tag_h5":"כותרת 5","tag_h6":"כותרת 6","tag_p":"נורמלי","tag_pre":"קוד"},"horizontalrule":{"toolbar":"הוספת קו אופקי"},"image":{"alertUrl":"יש להקליד את כתובת התמונה","alt":"טקסט חלופי","border":"מסגרת","btnUpload":"שליחה לשרת","button2Img":"האם להפוך את תמונת הכפתור לתמונה פשוטה?","hSpace":"מרווח אופקי","img2Button":"האם להפוך את התמונה לכפתור תמונה?","infoTab":"מידע על התמונה","linkTab":"קישור","lockRatio":"נעילת היחס","menu":"תכונות התמונה","resetSize":"איפוס הגודל","title":"מאפייני התמונה","titleButton":"מאפיני כפתור תמונה","upload":"העלאה","urlMissing":"כתובת התמונה חסרה.","vSpace":"מרווח אנכי","validateBorder":"שדה המסגרת חייב להיות מספר שלם.","validateHSpace":"שדה המרווח האופקי חייב להיות מספר שלם.","validateVSpace":"שדה המרווח האנכי חייב להיות מספר שלם."},"indent":{"indent":"הגדלת הזחה","outdent":"הקטנת הזחה"},"fakeobjects":{"anchor":"עוגן","flash":"סרטון פלאש","hiddenfield":"שדה חבוי","iframe":"חלון פנימי (iframe)","unknown":"אובייקט לא ידוע"},"link":{"acccessKey":"מקש גישה","advanced":"אפשרויות מתקדמות","advisoryContentType":"Content Type מוצע","advisoryTitle":"כותרת מוצעת","anchor":{"toolbar":"הוספת/עריכת נקודת עיגון","menu":"מאפייני נקודת עיגון","title":"מאפייני נקודת עיגון","name":"שם לנקודת עיגון","errorName":"יש להקליד שם לנקודת עיגון","remove":"מחיקת נקודת עיגון"},"anchorId":"עפ\"י זיהוי (ID) האלמנט","anchorName":"עפ\"י שם העוגן","charset":"קידוד המשאב המקושר","cssClasses":"גיליונות עיצוב קבוצות","emailAddress":"כתובת הדוא\"ל","emailBody":"גוף ההודעה","emailSubject":"נושא ההודעה","id":"זיהוי (ID)","info":"מידע על הקישור","langCode":"קוד שפה","langDir":"כיוון שפה","langDirLTR":"שמאל לימין (LTR)","langDirRTL":"ימין לשמאל (RTL)","menu":"מאפייני קישור","name":"שם","noAnchors":"(אין עוגנים זמינים בדף)","noEmail":"יש להקליד את כתובת הדוא\"ל","noUrl":"יש להקליד את כתובת הקישור (URL)","other":"<אחר>","popupDependent":"תלוי (Netscape)","popupFeatures":"תכונות החלון הקופץ","popupFullScreen":"מסך מלא (IE)","popupLeft":"מיקום צד שמאל","popupLocationBar":"סרגל כתובת","popupMenuBar":"סרגל תפריט","popupResizable":"שינוי גודל","popupScrollBars":"ניתן לגלילה","popupStatusBar":"סרגל חיווי","popupToolbar":"סרגל הכלים","popupTop":"מיקום צד עליון","rel":"קשר גומלין","selectAnchor":"בחירת עוגן","styles":"סגנון","tabIndex":"מספר טאב","target":"מטרה","targetFrame":"<מסגרת>","targetFrameName":"שם מסגרת היעד","targetPopup":"<חלון קופץ>","targetPopupName":"שם החלון הקופץ","title":"קישור","toAnchor":"עוגן בעמוד זה","toEmail":"דוא\"ל","toUrl":"כתובת (URL)","toolbar":"הוספת/עריכת קישור","type":"סוג קישור","unlink":"הסרת הקישור","upload":"העלאה"},"list":{"bulletedlist":"רשימת נקודות","numberedlist":"רשימה ממוספרת"},"magicline":{"title":"הכנס פסקה כאן"},"maximize":{"maximize":"הגדלה למקסימום","minimize":"הקטנה למינימום"},"pastetext":{"button":"הדבקה כטקסט פשוט","title":"הדבקה כטקסט פשוט"},"pastefromword":{"confirmCleanup":"נראה הטקסט שבכוונתך להדביק מקורו בקובץ וורד. האם ברצונך לנקות אותו טרם ההדבקה?","error":"לא ניתן היה לנקות את המידע בשל תקלה פנימית.","title":"הדבקה מ-Word","toolbar":"הדבקה מ-Word"},"removeformat":{"toolbar":"הסרת העיצוב"},"sourcearea":{"toolbar":"מקור"},"specialchar":{"options":"אפשרויות תווים מיוחדים","title":"בחירת תו מיוחד","toolbar":"הוספת תו מיוחד"},"scayt":{"about":"אודות SCAYT","aboutTab":"אודות","addWord":"הוספת מילה","allCaps":"התעלם ממילים שכל אותיותיהן גדולות","dic_create":"יצירה","dic_delete":"מחיקה","dic_field_name":"שם המילון","dic_info":"בהתחלה מילון המשתמש מאוחסן בעוגיה, אך עוגיות מוגבלות במקום. כאשר המילון מגיע לגודל בו הוא אינו יכול להתאכסן בעוגיה, המילון צריך להתאכסן בשרתנו. לשם כך עליך לתת שם למילון. אם כבר יש לך מילון מאוחסן, יש להכניס את שמו וללחוץ על כפתור השחזור.","dic_rename":"שינוי שם","dic_restore":"שחזור","dictionariesTab":"מילון","disable":"בטל SCAYT","emptyDic":"יש לבחור מילון.","enable":"אפשר SCAYT","ignore":"התעלמות","ignoreAll":"התעלמות מהכל","ignoreDomainNames":"התעלם משמות מתחם","langs":"שפות","languagesTab":"שפות","mixedCase":"התעלם ממילים עם אותיות גדולות וקטנות ביחד","mixedWithDigits":"התעלם ממילים עם מספרים","moreSuggestions":"הצעות נוספות","opera_title":"לא זמין בדפדפן אופרה","options":"אפשרויות","optionsTab":"אפשרויות","title":"בדיקת איות בזמן כתיבה (SCAYT)","toggle":"שינוי SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"סגנון","panelTitle":"סגנונות פורמט","panelTitle1":"סגנונות בלוק","panelTitle2":"סגנונות רצף","panelTitle3":"סגנונות אובייקט"},"table":{"border":"גודל מסגרת","caption":"כיתוב","cell":{"menu":"מאפייני תא","insertBefore":"הוספת תא לפני","insertAfter":"הוספת תא אחרי","deleteCell":"מחיקת תאים","merge":"מיזוג תאים","mergeRight":"מזג ימינה","mergeDown":"מזג למטה","splitHorizontal":"פיצול תא אופקית","splitVertical":"פיצול תא אנכית","title":"תכונות התא","cellType":"סוג התא","rowSpan":"מתיחת השורות","colSpan":"מתיחת התאים","wordWrap":"מניעת גלישת שורות","hAlign":"יישור אופקי","vAlign":"יישור אנכי","alignBaseline":"שורת בסיס","bgColor":"צבע רקע","borderColor":"צבע מסגרת","data":"מידע","header":"כותרת","yes":"כן","no":"לא","invalidWidth":"שדה רוחב התא חייב להיות מספר.","invalidHeight":"שדה גובה התא חייב להיות מספר.","invalidRowSpan":"שדה מתיחת השורות חייב להיות מספר שלם.","invalidColSpan":"שדה מתיחת העמודות חייב להיות מספר שלם.","chooseColor":"בחר"},"cellPad":"ריפוד תא","cellSpace":"מרווח תא","column":{"menu":"עמודה","insertBefore":"הוספת עמודה לפני","insertAfter":"הוספת עמודה אחרי","deleteColumn":"מחיקת עמודות"},"columns":"עמודות","deleteTable":"מחק טבלה","headers":"כותרות","headersBoth":"שניהם","headersColumn":"עמודה ראשונה","headersNone":"אין","headersRow":"שורה ראשונה","invalidBorder":"שדה גודל המסגרת חייב להיות מספר.","invalidCellPadding":"שדה ריפוד התאים חייב להיות מספר חיובי.","invalidCellSpacing":"שדה ריווח התאים חייב להיות מספר חיובי.","invalidCols":"שדה מספר העמודות חייב להיות מספר גדול מ 0.","invalidHeight":"שדה גובה הטבלה חייב להיות מספר.","invalidRows":"שדה מספר השורות חייב להיות מספר גדול מ 0.","invalidWidth":"שדה רוחב הטבלה חייב להיות מספר.","menu":"מאפייני טבלה","row":{"menu":"שורה","insertBefore":"הוספת שורה לפני","insertAfter":"הוספת שורה אחרי","deleteRow":"מחיקת שורות"},"rows":"שורות","summary":"תקציר","title":"מאפייני טבלה","toolbar":"טבלה","widthPc":"אחוז","widthPx":"פיקסלים","widthUnit":"יחידת רוחב"},"undo":{"redo":"חזרה על צעד אחרון","undo":"ביטול צעד אחרון"},"wsc":{"btnIgnore":"התעלמות","btnIgnoreAll":"התעלמות מהכל","btnReplace":"החלפה","btnReplaceAll":"החלפת הכל","btnUndo":"החזרה","changeTo":"שינוי ל","errorLoading":"שגיאה בהעלאת השירות: %s.","ieSpellDownload":"בודק האיות לא מותקן, האם להורידו?","manyChanges":"בדיקות איות הסתיימה: %1 מילים שונו","noChanges":"בדיקות איות הסתיימה: לא שונתה אף מילה","noMispell":"בדיקות איות הסתיימה: לא נמצאו שגיאות כתיב","noSuggestions":"- אין הצעות -","notAvailable":"לא נמצא שירות זמין.","notInDic":"לא נמצא במילון","oneChange":"בדיקות איות הסתיימה: שונתה מילה אחת","progress":"בודק האיות בתהליך בדיקה....","title":"בדיקת איות","toolbar":"בדיקת איות"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/hi.js b/assets/plugins/ckeditor/lang/hi.js deleted file mode 100644 index d8d0ce84..00000000 --- a/assets/plugins/ckeditor/lang/hi.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['hi']={"editor":"रिच टेक्स्ट एडिटर","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"मदद के लिये ALT 0 दबाए","browseServer":"सर्वर ब्राउज़ करें","url":"URL","protocol":"प्रोटोकॉल","upload":"अपलोड","uploadSubmit":"इसे सर्वर को भेजें","image":"तस्वीर","flash":"फ़्लैश","form":"फ़ॉर्म","checkbox":"चॅक बॉक्स","radio":"रेडिओ बटन","textField":"टेक्स्ट फ़ील्ड","textarea":"टेक्स्ट एरिया","hiddenField":"गुप्त फ़ील्ड","button":"बटन","select":"चुनाव फ़ील्ड","imageButton":"तस्वीर बटन","notSet":"<सॅट नहीं>","id":"Id","name":"नाम","langDir":"भाषा लिखने की दिशा","langDirLtr":"बायें से दायें (LTR)","langDirRtl":"दायें से बायें (RTL)","langCode":"भाषा कोड","longDescr":"अधिक विवरण के लिए URL","cssClass":"स्टाइल-शीट क्लास","advisoryTitle":"परामर्श शीर्शक","cssStyle":"स्टाइल","ok":"ठीक है","cancel":"रद्द करें","close":"Close","preview":"प्रीव्यू","resize":"Resize","generalTab":"सामान्य","advancedTab":"ऍड्वान्स्ड","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"टार्गेट","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"बायें से दायें (LTR)","langDirRTL":"दायें से बायें (RTL)","styles":"स्टाइल","cssClasses":"स्टाइल-शीट क्लास","width":"चौड़ाई","height":"ऊँचाई","align":"ऍलाइन","alignLeft":"दायें","alignRight":"दायें","alignCenter":"बीच में","alignTop":"ऊपर","alignMiddle":"मध्य","alignBottom":"नीचे","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>"},"about":{"copy":"Copyright &copy; $1. All rights reserved.","dlgTitle":"About CKEditor","help":"Check $1 for help.","moreInfo":"For licensing information please visit our web site:","title":"About CKEditor","userGuide":"CKEditor User's Guide"},"basicstyles":{"bold":"बोल्ड","italic":"इटैलिक","strike":"स्ट्राइक थ्रू","subscript":"अधोलेख","superscript":"अभिलेख","underline":"रेखांकण"},"blockquote":{"toolbar":"ब्लॉक-कोट"},"clipboard":{"copy":"कॉपी","copyError":"आपके ब्राआउज़र की सुरक्षा सॅटिन्ग्स ने कॉपी करने की अनुमति नहीं प्रदान की है। (Ctrl/Cmd+C) का प्रयोग करें।","cut":"कट","cutError":"आपके ब्राउज़र की सुरक्षा सॅटिन्ग्स ने कट करने की अनुमति नहीं प्रदान की है। (Ctrl/Cmd+X) का प्रयोग करें।","paste":"पेस्ट","pasteArea":"Paste Area","pasteMsg":"Ctrl/Cmd+V का प्रयोग करके पेस्ट करें और ठीक है करें.","securityMsg":"आपके ब्राउज़र की सुरक्षा आपके ब्राउज़र की सुरKश सैटिंग के कारण, एडिटर आपके क्लिपबोर्ड डेटा को नहीं पा सकता है. आपको उसे इस विन्डो में दोबारा पेस्ट करना होगा.","title":"पेस्ट"},"contextmenu":{"options":"Context Menu Options"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"एडिटर टूलबार"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"format":{"label":"फ़ॉर्मैट","panelTitle":"फ़ॉर्मैट","tag_address":"पता","tag_div":"शीर्षक (DIV)","tag_h1":"शीर्षक 1","tag_h2":"शीर्षक 2","tag_h3":"शीर्षक 3","tag_h4":"शीर्षक 4","tag_h5":"शीर्षक 5","tag_h6":"शीर्षक 6","tag_p":"साधारण","tag_pre":"फ़ॉर्मैटॅड"},"horizontalrule":{"toolbar":"हॉरिज़ॉन्टल रेखा इन्सर्ट करें"},"image":{"alertUrl":"तस्वीर का URL टाइप करें ","alt":"वैकल्पिक टेक्स्ट","border":"बॉर्डर","btnUpload":"इसे सर्वर को भेजें","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"हॉरिज़ॉन्टल स्पेस","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"तस्वीर की जानकारी","linkTab":"लिंक","lockRatio":"लॉक अनुपात","menu":"तस्वीर प्रॉपर्टीज़","resetSize":"रीसॅट साइज़","title":"तस्वीर प्रॉपर्टीज़","titleButton":"तस्वीर बटन प्रॉपर्टीज़","upload":"अपलोड","urlMissing":"Image source URL is missing.","vSpace":"वर्टिकल स्पेस","validateBorder":"Border must be a whole number.","validateHSpace":"HSpace must be a whole number.","validateVSpace":"VSpace must be a whole number."},"indent":{"indent":"इन्डॅन्ट बढ़ायें","outdent":"इन्डॅन्ट कम करें"},"fakeobjects":{"anchor":"ऐंकर इन्सर्ट/संपादन","flash":"Flash Animation","hiddenfield":"गुप्त फ़ील्ड","iframe":"IFrame","unknown":"Unknown Object"},"link":{"acccessKey":"ऍक्सॅस की","advanced":"ऍड्वान्स्ड","advisoryContentType":"परामर्श कन्टॅन्ट प्रकार","advisoryTitle":"परामर्श शीर्शक","anchor":{"toolbar":"ऐंकर इन्सर्ट/संपादन","menu":"ऐंकर प्रॉपर्टीज़","title":"ऐंकर प्रॉपर्टीज़","name":"ऐंकर का नाम","errorName":"ऐंकर का नाम टाइप करें","remove":"Remove Anchor"},"anchorId":"ऍलीमॅन्ट Id से","anchorName":"ऐंकर नाम से","charset":"लिंक रिसोर्स करॅक्टर सॅट","cssClasses":"स्टाइल-शीट क्लास","emailAddress":"ई-मेल पता","emailBody":"संदेश","emailSubject":"संदेश विषय","id":"Id","info":"लिंक ","langCode":"भाषा लिखने की दिशा","langDir":"भाषा लिखने की दिशा","langDirLTR":"बायें से दायें (LTR)","langDirRTL":"दायें से बायें (RTL)","menu":"लिंक संपादन","name":"नाम","noAnchors":"(डॉक्यूमॅन्ट में ऐंकर्स की संख्या)","noEmail":"ई-मेल पता टाइप करें","noUrl":"लिंक URL टाइप करें","other":"<अन्य>","popupDependent":"डिपेन्डॅन्ट (Netscape)","popupFeatures":"पॉप-अप विन्डो फ़ीचर्स","popupFullScreen":"फ़ुल स्क्रीन (IE)","popupLeft":"बायीं तरफ","popupLocationBar":"लोकेशन बार","popupMenuBar":"मॅन्यू बार","popupResizable":"Resizable","popupScrollBars":"स्क्रॉल बार","popupStatusBar":"स्टेटस बार","popupToolbar":"टूल बार","popupTop":"दायीं तरफ","rel":"Relationship","selectAnchor":"ऐंकर चुनें","styles":"स्टाइल","tabIndex":"टैब इन्डॅक्स","target":"टार्गेट","targetFrame":"<फ़्रेम>","targetFrameName":"टार्गेट फ़्रेम का नाम","targetPopup":"<पॉप-अप विन्डो>","targetPopupName":"पॉप-अप विन्डो का नाम","title":"लिंक","toAnchor":"इस पेज का ऐंकर","toEmail":"ई-मेल","toUrl":"URL","toolbar":"लिंक इन्सर्ट/संपादन","type":"लिंक प्रकार","unlink":"लिंक हटायें","upload":"अपलोड"},"list":{"bulletedlist":"बुलॅट सूची","numberedlist":"अंकीय सूची"},"magicline":{"title":"Insert paragraph here"},"maximize":{"maximize":"मेक्सिमाईज़","minimize":"मिनिमाईज़"},"pastetext":{"button":"पेस्ट (सादा टॅक्स्ट)","title":"पेस्ट (सादा टॅक्स्ट)"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"पेस्ट (वर्ड से)","toolbar":"पेस्ट (वर्ड से)"},"removeformat":{"toolbar":"फ़ॉर्मैट हटायें"},"sourcearea":{"toolbar":"सोर्स"},"specialchar":{"options":"Special Character Options","title":"विशेष करॅक्टर चुनें","toolbar":"विशेष करॅक्टर इन्सर्ट करें"},"scayt":{"about":"About SCAYT","aboutTab":"About","addWord":"Add Word","allCaps":"Ignore All-Caps Words","dic_create":"Create","dic_delete":"Delete","dic_field_name":"Dictionary name","dic_info":"Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.","dic_rename":"Rename","dic_restore":"Restore","dictionariesTab":"Dictionaries","disable":"Disable SCAYT","emptyDic":"Dictionary name should not be empty.","enable":"Enable SCAYT","ignore":"Ignore","ignoreAll":"Ignore All","ignoreDomainNames":"Ignore Domain Names","langs":"Languages","languagesTab":"Languages","mixedCase":"Ignore Words with Mixed Case","mixedWithDigits":"Ignore Words with Numbers","moreSuggestions":"More suggestions","opera_title":"Not supported by Opera","options":"Options","optionsTab":"Options","title":"Spell Check As You Type","toggle":"Toggle SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"स्टाइल","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"table":{"border":"बॉर्डर साइज़","caption":"शीर्षक","cell":{"menu":"खाना","insertBefore":"पहले सैल डालें","insertAfter":"बाद में सैल डालें","deleteCell":"सैल डिलीट करें","merge":"सैल मिलायें","mergeRight":"बाँया विलय","mergeDown":"नीचे विलय करें","splitHorizontal":"सैल को क्षैतिज स्थिति में विभाजित करें","splitVertical":"सैल को लम्बाकार में विभाजित करें","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"सैल पैडिंग","cellSpace":"सैल अंतर","column":{"menu":"कालम","insertBefore":"पहले कालम डालें","insertAfter":"बाद में कालम डालें","deleteColumn":"कालम डिलीट करें"},"columns":"कालम","deleteTable":"टेबल डिलीट करें","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"टेबल प्रॉपर्टीज़","row":{"menu":"पंक्ति","insertBefore":"पहले पंक्ति डालें","insertAfter":"बाद में पंक्ति डालें","deleteRow":"पंक्तियाँ डिलीट करें"},"rows":"पंक्तियाँ","summary":"सारांश","title":"टेबल प्रॉपर्टीज़","toolbar":"टेबल","widthPc":"प्रतिशत","widthPx":"पिक्सैल","widthUnit":"width unit"},"undo":{"redo":"रीडू","undo":"अन्डू"},"wsc":{"btnIgnore":"इग्नोर","btnIgnoreAll":"सभी इग्नोर करें","btnReplace":"रिप्लेस","btnReplaceAll":"सभी रिप्लेस करें","btnUndo":"अन्डू","changeTo":"इसमें बदलें","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"स्पॅल-चॅकर इन्स्टाल नहीं किया गया है। क्या आप इसे डाउनलोड करना चाहेंगे?","manyChanges":"वर्तनी की जाँच : %1 शब्द बदले गये","noChanges":"वर्तनी की जाँच :कोई शब्द नहीं बदला गया","noMispell":"वर्तनी की जाँच : कोई गलत वर्तनी (स्पॅलिंग) नहीं पाई गई","noSuggestions":"- कोई सुझाव नहीं -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"शब्दकोश में नहीं","oneChange":"वर्तनी की जाँच : एक शब्द बदला गया","progress":"वर्तनी की जाँच (स्पॅल-चॅक) जारी है...","title":"Spell Check","toolbar":"वर्तनी (स्पेलिंग) जाँच"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/hr.js b/assets/plugins/ckeditor/lang/hr.js deleted file mode 100644 index 50ba1454..00000000 --- a/assets/plugins/ckeditor/lang/hr.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['hr']={"editor":"Bogati uređivač teksta","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Pritisni ALT 0 za pomoć","browseServer":"Pretraži server","url":"URL","protocol":"Protokol","upload":"Pošalji","uploadSubmit":"Pošalji na server","image":"Slika","flash":"Flash","form":"Forma","checkbox":"Checkbox","radio":"Radio Button","textField":"Text Field","textarea":"Textarea","hiddenField":"Hidden Field","button":"Button","select":"Selection Field","imageButton":"Image Button","notSet":"<nije postavljeno>","id":"Id","name":"Naziv","langDir":"Smjer jezika","langDirLtr":"S lijeva na desno (LTR)","langDirRtl":"S desna na lijevo (RTL)","langCode":"Kôd jezika","longDescr":"Dugački opis URL","cssClass":"Klase stilova","advisoryTitle":"Advisory naslov","cssStyle":"Stil","ok":"OK","cancel":"Poništi","close":"Zatvori","preview":"Pregledaj","resize":"Povuci za promjenu veličine","generalTab":"Općenito","advancedTab":"Napredno","validateNumberFailed":"Ova vrijednost nije broj.","confirmNewPage":"Sve napravljene promjene će biti izgubljene ukoliko ih niste snimili. Sigurno želite učitati novu stranicu?","confirmCancel":"Neke od opcija su promjenjene. Sigurno želite zatvoriti ovaj prozor?","options":"Opcije","target":"Odredište","targetNew":"Novi prozor (_blank)","targetTop":"Vršni prozor (_top)","targetSelf":"Isti prozor (_self)","targetParent":"Roditeljski prozor (_parent)","langDirLTR":"S lijeva na desno (LTR)","langDirRTL":"S desna na lijevo (RTL)","styles":"Stil","cssClasses":"Klase stilova","width":"Širina","height":"Visina","align":"Poravnanje","alignLeft":"Lijevo","alignRight":"Desno","alignCenter":"Središnje","alignTop":"Vrh","alignMiddle":"Sredina","alignBottom":"Dolje","invalidValue":"Neispravna vrijednost.","invalidHeight":"Visina mora biti broj.","invalidWidth":"Širina mora biti broj.","invalidCssLength":"Vrijednost određena za \"%1\" polje mora biti pozitivni broj sa ili bez važećih CSS mjernih jedinica (px, %, in, cm, mm, em, ex, pt ili pc).","invalidHtmlLength":"Vrijednost određena za \"%1\" polje mora biti pozitivni broj sa ili bez važećih HTML mjernih jedinica (px ili %).","invalidInlineStyle":"Vrijednost za linijski stil mora sadržavati jednu ili više definicija s formatom \"naziv:vrijednost\", odvojenih točka-zarezom.","cssLengthTooltip":"Unesite broj za vrijednost u pikselima ili broj s važećim CSS mjernim jedinicama (px, %, in, cm, mm, em, ex, pt ili pc).","unavailable":"%1<span class=\"cke_accessibility\">, nedostupno</span>"},"about":{"copy":"Copyright &copy; $1. All rights reserved.","dlgTitle":"O CKEditoru","help":"Provjeri $1 za pomoć.","moreInfo":"Za informacije o licencama posjetite našu web stranicu:","title":"O CKEditoru","userGuide":"Vodič za CKEditor korisnike"},"basicstyles":{"bold":"Podebljaj","italic":"Ukosi","strike":"Precrtano","subscript":"Subscript","superscript":"Superscript","underline":"Potcrtano"},"blockquote":{"toolbar":"Blockquote"},"clipboard":{"copy":"Kopiraj","copyError":"Sigurnosne postavke Vašeg pretraživača ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tipkovnici (Ctrl/Cmd+C).","cut":"Izreži","cutError":"Sigurnosne postavke Vašeg pretraživača ne dozvoljavaju operacije automatskog izrezivanja. Molimo koristite kraticu na tipkovnici (Ctrl/Cmd+X).","paste":"Zalijepi","pasteArea":"Prostor za ljepljenje","pasteMsg":"Molimo zaljepite unutar doljnjeg okvira koristeći tipkovnicu (<STRONG>Ctrl/Cmd+V</STRONG>) i kliknite <STRONG>OK</STRONG>.","securityMsg":"Zbog sigurnosnih postavki Vašeg pretraživača, editor nema direktan pristup Vašem međuspremniku. Potrebno je ponovno zalijepiti tekst u ovaj prozor.","title":"Zalijepi"},"contextmenu":{"options":"Opcije izbornika"},"toolbar":{"toolbarCollapse":"Smanji alatnu traku","toolbarExpand":"Proširi alatnu traku","toolbarGroups":{"document":"Dokument","clipboard":"Međuspremnik/Poništi","editing":"Uređivanje","forms":"Forme","basicstyles":"Osnovni stilovi","paragraph":"Paragraf","links":"Veze","insert":"Umetni","styles":"Stilovi","colors":"Boje","tools":"Alatke"},"toolbars":"Alatne trake uređivača teksta"},"elementspath":{"eleLabel":"Putanja elemenata","eleTitle":"%1 element"},"format":{"label":"Format","panelTitle":"Format","tag_address":"Address","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatirano"},"horizontalrule":{"toolbar":"Ubaci vodoravnu liniju"},"image":{"alertUrl":"Unesite URL slike","alt":"Alternativni tekst","border":"Okvir","btnUpload":"Pošalji na server","button2Img":"Želite li promijeniti odabrani gumb u jednostavnu sliku?","hSpace":"HSpace","img2Button":"Želite li promijeniti odabranu sliku u gumb?","infoTab":"Info slike","linkTab":"Link","lockRatio":"Zaključaj odnos","menu":"Svojstva slika","resetSize":"Obriši veličinu","title":"Svojstva slika","titleButton":"Image Button svojstva","upload":"Pošalji","urlMissing":"Nedostaje URL slike.","vSpace":"VSpace","validateBorder":"Okvir mora biti cijeli broj.","validateHSpace":"HSpace mora biti cijeli broj","validateVSpace":"VSpace mora biti cijeli broj."},"indent":{"indent":"Pomakni udesno","outdent":"Pomakni ulijevo"},"fakeobjects":{"anchor":"Sidro","flash":"Flash animacija","hiddenfield":"Sakriveno polje","iframe":"IFrame","unknown":"Nepoznati objekt"},"link":{"acccessKey":"Pristupna tipka","advanced":"Napredno","advisoryContentType":"Advisory vrsta sadržaja","advisoryTitle":"Advisory naslov","anchor":{"toolbar":"Ubaci/promijeni sidro","menu":"Svojstva sidra","title":"Svojstva sidra","name":"Ime sidra","errorName":"Molimo unesite ime sidra","remove":"Ukloni sidro"},"anchorId":"Po Id elementa","anchorName":"Po nazivu sidra","charset":"Kodna stranica povezanih resursa","cssClasses":"Stylesheet klase","emailAddress":"E-Mail adresa","emailBody":"Sadržaj poruke","emailSubject":"Naslov","id":"Id","info":"Link Info","langCode":"Smjer jezika","langDir":"Smjer jezika","langDirLTR":"S lijeva na desno (LTR)","langDirRTL":"S desna na lijevo (RTL)","menu":"Promijeni link","name":"Naziv","noAnchors":"(Nema dostupnih sidra)","noEmail":"Molimo upišite e-mail adresu","noUrl":"Molimo upišite URL link","other":"<drugi>","popupDependent":"Ovisno (Netscape)","popupFeatures":"Mogućnosti popup prozora","popupFullScreen":"Cijeli ekran (IE)","popupLeft":"Lijeva pozicija","popupLocationBar":"Traka za lokaciju","popupMenuBar":"Izborna traka","popupResizable":"Promjenjiva veličina","popupScrollBars":"Scroll traka","popupStatusBar":"Statusna traka","popupToolbar":"Traka s alatima","popupTop":"Gornja pozicija","rel":"Veza","selectAnchor":"Odaberi sidro","styles":"Stil","tabIndex":"Tab Indeks","target":"Meta","targetFrame":"<okvir>","targetFrameName":"Ime ciljnog okvira","targetPopup":"<popup prozor>","targetPopupName":"Naziv popup prozora","title":"Link","toAnchor":"Sidro na ovoj stranici","toEmail":"E-Mail","toUrl":"URL","toolbar":"Ubaci/promijeni link","type":"Link vrsta","unlink":"Ukloni link","upload":"Pošalji"},"list":{"bulletedlist":"Obična lista","numberedlist":"Brojčana lista"},"magicline":{"title":"Ubaci paragraf ovdje"},"maximize":{"maximize":"Povećaj","minimize":"Smanji"},"pastetext":{"button":"Zalijepi kao čisti tekst","title":"Zalijepi kao čisti tekst"},"pastefromword":{"confirmCleanup":"Tekst koji želite zalijepiti čini se da je kopiran iz Worda. Želite li prije očistiti tekst?","error":"Nije moguće očistiti podatke za ljepljenje zbog interne greške","title":"Zalijepi iz Worda","toolbar":"Zalijepi iz Worda"},"removeformat":{"toolbar":"Ukloni formatiranje"},"sourcearea":{"toolbar":"Kôd"},"specialchar":{"options":"Opcije specijalnih znakova","title":"Odaberite posebni karakter","toolbar":"Ubaci posebne znakove"},"scayt":{"about":"O SCAYT","aboutTab":"O SCAYT","addWord":"Dodaj riječ","allCaps":"Ignoriraj riječi s velikim slovima","dic_create":"Napravi","dic_delete":"Obriši","dic_field_name":"Naziv riječnika","dic_info":"Na početku se korisnički Riječnik sprema u Cookie. Nažalost, veličina im je ograničena. Kada korisnički Riječnik naraste preko te veličine, Riječnik će biti smješten na naš server. Kako bi se korisnički Riječnik spremio na naš server morate odabrati naziv Vašeg Riječnika. Ukoliko ste već prije spremali Riječnik na naše servere, unesite naziv Riječnika i pritisnite na Povrati.","dic_rename":"Promijeni naziv","dic_restore":"Povrati","dictionariesTab":"Rječnici","disable":"Onemogući SCAYT","emptyDic":"Naziv rječnika ne smije biti prazno.","enable":"Omogući SCAYT","ignore":"Zanemari","ignoreAll":"Zanemari sve","ignoreDomainNames":"Ignoriraj nazive domena","langs":"Jezici","languagesTab":"Jezici","mixedCase":"Ignoriraj riječi s miješanim slovima","mixedWithDigits":"Ignoriraj riječi s brojevima","moreSuggestions":"Više prijedloga","opera_title":"Nije podržano u Operi","options":"Opcije","optionsTab":"Opcije","title":"Provjeri pravopis tijekom tipkanja (SCAYT)","toggle":"Omoguću/Onemogući SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"Stil","panelTitle":"Stilovi formatiranja","panelTitle1":"Block stilovi","panelTitle2":"Inline stilovi","panelTitle3":"Object stilovi"},"table":{"border":"Veličina okvira","caption":"Naslov","cell":{"menu":"Ćelija","insertBefore":"Ubaci ćeliju prije","insertAfter":"Ubaci ćeliju poslije","deleteCell":"Izbriši ćelije","merge":"Spoji ćelije","mergeRight":"Spoji desno","mergeDown":"Spoji dolje","splitHorizontal":"Podijeli ćeliju vodoravno","splitVertical":"Podijeli ćeliju okomito","title":"Svojstva ćelije","cellType":"Vrsta ćelije","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Prelazak u novi red","hAlign":"Vodoravno poravnanje","vAlign":"Okomito poravnanje","alignBaseline":"Osnovna linija","bgColor":"Boja pozadine","borderColor":"Boja ruba","data":"Podatak","header":"Zaglavlje","yes":"Da","no":"ne","invalidWidth":"Širina ćelije mora biti broj.","invalidHeight":"Visina ćelije mora biti broj.","invalidRowSpan":"Rows span mora biti cijeli broj.","invalidColSpan":"Columns span mora biti cijeli broj.","chooseColor":"Odaberi"},"cellPad":"Razmak ćelija","cellSpace":"Prostornost ćelija","column":{"menu":"Kolona","insertBefore":"Ubaci kolonu prije","insertAfter":"Ubaci kolonu poslije","deleteColumn":"Izbriši kolone"},"columns":"Kolona","deleteTable":"Izbriši tablicu","headers":"Zaglavlje","headersBoth":"Oba","headersColumn":"Prva kolona","headersNone":"Ništa","headersRow":"Prvi red","invalidBorder":"Debljina ruba mora biti broj.","invalidCellPadding":"Razmak ćelija mora biti broj.","invalidCellSpacing":"Prostornost ćelija mora biti broj.","invalidCols":"Broj kolona mora biti broj veći od 0.","invalidHeight":"Visina tablice mora biti broj.","invalidRows":"Broj redova mora biti broj veći od 0.","invalidWidth":"Širina tablice mora biti broj.","menu":"Svojstva tablice","row":{"menu":"Red","insertBefore":"Ubaci red prije","insertAfter":"Ubaci red poslije","deleteRow":"Izbriši redove"},"rows":"Redova","summary":"Sažetak","title":"Svojstva tablice","toolbar":"Tablica","widthPc":"postotaka","widthPx":"piksela","widthUnit":"jedinica širine"},"undo":{"redo":"Ponovi","undo":"Poništi"},"wsc":{"btnIgnore":"Zanemari","btnIgnoreAll":"Zanemari sve","btnReplace":"Zamijeni","btnReplaceAll":"Zamijeni sve","btnUndo":"Vrati","changeTo":"Promijeni u","errorLoading":"Greška učitavanja aplikacije: %s.","ieSpellDownload":"Provjera pravopisa nije instalirana. Želite li skinuti provjeru pravopisa?","manyChanges":"Provjera završena: Promijenjeno %1 riječi","noChanges":"Provjera završena: Nije napravljena promjena","noMispell":"Provjera završena: Nema grešaka","noSuggestions":"-Nema preporuke-","notAvailable":"Žao nam je, ali usluga trenutno nije dostupna.","notInDic":"Nije u rječniku","oneChange":"Provjera završena: Jedna riječ promjenjena","progress":"Provjera u tijeku...","title":"Provjera pravopisa","toolbar":"Provjeri pravopis"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/hu.js b/assets/plugins/ckeditor/lang/hu.js deleted file mode 100644 index 6b28bba0..00000000 --- a/assets/plugins/ckeditor/lang/hu.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['hu']={"editor":"HTML szerkesztő","editorPanel":"Rich Text szerkesztő panel","common":{"editorHelp":"Segítségért nyomjon ALT 0","browseServer":"Böngészés a szerveren","url":"Hivatkozás","protocol":"Protokoll","upload":"Feltöltés","uploadSubmit":"Küldés a szerverre","image":"Kép","flash":"Flash","form":"Űrlap","checkbox":"Jelölőnégyzet","radio":"Választógomb","textField":"Szövegmező","textarea":"Szövegterület","hiddenField":"Rejtettmező","button":"Gomb","select":"Legördülő lista","imageButton":"Képgomb","notSet":"<nincs beállítva>","id":"Azonosító","name":"Név","langDir":"Írás iránya","langDirLtr":"Balról jobbra","langDirRtl":"Jobbról balra","langCode":"Nyelv kódja","longDescr":"Részletes leírás webcíme","cssClass":"Stíluskészlet","advisoryTitle":"Súgócimke","cssStyle":"Stílus","ok":"Rendben","cancel":"Mégsem","close":"Bezárás","preview":"Előnézet","resize":"Húzza az átméretezéshez","generalTab":"Általános","advancedTab":"További opciók","validateNumberFailed":"A mezőbe csak számokat írhat.","confirmNewPage":"Minden nem mentett változás el fog veszni! Biztosan be szeretné tölteni az oldalt?","confirmCancel":"Az űrlap tartalma megváltozott, ám a változásokat nem rögzítette. Biztosan be szeretné zárni az űrlapot?","options":"Beállítások","target":"Cél","targetNew":"Új ablak (_blank)","targetTop":"Legfelső ablak (_top)","targetSelf":"Aktuális ablakban (_self)","targetParent":"Szülő ablak (_parent)","langDirLTR":"Balról jobbra (LTR)","langDirRTL":"Jobbról balra (RTL)","styles":"Stílus","cssClasses":"Stíluslap osztály","width":"Szélesség","height":"Magasság","align":"Igazítás","alignLeft":"Bal","alignRight":"Jobbra","alignCenter":"Középre","alignTop":"Tetejére","alignMiddle":"Középre","alignBottom":"Aljára","invalidValue":"Érvénytelen érték.","invalidHeight":"A magasság mezőbe csak számokat írhat.","invalidWidth":"A szélesség mezőbe csak számokat írhat.","invalidCssLength":"\"%1\"-hez megadott érték csakis egy pozitív szám lehet, esetleg egy érvényes CSS egységgel megjelölve(px, %, in, cm, mm, em, ex, pt vagy pc).","invalidHtmlLength":"\"%1\"-hez megadott érték csakis egy pozitív szám lehet, esetleg egy érvényes HTML egységgel megjelölve(px vagy %).","invalidInlineStyle":"Az inline stílusnak megadott értéknek tartalmaznia kell egy vagy több rekordot a \"name : value\" formátumban, pontosvesszővel elválasztva.","cssLengthTooltip":"Adjon meg egy számot értéknek pixelekben vagy egy számot érvényes CSS mértékegységben (px, %, in, cm, mm, em, ex, pt, vagy pc).","unavailable":"%1<span class=\"cke_accessibility\">, nem elérhető</span>"},"about":{"copy":"Copyright &copy; $1. Minden jog fenntartva.","dlgTitle":"CKEditor névjegy","help":"Itt találsz segítséget: $1","moreInfo":"Licenszelési információkért kérjük látogassa meg weboldalunkat:","title":"CKEditor névjegy","userGuide":"CKEditor Felhasználói útmutató"},"basicstyles":{"bold":"Félkövér","italic":"Dőlt","strike":"Áthúzott","subscript":"Alsó index","superscript":"Felső index","underline":"Aláhúzott"},"blockquote":{"toolbar":"Idézet blokk"},"clipboard":{"copy":"Másolás","copyError":"A böngésző biztonsági beállításai nem engedélyezik a szerkesztőnek, hogy végrehajtsa a másolás műveletet. Használja az alábbi billentyűkombinációt (Ctrl/Cmd+X).","cut":"Kivágás","cutError":"A böngésző biztonsági beállításai nem engedélyezik a szerkesztőnek, hogy végrehajtsa a kivágás műveletet. Használja az alábbi billentyűkombinációt (Ctrl/Cmd+X).","paste":"Beillesztés","pasteArea":"Beszúrás mező","pasteMsg":"Másolja be az alábbi mezőbe a <STRONG>Ctrl/Cmd+V</STRONG> billentyűk lenyomásával, majd nyomjon <STRONG>Rendben</STRONG>-t.","securityMsg":"A böngésző biztonsági beállításai miatt a szerkesztő nem képes hozzáférni a vágólap adataihoz. Illeszd be újra ebben az ablakban.","title":"Beillesztés"},"contextmenu":{"options":"Helyi menü opciók"},"toolbar":{"toolbarCollapse":"Eszköztár összecsukása","toolbarExpand":"Eszköztár szétnyitása","toolbarGroups":{"document":"Dokumentum","clipboard":"Vágólap/Visszavonás","editing":"Szerkesztés","forms":"Űrlapok","basicstyles":"Alapstílusok","paragraph":"Bekezdés","links":"Hivatkozások","insert":"Beszúrás","styles":"Stílusok","colors":"Színek","tools":"Eszközök"},"toolbars":"Szerkesztő Eszköztár"},"elementspath":{"eleLabel":"Elem utak","eleTitle":"%1 elem"},"format":{"label":"Formátum","panelTitle":"Formátum","tag_address":"Címsor","tag_div":"Bekezdés (DIV)","tag_h1":"Fejléc 1","tag_h2":"Fejléc 2","tag_h3":"Fejléc 3","tag_h4":"Fejléc 4","tag_h5":"Fejléc 5","tag_h6":"Fejléc 6","tag_p":"Normál","tag_pre":"Formázott"},"horizontalrule":{"toolbar":"Elválasztóvonal beillesztése"},"image":{"alertUrl":"Töltse ki a kép webcímét","alt":"Buborék szöveg","border":"Keret","btnUpload":"Küldés a szerverre","button2Img":"A kiválasztott képgombból sima képet szeretne csinálni?","hSpace":"Vízsz. táv","img2Button":"A kiválasztott képből képgombot szeretne csinálni?","infoTab":"Alaptulajdonságok","linkTab":"Hivatkozás","lockRatio":"Arány megtartása","menu":"Kép tulajdonságai","resetSize":"Eredeti méret","title":"Kép tulajdonságai","titleButton":"Képgomb tulajdonságai","upload":"Feltöltés","urlMissing":"Hiányzik a kép URL-je","vSpace":"Függ. táv","validateBorder":"A keret méretének egész számot kell beírni!","validateHSpace":"Vízszintes távolságnak egész számot kell beírni!","validateVSpace":"Függőleges távolságnak egész számot kell beírni!"},"indent":{"indent":"Behúzás növelése","outdent":"Behúzás csökkentése"},"fakeobjects":{"anchor":"Horgony","flash":"Flash animáció","hiddenfield":"Rejtett mezõ","iframe":"IFrame","unknown":"Ismeretlen objektum"},"link":{"acccessKey":"Billentyűkombináció","advanced":"További opciók","advisoryContentType":"Súgó tartalomtípusa","advisoryTitle":"Súgócimke","anchor":{"toolbar":"Horgony beillesztése/szerkesztése","menu":"Horgony tulajdonságai","title":"Horgony tulajdonságai","name":"Horgony neve","errorName":"Kérem adja meg a horgony nevét","remove":"Horgony eltávolítása"},"anchorId":"Azonosító szerint","anchorName":"Horgony név szerint","charset":"Hivatkozott tartalom kódlapja","cssClasses":"Stíluskészlet","emailAddress":"E-Mail cím","emailBody":"Üzenet","emailSubject":"Üzenet tárgya","id":"Id","info":"Alaptulajdonságok","langCode":"Írás iránya","langDir":"Írás iránya","langDirLTR":"Balról jobbra","langDirRTL":"Jobbról balra","menu":"Hivatkozás módosítása","name":"Név","noAnchors":"(Nincs horgony a dokumentumban)","noEmail":"Adja meg az E-Mail címet","noUrl":"Adja meg a hivatkozás webcímét","other":"<más>","popupDependent":"Szülőhöz kapcsolt (csak Netscape)","popupFeatures":"Felugró ablak jellemzői","popupFullScreen":"Teljes képernyő (csak IE)","popupLeft":"Bal pozíció","popupLocationBar":"Címsor","popupMenuBar":"Menü sor","popupResizable":"Átméretezés","popupScrollBars":"Gördítősáv","popupStatusBar":"Állapotsor","popupToolbar":"Eszköztár","popupTop":"Felső pozíció","rel":"Kapcsolat típusa","selectAnchor":"Horgony választása","styles":"Stílus","tabIndex":"Tabulátor index","target":"Tartalom megjelenítése","targetFrame":"<keretben>","targetFrameName":"Keret neve","targetPopup":"<felugró ablakban>","targetPopupName":"Felugró ablak neve","title":"Hivatkozás tulajdonságai","toAnchor":"Horgony az oldalon","toEmail":"E-Mail","toUrl":"URL","toolbar":"Hivatkozás beillesztése/módosítása","type":"Hivatkozás típusa","unlink":"Hivatkozás törlése","upload":"Feltöltés"},"list":{"bulletedlist":"Felsorolás","numberedlist":"Számozás"},"magicline":{"title":"Szúrja be a bekezdést ide"},"maximize":{"maximize":"Teljes méret","minimize":"Kis méret"},"pastetext":{"button":"Beillesztés formázatlan szövegként","title":"Beillesztés formázatlan szövegként"},"pastefromword":{"confirmCleanup":"Úgy tűnik a beillesztett szöveget Word-ből másolt át. Meg szeretné tisztítani a szöveget? (ajánlott)","error":"Egy belső hiba miatt nem sikerült megtisztítani a szöveget","title":"Beillesztés Word-ből","toolbar":"Beillesztés Word-ből"},"removeformat":{"toolbar":"Formázás eltávolítása"},"sourcearea":{"toolbar":"Forráskód"},"specialchar":{"options":"Speciális karakter opciók","title":"Speciális karakter választása","toolbar":"Speciális karakter beillesztése"},"scayt":{"about":"SCAYT névjegy","aboutTab":"Névjegy","addWord":"Szó hozzáadása","allCaps":"Nagybetűs szavak kihagyása","dic_create":"Létrehozás","dic_delete":"Törlés","dic_field_name":"Szótár neve","dic_info":"Kezdetben a felhasználói szótár böngésző sütiben tárolódik. Azonban a sütik maximális mérete korlátozott. Amikora a szótár akkora lesz, hogy már sütiben nem lehet tárolni, akkor a szótárat tárolhatja a szerveren is. Ehhez egy nevet kell megadni a szótárhoz. Amennyiben már van szerveren tárolt szótára, adja meg a nevét és kattintson a visszaállítás gombra.","dic_rename":"Átnevezés","dic_restore":"Visszaállítás","dictionariesTab":"Szótár","disable":"SCAYT letiltása","emptyDic":"A szótár nevét meg kell adni.","enable":"SCAYT engedélyezése","ignore":"Kihagy","ignoreAll":"Összes kihagyása","ignoreDomainNames":"Domain nevek kihagyása","langs":"Nyelvek","languagesTab":"Nyelvek","mixedCase":"Kis és nagybetűt is tartalmazó szavak kihagyása","mixedWithDigits":"Számokat tartalmazó szavak kihagyása","moreSuggestions":"További javaslatok","opera_title":"Az Opera nem támogatja","options":"Beállítások","optionsTab":"Beállítások","title":"Helyesírás ellenőrzés gépelés közben","toggle":"SCAYT kapcsolása","noSuggestions":"No suggestion"},"stylescombo":{"label":"Stílus","panelTitle":"Formázási stílusok","panelTitle1":"Blokk stílusok","panelTitle2":"Inline stílusok","panelTitle3":"Objektum stílusok"},"table":{"border":"Szegélyméret","caption":"Felirat","cell":{"menu":"Cella","insertBefore":"Beszúrás balra","insertAfter":"Beszúrás jobbra","deleteCell":"Cellák törlése","merge":"Cellák egyesítése","mergeRight":"Cellák egyesítése jobbra","mergeDown":"Cellák egyesítése lefelé","splitHorizontal":"Cellák szétválasztása vízszintesen","splitVertical":"Cellák szétválasztása függőlegesen","title":"Cella tulajdonságai","cellType":"Cella típusa","rowSpan":"Függőleges egyesítés","colSpan":"Vízszintes egyesítés","wordWrap":"Hosszú sorok törése","hAlign":"Vízszintes igazítás","vAlign":"Függőleges igazítás","alignBaseline":"Alapvonalra","bgColor":"Háttér színe","borderColor":"Keret színe","data":"Adat","header":"Fejléc","yes":"Igen","no":"Nem","invalidWidth":"A szélesség mezőbe csak számokat írhat.","invalidHeight":"A magasság mezőbe csak számokat írhat.","invalidRowSpan":"A függőleges egyesítés mezőbe csak számokat írhat.","invalidColSpan":"A vízszintes egyesítés mezőbe csak számokat írhat.","chooseColor":"Válasszon"},"cellPad":"Cella belső margó","cellSpace":"Cella térköz","column":{"menu":"Oszlop","insertBefore":"Beszúrás balra","insertAfter":"Beszúrás jobbra","deleteColumn":"Oszlopok törlése"},"columns":"Oszlopok","deleteTable":"Táblázat törlése","headers":"Fejlécek","headersBoth":"Mindkettő","headersColumn":"Első oszlop","headersNone":"Nincsenek","headersRow":"Első sor","invalidBorder":"A szegélyméret mezőbe csak számokat írhat.","invalidCellPadding":"A cella belső margó mezőbe csak számokat írhat.","invalidCellSpacing":"A cella térköz mezőbe csak számokat írhat.","invalidCols":"Az oszlopok számának nagyobbnak kell lenni mint 0.","invalidHeight":"A magasság mezőbe csak számokat írhat.","invalidRows":"A sorok számának nagyobbnak kell lenni mint 0.","invalidWidth":"A szélesség mezőbe csak számokat írhat.","menu":"Táblázat tulajdonságai","row":{"menu":"Sor","insertBefore":"Beszúrás fölé","insertAfter":"Beszúrás alá","deleteRow":"Sorok törlése"},"rows":"Sorok","summary":"Leírás","title":"Táblázat tulajdonságai","toolbar":"Táblázat","widthPc":"százalék","widthPx":"képpont","widthUnit":"Szélesség egység"},"undo":{"redo":"Ismétlés","undo":"Visszavonás"},"wsc":{"btnIgnore":"Kihagyja","btnIgnoreAll":"Mindet kihagyja","btnReplace":"Csere","btnReplaceAll":"Összes cseréje","btnUndo":"Visszavonás","changeTo":"Módosítás","errorLoading":"Hiba a szolgáltatás host betöltése közben: %s.","ieSpellDownload":"A helyesírás-ellenőrző nincs telepítve. Szeretné letölteni most?","manyChanges":"Helyesírás-ellenőrzés kész: %1 szó cserélve","noChanges":"Helyesírás-ellenőrzés kész: Nincs változtatott szó","noMispell":"Helyesírás-ellenőrzés kész: Nem találtam hibát","noSuggestions":"Nincs javaslat","notAvailable":"Sajnálom, de a szolgáltatás jelenleg nem elérhető.","notInDic":"Nincs a szótárban","oneChange":"Helyesírás-ellenőrzés kész: Egy szó cserélve","progress":"Helyesírás-ellenőrzés folyamatban...","title":"Helyesírás ellenörző","toolbar":"Helyesírás-ellenőrzés"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/id.js b/assets/plugins/ckeditor/lang/id.js deleted file mode 100644 index 6c932ebe..00000000 --- a/assets/plugins/ckeditor/lang/id.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['id']={"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Tekan ALT 0 untuk bantuan.","browseServer":"Jelajah Server","url":"URL","protocol":"Protokol","upload":"Unggah","uploadSubmit":"Kirim ke Server","image":"Gambar","flash":"Flash","form":"Formulir","checkbox":"Kotak Cek","radio":"Tombol Radio","textField":"Kolom Teks","textarea":"Area Teks","hiddenField":"Kolom Tersembunyi","button":"Tombol","select":"Kolom Seleksi","imageButton":"Tombol Gambar","notSet":"<tidak diatur>","id":"Id","name":"Nama","langDir":"Arah Bahasa","langDirLtr":"Kiri ke Kanan (LTR)","langDirRtl":"Kanan ke Kiri","langCode":"Kode Bahasa","longDescr":"Deskripsi URL Panjang","cssClass":"Kelas Stylesheet","advisoryTitle":"Penasehat Judul","cssStyle":"Gaya","ok":"OK","cancel":"Batal","close":"Tutup","preview":"Pratinjau","resize":"Ubah ukuran","generalTab":"Umum","advancedTab":"Advanced","validateNumberFailed":"Nilai ini tidak sebuah angka","confirmNewPage":"Semua perubahan yang tidak disimpan di konten ini akan hilang. Apakah anda yakin ingin memuat halaman baru?","confirmCancel":"Beberapa opsi telah berubah. Apakah anda yakin ingin menutup dialog?","options":"Opsi","target":"Sasaran","targetNew":"Jendela Baru (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Jendela yang Sama (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Kiri ke Kanan (LTR)","langDirRTL":"Kanan ke Kiri (RTL)","styles":"Gaya","cssClasses":"Kelas Stylesheet","width":"Lebar","height":"Tinggi","align":"Penjajaran","alignLeft":"Kiri","alignRight":"Kanan","alignCenter":"Tengah","alignTop":"Atas","alignMiddle":"Tengah","alignBottom":"Bawah","invalidValue":"Nilai tidak sah.","invalidHeight":"Tinggi harus sebuah angka.","invalidWidth":"Lebar harus sebuah angka.","invalidCssLength":"Nilai untuk \"%1\" harus sebuah angkat positif dengan atau tanpa pengukuran unit CSS yang sah (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Nilai yang dispesifikasian untuk kolom \"%1\" harus sebuah angka positif dengan atau tanpa sebuah unit pengukuran HTML (px atau %) yang valid.","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Masukkan sebuah angka untuk sebuah nilai dalam pixel atau sebuah angka dengan unit CSS yang sah (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, tidak tersedia</span>"},"about":{"copy":"Hak cipta &copy; $1. All rights reserved.","dlgTitle":"Tentang CKEditor","help":"Cel $1 untuk bantuan.","moreInfo":"Untuk informasi lisensi silahkan kunjungi web site kami:","title":"Tentang CKEditor","userGuide":"Petunjuk Pengguna CKEditor"},"basicstyles":{"bold":"Huruf Tebal","italic":"Huruf Miring","strike":"Strike Through","subscript":"Subscript","superscript":"Superscript","underline":"Garis Bawah"},"blockquote":{"toolbar":"Kutipan Blok"},"clipboard":{"copy":"Salin","copyError":"Pengaturan keamanan peramban anda tidak mengizinkan editor untuk mengeksekusi operasi menyalin secara otomatis. Mohon gunakan papan tuts (Ctrl/Cmd+C)","cut":"Potong","cutError":"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).","paste":"Tempel","pasteArea":"Area Tempel","pasteMsg":"Please paste inside the following box using the keyboard (<strong>Ctrl/Cmd+V</strong>) and hit OK","securityMsg":"Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.","title":"Tempel"},"contextmenu":{"options":"Opsi Konteks Pilihan"},"toolbar":{"toolbarCollapse":"Ciutkan Toolbar","toolbarExpand":"Bentangkan Toolbar","toolbarGroups":{"document":"Dokumen","clipboard":"Papan klip / Kembalikan perlakuan","editing":"Sunting","forms":"Formulir","basicstyles":"Gaya Dasar","paragraph":"Paragraf","links":"Tautan","insert":"Sisip","styles":"Gaya","colors":"Warna","tools":"Alat"},"toolbars":"Editor toolbars"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"format":{"label":"Bentuk","panelTitle":"Bentuk Paragraf","tag_address":"Alamat","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Membentuk"},"horizontalrule":{"toolbar":"Sisip Garis Horisontal"},"image":{"alertUrl":"Mohon tulis URL gambar","alt":"Teks alternatif","border":"Batas","btnUpload":"Kirim ke Server","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"HSpace","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"Info Gambar","linkTab":"Tautan","lockRatio":"Lock Ratio","menu":"Image Properties","resetSize":"Reset Size","title":"Image Properties","titleButton":"Image Button Properties","upload":"Unggah","urlMissing":"Image source URL is missing.","vSpace":"VSpace","validateBorder":"Border must be a whole number.","validateHSpace":"HSpace must be a whole number.","validateVSpace":"VSpace must be a whole number."},"indent":{"indent":"Tingkatkan Lekuk","outdent":"Kurangi Lekuk"},"fakeobjects":{"anchor":"Anchor","flash":"Animasi Flash","hiddenfield":"Kolom Tersembunyi","iframe":"IFrame","unknown":"Obyek Tak Dikenal"},"link":{"acccessKey":"Access Key","advanced":"Advanced","advisoryContentType":"Advisory Content Type","advisoryTitle":"Penasehat Judul","anchor":{"toolbar":"Anchor","menu":"Edit Anchor","title":"Anchor Properties","name":"Anchor Name","errorName":"Please type the anchor name","remove":"Remove Anchor"},"anchorId":"By Element Id","anchorName":"By Anchor Name","charset":"Linked Resource Charset","cssClasses":"Kelas Stylesheet","emailAddress":"E-Mail Address","emailBody":"Message Body","emailSubject":"Message Subject","id":"Id","info":"Link Info","langCode":"Kode Bahasa","langDir":"Arah Bahasa","langDirLTR":"Kiri ke Kanan (LTR)","langDirRTL":"Kanan ke Kiri (RTL)","menu":"Edit Link","name":"Nama","noAnchors":"(No anchors available in the document)","noEmail":"Please type the e-mail address","noUrl":"Please type the link URL","other":"<other>","popupDependent":"Dependent (Netscape)","popupFeatures":"Popup Window Features","popupFullScreen":"Full Screen (IE)","popupLeft":"Left Position","popupLocationBar":"Location Bar","popupMenuBar":"Menu Bar","popupResizable":"Resizable","popupScrollBars":"Scroll Bars","popupStatusBar":"Status Bar","popupToolbar":"Toolbar","popupTop":"Top Position","rel":"Relationship","selectAnchor":"Select an Anchor","styles":"Gaya","tabIndex":"Tab Index","target":"Sasaran","targetFrame":"<frame>","targetFrameName":"Target Frame Name","targetPopup":"<popup window>","targetPopupName":"Popup Window Name","title":"Tautan","toAnchor":"Link to anchor in the text","toEmail":"E-mail","toUrl":"URL","toolbar":"Tautan","type":"Link Type","unlink":"Unlink","upload":"Unggah"},"list":{"bulletedlist":"Sisip/Hapus Daftar Bullet","numberedlist":"Sisip/Hapus Daftar Bernomor"},"magicline":{"title":"Masukkan paragraf disini"},"maximize":{"maximize":"Memperbesar","minimize":"Memperkecil"},"pastetext":{"button":"Tempel sebagai teks polos","title":"Tempel sebagai Teks Polos"},"pastefromword":{"confirmCleanup":"Teks yang ingin anda tempel sepertinya di salin dari Word. Apakah anda mau membersihkannya sebelum menempel?","error":"Tidak mungkin membersihkan data yang ditempel dikerenakan kesalahan internal","title":"Tempel dari Word","toolbar":"Tempel dari Word"},"removeformat":{"toolbar":"Hapus Format"},"sourcearea":{"toolbar":"Sumber"},"specialchar":{"options":"Opsi spesial karakter","title":"Pilih spesial karakter","toolbar":"Sisipkan spesial karakter"},"scayt":{"about":"About SCAYT","aboutTab":"About","addWord":"Add Word","allCaps":"Ignore All-Caps Words","dic_create":"Create","dic_delete":"Delete","dic_field_name":"Dictionary name","dic_info":"Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.","dic_rename":"Rename","dic_restore":"Restore","dictionariesTab":"Dictionaries","disable":"Disable SCAYT","emptyDic":"Dictionary name should not be empty.","enable":"Enable SCAYT","ignore":"Ignore","ignoreAll":"Ignore All","ignoreDomainNames":"Ignore Domain Names","langs":"Languages","languagesTab":"Languages","mixedCase":"Ignore Words with Mixed Case","mixedWithDigits":"Ignore Words with Numbers","moreSuggestions":"More suggestions","opera_title":"Not supported by Opera","options":"Options","optionsTab":"Options","title":"Spell Check As You Type","toggle":"Toggle SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"Gaya","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"table":{"border":"Ukuran batas","caption":"Judul halaman","cell":{"menu":"Sel","insertBefore":"Sisip Sel Sebelum","insertAfter":"Sisip Sel Setelah","deleteCell":"Hapus Sel","merge":"Gabungkan Sel","mergeRight":"Gabungkan ke Kanan","mergeDown":"Gabungkan ke Bawah","splitHorizontal":"Pisahkan Sel Secara Horisontal","splitVertical":"Pisahkan Sel Secara Vertikal","title":"Properti Sel","cellType":"Tipe Sel","rowSpan":"Rentang antar baris","colSpan":"Rentang antar kolom","wordWrap":"Word Wrap","hAlign":"Jajaran Horisontal","vAlign":"Jajaran Vertikal","alignBaseline":"Dasar","bgColor":"Warna Latar Belakang","borderColor":"Warna Batasan","data":"Data","header":"Header","yes":"Ya","no":"Tidak","invalidWidth":"Lebar sel harus sebuah angka.","invalidHeight":"Tinggi sel harus sebuah angka","invalidRowSpan":"Rentang antar baris harus angka seluruhnya.","invalidColSpan":"Rentang antar kolom harus angka seluruhnya","chooseColor":"Pilih"},"cellPad":"Sel spasi dalam","cellSpace":"Spasi antar sel","column":{"menu":"Kolom","insertBefore":"Sisip Kolom Sebelum","insertAfter":"Sisip Kolom Sesudah","deleteColumn":"Hapus Kolom"},"columns":"Kolom","deleteTable":"Hapus Tabel","headers":"Headers","headersBoth":"Keduanya","headersColumn":"Kolom pertama","headersNone":"Tidak ada","headersRow":"Baris Pertama","invalidBorder":"Ukuran batasan harus sebuah angka","invalidCellPadding":"'Spasi dalam' sel harus angka positif.","invalidCellSpacing":"Spasi antar sel harus angka positif.","invalidCols":"Jumlah kolom harus sebuah angka lebih besar dari 0","invalidHeight":"Tinggi tabel harus sebuah angka.","invalidRows":"Jumlah barus harus sebuah angka dan lebih besar dari 0.","invalidWidth":"Lebar tabel harus sebuah angka.","menu":"Properti Tabel","row":{"menu":"Baris","insertBefore":"Sisip Baris Sebelum","insertAfter":"Sisip Baris Sesudah","deleteRow":"Hapus Baris"},"rows":"Baris","summary":"Intisari","title":"Properti Tabel","toolbar":"Tabe","widthPc":"persen","widthPx":"piksel","widthUnit":"lebar satuan"},"undo":{"redo":"Kembali lakukan","undo":"Batalkan perlakuan"},"wsc":{"btnIgnore":"Ignore","btnIgnoreAll":"Ignore All","btnReplace":"Replace","btnReplaceAll":"Replace All","btnUndo":"Undo","changeTo":"Change to","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Spell checker not installed. Do you want to download it now?","manyChanges":"Spell check complete: %1 words changed","noChanges":"Spell check complete: No words changed","noMispell":"Spell check complete: No misspellings found","noSuggestions":"- No suggestions -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Not in dictionary","oneChange":"Spell check complete: One word changed","progress":"Spell check in progress...","title":"Spell Check","toolbar":"Check Spelling"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/is.js b/assets/plugins/ckeditor/lang/is.js deleted file mode 100644 index b085dd70..00000000 --- a/assets/plugins/ckeditor/lang/is.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['is']={"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Fletta í skjalasafni","url":"Vefslóð","protocol":"Samskiptastaðall","upload":"Senda upp","uploadSubmit":"Hlaða upp","image":"Setja inn mynd","flash":"Flash","form":"Setja inn innsláttarform","checkbox":"Setja inn hökunarreit","radio":"Setja inn valhnapp","textField":"Setja inn textareit","textarea":"Setja inn textasvæði","hiddenField":"Setja inn falið svæði","button":"Setja inn hnapp","select":"Setja inn lista","imageButton":"Setja inn myndahnapp","notSet":"<ekkert valið>","id":"Auðkenni","name":"Nafn","langDir":"Lesstefna","langDirLtr":"Frá vinstri til hægri (LTR)","langDirRtl":"Frá hægri til vinstri (RTL)","langCode":"Tungumálakóði","longDescr":"Nánari lýsing","cssClass":"Stílsniðsflokkur","advisoryTitle":"Titill","cssStyle":"Stíll","ok":"Í lagi","cancel":"Hætta við","close":"Close","preview":"Forskoða","resize":"Resize","generalTab":"Almennt","advancedTab":"Tæknilegt","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"Mark","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Frá vinstri til hægri (LTR)","langDirRTL":"Frá hægri til vinstri (RTL)","styles":"Stíll","cssClasses":"Stílsniðsflokkur","width":"Breidd","height":"Hæð","align":"Jöfnun","alignLeft":"Vinstri","alignRight":"Hægri","alignCenter":"Miðjað","alignTop":"Efst","alignMiddle":"Miðjuð","alignBottom":"Neðst","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>"},"about":{"copy":"Copyright &copy; $1. All rights reserved.","dlgTitle":"About CKEditor","help":"Check $1 for help.","moreInfo":"For licensing information please visit our web site:","title":"About CKEditor","userGuide":"CKEditor User's Guide"},"basicstyles":{"bold":"Feitletrað","italic":"Skáletrað","strike":"Yfirstrikað","subscript":"Niðurskrifað","superscript":"Uppskrifað","underline":"Undirstrikað"},"blockquote":{"toolbar":"Inndráttur"},"clipboard":{"copy":"Afrita","copyError":"Öryggisstillingar vafrans þíns leyfa ekki afritun texta með músaraðgerð. Notaðu lyklaborðið í afrita (Ctrl/Cmd+C).","cut":"Klippa","cutError":"Öryggisstillingar vafrans þíns leyfa ekki klippingu texta með músaraðgerð. Notaðu lyklaborðið í klippa (Ctrl/Cmd+X).","paste":"Líma","pasteArea":"Paste Area","pasteMsg":"Límdu í svæðið hér að neðan og (<STRONG>Ctrl/Cmd+V</STRONG>) og smelltu á <STRONG>OK</STRONG>.","securityMsg":"Vegna öryggisstillinga í vafranum þínum fær ritillinn ekki beinan aðgang að klippuborðinu. Þú verður að líma innihaldið aftur inn í þennan glugga.","title":"Líma"},"contextmenu":{"options":"Context Menu Options"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"format":{"label":"Stílsnið","panelTitle":"Stílsnið","tag_address":"Vistfang","tag_div":"Venjulegt (DIV)","tag_h1":"Fyrirsögn 1","tag_h2":"Fyrirsögn 2","tag_h3":"Fyrirsögn 3","tag_h4":"Fyrirsögn 4","tag_h5":"Fyrirsögn 5","tag_h6":"Fyrirsögn 6","tag_p":"Venjulegt letur","tag_pre":"Forsniðið"},"horizontalrule":{"toolbar":"Lóðrétt lína"},"image":{"alertUrl":"Sláðu inn slóðina að myndinni","alt":"Baklægur texti","border":"Rammi","btnUpload":"Hlaða upp","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"Vinstri bil","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"Almennt","linkTab":"Stikla","lockRatio":"Festa stærðarhlutfall","menu":"Eigindi myndar","resetSize":"Reikna stærð","title":"Eigindi myndar","titleButton":"Eigindi myndahnapps","upload":"Hlaða upp","urlMissing":"Image source URL is missing.","vSpace":"Hægri bil","validateBorder":"Border must be a whole number.","validateHSpace":"HSpace must be a whole number.","validateVSpace":"VSpace must be a whole number."},"indent":{"indent":"Minnka inndrátt","outdent":"Auka inndrátt"},"fakeobjects":{"anchor":"Anchor","flash":"Flash Animation","hiddenfield":"Hidden Field","iframe":"IFrame","unknown":"Unknown Object"},"link":{"acccessKey":"Skammvalshnappur","advanced":"Tæknilegt","advisoryContentType":"Tegund innihalds","advisoryTitle":"Titill","anchor":{"toolbar":"Stofna/breyta kaflamerki","menu":"Eigindi kaflamerkis","title":"Eigindi kaflamerkis","name":"Nafn bókamerkis","errorName":"Sláðu inn nafn bókamerkis!","remove":"Remove Anchor"},"anchorId":"Eftir auðkenni einingar","anchorName":"Eftir akkerisnafni","charset":"Táknróf","cssClasses":"Stílsniðsflokkur","emailAddress":"Netfang","emailBody":"Meginmál","emailSubject":"Efni","id":"Auðkenni","info":"Almennt","langCode":"Lesstefna","langDir":"Lesstefna","langDirLTR":"Frá vinstri til hægri (LTR)","langDirRTL":"Frá hægri til vinstri (RTL)","menu":"Breyta stiklu","name":"Nafn","noAnchors":"<Engin bókamerki á skrá>","noEmail":"Sláðu inn netfang!","noUrl":"Sláðu inn veffang stiklunnar!","other":"<annar>","popupDependent":"Háð venslum (Netscape)","popupFeatures":"Eigindi sprettiglugga","popupFullScreen":"Heilskjár (IE)","popupLeft":"Fjarlægð frá vinstri","popupLocationBar":"Fanglína","popupMenuBar":"Vallína","popupResizable":"Resizable","popupScrollBars":"Skrunstikur","popupStatusBar":"Stöðustika","popupToolbar":"Verkfærastika","popupTop":"Fjarlægð frá efri brún","rel":"Relationship","selectAnchor":"Veldu akkeri","styles":"Stíll","tabIndex":"Raðnúmer innsláttarreits","target":"Mark","targetFrame":"<rammi>","targetFrameName":"Nafn markglugga","targetPopup":"<sprettigluggi>","targetPopupName":"Nafn sprettiglugga","title":"Stikla","toAnchor":"Bókamerki á þessari síðu","toEmail":"Netfang","toUrl":"Vefslóð","toolbar":"Stofna/breyta stiklu","type":"Stikluflokkur","unlink":"Fjarlægja stiklu","upload":"Senda upp"},"list":{"bulletedlist":"Punktalisti","numberedlist":"Númeraður listi"},"magicline":{"title":"Insert paragraph here"},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"pastetext":{"button":"Líma sem ósniðinn texta","title":"Líma sem ósniðinn texta"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Líma úr Word","toolbar":"Líma úr Word"},"removeformat":{"toolbar":"Fjarlægja snið"},"sourcearea":{"toolbar":"Kóði"},"specialchar":{"options":"Special Character Options","title":"Velja tákn","toolbar":"Setja inn merki"},"scayt":{"about":"About SCAYT","aboutTab":"About","addWord":"Add Word","allCaps":"Ignore All-Caps Words","dic_create":"Create","dic_delete":"Delete","dic_field_name":"Dictionary name","dic_info":"Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.","dic_rename":"Rename","dic_restore":"Restore","dictionariesTab":"Dictionaries","disable":"Disable SCAYT","emptyDic":"Dictionary name should not be empty.","enable":"Enable SCAYT","ignore":"Ignore","ignoreAll":"Ignore All","ignoreDomainNames":"Ignore Domain Names","langs":"Languages","languagesTab":"Languages","mixedCase":"Ignore Words with Mixed Case","mixedWithDigits":"Ignore Words with Numbers","moreSuggestions":"More suggestions","opera_title":"Not supported by Opera","options":"Options","optionsTab":"Options","title":"Spell Check As You Type","toggle":"Toggle SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"Stílflokkur","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"table":{"border":"Breidd ramma","caption":"Titill","cell":{"menu":"Reitur","insertBefore":"Skjóta inn reiti fyrir aftan","insertAfter":"Skjóta inn reiti fyrir framan","deleteCell":"Fella reit","merge":"Sameina reiti","mergeRight":"Sameina til hægri","mergeDown":"Sameina niður á við","splitHorizontal":"Kljúfa reit lárétt","splitVertical":"Kljúfa reit lóðrétt","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Reitaspássía","cellSpace":"Bil milli reita","column":{"menu":"Dálkur","insertBefore":"Skjóta inn dálki vinstra megin","insertAfter":"Skjóta inn dálki hægra megin","deleteColumn":"Fella dálk"},"columns":"Dálkar","deleteTable":"Fella töflu","headers":"Fyrirsagnir","headersBoth":"Hvort tveggja","headersColumn":"Fyrsti dálkur","headersNone":"Engar","headersRow":"Fyrsta röð","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Eigindi töflu","row":{"menu":"Röð","insertBefore":"Skjóta inn röð fyrir ofan","insertAfter":"Skjóta inn röð fyrir neðan","deleteRow":"Eyða röð"},"rows":"Raðir","summary":"Áfram","title":"Eigindi töflu","toolbar":"Tafla","widthPc":"prósent","widthPx":"myndeindir","widthUnit":"width unit"},"undo":{"redo":"Hætta við afturköllun","undo":"Afturkalla"},"wsc":{"btnIgnore":"Hunsa","btnIgnoreAll":"Hunsa allt","btnReplace":"Skipta","btnReplaceAll":"Skipta öllu","btnUndo":"Til baka","changeTo":"Tillaga","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Villuleit ekki sett upp.<br>Viltu setja hana upp?","manyChanges":"Villuleit lokið: %1 orðum breytt","noChanges":"Villuleit lokið: Engu orði breytt","noMispell":"Villuleit lokið: Engin villa fannst","noSuggestions":"- engar tillögur -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Ekki í orðabókinni","oneChange":"Villuleit lokið: Einu orði breytt","progress":"Villuleit í gangi...","title":"Spell Check","toolbar":"Villuleit"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/it.js b/assets/plugins/ckeditor/lang/it.js deleted file mode 100644 index fb8c77d1..00000000 --- a/assets/plugins/ckeditor/lang/it.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['it']={"editor":"Rich Text Editor","editorPanel":"Pannello Rich Text Editor","common":{"editorHelp":"Premi ALT 0 per aiuto","browseServer":"Cerca sul server","url":"URL","protocol":"Protocollo","upload":"Carica","uploadSubmit":"Invia al server","image":"Immagine","flash":"Oggetto Flash","form":"Modulo","checkbox":"Checkbox","radio":"Radio Button","textField":"Campo di testo","textarea":"Area di testo","hiddenField":"Campo nascosto","button":"Bottone","select":"Menu di selezione","imageButton":"Bottone immagine","notSet":"<non impostato>","id":"Id","name":"Nome","langDir":"Direzione scrittura","langDirLtr":"Da Sinistra a Destra (LTR)","langDirRtl":"Da Destra a Sinistra (RTL)","langCode":"Codice Lingua","longDescr":"URL descrizione estesa","cssClass":"Nome classe CSS","advisoryTitle":"Titolo","cssStyle":"Stile","ok":"OK","cancel":"Annulla","close":"Chiudi","preview":"Anteprima","resize":"Trascina per ridimensionare","generalTab":"Generale","advancedTab":"Avanzate","validateNumberFailed":"Il valore inserito non è un numero.","confirmNewPage":"Ogni modifica non salvata sarà persa. Sei sicuro di voler caricare una nuova pagina?","confirmCancel":"Alcune delle opzioni sono state cambiate. Sei sicuro di voler chiudere la finestra di dialogo?","options":"Opzioni","target":"Destinazione","targetNew":"Nuova finestra (_blank)","targetTop":"Finestra in primo piano (_top)","targetSelf":"Stessa finestra (_self)","targetParent":"Finestra Padre (_parent)","langDirLTR":"Da sinistra a destra (LTR)","langDirRTL":"Da destra a sinistra (RTL)","styles":"Stile","cssClasses":"Classi di stile","width":"Larghezza","height":"Altezza","align":"Allineamento","alignLeft":"Sinistra","alignRight":"Destra","alignCenter":"Centrato","alignTop":"In Alto","alignMiddle":"Centrato","alignBottom":"In Basso","invalidValue":"Valore non valido.","invalidHeight":"L'altezza dev'essere un numero","invalidWidth":"La Larghezza dev'essere un numero","invalidCssLength":"Il valore indicato per il campo \"%1\" deve essere un numero positivo con o senza indicazione di una valida unità di misura per le classi CSS (px, %, in, cm, mm, em, ex, pt, o pc).","invalidHtmlLength":"Il valore indicato per il campo \"%1\" deve essere un numero positivo con o senza indicazione di una valida unità di misura per le pagine HTML (px o %).","invalidInlineStyle":"Il valore specificato per lo stile inline deve consistere in una o più tuple con il formato di \"name : value\", separati da semicolonne.","cssLengthTooltip":"Inserisci un numero per il valore in pixel oppure un numero con una valida unità CSS (px, %, in, cm, mm, ex, pt, o pc).","unavailable":"%1<span class=\"cke_accessibility\">, non disponibile</span>"},"about":{"copy":"Copyright &copy; $1. Tutti i diritti riservati.","dlgTitle":"Riguardo CKEditor","help":"Vedi $1 per l'aiuto.","moreInfo":"Per le informazioni sulla licenza si prega di visitare il nostro sito:","title":"Riguardo CKEditor","userGuide":"Guida Utente CKEditor"},"basicstyles":{"bold":"Grassetto","italic":"Corsivo","strike":"Barrato","subscript":"Pedice","superscript":"Apice","underline":"Sottolineato"},"blockquote":{"toolbar":"Citazione"},"clipboard":{"copy":"Copia","copyError":"Le impostazioni di sicurezza del browser non permettono di copiare automaticamente il testo. Usa la tastiera (Ctrl/Cmd+C).","cut":"Taglia","cutError":"Le impostazioni di sicurezza del browser non permettono di tagliare automaticamente il testo. Usa la tastiera (Ctrl/Cmd+X).","paste":"Incolla","pasteArea":"Incolla","pasteMsg":"Incolla il testo all'interno dell'area sottostante usando la scorciatoia di tastiere (<STRONG>Ctrl/Cmd+V</STRONG>) e premi <STRONG>OK</STRONG>.","securityMsg":"A causa delle impostazioni di sicurezza del browser,l'editor non è in grado di accedere direttamente agli appunti. E' pertanto necessario incollarli di nuovo in questa finestra.","title":"Incolla"},"contextmenu":{"options":"Opzioni del menù contestuale"},"toolbar":{"toolbarCollapse":"Minimizza Toolbar","toolbarExpand":"Espandi Toolbar","toolbarGroups":{"document":"Documento","clipboard":"Copia negli appunti/Annulla","editing":"Modifica","forms":"Form","basicstyles":"Stili di base","paragraph":"Paragrafo","links":"Link","insert":"Inserisci","styles":"Stili","colors":"Colori","tools":"Strumenti"},"toolbars":"Editor toolbar"},"elementspath":{"eleLabel":"Percorso degli elementi","eleTitle":"%1 elemento"},"format":{"label":"Formato","panelTitle":"Formato","tag_address":"Indirizzo","tag_div":"Paragrafo (DIV)","tag_h1":"Titolo 1","tag_h2":"Titolo 2","tag_h3":"Titolo 3","tag_h4":"Titolo 4","tag_h5":"Titolo 5","tag_h6":"Titolo 6","tag_p":"Normale","tag_pre":"Formattato"},"horizontalrule":{"toolbar":"Inserisci riga orizzontale"},"image":{"alertUrl":"Devi inserire l'URL per l'immagine","alt":"Testo alternativo","border":"Bordo","btnUpload":"Invia al server","button2Img":"Vuoi trasformare il bottone immagine selezionato in un'immagine semplice?","hSpace":"HSpace","img2Button":"Vuoi trasferomare l'immagine selezionata in un bottone immagine?","infoTab":"Informazioni immagine","linkTab":"Collegamento","lockRatio":"Blocca rapporto","menu":"Proprietà immagine","resetSize":"Reimposta dimensione","title":"Proprietà immagine","titleButton":"Proprietà bottone immagine","upload":"Carica","urlMissing":"Manca l'URL dell'immagine.","vSpace":"VSpace","validateBorder":"Il campo Bordo deve essere un numero intero.","validateHSpace":"Il campo HSpace deve essere un numero intero.","validateVSpace":"Il campo VSpace deve essere un numero intero."},"indent":{"indent":"Aumenta rientro","outdent":"Riduci rientro"},"fakeobjects":{"anchor":"Ancora","flash":"Animazione Flash","hiddenfield":"Campo Nascosto","iframe":"IFrame","unknown":"Oggetto sconosciuto"},"link":{"acccessKey":"Scorciatoia da tastiera","advanced":"Avanzate","advisoryContentType":"Tipo della risorsa collegata","advisoryTitle":"Titolo","anchor":{"toolbar":"Inserisci/Modifica Ancora","menu":"Proprietà ancora","title":"Proprietà ancora","name":"Nome ancora","errorName":"Inserici il nome dell'ancora","remove":"Rimuovi l'ancora"},"anchorId":"Per id elemento","anchorName":"Per Nome","charset":"Set di caretteri della risorsa collegata","cssClasses":"Nome classe CSS","emailAddress":"Indirizzo E-Mail","emailBody":"Corpo del messaggio","emailSubject":"Oggetto del messaggio","id":"Id","info":"Informazioni collegamento","langCode":"Direzione scrittura","langDir":"Direzione scrittura","langDirLTR":"Da Sinistra a Destra (LTR)","langDirRTL":"Da Destra a Sinistra (RTL)","menu":"Modifica collegamento","name":"Nome","noAnchors":"(Nessuna ancora disponibile nel documento)","noEmail":"Devi inserire un'indirizzo e-mail","noUrl":"Devi inserire l'URL del collegamento","other":"<altro>","popupDependent":"Dipendente (Netscape)","popupFeatures":"Caratteristiche finestra popup","popupFullScreen":"A tutto schermo (IE)","popupLeft":"Posizione da sinistra","popupLocationBar":"Barra degli indirizzi","popupMenuBar":"Barra del menu","popupResizable":"Ridimensionabile","popupScrollBars":"Barre di scorrimento","popupStatusBar":"Barra di stato","popupToolbar":"Barra degli strumenti","popupTop":"Posizione dall'alto","rel":"Relazioni","selectAnchor":"Scegli Ancora","styles":"Stile","tabIndex":"Ordine di tabulazione","target":"Destinazione","targetFrame":"<riquadro>","targetFrameName":"Nome del riquadro di destinazione","targetPopup":"<finestra popup>","targetPopupName":"Nome finestra popup","title":"Collegamento","toAnchor":"Ancora nel testo","toEmail":"E-Mail","toUrl":"URL","toolbar":"Collegamento","type":"Tipo di Collegamento","unlink":"Elimina collegamento","upload":"Carica"},"list":{"bulletedlist":"Inserisci/Rimuovi Elenco Puntato","numberedlist":"Inserisci/Rimuovi Elenco Numerato"},"magicline":{"title":"Inserisci paragrafo qui"},"maximize":{"maximize":"Massimizza","minimize":"Minimizza"},"pastetext":{"button":"Incolla come testo semplice","title":"Incolla come testo semplice"},"pastefromword":{"confirmCleanup":"Il testo da incollare sembra provenire da Word. Desideri pulirlo prima di incollare?","error":"Non è stato possibile eliminare il testo incollato a causa di un errore interno.","title":"Incolla da Word","toolbar":"Incolla da Word"},"removeformat":{"toolbar":"Elimina formattazione"},"sourcearea":{"toolbar":"Sorgente"},"specialchar":{"options":"Opzioni carattere speciale","title":"Seleziona carattere speciale","toolbar":"Inserisci carattere speciale"},"scayt":{"about":"About COMS","aboutTab":"Info","addWord":"Aggiungi Parola","allCaps":"Ignora Parole in maiuscolo","dic_create":"Crea","dic_delete":"Cancella","dic_field_name":"Nome del dizionario","dic_info":"Inizialmente il dizionario utente è memorizzato in un Cookie. I Cookie però hanno una dimensioni massima limitata. Quando il dizionario utente creasce a tal punto da non poter più essere memorizzato in un Cookie, allora il dizionario può essere memorizzato sul nostro server. Per memorizzare il proprio dizionario personale sul nostro server, è necessario specificare un nome per il proprio dizionario. Se avete già memorizzato un dizionario, inserite il nome che gli avete dato e premete il pulsante Ripristina.","dic_rename":"Rinomina","dic_restore":"Ripristina","dictionariesTab":"Dizionari","disable":"Disabilita COMS","emptyDic":"Il nome del dizionario non può essere vuoto.","enable":"Abilita COMS","ignore":"Ignora","ignoreAll":"Ignora tutti","ignoreDomainNames":"Ignora nomi di dominio","langs":"Lingue","languagesTab":"Lingue","mixedCase":"Ignora parole con maiuscole e minuscole","mixedWithDigits":"Ignora parole con numeri","moreSuggestions":"Altri suggerimenti","opera_title":"Non supportato da Opera","options":"Opzioni","optionsTab":"Opzioni","title":"Controllo Ortografico Mentre Scrivi","toggle":"Inverti abilitazione SCOMS","noSuggestions":"No suggestion"},"stylescombo":{"label":"Stili","panelTitle":"Stili di formattazione","panelTitle1":"Stili per blocchi","panelTitle2":"Stili in linea","panelTitle3":"Stili per oggetti"},"table":{"border":"Dimensione bordo","caption":"Intestazione","cell":{"menu":"Cella","insertBefore":"Inserisci Cella Prima","insertAfter":"Inserisci Cella Dopo","deleteCell":"Elimina celle","merge":"Unisce celle","mergeRight":"Unisci a Destra","mergeDown":"Unisci in Basso","splitHorizontal":"Dividi Cella Orizzontalmente","splitVertical":"Dividi Cella Verticalmente","title":"Proprietà della cella","cellType":"Tipo di cella","rowSpan":"Su più righe","colSpan":"Su più colonne","wordWrap":"Ritorno a capo","hAlign":"Allineamento orizzontale","vAlign":"Allineamento verticale","alignBaseline":"Linea Base","bgColor":"Colore di Sfondo","borderColor":"Colore del Bordo","data":"Dati","header":"Intestazione","yes":"Si","no":"No","invalidWidth":"La larghezza della cella dev'essere un numero.","invalidHeight":"L'altezza della cella dev'essere un numero.","invalidRowSpan":"Il numero di righe dev'essere un numero intero.","invalidColSpan":"Il numero di colonne dev'essere un numero intero.","chooseColor":"Scegli"},"cellPad":"Padding celle","cellSpace":"Spaziatura celle","column":{"menu":"Colonna","insertBefore":"Inserisci Colonna Prima","insertAfter":"Inserisci Colonna Dopo","deleteColumn":"Elimina colonne"},"columns":"Colonne","deleteTable":"Cancella Tabella","headers":"Intestazione","headersBoth":"Entrambe","headersColumn":"Prima Colonna","headersNone":"Nessuna","headersRow":"Prima Riga","invalidBorder":"La dimensione del bordo dev'essere un numero.","invalidCellPadding":"Il paging delle celle dev'essere un numero","invalidCellSpacing":"La spaziatura tra le celle dev'essere un numero.","invalidCols":"Il numero di colonne dev'essere un numero maggiore di 0.","invalidHeight":"L'altezza della tabella dev'essere un numero.","invalidRows":"Il numero di righe dev'essere un numero maggiore di 0.","invalidWidth":"La larghezza della tabella dev'essere un numero.","menu":"Proprietà tabella","row":{"menu":"Riga","insertBefore":"Inserisci Riga Prima","insertAfter":"Inserisci Riga Dopo","deleteRow":"Elimina righe"},"rows":"Righe","summary":"Indice","title":"Proprietà tabella","toolbar":"Tabella","widthPc":"percento","widthPx":"pixel","widthUnit":"unità larghezza"},"undo":{"redo":"Ripristina","undo":"Annulla"},"wsc":{"btnIgnore":"Ignora","btnIgnoreAll":"Ignora tutto","btnReplace":"Cambia","btnReplaceAll":"Cambia tutto","btnUndo":"Annulla","changeTo":"Cambia in","errorLoading":"Errore nel caricamento dell'host col servizio applicativo: %s.","ieSpellDownload":"Contollo ortografico non installato. Lo vuoi scaricare ora?","manyChanges":"Controllo ortografico completato: %1 parole cambiate","noChanges":"Controllo ortografico completato: nessuna parola cambiata","noMispell":"Controllo ortografico completato: nessun errore trovato","noSuggestions":"- Nessun suggerimento -","notAvailable":"Il servizio non è momentaneamente disponibile.","notInDic":"Non nel dizionario","oneChange":"Controllo ortografico completato: 1 parola cambiata","progress":"Controllo ortografico in corso","title":"Controllo ortografico","toolbar":"Correttore ortografico"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/ja.js b/assets/plugins/ckeditor/lang/ja.js deleted file mode 100644 index 4ee91d27..00000000 --- a/assets/plugins/ckeditor/lang/ja.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['ja']={"editor":"リッチテキストエディタ","editorPanel":"リッチテキストエディタパネル","common":{"editorHelp":"ヘルプは ALT 0 を押してください","browseServer":"サーバブラウザ","url":"URL","protocol":"プロトコル","upload":"アップロード","uploadSubmit":"サーバーに送信","image":"イメージ","flash":"Flash","form":"フォーム","checkbox":"チェックボックス","radio":"ラジオボタン","textField":"1行テキスト","textarea":"テキストエリア","hiddenField":"不可視フィールド","button":"ボタン","select":"選択フィールド","imageButton":"画像ボタン","notSet":"<なし>","id":"Id","name":"Name属性","langDir":"文字表記の方向","langDirLtr":"左から右 (LTR)","langDirRtl":"右から左 (RTL)","langCode":"言語コード","longDescr":"longdesc属性(長文説明)","cssClass":"スタイルシートクラス","advisoryTitle":"Title属性","cssStyle":"スタイルシート","ok":"OK","cancel":"キャンセル","close":"閉じる","preview":"プレビュー","resize":"ドラッグしてリサイズ","generalTab":"全般","advancedTab":"高度な設定","validateNumberFailed":"値が数ではありません","confirmNewPage":"変更内容を保存せず、 新しいページを開いてもよろしいでしょうか?","confirmCancel":"オプション設定を変更しました。ダイアログを閉じてもよろしいでしょうか?","options":"オプション","target":"ターゲット","targetNew":"新しいウインドウ (_blank)","targetTop":"最上部ウィンドウ (_top)","targetSelf":"同じウィンドウ (_self)","targetParent":"親ウィンドウ (_parent)","langDirLTR":"左から右 (LTR)","langDirRTL":"右から左 (RTL)","styles":"スタイル","cssClasses":"スタイルシートクラス","width":"幅","height":"高さ","align":"行揃え","alignLeft":"左","alignRight":"右","alignCenter":"中央","alignTop":"上","alignMiddle":"中央","alignBottom":"下","invalidValue":"不正な値です。","invalidHeight":"高さは数値で入力してください。","invalidWidth":"幅は数値で入力してください。","invalidCssLength":"入力された \"%1\" 項目の値は、CSSの大きさ(px, %, in, cm, mm, em, ex, pt, または pc)が正しいものである/ないに関わらず、正の値である必要があります。","invalidHtmlLength":"入力された \"%1\" 項目の値は、HTMLの大きさ(px または %)が正しいものである/ないに関わらず、正の値である必要があります。","invalidInlineStyle":"入力されたインラインスタイルの値は、\"名前 : 値\" のフォーマットのセットで、複数の場合はセミコロンで区切られている形式である必要があります。","cssLengthTooltip":"ピクセル数もしくはCSSにセットできる数値を入力してください。(px,%,in,cm,mm,em,ex,pt,or pc)","unavailable":"%1<span class=\"cke_accessibility\">, 利用不可能</span>"},"about":{"copy":"Copyright &copy; $1. All rights reserved.","dlgTitle":"CKEditorについて","help":"$1 のヘルプを見てください。","moreInfo":"ライセンス情報の詳細はウェブサイトにて確認してください:","title":"CKEditorについて","userGuide":"CKEditor User's Guide"},"basicstyles":{"bold":"太字","italic":"斜体","strike":"打ち消し線","subscript":"下付き","superscript":"上付き","underline":"下線"},"blockquote":{"toolbar":"ブロック引用文"},"clipboard":{"copy":"コピー","copyError":"ブラウザーのセキュリティ設定によりエディタのコピー操作を自動で実行することができません。実行するには手動でキーボードの(Ctrl/Cmd+C)を使用してください。","cut":"切り取り","cutError":"ブラウザーのセキュリティ設定によりエディタの切り取り操作を自動で実行することができません。実行するには手動でキーボードの(Ctrl/Cmd+X)を使用してください。","paste":"貼り付け","pasteArea":"貼り付け場所","pasteMsg":"キーボード(<STRONG>Ctrl/Cmd+V</STRONG>)を使用して、次の入力エリア内で貼り付けて、<STRONG>OK</STRONG>を押してください。","securityMsg":"ブラウザのセキュリティ設定により、エディタはクリップボードデータに直接アクセスすることができません。このウィンドウは貼り付け操作を行う度に表示されます。","title":"貼り付け"},"contextmenu":{"options":"コンテキストメニューオプション"},"toolbar":{"toolbarCollapse":"ツールバーを閉じる","toolbarExpand":"ツールバーを開く","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"編集ツールバー"},"elementspath":{"eleLabel":"要素パス","eleTitle":"%1 要素"},"format":{"label":"書式","panelTitle":"段落の書式","tag_address":"アドレス","tag_div":"標準 (DIV)","tag_h1":"見出し 1","tag_h2":"見出し 2","tag_h3":"見出し 3","tag_h4":"見出し 4","tag_h5":"見出し 5","tag_h6":"見出し 6","tag_p":"標準","tag_pre":"書式付き"},"horizontalrule":{"toolbar":"水平線"},"image":{"alertUrl":"画像のURLを入力してください","alt":"代替テキスト","border":"枠線の幅","btnUpload":"サーバーに送信","button2Img":"選択した画像ボタンを画像に変換しますか?","hSpace":"水平間隔","img2Button":"選択した画像を画像ボタンに変換しますか?","infoTab":"画像情報","linkTab":"リンク","lockRatio":"比率を固定","menu":"画像のプロパティ","resetSize":"サイズをリセット","title":"画像のプロパティ","titleButton":"画像ボタンのプロパティ","upload":"アップロード","urlMissing":"画像のURLを入力してください。","vSpace":"垂直間隔","validateBorder":"枠線の幅は数値で入力してください。","validateHSpace":"水平間隔は数値で入力してください。","validateVSpace":"垂直間隔は数値で入力してください。"},"indent":{"indent":"インデント","outdent":"インデント解除"},"fakeobjects":{"anchor":"アンカー","flash":"Flash Animation","hiddenfield":"不可視フィールド","iframe":"IFrame","unknown":"Unknown Object"},"link":{"acccessKey":"アクセスキー","advanced":"高度な設定","advisoryContentType":"Content Type属性","advisoryTitle":"Title属性","anchor":{"toolbar":"アンカー挿入/編集","menu":"アンカーの編集","title":"アンカーのプロパティ","name":"アンカー名","errorName":"アンカー名を入力してください。","remove":"アンカーを削除"},"anchorId":"エレメントID","anchorName":"アンカー名","charset":"リンク先のcharset","cssClasses":"スタイルシートクラス","emailAddress":"E-Mail アドレス","emailBody":"本文","emailSubject":"件名","id":"Id","info":"ハイパーリンク情報","langCode":"言語コード","langDir":"文字表記の方向","langDirLTR":"左から右 (LTR)","langDirRTL":"右から左 (RTL)","menu":"リンクを編集","name":"Name属性","noAnchors":"(このドキュメント内にアンカーはありません)","noEmail":"メールアドレスを入力してください。","noUrl":"リンクURLを入力してください。","other":"<その他の>","popupDependent":"開いたウィンドウに連動して閉じる (Netscape)","popupFeatures":"ポップアップウィンドウ特徴","popupFullScreen":"全画面モード(IE)","popupLeft":"左端からの座標で指定","popupLocationBar":"ロケーションバー","popupMenuBar":"メニューバー","popupResizable":"サイズ可変","popupScrollBars":"スクロールバー","popupStatusBar":"ステータスバー","popupToolbar":"ツールバー","popupTop":"上端からの座標で指定","rel":"関連リンク","selectAnchor":"アンカーを選択","styles":"スタイルシート","tabIndex":"タブインデックス","target":"ターゲット","targetFrame":"<フレーム>","targetFrameName":"ターゲットのフレーム名","targetPopup":"<ポップアップウィンドウ>","targetPopupName":"ポップアップウィンドウ名","title":"ハイパーリンク","toAnchor":"ページ内のアンカー","toEmail":"E-Mail","toUrl":"URL","toolbar":"リンク挿入/編集","type":"リンクタイプ","unlink":"リンクを削除","upload":"アップロード"},"list":{"bulletedlist":"番号無しリスト","numberedlist":"番号付きリスト"},"magicline":{"title":"ここに段落を挿入"},"maximize":{"maximize":"最大化","minimize":"最小化"},"pastetext":{"button":"プレーンテキストとして貼り付け","title":"プレーンテキストとして貼り付け"},"pastefromword":{"confirmCleanup":"貼り付けを行うテキストはワード文章からコピーされようとしています。貼り付ける前にクリーニングを行いますか?","error":"内部エラーにより貼り付けたデータをクリアできませんでした","title":"ワード文章から貼り付け","toolbar":"ワード文章から貼り付け"},"removeformat":{"toolbar":"書式を解除"},"sourcearea":{"toolbar":"ソース"},"specialchar":{"options":"特殊文字オプション","title":"特殊文字の選択","toolbar":"特殊文字を挿入"},"scayt":{"about":"SCAYTバージョン","aboutTab":"バージョン情報","addWord":"語句追加","allCaps":"全て大文字の単語を無視","dic_create":"登録","dic_delete":"削除","dic_field_name":"辞書名","dic_info":"始めユーザーディレクトリは、Cookieに保存されます。但し Cookie はサイズに制限があります。ユーザーディレクトリがCookieに保存できないサイズに到達するとディレクトリはサーバー上に保存されます。個人のディレクトリをサーバー上に保存するには、ディレクトリ名を明示する必要があります。もし既に保存されたディレクトリがある場合、その名前を入力し、元に戻すボタンを押してください。","dic_rename":"名前変更","dic_restore":"元に戻す","dictionariesTab":"辞書","disable":"SCAYT無効","emptyDic":"辞書名は必ず入力してください","enable":"SCAYT有効","ignore":"無視","ignoreAll":"すべて無視","ignoreDomainNames":"ドメイン名を無視","langs":"言語","languagesTab":"言語","mixedCase":"大文字小文字混在の単語を無視","mixedWithDigits":"数字付き単語を無視","moreSuggestions":"他の候補","opera_title":"Operaではサポートされません","options":"オプション","optionsTab":"オプション","title":"スペルチェック設定(SCAYT)","toggle":"SCAYT切替","noSuggestions":"No suggestion"},"stylescombo":{"label":"スタイル","panelTitle":"スタイル","panelTitle1":"ブロックスタイル","panelTitle2":"インラインスタイル","panelTitle3":"オブジェクトスタイル"},"table":{"border":"枠線の幅","caption":"キャプション","cell":{"menu":"セル","insertBefore":"セルを前に挿入","insertAfter":"セルを後に挿入","deleteCell":"セルを削除","merge":"セルを結合","mergeRight":"右に結合","mergeDown":"下に結合","splitHorizontal":"セルを水平方向に分割","splitVertical":"セルを垂直方向に分割","title":"セルのプロパティ","cellType":"セルの種類","rowSpan":"行の結合数","colSpan":"列の結合数","wordWrap":"単語の折り返し","hAlign":"水平方向の配置","vAlign":"垂直方向の配置","alignBaseline":"ベースライン","bgColor":"背景色","borderColor":"ボーダーカラー","data":"テーブルデータ (td)","header":"ヘッダ","yes":"はい","no":"いいえ","invalidWidth":"セル幅は数値で入力してください。","invalidHeight":"セル高さは数値で入力してください。","invalidRowSpan":"縦幅(行数)は数値で入力してください。","invalidColSpan":"横幅(列数)は数値で入力してください。","chooseColor":"色の選択"},"cellPad":"セル内間隔","cellSpace":"セル内余白","column":{"menu":"列","insertBefore":"列を左に挿入","insertAfter":"列を右に挿入","deleteColumn":"列を削除"},"columns":"列数","deleteTable":"表を削除","headers":"ヘッダ (th)","headersBoth":"両方","headersColumn":"最初の列のみ","headersNone":"なし","headersRow":"最初の行のみ","invalidBorder":"枠線の幅は数値で入力してください。","invalidCellPadding":"セル内余白は数値で入力してください。","invalidCellSpacing":"セル間余白は数値で入力してください。","invalidCols":"列数は0より大きな数値を入力してください。","invalidHeight":"高さは数値で入力してください。","invalidRows":"行数は0より大きな数値を入力してください。","invalidWidth":"幅は数値で入力してください。","menu":"表のプロパティ","row":{"menu":"行","insertBefore":"行を上に挿入","insertAfter":"行を下に挿入","deleteRow":"行を削除"},"rows":"行数","summary":"表の概要","title":"表のプロパティ","toolbar":"表","widthPc":"パーセント","widthPx":"ピクセル","widthUnit":"幅の単位"},"undo":{"redo":"やり直す","undo":"元に戻す"},"wsc":{"btnIgnore":"無視","btnIgnoreAll":"すべて無視","btnReplace":"置換","btnReplaceAll":"すべて置換","btnUndo":"やり直し","changeTo":"変更","errorLoading":"アプリケーションサービスホスト読込みエラー: %s.","ieSpellDownload":"スペルチェッカーがインストールされていません。今すぐダウンロードしますか?","manyChanges":"スペルチェック完了: %1 語句変更されました","noChanges":"スペルチェック完了: 語句は変更されませんでした","noMispell":"スペルチェック完了: スペルの誤りはありませんでした","noSuggestions":"- 該当なし -","notAvailable":"申し訳ありません、現在サービスを利用することができません","notInDic":"辞書にありません","oneChange":"スペルチェック完了: 1語句変更されました","progress":"スペルチェック処理中...","title":"スペルチェック","toolbar":"スペルチェック"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/ka.js b/assets/plugins/ckeditor/lang/ka.js deleted file mode 100644 index b70f9316..00000000 --- a/assets/plugins/ckeditor/lang/ka.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['ka']={"editor":"ტექსტის რედაქტორი","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"დააჭირეთ ALT 0-ს დახმარების მისაღებად","browseServer":"სერვერზე დათვალიერება","url":"URL","protocol":"პროტოკოლი","upload":"ატვირთვა","uploadSubmit":"სერვერზე გაგზავნა","image":"სურათი","flash":"Flash","form":"ფორმა","checkbox":"მონიშვნის ღილაკი","radio":"ამორჩევის ღილაკი","textField":"ტექსტური ველი","textarea":"ტექსტური არე","hiddenField":"მალული ველი","button":"ღილაკი","select":"არჩევის ველი","imageButton":"სურათიანი ღილაკი","notSet":"<არაფერი>","id":"Id","name":"სახელი","langDir":"ენის მიმართულება","langDirLtr":"მარცხნიდან მარჯვნივ (LTR)","langDirRtl":"მარჯვნიდან მარცხნივ (RTL)","langCode":"ენის კოდი","longDescr":"დიდი აღწერის URL","cssClass":"CSS კლასი","advisoryTitle":"სათაური","cssStyle":"CSS სტილი","ok":"დიახ","cancel":"გაუქმება","close":"დახურვა","preview":"გადახედვა","resize":"გაწიე ზომის შესაცვლელად","generalTab":"ინფორმაცია","advancedTab":"გაფართოებული","validateNumberFailed":"ეს მნიშვნელობა არაა რიცხვი.","confirmNewPage":"ამ დოკუმენტში ყველა ჩაუწერელი ცვლილება დაიკარგება. დარწმუნებული ხართ რომ ახალი გვერდის ჩატვირთვა გინდათ?","confirmCancel":"ზოგიერთი პარამეტრი შეცვლილია, დარწმუნებულილ ხართ რომ ფანჯრის დახურვა გსურთ?","options":"პარამეტრები","target":"გახსნის ადგილი","targetNew":"ახალი ფანჯარა (_blank)","targetTop":"ზედა ფანჯარა (_top)","targetSelf":"იგივე ფანჯარა (_self)","targetParent":"მშობელი ფანჯარა (_parent)","langDirLTR":"მარცხნიდან მარჯვნივ (LTR)","langDirRTL":"მარჯვნიდან მარცხნივ (RTL)","styles":"სტილი","cssClasses":"CSS კლასი","width":"სიგანე","height":"სიმაღლე","align":"სწორება","alignLeft":"მარცხენა","alignRight":"მარჯვენა","alignCenter":"შუა","alignTop":"ზემოთა","alignMiddle":"შუა","alignBottom":"ქვემოთა","invalidValue":"Invalid value.","invalidHeight":"სიმაღლე რიცხვით უნდა იყოს წარმოდგენილი.","invalidWidth":"სიგანე რიცხვით უნდა იყოს წარმოდგენილი.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, მიუწვდომელია</span>"},"about":{"copy":"Copyright &copy; $1. ყველა უფლება დაცულია.","dlgTitle":"CKEditor-ის შესახებ","help":"დახმარებისთვის იხილეთ $1.","moreInfo":"ლიცენზიის ინფორმაციისთვის ეწვიეთ ჩვენს საიტს:","title":"CKEditor-ის შესახებ","userGuide":"CKEditor-ის მომხმარებლის სახელმძღვანელო"},"basicstyles":{"bold":"მსხვილი","italic":"დახრილი","strike":"გადახაზული","subscript":"ინდექსი","superscript":"ხარისხი","underline":"გახაზული"},"blockquote":{"toolbar":"ციტატა"},"clipboard":{"copy":"ასლი","copyError":"თქვენი ბროუზერის უსაფრთხოების პარამეტრები არ იძლევა ასლის ოპერაციის ავტომატურად განხორციელების საშუალებას. გამოიყენეთ კლავიატურა ამისთვის (Ctrl/Cmd+C).","cut":"ამოჭრა","cutError":"თქვენი ბროუზერის უსაფრთხოების პარამეტრები არ იძლევა ამოჭრის ოპერაციის ავტომატურად განხორციელების საშუალებას. გამოიყენეთ კლავიატურა ამისთვის (Ctrl/Cmd+X).","paste":"ჩასმა","pasteArea":"ჩასმის არე","pasteMsg":"ჩასვით ამ არის შიგნით კლავიატურის გამოყენებით (<strong>Ctrl/Cmd+V</strong>) და დააჭირეთ OK-ს","securityMsg":"თქვენი ბროუზერის უსაფრთხოების პარამეტრები არ იძლევა clipboard-ის მონაცემების წვდომის უფლებას. კიდევ უნდა ჩასვათ ტექსტი ამ ფანჯარაში.","title":"ჩასმა"},"contextmenu":{"options":"კონტექსტური მენიუს პარამეტრები"},"toolbar":{"toolbarCollapse":"ხელსაწყოთა ზოლის შეწევა","toolbarExpand":"ხელსაწყოთა ზოლის გამოწევა","toolbarGroups":{"document":"დოკუმენტი","clipboard":"Clipboard/გაუქმება","editing":"რედაქტირება","forms":"ფორმები","basicstyles":"ძირითადი სტილები","paragraph":"აბზაცი","links":"ბმულები","insert":"ჩასმა","styles":"სტილები","colors":"ფერები","tools":"ხელსაწყოები"},"toolbars":"Editor toolbars"},"elementspath":{"eleLabel":"ელემეტის გზა","eleTitle":"%1 ელემენტი"},"format":{"label":"ფიორმატირება","panelTitle":"ფორმატირება","tag_address":"მისამართი","tag_div":"ჩვეულებრივი (DIV)","tag_h1":"სათაური 1","tag_h2":"სათაური 2","tag_h3":"სათაური 3","tag_h4":"სათაური 4","tag_h5":"სათაური 5","tag_h6":"სათაური 6","tag_p":"ჩვეულებრივი","tag_pre":"ფორმატირებული"},"horizontalrule":{"toolbar":"ჰორიზონტალური ხაზის ჩასმა"},"image":{"alertUrl":"აკრიფეთ სურათის URL","alt":"სანაცვლო ტექსტი","border":"ჩარჩო","btnUpload":"სერვერისთვის გაგზავნა","button2Img":"გსურთ არჩეული სურათიანი ღილაკის გადაქცევა ჩვეულებრივ ღილაკად?","hSpace":"ჰორიზონტალური სივრცე","img2Button":"გსურთ არჩეული ჩვეულებრივი ღილაკის გადაქცევა სურათიან ღილაკად?","infoTab":"სურათის ინფორმცია","linkTab":"ბმული","lockRatio":"პროპორციის შენარჩუნება","menu":"სურათის პარამეტრები","resetSize":"ზომის დაბრუნება","title":"სურათის პარამეტრები","titleButton":"სურათიანი ღილაკის პარამეტრები","upload":"ატვირთვა","urlMissing":"სურათის URL არაა შევსებული.","vSpace":"ვერტიკალური სივრცე","validateBorder":"ჩარჩო მთელი რიცხვი უნდა იყოს.","validateHSpace":"ჰორიზონტალური სივრცე მთელი რიცხვი უნდა იყოს.","validateVSpace":"ვერტიკალური სივრცე მთელი რიცხვი უნდა იყოს."},"indent":{"indent":"მეტად შეწევა","outdent":"ნაკლებად შეწევა"},"fakeobjects":{"anchor":"ღუზა","flash":"Flash ანიმაცია","hiddenfield":"მალული ველი","iframe":"IFrame","unknown":"უცნობი ობიექტი"},"link":{"acccessKey":"წვდომის ღილაკი","advanced":"დაწვრილებით","advisoryContentType":"შიგთავსის ტიპი","advisoryTitle":"სათაური","anchor":{"toolbar":"ღუზა","menu":"ღუზის რედაქტირება","title":"ღუზის პარამეტრები","name":"ღუზუს სახელი","errorName":"აკრიფეთ ღუზის სახელი","remove":"Remove Anchor"},"anchorId":"ელემენტის Id-თ","anchorName":"ღუზის სახელით","charset":"კოდირება","cssClasses":"CSS კლასი","emailAddress":"ელფოსტის მისამართები","emailBody":"წერილის ტექსტი","emailSubject":"წერილის სათაური","id":"Id","info":"ბმულის ინფორმაცია","langCode":"ენის კოდი","langDir":"ენის მიმართულება","langDirLTR":"მარცხნიდან მარჯვნივ (LTR)","langDirRTL":"მარჯვნიდან მარცხნივ (RTL)","menu":"ბმულის რედაქტირება","name":"სახელი","noAnchors":"(ამ დოკუმენტში ღუზა არაა)","noEmail":"აკრიფეთ ელფოსტის მისამართი","noUrl":"აკრიფეთ ბმულის URL","other":"<სხვა>","popupDependent":"დამოკიდებული (Netscape)","popupFeatures":"Popup ფანჯრის პარამეტრები","popupFullScreen":"მთელი ეკრანი (IE)","popupLeft":"მარცხენა პოზიცია","popupLocationBar":"ნავიგაციის ზოლი","popupMenuBar":"მენიუს ზოლი","popupResizable":"ცვალებადი ზომით","popupScrollBars":"გადახვევის ზოლები","popupStatusBar":"სტატუსის ზოლი","popupToolbar":"ხელსაწყოთა ზოლი","popupTop":"ზედა პოზიცია","rel":"კავშირი","selectAnchor":"აირჩიეთ ღუზა","styles":"CSS სტილი","tabIndex":"Tab-ის ინდექსი","target":"გახსნის ადგილი","targetFrame":"<frame>","targetFrameName":"Frame-ის სახელი","targetPopup":"<popup ფანჯარა>","targetPopupName":"Popup ფანჯრის სახელი","title":"ბმული","toAnchor":"ბმული ტექსტში ღუზაზე","toEmail":"ელფოსტა","toUrl":"URL","toolbar":"ბმული","type":"ბმულის ტიპი","unlink":"ბმულის მოხსნა","upload":"აქაჩვა"},"list":{"bulletedlist":"ღილიანი სია","numberedlist":"გადანომრილი სია"},"magicline":{"title":"Insert paragraph here"},"maximize":{"maximize":"გადიდება","minimize":"დაპატარავება"},"pastetext":{"button":"მხოლოდ ტექსტის ჩასმა","title":"მხოლოდ ტექსტის ჩასმა"},"pastefromword":{"confirmCleanup":"ჩასასმელი ტექსტი ვორდიდან გადმოტანილს გავს - გინდათ მისი წინასწარ გაწმენდა?","error":"შიდა შეცდომის გამო ვერ მოხერხდა ტექსტის გაწმენდა","title":"ვორდიდან ჩასმა","toolbar":"ვორდიდან ჩასმა"},"removeformat":{"toolbar":"ფორმატირების მოხსნა"},"sourcearea":{"toolbar":"კოდები"},"specialchar":{"options":"სპეციალური სიმბოლოს პარამეტრები","title":"სპეციალური სიმბოლოს არჩევა","toolbar":"სპეციალური სიმბოლოს ჩასმა"},"scayt":{"about":"SCAYT-ის შესახებ","aboutTab":"ინფორმაცია","addWord":"სიტყვის დამატება","allCaps":"დიდი ასოებით დაწერილი სიტყვების უგულებელყოფა","dic_create":"შექმნა","dic_delete":"წაშლა","dic_field_name":"ლექსიკონის სახელი","dic_info":"თავდაპირველად მომხმარებლის ლექსიკონი ინახება Cookie-ში. თუმცა Cookie შეზღუდულია ზომაში. როცა ლექსიკონის ზომა გაიზრდება საკმაოდ ის შეიძლება შევინახოთ ჩვენს სერვერზე. ჩვენს სერვერზე ლექსიკონს შესანახად უნდა მიუთითოთ მისი სახელი. თუ უკე გაქვთ ლექსიკონი, აკრიფეთ მისი სახელი და დააჭირეთ \"დაბრუნების\" ღილაკს.","dic_rename":"გადარქმევა","dic_restore":"დაბრუნება","dictionariesTab":"ლექსიკონები","disable":"SCAYT-ის გამორთვა","emptyDic":"ლექსიკონის სიტყვა არ უნდა იყოს ცარიელი.","enable":"SCAYT-ის ჩართვა","ignore":"უგულებელყოფა","ignoreAll":"ყველას უგულებელყოფა","ignoreDomainNames":"დომენური სახელების უგულებელყოფა","langs":"ენები","languagesTab":"ენები","mixedCase":"შერეული ასოებანი სიტყვების უგულებელყოფა","mixedWithDigits":"ციფრებიანი სიტყვების უგულებელყოფა","moreSuggestions":"მეტი შემოთავაზება","opera_title":"არაა მხარდაჭერილი Opera-ს მიერ","options":"პარამეტრები","optionsTab":"პარამეტრები","title":"მართლწერის შემოწმება კრეფისას","toggle":"SCAYT-ის გადართვა","noSuggestions":"No suggestion"},"stylescombo":{"label":"სტილები","panelTitle":"ფორმატირების სტილები","panelTitle1":"არის სტილები","panelTitle2":"თანდართული სტილები","panelTitle3":"ობიექტის სტილები"},"table":{"border":"ჩარჩოს ზომა","caption":"სათაური","cell":{"menu":"უჯრა","insertBefore":"უჯრის ჩასმა მანამდე","insertAfter":"უჯრის ჩასმა მერე","deleteCell":"უჯრების წაშლა","merge":"უჯრების შეერთება","mergeRight":"შეერთება მარჯვენასთან","mergeDown":"შეერთება ქვემოთასთან","splitHorizontal":"გაყოფა ჰორიზონტალურად","splitVertical":"გაყოფა ვერტიკალურად","title":"უჯრის პარამეტრები","cellType":"უჯრის ტიპი","rowSpan":"სტრიქონების ოდენობა","colSpan":"სვეტების ოდენობა","wordWrap":"სტრიქონის გადატანა (Word Wrap)","hAlign":"ჰორიზონტალური სწორება","vAlign":"ვერტიკალური სწორება","alignBaseline":"ძირითადი ხაზის გასწვრივ","bgColor":"ფონის ფერი","borderColor":"ჩარჩოს ფერი","data":"მონაცემები","header":"სათაური","yes":"დიახ","no":"არა","invalidWidth":"უჯრის სიგანე რიცხვით უნდა იყოს წარმოდგენილი.","invalidHeight":"უჯრის სიმაღლე რიცხვით უნდა იყოს წარმოდგენილი.","invalidRowSpan":"სტრიქონების რაოდენობა მთელი რიცხვი უნდა იყოს.","invalidColSpan":"სვეტების რაოდენობა მთელი რიცხვი უნდა იყოს.","chooseColor":"არჩევა"},"cellPad":"უჯრის კიდე (padding)","cellSpace":"უჯრის სივრცე (spacing)","column":{"menu":"სვეტი","insertBefore":"სვეტის ჩამატება წინ","insertAfter":"სვეტის ჩამატება მერე","deleteColumn":"სვეტების წაშლა"},"columns":"სვეტი","deleteTable":"ცხრილის წაშლა","headers":"სათაურები","headersBoth":"ორივე","headersColumn":"პირველი სვეტი","headersNone":"არაფერი","headersRow":"პირველი სტრიქონი","invalidBorder":"ჩარჩოს ზომა რიცხვით უდნა იყოს წარმოდგენილი.","invalidCellPadding":"უჯრის კიდე (padding) რიცხვით უნდა იყოს წარმოდგენილი.","invalidCellSpacing":"უჯრის სივრცე (spacing) რიცხვით უნდა იყოს წარმოდგენილი.","invalidCols":"სვეტების რაოდენობა დადებითი რიცხვი უნდა იყოს.","invalidHeight":"ცხრილის სიმაღლე რიცხვით უნდა იყოს წარმოდგენილი.","invalidRows":"სტრიქონების რაოდენობა დადებითი რიცხვი უნდა იყოს.","invalidWidth":"ცხრილის სიგანე რიცხვით უნდა იყოს წარმოდგენილი.","menu":"ცხრილის პარამეტრები","row":{"menu":"სტრიქონი","insertBefore":"სტრიქონის ჩამატება წინ","insertAfter":"სტრიქონის ჩამატება მერე","deleteRow":"სტრიქონების წაშლა"},"rows":"სტრიქონი","summary":"შეჯამება","title":"ცხრილის პარამეტრები","toolbar":"ცხრილი","widthPc":"პროცენტი","widthPx":"წერტილი","widthUnit":"საზომი ერთეული"},"undo":{"redo":"გამეორება","undo":"გაუქმება"},"wsc":{"btnIgnore":"უგულებელყოფა","btnIgnoreAll":"ყველას უგულებელყოფა","btnReplace":"შეცვლა","btnReplaceAll":"ყველას შეცვლა","btnUndo":"გაუქმება","changeTo":"შეცვლელი","errorLoading":"სერვისის გამოძახების შეცდომა: %s.","ieSpellDownload":"მართლწერის შემოწმება არაა დაინსტალირებული. ჩამოვქაჩოთ ინტერნეტიდან?","manyChanges":"მართლწერის შემოწმება: %1 სიტყვა შეიცვალა","noChanges":"მართლწერის შემოწმება: არაფერი შეცვლილა","noMispell":"მართლწერის შემოწმება: შეცდომა არ მოიძებნა","noSuggestions":"- არაა შემოთავაზება -","notAvailable":"უკაცრავად, ეს სერვისი ამჟამად მიუწვდომელია.","notInDic":"არაა ლექსიკონში","oneChange":"მართლწერის შემოწმება: ერთი სიტყვა შეიცვალა","progress":"მიმდინარეობს მართლწერის შემოწმება...","title":"მართლწერა","toolbar":"მართლწერა"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/km.js b/assets/plugins/ckeditor/lang/km.js deleted file mode 100644 index f6accb6b..00000000 --- a/assets/plugins/ckeditor/lang/km.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['km']={"editor":"ឧបករណ៍សរសេរអត្ថបទសម្បូរបែប","editorPanel":"ផ្ទាំងឧបករណ៍សរសេរអត្ថបទសម្បូរបែប","common":{"editorHelp":"ចុច ALT 0 សម្រាប់ជំនួយ","browseServer":"រកមើលក្នុងម៉ាស៊ីនបម្រើ","url":"URL","protocol":"ពិធីការ","upload":"ផ្ទុកឡើង","uploadSubmit":"បញ្ជូនទៅកាន់ម៉ាស៊ីនបម្រើ","image":"រូបភាព","flash":"Flash","form":"បែបបទ","checkbox":"ប្រអប់ធីក","radio":"ប៊ូតុងមូល","textField":"វាលអត្ថបទ","textarea":"Textarea","hiddenField":"វាលកំបាំង","button":"ប៊ូតុង","select":"វាលជម្រើស","imageButton":"ប៊ូតុងរូបភាព","notSet":"<មិនកំណត់>","id":"Id","name":"ឈ្មោះ","langDir":"ទិសដៅភាសា","langDirLtr":"ពីឆ្វេងទៅស្តាំ (LTR)","langDirRtl":"ពីស្តាំទៅឆ្វេង (RTL)","langCode":"លេខកូដភាសា","longDescr":"URL អធិប្បាយវែង","cssClass":"Stylesheet Classes","advisoryTitle":"ចំណងជើងណែនាំ","cssStyle":"រចនាបថ","ok":"ព្រម","cancel":"បោះបង់","close":"បិទ","preview":"មើលជាមុន","resize":"ប្ដូរទំហំ","generalTab":"ទូទៅ","advancedTab":"កម្រិតខ្ពស់","validateNumberFailed":"តម្លៃនេះពុំមែនជាលេខទេ។","confirmNewPage":"រាល់បន្លាស់ប្ដូរនានាដែលមិនទាន់រក្សាទុកក្នុងមាតិកានេះ នឹងត្រូវបាត់បង់។ តើអ្នកពិតជាចង់ផ្ទុកទំព័រថ្មីមែនទេ?","confirmCancel":"ការកំណត់មួយចំនួនត្រូវបានផ្លាស់ប្ដូរ។ តើអ្នកពិតជាចង់បិទប្រអប់នេះមែនទេ?","options":"ការកំណត់","target":"គោលដៅ","targetNew":"វីនដូថ្មី (_blank)","targetTop":"វីនដូលើគេ (_top)","targetSelf":"វីនដូដូចគ្នា (_self)","targetParent":"វីនដូមេ (_parent)","langDirLTR":"ពីឆ្វេងទៅស្តាំ(LTR)","langDirRTL":"ពីស្តាំទៅឆ្វេង(RTL)","styles":"រចនាបថ","cssClasses":"Stylesheet Classes","width":"ទទឹង","height":"កំពស់","align":"កំណត់ទីតាំង","alignLeft":"ខាងឆ្វង","alignRight":"ខាងស្តាំ","alignCenter":"កណ្តាល","alignTop":"ខាងលើ","alignMiddle":"កណ្តាល","alignBottom":"ខាងក្រោម","invalidValue":"តម្លៃមិនត្រឹមត្រូវ។","invalidHeight":"តម្លៃកំពស់ត្រូវតែជាលេខ។","invalidWidth":"តម្លៃទទឹងត្រូវតែជាលេខ។","invalidCssLength":"តម្លៃកំណត់សម្រាប់វាល \"%1\" ត្រូវតែជាលេខវិជ្ជមាន ដោយភ្ជាប់ឬមិនភ្ជាប់ជាមួយនឹងឯកតារង្វាស់របស់ CSS (px, %, in, cm, mm, em, ex, pt ឬ pc) ។","invalidHtmlLength":"តម្លៃកំណត់សម្រាប់វាល \"%1\" ត្រូវតែជាលេខវិជ្ជមាន ដោយភ្ជាប់ឬមិនភ្ជាប់ជាមួយនឹងឯកតារង្វាស់របស់ HTML (px ឬ %) ។","invalidInlineStyle":"តម្លៃកំណត់សម្រាប់រចនាបថក្នុងតួ ត្រូវតែមានមួយឬធាតុច្រើនដោយមានទ្រង់ទ្រាយជា \"ឈ្មោះ : តម្លៃ\" ហើយញែកចេញពីគ្នាដោយចុចក្បៀស។","cssLengthTooltip":"បញ្ចូលលេខសម្រាប់តម្លៃជាភិចសែល ឬលេខដែលមានឯកតាត្រឹមត្រូវរបស់ CSS (px, %, in, cm, mm, em, ex, pt ឬ pc) ។","unavailable":"%1<span class=\"cke_accessibility\">, មិនមាន</span>"},"about":{"copy":"រក្សាសិទ្ធិ &copy; $1។ រក្សាសិទ្ធិគ្រប់បែបយ៉ាង។","dlgTitle":"អំពី CKEditor","help":"ពិនិត្យ $1 សម្រាប់ជំនួយ។","moreInfo":"សម្រាប់ព័ត៌មានអំពីអាជ្ញាបណញណ សូមមើលក្នុងគេហទំព័ររបស់យើង៖","title":"អំពី CKEditor","userGuide":"វិធីប្រើប្រាស់ CKEditor"},"basicstyles":{"bold":"ដិត","italic":"ទ្រេត","strike":"គូសបន្ទាត់ចំកណ្ដាល","subscript":"អក្សរតូចក្រោម","superscript":"អក្សរតូចលើ","underline":"គូសបន្ទាត់ក្រោម"},"blockquote":{"toolbar":"ប្លក់ពាក្យសម្រង់"},"clipboard":{"copy":"ចម្លង","copyError":"ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះមិនអាចធ្វើកម្មវិធីតាក់តែងអត្ថបទ ចំលងអត្ថបទយកដោយស្វ័យប្រវត្តបានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនេះ (Ctrl/Cmd+C)។","cut":"កាត់យក","cutError":"ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះមិនអាចធ្វើកម្មវិធីតាក់តែងអត្ថបទ កាត់អត្ថបទយកដោយស្វ័យប្រវត្តបានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនេះ (Ctrl/Cmd+X) ។","paste":"បិទភ្ជាប់","pasteArea":"Paste Area","pasteMsg":"សូមចំលងអត្ថបទទៅដាក់ក្នុងប្រអប់ដូចខាងក្រោមដោយប្រើប្រាស់ ឃី (<STRONG>Ctrl/Cmd+V</STRONG>) ហើយចុច <STRONG>OK</STRONG> ។","securityMsg":"Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.","title":"បិទភ្ជាប់"},"contextmenu":{"options":"ជម្រើសម៉ឺនុយបរិបទ"},"toolbar":{"toolbarCollapse":"បង្រួមរបារឧបករណ៍","toolbarExpand":"ពង្រីករបារឧបករណ៍","toolbarGroups":{"document":"ឯកសារ","clipboard":"Clipboard/មិនធ្វើវិញ","editing":"ការកែសម្រួល","forms":"បែបបទ","basicstyles":"រចនាបថមូលដ្ឋាន","paragraph":"កថាខណ្ឌ","links":"តំណ","insert":"បញ្ចូល","styles":"រចនាបថ","colors":"ពណ៌","tools":"ឧបករណ៍"},"toolbars":"របារឧបករណ៍កែសម្រួល"},"elementspath":{"eleLabel":"ទីតាំងធាតុ","eleTitle":"ធាតុ %1"},"format":{"label":"ទម្រង់","panelTitle":"ទម្រង់កថាខណ្ឌ","tag_address":"អាសយដ្ឋាន","tag_div":"ធម្មតា (DIV)","tag_h1":"ចំណងជើង 1","tag_h2":"ចំណងជើង 2","tag_h3":"ចំណងជើង 3","tag_h4":"ចំណងជើង 4","tag_h5":"ចំណងជើង 5","tag_h6":"ចំណងជើង 6","tag_p":"ធម្មតា","tag_pre":"Formatted"},"horizontalrule":{"toolbar":"បន្ថែមបន្ទាត់ផ្តេក"},"image":{"alertUrl":"សូមសរសេរងាស័យដ្ឋានរបស់រូបភាព","alt":"អត្ថបទជំនួស","border":"ស៊ុម","btnUpload":"បញ្ជូនទៅកាន់ម៉ាស៊ីនផ្តល់សេវា","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"គំលាតទទឹង","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"ពត៌មានអំពីរូបភាព","linkTab":"ឈ្នាប់","lockRatio":"អត្រាឡុក","menu":"ការកំណត់រូបភាព","resetSize":"កំណត់ទំហំឡើងវិញ","title":"ការកំណត់រូបភាព","titleButton":"ការកំណត់ប៉ូតុនរូបភាព","upload":"ទាញយក","urlMissing":"ខ្វះ URL ប្រភពរូបភាព។","vSpace":"VSpace","validateBorder":"Border must be a whole number.","validateHSpace":"HSpace must be a whole number.","validateVSpace":"VSpace must be a whole number."},"indent":{"indent":"បន្ថែមការចូលបន្ទាត់","outdent":"បន្ថយការចូលបន្ទាត់"},"fakeobjects":{"anchor":"យុថ្កា","flash":"Flash មានចលនា","hiddenfield":"វាលកំបាំង","iframe":"IFrame","unknown":"វត្ថុមិនស្គាល់"},"link":{"acccessKey":"សោរចូល","advanced":"កម្រិតខ្ពស់","advisoryContentType":"ប្រភេទអត្ថបទប្រឹក្សា","advisoryTitle":"ចំណងជើងប្រឹក្សា","anchor":{"toolbar":"យុថ្កា","menu":"កែយុថ្កា","title":"លក្ខណៈយុថ្កា","name":"ឈ្មោះយុថ្កា","errorName":"សូមបញ្ចូលឈ្មោះយុថ្កា","remove":"ដកយុថ្កាចេញ"},"anchorId":"តាម ID ធាតុ","anchorName":"តាមឈ្មោះយុថ្កា","charset":"Linked Resource Charset","cssClasses":"Stylesheet Classes","emailAddress":"អាសយដ្ឋានអ៊ីមែល","emailBody":"តួអត្ថបទ","emailSubject":"ប្រធានបទសារ","id":"Id","info":"ព័ត៌មានពីតំណ","langCode":"កូដភាសា","langDir":"ទិសដៅភាសា","langDirLTR":"ពីឆ្វេងទៅស្តាំ(LTR)","langDirRTL":"ពីស្តាំទៅឆ្វេង(RTL)","menu":"កែតំណ","name":"ឈ្មោះ","noAnchors":"(មិនមានយុថ្កានៅក្នុងឯកសារអត្ថថបទទេ)","noEmail":"សូមបញ្ចូលអាសយដ្ឋានអ៊ីមែល","noUrl":"សូមបញ្ចូលតំណ URL","other":"<ផ្សេងទៀត>","popupDependent":"Dependent (Netscape)","popupFeatures":"Popup Window Features","popupFullScreen":"ពេញអេក្រង់ (IE)","popupLeft":"ទីតាំងខាងឆ្វេង","popupLocationBar":"របារទីតាំង","popupMenuBar":"របារម៉ឺនុយ","popupResizable":"អាចប្ដូរទំហំ","popupScrollBars":"របាររំកិល","popupStatusBar":"របារស្ថានភាព","popupToolbar":"របារឧបករណ៍","popupTop":"ទីតាំងកំពូល","rel":"សម្ពន្ធភាព","selectAnchor":"រើសយកយុថ្កាមួយ","styles":"ស្ទីល","tabIndex":"Tab Index","target":"គោលដៅ","targetFrame":"<ស៊ុម>","targetFrameName":"ឈ្មោះស៊ុមជាគោលដៅ","targetPopup":"<វីនដូផុសឡើង>","targetPopupName":"ឈ្មោះវីនដូតផុសឡើង","title":"តំណ","toAnchor":"តភ្ជាប់ទៅយុថ្កាក្នុងអត្ថបទ","toEmail":"អ៊ីមែល","toUrl":"URL","toolbar":"តំណ","type":"ប្រភេទតំណ","unlink":"ផ្ដាច់តំណ","upload":"ផ្ទុកឡើង"},"list":{"bulletedlist":"បញ្ចូល / លុបបញ្ជីជាចំណុចមូល","numberedlist":"បញ្ចូល / លុបបញ្ជីជាលេខ"},"magicline":{"title":"បញ្ចូលកថាខណ្ឌនៅទីនេះ"},"maximize":{"maximize":"ពង្រីកអតិបរមា","minimize":"បង្រួមអប្បបរមា"},"pastetext":{"button":"បិទភ្ជាប់ជាអត្ថបទធម្មតា","title":"បិទភ្ជាប់ជាអត្ថបទធម្មតា"},"pastefromword":{"confirmCleanup":"អត្ថបទដែលអ្នកចង់បិទភ្ជាប់នេះ ទំនងដូចជាចម្លងមកពី Word។ តើអ្នកចង់សម្អាតវាមុនបិទភ្ជាប់ទេ?","error":"ដោយសារមានបញ្ហាផ្នែកក្នុងធ្វើឲ្យមិនអាចសម្អាតទិន្នន័យដែលបានបិទភ្ជាប់","title":"បិទភ្ជាប់ពី Word","toolbar":"បិទភ្ជាប់ពី Word"},"removeformat":{"toolbar":"ជម្រះទ្រង់ទ្រាយ"},"sourcearea":{"toolbar":"អក្សរកូដ"},"specialchar":{"options":"ជម្រើសតួអក្សរពិសេស","title":"រើសតួអក្សរពិសេស","toolbar":"បន្ថែមអក្សរពិសេស"},"scayt":{"about":"About SCAYT","aboutTab":"About","addWord":"Add Word","allCaps":"Ignore All-Caps Words","dic_create":"Create","dic_delete":"Delete","dic_field_name":"Dictionary name","dic_info":"Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.","dic_rename":"Rename","dic_restore":"Restore","dictionariesTab":"Dictionaries","disable":"Disable SCAYT","emptyDic":"Dictionary name should not be empty.","enable":"Enable SCAYT","ignore":"Ignore","ignoreAll":"Ignore All","ignoreDomainNames":"Ignore Domain Names","langs":"Languages","languagesTab":"Languages","mixedCase":"Ignore Words with Mixed Case","mixedWithDigits":"Ignore Words with Numbers","moreSuggestions":"More suggestions","opera_title":"Not supported by Opera","options":"Options","optionsTab":"Options","title":"Spell Check As You Type","toggle":"Toggle SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"រចនាបថ","panelTitle":"ទ្រង់ទ្រាយរចនាបថ","panelTitle1":"រចនាបថប្លក់","panelTitle2":"រចនាបថក្នុងជួរ","panelTitle3":"រចនាបថវត្ថុ"},"table":{"border":"ទំហំបន្ទាត់ស៊ុម","caption":"ចំណងជើង","cell":{"menu":"ក្រឡា","insertBefore":"បញ្ចូលក្រឡាពីមុខ","insertAfter":"បញ្ចូលក្រឡាពីក្រោយ","deleteCell":"លុបក្រឡា","merge":"បញ្ចូលក្រឡាចូលគ្នា","mergeRight":"បញ្ចូលគ្នាខាងស្ដាំ","mergeDown":"បញ្ចូលគ្នាចុះក្រោម","splitHorizontal":"ពុះក្រឡាផ្ដេក","splitVertical":"ពុះក្រឡាបញ្ឈរ","title":"លក្ខណៈក្រឡា","cellType":"ប្រភេទក្រឡា","rowSpan":"ចំនួនជួរដេកលាយចូលគ្នា","colSpan":"ចំនួនជួរឈរលាយចូលគ្នា","wordWrap":"រុំពាក្យ","hAlign":"ការតម្រឹមផ្ដេក","vAlign":"ការតម្រឹមបញ្ឈរ","alignBaseline":"ខ្សែបន្ទាត់គោល","bgColor":"ពណ៌ផ្ទៃក្រោយ","borderColor":"ពណ៌បន្ទាត់ស៊ុម","data":"ទិន្នន័យ","header":"ក្បាល","yes":"ព្រម","no":"ទេ","invalidWidth":"ទទឹងក្រឡាត្រូវតែជាលេខ។","invalidHeight":"កម្ពស់ក្រឡាត្រូវតែជាលេខ។","invalidRowSpan":"ចំនួនជួរដេកលាយចូលគ្នាត្រូវតែជាលេខទាំងអស់។","invalidColSpan":"ចំនួនជួរឈរលាយចូលគ្នាត្រូវតែជាលេខទាំងអស់។","chooseColor":"រើស"},"cellPad":"ចន្លោះក្រឡា","cellSpace":"គម្លាតក្រឡា","column":{"menu":"ជួរឈរ","insertBefore":"បញ្ចូលជួរឈរពីមុខ","insertAfter":"បញ្ចូលជួរឈរពីក្រោយ","deleteColumn":"លុបជួរឈរ"},"columns":"ជួរឈរ","deleteTable":"លុបតារាង","headers":"ក្បាល","headersBoth":"ទាំងពីរ","headersColumn":"ជួរឈរដំបូង","headersNone":"មិនមាន","headersRow":"ជួរដេកដំបូង","invalidBorder":"ទំហំបន្ទាត់ស៊ុមត្រូវតែជាលេខ។","invalidCellPadding":"ចន្លោះក្រឡាត្រូវតែជាលេខវិជ្ជមាន។","invalidCellSpacing":"គម្លាតក្រឡាត្រូវតែជាលេខវិជ្ជមាន។","invalidCols":"ចំនួនជួរឈរត្រូវតែជាលេខធំជាង 0។","invalidHeight":"កម្ពស់តារាងត្រូវតែជាលេខ","invalidRows":"ចំនួនជួរដេកត្រូវតែជាលេខធំជាង 0។","invalidWidth":"ទទឹងតារាងត្រូវតែជាលេខ។","menu":"លក្ខណៈតារាង","row":{"menu":"ជួរដេក","insertBefore":"បញ្ចូលជួរដេកពីមុខ","insertAfter":"បញ្ចូលជួរដេកពីក្រោយ","deleteRow":"លុបជួរដេក"},"rows":"ជួរដេក","summary":"សេចក្តីសង្ខេប","title":"លក្ខណៈតារាង","toolbar":"តារាង","widthPc":"ភាគរយ","widthPx":"ភីកសែល","widthUnit":"ឯកតាទទឹង"},"undo":{"redo":"ធ្វើឡើងវិញ","undo":"មិនធ្វើវិញ"},"wsc":{"btnIgnore":"មិនផ្លាស់ប្តូរ","btnIgnoreAll":"មិនផ្លាស់ប្តូរ ទាំងអស់","btnReplace":"ជំនួស","btnReplaceAll":"ជំនួសទាំងអស់","btnUndo":"សារឡើងវិញ","changeTo":"ផ្លាស់ប្តូរទៅ","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"ពុំមានកម្មវិធីពិនិត្យអក្ខរាវិរុទ្ធ ។ តើចង់ទាញយកពីណា?","manyChanges":"ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: %1 ពាក្យបានផ្លាស់ប្តូរ","noChanges":"ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: ពុំមានផ្លាស់ប្តូរ","noMispell":"ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: គ្មានកំហុស","noSuggestions":"- គ្មានសំណើរ -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"គ្មានក្នុងវចនានុក្រម","oneChange":"ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: ពាក្យមួយត្រូចបានផ្លាស់ប្តូរ","progress":"កំពុងពិនិត្យអក្ខរាវិរុទ្ធ...","title":"Spell Check","toolbar":"ពិនិត្យអក្ខរាវិរុទ្ធ"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/ko.js b/assets/plugins/ckeditor/lang/ko.js deleted file mode 100644 index 2f198f11..00000000 --- a/assets/plugins/ckeditor/lang/ko.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['ko']={"editor":"리치 텍스트 편집기","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"도움이 필요하시면 ALT 0 을 누르세요","browseServer":"서버 보기","url":"URL","protocol":"프로토콜","upload":"업로드","uploadSubmit":"서버로 전송","image":"이미지","flash":"플래쉬","form":"폼","checkbox":"체크박스","radio":"라디오버튼","textField":"입력필드","textarea":"입력영역","hiddenField":"숨김필드","button":"버튼","select":"펼침목록","imageButton":"이미지버튼","notSet":"<설정되지 않음>","id":"ID","name":"Name","langDir":"쓰기 방향","langDirLtr":"왼쪽에서 오른쪽 (LTR)","langDirRtl":"오른쪽에서 왼쪽 (RTL)","langCode":"언어 코드","longDescr":"URL 설명","cssClass":"Stylesheet Classes","advisoryTitle":"Advisory Title","cssStyle":"Style","ok":"예","cancel":"아니오","close":"닫기","preview":"미리보기","resize":"크기 조절","generalTab":"General","advancedTab":"자세히","validateNumberFailed":"이 값은 숫자가 아닙니다.","confirmNewPage":"저장하지 않은 모든 변경사항은 유실됩니다. 정말로 새로운 페이지를 부르겠습니까?","confirmCancel":"몇몇개의 옵션이 바꼈습니다. 정말로 창을 닫으시겠습니까?","options":"옵션","target":"타겟","targetNew":"새로운 창 (_blank)","targetTop":"최상위 창 (_top)","targetSelf":"같은 창 (_self)","targetParent":"부모 창 (_parent)","langDirLTR":"왼쪽에서 오른쪽 (LTR)","langDirRTL":"오른쪽에서 왼쪽 (RTL)","styles":"Style","cssClasses":"Stylesheet Classes","width":"너비","height":"높이","align":"정렬","alignLeft":"왼쪽","alignRight":"오른쪽","alignCenter":"가운데","alignTop":"위","alignMiddle":"중간","alignBottom":"아래","invalidValue":"잘못된 값.","invalidHeight":"높이는 숫자여야 합니다.","invalidWidth":"넓이는 숫자여야 합니다.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, 사용할 수 없음</span>"},"about":{"copy":"저작권 &copy; $1 . 판권 소유.","dlgTitle":"CKEditor 에 대하여","help":"도움이 필요하시면 $1 를 확인하세요","moreInfo":"라이센스에 대한 정보를 보고싶다면 우리의 웹 사이트를 방문하세요:","title":"CKEditor에 대하여","userGuide":"CKEditor User's Guide"},"basicstyles":{"bold":"진하게","italic":"이텔릭","strike":"취소선","subscript":"아래 첨자","superscript":"위 첨자","underline":"밑줄"},"blockquote":{"toolbar":"인용 블록"},"clipboard":{"copy":"복사하기","copyError":"브라우저의 보안설정때문에 복사하기 기능을 실행할 수 없습니다. 키보드 명령을 사용하십시요. (Ctrl/Cmd+C).","cut":"잘라내기","cutError":"브라우저의 보안설정때문에 잘라내기 기능을 실행할 수 없습니다. 키보드 명령을 사용하십시요. (Ctrl/Cmd+X).","paste":"붙여넣기","pasteArea":"범위 붙여넣기","pasteMsg":"키보드의 (<STRONG>Ctrl/Cmd+V</STRONG>) 를 이용해서 상자안에 붙여넣고 <STRONG>OK</STRONG> 를 누르세요.","securityMsg":"브러우저 보안 설정으로 인해, 클립보드의 자료를 직접 접근할 수 없습니다. 이 창에 다시 붙여넣기 하십시오.","title":"붙여넣기"},"contextmenu":{"options":"컨텍스트 메뉴 옵션"},"toolbar":{"toolbarCollapse":"툴바 삭제","toolbarExpand":"확장 툴바","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"편집자용 툴바들"},"elementspath":{"eleLabel":"요소 위치","eleTitle":"%1 요소"},"format":{"label":"포맷","panelTitle":"포맷","tag_address":"Address","tag_div":"기본 (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatted"},"horizontalrule":{"toolbar":"수평선 삽입"},"image":{"alertUrl":"이미지 URL을 입력하십시요","alt":"이미지 설명","border":"테두리","btnUpload":"서버로 전송","button2Img":"단순 이미지에서 선택한 이미지 버튼을 변환하시겠습니까?","hSpace":"수평여백","img2Button":"이미지 버튼에 선택한 이미지를 변환하시겠습니까?","infoTab":"이미지 정보","linkTab":"링크","lockRatio":"비율 유지","menu":"이미지 설정","resetSize":"원래 크기로","title":"이미지 설정","titleButton":"이미지버튼 속성","upload":"업로드","urlMissing":"이미지 소스 URL이 없습니다.","vSpace":"수직여백","validateBorder":"테두리는 정수여야 합니다.","validateHSpace":"가로 길이는 정수여야 합니다.","validateVSpace":"세로 길이는 정수여야 합니다."},"indent":{"indent":"들여쓰기","outdent":"내어쓰기"},"fakeobjects":{"anchor":"책갈피 삽입/변경","flash":"Flash Animation","hiddenfield":"숨김필드","iframe":"IFrame","unknown":"Unknown Object"},"link":{"acccessKey":"엑세스 키","advanced":"자세히","advisoryContentType":"Advisory Content Type","advisoryTitle":"Advisory Title","anchor":{"toolbar":"책갈피 삽입/변경","menu":"책갈피 속성","title":"책갈피 속성","name":"책갈피 이름","errorName":"책갈피 이름을 입력하십시요.","remove":"Remove Anchor"},"anchorId":"책갈피 ID","anchorName":"책갈피 이름","charset":"Linked Resource Charset","cssClasses":"Stylesheet Classes","emailAddress":"이메일 주소","emailBody":"내용","emailSubject":"제목","id":"ID","info":"링크 정보","langCode":"쓰기 방향","langDir":"쓰기 방향","langDirLTR":"왼쪽에서 오른쪽 (LTR)","langDirRTL":"오른쪽에서 왼쪽 (RTL)","menu":"링크 수정","name":"Name","noAnchors":"(문서에 책갈피가 없습니다.)","noEmail":"이메일주소를 입력하십시요.","noUrl":"링크 URL을 입력하십시요.","other":"<기타>","popupDependent":"Dependent (Netscape)","popupFeatures":"팝업창 설정","popupFullScreen":"전체화면 (IE)","popupLeft":"왼쪽 위치","popupLocationBar":"주소표시줄","popupMenuBar":"메뉴바","popupResizable":"크기 조절 가능","popupScrollBars":"스크롤바","popupStatusBar":"상태바","popupToolbar":"툴바","popupTop":"윗쪽 위치","rel":"Relationship","selectAnchor":"책갈피 선택","styles":"Style","tabIndex":"탭 순서","target":"타겟","targetFrame":"<프레임>","targetFrameName":"타겟 프레임 이름","targetPopup":"<팝업창>","targetPopupName":"팝업창 이름","title":"링크","toAnchor":"책갈피","toEmail":"이메일","toUrl":"URL","toolbar":"링크 삽입/변경","type":"링크 종류","unlink":"링크 삭제","upload":"업로드"},"list":{"bulletedlist":"순서없는 목록","numberedlist":"순서있는 목록"},"magicline":{"title":"여기에 그래프 삽입"},"maximize":{"maximize":"최대","minimize":"최소"},"pastetext":{"button":"텍스트로 붙여넣기","title":"텍스트로 붙여넣기"},"pastefromword":{"confirmCleanup":"붙여 넣기 할 텍스트는 MS Word에서 복사 한 것입니다. 붙여 넣기 전에 MS Word 포멧을 삭제 하시겠습니까?","error":"내부 오류로 붙여 넣은 데이터를 정리 할 수 없습니다.","title":"MS Word 형식에서 붙여넣기","toolbar":"MS Word 형식에서 붙여넣기"},"removeformat":{"toolbar":"포맷 지우기"},"sourcearea":{"toolbar":"소스"},"specialchar":{"options":"특수문자 옵션","title":"특수문자 선택","toolbar":"특수문자 삽입"},"scayt":{"about":"About SCAYT","aboutTab":"About","addWord":"Add Word","allCaps":"Ignore All-Caps Words","dic_create":"Create","dic_delete":"Delete","dic_field_name":"Dictionary name","dic_info":"Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.","dic_rename":"Rename","dic_restore":"Restore","dictionariesTab":"Dictionaries","disable":"Disable SCAYT","emptyDic":"Dictionary name should not be empty.","enable":"Enable SCAYT","ignore":"Ignore","ignoreAll":"Ignore All","ignoreDomainNames":"Ignore Domain Names","langs":"Languages","languagesTab":"Languages","mixedCase":"Ignore Words with Mixed Case","mixedWithDigits":"Ignore Words with Numbers","moreSuggestions":"More suggestions","opera_title":"Not supported by Opera","options":"Options","optionsTab":"Options","title":"Spell Check As You Type","toggle":"Toggle SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"스타일","panelTitle":"전체 구성 스타일","panelTitle1":"블록 스타일","panelTitle2":"인라인 스타일","panelTitle3":"오브젝트 스타일"},"table":{"border":"테두리 크기","caption":"캡션","cell":{"menu":"셀/칸(Cell)","insertBefore":"앞에 셀/칸 삽입","insertAfter":"뒤에 셀/칸 삽입","deleteCell":"셀 삭제","merge":"셀 합치기","mergeRight":"오른쪽 뭉치기","mergeDown":"왼쪽 뭉치기","splitHorizontal":"수평 나누기","splitVertical":"수직 나누기","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"셀 여백","cellSpace":"셀 간격","column":{"menu":"열(Column)","insertBefore":"앞에 열 삽입","insertAfter":"뒤에 열 삽입","deleteColumn":"세로줄 삭제"},"columns":"세로줄","deleteTable":"표 삭제","headers":"해더","headersBoth":"모두","headersColumn":"첫 열","headersNone":"None","headersRow":"첫 행","invalidBorder":"테두리 크기는 숫자여야 합니다.","invalidCellPadding":"셀 안쪽의 여백은 0 이상이어야 합니다.","invalidCellSpacing":"셀 간격은 0 이상이어야 합니다.","invalidCols":"행 번호는 0보다 큰 숫자여야 합니다.","invalidHeight":"표 높이는 숫자여야 합니다.","invalidRows":"행 번호는 0보다 큰 숫자여야 합니다.","invalidWidth":"표의 폭은 숫자여야 합니다.","menu":"표 설정","row":{"menu":"행(Row)","insertBefore":"앞에 행 삽입","insertAfter":"뒤에 행 삽입","deleteRow":"가로줄 삭제"},"rows":"가로줄","summary":"요약","title":"표 설정","toolbar":"표","widthPc":"퍼센트","widthPx":"픽셀","widthUnit":"폭 단위"},"undo":{"redo":"재실행","undo":"취소"},"wsc":{"btnIgnore":"건너뜀","btnIgnoreAll":"모두 건너뜀","btnReplace":"변경","btnReplaceAll":"모두 변경","btnUndo":"취소","changeTo":"변경할 단어","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"철자 검사기가 철치되지 않았습니다. 지금 다운로드하시겠습니까?","manyChanges":"철자검사 완료: %1 단어가 변경되었습니다.","noChanges":"철자검사 완료: 변경된 단어가 없습니다.","noMispell":"철자검사 완료: 잘못된 철자가 없습니다.","noSuggestions":"- 추천단어 없음 -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"사전에 없는 단어","oneChange":"철자검사 완료: 단어가 변경되었습니다.","progress":"철자검사를 진행중입니다...","title":"Spell Check","toolbar":"철자검사"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/ku.js b/assets/plugins/ckeditor/lang/ku.js deleted file mode 100644 index dbb92a31..00000000 --- a/assets/plugins/ckeditor/lang/ku.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['ku']={"editor":"سەرنووسەی دەقی بە پیت","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"کلیکی ALT لەگەڵ 0 بکه بۆ یارمەتی","browseServer":"هێنانی ڕاژە","url":"ناونیشانی بەستەر","protocol":"پڕۆتۆکۆڵ","upload":"بارکردن","uploadSubmit":"ناردنی بۆ ڕاژە","image":"وێنە","flash":"فلاش","form":"داڕشتە","checkbox":"خانەی نیشانکردن","radio":"جێگرەوەی دوگمە","textField":"خانەی دەق","textarea":"ڕووبەری دەق","hiddenField":"شاردنەوی خانە","button":"دوگمە","select":"هەڵبژاردەی خانە","imageButton":"دوگمەی وێنە","notSet":"<هیچ دانەدراوە>","id":"ناسنامە","name":"ناو","langDir":"ئاراستەی زمان","langDirLtr":"چەپ بۆ ڕاست (LTR)","langDirRtl":"ڕاست بۆ چەپ (RTL)","langCode":"هێمای زمان","longDescr":"پێناسەی درێژی بەستەر","cssClass":"شێوازی چینی پهڕە","advisoryTitle":"ڕاوێژکاری سەردێڕ","cssStyle":"شێواز","ok":"باشە","cancel":"هەڵوەشاندن","close":"داخستن","preview":"پێشبینین","resize":"گۆڕینی ئەندازە","generalTab":"گشتی","advancedTab":"پەرەسەندوو","validateNumberFailed":"ئەم نرخە ژمارە نیە، تکایە نرخێکی ژمارە بنووسە.","confirmNewPage":"سەرجەم گۆڕانکاریەکان و پێکهاتەکانی ناووەوە لەدەست دەدەی گەر بێتوو پاشکەوتی نەکەی یەکەم جار، تۆ هەر دڵنیایی لەکردنەوەی پەنجەرەکی نوێ؟","confirmCancel":"هەندێك هەڵبژاردە گۆڕدراوە. تۆ دڵنیایی لە داخستنی ئەم دیالۆگە؟","options":"هەڵبژاردەکان","target":"ئامانج","targetNew":"پەنجەرەیەکی نوێ (_blank)","targetTop":"لووتکەی پەنجەرە (_top)","targetSelf":"لەهەمان پەنجەرە (_self)","targetParent":"پەنجەرەی باوان (_parent)","langDirLTR":"چەپ بۆ ڕاست (LTR)","langDirRTL":"ڕاست بۆ چەپ (RTL)","styles":"شێواز","cssClasses":"شێوازی چینی پەڕە","width":"پانی","height":"درێژی","align":"ڕێککەرەوە","alignLeft":"چەپ","alignRight":"ڕاست","alignCenter":"ناوەڕاست","alignTop":"سەرەوە","alignMiddle":"ناوەند","alignBottom":"ژێرەوە","invalidValue":"نرخێکی نادرووست.","invalidHeight":"درێژی دەبێت ژمارە بێت.","invalidWidth":"پانی دەبێت ژمارە بێت.","invalidCssLength":"ئەم نرخەی دراوە بۆ خانەی \"%1\" دەبێت ژمارەکی درووست بێت یان بێ ناونیشانی ئامرازی (px, %, in, cm, mm, em, ex, pt, یان pc).","invalidHtmlLength":"ئەم نرخەی دراوە بۆ خانەی \"%1\" دەبێت ژمارەکی درووست بێت یان بێ ناونیشانی ئامرازی HTML (px یان %).","invalidInlineStyle":"دانەی نرخی شێوازی ناوهێڵ دەبێت پێکهاتبێت لەیەك یان زیاتری داڕشتە \"ناو : نرخ\", جیاکردنەوەی بە فاریزە و خاڵ","cssLengthTooltip":"ژمارەیەك بنووسه بۆ نرخی piksel یان ئامرازێکی درووستی CSS (px, %, in, cm, mm, em, ex, pt, یان pc).","unavailable":"%1<span class=\"cke_accessibility\">, ئامادە نیە</span>"},"about":{"copy":"مافی لەبەرگەرتنەوەی &copy; $1. گشتی پارێزراوه. ورگێڕانی بۆ کوردی لەلایەن هۆژە کۆیی.","dlgTitle":"دەربارەی CKEditor","help":"سەیری $1 بکه بۆ یارمەتی.","moreInfo":"بۆ زانیاری زیاتر دەربارەی مۆڵەتی بەکارهێنان، تکایه سەردانی ماڵپەڕەکەمان بکه:","title":"دەربارەی CKEditor","userGuide":"ڕێپیشاندەری CKEditors"},"basicstyles":{"bold":"قەڵەو","italic":"لار","strike":"لێدان","subscript":"ژێرنووس","superscript":"سەرنووس","underline":"ژێرهێڵ"},"blockquote":{"toolbar":"بەربەستکردنی ووتەی وەرگیراو"},"clipboard":{"copy":"لەبەرگرتنەوە","copyError":"پارێزی وێبگەڕەکەت ڕێگەنادات بەسەرنووسەکە لە لکاندنی دەقی خۆکارارنە. تکایە لەبری ئەمە ئەم فەرمانە بەکاربهێنە بەداگرتنی کلیلی (Ctrl/Cmd+C).","cut":"بڕین","cutError":"پارێزی وێبگەڕەکەت ڕێگەنادات بە سەرنووسەکە لەبڕینی خۆکارانە. تکایە لەبری ئەمە ئەم فەرمانە بەکاربهێنە بەداگرتنی کلیلی (Ctrl/Cmd+X).","paste":"لکاندن","pasteArea":"ناوچەی لکاندن","pasteMsg":"تکایە بیلکێنە لەناوەوەی ئەم سنوقە لەڕێی تەختەکلیلەکەت بە بەکارهێنانی کلیلی (<STRONG>Ctrl/Cmd+V</STRONG>) دووای کلیکی باشە بکە.","securityMsg":"بەهۆی شێوەپێدانی پارێزی وێبگەڕەکەت، سەرنووسەکه ناتوانێت دەستبگەیەنێت بەهەڵگیراوەکە ڕاستەوخۆ. بۆیه پێویسته دووباره بیلکێنیت لەم پەنجەرەیه.","title":"لکاندن"},"contextmenu":{"options":"هەڵبژاردەی لیستەی کلیکی دەستی ڕاست"},"toolbar":{"toolbarCollapse":"شاردنەوی هێڵی تووڵامراز","toolbarExpand":"نیشاندانی هێڵی تووڵامراز","toolbarGroups":{"document":"پەڕه","clipboard":"بڕین/پووچکردنەوە","editing":"چاکسازی","forms":"داڕشتە","basicstyles":"شێوازی بنچینەیی","paragraph":"بڕگە","links":"بەستەر","insert":"خستنە ناو","styles":"شێواز","colors":"ڕەنگەکان","tools":"ئامرازەکان"},"toolbars":"تووڵامرازی دەسکاریکەر"},"elementspath":{"eleLabel":"ڕێڕەوی توخمەکان","eleTitle":"%1 توخم"},"format":{"label":"ڕازاندنەوە","panelTitle":"بەشی ڕازاندنەوه","tag_address":"ناونیشان","tag_div":"(DIV)-ی ئاسایی","tag_h1":"سەرنووسەی ١","tag_h2":"سەرنووسەی ٢","tag_h3":"سەرنووسەی ٣","tag_h4":"سەرنووسەی ٤","tag_h5":"سەرنووسەی ٥","tag_h6":"سەرنووسەی ٦","tag_p":"ئاسایی","tag_pre":"شێوازکراو"},"horizontalrule":{"toolbar":"دانانی هێلی ئاسۆیی"},"image":{"alertUrl":"تکایه ناونیشانی بەستەری وێنه بنووسه","alt":"جێگرەوەی دەق","border":"پەراوێز","btnUpload":"ناردنی بۆ ڕاژه","button2Img":"تۆ دەتەوێت دوگمەی وێنەی دیاریکراو بگۆڕیت بۆ وێنەیەکی ئاسایی؟","hSpace":"بۆشایی ئاسۆیی","img2Button":"تۆ دەتەوێت وێنەی دیاریکراو بگۆڕیت بۆ دوگمەی وێنه؟","infoTab":"زانیاری وێنه","linkTab":"بەستەر","lockRatio":"داخستنی ڕێژه","menu":"خاسیەتی وێنه","resetSize":"ڕێکخستنەوەی قەباره","title":"خاسیەتی وێنه","titleButton":"خاسیەتی دوگمەی وێنه","upload":"بارکردن","urlMissing":"سەرچاوەی بەستەری وێنه بزره","vSpace":"بۆشایی ئەستونی","validateBorder":"پەراوێز دەبێت بەتەواوی تەنها ژماره بێت.","validateHSpace":"بۆشایی ئاسۆیی دەبێت بەتەواوی تەنها ژمارە بێت.","validateVSpace":"بۆشایی ئەستونی دەبێت بەتەواوی تەنها ژماره بێت."},"indent":{"indent":"زیادکردنی بۆشایی","outdent":"کەمکردنەوەی بۆشایی"},"fakeobjects":{"anchor":"لەنگەر","flash":"فلاش","hiddenfield":"شاردنەوەی خانه","iframe":"لەچوارچێوە","unknown":"بەرکارێکی نەناسراو"},"link":{"acccessKey":"کلیلی دەستپێگەیشتن","advanced":"پێشکەوتوو","advisoryContentType":"جۆری ناوەڕۆکی ڕاویژکار","advisoryTitle":"ڕاوێژکاری سەردێڕ","anchor":{"toolbar":"دانان/چاکسازی لەنگەر","menu":"چاکسازی لەنگەر","title":"خاسیەتی لەنگەر","name":"ناوی لەنگەر","errorName":"تکایه ناوی لەنگەر بنووسه","remove":"لابردنی لەنگەر"},"anchorId":"بەپێی ناسنامەی توخم","anchorName":"بەپێی ناوی لەنگەر","charset":"بەستەری سەرچاوەی نووسە","cssClasses":"شێوازی چینی پەڕه","emailAddress":"ناونیشانی ئیمەیل","emailBody":"ناوەڕۆکی نامە","emailSubject":"بابەتی نامە","id":"ناسنامە","info":"زانیاری بەستەر","langCode":"هێمای زمان","langDir":"ئاراستەی زمان","langDirLTR":"چەپ بۆ ڕاست (LTR)","langDirRTL":"ڕاست بۆ چەپ (RTL)","menu":"چاکسازی بەستەر","name":"ناو","noAnchors":"(هیچ جۆرێکی لەنگەر ئامادە نیە لەم پەڕەیه)","noEmail":"تکایە ناونیشانی ئیمەیل بنووسە","noUrl":"تکایە ناونیشانی بەستەر بنووسە","other":"<هیتر>","popupDependent":"پێوەبەستراو (Netscape)","popupFeatures":"خاسیەتی پەنجەرەی سەرهەڵدەر","popupFullScreen":"پڕ بەپڕی شاشە (IE)","popupLeft":"جێگای چەپ","popupLocationBar":"هێڵی ناونیشانی بەستەر","popupMenuBar":"هێڵی لیسته","popupResizable":"توانای گۆڕینی قەباره","popupScrollBars":"هێڵی هاتووچۆپێکردن","popupStatusBar":"هێڵی دۆخ","popupToolbar":"هێڵی تووڵامراز","popupTop":"جێگای سەرەوە","rel":"پەیوەندی","selectAnchor":"هەڵبژاردنی لەنگەرێك","styles":"شێواز","tabIndex":"بازدەری تابی ئیندێکس","target":"ئامانج","targetFrame":"<چووارچێوە>","targetFrameName":"ناوی ئامانجی چووارچێوە","targetPopup":"<پەنجەرەی سەرهەڵدەر>","targetPopupName":"ناوی پەنجەرەی سەرهەڵدەر","title":"بەستەر","toAnchor":"بەستەر بۆ لەنگەر له دەق","toEmail":"ئیمەیل","toUrl":"ناونیشانی بەستەر","toolbar":"دانان/ڕێکخستنی بەستەر","type":"جۆری بەستەر","unlink":"لابردنی بەستەر","upload":"بارکردن"},"list":{"bulletedlist":"دانان/لابردنی خاڵی لیست","numberedlist":"دانان/لابردنی ژمارەی لیست"},"magicline":{"title":"بڕگە لێرە دابنێ"},"maximize":{"maximize":"ئەوپەڕی گەورەیی","minimize":"ئەوپەڕی بچووکی"},"pastetext":{"button":"لکاندنی وەك دەقی ڕوون","title":"لکاندنی وەك دەقی ڕوون"},"pastefromword":{"confirmCleanup":"ئەم دەقەی بەتەمای بیلکێنی پێدەچێت له word هێنرابێت. دەتەوێت پاکی بکەیوه پێش ئەوەی بیلکێنی؟","error":"هیچ ڕێگەیەك نەبوو لەلکاندنی دەقەکه بەهۆی هەڵەیەکی ناوەخۆیی","title":"لکاندنی لەلایەن Word","toolbar":"لکاندنی لەڕێی Word"},"removeformat":{"toolbar":"لابردنی داڕشتەکە"},"sourcearea":{"toolbar":"سەرچاوە"},"specialchar":{"options":"هەڵبژاردەی نووسەی تایبەتی","title":"هەڵبژاردنی نووسەی تایبەتی","toolbar":"دانانی نووسەی تایبەتی"},"scayt":{"about":"دهربارهی SCAYT","aboutTab":"دهربارهی","addWord":"زیادکردنی ووشه","allCaps":"پشتگوێخستنی وشانهی پێکهاتووه لهپیتی گهوره","dic_create":"درووستکردن","dic_delete":"سڕینهوه","dic_field_name":"ناوی فهرههنگ","dic_info":"لهبنچینهدا فهرههنگی بهکارهێنهر کۆگاکردن کراوه له شهکرۆکه Cookie, ههرچۆنێك بێت شهکۆرکه سنووردار کراوه له قهباره کۆگاکردن.کاتێك فهرههنگی بهکارهێنهر گهیشته ئهم خاڵهی کهناتوانرێت زیاتر کۆگاکردن بکرێت له شهکرۆکه، ئهوسا فهرههنگهکه پێویسته کۆگابکرێت له ڕاژهکهی ئێمه. بۆ کۆگاکردنی زانیاری تایبهتی فهرههنگهکه له ڕاژهکهی ئێمه, پێویسته ناوێك ههڵبژێریت بۆ فهرههنگهکه. گهر تۆ فهرههنگێکی کۆگاکراوت ههیه, تکایه ناوی فهرههنگهکه بنووسه وه کلیکی دوگمهی گهڕاندنهوه بکه.","dic_rename":"گۆڕینی ناو","dic_restore":"گهڕاندنهوه","dictionariesTab":"فهرههنگهکان","disable":"ناچالاککردنی SCAYT","emptyDic":"ناوی فهرههنگ نابێت خاڵی بێت.","enable":"چالاککردنی SCAYT","ignore":"پشتگوێخستن","ignoreAll":"پشتگوێخستنی ههمووی","ignoreDomainNames":"پشتگوێخستنی دۆمهین","langs":"زمانهکان","languagesTab":"زمانهکان","mixedCase":"پشتگوێخستنی وشانهی پێکهاتووه لهپیتی گهورهو بچووك","mixedWithDigits":"پشتگوێخستنی وشانهی پێکهاتووه لهژماره","moreSuggestions":"پێشنیاری زیاتر","opera_title":"پشتیوانی نهکراوه لهلایهن Opera","options":"ههڵبژارده","optionsTab":"ههڵبژارده","title":"پشکنینی نووسه لهکاتی نووسین","toggle":"گۆڕینی SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"شێواز","panelTitle":"شێوازی ڕازاندنەوە","panelTitle1":"شێوازی خشت","panelTitle2":"شێوازی ناوهێڵ","panelTitle3":"شێوازی بەرکار"},"table":{"border":"گەورەیی پەراوێز","caption":"سەردێڕ","cell":{"menu":"خانه","insertBefore":"دانانی خانه لەپێش","insertAfter":"دانانی خانه لەپاش","deleteCell":"سڕینەوەی خانه","merge":"تێکەڵکردنی خانە","mergeRight":"تێکەڵکردنی لەگەڵ ڕاست","mergeDown":"تێکەڵکردنی لەگەڵ خوارەوە","splitHorizontal":"دابەشکردنی خانەی ئاسۆیی","splitVertical":"دابەشکردنی خانەی ئەستونی","title":"خاسیەتی خانه","cellType":"جۆری خانه","rowSpan":"ماوەی نێوان ڕیز","colSpan":"بستی ئەستونی","wordWrap":"پێچانەوەی وشە","hAlign":"ڕیزکردنی ئاسۆیی","vAlign":"ڕیزکردنی ئەستونی","alignBaseline":"هێڵەبنەڕەت","bgColor":"ڕەنگی پاشبنەما","borderColor":"ڕەنگی پەراوێز","data":"داتا","header":"سەرپەڕه","yes":"بەڵێ","no":"نەخێر","invalidWidth":"پانی خانه دەبێت بەتەواوی ژماره بێت.","invalidHeight":"درێژی خانه بەتەواوی دەبێت ژمارە بێت.","invalidRowSpan":"ماوەی نێوان ڕیز بەتەواوی دەبێت ژمارە بێت.","invalidColSpan":"ماوەی نێوان ئەستونی بەتەواوی دەبێت ژمارە بێت.","chooseColor":"هەڵبژێرە"},"cellPad":"بۆشایی ناوپۆش","cellSpace":"بۆشایی خانه","column":{"menu":"ئەستون","insertBefore":"دانانی ئەستون لەپێش","insertAfter":"دانانی ئەستوون لەپاش","deleteColumn":"سڕینەوەی ئەستوون"},"columns":"ستوونەکان","deleteTable":"سڕینەوەی خشتە","headers":"سەرپەڕه","headersBoth":"هەردووك","headersColumn":"یەکەم ئەستوون","headersNone":"هیچ","headersRow":"یەکەم ڕیز","invalidBorder":"ژمارەی پەراوێز دەبێت تەنها ژماره بێت.","invalidCellPadding":"ناوپۆشی خانه دەبێت ژمارەکی درووست بێت.","invalidCellSpacing":"بۆشایی خانه دەبێت ژمارەکی درووست بێت.","invalidCols":"ژمارەی ئەستوونی دەبێت گەورەتر بێت لەژمارەی 0.","invalidHeight":"درێژی خشته دهبێت تهنها ژماره بێت.","invalidRows":"ژمارەی ڕیز دەبێت گەورەتر بێت لەژمارەی 0.","invalidWidth":"پانی خشته دەبێت تەنها ژماره بێت.","menu":"خاسیەتی خشتە","row":{"menu":"ڕیز","insertBefore":"دانانی ڕیز لەپێش","insertAfter":"دانانی ڕیز لەپاش","deleteRow":"سڕینەوەی ڕیز"},"rows":"ڕیز","summary":"کورتە","title":"خاسیەتی خشتە","toolbar":"خشتە","widthPc":"لەسەدا","widthPx":"وێنەخاڵ - پیکسل","widthUnit":"پانی یەکە"},"undo":{"redo":"هەڵگەڕاندنەوە","undo":"پووچکردنەوە"},"wsc":{"btnIgnore":"پشتگوێ کردن","btnIgnoreAll":"پشتگوێکردنی ههمووی","btnReplace":"لهبریدانن","btnReplaceAll":"لهبریدانانی ههمووی","btnUndo":"پووچکردنهوه","changeTo":"گۆڕینی بۆ","errorLoading":"ههڵه لههێنانی داخوازینامهی خانهخۆێی ڕاژه: %s.","ieSpellDownload":"پشکنینی ڕێنووس دانهمزراوه. دهتهوێت ئێستا دایبگریت?","manyChanges":"پشکنینی ڕێنووس کۆتای هات: لهسهدا %1 ی وشهکان گۆڕدرا","noChanges":"پشکنینی ڕێنووس کۆتای هات: هیچ وشهیهك نۆگۆڕدرا","noMispell":"پشکنینی ڕێنووس کۆتای هات: هیچ ههڵهیهکی ڕێنووس نهدۆزراوه","noSuggestions":"- هیچ پێشنیارێك -","notAvailable":"ببووره، لهمکاتهدا ڕاژهکه لهبهردهستا نیه.","notInDic":"لهفهرههنگ دانیه","oneChange":"پشکنینی ڕێنووس کۆتای هات: یهك وشه گۆڕدرا","progress":"پشکنینی ڕێنووس لهبهردهوامبوون دایه...","title":"پشکنینی ڕێنووس","toolbar":"پشکنینی ڕێنووس"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/lt.js b/assets/plugins/ckeditor/lang/lt.js deleted file mode 100644 index e3f725d4..00000000 --- a/assets/plugins/ckeditor/lang/lt.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['lt']={"editor":"Pilnas redaktorius","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Spauskite ALT 0 dėl pagalbos","browseServer":"Naršyti po serverį","url":"URL","protocol":"Protokolas","upload":"Siųsti","uploadSubmit":"Siųsti į serverį","image":"Vaizdas","flash":"Flash","form":"Forma","checkbox":"Žymimasis langelis","radio":"Žymimoji akutė","textField":"Teksto laukas","textarea":"Teksto sritis","hiddenField":"Nerodomas laukas","button":"Mygtukas","select":"Atrankos laukas","imageButton":"Vaizdinis mygtukas","notSet":"<nėra nustatyta>","id":"Id","name":"Vardas","langDir":"Teksto kryptis","langDirLtr":"Iš kairės į dešinę (LTR)","langDirRtl":"Iš dešinės į kairę (RTL)","langCode":"Kalbos kodas","longDescr":"Ilgas aprašymas URL","cssClass":"Stilių lentelės klasės","advisoryTitle":"Konsultacinė antraštė","cssStyle":"Stilius","ok":"OK","cancel":"Nutraukti","close":"Uždaryti","preview":"Peržiūrėti","resize":"Pavilkite, kad pakeistumėte dydį","generalTab":"Bendros savybės","advancedTab":"Papildomas","validateNumberFailed":"Ši reikšmė nėra skaičius.","confirmNewPage":"Visas neišsaugotas turinys bus prarastas. Ar tikrai norite įkrauti naują puslapį?","confirmCancel":"Kai kurie parametrai pasikeitė. Ar tikrai norite užverti langą?","options":"Parametrai","target":"Tikslinė nuoroda","targetNew":"Naujas langas (_blank)","targetTop":"Viršutinis langas (_top)","targetSelf":"Esamas langas (_self)","targetParent":"Paskutinis langas (_parent)","langDirLTR":"Iš kairės į dešinę (LTR)","langDirRTL":"Iš dešinės į kairę (RTL)","styles":"Stilius","cssClasses":"Stilių klasės","width":"Plotis","height":"Aukštis","align":"Lygiuoti","alignLeft":"Kairę","alignRight":"Dešinę","alignCenter":"Centrą","alignTop":"Viršūnę","alignMiddle":"Vidurį","alignBottom":"Apačią","invalidValue":"Neteisinga reikšmė.","invalidHeight":"Aukštis turi būti nurodytas skaičiais.","invalidWidth":"Plotis turi būti nurodytas skaičiais.","invalidCssLength":"Reikšmė nurodyta \"%1\" laukui, turi būti teigiamas skaičius su arba be tinkamo CSS matavimo vieneto (px, %, in, cm, mm, em, ex, pt arba pc).","invalidHtmlLength":"Reikšmė nurodyta \"%1\" laukui, turi būti teigiamas skaičius su arba be tinkamo HTML matavimo vieneto (px arba %).","invalidInlineStyle":"Reikšmė nurodyta vidiniame stiliuje turi būti sudaryta iš vieno šių reikšmių \"vardas : reikšmė\", atskirta kabliataškiais.","cssLengthTooltip":"Įveskite reikšmę pikseliais arba skaičiais su tinkamu CSS vienetu (px, %, in, cm, mm, em, ex, pt arba pc).","unavailable":"%1<span class=\"cke_accessibility\">, netinkamas</span>"},"about":{"copy":"Copyright &copy; $1. Visos teiss saugomos.","dlgTitle":"Apie CKEditor","help":"Patikrinkite $1 dėl pagalbos.","moreInfo":"Dėl licencijavimo apsilankykite mūsų svetainėje:","title":"Apie CKEditor","userGuide":"CKEditor Vartotojo Gidas"},"basicstyles":{"bold":"Pusjuodis","italic":"Kursyvas","strike":"Perbrauktas","subscript":"Apatinis indeksas","superscript":"Viršutinis indeksas","underline":"Pabrauktas"},"blockquote":{"toolbar":"Citata"},"clipboard":{"copy":"Kopijuoti","copyError":"Jūsų naršyklės saugumo nustatymai neleidžia redaktoriui automatiškai įvykdyti kopijavimo operacijų. Tam prašome naudoti klaviatūrą (Ctrl/Cmd+C).","cut":"Iškirpti","cutError":"Jūsų naršyklės saugumo nustatymai neleidžia redaktoriui automatiškai įvykdyti iškirpimo operacijų. Tam prašome naudoti klaviatūrą (Ctrl/Cmd+X).","paste":"Įdėti","pasteArea":"Įkelti dalį","pasteMsg":"Žemiau esančiame įvedimo lauke įdėkite tekstą, naudodami klaviatūrą (<STRONG>Ctrl/Cmd+V</STRONG>) ir paspauskite mygtuką <STRONG>OK</STRONG>.","securityMsg":"Dėl jūsų naršyklės saugumo nustatymų, redaktorius negali tiesiogiai pasiekti laikinosios atminties. Jums reikia nukopijuoti dar kartą į šį langą.","title":"Įdėti"},"contextmenu":{"options":"Kontekstinio meniu parametrai"},"toolbar":{"toolbarCollapse":"Apjungti įrankių juostą","toolbarExpand":"Išplėsti įrankių juostą","toolbarGroups":{"document":"Dokumentas","clipboard":"Atmintinė/Atgal","editing":"Redagavimas","forms":"Formos","basicstyles":"Pagrindiniai stiliai","paragraph":"Paragrafas","links":"Nuorodos","insert":"Įterpti","styles":"Stiliai","colors":"Spalvos","tools":"Įrankiai"},"toolbars":"Redaktoriaus įrankiai"},"elementspath":{"eleLabel":"Elemento kelias","eleTitle":"%1 elementas"},"format":{"label":"Šrifto formatas","panelTitle":"Šrifto formatas","tag_address":"Kreipinio","tag_div":"Normalus (DIV)","tag_h1":"Antraštinis 1","tag_h2":"Antraštinis 2","tag_h3":"Antraštinis 3","tag_h4":"Antraštinis 4","tag_h5":"Antraštinis 5","tag_h6":"Antraštinis 6","tag_p":"Normalus","tag_pre":"Formuotas"},"horizontalrule":{"toolbar":"Įterpti horizontalią liniją"},"image":{"alertUrl":"Prašome įvesti vaizdo URL","alt":"Alternatyvus Tekstas","border":"Rėmelis","btnUpload":"Siųsti į serverį","button2Img":"Ar norite mygtuką paversti paprastu paveiksliuku?","hSpace":"Hor.Erdvė","img2Button":"Ar norite paveiksliuką paversti mygtuku?","infoTab":"Vaizdo informacija","linkTab":"Nuoroda","lockRatio":"Išlaikyti proporciją","menu":"Vaizdo savybės","resetSize":"Atstatyti dydį","title":"Vaizdo savybės","titleButton":"Vaizdinio mygtuko savybės","upload":"Nusiųsti","urlMissing":"Paveiksliuko nuorodos nėra.","vSpace":"Vert.Erdvė","validateBorder":"Reikšmė turi būti sveikas skaičius.","validateHSpace":"Reikšmė turi būti sveikas skaičius.","validateVSpace":"Reikšmė turi būti sveikas skaičius."},"indent":{"indent":"Padidinti įtrauką","outdent":"Sumažinti įtrauką"},"fakeobjects":{"anchor":"Žymė","flash":"Flash animacija","hiddenfield":"Paslėptas laukas","iframe":"IFrame","unknown":"Nežinomas objektas"},"link":{"acccessKey":"Prieigos raktas","advanced":"Papildomas","advisoryContentType":"Konsultacinio turinio tipas","advisoryTitle":"Konsultacinė antraštė","anchor":{"toolbar":"Įterpti/modifikuoti žymę","menu":"Žymės savybės","title":"Žymės savybės","name":"Žymės vardas","errorName":"Prašome įvesti žymės vardą","remove":"Pašalinti žymę"},"anchorId":"Pagal žymės Id","anchorName":"Pagal žymės vardą","charset":"Susietų išteklių simbolių lentelė","cssClasses":"Stilių lentelės klasės","emailAddress":"El.pašto adresas","emailBody":"Žinutės turinys","emailSubject":"Žinutės tema","id":"Id","info":"Nuorodos informacija","langCode":"Teksto kryptis","langDir":"Teksto kryptis","langDirLTR":"Iš kairės į dešinę (LTR)","langDirRTL":"Iš dešinės į kairę (RTL)","menu":"Taisyti nuorodą","name":"Vardas","noAnchors":"(Šiame dokumente žymių nėra)","noEmail":"Prašome įvesti el.pašto adresą","noUrl":"Prašome įvesti nuorodos URL","other":"<kitas>","popupDependent":"Priklausomas (Netscape)","popupFeatures":"Išskleidžiamo lango savybės","popupFullScreen":"Visas ekranas (IE)","popupLeft":"Kairė pozicija","popupLocationBar":"Adreso juosta","popupMenuBar":"Meniu juosta","popupResizable":"Kintamas dydis","popupScrollBars":"Slinkties juostos","popupStatusBar":"Būsenos juosta","popupToolbar":"Mygtukų juosta","popupTop":"Viršutinė pozicija","rel":"Sąsajos","selectAnchor":"Pasirinkite žymę","styles":"Stilius","tabIndex":"Tabuliavimo indeksas","target":"Paskirties vieta","targetFrame":"<kadras>","targetFrameName":"Paskirties kadro vardas","targetPopup":"<išskleidžiamas langas>","targetPopupName":"Paskirties lango vardas","title":"Nuoroda","toAnchor":"Žymė šiame puslapyje","toEmail":"El.paštas","toUrl":"Nuoroda","toolbar":"Įterpti/taisyti nuorodą","type":"Nuorodos tipas","unlink":"Panaikinti nuorodą","upload":"Siųsti"},"list":{"bulletedlist":"Suženklintas sąrašas","numberedlist":"Numeruotas sąrašas"},"magicline":{"title":"Insert paragraph here"},"maximize":{"maximize":"Išdidinti","minimize":"Sumažinti"},"pastetext":{"button":"Įdėti kaip gryną tekstą","title":"Įdėti kaip gryną tekstą"},"pastefromword":{"confirmCleanup":"Tekstas, kurį įkeliate yra kopijuojamas iš Word. Ar norite jį išvalyti prieš įkeliant?","error":"Dėl vidinių sutrikimų, nepavyko išvalyti įkeliamo teksto","title":"Įdėti iš Word","toolbar":"Įdėti iš Word"},"removeformat":{"toolbar":"Panaikinti formatą"},"sourcearea":{"toolbar":"Šaltinis"},"specialchar":{"options":"Specialaus simbolio nustatymai","title":"Pasirinkite specialų simbolį","toolbar":"Įterpti specialų simbolį"},"scayt":{"about":"Apie SCAYT","aboutTab":"Apie","addWord":"Pridėti žodį","allCaps":"Ignoruoti visas didžiąsias raides","dic_create":"Sukurti","dic_delete":"Ištrinti","dic_field_name":"Žodyno pavadinimas","dic_info":"Paprastai žodynas yra saugojamas sausainėliuose (cookies), kurių dydis, bet kokiu atveju, yra apribotas. Esant sausainėlių apimties pervišiui, viskas bus saugoma serveryje. Jei norite iš kart viską saugoti serveryje, turite sugalvoti žodynui pavadinimą. Jei jau turite žodyną, įrašykite pavadinimą ir nuspauskite Atstatyti mygtuką.","dic_rename":"Pervadinti","dic_restore":"Atstatyti","dictionariesTab":"Žodynai","disable":"Išjungti SCAYT","emptyDic":"Žodyno vardas neturėtų būti tuščias.","enable":"Įjungti SCAYT","ignore":"Ignoruoti","ignoreAll":"Ignoruoti viską","ignoreDomainNames":"Ignoruoti domenų vardus","langs":"Kalbos","languagesTab":"Kalbos","mixedCase":"Ignoruoti maišyto dydžio raides","mixedWithDigits":"Ignoruoti raides su skaičiais","moreSuggestions":"Daugiau patarimų","opera_title":"Nepalaikoma naršyklėje Opera","options":"Parametrai","optionsTab":"Parametrai","title":"Tikrinti klaidas kai rašoma","toggle":"Perjungti SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"Stilius","panelTitle":"Stilių formatavimas","panelTitle1":"Blokų stiliai","panelTitle2":"Vidiniai stiliai","panelTitle3":"Objektų stiliai"},"table":{"border":"Rėmelio dydis","caption":"Antraštė","cell":{"menu":"Langelis","insertBefore":"Įterpti langelį prieš","insertAfter":"Įterpti langelį po","deleteCell":"Šalinti langelius","merge":"Sujungti langelius","mergeRight":"Sujungti su dešine","mergeDown":"Sujungti su apačia","splitHorizontal":"Skaidyti langelį horizontaliai","splitVertical":"Skaidyti langelį vertikaliai","title":"Cell nustatymai","cellType":"Cell rūšis","rowSpan":"Eilučių Span","colSpan":"Stulpelių Span","wordWrap":"Sutraukti raides","hAlign":"Horizontalus lygiavimas","vAlign":"Vertikalus lygiavimas","alignBaseline":"Apatinė linija","bgColor":"Fono spalva","borderColor":"Rėmelio spalva","data":"Data","header":"Antraštė","yes":"Taip","no":"Ne","invalidWidth":"Reikšmė turi būti skaičius.","invalidHeight":"Reikšmė turi būti skaičius.","invalidRowSpan":"Reikšmė turi būti skaičius.","invalidColSpan":"Reikšmė turi būti skaičius.","chooseColor":"Pasirinkite"},"cellPad":"Tarpas nuo langelio rėmo iki teksto","cellSpace":"Tarpas tarp langelių","column":{"menu":"Stulpelis","insertBefore":"Įterpti stulpelį prieš","insertAfter":"Įterpti stulpelį po","deleteColumn":"Šalinti stulpelius"},"columns":"Stulpeliai","deleteTable":"Šalinti lentelę","headers":"Antraštės","headersBoth":"Abu","headersColumn":"Pirmas stulpelis","headersNone":"Nėra","headersRow":"Pirma eilutė","invalidBorder":"Reikšmė turi būti nurodyta skaičiumi.","invalidCellPadding":"Reikšmė turi būti nurodyta skaičiumi.","invalidCellSpacing":"Reikšmė turi būti nurodyta skaičiumi.","invalidCols":"Skaičius turi būti didesnis nei 0.","invalidHeight":"Reikšmė turi būti nurodyta skaičiumi.","invalidRows":"Skaičius turi būti didesnis nei 0.","invalidWidth":"Reikšmė turi būti nurodyta skaičiumi.","menu":"Lentelės savybės","row":{"menu":"Eilutė","insertBefore":"Įterpti eilutę prieš","insertAfter":"Įterpti eilutę po","deleteRow":"Šalinti eilutes"},"rows":"Eilutės","summary":"Santrauka","title":"Lentelės savybės","toolbar":"Lentelė","widthPc":"procentais","widthPx":"taškais","widthUnit":"pločio vienetas"},"undo":{"redo":"Atstatyti","undo":"Atšaukti"},"wsc":{"btnIgnore":"Ignoruoti","btnIgnoreAll":"Ignoruoti visus","btnReplace":"Pakeisti","btnReplaceAll":"Pakeisti visus","btnUndo":"Atšaukti","changeTo":"Pakeisti į","errorLoading":"Klaida įkraunant servisą: %s.","ieSpellDownload":"Rašybos tikrinimas neinstaliuotas. Ar Jūs norite jį dabar atsisiųsti?","manyChanges":"Rašybos tikrinimas baigtas: Pakeista %1 žodžių","noChanges":"Rašybos tikrinimas baigtas: Nėra pakeistų žodžių","noMispell":"Rašybos tikrinimas baigtas: Nerasta rašybos klaidų","noSuggestions":"- Nėra pasiūlymų -","notAvailable":"Atleiskite, šiuo metu servisas neprieinamas.","notInDic":"Žodyne nerastas","oneChange":"Rašybos tikrinimas baigtas: Vienas žodis pakeistas","progress":"Vyksta rašybos tikrinimas...","title":"Tikrinti klaidas","toolbar":"Rašybos tikrinimas"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/lv.js b/assets/plugins/ckeditor/lang/lv.js deleted file mode 100644 index 76c2f6a3..00000000 --- a/assets/plugins/ckeditor/lang/lv.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['lv']={"editor":"Bagātinātā teksta redaktors","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Palīdzībai, nospiediet ALT 0 ","browseServer":"Skatīt servera saturu","url":"URL","protocol":"Protokols","upload":"Augšupielādēt","uploadSubmit":"Nosūtīt serverim","image":"Attēls","flash":"Flash","form":"Forma","checkbox":"Atzīmēšanas kastīte","radio":"Izvēles poga","textField":"Teksta rinda","textarea":"Teksta laukums","hiddenField":"Paslēpta teksta rinda","button":"Poga","select":"Iezīmēšanas lauks","imageButton":"Attēlpoga","notSet":"<nav iestatīts>","id":"Id","name":"Nosaukums","langDir":"Valodas lasīšanas virziens","langDirLtr":"No kreisās uz labo (LTR)","langDirRtl":"No labās uz kreiso (RTL)","langCode":"Valodas kods","longDescr":"Gara apraksta Hipersaite","cssClass":"Stilu saraksta klases","advisoryTitle":"Konsultatīvs virsraksts","cssStyle":"Stils","ok":"Darīts!","cancel":"Atcelt","close":"Aizvērt","preview":"Priekšskatījums","resize":"Mērogot","generalTab":"Vispārīgi","advancedTab":"Izvērstais","validateNumberFailed":"Šī vērtība nav skaitlis","confirmNewPage":"Jebkuras nesaglabātās izmaiņas tiks zaudētas. Vai tiešām vēlaties atvērt jaunu lapu?","confirmCancel":"Daži no uzstādījumiem ir mainīti. Vai tiešām vēlaties aizvērt šo dialogu?","options":"Uzstādījumi","target":"Mērķis","targetNew":"Jauns logs (_blank)","targetTop":"Virsējais logs (_top)","targetSelf":"Tas pats logs (_self)","targetParent":"Avota logs (_parent)","langDirLTR":"Kreisais uz Labo (LTR)","langDirRTL":"Labais uz Kreiso (RTL)","styles":"Stils","cssClasses":"Stilu klases","width":"Platums","height":"Augstums","align":"Nolīdzināt","alignLeft":"Pa kreisi","alignRight":"Pa labi","alignCenter":"Centrēti","alignTop":"Augšā","alignMiddle":"Vertikāli centrēts","alignBottom":"Apakšā","invalidValue":"Nekorekta vērtība","invalidHeight":"Augstumam jābūt skaitlim.","invalidWidth":"Platumam jābūt skaitlim","invalidCssLength":"Laukam \"%1\" norādītajai vērtībai jābūt pozitīvam skaitlim ar vai bez korektām CSS mērvienībām (px, %, in, cm, mm, em, ex, pt, vai pc).","invalidHtmlLength":"Laukam \"%1\" norādītajai vērtībai jābūt pozitīvam skaitlim ar vai bez korektām HTML mērvienībām (px vai %).","invalidInlineStyle":"Iekļautajā stilā norādītajai vērtībai jāsastāv no viena vai vairākiem pāriem pēc forma'ta \"nosaukums: vērtība\", atdalītiem ar semikolu.","cssLengthTooltip":"Ievadiet vērtību pikseļos vai skaitli ar derīgu CSS mērvienību (px, %, in, cm, mm, em, ex, pt, vai pc).","unavailable":"%1<span class=\"cke_accessibility\">, nav pieejams</span>"},"about":{"copy":"Kopēšanas tiesības &copy; $1. Visas tiesības rezervētas.","dlgTitle":"Par CKEditor","help":"Pārbaudiet $1 palīdzībai.","moreInfo":"Informācijai par licenzēšanu apmeklējiet mūsu mājas lapu:","title":"Par CKEditor","userGuide":"CKEditor Lietotāja pamācība"},"basicstyles":{"bold":"Treknināts","italic":"Kursīvs","strike":"Pārsvītrots","subscript":"Apakšrakstā","superscript":"Augšrakstā","underline":"Pasvītrots"},"blockquote":{"toolbar":"Bloka citāts"},"clipboard":{"copy":"Kopēt","copyError":"Jūsu pārlūkprogrammas drošības iestatījumi nepieļauj redaktoram automātiski veikt kopēšanas darbību. Lūdzu, izmantojiet (Ctrl/Cmd+C), lai veiktu šo darbību.","cut":"Izgriezt","cutError":"Jūsu pārlūkprogrammas drošības iestatījumi nepieļauj redaktoram automātiski veikt izgriezšanas darbību. Lūdzu, izmantojiet (Ctrl/Cmd+X), lai veiktu šo darbību.","paste":"Ielīmēt","pasteArea":"Ielīmēšanas zona","pasteMsg":"Lūdzu, ievietojiet tekstu šajā laukumā, izmantojot klaviatūru (<STRONG>Ctrl/Cmd+V</STRONG>) un apstipriniet ar <STRONG>Darīts!</STRONG>.","securityMsg":"Jūsu pārlūka drošības uzstādījumu dēļ, nav iespējams tieši piekļūt jūsu starpliktuvei. Jums jāielīmē atkārtoti šajā logā.","title":"Ievietot"},"contextmenu":{"options":"Uznirstošās izvēlnes uzstādījumi"},"toolbar":{"toolbarCollapse":"Aizvērt rīkjoslu","toolbarExpand":"Atvērt rīkjoslu","toolbarGroups":{"document":"Dokuments","clipboard":"Starpliktuve/Atcelt","editing":"Labošana","forms":"Formas","basicstyles":"Pamata stili","paragraph":"Paragrāfs","links":"Saites","insert":"Ievietot","styles":"Stili","colors":"Krāsas","tools":"Rīki"},"toolbars":"Redaktora rīkjoslas"},"elementspath":{"eleLabel":"Elementa ceļš","eleTitle":"%1 elements"},"format":{"label":"Formāts","panelTitle":"Formāts","tag_address":"Adrese","tag_div":"Rindkopa (DIV)","tag_h1":"Virsraksts 1","tag_h2":"Virsraksts 2","tag_h3":"Virsraksts 3","tag_h4":"Virsraksts 4","tag_h5":"Virsraksts 5","tag_h6":"Virsraksts 6","tag_p":"Normāls teksts","tag_pre":"Formatēts teksts"},"horizontalrule":{"toolbar":"Ievietot horizontālu Atdalītājsvītru"},"image":{"alertUrl":"Lūdzu norādīt attēla hipersaiti","alt":"Alternatīvais teksts","border":"Rāmis","btnUpload":"Nosūtīt serverim","button2Img":"Vai vēlaties pārveidot izvēlēto attēla pogu uz attēla?","hSpace":"Horizontālā telpa","img2Button":"Vai vēlaties pārveidot izvēlēto attēlu uz attēla pogas?","infoTab":"Informācija par attēlu","linkTab":"Hipersaite","lockRatio":"Nemainīga Augstuma/Platuma attiecība","menu":"Attēla īpašības","resetSize":"Atjaunot sākotnējo izmēru","title":"Attēla īpašības","titleButton":"Attēlpogas īpašības","upload":"Augšupielādēt","urlMissing":"Trūkst attēla atrašanās adrese.","vSpace":"Vertikālā telpa","validateBorder":"Apmalei jābūt veselam skaitlim","validateHSpace":"HSpace jābūt veselam skaitlim","validateVSpace":"VSpace jābūt veselam skaitlim"},"indent":{"indent":"Palielināt atkāpi","outdent":"Samazināt atkāpi"},"fakeobjects":{"anchor":"Iezīme","flash":"Flash animācija","hiddenfield":"Slēpts lauks","iframe":"Iframe","unknown":"Nezināms objekts"},"link":{"acccessKey":"Pieejas taustiņš","advanced":"Izvērstais","advisoryContentType":"Konsultatīvs satura tips","advisoryTitle":"Konsultatīvs virsraksts","anchor":{"toolbar":"Ievietot/Labot iezīmi","menu":"Labot iezīmi","title":"Iezīmes uzstādījumi","name":"Iezīmes nosaukums","errorName":"Lūdzu norādiet iezīmes nosaukumu","remove":"Noņemt iezīmi"},"anchorId":"Pēc elementa ID","anchorName":"Pēc iezīmes nosaukuma","charset":"Pievienotā resursa kodējums","cssClasses":"Stilu saraksta klases","emailAddress":"E-pasta adrese","emailBody":"Ziņas saturs","emailSubject":"Ziņas tēma","id":"ID","info":"Hipersaites informācija","langCode":"Valodas kods","langDir":"Valodas lasīšanas virziens","langDirLTR":"No kreisās uz labo (LTR)","langDirRTL":"No labās uz kreiso (RTL)","menu":"Labot hipersaiti","name":"Nosaukums","noAnchors":"(Šajā dokumentā nav iezīmju)","noEmail":"Lūdzu norādi e-pasta adresi","noUrl":"Lūdzu norādi hipersaiti","other":"<cits>","popupDependent":"Atkarīgs (Netscape)","popupFeatures":"Uznirstošā loga nosaukums īpašības","popupFullScreen":"Pilnā ekrānā (IE)","popupLeft":"Kreisā koordināte","popupLocationBar":"Atrašanās vietas josla","popupMenuBar":"Izvēlnes josla","popupResizable":"Mērogojams","popupScrollBars":"Ritjoslas","popupStatusBar":"Statusa josla","popupToolbar":"Rīku josla","popupTop":"Augšējā koordināte","rel":"Relācija","selectAnchor":"Izvēlēties iezīmi","styles":"Stils","tabIndex":"Ciļņu indekss","target":"Mērķis","targetFrame":"<ietvars>","targetFrameName":"Mērķa ietvara nosaukums","targetPopup":"<uznirstošā logā>","targetPopupName":"Uznirstošā loga nosaukums","title":"Hipersaite","toAnchor":"Iezīme šajā lapā","toEmail":"E-pasts","toUrl":"Adrese","toolbar":"Ievietot/Labot hipersaiti","type":"Hipersaites tips","unlink":"Noņemt hipersaiti","upload":"Augšupielādēt"},"list":{"bulletedlist":"Pievienot/Noņemt vienkāršu sarakstu","numberedlist":"Numurēts saraksts"},"magicline":{"title":"Ievietot šeit rindkopu"},"maximize":{"maximize":"Maksimizēt","minimize":"Minimizēt"},"pastetext":{"button":"Ievietot kā vienkāršu tekstu","title":"Ievietot kā vienkāršu tekstu"},"pastefromword":{"confirmCleanup":"Teksts, kuru vēlaties ielīmēt, izskatās ir nokopēts no Word. Vai vēlaties to iztīrīt pirms ielīmēšanas?","error":"Iekšējas kļūdas dēļ, neizdevās iztīrīt ielīmētos datus.","title":"Ievietot no Worda","toolbar":"Ievietot no Worda"},"removeformat":{"toolbar":"Noņemt stilus"},"sourcearea":{"toolbar":"HTML kods"},"specialchar":{"options":"Speciālo simbolu uzstādījumi","title":"Ievietot īpašu simbolu","toolbar":"Ievietot speciālo simbolu"},"scayt":{"about":"Par SCAYT","aboutTab":"Par","addWord":"Pievienot vārdu","allCaps":"Ignorēt vārdus ar lielajiem burtiem","dic_create":"Izveidot","dic_delete":"Dzēst","dic_field_name":"Vārdnīcas nosaukums","dic_info":"Sākumā lietotāja vārdnīca tiek glabāta Cookie. Diemžēl, Cookie ir ierobežots izmērs. Kad vārdnīca sasniegs izmēru, ka to vairs nevar glabāt Cookie, tā tiks noglabāta uz servera. Lai saglabātu personīgo vārdnīcu uz jūsu servera, jums jānorāda tās nosaukums. Ja jūs jau esiet noglabājuši vārdnīcu, lūdzu ierakstiet tās nosaukum un nospiediet Atjaunot pogu.","dic_rename":"Pārsaukt","dic_restore":"Atjaunot","dictionariesTab":"Vārdnīcas","disable":"Atslēgt SCAYT","emptyDic":"Vārdnīcas nosaukums nevar būt tukšs.","enable":"Ieslēgt SCAYT","ignore":"Ignorēt","ignoreAll":"Ignorēt visu","ignoreDomainNames":"Ignorēt domēnu nosaukumus","langs":"Valodas","languagesTab":"Valodas","mixedCase":"Ignorēt vārdus ar jauktu reģistru burtiem","mixedWithDigits":"Ignorēt vārdus ar skaitļiem","moreSuggestions":"Vairāk ieteikumi","opera_title":"Opera neatbalsta","options":"Uzstādījumi","optionsTab":"Uzstādījumi","title":"Pārbaudīt gramatiku rakstot","toggle":"Pārslēgt SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"Stils","panelTitle":"Formatēšanas stili","panelTitle1":"Bloka stili","panelTitle2":"iekļautie stili","panelTitle3":"Objekta stili"},"table":{"border":"Rāmja izmērs","caption":"Leģenda","cell":{"menu":"Šūna","insertBefore":"Pievienot šūnu pirms","insertAfter":"Pievienot šūnu pēc","deleteCell":"Dzēst rūtiņas","merge":"Apvienot rūtiņas","mergeRight":"Apvieno pa labi","mergeDown":"Apvienot uz leju","splitHorizontal":"Sadalīt šūnu horizontāli","splitVertical":"Sadalīt šūnu vertikāli","title":"Šūnas uzstādījumi","cellType":"Šūnas tips","rowSpan":"Apvienotas rindas","colSpan":"Apvienotas kolonas","wordWrap":"Vārdu pārnese","hAlign":"Horizontālais novietojums","vAlign":"Vertikālais novietojums","alignBaseline":"Pamatrinda","bgColor":"Fona krāsa","borderColor":"Rāmja krāsa","data":"Dati","header":"Virsraksts","yes":"Jā","no":"Nē","invalidWidth":"Šūnas platumam jābūt skaitlim","invalidHeight":"Šūnas augstumam jābūt skaitlim","invalidRowSpan":"Apvienojamo rindu skaitam jābūt veselam skaitlim","invalidColSpan":"Apvienojamo kolonu skaitam jābūt veselam skaitlim","chooseColor":"Izvēlēties"},"cellPad":"Rūtiņu nobīde","cellSpace":"Rūtiņu atstatums","column":{"menu":"Kolonna","insertBefore":"Ievietot kolonu pirms","insertAfter":"Ievieto kolonu pēc","deleteColumn":"Dzēst kolonnas"},"columns":"Kolonnas","deleteTable":"Dzēst tabulu","headers":"Virsraksti","headersBoth":"Abi","headersColumn":"Pirmā kolona","headersNone":"Nekas","headersRow":"Pirmā rinda","invalidBorder":"Rāmju izmēram jābūt skaitlim","invalidCellPadding":"Šūnu atkāpēm jābūt pozitīvam skaitlim","invalidCellSpacing":"Šūnu atstarpēm jābūt pozitīvam skaitlim","invalidCols":"Kolonu skaitam jābūt lielākam par 0","invalidHeight":"Tabulas augstumam jābūt skaitlim","invalidRows":"Rindu skaitam jābūt lielākam par 0","invalidWidth":"Tabulas platumam jābūt skaitlim","menu":"Tabulas īpašības","row":{"menu":"Rinda","insertBefore":"Ievietot rindu pirms","insertAfter":"Ievietot rindu pēc","deleteRow":"Dzēst rindas"},"rows":"Rindas","summary":"Anotācija","title":"Tabulas īpašības","toolbar":"Tabula","widthPc":"procentuāli","widthPx":"pikseļos","widthUnit":"platuma mērvienība"},"undo":{"redo":"Atkārtot","undo":"Atcelt"},"wsc":{"btnIgnore":"Ignorēt","btnIgnoreAll":"Ignorēt visu","btnReplace":"Aizvietot","btnReplaceAll":"Aizvietot visu","btnUndo":"Atcelt","changeTo":"Nomainīt uz","errorLoading":"Kļūda ielādējot aplikācijas servisa adresi: %s.","ieSpellDownload":"Pareizrakstības pārbaudītājs nav pievienots. Vai vēlaties to lejupielādēt tagad?","manyChanges":"Pareizrakstības pārbaude pabeigta: %1 vārdi tika mainīti","noChanges":"Pareizrakstības pārbaude pabeigta: nekas netika labots","noMispell":"Pareizrakstības pārbaude pabeigta: kļūdas netika atrastas","noSuggestions":"- Nav ieteikumu -","notAvailable":"Atvainojiet, bet serviss šobrīd nav pieejams.","notInDic":"Netika atrasts vārdnīcā","oneChange":"Pareizrakstības pārbaude pabeigta: 1 vārds izmainīts","progress":"Notiek pareizrakstības pārbaude...","title":"Pārbaudīt gramatiku","toolbar":"Pareizrakstības pārbaude"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/mk.js b/assets/plugins/ckeditor/lang/mk.js deleted file mode 100644 index 65a42a44..00000000 --- a/assets/plugins/ckeditor/lang/mk.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['mk']={"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Browse Server","url":"URL","protocol":"Protocol","upload":"Upload","uploadSubmit":"Send it to the Server","image":"Image","flash":"Flash","form":"Form","checkbox":"Checkbox","radio":"Radio Button","textField":"Text Field","textarea":"Textarea","hiddenField":"Hidden Field","button":"Button","select":"Selection Field","imageButton":"Image Button","notSet":"<not set>","id":"Id","name":"Name","langDir":"Language Direction","langDirLtr":"Left to Right (LTR)","langDirRtl":"Right to Left (RTL)","langCode":"Language Code","longDescr":"Long Description URL","cssClass":"Stylesheet Classes","advisoryTitle":"Advisory Title","cssStyle":"Style","ok":"OK","cancel":"Cancel","close":"Close","preview":"Preview","resize":"Resize","generalTab":"Општо","advancedTab":"Advanced","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"Target","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Left to Right (LTR)","langDirRTL":"Right to Left (RTL)","styles":"Style","cssClasses":"Stylesheet Classes","width":"Width","height":"Height","align":"Alignment","alignLeft":"Left","alignRight":"Right","alignCenter":"Center","alignTop":"Top","alignMiddle":"Middle","alignBottom":"Bottom","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>"},"about":{"copy":"Copyright &copy; $1. All rights reserved.","dlgTitle":"About CKEditor","help":"Check $1 for help.","moreInfo":"For licensing information please visit our web site:","title":"About CKEditor","userGuide":"CKEditor User's Guide"},"basicstyles":{"bold":"Bold","italic":"Italic","strike":"Strike Through","subscript":"Subscript","superscript":"Superscript","underline":"Underline"},"blockquote":{"toolbar":"Block Quote"},"clipboard":{"copy":"Copy","copyError":"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).","cut":"Cut","cutError":"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).","paste":"Paste","pasteArea":"Paste Area","pasteMsg":"Please paste inside the following box using the keyboard (<strong>Ctrl/Cmd+V</strong>) and hit OK","securityMsg":"Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.","title":"Paste"},"contextmenu":{"options":"Context Menu Options"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"format":{"label":"Format","panelTitle":"Paragraph Format","tag_address":"Address","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatted"},"horizontalrule":{"toolbar":"Insert Horizontal Line"},"image":{"alertUrl":"Please type the image URL","alt":"Alternative Text","border":"Border","btnUpload":"Send it to the Server","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"HSpace","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"Image Info","linkTab":"Link","lockRatio":"Lock Ratio","menu":"Image Properties","resetSize":"Reset Size","title":"Image Properties","titleButton":"Image Button Properties","upload":"Upload","urlMissing":"Image source URL is missing.","vSpace":"VSpace","validateBorder":"Border must be a whole number.","validateHSpace":"HSpace must be a whole number.","validateVSpace":"VSpace must be a whole number."},"indent":{"indent":"Increase Indent","outdent":"Decrease Indent"},"fakeobjects":{"anchor":"Anchor","flash":"Flash Animation","hiddenfield":"Hidden Field","iframe":"IFrame","unknown":"Unknown Object"},"link":{"acccessKey":"Access Key","advanced":"Advanced","advisoryContentType":"Advisory Content Type","advisoryTitle":"Advisory Title","anchor":{"toolbar":"Anchor","menu":"Edit Anchor","title":"Anchor Properties","name":"Anchor Name","errorName":"Please type the anchor name","remove":"Remove Anchor"},"anchorId":"By Element Id","anchorName":"By Anchor Name","charset":"Linked Resource Charset","cssClasses":"Stylesheet Classes","emailAddress":"E-Mail Address","emailBody":"Message Body","emailSubject":"Message Subject","id":"Id","info":"Link Info","langCode":"Language Code","langDir":"Language Direction","langDirLTR":"Left to Right (LTR)","langDirRTL":"Right to Left (RTL)","menu":"Edit Link","name":"Name","noAnchors":"(No anchors available in the document)","noEmail":"Please type the e-mail address","noUrl":"Please type the link URL","other":"<other>","popupDependent":"Dependent (Netscape)","popupFeatures":"Popup Window Features","popupFullScreen":"Full Screen (IE)","popupLeft":"Left Position","popupLocationBar":"Location Bar","popupMenuBar":"Menu Bar","popupResizable":"Resizable","popupScrollBars":"Scroll Bars","popupStatusBar":"Status Bar","popupToolbar":"Toolbar","popupTop":"Top Position","rel":"Relationship","selectAnchor":"Select an Anchor","styles":"Style","tabIndex":"Tab Index","target":"Target","targetFrame":"<frame>","targetFrameName":"Target Frame Name","targetPopup":"<popup window>","targetPopupName":"Popup Window Name","title":"Link","toAnchor":"Link to anchor in the text","toEmail":"E-mail","toUrl":"URL","toolbar":"Link","type":"Link Type","unlink":"Unlink","upload":"Upload"},"list":{"bulletedlist":"Insert/Remove Bulleted List","numberedlist":"Insert/Remove Numbered List"},"magicline":{"title":"Insert paragraph here"},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"pastetext":{"button":"Paste as plain text","title":"Paste as Plain Text"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Paste from Word","toolbar":"Paste from Word"},"removeformat":{"toolbar":"Remove Format"},"sourcearea":{"toolbar":"Source"},"specialchar":{"options":"Special Character Options","title":"Select Special Character","toolbar":"Insert Special Character"},"scayt":{"about":"About SCAYT","aboutTab":"About","addWord":"Add Word","allCaps":"Ignore All-Caps Words","dic_create":"Create","dic_delete":"Delete","dic_field_name":"Dictionary name","dic_info":"Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.","dic_rename":"Rename","dic_restore":"Restore","dictionariesTab":"Dictionaries","disable":"Disable SCAYT","emptyDic":"Dictionary name should not be empty.","enable":"Enable SCAYT","ignore":"Ignore","ignoreAll":"Ignore All","ignoreDomainNames":"Ignore Domain Names","langs":"Languages","languagesTab":"Languages","mixedCase":"Ignore Words with Mixed Case","mixedWithDigits":"Ignore Words with Numbers","moreSuggestions":"More suggestions","opera_title":"Not supported by Opera","options":"Options","optionsTab":"Options","title":"Spell Check As You Type","toggle":"Toggle SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"Styles","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"table":{"border":"Border size","caption":"Caption","cell":{"menu":"Cell","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"Delete Cells","merge":"Merge Cells","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Cell padding","cellSpace":"Cell spacing","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Delete Columns"},"columns":"Columns","deleteTable":"Delete Table","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Table Properties","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Delete Rows"},"rows":"Rows","summary":"Summary","title":"Table Properties","toolbar":"Table","widthPc":"percent","widthPx":"pixels","widthUnit":"width unit"},"undo":{"redo":"Redo","undo":"Undo"},"wsc":{"btnIgnore":"Ignore","btnIgnoreAll":"Ignore All","btnReplace":"Replace","btnReplaceAll":"Replace All","btnUndo":"Undo","changeTo":"Change to","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Spell checker not installed. Do you want to download it now?","manyChanges":"Spell check complete: %1 words changed","noChanges":"Spell check complete: No words changed","noMispell":"Spell check complete: No misspellings found","noSuggestions":"- No suggestions -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Not in dictionary","oneChange":"Spell check complete: One word changed","progress":"Spell check in progress...","title":"Spell Check","toolbar":"Check Spelling"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/mn.js b/assets/plugins/ckeditor/lang/mn.js deleted file mode 100644 index b0dc5a21..00000000 --- a/assets/plugins/ckeditor/lang/mn.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['mn']={"editor":"Хэлбэрт бичвэр боловсруулагч","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Үйлчлэгч тооцоолуур (сервэр)-ийг үзэх","url":"цахим хуудасны хаяг (URL)","protocol":"Протокол","upload":"Илгээж ачаалах","uploadSubmit":"Үүнийг үйлчлэгч тооцоолуур (сервер) лүү илгээх","image":"Зураг","flash":"Флаш хөдөлгөөнтэй зураг","form":"Маягт","checkbox":"Тэмдэглээний нүд","radio":"Радио товчлуур","textField":"Бичвэрийн талбар","textarea":"Бичвэрийн зай","hiddenField":"Далд талбар","button":"Товчлуур","select":"Сонголтын талбар","imageButton":"Зургий товчуур","notSet":"<тохируулаагүй>","id":"Id (техникийн нэр)","name":"Нэр","langDir":"Хэлний чиглэл","langDirLtr":"Зүүнээс баруун (LTR)","langDirRtl":"Баруунаас зүүн (RTL)","langCode":"Хэлний код","longDescr":"Урт тайлбарын вэб хаяг","cssClass":"Хэлбэрийн хуудасны ангиуд","advisoryTitle":"Зөвлөх гарчиг","cssStyle":"Загвар","ok":"За","cancel":"Болих","close":"Хаах","preview":"Урьдчилан харах","resize":"Resize","generalTab":"Ерөнхий","advancedTab":"Гүнзгий","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Сонголт","target":"Бай","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Зүүн талаас баруун тийшээ (LTR)","langDirRTL":"Баруун талаас зүүн тийшээ (RTL)","styles":"Загвар","cssClasses":"Хэлбэрийн хуудасны ангиуд","width":"Өргөн","height":"Өндөр","align":"Эгнээ","alignLeft":"Зүүн","alignRight":"Баруун","alignCenter":"Төвд","alignTop":"Дээд талд","alignMiddle":"Дунд","alignBottom":"Доод талд","invalidValue":"Invalid value.","invalidHeight":"Өндөр нь тоо байх ёстой.","invalidWidth":"Өргөн нь тоо байх ёстой.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>"},"about":{"copy":"Copyright &copy; $1. All rights reserved.","dlgTitle":"About CKEditor","help":"Check $1 for help.","moreInfo":"For licensing information please visit our web site:","title":"About CKEditor","userGuide":"CKEditor User's Guide"},"basicstyles":{"bold":"Тод бүдүүн","italic":"Налуу","strike":"Дундуур нь зураастай болгох","subscript":"Суурь болгох","superscript":"Зэрэг болгох","underline":"Доогуур нь зураастай болгох"},"blockquote":{"toolbar":"Ишлэл хэсэг"},"clipboard":{"copy":"Хуулах","copyError":"Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хуулах үйлдэлийг зөвшөөрөхгүй байна. (Ctrl/Cmd+C) товчны хослолыг ашиглана уу.","cut":"Хайчлах","cutError":"Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хайчлах үйлдэлийг зөвшөөрөхгүй байна. (Ctrl/Cmd+X) товчны хослолыг ашиглана уу.","paste":"Буулгах","pasteArea":"Paste Area","pasteMsg":"(<strong>Ctrl/Cmd+V</strong>) товчийг ашиглан paste хийнэ үү. Мөн <strong>OK</strong> дар.","securityMsg":"Таны үзүүлэгч/browser/-н хамгаалалтын тохиргооноос болоод editor clipboard өгөгдөлрүү шууд хандах боломжгүй. Энэ цонход дахин paste хийхийг оролд.","title":"Буулгах"},"contextmenu":{"options":"Context Menu Options"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Холбоосууд","insert":"Оруулах","styles":"Загварууд","colors":"Онгөнүүд","tools":"Хэрэгслүүд"},"toolbars":"Болосруулагчийн хэрэгслийн самбар"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"format":{"label":"Параргафын загвар","panelTitle":"Параргафын загвар","tag_address":"Хаяг","tag_div":"Paragraph (DIV)","tag_h1":"Гарчиг 1","tag_h2":"Гарчиг 2","tag_h3":"Гарчиг 3","tag_h4":"Гарчиг 4","tag_h5":"Гарчиг 5","tag_h6":"Гарчиг 6","tag_p":"Хэвийн","tag_pre":"Formatted"},"horizontalrule":{"toolbar":"Хөндлөн зураас оруулах"},"image":{"alertUrl":"Зурагны URL-ын төрлийн сонгоно уу","alt":"Зургийг орлох бичвэр","border":"Хүрээ","btnUpload":"Үүнийг сервэррүү илгээ","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"Хөндлөн зай","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"Зурагны мэдээлэл","linkTab":"Холбоос","lockRatio":"Радио түгжих","menu":"Зураг","resetSize":"хэмжээ дахин оноох","title":"Зураг","titleButton":"Зурган товчны шинж чанар","upload":"Хуулах","urlMissing":"Зургийн эх сурвалжийн хаяг (URL) байхгүй байна.","vSpace":"Босоо зай","validateBorder":"Border must be a whole number.","validateHSpace":"HSpace must be a whole number.","validateVSpace":"VSpace must be a whole number."},"indent":{"indent":"Догол мөр хасах","outdent":"Догол мөр нэмэх"},"fakeobjects":{"anchor":"Зангуу","flash":"Flash Animation","hiddenfield":"Нууц талбар","iframe":"IFrame","unknown":"Unknown Object"},"link":{"acccessKey":"Холбох түлхүүр","advanced":"Нэмэлт","advisoryContentType":"Зөвлөлдөх төрлийн агуулга","advisoryTitle":"Зөвлөлдөх гарчиг","anchor":{"toolbar":"Зангуу","menu":"Зангууг болосруулах","title":"Зангуугийн шинж чанар","name":"Зангуугийн нэр","errorName":"Зангуугийн нэрийг оруулна уу","remove":"Зангууг устгах"},"anchorId":"Элемэнтйн Id нэрээр","anchorName":"Зангуугийн нэрээр","charset":"Тэмдэгт оноох нөөцөд холбогдсон","cssClasses":"Stylesheet классууд","emailAddress":"Э-шуудангийн хаяг","emailBody":"Зурвасны их бие","emailSubject":"Зурвасны гарчиг","id":"Id","info":"Холбоосын тухай мэдээлэл","langCode":"Хэлний код","langDir":"Хэлний чиглэл","langDirLTR":"Зүүнээс баруун (LTR)","langDirRTL":"Баруунаас зүүн (RTL)","menu":"Холбоос засварлах","name":"Нэр","noAnchors":"(Баримт бичиг зангуугүй байна)","noEmail":"Э-шуудангий хаягаа шивнэ үү","noUrl":"Холбоосны URL хаягийг шивнэ үү","other":"<other>","popupDependent":"Хамаатай (Netscape)","popupFeatures":"Popup цонхны онцлог","popupFullScreen":"Цонх дүүргэх (Internet Explorer)","popupLeft":"Зүүн байрлал","popupLocationBar":"Location хэсэг","popupMenuBar":"Цэсний самбар","popupResizable":"Resizable","popupScrollBars":"Скрол хэсэгүүд","popupStatusBar":"Статус хэсэг","popupToolbar":"Багажны самбар","popupTop":"Дээд байрлал","rel":"Relationship","selectAnchor":"Нэг зангууг сонгоно уу","styles":"Загвар","tabIndex":"Tab индекс","target":"Байрлал","targetFrame":"<Агуулах хүрээ>","targetFrameName":"Очих фремын нэр","targetPopup":"<popup цонх>","targetPopupName":"Popup цонхны нэр","title":"Холбоос","toAnchor":"Энэ бичвэр дэх зангуу руу очих холбоос","toEmail":"Э-захиа","toUrl":"цахим хуудасны хаяг (URL)","toolbar":"Холбоос","type":"Линкийн төрөл","unlink":"Холбоос авч хаях","upload":"Хуулах"},"list":{"bulletedlist":"Цэгтэй жагсаалт","numberedlist":"Дугаарлагдсан жагсаалт"},"magicline":{"title":"Insert paragraph here"},"maximize":{"maximize":"Дэлгэц дүүргэх","minimize":"Цонхыг багсгаж харуулах"},"pastetext":{"button":"Энгийн бичвэрээр буулгах","title":"Энгийн бичвэрээр буулгах"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Word-оос буулгах","toolbar":"Word-оос буулгах"},"removeformat":{"toolbar":"Параргафын загварыг авч хаях"},"sourcearea":{"toolbar":"Код"},"specialchar":{"options":"Special Character Options","title":"Онцгой тэмдэгт сонгох","toolbar":"Онцгой тэмдэгт оруулах"},"scayt":{"about":"About SCAYT","aboutTab":"About","addWord":"Add Word","allCaps":"Ignore All-Caps Words","dic_create":"Бий болгох","dic_delete":"Устгах","dic_field_name":"Dictionary name","dic_info":"Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.","dic_rename":"Нэрийг солих","dic_restore":"Restore","dictionariesTab":"Толь бичгүүд","disable":"Disable SCAYT","emptyDic":"Dictionary name should not be empty.","enable":"Enable SCAYT","ignore":"Ignore","ignoreAll":"Ignore All","ignoreDomainNames":"Ignore Domain Names","langs":"Хэлүүд","languagesTab":"Хэлүүд","mixedCase":"Ignore Words with Mixed Case","mixedWithDigits":"Ignore Words with Numbers","moreSuggestions":"More suggestions","opera_title":"Not supported by Opera","options":"Сонголт","optionsTab":"Сонголт","title":"Spell Check As You Type","toggle":"Toggle SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"Загвар","panelTitle":"Загвар хэлбэржүүлэх","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"table":{"border":"Хүрээний хэмжээ","caption":"Тайлбар","cell":{"menu":"Нүх/зай","insertBefore":"Нүх/зай өмнө нь оруулах","insertAfter":"Нүх/зай дараа нь оруулах","deleteCell":"Нүх устгах","merge":"Нүх нэгтэх","mergeRight":"Баруун тийш нэгтгэх","mergeDown":"Доош нэгтгэх","splitHorizontal":"Нүх/зайг босоогоор нь тусгаарлах","splitVertical":"Нүх/зайг хөндлөнгөөр нь тусгаарлах","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Хэвтээд тэгшлэх арга","vAlign":"Босоод тэгшлэх арга","alignBaseline":"Baseline","bgColor":"Дэвсгэр өнгө","borderColor":"Хүрээний өнгө","data":"Data","header":"Header","yes":"Тийм","no":"Үгүй","invalidWidth":"Нүдний өргөн нь тоо байх ёстой.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Сонгох"},"cellPad":"Нүх доторлох(padding)","cellSpace":"Нүх хоорондын зай (spacing)","column":{"menu":"Багана","insertBefore":"Багана өмнө нь оруулах","insertAfter":"Багана дараа нь оруулах","deleteColumn":"Багана устгах"},"columns":"Багана","deleteTable":"Хүснэгт устгах","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Хүснэгтийн өргөн нь тоо байх ёстой.","menu":"Хүснэгт","row":{"menu":"Мөр","insertBefore":"Мөр өмнө нь оруулах","insertAfter":"Мөр дараа нь оруулах","deleteRow":"Мөр устгах"},"rows":"Мөр","summary":"Тайлбар","title":"Хүснэгт","toolbar":"Хүснэгт","widthPc":"хувь","widthPx":"цэг","widthUnit":"өргөний нэгж"},"undo":{"redo":"Өмнөх үйлдлээ сэргээх","undo":"Хүчингүй болгох"},"wsc":{"btnIgnore":"Зөвшөөрөх","btnIgnoreAll":"Бүгдийг зөвшөөрөх","btnReplace":"Солих","btnReplaceAll":"Бүгдийг Дарж бичих","btnUndo":"Буцаах","changeTo":"Өөрчлөх","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Дүрэм шалгагч суугаагүй байна. Татаж авахыг хүсч байна уу?","manyChanges":"Дүрэм шалгаад дууссан: %1 үг өөрчлөгдсөн","noChanges":"Дүрэм шалгаад дууссан: үг өөрчлөгдөөгүй","noMispell":"Дүрэм шалгаад дууссан: Алдаа олдсонгүй","noSuggestions":"- Тайлбаргүй -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Толь бичиггүй","oneChange":"Дүрэм шалгаад дууссан: 1 үг өөрчлөгдсөн","progress":"Дүрэм шалгаж байгаа үйл явц...","title":"Spell Check","toolbar":"Үгийн дүрэх шалгах"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/ms.js b/assets/plugins/ckeditor/lang/ms.js deleted file mode 100644 index 24242b95..00000000 --- a/assets/plugins/ckeditor/lang/ms.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['ms']={"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Browse Server","url":"URL","protocol":"Protokol","upload":"Muat Naik","uploadSubmit":"Hantar ke Server","image":"Gambar","flash":"Flash","form":"Borang","checkbox":"Checkbox","radio":"Butang Radio","textField":"Text Field","textarea":"Textarea","hiddenField":"Field Tersembunyi","button":"Butang","select":"Field Pilihan","imageButton":"Butang Bergambar","notSet":"<tidak di set>","id":"Id","name":"Nama","langDir":"Arah Tulisan","langDirLtr":"Kiri ke Kanan (LTR)","langDirRtl":"Kanan ke Kiri (RTL)","langCode":"Kod Bahasa","longDescr":"Butiran Panjang URL","cssClass":"Kelas-kelas Stylesheet","advisoryTitle":"Tajuk Makluman","cssStyle":"Stail","ok":"OK","cancel":"Batal","close":"Close","preview":"Prebiu","resize":"Resize","generalTab":"General","advancedTab":"Advanced","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"Sasaran","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Kiri ke Kanan (LTR)","langDirRTL":"Kanan ke Kiri (RTL)","styles":"Stail","cssClasses":"Kelas-kelas Stylesheet","width":"Lebar","height":"Tinggi","align":"Jajaran","alignLeft":"Kiri","alignRight":"Kanan","alignCenter":"Tengah","alignTop":"Atas","alignMiddle":"Pertengahan","alignBottom":"Bawah","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>"},"about":{"copy":"Copyright &copy; $1. All rights reserved.","dlgTitle":"About CKEditor","help":"Check $1 for help.","moreInfo":"For licensing information please visit our web site:","title":"About CKEditor","userGuide":"CKEditor User's Guide"},"basicstyles":{"bold":"Bold","italic":"Italic","strike":"Strike Through","subscript":"Subscript","superscript":"Superscript","underline":"Underline"},"blockquote":{"toolbar":"Block Quote"},"clipboard":{"copy":"Salin","copyError":"Keselamatan perisian browser anda tidak membenarkan operasi salinan text/imej. Sila gunakan papan kekunci (Ctrl/Cmd+C).","cut":"Potong","cutError":"Keselamatan perisian browser anda tidak membenarkan operasi suntingan text/imej. Sila gunakan papan kekunci (Ctrl/Cmd+X).","paste":"Tampal","pasteArea":"Paste Area","pasteMsg":"Please paste inside the following box using the keyboard (<strong>Ctrl/Cmd+V</strong>) and hit OK","securityMsg":"Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.","title":"Tampal"},"contextmenu":{"options":"Context Menu Options"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"format":{"label":"Format","panelTitle":"Format","tag_address":"Alamat","tag_div":"Perenggan (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Telah Diformat"},"horizontalrule":{"toolbar":"Masukkan Garisan Membujur"},"image":{"alertUrl":"Sila taip URL untuk fail gambar","alt":"Text Alternatif","border":"Border","btnUpload":"Hantar ke Server","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"Ruang Melintang","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"Info Imej","linkTab":"Sambungan","lockRatio":"Tetapkan Nisbah","menu":"Ciri-ciri Imej","resetSize":"Saiz Set Semula","title":"Ciri-ciri Imej","titleButton":"Ciri-ciri Butang Bergambar","upload":"Muat Naik","urlMissing":"Image source URL is missing.","vSpace":"Ruang Menegak","validateBorder":"Border must be a whole number.","validateHSpace":"HSpace must be a whole number.","validateVSpace":"VSpace must be a whole number."},"indent":{"indent":"Tambahkan Inden","outdent":"Kurangkan Inden"},"fakeobjects":{"anchor":"Anchor","flash":"Flash Animation","hiddenfield":"Hidden Field","iframe":"IFrame","unknown":"Unknown Object"},"link":{"acccessKey":"Kunci Akses","advanced":"Advanced","advisoryContentType":"Jenis Kandungan Makluman","advisoryTitle":"Tajuk Makluman","anchor":{"toolbar":"Masukkan/Sunting Pautan","menu":"Ciri-ciri Pautan","title":"Ciri-ciri Pautan","name":"Nama Pautan","errorName":"Sila taip nama pautan","remove":"Remove Anchor"},"anchorId":"dengan menggunakan ID elemen","anchorName":"dengan menggunakan nama pautan","charset":"Linked Resource Charset","cssClasses":"Kelas-kelas Stylesheet","emailAddress":"Alamat E-Mail","emailBody":"Isi Kandungan Mesej","emailSubject":"Subjek Mesej","id":"Id","info":"Butiran Sambungan","langCode":"Arah Tulisan","langDir":"Arah Tulisan","langDirLTR":"Kiri ke Kanan (LTR)","langDirRTL":"Kanan ke Kiri (RTL)","menu":"Sunting Sambungan","name":"Nama","noAnchors":"(Tiada pautan terdapat dalam dokumen ini)","noEmail":"Sila taip alamat e-mail","noUrl":"Sila taip sambungan URL","other":"<lain>","popupDependent":"Bergantungan (Netscape)","popupFeatures":"Ciri Tetingkap Popup","popupFullScreen":"Skrin Penuh (IE)","popupLeft":"Posisi Kiri","popupLocationBar":"Bar Lokasi","popupMenuBar":"Bar Menu","popupResizable":"Resizable","popupScrollBars":"Bar-bar skrol","popupStatusBar":"Bar Status","popupToolbar":"Toolbar","popupTop":"Posisi Atas","rel":"Relationship","selectAnchor":"Sila pilih pautan","styles":"Stail","tabIndex":"Indeks Tab ","target":"Sasaran","targetFrame":"<bingkai>","targetFrameName":"Nama Bingkai Sasaran","targetPopup":"<tetingkap popup>","targetPopupName":"Nama Tetingkap Popup","title":"Sambungan","toAnchor":"Pautan dalam muka surat ini","toEmail":"E-Mail","toUrl":"URL","toolbar":"Masukkan/Sunting Sambungan","type":"Jenis Sambungan","unlink":"Buang Sambungan","upload":"Muat Naik"},"list":{"bulletedlist":"Senarai tidak bernombor","numberedlist":"Senarai bernombor"},"magicline":{"title":"Insert paragraph here"},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"pastetext":{"button":"Tampal sebagai text biasa","title":"Tampal sebagai text biasa"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Tampal dari Word","toolbar":"Tampal dari Word"},"removeformat":{"toolbar":"Buang Format"},"sourcearea":{"toolbar":"Sumber"},"specialchar":{"options":"Special Character Options","title":"Sila pilih huruf istimewa","toolbar":"Masukkan Huruf Istimewa"},"scayt":{"about":"About SCAYT","aboutTab":"About","addWord":"Add Word","allCaps":"Ignore All-Caps Words","dic_create":"Create","dic_delete":"Delete","dic_field_name":"Dictionary name","dic_info":"Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.","dic_rename":"Rename","dic_restore":"Restore","dictionariesTab":"Dictionaries","disable":"Disable SCAYT","emptyDic":"Dictionary name should not be empty.","enable":"Enable SCAYT","ignore":"Ignore","ignoreAll":"Ignore All","ignoreDomainNames":"Ignore Domain Names","langs":"Languages","languagesTab":"Languages","mixedCase":"Ignore Words with Mixed Case","mixedWithDigits":"Ignore Words with Numbers","moreSuggestions":"More suggestions","opera_title":"Not supported by Opera","options":"Options","optionsTab":"Options","title":"Spell Check As You Type","toggle":"Toggle SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"Stail","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"table":{"border":"Saiz Border","caption":"Keterangan","cell":{"menu":"Cell","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"Buangkan Sel-sel","merge":"Cantumkan Sel-sel","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Tambahan Ruang Sel","cellSpace":"Ruangan Antara Sel","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Buangkan Lajur"},"columns":"Jaluran","deleteTable":"Delete Table","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Ciri-ciri Jadual","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Buangkan Baris"},"rows":"Barisan","summary":"Summary","title":"Ciri-ciri Jadual","toolbar":"Jadual","widthPc":"peratus","widthPx":"piksel-piksel","widthUnit":"width unit"},"undo":{"redo":"Ulangkan","undo":"Batalkan"},"wsc":{"btnIgnore":"Biar","btnIgnoreAll":"Biarkan semua","btnReplace":"Ganti","btnReplaceAll":"Gantikan Semua","btnUndo":"Batalkan","changeTo":"Tukarkan kepada","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Pemeriksa ejaan tidak dipasang. Adakah anda mahu muat turun sekarang?","manyChanges":"Pemeriksaan ejaan siap: %1 perkataan diubah","noChanges":"Pemeriksaan ejaan siap: Tiada perkataan diubah","noMispell":"Pemeriksaan ejaan siap: Tiada salah ejaan","noSuggestions":"- Tiada cadangan -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Tidak terdapat didalam kamus","oneChange":"Pemeriksaan ejaan siap: Satu perkataan telah diubah","progress":"Pemeriksaan ejaan sedang diproses...","title":"Spell Check","toolbar":"Semak Ejaan"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/nb.js b/assets/plugins/ckeditor/lang/nb.js deleted file mode 100644 index 09d74350..00000000 --- a/assets/plugins/ckeditor/lang/nb.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['nb']={"editor":"Rikteksteditor","editorPanel":"Panel for rikteksteditor","common":{"editorHelp":"Trykk ALT 0 for hjelp","browseServer":"Bla igjennom server","url":"URL","protocol":"Protokoll","upload":"Last opp","uploadSubmit":"Send det til serveren","image":"Bilde","flash":"Flash","form":"Skjema","checkbox":"Avmerkingsboks","radio":"Alternativknapp","textField":"Tekstboks","textarea":"Tekstområde","hiddenField":"Skjult felt","button":"Knapp","select":"Rullegardinliste","imageButton":"Bildeknapp","notSet":"<ikke satt>","id":"Id","name":"Navn","langDir":"Språkretning","langDirLtr":"Venstre til høyre (VTH)","langDirRtl":"Høyre til venstre (HTV)","langCode":"Språkkode","longDescr":"Utvidet beskrivelse","cssClass":"Stilarkklasser","advisoryTitle":"Tittel","cssStyle":"Stil","ok":"OK","cancel":"Avbryt","close":"Lukk","preview":"Forhåndsvis","resize":"Dra for å skalere","generalTab":"Generelt","advancedTab":"Avansert","validateNumberFailed":"Denne verdien er ikke et tall.","confirmNewPage":"Alle ulagrede endringer som er gjort i dette innholdet vil bli tapt. Er du sikker på at du vil laste en ny side?","confirmCancel":"Noen av valgene har blitt endret. Er du sikker på at du vil lukke dialogen?","options":"Valg","target":"Mål","targetNew":"Nytt vindu (_blank)","targetTop":"Hele vindu (_top)","targetSelf":"Samme vindu (_self)","targetParent":"Foreldrevindu (_parent)","langDirLTR":"Venstre til høyre (VTH)","langDirRTL":"Høyre til venstre (HTV)","styles":"Stil","cssClasses":"Stilarkklasser","width":"Bredde","height":"Høyde","align":"Juster","alignLeft":"Venstre","alignRight":"Høyre","alignCenter":"Midtjuster","alignTop":"Topp","alignMiddle":"Midten","alignBottom":"Bunn","invalidValue":"Ugyldig verdi.","invalidHeight":"Høyde må være et tall.","invalidWidth":"Bredde må være et tall.","invalidCssLength":"Den angitte verdien for feltet \"%1\" må være et positivt tall med eller uten en gyldig CSS-målingsenhet (px, %, in, cm, mm, em, ex, pt, eller pc).","invalidHtmlLength":"Den angitte verdien for feltet \"%1\" må være et positivt tall med eller uten en gyldig HTML-målingsenhet (px eller %).","invalidInlineStyle":"Verdi angitt for inline stil må bestå av en eller flere sett med formatet \"navn : verdi\", separert med semikolon","cssLengthTooltip":"Skriv inn et tall for en piksel-verdi eller et tall med en gyldig CSS-enhet (px, %, in, cm, mm, em, ex, pt, eller pc).","unavailable":"%1<span class=\"cke_accessibility\">, utilgjenglig</span>"},"about":{"copy":"Copyright &copy; $1. Alle rettigheter reservert.","dlgTitle":"Om CKEditor","help":"Se $1 for hjelp.","moreInfo":"For lisensieringsinformasjon, vennligst besøk vårt nettsted:","title":"Om CKEditor","userGuide":"CKEditors brukerveiledning"},"basicstyles":{"bold":"Fet","italic":"Kursiv","strike":"Gjennomstreking","subscript":"Senket skrift","superscript":"Hevet skrift","underline":"Understreking"},"blockquote":{"toolbar":"Blokksitat"},"clipboard":{"copy":"Kopier","copyError":"Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst bruk tastatursnarveien (Ctrl/Cmd+C).","cut":"Klipp ut","cutError":"Din nettlesers sikkerhetsinstillinger tillater ikke automatisk utklipping av tekst. Vennligst bruk tastatursnarveien (Ctrl/Cmd+X).","paste":"Lim inn","pasteArea":"Innlimingsområde","pasteMsg":"Vennligst lim inn i følgende boks med tastaturet (<strong>Ctrl/Cmd+V</strong>) og trykk <strong>OK</strong>.","securityMsg":"Din nettlesers sikkerhetsinstillinger gir ikke redigeringsverktøyet direkte tilgang til utklippstavlen. Du må derfor lime det inn på nytt i dette vinduet.","title":"Lim inn"},"contextmenu":{"options":"Alternativer for høyreklikkmeny"},"toolbar":{"toolbarCollapse":"Skjul verktøylinje","toolbarExpand":"Vis verktøylinje","toolbarGroups":{"document":"Dokument","clipboard":"Utklippstavle/Angre","editing":"Redigering","forms":"Skjema","basicstyles":"Basisstiler","paragraph":"Avsnitt","links":"Lenker","insert":"Innsetting","styles":"Stiler","colors":"Farger","tools":"Verktøy"},"toolbars":"Verktøylinjer for editor"},"elementspath":{"eleLabel":"Element-sti","eleTitle":"%1 element"},"format":{"label":"Format","panelTitle":"Avsnittsformat","tag_address":"Adresse","tag_div":"Normal (DIV)","tag_h1":"Overskrift 1","tag_h2":"Overskrift 2","tag_h3":"Overskrift 3","tag_h4":"Overskrift 4","tag_h5":"Overskrift 5","tag_h6":"Overskrift 6","tag_p":"Normal","tag_pre":"Formatert"},"horizontalrule":{"toolbar":"Sett inn horisontal linje"},"image":{"alertUrl":"Vennligst skriv bilde-urlen","alt":"Alternativ tekst","border":"Ramme","btnUpload":"Send det til serveren","button2Img":"Vil du endre den valgte bildeknappen til et vanlig bilde?","hSpace":"HMarg","img2Button":"Vil du endre det valgte bildet til en bildeknapp?","infoTab":"Bildeinformasjon","linkTab":"Lenke","lockRatio":"Lås forhold","menu":"Bildeegenskaper","resetSize":"Tilbakestill størrelse","title":"Bildeegenskaper","titleButton":"Egenskaper for bildeknapp","upload":"Last opp","urlMissing":"Bildets adresse mangler.","vSpace":"VMarg","validateBorder":"Ramme må være et heltall.","validateHSpace":"HMarg må være et heltall.","validateVSpace":"VMarg må være et heltall."},"indent":{"indent":"Øk innrykk","outdent":"Reduser innrykk"},"fakeobjects":{"anchor":"Anker","flash":"Flash-animasjon","hiddenfield":"Skjult felt","iframe":"IFrame","unknown":"Ukjent objekt"},"link":{"acccessKey":"Aksessknapp","advanced":"Avansert","advisoryContentType":"Type","advisoryTitle":"Tittel","anchor":{"toolbar":"Sett inn/Rediger anker","menu":"Egenskaper for anker","title":"Egenskaper for anker","name":"Ankernavn","errorName":"Vennligst skriv inn ankernavnet","remove":"Fjern anker"},"anchorId":"Element etter ID","anchorName":"Anker etter navn","charset":"Lenket tegnsett","cssClasses":"Stilarkklasser","emailAddress":"E-postadresse","emailBody":"Melding","emailSubject":"Meldingsemne","id":"Id","info":"Lenkeinfo","langCode":"Språkkode","langDir":"Språkretning","langDirLTR":"Venstre til høyre (VTH)","langDirRTL":"Høyre til venstre (HTV)","menu":"Rediger lenke","name":"Navn","noAnchors":"(Ingen anker i dokumentet)","noEmail":"Vennligst skriv inn e-postadressen","noUrl":"Vennligst skriv inn lenkens URL","other":"<annen>","popupDependent":"Avhenging (Netscape)","popupFeatures":"Egenskaper for popup-vindu","popupFullScreen":"Fullskjerm (IE)","popupLeft":"Venstre posisjon","popupLocationBar":"Adresselinje","popupMenuBar":"Menylinje","popupResizable":"Skalerbar","popupScrollBars":"Scrollbar","popupStatusBar":"Statuslinje","popupToolbar":"Verktøylinje","popupTop":"Topp-posisjon","rel":"Relasjon (rel)","selectAnchor":"Velg et anker","styles":"Stil","tabIndex":"Tabindeks","target":"Mål","targetFrame":"<ramme>","targetFrameName":"Målramme","targetPopup":"<popup-vindu>","targetPopupName":"Navn på popup-vindu","title":"Lenke","toAnchor":"Lenke til anker i teksten","toEmail":"E-post","toUrl":"URL","toolbar":"Sett inn/Rediger lenke","type":"Lenketype","unlink":"Fjern lenke","upload":"Last opp"},"list":{"bulletedlist":"Legg til/Fjern punktmerket liste","numberedlist":"Legg til/Fjern nummerert liste"},"magicline":{"title":"Sett inn nytt avsnitt her"},"maximize":{"maximize":"Maksimer","minimize":"Minimer"},"pastetext":{"button":"Lim inn som ren tekst","title":"Lim inn som ren tekst"},"pastefromword":{"confirmCleanup":"Teksten du limer inn ser ut til å være kopiert fra Word. Vil du renske den før du limer den inn?","error":"Det var ikke mulig å renske den innlimte teksten på grunn av en intern feil","title":"Lim inn fra Word","toolbar":"Lim inn fra Word"},"removeformat":{"toolbar":"Fjern formatering"},"sourcearea":{"toolbar":"Kilde"},"specialchar":{"options":"Alternativer for spesialtegn","title":"Velg spesialtegn","toolbar":"Sett inn spesialtegn"},"scayt":{"about":"Om SCAYT","aboutTab":"Om","addWord":"Legg til ord","allCaps":"Ikke kontroller ord med kun store bokstaver","dic_create":"Opprett","dic_delete":"Slett","dic_field_name":"Ordboknavn","dic_info":"Brukerordboken lagres først i en informasjonskapsel på din maskin, men det er en begrensning på hvor mye som kan lagres her. Når ordboken blir for stor til å lagres i en informasjonskapsel, vil vi i stedet lagre ordboken på vår server. For å lagre din personlige ordbok på vår server, burde du velge et navn for ordboken din. Hvis du allerede har lagret en ordbok, vennligst skriv inn ordbokens navn og klikk på Gjenopprett-knappen.","dic_rename":"Gi nytt navn","dic_restore":"Gjenopprett","dictionariesTab":"Ordbøker","disable":"Slå av SCAYT","emptyDic":"Ordboknavn bør ikke være tom.","enable":"Slå på SCAYT","ignore":"Ignorer","ignoreAll":"Ignorer Alle","ignoreDomainNames":"Ikke kontroller domenenavn","langs":"Språk","languagesTab":"Språk","mixedCase":"Ikke kontroller ord med blandet små og store bokstaver","mixedWithDigits":"Ikke kontroller ord som inneholder tall","moreSuggestions":"Flere forslag","opera_title":"Ikke støttet av Opera","options":"Valg","optionsTab":"Valg","title":"Stavekontroll mens du skriver","toggle":"Veksle SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"Stil","panelTitle":"Stilformater","panelTitle1":"Blokkstiler","panelTitle2":"Inlinestiler","panelTitle3":"Objektstiler"},"table":{"border":"Rammestørrelse","caption":"Tittel","cell":{"menu":"Celle","insertBefore":"Sett inn celle før","insertAfter":"Sett inn celle etter","deleteCell":"Slett celler","merge":"Slå sammen celler","mergeRight":"Slå sammen høyre","mergeDown":"Slå sammen ned","splitHorizontal":"Del celle horisontalt","splitVertical":"Del celle vertikalt","title":"Celleegenskaper","cellType":"Celletype","rowSpan":"Radspenn","colSpan":"Kolonnespenn","wordWrap":"Tekstbrytning","hAlign":"Horisontal justering","vAlign":"Vertikal justering","alignBaseline":"Grunnlinje","bgColor":"Bakgrunnsfarge","borderColor":"Rammefarge","data":"Data","header":"Overskrift","yes":"Ja","no":"Nei","invalidWidth":"Cellebredde må være et tall.","invalidHeight":"Cellehøyde må være et tall.","invalidRowSpan":"Radspenn må være et heltall.","invalidColSpan":"Kolonnespenn må være et heltall.","chooseColor":"Velg"},"cellPad":"Cellepolstring","cellSpace":"Cellemarg","column":{"menu":"Kolonne","insertBefore":"Sett inn kolonne før","insertAfter":"Sett inn kolonne etter","deleteColumn":"Slett kolonner"},"columns":"Kolonner","deleteTable":"Slett tabell","headers":"Overskrifter","headersBoth":"Begge","headersColumn":"Første kolonne","headersNone":"Ingen","headersRow":"Første rad","invalidBorder":"Rammestørrelse må være et tall.","invalidCellPadding":"Cellepolstring må være et positivt tall.","invalidCellSpacing":"Cellemarg må være et positivt tall.","invalidCols":"Antall kolonner må være et tall større enn 0.","invalidHeight":"Tabellhøyde må være et tall.","invalidRows":"Antall rader må være et tall større enn 0.","invalidWidth":"Tabellbredde må være et tall.","menu":"Egenskaper for tabell","row":{"menu":"Rader","insertBefore":"Sett inn rad før","insertAfter":"Sett inn rad etter","deleteRow":"Slett rader"},"rows":"Rader","summary":"Sammendrag","title":"Egenskaper for tabell","toolbar":"Tabell","widthPc":"prosent","widthPx":"piksler","widthUnit":"Bredde-enhet"},"undo":{"redo":"Gjør om","undo":"Angre"},"wsc":{"btnIgnore":"Ignorer","btnIgnoreAll":"Ignorer alle","btnReplace":"Erstatt","btnReplaceAll":"Erstatt alle","btnUndo":"Angre","changeTo":"Endre til","errorLoading":"Feil under lasting av applikasjonstjenestetjener: %s.","ieSpellDownload":"Stavekontroll er ikke installert. Vil du laste den ned nå?","manyChanges":"Stavekontroll fullført: %1 ord endret","noChanges":"Stavekontroll fullført: ingen ord endret","noMispell":"Stavekontroll fullført: ingen feilstavinger funnet","noSuggestions":"- Ingen forslag -","notAvailable":"Beklager, tjenesten er utilgjenglig nå.","notInDic":"Ikke i ordboken","oneChange":"Stavekontroll fullført: Ett ord endret","progress":"Stavekontroll pågår...","title":"Stavekontroll","toolbar":"Stavekontroll"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/nl.js b/assets/plugins/ckeditor/lang/nl.js deleted file mode 100644 index 39cd3a43..00000000 --- a/assets/plugins/ckeditor/lang/nl.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['nl']={"editor":"Tekstverwerker","editorPanel":"Tekstverwerker beheerpaneel","common":{"editorHelp":"Druk ALT 0 voor hulp","browseServer":"Bladeren op server","url":"URL","protocol":"Protocol","upload":"Upload","uploadSubmit":"Naar server verzenden","image":"Afbeelding","flash":"Flash","form":"Formulier","checkbox":"Selectievinkje","radio":"Keuzerondje","textField":"Tekstveld","textarea":"Tekstvak","hiddenField":"Verborgen veld","button":"Knop","select":"Selectieveld","imageButton":"Afbeeldingsknop","notSet":"<niet ingevuld>","id":"Id","name":"Naam","langDir":"Schrijfrichting","langDirLtr":"Links naar rechts (LTR)","langDirRtl":"Rechts naar links (RTL)","langCode":"Taalcode","longDescr":"Lange URL-omschrijving","cssClass":"Stylesheet-klassen","advisoryTitle":"Adviserende titel","cssStyle":"Stijl","ok":"OK","cancel":"Annuleren","close":"Sluiten","preview":"Voorbeeld","resize":"Sleep om te herschalen","generalTab":"Algemeen","advancedTab":"Geavanceerd","validateNumberFailed":"Deze waarde is geen geldig getal.","confirmNewPage":"Alle aangebrachte wijzigingen gaan verloren. Weet u zeker dat u een nieuwe pagina wilt openen?","confirmCancel":"Enkele opties zijn gewijzigd. Weet u zeker dat u dit dialoogvenster wilt sluiten?","options":"Opties","target":"Doelvenster","targetNew":"Nieuw venster (_blank)","targetTop":"Hele venster (_top)","targetSelf":"Zelfde venster (_self)","targetParent":"Origineel venster (_parent)","langDirLTR":"Links naar rechts (LTR)","langDirRTL":"Rechts naar links (RTL)","styles":"Stijl","cssClasses":"Stylesheet-klassen","width":"Breedte","height":"Hoogte","align":"Uitlijning","alignLeft":"Links","alignRight":"Rechts","alignCenter":"Centreren","alignTop":"Boven","alignMiddle":"Midden","alignBottom":"Onder","invalidValue":"Ongeldige waarde.","invalidHeight":"De hoogte moet een getal zijn.","invalidWidth":"De breedte moet een getal zijn.","invalidCssLength":"Waarde in veld \"%1\" moet een positief nummer zijn, met of zonder een geldige CSS meeteenheid (px, %, in, cm, mm, em, ex, pt of pc).","invalidHtmlLength":"Waarde in veld \"%1\" moet een positief nummer zijn, met of zonder een geldige HTML meeteenheid (px of %).","invalidInlineStyle":"Waarde voor de online stijl moet bestaan uit een of meerdere tupels met het formaat \"naam : waarde\", gescheiden door puntkomma's.","cssLengthTooltip":"Geef een nummer in voor een waarde in pixels of geef een nummer in met een geldige CSS eenheid (px, %, in, cm, mm, em, ex, pt, of pc).","unavailable":"%1<span class=\"cke_accessibility\">, niet beschikbaar</span>"},"about":{"copy":"Copyright &copy; $1. Alle rechten voorbehouden.","dlgTitle":"Over CKEditor","help":"Bekijk de $1 voor hulp.","moreInfo":"Bezoek onze website voor licentieinformatie:","title":"Over CKEditor","userGuide":"CKEditor gebruiksaanwijzing"},"basicstyles":{"bold":"Vet","italic":"Cursief","strike":"Doorhalen","subscript":"Subscript","superscript":"Superscript","underline":"Onderstrepen"},"blockquote":{"toolbar":"Citaatblok"},"clipboard":{"copy":"Kopiëren","copyError":"De beveiligingsinstelling van de browser verhinderen het automatisch kopiëren. Gebruik de sneltoets Ctrl/Cmd+C van het toetsenbord.","cut":"Knippen","cutError":"De beveiligingsinstelling van de browser verhinderen het automatisch knippen. Gebruik de sneltoets Ctrl/Cmd+X van het toetsenbord.","paste":"Plakken","pasteArea":"Plakgebied","pasteMsg":"Plak de tekst in het volgende vak gebruikmakend van uw toetsenbord (<strong>Ctrl/Cmd+V</strong>) en klik op OK.","securityMsg":"Door de beveiligingsinstellingen van uw browser is het niet mogelijk om direct vanuit het klembord in de editor te plakken. Middels opnieuw plakken in dit venster kunt u de tekst alsnog plakken in de editor.","title":"Plakken"},"contextmenu":{"options":"Contextmenu opties"},"toolbar":{"toolbarCollapse":"Werkbalk inklappen","toolbarExpand":"Werkbalk uitklappen","toolbarGroups":{"document":"Document","clipboard":"Klembord/Ongedaan maken","editing":"Bewerken","forms":"Formulieren","basicstyles":"Basisstijlen","paragraph":"Paragraaf","links":"Links","insert":"Invoegen","styles":"Stijlen","colors":"Kleuren","tools":"Toepassingen"},"toolbars":"Werkbalken"},"elementspath":{"eleLabel":"Elementenpad","eleTitle":"%1 element"},"format":{"label":"Opmaak","panelTitle":"Opmaak","tag_address":"Adres","tag_div":"Normaal (DIV)","tag_h1":"Kop 1","tag_h2":"Kop 2","tag_h3":"Kop 3","tag_h4":"Kop 4","tag_h5":"Kop 5","tag_h6":"Kop 6","tag_p":"Normaal","tag_pre":"Met opmaak"},"horizontalrule":{"toolbar":"Horizontale lijn invoegen"},"image":{"alertUrl":"Geef de URL van de afbeelding","alt":"Alternatieve tekst","border":"Rand","btnUpload":"Naar server verzenden","button2Img":"Wilt u de geselecteerde afbeeldingsknop vervangen door een eenvoudige afbeelding?","hSpace":"HSpace","img2Button":"Wilt u de geselecteerde afbeelding vervangen door een afbeeldingsknop?","infoTab":"Informatie afbeelding","linkTab":"Link","lockRatio":"Afmetingen vergrendelen","menu":"Eigenschappen afbeelding","resetSize":"Afmetingen resetten","title":"Eigenschappen afbeelding","titleButton":"Eigenschappen afbeeldingsknop","upload":"Upload","urlMissing":"De URL naar de afbeelding ontbreekt.","vSpace":"VSpace","validateBorder":"Rand moet een heel nummer zijn.","validateHSpace":"HSpace moet een heel nummer zijn.","validateVSpace":"VSpace moet een heel nummer zijn."},"indent":{"indent":"Inspringing vergroten","outdent":"Inspringing verkleinen"},"fakeobjects":{"anchor":"Interne link","flash":"Flash animatie","hiddenfield":"Verborgen veld","iframe":"IFrame","unknown":"Onbekend object"},"link":{"acccessKey":"Toegangstoets","advanced":"Geavanceerd","advisoryContentType":"Aanbevolen content-type","advisoryTitle":"Adviserende titel","anchor":{"toolbar":"Interne link","menu":"Eigenschappen interne link","title":"Eigenschappen interne link","name":"Naam interne link","errorName":"Geef de naam van de interne link op","remove":"Interne link verwijderen"},"anchorId":"Op kenmerk interne link","anchorName":"Op naam interne link","charset":"Karakterset van gelinkte bron","cssClasses":"Stylesheet-klassen","emailAddress":"E-mailadres","emailBody":"Inhoud bericht","emailSubject":"Onderwerp bericht","id":"Id","info":"Linkomschrijving","langCode":"Taalcode","langDir":"Schrijfrichting","langDirLTR":"Links naar rechts (LTR)","langDirRTL":"Rechts naar links (RTL)","menu":"Link wijzigen","name":"Naam","noAnchors":"(Geen interne links in document gevonden)","noEmail":"Geef een e-mailadres","noUrl":"Geef de link van de URL","other":"<ander>","popupDependent":"Afhankelijk (Netscape)","popupFeatures":"Instellingen popupvenster","popupFullScreen":"Volledig scherm (IE)","popupLeft":"Positie links","popupLocationBar":"Locatiemenu","popupMenuBar":"Menubalk","popupResizable":"Herschaalbaar","popupScrollBars":"Schuifbalken","popupStatusBar":"Statusbalk","popupToolbar":"Werkbalk","popupTop":"Positie boven","rel":"Relatie","selectAnchor":"Kies een interne link","styles":"Stijl","tabIndex":"Tabvolgorde","target":"Doelvenster","targetFrame":"<frame>","targetFrameName":"Naam doelframe","targetPopup":"<popupvenster>","targetPopupName":"Naam popupvenster","title":"Link","toAnchor":"Interne link in pagina","toEmail":"E-mail","toUrl":"URL","toolbar":"Link invoegen/wijzigen","type":"Linktype","unlink":"Link verwijderen","upload":"Upload"},"list":{"bulletedlist":"Opsomming invoegen","numberedlist":"Genummerde lijst invoegen"},"magicline":{"title":"Hier paragraaf invoeren"},"maximize":{"maximize":"Maximaliseren","minimize":"Minimaliseren"},"pastetext":{"button":"Plakken als platte tekst","title":"Plakken als platte tekst"},"pastefromword":{"confirmCleanup":"De tekst die u wilt plakken lijkt gekopieerd te zijn vanuit Word. Wilt u de tekst opschonen voordat deze geplakt wordt?","error":"Het was niet mogelijk om de geplakte tekst op te schonen door een interne fout","title":"Plakken vanuit Word","toolbar":"Plakken vanuit Word"},"removeformat":{"toolbar":"Opmaak verwijderen"},"sourcearea":{"toolbar":"Broncode"},"specialchar":{"options":"Speciale tekens opties","title":"Selecteer speciaal teken","toolbar":"Speciaal teken invoegen"},"scayt":{"about":"Over SCAYT","aboutTab":"Over","addWord":"Woord toevoegen","allCaps":"Negeer woorden helemaal in hoofdletters","dic_create":"Aanmaken","dic_delete":"Verwijderen","dic_field_name":"Naam woordenboek","dic_info":"Initieel wordt het gebruikerswoordenboek opgeslagen in een cookie. Cookies zijn echter beperkt in grootte. Zodra het gebruikerswoordenboek het punt bereikt waarop het niet meer in een cookie opgeslagen kan worden, dan wordt het woordenboek op de server opgeslagen. Om je persoonlijke woordenboek op je eigen server op te slaan, moet je een mapnaam opgeven. Indien je al een woordenboek hebt opgeslagen, typ dan de naam en klik op de Terugzetten knop.","dic_rename":"Hernoemen","dic_restore":"Terugzetten","dictionariesTab":"Woordenboeken","disable":"SCAYT uitschakelen","emptyDic":"De naam van het woordenboek mag niet leeg zijn.","enable":"SCAYT inschakelen","ignore":"Negeren","ignoreAll":"Alles negeren","ignoreDomainNames":"Negeer domeinnamen","langs":"Talen","languagesTab":"Talen","mixedCase":"Negeer woorden met hoofd- en kleine letters","mixedWithDigits":"Negeer woorden met cijfers","moreSuggestions":"Meer suggesties","opera_title":"Niet ondersteund door Opera","options":"Opties","optionsTab":"Opties","title":"Controleer de spelling tijdens het typen","toggle":"SCAYT in/uitschakelen","noSuggestions":"No suggestion"},"stylescombo":{"label":"Stijl","panelTitle":"Opmaakstijlen","panelTitle1":"Blok stijlen","panelTitle2":"Inline stijlen","panelTitle3":"Object stijlen"},"table":{"border":"Randdikte","caption":"Onderschrift","cell":{"menu":"Cel","insertBefore":"Voeg cel in voor","insertAfter":"Voeg cel in na","deleteCell":"Cellen verwijderen","merge":"Cellen samenvoegen","mergeRight":"Voeg samen naar rechts","mergeDown":"Voeg samen naar beneden","splitHorizontal":"Splits cel horizontaal","splitVertical":"Splits cel vertikaal","title":"Celeigenschappen","cellType":"Celtype","rowSpan":"Rijen samenvoegen","colSpan":"Kolommen samenvoegen","wordWrap":"Automatische terugloop","hAlign":"Horizontale uitlijning","vAlign":"Verticale uitlijning","alignBaseline":"Tekstregel","bgColor":"Achtergrondkleur","borderColor":"Randkleur","data":"Gegevens","header":"Kop","yes":"Ja","no":"Nee","invalidWidth":"De celbreedte moet een getal zijn.","invalidHeight":"De celhoogte moet een getal zijn.","invalidRowSpan":"Rijen samenvoegen moet een heel getal zijn.","invalidColSpan":"Kolommen samenvoegen moet een heel getal zijn.","chooseColor":"Kies"},"cellPad":"Celopvulling","cellSpace":"Celafstand","column":{"menu":"Kolom","insertBefore":"Voeg kolom in voor","insertAfter":"Voeg kolom in na","deleteColumn":"Kolommen verwijderen"},"columns":"Kolommen","deleteTable":"Tabel verwijderen","headers":"Koppen","headersBoth":"Beide","headersColumn":"Eerste kolom","headersNone":"Geen","headersRow":"Eerste rij","invalidBorder":"De randdikte moet een getal zijn.","invalidCellPadding":"Celopvulling moet een getal zijn.","invalidCellSpacing":"Celafstand moet een getal zijn.","invalidCols":"Het aantal kolommen moet een getal zijn groter dan 0.","invalidHeight":"De tabelhoogte moet een getal zijn.","invalidRows":"Het aantal rijen moet een getal zijn groter dan 0.","invalidWidth":"De tabelbreedte moet een getal zijn.","menu":"Tabeleigenschappen","row":{"menu":"Rij","insertBefore":"Voeg rij in voor","insertAfter":"Voeg rij in na","deleteRow":"Rijen verwijderen"},"rows":"Rijen","summary":"Samenvatting","title":"Tabeleigenschappen","toolbar":"Tabel","widthPc":"procent","widthPx":"pixels","widthUnit":"eenheid breedte"},"undo":{"redo":"Opnieuw uitvoeren","undo":"Ongedaan maken"},"wsc":{"btnIgnore":"Negeren","btnIgnoreAll":"Alles negeren","btnReplace":"Vervangen","btnReplaceAll":"Alles vervangen","btnUndo":"Ongedaan maken","changeTo":"Wijzig in","errorLoading":"Er is een fout opgetreden bij het laden van de dienst: %s.","ieSpellDownload":"De spellingscontrole is niet geïnstalleerd. Wilt u deze nu downloaden?","manyChanges":"Klaar met spellingscontrole: %1 woorden aangepast","noChanges":"Klaar met spellingscontrole: geen woorden aangepast","noMispell":"Klaar met spellingscontrole: geen fouten gevonden","noSuggestions":"- Geen suggesties -","notAvailable":"Excuses, deze dienst is momenteel niet beschikbaar.","notInDic":"Niet in het woordenboek","oneChange":"Klaar met spellingscontrole: één woord aangepast","progress":"Bezig met spellingscontrole...","title":"Spellingscontrole","toolbar":"Spellingscontrole"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/no.js b/assets/plugins/ckeditor/lang/no.js deleted file mode 100644 index df4efe15..00000000 --- a/assets/plugins/ckeditor/lang/no.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['no']={"editor":"Rikteksteditor","editorPanel":"Panel for rikteksteditor","common":{"editorHelp":"Trykk ALT 0 for hjelp","browseServer":"Bla igjennom server","url":"URL","protocol":"Protokoll","upload":"Last opp","uploadSubmit":"Send det til serveren","image":"Bilde","flash":"Flash","form":"Skjema","checkbox":"Avmerkingsboks","radio":"Alternativknapp","textField":"Tekstboks","textarea":"Tekstområde","hiddenField":"Skjult felt","button":"Knapp","select":"Rullegardinliste","imageButton":"Bildeknapp","notSet":"<ikke satt>","id":"Id","name":"Navn","langDir":"Språkretning","langDirLtr":"Venstre til høyre (VTH)","langDirRtl":"Høyre til venstre (HTV)","langCode":"Språkkode","longDescr":"Utvidet beskrivelse","cssClass":"Stilarkklasser","advisoryTitle":"Tittel","cssStyle":"Stil","ok":"OK","cancel":"Avbryt","close":"Lukk","preview":"Forhåndsvis","resize":"Dra for å skalere","generalTab":"Generelt","advancedTab":"Avansert","validateNumberFailed":"Denne verdien er ikke et tall.","confirmNewPage":"Alle ulagrede endringer som er gjort i dette innholdet vil bli tapt. Er du sikker på at du vil laste en ny side?","confirmCancel":"Noen av valgene har blitt endret. Er du sikker på at du vil lukke dialogen?","options":"Valg","target":"Mål","targetNew":"Nytt vindu (_blank)","targetTop":"Hele vindu (_top)","targetSelf":"Samme vindu (_self)","targetParent":"Foreldrevindu (_parent)","langDirLTR":"Venstre til høyre (VTH)","langDirRTL":"Høyre til venstre (HTV)","styles":"Stil","cssClasses":"Stilarkklasser","width":"Bredde","height":"Høyde","align":"Juster","alignLeft":"Venstre","alignRight":"Høyre","alignCenter":"Midtjuster","alignTop":"Topp","alignMiddle":"Midten","alignBottom":"Bunn","invalidValue":"Ugyldig verdi.","invalidHeight":"Høyde må være et tall.","invalidWidth":"Bredde må være et tall.","invalidCssLength":"Den angitte verdien for feltet \"%1\" må være et positivt tall med eller uten en gyldig CSS-målingsenhet (px, %, in, cm, mm, em, ex, pt, eller pc).","invalidHtmlLength":"Den angitte verdien for feltet \"%1\" må være et positivt tall med eller uten en gyldig HTML-målingsenhet (px eller %).","invalidInlineStyle":"Verdi angitt for inline stil må bestå av en eller flere sett med formatet \"navn : verdi\", separert med semikolon","cssLengthTooltip":"Skriv inn et tall for en piksel-verdi eller et tall med en gyldig CSS-enhet (px, %, in, cm, mm, em, ex, pt, eller pc).","unavailable":"%1<span class=\"cke_accessibility\">, utilgjenglig</span>"},"about":{"copy":"Copyright &copy; $1. Alle rettigheter reservert.","dlgTitle":"Om CKEditor","help":"Se $1 for hjelp.","moreInfo":"For lisensieringsinformasjon, vennligst besøk vårt nettsted:","title":"Om CKEditor","userGuide":"CKEditors brukerveiledning"},"basicstyles":{"bold":"Fet","italic":"Kursiv","strike":"Gjennomstreking","subscript":"Senket skrift","superscript":"Hevet skrift","underline":"Understreking"},"blockquote":{"toolbar":"Blokksitat"},"clipboard":{"copy":"Kopier","copyError":"Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst bruk snarveien (Ctrl/Cmd+C).","cut":"Klipp ut","cutError":"Din nettlesers sikkerhetsinstillinger tillater ikke automatisk utklipping av tekst. Vennligst bruk snarveien (Ctrl/Cmd+X).","paste":"Lim inn","pasteArea":"Innlimingsområde","pasteMsg":"Vennligst lim inn i følgende boks med tastaturet (<STRONG>Ctrl/Cmd+V</STRONG>) og trykk <STRONG>OK</STRONG>.","securityMsg":"Din nettlesers sikkerhetsinstillinger gir ikke redigeringsverktøyet direkte tilgang til utklippstavlen. Du må derfor lime det inn på nytt i dette vinduet.","title":"Lim inn"},"contextmenu":{"options":"Alternativer for høyreklikkmeny"},"toolbar":{"toolbarCollapse":"Skjul verktøylinje","toolbarExpand":"Vis verktøylinje","toolbarGroups":{"document":"Dokument","clipboard":"Utklippstavle/Angre","editing":"Redigering","forms":"Skjema","basicstyles":"Basisstiler","paragraph":"Avsnitt","links":"Lenker","insert":"Innsetting","styles":"Stiler","colors":"Farger","tools":"Verktøy"},"toolbars":"Verktøylinjer for editor"},"elementspath":{"eleLabel":"Element-sti","eleTitle":"%1 element"},"format":{"label":"Format","panelTitle":"Avsnittsformat","tag_address":"Adresse","tag_div":"Normal (DIV)","tag_h1":"Overskrift 1","tag_h2":"Overskrift 2","tag_h3":"Overskrift 3","tag_h4":"Overskrift 4","tag_h5":"Overskrift 5","tag_h6":"Overskrift 6","tag_p":"Normal","tag_pre":"Formatert"},"horizontalrule":{"toolbar":"Sett inn horisontal linje"},"image":{"alertUrl":"Vennligst skriv bilde-urlen","alt":"Alternativ tekst","border":"Ramme","btnUpload":"Send det til serveren","button2Img":"Vil du endre den valgte bildeknappen til et vanlig bilde?","hSpace":"HMarg","img2Button":"Vil du endre det valgte bildet til en bildeknapp?","infoTab":"Bildeinformasjon","linkTab":"Lenke","lockRatio":"Lås forhold","menu":"Bildeegenskaper","resetSize":"Tilbakestill størrelse","title":"Bildeegenskaper","titleButton":"Egenskaper for bildeknapp","upload":"Last opp","urlMissing":"Bildets adresse mangler.","vSpace":"VMarg","validateBorder":"Ramme må være et heltall.","validateHSpace":"HMarg må være et heltall.","validateVSpace":"VMarg må være et heltall."},"indent":{"indent":"Øk innrykk","outdent":"Reduser innrykk"},"fakeobjects":{"anchor":"Anker","flash":"Flash-animasjon","hiddenfield":"Skjult felt","iframe":"IFrame","unknown":"Ukjent objekt"},"link":{"acccessKey":"Aksessknapp","advanced":"Avansert","advisoryContentType":"Type","advisoryTitle":"Tittel","anchor":{"toolbar":"Sett inn/Rediger anker","menu":"Egenskaper for anker","title":"Egenskaper for anker","name":"Ankernavn","errorName":"Vennligst skriv inn ankernavnet","remove":"Fjern anker"},"anchorId":"Element etter ID","anchorName":"Anker etter navn","charset":"Lenket tegnsett","cssClasses":"Stilarkklasser","emailAddress":"E-postadresse","emailBody":"Melding","emailSubject":"Meldingsemne","id":"Id","info":"Lenkeinfo","langCode":"Språkkode","langDir":"Språkretning","langDirLTR":"Venstre til høyre (VTH)","langDirRTL":"Høyre til venstre (HTV)","menu":"Rediger lenke","name":"Navn","noAnchors":"(Ingen anker i dokumentet)","noEmail":"Vennligst skriv inn e-postadressen","noUrl":"Vennligst skriv inn lenkens URL","other":"<annen>","popupDependent":"Avhenging (Netscape)","popupFeatures":"Egenskaper for popup-vindu","popupFullScreen":"Fullskjerm (IE)","popupLeft":"Venstre posisjon","popupLocationBar":"Adresselinje","popupMenuBar":"Menylinje","popupResizable":"Skalerbar","popupScrollBars":"Scrollbar","popupStatusBar":"Statuslinje","popupToolbar":"Verktøylinje","popupTop":"Topp-posisjon","rel":"Relasjon (rel)","selectAnchor":"Velg et anker","styles":"Stil","tabIndex":"Tabindeks","target":"Mål","targetFrame":"<ramme>","targetFrameName":"Målramme","targetPopup":"<popup-vindu>","targetPopupName":"Navn på popup-vindu","title":"Lenke","toAnchor":"Lenke til anker i teksten","toEmail":"E-post","toUrl":"URL","toolbar":"Sett inn/Rediger lenke","type":"Lenketype","unlink":"Fjern lenke","upload":"Last opp"},"list":{"bulletedlist":"Legg til/Fjern punktmerket liste","numberedlist":"Legg til/Fjern nummerert liste"},"magicline":{"title":"Sett inn nytt avsnitt her"},"maximize":{"maximize":"Maksimer","minimize":"Minimer"},"pastetext":{"button":"Lim inn som ren tekst","title":"Lim inn som ren tekst"},"pastefromword":{"confirmCleanup":"Teksten du limer inn ser ut til å være kopiert fra Word. Vil du renske den før du limer den inn?","error":"Det var ikke mulig å renske den innlimte teksten på grunn av en intern feil","title":"Lim inn fra Word","toolbar":"Lim inn fra Word"},"removeformat":{"toolbar":"Fjern formatering"},"sourcearea":{"toolbar":"Kilde"},"specialchar":{"options":"Alternativer for spesialtegn","title":"Velg spesialtegn","toolbar":"Sett inn spesialtegn"},"scayt":{"about":"Om SCAYT","aboutTab":"Om","addWord":"Legg til ord","allCaps":"Ikke kontroller ord med kun store bokstaver","dic_create":"Opprett","dic_delete":"Slett","dic_field_name":"Ordboknavn","dic_info":"Brukerordboken lagres først i en informasjonskapsel på din maskin, men det er en begrensning på hvor mye som kan lagres her. Når ordboken blir for stor til å lagres i en informasjonskapsel, vil vi i stedet lagre ordboken på vår server. For å lagre din personlige ordbok på vår server, burde du velge et navn for ordboken din. Hvis du allerede har lagret en ordbok, vennligst skriv inn ordbokens navn og klikk på Gjenopprett-knappen.","dic_rename":"Gi nytt navn","dic_restore":"Gjenopprett","dictionariesTab":"Ordbøker","disable":"Slå av SCAYT","emptyDic":"Ordboknavn bør ikke være tom.","enable":"Slå på SCAYT","ignore":"Ignorer","ignoreAll":"Ignorer Alle","ignoreDomainNames":"Ikke kontroller domenenavn","langs":"Språk","languagesTab":"Språk","mixedCase":"Ikke kontroller ord med blandet små og store bokstaver","mixedWithDigits":"Ikke kontroller ord som inneholder tall","moreSuggestions":"Flere forslag","opera_title":"Ikke støttet av Opera","options":"Valg","optionsTab":"Valg","title":"Stavekontroll mens du skriver","toggle":"Veksle SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"Stil","panelTitle":"Stilformater","panelTitle1":"Blokkstiler","panelTitle2":"Inlinestiler","panelTitle3":"Objektstiler"},"table":{"border":"Rammestørrelse","caption":"Tittel","cell":{"menu":"Celle","insertBefore":"Sett inn celle før","insertAfter":"Sett inn celle etter","deleteCell":"Slett celler","merge":"Slå sammen celler","mergeRight":"Slå sammen høyre","mergeDown":"Slå sammen ned","splitHorizontal":"Del celle horisontalt","splitVertical":"Del celle vertikalt","title":"Celleegenskaper","cellType":"Celletype","rowSpan":"Radspenn","colSpan":"Kolonnespenn","wordWrap":"Tekstbrytning","hAlign":"Horisontal justering","vAlign":"Vertikal justering","alignBaseline":"Grunnlinje","bgColor":"Bakgrunnsfarge","borderColor":"Rammefarge","data":"Data","header":"Overskrift","yes":"Ja","no":"Nei","invalidWidth":"Cellebredde må være et tall.","invalidHeight":"Cellehøyde må være et tall.","invalidRowSpan":"Radspenn må være et heltall.","invalidColSpan":"Kolonnespenn må være et heltall.","chooseColor":"Velg"},"cellPad":"Cellepolstring","cellSpace":"Cellemarg","column":{"menu":"Kolonne","insertBefore":"Sett inn kolonne før","insertAfter":"Sett inn kolonne etter","deleteColumn":"Slett kolonner"},"columns":"Kolonner","deleteTable":"Slett tabell","headers":"Overskrifter","headersBoth":"Begge","headersColumn":"Første kolonne","headersNone":"Ingen","headersRow":"Første rad","invalidBorder":"Rammestørrelse må være et tall.","invalidCellPadding":"Cellepolstring må være et positivt tall.","invalidCellSpacing":"Cellemarg må være et positivt tall.","invalidCols":"Antall kolonner må være et tall større enn 0.","invalidHeight":"Tabellhøyde må være et tall.","invalidRows":"Antall rader må være et tall større enn 0.","invalidWidth":"Tabellbredde må være et tall.","menu":"Egenskaper for tabell","row":{"menu":"Rader","insertBefore":"Sett inn rad før","insertAfter":"Sett inn rad etter","deleteRow":"Slett rader"},"rows":"Rader","summary":"Sammendrag","title":"Egenskaper for tabell","toolbar":"Tabell","widthPc":"prosent","widthPx":"piksler","widthUnit":"Bredde-enhet"},"undo":{"redo":"Gjør om","undo":"Angre"},"wsc":{"btnIgnore":"Ignorer","btnIgnoreAll":"Ignorer alle","btnReplace":"Erstatt","btnReplaceAll":"Erstatt alle","btnUndo":"Angre","changeTo":"Endre til","errorLoading":"Feil under lasting av applikasjonstjenestetjener: %s.","ieSpellDownload":"Stavekontroll er ikke installert. Vil du laste den ned nå?","manyChanges":"Stavekontroll fullført: %1 ord endret","noChanges":"Stavekontroll fullført: ingen ord endret","noMispell":"Stavekontroll fullført: ingen feilstavinger funnet","noSuggestions":"- Ingen forslag -","notAvailable":"Beklager, tjenesten er utilgjenglig nå.","notInDic":"Ikke i ordboken","oneChange":"Stavekontroll fullført: Ett ord endret","progress":"Stavekontroll pågår...","title":"Stavekontroll","toolbar":"Stavekontroll"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/pl.js b/assets/plugins/ckeditor/lang/pl.js deleted file mode 100644 index faa32304..00000000 --- a/assets/plugins/ckeditor/lang/pl.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['pl']={"editor":"Edytor tekstu sformatowanego","editorPanel":"Panel edytora tekstu sformatowanego","common":{"editorHelp":"W celu uzyskania pomocy naciśnij ALT 0","browseServer":"Przeglądaj","url":"Adres URL","protocol":"Protokół","upload":"Wyślij","uploadSubmit":"Wyślij","image":"Obrazek","flash":"Flash","form":"Formularz","checkbox":"Pole wyboru (checkbox)","radio":"Przycisk opcji (radio)","textField":"Pole tekstowe","textarea":"Obszar tekstowy","hiddenField":"Pole ukryte","button":"Przycisk","select":"Lista wyboru","imageButton":"Przycisk graficzny","notSet":"<nie ustawiono>","id":"Id","name":"Nazwa","langDir":"Kierunek tekstu","langDirLtr":"Od lewej do prawej (LTR)","langDirRtl":"Od prawej do lewej (RTL)","langCode":"Kod języka","longDescr":"Adres URL długiego opisu","cssClass":"Nazwa klasy CSS","advisoryTitle":"Opis obiektu docelowego","cssStyle":"Styl","ok":"OK","cancel":"Anuluj","close":"Zamknij","preview":"Podgląd","resize":"Przeciągnij, aby zmienić rozmiar","generalTab":"Ogólne","advancedTab":"Zaawansowane","validateNumberFailed":"Ta wartość nie jest liczbą.","confirmNewPage":"Wszystkie niezapisane zmiany zostaną utracone. Czy na pewno wczytać nową stronę?","confirmCancel":"Pewne opcje zostały zmienione. Czy na pewno zamknąć okno dialogowe?","options":"Opcje","target":"Obiekt docelowy","targetNew":"Nowe okno (_blank)","targetTop":"Okno najwyżej w hierarchii (_top)","targetSelf":"To samo okno (_self)","targetParent":"Okno nadrzędne (_parent)","langDirLTR":"Od lewej do prawej (LTR)","langDirRTL":"Od prawej do lewej (RTL)","styles":"Style","cssClasses":"Klasy arkusza stylów","width":"Szerokość","height":"Wysokość","align":"Wyrównaj","alignLeft":"Do lewej","alignRight":"Do prawej","alignCenter":"Do środka","alignTop":"Do góry","alignMiddle":"Do środka","alignBottom":"Do dołu","invalidValue":"Nieprawidłowa wartość.","invalidHeight":"Wysokość musi być liczbą.","invalidWidth":"Szerokość musi być liczbą.","invalidCssLength":"Wartość podana dla pola \"%1\" musi być liczbą dodatnią bez jednostki lub z poprawną jednostką długości zgodną z CSS (px, %, in, cm, mm, em, ex, pt lub pc).","invalidHtmlLength":"Wartość podana dla pola \"%1\" musi być liczbą dodatnią bez jednostki lub z poprawną jednostką długości zgodną z HTML (px lub %).","invalidInlineStyle":"Wartość podana dla stylu musi składać się z jednej lub większej liczby krotek w formacie \"nazwa : wartość\", rozdzielonych średnikami.","cssLengthTooltip":"Wpisz liczbę dla wartości w pikselach lub liczbę wraz z jednostką długości zgodną z CSS (px, %, in, cm, mm, em, ex, pt lub pc).","unavailable":"%1<span class=\"cke_accessibility\">, niedostępne</span>"},"about":{"copy":"Copyright &copy; $1. Wszelkie prawa zastrzeżone.","dlgTitle":"Informacje o programie CKEditor","help":"Pomoc znajdziesz w $1.","moreInfo":"Informacje na temat licencji można znaleźć na naszej stronie:","title":"Informacje o programie CKEditor","userGuide":"podręczniku użytkownika programu CKEditor"},"basicstyles":{"bold":"Pogrubienie","italic":"Kursywa","strike":"Przekreślenie","subscript":"Indeks dolny","superscript":"Indeks górny","underline":"Podkreślenie"},"blockquote":{"toolbar":"Cytat"},"clipboard":{"copy":"Kopiuj","copyError":"Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne kopiowanie tekstu. Użyj skrótu klawiszowego Ctrl/Cmd+C.","cut":"Wytnij","cutError":"Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne wycinanie tekstu. Użyj skrótu klawiszowego Ctrl/Cmd+X.","paste":"Wklej","pasteArea":"Obszar wklejania","pasteMsg":"Wklej tekst w poniższym polu, używając skrótu klawiaturowego (<STRONG>Ctrl/Cmd+V</STRONG>), i kliknij <STRONG>OK</STRONG>.","securityMsg":"Zabezpieczenia przeglądarki uniemożliwiają wklejenie danych bezpośrednio do edytora. Proszę ponownie wkleić dane w tym oknie.","title":"Wklej"},"contextmenu":{"options":"Opcje menu kontekstowego"},"toolbar":{"toolbarCollapse":"Zwiń pasek narzędzi","toolbarExpand":"Rozwiń pasek narzędzi","toolbarGroups":{"document":"Dokument","clipboard":"Schowek/Wstecz","editing":"Edycja","forms":"Formularze","basicstyles":"Style podstawowe","paragraph":"Akapit","links":"Hiperłącza","insert":"Wstawianie","styles":"Style","colors":"Kolory","tools":"Narzędzia"},"toolbars":"Paski narzędzi edytora"},"elementspath":{"eleLabel":"Ścieżka elementów","eleTitle":"element %1"},"format":{"label":"Format","panelTitle":"Format","tag_address":"Adres","tag_div":"Normalny (DIV)","tag_h1":"Nagłówek 1","tag_h2":"Nagłówek 2","tag_h3":"Nagłówek 3","tag_h4":"Nagłówek 4","tag_h5":"Nagłówek 5","tag_h6":"Nagłówek 6","tag_p":"Normalny","tag_pre":"Tekst sformatowany"},"horizontalrule":{"toolbar":"Wstaw poziomą linię"},"image":{"alertUrl":"Podaj adres obrazka.","alt":"Tekst zastępczy","border":"Obramowanie","btnUpload":"Wyślij","button2Img":"Czy chcesz przekonwertować zaznaczony przycisk graficzny do zwykłego obrazka?","hSpace":"Odstęp poziomy","img2Button":"Czy chcesz przekonwertować zaznaczony obrazek do przycisku graficznego?","infoTab":"Informacje o obrazku","linkTab":"Hiperłącze","lockRatio":"Zablokuj proporcje","menu":"Właściwości obrazka","resetSize":"Przywróć rozmiar","title":"Właściwości obrazka","titleButton":"Właściwości przycisku graficznego","upload":"Wyślij","urlMissing":"Podaj adres URL obrazka.","vSpace":"Odstęp pionowy","validateBorder":"Wartość obramowania musi być liczbą całkowitą.","validateHSpace":"Wartość odstępu poziomego musi być liczbą całkowitą.","validateVSpace":"Wartość odstępu pionowego musi być liczbą całkowitą."},"indent":{"indent":"Zwiększ wcięcie","outdent":"Zmniejsz wcięcie"},"fakeobjects":{"anchor":"Kotwica","flash":"Animacja Flash","hiddenfield":"Pole ukryte","iframe":"IFrame","unknown":"Nieznany obiekt"},"link":{"acccessKey":"Klawisz dostępu","advanced":"Zaawansowane","advisoryContentType":"Typ MIME obiektu docelowego","advisoryTitle":"Opis obiektu docelowego","anchor":{"toolbar":"Wstaw/edytuj kotwicę","menu":"Właściwości kotwicy","title":"Właściwości kotwicy","name":"Nazwa kotwicy","errorName":"Wpisz nazwę kotwicy","remove":"Usuń kotwicę"},"anchorId":"Wg identyfikatora","anchorName":"Wg nazwy","charset":"Kodowanie znaków obiektu docelowego","cssClasses":"Nazwa klasy CSS","emailAddress":"Adres e-mail","emailBody":"Treść","emailSubject":"Temat","id":"Id","info":"Informacje ","langCode":"Kod języka","langDir":"Kierunek tekstu","langDirLTR":"Od lewej do prawej (LTR)","langDirRTL":"Od prawej do lewej (RTL)","menu":"Edytuj odnośnik","name":"Nazwa","noAnchors":"(W dokumencie nie zdefiniowano żadnych kotwic)","noEmail":"Podaj adres e-mail","noUrl":"Podaj adres URL","other":"<inny>","popupDependent":"Okno zależne (Netscape)","popupFeatures":"Właściwości wyskakującego okna","popupFullScreen":"Pełny ekran (IE)","popupLeft":"Pozycja w poziomie","popupLocationBar":"Pasek adresu","popupMenuBar":"Pasek menu","popupResizable":"Skalowalny","popupScrollBars":"Paski przewijania","popupStatusBar":"Pasek statusu","popupToolbar":"Pasek narzędzi","popupTop":"Pozycja w pionie","rel":"Relacja","selectAnchor":"Wybierz kotwicę","styles":"Styl","tabIndex":"Indeks kolejności","target":"Obiekt docelowy","targetFrame":"<ramka>","targetFrameName":"Nazwa ramki docelowej","targetPopup":"<wyskakujące okno>","targetPopupName":"Nazwa wyskakującego okna","title":"Odnośnik","toAnchor":"Odnośnik wewnątrz strony (kotwica)","toEmail":"Adres e-mail","toUrl":"Adres URL","toolbar":"Wstaw/edytuj odnośnik","type":"Typ odnośnika","unlink":"Usuń odnośnik","upload":"Wyślij"},"list":{"bulletedlist":"Lista wypunktowana","numberedlist":"Lista numerowana"},"magicline":{"title":"Wstaw nowy akapit"},"maximize":{"maximize":"Maksymalizuj","minimize":"Minimalizuj"},"pastetext":{"button":"Wklej jako czysty tekst","title":"Wklej jako czysty tekst"},"pastefromword":{"confirmCleanup":"Tekst, który chcesz wkleić, prawdopodobnie pochodzi z programu Microsoft Word. Czy chcesz go wyczyścić przed wklejeniem?","error":"Wyczyszczenie wklejonych danych nie było możliwe z powodu wystąpienia błędu.","title":"Wklej z programu MS Word","toolbar":"Wklej z programu MS Word"},"removeformat":{"toolbar":"Usuń formatowanie"},"sourcearea":{"toolbar":"Źródło dokumentu"},"specialchar":{"options":"Opcje znaków specjalnych","title":"Wybierz znak specjalny","toolbar":"Wstaw znak specjalny"},"scayt":{"about":"Informacje o SCAYT","aboutTab":"Informacje o SCAYT","addWord":"Dodaj słowo","allCaps":"Ignoruj wyrazy pisane dużymi literami","dic_create":"Utwórz","dic_delete":"Usuń","dic_field_name":"Nazwa słownika","dic_info":"Początkowo słownik użytkownika przechowywany jest w cookie. Pliki cookie mają jednak ograniczoną pojemność. Jeśli słownik użytkownika przekroczy wielkość dopuszczalną dla pliku cookie, możliwe jest przechowanie go na naszym serwerze. W celu zapisania słownika na serwerze niezbędne jest nadanie mu nazwy. Jeśli słownik został już zapisany na serwerze, wystarczy podać jego nazwę i nacisnąć przycisk Przywróć.","dic_rename":"Zmień nazwę","dic_restore":"Przywróć","dictionariesTab":"Słowniki","disable":"Wyłącz SCAYT","emptyDic":"Nazwa słownika nie może być pusta.","enable":"Włącz SCAYT","ignore":"Ignoruj","ignoreAll":"Ignoruj wszystkie","ignoreDomainNames":"Ignoruj nazwy domen","langs":"Języki","languagesTab":"Języki","mixedCase":"Ignoruj wyrazy pisane dużymi i małymi literami","mixedWithDigits":"Ignoruj wyrazy zawierające cyfry","moreSuggestions":"Więcej sugestii","opera_title":"Funkcja nie jest obsługiwana przez przeglądarkę Opera","options":"Opcje","optionsTab":"Opcje","title":"Sprawdź pisownię podczas pisania (SCAYT)","toggle":"Przełącz SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"Styl","panelTitle":"Style formatujące","panelTitle1":"Style blokowe","panelTitle2":"Style liniowe","panelTitle3":"Style obiektowe"},"table":{"border":"Grubość obramowania","caption":"Tytuł","cell":{"menu":"Komórka","insertBefore":"Wstaw komórkę z lewej","insertAfter":"Wstaw komórkę z prawej","deleteCell":"Usuń komórki","merge":"Połącz komórki","mergeRight":"Połącz z komórką z prawej","mergeDown":"Połącz z komórką poniżej","splitHorizontal":"Podziel komórkę poziomo","splitVertical":"Podziel komórkę pionowo","title":"Właściwości komórki","cellType":"Typ komórki","rowSpan":"Scalenie wierszy","colSpan":"Scalenie komórek","wordWrap":"Zawijanie słów","hAlign":"Wyrównanie poziome","vAlign":"Wyrównanie pionowe","alignBaseline":"Linia bazowa","bgColor":"Kolor tła","borderColor":"Kolor obramowania","data":"Dane","header":"Nagłówek","yes":"Tak","no":"Nie","invalidWidth":"Szerokość komórki musi być liczbą.","invalidHeight":"Wysokość komórki musi być liczbą.","invalidRowSpan":"Scalenie wierszy musi być liczbą całkowitą.","invalidColSpan":"Scalenie komórek musi być liczbą całkowitą.","chooseColor":"Wybierz"},"cellPad":"Dopełnienie komórek","cellSpace":"Odstęp pomiędzy komórkami","column":{"menu":"Kolumna","insertBefore":"Wstaw kolumnę z lewej","insertAfter":"Wstaw kolumnę z prawej","deleteColumn":"Usuń kolumny"},"columns":"Liczba kolumn","deleteTable":"Usuń tabelę","headers":"Nagłówki","headersBoth":"Oba","headersColumn":"Pierwsza kolumna","headersNone":"Brak","headersRow":"Pierwszy wiersz","invalidBorder":"Wartość obramowania musi być liczbą.","invalidCellPadding":"Dopełnienie komórek musi być liczbą dodatnią.","invalidCellSpacing":"Odstęp pomiędzy komórkami musi być liczbą dodatnią.","invalidCols":"Liczba kolumn musi być większa niż 0.","invalidHeight":"Wysokość tabeli musi być liczbą.","invalidRows":"Liczba wierszy musi być większa niż 0.","invalidWidth":"Szerokość tabeli musi być liczbą.","menu":"Właściwości tabeli","row":{"menu":"Wiersz","insertBefore":"Wstaw wiersz powyżej","insertAfter":"Wstaw wiersz poniżej","deleteRow":"Usuń wiersze"},"rows":"Liczba wierszy","summary":"Podsumowanie","title":"Właściwości tabeli","toolbar":"Tabela","widthPc":"%","widthPx":"piksele","widthUnit":"jednostka szerokości"},"undo":{"redo":"Ponów","undo":"Cofnij"},"wsc":{"btnIgnore":"Ignoruj","btnIgnoreAll":"Ignoruj wszystkie","btnReplace":"Zmień","btnReplaceAll":"Zmień wszystkie","btnUndo":"Cofnij","changeTo":"Zmień na","errorLoading":"Błąd wczytywania hosta aplikacji usługi: %s.","ieSpellDownload":"Słownik nie jest zainstalowany. Czy chcesz go pobrać?","manyChanges":"Sprawdzanie zakończone: zmieniono %l słów","noChanges":"Sprawdzanie zakończone: nie zmieniono żadnego słowa","noMispell":"Sprawdzanie zakończone: nie znaleziono błędów","noSuggestions":"- Brak sugestii -","notAvailable":"Przepraszamy, ale usługa jest obecnie niedostępna.","notInDic":"Słowa nie ma w słowniku","oneChange":"Sprawdzanie zakończone: zmieniono jedno słowo","progress":"Trwa sprawdzanie...","title":"Sprawdź pisownię","toolbar":"Sprawdź pisownię"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/pt-br.js b/assets/plugins/ckeditor/lang/pt-br.js deleted file mode 100644 index c7373ceb..00000000 --- a/assets/plugins/ckeditor/lang/pt-br.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['pt-br']={"editor":"Editor de Rich Text","editorPanel":"Painel do editor de Rich Text","common":{"editorHelp":"Pressione ALT+0 para ajuda","browseServer":"Localizar no Servidor","url":"URL","protocol":"Protocolo","upload":"Enviar ao Servidor","uploadSubmit":"Enviar para o Servidor","image":"Imagem","flash":"Flash","form":"Formulário","checkbox":"Caixa de Seleção","radio":"Botão de Opção","textField":"Caixa de Texto","textarea":"Área de Texto","hiddenField":"Campo Oculto","button":"Botão","select":"Caixa de Listagem","imageButton":"Botão de Imagem","notSet":"<não ajustado>","id":"Id","name":"Nome","langDir":"Direção do idioma","langDirLtr":"Esquerda para Direita (LTR)","langDirRtl":"Direita para Esquerda (RTL)","langCode":"Idioma","longDescr":"Descrição da URL","cssClass":"Classe de CSS","advisoryTitle":"Título","cssStyle":"Estilos","ok":"OK","cancel":"Cancelar","close":"Fechar","preview":"Visualizar","resize":"Arraste para redimensionar","generalTab":"Geral","advancedTab":"Avançado","validateNumberFailed":"Este valor não é um número.","confirmNewPage":"Todas as mudanças não salvas serão perdidas. Tem certeza de que quer abrir uma nova página?","confirmCancel":"Algumas opções foram alteradas. Tem certeza de que quer fechar a caixa de diálogo?","options":"Opções","target":"Destino","targetNew":"Nova Janela (_blank)","targetTop":"Janela de Cima (_top)","targetSelf":"Mesma Janela (_self)","targetParent":"Janela Pai (_parent)","langDirLTR":"Esquerda para Direita (LTR)","langDirRTL":"Direita para Esquerda (RTL)","styles":"Estilo","cssClasses":"Classes","width":"Largura","height":"Altura","align":"Alinhamento","alignLeft":"Esquerda","alignRight":"Direita","alignCenter":"Centralizado","alignTop":"Superior","alignMiddle":"Centralizado","alignBottom":"Inferior","invalidValue":"Valor inválido.","invalidHeight":"A altura tem que ser um número","invalidWidth":"A largura tem que ser um número.","invalidCssLength":"O valor do campo \"%1\" deve ser um número positivo opcionalmente seguido por uma válida unidade de medida de CSS (px, %, in, cm, mm, em, ex, pt ou pc).","invalidHtmlLength":"O valor do campo \"%1\" deve ser um número positivo opcionalmente seguido por uma válida unidade de medida de HTML (px ou %).","invalidInlineStyle":"O valor válido para estilo deve conter uma ou mais tuplas no formato \"nome : valor\", separados por ponto e vírgula.","cssLengthTooltip":"Insira um número para valor em pixels ou um número seguido de uma válida unidade de medida de CSS (px, %, in, cm, mm, em, ex, pt ou pc).","unavailable":"%1<span class=\"cke_accessibility\">, indisponível</span>"},"about":{"copy":"Copyright &copy; $1. Todos os direitos reservados.","dlgTitle":"Sobre o CKEditor","help":"Verifique o $1 para obter ajuda.","moreInfo":"Para informações sobre a licença por favor visite o nosso site:","title":"Sobre o CKEditor","userGuide":"Guia do Usuário do CKEditor"},"basicstyles":{"bold":"Negrito","italic":"Itálico","strike":"Tachado","subscript":"Subscrito","superscript":"Sobrescrito","underline":"Sublinhado"},"blockquote":{"toolbar":"Citação"},"clipboard":{"copy":"Copiar","copyError":"As configurações de segurança do seu navegador não permitem que o editor execute operações de copiar automaticamente. Por favor, utilize o teclado para copiar (Ctrl/Cmd+C).","cut":"Recortar","cutError":"As configurações de segurança do seu navegador não permitem que o editor execute operações de recortar automaticamente. Por favor, utilize o teclado para recortar (Ctrl/Cmd+X).","paste":"Colar","pasteArea":"Área para Colar","pasteMsg":"Transfira o link usado na caixa usando o teclado com (<STRONG>Ctrl/Cmd+V</STRONG>) e <STRONG>OK</STRONG>.","securityMsg":"As configurações de segurança do seu navegador não permitem que o editor acesse os dados da área de transferência diretamente. Por favor cole o conteúdo manualmente nesta janela.","title":"Colar"},"contextmenu":{"options":"Opções Menu de Contexto"},"toolbar":{"toolbarCollapse":"Diminuir Barra de Ferramentas","toolbarExpand":"Aumentar Barra de Ferramentas","toolbarGroups":{"document":"Documento","clipboard":"Clipboard/Desfazer","editing":"Edição","forms":"Formulários","basicstyles":"Estilos Básicos","paragraph":"Paragrafo","links":"Links","insert":"Inserir","styles":"Estilos","colors":"Cores","tools":"Ferramentas"},"toolbars":"Barra de Ferramentas do Editor"},"elementspath":{"eleLabel":"Caminho dos Elementos","eleTitle":"Elemento %1"},"format":{"label":"Formatação","panelTitle":"Formatação","tag_address":"Endereço","tag_div":"Normal (DIV)","tag_h1":"Título 1","tag_h2":"Título 2","tag_h3":"Título 3","tag_h4":"Título 4","tag_h5":"Título 5","tag_h6":"Título 6","tag_p":"Normal","tag_pre":"Formatado"},"horizontalrule":{"toolbar":"Inserir Linha Horizontal"},"image":{"alertUrl":"Por favor, digite a URL da imagem.","alt":"Texto Alternativo","border":"Borda","btnUpload":"Enviar para o Servidor","button2Img":"Deseja transformar o botão de imagem em uma imagem comum?","hSpace":"HSpace","img2Button":"Deseja transformar a imagem em um botão de imagem?","infoTab":"Informações da Imagem","linkTab":"Link","lockRatio":"Travar Proporções","menu":"Formatar Imagem","resetSize":"Redefinir para o Tamanho Original","title":"Formatar Imagem","titleButton":"Formatar Botão de Imagem","upload":"Enviar","urlMissing":"URL da imagem está faltando.","vSpace":"VSpace","validateBorder":"A borda deve ser um número inteiro.","validateHSpace":"O HSpace deve ser um número inteiro.","validateVSpace":"O VSpace deve ser um número inteiro."},"indent":{"indent":"Aumentar Recuo","outdent":"Diminuir Recuo"},"fakeobjects":{"anchor":"Âncora","flash":"Animação em Flash","hiddenfield":"Campo Oculto","iframe":"IFrame","unknown":"Objeto desconhecido"},"link":{"acccessKey":"Chave de Acesso","advanced":"Avançado","advisoryContentType":"Tipo de Conteúdo","advisoryTitle":"Título","anchor":{"toolbar":"Inserir/Editar Âncora","menu":"Formatar Âncora","title":"Formatar Âncora","name":"Nome da Âncora","errorName":"Por favor, digite o nome da âncora","remove":"Remover Âncora"},"anchorId":"Id da âncora","anchorName":"Nome da âncora","charset":"Charset do Link","cssClasses":"Classe de CSS","emailAddress":"Endereço E-Mail","emailBody":"Corpo da Mensagem","emailSubject":"Assunto da Mensagem","id":"Id","info":"Informações","langCode":"Direção do idioma","langDir":"Direção do idioma","langDirLTR":"Esquerda para Direita (LTR)","langDirRTL":"Direita para Esquerda (RTL)","menu":"Editar Link","name":"Nome","noAnchors":"(Não há âncoras no documento)","noEmail":"Por favor, digite o endereço de e-mail","noUrl":"Por favor, digite o endereço do Link","other":"<outro>","popupDependent":"Dependente (Netscape)","popupFeatures":"Propriedades da Janela Pop-up","popupFullScreen":"Modo Tela Cheia (IE)","popupLeft":"Esquerda","popupLocationBar":"Barra de Endereços","popupMenuBar":"Barra de Menus","popupResizable":"Redimensionável","popupScrollBars":"Barras de Rolagem","popupStatusBar":"Barra de Status","popupToolbar":"Barra de Ferramentas","popupTop":"Topo","rel":"Tipo de Relação","selectAnchor":"Selecione uma âncora","styles":"Estilos","tabIndex":"Índice de Tabulação","target":"Destino","targetFrame":"<frame>","targetFrameName":"Nome do Frame de Destino","targetPopup":"<janela popup>","targetPopupName":"Nome da Janela Pop-up","title":"Editar Link","toAnchor":"Âncora nesta página","toEmail":"E-Mail","toUrl":"URL","toolbar":"Inserir/Editar Link","type":"Tipo de hiperlink","unlink":"Remover Link","upload":"Enviar ao Servidor"},"list":{"bulletedlist":"Lista sem números","numberedlist":"Lista numerada"},"magicline":{"title":"Insera um parágrafo aqui"},"maximize":{"maximize":"Maximizar","minimize":"Minimize"},"pastetext":{"button":"Colar como Texto sem Formatação","title":"Colar como Texto sem Formatação"},"pastefromword":{"confirmCleanup":"O texto que você deseja colar parece ter sido copiado do Word. Você gostaria de remover a formatação antes de colar?","error":"Não foi possível limpar os dados colados devido a um erro interno","title":"Colar do Word","toolbar":"Colar do Word"},"removeformat":{"toolbar":"Remover Formatação"},"sourcearea":{"toolbar":"Código-Fonte"},"specialchar":{"options":"Opções de Caractere Especial","title":"Selecione um Caractere Especial","toolbar":"Inserir Caractere Especial"},"scayt":{"about":"Sobre a correção ortográfica durante a digitação","aboutTab":"Sobre","addWord":"Adicionar palavra","allCaps":"Ignorar palavras maiúsculas","dic_create":"Criar","dic_delete":"Excluir","dic_field_name":"Nome do Dicionário","dic_info":"Inicialmente, o dicionário do usuário fica armazenado em um Cookie. Porém, Cookies tem tamanho limitado, portanto quand o dicionário do usuário atingir o tamanho limite poderá ser armazenado no nosso servidor. Para armazenar seu dicionário pessoal no nosso servidor deverá especificar um nome para ele. Se já tiver um dicionário armazenado por favor especifique o seu nome e clique em Restaurar.","dic_rename":"Renomear","dic_restore":"Restaurar","dictionariesTab":"Dicionários","disable":"Desabilitar correção ortográfica durante a digitação","emptyDic":"O nome do dicionário não deveria estar vazio.","enable":"Habilitar correção ortográfica durante a digitação","ignore":"Ignorar","ignoreAll":"Ignorar todas","ignoreDomainNames":"Ignorar nomes de domínio","langs":"Idiomas","languagesTab":"Idiomas","mixedCase":"Ignorar palavras com maiúsculas e minúsculas misturadas","mixedWithDigits":"Ignorar palavras com números","moreSuggestions":"Mais sugestões","opera_title":"Não suportado no Opera","options":"Opções","optionsTab":"Opções","title":"Correção ortográfica durante a digitação","toggle":"Ativar/desativar correção ortográfica durante a digitação","noSuggestions":"No suggestion"},"stylescombo":{"label":"Estilo","panelTitle":"Estilos de Formatação","panelTitle1":"Estilos de bloco","panelTitle2":"Estilos de texto corrido","panelTitle3":"Estilos de objeto"},"table":{"border":"Borda","caption":"Legenda","cell":{"menu":"Célula","insertBefore":"Inserir célula a esquerda","insertAfter":"Inserir célula a direita","deleteCell":"Remover Células","merge":"Mesclar Células","mergeRight":"Mesclar com célula a direita","mergeDown":"Mesclar com célula abaixo","splitHorizontal":"Dividir célula horizontalmente","splitVertical":"Dividir célula verticalmente","title":"Propriedades da célula","cellType":"Tipo de célula","rowSpan":"Linhas cobertas","colSpan":"Colunas cobertas","wordWrap":"Quebra de palavra","hAlign":"Alinhamento horizontal","vAlign":"Alinhamento vertical","alignBaseline":"Patamar de alinhamento","bgColor":"Cor de fundo","borderColor":"Cor das bordas","data":"Dados","header":"Cabeçalho","yes":"Sim","no":"Não","invalidWidth":"A largura da célula tem que ser um número.","invalidHeight":"A altura da célula tem que ser um número.","invalidRowSpan":"Linhas cobertas tem que ser um número inteiro.","invalidColSpan":"Colunas cobertas tem que ser um número inteiro.","chooseColor":"Escolher"},"cellPad":"Margem interna","cellSpace":"Espaçamento","column":{"menu":"Coluna","insertBefore":"Inserir coluna a esquerda","insertAfter":"Inserir coluna a direita","deleteColumn":"Remover Colunas"},"columns":"Colunas","deleteTable":"Apagar Tabela","headers":"Cabeçalho","headersBoth":"Ambos","headersColumn":"Primeira coluna","headersNone":"Nenhum","headersRow":"Primeira linha","invalidBorder":"O tamanho da borda tem que ser um número.","invalidCellPadding":"A margem interna das células tem que ser um número.","invalidCellSpacing":"O espaçamento das células tem que ser um número.","invalidCols":"O número de colunas tem que ser um número maior que 0.","invalidHeight":"A altura da tabela tem que ser um número.","invalidRows":"O número de linhas tem que ser um número maior que 0.","invalidWidth":"A largura da tabela tem que ser um número.","menu":"Formatar Tabela","row":{"menu":"Linha","insertBefore":"Inserir linha acima","insertAfter":"Inserir linha abaixo","deleteRow":"Remover Linhas"},"rows":"Linhas","summary":"Resumo","title":"Formatar Tabela","toolbar":"Tabela","widthPc":"%","widthPx":"pixels","widthUnit":"unidade largura"},"undo":{"redo":"Refazer","undo":"Desfazer"},"wsc":{"btnIgnore":"Ignorar uma vez","btnIgnoreAll":"Ignorar Todas","btnReplace":"Alterar","btnReplaceAll":"Alterar Todas","btnUndo":"Desfazer","changeTo":"Alterar para","errorLoading":"Erro carregando servidor de aplicação: %s.","ieSpellDownload":"A verificação ortográfica não foi instalada. Você gostaria de realizar o download agora?","manyChanges":"Verificação ortográfica encerrada: %1 palavras foram alteradas","noChanges":"Verificação ortográfica encerrada: Não houve alterações","noMispell":"Verificação encerrada: Não foram encontrados erros de ortografia","noSuggestions":"-sem sugestões de ortografia-","notAvailable":"Desculpe, o serviço não está disponível no momento.","notInDic":"Não encontrada","oneChange":"Verificação ortográfica encerrada: Uma palavra foi alterada","progress":"Verificação ortográfica em andamento...","title":"Corretor Ortográfico","toolbar":"Verificar Ortografia"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/pt.js b/assets/plugins/ckeditor/lang/pt.js deleted file mode 100644 index 1ace58ca..00000000 --- a/assets/plugins/ckeditor/lang/pt.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['pt']={"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Pressione ALT+0 para ajuda","browseServer":"Explorar Servidor","url":"URL","protocol":"Protocolo","upload":"Enviar","uploadSubmit":"Enviar para o Servidor","image":"Imagem","flash":"Flash","form":"Formulário","checkbox":"Caixa de Seleção","radio":"Botão de Opção","textField":"Campo de Texto","textarea":"Área de Texto","hiddenField":"Campo Ocultado","button":"Botão","select":"Campo de Seleção","imageButton":"Botão de Imagem","notSet":"<Não definido>","id":"Id.","name":"Nome","langDir":"Orientação do Idioma","langDirLtr":"Esquerda para a Direita (EPD)","langDirRtl":"Direita para a Esquerda (DPE)","langCode":"Código de Idioma","longDescr":"Descrição Completa do URL","cssClass":"Classes de Estilo de Folhas","advisoryTitle":"Título Consultivo","cssStyle":"Estilo","ok":"OK","cancel":"Cancelar","close":"Fechar","preview":"Pré-visualização","resize":"Redimensionar","generalTab":"Geral","advancedTab":"Avançado","validateNumberFailed":"Este valor não é um numero.","confirmNewPage":"Irão ser perdidas quaisquer alterações não guardadas. Tem certeza que deseja carregar a página nova?","confirmCancel":"Foram alteradas algumas das opções. Tem a certeza que deseja fechar a janela?","options":"Opções","target":"Destino","targetNew":"Nova Janela (_blank)","targetTop":"Janela Superior (_top)","targetSelf":"Mesma Janela (_self)","targetParent":"Janela Parente (_parent)","langDirLTR":"Esquerda para a Direita (EPD)","langDirRTL":"Direita para a Esquerda (DPE)","styles":"Estilo","cssClasses":"Classes de Estilo de Folhas","width":"Largura","height":"Altura","align":"Alinhamento","alignLeft":"Esquerda","alignRight":"Direita","alignCenter":"Centrado","alignTop":"Topo","alignMiddle":"Centro","alignBottom":"Fundo","invalidValue":"Valor inválido.","invalidHeight":"A altura tem de ser um número.","invalidWidth":"A largura tem de ser um número. ","invalidCssLength":"Valor especificado para o campo \"1%\" deve ser um número positivo, com ou sem uma unidade de medida CSS válida (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Valor especificado para o campo \"1%\" deve ser um número positivo, com ou sem uma unidade de medida HTML válida (px ou %).","invalidInlineStyle":"Valor especificado para o estilo em embutido deve ser constituído por uma ou mais tuplas com o formato de \"nome : valor\", separados por ponto e vírgula.","cssLengthTooltip":"Digite um número para um valor em pixels ou um número com uma unidade CSS válida (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, indisponível</span>"},"about":{"copy":"Direitos de Autor &copy; $1. Todos os direitos reservados.","dlgTitle":"Sobre o CKEditor","help":"Doar $1 para ajudar.","moreInfo":"Para informação sobre o licenciamento, visite o nosso site da web:","title":"Sobre o CKEditor","userGuide":"CKEditor - Guia do Utilizador"},"basicstyles":{"bold":"Negrito","italic":"Itálico","strike":"Rasurado","subscript":"Superior à Linha","superscript":"Inferior à Linha","underline":"Sublinhado"},"blockquote":{"toolbar":"Bloco de citação"},"clipboard":{"copy":"Copiar","copyError":"A configuração de segurança do navegador não permite a execução automática de operações de copiar. Por favor use o teclado (Ctrl/Cmd+C).","cut":"Cortar","cutError":"A configuração de segurança do navegador não permite a execução automática de operações de cortar. Por favor use o teclado (Ctrl/Cmd+X).","paste":"Colar","pasteArea":"Colar Área","pasteMsg":"Por favor, cole dentro da seguinte caixa usando o teclado (<STRONG>Ctrl/Cmd+V</STRONG>) e prima <STRONG>OK</STRONG>.","securityMsg":"Devido ás definições de segurança do teu browser, o editor não pode aceder ao clipboard diretamente. É necessário que voltes a colar as informações nesta janela.","title":"Colar"},"contextmenu":{"options":"Menu de opções de contexto"},"toolbar":{"toolbarCollapse":"Colapsar Barra","toolbarExpand":"Expandir Barra","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor de barras de ferramentas"},"elementspath":{"eleLabel":"Camninho dos Elementos","eleTitle":"Elemento %1"},"format":{"label":"Formatar","panelTitle":"Formatar Parágrafo","tag_address":"Endereço","tag_div":"Normal (DIV)","tag_h1":"Título 1","tag_h2":"Título 2","tag_h3":"Título 3","tag_h4":"Título 4","tag_h5":"Título 5","tag_h6":"Título 6","tag_p":"Normal","tag_pre":"Formatado"},"horizontalrule":{"toolbar":"Inserir Linha Horizontal"},"image":{"alertUrl":"Por favor introduza o URL da imagem","alt":"Texto Alternativo","border":"Limite","btnUpload":"Enviar para o Servidor","button2Img":"Deseja transformar o botão com imagem selecionado em uma imagem?","hSpace":"Esp.Horiz","img2Button":"Deseja transformar a imagem selecionada em um botão com imagem?","infoTab":"Informação da Imagem","linkTab":"Hiperligação","lockRatio":"Proporcional","menu":"Propriedades da Imagem","resetSize":"Tamanho Original","title":"Propriedades da Imagem","titleButton":"Propriedades do Botão de imagens","upload":"Carregar","urlMissing":"O URL da fonte da imagem está em falta.","vSpace":"Esp.Vert","validateBorder":"A borda tem de ser um numero.","validateHSpace":"HSpace tem de ser um numero.","validateVSpace":"VSpace tem de ser um numero."},"indent":{"indent":"Aumentar Avanço","outdent":"Diminuir Avanço"},"fakeobjects":{"anchor":" Inserir/Editar Âncora","flash":"Animação Flash","hiddenfield":"Campo Ocultado","iframe":"IFrame","unknown":"Objeto Desconhecido"},"link":{"acccessKey":"Chave de Acesso","advanced":"Avançado","advisoryContentType":"Tipo de Conteúdo","advisoryTitle":"Título","anchor":{"toolbar":" Inserir/Editar Âncora","menu":"Propriedades da Âncora","title":"Propriedades da Âncora","name":"Nome da Âncora","errorName":"Por favor, introduza o nome da âncora","remove":"Remove Anchor"},"anchorId":"Por ID de elemento","anchorName":"Por Nome de Referência","charset":"Fonte de caracteres vinculado","cssClasses":"Classes de Estilo de Folhas Classes","emailAddress":"Endereço de E-Mail","emailBody":"Corpo da Mensagem","emailSubject":"Título de Mensagem","id":"ID","info":"Informação de Hiperligação","langCode":"Orientação de idioma","langDir":"Orientação de idioma","langDirLTR":"Esquerda à Direita (LTR)","langDirRTL":"Direita a Esquerda (RTL)","menu":"Editar Hiperligação","name":"Nome","noAnchors":"(Não há referências disponíveis no documento)","noEmail":"Por favor introduza o endereço de e-mail","noUrl":"Por favor introduza a hiperligação URL","other":"<outro>","popupDependent":"Dependente (Netscape)","popupFeatures":"Características de Janela de Popup","popupFullScreen":"Janela Completa (IE)","popupLeft":"Posição Esquerda","popupLocationBar":"Barra de localização","popupMenuBar":"Barra de Menu","popupResizable":"Redimensionável","popupScrollBars":"Barras de deslocamento","popupStatusBar":"Barra de Estado","popupToolbar":"Barra de Ferramentas","popupTop":"Posição Direita","rel":"Relação","selectAnchor":"Seleccionar una referência","styles":"Estilo","tabIndex":"Índice de Tubulação","target":"Destino","targetFrame":"<Frame>","targetFrameName":"Nome do Frame Destino","targetPopup":"<Janela de popup>","targetPopupName":"Nome da Janela de Popup","title":"Hiperligação","toAnchor":"Referência a esta página","toEmail":"E-Mail","toUrl":"URL","toolbar":"Inserir/Editar Hiperligação","type":"Tipo de Hiperligação","unlink":"Eliminar Hiperligação","upload":"Carregar"},"list":{"bulletedlist":"Marcas","numberedlist":"Numeração"},"magicline":{"title":"Insira aqui o parágrafo"},"maximize":{"maximize":"Maximizar","minimize":"Minimizar"},"pastetext":{"button":"Colar como Texto Simples","title":"Colar como Texto Simples"},"pastefromword":{"confirmCleanup":"O texto que pretende colar parece ter sido copiado do Word. Deseja limpá-lo antes de colar?","error":"Não foi possivel limpar a informação colada decido a um erro interno.","title":"Colar do Word","toolbar":"Colar do Word"},"removeformat":{"toolbar":"Eliminar Formato"},"sourcearea":{"toolbar":"Fonte"},"specialchar":{"options":"Opções de caracteres especiais","title":"Selecione um caracter especial","toolbar":"Inserir Caracter Especial"},"scayt":{"about":"About SCAYT","aboutTab":"About","addWord":"Add Word","allCaps":"Ignore All-Caps Words","dic_create":"Create","dic_delete":"Delete","dic_field_name":"Dictionary name","dic_info":"Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.","dic_rename":"Rename","dic_restore":"Restore","dictionariesTab":"Dictionaries","disable":"Disable SCAYT","emptyDic":"Dictionary name should not be empty.","enable":"Enable SCAYT","ignore":"Ignore","ignoreAll":"Ignore All","ignoreDomainNames":"Ignore Domain Names","langs":"Languages","languagesTab":"Languages","mixedCase":"Ignore Words with Mixed Case","mixedWithDigits":"Ignore Words with Numbers","moreSuggestions":"More suggestions","opera_title":"Not supported by Opera","options":"Options","optionsTab":"Options","title":"Spell Check As You Type","toggle":"Toggle SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"Estilo","panelTitle":"Estilos de Formatação","panelTitle1":"Estilos de Bloco","panelTitle2":"Estilos de Linha","panelTitle3":"Estilos de Objeto"},"table":{"border":"Tamanho da Margem","caption":"Título","cell":{"menu":"Célula","insertBefore":"Inserir Célula Antes","insertAfter":"Inserir Célula Depois","deleteCell":"Eliminar Célula","merge":"Unir Células","mergeRight":"Unir à Direita","mergeDown":"Unir abaixo","splitHorizontal":"Dividir Célula Horizontalmente","splitVertical":"Dividir Célula Verticalmente","title":"Propriedades da Célula","cellType":"Tipo de Célula","rowSpan":"Filas na Célula","colSpan":"Colunas na Célula","wordWrap":"Continuar","hAlign":"Alinhamento Horizontal","vAlign":"Alinhamento Vertical","alignBaseline":"Base","bgColor":"Cor de Fundo","borderColor":"Cor da Margem","data":"Dados","header":"Cabeçalho","yes":"Sim","no":"Não","invalidWidth":"A largura da célula deve ser um número.","invalidHeight":"A altura da célula deve ser um número.","invalidRowSpan":"As filas da célula deve ter um número inteiro.","invalidColSpan":"As colunas da célula deve ter um número inteiro.","chooseColor":"Escolher"},"cellPad":"Criação de Espaço","cellSpace":"Espaçamento Célula","column":{"menu":"Coluna","insertBefore":"Inserir Coluna Antes","insertAfter":"Inserir Coluna Depois","deleteColumn":"Apagar Colunas"},"columns":"Colunas","deleteTable":"Apagar Tabela","headers":"Cabeçalhos","headersBoth":"Ambos","headersColumn":"Primeira coluna","headersNone":"Nenhum","headersRow":"Primeira Linha","invalidBorder":"O tamanho da borda tem de ser um número.","invalidCellPadding":"A criação do espaço na célula deve ser um número positivo.","invalidCellSpacing":"O espaçamento da célula deve ser um número positivo.","invalidCols":"O número de colunas tem de ser um número maior que 0.","invalidHeight":"A altura da tabela tem de ser um número.","invalidRows":"O número das linhas tem de ser um número maior que 0.","invalidWidth":"A largura da tabela tem de ser um número.","menu":"Propriedades da Tabela","row":{"menu":"Linha","insertBefore":"Inserir Linha Antes","insertAfter":"Inserir Linha Depois","deleteRow":"Apagar Linhas"},"rows":"Linhas","summary":"Sumário","title":"Propriedades da Tabela","toolbar":"Tabela","widthPc":"percentagem","widthPx":"pixels","widthUnit":"unidade da largura"},"undo":{"redo":"Repetir","undo":"Anular"},"wsc":{"btnIgnore":"Ignorar","btnIgnoreAll":"Ignorar Tudo","btnReplace":"Substituir","btnReplaceAll":"Substituir Tudo","btnUndo":"Anular","changeTo":"Mudar para","errorLoading":"Error loading application service host: %s.","ieSpellDownload":" Verificação ortográfica não instalada. Quer descarregar agora?","manyChanges":"Verificação ortográfica completa: %1 palavras alteradas","noChanges":"Verificação ortográfica completa: não houve alteração de palavras","noMispell":"Verificação ortográfica completa: não foram encontrados erros","noSuggestions":"- Sem sugestões -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Não está num directório","oneChange":"Verificação ortográfica completa: uma palavra alterada","progress":"Verificação ortográfica em progresso…","title":"Spell Check","toolbar":"Verificação Ortográfica"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/ro.js b/assets/plugins/ckeditor/lang/ro.js deleted file mode 100644 index 11991e7c..00000000 --- a/assets/plugins/ckeditor/lang/ro.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['ro']={"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Apasă ALT 0 pentru ajutor","browseServer":"Răsfoieşte server","url":"URL","protocol":"Protocol","upload":"Încarcă","uploadSubmit":"Trimite la server","image":"Imagine","flash":"Flash","form":"Formular (Form)","checkbox":"Bifă (Checkbox)","radio":"Buton radio (RadioButton)","textField":"Câmp text (TextField)","textarea":"Suprafaţă text (Textarea)","hiddenField":"Câmp ascuns (HiddenField)","button":"Buton","select":"Câmp selecţie (SelectionField)","imageButton":"Buton imagine (ImageButton)","notSet":"<nesetat>","id":"Id","name":"Nume","langDir":"Direcţia cuvintelor","langDirLtr":"stânga-dreapta (LTR)","langDirRtl":"dreapta-stânga (RTL)","langCode":"Codul limbii","longDescr":"Descrierea lungă URL","cssClass":"Clasele cu stilul paginii (CSS)","advisoryTitle":"Titlul consultativ","cssStyle":"Stil","ok":"OK","cancel":"Anulare","close":"Închide","preview":"Previzualizare","resize":"Trage pentru a redimensiona","generalTab":"General","advancedTab":"Avansat","validateNumberFailed":"Această valoare nu este un număr.","confirmNewPage":"Orice modificări nesalvate ale acestui conținut, vor fi pierdute. Sigur doriți încărcarea unei noi pagini?","confirmCancel":"Câteva opțiuni au fost schimbate. Sigur doriți să închideți dialogul?","options":"Opțiuni","target":"Țintă","targetNew":"Fereastră nouă (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"În aceeași fereastră (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Stânga spre Dreapta (LTR)","langDirRTL":"Dreapta spre Stânga (RTL)","styles":"Stil","cssClasses":"Stylesheet Classes","width":"Lăţime","height":"Înălţime","align":"Aliniere","alignLeft":"Mărește Bara","alignRight":"Dreapta","alignCenter":"Centru","alignTop":"Sus","alignMiddle":"Mijloc","alignBottom":"Jos","invalidValue":"Varloare invalida","invalidHeight":"Înălțimea trebuie să fie un număr.","invalidWidth":"Lățimea trebuie să fie un număr.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, nu este disponibil</span>"},"about":{"copy":"Copyright &copy; $1. All rights reserved.","dlgTitle":"About CKEditor","help":"Check $1 for help.","moreInfo":"For licensing information please visit our web site:","title":"About CKEditor","userGuide":"CKEditor User's Guide"},"basicstyles":{"bold":"Îngroşat (bold)","italic":"Înclinat (italic)","strike":"Tăiat (strike through)","subscript":"Indice (subscript)","superscript":"Putere (superscript)","underline":"Subliniat (underline)"},"blockquote":{"toolbar":"Citat"},"clipboard":{"copy":"Copiază","copyError":"Setările de securitate ale navigatorului (browser) pe care îl folosiţi nu permit editorului să execute automat operaţiunea de copiere. Vă rugăm folosiţi tastatura (Ctrl/Cmd+C).","cut":"Taie","cutError":"Setările de securitate ale navigatorului (browser) pe care îl folosiţi nu permit editorului să execute automat operaţiunea de tăiere. Vă rugăm folosiţi tastatura (Ctrl/Cmd+X).","paste":"Adaugă","pasteArea":"Suprafața de adăugare","pasteMsg":"Vă rugăm adăugaţi în căsuţa următoare folosind tastatura (<strong>Ctrl/Cmd+V</strong>) şi apăsaţi OK","securityMsg":"Din cauza setărilor de securitate ale programului dvs. cu care navigaţi pe internet (browser), editorul nu poate accesa direct datele din clipboard. Va trebui să adăugaţi din nou datele în această fereastră.","title":"Adaugă"},"contextmenu":{"options":"Opțiuni Meniu Contextual"},"toolbar":{"toolbarCollapse":"Micșorează Bara","toolbarExpand":"Mărește Bara","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editează bara de unelte"},"elementspath":{"eleLabel":"Calea elementelor","eleTitle":"%1 element"},"format":{"label":"Formatare","panelTitle":"Formatare","tag_address":"Adresă","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatat"},"horizontalrule":{"toolbar":"Inserează linie orizontală"},"image":{"alertUrl":"Vă rugăm să scrieţi URL-ul imaginii","alt":"Text alternativ","border":"Margine","btnUpload":"Trimite la server","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"HSpace","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"Informaţii despre imagine","linkTab":"Link (Legătură web)","lockRatio":"Păstrează proporţiile","menu":"Proprietăţile imaginii","resetSize":"Resetează mărimea","title":"Proprietăţile imaginii","titleButton":"Proprietăţi buton imagine (Image Button)","upload":"Încarcă","urlMissing":"Sursa URL a imaginii lipsește.","vSpace":"VSpace","validateBorder":"Bordura trebuie să fie un număr întreg.","validateHSpace":"Hspace trebuie să fie un număr întreg.","validateVSpace":"Vspace trebuie să fie un număr întreg."},"indent":{"indent":"Creşte indentarea","outdent":"Scade indentarea"},"fakeobjects":{"anchor":"Inserează/Editează ancoră","flash":"Flash Animation","hiddenfield":"Câmp ascuns (HiddenField)","iframe":"IFrame","unknown":"Unknown Object"},"link":{"acccessKey":"Tasta de acces","advanced":"Avansat","advisoryContentType":"Tipul consultativ al titlului","advisoryTitle":"Titlul consultativ","anchor":{"toolbar":"Inserează/Editează ancoră","menu":"Proprietăţi ancoră","title":"Proprietăţi ancoră","name":"Numele ancorei","errorName":"Vă rugăm scrieţi numele ancorei","remove":"Elimină ancora"},"anchorId":"după Id-ul elementului","anchorName":"după numele ancorei","charset":"Setul de caractere al resursei legate","cssClasses":"Clasele cu stilul paginii (CSS)","emailAddress":"Adresă de e-mail","emailBody":"Opțiuni Meniu Contextual","emailSubject":"Subiectul mesajului","id":"Id","info":"Informaţii despre link (Legătură web)","langCode":"Direcţia cuvintelor","langDir":"Direcţia cuvintelor","langDirLTR":"stânga-dreapta (LTR)","langDirRTL":"dreapta-stânga (RTL)","menu":"Editează Link","name":"Nume","noAnchors":"(Nicio ancoră disponibilă în document)","noEmail":"Vă rugăm să scrieţi adresa de e-mail","noUrl":"Vă rugăm să scrieţi URL-ul","other":"<alt>","popupDependent":"Dependent (Netscape)","popupFeatures":"Proprietăţile ferestrei popup","popupFullScreen":"Tot ecranul (Full Screen)(IE)","popupLeft":"Poziţia la stânga","popupLocationBar":"Bara de locaţie","popupMenuBar":"Bara de meniu","popupResizable":"Redimensionabil","popupScrollBars":"Bare de derulare","popupStatusBar":"Bara de status","popupToolbar":"Bara de opţiuni","popupTop":"Poziţia la dreapta","rel":"Relație","selectAnchor":"Selectaţi o ancoră","styles":"Stil","tabIndex":"Indexul tabului","target":"Ţintă (Target)","targetFrame":"<frame>","targetFrameName":"Numele frameului ţintă","targetPopup":"<fereastra popup>","targetPopupName":"Numele ferestrei popup","title":"Link (Legătură web)","toAnchor":"Ancoră în această pagină","toEmail":"E-Mail","toUrl":"URL","toolbar":"Inserează/Editează link (legătură web)","type":"Tipul link-ului (al legăturii web)","unlink":"Înlătură link (legătură web)","upload":"Încarcă"},"list":{"bulletedlist":"Inserează / Elimină Listă cu puncte","numberedlist":"Inserează / Elimină Listă numerotată"},"magicline":{"title":"Insert paragraph here"},"maximize":{"maximize":"Mărește","minimize":"Micșorează"},"pastetext":{"button":"Adaugă ca text simplu (Plain Text)","title":"Adaugă ca text simplu (Plain Text)"},"pastefromword":{"confirmCleanup":"Textul pe care doriți să-l lipiți este din Word. Doriți curățarea textului înante de a-l adăuga?","error":"Nu a fost posibilă curățarea datelor adăugate datorită unei erori interne","title":"Adaugă din Word","toolbar":"Adaugă din Word"},"removeformat":{"toolbar":"Înlătură formatarea"},"sourcearea":{"toolbar":"Sursa"},"specialchar":{"options":"Opțiuni caractere speciale","title":"Selectează caracter special","toolbar":"Inserează caracter special"},"scayt":{"about":"About SCAYT","aboutTab":"About","addWord":"Add Word","allCaps":"Ignore All-Caps Words","dic_create":"Create","dic_delete":"Delete","dic_field_name":"Dictionary name","dic_info":"Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.","dic_rename":"Rename","dic_restore":"Restore","dictionariesTab":"Dictionaries","disable":"Disable SCAYT","emptyDic":"Dictionary name should not be empty.","enable":"Enable SCAYT","ignore":"Ignore","ignoreAll":"Ignore All","ignoreDomainNames":"Ignore Domain Names","langs":"Languages","languagesTab":"Languages","mixedCase":"Ignore Words with Mixed Case","mixedWithDigits":"Ignore Words with Numbers","moreSuggestions":"More suggestions","opera_title":"Not supported by Opera","options":"Options","optionsTab":"Options","title":"Spell Check As You Type","toggle":"Toggle SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"Stil","panelTitle":"Formatarea stilurilor","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"table":{"border":"Mărimea marginii","caption":"Titlu (Caption)","cell":{"menu":"Celulă","insertBefore":"Inserează celulă înainte","insertAfter":"Inserează celulă după","deleteCell":"Şterge celule","merge":"Uneşte celule","mergeRight":"Uneşte la dreapta","mergeDown":"Uneşte jos","splitHorizontal":"Împarte celula pe orizontală","splitVertical":"Împarte celula pe verticală","title":"Proprietăți celulă","cellType":"Tipul celulei","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Aliniament orizontal","vAlign":"Aliniament vertical","alignBaseline":"Baseline","bgColor":"Culoare fundal","borderColor":"Culoare bordură","data":"Data","header":"Antet","yes":"Da","no":"Nu","invalidWidth":"Lățimea celulei trebuie să fie un număr.","invalidHeight":"Înălțimea celulei trebuie să fie un număr.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Alege"},"cellPad":"Spaţiu în cadrul celulei","cellSpace":"Spaţiu între celule","column":{"menu":"Coloană","insertBefore":"Inserează coloană înainte","insertAfter":"Inserează coloană după","deleteColumn":"Şterge celule"},"columns":"Coloane","deleteTable":"Şterge tabel","headers":"Antente","headersBoth":"Ambele","headersColumn":"Prima coloană","headersNone":"Nimic","headersRow":"Primul rând","invalidBorder":"Dimensiunea bordurii trebuie să aibe un număr.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Spațierea celului trebuie să fie un număr pozitiv.","invalidCols":"Numărul coloanelor trebuie să fie mai mare decât 0.","invalidHeight":"Inaltimea celulei trebuie sa fie un numar.","invalidRows":"Numărul rândurilor trebuie să fie mai mare decât 0.","invalidWidth":"Lățimea tabelului trebuie să fie un număr.","menu":"Proprietăţile tabelului","row":{"menu":"Rând","insertBefore":"Inserează rând înainte","insertAfter":"Inserează rând după","deleteRow":"Şterge rânduri"},"rows":"Rânduri","summary":"Rezumat","title":"Proprietăţile tabelului","toolbar":"Tabel","widthPc":"procente","widthPx":"pixeli","widthUnit":"unitate lățime"},"undo":{"redo":"Starea ulterioară (redo)","undo":"Starea anterioară (undo)"},"wsc":{"btnIgnore":"Ignoră","btnIgnoreAll":"Ignoră toate","btnReplace":"Înlocuieşte","btnReplaceAll":"Înlocuieşte tot","btnUndo":"Starea anterioară (undo)","changeTo":"Schimbă în","errorLoading":"Eroare în lansarea aplicației service host %s.","ieSpellDownload":"Unealta pentru verificat textul (Spell checker) neinstalată. Doriţi să o descărcaţi acum?","manyChanges":"Verificarea textului terminată: 1% cuvinte modificate","noChanges":"Verificarea textului terminată: Niciun cuvânt modificat","noMispell":"Verificarea textului terminată: Nicio greşeală găsită","noSuggestions":"- Fără sugestii -","notAvailable":"Scuzați, dar serviciul nu este disponibil momentan.","notInDic":"Nu e în dicţionar","oneChange":"Verificarea textului terminată: Un cuvânt modificat","progress":"Verificarea textului în desfăşurare...","title":"Spell Check","toolbar":"Verifică scrierea textului"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/ru.js b/assets/plugins/ckeditor/lang/ru.js deleted file mode 100644 index dedfa259..00000000 --- a/assets/plugins/ckeditor/lang/ru.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['ru']={"editor":"Визуальный текстовый редактор","editorPanel":"Визуальный редактор текста","common":{"editorHelp":"Нажмите ALT-0 для открытия справки","browseServer":"Выбор на сервере","url":"Ссылка","protocol":"Протокол","upload":"Загрузка файла","uploadSubmit":"Загрузить на сервер","image":"Изображение","flash":"Flash","form":"Форма","checkbox":"Чекбокс","radio":"Радиокнопка","textField":"Текстовое поле","textarea":"Многострочное текстовое поле","hiddenField":"Скрытое поле","button":"Кнопка","select":"Выпадающий список","imageButton":"Кнопка-изображение","notSet":"<не указано>","id":"Идентификатор","name":"Имя","langDir":"Направление текста","langDirLtr":"Слева направо (LTR)","langDirRtl":"Справа налево (RTL)","langCode":"Код языка","longDescr":"Длинное описание ссылки","cssClass":"Класс CSS","advisoryTitle":"Заголовок","cssStyle":"Стиль","ok":"ОК","cancel":"Отмена","close":"Закрыть","preview":"Предпросмотр","resize":"Перетащите для изменения размера","generalTab":"Основное","advancedTab":"Дополнительно","validateNumberFailed":"Это значение не является числом.","confirmNewPage":"Несохранённые изменения будут потеряны! Вы действительно желаете перейти на другую страницу?","confirmCancel":"Некоторые параметры были изменены. Вы уверены, что желаете закрыть без сохранения?","options":"Параметры","target":"Цель","targetNew":"Новое окно (_blank)","targetTop":"Главное окно (_top)","targetSelf":"Текущее окно (_self)","targetParent":"Родительское окно (_parent)","langDirLTR":"Слева направо (LTR)","langDirRTL":"Справа налево (RTL)","styles":"Стиль","cssClasses":"CSS классы","width":"Ширина","height":"Высота","align":"Выравнивание","alignLeft":"По левому краю","alignRight":"По правому краю","alignCenter":"По центру","alignTop":"Поверху","alignMiddle":"Посередине","alignBottom":"Понизу","invalidValue":"Недопустимое значение.","invalidHeight":"Высота задается числом.","invalidWidth":"Ширина задается числом.","invalidCssLength":"Значение, указанное в поле \"%1\", должно быть положительным целым числом. Допускается указание единиц меры CSS (px, %, in, cm, mm, em, ex, pt или pc).","invalidHtmlLength":"Значение, указанное в поле \"%1\", должно быть положительным целым числом. Допускается указание единиц меры HTML (px или %).","invalidInlineStyle":"Значение, указанное для стиля элемента, должно состоять из одной или нескольких пар данных в формате \"параметр : значение\", разделённых точкой с запятой.","cssLengthTooltip":"Введите значение в пикселях, либо число с корректной единицей меры CSS (px, %, in, cm, mm, em, ex, pt или pc).","unavailable":"%1<span class=\"cke_accessibility\">, недоступно</span>"},"about":{"copy":"Copyright &copy; $1. Все права защищены.","dlgTitle":"О CKEditor","help":"$1 содержит подробную справку по использованию.","moreInfo":"Для получения информации о лицензии, пожалуйста, перейдите на наш сайт:","title":"О CKEditor","userGuide":"Руководство пользователя CKEditor"},"basicstyles":{"bold":"Полужирный","italic":"Курсив","strike":"Зачеркнутый","subscript":"Подстрочный индекс","superscript":"Надстрочный индекс","underline":"Подчеркнутый"},"blockquote":{"toolbar":"Цитата"},"clipboard":{"copy":"Копировать","copyError":"Настройки безопасности вашего браузера не разрешают редактору выполнять операции по копированию текста. Пожалуйста, используйте для этого клавиатуру (Ctrl/Cmd+C).","cut":"Вырезать","cutError":"Настройки безопасности вашего браузера не разрешают редактору выполнять операции по вырезке текста. Пожалуйста, используйте для этого клавиатуру (Ctrl/Cmd+X).","paste":"Вставить","pasteArea":"Зона для вставки","pasteMsg":"Пожалуйста, вставьте текст в зону ниже, используя клавиатуру (<strong>Ctrl/Cmd+V</strong>) и нажмите кнопку \"OK\".","securityMsg":"Настройки безопасности вашего браузера не разрешают редактору напрямую обращаться к буферу обмена. Вы должны вставить текст снова в это окно.","title":"Вставить"},"contextmenu":{"options":"Параметры контекстного меню"},"toolbar":{"toolbarCollapse":"Свернуть панель инструментов","toolbarExpand":"Развернуть панель инструментов","toolbarGroups":{"document":"Документ","clipboard":"Буфер обмена / Отмена действий","editing":"Корректировка","forms":"Формы","basicstyles":"Простые стили","paragraph":"Абзац","links":"Ссылки","insert":"Вставка","styles":"Стили","colors":"Цвета","tools":"Инструменты"},"toolbars":"Панели инструментов редактора"},"elementspath":{"eleLabel":"Путь элементов","eleTitle":"Элемент %1"},"format":{"label":"Форматирование","panelTitle":"Форматирование","tag_address":"Адрес","tag_div":"Обычное (div)","tag_h1":"Заголовок 1","tag_h2":"Заголовок 2","tag_h3":"Заголовок 3","tag_h4":"Заголовок 4","tag_h5":"Заголовок 5","tag_h6":"Заголовок 6","tag_p":"Обычное","tag_pre":"Моноширинное"},"horizontalrule":{"toolbar":"Вставить горизонтальную линию"},"image":{"alertUrl":"Пожалуйста, введите ссылку на изображение","alt":"Альтернативный текст","border":"Граница","btnUpload":"Загрузить на сервер","button2Img":"Вы желаете преобразовать это изображение-кнопку в обычное изображение?","hSpace":"Гориз. отступ","img2Button":"Вы желаете преобразовать это обычное изображение в изображение-кнопку?","infoTab":"Данные об изображении","linkTab":"Ссылка","lockRatio":"Сохранять пропорции","menu":"Свойства изображения","resetSize":"Вернуть обычные размеры","title":"Свойства изображения","titleButton":"Свойства изображения-кнопки","upload":"Загрузить","urlMissing":"Не указана ссылка на изображение.","vSpace":"Вертик. отступ","validateBorder":"Размер границ должен быть задан числом.","validateHSpace":"Горизонтальный отступ должен быть задан числом.","validateVSpace":"Вертикальный отступ должен быть задан числом."},"indent":{"indent":"Увеличить отступ","outdent":"Уменьшить отступ"},"fakeobjects":{"anchor":"Якорь","flash":"Flash анимация","hiddenfield":"Скрытое поле","iframe":"iFrame","unknown":"Неизвестный объект"},"link":{"acccessKey":"Клавиша доступа","advanced":"Дополнительно","advisoryContentType":"Тип содержимого","advisoryTitle":"Заголовок","anchor":{"toolbar":"Вставить / редактировать якорь","menu":"Изменить якорь","title":"Свойства якоря","name":"Имя якоря","errorName":"Пожалуйста, введите имя якоря","remove":"Удалить якорь"},"anchorId":"По идентификатору","anchorName":"По имени","charset":"Кодировка ресурса","cssClasses":"Классы CSS","emailAddress":"Email адрес","emailBody":"Текст сообщения","emailSubject":"Тема сообщения","id":"Идентификатор","info":"Информация о ссылке","langCode":"Код языка","langDir":"Направление текста","langDirLTR":"Слева направо (LTR)","langDirRTL":"Справа налево (RTL)","menu":"Редактировать ссылку","name":"Имя","noAnchors":"(В документе нет ни одного якоря)","noEmail":"Пожалуйста, введите email адрес","noUrl":"Пожалуйста, введите ссылку","other":"<другой>","popupDependent":"Зависимое (Netscape)","popupFeatures":"Параметры всплывающего окна","popupFullScreen":"Полноэкранное (IE)","popupLeft":"Отступ слева","popupLocationBar":"Панель адреса","popupMenuBar":"Панель меню","popupResizable":"Изменяемый размер","popupScrollBars":"Полосы прокрутки","popupStatusBar":"Строка состояния","popupToolbar":"Панель инструментов","popupTop":"Отступ сверху","rel":"Отношение","selectAnchor":"Выберите якорь","styles":"Стиль","tabIndex":"Последовательность перехода","target":"Цель","targetFrame":"<фрейм>","targetFrameName":"Имя целевого фрейма","targetPopup":"<всплывающее окно>","targetPopupName":"Имя всплывающего окна","title":"Ссылка","toAnchor":"Ссылка на якорь в тексте","toEmail":"Email","toUrl":"Ссылка","toolbar":"Вставить/Редактировать ссылку","type":"Тип ссылки","unlink":"Убрать ссылку","upload":"Загрузка"},"list":{"bulletedlist":"Вставить / удалить маркированный список","numberedlist":"Вставить / удалить нумерованный список"},"magicline":{"title":"Вставить здесь параграф"},"maximize":{"maximize":"Развернуть","minimize":"Свернуть"},"pastetext":{"button":"Вставить только текст","title":"Вставить только текст"},"pastefromword":{"confirmCleanup":"Текст, который вы желаете вставить, по всей видимости, был скопирован из Word. Следует ли очистить его перед вставкой?","error":"Невозможно очистить вставленные данные из-за внутренней ошибки","title":"Вставить из Word","toolbar":"Вставить из Word"},"removeformat":{"toolbar":"Убрать форматирование"},"sourcearea":{"toolbar":"Источник"},"specialchar":{"options":"Выбор специального символа","title":"Выберите специальный символ","toolbar":"Вставить специальный символ"},"scayt":{"about":"О SCAYT","aboutTab":"О SCAYT","addWord":"Добавить слово","allCaps":"Игнорировать слова из заглавных букв","dic_create":"Создать","dic_delete":"Удалить","dic_field_name":"Название словаря","dic_info":"Изначально, пользовательский словарь хранится в cookie, которые ограничены в размере. Когда словарь пользователя вырастает до размеров, что его невозможно хранить в cookie, он переносится на хранение на наш сервер. Чтобы сохранить ваш словарь на нашем сервере, вам следует указать название вашего словаря. Если у вас уже был словарь, который вы сохраняли на нашем сервере, то укажите здесь его название и нажмите кнопку Восстановить.","dic_rename":"Переименовать","dic_restore":"Восстановить","dictionariesTab":"Словари","disable":"Отключить SCAYT","emptyDic":"Вы должны указать название словаря.","enable":"Включить SCAYT","ignore":"Пропустить","ignoreAll":"Пропустить всё","ignoreDomainNames":"Игнорировать доменные имена","langs":"Языки","languagesTab":"Языки","mixedCase":"Игнорировать слова из букв в разном регистре","mixedWithDigits":"Игнорировать слова, содержащие цифры","moreSuggestions":"Ещё варианты","opera_title":"Не поддерживается Opera","options":"Настройки","optionsTab":"Параметры","title":"Проверка орфографии по мере ввода (SCAYT)","toggle":"Переключить SCAYT","noSuggestions":"Нет вариантов"},"stylescombo":{"label":"Стили","panelTitle":"Стили форматирования","panelTitle1":"Стили блока","panelTitle2":"Стили элемента","panelTitle3":"Стили объекта"},"table":{"border":"Размер границ","caption":"Заголовок","cell":{"menu":"Ячейка","insertBefore":"Вставить ячейку слева","insertAfter":"Вставить ячейку справа","deleteCell":"Удалить ячейки","merge":"Объединить ячейки","mergeRight":"Объединить с правой","mergeDown":"Объединить с нижней","splitHorizontal":"Разделить ячейку по горизонтали","splitVertical":"Разделить ячейку по вертикали","title":"Свойства ячейки","cellType":"Тип ячейки","rowSpan":"Объединяет строк","colSpan":"Объединяет колонок","wordWrap":"Перенос по словам","hAlign":"Горизонтальное выравнивание","vAlign":"Вертикальное выравнивание","alignBaseline":"По базовой линии","bgColor":"Цвет фона","borderColor":"Цвет границ","data":"Данные","header":"Заголовок","yes":"Да","no":"Нет","invalidWidth":"Ширина ячейки должна быть числом.","invalidHeight":"Высота ячейки должна быть числом.","invalidRowSpan":"Количество объединяемых строк должно быть задано числом.","invalidColSpan":"Количество объединяемых колонок должно быть задано числом.","chooseColor":"Выберите"},"cellPad":"Внутренний отступ ячеек","cellSpace":"Внешний отступ ячеек","column":{"menu":"Колонка","insertBefore":"Вставить колонку слева","insertAfter":"Вставить колонку справа","deleteColumn":"Удалить колонки"},"columns":"Колонки","deleteTable":"Удалить таблицу","headers":"Заголовки","headersBoth":"Сверху и слева","headersColumn":"Левая колонка","headersNone":"Без заголовков","headersRow":"Верхняя строка","invalidBorder":"Размер границ должен быть числом.","invalidCellPadding":"Внутренний отступ ячеек (cellpadding) должен быть числом.","invalidCellSpacing":"Внешний отступ ячеек (cellspacing) должен быть числом.","invalidCols":"Количество столбцов должно быть больше 0.","invalidHeight":"Высота таблицы должна быть числом.","invalidRows":"Количество строк должно быть больше 0.","invalidWidth":"Ширина таблицы должна быть числом.","menu":"Свойства таблицы","row":{"menu":"Строка","insertBefore":"Вставить строку сверху","insertAfter":"Вставить строку снизу","deleteRow":"Удалить строки"},"rows":"Строки","summary":"Итоги","title":"Свойства таблицы","toolbar":"Таблица","widthPc":"процентов","widthPx":"пикселей","widthUnit":"единица измерения"},"undo":{"redo":"Повторить","undo":"Отменить"},"wsc":{"btnIgnore":"Пропустить","btnIgnoreAll":"Пропустить всё","btnReplace":"Заменить","btnReplaceAll":"Заменить всё","btnUndo":"Отменить","changeTo":"Изменить на","errorLoading":"Произошла ошибка при подключении к серверу проверки орфографии: %s.","ieSpellDownload":"Модуль проверки орфографии не установлен. Хотите скачать его?","manyChanges":"Проверка орфографии завершена. Изменено слов: %1","noChanges":"Проверка орфографии завершена. Не изменено ни одного слова","noMispell":"Проверка орфографии завершена. Ошибок не найдено","noSuggestions":"- Варианты отсутствуют -","notAvailable":"Извините, но в данный момент сервис недоступен.","notInDic":"Отсутствует в словаре","oneChange":"Проверка орфографии завершена. Изменено одно слово","progress":"Орфография проверяется...","title":"Проверка орфографии","toolbar":"Проверить орфографию"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/si.js b/assets/plugins/ckeditor/lang/si.js deleted file mode 100644 index 7e100f42..00000000 --- a/assets/plugins/ckeditor/lang/si.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['si']={"editor":"පොහොසත් වචන සංස්කරණ","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"උදව් ලබා ගැනීමට ALT බොත්තම ඔබන්න","browseServer":"සෙවුම් සේවාදායකය","url":"URL","protocol":"මුලාපත්රය","upload":"උඩුගතකිරීම","uploadSubmit":"සේවාදායකය වෙත යොමුකිරිම","image":"රුපය","flash":"දීප්තිය","form":"පෝරමය","checkbox":"ලකුණුකිරීමේ කොටුව","radio":"තේරීම් ","textField":"ලියන ප්රදේශය","textarea":"අකුරු ","hiddenField":"සැඟවුණු ප්රදේශය","button":"බොත්තම","select":"තෝරන්න ","imageButton":"රුප ","notSet":"<යොදා >","id":"අංකය","name":"නම","langDir":"භාෂා දිශාව","langDirLtr":"වමේසිට දකුණුට","langDirRtl":"දකුණේ සිට වමට","langCode":"භාෂා කේතය","longDescr":"සම්පුර්න පැහැදිලි කිරීම","cssClass":"විලාශ පත්ර පන්තිය","advisoryTitle":"උපදෙස් ","cssStyle":"විලාසය","ok":"නිරදි","cancel":"අවලංගු කිරීම","close":"වැසීම","preview":"නැවත ","resize":"විශාලත්වය නැවත වෙනස් කිරීම","generalTab":"පොදු කරුණු.","advancedTab":"දීය","validateNumberFailed":"මෙම වටිනාකම අංකයක් නොවේ","confirmNewPage":"ආරක්ෂා නොකළ සියලුම දත්තයන් මැකියනුලැබේ. ඔබට නව පිටුවක් ලබා ගැනීමට අවශ්යද?","confirmCancel":"ඇතම් විකල්පයන් වෙනස් කර ඇත. ඔබට මින් නික්මීමට අවශ්යද?","options":" විකල්ප","target":"අරමුණ","targetNew":"නව කව්ළුව","targetTop":"වැදගත් කව්ළුව","targetSelf":"එම කව්ළුව(_තම\\\\)","targetParent":"මව් කව්ළුව(_)","langDirLTR":"වමේසිට දකුණුට","langDirRTL":"දකුණේ සිට වමට","styles":"විලාසය","cssClasses":"විලාසපත්ර පන්තිය","width":"පළල","height":"උස","align":"ගැලපුම","alignLeft":"වම","alignRight":"දකුණ","alignCenter":"මධ්ය","alignTop":"ඉ","alignMiddle":"මැද","alignBottom":"පහල","invalidValue":"වැරදී වටිනාකමකි","invalidHeight":"උස අංකයක් විය යුතුය","invalidWidth":"පළල අංකයක් විය යුතුය","invalidCssLength":"වටිනාකමක් නිරූපණය කිරීම \"%1\" ප්රදේශය ධන සංක්යාත්මක වටිනාකමක් හෝ නිවරදි නොවන CSS මිනුම් එකක(px, %, in, cm, mm, em, ex, pt, pc)","invalidHtmlLength":"වටිනාකමක් නිරූපණය කිරීම \"%1\" ප්රදේශය ධන සංක්යාත්මක වටිනාකමක් හෝ නිවරදි නොවන HTML මිනුම් එකක (px හෝ %).","invalidInlineStyle":"වටිනාකමක් නිරූපණය කිරීම පේළි විලාසයයට ආකෘතිය අනතර්ග විය යුතය \"නම : වටිනාකම\", තිත් කොමාවකින් වෙන් වෙන ලද.","cssLengthTooltip":"සංක්යා ඇතුලත් කිරීමේදී වටිනාකම තිත් ප්රමාණය නිවරදි CSS ඒකක(තිත්, %, අඟල්,සෙමි, mm, em, ex, pt, pc)","unavailable":"%1<span පන්තිය=\"ළඟා වියහැකි ද බලන්න\">, නොමැතිනම්</span>"},"about":{"copy":"පිටපත් අයිතිය සහ පිටපත් කිරීම;$1 .සියලුම හිමිකම් ඇවිරිණි.","dlgTitle":"CKEditor ගැන විස්තර","help":"උදව් සඳහා $1 ","moreInfo":"බලපත්ර තොරතුරු සදහා කරුණාකර අපගේ විද්යුත් ලිපිනයට පිවිසෙන්න:","title":"CKEditor ගැන විස්තර","userGuide":"CKEditor භාවිතා කිරීම පිළිබඳ "},"basicstyles":{"bold":"තද අකුරින් ලියනලද","italic":"බැධීඅකුරින් ලියන ලද","strike":"Strike Through","subscript":"Subscript","superscript":"Superscript","underline":"යටින් ඉරි අදින ලද"},"blockquote":{"toolbar":"උද්ධෘත කොටස"},"clipboard":{"copy":"පිටපත් කරන්න","copyError":"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).","cut":"කපාගන්න","cutError":"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).","paste":"අලවන්න","pasteArea":"අලවන ප්රදේශ","pasteMsg":"Please paste inside the following box using the keyboard (<strong>Ctrl/Cmd+V</strong>) and hit OK","securityMsg":"Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.","title":"අලවන්න"},"contextmenu":{"options":"අනතර්ග ලේඛණ විකල්ප"},"toolbar":{"toolbarCollapse":"මෙවලම් තීරුව හැකුලුම.","toolbarExpand":"මෙවලම් තීරුව දීගහැරුම","toolbarGroups":{"document":"ලිපිය","clipboard":"ඇමිණුම වෙනස් කිරීම","editing":"සංස්කරණය","forms":"පෝරමය","basicstyles":"මුලික විලාසය","paragraph":"චේදය","links":"සබැඳිය","insert":"ඇතුලත් කිරීම","styles":"විලාසය","colors":"වර්ණය","tools":"මෙවලම්"},"toolbars":"සංස්කරණ මෙවලම් තීරුව"},"elementspath":{"eleLabel":"මුලද්රව්ය මාර්ගය","eleTitle":"%1 මුල"},"format":{"label":"ආකෘතිය","panelTitle":"චේදයේ ","tag_address":"ලිපිනය","tag_div":"සාමාන්ය(DIV)","tag_h1":"ශීර්ෂය 1","tag_h2":"ශීර්ෂය 2","tag_h3":"ශීර්ෂය 3","tag_h4":"ශීර්ෂය 4","tag_h5":"ශීර්ෂය 5","tag_h6":"ශීර්ෂය 6","tag_p":"සාමාන්ය","tag_pre":"ආකෘතියන්"},"horizontalrule":{"toolbar":"තිරස් රේඛාවක් ඇතුලත් කරන්න"},"image":{"alertUrl":"කරුණාකර රුපයේ URL ලියන්න","alt":"විකල්ප ","border":"සීමාවවල ","btnUpload":"සේවාදායකය වෙත යොමුකිරිම","button2Img":"ඔබට තෝරන ලද රුපය පරිවර්තනය කිරීමට අවශ්යද?","hSpace":"HSpace","img2Button":"ඔබට තෝරන ලද රුපය පරිවර්තනය කිරීමට අවශ්යද?","infoTab":"රුපයේ තොරතුරු","linkTab":"සබැඳිය","lockRatio":"නවතන අනුපාතය ","menu":"රුපයේ ගුණ","resetSize":"නැවතත් විශාලත්වය වෙනස් කිරීම","title":"රුපයේ ","titleButton":"රුප බොත්තමේ ගුණ","upload":"උඩුගතකිරීම","urlMissing":"රුප මුලාශ්ර URL නැත.","vSpace":"VSpace","validateBorder":"මාඉම් සම්පුර්ණ සංක්යාවක් විය යුතුය.","validateHSpace":"HSpace සම්පුර්ණ සංක්යාවක් විය යුතුය","validateVSpace":"VSpace සම්පුර්ණ සංක්යාවක් විය යුතුය."},"indent":{"indent":"අතර පරතරය වැඩිකරන්න","outdent":"අතර පරතරය අඩුකරන්න"},"fakeobjects":{"anchor":"ආධාරය","flash":"Flash Animation","hiddenfield":"සැඟවුණු ප්රදේශය","iframe":"IFrame","unknown":"Unknown Object"},"link":{"acccessKey":"ප්රවේශ යතුර","advanced":"දීය","advisoryContentType":"උපදේශාත්මක අන්තර්ගත ආකාරය","advisoryTitle":"උපදේශාත්මක නාමය","anchor":{"toolbar":"ආධාරය","menu":"ආධාරය වෙනස් කිරීම","title":"ආධාරක ","name":"ආධාරකයේ නාමය","errorName":"කරුණාකර ආධාරකයේ නාමය ඇතුල් කරන්න","remove":"ආධාරකය ඉවත් කිරීම"},"anchorId":"By Element Id","anchorName":"By Anchor Name","charset":"Linked Resource Charset","cssClasses":"විලාසපත්ර පන්තිය","emailAddress":"E-Mail Address","emailBody":"Message Body","emailSubject":"Message Subject","id":"අංකය","info":"Link Info","langCode":"භාෂා කේතය","langDir":"භාෂා දිශාව","langDirLTR":"වමේසිට දකුණුට","langDirRTL":"දකුණේ සිට වමට","menu":"Edit Link","name":"නම","noAnchors":"(No anchors available in the document)","noEmail":"Please type the e-mail address","noUrl":"Please type the link URL","other":"<other>","popupDependent":"Dependent (Netscape)","popupFeatures":"Popup Window Features","popupFullScreen":"Full Screen (IE)","popupLeft":"Left Position","popupLocationBar":"Location Bar","popupMenuBar":"Menu Bar","popupResizable":"Resizable","popupScrollBars":"Scroll Bars","popupStatusBar":"Status Bar","popupToolbar":"Toolbar","popupTop":"Top Position","rel":"Relationship","selectAnchor":"Select an Anchor","styles":"විලාසය","tabIndex":"Tab Index","target":"අරමුණ","targetFrame":"<frame>","targetFrameName":"Target Frame Name","targetPopup":"<popup window>","targetPopupName":"Popup Window Name","title":"සබැඳිය","toAnchor":"Link to anchor in the text","toEmail":"E-mail","toUrl":"URL","toolbar":"සබැඳිය","type":"Link Type","unlink":"Unlink","upload":"උඩුගතකිරීම"},"list":{"bulletedlist":"ඇතුලත් / ඉවත් කිරීම ලඉස්තුව","numberedlist":"ඇතුලත් / ඉවත් කිරීම අන්න්කිත ලඉස්තුව"},"magicline":{"title":"චේදය ඇතුලත් කරන්න"},"maximize":{"maximize":"විශාල කිරීම","minimize":"කුඩා කිරීම"},"pastetext":{"button":"සාමාන්ය අක්ෂර ලෙස අලවන්න","title":"සාමාන්ය අක්ෂර ලෙස අලවන්න"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"වචන වලින් අලවන්න","toolbar":"වචන වලින් අලවන්න"},"removeformat":{"toolbar":"සැකසීම වෙනස් කරන්න"},"sourcearea":{"toolbar":"මුලාශ්රය"},"specialchar":{"options":"විශේෂ ගුණාංග වීකල්ප","title":"විශේෂ ගුණාංග ","toolbar":"විශේෂ ගුණාංග ඇතුලත් "},"scayt":{"about":"About SCAYT","aboutTab":"About","addWord":"Add Word","allCaps":"Ignore All-Caps Words","dic_create":"Create","dic_delete":"Delete","dic_field_name":"Dictionary name","dic_info":"Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.","dic_rename":"Rename","dic_restore":"Restore","dictionariesTab":"Dictionaries","disable":"Disable SCAYT","emptyDic":"Dictionary name should not be empty.","enable":"Enable SCAYT","ignore":"Ignore","ignoreAll":"Ignore All","ignoreDomainNames":"Ignore Domain Names","langs":"Languages","languagesTab":"Languages","mixedCase":"Ignore Words with Mixed Case","mixedWithDigits":"Ignore Words with Numbers","moreSuggestions":"More suggestions","opera_title":"Not supported by Opera","options":"Options","optionsTab":"Options","title":"Spell Check As You Type","toggle":"Toggle SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"විලාසය","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"table":{"border":"සීමාවවල විශාලත්වය","caption":"Caption","cell":{"menu":"කොටුව","insertBefore":"පෙර කොටුවක් ඇතුල්කිරිම","insertAfter":"පසුව කොටුවක් ඇතුලත් ","deleteCell":"කොටුව මැකීම","merge":"කොටු එකට යාකිරිම","mergeRight":"දකුණට ","mergeDown":"පහලට ","splitHorizontal":"තිරස්ව කොටු පැතිරීම","splitVertical":"සිරස්ව කොටු පැතිරීම","title":"කොටු ","cellType":"කොටු වර්ගය","rowSpan":"පේළි පළල","colSpan":"සිරස් පළල","wordWrap":"වචන ගැලපුම","hAlign":"තිරස්ව ","vAlign":"සිරස්ව ","alignBaseline":"පාද රේඛාව","bgColor":"පසුබිම් වර්ණය","borderColor":"මායිම් ","data":"Data","header":"ශීර්ෂක","yes":"ඔව්","no":"නැත","invalidWidth":"කොටු පළල සංඛ්ය්ත්මක වටිනාකමක් විය යුතුය","invalidHeight":"කොටු උස සංඛ්ය්ත්මක වටිනාකමක් විය යුතුය","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"තෝරන්න"},"cellPad":"Cell padding","cellSpace":"Cell spacing","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Delete Columns"},"columns":"සිරස් ","deleteTable":"වගුව මකන්න","headers":"ශීර්ෂක","headersBoth":"දෙකම","headersColumn":"පළමූ සිරස් තීරුව","headersNone":"කිසිවක්ම නොවේ","headersRow":"පළමූ පේළිය","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Table Properties","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Delete Rows"},"rows":"Rows","summary":"Summary","title":"Table Properties","toolbar":"Table","widthPc":"percent","widthPx":"pixels","widthUnit":"width unit"},"undo":{"redo":"නැවත කිරීම","undo":"වෙනස් කිරීම"},"wsc":{"btnIgnore":"Ignore","btnIgnoreAll":"Ignore All","btnReplace":"Replace","btnReplaceAll":"Replace All","btnUndo":"Undo","changeTo":"Change to","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Spell checker not installed. Do you want to download it now?","manyChanges":"Spell check complete: %1 words changed","noChanges":"Spell check complete: No words changed","noMispell":"Spell check complete: No misspellings found","noSuggestions":"- No suggestions -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Not in dictionary","oneChange":"Spell check complete: One word changed","progress":"Spell check in progress...","title":"Spell Check","toolbar":"Check Spelling"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/sk.js b/assets/plugins/ckeditor/lang/sk.js deleted file mode 100644 index 38ebb70f..00000000 --- a/assets/plugins/ckeditor/lang/sk.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['sk']={"editor":"Editor formátovaného textu","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Stlačte ALT 0 pre nápovedu","browseServer":"Prechádzať server","url":"URL","protocol":"Protokol","upload":"Odoslať","uploadSubmit":"Odoslať na server","image":"Obrázok","flash":"Flash","form":"Formulár","checkbox":"Zaškrtávacie políčko","radio":"Prepínač","textField":"Textové pole","textarea":"Textová oblasť","hiddenField":"Skryté pole","button":"Tlačidlo","select":"Rozbaľovací zoznam","imageButton":"Obrázkové tlačidlo","notSet":"<nenastavené>","id":"Id","name":"Meno","langDir":"Orientácia jazyka","langDirLtr":"Zľava doprava (LTR)","langDirRtl":"Sprava doľava (RTL)","langCode":"Kód jazyka","longDescr":"Dlhý popis URL","cssClass":"Trieda štýlu","advisoryTitle":"Pomocný titulok","cssStyle":"Štýl","ok":"OK","cancel":"Zrušiť","close":"Zatvorit","preview":"Náhľad","resize":"Zmeniť veľkosť","generalTab":"Hlavné","advancedTab":"Rozšírené","validateNumberFailed":"Hodnota nieje číslo.","confirmNewPage":"Prajete si načítat novú stránku? Všetky neuložené zmeny budú stratené. ","confirmCancel":"Niektore možnosti boli zmenené. Naozaj chcete zavrieť okno?","options":"Možnosti","target":"Cieľ","targetNew":"Nové okno (_blank)","targetTop":"Najvrchnejšie okno (_top)","targetSelf":"To isté okno (_self)","targetParent":"Rodičovské okno (_parent)","langDirLTR":"Zľava doprava (LTR)","langDirRTL":"Sprava doľava (RTL)","styles":"Štýl","cssClasses":"Triedy štýlu","width":"Šírka","height":"Výška","align":"Zarovnanie","alignLeft":"Vľavo","alignRight":"Vpravo","alignCenter":"Na stred","alignTop":"Nahor","alignMiddle":"Na stred","alignBottom":"Dole","invalidValue":"Neplatná hodnota.","invalidHeight":"Výška musí byť číslo.","invalidWidth":"Šírka musí byť číslo.","invalidCssLength":"Špecifikovaná hodnota pre pole \"%1\" musí byť kladné číslo s alebo bez platnej CSS mernej jednotky (px, %, in, cm, mm, em, ex, pt alebo pc).","invalidHtmlLength":"Špecifikovaná hodnota pre pole \"%1\" musí byť kladné číslo s alebo bez platnej HTML mernej jednotky (px alebo %).","invalidInlineStyle":"Zadaná hodnota pre inline štýl musí pozostávať s jedného, alebo viac dvojíc formátu \"názov: hodnota\", oddelených bodkočiarkou.","cssLengthTooltip":"Vložte číslo pre hodnotu v pixeloch alebo číslo so správnou CSS jednotou (px, %, in, cm, mm, em, ex, pt alebo pc).","unavailable":"%1<span class=\"cke_accessibility\">, nedostupný</span>"},"about":{"copy":"Copyright &copy; $1. Všetky práva vyhradené.","dlgTitle":"O CKEditor-e","help":"Zaškrtnite $1 pre pomoc.","moreInfo":"Pre informácie o licenciách, prosíme, navštívte našu web stránku:","title":"O CKEditor-e","userGuide":"Používateľská príručka KCEditor-a"},"basicstyles":{"bold":"Tučné","italic":"Kurzíva","strike":"Prečiarknuté","subscript":"Dolný index","superscript":"Horný index","underline":"Podčiarknuté"},"blockquote":{"toolbar":"Citácia"},"clipboard":{"copy":"Kopírovať","copyError":"Bezpečnostné nastavenia Vášho prehliadača nedovoľujú editoru automaticky spustiť operáciu kopírovania. Prosím, použite na to klávesnicu (Ctrl/Cmd+C).","cut":"Vystrihnúť","cutError":"Bezpečnostné nastavenia Vášho prehliadača nedovoľujú editoru automaticky spustiť operáciu vystrihnutia. Prosím, použite na to klávesnicu (Ctrl/Cmd+X).","paste":"Vložiť","pasteArea":"Miesto pre vloženie","pasteMsg":"Prosím, vložte nasledovný rámček použitím klávesnice (<STRONG>Ctrl/Cmd+V</STRONG>) a stlačte OK.","securityMsg":"Kvôli vašim bezpečnostným nastaveniam prehliadača editor nie je schopný pristupovať k vašej schránke na kopírovanie priamo. Vložte to preto do tohto okna.","title":"Vložiť"},"contextmenu":{"options":"Možnosti kontextového menu"},"toolbar":{"toolbarCollapse":"Zbaliť lištu nástrojov","toolbarExpand":"Rozbaliť lištu nástrojov","toolbarGroups":{"document":"Dokument","clipboard":"Schránka pre kopírovanie/Späť","editing":"Upravovanie","forms":"Formuláre","basicstyles":"Základné štýly","paragraph":"Odstavec","links":"Odkazy","insert":"Vložiť","styles":"Štýly","colors":"Farby","tools":"Nástroje"},"toolbars":"Lišty nástrojov editora"},"elementspath":{"eleLabel":"Cesta prvkov","eleTitle":"%1 prvok"},"format":{"label":"Formát","panelTitle":"Formát","tag_address":"Adresa","tag_div":"Normálny (DIV)","tag_h1":"Nadpis 1","tag_h2":"Nadpis 2","tag_h3":"Nadpis 3","tag_h4":"Nadpis 4","tag_h5":"Nadpis 5","tag_h6":"Nadpis 6","tag_p":"Normálny","tag_pre":"Formátovaný"},"horizontalrule":{"toolbar":"Vložiť vodorovnú čiaru"},"image":{"alertUrl":"Zadajte prosím URL obrázka","alt":"Alternatívny text","border":"Rám (border)","btnUpload":"Odoslať to na server","button2Img":"Chcete zmeniť vybrané obrázkové tlačidlo na jednoduchý obrázok?","hSpace":"H-medzera","img2Button":"Chcete zmeniť vybraný obrázok na obrázkové tlačidlo?","infoTab":"Informácie o obrázku","linkTab":"Odkaz","lockRatio":"Pomer zámky","menu":"Vlastnosti obrázka","resetSize":"Pôvodná veľkosť","title":"Vlastnosti obrázka","titleButton":"Vlastnosti obrázkového tlačidla","upload":"Nahrať","urlMissing":"Chýba URL zdroja obrázka.","vSpace":"V-medzera","validateBorder":"Rám (border) musí byť celé číslo.","validateHSpace":"H-medzera musí byť celé číslo.","validateVSpace":"V-medzera musí byť celé číslo."},"indent":{"indent":"Zväčšiť odsadenie","outdent":"Zmenšiť odsadenie"},"fakeobjects":{"anchor":"Kotva","flash":"Flash animácia","hiddenfield":"Skryté pole","iframe":"IFrame","unknown":"Neznámy objekt"},"link":{"acccessKey":"Prístupový kľúč","advanced":"Rozšírené","advisoryContentType":"Pomocný typ obsahu","advisoryTitle":"Pomocný titulok","anchor":{"toolbar":"Kotva","menu":"Upraviť kotvu","title":"Vlastnosti kotvy","name":"Názov kotvy","errorName":"Zadajte prosím názov kotvy","remove":"Odstrániť kotvu"},"anchorId":"Podľa Id objektu","anchorName":"Podľa mena kotvy","charset":"Priradená znaková sada","cssClasses":"Triedy štýlu","emailAddress":"E-Mailová adresa","emailBody":"Telo správy","emailSubject":"Predmet správy","id":"Id","info":"Informácie o odkaze","langCode":"Orientácia jazyka","langDir":"Orientácia jazyka","langDirLTR":"Zľava doprava (LTR)","langDirRTL":"Sprava doľava (RTL)","menu":"Upraviť odkaz","name":"Názov","noAnchors":"(V dokumente nie sú dostupné žiadne kotvy)","noEmail":"Zadajte prosím e-mailovú adresu","noUrl":"Zadajte prosím URL odkazu","other":"<iný>","popupDependent":"Závislosť (Netscape)","popupFeatures":"Vlastnosti vyskakovacieho okna","popupFullScreen":"Celá obrazovka (IE)","popupLeft":"Ľavý okraj","popupLocationBar":"Panel umiestnenia (location bar)","popupMenuBar":"Panel ponuky (menu bar)","popupResizable":"Meniteľná veľkosť (resizable)","popupScrollBars":"Posuvníky (scroll bars)","popupStatusBar":"Stavový riadok (status bar)","popupToolbar":"Panel nástrojov (toolbar)","popupTop":"Horný okraj","rel":"Vzťah (rel)","selectAnchor":"Vybrať kotvu","styles":"Štýl","tabIndex":"Poradie prvku (tab index)","target":"Cieľ","targetFrame":"<rámec>","targetFrameName":"Názov rámu cieľa","targetPopup":"<vyskakovacie okno>","targetPopupName":"Názov vyskakovacieho okna","title":"Odkaz","toAnchor":"Odkaz na kotvu v texte","toEmail":"E-mail","toUrl":"URL","toolbar":"Odkaz","type":"Typ odkazu","unlink":"Odstrániť odkaz","upload":"Nahrať"},"list":{"bulletedlist":"Vložiť/Odstrániť zoznam s odrážkami","numberedlist":"Vložiť/Odstrániť číslovaný zoznam"},"magicline":{"title":"Sem vložte paragraf"},"maximize":{"maximize":"Maximalizovať","minimize":"Minimalizovať"},"pastetext":{"button":"Vložiť ako čistý text","title":"Vložiť ako čistý text"},"pastefromword":{"confirmCleanup":"Vkladaný text vyzerá byť skopírovaný z Wordu. Chcete ho automaticky vyčistiť pred vkladaním?","error":"Nebolo možné vyčistiť vložené dáta kvôli internej chybe","title":"Vložiť z Wordu","toolbar":"Vložiť z Wordu"},"removeformat":{"toolbar":"Odstrániť formátovanie"},"sourcearea":{"toolbar":"Zdroj"},"specialchar":{"options":"Možnosti špeciálneho znaku","title":"Výber špeciálneho znaku","toolbar":"Vložiť špeciálny znak"},"scayt":{"about":"O KPPP (Kontrola pravopisu počas písania)","aboutTab":"O","addWord":"Pridať slovo","allCaps":"Ignorovať slová písané veľkými písmenami","dic_create":"Vytvoriť","dic_delete":"Vymazať","dic_field_name":"Názov slovníka","dic_info":"Spočiatku je užívateľský slovník uložený v cookie. Cookie však majú obmedzenú veľkosť. Keď užívateľský slovník narastie do bodu, kedy nemôže byť uložený v cookie, potom musí byť slovník uložený na našom serveri. Pre uloženie vášho osobného slovníka na náš server by ste mali zadať názov pre váš slovník. Ak už máte uložený slovník, prosíme, napíšte jeho názov a kliknite tlačidlo Obnoviť.","dic_rename":"Premenovať","dic_restore":"Obnoviť","dictionariesTab":"Slovníky","disable":"Zakázať KPPP (Kontrola pravopisu počas písania)","emptyDic":"Názov slovníka by nemal byť prázdny.","enable":"Povoliť KPPP (Kontrola pravopisu počas písania)","ignore":"Ignorovať","ignoreAll":"Ignorovať všetko","ignoreDomainNames":"Iznorovať názvy domén","langs":"Jazyky","languagesTab":"Jazyky","mixedCase":"Ignorovať slová so smiešanými veľkými a malými písmenami","mixedWithDigits":"Ignorovať slová s číslami","moreSuggestions":"Viac návrhov","opera_title":"Nepodporované Operou","options":"Možnosti","optionsTab":"Možnosti","title":"Kontrola pravopisu počas písania","toggle":"Prepnúť KPPP (Kontrola pravopisu počas písania)","noSuggestions":"No suggestion"},"stylescombo":{"label":"Štýly","panelTitle":"Formátovanie štýlov","panelTitle1":"Štýly bloku","panelTitle2":"Vnútroriadkové (inline) štýly","panelTitle3":"Štýly objeku"},"table":{"border":"Šírka rámu (border)","caption":"Popis","cell":{"menu":"Bunka","insertBefore":"Vložiť bunku pred","insertAfter":"Vložiť bunku za","deleteCell":"Vymazať bunky","merge":"Zlúčiť bunky","mergeRight":"Zlúčiť doprava","mergeDown":"Zlúčiť dole","splitHorizontal":"Rozdeliť bunky horizontálne","splitVertical":"Rozdeliť bunky vertikálne","title":"Vlastnosti bunky","cellType":"Typ bunky","rowSpan":"Rozsah riadkov","colSpan":"Rozsah stĺpcov","wordWrap":"Zalomovanie riadkov","hAlign":"Horizontálne zarovnanie","vAlign":"Vertikálne zarovnanie","alignBaseline":"Základná čiara (baseline)","bgColor":"Farba pozadia","borderColor":"Farba rámu","data":"Dáta","header":"Hlavička","yes":"Áno","no":"Nie","invalidWidth":"Šírka bunky musí byť číslo.","invalidHeight":"Výška bunky musí byť číslo.","invalidRowSpan":"Rozsah riadkov musí byť celé číslo.","invalidColSpan":"Rozsah stĺpcov musí byť celé číslo.","chooseColor":"Vybrať"},"cellPad":"Odsadenie obsahu (cell padding)","cellSpace":"Vzdialenosť buniek (cell spacing)","column":{"menu":"Stĺpec","insertBefore":"Vložiť stĺpec pred","insertAfter":"Vložiť stĺpec po","deleteColumn":"Zmazať stĺpce"},"columns":"Stĺpce","deleteTable":"Vymazať tabuľku","headers":"Hlavička","headersBoth":"Obe","headersColumn":"Prvý stĺpec","headersNone":"Žiadne","headersRow":"Prvý riadok","invalidBorder":"Širka rámu musí byť číslo.","invalidCellPadding":"Odsadenie v bunkách (cell padding) musí byť kladné číslo.","invalidCellSpacing":"Medzera mädzi bunkami (cell spacing) musí byť kladné číslo.","invalidCols":"Počet stĺpcov musí byť číslo väčšie ako 0.","invalidHeight":"Výška tabuľky musí byť číslo.","invalidRows":"Počet riadkov musí byť číslo väčšie ako 0.","invalidWidth":"Širka tabuľky musí byť číslo.","menu":"Vlastnosti tabuľky","row":{"menu":"Riadok","insertBefore":"Vložiť riadok pred","insertAfter":"Vložiť riadok po","deleteRow":"Vymazať riadky"},"rows":"Riadky","summary":"Prehľad","title":"Vlastnosti tabuľky","toolbar":"Tabuľka","widthPc":"percent","widthPx":"pixelov","widthUnit":"jednotka šírky"},"undo":{"redo":"Znovu","undo":"Späť"},"wsc":{"btnIgnore":"Ignorovať","btnIgnoreAll":"Ignorovať všetko","btnReplace":"Prepísat","btnReplaceAll":"Prepísat všetko","btnUndo":"Späť","changeTo":"Zmeniť na","errorLoading":"Chyba pri načítaní slovníka z adresy: %s.","ieSpellDownload":"Kontrola pravopisu nie je naištalovaná. Chcete ju teraz stiahnuť?","manyChanges":"Kontrola pravopisu dokončená: Bolo zmenených %1 slov","noChanges":"Kontrola pravopisu dokončená: Neboli zmenené žiadne slová","noMispell":"Kontrola pravopisu dokončená: Neboli nájdené žiadne chyby pravopisu","noSuggestions":"- Žiadny návrh -","notAvailable":"Prepáčte, ale služba je momentálne nedostupná.","notInDic":"Nie je v slovníku","oneChange":"Kontrola pravopisu dokončená: Bolo zmenené jedno slovo","progress":"Prebieha kontrola pravopisu...","title":"Skontrolovať pravopis","toolbar":"Kontrola pravopisu"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/sl.js b/assets/plugins/ckeditor/lang/sl.js deleted file mode 100644 index d00e1db3..00000000 --- a/assets/plugins/ckeditor/lang/sl.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['sl']={"editor":"Bogat Urejevalnik Besedila","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Pritisnite ALT 0 za pomoč","browseServer":"Prebrskaj na strežniku","url":"URL","protocol":"Protokol","upload":"Naloži","uploadSubmit":"Pošlji na strežnik","image":"Slika","flash":"Flash","form":"Obrazec","checkbox":"Potrditveno polje","radio":"Izbirno polje","textField":"Vnosno polje","textarea":"Vnosno območje","hiddenField":"Skrito polje","button":"Gumb","select":"Spustno Polje","imageButton":"Slikovni Gumb","notSet":"<ni določen>","id":"Id","name":"Ime","langDir":"Smer jezika","langDirLtr":"Od leve proti desni (LTR)","langDirRtl":"Od desne proti levi (RTL)","langCode":"Koda Jezika","longDescr":"Dolg opis URL-ja","cssClass":"Razred stilne predloge","advisoryTitle":"Predlagani naslov","cssStyle":"Slog","ok":"V redu","cancel":"Prekliči","close":"Zapri","preview":"Predogled","resize":"Potegni za spremembo velikosti","generalTab":"Splošno","advancedTab":"Napredno","validateNumberFailed":"Ta vrednost ni število.","confirmNewPage":"Vse neshranjene spremembe te vsebine bodo izgubljene. Ali res želite naložiti novo stran?","confirmCancel":"Nekaj možnosti je bilo spremenjenih. Ali res želite zapreti okno?","options":"Možnosti","target":"Cilj","targetNew":"Novo Okno (_blank)","targetTop":"Vrhovno Okno (_top)","targetSelf":"Enako Okno (_self)","targetParent":"Matično Okno (_parent)","langDirLTR":"Od leve proti desni (LTR)","langDirRTL":"Od desne proti levi (RTL)","styles":"Slog","cssClasses":"Razred stilne predloge","width":"Širina","height":"Višina","align":"Poravnava","alignLeft":"Levo","alignRight":"Desno","alignCenter":"Sredinsko","alignTop":"Na vrh","alignMiddle":"V sredino","alignBottom":"Na dno","invalidValue":"Neveljavna vrednost.","invalidHeight":"Višina mora biti število.","invalidWidth":"Širina mora biti število.","invalidCssLength":"Vrednost določena za \"%1\" polje mora biti pozitivna številka z ali brez veljavne CSS enote za merjenje (px, %, in, cm, mm, em, ex, pt, ali pc).","invalidHtmlLength":"Vrednost določena za \"%1\" polje mora biti pozitivna številka z ali brez veljavne HTML enote za merjenje (px ali %).","invalidInlineStyle":"Vrednost določena za inline slog mora biti sestavljena iz ene ali več tork (tuples) z obliko \"ime : vrednost\", ločenih z podpičji.","cssLengthTooltip":"Vnesite številko za vrednost v slikovnih pikah (pixels) ali številko z veljavno CSS enoto (px, %, in, cm, mm, em, ex, pt, ali pc).","unavailable":"%1<span class=\"cke_accessibility\">, nedosegljiv</span>"},"about":{"copy":"Copyright &copy; $1. Vse pravice pridržane.","dlgTitle":"O programu CKEditor","help":"Preverite $1 za pomoč.","moreInfo":"Za informacijo o licenci prosim obiščite našo spletno stran:","title":"O programu CKEditor","userGuide":"CKEditor Navodila za Uporabo"},"basicstyles":{"bold":"Krepko","italic":"Ležeče","strike":"Prečrtano","subscript":"Podpisano","superscript":"Nadpisano","underline":"Podčrtano"},"blockquote":{"toolbar":"Citat"},"clipboard":{"copy":"Kopiraj","copyError":"Varnostne nastavitve brskalnika ne dopuščajo samodejnega kopiranja. Uporabite kombinacijo tipk na tipkovnici (Ctrl/Cmd+C).","cut":"Izreži","cutError":"Varnostne nastavitve brskalnika ne dopuščajo samodejnega izrezovanja. Uporabite kombinacijo tipk na tipkovnici (Ctrl/Cmd+X).","paste":"Prilepi","pasteArea":"Prilepi Prostor","pasteMsg":"Prosim prilepite v sleči okvir s pomočjo tipkovnice (<STRONG>Ctrl/Cmd+V</STRONG>) in pritisnite <STRONG>V redu</STRONG>.","securityMsg":"Zaradi varnostnih nastavitev vašega brskalnika urejevalnik ne more neposredno dostopati do odložišča. Vsebino odložišča ponovno prilepite v to okno.","title":"Prilepi"},"contextmenu":{"options":"Možnosti Kontekstnega Menija"},"toolbar":{"toolbarCollapse":"Skrči Orodno Vrstico","toolbarExpand":"Razširi Orodno Vrstico","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Urejevalnik orodne vrstice"},"elementspath":{"eleLabel":"Pot elementov","eleTitle":"%1 element"},"format":{"label":"Oblika","panelTitle":"Oblika","tag_address":"Napis","tag_div":"Navaden (DIV)","tag_h1":"Naslov 1","tag_h2":"Naslov 2","tag_h3":"Naslov 3","tag_h4":"Naslov 4","tag_h5":"Naslov 5","tag_h6":"Naslov 6","tag_p":"Navaden","tag_pre":"Oblikovan"},"horizontalrule":{"toolbar":"Vstavi vodoravno črto"},"image":{"alertUrl":"Vnesite URL slike","alt":"Nadomestno besedilo","border":"Obroba","btnUpload":"Pošlji na strežnik","button2Img":"Želiš pretvoriti izbrani gumb s sliko v preprosto sliko?","hSpace":"Vodoravni razmik","img2Button":"Želiš pretvoriti izbrano sliko v gumb s sliko?","infoTab":"Podatki o sliki","linkTab":"Povezava","lockRatio":"Zakleni razmerje","menu":"Lastnosti slike","resetSize":"Ponastavi velikost","title":"Lastnosti slike","titleButton":"Lastnosti gumba s sliko","upload":"Pošlji","urlMissing":"Manjka vir (URL) slike.","vSpace":"Navpični razmik","validateBorder":"Meja mora biti celo število.","validateHSpace":"HSpace mora biti celo število.","validateVSpace":"VSpace mora biti celo število."},"indent":{"indent":"Povečaj zamik","outdent":"Zmanjšaj zamik"},"fakeobjects":{"anchor":"Sidro","flash":"Flash animacija","hiddenfield":"Skrito polje","iframe":"IFrame","unknown":"Neznan objekt"},"link":{"acccessKey":"Dostopno Geslo","advanced":"Napredno","advisoryContentType":"Predlagani tip vsebine (content-type)","advisoryTitle":"Predlagani naslov","anchor":{"toolbar":"Vstavi/uredi zaznamek","menu":"Lastnosti zaznamka","title":"Lastnosti zaznamka","name":"Ime zaznamka","errorName":"Prosim vnesite ime zaznamka","remove":"Remove Anchor"},"anchorId":"Po ID-ju elementa","anchorName":"Po imenu zaznamka","charset":"Kodna tabela povezanega vira","cssClasses":"Razred stilne predloge","emailAddress":"Elektronski naslov","emailBody":"Vsebina sporočila","emailSubject":"Predmet sporočila","id":"Id","info":"Podatki o povezavi","langCode":"Smer jezika","langDir":"Smer jezika","langDirLTR":"Od leve proti desni (LTR)","langDirRTL":"Od desne proti levi (RTL)","menu":"Uredi povezavo","name":"Ime","noAnchors":"(V tem dokumentu ni zaznamkov)","noEmail":"Vnesite elektronski naslov","noUrl":"Vnesite URL povezave","other":"<drug>","popupDependent":"Podokno (Netscape)","popupFeatures":"Značilnosti pojavnega okna","popupFullScreen":"Celozaslonska slika (IE)","popupLeft":"Lega levo","popupLocationBar":"Naslovna vrstica","popupMenuBar":"Menijska vrstica","popupResizable":"Spremenljive velikosti","popupScrollBars":"Drsniki","popupStatusBar":"Vrstica stanja","popupToolbar":"Orodna vrstica","popupTop":"Lega na vrhu","rel":"Odnos","selectAnchor":"Izberi zaznamek","styles":"Slog","tabIndex":"Številka tabulatorja","target":"Cilj","targetFrame":"<okvir>","targetFrameName":"Ime ciljnega okvirja","targetPopup":"<pojavno okno>","targetPopupName":"Ime pojavnega okna","title":"Povezava","toAnchor":"Zaznamek na tej strani","toEmail":"Elektronski naslov","toUrl":"URL","toolbar":"Vstavi/uredi povezavo","type":"Vrsta povezave","unlink":"Odstrani povezavo","upload":"Prenesi"},"list":{"bulletedlist":"Označen seznam","numberedlist":"Oštevilčen seznam"},"magicline":{"title":"Vstavite odstavek tukaj"},"maximize":{"maximize":"Maksimiraj","minimize":"Minimiraj"},"pastetext":{"button":"Prilepi kot golo besedilo","title":"Prilepi kot golo besedilo"},"pastefromword":{"confirmCleanup":"Besedilo, ki ga želite prilepiti je kopirano iz Word-a. Ali ga želite očistiti, preden ga prilepite?","error":"Ni bilo mogoče očistiti prilepljenih podatkov zaradi notranje napake","title":"Prilepi iz Worda","toolbar":"Prilepi iz Worda"},"removeformat":{"toolbar":"Odstrani oblikovanje"},"sourcearea":{"toolbar":"Izvorna koda"},"specialchar":{"options":"Možnosti Posebnega Znaka","title":"Izberi Posebni Znak","toolbar":"Vstavi posebni znak"},"scayt":{"about":"O storitvi SCAYT","aboutTab":"O storitvi","addWord":"Dodaj besedo","allCaps":"Ignore All-Caps Words","dic_create":"Create","dic_delete":"Delete","dic_field_name":"Dictionary name","dic_info":"Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.","dic_rename":"Rename","dic_restore":"Restore","dictionariesTab":"Slovarji","disable":"Onemogoči SCAYT","emptyDic":"Ime slovarja ne more biti prazno.","enable":"Omogoči SCAYT","ignore":"Prezri","ignoreAll":"Prezri vse","ignoreDomainNames":"Ignore Domain Names","langs":"Jeziki","languagesTab":"Jeziki","mixedCase":"Ignore Words with Mixed Case","mixedWithDigits":"Ignore Words with Numbers","moreSuggestions":"Več predlogov","opera_title":"Not supported by Opera","options":"Možnosti","optionsTab":"Možnosti","title":"Črkovanje med tipkanjem","toggle":"Preklopi SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"Slog","panelTitle":"Oblikovalni Stili","panelTitle1":"Slogi odstavkov","panelTitle2":"Slogi besedila","panelTitle3":"Slogi objektov"},"table":{"border":"Velikost obrobe","caption":"Naslov","cell":{"menu":"Celica","insertBefore":"Vstavi celico pred","insertAfter":"Vstavi celico za","deleteCell":"Izbriši celice","merge":"Združi celice","mergeRight":"Združi desno","mergeDown":"Druži navzdol","splitHorizontal":"Razdeli celico vodoravno","splitVertical":"Razdeli celico navpično","title":"Lastnosti celice","cellType":"Vrsta celice","rowSpan":"Razpon vrstic","colSpan":"Razpon stolpcev","wordWrap":"Prelom besedila","hAlign":"Vodoravna poravnava","vAlign":"Navpična poravnava","alignBaseline":"Osnovnica","bgColor":"Barva ozadja","borderColor":"Barva obrobe","data":"Podatki","header":"Glava","yes":"Da","no":"Ne","invalidWidth":"Širina celice mora biti število.","invalidHeight":"Višina celice mora biti število.","invalidRowSpan":"Razpon vrstic mora biti celo število.","invalidColSpan":"Razpon stolpcev mora biti celo število.","chooseColor":"Izberi"},"cellPad":"Polnilo med celicami","cellSpace":"Razmik med celicami","column":{"menu":"Stolpec","insertBefore":"Vstavi stolpec pred","insertAfter":"Vstavi stolpec za","deleteColumn":"Izbriši stolpce"},"columns":"Stolpci","deleteTable":"Izbriši tabelo","headers":"Glave","headersBoth":"Oboje","headersColumn":"Prvi stolpec","headersNone":"Brez","headersRow":"Prva vrstica","invalidBorder":"Širina obrobe mora biti število.","invalidCellPadding":"Zamik celic mora biti število","invalidCellSpacing":"Razmik med celicami mora biti število.","invalidCols":"Število stolpcev mora biti večje od 0.","invalidHeight":"Višina tabele mora biti število.","invalidRows":"Število vrstic mora biti večje od 0.","invalidWidth":"Širina tabele mora biti število.","menu":"Lastnosti tabele","row":{"menu":"Vrstica","insertBefore":"Vstavi vrstico pred","insertAfter":"Vstavi vrstico za","deleteRow":"Izbriši vrstice"},"rows":"Vrstice","summary":"Povzetek","title":"Lastnosti tabele","toolbar":"Tabela","widthPc":"procentov","widthPx":"pik","widthUnit":"enota širine"},"undo":{"redo":"Ponovi","undo":"Razveljavi"},"wsc":{"btnIgnore":"Prezri","btnIgnoreAll":"Prezri vse","btnReplace":"Zamenjaj","btnReplaceAll":"Zamenjaj vse","btnUndo":"Razveljavi","changeTo":"Spremeni v","errorLoading":"Napaka pri nalaganju storitve programa na naslovu %s.","ieSpellDownload":"Črkovalnik ni nameščen. Ali ga želite prenesti sedaj?","manyChanges":"Črkovanje je končano: Spremenjenih je bilo %1 besed","noChanges":"Črkovanje je končano: Nobena beseda ni bila spremenjena","noMispell":"Črkovanje je končano: Brez napak","noSuggestions":"- Ni predlogov -","notAvailable":"Oprostite, storitev trenutno ni dosegljiva.","notInDic":"Ni v slovarju","oneChange":"Črkovanje je končano: Spremenjena je bila ena beseda","progress":"Preverjanje črkovanja se izvaja...","title":"Črkovalnik","toolbar":"Preveri črkovanje"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/sq.js b/assets/plugins/ckeditor/lang/sq.js deleted file mode 100644 index 3ceabd24..00000000 --- a/assets/plugins/ckeditor/lang/sq.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['sq']={"editor":"Redaktues i Pasur Teksti","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Shtyp ALT 0 për ndihmë","browseServer":"Shfleto në Server","url":"URL","protocol":"Protokolli","upload":"Ngarko","uploadSubmit":"Dërgo në server","image":"Imazh","flash":"Objekt flash","form":"Formular","checkbox":"Checkbox","radio":"Buton radio","textField":"Fushë tekst","textarea":"Hapësirë tekst","hiddenField":"Fushë e fshehur","button":"Buton","select":"Menu zgjedhjeje","imageButton":"Buton imazhi","notSet":"<e pazgjedhur>","id":"Id","name":"Emër","langDir":"Kod gjuhe","langDirLtr":"Nga e majta në të djathtë (LTR)","langDirRtl":"Nga e djathta në të majtë (RTL)","langCode":"Kod gjuhe","longDescr":"Përshkrim i hollësishëm","cssClass":"Klasa stili CSS","advisoryTitle":"Titull","cssStyle":"Stil","ok":"OK","cancel":"Anulo","close":"Mbyll","preview":"Parashiko","resize":"Ripërmaso","generalTab":"Të përgjithshme","advancedTab":"Të përparuara","validateNumberFailed":"Vlera e futur nuk është një numër","confirmNewPage":"Çdo ndryshim që nuk është ruajtur do humbasë. Je i sigurtë që dëshiron të krijosh një faqe të re?","confirmCancel":"Disa opsione kanë ndryshuar. Je i sigurtë që dëshiron ta mbyllësh dritaren?","options":"Opsione","target":"Objektivi","targetNew":"Dritare e re (_blank)","targetTop":"Dritare në plan të parë (_top)","targetSelf":"E njëjta dritare (_self)","targetParent":"Dritarja prind (_parent)","langDirLTR":"Nga e majta në të djathë (LTR)","langDirRTL":"Nga e djathta në të majtë (RTL)","styles":"Stil","cssClasses":"Klasa Stili CSS","width":"Gjerësi","height":"Lartësi","align":"Rreshtim","alignLeft":"Majtas","alignRight":"Djathtas","alignCenter":"Qendër","alignTop":"Lart","alignMiddle":"Në mes","alignBottom":"Poshtë","invalidValue":"Vlerë e pavlefshme","invalidHeight":"Lartësia duhet të jetë një numër","invalidWidth":"Gjerësia duhet të jetë një numër","invalidCssLength":"Vlera e fushës \"%1\" duhet të jetë një numër pozitiv me apo pa njësi matëse të vlefshme CSS (px, %, in, cm, mm, em, ex, pt ose pc).","invalidHtmlLength":"Vlera e fushës \"%1\" duhet të jetë një numër pozitiv me apo pa njësi matëse të vlefshme HTML (px ose %)","invalidInlineStyle":"Stili inline duhet të jetë një apo disa vlera të formatit \"emër: vlerë\", ndarë nga pikëpresje.","cssLengthTooltip":"Fut një numër për vlerën në pixel apo një numër me një njësi të vlefshme CSS (px, %, in, cm, mm, ex, pt, ose pc).","unavailable":"%1<span class=\"cke_accessibility\">, i padisponueshëm</span>"},"about":{"copy":"Të drejtat e kopjimit &copy; $1. Të gjitha të drejtat e rezervuara.","dlgTitle":"Rreth CKEditor","help":"Kontrollo $1 për ndihmë.","moreInfo":"Për informacione rreth licencave shih faqen tonë:","title":"Rreth CKEditor","userGuide":"Udhëzuesi i Shfrytëzuesit të CKEditor"},"basicstyles":{"bold":"Trash","italic":"Pjerrët","strike":"Nëpërmes","subscript":"Nën-skriptë","superscript":"Super-skriptë","underline":"Nënvijëzuar"},"blockquote":{"toolbar":"Citatet"},"clipboard":{"copy":"Kopjo","copyError":"Të dhënat e sigurisë së shfletuesit tuaj nuk lejojnë që redaktuesi automatikisht të kryej veprimin e kopjimit. Ju lutemi shfrytëzoni tastierën për këtë veprim (Ctrl/Cmd+C).","cut":"Preje","cutError":"Të dhënat e sigurisë së shfletuesit tuaj nuk lejojnë që redaktuesi automatikisht të kryej veprimin e prerjes. Ju lutemi shfrytëzoni tastierën për këtë veprim (Ctrl/Cmd+X).","paste":"Hidhe","pasteArea":"Hapësira Hedhëse","pasteMsg":"Ju lutemi hidhni brenda kutizës në vijim duke shfrytëzuar tastierën (<strong>Ctrl/Cmd+V</strong>) dhe shtypni Mirë.","securityMsg":"Për shkak të dhënave të sigurisë së shfletuesit tuaj, redaktuesi nuk është në gjendje të i qaset drejtpërdrejtë të dhanve të tabelës suaj të punës. Ju duhet të hidhni atë përsëri në këtë dritare.","title":"Hidhe"},"contextmenu":{"options":"Mundësitë e Menysë së Kontekstit"},"toolbar":{"toolbarCollapse":"Zvogëlo Shiritin","toolbarExpand":"Zgjero Shiritin","toolbarGroups":{"document":"Dokument","clipboard":"Tabela Punës/Ribëje","editing":"Duke Redaktuar","forms":"Formular","basicstyles":"Stili Bazë","paragraph":"Paragraf","links":"Nyjet","insert":"Shto","styles":"Stil","colors":"Ngjyrat","tools":"Mjetet"},"toolbars":"Shiritet e Redaktuesit"},"elementspath":{"eleLabel":"Rruga e elementeve","eleTitle":"%1 element"},"format":{"label":"Formati","panelTitle":"Formati i Paragrafit","tag_address":"Adresa","tag_div":"Normal (DIV)","tag_h1":"Titulli 1","tag_h2":"Titulli 2","tag_h3":"Titulli 3","tag_h4":"Titulli 4","tag_h5":"Titulli 5","tag_h6":"Titulli 6","tag_p":"Normal","tag_pre":"Formatuar"},"horizontalrule":{"toolbar":"Vendos Vijë Horizontale"},"image":{"alertUrl":"Ju lutemi shkruani URL-në e fotos","alt":"Tekst Alternativ","border":"Korniza","btnUpload":"Dërgo në server","button2Img":"Dëshironi të e ndërroni pullën e fotos së selektuar në një foto të thjeshtë?","hSpace":"HSpace","img2Button":"Dëshironi të ndryshoni foton e përzgjedhur në pullë?","infoTab":"Informacione mbi Fotografinë","linkTab":"Nyja","lockRatio":"Mbyll Racionin","menu":"Karakteristikat e Fotografisë","resetSize":"Rikthe Madhësinë","title":"Karakteristikat e Fotografisë","titleButton":"Karakteristikat e Pullës së Fotografisë","upload":"Ngarko","urlMissing":"Mungon URL e burimit të fotografisë.","vSpace":"Hapësira Vertikale","validateBorder":"Korniza duhet të jetë numër i plotë.","validateHSpace":"Hapësira horizontale duhet të jetë numër i plotë.","validateVSpace":"Hapësira vertikale duhet të jetë numër i plotë."},"indent":{"indent":"Rrite Identin","outdent":"Zvogëlo Identin"},"fakeobjects":{"anchor":"Spirancë","flash":"Objekt flash","hiddenfield":"Fushë e fshehur","iframe":"IFrame","unknown":"Objekt i Panjohur"},"link":{"acccessKey":"Sipas ID-së së Elementit","advanced":"Të përparuara","advisoryContentType":"Lloji i Përmbajtjes Këshillimore","advisoryTitle":"Titull","anchor":{"toolbar":"Spirancë","menu":"Redakto Spirancën","title":"Anchor Properties","name":"Emri i Spirancës","errorName":"Ju lutemi shkruani emrin e spirancës","remove":"Largo Spirancën"},"anchorId":"Sipas ID-së së Elementit","anchorName":"Sipas Emrit të Spirancës","charset":"Seti i Karaktereve të Burimeve të Nëdlidhura","cssClasses":"Klasa stili CSS","emailAddress":"Posta Elektronike","emailBody":"Trupi i Porosisë","emailSubject":"Titulli i Porosisë","id":"Id","info":"Informacione të Nyjes","langCode":"Kod gjuhe","langDir":"Drejtim teksti","langDirLTR":"Nga e majta në të djathë (LTR)","langDirRTL":"Nga e djathta në të majtë (RTL)","menu":"Redakto Nyjen","name":"Emër","noAnchors":"(Nuk ka asnjë spirancë në dokument)","noEmail":"Ju lutemi shkruani postën elektronike","noUrl":"Ju lutemi shkruani URL-në e nyjes","other":"<tjetër>","popupDependent":"E Varur (Netscape)","popupFeatures":"Karakteristikat e Dritares së Dialogut","popupFullScreen":"Ekran i Plotë (IE)","popupLeft":"Pozita Majtas","popupLocationBar":"Shiriti i Lokacionit","popupMenuBar":"Shiriti i Menysë","popupResizable":"I ndryshueshëm","popupScrollBars":"Scroll Bars","popupStatusBar":"Shiriti i Statutit","popupToolbar":"Shiriti i Mejteve","popupTop":"Top Pozita","rel":"Marrëdhëniet","selectAnchor":"Përzgjidh një Spirancë","styles":"Stil","tabIndex":"Tab Index","target":"Objektivi","targetFrame":"<frame>","targetFrameName":"Emri i Kornizës së Synuar","targetPopup":"<popup window>","targetPopupName":"Emri i Dritares së Dialogut","title":"Nyja","toAnchor":"Lidhu me spirancën në tekst","toEmail":"Posta Elektronike","toUrl":"URL","toolbar":"Nyja","type":"Lloji i Nyjes","unlink":"Largo Nyjen","upload":"Ngarko"},"list":{"bulletedlist":"Vendos/Largo Listën me Pika","numberedlist":"Vendos/Largo Listën me Numra"},"magicline":{"title":"Vendos paragraf këtu"},"maximize":{"maximize":"Zmadho","minimize":"Zvogëlo"},"pastetext":{"button":"Hidhe si tekst të thjeshtë","title":"Hidhe si Tekst të Thjeshtë"},"pastefromword":{"confirmCleanup":"Teksti që dëshironi të e hidhni siç duket është kopjuar nga Word-i. Dëshironi të e pastroni para se të e hidhni?","error":"Nuk ishte e mundur të fshiheshin të dhënat e hedhura për shkak të një gabimi të brendshëm","title":"Hidhe nga Word-i","toolbar":"Hidhe nga Word-i"},"removeformat":{"toolbar":"Largo Formatin"},"sourcearea":{"toolbar":"Burimi"},"specialchar":{"options":"Mundësitë për Karaktere Speciale","title":"Përzgjidh Karakter Special","toolbar":"Vendos Karakter Special"},"scayt":{"about":"About SCAYT","aboutTab":"About","addWord":"Add Word","allCaps":"Ignore All-Caps Words","dic_create":"Create","dic_delete":"Delete","dic_field_name":"Dictionary name","dic_info":"Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.","dic_rename":"Rename","dic_restore":"Restore","dictionariesTab":"Dictionaries","disable":"Disable SCAYT","emptyDic":"Dictionary name should not be empty.","enable":"Enable SCAYT","ignore":"Ignore","ignoreAll":"Ignore All","ignoreDomainNames":"Ignore Domain Names","langs":"Languages","languagesTab":"Languages","mixedCase":"Ignore Words with Mixed Case","mixedWithDigits":"Ignore Words with Numbers","moreSuggestions":"More suggestions","opera_title":"Not supported by Opera","options":"Options","optionsTab":"Options","title":"Spell Check As You Type","toggle":"Toggle SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"Stil","panelTitle":"Stilet e Formatimit","panelTitle1":"Stilet e Bllokut","panelTitle2":"Stili i Brendshëm","panelTitle3":"Stilet e Objektit"},"table":{"border":"Madhësia e kornizave","caption":"Titull","cell":{"menu":"Qeli","insertBefore":"Shto Qeli Para","insertAfter":"Shto Qeli Prapa","deleteCell":"Gris Qelitë","merge":"Bashko Qelitë","mergeRight":"Bashko Djathtas","mergeDown":"Bashko Poshtë","splitHorizontal":"Ndaj Qelinë Horizontalisht","splitVertical":"Ndaj Qelinë Vertikalisht","title":"Rekuizitat e Qelisë","cellType":"Lloji i Qelisë","rowSpan":"Bashko Rreshtat","colSpan":"Bashko Kolonat","wordWrap":"Fund i Fjalës","hAlign":"Bashkimi Horizontal","vAlign":"Bashkimi Vertikal","alignBaseline":"Baza","bgColor":"Ngjyra e Prapavijës","borderColor":"Ngjyra e Kornizave","data":"Të dhënat","header":"Koka","yes":"Po","no":"Jo","invalidWidth":"Gjerësia e qelisë duhet të jetë numër.","invalidHeight":"Lartësia e qelisë duhet të jetë numër.","invalidRowSpan":"Hapësira e rreshtave duhet të jetë numër i plotë.","invalidColSpan":"Hapësira e kolonave duhet të jetë numër i plotë.","chooseColor":"Përzgjidh"},"cellPad":"Mbushja e qelisë","cellSpace":"Hapësira e qelisë","column":{"menu":"Kolona","insertBefore":"Vendos Kolonë Para","insertAfter":"Vendos Kolonë Pas","deleteColumn":"Gris Kolonat"},"columns":"Kolonat","deleteTable":"Gris Tabelën","headers":"Kokat","headersBoth":"Së bashku","headersColumn":"Kolona e parë","headersNone":"Asnjë","headersRow":"Rreshti i Parë","invalidBorder":"Madhësia e kufinjve duhet të jetë numër.","invalidCellPadding":"Mbushja e qelisë duhet të jetë numër pozitiv.","invalidCellSpacing":"Hapësira e qelisë duhet të jetë numër pozitiv.","invalidCols":"Numri i kolonave duhet të jetë numër më i madh se 0.","invalidHeight":"Lartësia e tabelës duhet të jetë numër.","invalidRows":"Numri i rreshtave duhet të jetë numër më i madh se 0.","invalidWidth":"Gjerësia e tabelës duhet të jetë numër.","menu":"Karakteristikat e Tabelës","row":{"menu":"Rreshti","insertBefore":"Shto Rresht Para","insertAfter":"Shto Rresht Prapa","deleteRow":"Gris Rreshtat"},"rows":"Rreshtat","summary":"Përmbledhje","title":"Karakteristikat e Tabelës","toolbar":"Tabela","widthPc":"përqind","widthPx":"piksell","widthUnit":"njësia e gjerësisë"},"undo":{"redo":"Ribëje","undo":"Rizhbëje"},"wsc":{"btnIgnore":"Ignore","btnIgnoreAll":"Ignore All","btnReplace":"Replace","btnReplaceAll":"Replace All","btnUndo":"Undo","changeTo":"Change to","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Spell checker not installed. Do you want to download it now?","manyChanges":"Spell check complete: %1 words changed","noChanges":"Spell check complete: No words changed","noMispell":"Spell check complete: No misspellings found","noSuggestions":"- No suggestions -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Not in dictionary","oneChange":"Spell check complete: One word changed","progress":"Spell check in progress...","title":"Spell Check","toolbar":"Check Spelling"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/sr-latn.js b/assets/plugins/ckeditor/lang/sr-latn.js deleted file mode 100644 index d2fdb759..00000000 --- a/assets/plugins/ckeditor/lang/sr-latn.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['sr-latn']={"editor":"Bogati uređivač teksta","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Pretraži server","url":"URL","protocol":"Protokol","upload":"Pošalji","uploadSubmit":"Pošalji na server","image":"Slika","flash":"Fleš","form":"Forma","checkbox":"Polje za potvrdu","radio":"Radio-dugme","textField":"Tekstualno polje","textarea":"Zona teksta","hiddenField":"Skriveno polje","button":"Dugme","select":"Izborno polje","imageButton":"Dugme sa slikom","notSet":"<nije postavljeno>","id":"Id","name":"Naziv","langDir":"Smer jezika","langDirLtr":"S leva na desno (LTR)","langDirRtl":"S desna na levo (RTL)","langCode":"Kôd jezika","longDescr":"Pun opis URL","cssClass":"Stylesheet klase","advisoryTitle":"Advisory naslov","cssStyle":"Stil","ok":"OK","cancel":"Otkaži","close":"Zatvori","preview":"Izgled stranice","resize":"Resize","generalTab":"Opšte","advancedTab":"Napredni tagovi","validateNumberFailed":"Ova vrednost nije broj.","confirmNewPage":"Nesačuvane promene ovog sadržaja će biti izgubljene. Jeste li sigurni da želita da učitate novu stranu?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Opcije","target":"Meta","targetNew":"Novi prozor (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Isti prozor (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"S leva na desno (LTR)","langDirRTL":"S desna na levo (RTL)","styles":"Stil","cssClasses":"Stylesheet klase","width":"Širina","height":"Visina","align":"Ravnanje","alignLeft":"Levo","alignRight":"Desno","alignCenter":"Sredina","alignTop":"Vrh","alignMiddle":"Sredina","alignBottom":"Dole","invalidValue":"Invalid value.","invalidHeight":"Visina mora biti broj.","invalidWidth":"Širina mora biti broj.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>"},"about":{"copy":"Copyright &copy; $1. All rights reserved.","dlgTitle":"About CKEditor","help":"Check $1 for help.","moreInfo":"For licensing information please visit our web site:","title":"About CKEditor","userGuide":"CKEditor User's Guide"},"basicstyles":{"bold":"Podebljano","italic":"Kurziv","strike":"Precrtano","subscript":"Indeks","superscript":"Stepen","underline":"Podvučeno"},"blockquote":{"toolbar":"Block Quote"},"clipboard":{"copy":"Kopiraj","copyError":"Sigurnosna podešavanja Vašeg pretraživača ne dozvoljavaju operacije automatskog kopiranja teksta. Molimo Vas da koristite prečicu sa tastature (Ctrl/Cmd+C).","cut":"Iseci","cutError":"Sigurnosna podešavanja Vašeg pretraživača ne dozvoljavaju operacije automatskog isecanja teksta. Molimo Vas da koristite prečicu sa tastature (Ctrl/Cmd+X).","paste":"Zalepi","pasteArea":"Prostor za lepljenje","pasteMsg":"Molimo Vas da zalepite unutar donje povrine koristeći tastaturnu prečicu (<STRONG>Ctrl/Cmd+V</STRONG>) i da pritisnete <STRONG>OK</STRONG>.","securityMsg":"Zbog sigurnosnih postavki vašeg pregledača, editor nije u mogućnosti da direktno pristupi podacima u klipbordu. Potrebno je da zalepite još jednom u ovom prozoru.","title":"Zalepi"},"contextmenu":{"options":"Context Menu Options"},"toolbar":{"toolbarCollapse":"Suzi alatnu traku","toolbarExpand":"Proširi alatnu traku","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Alatne trake"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"format":{"label":"Format","panelTitle":"Format","tag_address":"Adresa","tag_div":"Normalno (DIV)","tag_h1":"Naslov 1","tag_h2":"Naslov 2","tag_h3":"Naslov 3","tag_h4":"Naslov 4","tag_h5":"Naslov 5","tag_h6":"Naslov 6","tag_p":"Normal","tag_pre":"Formatirano"},"horizontalrule":{"toolbar":"Unesi horizontalnu liniju"},"image":{"alertUrl":"Unesite URL slike","alt":"Alternativni tekst","border":"Okvir","btnUpload":"Pošalji na server","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"HSpace","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"Info slike","linkTab":"Link","lockRatio":"Zaključaj odnos","menu":"Osobine slika","resetSize":"Resetuj veličinu","title":"Osobine slika","titleButton":"Osobine dugmeta sa slikom","upload":"Pošalji","urlMissing":"Image source URL is missing.","vSpace":"VSpace","validateBorder":"Border must be a whole number.","validateHSpace":"HSpace must be a whole number.","validateVSpace":"VSpace must be a whole number."},"indent":{"indent":"Uvećaj levu marginu","outdent":"Smanji levu marginu"},"fakeobjects":{"anchor":"Unesi/izmeni sidro","flash":"Flash Animation","hiddenfield":"Skriveno polje","iframe":"IFrame","unknown":"Unknown Object"},"link":{"acccessKey":"Pristupni taster","advanced":"Napredni tagovi","advisoryContentType":"Advisory vrsta sadržaja","advisoryTitle":"Advisory naslov","anchor":{"toolbar":"Unesi/izmeni sidro","menu":"Osobine sidra","title":"Osobine sidra","name":"Naziv sidra","errorName":"Unesite naziv sidra","remove":"Ukloni sidro"},"anchorId":"Po Id-u elementa","anchorName":"Po nazivu sidra","charset":"Linked Resource Charset","cssClasses":"Stylesheet klase","emailAddress":"E-Mail adresa","emailBody":"Sadržaj poruke","emailSubject":"Naslov","id":"Id","info":"Link Info","langCode":"Smer jezika","langDir":"Smer jezika","langDirLTR":"S leva na desno (LTR)","langDirRTL":"S desna na levo (RTL)","menu":"Izmeni link","name":"Naziv","noAnchors":"(Nema dostupnih sidra)","noEmail":"Otkucajte adresu elektronske pote","noUrl":"Unesite URL linka","other":"<остало>","popupDependent":"Zavisno (Netscape)","popupFeatures":"Mogućnosti popup prozora","popupFullScreen":"Prikaz preko celog ekrana (IE)","popupLeft":"Od leve ivice ekrana (px)","popupLocationBar":"Lokacija","popupMenuBar":"Kontekstni meni","popupResizable":"Promenljive veličine","popupScrollBars":"Scroll bar","popupStatusBar":"Statusna linija","popupToolbar":"Toolbar","popupTop":"Od vrha ekrana (px)","rel":"Odnos","selectAnchor":"Odaberi sidro","styles":"Stil","tabIndex":"Tab indeks","target":"Meta","targetFrame":"<okvir>","targetFrameName":"Naziv odredišnog frejma","targetPopup":"<popup prozor>","targetPopupName":"Naziv popup prozora","title":"Link","toAnchor":"Sidro na ovoj stranici","toEmail":"E-Mail","toUrl":"URL","toolbar":"Unesi/izmeni link","type":"Vrsta linka","unlink":"Ukloni link","upload":"Pošalji"},"list":{"bulletedlist":"Nenabrojiva lista","numberedlist":"Nabrojiva lista"},"magicline":{"title":"Insert paragraph here"},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"pastetext":{"button":"Zalepi kao čist tekst","title":"Zalepi kao čist tekst"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Zalepi iz Worda","toolbar":"Zalepi iz Worda"},"removeformat":{"toolbar":"Ukloni formatiranje"},"sourcearea":{"toolbar":"Kôd"},"specialchar":{"options":"Special Character Options","title":"Odaberite specijalni karakter","toolbar":"Unesi specijalni karakter"},"scayt":{"about":"About SCAYT","aboutTab":"About","addWord":"Add Word","allCaps":"Ignore All-Caps Words","dic_create":"Create","dic_delete":"Delete","dic_field_name":"Dictionary name","dic_info":"Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.","dic_rename":"Rename","dic_restore":"Restore","dictionariesTab":"Dictionaries","disable":"Disable SCAYT","emptyDic":"Dictionary name should not be empty.","enable":"Enable SCAYT","ignore":"Ignore","ignoreAll":"Ignore All","ignoreDomainNames":"Ignore Domain Names","langs":"Languages","languagesTab":"Languages","mixedCase":"Ignore Words with Mixed Case","mixedWithDigits":"Ignore Words with Numbers","moreSuggestions":"More suggestions","opera_title":"Not supported by Opera","options":"Options","optionsTab":"Options","title":"Spell Check As You Type","toggle":"Toggle SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"Stil","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"table":{"border":"Veličina okvira","caption":"Naslov tabele","cell":{"menu":"Cell","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"Obriši ćelije","merge":"Spoj celije","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Razmak ćelija","cellSpace":"Ćelijski prostor","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Obriši kolone"},"columns":"Kolona","deleteTable":"Izbriši tabelu","headers":"Zaglavlja","headersBoth":"Oba","headersColumn":"Prva kolona","headersNone":"None","headersRow":"Prvi red","invalidBorder":"Veličina okvira mora biti broj.","invalidCellPadding":"Padding polja mora biti pozitivan broj.","invalidCellSpacing":"Razmak između ćelija mora biti pozitivan broj.","invalidCols":"Broj kolona mora biti broj veći od 0.","invalidHeight":"Visina tabele mora biti broj.","invalidRows":"Broj redova mora biti veći od 0.","invalidWidth":"Širina tabele mora biti broj.","menu":"Osobine tabele","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Obriši redove"},"rows":"Redova","summary":"Sažetak","title":"Osobine tabele","toolbar":"Tabela","widthPc":"procenata","widthPx":"piksela","widthUnit":"jedinica za širinu"},"undo":{"redo":"Ponovi akciju","undo":"Poni�ti akciju"},"wsc":{"btnIgnore":"Ignoriši","btnIgnoreAll":"Ignoriši sve","btnReplace":"Zameni","btnReplaceAll":"Zameni sve","btnUndo":"Vrati akciju","changeTo":"Izmeni","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Provera spelovanja nije instalirana. Da li želite da je skinete sa Interneta?","manyChanges":"Provera spelovanja završena: %1 reč(i) je izmenjeno","noChanges":"Provera spelovanja završena: Nije izmenjena nijedna rec","noMispell":"Provera spelovanja završena: greške nisu pronadene","noSuggestions":"- Bez sugestija -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Nije u rečniku","oneChange":"Provera spelovanja završena: Izmenjena je jedna reč","progress":"Provera spelovanja u toku...","title":"Spell Check","toolbar":"Proveri spelovanje"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/sr.js b/assets/plugins/ckeditor/lang/sr.js deleted file mode 100644 index 7f3693e0..00000000 --- a/assets/plugins/ckeditor/lang/sr.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['sr']={"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Претражи сервер","url":"УРЛ","protocol":"Протокол","upload":"Пошаљи","uploadSubmit":"Пошаљи на сервер","image":"Слика","flash":"Флеш елемент","form":"Форма","checkbox":"Поље за потврду","radio":"Радио-дугме","textField":"Текстуално поље","textarea":"Зона текста","hiddenField":"Скривено поље","button":"Дугме","select":"Изборно поље","imageButton":"Дугме са сликом","notSet":"<није постављено>","id":"Ид","name":"Назив","langDir":"Смер језика","langDirLtr":"С лева на десно (LTR)","langDirRtl":"С десна на лево (RTL)","langCode":"Kôд језика","longDescr":"Пун опис УРЛ","cssClass":"Stylesheet класе","advisoryTitle":"Advisory наслов","cssStyle":"Стил","ok":"OK","cancel":"Oткажи","close":"Затвори","preview":"Изглед странице","resize":"Resize","generalTab":"Опште","advancedTab":"Напредни тагови","validateNumberFailed":"Ова вредност није цигра.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Опције","target":"Meтa","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"С лева на десно (LTR)","langDirRTL":"С десна на лево (RTL)","styles":"Стил","cssClasses":"Stylesheet класе","width":"Ширина","height":"Висина","align":"Равнање","alignLeft":"Лево","alignRight":"Десно","alignCenter":"Средина","alignTop":"Врх","alignMiddle":"Средина","alignBottom":"Доле","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>"},"about":{"copy":"Copyright &copy; $1. All rights reserved.","dlgTitle":"About CKEditor","help":"Check $1 for help.","moreInfo":"For licensing information please visit our web site:","title":"About CKEditor","userGuide":"CKEditor User's Guide"},"basicstyles":{"bold":"Подебљано","italic":"Курзив","strike":"Прецртано","subscript":"Индекс","superscript":"Степен","underline":"Подвучено"},"blockquote":{"toolbar":"Block Quote"},"clipboard":{"copy":"Копирај","copyError":"Сигурносна подешавања Вашег претраживача не дозвољавају операције аутоматског копирања текста. Молимо Вас да користите пречицу са тастатуре (Ctrl/Cmd+C).","cut":"Исеци","cutError":"Сигурносна подешавања Вашег претраживача не дозвољавају операције аутоматског исецања текста. Молимо Вас да користите пречицу са тастатуре (Ctrl/Cmd+X).","paste":"Залепи","pasteArea":"Залепи зону","pasteMsg":"Молимо Вас да залепите унутар доње површине користећи тастатурну пречицу (<STRONG>Ctrl/Cmd+V</STRONG>) и да притиснете <STRONG>OK</STRONG>.","securityMsg":"Због сигурносних подешавања претраживача, едитор не може да приступи оставу. Требате да га поново залепите у овом прозору.","title":"Залепи"},"contextmenu":{"options":"Context Menu Options"},"toolbar":{"toolbarCollapse":"Склопи алатну траку","toolbarExpand":"Прошири алатну траку","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Едитор алатне траке"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"format":{"label":"Формат","panelTitle":"Формат","tag_address":"Adresa","tag_div":"Нормално (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatirano"},"horizontalrule":{"toolbar":"Унеси хоризонталну линију"},"image":{"alertUrl":"Унесите УРЛ слике","alt":"Алтернативни текст","border":"Оквир","btnUpload":"Пошаљи на сервер","button2Img":"Да ли желите да промените одабрану слику дугмета као једноставну слику?","hSpace":"HSpace","img2Button":"Да ли желите да промените одабрану слику у слику дугмета?","infoTab":"Инфо слике","linkTab":"Линк","lockRatio":"Закључај однос","menu":"Особине слика","resetSize":"Ресетуј величину","title":"Особине слика","titleButton":"Особине дугмета са сликом","upload":"Пошаљи","urlMissing":"Недостаје УРЛ слике.","vSpace":"VSpace","validateBorder":"Ивица треба да буде цифра.","validateHSpace":"HSpace треба да буде цифра.","validateVSpace":"VSpace треба да буде цифра."},"indent":{"indent":"Увећај леву маргину","outdent":"Смањи леву маргину"},"fakeobjects":{"anchor":"Anchor","flash":"Flash Animation","hiddenfield":"Hidden Field","iframe":"IFrame","unknown":"Unknown Object"},"link":{"acccessKey":"Приступни тастер","advanced":"Напредни тагови","advisoryContentType":"Advisory врста садржаја","advisoryTitle":"Advisory наслов","anchor":{"toolbar":"Унеси/измени сидро","menu":"Особине сидра","title":"Особине сидра","name":"Име сидра","errorName":"Молимо Вас да унесете име сидра","remove":"Remove Anchor"},"anchorId":"Пo Ид-jу елемента","anchorName":"По називу сидра","charset":"Linked Resource Charset","cssClasses":"Stylesheet класе","emailAddress":"Адреса електронске поште","emailBody":"Садржај поруке","emailSubject":"Наслов","id":"Ид","info":"Линк инфо","langCode":"Смер језика","langDir":"Смер језика","langDirLTR":"С лева на десно (LTR)","langDirRTL":"С десна на лево (RTL)","menu":"Промени линк","name":"Назив","noAnchors":"(Нема доступних сидра)","noEmail":"Откуцајте адресу електронске поште","noUrl":"Унесите УРЛ линка","other":"<друго>","popupDependent":"Зависно (Netscape)","popupFeatures":"Могућности искачућег прозора","popupFullScreen":"Приказ преко целог екрана (ИE)","popupLeft":"Од леве ивице екрана (пиксела)","popupLocationBar":"Локација","popupMenuBar":"Контекстни мени","popupResizable":"Величина се мења","popupScrollBars":"Скрол бар","popupStatusBar":"Статусна линија","popupToolbar":"Toolbar","popupTop":"Од врха екрана (пиксела)","rel":"Однос","selectAnchor":"Одабери сидро","styles":"Стил","tabIndex":"Таб индекс","target":"Meтa","targetFrame":"<оквир>","targetFrameName":"Назив одредишног фрејма","targetPopup":"<искачући прозор>","targetPopupName":"Назив искачућег прозора","title":"Линк","toAnchor":"Сидро на овој страници","toEmail":"Eлектронска пошта","toUrl":"УРЛ","toolbar":"Унеси/измени линк","type":"Врста линка","unlink":"Уклони линк","upload":"Пошаљи"},"list":{"bulletedlist":"Ненабројива листа","numberedlist":"Набројиву листу"},"magicline":{"title":"Insert paragraph here"},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"pastetext":{"button":"Залепи као чист текст","title":"Залепи као чист текст"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Залепи из Worda","toolbar":"Залепи из Worda"},"removeformat":{"toolbar":"Уклони форматирање"},"sourcearea":{"toolbar":"Kôд"},"specialchar":{"options":"Опције специјалног карактера","title":"Одаберите специјални карактер","toolbar":"Унеси специјални карактер"},"scayt":{"about":"About SCAYT","aboutTab":"About","addWord":"Add Word","allCaps":"Ignore All-Caps Words","dic_create":"Create","dic_delete":"Delete","dic_field_name":"Dictionary name","dic_info":"Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.","dic_rename":"Rename","dic_restore":"Restore","dictionariesTab":"Dictionaries","disable":"Disable SCAYT","emptyDic":"Dictionary name should not be empty.","enable":"Enable SCAYT","ignore":"Ignore","ignoreAll":"Ignore All","ignoreDomainNames":"Ignore Domain Names","langs":"Languages","languagesTab":"Languages","mixedCase":"Ignore Words with Mixed Case","mixedWithDigits":"Ignore Words with Numbers","moreSuggestions":"More suggestions","opera_title":"Not supported by Opera","options":"Options","optionsTab":"Options","title":"Spell Check As You Type","toggle":"Toggle SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"Стил","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"table":{"border":"Величина оквира","caption":"Наслов табеле","cell":{"menu":"Cell","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"Обриши ћелије","merge":"Спој ћелије","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Размак ћелија","cellSpace":"Ћелијски простор","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Обриши колоне"},"columns":"Kолона","deleteTable":"Обриши таблу","headers":"Поглавља","headersBoth":"Оба","headersColumn":"Прва колона","headersNone":"None","headersRow":"Први ред","invalidBorder":"Величина ивице треба да буде цифра.","invalidCellPadding":"Пуњење ћелије треба да буде позитивна цифра.","invalidCellSpacing":"Размак ћелије треба да буде позитивна цифра.","invalidCols":"Број колона треба да буде цифра већа од 0.","invalidHeight":"Висина табеле треба да буде цифра.","invalidRows":"Број реда треба да буде цифра већа од 0.","invalidWidth":"Ширина табеле треба да буде цифра.","menu":"Особине табеле","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Обриши редове"},"rows":"Редова","summary":"Резиме","title":"Особине табеле","toolbar":"Табела","widthPc":"процената","widthPx":"пиксела","widthUnit":"јединица ширине"},"undo":{"redo":"Понови акцију","undo":"Поништи акцију"},"wsc":{"btnIgnore":"Игнориши","btnIgnoreAll":"Игнориши све","btnReplace":"Замени","btnReplaceAll":"Замени све","btnUndo":"Врати акцију","changeTo":"Измени","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Провера спеловања није инсталирана. Да ли желите да је скинете са Интернета?","manyChanges":"Провера спеловања завршена: %1 реч(и) је измењено","noChanges":"Провера спеловања завршена: Није измењена ниједна реч","noMispell":"Провера спеловања завршена: грешке нису пронађене","noSuggestions":"- Без сугестија -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Није у речнику","oneChange":"Провера спеловања завршена: Измењена је једна реч","progress":"Провера спеловања у току...","title":"Spell Check","toolbar":"Провери спеловање"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/sv.js b/assets/plugins/ckeditor/lang/sv.js deleted file mode 100644 index 6506a92f..00000000 --- a/assets/plugins/ckeditor/lang/sv.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['sv']={"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Tryck ALT 0 för hjälp","browseServer":"Bläddra på server","url":"URL","protocol":"Protokoll","upload":"Ladda upp","uploadSubmit":"Skicka till server","image":"Bild","flash":"Flash","form":"Formulär","checkbox":"Kryssruta","radio":"Alternativknapp","textField":"Textfält","textarea":"Textruta","hiddenField":"Dolt fält","button":"Knapp","select":"Flervalslista","imageButton":"Bildknapp","notSet":"<ej angivet>","id":"Id","name":"Namn","langDir":"Språkriktning","langDirLtr":"Vänster till Höger (VTH)","langDirRtl":"Höger till Vänster (HTV)","langCode":"Språkkod","longDescr":"URL-beskrivning","cssClass":"Stilmall","advisoryTitle":"Titel","cssStyle":"Stilmall","ok":"OK","cancel":"Avbryt","close":"Stäng","preview":"Förhandsgranska","resize":"Dra för att ändra storlek","generalTab":"Allmänt","advancedTab":"Avancerad","validateNumberFailed":"Värdet är inte ett nummer.","confirmNewPage":"Alla ändringar i innehållet kommer att förloras. Är du säker på att du vill ladda en ny sida?","confirmCancel":"Några av alternativen har ändrats. Är du säker på att du vill stänga dialogrutan?","options":"Alternativ","target":"Mål","targetNew":"Nytt fönster (_blank)","targetTop":"Översta fönstret (_top)","targetSelf":"Samma fönster (_self)","targetParent":"Föregående fönster (_parent)","langDirLTR":"Vänster till höger (LTR)","langDirRTL":"Höger till vänster (RTL)","styles":"Stil","cssClasses":"Stilmallar","width":"Bredd","height":"Höjd","align":"Justering","alignLeft":"Vänster","alignRight":"Höger","alignCenter":"Centrerad","alignTop":"Överkant","alignMiddle":"Mitten","alignBottom":"Nederkant","invalidValue":"Felaktigt värde.","invalidHeight":"Höjd måste vara ett nummer.","invalidWidth":"Bredd måste vara ett nummer.","invalidCssLength":"Värdet för fältet \"%1\" måste vara ett positivt nummer med eller utan CSS-mätenheter (px, %, in, cm, mm, em, ex, pt, eller pc).","invalidHtmlLength":"Värdet för fältet \"%1\" måste vara ett positivt nummer med eller utan godkända HTML-mätenheter (px eller %).","invalidInlineStyle":"Det angivna värdet för style måste innehålla en eller flera tupler separerade med semikolon i följande format: \"name : value\"","cssLengthTooltip":"Ange ett nummer i pixlar eller ett nummer men godkänd CSS-mätenhet (px, %, in, cm, mm, em, ex, pt, eller pc).","unavailable":"%1<span class=\"cke_accessibility\">, Ej tillgänglig</span>"},"about":{"copy":"Copyright &copy; $1. Alla rättigheter reserverade.","dlgTitle":"Om CKEditor","help":"Se $1 för hjälp.","moreInfo":"För information av licensiering besök vår hemsida:","title":"Om CKEditor","userGuide":"CKEditor User's Guide"},"basicstyles":{"bold":"Fet","italic":"Kursiv","strike":"Genomstruken","subscript":"Nedsänkta tecken","superscript":"Upphöjda tecken","underline":"Understruken"},"blockquote":{"toolbar":"Blockcitat"},"clipboard":{"copy":"Kopiera","copyError":"Säkerhetsinställningar i Er webbläsare tillåter inte åtgärden kopiera. Använd (Ctrl/Cmd+C) istället.","cut":"Klipp ut","cutError":"Säkerhetsinställningar i Er webbläsare tillåter inte åtgärden klipp ut. Använd (Ctrl/Cmd+X) istället.","paste":"Klistra in","pasteArea":"Paste Area","pasteMsg":"Var god och klistra in Er text i rutan nedan genom att använda (<strong>Ctrl/Cmd+V</strong>) klicka sen på OK.","securityMsg":"På grund av din webbläsares säkerhetsinställningar kan verktyget inte få åtkomst till urklippsdatan. Var god och använd detta fönster istället.","title":"Klistra in"},"contextmenu":{"options":"Context Menu Options"},"toolbar":{"toolbarCollapse":"Dölj verktygsfält","toolbarExpand":"Visa verktygsfält","toolbarGroups":{"document":"Dokument","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Redigera verktygsfält"},"elementspath":{"eleLabel":"Elementets sökväg","eleTitle":"%1 element"},"format":{"label":"Teckenformat","panelTitle":"Teckenformat","tag_address":"Adress","tag_div":"Normal (DIV)","tag_h1":"Rubrik 1","tag_h2":"Rubrik 2","tag_h3":"Rubrik 3","tag_h4":"Rubrik 4","tag_h5":"Rubrik 5","tag_h6":"Rubrik 6","tag_p":"Normal","tag_pre":"Formaterad"},"horizontalrule":{"toolbar":"Infoga horisontal linje"},"image":{"alertUrl":"Var god och ange bildens URL","alt":"Alternativ text","border":"Kant","btnUpload":"Skicka till server","button2Img":"Vill du omvandla den valda bildknappen på en enkel bild?","hSpace":"Horis. marginal","img2Button":"Vill du omvandla den valda bildknappen på en enkel bild?","infoTab":"Bildinformation","linkTab":"Länk","lockRatio":"Lås höjd/bredd förhållanden","menu":"Bildegenskaper","resetSize":"Återställ storlek","title":"Bildegenskaper","titleButton":"Egenskaper för bildknapp","upload":"Ladda upp","urlMissing":"Bildkällans URL saknas.","vSpace":"Vert. marginal","validateBorder":"Kantlinje måste vara ett heltal.","validateHSpace":"HSpace måste vara ett heltal.","validateVSpace":"VSpace måste vara ett heltal."},"indent":{"indent":"Öka indrag","outdent":"Minska indrag"},"fakeobjects":{"anchor":"Ankare","flash":"Flashanimation","hiddenfield":"Gömt fält","iframe":"iFrame","unknown":"Okänt objekt"},"link":{"acccessKey":"Behörighetsnyckel","advanced":"Avancerad","advisoryContentType":"Innehållstyp","advisoryTitle":"Titel","anchor":{"toolbar":"Infoga/Redigera ankarlänk","menu":"Egenskaper för ankarlänk","title":"Egenskaper för ankarlänk","name":"Ankarnamn","errorName":"Var god ange ett ankarnamn","remove":"Radera ankare"},"anchorId":"Efter element-id","anchorName":"Efter ankarnamn","charset":"Teckenuppställning","cssClasses":"Stilmall","emailAddress":"E-postadress","emailBody":"Innehåll","emailSubject":"Ämne","id":"Id","info":"Länkinformation","langCode":"Språkkod","langDir":"Språkriktning","langDirLTR":"Vänster till höger (VTH)","langDirRTL":"Höger till vänster (HTV)","menu":"Redigera länk","name":"Namn","noAnchors":"(Inga ankare kunde hittas)","noEmail":"Var god ange e-postadress","noUrl":"Var god ange länkens URL","other":"<annan>","popupDependent":"Beroende (endast Netscape)","popupFeatures":"Popup-fönstrets egenskaper","popupFullScreen":"Helskärm (endast IE)","popupLeft":"Position från vänster","popupLocationBar":"Adressfält","popupMenuBar":"Menyfält","popupResizable":"Resizable","popupScrollBars":"Scrolllista","popupStatusBar":"Statusfält","popupToolbar":"Verktygsfält","popupTop":"Position från sidans topp","rel":"Förhållande","selectAnchor":"Välj ett ankare","styles":"Stilmall","tabIndex":"Tabindex","target":"Mål","targetFrame":"<ram>","targetFrameName":"Målets ramnamn","targetPopup":"<popup-fönster>","targetPopupName":"Popup-fönstrets namn","title":"Länk","toAnchor":"Länk till ankare i texten","toEmail":"E-post","toUrl":"URL","toolbar":"Infoga/Redigera länk","type":"Länktyp","unlink":"Radera länk","upload":"Ladda upp"},"list":{"bulletedlist":"Punktlista","numberedlist":"Numrerad lista"},"magicline":{"title":"Infoga paragraf här"},"maximize":{"maximize":"Maximera","minimize":"Minimera"},"pastetext":{"button":"Klistra in som vanlig text","title":"Klistra in som vanlig text"},"pastefromword":{"confirmCleanup":"Texten du vill klistra in verkar vara kopierad från Word. Vill du rensa den innan du klistrar in den?","error":"Det var inte möjligt att städa upp den inklistrade data på grund av ett internt fel","title":"Klistra in från Word","toolbar":"Klistra in från Word"},"removeformat":{"toolbar":"Radera formatering"},"sourcearea":{"toolbar":"Källa"},"specialchar":{"options":"Alternativ för utökade tecken","title":"Välj utökat tecken","toolbar":"Klistra in utökat tecken"},"scayt":{"about":"Om SCAYT","aboutTab":"Om","addWord":"Lägg till ord","allCaps":"Ignorera alla ord med enbart versaler","dic_create":"Skapa","dic_delete":"Ta bort","dic_field_name":"Ordlistans namn","dic_info":"Inledningsvis lagras ordlistan i en cookie. När ordlista växer till en punkt där det inte kan lagras i en cookie, lagras den på vår server. För att lagra din personliga ordlista på vår server du ska ange ett namn för din ordbok. Om du redan har en lagrad ordbok, skriv namnet och klicka på knappen Återställ.","dic_rename":"Byt namn","dic_restore":"Återställ","dictionariesTab":"Ordlistor","disable":"Inaktivera SCAYT","emptyDic":"Ordlistans namn får ej vara tomt.","enable":"Aktivera SCAYT","ignore":"Ignorera","ignoreAll":"Ignorera alla","ignoreDomainNames":"Ignorera domännamn","langs":"Språk","languagesTab":"Språk","mixedCase":"Ignorera ord med blandat shiftläge","mixedWithDigits":"Ignorera ord med nummer","moreSuggestions":"Fler förslag","opera_title":"Stöds ej av Opera","options":"Inställningar","optionsTab":"Inställningar","title":"Stavningskontroll medan du skriver","toggle":"Växla SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"Anpassad stil","panelTitle":"Formatmallar","panelTitle1":"Blockstil","panelTitle2":"Inbäddad stil","panelTitle3":"Objektets stil"},"table":{"border":"Kantstorlek","caption":"Rubrik","cell":{"menu":"Cell","insertBefore":"Lägg till cell före","insertAfter":"Lägg till cell efter","deleteCell":"Radera celler","merge":"Sammanfoga celler","mergeRight":"Sammanfoga höger","mergeDown":"Sammanfoga ner","splitHorizontal":"Dela cell horisontellt","splitVertical":"Dela cell vertikalt","title":"Egenskaper för cell","cellType":"Celltyp","rowSpan":"Rad spann","colSpan":"Kolumnen spann","wordWrap":"Radbrytning","hAlign":"Horisontell justering","vAlign":"Vertikal justering","alignBaseline":"Baslinje","bgColor":"Bakgrundsfärg","borderColor":"Ramfärg","data":"Data","header":"Rubrik","yes":"Ja","no":"Nej","invalidWidth":"Cellens bredd måste vara ett nummer.","invalidHeight":"Cellens höjd måste vara ett nummer.","invalidRowSpan":"Radutvidgning måste vara ett heltal.","invalidColSpan":"Kolumn måste vara ett heltal.","chooseColor":"Välj"},"cellPad":"Cellutfyllnad","cellSpace":"Cellavstånd","column":{"menu":"Kolumn","insertBefore":"Lägg till kolumn före","insertAfter":"Lägg till kolumn efter","deleteColumn":"Radera kolumn"},"columns":"Kolumner","deleteTable":"Radera tabell","headers":"Rubriker","headersBoth":"Båda","headersColumn":"Första kolumnen","headersNone":"Ingen","headersRow":"Första raden","invalidBorder":"Ram måste vara ett nummer.","invalidCellPadding":"Luft i cell måste vara ett nummer.","invalidCellSpacing":"Luft i cell måste vara ett nummer.","invalidCols":"Antal kolumner måste vara ett nummer större än 0.","invalidHeight":"Tabellens höjd måste vara ett nummer.","invalidRows":"Antal rader måste vara större än 0.","invalidWidth":"Tabell måste vara ett nummer.","menu":"Tabellegenskaper","row":{"menu":"Rad","insertBefore":"Lägg till rad före","insertAfter":"Lägg till rad efter","deleteRow":"Radera rad"},"rows":"Rader","summary":"Sammanfattning","title":"Tabellegenskaper","toolbar":"Tabell","widthPc":"procent","widthPx":"pixlar","widthUnit":"enhet bredd"},"undo":{"redo":"Gör om","undo":"Ångra"},"wsc":{"btnIgnore":"Ignorera","btnIgnoreAll":"Ignorera alla","btnReplace":"Ersätt","btnReplaceAll":"Ersätt alla","btnUndo":"Ångra","changeTo":"Ändra till","errorLoading":"Tjänsten är ej tillgänglig: %s.","ieSpellDownload":"Stavningskontrollen är ej installerad. Vill du göra det nu?","manyChanges":"Stavningskontroll slutförd: %1 ord rättades.","noChanges":"Stavningskontroll slutförd: Inga ord rättades.","noMispell":"Stavningskontroll slutförd: Inga stavfel påträffades.","noSuggestions":"- Förslag saknas -","notAvailable":"Tyvärr är tjänsten ej tillgänglig nu","notInDic":"Saknas i ordlistan","oneChange":"Stavningskontroll slutförd: Ett ord rättades.","progress":"Stavningskontroll pågår...","title":"Kontrollera stavning","toolbar":"Stavningskontroll"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/th.js b/assets/plugins/ckeditor/lang/th.js deleted file mode 100644 index 4f22202f..00000000 --- a/assets/plugins/ckeditor/lang/th.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['th']={"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"กด ALT 0 หากต้องการความช่วยเหลือ","browseServer":"เปิดหน้าต่างจัดการไฟล์อัพโหลด","url":"ที่อยู่อ้างอิง URL","protocol":"โปรโตคอล","upload":"อัพโหลดไฟล์","uploadSubmit":"อัพโหลดไฟล์ไปเก็บไว้ที่เครื่องแม่ข่าย (เซิร์ฟเวอร์)","image":"รูปภาพ","flash":"ไฟล์ Flash","form":"แบบฟอร์ม","checkbox":"เช็คบ๊อก","radio":"เรดิโอบัตตอน","textField":"เท็กซ์ฟิลด์","textarea":"เท็กซ์แอเรีย","hiddenField":"ฮิดเดนฟิลด์","button":"ปุ่ม","select":"แถบตัวเลือก","imageButton":"ปุ่มแบบรูปภาพ","notSet":"<ไม่ระบุ>","id":"ไอดี","name":"ชื่อ","langDir":"การเขียน-อ่านภาษา","langDirLtr":"จากซ้ายไปขวา (LTR)","langDirRtl":"จากขวามาซ้าย (RTL)","langCode":"รหัสภาษา","longDescr":"คำอธิบายประกอบ URL","cssClass":"คลาสของไฟล์กำหนดลักษณะการแสดงผล","advisoryTitle":"คำเกริ่นนำ","cssStyle":"ลักษณะการแสดงผล","ok":"ตกลง","cancel":"ยกเลิก","close":"ปิด","preview":"ดูหน้าเอกสารตัวอย่าง","resize":"ปรับขนาด","generalTab":"ทั่วไป","advancedTab":"ขั้นสูง","validateNumberFailed":"ค่านี้ไม่ใช่ตัวเลข","confirmNewPage":"การเปลี่ยนแปลงใดๆ ในเนื้อหานี้ ที่ไม่ได้ถูกบันทึกไว้ จะสูญหายทั้งหมด คุณแน่ใจว่าจะเรียกหน้าใหม่?","confirmCancel":"ตัวเลือกบางตัวมีการเปลี่ยนแปลง คุณแน่ใจว่าจะปิดกล่องโต้ตอบนี้?","options":"ตัวเลือก","target":"การเปิดหน้าลิงค์","targetNew":"หน้าต่างใหม่ (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"หน้าต่างเดียวกัน (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"จากซ้ายไปขวา (LTR)","langDirRTL":"จากขวามาซ้าย (RTL)","styles":"ลักษณะการแสดงผล","cssClasses":"คลาสของไฟล์กำหนดลักษณะการแสดงผล","width":"ความกว้าง","height":"ความสูง","align":"การจัดวาง","alignLeft":"ชิดซ้าย","alignRight":"ชิดขวา","alignCenter":"กึ่งกลาง","alignTop":"บนสุด","alignMiddle":"กึ่งกลางแนวตั้ง","alignBottom":"ชิดด้านล่าง","invalidValue":"ค่าไม่ถูกต้อง","invalidHeight":"ความสูงต้องเป็นตัวเลข","invalidWidth":"ความกว้างต้องเป็นตัวเลข","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>"},"about":{"copy":"Copyright &copy; $1. All rights reserved.","dlgTitle":"About CKEditor","help":"Check $1 for help.","moreInfo":"For licensing information please visit our web site:","title":"About CKEditor","userGuide":"CKEditor User's Guide"},"basicstyles":{"bold":"ตัวหนา","italic":"ตัวเอียง","strike":"ตัวขีดเส้นทับ","subscript":"ตัวห้อย","superscript":"ตัวยก","underline":"ตัวขีดเส้นใต้"},"blockquote":{"toolbar":"Block Quote"},"clipboard":{"copy":"สำเนา","copyError":"ไม่สามารถสำเนาข้อความที่เลือกไว้ได้เนื่องจากการกำหนดค่าระดับความปลอดภัย. กรุณาใช้ปุ่มลัดเพื่อวางข้อความแทน (กดปุ่ม Ctrl/Cmd และตัว C พร้อมกัน).","cut":"ตัด","cutError":"ไม่สามารถตัดข้อความที่เลือกไว้ได้เนื่องจากการกำหนดค่าระดับความปลอดภัย. กรุณาใช้ปุ่มลัดเพื่อวางข้อความแทน (กดปุ่ม Ctrl/Cmd และตัว X พร้อมกัน).","paste":"วาง","pasteArea":"Paste Area","pasteMsg":"กรุณาใช้คีย์บอร์ดเท่านั้น โดยกดปุ๋ม (<strong>Ctrl/Cmd และ V</strong>)พร้อมๆกัน และกด <strong>OK</strong>.","securityMsg":"Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.","title":"วาง"},"contextmenu":{"options":"Context Menu Options"},"toolbar":{"toolbarCollapse":"ซ่อนแถบเครื่องมือ","toolbarExpand":"เปิดแถบเครื่องมือ","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"แถบเครื่องมือช่วยพิมพ์ข้อความ"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"format":{"label":"รูปแบบ","panelTitle":"รูปแบบ","tag_address":"Address","tag_div":"Paragraph (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatted"},"horizontalrule":{"toolbar":"แทรกเส้นคั่นบรรทัด"},"image":{"alertUrl":"กรุณาระบุที่อยู่อ้างอิงออนไลน์ของไฟล์รูปภาพ (URL)","alt":"คำประกอบรูปภาพ","border":"ขนาดขอบรูป","btnUpload":"อัพโหลดไฟล์ไปเก็บไว้ที่เครื่องแม่ข่าย (เซิร์ฟเวอร์)","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"ระยะแนวนอน","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"ข้อมูลของรูปภาพ","linkTab":"ลิ้งค์","lockRatio":"กำหนดอัตราส่วน กว้าง-สูง แบบคงที่","menu":"คุณสมบัติของ รูปภาพ","resetSize":"กำหนดรูปเท่าขนาดจริง","title":"คุณสมบัติของ รูปภาพ","titleButton":"คุณสมบัติของ ปุ่มแบบรูปภาพ","upload":"อัพโหลดไฟล์","urlMissing":"Image source URL is missing.","vSpace":"ระยะแนวตั้ง","validateBorder":"Border must be a whole number.","validateHSpace":"HSpace must be a whole number.","validateVSpace":"VSpace must be a whole number."},"indent":{"indent":"เพิ่มระยะย่อหน้า","outdent":"ลดระยะย่อหน้า"},"fakeobjects":{"anchor":"แทรก/แก้ไข Anchor","flash":"ภาพอนิเมชั่นแฟลช","hiddenfield":"ฮิดเดนฟิลด์","iframe":"IFrame","unknown":"วัตถุไม่ทราบชนิด"},"link":{"acccessKey":"แอคเซส คีย์","advanced":"ขั้นสูง","advisoryContentType":"ชนิดของคำเกริ่นนำ","advisoryTitle":"คำเกริ่นนำ","anchor":{"toolbar":"แทรก/แก้ไข Anchor","menu":"รายละเอียด Anchor","title":"รายละเอียด Anchor","name":"ชื่อ Anchor","errorName":"กรุณาระบุชื่อของ Anchor","remove":"Remove Anchor"},"anchorId":"ไอดี","anchorName":"ชื่อ","charset":"ลิงค์เชื่อมโยงไปยังชุดตัวอักษร","cssClasses":"คลาสของไฟล์กำหนดลักษณะการแสดงผล","emailAddress":"อีเมล์ (E-Mail)","emailBody":"ข้อความ","emailSubject":"หัวเรื่อง","id":"ไอดี","info":"รายละเอียด","langCode":"การเขียน-อ่านภาษา","langDir":"การเขียน-อ่านภาษา","langDirLTR":"จากซ้ายไปขวา (LTR)","langDirRTL":"จากขวามาซ้าย (RTL)","menu":"แก้ไข ลิงค์","name":"ชื่อ","noAnchors":"(ยังไม่มีจุดเชื่อมโยงภายในหน้าเอกสารนี้)","noEmail":"กรุณาระบุอีเมล์ (E-mail)","noUrl":"กรุณาระบุที่อยู่อ้างอิงออนไลน์ (URL)","other":"<อื่น ๆ>","popupDependent":"แสดงเต็มหน้าจอ (Netscape)","popupFeatures":"คุณสมบัติของหน้าจอเล็ก (Pop-up)","popupFullScreen":"แสดงเต็มหน้าจอ (IE5.5++ เท่านั้น)","popupLeft":"พิกัดซ้าย (Left Position)","popupLocationBar":"แสดงที่อยู่ของไฟล์","popupMenuBar":"แสดงแถบเมนู","popupResizable":"สามารถปรับขนาดได้","popupScrollBars":"แสดงแถบเลื่อน","popupStatusBar":"แสดงแถบสถานะ","popupToolbar":"แสดงแถบเครื่องมือ","popupTop":"พิกัดบน (Top Position)","rel":"ความสัมพันธ์","selectAnchor":"ระบุข้อมูลของจุดเชื่อมโยง (Anchor)","styles":"ลักษณะการแสดงผล","tabIndex":"ลำดับของ แท็บ","target":"การเปิดหน้าลิงค์","targetFrame":"<เปิดในเฟรม>","targetFrameName":"ชื่อทาร์เก็ตเฟรม","targetPopup":"<เปิดหน้าจอเล็ก (Pop-up)>","targetPopupName":"ระบุชื่อหน้าจอเล็ก (Pop-up)","title":"ลิงค์เชื่อมโยงเว็บ อีเมล์ รูปภาพ หรือไฟล์อื่นๆ","toAnchor":"จุดเชื่อมโยง (Anchor)","toEmail":"ส่งอีเมล์ (E-Mail)","toUrl":"ที่อยู่อ้างอิง URL","toolbar":"แทรก/แก้ไข ลิงค์","type":"ประเภทของลิงค์","unlink":"ลบ ลิงค์","upload":"อัพโหลดไฟล์"},"list":{"bulletedlist":"ลำดับรายการแบบสัญลักษณ์","numberedlist":"ลำดับรายการแบบตัวเลข"},"magicline":{"title":"Insert paragraph here"},"maximize":{"maximize":"ขยายใหญ่","minimize":"ย่อขนาด"},"pastetext":{"button":"วางแบบตัวอักษรธรรมดา","title":"วางแบบตัวอักษรธรรมดา"},"pastefromword":{"confirmCleanup":"ข้อความที่คุณต้องการวางลงไปเป็นข้อความที่คัดลอกมาจากโปรแกรมไมโครซอฟท์เวิร์ด คุณต้องการล้างค่าข้อความดังกล่าวก่อนวางลงไปหรือไม่?","error":"ไม่สามารถล้างข้อมูลที่ต้องการวางได้เนื่องจากเกิดข้อผิดพลาดภายในระบบ","title":"วางสำเนาจากตัวอักษรเวิร์ด","toolbar":"วางสำเนาจากตัวอักษรเวิร์ด"},"removeformat":{"toolbar":"ล้างรูปแบบ"},"sourcearea":{"toolbar":"ดูรหัส HTML"},"specialchar":{"options":"Special Character Options","title":"แทรกตัวอักษรพิเศษ","toolbar":"แทรกตัวอักษรพิเศษ"},"scayt":{"about":"About SCAYT","aboutTab":"About","addWord":"Add Word","allCaps":"Ignore All-Caps Words","dic_create":"Create","dic_delete":"Delete","dic_field_name":"Dictionary name","dic_info":"Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.","dic_rename":"Rename","dic_restore":"Restore","dictionariesTab":"Dictionaries","disable":"Disable SCAYT","emptyDic":"Dictionary name should not be empty.","enable":"Enable SCAYT","ignore":"Ignore","ignoreAll":"Ignore All","ignoreDomainNames":"Ignore Domain Names","langs":"Languages","languagesTab":"Languages","mixedCase":"Ignore Words with Mixed Case","mixedWithDigits":"Ignore Words with Numbers","moreSuggestions":"More suggestions","opera_title":"Not supported by Opera","options":"Options","optionsTab":"Options","title":"Spell Check As You Type","toggle":"Toggle SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"ลักษณะ","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"table":{"border":"ขนาดเส้นขอบ","caption":"หัวเรื่องของตาราง","cell":{"menu":"ช่องตาราง","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"ลบช่อง","merge":"ผสานช่อง","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"ระยะแนวตั้ง","cellSpace":"ระยะแนวนอนน","column":{"menu":"คอลัมน์","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"ลบสดมน์"},"columns":"สดมน์","deleteTable":"ลบตาราง","headers":"ส่วนหัว","headersBoth":"ทั้งสองอย่าง","headersColumn":"คอลัมน์แรก","headersNone":"None","headersRow":"แถวแรก","invalidBorder":"ขนาดเส้นกรอบต้องเป็นจำนวนตัวเลข","invalidCellPadding":"ช่องว่างภายในเซลล์ต้องเลขจำนวนบวก","invalidCellSpacing":"ช่องว่างภายในเซลล์ต้องเป็นเลขจำนวนบวก","invalidCols":"จำนวนคอลัมน์ต้องเป็นจำนวนมากกว่า 0","invalidHeight":"ส่วนสูงของตารางต้องเป็นตัวเลข","invalidRows":"จำนวนของแถวต้องเป็นจำนวนมากกว่า 0","invalidWidth":"ความกว้างตารางต้องเป็นตัวเลข","menu":"คุณสมบัติของ ตาราง","row":{"menu":"แถว","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"ลบแถว"},"rows":"แถว","summary":"สรุปความ","title":"คุณสมบัติของ ตาราง","toolbar":"ตาราง","widthPc":"เปอร์เซ็น","widthPx":"จุดสี","widthUnit":"หน่วยความกว้าง"},"undo":{"redo":"ทำซ้ำคำสั่ง","undo":"ยกเลิกคำสั่ง"},"wsc":{"btnIgnore":"ยกเว้น","btnIgnoreAll":"ยกเว้นทั้งหมด","btnReplace":"แทนที่","btnReplaceAll":"แทนที่ทั้งหมด","btnUndo":"ยกเลิก","changeTo":"แก้ไขเป็น","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"ไม่ได้ติดตั้งระบบตรวจสอบคำสะกด. ต้องการติดตั้งไหมครับ?","manyChanges":"ตรวจสอบคำสะกดเสร็จสิ้น:: แก้ไข %1 คำ","noChanges":"ตรวจสอบคำสะกดเสร็จสิ้น: ไม่มีการแก้คำใดๆ","noMispell":"ตรวจสอบคำสะกดเสร็จสิ้น: ไม่พบคำสะกดผิด","noSuggestions":"- ไม่มีคำแนะนำใดๆ -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"ไม่พบในดิกชันนารี","oneChange":"ตรวจสอบคำสะกดเสร็จสิ้น: แก้ไข1คำ","progress":"กำลังตรวจสอบคำสะกด...","title":"Spell Check","toolbar":"ตรวจการสะกดคำ"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/tr.js b/assets/plugins/ckeditor/lang/tr.js deleted file mode 100644 index 7b043e2a..00000000 --- a/assets/plugins/ckeditor/lang/tr.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['tr']={"editor":"Zengin Metin Editörü","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Yardım için ALT 0 tuşlarına basın","browseServer":"Sunucuya Gözat","url":"URL","protocol":"Protokol","upload":"Karşıya Yükle","uploadSubmit":"Sunucuya Gönder","image":"Resim","flash":"Flash","form":"Form","checkbox":"Onay Kutusu","radio":"Seçenek Düğmesi","textField":"Metin Kutusu","textarea":"Metin Alanı","hiddenField":"Gizli Alan","button":"Düğme","select":"Seçme Alanı","imageButton":"Resim Düğmesi","notSet":"<tanımlanmamış>","id":"Kimlik","name":"İsim","langDir":"Dil Yönü","langDirLtr":"Soldan Sağa (LTR)","langDirRtl":"Sağdan Sola (RTL)","langCode":"Dil Kodlaması","longDescr":"Uzun Tanımlı URL","cssClass":"Biçem Sayfası Sınıfları","advisoryTitle":"Öneri Başlığı","cssStyle":"Biçem","ok":"Tamam","cancel":"İptal","close":"Kapat","preview":"Önizleme","resize":"Yeniden Boyutlandır","generalTab":"Genel","advancedTab":"Gelişmiş","validateNumberFailed":"Bu değer bir sayı değildir.","confirmNewPage":"Bu içerikle ilgili kaydedilmemiş tüm bilgiler kaybolacaktır. Yeni bir sayfa yüklemek istediğinizden emin misiniz?","confirmCancel":"Bazı seçenekleri değiştirdiniz. İletişim penceresini kapatmak istediğinizden emin misiniz?","options":"Seçenekler","target":"Hedef","targetNew":"Yeni Pencere (_blank)","targetTop":"En Üstteki Pencere (_top)","targetSelf":"Aynı Pencere (_self)","targetParent":"Üst Pencere (_parent)","langDirLTR":"Soldan Sağa (LTR)","langDirRTL":"Sağdan Sola (RTL)","styles":"Biçem","cssClasses":"Biçem Sayfası Sınıfları","width":"Genişlik","height":"Yükseklik","align":"Hizalama","alignLeft":"Sol","alignRight":"Sağ","alignCenter":"Ortala","alignTop":"Üst","alignMiddle":"Orta","alignBottom":"Alt","invalidValue":"Geçersiz değer.","invalidHeight":"Yükseklik değeri bir sayı olmalıdır.","invalidWidth":"Genişlik değeri bir sayı olmalıdır.","invalidCssLength":"\"%1\" alanı için verilen değer, geçerli bir CSS ölçü birimi (px, %, in, cm, mm, em, ex, pt, veya pc) içeren veya içermeyen pozitif bir sayı olmalıdır.","invalidHtmlLength":"Belirttiğiniz sayı \"%1\" alanı için pozitif bir sayı HTML birim değeri olmalıdır (px veya %).","invalidInlineStyle":"Satıriçi biçem için verilen değer, \"isim : değer\" biçiminde birbirinden noktalı virgüllerle ayrılan bir veya daha fazla değişkenler grubundan oluşmalıdır.","cssLengthTooltip":"Piksel türünde bir sayı veya geçerli bir CSS ölçü birimi (px, %, in, cm, mm, em, ex, pt veya pc) içeren bir sayı girin.","unavailable":"%1<span class=\"cke_accessibility\">, kullanılamaz</span>"},"about":{"copy":"Copyright &copy; $1. Tüm hakları saklıdır.","dlgTitle":"CKEditor Hakkında","help":"Yardım için $1 kontrol edin.","moreInfo":"Lisanslama hakkında daha fazla bilgi almak için lütfen sitemizi ziyaret edin:","title":"CKEditor Hakkında","userGuide":"CKEditor Kullanıcı Kılavuzu"},"basicstyles":{"bold":"Kalın","italic":"İtalik","strike":"Üstü Çizgili","subscript":"Alt Simge","superscript":"Üst Simge","underline":"Altı Çizgili"},"blockquote":{"toolbar":"Blok Oluştur"},"clipboard":{"copy":"Kopyala","copyError":"Gezgin yazılımınızın güvenlik ayarları düzenleyicinin otomatik kopyalama işlemine izin vermiyor. İşlem için (Ctrl/Cmd+C) tuşlarını kullanın.","cut":"Kes","cutError":"Gezgin yazılımınızın güvenlik ayarları düzenleyicinin otomatik kesme işlemine izin vermiyor. İşlem için (Ctrl/Cmd+X) tuşlarını kullanın.","paste":"Yapıştır","pasteArea":"Yapıştırma Alanı","pasteMsg":"Lütfen aşağıdaki kutunun içine yapıştırın. (<STRONG>Ctrl/Cmd+V</STRONG>) ve <STRONG>Tamam</STRONG> butonunu tıklayın.","securityMsg":"Gezgin yazılımınızın güvenlik ayarları düzenleyicinin direkt olarak panoya erişimine izin vermiyor. Bu pencere içine tekrar yapıştırmalısınız..","title":"Yapıştır"},"contextmenu":{"options":"İçerik Menüsü Seçenekleri"},"toolbar":{"toolbarCollapse":"Araç çubuklarını topla","toolbarExpand":"Araç çubuklarını aç","toolbarGroups":{"document":"Belge","clipboard":"Pano/Geri al","editing":"Düzenleme","forms":"Formlar","basicstyles":"Temel Stiller","paragraph":"Paragraf","links":"Bağlantılar","insert":"Ekle","styles":"Stiller","colors":"Renkler","tools":"Araçlar"},"toolbars":"Araç çubukları Editörü"},"elementspath":{"eleLabel":"Elementlerin yolu","eleTitle":"%1 elementi"},"format":{"label":"Biçim","panelTitle":"Biçim","tag_address":"Adres","tag_div":"Paragraf (DIV)","tag_h1":"Başlık 1","tag_h2":"Başlık 2","tag_h3":"Başlık 3","tag_h4":"Başlık 4","tag_h5":"Başlık 5","tag_h6":"Başlık 6","tag_p":"Normal","tag_pre":"Biçimli"},"horizontalrule":{"toolbar":"Yatay Satır Ekle"},"image":{"alertUrl":"Lütfen resmin URL'sini yazınız","alt":"Alternatif Yazı","border":"Kenar","btnUpload":"Sunucuya Yolla","button2Img":"Seçili resim butonunu basit resime çevirmek istermisiniz?","hSpace":"Yatay Boşluk","img2Button":"Seçili olan resimi, resimli butona çevirmek istermisiniz?","infoTab":"Resim Bilgisi","linkTab":"Köprü","lockRatio":"Oranı Kilitle","menu":"Resim Özellikleri","resetSize":"Boyutu Başa Döndür","title":"Resim Özellikleri","titleButton":"Resimli Düğme Özellikleri","upload":"Karşıya Yükle","urlMissing":"Resmin URL kaynağı eksiktir.","vSpace":"Dikey Boşluk","validateBorder":"Çerçeve tam sayı olmalıdır.","validateHSpace":"HSpace tam sayı olmalıdır.","validateVSpace":"VSpace tam sayı olmalıdır."},"indent":{"indent":"Sekme Arttır","outdent":"Sekme Azalt"},"fakeobjects":{"anchor":"Bağlantı","flash":"Flash Animasyonu","hiddenfield":"Gizli Alan","iframe":"IFrame","unknown":"Bilinmeyen Nesne"},"link":{"acccessKey":"Erişim Tuşu","advanced":"Gelişmiş","advisoryContentType":"Danışma İçerik Türü","advisoryTitle":"Danışma Başlığı","anchor":{"toolbar":"Bağlantı Ekle/Düzenle","menu":"Bağlantı Özellikleri","title":"Bağlantı Özellikleri","name":"Bağlantı Adı","errorName":"Lütfen bağlantı için ad giriniz","remove":"Bağlantıyı Kaldır"},"anchorId":"Eleman Kimlik Numarası ile","anchorName":"Bağlantı Adı ile","charset":"Bağlı Kaynak Karakter Gurubu","cssClasses":"Biçem Sayfası Sınıfları","emailAddress":"E-Posta Adresi","emailBody":"İleti Gövdesi","emailSubject":"İleti Konusu","id":"Id","info":"Link Bilgisi","langCode":"Dil Yönü","langDir":"Dil Yönü","langDirLTR":"Soldan Sağa (LTR)","langDirRTL":"Sağdan Sola (RTL)","menu":"Link Düzenle","name":"Ad","noAnchors":"(Bu belgede hiç çapa yok)","noEmail":"Lütfen E-posta adresini yazın","noUrl":"Lütfen Link URL'sini yazın","other":"<diğer>","popupDependent":"Bağımlı (Netscape)","popupFeatures":"Yeni Açılan Pencere Özellikleri","popupFullScreen":"Tam Ekran (IE)","popupLeft":"Sola Göre Konum","popupLocationBar":"Yer Çubuğu","popupMenuBar":"Menü Çubuğu","popupResizable":"Resizable","popupScrollBars":"Kaydırma Çubukları","popupStatusBar":"Durum Çubuğu","popupToolbar":"Araç Çubuğu","popupTop":"Yukarıya Göre Konum","rel":"İlişki","selectAnchor":"Bağlantı Seç","styles":"Biçem","tabIndex":"Sekme İndeksi","target":"Hedef","targetFrame":"<çerçeve>","targetFrameName":"Hedef Çerçeve Adı","targetPopup":"<yeni açılan pencere>","targetPopupName":"Yeni Açılan Pencere Adı","title":"Link","toAnchor":"Bu sayfada çapa","toEmail":"E-Posta","toUrl":"URL","toolbar":"Link Ekle/Düzenle","type":"Link Türü","unlink":"Köprü Kaldır","upload":"Karşıya Yükle"},"list":{"bulletedlist":"Simgeli Liste","numberedlist":"Numaralı Liste"},"magicline":{"title":"Parağrafı buraya ekle"},"maximize":{"maximize":"Büyült","minimize":"Küçült"},"pastetext":{"button":"Düz Metin Olarak Yapıştır","title":"Düz Metin Olarak Yapıştır"},"pastefromword":{"confirmCleanup":"Yapıştırmaya çalıştığınız metin Word'den kopyalanmıştır. Yapıştırmadan önce silmek istermisiniz?","error":"Yapıştırmadaki veri bilgisi hata düzelene kadar silinmeyecektir","title":"Word'den Yapıştır","toolbar":"Word'den Yapıştır"},"removeformat":{"toolbar":"Biçimi Kaldır"},"sourcearea":{"toolbar":"Kaynak"},"specialchar":{"options":"Özel Karakter Seçenekleri","title":"Özel Karakter Seç","toolbar":"Özel Karakter Ekle"},"scayt":{"about":"SCAYT'ı hakkında","aboutTab":"Hakkında","addWord":"Kelime Ekle","allCaps":"Tüm büyük küçük kelimeleri yoksay","dic_create":"Oluştur","dic_delete":"Sil","dic_field_name":"Sözlük adı","dic_info":"Başlangıçta Kullanıcı Sözlüğü bir çerezde saklanır. Ancak, Çerezler boyutu sınırlıdır. Kullanıcı Sözlüğü, çerezin içinde saklanamayacağı bir noktada, bizim sunucularımızın içindeki sözlükte saklanabilir. Bizim sunucu üzerinde kişisel Sözlük saklamanız için, Sözlüğe bir ad belirtmelisiniz. Eğer zaten bir saklı Sözlük varsa, lütfen adını yazın ve Geri Yükle düğmesini tıklayın.","dic_rename":"Yeniden adlandır","dic_restore":"Geri al","dictionariesTab":"Sözlükler","disable":"SCAYT'ı pasifleştir","emptyDic":"Sözlük adı boş olamaz.","enable":"SCAYT'ı etkinleştir","ignore":"Yoksay","ignoreAll":"Tümünü Yoksay","ignoreDomainNames":"Domain adlarını yoksay","langs":"Diller","languagesTab":"Diller","mixedCase":"Karışık büyüklük ile Sözcükler yoksay","mixedWithDigits":"Sayılarla Kelimeler yoksay","moreSuggestions":"Daha fazla öneri","opera_title":"Opera tarafından desteklenmemektedir","options":"Seçenekler","optionsTab":"Seçenekler","title":"Girmiş olduğunuz kelime denetimi","toggle":"SCAYT'ı değiştir","noSuggestions":"No suggestion"},"stylescombo":{"label":"Biçem","panelTitle":"Stilleri Düzenliyor","panelTitle1":"Blok Stilleri","panelTitle2":"Inline Stilleri","panelTitle3":"Nesne Stilleri"},"table":{"border":"Kenar Kalınlığı","caption":"Başlık","cell":{"menu":"Hücre","insertBefore":"Hücre Ekle - Önce","insertAfter":"Hücre Ekle - Sonra","deleteCell":"Hücre Sil","merge":"Hücreleri Birleştir","mergeRight":"Birleştir - Sağdaki İle ","mergeDown":"Birleştir - Aşağıdaki İle ","splitHorizontal":"Hücreyi Yatay Böl","splitVertical":"Hücreyi Dikey Böl","title":"Hücre Özellikleri","cellType":"Hücre Tipi","rowSpan":"Satırlar Mesafesi (Span)","colSpan":"Sütünlar Mesafesi (Span)","wordWrap":"Kelime Kaydırma","hAlign":"Düşey Hizalama","vAlign":"Yataş Hizalama","alignBaseline":"Tabana","bgColor":"Arkaplan Rengi","borderColor":"Çerçeve Rengi","data":"Veri","header":"Başlık","yes":"Evet","no":"Hayır","invalidWidth":"Hücre genişliği sayı olmalıdır.","invalidHeight":"Hücre yüksekliği sayı olmalıdır.","invalidRowSpan":"Satırların mesafesi tam sayı olmalıdır.","invalidColSpan":"Sütünların mesafesi tam sayı olmalıdır.","chooseColor":"Seçiniz"},"cellPad":"Izgara yazı arası","cellSpace":"Izgara kalınlığı","column":{"menu":"Sütun","insertBefore":"Kolon Ekle - Önce","insertAfter":"Kolon Ekle - Sonra","deleteColumn":"Sütun Sil"},"columns":"Sütunlar","deleteTable":"Tabloyu Sil","headers":"Başlıklar","headersBoth":"Her İkisi","headersColumn":"İlk Sütun","headersNone":"Yok","headersRow":"İlk Satır","invalidBorder":"Çerceve büyüklüklüğü sayı olmalıdır.","invalidCellPadding":"Hücre aralığı (padding) sayı olmalıdır.","invalidCellSpacing":"Hücre boşluğu (spacing) sayı olmalıdır.","invalidCols":"Sütün sayısı 0 sayısından büyük olmalıdır.","invalidHeight":"Tablo yüksekliği sayı olmalıdır.","invalidRows":"Satır sayısı 0 sayısından büyük olmalıdır.","invalidWidth":"Tablo genişliği sayı olmalıdır.","menu":"Tablo Özellikleri","row":{"menu":"Satır","insertBefore":"Satır Ekle - Önce","insertAfter":"Satır Ekle - Sonra","deleteRow":"Satır Sil"},"rows":"Satırlar","summary":"Özet","title":"Tablo Özellikleri","toolbar":"Tablo","widthPc":"yüzde","widthPx":"piksel","widthUnit":"genişlik birimi"},"undo":{"redo":"Tekrarla","undo":"Geri Al"},"wsc":{"btnIgnore":"Yoksay","btnIgnoreAll":"Tümünü Yoksay","btnReplace":"Değiştir","btnReplaceAll":"Tümünü Değiştir","btnUndo":"Geri Al","changeTo":"Şuna değiştir:","errorLoading":"Uygulamada yüklerken hata oluştu: %s.","ieSpellDownload":"Yazım denetimi yüklenmemiş. Şimdi yüklemek ister misiniz?","manyChanges":"Yazım denetimi tamamlandı: %1 kelime değiştirildi","noChanges":"Yazım denetimi tamamlandı: Hiçbir kelime değiştirilmedi","noMispell":"Yazım denetimi tamamlandı: Yanlış yazıma rastlanmadı","noSuggestions":"- Öneri Yok -","notAvailable":"Üzügünüz, bu servis şuanda hizmet dışıdır.","notInDic":"Sözlükte Yok","oneChange":"Yazım denetimi tamamlandı: Bir kelime değiştirildi","progress":"Yazım denetimi işlemde...","title":"Yazımı Denetle","toolbar":"Yazım Denetimi"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/ug.js b/assets/plugins/ckeditor/lang/ug.js deleted file mode 100644 index 2717aa95..00000000 --- a/assets/plugins/ckeditor/lang/ug.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['ug']={"editor":"تەھرىرلىگۈچ","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"ALT+0 نى بېسىپ ياردەمنى كۆرۈڭ","browseServer":"كۆرسىتىش مۇلازىمېتىر","url":"ئەسلى ھۆججەت","protocol":"كېلىشىم","upload":"يۈكلە","uploadSubmit":"مۇلازىمېتىرغا يۈكلە","image":"سۈرەت","flash":"Flash","form":"جەدۋەل","checkbox":"كۆپ تاللاش رامكىسى","radio":"يەككە تاللاش توپچىسى","textField":"يەككە قۇر تېكىست","textarea":"كۆپ قۇر تېكىست","hiddenField":"يوشۇرۇن دائىرە","button":"توپچا","select":"تىزىم/تىزىملىك","imageButton":"سۈرەت دائىرە","notSet":"‹تەڭشەلمىگەن›","id":"ID","name":"ئات","langDir":"تىل يۆنىلىشى","langDirLtr":"سولدىن ئوڭغا (LTR)","langDirRtl":"ئوڭدىن سولغا (RTL)","langCode":"تىل كودى","longDescr":"تەپسىلىي چۈشەندۈرۈش ئادرېسى","cssClass":"ئۇسلۇب خىلىنىڭ ئاتى","advisoryTitle":"ماۋزۇ","cssStyle":"قۇر ئىچىدىكى ئۇسلۇبى","ok":"جەزملە","cancel":"ۋاز كەچ","close":"تاقا","preview":"ئالدىن كۆزەت","resize":"چوڭلۇقىنى ئۆزگەرت","generalTab":"ئادەتتىكى","advancedTab":"ئالىي","validateNumberFailed":"سان پىچىمىدا كىرگۈزۈش زۆرۈر","confirmNewPage":"نۆۋەتتىكى پۈتۈك مەزمۇنى ساقلانمىدى، يېڭى پۈتۈك قۇرامسىز؟","confirmCancel":"قىسمەن ئۆزگەرتىش ساقلانمىدى، بۇ سۆزلەشكۈنى تاقامسىز؟","options":"تاللانما","target":"نىشان كۆزنەك","targetNew":"يېڭى كۆزنەك (_blank)","targetTop":"پۈتۈن بەت (_top)","targetSelf":"مەزكۇر كۆزنەك (_self)","targetParent":"ئاتا كۆزنەك (_parent)","langDirLTR":"سولدىن ئوڭغا (LTR)","langDirRTL":"ئوڭدىن سولغا (RTL)","styles":"ئۇسلۇبلار","cssClasses":"ئۇسلۇب خىللىرى","width":"كەڭلىك","height":"ئېگىزلىك","align":"توغرىلىنىشى","alignLeft":"سول","alignRight":"ئوڭ","alignCenter":"ئوتتۇرا","alignTop":"ئۈستى","alignMiddle":"ئوتتۇرا","alignBottom":"ئاستى","invalidValue":"ئىناۋەتسىز قىممەت.","invalidHeight":"ئېگىزلىك چوقۇم رەقەم پىچىمىدا بولۇشى زۆرۈر","invalidWidth":"كەڭلىك چوقۇم رەقەم پىچىمىدا بولۇشى زۆرۈر","invalidCssLength":"بۇ سۆز بۆلىكى چوقۇم مۇۋاپىق بولغان CSS ئۇزۇنلۇق قىممىتى بولۇشى زۆرۈر، بىرلىكى (px, %, in, cm, mm, em, ex, pt ياكى pc)","invalidHtmlLength":"بۇ سۆز بۆلىكى چوقۇم بىرىكمە HTML ئۇزۇنلۇق قىممىتى بولۇشى كېرەك. ئۆز ئىچىگە ئالىدىغان بىرلىك (px ياكى %)","invalidInlineStyle":"ئىچكى باغلانما ئۇسلۇبى چوقۇم چېكىتلىك پەش بىلەن ئايرىلغان بىر ياكى كۆپ «خاسلىق ئاتى:خاسلىق قىممىتى» پىچىمىدا بولۇشى لازىم","cssLengthTooltip":"بۇ سۆز بۆلىكى بىرىكمە CSS ئۇزۇنلۇق قىممىتى بولۇشى كېرەك. ئۆز ئىچىگە ئالىدىغان بىرلىك (px, %, in, cm, mm, em, ex, pt ياكى pc)","unavailable":"%1<span class=\\\\\"cke_accessibility\\\\\">، ئىشلەتكىلى بولمايدۇ</span>"},"about":{"copy":"Copyright &copy; $1. نەشر ھوقۇقىغا ئىگە","dlgTitle":"CKEditor ھەققىدە","help":"$1 نى زىيارەت قىلىپ ياردەمگە ئېرىشىڭ","moreInfo":"تور تۇرايىمىزنى زىيارەت قىلىپ كېلىشىمگە ئائىت تېخىمۇ كۆپ ئۇچۇرغا ئېرىشىڭ","title":"CKEditor ھەققىدە","userGuide":"CKEditor ئىشلەتكۈچى قوللانمىسى"},"basicstyles":{"bold":"توم","italic":"يانتۇ","strike":"ئۆچۈرۈش سىزىقى","subscript":"تۆۋەن ئىندېكس","superscript":"يۇقىرى ئىندېكس","underline":"ئاستى سىزىق"},"blockquote":{"toolbar":"بۆلەك نەقىل"},"clipboard":{"copy":"نەشر ھوقۇقىغا ئىگە بەلگىسى","copyError":"تور كۆرگۈڭىزنىڭ بىخەتەرلىك تەڭشىكى تەھرىرلىگۈچنىڭ كۆچۈر مەشغۇلاتىنى ئۆزلۈكىدىن ئىجرا قىلىشىغا يول قويمايدۇ، ھەرپتاختا تېز كۇنۇپكا (Ctrl/Cmd+C) ئارقىلىق تاماملاڭ","cut":"كەس","cutError":"تور كۆرگۈڭىزنىڭ بىخەتەرلىك تەڭشىكى تەھرىرلىگۈچنىڭ كەس مەشغۇلاتىنى ئۆزلۈكىدىن ئىجرا قىلىشىغا يول قويمايدۇ، ھەرپتاختا تېز كۇنۇپكا (Ctrl/Cmd+X) ئارقىلىق تاماملاڭ","paste":"چاپلا","pasteArea":"چاپلاش دائىرىسى","pasteMsg":"ھەرپتاختا تېز كۇنۇپكا (<STRONG>Ctrl/Cmd+V</STRONG>) نى ئىشلىتىپ مەزمۇننى تۆۋەندىكى رامكىغا كۆچۈرۈڭ، ئاندىن <STRONG>جەزملە</STRONG>نى بېسىڭ","securityMsg":"توركۆرگۈڭىزنىڭ بىخەتەرلىك تەڭشىكى سەۋەبىدىن بۇ تەھرىرلىگۈچ چاپلاش تاختىسىدىكى مەزمۇننى بىۋاستە زىيارەت قىلالمايدۇ، بۇ كۆزنەكتە قايتا بىر قېتىم چاپلىشىڭىز كېرەك.","title":"چاپلا"},"contextmenu":{"options":"قىسقا يول تىزىملىك تاللانمىسى"},"toolbar":{"toolbarCollapse":"قورال بالداقنى قاتلا","toolbarExpand":"قورال بالداقنى ياي","toolbarGroups":{"document":"پۈتۈك","clipboard":"چاپلاش تاختىسى/يېنىۋال","editing":"تەھرىر","forms":"جەدۋەل","basicstyles":"ئاساسىي ئۇسلۇب","paragraph":"ئابزاس","links":"ئۇلانما","insert":"قىستۇر","styles":"ئۇسلۇب","colors":"رەڭ","tools":"قورال"},"toolbars":"قورال بالداق"},"elementspath":{"eleLabel":"ئېلېمېنت يولى","eleTitle":"%1 ئېلېمېنت"},"format":{"label":"پىچىم","panelTitle":"پىچىم","tag_address":"ئادرېس","tag_div":"ئابزاس (DIV)","tag_h1":"ماۋزۇ 1","tag_h2":"ماۋزۇ 2","tag_h3":"ماۋزۇ 3","tag_h4":"ماۋزۇ 4","tag_h5":"ماۋزۇ 5","tag_h6":"ماۋزۇ 6","tag_p":"ئادەتتىكى","tag_pre":"تىزىلغان پىچىم"},"horizontalrule":{"toolbar":"توغرا سىزىق قىستۇر"},"image":{"alertUrl":"سۈرەت ئادرېسىنى كىرگۈزۈڭ","alt":"تېكىست ئالماشتۇر","border":"گىرۋەك چوڭلۇقى","btnUpload":"مۇلازىمېتىرغا يۈكلە","button2Img":"نۆۋەتتىكى توپچىنى سۈرەتكە ئۆزگەرتەمسىز؟","hSpace":"توغرىسىغا ئارىلىقى","img2Button":"نۆۋەتتىكى سۈرەتنى توپچىغا ئۆزگەرتەمسىز؟","infoTab":"سۈرەت","linkTab":"ئۇلانما","lockRatio":"نىسبەتنى قۇلۇپلا","menu":"سۈرەت خاسلىقى","resetSize":"ئەسلى چوڭلۇق","title":"سۈرەت خاسلىقى","titleButton":"سۈرەت دائىرە خاسلىقى","upload":"يۈكلە","urlMissing":"سۈرەتنىڭ ئەسلى ھۆججەت ئادرېسى كەم","vSpace":"بويىغا ئارىلىقى","validateBorder":"گىرۋەك چوڭلۇقى چوقۇم سان بولىدۇ","validateHSpace":"توغرىسىغا ئارىلىق چوقۇم پۈتۈن سان بولىدۇ","validateVSpace":"بويىغا ئارىلىق چوقۇم پۈتۈن سان بولىدۇ"},"indent":{"indent":"تارايت","outdent":"كەڭەيت"},"fakeobjects":{"anchor":"لەڭگەرلىك نۇقتا","flash":"Flash جانلاندۇرۇم","hiddenfield":"يوشۇرۇن دائىرە","iframe":"IFrame","unknown":"يوچۇن نەڭ"},"link":{"acccessKey":"زىيارەت كۇنۇپكا","advanced":"ئالىي","advisoryContentType":"مەزمۇن تىپى","advisoryTitle":"ماۋزۇ","anchor":{"toolbar":"لەڭگەرلىك نۇقتا ئۇلانمىسى قىستۇر/تەھرىرلە","menu":"لەڭگەرلىك نۇقتا ئۇلانما خاسلىقى","title":"لەڭگەرلىك نۇقتا ئۇلانما خاسلىقى","name":"لەڭگەرلىك نۇقتا ئاتى","errorName":"لەڭگەرلىك نۇقتا ئاتىنى كىرگۈزۈڭ","remove":"لەڭگەرلىك نۇقتا ئۆچۈر"},"anchorId":"لەڭگەرلىك نۇقتا ID سى بويىچە","anchorName":"لەڭگەرلىك نۇقتا ئاتى بويىچە","charset":"ھەرپ كودلىنىشى","cssClasses":"ئۇسلۇب خىلى ئاتى","emailAddress":"ئادرېس","emailBody":"مەزمۇن","emailSubject":"ماۋزۇ","id":"ID","info":"ئۇلانما ئۇچۇرى","langCode":"تىل كودى","langDir":"تىل يۆنىلىشى","langDirLTR":"سولدىن ئوڭغا (LTR)","langDirRTL":"ئوڭدىن سولغا (RTL)","menu":"ئۇلانما تەھرىر","name":"ئات","noAnchors":"(بۇ پۈتۈكتە ئىشلەتكىلى بولىدىغان لەڭگەرلىك نۇقتا يوق)","noEmail":"ئېلخەت ئادرېسىنى كىرگۈزۈڭ","noUrl":"ئۇلانما ئادرېسىنى كىرگۈزۈڭ","other":"‹باشقا›","popupDependent":"تەۋە (NS)","popupFeatures":"قاڭقىش كۆزنەك خاسلىقى","popupFullScreen":"پۈتۈن ئېكران (IE)","popupLeft":"سول","popupLocationBar":"ئادرېس بالداق","popupMenuBar":"تىزىملىك بالداق","popupResizable":"چوڭلۇقى ئۆزگەرتىشچان","popupScrollBars":"دومىلىما سۈرگۈچ","popupStatusBar":"ھالەت بالداق","popupToolbar":"قورال بالداق","popupTop":"ئوڭ","rel":"باغلىنىش","selectAnchor":"بىر لەڭگەرلىك نۇقتا تاللاڭ","styles":"قۇر ئىچىدىكى ئۇسلۇبى","tabIndex":"Tab تەرتىپى","target":"نىشان","targetFrame":"‹كاندۇك›","targetFrameName":"نىشان كاندۇك ئاتى","targetPopup":"‹قاڭقىش كۆزنەك›","targetPopupName":"قاڭقىش كۆزنەك ئاتى","title":"ئۇلانما","toAnchor":"بەت ئىچىدىكى لەڭگەرلىك نۇقتا ئۇلانمىسى","toEmail":"ئېلخەت","toUrl":"ئادرېس","toolbar":"ئۇلانما قىستۇر/تەھرىرلە","type":"ئۇلانما تىپى","unlink":"ئۇلانما بىكار قىل","upload":"يۈكلە"},"list":{"bulletedlist":"تۈر بەلگە تىزىمى","numberedlist":"تەرتىپ نومۇر تىزىمى"},"magicline":{"title":"بۇ جايغا ئابزاس قىستۇر"},"maximize":{"maximize":"چوڭايت","minimize":"كىچىكلەت"},"pastetext":{"button":"پىچىمى يوق تېكىست سۈپىتىدە چاپلا","title":"پىچىمى يوق تېكىست سۈپىتىدە چاپلا"},"pastefromword":{"confirmCleanup":"سىز چاپلىماقچى بولغان مەزمۇن MS Word تىن كەلگەندەك قىلىدۇ، MS Word پىچىمىنى تازىلىۋەتكەندىن كېيىن ئاندىن چاپلامدۇ؟","error":"ئىچكى خاتالىق سەۋەبىدىن چاپلايدىغان سانلىق مەلۇماتنى تازىلىيالمايدۇ","title":"MS Word تىن چاپلا","toolbar":"MS Word تىن چاپلا"},"removeformat":{"toolbar":"پىچىمنى چىقىرىۋەت"},"sourcearea":{"toolbar":"مەنبە"},"specialchar":{"options":"ئالاھىدە ھەرپ تاللانمىسى","title":"ئالاھىدە ھەرپ تاللاڭ","toolbar":"ئالاھىدە ھەرپ قىستۇر"},"scayt":{"about":"شۇئان ئىملا تەكشۈرۈش ھەققىدە","aboutTab":"ھەققىدە","addWord":"سۆز قوش","allCaps":"چوڭ ھەرپتە يېزىلغان ھەممە سۆزگە پەرۋا قىلما","dic_create":"قۇر","dic_delete":"ئۆچۈر","dic_field_name":"لۇغەت ئاتى","dic_info":"باشلىنىشتا ئىشلەتكۈچى لۇغىتى Cookie غا ساقلىنىدۇ ئەمما Cookie نىڭ سىغىمى چەكلىك بولغاچقا، ئىشلەتكۈچى لۇغىتى كۆپىيىپ Cookie چەكلىمىسىدىن ئېشىپ كەتكەندە ساقلىغىلى بولمايدۇ، بۇ چاغدا لۇغىتىڭىزنى مۇلازىمېتىرىمىزغا ساقلىسىڭىز بولىدۇ. شەخسىي لۇغىتىڭىزنى مۇلازىمېتىرىمىزغا ساقلىماقچى بولسىڭىز لۇغىتىڭىزگە ئاتتىن بىرنى قويۇڭ، ئەگەر مۇلازىمتېرىمىزدا سىزنىڭ لۇغىتىڭىزدىن بىرسى بولسا لۇغەت ئاتىنى كىرگۈزۈپ ئەسلىگە قايتۇر توپچىسىنى بېسىڭ.","dic_rename":"ئات ئۆزگەرت","dic_restore":"ئەسلىگە كەلتۈر","dictionariesTab":"لۇغەت","disable":"شۇئان ئىملا تەكشۈرۈشنى چەكلە","emptyDic":"لۇغەت ئاتى بوش قالمايدۇ","enable":"شۇئان ئىملا تەكشۈرۈشنى قوزغات","ignore":"پەرۋا قىلما","ignoreAll":"ھەممىسىگە پەرۋا قىلما","ignoreDomainNames":"دائىرە ئاتىغا پەرۋا قىلما","langs":"تىل","languagesTab":"تىل","mixedCase":"چوڭ كىچىك ھەرپ بىلەن ئارىلاش يېزىلغان سۆزگە پەرۋا قىلما","mixedWithDigits":"سان بار سۆزگە پەرۋا قىلما","moreSuggestions":"تېخىمۇ كۆپ ئىملا تەۋسىيەسى","opera_title":"Opera توركۆرگۈنى قوللىمايدۇ","options":"تاللانما","optionsTab":"تاللانما","title":"شۇئان ئىملا تەكشۈر","toggle":"شۇئان ئىملا تەكشۈرۈشنى ۋاقىتلىق توختات/قوزغات","noSuggestions":"No suggestion"},"stylescombo":{"label":"ئۇسلۇب","panelTitle":"ئۇسلۇب","panelTitle1":"بۆلەك دەرىجىسىدىكى ئېلېمېنت ئۇسلۇبى","panelTitle2":"ئىچكى باغلانما ئېلېمېنت ئۇسلۇبى","panelTitle3":"نەڭ (Object) ئېلېمېنت ئۇسلۇبى"},"table":{"border":"گىرۋەك","caption":"ماۋزۇ","cell":{"menu":"كاتەكچە","insertBefore":"سولغا كاتەكچە قىستۇر","insertAfter":"ئوڭغا كاتەكچە قىستۇر","deleteCell":"كەتەكچە ئۆچۈر","merge":"كاتەكچە بىرلەشتۈر","mergeRight":"كاتەكچىنى ئوڭغا بىرلەشتۈر","mergeDown":"كاتەكچىنى ئاستىغا بىرلەشتۈر","splitHorizontal":"كاتەكچىنى توغرىسىغا بىرلەشتۈر","splitVertical":"كاتەكچىنى بويىغا بىرلەشتۈر","title":"كاتەكچە خاسلىقى","cellType":"كاتەكچە تىپى","rowSpan":"بويىغا چات ئارىسى قۇر سانى","colSpan":"توغرىسىغا چات ئارىسى ئىستون سانى","wordWrap":"ئۆزلۈكىدىن قۇر قاتلا","hAlign":"توغرىسىغا توغرىلا","vAlign":"بويىغا توغرىلا","alignBaseline":"ئاساسىي سىزىق","bgColor":"تەگلىك رەڭگى","borderColor":"گىرۋەك رەڭگى","data":"سانلىق مەلۇمات","header":"جەدۋەل باشى","yes":"ھەئە","no":"ياق","invalidWidth":"كاتەكچە كەڭلىكى چوقۇم سان بولىدۇ","invalidHeight":"كاتەكچە ئېگىزلىكى چوقۇم سان بولىدۇ","invalidRowSpan":"قۇر چات ئارىسى چوقۇم پۈتۈن سان بولىدۇ ","invalidColSpan":"ئىستون چات ئارىسى چوقۇم پۈتۈن سان بولىدۇ","chooseColor":"تاللاڭ"},"cellPad":"يان ئارىلىق","cellSpace":"ئارىلىق","column":{"menu":"ئىستون","insertBefore":"سولغا ئىستون قىستۇر","insertAfter":"ئوڭغا ئىستون قىستۇر","deleteColumn":"ئىستون ئۆچۈر"},"columns":"ئىستون سانى","deleteTable":"جەدۋەل ئۆچۈر","headers":"ماۋزۇ كاتەكچە","headersBoth":"بىرىنچى ئىستون ۋە بىرىنچى قۇر","headersColumn":"بىرىنچى ئىستون","headersNone":"يوق","headersRow":"بىرىنچى قۇر","invalidBorder":"گىرۋەك توملۇقى چوقۇم سان بولىدۇ","invalidCellPadding":"كاتەكچىگە چوقۇم سان تولدۇرۇلىدۇ","invalidCellSpacing":"كاتەكچە ئارىلىقى چوقۇم سان بولىدۇ","invalidCols":"بەلگىلەنگەن قۇر سانى چوقۇم نۆلدىن چوڭ بولىدۇ","invalidHeight":"جەدۋەل ئېگىزلىكى چوقۇم سان بولىدۇ","invalidRows":"بەلگىلەنگەن ئىستون سانى چوقۇم نۆلدىن چوڭ بولىدۇ","invalidWidth":"جەدۋەل كەڭلىكى چوقۇم سان بولىدۇ","menu":"جەدۋەل خاسلىقى","row":{"menu":"قۇر","insertBefore":"ئۈستىگە قۇر قىستۇر","insertAfter":"ئاستىغا قۇر قىستۇر","deleteRow":"قۇر ئۆچۈر"},"rows":"قۇر سانى","summary":"ئۈزۈندە","title":"جەدۋەل خاسلىقى","toolbar":"جەدۋەل","widthPc":"پىرسەنت","widthPx":"پىكسېل","widthUnit":"كەڭلىك بىرلىكى"},"undo":{"redo":"قايتىلا ","undo":"يېنىۋال"},"wsc":{"btnIgnore":"پەرۋا قىلما","btnIgnoreAll":"ھەممىگە پەرۋا قىلما","btnReplace":"ئالماشتۇر","btnReplaceAll":"ھەممىنى ئالماشتۇر","btnUndo":"يېنىۋال","changeTo":"ئۆزگەرت","errorLoading":"لازىملىق مۇلازىمېتىرنى يۈكلىگەندە خاتالىق كۆرۈلدى: %s.","ieSpellDownload":"ئىملا تەكشۈرۈش قىستۇرمىسى تېخى ئورنىتىلمىغان، ھازىرلا چۈشۈرەمسىز؟","manyChanges":"ئىملا تەكشۈرۈش تامام: %1 سۆزنى ئۆزگەرتتى","noChanges":"ئىملا تەكشۈرۈش تامام: ھېچقانداق سۆزنى ئۆزگەرتمىدى","noMispell":"ئىملا تەكشۈرۈش تامام: ئىملا خاتالىقى بايقالمىدى","noSuggestions":"-تەكلىپ يوق-","notAvailable":"كەچۈرۈڭ، مۇلازىمېتىرنى ۋاقتىنچە ئىشلەتكىلى بولمايدۇ","notInDic":"لۇغەتتە يوق","oneChange":"ئىملا تەكشۈرۈش تامام: بىر سۆزنى ئۆزگەرتتى","progress":"ئىملا تەكشۈرۈۋاتىدۇ…","title":"ئىملا تەكشۈر","toolbar":"ئىملا تەكشۈر"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/uk.js b/assets/plugins/ckeditor/lang/uk.js deleted file mode 100644 index b3da02d0..00000000 --- a/assets/plugins/ckeditor/lang/uk.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['uk']={"editor":"Текстовий редактор","editorPanel":"Панель текстового редактора","common":{"editorHelp":"натисніть ALT 0 для довідки","browseServer":"Огляд Сервера","url":"URL","protocol":"Протокол","upload":"Надіслати","uploadSubmit":"Надіслати на сервер","image":"Зображення","flash":"Flash","form":"Форма","checkbox":"Галочка","radio":"Кнопка вибору","textField":"Текстове поле","textarea":"Текстова область","hiddenField":"Приховане поле","button":"Кнопка","select":"Список","imageButton":"Кнопка із зображенням","notSet":"<не визначено>","id":"Ідентифікатор","name":"Ім'я","langDir":"Напрямок мови","langDirLtr":"Зліва направо (LTR)","langDirRtl":"Справа наліво (RTL)","langCode":"Код мови","longDescr":"Довгий опис URL","cssClass":"Клас CSS","advisoryTitle":"Заголовок","cssStyle":"Стиль CSS","ok":"ОК","cancel":"Скасувати","close":"Закрити","preview":"Попередній перегляд","resize":"Потягніть для зміни розмірів","generalTab":"Основне","advancedTab":"Додаткове","validateNumberFailed":"Значення не є цілим числом.","confirmNewPage":"Всі незбережені зміни будуть втрачені. Ви впевнені, що хочете завантажити нову сторінку?","confirmCancel":"Деякі опції змінено. Закрити вікно без збереження змін?","options":"Опції","target":"Ціль","targetNew":"Нове вікно (_blank)","targetTop":"Поточне вікно (_top)","targetSelf":"Поточний фрейм/вікно (_self)","targetParent":"Батьківський фрейм/вікно (_parent)","langDirLTR":"Зліва направо (LTR)","langDirRTL":"Справа наліво (RTL)","styles":"Стиль CSS","cssClasses":"Клас CSS","width":"Ширина","height":"Висота","align":"Вирівнювання","alignLeft":"По лівому краю","alignRight":"По правому краю","alignCenter":"По центру","alignTop":"По верхньому краю","alignMiddle":"По середині","alignBottom":"По нижньому краю","invalidValue":"Невірне значення.","invalidHeight":"Висота повинна бути цілим числом.","invalidWidth":"Ширина повинна бути цілим числом.","invalidCssLength":"Значення, вказане для \"%1\" в полі повинно бути позитивним числом або без дійсного виміру CSS блоку (px, %, in, cm, mm, em, ex, pt або pc).","invalidHtmlLength":"Значення, вказане для \"%1\" в полі повинно бути позитивним числом або без дійсного виміру HTML блоку (px або %).","invalidInlineStyle":"Значення, вказане для вбудованого стилю повинне складатися з одного чи кількох кортежів у форматі \"ім'я : значення\", розділених крапкою з комою.","cssLengthTooltip":"Введіть номер значення в пікселях або число з дійсною одиниці CSS (px, %, in, cm, mm, em, ex, pt або pc).","unavailable":"%1<span class=\"cke_accessibility\">, не доступне</span>"},"about":{"copy":"Copyright &copy; $1. Всі права застережено.","dlgTitle":"Про CKEditor","help":"Перевірте $1 для допомоги.","moreInfo":"Щодо інформації з ліцензування завітайте на наш сайт:","title":"Про CKEditor","userGuide":"Інструкція Користувача для CKEditor"},"basicstyles":{"bold":"Жирний","italic":"Курсив","strike":"Закреслений","subscript":"Нижній індекс","superscript":"Верхній індекс","underline":"Підкреслений"},"blockquote":{"toolbar":"Цитата"},"clipboard":{"copy":"Копіювати","copyError":"Налаштування безпеки Вашого браузера не дозволяють редактору автоматично виконувати операції копіювання. Будь ласка, використовуйте клавіатуру для цього (Ctrl/Cmd+C).","cut":"Вирізати","cutError":"Налаштування безпеки Вашого браузера не дозволяють редактору автоматично виконувати операції вирізування. Будь ласка, використовуйте клавіатуру для цього (Ctrl/Cmd+X)","paste":"Вставити","pasteArea":"Область вставки","pasteMsg":"Будь ласка, вставте інформацію з буфера обміну в цю область, користуючись комбінацією клавіш (<STRONG>Ctrl/Cmd+V</STRONG>), та натисніть <STRONG>OK</STRONG>.","securityMsg":"Редактор не може отримати прямий доступ до буферу обміну у зв'язку з налаштуваннями Вашого браузера. Вам потрібно вставити інформацію в це вікно.","title":"Вставити"},"contextmenu":{"options":"Опції контекстного меню"},"toolbar":{"toolbarCollapse":"Згорнути панель інструментів","toolbarExpand":"Розгорнути панель інструментів","toolbarGroups":{"document":"Документ","clipboard":"Буфер обміну / Скасувати","editing":"Редагування","forms":"Форми","basicstyles":"Основний Стиль","paragraph":"Параграф","links":"Посилання","insert":"Вставити","styles":"Стилі","colors":"Кольори","tools":"Інструменти"},"toolbars":"Панель інструментів редактора"},"elementspath":{"eleLabel":"Шлях","eleTitle":"%1 елемент"},"format":{"label":"Форматування","panelTitle":"Форматування параграфа","tag_address":"Адреса","tag_div":"Нормальний (div)","tag_h1":"Заголовок 1","tag_h2":"Заголовок 2","tag_h3":"Заголовок 3","tag_h4":"Заголовок 4","tag_h5":"Заголовок 5","tag_h6":"Заголовок 6","tag_p":"Нормальний","tag_pre":"Форматований"},"horizontalrule":{"toolbar":"Горизонтальна лінія"},"image":{"alertUrl":"Будь ласка, вкажіть URL зображення","alt":"Альтернативний текст","border":"Рамка","btnUpload":"Надіслати на сервер","button2Img":"Бажаєте перетворити обрану кнопку-зображення на просте зображення?","hSpace":"Гориз. відступ","img2Button":"Бажаєте перетворити обране зображення на кнопку-зображення?","infoTab":"Інформація про зображення","linkTab":"Посилання","lockRatio":"Зберегти пропорції","menu":"Властивості зображення","resetSize":"Очистити поля розмірів","title":"Властивості зображення","titleButton":"Властивості кнопки із зображенням","upload":"Надіслати","urlMissing":"Вкажіть URL зображення.","vSpace":"Верт. відступ","validateBorder":"Ширина рамки повинна бути цілим числом.","validateHSpace":"Гориз. відступ повинен бути цілим числом.","validateVSpace":"Верт. відступ повинен бути цілим числом."},"indent":{"indent":"Збільшити відступ","outdent":"Зменшити відступ"},"fakeobjects":{"anchor":"Якір","flash":"Flash-анімація","hiddenfield":"Приховані Поля","iframe":"IFrame","unknown":"Невідомий об'єкт"},"link":{"acccessKey":"Гаряча клавіша","advanced":"Додаткове","advisoryContentType":"Тип вмісту","advisoryTitle":"Заголовок","anchor":{"toolbar":"Вставити/Редагувати якір","menu":"Властивості якоря","title":"Властивості якоря","name":"Ім'я якоря","errorName":"Будь ласка, вкажіть ім'я якоря","remove":"Прибрати якір"},"anchorId":"За ідентифікатором елементу","anchorName":"За ім'ям елементу","charset":"Кодування","cssClasses":"Клас CSS","emailAddress":"Адреса ел. пошти","emailBody":"Тіло повідомлення","emailSubject":"Тема листа","id":"Ідентифікатор","info":"Інформація посилання","langCode":"Код мови","langDir":"Напрямок мови","langDirLTR":"Зліва направо (LTR)","langDirRTL":"Справа наліво (RTL)","menu":"Вставити посилання","name":"Ім'я","noAnchors":"(В цьому документі немає якорів)","noEmail":"Будь ласка, вкажіть адрес ел. пошти","noUrl":"Будь ласка, вкажіть URL посилання","other":"<інший>","popupDependent":"Залежний (Netscape)","popupFeatures":"Властивості випливаючого вікна","popupFullScreen":"Повний екран (IE)","popupLeft":"Позиція зліва","popupLocationBar":"Панель локації","popupMenuBar":"Панель меню","popupResizable":"Масштабоване","popupScrollBars":"Стрічки прокрутки","popupStatusBar":"Рядок статусу","popupToolbar":"Панель інструментів","popupTop":"Позиція зверху","rel":"Зв'язок","selectAnchor":"Оберіть якір","styles":"Стиль CSS","tabIndex":"Послідовність переходу","target":"Ціль","targetFrame":"<фрейм>","targetFrameName":"Ім'я цільового фрейму","targetPopup":"<випливаюче вікно>","targetPopupName":"Ім'я випливаючого вікна","title":"Посилання","toAnchor":"Якір на цю сторінку","toEmail":"Ел. пошта","toUrl":"URL","toolbar":"Вставити/Редагувати посилання","type":"Тип посилання","unlink":"Видалити посилання","upload":"Надіслати"},"list":{"bulletedlist":"Маркірований список","numberedlist":"Нумерований список"},"magicline":{"title":"Вставити абзац"},"maximize":{"maximize":"Максимізувати","minimize":"Мінімізувати"},"pastetext":{"button":"Вставити тільки текст","title":"Вставити тільки текст"},"pastefromword":{"confirmCleanup":"Текст, що Ви намагаєтесь вставити, схожий на скопійований з Word. Бажаєте очистити його форматування перед вставлянням?","error":"Неможливо очистити форматування через внутрішню помилку.","title":"Вставити з Word","toolbar":"Вставити з Word"},"removeformat":{"toolbar":"Очистити форматування"},"sourcearea":{"toolbar":"Джерело"},"specialchar":{"options":"Опції","title":"Оберіть спеціальний символ","toolbar":"Спеціальний символ"},"scayt":{"about":"Про SCAYT","aboutTab":"Про SCAYT","addWord":"Додати слово","allCaps":"Пропустити прописні слова","dic_create":"Створити","dic_delete":"Видалити","dic_field_name":"Назва словника","dic_info":"Як правило, користувацькі словники зберігаються у cookie-файлах. Однак, cookie-файли мають обмеження на розмір. Якщо користувацький словник зростає в обсязі настільки, що вже не може бути збережений у cookie-файлі, тоді його можна зберегти на нашому сервері. Щоб зберегти Ваш персональний словник на нашому сервері необхідно вказати назву словника. Якщо Ви вже зберігали словник на сервері, будь ласка, вкажіть назву збереженого словника і натисніть кнопку Відновити.","dic_rename":"Перейменувати","dic_restore":"Відновити","dictionariesTab":"Словники","disable":"Вимкнути SCAYT","emptyDic":"Назва словника повинна бути вказана.","enable":"Ввімкнути SCAYT","ignore":"Пропустити","ignoreAll":"Пропустити всі","ignoreDomainNames":"Пропустити доменні назви","langs":"Мови","languagesTab":"Мови","mixedCase":"Пропустити слова зі змішаним регістром","mixedWithDigits":"Пропустити слова, що містять цифри","moreSuggestions":"Більше варіантів","opera_title":"Не підтримується в Opera","options":"Опції","optionsTab":"Опції","title":"Перефірка орфографії по мірі набору","toggle":"Перемкнути SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"Стиль","panelTitle":"Стилі форматування","panelTitle1":"Блочні стилі","panelTitle2":"Рядкові стилі","panelTitle3":"Об'єктні стилі"},"table":{"border":"Розмір рамки","caption":"Заголовок таблиці","cell":{"menu":"Комірки","insertBefore":"Вставити комірку перед","insertAfter":"Вставити комірку після","deleteCell":"Видалити комірки","merge":"Об'єднати комірки","mergeRight":"Об'єднати справа","mergeDown":"Об'єднати донизу","splitHorizontal":"Розділити комірку по горизонталі","splitVertical":"Розділити комірку по вертикалі","title":"Властивості комірки","cellType":"Тип комірки","rowSpan":"Об'єднання рядків","colSpan":"Об'єднання стовпців","wordWrap":"Автоперенесення тексту","hAlign":"Гориз. вирівнювання","vAlign":"Верт. вирівнювання","alignBaseline":"По базовій лінії","bgColor":"Колір фону","borderColor":"Колір рамки","data":"Дані","header":"Заголовок","yes":"Так","no":"Ні","invalidWidth":"Ширина комірки повинна бути цілим числом.","invalidHeight":"Висота комірки повинна бути цілим числом.","invalidRowSpan":"Кількість об'єднуваних рядків повинна бути цілим числом.","invalidColSpan":"Кількість об'єднуваних стовбців повинна бути цілим числом.","chooseColor":"Обрати"},"cellPad":"Внутр. відступ","cellSpace":"Проміжок","column":{"menu":"Стовбці","insertBefore":"Вставити стовбець перед","insertAfter":"Вставити стовбець після","deleteColumn":"Видалити стовбці"},"columns":"Стовбці","deleteTable":"Видалити таблицю","headers":"Заголовки стовбців/рядків","headersBoth":"Стовбці і рядки","headersColumn":"Стовбці","headersNone":"Без заголовків","headersRow":"Рядки","invalidBorder":"Розмір рамки повинен бути цілим числом.","invalidCellPadding":"Внутр. відступ комірки повинен бути цілим числом.","invalidCellSpacing":"Проміжок між комірками повинен бути цілим числом.","invalidCols":"Кількість стовбців повинна бути більшою 0.","invalidHeight":"Висота таблиці повинна бути цілим числом.","invalidRows":"Кількість рядків повинна бути більшою 0.","invalidWidth":"Ширина таблиці повинна бути цілим числом.","menu":"Властивості таблиці","row":{"menu":"Рядки","insertBefore":"Вставити рядок перед","insertAfter":"Вставити рядок після","deleteRow":"Видалити рядки"},"rows":"Рядки","summary":"Детальний опис заголовку таблиці","title":"Властивості таблиці","toolbar":"Таблиця","widthPc":"відсотків","widthPx":"пікселів","widthUnit":"Одиниці вимір."},"undo":{"redo":"Повторити","undo":"Повернути"},"wsc":{"btnIgnore":"Пропустити","btnIgnoreAll":"Пропустити все","btnReplace":"Замінити","btnReplaceAll":"Замінити все","btnUndo":"Назад","changeTo":"Замінити на","errorLoading":"Помилка завантаження : %s.","ieSpellDownload":"Модуль перевірки орфографії не встановлено. Бажаєте завантажити його зараз?","manyChanges":"Перевірку орфографії завершено: 1% слів(ова) змінено","noChanges":"Перевірку орфографії завершено: жодне слово не змінено","noMispell":"Перевірку орфографії завершено: помилок не знайдено","noSuggestions":"- немає варіантів -","notAvailable":"Вибачте, але сервіс наразі недоступний.","notInDic":"Немає в словнику","oneChange":"Перевірку орфографії завершено: змінено одне слово","progress":"Виконується перевірка орфографії...","title":"Перевірка орфографії","toolbar":"Перевірити орфографію"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/vi.js b/assets/plugins/ckeditor/lang/vi.js deleted file mode 100644 index 5e0c110c..00000000 --- a/assets/plugins/ckeditor/lang/vi.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['vi']={"editor":"Bộ soạn thảo văn bản có định dạng","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Nhấn ALT + 0 để được giúp đỡ","browseServer":"Duyệt máy chủ","url":"URL","protocol":"Giao thức","upload":"Tải lên","uploadSubmit":"Tải lên máy chủ","image":"Hình ảnh","flash":"Flash","form":"Biểu mẫu","checkbox":"Nút kiểm","radio":"Nút chọn","textField":"Trường văn bản","textarea":"Vùng văn bản","hiddenField":"Trường ẩn","button":"Nút","select":"Ô chọn","imageButton":"Nút hình ảnh","notSet":"<không thiết lập>","id":"Định danh","name":"Tên","langDir":"Hướng ngôn ngữ","langDirLtr":"Trái sang phải (LTR)","langDirRtl":"Phải sang trái (RTL)","langCode":"Mã ngôn ngữ","longDescr":"Mô tả URL","cssClass":"Lớp Stylesheet","advisoryTitle":"Nhan đề hướng dẫn","cssStyle":"Kiểu (style)","ok":"Đồng ý","cancel":"Bỏ qua","close":"Đóng","preview":"Xem trước","resize":"Kéo rê để thay đổi kích cỡ","generalTab":"Tab chung","advancedTab":"Tab mở rộng","validateNumberFailed":"Giá trị này không phải là số.","confirmNewPage":"Mọi thay đổi không được lưu lại, nội dung này sẽ bị mất. Bạn có chắc chắn muốn tải một trang mới?","confirmCancel":"Một vài tùy chọn đã bị thay đổi. Bạn có chắc chắn muốn đóng hộp thoại?","options":"Tùy chọn","target":"Đích đến","targetNew":"Cửa sổ mới (_blank)","targetTop":"Cửa sổ trên cùng (_top)","targetSelf":"Tại trang (_self)","targetParent":"Cửa sổ cha (_parent)","langDirLTR":"Trái sang phải (LTR)","langDirRTL":"Phải sang trái (RTL)","styles":"Kiểu","cssClasses":"Lớp CSS","width":"Chiều rộng","height":"chiều cao","align":"Vị trí","alignLeft":"Trái","alignRight":"Phải","alignCenter":"Giữa","alignTop":"Trên","alignMiddle":"Giữa","alignBottom":"Dưới","invalidValue":"Giá trị không hợp lệ.","invalidHeight":"Chiều cao phải là số nguyên.","invalidWidth":"Chiều rộng phải là số nguyên.","invalidCssLength":"Giá trị quy định cho trường \"%1\" phải là một số dương có hoặc không có một đơn vị đo CSS hợp lệ (px, %, in, cm, mm, em, ex, pt, hoặc pc).","invalidHtmlLength":"Giá trị quy định cho trường \"%1\" phải là một số dương có hoặc không có một đơn vị đo HTML hợp lệ (px hoặc %).","invalidInlineStyle":"Giá trị quy định cho kiểu nội tuyến phải bao gồm một hoặc nhiều dữ liệu với định dạng \"tên:giá trị\", cách nhau bằng dấu chấm phẩy.","cssLengthTooltip":"Nhập một giá trị theo pixel hoặc một số với một đơn vị CSS hợp lệ (px, %, in, cm, mm, em, ex, pt, hoặc pc).","unavailable":"%1<span class=\"cke_accessibility\">, không có</span>"},"about":{"copy":"Bản quyền &copy; $1. Giữ toàn quyền.","dlgTitle":"Thông tin về CKEditor","help":"Kiểm tra $1 để được giúp đỡ.","moreInfo":"Vui lòng ghé thăm trang web của chúng tôi để có thông tin về giấy phép:","title":"Thông tin về CKEditor","userGuide":"Hướng dẫn sử dụng CKEditor"},"basicstyles":{"bold":"Đậm","italic":"Nghiêng","strike":"Gạch xuyên ngang","subscript":"Chỉ số dưới","superscript":"Chỉ số trên","underline":"Gạch chân"},"blockquote":{"toolbar":"Khối trích dẫn"},"clipboard":{"copy":"Sao chép","copyError":"Các thiết lập bảo mật của trình duyệt không cho phép trình biên tập tự động thực thi lệnh sao chép. Hãy sử dụng bàn phím cho lệnh này (Ctrl/Cmd+C).","cut":"Cắt","cutError":"Các thiết lập bảo mật của trình duyệt không cho phép trình biên tập tự động thực thi lệnh cắt. Hãy sử dụng bàn phím cho lệnh này (Ctrl/Cmd+X).","paste":"Dán","pasteArea":"Khu vực dán","pasteMsg":"Hãy dán nội dung vào trong khung bên dưới, sử dụng tổ hợp phím (<STRONG>Ctrl/Cmd+V</STRONG>) và nhấn vào nút <STRONG>Đồng ý</STRONG>.","securityMsg":"Do thiết lập bảo mật của trình duyệt nên trình biên tập không thể truy cập trực tiếp vào nội dung đã sao chép. Bạn cần phải dán lại nội dung vào cửa sổ này.","title":"Dán"},"contextmenu":{"options":"Tùy chọn menu bổ xung"},"toolbar":{"toolbarCollapse":"Thu gọn thanh công cụ","toolbarExpand":"Mở rộng thnah công cụ","toolbarGroups":{"document":"Tài liệu","clipboard":"Clipboard/Undo","editing":"Chỉnh sửa","forms":"Bảng biểu","basicstyles":"Kiểu cơ bản","paragraph":"Đoạn","links":"Liên kết","insert":"Chèn","styles":"Kiểu","colors":"Màu sắc","tools":"Công cụ"},"toolbars":"Thanh công cụ"},"elementspath":{"eleLabel":"Nhãn thành phần","eleTitle":"%1 thành phần"},"format":{"label":"Định dạng","panelTitle":"Định dạng","tag_address":"Address","tag_div":"Bình thường (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Bình thường (P)","tag_pre":"Đã thiết lập"},"horizontalrule":{"toolbar":"Chèn đường phân cách ngang"},"image":{"alertUrl":"Hãy đưa vào đường dẫn của ảnh","alt":"Chú thích ảnh","border":"Đường viền","btnUpload":"Tải lên máy chủ","button2Img":"Bạn có muốn chuyển nút bấm bằng ảnh được chọn thành ảnh?","hSpace":"Khoảng đệm ngang","img2Button":"Bạn có muốn chuyển đổi ảnh được chọn thành nút bấm bằng ảnh?","infoTab":"Thông tin của ảnh","linkTab":"Tab liên kết","lockRatio":"Giữ nguyên tỷ lệ","menu":"Thuộc tính của ảnh","resetSize":"Kích thước gốc","title":"Thuộc tính của ảnh","titleButton":"Thuộc tính nút của ảnh","upload":"Tải lên","urlMissing":"Thiếu đường dẫn hình ảnh","vSpace":"Khoảng đệm dọc","validateBorder":"Chiều rộng của đường viền phải là một số nguyên dương","validateHSpace":"Khoảng đệm ngang phải là một số nguyên dương","validateVSpace":"Khoảng đệm dọc phải là một số nguyên dương"},"indent":{"indent":"Dịch vào trong","outdent":"Dịch ra ngoài"},"fakeobjects":{"anchor":"Điểm neo","flash":"Flash","hiddenfield":"Trường ẩn","iframe":"IFrame","unknown":"Đối tượng không rõ ràng"},"link":{"acccessKey":"Phím hỗ trợ truy cập","advanced":"Mở rộng","advisoryContentType":"Nội dung hướng dẫn","advisoryTitle":"Nhan đề hướng dẫn","anchor":{"toolbar":"Chèn/Sửa điểm neo","menu":"Thuộc tính điểm neo","title":"Thuộc tính điểm neo","name":"Tên của điểm neo","errorName":"Hãy nhập vào tên của điểm neo","remove":"Xóa neo"},"anchorId":"Theo định danh thành phần","anchorName":"Theo tên điểm neo","charset":"Bảng mã của tài nguyên được liên kết đến","cssClasses":"Lớp Stylesheet","emailAddress":"Thư điện tử","emailBody":"Nội dung thông điệp","emailSubject":"Tiêu đề thông điệp","id":"Định danh","info":"Thông tin liên kết","langCode":"Mã ngôn ngữ","langDir":"Hướng ngôn ngữ","langDirLTR":"Trái sang phải (LTR)","langDirRTL":"Phải sang trái (RTL)","menu":"Sửa liên kết","name":"Tên","noAnchors":"(Không có điểm neo nào trong tài liệu)","noEmail":"Hãy đưa vào địa chỉ thư điện tử","noUrl":"Hãy đưa vào đường dẫn liên kết (URL)","other":"<khác>","popupDependent":"Phụ thuộc (Netscape)","popupFeatures":"Đặc điểm của cửa sổ Popup","popupFullScreen":"Toàn màn hình (IE)","popupLeft":"Vị trí bên trái","popupLocationBar":"Thanh vị trí","popupMenuBar":"Thanh Menu","popupResizable":"Có thể thay đổi kích cỡ","popupScrollBars":"Thanh cuộn","popupStatusBar":"Thanh trạng thái","popupToolbar":"Thanh công cụ","popupTop":"Vị trí phía trên","rel":"Quan hệ","selectAnchor":"Chọn một điểm neo","styles":"Kiểu (style)","tabIndex":"Chỉ số của Tab","target":"Đích","targetFrame":"<khung>","targetFrameName":"Tên khung đích","targetPopup":"<cửa sổ popup>","targetPopupName":"Tên cửa sổ Popup","title":"Liên kết","toAnchor":"Neo trong trang này","toEmail":"Thư điện tử","toUrl":"URL","toolbar":"Chèn/Sửa liên kết","type":"Kiểu liên kết","unlink":"Xoá liên kết","upload":"Tải lên"},"list":{"bulletedlist":"Chèn/Xoá Danh sách không thứ tự","numberedlist":"Chèn/Xoá Danh sách có thứ tự"},"magicline":{"title":"Chèn đoạn vào đây"},"maximize":{"maximize":"Phóng to tối đa","minimize":"Thu nhỏ"},"pastetext":{"button":"Dán theo định dạng văn bản thuần","title":"Dán theo định dạng văn bản thuần"},"pastefromword":{"confirmCleanup":"Văn bản bạn muốn dán có kèm định dạng của Word. Bạn có muốn loại bỏ định dạng Word trước khi dán?","error":"Không thể để làm sạch các dữ liệu dán do một lỗi nội bộ","title":"Dán với định dạng Word","toolbar":"Dán với định dạng Word"},"removeformat":{"toolbar":"Xoá định dạng"},"sourcearea":{"toolbar":"Mã HTML"},"specialchar":{"options":"Tùy chọn các ký tự đặc biệt","title":"Hãy chọn ký tự đặc biệt","toolbar":"Chèn ký tự đặc biệt"},"scayt":{"about":"Thông tin về SCAYT","aboutTab":"Thông tin","addWord":"Thêm từ","allCaps":"Không phân biệt chữ HOA chữ thường","dic_create":"Tạo","dic_delete":"Xóa","dic_field_name":"Tên từ điển","dic_info":"Ban đầu, từ điển người dùng được lưu trữ trong một cookie. Tuy nhiên, kích thước cookie bị giới hạn. Khi người sử dụng từ điển phát triển đến điểm không thể được lưu trữ trong cookie, từ điển sẽ được lưu trữ trên máy chủ của chúng tôi. Để lưu trữ từ điển cá nhân của bạn trên máy chủ của chúng tôi, bạn nên xác định một tên cho từ điển của bạn. Nếu bạn đã có một cuốn từ điển được lưu trữ, xin vui lòng gõ tên của nó và nhấn vào nút Khôi phục.","dic_rename":"Thay tên","dic_restore":"Phục hồi","dictionariesTab":"Từ điển","disable":"Tắt SCAYT","emptyDic":"Tên của từ điển không được để trống.","enable":"Bật SCAYT","ignore":"Bỏ qua","ignoreAll":"Bỏ qua tất cả","ignoreDomainNames":"Bỏ qua tên miền","langs":"Ngôn ngữ","languagesTab":"Tab ngôn ngữ","mixedCase":"Không phân biệt loại chữ","mixedWithDigits":"Không phân biệt chữ và số","moreSuggestions":"Đề xuất thêm","opera_title":"Không hỗ trợ trên trình duyệt Opera","options":"Tùy chọn","optionsTab":"Tùy chọn","title":"Kiểm tra chính tả ngay khi gõ chữ (SCAYT)","toggle":"Bật tắt SCAYT","noSuggestions":"No suggestion"},"stylescombo":{"label":"Kiểu","panelTitle":"Phong cách định dạng","panelTitle1":"Kiểu khối","panelTitle2":"Kiểu trực tiếp","panelTitle3":"Kiểu đối tượng"},"table":{"border":"Kích thước đường viền","caption":"Đầu đề","cell":{"menu":"Ô","insertBefore":"Chèn ô Phía trước","insertAfter":"Chèn ô Phía sau","deleteCell":"Xoá ô","merge":"Kết hợp ô","mergeRight":"Kết hợp sang phải","mergeDown":"Kết hợp xuống dưới","splitHorizontal":"Phân tách ô theo chiều ngang","splitVertical":"Phân tách ô theo chiều dọc","title":"Thuộc tính của ô","cellType":"Kiểu của ô","rowSpan":"Kết hợp hàng","colSpan":"Kết hợp cột","wordWrap":"Chữ liền hàng","hAlign":"Canh lề ngang","vAlign":"Canh lề dọc","alignBaseline":"Đường cơ sở","bgColor":"Màu nền","borderColor":"Màu viền","data":"Dữ liệu","header":"Đầu đề","yes":"Có","no":"Không","invalidWidth":"Chiều rộng của ô phải là một số nguyên.","invalidHeight":"Chiều cao của ô phải là một số nguyên.","invalidRowSpan":"Số hàng kết hợp phải là một số nguyên.","invalidColSpan":"Số cột kết hợp phải là một số nguyên.","chooseColor":"Chọn màu"},"cellPad":"Khoảng đệm giữ ô và nội dung","cellSpace":"Khoảng cách giữa các ô","column":{"menu":"Cột","insertBefore":"Chèn cột phía trước","insertAfter":"Chèn cột phía sau","deleteColumn":"Xoá cột"},"columns":"Số cột","deleteTable":"Xóa bảng","headers":"Đầu đề","headersBoth":"Cả hai","headersColumn":"Cột đầu tiên","headersNone":"Không có","headersRow":"Hàng đầu tiên","invalidBorder":"Kích cỡ của đường biên phải là một số nguyên.","invalidCellPadding":"Khoảng đệm giữa ô và nội dung phải là một số nguyên.","invalidCellSpacing":"Khoảng cách giữa các ô phải là một số nguyên.","invalidCols":"Số lượng cột phải là một số lớn hơn 0.","invalidHeight":"Chiều cao của bảng phải là một số nguyên.","invalidRows":"Số lượng hàng phải là một số lớn hơn 0.","invalidWidth":"Chiều rộng của bảng phải là một số nguyên.","menu":"Thuộc tính bảng","row":{"menu":"Hàng","insertBefore":"Chèn hàng phía trước","insertAfter":"Chèn hàng phía sau","deleteRow":"Xoá hàng"},"rows":"Số hàng","summary":"Tóm lược","title":"Thuộc tính bảng","toolbar":"Bảng","widthPc":"Phần trăm (%)","widthPx":"Điểm ảnh (px)","widthUnit":"Đơn vị"},"undo":{"redo":"Làm lại thao tác","undo":"Khôi phục thao tác"},"wsc":{"btnIgnore":"Bỏ qua","btnIgnoreAll":"Bỏ qua tất cả","btnReplace":"Thay thế","btnReplaceAll":"Thay thế tất cả","btnUndo":"Phục hồi lại","changeTo":"Chuyển thành","errorLoading":"Lỗi khi đang nạp dịch vụ ứng dụng: %s.","ieSpellDownload":"Chức năng kiểm tra chính tả chưa được cài đặt. Bạn có muốn tải về ngay bây giờ?","manyChanges":"Hoàn tất kiểm tra chính tả: %1 từ đã được thay đổi","noChanges":"Hoàn tất kiểm tra chính tả: Không có từ nào được thay đổi","noMispell":"Hoàn tất kiểm tra chính tả: Không có lỗi chính tả","noSuggestions":"- Không đưa ra gợi ý về từ -","notAvailable":"Xin lỗi, dịch vụ này hiện tại không có.","notInDic":"Không có trong từ điển","oneChange":"Hoàn tất kiểm tra chính tả: Một từ đã được thay đổi","progress":"Đang tiến hành kiểm tra chính tả...","title":"Kiểm tra chính tả","toolbar":"Kiểm tra chính tả"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/zh-cn.js b/assets/plugins/ckeditor/lang/zh-cn.js deleted file mode 100644 index 04b80d22..00000000 --- a/assets/plugins/ckeditor/lang/zh-cn.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['zh-cn']={"editor":"所见即所得编辑器","editorPanel":"所见即所得编辑器面板","common":{"editorHelp":"按 ALT+0 获得帮助","browseServer":"浏览服务器","url":"URL","protocol":"协议","upload":"上传","uploadSubmit":"上传到服务器","image":"图像","flash":"Flash","form":"表单","checkbox":"复选框","radio":"单选按钮","textField":"单行文本","textarea":"多行文本","hiddenField":"隐藏域","button":"按钮","select":"列表/菜单","imageButton":"图像按钮","notSet":"<没有设置>","id":"ID","name":"名称","langDir":"语言方向","langDirLtr":"从左到右 (LTR)","langDirRtl":"从右到左 (RTL)","langCode":"语言代码","longDescr":"详细说明 URL","cssClass":"样式类名称","advisoryTitle":"标题","cssStyle":"行内样式","ok":"确定","cancel":"取消","close":"关闭","preview":"预览","resize":"拖拽以改变大小","generalTab":"常规","advancedTab":"高级","validateNumberFailed":"需要输入数字格式","confirmNewPage":"当前文档内容未保存,是否确认新建文档?","confirmCancel":"部分修改尚未保存,是否确认关闭对话框?","options":"选项","target":"目标窗口","targetNew":"新窗口 (_blank)","targetTop":"整页 (_top)","targetSelf":"本窗口 (_self)","targetParent":"父窗口 (_parent)","langDirLTR":"从左到右 (LTR)","langDirRTL":"从右到左 (RTL)","styles":"样式","cssClasses":"样式类","width":"宽度","height":"高度","align":"对齐方式","alignLeft":"左对齐","alignRight":"右对齐","alignCenter":"居中","alignTop":"顶端","alignMiddle":"居中","alignBottom":"底部","invalidValue":"无效的值。","invalidHeight":"高度必须为数字格式","invalidWidth":"宽度必须为数字格式","invalidCssLength":"此“%1”字段的值必须为正数,可以包含或不包含一个有效的 CSS 长度单位(px, %, in, cm, mm, em, ex, pt 或 pc)","invalidHtmlLength":"此“%1”字段的值必须为正数,可以包含或不包含一个有效的 HTML 长度单位(px 或 %)","invalidInlineStyle":"内联样式必须为格式是以分号分隔的一个或多个“属性名 : 属性值”。","cssLengthTooltip":"输入一个表示像素值的数字,或加上一个有效的 CSS 长度单位(px, %, in, cm, mm, em, ex, pt 或 pc)。","unavailable":"%1<span class=\"cke_accessibility\">,不可用</span>"},"about":{"copy":"版权所有 &copy; $1。<br />保留所有权利。","dlgTitle":"关于 CKEditor","help":"访问 $1 以获取帮助。","moreInfo":"相关授权许可信息请访问我们的网站:","title":"关于 CKEditor","userGuide":"CKEditor 用户向导"},"basicstyles":{"bold":"加粗","italic":"倾斜","strike":"删除线","subscript":"下标","superscript":"上标","underline":"下划线"},"blockquote":{"toolbar":"块引用"},"clipboard":{"copy":"复制","copyError":"您的浏览器安全设置不允许编辑器自动执行复制操作,请使用键盘快捷键(Ctrl/Cmd+C)来完成。","cut":"剪切","cutError":"您的浏览器安全设置不允许编辑器自动执行剪切操作,请使用键盘快捷键(Ctrl/Cmd+X)来完成。","paste":"粘贴","pasteArea":"粘贴区域","pasteMsg":"请使用键盘快捷键(<STRONG>Ctrl/Cmd+V</STRONG>)把内容粘贴到下面的方框里,再按 <STRONG>确定</STRONG>","securityMsg":"因为您的浏览器的安全设置原因,本编辑器不能直接访问您的剪贴板内容,你需要在本窗口重新粘贴一次。","title":"粘贴"},"contextmenu":{"options":"快捷菜单选项"},"toolbar":{"toolbarCollapse":"折叠工具栏","toolbarExpand":"展开工具栏","toolbarGroups":{"document":"文档","clipboard":"剪贴板/撤销","editing":"编辑","forms":"表单","basicstyles":"基本格式","paragraph":"段落","links":"链接","insert":"插入","styles":"样式","colors":"颜色","tools":"工具"},"toolbars":"工具栏"},"elementspath":{"eleLabel":"元素路径","eleTitle":"%1 元素"},"format":{"label":"格式","panelTitle":"格式","tag_address":"地址","tag_div":"段落(DIV)","tag_h1":"标题 1","tag_h2":"标题 2","tag_h3":"标题 3","tag_h4":"标题 4","tag_h5":"标题 5","tag_h6":"标题 6","tag_p":"普通","tag_pre":"已编排格式"},"horizontalrule":{"toolbar":"插入水平线"},"image":{"alertUrl":"请输入图像地址","alt":"替换文本","border":"边框大小","btnUpload":"上传到服务器","button2Img":"确定要把当前图像按钮转换为普通图像吗?","hSpace":"水平间距","img2Button":"确定要把当前图像改变为图像按钮吗?","infoTab":"图像信息","linkTab":"链接","lockRatio":"锁定比例","menu":"图像属性","resetSize":"原始尺寸","title":"图像属性","titleButton":"图像域属性","upload":"上传","urlMissing":"缺少图像源文件地址","vSpace":"垂直间距","validateBorder":"边框大小必须为整数格式","validateHSpace":"水平间距必须为整数格式","validateVSpace":"垂直间距必须为整数格式"},"indent":{"indent":"增加缩进量","outdent":"减少缩进量"},"fakeobjects":{"anchor":"锚点","flash":"Flash 动画","hiddenfield":"隐藏域","iframe":"IFrame","unknown":"未知对象"},"link":{"acccessKey":"访问键","advanced":"高级","advisoryContentType":"内容类型","advisoryTitle":"标题","anchor":{"toolbar":"插入/编辑锚点链接","menu":"锚点链接属性","title":"锚点链接属性","name":"锚点名称","errorName":"请输入锚点名称","remove":"删除锚点"},"anchorId":"按锚点 ID","anchorName":"按锚点名称","charset":"字符编码","cssClasses":"样式类名称","emailAddress":"地址","emailBody":"内容","emailSubject":"主题","id":"ID","info":"超链接信息","langCode":"语言代码","langDir":"语言方向","langDirLTR":"从左到右 (LTR)","langDirRTL":"从右到左 (RTL)","menu":"编辑超链接","name":"名称","noAnchors":"(此文档没有可用的锚点)","noEmail":"请输入电子邮件地址","noUrl":"请输入超链接地址","other":"<其他>","popupDependent":"依附 (NS)","popupFeatures":"弹出窗口属性","popupFullScreen":"全屏 (IE)","popupLeft":"左","popupLocationBar":"地址栏","popupMenuBar":"菜单栏","popupResizable":"可缩放","popupScrollBars":"滚动条","popupStatusBar":"状态栏","popupToolbar":"工具栏","popupTop":"右","rel":"关联","selectAnchor":"选择一个锚点","styles":"行内样式","tabIndex":"Tab 键次序","target":"目标","targetFrame":"<框架>","targetFrameName":"目标框架名称","targetPopup":"<弹出窗口>","targetPopupName":"弹出窗口名称","title":"超链接","toAnchor":"页内锚点链接","toEmail":"电子邮件","toUrl":"地址","toolbar":"插入/编辑超链接","type":"超链接类型","unlink":"取消超链接","upload":"上传"},"list":{"bulletedlist":"项目列表","numberedlist":"编号列表"},"magicline":{"title":"在这插入段落"},"maximize":{"maximize":"全屏","minimize":"最小化"},"pastetext":{"button":"粘贴为无格式文本","title":"粘贴为无格式文本"},"pastefromword":{"confirmCleanup":"您要粘贴的内容好像是来自 MS Word,是否要清除 MS Word 格式后再粘贴?","error":"由于内部错误无法清理要粘贴的数据","title":"从 MS Word 粘贴","toolbar":"从 MS Word 粘贴"},"removeformat":{"toolbar":"清除格式"},"sourcearea":{"toolbar":"源码"},"specialchar":{"options":"特殊符号选项","title":"选择特殊符号","toolbar":"插入特殊符号"},"scayt":{"about":"关于即时拼写检查","aboutTab":"关于","addWord":"添加单词","allCaps":"忽略所有大写单词","dic_create":"创建","dic_delete":"删除","dic_field_name":"字典名称","dic_info":"一开始用户词典储存在 Cookie 中, 但是 Cookies 的容量是有限的, 当用户词典增长到超出 Cookie 限制时就无法再储存了, 这时您可以将词典储存到我们的服务器上. 要把您的个人词典到储存到我们的服务器上的话, 需要为您的词典指定一个名称, 如果您在我们的服务器上已经有储存有一个词典, 请输入词典名称并按还原按钮.","dic_rename":"重命名","dic_restore":"还原","dictionariesTab":"字典","disable":"禁用即时拼写检查","emptyDic":"字典名不应为空.","enable":"启用即时拼写检查","ignore":"忽略","ignoreAll":"全部忽略","ignoreDomainNames":"忽略域名","langs":"语言","languagesTab":"语言","mixedCase":"忽略大小写混合的单词","mixedWithDigits":"忽略带数字的单词","moreSuggestions":"更多拼写建议","opera_title":"不支持 Opera 浏览器","options":"选项","optionsTab":"选项","title":"即时拼写检查","toggle":"暂停/启用即时拼写检查","noSuggestions":"No suggestion"},"stylescombo":{"label":"样式","panelTitle":"样式","panelTitle1":"块级元素样式","panelTitle2":"内联元素样式","panelTitle3":"对象元素样式"},"table":{"border":"边框","caption":"标题","cell":{"menu":"单元格","insertBefore":"在左侧插入单元格","insertAfter":"在右侧插入单元格","deleteCell":"删除单元格","merge":"合并单元格","mergeRight":"向右合并单元格","mergeDown":"向下合并单元格","splitHorizontal":"水平拆分单元格","splitVertical":"垂直拆分单元格","title":"单元格属性","cellType":"单元格类型","rowSpan":"纵跨行数","colSpan":"横跨列数","wordWrap":"自动换行","hAlign":"水平对齐","vAlign":"垂直对齐","alignBaseline":"基线","bgColor":"背景颜色","borderColor":"边框颜色","data":"数据","header":"表头","yes":"是","no":"否","invalidWidth":"单元格宽度必须为数字格式","invalidHeight":"单元格高度必须为数字格式","invalidRowSpan":"行跨度必须为整数格式","invalidColSpan":"列跨度必须为整数格式","chooseColor":"选择"},"cellPad":"边距","cellSpace":"间距","column":{"menu":"列","insertBefore":"在左侧插入列","insertAfter":"在右侧插入列","deleteColumn":"删除列"},"columns":"列数","deleteTable":"删除表格","headers":"标题单元格","headersBoth":"第一列和第一行","headersColumn":"第一列","headersNone":"无","headersRow":"第一行","invalidBorder":"边框粗细必须为数字格式","invalidCellPadding":"单元格填充必须为数字格式","invalidCellSpacing":"单元格间距必须为数字格式","invalidCols":"指定的行数必须大于零","invalidHeight":"表格高度必须为数字格式","invalidRows":"指定的列数必须大于零","invalidWidth":"表格宽度必须为数字格式","menu":"表格属性","row":{"menu":"行","insertBefore":"在上方插入行","insertAfter":"在下方插入行","deleteRow":"删除行"},"rows":"行数","summary":"摘要","title":"表格属性","toolbar":"表格","widthPc":"百分比","widthPx":"像素","widthUnit":"宽度单位"},"undo":{"redo":"重做","undo":"撤消"},"wsc":{"btnIgnore":"忽略","btnIgnoreAll":"全部忽略","btnReplace":"替换","btnReplaceAll":"全部替换","btnUndo":"撤消","changeTo":"更改为","errorLoading":"加载应该服务主机时出错: %s.","ieSpellDownload":"拼写检查插件还没安装, 您是否想现在就下载?","manyChanges":"拼写检查完成: 更改了 %1 个单词","noChanges":"拼写检查完成: 没有更改任何单词","noMispell":"拼写检查完成: 没有发现拼写错误","noSuggestions":"- 没有建议 -","notAvailable":"抱歉, 服务目前暂不可用","notInDic":"没有在字典里","oneChange":"拼写检查完成: 更改了一个单词","progress":"正在进行拼写检查...","title":"拼写检查","toolbar":"拼写检查"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/lang/zh.js b/assets/plugins/ckeditor/lang/zh.js deleted file mode 100644 index 3e546ce0..00000000 --- a/assets/plugins/ckeditor/lang/zh.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.lang['zh']={"editor":"RTF 編輯器","editorPanel":"RTF 編輯器面板","common":{"editorHelp":"按下 ALT 0 取得說明。","browseServer":"瀏覽伺服器","url":"URL","protocol":"通訊協定","upload":"上傳","uploadSubmit":"傳送至伺服器","image":"圖片","flash":"Flash","form":"表格","checkbox":"核取方塊","radio":"選項按鈕","textField":"文字欄位","textarea":"文字區域","hiddenField":"隱藏欄位","button":"按鈕","select":"選取欄位","imageButton":"影像按鈕","notSet":"<未設定>","id":"ID","name":"名稱","langDir":"語言方向","langDirLtr":"從左至右 (LTR)","langDirRtl":"從右至左 (RTL)","langCode":"語言代碼","longDescr":"完整描述 URL","cssClass":"樣式表類別","advisoryTitle":"標題","cssStyle":"樣式","ok":"確定","cancel":"取消","close":"關閉","preview":"預覽","resize":"調整大小","generalTab":"一般","advancedTab":"進階","validateNumberFailed":"此值不是數值。","confirmNewPage":"現存的修改尚未儲存,要開新檔案?","confirmCancel":"部份選項尚未儲存,要關閉對話框?","options":"選項","target":"目標","targetNew":"開新視窗 (_blank)","targetTop":"最上層視窗 (_top)","targetSelf":"相同視窗 (_self)","targetParent":"父視窗 (_parent)","langDirLTR":"由左至右 (LTR)","langDirRTL":"由右至左 (RTL)","styles":"樣式","cssClasses":"樣式表類別","width":"寬度","height":"高度","align":"對齊方式","alignLeft":"靠左對齊","alignRight":"靠右對齊","alignCenter":"置中對齊","alignTop":"頂端","alignMiddle":"中間對齊","alignBottom":"底端","invalidValue":"無效值。","invalidHeight":"高度必須為數字。","invalidWidth":"寬度必須為數字。","invalidCssLength":"「%1」的值應為正數,並可包含有效的 CSS 單位 (px, %, in, cm, mm, em, ex, pt, 或 pc)。","invalidHtmlLength":"「%1」的值應為正數,並可包含有效的 HTML 單位 (px 或 %)。","invalidInlineStyle":"行內樣式的值應包含一個以上的變數值組,其格式如「名稱:值」,並以分號區隔之。","cssLengthTooltip":"請輸入數值,單位是像素或有效的 CSS 單位 (px, %, in, cm, mm, em, ex, pt, 或 pc)。","unavailable":"%1<span class=\"cke_accessibility\">,無法使用</span>"},"about":{"copy":"Copyright &copy; $1. All rights reserved.","dlgTitle":"關於 CKEditor","help":"檢閱 $1 尋求幫助。","moreInfo":"關於授權資訊,請參閱我們的網站:","title":"關於 CKEditor","userGuide":"CKEditor 使用者手冊"},"basicstyles":{"bold":"粗體","italic":"斜體","strike":"刪除線","subscript":"下標","superscript":"上標","underline":"底線"},"blockquote":{"toolbar":"引用段落"},"clipboard":{"copy":"複製","copyError":"瀏覽器的安全性設定不允許編輯器自動執行複製動作。請使用鍵盤快捷鍵 (Ctrl/Cmd+C) 複製。","cut":"剪下","cutError":"瀏覽器的安全性設定不允許編輯器自動執行剪下動作。請使用鏐盤快捷鍵 (Ctrl/Cmd+X) 剪下。","paste":"貼上","pasteArea":"貼上區","pasteMsg":"請使用鍵盤快捷鍵 (<strong>Ctrl/Cmd+V</strong>) 貼到下方區域中並按下「確定」。","securityMsg":"因為瀏覽器的安全性設定,本編輯器無法直接存取您的剪貼簿資料,請您自行在本視窗進行貼上動作。","title":"貼上"},"contextmenu":{"options":"內容功能表選項"},"toolbar":{"toolbarCollapse":"摺疊工具列","toolbarExpand":"展開工具列","toolbarGroups":{"document":"文件","clipboard":"剪貼簿/復原","editing":"編輯選項","forms":"格式","basicstyles":"基本樣式","paragraph":"段落","links":"連結","insert":"插入","styles":"樣式","colors":"顏色","tools":"工具"},"toolbars":"編輯器工具列"},"elementspath":{"eleLabel":"元件路徑","eleTitle":"%1 個元件"},"format":{"label":"格式","panelTitle":"段落格式","tag_address":"地址","tag_div":"標準 (DIV)","tag_h1":"標題 1","tag_h2":"標題 2","tag_h3":"標題 3","tag_h4":"標題 4","tag_h5":"標題 5","tag_h6":"標題 6","tag_p":"標準","tag_pre":"格式設定"},"horizontalrule":{"toolbar":"插入水平線"},"image":{"alertUrl":"請輸入圖片 URL","alt":"替代文字","border":"框線","btnUpload":"傳送到伺服器","button2Img":"請問您確定要將「圖片按鈕」轉換成「圖片」嗎?","hSpace":"HSpace","img2Button":"請問您確定要將「圖片」轉換成「圖片按鈕」嗎?","infoTab":"影像資訊","linkTab":"連結","lockRatio":"固定比例","menu":"影像屬性","resetSize":"重設大小","title":"影像屬性","titleButton":"影像按鈕屬性","upload":"上傳","urlMissing":"遺失圖片來源之 URL ","vSpace":"VSpace","validateBorder":"框線必須是整數。","validateHSpace":"HSpace 必須是整數。","validateVSpace":"VSpace 必須是整數。"},"indent":{"indent":"增加縮排","outdent":"減少縮排"},"fakeobjects":{"anchor":"錨點","flash":"Flash 動畫","hiddenfield":"隱藏欄位","iframe":"IFrame","unknown":"無法辨識的物件"},"link":{"acccessKey":"便捷鍵","advanced":"進階","advisoryContentType":"建議內容類型","advisoryTitle":"標題","anchor":{"toolbar":"錨點","menu":"編輯錨點","title":"錨點內容","name":"錨點名稱","errorName":"請輸入錨點名稱","remove":"移除錨點"},"anchorId":"依元件編號","anchorName":"依錨點名稱","charset":"連結資源的字元集","cssClasses":"樣式表類別","emailAddress":"電子郵件地址","emailBody":"郵件本文","emailSubject":"郵件主旨","id":"ID","info":"連結資訊","langCode":"語言碼","langDir":"語言方向","langDirLTR":"由左至右 (LTR)","langDirRTL":"由右至左 (RTL)","menu":"編輯連結","name":"名稱","noAnchors":"(本文件中無可用之錨點)","noEmail":"請輸入電子郵件","noUrl":"請輸入連結 URL","other":"<其他>","popupDependent":"獨立 (Netscape)","popupFeatures":"快顯視窗功能","popupFullScreen":"全螢幕 (IE)","popupLeft":"左側位置","popupLocationBar":"位置列","popupMenuBar":"功能表列","popupResizable":"可調大小","popupScrollBars":"捲軸","popupStatusBar":"狀態列","popupToolbar":"工具列","popupTop":"頂端位置","rel":"關係","selectAnchor":"選取一個錨點","styles":"樣式","tabIndex":"定位順序","target":"目標","targetFrame":"<框架>","targetFrameName":"目標框架名稱","targetPopup":"<快顯視窗>","targetPopupName":"快顯視窗名稱","title":"連結","toAnchor":"文字中的錨點連結","toEmail":"電子郵件","toUrl":"網址","toolbar":"連結","type":"連結類型","unlink":"取消連結","upload":"上傳"},"list":{"bulletedlist":"插入/移除項目符號清單","numberedlist":"插入/移除編號清單清單"},"magicline":{"title":"在此插入段落"},"maximize":{"maximize":"最大化","minimize":"最小化"},"pastetext":{"button":"貼成純文字","title":"貼成純文字"},"pastefromword":{"confirmCleanup":"您想貼上的文字似乎是自 Word 複製而來,請問您是否要先清除 Word 的格式後再行貼上?","error":"由於發生內部錯誤,無法清除清除 Word 的格式。","title":"自 Word 貼上","toolbar":"自 Word 貼上"},"removeformat":{"toolbar":"移除格式"},"sourcearea":{"toolbar":"原始碼"},"specialchar":{"options":"特殊字元選項","title":"選取特殊字元","toolbar":"插入特殊字元"},"scayt":{"about":"關於即時拼寫檢查","aboutTab":"關於","addWord":"添加單詞","allCaps":"Ignore All-Caps Words","dic_create":"Create","dic_delete":"Delete","dic_field_name":"Dictionary name","dic_info":"Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.","dic_rename":"Rename","dic_restore":"Restore","dictionariesTab":"字典","disable":"關閉即時拼寫檢查","emptyDic":"字典名不應為空.","enable":"啟用即時拼寫檢查","ignore":"忽略","ignoreAll":"全部忽略","ignoreDomainNames":"Ignore Domain Names","langs":"語言","languagesTab":"語言","mixedCase":"Ignore Words with Mixed Case","mixedWithDigits":"Ignore Words with Numbers","moreSuggestions":"更多拼寫建議","opera_title":"Not supported by Opera","options":"選項","optionsTab":"選項","title":"即時拼寫檢查","toggle":"啟用/關閉即時拼寫檢查","noSuggestions":"No suggestion"},"stylescombo":{"label":"樣式","panelTitle":"Formatting Styles","panelTitle1":"區塊樣式","panelTitle2":"內嵌樣式","panelTitle3":"物件樣式"},"table":{"border":"框線大小","caption":"標題","cell":{"menu":"儲存格","insertBefore":"前方插入儲存格","insertAfter":"後方插入儲存格","deleteCell":"刪除儲存格","merge":"合併儲存格","mergeRight":"向右合併","mergeDown":"向下合併","splitHorizontal":"水平分割儲存格","splitVertical":"垂直分割儲存格","title":"儲存格屬性","cellType":"儲存格類型","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"自動斷行","hAlign":"水平對齊","vAlign":"垂直對齊","alignBaseline":"基準線","bgColor":"背景顏色","borderColor":"框線顏色","data":"資料","header":"Header","yes":"是","no":"否","invalidWidth":"儲存格寬度必須為數字。","invalidHeight":"儲存格高度必須為數字。","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"選擇"},"cellPad":"Cell padding","cellSpace":"Cell spacing","column":{"menu":"行","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Delete Columns"},"columns":"行","deleteTable":"Delete Table","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"無","headersRow":"First Row","invalidBorder":"框線大小必須是整數。","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Table Properties","row":{"menu":"列","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Delete Rows"},"rows":"列","summary":"Summary","title":"Table Properties","toolbar":"Table","widthPc":"百分比","widthPx":"像素","widthUnit":"寬度單位"},"undo":{"redo":"取消復原","undo":"復原"},"wsc":{"btnIgnore":"忽略","btnIgnoreAll":"全部忽略","btnReplace":"取代","btnReplaceAll":"全部取代","btnUndo":"復原","changeTo":"更改為","errorLoading":"無法聯系侍服器: %s.","ieSpellDownload":"尚未安裝拼字檢查元件。您是否想要現在下載?","manyChanges":"拼字檢查完成:更改了 %1 個單字","noChanges":"拼字檢查完成:未更改任何單字","noMispell":"拼字檢查完成:未發現拼字錯誤","noSuggestions":"- 無建議值 -","notAvailable":"抱歉,服務目前暫不可用","notInDic":"不在字典中","oneChange":"拼字檢查完成:更改了 1 個單字","progress":"進行拼字檢查中…","title":"拼字檢查","toolbar":"拼字檢查"}}; \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js deleted file mode 100644 index b77792a0..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.dialog.add("a11yHelp",function(j){var l=j.lang.a11yhelp,m=CKEDITOR.tools.getNextId(),d={8:"BACKSPACE",9:"TAB",13:"ENTER",16:"SHIFT",17:"CTRL",18:"ALT",19:"PAUSE",20:"CAPSLOCK",27:"ESCAPE",33:"PAGE UP",34:"PAGE DOWN",35:"END",36:"HOME",37:"LEFT ARROW",38:"UP ARROW",39:"RIGHT ARROW",40:"DOWN ARROW",45:"INSERT",46:"DELETE",91:"LEFT WINDOW KEY",92:"RIGHT WINDOW KEY",93:"SELECT KEY",96:"NUMPAD 0",97:"NUMPAD 1",98:"NUMPAD 2",99:"NUMPAD 3",100:"NUMPAD 4",101:"NUMPAD 5",102:"NUMPAD 6",103:"NUMPAD 7", -104:"NUMPAD 8",105:"NUMPAD 9",106:"MULTIPLY",107:"ADD",109:"SUBTRACT",110:"DECIMAL POINT",111:"DIVIDE",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NUM LOCK",145:"SCROLL LOCK",186:"SEMI-COLON",187:"EQUAL SIGN",188:"COMMA",189:"DASH",190:"PERIOD",191:"FORWARD SLASH",192:"GRAVE ACCENT",219:"OPEN BRACKET",220:"BACK SLASH",221:"CLOSE BRAKET",222:"SINGLE QUOTE"};d[CKEDITOR.ALT]="ALT";d[CKEDITOR.SHIFT]="SHIFT";d[CKEDITOR.CTRL]="CTRL"; -var e=[CKEDITOR.ALT,CKEDITOR.SHIFT,CKEDITOR.CTRL],n=/\$\{(.*?)\}/g,q=function(){var o=j.keystrokeHandler.keystrokes,f={},b;for(b in o)f[o[b]]=b;return function(b,g){var a;if(f[g]){a=f[g];for(var h,i,k=[],c=0;c<e.length;c++)i=e[c],h=a/e[c],1<h&&2>=h&&(a-=i,k.push(d[i]));k.push(d[a]||String.fromCharCode(a));a=k.join("+")}else a=b;return a}}();return{title:l.title,minWidth:600,minHeight:400,contents:[{id:"info",label:j.lang.common.generalTab,expand:!0,elements:[{type:"html",id:"legends",style:"white-space:normal;", -focus:function(){this.getElement().focus()},html:function(){for(var d='<div class="cke_accessibility_legend" role="document" aria-labelledby="'+m+'_arialbl" tabIndex="-1">%1</div><span id="'+m+'_arialbl" class="cke_voice_label">'+l.contents+" </span>",f=[],b=l.legend,j=b.length,g=0;g<j;g++){for(var a=b[g],h=[],i=a.items,k=i.length,c=0;c<k;c++){var e=i[c],p=e.legend.replace(n,q);p.match(n)||h.push("<dt>%1</dt><dd>%2</dd>".replace("%1",e.name).replace("%2",p))}f.push("<h1>%1</h1><dl>%2</dl>".replace("%1", -a.name).replace("%2",h.join("")))}return d.replace("%1",f.join(""))}()+'<style type="text/css">.cke_accessibility_legend{width:600px;height:400px;padding-right:5px;overflow-y:auto;overflow-x:hidden;}.cke_browser_quirks .cke_accessibility_legend,.cke_browser_ie6 .cke_accessibility_legend{height:390px}.cke_accessibility_legend *{white-space:normal;}.cke_accessibility_legend h1{font-size: 20px;border-bottom: 1px solid #AAA;margin: 5px 0px 15px;}.cke_accessibility_legend dl{margin-left: 5px;}.cke_accessibility_legend dt{font-size: 13px;font-weight: bold;}.cke_accessibility_legend dd{margin:10px}</style>'}]}], -buttons:[CKEDITOR.dialog.cancelButton]}}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/_translationstatus.txt b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/_translationstatus.txt deleted file mode 100644 index 989ea464..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/_translationstatus.txt +++ /dev/null @@ -1,25 +0,0 @@ -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license - -cs.js Found: 30 Missing: 0 -cy.js Found: 30 Missing: 0 -da.js Found: 12 Missing: 18 -de.js Found: 30 Missing: 0 -el.js Found: 25 Missing: 5 -eo.js Found: 30 Missing: 0 -fa.js Found: 30 Missing: 0 -fi.js Found: 30 Missing: 0 -fr.js Found: 30 Missing: 0 -gu.js Found: 12 Missing: 18 -he.js Found: 30 Missing: 0 -it.js Found: 30 Missing: 0 -mk.js Found: 5 Missing: 25 -nb.js Found: 30 Missing: 0 -nl.js Found: 30 Missing: 0 -no.js Found: 30 Missing: 0 -pt-br.js Found: 30 Missing: 0 -ro.js Found: 6 Missing: 24 -tr.js Found: 30 Missing: 0 -ug.js Found: 27 Missing: 3 -vi.js Found: 6 Missing: 24 -zh-cn.js Found: 30 Missing: 0 diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ar.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ar.js deleted file mode 100644 index 8aa03284..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ar.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","ar",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"عام",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", -legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/bg.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/bg.js deleted file mode 100644 index 486e22ef..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/bg.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","bg",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"Общо",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", -legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ca.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ca.js deleted file mode 100644 index 53b670ae..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ca.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","ca",{title:"Instruccions d'Accessibilitat",contents:"Continguts de l'Ajuda. Per tancar aquest quadre de diàleg premi ESC.",legend:[{name:"General",items:[{name:"Editor de barra d'eines",legend:"Premi ${toolbarFocus} per desplaçar-se per la barra d'eines. Vagi en el següent i anterior grup de barra d'eines amb TAB i SHIFT-TAB. Vagi en el següent i anterior botó de la barra d'eines amb RIGHT ARROW i LEFT ARROW. Premi SPACE o ENTER per activar el botó de la barra d'eines."}, -{name:"Editor de quadre de diàleg",legend:"Dins d'un quadre de diàleg, premi la tecla TAB per desplaçar-se al següent camp del quadre de diàleg, premi SHIFT + TAB per desplaçar-se a l'anterior camp, premi ENTER per acceptar el quadre de diàleg, premi ESC per cancel·lar el quadre de diàleg. Per els quadres de diàleg que tenen diverses pestanyes, premi ALT + F10 per anar a la llista de pestanyes. Després podrà desplaçar-se a la següent pestanya amb TAB o RIGHT ARROW. Anar a la pestanya anterior amb SHIFT + TAB o LEFT ARROW. Premi SPACE o ENTER per seleccionar la pestanya."}, -{name:"Editor de menú contextual",legend:"Premi ${contextMenu} o APPLICATION KEY per obrir el menú contextual. Després desplacis a la següent opció del menú amb TAB o DOWN ARROW. Desplacis a l'anterior opció amb SHIFT+TAB o UP ARROW. Premi SPACE o ENTER per seleccionar l'opció del menú. Obri el submenú de l'actual opció utilitzant SPACE o ENTER o RIGHT ARROW. Pot tornar a l'opció del menú pare amb ESC o LEFT ARROW. Tanqui el menú contextual amb ESC."},{name:"Editor de caixa de llista",legend:"Dins d'un quadre de llista, desplacis al següent element de la llista amb TAB o DOWN ARROW. Desplacis a l'anterior element de la llista amb SHIFT + TAB o UP ARROW. Premi SPACE o ENTER per seleccionar l'opció de la llista. Premi ESC per tancar el quadre de llista."}, -{name:"Editor de barra de ruta de l'element",legend:"Premi ${elementsPathFocus} per anar als elements de la barra de ruta. Desplacis al botó de l'element següent amb TAB o RIGHT ARROW. Desplacis a l'anterior botó amb SHIFT+TAB o LEFT ARROW. Premi SPACE o ENTER per seleccionar l'element a l'editor."}]},{name:"Ordres",items:[{name:"Desfer ordre",legend:"Premi ${undo}"},{name:"Refer ordre",legend:"Premi ${redo}"},{name:"Ordre negreta",legend:"Premi ${bold}"},{name:"Ordre cursiva",legend:"Premi ${italic}"}, -{name:"Ordre subratllat",legend:"Premi ${underline}"},{name:"Ordre enllaç",legend:"Premi ${link}"},{name:"Ordre amagar barra d'eines",legend:"Premi ${toolbarCollapse}"},{name:"Ordre per accedir a l'anterior espai enfocat",legend:"Premi ${accessPreviousSpace} per accedir a l'enfocament d'espai més proper inabastable abans del símbol d'intercalació, per exemple: dos elements HR adjacents. Repetiu la combinació de tecles per arribar a enfocaments d'espais distants."},{name:"Ordre per accedir al següent espai enfocat", -legend:"Premi ${accessNextSpace} per accedir a l'enfocament d'espai més proper inabastable després del símbol d'intercalació, per exemple: dos elements HR adjacents. Repetiu la combinació de tecles per arribar a enfocaments d'espais distants."},{name:"Ajuda d'accessibilitat",legend:"Premi ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/cs.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/cs.js deleted file mode 100644 index cb41d4df..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/cs.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","cs",{title:"Instrukce pro přístupnost",contents:"Obsah nápovědy. Pro uzavření tohoto dialogu stiskněte klávesu ESC.",legend:[{name:"Obecné",items:[{name:"Panel nástrojů editoru",legend:"Stiskněte${toolbarFocus} k procházení panelu nástrojů. Přejděte na další a předchozí skupiny pomocí TAB a SHIFT-TAB. Přechod na další a předchozí tlačítko panelu nástrojů je pomocí ŠIPKA VPRAVO nebo ŠIPKA VLEVO. Stisknutím mezerníku nebo klávesy ENTER tlačítko aktivujete."},{name:"Dialogové okno editoru", -legend:"Uvnitř dialogového okna stiskněte TAB pro přesunutí na další pole, stiskněte SHIFT + TAB pro přesun na předchozí pole, stiskněte ENTER pro odeslání dialogu, stiskněte ESC pro jeho zrušení. Pro dialogová okna, která mají mnoho karet stiskněte ALT + F10 pr oprocházení seznamu karet. Pak se přesuňte na další kartu pomocí TAB nebo ŠIPKA VPRAVO. Pro přesun na předchozí stiskněte SHIFT + TAB nebo ŠIPKA VLEVO. Stiskněte MEZERNÍK nebo ENTER pro vybrání stránky karet."},{name:"Kontextové menu editoru", -legend:"Stiskněte ${contextMenu} nebo klávesu APPLICATION k otevření kontextového menu. Pak se přesuňte na další možnost menu pomocí TAB nebo ŠIPKY DOLŮ. Přesuňte se na předchozí možnost pomocí SHIFT+TAB nebo ŠIPKY NAHORU. Stiskněte MEZERNÍK nebo ENTER pro zvolení možnosti menu. Podmenu současné možnosti otevřete pomocí MEZERNÍKU nebo ENTER či ŠIPKY DOLEVA. Kontextové menu uzavřete stiskem ESC."},{name:"Rámeček seznamu editoru",legend:"Uvnitř rámečku seznamu se přesunete na další položku menu pomocí TAB nebo ŠIPKA DOLŮ. Na předchozí položku se přesunete SHIFT + TAB nebo ŠIPKA NAHORU. Stiskněte MEZERNÍK nebo ENTER pro zvolení možnosti seznamu. Stiskněte ESC pro uzavření seznamu."}, -{name:"Lišta cesty prvku v editoru",legend:"Stiskněte ${elementsPathFocus} pro procházení lišty cesty prvku. Na další tlačítko prvku se přesunete pomocí TAB nebo ŠIPKA VPRAVO. Na předchozí položku se přesunete pomocí SHIFT + TAB nebo ŠIPKA VLEVO. Stiskněte MEZERNÍK nebo ENTER pro vybrání prvku v editoru."}]},{name:"Příkazy",items:[{name:" Příkaz Zpět",legend:"Stiskněte ${undo}"},{name:" Příkaz Znovu",legend:"Stiskněte ${redo}"},{name:" Příkaz Tučné",legend:"Stiskněte ${bold}"},{name:" Příkaz Kurzíva", -legend:"Stiskněte ${italic}"},{name:" Příkaz Podtržení",legend:"Stiskněte ${underline}"},{name:" Příkaz Odkaz",legend:"Stiskněte ${link}"},{name:" Příkaz Skrýt panel nástrojů",legend:"Stiskněte ${toolbarCollapse}"},{name:"Příkaz pro přístup k předchozímu prostoru zaměření",legend:"Stiskněte ${accessPreviousSpace} pro přístup k nejbližšímu nedosažitelnému prostoru zaměření před stříškou, například: dva přilehlé prvky HR. Pro dosažení vzdálených prostorů zaměření tuto kombinaci kláves opakujte."},{name:"Příkaz pro přístup k dalšímu prostoru zaměření", -legend:"Stiskněte ${accessNextSpace} pro přístup k nejbližšímu nedosažitelnému prostoru zaměření po stříšce, například: dva přilehlé prvky HR. Pro dosažení vzdálených prostorů zaměření tuto kombinaci kláves opakujte."},{name:" Nápověda přístupnosti",legend:"Stiskněte ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/cy.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/cy.js deleted file mode 100644 index abc48aae..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/cy.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","cy",{title:"Canllawiau Hygyrchedd",contents:"Cynnwys Cymorth. I gau y deialog hwn, pwyswch ESC.",legend:[{name:"Cyffredinol",items:[{name:"Bar Offer y Golygydd",legend:"Pwyswch $ {toolbarFocus} i fynd at y bar offer. Symudwch i'r grŵp bar offer nesaf a blaenorol gyda TAB a SHIFT-TAB. Symudwch i'r botwm bar offer nesaf a blaenorol gyda SAETH DDE neu SAETH CHWITH. Pwyswch SPACE neu ENTER i wneud botwm y bar offer yn weithredol."},{name:"Deialog y Golygydd",legend:"Tu mewn i'r deialog, pwyswch TAB i fynd i'r maes nesaf ar y deialog, pwyswch SHIFT + TAB i symud i faes blaenorol, pwyswch ENTER i gyflwyno'r deialog, pwyswch ESC i ddiddymu'r deialog. Ar gyfer deialogau sydd â thudalennau aml-tab, pwyswch ALT + F10 i lywio'r tab-restr. Yna symudwch i'r tab nesaf gyda TAB neu SAETH DDE. Symudwch i dab blaenorol gyda SHIFT + TAB neu'r SAETH CHWITH. Pwyswch SPACE neu ENTER i ddewis y dudalen tab."}, -{name:"Dewislen Cyd-destun y Golygydd",legend:"Pwyswch $ {contextMenu} neu'r ALLWEDD 'APPLICATION' i agor y ddewislen cyd-destun. Yna symudwch i'r opsiwn ddewislen nesaf gyda'r TAB neu'r SAETH I LAWR. Symudwch i'r opsiwn blaenorol gyda SHIFT + TAB neu'r SAETH I FYNY. Pwyswch SPACE neu ENTER i ddewis yr opsiwn ddewislen. Agorwch is-dewislen yr opsiwn cyfredol gyda SPACE neu ENTER neu SAETH DDE. Ewch yn ôl i'r eitem ar y ddewislen uwch gydag ESC neu SAETH CHWITH. Ceuwch y ddewislen cyd-destun gydag ESC."}, -{name:"Blwch Rhestr y Golygydd",legend:"Tu mewn y blwch rhestr, ewch i'r eitem rhestr nesaf gyda TAB neu'r SAETH I LAWR. Symudwch i restr eitem flaenorol gyda SHIFT + TAB neu SAETH I FYNY. Pwyswch SPACE neu ENTER i ddewis yr opsiwn o'r rhestr. Pwyswch ESC i gau'r rhestr."},{name:"Bar Llwybr Elfen y Golygydd",legend:"Pwyswch ${elementsPathFocus} i fynd i'r bar llwybr elfennau. Symudwch i fotwm yr elfen nesaf gyda TAB neu SAETH DDE. Symudwch i fotwm blaenorol gyda SHIFT + TAB neu SAETH CHWITH. Pwyswch SPACE neu ENTER i ddewis yr elfen yn y golygydd."}]}, -{name:"Gorchmynion",items:[{name:"Gorchymyn dadwneud",legend:"Pwyswch ${undo}"},{name:"Gorchymyn ailadrodd",legend:"Pwyswch ${redo}"},{name:"Gorchymyn Bras",legend:"Pwyswch ${bold}"},{name:"Gorchymyn italig",legend:"Pwyswch ${italig}"},{name:"Gorchymyn tanlinellu",legend:"Pwyso ${underline}"},{name:"Gorchymyn dolen",legend:"Pwyswch ${link}"},{name:"Gorchymyn Cwympo'r Dewislen",legend:"Pwyswch ${toolbarCollapse}"},{name:"Myned i orchymyn bwlch ffocws blaenorol",legend:"Pwyswch ${accessPreviousSpace} i fyned i'r \"blwch ffocws sydd methu ei gyrraedd\" cyn y caret, er enghraifft: dwy elfen HR drws nesaf i'w gilydd. AIladroddwch y cyfuniad allwedd i gyrraedd bylchau ffocws pell."}, -{name:"Ewch i'r gorchymyn blwch ffocws nesaf",legend:"Pwyswch ${accessNextSpace} i fyned i'r blwch ffocws agosaf nad oes modd ei gyrraedd ar ôl y caret, er enghraifft: dwy elfen HR drws nesaf i'w gilydd. Ailadroddwch y cyfuniad allwedd i gyrraedd blychau ffocws pell."},{name:"Cymorth Hygyrchedd",legend:"Pwyswch ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/da.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/da.js deleted file mode 100644 index 0cdd9523..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/da.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","da",{title:"Tilgængelighedsinstrukser",contents:"Onlinehjælp. For at lukke dette vindue klik ESC",legend:[{name:"Generelt",items:[{name:"Editor værktøjslinje",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Kommandoer",items:[{name:"Fortryd kommando",legend:"Klik på ${undo}"},{name:"Gentag kommando",legend:"Klik ${redo}"},{name:" Bold command",legend:"Klik ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", -legend:"Klik ${underline}"},{name:" Link command",legend:"Klik ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Kilk ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/de.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/de.js deleted file mode 100644 index 969901bb..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/de.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","de",{title:"Barrierefreiheitinformationen",contents:"Hilfeinhalt. Um den Dialog zu schliessen die Taste 'ESC' drücken.",legend:[{name:"Allgemein",items:[{name:"Editor Symbolleiste",legend:"Drücken Sie ${toolbarFocus} auf der Symbolleiste. Gehen Sie zur nächsten oder vorherigen Symbolleistengruppe mit TAB und SHIFT-TAB. Gehen Sie zur nächsten oder vorherigen Symbolleiste auf die Schaltfläche mit dem RECHTS- oder LINKS-Pfeil. Drücken Sie die Leertaste oder Eingabetaste, um die Schaltfläche in der Symbolleiste aktivieren."}, -{name:"Editor Dialog",legend:"Innerhalb des Dialogs drücken Sie TAB um zum nächsten Dialogfeld zu gelangen, drücken Sie SHIFT-TAG um zum vorherigen Feld zu wechseln, drücken Sie ENTER um den Dialog abzusenden und ESC um den Dialog zu abzubrechen. Um zwischen den Reitern innerhalb eines Dialogs zu wechseln drücken sie ALT-F10. Um zum nächsten Reiter zu gelangen können Sie TAB oder die rechte Pfeiltaste. Zurück gelangt man mit SHIFT-TAB oder der linken Pfeiltaste. Mit der Leertaste oder Enter kann man den Reiter auswählen."}, -{name:"Editor Kontextmenü",legend:"Dürcken Sie ${contextMenu} oder die Anwendungstaste um das Kontextmenü zu öffnen. Man kann die Pfeiltasten zum Wechsel benutzen. Mit der Leertaste oder der Enter-Taste kann man den Menüpunkt aufrufen. Schliessen Sie das Kontextmenü mit der ESC-Taste."},{name:"Editor Listen",legend:"Innerhalb einer Listenbox kann man mit der TAB-Taste oder den Pfeilrunter-Taste den nächsten Menüeintrag wählen. Mit der Shift-TAB Tastenkombination oder der Pfeilhoch-Taste gelangt man zum vorherigen Menüpunkt. Mit der Leertaste oder Enter kann man den Menüpunkt auswählen. Drücken Sie ESC zum Verlassen des Menüs."}, -{name:"Editor Elementpfadleiste",legend:"Drücken Sie ${elementsPathFocus} um sich durch die Pfadleiste zu bewegen. Um zum nächsten Element zu gelangen drücken Sie TAB oder die Pfeilrechts-Taste. Zum vorherigen Element gelangen Sie mit der SHIFT-TAB oder der Pfeillinks-Taste. Drücken Sie die Leertaste oder Enter um das Element auszuwählen."}]},{name:"Befehle",items:[{name:"Wiederholen Befehl",legend:"Drücken Sie ${undo}"},{name:"Rückgängig Befehl",legend:"Drücken Sie ${redo}"},{name:"Fettschrift Befehl", -legend:"Drücken Sie ${bold}"},{name:"Italic Befehl",legend:"Drücken Sie ${italic}"},{name:"Unterstreichung Befehl",legend:"Drücken Sie ${underline}"},{name:"Link Befehl",legend:"Drücken Sie ${link}"},{name:"Symbolleiste zuammenklappen Befehl",legend:"Drücken Sie ${toolbarCollapse}"},{name:"Zugang bisheriger Fokussierung Raumbefehl ",legend:"Drücken Sie ${accessPreviousSpace} auf den am nächsten nicht erreichbar Fokus-Abstand vor die Einfügemarke zugreifen: zwei benachbarte HR-Elemente. Wiederholen Sie die Tastenkombination um entfernte Fokusräume zu erreichen. "}, -{name:"Zugang nächster Schwerpunkt Raumbefehl ",legend:"Drücken Sie $ { accessNextSpace }, um den nächsten unerreichbar Fokus Leerzeichen nach dem Cursor zum Beispiel auf: zwei benachbarten HR Elemente. Wiederholen Sie die Tastenkombination zum fernen Fokus Bereiche zu erreichen. "},{name:"Eingabehilfen",legend:"Drücken Sie ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/el.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/el.js deleted file mode 100644 index ba394e8d..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/el.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","el",{title:"Οδηγίες Προσβασιμότητας",contents:"Περιεχόμενα Βοήθειας. Πατήστε ESC για κλείσιμο.",legend:[{name:"Γενικά",items:[{name:"Εργαλειοθήκη Επεξεργαστή",legend:"Πατήστε ${toolbarFocus} για να περιηγηθείτε στην γραμμή εργαλείων. Μετακινηθείτε ανάμεσα στις ομάδες της γραμμής εργαλείων με TAB και SHIFT-TAB. Μετακινηθείτε ανάμεσα στα κουμπιά εργαλείων με το ΔΕΞΙ ή ΑΡΙΣΤΕΡΟ ΒΕΛΑΚΙ. Πατήστε ΔΙΑΣΤΗΜΑ ή ENTER για να ενεργοποιήσετε το ενεργό κουμπί εργαλείου."},{name:"Παράθυρο Διαλόγου Επεξεργαστή", -legend:"Μέσα σε ένα παράθυρο διαλόγου, πατήστε TAB για να μεταβείτε στο επόμενο πεδίο ή SHIFT + TAB για να μεταβείτε στο προηγούμενο. Πατήστε ENTER για να υποβάλετε την φόρμα. Πατήστε ESC για να ακυρώσετε την διαδικασία της φόρμας. Για παράθυρα διαλόγων που έχουν πολλές σελίδες σε καρτέλες πατήστε ALT + F10 για να μεταβείτε στην λίστα των καρτελών. Στην συνέχεια μπορείτε να μεταβείτε στην επόμενη καρτέλα πατώντας το TAB ή το ΔΕΞΙ ΒΕΛΑΚΙ. Μπορείτε να μεταβείτε στην προηγούμενη καρτέλα πατώντας SHIFT + TAB ή το ΑΡΙΣΤΕΡΟ ΒΕΛΑΚΙ. Πατήστε ΔΙΑΣΤΗΜΑ ή ENTER για να επιλέξτε την καρτέλα για προβολή."}, -{name:"Αναδυόμενο Μενού Επεξεργαστή",legend:"Πατήστε ${contextMenu} ή APPLICATION KEY για να ανοίξετε το αναδυόμενο μενού. Μετά μετακινηθείτε στην επόμενη επιλογή του μενού με TAB ή ΚΑΤΩ ΒΕΛΑΚΙ. Μετακινηθείτε στην προηγούμενη επιλογή με SHIFT+TAB ή το ΠΑΝΩ ΒΕΛΑΚΙ. Πατήστε ΔΙΑΣΤΗΜΑ ή ENTER για να επιλέξτε το τρέχων στοιχείο. Ανοίξτε το αναδυόμενο μενού της τρέχουσας επιλογής με ΔΙΑΣΤΗΜΑ ή ENTER ή το ΔΕΞΙ ΒΕΛΑΚΙ. Μεταβείτε πίσω στο αρχικό στοιχείο μενού με το ESC ή το ΑΡΙΣΤΕΡΟ ΒΕΛΑΚΙ. Κλείστε το αναδυόμενο μενού με ESC."}, -{name:"Κουτί Λίστας Επεξεργαστών",legend:"Μέσα σε ένα κουτί λίστας, μετακινηθείτε στο επόμενο στοιχείο με TAB ή ΚΑΤΩ ΒΕΛΑΚΙ. Μετακινηθείτε στο προηγούμενο στοιχείο με SHIFT + TAB ή το ΠΑΝΩ ΒΕΛΑΚΙ. Πατήστε ΔΙΑΣΤΗΜΑ ή ENTER για να επιλέξετε ένα στοιχείο. Πατήστε ESC για να κλείσετε το κουτί της λίστας."},{name:"Μπάρα Διαδρομών Στοιχείων Επεξεργαστή",legend:"Πατήστε ${elementsPathFocus} για να περιηγηθείτε στην μπάρα διαδρομών στοιχείων του επεξεργαστή. Μετακινηθείτε στο κουμπί του επόμενου στοιχείου με το TAB ή το ΔΕΞΙ ΒΕΛΑΚΙ. Μετακινηθείτε στο κουμπί του προηγούμενου στοιχείου με το SHIFT+TAB ή το ΑΡΙΣΤΕΡΟ ΒΕΛΑΚΙ. Πατήστε ΔΙΑΣΤΗΜΑ ή ENTER για να επιλέξετε το στοιχείο στον επεξεργαστή."}]}, -{name:"Εντολές",items:[{name:"Εντολή αναίρεσης",legend:"Πατήστε ${undo}"},{name:"Εντολή επανάληψης",legend:"Πατήστε ${redo}"},{name:"Εντολή έντονης γραφής",legend:"Πατήστε ${bold}"},{name:"Εντολή πλάγιας γραφής",legend:"Πατήστε ${italic}"},{name:"Εντολή υπογράμμισης",legend:"Πατήστε ${underline}"},{name:"Εντολή συνδέσμου",legend:"Πατήστε ${link}"},{name:"Εντολή Σύμπτηξης Εργαλειοθήκης",legend:"Πατήστε ${toolbarCollapse}"},{name:"Πρόσβαση στην προηγούμενη εντολή του χώρου εστίασης ",legend:"Πατήστε ${accessPreviousSpace} για να έχετε πρόσβαση στον πιο κοντινό χώρο εστίασης πριν το δρομέα, για παράδειγμα: δύο παρακείμενα στοιχεία ΥΕ. Επαναλάβετε το συνδυασμό πλήκτρων για να φθάσετε στους χώρους μακρινής εστίασης. "}, -{name:"Πρόσβαση στην επόμενη εντολή του χώρου εστίασης",legend:"Πατήστε ${accessNextSpace} για να έχετε πρόσβαση στον πιο κοντινό χώρο εστίασης μετά το δρομέα, για παράδειγμα: δύο παρακείμενα στοιχεία ΥΕ. Επαναλάβετε το συνδυασμό πλήκτρων για τους χώρους μακρινής εστίασης. "},{name:"Βοήθεια Προσβασιμότητας",legend:"Πατήστε ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/en.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/en.js deleted file mode 100644 index 5deb84e7..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/en.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","en",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"General",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", -legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/eo.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/eo.js deleted file mode 100644 index 73bdd3a7..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/eo.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","eo",{title:"Uzindikoj pri atingeblo",contents:"Helpilenhavo. Por fermi tiun dialogon, premu la ESKAPAN klavon.",legend:[{name:"Ĝeneralaĵoj",items:[{name:"Ilbreto de la redaktilo",legend:"Premu ${toolbarFocus} por atingi la ilbreton. Moviĝu al la sekva aŭ antaŭa grupoj de la ilbreto per la klavoj TABA kaj MAJUSKLIGA-TABA. Moviĝu al la sekva aŭ antaŭa butonoj de la ilbreto per la klavoj SAGO DEKSTREN kaj SAGO MALDEKSTREN. Premu la SPACETklavon aŭ la ENENklavon por aktivigi la ilbretbutonon."}, -{name:"Redaktildialogo",legend:"En dialogo, premu la TABAN klavon por navigi al la sekva dialogkampo, premu la MAJUSKLIGAN + TABAN klavojn por reveni al la antaŭa kampo, premu la ENENklavon por sendi la dialogon, premu la ESKAPAN klavon por nuligi la dialogon. Por dialogoj kun pluraj retpaĝoj sub langetoj, premu ALT + F10 por navigi al la langetlisto. Poste moviĝu al la sekva langeto per la klavo TABA aŭ SAGO DEKSTREN. Moviĝu al la antaŭa langeto per la klavoj MAJUSKLIGA + TABA aŭ SAGO MALDEKSTREN. Premu la SPACETklavon aŭ la ENENklavon por selekti la langetretpaĝon."}, -{name:"Kunteksta menuo de la redaktilo",legend:"Premu ${contextMenu} aŭ entajpu la KLAVKOMBINAĴON por malfermi la kuntekstan menuon. Poste moviĝu al la sekva opcio de la menuo per la klavoj TABA aŭ SAGO SUBEN. Moviĝu al la antaŭa opcio per la klavoj MAJUSKLGA + TABA aŭ SAGO SUPREN. Premu la SPACETklavon aŭ ENENklavon por selekti la menuopcion. Malfermu la submenuon de la kuranta opcio per la SPACETklavo aŭ la ENENklavo aŭ la SAGO DEKSTREN. Revenu al la elemento de la patra menuo per la klavoj ESKAPA aŭ SAGO MALDEKSTREN. Fermu la kuntekstan menuon per la ESKAPA klavo."}, -{name:"Fallisto de la redaktilo",legend:"En fallisto, moviĝu al la sekva listelemento per la klavoj TABA aŭ SAGO SUBEN. Moviĝu al la antaŭa listelemento per la klavoj MAJUSKLIGA + TABA aŭ SAGO SUPREN. Premu la SPACETklavon aŭ ENENklavon por selekti la opcion en la listo. Premu la ESKAPAN klavon por fermi la falmenuon."},{name:"Breto indikanta la vojon al la redaktilelementoj",legend:"Premu ${elementsPathFocus} por navigi al la breto indikanta la vojon al la redaktilelementoj. Moviĝu al la butono de la sekva elemento per la klavoj TABA aŭ SAGO DEKSTREN. Moviĝu al la butono de la antaŭa elemento per la klavoj MAJUSKLIGA + TABA aŭ SAGO MALDEKSTREN. Premu la SPACETklavon aŭ ENENklavon por selekti la elementon en la redaktilo."}]}, -{name:"Komandoj",items:[{name:"Komando malfari",legend:"Premu ${undo}"},{name:"Komando refari",legend:"Premu ${redo}"},{name:"Komando grasa",legend:"Premu ${bold}"},{name:"Komando kursiva",legend:"Premu ${italic}"},{name:"Komando substreki",legend:"Premu ${underline}"},{name:"Komando ligilo",legend:"Premu ${link}"},{name:"Komando faldi la ilbreton",legend:"Premu ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:"Helpilo pri atingeblo",legend:"Premu ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/es.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/es.js deleted file mode 100644 index 5e6bdb5a..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/es.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","es",{title:"Instrucciones de accesibilidad",contents:"Ayuda. Para cerrar presione ESC.",legend:[{name:"General",items:[{name:"Barra de herramientas del editor",legend:'Presiona ${toolbarFocus} para navegar por la barra de herramientas. Para moverse por los distintos grupos de herramientas usa las teclas TAB y MAY-TAB. Para moverse por las distintas herramientas usa FLECHA DERECHA o FECHA IZQUIERDA. Presiona "espacio" o "intro" para activar la herramienta.'},{name:"Editor de diálogo", -legend:"Dentro de un cuadro de diálogo, presione la tecla TAB para desplazarse al campo siguiente del cuadro de diálogo, pulse SHIFT + TAB para desplazarse al campo anterior, pulse ENTER para presentar cuadro de diálogo, pulse la tecla ESC para cancelar el diálogo. Para los diálogos que tienen varias páginas, presione ALT + F10 para navegar a la pestaña de la lista. Luego pasar a la siguiente pestaña con TAB o FLECHA DERECHA. Para ir a la ficha anterior con SHIFT + TAB o FLECHA IZQUIERDA. Presione ESPACIO o ENTRAR para seleccionar la página de ficha."}, -{name:"Editor del menú contextual",legend:"Presiona ${contextMenu} o TECLA MENÚ para abrir el menú contextual. Entonces muévete a la siguiente opción del menú con TAB o FLECHA ABAJO. Muévete a la opción previa con SHIFT + TAB o FLECHA ARRIBA. Presiona ESPACIO o ENTER para seleccionar la opción del menú. Abre el submenú de la opción actual con ESPACIO o ENTER o FLECHA DERECHA. Regresa al elemento padre del menú con ESC o FLECHA IZQUIERDA. Cierra el menú contextual con ESC."},{name:"Lista del Editor", -legend:"Dentro de una lista, te mueves al siguiente elemento de la lista con TAB o FLECHA ABAJO. Te mueves al elemento previo de la lista con SHIFT + TAB o FLECHA ARRIBA. Presiona ESPACIO o ENTER para elegir la opción de la lista. Presiona ESC para cerrar la lista."},{name:"Barra de Ruta del Elemento en el Editor",legend:"Presiona ${elementsPathFocus} para navegar a los elementos de la barra de ruta. Te mueves al siguiente elemento botón con TAB o FLECHA DERECHA. Te mueves al botón previo con SHIFT + TAB o FLECHA IZQUIERDA. Presiona ESPACIO o ENTER para seleccionar el elemento en el editor."}]}, -{name:"Comandos",items:[{name:"Comando deshacer",legend:"Presiona ${undo}"},{name:"Comando rehacer",legend:"Presiona ${redo}"},{name:"Comando negrita",legend:"Presiona ${bold}"},{name:"Comando itálica",legend:"Presiona ${italic}"},{name:"Comando subrayar",legend:"Presiona ${underline}"},{name:"Comando liga",legend:"Presiona ${liga}"},{name:"Comando colapsar barra de herramientas",legend:"Presiona ${toolbarCollapse}"},{name:"Comando accesar el anterior espacio de foco",legend:"Presiona ${accessPreviousSpace} para accesar el espacio de foco no disponible más cercano anterior al cursor, por ejemplo: dos elementos HR adyacentes. Repite la combinación de teclas para alcanzar espacios de foco distantes."}, -{name:"Comando accesar el siguiente spacio de foco",legend:"Presiona ${accessNextSpace} para accesar el espacio de foco no disponible más cercano después del cursor, por ejemplo: dos elementos HR adyacentes. Repite la combinación de teclas para alcanzar espacios de foco distantes."},{name:"Ayuda de Accesibilidad",legend:"Presiona ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/et.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/et.js deleted file mode 100644 index 5cfdb736..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/et.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","et",{title:"Accessibility Instructions",contents:"Abi sisu. Selle dialoogi sulgemiseks vajuta ESC klahvi.",legend:[{name:"Üldine",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", -legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/fa.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/fa.js deleted file mode 100644 index aa88911a..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/fa.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","fa",{title:"دستورالعمل‌های دسترسی",contents:"راهنمای فهرست مطالب. برای بستن این کادر محاوره‌ای ESC را فشار دهید.",legend:[{name:"عمومی",items:[{name:"نوار ابزار ویرایشگر",legend:"${toolbarFocus} را برای باز کردن نوار ابزار بفشارید. با کلید Tab و Shif-Tab در مجموعه نوار ابزار بعدی و قبلی حرکت کنید. برای حرکت در کلید نوار ابزار قبلی و بعدی با کلید جهت‌نمای راست و چپ جابجا شوید. کلید Space یا Enter را برای فعال کردن کلید نوار ابزار بفشارید."},{name:"پنجره محاورهای ویرایشگر", -legend:"در داخل یک پنجره محاورهای، کلید Tab را بفشارید تا به پنجرهی بعدی بروید، Shift+Tab برای حرکت به فیلد قبلی، فشردن Enter برای ثبت اطلاعات پنجره، فشردن Esc برای لغو پنجره محاورهای و برای پنجرههایی که چندین برگه دارند، فشردن Alt+F10 جهت رفتن به Tab-List. در نهایت حرکت به برگه بعدی با Tab یا کلید جهتنمای راست. حرکت به برگه قبلی با Shift+Tab یا کلید جهتنمای چپ. فشردن Space یا Enter برای انتخاب یک برگه."},{name:"منوی متنی ویرایشگر",legend:"${contextMenu} یا کلید برنامههای کاربردی را برای باز کردن منوی متن را بفشارید. سپس میتوانید برای حرکت به گزینه بعدی منو با کلید Tab و یا کلید جهتنمای پایین جابجا شوید. حرکت به گزینه قبلی با Shift+Tab یا کلید جهتنمای بالا. فشردن Space یا Enter برای انتخاب یک گزینه از منو. باز کردن زیر شاخه گزینه منو جاری با کلید Space یا Enter و یا کلید جهتنمای راست و چپ. بازگشت به منوی والد با کلید Esc یا کلید جهتنمای چپ. بستن منوی متن با Esc."}, -{name:"جعبه فهرست ویرایشگر",legend:"در داخل جعبه لیست، قلم دوم از اقلام لیست بعدی را با TAB و یا Arrow Down حرکت دهید. انتقال به قلم دوم از اقلام لیست قبلی را با SHIFT + TAB یا UP ARROW. کلید Space یا ENTER را برای انتخاب گزینه لیست بفشارید. کلید ESC را برای بستن جعبه لیست بفشارید."},{name:"ویرایشگر عنصر نوار راه",legend:"برای رفتن به مسیر عناصر ${elementsPathFocus} را بفشارید. حرکت به کلید عنصر بعدی با کلید Tab یا کلید جهت‌نمای راست. برگشت به کلید قبلی با Shift+Tab یا کلید جهت‌نمای چپ. فشردن Space یا Enter برای انتخاب یک عنصر در ویرایشگر."}]}, -{name:"فرمان‌ها",items:[{name:"بازگشت به آخرین فرمان",legend:"فشردن ${undo}"},{name:"انجام مجدد فرمان",legend:"فشردن ${redo}"},{name:"فرمان درشت کردن متن",legend:"فشردن ${bold}"},{name:"فرمان کج کردن متن",legend:"فشردن ${italic}"},{name:"فرمان زیرخطدار کردن متن",legend:"فشردن ${underline}"},{name:"فرمان پیوند دادن",legend:"فشردن ${link}"},{name:"بستن نوار ابزار فرمان",legend:"فشردن ${toolbarCollapse}"},{name:"دسترسی به فرمان محل تمرکز قبلی",legend:"فشردن ${accessPreviousSpace} برای دسترسی به نزدیک‌ترین فضای قابل دسترسی تمرکز قبل از هشتک، برای مثال: دو عنصر مجاور HR -خط افقی-. تکرار کلید ترکیبی برای رسیدن به فضاهای تمرکز از راه دور."}, -{name:"دسترسی به فضای دستور بعدی",legend:"برای دسترسی به نزدیک‌ترین فضای تمرکز غیر قابل دسترس، ${accessNextSpace} را پس از علامت هشتک بفشارید، برای مثال: دو عنصر مجاور HR -خط افقی-. کلید ترکیبی را برای رسیدن به فضای تمرکز تکرار کنید."},{name:"راهنمای دسترسی",legend:"فشردن ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/fi.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/fi.js deleted file mode 100644 index 73ea3194..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/fi.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","fi",{title:"Saavutettavuus ohjeet",contents:"Ohjeen sisällöt. Sulkeaksesi tämän dialogin paina ESC.",legend:[{name:"Yleinen",items:[{name:"Editorin työkalupalkki",legend:"Paina ${toolbarFocus} siirtyäksesi työkalupalkkiin. Siirry seuraavaan ja edelliseen työkalupalkin ryhmään TAB ja SHIFT-TAB näppäimillä. Siirry seuraavaan ja edelliseen työkalupainikkeeseen käyttämällä NUOLI OIKEALLE tai NUOLI VASEMMALLE näppäimillä. Paina VÄLILYÖNTI tai ENTER näppäintä aktivoidaksesi työkalupainikkeen."}, -{name:"Editorin dialogi",legend:"Dialogin sisällä, painamalla TAB siirryt seuraavaan dialogin kenttään, painamalla SHIFT+TAB siirryt aiempaan kenttään, painamalla ENTER lähetät dialogin, painamalla ESC peruutat dialogin. Dialogeille joissa on useita välilehtiä, paina ALT+F10 siirtyäksesi välillehtilistaan. Siirtyäksesi seuraavaan välilehteen paina TAB tai NUOLI OIKEALLE. Siirry edelliseen välilehteen painamalla SHIFT+TAB tai nuoli vasemmalle. Paina VÄLILYÖNTI tai ENTER valitaksesi välilehden."},{name:"Editorin oheisvalikko", -legend:"Paina ${contextMenu} tai SOVELLUSPAINIKETTA avataksesi oheisvalikon. Liiku seuraavaan valikon vaihtoehtoon TAB tai NUOLI ALAS näppäimillä. Siirry edelliseen vaihtoehtoon SHIFT+TAB tai NUOLI YLÖS näppäimillä. Paina VÄLILYÖNTI tai ENTER valitaksesi valikon kohdan. Avataksesi nykyisen kohdan alivalikon paina VÄLILYÖNTI tai ENTER tai NUOLI OIKEALLE painiketta. Siirtyäksesi takaisin valikon ylemmälle tasolle paina ESC tai NUOLI vasemmalle. Oheisvalikko suljetaan ESC painikkeella."},{name:"Editorin listalaatikko", -legend:"Listalaatikon sisällä siirry seuraavaan listan kohtaan TAB tai NUOLI ALAS painikkeilla. Siirry edelliseen listan kohtaan SHIFT+TAB tai NUOLI YLÖS painikkeilla. Paina VÄLILYÖNTI tai ENTER valitaksesi listan vaihtoehdon. Paina ESC sulkeaksesi listalaatikon."},{name:"Editorin elementtipolun palkki",legend:"Paina ${elementsPathFocus} siirtyäksesi elementtipolun palkkiin. Siirry seuraavaan elementtipainikkeeseen TAB tai NUOLI OIKEALLE painikkeilla. Siirry aiempaan painikkeeseen SHIFT+TAB tai NUOLI VASEMMALLE painikkeilla. Paina VÄLILYÖNTI tai ENTER valitaksesi elementin editorissa."}]}, -{name:"Komennot",items:[{name:"Peruuta komento",legend:"Paina ${undo}"},{name:"Tee uudelleen komento",legend:"Paina ${redo}"},{name:"Lihavoi komento",legend:"Paina ${bold}"},{name:"Kursivoi komento",legend:"Paina ${italic}"},{name:"Alleviivaa komento",legend:"Paina ${underline}"},{name:"Linkki komento",legend:"Paina ${link}"},{name:"Pienennä työkalupalkki komento",legend:"Paina ${toolbarCollapse}"},{name:"Siirry aiempaan fokustilaan komento",legend:"Paina ${accessPreviousSpace} siiryäksesi lähimpään kursorin edellä olevaan saavuttamattomaan fokustilaan, esimerkiksi: kaksi vierekkäistä HR elementtiä. Toista näppäinyhdistelmää päästäksesi kauempana oleviin fokustiloihin."}, -{name:"Siirry seuraavaan fokustilaan komento",legend:"Paina ${accessPreviousSpace} siiryäksesi lähimpään kursorin jälkeen olevaan saavuttamattomaan fokustilaan, esimerkiksi: kaksi vierekkäistä HR elementtiä. Toista näppäinyhdistelmää päästäksesi kauempana oleviin fokustiloihin."},{name:"Saavutettavuus ohjeet",legend:"Paina ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/fr-ca.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/fr-ca.js deleted file mode 100644 index 1c210f04..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/fr-ca.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","fr-ca",{title:"Instructions d'accessibilité",contents:"Contenu de l'aide. Pour fermer cette fenêtre, appuyez sur ESC.",legend:[{name:"Général",items:[{name:"Barre d'outil de l'éditeur",legend:"Appuyer sur ${toolbarFocus} pour accéder à la barre d'outils. Se déplacer vers les groupes suivant ou précédent de la barre d'outil avec les touches TAB et SHIFT-TAB. Se déplacer vers les boutons suivant ou précédent de la barre d'outils avec les touches FLECHE DROITE et FLECHE GAUCHE. Appuyer sur la barre d'espace ou la touche ENTRER pour activer le bouton de barre d'outils."}, -{name:"Dialogue de l'éditeur",legend:"A l'intérieur d'un dialogue, appuyer sur la touche TAB pour naviguer jusqu'au champ de dalogue suivant, appuyez sur les touches SHIFT + TAB pour revenir au champ précédent, appuyez sur la touche ENTRER pour soumettre le dialogue, appuyer sur la touche ESC pour annuler le dialogue. Pour les dialogues avec plusieurs pages d'onglets, appuyer sur ALT + F10 pour naviguer jusqu'à la liste des onglets. Puis se déplacer vers l'onglet suivant avec la touche TAB ou FLECHE DROITE. Se déplacer vers l'onglet précédent avec les touches SHIFT + TAB ou FLECHE GAUCHE. Appuyer sur la barre d'espace ou la touche ENTRER pour sélectionner la page de l'onglet."}, -{name:"Menu contextuel de l'éditeur",legend:"Appuyer sur ${contextMenu} ou entrer le RACCOURCI CLAVIER pour ouvrir le menu contextuel. Puis se déplacer vers l'option suivante du menu avec les touches TAB ou FLECHE BAS. Se déplacer vers l'option précédente avec les touches SHIFT+TAB ou FLECHE HAUT. appuyer sur la BARRE D'ESPACE ou la touche ENTREE pour sélectionner l'option du menu. Oovrir le sous-menu de l'option courante avec la BARRE D'ESPACE ou les touches ENTREE ou FLECHE DROITE. Revenir à l'élément de menu parent avec les touches ESC ou FLECHE GAUCHE. Fermer le menu contextuel avec ESC."}, -{name:"Menu déroulant de l'éditeur",legend:"A l'intérieur d'une liste en menu déroulant, se déplacer vers l'élément suivant de la liste avec les touches TAB ou FLECHE BAS. Se déplacer vers l'élément précédent de la liste avec les touches SHIFT + TAB ou FLECHE HAUT. Appuyer sur la BARRE D'ESPACE ou sur ENTREE pour sélectionner l'option dans la liste. Appuyer sur ESC pour fermer le menu déroulant."},{name:"Barre d'emplacement des éléments de l'éditeur",legend:"Appuyer sur ${elementsPathFocus} pour naviguer vers la barre d'emplacement des éléments de léditeur. Se déplacer vers le bouton d'élément suivant avec les touches TAB ou FLECHE DROITE. Se déplacer vers le bouton d'élément précédent avec les touches SHIFT+TAB ou FLECHE GAUCHE. Appuyer sur la BARRE D'ESPACE ou sur ENTREE pour sélectionner l'élément dans l'éditeur."}]}, -{name:"Commandes",items:[{name:"Annuler",legend:"Appuyer sur ${undo}"},{name:"Refaire",legend:"Appuyer sur ${redo}"},{name:"Gras",legend:"Appuyer sur ${bold}"},{name:"Italique",legend:"Appuyer sur ${italic}"},{name:"Souligné",legend:"Appuyer sur ${underline}"},{name:"Lien",legend:"Appuyer sur ${link}"},{name:"Enrouler la barre d'outils",legend:"Appuyer sur ${toolbarCollapse}"},{name:"Accéder à l'objet de focus précédent",legend:"Appuyer ${accessPreviousSpace} pour accéder au prochain espace disponible avant le curseur, par exemple: deux éléments HR adjacents. Répéter la combinaison pour joindre les éléments d'espaces distantes."}, -{name:"Accéder au prochain objet de focus",legend:"Appuyer ${accessNextSpace} pour accéder au prochain espace disponible après le curseur, par exemple: deux éléments HR adjacents. Répéter la combinaison pour joindre les éléments d'espaces distantes."},{name:"Aide d'accessibilité",legend:"Appuyer sur ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/fr.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/fr.js deleted file mode 100644 index b133415d..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/fr.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","fr",{title:"Instructions d'accessibilité",contents:"Contenu de l'aide. Pour fermer ce dialogue, appuyez sur la touche Ech (Echappement).",legend:[{name:"Général",items:[{name:"Barre d'outils de l'éditeur",legend:"Appuyer sur ${toolbarFocus} pour accéder à la barre d'outils. Se déplacer vers les groupes suivant ou précédent de la barre d'outil avec les touches TAB et SHIFT-TAB. Se déplacer vers les boutons suivant ou précédent de la barre d'outils avec les touches FLECHE DROITE et FLECHE GAUCHE. Appuyer sur la barre d'espace ou la touche ENTRER pour activer le bouton de barre d'outils."}, -{name:"Dialogue de l'éditeur",legend:"A l'intérieur d'un dialogue, appuyer sur la touche TAB pour naviguer jusqu'au champ de dalogue suivant, appuyez sur les touches SHIFT + TAB pour revenir au champ précédent, appuyez sur la touche ENTRER pour soumettre le dialogue, appuyer sur la touche ESC pour annuler le dialogue. Pour les dialogues avec plusieurs pages d'onglets, appuyer sur ALT + F10 pour naviguer jusqu'à la liste des onglets. Puis se déplacer vers l'onglet suivant avec la touche TAB ou FLECHE DROITE. Se déplacer vers l'onglet précédent avec les touches SHIFT + TAB ou FLECHE GAUCHE. Appuyer sur la barre d'espace ou la touche ENTRER pour sélectionner la page de l'onglet."}, -{name:"Menu contextuel de l'éditeur",legend:"Appuyer sur ${contextMenu} ou entrer le RACCOURCI CLAVIER pour ouvrir le menu contextuel. Puis se déplacer vers l'option suivante du menu avec les touches TAB ou FLECHE BAS. Se déplacer vers l'option précédente avec les touches SHIFT+TAB ou FLECHE HAUT. appuyer sur la BARRE D'ESPACE ou la touche ENTREE pour sélectionner l'option du menu. Oovrir le sous-menu de l'option courante avec la BARRE D'ESPACE ou les touches ENTREE ou FLECHE DROITE. Revenir à l'élément de menu parent avec les touches Ech ou FLECHE GAUCHE. Fermer le menu contextuel avec Ech."}, -{name:"Zone de liste de l'éditeur",legend:"Dans la liste en menu déroulant, se déplacer vers l'élément suivant de la liste avec les touches TAB ou FLECHE BAS. Se déplacer vers l'élément précédent de la liste avec les touches MAJ + TAB ou FLECHE HAUT. Appuyer sur la BARRE D'ESPACE ou sur ENTREE pour sélectionner l'option dans la liste. Appuyer sur ESC pour fermer le menu déroulant."},{name:"Barre d'emplacement des éléments de l'éditeur",legend:"Appuyer sur ${elementsPathFocus} pour naviguer vers la barre d'emplacement des éléments de l'éditeur. Se déplacer vers le bouton d'élément suivant avec les touches TAB ou FLECHE DROITE. Se déplacer vers le bouton d'élément précédent avec les touches MAJ+TAB ou FLECHE GAUCHE. Appuyer sur la BARRE D'ESPACE ou sur ENTREE pour sélectionner l'élément dans l'éditeur."}]}, -{name:"Commandes",items:[{name:" Annuler la commande",legend:"Appuyer sur ${undo}"},{name:"Refaire la commande",legend:"Appuyer sur ${redo}"},{name:" Commande gras",legend:"Appuyer sur ${bold}"},{name:" Commande italique",legend:"Appuyer sur ${italic}"},{name:" Commande souligné",legend:"Appuyer sur ${underline}"},{name:" Commande lien",legend:"Appuyer sur ${link}"},{name:" Commande enrouler la barre d'outils",legend:"Appuyer sur ${toolbarCollapse}"},{name:"Accéder à la précédente commande d'espace de mise au point", -legend:"Appuyez sur ${accessPreviousSpace} pour accéder à l'espace hors d'atteinte le plus proche avant le caret, par exemple: deux éléments HR adjacents. Répétez la combinaison de touches pour atteindre les espaces de mise au point distants."},{name:"Accès à la prochaine commande de l'espace de mise au point",legend:"Appuyez sur ${accessNextSpace} pour accéder au plus proche espace de mise au point hors d'atteinte après le caret, par exemple: deux éléments HR adjacents. répétez la combinaison de touches pour atteindre les espace de mise au point distants."}, -{name:" Aide Accessibilité",legend:"Appuyer sur ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/gl.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/gl.js deleted file mode 100644 index f6f0c7ca..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/gl.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","gl",{title:"Instrucións de accesibilidade",contents:"Axuda. Para pechar este diálogo prema ESC.",legend:[{name:"Xeral",items:[{name:"Barra de ferramentas do editor",legend:"Prema ${toolbarFocus} para navegar pola barra de ferramentas. Para moverse polos distintos grupos de ferramentas use as teclas TAB e MAIÚS+TAB. Para moverse polas distintas ferramentas use FRECHA DEREITA ou FRECHA ESQUERDA. Prema ESPAZO ou INTRO para activar o botón da barra de ferramentas."}, -{name:"Editor de diálogo",legend:"Dentro dun cadro de diálogo, prema a tecla TAB para desprazarse ao campo seguinte do cadro de diálogo, prema MAIÚS + TAB para desprazarse ao campo anterior, prema INTRO para presentar o cadro de diálogo, prema a tecla ESC para cancelar o diálogo. Para os diálogos que teñen varias páxinas, prema ALT + F10 para navegar á lapela da lista. Despois pasar á seguinte lapela con TAB ou FRECHA DEREITA. Para ir á lapela anterior con SHIFT + TAB ou FRECHA ESQUERDA. Prema ESPAZO ou INTRO para seleccionar a lapela da páxina."}, -{name:"Editor do menú contextual",legend:"Prema ${contextMenu} ou a TECLA MENÚ para abrir o menú contextual. A seguir móvase á seguinte opción do menú con TAB ou FRECHA ABAIXO. Móvase á opción anterior con MAIÚS + TAB ou FRECHA ARRIBA. Prema ESPAZO ou INTRO para seleccionar a opción do menú. Abra o submenú da opción actual con ESPAZO ou INTRO ou FRECHA DEREITA. Regrese ao elemento principal do menú con ESC ou FRECHA ESQUERDA. Peche o menú contextual con ESC."},{name:"Lista do editor",legend:"Dentro dunha lista, móvase ao seguinte elemento da lista con TAB ou FRECHA ABAIXO. Móvase ao elemento anterior da lista con MAIÚS + TAB ou FRECHA ARRIBA. Prema ESPAZO ou INTRO para escoller a opción da lista. Prema ESC para pechar a lista."}, -{name:"Barra da ruta ao elemento no editor",legend:"Prema ${elementsPathFocus} para navegar ata os elementos da barra de ruta. Móvase ao seguinte elemento botón con TAB ou FRECHA DEREITA. Móvase ao botón anterior con MAIÚS + TAB ou FRECHA ESQUERDA. Prema ESPAZO ou INTRO para seleccionar o elemento no editor."}]},{name:"Ordes",items:[{name:"Orde «desfacer»",legend:"Prema ${undo}"},{name:"Orde «refacer»",legend:"Prema ${redo}"},{name:"Orde «negra»",legend:"Prema ${bold}"},{name:"Orde «cursiva»",legend:"Prema ${italic}"}, -{name:"Orde «subliñar»",legend:"Prema ${underline}"},{name:"Orde «ligazón»",legend:"Prema ${link}"},{name:"Orde «contraer a barra de ferramentas»",legend:"Prema ${toolbarCollapse}"},{name:"Orde «acceder ao anterior espazo en foco»",legend:"Prema ${accessPreviousSpace} para acceder ao espazo máis próximo de foco inalcanzábel anterior ao cursor, por exemplo: dous elementos HR adxacentes. Repita a combinación de teclas para chegar a espazos de foco distantes."},{name:"Orde «acceder ao seguinte espazo en foco»", -legend:"Prema ${accessNextSpace} para acceder ao espazo máis próximo de foco inalcanzábel posterior ao cursor, por exemplo: dous elementos HR adxacentes. Repita a combinación de teclas para chegar a espazos de foco distantes."},{name:"Axuda da accesibilidade",legend:"Prema ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/gu.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/gu.js deleted file mode 100644 index fb58c120..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/gu.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","gu",{title:"એક્ક્ષેબિલિટી ની વિગતો",contents:"હેલ્પ. આ બંધ કરવા ESC દબાવો.",legend:[{name:"જનરલ",items:[{name:"એડિટર ટૂલબાર",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"એડિટર ડાયલોગ",legend:"Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"કમાંડસ",items:[{name:"અન્ડું કમાંડ",legend:"$ દબાવો {undo}"},{name:"ફરી કરો કમાંડ",legend:"$ દબાવો {redo}"},{name:"બોલ્દનો કમાંડ",legend:"$ દબાવો {bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", -legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/he.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/he.js deleted file mode 100644 index c22978e5..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/he.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","he",{title:"הוראות נגישות",contents:"הוראות נגישות. לסגירה לחץ אסקייפ (ESC).",legend:[{name:"כללי",items:[{name:"סרגל הכלים",legend:"לחץ על ${toolbarFocus} כדי לנווט לסרגל הכלים. עבור לכפתור הבא עם מקש הטאב (TAB) או חץ שמאלי. עבור לכפתור הקודם עם מקש השיפט (SHIFT) + טאב (TAB) או חץ ימני. לחץ רווח או אנטר (ENTER) כדי להפעיל את הכפתור הנבחר."},{name:"דיאלוגים (חלונות תשאול)",legend:"בתוך דיאלוג, לחץ טאב (TAB) כדי לנווט לשדה הבא, לחץ שיפט (SHIFT) + טאב (TAB) כדי לנווט לשדה הקודם, לחץ אנטר (ENTER) כדי לשלוח את הדיאלוג, לחץ אסקייפ (ESC) כדי לבטל. בתוך דיאלוגים בעלי מספר טאבים (לשוניות), לחץ אלט (ALT) + F10 כדי לנווט לשורת הטאבים. נווט לטאב הבא עם טאב (TAB) או חץ שמאלי. עבור לטאב הקודם עם שיפט (SHIFT) + טאב (TAB) או חץ שמאלי. לחץ רווח או אנטר (ENTER) כדי להיכנס לטאב."}, -{name:"תפריט ההקשר (Context Menu)",legend:"לחץ ${contextMenu} או APPLICATION KEYכדי לפתוח את תפריט ההקשר. עבור לאפשרות הבאה עם טאב (TAB) או חץ למטה. עבור לאפשרות הקודמת עם שיפט (SHIFT) + טאב (TAB) או חץ למעלה. לחץ רווח או אנטר (ENTER) כדי לבחור את האפשרות. פתח את תת התפריט (Sub-menu) של האפשרות הנוכחית עם רווח או אנטר (ENTER) או חץ שמאלי. חזור לתפריט האב עם אסקייפ (ESC) או חץ שמאלי. סגור את תפריט ההקשר עם אסקייפ (ESC)."},{name:"תפריטים צפים (List boxes)",legend:"בתוך תפריט צף, עבור לפריט הבא עם טאב (TAB) או חץ למטה. עבור לתפריט הקודם עם שיפט (SHIFT) + טאב (TAB) or חץ עליון. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"עץ אלמנטים (Elements Path)",legend:"לחץ ${elementsPathFocus} כדי לנווט לעץ האלמנטים. עבור לפריט הבא עם טאב (TAB) או חץ ימני. עבור לפריט הקודם עם שיפט (SHIFT) + טאב (TAB) או חץ שמאלי. לחץ רווח או אנטר (ENTER) כדי לבחור את האלמנט בעורך."}]},{name:"פקודות",items:[{name:" ביטול צעד אחרון",legend:"לחץ ${undo}"},{name:" חזרה על צעד אחרון",legend:"לחץ ${redo}"},{name:" הדגשה",legend:"לחץ ${bold}"},{name:" הטייה",legend:"לחץ ${italic}"},{name:" הוספת קו תחתון",legend:"לחץ ${underline}"},{name:" הוספת לינק", -legend:"לחץ ${link}"},{name:" כיווץ סרגל הכלים",legend:"לחץ ${toolbarCollapse}"},{name:"גישה למיקום המיקוד הקודם",legend:"לחץ ${accessPreviousSpace} כדי לגשת למיקום המיקוד הלא-נגיש הקרוב לפני הסמן, למשל בין שני אלמנטים סמוכים מסוג HR. חזור על צירוף מקשים זה כדי להגיע למקומות מיקוד רחוקים יותר."},{name:"גישה למיקום המיקוד הבא",legend:"לחץ ${accessNextSpace} כדי לגשת למיקום המיקוד הלא-נגיש הקרוב אחרי הסמן, למשל בין שני אלמנטים סמוכים מסוג HR. חזור על צירוף מקשים זה כדי להגיע למקומות מיקוד רחוקים יותר."}, -{name:" הוראות נגישות",legend:"לחץ ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/hi.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/hi.js deleted file mode 100644 index 0f9bbc9b..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/hi.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","hi",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"सामान्य",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", -legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/hr.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/hr.js deleted file mode 100644 index f3c3394f..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/hr.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","hr",{title:"Upute dostupnosti",contents:"Sadržaj pomoći. Za zatvaranje pritisnite ESC.",legend:[{name:"Općenito",items:[{name:"Alatna traka",legend:"Pritisni ${toolbarFocus} za navigaciju do alatne trake. Pomicanje do prethodne ili sljedeće alatne grupe vrši se pomoću SHIFT-TAB i TAB. Pomicanje do prethodnog ili sljedećeg gumba u alatnoj traci vrši se pomoću lijeve i desne strelice kursora. Pritisnite SPACE ili ENTER za aktivaciju alatne trake."},{name:"Dijalog", -legend:"Unutar dijaloga, pritisnite TAB za navigaciju do sljedećeg polja, pritisnite SHIFT + TAB za vraćanje na prethodno polje, pritisnite ENTER za slanje dijaloga ili ESC za zatvaranje dijaloga. Za dijaloge koji imaju višestruke kartice, pritisnite ALT + F10 za na navigaciju i zatim TAB ili lijeva strelica kursora ili SHIFT + TAB i desna strelica kursora. SPACE ili ENTER odabiru karticu."},{name:"Kontekstni izbornik",legend:"Pritisnite ${contextMenu} ili APPLICATION tipku za otvaranje kontekstnog izbornika. Pomicanje se vrši TAB ili strelicom kursora prema dolje ili SHIFT+TAB ili strelica kursora prema gore. SPACE ili ENTER odabiru opciju izbornika. Otvorite podizbornik trenutne opcije sa SPACE, ENTER ili desna strelica kursora. Povratak na prethodni izbornik vrši se sa ESC ili lijevom strelicom kursora. Zatvaranje se vrši pritiskom na tipku ESC."}, -{name:"Lista",legend:"Unutar list-boxa, pomicanje na sljedeću stavku vrši se sa TAB ili strelica kursora prema dolje. Na prethodnu sa SHIFT + TAB ili strelica prema gore. Pritiskom na SPACE ili ENTER odabire se stavka ili ESC za zatvaranje."},{name:"Traka putanje elemenata",legend:"Pritisnite ${elementsPathFocus} za navigaciju po putanji elemenata. Pritisnite TAB ili desnu strelicu kursora za pomicanje na sljedeći element ili SHIFT + TAB ili lijeva strelica kursora za pomicanje na prethodni element. Pritiskom na SPACE ili ENTER vrši se odabir elementa."}]}, -{name:"Naredbe",items:[{name:"Vrati naredbu",legend:"Pritisni ${undo}"},{name:"Ponovi naredbu",legend:"Pritisni ${redo}"},{name:"Bold naredba",legend:"Pritisni ${bold}"},{name:"Italic naredba",legend:"Pritisni ${italic}"},{name:"Underline naredba",legend:"Pritisni ${underline}"},{name:"Link naredba",legend:"Pritisni ${link}"},{name:"Smanji alatnu traku naredba",legend:"Pritisni ${toolbarCollapse}"},{name:"Access previous focus space naredba",legend:"Pritisni ${accessPreviousSpace} za pristup najbližem nedostupnom razmaku prije kursora, npr.: dva spojena HR elementa. Ponovnim pritiskom dohvatiti će se sljedeći nedostupni razmak."}, -{name:"Access next focus space naredba",legend:"Pritisni ${accessNextSpace} za pristup najbližem nedostupnom razmaku nakon kursora, npr.: dva spojena HR elementa. Ponovnim pritiskom dohvatiti će se sljedeći nedostupni razmak."},{name:"Pomoć za dostupnost",legend:"Pritisni ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/hu.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/hu.js deleted file mode 100644 index 3de0bc06..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/hu.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","hu",{title:"Kisegítő utasítások",contents:"Súgó tartalmak. A párbeszédablak bezárásához nyomjon ESC-et.",legend:[{name:"Általános",items:[{name:"Szerkesztő Eszköztár",legend:"Nyomjon ${toolbarFocus} hogy kijelölje az eszköztárat. A következő és előző eszköztár csoporthoz a TAB és SHIFT TAB-al juthat el. A következő és előző eszköztár gombhoz a BAL NYÍL vagy JOBB NYÍL gombbal juthat el. Nyomjon SPACE-t vagy ENTER-t hogy aktiválja az eszköztár gombot."},{name:"Szerkesző párbeszéd ablak", -legend:"Párbeszédablakban nyomjon TAB-ot a következő párbeszédmezőhöz ugráshoz, nyomjon SHIFT + TAB-ot az előző mezőhöz ugráshoz, nyomjon ENTER-t a párbeszédablak elfogadásához, nyomjon ESC-et a párbeszédablak elvetéséhez. Azokhoz a párbeszédablakokhoz, amik több fület tartalmaznak, nyomjon ALT + F10-et hogy a fülekre ugorjon. Ezután a TAB-al vagy a JOBB NYÍLLAL a következő fülre ugorhat. Az előző fülre ugráshoz használja a SHIFT + TAB-ot vagy a BAL NYILAT. Nyomjon SPACE-t vagy ENTER-t hogy kijelölje a fület."}, -{name:"Szerkesztő helyi menü",legend:"Nyomjon ${contextMenu}-t vagy ALKALMAZÁS BILLENTYŰT a helyi menü megnyitásához. Ezután a következő menüpontra léphet a TAB vagy LEFELÉ NYÍLLAL. Az előző opciót a SHIFT+TAB vagy FELFELÉ NYÍLLAL érheti el. Nyomjon SPACE-t vagy ENTER-t a menüpont kiválasztásához. A jelenlegi menüpont almenüjének megnyitásához nyomjon SPACE-t vagy ENTER-t, vagy JOBB NYILAT. A főmenühöz való visszatéréshez nyomjon ESC-et vagy BAL NYILAT. A helyi menü bezárása az ESC billentyűvel lehetséges."}, -{name:"Szerkesztő lista",legend:"A listán belül a következő elemre a TAB vagy LEFELÉ NYÍLLAL mozoghat. Az előző elem kiválasztásához nyomjon SHIFT+TAB-ot vagy FELFELÉ NYILAT. Nyomjon SPACE-t vagy ENTER-t az elem kiválasztásához. Az ESC billentyű megnyomásával bezárhatja a listát."},{name:"Szerkesztő elem utak sáv",legend:"Nyomj ${elementsPathFocus} hogy kijelöld a elemek út sávját. A következő elem gombhoz a TAB-al vagy a JOBB NYÍLLAL juthatsz el. Az előző gombhoz a SHIFT+TAB vagy BAL NYÍLLAL mehetsz. A SPACE vagy ENTER billentyűvel kiválaszthatod az elemet a szerkesztőben."}]}, -{name:"Parancsok",items:[{name:"Parancs visszavonása",legend:"Nyomj ${undo}"},{name:"Parancs megismétlése",legend:"Nyomjon ${redo}"},{name:"Félkövér parancs",legend:"Nyomjon ${bold}"},{name:"Dőlt parancs",legend:"Nyomjon ${italic}"},{name:"Aláhúzott parancs",legend:"Nyomjon ${underline}"},{name:"Link parancs",legend:"Nyomjon ${link}"},{name:"Szerkesztősáv összecsukása parancs",legend:"Nyomjon ${toolbarCollapse}"},{name:"Hozzáférés az előző fókusz helyhez parancs",legend:"Nyomj ${accessNextSpace} hogy hozzáférj a legközelebbi elérhetetlen fókusz helyhez a hiányjel előtt, például: két szomszédos HR elemhez. Ismételd meg a billentyűkombinációt hogy megtaláld a távolabbi fókusz helyeket."}, -{name:"Hozzáférés a következő fókusz helyhez parancs",legend:"Nyomj ${accessNextSpace} hogy hozzáférj a legközelebbi elérhetetlen fókusz helyhez a hiányjel után, például: két szomszédos HR elemhez. Ismételd meg a billentyűkombinációt hogy megtaláld a távolabbi fókusz helyeket."},{name:"Kisegítő súgó",legend:"Nyomjon ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/id.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/id.js deleted file mode 100644 index fe063491..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/id.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","id",{title:"Accessibility Instructions",contents:"Bantuan. Tekan ESC untuk menutup dialog ini.",legend:[{name:"Umum",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", -legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/it.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/it.js deleted file mode 100644 index 1f4d5a5f..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/it.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","it",{title:"Istruzioni di Accessibilità",contents:"Contenuti di Aiuto. Per chiudere questa finestra premi ESC.",legend:[{name:"Generale",items:[{name:"Barra degli strumenti Editor",legend:"Premi ${toolbarFocus} per navigare fino alla barra degli strumenti. Muoviti tra i gruppi della barra degli strumenti con i tasti Tab e Maiusc-Tab. Spostati tra il successivo ed il precedente pulsante della barra degli strumenti usando le frecce direzionali Destra e Sinistra. Premi Spazio o Invio per attivare il pulsante della barra degli strumenti."}, -{name:"Finestra Editor",legend:"All'interno di una finestra di dialogo, premi Tab per navigare fino al campo successivo della finestra di dialogo, premi Maiusc-Tab per tornare al campo precedente, premi Invio per inviare la finestra di dialogo, premi Esc per uscire. Per le finestre che hanno schede multiple, premi Alt+F10 per navigare nella lista delle schede. Quindi spostati alla scheda successiva con il tasto Tab oppure con la Freccia Destra. Torna alla scheda precedente con Maiusc+Tab oppure con la Freccia Sinistra. Premi Spazio o Invio per scegliere la scheda."}, -{name:"Menù contestuale Editor",legend:"Premi ${contextMenu} o TASTO APPLICAZIONE per aprire il menu contestuale. Dunque muoviti all'opzione successiva del menu con il tasto TAB o con la Freccia Sotto. Muoviti all'opzione precedente con MAIUSC+TAB o con Freccia Sopra. Premi SPAZIO o INVIO per scegliere l'opzione di menu. Apri il sottomenu dell'opzione corrente con SPAZIO o INVIO oppure con la Freccia Destra. Torna indietro al menu superiore con ESC oppure Freccia Sinistra. Chiudi il menu contestuale con ESC."}, -{name:"Box Lista Editor",legend:"Dentro un box-lista, muoviti al prossimo elemento della lista con TAB o con la Freccia direzionale giù. Spostati all'elemento precedente con MAIUSC+TAB oppure con Freccia direzionale sopra. Premi SPAZIO o INVIO per scegliere l'opzione della lista. Premi ESC per chiudere il box-lista."},{name:"Barra percorso elementi editor",legend:"Premi ${elementsPathFocus} per navigare tra gli elementi della barra percorso. Muoviti al prossimo pulsante di elemento con TAB o la Freccia direzionale destra. Muoviti al pulsante precedente con MAIUSC+TAB o la Freccia Direzionale Sinistra. Premi SPAZIO o INVIO per scegliere l'elemento nell'editor."}]}, -{name:"Comandi",items:[{name:" Annulla comando",legend:"Premi ${undo}"},{name:" Ripeti comando",legend:"Premi ${redo}"},{name:" Comando Grassetto",legend:"Premi ${bold}"},{name:" Comando Corsivo",legend:"Premi ${italic}"},{name:" Comando Sottolineato",legend:"Premi ${underline}"},{name:" Comando Link",legend:"Premi ${link}"},{name:" Comando riduci barra degli strumenti",legend:"Premi ${toolbarCollapse}"},{name:"Comando di accesso al precedente spazio di focus",legend:"Premi ${accessPreviousSpace} per accedere il più vicino spazio di focus non raggiungibile prima del simbolo caret, per esempio due elementi HR adiacenti. Ripeti la combinazione di tasti per raggiungere spazi di focus distanti."}, -{name:"Comando di accesso al prossimo spazio di focus",legend:"Premi ${accessNextSpace} per accedere il più vicino spazio di focus non raggiungibile dopo il simbolo caret, per esempio due elementi HR adiacenti. Ripeti la combinazione di tasti per raggiungere spazi di focus distanti."},{name:" Aiuto Accessibilità",legend:"Premi ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ja.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ja.js deleted file mode 100644 index 0536a945..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ja.js +++ /dev/null @@ -1,8 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","ja",{title:"ユーザー補助の説明",contents:"ヘルプ このダイアログを閉じるには ESCを押してください。",legend:[{name:"全般",items:[{name:"エディターツールバー",legend:"${toolbarFocus} を押すとツールバーのオン/オフ操作ができます。カーソルをツールバーのグループで移動させるにはTabかSHIFT+Tabを押します。グループ内でカーソルを移動させるには、右カーソルか左カーソルを押します。スペースキーやエンターを押すとボタンを有効/無効にすることができます。"},{name:"編集ダイアログ",legend:"ダイヤログ内では、ダイアログの次の選択肢に移動するにはTabを押します。前の選択肢に移動するには、SHIFT+Tabを押します。ダイアログを決定するには、ENTERを押します。ESCでダイアログをキャンセルできます。複数のタブがあるダイアログではタブリストを操作するにはALT+F10を押します。次のタブに移動するにはTabか右カーソル、前のタブに戻るにはSHIFT+Tabか左カーソルです。タブページを決定するにはスペースもしくは、ENTERキーを押してください。"}, -{name:"エディターのメニュー",legend:"${contextMenu} キーかAPPLICATION KEYを押すとコンテキストメニューが開きます。Tabか下カーソルでメニューのオプション選択が下に移動します。戻るには、SHIFT+Tabか上カーソルです。スペースもしくはENTERキーでメニューオプションを決定できます。現在選んでいるオプションのサブメニューを開くには、スペース、もしくは右カーソルを押します。サブメニューから親メニューに戻るには、ESCか左カーソルを押してください。ESCでコンテキストメニュー自体をキャンセルできます。"},{name:"エディターリストボックス",legend:"リストボックス内で移動するには、Tabか下カーソルで次のアイテムへ移動します。SHIFT+Tabで前のアイテムに戻ります。リストのオプションを選択するには、スペースもしくは、ENTERを押してください。リストボックスを閉じるには、ESCを押してください。"},{name:"エディター要素パスバー",legend:"${elementsPathFocus} を押すとエレメントパスバーを操作出来ます。Tabか右カーソルで次のエレメントを選択できます。前のエレメントを選択するには、SHIFT+Tabか左カーソルです。スペースもしくは、ENTERでエディタ内の対象エレメントを選択出来ます。"}]}, -{name:"コマンド",items:[{name:"元に戻す",legend:"${undo} をクリック"},{name:"やり直し",legend:"${redo} をクリック"},{name:"太字",legend:"${bold} をクリック"},{name:"斜体 ",legend:"${italic} をクリック"},{name:"下線",legend:"${underline} をクリック"},{name:"リンク",legend:"${link} をクリック"},{name:"ツールバーを縮める",legend:"${toolbarCollapse} をクリック"},{name:"前のカーソル移動のできないポイントへ",legend:"${accessPreviousSpace} を押すとカーソルより前にあるカーソルキーで入り込めないスペースへ移動できます。例えば、HRエレメントが2つ接している場合などです。離れた場所へは、複数回キーを押します。"},{name:"次のカーソル移動のできないポイントへ",legend:"${accessNextSpace} を押すとカーソルより後ろにあるカーソルキーで入り込めないスペースへ移動できます。例えば、HRエレメントが2つ接している場合などです。離れた場所へは、複数回キーを押します。"}, -{name:"ユーザー補助ヘルプ",legend:"${a11yHelp} をクリック"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/km.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/km.js deleted file mode 100644 index 3dfd4a09..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/km.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","km",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"ទូទៅ",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", -legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ko.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ko.js deleted file mode 100644 index 650b68e4..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ko.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","ko",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"General",items:[{name:"편집기 툴바",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"편집기 다이얼로그",legend:"Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page."}, -{name:"편집기 환경 메뉴",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"편집기 목록 박스",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"명령",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", -legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ku.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ku.js deleted file mode 100644 index 6ceb4f72..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ku.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","ku",{title:"ڕێنمای لەبەردەستدابوون",contents:"پێکهاتەی یارمەتی. کلیك ESC بۆ داخستنی ئەم دیالۆگه.",legend:[{name:"گشتی",items:[{name:"تووڵامرازی دەستكاریكەر",legend:"کلیك ${toolbarFocus} بۆ ڕابەری تووڵامراز. بۆ گواستنەوەی پێشوو داهاتووی گرووپی تووڵامرازی داگرتنی کلیلی TAB لەگەڵ‌ SHIFT-TAB. بۆ گواستنەوەی پێشوو داهاتووی دووگمەی تووڵامرازی لەڕێی کلیلی تیری دەستی ڕاست یان کلیلی تیری دەستی چەپ. کلیکی کلیلی SPACE یان ENTER بۆ چالاککردنی دووگمەی تووڵامراز."},{name:"دیالۆگی دەستكاریكەر", -legend:"لەهەمانکاتدا کە تۆ لەدیالۆگی, کلیکی کلیلی TAB بۆ ڕابەری خانەی دیالۆگێکی تر, داگرتنی کلیلی SHIFT + TAB بۆ گواستنەوەی بۆ خانەی پێشووتر, کلیكی کلیلی ENTER بۆ ڕازیکردنی دیالۆگەکە, کلیكی کلیلی ESC بۆ هەڵوەشاندنەوەی دیالۆگەکە. بۆ دیالۆگی لەبازدەری (تابی) زیاتر, کلیكی کلیلی ALT + F10 بۆ ڕابەری لیستی بازدەرەکان. بۆ چوونە بازدەری تابی داهاتوو کلیكی کلیلی TAB یان کلیلی تیری دەستی ڕاست. بۆچوونە بازدەری تابی پێشوو داگرتنی کلیلی SHIFT + TAB یان کلیلی تیری دەستی چەپ. کلیی کلیلی SPACE یان ENTER بۆ هه‌ڵبژاردنی بازدەر (تاب)."}, -{name:"پێڕستی سەرنووسەر",legend:"کلیك ${contextMenu} یان دوگمەی لیسته‌(Menu) بۆ کردنەوەی لیستەی دەق. بۆ چوونە هەڵبژاردەیەکی تر له‌ لیسته‌ کلیکی کلیلی TAB یان کلیلی تیری ڕوو لەخوارەوه‌ بۆ چوون بۆ هەڵبژاردەی پێشوو کلیکی کلیلی SHIFT+TAB یان کلیلی تیری ڕوو له‌ سەرەوە. داگرتنی کلیلی SPACE یان ENTER بۆ هەڵبژاردنی هەڵبژاردەی لیسته‌. بۆ کردنەوەی لقی ژێر لیسته‌ لەهەڵبژاردەی لیستە کلیکی کلیلی SPACE یان ENTER یان کلیلی تیری دەستی ڕاست. بۆ گەڕانەوه بۆ سەرەوەی لیسته‌ کلیکی کلیلی ESC یان کلیلی تیری دەستی چەپ. بۆ داخستنی لیستە کلیكی کلیلی ESC بکە."}, -{name:"لیستی سنووقی سەرنووسەر",legend:"لەناو سنوقی لیست, چۆن بۆ هەڵنبژاردەی لیستێکی تر کلیکی کلیلی TAB یان کلیلی تیری ڕوو لەخوار. چوون بۆ هەڵبژاردەی لیستی پێشوو کلیکی کلیلی SHIFT + TAB یان کلیلی تیری ڕوو لەسەرەوه‌. کلیکی کلیلی SPACE یان ENTER بۆ دیاریکردنی ‌هەڵبژاردەی لیست. کلیکی کلیلی ESC بۆ داخستنی سنوقی لیست."},{name:"تووڵامرازی توخم",legend:"کلیك ${elementsPathFocus} بۆ ڕابەری تووڵامرازی توخمەکان. چوون بۆ دوگمەی توخمێکی تر کلیکی کلیلی TAB یان کلیلی تیری دەستی ڕاست. چوون بۆ دوگمەی توخمی پێشوو کلیلی SHIFT+TAB یان کلیکی کلیلی تیری دەستی چەپ. داگرتنی کلیلی SPACE یان ENTER بۆ دیاریکردنی توخمەکه‌ لەسەرنووسه."}]}, -{name:"فەرمانەکان",items:[{name:"پووچکردنەوەی فەرمان",legend:"کلیك ${undo}"},{name:"هەڵگەڕانەوەی فەرمان",legend:"کلیك ${redo}"},{name:"فەرمانی دەقی قەڵەو",legend:"کلیك ${bold}"},{name:"فەرمانی دەقی لار",legend:"کلیك ${italic}"},{name:"فەرمانی ژێرهێڵ",legend:"کلیك ${underline}"},{name:"فەرمانی به‌ستەر",legend:"کلیك ${link}"},{name:"شاردەنەوەی تووڵامراز",legend:"کلیك ${toolbarCollapse}"},{name:"چوونەناو سەرنجدانی پێشوی فەرمانی بۆشایی",legend:"کلیک ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:"چوونەناو سەرنجدانی داهاتووی فەرمانی بۆشایی",legend:"کلیک ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:"دەستپێگەیشتنی یارمەتی",legend:"کلیك ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/lt.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/lt.js deleted file mode 100644 index 550e595e..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/lt.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","lt",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"Bendros savybės",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", -legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/lv.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/lv.js deleted file mode 100644 index 0b974bff..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/lv.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","lv",{title:"Pieejamības instrukcija",contents:"Palīdzības saturs. Lai aizvērtu ciet šo dialogu nospiediet ESC.",legend:[{name:"Galvenais",items:[{name:"Redaktora rīkjosla",legend:"Nospiediet ${toolbarFocus} lai pārvietotos uz rīkjoslu. Lai pārvietotos uz nākošo vai iepriekšējo rīkjoslas grupu izmantojiet pogu TAB un SHIFT+TAB. Lai pārvietotos uz nākošo vai iepriekšējo rīkjoslas pogu izmantojiet Kreiso vai Labo bultiņu. Nospiediet Atstarpi vai ENTER lai aktivizētu rīkjosla pogu."}, -{name:"Redaktora dialoga logs",legend:"Dialoga logā nospiediet pogu TAB lai pārvietotos uz nākošo dialoga loga lauku, nospiediet SHIFT+TAB lai atgrieztos iepriekšējā laukā, nospiediet ENTER lai apstiprinātu dialoga datus, nospiediet ESC lai aizvērtu šo dialogu. Dialogam kuram ir vairākas cilnes, nospiediet ALT+F10 lai pārvietotos uz nepieciešamo cilni. Lai pārvietotos uz nākošo cilni izmantojiet pogu TAB vai Labo bultiņu. Lai pārvietotos uz iepriekšējo cilni nospiediet SHIFT+TAB vai kreiso bultiņu. Nospiediet SPACE vai ENTER lai izvēlētos lapas cilni."}, -{name:"Redaktora satura izvēle",legend:"Nospiediet ${contextMenu} vai APPLICATION KEY lai atvērtu satura izvēlni. Lai pārvietotos uz nākošo izvēlnes opciju izmantojiet pogu TAB vai pogu Bultiņu uz leju. Lai pārvietotos uz iepriekšējo opciju izmantojiet SHIFT+TAB vai pogu Bultiņa uz augšu. Nospiediet SPACE vai ENTER lai izvelētos izvēlnes opciju. Atveriet tekošajā opcija apakšizvēlni ar SAPCE vai ENTER ka ari to var izdarīt ar Labo bultiņu. Lai atgrieztos atpakaļ uz sakuma izvēlni nospiediet ESC vai Kreiso bultiņu. Lai aizvērtu ciet izvēlnes saturu nospiediet ESC."}, -{name:"Redaktora saraksta lauks",legend:"Saraksta laukā, lai pārvietotos uz nākošo saraksta elementu nospiediet TAB vai pogu Bultiņa uz leju. Lai pārvietotos uz iepriekšējo saraksta elementu nospiediet SHIFT+TAB vai pogu Bultiņa uz augšu. Nospiediet SPACE vai ENTER lai izvēlētos saraksta opcijas. Nospiediet ESC lai aizvērtu saraksta lauku. "},{name:"Redaktora elementa ceļa josla",legend:"Nospiediet ${elementsPathFocus} lai pārvietotos uz elementa ceļa joslu. Lai pārvietotos uz nākošo elementa pogu izmantojiet TAB vai Labo bultiņu. Lai pārvietotos uz iepriekšējo elementa pogu izmantojiet SHIFT + TAB vai Kreiso bultiņu. Nospiediet SPACE vai ENTER lai izvēlētos elementu redaktorā."}]}, -{name:"Komandas",items:[{name:"Komanda atcelt darbību",legend:"Nospiediet ${undo}"},{name:"Komanda atkārtot darbību",legend:"Nospiediet ${redo}"},{name:"Treknraksta komanda",legend:"Nospiediet ${bold}"},{name:"Kursīva komanda",legend:"Nospiediet ${italic}"},{name:"Apakšsvītras komanda ",legend:"Nospiediet ${underline}"},{name:"Hipersaites komanda",legend:"Nospiediet ${link}"},{name:"Rīkjoslas aizvēršanas komanda",legend:"Nospiediet ${toolbarCollapse}"},{name:"Piekļūt iepriekšējai fokusa vietas komandai", -legend:"Nospiediet ${accessPreviousSpace} lai piekļūtu tuvākajai nepieejamajai fokusa vietai pirms kursora. Piemēram: diviem blakus esošiem līnijas HR elementiem. Atkārtojiet taustiņu kombināciju lai piekļūtu pie tālākām vietām."},{name:"Piekļūt nākošā fokusa apgabala komandai",legend:"Nospiediet ${accessNextSpace} lai piekļūtu tuvākajai nepieejamajai fokusa vietai pēc kursora. Piemēram: diviem blakus esošiem līnijas HR elementiem. Atkārtojiet taustiņu kombināciju lai piekļūtu pie tālākām vietām."}, -{name:"Pieejamības palīdzība",legend:"Nospiediet ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/mk.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/mk.js deleted file mode 100644 index b23b8c2f..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/mk.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","mk",{title:"Инструкции за пристапност",contents:"Содржина на делот за помош. За да го затворите овој дијалот притиснете ESC.",legend:[{name:"Општо",items:[{name:"Мени за едиторот",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Дијалот за едиторот", -legend:"Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page."},{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."}, -{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]}, -{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command",legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/mn.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/mn.js deleted file mode 100644 index 28af84ab..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/mn.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","mn",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"Ерөнхий",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", -legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/nb.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/nb.js deleted file mode 100644 index a0b430c5..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/nb.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","nb",{title:"Instruksjoner for tilgjengelighet",contents:"Innhold for hjelp. Trykk ESC for å lukke denne dialogen.",legend:[{name:"Generelt",items:[{name:"Verktøylinje for editor",legend:"Trykk ${toolbarFocus} for å navigere til verktøylinjen. Flytt til neste og forrige verktøylinjegruppe med TAB og SHIFT-TAB. Flytt til neste og forrige verktøylinjeknapp med HØYRE PILTAST og VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å aktivere verktøylinjeknappen."},{name:"Dialog for editor", -legend:"Mens du er i en dialog, trykk TAB for å navigere til neste dialogfelt, press SHIFT + TAB for å flytte til forrige felt, trykk ENTER for å akseptere dialogen, trykk ESC for å avbryte dialogen. For dialoger med flere faner, trykk ALT + F10 for å navigere til listen over faner. Gå til neste fane med TAB eller HØYRE PILTAST. Gå til forrige fane med SHIFT + TAB eller VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å velge fanen."},{name:"Kontekstmeny for editor",legend:"Trykk ${contextMenu} eller MENYKNAPP for å åpne kontekstmeny. Gå til neste alternativ i menyen med TAB eller PILTAST NED. Gå til forrige alternativ med SHIFT+TAB eller PILTAST OPP. Trykk MELLOMROM eller ENTER for å velge menyalternativet. Åpne undermenyen på valgt alternativ med MELLOMROM eller ENTER eller HØYRE PILTAST. Gå tilbake til overordnet menyelement med ESC eller VENSTRE PILTAST. Lukk kontekstmenyen med ESC."}, -{name:"Listeboks for editor",legend:"I en listeboks, gå til neste alternativ i listen med TAB eller PILTAST NED. Gå til forrige alternativ i listen med SHIFT + TAB eller PILTAST OPP. Trykk MELLOMROM eller ENTER for å velge alternativet i listen. Trykk ESC for å lukke listeboksen."},{name:"Verktøylinje for elementsti",legend:"Trykk ${elementsPathFocus} for å navigere til verktøylinjen som viser elementsti. Gå til neste elementknapp med TAB eller HØYRE PILTAST. Gå til forrige elementknapp med SHIFT+TAB eller VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å velge elementet i editoren."}]}, -{name:"Hurtigtaster",items:[{name:"Angre",legend:"Trykk ${undo}"},{name:"Gjør om",legend:"Trykk ${redo}"},{name:"Fet tekst",legend:"Trykk ${bold}"},{name:"Kursiv tekst",legend:"Trykk ${italic}"},{name:"Understreking",legend:"Trykk ${underline}"},{name:"Lenke",legend:"Trykk ${link}"},{name:"Skjul verktøylinje",legend:"Trykk ${toolbarCollapse}"},{name:"Gå til forrige fokusområde",legend:"Trykk ${accessPreviousSpace} for å komme til nærmeste fokusområde før skrivemarkøren som ikke kan nås på vanlig måte, for eksempel to tilstøtende HR-elementer. Gjenta tastekombinasjonen for å komme til fokusområder lenger unna i dokumentet."}, -{name:"Gå til neste fokusområde",legend:"Trykk ${accessNextSpace} for å komme til nærmeste fokusområde etter skrivemarkøren som ikke kan nås på vanlig måte, for eksempel to tilstøtende HR-elementer. Gjenta tastekombinasjonen for å komme til fokusområder lenger unna i dokumentet."},{name:"Hjelp for tilgjengelighet",legend:"Trykk ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/nl.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/nl.js deleted file mode 100644 index 277cf6e9..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/nl.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","nl",{title:"Toegankelijkheidsinstructies",contents:"Help inhoud. Druk op ESC om dit dialoog te sluiten.",legend:[{name:"Algemeen",items:[{name:"Werkbalk tekstverwerker",legend:"Druk op ${toolbarFocus} om naar de werkbalk te navigeren. Om te schakelen naar de volgende en vorige werkbalkgroep, gebruik TAB en SHIFT+TAB. Om te schakelen naar de volgende en vorige werkbalkknop, gebruik de PIJL RECHTS en PIJL LINKS. Druk op SPATIE of ENTER om een werkbalkknop te activeren."}, -{name:"Dialoog tekstverwerker",legend:"In een dialoogvenster, druk op TAB om te navigeren naar het volgende veld. Druk op SHIFT+TAB om naar het vorige veld te navigeren. Druk op ENTER om het dialoogvenster te verzenden. Druk op ESC om het dialoogvenster te sluiten. Voor dialoogvensters met meerdere tabbladen, druk op ALT+F10 om naar de tabset te navigeren. Schakel naar het volgende tabblad met TAB of PIJL RECHTS. Schakel naar het vorige tabblad met SHIFT+TAB of PIJL LINKS. Druk op SPATIE of ENTER om het tabblad te selecteren."}, -{name:"Contextmenu tekstverwerker",legend:"Druk op ${contextMenu} of APPLICATION KEY om het contextmenu te openen. Schakel naar de volgende menuoptie met TAB of PIJL OMLAAG. Schakel naar de vorige menuoptie met SHIFT+TAB of PIJL OMHOOG. Druk op SPATIE of ENTER om een menuoptie te selecteren. Op een submenu van de huidige optie met SPATIE, ENTER of PIJL RECHTS. Ga terug naar de bovenliggende menuoptie met ESC of PIJL LINKS. Sluit het contextmenu met ESC."},{name:"Keuzelijst tekstverwerker",legend:"In een keuzelijst, schakel naar het volgende item met TAB of PIJL OMLAAG. Schakel naar het vorige item met SHIFT+TAB of PIJL OMHOOG. Druk op SPATIE of ENTER om het item te selecteren. Druk op ESC om de keuzelijst te sluiten."}, -{name:"Elementenpad werkbalk tekstverwerker",legend:"Druk op ${elementsPathFocus} om naar het elementenpad te navigeren. Om te schakelen naar het volgende element, gebruik TAB of PIJL RECHTS. Om te schakelen naar het vorige element, gebruik SHIFT+TAB or PIJL LINKS. Druk op SPATIE of ENTER om een element te selecteren in de tekstverwerker."}]},{name:"Opdrachten",items:[{name:"Ongedaan maken opdracht",legend:"Druk op ${undo}"},{name:"Opnieuw uitvoeren opdracht",legend:"Druk op ${redo}"},{name:"Vetgedrukt opdracht", -legend:"Druk op ${bold}"},{name:"Cursief opdracht",legend:"Druk op ${italic}"},{name:"Onderstrepen opdracht",legend:"Druk op ${underline}"},{name:"Link opdracht",legend:"Druk op ${link}"},{name:"Werkbalk inklappen opdracht",legend:"Druk op ${toolbarCollapse}"},{name:"Ga naar vorige focus spatie commando",legend:"Druk ${accessPreviousSpace} om toegang te verkrijgen tot de dichtstbijzijnde onbereikbare focus spatie voor de caret, bijvoorbeeld: twee aangrenzende HR elementen. Herhaal de toetscombinatie om de verste focus spatie te bereiken."}, -{name:"Ga naar volgende focus spatie commando",legend:"Druk ${accessNextSpace} om toegang te verkrijgen tot de dichtstbijzijnde onbereikbare focus spatie na de caret, bijvoorbeeld: twee aangrenzende HR elementen. Herhaal de toetscombinatie om de verste focus spatie te bereiken."},{name:"Toegankelijkheidshulp",legend:"Druk op ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/no.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/no.js deleted file mode 100644 index 28a54e85..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/no.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","no",{title:"Instruksjoner for tilgjengelighet",contents:"Innhold for hjelp. Trykk ESC for å lukke denne dialogen.",legend:[{name:"Generelt",items:[{name:"Verktøylinje for editor",legend:"Trykk ${toolbarFocus} for å navigere til verktøylinjen. Flytt til neste og forrige verktøylinjegruppe med TAB og SHIFT-TAB. Flytt til neste og forrige verktøylinjeknapp med HØYRE PILTAST og VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å aktivere verktøylinjeknappen."},{name:"Dialog for editor", -legend:"Mens du er i en dialog, trykk TAB for å navigere til neste dialogfelt, press SHIFT + TAB for å flytte til forrige felt, trykk ENTER for å akseptere dialogen, trykk ESC for å avbryte dialogen. For dialoger med flere faner, trykk ALT + F10 for å navigere til listen over faner. Gå til neste fane med TAB eller HØYRE PILTAST. Gå til forrige fane med SHIFT + TAB eller VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å velge fanen."},{name:"Kontekstmeny for editor",legend:"Trykk ${contextMenu} eller MENYKNAPP for å åpne kontekstmeny. Gå til neste alternativ i menyen med TAB eller PILTAST NED. Gå til forrige alternativ med SHIFT+TAB eller PILTAST OPP. Trykk MELLOMROM eller ENTER for å velge menyalternativet. Åpne undermenyen på valgt alternativ med MELLOMROM eller ENTER eller HØYRE PILTAST. Gå tilbake til overordnet menyelement med ESC eller VENSTRE PILTAST. Lukk kontekstmenyen med ESC."}, -{name:"Listeboks for editor",legend:"I en listeboks, gå til neste alternativ i listen med TAB eller PILTAST NED. Gå til forrige alternativ i listen med SHIFT + TAB eller PILTAST OPP. Trykk MELLOMROM eller ENTER for å velge alternativet i listen. Trykk ESC for å lukke listeboksen."},{name:"Verktøylinje for elementsti",legend:"Trykk ${elementsPathFocus} for å navigere til verktøylinjen som viser elementsti. Gå til neste elementknapp med TAB eller HØYRE PILTAST. Gå til forrige elementknapp med SHIFT+TAB eller VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å velge elementet i editoren."}]}, -{name:"Kommandoer",items:[{name:"Angre",legend:"Trykk ${undo}"},{name:"Gjør om",legend:"Trykk ${redo}"},{name:"Fet tekst",legend:"Trykk ${bold}"},{name:"Kursiv tekst",legend:"Trykk ${italic}"},{name:"Understreking",legend:"Trykk ${underline}"},{name:"Link",legend:"Trykk ${link}"},{name:"Skjul verktøylinje",legend:"Trykk ${toolbarCollapse}"},{name:"Gå til forrige fokusområde",legend:"Trykk ${accessPreviousSpace} for å komme til nærmeste fokusområde før skrivemarkøren som ikke kan nås på vanlig måte, for eksempel to tilstøtende HR-elementer. Gjenta tastekombinasjonen for å komme til fokusområder lenger unna i dokumentet."}, -{name:"Gå til neste fokusområde",legend:"Trykk ${accessNextSpace} for å komme til nærmeste fokusområde etter skrivemarkøren som ikke kan nås på vanlig måte, for eksempel to tilstøtende HR-elementer. Gjenta tastekombinasjonen for å komme til fokusområder lenger unna i dokumentet."},{name:"Hjelp for tilgjengelighet",legend:"Trykk ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/pl.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/pl.js deleted file mode 100644 index 5031e74c..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/pl.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","pl",{title:"Instrukcje dotyczące dostępności",contents:"Zawartość pomocy. Wciśnij ESC, aby zamknąć to okno.",legend:[{name:"Informacje ogólne",items:[{name:"Pasek narzędzi edytora",legend:"Wciśnij ${toolbarFocus} aby przejść do paska narzędzi. Przejdź do następnej i poprzedniej grupy narzędzi używając TAB oraz SHIFT-TAB. Przejdź do następnego i poprzedniego narzędzia używając STRZAŁKI W PRAWO lub STRZAŁKI W LEWO. Wciśnij SPACJĘ lub ENTER, aby aktywować zaznaczone narzędzie."}, -{name:"Okno dialogowe edytora",legend:"Będąc w oknie dialogowym wciśnij TAB aby przejść do następnego pola dialogowego, wciśnij SHIFT + TAB aby przejść do poprzedniego pola, wciśnij ENTER aby wysłać dialog, wciśnij ESC aby anulować dialog. Dla okien dialogowych z wieloma zakładkami, wciśnij ALT + F10 aby przejść do listy zakładek. Gdy to zrobisz przejdź do następnej zakładki wciskając TAB lub STRZAŁKĘ W PRAWO. Przejdź do poprzedniej zakładki wciskając SHIFT + TAB lub STRZAŁKĘ W LEWO. Wciśnij SPACJĘ lub ENTER aby wybrać zakładkę."}, -{name:"Menu kontekstowe edytora",legend:"Wciśnij ${contextMenu} lub PRZYCISK APLIKACJI aby otworzyć menu kontekstowe. Przejdź do następnej pozycji menu wciskając TAB lub STRZAŁKĘ W DÓŁ. Przejdź do poprzedniej pozycji menu wciskając SHIFT + TAB lub STRZAŁKĘ W GÓRĘ. Wciśnij SPACJĘ lub ENTER aby wygrać pozycję menu. Otwórz pod-menu obecnej pozycji wciskając SPACJĘ lub ENTER lub STRZAŁKĘ W PRAWO. Wróć do pozycji nadrzędnego menu wciskając ESC lub STRZAŁKĘ W LEWO. Zamknij menu wciskając ESC."},{name:"Lista w edytorze", -legend:"W polu listy możesz przechodzić do następnego elementu za pomocą klawisza TAB lub STRZAŁKI W DÓŁ. Poprzedni element osiągniesz za pomocą SHIFT+TAB lub STRZAŁKI W GÓRĘ. Za pomocą SPACJI lub ENTERA wybierzesz daną opcję z listy, a za pomocą klawisza ESC opuścisz listę."},{name:"Pasek ścieżki elementów edytora",legend:"Naciśnij ${elementsPathFocus} w celu przejścia do paska ścieżki elementów edytora. W celu przejścia do kolejnego elementu naciśnij klawisz Tab lub Strzałki w prawo. W celu przejścia do poprzedniego elementu naciśnij klawisze Shift+Tab lub Strzałki w lewo. By wybrać element w edytorze, użyj klawisza Spacji lub Enter."}]}, -{name:"Polecenia",items:[{name:"Polecenie Cofnij",legend:"Naciśnij ${undo}"},{name:"Polecenie Ponów",legend:"Naciśnij ${redo}"},{name:"Polecenie Pogrubienie",legend:"Naciśnij ${bold}"},{name:"Polecenie Kursywa",legend:"Naciśnij ${italic}"},{name:"Polecenie Podkreślenie",legend:"Naciśnij ${underline}"},{name:"Polecenie Wstaw/ edytuj odnośnik",legend:"Naciśnij ${link}"},{name:"Polecenie schowaj pasek narzędzi",legend:"Naciśnij ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:"Pomoc dotycząca dostępności",legend:"Naciśnij ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/pt-br.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/pt-br.js deleted file mode 100644 index f5ab7c6a..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/pt-br.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","pt-br",{title:"Instruções de Acessibilidade",contents:"Conteúdo da Ajuda. Para fechar este diálogo pressione ESC.",legend:[{name:"Geral",items:[{name:"Barra de Ferramentas do Editor",legend:"Pressione ${toolbarFocus} para navegar para a barra de ferramentas. Mova para o anterior ou próximo grupo de ferramentas com TAB e SHIFT-TAB. Mova para o anterior ou próximo botão com SETA PARA DIREITA or SETA PARA ESQUERDA. Pressione ESPAÇO ou ENTER para ativar o botão da barra de ferramentas."}, -{name:"Diálogo do Editor",legend:"Dentro de um diálogo, pressione TAB para navegar para o próximo campo, pressione SHIFT + TAB para mover para o campo anterior, pressione ENTER para enviar o diálogo, pressione ESC para cancelar o diálogo. Para diálogos que tem múltiplas abas, pressione ALT + F10 para navegar para a lista de abas, então mova para a próxima aba com SHIFT + TAB ou SETA PARA ESQUERDA. Pressione ESPAÇO ou ENTER para selecionar a aba."},{name:"Menu de Contexto do Editor",legend:"Pressione ${contextMenu} ou TECLA DE MENU para abrir o menu de contexto, então mova para a próxima opção com TAB ou SETA PARA BAIXO. Mova para a anterior com SHIFT+TAB ou SETA PARA CIMA. Pressione ESPAÇO ou ENTER para selecionar a opção do menu. Abra o submenu da opção atual com ESPAÇO ou ENTER ou SETA PARA DIREITA. Volte para o menu pai com ESC ou SETA PARA ESQUERDA. Feche o menu de contexto com ESC."}, -{name:"Caixa de Lista do Editor",legend:"Dentro de uma caixa de lista, mova para o próximo item com TAB ou SETA PARA BAIXO. Mova para o item anterior com SHIFT + TAB ou SETA PARA CIMA. Pressione ESPAÇO ou ENTER para selecionar uma opção na lista. Pressione ESC para fechar a caixa de lista."},{name:"Barra de Caminho do Elementos do Editor",legend:"Pressione ${elementsPathFocus} para a barra de caminho dos elementos. Mova para o próximo botão de elemento com TAB ou SETA PARA DIREITA. Mova para o botão anterior com SHIFT+TAB ou SETA PARA ESQUERDA. Pressione ESPAÇO ou ENTER para selecionar o elemento no editor."}]}, -{name:"Comandos",items:[{name:" Comando Desfazer",legend:"Pressione ${undo}"},{name:" Comando Refazer",legend:"Pressione ${redo}"},{name:" Comando Negrito",legend:"Pressione ${bold}"},{name:" Comando Itálico",legend:"Pressione ${italic}"},{name:" Comando Sublinhado",legend:"Pressione ${underline}"},{name:" Comando Link",legend:"Pressione ${link}"},{name:" Comando Fechar Barra de Ferramentas",legend:"Pressione ${toolbarCollapse}"},{name:"Acessar o comando anterior de spaço de foco",legend:"Pressione ${accessNextSpace} para acessar o espaço de foco não alcançável mais próximo antes do cursor, por exemplo: dois elementos HR adjacentes. Repita a combinação de teclas para alcançar espaços de foco distantes."}, -{name:"Acessar próximo fomando de spaço de foco",legend:"Pressione ${accessNextSpace} para acessar o espaço de foco não alcançável mais próximo após o cursor, por exemplo: dois elementos HR adjacentes. Repita a combinação de teclas para alcançar espaços de foco distantes."},{name:" Ajuda de Acessibilidade",legend:"Pressione ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/pt.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/pt.js deleted file mode 100644 index 79d72b1b..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/pt.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","pt",{title:"Instruções de Acessibilidade",contents:"Conteúdos da Ajuda. Pressione em 'ESC' para fechar esta janela.",legend:[{name:"Geral",items:[{name:"Barra de Ferramentas do Editor",legend:"Clique em ${toolbarFocus} para navegar para a barra de ferramentas. Vá para o grupo da barra de ferramentas anterior e seguinte com TAB e SHIFT+TAB. Vá para o botão da barra de ferramentas anterior com a SETA DIREITA ou ESQUERDA. Pressione ESPAÇO ou ENTER para ativar o botão da barra de ferramentas."}, -{name:"Janela do Editor",legend:"Dentro de uma janela, pressione TAB para navigar para o campo da janela seguinte, pressione SHIFT + TAB para mover para o campo anterior, pressione ENTER para submeter a janela, pressione ESC para cancelar a janela. Para as janelas que têm múltiplos páginas com separadores, pressione ALT + F10 para navegar para a lista do separador. Depois mova para o seguinte separador com TAB ou SETA DIREITA. Mover para o separador anterior com SHIFT + TAB ou SETA ESQUERDA. Pressione ESPAÇO ou ENTER para selecionar o separador da página."}, -{name:"Menu de Contexto do Editor",legend:"Clique em ${contextMenu} ou TECLA APLICAÇÃO para abrir o menu de contexto. Depois vá para a opção do menu seguinte com TAB ou SETA PARA BAIXO. Vá para a opção anterior com SHIFT+TAB ou SETA PARA CIMA. Pressione ESPAÇO ou ENTER para selecionar a opção do menu. Abra o submenu da opção atual com ESPAÇO, ENTER ou SETA DIREITA. GVá para o item do menu parente com ESC ou SETA ESQUERDA. Feche o menu de contexto com ESC."},{name:"Caixa Lista Editor",legend:"Dentro da caixa da lista, vá para o itemda lista seguinte com TAB ou SETA PARA BAIXO. Move Vá parao item da lista anterior com SHIFT+TAB ou SETA PARA BAIXO. Pressione ESPAÇO ou ENTER para selecionar a opção da lista. Pressione ESC para fechar a caisa da lista."}, -{name:"Caminho Barra Elemento Editor",legend:"Clique em ${elementsPathFocus} para navegar para a barra do caminho dos elementos. Vá para o botão do elemento seguinte com TAB ou SETA DIREITA. Vá para o botão anterior com SHIFT+TAB ou SETA ESQUERDA. Pressione ESPAÇO ou ENTER para selecionar o elemento no editor."}]},{name:"Comandos",items:[{name:"Comando de Anular",legend:"Pressione ${undo}"},{name:"Comando de Refazer",legend:"Pressione ${redo}"},{name:"Comando de Negrito",legend:"Pressione ${bold}"}, -{name:"Comando de Itálico",legend:"Pressione ${italic}"},{name:"Comando de Sublinhado",legend:"Pressione ${underline}"},{name:"Comando de Hiperligação",legend:"Pressione ${link}"},{name:"Comando de Ocultar Barra de Ferramentas",legend:"Pressione ${toolbarCollapse}"},{name:"Acesso comando do espaço focus anterior",legend:"Clique em ${accessPreviousSpace} para aceder ao espaço do focos inalcançável mais perto antes do sinal de omissão, por exemplo: dois elementos HR adjacentes. Repetir a combinação da chave para alcançar os espaços dos focos distantes."}, -{name:"Acesso comando do espaço focus seguinte",legend:"Pressione ${accessNextSpace} para aceder ao espaço do focos inalcançável mais perto depois do sinal de omissão, por exemplo: dois elementos HR adjacentes. Repetir a combinação da chave para alcançar os espaços dos focos distantes."},{name:"Ajuda de Acessibilidade",legend:"Pressione ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ro.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ro.js deleted file mode 100644 index b6cda728..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ro.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","ro",{title:"Instrucțiuni de accesibilitate",contents:"Cuprins. Pentru a închide acest dialog, apăsați tasta ESC.",legend:[{name:"General",items:[{name:"Editează bara.",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Dialog editor",legend:"Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page."}, -{name:"Editor meniu contextual",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", -legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ru.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ru.js deleted file mode 100644 index 8ea8f9a0..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ru.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","ru",{title:"Горячие клавиши",contents:"Помощь. Для закрытия этого окна нажмите ESC.",legend:[{name:"Основное",items:[{name:"Панель инструментов",legend:"Нажмите ${toolbarFocus} для перехода к панели инструментов. Для перемещения между группами панели инструментов используйте TAB и SHIFT-TAB. Для перемещения между кнопками панели иструментов используйте кнопки ВПРАВО или ВЛЕВО. Нажмите ПРОБЕЛ или ENTER для запуска кнопки панели инструментов."},{name:"Диалоги",legend:"В диалоговом окне, нажмите клавишу TAB для перехода к следующему диалоговому полю, нажмите клавиши SHIFT + TAB, чтобы перейти к предыдущему полю, нажмите ENTER, чтобы отправить данные, нажмите клавишу ESC, для отмены. Для окон, которые имеют несколько вкладок, нажмите ALT + F10 для перехода к списку вкладок. Переход к следующей вкладке TAB ИЛИ ПРАВУЮ СТРЕЛКУ. Переход к предыдущей вкладке с помощью SHIFT + TAB или ЛЕВАЯ СТРЕЛКА. Нажмите ПРОБЕЛ или ENTER, чтобы выбрать вкладку."}, -{name:"Контекстное меню",legend:'Нажмите ${contextMenu} или клавишу APPLICATION, чтобы открыть контекстное меню. Затем перейдите к следующему пункту меню с помощью TAB или стрелкой "ВНИЗ". Переход к предыдущей опции - SHIFT+TAB или стрелкой "ВВЕРХ". Нажмите SPACE, или ENTER, чтобы задействовать опцию меню. Открыть подменю текущей опции - SPACE или ENTER или стрелкой "ВПРАВО". Возврат к родительскому пункту меню - ESC или стрелкой "ВЛЕВО". Закрытие контекстного меню - ESC.'},{name:"Редактор списка", -legend:'Внутри окна списка, переход к следующему пункту списка - TAB или стрелкой "ВНИЗ". Переход к предыдущему пункту списка - SHIFT + TAB или стрелкой "ВВЕРХ". Нажмите SPACE, или ENTER, чтобы задействовать опцию списка. Нажмите ESC, чтобы закрыть окно списка.'},{name:"Путь к элементу",legend:'Нажмите ${elementsPathFocus}, чтобы перейти к панели пути элементов. Переход к следующей кнопке элемента - TAB или стрелкой "ВПРАВО". Переход к предыдущей кнопку - SHIFT+TAB или стрелкой "ВЛЕВО". Нажмите SPACE, или ENTER, чтобы выбрать элемент в редакторе.'}]}, -{name:"Команды",items:[{name:"Отменить",legend:"Нажмите ${undo}"},{name:"Повторить",legend:"Нажмите ${redo}"},{name:"Полужирный",legend:"Нажмите ${bold}"},{name:"Курсив",legend:"Нажмите ${italic}"},{name:"Подчеркнутый",legend:"Нажмите ${underline}"},{name:"Гиперссылка",legend:"Нажмите ${link}"},{name:"Свернуть панель инструментов",legend:"Нажмите ${toolbarCollapse}"},{name:"Команды доступа к предыдущему фокусному пространству",legend:'Нажмите ${accessPreviousSpace}, чтобы обратиться к ближайшему недостижимому фокусному пространству перед символом "^", например: два смежных HR элемента. Повторите комбинацию клавиш, чтобы достичь отдаленных фокусных пространств.'}, -{name:"Команды доступа к следующему фокусному пространству",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:"Справка по горячим клавишам",legend:"Нажмите ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/si.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/si.js deleted file mode 100644 index 816dc754..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/si.js +++ /dev/null @@ -1,8 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","si",{title:"ළඟා වියහැකි ",contents:"උදව් සඳහා අන්තර්ගතය.නික්මයෙමට ESC බොත්තම ඔබන්න",legend:[{name:"පොදු කරුණු",items:[{name:"සංස්කරණ මෙවලම් ",legend:"ඔබන්න ${මෙවලම් තීරු අවධානය} මෙවලම් තීරුවේ එහා මෙහා යෑමට.ඉදිරියට යෑමට හා ආපසු යෑමට මෙවලම් තීරුකාණ්ඩය හා TAB හා SHIFT-TAB .ඉදිරියට යෑමට හා ආපසු යෑමට මෙවලම් තීරු බොත්තම සමග RIGHT ARROW හෝ LEFT ARROW.මෙවලම් තීරු බොත්තම සක්‍රිය කර ගැනීමට SPACE හෝ ENTER බොත්තම ඔබන්න."},{name:"සංස්කරණ ",legend:"දෙබසක් තුළ, ඊළඟ දෙබස් පෙදෙසට යෑමට TAB බොත්තම ඔබන්න, කලින් පෙදෙසට යෑමට SHIFT + TAB බොත්තම ද, දෙබස් ඉදිරිපත් කිරීමට ENTER බොත්තම ද, දෙබස් නැවතීමට ESCබොත්තම ද, දෙබස් සහිත ගොනු, පිටු වැඩි සංක්‍යයාවක් ලබා ගෙනිමට,ගොනු තුළ එහාමෙහා යෑමට ALT + F10 බොත්තම් ද, ඊළඟ ගොනුවට යෑමට TAB හෝ RIGTH ARROW බොත්තම ඔබන්න. පෙර ගොනුවට යෑමට SHIFT + TAB හෝ LEFT ARROW බොත්තම් ද ,ගොනු පිටු තේරීමට SPACE හෝ ENTER බොත්තම් ද ඔබන්න."}, -{name:"සංස්කරණ අඩංගුවට ",legend:"ඔබන්න ${අන්තර්ගත මෙනුව} හෝ APPLICATION KEY අන්තර්ගත-මෙනුව විවුරතකිරීමට. ඊළඟ මෙනුව-ව්කල්පයන්ට යෑමට TAB හෝ DOWN ARROW බොත්තම ද, පෙර විකල්පයන්ටයෑමට SHIFT+TAB හෝ UP ARROW බොත්තම ද, මෙනුව-ව්කල්පයන් තේරීමට SPACE හෝ ENTER බොත්තම ද, දැනට විවුර්තව ඇති උප-මෙනුවක වීකල්ප තේරීමට SPACE හෝ ENTER හෝ RIGHT ARROW ද, නැවත පෙර ප්‍රධාන මෙනුවට යෑමට ESC හෝ LEFT ARROW බොත්තම ද. අන්තර්ගත-මෙනුව වැසීමට ESC බොත්තම ද ඔබන්න."},{name:"සංස්කරණ තේරුම් ",legend:"තේරුම් කොටුව තුළ , ඊළඟ අයිතමයට යෑමට TAB හෝ DOWN ARROW , පෙර අයිතමයට යෑමට SHIFT + TAB හෝ UP ARROW . අයිතම විකල්පයන් තේරීමට SPACE හෝ ENTER ,තේරුම් කොටුව වැසීමට ESC බොත්තම් ද ඔබන්න."}, -{name:"සංස්කරණ අංග සහිත ",legend:"ඔබන්න ${මෙවලම් තීරු අවධානය} මෙවලම් තීරුවේ එහා මෙහා යෑමට.ඉදිරියට යෑමට හා ආපසු යෑමට මෙවලම් තීරුකාණ්ඩය හා TAB හා SHIFT-TAB .ඉදිරියට යෑමට හා ආපසු යෑමට මෙවලම් තීරු බොත්තම සමග RIGHT ARROW හෝ LEFT ARROW.මෙවලම් තීරු බොත්තම සක්‍රිය කර ගැනීමට SPACE හෝ ENTER බොත්තම ඔබන්න."}]},{name:"විධාන",items:[{name:"විධානය වෙනස් ",legend:"ඔබන්න ${වෙනස් කිරීම}"},{name:"විධාන නැවත් පෙර පරිදිම වෙනස්කර ගැනීම.",legend:"ඔබන්න ${නැවත් පෙර පරිදිම වෙනස්කර ගැනීම}"},{name:"තද අකුරින් විධාන",legend:"ඔබන්න ${තද }"}, -{name:"බැධී අකුරු විධාන",legend:"ඔබන්න ${බැධී අකුරු }"},{name:"යටින් ඉරි ඇද ඇති විධාන.",legend:"ඔබන්න ${යටින් ඉරි ඇද ඇති}"},{name:"සම්බන්ධිත විධාන",legend:"ඔබන්න ${සම්බන්ධ }"},{name:"මෙවලම් තීරු හැකුලුම් විධාන",legend:"ඔබන්න ${මෙවලම් තීරු හැකුලුම් }"},{name:"යොමුවීමට පෙර වැදගත් විධාන",legend:"ඔබන්න ${යොමුවීමට ඊළඟ }"},{name:"යොමුවීමට ඊළග වැදගත් විධාන",legend:"ඔබන්න ${යොමුවීමට ඊළඟ }"},{name:"ප්‍රවේශ ",legend:"ඔබන්න ${a11y }"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sk.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sk.js deleted file mode 100644 index 9d40e790..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sk.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","sk",{title:"Inštrukcie prístupnosti",contents:"Pomocný obsah. Pre zatvorenie tohto okna, stlačte ESC.",legend:[{name:"Všeobecne",items:[{name:"Lišta nástrojov editora",legend:"Stlačte ${toolbarFocus} pre navigáciu na lištu nástrojov. Medzi ďalšou a predchádzajúcou lištou nástrojov sa pohybujete s TAB a SHIFT-TAB. Medzi ďalším a predchádzajúcim tlačidlom na lište nástrojov sa pohybujete s pravou šípkou a ľavou šípkou. Stlačte medzerník alebo ENTER pre aktiváciu tlačidla lišty nástrojov."}, -{name:"Editorový dialóg",legend:"V dialogu, stlačte TAB pre navigáciu na ďalšie dialógové pole, stlačte STIFT + TAB pre presun na predchádzajúce pole, stlačte ENTER pre odoslanie dialógu, stlačte ESC pre zrušenie dialógu. Pre dialógy, ktoré majú viac záložiek, stlačte ALT + F10 pre navigácou do zoznamu záložiek. Potom sa posúvajte k ďalšej žáložke pomocou TAB alebo pravou šípkou. Pre presun k predchádzajúcej záložke, stlačte SHIFT + TAB alebo ľavú šípku. Stlačte medzerník alebo ENTER pre vybranie záložky."}, -{name:"Editorové kontextové menu",legend:"Stlačte ${contextMenu} alebo APPLICATION KEY pre otvorenie kontextového menu. Potom sa presúvajte na ďalšie možnosti menu s TAB alebo dolnou šípkou. Presunte sa k predchádzajúcej možnosti s SHIFT + TAB alebo hornou šípkou. Stlačte medzerník alebo ENTER pre výber možnosti menu. Otvorte pod-menu danej možnosti s medzerníkom, alebo ENTER, alebo pravou šípkou. Vráťte sa späť do položky rodičovského menu s ESC alebo ľavou šípkou. Zatvorte kontextové menu s ESC."}, -{name:"Editorov box zoznamu",legend:"V boxe zoznamu, presuňte sa na ďalšiu položku v zozname s TAB alebo dolnou šípkou. Presuňte sa k predchádzajúcej položke v zozname so SHIFT + TAB alebo hornou šípkou. Stlačte medzerník alebo ENTER pre výber možnosti zoznamu. Stlačte ESC pre zatvorenie boxu zoznamu."},{name:"Editorove pásmo cesty prvku",legend:"Stlačte ${elementsPathFocus} pre navigovanie na pásmo cesty elementu. Presuňte sa na tlačidlo ďalšieho prvku s TAB alebo pravou šípkou. Presuňte sa k predchádzajúcemu tlačidlu s SHIFT + TAB alebo ľavou šípkou. Stlačte medzerník alebo ENTER pre výber prvku v editore."}]}, -{name:"Príkazy",items:[{name:"Vrátiť príkazy",legend:"Stlačte ${undo}"},{name:"Nanovo vrátiť príkaz",legend:"Stlačte ${redo}"},{name:"Príkaz na stučnenie",legend:"Stlačte ${bold}"},{name:"Príkaz na kurzívu",legend:"Stlačte ${italic}"},{name:"Príkaz na podčiarknutie",legend:"Stlačte ${underline}"},{name:"Príkaz na odkaz",legend:"Stlačte ${link}"},{name:"Príkaz na zbalenie lišty nástrojov",legend:"Stlačte ${toolbarCollapse}"},{name:"Prejsť na predchádzajúcu zamerateľnú medzeru príkazu",legend:"Stlačte ${accessPreviousSpace} pre prístup na najbližšie nedosiahnuteľné zamerateľné medzery pred vsuvkuo. Napríklad: dve za sebou idúce horizontálne čiary. Opakujte kombináciu klávesov pre dosiahnutie vzdialených zamerateľných medzier."}, -{name:"Prejsť na ďalší ",legend:"Stlačte ${accessNextSpace} pre prístup na najbližšie nedosiahnuteľné zamerateľné medzery po vsuvke. Napríklad: dve za sebou idúce horizontálne čiary. Opakujte kombináciu klávesov pre dosiahnutie vzdialených zamerateľných medzier."},{name:"Pomoc prístupnosti",legend:"Stlačte ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sl.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sl.js deleted file mode 100644 index f5dd3100..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sl.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","sl",{title:"Navodila Dostopnosti",contents:"Vsebina Pomoči. Če želite zapreti to pogovorno okno pritisnite ESC.",legend:[{name:"Splošno",items:[{name:"Urejevalna Orodna Vrstica",legend:"Pritisnite ${toolbarFocus} za pomik v orodno vrstico. Z TAB in SHIFT-TAB se pomikate na naslednjo in prejšnjo skupino orodne vrstice. Z DESNO PUŠČICO ali LEVO PUŠČICO se pomikate na naslednji in prejšnji gumb orodne vrstice. Pritisnite SPACE ali ENTER, da aktivirate gumb orodne vrstice."}, -{name:"Urejevalno Pogovorno Okno",legend:"Znotraj pogovornega okna, pritisnite tipko TAB za pomik na naslednjo pogovorno polje, pritisnite SHIFT + TAB za pomik v prejšnje polje, pritisnite tipko ENTER za predložitev pogovornega okna, pritisnite tipko ESC, da prekličete okno. Za okna, ki imajo več zavihkov, pritisnite ALT + F10, da pojdete na seznam zavihkov. Na naslednji zavihek se premaknete s tipko TAB ali DESNO PUŠČICO. Z SHIFT + TAB ali LEVO PUŠČICO pa se premaknete na prejšnji zavihek. Pritisnite tipko SPACE ali ENTER za izbiro zavihka."}, -{name:"Urejevalni Kontekstni Meni",legend:"Pritisnite ${contextMenu} ali APPLICATION KEY, da odprete kontekstni meni. Nato se premaknite na naslednjo možnost menija s tipko TAB ali PUŠČICA DOL. Premakniti se na prejšnjo možnost z SHIFT + TAB ali PUŠČICA GOR. Pritisnite SPACE ali ENTER za izbiro možnosti menija. Odprite podmeni trenutne možnosti menija s tipko SPACE ali ENTER ali DESNA PUŠČICA. Vrnite se na matični element menija s tipko ESC ali LEVA PUŠČICA. Zaprite kontekstni meni z ESC."},{name:"Urejevalno Seznamsko Polje", -legend:"Znotraj seznama, se premaknete na naslednji element seznama s tipko TAB ali PUŠČICO DOL. Z SHIFT + TAB ali PUŠČICO GOR se premaknete na prejšnji element seznama. Pritisnite tipko SPACE ali ENTER za izbiro elementa. Pritisnite tipko ESC, da zaprete seznam."},{name:"Urejevalna vrstica poti elementa",legend:"Pritisnite ${elementsPathFocus} za pomikanje po vrstici elementnih poti. S TAB ali DESNA PUŠČICA se premaknete na naslednji gumb elementa. Z SHIFT + TAB ali LEVO PUŠČICO se premaknete na prejšnji gumb elementa. Pritisnite SPACE ali ENTER za izbiro elementa v urejevalniku."}]}, -{name:"Ukazi",items:[{name:"Razveljavi ukaz",legend:"Pritisnite ${undo}"},{name:"Ponovi ukaz",legend:"Pritisnite ${redo}"},{name:"Krepki ukaz",legend:"Pritisnite ${bold}"},{name:"Ležeči ukaz",legend:"Pritisnite ${italic}"},{name:"Poudarni ukaz",legend:"Pritisnite ${underline}"},{name:"Ukaz povezave",legend:"Pritisnite ${link}"},{name:"Skrči Orodno Vrstico Ukaz",legend:"Pritisnite ${toolbarCollapse}"},{name:"Dostop do prejšnjega ukaza ostrenja",legend:"Pritisnite ${accessPreviousSpace} za dostop do najbližjega nedosegljivega osredotočenega prostora pred strešico, npr.: dva sosednja HR elementa. Ponovite kombinacijo tipk, da dosežete oddaljene osredotočene prostore."}, -{name:"Dostop do naslednjega ukaza ostrenja",legend:"Pritisnite ${accessNextSpace} za dostop do najbližjega nedosegljivega osredotočenega prostora po strešici, npr.: dva sosednja HR elementa. Ponovite kombinacijo tipk, da dosežete oddaljene osredotočene prostore."},{name:"Pomoč Dostopnosti",legend:"Pritisnite ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sq.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sq.js deleted file mode 100644 index 9e4d6967..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sq.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","sq",{title:"Udhëzimet e Qasjes",contents:"Përmbajtja ndihmëse. Për ta mbyllur dialogun shtyp ESC.",legend:[{name:"Të përgjithshme",items:[{name:"Shiriti i Redaktuesit",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Dialogu i Redaktuesit",legend:"Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Komandat",items:[{name:"Rikthe komandën",legend:"Shtyp ${undo}"},{name:"Ribëj komandën",legend:"Shtyp ${redo}"},{name:"Komanda e trashjes së tekstit",legend:"Shtyp ${bold}"},{name:"Komanda kursive",legend:"Shtyp ${italic}"}, -{name:"Komanda e nënvijëzimit",legend:"Shtyp ${underline}"},{name:"Komanda e Nyjes",legend:"Shtyp ${link}"},{name:" Toolbar Collapse command",legend:"Shtyp ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:"Ndihmë Qasjeje",legend:"Shtyp ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sr-latn.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sr-latn.js deleted file mode 100644 index 56a40830..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sr-latn.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","sr-latn",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"Opšte",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", -legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sr.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sr.js deleted file mode 100644 index e2dc7af8..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sr.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","sr",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"Опште",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", -legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sv.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sv.js deleted file mode 100644 index 1fd8cf12..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sv.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","sv",{title:"Hjälpmedelsinstruktioner",contents:"Hjälpinnehåll. För att stänga denna dialogruta trycker du på ESC.",legend:[{name:"Allmänt",items:[{name:"Editor verktygsfält",legend:"Tryck på ${toolbarFocus} för att navigera till verktygsfältet. Flytta till nästa och föregående verktygsfältsgrupp med TAB och SHIFT-TAB. Flytta till nästa och föregående knapp i verktygsfältet med HÖGERPIL eller VÄNSTERPIL. Tryck Space eller ENTER för att aktivera knappen i verktygsfältet."}, -{name:"Dialogeditor",legend:"Inuti en dialogruta, tryck TAB för att navigera till nästa fält i dialogrutan. Du trycker SKIFT + TAB för att flytta till föregående fält. Tryck ENTER för att skicka. Du avbryter och stänger dialogen med ESC. För dialogrutor som har flera flikar, tryck ALT + F10 navigera till fliklistan. Flytta sedan till nästa flik med HÖGERPIL. Flytta till föregående flik med SHIFT + TAB eller VÄNSTERPIL. Tryck Space eller ENTER för att välja fliken."},{name:"Editor för innehållsmeny", -legend:"Tryck på $ {contextMenu} eller PROGRAMTANGENTEN för att öppna snabbmenyn. Flytta sedan till nästa menyalternativ med TAB eller NEDPIL. Flytta till föregående alternativ med SHIFT + TABB eller UPPIL. Tryck Space eller ENTER för att välja menyalternativ. Öppna undermeny av nuvarande alternativ med SPACE eller ENTER eller HÖGERPIL. Gå tillbaka till överordnade menyalternativ med ESC eller VÄNSTERPIL. Stäng snabbmenyn med ESC."},{name:"Editor för List Box",legend:"Inuti en list-box, gå till nästa listobjekt med TAB eller NEDPIL. Flytta till föregående listobjekt med SHIFT + TAB eller UPPIL. Tryck Space eller ENTER för att välja listan alternativet. Tryck ESC för att stänga listan-boxen."}, -{name:"Editor för elementens sökväg",legend:"Tryck på $ {elementsPathFocus} för att navigera till verktygsfältet för elementens sökvägar. Flytta till nästa elementknapp med TAB eller HÖGERPIL. Flytta till föregående knapp med SKIFT + TAB eller VÄNSTERPIL. Tryck Space eller ENTER för att välja element i redigeraren."}]},{name:"Kommandon",items:[{name:"Kommandot ångra",legend:"Tryck på ${undo}"},{name:"Kommandot gör om",legend:"Tryck på ${redo}"},{name:"Kommandot fet stil",legend:"Tryck på ${bold}"}, -{name:"Kommandot kursiv",legend:"Tryck på ${italic}"},{name:"Kommandot understruken",legend:"Tryck på ${underline}"},{name:"kommandot länk",legend:"Tryck på ${link}"},{name:"Verktygsfält Dölj kommandot",legend:"Tryck på ${toolbarCollapse}"},{name:"Gå till föregående fokus plats",legend:"Tryck på ${accessPreviousSpace} för att gå till närmast onåbara utrymme före markören, exempel: två intilliggande HR element. Repetera tangentkombinationen för att gå till nästa."},{name:"Tillgå nästa fokuskommandots utrymme", -legend:"Tryck ${accessNextSpace} på för att komma åt den närmaste onåbar fokus utrymme efter cirkumflex, till exempel: två intilliggande HR element. Upprepa tangentkombinationen för att nå avlägsna fokus utrymmen."},{name:"Hjälp om tillgänglighet",legend:"Tryck ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/th.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/th.js deleted file mode 100644 index 25cf28cb..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/th.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","th",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"ทั่วไป",items:[{name:"แถบเครื่องมือสำหรับเครื่องมือช่วยพิมพ์",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"คำสั่ง",items:[{name:"เลิกทำคำสั่ง",legend:"วาง ${undo}"},{name:"คำสั่งสำหรับทำซ้ำ",legend:"วาง ${redo}"},{name:"คำสั่งสำหรับตัวหนา",legend:"วาง ${bold}"},{name:"คำสั่งสำหรับตัวเอียง",legend:"วาง ${italic}"},{name:"คำสั่งสำหรับขีดเส้นใต้", -legend:"วาง ${underline}"},{name:"คำสั่งสำหรับลิงก์",legend:"วาง ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/tr.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/tr.js deleted file mode 100644 index 768e522f..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/tr.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","tr",{title:"Erişilebilirlik Talimatları",contents:"Yardım içeriği. Bu pencereyi kapatmak için ESC tuşuna basın.",legend:[{name:"Genel",items:[{name:"Düzenleyici Araç Çubuğu",legend:"Araç çubuğunda gezinmek için ${toolbarFocus} basın. TAB ve SHIFT-TAB ile önceki ve sonraki araç çubuğu grubuna taşıyın. SAĞ OK veya SOL OK ile önceki ve sonraki bir araç çubuğu düğmesini hareket ettirin. SPACE tuşuna basın veya araç çubuğu düğmesini etkinleştirmek için ENTER tuşna basın."}, -{name:"Diyalog Düzenleyici",legend:"Dialog penceresi içinde, sonraki iletişim alanına gitmek için SEKME tuşuna basın, önceki alana geçmek için SHIFT + TAB tuşuna basın, pencereyi göndermek için ENTER tuşuna basın, dialog penceresini iptal etmek için ESC tuşuna basın. Birden çok sekme sayfaları olan diyalogların, sekme listesine gitmek için ALT + F10 tuşlarına basın. Sonra TAB veya SAĞ OK sonraki sekmeye taşıyın. SHIFT + TAB veya SOL OK ile önceki sekmeye geçin. Sekme sayfayı seçmek için SPACE veya ENTER tuşuna basın."}, -{name:"İçerik Menü Editörü",legend:"İçerik menüsünü açmak için ${contextMenu} veya UYGULAMA TUŞU'na basın. Daha sonra SEKME veya AŞAĞI OK ile bir sonraki menü seçeneği taşıyın. SHIFT + TAB veya YUKARI OK ile önceki seçeneğe gider. Menü seçeneğini seçmek için SPACE veya ENTER tuşuna basın. Seçili seçeneğin alt menüsünü SPACE ya da ENTER veya SAĞ OK açın. Üst menü öğesini geçmek için ESC veya SOL OK ile geri dönün. ESC ile bağlam menüsünü kapatın."},{name:"Liste Kutusu Editörü",legend:"Liste kutusu içinde, bir sonraki liste öğesine SEKME VEYA AŞAĞI OK ile taşıyın. SHIFT + TAB veya YUKARI önceki liste öğesi taşıyın. Liste seçeneği seçmek için SPACE veya ENTER tuşuna basın. Liste kutusunu kapatmak için ESC tuşuna basın."}, -{name:"Element Yol Çubuğu Editörü",legend:"Elementlerin yol çubuğunda gezinmek için ${ElementsPathFocus} basın. SEKME veya SAĞ OK ile sonraki element düğmesine taşıyın. SHIFT + TAB veya SOL OK önceki düğmeye hareket ettirin. Editör içindeki elementi seçmek için ENTER veya SPACE tuşuna basın."}]},{name:"Komutlar",items:[{name:"Komutu geri al",legend:"$(undo)'ya basın"},{name:"Komutu geri al",legend:"${redo} basın"},{name:" Kalın komut",legend:"${bold} basın"},{name:" İtalik komutu",legend:"${italic} basın"}, -{name:" Alttan çizgi komutu",legend:"${underline} basın"},{name:" Bağlantı komutu",legend:"${link} basın"},{name:" Araç çubuğu Toplama komutu",legend:"${toolbarCollapse} basın"},{name:"Önceki komut alanına odaklan",legend:"Düzeltme imleçinden önce, en yakın uzaktaki alana erişmek için ${accessPreviousSpace} basın, örneğin: iki birleşik HR elementleri. Aynı tuş kombinasyonu tekrarıyla diğer alanlarada ulaşın."},{name:"Sonraki komut alanına odaklan",legend:"Düzeltme imleçinden sonra, en yakın uzaktaki alana erişmek için ${accessNextSpace} basın, örneğin: iki birleşik HR elementleri. Aynı tuş kombinasyonu tekrarıyla diğer alanlarada ulaşın."}, -{name:"Erişilebilirlik Yardımı",legend:"${a11yHelp}'e basın"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ug.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ug.js deleted file mode 100644 index 0b4441a9..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ug.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","ug",{title:"قوشۇمچە چۈشەندۈرۈش",contents:"ياردەم مەزمۇنى. بۇ سۆزلەشكۈنى ياپماقچى بولسىڭىز ESC نى بېسىڭ.",legend:[{name:"ئادەتتىكى",items:[{name:"قورال بالداق تەھرىر",legend:"${toolbarFocus} بېسىلسا قورال بالداققا يېتەكلەيدۇ، TAB ياكى SHIFT+TAB ئارقىلىق قورال بالداق گۇرۇپپىسى تاللىنىدۇ، ئوڭ سول يا ئوقتا توپچا تاللىنىدۇ، بوشلۇق ياكى Enter كۇنۇپكىسىدا تاللانغان توپچىنى قوللىنىدۇ."},{name:"تەھرىرلىگۈچ سۆزلەشكۈسى",legend:"سۆزلەشكۈدە TAB كۇنۇپكىسىدا كېيىنكى سۆز بۆلىكىگە يۆتكىلىدۇ، SHIFT + TAB بىرىكمە كۇنۇپكىسىدا ئالدىنقى سۆز بۆلىكىگە يۆتكىلىدۇ، ENTER كۇنۇپكىسىدا سۆزلەشكۈنى تاپشۇرىدۇ، ESC كۇنۇپكىسى سۆزلەشكۈدىن ۋاز كېچىدۇ. كۆپ بەتكۈچلۈك سۆزلەشكۈگە نىسبەتەن، ALT + F10 دا بەتكۈچ تىزىمىغا يۆتكەيدۇ. ئاندىن TAB كۇنۇپكىسى ياكى ئوڭ يا ئوق كۇنۇپكىسى كېيىنكى بەتكۈچكە يۆتكەيدۇ؛ SHIFT + TAB كۇنۇپكىسى ياكى سول يا ئوق كۇنۇپكىسى ئالدىنقى بەتكۈچكە يۆتكەيدۇ. بوشلۇق كۇنۇپكىسى ياكى ENTER كۇنۇپكىسى بەتكۈچنى تاللايدۇ."}, -{name:"تەھرىرلىگۈچ تىل مۇھىت تىزىملىكى",legend:"${contextMenu} ياكى ئەپ كۇنۇپكىسىدا تىل مۇھىت تىزىملىكىنى ئاچىدۇ. ئاندىن TAB ياكى ئاستى يا ئوق كۇنۇپكىسىدا كېيىنكى تىزىملىك تۈرىگە يۆتكەيدۇ؛ SHIFT+TAB ياكى ئۈستى يا ئوق كۇنۇپكىسىدا ئالدىنقى تىزىملىك تۈرىگە يۆتكەيدۇ. بوشلۇق ياكى ENTER كۇنۇپكىسىدا تىزىملىك تۈرىنى تاللايدۇ. بوشلۇق، ENTER ياكى ئوڭ يا ئوق كۇنۇپكىسىدا تارماق تىزىملىكنى ئاچىدۇ. قايتىش تىزىملىكىگە ESC ياكى سول يا ئوق كۇنۇپكىسى ئىشلىتىلىدۇ. ESC كۇنۇپكىسىدا تىل مۇھىت تىزىملىكى تاقىلىدۇ."},{name:"تەھرىرلىگۈچ تىزىمى", -legend:"تىزىم قۇتىسىدا، كېيىنكى تىزىم تۈرىگە يۆتكەشتە TAB ياكى ئاستى يا ئوق كۇنۇپكىسى ئىشلىتىلىدۇ. ئالدىنقى تىزىم تۈرىگە يۆتكەشتە SHIFT + TAB ياكى ئۈستى يا ئوق كۇنۇپكىسى ئىشلىتىلىدۇ. بوشلۇق ياكى ENTER كۇنۇپكىسىدا تىزىم تۈرىنى تاللايدۇ.ESC كۇنۇپكىسىدا تىزىم قۇتىسىنى يىغىدۇ."},{name:"تەھرىرلىگۈچ ئېلېمېنت يول بالداق",legend:"${elementsPathFocus} بېسىلسا ئېلېمېنت يول بالداققا يېتەكلەيدۇ، TAB ياكى ئوڭ يا ئوقتا كېيىنكى ئېلېمېنت تاللىنىدۇ، SHIFT+TAB ياكى سول يا ئوقتا ئالدىنقى ئېلېمېنت تاللىنىدۇ، بوشلۇق ياكى Enter كۇنۇپكىسىدا تەھرىرلىگۈچتىكى ئېلېمېنت تاللىنىدۇ."}]}, -{name:"بۇيرۇق",items:[{name:"بۇيرۇقتىن يېنىۋال",legend:"${undo} نى بېسىڭ"},{name:"قايتىلاش بۇيرۇقى",legend:"${redo} نى بېسىڭ"},{name:"توملىتىش بۇيرۇقى",legend:"${bold} نى بېسىڭ"},{name:"يانتۇ بۇيرۇقى",legend:"${italic} نى بېسىڭ"},{name:"ئاستى سىزىق بۇيرۇقى",legend:"${underline} نى بېسىڭ"},{name:"ئۇلانما بۇيرۇقى",legend:"${link} نى بېسىڭ"},{name:"قورال بالداق قاتلاش بۇيرۇقى",legend:"${toolbarCollapse} نى بېسىڭ"},{name:"ئالدىنقى فوكۇس نۇقتىسىنى زىيارەت قىلىدىغان بۇيرۇق",legend:"${accessPreviousSpace} بېسىپ ^ بەلگىسىگە ئەڭ يېقىن زىيارەت قىلغىلى بولمايدىغان فوكۇس نۇقتا رايونىنىڭ ئالدىنى زىيارەت قىلىدۇ، مەسىلەن: ئۆز ئارا قوشنا ئىككى HR ئېلېمېنت. بۇ بىرىكمە كۇنۇپكا تەكرارلانسا يىراقتىكى فوكۇس نۇقتا رايونىغا يەتكىلى بولىدۇ."}, -{name:"كېيىنكى فوكۇس نۇقتىسىنى زىيارەت قىلىدىغان بۇيرۇق",legend:"${accessNextSpace} بېسىپ ^ بەلگىسىگە ئەڭ يېقىن زىيارەت قىلغىلى بولمايدىغان فوكۇس نۇقتا رايونىنىڭ كەينىنى زىيارەت قىلىدۇ، مەسىلەن: ئۆز ئارا قوشنا ئىككى HR ئېلېمېنت. بۇ بىرىكمە كۇنۇپكا تەكرارلانسا يىراقتىكى فوكۇس نۇقتا رايونىغا يەتكىلى بولىدۇ."},{name:"توسالغۇسىز لايىھە چۈشەندۈرۈشى",legend:"${a11yHelp} نى بېسىڭ"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/uk.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/uk.js deleted file mode 100644 index cf1eebf5..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/uk.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","uk",{title:"Спеціальні Інструкції",contents:"Довідка. Натисніть ESC і вона зникне.",legend:[{name:"Основне",items:[{name:"Панель Редактора",legend:"Натисніть ${toolbarFocus} для переходу до панелі інструментів. Для переміщення між групами панелі інструментів використовуйте TAB і SHIFT-TAB. Для переміщення між кнопками панелі іструментів використовуйте кнопки СТРІЛКА ВПРАВО або ВЛІВО. Натисніть ПРОПУСК або ENTER для запуску кнопки панелі інструментів"},{name:"Діалог Редактора", -legend:"У діалозі натисніть клавішу TAB для переходу до наступного поля, натисніть SHIFT + TAB, щоб перейти до попереднього поля, натисніть ENTER, щоб відправити дані, натисніть ESC, щоб скасувати. Для вікон, які мають кілька вкладок, натисніть ALT + F10 для переходу до списку вкладок. Перехід до наступної вкладки TAB АБО СТРІЛКА ВПРАВО. Перехід до попередньої вкладки за допомогою SHIFT + TAB або СТРІЛКА ВЛІВО. Натисніть ПРОПУСК або ENTER, щоб вибрати вкладку."},{name:"Контекстне Меню Редактора", -legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Потім перейдіть до наступного пункту меню за допомогою TAB або СТРІЛКИ ВНИЗ. Натисніть ПРОПУСК або ENTER для вибору параметру меню. Відкрийте підменю поточного параметру, натиснувши ПРОПУСК або ENTER або СТРІЛКУ ВПРАВО. Перейдіть до батьківського елемента меню, натиснувши ESC або СТРІЛКУ ВЛІВО. Закрийте контекстне меню, натиснувши ESC."},{name:"Скринька Списків Редактора",legend:"Всередині списку переходимо до наступного пункту списку клавішею TAB або СТРІЛКА ВНИЗ. Перейти до попереднього елемента списку можна SHIFT + TAB або СТРІЛКА ВГОРУ. Натисніть ПРОПУСК або ENTER, щоб вибрати параметр списку. Натисніть клавішу ESC, щоб закрити список."}, -{name:"Шлях до елемента редактора",legend:"Натисніть ${elementsPathFocus} для навігації між елементами панелі. Перейдіть до наступного елемента кнопкою TAB або СТРІЛКА ВПРАВО. Перейдіть до попереднього елемента кнопкою SHIFT+TAB або СТРІЛКА ВЛІВО. Натисніть ПРОПУСК або ENTER для вибору елемента в редакторі."}]},{name:"Команди",items:[{name:"Відмінити команду",legend:"Натисніть ${undo}"},{name:"Повторити",legend:"Натисніть ${redo}"},{name:"Жирний",legend:"Натисніть ${bold}"},{name:"Курсив",legend:"Натисніть ${italic}"}, -{name:"Підкреслений",legend:"Натисніть ${underline}"},{name:"Посилання",legend:"Натисніть ${link}"},{name:"Згорнути панель інструментів",legend:"Натисніть ${toolbarCollapse}"},{name:"Доступ до попереднього місця фокусування",legend:"Натисніть ${accessNextSpace} для доступу до найближчої недосяжної області фокусування перед кареткою, наприклад: два сусідні елементи HR. Повторіть комбінацію клавіш для досягнення віддалених областей фокусування."},{name:"Доступ до наступного місця фокусування",legend:"Натисніть ${accessNextSpace} для доступу до найближчої недосяжної області фокусування після каретки, наприклад: два сусідні елементи HR. Повторіть комбінацію клавіш для досягнення віддалених областей фокусування."}, -{name:"Допомога з доступності",legend:"Натисніть ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/vi.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/vi.js deleted file mode 100644 index 52ada57b..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/vi.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","vi",{title:"Hướng dẫn trợ năng",contents:"Nội dung Hỗ trợ. Nhấn ESC để đóng hộp thoại.",legend:[{name:"Chung",items:[{name:"Thanh công cụ soạn thảo",legend:"Nhấn ${toolbarFocus} để điều hướng đến thanh công cụ. Nhấn TAB và SHIFT-TAB để chuyển đến nhóm thanh công cụ khác. Nhấn MŨI TÊN PHẢI hoặc MŨI TÊN TRÁI để chuyển sang nút khác trên thanh công cụ. Nhấn PHÍM CÁCH hoặc ENTER để kích hoạt nút trên thanh công cụ."},{name:"Hộp thoại Biên t",legend:"Bên trong một hộp thoại, nhấn TAB để chuyển sang trường tiếp theo, nhấn SHIFT + TAB để quay lại trường phía trước, nhấn ENTER để chấp nhận, nhấn ESC để đóng hộp thoại. Đối với các hộp thoại có nhiều tab, nhấn ALT + F10 để chuyển đến danh sách các tab. Sau đó nhấn TAB hoặc MŨI TÊN SANG PHẢI để chuyển sang tab tiếp theo. Nhấn SHIFT + TAB hoặc MŨI TÊN SANG TRÁI để chuyển sang tab trước đó. Nhấn DẤU CÁCH hoặc ENTER để chọn tab."}, -{name:"Trình đơn Ngữ cảnh cBộ soạn thảo",legend:"Nhấn ${contextMenu} hoặc PHÍM ỨNG DỤNG để mở thực đơn ngữ cảnh. Sau đó nhấn TAB hoặc MŨI TÊN XUỐNG để di chuyển đến tuỳ chọn tiếp theo của thực đơn. Nhấn SHIFT+TAB hoặc MŨI TÊN LÊN để quay lại tuỳ chọn trước. Nhấn DẤU CÁCH hoặc ENTER để chọn tuỳ chọn của thực đơn. Nhấn DẤU CÁCH hoặc ENTER hoặc MŨI TÊN SANG PHẢI để mở thực đơn con của tuỳ chọn hiện tại. Nhấn ESC hoặc MŨI TÊN SANG TRÁI để quay trở lại thực đơn gốc. Nhấn ESC để đóng thực đơn ngữ cảnh."}, -{name:"Hộp danh sách trình biên tập",legend:"Trong một danh sách chọn, di chuyển đối tượng tiếp theo với phím Tab hoặc phím mũi tên hướng xuống. Di chuyển đến đối tượng trước đó bằng cách nhấn tổ hợp phím Shift+Tab hoặc mũi tên hướng lên. Phím khoảng cách hoặc phím Enter để chọn các tùy chọn trong danh sách. Nhấn phím Esc để đóng lại danh sách chọn."},{name:"Thanh đường dẫn các đối tượng",legend:"Nhấn ${elementsPathFocus} để điều hướng các đối tượng trong thanh đường dẫn. Di chuyển đến đối tượng tiếp theo bằng phím Tab hoặc phím mũi tên bên phải. Di chuyển đến đối tượng trước đó bằng tổ hợp phím Shift+Tab hoặc phím mũi tên bên trái. Nhấn phím khoảng cách hoặc Enter để chọn đối tượng trong trình soạn thảo."}]}, -{name:"Lệnh",items:[{name:"Làm lại lện",legend:"Ấn ${undo}"},{name:"Làm lại lệnh",legend:"Ấn ${redo}"},{name:"Lệnh in đậm",legend:"Ấn ${bold}"},{name:"Lệnh in nghiêng",legend:"Ấn ${italic}"},{name:"Lệnh gạch dưới",legend:"Ấn ${underline}"},{name:"Lệnh liên kết",legend:"Nhấn ${link}"},{name:"Lệnh hiển thị thanh công cụ",legend:"Nhấn${toolbarCollapse}"},{name:"Truy cập đến lệnh tập trung vào khoảng cách trước đó",legend:"Ấn ${accessPreviousSpace} để truy cập đến phần tập trung khoảng cách sau phần còn sót lại của khoảng cách gần nhất vốn không tác động đến được , thí dụ: hai yếu tố điều chỉnh HR. Lặp lại các phím kết họep này để vươn đến phần khoảng cách."}, -{name:"Truy cập phần đối tượng lệnh khoảng trống",legend:"Ấn ${accessNextSpace} để truy cập đến phần tập trung khoảng cách sau phần còn sót lại của khoảng cách gần nhất vốn không tác động đến được , thí dụ: hai yếu tố điều chỉnh HR. Lặp lại các phím kết họep này để vươn đến phần khoảng cách."},{name:"Trợ giúp liên quan",legend:"Nhấn ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/zh-cn.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/zh-cn.js deleted file mode 100644 index deed9ad7..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/zh-cn.js +++ /dev/null @@ -1,7 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","zh-cn",{title:"辅助功能说明",contents:"帮助内容。要关闭此对话框请按 ESC 键。",legend:[{name:"常规",items:[{name:"编辑器工具栏",legend:"按 ${toolbarFocus} 导航到工具栏,使用 TAB 键和 SHIFT+TAB 组合键移动到上一个和下一个工具栏组。使用左右箭头键移动到上一个和下一个工具栏按钮。按空格键或回车键以选中工具栏按钮。"},{name:"编辑器对话框",legend:"在对话框内,TAB 键移动到下一个字段,SHIFT + TAB 组合键移动到上一个字段,ENTER 键提交对话框,ESC 键取消对话框。对于有多选项卡的对话框,用ALT + F10来移到选项卡列表。然后用 TAB 键或者向右箭头来移动到下一个选项卡;SHIFT + TAB 组合键或者向左箭头移动到上一个选项卡。用 SPACE 键或者 ENTER 键选择选项卡。"},{name:"编辑器上下文菜单",legend:"用 ${contextMenu} 或者“应用程序键”打开上下文菜单。然后用 TAB 键或者下箭头键来移动到下一个菜单项;SHIFT + TAB 组合键或者上箭头键移动到上一个菜单项。用 SPACE 键或者 ENTER 键选择菜单项。用 SPACE 键,ENTER 键或者右箭头键打开子菜单。返回菜单用 ESC 键或者左箭头键。用 ESC 键关闭上下文菜单。"}, -{name:"编辑器列表框",legend:"在列表框中,移到下一列表项用 TAB 键或者下箭头键。移到上一列表项用SHIFT + TAB 组合键或者上箭头键,用 SPACE 键或者 ENTER 键选择列表项。用 ESC 键收起列表框。"},{name:"编辑器元素路径栏",legend:"按 ${elementsPathFocus} 以导航到元素路径栏,使用 TAB 键或右箭头键选择下一个元素,使用 SHIFT+TAB 组合键或左箭头键选择上一个元素,按空格键或回车键以选定编辑器里的元素。"}]},{name:"命令",items:[{name:" 撤消命令",legend:"按 ${undo}"},{name:" 重做命令",legend:"按 ${redo}"},{name:" 加粗命令",legend:"按 ${bold}"},{name:" 倾斜命令",legend:"按 ${italic}"},{name:" 下划线命令",legend:"按 ${underline}"},{name:" 链接命令",legend:"按 ${link}"},{name:" 工具栏折叠命令",legend:"按 ${toolbarCollapse}"}, -{name:"访问前一个焦点区域的命令",legend:"按 ${accessPreviousSpace} 访问^符号前最近的不可访问的焦点区域,例如:两个相邻的 HR 元素。重复此组合按键可以到达远处的焦点区域。"},{name:"访问下一个焦点区域命令",legend:"按 ${accessNextSpace} 以访问^符号后最近的不可访问的焦点区域。例如:两个相邻的 HR 元素。重复此组合按键可以到达远处的焦点区域。"},{name:"辅助功能帮助",legend:"按 ${a11yHelp}"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/zh.js b/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/zh.js deleted file mode 100644 index eb2a8bc0..00000000 --- a/assets/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/zh.js +++ /dev/null @@ -1,7 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","zh",{title:"輔助工具指南",contents:"說明內容。若要關閉此對話框請按「ESC」。",legend:[{name:"一般",items:[{name:"編輯器工具列",legend:"請按「${toolbarFocus}」以瀏覽工具列。\r\n利用「TAB」或「SHIFT+TAB」以便移動到下一個或前一個工具列群組。\r\n利用「→」或「←」以便移動到下一個或前一個工具列按鈕。\r\n請按下「空白鍵」或「ENTER」鍵啟動工具列按鈕。"},{name:"編輯器對話方塊",legend:"在對話框中,請按 TAB 鍵以便移動到下個欄位,請按 SHIFT + TAB 以便移動到前個欄位;請按 ENTER 以提交對話框資料,或按下 ESC 取消對話框。\r\n若是有多個頁框的對話框,請按 ALT + F10 以移動到頁框列表,並以 TAB 或是 → 方向鍵移動到下個頁框。以 SHIFT + TAB 或是 ← 方向鍵移動到前個頁框。按下 空白鍵 或是 ENTER 以選取頁框。"},{name:"編輯器內容功能表", -legend:"請按下「${contextMenu}」或是「應用程式鍵」以開啟內容選單。以「TAB」或是「↓」鍵移動到下一個選單選項。以「SHIFT + TAB」或是「↑」鍵移動到上一個選單選項。按下「空白鍵」或是「ENTER」鍵以選取選單選項。以「空白鍵」或「ENTER」或「→」開啟目前選項之子選單。以「ESC」或「←」回到父選單。以「ESC」鍵關閉內容選單」。"},{name:"編輯器清單方塊",legend:"在列表中,請利用 TAB 或 ↓ 方向鍵以移動到下一個項目;或利用 SHIFT + TAB 或 ↑ 方向鍵移動到前一個項目。請按下 空白鍵 或是 ENTER 以選取項目。請按 ESC 關閉列表。"},{name:"編輯器元件路徑工具列",legend:"請按「${elementsPathFocus}」以瀏覽元素路徑工具列。\r\n利用「TAB」或「→」以便移動到下一個元素按鈕。\r\n利用「SHIFT+TAB」或「←」以便移動到前一個元素按鈕。\r\n請按下「空白鍵」或「ENTER」鍵選擇編輯器中的元素。"}]},{name:"命令",items:[{name:"復原命令", -legend:"請按下「${undo}」"},{name:"重複命令",legend:"請按下「 ${redo}」"},{name:"粗體命令",legend:"請按下「${bold}」"},{name:"斜體",legend:"請按下「${italic}」"},{name:"底線命令",legend:"請按下「${underline}」"},{name:"連結",legend:"請按下「${link}」"},{name:"隱藏工具列",legend:"請按下「${toolbarCollapse}」"},{name:"存取前一個焦點空間命令",legend:"請按下 ${accessPreviousSpace} 以存取最近但無法靠近之插字符號前的焦點空間。舉例:二個相鄰的 HR 元素。\r\n重複按鍵以存取較遠的焦點空間。"},{name:"存取下一個焦點空間命令",legend:"請按下 ${accessNextSpace} 以存取最近但無法靠近之插字符號後的焦點空間。舉例:二個相鄰的 HR 元素。\r\n重複按鍵以存取較遠的焦點空間。"},{name:"協助工具說明",legend:"請按下「${a11yHelp}」"}]}]}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/about/dialogs/about.js b/assets/plugins/ckeditor/plugins/about/dialogs/about.js deleted file mode 100644 index d9b8194c..00000000 --- a/assets/plugins/ckeditor/plugins/about/dialogs/about.js +++ /dev/null @@ -1,7 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.dialog.add("about",function(a){var a=a.lang.about,b=CKEDITOR.plugins.get("about").path+"dialogs/"+(CKEDITOR.env.hidpi?"hidpi/":"")+"logo_ckeditor.png";return{title:CKEDITOR.env.ie?a.dlgTitle:a.title,minWidth:390,minHeight:230,contents:[{id:"tab1",label:"",title:"",expand:!0,padding:0,elements:[{type:"html",html:'<style type="text/css">.cke_about_container{color:#000 !important;padding:10px 10px 0;margin-top:5px}.cke_about_container p{margin: 0 0 10px;}.cke_about_container .cke_about_logo{height:81px;background-color:#fff;background-image:url('+ -b+");"+(CKEDITOR.env.hidpi?"background-size:163px 58px;":"")+'background-position:center; background-repeat:no-repeat;margin-bottom:10px;}.cke_about_container a{cursor:pointer !important;color:#00B2CE !important;text-decoration:underline !important;}</style><div class="cke_about_container"><div class="cke_about_logo"></div><p>CKEditor '+CKEDITOR.version+" (revision "+CKEDITOR.revision+')<br><a href="http://ckeditor.com/">http://ckeditor.com</a></p><p>'+a.help.replace("$1",'<a href="http://docs.ckeditor.com/user">'+ -a.userGuide+"</a>")+"</p><p>"+a.moreInfo+'<br><a href="http://ckeditor.com/about/license">http://ckeditor.com/about/license</a></p><p>'+a.copy.replace("$1",'<a href="http://cksource.com/">CKSource</a> - Frederico Knabben')+"</p></div>"}]}],buttons:[CKEDITOR.dialog.cancelButton]}}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/about/dialogs/hidpi/logo_ckeditor.png b/assets/plugins/ckeditor/plugins/about/dialogs/hidpi/logo_ckeditor.png deleted file mode 100644 index 10cc7368..00000000 Binary files a/assets/plugins/ckeditor/plugins/about/dialogs/hidpi/logo_ckeditor.png and /dev/null differ diff --git a/assets/plugins/ckeditor/plugins/about/dialogs/logo_ckeditor.png b/assets/plugins/ckeditor/plugins/about/dialogs/logo_ckeditor.png deleted file mode 100644 index f186eb87..00000000 Binary files a/assets/plugins/ckeditor/plugins/about/dialogs/logo_ckeditor.png and /dev/null differ diff --git a/assets/plugins/ckeditor/plugins/clipboard/dialogs/paste.js b/assets/plugins/ckeditor/plugins/clipboard/dialogs/paste.js deleted file mode 100644 index 0c7e2563..00000000 --- a/assets/plugins/ckeditor/plugins/clipboard/dialogs/paste.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.dialog.add("paste",function(c){function h(a){var b=new CKEDITOR.dom.document(a.document),f=b.getBody(),d=b.getById("cke_actscrpt");d&&d.remove();f.setAttribute("contenteditable",!0);if(CKEDITOR.env.ie&&8>CKEDITOR.env.version)b.getWindow().on("blur",function(){b.$.selection.empty()});b.on("keydown",function(a){var a=a.data,b;switch(a.getKeystroke()){case 27:this.hide();b=1;break;case 9:case CKEDITOR.SHIFT+9:this.changeFocus(1),b=1}b&&a.preventDefault()},this);c.fire("ariaWidget",new CKEDITOR.dom.element(a.frameElement)); -b.getWindow().getFrame().removeCustomData("pendingFocus")&&f.focus()}var e=c.lang.clipboard;c.on("pasteDialogCommit",function(a){a.data&&c.fire("paste",{type:"auto",dataValue:a.data})},null,null,1E3);return{title:e.title,minWidth:CKEDITOR.env.ie&&CKEDITOR.env.quirks?370:350,minHeight:CKEDITOR.env.quirks?250:245,onShow:function(){this.parts.dialog.$.offsetHeight;this.setupContent();this.parts.title.setHtml(this.customTitle||e.title);this.customTitle=null},onLoad:function(){(CKEDITOR.env.ie7Compat|| -CKEDITOR.env.ie6Compat)&&"rtl"==c.lang.dir&&this.parts.contents.setStyle("overflow","hidden")},onOk:function(){this.commitContent()},contents:[{id:"general",label:c.lang.common.generalTab,elements:[{type:"html",id:"securityMsg",html:'<div style="white-space:normal;width:340px">'+e.securityMsg+"</div>"},{type:"html",id:"pasteMsg",html:'<div style="white-space:normal;width:340px">'+e.pasteMsg+"</div>"},{type:"html",id:"editing_area",style:"width:100%;height:100%",html:"",focus:function(){var a=this.getInputElement(), -b=a.getFrameDocument().getBody();!b||b.isReadOnly()?a.setCustomData("pendingFocus",1):b.focus()},setup:function(){var a=this.getDialog(),b='<html dir="'+c.config.contentsLangDirection+'" lang="'+(c.config.contentsLanguage||c.langCode)+'"><head><style>body{margin:3px;height:95%}</style></head><body><script id="cke_actscrpt" type="text/javascript">window.parent.CKEDITOR.tools.callFunction('+CKEDITOR.tools.addFunction(h,a)+",this);<\/script></body></html>",f=CKEDITOR.env.air?"javascript:void(0)":CKEDITOR.env.ie? -"javascript:void((function(){"+encodeURIComponent("document.open();("+CKEDITOR.tools.fixDomain+")();document.close();")+'})())"':"",d=CKEDITOR.dom.element.createFromHtml('<iframe class="cke_pasteframe" frameborder="0" allowTransparency="true" src="'+f+'" role="region" aria-label="'+e.pasteArea+'" aria-describedby="'+a.getContentElement("general","pasteMsg").domId+'" aria-multiple="true"></iframe>');d.on("load",function(a){a.removeListener();a=d.getFrameDocument();a.write(b);c.focusManager.add(a.getBody()); -CKEDITOR.env.air&&h.call(this,a.getWindow().$)},a);d.setCustomData("dialog",a);a=this.getElement();a.setHtml("");a.append(d);if(CKEDITOR.env.ie){var g=CKEDITOR.dom.element.createFromHtml('<span tabindex="-1" style="position:absolute" role="presentation"></span>');g.on("focus",function(){setTimeout(function(){d.$.contentWindow.focus()})});a.append(g);this.focus=function(){g.focus();this.fire("focus")}}this.getInputElement=function(){return d};CKEDITOR.env.ie&&(a.setStyle("display","block"),a.setStyle("height", -d.$.offsetHeight+2+"px"))},commit:function(){var a=this.getDialog().getParentEditor(),b=this.getInputElement().getFrameDocument().getBody(),c=b.getBogus(),d;c&&c.remove();d=b.getHtml();setTimeout(function(){a.fire("pasteDialogCommit",d)},0)}}]}]}}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/dialog/dialogDefinition.js b/assets/plugins/ckeditor/plugins/dialog/dialogDefinition.js deleted file mode 100644 index 2186b29d..00000000 --- a/assets/plugins/ckeditor/plugins/dialog/dialogDefinition.js +++ /dev/null @@ -1,4 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ diff --git a/assets/plugins/ckeditor/plugins/fakeobjects/images/spacer.gif b/assets/plugins/ckeditor/plugins/fakeobjects/images/spacer.gif deleted file mode 100644 index 5bfd67a2..00000000 Binary files a/assets/plugins/ckeditor/plugins/fakeobjects/images/spacer.gif and /dev/null differ diff --git a/assets/plugins/ckeditor/plugins/icons.png b/assets/plugins/ckeditor/plugins/icons.png deleted file mode 100644 index c71008d7..00000000 Binary files a/assets/plugins/ckeditor/plugins/icons.png and /dev/null differ diff --git a/assets/plugins/ckeditor/plugins/icons_hidpi.png b/assets/plugins/ckeditor/plugins/icons_hidpi.png deleted file mode 100644 index 0466c2bc..00000000 Binary files a/assets/plugins/ckeditor/plugins/icons_hidpi.png and /dev/null differ diff --git a/assets/plugins/ckeditor/plugins/image/dialogs/image.js b/assets/plugins/ckeditor/plugins/image/dialogs/image.js deleted file mode 100644 index c86de590..00000000 --- a/assets/plugins/ckeditor/plugins/image/dialogs/image.js +++ /dev/null @@ -1,43 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -(function(){var r=function(c,j){function r(){var a=arguments,b=this.getContentElement("advanced","txtdlgGenStyle");b&&b.commit.apply(b,a);this.foreach(function(b){b.commit&&"txtdlgGenStyle"!=b.id&&b.commit.apply(b,a)})}function i(a){if(!s){s=1;var b=this.getDialog(),d=b.imageElement;if(d){this.commit(f,d);for(var a=[].concat(a),e=a.length,c,g=0;g<e;g++)(c=b.getContentElement.apply(b,a[g].split(":")))&&c.setup(f,d)}s=0}}var f=1,k=/^\s*(\d+)((px)|\%)?\s*$/i,v=/(^\s*(\d+)((px)|\%)?\s*$)|^$/i,o=/^\d+px$/, -w=function(){var a=this.getValue(),b=this.getDialog(),d=a.match(k);d&&("%"==d[2]&&l(b,!1),a=d[1]);b.lockRatio&&(d=b.originalElement,"true"==d.getCustomData("isReady")&&("txtHeight"==this.id?(a&&"0"!=a&&(a=Math.round(d.$.width*(a/d.$.height))),isNaN(a)||b.setValueOf("info","txtWidth",a)):(a&&"0"!=a&&(a=Math.round(d.$.height*(a/d.$.width))),isNaN(a)||b.setValueOf("info","txtHeight",a))));g(b)},g=function(a){if(!a.originalElement||!a.preview)return 1;a.commitContent(4,a.preview);return 0},s,l=function(a, -b){if(!a.getContentElement("info","ratioLock"))return null;var d=a.originalElement;if(!d)return null;if("check"==b){if(!a.userlockRatio&&"true"==d.getCustomData("isReady")){var e=a.getValueOf("info","txtWidth"),c=a.getValueOf("info","txtHeight"),d=1E3*d.$.width/d.$.height,f=1E3*e/c;a.lockRatio=!1;!e&&!c?a.lockRatio=!0:!isNaN(d)&&!isNaN(f)&&Math.round(d)==Math.round(f)&&(a.lockRatio=!0)}}else void 0!=b?a.lockRatio=b:(a.userlockRatio=1,a.lockRatio=!a.lockRatio);e=CKEDITOR.document.getById(p);a.lockRatio? -e.removeClass("cke_btn_unlocked"):e.addClass("cke_btn_unlocked");e.setAttribute("aria-checked",a.lockRatio);CKEDITOR.env.hc&&e.getChild(0).setHtml(a.lockRatio?CKEDITOR.env.ie?"■":"▣":CKEDITOR.env.ie?"□":"▢");return a.lockRatio},x=function(a){var b=a.originalElement;if("true"==b.getCustomData("isReady")){var d=a.getContentElement("info","txtWidth"),e=a.getContentElement("info","txtHeight");d&&d.setValue(b.$.width);e&&e.setValue(b.$.height)}g(a)},y=function(a,b){function d(a,b){var d=a.match(k);return d? -("%"==d[2]&&(d[1]+="%",l(e,!1)),d[1]):b}if(a==f){var e=this.getDialog(),c="",g="txtWidth"==this.id?"width":"height",h=b.getAttribute(g);h&&(c=d(h,c));c=d(b.getStyle(g),c);this.setValue(c)}},t,q=function(){var a=this.originalElement;a.setCustomData("isReady","true");a.removeListener("load",q);a.removeListener("error",h);a.removeListener("abort",h);CKEDITOR.document.getById(m).setStyle("display","none");this.dontResetSize||x(this);this.firstLoad&&CKEDITOR.tools.setTimeout(function(){l(this,"check")}, -0,this);this.dontResetSize=this.firstLoad=!1},h=function(){var a=this.originalElement;a.removeListener("load",q);a.removeListener("error",h);a.removeListener("abort",h);a=CKEDITOR.getUrl(CKEDITOR.plugins.get("image").path+"images/noimage.png");this.preview&&this.preview.setAttribute("src",a);CKEDITOR.document.getById(m).setStyle("display","none");l(this,!1)},n=function(a){return CKEDITOR.tools.getNextId()+"_"+a},p=n("btnLockSizes"),u=n("btnResetSize"),m=n("ImagePreviewLoader"),A=n("previewLink"), -z=n("previewImage");return{title:c.lang.image["image"==j?"title":"titleButton"],minWidth:420,minHeight:360,onShow:function(){this.linkEditMode=this.imageEditMode=this.linkElement=this.imageElement=!1;this.lockRatio=!0;this.userlockRatio=0;this.dontResetSize=!1;this.firstLoad=!0;this.addLink=!1;var a=this.getParentEditor(),b=a.getSelection(),d=(b=b&&b.getSelectedElement())&&a.elementPath(b).contains("a",1);CKEDITOR.document.getById(m).setStyle("display","none");t=new CKEDITOR.dom.element("img",a.document); -this.preview=CKEDITOR.document.getById(z);this.originalElement=a.document.createElement("img");this.originalElement.setAttribute("alt","");this.originalElement.setCustomData("isReady","false");if(d){this.linkElement=d;this.linkEditMode=!0;var c=d.getChildren();if(1==c.count()){var g=c.getItem(0).getName();if("img"==g||"input"==g)this.imageElement=c.getItem(0),"img"==this.imageElement.getName()?this.imageEditMode="img":"input"==this.imageElement.getName()&&(this.imageEditMode="input")}"image"==j&& -this.setupContent(2,d)}if(this.customImageElement)this.imageEditMode="img",this.imageElement=this.customImageElement,delete this.customImageElement;else if(b&&"img"==b.getName()&&!b.data("cke-realelement")||b&&"input"==b.getName()&&"image"==b.getAttribute("type"))this.imageEditMode=b.getName(),this.imageElement=b;this.imageEditMode?(this.cleanImageElement=this.imageElement,this.imageElement=this.cleanImageElement.clone(!0,!0),this.setupContent(f,this.imageElement)):this.imageElement=a.document.createElement("img"); -l(this,!0);CKEDITOR.tools.trim(this.getValueOf("info","txtUrl"))||(this.preview.removeAttribute("src"),this.preview.setStyle("display","none"))},onOk:function(){if(this.imageEditMode){var a=this.imageEditMode;"image"==j&&"input"==a&&confirm(c.lang.image.button2Img)?(this.imageElement=c.document.createElement("img"),this.imageElement.setAttribute("alt",""),c.insertElement(this.imageElement)):"image"!=j&&"img"==a&&confirm(c.lang.image.img2Button)?(this.imageElement=c.document.createElement("input"), -this.imageElement.setAttributes({type:"image",alt:""}),c.insertElement(this.imageElement)):(this.imageElement=this.cleanImageElement,delete this.cleanImageElement)}else"image"==j?this.imageElement=c.document.createElement("img"):(this.imageElement=c.document.createElement("input"),this.imageElement.setAttribute("type","image")),this.imageElement.setAttribute("alt","");this.linkEditMode||(this.linkElement=c.document.createElement("a"));this.commitContent(f,this.imageElement);this.commitContent(2,this.linkElement); -this.imageElement.getAttribute("style")||this.imageElement.removeAttribute("style");this.imageEditMode?!this.linkEditMode&&this.addLink?(c.insertElement(this.linkElement),this.imageElement.appendTo(this.linkElement)):this.linkEditMode&&!this.addLink&&(c.getSelection().selectElement(this.linkElement),c.insertElement(this.imageElement)):this.addLink?this.linkEditMode?c.insertElement(this.imageElement):(c.insertElement(this.linkElement),this.linkElement.append(this.imageElement,!1)):c.insertElement(this.imageElement)}, -onLoad:function(){"image"!=j&&this.hidePage("Link");var a=this._.element.getDocument();this.getContentElement("info","ratioLock")&&(this.addFocusable(a.getById(u),5),this.addFocusable(a.getById(p),5));this.commitContent=r},onHide:function(){this.preview&&this.commitContent(8,this.preview);this.originalElement&&(this.originalElement.removeListener("load",q),this.originalElement.removeListener("error",h),this.originalElement.removeListener("abort",h),this.originalElement.remove(),this.originalElement= -!1);delete this.imageElement},contents:[{id:"info",label:c.lang.image.infoTab,accessKey:"I",elements:[{type:"vbox",padding:0,children:[{type:"hbox",widths:["280px","110px"],align:"right",children:[{id:"txtUrl",type:"text",label:c.lang.common.url,required:!0,onChange:function(){var a=this.getDialog(),b=this.getValue();if(0<b.length){var a=this.getDialog(),d=a.originalElement;a.preview.removeStyle("display");d.setCustomData("isReady","false");var c=CKEDITOR.document.getById(m);c&&c.setStyle("display", -"");d.on("load",q,a);d.on("error",h,a);d.on("abort",h,a);d.setAttribute("src",b);t.setAttribute("src",b);a.preview.setAttribute("src",t.$.src);g(a)}else a.preview&&(a.preview.removeAttribute("src"),a.preview.setStyle("display","none"))},setup:function(a,b){if(a==f){var d=b.data("cke-saved-src")||b.getAttribute("src");this.getDialog().dontResetSize=!0;this.setValue(d);this.setInitValue()}},commit:function(a,b){a==f&&(this.getValue()||this.isChanged())?(b.data("cke-saved-src",this.getValue()),b.setAttribute("src", -this.getValue())):8==a&&(b.setAttribute("src",""),b.removeAttribute("src"))},validate:CKEDITOR.dialog.validate.notEmpty(c.lang.image.urlMissing)},{type:"button",id:"browse",style:"display:inline-block;margin-top:10px;",align:"center",label:c.lang.common.browseServer,hidden:!0,filebrowser:"info:txtUrl"}]}]},{id:"txtAlt",type:"text",label:c.lang.image.alt,accessKey:"T","default":"",onChange:function(){g(this.getDialog())},setup:function(a,b){a==f&&this.setValue(b.getAttribute("alt"))},commit:function(a, -b){a==f?(this.getValue()||this.isChanged())&&b.setAttribute("alt",this.getValue()):4==a?b.setAttribute("alt",this.getValue()):8==a&&b.removeAttribute("alt")}},{type:"hbox",children:[{id:"basic",type:"vbox",children:[{type:"hbox",requiredContent:"img{width,height}",widths:["50%","50%"],children:[{type:"vbox",padding:1,children:[{type:"text",width:"45px",id:"txtWidth",label:c.lang.common.width,onKeyUp:w,onChange:function(){i.call(this,"advanced:txtdlgGenStyle")},validate:function(){var a=this.getValue().match(v); -(a=!!(a&&0!==parseInt(a[1],10)))||alert(c.lang.common.invalidWidth);return a},setup:y,commit:function(a,b,d){var c=this.getValue();a==f?(c?b.setStyle("width",CKEDITOR.tools.cssLength(c)):b.removeStyle("width"),!d&&b.removeAttribute("width")):4==a?c.match(k)?b.setStyle("width",CKEDITOR.tools.cssLength(c)):(a=this.getDialog().originalElement,"true"==a.getCustomData("isReady")&&b.setStyle("width",a.$.width+"px")):8==a&&(b.removeAttribute("width"),b.removeStyle("width"))}},{type:"text",id:"txtHeight", -width:"45px",label:c.lang.common.height,onKeyUp:w,onChange:function(){i.call(this,"advanced:txtdlgGenStyle")},validate:function(){var a=this.getValue().match(v);(a=!!(a&&0!==parseInt(a[1],10)))||alert(c.lang.common.invalidHeight);return a},setup:y,commit:function(a,b,d){var c=this.getValue();a==f?(c?b.setStyle("height",CKEDITOR.tools.cssLength(c)):b.removeStyle("height"),!d&&b.removeAttribute("height")):4==a?c.match(k)?b.setStyle("height",CKEDITOR.tools.cssLength(c)):(a=this.getDialog().originalElement, -"true"==a.getCustomData("isReady")&&b.setStyle("height",a.$.height+"px")):8==a&&(b.removeAttribute("height"),b.removeStyle("height"))}}]},{id:"ratioLock",type:"html",style:"margin-top:30px;width:40px;height:40px;",onLoad:function(){var a=CKEDITOR.document.getById(u),b=CKEDITOR.document.getById(p);a&&(a.on("click",function(a){x(this);a.data&&a.data.preventDefault()},this.getDialog()),a.on("mouseover",function(){this.addClass("cke_btn_over")},a),a.on("mouseout",function(){this.removeClass("cke_btn_over")}, -a));b&&(b.on("click",function(a){l(this);var b=this.originalElement,c=this.getValueOf("info","txtWidth");if(b.getCustomData("isReady")=="true"&&c){b=b.$.height/b.$.width*c;if(!isNaN(b)){this.setValueOf("info","txtHeight",Math.round(b));g(this)}}a.data&&a.data.preventDefault()},this.getDialog()),b.on("mouseover",function(){this.addClass("cke_btn_over")},b),b.on("mouseout",function(){this.removeClass("cke_btn_over")},b))},html:'<div><a href="javascript:void(0)" tabindex="-1" title="'+c.lang.image.lockRatio+ -'" class="cke_btn_locked" id="'+p+'" role="checkbox"><span class="cke_icon"></span><span class="cke_label">'+c.lang.image.lockRatio+'</span></a><a href="javascript:void(0)" tabindex="-1" title="'+c.lang.image.resetSize+'" class="cke_btn_reset" id="'+u+'" role="button"><span class="cke_label">'+c.lang.image.resetSize+"</span></a></div>"}]},{type:"vbox",padding:1,children:[{type:"text",id:"txtBorder",requiredContent:"img{border-width}",width:"60px",label:c.lang.image.border,"default":"",onKeyUp:function(){g(this.getDialog())}, -onChange:function(){i.call(this,"advanced:txtdlgGenStyle")},validate:CKEDITOR.dialog.validate.integer(c.lang.image.validateBorder),setup:function(a,b){if(a==f){var d;d=(d=(d=b.getStyle("border-width"))&&d.match(/^(\d+px)(?: \1 \1 \1)?$/))&&parseInt(d[1],10);isNaN(parseInt(d,10))&&(d=b.getAttribute("border"));this.setValue(d)}},commit:function(a,b,d){var c=parseInt(this.getValue(),10);a==f||4==a?(isNaN(c)?!c&&this.isChanged()&&b.removeStyle("border"):(b.setStyle("border-width",CKEDITOR.tools.cssLength(c)), -b.setStyle("border-style","solid")),!d&&a==f&&b.removeAttribute("border")):8==a&&(b.removeAttribute("border"),b.removeStyle("border-width"),b.removeStyle("border-style"),b.removeStyle("border-color"))}},{type:"text",id:"txtHSpace",requiredContent:"img{margin-left,margin-right}",width:"60px",label:c.lang.image.hSpace,"default":"",onKeyUp:function(){g(this.getDialog())},onChange:function(){i.call(this,"advanced:txtdlgGenStyle")},validate:CKEDITOR.dialog.validate.integer(c.lang.image.validateHSpace), -setup:function(a,b){if(a==f){var d,c;d=b.getStyle("margin-left");c=b.getStyle("margin-right");d=d&&d.match(o);c=c&&c.match(o);d=parseInt(d,10);c=parseInt(c,10);d=d==c&&d;isNaN(parseInt(d,10))&&(d=b.getAttribute("hspace"));this.setValue(d)}},commit:function(a,b,c){var e=parseInt(this.getValue(),10);a==f||4==a?(isNaN(e)?!e&&this.isChanged()&&(b.removeStyle("margin-left"),b.removeStyle("margin-right")):(b.setStyle("margin-left",CKEDITOR.tools.cssLength(e)),b.setStyle("margin-right",CKEDITOR.tools.cssLength(e))), -!c&&a==f&&b.removeAttribute("hspace")):8==a&&(b.removeAttribute("hspace"),b.removeStyle("margin-left"),b.removeStyle("margin-right"))}},{type:"text",id:"txtVSpace",requiredContent:"img{margin-top,margin-bottom}",width:"60px",label:c.lang.image.vSpace,"default":"",onKeyUp:function(){g(this.getDialog())},onChange:function(){i.call(this,"advanced:txtdlgGenStyle")},validate:CKEDITOR.dialog.validate.integer(c.lang.image.validateVSpace),setup:function(a,b){if(a==f){var c,e;c=b.getStyle("margin-top");e= -b.getStyle("margin-bottom");c=c&&c.match(o);e=e&&e.match(o);c=parseInt(c,10);e=parseInt(e,10);c=c==e&&c;isNaN(parseInt(c,10))&&(c=b.getAttribute("vspace"));this.setValue(c)}},commit:function(a,b,c){var e=parseInt(this.getValue(),10);a==f||4==a?(isNaN(e)?!e&&this.isChanged()&&(b.removeStyle("margin-top"),b.removeStyle("margin-bottom")):(b.setStyle("margin-top",CKEDITOR.tools.cssLength(e)),b.setStyle("margin-bottom",CKEDITOR.tools.cssLength(e))),!c&&a==f&&b.removeAttribute("vspace")):8==a&&(b.removeAttribute("vspace"), -b.removeStyle("margin-top"),b.removeStyle("margin-bottom"))}},{id:"cmbAlign",requiredContent:"img{float}",type:"select",widths:["35%","65%"],style:"width:90px",label:c.lang.common.align,"default":"",items:[[c.lang.common.notSet,""],[c.lang.common.alignLeft,"left"],[c.lang.common.alignRight,"right"]],onChange:function(){g(this.getDialog());i.call(this,"advanced:txtdlgGenStyle")},setup:function(a,b){if(a==f){var c=b.getStyle("float");switch(c){case "inherit":case "none":c=""}!c&&(c=(b.getAttribute("align")|| -"").toLowerCase());this.setValue(c)}},commit:function(a,b,c){var e=this.getValue();if(a==f||4==a){if(e?b.setStyle("float",e):b.removeStyle("float"),!c&&a==f)switch(e=(b.getAttribute("align")||"").toLowerCase(),e){case "left":case "right":b.removeAttribute("align")}}else 8==a&&b.removeStyle("float")}}]}]},{type:"vbox",height:"250px",children:[{type:"html",id:"htmlPreview",style:"width:95%;",html:"<div>"+CKEDITOR.tools.htmlEncode(c.lang.common.preview)+'<br><div id="'+m+'" class="ImagePreviewLoader" style="display:none"><div class="loading">&nbsp;</div></div><div class="ImagePreviewBox"><table><tr><td><a href="javascript:void(0)" target="_blank" onclick="return false;" id="'+ -A+'"><img id="'+z+'" alt="" /></a>'+(c.config.image_previewText||"Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas feugiat consequat diam. Maecenas metus. Vivamus diam purus, cursus a, commodo non, facilisis vitae, nulla. Aenean dictum lacinia tortor. Nunc iaculis, nibh non iaculis aliquam, orci felis euismod neque, sed ornare massa mauris sed velit. Nulla pretium mi et risus. Fusce mi pede, tempor id, cursus ac, ullamcorper nec, enim. Sed tortor. Curabitur molestie. Duis velit augue, condimentum at, ultrices a, luctus ut, orci. Donec pellentesque egestas eros. Integer cursus, augue in cursus faucibus, eros pede bibendum sem, in tempus tellus justo quis ligula. Etiam eget tortor. Vestibulum rutrum, est ut placerat elementum, lectus nisl aliquam velit, tempor aliquam eros nunc nonummy metus. In eros metus, gravida a, gravida sed, lobortis id, turpis. Ut ultrices, ipsum at venenatis fringilla, sem nulla lacinia tellus, eget aliquet turpis mauris non enim. Nam turpis. Suspendisse lacinia. Curabitur ac tortor ut ipsum egestas elementum. Nunc imperdiet gravida mauris.")+ -"</td></tr></table></div></div>"}]}]}]},{id:"Link",requiredContent:"a[href]",label:c.lang.image.linkTab,padding:0,elements:[{id:"txtUrl",type:"text",label:c.lang.common.url,style:"width: 100%","default":"",setup:function(a,b){if(2==a){var c=b.data("cke-saved-href");c||(c=b.getAttribute("href"));this.setValue(c)}},commit:function(a,b){if(2==a&&(this.getValue()||this.isChanged())){var d=decodeURI(this.getValue());b.data("cke-saved-href",d);b.setAttribute("href",d);if(this.getValue()||!c.config.image_removeLinkByEmptyURL)this.getDialog().addLink= -!0}}},{type:"button",id:"browse",filebrowser:{action:"Browse",target:"Link:txtUrl",url:c.config.filebrowserImageBrowseLinkUrl},style:"float:right",hidden:!0,label:c.lang.common.browseServer},{id:"cmbTarget",type:"select",requiredContent:"a[target]",label:c.lang.common.target,"default":"",items:[[c.lang.common.notSet,""],[c.lang.common.targetNew,"_blank"],[c.lang.common.targetTop,"_top"],[c.lang.common.targetSelf,"_self"],[c.lang.common.targetParent,"_parent"]],setup:function(a,b){2==a&&this.setValue(b.getAttribute("target")|| -"")},commit:function(a,b){2==a&&(this.getValue()||this.isChanged())&&b.setAttribute("target",this.getValue())}}]},{id:"Upload",hidden:!0,filebrowser:"uploadButton",label:c.lang.image.upload,elements:[{type:"file",id:"upload",label:c.lang.image.btnUpload,style:"height:40px",size:38},{type:"fileButton",id:"uploadButton",filebrowser:"info:txtUrl",label:c.lang.image.btnUpload,"for":["Upload","upload"]}]},{id:"advanced",label:c.lang.common.advancedTab,elements:[{type:"hbox",widths:["50%","25%","25%"], -children:[{type:"text",id:"linkId",requiredContent:"img[id]",label:c.lang.common.id,setup:function(a,b){a==f&&this.setValue(b.getAttribute("id"))},commit:function(a,b){a==f&&(this.getValue()||this.isChanged())&&b.setAttribute("id",this.getValue())}},{id:"cmbLangDir",type:"select",requiredContent:"img[dir]",style:"width : 100px;",label:c.lang.common.langDir,"default":"",items:[[c.lang.common.notSet,""],[c.lang.common.langDirLtr,"ltr"],[c.lang.common.langDirRtl,"rtl"]],setup:function(a,b){a==f&&this.setValue(b.getAttribute("dir"))}, -commit:function(a,b){a==f&&(this.getValue()||this.isChanged())&&b.setAttribute("dir",this.getValue())}},{type:"text",id:"txtLangCode",requiredContent:"img[lang]",label:c.lang.common.langCode,"default":"",setup:function(a,b){a==f&&this.setValue(b.getAttribute("lang"))},commit:function(a,b){a==f&&(this.getValue()||this.isChanged())&&b.setAttribute("lang",this.getValue())}}]},{type:"text",id:"txtGenLongDescr",requiredContent:"img[longdesc]",label:c.lang.common.longDescr,setup:function(a,b){a==f&&this.setValue(b.getAttribute("longDesc"))}, -commit:function(a,b){a==f&&(this.getValue()||this.isChanged())&&b.setAttribute("longDesc",this.getValue())}},{type:"hbox",widths:["50%","50%"],children:[{type:"text",id:"txtGenClass",requiredContent:"img(cke-xyz)",label:c.lang.common.cssClass,"default":"",setup:function(a,b){a==f&&this.setValue(b.getAttribute("class"))},commit:function(a,b){a==f&&(this.getValue()||this.isChanged())&&b.setAttribute("class",this.getValue())}},{type:"text",id:"txtGenTitle",requiredContent:"img[title]",label:c.lang.common.advisoryTitle, -"default":"",onChange:function(){g(this.getDialog())},setup:function(a,b){a==f&&this.setValue(b.getAttribute("title"))},commit:function(a,b){a==f?(this.getValue()||this.isChanged())&&b.setAttribute("title",this.getValue()):4==a?b.setAttribute("title",this.getValue()):8==a&&b.removeAttribute("title")}}]},{type:"text",id:"txtdlgGenStyle",requiredContent:"img{cke-xyz}",label:c.lang.common.cssStyle,validate:CKEDITOR.dialog.validate.inlineStyle(c.lang.common.invalidInlineStyle),"default":"",setup:function(a, -b){if(a==f){var c=b.getAttribute("style");!c&&b.$.style.cssText&&(c=b.$.style.cssText);this.setValue(c);var e=b.$.style.height,c=b.$.style.width,e=(e?e:"").match(k),c=(c?c:"").match(k);this.attributesInStyle={height:!!e,width:!!c}}},onChange:function(){i.call(this,"info:cmbFloat info:cmbAlign info:txtVSpace info:txtHSpace info:txtBorder info:txtWidth info:txtHeight".split(" "));g(this)},commit:function(a,b){a==f&&(this.getValue()||this.isChanged())&&b.setAttribute("style",this.getValue())}}]}]}}; -CKEDITOR.dialog.add("image",function(c){return r(c,"image")});CKEDITOR.dialog.add("imagebutton",function(c){return r(c,"imagebutton")})})(); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/image/images/noimage.png b/assets/plugins/ckeditor/plugins/image/images/noimage.png deleted file mode 100644 index 15981130..00000000 Binary files a/assets/plugins/ckeditor/plugins/image/images/noimage.png and /dev/null differ diff --git a/assets/plugins/ckeditor/plugins/link/dialogs/anchor.js b/assets/plugins/ckeditor/plugins/link/dialogs/anchor.js deleted file mode 100644 index 562417a6..00000000 --- a/assets/plugins/ckeditor/plugins/link/dialogs/anchor.js +++ /dev/null @@ -1,8 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.dialog.add("anchor",function(c){var d=function(a){this._.selectedElement=a;this.setValueOf("info","txtName",a.data("cke-saved-name")||"")};return{title:c.lang.link.anchor.title,minWidth:300,minHeight:60,onOk:function(){var a=CKEDITOR.tools.trim(this.getValueOf("info","txtName")),a={id:a,name:a,"data-cke-saved-name":a};if(this._.selectedElement)this._.selectedElement.data("cke-realelement")?(a=c.document.createElement("a",{attributes:a}),c.createFakeElement(a,"cke_anchor","anchor").replace(this._.selectedElement)): -this._.selectedElement.setAttributes(a);else{var b=c.getSelection(),b=b&&b.getRanges()[0];b.collapsed?(CKEDITOR.plugins.link.synAnchorSelector&&(a["class"]="cke_anchor_empty"),CKEDITOR.plugins.link.emptyAnchorFix&&(a.contenteditable="false",a["data-cke-editable"]=1),a=c.document.createElement("a",{attributes:a}),CKEDITOR.plugins.link.fakeAnchor&&(a=c.createFakeElement(a,"cke_anchor","anchor")),b.insertNode(a)):(CKEDITOR.env.ie&&9>CKEDITOR.env.version&&(a["class"]="cke_anchor"),a=new CKEDITOR.style({element:"a", -attributes:a}),a.type=CKEDITOR.STYLE_INLINE,c.applyStyle(a))}},onHide:function(){delete this._.selectedElement},onShow:function(){var a=c.getSelection(),b=a.getSelectedElement();if(b)CKEDITOR.plugins.link.fakeAnchor?((a=CKEDITOR.plugins.link.tryRestoreFakeAnchor(c,b))&&d.call(this,a),this._.selectedElement=b):b.is("a")&&b.hasAttribute("name")&&d.call(this,b);else if(b=CKEDITOR.plugins.link.getSelectedLink(c))d.call(this,b),a.selectElement(b);this.getContentElement("info","txtName").focus()},contents:[{id:"info", -label:c.lang.link.anchor.title,accessKey:"I",elements:[{type:"text",id:"txtName",label:c.lang.link.anchor.name,required:!0,validate:function(){return!this.getValue()?(alert(c.lang.link.anchor.errorName),!1):!0}}]}]}}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/link/dialogs/link.js b/assets/plugins/ckeditor/plugins/link/dialogs/link.js deleted file mode 100644 index 37085d3a..00000000 --- a/assets/plugins/ckeditor/plugins/link/dialogs/link.js +++ /dev/null @@ -1,37 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.dialog.add("link",function(n){var p,q;function r(a){return a.replace(/'/g,"\\$&")}function t(a){var g,c=p,d,e;g=[q,"("];for(var b=0;b<c.length;b++)d=c[b].toLowerCase(),e=a[d],0<b&&g.push(","),g.push("'",e?r(encodeURIComponent(a[d])):"","'");g.push(")");return g.join("")}function u(a){for(var g,c=a.length,d=[],e=0;e<c;e++)g=a.charCodeAt(e),d.push(g);return"String.fromCharCode("+d.join(",")+")"}function v(a){return(a=a.getAttribute("class"))?a.replace(/\s*(?:cke_anchor_empty|cke_anchor)(?:\s*$)?/g, -""):""}var w=CKEDITOR.plugins.link,s=function(){var a=this.getDialog(),g=a.getContentElement("target","popupFeatures"),a=a.getContentElement("target","linkTargetName"),c=this.getValue();if(g&&a)switch(g=g.getElement(),g.hide(),a.setValue(""),c){case "frame":a.setLabel(n.lang.link.targetFrameName);a.getElement().show();break;case "popup":g.show();a.setLabel(n.lang.link.targetPopupName);a.getElement().show();break;default:a.setValue(c),a.getElement().hide()}},x=/^javascript:/,y=/^mailto:([^?]+)(?:\?(.+))?$/, -z=/subject=([^;?:@&=$,\/]*)/,A=/body=([^;?:@&=$,\/]*)/,B=/^#(.*)$/,C=/^((?:http|https|ftp|news):\/\/)?(.*)$/,D=/^(_(?:self|top|parent|blank))$/,E=/^javascript:void\(location\.href='mailto:'\+String\.fromCharCode\(([^)]+)\)(?:\+'(.*)')?\)$/,F=/^javascript:([^(]+)\(([^)]+)\)$/,G=/\s*window.open\(\s*this\.href\s*,\s*(?:'([^']*)'|null)\s*,\s*'([^']*)'\s*\)\s*;\s*return\s*false;*\s*/,H=/(?:^|,)([^=]+)=(\d+|yes|no)/gi,I=function(a,g){var c=g&&(g.data("cke-saved-href")||g.getAttribute("href"))||"",d,e,b= -{};c.match(x)&&("encode"==o?c=c.replace(E,function(a,c,b){return"mailto:"+String.fromCharCode.apply(String,c.split(","))+(b&&b.replace(/\\'/g,"'"))}):o&&c.replace(F,function(a,c,d){if(c==q){b.type="email";for(var a=b.email={},c=/(^')|('$)/g,d=d.match(/[^,\s]+/g),e=d.length,g,f,h=0;h<e;h++)g=decodeURIComponent,f=d[h].replace(c,"").replace(/\\'/g,"'"),f=g(f),g=p[h].toLowerCase(),a[g]=f;a.address=[a.name,a.domain].join("@")}}));if(!b.type)if(d=c.match(B))b.type="anchor",b.anchor={},b.anchor.name=b.anchor.id= -d[1];else if(d=c.match(y)){e=c.match(z);c=c.match(A);b.type="email";var f=b.email={};f.address=d[1];e&&(f.subject=decodeURIComponent(e[1]));c&&(f.body=decodeURIComponent(c[1]))}else c&&(e=c.match(C))?(b.type="url",b.url={},b.url.protocol=e[1],b.url.url=e[2]):b.type="url";if(g){d=g.getAttribute("target");b.target={};b.adv={};if(d)d.match(D)?b.target.type=b.target.name=d:(b.target.type="frame",b.target.name=d);else if(d=(d=g.data("cke-pa-onclick")||g.getAttribute("onclick"))&&d.match(G)){b.target.type= -"popup";for(b.target.name=d[1];c=H.exec(d[2]);)("yes"==c[2]||"1"==c[2])&&!(c[1]in{height:1,width:1,top:1,left:1})?b.target[c[1]]=!0:isFinite(c[2])&&(b.target[c[1]]=c[2])}d=function(a,c){var d=g.getAttribute(c);null!==d&&(b.adv[a]=d||"")};d("advId","id");d("advLangDir","dir");d("advAccessKey","accessKey");b.adv.advName=g.data("cke-saved-name")||g.getAttribute("name")||"";d("advLangCode","lang");d("advTabIndex","tabindex");d("advTitle","title");d("advContentType","type");CKEDITOR.plugins.link.synAnchorSelector? -b.adv.advCSSClasses=v(g):d("advCSSClasses","class");d("advCharset","charset");d("advStyles","style");d("advRel","rel")}d=b.anchors=[];var h;if(CKEDITOR.plugins.link.emptyAnchorFix){f=a.document.getElementsByTag("a");c=0;for(e=f.count();c<e;c++)if(h=f.getItem(c),h.data("cke-saved-name")||h.hasAttribute("name"))d.push({name:h.data("cke-saved-name")||h.getAttribute("name"),id:h.getAttribute("id")})}else{f=new CKEDITOR.dom.nodeList(a.document.$.anchors);c=0;for(e=f.count();c<e;c++)h=f.getItem(c),d[c]= -{name:h.getAttribute("name"),id:h.getAttribute("id")}}if(CKEDITOR.plugins.link.fakeAnchor){f=a.document.getElementsByTag("img");c=0;for(e=f.count();c<e;c++)(h=CKEDITOR.plugins.link.tryRestoreFakeAnchor(a,f.getItem(c)))&&d.push({name:h.getAttribute("name"),id:h.getAttribute("id")})}this._.selectedElement=g;return b},j=function(a){a.target&&this.setValue(a.target[this.id]||"")},k=function(a){a.adv&&this.setValue(a.adv[this.id]||"")},l=function(a){a.target||(a.target={});a.target[this.id]=this.getValue()|| -""},m=function(a){a.adv||(a.adv={});a.adv[this.id]=this.getValue()||""},o=n.config.emailProtection||"";o&&"encode"!=o&&(q=p=void 0,o.replace(/^([^(]+)\(([^)]+)\)$/,function(a,b,c){q=b;p=[];c.replace(/[^,\s]+/g,function(a){p.push(a)})}));var i=n.lang.common,b=n.lang.link;return{title:b.title,minWidth:350,minHeight:230,contents:[{id:"info",label:b.info,title:b.info,elements:[{id:"linkType",type:"select",label:b.type,"default":"url",items:[[b.toUrl,"url"],[b.toAnchor,"anchor"],[b.toEmail,"email"]],onChange:function(){var a= -this.getDialog(),b=["urlOptions","anchorOptions","emailOptions"],c=this.getValue(),d=a.definition.getContents("upload"),d=d&&d.hidden;if(c=="url"){n.config.linkShowTargetTab&&a.showPage("target");d||a.showPage("upload")}else{a.hidePage("target");d||a.hidePage("upload")}for(d=0;d<b.length;d++){var e=a.getContentElement("info",b[d]);if(e){e=e.getElement().getParent().getParent();b[d]==c+"Options"?e.show():e.hide()}}a.layout()},setup:function(a){a.type&&this.setValue(a.type)},commit:function(a){a.type= -this.getValue()}},{type:"vbox",id:"urlOptions",children:[{type:"hbox",widths:["25%","75%"],children:[{id:"protocol",type:"select",label:i.protocol,"default":"http://",items:[["http://‎","http://"],["https://‎","https://"],["ftp://‎","ftp://"],["news://‎","news://"],[b.other,""]],setup:function(a){a.url&&this.setValue(a.url.protocol||"")},commit:function(a){if(!a.url)a.url={};a.url.protocol=this.getValue()}},{type:"text",id:"url",label:i.url,required:!0,onLoad:function(){this.allowOnChange=true},onKeyUp:function(){this.allowOnChange= -false;var a=this.getDialog().getContentElement("info","protocol"),b=this.getValue(),c=/^((javascript:)|[#\/\.\?])/i,d=/^(http|https|ftp|news):\/\/(?=.)/i.exec(b);if(d){this.setValue(b.substr(d[0].length));a.setValue(d[0].toLowerCase())}else c.test(b)&&a.setValue("");this.allowOnChange=true},onChange:function(){if(this.allowOnChange)this.onKeyUp()},validate:function(){var a=this.getDialog();if(a.getContentElement("info","linkType")&&a.getValueOf("info","linkType")!="url")return true;if(/javascript\:/.test(this.getValue())){alert(i.invalidValue); -return false}return this.getDialog().fakeObj?true:CKEDITOR.dialog.validate.notEmpty(b.noUrl).apply(this)},setup:function(a){this.allowOnChange=false;a.url&&this.setValue(a.url.url);this.allowOnChange=true},commit:function(a){this.onChange();if(!a.url)a.url={};a.url.url=this.getValue();this.allowOnChange=false}}],setup:function(){this.getDialog().getContentElement("info","linkType")||this.getElement().show()}},{type:"button",id:"browse",hidden:"true",filebrowser:"info:url",label:i.browseServer}]}, -{type:"vbox",id:"anchorOptions",width:260,align:"center",padding:0,children:[{type:"fieldset",id:"selectAnchorText",label:b.selectAnchor,setup:function(a){a.anchors.length>0?this.getElement().show():this.getElement().hide()},children:[{type:"hbox",id:"selectAnchor",children:[{type:"select",id:"anchorName","default":"",label:b.anchorName,style:"width: 100%;",items:[[""]],setup:function(a){this.clear();this.add("");for(var b=0;b<a.anchors.length;b++)a.anchors[b].name&&this.add(a.anchors[b].name);a.anchor&& -this.setValue(a.anchor.name);(a=this.getDialog().getContentElement("info","linkType"))&&a.getValue()=="email"&&this.focus()},commit:function(a){if(!a.anchor)a.anchor={};a.anchor.name=this.getValue()}},{type:"select",id:"anchorId","default":"",label:b.anchorId,style:"width: 100%;",items:[[""]],setup:function(a){this.clear();this.add("");for(var b=0;b<a.anchors.length;b++)a.anchors[b].id&&this.add(a.anchors[b].id);a.anchor&&this.setValue(a.anchor.id)},commit:function(a){if(!a.anchor)a.anchor={};a.anchor.id= -this.getValue()}}],setup:function(a){a.anchors.length>0?this.getElement().show():this.getElement().hide()}}]},{type:"html",id:"noAnchors",style:"text-align: center;",html:'<div role="note" tabIndex="-1">'+CKEDITOR.tools.htmlEncode(b.noAnchors)+"</div>",focus:!0,setup:function(a){a.anchors.length<1?this.getElement().show():this.getElement().hide()}}],setup:function(){this.getDialog().getContentElement("info","linkType")||this.getElement().hide()}},{type:"vbox",id:"emailOptions",padding:1,children:[{type:"text", -id:"emailAddress",label:b.emailAddress,required:!0,validate:function(){var a=this.getDialog();return!a.getContentElement("info","linkType")||a.getValueOf("info","linkType")!="email"?true:CKEDITOR.dialog.validate.notEmpty(b.noEmail).apply(this)},setup:function(a){a.email&&this.setValue(a.email.address);(a=this.getDialog().getContentElement("info","linkType"))&&a.getValue()=="email"&&this.select()},commit:function(a){if(!a.email)a.email={};a.email.address=this.getValue()}},{type:"text",id:"emailSubject", -label:b.emailSubject,setup:function(a){a.email&&this.setValue(a.email.subject)},commit:function(a){if(!a.email)a.email={};a.email.subject=this.getValue()}},{type:"textarea",id:"emailBody",label:b.emailBody,rows:3,"default":"",setup:function(a){a.email&&this.setValue(a.email.body)},commit:function(a){if(!a.email)a.email={};a.email.body=this.getValue()}}],setup:function(){this.getDialog().getContentElement("info","linkType")||this.getElement().hide()}}]},{id:"target",requiredContent:"a[target]",label:b.target, -title:b.target,elements:[{type:"hbox",widths:["50%","50%"],children:[{type:"select",id:"linkTargetType",label:i.target,"default":"notSet",style:"width : 100%;",items:[[i.notSet,"notSet"],[b.targetFrame,"frame"],[b.targetPopup,"popup"],[i.targetNew,"_blank"],[i.targetTop,"_top"],[i.targetSelf,"_self"],[i.targetParent,"_parent"]],onChange:s,setup:function(a){a.target&&this.setValue(a.target.type||"notSet");s.call(this)},commit:function(a){if(!a.target)a.target={};a.target.type=this.getValue()}},{type:"text", -id:"linkTargetName",label:b.targetFrameName,"default":"",setup:function(a){a.target&&this.setValue(a.target.name)},commit:function(a){if(!a.target)a.target={};a.target.name=this.getValue().replace(/\W/gi,"")}}]},{type:"vbox",width:"100%",align:"center",padding:2,id:"popupFeatures",children:[{type:"fieldset",label:b.popupFeatures,children:[{type:"hbox",children:[{type:"checkbox",id:"resizable",label:b.popupResizable,setup:j,commit:l},{type:"checkbox",id:"status",label:b.popupStatusBar,setup:j,commit:l}]}, -{type:"hbox",children:[{type:"checkbox",id:"location",label:b.popupLocationBar,setup:j,commit:l},{type:"checkbox",id:"toolbar",label:b.popupToolbar,setup:j,commit:l}]},{type:"hbox",children:[{type:"checkbox",id:"menubar",label:b.popupMenuBar,setup:j,commit:l},{type:"checkbox",id:"fullscreen",label:b.popupFullScreen,setup:j,commit:l}]},{type:"hbox",children:[{type:"checkbox",id:"scrollbars",label:b.popupScrollBars,setup:j,commit:l},{type:"checkbox",id:"dependent",label:b.popupDependent,setup:j,commit:l}]}, -{type:"hbox",children:[{type:"text",widths:["50%","50%"],labelLayout:"horizontal",label:i.width,id:"width",setup:j,commit:l},{type:"text",labelLayout:"horizontal",widths:["50%","50%"],label:b.popupLeft,id:"left",setup:j,commit:l}]},{type:"hbox",children:[{type:"text",labelLayout:"horizontal",widths:["50%","50%"],label:i.height,id:"height",setup:j,commit:l},{type:"text",labelLayout:"horizontal",label:b.popupTop,widths:["50%","50%"],id:"top",setup:j,commit:l}]}]}]}]},{id:"upload",label:b.upload,title:b.upload, -hidden:!0,filebrowser:"uploadButton",elements:[{type:"file",id:"upload",label:i.upload,style:"height:40px",size:29},{type:"fileButton",id:"uploadButton",label:i.uploadSubmit,filebrowser:"info:url","for":["upload","upload"]}]},{id:"advanced",label:b.advanced,title:b.advanced,elements:[{type:"vbox",padding:1,children:[{type:"hbox",widths:["45%","35%","20%"],children:[{type:"text",id:"advId",requiredContent:"a[id]",label:b.id,setup:k,commit:m},{type:"select",id:"advLangDir",requiredContent:"a[dir]", -label:b.langDir,"default":"",style:"width:110px",items:[[i.notSet,""],[b.langDirLTR,"ltr"],[b.langDirRTL,"rtl"]],setup:k,commit:m},{type:"text",id:"advAccessKey",requiredContent:"a[accesskey]",width:"80px",label:b.acccessKey,maxLength:1,setup:k,commit:m}]},{type:"hbox",widths:["45%","35%","20%"],children:[{type:"text",label:b.name,id:"advName",requiredContent:"a[name]",setup:k,commit:m},{type:"text",label:b.langCode,id:"advLangCode",requiredContent:"a[lang]",width:"110px","default":"",setup:k,commit:m}, -{type:"text",label:b.tabIndex,id:"advTabIndex",requiredContent:"a[tabindex]",width:"80px",maxLength:5,setup:k,commit:m}]}]},{type:"vbox",padding:1,children:[{type:"hbox",widths:["45%","55%"],children:[{type:"text",label:b.advisoryTitle,requiredContent:"a[title]","default":"",id:"advTitle",setup:k,commit:m},{type:"text",label:b.advisoryContentType,requiredContent:"a[type]","default":"",id:"advContentType",setup:k,commit:m}]},{type:"hbox",widths:["45%","55%"],children:[{type:"text",label:b.cssClasses, -requiredContent:"a(cke-xyz)","default":"",id:"advCSSClasses",setup:k,commit:m},{type:"text",label:b.charset,requiredContent:"a[charset]","default":"",id:"advCharset",setup:k,commit:m}]},{type:"hbox",widths:["45%","55%"],children:[{type:"text",label:b.rel,requiredContent:"a[rel]","default":"",id:"advRel",setup:k,commit:m},{type:"text",label:b.styles,requiredContent:"a{cke-xyz}","default":"",id:"advStyles",validate:CKEDITOR.dialog.validate.inlineStyle(n.lang.common.invalidInlineStyle),setup:k,commit:m}]}]}]}], -onShow:function(){var a=this.getParentEditor(),b=a.getSelection(),c=null;(c=w.getSelectedLink(a))&&c.hasAttribute("href")?b.getSelectedElement()||b.selectElement(c):c=null;this.setupContent(I.apply(this,[a,c]))},onOk:function(){var a={},b=[],c={},d=this.getParentEditor();this.commitContent(c);switch(c.type||"url"){case "url":var e=c.url&&c.url.protocol!=void 0?c.url.protocol:"http://",i=c.url&&CKEDITOR.tools.trim(c.url.url)||"";a["data-cke-saved-href"]=i.indexOf("/")===0?i:e+i;break;case "anchor":e= -c.anchor&&c.anchor.id;a["data-cke-saved-href"]="#"+(c.anchor&&c.anchor.name||e||"");break;case "email":var f=c.email,e=f.address;switch(o){case "":case "encode":var i=encodeURIComponent(f.subject||""),h=encodeURIComponent(f.body||""),f=[];i&&f.push("subject="+i);h&&f.push("body="+h);f=f.length?"?"+f.join("&"):"";if(o=="encode"){e=["javascript:void(location.href='mailto:'+",u(e)];f&&e.push("+'",r(f),"'");e.push(")")}else e=["mailto:",e,f];break;default:e=e.split("@",2);f.name=e[0];f.domain=e[1];e= -["javascript:",t(f)]}a["data-cke-saved-href"]=e.join("")}if(c.target)if(c.target.type=="popup"){for(var e=["window.open(this.href, '",c.target.name||"","', '"],j=["resizable","status","location","toolbar","menubar","fullscreen","scrollbars","dependent"],i=j.length,f=function(a){c.target[a]&&j.push(a+"="+c.target[a])},h=0;h<i;h++)j[h]=j[h]+(c.target[j[h]]?"=yes":"=no");f("width");f("left");f("height");f("top");e.push(j.join(","),"'); return false;");a["data-cke-pa-onclick"]=e.join("");b.push("target")}else{c.target.type!= -"notSet"&&c.target.name?a.target=c.target.name:b.push("target");b.push("data-cke-pa-onclick","onclick")}if(c.adv){e=function(d,e){var f=c.adv[d];f?a[e]=f:b.push(e)};e("advId","id");e("advLangDir","dir");e("advAccessKey","accessKey");c.adv.advName?a.name=a["data-cke-saved-name"]=c.adv.advName:b=b.concat(["data-cke-saved-name","name"]);e("advLangCode","lang");e("advTabIndex","tabindex");e("advTitle","title");e("advContentType","type");e("advCSSClasses","class");e("advCharset","charset");e("advStyles", -"style");e("advRel","rel")}e=d.getSelection();a.href=a["data-cke-saved-href"];if(this._.selectedElement){d=this._.selectedElement;i=d.data("cke-saved-href");f=d.getHtml();d.setAttributes(a);d.removeAttributes(b);c.adv&&(c.adv.advName&&CKEDITOR.plugins.link.synAnchorSelector)&&d.addClass(d.getChildCount()?"cke_anchor":"cke_anchor_empty");if(i==f||c.type=="email"&&f.indexOf("@")!=-1){d.setHtml(c.type=="email"?c.email.address:a["data-cke-saved-href"]);e.selectElement(d)}delete this._.selectedElement}else{e= -e.getRanges()[0];if(e.collapsed){d=new CKEDITOR.dom.text(c.type=="email"?c.email.address:a["data-cke-saved-href"],d.document);e.insertNode(d);e.selectNodeContents(d)}d=new CKEDITOR.style({element:"a",attributes:a});d.type=CKEDITOR.STYLE_INLINE;d.applyToRange(e);e.select()}},onLoad:function(){n.config.linkShowAdvancedTab||this.hidePage("advanced");n.config.linkShowTargetTab||this.hidePage("target")},onFocus:function(){var a=this.getContentElement("info","linkType");if(a&&a.getValue()=="url"){a=this.getContentElement("info", -"url");a.select()}}}}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/link/images/anchor.png b/assets/plugins/ckeditor/plugins/link/images/anchor.png deleted file mode 100644 index c946ba54..00000000 Binary files a/assets/plugins/ckeditor/plugins/link/images/anchor.png and /dev/null differ diff --git a/assets/plugins/ckeditor/plugins/link/images/hidpi/anchor.png b/assets/plugins/ckeditor/plugins/link/images/hidpi/anchor.png deleted file mode 100644 index 908b9fa3..00000000 Binary files a/assets/plugins/ckeditor/plugins/link/images/hidpi/anchor.png and /dev/null differ diff --git a/assets/plugins/ckeditor/plugins/magicline/images/hidpi/icon.png b/assets/plugins/ckeditor/plugins/magicline/images/hidpi/icon.png deleted file mode 100644 index 73a5f437..00000000 Binary files a/assets/plugins/ckeditor/plugins/magicline/images/hidpi/icon.png and /dev/null differ diff --git a/assets/plugins/ckeditor/plugins/magicline/images/icon.png b/assets/plugins/ckeditor/plugins/magicline/images/icon.png deleted file mode 100644 index b5de5ba9..00000000 Binary files a/assets/plugins/ckeditor/plugins/magicline/images/icon.png and /dev/null differ diff --git a/assets/plugins/ckeditor/plugins/pastefromword/filter/default.js b/assets/plugins/ckeditor/plugins/pastefromword/filter/default.js deleted file mode 100644 index cc7a2e93..00000000 --- a/assets/plugins/ckeditor/plugins/pastefromword/filter/default.js +++ /dev/null @@ -1,31 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -(function(){function y(a){for(var a=a.toUpperCase(),c=z.length,b=0,f=0;f<c;++f)for(var d=z[f],e=d[1].length;a.substr(0,e)==d[1];a=a.substr(e))b+=d[0];return b}function A(a){for(var a=a.toUpperCase(),c=B.length,b=1,f=1;0<a.length;f*=c)b+=B.indexOf(a.charAt(a.length-1))*f,a=a.substr(0,a.length-1);return b}var C=CKEDITOR.htmlParser.fragment.prototype,o=CKEDITOR.htmlParser.element.prototype;C.onlyChild=o.onlyChild=function(){var a=this.children;return 1==a.length&&a[0]||null};o.removeAnyChildWithName= -function(a){for(var c=this.children,b=[],f,d=0;d<c.length;d++)f=c[d],f.name&&(f.name==a&&(b.push(f),c.splice(d--,1)),b=b.concat(f.removeAnyChildWithName(a)));return b};o.getAncestor=function(a){for(var c=this.parent;c&&(!c.name||!c.name.match(a));)c=c.parent;return c};C.firstChild=o.firstChild=function(a){for(var c,b=0;b<this.children.length;b++)if(c=this.children[b],a(c)||c.name&&(c=c.firstChild(a)))return c;return null};o.addStyle=function(a,c,b){var f="";if("string"==typeof c)f+=a+":"+c+";";else{if("object"== -typeof a)for(var d in a)a.hasOwnProperty(d)&&(f+=d+":"+a[d]+";");else f+=a;b=c}this.attributes||(this.attributes={});a=this.attributes.style||"";a=(b?[f,a]:[a,f]).join(";");this.attributes.style=a.replace(/^;|;(?=;)/,"")};o.getStyle=function(a){var c=this.attributes.style;if(c)return c=CKEDITOR.tools.parseCssText(c,1),c[a]};CKEDITOR.dtd.parentOf=function(a){var c={},b;for(b in this)-1==b.indexOf("$")&&this[b][a]&&(c[b]=1);return c};var H=/^([.\d]*)+(em|ex|px|gd|rem|vw|vh|vm|ch|mm|cm|in|pt|pc|deg|rad|ms|s|hz|khz){1}?/i, -D=/^(?:\b0[^\s]*\s*){1,4}$/,x={ol:{decimal:/\d+/,"lower-roman":/^m{0,4}(cm|cd|d?c{0,3})(xc|xl|l?x{0,3})(ix|iv|v?i{0,3})$/,"upper-roman":/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/,"lower-alpha":/^[a-z]+$/,"upper-alpha":/^[A-Z]+$/},ul:{disc:/[l\u00B7\u2002]/,circle:/[\u006F\u00D8]/,square:/[\u006E\u25C6]/}},z=[[1E3,"M"],[900,"CM"],[500,"D"],[400,"CD"],[100,"C"],[90,"XC"],[50,"L"],[40,"XL"],[10,"X"],[9,"IX"],[5,"V"],[4,"IV"],[1,"I"]],B="ABCDEFGHIJKLMNOPQRSTUVWXYZ",s=0,t=null,w,E=CKEDITOR.plugins.pastefromword= -{utils:{createListBulletMarker:function(a,c){var b=new CKEDITOR.htmlParser.element("cke:listbullet");b.attributes={"cke:listsymbol":a[0]};b.add(new CKEDITOR.htmlParser.text(c));return b},isListBulletIndicator:function(a){if(/mso-list\s*:\s*Ignore/i.test(a.attributes&&a.attributes.style))return!0},isContainingOnlySpaces:function(a){var c;return(c=a.onlyChild())&&/^(:?\s|&nbsp;)+$/.test(c.value)},resolveList:function(a){var c=a.attributes,b;if((b=a.removeAnyChildWithName("cke:listbullet"))&&b.length&& -(b=b[0]))return a.name="cke:li",c.style&&(c.style=E.filters.stylesFilter([["text-indent"],["line-height"],[/^margin(:?-left)?$/,null,function(a){a=a.split(" ");a=CKEDITOR.tools.convertToPx(a[3]||a[1]||a[0]);!s&&(null!==t&&a>t)&&(s=a-t);t=a;c["cke:indent"]=s&&Math.ceil(a/s)+1||1}],[/^mso-list$/,null,function(a){var a=a.split(" "),b=Number(a[0].match(/\d+/)),a=Number(a[1].match(/\d+/));1==a&&(b!==w&&(c["cke:reset"]=1),w=b);c["cke:indent"]=a}]])(c.style,a)||""),c["cke:indent"]||(t=0,c["cke:indent"]= -1),CKEDITOR.tools.extend(c,b.attributes),!0;w=t=s=null;return!1},getStyleComponents:function(){var a=CKEDITOR.dom.element.createFromHtml('<div style="position:absolute;left:-9999px;top:-9999px;"></div>',CKEDITOR.document);CKEDITOR.document.getBody().append(a);return function(c,b,f){a.setStyle(c,b);for(var c={},b=f.length,d=0;d<b;d++)c[f[d]]=a.getStyle(f[d]);return c}}(),listDtdParents:CKEDITOR.dtd.parentOf("ol")},filters:{flattenList:function(a,c){var c="number"==typeof c?c:1,b=a.attributes,f;switch(b.type){case "a":f= -"lower-alpha";break;case "1":f="decimal"}for(var d=a.children,e,h=0;h<d.length;h++)if(e=d[h],e.name in CKEDITOR.dtd.$listItem){var j=e.attributes,g=e.children,m=g[g.length-1];m.name in CKEDITOR.dtd.$list&&(a.add(m,h+1),--g.length||d.splice(h--,1));e.name="cke:li";b.start&&!h&&(j.value=b.start);E.filters.stylesFilter([["tab-stops",null,function(a){(a=a.split(" ")[1].match(H))&&(t=CKEDITOR.tools.convertToPx(a[0]))}],1==c?["mso-list",null,function(a){a=a.split(" ");a=Number(a[0].match(/\d+/));a!==w&& -(j["cke:reset"]=1);w=a}]:null])(j.style);j["cke:indent"]=c;j["cke:listtype"]=a.name;j["cke:list-style-type"]=f}else if(e.name in CKEDITOR.dtd.$list){arguments.callee.apply(this,[e,c+1]);d=d.slice(0,h).concat(e.children).concat(d.slice(h+1));a.children=[];e=0;for(g=d.length;e<g;e++)a.add(d[e]);d=a.children}delete a.name;b["cke:list"]=1},assembleList:function(a){for(var c=a.children,b,f,d,e,h,j,a=[],g,m,i,l,k,p,n=0;n<c.length;n++)if(b=c[n],"cke:li"==b.name)if(b.name="li",f=b.attributes,i=(i=f["cke:listsymbol"])&& -i.match(/^(?:[(]?)([^\s]+?)([.)]?)$/),l=k=p=null,f["cke:ignored"])c.splice(n--,1);else{f["cke:reset"]&&(j=e=h=null);d=Number(f["cke:indent"]);d!=e&&(m=g=null);if(i){if(m&&x[m][g].test(i[1]))l=m,k=g;else for(var q in x)for(var u in x[q])if(x[q][u].test(i[1]))if("ol"==q&&/alpha|roman/.test(u)){if(g=/roman/.test(u)?y(i[1]):A(i[1]),!p||g<p)p=g,l=q,k=u}else{l=q;k=u;break}!l&&(l=i[2]?"ol":"ul")}else l=f["cke:listtype"]||"ol",k=f["cke:list-style-type"];m=l;g=k||("ol"==l?"decimal":"disc");k&&k!=("ol"==l? -"decimal":"disc")&&b.addStyle("list-style-type",k);if("ol"==l&&i){switch(k){case "decimal":p=Number(i[1]);break;case "lower-roman":case "upper-roman":p=y(i[1]);break;case "lower-alpha":case "upper-alpha":p=A(i[1])}b.attributes.value=p}if(j){if(d>e)a.push(j=new CKEDITOR.htmlParser.element(l)),j.add(b),h.add(j);else{if(d<e){e-=d;for(var r;e--&&(r=j.parent);)j=r.parent}j.add(b)}c.splice(n--,1)}else a.push(j=new CKEDITOR.htmlParser.element(l)),j.add(b),c[n]=j;h=b;e=d}else j&&(j=e=h=null);for(n=0;n<a.length;n++)if(j= -a[n],q=j.children,g=g=void 0,u=j.children.length,r=g=void 0,c=/list-style-type:(.*?)(?:;|$)/,e=CKEDITOR.plugins.pastefromword.filters.stylesFilter,g=j.attributes,!c.exec(g.style)){for(h=0;h<u;h++)if(g=q[h],g.attributes.value&&Number(g.attributes.value)==h+1&&delete g.attributes.value,g=c.exec(g.attributes.style))if(g[1]==r||!r)r=g[1];else{r=null;break}if(r){for(h=0;h<u;h++)g=q[h].attributes,g.style&&(g.style=e([["list-style-type"]])(g.style)||"");j.addStyle("list-style-type",r)}}w=t=s=null},falsyFilter:function(){return!1}, -stylesFilter:function(a,c){return function(b,f){var d=[];(b||"").replace(/&quot;/g,'"').replace(/\s*([^ :;]+)\s*:\s*([^;]+)\s*(?=;|$)/g,function(b,e,g){e=e.toLowerCase();"font-family"==e&&(g=g.replace(/["']/g,""));for(var m,i,l,k=0;k<a.length;k++)if(a[k]&&(b=a[k][0],m=a[k][1],i=a[k][2],l=a[k][3],e.match(b)&&(!m||g.match(m)))){e=l||e;c&&(i=i||g);"function"==typeof i&&(i=i(g,f,e));i&&i.push&&(e=i[0],i=i[1]);"string"==typeof i&&d.push([e,i]);return}!c&&d.push([e,g])});for(var e=0;e<d.length;e++)d[e]= -d[e].join(":");return d.length?d.join(";")+";":!1}},elementMigrateFilter:function(a,c){return a?function(b){var f=c?(new CKEDITOR.style(a,c))._.definition:a;b.name=f.element;CKEDITOR.tools.extend(b.attributes,CKEDITOR.tools.clone(f.attributes));b.addStyle(CKEDITOR.style.getStyleText(f))}:function(){}},styleMigrateFilter:function(a,c){var b=this.elementMigrateFilter;return a?function(f,d){var e=new CKEDITOR.htmlParser.element(null),h={};h[c]=f;b(a,h)(e);e.children=d.children;d.children=[e];e.filter= -function(){};e.parent=d}:function(){}},bogusAttrFilter:function(a,c){if(-1==c.name.indexOf("cke:"))return!1},applyStyleFilter:null},getRules:function(a,c){var b=CKEDITOR.dtd,f=CKEDITOR.tools.extend({},b.$block,b.$listItem,b.$tableContent),d=a.config,e=this.filters,h=e.falsyFilter,j=e.stylesFilter,g=e.elementMigrateFilter,m=CKEDITOR.tools.bind(this.filters.styleMigrateFilter,this.filters),i=this.utils.createListBulletMarker,l=e.flattenList,k=e.assembleList,p=this.utils.isListBulletIndicator,n=this.utils.isContainingOnlySpaces, -q=this.utils.resolveList,u=function(a){a=CKEDITOR.tools.convertToPx(a);return isNaN(a)?a:a+"px"},r=this.utils.getStyleComponents,t=this.utils.listDtdParents,o=!1!==d.pasteFromWordRemoveFontStyles,s=!1!==d.pasteFromWordRemoveStyles;return{elementNames:[[/meta|link|script/,""]],root:function(a){a.filterChildren(c);k(a)},elements:{"^":function(a){var c;CKEDITOR.env.gecko&&(c=e.applyStyleFilter)&&c(a)},$:function(a){var v=a.name||"",e=a.attributes;v in f&&e.style&&(e.style=j([[/^(:?width|height)$/,null, -u]])(e.style)||"");if(v.match(/h\d/)){a.filterChildren(c);if(q(a))return;g(d["format_"+v])(a)}else if(v in b.$inline)a.filterChildren(c),n(a)&&delete a.name;else if(-1!=v.indexOf(":")&&-1==v.indexOf("cke")){a.filterChildren(c);if("v:imagedata"==v){if(v=a.attributes["o:href"])a.attributes.src=v;a.name="img";return}delete a.name}v in t&&(a.filterChildren(c),k(a))},style:function(a){if(CKEDITOR.env.gecko){var a=(a=a.onlyChild().value.match(/\/\* Style Definitions \*\/([\s\S]*?)\/\*/))&&a[1],c={};a&& -(a.replace(/[\n\r]/g,"").replace(/(.+?)\{(.+?)\}/g,function(a,b,F){for(var b=b.split(","),a=b.length,d=0;d<a;d++)CKEDITOR.tools.trim(b[d]).replace(/^(\w+)(\.[\w-]+)?$/g,function(a,b,d){b=b||"*";d=d.substring(1,d.length);d.match(/MsoNormal/)||(c[b]||(c[b]={}),d?c[b][d]=F:c[b]=F)})}),e.applyStyleFilter=function(a){var b=c["*"]?"*":a.name,d=a.attributes&&a.attributes["class"];b in c&&(b=c[b],"object"==typeof b&&(b=b[d]),b&&a.addStyle(b,!0))})}return!1},p:function(a){if(/MsoListParagraph/i.exec(a.attributes["class"])|| -a.getStyle("mso-list")){var b=a.firstChild(function(a){return a.type==CKEDITOR.NODE_TEXT&&!n(a.parent)});(b=b&&b.parent)&&b.addStyle("mso-list","Ignore")}a.filterChildren(c);q(a)||(d.enterMode==CKEDITOR.ENTER_BR?(delete a.name,a.add(new CKEDITOR.htmlParser.element("br"))):g(d["format_"+(d.enterMode==CKEDITOR.ENTER_P?"p":"div")])(a))},div:function(a){var c=a.onlyChild();if(c&&"table"==c.name){var b=a.attributes;c.attributes=CKEDITOR.tools.extend(c.attributes,b);b.style&&c.addStyle(b.style);c=new CKEDITOR.htmlParser.element("div"); -c.addStyle("clear","both");a.add(c);delete a.name}},td:function(a){a.getAncestor("thead")&&(a.name="th")},ol:l,ul:l,dl:l,font:function(a){if(p(a.parent))delete a.name;else{a.filterChildren(c);var b=a.attributes,d=b.style,e=a.parent;"font"==e.name?(CKEDITOR.tools.extend(e.attributes,a.attributes),d&&e.addStyle(d),delete a.name):(d=d||"",b.color&&("#000000"!=b.color&&(d+="color:"+b.color+";"),delete b.color),b.face&&(d+="font-family:"+b.face+";",delete b.face),b.size&&(d+="font-size:"+(3<b.size?"large": -3>b.size?"small":"medium")+";",delete b.size),a.name="span",a.addStyle(d))}},span:function(a){if(p(a.parent))return!1;a.filterChildren(c);if(n(a))return delete a.name,null;if(p(a)){var b=a.firstChild(function(a){return a.value||"img"==a.name}),e=(b=b&&(b.value||"l."))&&b.match(/^(?:[(]?)([^\s]+?)([.)]?)$/);if(e)return b=i(e,b),(a=a.getAncestor("span"))&&/ mso-hide:\s*all|display:\s*none /.test(a.attributes.style)&&(b.attributes["cke:ignored"]=1),b}if(e=(b=a.attributes)&&b.style)b.style=j([["line-height"], -[/^font-family$/,null,!o?m(d.font_style,"family"):null],[/^font-size$/,null,!o?m(d.fontSize_style,"size"):null],[/^color$/,null,!o?m(d.colorButton_foreStyle,"color"):null],[/^background-color$/,null,!o?m(d.colorButton_backStyle,"color"):null]])(e,a)||"";b.style||delete b.style;CKEDITOR.tools.isEmpty(b)&&delete a.name;return null},b:g(d.coreStyles_bold),i:g(d.coreStyles_italic),u:g(d.coreStyles_underline),s:g(d.coreStyles_strike),sup:g(d.coreStyles_superscript),sub:g(d.coreStyles_subscript),a:function(a){a= -a.attributes;a.href&&a.href.match(/^file:\/\/\/[\S]+#/i)&&(a.href=a.href.replace(/^file:\/\/\/[^#]+/i,""))},"cke:listbullet":function(a){a.getAncestor(/h\d/)&&!d.pasteFromWordNumberedHeadingToList&&delete a.name}},attributeNames:[[/^onmouse(:?out|over)/,""],[/^onload$/,""],[/(?:v|o):\w+/,""],[/^lang/,""]],attributes:{style:j(s?[[/^list-style-type$/,null],[/^margin$|^margin-(?!bottom|top)/,null,function(a,b,c){if(b.name in{p:1,div:1}){b="ltr"==d.contentsLangDirection?"margin-left":"margin-right";if("margin"== -c)a=r(c,a,[b])[b];else if(c!=b)return null;if(a&&!D.test(a))return[b,a]}return null}],[/^clear$/],[/^border.*|margin.*|vertical-align|float$/,null,function(a,b){if("img"==b.name)return a}],[/^width|height$/,null,function(a,b){if(b.name in{table:1,td:1,th:1,img:1})return a}]]:[[/^mso-/],[/-color$/,null,function(a){if("transparent"==a)return!1;if(CKEDITOR.env.gecko)return a.replace(/-moz-use-text-color/g,"transparent")}],[/^margin$/,D],["text-indent","0cm"],["page-break-before"],["tab-stops"],["display", -"none"],o?[/font-?/]:null],s),width:function(a,c){if(c.name in b.$tableContent)return!1},border:function(a,c){if(c.name in b.$tableContent)return!1},"class":h,bgcolor:h,valign:s?h:function(a,b){b.addStyle("vertical-align",a);return!1}},comment:!CKEDITOR.env.ie?function(a,b){var c=a.match(/<img.*?>/),d=a.match(/^\[if !supportLists\]([\s\S]*?)\[endif\]$/);return d?(d=(c=d[1]||c&&"l.")&&c.match(/>(?:[(]?)([^\s]+?)([.)]?)</),i(d,c)):CKEDITOR.env.gecko&&c?(c=CKEDITOR.htmlParser.fragment.fromHtml(c[0]).children[0], -(d=(d=(d=b.previous)&&d.value.match(/<v:imagedata[^>]*o:href=['"](.*?)['"]/))&&d[1])&&(c.attributes.src=d),c):!1}:h}}},G=function(){this.dataFilter=new CKEDITOR.htmlParser.filter};G.prototype={toHtml:function(a){var a=CKEDITOR.htmlParser.fragment.fromHtml(a),c=new CKEDITOR.htmlParser.basicWriter;a.writeHtml(c,this.dataFilter);return c.getHtml(!0)}};CKEDITOR.cleanWord=function(a,c){CKEDITOR.env.gecko&&(a=a.replace(/(<\!--\[if[^<]*?\])--\>([\S\s]*?)<\!--(\[endif\]--\>)/gi,"$1$2$3"));CKEDITOR.env.webkit&& -(a=a.replace(/(class="MsoListParagraph[^>]+><\!--\[if !supportLists\]--\>)([^<]+<span[^<]+<\/span>)(<\!--\[endif\]--\>)/gi,"$1<span>$2</span>$3"));var b=new G,f=b.dataFilter;f.addRules(CKEDITOR.plugins.pastefromword.getRules(c,f));c.fire("beforeCleanWord",{filter:f});try{a=b.toHtml(a)}catch(d){alert(c.lang.pastefromword.error)}a=a.replace(/cke:.*?".*?"/g,"");a=a.replace(/style=""/g,"");return a=a.replace(/<span>/g,"")}})(); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/scayt/LICENSE.md b/assets/plugins/ckeditor/plugins/scayt/LICENSE.md deleted file mode 100644 index 610c8078..00000000 --- a/assets/plugins/ckeditor/plugins/scayt/LICENSE.md +++ /dev/null @@ -1,28 +0,0 @@ -Software License Agreement -========================== - -**CKEditor SCAYT Plugin** -Copyright &copy; 2012, [CKSource](http://cksource.com) - Frederico Knabben. All rights reserved. - -Licensed under the terms of any of the following licenses at your choice: - -* GNU General Public License Version 2 or later (the "GPL"): - http://www.gnu.org/licenses/gpl.html - -* GNU Lesser General Public License Version 2.1 or later (the "LGPL"): - http://www.gnu.org/licenses/lgpl.html - -* Mozilla Public License Version 1.1 or later (the "MPL"): - http://www.mozilla.org/MPL/MPL-1.1.html - -You are not required to, but if you want to explicitly declare the license you have chosen to be bound to when using, reproducing, modifying and distributing this software, just include a text file titled "legal.txt" in your version of this software, indicating your license choice. - -Sources of Intellectual Property Included in this plugin --------------------------------------------------------- - -Where not otherwise indicated, all plugin content is authored by CKSource engineers and consists of CKSource-owned intellectual property. In some specific instances, the plugin will incorporate work done by developers outside of CKSource with their express permission. - -Trademarks ----------- - -CKEditor is a trademark of CKSource - Frederico Knabben. All other brand and product names are trademarks, registered trademarks or service marks of their respective holders. diff --git a/assets/plugins/ckeditor/plugins/scayt/README.md b/assets/plugins/ckeditor/plugins/scayt/README.md deleted file mode 100644 index 3b1ad94c..00000000 --- a/assets/plugins/ckeditor/plugins/scayt/README.md +++ /dev/null @@ -1,25 +0,0 @@ -CKEditor SCAYT Plugin -===================== - -This plugin brings Spell Check As You Type (SCAYT) into CKEditor. - -SCAYT is a "installation-less", using the web-services of [WebSpellChecker.net](http://www.webspellchecker.net/). It's an out of the box solution. - -Installation ------------- - -1. Clone/copy this repository contents in a new "plugins/scayt" folder in your CKEditor installation. -2. Enable the "scayt" plugin in the CKEditor configuration file (config.js): - - config.extraPlugins = 'scayt'; - -That's all. SCAYT will appear on the editor toolbar and will be ready to use. - -License -------- - -Licensed under the terms of any of the following licenses at your choice: [GPL](http://www.gnu.org/licenses/gpl.html), [LGPL](http://www.gnu.org/licenses/lgpl.html) and [MPL](http://www.mozilla.org/MPL/MPL-1.1.html). - -See LICENSE.md for more information. - -Developed in cooperation with [WebSpellChecker.net](http://www.webspellchecker.net/). diff --git a/assets/plugins/ckeditor/plugins/scayt/dialogs/options.js b/assets/plugins/ckeditor/plugins/scayt/dialogs/options.js deleted file mode 100644 index cc97b33a..00000000 --- a/assets/plugins/ckeditor/plugins/scayt/dialogs/options.js +++ /dev/null @@ -1,20 +0,0 @@ -/* - Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.dialog.add("scaytcheck",function(j){function w(){return"undefined"!=typeof document.forms["optionsbar_"+b]?document.forms["optionsbar_"+b].options:[]}function x(a,b){if(a){var e=a.length;if(void 0==e)a.checked=a.value==b.toString();else for(var d=0;d<e;d++)a[d].checked=!1,a[d].value==b.toString()&&(a[d].checked=!0)}}function n(a){f.getById("dic_message_"+b).setHtml('<span style="color:red;">'+a+"</span>")}function o(a){f.getById("dic_message_"+b).setHtml('<span style="color:blue;">'+a+"</span>")} -function p(a){for(var a=(""+a).split(","),b=0,e=a.length;b<e;b+=1)f.getById(a[b]).$.style.display="inline"}function q(a){for(var a=(""+a).split(","),b=0,e=a.length;b<e;b+=1)f.getById(a[b]).$.style.display="none"}function r(a){f.getById("dic_name_"+b).$.value=a}var s=!0,h,f=CKEDITOR.document,b=j.name,l=CKEDITOR.plugins.scayt.getUiTabs(j),g,t=[],u=0,m=["dic_create_"+b+",dic_restore_"+b,"dic_rename_"+b+",dic_delete_"+b],v=["mixedCase","mixedWithDigits","allCaps","ignoreDomainNames"];g=j.lang.scayt;var z= -[{id:"options",label:g.optionsTab,elements:[{type:"html",id:"options",html:'<form name="optionsbar_'+b+'"><div class="inner_options">\t<div class="messagebox"></div>\t<div style="display:none;">\t\t<input type="checkbox" name="options" id="allCaps_'+b+'" />\t\t<label style = "display: inline" for="allCaps" id="label_allCaps_'+b+'"></label>\t</div>\t<div style="display:none;">\t\t<input name="options" type="checkbox" id="ignoreDomainNames_'+b+'" />\t\t<label style = "display: inline" for="ignoreDomainNames" id="label_ignoreDomainNames_'+ -b+'"></label>\t</div>\t<div style="display:none;">\t<input name="options" type="checkbox" id="mixedCase_'+b+'" />\t\t<label style = "display: inline" for="mixedCase" id="label_mixedCase_'+b+'"></label>\t</div>\t<div style="display:none;">\t\t<input name="options" type="checkbox" id="mixedWithDigits_'+b+'" />\t\t<label style = "display: inline" for="mixedWithDigits" id="label_mixedWithDigits_'+b+'"></label>\t</div></div></form>'}]},{id:"langs",label:g.languagesTab,elements:[{type:"html",id:"langs", -html:'<div class="inner_langs">\t<div class="messagebox"></div>\t <div style="float:left;width:45%;margin-left:5px;" id="scayt_lcol_'+b+'" ></div> <div style="float:left;width:45%;margin-left:15px;" id="scayt_rcol_'+b+'"></div></div>'}]},{id:"dictionaries",label:g.dictionariesTab,elements:[{type:"html",style:"",id:"dictionaries",html:'<form name="dictionarybar_'+b+'"><div class="inner_dictionary" style="text-align:left; white-space:normal; width:320px; overflow: hidden;">\t<div style="margin:5px auto; width:95%;white-space:normal; overflow:hidden;" id="dic_message_'+ -b+'"> </div>\t<div style="margin:5px auto; width:95%;white-space:normal;"> <span class="cke_dialog_ui_labeled_label" >Dictionary name</span><br>\t\t<span class="cke_dialog_ui_labeled_content" >\t\t\t<div class="cke_dialog_ui_input_text">\t\t\t\t<input id="dic_name_'+b+'" type="text" class="cke_dialog_ui_input_text" style = "height: 25px; background: none; padding: 0;"/>\t\t</div></span></div>\t\t<div style="margin:5px auto; width:95%;white-space:normal;">\t\t\t<a style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_create_'+ -b+'">\t\t\t\t</a>\t\t\t<a style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_delete_'+b+'">\t\t\t\t</a>\t\t\t<a style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_rename_'+b+'">\t\t\t\t</a>\t\t\t<a style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_restore_'+b+'">\t\t\t\t</a>\t\t</div>\t<div style="margin:5px auto; width:95%;white-space:normal;" id="dic_info_'+b+'"></div></div></form>'}]},{id:"about", -label:g.aboutTab,elements:[{type:"html",id:"about",style:"margin: 5px 5px;",html:'<div><div id="scayt_about_'+b+'"></div></div>'}]}],B={title:g.title,minWidth:360,minHeight:220,onShow:function(){var a=this;a.data=j.fire("scaytDialog",{});a.options=a.data.scayt_control.option();a.chosed_lang=a.sLang=a.data.scayt_control.sLang;if(!a.data||!a.data.scayt||!a.data.scayt_control)alert("Error loading application service"),a.hide();else{var b=0;s?a.data.scayt.getCaption(j.langCode||"en",function(e){0<b++|| -(h=e,A.apply(a),y.apply(a),s=!1)}):y.apply(a);a.selectPage(a.data.tab)}},onOk:function(){var a=this.data.scayt_control;a.option(this.options);a.setLang(this.chosed_lang);a.refresh()},onCancel:function(){var a=w(),f;for(f in a)a[f].checked=!1;a="undefined"!=typeof document.forms["languagesbar_"+b]?document.forms["languagesbar_"+b].scayt_lang:[];x(a,"")},contents:t};CKEDITOR.plugins.scayt.getScayt(j);for(g=0;g<l.length;g++)1==l[g]&&(t[t.length]=z[g]);1==l[2]&&(u=1);var A=function(){function a(a){var c= -f.getById("dic_name_"+b).getValue();if(!c)return n(" Dictionary name should not be empty. "),!1;try{var d=a.data.getTarget().getParent(),e=/(dic_\w+)_[\w\d]+/.exec(d.getId())[1];j[e].apply(null,[d,c,m])}catch(C){n(" Dictionary error. ")}return!0}var k=this,e=k.data.scayt.getLangList(),d=["dic_create","dic_delete","dic_rename","dic_restore"],g=[],i=[],c;if(u){for(c=0;c<d.length;c++)g[c]=d[c]+"_"+b,f.getById(g[c]).setHtml('<span class="cke_dialog_ui_button">'+h["button_"+d[c]]+"</span>");f.getById("dic_info_"+ -b).setHtml(h.dic_info)}if(1==l[0])for(c in v)d="label_"+v[c],g=f.getById(d+"_"+b),"undefined"!=typeof g&&("undefined"!=typeof h[d]&&"undefined"!=typeof k.options[v[c]])&&(g.setHtml(h[d]),g.getParent().$.style.display="block");d='<p><img src="'+window.scayt.getAboutInfo().logoURL+'" /></p><p>'+h.version+window.scayt.getAboutInfo().version.toString()+"</p><p>"+h.about_throwt_copy+"</p>";f.getById("scayt_about_"+b).setHtml(d);d=function(a,b){var c=f.createElement("label");c.setAttribute("for","cke_option"+ -a);c.setStyle("display","inline");c.setHtml(b[a]);k.sLang==a&&(k.chosed_lang=a);var d=f.createElement("div"),e=CKEDITOR.dom.element.createFromHtml('<input class = "cke_dialog_ui_radio_input" id="cke_option'+a+'" type="radio" '+(k.sLang==a?'checked="checked"':"")+' value="'+a+'" name="scayt_lang" />');e.on("click",function(){this.$.checked=true;k.chosed_lang=a});d.append(e);d.append(c);return{lang:b[a],code:a,radio:d}};if(1==l[1]){for(c in e.rtl)i[i.length]=d(c,e.ltr);for(c in e.ltr)i[i.length]=d(c, -e.ltr);i.sort(function(a,b){return b.lang>a.lang?-1:1});e=f.getById("scayt_lcol_"+b);d=f.getById("scayt_rcol_"+b);for(c=0;c<i.length;c++)(c<i.length/2?e:d).append(i[c].radio)}var j={dic_create:function(a,b,c){var d=c[0]+","+c[1],e=h.err_dic_create,f=h.succ_dic_create;window.scayt.createUserDictionary(b,function(a){q(d);p(c[1]);f=f.replace("%s",a.dname);o(f)},function(a){e=e.replace("%s",a.dname);n(e+"( "+(a.message||"")+")")})},dic_rename:function(a,b){var c=h.err_dic_rename||"",d=h.succ_dic_rename|| -"";window.scayt.renameUserDictionary(b,function(a){d=d.replace("%s",a.dname);r(b);o(d)},function(a){c=c.replace("%s",a.dname);r(b);n(c+"( "+(a.message||"")+" )")})},dic_delete:function(a,b,c){var d=c[0]+","+c[1],e=h.err_dic_delete,f=h.succ_dic_delete;window.scayt.deleteUserDictionary(function(a){f=f.replace("%s",a.dname);q(d);p(c[0]);r("");o(f)},function(a){e=e.replace("%s",a.dname);n(e)})}};j.dic_restore=k.dic_restore||function(a,b,c){var d=c[0]+","+c[1],e=h.err_dic_restore,f=h.succ_dic_restore; -window.scayt.restoreUserDictionary(b,function(a){f=f.replace("%s",a.dname);q(d);p(c[1]);o(f)},function(a){e=e.replace("%s",a.dname);n(e)})};i=(m[0]+","+m[1]).split(",");c=0;for(e=i.length;c<e;c+=1)if(d=f.getById(i[c]))d.on("click",a,this)},y=function(){var a=this;if(1==l[0])for(var g=w(),e=0,d=g.length;e<d;e++){var h=g[e].id,i=f.getById(h);if(i&&(g[e].checked=!1,1==a.options[h.split("_")[0]]&&(g[e].checked=!0),s))i.on("click",function(){a.options[this.getId().split("_")[0]]=this.$.checked?1:0})}1== -l[1]&&(g=f.getById("cke_option"+a.sLang),x(g.$,a.sLang));u&&(window.scayt.getNameUserDictionary(function(a){a=a.dname;q(m[0]+","+m[1]);if(a){f.getById("dic_name_"+b).setValue(a);p(m[1])}else p(m[0])},function(){f.getById("dic_name_"+b).setValue("")}),o(""))};return B}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/scayt/dialogs/toolbar.css b/assets/plugins/ckeditor/plugins/scayt/dialogs/toolbar.css deleted file mode 100644 index 861f43e3..00000000 --- a/assets/plugins/ckeditor/plugins/scayt/dialogs/toolbar.css +++ /dev/null @@ -1,71 +0,0 @@ -a -{ - text-decoration:none; - padding: 2px 4px 4px 6px; - display : block; - border-width: 1px; - border-style: solid; - margin : 0px; -} - -a.cke_scayt_toogle:hover, -a.cke_scayt_toogle:focus, -a.cke_scayt_toogle:active -{ - border-color: #316ac5; - background-color: #dff1ff; - color : #000; - cursor: pointer; - margin : 0px; -} -a.cke_scayt_toogle { - color : #316ac5; - border-color: #fff; -} -.scayt_enabled a.cke_scayt_item { - color : #316ac5; - border-color: #fff; - margin : 0px; -} -.scayt_disabled a.cke_scayt_item { - color : gray; - border-color : #fff; -} -.scayt_enabled a.cke_scayt_item:hover, -.scayt_enabled a.cke_scayt_item:focus, -.scayt_enabled a.cke_scayt_item:active -{ - border-color: #316ac5; - background-color: #dff1ff; - color : #000; - cursor: pointer; -} -.scayt_disabled a.cke_scayt_item:hover, -.scayt_disabled a.cke_scayt_item:focus, -.scayt_disabled a.cke_scayt_item:active -{ - border-color: gray; - background-color: #dff1ff; - color : gray; - cursor: no-drop; -} -.cke_scayt_set_on, .cke_scayt_set_off -{ - display: none; -} -.scayt_enabled .cke_scayt_set_on -{ - display: none; -} -.scayt_disabled .cke_scayt_set_on -{ - display: inline; -} -.scayt_disabled .cke_scayt_set_off -{ - display: none; -} -.scayt_enabled .cke_scayt_set_off -{ - display: inline; -} diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/_translationstatus.txt b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/_translationstatus.txt deleted file mode 100644 index ba956221..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/_translationstatus.txt +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license - -cs.js Found: 118 Missing: 0 -cy.js Found: 118 Missing: 0 -de.js Found: 118 Missing: 0 -el.js Found: 16 Missing: 102 -eo.js Found: 118 Missing: 0 -et.js Found: 31 Missing: 87 -fa.js Found: 24 Missing: 94 -fi.js Found: 23 Missing: 95 -fr.js Found: 118 Missing: 0 -hr.js Found: 23 Missing: 95 -it.js Found: 118 Missing: 0 -nb.js Found: 118 Missing: 0 -nl.js Found: 118 Missing: 0 -no.js Found: 118 Missing: 0 -tr.js Found: 118 Missing: 0 -ug.js Found: 39 Missing: 79 -zh-cn.js Found: 118 Missing: 0 diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/ar.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/ar.js deleted file mode 100644 index 389f3c20..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/ar.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","ar",{euro:"رمز اليورو",lsquo:"علامة تنصيص علي اليسار",rsquo:"علامة تنصيص علي اليمين",ldquo:"علامة تنصيص مزدوجة علي اليسار",rdquo:"علامة تنصيص مزدوجة علي اليمين",ndash:"En dash –",mdash:"Em dash —",iexcl:"علامة تعجب مقلوبة",cent:"رمز سنتيم",pound:"رمز الاسترليني",curren:"رمز العملة",yen:"رمز الين الياباني",brvbar:"خط عمودي مكسور",sect:"رمز الفصيلة",uml:"Diaeresis",copy:"علامة حقوق الطبع",ordf:"Feminine ordinal indicator",laquo:"Left-pointing double angle quotation mark", -not:"ليست علامة",reg:"علامة مسجّلة",macr:"Macron",deg:"Degree sign",sup2:"Superscript two",sup3:"Superscript three",acute:"Acute accent",micro:"Micro sign",para:"Pilcrow sign",middot:"Middle dot",cedil:"Cedilla",sup1:"Superscript one",ordm:"Masculine ordinal indicator",raquo:"Right-pointing double angle quotation mark",frac14:"Vulgar fraction one quarter",frac12:"Vulgar fraction one half",frac34:"Vulgar fraction three quarters",iquest:"علامة الإستفهام غير صحيحة",Agrave:"Latin capital letter A with grave accent", -Aacute:"Latin capital letter A with acute accent",Acirc:"Latin capital letter A with circumflex",Atilde:"Latin capital letter A with tilde",Auml:"Latin capital letter A with diaeresis",Aring:"Latin capital letter A with ring above",AElig:"Latin Capital letter Æ",Ccedil:"Latin capital letter C with cedilla",Egrave:"Latin capital letter E with grave accent",Eacute:"Latin capital letter E with acute accent",Ecirc:"Latin capital letter E with circumflex",Euml:"Latin capital letter E with diaeresis",Igrave:"Latin capital letter I with grave accent", -Iacute:"Latin capital letter I with acute accent",Icirc:"Latin capital letter I with circumflex",Iuml:"Latin capital letter I with diaeresis",ETH:"Latin capital letter Eth",Ntilde:"Latin capital letter N with tilde",Ograve:"Latin capital letter O with grave accent",Oacute:"Latin capital letter O with acute accent",Ocirc:"Latin capital letter O with circumflex",Otilde:"Latin capital letter O with tilde",Ouml:"Latin capital letter O with diaeresis",times:"Multiplication sign",Oslash:"Latin capital letter O with stroke", -Ugrave:"Latin capital letter U with grave accent",Uacute:"Latin capital letter U with acute accent",Ucirc:"Latin capital letter U with circumflex",Uuml:"Latin capital letter U with diaeresis",Yacute:"Latin capital letter Y with acute accent",THORN:"Latin capital letter Thorn",szlig:"Latin small letter sharp s",agrave:"Latin small letter a with grave accent",aacute:"Latin small letter a with acute accent",acirc:"Latin small letter a with circumflex",atilde:"Latin small letter a with tilde",auml:"Latin small letter a with diaeresis", -aring:"Latin small letter a with ring above",aelig:"Latin small letter æ",ccedil:"Latin small letter c with cedilla",egrave:"Latin small letter e with grave accent",eacute:"Latin small letter e with acute accent",ecirc:"Latin small letter e with circumflex",euml:"Latin small letter e with diaeresis",igrave:"Latin small letter i with grave accent",iacute:"Latin small letter i with acute accent",icirc:"Latin small letter i with circumflex",iuml:"Latin small letter i with diaeresis",eth:"Latin small letter eth", -ntilde:"Latin small letter n with tilde",ograve:"Latin small letter o with grave accent",oacute:"Latin small letter o with acute accent",ocirc:"Latin small letter o with circumflex",otilde:"Latin small letter o with tilde",ouml:"Latin small letter o with diaeresis",divide:"Division sign",oslash:"Latin small letter o with stroke",ugrave:"Latin small letter u with grave accent",uacute:"Latin small letter u with acute accent",ucirc:"Latin small letter u with circumflex",uuml:"Latin small letter u with diaeresis", -yacute:"Latin small letter y with acute accent",thorn:"Latin small letter thorn",yuml:"Latin small letter y with diaeresis",OElig:"Latin capital ligature OE",oelig:"Latin small ligature oe",372:"Latin capital letter W with circumflex",374:"Latin capital letter Y with circumflex",373:"Latin small letter w with circumflex",375:"Latin small letter y with circumflex",sbquo:"Single low-9 quotation mark",8219:"Single high-reversed-9 quotation mark",bdquo:"Double low-9 quotation mark",hellip:"Horizontal ellipsis", -trade:"Trade mark sign",9658:"Black right-pointing pointer",bull:"Bullet",rarr:"Rightwards arrow",rArr:"Rightwards double arrow",hArr:"Left right double arrow",diams:"Black diamond suit",asymp:"Almost equal to"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/bg.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/bg.js deleted file mode 100644 index c68b9791..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/bg.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","bg",{euro:"Евро знак",lsquo:"Лява маркировка за цитат",rsquo:"Дясна маркировка за цитат",ldquo:"Лява двойна кавичка за цитат",rdquo:"Дясна двойна кавичка за цитат",ndash:"\\\\",mdash:"/",iexcl:"Обърната питанка",cent:"Знак за цент",pound:"Знак за паунд",curren:"Валутен знак",yen:"Знак за йена",brvbar:"Прекъсната линия",sect:"Знак за секция",uml:"Diaeresis",copy:"Знак за Copyright",ordf:"Feminine ordinal indicator",laquo:"Left-pointing double angle quotation mark", -not:"Not sign",reg:"Registered sign",macr:"Macron",deg:"Degree sign",sup2:"Superscript two",sup3:"Superscript three",acute:"Acute accent",micro:"Micro sign",para:"Pilcrow sign",middot:"Middle dot",cedil:"Cedilla",sup1:"Superscript one",ordm:"Masculine ordinal indicator",raquo:"Right-pointing double angle quotation mark",frac14:"Vulgar fraction one quarter",frac12:"Vulgar fraction one half",frac34:"Vulgar fraction three quarters",iquest:"Inverted question mark",Agrave:"Latin capital letter A with grave accent", -Aacute:"Latin capital letter A with acute accent",Acirc:"Latin capital letter A with circumflex",Atilde:"Latin capital letter A with tilde",Auml:"Latin capital letter A with diaeresis",Aring:"Latin capital letter A with ring above",AElig:"Latin Capital letter Æ",Ccedil:"Latin capital letter C with cedilla",Egrave:"Latin capital letter E with grave accent",Eacute:"Latin capital letter E with acute accent",Ecirc:"Latin capital letter E with circumflex",Euml:"Latin capital letter E with diaeresis",Igrave:"Latin capital letter I with grave accent", -Iacute:"Latin capital letter I with acute accent",Icirc:"Latin capital letter I with circumflex",Iuml:"Latin capital letter I with diaeresis",ETH:"Latin capital letter Eth",Ntilde:"Latin capital letter N with tilde",Ograve:"Latin capital letter O with grave accent",Oacute:"Latin capital letter O with acute accent",Ocirc:"Latin capital letter O with circumflex",Otilde:"Latin capital letter O with tilde",Ouml:"Latin capital letter O with diaeresis",times:"Multiplication sign",Oslash:"Latin capital letter O with stroke", -Ugrave:"Latin capital letter U with grave accent",Uacute:"Latin capital letter U with acute accent",Ucirc:"Latin capital letter U with circumflex",Uuml:"Latin capital letter U with diaeresis",Yacute:"Latin capital letter Y with acute accent",THORN:"Latin capital letter Thorn",szlig:"Latin small letter sharp s",agrave:"Latin small letter a with grave accent",aacute:"Latin small letter a with acute accent",acirc:"Latin small letter a with circumflex",atilde:"Latin small letter a with tilde",auml:"Latin small letter a with diaeresis", -aring:"Latin small letter a with ring above",aelig:"Latin small letter æ",ccedil:"Latin small letter c with cedilla",egrave:"Latin small letter e with grave accent",eacute:"Latin small letter e with acute accent",ecirc:"Latin small letter e with circumflex",euml:"Latin small letter e with diaeresis",igrave:"Latin small letter i with grave accent",iacute:"Latin small letter i with acute accent",icirc:"Latin small letter i with circumflex",iuml:"Latin small letter i with diaeresis",eth:"Latin small letter eth", -ntilde:"Latin small letter n with tilde",ograve:"Latin small letter o with grave accent",oacute:"Latin small letter o with acute accent",ocirc:"Latin small letter o with circumflex",otilde:"Latin small letter o with tilde",ouml:"Latin small letter o with diaeresis",divide:"Division sign",oslash:"Latin small letter o with stroke",ugrave:"Latin small letter u with grave accent",uacute:"Latin small letter u with acute accent",ucirc:"Latin small letter u with circumflex",uuml:"Latin small letter u with diaeresis", -yacute:"Latin small letter y with acute accent",thorn:"Latin small letter thorn",yuml:"Latin small letter y with diaeresis",OElig:"Latin capital ligature OE",oelig:"Latin small ligature oe",372:"Latin capital letter W with circumflex",374:"Latin capital letter Y with circumflex",373:"Latin small letter w with circumflex",375:"Latin small letter y with circumflex",sbquo:"Single low-9 quotation mark",8219:"Single high-reversed-9 quotation mark",bdquo:"Double low-9 quotation mark",hellip:"Horizontal ellipsis", -trade:"Trade mark sign",9658:"Black right-pointing pointer",bull:"Bullet",rarr:"Rightwards arrow",rArr:"Rightwards double arrow",hArr:"Left right double arrow",diams:"Black diamond suit",asymp:"Almost equal to"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/ca.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/ca.js deleted file mode 100644 index 907bb043..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/ca.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","ca",{euro:"Símbol d'euro",lsquo:"Signe de cometa simple esquerra",rsquo:"Signe de cometa simple dreta",ldquo:"Signe de cometa doble esquerra",rdquo:"Signe de cometa doble dreta",ndash:"Guió",mdash:"Guió baix",iexcl:"Signe d'exclamació inversa",cent:"Símbol de percentatge",pound:"Símbol de lliura",curren:"Símbol de moneda",yen:"Símbol de Yen",brvbar:"Barra trencada",sect:"Símbol de secció",uml:"Dièresi",copy:"Símbol de Copyright",ordf:"Indicador ordinal femení", -laquo:"Signe de cometes angulars esquerra",not:"Símbol de negació",reg:"Símbol registrat",macr:"Macron",deg:"Símbol de grau",sup2:"Superíndex dos",sup3:"Superíndex tres",acute:"Accent agut",micro:"Símbol de micro",para:"Símbol de calderó",middot:"Punt volat",cedil:"Ce trencada",sup1:"Superíndex u",ordm:"Indicador ordinal masculí",raquo:"Signe de cometes angulars dreta",frac14:"Fracció vulgar un quart",frac12:"Fracció vulgar una meitat",frac34:"Fracció vulgar tres quarts",iquest:"Símbol d'interrogació invertit", -Agrave:"Lletra majúscula llatina A amb accent greu",Aacute:"Lletra majúscula llatina A amb accent agut",Acirc:"Lletra majúscula llatina A amb circumflex",Atilde:"Lletra majúscula llatina A amb titlla",Auml:"Lletra majúscula llatina A amb dièresi",Aring:"Lletra majúscula llatina A amb anell superior",AElig:"Lletra majúscula llatina Æ",Ccedil:"Lletra majúscula llatina C amb ce trencada",Egrave:"Lletra majúscula llatina E amb accent greu",Eacute:"Lletra majúscula llatina E amb accent agut",Ecirc:"Lletra majúscula llatina E amb circumflex", -Euml:"Lletra majúscula llatina E amb dièresi",Igrave:"Lletra majúscula llatina I amb accent greu",Iacute:"Lletra majúscula llatina I amb accent agut",Icirc:"Lletra majúscula llatina I amb circumflex",Iuml:"Lletra majúscula llatina I amb dièresi",ETH:"Lletra majúscula llatina Eth",Ntilde:"Lletra majúscula llatina N amb titlla",Ograve:"Lletra majúscula llatina O amb accent greu",Oacute:"Lletra majúscula llatina O amb accent agut",Ocirc:"Lletra majúscula llatina O amb circumflex",Otilde:"Lletra majúscula llatina O amb titlla", -Ouml:"Lletra majúscula llatina O amb dièresi",times:"Símbol de multiplicació",Oslash:"Lletra majúscula llatina O amb barra",Ugrave:"Lletra majúscula llatina U amb accent greu",Uacute:"Lletra majúscula llatina U amb accent agut",Ucirc:"Lletra majúscula llatina U amb circumflex",Uuml:"Lletra majúscula llatina U amb dièresi",Yacute:"Lletra majúscula llatina Y amb accent agut",THORN:"Lletra majúscula llatina Thorn",szlig:"Lletra minúscula llatina sharp s",agrave:"Lletra minúscula llatina a amb accent greu", -aacute:"Lletra minúscula llatina a amb accent agut",acirc:"Lletra minúscula llatina a amb circumflex",atilde:"Lletra minúscula llatina a amb titlla",auml:"Lletra minúscula llatina a amb dièresi",aring:"Lletra minúscula llatina a amb anell superior",aelig:"Lletra minúscula llatina æ",ccedil:"Lletra minúscula llatina c amb ce trencada",egrave:"Lletra minúscula llatina e amb accent greu",eacute:"Lletra minúscula llatina e amb accent agut",ecirc:"Lletra minúscula llatina e amb circumflex",euml:"Lletra minúscula llatina e amb dièresi", -igrave:"Lletra minúscula llatina i amb accent greu",iacute:"Lletra minúscula llatina i amb accent agut",icirc:"Lletra minúscula llatina i amb circumflex",iuml:"Lletra minúscula llatina i amb dièresi",eth:"Lletra minúscula llatina eth",ntilde:"Lletra minúscula llatina n amb titlla",ograve:"Lletra minúscula llatina o amb accent greu",oacute:"Lletra minúscula llatina o amb accent agut",ocirc:"Lletra minúscula llatina o amb circumflex",otilde:"Lletra minúscula llatina o amb titlla",ouml:"Lletra minúscula llatina o amb dièresi", -divide:"Símbol de divisió",oslash:"Lletra minúscula llatina o amb barra",ugrave:"Lletra minúscula llatina u amb accent greu",uacute:"Lletra minúscula llatina u amb accent agut",ucirc:"Lletra minúscula llatina u amb circumflex",uuml:"Lletra minúscula llatina u amb dièresi",yacute:"Lletra minúscula llatina y amb accent agut",thorn:"Lletra minúscula llatina thorn",yuml:"Lletra minúscula llatina y amb dièresi",OElig:"Lligadura majúscula llatina OE",oelig:"Lligadura minúscula llatina oe",372:"Lletra majúscula llatina W amb circumflex", -374:"Lletra majúscula llatina Y amb circumflex",373:"Lletra minúscula llatina w amb circumflex",375:"Lletra minúscula llatina y amb circumflex",sbquo:"Signe de cita simple baixa-9",8219:"Signe de cita simple alta-invertida-9",bdquo:"Signe de cita doble baixa-9",hellip:"Punts suspensius",trade:"Símbol de marca registrada",9658:"Punter negre apuntant cap a la dreta",bull:"Vinyeta",rarr:"Fletxa cap a la dreta",rArr:"Doble fletxa cap a la dreta",hArr:"Doble fletxa esquerra dreta",diams:"Vestit negre diamant", -asymp:"Gairebé igual a"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/cs.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/cs.js deleted file mode 100644 index c9500d6c..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/cs.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","cs",{euro:"Znak eura",lsquo:"Počáteční uvozovka jednoduchá",rsquo:"Koncová uvozovka jednoduchá",ldquo:"Počáteční uvozovka dvojitá",rdquo:"Koncová uvozovka dvojitá",ndash:"En pomlčka",mdash:"Em pomlčka",iexcl:"Obrácený vykřičník",cent:"Znak centu",pound:"Znak libry",curren:"Znak měny",yen:"Znak jenu",brvbar:"Přerušená svislá čára",sect:"Znak oddílu",uml:"Přehláska",copy:"Znak copyrightu",ordf:"Ženský indikátor rodu",laquo:"Znak dvojitých lomených uvozovek vlevo", -not:"Logistický zápor",reg:"Znak registrace",macr:"Pomlčka nad",deg:"Znak stupně",sup2:"Dvojka jako horní index",sup3:"Trojka jako horní index",acute:"Čárka nad vpravo",micro:"Znak mikro",para:"Znak odstavce",middot:"Tečka uprostřed",cedil:"Ocásek vlevo",sup1:"Jednička jako horní index",ordm:"Mužský indikátor rodu",raquo:"Znak dvojitých lomených uvozovek vpravo",frac14:"Obyčejný zlomek jedna čtvrtina",frac12:"Obyčejný zlomek jedna polovina",frac34:"Obyčejný zlomek tři čtvrtiny",iquest:"Znak obráceného otazníku", -Agrave:"Velké písmeno latinky A s čárkou nad vlevo",Aacute:"Velké písmeno latinky A s čárkou nad vpravo",Acirc:"Velké písmeno latinky A s vokáněm",Atilde:"Velké písmeno latinky A s tildou",Auml:"Velké písmeno latinky A s dvěma tečkami",Aring:"Velké písmeno latinky A s kroužkem nad",AElig:"Velké písmeno latinky Ae",Ccedil:"Velké písmeno latinky C s ocáskem vlevo",Egrave:"Velké písmeno latinky E s čárkou nad vlevo",Eacute:"Velké písmeno latinky E s čárkou nad vpravo",Ecirc:"Velké písmeno latinky E s vokáněm", -Euml:"Velké písmeno latinky E s dvěma tečkami",Igrave:"Velké písmeno latinky I s čárkou nad vlevo",Iacute:"Velké písmeno latinky I s čárkou nad vpravo",Icirc:"Velké písmeno latinky I s vokáněm",Iuml:"Velké písmeno latinky I s dvěma tečkami",ETH:"Velké písmeno latinky Eth",Ntilde:"Velké písmeno latinky N s tildou",Ograve:"Velké písmeno latinky O s čárkou nad vlevo",Oacute:"Velké písmeno latinky O s čárkou nad vpravo",Ocirc:"Velké písmeno latinky O s vokáněm",Otilde:"Velké písmeno latinky O s tildou", -Ouml:"Velké písmeno latinky O s dvěma tečkami",times:"Znak násobení",Oslash:"Velké písmeno latinky O přeškrtnuté",Ugrave:"Velké písmeno latinky U s čárkou nad vlevo",Uacute:"Velké písmeno latinky U s čárkou nad vpravo",Ucirc:"Velké písmeno latinky U s vokáněm",Uuml:"Velké písmeno latinky U s dvěma tečkami",Yacute:"Velké písmeno latinky Y s čárkou nad vpravo",THORN:"Velké písmeno latinky Thorn",szlig:"Malé písmeno latinky ostré s",agrave:"Malé písmeno latinky a s čárkou nad vlevo",aacute:"Malé písmeno latinky a s čárkou nad vpravo", -acirc:"Malé písmeno latinky a s vokáněm",atilde:"Malé písmeno latinky a s tildou",auml:"Malé písmeno latinky a s dvěma tečkami",aring:"Malé písmeno latinky a s kroužkem nad",aelig:"Malé písmeno latinky ae",ccedil:"Malé písmeno latinky c s ocáskem vlevo",egrave:"Malé písmeno latinky e s čárkou nad vlevo",eacute:"Malé písmeno latinky e s čárkou nad vpravo",ecirc:"Malé písmeno latinky e s vokáněm",euml:"Malé písmeno latinky e s dvěma tečkami",igrave:"Malé písmeno latinky i s čárkou nad vlevo",iacute:"Malé písmeno latinky i s čárkou nad vpravo", -icirc:"Malé písmeno latinky i s vokáněm",iuml:"Malé písmeno latinky i s dvěma tečkami",eth:"Malé písmeno latinky eth",ntilde:"Malé písmeno latinky n s tildou",ograve:"Malé písmeno latinky o s čárkou nad vlevo",oacute:"Malé písmeno latinky o s čárkou nad vpravo",ocirc:"Malé písmeno latinky o s vokáněm",otilde:"Malé písmeno latinky o s tildou",ouml:"Malé písmeno latinky o s dvěma tečkami",divide:"Znak dělení",oslash:"Malé písmeno latinky o přeškrtnuté",ugrave:"Malé písmeno latinky u s čárkou nad vlevo", -uacute:"Malé písmeno latinky u s čárkou nad vpravo",ucirc:"Malé písmeno latinky u s vokáněm",uuml:"Malé písmeno latinky u s dvěma tečkami",yacute:"Malé písmeno latinky y s čárkou nad vpravo",thorn:"Malé písmeno latinky thorn",yuml:"Malé písmeno latinky y s dvěma tečkami",OElig:"Velká ligatura latinky OE",oelig:"Malá ligatura latinky OE",372:"Velké písmeno latinky W s vokáněm",374:"Velké písmeno latinky Y s vokáněm",373:"Malé písmeno latinky w s vokáněm",375:"Malé písmeno latinky y s vokáněm",sbquo:"Dolní 9 uvozovka jednoduchá", -8219:"Horní obrácená 9 uvozovka jednoduchá",bdquo:"Dolní 9 uvozovka dvojitá",hellip:"Trojtečkový úvod",trade:"Obchodní značka",9658:"Černý ukazatel směřující vpravo",bull:"Kolečko",rarr:"Šipka vpravo",rArr:"Dvojitá šipka vpravo",hArr:"Dvojitá šipka vlevo a vpravo",diams:"Černé piky",asymp:"Téměř se rovná"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/cy.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/cy.js deleted file mode 100644 index 36a074f1..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/cy.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","cy",{euro:"Arwydd yr Ewro",lsquo:"Dyfynnod chwith unigol",rsquo:"Dyfynnod dde unigol",ldquo:"Dyfynnod chwith dwbl",rdquo:"Dyfynnod dde dwbl",ndash:"Cysylltnod en",mdash:"Cysylltnod em",iexcl:"Ebychnod gwrthdro",cent:"Arwydd sent",pound:"Arwydd punt",curren:"Arwydd arian cyfred",yen:"Arwydd yen",brvbar:"Bar toriedig",sect:"Arwydd adran",uml:"Didolnod",copy:"Arwydd hawlfraint",ordf:"Dangosydd benywaidd",laquo:"Dyfynnod dwbl ar ongl i'r chwith",not:"Arwydd Nid", -reg:"Arwydd cofrestredig",macr:"Macron",deg:"Arwydd gradd",sup2:"Dau uwchsgript",sup3:"Tri uwchsgript",acute:"Acen ddyrchafedig",micro:"Arwydd micro",para:"Arwydd pilcrow",middot:"Dot canol",cedil:"Sedila",sup1:"Un uwchsgript",ordm:"Dangosydd gwrywaidd",raquo:"Dyfynnod dwbl ar ongl i'r dde",frac14:"Ffracsiwn cyffredin un cwarter",frac12:"Ffracsiwn cyffredin un hanner",frac34:"Ffracsiwn cyffredin tri chwarter",iquest:"Marc cwestiwn gwrthdroëdig",Agrave:"Priflythyren A Lladinaidd gydag acen ddisgynedig", -Aacute:"Priflythyren A Lladinaidd gydag acen ddyrchafedig",Acirc:"Priflythyren A Lladinaidd gydag acen grom",Atilde:"Priflythyren A Lladinaidd gyda thild",Auml:"Priflythyren A Lladinaidd gyda didolnod",Aring:"Priflythyren A Lladinaidd gyda chylch uwchben",AElig:"Priflythyren Æ Lladinaidd",Ccedil:"Priflythyren C Lladinaidd gyda sedila",Egrave:"Priflythyren E Lladinaidd gydag acen ddisgynedig",Eacute:"Priflythyren E Lladinaidd gydag acen ddyrchafedig",Ecirc:"Priflythyren E Lladinaidd gydag acen grom", -Euml:"Priflythyren E Lladinaidd gyda didolnod",Igrave:"Priflythyren I Lladinaidd gydag acen ddisgynedig",Iacute:"Priflythyren I Lladinaidd gydag acen ddyrchafedig",Icirc:"Priflythyren I Lladinaidd gydag acen grom",Iuml:"Priflythyren I Lladinaidd gyda didolnod",ETH:"Priflythyren Eth",Ntilde:"Priflythyren N Lladinaidd gyda thild",Ograve:"Priflythyren O Lladinaidd gydag acen ddisgynedig",Oacute:"Priflythyren O Lladinaidd gydag acen ddyrchafedig",Ocirc:"Priflythyren O Lladinaidd gydag acen grom",Otilde:"Priflythyren O Lladinaidd gyda thild", -Ouml:"Priflythyren O Lladinaidd gyda didolnod",times:"Arwydd lluosi",Oslash:"Priflythyren O Lladinaidd gyda strôc",Ugrave:"Priflythyren U Lladinaidd gydag acen ddisgynedig",Uacute:"Priflythyren U Lladinaidd gydag acen ddyrchafedig",Ucirc:"Priflythyren U Lladinaidd gydag acen grom",Uuml:"Priflythyren U Lladinaidd gyda didolnod",Yacute:"Priflythyren Y Lladinaidd gydag acen ddyrchafedig",THORN:"Priflythyren Thorn",szlig:"Llythyren s fach Lladinaidd siarp ",agrave:"Llythyren a fach Lladinaidd gydag acen ddisgynedig", -aacute:"Llythyren a fach Lladinaidd gydag acen ddyrchafedig",acirc:"Llythyren a fach Lladinaidd gydag acen grom",atilde:"Llythyren a fach Lladinaidd gyda thild",auml:"Llythyren a fach Lladinaidd gyda didolnod",aring:"Llythyren a fach Lladinaidd gyda chylch uwchben",aelig:"Llythyren æ fach Lladinaidd",ccedil:"Llythyren c fach Lladinaidd gyda sedila",egrave:"Llythyren e fach Lladinaidd gydag acen ddisgynedig",eacute:"Llythyren e fach Lladinaidd gydag acen ddyrchafedig",ecirc:"Llythyren e fach Lladinaidd gydag acen grom", -euml:"Llythyren e fach Lladinaidd gyda didolnod",igrave:"Llythyren i fach Lladinaidd gydag acen ddisgynedig",iacute:"Llythyren i fach Lladinaidd gydag acen ddyrchafedig",icirc:"Llythyren i fach Lladinaidd gydag acen grom",iuml:"Llythyren i fach Lladinaidd gyda didolnod",eth:"Llythyren eth fach",ntilde:"Llythyren n fach Lladinaidd gyda thild",ograve:"Llythyren o fach Lladinaidd gydag acen ddisgynedig",oacute:"Llythyren o fach Lladinaidd gydag acen ddyrchafedig",ocirc:"Llythyren o fach Lladinaidd gydag acen grom", -otilde:"Llythyren o fach Lladinaidd gyda thild",ouml:"Llythyren o fach Lladinaidd gyda didolnod",divide:"Arwydd rhannu",oslash:"Llythyren o fach Lladinaidd gyda strôc",ugrave:"Llythyren u fach Lladinaidd gydag acen ddisgynedig",uacute:"Llythyren u fach Lladinaidd gydag acen ddyrchafedig",ucirc:"Llythyren u fach Lladinaidd gydag acen grom",uuml:"Llythyren u fach Lladinaidd gyda didolnod",yacute:"Llythyren y fach Lladinaidd gydag acen ddisgynedig",thorn:"Llythyren o fach Lladinaidd gyda strôc",yuml:"Llythyren y fach Lladinaidd gyda didolnod", -OElig:"Priflythyren cwlwm OE Lladinaidd ",oelig:"Priflythyren cwlwm oe Lladinaidd ",372:"Priflythyren W gydag acen grom",374:"Priflythyren Y gydag acen grom",373:"Llythyren w fach gydag acen grom",375:"Llythyren y fach gydag acen grom",sbquo:"Dyfynnod sengl 9-isel",8219:"Dyfynnod sengl 9-uchel cildro",bdquo:"Dyfynnod dwbl 9-isel",hellip:"Coll geiriau llorweddol",trade:"Arwydd marc masnachol",9658:"Pwyntydd du i'r dde",bull:"Bwled",rarr:"Saeth i'r dde",rArr:"Saeth ddwbl i'r dde",hArr:"Saeth ddwbl i'r chwith", -diams:"Siwt diemwnt du",asymp:"Bron yn hafal iddo"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/de.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/de.js deleted file mode 100644 index 73325db6..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/de.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","de",{euro:"Euro Zeichen",lsquo:"Hochkomma links",rsquo:"Hochkomma rechts",ldquo:"Anführungszeichen links",rdquo:"Anführungszeichen rechts",ndash:"kleiner Strich",mdash:"mittlerer Strich",iexcl:"invertiertes Ausrufezeichen",cent:"Cent",pound:"Pfund",curren:"Währung",yen:"Yen",brvbar:"gestrichelte Linie",sect:"§ Zeichen",uml:"Diäresis",copy:"Copyright",ordf:"Feminine ordinal Anzeige",laquo:"Nach links zeigenden Doppel-Winkel Anführungszeichen",not:"Not-Zeichen", -reg:"Registriert",macr:"Längezeichen",deg:"Grad",sup2:"Hoch 2",sup3:"Hoch 3",acute:"Akzentzeichen ",micro:"Micro",para:"Pilcrow-Zeichen",middot:"Mittelpunkt",cedil:"Cedilla",sup1:"Hoch 1",ordm:"Männliche Ordnungszahl Anzeige",raquo:"Nach rechts zeigenden Doppel-Winkel Anführungszeichen",frac14:"ein Viertel",frac12:"Hälfte",frac34:"Dreiviertel",iquest:"Umgekehrtes Fragezeichen",Agrave:"Lateinischer Buchstabe A mit AkzentGrave",Aacute:"Lateinischer Buchstabe A mit Akutakzent",Acirc:"Lateinischer Buchstabe A mit Zirkumflex", -Atilde:"Lateinischer Buchstabe A mit Tilde",Auml:"Lateinischer Buchstabe A mit Trema",Aring:"Lateinischer Buchstabe A mit Ring oben",AElig:"Lateinischer Buchstabe Æ",Ccedil:"Lateinischer Buchstabe C mit Cedille",Egrave:"Lateinischer Buchstabe E mit AkzentGrave",Eacute:"Lateinischer Buchstabe E mit Akutakzent",Ecirc:"Lateinischer Buchstabe E mit Zirkumflex",Euml:"Lateinischer Buchstabe E Trema",Igrave:"Lateinischer Buchstabe I mit AkzentGrave",Iacute:"Lateinischer Buchstabe I mit Akutakzent",Icirc:"Lateinischer Buchstabe I mit Zirkumflex", -Iuml:"Lateinischer Buchstabe I mit Trema",ETH:"Lateinischer Buchstabe Eth",Ntilde:"Lateinischer Buchstabe N mit Tilde",Ograve:"Lateinischer Buchstabe O mit AkzentGrave",Oacute:"Lateinischer Buchstabe O mit Akutakzent",Ocirc:"Lateinischer Buchstabe O mit Zirkumflex",Otilde:"Lateinischer Buchstabe O mit Tilde",Ouml:"Lateinischer Buchstabe O mit Trema",times:"Multiplikation",Oslash:"Lateinischer Buchstabe O durchgestrichen",Ugrave:"Lateinischer Buchstabe U mit Akzentgrave",Uacute:"Lateinischer Buchstabe U mit Akutakzent", -Ucirc:"Lateinischer Buchstabe U mit Zirkumflex",Uuml:"Lateinischer Buchstabe a mit Trema",Yacute:"Lateinischer Buchstabe a mit Akzent",THORN:"Lateinischer Buchstabe mit Dorn",szlig:"Kleiner lateinischer Buchstabe scharfe s",agrave:"Kleiner lateinischer Buchstabe a mit Accent grave",aacute:"Kleiner lateinischer Buchstabe a mit Akut",acirc:"Lateinischer Buchstabe a mit Zirkumflex",atilde:"Lateinischer Buchstabe a mit Tilde",auml:"Kleiner lateinischer Buchstabe a mit Trema",aring:"Kleiner lateinischer Buchstabe a mit Ring oben", -aelig:"Lateinischer Buchstabe æ",ccedil:"Kleiner lateinischer Buchstabe c mit Cedille",egrave:"Kleiner lateinischer Buchstabe e mit Accent grave",eacute:"Kleiner lateinischer Buchstabe e mit Akut",ecirc:"Kleiner lateinischer Buchstabe e mit Zirkumflex",euml:"Kleiner lateinischer Buchstabe e mit Trema",igrave:"Kleiner lateinischer Buchstabe i mit AkzentGrave",iacute:"Kleiner lateinischer Buchstabe i mit Akzent",icirc:"Kleiner lateinischer Buchstabe i mit Zirkumflex",iuml:"Kleiner lateinischer Buchstabe i mit Trema", -eth:"Kleiner lateinischer Buchstabe eth",ntilde:"Kleiner lateinischer Buchstabe n mit Tilde",ograve:"Kleiner lateinischer Buchstabe o mit Accent grave",oacute:"Kleiner lateinischer Buchstabe o mit Akzent",ocirc:"Kleiner lateinischer Buchstabe o mit Zirkumflex",otilde:"Lateinischer Buchstabe i mit Tilde",ouml:"Kleiner lateinischer Buchstabe o mit Trema",divide:"Divisionszeichen",oslash:"Kleiner lateinischer Buchstabe o durchgestrichen",ugrave:"Kleiner lateinischer Buchstabe u mit Accent grave",uacute:"Kleiner lateinischer Buchstabe u mit Akut", -ucirc:"Kleiner lateinischer Buchstabe u mit Zirkumflex",uuml:"Kleiner lateinischer Buchstabe u mit Trema",yacute:"Kleiner lateinischer Buchstabe y mit Akut",thorn:"Kleiner lateinischer Buchstabe Dorn",yuml:"Kleiner lateinischer Buchstabe y mit Trema",OElig:"Lateinischer Buchstabe Ligatur OE",oelig:"Kleiner lateinischer Buchstabe Ligatur OE",372:"Lateinischer Buchstabe W mit Zirkumflex",374:"Lateinischer Buchstabe Y mit Zirkumflex",373:"Kleiner lateinischer Buchstabe w mit Zirkumflex",375:"Kleiner lateinischer Buchstabe y mit Zirkumflex", -sbquo:"Tiefergestelltes Komma",8219:"Rumgedrehtes Komma",bdquo:"Doppeltes Anführungszeichen unten",hellip:"horizontale Auslassungspunkte",trade:"Handelszeichen",9658:"Dreickspfeil rechts",bull:"Bullet",rarr:"Pfeil rechts",rArr:"Doppelpfeil rechts",hArr:"Doppelpfeil links",diams:"Karo",asymp:"Ungefähr"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/el.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/el.js deleted file mode 100644 index 70f90d95..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/el.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","el",{euro:"Σύμβολο Ευρώ",lsquo:"Αριστερός χαρακτήρας μονού εισαγωγικού",rsquo:"Δεξιός χαρακτήρας μονού εισαγωγικού",ldquo:"Αριστερός χαρακτήρας διπλού εισαγωγικού",rdquo:"Δεξιός χαρακτήρας διπλού εισαγωγικού",ndash:"Παύλα en",mdash:"Παύλα em",iexcl:"Ανάποδο θαυμαστικό",cent:"Σύμβολο σεντ",pound:"Σύμβολο λίρας",curren:"Σύμβολο συναλλαγματικής μονάδας",yen:"Σύμβολο Γιεν",brvbar:"Σπασμένη μπάρα",sect:"Σύμβολο τμήματος",uml:"Διαίρεση",copy:"Σύμβολο πνευματικών δικαιωμάτων", -ordf:"Feminine ordinal indicator",laquo:"Αριστερός χαρακτήρας διπλού εισαγωγικού",not:"Not sign",reg:"Σύμβολο σημάτων κατατεθέν",macr:"Μακρόν",deg:"Σύμβολο βαθμού",sup2:"Εκτεθειμένο δύο",sup3:"Εκτεθειμένο τρία",acute:"Οξεία",micro:"Σύμβολο μικρού",para:"Σύμβολο παραγράφου",middot:"Μέση τελεία",cedil:"Υπογεγραμμένη",sup1:"Εκτεθειμένο ένα",ordm:"Masculine ordinal indicator",raquo:"Right-pointing double angle quotation mark",frac14:"Γνήσιο κλάσμα ενός τετάρτου",frac12:"Γνήσιο κλάσμα ενός δεύτερου",frac34:"Γνήσιο κλάσμα τριών τετάρτων", -iquest:"Ανάποδο θαυμαστικό",Agrave:"Λατινικό κεφαλαίο γράμμα A με βαρεία",Aacute:"Λατινικό κεφαλαίο γράμμα A με οξεία",Acirc:"Λατινικό κεφαλαίο γράμμα A με περισπωμένη",Atilde:"Λατινικό κεφαλαίο γράμμα A με περισπωμένη",Auml:"Λατινικό κεφαλαίο γράμμα A με διαλυτικά",Aring:"Λατινικό κεφαλαίο γράμμα A με δακτύλιο επάνω",AElig:"Λατινικό κεφαλαίο γράμμα Æ",Ccedil:"Λατινικό κεφαλαίο γράμμα C με υπογεγραμμένη",Egrave:"Λατινικό κεφαλαίο γράμμα E με βαρεία",Eacute:"Λατινικό κεφαλαίο γράμμα E με οξεία",Ecirc:"Λατινικό κεφαλαίο γράμμα Ε με περισπωμένη ", -Euml:"Λατινικό κεφαλαίο γράμμα Ε με διαλυτικά",Igrave:"Λατινικό κεφαλαίο γράμμα I με βαρεία",Iacute:"Λατινικό κεφαλαίο γράμμα I με οξεία",Icirc:"Λατινικό κεφαλαίο γράμμα I με περισπωμένη",Iuml:"Λατινικό κεφαλαίο γράμμα I με διαλυτικά ",ETH:"Λατινικό κεφαλαίο γράμμα Eth",Ntilde:"Λατινικό κεφαλαίο γράμμα N με περισπωμένη",Ograve:"Λατινικό κεφαλαίο γράμμα O με βαρεία",Oacute:"Λατινικό κεφαλαίο γράμμα O με οξεία",Ocirc:"Λατινικό κεφαλαίο γράμμα O με περισπωμένη ",Otilde:"Λατινικό κεφαλαίο γράμμα O με περισπωμένη", -Ouml:"Λατινικό κεφαλαίο γράμμα O με διαλυτικά",times:"Σύμβολο πολλαπλασιασμού",Oslash:"Λατινικό κεφαλαίο γράμμα O με μολυβιά",Ugrave:"Λατινικό κεφαλαίο γράμμα U με βαρεία",Uacute:"Λατινικό κεφαλαίο γράμμα U με οξεία",Ucirc:"Λατινικό κεφαλαίο γράμμα U με περισπωμένη",Uuml:"Λατινικό κεφαλαίο γράμμα U με διαλυτικά",Yacute:"Λατινικό κεφαλαίο γράμμα Y με οξεία",THORN:"Λατινικό κεφαλαίο γράμμα Thorn",szlig:"Λατινικό μικρό γράμμα απότομο s",agrave:"Λατινικό μικρό γράμμα a με βαρεία",aacute:"Λατινικό μικρό γράμμα a με οξεία", -acirc:"Λατινικό μικρό γράμμα a με περισπωμένη",atilde:"Λατινικό μικρό γράμμα a με περισπωμένη",auml:"Λατινικό μικρό γράμμα a με διαλυτικά",aring:"Λατινικό μικρό γράμμα a με δακτύλιο πάνω",aelig:"Λατινικό μικρό γράμμα æ",ccedil:"Λατινικό μικρό γράμμα c με υπογεγραμμένη",egrave:"Λατινικό μικρό γράμμα ε με βαρεία",eacute:"Λατινικό μικρό γράμμα e με οξεία",ecirc:"Λατινικό μικρό γράμμα e με περισπωμένη",euml:"Λατινικό μικρό γράμμα e με διαλυτικά",igrave:"Λατινικό μικρό γράμμα i με βαρεία",iacute:"Λατινικό μικρό γράμμα i με οξεία", -icirc:"Λατινικό μικρό γράμμα i με περισπωμένη",iuml:"Λατινικό μικρό γράμμα i με διαλυτικά",eth:"Λατινικό μικρό γράμμα eth",ntilde:"Λατινικό μικρό γράμμα n με περισπωμένη",ograve:"Λατινικό μικρό γράμμα o με βαρεία",oacute:"Λατινικό μικρό γράμμα o με οξεία ",ocirc:"Λατινικό πεζό γράμμα o με περισπωμένη",otilde:"Λατινικό μικρό γράμμα o με περισπωμένη ",ouml:"Λατινικό μικρό γράμμα o με διαλυτικά",divide:"Σύμβολο διαίρεσης",oslash:"Λατινικό μικρό γράμμα o με περισπωμένη",ugrave:"Λατινικό μικρό γράμμα u με βαρεία", -uacute:"Λατινικό μικρό γράμμα u με οξεία",ucirc:"Λατινικό μικρό γράμμα u με περισπωμένη",uuml:"Λατινικό μικρό γράμμα u με διαλυτικά",yacute:"Λατινικό μικρό γράμμα y με οξεία",thorn:"Λατινικό μικρό γράμμα thorn",yuml:"Λατινικό μικρό γράμμα y με διαλυτικά",OElig:"Λατινικό κεφαλαίο σύμπλεγμα ΟΕ",oelig:"Λατινικό μικρό σύμπλεγμα oe",372:"Λατινικό κεφαλαίο γράμμα W με περισπωμένη",374:"Λατινικό κεφαλαίο γράμμα Y με περισπωμένη",373:"Λατινικό μικρό γράμμα w με περισπωμένη",375:"Λατινικό μικρό γράμμα y με περισπωμένη", -sbquo:"Single low-9 quotation mark",8219:"Single high-reversed-9 quotation mark",bdquo:"Double low-9 quotation mark",hellip:"Οριζόντια αποσιωπητικά",trade:"Σύμβολο εμπορικού κατατεθέν",9658:"Μαύρος δείκτης που δείχνει προς τα δεξιά",bull:"Κουκκίδα",rarr:"Δεξί βελάκι",rArr:"Διπλό δεξί βελάκι",hArr:"Διπλό βελάκι αριστερά-δεξιά",diams:"Μαύρο διαμάντι",asymp:"Σχεδόν ίσο με"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/en.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/en.js deleted file mode 100644 index c973e03f..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/en.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","en",{euro:"Euro sign",lsquo:"Left single quotation mark",rsquo:"Right single quotation mark",ldquo:"Left double quotation mark",rdquo:"Right double quotation mark",ndash:"En dash",mdash:"Em dash",iexcl:"Inverted exclamation mark",cent:"Cent sign",pound:"Pound sign",curren:"Currency sign",yen:"Yen sign",brvbar:"Broken bar",sect:"Section sign",uml:"Diaeresis",copy:"Copyright sign",ordf:"Feminine ordinal indicator",laquo:"Left-pointing double angle quotation mark", -not:"Not sign",reg:"Registered sign",macr:"Macron",deg:"Degree sign",sup2:"Superscript two",sup3:"Superscript three",acute:"Acute accent",micro:"Micro sign",para:"Pilcrow sign",middot:"Middle dot",cedil:"Cedilla",sup1:"Superscript one",ordm:"Masculine ordinal indicator",raquo:"Right-pointing double angle quotation mark",frac14:"Vulgar fraction one quarter",frac12:"Vulgar fraction one half",frac34:"Vulgar fraction three quarters",iquest:"Inverted question mark",Agrave:"Latin capital letter A with grave accent", -Aacute:"Latin capital letter A with acute accent",Acirc:"Latin capital letter A with circumflex",Atilde:"Latin capital letter A with tilde",Auml:"Latin capital letter A with diaeresis",Aring:"Latin capital letter A with ring above",AElig:"Latin Capital letter Æ",Ccedil:"Latin capital letter C with cedilla",Egrave:"Latin capital letter E with grave accent",Eacute:"Latin capital letter E with acute accent",Ecirc:"Latin capital letter E with circumflex",Euml:"Latin capital letter E with diaeresis",Igrave:"Latin capital letter I with grave accent", -Iacute:"Latin capital letter I with acute accent",Icirc:"Latin capital letter I with circumflex",Iuml:"Latin capital letter I with diaeresis",ETH:"Latin capital letter Eth",Ntilde:"Latin capital letter N with tilde",Ograve:"Latin capital letter O with grave accent",Oacute:"Latin capital letter O with acute accent",Ocirc:"Latin capital letter O with circumflex",Otilde:"Latin capital letter O with tilde",Ouml:"Latin capital letter O with diaeresis",times:"Multiplication sign",Oslash:"Latin capital letter O with stroke", -Ugrave:"Latin capital letter U with grave accent",Uacute:"Latin capital letter U with acute accent",Ucirc:"Latin capital letter U with circumflex",Uuml:"Latin capital letter U with diaeresis",Yacute:"Latin capital letter Y with acute accent",THORN:"Latin capital letter Thorn",szlig:"Latin small letter sharp s",agrave:"Latin small letter a with grave accent",aacute:"Latin small letter a with acute accent",acirc:"Latin small letter a with circumflex",atilde:"Latin small letter a with tilde",auml:"Latin small letter a with diaeresis", -aring:"Latin small letter a with ring above",aelig:"Latin small letter æ",ccedil:"Latin small letter c with cedilla",egrave:"Latin small letter e with grave accent",eacute:"Latin small letter e with acute accent",ecirc:"Latin small letter e with circumflex",euml:"Latin small letter e with diaeresis",igrave:"Latin small letter i with grave accent",iacute:"Latin small letter i with acute accent",icirc:"Latin small letter i with circumflex",iuml:"Latin small letter i with diaeresis",eth:"Latin small letter eth", -ntilde:"Latin small letter n with tilde",ograve:"Latin small letter o with grave accent",oacute:"Latin small letter o with acute accent",ocirc:"Latin small letter o with circumflex",otilde:"Latin small letter o with tilde",ouml:"Latin small letter o with diaeresis",divide:"Division sign",oslash:"Latin small letter o with stroke",ugrave:"Latin small letter u with grave accent",uacute:"Latin small letter u with acute accent",ucirc:"Latin small letter u with circumflex",uuml:"Latin small letter u with diaeresis", -yacute:"Latin small letter y with acute accent",thorn:"Latin small letter thorn",yuml:"Latin small letter y with diaeresis",OElig:"Latin capital ligature OE",oelig:"Latin small ligature oe",372:"Latin capital letter W with circumflex",374:"Latin capital letter Y with circumflex",373:"Latin small letter w with circumflex",375:"Latin small letter y with circumflex",sbquo:"Single low-9 quotation mark",8219:"Single high-reversed-9 quotation mark",bdquo:"Double low-9 quotation mark",hellip:"Horizontal ellipsis", -trade:"Trade mark sign",9658:"Black right-pointing pointer",bull:"Bullet",rarr:"Rightwards arrow",rArr:"Rightwards double arrow",hArr:"Left right double arrow",diams:"Black diamond suit",asymp:"Almost equal to"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/eo.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/eo.js deleted file mode 100644 index f937dc0a..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/eo.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","eo",{euro:"Eŭrosigno",lsquo:"Supra 6-citilo",rsquo:"Supra 9-citilo",ldquo:"Supra 66-citilo",rdquo:"Supra 99-citilo",ndash:"Streketo",mdash:"Substreko",iexcl:"Renversita krisigno",cent:"Cendosigno",pound:"Pundosigno",curren:"Monersigno",yen:"Enosigno",brvbar:"Rompita vertikala streko",sect:"Kurba paragrafo",uml:"Tremao",copy:"Kopirajtosigno",ordf:"Adjektiva numerfinaĵo",laquo:"Duobla malplio-citilo",not:"Negohoko",reg:"Registrita marko",macr:"Superstreko",deg:"Gradosigno", -sup2:"Supra indico 2",sup3:"Supra indico 3",acute:"Dekstra korno",micro:"Mikrosigno",para:"Rekta paragrafo",middot:"Meza punkto",cedil:"Zoeto",sup1:"Supra indico 1",ordm:"Substantiva numerfinaĵo",raquo:"Duobla plio-citilo",frac14:"Kvaronosigno",frac12:"Duonosigno",frac34:"Trikvaronosigno",iquest:"renversita demandosigno",Agrave:"Latina ĉeflitero A kun liva korno",Aacute:"Latina ĉeflitero A kun dekstra korno",Acirc:"Latina ĉeflitero A kun ĉapelo",Atilde:"Latina ĉeflitero A kun tildo",Auml:"Latina ĉeflitero A kun tremao", -Aring:"Latina ĉeflitero A kun superringo",AElig:"Latina ĉeflitera ligaturo Æ",Ccedil:"Latina ĉeflitero C kun zoeto",Egrave:"Latina ĉeflitero E kun liva korno",Eacute:"Latina ĉeflitero E kun dekstra korno",Ecirc:"Latina ĉeflitero E kun ĉapelo",Euml:"Latina ĉeflitero E kun tremao",Igrave:"Latina ĉeflitero I kun liva korno",Iacute:"Latina ĉeflitero I kun dekstra korno",Icirc:"Latina ĉeflitero I kun ĉapelo",Iuml:"Latina ĉeflitero I kun tremao",ETH:"Latina ĉeflitero islanda edo",Ntilde:"Latina ĉeflitero N kun tildo", -Ograve:"Latina ĉeflitero O kun liva korno",Oacute:"Latina ĉeflitero O kun dekstra korno",Ocirc:"Latina ĉeflitero O kun ĉapelo",Otilde:"Latina ĉeflitero O kun tildo",Ouml:"Latina ĉeflitero O kun tremao",times:"Multipliko",Oslash:"Latina ĉeflitero O trastrekita",Ugrave:"Latina ĉeflitero U kun liva korno",Uacute:"Latina ĉeflitero U kun dekstra korno",Ucirc:"Latina ĉeflitero U kun ĉapelo",Uuml:"Latina ĉeflitero U kun tremao",Yacute:"Latina ĉeflitero Y kun dekstra korno",THORN:"Latina ĉeflitero islanda dorno", -szlig:"Latina etlitero germana sozo (akra s)",agrave:"Latina etlitero a kun liva korno",aacute:"Latina etlitero a kun dekstra korno",acirc:"Latina etlitero a kun ĉapelo",atilde:"Latina etlitero a kun tildo",auml:"Latina etlitero a kun tremao",aring:"Latina etlitero a kun superringo",aelig:"Latina etlitera ligaturo æ",ccedil:"Latina etlitero c kun zoeto",egrave:"Latina etlitero e kun liva korno",eacute:"Latina etlitero e kun dekstra korno",ecirc:"Latina etlitero e kun ĉapelo",euml:"Latina etlitero e kun tremao", -igrave:"Latina etlitero i kun liva korno",iacute:"Latina etlitero i kun dekstra korno",icirc:"Latina etlitero i kun ĉapelo",iuml:"Latina etlitero i kun tremao",eth:"Latina etlitero islanda edo",ntilde:"Latina etlitero n kun tildo",ograve:"Latina etlitero o kun liva korno",oacute:"Latina etlitero o kun dekstra korno",ocirc:"Latina etlitero o kun ĉapelo",otilde:"Latina etlitero o kun tildo",ouml:"Latina etlitero o kun tremao",divide:"Dividosigno",oslash:"Latina etlitero o trastrekita",ugrave:"Latina etlitero u kun liva korno", -uacute:"Latina etlitero u kun dekstra korno",ucirc:"Latina etlitero u kun ĉapelo",uuml:"Latina etlitero u kun tremao",yacute:"Latina etlitero y kun dekstra korno",thorn:"Latina etlitero islanda dorno",yuml:"Latina etlitero y kun tremao",OElig:"Latina ĉeflitera ligaturo Œ",oelig:"Latina etlitera ligaturo œ",372:"Latina ĉeflitero W kun ĉapelo",374:"Latina ĉeflitero Y kun ĉapelo",373:"Latina etlitero w kun ĉapelo",375:"Latina etlitero y kun ĉapelo",sbquo:"Suba 9-citilo",8219:"Supra renversita 9-citilo", -bdquo:"Suba 99-citilo",hellip:"Tripunkto",trade:"Varmarka signo",9658:"Nigra sago dekstren",bull:"Bulmarko",rarr:"Sago dekstren",rArr:"Duobla sago dekstren",hArr:"Duobla sago maldekstren",diams:"Nigra kvadrato",asymp:"Preskaŭ egala"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/es.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/es.js deleted file mode 100644 index b1254c9d..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/es.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","es",{euro:"Símbolo de euro",lsquo:"Comilla simple izquierda",rsquo:"Comilla simple derecha",ldquo:"Comilla doble izquierda",rdquo:"Comilla doble derecha",ndash:"Guión corto",mdash:"Guión medio largo",iexcl:"Signo de admiración invertido",cent:"Símbolo centavo",pound:"Símbolo libra",curren:"Símbolo moneda",yen:"Símbolo yen",brvbar:"Barra vertical rota",sect:"Símbolo sección",uml:"Diéresis",copy:"Signo de derechos de autor",ordf:"Indicador ordinal femenino",laquo:"Abre comillas angulares", -not:"Signo negación",reg:"Signo de marca registrada",macr:"Guión alto",deg:"Signo de grado",sup2:"Superíndice dos",sup3:"Superíndice tres",acute:"Acento agudo",micro:"Signo micro",para:"Signo de pi",middot:"Punto medio",cedil:"Cedilla",sup1:"Superíndice uno",ordm:"Indicador orginal masculino",raquo:"Cierra comillas angulares",frac14:"Fracción ordinaria de un quarto",frac12:"Fracción ordinaria de una mitad",frac34:"Fracción ordinaria de tres cuartos",iquest:"Signo de interrogación invertido",Agrave:"Letra A latina mayúscula con acento grave", -Aacute:"Letra A latina mayúscula con acento agudo",Acirc:"Letra A latina mayúscula con acento circunflejo",Atilde:"Letra A latina mayúscula con tilde",Auml:"Letra A latina mayúscula con diéresis",Aring:"Letra A latina mayúscula con aro arriba",AElig:"Letra Æ latina mayúscula",Ccedil:"Letra C latina mayúscula con cedilla",Egrave:"Letra E latina mayúscula con acento grave",Eacute:"Letra E latina mayúscula con acento agudo",Ecirc:"Letra E latina mayúscula con acento circunflejo",Euml:"Letra E latina mayúscula con diéresis", -Igrave:"Letra I latina mayúscula con acento grave",Iacute:"Letra I latina mayúscula con acento agudo",Icirc:"Letra I latina mayúscula con acento circunflejo",Iuml:"Letra I latina mayúscula con diéresis",ETH:"Letra Eth latina mayúscula",Ntilde:"Letra N latina mayúscula con tilde",Ograve:"Letra O latina mayúscula con acento grave",Oacute:"Letra O latina mayúscula con acento agudo",Ocirc:"Letra O latina mayúscula con acento circunflejo",Otilde:"Letra O latina mayúscula con tilde",Ouml:"Letra O latina mayúscula con diéresis", -times:"Signo de multiplicación",Oslash:"Letra O latina mayúscula con barra inclinada",Ugrave:"Letra U latina mayúscula con acento grave",Uacute:"Letra U latina mayúscula con acento agudo",Ucirc:"Letra U latina mayúscula con acento circunflejo",Uuml:"Letra U latina mayúscula con diéresis",Yacute:"Letra Y latina mayúscula con acento agudo",THORN:"Letra Thorn latina mayúscula",szlig:"Letra s latina fuerte pequeña",agrave:"Letra a latina pequeña con acento grave",aacute:"Letra a latina pequeña con acento agudo", -acirc:"Letra a latina pequeña con acento circunflejo",atilde:"Letra a latina pequeña con tilde",auml:"Letra a latina pequeña con diéresis",aring:"Letra a latina pequeña con aro arriba",aelig:"Letra æ latina pequeña",ccedil:"Letra c latina pequeña con cedilla",egrave:"Letra e latina pequeña con acento grave",eacute:"Letra e latina pequeña con acento agudo",ecirc:"Letra e latina pequeña con acento circunflejo",euml:"Letra e latina pequeña con diéresis",igrave:"Letra i latina pequeña con acento grave", -iacute:"Letra i latina pequeña con acento agudo",icirc:"Letra i latina pequeña con acento circunflejo",iuml:"Letra i latina pequeña con diéresis",eth:"Letra eth latina pequeña",ntilde:"Letra n latina pequeña con tilde",ograve:"Letra o latina pequeña con acento grave",oacute:"Letra o latina pequeña con acento agudo",ocirc:"Letra o latina pequeña con acento circunflejo",otilde:"Letra o latina pequeña con tilde",ouml:"Letra o latina pequeña con diéresis",divide:"Signo de división",oslash:"Letra o latina minúscula con barra inclinada", -ugrave:"Letra u latina pequeña con acento grave",uacute:"Letra u latina pequeña con acento agudo",ucirc:"Letra u latina pequeña con acento circunflejo",uuml:"Letra u latina pequeña con diéresis",yacute:"Letra u latina pequeña con acento agudo",thorn:"Letra thorn latina minúscula",yuml:"Letra y latina pequeña con diéresis",OElig:"Diptongo OE latino en mayúscula",oelig:"Diptongo oe latino en minúscula",372:"Letra W latina mayúscula con acento circunflejo",374:"Letra Y latina mayúscula con acento circunflejo", -373:"Letra w latina pequeña con acento circunflejo",375:"Letra y latina pequeña con acento circunflejo",sbquo:"Comilla simple baja-9",8219:"Comilla simple alta invertida-9",bdquo:"Comillas dobles bajas-9",hellip:"Puntos suspensivos horizontales",trade:"Signo de marca registrada",9658:"Apuntador negro apuntando a la derecha",bull:"Viñeta",rarr:"Flecha a la derecha",rArr:"Flecha doble a la derecha",hArr:"Flecha izquierda derecha doble",diams:"Diamante negro",asymp:"Casi igual a"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/et.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/et.js deleted file mode 100644 index d6e875e6..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/et.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","et",{euro:"Euromärk",lsquo:"Alustav ühekordne jutumärk",rsquo:"Lõpetav ühekordne jutumärk",ldquo:"Alustav kahekordne jutumärk",rdquo:"Lõpetav kahekordne jutumärk",ndash:"Enn-kriips",mdash:"Emm-kriips",iexcl:"Pööratud hüüumärk",cent:"Sendimärk",pound:"Naela märk",curren:"Valuutamärk",yen:"Jeeni märk",brvbar:"Katkestatud kriips",sect:"Lõigu märk",uml:"Täpid",copy:"Autoriõiguse märk",ordf:"Feminine ordinal indicator",laquo:"Left-pointing double angle quotation mark", -not:"Ei-märk",reg:"Registered sign",macr:"Macron",deg:"Kraadimärk",sup2:"Ülaindeks kaks",sup3:"Ülaindeks kolm",acute:"Acute accent",micro:"Mikro-märk",para:"Pilcrow sign",middot:"Keskpunkt",cedil:"Cedilla",sup1:"Ülaindeks üks",ordm:"Masculine ordinal indicator",raquo:"Right-pointing double angle quotation mark",frac14:"Vulgar fraction one quarter",frac12:"Vulgar fraction one half",frac34:"Vulgar fraction three quarters",iquest:"Inverted question mark",Agrave:"Latin capital letter A with grave accent", -Aacute:"Latin capital letter A with acute accent",Acirc:"Latin capital letter A with circumflex",Atilde:"Ladina suur A tildega",Auml:"Latin capital letter A with diaeresis",Aring:"Latin capital letter A with ring above",AElig:"Latin Capital letter Æ",Ccedil:"Latin capital letter C with cedilla",Egrave:"Latin capital letter E with grave accent",Eacute:"Latin capital letter E with acute accent",Ecirc:"Latin capital letter E with circumflex",Euml:"Latin capital letter E with diaeresis",Igrave:"Latin capital letter I with grave accent", -Iacute:"Latin capital letter I with acute accent",Icirc:"Latin capital letter I with circumflex",Iuml:"Latin capital letter I with diaeresis",ETH:"Latin capital letter Eth",Ntilde:"Latin capital letter N with tilde",Ograve:"Latin capital letter O with grave accent",Oacute:"Latin capital letter O with acute accent",Ocirc:"Latin capital letter O with circumflex",Otilde:"Latin capital letter O with tilde",Ouml:"Täppidega ladina suur O",times:"Multiplication sign",Oslash:"Latin capital letter O with stroke", -Ugrave:"Latin capital letter U with grave accent",Uacute:"Latin capital letter U with acute accent",Ucirc:"Kandilise katusega suur ladina U",Uuml:"Täppidega ladina suur U",Yacute:"Latin capital letter Y with acute accent",THORN:"Latin capital letter Thorn",szlig:"Ladina väike terav s",agrave:"Latin small letter a with grave accent",aacute:"Latin small letter a with acute accent",acirc:"Kandilise katusega ladina väike a",atilde:"Tildega ladina väike a",auml:"Täppidega ladina väike a",aring:"Latin small letter a with ring above", -aelig:"Latin small letter æ",ccedil:"Latin small letter c with cedilla",egrave:"Latin small letter e with grave accent",eacute:"Latin small letter e with acute accent",ecirc:"Latin small letter e with circumflex",euml:"Latin small letter e with diaeresis",igrave:"Latin small letter i with grave accent",iacute:"Latin small letter i with acute accent",icirc:"Latin small letter i with circumflex",iuml:"Latin small letter i with diaeresis",eth:"Latin small letter eth",ntilde:"Latin small letter n with tilde", -ograve:"Latin small letter o with grave accent",oacute:"Latin small letter o with acute accent",ocirc:"Latin small letter o with circumflex",otilde:"Latin small letter o with tilde",ouml:"Latin small letter o with diaeresis",divide:"Jagamismärk",oslash:"Latin small letter o with stroke",ugrave:"Latin small letter u with grave accent",uacute:"Latin small letter u with acute accent",ucirc:"Latin small letter u with circumflex",uuml:"Latin small letter u with diaeresis",yacute:"Latin small letter y with acute accent", -thorn:"Latin small letter thorn",yuml:"Latin small letter y with diaeresis",OElig:"Latin capital ligature OE",oelig:"Latin small ligature oe",372:"Latin capital letter W with circumflex",374:"Latin capital letter Y with circumflex",373:"Latin small letter w with circumflex",375:"Latin small letter y with circumflex",sbquo:"Single low-9 quotation mark",8219:"Single high-reversed-9 quotation mark",bdquo:"Double low-9 quotation mark",hellip:"Horizontal ellipsis",trade:"Kaubamärgi märk",9658:"Black right-pointing pointer", -bull:"Kuul",rarr:"Nool paremale",rArr:"Topeltnool paremale",hArr:"Topeltnool vasakule",diams:"Black diamond suit",asymp:"Ligikaudu võrdne"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/fa.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/fa.js deleted file mode 100644 index b32ff771..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/fa.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","fa",{euro:"نشان یورو",lsquo:"علامت نقل قول تکی چپ",rsquo:"علامت نقل قول تکی راست",ldquo:"علامت نقل قول دوتایی چپ",rdquo:"علامت نقل قول دوتایی راست",ndash:"خط تیره En",mdash:"خط تیره Em",iexcl:"علامت تعجب وارونه",cent:"نشان سنت",pound:"نشان پوند",curren:"نشان ارز",yen:"نشان ین",brvbar:"نوار شکسته",sect:"نشان بخش",uml:"نشان سواگیری",copy:"نشان کپی رایت",ordf:"شاخص ترتیبی مونث",laquo:"اشاره چپ مکرر برای زاویه علامت نقل قول",not:"نشان ثبت نشده",reg:"نشان ثبت شده", -macr:"نشان خط بالای حرف",deg:"نشان درجه",sup2:"بالانویس دو",sup3:"بالانویس سه",acute:"لهجه غلیظ",micro:"نشان مایکرو",para:"نشان محل بند",middot:"نقطه میانی",cedil:"سدیل",sup1:"بالانویس 1",ordm:"شاخص ترتیبی مذکر",raquo:"نشان زاویه‌دار دوتایی نقل قول راست چین",frac14:"واحد عامیانه 1/4",frac12:"واحد عامینه نصف",frac34:"واحد عامیانه 3/4",iquest:"علامت سوال معکوس",Agrave:"حرف A بزرگ لاتین با تلفظ غلیظ",Aacute:"حرف A بزرگ لاتین با تلفظ شدید",Acirc:"حرف A بزرگ لاتین با دور",Atilde:"حرف A بزرگ لاتین با صدای کامی", -Auml:"حرف A بزرگ لاتین با نشان سواگیری",Aring:"حرف A بزرگ لاتین با حلقه بالا",AElig:"حرف Æ بزرگ لاتین",Ccedil:"حرف C بزرگ لاتین با نشان سواگیری",Egrave:"حرف E بزرگ لاتین با تلفظ درشت",Eacute:"حرف E بزرگ لاتین با تلفظ زیر",Ecirc:"حرف E بزرگ لاتین با خمان",Euml:"حرف E بزرگ لاتین با نشان سواگیری",Igrave:"حرف I بزرگ لاتین با تلفظ درشت",Iacute:"حرف I بزرگ لاتین با تلفظ ریز",Icirc:"حرف I بزرگ لاتین با خمان",Iuml:"حرف I بزرگ لاتین با نشان سواگیری",ETH:"حرف لاتین بزرگ واکه ترتیبی",Ntilde:"حرف N بزرگ لاتین با مد", -Ograve:"حرف O بزرگ لاتین با تلفظ درشت",Oacute:"حرف O بزرگ لاتین با تلفظ ریز",Ocirc:"حرف O بزرگ لاتین با خمان",Otilde:"حرف O بزرگ لاتین با مد",Ouml:"حرف O بزرگ لاتین با نشان سواگیری",times:"نشان ضربدر",Oslash:"حرف O بزرگ لاتین با میان خط",Ugrave:"حرف U بزرگ لاتین با تلفظ درشت",Uacute:"حرف U بزرگ لاتین با تلفظ ریز",Ucirc:"حرف U بزرگ لاتین با خمان",Uuml:"حرف U بزرگ لاتین با نشان سواگیری",Yacute:"حرف Y بزرگ لاتین با تلفظ ریز",THORN:"حرف بزرگ لاتین خاردار",szlig:"حرف کوچک لاتین شارپ s",agrave:"حرف a کوچک لاتین با تلفظ درشت", -aacute:"حرف a کوچک لاتین با تلفظ ریز",acirc:"حرف a کوچک لاتین با خمان",atilde:"حرف a کوچک لاتین با صدای کامی",auml:"حرف a کوچک لاتین با نشان سواگیری",aring:"حرف a کوچک لاتین گوشواره دار",aelig:"حرف کوچک لاتین æ",ccedil:"حرف c کوچک لاتین با نشان سدیل",egrave:"حرف e کوچک لاتین با تلفظ درشت",eacute:"حرف e کوچک لاتین با تلفظ ریز",ecirc:"حرف e کوچک لاتین با خمان",euml:"حرف e کوچک لاتین با نشان سواگیری",igrave:"حرف i کوچک لاتین با تلفظ درشت",iacute:"حرف i کوچک لاتین با تلفظ ریز",icirc:"حرف i کوچک لاتین با خمان", -iuml:"حرف i کوچک لاتین با نشان سواگیری",eth:"حرف کوچک لاتین eth",ntilde:"حرف n کوچک لاتین با صدای کامی",ograve:"حرف o کوچک لاتین با تلفظ درشت",oacute:"حرف o کوچک لاتین با تلفظ زیر",ocirc:"حرف o کوچک لاتین با خمان",otilde:"حرف o کوچک لاتین با صدای کامی",ouml:"حرف o کوچک لاتین با نشان سواگیری",divide:"نشان بخش",oslash:"حرف o کوچک لاتین با میان خط",ugrave:"حرف u کوچک لاتین با تلفظ درشت",uacute:"حرف u کوچک لاتین با تلفظ ریز",ucirc:"حرف u کوچک لاتین با خمان",uuml:"حرف u کوچک لاتین با نشان سواگیری",yacute:"حرف y کوچک لاتین با تلفظ ریز", -thorn:"حرف کوچک لاتین خاردار",yuml:"حرف y کوچک لاتین با نشان سواگیری",OElig:"بند بزرگ لاتین OE",oelig:"بند کوچک لاتین oe",372:"حرف W بزرگ لاتین با خمان",374:"حرف Y بزرگ لاتین با خمان",373:"حرف w کوچک لاتین با خمان",375:"حرف y کوچک لاتین با خمان",sbquo:"نشان نقل قول تکی زیر-9",8219:"نشان نقل قول تکی high-reversed-9",bdquo:"نقل قول دوتایی پایین-9",hellip:"حذف افقی",trade:"نشان تجاری",9658:"نشانگر سیاه جهت راست",bull:"گلوله",rarr:"فلش راست",rArr:"فلش دوتایی راست",hArr:"فلش دوتایی چپ راست",diams:"نشان الماس سیاه", -asymp:"تقریبا برابر با"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/fi.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/fi.js deleted file mode 100644 index 33f76c2d..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/fi.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","fi",{euro:"Euron merkki",lsquo:"Vasen yksittäinen lainausmerkki",rsquo:"Oikea yksittäinen lainausmerkki",ldquo:"Vasen kaksoislainausmerkki",rdquo:"Oikea kaksoislainausmerkki",ndash:"En dash",mdash:"Em dash",iexcl:"Inverted exclamation mark",cent:"Sentin merkki",pound:"Punnan merkki",curren:"Valuuttamerkki",yen:"Yenin merkki",brvbar:"Broken bar",sect:"Section sign",uml:"Diaeresis",copy:"Copyright sign",ordf:"Feminine ordinal indicator",laquo:"Left-pointing double angle quotation mark", -not:"Not sign",reg:"Rekisteröity merkki",macr:"Macron",deg:"Asteen merkki",sup2:"Yläindeksi kaksi",sup3:"Yläindeksi kolme",acute:"Acute accent",micro:"Mikron merkki",para:"Pilcrow sign",middot:"Middle dot",cedil:"Cedilla",sup1:"Yläindeksi yksi",ordm:"Masculine ordinal indicator",raquo:"Right-pointing double angle quotation mark",frac14:"Vulgar fraction one quarter",frac12:"Vulgar fraction one half",frac34:"Vulgar fraction three quarters",iquest:"Ylösalaisin oleva kysymysmerkki",Agrave:"Latin capital letter A with grave accent", -Aacute:"Latin capital letter A with acute accent",Acirc:"Latin capital letter A with circumflex",Atilde:"Latin capital letter A with tilde",Auml:"Latin capital letter A with diaeresis",Aring:"Latin capital letter A with ring above",AElig:"Latin Capital letter Æ",Ccedil:"Latin capital letter C with cedilla",Egrave:"Latin capital letter E with grave accent",Eacute:"Latin capital letter E with acute accent",Ecirc:"Latin capital letter E with circumflex",Euml:"Latin capital letter E with diaeresis",Igrave:"Latin capital letter I with grave accent", -Iacute:"Latin capital letter I with acute accent",Icirc:"Latin capital letter I with circumflex",Iuml:"Latin capital letter I with diaeresis",ETH:"Latin capital letter Eth",Ntilde:"Latin capital letter N with tilde",Ograve:"Latin capital letter O with grave accent",Oacute:"Latin capital letter O with acute accent",Ocirc:"Latin capital letter O with circumflex",Otilde:"Latin capital letter O with tilde",Ouml:"Latin capital letter O with diaeresis",times:"Kertomerkki",Oslash:"Latin capital letter O with stroke", -Ugrave:"Latin capital letter U with grave accent",Uacute:"Latin capital letter U with acute accent",Ucirc:"Latin capital letter U with circumflex",Uuml:"Latin capital letter U with diaeresis",Yacute:"Latin capital letter Y with acute accent",THORN:"Latin capital letter Thorn",szlig:"Latin small letter sharp s",agrave:"Latin small letter a with grave accent",aacute:"Latin small letter a with acute accent",acirc:"Latin small letter a with circumflex",atilde:"Latin small letter a with tilde",auml:"Latin small letter a with diaeresis", -aring:"Latin small letter a with ring above",aelig:"Latin small letter æ",ccedil:"Latin small letter c with cedilla",egrave:"Latin small letter e with grave accent",eacute:"Latin small letter e with acute accent",ecirc:"Latin small letter e with circumflex",euml:"Latin small letter e with diaeresis",igrave:"Latin small letter i with grave accent",iacute:"Latin small letter i with acute accent",icirc:"Latin small letter i with circumflex",iuml:"Latin small letter i with diaeresis",eth:"Latin small letter eth", -ntilde:"Latin small letter n with tilde",ograve:"Latin small letter o with grave accent",oacute:"Latin small letter o with acute accent",ocirc:"Latin small letter o with circumflex",otilde:"Latin small letter o with tilde",ouml:"Latin small letter o with diaeresis",divide:"Jakomerkki",oslash:"Latin small letter o with stroke",ugrave:"Latin small letter u with grave accent",uacute:"Latin small letter u with acute accent",ucirc:"Latin small letter u with circumflex",uuml:"Latin small letter u with diaeresis", -yacute:"Latin small letter y with acute accent",thorn:"Latin small letter thorn",yuml:"Latin small letter y with diaeresis",OElig:"Latin capital ligature OE",oelig:"Latin small ligature oe",372:"Latin capital letter W with circumflex",374:"Latin capital letter Y with circumflex",373:"Latin small letter w with circumflex",375:"Latin small letter y with circumflex",sbquo:"Single low-9 quotation mark",8219:"Single high-reversed-9 quotation mark",bdquo:"Double low-9 quotation mark",hellip:"Horizontal ellipsis", -trade:"Tavaramerkki merkki",9658:"Black right-pointing pointer",bull:"Bullet",rarr:"Nuoli oikealle",rArr:"Kaksoisnuoli oikealle",hArr:"Kaksoisnuoli oikealle ja vasemmalle",diams:"Black diamond suit",asymp:"Noin"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/fr-ca.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/fr-ca.js deleted file mode 100644 index 92c5afc7..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/fr-ca.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","fr-ca",{euro:"Symbole Euro",lsquo:"Guillemet simple ouvrant",rsquo:"Guillemet simple fermant",ldquo:"Guillemet double ouvrant",rdquo:"Guillemet double fermant",ndash:"Tiret haut",mdash:"Tiret",iexcl:"Point d'exclamation inversé",cent:"Symbole de cent",pound:"Symbole de Livre Sterling",curren:"Symbole monétaire",yen:"Symbole du Yen",brvbar:"Barre scindée",sect:"Symbole de section",uml:"Tréma",copy:"Symbole de copyright",ordf:"Indicateur ordinal féminin",laquo:"Guillemet français ouvrant", -not:"Indicateur de négation",reg:"Symbole de marque déposée",macr:"Macron",deg:"Degré",sup2:"Exposant 2",sup3:"Exposant 3",acute:"Accent aigüe",micro:"Symbole micro",para:"Paragraphe",middot:"Point médian",cedil:"Cédille",sup1:"Exposant 1",ordm:"Indicateur ordinal masculin",raquo:"Guillemet français fermant",frac14:"Un quart",frac12:"Une demi",frac34:"Trois quart",iquest:"Point d'interrogation inversé",Agrave:"A accent grave",Aacute:"A accent aigüe",Acirc:"A circonflexe",Atilde:"A tilde",Auml:"A tréma", -Aring:"A avec un rond au dessus",AElig:"Æ majuscule",Ccedil:"C cédille",Egrave:"E accent grave",Eacute:"E accent aigüe",Ecirc:"E accent circonflexe",Euml:"E tréma",Igrave:"I accent grave",Iacute:"I accent aigüe",Icirc:"I accent circonflexe",Iuml:"I tréma",ETH:"Lettre majuscule islandaise ED",Ntilde:"N tilde",Ograve:"O accent grave",Oacute:"O accent aigüe",Ocirc:"O accent circonflexe",Otilde:"O tilde",Ouml:"O tréma",times:"Symbole de multiplication",Oslash:"O barré",Ugrave:"U accent grave",Uacute:"U accent aigüe", -Ucirc:"U accent circonflexe",Uuml:"U tréma",Yacute:"Y accent aigüe",THORN:"Lettre islandaise Thorn majuscule",szlig:"Lettre minuscule allemande s dur",agrave:"a accent grave",aacute:"a accent aigüe",acirc:"a accent circonflexe",atilde:"a tilde",auml:"a tréma",aring:"a avec un cercle au dessus",aelig:"æ",ccedil:"c cédille",egrave:"e accent grave",eacute:"e accent aigüe",ecirc:"e accent circonflexe",euml:"e tréma",igrave:"i accent grave",iacute:"i accent aigüe",icirc:"i accent circonflexe",iuml:"i tréma", -eth:"Lettre minuscule islandaise ED",ntilde:"n tilde",ograve:"o accent grave",oacute:"o accent aigüe",ocirc:"O accent circonflexe",otilde:"O tilde",ouml:"O tréma",divide:"Symbole de division",oslash:"o barré",ugrave:"u accent grave",uacute:"u accent aigüe",ucirc:"u accent circonflexe",uuml:"u tréma",yacute:"y accent aigüe",thorn:"Lettre islandaise thorn minuscule",yuml:"y tréma",OElig:"ligature majuscule latine Œ",oelig:"ligature minuscule latine œ",372:"W accent circonflexe",374:"Y accent circonflexe", -373:"w accent circonflexe",375:"y accent circonflexe",sbquo:"Guillemet simple fermant",8219:"Guillemet-virgule supérieur culbuté",bdquo:"Guillemet-virgule double inférieur",hellip:"Points de suspension",trade:"Symbole de marque déposée",9658:"Flèche noire pointant vers la droite",bull:"Puce",rarr:"Flèche vers la droite",rArr:"Flèche double vers la droite",hArr:"Flèche double vers la gauche",diams:"Carreau",asymp:"Presque égal"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/fr.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/fr.js deleted file mode 100644 index 7a275e47..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/fr.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","fr",{euro:"Symbole Euro",lsquo:"Guillemet simple ouvrant",rsquo:"Guillemet simple fermant",ldquo:"Guillemet double ouvrant",rdquo:"Guillemet double fermant",ndash:"Tiret haut",mdash:"Tiret cadratin",iexcl:"Point d'exclamation inversé",cent:"Symbole Cent",pound:"Symbole Livre Sterling",curren:"Symbole monétaire",yen:"Symbole Yen",brvbar:"Barre verticale scindée",sect:"Section",uml:"Tréma",copy:"Symbole Copyright",ordf:"Indicateur ordinal féminin",laquo:"Guillemet français ouvrant", -not:"Crochet de négation",reg:"Marque déposée",macr:"Macron",deg:"Degré",sup2:"Exposant 2",sup3:"\\tExposant 3",acute:"Accent aigu",micro:"Omicron",para:"Paragraphe",middot:"Point médian",cedil:"Cédille",sup1:"\\tExposant 1",ordm:"Indicateur ordinal masculin",raquo:"Guillemet français fermant",frac14:"Un quart",frac12:"Un demi",frac34:"Trois quarts",iquest:"Point d'interrogation inversé",Agrave:"A majuscule accent grave",Aacute:"A majuscule accent aigu",Acirc:"A majuscule accent circonflexe",Atilde:"A majuscule avec caron", -Auml:"A majuscule tréma",Aring:"A majuscule avec un rond au-dessus",AElig:"Æ majuscule ligaturés",Ccedil:"C majuscule cédille",Egrave:"E majuscule accent grave",Eacute:"E majuscule accent aigu",Ecirc:"E majuscule accent circonflexe",Euml:"E majuscule tréma",Igrave:"I majuscule accent grave",Iacute:"I majuscule accent aigu",Icirc:"I majuscule accent circonflexe",Iuml:"I majuscule tréma",ETH:"Lettre majuscule islandaise ED",Ntilde:"N majuscule avec caron",Ograve:"O majuscule accent grave",Oacute:"O majuscule accent aigu", -Ocirc:"O majuscule accent circonflexe",Otilde:"O majuscule avec caron",Ouml:"O majuscule tréma",times:"Multiplication",Oslash:"O majuscule barré",Ugrave:"U majuscule accent grave",Uacute:"U majuscule accent aigu",Ucirc:"U majuscule accent circonflexe",Uuml:"U majuscule tréma",Yacute:"Y majuscule accent aigu",THORN:"Lettre islandaise Thorn majuscule",szlig:"Lettre minuscule allemande s dur",agrave:"a minuscule accent grave",aacute:"a minuscule accent aigu",acirc:"a minuscule accent circonflexe",atilde:"a minuscule avec caron", -auml:"a minuscule tréma",aring:"a minuscule avec un rond au-dessus",aelig:"æ minuscule ligaturés",ccedil:"c minuscule cédille",egrave:"e minuscule accent grave",eacute:"e minuscule accent aigu",ecirc:"e minuscule accent circonflexe",euml:"e minuscule tréma",igrave:"i minuscule accent grave",iacute:"i minuscule accent aigu",icirc:"i minuscule accent circonflexe",iuml:"i minuscule tréma",eth:"Lettre minuscule islandaise ED",ntilde:"n minuscule avec caron",ograve:"o minuscule accent grave",oacute:"o minuscule accent aigu", -ocirc:"o minuscule accent circonflexe",otilde:"o minuscule avec caron",ouml:"o minuscule tréma",divide:"Division",oslash:"o minuscule barré",ugrave:"u minuscule accent grave",uacute:"u minuscule accent aigu",ucirc:"u minuscule accent circonflexe",uuml:"u minuscule tréma",yacute:"y minuscule accent aigu",thorn:"Lettre islandaise thorn minuscule",yuml:"y minuscule tréma",OElig:"ligature majuscule latine Œ",oelig:"ligature minuscule latine œ",372:"W majuscule accent circonflexe",374:"Y majuscule accent circonflexe", -373:"w minuscule accent circonflexe",375:"y minuscule accent circonflexe",sbquo:"Guillemet simple fermant (anglais)",8219:"Guillemet-virgule supérieur culbuté",bdquo:"Guillemet-virgule double inférieur",hellip:"Points de suspension",trade:"Marque commerciale (trade mark)",9658:"Flèche noire pointant vers la droite",bull:"Gros point médian",rarr:"Flèche vers la droite",rArr:"Double flèche vers la droite",hArr:"Double flèche vers la gauche",diams:"Carreau noir",asymp:"Presque égal"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/gl.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/gl.js deleted file mode 100644 index c6592492..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/gl.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","gl",{euro:"Símbolo do euro",lsquo:"Comiña simple esquerda",rsquo:"Comiña simple dereita",ldquo:"Comiñas dobres esquerda",rdquo:"Comiñas dobres dereita",ndash:"Guión",mdash:"Raia",iexcl:"Signo de admiración invertido",cent:"Símbolo do centavo",pound:"Símbolo da libra",curren:"Símbolo de moeda",yen:"Símbolo do yen",brvbar:"Barra vertical rota",sect:"Símbolo de sección",uml:"Diérese",copy:"Símbolo de dereitos de autoría",ordf:"Indicador ordinal feminino",laquo:"Comiñas latinas, apertura", -not:"Signo negación",reg:"Símbolo de marca rexistrada",macr:"Guión alto",deg:"Signo de grao",sup2:"Superíndice dous",sup3:"Superíndice tres",acute:"Acento agudo",micro:"Signo de micro",para:"Signo de pi",middot:"Punto medio",cedil:"Cedilla",sup1:"Superíndice un",ordm:"Indicador ordinal masculino",raquo:"Comiñas latinas, peche",frac14:"Fracción ordinaria de un cuarto",frac12:"Fracción ordinaria de un medio",frac34:"Fracción ordinaria de tres cuartos",iquest:"Signo de interrogación invertido",Agrave:"Letra A latina maiúscula con acento grave", -Aacute:"Letra A latina maiúscula con acento agudo",Acirc:"Letra A latina maiúscula con acento circunflexo",Atilde:"Letra A latina maiúscula con til",Auml:"Letra A latina maiúscula con diérese",Aring:"Letra A latina maiúscula con aro enriba",AElig:"Letra Æ latina maiúscula",Ccedil:"Letra C latina maiúscula con cedilla",Egrave:"Letra E latina maiúscula con acento grave",Eacute:"Letra E latina maiúscula con acento agudo",Ecirc:"Letra E latina maiúscula con acento circunflexo",Euml:"Letra E latina maiúscula con diérese", -Igrave:"Letra I latina maiúscula con acento grave",Iacute:"Letra I latina maiúscula con acento agudo",Icirc:"Letra I latina maiúscula con acento circunflexo",Iuml:"Letra I latina maiúscula con diérese",ETH:"Letra Ed latina maiúscula",Ntilde:"Letra N latina maiúscula con til",Ograve:"Letra O latina maiúscula con acento grave",Oacute:"Letra O latina maiúscula con acento agudo",Ocirc:"Letra O latina maiúscula con acento circunflexo",Otilde:"Letra O latina maiúscula con til",Ouml:"Letra O latina maiúscula con diérese", -times:"Signo de multiplicación",Oslash:"Letra O latina maiúscula con barra transversal",Ugrave:"Letra U latina maiúscula con acento grave",Uacute:"Letra U latina maiúscula con acento agudo",Ucirc:"Letra U latina maiúscula con acento circunflexo",Uuml:"Letra U latina maiúscula con diérese",Yacute:"Letra Y latina maiúscula con acento agudo",THORN:"Letra Thorn latina maiúscula",szlig:"Letra s latina forte minúscula",agrave:"Letra a latina minúscula con acento grave",aacute:"Letra a latina minúscula con acento agudo", -acirc:"Letra a latina minúscula con acento circunflexo",atilde:"Letra a latina minúscula con til",auml:"Letra a latina minúscula con diérese",aring:"Letra a latina minúscula con aro enriba",aelig:"Letra æ latina minúscula",ccedil:"Letra c latina minúscula con cedilla",egrave:"Letra e latina minúscula con acento grave",eacute:"Letra e latina minúscula con acento agudo",ecirc:"Letra e latina minúscula con acento circunflexo",euml:"Letra e latina minúscula con diérese",igrave:"Letra i latina minúscula con acento grave", -iacute:"Letra i latina minúscula con acento agudo",icirc:"Letra i latina minúscula con acento circunflexo",iuml:"Letra i latina minúscula con diérese",eth:"Letra ed latina minúscula",ntilde:"Letra n latina minúscula con til",ograve:"Letra o latina minúscula con acento grave",oacute:"Letra o latina minúscula con acento agudo",ocirc:"Letra o latina minúscula con acento circunflexo",otilde:"Letra o latina minúscula con til",ouml:"Letra o latina minúscula con diérese",divide:"Signo de división",oslash:"Letra o latina minúscula con barra transversal", -ugrave:"Letra u latina minúscula con acento grave",uacute:"Letra u latina minúscula con acento agudo",ucirc:"Letra u latina minúscula con acento circunflexo",uuml:"Letra u latina minúscula con diérese",yacute:"Letra y latina minúscula con acento agudo",thorn:"Letra Thorn latina minúscula",yuml:"Letra y latina minúscula con diérese",OElig:"Ligadura OE latina maiúscula",oelig:"Ligadura oe latina minúscula",372:"Letra W latina maiúscula con acento circunflexo",374:"Letra Y latina maiúscula con acento circunflexo", -373:"Letra w latina minúscula con acento circunflexo",375:"Letra y latina minúscula con acento circunflexo",sbquo:"Comiña simple baixa, de apertura",8219:"Comiña simple alta, de peche",bdquo:"Comiñas dobres baixas, de apertura",hellip:"Elipse, puntos suspensivos",trade:"Signo de marca rexistrada",9658:"Apuntador negro apuntando á dereita",bull:"Viñeta",rarr:"Frecha á dereita",rArr:"Frecha dobre á dereita",hArr:"Frecha dobre da esquerda á dereita",diams:"Diamante negro",asymp:"Case igual a"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/he.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/he.js deleted file mode 100644 index 29c73983..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/he.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","he",{euro:"יורו",lsquo:"סימן ציטוט יחיד שמאלי",rsquo:"סימן ציטוט יחיד ימני",ldquo:"סימן ציטוט כפול שמאלי",rdquo:"סימן ציטוט כפול ימני",ndash:"קו מפריד קצר",mdash:"קו מפריד ארוך",iexcl:"סימן קריאה הפוך",cent:"סנט",pound:"פאונד",curren:"מטבע",yen:"ין",brvbar:"קו שבור",sect:"סימן מקטע",uml:"שתי נקודות אופקיות (Diaeresis)",copy:"סימן זכויות יוצרים (Copyright)",ordf:"סימן אורדינאלי נקבי",laquo:"סימן ציטוט זווית כפולה לשמאל",not:"סימן שלילה מתמטי",reg:"סימן רשום", -macr:"מקרון (הגיה ארוכה)",deg:"מעלות",sup2:"2 בכתיב עילי",sup3:"3 בכתיב עילי",acute:"סימן דגוש (Acute)",micro:"מיקרו",para:"סימון פסקה",middot:"נקודה אמצעית",cedil:"סדיליה",sup1:"1 בכתיב עילי",ordm:"סימן אורדינאלי זכרי",raquo:"סימן ציטוט זווית כפולה לימין",frac14:"רבע בשבר פשוט",frac12:"חצי בשבר פשוט",frac34:"שלושה רבעים בשבר פשוט",iquest:"סימן שאלה הפוך",Agrave:"אות לטינית A עם גרש (Grave)",Aacute:"Latin capital letter A with acute accent",Acirc:"Latin capital letter A with circumflex",Atilde:"Latin capital letter A with tilde", -Auml:"Latin capital letter A with diaeresis",Aring:"Latin capital letter A with ring above",AElig:"אות לטינית Æ גדולה",Ccedil:"Latin capital letter C with cedilla",Egrave:"אות לטינית E עם גרש (Grave)",Eacute:"Latin capital letter E with acute accent",Ecirc:"Latin capital letter E with circumflex",Euml:"Latin capital letter E with diaeresis",Igrave:"אות לטינית I עם גרש (Grave)",Iacute:"Latin capital letter I with acute accent",Icirc:"Latin capital letter I with circumflex",Iuml:"Latin capital letter I with diaeresis", -ETH:"אות לטינית Eth גדולה",Ntilde:"Latin capital letter N with tilde",Ograve:"אות לטינית O עם גרש (Grave)",Oacute:"Latin capital letter O with acute accent",Ocirc:"Latin capital letter O with circumflex",Otilde:"Latin capital letter O with tilde",Ouml:"Latin capital letter O with diaeresis",times:"סימן כפל",Oslash:"Latin capital letter O with stroke",Ugrave:"אות לטינית U עם גרש (Grave)",Uacute:"Latin capital letter U with acute accent",Ucirc:"Latin capital letter U with circumflex",Uuml:"Latin capital letter U with diaeresis", -Yacute:"Latin capital letter Y with acute accent",THORN:"אות לטינית Thorn גדולה",szlig:"אות לטינית s חדה קטנה",agrave:"אות לטינית a עם גרש (Grave)",aacute:"Latin small letter a with acute accent",acirc:"Latin small letter a with circumflex",atilde:"Latin small letter a with tilde",auml:"Latin small letter a with diaeresis",aring:"Latin small letter a with ring above",aelig:"אות לטינית æ קטנה",ccedil:"Latin small letter c with cedilla",egrave:"אות לטינית e עם גרש (Grave)",eacute:"Latin small letter e with acute accent", -ecirc:"Latin small letter e with circumflex",euml:"Latin small letter e with diaeresis",igrave:"אות לטינית i עם גרש (Grave)",iacute:"Latin small letter i with acute accent",icirc:"Latin small letter i with circumflex",iuml:"Latin small letter i with diaeresis",eth:"אות לטינית eth קטנה",ntilde:"Latin small letter n with tilde",ograve:"אות לטינית o עם גרש (Grave)",oacute:"Latin small letter o with acute accent",ocirc:"Latin small letter o with circumflex",otilde:"Latin small letter o with tilde",ouml:"Latin small letter o with diaeresis", -divide:"סימן חלוקה",oslash:"Latin small letter o with stroke",ugrave:"אות לטינית u עם גרש (Grave)",uacute:"Latin small letter u with acute accent",ucirc:"Latin small letter u with circumflex",uuml:"Latin small letter u with diaeresis",yacute:"Latin small letter y with acute accent",thorn:"אות לטינית thorn קטנה",yuml:"Latin small letter y with diaeresis",OElig:"Latin capital ligature OE",oelig:"Latin small ligature oe",372:"Latin capital letter W with circumflex",374:"Latin capital letter Y with circumflex", -373:"Latin small letter w with circumflex",375:"Latin small letter y with circumflex",sbquo:"סימן ציטוט נמוך יחיד",8219:"סימן ציטוט",bdquo:"סימן ציטוט נמוך כפול",hellip:"שלוש נקודות",trade:"סימן טריידמארק",9658:"סמן שחור לצד ימין",bull:"תבליט (רשימה)",rarr:"חץ לימין",rArr:"חץ כפול לימין",hArr:"חץ כפול לימין ושמאל",diams:"יהלום מלא",asymp:"כמעט שווה"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/hr.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/hr.js deleted file mode 100644 index f55749e4..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/hr.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","hr",{euro:"Euro znak",lsquo:"Lijevi jednostruki navodnik",rsquo:"Desni jednostruki navodnik",ldquo:"Lijevi dvostruki navodnik",rdquo:"Desni dvostruki navodnik",ndash:"En crtica",mdash:"Em crtica",iexcl:"Naopaki uskličnik",cent:"Cent znak",pound:"Funta znak",curren:"Znak valute",yen:"Yen znak",brvbar:"Potrgana prečka",sect:"Znak odjeljka",uml:"Prijeglasi",copy:"Copyright znak",ordf:"Feminine ordinal indicator",laquo:"Lijevi dvostruki uglati navodnik",not:"Not znak", -reg:"Registered znak",macr:"Macron",deg:"Stupanj znak",sup2:"Superscript two",sup3:"Superscript three",acute:"Acute accent",micro:"Mikro znak",para:"Pilcrow sign",middot:"Srednja točka",cedil:"Cedilla",sup1:"Superscript one",ordm:"Masculine ordinal indicator",raquo:"Desni dvostruku uglati navodnik",frac14:"Vulgar fraction one quarter",frac12:"Vulgar fraction one half",frac34:"Vulgar fraction three quarters",iquest:"Naopaki upitnik",Agrave:"Veliko latinsko slovo A s akcentom",Aacute:"Latin capital letter A with acute accent", -Acirc:"Latin capital letter A with circumflex",Atilde:"Latin capital letter A with tilde",Auml:"Latin capital letter A with diaeresis",Aring:"Latin capital letter A with ring above",AElig:"Latin Capital letter Æ",Ccedil:"Latin capital letter C with cedilla",Egrave:"Latin capital letter E with grave accent",Eacute:"Latin capital letter E with acute accent",Ecirc:"Latin capital letter E with circumflex",Euml:"Latin capital letter E with diaeresis",Igrave:"Latin capital letter I with grave accent",Iacute:"Latin capital letter I with acute accent", -Icirc:"Latin capital letter I with circumflex",Iuml:"Latin capital letter I with diaeresis",ETH:"Latin capital letter Eth",Ntilde:"Latin capital letter N with tilde",Ograve:"Latin capital letter O with grave accent",Oacute:"Latin capital letter O with acute accent",Ocirc:"Latin capital letter O with circumflex",Otilde:"Latin capital letter O with tilde",Ouml:"Latin capital letter O with diaeresis",times:"Multiplication sign",Oslash:"Latin capital letter O with stroke",Ugrave:"Latin capital letter U with grave accent", -Uacute:"Latin capital letter U with acute accent",Ucirc:"Latin capital letter U with circumflex",Uuml:"Latin capital letter U with diaeresis",Yacute:"Latin capital letter Y with acute accent",THORN:"Latin capital letter Thorn",szlig:"Latin small letter sharp s",agrave:"Latin small letter a with grave accent",aacute:"Latin small letter a with acute accent",acirc:"Latin small letter a with circumflex",atilde:"Latin small letter a with tilde",auml:"Latin small letter a with diaeresis",aring:"Latin small letter a with ring above", -aelig:"Latin small letter æ",ccedil:"Latin small letter c with cedilla",egrave:"Latin small letter e with grave accent",eacute:"Latin small letter e with acute accent",ecirc:"Latin small letter e with circumflex",euml:"Latin small letter e with diaeresis",igrave:"Latin small letter i with grave accent",iacute:"Latin small letter i with acute accent",icirc:"Latin small letter i with circumflex",iuml:"Latin small letter i with diaeresis",eth:"Latin small letter eth",ntilde:"Latin small letter n with tilde", -ograve:"Latin small letter o with grave accent",oacute:"Latin small letter o with acute accent",ocirc:"Latin small letter o with circumflex",otilde:"Latin small letter o with tilde",ouml:"Latin small letter o with diaeresis",divide:"Division sign",oslash:"Latin small letter o with stroke",ugrave:"Latin small letter u with grave accent",uacute:"Latin small letter u with acute accent",ucirc:"Latin small letter u with circumflex",uuml:"Latin small letter u with diaeresis",yacute:"Latin small letter y with acute accent", -thorn:"Latin small letter thorn",yuml:"Latin small letter y with diaeresis",OElig:"Latin capital ligature OE",oelig:"Latin small ligature oe",372:"Latin capital letter W with circumflex",374:"Latin capital letter Y with circumflex",373:"Latin small letter w with circumflex",375:"Latin small letter y with circumflex",sbquo:"Single low-9 quotation mark",8219:"Single high-reversed-9 quotation mark",bdquo:"Double low-9 quotation mark",hellip:"Horizontal ellipsis",trade:"Trade mark sign",9658:"Black right-pointing pointer", -bull:"Bullet",rarr:"Rightwards arrow",rArr:"Rightwards double arrow",hArr:"Left right double arrow",diams:"Black diamond suit",asymp:"Almost equal to"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/hu.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/hu.js deleted file mode 100644 index 52327ec2..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/hu.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","hu",{euro:"Euró jel",lsquo:"Bal szimpla idézőjel",rsquo:"Jobb szimpla idézőjel",ldquo:"Bal dupla idézőjel",rdquo:"Jobb dupla idézőjel",ndash:"Rövid gondolatjel",mdash:"Hosszú gondolatjel",iexcl:"Fordított felkiáltójel",cent:"Cent jel",pound:"Font jel",curren:"Valuta jel",yen:"Yen jel",brvbar:"Hosszú kettőspont",sect:"Paragrafus jel",uml:"Kettős hangzó jel",copy:"Szerzői jog jel",ordf:"Női sorrend mutatója",laquo:"Balra mutató duplanyíl",not:"Feltételes kötőjel", -reg:"Bejegyzett védjegy jele",macr:"Hosszúsági jel",deg:"Fok jel",sup2:"Négyzeten jel",sup3:"Köbön jel",acute:"Éles ékezet",micro:"Mikro-jel",para:"Bekezdés jel",middot:"Közép pont",cedil:"Cédille",sup1:"Elsőn jel",ordm:"Férfi sorrend mutatója",raquo:"Jobbra mutató duplanyíl",frac14:"Egy negyed jel",frac12:"Egy ketted jel",frac34:"Három negyed jel",iquest:"Fordított kérdőjel",Agrave:"Latin nagy A fordított ékezettel",Aacute:"Latin nagy A normál ékezettel",Acirc:"Latin nagy A hajtott ékezettel",Atilde:"Latin nagy A hullámjellel", -Auml:"Latin nagy A kettőspont ékezettel",Aring:"Latin nagy A gyűrű ékezettel",AElig:"Latin nagy Æ betű",Ccedil:"Latin nagy C cedillával",Egrave:"Latin nagy E fordított ékezettel",Eacute:"Latin nagy E normál ékezettel",Ecirc:"Latin nagy E hajtott ékezettel",Euml:"Latin nagy E dupla kettőspont ékezettel",Igrave:"Latin nagy I fordított ékezettel",Iacute:"Latin nagy I normál ékezettel",Icirc:"Latin nagy I hajtott ékezettel",Iuml:"Latin nagy I kettőspont ékezettel",ETH:"Latin nagy Eth betű",Ntilde:"Latin nagy N hullámjellel", -Ograve:"Latin nagy O fordított ékezettel",Oacute:"Latin nagy O normál ékezettel",Ocirc:"Latin nagy O hajtott ékezettel",Otilde:"Latin nagy O hullámjellel",Ouml:"Latin nagy O kettőspont ékezettel",times:"Szorzás jel",Oslash:"Latin O betű áthúzással",Ugrave:"Latin nagy U fordított ékezettel",Uacute:"Latin nagy U normál ékezettel",Ucirc:"Latin nagy U hajtott ékezettel",Uuml:"Latin nagy U kettőspont ékezettel",Yacute:"Latin nagy Y normál ékezettel",THORN:"Latin nagy Thorn betű",szlig:"Latin kis s betű", -agrave:"Latin kis a fordított ékezettel",aacute:"Latin kis a normál ékezettel",acirc:"Latin kis a hajtott ékezettel",atilde:"Latin kis a hullámjellel",auml:"Latin kis a kettőspont ékezettel",aring:"Latin kis a gyűrű ékezettel",aelig:"Latin kis æ betű",ccedil:"Latin kis c cedillával",egrave:"Latin kis e fordított ékezettel",eacute:"Latin kis e normál ékezettel",ecirc:"Latin kis e hajtott ékezettel",euml:"Latin kis e dupla kettőspont ékezettel",igrave:"Latin kis i fordított ékezettel",iacute:"Latin kis i normál ékezettel", -icirc:"Latin kis i hajtott ékezettel",iuml:"Latin kis i kettőspont ékezettel",eth:"Latin kis eth betű",ntilde:"Latin kis n hullámjellel",ograve:"Latin kis o fordított ékezettel",oacute:"Latin kis o normál ékezettel",ocirc:"Latin kis o hajtott ékezettel",otilde:"Latin kis o hullámjellel",ouml:"Latin kis o kettőspont ékezettel",divide:"Osztásjel",oslash:"Latin kis o betű áthúzással",ugrave:"Latin kis u fordított ékezettel",uacute:"Latin kis u normál ékezettel",ucirc:"Latin kis u hajtott ékezettel", -uuml:"Latin kis u kettőspont ékezettel",yacute:"Latin kis y normál ékezettel",thorn:"Latin kis thorn jel",yuml:"Latin kis y kettőspont ékezettel",OElig:"Latin nagy OE-jel",oelig:"Latin kis oe-jel",372:"Latin nagy W hajtott ékezettel",374:"Latin nagy Y hajtott ékezettel",373:"Latin kis w hajtott ékezettel",375:"Latin kis y hajtott ékezettel",sbquo:"Nyitó nyomdai szimpla idézőjel",8219:"Záró nyomdai záró idézőjel",bdquo:"Nyitó nyomdai dupla idézőjel",hellip:"Három pont",trade:"Kereskedelmi védjegy jele", -9658:"Jobbra mutató fekete mutató",bull:"Golyó",rarr:"Jobbra mutató nyíl",rArr:"Jobbra mutató duplanyíl",hArr:"Bal-jobb duplanyíl",diams:"Fekete gyémánt jel",asymp:"Majdnem egyenlő jel"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/id.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/id.js deleted file mode 100644 index 7c7885ad..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/id.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","id",{euro:"Tanda Euro",lsquo:"Left single quotation mark",rsquo:"Right single quotation mark",ldquo:"Left double quotation mark",rdquo:"Right double quotation mark",ndash:"En dash",mdash:"Em dash",iexcl:"Inverted exclamation mark",cent:"Cent sign",pound:"Pound sign",curren:"Currency sign",yen:"Tanda Yen",brvbar:"Broken bar",sect:"Section sign",uml:"Diaeresis",copy:"Tanda Hak Cipta",ordf:"Feminine ordinal indicator",laquo:"Left-pointing double angle quotation mark", -not:"Not sign",reg:"Tanda Telah Terdaftar",macr:"Macron",deg:"Degree sign",sup2:"Superscript two",sup3:"Superscript three",acute:"Acute accent",micro:"Micro sign",para:"Pilcrow sign",middot:"Middle dot",cedil:"Cedilla",sup1:"Superscript one",ordm:"Masculine ordinal indicator",raquo:"Right-pointing double angle quotation mark",frac14:"Vulgar fraction one quarter",frac12:"Vulgar fraction one half",frac34:"Vulgar fraction three quarters",iquest:"Inverted question mark",Agrave:"Latin capital letter A with grave accent", -Aacute:"Latin capital letter A with acute accent",Acirc:"Latin capital letter A with circumflex",Atilde:"Latin capital letter A with tilde",Auml:"Latin capital letter A with diaeresis",Aring:"Latin capital letter A with ring above",AElig:"Latin Capital letter Æ",Ccedil:"Latin capital letter C with cedilla",Egrave:"Latin capital letter E with grave accent",Eacute:"Latin capital letter E with acute accent",Ecirc:"Latin capital letter E with circumflex",Euml:"Latin capital letter E with diaeresis",Igrave:"Latin capital letter I with grave accent", -Iacute:"Latin capital letter I with acute accent",Icirc:"Latin capital letter I with circumflex",Iuml:"Latin capital letter I with diaeresis",ETH:"Latin capital letter Eth",Ntilde:"Latin capital letter N with tilde",Ograve:"Latin capital letter O with grave accent",Oacute:"Latin capital letter O with acute accent",Ocirc:"Latin capital letter O with circumflex",Otilde:"Latin capital letter O with tilde",Ouml:"Latin capital letter O with diaeresis",times:"Multiplication sign",Oslash:"Latin capital letter O with stroke", -Ugrave:"Latin capital letter U with grave accent",Uacute:"Latin capital letter U with acute accent",Ucirc:"Latin capital letter U with circumflex",Uuml:"Latin capital letter U with diaeresis",Yacute:"Latin capital letter Y with acute accent",THORN:"Latin capital letter Thorn",szlig:"Latin small letter sharp s",agrave:"Latin small letter a with grave accent",aacute:"Latin small letter a with acute accent",acirc:"Latin small letter a with circumflex",atilde:"Latin small letter a with tilde",auml:"Latin small letter a with diaeresis", -aring:"Latin small letter a with ring above",aelig:"Latin small letter æ",ccedil:"Latin small letter c with cedilla",egrave:"Latin small letter e with grave accent",eacute:"Latin small letter e with acute accent",ecirc:"Latin small letter e with circumflex",euml:"Latin small letter e with diaeresis",igrave:"Latin small letter i with grave accent",iacute:"Latin small letter i with acute accent",icirc:"Latin small letter i with circumflex",iuml:"Latin small letter i with diaeresis",eth:"Latin small letter eth", -ntilde:"Latin small letter n with tilde",ograve:"Latin small letter o with grave accent",oacute:"Latin small letter o with acute accent",ocirc:"Latin small letter o with circumflex",otilde:"Latin small letter o with tilde",ouml:"Latin small letter o with diaeresis",divide:"Division sign",oslash:"Latin small letter o with stroke",ugrave:"Latin small letter u with grave accent",uacute:"Latin small letter u with acute accent",ucirc:"Latin small letter u with circumflex",uuml:"Latin small letter u with diaeresis", -yacute:"Latin small letter y with acute accent",thorn:"Latin small letter thorn",yuml:"Latin small letter y with diaeresis",OElig:"Latin capital ligature OE",oelig:"Latin small ligature oe",372:"Latin capital letter W with circumflex",374:"Latin capital letter Y with circumflex",373:"Latin small letter w with circumflex",375:"Latin small letter y with circumflex",sbquo:"Single low-9 quotation mark",8219:"Single high-reversed-9 quotation mark",bdquo:"Double low-9 quotation mark",hellip:"Horizontal ellipsis", -trade:"Trade mark sign",9658:"Black right-pointing pointer",bull:"Bullet",rarr:"Rightwards arrow",rArr:"Rightwards double arrow",hArr:"Left right double arrow",diams:"Black diamond suit",asymp:"Almost equal to"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/it.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/it.js deleted file mode 100644 index 5bc136f4..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/it.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","it",{euro:"Simbolo Euro",lsquo:"Virgoletta singola sinistra",rsquo:"Virgoletta singola destra",ldquo:"Virgolette aperte",rdquo:"Virgolette chiuse",ndash:"Trattino",mdash:"Trattino lungo",iexcl:"Punto esclavamativo invertito",cent:"Simbolo Cent",pound:"Simbolo Sterlina",curren:"Simbolo Moneta",yen:"Simbolo Yen",brvbar:"Barra interrotta",sect:"Simbolo di sezione",uml:"Dieresi",copy:"Simbolo Copyright",ordf:"Indicatore ordinale femminile",laquo:"Virgolette basse aperte", -not:"Nessun segno",reg:"Simbolo Registrato",macr:"Macron",deg:"Simbolo Grado",sup2:"Apice Due",sup3:"Apice Tre",acute:"Accento acuto",micro:"Simbolo Micro",para:"Simbolo Paragrafo",middot:"Punto centrale",cedil:"Cediglia",sup1:"Apice Uno",ordm:"Indicatore ordinale maschile",raquo:"Virgolette basse chiuse",frac14:"Frazione volgare un quarto",frac12:"Frazione volgare un mezzo",frac34:"Frazione volgare tre quarti",iquest:"Punto interrogativo invertito",Agrave:"Lettera maiuscola latina A con accento grave", -Aacute:"Lettera maiuscola latina A con accento acuto",Acirc:"Lettera maiuscola latina A con accento circonflesso",Atilde:"Lettera maiuscola latina A con tilde",Auml:"Lettera maiuscola latina A con dieresi",Aring:"Lettera maiuscola latina A con anello sopra",AElig:"Lettera maiuscola latina AE",Ccedil:"Lettera maiuscola latina C con cediglia",Egrave:"Lettera maiuscola latina E con accento grave",Eacute:"Lettera maiuscola latina E con accento acuto",Ecirc:"Lettera maiuscola latina E con accento circonflesso", -Euml:"Lettera maiuscola latina E con dieresi",Igrave:"Lettera maiuscola latina I con accento grave",Iacute:"Lettera maiuscola latina I con accento acuto",Icirc:"Lettera maiuscola latina I con accento circonflesso",Iuml:"Lettera maiuscola latina I con dieresi",ETH:"Lettera maiuscola latina Eth",Ntilde:"Lettera maiuscola latina N con tilde",Ograve:"Lettera maiuscola latina O con accento grave",Oacute:"Lettera maiuscola latina O con accento acuto",Ocirc:"Lettera maiuscola latina O con accento circonflesso", -Otilde:"Lettera maiuscola latina O con tilde",Ouml:"Lettera maiuscola latina O con dieresi",times:"Simbolo di moltiplicazione",Oslash:"Lettera maiuscola latina O barrata",Ugrave:"Lettera maiuscola latina U con accento grave",Uacute:"Lettera maiuscola latina U con accento acuto",Ucirc:"Lettera maiuscola latina U con accento circonflesso",Uuml:"Lettera maiuscola latina U con accento circonflesso",Yacute:"Lettera maiuscola latina Y con accento acuto",THORN:"Lettera maiuscola latina Thorn",szlig:"Lettera latina minuscola doppia S", -agrave:"Lettera minuscola latina a con accento grave",aacute:"Lettera minuscola latina a con accento acuto",acirc:"Lettera minuscola latina a con accento circonflesso",atilde:"Lettera minuscola latina a con tilde",auml:"Lettera minuscola latina a con dieresi",aring:"Lettera minuscola latina a con anello superiore",aelig:"Lettera minuscola latina ae",ccedil:"Lettera minuscola latina c con cediglia",egrave:"Lettera minuscola latina e con accento grave",eacute:"Lettera minuscola latina e con accento acuto", -ecirc:"Lettera minuscola latina e con accento circonflesso",euml:"Lettera minuscola latina e con dieresi",igrave:"Lettera minuscola latina i con accento grave",iacute:"Lettera minuscola latina i con accento acuto",icirc:"Lettera minuscola latina i con accento circonflesso",iuml:"Lettera minuscola latina i con dieresi",eth:"Lettera minuscola latina eth",ntilde:"Lettera minuscola latina n con tilde",ograve:"Lettera minuscola latina o con accento grave",oacute:"Lettera minuscola latina o con accento acuto", -ocirc:"Lettera minuscola latina o con accento circonflesso",otilde:"Lettera minuscola latina o con tilde",ouml:"Lettera minuscola latina o con dieresi",divide:"Simbolo di divisione",oslash:"Lettera minuscola latina o barrata",ugrave:"Lettera minuscola latina u con accento grave",uacute:"Lettera minuscola latina u con accento acuto",ucirc:"Lettera minuscola latina u con accento circonflesso",uuml:"Lettera minuscola latina u con dieresi",yacute:"Lettera minuscola latina y con accento acuto",thorn:"Lettera minuscola latina thorn", -yuml:"Lettera minuscola latina y con dieresi",OElig:"Legatura maiuscola latina OE",oelig:"Legatura minuscola latina oe",372:"Lettera maiuscola latina W con accento circonflesso",374:"Lettera maiuscola latina Y con accento circonflesso",373:"Lettera minuscola latina w con accento circonflesso",375:"Lettera minuscola latina y con accento circonflesso",sbquo:"Singola virgoletta bassa low-9",8219:"Singola virgoletta bassa low-9 inversa",bdquo:"Doppia virgoletta bassa low-9",hellip:"Ellissi orizzontale", -trade:"Simbolo TM",9658:"Puntatore nero rivolto verso destra",bull:"Punto",rarr:"Freccia verso destra",rArr:"Doppia freccia verso destra",hArr:"Doppia freccia sinistra destra",diams:"Simbolo nero diamante",asymp:"Quasi uguale a"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/ja.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/ja.js deleted file mode 100644 index 0bbee621..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/ja.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","ja",{euro:"ユーロ記号",lsquo:"左シングル引用符",rsquo:"右シングル引用符",ldquo:"左ダブル引用符",rdquo:"右ダブル引用符",ndash:"半角ダッシュ",mdash:"全角ダッシュ",iexcl:"逆さ感嘆符",cent:"セント記号",pound:"ポンド記号",curren:"通貨記号",yen:"円記号",brvbar:"上下に分かれた縦棒",sect:"節記号",uml:"分音記号(ウムラウト)",copy:"著作権表示記号",ordf:"女性序数標識",laquo:" 始め二重山括弧引用記号",not:"論理否定記号",reg:"登録商標記号",macr:"長音符",deg:"度記号",sup2:"上つき2, 2乗",sup3:"上つき3, 3乗",acute:"揚音符",micro:"ミクロン記号",para:"段落記号",middot:"中黒",cedil:"セディラ",sup1:"上つき1",ordm:"男性序数標識",raquo:"終わり二重山括弧引用記号", -frac14:"四分の一",frac12:"二分の一",frac34:"四分の三",iquest:"逆疑問符",Agrave:"抑音符つき大文字A",Aacute:"揚音符つき大文字A",Acirc:"曲折アクセントつき大文字A",Atilde:"チルダつき大文字A",Auml:"分音記号つき大文字A",Aring:"リングつき大文字A",AElig:"AとEの合字",Ccedil:"セディラつき大文字C",Egrave:"抑音符つき大文字E",Eacute:"揚音符つき大文字E",Ecirc:"曲折アクセントつき大文字E",Euml:"分音記号つき大文字E",Igrave:"抑音符つき大文字I",Iacute:"揚音符つき大文字I",Icirc:"曲折アクセントつき大文字I",Iuml:"分音記号つき大文字I",ETH:"[アイスランド語]大文字ETH",Ntilde:"チルダつき大文字N",Ograve:"抑音符つき大文字O",Oacute:"揚音符つき大文字O",Ocirc:"曲折アクセントつき大文字O",Otilde:"チルダつき大文字O",Ouml:" 分音記号つき大文字O", -times:"乗算記号",Oslash:"打ち消し線つき大文字O",Ugrave:"抑音符つき大文字U",Uacute:"揚音符つき大文字U",Ucirc:"曲折アクセントつき大文字U",Uuml:"分音記号つき大文字U",Yacute:"揚音符つき大文字Y",THORN:"[アイスランド語]大文字THORN",szlig:"ドイツ語エスツェット",agrave:"抑音符つき小文字a",aacute:"揚音符つき小文字a",acirc:"曲折アクセントつき小文字a",atilde:"チルダつき小文字a",auml:"分音記号つき小文字a",aring:"リングつき小文字a",aelig:"aとeの合字",ccedil:"セディラつき小文字c",egrave:"抑音符つき小文字e",eacute:"揚音符つき小文字e",ecirc:"曲折アクセントつき小文字e",euml:"分音記号つき小文字e",igrave:"抑音符つき小文字i",iacute:"揚音符つき小文字i",icirc:"曲折アクセントつき小文字i",iuml:"分音記号つき小文字i",eth:"アイスランド語小文字eth", -ntilde:"チルダつき小文字n",ograve:"抑音符つき小文字o",oacute:"揚音符つき小文字o",ocirc:"曲折アクセントつき小文字o",otilde:"チルダつき小文字o",ouml:"分音記号つき小文字o",divide:"除算記号",oslash:"打ち消し線つき小文字o",ugrave:"抑音符つき小文字u",uacute:"揚音符つき小文字u",ucirc:"曲折アクセントつき小文字u",uuml:"分音記号つき小文字u",yacute:"揚音符つき小文字y",thorn:"アイスランド語小文字thorn",yuml:"分音記号つき小文字y",OElig:"OとEの合字",oelig:"oとeの合字",372:"曲折アクセントつき大文字W",374:"曲折アクセントつき大文字Y",373:"曲折アクセントつき小文字w",375:"曲折アクセントつき小文字y",sbquo:"シングル下引用符",8219:"左右逆の左引用符",bdquo:"ダブル下引用符",hellip:"三点リーダ",trade:"商標記号",9658:"右黒三角ポインタ",bull:"黒丸", -rarr:"右矢印",rArr:"右二重矢印",hArr:"左右二重矢印",diams:"ダイヤ",asymp:"漸近"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/km.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/km.js deleted file mode 100644 index 95685408..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/km.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","km",{euro:"សញ្ញា​អឺរ៉ូ",lsquo:"Left single quotation mark",rsquo:"Right single quotation mark",ldquo:"Left double quotation mark",rdquo:"Right double quotation mark",ndash:"En dash",mdash:"Em dash",iexcl:"Inverted exclamation mark",cent:"សញ្ញា​សេន",pound:"សញ្ញា​ផោន",curren:"សញ្ញា​រូបិយបណ្ណ",yen:"សញ្ញា​យ៉េន",brvbar:"Broken bar",sect:"Section sign",uml:"Diaeresis",copy:"សញ្ញា​រក្សា​សិទ្ធិ",ordf:"Feminine ordinal indicator",laquo:"Left-pointing double angle quotation mark", -not:"Not sign",reg:"Registered sign",macr:"Macron",deg:"សញ្ញា​ដឺក្រេ",sup2:"Superscript two",sup3:"Superscript three",acute:"Acute accent",micro:"សញ្ញា​មីក្រូ",para:"Pilcrow sign",middot:"Middle dot",cedil:"Cedilla",sup1:"Superscript one",ordm:"Masculine ordinal indicator",raquo:"Right-pointing double angle quotation mark",frac14:"Vulgar fraction one quarter",frac12:"Vulgar fraction one half",frac34:"Vulgar fraction three quarters",iquest:"Inverted question mark",Agrave:"Latin capital letter A with grave accent", -Aacute:"Latin capital letter A with acute accent",Acirc:"Latin capital letter A with circumflex",Atilde:"Latin capital letter A with tilde",Auml:"Latin capital letter A with diaeresis",Aring:"Latin capital letter A with ring above",AElig:"Latin Capital letter Æ",Ccedil:"Latin capital letter C with cedilla",Egrave:"Latin capital letter E with grave accent",Eacute:"Latin capital letter E with acute accent",Ecirc:"Latin capital letter E with circumflex",Euml:"Latin capital letter E with diaeresis",Igrave:"Latin capital letter I with grave accent", -Iacute:"Latin capital letter I with acute accent",Icirc:"Latin capital letter I with circumflex",Iuml:"Latin capital letter I with diaeresis",ETH:"Latin capital letter Eth",Ntilde:"Latin capital letter N with tilde",Ograve:"Latin capital letter O with grave accent",Oacute:"Latin capital letter O with acute accent",Ocirc:"Latin capital letter O with circumflex",Otilde:"Latin capital letter O with tilde",Ouml:"Latin capital letter O with diaeresis",times:"Multiplication sign",Oslash:"Latin capital letter O with stroke", -Ugrave:"Latin capital letter U with grave accent",Uacute:"Latin capital letter U with acute accent",Ucirc:"Latin capital letter U with circumflex",Uuml:"Latin capital letter U with diaeresis",Yacute:"Latin capital letter Y with acute accent",THORN:"Latin capital letter Thorn",szlig:"Latin small letter sharp s",agrave:"Latin small letter a with grave accent",aacute:"Latin small letter a with acute accent",acirc:"Latin small letter a with circumflex",atilde:"Latin small letter a with tilde",auml:"Latin small letter a with diaeresis", -aring:"Latin small letter a with ring above",aelig:"Latin small letter æ",ccedil:"Latin small letter c with cedilla",egrave:"Latin small letter e with grave accent",eacute:"Latin small letter e with acute accent",ecirc:"Latin small letter e with circumflex",euml:"Latin small letter e with diaeresis",igrave:"Latin small letter i with grave accent",iacute:"Latin small letter i with acute accent",icirc:"Latin small letter i with circumflex",iuml:"Latin small letter i with diaeresis",eth:"Latin small letter eth", -ntilde:"Latin small letter n with tilde",ograve:"Latin small letter o with grave accent",oacute:"Latin small letter o with acute accent",ocirc:"Latin small letter o with circumflex",otilde:"Latin small letter o with tilde",ouml:"Latin small letter o with diaeresis",divide:"Division sign",oslash:"Latin small letter o with stroke",ugrave:"Latin small letter u with grave accent",uacute:"Latin small letter u with acute accent",ucirc:"Latin small letter u with circumflex",uuml:"Latin small letter u with diaeresis", -yacute:"Latin small letter y with acute accent",thorn:"Latin small letter thorn",yuml:"Latin small letter y with diaeresis",OElig:"Latin capital ligature OE",oelig:"Latin small ligature oe",372:"Latin capital letter W with circumflex",374:"Latin capital letter Y with circumflex",373:"Latin small letter w with circumflex",375:"Latin small letter y with circumflex",sbquo:"Single low-9 quotation mark",8219:"Single high-reversed-9 quotation mark",bdquo:"Double low-9 quotation mark",hellip:"Horizontal ellipsis", -trade:"Trade mark sign",9658:"Black right-pointing pointer",bull:"Bullet",rarr:"Rightwards arrow",rArr:"Rightwards double arrow",hArr:"Left right double arrow",diams:"Black diamond suit",asymp:"Almost equal to"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/ku.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/ku.js deleted file mode 100644 index af275c96..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/ku.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","ku",{euro:"نیشانەی یۆرۆ",lsquo:"نیشانەی فاریزەی سەرووژێری تاکی چەپ",rsquo:"نیشانەی فاریزەی سەرووژێری تاکی ڕاست",ldquo:"نیشانەی فاریزەی سەرووژێری دووهێندەی چه‌پ",rdquo:"نیشانەی فاریزەی سەرووژێری دووهێندەی ڕاست",ndash:"تەقەڵی کورت",mdash:"تەقەڵی درێژ",iexcl:"نیشانەی هەڵەوگێڕی سەرسوڕهێنەر",cent:"نیشانەی سەنت",pound:"نیشانەی پاوەند",curren:"نیشانەی دراو",yen:"نیشانەی یەنی ژاپۆنی",brvbar:"شریتی ئەستوونی پچڕاو",sect:"نیشانەی دوو s لەسەریەک",uml:"خاڵ",copy:"نیشانەی مافی چاپ", -ordf:"هێڵ لەسەر پیتی a",laquo:"دوو تیری بەدووایەکی چەپ",not:"نیشانەی نەخێر",reg:"نیشانەی R لەناو بازنەدا",macr:"ماکڕۆن",deg:"نیشانەی پلە",sup2:"سەرنووسی دوو",sup3:"سەرنووسی سێ",acute:"لاری تیژ",micro:"نیشانەی u لق درێژی چەپی خواروو",para:"نیشانەی پەڕەگراف",middot:"ناوەڕاستی خاڵ",cedil:"نیشانەی c ژێر چووکرە",sup1:"سەرنووسی یەک",ordm:"هێڵ لەژێر پیتی o",raquo:"دوو تیری بەدووایەکی ڕاست",frac14:"یەک لەسەر چووار",frac12:"یەک لەسەر دوو",frac34:"سێ لەسەر چووار",iquest:"هێمای هەڵەوگێری پرسیار",Agrave:"پیتی لاتینی A-ی گەورە لەگەڵ ڕوومەتداری لار", -Aacute:"پیتی لاتینی A-ی گەورە لەگەڵ ڕوومەتداری تیژ",Acirc:"پیتی لاتینی A-ی گەورە لەگەڵ نیشانە لەسەری",Atilde:"پیتی لاتینی A-ی گەورە لەگەڵ زەڕە",Auml:"پیتی لاتینی A-ی گەورە لەگەڵ نیشانە لەسەری",Aring:"پیتی لاتینی گەورەی Å",AElig:"پیتی لاتینی گەورەی Æ",Ccedil:"پیتی لاتینی C-ی گەورە لەگەڵ ژێر چووکرە",Egrave:"پیتی لاتینی E-ی گەورە لەگەڵ ڕوومەتداری لار",Eacute:"پیتی لاتینی E-ی گەورە لەگەڵ ڕوومەتداری تیژ",Ecirc:"پیتی لاتینی E-ی گەورە لەگەڵ نیشانە لەسەری",Euml:"پیتی لاتینی E-ی گەورە لەگەڵ نیشانە لەسەری", -Igrave:"پیتی لاتینی I-ی گەورە لەگەڵ ڕوومەتداری لار",Iacute:"پیتی لاتینی I-ی گەورە لەگەڵ ڕوومەتداری تیژ",Icirc:"پیتی لاتینی I-ی گەورە لەگەڵ نیشانە لەسەری",Iuml:"پیتی لاتینی I-ی گەورە لەگەڵ نیشانە لەسەری",ETH:"پیتی لاتینی E-ی گەورەی",Ntilde:"پیتی لاتینی N-ی گەورە لەگەڵ زەڕە",Ograve:"پیتی لاتینی O-ی گەورە لەگەڵ ڕوومەتداری لار",Oacute:"پیتی لاتینی O-ی گەورە لەگەڵ ڕوومەتداری تیژ",Ocirc:"پیتی لاتینی O-ی گەورە لەگەڵ نیشانە لەسەری",Otilde:"پیتی لاتینی O-ی گەورە لەگەڵ زەڕە",Ouml:"پیتی لاتینی O-ی گەورە لەگەڵ نیشانە لەسەری", -times:"نیشانەی لێکدان",Oslash:"پیتی لاتینی گەورەی Ø لەگەڵ هێمای دڵ وەستان",Ugrave:"پیتی لاتینی U-ی گەورە لەگەڵ ڕوومەتداری لار",Uacute:"پیتی لاتینی U-ی گەورە لەگەڵ ڕوومەتداری تیژ",Ucirc:"پیتی لاتینی U-ی گەورە لەگەڵ نیشانە لەسەری",Uuml:"پیتی لاتینی U-ی گەورە لەگەڵ نیشانە لەسەری",Yacute:"پیتی لاتینی Y-ی گەورە لەگەڵ ڕوومەتداری تیژ",THORN:"پیتی لاتینی دڕکی گەورە",szlig:"پیتی لاتنی نووک تیژی s",agrave:"پیتی لاتینی a-ی بچووک لەگەڵ ڕوومەتداری لار",aacute:"پیتی لاتینی a-ی بچووك لەگەڵ ڕوومەتداری تیژ",acirc:"پیتی لاتینی a-ی بچووك لەگەڵ نیشانە لەسەری", -atilde:"پیتی لاتینی a-ی بچووك لەگەڵ زەڕە",auml:"پیتی لاتینی a-ی بچووك لەگەڵ نیشانە لەسەری",aring:"پیتی لاتینی å-ی بچووك",aelig:"پیتی لاتینی æ-ی بچووك",ccedil:"پیتی لاتینی c-ی بچووك لەگەڵ ژێر چووکرە",egrave:"پیتی لاتینی e-ی بچووك لەگەڵ ڕوومەتداری لار",eacute:"پیتی لاتینی e-ی بچووك لەگەڵ ڕوومەتداری تیژ",ecirc:"پیتی لاتینی e-ی بچووك لەگەڵ نیشانە لەسەری",euml:"پیتی لاتینی e-ی بچووك لەگەڵ نیشانە لەسەری",igrave:"پیتی لاتینی i-ی بچووك لەگەڵ ڕوومەتداری لار",iacute:"پیتی لاتینی i-ی بچووك لەگەڵ ڕوومەتداری تیژ", -icirc:"پیتی لاتینی i-ی بچووك لەگەڵ نیشانە لەسەری",iuml:"پیتی لاتینی i-ی بچووك لەگەڵ نیشانە لەسەری",eth:"پیتی لاتینی e-ی بچووك",ntilde:"پیتی لاتینی n-ی بچووك لەگەڵ زەڕە",ograve:"پیتی لاتینی o-ی بچووك لەگەڵ ڕوومەتداری لار",oacute:"پیتی لاتینی o-ی بچووك له‌گەڵ ڕوومەتداری تیژ",ocirc:"پیتی لاتینی o-ی بچووك لەگەڵ نیشانە لەسەری",otilde:"پیتی لاتینی o-ی بچووك لەگەڵ زەڕە",ouml:"پیتی لاتینی o-ی بچووك لەگەڵ نیشانە لەسەری",divide:"نیشانەی دابەش",oslash:"پیتی لاتینی گەورەی ø لەگەڵ هێمای دڵ وەستان",ugrave:"پیتی لاتینی u-ی بچووك لەگەڵ ڕوومەتداری لار", -uacute:"پیتی لاتینی u-ی بچووك لەگەڵ ڕوومەتداری تیژ",ucirc:"پیتی لاتینی u-ی بچووك لەگەڵ نیشانە لەسەری",uuml:"پیتی لاتینی u-ی بچووك لەگەڵ نیشانە لەسەری",yacute:"پیتی لاتینی y-ی بچووك لەگەڵ ڕوومەتداری تیژ",thorn:"پیتی لاتینی دڕکی بچووك",yuml:"پیتی لاتینی y-ی بچووك لەگەڵ نیشانە لەسەری",OElig:"پیتی لاتینی گەورەی پێکەوەنووسراوی OE",oelig:"پیتی لاتینی بچووکی پێکەوەنووسراوی oe",372:"پیتی لاتینی W-ی گەورە لەگەڵ نیشانە لەسەری",374:"پیتی لاتینی Y-ی گەورە لەگەڵ نیشانە لەسەری",373:"پیتی لاتینی w-ی بچووکی لەگەڵ نیشانە لەسەری", -375:"پیتی لاتینی y-ی بچووکی لەگەڵ نیشانە لەسەری",sbquo:"نیشانەی فاریزەی نزم",8219:"نیشانەی فاریزەی بەرزی پێچەوانە",bdquo:"دوو فاریزەی تەنیش یەك",hellip:"ئاسۆیی بازنە",trade:"نیشانەی بازرگانی",9658:"ئاراستەی ڕەشی دەستی ڕاست",bull:"فیشەك",rarr:"تیری دەستی ڕاست",rArr:"دووتیری دەستی ڕاست",hArr:"دوو تیری ڕاست و چەپ",diams:"ڕەشی پاقڵاوەیی",asymp:"نیشانەی یەکسانە"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/lv.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/lv.js deleted file mode 100644 index 3f76e269..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/lv.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","lv",{euro:"Euro zīme",lsquo:"Kreisā vienkārtīga pēdiņa",rsquo:"Labā vienkārtīga pēdiņa",ldquo:"Kreisā dubult pēdiņa",rdquo:"Labā dubult pēdiņa",ndash:"En svītra",mdash:"Em svītra",iexcl:"Apgriezta izsaukuma zīme",cent:"Centu naudas zīme",pound:"Sterliņu mārciņu naudas zīme",curren:"Valūtas zīme",yen:"Jenu naudas zīme",brvbar:"Vertikāla pārrauta līnija",sect:"Paragrāfa zīme",uml:"Diakritiska zīme",copy:"Autortiesību zīme",ordf:"Sievišķas kārtas rādītājs", -laquo:"Kreisā dubult stūra pēdiņu zīme",not:"Neparakstīts",reg:"Reģistrēta zīme",macr:"Garumzīme",deg:"Grādu zīme",sup2:"Augšraksts divi",sup3:"Augšraksts trīs",acute:"Akūta uzsvara zīme",micro:"Mikro zīme",para:"Rindkopas zīme ",middot:"Vidējs punkts",cedil:"Āķītis zem burta",sup1:"Augšraksts viens",ordm:"Vīrišķīgas kārtas rādītājs",raquo:"Labā dubult stūra pēdiņu zīme",frac14:"Vulgāra frakcija 1/4",frac12:"Vulgāra frakcija 1/2",frac34:"Vulgāra frakcija 3/4",iquest:"Apgriezta jautājuma zīme",Agrave:"Lielais latīņu burts A ar uzsvara zīmi", -Aacute:"Lielais latīņu burts A ar akūtu uzsvara zīmi",Acirc:"Lielais latīņu burts A ar diakritisku zīmi",Atilde:"Lielais latīņu burts A ar tildi ",Auml:"Lielais latīņu burts A ar diakritisko zīmi",Aring:"Lielais latīņu burts A ar aplīti augšā",AElig:"Lielais latīņu burts Æ",Ccedil:"Lielais latīņu burts C ar āķīti zem burta",Egrave:"Lielais latīņu burts E ar apostrofu",Eacute:"Lielais latīņu burts E ar akūtu uzsvara zīmi",Ecirc:"Lielais latīņu burts E ar diakritisko zīmi",Euml:"Lielais latīņu burts E ar diakritisko zīmi", -Igrave:"Lielais latīņu burts I ar uzsvaras zīmi",Iacute:"Lielais latīņu burts I ar akūtu uzsvara zīmi",Icirc:"Lielais latīņu burts I ar diakritisko zīmi",Iuml:"Lielais latīņu burts I ar diakritisko zīmi",ETH:"Lielais latīņu burts Eth",Ntilde:"Lielais latīņu burts N ar tildi",Ograve:"Lielais latīņu burts O ar uzsvara zīmi",Oacute:"Lielais latīņu burts O ar akūto uzsvara zīmi",Ocirc:"Lielais latīņu burts O ar diakritisko zīmi",Otilde:"Lielais latīņu burts O ar tildi",Ouml:"Lielais latīņu burts O ar diakritisko zīmi", -times:"Reizināšanas zīme ",Oslash:"Lielais latīņu burts O ar iesvītrojumu",Ugrave:"Lielais latīņu burts U ar uzsvaras zīmi",Uacute:"Lielais latīņu burts U ar akūto uzsvars zīmi",Ucirc:"Lielais latīņu burts U ar diakritisko zīmi",Uuml:"Lielais latīņu burts U ar diakritisko zīmi",Yacute:"Lielais latīņu burts Y ar akūto uzsvaras zīmi",THORN:"Lielais latīņu burts torn",szlig:"Mazs latīņu burts ar ligatūru",agrave:"Mazs latīņu burts a ar uzsvara zīmi",aacute:"Mazs latīņu burts a ar akūto uzsvara zīmi", -acirc:"Mazs latīņu burts a ar diakritisko zīmi",atilde:"Mazs latīņu burts a ar tildi",auml:"Mazs latīņu burts a ar diakritisko zīmi",aring:"Mazs latīņu burts a ar aplīti augšā",aelig:"Mazs latīņu burts æ",ccedil:"Mazs latīņu burts c ar āķīti zem burta",egrave:"Mazs latīņu burts e ar uzsvara zīmi ",eacute:"Mazs latīņu burts e ar akūtu uzsvara zīmi",ecirc:"Mazs latīņu burts e ar diakritisko zīmi",euml:"Mazs latīņu burts e ar diakritisko zīmi",igrave:"Mazs latīņu burts i ar uzsvara zīmi ",iacute:"Mazs latīņu burts i ar akūtu uzsvara zīmi", -icirc:"Mazs latīņu burts i ar diakritisko zīmi",iuml:"Mazs latīņu burts i ar diakritisko zīmi",eth:"Mazs latīņu burts eth",ntilde:"Mazs latīņu burts n ar tildi",ograve:"Mazs latīņu burts o ar uzsvara zīmi ",oacute:"Mazs latīņu burts o ar akūtu uzsvara zīmi",ocirc:"Mazs latīņu burts o ar diakritisko zīmi",otilde:"Mazs latīņu burts o ar tildi",ouml:"Mazs latīņu burts o ar diakritisko zīmi",divide:"Dalīšanas zīme",oslash:"Mazs latīņu burts o ar iesvītrojumu",ugrave:"Mazs latīņu burts u ar uzsvara zīmi ", -uacute:"Mazs latīņu burts u ar akūtu uzsvara zīmi",ucirc:"Mazs latīņu burts u ar diakritisko zīmi",uuml:"Mazs latīņu burts u ar diakritisko zīmi",yacute:"Mazs latīņu burts y ar akūtu uzsvaras zīmi",thorn:"Mazs latīņu burts torns",yuml:"Mazs latīņu burts y ar diakritisko zīmi",OElig:"Liela latīņu ligatūra OE",oelig:"Maza latīņu ligatūra oe",372:"Liels latīņu burts W ar diakritisko zīmi ",374:"Liels latīņu burts Y ar diakritisko zīmi ",373:"Mazs latīņu burts w ar diakritisko zīmi ",375:"Mazs latīņu burts y ar diakritisko zīmi ", -sbquo:"Mazas-9 vienkārtīgas pēdiņas",8219:"Lielas-9 vienkārtīgas apgrieztas pēdiņas",bdquo:"Mazas-9 dubultas pēdiņas",hellip:"Horizontāli daudzpunkti",trade:"Preču zīmes zīme",9658:"Melns pa labi pagriezts radītājs",bull:"Lode",rarr:"Bulta pa labi",rArr:"Dubulta Bulta pa labi",hArr:"Bulta pa kreisi",diams:"Dubulta Bulta pa kreisi",asymp:"Gandrīz vienāds ar"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/nb.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/nb.js deleted file mode 100644 index 1e8a8599..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/nb.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","nb",{euro:"Eurosymbol",lsquo:"Venstre enkelt anførselstegn",rsquo:"Høyre enkelt anførselstegn",ldquo:"Venstre dobbelt anførselstegn",rdquo:"Høyre anførsesltegn",ndash:"Kort tankestrek",mdash:"Lang tankestrek",iexcl:"Omvendt utropstegn",cent:"Centsymbol",pound:"Pundsymbol",curren:"Valutategn",yen:"Yensymbol",brvbar:"Brutt loddrett strek",sect:"Paragraftegn",uml:"Tøddel",copy:"Copyrighttegn",ordf:"Feminin ordensindikator",laquo:"Venstre anførselstegn",not:"Negasjonstegn", -reg:"Registrert varemerke-tegn",macr:"Makron",deg:"Gradsymbol",sup2:"Hevet totall",sup3:"Hevet tretall",acute:"Akutt aksent",micro:"Mikrosymbol",para:"Avsnittstegn",middot:"Midtstilt prikk",cedil:"Cedille",sup1:"Hevet ettall",ordm:"Maskulin ordensindikator",raquo:"Høyre anførselstegn",frac14:"Fjerdedelsbrøk",frac12:"Halvbrøk",frac34:"Tre fjerdedelers brøk",iquest:"Omvendt spørsmålstegn",Agrave:"Stor A med grav aksent",Aacute:"Stor A med akutt aksent",Acirc:"Stor A med cirkumfleks",Atilde:"Stor A med tilde", -Auml:"Stor A med tøddel",Aring:"Stor Å",AElig:"Stor Æ",Ccedil:"Stor C med cedille",Egrave:"Stor E med grav aksent",Eacute:"Stor E med akutt aksent",Ecirc:"Stor E med cirkumfleks",Euml:"Stor E med tøddel",Igrave:"Stor I med grav aksent",Iacute:"Stor I med akutt aksent",Icirc:"Stor I med cirkumfleks",Iuml:"Stor I med tøddel",ETH:"Stor Edd/stungen D",Ntilde:"Stor N med tilde",Ograve:"Stor O med grav aksent",Oacute:"Stor O med akutt aksent",Ocirc:"Stor O med cirkumfleks",Otilde:"Stor O med tilde",Ouml:"Stor O med tøddel", -times:"Multiplikasjonstegn",Oslash:"Stor Ø",Ugrave:"Stor U med grav aksent",Uacute:"Stor U med akutt aksent",Ucirc:"Stor U med cirkumfleks",Uuml:"Stor U med tøddel",Yacute:"Stor Y med akutt aksent",THORN:"Stor Thorn",szlig:"Liten dobbelt-s/Eszett",agrave:"Liten a med grav aksent",aacute:"Liten a med akutt aksent",acirc:"Liten a med cirkumfleks",atilde:"Liten a med tilde",auml:"Liten a med tøddel",aring:"Liten å",aelig:"Liten æ",ccedil:"Liten c med cedille",egrave:"Liten e med grav aksent",eacute:"Liten e med akutt aksent", -ecirc:"Liten e med cirkumfleks",euml:"Liten e med tøddel",igrave:"Liten i med grav aksent",iacute:"Liten i med akutt aksent",icirc:"Liten i med cirkumfleks",iuml:"Liten i med tøddel",eth:"Liten edd/stungen d",ntilde:"Liten n med tilde",ograve:"Liten o med grav aksent",oacute:"Liten o med akutt aksent",ocirc:"Liten o med cirkumfleks",otilde:"Liten o med tilde",ouml:"Liten o med tøddel",divide:"Divisjonstegn",oslash:"Liten ø",ugrave:"Liten u med grav aksent",uacute:"Liten u med akutt aksent",ucirc:"Liten u med cirkumfleks", -uuml:"Liten u med tøddel",yacute:"Liten y med akutt aksent",thorn:"Liten thorn",yuml:"Liten y med tøddel",OElig:"Stor ligatur av O og E",oelig:"Liten ligatur av o og e",372:"Stor W med cirkumfleks",374:"Stor Y med cirkumfleks",373:"Liten w med cirkumfleks",375:"Liten y med cirkumfleks",sbquo:"Enkelt lavt 9-anførselstegn",8219:"Enkelt høyt reversert 9-anførselstegn",bdquo:"Dobbelt lavt 9-anførselstegn",hellip:"Ellipse",trade:"Varemerkesymbol",9658:"Svart høyrevendt peker",bull:"Tykk interpunkt",rarr:"Høyrevendt pil", -rArr:"Dobbel høyrevendt pil",hArr:"Dobbel venstrevendt pil",diams:"Svart ruter",asymp:"Omtrent likhetstegn"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/nl.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/nl.js deleted file mode 100644 index 9a8fb14c..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/nl.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","nl",{euro:"Euro-teken",lsquo:"Linker enkel aanhalingsteken",rsquo:"Rechter enkel aanhalingsteken",ldquo:"Linker dubbel aanhalingsteken",rdquo:"Rechter dubbel aanhalingsteken",ndash:"En dash",mdash:"Em dash",iexcl:"Omgekeerd uitroepteken",cent:"Cent-teken",pound:"Pond-teken",curren:"Valuta-teken",yen:"Yen-teken",brvbar:"Gebroken streep",sect:"Paragraaf-teken",uml:"Trema",copy:"Copyright-teken",ordf:"Vrouwelijk ordinaal",laquo:"Linker guillemet",not:"Ongelijk-teken", -reg:"Geregistreerd handelsmerk-teken",macr:"Macron",deg:"Graden-teken",sup2:"Superscript twee",sup3:"Superscript drie",acute:"Accent aigu",micro:"Micro-teken",para:"Alinea-teken",middot:"Halfhoge punt",cedil:"Cedille",sup1:"Superscript een",ordm:"Mannelijk ordinaal",raquo:"Rechter guillemet",frac14:"Breuk kwart",frac12:"Breuk half",frac34:"Breuk driekwart",iquest:"Omgekeerd vraagteken",Agrave:"Latijnse hoofdletter A met een accent grave",Aacute:"Latijnse hoofdletter A met een accent aigu",Acirc:"Latijnse hoofdletter A met een circonflexe", -Atilde:"Latijnse hoofdletter A met een tilde",Auml:"Latijnse hoofdletter A met een trema",Aring:"Latijnse hoofdletter A met een corona",AElig:"Latijnse hoofdletter Æ",Ccedil:"Latijnse hoofdletter C met een cedille",Egrave:"Latijnse hoofdletter E met een accent grave",Eacute:"Latijnse hoofdletter E met een accent aigu",Ecirc:"Latijnse hoofdletter E met een circonflexe",Euml:"Latijnse hoofdletter E met een trema",Igrave:"Latijnse hoofdletter I met een accent grave",Iacute:"Latijnse hoofdletter I met een accent aigu", -Icirc:"Latijnse hoofdletter I met een circonflexe",Iuml:"Latijnse hoofdletter I met een trema",ETH:"Latijnse hoofdletter Eth",Ntilde:"Latijnse hoofdletter N met een tilde",Ograve:"Latijnse hoofdletter O met een accent grave",Oacute:"Latijnse hoofdletter O met een accent aigu",Ocirc:"Latijnse hoofdletter O met een circonflexe",Otilde:"Latijnse hoofdletter O met een tilde",Ouml:"Latijnse hoofdletter O met een trema",times:"Maal-teken",Oslash:"Latijnse hoofdletter O met een schuine streep",Ugrave:"Latijnse hoofdletter U met een accent grave", -Uacute:"Latijnse hoofdletter U met een accent aigu",Ucirc:"Latijnse hoofdletter U met een circonflexe",Uuml:"Latijnse hoofdletter U met een trema",Yacute:"Latijnse hoofdletter Y met een accent aigu",THORN:"Latijnse hoofdletter Thorn",szlig:"Latijnse kleine ringel-s",agrave:"Latijnse kleine letter a met een accent grave",aacute:"Latijnse kleine letter a met een accent aigu",acirc:"Latijnse kleine letter a met een circonflexe",atilde:"Latijnse kleine letter a met een tilde",auml:"Latijnse kleine letter a met een trema", -aring:"Latijnse kleine letter a met een corona",aelig:"Latijnse kleine letter æ",ccedil:"Latijnse kleine letter c met een cedille",egrave:"Latijnse kleine letter e met een accent grave",eacute:"Latijnse kleine letter e met een accent aigu",ecirc:"Latijnse kleine letter e met een circonflexe",euml:"Latijnse kleine letter e met een trema",igrave:"Latijnse kleine letter i met een accent grave",iacute:"Latijnse kleine letter i met een accent aigu",icirc:"Latijnse kleine letter i met een circonflexe", -iuml:"Latijnse kleine letter i met een trema",eth:"Latijnse kleine letter eth",ntilde:"Latijnse kleine letter n met een tilde",ograve:"Latijnse kleine letter o met een accent grave",oacute:"Latijnse kleine letter o met een accent aigu",ocirc:"Latijnse kleine letter o met een circonflexe",otilde:"Latijnse kleine letter o met een tilde",ouml:"Latijnse kleine letter o met een trema",divide:"Deel-teken",oslash:"Latijnse kleine letter o met een schuine streep",ugrave:"Latijnse kleine letter u met een accent grave", -uacute:"Latijnse kleine letter u met een accent aigu",ucirc:"Latijnse kleine letter u met een circonflexe",uuml:"Latijnse kleine letter u met een trema",yacute:"Latijnse kleine letter y met een accent aigu",thorn:"Latijnse kleine letter thorn",yuml:"Latijnse kleine letter y met een trema",OElig:"Latijnse hoofdletter Œ",oelig:"Latijnse kleine letter œ",372:"Latijnse hoofdletter W met een circonflexe",374:"Latijnse hoofdletter Y met een circonflexe",373:"Latijnse kleine letter w met een circonflexe", -375:"Latijnse kleine letter y met een circonflexe",sbquo:"Lage enkele aanhalingsteken",8219:"Hoge omgekeerde enkele aanhalingsteken",bdquo:"Lage dubbele aanhalingsteken",hellip:"Beletselteken",trade:"Trademark-teken",9658:"Zwarte driehoek naar rechts",bull:"Bullet",rarr:"Pijl naar rechts",rArr:"Dubbele pijl naar rechts",hArr:"Dubbele pijl naar links",diams:"Zwart ruitje",asymp:"Benaderingsteken"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/no.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/no.js deleted file mode 100644 index 07870776..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/no.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","no",{euro:"Eurosymbol",lsquo:"Venstre enkelt anførselstegn",rsquo:"Høyre enkelt anførselstegn",ldquo:"Venstre dobbelt anførselstegn",rdquo:"Høyre anførsesltegn",ndash:"Kort tankestrek",mdash:"Lang tankestrek",iexcl:"Omvendt utropstegn",cent:"Centsymbol",pound:"Pundsymbol",curren:"Valutategn",yen:"Yensymbol",brvbar:"Brutt loddrett strek",sect:"Paragraftegn",uml:"Tøddel",copy:"Copyrighttegn",ordf:"Feminin ordensindikator",laquo:"Venstre anførselstegn",not:"Negasjonstegn", -reg:"Registrert varemerke-tegn",macr:"Makron",deg:"Gradsymbol",sup2:"Hevet totall",sup3:"Hevet tretall",acute:"Akutt aksent",micro:"Mikrosymbol",para:"Avsnittstegn",middot:"Midtstilt prikk",cedil:"Cedille",sup1:"Hevet ettall",ordm:"Maskulin ordensindikator",raquo:"Høyre anførselstegn",frac14:"Fjerdedelsbrøk",frac12:"Halvbrøk",frac34:"Tre fjerdedelers brøk",iquest:"Omvendt spørsmålstegn",Agrave:"Stor A med grav aksent",Aacute:"Stor A med akutt aksent",Acirc:"Stor A med cirkumfleks",Atilde:"Stor A med tilde", -Auml:"Stor A med tøddel",Aring:"Stor Å",AElig:"Stor Æ",Ccedil:"Stor C med cedille",Egrave:"Stor E med grav aksent",Eacute:"Stor E med akutt aksent",Ecirc:"Stor E med cirkumfleks",Euml:"Stor E med tøddel",Igrave:"Stor I med grav aksent",Iacute:"Stor I med akutt aksent",Icirc:"Stor I med cirkumfleks",Iuml:"Stor I med tøddel",ETH:"Stor Edd/stungen D",Ntilde:"Stor N med tilde",Ograve:"Stor O med grav aksent",Oacute:"Stor O med akutt aksent",Ocirc:"Stor O med cirkumfleks",Otilde:"Stor O med tilde",Ouml:"Stor O med tøddel", -times:"Multiplikasjonstegn",Oslash:"Stor Ø",Ugrave:"Stor U med grav aksent",Uacute:"Stor U med akutt aksent",Ucirc:"Stor U med cirkumfleks",Uuml:"Stor U med tøddel",Yacute:"Stor Y med akutt aksent",THORN:"Stor Thorn",szlig:"Liten dobbelt-s/Eszett",agrave:"Liten a med grav aksent",aacute:"Liten a med akutt aksent",acirc:"Liten a med cirkumfleks",atilde:"Liten a med tilde",auml:"Liten a med tøddel",aring:"Liten å",aelig:"Liten æ",ccedil:"Liten c med cedille",egrave:"Liten e med grav aksent",eacute:"Liten e med akutt aksent", -ecirc:"Liten e med cirkumfleks",euml:"Liten e med tøddel",igrave:"Liten i med grav aksent",iacute:"Liten i med akutt aksent",icirc:"Liten i med cirkumfleks",iuml:"Liten i med tøddel",eth:"Liten edd/stungen d",ntilde:"Liten n med tilde",ograve:"Liten o med grav aksent",oacute:"Liten o med akutt aksent",ocirc:"Liten o med cirkumfleks",otilde:"Liten o med tilde",ouml:"Liten o med tøddel",divide:"Divisjonstegn",oslash:"Liten ø",ugrave:"Liten u med grav aksent",uacute:"Liten u med akutt aksent",ucirc:"Liten u med cirkumfleks", -uuml:"Liten u med tøddel",yacute:"Liten y med akutt aksent",thorn:"Liten thorn",yuml:"Liten y med tøddel",OElig:"Stor ligatur av O og E",oelig:"Liten ligatur av o og e",372:"Stor W med cirkumfleks",374:"Stor Y med cirkumfleks",373:"Liten w med cirkumfleks",375:"Liten y med cirkumfleks",sbquo:"Enkelt lavt 9-anførselstegn",8219:"Enkelt høyt reversert 9-anførselstegn",bdquo:"Dobbelt lavt 9-anførselstegn",hellip:"Ellipse",trade:"Varemerkesymbol",9658:"Svart høyrevendt peker",bull:"Tykk interpunkt",rarr:"Høyrevendt pil", -rArr:"Dobbel høyrevendt pil",hArr:"Dobbel venstrevendt pil",diams:"Svart ruter",asymp:"Omtrent likhetstegn"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/pl.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/pl.js deleted file mode 100644 index 6b0f8026..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/pl.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","pl",{euro:"Znak euro",lsquo:"Cudzysłów pojedynczy otwierający",rsquo:"Cudzysłów pojedynczy zamykający",ldquo:"Cudzysłów apostrofowy otwierający",rdquo:"Cudzysłów apostrofowy zamykający",ndash:"Półpauza",mdash:"Pauza",iexcl:"Odwrócony wykrzyknik",cent:"Znak centa",pound:"Znak funta",curren:"Znak waluty",yen:"Znak jena",brvbar:"Przerwana pionowa kreska",sect:"Paragraf",uml:"Diereza",copy:"Znak praw autorskich",ordf:"Wskaźnik rodzaju żeńskiego liczebnika porządkowego", -laquo:"Lewy cudzysłów ostrokątny",not:"Znak negacji",reg:"Zastrzeżony znak towarowy",macr:"Makron",deg:"Znak stopnia",sup2:"Druga potęga",sup3:"Trzecia potęga",acute:"Akcent ostry",micro:"Znak mikro",para:"Znak akapitu",middot:"Kropka środkowa",cedil:"Cedylla",sup1:"Pierwsza potęga",ordm:"Wskaźnik rodzaju męskiego liczebnika porządkowego",raquo:"Prawy cudzysłów ostrokątny",frac14:"Ułamek zwykły jedna czwarta",frac12:"Ułamek zwykły jedna druga",frac34:"Ułamek zwykły trzy czwarte",iquest:"Odwrócony znak zapytania", -Agrave:"Wielka litera A z akcentem ciężkim",Aacute:"Wielka litera A z akcentem ostrym",Acirc:"Wielka litera A z akcentem przeciągłym",Atilde:"Wielka litera A z tyldą",Auml:"Wielka litera A z dierezą",Aring:"Wielka litera A z kółkiem",AElig:"Wielka ligatura Æ",Ccedil:"Wielka litera C z cedyllą",Egrave:"Wielka litera E z akcentem ciężkim",Eacute:"Wielka litera E z akcentem ostrym",Ecirc:"Wielka litera E z akcentem przeciągłym",Euml:"Wielka litera E z dierezą",Igrave:"Wielka litera I z akcentem ciężkim", -Iacute:"Wielka litera I z akcentem ostrym",Icirc:"Wielka litera I z akcentem przeciągłym",Iuml:"Wielka litera I z dierezą",ETH:"Wielka litera Eth",Ntilde:"Wielka litera N z tyldą",Ograve:"Wielka litera O z akcentem ciężkim",Oacute:"Wielka litera O z akcentem ostrym",Ocirc:"Wielka litera O z akcentem przeciągłym",Otilde:"Wielka litera O z tyldą",Ouml:"Wielka litera O z dierezą",times:"Znak mnożenia wektorowego",Oslash:"Wielka litera O z przekreśleniem",Ugrave:"Wielka litera U z akcentem ciężkim",Uacute:"Wielka litera U z akcentem ostrym", -Ucirc:"Wielka litera U z akcentem przeciągłym",Uuml:"Wielka litera U z dierezą",Yacute:"Wielka litera Y z akcentem ostrym",THORN:"Wielka litera Thorn",szlig:"Mała litera ostre s (eszet)",agrave:"Mała litera a z akcentem ciężkim",aacute:"Mała litera a z akcentem ostrym",acirc:"Mała litera a z akcentem przeciągłym",atilde:"Mała litera a z tyldą",auml:"Mała litera a z dierezą",aring:"Mała litera a z kółkiem",aelig:"Mała ligatura æ",ccedil:"Mała litera c z cedyllą",egrave:"Mała litera e z akcentem ciężkim", -eacute:"Mała litera e z akcentem ostrym",ecirc:"Mała litera e z akcentem przeciągłym",euml:"Mała litera e z dierezą",igrave:"Mała litera i z akcentem ciężkim",iacute:"Mała litera i z akcentem ostrym",icirc:"Mała litera i z akcentem przeciągłym",iuml:"Mała litera i z dierezą",eth:"Mała litera eth",ntilde:"Mała litera n z tyldą",ograve:"Mała litera o z akcentem ciężkim",oacute:"Mała litera o z akcentem ostrym",ocirc:"Mała litera o z akcentem przeciągłym",otilde:"Mała litera o z tyldą",ouml:"Mała litera o z dierezą", -divide:"Anglosaski znak dzielenia",oslash:"Mała litera o z przekreśleniem",ugrave:"Mała litera u z akcentem ciężkim",uacute:"Mała litera u z akcentem ostrym",ucirc:"Mała litera u z akcentem przeciągłym",uuml:"Mała litera u z dierezą",yacute:"Mała litera y z akcentem ostrym",thorn:"Mała litera thorn",yuml:"Mała litera y z dierezą",OElig:"Wielka ligatura OE",oelig:"Mała ligatura oe",372:"Wielka litera W z akcentem przeciągłym",374:"Wielka litera Y z akcentem przeciągłym",373:"Mała litera w z akcentem przeciągłym", -375:"Mała litera y z akcentem przeciągłym",sbquo:"Pojedynczy apostrof dolny",8219:"Pojedynczy apostrof górny",bdquo:"Podwójny apostrof dolny",hellip:"Wielokropek",trade:"Znak towarowy",9658:"Czarny wskaźnik wskazujący w prawo",bull:"Punktor",rarr:"Strzałka w prawo",rArr:"Podwójna strzałka w prawo",hArr:"Podwójna strzałka w lewo",diams:"Czarny znak karo",asymp:"Znak prawie równe"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/pt-br.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/pt-br.js deleted file mode 100644 index cb4ea1a1..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/pt-br.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","pt-br",{euro:"Euro",lsquo:"Aspas simples esquerda",rsquo:"Aspas simples direita",ldquo:"Aspas duplas esquerda",rdquo:"Aspas duplas direita",ndash:"Traço",mdash:"Travessão",iexcl:"Ponto de exclamação invertido",cent:"Cent",pound:"Cerquilha",curren:"Dinheiro",yen:"Yen",brvbar:"Bara interrompida",sect:"Símbolo de Parágrafo",uml:"Trema",copy:"Direito de Cópia",ordf:"Indicador ordinal feminino",laquo:"Aspas duplas angulares esquerda",not:"Negação",reg:"Marca Registrada", -macr:"Mácron",deg:"Grau",sup2:"2 Superscrito",sup3:"3 Superscrito",acute:"Acento agudo",micro:"Micro",para:"Pé de mosca",middot:"Ponto mediano",cedil:"Cedilha",sup1:"1 Superscrito",ordm:"Indicador ordinal masculino",raquo:"Aspas duplas angulares direita",frac14:"Um quarto",frac12:"Um meio",frac34:"Três quartos",iquest:"Interrogação invertida",Agrave:"A maiúsculo com acento grave",Aacute:"A maiúsculo com acento agudo",Acirc:"A maiúsculo com acento circunflexo",Atilde:"A maiúsculo com til",Auml:"A maiúsculo com trema", -Aring:"A maiúsculo com anel acima",AElig:"Æ maiúsculo",Ccedil:"Ç maiúlculo",Egrave:"E maiúsculo com acento grave",Eacute:"E maiúsculo com acento agudo",Ecirc:"E maiúsculo com acento circumflexo",Euml:"E maiúsculo com trema",Igrave:"I maiúsculo com acento grave",Iacute:"I maiúsculo com acento agudo",Icirc:"I maiúsculo com acento circunflexo",Iuml:"I maiúsculo com crase",ETH:"Eth maiúsculo",Ntilde:"N maiúsculo com til",Ograve:"O maiúsculo com acento grave",Oacute:"O maiúsculo com acento agudo",Ocirc:"O maiúsculo com acento circunflexo", -Otilde:"O maiúsculo com til",Ouml:"O maiúsculo com trema",times:"Multiplicação",Oslash:"Diâmetro",Ugrave:"U maiúsculo com acento grave",Uacute:"U maiúsculo com acento agudo",Ucirc:"U maiúsculo com acento circunflexo",Uuml:"U maiúsculo com trema",Yacute:"Y maiúsculo com acento agudo",THORN:"Thorn maiúsculo",szlig:"Eszett minúsculo",agrave:"a minúsculo com acento grave",aacute:"a minúsculo com acento agudo",acirc:"a minúsculo com acento circunflexo",atilde:"a minúsculo com til",auml:"a minúsculo com trema", -aring:"a minúsculo com anel acima",aelig:"æ minúsculo",ccedil:"ç minúsculo",egrave:"e minúsculo com acento grave",eacute:"e minúsculo com acento agudo",ecirc:"e minúsculo com acento circunflexo",euml:"e minúsculo com trema",igrave:"i minúsculo com acento grave",iacute:"i minúsculo com acento agudo",icirc:"i minúsculo com acento circunflexo",iuml:"i minúsculo com trema",eth:"eth minúsculo",ntilde:"n minúsculo com til",ograve:"o minúsculo com acento grave",oacute:"o minúsculo com acento agudo",ocirc:"o minúsculo com acento circunflexo", -otilde:"o minúsculo com til",ouml:"o minúsculo com trema",divide:"Divisão",oslash:"o minúsculo com cortado ou diâmetro",ugrave:"u minúsculo com acento grave",uacute:"u minúsculo com acento agudo",ucirc:"u minúsculo com acento circunflexo",uuml:"u minúsculo com trema",yacute:"y minúsculo com acento agudo",thorn:"thorn minúsculo",yuml:"y minúsculo com trema",OElig:"Ligação tipográfica OE maiúscula",oelig:"Ligação tipográfica oe minúscula",372:"W maiúsculo com acento circunflexo",374:"Y maiúsculo com acento circunflexo", -373:"w minúsculo com acento circunflexo",375:"y minúsculo com acento circunflexo",sbquo:"Aspas simples inferior direita",8219:"Aspas simples superior esquerda",bdquo:"Aspas duplas inferior direita",hellip:"Reticências",trade:"Trade mark",9658:"Ponta de seta preta para direita",bull:"Ponto lista",rarr:"Seta para direita",rArr:"Seta dupla para direita",hArr:"Seta dupla direita e esquerda",diams:"Ouros",asymp:"Aproximadamente"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/pt.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/pt.js deleted file mode 100644 index 3517162a..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/pt.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","pt",{euro:"Símbolo do Euro",lsquo:"Aspa esquerda simples",rsquo:"Aspa direita simples",ldquo:"Aspa esquerda dupla",rdquo:"Aspa direita dupla",ndash:"Travessão Simples",mdash:"Travessão Longo",iexcl:"Ponto de exclamação invertido",cent:"Símbolo do Cêntimo",pound:"Símbolo da Libra",curren:"Símbolo de Moeda",yen:"Símbolo do Iene",brvbar:"Barra quebrada",sect:"Símbolo de Secção",uml:"Trema",copy:"Símbolo dos Direitos de Autor",ordf:"Indicador ordinal feminino", -laquo:"Aspa esquerda ângulo duplo",not:"Não Símbolo",reg:"Símbolo de Registado",macr:"Mácron",deg:"Símbolo de Grau",sup2:"Expoente 2",sup3:"Expoente 3",acute:"Acento agudo",micro:"Símbolo de Micro",para:"Símbolo de Parágrafo",middot:"Ponto do Meio",cedil:"Cedilha",sup1:"Expoente 1",ordm:"Indicador ordinal masculino",raquo:"Aspas ângulo duplo pra Direita",frac14:"Fração vulgar 1/4",frac12:"Fração vulgar 1/2",frac34:"Fração vulgar 3/4",iquest:"Ponto de interrugação invertido",Agrave:"Letra maiúscula latina A com acento grave", -Aacute:"Letra maiúscula latina A com acento agudo",Acirc:"Letra maiúscula latina A com circunflexo",Atilde:"Letra maiúscula latina A com til",Auml:"Letra maiúscula latina A com trema",Aring:"Letra maiúscula latina A com sinal diacrítico",AElig:"Letra Maiúscula Latina Æ",Ccedil:"Letra maiúscula latina C com cedilha",Egrave:"Letra maiúscula latina E com acento grave",Eacute:"Letra maiúscula latina E com acento agudo",Ecirc:"Letra maiúscula latina E com circunflexo",Euml:"Letra maiúscula latina E com trema", -Igrave:"Letra maiúscula latina I com acento grave",Iacute:"Letra maiúscula latina I com acento agudo",Icirc:"Letra maiúscula latina I com cincunflexo",Iuml:"Letra maiúscula latina I com trema",ETH:"Letra maiúscula latina Eth (Ðð)",Ntilde:"Letra maiúscula latina N com til",Ograve:"Letra maiúscula latina O com acento grave",Oacute:"Letra maiúscula latina O com acento agudo",Ocirc:"Letra maiúscula latina I com circunflexo",Otilde:"Letra maiúscula latina O com til",Ouml:"Letra maiúscula latina O com trema", -times:"Símbolo de Multiplicação",Oslash:"Letra maiúscula O com barra",Ugrave:"Letra maiúscula latina U com acento grave",Uacute:"Letra maiúscula latina U com acento agudo",Ucirc:"Letra maiúscula latina U com circunflexo",Uuml:"Letra maiúscula latina E com trema",Yacute:"Letra maiúscula latina Y com acento agudo",THORN:"Letra maiúscula latina Rúnico",szlig:"Letra minúscula latina s forte",agrave:"Letra minúscula latina a com acento grave",aacute:"Letra minúscula latina a com acento agudo",acirc:"Letra minúscula latina a com circunflexo", -atilde:"Letra minúscula latina a com til",auml:"Letra minúscula latina a com trema",aring:"Letra minúscula latina a com sinal diacrítico",aelig:"Letra minúscula latina æ",ccedil:"Letra minúscula latina c com cedilha",egrave:"Letra minúscula latina e com acento grave",eacute:"Letra minúscula latina e com acento agudo",ecirc:"Letra minúscula latina e com circunflexo",euml:"Letra minúscula latina e com trema",igrave:"Letra minúscula latina i com acento grave",iacute:"Letra minúscula latina i com acento agudo", -icirc:"Letra minúscula latina i com circunflexo",iuml:"Letra pequena latina i com trema",eth:"Letra minúscula latina eth",ntilde:"Letra minúscula latina n com til",ograve:"Letra minúscula latina o com acento grave",oacute:"Letra minúscula latina o com acento agudo",ocirc:"Letra minúscula latina o com circunflexo",otilde:"Letra minúscula latina o com til",ouml:"Letra minúscula latina o com trema",divide:"Símbolo de Divisão",oslash:"Letra minúscula latina o com barra",ugrave:"Letra minúscula latina u com acento grave", -uacute:"Letra minúscula latina u com acento agudo",ucirc:"Letra minúscula latina u com circunflexo",uuml:"Letra minúscula latina u com trema",yacute:"Letra minúscula latina y com acento agudo",thorn:"Letra minúscula latina Rúnico",yuml:"Letra minúscula latina y com trema",OElig:"Ligadura maiúscula latina OE",oelig:"Ligadura minúscula latina oe",372:"Letra maiúscula latina W com circunflexo",374:"Letra maiúscula latina Y com circunflexo",373:"Letra minúscula latina w com circunflexo",375:"Letra minúscula latina y com circunflexo", -sbquo:"Aspa Simples inferior-9",8219:"Aspa Simples superior invertida-9",bdquo:"Aspa Duplas inferior-9",hellip:"Elipse Horizontal ",trade:"Símbolo de Marca Registada",9658:"Ponteiro preto direito",bull:"Marca",rarr:"Seta para a direita",rArr:"Seta dupla para a direita",hArr:"Seta dupla direita esquerda",diams:"Naipe diamante preto",asymp:"Quase igual a "}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/ru.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/ru.js deleted file mode 100644 index 622078d7..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/ru.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","ru",{euro:"Знак евро",lsquo:"Левая одинарная кавычка",rsquo:"Правая одинарная кавычка",ldquo:"Левая двойная кавычка",rdquo:"Левая двойная кавычка",ndash:"Среднее тире",mdash:"Длинное тире",iexcl:"перевёрнутый восклицательный знак",cent:"Цент",pound:"Фунт",curren:"Знак валюты",yen:"Йена",brvbar:"Вертикальная черта с разрывом",sect:"Знак параграфа",uml:"Умлаут",copy:"Знак охраны авторского права",ordf:"Указатель окончания женского рода ...ая",laquo:"Левая кавычка-«ёлочка»", -not:"Отрицание",reg:"Знак охраны смежных прав\\t",macr:"Макрон",deg:"Градус",sup2:"Надстрочное два",sup3:"Надстрочное три",acute:"Акут",micro:"Микро",para:"Абзац",middot:"Интерпункт",cedil:"Седиль",sup1:"Надстрочная единица",ordm:"Порядковое числительное",raquo:"Правая кавычка-«ёлочка»",frac14:"Одна четвертая",frac12:"Одна вторая",frac34:"Три четвёртых",iquest:"Перевёрнутый вопросительный знак",Agrave:"Латинская заглавная буква А с апострофом",Aacute:"Латинская заглавная буква A с ударением",Acirc:"Латинская заглавная буква А с циркумфлексом", -Atilde:"Латинская заглавная буква А с тильдой",Auml:"Латинская заглавная буква А с тремой",Aring:"Латинская заглавная буква А с кольцом над ней",AElig:"Латинская большая буква Æ",Ccedil:"Латинская заглавная буква C с седилью",Egrave:"Латинская заглавная буква Е с апострофом",Eacute:"Латинская заглавная буква Е с ударением",Ecirc:"Латинская заглавная буква Е с циркумфлексом",Euml:"Латинская заглавная буква Е с тремой",Igrave:"Латинская заглавная буква I с апострофом",Iacute:"Латинская заглавная буква I с ударением", -Icirc:"Латинская заглавная буква I с циркумфлексом",Iuml:"Латинская заглавная буква I с тремой",ETH:"Латинская большая буква Eth",Ntilde:"Латинская заглавная буква N с тильдой",Ograve:"Латинская заглавная буква O с апострофом",Oacute:"Латинская заглавная буква O с ударением",Ocirc:"Латинская заглавная буква O с циркумфлексом",Otilde:"Латинская заглавная буква O с тильдой",Ouml:"Латинская заглавная буква O с тремой",times:"Знак умножения",Oslash:"Латинская большая перечеркнутая O",Ugrave:"Латинская заглавная буква U с апострофом", -Uacute:"Латинская заглавная буква U с ударением",Ucirc:"Латинская заглавная буква U с циркумфлексом",Uuml:"Латинская заглавная буква U с тремой",Yacute:"Латинская заглавная буква Y с ударением",THORN:"Латинская заглавная буква Thorn",szlig:"Знак диеза",agrave:"Латинская маленькая буква a с апострофом",aacute:"Латинская маленькая буква a с ударением",acirc:"Латинская маленькая буква a с циркумфлексом",atilde:"Латинская маленькая буква a с тильдой",auml:"Латинская маленькая буква a с тремой",aring:"Латинская маленькая буква a с кольцом", -aelig:"Латинская маленькая буква æ",ccedil:"Латинская маленькая буква с с седилью",egrave:"Латинская маленькая буква е с апострофом",eacute:"Латинская маленькая буква е с ударением",ecirc:"Латинская маленькая буква е с циркумфлексом",euml:"Латинская маленькая буква е с тремой",igrave:"Латинская маленькая буква i с апострофом",iacute:"Латинская маленькая буква i с ударением",icirc:"Латинская маленькая буква i с циркумфлексом",iuml:"Латинская маленькая буква i с тремой",eth:"Латинская маленькая буква eth", -ntilde:"Латинская маленькая буква n с тильдой",ograve:"Латинская маленькая буква o с апострофом",oacute:"Латинская маленькая буква o с ударением",ocirc:"Латинская маленькая буква o с циркумфлексом",otilde:"Латинская маленькая буква o с тильдой",ouml:"Латинская маленькая буква o с тремой",divide:"Знак деления",oslash:"Латинская строчная перечеркнутая o",ugrave:"Латинская маленькая буква u с апострофом",uacute:"Латинская маленькая буква u с ударением",ucirc:"Латинская маленькая буква u с циркумфлексом", -uuml:"Латинская маленькая буква u с тремой",yacute:"Латинская маленькая буква y с ударением",thorn:"Латинская маленькая буква thorn",yuml:"Латинская маленькая буква y с тремой",OElig:"Латинская прописная лигатура OE",oelig:"Латинская строчная лигатура oe",372:"Латинская заглавная буква W с циркумфлексом",374:"Латинская заглавная буква Y с циркумфлексом",373:"Латинская маленькая буква w с циркумфлексом",375:"Латинская маленькая буква y с циркумфлексом",sbquo:"Нижняя одинарная кавычка",8219:"Правая одинарная кавычка", -bdquo:"Левая двойная кавычка",hellip:"Горизонтальное многоточие",trade:"Товарный знак",9658:"Черный указатель вправо",bull:"Маркер списка",rarr:"Стрелка вправо",rArr:"Двойная стрелка вправо",hArr:"Двойная стрелка влево-вправо",diams:"Черный ромб",asymp:"Примерно равно"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/si.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/si.js deleted file mode 100644 index eac6894b..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/si.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","si",{euro:"යුරෝ සලකුණ",lsquo:"වමේ තනි උපුටා දක්වීම ",rsquo:"දකුණේ තනි උපුටා දක්වීම ",ldquo:"වමේ දිත්ව උපුටා දක්වීම ",rdquo:"දකුණේ දිත්ව උපුටා දක්වීම ",ndash:"En dash",mdash:"Em dash",iexcl:"යටිකුරු හර්ෂදී ",cent:"Cent sign",pound:"Pound sign",curren:"මුල්‍යමය ",yen:"යෙන් ",brvbar:"Broken bar",sect:"තෙරේම් ",uml:"Diaeresis",copy:"පිටපත් අයිතිය ",ordf:"දර්ශකය",laquo:"Left-pointing double angle quotation mark",not:"සලකුණක් නොවේ",reg:"සලකුණක් ලියාපදිංචි කිරීම", -macr:"මුද්‍රිත ",deg:"සලකුණේ ",sup2:"උඩු ලකුණු දෙක",sup3:"Superscript three",acute:"Acute accent",micro:"Micro sign",para:"Pilcrow sign",middot:"Middle dot",cedil:"Cedilla",sup1:"Superscript one",ordm:"Masculine ordinal indicator",raquo:"Right-pointing double angle quotation mark",frac14:"Vulgar fraction one quarter",frac12:"Vulgar fraction one half",frac34:"Vulgar fraction three quarters",iquest:"Inverted question mark",Agrave:"Latin capital letter A with grave accent",Aacute:"Latin capital letter A with acute accent", -Acirc:"Latin capital letter A with circumflex",Atilde:"Latin capital letter A with tilde",Auml:"Latin capital letter A with diaeresis",Aring:"Latin capital letter A with ring above",AElig:"Latin Capital letter Æ",Ccedil:"Latin capital letter C with cedilla",Egrave:"Latin capital letter E with grave accent",Eacute:"Latin capital letter E with acute accent",Ecirc:"Latin capital letter E with circumflex",Euml:"Latin capital letter E with diaeresis",Igrave:"Latin capital letter I with grave accent",Iacute:"Latin capital letter I with acute accent", -Icirc:"Latin capital letter I with circumflex",Iuml:"Latin capital letter I with diaeresis",ETH:"Latin capital letter Eth",Ntilde:"Latin capital letter N with tilde",Ograve:"Latin capital letter O with grave accent",Oacute:"Latin capital letter O with acute accent",Ocirc:"Latin capital letter O with circumflex",Otilde:"Latin capital letter O with tilde",Ouml:"Latin capital letter O with diaeresis",times:"Multiplication sign",Oslash:"Latin capital letter O with stroke",Ugrave:"Latin capital letter U with grave accent", -Uacute:"Latin capital letter U with acute accent",Ucirc:"Latin capital letter U with circumflex",Uuml:"Latin capital letter U with diaeresis",Yacute:"Latin capital letter Y with acute accent",THORN:"Latin capital letter Thorn",szlig:"Latin small letter sharp s",agrave:"Latin small letter a with grave accent",aacute:"Latin small letter a with acute accent",acirc:"Latin small letter a with circumflex",atilde:"Latin small letter a with tilde",auml:"Latin small letter a with diaeresis",aring:"Latin small letter a with ring above", -aelig:"Latin small letter æ",ccedil:"Latin small letter c with cedilla",egrave:"Latin small letter e with grave accent",eacute:"Latin small letter e with acute accent",ecirc:"Latin small letter e with circumflex",euml:"Latin small letter e with diaeresis",igrave:"Latin small letter i with grave accent",iacute:"Latin small letter i with acute accent",icirc:"Latin small letter i with circumflex",iuml:"Latin small letter i with diaeresis",eth:"Latin small letter eth",ntilde:"Latin small letter n with tilde", -ograve:"Latin small letter o with grave accent",oacute:"Latin small letter o with acute accent",ocirc:"Latin small letter o with circumflex",otilde:"Latin small letter o with tilde",ouml:"Latin small letter o with diaeresis",divide:"Division sign",oslash:"Latin small letter o with stroke",ugrave:"Latin small letter u with grave accent",uacute:"Latin small letter u with acute accent",ucirc:"Latin small letter u with circumflex",uuml:"Latin small letter u with diaeresis",yacute:"Latin small letter y with acute accent", -thorn:"Latin small letter thorn",yuml:"Latin small letter y with diaeresis",OElig:"Latin capital ligature OE",oelig:"Latin small ligature oe",372:"Latin capital letter W with circumflex",374:"Latin capital letter Y with circumflex",373:"Latin small letter w with circumflex",375:"Latin small letter y with circumflex",sbquo:"Single low-9 quotation mark",8219:"Single high-reversed-9 quotation mark",bdquo:"Double low-9 quotation mark",hellip:"Horizontal ellipsis",trade:"Trade mark sign",9658:"Black right-pointing pointer", -bull:"Bullet",rarr:"Rightwards arrow",rArr:"Rightwards double arrow",hArr:"Left right double arrow",diams:"Black diamond suit",asymp:"Almost equal to"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/sk.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/sk.js deleted file mode 100644 index 7a79fb25..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/sk.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","sk",{euro:"Znak eura",lsquo:"Ľavá jednoduchá úvodzovka",rsquo:"Pravá jednoduchá úvodzovka",ldquo:"Pravá dvojitá úvodzovka",rdquo:"Pravá dvojitá úvodzovka",ndash:"En pomlčka",mdash:"Em pomlčka",iexcl:"Obrátený výkričník",cent:"Znak centu",pound:"Znak libry",curren:"Znak meny",yen:"Znak jenu",brvbar:"Prerušená zvislá čiara",sect:"Znak odseku",uml:"Prehláska",copy:"Znak copyrightu",ordf:"Ženský indikátor rodu",laquo:"Znak dvojitých lomených úvodzoviek vľavo",not:"Logistický zápor", -reg:"Znak registrácie",macr:"Pomlčka nad",deg:"Znak stupňa",sup2:"Dvojka ako horný index",sup3:"Trojka ako horný index",acute:"Dĺžeň",micro:"Znak mikro",para:"Znak odstavca",middot:"Bodka uprostred",cedil:"Chvost vľavo",sup1:"Jednotka ako horný index",ordm:"Mužský indikátor rodu",raquo:"Znak dvojitých lomených úvodzoviek vpravo",frac14:"Obyčajný zlomok jedna štvrtina",frac12:"Obyčajný zlomok jedna polovica",frac34:"Obyčajný zlomok tri štvrtiny",iquest:"Otočený otáznik",Agrave:"Veľké písmeno latinky A s accentom", -Aacute:"Veľké písmeno latinky A s dĺžňom",Acirc:"Veľké písmeno latinky A s mäkčeňom",Atilde:"Veľké písmeno latinky A s tildou",Auml:"Veľké písmeno latinky A s dvoma bodkami",Aring:"Veľké písmeno latinky A s krúžkom nad",AElig:"Veľké písmeno latinky Æ",Ccedil:"Veľké písmeno latinky C s chvostom vľavo",Egrave:"Veľké písmeno latinky E s accentom",Eacute:"Veľké písmeno latinky E s dĺžňom",Ecirc:"Veľké písmeno latinky E s mäkčeňom",Euml:"Veľké písmeno latinky E s dvoma bodkami",Igrave:"Veľké písmeno latinky I s accentom", -Iacute:"Veľké písmeno latinky I s dĺžňom",Icirc:"Veľké písmeno latinky I s mäkčeňom",Iuml:"Veľké písmeno latinky I s dvoma bodkami",ETH:"Veľké písmeno latinky Eth",Ntilde:"Veľké písmeno latinky N s tildou",Ograve:"Veľké písmeno latinky O s accentom",Oacute:"Veľké písmeno latinky O s dĺžňom",Ocirc:"Veľké písmeno latinky O s mäkčeňom",Otilde:"Veľké písmeno latinky O s tildou",Ouml:"Veľké písmeno latinky O s dvoma bodkami",times:"Znak násobenia",Oslash:"Veľké písmeno latinky O preškrtnuté",Ugrave:"Veľké písmeno latinky U s accentom", -Uacute:"Veľké písmeno latinky U s dĺžňom",Ucirc:"Veľké písmeno latinky U s mäkčeňom",Uuml:"Veľké písmeno latinky U s dvoma bodkami",Yacute:"Veľké písmeno latinky Y s dĺžňom",THORN:"Veľké písmeno latinky Thorn",szlig:"Malé písmeno latinky ostré s",agrave:"Malé písmeno latinky a s accentom",aacute:"Malé písmeno latinky a s dĺžňom",acirc:"Malé písmeno latinky a s mäkčeňom",atilde:"Malé písmeno latinky a s tildou",auml:"Malé písmeno latinky a s dvoma bodkami",aring:"Malé písmeno latinky a s krúžkom nad", -aelig:"Malé písmeno latinky æ",ccedil:"Malé písmeno latinky c s chvostom vľavo",egrave:"Malé písmeno latinky e s accentom",eacute:"Malé písmeno latinky e s dĺžňom",ecirc:"Malé písmeno latinky e s mäkčeňom",euml:"Malé písmeno latinky e s dvoma bodkami",igrave:"Malé písmeno latinky i s accentom",iacute:"Malé písmeno latinky i s dĺžňom",icirc:"Malé písmeno latinky i s mäkčeňom",iuml:"Malé písmeno latinky i s dvoma bodkami",eth:"Malé písmeno latinky eth",ntilde:"Malé písmeno latinky n s tildou",ograve:"Malé písmeno latinky o s accentom", -oacute:"Malé písmeno latinky o s dĺžňom",ocirc:"Malé písmeno latinky o s mäkčeňom",otilde:"Malé písmeno latinky o s tildou",ouml:"Malé písmeno latinky o s dvoma bodkami",divide:"Znak delenia",oslash:"Malé písmeno latinky o preškrtnuté",ugrave:"Malé písmeno latinky u s accentom",uacute:"Malé písmeno latinky u s dĺžňom",ucirc:"Malé písmeno latinky u s mäkčeňom",uuml:"Malé písmeno latinky u s dvoma bodkami",yacute:"Malé písmeno latinky y s dĺžňom",thorn:"Malé písmeno latinky thorn",yuml:"Malé písmeno latinky y s dvoma bodkami", -OElig:"Veľká ligatúra latinky OE",oelig:"Malá ligatúra latinky OE",372:"Veľké písmeno latinky W s mäkčeňom",374:"Veľké písmeno latinky Y s mäkčeňom",373:"Malé písmeno latinky w s mäkčeňom",375:"Malé písmeno latinky y s mäkčeňom",sbquo:"Dolná jednoduchá 9-úvodzovka",8219:"Horná jednoduchá otočená 9-úvodzovka",bdquo:"Dolná dvojitá 9-úvodzovka",hellip:"Trojbodkový úvod",trade:"Znak ibchodnej značky",9658:"Čierny ukazovateľ smerujúci vpravo",bull:"Kruh",rarr:"Šípka vpravo",rArr:"Dvojitá šipka vpravo", -hArr:"Dvojitá šipka vľavo a vpravo",diams:"Čierne piky",asymp:"Skoro sa rovná"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/sl.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/sl.js deleted file mode 100644 index 514e98ad..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/sl.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","sl",{euro:"Evro znak",lsquo:"Levi enojni narekovaj",rsquo:"Desni enojni narekovaj",ldquo:"Levi dvojni narekovaj",rdquo:"Desni dvojni narekovaj",ndash:"En pomišljaj",mdash:"Em pomišljaj",iexcl:"Obrnjen klicaj",cent:"Cent znak",pound:"Funt znak",curren:"Znak valute",yen:"Jen znak",brvbar:"Zlomljena črta",sect:"Znak oddelka",uml:"Diaeresis",copy:"Znak avtorskih pravic",ordf:"Ženski zaporedni kazalnik",laquo:"Levi obrnjen dvojni kotni narekovaj",not:"Ne znak",reg:"Registrirani znak", -macr:"Macron",deg:"Znak stopinj",sup2:"Nadpisano dva",sup3:"Nadpisano tri",acute:"Ostrivec",micro:"Mikro znak",para:"Pilcrow znak",middot:"Sredinska pika",cedil:"Cedilla",sup1:"Nadpisano ena",ordm:"Moški zaporedni kazalnik",raquo:"Desno obrnjen dvojni kotni narekovaj",frac14:"Ena četrtina",frac12:"Ena polovica",frac34:"Tri četrtine",iquest:"Obrnjen vprašaj",Agrave:"Velika latinska črka A s krativcem",Aacute:"Velika latinska črka A z ostrivcem",Acirc:"Velika latinska črka A s strešico",Atilde:"Velika latinska črka A z tildo", -Auml:"Velika latinska črka A z diaeresis-om",Aring:"Velika latinska črka A z obročem",AElig:"Velika latinska črka Æ",Ccedil:"Velika latinska črka C s cedillo",Egrave:"Velika latinska črka E s krativcem",Eacute:"Velika latinska črka E z ostrivcem",Ecirc:"Velika latinska črka E s strešico",Euml:"Velika latinska črka E z diaeresis-om",Igrave:"Velika latinska črka I s krativcem",Iacute:"Velika latinska črka I z ostrivcem",Icirc:"Velika latinska črka I s strešico",Iuml:"Velika latinska črka I z diaeresis-om", -ETH:"Velika latinska črka Eth",Ntilde:"Velika latinska črka N s tildo",Ograve:"Velika latinska črka O s krativcem",Oacute:"Velika latinska črka O z ostrivcem",Ocirc:"Velika latinska črka O s strešico",Otilde:"Velika latinska črka O s tildo",Ouml:"Velika latinska črka O z diaeresis-om",times:"Znak za množenje",Oslash:"Velika prečrtana latinska črka O",Ugrave:"Velika latinska črka U s krativcem",Uacute:"Velika latinska črka U z ostrivcem",Ucirc:"Velika latinska črka U s strešico",Uuml:"Velika latinska črka U z diaeresis-om", -Yacute:"Velika latinska črka Y z ostrivcem",THORN:"Velika latinska črka Thorn",szlig:"Mala ostra latinska črka s",agrave:"Mala latinska črka a s krativcem",aacute:"Mala latinska črka a z ostrivcem",acirc:"Mala latinska črka a s strešico",atilde:"Mala latinska črka a s tildo",auml:"Mala latinska črka a z diaeresis-om",aring:"Mala latinska črka a z obročem",aelig:"Mala latinska črka æ",ccedil:"Mala latinska črka c s cedillo",egrave:"Mala latinska črka e s krativcem",eacute:"Mala latinska črka e z ostrivcem", -ecirc:"Mala latinska črka e s strešico",euml:"Mala latinska črka e z diaeresis-om",igrave:"Mala latinska črka i s krativcem",iacute:"Mala latinska črka i z ostrivcem",icirc:"Mala latinska črka i s strešico",iuml:"Mala latinska črka i z diaeresis-om",eth:"Mala latinska črka eth",ntilde:"Mala latinska črka n s tildo",ograve:"Mala latinska črka o s krativcem",oacute:"Mala latinska črka o z ostrivcem",ocirc:"Mala latinska črka o s strešico",otilde:"Mala latinska črka o s tildo",ouml:"Mala latinska črka o z diaeresis-om", -divide:"Znak za deljenje",oslash:"Mala prečrtana latinska črka o",ugrave:"Mala latinska črka u s krativcem",uacute:"Mala latinska črka u z ostrivcem",ucirc:"Mala latinska črka u s strešico",uuml:"Mala latinska črka u z diaeresis-om",yacute:"Mala latinska črka y z ostrivcem",thorn:"Mala latinska črka thorn",yuml:"Mala latinska črka y z diaeresis-om",OElig:"Velika latinska ligatura OE",oelig:"Mala latinska ligatura oe",372:"Velika latinska črka W s strešico",374:"Velika latinska črka Y s strešico", -373:"Mala latinska črka w s strešico",375:"Mala latinska črka y s strešico",sbquo:"Enojni nizki-9 narekovaj",8219:"Enojni visoki-obrnjen-9 narekovaj",bdquo:"Dvojni nizki-9 narekovaj",hellip:"Horizontalni izpust",trade:"Znak blagovne znamke",9658:"Črni desno-usmerjen kazalec",bull:"Krogla",rarr:"Desno-usmerjena puščica",rArr:"Desno-usmerjena dvojna puščica",hArr:"Leva in desna dvojna puščica",diams:"Črna kara",asymp:"Skoraj enako"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/sq.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/sq.js deleted file mode 100644 index bab1b7e5..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/sq.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","sq",{euro:"Shenja e Euros",lsquo:"Thonjëza majtas me një vi",rsquo:"Thonjëza djathtas me një vi",ldquo:"Thonjëza majtas",rdquo:"Thonjëza djathtas",ndash:"En viza lidhëse",mdash:"Em viza lidhëse",iexcl:"Pikëçuditëse e përmbysur",cent:"Shenja e Centit",pound:"Shejna e Funtit",curren:"Shenja e valutës",yen:"Shenja e Jenit",brvbar:"Viza e këputur",sect:"Shenja e pjesës",uml:"Diaeresis",copy:"Shenja e të drejtave të kopjimit",ordf:"Feminine ordinal indicator",laquo:"Left-pointing double angle quotation mark", -not:"Nuk ka shenjë",reg:"Shenja e të regjistruarit",macr:"Macron",deg:"Shenja e shkallës",sup2:"Super-skripta dy",sup3:"Super-skripta tre",acute:"Theks i mprehtë",micro:"Shjenja e Mikros",para:"Pilcrow sign",middot:"Pika e Mesme",cedil:"Hark nën shkronja",sup1:"Super-skripta një",ordm:"Masculine ordinal indicator",raquo:"Right-pointing double angle quotation mark",frac14:"Thyesa një të katrat",frac12:"Thyesa një të dytat",frac34:"Thyesa tre të katrat",iquest:"Pikëpyetje e përmbysur",Agrave:"Shkronja e madhe latine A me theks të rëndë", -Aacute:"Shkronja e madhe latine A me theks akute",Acirc:"Shkronja e madhe latine A me theks lakor",Atilde:"Shkronja e madhe latine A me tildë",Auml:"Shkronja e madhe latine A me dy pika",Aring:"Shkronja e madhe latine A me unazë mbi",AElig:"Shkronja e madhe latine Æ",Ccedil:"Shkronja e madhe latine C me hark poshtë",Egrave:"Shkronja e madhe latine E me theks të rëndë",Eacute:"Shkronja e madhe latine E me theks akute",Ecirc:"Shkronja e madhe latine E me theks lakor",Euml:"Shkronja e madhe latine E me dy pika", -Igrave:"Shkronja e madhe latine I me theks të rëndë",Iacute:"Shkronja e madhe latine I me theks akute",Icirc:"Shkronja e madhe latine I me theks lakor",Iuml:"Shkronja e madhe latine I me dy pika",ETH:"Shkronja e madhe latine Eth",Ntilde:"Shkronja e madhe latine N me tildë",Ograve:"Shkronja e madhe latine O me theks të rëndë",Oacute:"Shkronja e madhe latine O me theks akute",Ocirc:"Shkronja e madhe latine O me theks lakor",Otilde:"Shkronja e madhe latine O me tildë",Ouml:"Shkronja e madhe latine O me dy pika", -times:"Shenja e shumëzimit",Oslash:"Shkronja e madhe latine O me vizë në mes",Ugrave:"Shkronja e madhe latine U me theks të rëndë",Uacute:"Shkronja e madhe latine U me theks akute",Ucirc:"Shkronja e madhe latine U me theks lakor",Uuml:"Shkronja e madhe latine U me dy pika",Yacute:"Shkronja e madhe latine Y me theks akute",THORN:"Shkronja e madhe latine Thorn",szlig:"Shkronja e vogë latine s e mprehtë",agrave:"Shkronja e vogë latine a me theks të rëndë",aacute:"Shkronja e vogë latine a me theks të mprehtë", -acirc:"Shkronja e vogël latine a me theks lakor",atilde:"Shkronja e vogël latine a me tildë",auml:"Shkronja e vogël latine a me dy pika",aring:"Shkronja e vogë latine a me unazë mbi",aelig:"Shkronja e vogë latine æ",ccedil:"Shkronja e vogël latine c me hark poshtë",egrave:"Shkronja e vogë latine e me theks të rëndë",eacute:"Shkronja e vogë latine e me theks të mprehtë",ecirc:"Shkronja e vogël latine e me theks lakor",euml:"Shkronja e vogël latine e me dy pika",igrave:"Shkronja e vogë latine i me theks të rëndë", -iacute:"Shkronja e vogë latine i me theks të mprehtë",icirc:"Shkronja e vogël latine i me theks lakor",iuml:"Shkronja e vogël latine i me dy pika",eth:"Shkronja e vogë latine eth",ntilde:"Shkronja e vogël latine n me tildë",ograve:"Shkronja e vogë latine o me theks të rëndë",oacute:"Shkronja e vogë latine o me theks të mprehtë",ocirc:"Shkronja e vogël latine o me theks lakor",otilde:"Shkronja e vogël latine o me tildë",ouml:"Shkronja e vogël latine o me dy pika",divide:"Shenja ndarëse",oslash:"Shkronja e vogël latine o me vizë në mes", -ugrave:"Shkronja e vogë latine u me theks të rëndë",uacute:"Shkronja e vogë latine u me theks të mprehtë",ucirc:"Shkronja e vogël latine u me theks lakor",uuml:"Shkronja e vogël latine u me dy pika",yacute:"Shkronja e vogë latine y me theks të mprehtë",thorn:"Shkronja e vogël latine thorn",yuml:"Shkronja e vogël latine y me dy pika",OElig:"Shkronja e madhe e bashkuar latine OE",oelig:"Shkronja e vogël e bashkuar latine oe",372:"Shkronja e madhe latine W me theks lakor",374:"Shkronja e madhe latine Y me theks lakor", -373:"Shkronja e vogël latine w me theks lakor",375:"Shkronja e vogël latine y me theks lakor",sbquo:"Single low-9 quotation mark",8219:"Single high-reversed-9 quotation mark",bdquo:"Double low-9 quotation mark",hellip:"Horizontal ellipsis",trade:"Shenja e Simbolit Tregtarë",9658:"Black right-pointing pointer",bull:"Pulla",rarr:"Shigjeta djathtas",rArr:"Shenja të dyfishta djathtas",hArr:"Shigjeta e dyfishë majtas-djathtas",diams:"Black diamond suit",asymp:"Gati e barabar me"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/sv.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/sv.js deleted file mode 100644 index 562aba47..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/sv.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","sv",{euro:"Eurotecken",lsquo:"Enkelt vänster citattecken",rsquo:"Enkelt höger citattecken",ldquo:"Dubbelt vänster citattecken",rdquo:"Dubbelt höger citattecken",ndash:"Snedstreck",mdash:"Långt tankstreck",iexcl:"Inverterad utropstecken",cent:"Centtecken",pound:"Pundtecken",curren:"Valutatecken",yen:"Yentecken",brvbar:"Brutet lodrätt streck",sect:"Paragraftecken",uml:"Diaeresis",copy:"Upphovsrättstecken",ordf:"Feminit ordningstalsindikator",laquo:"Vänsterställt dubbelt vinkelcitationstecken", -not:"Icke-tecken",reg:"Registrerad",macr:"Macron",deg:"Grader",sup2:"Upphöjt två",sup3:"Upphöjt tre",acute:"Akut accent",micro:"Mikrotecken",para:"Alinea",middot:"Centrerad prick",cedil:"Cedilj",sup1:"Upphöjt en",ordm:"Maskulina ordningsändelsen",raquo:"Högerställt dubbelt vinkelcitationstecken",frac14:"Bråktal - en kvart",frac12:"Bråktal - en halv",frac34:"Bråktal - tre fjärdedelar",iquest:"Inverterat frågetecken",Agrave:"Stort A med grav accent",Aacute:"Stort A med akutaccent",Acirc:"Stort A med circumflex", -Atilde:"Stort A med tilde",Auml:"Stort A med diaresis",Aring:"Stort A med ring ovan",AElig:"Stort Æ",Ccedil:"Stort C med cedilj",Egrave:"Stort E med grav accent",Eacute:"Stort E med aktuaccent",Ecirc:"Stort E med circumflex",Euml:"Stort E med diaeresis",Igrave:"Stort I med grav accent",Iacute:"Stort I med akutaccent",Icirc:"Stort I med circumflex",Iuml:"Stort I med diaeresis",ETH:"Stort Eth",Ntilde:"Stort N med tilde",Ograve:"Stort O med grav accent",Oacute:"Stort O med aktuaccent",Ocirc:"Stort O med circumflex", -Otilde:"Stort O med tilde",Ouml:"Stort O med diaeresis",times:"Multiplicera",Oslash:"Stor Ø",Ugrave:"Stort U med grav accent",Uacute:"Stort U med akutaccent",Ucirc:"Stort U med circumflex",Uuml:"Stort U med diaeresis",Yacute:"Stort Y med akutaccent",THORN:"Stort Thorn",szlig:"Litet dubbel-s/Eszett",agrave:"Litet a med grav accent",aacute:"Litet a med akutaccent",acirc:"Litet a med circumflex",atilde:"Litet a med tilde",auml:"Litet a med diaeresis",aring:"Litet a med ring ovan",aelig:"Bokstaven æ", -ccedil:"Litet c med cedilj",egrave:"Litet e med grav accent",eacute:"Litet e med akutaccent",ecirc:"Litet e med circumflex",euml:"Litet e med diaeresis",igrave:"Litet i med grav accent",iacute:"Litet i med akutaccent",icirc:"LItet i med circumflex",iuml:"Litet i med didaeresis",eth:"Litet eth",ntilde:"Litet n med tilde",ograve:"LItet o med grav accent",oacute:"LItet o med akutaccent",ocirc:"Litet o med circumflex",otilde:"LItet o med tilde",ouml:"Litet o med diaeresis",divide:"Division",oslash:"ø", -ugrave:"Litet u med grav accent",uacute:"Litet u med akutaccent",ucirc:"LItet u med circumflex",uuml:"Litet u med diaeresis",yacute:"Litet y med akutaccent",thorn:"Litet thorn",yuml:"Litet y med diaeresis",OElig:"Stor ligatur av OE",oelig:"Liten ligatur av oe",372:"Stort W med circumflex",374:"Stort Y med circumflex",373:"Litet w med circumflex",375:"Litet y med circumflex",sbquo:"Enkelt lågt 9-citationstecken",8219:"Enkelt högt bakvänt 9-citationstecken",bdquo:"Dubbelt lågt 9-citationstecken",hellip:"Horisontellt uteslutningstecken", -trade:"Varumärke",9658:"Svart högervänd pekare",bull:"Listpunkt",rarr:"Högerpil",rArr:"Dubbel högerpil",hArr:"Dubbel vänsterpil",diams:"Svart ruter",asymp:"Ungefär lika med"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/th.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/th.js deleted file mode 100644 index 77afffc3..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/th.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","th",{euro:"Euro sign",lsquo:"Left single quotation mark",rsquo:"Right single quotation mark",ldquo:"Left double quotation mark",rdquo:"Right double quotation mark",ndash:"En dash",mdash:"Em dash",iexcl:"Inverted exclamation mark",cent:"Cent sign",pound:"Pound sign",curren:"สัญลักษณ์สกุลเงิน",yen:"สัญลักษณ์เงินเยน",brvbar:"Broken bar",sect:"Section sign",uml:"Diaeresis",copy:"Copyright sign",ordf:"Feminine ordinal indicator",laquo:"Left-pointing double angle quotation mark", -not:"Not sign",reg:"Registered sign",macr:"Macron",deg:"Degree sign",sup2:"Superscript two",sup3:"Superscript three",acute:"Acute accent",micro:"Micro sign",para:"Pilcrow sign",middot:"Middle dot",cedil:"Cedilla",sup1:"Superscript one",ordm:"Masculine ordinal indicator",raquo:"Right-pointing double angle quotation mark",frac14:"Vulgar fraction one quarter",frac12:"Vulgar fraction one half",frac34:"Vulgar fraction three quarters",iquest:"Inverted question mark",Agrave:"Latin capital letter A with grave accent", -Aacute:"Latin capital letter A with acute accent",Acirc:"Latin capital letter A with circumflex",Atilde:"Latin capital letter A with tilde",Auml:"Latin capital letter A with diaeresis",Aring:"Latin capital letter A with ring above",AElig:"Latin Capital letter Æ",Ccedil:"Latin capital letter C with cedilla",Egrave:"Latin capital letter E with grave accent",Eacute:"Latin capital letter E with acute accent",Ecirc:"Latin capital letter E with circumflex",Euml:"Latin capital letter E with diaeresis",Igrave:"Latin capital letter I with grave accent", -Iacute:"Latin capital letter I with acute accent",Icirc:"Latin capital letter I with circumflex",Iuml:"Latin capital letter I with diaeresis",ETH:"Latin capital letter Eth",Ntilde:"Latin capital letter N with tilde",Ograve:"Latin capital letter O with grave accent",Oacute:"Latin capital letter O with acute accent",Ocirc:"Latin capital letter O with circumflex",Otilde:"Latin capital letter O with tilde",Ouml:"Latin capital letter O with diaeresis",times:"Multiplication sign",Oslash:"Latin capital letter O with stroke", -Ugrave:"Latin capital letter U with grave accent",Uacute:"Latin capital letter U with acute accent",Ucirc:"Latin capital letter U with circumflex",Uuml:"Latin capital letter U with diaeresis",Yacute:"Latin capital letter Y with acute accent",THORN:"Latin capital letter Thorn",szlig:"Latin small letter sharp s",agrave:"Latin small letter a with grave accent",aacute:"Latin small letter a with acute accent",acirc:"Latin small letter a with circumflex",atilde:"Latin small letter a with tilde",auml:"Latin small letter a with diaeresis", -aring:"Latin small letter a with ring above",aelig:"Latin small letter æ",ccedil:"Latin small letter c with cedilla",egrave:"Latin small letter e with grave accent",eacute:"Latin small letter e with acute accent",ecirc:"Latin small letter e with circumflex",euml:"Latin small letter e with diaeresis",igrave:"Latin small letter i with grave accent",iacute:"Latin small letter i with acute accent",icirc:"Latin small letter i with circumflex",iuml:"Latin small letter i with diaeresis",eth:"Latin small letter eth", -ntilde:"Latin small letter n with tilde",ograve:"Latin small letter o with grave accent",oacute:"Latin small letter o with acute accent",ocirc:"Latin small letter o with circumflex",otilde:"Latin small letter o with tilde",ouml:"Latin small letter o with diaeresis",divide:"Division sign",oslash:"Latin small letter o with stroke",ugrave:"Latin small letter u with grave accent",uacute:"Latin small letter u with acute accent",ucirc:"Latin small letter u with circumflex",uuml:"Latin small letter u with diaeresis", -yacute:"Latin small letter y with acute accent",thorn:"Latin small letter thorn",yuml:"Latin small letter y with diaeresis",OElig:"Latin capital ligature OE",oelig:"Latin small ligature oe",372:"Latin capital letter W with circumflex",374:"Latin capital letter Y with circumflex",373:"Latin small letter w with circumflex",375:"Latin small letter y with circumflex",sbquo:"Single low-9 quotation mark",8219:"Single high-reversed-9 quotation mark",bdquo:"Double low-9 quotation mark",hellip:"Horizontal ellipsis", -trade:"Trade mark sign",9658:"Black right-pointing pointer",bull:"สัญลักษณ์หัวข้อย่อย",rarr:"Rightwards arrow",rArr:"Rightwards double arrow",hArr:"Left right double arrow",diams:"Black diamond suit",asymp:"Almost equal to"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/tr.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/tr.js deleted file mode 100644 index 68836ab9..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/tr.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","tr",{euro:"Euro işareti",lsquo:"Sol tek tırnak işareti",rsquo:"Sağ tek tırnak işareti",ldquo:"Sol çift tırnak işareti",rdquo:"Sağ çift tırnak işareti",ndash:"En tire",mdash:"Em tire",iexcl:"Ters ünlem işareti",cent:"Cent işareti",pound:"Pound işareti",curren:"Para birimi işareti",yen:"Yen işareti",brvbar:"Kırık bar",sect:"Bölüm işareti",uml:"İki sesli harfin ayrılması",copy:"Telif hakkı işareti",ordf:"Dişil sıralı gösterge",laquo:"Sol-işaret çift açı tırnak işareti", -not:"Not işareti",reg:"Kayıtlı işareti",macr:"Makron",deg:"Derece işareti",sup2:"İkili üstsimge",sup3:"Üçlü üstsimge",acute:"Aksan işareti",micro:"Mikro işareti",para:"Pilcrow işareti",middot:"Orta nokta",cedil:"Kedilla",sup1:"Üstsimge",ordm:"Eril sıralı gösterge",raquo:"Sağ işaret çift açı tırnak işareti",frac14:"Bayağı kesrin dörtte biri",frac12:"Bayağı kesrin bir yarım",frac34:"Bayağı kesrin dörtte üç",iquest:"Ters soru işareti",Agrave:"Aksanlı latin harfi",Aacute:"Aşırı aksanıyla Latin harfi", -Acirc:"Çarpık Latin harfi",Atilde:"Tilde latin harfi",Auml:"Sesli harf ayrılımlıı latin harfi",Aring:"Halkalı latin büyük A harfi",AElig:"Latin büyük Æ harfi",Ccedil:"Latin büyük C harfi ile kedilla",Egrave:"Aksanlı latin büyük E harfi",Eacute:"Aşırı vurgulu latin büyük E harfi",Ecirc:"Çarpık latin büyük E harfi",Euml:"Sesli harf ayrılımlıı latin büyük E harfi",Igrave:"Aksanlı latin büyük I harfi",Iacute:"Aşırı aksanlı latin büyük I harfi",Icirc:"Çarpık latin büyük I harfi",Iuml:"Sesli harf ayrılımlıı latin büyük I harfi", -ETH:"Latin büyük Eth harfi",Ntilde:"Tildeli latin büyük N harfi",Ograve:"Aksanlı latin büyük O harfi",Oacute:"Aşırı aksanlı latin büyük O harfi",Ocirc:"Çarpık latin büyük O harfi",Otilde:"Tildeli latin büyük O harfi",Ouml:"Sesli harf ayrılımlı latin büyük O harfi",times:"Çarpma işareti",Oslash:"Vurgulu latin büyük O harfi",Ugrave:"Aksanlı latin büyük U harfi",Uacute:"Aşırı aksanlı latin büyük U harfi",Ucirc:"Çarpık latin büyük U harfi",Uuml:"Sesli harf ayrılımlı latin büyük U harfi",Yacute:"Aşırı aksanlı latin büyük Y harfi", -THORN:"Latin büyük Thorn harfi",szlig:"Latin küçük keskin s harfi",agrave:"Aksanlı latin küçük a harfi",aacute:"Aşırı aksanlı latin küçük a harfi",acirc:"Çarpık latin küçük a harfi",atilde:"Tildeli latin küçük a harfi",auml:"Sesli harf ayrılımlı latin küçük a harfi",aring:"Halkalı latin küçük a harfi",aelig:"Latin büyük æ harfi",ccedil:"Kedillalı latin küçük c harfi",egrave:"Aksanlı latin küçük e harfi",eacute:"Aşırı aksanlı latin küçük e harfi",ecirc:"Çarpık latin küçük e harfi",euml:"Sesli harf ayrılımlı latin küçük e harfi", -igrave:"Aksanlı latin küçük i harfi",iacute:"Aşırı aksanlı latin küçük i harfi",icirc:"Çarpık latin küçük i harfi",iuml:"Sesli harf ayrılımlı latin küçük i harfi",eth:"Latin küçük eth harfi",ntilde:"Tildeli latin küçük n harfi",ograve:"Aksanlı latin küçük o harfi",oacute:"Aşırı aksanlı latin küçük o harfi",ocirc:"Çarpık latin küçük o harfi",otilde:"Tildeli latin küçük o harfi",ouml:"Sesli harf ayrılımlı latin küçük o harfi",divide:"Bölme işareti",oslash:"Vurgulu latin küçük o harfi",ugrave:"Aksanlı latin küçük u harfi", -uacute:"Aşırı aksanlı latin küçük u harfi",ucirc:"Çarpık latin küçük u harfi",uuml:"Sesli harf ayrılımlı latin küçük u harfi",yacute:"Aşırı aksanlı latin küçük y harfi",thorn:"Latin küçük thorn harfi",yuml:"Sesli harf ayrılımlı latin küçük y harfi",OElig:"Latin büyük bağlı OE harfi",oelig:"Latin küçük bağlı oe harfi",372:"Çarpık latin büyük W harfi",374:"Çarpık latin büyük Y harfi",373:"Çarpık latin küçük w harfi",375:"Çarpık latin küçük y harfi",sbquo:"Tek düşük-9 tırnak işareti",8219:"Tek yüksek-ters-9 tırnak işareti", -bdquo:"Çift düşük-9 tırnak işareti",hellip:"Yatay elips",trade:"Marka tescili işareti",9658:"Siyah sağ işaret işaretçisi",bull:"Koyu nokta",rarr:"Sağa doğru ok",rArr:"Sağa doğru çift ok",hArr:"Sol, sağ çift ok",diams:"Siyah elmas takımı",asymp:"Hemen hemen eşit"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/ug.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/ug.js deleted file mode 100644 index 783aa370..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/ug.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","ug",{euro:"ياۋرو بەلگىسى",lsquo:"يالاڭ پەش سول",rsquo:"يالاڭ پەش ئوڭ",ldquo:"قوش پەش سول",rdquo:"قوش پەش ئوڭ",ndash:"سىزىقچە",mdash:"سىزىق",iexcl:"ئۈندەش",cent:"تىيىن بەلگىسى",pound:"فوند ستېرلىڭ",curren:"پۇل بەلگىسى",yen:"ياپونىيە يىنى",brvbar:"ئۈزۈك بالداق",sect:"پاراگراف بەلگىسى",uml:"تاۋۇش ئايرىش بەلگىسى",copy:"نەشر ھوقۇقى بەلگىسى",ordf:"Feminine ordinal indicator",laquo:"قوش تىرناق سول",not:"غەيرى بەلگە",reg:"خەتلەتكەن تاۋار ماركىسى",macr:"سوزۇش بەلگىسى", -deg:"گىرادۇس بەلگىسى",sup2:"يۇقىرى ئىندېكىس 2",sup3:"يۇقىرى ئىندېكىس 3",acute:"ئۇرغۇ بەلگىسى",micro:"Micro sign",para:"ئابزاس بەلگىسى",middot:"ئوتتۇرا چېكىت",cedil:"ئاستىغا قوشۇلىدىغان بەلگە",sup1:"يۇقىرى ئىندېكىس 1",ordm:"Masculine ordinal indicator",raquo:"قوش تىرناق ئوڭ",frac14:"ئاددىي كەسىر تۆتتىن بىر",frac12:"ئاددىي كەسىر ئىككىدىن بىر",frac34:"ئاددىي كەسىر ئۈچتىن تۆرت",iquest:"Inverted question mark",Agrave:"Latin capital letter A with grave accent",Aacute:"Latin capital letter A with acute accent", -Acirc:"Latin capital letter A with circumflex",Atilde:"Latin capital letter A with tilde",Auml:"Latin capital letter A with diaeresis",Aring:"Latin capital letter A with ring above",AElig:"Latin Capital letter Æ",Ccedil:"Latin capital letter C with cedilla",Egrave:"Latin capital letter E with grave accent",Eacute:"Latin capital letter E with acute accent",Ecirc:"Latin capital letter E with circumflex",Euml:"Latin capital letter E with diaeresis",Igrave:"Latin capital letter I with grave accent",Iacute:"Latin capital letter I with acute accent", -Icirc:"Latin capital letter I with circumflex",Iuml:"Latin capital letter I with diaeresis",ETH:"Latin capital letter Eth",Ntilde:"Latin capital letter N with tilde",Ograve:"قوش پەش ئوڭ",Oacute:"Latin capital letter O with acute accent",Ocirc:"Latin capital letter O with circumflex",Otilde:"Latin capital letter O with tilde",Ouml:"Latin capital letter O with diaeresis",times:"Multiplication sign",Oslash:"Latin capital letter O with stroke",Ugrave:"Latin capital letter U with grave accent",Uacute:"Latin capital letter U with acute accent", -Ucirc:"Latin capital letter U with circumflex",Uuml:"Latin capital letter U with diaeresis",Yacute:"Latin capital letter Y with acute accent",THORN:"Latin capital letter Thorn",szlig:"Latin small letter sharp s",agrave:"Latin small letter a with grave accent",aacute:"Latin small letter a with acute accent",acirc:"Latin small letter a with circumflex",atilde:"Latin small letter a with tilde",auml:"Latin small letter a with diaeresis",aring:"Latin small letter a with ring above",aelig:"Latin small letter æ", -ccedil:"Latin small letter c with cedilla",egrave:"Latin small letter e with grave accent",eacute:"Latin small letter e with acute accent",ecirc:"Latin small letter e with circumflex",euml:"Latin small letter e with diaeresis",igrave:"Latin small letter i with grave accent",iacute:"Latin small letter i with acute accent",icirc:"Latin small letter i with circumflex",iuml:"Latin small letter i with diaeresis",eth:"Latin small letter eth",ntilde:"تىك موللاق سوئال بەلگىسى",ograve:"Latin small letter o with grave accent", -oacute:"Latin small letter o with acute accent",ocirc:"Latin small letter o with circumflex",otilde:"Latin small letter o with tilde",ouml:"Latin small letter o with diaeresis",divide:"بۆلۈش بەلگىسى",oslash:"Latin small letter o with stroke",ugrave:"Latin small letter u with grave accent",uacute:"Latin small letter u with acute accent",ucirc:"Latin small letter u with circumflex",uuml:"Latin small letter u with diaeresis",yacute:"Latin small letter y with acute accent",thorn:"Latin small letter thorn", -yuml:"Latin small letter y with diaeresis",OElig:"Latin capital ligature OE",oelig:"Latin small ligature oe",372:"Latin capital letter W with circumflex",374:"Latin capital letter Y with circumflex",373:"Latin small letter w with circumflex",375:"Latin small letter y with circumflex",sbquo:"Single low-9 quotation mark",8219:"Single high-reversed-9 quotation mark",bdquo:"Double low-9 quotation mark",hellip:"Horizontal ellipsis",trade:"خەتلەتكەن تاۋار ماركىسى بەلگىسى",9658:"Black right-pointing pointer", -bull:"Bullet",rarr:"ئوڭ يا ئوق",rArr:"ئوڭ قوش سىزىق يا ئوق",hArr:"ئوڭ سول قوش سىزىق يا ئوق",diams:"ئۇيۇل غىچ",asymp:"تەخمىنەن تەڭ"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/uk.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/uk.js deleted file mode 100644 index 7cb16800..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/uk.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","uk",{euro:"Знак євро",lsquo:"Ліві одинарні лапки",rsquo:"Праві одинарні лапки",ldquo:"Ліві подвійні лапки",rdquo:"Праві подвійні лапки",ndash:"Середнє тире",mdash:"Довге тире",iexcl:"Перевернутий знак оклику",cent:"Знак цента",pound:"Знак фунта",curren:"Знак валюти",yen:"Знак єни",brvbar:"Переривчаста вертикальна лінія",sect:"Знак параграфу",uml:"Умлаут",copy:"Знак авторських прав",ordf:"Жіночий порядковий вказівник",laquo:"ліві вказівні подвійні кутові дужки", -not:"Заперечення",reg:"Знак охорони суміжних прав",macr:"Макрон",deg:"Знак градуса",sup2:"два у верхньому індексі",sup3:"три у верхньому індексі",acute:"Знак акута",micro:"Знак мікро",para:"Знак абзацу",middot:"Інтерпункт",cedil:"Седиль",sup1:"Один у верхньому індексі",ordm:"Чоловічий порядковий вказівник",raquo:"праві вказівні подвійні кутові дужки",frac14:"Одна четвертина",frac12:"Одна друга",frac34:"три четвертих",iquest:"Перевернутий знак питання",Agrave:"Велика латинська A з гравісом",Aacute:"Велика латинська А з акутом", -Acirc:"Велика латинська А з циркумфлексом",Atilde:"Велика латинська А з тильдою",Auml:"Велике латинське А з умлаутом",Aring:"Велика латинська A з кільцем згори",AElig:"Велика латинська Æ",Ccedil:"Велика латинська C з седиллю",Egrave:"Велика латинська E з гравісом",Eacute:"Велика латинська E з акутом",Ecirc:"Велика латинська E з циркумфлексом",Euml:"Велика латинська А з умлаутом",Igrave:"Велика латинська I з гравісом",Iacute:"Велика латинська I з акутом",Icirc:"Велика латинська I з циркумфлексом", -Iuml:"Велика латинська І з умлаутом",ETH:"Велика латинська Eth",Ntilde:"Велика латинська N з тильдою",Ograve:"Велика латинська O з гравісом",Oacute:"Велика латинська O з акутом",Ocirc:"Велика латинська O з циркумфлексом",Otilde:"Велика латинська O з тильдою",Ouml:"Велика латинська О з умлаутом",times:"Знак множення",Oslash:"Велика латинська перекреслена O ",Ugrave:"Велика латинська U з гравісом",Uacute:"Велика латинська U з акутом",Ucirc:"Велика латинська U з циркумфлексом",Uuml:"Велика латинська U з умлаутом", -Yacute:"Велика латинська Y з акутом",THORN:"Велика латинська Торн",szlig:"Мала латинська есцет",agrave:"Мала латинська a з гравісом",aacute:"Мала латинська a з акутом",acirc:"Мала латинська a з циркумфлексом",atilde:"Мала латинська a з тильдою",auml:"Мала латинська a з умлаутом",aring:"Мала латинська a з кільцем згори",aelig:"Мала латинська æ",ccedil:"Мала латинська C з седиллю",egrave:"Мала латинська e з гравісом",eacute:"Мала латинська e з акутом",ecirc:"Мала латинська e з циркумфлексом",euml:"Мала латинська e з умлаутом", -igrave:"Мала латинська i з гравісом",iacute:"Мала латинська i з акутом",icirc:"Мала латинська i з циркумфлексом",iuml:"Мала латинська i з умлаутом",eth:"Мала латинська Eth",ntilde:"Мала латинська n з тильдою",ograve:"Мала латинська o з гравісом",oacute:"Мала латинська o з акутом",ocirc:"Мала латинська o з циркумфлексом",otilde:"Мала латинська o з тильдою",ouml:"Мала латинська o з умлаутом",divide:"Знак ділення",oslash:"Мала латинська перекреслена o",ugrave:"Мала латинська u з гравісом",uacute:"Мала латинська u з акутом", -ucirc:"Мала латинська u з циркумфлексом",uuml:"Мала латинська u з умлаутом",yacute:"Мала латинська y з акутом",thorn:"Мала латинська торн",yuml:"Мала латинська y з умлаутом",OElig:"Велика латинська лігатура OE",oelig:"Мала латинська лігатура oe",372:"Велика латинська W з циркумфлексом",374:"Велика латинська Y з циркумфлексом",373:"Мала латинська w з циркумфлексом",375:"Мала латинська y з циркумфлексом",sbquo:"Одиничні нижні лабки",8219:"Верхні одиничні обернені лабки",bdquo:"Подвійні нижні лабки", -hellip:"Три крапки",trade:"Знак торгової марки",9658:"Чорний правий вказівник",bull:"Маркер списку",rarr:"Стрілка вправо",rArr:"Подвійна стрілка вправо",hArr:"Подвійна стрілка вліво-вправо",diams:"Чорний діамонт",asymp:"Наближено дорівнює"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/vi.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/vi.js deleted file mode 100644 index 03a5b753..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/vi.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","vi",{euro:"Ký hiệu Euro",lsquo:"Dấu ngoặc đơn trái",rsquo:"Dấu ngoặc đơn phải",ldquo:"Dấu ngoặc đôi trái",rdquo:"Dấu ngoặc đôi phải",ndash:"Gạch ngang tiếng anh",mdash:"Gạch ngang Em",iexcl:"Chuyển đổi dấu chấm than",cent:"Ký tự tiền Mỹ",pound:"Ký tự tiền Anh",curren:"Ký tự tiền tệ",yen:"Ký tự tiền Yên Nhật",brvbar:"Thanh hỏng",sect:"Ký tự khu vực",uml:"Dấu tách đôi",copy:"Ký tự bản quyền",ordf:"Phần chỉ thị giống cái",laquo:"Chọn dấu ngoặc đôi trái",not:"Không có ký tự", -reg:"Ký tự đăng ký",macr:"Dấu nguyên âm dài",deg:"Ký tự độ",sup2:"Chữ trồi lên trên dạng 2",sup3:"Chữ trồi lên trên dạng 3",acute:"Dấu trọng âm",micro:"Ký tự micro",para:"Ký tự đoạn văn",middot:"Dấu chấm tròn",cedil:"Dấu móc lưới",sup1:"Ký tự trồi lên cấp 1",ordm:"Ký tự biểu hiện giống đực",raquo:"Chọn dấu ngoặc đôi phải",frac14:"Tỉ lệ một phần tư",frac12:"Tỉ lệ một nửa",frac34:"Tỉ lệ ba phần tư",iquest:"Chuyển đổi dấu chấm hỏi",Agrave:"Ký tự la-tinh viết hoa A với dấu huyền",Aacute:"Ký tự la-tinh viết hoa A với dấu sắc", -Acirc:"Ký tự la-tinh viết hoa A với dấu mũ",Atilde:"Ký tự la-tinh viết hoa A với dấu ngã",Auml:"Ký tự la-tinh viết hoa A với dấu hai chấm trên đầu",Aring:"Ký tự la-tinh viết hoa A với biểu tượng vòng tròn trên đầu",AElig:"Ký tự la-tinh viết hoa của Æ",Ccedil:"Ký tự la-tinh viết hoa C với dấu móc bên dưới",Egrave:"Ký tự la-tinh viết hoa E với dấu huyền",Eacute:"Ký tự la-tinh viết hoa E với dấu sắc",Ecirc:"Ký tự la-tinh viết hoa E với dấu mũ",Euml:"Ký tự la-tinh viết hoa E với dấu hai chấm trên đầu", -Igrave:"Ký tự la-tinh viết hoa I với dấu huyền",Iacute:"Ký tự la-tinh viết hoa I với dấu sắc",Icirc:"Ký tự la-tinh viết hoa I với dấu mũ",Iuml:"Ký tự la-tinh viết hoa I với dấu hai chấm trên đầu",ETH:"Viết hoa của ký tự Eth",Ntilde:"Ký tự la-tinh viết hoa N với dấu ngã",Ograve:"Ký tự la-tinh viết hoa O với dấu huyền",Oacute:"Ký tự la-tinh viết hoa O với dấu sắc",Ocirc:"Ký tự la-tinh viết hoa O với dấu mũ",Otilde:"Ký tự la-tinh viết hoa O với dấu ngã",Ouml:"Ký tự la-tinh viết hoa O với dấu hai chấm trên đầu", -times:"Ký tự phép toán nhân",Oslash:"Ký tự la-tinh viết hoa A với dấu ngã xuống",Ugrave:"Ký tự la-tinh viết hoa U với dấu huyền",Uacute:"Ký tự la-tinh viết hoa U với dấu sắc",Ucirc:"Ký tự la-tinh viết hoa U với dấu mũ",Uuml:"Ký tự la-tinh viết hoa U với dấu hai chấm trên đầu",Yacute:"Ký tự la-tinh viết hoa Y với dấu sắc",THORN:"Phần viết hoa của ký tự Thorn",szlig:"Ký tự viết nhỏ la-tinh của chữ s",agrave:"Ký tự la-tinh thường với dấu huyền",aacute:"Ký tự la-tinh thường với dấu sắc",acirc:"Ký tự la-tinh thường với dấu mũ", -atilde:"Ký tự la-tinh thường với dấu ngã",auml:"Ký tự la-tinh thường với dấu hai chấm trên đầu",aring:"Ký tự la-tinh viết thường với biểu tượng vòng tròn trên đầu",aelig:"Ký tự la-tinh viết thường của æ",ccedil:"Ký tự la-tinh viết thường của c với dấu móc bên dưới",egrave:"Ký tự la-tinh viết thường e với dấu huyền",eacute:"Ký tự la-tinh viết thường e với dấu sắc",ecirc:"Ký tự la-tinh viết thường e với dấu mũ",euml:"Ký tự la-tinh viết thường e với dấu hai chấm trên đầu",igrave:"Ký tự la-tinh viết thường i với dấu huyền", -iacute:"Ký tự la-tinh viết thường i với dấu sắc",icirc:"Ký tự la-tinh viết thường i với dấu mũ",iuml:"Ký tự la-tinh viết thường i với dấu hai chấm trên đầu",eth:"Ký tự la-tinh viết thường của eth",ntilde:"Ký tự la-tinh viết thường n với dấu ngã",ograve:"Ký tự la-tinh viết thường o với dấu huyền",oacute:"Ký tự la-tinh viết thường o với dấu sắc",ocirc:"Ký tự la-tinh viết thường o với dấu mũ",otilde:"Ký tự la-tinh viết thường o với dấu ngã",ouml:"Ký tự la-tinh viết thường o với dấu hai chấm trên đầu", -divide:"Ký hiệu phép tính chia",oslash:"Ký tự la-tinh viết thường o với dấu ngã",ugrave:"Ký tự la-tinh viết thường u với dấu huyền",uacute:"Ký tự la-tinh viết thường u với dấu sắc",ucirc:"Ký tự la-tinh viết thường u với dấu mũ",uuml:"Ký tự la-tinh viết thường u với dấu hai chấm trên đầu",yacute:"Ký tự la-tinh viết thường y với dấu sắc",thorn:"Ký tự la-tinh viết thường của chữ thorn",yuml:"Ký tự la-tinh viết thường y với dấu hai chấm trên đầu",OElig:"Ký tự la-tinh viết hoa gạch nối OE",oelig:"Ký tự la-tinh viết thường gạch nối OE", -372:"Ký tự la-tinh viết hoa W với dấu mũ",374:"Ký tự la-tinh viết hoa Y với dấu mũ",373:"Ký tự la-tinh viết thường w với dấu mũ",375:"Ký tự la-tinh viết thường y với dấu mũ",sbquo:"Dấu ngoặc đơn thấp số-9",8219:"Dấu ngoặc đơn đảo ngược số-9",bdquo:"Gấp đôi dấu ngoặc đơn số-9",hellip:"Tĩnh dược chiều ngang",trade:"Ký tự thương hiệu",9658:"Ký tự trỏ về hướng bên phải màu đen",bull:"Ký hiệu",rarr:"Mũi tên hướng bên phải",rArr:"Mũi tên hướng bên phải dạng đôi",hArr:"Mũi tên hướng bên trái dạng đôi",diams:"Ký hiệu hình thoi", -asymp:"Gần bằng với"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/zh-cn.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/zh-cn.js deleted file mode 100644 index aa42b83c..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/zh-cn.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","zh-cn",{euro:"欧元符号",lsquo:"左单引号",rsquo:"右单引号",ldquo:"左双引号",rdquo:"右双引号",ndash:"短划线",mdash:"长划线",iexcl:"竖翻叹号",cent:"分币符号",pound:"英镑符号",curren:"货币符号",yen:"日元符号",brvbar:"间断条",sect:"节标记",uml:"分音符",copy:"版权所有标记",ordf:"阴性顺序指示符",laquo:"左指双尖引号",not:"非标记",reg:"注册标记",macr:"长音符",deg:"度标记",sup2:"上标二",sup3:"上标三",acute:"锐音符",micro:"微符",para:"段落标记",middot:"中间点",cedil:"下加符",sup1:"上标一",ordm:"阳性顺序指示符",raquo:"右指双尖引号",frac14:"普通分数四分之一",frac12:"普通分数二分之一",frac34:"普通分数四分之三",iquest:"竖翻问号", -Agrave:"带抑音符的拉丁文大写字母 A",Aacute:"带锐音符的拉丁文大写字母 A",Acirc:"带扬抑符的拉丁文大写字母 A",Atilde:"带颚化符的拉丁文大写字母 A",Auml:"带分音符的拉丁文大写字母 A",Aring:"带上圆圈的拉丁文大写字母 A",AElig:"拉丁文大写字母 Ae",Ccedil:"带下加符的拉丁文大写字母 C",Egrave:"带抑音符的拉丁文大写字母 E",Eacute:"带锐音符的拉丁文大写字母 E",Ecirc:"带扬抑符的拉丁文大写字母 E",Euml:"带分音符的拉丁文大写字母 E",Igrave:"带抑音符的拉丁文大写字母 I",Iacute:"带锐音符的拉丁文大写字母 I",Icirc:"带扬抑符的拉丁文大写字母 I",Iuml:"带分音符的拉丁文大写字母 I",ETH:"拉丁文大写字母 Eth",Ntilde:"带颚化符的拉丁文大写字母 N",Ograve:"带抑音符的拉丁文大写字母 O",Oacute:"带锐音符的拉丁文大写字母 O",Ocirc:"带扬抑符的拉丁文大写字母 O",Otilde:"带颚化符的拉丁文大写字母 O", -Ouml:"带分音符的拉丁文大写字母 O",times:"乘号",Oslash:"带粗线的拉丁文大写字母 O",Ugrave:"带抑音符的拉丁文大写字母 U",Uacute:"带锐音符的拉丁文大写字母 U",Ucirc:"带扬抑符的拉丁文大写字母 U",Uuml:"带分音符的拉丁文大写字母 U",Yacute:"带抑音符的拉丁文大写字母 Y",THORN:"拉丁文大写字母 Thorn",szlig:"拉丁文小写字母清音 S",agrave:"带抑音符的拉丁文小写字母 A",aacute:"带锐音符的拉丁文小写字母 A",acirc:"带扬抑符的拉丁文小写字母 A",atilde:"带颚化符的拉丁文小写字母 A",auml:"带分音符的拉丁文小写字母 A",aring:"带上圆圈的拉丁文小写字母 A",aelig:"拉丁文小写字母 Ae",ccedil:"带下加符的拉丁文小写字母 C",egrave:"带抑音符的拉丁文小写字母 E",eacute:"带锐音符的拉丁文小写字母 E",ecirc:"带扬抑符的拉丁文小写字母 E",euml:"带分音符的拉丁文小写字母 E",igrave:"带抑音符的拉丁文小写字母 I", -iacute:"带锐音符的拉丁文小写字母 I",icirc:"带扬抑符的拉丁文小写字母 I",iuml:"带分音符的拉丁文小写字母 I",eth:"拉丁文小写字母 Eth",ntilde:"带颚化符的拉丁文小写字母 N",ograve:"带抑音符的拉丁文小写字母 O",oacute:"带锐音符的拉丁文小写字母 O",ocirc:"带扬抑符的拉丁文小写字母 O",otilde:"带颚化符的拉丁文小写字母 O",ouml:"带分音符的拉丁文小写字母 O",divide:"除号",oslash:"带粗线的拉丁文小写字母 O",ugrave:"带抑音符的拉丁文小写字母 U",uacute:"带锐音符的拉丁文小写字母 U",ucirc:"带扬抑符的拉丁文小写字母 U",uuml:"带分音符的拉丁文小写字母 U",yacute:"带抑音符的拉丁文小写字母 Y",thorn:"拉丁文小写字母 Thorn",yuml:"带分音符的拉丁文小写字母 Y",OElig:"拉丁文大写连字 Oe",oelig:"拉丁文小写连字 Oe",372:"带扬抑符的拉丁文大写字母 W",374:"带扬抑符的拉丁文大写字母 Y", -373:"带扬抑符的拉丁文小写字母 W",375:"带扬抑符的拉丁文小写字母 Y",sbquo:"单下 9 形引号",8219:"单高横翻 9 形引号",bdquo:"双下 9 形引号",hellip:"水平省略号",trade:"商标标志",9658:"实心右指指针",bull:"加重号",rarr:"向右箭头",rArr:"向右双线箭头",hArr:"左右双线箭头",diams:"实心方块纸牌",asymp:"约等于"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/zh.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/zh.js deleted file mode 100644 index b6e08bef..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/lang/zh.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("specialchar","zh",{euro:"歐元符號",lsquo:"左單引號",rsquo:"右單引號",ldquo:"左雙引號",rdquo:"右雙引號",ndash:"短破折號",mdash:"長破折號",iexcl:"倒置的驚嘆號",cent:"美分符號",pound:"英鎊符號",curren:"貨幣符號",yen:"日圓符號",brvbar:"Broken bar",sect:"章節符號",uml:"分音符號",copy:"版權符號",ordf:"雌性符號",laquo:"左雙角括號",not:"Not 符號",reg:"註冊商標符號",macr:"長音符號",deg:"度數符號",sup2:"上標字 2",sup3:"上標字 3",acute:"尖音符號",micro:"Micro sign",para:"段落符號",middot:"中間點",cedil:"字母 C 下面的尾型符號 ",sup1:"上標",ordm:"雄性符號",raquo:"右雙角括號",frac14:"四分之一符號",frac12:"Vulgar fraction one half", -frac34:"Vulgar fraction three quarters",iquest:"Inverted question mark",Agrave:"Latin capital letter A with grave accent",Aacute:"Latin capital letter A with acute accent",Acirc:"Latin capital letter A with circumflex",Atilde:"Latin capital letter A with tilde",Auml:"拉丁大寫字母 E 帶分音符號",Aring:"拉丁大寫字母 A 帶上圓圈",AElig:"拉丁大寫字母 Æ",Ccedil:"拉丁大寫字母 C 帶下尾符號",Egrave:"Latin capital letter E with grave accent",Eacute:"Latin capital letter E with acute accent",Ecirc:"Latin capital letter E with circumflex",Euml:"Latin capital letter E with diaeresis", -Igrave:"Latin capital letter I with grave accent",Iacute:"Latin capital letter I with acute accent",Icirc:"Latin capital letter I with circumflex",Iuml:"Latin capital letter I with diaeresis",ETH:"Latin capital letter Eth",Ntilde:"Latin capital letter N with tilde",Ograve:"Latin capital letter O with grave accent",Oacute:"Latin capital letter O with acute accent",Ocirc:"Latin capital letter O with circumflex",Otilde:"Latin capital letter O with tilde",Ouml:"Latin capital letter O with diaeresis", -times:"乘號",Oslash:"拉丁大寫字母 O 帶粗線符號",Ugrave:"Latin capital letter U with grave accent",Uacute:"Latin capital letter U with acute accent",Ucirc:"Latin capital letter U with circumflex",Uuml:"Latin capital letter U with diaeresis",Yacute:"Latin capital letter Y with acute accent",THORN:"Latin capital letter Thorn",szlig:"Latin small letter sharp s",agrave:"Latin small letter a with grave accent",aacute:"Latin small letter a with acute accent",acirc:"Latin small letter a with circumflex",atilde:"Latin small letter a with tilde", -auml:"Latin small letter a with diaeresis",aring:"Latin small letter a with ring above",aelig:"Latin small letter æ",ccedil:"Latin small letter c with cedilla",egrave:"Latin small letter e with grave accent",eacute:"Latin small letter e with acute accent",ecirc:"Latin small letter e with circumflex",euml:"Latin small letter e with diaeresis",igrave:"Latin small letter i with grave accent",iacute:"Latin small letter i with acute accent",icirc:"Latin small letter i with circumflex",iuml:"Latin small letter i with diaeresis", -eth:"Latin small letter eth",ntilde:"Latin small letter n with tilde",ograve:"Latin small letter o with grave accent",oacute:"Latin small letter o with acute accent",ocirc:"Latin small letter o with circumflex",otilde:"Latin small letter o with tilde",ouml:"Latin small letter o with diaeresis",divide:"Division sign",oslash:"Latin small letter o with stroke",ugrave:"Latin small letter u with grave accent",uacute:"Latin small letter u with acute accent",ucirc:"Latin small letter u with circumflex", -uuml:"Latin small letter u with diaeresis",yacute:"Latin small letter y with acute accent",thorn:"Latin small letter thorn",yuml:"Latin small letter y with diaeresis",OElig:"Latin capital ligature OE",oelig:"Latin small ligature oe",372:"Latin capital letter W with circumflex",374:"Latin capital letter Y with circumflex",373:"Latin small letter w with circumflex",375:"Latin small letter y with circumflex",sbquo:"Single low-9 quotation mark",8219:"Single high-reversed-9 quotation mark",bdquo:"Double low-9 quotation mark", -hellip:"Horizontal ellipsis",trade:"Trade mark sign",9658:"Black right-pointing pointer",bull:"Bullet",rarr:"Rightwards arrow",rArr:"Rightwards double arrow",hArr:"Left right double arrow",diams:"Black diamond suit",asymp:"Almost equal to"}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/specialchar/dialogs/specialchar.js b/assets/plugins/ckeditor/plugins/specialchar/dialogs/specialchar.js deleted file mode 100644 index 7f4348c1..00000000 --- a/assets/plugins/ckeditor/plugins/specialchar/dialogs/specialchar.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.dialog.add("specialchar",function(i){var e,l=i.lang.specialchar,k=function(c){var b,c=c.data?c.data.getTarget():new CKEDITOR.dom.element(c);if("a"==c.getName()&&(b=c.getChild(0).getHtml()))c.removeClass("cke_light_background"),e.hide(),c=i.document.createElement("span"),c.setHtml(b),i.insertText(c.getText())},m=CKEDITOR.tools.addFunction(k),j,g=function(c,b){var a,b=b||c.data.getTarget();"span"==b.getName()&&(b=b.getParent());if("a"==b.getName()&&(a=b.getChild(0).getHtml())){j&&d(null,j); -var f=e.getContentElement("info","htmlPreview").getElement();e.getContentElement("info","charPreview").getElement().setHtml(a);f.setHtml(CKEDITOR.tools.htmlEncode(a));b.getParent().addClass("cke_light_background");j=b}},d=function(c,b){b=b||c.data.getTarget();"span"==b.getName()&&(b=b.getParent());"a"==b.getName()&&(e.getContentElement("info","charPreview").getElement().setHtml("&nbsp;"),e.getContentElement("info","htmlPreview").getElement().setHtml("&nbsp;"),b.getParent().removeClass("cke_light_background"), -j=void 0)},n=CKEDITOR.tools.addFunction(function(c){var c=new CKEDITOR.dom.event(c),b=c.getTarget(),a;a=c.getKeystroke();var f="rtl"==i.lang.dir;switch(a){case 38:if(a=b.getParent().getParent().getPrevious())a=a.getChild([b.getParent().getIndex(),0]),a.focus(),d(null,b),g(null,a);c.preventDefault();break;case 40:if(a=b.getParent().getParent().getNext())if((a=a.getChild([b.getParent().getIndex(),0]))&&1==a.type)a.focus(),d(null,b),g(null,a);c.preventDefault();break;case 32:k({data:c});c.preventDefault(); -break;case f?37:39:if(a=b.getParent().getNext())a=a.getChild(0),1==a.type?(a.focus(),d(null,b),g(null,a),c.preventDefault(!0)):d(null,b);else if(a=b.getParent().getParent().getNext())(a=a.getChild([0,0]))&&1==a.type?(a.focus(),d(null,b),g(null,a),c.preventDefault(!0)):d(null,b);break;case f?39:37:(a=b.getParent().getPrevious())?(a=a.getChild(0),a.focus(),d(null,b),g(null,a),c.preventDefault(!0)):(a=b.getParent().getParent().getPrevious())?(a=a.getLast().getChild(0),a.focus(),d(null,b),g(null,a),c.preventDefault(!0)): -d(null,b)}});return{title:l.title,minWidth:430,minHeight:280,buttons:[CKEDITOR.dialog.cancelButton],charColumns:17,onLoad:function(){for(var c=this.definition.charColumns,b=i.config.specialChars,a=CKEDITOR.tools.getNextId()+"_specialchar_table_label",f=['<table role="listbox" aria-labelledby="'+a+'" style="width: 320px; height: 100%; border-collapse: separate;" align="center" cellspacing="2" cellpadding="2" border="0">'],d=0,g=b.length,h,e;d<g;){f.push('<tr role="presentation">');for(var j=0;j<c;j++, -d++){if(h=b[d]){h instanceof Array?(e=h[1],h=h[0]):(e=h.replace("&","").replace(";","").replace("#",""),e=l[e]||h);var k="cke_specialchar_label_"+d+"_"+CKEDITOR.tools.getNextNumber();f.push('<td class="cke_dark_background" style="cursor: default" role="presentation"><a href="javascript: void(0);" role="option" aria-posinset="'+(d+1)+'"',' aria-setsize="'+g+'"',' aria-labelledby="'+k+'"',' class="cke_specialchar" title="',CKEDITOR.tools.htmlEncode(e),'" onkeydown="CKEDITOR.tools.callFunction( '+n+ -', event, this )" onclick="CKEDITOR.tools.callFunction('+m+', this); return false;" tabindex="-1"><span style="margin: 0 auto;cursor: inherit">'+h+'</span><span class="cke_voice_label" id="'+k+'">'+e+"</span></a>")}else f.push('<td class="cke_dark_background">&nbsp;');f.push("</td>")}f.push("</tr>")}f.push("</tbody></table>",'<span id="'+a+'" class="cke_voice_label">'+l.options+"</span>");this.getContentElement("info","charContainer").getElement().setHtml(f.join(""))},contents:[{id:"info",label:i.lang.common.generalTab, -title:i.lang.common.generalTab,padding:0,align:"top",elements:[{type:"hbox",align:"top",widths:["320px","90px"],children:[{type:"html",id:"charContainer",html:"",onMouseover:g,onMouseout:d,focus:function(){var c=this.getElement().getElementsByTag("a").getItem(0);setTimeout(function(){c.focus();g(null,c)},0)},onShow:function(){var c=this.getElement().getChild([0,0,0,0,0]);setTimeout(function(){c.focus();g(null,c)},0)},onLoad:function(c){e=c.sender}},{type:"hbox",align:"top",widths:["100%"],children:[{type:"vbox", -align:"top",children:[{type:"html",html:"<div></div>"},{type:"html",id:"charPreview",className:"cke_dark_background",style:"border:1px solid #eeeeee;font-size:28px;height:40px;width:70px;padding-top:9px;font-family:'Microsoft Sans Serif',Arial,Helvetica,Verdana;text-align:center;",html:"<div>&nbsp;</div>"},{type:"html",id:"htmlPreview",className:"cke_dark_background",style:"border:1px solid #eeeeee;font-size:14px;height:20px;width:70px;padding-top:2px;font-family:'Microsoft Sans Serif',Arial,Helvetica,Verdana;text-align:center;", -html:"<div>&nbsp;</div>"}]}]}]}]}]}}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/table/dialogs/table.js b/assets/plugins/ckeditor/plugins/table/dialogs/table.js deleted file mode 100644 index cc0b6464..00000000 --- a/assets/plugins/ckeditor/plugins/table/dialogs/table.js +++ /dev/null @@ -1,21 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -(function(){function r(a){for(var e=0,l=0,k=0,m,g=a.$.rows.length;k<g;k++){m=a.$.rows[k];for(var d=e=0,c,b=m.cells.length;d<b;d++)c=m.cells[d],e+=c.colSpan;e>l&&(l=e)}return l}function o(a){return function(){var e=this.getValue(),e=!!(CKEDITOR.dialog.validate.integer()(e)&&0<e);e||(alert(a),this.select());return e}}function n(a,e){var l=function(g){return new CKEDITOR.dom.element(g,a.document)},n=a.editable(),m=a.plugins.dialogadvtab;return{title:a.lang.table.title,minWidth:310,minHeight:CKEDITOR.env.ie? -310:280,onLoad:function(){var g=this,a=g.getContentElement("advanced","advStyles");if(a)a.on("change",function(){var a=this.getStyle("width",""),b=g.getContentElement("info","txtWidth");b&&b.setValue(a,!0);a=this.getStyle("height","");(b=g.getContentElement("info","txtHeight"))&&b.setValue(a,!0)})},onShow:function(){var g=a.getSelection(),d=g.getRanges(),c,b=this.getContentElement("info","txtRows"),h=this.getContentElement("info","txtCols"),p=this.getContentElement("info","txtWidth"),f=this.getContentElement("info", -"txtHeight");"tableProperties"==e&&((g=g.getSelectedElement())&&g.is("table")?c=g:0<d.length&&(CKEDITOR.env.webkit&&d[0].shrink(CKEDITOR.NODE_ELEMENT),c=a.elementPath(d[0].getCommonAncestor(!0)).contains("table",1)),this._.selectedElement=c);c?(this.setupContent(c),b&&b.disable(),h&&h.disable()):(b&&b.enable(),h&&h.enable());p&&p.onChange();f&&f.onChange()},onOk:function(){var g=a.getSelection(),d=this._.selectedElement&&g.createBookmarks(),c=this._.selectedElement||l("table"),b={};this.commitContent(b, -c);if(b.info){b=b.info;if(!this._.selectedElement)for(var h=c.append(l("tbody")),e=parseInt(b.txtRows,10)||0,f=parseInt(b.txtCols,10)||0,i=0;i<e;i++)for(var j=h.append(l("tr")),k=0;k<f;k++)j.append(l("td")).appendBogus();e=b.selHeaders;if(!c.$.tHead&&("row"==e||"both"==e)){j=new CKEDITOR.dom.element(c.$.createTHead());h=c.getElementsByTag("tbody").getItem(0);h=h.getElementsByTag("tr").getItem(0);for(i=0;i<h.getChildCount();i++)f=h.getChild(i),f.type==CKEDITOR.NODE_ELEMENT&&!f.data("cke-bookmark")&& -(f.renameNode("th"),f.setAttribute("scope","col"));j.append(h.remove())}if(null!==c.$.tHead&&!("row"==e||"both"==e)){j=new CKEDITOR.dom.element(c.$.tHead);h=c.getElementsByTag("tbody").getItem(0);for(k=h.getFirst();0<j.getChildCount();){h=j.getFirst();for(i=0;i<h.getChildCount();i++)f=h.getChild(i),f.type==CKEDITOR.NODE_ELEMENT&&(f.renameNode("td"),f.removeAttribute("scope"));h.insertBefore(k)}j.remove()}if(!this.hasColumnHeaders&&("col"==e||"both"==e))for(j=0;j<c.$.rows.length;j++)f=new CKEDITOR.dom.element(c.$.rows[j].cells[0]), -f.renameNode("th"),f.setAttribute("scope","row");if(this.hasColumnHeaders&&!("col"==e||"both"==e))for(i=0;i<c.$.rows.length;i++)j=new CKEDITOR.dom.element(c.$.rows[i]),"tbody"==j.getParent().getName()&&(f=new CKEDITOR.dom.element(j.$.cells[0]),f.renameNode("td"),f.removeAttribute("scope"));b.txtHeight?c.setStyle("height",b.txtHeight):c.removeStyle("height");b.txtWidth?c.setStyle("width",b.txtWidth):c.removeStyle("width");c.getAttribute("style")||c.removeAttribute("style")}if(this._.selectedElement)try{g.selectBookmarks(d)}catch(m){}else a.insertElement(c), -setTimeout(function(){var g=new CKEDITOR.dom.element(c.$.rows[0].cells[0]),b=a.createRange();b.moveToPosition(g,CKEDITOR.POSITION_AFTER_START);b.select()},0)},contents:[{id:"info",label:a.lang.table.title,elements:[{type:"hbox",widths:[null,null],styles:["vertical-align:top"],children:[{type:"vbox",padding:0,children:[{type:"text",id:"txtRows","default":3,label:a.lang.table.rows,required:!0,controlStyle:"width:5em",validate:o(a.lang.table.invalidRows),setup:function(a){this.setValue(a.$.rows.length)}, -commit:k},{type:"text",id:"txtCols","default":2,label:a.lang.table.columns,required:!0,controlStyle:"width:5em",validate:o(a.lang.table.invalidCols),setup:function(a){this.setValue(r(a))},commit:k},{type:"html",html:"&nbsp;"},{type:"select",id:"selHeaders",requiredContent:"th","default":"",label:a.lang.table.headers,items:[[a.lang.table.headersNone,""],[a.lang.table.headersRow,"row"],[a.lang.table.headersColumn,"col"],[a.lang.table.headersBoth,"both"]],setup:function(a){var d=this.getDialog();d.hasColumnHeaders= -!0;for(var c=0;c<a.$.rows.length;c++){var b=a.$.rows[c].cells[0];if(b&&"th"!=b.nodeName.toLowerCase()){d.hasColumnHeaders=!1;break}}null!==a.$.tHead?this.setValue(d.hasColumnHeaders?"both":"row"):this.setValue(d.hasColumnHeaders?"col":"")},commit:k},{type:"text",id:"txtBorder",requiredContent:"table[border]","default":a.filter.check("table[border]")?1:0,label:a.lang.table.border,controlStyle:"width:3em",validate:CKEDITOR.dialog.validate.number(a.lang.table.invalidBorder),setup:function(a){this.setValue(a.getAttribute("border")|| -"")},commit:function(a,d){this.getValue()?d.setAttribute("border",this.getValue()):d.removeAttribute("border")}},{id:"cmbAlign",type:"select",requiredContent:"table[align]","default":"",label:a.lang.common.align,items:[[a.lang.common.notSet,""],[a.lang.common.alignLeft,"left"],[a.lang.common.alignCenter,"center"],[a.lang.common.alignRight,"right"]],setup:function(a){this.setValue(a.getAttribute("align")||"")},commit:function(a,d){this.getValue()?d.setAttribute("align",this.getValue()):d.removeAttribute("align")}}]}, -{type:"vbox",padding:0,children:[{type:"hbox",widths:["5em"],children:[{type:"text",id:"txtWidth",requiredContent:"table{width}",controlStyle:"width:5em",label:a.lang.common.width,title:a.lang.common.cssLengthTooltip,"default":a.filter.check("table{width}")?500>n.getSize("width")?"100%":500:0,getValue:q,validate:CKEDITOR.dialog.validate.cssLength(a.lang.common.invalidCssLength.replace("%1",a.lang.common.width)),onChange:function(){var a=this.getDialog().getContentElement("advanced","advStyles");a&& -a.updateStyle("width",this.getValue())},setup:function(a){this.setValue(a.getStyle("width"))},commit:k}]},{type:"hbox",widths:["5em"],children:[{type:"text",id:"txtHeight",requiredContent:"table{height}",controlStyle:"width:5em",label:a.lang.common.height,title:a.lang.common.cssLengthTooltip,"default":"",getValue:q,validate:CKEDITOR.dialog.validate.cssLength(a.lang.common.invalidCssLength.replace("%1",a.lang.common.height)),onChange:function(){var a=this.getDialog().getContentElement("advanced","advStyles"); -a&&a.updateStyle("height",this.getValue())},setup:function(a){(a=a.getStyle("height"))&&this.setValue(a)},commit:k}]},{type:"html",html:"&nbsp;"},{type:"text",id:"txtCellSpace",requiredContent:"table[cellspacing]",controlStyle:"width:3em",label:a.lang.table.cellSpace,"default":a.filter.check("table[cellspacing]")?1:0,validate:CKEDITOR.dialog.validate.number(a.lang.table.invalidCellSpacing),setup:function(a){this.setValue(a.getAttribute("cellSpacing")||"")},commit:function(a,d){this.getValue()?d.setAttribute("cellSpacing", -this.getValue()):d.removeAttribute("cellSpacing")}},{type:"text",id:"txtCellPad",requiredContent:"table[cellpadding]",controlStyle:"width:3em",label:a.lang.table.cellPad,"default":a.filter.check("table[cellpadding]")?1:0,validate:CKEDITOR.dialog.validate.number(a.lang.table.invalidCellPadding),setup:function(a){this.setValue(a.getAttribute("cellPadding")||"")},commit:function(a,d){this.getValue()?d.setAttribute("cellPadding",this.getValue()):d.removeAttribute("cellPadding")}}]}]},{type:"html",align:"right", -html:""},{type:"vbox",padding:0,children:[{type:"text",id:"txtCaption",requiredContent:"caption",label:a.lang.table.caption,setup:function(a){this.enable();a=a.getElementsByTag("caption");if(0<a.count()){var a=a.getItem(0),d=a.getFirst(CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_ELEMENT));d&&!d.equals(a.getBogus())?(this.disable(),this.setValue(a.getText())):(a=CKEDITOR.tools.trim(a.getText()),this.setValue(a))}},commit:function(e,d){if(this.isEnabled()){var c=this.getValue(),b=d.getElementsByTag("caption"); -if(c)0<b.count()?(b=b.getItem(0),b.setHtml("")):(b=new CKEDITOR.dom.element("caption",a.document),d.getChildCount()?b.insertBefore(d.getFirst()):b.appendTo(d)),b.append(new CKEDITOR.dom.text(c,a.document));else if(0<b.count())for(c=b.count()-1;0<=c;c--)b.getItem(c).remove()}}},{type:"text",id:"txtSummary",requiredContent:"table[summary]",label:a.lang.table.summary,setup:function(a){this.setValue(a.getAttribute("summary")||"")},commit:function(a,d){this.getValue()?d.setAttribute("summary",this.getValue()): -d.removeAttribute("summary")}}]}]},m&&m.createAdvancedTab(a,null,"table")]}}var q=CKEDITOR.tools.cssLength,k=function(a){var e=this.id;a.info||(a.info={});a.info[e]=this.getValue()};CKEDITOR.dialog.add("table",function(a){return n(a,"table")});CKEDITOR.dialog.add("tableProperties",function(a){return n(a,"tableProperties")})})(); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/tabletools/dialogs/tableCell.js b/assets/plugins/ckeditor/plugins/tabletools/dialogs/tableCell.js deleted file mode 100644 index a328cc9e..00000000 --- a/assets/plugins/ckeditor/plugins/tabletools/dialogs/tableCell.js +++ /dev/null @@ -1,16 +0,0 @@ -/* - Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.dialog.add("cellProperties",function(f){var g=f.lang.table,c=g.cell,d=f.lang.common,h=CKEDITOR.dialog.validate,j=/^(\d+(?:\.\d+)?)(px|%)$/,e={type:"html",html:"&nbsp;"},k="rtl"==f.lang.dir,i=f.plugins.colordialog;return{title:c.title,minWidth:CKEDITOR.env.ie&&CKEDITOR.env.quirks?450:410,minHeight:CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks)?230:220,contents:[{id:"info",label:c.title,accessKey:"I",elements:[{type:"hbox",widths:["40%","5%","40%"],children:[{type:"vbox",padding:0, -children:[{type:"hbox",widths:["70%","30%"],children:[{type:"text",id:"width",width:"100px",label:d.width,validate:h.number(c.invalidWidth),onLoad:function(){var a=this.getDialog().getContentElement("info","widthType").getElement(),b=this.getInputElement(),c=b.getAttribute("aria-labelledby");b.setAttribute("aria-labelledby",[c,a.$.id].join(" "))},setup:function(a){var b=parseInt(a.getAttribute("width"),10),a=parseInt(a.getStyle("width"),10);!isNaN(b)&&this.setValue(b);!isNaN(a)&&this.setValue(a)}, -commit:function(a){var b=parseInt(this.getValue(),10),c=this.getDialog().getValueOf("info","widthType");isNaN(b)?a.removeStyle("width"):a.setStyle("width",b+c);a.removeAttribute("width")},"default":""},{type:"select",id:"widthType",label:f.lang.table.widthUnit,labelStyle:"visibility:hidden","default":"px",items:[[g.widthPx,"px"],[g.widthPc,"%"]],setup:function(a){(a=j.exec(a.getStyle("width")||a.getAttribute("width")))&&this.setValue(a[2])}}]},{type:"hbox",widths:["70%","30%"],children:[{type:"text", -id:"height",label:d.height,width:"100px","default":"",validate:h.number(c.invalidHeight),onLoad:function(){var a=this.getDialog().getContentElement("info","htmlHeightType").getElement(),b=this.getInputElement(),c=b.getAttribute("aria-labelledby");b.setAttribute("aria-labelledby",[c,a.$.id].join(" "))},setup:function(a){var b=parseInt(a.getAttribute("height"),10),a=parseInt(a.getStyle("height"),10);!isNaN(b)&&this.setValue(b);!isNaN(a)&&this.setValue(a)},commit:function(a){var b=parseInt(this.getValue(), -10);isNaN(b)?a.removeStyle("height"):a.setStyle("height",CKEDITOR.tools.cssLength(b));a.removeAttribute("height")}},{id:"htmlHeightType",type:"html",html:"<br />"+g.widthPx}]},e,{type:"select",id:"wordWrap",label:c.wordWrap,"default":"yes",items:[[c.yes,"yes"],[c.no,"no"]],setup:function(a){var b=a.getAttribute("noWrap");("nowrap"==a.getStyle("white-space")||b)&&this.setValue("no")},commit:function(a){"no"==this.getValue()?a.setStyle("white-space","nowrap"):a.removeStyle("white-space");a.removeAttribute("noWrap")}}, -e,{type:"select",id:"hAlign",label:c.hAlign,"default":"",items:[[d.notSet,""],[d.alignLeft,"left"],[d.alignCenter,"center"],[d.alignRight,"right"]],setup:function(a){var b=a.getAttribute("align");this.setValue(a.getStyle("text-align")||b||"")},commit:function(a){var b=this.getValue();b?a.setStyle("text-align",b):a.removeStyle("text-align");a.removeAttribute("align")}},{type:"select",id:"vAlign",label:c.vAlign,"default":"",items:[[d.notSet,""],[d.alignTop,"top"],[d.alignMiddle,"middle"],[d.alignBottom, -"bottom"],[c.alignBaseline,"baseline"]],setup:function(a){var b=a.getAttribute("vAlign"),a=a.getStyle("vertical-align");switch(a){case "top":case "middle":case "bottom":case "baseline":break;default:a=""}this.setValue(a||b||"")},commit:function(a){var b=this.getValue();b?a.setStyle("vertical-align",b):a.removeStyle("vertical-align");a.removeAttribute("vAlign")}}]},e,{type:"vbox",padding:0,children:[{type:"select",id:"cellType",label:c.cellType,"default":"td",items:[[c.data,"td"],[c.header,"th"]], -setup:function(a){this.setValue(a.getName())},commit:function(a){a.renameNode(this.getValue())}},e,{type:"text",id:"rowSpan",label:c.rowSpan,"default":"",validate:h.integer(c.invalidRowSpan),setup:function(a){(a=parseInt(a.getAttribute("rowSpan"),10))&&1!=a&&this.setValue(a)},commit:function(a){var b=parseInt(this.getValue(),10);b&&1!=b?a.setAttribute("rowSpan",this.getValue()):a.removeAttribute("rowSpan")}},{type:"text",id:"colSpan",label:c.colSpan,"default":"",validate:h.integer(c.invalidColSpan), -setup:function(a){(a=parseInt(a.getAttribute("colSpan"),10))&&1!=a&&this.setValue(a)},commit:function(a){var b=parseInt(this.getValue(),10);b&&1!=b?a.setAttribute("colSpan",this.getValue()):a.removeAttribute("colSpan")}},e,{type:"hbox",padding:0,widths:["60%","40%"],children:[{type:"text",id:"bgColor",label:c.bgColor,"default":"",setup:function(a){var b=a.getAttribute("bgColor");this.setValue(a.getStyle("background-color")||b)},commit:function(a){this.getValue()?a.setStyle("background-color",this.getValue()): -a.removeStyle("background-color");a.removeAttribute("bgColor")}},i?{type:"button",id:"bgColorChoose","class":"colorChooser",label:c.chooseColor,onLoad:function(){this.getElement().getParent().setStyle("vertical-align","bottom")},onClick:function(){f.getColorFromDialog(function(a){a&&this.getDialog().getContentElement("info","bgColor").setValue(a);this.focus()},this)}}:e]},e,{type:"hbox",padding:0,widths:["60%","40%"],children:[{type:"text",id:"borderColor",label:c.borderColor,"default":"",setup:function(a){var b= -a.getAttribute("borderColor");this.setValue(a.getStyle("border-color")||b)},commit:function(a){this.getValue()?a.setStyle("border-color",this.getValue()):a.removeStyle("border-color");a.removeAttribute("borderColor")}},i?{type:"button",id:"borderColorChoose","class":"colorChooser",label:c.chooseColor,style:(k?"margin-right":"margin-left")+": 10px",onLoad:function(){this.getElement().getParent().setStyle("vertical-align","bottom")},onClick:function(){f.getColorFromDialog(function(a){a&&this.getDialog().getContentElement("info", -"borderColor").setValue(a);this.focus()},this)}}:e]}]}]}]}],onShow:function(){this.cells=CKEDITOR.plugins.tabletools.getSelectedCells(this._.editor.getSelection());this.setupContent(this.cells[0])},onOk:function(){for(var a=this._.editor.getSelection(),b=a.createBookmarks(),c=this.cells,d=0;d<c.length;d++)this.commitContent(c[d]);this._.editor.forceNextSelectionCheck();a.selectBookmarks(b);this._.editor.selectionChange()}}}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/wsc/LICENSE.md b/assets/plugins/ckeditor/plugins/wsc/LICENSE.md deleted file mode 100644 index c7d374ad..00000000 --- a/assets/plugins/ckeditor/plugins/wsc/LICENSE.md +++ /dev/null @@ -1,28 +0,0 @@ -Software License Agreement -========================== - -**CKEditor WSC Plugin** -Copyright &copy; 2012, [CKSource](http://cksource.com) - Frederico Knabben. All rights reserved. - -Licensed under the terms of any of the following licenses at your choice: - -* GNU General Public License Version 2 or later (the "GPL"): - http://www.gnu.org/licenses/gpl.html - -* GNU Lesser General Public License Version 2.1 or later (the "LGPL"): - http://www.gnu.org/licenses/lgpl.html - -* Mozilla Public License Version 1.1 or later (the "MPL"): - http://www.mozilla.org/MPL/MPL-1.1.html - -You are not required to, but if you want to explicitly declare the license you have chosen to be bound to when using, reproducing, modifying and distributing this software, just include a text file titled "legal.txt" in your version of this software, indicating your license choice. - -Sources of Intellectual Property Included in this plugin --------------------------------------------------------- - -Where not otherwise indicated, all plugin content is authored by CKSource engineers and consists of CKSource-owned intellectual property. In some specific instances, the plugin will incorporate work done by developers outside of CKSource with their express permission. - -Trademarks ----------- - -CKEditor is a trademark of CKSource - Frederico Knabben. All other brand and product names are trademarks, registered trademarks or service marks of their respective holders. diff --git a/assets/plugins/ckeditor/plugins/wsc/README.md b/assets/plugins/ckeditor/plugins/wsc/README.md deleted file mode 100644 index 46eeafb0..00000000 --- a/assets/plugins/ckeditor/plugins/wsc/README.md +++ /dev/null @@ -1,25 +0,0 @@ -CKEditor WebSpellChecker Plugin -=============================== - -This plugin brings Web Spell Checker (WSC) into CKEditor. - -WSC is "installation-less", using the web-services of [WebSpellChecker.net](http://www.webspellchecker.net/). It's an out of the box solution. - -Installation ------------- - -1. Clone/copy this repository contents in a new "plugins/wsc" folder in your CKEditor installation. -2. Enable the "wsc" plugin in the CKEditor configuration file (config.js): - - config.extraPlugins = 'wsc'; - -That's all. WSC will appear on the editor toolbar and will be ready to use. - -License -------- - -Licensed under the terms of any of the following licenses at your choice: [GPL](http://www.gnu.org/licenses/gpl.html), [LGPL](http://www.gnu.org/licenses/lgpl.html) and [MPL](http://www.mozilla.org/MPL/MPL-1.1.html). - -See LICENSE.md for more information. - -Developed in cooperation with [WebSpellChecker.net](http://www.webspellchecker.net/). diff --git a/assets/plugins/ckeditor/plugins/wsc/dialogs/ciframe.html b/assets/plugins/ckeditor/plugins/wsc/dialogs/ciframe.html deleted file mode 100644 index 25db3c73..00000000 --- a/assets/plugins/ckeditor/plugins/wsc/dialogs/ciframe.html +++ /dev/null @@ -1,66 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> -<!-- -Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license ---> -<html> -<head> - <title></title> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> - <script type="text/javascript"> - -function gup( name ) -{ - name = name.replace( /[\[]/, '\\\[' ).replace( /[\]]/, '\\\]' ) ; - var regexS = '[\\?&]' + name + '=([^&#]*)' ; - var regex = new RegExp( regexS ) ; - var results = regex.exec( window.location.href ) ; - - if ( results ) - return results[ 1 ] ; - else - return '' ; -} - -var interval; - -function sendData2Master() -{ - var destination = window.parent.parent ; - try - { - if ( destination.XDTMaster ) - { - var t = destination.XDTMaster.read( [ gup( 'cmd' ), gup( 'data' ) ] ) ; - window.clearInterval( interval ) ; - } - } - catch (e) {} -} - -function OnMessage (event) { - var message = event.data; - var destination = window.parent.parent; - destination.XDTMaster.read( [ 'end', message, 'fpm' ] ) ; -} - -function listenPostMessage() { - if (window.addEventListener) { // all browsers except IE before version 9 - window.addEventListener ("message", OnMessage, false); - }else { - if (window.attachEvent) { // IE before version 9 - window.attachEvent("onmessage", OnMessage); - } - } -} - -function onLoad() -{ - interval = window.setInterval( sendData2Master, 100 ); - listenPostMessage(); -} - -</script> -</head> -<body onload="onLoad()"><p></p></body> -</html> diff --git a/assets/plugins/ckeditor/plugins/wsc/dialogs/tmp.html b/assets/plugins/ckeditor/plugins/wsc/dialogs/tmp.html deleted file mode 100644 index 6e9b012e..00000000 --- a/assets/plugins/ckeditor/plugins/wsc/dialogs/tmp.html +++ /dev/null @@ -1,115 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="UTF-8"> - <title>iframe</title> - - <style> - html,body{ - margin: 0; - height: 100%; - font: 13px/1.555 "Trebuchet MS", sans-serif; - } - a{ - color: #888; - font-weight: bold; - text-decoration: none; - border-bottom: 1px solid #888; - } - .main-box { - color:#252525; - padding: 3px 5px; - text-align: justify; - } - .main-box p{margin: 0 0 14px;} - .main-box .cerr{ - color: #f00000; - border-bottom-color: #f00000; - } - </style> - </head> - <body> - <div id="content" class="main-box"></div> - <iframe src="" frameborder="0" id="spelltext" name="spelltext" style="display:none; width: 100%" ></iframe> - <iframe src="" frameborder="0" id="loadsuggestfirst" name="loadsuggestfirst" style="display:none; width: 100%" ></iframe> - <iframe src="" frameborder="0" id="loadspellsuggestall" name="loadspellsuggestall" style="display:none; width: 100%" ></iframe> - <iframe src="" frameborder="0" id="loadOptionsForm" name="loadOptionsForm" style="display:none; width: 100%" ></iframe> - <script> - (function(window) { - // Constructor Manager PostMessage - - var ManagerPostMessage = function() { - var _init = function(handler) { - if (document.addEventListener) { - window.addEventListener('message', handler, false); - } else { - window.attachEvent("onmessage", handler); - } - }; - var _sendCmd = function(o) { - var str, - type = Object.prototype.toString, - fn = o.fn || null, - id = o.id || '', - target = o.target || window, - message = o.message || { 'id': id }; - - if (type.call(o.message) == "[object Object]") { - (o.message['id']) ? o.message['id'] : o.message['id'] = id; - message = o.message; - } - str = JSON.stringify(message, fn); - target.postMessage(str, '*'); - }; - - return { - init: _init, - send: _sendCmd - }; - }; - - var manageMessageTmp = new ManagerPostMessage; - - - var appString = (function(){ - var spell = parent.CKEDITOR.config.wsc.DefaultParams.scriptPath; - var serverUrl = parent.CKEDITOR.config.wsc.DefaultParams.serviceHost; - return serverUrl + spell; - })(); - - function loadScript(src, callback) { - var scriptTag = document.createElement("script"); - scriptTag.type = "text/javascript"; - callback ? callback : callback = function() {}; - if(scriptTag.readyState) { - //IE - scriptTag.onreadystatechange = function() { - if (scriptTag.readyState == "loaded" || - scriptTag.readyState == "complete") { - scriptTag.onreadystatechange = null; - setTimeout(function(){scriptTag.parentNode.removeChild(scriptTag)},1); - callback(); - } - }; - }else{ - //Others - scriptTag.onload = function() { - setTimeout(function(){scriptTag.parentNode.removeChild(scriptTag)},1); - callback(); - }; - } - scriptTag.src = src; - document.getElementsByTagName("head")[0].appendChild(scriptTag); - } - window.onload = function(){ - loadScript(appString, function(){ - manageMessageTmp.send({ - 'id': 'iframeOnload', - 'target': window.parent - }); - }); - } - })(this); - </script> - </body> -</html> diff --git a/assets/plugins/ckeditor/plugins/wsc/dialogs/tmpFrameset.html b/assets/plugins/ckeditor/plugins/wsc/dialogs/tmpFrameset.html deleted file mode 100644 index 0d675f4d..00000000 --- a/assets/plugins/ckeditor/plugins/wsc/dialogs/tmpFrameset.html +++ /dev/null @@ -1,52 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> -<!-- -Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license ---> -<html> -<head> - <title></title> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> - <script type="text/javascript"> - -function doLoadScript( url ) -{ - if ( !url ) - return false ; - - var s = document.createElement( "script" ) ; - s.type = "text/javascript" ; - s.src = url ; - document.getElementsByTagName( "head" )[ 0 ].appendChild( s ) ; - - return true ; -} - -var opener; -function tryLoad() -{ - opener = window.parent; - - // get access to global parameters - var oParams = window.opener.oldFramesetPageParams; - - // make frameset rows string prepare - var sFramesetRows = ( parseInt( oParams.firstframeh, 10 ) || '30') + ",*," + ( parseInt( oParams.thirdframeh, 10 ) || '150' ) + ',0' ; - document.getElementById( 'itFrameset' ).rows = sFramesetRows ; - - // dynamic including init frames and crossdomain transport code - // from config sproxy_js_frameset url - var addScriptUrl = oParams.sproxy_js_frameset ; - doLoadScript( addScriptUrl ) ; -} - - </script> -</head> - -<frameset id="itFrameset" onload="tryLoad();" border="0" rows="30,*,*,0"> - <frame scrolling="no" framespacing="0" frameborder="0" noresize="noresize" marginheight="0" marginwidth="2" src="" name="navbar"></frame> - <frame scrolling="auto" framespacing="0" frameborder="0" noresize="noresize" marginheight="0" marginwidth="0" src="" name="mid"></frame> - <frame scrolling="no" framespacing="0" frameborder="0" noresize="noresize" marginheight="1" marginwidth="1" src="" name="bot"></frame> - <frame scrolling="no" framespacing="0" frameborder="0" noresize="noresize" marginheight="1" marginwidth="1" src="" name="spellsuggestall"></frame> -</frameset> -</html> diff --git a/assets/plugins/ckeditor/plugins/wsc/dialogs/wsc.css b/assets/plugins/ckeditor/plugins/wsc/dialogs/wsc.css deleted file mode 100644 index 9e834f1d..00000000 --- a/assets/plugins/ckeditor/plugins/wsc/dialogs/wsc.css +++ /dev/null @@ -1,82 +0,0 @@ -/* -Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ - -html, body -{ - background-color: transparent; - margin: 0px; - padding: 0px; -} - -body -{ - padding: 10px; -} - -body, td, input, select, textarea -{ - font-size: 11px; - font-family: 'Microsoft Sans Serif' , Arial, Helvetica, Verdana; -} - -.midtext -{ - padding:0px; - margin:10px; -} - -.midtext p -{ - padding:0px; - margin:10px; -} - -.Button -{ - border: #737357 1px solid; - color: #3b3b1f; - background-color: #c7c78f; -} - -.PopupTabArea -{ - color: #737357; - background-color: #e3e3c7; -} - -.PopupTitleBorder -{ - border-bottom: #d5d59d 1px solid; -} -.PopupTabEmptyArea -{ - padding-left: 10px; - border-bottom: #d5d59d 1px solid; -} - -.PopupTab, .PopupTabSelected -{ - border-right: #d5d59d 1px solid; - border-top: #d5d59d 1px solid; - border-left: #d5d59d 1px solid; - padding: 3px 5px 3px 5px; - color: #737357; -} - -.PopupTab -{ - margin-top: 1px; - border-bottom: #d5d59d 1px solid; - cursor: pointer; -} - -.PopupTabSelected -{ - font-weight: bold; - cursor: default; - padding-top: 4px; - border-bottom: #f1f1e3 1px solid; - background-color: #f1f1e3; -} diff --git a/assets/plugins/ckeditor/plugins/wsc/dialogs/wsc.js b/assets/plugins/ckeditor/plugins/wsc/dialogs/wsc.js deleted file mode 100644 index 22410bdb..00000000 --- a/assets/plugins/ckeditor/plugins/wsc/dialogs/wsc.js +++ /dev/null @@ -1,67 +0,0 @@ -/* - Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -(function(){function w(a){if(!a)throw"Languages-by-groups list are required for construct selectbox";var c=[],d="",f;for(f in a)for(var g in a[f]){var h=a[f][g];"en_US"==h?d=h:c.push(h)}c.sort();d&&c.unshift(d);return{getCurrentLangGroup:function(c){a:{for(var d in a)for(var f in a[d])if(f.toUpperCase()===c.toUpperCase()){c=d;break a}c=""}return c},setLangList:function(){var c={},d;for(d in a)for(var f in a[d])c[a[d][f]]=f;return c}()}}var e=function(){var a=function(a,b,f){var f=f||{},g=f.expires; -if("number"==typeof g&&g){var h=new Date;h.setTime(h.getTime()+1E3*g);g=f.expires=h}g&&g.toUTCString&&(f.expires=g.toUTCString());var b=encodeURIComponent(b),a=a+"="+b,e;for(e in f)b=f[e],a+="; "+e,!0!==b&&(a+="="+b);document.cookie=a};return{postMessage:{init:function(a){document.addEventListener?window.addEventListener("message",a,!1):window.attachEvent("onmessage",a)},send:function(a){var b=a.fn||null,f=a.id||"",g=a.target||window,h=a.message||{id:f};"[object Object]"==Object.prototype.toString.call(a.message)&& -(a.message.id||(a.message.id=f),h=a.message);a=window.JSON.stringify(h,b);g.postMessage(a,"*")}},hash:{create:function(){},parse:function(){}},cookie:{set:a,get:function(a){return(a=document.cookie.match(RegExp("(?:^|; )"+a.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,"\\$1")+"=([^;]*)")))?decodeURIComponent(a[1]):void 0},remove:function(c){a(c,"",{expires:-1})}}}}(),a=a||{};a.TextAreaNumber=null;a.load=!0;a.cmd={SpellTab:"spell",Thesaurus:"thes",GrammTab:"grammar"};a.dialog=null;a.optionNode=null;a.selectNode= -null;a.grammerSuggest=null;a.textNode={};a.iframeMain=null;a.dataTemp="";a.div_overlay=null;a.textNodeInfo={};a.selectNode={};a.selectNodeResponce={};a.langList=null;a.langSelectbox=null;a.banner="";a.show_grammar=null;a.div_overlay_no_check=null;a.targetFromFrame={};a.onLoadOverlay=null;a.LocalizationComing={};a.OverlayPlace=null;a.LocalizationButton={ChangeTo:{instance:null,text:"Change to"},ChangeAll:{instance:null,text:"Change All"},IgnoreWord:{instance:null,text:"Ignore word"},IgnoreAllWords:{instance:null, -text:"Ignore all words"},Options:{instance:null,text:"Options",optionsDialog:{instance:null}},AddWord:{instance:null,text:"Add word"},FinishChecking:{instance:null,text:"Finish Checking"}};a.LocalizationLabel={ChangeTo:{instance:null,text:"Change to"},Suggestions:{instance:null,text:"Suggestions"}};var x=function(b){for(var c in b)b[c].instance.getElement().setText(a.LocalizationComing[c])},y=function(b){for(var c in b){if(!b[c].instance.setLabel)break;b[c].instance.setLabel(a.LocalizationComing[c])}}, -j,p;a.framesetHtml=function(b){return'<iframe src="'+a.templatePath+'" id='+a.iframeNumber+"_"+b+' frameborder="0" allowtransparency="1" style="width:100%;border: 1px solid #AEB3B9;overflow: auto;background:#fff; border-radius: 3px;"></iframe>'};a.setIframe=function(b,c){var d=a.framesetHtml(c);return b.getElement().setHtml(d)};a.setCurrentIframe=function(b){a.setIframe(a.dialog._.contents[b].Content,b)};a.setHeightBannerFrame=function(){var b=a.dialog.getContentElement("SpellTab","banner").getElement(), -c=a.dialog.getContentElement("GrammTab","banner").getElement(),d=a.dialog.getContentElement("Thesaurus","banner").getElement();b.setStyle("height","90px");c.setStyle("height","90px");d.setStyle("height","90px")};a.setHeightFrame=function(){document.getElementById(a.iframeNumber+"_"+a.dialog._.currentTabId).style.height="240px"};a.sendData=function(b){var c=b._.currentTabId,d=b._.contents[c].Content,f,g;a.setIframe(d,c);b.parts.tabs.removeAllListeners();b.parts.tabs.on("click",function(h){h=h||window.event; -h.data.getTarget().is("a")&&c!=b._.currentTabId&&(c=b._.currentTabId,d=b._.contents[c].Content,f=a.iframeNumber+"_"+c,a.div_overlay.setEnable(),d.getElement().getChildCount()?t(a.targetFromFrame[f],a.cmd[c]):(a.setIframe(d,c),g=document.getElementById(f),a.targetFromFrame[f]=g.contentWindow))})};a.buildSelectLang=function(a){var c=new CKEDITOR.dom.element("div"),d=new CKEDITOR.dom.element("select"),a="wscLang"+a;c.addClass("cke_dialog_ui_input_select");c.setAttribute("role","presentation");c.setStyles({height:"auto", -position:"absolute",right:"0",top:"-1px",width:"160px","white-space":"normal"});d.setAttribute("id",a);d.addClass("cke_dialog_ui_input_select");d.setStyles({width:"160px"});c.append(d);return c};a.buildOptionLang=function(b,c){var d=document.getElementById("wscLang"+c),f=document.createDocumentFragment(),g,h,e=[];if(0===d.options.length){for(g in b)e.push([g,b[g]]);e.sort();for(var k=0;k<e.length;k++)g=document.createElement("option"),g.setAttribute("value",e[k][1]),h=document.createTextNode(e[k][0]), -g.appendChild(h),e[k][1]==a.selectingLang&&g.setAttribute("selected","selected"),f.appendChild(g);d.appendChild(f)}};a.buildOptionSynonyms=function(b){b=a.selectNodeResponce[b];a.selectNode.synonyms.clear();for(var c=0;c<b.length;c++)a.selectNode.synonyms.add(b[c],b[c]);a.selectNode.synonyms.getInputElement().$.firstChild.selected=!0;a.textNode.Thesaurus.setValue(a.selectNode.synonyms.getInputElement().getValue())};var q=function(a){var c=document,d=a.target||c.body,f=a.id||"overlayBlock",g=a.opacity|| -"0.9",a=a.background||"#f1f1f1",e=c.getElementById(f),i=e||c.createElement("div");i.style.cssText="position: absolute;top:30px;bottom:41px;left:1px;right:1px;z-index: 10020;padding:0;margin:0;background:"+a+";opacity: "+g+";filter: alpha(opacity="+100*g+");display: none;";i.id=f;e||d.appendChild(i);return{setDisable:function(){i.style.display="none"},setEnable:function(){i.style.display="block"}}},z=function(b,c,d){var f=new CKEDITOR.dom.element("div"),g=new CKEDITOR.dom.element("input"),e=new CKEDITOR.dom.element("label"), -i="wscGrammerSuggest"+b+"_"+c;f.addClass("cke_dialog_ui_input_radio");f.setAttribute("role","presentation");f.setStyles({width:"97%",padding:"5px","white-space":"normal"});g.setAttributes({type:"radio",value:c,name:"wscGrammerSuggest",id:i});g.setStyles({"float":"left"});g.on("click",function(b){a.textNode.GrammTab.setValue(b.sender.getValue())});d&&g.setAttribute("checked",!0);g.addClass("cke_dialog_ui_radio_input");e.appendText(b);e.setAttribute("for",i);e.setStyles({display:"block","line-height":"16px", -"margin-left":"18px","white-space":"normal"});f.append(g);f.append(e);return f},u=function(a){a=a||"true";null!==a&&"false"==a&&m()},n=function(b){var c=new w(b),b="wscLang"+a.dialog.getParentEditor().name,b=document.getElementById(b),d=a.iframeNumber+"_"+a.dialog._.currentTabId;a.buildOptionLang(c.setLangList,a.dialog.getParentEditor().name);v[c.getCurrentLangGroup(a.selectingLang)]();u(a.show_grammar);b.onchange=function(){v[c.getCurrentLangGroup(this.value)]();u(a.show_grammar);a.div_overlay.setEnable(); -a.selectingLang=this.value;e.postMessage.send({message:{changeLang:a.selectingLang,text:a.dataTemp},target:a.targetFromFrame[d],id:"selectionLang_outer__page"})}},A=function(b){if("no_any_suggestions"==b){b="No suggestions";a.LocalizationButton.ChangeTo.instance.disable();a.LocalizationButton.ChangeAll.instance.disable();var c=function(b){b=a.LocalizationButton[b].instance;b.getElement().hasClass("cke_disabled")?b.getElement().setStyle("color","#a0a0a0"):b.disable()};c("ChangeTo");c("ChangeAll")}else a.LocalizationButton.ChangeTo.instance.enable(), -a.LocalizationButton.ChangeAll.instance.enable(),a.LocalizationButton.ChangeTo.instance.getElement().setStyle("color","#333"),a.LocalizationButton.ChangeAll.instance.getElement().setStyle("color","#333");return b},B={iframeOnload:function(){a.div_overlay.setEnable();var b=a.dialog._.currentTabId;t(a.targetFromFrame[a.iframeNumber+"_"+b],a.cmd[b])},suggestlist:function(b){delete b.id;a.div_overlay_no_check.setDisable();r();n(a.langList);var c=A(b.word),d="";c instanceof Array&&(c=b.word[0]);d=c=c.split(","); -p.clear();a.textNode.SpellTab.setValue(d[0]);for(b=0;b<d.length;b++)p.add(d[b],d[b]);l();a.div_overlay.setDisable()},grammerSuggest:function(b){delete b.id;delete b.mocklangs;r();n(a.langList);var c=b.grammSuggest[0];a.grammerSuggest.getElement().setHtml("");a.textNode.GrammTab.reset();a.textNode.GrammTab.setValue(c);a.textNodeInfo.GrammTab.getElement().setHtml("");a.textNodeInfo.GrammTab.getElement().setText(b.info);for(var b=b.grammSuggest,c=b.length,d=!0,f=0;f<c;f++)a.grammerSuggest.getElement().append(z(b[f], -b[f],d)),d=!1;l();a.div_overlay.setDisable()},thesaurusSuggest:function(b){delete b.id;delete b.mocklangs;r();n(a.langList);a.selectNodeResponce=b;a.textNode.Thesaurus.reset();a.selectNode.categories.clear();for(var c in b)a.selectNode.categories.add(c,c);b=a.selectNode.categories.getInputElement().getChildren().$[0].value;a.selectNode.categories.getInputElement().getChildren().$[0].selected=!0;a.buildOptionSynonyms(b);l();a.div_overlay.setDisable()},finish:function(b){delete b.id;a.dialog.getContentElement(a.dialog._.currentTabId, -"bottomGroup").getElement().hide();a.dialog.getContentElement(a.dialog._.currentTabId,"BlockFinishChecking").getElement().show();a.div_overlay.setDisable()},settext:function(b){delete b.id;a.dialog.getParentEditor().getCommand("checkspell");var c=a.dialog.getParentEditor();c.focus();c.setData(b.text,function(){a.dataTemp="";c.unlockSelection();c.fire("saveSnapshot");a.dialog.hide()})},ReplaceText:function(b){delete b.id;a.div_overlay.setEnable();a.dataTemp=b.text;a.selectingLang=b.currentLang;window.setTimeout(function(){a.div_overlay.setDisable()}, -500);x(a.LocalizationButton);y(a.LocalizationLabel)},options_checkbox_send:function(b){delete b.id;b={osp:e.cookie.get("osp"),udn:e.cookie.get("udn"),cust_dic_ids:a.cust_dic_ids};e.postMessage.send({message:b,target:a.targetFromFrame[a.iframeNumber+"_"+a.dialog._.currentTabId],id:"options_outer__page"})},getOptions:function(b){var c=b.DefOptions.udn;a.LocalizationComing=b.DefOptions.localizationButtonsAndText;a.show_grammar=b.show_grammar;a.langList=b.lang;if(a.bnr=b.bannerId){a.setHeightBannerFrame(); -var d=b.banner;a.dialog.getContentElement(a.dialog._.currentTabId,"banner").getElement().setHtml(d)}else a.setHeightFrame();"undefined"==c&&(a.userDictionaryName?(c=a.userDictionaryName,d={osp:e.cookie.get("osp"),udn:a.userDictionaryName,cust_dic_ids:a.cust_dic_ids,id:"options_dic_send",udnCmd:"create"},e.postMessage.send({message:d,target:a.targetFromFrame[void 0]})):c="");e.cookie.set("osp",b.DefOptions.osp);e.cookie.set("udn",c);e.cookie.set("cust_dic_ids",b.DefOptions.cust_dic_ids);e.postMessage.send({id:"giveOptions"})}, -options_dic_send:function(){var b={osp:e.cookie.get("osp"),udn:e.cookie.get("udn"),cust_dic_ids:a.cust_dic_ids,id:"options_dic_send",udnCmd:e.cookie.get("udnCmd")};e.postMessage.send({message:b,target:a.targetFromFrame[a.iframeNumber+"_"+a.dialog._.currentTabId]})},data:function(a){delete a.id},giveOptions:function(){},setOptionsConfirmF:function(){},setOptionsConfirmT:function(){j.setValue("")},clickBusy:function(){a.div_overlay.setEnable()},suggestAllCame:function(){a.div_overlay.setDisable();a.div_overlay_no_check.setDisable()}, -TextCorrect:function(){n(a.langList)}},C=function(a){a=a||window.event;if((a=window.JSON.parse(a.data))&&a.id)B[a.id](a)},t=function(b,c,d,f){c=c||CKEDITOR.config.wsc_cmd;d=d||a.dataTemp;e.postMessage.send({message:{customerId:a.wsc_customerId,text:d,txt_ctrl:a.TextAreaNumber,cmd:c,cust_dic_ids:a.cust_dic_ids,udn:a.userDictionaryName,slang:a.selectingLang,reset_suggest:f||!1},target:b,id:"data_outer__page"});a.div_overlay.setEnable()},v={superset:function(){a.dialog.showPage("Thesaurus");a.dialog.showPage("GrammTab"); -o()},usual:function(){s();m();o()},rtl:function(){s();m();o()}},D=function(b){var c=new function(a){var b={};return{getCmdByTab:function(c){for(var e in a)b[a[e]]=e;return b[c]}}}(a.cmd);b.selectPage(c.getCmdByTab(CKEDITOR.config.wsc_cmd));a.sendData(b)},s=function(){a.dialog.hidePage("Thesaurus")},m=function(){a.dialog.hidePage("GrammTab")},o=function(){a.dialog.showPage("SpellTab")},l=function(){a.dialog.getContentElement(a.dialog._.currentTabId,"bottomGroup").getElement().show()},r=function(){a.dialog.getContentElement(a.dialog._.currentTabId, -"BlockFinishChecking").getElement().hide()};CKEDITOR.dialog.add("checkspell",function(b){var c=function(){a.div_overlay.setEnable();var c=a.dialog._.currentTabId,f=a.iframeNumber+"_"+c,g=a.textNode[c].getValue(),h=this.getElement().getAttribute("title-cmd");e.postMessage.send({message:{cmd:h,tabId:c,new_word:g},target:a.targetFromFrame[f],id:"cmd_outer__page"});("ChangeTo"==h||"ChangeAll"==h)&&b.fire("saveSnapshot");"FinishChecking"==h&&b.config.wsc_onFinish.call(CKEDITOR.document.getWindow().getFrame())}; -return{title:b.config.wsc_dialogTitle||b.lang.wsc.title,minWidth:560,minHeight:444,buttons:[CKEDITOR.dialog.cancelButton],onLoad:function(){a.dialog=this;s();m();o()},onShow:function(){b.lockSelection(b.getSelection());a.TextAreaNumber="cke_textarea_"+CKEDITOR.currentInstance.name;e.postMessage.init(C);a.dataTemp=CKEDITOR.currentInstance.getData();a.OverlayPlace=a.dialog.parts.tabs.getParent().$;if(CKEDITOR&&CKEDITOR.config){a.wsc_customerId=b.config.wsc_customerId;a.cust_dic_ids=b.config.wsc_customDictionaryIds; -a.userDictionaryName=b.config.wsc_userDictionaryName;a.defaultLanguage=CKEDITOR.config.defaultLanguage;var c="file:"==document.location.protocol?"http:":document.location.protocol;CKEDITOR.scriptLoader.load(b.config.wsc_customLoaderScript||c+"//loader.webspellchecker.net/sproxy_fck/sproxy.php?plugin=fck2&customerid="+a.wsc_customerId+"&cmd=script&doc=wsc&schema=22",function(c){CKEDITOR.config&&CKEDITOR.config.wsc&&CKEDITOR.config.wsc.DefaultParams?(a.serverLocationHash=CKEDITOR.config.wsc.DefaultParams.serviceHost, -a.logotype=CKEDITOR.config.wsc.DefaultParams.logoPath,a.loadIcon=CKEDITOR.config.wsc.DefaultParams.iconPath,a.loadIconEmptyEditor=CKEDITOR.config.wsc.DefaultParams.iconPathEmptyEditor,a.LangComparer=new CKEDITOR.config.wsc.DefaultParams._SP_FCK_LangCompare):(a.serverLocationHash=DefaultParams.serviceHost,a.logotype=DefaultParams.logoPath,a.loadIcon=DefaultParams.iconPath,a.loadIconEmptyEditor=DefaultParams.iconPathEmptyEditor,a.LangComparer=new _SP_FCK_LangCompare);a.pluginPath=CKEDITOR.getUrl(b.plugins.wsc.path); -a.iframeNumber=a.TextAreaNumber;a.templatePath=a.pluginPath+"dialogs/tmp.html";a.LangComparer.setDefaulLangCode(a.defaultLanguage);a.currentLang=b.config.wsc_lang||a.LangComparer.getSPLangCode(b.langCode);a.selectingLang=a.currentLang;a.div_overlay=new q({opacity:"1",background:"#fff url("+a.loadIcon+") no-repeat 50% 50%",target:a.OverlayPlace});var d=a.dialog.parts.tabs.getId(),d=CKEDITOR.document.getById(d);d.setStyle("width","97%");d.getElementsByTag("DIV").count()||d.append(a.buildSelectLang(a.dialog.getParentEditor().name)); -a.div_overlay_no_check=new q({opacity:"1",id:"no_check_over",background:"#fff url("+a.loadIconEmptyEditor+") no-repeat 50% 50%",target:a.OverlayPlace});c&&(D(a.dialog),a.dialog.setupContent(a.dialog))})}else a.dialog.hide()},onHide:function(){a.dataTemp=""},contents:[{id:"SpellTab",label:"SpellChecker",accessKey:"S",elements:[{type:"html",id:"banner",label:"banner",style:"",html:"<div></div>"},{type:"html",id:"Content",label:"spellContent",html:"",setup:function(b){var b=a.iframeNumber+"_"+b._.currentTabId, -c=document.getElementById(b);a.targetFromFrame[b]=c.contentWindow}},{type:"hbox",id:"bottomGroup",style:"width:560px; margin: 0 auto;",widths:["50%","50%"],children:[{type:"hbox",id:"leftCol",align:"left",width:"50%",children:[{type:"vbox",id:"rightCol1",widths:["50%","50%"],children:[{type:"text",id:"text",label:a.LocalizationLabel.ChangeTo.text+":",labelLayout:"horizontal",labelStyle:"font: 12px/25px arial, sans-serif;",width:"140px","default":"",onShow:function(){a.textNode.SpellTab=this;a.LocalizationLabel.ChangeTo.instance= -this},onHide:function(){this.reset()}},{type:"hbox",id:"rightCol",align:"right",width:"30%",children:[{type:"vbox",id:"rightCol_col__left",children:[{type:"text",id:"labelSuggestions",label:a.LocalizationLabel.Suggestions.text+":",onShow:function(){a.LocalizationLabel.Suggestions.instance=this;this.getInputElement().hide()}},{type:"html",id:"logo",html:'<img width="99" height="68" border="0" src="" title="WebSpellChecker.net" alt="WebSpellChecker.net" style="display: inline-block;">',setup:function(){this.getElement().$.src= -a.logotype;this.getElement().getParent().setStyles({"text-align":"left"})}}]},{type:"select",id:"list_of_suggestions",labelStyle:"font: 12px/25px arial, sans-serif;",size:"6",inputStyle:"width: 140px; height: auto;",items:[["loading..."]],onShow:function(){p=this},onHide:function(){this.clear()},onChange:function(){a.textNode.SpellTab.setValue(this.getValue())}}]}]}]},{type:"hbox",id:"rightCol",align:"right",width:"50%",children:[{type:"vbox",id:"rightCol_col__left",widths:["50%","50%","50%","50%"], -children:[{type:"button",id:"ChangeTo",label:a.LocalizationButton.ChangeTo.text,title:"Change to",style:"width: 100%;",onLoad:function(){this.getElement().setAttribute("title-cmd",this.id);a.LocalizationButton.ChangeTo.instance=this},onClick:c},{type:"button",id:"ChangeAll",label:a.LocalizationButton.ChangeAll.text,title:"Change All",style:"width: 100%;",onLoad:function(){this.getElement().setAttribute("title-cmd",this.id);a.LocalizationButton.ChangeAll.instance=this},onClick:c},{type:"button",id:"AddWord", -label:a.LocalizationButton.AddWord.text,title:"Add word",style:"width: 100%;",onLoad:function(){this.getElement().setAttribute("title-cmd",this.id);a.LocalizationButton.AddWord.instance=this},onClick:c},{type:"button",id:"FinishChecking",label:a.LocalizationButton.FinishChecking.text,title:"Finish Checking",style:"width: 100%;margin-top: 9px;",onLoad:function(){this.getElement().setAttribute("title-cmd",this.id);a.LocalizationButton.FinishChecking.instance=this},onClick:c}]},{type:"vbox",id:"rightCol_col__right", -widths:["50%","50%","50%"],children:[{type:"button",id:"IgnoreWord",label:a.LocalizationButton.IgnoreWord.text,title:"Ignore word",style:"width: 100%;",onLoad:function(){this.getElement().setAttribute("title-cmd",this.id);a.LocalizationButton.IgnoreWord.instance=this},onClick:c},{type:"button",id:"IgnoreAllWords",label:a.LocalizationButton.IgnoreAllWords.text,title:"Ignore all words",style:"width: 100%;",onLoad:function(){this.getElement().setAttribute("title-cmd",this.id);a.LocalizationButton.IgnoreAllWords.instance= -this},onClick:c},{type:"button",id:"option",label:a.LocalizationButton.Options.text,title:"Option",style:"width: 100%;",onLoad:function(){a.LocalizationButton.Options.instance=this;"file:"==document.location.protocol&&this.disable()},onClick:function(){"file:"==document.location.protocol?alert("WSC: Options functionality is disabled when runing from file system"):b.openDialog("options")}}]}]}]},{type:"hbox",id:"BlockFinishChecking",style:"width:560px; margin: 0 auto;",widths:["70%","30%"],onShow:function(){this.getElement().hide()}, -onHide:l,children:[{type:"hbox",id:"leftCol",align:"left",width:"70%",children:[{type:"vbox",id:"rightCol1",setup:function(){this.getChild()[0].getElement().$.src=a.logotype;this.getChild()[0].getElement().getParent().setStyles({"text-align":"center"})},children:[{type:"html",id:"logo",html:'<img width="99" height="68" border="0" src="" title="WebSpellChecker.net" alt="WebSpellChecker.net" style="display: inline-block;">'}]}]},{type:"hbox",id:"rightCol",align:"right",width:"30%",children:[{type:"vbox", -id:"rightCol_col__left",children:[{type:"button",id:"Option_button",label:a.LocalizationButton.Options.text,title:"Option",style:"width: 100%;",onLoad:function(){this.getElement().setAttribute("title-cmd",this.id);"file:"==document.location.protocol&&this.disable()},onClick:function(){"file:"==document.location.protocol?alert("WSC: Options functionality is disabled when runing from file system"):b.openDialog("options")}},{type:"button",id:"FinishChecking",label:a.LocalizationButton.FinishChecking.text, -title:"Finish Checking",style:"width: 100%;",onLoad:function(){this.getElement().setAttribute("title-cmd",this.id)},onClick:c}]}]}]}]},{id:"GrammTab",label:"Grammar",accessKey:"G",elements:[{type:"html",id:"banner",label:"banner",style:"",html:"<div></div>"},{type:"html",id:"Content",label:"GrammarContent",html:"",setup:function(){var b=a.iframeNumber+"_"+a.dialog._.currentTabId,c=document.getElementById(b);a.targetFromFrame[b]=c.contentWindow}},{type:"vbox",id:"bottomGroup",style:"width:560px; margin: 0 auto;", -children:[{type:"hbox",id:"leftCol",widths:["66%","34%"],children:[{type:"vbox",children:[{type:"text",id:"text",label:"Change to:",labelLayout:"horizontal",labelStyle:"font: 12px/25px arial, sans-serif;",inputStyle:"float: right; width: 200px;","default":"",onShow:function(){a.textNode.GrammTab=this},onHide:function(){this.reset()}},{type:"html",id:"html_text",html:"<div style='min-height: 17px; line-height: 17px; padding: 5px; text-align: left;background: #F1F1F1;color: #595959; white-space: normal!important;'></div>", -onShow:function(){a.textNodeInfo.GrammTab=this}},{type:"html",id:"radio",html:"",onShow:function(){a.grammerSuggest=this}}]},{type:"vbox",children:[{type:"button",id:"ChangeTo",label:"Change to",title:"Change to",style:"width: 133px; float: right;",onLoad:function(){this.getElement().setAttribute("title-cmd",this.id)},onClick:c},{type:"button",id:"IgnoreWord",label:"Ignore word",title:"Ignore word",style:"width: 133px; float: right;",onLoad:function(){this.getElement().setAttribute("title-cmd",this.id)}, -onClick:c},{type:"button",id:"IgnoreAllWords",label:"Ignore Problem",title:"Ignore Problem",style:"width: 133px; float: right;",onLoad:function(){this.getElement().setAttribute("title-cmd",this.id)},onClick:c},{type:"button",id:"FinishChecking",label:"Finish Checking",title:"Finish Checking",style:"width: 133px; float: right; margin-top: 9px;",onLoad:function(){this.getElement().setAttribute("title-cmd",this.id)},onClick:c}]}]}]},{type:"hbox",id:"BlockFinishChecking",style:"width:560px; margin: 0 auto;", -widths:["70%","30%"],onShow:function(){this.getElement().hide()},onHide:l,children:[{type:"hbox",id:"leftCol",align:"left",width:"70%",children:[{type:"vbox",id:"rightCol1",children:[{type:"html",id:"logo",html:'<img width="99" height="68" border="0" src="" title="WebSpellChecker.net" alt="WebSpellChecker.net" style="display: inline-block;">',setup:function(){this.getElement().$.src=a.logotype;this.getElement().getParent().setStyles({"text-align":"center"})}}]}]},{type:"hbox",id:"rightCol",align:"right", -width:"30%",children:[{type:"vbox",id:"rightCol_col__left",children:[{type:"button",id:"FinishChecking",label:"Finish Checking",title:"Finish Checking",style:"width: 100%;",onLoad:function(){this.getElement().setAttribute("title-cmd",this.id)},onClick:c}]}]}]}]},{id:"Thesaurus",label:"Thesaurus",accessKey:"T",elements:[{type:"html",id:"banner",label:"banner",style:"",html:"<div></div>"},{type:"html",id:"Content",label:"spellContent",html:"",setup:function(){var b=a.iframeNumber+"_"+a.dialog._.currentTabId, -c=document.getElementById(b);a.targetFromFrame[b]=c.contentWindow}},{type:"vbox",id:"bottomGroup",style:"width:560px; margin: -10px auto; overflow: hidden;",children:[{type:"hbox",widths:["75%","25%"],children:[{type:"vbox",children:[{type:"hbox",widths:["65%","35%"],children:[{type:"text",id:"ChangeTo",label:"Change to:",labelLayout:"horizontal",inputStyle:"width: 160px;",labelStyle:"font: 12px/25px arial, sans-serif;","default":"",onShow:function(){a.textNode.Thesaurus=this},onHide:function(){this.reset()}}, -{type:"button",id:"ChangeTo",label:"Change to",title:"Change to",style:"width: 121px; margin-top: 1px;",onLoad:function(){this.getElement().setAttribute("title-cmd",this.id)},onClick:c}]},{type:"hbox",children:[{type:"select",id:"categories",label:"Categories:",labelStyle:"font: 12px/25px arial, sans-serif;",size:"5",inputStyle:"width: 180px; height: auto;",items:[],onShow:function(){a.selectNode.categories=this},onHide:function(){this.clear()},onChange:function(){a.buildOptionSynonyms(this.getValue())}}, -{type:"select",id:"synonyms",label:"Synonyms:",labelStyle:"font: 12px/25px arial, sans-serif;",size:"5",inputStyle:"width: 180px; height: auto;",items:[],onShow:function(){a.selectNode.synonyms=this;a.textNode.Thesaurus.setValue(this.getValue())},onHide:function(){this.clear()},onChange:function(){a.textNode.Thesaurus.setValue(this.getValue())}}]}]},{type:"vbox",width:"120px",style:"margin-top:46px;",children:[{type:"html",id:"logotype",label:"WebSpellChecker.net",html:'<img width="99" height="68" border="0" src="" title="WebSpellChecker.net" alt="WebSpellChecker.net" style="display: inline-block;">', -setup:function(){this.getElement().$.src=a.logotype;this.getElement().getParent().setStyles({"text-align":"center"})}},{type:"button",id:"FinishChecking",label:"Finish Checking",title:"Finish Checking",style:"width: 121px; float: right; margin-top: 9px;",onLoad:function(){this.getElement().setAttribute("title-cmd",this.id)},onClick:c}]}]}]},{type:"hbox",id:"BlockFinishChecking",style:"width:560px; margin: 0 auto;",widths:["70%","30%"],onShow:function(){this.getElement().hide()},children:[{type:"hbox", -id:"leftCol",align:"left",width:"70%",children:[{type:"vbox",id:"rightCol1",children:[{type:"html",id:"logo",html:'<img width="99" height="68" border="0" src="" title="WebSpellChecker.net" alt="WebSpellChecker.net" style="display: inline-block;">',setup:function(){this.getElement().$.src=a.logotype;this.getElement().getParent().setStyles({"text-align":"center"})}}]}]},{type:"hbox",id:"rightCol",align:"right",width:"30%",children:[{type:"vbox",id:"rightCol_col__left",children:[{type:"button",id:"FinishChecking", -label:"Finish Checking",title:"Finish Checking",style:"width: 100%;",onLoad:function(){this.getElement().setAttribute("title-cmd",this.id)},onClick:c}]}]}]}]}]}});CKEDITOR.dialog.add("options",function(){var b=null,c={},d={},f=null,g=null;e.cookie.get("udn");e.cookie.get("osp");var h=function(){g=this.getElement().getAttribute("title-cmd");var a=[];a[0]=d.IgnoreAllCapsWords;a[1]=d.IgnoreWordsNumbers;a[2]=d.IgnoreMixedCaseWords;a[3]=d.IgnoreDomainNames;a=a.toString().replace(/,/g,"");e.cookie.set("osp", -a);e.cookie.set("udnCmd",g?g:"ignore");"delete"!=g&&(a="",""!==j.getValue()&&(a=j.getValue()),e.cookie.set("udn",a));e.postMessage.send({id:"options_dic_send"})},i=function(){f.getElement().setHtml(a.LocalizationComing.error);f.getElement().show()};return{title:a.LocalizationComing.Options,minWidth:430,minHeight:130,resizable:CKEDITOR.DIALOG_RESIZE_NONE,contents:[{id:"OptionsTab",label:"Options",accessKey:"O",elements:[{type:"hbox",id:"options_error",children:[{type:"html",style:"display: block;text-align: center;white-space: normal!important; font-size: 12px;color:red", -html:"<div></div>",onShow:function(){f=this}}]},{type:"vbox",id:"Options_content",children:[{type:"hbox",id:"Options_manager",widths:["52%","48%"],children:[{type:"fieldset",label:"Spell Checking Options",style:"border: none;margin-top: 13px;padding: 10px 0 10px 10px",onShow:function(){this.getInputElement().$.children[0].innerHTML=a.LocalizationComing.SpellCheckingOptions},children:[{type:"vbox",id:"Options_checkbox",children:[{type:"checkbox",id:"IgnoreAllCapsWords",label:"Ignore All-Caps Words", -labelStyle:"margin-left: 5px; font: 12px/16px arial, sans-serif;display: inline-block;white-space: normal;",style:"float:left; min-height: 16px;","default":"",onClick:function(){d[this.id]=!this.getValue()?0:1}},{type:"checkbox",id:"IgnoreWordsNumbers",label:"Ignore Words with Numbers",labelStyle:"margin-left: 5px; font: 12px/16px arial, sans-serif;display: inline-block;white-space: normal;",style:"float:left; min-height: 16px;","default":"",onClick:function(){d[this.id]=!this.getValue()?0:1}},{type:"checkbox", -id:"IgnoreMixedCaseWords",label:"Ignore Mixed-Case Words",labelStyle:"margin-left: 5px; font: 12px/16px arial, sans-serif;display: inline-block;white-space: normal;",style:"float:left; min-height: 16px;","default":"",onClick:function(){d[this.id]=!this.getValue()?0:1}},{type:"checkbox",id:"IgnoreDomainNames",label:"Ignore Domain Names",labelStyle:"margin-left: 5px; font: 12px/16px arial, sans-serif;display: inline-block;white-space: normal;",style:"float:left; min-height: 16px;","default":"",onClick:function(){d[this.id]= -!this.getValue()?0:1}}]}]},{type:"vbox",id:"Options_DictionaryName",children:[{type:"text",id:"DictionaryName",style:"margin-bottom: 10px",label:"Dictionary Name:",labelLayout:"vertical",labelStyle:"font: 12px/25px arial, sans-serif;","default":"",onLoad:function(){j=this;this.setValue(a.userDictionaryName?a.userDictionaryName:(e.cookie.get("udn"),this.getValue()))},onShow:function(){j=this;this.setValue(!e.cookie.get("udn")?this.getValue():e.cookie.get("udn"));this.setLabel(a.LocalizationComing.DictionaryName)}, -onHide:function(){this.reset()}},{type:"hbox",id:"Options_buttons",children:[{type:"vbox",id:"Options_leftCol_col",widths:["50%","50%"],children:[{type:"button",id:"create",label:"Create",title:"Create",style:"width: 100%;",onLoad:function(){this.getElement().setAttribute("title-cmd",this.id)},onShow:function(){this.getElement().setText(a.LocalizationComing.Create)},onClick:h},{type:"button",id:"restore",label:"Restore",title:"Restore",style:"width: 100%;",onLoad:function(){this.getElement().setAttribute("title-cmd", -this.id)},onShow:function(){this.getElement().setText(a.LocalizationComing.Restore)},onClick:h}]},{type:"vbox",id:"Options_rightCol_col",widths:["50%","50%"],children:[{type:"button",id:"rename",label:"Rename",title:"Rename",style:"width: 100%;",onLoad:function(){this.getElement().setAttribute("title-cmd",this.id)},onShow:function(){this.getElement().setText(a.LocalizationComing.Rename)},onClick:h},{type:"button",id:"delete",label:"Remove",title:"Remove",style:"width: 100%;",onLoad:function(){this.getElement().setAttribute("title-cmd", -this.id)},onShow:function(){this.getElement().setText(a.LocalizationComing.Remove)},onClick:h}]}]}]}]},{type:"hbox",id:"Options_text",children:[{type:"html",style:"text-align: justify;margin-top: 15px;white-space: normal!important; font-size: 12px;color:#777;",html:"<div>"+a.LocalizationComing.OptionsTextIntro+"</div>",onShow:function(){this.getElement().setText(a.LocalizationComing.OptionsTextIntro)}}]}]}]}],buttons:[CKEDITOR.dialog.okButton,CKEDITOR.dialog.cancelButton],onOk:function(){var a=[]; -a[0]=d.IgnoreAllCapsWords;a[1]=d.IgnoreWordsNumbers;a[2]=d.IgnoreMixedCaseWords;a[3]=d.IgnoreDomainNames;a=a.toString().replace(/,/g,"");e.cookie.set("osp",a);e.cookie.set("udn",j.getValue());e.postMessage.send({id:"options_checkbox_send"});f.getElement().hide();f.getElement().setHtml(" ")},onLoad:function(){b=this;e.postMessage.init(i);c.IgnoreAllCapsWords=b.getContentElement("OptionsTab","IgnoreAllCapsWords");c.IgnoreWordsNumbers=b.getContentElement("OptionsTab","IgnoreWordsNumbers");c.IgnoreMixedCaseWords= -b.getContentElement("OptionsTab","IgnoreMixedCaseWords");c.IgnoreDomainNames=b.getContentElement("OptionsTab","IgnoreDomainNames")},onShow:function(){var b=e.cookie.get("osp").split("");d.IgnoreAllCapsWords=b[0];d.IgnoreWordsNumbers=b[1];d.IgnoreMixedCaseWords=b[2];d.IgnoreDomainNames=b[3];!parseInt(d.IgnoreAllCapsWords,10)?c.IgnoreAllCapsWords.setValue("",!1):c.IgnoreAllCapsWords.setValue("checked",!1);!parseInt(d.IgnoreWordsNumbers,10)?c.IgnoreWordsNumbers.setValue("",!1):c.IgnoreWordsNumbers.setValue("checked", -!1);!parseInt(d.IgnoreMixedCaseWords,10)?c.IgnoreMixedCaseWords.setValue("",!1):c.IgnoreMixedCaseWords.setValue("checked",!1);!parseInt(d.IgnoreDomainNames,10)?c.IgnoreDomainNames.setValue("",!1):c.IgnoreDomainNames.setValue("checked",!1);d.IgnoreAllCapsWords=!c.IgnoreAllCapsWords.getValue()?0:1;d.IgnoreWordsNumbers=!c.IgnoreWordsNumbers.getValue()?0:1;d.IgnoreMixedCaseWords=!c.IgnoreMixedCaseWords.getValue()?0:1;d.IgnoreDomainNames=!c.IgnoreDomainNames.getValue()?0:1;c.IgnoreAllCapsWords.getElement().$.lastChild.innerHTML= -a.LocalizationComing.IgnoreAllCapsWords;c.IgnoreWordsNumbers.getElement().$.lastChild.innerHTML=a.LocalizationComing.IgnoreWordsWithNumbers;c.IgnoreMixedCaseWords.getElement().$.lastChild.innerHTML=a.LocalizationComing.IgnoreMixedCaseWords;c.IgnoreDomainNames.getElement().$.lastChild.innerHTML=a.LocalizationComing.IgnoreDomainNames}}});CKEDITOR.dialog.on("resize",function(b){var b=b.data,c=b.dialog,d=CKEDITOR.document.getById(a.iframeNumber+"_"+c._.currentTabId);"checkspell"==c._.name&&(a.bnr?d&& -d.setSize("height",b.height-310):d&&d.setSize("height",b.height-220))});CKEDITOR.on("dialogDefinition",function(b){var c=b.data.definition;a.onLoadOverlay=new q({opacity:"1",background:"#fff",target:c.dialog.parts.tabs.getParent().$});a.onLoadOverlay.setEnable();c.dialog.on("show",function(){});c.dialog.on("cancel",function(){c.dialog.getParentEditor().config.wsc_onClose.call(this.document.getWindow().getFrame());a.div_overlay.setDisable();return!1},this,null,-1)})})(); \ No newline at end of file diff --git a/assets/plugins/ckeditor/plugins/wsc/dialogs/wsc_ie.js b/assets/plugins/ckeditor/plugins/wsc/dialogs/wsc_ie.js deleted file mode 100644 index 6b39b006..00000000 --- a/assets/plugins/ckeditor/plugins/wsc/dialogs/wsc_ie.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.html or http://ckeditor.com/license -*/ -CKEDITOR.dialog.add("checkspell",function(a){function c(a,c){var d=0;return function(){"function"==typeof window.doSpell?("undefined"!=typeof e&&window.clearInterval(e),j(a)):180==d++&&window._cancelOnError(c)}}function j(c){var f=new window._SP_FCK_LangCompare,b=CKEDITOR.getUrl(a.plugins.wsc.path+"dialogs/"),e=b+"tmpFrameset.html";window.gFCKPluginName="wsc";f.setDefaulLangCode(a.config.defaultLanguage);window.doSpell({ctrl:g,lang:a.config.wsc_lang||f.getSPLangCode(a.langCode),intLang:a.config.wsc_uiLang|| -f.getSPLangCode(a.langCode),winType:d,onCancel:function(){c.hide()},onFinish:function(b){a.focus();c.getParentEditor().setData(b.value);c.hide()},staticFrame:e,framesetPath:e,iframePath:b+"ciframe.html",schemaURI:b+"wsc.css",userDictionaryName:a.config.wsc_userDictionaryName,customDictionaryName:a.config.wsc_customDictionaryIds&&a.config.wsc_customDictionaryIds.split(","),domainName:a.config.wsc_domainName});CKEDITOR.document.getById(h).setStyle("display","none");CKEDITOR.document.getById(d).setStyle("display", -"block")}var b=CKEDITOR.tools.getNextNumber(),d="cke_frame_"+b,g="cke_data_"+b,h="cke_error_"+b,e,b=document.location.protocol||"http:",i=a.lang.wsc.notAvailable,k='<textarea style="display: none" id="'+g+'" rows="10" cols="40"> </textarea><div id="'+h+'" style="display:none;color:red;font-size:16px;font-weight:bold;padding-top:160px;text-align:center;z-index:11;"></div><iframe src="" style="width:100%;background-color:#f1f1e3;" frameborder="0" name="'+d+'" id="'+d+'" allowtransparency="1"></iframe>', -l=a.config.wsc_customLoaderScript||b+"//loader.webspellchecker.net/sproxy_fck/sproxy.php?plugin=fck2&customerid="+a.config.wsc_customerId+"&cmd=script&doc=wsc&schema=22";a.config.wsc_customLoaderScript&&(i+='<p style="color:#000;font-size:11px;font-weight: normal;text-align:center;padding-top:10px">'+a.lang.wsc.errorLoading.replace(/%s/g,a.config.wsc_customLoaderScript)+"</p>");window._cancelOnError=function(c){if("undefined"==typeof window.WSC_Error){CKEDITOR.document.getById(d).setStyle("display", -"none");var b=CKEDITOR.document.getById(h);b.setStyle("display","block");b.setHtml(c||a.lang.wsc.notAvailable)}};return{title:a.config.wsc_dialogTitle||a.lang.wsc.title,minWidth:485,minHeight:380,buttons:[CKEDITOR.dialog.cancelButton],onShow:function(){var b=this.getContentElement("general","content").getElement();b.setHtml(k);b.getChild(2).setStyle("height",this._.contentSize.height+"px");"function"!=typeof window.doSpell&&CKEDITOR.document.getHead().append(CKEDITOR.document.createElement("script", -{attributes:{type:"text/javascript",src:l}}));b=a.getData();CKEDITOR.document.getById(g).setValue(b);e=window.setInterval(c(this,i),250)},onHide:function(){window.ooo=void 0;window.int_framsetLoaded=void 0;window.framesetLoaded=void 0;window.is_window_opened=!1},contents:[{id:"general",label:a.config.wsc_dialogTitle||a.lang.wsc.title,padding:0,elements:[{type:"html",id:"content",html:""}]}]}}); -CKEDITOR.dialog.on("resize",function(a){var a=a.data,c=a.dialog;"checkspell"==c._.name&&((c=(c=c.getContentElement("general","content").getElement())&&c.getChild(2))&&c.setSize("height",a.height),c&&c.setSize("width",a.width))}); \ No newline at end of file diff --git a/assets/plugins/ckeditor/skins/moono/dialog.css b/assets/plugins/ckeditor/skins/moono/dialog.css deleted file mode 100644 index 29bbaf9f..00000000 --- a/assets/plugins/ckeditor/skins/moono/dialog.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_browser_gecko19 .cke_dialog_body{position:relative}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#ededed));background-image:-moz-linear-gradient(top,#fafafa,#ededed);background-image:-webkit-linear-gradient(top,#fafafa,#ededed);background-image:-o-linear-gradient(top,#fafafa,#ededed);background-image:-ms-linear-gradient(top,#fafafa,#ededed);background-image:linear-gradient(top,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#ebebeb;background:-moz-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebebeb),color-stop(100%,#dfdfdf));background:-webkit-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-o-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-ms-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#ededed;background:-moz-linear-gradient(top,#ededed 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ededed),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#ededed 0,#fff 100%);background:-o-linear-gradient(top,#ededed 0,#fff 100%);background:-ms-linear-gradient(top,#ededed 0,#fff 100%);background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:0 0;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:3px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 12px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;-moz-box-shadow:0 0 6px rgba(0,0,0,.4) inset;-webkit-box-shadow:0 0 6px rgba(0,0,0,.4) inset;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:20px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:-webkit-gradient(linear,0 0,0 100%,from(#9ad717),to(#69b10b));background-image:-webkit-linear-gradient(top,#9ad717,#69b10b);background-image:-o-linear-gradient(top,#9ad717,#69b10b);background-image:linear-gradient(to bottom,#9ad717,#69b10b);background-image:-moz-linear-gradient(top,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#88be14),color-stop(100%,#5d9c0a));background:-webkit-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:-o-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);background:-moz-linear-gradient(top,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:2px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:24px;line-height:24px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:2px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%} \ No newline at end of file diff --git a/assets/plugins/ckeditor/skins/moono/dialog_ie.css b/assets/plugins/ckeditor/skins/moono/dialog_ie.css deleted file mode 100644 index 153b05cb..00000000 --- a/assets/plugins/ckeditor/skins/moono/dialog_ie.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_browser_gecko19 .cke_dialog_body{position:relative}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#ededed));background-image:-moz-linear-gradient(top,#fafafa,#ededed);background-image:-webkit-linear-gradient(top,#fafafa,#ededed);background-image:-o-linear-gradient(top,#fafafa,#ededed);background-image:-ms-linear-gradient(top,#fafafa,#ededed);background-image:linear-gradient(top,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#ebebeb;background:-moz-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebebeb),color-stop(100%,#dfdfdf));background:-webkit-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-o-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-ms-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#ededed;background:-moz-linear-gradient(top,#ededed 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ededed),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#ededed 0,#fff 100%);background:-o-linear-gradient(top,#ededed 0,#fff 100%);background:-ms-linear-gradient(top,#ededed 0,#fff 100%);background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:0 0;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:3px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 12px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;-moz-box-shadow:0 0 6px rgba(0,0,0,.4) inset;-webkit-box-shadow:0 0 6px rgba(0,0,0,.4) inset;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:20px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:-webkit-gradient(linear,0 0,0 100%,from(#9ad717),to(#69b10b));background-image:-webkit-linear-gradient(top,#9ad717,#69b10b);background-image:-o-linear-gradient(top,#9ad717,#69b10b);background-image:linear-gradient(to bottom,#9ad717,#69b10b);background-image:-moz-linear-gradient(top,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#88be14),color-stop(100%,#5d9c0a));background:-webkit-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:-o-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);background:-moz-linear-gradient(top,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:2px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:24px;line-height:24px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:2px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0} \ No newline at end of file diff --git a/assets/plugins/ckeditor/skins/moono/dialog_ie7.css b/assets/plugins/ckeditor/skins/moono/dialog_ie7.css deleted file mode 100644 index 459e72b8..00000000 --- a/assets/plugins/ckeditor/skins/moono/dialog_ie7.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_browser_gecko19 .cke_dialog_body{position:relative}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#ededed));background-image:-moz-linear-gradient(top,#fafafa,#ededed);background-image:-webkit-linear-gradient(top,#fafafa,#ededed);background-image:-o-linear-gradient(top,#fafafa,#ededed);background-image:-ms-linear-gradient(top,#fafafa,#ededed);background-image:linear-gradient(top,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#ebebeb;background:-moz-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebebeb),color-stop(100%,#dfdfdf));background:-webkit-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-o-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-ms-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#ededed;background:-moz-linear-gradient(top,#ededed 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ededed),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#ededed 0,#fff 100%);background:-o-linear-gradient(top,#ededed 0,#fff 100%);background:-ms-linear-gradient(top,#ededed 0,#fff 100%);background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:0 0;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:3px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 12px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;-moz-box-shadow:0 0 6px rgba(0,0,0,.4) inset;-webkit-box-shadow:0 0 6px rgba(0,0,0,.4) inset;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:20px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:-webkit-gradient(linear,0 0,0 100%,from(#9ad717),to(#69b10b));background-image:-webkit-linear-gradient(top,#9ad717,#69b10b);background-image:-o-linear-gradient(top,#9ad717,#69b10b);background-image:linear-gradient(to bottom,#9ad717,#69b10b);background-image:-moz-linear-gradient(top,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#88be14),color-stop(100%,#5d9c0a));background:-webkit-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:-o-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);background:-moz-linear-gradient(top,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:2px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:24px;line-height:24px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:2px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}.cke_dialog_title{zoom:1}.cke_dialog_footer{border-top:1px solid #bfbfbf}.cke_dialog_footer_buttons{position:static}.cke_dialog_footer_buttons a.cke_dialog_ui_button{vertical-align:top}.cke_dialog .cke_resizer_ltr{padding-left:4px}.cke_dialog .cke_resizer_rtl{padding-right:4px}.cke_dialog_ui_input_text,.cke_dialog_ui_input_password,.cke_dialog_ui_input_textarea,.cke_dialog_ui_input_select{padding:0!important}.cke_dialog_ui_checkbox_input,.cke_dialog_ui_ratio_input,.cke_btn_reset,.cke_btn_locked,.cke_btn_unlocked{border:1px solid transparent!important} \ No newline at end of file diff --git a/assets/plugins/ckeditor/skins/moono/dialog_ie8.css b/assets/plugins/ckeditor/skins/moono/dialog_ie8.css deleted file mode 100644 index 74e9fa88..00000000 --- a/assets/plugins/ckeditor/skins/moono/dialog_ie8.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_browser_gecko19 .cke_dialog_body{position:relative}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#ededed));background-image:-moz-linear-gradient(top,#fafafa,#ededed);background-image:-webkit-linear-gradient(top,#fafafa,#ededed);background-image:-o-linear-gradient(top,#fafafa,#ededed);background-image:-ms-linear-gradient(top,#fafafa,#ededed);background-image:linear-gradient(top,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#ebebeb;background:-moz-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebebeb),color-stop(100%,#dfdfdf));background:-webkit-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-o-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-ms-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#ededed;background:-moz-linear-gradient(top,#ededed 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ededed),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#ededed 0,#fff 100%);background:-o-linear-gradient(top,#ededed 0,#fff 100%);background:-ms-linear-gradient(top,#ededed 0,#fff 100%);background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:0 0;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:3px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 12px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;-moz-box-shadow:0 0 6px rgba(0,0,0,.4) inset;-webkit-box-shadow:0 0 6px rgba(0,0,0,.4) inset;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:20px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:-webkit-gradient(linear,0 0,0 100%,from(#9ad717),to(#69b10b));background-image:-webkit-linear-gradient(top,#9ad717,#69b10b);background-image:-o-linear-gradient(top,#9ad717,#69b10b);background-image:linear-gradient(to bottom,#9ad717,#69b10b);background-image:-moz-linear-gradient(top,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#88be14),color-stop(100%,#5d9c0a));background:-webkit-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:-o-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);background:-moz-linear-gradient(top,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:2px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:24px;line-height:24px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:2px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{display:block} \ No newline at end of file diff --git a/assets/plugins/ckeditor/skins/moono/dialog_iequirks.css b/assets/plugins/ckeditor/skins/moono/dialog_iequirks.css deleted file mode 100644 index 1c8e0558..00000000 --- a/assets/plugins/ckeditor/skins/moono/dialog_iequirks.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_browser_gecko19 .cke_dialog_body{position:relative}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#ededed));background-image:-moz-linear-gradient(top,#fafafa,#ededed);background-image:-webkit-linear-gradient(top,#fafafa,#ededed);background-image:-o-linear-gradient(top,#fafafa,#ededed);background-image:-ms-linear-gradient(top,#fafafa,#ededed);background-image:linear-gradient(top,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#ebebeb;background:-moz-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebebeb),color-stop(100%,#dfdfdf));background:-webkit-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-o-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-ms-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#ededed;background:-moz-linear-gradient(top,#ededed 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ededed),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#ededed 0,#fff 100%);background:-o-linear-gradient(top,#ededed 0,#fff 100%);background:-ms-linear-gradient(top,#ededed 0,#fff 100%);background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:0 0;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:3px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 12px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;-moz-box-shadow:0 0 6px rgba(0,0,0,.4) inset;-webkit-box-shadow:0 0 6px rgba(0,0,0,.4) inset;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:20px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:-webkit-gradient(linear,0 0,0 100%,from(#9ad717),to(#69b10b));background-image:-webkit-linear-gradient(top,#9ad717,#69b10b);background-image:-o-linear-gradient(top,#9ad717,#69b10b);background-image:linear-gradient(to bottom,#9ad717,#69b10b);background-image:-moz-linear-gradient(top,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#88be14),color-stop(100%,#5d9c0a));background:-webkit-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:-o-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);background:-moz-linear-gradient(top,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:2px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:24px;line-height:24px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:2px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}.cke_dialog_footer{filter:""} \ No newline at end of file diff --git a/assets/plugins/ckeditor/skins/moono/dialog_opera.css b/assets/plugins/ckeditor/skins/moono/dialog_opera.css deleted file mode 100644 index 742ce731..00000000 --- a/assets/plugins/ckeditor/skins/moono/dialog_opera.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_browser_gecko19 .cke_dialog_body{position:relative}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#ededed));background-image:-moz-linear-gradient(top,#fafafa,#ededed);background-image:-webkit-linear-gradient(top,#fafafa,#ededed);background-image:-o-linear-gradient(top,#fafafa,#ededed);background-image:-ms-linear-gradient(top,#fafafa,#ededed);background-image:linear-gradient(top,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#ebebeb;background:-moz-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebebeb),color-stop(100%,#dfdfdf));background:-webkit-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-o-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-ms-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#ededed;background:-moz-linear-gradient(top,#ededed 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ededed),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#ededed 0,#fff 100%);background:-o-linear-gradient(top,#ededed 0,#fff 100%);background:-ms-linear-gradient(top,#ededed 0,#fff 100%);background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:0 0;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:3px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 12px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;-moz-box-shadow:0 0 6px rgba(0,0,0,.4) inset;-webkit-box-shadow:0 0 6px rgba(0,0,0,.4) inset;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:20px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:-webkit-gradient(linear,0 0,0 100%,from(#9ad717),to(#69b10b));background-image:-webkit-linear-gradient(top,#9ad717,#69b10b);background-image:-o-linear-gradient(top,#9ad717,#69b10b);background-image:linear-gradient(to bottom,#9ad717,#69b10b);background-image:-moz-linear-gradient(top,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#88be14),color-stop(100%,#5d9c0a));background:-webkit-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:-o-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);background:-moz-linear-gradient(top,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:2px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:24px;line-height:24px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:2px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_dialog_footer{display:block;height:38px}.cke_ltr .cke_dialog_footer>*{float:right}.cke_rtl .cke_dialog_footer>*{float:left} \ No newline at end of file diff --git a/assets/plugins/ckeditor/skins/moono/editor.css b/assets/plugins/ckeditor/skins/moono/editor.css deleted file mode 100644 index 2df84822..00000000 --- a/assets/plugins/ckeditor/skins/moono/editor.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup *:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_rtl .cke_toolgroup *:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 1px rgba(0,0,0,.3) inset;box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(255,255,255,.5);-moz-box-shadow:1px 0 1px rgba(255,255,255,.5);box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(255,255,255,.1);-moz-box-shadow:-1px 0 1px rgba(255,255,255,.1);box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__about_icon {background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png) no-repeat 0 -144px !important;}.cke_button__blockquote_icon {background: url(icons.png) no-repeat 0 -168px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -192px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -216px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -240px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -264px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -288px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -312px !important;}.cke_button__horizontalrule_icon {background: url(icons.png) no-repeat 0 -336px !important;}.cke_button__image_icon {background: url(icons.png) no-repeat 0 -360px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -384px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -408px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -432px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -456px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -480px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -504px !important;}.cke_button__link_icon {background: url(icons.png) no-repeat 0 -528px !important;}.cke_button__unlink_icon {background: url(icons.png) no-repeat 0 -552px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -576px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -600px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -624px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -648px !important;}.cke_button__maximize_icon {background: url(icons.png) no-repeat 0 -672px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -696px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -720px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -744px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -768px !important;}.cke_button__removeformat_icon {background: url(icons.png) no-repeat 0 -792px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png) no-repeat 0 -816px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png) no-repeat 0 -840px !important;}.cke_button__specialchar_icon {background: url(icons.png) no-repeat 0 -864px !important;}.cke_button__scayt_icon {background: url(icons.png) no-repeat 0 -888px !important;}.cke_button__table_icon {background: url(icons.png) no-repeat 0 -912px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -936px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -960px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -984px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1008px !important;}.cke_button__spellchecker_icon {background: url(icons.png) no-repeat 0 -1032px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_hidpi .cke_button__spellchecker_icon {background: url(icons_hidpi.png) no-repeat 0 -1032px !important;background-size: 16px !important;} \ No newline at end of file diff --git a/assets/plugins/ckeditor/skins/moono/editor_gecko.css b/assets/plugins/ckeditor/skins/moono/editor_gecko.css deleted file mode 100644 index ecb7990a..00000000 --- a/assets/plugins/ckeditor/skins/moono/editor_gecko.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup *:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_rtl .cke_toolgroup *:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 1px rgba(0,0,0,.3) inset;box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(255,255,255,.5);-moz-box-shadow:1px 0 1px rgba(255,255,255,.5);box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(255,255,255,.1);-moz-box-shadow:-1px 0 1px rgba(255,255,255,.1);box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_bottom{padding-bottom:3px}.cke_combo_text{margin-bottom:-1px;margin-top:1px}.cke_button__about_icon {background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png) no-repeat 0 -144px !important;}.cke_button__blockquote_icon {background: url(icons.png) no-repeat 0 -168px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -192px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -216px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -240px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -264px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -288px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -312px !important;}.cke_button__horizontalrule_icon {background: url(icons.png) no-repeat 0 -336px !important;}.cke_button__image_icon {background: url(icons.png) no-repeat 0 -360px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -384px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -408px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -432px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -456px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -480px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -504px !important;}.cke_button__link_icon {background: url(icons.png) no-repeat 0 -528px !important;}.cke_button__unlink_icon {background: url(icons.png) no-repeat 0 -552px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -576px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -600px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -624px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -648px !important;}.cke_button__maximize_icon {background: url(icons.png) no-repeat 0 -672px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -696px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -720px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -744px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -768px !important;}.cke_button__removeformat_icon {background: url(icons.png) no-repeat 0 -792px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png) no-repeat 0 -816px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png) no-repeat 0 -840px !important;}.cke_button__specialchar_icon {background: url(icons.png) no-repeat 0 -864px !important;}.cke_button__scayt_icon {background: url(icons.png) no-repeat 0 -888px !important;}.cke_button__table_icon {background: url(icons.png) no-repeat 0 -912px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -936px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -960px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -984px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1008px !important;}.cke_button__spellchecker_icon {background: url(icons.png) no-repeat 0 -1032px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_hidpi .cke_button__spellchecker_icon {background: url(icons_hidpi.png) no-repeat 0 -1032px !important;background-size: 16px !important;} \ No newline at end of file diff --git a/assets/plugins/ckeditor/skins/moono/editor_ie.css b/assets/plugins/ckeditor/skins/moono/editor_ie.css deleted file mode 100644 index 332d7795..00000000 --- a/assets/plugins/ckeditor/skins/moono/editor_ie.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup *:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_rtl .cke_toolgroup *:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 1px rgba(0,0,0,.3) inset;box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(255,255,255,.5);-moz-box-shadow:1px 0 1px rgba(255,255,255,.5);box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(255,255,255,.1);-moz-box-shadow:-1px 0 1px rgba(255,255,255,.1);box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_button__about_icon {background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png) no-repeat 0 -144px !important;}.cke_button__blockquote_icon {background: url(icons.png) no-repeat 0 -168px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -192px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -216px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -240px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -264px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -288px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -312px !important;}.cke_button__horizontalrule_icon {background: url(icons.png) no-repeat 0 -336px !important;}.cke_button__image_icon {background: url(icons.png) no-repeat 0 -360px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -384px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -408px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -432px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -456px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -480px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -504px !important;}.cke_button__link_icon {background: url(icons.png) no-repeat 0 -528px !important;}.cke_button__unlink_icon {background: url(icons.png) no-repeat 0 -552px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -576px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -600px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -624px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -648px !important;}.cke_button__maximize_icon {background: url(icons.png) no-repeat 0 -672px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -696px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -720px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -744px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -768px !important;}.cke_button__removeformat_icon {background: url(icons.png) no-repeat 0 -792px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png) no-repeat 0 -816px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png) no-repeat 0 -840px !important;}.cke_button__specialchar_icon {background: url(icons.png) no-repeat 0 -864px !important;}.cke_button__scayt_icon {background: url(icons.png) no-repeat 0 -888px !important;}.cke_button__table_icon {background: url(icons.png) no-repeat 0 -912px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -936px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -960px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -984px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1008px !important;}.cke_button__spellchecker_icon {background: url(icons.png) no-repeat 0 -1032px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_hidpi .cke_button__spellchecker_icon {background: url(icons_hidpi.png) no-repeat 0 -1032px !important;background-size: 16px !important;} \ No newline at end of file diff --git a/assets/plugins/ckeditor/skins/moono/editor_ie7.css b/assets/plugins/ckeditor/skins/moono/editor_ie7.css deleted file mode 100644 index 9bfeaa78..00000000 --- a/assets/plugins/ckeditor/skins/moono/editor_ie7.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup *:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_rtl .cke_toolgroup *:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 1px rgba(0,0,0,.3) inset;box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(255,255,255,.5);-moz-box-shadow:1px 0 1px rgba(255,255,255,.5);box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(255,255,255,.1);-moz-box-shadow:-1px 0 1px rgba(255,255,255,.1);box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_button,.cke_rtl .cke_button *,.cke_rtl .cke_combo,.cke_rtl .cke_combo *,.cke_rtl .cke_path_item,.cke_rtl .cke_path_item *,.cke_rtl .cke_path_empty{float:none}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_combo_button,.cke_rtl .cke_combo_button *,.cke_rtl .cke_button,.cke_rtl .cke_button_icon,{display:inline-block;vertical-align:top}.cke_toolbox{display:inline-block;padding-bottom:5px;height:100%}.cke_rtl .cke_toolbox{padding-bottom:0}.cke_toolbar{margin-bottom:5px}.cke_rtl .cke_toolbar{margin-bottom:0}.cke_toolgroup{height:26px}.cke_toolgroup,.cke_combo{position:relative}a.cke_button{float:none;vertical-align:top}.cke_toolbar_separator{display:inline-block;float:none;vertical-align:top;background-color:#c0c0c0}.cke_toolbox_collapser .cke_arrow{margin-top:0}.cke_toolbox_collapser .cke_arrow{border-width:4px}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{border-width:3px}.cke_rtl .cke_button_arrow{padding-top:8px;margin-right:2px}.cke_rtl .cke_combo_inlinelabel{display:table-cell;vertical-align:middle}.cke_menubutton{display:block;height:24px}.cke_menubutton_inner{display:block;position:relative}.cke_menubutton_icon{height:16px;width:16px}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:inline-block}.cke_menubutton_label{width:auto;vertical-align:top;line-height:24px;height:24px;margin:0 10px 0 0}.cke_menuarrow{width:5px;height:6px;padding:0;position:absolute;right:8px;top:10px;background-position:0 0}.cke_rtl .cke_menubutton_icon{position:absolute;right:0;top:0}.cke_rtl .cke_menubutton_label{float:right;clear:both;margin:0 24px 0 10px}.cke_hc .cke_rtl .cke_menubutton_label{margin-right:0}.cke_rtl .cke_menuarrow{left:8px;right:auto;background-position:0 -24px}.cke_hc .cke_menuarrow{top:5px;padding:0 5px}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{position:relative}.cke_wysiwyg_div{padding-top:0!important;padding-bottom:0!important}.cke_button__about_icon {background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png) no-repeat 0 -144px !important;}.cke_button__blockquote_icon {background: url(icons.png) no-repeat 0 -168px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -192px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -216px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -240px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -264px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -288px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -312px !important;}.cke_button__horizontalrule_icon {background: url(icons.png) no-repeat 0 -336px !important;}.cke_button__image_icon {background: url(icons.png) no-repeat 0 -360px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -384px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -408px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -432px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -456px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -480px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -504px !important;}.cke_button__link_icon {background: url(icons.png) no-repeat 0 -528px !important;}.cke_button__unlink_icon {background: url(icons.png) no-repeat 0 -552px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -576px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -600px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -624px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -648px !important;}.cke_button__maximize_icon {background: url(icons.png) no-repeat 0 -672px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -696px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -720px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -744px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -768px !important;}.cke_button__removeformat_icon {background: url(icons.png) no-repeat 0 -792px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png) no-repeat 0 -816px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png) no-repeat 0 -840px !important;}.cke_button__specialchar_icon {background: url(icons.png) no-repeat 0 -864px !important;}.cke_button__scayt_icon {background: url(icons.png) no-repeat 0 -888px !important;}.cke_button__table_icon {background: url(icons.png) no-repeat 0 -912px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -936px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -960px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -984px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1008px !important;}.cke_button__spellchecker_icon {background: url(icons.png) no-repeat 0 -1032px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_hidpi .cke_button__spellchecker_icon {background: url(icons_hidpi.png) no-repeat 0 -1032px !important;background-size: 16px !important;} \ No newline at end of file diff --git a/assets/plugins/ckeditor/skins/moono/editor_ie8.css b/assets/plugins/ckeditor/skins/moono/editor_ie8.css deleted file mode 100644 index 955ec8d2..00000000 --- a/assets/plugins/ckeditor/skins/moono/editor_ie8.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup *:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_rtl .cke_toolgroup *:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 1px rgba(0,0,0,.3) inset;box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(255,255,255,.5);-moz-box-shadow:1px 0 1px rgba(255,255,255,.5);box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(255,255,255,.1);-moz-box-shadow:-1px 0 1px rgba(255,255,255,.1);box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_toolbox_collapser .cke_arrow{border-width:4px}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{border-width:3px}.cke_toolbox_collapser .cke_arrow{margin-top:0}.cke_button__about_icon {background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png) no-repeat 0 -144px !important;}.cke_button__blockquote_icon {background: url(icons.png) no-repeat 0 -168px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -192px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -216px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -240px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -264px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -288px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -312px !important;}.cke_button__horizontalrule_icon {background: url(icons.png) no-repeat 0 -336px !important;}.cke_button__image_icon {background: url(icons.png) no-repeat 0 -360px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -384px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -408px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -432px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -456px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -480px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -504px !important;}.cke_button__link_icon {background: url(icons.png) no-repeat 0 -528px !important;}.cke_button__unlink_icon {background: url(icons.png) no-repeat 0 -552px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -576px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -600px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -624px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -648px !important;}.cke_button__maximize_icon {background: url(icons.png) no-repeat 0 -672px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -696px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -720px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -744px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -768px !important;}.cke_button__removeformat_icon {background: url(icons.png) no-repeat 0 -792px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png) no-repeat 0 -816px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png) no-repeat 0 -840px !important;}.cke_button__specialchar_icon {background: url(icons.png) no-repeat 0 -864px !important;}.cke_button__scayt_icon {background: url(icons.png) no-repeat 0 -888px !important;}.cke_button__table_icon {background: url(icons.png) no-repeat 0 -912px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -936px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -960px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -984px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1008px !important;}.cke_button__spellchecker_icon {background: url(icons.png) no-repeat 0 -1032px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_hidpi .cke_button__spellchecker_icon {background: url(icons_hidpi.png) no-repeat 0 -1032px !important;background-size: 16px !important;} \ No newline at end of file diff --git a/assets/plugins/ckeditor/skins/moono/editor_iequirks.css b/assets/plugins/ckeditor/skins/moono/editor_iequirks.css deleted file mode 100644 index 009d08c5..00000000 --- a/assets/plugins/ckeditor/skins/moono/editor_iequirks.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup *:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_rtl .cke_toolgroup *:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 1px rgba(0,0,0,.3) inset;box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(255,255,255,.5);-moz-box-shadow:1px 0 1px rgba(255,255,255,.5);box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(255,255,255,.1);-moz-box-shadow:-1px 0 1px rgba(255,255,255,.1);box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_top,.cke_contents,.cke_bottom{width:100%}.cke_button_arrow{font-size:0}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_button,.cke_rtl .cke_button *,.cke_rtl .cke_combo,.cke_rtl .cke_combo *,.cke_rtl .cke_path_item,.cke_rtl .cke_path_item *,.cke_rtl .cke_path_empty{float:none}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_combo_button,.cke_rtl .cke_combo_button *,.cke_rtl .cke_button,.cke_rtl .cke_button_icon,{display:inline-block;vertical-align:top}.cke_rtl .cke_button_icon{float:none}.cke_resizer{width:10px}.cke_source{white-space:normal}.cke_bottom{position:static}.cke_colorbox{font-size:0}.cke_button__about_icon {background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png) no-repeat 0 -144px !important;}.cke_button__blockquote_icon {background: url(icons.png) no-repeat 0 -168px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -192px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -216px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -240px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -264px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -288px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -312px !important;}.cke_button__horizontalrule_icon {background: url(icons.png) no-repeat 0 -336px !important;}.cke_button__image_icon {background: url(icons.png) no-repeat 0 -360px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -384px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -408px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -432px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -456px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -480px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -504px !important;}.cke_button__link_icon {background: url(icons.png) no-repeat 0 -528px !important;}.cke_button__unlink_icon {background: url(icons.png) no-repeat 0 -552px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -576px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -600px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -624px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -648px !important;}.cke_button__maximize_icon {background: url(icons.png) no-repeat 0 -672px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -696px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -720px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -744px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -768px !important;}.cke_button__removeformat_icon {background: url(icons.png) no-repeat 0 -792px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png) no-repeat 0 -816px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png) no-repeat 0 -840px !important;}.cke_button__specialchar_icon {background: url(icons.png) no-repeat 0 -864px !important;}.cke_button__scayt_icon {background: url(icons.png) no-repeat 0 -888px !important;}.cke_button__table_icon {background: url(icons.png) no-repeat 0 -912px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -936px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -960px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -984px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1008px !important;}.cke_button__spellchecker_icon {background: url(icons.png) no-repeat 0 -1032px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_hidpi .cke_button__spellchecker_icon {background: url(icons_hidpi.png) no-repeat 0 -1032px !important;background-size: 16px !important;} \ No newline at end of file diff --git a/assets/plugins/ckeditor/skins/moono/icons.png b/assets/plugins/ckeditor/skins/moono/icons.png deleted file mode 100644 index c71008d7..00000000 Binary files a/assets/plugins/ckeditor/skins/moono/icons.png and /dev/null differ diff --git a/assets/plugins/ckeditor/skins/moono/icons_hidpi.png b/assets/plugins/ckeditor/skins/moono/icons_hidpi.png deleted file mode 100644 index 0466c2bc..00000000 Binary files a/assets/plugins/ckeditor/skins/moono/icons_hidpi.png and /dev/null differ diff --git a/assets/plugins/ckeditor/skins/moono/images/arrow.png b/assets/plugins/ckeditor/skins/moono/images/arrow.png deleted file mode 100644 index 0d1eb39c..00000000 Binary files a/assets/plugins/ckeditor/skins/moono/images/arrow.png and /dev/null differ diff --git a/assets/plugins/ckeditor/skins/moono/images/close.png b/assets/plugins/ckeditor/skins/moono/images/close.png deleted file mode 100644 index 04b9c97d..00000000 Binary files a/assets/plugins/ckeditor/skins/moono/images/close.png and /dev/null differ diff --git a/assets/plugins/ckeditor/skins/moono/images/hidpi/close.png b/assets/plugins/ckeditor/skins/moono/images/hidpi/close.png deleted file mode 100644 index 8abca8e9..00000000 Binary files a/assets/plugins/ckeditor/skins/moono/images/hidpi/close.png and /dev/null differ diff --git a/assets/plugins/ckeditor/skins/moono/images/hidpi/lock-open.png b/assets/plugins/ckeditor/skins/moono/images/hidpi/lock-open.png deleted file mode 100644 index aa5e740e..00000000 Binary files a/assets/plugins/ckeditor/skins/moono/images/hidpi/lock-open.png and /dev/null differ diff --git a/assets/plugins/ckeditor/skins/moono/images/hidpi/lock.png b/assets/plugins/ckeditor/skins/moono/images/hidpi/lock.png deleted file mode 100644 index 5404b063..00000000 Binary files a/assets/plugins/ckeditor/skins/moono/images/hidpi/lock.png and /dev/null differ diff --git a/assets/plugins/ckeditor/skins/moono/images/hidpi/refresh.png b/assets/plugins/ckeditor/skins/moono/images/hidpi/refresh.png deleted file mode 100644 index 1ebef344..00000000 Binary files a/assets/plugins/ckeditor/skins/moono/images/hidpi/refresh.png and /dev/null differ diff --git a/assets/plugins/ckeditor/skins/moono/images/lock-open.png b/assets/plugins/ckeditor/skins/moono/images/lock-open.png deleted file mode 100644 index 3b256c06..00000000 Binary files a/assets/plugins/ckeditor/skins/moono/images/lock-open.png and /dev/null differ diff --git a/assets/plugins/ckeditor/skins/moono/images/lock.png b/assets/plugins/ckeditor/skins/moono/images/lock.png deleted file mode 100644 index c127f9eb..00000000 Binary files a/assets/plugins/ckeditor/skins/moono/images/lock.png and /dev/null differ diff --git a/assets/plugins/ckeditor/skins/moono/images/refresh.png b/assets/plugins/ckeditor/skins/moono/images/refresh.png deleted file mode 100644 index a1a061c5..00000000 Binary files a/assets/plugins/ckeditor/skins/moono/images/refresh.png and /dev/null differ diff --git a/assets/plugins/ckeditor/skins/moono/readme.md b/assets/plugins/ckeditor/skins/moono/readme.md deleted file mode 100644 index f24ec4f5..00000000 --- a/assets/plugins/ckeditor/skins/moono/readme.md +++ /dev/null @@ -1,51 +0,0 @@ -"Moono" Skin -==================== - -This skin has been chosen for the **default skin** of CKEditor 4.x, elected from the CKEditor -[skin contest](http://ckeditor.com/blog/new_ckeditor_4_skin) and further shaped by -the CKEditor team. "Moono" is maintained by the core developers. - -For more information about skins, please check the [CKEditor Skin SDK](http://docs.cksource.com/CKEditor_4.x/Skin_SDK) -documentation. - -Features -------------------- -"Moono" is a monochromatic skin, which offers a modern look coupled with gradients and transparency. -It comes with the following features: - -- Chameleon feature with brightness, -- high-contrast compatibility, -- graphics source provided in SVG. - -Directory Structure -------------------- - -CSS parts: -- **editor.css**: the main CSS file. It's simply loading several other files, for easier maintenance, -- **mainui.css**: the file contains styles of entire editor outline structures, -- **toolbar.css**: the file contains styles of the editor toolbar space (top), -- **richcombo.css**: the file contains styles of the rich combo ui elements on toolbar, -- **panel.css**: the file contains styles of the rich combo drop-down, it's not loaded -until the first panel open up, -- **elementspath.css**: the file contains styles of the editor elements path bar (bottom), -- **menu.css**: the file contains styles of all editor menus including context menu and button drop-down, -it's not loaded until the first menu open up, -- **dialog.css**: the CSS files for the dialog UI, it's not loaded until the first dialog open, -- **reset.css**: the file defines the basis of style resets among all editor UI spaces, -- **preset.css**: the file defines the default styles of some UI elements reflecting the skin preference, -- **editor_XYZ.css** and **dialog_XYZ.css**: browser specific CSS hacks. - -Other parts: -- **skin.js**: the only JavaScript part of the skin that registers the skin, its browser specific files and its icons and defines the Chameleon feature, -- **icons/**: contains all skin defined icons, -- **images/**: contains a fill general used images, -- **dev/**: contains SVG source of the skin icons. - -License -------- - -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - -Licensed under the terms of any of the following licenses at your choice: [GPL](http://www.gnu.org/licenses/gpl.html), [LGPL](http://www.gnu.org/licenses/lgpl.html) and [MPL](http://www.mozilla.org/MPL/MPL-1.1.html). - -See LICENSE.md for more information. diff --git a/assets/plugins/ckeditor/styles.js b/assets/plugins/ckeditor/styles.js deleted file mode 100644 index b58e0bda..00000000 --- a/assets/plugins/ckeditor/styles.js +++ /dev/null @@ -1,111 +0,0 @@ -/** - * Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ - -// This file contains style definitions that can be used by CKEditor plugins. -// -// The most common use for it is the "stylescombo" plugin, which shows a combo -// in the editor toolbar, containing all styles. Other plugins instead, like -// the div plugin, use a subset of the styles on their feature. -// -// If you don't have plugins that depend on this file, you can simply ignore it. -// Otherwise it is strongly recommended to customize this file to match your -// website requirements and design properly. - -CKEDITOR.stylesSet.add( 'default', [ - /* Block Styles */ - - // These styles are already available in the "Format" combo ("format" plugin), - // so they are not needed here by default. You may enable them to avoid - // placing the "Format" combo in the toolbar, maintaining the same features. - /* - { name: 'Paragraph', element: 'p' }, - { name: 'Heading 1', element: 'h1' }, - { name: 'Heading 2', element: 'h2' }, - { name: 'Heading 3', element: 'h3' }, - { name: 'Heading 4', element: 'h4' }, - { name: 'Heading 5', element: 'h5' }, - { name: 'Heading 6', element: 'h6' }, - { name: 'Preformatted Text',element: 'pre' }, - { name: 'Address', element: 'address' }, - */ - - { name: 'Italic Title', element: 'h2', styles: { 'font-style': 'italic' } }, - { name: 'Subtitle', element: 'h3', styles: { 'color': '#aaa', 'font-style': 'italic' } }, - { - name: 'Special Container', - element: 'div', - styles: { - padding: '5px 10px', - background: '#eee', - border: '1px solid #ccc' - } - }, - - /* Inline Styles */ - - // These are core styles available as toolbar buttons. You may opt enabling - // some of them in the Styles combo, removing them from the toolbar. - // (This requires the "stylescombo" plugin) - /* - { name: 'Strong', element: 'strong', overrides: 'b' }, - { name: 'Emphasis', element: 'em' , overrides: 'i' }, - { name: 'Underline', element: 'u' }, - { name: 'Strikethrough', element: 'strike' }, - { name: 'Subscript', element: 'sub' }, - { name: 'Superscript', element: 'sup' }, - */ - - { name: 'Marker', element: 'span', attributes: { 'class': 'marker' } }, - - { name: 'Big', element: 'big' }, - { name: 'Small', element: 'small' }, - { name: 'Typewriter', element: 'tt' }, - - { name: 'Computer Code', element: 'code' }, - { name: 'Keyboard Phrase', element: 'kbd' }, - { name: 'Sample Text', element: 'samp' }, - { name: 'Variable', element: 'var' }, - - { name: 'Deleted Text', element: 'del' }, - { name: 'Inserted Text', element: 'ins' }, - - { name: 'Cited Work', element: 'cite' }, - { name: 'Inline Quotation', element: 'q' }, - - { name: 'Language: RTL', element: 'span', attributes: { 'dir': 'rtl' } }, - { name: 'Language: LTR', element: 'span', attributes: { 'dir': 'ltr' } }, - - /* Object Styles */ - - { - name: 'Styled image (left)', - element: 'img', - attributes: { 'class': 'left' } - }, - - { - name: 'Styled image (right)', - element: 'img', - attributes: { 'class': 'right' } - }, - - { - name: 'Compact table', - element: 'table', - attributes: { - cellpadding: '5', - cellspacing: '0', - border: '1', - bordercolor: '#ccc' - }, - styles: { - 'border-collapse': 'collapse' - } - }, - - { name: 'Borderless Table', element: 'table', styles: { 'border-style': 'hidden', 'background-color': '#E6E6FA' } }, - { name: 'Square Bulleted List', element: 'ul', styles: { 'list-style-type': 'square' } } -]); - diff --git a/assets/plugins/colorpicker/bootstrap-colorpicker.css b/assets/plugins/colorpicker/bootstrap-colorpicker.css deleted file mode 100644 index ba4365e2..00000000 --- a/assets/plugins/colorpicker/bootstrap-colorpicker.css +++ /dev/null @@ -1,214 +0,0 @@ -/*! - * Bootstrap Colorpicker - * http://mjolnic.github.io/bootstrap-colorpicker/ - * - * Originally written by (c) 2012 Stefan Petre - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0.txt - * - */ - -.colorpicker-saturation { - float: left; - width: 100px; - height: 100px; - cursor: crosshair; - background-image: url("img/saturation.png"); -} - -.colorpicker-saturation i { - position: absolute; - top: 0; - left: 0; - display: block; - width: 5px; - height: 5px; - margin: -4px 0 0 -4px; - border: 1px solid #000; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; -} - -.colorpicker-saturation i b { - display: block; - width: 5px; - height: 5px; - border: 1px solid #fff; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; -} - -.colorpicker-hue, -.colorpicker-alpha { - float: left; - width: 15px; - height: 100px; - margin-bottom: 4px; - margin-left: 4px; - cursor: row-resize; -} - -.colorpicker-hue i, -.colorpicker-alpha i { - position: absolute; - top: 0; - left: 0; - display: block; - width: 100%; - height: 1px; - margin-top: -1px; - background: #000; - border-top: 1px solid #fff; -} - -.colorpicker-hue { - background-image: url("img/hue.png"); -} - -.colorpicker-alpha { - display: none; - background-image: url("img/alpha.png"); -} - -.colorpicker { - top: 0; - left: 0; - z-index: 2500; - min-width: 130px; - padding: 4px; - margin-top: 1px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - *zoom: 1; -} - -.colorpicker:before, -.colorpicker:after { - display: table; - line-height: 0; - content: ""; -} - -.colorpicker:after { - clear: both; -} - -.colorpicker:before { - position: absolute; - top: -7px; - left: 6px; - display: inline-block; - border-right: 7px solid transparent; - border-bottom: 7px solid #ccc; - border-left: 7px solid transparent; - border-bottom-color: rgba(0, 0, 0, 0.2); - content: ''; -} - -.colorpicker:after { - position: absolute; - top: -6px; - left: 7px; - display: inline-block; - border-right: 6px solid transparent; - border-bottom: 6px solid #ffffff; - border-left: 6px solid transparent; - content: ''; -} - -.colorpicker div { - position: relative; -} - -.colorpicker.colorpicker-with-alpha { - min-width: 140px; -} - -.colorpicker.colorpicker-with-alpha .colorpicker-alpha { - display: block; -} - -.colorpicker-color { - height: 10px; - margin-top: 5px; - clear: both; - background-image: url("img/alpha.png"); - background-position: 0 100%; -} - -.colorpicker-color div { - height: 10px; -} - -.colorpicker-element .input-group-addon i { - display: block; - width: 16px; - height: 16px; - cursor: pointer; -} - -.colorpicker.colorpicker-inline { - position: relative; - display: inline-block; - float: none; -} - -.colorpicker.colorpicker-horizontal { - width: 110px; - height: auto; - min-width: 110px; -} - -.colorpicker.colorpicker-horizontal .colorpicker-saturation { - margin-bottom: 4px; -} - -.colorpicker.colorpicker-horizontal .colorpicker-color { - width: 100px; -} - -.colorpicker.colorpicker-horizontal .colorpicker-hue, -.colorpicker.colorpicker-horizontal .colorpicker-alpha { - float: left; - width: 100px; - height: 15px; - margin-bottom: 4px; - margin-left: 0; - cursor: col-resize; -} - -.colorpicker.colorpicker-horizontal .colorpicker-hue i, -.colorpicker.colorpicker-horizontal .colorpicker-alpha i { - position: absolute; - top: 0; - left: 0; - display: block; - width: 1px; - height: 15px; - margin-top: 0; - background: #ffffff; - border: none; -} - -.colorpicker.colorpicker-horizontal .colorpicker-hue { - background-image: url("img/hue-horizontal.png"); -} - -.colorpicker.colorpicker-horizontal .colorpicker-alpha { - background-image: url("img/alpha-horizontal.png"); -} - -.colorpicker.colorpicker-hidden { - display: none; -} - -.colorpicker.colorpicker-visible { - display: block; -} - -.colorpicker-inline.colorpicker-visible { - display: inline-block; -} \ No newline at end of file diff --git a/assets/plugins/colorpicker/bootstrap-colorpicker.js b/assets/plugins/colorpicker/bootstrap-colorpicker.js deleted file mode 100644 index 2200b0cc..00000000 --- a/assets/plugins/colorpicker/bootstrap-colorpicker.js +++ /dev/null @@ -1,949 +0,0 @@ -/*! - * Bootstrap Colorpicker - * http://mjolnic.github.io/bootstrap-colorpicker/ - * - * Originally written by (c) 2012 Stefan Petre - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0.txt - * - * @todo Update DOCS - */ -(function($) { - 'use strict'; - - // Color object - var Color = function(val) { - this.value = { - h: 0, - s: 0, - b: 0, - a: 1 - }; - this.origFormat = null; // original string format - if (val) { - if (val.toLowerCase !== undefined) { - this.setColor(val); - } else if (val.h !== undefined) { - this.value = val; - } - } - }; - - Color.prototype = { - constructor: Color, - _sanitizeNumber: function(val) { - if (typeof val === 'number') { - return val; - } - if (isNaN(val) || (val === null) || (val === '') || (val === undefined)) { - return 1; - } - if (val.toLowerCase !== undefined) { - return parseFloat(val); - } - return 1; - }, - //parse a string to HSB - setColor: function(strVal) { - strVal = strVal.toLowerCase(); - this.value = this.stringToHSB(strVal) ||  { - h: 0, - s: 0, - b: 0, - a: 1 - }; - }, - stringToHSB: function(strVal) { - strVal = strVal.toLowerCase(); - var that = this, - result = false; - $.each(this.stringParsers, function(i, parser) { - var match = parser.re.exec(strVal), - values = match && parser.parse.apply(that, [match]), - format = parser.format || 'rgba'; - if (values) { - if (format.match(/hsla?/)) { - result = that.RGBtoHSB.apply(that, that.HSLtoRGB.apply(that, values)); - } else { - result = that.RGBtoHSB.apply(that, values); - } - that.origFormat = format; - return false; - } - return true; - }); - return result; - }, - setHue: function(h) { - this.value.h = 1 - h; - }, - setSaturation: function(s) { - this.value.s = s; - }, - setBrightness: function(b) { - this.value.b = 1 - b; - }, - setAlpha: function(a) { - this.value.a = parseInt((1 - a) * 100, 10) / 100; - }, - toRGB: function(h, s, v, a) { - h = h || this.value.h; - s = s || this.value.s; - v = v || this.value.b; - a = a || this.value.a; - - var r, g, b, i, f, p, q, t; - if (h && s === undefined && v === undefined) { - s = h.s, v = h.v, h = h.h; - } - i = Math.floor(h * 6); - f = h * 6 - i; - p = v * (1 - s); - q = v * (1 - f * s); - t = v * (1 - (1 - f) * s); - switch (i % 6) { - case 0: - r = v, g = t, b = p; - break; - case 1: - r = q, g = v, b = p; - break; - case 2: - r = p, g = v, b = t; - break; - case 3: - r = p, g = q, b = v; - break; - case 4: - r = t, g = p, b = v; - break; - case 5: - r = v, g = p, b = q; - break; - } - return { - r: Math.floor(r * 255), - g: Math.floor(g * 255), - b: Math.floor(b * 255), - a: a - }; - }, - toHex: function(h, s, b, a) { - var rgb = this.toRGB(h, s, b, a); - return '#' + ((1 << 24) | (parseInt(rgb.r) << 16) | (parseInt(rgb.g) << 8) | parseInt(rgb.b)).toString(16).substr(1); - }, - toHSL: function(h, s, b, a) { - h = h || this.value.h; - s = s || this.value.s; - b = b || this.value.b; - a = a || this.value.a; - - var H = h, - L = (2 - s) * b, - S = s * b; - if (L > 0 && L <= 1) { - S /= L; - } else { - S /= 2 - L; - } - L /= 2; - if (S > 1) { - S = 1; - } - return { - h: H, - s: S, - l: L, - a: a - }; - }, - RGBtoHSB: function(r, g, b, a) { - r /= 255; - g /= 255; - b /= 255; - - var H, S, V, C; - V = Math.max(r, g, b); - C = V - Math.min(r, g, b); - H = (C === 0 ? null : - V === r ? (g - b) / C : - V === g ? (b - r) / C + 2 : - (r - g) / C + 4 - ); - H = ((H + 360) % 6) * 60 / 360; - S = C === 0 ? 0 : C / V; - return { - h: this._sanitizeNumber(H), - s: S, - b: V, - a: this._sanitizeNumber(a) - }; - }, - HueToRGB: function(p, q, h) { - if (h < 0) { - h += 1; - } else if (h > 1) { - h -= 1; - } - if ((h * 6) < 1) { - return p + (q - p) * h * 6; - } else if ((h * 2) < 1) { - return q; - } else if ((h * 3) < 2) { - return p + (q - p) * ((2 / 3) - h) * 6; - } else { - return p; - } - }, - HSLtoRGB: function(h, s, l, a) { - if (s < 0) { - s = 0; - } - var q; - if (l <= 0.5) { - q = l * (1 + s); - } else { - q = l + s - (l * s); - } - - var p = 2 * l - q; - - var tr = h + (1 / 3); - var tg = h; - var tb = h - (1 / 3); - - var r = Math.round(this.HueToRGB(p, q, tr) * 255); - var g = Math.round(this.HueToRGB(p, q, tg) * 255); - var b = Math.round(this.HueToRGB(p, q, tb) * 255); - return [r, g, b, this._sanitizeNumber(a)]; - }, - toString: function(format) { - format = format ||  'rgba'; - switch (format) { - case 'rgb': - { - var rgb = this.toRGB(); - return 'rgb(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ')'; - } - break; - case 'rgba': - { - var rgb = this.toRGB(); - return 'rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ',' + rgb.a + ')'; - } - break; - case 'hsl': - { - var hsl = this.toHSL(); - return 'hsl(' + Math.round(hsl.h * 360) + ',' + Math.round(hsl.s * 100) + '%,' + Math.round(hsl.l * 100) + '%)'; - } - break; - case 'hsla': - { - var hsl = this.toHSL(); - return 'hsla(' + Math.round(hsl.h * 360) + ',' + Math.round(hsl.s * 100) + '%,' + Math.round(hsl.l * 100) + '%,' + hsl.a + ')'; - } - break; - case 'hex': - { - return this.toHex(); - } - break; - default: - { - return false; - } - break; - } - }, - // a set of RE's that can match strings and generate color tuples. - // from John Resig color plugin - // https://github.com/jquery/jquery-color/ - stringParsers: [{ - re: /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/, - format: 'hex', - parse: function(execResult) { - return [ - parseInt(execResult[1], 16), - parseInt(execResult[2], 16), - parseInt(execResult[3], 16), - 1 - ]; - } - }, { - re: /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/, - format: 'hex', - parse: function(execResult) { - return [ - parseInt(execResult[1] + execResult[1], 16), - parseInt(execResult[2] + execResult[2], 16), - parseInt(execResult[3] + execResult[3], 16), - 1 - ]; - } - }, { - re: /rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*?\)/, - format: 'rgb', - parse: function(execResult) { - return [ - execResult[1], - execResult[2], - execResult[3], - 1 - ]; - } - }, { - re: /rgb\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*?\)/, - format: 'rgb', - parse: function(execResult) { - return [ - 2.55 * execResult[1], - 2.55 * execResult[2], - 2.55 * execResult[3], - 1 - ]; - } - }, { - re: /rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/, - format: 'rgba', - parse: function(execResult) { - return [ - execResult[1], - execResult[2], - execResult[3], - execResult[4] - ]; - } - }, { - re: /rgba\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/, - format: 'rgba', - parse: function(execResult) { - return [ - 2.55 * execResult[1], - 2.55 * execResult[2], - 2.55 * execResult[3], - execResult[4] - ]; - } - }, { - re: /hsl\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*?\)/, - format: 'hsl', - parse: function(execResult) { - return [ - execResult[1] / 360, - execResult[2] / 100, - execResult[3] / 100, - execResult[4] - ]; - } - }, { - re: /hsla\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/, - format: 'hsla', - parse: function(execResult) { - return [ - execResult[1] / 360, - execResult[2] / 100, - execResult[3] / 100, - execResult[4] - ]; - } - }, { - //predefined color name - re: /^([a-z]{3,})$/, - format: 'alias', - parse: function(execResult) { - var hexval = this.colorNameToHex(execResult[0]) ||  '#000000'; - var match = this.stringParsers[0].re.exec(hexval), - values = match && this.stringParsers[0].parse.apply(this, [match]); - return values; - } - }], - colorNameToHex: function(name) { - // 140 predefined colors from the HTML Colors spec - var colors = { - "aliceblue": "#f0f8ff", - "antiquewhite": "#faebd7", - "aqua": "#00ffff", - "aquamarine": "#7fffd4", - "azure": "#f0ffff", - "beige": "#f5f5dc", - "bisque": "#ffe4c4", - "black": "#000000", - "blanchedalmond": "#ffebcd", - "blue": "#0000ff", - "blueviolet": "#8a2be2", - "brown": "#a52a2a", - "burlywood": "#deb887", - "cadetblue": "#5f9ea0", - "chartreuse": "#7fff00", - "chocolate": "#d2691e", - "coral": "#ff7f50", - "cornflowerblue": "#6495ed", - "cornsilk": "#fff8dc", - "crimson": "#dc143c", - "cyan": "#00ffff", - "darkblue": "#00008b", - "darkcyan": "#008b8b", - "darkgoldenrod": "#b8860b", - "darkgray": "#a9a9a9", - "darkgreen": "#006400", - "darkkhaki": "#bdb76b", - "darkmagenta": "#8b008b", - "darkolivegreen": "#556b2f", - "darkorange": "#ff8c00", - "darkorchid": "#9932cc", - "darkred": "#8b0000", - "darksalmon": "#e9967a", - "darkseagreen": "#8fbc8f", - "darkslateblue": "#483d8b", - "darkslategray": "#2f4f4f", - "darkturquoise": "#00ced1", - "darkviolet": "#9400d3", - "deeppink": "#ff1493", - "deepskyblue": "#00bfff", - "dimgray": "#696969", - "dodgerblue": "#1e90ff", - "firebrick": "#b22222", - "floralwhite": "#fffaf0", - "forestgreen": "#228b22", - "fuchsia": "#ff00ff", - "gainsboro": "#dcdcdc", - "ghostwhite": "#f8f8ff", - "gold": "#ffd700", - "goldenrod": "#daa520", - "gray": "#808080", - "green": "#008000", - "greenyellow": "#adff2f", - "honeydew": "#f0fff0", - "hotpink": "#ff69b4", - "indianred ": "#cd5c5c", - "indigo ": "#4b0082", - "ivory": "#fffff0", - "khaki": "#f0e68c", - "lavender": "#e6e6fa", - "lavenderblush": "#fff0f5", - "lawngreen": "#7cfc00", - "lemonchiffon": "#fffacd", - "lightblue": "#add8e6", - "lightcoral": "#f08080", - "lightcyan": "#e0ffff", - "lightgoldenrodyellow": "#fafad2", - "lightgrey": "#d3d3d3", - "lightgreen": "#90ee90", - "lightpink": "#ffb6c1", - "lightsalmon": "#ffa07a", - "lightseagreen": "#20b2aa", - "lightskyblue": "#87cefa", - "lightslategray": "#778899", - "lightsteelblue": "#b0c4de", - "lightyellow": "#ffffe0", - "lime": "#00ff00", - "limegreen": "#32cd32", - "linen": "#faf0e6", - "magenta": "#ff00ff", - "maroon": "#800000", - "mediumaquamarine": "#66cdaa", - "mediumblue": "#0000cd", - "mediumorchid": "#ba55d3", - "mediumpurple": "#9370d8", - "mediumseagreen": "#3cb371", - "mediumslateblue": "#7b68ee", - "mediumspringgreen": "#00fa9a", - "mediumturquoise": "#48d1cc", - "mediumvioletred": "#c71585", - "midnightblue": "#191970", - "mintcream": "#f5fffa", - "mistyrose": "#ffe4e1", - "moccasin": "#ffe4b5", - "navajowhite": "#ffdead", - "navy": "#000080", - "oldlace": "#fdf5e6", - "olive": "#808000", - "olivedrab": "#6b8e23", - "orange": "#ffa500", - "orangered": "#ff4500", - "orchid": "#da70d6", - "palegoldenrod": "#eee8aa", - "palegreen": "#98fb98", - "paleturquoise": "#afeeee", - "palevioletred": "#d87093", - "papayawhip": "#ffefd5", - "peachpuff": "#ffdab9", - "peru": "#cd853f", - "pink": "#ffc0cb", - "plum": "#dda0dd", - "powderblue": "#b0e0e6", - "purple": "#800080", - "red": "#ff0000", - "rosybrown": "#bc8f8f", - "royalblue": "#4169e1", - "saddlebrown": "#8b4513", - "salmon": "#fa8072", - "sandybrown": "#f4a460", - "seagreen": "#2e8b57", - "seashell": "#fff5ee", - "sienna": "#a0522d", - "silver": "#c0c0c0", - "skyblue": "#87ceeb", - "slateblue": "#6a5acd", - "slategray": "#708090", - "snow": "#fffafa", - "springgreen": "#00ff7f", - "steelblue": "#4682b4", - "tan": "#d2b48c", - "teal": "#008080", - "thistle": "#d8bfd8", - "tomato": "#ff6347", - "turquoise": "#40e0d0", - "violet": "#ee82ee", - "wheat": "#f5deb3", - "white": "#ffffff", - "whitesmoke": "#f5f5f5", - "yellow": "#ffff00", - "yellowgreen": "#9acd32" - }; - - if (typeof colors[name.toLowerCase()] !== 'undefined') { - return colors[name.toLowerCase()]; - } - return false; - } - }; - - - var defaults = { - horizontal: false, // horizontal mode layout ? - inline: false, //forces to show the colorpicker as an inline element - color: false, //forces a color - format: false, //forces a format - input: 'input', // children input selector - container: false, // container selector - component: '.add-on, .input-group-addon', // children component selector - sliders: { - saturation: { - maxLeft: 100, - maxTop: 100, - callLeft: 'setSaturation', - callTop: 'setBrightness' - }, - hue: { - maxLeft: 0, - maxTop: 100, - callLeft: false, - callTop: 'setHue' - }, - alpha: { - maxLeft: 0, - maxTop: 100, - callLeft: false, - callTop: 'setAlpha' - } - }, - slidersHorz: { - saturation: { - maxLeft: 100, - maxTop: 100, - callLeft: 'setSaturation', - callTop: 'setBrightness' - }, - hue: { - maxLeft: 100, - maxTop: 0, - callLeft: 'setHue', - callTop: false - }, - alpha: { - maxLeft: 100, - maxTop: 0, - callLeft: 'setAlpha', - callTop: false - } - }, - template: '<div class="colorpicker dropdown-menu">' + - '<div class="colorpicker-saturation"><i><b></b></i></div>' + - '<div class="colorpicker-hue"><i></i></div>' + - '<div class="colorpicker-alpha"><i></i></div>' + - '<div class="colorpicker-color"><div /></div>' + - '</div>' - }; - - var Colorpicker = function(element, options) { - this.element = $(element).addClass('colorpicker-element'); - this.options = $.extend({}, defaults, this.element.data(), options); - this.component = this.options.component; - this.component = (this.component !== false) ? this.element.find(this.component) : false; - if (this.component && (this.component.length === 0)) { - this.component = false; - } - this.container = (this.options.container === true) ? this.element : this.options.container; - this.container = (this.container !== false) ? $(this.container) : false; - - // Is the element an input? Should we search inside for any input? - this.input = this.element.is('input') ? this.element : (this.options.input ? - this.element.find(this.options.input) : false); - if (this.input && (this.input.length === 0)) { - this.input = false; - } - // Set HSB color - this.color = new Color(this.options.color !== false ? this.options.color : this.getValue()); - this.format = this.options.format !== false ? this.options.format : this.color.origFormat; - - // Setup picker - this.picker = $(this.options.template); - if (this.options.inline) { - this.picker.addClass('colorpicker-inline colorpicker-visible'); - } else { - this.picker.addClass('colorpicker-hidden'); - } - if (this.options.horizontal) { - this.picker.addClass('colorpicker-horizontal'); - } - if (this.format === 'rgba' || this.format === 'hsla') { - this.picker.addClass('colorpicker-with-alpha'); - } - this.picker.on('mousedown.colorpicker', $.proxy(this.mousedown, this)); - this.picker.appendTo(this.container ? this.container : $('body')); - - // Bind events - if (this.input !== false) { - this.input.on({ - 'keyup.colorpicker': $.proxy(this.keyup, this) - }); - if (this.component === false) { - this.element.on({ - 'focus.colorpicker': $.proxy(this.show, this) - }); - } - if (this.options.inline === false) { - this.element.on({ - 'focusout.colorpicker': $.proxy(this.hide, this) - }); - } - } - - if (this.component !== false) { - this.component.on({ - 'click.colorpicker': $.proxy(this.show, this) - }); - } - - if ((this.input === false) && (this.component === false)) { - this.element.on({ - 'click.colorpicker': $.proxy(this.show, this) - }); - } - this.update(); - - $($.proxy(function() { - this.element.trigger('create'); - }, this)); - }; - - Colorpicker.version = '2.0.0-beta'; - - Colorpicker.Color = Color; - - Colorpicker.prototype = { - constructor: Colorpicker, - destroy: function() { - this.picker.remove(); - this.element.removeData('colorpicker').off('.colorpicker'); - if (this.input !== false) { - this.input.off('.colorpicker'); - } - if (this.component !== false) { - this.component.off('.colorpicker'); - } - this.element.removeClass('colorpicker-element'); - this.element.trigger({ - type: 'destroy' - }); - }, - reposition: function() { - if (this.options.inline !== false) { - return false; - } - var offset = this.component ? this.component.offset() : this.element.offset(); - this.picker.css({ - top: offset.top + (this.component ? this.component.outerHeight() : this.element.outerHeight()), - left: offset.left - }); - }, - show: function(e) { - if (this.isDisabled()) { - return false; - } - this.picker.addClass('colorpicker-visible').removeClass('colorpicker-hidden'); - this.reposition(); - $(window).on('resize.colorpicker', $.proxy(this.reposition, this)); - if (!this.hasInput() && e) { - if (e.stopPropagation && e.preventDefault) { - e.stopPropagation(); - e.preventDefault(); - } - } - if (this.options.inline === false) { - $(window.document).on({ - 'mousedown.colorpicker': $.proxy(this.hide, this) - }); - } - this.element.trigger({ - type: 'showPicker', - color: this.color - }); - }, - hide: function() { - this.picker.addClass('colorpicker-hidden').removeClass('colorpicker-visible'); - $(window).off('resize.colorpicker', this.reposition); - $(document).off({ - 'mousedown.colorpicker': this.hide - }); - this.update(); - this.element.trigger({ - type: 'hidePicker', - color: this.color - }); - }, - updateData: function(val) { - val = val ||  this.color.toString(this.format); - this.element.data('color', val); - return val; - }, - updateInput: function(val) { - val = val ||  this.color.toString(this.format); - if (this.input !== false) { - this.input.prop('value', val); - } - return val; - }, - updatePicker: function(val) { - if (val !== undefined) { - this.color = new Color(val); - } - var sl = (this.options.horizontal === false) ? this.options.sliders : this.options.slidersHorz; - var icns = this.picker.find('i'); - if (icns.length === 0) { - return; - } - if (this.options.horizontal === false) { - sl = this.options.sliders; - icns.eq(1).css('top', sl.hue.maxTop * (1 - this.color.value.h)).end() - .eq(2).css('top', sl.alpha.maxTop * (1 - this.color.value.a)); - } else { - sl = this.options.slidersHorz; - icns.eq(1).css('left', sl.hue.maxLeft * (1 - this.color.value.h)).end() - .eq(2).css('left', sl.alpha.maxLeft * (1 - this.color.value.a)); - } - icns.eq(0).css({ - 'top': sl.saturation.maxTop - this.color.value.b * sl.saturation.maxTop, - 'left': this.color.value.s * sl.saturation.maxLeft - }); - this.picker.find('.colorpicker-saturation').css('backgroundColor', this.color.toHex(this.color.value.h, 1, 1, 1)); - this.picker.find('.colorpicker-alpha').css('backgroundColor', this.color.toHex()); - this.picker.find('.colorpicker-color, .colorpicker-color div').css('backgroundColor', this.color.toString(this.format)); - return val; - }, - updateComponent: function(val) { - val = val ||  this.color.toString(this.format); - if (this.component !== false) { - var icn = this.component.find('i').eq(0); - if (icn.length > 0) { - icn.css({ - 'backgroundColor': val - }); - } else { - this.component.css({ - 'backgroundColor': val - }); - } - } - return val; - }, - update: function(force) { - var val = this.updateComponent(); - if ((this.getValue(false) !== false) || (force === true)) { - // Update input/data only if the current value is not blank - this.updateInput(val); - this.updateData(val); - } - this.updatePicker(); - return val; - - }, - setValue: function(val) { // set color manually - this.color = new Color(val); - this.update(); - this.element.trigger({ - type: 'changeColor', - color: this.color, - value: val - }); - }, - getValue: function(defaultValue) { - defaultValue = (defaultValue === undefined) ? '#000000' : defaultValue; - var val; - if (this.hasInput()) { - val = this.input.val(); - } else { - val = this.element.data('color'); - } - if ((val === undefined) || (val === '') || (val === null)) { - // if not defined or empty, return default - val = defaultValue; - } - return val; - }, - hasInput: function() { - return (this.input !== false); - }, - isDisabled: function() { - if (this.hasInput()) { - return (this.input.prop('disabled') === true); - } - return false; - }, - disable: function() { - if (this.hasInput()) { - this.input.prop('disabled', true); - return true; - } - return false; - }, - enable: function() { - if (this.hasInput()) { - this.input.prop('disabled', false); - return true; - } - return false; - }, - currentSlider: null, - mousePointer: { - left: 0, - top: 0 - }, - mousedown: function(e) { - e.stopPropagation(); - e.preventDefault(); - - var target = $(e.target); - - //detect the slider and set the limits and callbacks - var zone = target.closest('div'); - var sl = this.options.horizontal ? this.options.slidersHorz : this.options.sliders; - if (!zone.is('.colorpicker')) { - if (zone.is('.colorpicker-saturation')) { - this.currentSlider = $.extend({}, sl.saturation); - } else if (zone.is('.colorpicker-hue')) { - this.currentSlider = $.extend({}, sl.hue); - } else if (zone.is('.colorpicker-alpha')) { - this.currentSlider = $.extend({}, sl.alpha); - } else { - return false; - } - var offset = zone.offset(); - //reference to guide's style - this.currentSlider.guide = zone.find('i')[0].style; - this.currentSlider.left = e.pageX - offset.left; - this.currentSlider.top = e.pageY - offset.top; - this.mousePointer = { - left: e.pageX, - top: e.pageY - }; - //trigger mousemove to move the guide to the current position - $(document).on({ - 'mousemove.colorpicker': $.proxy(this.mousemove, this), - 'mouseup.colorpicker': $.proxy(this.mouseup, this) - }).trigger('mousemove'); - } - return false; - }, - mousemove: function(e) { - e.stopPropagation(); - e.preventDefault(); - var left = Math.max( - 0, - Math.min( - this.currentSlider.maxLeft, - this.currentSlider.left + ((e.pageX || this.mousePointer.left) - this.mousePointer.left) - ) - ); - var top = Math.max( - 0, - Math.min( - this.currentSlider.maxTop, - this.currentSlider.top + ((e.pageY || this.mousePointer.top) - this.mousePointer.top) - ) - ); - this.currentSlider.guide.left = left + 'px'; - this.currentSlider.guide.top = top + 'px'; - if (this.currentSlider.callLeft) { - this.color[this.currentSlider.callLeft].call(this.color, left / 100); - } - if (this.currentSlider.callTop) { - this.color[this.currentSlider.callTop].call(this.color, top / 100); - } - this.update(true); - - this.element.trigger({ - type: 'changeColor', - color: this.color - }); - return false; - }, - mouseup: function(e) { - e.stopPropagation(); - e.preventDefault(); - $(document).off({ - 'mousemove.colorpicker': this.mousemove, - 'mouseup.colorpicker': this.mouseup - }); - return false; - }, - keyup: function(e) { - if ((e.keyCode === 38)) { - if (this.color.value.a < 1) { - this.color.value.a = Math.round((this.color.value.a + 0.01) * 100) / 100; - } - this.update(true); - } else if ((e.keyCode === 40)) { - if (this.color.value.a > 0) { - this.color.value.a = Math.round((this.color.value.a - 0.01) * 100) / 100; - } - this.update(true); - } else { - var val = this.input.val(); - this.color = new Color(val); - if (this.getValue(false) !== false) { - this.updateData(); - this.updateComponent(); - this.updatePicker(); - } - } - this.element.trigger({ - type: 'changeColor', - color: this.color, - value: val - }); - } - }; - - $.colorpicker = Colorpicker; - - $.fn.colorpicker = function(option) { - return this.each(function() { - var $this = $(this), - inst = $this.data('colorpicker'), - options = ((typeof option === 'object') ? option : {}); - if ((!inst) && (typeof option !== 'string')) { - $this.data('colorpicker', new Colorpicker(this, options)); - } else { - if (typeof option === 'string') { - inst[option].apply(inst, Array.prototype.slice.call(arguments, 1)); - } - } - }); - }; - - $.fn.colorpicker.constructor = Colorpicker; - -})(window.jQuery); diff --git a/assets/plugins/colorpicker/bootstrap-colorpicker.min.css b/assets/plugins/colorpicker/bootstrap-colorpicker.min.css deleted file mode 100644 index 16a2d1a0..00000000 --- a/assets/plugins/colorpicker/bootstrap-colorpicker.min.css +++ /dev/null @@ -1,9 +0,0 @@ -/*! - * Bootstrap Colorpicker - * http://mjolnic.github.io/bootstrap-colorpicker/ - * - * Originally written by (c) 2012 Stefan Petre - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0.txt - * - */.colorpicker-saturation{float:left;width:100px;height:100px;cursor:crosshair;background-image:url("img/saturation.png")}.colorpicker-saturation i{position:absolute;top:0;left:0;display:block;width:5px;height:5px;margin:-4px 0 0 -4px;border:1px solid #000;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.colorpicker-saturation i b{display:block;width:5px;height:5px;border:1px solid #fff;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.colorpicker-hue,.colorpicker-alpha{float:left;width:15px;height:100px;margin-bottom:4px;margin-left:4px;cursor:row-resize}.colorpicker-hue i,.colorpicker-alpha i{position:absolute;top:0;left:0;display:block;width:100%;height:1px;margin-top:-1px;background:#000;border-top:1px solid #fff}.colorpicker-hue{background-image:url("img/hue.png")}.colorpicker-alpha{display:none;background-image:url("img/alpha.png")}.colorpicker{top:0;left:0;z-index:2500;min-width:130px;padding:4px;margin-top:1px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*zoom:1}.colorpicker:before,.colorpicker:after{display:table;line-height:0;content:""}.colorpicker:after{clear:both}.colorpicker:before{position:absolute;top:-7px;left:6px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.colorpicker:after{position:absolute;top:-6px;left:7px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.colorpicker div{position:relative}.colorpicker.colorpicker-with-alpha{min-width:140px}.colorpicker.colorpicker-with-alpha .colorpicker-alpha{display:block}.colorpicker-color{height:10px;margin-top:5px;clear:both;background-image:url("img/alpha.png");background-position:0 100%}.colorpicker-color div{height:10px}.colorpicker-element .input-group-addon i{display:block;width:16px;height:16px;cursor:pointer}.colorpicker.colorpicker-inline{position:relative;display:inline-block;float:none}.colorpicker.colorpicker-horizontal{width:110px;height:auto;min-width:110px}.colorpicker.colorpicker-horizontal .colorpicker-saturation{margin-bottom:4px}.colorpicker.colorpicker-horizontal .colorpicker-color{width:100px}.colorpicker.colorpicker-horizontal .colorpicker-hue,.colorpicker.colorpicker-horizontal .colorpicker-alpha{float:left;width:100px;height:15px;margin-bottom:4px;margin-left:0;cursor:col-resize}.colorpicker.colorpicker-horizontal .colorpicker-hue i,.colorpicker.colorpicker-horizontal .colorpicker-alpha i{position:absolute;top:0;left:0;display:block;width:1px;height:15px;margin-top:0;background:#fff;border:0}.colorpicker.colorpicker-horizontal .colorpicker-hue{background-image:url("img/hue-horizontal.png")}.colorpicker.colorpicker-horizontal .colorpicker-alpha{background-image:url("img/alpha-horizontal.png")}.colorpicker.colorpicker-hidden{display:none}.colorpicker.colorpicker-visible{display:block}.colorpicker-inline.colorpicker-visible{display:inline-block} \ No newline at end of file diff --git a/assets/plugins/colorpicker/bootstrap-colorpicker.min.js b/assets/plugins/colorpicker/bootstrap-colorpicker.min.js deleted file mode 100644 index bc4fba9e..00000000 --- a/assets/plugins/colorpicker/bootstrap-colorpicker.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(a){"use strict";var b=function(a){this.value={h:0,s:0,b:0,a:1},this.origFormat=null,a&&(void 0!==a.toLowerCase?this.setColor(a):void 0!==a.h&&(this.value=a))};b.prototype={constructor:b,_sanitizeNumber:function(a){return"number"==typeof a?a:isNaN(a)||null===a||""===a||void 0===a?1:void 0!==a.toLowerCase?parseFloat(a):1},setColor:function(a){a=a.toLowerCase(),this.value=this.stringToHSB(a)||{h:0,s:0,b:0,a:1}},stringToHSB:function(b){b=b.toLowerCase();var c=this,d=!1;return a.each(this.stringParsers,function(a,e){var f=e.re.exec(b),g=f&&e.parse.apply(c,[f]),h=e.format||"rgba";return g?(d=h.match(/hsla?/)?c.RGBtoHSB.apply(c,c.HSLtoRGB.apply(c,g)):c.RGBtoHSB.apply(c,g),c.origFormat=h,!1):!0}),d},setHue:function(a){this.value.h=1-a},setSaturation:function(a){this.value.s=a},setBrightness:function(a){this.value.b=1-a},setAlpha:function(a){this.value.a=parseInt(100*(1-a),10)/100},toRGB:function(a,b,c,d){a=a||this.value.h,b=b||this.value.s,c=c||this.value.b,d=d||this.value.a;var e,f,g,h,i,j,k,l;switch(a&&void 0===b&&void 0===c&&(b=a.s,c=a.v,a=a.h),h=Math.floor(6*a),i=6*a-h,j=c*(1-b),k=c*(1-i*b),l=c*(1-(1-i)*b),h%6){case 0:e=c,f=l,g=j;break;case 1:e=k,f=c,g=j;break;case 2:e=j,f=c,g=l;break;case 3:e=j,f=k,g=c;break;case 4:e=l,f=j,g=c;break;case 5:e=c,f=j,g=k}return{r:Math.floor(255*e),g:Math.floor(255*f),b:Math.floor(255*g),a:d}},toHex:function(a,b,c,d){var e=this.toRGB(a,b,c,d);return"#"+(1<<24|parseInt(e.r)<<16|parseInt(e.g)<<8|parseInt(e.b)).toString(16).substr(1)},toHSL:function(a,b,c,d){a=a||this.value.h,b=b||this.value.s,c=c||this.value.b,d=d||this.value.a;var e=a,f=(2-b)*c,g=b*c;return g/=f>0&&1>=f?f:2-f,f/=2,g>1&&(g=1),{h:e,s:g,l:f,a:d}},RGBtoHSB:function(a,b,c,d){a/=255,b/=255,c/=255;var e,f,g,h;return g=Math.max(a,b,c),h=g-Math.min(a,b,c),e=0===h?null:g===a?(b-c)/h:g===b?(c-a)/h+2:(a-b)/h+4,e=(e+360)%6*60/360,f=0===h?0:h/g,{h:this._sanitizeNumber(e),s:f,b:g,a:this._sanitizeNumber(d)}},HueToRGB:function(a,b,c){return 0>c?c+=1:c>1&&(c-=1),1>6*c?a+(b-a)*c*6:1>2*c?b:2>3*c?a+(b-a)*(2/3-c)*6:a},HSLtoRGB:function(a,b,c,d){0>b&&(b=0);var e;e=.5>=c?c*(1+b):c+b-c*b;var f=2*c-e,g=a+1/3,h=a,i=a-1/3,j=Math.round(255*this.HueToRGB(f,e,g)),k=Math.round(255*this.HueToRGB(f,e,h)),l=Math.round(255*this.HueToRGB(f,e,i));return[j,k,l,this._sanitizeNumber(d)]},toString:function(a){switch(a=a||"rgba"){case"rgb":var b=this.toRGB();return"rgb("+b.r+","+b.g+","+b.b+")";case"rgba":var b=this.toRGB();return"rgba("+b.r+","+b.g+","+b.b+","+b.a+")";case"hsl":var c=this.toHSL();return"hsl("+Math.round(360*c.h)+","+Math.round(100*c.s)+"%,"+Math.round(100*c.l)+"%)";case"hsla":var c=this.toHSL();return"hsla("+Math.round(360*c.h)+","+Math.round(100*c.s)+"%,"+Math.round(100*c.l)+"%,"+c.a+")";case"hex":return this.toHex();default:return!1}},stringParsers:[{re:/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/,format:"hex",parse:function(a){return[parseInt(a[1],16),parseInt(a[2],16),parseInt(a[3],16),1]}},{re:/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/,format:"hex",parse:function(a){return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16),1]}},{re:/rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*?\)/,format:"rgb",parse:function(a){return[a[1],a[2],a[3],1]}},{re:/rgb\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*?\)/,format:"rgb",parse:function(a){return[2.55*a[1],2.55*a[2],2.55*a[3],1]}},{re:/rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,format:"rgba",parse:function(a){return[a[1],a[2],a[3],a[4]]}},{re:/rgba\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,format:"rgba",parse:function(a){return[2.55*a[1],2.55*a[2],2.55*a[3],a[4]]}},{re:/hsl\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*?\)/,format:"hsl",parse:function(a){return[a[1]/360,a[2]/100,a[3]/100,a[4]]}},{re:/hsla\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,format:"hsla",parse:function(a){return[a[1]/360,a[2]/100,a[3]/100,a[4]]}},{re:/^([a-z]{3,})$/,format:"alias",parse:function(a){var b=this.colorNameToHex(a[0])||"#000000",c=this.stringParsers[0].re.exec(b),d=c&&this.stringParsers[0].parse.apply(this,[c]);return d}}],colorNameToHex:function(a){var b={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4","indianred ":"#cd5c5c","indigo ":"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};return"undefined"!=typeof b[a.toLowerCase()]?b[a.toLowerCase()]:!1}};var c={horizontal:!1,inline:!1,color:!1,format:!1,input:"input",container:!1,component:".add-on, .input-group-addon",sliders:{saturation:{maxLeft:100,maxTop:100,callLeft:"setSaturation",callTop:"setBrightness"},hue:{maxLeft:0,maxTop:100,callLeft:!1,callTop:"setHue"},alpha:{maxLeft:0,maxTop:100,callLeft:!1,callTop:"setAlpha"}},slidersHorz:{saturation:{maxLeft:100,maxTop:100,callLeft:"setSaturation",callTop:"setBrightness"},hue:{maxLeft:100,maxTop:0,callLeft:"setHue",callTop:!1},alpha:{maxLeft:100,maxTop:0,callLeft:"setAlpha",callTop:!1}},template:'<div class="colorpicker dropdown-menu"><div class="colorpicker-saturation"><i><b></b></i></div><div class="colorpicker-hue"><i></i></div><div class="colorpicker-alpha"><i></i></div><div class="colorpicker-color"><div /></div></div>'},d=function(d,e){this.element=a(d).addClass("colorpicker-element"),this.options=a.extend({},c,this.element.data(),e),this.component=this.options.component,this.component=this.component!==!1?this.element.find(this.component):!1,this.component&&0===this.component.length&&(this.component=!1),this.container=this.options.container===!0?this.element:this.options.container,this.container=this.container!==!1?a(this.container):!1,this.input=this.element.is("input")?this.element:this.options.input?this.element.find(this.options.input):!1,this.input&&0===this.input.length&&(this.input=!1),this.color=new b(this.options.color!==!1?this.options.color:this.getValue()),this.format=this.options.format!==!1?this.options.format:this.color.origFormat,this.picker=a(this.options.template),this.options.inline?this.picker.addClass("colorpicker-inline colorpicker-visible"):this.picker.addClass("colorpicker-hidden"),this.options.horizontal&&this.picker.addClass("colorpicker-horizontal"),("rgba"===this.format||"hsla"===this.format)&&this.picker.addClass("colorpicker-with-alpha"),this.picker.on("mousedown.colorpicker",a.proxy(this.mousedown,this)),this.picker.appendTo(this.container?this.container:a("body")),this.input!==!1&&(this.input.on({"keyup.colorpicker":a.proxy(this.keyup,this)}),this.component===!1&&this.element.on({"focus.colorpicker":a.proxy(this.show,this)}),this.options.inline===!1&&this.element.on({"focusout.colorpicker":a.proxy(this.hide,this)})),this.component!==!1&&this.component.on({"click.colorpicker":a.proxy(this.show,this)}),this.input===!1&&this.component===!1&&this.element.on({"click.colorpicker":a.proxy(this.show,this)}),this.update(),a(a.proxy(function(){this.element.trigger("create")},this))};d.version="2.0.0-beta",d.Color=b,d.prototype={constructor:d,destroy:function(){this.picker.remove(),this.element.removeData("colorpicker").off(".colorpicker"),this.input!==!1&&this.input.off(".colorpicker"),this.component!==!1&&this.component.off(".colorpicker"),this.element.removeClass("colorpicker-element"),this.element.trigger({type:"destroy"})},reposition:function(){if(this.options.inline!==!1)return!1;var a=this.component?this.component.offset():this.element.offset();this.picker.css({top:a.top+(this.component?this.component.outerHeight():this.element.outerHeight()),left:a.left})},show:function(b){return this.isDisabled()?!1:(this.picker.addClass("colorpicker-visible").removeClass("colorpicker-hidden"),this.reposition(),a(window).on("resize.colorpicker",a.proxy(this.reposition,this)),!this.hasInput()&&b&&b.stopPropagation&&b.preventDefault&&(b.stopPropagation(),b.preventDefault()),this.options.inline===!1&&a(window.document).on({"mousedown.colorpicker":a.proxy(this.hide,this)}),this.element.trigger({type:"showPicker",color:this.color}),void 0)},hide:function(){this.picker.addClass("colorpicker-hidden").removeClass("colorpicker-visible"),a(window).off("resize.colorpicker",this.reposition),a(document).off({"mousedown.colorpicker":this.hide}),this.update(),this.element.trigger({type:"hidePicker",color:this.color})},updateData:function(a){return a=a||this.color.toString(this.format),this.element.data("color",a),a},updateInput:function(a){return a=a||this.color.toString(this.format),this.input!==!1&&this.input.prop("value",a),a},updatePicker:function(a){void 0!==a&&(this.color=new b(a));var c=this.options.horizontal===!1?this.options.sliders:this.options.slidersHorz,d=this.picker.find("i");return 0!==d.length?(this.options.horizontal===!1?(c=this.options.sliders,d.eq(1).css("top",c.hue.maxTop*(1-this.color.value.h)).end().eq(2).css("top",c.alpha.maxTop*(1-this.color.value.a))):(c=this.options.slidersHorz,d.eq(1).css("left",c.hue.maxLeft*(1-this.color.value.h)).end().eq(2).css("left",c.alpha.maxLeft*(1-this.color.value.a))),d.eq(0).css({top:c.saturation.maxTop-this.color.value.b*c.saturation.maxTop,left:this.color.value.s*c.saturation.maxLeft}),this.picker.find(".colorpicker-saturation").css("backgroundColor",this.color.toHex(this.color.value.h,1,1,1)),this.picker.find(".colorpicker-alpha").css("backgroundColor",this.color.toHex()),this.picker.find(".colorpicker-color, .colorpicker-color div").css("backgroundColor",this.color.toString(this.format)),a):void 0},updateComponent:function(a){if(a=a||this.color.toString(this.format),this.component!==!1){var b=this.component.find("i").eq(0);b.length>0?b.css({backgroundColor:a}):this.component.css({backgroundColor:a})}return a},update:function(a){var b=this.updateComponent();return(this.getValue(!1)!==!1||a===!0)&&(this.updateInput(b),this.updateData(b)),this.updatePicker(),b},setValue:function(a){this.color=new b(a),this.update(),this.element.trigger({type:"changeColor",color:this.color,value:a})},getValue:function(a){a=void 0===a?"#000000":a;var b;return b=this.hasInput()?this.input.val():this.element.data("color"),(void 0===b||""===b||null===b)&&(b=a),b},hasInput:function(){return this.input!==!1},isDisabled:function(){return this.hasInput()?this.input.prop("disabled")===!0:!1},disable:function(){return this.hasInput()?(this.input.prop("disabled",!0),!0):!1},enable:function(){return this.hasInput()?(this.input.prop("disabled",!1),!0):!1},currentSlider:null,mousePointer:{left:0,top:0},mousedown:function(b){b.stopPropagation(),b.preventDefault();var c=a(b.target),d=c.closest("div"),e=this.options.horizontal?this.options.slidersHorz:this.options.sliders;if(!d.is(".colorpicker")){if(d.is(".colorpicker-saturation"))this.currentSlider=a.extend({},e.saturation);else if(d.is(".colorpicker-hue"))this.currentSlider=a.extend({},e.hue);else{if(!d.is(".colorpicker-alpha"))return!1;this.currentSlider=a.extend({},e.alpha)}var f=d.offset();this.currentSlider.guide=d.find("i")[0].style,this.currentSlider.left=b.pageX-f.left,this.currentSlider.top=b.pageY-f.top,this.mousePointer={left:b.pageX,top:b.pageY},a(document).on({"mousemove.colorpicker":a.proxy(this.mousemove,this),"mouseup.colorpicker":a.proxy(this.mouseup,this)}).trigger("mousemove")}return!1},mousemove:function(a){a.stopPropagation(),a.preventDefault();var b=Math.max(0,Math.min(this.currentSlider.maxLeft,this.currentSlider.left+((a.pageX||this.mousePointer.left)-this.mousePointer.left))),c=Math.max(0,Math.min(this.currentSlider.maxTop,this.currentSlider.top+((a.pageY||this.mousePointer.top)-this.mousePointer.top)));return this.currentSlider.guide.left=b+"px",this.currentSlider.guide.top=c+"px",this.currentSlider.callLeft&&this.color[this.currentSlider.callLeft].call(this.color,b/100),this.currentSlider.callTop&&this.color[this.currentSlider.callTop].call(this.color,c/100),this.update(!0),this.element.trigger({type:"changeColor",color:this.color}),!1},mouseup:function(b){return b.stopPropagation(),b.preventDefault(),a(document).off({"mousemove.colorpicker":this.mousemove,"mouseup.colorpicker":this.mouseup}),!1},keyup:function(a){if(38===a.keyCode)this.color.value.a<1&&(this.color.value.a=Math.round(100*(this.color.value.a+.01))/100),this.update(!0);else if(40===a.keyCode)this.color.value.a>0&&(this.color.value.a=Math.round(100*(this.color.value.a-.01))/100),this.update(!0);else{var c=this.input.val();this.color=new b(c),this.getValue(!1)!==!1&&(this.updateData(),this.updateComponent(),this.updatePicker())}this.element.trigger({type:"changeColor",color:this.color,value:c})}},a.colorpicker=d,a.fn.colorpicker=function(b){return this.each(function(){var c=a(this),e=c.data("colorpicker"),f="object"==typeof b?b:{};e||"string"==typeof b?"string"==typeof b&&e[b].apply(e,Array.prototype.slice.call(arguments,1)):c.data("colorpicker",new d(this,f))})},a.fn.colorpicker.constructor=d}(window.jQuery); \ No newline at end of file diff --git a/assets/plugins/colorpicker/img/alpha-horizontal.png b/assets/plugins/colorpicker/img/alpha-horizontal.png deleted file mode 100644 index d0a65c08..00000000 Binary files a/assets/plugins/colorpicker/img/alpha-horizontal.png and /dev/null differ diff --git a/assets/plugins/colorpicker/img/alpha.png b/assets/plugins/colorpicker/img/alpha.png deleted file mode 100644 index 38043f1c..00000000 Binary files a/assets/plugins/colorpicker/img/alpha.png and /dev/null differ diff --git a/assets/plugins/colorpicker/img/hue-horizontal.png b/assets/plugins/colorpicker/img/hue-horizontal.png deleted file mode 100644 index a0d9add8..00000000 Binary files a/assets/plugins/colorpicker/img/hue-horizontal.png and /dev/null differ diff --git a/assets/plugins/colorpicker/img/hue.png b/assets/plugins/colorpicker/img/hue.png deleted file mode 100644 index d89560e9..00000000 Binary files a/assets/plugins/colorpicker/img/hue.png and /dev/null differ diff --git a/assets/plugins/colorpicker/img/saturation.png b/assets/plugins/colorpicker/img/saturation.png deleted file mode 100644 index 594ae50e..00000000 Binary files a/assets/plugins/colorpicker/img/saturation.png and /dev/null differ diff --git a/assets/plugins/datatables/dataTables.bootstrap.css b/assets/plugins/datatables/dataTables.bootstrap.css deleted file mode 100644 index 2ccacaff..00000000 --- a/assets/plugins/datatables/dataTables.bootstrap.css +++ /dev/null @@ -1,372 +0,0 @@ -div.dataTables_length label { - font-weight: normal; - text-align: left; - white-space: nowrap; -} - -div.dataTables_length select { - width: 75px; - display: inline-block; -} - -div.dataTables_filter { - text-align: right; -} - -div.dataTables_filter label { - font-weight: normal; - white-space: nowrap; - text-align: left; -} - -div.dataTables_filter input { - margin-left: 0.5em; - display: inline-block; - width: auto; -} - -div.dataTables_info { - padding-top: 8px; - white-space: nowrap; -} - -div.dataTables_paginate { - margin: 0; - white-space: nowrap; - text-align: right; -} - -div.dataTables_paginate ul.pagination { - margin: 2px 0; - white-space: nowrap; -} - -@media screen and (max-width: 767px) { - div.dataTables_wrapper > div.row > div, - div.dataTables_length, - div.dataTables_filter, - div.dataTables_info, - div.dataTables_paginate { - text-align: center; - } - - div.DTTT { - margin-bottom: 0.5em; - } -} - - -table.dataTable td, -table.dataTable th { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} - - -table.dataTable { - clear: both; - margin-top: 6px !important; - margin-bottom: 6px !important; - max-width: none !important; -} - -table.dataTable thead .sorting, -table.dataTable thead .sorting_asc, -table.dataTable thead .sorting_desc, -table.dataTable thead .sorting_asc_disabled, -table.dataTable thead .sorting_desc_disabled { - cursor: pointer; - position: relative; -} - -table.dataTable thead .sorting:after, -table.dataTable thead .sorting_asc:after, -table.dataTable thead .sorting_desc:after { - position: absolute; - top: 8px; - right: 8px; - display: block; - font-family: 'Glyphicons Halflings'; - opacity: 0.5; -} -table.dataTable thead .sorting:after { - opacity: 0.2; - content: "\e150"; /* sort */ -} -table.dataTable thead .sorting_asc:after { - content: "\e155"; /* sort-by-attributes */ -} -table.dataTable thead .sorting_desc:after { - content: "\e156"; /* sort-by-attributes-alt */ -} -div.dataTables_scrollBody table.dataTable thead .sorting:after, -div.dataTables_scrollBody table.dataTable thead .sorting_asc:after, -div.dataTables_scrollBody table.dataTable thead .sorting_desc:after { - display: none; -} - -table.dataTable thead .sorting_asc_disabled:after, -table.dataTable thead .sorting_desc_disabled:after { - color: #eee; -} - -table.dataTable thead > tr > th { - padding-right: 30px; -} - -table.dataTable th:active { - outline: none; -} - - -/* Condensed */ -table.dataTable.table-condensed thead > tr > th { - padding-right: 20px; -} - -table.dataTable.table-condensed thead .sorting:after, -table.dataTable.table-condensed thead .sorting_asc:after, -table.dataTable.table-condensed thead .sorting_desc:after { - top: 6px; - right: 6px; -} - -/* Scrolling */ -div.dataTables_scrollHead table { - margin-bottom: 0 !important; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; -} - -div.dataTables_scrollHead table thead tr:last-child th:first-child, -div.dataTables_scrollHead table thead tr:last-child td:first-child { - border-bottom-left-radius: 0 !important; - border-bottom-right-radius: 0 !important; -} - -div.dataTables_scrollBody table { - border-top: none; - margin-top: 0 !important; - margin-bottom: 0 !important; -} - -div.dataTables_scrollBody tbody tr:first-child th, -div.dataTables_scrollBody tbody tr:first-child td { - border-top: none; -} - -div.dataTables_scrollFoot table { - margin-top: 0 !important; - border-top: none; -} - -/* Frustratingly the border-collapse:collapse used by Bootstrap makes the column - width calculations when using scrolling impossible to align columns. We have - to use separate - */ -table.table-bordered.dataTable { - border-collapse: separate !important; -} -table.table-bordered thead th, -table.table-bordered thead td { - border-left-width: 0; - border-top-width: 0; -} -table.table-bordered tbody th, -table.table-bordered tbody td { - border-left-width: 0; - border-bottom-width: 0; -} -table.table-bordered tfoot th, -table.table-bordered tfoot td { - border-left-width: 0; - border-bottom-width: 0; -} -table.table-bordered th:last-child, -table.table-bordered td:last-child { - border-right-width: 0; -} -div.dataTables_scrollHead table.table-bordered { - border-bottom-width: 0; -} - - - - -/* - * TableTools styles - */ -.table.dataTable tbody tr.active td, -.table.dataTable tbody tr.active th { - background-color: #08C; - color: white; -} - -.table.dataTable tbody tr.active:hover td, -.table.dataTable tbody tr.active:hover th { - background-color: #0075b0 !important; -} - -.table.dataTable tbody tr.active th > a, -.table.dataTable tbody tr.active td > a { - color: white; -} - -.table-striped.dataTable tbody tr.active:nth-child(odd) td, -.table-striped.dataTable tbody tr.active:nth-child(odd) th { - background-color: #017ebc; -} - -table.DTTT_selectable tbody tr { - cursor: pointer; -} - -div.DTTT .btn:hover { - text-decoration: none !important; -} - -ul.DTTT_dropdown.dropdown-menu { - z-index: 2003; -} - -ul.DTTT_dropdown.dropdown-menu a { - color: #333 !important; /* needed only when demo_page.css is included */ -} - -ul.DTTT_dropdown.dropdown-menu li { - position: relative; -} - -ul.DTTT_dropdown.dropdown-menu li:hover a { - background-color: #0088cc; - color: white !important; -} - -div.DTTT_collection_background { - z-index: 2002; -} - -/* TableTools information display */ -div.DTTT_print_info { - position: fixed; - top: 50%; - left: 50%; - width: 400px; - height: 150px; - margin-left: -200px; - margin-top: -75px; - text-align: center; - color: #333; - padding: 10px 30px; - opacity: 0.95; - - background-color: white; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 6px; - - -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5); - box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5); -} - -div.DTTT_print_info h6 { - font-weight: normal; - font-size: 28px; - line-height: 28px; - margin: 1em; -} - -div.DTTT_print_info p { - font-size: 14px; - line-height: 20px; -} - -div.dataTables_processing { - position: absolute; - top: 50%; - left: 50%; - width: 100%; - height: 60px; - margin-left: -50%; - margin-top: -25px; - padding-top: 20px; - padding-bottom: 20px; - text-align: center; - font-size: 1.2em; - background-color: white; - background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0))); - background: -webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%); - background: -moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%); - background: -ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%); - background: -o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%); - background: linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%); -} - - - -/* - * FixedColumns styles - */ -div.DTFC_LeftHeadWrapper table, -div.DTFC_LeftFootWrapper table, -div.DTFC_RightHeadWrapper table, -div.DTFC_RightFootWrapper table, -table.DTFC_Cloned tr.even { - background-color: white; - margin-bottom: 0; -} - -div.DTFC_RightHeadWrapper table , -div.DTFC_LeftHeadWrapper table { - border-bottom: none !important; - margin-bottom: 0 !important; - border-top-right-radius: 0 !important; - border-bottom-left-radius: 0 !important; - border-bottom-right-radius: 0 !important; -} - -div.DTFC_RightHeadWrapper table thead tr:last-child th:first-child, -div.DTFC_RightHeadWrapper table thead tr:last-child td:first-child, -div.DTFC_LeftHeadWrapper table thead tr:last-child th:first-child, -div.DTFC_LeftHeadWrapper table thead tr:last-child td:first-child { - border-bottom-left-radius: 0 !important; - border-bottom-right-radius: 0 !important; -} - -div.DTFC_RightBodyWrapper table, -div.DTFC_LeftBodyWrapper table { - border-top: none; - margin: 0 !important; -} - -div.DTFC_RightBodyWrapper tbody tr:first-child th, -div.DTFC_RightBodyWrapper tbody tr:first-child td, -div.DTFC_LeftBodyWrapper tbody tr:first-child th, -div.DTFC_LeftBodyWrapper tbody tr:first-child td { - border-top: none; -} - -div.DTFC_RightFootWrapper table, -div.DTFC_LeftFootWrapper table { - border-top: none; - margin-top: 0 !important; -} - - -div.DTFC_LeftBodyWrapper table.dataTable thead .sorting:after, -div.DTFC_LeftBodyWrapper table.dataTable thead .sorting_asc:after, -div.DTFC_LeftBodyWrapper table.dataTable thead .sorting_desc:after, -div.DTFC_RightBodyWrapper table.dataTable thead .sorting:after, -div.DTFC_RightBodyWrapper table.dataTable thead .sorting_asc:after, -div.DTFC_RightBodyWrapper table.dataTable thead .sorting_desc:after { - display: none; -} - - -/* - * FixedHeader styles - */ -div.FixedHeader_Cloned table { - margin: 0 !important -} - diff --git a/assets/plugins/datatables/dataTables.bootstrap.js b/assets/plugins/datatables/dataTables.bootstrap.js deleted file mode 100644 index fbeb9851..00000000 --- a/assets/plugins/datatables/dataTables.bootstrap.js +++ /dev/null @@ -1,206 +0,0 @@ -/*! DataTables Bootstrap 3 integration - * ©2011-2014 SpryMedia Ltd - datatables.net/license - */ - -/** - * DataTables integration for Bootstrap 3. This requires Bootstrap 3 and - * DataTables 1.10 or newer. - * - * This file sets the defaults and adds options to DataTables to style its - * controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap - * for further information. - */ -(function(window, document, undefined){ - -var factory = function( $, DataTable ) { -"use strict"; - - -/* Set the defaults for DataTables initialisation */ -$.extend( true, DataTable.defaults, { - dom: - "<'row'<'col-sm-8'l><'col-sm-4'f>>" + - "<'row'<'col-sm-12'tr>>" + - "<'row'<'col-sm-5'i><'col-sm-7'p>>", - renderer: 'bootstrap' -} ); - - -/* Default class modification */ -$.extend( DataTable.ext.classes, { - sWrapper: "dataTables_wrapper form-inline dt-bootstrap", - sFilterInput: "form-control input-sm", - sLengthSelect: "form-control input-sm" -} ); - - -/* Bootstrap paging button renderer */ -DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, buttons, page, pages ) { - var api = new DataTable.Api( settings ); - var classes = settings.oClasses; - var lang = settings.oLanguage.oPaginate; - var btnDisplay, btnClass, counter=0; - - var attach = function( container, buttons ) { - var i, ien, node, button; - var clickHandler = function ( e ) { - e.preventDefault(); - if ( !$(e.currentTarget).hasClass('disabled') ) { - api.page( e.data.action ).draw( false ); - } - }; - - for ( i=0, ien=buttons.length ; i<ien ; i++ ) { - button = buttons[i]; - - if ( $.isArray( button ) ) { - attach( container, button ); - } - else { - btnDisplay = ''; - btnClass = ''; - - switch ( button ) { - case 'ellipsis': - btnDisplay = '&hellip;'; - btnClass = 'disabled'; - break; - - case 'first': - btnDisplay = lang.sFirst; - btnClass = button + (page > 0 ? - '' : ' disabled'); - break; - - case 'previous': - btnDisplay = lang.sPrevious; - btnClass = button + (page > 0 ? - '' : ' disabled'); - break; - - case 'next': - btnDisplay = lang.sNext; - btnClass = button + (page < pages-1 ? - '' : ' disabled'); - break; - - case 'last': - btnDisplay = lang.sLast; - btnClass = button + (page < pages-1 ? - '' : ' disabled'); - break; - - default: - btnDisplay = button + 1; - btnClass = page === button ? - 'active' : ''; - break; - } - - if ( btnDisplay ) { - node = $('<li>', { - 'class': classes.sPageButton+' '+btnClass, - 'id': idx === 0 && typeof button === 'string' ? - settings.sTableId +'_'+ button : - null - } ) - .append( $('<a>', { - 'href': '#', - 'aria-controls': settings.sTableId, - 'data-dt-idx': counter, - 'tabindex': settings.iTabIndex - } ) - .html( btnDisplay ) - ) - .appendTo( container ); - - settings.oApi._fnBindAction( - node, {action: button}, clickHandler - ); - - counter++; - } - } - } - }; - - // IE9 throws an 'unknown error' if document.activeElement is used - // inside an iframe or frame. - var activeEl; - - try { - // Because this approach is destroying and recreating the paging - // elements, focus is lost on the select button which is bad for - // accessibility. So we want to restore focus once the draw has - // completed - activeEl = $(document.activeElement).data('dt-idx'); - } - catch (e) {} - - attach( - $(host).empty().html('<ul class="pagination"/>').children('ul'), - buttons - ); - - if ( activeEl ) { - $(host).find( '[data-dt-idx='+activeEl+']' ).focus(); - } -}; - - -/* - * TableTools Bootstrap compatibility - * Required TableTools 2.1+ - */ -if ( DataTable.TableTools ) { - // Set the classes that TableTools uses to something suitable for Bootstrap - $.extend( true, DataTable.TableTools.classes, { - "container": "DTTT btn-group", - "buttons": { - "normal": "btn btn-default", - "disabled": "disabled" - }, - "collection": { - "container": "DTTT_dropdown dropdown-menu", - "buttons": { - "normal": "", - "disabled": "disabled" - } - }, - "print": { - "info": "DTTT_print_info" - }, - "select": { - "row": "active" - } - } ); - - // Have the collection use a bootstrap compatible drop down - $.extend( true, DataTable.TableTools.DEFAULTS.oTags, { - "collection": { - "container": "ul", - "button": "li", - "liner": "a" - } - } ); -} - -}; // /factory - - -// Define as an AMD module if possible -if ( typeof define === 'function' && define.amd ) { - define( ['jquery', 'datatables'], factory ); -} -else if ( typeof exports === 'object' ) { - // Node/CommonJS - factory( require('jquery'), require('datatables') ); -} -else if ( jQuery ) { - // Otherwise simply initialise as normal, stopping multiple evaluation - factory( jQuery, jQuery.fn.dataTable ); -} - - -})(window, document); - diff --git a/assets/plugins/datatables/dataTables.bootstrap.min.js b/assets/plugins/datatables/dataTables.bootstrap.min.js deleted file mode 100644 index 89718b41..00000000 --- a/assets/plugins/datatables/dataTables.bootstrap.min.js +++ /dev/null @@ -1,8 +0,0 @@ -/*! - DataTables Bootstrap 3 integration - ©2011-2014 SpryMedia Ltd - datatables.net/license -*/ -(function(l,q){var e=function(b,c){b.extend(!0,c.defaults,{dom:"<'row'<'col-sm-6'l><'col-sm-4'f>><'row'<'col-sm-12'tr>><'row'<'col-sm-6'i><'col-sm-6'p>>",renderer:"bootstrap"});b.extend(c.ext.classes,{sWrapper:"dataTables_wrapper form-inline dt-bootstrap",sFilterInput:"form-control input-sm",sLengthSelect:"form-control input-sm"});c.ext.renderer.pageButton.bootstrap=function(g,e,r,s,i,m){var t=new c.Api(g),u=g.oClasses,j=g.oLanguage.oPaginate,d,f,n=0,p=function(c,e){var k,h,o,a,l=function(a){a.preventDefault(); -b(a.currentTarget).hasClass("disabled")||t.page(a.data.action).draw(!1)};k=0;for(h=e.length;k<h;k++)if(a=e[k],b.isArray(a))p(c,a);else{f=d="";switch(a){case "ellipsis":d="&hellip;";f="disabled";break;case "first":d=j.sFirst;f=a+(0<i?"":" disabled");break;case "previous":d=j.sPrevious;f=a+(0<i?"":" disabled");break;case "next":d=j.sNext;f=a+(i<m-1?"":" disabled");break;case "last":d=j.sLast;f=a+(i<m-1?"":" disabled");break;default:d=a+1,f=i===a?"active":""}d&&(o=b("<li>",{"class":u.sPageButton+" "+ -f,id:0===r&&"string"===typeof a?g.sTableId+"_"+a:null}).append(b("<a>",{href:"#","aria-controls":g.sTableId,"data-dt-idx":n,tabindex:g.iTabIndex}).html(d)).appendTo(c),g.oApi._fnBindAction(o,{action:a},l),n++)}},h;try{h=b(q.activeElement).data("dt-idx")}catch(l){}p(b(e).empty().html('<ul class="pagination"/>').children("ul"),s);h&&b(e).find("[data-dt-idx="+h+"]").focus()};c.TableTools&&(b.extend(!0,c.TableTools.classes,{container:"DTTT btn-group",buttons:{normal:"btn btn-default",disabled:"disabled"}, -collection:{container:"DTTT_dropdown dropdown-menu",buttons:{normal:"",disabled:"disabled"}},print:{info:"DTTT_print_info"},select:{row:"active"}}),b.extend(!0,c.TableTools.DEFAULTS.oTags,{collection:{container:"ul",button:"li",liner:"a"}}))};"function"===typeof define&&define.amd?define(["jquery","datatables"],e):"object"===typeof exports?e(require("jquery"),require("datatables")):jQuery&&e(jQuery,jQuery.fn.dataTable)})(window,document); diff --git a/assets/plugins/datatables/extensions/AutoFill/Readme.txt b/assets/plugins/datatables/extensions/AutoFill/Readme.txt deleted file mode 100644 index 017d1d0d..00000000 --- a/assets/plugins/datatables/extensions/AutoFill/Readme.txt +++ /dev/null @@ -1,38 +0,0 @@ -# AutoFill - -AutoFill gives an Excel like option to a DataTable to click and drag over multiple cells, filling in information over the selected cells and incrementing numbers as needed. Key features include: - -* Click and drag cell content insertion -* Automatic incrementing of numeric information -* Enable and disable on any column -* Detailed callback functions for customisation -* Support for both DataTables and browser window scrolling - - -# Installation - -To use AutoFill, first download DataTables ( http://datatables.net/download ) and place the unzipped AutoFill package into a `extensions` directory in the DataTables package. This will allow the pages in the examples to operate correctly. To see the examples running, open the `examples` directory in your web-browser. - - -# Basic usage - -AutoFill is initialised using the `$.fn.dataTable.AutoFill` constructor. For example: - -```js -$(document).ready( function () { - var table = $('#example').dataTable(); - new $.fn.dataTable.AutoFill( table ); -} ); -``` - - -# Documentation / support - -* Documentation: http://datatables.net/extensions/autofill/ -* DataTables support forums: http://datatables.net/forums - - -# GitHub - -If you fancy getting involved with the development of AutoFill and help make it better, please refer to its GitHub repo: https://github.com/DataTables/AutoFill - diff --git a/assets/plugins/datatables/extensions/AutoFill/css/dataTables.autoFill.css b/assets/plugins/datatables/extensions/AutoFill/css/dataTables.autoFill.css deleted file mode 100644 index cab59b3a..00000000 --- a/assets/plugins/datatables/extensions/AutoFill/css/dataTables.autoFill.css +++ /dev/null @@ -1,24 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * AutoFill styles - */ - -div.AutoFill_filler { - display: none; - position: absolute; - height: 14px; - width: 14px; - background: url(../images/filler.png) no-repeat center center; - z-index: 1002; -} - -div.AutoFill_border { - display: none; - position: absolute; - background-color: #0063dc; - z-index: 1001; - - box-shadow: 0px 0px 5px #76b4ff; - -moz-box-shadow: 0px 0px 5px #76b4ff; - -webkit-box-shadow: 0px 0px 5px #76b4ff; -} - diff --git a/assets/plugins/datatables/extensions/AutoFill/css/dataTables.autoFill.min.css b/assets/plugins/datatables/extensions/AutoFill/css/dataTables.autoFill.min.css deleted file mode 100644 index b485f216..00000000 --- a/assets/plugins/datatables/extensions/AutoFill/css/dataTables.autoFill.min.css +++ /dev/null @@ -1 +0,0 @@ -div.AutoFill_filler{display:none;position:absolute;height:14px;width:14px;background:url(../images/filler.png) no-repeat center center;z-index:1002}div.AutoFill_border{display:none;position:absolute;background-color:#0063dc;z-index:1001;box-shadow:0px 0px 5px #76b4ff;-moz-box-shadow:0px 0px 5px #76b4ff;-webkit-box-shadow:0px 0px 5px #76b4ff} diff --git a/assets/plugins/datatables/extensions/AutoFill/examples/columns.html b/assets/plugins/datatables/extensions/AutoFill/examples/columns.html deleted file mode 100644 index d891b139..00000000 --- a/assets/plugins/datatables/extensions/AutoFill/examples/columns.html +++ /dev/null @@ -1,644 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>AutoFill example - Column options</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.autoFill.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.autoFill.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - var table = $('#example').dataTable(); - - new $.fn.dataTable.AutoFill( table, { - "columnDefs": [ - { enable: false, targets: [-1, -2] }, - { increment: false, targets: 3 } - ] - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>AutoFill example <span>Column options</span></h1> - - <div class="info"> - <p>Columns can be enabled (which they are by default) and disabled from providing the end user with - AutoFill abilities by using either <code>columns</code> or <code>columnDefs</code> and the - <code>enable</code> option. These two arrays work in exactly the same way <a href= - "http://datatables.net/ref/columns">as in DataTables</a>.</p> - - <p>This example shows how disabling columns counting from the right hand side of the table can be - achieved. In this case, the last three columns.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this - example:</p><code class="multiline brush: js;">$(document).ready(function() { - var table = $('#example').dataTable(); - - new $.fn.dataTable.AutoFill( table, { - &quot;columnDefs&quot;: [ - { enable: false, targets: [-1, -2] }, - { increment: false, targets: 3 } - ] - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this - example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href= - "../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.autoFill.js">../js/dataTables.autoFill.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by - DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library - files (below), in order to correctly display the table. The additional CSS used is shown - below:</p><code class="multiline brush: js;"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the - table:</p> - - <ul> - <li><a href= - "../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.autoFill.css">../css/dataTables.autoFill.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data - will update automatically as any additional data is loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note - that this is just an example script using PHP. Server-side processing scripts can be written in any - language, using <a href="//datatables.net/manual/server-side">the protocol described in the - DataTables documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li class="active"><a href="./columns.html">Column options</a></li> - <li><a href="./scrolling.html">Scrolling DataTable</a></li> - <li><a href="./fill-both.html">Horizontal and vertical fill</a></li> - <li><a href="./fill-horizontal.html">Horizontal fill</a></li> - <li><a href="./complete-callback.html">Complete callback</a></li> - <li><a href="./step-callback.html">Step callback</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full - information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and - <a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of - DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href= - "http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/AutoFill/examples/complete-callback.html b/assets/plugins/datatables/extensions/AutoFill/examples/complete-callback.html deleted file mode 100644 index 2076d4f2..00000000 --- a/assets/plugins/datatables/extensions/AutoFill/examples/complete-callback.html +++ /dev/null @@ -1,652 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>AutoFill example - Complete callback</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.autoFill.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.autoFill.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - var table = $('#example').dataTable(); - - new $.fn.dataTable.AutoFill( table, { - complete: function ( altered ) { - var last = altered[ altered.length-1 ]; - alert( - altered.length+' cells were altered in this auto-fill. The '+ - 'value of the last cell altered was: '+last.oldValue+' and is '+ - 'now '+last.newValue - ); - } - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>AutoFill example <span>Complete callback</span></h1> - - <div class="info"> - <p>AutoFill provides a number of customisable callback functions so you can tailor it's actions to - exactly what you need. This example shows the use of the <code>complete</code> callback function which - is executed at the end of an auto-fill drag, providing information about the cells that were - altered.</p> - - <p>For a complete description of the <code>complete</code> callback, please refer to the <a href= - "//datatables.net/extras/autofill/options">AutoFill documentation</a>.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this - example:</p><code class="multiline brush: js;">$(document).ready(function() { - var table = $('#example').dataTable(); - - new $.fn.dataTable.AutoFill( table, { - complete: function ( altered ) { - var last = altered[ altered.length-1 ]; - alert( - altered.length+' cells were altered in this auto-fill. The '+ - 'value of the last cell altered was: '+last.oldValue+' and is '+ - 'now '+last.newValue - ); - } - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this - example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href= - "../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.autoFill.js">../js/dataTables.autoFill.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by - DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library - files (below), in order to correctly display the table. The additional CSS used is shown - below:</p><code class="multiline brush: js;"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the - table:</p> - - <ul> - <li><a href= - "../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.autoFill.css">../css/dataTables.autoFill.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data - will update automatically as any additional data is loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note - that this is just an example script using PHP. Server-side processing scripts can be written in any - language, using <a href="//datatables.net/manual/server-side">the protocol described in the - DataTables documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./columns.html">Column options</a></li> - <li><a href="./scrolling.html">Scrolling DataTable</a></li> - <li><a href="./fill-both.html">Horizontal and vertical fill</a></li> - <li><a href="./fill-horizontal.html">Horizontal fill</a></li> - <li class="active"><a href="./complete-callback.html">Complete callback</a></li> - <li><a href="./step-callback.html">Step callback</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full - information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and - <a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of - DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href= - "http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/AutoFill/examples/fill-both.html b/assets/plugins/datatables/extensions/AutoFill/examples/fill-both.html deleted file mode 100644 index f65076e1..00000000 --- a/assets/plugins/datatables/extensions/AutoFill/examples/fill-both.html +++ /dev/null @@ -1,641 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>AutoFill example - Horizontal and vertical fill</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.autoFill.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.autoFill.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - var table = $('#example').DataTable(); - - new $.fn.dataTable.AutoFill( table, { - mode: 'both' - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>AutoFill example <span>Horizontal and vertical fill</span></h1> - - <div class="info"> - <p>By default AutoFill will allow the fill to operate only on a single column at a time (i.e. - vertically). However, it has the ability to provide the fill either horizontally, over both axis or - limited to just one axis depending on the direction of the drag. This option is provided by the - <code>mode</code> sanitisation option.</p> - - <p>In this case it is set to <code>both</code> (i.e. both horizontal and vertical axis) to provide the - filler along a row, rather than a column.</p> - - <p>For the full range of options and syntax for <code>mode</code> please refer to the <a href= - "//datatables.net/extras/autofill/options">AutoFill documentation</a>.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this - example:</p><code class="multiline brush: js;">$(document).ready(function() { - var table = $('#example').DataTable(); - - new $.fn.dataTable.AutoFill( table, { - mode: 'both' - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this - example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href= - "../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.autoFill.js">../js/dataTables.autoFill.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by - DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library - files (below), in order to correctly display the table. The additional CSS used is shown - below:</p><code class="multiline brush: js;"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the - table:</p> - - <ul> - <li><a href= - "../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.autoFill.css">../css/dataTables.autoFill.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data - will update automatically as any additional data is loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note - that this is just an example script using PHP. Server-side processing scripts can be written in any - language, using <a href="//datatables.net/manual/server-side">the protocol described in the - DataTables documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./columns.html">Column options</a></li> - <li><a href="./scrolling.html">Scrolling DataTable</a></li> - <li class="active"><a href="./fill-both.html">Horizontal and vertical fill</a></li> - <li><a href="./fill-horizontal.html">Horizontal fill</a></li> - <li><a href="./complete-callback.html">Complete callback</a></li> - <li><a href="./step-callback.html">Step callback</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full - information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and - <a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of - DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href= - "http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/AutoFill/examples/fill-horizontal.html b/assets/plugins/datatables/extensions/AutoFill/examples/fill-horizontal.html deleted file mode 100644 index 13cadac9..00000000 --- a/assets/plugins/datatables/extensions/AutoFill/examples/fill-horizontal.html +++ /dev/null @@ -1,641 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>AutoFill example - Horizontal fill</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.autoFill.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.autoFill.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - var table = $('#example').DataTable(); - - new $.fn.dataTable.AutoFill( table, { - mode: 'x' - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>AutoFill example <span>Horizontal fill</span></h1> - - <div class="info"> - <p>By default AutoFill will allow the fill to operate only on a single column at a time (i.e. - vertically). However, it has the ability to provide the fill either horizontally, over both axis or - limited to just one axis depending on the direction of the drag. This option is provided by the - <code>mode</code> sanitisation option.</p> - - <p>In this case it is set to <code>x</code> (i.e. horizontal axis) to provide the filler along a row, - rather than a column.</p> - - <p>For the full range of options and syntax for <code>mode</code> please refer to the <a href= - "//datatables.net/extras/autofill/options">AutoFill documentation</a>.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this - example:</p><code class="multiline brush: js;">$(document).ready(function() { - var table = $('#example').DataTable(); - - new $.fn.dataTable.AutoFill( table, { - mode: 'x' - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this - example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href= - "../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.autoFill.js">../js/dataTables.autoFill.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by - DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library - files (below), in order to correctly display the table. The additional CSS used is shown - below:</p><code class="multiline brush: js;"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the - table:</p> - - <ul> - <li><a href= - "../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.autoFill.css">../css/dataTables.autoFill.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data - will update automatically as any additional data is loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note - that this is just an example script using PHP. Server-side processing scripts can be written in any - language, using <a href="//datatables.net/manual/server-side">the protocol described in the - DataTables documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./columns.html">Column options</a></li> - <li><a href="./scrolling.html">Scrolling DataTable</a></li> - <li><a href="./fill-both.html">Horizontal and vertical fill</a></li> - <li class="active"><a href="./fill-horizontal.html">Horizontal fill</a></li> - <li><a href="./complete-callback.html">Complete callback</a></li> - <li><a href="./step-callback.html">Step callback</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full - information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and - <a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of - DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href= - "http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/AutoFill/examples/index.html b/assets/plugins/datatables/extensions/AutoFill/examples/index.html deleted file mode 100644 index 9cade86c..00000000 --- a/assets/plugins/datatables/extensions/AutoFill/examples/index.html +++ /dev/null @@ -1,66 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - - <title>AutoFill examples - AutoFill examples</title> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>AutoFill example <span>AutoFill examples</span></h1> - - <div class="info"> - <p>AutoFill gives an Excel like option to a DataTable to click and drag over multiple cells, filling in - information over the selected cells and incrementing numbers as needed.</p> - - <p>Thanks to <a href="http://www.phoniax.no/">Phoniax AS</a> for their sponsorship of this plug-in for - DataTables.</p> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./columns.html">Column options</a></li> - <li><a href="./scrolling.html">Scrolling DataTable</a></li> - <li><a href="./fill-both.html">Horizontal and vertical fill</a></li> - <li><a href="./fill-horizontal.html">Horizontal fill</a></li> - <li><a href="./complete-callback.html">Complete callback</a></li> - <li><a href="./step-callback.html">Step callback</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full - information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and - <a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of - DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href= - "http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/AutoFill/examples/scrolling.html b/assets/plugins/datatables/extensions/AutoFill/examples/scrolling.html deleted file mode 100644 index 66871ec7..00000000 --- a/assets/plugins/datatables/extensions/AutoFill/examples/scrolling.html +++ /dev/null @@ -1,638 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>AutoFill example - Scrolling DataTable</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.autoFill.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.autoFill.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - var table = $('#example').dataTable( { - scrollY: 200, - scrollCollapse: false, - paginate: false - } ); - - new $.fn.dataTable.AutoFill( table ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>AutoFill example <span>Scrolling DataTable</span></h1> - - <div class="info"> - <p>When dragging an AutoFill handle, the table (if DataTables scrolling is enabled) or the window will - be automatically scrolled, as you approach the edge of the scrolling component. The example below shows - the effect with DataTables scrolling (and also window if needed).</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this - example:</p><code class="multiline brush: js;">$(document).ready(function() { - var table = $('#example').dataTable( { - scrollY: 200, - scrollCollapse: false, - paginate: false - } ); - - new $.fn.dataTable.AutoFill( table ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this - example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href= - "../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.autoFill.js">../js/dataTables.autoFill.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by - DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library - files (below), in order to correctly display the table. The additional CSS used is shown - below:</p><code class="multiline brush: js;"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the - table:</p> - - <ul> - <li><a href= - "../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.autoFill.css">../css/dataTables.autoFill.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data - will update automatically as any additional data is loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note - that this is just an example script using PHP. Server-side processing scripts can be written in any - language, using <a href="//datatables.net/manual/server-side">the protocol described in the - DataTables documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./columns.html">Column options</a></li> - <li class="active"><a href="./scrolling.html">Scrolling DataTable</a></li> - <li><a href="./fill-both.html">Horizontal and vertical fill</a></li> - <li><a href="./fill-horizontal.html">Horizontal fill</a></li> - <li><a href="./complete-callback.html">Complete callback</a></li> - <li><a href="./step-callback.html">Step callback</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full - information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and - <a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of - DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href= - "http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/AutoFill/examples/simple.html b/assets/plugins/datatables/extensions/AutoFill/examples/simple.html deleted file mode 100644 index ea3db498..00000000 --- a/assets/plugins/datatables/extensions/AutoFill/examples/simple.html +++ /dev/null @@ -1,631 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>AutoFill example - Basic initialisation</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.autoFill.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.autoFill.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - var table = $('#example').DataTable(); - new $.fn.dataTable.AutoFill( table ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>AutoFill example <span>Basic initialisation</span></h1> - - <div class="info"> - <p>AutoFill gives an Excel like option to a DataTable to click and drag over multiple cells, filling in - information over the selected cells and incrementing numbers as needed.</p> - - <p>AutoFill is initialised using the <code>$.fn.dataTable.AutoFill</code> function as shown in the - example below. It requires one parameter, the DataTable instance that AutoFill is to operate on, and - optionally a second configuration parameter, which is shown in the other AutoFill examples.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this - example:</p><code class="multiline brush: js;">$(document).ready(function() { - var table = $('#example').DataTable(); - new $.fn.dataTable.AutoFill( table ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this - example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href= - "../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.autoFill.js">../js/dataTables.autoFill.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by - DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library - files (below), in order to correctly display the table. The additional CSS used is shown - below:</p><code class="multiline brush: js;"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the - table:</p> - - <ul> - <li><a href= - "../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.autoFill.css">../css/dataTables.autoFill.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data - will update automatically as any additional data is loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note - that this is just an example script using PHP. Server-side processing scripts can be written in any - language, using <a href="//datatables.net/manual/server-side">the protocol described in the - DataTables documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li class="active"><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./columns.html">Column options</a></li> - <li><a href="./scrolling.html">Scrolling DataTable</a></li> - <li><a href="./fill-both.html">Horizontal and vertical fill</a></li> - <li><a href="./fill-horizontal.html">Horizontal fill</a></li> - <li><a href="./complete-callback.html">Complete callback</a></li> - <li><a href="./step-callback.html">Step callback</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full - information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and - <a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of - DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href= - "http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/AutoFill/examples/step-callback.html b/assets/plugins/datatables/extensions/AutoFill/examples/step-callback.html deleted file mode 100644 index c1255aaa..00000000 --- a/assets/plugins/datatables/extensions/AutoFill/examples/step-callback.html +++ /dev/null @@ -1,660 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>AutoFill example - Step callback</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.autoFill.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.autoFill.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - var table = $('#example').dataTable(); - - new $.fn.dataTable.AutoFill( table, { - columnDefs: [ { - targets: -1, - step: function ( cell, read, last, i, x, y ) { - var val = parseInt( (last || read).replace(/[$,]/g, ''), 10 ); - val += (x<0 || y<0 ? -100 : 100); // - if going back up, + if going down - - // Format for the currency column - return '$'+val.toString().replace( /\B(?=(\d{3})+(?!\d))/g, ',' ); - } - } ] - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>AutoFill example <span>Step callback</span></h1> - - <div class="info"> - <p>By default, AutoFill will increment cells that contain numbers by a single digit for each cell that - is iterated over (try the <em>Age</em> column below for example). This behaviour can be disabled - completely using the <code>increment</code> column option, but it can also be modified to suit your - requirements through use of the <code>step</code> column callback function.</p> - - <p>The <code>step</code> callback is executed for each cell in the auto-fill set and gives complete - control over how data is incremented. The example below shows the step function being used on the - <em>Salary</em> column to increment by 100, rather than 1 for each cell.</p> - - <p>For a complete description of the <code>step</code> callback, please refer to the <a href= - "//datatables.net/extras/autofill/options">AutoFill documentation</a>.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this - example:</p><code class="multiline brush: js;">$(document).ready(function() { - var table = $('#example').dataTable(); - - new $.fn.dataTable.AutoFill( table, { - columnDefs: [ { - targets: -1, - step: function ( cell, read, last, i, x, y ) { - var val = parseInt( (last || read).replace(/[$,]/g, ''), 10 ); - val += (x&lt;0 || y&lt;0 ? -100 : 100); // - if going back up, + if going down - - // Format for the currency column - return '$'+val.toString().replace( /\B(?=(\d{3})+(?!\d))/g, ',' ); - } - } ] - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this - example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href= - "../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.autoFill.js">../js/dataTables.autoFill.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by - DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library - files (below), in order to correctly display the table. The additional CSS used is shown - below:</p><code class="multiline brush: js;"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the - table:</p> - - <ul> - <li><a href= - "../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.autoFill.css">../css/dataTables.autoFill.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data - will update automatically as any additional data is loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note - that this is just an example script using PHP. Server-side processing scripts can be written in any - language, using <a href="//datatables.net/manual/server-side">the protocol described in the - DataTables documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./columns.html">Column options</a></li> - <li><a href="./scrolling.html">Scrolling DataTable</a></li> - <li><a href="./fill-both.html">Horizontal and vertical fill</a></li> - <li><a href="./fill-horizontal.html">Horizontal fill</a></li> - <li><a href="./complete-callback.html">Complete callback</a></li> - <li class="active"><a href="./step-callback.html">Step callback</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full - information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and - <a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of - DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href= - "http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/AutoFill/images/filler.png b/assets/plugins/datatables/extensions/AutoFill/images/filler.png deleted file mode 100644 index f2af65d8..00000000 Binary files a/assets/plugins/datatables/extensions/AutoFill/images/filler.png and /dev/null differ diff --git a/assets/plugins/datatables/extensions/AutoFill/js/dataTables.autoFill.js b/assets/plugins/datatables/extensions/AutoFill/js/dataTables.autoFill.js deleted file mode 100644 index 6bbfa35b..00000000 --- a/assets/plugins/datatables/extensions/AutoFill/js/dataTables.autoFill.js +++ /dev/null @@ -1,855 +0,0 @@ -/*! AutoFill 1.2.1 - * ©2008-2014 SpryMedia Ltd - datatables.net/license - */ - -/** - * @summary AutoFill - * @description Add Excel like click and drag auto-fill options to DataTables - * @version 1.2.1 - * @file dataTables.autoFill.js - * @author SpryMedia Ltd (www.sprymedia.co.uk) - * @contact www.sprymedia.co.uk/contact - * @copyright Copyright 2010-2014 SpryMedia Ltd. - * - * This source file is free software, available under the following license: - * MIT license - http://datatables.net/license/mit - * - * This source file is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. - * - * For details please refer to: http://www.datatables.net - */ - -(function( window, document, undefined ) { - -var factory = function( $, DataTable ) { -"use strict"; - -/** - * AutoFill provides Excel like auto-fill features for a DataTable - * - * @class AutoFill - * @constructor - * @param {object} oTD DataTables settings object - * @param {object} oConfig Configuration object for AutoFill - */ -var AutoFill = function( oDT, oConfig ) -{ - /* Sanity check that we are a new instance */ - if ( ! (this instanceof AutoFill) ) { - throw( "Warning: AutoFill must be initialised with the keyword 'new'" ); - } - - if ( ! $.fn.dataTableExt.fnVersionCheck('1.7.0') ) { - throw( "Warning: AutoFill requires DataTables 1.7 or greater"); - } - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Public class variables - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - this.c = {}; - - /** - * @namespace Settings object which contains customisable information for AutoFill instance - */ - this.s = { - /** - * @namespace Cached information about the little dragging icon (the filler) - */ - "filler": { - "height": 0, - "width": 0 - }, - - /** - * @namespace Cached information about the border display - */ - "border": { - "width": 2 - }, - - /** - * @namespace Store for live information for the current drag - */ - "drag": { - "startX": -1, - "startY": -1, - "startTd": null, - "endTd": null, - "dragging": false - }, - - /** - * @namespace Data cache for information that we need for scrolling the screen when we near - * the edges - */ - "screen": { - "interval": null, - "y": 0, - "height": 0, - "scrollTop": 0 - }, - - /** - * @namespace Data cache for the position of the DataTables scrolling element (when scrolling - * is enabled) - */ - "scroller": { - "top": 0, - "bottom": 0 - }, - - /** - * @namespace Information stored for each column. An array of objects - */ - "columns": [] - }; - - - /** - * @namespace Common and useful DOM elements for the class instance - */ - this.dom = { - "table": null, - "filler": null, - "borderTop": null, - "borderRight": null, - "borderBottom": null, - "borderLeft": null, - "currentTarget": null - }; - - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Public class methods - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - /** - * Retreieve the settings object from an instance - * @method fnSettings - * @returns {object} AutoFill settings object - */ - this.fnSettings = function () { - return this.s; - }; - - - /* Constructor logic */ - this._fnInit( oDT, oConfig ); - return this; -}; - - - -AutoFill.prototype = { - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Private methods (they are of course public in JS, but recommended as private) - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - /** - * Initialisation - * @method _fnInit - * @param {object} dt DataTables settings object - * @param {object} config Configuration object for AutoFill - * @returns void - */ - "_fnInit": function ( dt, config ) - { - var - that = this, - i, iLen; - - // Use DataTables API to get the settings allowing selectors, instances - // etc to be used, or for backwards compatibility get from the old - // fnSettings method - this.s.dt = DataTable.Api ? - new DataTable.Api( dt ).settings()[0] : - dt.fnSettings(); - this.s.init = config || {}; - this.dom.table = this.s.dt.nTable; - - $.extend( true, this.c, AutoFill.defaults, config ); - - /* Add and configure the columns */ - this._initColumns(); - - /* Auto Fill click and drag icon */ - var filler = $('<div/>', { - 'class': 'AutoFill_filler' - } ) - .appendTo( 'body' ); - this.dom.filler = filler[0]; - - // Get the height / width of the click element - this.s.filler.height = filler.height(); - this.s.filler.width = filler.width(); - filler[0].style.display = "none"; - - /* Border display - one div for each side. We can't just use a single - * one with a border, as we want the events to effectively pass through - * the transparent bit of the box - */ - var border; - var appender = document.body; - if ( that.s.dt.oScroll.sY !== "" ) { - that.s.dt.nTable.parentNode.style.position = "relative"; - appender = that.s.dt.nTable.parentNode; - } - - border = $('<div/>', { - "class": "AutoFill_border" - } ); - this.dom.borderTop = border.clone().appendTo( appender )[0]; - this.dom.borderRight = border.clone().appendTo( appender )[0]; - this.dom.borderBottom = border.clone().appendTo( appender )[0]; - this.dom.borderLeft = border.clone().appendTo( appender )[0]; - - /* Events */ - filler.on( 'mousedown.DTAF', function (e) { - this.onselectstart = function() { return false; }; - that._fnFillerDragStart.call( that, e ); - return false; - } ); - - $('tbody', this.dom.table).on( - 'mouseover.DTAF mouseout.DTAF', - '>tr>td, >tr>th', - function (e) { - that._fnFillerDisplay.call( that, e ); - } - ); - - $(this.dom.table).on( 'destroy.dt.DTAF', function () { - filler.off( 'mousedown.DTAF' ).remove(); - $('tbody', this.dom.table).off( 'mouseover.DTAF mouseout.DTAF' ); - } ); - }, - - - _initColumns: function ( ) - { - var that = this; - var i, ien; - var dt = this.s.dt; - var config = this.s.init; - - for ( i=0, ien=dt.aoColumns.length ; i<ien ; i++ ) { - this.s.columns[i] = $.extend( true, {}, AutoFill.defaults.column ); - } - - dt.oApi._fnApplyColumnDefs( - dt, - config.aoColumnDefs || config.columnDefs, - config.aoColumns || config.columns, - function (colIdx, def) { - that._fnColumnOptions( colIdx, def ); - } - ); - - // For columns which don't have read, write, step functions defined, - // use the default ones - for ( i=0, ien=dt.aoColumns.length ; i<ien ; i++ ) { - var column = this.s.columns[i]; - - if ( ! column.read ) { - column.read = this._fnReadCell; - } - if ( ! column.write ) { - column.read = this._fnWriteCell; - } - if ( ! column.step ) { - column.read = this._fnStep; - } - } - }, - - - "_fnColumnOptions": function ( i, opts ) - { - var column = this.s.columns[ i ]; - var set = function ( outProp, inProp ) { - if ( opts[ inProp[0] ] !== undefined ) { - column[ outProp ] = opts[ inProp[0] ]; - } - if ( opts[ inProp[1] ] !== undefined ) { - column[ outProp ] = opts[ inProp[1] ]; - } - }; - - // Compatibility with the old Hungarian style of notation - set( 'enable', ['bEnable', 'enable'] ); - set( 'read', ['fnRead', 'read'] ); - set( 'write', ['fnWrite', 'write'] ); - set( 'step', ['fnStep', 'step'] ); - set( 'increment', ['bIncrement', 'increment'] ); - }, - - - /** - * Find out the coordinates of a given TD cell in a table - * @method _fnTargetCoords - * @param {Node} nTd - * @returns {Object} x and y properties, for the position of the cell in the tables DOM - */ - "_fnTargetCoords": function ( nTd ) - { - var nTr = $(nTd).parents('tr')[0]; - var position = this.s.dt.oInstance.fnGetPosition( nTd ); - - return { - "x": $('td', nTr).index(nTd), - "y": $('tr', nTr.parentNode).index(nTr), - "row": position[0], - "column": position[2] - }; - }, - - - /** - * Display the border around one or more cells (from start to end) - * @method _fnUpdateBorder - * @param {Node} nStart Starting cell - * @param {Node} nEnd Ending cell - * @returns void - */ - "_fnUpdateBorder": function ( nStart, nEnd ) - { - var - border = this.s.border.width, - offsetStart = $(nStart).offset(), - offsetEnd = $(nEnd).offset(), - x1 = offsetStart.left - border, - x2 = offsetEnd.left + $(nEnd).outerWidth(), - y1 = offsetStart.top - border, - y2 = offsetEnd.top + $(nEnd).outerHeight(), - width = offsetEnd.left + $(nEnd).outerWidth() - offsetStart.left + (2*border), - height = offsetEnd.top + $(nEnd).outerHeight() - offsetStart.top + (2*border), - oStyle; - - // Recalculate start and end (when dragging "backwards") - if( offsetStart.left > offsetEnd.left) { - x1 = offsetEnd.left - border; - x2 = offsetStart.left + $(nStart).outerWidth(); - width = offsetStart.left + $(nStart).outerWidth() - offsetEnd.left + (2*border); - } - - if ( this.s.dt.oScroll.sY !== "" ) - { - /* The border elements are inside the DT scroller - so position relative to that */ - var - offsetScroll = $(this.s.dt.nTable.parentNode).offset(), - scrollTop = $(this.s.dt.nTable.parentNode).scrollTop(), - scrollLeft = $(this.s.dt.nTable.parentNode).scrollLeft(); - - x1 -= offsetScroll.left - scrollLeft; - x2 -= offsetScroll.left - scrollLeft; - y1 -= offsetScroll.top - scrollTop; - y2 -= offsetScroll.top - scrollTop; - } - - /* Top */ - oStyle = this.dom.borderTop.style; - oStyle.top = y1+"px"; - oStyle.left = x1+"px"; - oStyle.height = this.s.border.width+"px"; - oStyle.width = width+"px"; - - /* Bottom */ - oStyle = this.dom.borderBottom.style; - oStyle.top = y2+"px"; - oStyle.left = x1+"px"; - oStyle.height = this.s.border.width+"px"; - oStyle.width = width+"px"; - - /* Left */ - oStyle = this.dom.borderLeft.style; - oStyle.top = y1+"px"; - oStyle.left = x1+"px"; - oStyle.height = height+"px"; - oStyle.width = this.s.border.width+"px"; - - /* Right */ - oStyle = this.dom.borderRight.style; - oStyle.top = y1+"px"; - oStyle.left = x2+"px"; - oStyle.height = height+"px"; - oStyle.width = this.s.border.width+"px"; - }, - - - /** - * Mouse down event handler for starting a drag - * @method _fnFillerDragStart - * @param {Object} e Event object - * @returns void - */ - "_fnFillerDragStart": function (e) - { - var that = this; - var startingTd = this.dom.currentTarget; - - this.s.drag.dragging = true; - - that.dom.borderTop.style.display = "block"; - that.dom.borderRight.style.display = "block"; - that.dom.borderBottom.style.display = "block"; - that.dom.borderLeft.style.display = "block"; - - var coords = this._fnTargetCoords( startingTd ); - this.s.drag.startX = coords.x; - this.s.drag.startY = coords.y; - - this.s.drag.startTd = startingTd; - this.s.drag.endTd = startingTd; - - this._fnUpdateBorder( startingTd, startingTd ); - - $(document).bind('mousemove.AutoFill', function (e) { - that._fnFillerDragMove.call( that, e ); - } ); - - $(document).bind('mouseup.AutoFill', function (e) { - that._fnFillerFinish.call( that, e ); - } ); - - /* Scrolling information cache */ - this.s.screen.y = e.pageY; - this.s.screen.height = $(window).height(); - this.s.screen.scrollTop = $(document).scrollTop(); - - if ( this.s.dt.oScroll.sY !== "" ) - { - this.s.scroller.top = $(this.s.dt.nTable.parentNode).offset().top; - this.s.scroller.bottom = this.s.scroller.top + $(this.s.dt.nTable.parentNode).height(); - } - - /* Scrolling handler - we set an interval (which is cancelled on mouse up) which will fire - * regularly and see if we need to do any scrolling - */ - this.s.screen.interval = setInterval( function () { - var iScrollTop = $(document).scrollTop(); - var iScrollDelta = iScrollTop - that.s.screen.scrollTop; - that.s.screen.y += iScrollDelta; - - if ( that.s.screen.height - that.s.screen.y + iScrollTop < 50 ) - { - $('html, body').animate( { - "scrollTop": iScrollTop + 50 - }, 240, 'linear' ); - } - else if ( that.s.screen.y - iScrollTop < 50 ) - { - $('html, body').animate( { - "scrollTop": iScrollTop - 50 - }, 240, 'linear' ); - } - - if ( that.s.dt.oScroll.sY !== "" ) - { - if ( that.s.screen.y > that.s.scroller.bottom - 50 ) - { - $(that.s.dt.nTable.parentNode).animate( { - "scrollTop": $(that.s.dt.nTable.parentNode).scrollTop() + 50 - }, 240, 'linear' ); - } - else if ( that.s.screen.y < that.s.scroller.top + 50 ) - { - $(that.s.dt.nTable.parentNode).animate( { - "scrollTop": $(that.s.dt.nTable.parentNode).scrollTop() - 50 - }, 240, 'linear' ); - } - } - }, 250 ); - }, - - - /** - * Mouse move event handler for during a move. See if we want to update the display based on the - * new cursor position - * @method _fnFillerDragMove - * @param {Object} e Event object - * @returns void - */ - "_fnFillerDragMove": function (e) - { - if ( e.target && e.target.nodeName.toUpperCase() == "TD" && - e.target != this.s.drag.endTd ) - { - var coords = this._fnTargetCoords( e.target ); - - if ( this.c.mode == "y" && coords.x != this.s.drag.startX ) - { - e.target = $('tbody>tr:eq('+coords.y+')>td:eq('+this.s.drag.startX+')', this.dom.table)[0]; - } - if ( this.c.mode == "x" && coords.y != this.s.drag.startY ) - { - e.target = $('tbody>tr:eq('+this.s.drag.startY+')>td:eq('+coords.x+')', this.dom.table)[0]; - } - - if ( this.c.mode == "either") - { - if(coords.x != this.s.drag.startX ) - { - e.target = $('tbody>tr:eq('+this.s.drag.startY+')>td:eq('+coords.x+')', this.dom.table)[0]; - } - else if ( coords.y != this.s.drag.startY ) { - e.target = $('tbody>tr:eq('+coords.y+')>td:eq('+this.s.drag.startX+')', this.dom.table)[0]; - } - } - - // update coords - if ( this.c.mode !== "both" ) { - coords = this._fnTargetCoords( e.target ); - } - - var drag = this.s.drag; - drag.endTd = e.target; - - if ( coords.y >= this.s.drag.startY ) { - this._fnUpdateBorder( drag.startTd, drag.endTd ); - } - else { - this._fnUpdateBorder( drag.endTd, drag.startTd ); - } - this._fnFillerPosition( e.target ); - } - - /* Update the screen information so we can perform scrolling */ - this.s.screen.y = e.pageY; - this.s.screen.scrollTop = $(document).scrollTop(); - - if ( this.s.dt.oScroll.sY !== "" ) - { - this.s.scroller.scrollTop = $(this.s.dt.nTable.parentNode).scrollTop(); - this.s.scroller.top = $(this.s.dt.nTable.parentNode).offset().top; - this.s.scroller.bottom = this.s.scroller.top + $(this.s.dt.nTable.parentNode).height(); - } - }, - - - /** - * Mouse release handler - end the drag and take action to update the cells with the needed values - * @method _fnFillerFinish - * @param {Object} e Event object - * @returns void - */ - "_fnFillerFinish": function (e) - { - var that = this, i, iLen, j; - - $(document).unbind('mousemove.AutoFill mouseup.AutoFill'); - - this.dom.borderTop.style.display = "none"; - this.dom.borderRight.style.display = "none"; - this.dom.borderBottom.style.display = "none"; - this.dom.borderLeft.style.display = "none"; - - this.s.drag.dragging = false; - - clearInterval( this.s.screen.interval ); - - var cells = []; - var table = this.dom.table; - var coordsStart = this._fnTargetCoords( this.s.drag.startTd ); - var coordsEnd = this._fnTargetCoords( this.s.drag.endTd ); - var columnIndex = function ( visIdx ) { - return that.s.dt.oApi._fnVisibleToColumnIndex( that.s.dt, visIdx ); - }; - - // xxx - urgh - there must be a way of reducing this... - if ( coordsStart.y <= coordsEnd.y ) { - for ( i=coordsStart.y ; i<=coordsEnd.y ; i++ ) { - if ( coordsStart.x <= coordsEnd.x ) { - for ( j=coordsStart.x ; j<=coordsEnd.x ; j++ ) { - cells.push( { - node: $('tbody>tr:eq('+i+')>td:eq('+j+')', table)[0], - x: j - coordsStart.x, - y: i - coordsStart.y, - colIdx: columnIndex( j ) - } ); - } - } - else { - for ( j=coordsStart.x ; j>=coordsEnd.x ; j-- ) { - cells.push( { - node: $('tbody>tr:eq('+i+')>td:eq('+j+')', table)[0], - x: j - coordsStart.x, - y: i - coordsStart.y, - colIdx: columnIndex( j ) - } ); - } - } - } - } - else { - for ( i=coordsStart.y ; i>=coordsEnd.y ; i-- ) { - if ( coordsStart.x <= coordsEnd.x ) { - for ( j=coordsStart.x ; j<=coordsEnd.x ; j++ ) { - cells.push( { - node: $('tbody>tr:eq('+i+')>td:eq('+j+')', table)[0], - x: j - coordsStart.x, - y: i - coordsStart.y, - colIdx: columnIndex( j ) - } ); - } - } - else { - for ( j=coordsStart.x ; j>=coordsEnd.x ; j-- ) { - cells.push( { - node: $('tbody>tr:eq('+i+')>td:eq('+j+')', table)[0], - x: coordsStart.x - j, - y: coordsStart.y - i, - colIdx: columnIndex( j ) - } ); - } - } - } - } - - // An auto-fill requires 2 or more cells - if ( cells.length <= 1 ) { - return; - } - - var edited = []; - var previous; - - for ( i=0, iLen=cells.length ; i<iLen ; i++ ) { - var cell = cells[i]; - var column = this.s.columns[ cell.colIdx ]; - var read = column.read.call( column, cell.node ); - var stepValue = column.step.call( column, cell.node, read, previous, i, cell.x, cell.y ); - - column.write.call( column, cell.node, stepValue ); - - previous = stepValue; - edited.push( { - cell: cell, - colIdx: cell.colIdx, - newValue: stepValue, - oldValue: read - } ); - } - - if ( this.c.complete !== null ) { - this.c.complete.call( this, edited ); - } - - // In 1.10 we can do a static draw - if ( DataTable.Api ) { - new DataTable.Api( this.s.dt ).draw( false ); - } - else { - this.s.dt.oInstance.fnDraw(); - } - }, - - - /** - * Display the drag handle on mouse over cell - * @method _fnFillerDisplay - * @param {Object} e Event object - * @returns void - */ - "_fnFillerDisplay": function (e) - { - var filler = this.dom.filler; - - /* Don't display automatically when dragging */ - if ( this.s.drag.dragging) - { - return; - } - - /* Check that we are allowed to AutoFill this column or not */ - var nTd = (e.target.nodeName.toLowerCase() == 'td') ? e.target : $(e.target).parents('td')[0]; - var iX = this._fnTargetCoords(nTd).column; - if ( !this.s.columns[iX].enable ) - { - filler.style.display = "none"; - return; - } - - if (e.type == 'mouseover') - { - this.dom.currentTarget = nTd; - this._fnFillerPosition( nTd ); - - filler.style.display = "block"; - } - else if ( !e.relatedTarget || !e.relatedTarget.className.match(/AutoFill/) ) - { - filler.style.display = "none"; - } - }, - - - /** - * Position the filler icon over a cell - * @method _fnFillerPosition - * @param {Node} nTd Cell to position filler icon over - * @returns void - */ - "_fnFillerPosition": function ( nTd ) - { - var offset = $(nTd).offset(); - var filler = this.dom.filler; - filler.style.top = (offset.top - (this.s.filler.height / 2)-1 + $(nTd).outerHeight())+"px"; - filler.style.left = (offset.left - (this.s.filler.width / 2)-1 + $(nTd).outerWidth())+"px"; - } -}; - - -// Alias for access -DataTable.AutoFill = AutoFill; -DataTable.AutoFill = AutoFill; - - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Constants - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/** - * AutoFill version - * @constant version - * @type String - * @default See code - */ -AutoFill.version = "1.2.1"; - - -/** - * AutoFill defaults - * @namespace - */ -AutoFill.defaults = { - /** - * Mode for dragging (restrict to y-axis only, x-axis only, either one or none): - * - * * `y` - y-axis only (default) - * * `x` - x-axis only - * * `either` - either one, but not both axis at the same time - * * `both` - multiple cells allowed - * - * @type {string} - * @default `y` - */ - mode: 'y', - - complete: null, - - /** - * Column definition defaults - * @namespace - */ - column: { - /** - * If AutoFill should be enabled on this column - * - * @type {boolean} - * @default true - */ - enable: true, - - /** - * Allow automatic increment / decrement on this column if a number - * is found. - * - * @type {boolean} - * @default true - */ - increment: true, - - /** - * Cell read function - * - * Default function will simply read the value from the HTML of the - * cell. - * - * @type {function} - * @param {node} cell `th` / `td` element to read the value from - * @return {string} Data that has been read - */ - read: function ( cell ) { - return $(cell).html(); - }, - - /** - * Cell write function - * - * Default function will simply write to the HTML and tell the DataTable - * to update. - * - * @type {function} - * @param {node} cell `th` / `td` element to write the value to - * @return {string} Data two write - */ - write: function ( cell, val ) { - var table = $(cell).parents('table'); - if ( DataTable.Api ) { - // 1.10 - table.DataTable().cell( cell ).data( val ); - } - else { - // 1.9 - var dt = table.dataTable(); - var pos = dt.fnGetPosition( cell ); - dt.fnUpdate( val, pos[0], pos[2], false ); - } - }, - - /** - * Step function. This provides the ability to customise how the values - * are incremented. - * - * @param {node} cell `th` / `td` element that is being operated upon - * @param {string} read Cell value from `read` function - * @param {string} last Value of the previous cell - * @param {integer} i Loop counter - * @param {integer} x Cell x-position in the current auto-fill. The - * starting cell is coordinate 0 regardless of its physical position - * in the DataTable. - * @param {integer} y Cell y-position in the current auto-fill. The - * starting cell is coordinate 0 regardless of its physical position - * in the DataTable. - * @return {string} Value to write - */ - step: function ( cell, read, last, i, x, y ) { - // Increment a number if it is found - var re = /(\-?\d+)/; - var match = this.increment && last ? last.match(re) : null; - if ( match ) { - return last.replace( re, parseInt(match[1],10) + (x<0 || y<0 ? -1 : 1) ); - } - return last === undefined ? - read : - last; - } - } -}; - -return AutoFill; -}; - - -// Define as an AMD module if possible -if ( typeof define === 'function' && define.amd ) { - define( ['jquery', 'datatables'], factory ); -} -else if ( typeof exports === 'object' ) { - // Node/CommonJS - factory( require('jquery'), require('datatables') ); -} -else if ( jQuery && !jQuery.fn.dataTable.AutoFill ) { - // Otherwise simply initialise as normal, stopping multiple evaluation - factory( jQuery, jQuery.fn.dataTable ); -} - - -}(window, document)); - diff --git a/assets/plugins/datatables/extensions/AutoFill/js/dataTables.autoFill.min.js b/assets/plugins/datatables/extensions/AutoFill/js/dataTables.autoFill.min.js deleted file mode 100644 index 17f316a1..00000000 --- a/assets/plugins/datatables/extensions/AutoFill/js/dataTables.autoFill.min.js +++ /dev/null @@ -1,22 +0,0 @@ -/*! - AutoFill 1.2.1 - ©2008-2014 SpryMedia Ltd - datatables.net/license -*/ -(function(o,j,m){var l=function(c,k){var h=function(d,b){if(!(this instanceof h))throw"Warning: AutoFill must be initialised with the keyword 'new'";if(!c.fn.dataTableExt.fnVersionCheck("1.7.0"))throw"Warning: AutoFill requires DataTables 1.7 or greater";this.c={};this.s={filler:{height:0,width:0},border:{width:2},drag:{startX:-1,startY:-1,startTd:null,endTd:null,dragging:!1},screen:{interval:null,y:0,height:0,scrollTop:0},scroller:{top:0,bottom:0},columns:[]};this.dom={table:null,filler:null,borderTop:null, -borderRight:null,borderBottom:null,borderLeft:null,currentTarget:null};this.fnSettings=function(){return this.s};this._fnInit(d,b);return this};h.prototype={_fnInit:function(d,b){var a=this;this.s.dt=k.Api?(new k.Api(d)).settings()[0]:d.fnSettings();this.s.init=b||{};this.dom.table=this.s.dt.nTable;c.extend(!0,this.c,h.defaults,b);this._initColumns();var e=c("<div/>",{"class":"AutoFill_filler"}).appendTo("body");this.dom.filler=e[0];this.s.filler.height=e.height();this.s.filler.width=e.width();e[0].style.display= -"none";var g,f=j.body;""!==a.s.dt.oScroll.sY&&(a.s.dt.nTable.parentNode.style.position="relative",f=a.s.dt.nTable.parentNode);g=c("<div/>",{"class":"AutoFill_border"});this.dom.borderTop=g.clone().appendTo(f)[0];this.dom.borderRight=g.clone().appendTo(f)[0];this.dom.borderBottom=g.clone().appendTo(f)[0];this.dom.borderLeft=g.clone().appendTo(f)[0];e.on("mousedown.DTAF",function(b){this.onselectstart=function(){return false};a._fnFillerDragStart.call(a,b);return false});c("tbody",this.dom.table).on("mouseover.DTAF mouseout.DTAF", -">tr>td, >tr>th",function(b){a._fnFillerDisplay.call(a,b)});c(this.dom.table).on("destroy.dt.DTAF",function(){e.off("mousedown.DTAF").remove();c("tbody",this.dom.table).off("mouseover.DTAF mouseout.DTAF")})},_initColumns:function(){var d=this,b,a,e=this.s.dt,g=this.s.init;b=0;for(a=e.aoColumns.length;b<a;b++)this.s.columns[b]=c.extend(!0,{},h.defaults.column);e.oApi._fnApplyColumnDefs(e,g.aoColumnDefs||g.columnDefs,g.aoColumns||g.columns,function(a,b){d._fnColumnOptions(a,b)});b=0;for(a=e.aoColumns.length;b< -a;b++)if(e=this.s.columns[b],e.read||(e.read=this._fnReadCell),e.write||(e.read=this._fnWriteCell),!e.step)e.read=this._fnStep},_fnColumnOptions:function(d,b){var a=this.s.columns[d],c=function(c,d){b[d[0]]!==m&&(a[c]=b[d[0]]);b[d[1]]!==m&&(a[c]=b[d[1]])};c("enable",["bEnable","enable"]);c("read",["fnRead","read"]);c("write",["fnWrite","write"]);c("step",["fnStep","step"]);c("increment",["bIncrement","increment"])},_fnTargetCoords:function(d){var b=c(d).parents("tr")[0],a=this.s.dt.oInstance.fnGetPosition(d); -return{x:c("td",b).index(d),y:c("tr",b.parentNode).index(b),row:a[0],column:a[2]}},_fnUpdateBorder:function(d,b){var a=this.s.border.width,e=c(d).offset(),g=c(b).offset(),f=e.left-a,i=g.left+c(b).outerWidth(),n=e.top-a,h=g.top+c(b).outerHeight(),j=g.left+c(b).outerWidth()-e.left+2*a,k=g.top+c(b).outerHeight()-e.top+2*a;e.left>g.left&&(f=g.left-a,i=e.left+c(d).outerWidth(),j=e.left+c(d).outerWidth()-g.left+2*a);""!==this.s.dt.oScroll.sY&&(a=c(this.s.dt.nTable.parentNode).offset(),e=c(this.s.dt.nTable.parentNode).scrollTop(), -g=c(this.s.dt.nTable.parentNode).scrollLeft(),f-=a.left-g,i-=a.left-g,n-=a.top-e,h-=a.top-e);a=this.dom.borderTop.style;a.top=n+"px";a.left=f+"px";a.height=this.s.border.width+"px";a.width=j+"px";a=this.dom.borderBottom.style;a.top=h+"px";a.left=f+"px";a.height=this.s.border.width+"px";a.width=j+"px";a=this.dom.borderLeft.style;a.top=n+"px";a.left=f+"px";a.height=k+"px";a.width=this.s.border.width+"px";a=this.dom.borderRight.style;a.top=n+"px";a.left=i+"px";a.height=k+"px";a.width=this.s.border.width+ -"px"},_fnFillerDragStart:function(d){var b=this,a=this.dom.currentTarget;this.s.drag.dragging=!0;b.dom.borderTop.style.display="block";b.dom.borderRight.style.display="block";b.dom.borderBottom.style.display="block";b.dom.borderLeft.style.display="block";var e=this._fnTargetCoords(a);this.s.drag.startX=e.x;this.s.drag.startY=e.y;this.s.drag.startTd=a;this.s.drag.endTd=a;this._fnUpdateBorder(a,a);c(j).bind("mousemove.AutoFill",function(a){b._fnFillerDragMove.call(b,a)});c(j).bind("mouseup.AutoFill", -function(a){b._fnFillerFinish.call(b,a)});this.s.screen.y=d.pageY;this.s.screen.height=c(o).height();this.s.screen.scrollTop=c(j).scrollTop();""!==this.s.dt.oScroll.sY&&(this.s.scroller.top=c(this.s.dt.nTable.parentNode).offset().top,this.s.scroller.bottom=this.s.scroller.top+c(this.s.dt.nTable.parentNode).height());this.s.screen.interval=setInterval(function(){var a=c(j).scrollTop();b.s.screen.y=b.s.screen.y+(a-b.s.screen.scrollTop);b.s.screen.height-b.s.screen.y+a<50?c("html, body").animate({scrollTop:a+ -50},240,"linear"):b.s.screen.y-a<50&&c("html, body").animate({scrollTop:a-50},240,"linear");b.s.dt.oScroll.sY!==""&&(b.s.screen.y>b.s.scroller.bottom-50?c(b.s.dt.nTable.parentNode).animate({scrollTop:c(b.s.dt.nTable.parentNode).scrollTop()+50},240,"linear"):b.s.screen.y<b.s.scroller.top+50&&c(b.s.dt.nTable.parentNode).animate({scrollTop:c(b.s.dt.nTable.parentNode).scrollTop()-50},240,"linear"))},250)},_fnFillerDragMove:function(d){if(d.target&&"TD"==d.target.nodeName.toUpperCase()&&d.target!=this.s.drag.endTd){var b= -this._fnTargetCoords(d.target);"y"==this.c.mode&&b.x!=this.s.drag.startX&&(d.target=c("tbody>tr:eq("+b.y+")>td:eq("+this.s.drag.startX+")",this.dom.table)[0]);"x"==this.c.mode&&b.y!=this.s.drag.startY&&(d.target=c("tbody>tr:eq("+this.s.drag.startY+")>td:eq("+b.x+")",this.dom.table)[0]);"either"==this.c.mode&&(b.x!=this.s.drag.startX?d.target=c("tbody>tr:eq("+this.s.drag.startY+")>td:eq("+b.x+")",this.dom.table)[0]:b.y!=this.s.drag.startY&&(d.target=c("tbody>tr:eq("+b.y+")>td:eq("+this.s.drag.startX+ -")",this.dom.table)[0]));"both"!==this.c.mode&&(b=this._fnTargetCoords(d.target));var a=this.s.drag;a.endTd=d.target;b.y>=this.s.drag.startY?this._fnUpdateBorder(a.startTd,a.endTd):this._fnUpdateBorder(a.endTd,a.startTd);this._fnFillerPosition(d.target)}this.s.screen.y=d.pageY;this.s.screen.scrollTop=c(j).scrollTop();""!==this.s.dt.oScroll.sY&&(this.s.scroller.scrollTop=c(this.s.dt.nTable.parentNode).scrollTop(),this.s.scroller.top=c(this.s.dt.nTable.parentNode).offset().top,this.s.scroller.bottom= -this.s.scroller.top+c(this.s.dt.nTable.parentNode).height())},_fnFillerFinish:function(){var d=this,b,a;c(j).unbind("mousemove.AutoFill mouseup.AutoFill");this.dom.borderTop.style.display="none";this.dom.borderRight.style.display="none";this.dom.borderBottom.style.display="none";this.dom.borderLeft.style.display="none";this.s.drag.dragging=!1;clearInterval(this.s.screen.interval);var e=[],g=this.dom.table,f=this._fnTargetCoords(this.s.drag.startTd),i=this._fnTargetCoords(this.s.drag.endTd),h=function(a){return d.s.dt.oApi._fnVisibleToColumnIndex(d.s.dt, -a)};if(f.y<=i.y)for(b=f.y;b<=i.y;b++)if(f.x<=i.x)for(a=f.x;a<=i.x;a++)e.push({node:c("tbody>tr:eq("+b+")>td:eq("+a+")",g)[0],x:a-f.x,y:b-f.y,colIdx:h(a)});else for(a=f.x;a>=i.x;a--)e.push({node:c("tbody>tr:eq("+b+")>td:eq("+a+")",g)[0],x:a-f.x,y:b-f.y,colIdx:h(a)});else for(b=f.y;b>=i.y;b--)if(f.x<=i.x)for(a=f.x;a<=i.x;a++)e.push({node:c("tbody>tr:eq("+b+")>td:eq("+a+")",g)[0],x:a-f.x,y:b-f.y,colIdx:h(a)});else for(a=f.x;a>=i.x;a--)e.push({node:c("tbody>tr:eq("+b+")>td:eq("+a+")",g)[0],x:f.x-a,y:f.y- -b,colIdx:h(a)});if(!(1>=e.length)){var g=[],m;b=0;for(a=e.length;b<a;b++){var f=e[b],i=this.s.columns[f.colIdx],h=i.read.call(i,f.node),l=i.step.call(i,f.node,h,m,b,f.x,f.y);i.write.call(i,f.node,l);m=l;g.push({cell:f,colIdx:f.colIdx,newValue:l,oldValue:h})}null!==this.c.complete&&this.c.complete.call(this,g);k.Api?(new k.Api(this.s.dt)).draw(!1):this.s.dt.oInstance.fnDraw()}},_fnFillerDisplay:function(d){var b=this.dom.filler;if(!this.s.drag.dragging){var a="td"==d.target.nodeName.toLowerCase()? -d.target:c(d.target).parents("td")[0],e=this._fnTargetCoords(a).column;if(this.s.columns[e].enable)if("mouseover"==d.type)this.dom.currentTarget=a,this._fnFillerPosition(a),b.style.display="block";else{if(!d.relatedTarget||!d.relatedTarget.className.match(/AutoFill/))b.style.display="none"}else b.style.display="none"}},_fnFillerPosition:function(d){var b=c(d).offset(),a=this.dom.filler;a.style.top=b.top-this.s.filler.height/2-1+c(d).outerHeight()+"px";a.style.left=b.left-this.s.filler.width/2-1+c(d).outerWidth()+ -"px"}};k.AutoFill=h;k.AutoFill=h;h.version="1.2.1";h.defaults={mode:"y",complete:null,column:{enable:!0,increment:!0,read:function(d){return c(d).html()},write:function(d,b){var a=c(d).parents("table");if(k.Api)a.DataTable().cell(d).data(b);else{var a=a.dataTable(),e=a.fnGetPosition(d);a.fnUpdate(b,e[0],e[2],!1)}},step:function(c,b,a,e,g,f){c=/(\-?\d+)/;return(e=this.increment&&a?a.match(c):null)?a.replace(c,parseInt(e[1],10)+(0>g||0>f?-1:1)):a===m?b:a}}};return h};"function"===typeof define&&define.amd? -define(["jquery","datatables"],l):"object"===typeof exports?l(require("jquery"),require("datatables")):jQuery&&!jQuery.fn.dataTable.AutoFill&&l(jQuery,jQuery.fn.dataTable)})(window,document); diff --git a/assets/plugins/datatables/extensions/ColVis/License.txt b/assets/plugins/datatables/extensions/ColVis/License.txt deleted file mode 100644 index 9ade2f1b..00000000 --- a/assets/plugins/datatables/extensions/ColVis/License.txt +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2010-2015 SpryMedia Limited -http://datatables.net - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/assets/plugins/datatables/extensions/ColVis/Readme.md b/assets/plugins/datatables/extensions/ColVis/Readme.md deleted file mode 100644 index 62f432d7..00000000 --- a/assets/plugins/datatables/extensions/ColVis/Readme.md +++ /dev/null @@ -1,38 +0,0 @@ -# ColVis - -ColVis adds a button to the toolbars around DataTables which gives the end user of the table the ability to dynamically change the visibility of the columns in the table: - -* Dynamically show and hide columns in a table -* Very easy integration with DataTables -* Ability to exclude columns from being either hidden or shown -* Save saving integration with DataTables - - -# Installation - -To use ColVis, first download DataTables ( http://datatables.net/download ) and place the unzipped ColVis package into a `extensions` directory in the DataTables package. This will allow the pages in the examples to operate correctly. To see the examples running, open the `examples` directory in your web-browser. - - -# Basic usage - -ColVis is initialised using the `C` option that it adds to DataTables' `dom` option. For example: - -```js -$(document).ready( function () { - $('#example').dataTable( { - "dom": 'C<"clear">lfrtip' - } ); -} ); -``` - - -# Documentation / support - -* Documentation: http://datatables.net/extensions/colvis/ -* DataTables support forums: http://datatables.net/forums - - -# GitHub - -If you fancy getting involved with the development of ColVis and help make it better, please refer to its GitHub repo: https://github.com/DataTables/ColVis - diff --git a/assets/plugins/datatables/extensions/ColVis/css/dataTables.colVis.css b/assets/plugins/datatables/extensions/ColVis/css/dataTables.colVis.css deleted file mode 100644 index 51f546de..00000000 --- a/assets/plugins/datatables/extensions/ColVis/css/dataTables.colVis.css +++ /dev/null @@ -1,185 +0,0 @@ - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * ColVis styles - */ -div.ColVis { - float: right; - margin-bottom: 1em; -} - -button.ColVis_Button, -ul.ColVis_collection li { - position: relative; - float: left; - margin-right: 3px; - padding: 5px 8px; - border: 1px solid #999; - cursor: pointer; - *cursor: hand; - font-size: 0.88em; - color: black !important; - white-space: nowrap; - - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - -ms-border-radius: 2px; - -o-border-radius: 2px; - border-radius: 2px; - - -webkit-box-shadow: 1px 1px 3px #ccc; - -moz-box-shadow: 1px 1px 3px #ccc; - -ms-box-shadow: 1px 1px 3px #ccc; - -o-box-shadow: 1px 1px 3px #ccc; - box-shadow: 1px 1px 3px #ccc; - - /* Generated by http://www.colorzilla.com/gradient-editor/ */ - background: #ffffff; /* Old browsers */ - background: -webkit-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* Chrome10+,Safari5.1+ */ - background: -moz-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* FF3.6+ */ - background: -ms-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* IE10+ */ - background: -o-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* Opera 11.10+ */ - background: linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* W3C */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#f9f9f9',GradientType=0 ); /* IE6-9 */ -} - -.ColVis_Button:hover, -ul.ColVis_collection li:hover { - border: 1px solid #666; - text-decoration: none !important; - - -webkit-box-shadow: 1px 1px 3px #999; - -moz-box-shadow: 1px 1px 3px #999; - -ms-box-shadow: 1px 1px 3px #999; - -o-box-shadow: 1px 1px 3px #999; - box-shadow: 1px 1px 3px #999; - - background: #f3f3f3; /* Old browsers */ - background: -webkit-linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* Chrome10+,Safari5.1+ */ - background: -moz-linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* FF3.6+ */ - background: -ms-linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* IE10+ */ - background: -o-linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* Opera 11.10+ */ - background: linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* W3C */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f3f3f3', endColorstr='#f4f4f4',GradientType=0 ); /* IE6-9 */ -} - -button.ColVis_Button { - height: 30px; - padding: 3px 8px; -} - -button.ColVis_Button::-moz-focus-inner { - border: none !important; - padding: 0; -} - -button.ColVis_Button:active { - outline: none; -} - - -div.ColVis_collectionBackground { - position: fixed; - top: 0; - left: 0; - height: 100%; - width: 100%; - background-color: black; - z-index: 1100; -} - -ul.ColVis_collection { - list-style: none; - width: 150px; - padding: 8px 8px 4px 8px; - margin: 0; - border: 1px solid #ccc; - border: 1px solid rgba( 0, 0, 0, 0.4 ); - background-color: #f3f3f3; - background-color: rgba( 255, 255, 255, 0.3 ); - overflow: hidden; - z-index: 2002; - - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - -ms-border-radius: 5px; - -o-border-radius: 5px; - border-radius: 5px; - - -webkit-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3); - -moz-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3); - -ms-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3); - -o-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3); - box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3); -} - -ul.ColVis_collection li { - position: relative; - height: auto; - left: 0; - right: 0; - padding: 0.5em; - - display: block; - float: none; - margin-bottom: 4px; - - -webkit-box-shadow: 1px 1px 3px #999; - -moz-box-shadow: 1px 1px 3px #999; - -ms-box-shadow: 1px 1px 3px #999; - -o-box-shadow: 1px 1px 3px #999; - box-shadow: 1px 1px 3px #999; -} - -ul.ColVis_collection li { - text-align: left; -} - -ul.ColVis_collection li.ColVis_Button:hover { - border: 1px solid #999; - background-color: #f0f0f0; -} - -ul.ColVis_collection li span { - display: inline-block; - padding-left: 0.5em; - cursor: pointer; -} - - -ul.ColVis_collection li.ColVis_Special { - border-color: #555; - background: rgb(237,237,237); /* Old browsers */ - background: -webkit-linear-gradient(top, rgba(237,237,237,1) 0%,rgba(214,214,214,1) 77%,rgba(232,232,232,1) 100%); /* Chrome10+,Safari5.1+ */ - background: -moz-linear-gradient(top, rgba(237,237,237,1) 0%, rgba(214,214,214,1) 77%, rgba(232,232,232,1) 100%); /* FF3.6+ */ - background: -ms-linear-gradient(top, rgba(237,237,237,1) 0%,rgba(214,214,214,1) 77%,rgba(232,232,232,1) 100%); /* IE10+ */ - background: -o-linear-gradient(top, rgba(237,237,237,1) 0%,rgba(214,214,214,1) 77%,rgba(232,232,232,1) 100%); /* Opera 11.10+ */ - background: linear-gradient(to bottom, rgba(237,237,237,1) 0%,rgba(214,214,214,1) 77%,rgba(232,232,232,1) 100%); /* W3C */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ededed', endColorstr='#e8e8e8',GradientType=0 ); /* IE6-9 */ -} - -ul.ColVis_collection li.ColVis_Special:hover { - background: #e2e2e2; /* Old browsers */ - background: -webkit-linear-gradient(top, #d0d0d0 0%,#d5d5d5 89%,#e2e2e2 100%); /* Chrome10+,Safari5.1+ */ - background: -moz-linear-gradient(top, #d0d0d0 0%,#d5d5d5 89%,#e2e2e2 100%); /* FF3.6+ */ - background: -ms-linear-gradient(top, #d0d0d0 0%,#d5d5d5 89%,#e2e2e2 100%); /* IE10+ */ - background: -o-linear-gradient(top, #d0d0d0 0%,#d5d5d5 89%,#e2e2e2 100%); /* Opera 11.10+ */ - background: linear-gradient(top, #d0d0d0 0%,#d5d5d5 89%,#e2e2e2 100%); /* W3C */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f3f3f3', endColorstr='#e2e2e2',GradientType=0 ); /* IE6-9 */ -} - - -span.ColVis_radio { - display: inline-block; - width: 20px; -} - -div.ColVis_catcher { - position: absolute; - z-index: 1101; -} - -.disabled { - color: #999; -} - - diff --git a/assets/plugins/datatables/extensions/ColVis/css/dataTables.colVis.min.css b/assets/plugins/datatables/extensions/ColVis/css/dataTables.colVis.min.css deleted file mode 100644 index 00ab37d7..00000000 --- a/assets/plugins/datatables/extensions/ColVis/css/dataTables.colVis.min.css +++ /dev/null @@ -1 +0,0 @@ -div.ColVis{float:right;margin-bottom:1em}button.ColVis_Button,ul.ColVis_collection li{position:relative;float:left;margin-right:3px;padding:5px 8px;border:1px solid #999;cursor:pointer;*cursor:hand;font-size:0.88em;color:black !important;white-space:nowrap;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;-webkit-box-shadow:1px 1px 3px #ccc;-moz-box-shadow:1px 1px 3px #ccc;-ms-box-shadow:1px 1px 3px #ccc;-o-box-shadow:1px 1px 3px #ccc;box-shadow:1px 1px 3px #ccc;background:#ffffff;background:-webkit-linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);background:-moz-linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);background:-ms-linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);background:-o-linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);background:linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f9f9f9',GradientType=0 )}.ColVis_Button:hover,ul.ColVis_collection li:hover{border:1px solid #666;text-decoration:none !important;-webkit-box-shadow:1px 1px 3px #999;-moz-box-shadow:1px 1px 3px #999;-ms-box-shadow:1px 1px 3px #999;-o-box-shadow:1px 1px 3px #999;box-shadow:1px 1px 3px #999;background:#f3f3f3;background:-webkit-linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%);background:-moz-linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%);background:-ms-linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%);background:-o-linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%);background:linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3f3f3', endColorstr='#f4f4f4',GradientType=0 )}button.ColVis_Button{height:30px;padding:3px 8px}button.ColVis_Button::-moz-focus-inner{border:none !important;padding:0}button.ColVis_Button:active{outline:none}div.ColVis_collectionBackground{position:fixed;top:0;left:0;height:100%;width:100%;background-color:black;z-index:1100}ul.ColVis_collection{list-style:none;width:150px;padding:8px 8px 4px 8px;margin:0;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.4);background-color:#f3f3f3;background-color:rgba(255,255,255,0.3);overflow:hidden;z-index:2002;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;-webkit-box-shadow:3px 3px 5px rgba(0,0,0,0.3);-moz-box-shadow:3px 3px 5px rgba(0,0,0,0.3);-ms-box-shadow:3px 3px 5px rgba(0,0,0,0.3);-o-box-shadow:3px 3px 5px rgba(0,0,0,0.3);box-shadow:3px 3px 5px rgba(0,0,0,0.3)}ul.ColVis_collection li{position:relative;height:auto;left:0;right:0;padding:0.5em;display:block;float:none;margin-bottom:4px;-webkit-box-shadow:1px 1px 3px #999;-moz-box-shadow:1px 1px 3px #999;-ms-box-shadow:1px 1px 3px #999;-o-box-shadow:1px 1px 3px #999;box-shadow:1px 1px 3px #999}ul.ColVis_collection li{text-align:left}ul.ColVis_collection li.ColVis_Button:hover{border:1px solid #999;background-color:#f0f0f0}ul.ColVis_collection li span{display:inline-block;padding-left:0.5em;cursor:pointer}ul.ColVis_collection li.ColVis_Special{border-color:#555;background:#ededed;background:-webkit-linear-gradient(top, #ededed 0%, #d6d6d6 77%, #e8e8e8 100%);background:-moz-linear-gradient(top, #ededed 0%, #d6d6d6 77%, #e8e8e8 100%);background:-ms-linear-gradient(top, #ededed 0%, #d6d6d6 77%, #e8e8e8 100%);background:-o-linear-gradient(top, #ededed 0%, #d6d6d6 77%, #e8e8e8 100%);background:linear-gradient(to bottom, #ededed 0%, #d6d6d6 77%, #e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8',GradientType=0 )}ul.ColVis_collection li.ColVis_Special:hover{background:#e2e2e2;background:-webkit-linear-gradient(top, #d0d0d0 0%, #d5d5d5 89%, #e2e2e2 100%);background:-moz-linear-gradient(top, #d0d0d0 0%, #d5d5d5 89%, #e2e2e2 100%);background:-ms-linear-gradient(top, #d0d0d0 0%, #d5d5d5 89%, #e2e2e2 100%);background:-o-linear-gradient(top, #d0d0d0 0%, #d5d5d5 89%, #e2e2e2 100%);background:linear-gradient(top, #d0d0d0 0%, #d5d5d5 89%, #e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3f3f3', endColorstr='#e2e2e2',GradientType=0 )}span.ColVis_radio{display:inline-block;width:20px}div.ColVis_catcher{position:absolute;z-index:1101}.disabled{color:#999} diff --git a/assets/plugins/datatables/extensions/ColVis/css/dataTables.colvis.jqueryui.css b/assets/plugins/datatables/extensions/ColVis/css/dataTables.colvis.jqueryui.css deleted file mode 100644 index 0cdf0baf..00000000 --- a/assets/plugins/datatables/extensions/ColVis/css/dataTables.colvis.jqueryui.css +++ /dev/null @@ -1,41 +0,0 @@ - -button.ColVis_Button, -ul.ColVis_collection li { - padding: 0.5em; -} - -ul.ColVis_collection { - margin: 0; - padding: 0; - overflow: hidden; - z-index: 2002; -} - -ul.ColVis_collection li { - clear: both; - display: block; - text-align: left; - margin: -1px 0 0 0; -} - -ul.ColVis_collection li span { - display: inline-block; - padding-left: 0.5em; - cursor: pointer; -} - -div.ColVis_collectionBackground { - position: fixed; - top: 0; - left: 0; - height: 100%; - width: 100%; - background-color: black; - z-index: 1100; -} - - -div.ColVis_catcher { - position: absolute; - z-index: 1101; -} \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/ColVis/examples/button_order.html b/assets/plugins/datatables/extensions/ColVis/examples/button_order.html deleted file mode 100644 index 1dffef96..00000000 --- a/assets/plugins/datatables/extensions/ColVis/examples/button_order.html +++ /dev/null @@ -1,630 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>ColVis example - Button ordering</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.colVis.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.colVis.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - $('#example').DataTable( { - dom: 'C<"clear">lfrtip', - colVis: { - order: 'alpha' - } - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>ColVis example <span>Button ordering</span></h1> - - <div class="info"> - <p>The list of columns that ColVis displays has two options for the order in which they are displayed. The default mode of operation is to show the buttons in the - same order as they appear in the HTML table, but the second mode of operation is to show the buttons in alphabetical order. This is done by specifying the - <code>order</code> option, set to <code>alpha</code>. Alphabetical button ordering is shown in this example.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').DataTable( { - dom: 'C&lt;&quot;clear&quot;&gt;lfrtip', - colVis: { - order: 'alpha' - } - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.colVis.js">../js/dataTables.colVis.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.colVis.css">../css/dataTables.colVis.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./new_init.html">`new` initialisation</a></li> - <li><a href="./text.html">Custom button text</a></li> - <li><a href="./exclude_columns.html">Exclude columns from list</a></li> - <li><a href="./title_callback.html">Column button callback</a></li> - <li class="active"><a href="./button_order.html">Button ordering</a></li> - <li><a href="./mouseover.html">Mouseover activation</a></li> - <li><a href="./group_columns.html">Group columns</a></li> - <li><a href="./two_tables.html">Two tables with individual controls</a></li> - <li><a href="./two_tables_identical.html">Two tables with shared controls</a></li> - <li><a href="./restore.html">Restore / show all</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/ColVis/examples/exclude_columns.html b/assets/plugins/datatables/extensions/ColVis/examples/exclude_columns.html deleted file mode 100644 index 2359d122..00000000 --- a/assets/plugins/datatables/extensions/ColVis/examples/exclude_columns.html +++ /dev/null @@ -1,632 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>ColVis example - Exclude columns from list</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.colVis.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.colVis.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - $('#example').DataTable( { - dom: 'C<"clear">lfrtip', - colVis: { - exclude: [ 0 ] - } - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>ColVis example <span>Exclude columns from list</span></h1> - - <div class="info"> - <p>It can at times be useful to exclude columns from being in the 'show / hide' list (for example if you have hidden information that the end user shouldn't be - able to make visible. This can be done by the <code>exclude</code> ColVis configuration parameter when creating the DataTable. This is simply an array of integers, - indicating which columns should be excluded. This example shows the first column being excluded.</p> - - <p>For full information about the ColVis options, please refer to the <a href="//datatables.net/extensions/colvis/options">ColVis options documentation</a>.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').DataTable( { - dom: 'C&lt;&quot;clear&quot;&gt;lfrtip', - colVis: { - exclude: [ 0 ] - } - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.colVis.js">../js/dataTables.colVis.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.colVis.css">../css/dataTables.colVis.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./new_init.html">`new` initialisation</a></li> - <li><a href="./text.html">Custom button text</a></li> - <li class="active"><a href="./exclude_columns.html">Exclude columns from list</a></li> - <li><a href="./title_callback.html">Column button callback</a></li> - <li><a href="./button_order.html">Button ordering</a></li> - <li><a href="./mouseover.html">Mouseover activation</a></li> - <li><a href="./group_columns.html">Group columns</a></li> - <li><a href="./two_tables.html">Two tables with individual controls</a></li> - <li><a href="./two_tables_identical.html">Two tables with shared controls</a></li> - <li><a href="./restore.html">Restore / show all</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/ColVis/examples/group_columns.html b/assets/plugins/datatables/extensions/ColVis/examples/group_columns.html deleted file mode 100644 index 9bf73a7b..00000000 --- a/assets/plugins/datatables/extensions/ColVis/examples/group_columns.html +++ /dev/null @@ -1,656 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>ColVis example - Group columns</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.colVis.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.colVis.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - $('#example').DataTable( { - dom: 'C<"clear">lfrtip', - colVis: { - exclude: [], - groups: [ - { - title: "Engine", - columns: [ 0, 3 ] - }, - { - title: "Client", - columns: [ 1, 2 ] - } - ] - } - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>ColVis example <span>Group columns</span></h1> - - <div class="info"> - <p>It can be useful at times to show and hide multiple columns together - i.e. grouping them together. Groupings are defined by the <code>groups</code> array. - Create a group button by naming it (using the <code>title</code> option) and specifying by index which columns belong to it (using the <code>columns</code> - option).</p> - - <p>Note also that this ability to create groups can be used in combination <code>exclude</code> to remove individual columns from the list (should you wish them to - only be used in the groups), or set <code>exclude = [ 'all' ]</code> to show only the grouping buttons (i.e. individual column control buttons will not be - shown).</p> - - <p>For full information about the ColVis options, please refer to the <a href="//datatables.net/extensions/colvis/options">ColVis options documentation</a>.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').DataTable( { - dom: 'C&lt;&quot;clear&quot;&gt;lfrtip', - colVis: { - exclude: [], - groups: [ - { - title: &quot;Engine&quot;, - columns: [ 0, 3 ] - }, - { - title: &quot;Client&quot;, - columns: [ 1, 2 ] - } - ] - } - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.colVis.js">../js/dataTables.colVis.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.colVis.css">../css/dataTables.colVis.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./new_init.html">`new` initialisation</a></li> - <li><a href="./text.html">Custom button text</a></li> - <li><a href="./exclude_columns.html">Exclude columns from list</a></li> - <li><a href="./title_callback.html">Column button callback</a></li> - <li><a href="./button_order.html">Button ordering</a></li> - <li><a href="./mouseover.html">Mouseover activation</a></li> - <li class="active"><a href="./group_columns.html">Group columns</a></li> - <li><a href="./two_tables.html">Two tables with individual controls</a></li> - <li><a href="./two_tables_identical.html">Two tables with shared controls</a></li> - <li><a href="./restore.html">Restore / show all</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/ColVis/examples/index.html b/assets/plugins/datatables/extensions/ColVis/examples/index.html deleted file mode 100644 index 0046c257..00000000 --- a/assets/plugins/datatables/extensions/ColVis/examples/index.html +++ /dev/null @@ -1,72 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - - <title>ColVis examples - ColVis examples</title> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>ColVis example <span>ColVis examples</span></h1> - - <div class="info"> - <p>ColVis adds a button to the toolbars around DataTables which gives the end user of the table the ability to dynamically change the visibility of the columns in - the table:</p> - - <ul class="markdown"> - <li>Dynamically show and hide columns in a table</li> - <li>Very easy integration with DataTables</li> - <li>Ability to exclude columns from being either hidden or shown</li> - <li>Save saving integration with DataTables</li> - </ul> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./new_init.html">`new` initialisation</a></li> - <li><a href="./text.html">Custom button text</a></li> - <li><a href="./exclude_columns.html">Exclude columns from list</a></li> - <li><a href="./title_callback.html">Column button callback</a></li> - <li><a href="./button_order.html">Button ordering</a></li> - <li><a href="./mouseover.html">Mouseover activation</a></li> - <li><a href="./group_columns.html">Group columns</a></li> - <li><a href="./two_tables.html">Two tables with individual controls</a></li> - <li><a href="./two_tables_identical.html">Two tables with shared controls</a></li> - <li><a href="./restore.html">Restore / show all</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/ColVis/examples/jqueryui.html b/assets/plugins/datatables/extensions/ColVis/examples/jqueryui.html deleted file mode 100644 index 32d176d2..00000000 --- a/assets/plugins/datatables/extensions/ColVis/examples/jqueryui.html +++ /dev/null @@ -1,637 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>ColVis example - jQuery UI styling</title> - <link rel="stylesheet" type="text/css" href="//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css"> - <link rel="stylesheet" type="text/css" href="../../Plugins/integration/jqueryui/dataTables.jqueryui.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.colvis.jqueryui.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../../Plugins/integration/jqueryui/dataTables.jqueryui.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.colVis.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - var table = $('#example').DataTable( { - jQueryUI: true - } ); - var colvis = new $.fn.dataTable.ColVis( table ); - - $( colvis.button() ).insertBefore('div.dataTables_length'); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>ColVis example <span>jQuery UI styling</span></h1> - - <div class="info"> - <p>This example shows how the jQuery UI ThemeRoller option in DataTables can be used with ColVis.</p> - - <p>The important thing to note here is that it is easier to use <code>new $.fn.dataTable.ColVis()</code> to add ColVis to the table rather than <a href= - "//datatables.net/reference/option/dom"><code class="option" title="DataTables initialisation option">dom<span>DT</span></code></a> as the jQuery UI integration - uses a complex expression for <a href="//datatables.net/reference/option/dom"><code class="option" title= - "DataTables initialisation option">dom<span>DT</span></code></a>.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - var table = $('#example').DataTable( { - jQueryUI: true - } ); - var colvis = new $.fn.dataTable.ColVis( table ); - - $( colvis.button() ).insertBefore('div.dataTables_length'); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../../Plugins/integration/jqueryui/dataTables.jqueryui.js">../../Plugins/integration/jqueryui/dataTables.jqueryui.js</a></li> - <li><a href="../js/dataTables.colVis.js">../js/dataTables.colVis.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css">//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css</a></li> - <li><a href="../../Plugins/integration/jqueryui/dataTables.jqueryui.css">../../Plugins/integration/jqueryui/dataTables.jqueryui.css</a></li> - <li><a href="../css/dataTables.colvis.jqueryui.css">../css/dataTables.colvis.jqueryui.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./new_init.html">`new` initialisation</a></li> - <li><a href="./text.html">Custom button text</a></li> - <li><a href="./exclude_columns.html">Exclude columns from list</a></li> - <li><a href="./title_callback.html">Column button callback</a></li> - <li><a href="./button_order.html">Button ordering</a></li> - <li><a href="./mouseover.html">Mouseover activation</a></li> - <li><a href="./group_columns.html">Group columns</a></li> - <li><a href="./two_tables.html">Two tables with individual controls</a></li> - <li><a href="./two_tables_identical.html">Two tables with shared controls</a></li> - <li><a href="./restore.html">Restore / show all</a></li> - <li class="active"><a href="./jqueryui.html">jQuery UI styling</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/ColVis/examples/mouseover.html b/assets/plugins/datatables/extensions/ColVis/examples/mouseover.html deleted file mode 100644 index c3aee004..00000000 --- a/assets/plugins/datatables/extensions/ColVis/examples/mouseover.html +++ /dev/null @@ -1,632 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>ColVis example - Mouseover activation</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.colVis.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.colVis.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - $('#example').DataTable( { - dom: 'C<"clear">lfrtip', - colVis: { - activate: "mouseover" - } - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>ColVis example <span>Mouseover activation</span></h1> - - <div class="info"> - <p>The default activation (showing the columns list) for ColVis is for the user to click the button. This can be altered to a <code>mouseover</code> activation by - making use of the <code>activate</code> initialisation option and setting it to <code class="string" title="String">mouseover</code>. This is shown in the example - below.</p> - - <p>For full information about the ColVis options, please refer to the <a href="//datatables.net/extensions/colvis/options">ColVis options documentation</a>.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').DataTable( { - dom: 'C&lt;&quot;clear&quot;&gt;lfrtip', - colVis: { - activate: &quot;mouseover&quot; - } - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.colVis.js">../js/dataTables.colVis.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.colVis.css">../css/dataTables.colVis.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./new_init.html">`new` initialisation</a></li> - <li><a href="./text.html">Custom button text</a></li> - <li><a href="./exclude_columns.html">Exclude columns from list</a></li> - <li><a href="./title_callback.html">Column button callback</a></li> - <li><a href="./button_order.html">Button ordering</a></li> - <li class="active"><a href="./mouseover.html">Mouseover activation</a></li> - <li><a href="./group_columns.html">Group columns</a></li> - <li><a href="./two_tables.html">Two tables with individual controls</a></li> - <li><a href="./two_tables_identical.html">Two tables with shared controls</a></li> - <li><a href="./restore.html">Restore / show all</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/ColVis/examples/new_init.html b/assets/plugins/datatables/extensions/ColVis/examples/new_init.html deleted file mode 100644 index 1cfa25c9..00000000 --- a/assets/plugins/datatables/extensions/ColVis/examples/new_init.html +++ /dev/null @@ -1,629 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>ColVis example - `new` initialisation</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.colVis.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.colVis.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - var table = $('#example').DataTable(); - var colvis = new $.fn.dataTable.ColVis( table ); - - $( colvis.button() ).insertAfter('div.info'); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>ColVis example <span>`new` initialisation</span></h1> - - <div class="info"> - <p>As well as providing the option to be initialised through the <code>C</code> option of <a href="//datatables.net/reference/option/dom"><code class="option" - title="DataTables initialisation option">dom<span>DT</span></code></a>, ColVis can also be added to a DataTable using direct initialisation - <code>new - $.fn.dataTable.ColVis();</code> as shown in this example. The ColVis control button it available through its <code>button()</code> method, which can then be used - to attach to the document where you need.</p> - - <p>For full information about the ColVis API, please refer to the <a href="//datatables.net/extensions/colvis/api">ColVis API documentation</a>.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - var table = $('#example').DataTable(); - var colvis = new $.fn.dataTable.ColVis( table ); - - $( colvis.button() ).insertAfter('div.info'); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.colVis.js">../js/dataTables.colVis.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.colVis.css">../css/dataTables.colVis.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li class="active"><a href="./new_init.html">`new` initialisation</a></li> - <li><a href="./text.html">Custom button text</a></li> - <li><a href="./exclude_columns.html">Exclude columns from list</a></li> - <li><a href="./title_callback.html">Column button callback</a></li> - <li><a href="./button_order.html">Button ordering</a></li> - <li><a href="./mouseover.html">Mouseover activation</a></li> - <li><a href="./group_columns.html">Group columns</a></li> - <li><a href="./two_tables.html">Two tables with individual controls</a></li> - <li><a href="./two_tables_identical.html">Two tables with shared controls</a></li> - <li><a href="./restore.html">Restore / show all</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/ColVis/examples/restore.html b/assets/plugins/datatables/extensions/ColVis/examples/restore.html deleted file mode 100644 index e9a64640..00000000 --- a/assets/plugins/datatables/extensions/ColVis/examples/restore.html +++ /dev/null @@ -1,641 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>ColVis example - Restore / show all</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.colVis.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.colVis.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - $('#example').DataTable( { - dom: 'C<"clear">lfrtip', - columnDefs: [ - { visible: false, targets: 2 } - ], - colVis: { - restore: "Restore", - showAll: "Show all", - showNone: "Show none" - } - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>ColVis example <span>Restore / show all</span></h1> - - <div class="info"> - <p>This demo of ColVis shows its ability to add "Restore", "Show all" and "Show none" buttons to the list of column visibility options. This is done with the - <code>restore</code>, <code>showAll</code> and <code>showNone</code> options which can be enabled individually if needed.</p> - - <p>For full information about the ColVis options, please refer to the <a href="//datatables.net/extensions/colvis/options">ColVis options documentation</a>.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').DataTable( { - dom: 'C&lt;&quot;clear&quot;&gt;lfrtip', - columnDefs: [ - { visible: false, targets: 2 } - ], - colVis: { - restore: &quot;Restore&quot;, - showAll: &quot;Show all&quot;, - showNone: &quot;Show none&quot; - } - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.colVis.js">../js/dataTables.colVis.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.colVis.css">../css/dataTables.colVis.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./new_init.html">`new` initialisation</a></li> - <li><a href="./text.html">Custom button text</a></li> - <li><a href="./exclude_columns.html">Exclude columns from list</a></li> - <li><a href="./title_callback.html">Column button callback</a></li> - <li><a href="./button_order.html">Button ordering</a></li> - <li><a href="./mouseover.html">Mouseover activation</a></li> - <li><a href="./group_columns.html">Group columns</a></li> - <li><a href="./two_tables.html">Two tables with individual controls</a></li> - <li><a href="./two_tables_identical.html">Two tables with shared controls</a></li> - <li class="active"><a href="./restore.html">Restore / show all</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/ColVis/examples/simple.html b/assets/plugins/datatables/extensions/ColVis/examples/simple.html deleted file mode 100644 index 0772721e..00000000 --- a/assets/plugins/datatables/extensions/ColVis/examples/simple.html +++ /dev/null @@ -1,627 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>ColVis example - Basic initialisation</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.colVis.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.colVis.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - $('#example').DataTable( { - dom: 'C<"clear">lfrtip' - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>ColVis example <span>Basic initialisation</span></h1> - - <div class="info"> - <p>ColVis is a plug-in for DataTables which presents a list of all columns to a user and allows them to select which ones they wish to be visible. Click the 'Show - / hide columns' button to be presented with a list of columns in the table, and click the buttons to show and hide them as you wish.</p> - - <p>ColVis is added to a DataTable by specifying the <code>C</code> option for <a href="//datatables.net/reference/option/dom"><code class="option" title= - "DataTables initialisation option">dom<span>DT</span></code></a>. The example below shows the ColVis button added to the table with a clearing element after - it.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').DataTable( { - dom: 'C&lt;&quot;clear&quot;&gt;lfrtip' - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.colVis.js">../js/dataTables.colVis.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.colVis.css">../css/dataTables.colVis.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li class="active"><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./new_init.html">`new` initialisation</a></li> - <li><a href="./text.html">Custom button text</a></li> - <li><a href="./exclude_columns.html">Exclude columns from list</a></li> - <li><a href="./title_callback.html">Column button callback</a></li> - <li><a href="./button_order.html">Button ordering</a></li> - <li><a href="./mouseover.html">Mouseover activation</a></li> - <li><a href="./group_columns.html">Group columns</a></li> - <li><a href="./two_tables.html">Two tables with individual controls</a></li> - <li><a href="./two_tables_identical.html">Two tables with shared controls</a></li> - <li><a href="./restore.html">Restore / show all</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/ColVis/examples/text.html b/assets/plugins/datatables/extensions/ColVis/examples/text.html deleted file mode 100644 index 7840f740..00000000 --- a/assets/plugins/datatables/extensions/ColVis/examples/text.html +++ /dev/null @@ -1,631 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>ColVis example - Custom button text</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.colVis.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.colVis.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - $('#example').DataTable( { - "dom": 'C<"clear">lfrtip', - "colVis": { - "buttonText": "Change columns" - } - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>ColVis example <span>Custom button text</span></h1> - - <div class="info"> - <p>You may wish to use your own text in the ColVis button - this is done by making use of the <code>buttonText</code> initialisation option, as shown in this - example.</p> - - <p>For full information about the ColVis options, please refer to the <a href="//datatables.net/extensions/colvis/options">ColVis options documentation</a>.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').DataTable( { - &quot;dom&quot;: 'C&lt;&quot;clear&quot;&gt;lfrtip', - &quot;colVis&quot;: { - &quot;buttonText&quot;: &quot;Change columns&quot; - } - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.colVis.js">../js/dataTables.colVis.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.colVis.css">../css/dataTables.colVis.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./new_init.html">`new` initialisation</a></li> - <li class="active"><a href="./text.html">Custom button text</a></li> - <li><a href="./exclude_columns.html">Exclude columns from list</a></li> - <li><a href="./title_callback.html">Column button callback</a></li> - <li><a href="./button_order.html">Button ordering</a></li> - <li><a href="./mouseover.html">Mouseover activation</a></li> - <li><a href="./group_columns.html">Group columns</a></li> - <li><a href="./two_tables.html">Two tables with individual controls</a></li> - <li><a href="./two_tables_identical.html">Two tables with shared controls</a></li> - <li><a href="./restore.html">Restore / show all</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/ColVis/examples/title_callback.html b/assets/plugins/datatables/extensions/ColVis/examples/title_callback.html deleted file mode 100644 index d20605ea..00000000 --- a/assets/plugins/datatables/extensions/ColVis/examples/title_callback.html +++ /dev/null @@ -1,636 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>ColVis example - Column button callback</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.colVis.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.colVis.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - $('#example').DataTable( { - "dom": 'C<"clear">lfrtip', - "colVis": { - "label": function ( index, title, th ) { - return (index+1) +'. '+ title; - } - } - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>ColVis example <span>Column button callback</span></h1> - - <div class="info"> - <p>By default ColVis will use the information in the <code class="tag" title="HTML tag">th</code> cell for each column as the button name to use in ColVis, which - might not always be what you want (for example you might has HTML in the cell that you don't want in the button). The <code>label</code> callback provides the - ability to customise the label used for the button.</p> - - <p>In this example the column index is prefixed to the column title.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').DataTable( { - &quot;dom&quot;: 'C&lt;&quot;clear&quot;&gt;lfrtip', - &quot;colVis&quot;: { - &quot;label&quot;: function ( index, title, th ) { - return (index+1) +'. '+ title; - } - } - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.colVis.js">../js/dataTables.colVis.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.colVis.css">../css/dataTables.colVis.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./new_init.html">`new` initialisation</a></li> - <li><a href="./text.html">Custom button text</a></li> - <li><a href="./exclude_columns.html">Exclude columns from list</a></li> - <li class="active"><a href="./title_callback.html">Column button callback</a></li> - <li><a href="./button_order.html">Button ordering</a></li> - <li><a href="./mouseover.html">Mouseover activation</a></li> - <li><a href="./group_columns.html">Group columns</a></li> - <li><a href="./two_tables.html">Two tables with individual controls</a></li> - <li><a href="./two_tables_identical.html">Two tables with shared controls</a></li> - <li><a href="./restore.html">Restore / show all</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/ColVis/examples/two_tables.html b/assets/plugins/datatables/extensions/ColVis/examples/two_tables.html deleted file mode 100644 index 3dc0f0ac..00000000 --- a/assets/plugins/datatables/extensions/ColVis/examples/two_tables.html +++ /dev/null @@ -1,339 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>ColVis example - Two tables with individual controls</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.colVis.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.colVis.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - $('table.display').DataTable( { - dom: 'C<"clear">lfrtip', - displayLength: 5 - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>ColVis example <span>Two tables with individual controls</span></h1> - - <div class="info"> - <p>It can be useful to have DataTables initialise more than one table with a single call can for them to each have individual ColVis controllers. All this requires - is a suitable jQuery selector to be used, and DataTables and ColVis will take care of the rest - as shown in this example.</p> - </div> - - <table id="" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>$320,800</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>$433,060</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>$103,600</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>$342,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>$217,500</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>$92,575</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>$324,050</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>$75,650</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>$183,000</td> - </tr> - </tbody> - </table> - - <table id="" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>$90,560</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>$198,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>$132,000</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>$145,000</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>$136,200</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>$163,500</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>$103,500</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('table.display').DataTable( { - dom: 'C&lt;&quot;clear&quot;&gt;lfrtip', - displayLength: 5 - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.colVis.js">../js/dataTables.colVis.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.colVis.css">../css/dataTables.colVis.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./new_init.html">`new` initialisation</a></li> - <li><a href="./text.html">Custom button text</a></li> - <li><a href="./exclude_columns.html">Exclude columns from list</a></li> - <li><a href="./title_callback.html">Column button callback</a></li> - <li><a href="./button_order.html">Button ordering</a></li> - <li><a href="./mouseover.html">Mouseover activation</a></li> - <li><a href="./group_columns.html">Group columns</a></li> - <li class="active"><a href="./two_tables.html">Two tables with individual controls</a></li> - <li><a href="./two_tables_identical.html">Two tables with shared controls</a></li> - <li><a href="./restore.html">Restore / show all</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/ColVis/examples/two_tables_identical.html b/assets/plugins/datatables/extensions/ColVis/examples/two_tables_identical.html deleted file mode 100644 index 90ffe078..00000000 --- a/assets/plugins/datatables/extensions/ColVis/examples/two_tables_identical.html +++ /dev/null @@ -1,363 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>ColVis example - Two tables with shared controls</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.colVis.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.colVis.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - var tables = $('table.display').DataTable( { - displayLength: 5 - } ); - - // When the column visibility changes on the firs table, also change it on - // the others - tables.table(0).on('column-visibility', function ( e, settings, colIdx, visibility ) { - tables.tables(':gt(0)').column( colIdx ).visible( visibility ); - } ); - - // Create ColVis on the first table only - var colvis = new $.fn.dataTable.ColVis( tables.table(0) ); - $( colvis.button() ).insertAfter('div.info'); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>ColVis example <span>Two tables with shared controls</span></h1> - - <div class="info"> - <p>This example shows how the DataTables API can be used with ColVis to use a single ColVis control to effect other tables. This is done by applying ColVis to the - first table and then listening for the <a href="//datatables.net/reference/event/column-visibility"><code class="event" title= - "DataTables event">column-visibility<span>DT</span></code></a> event and updating all other tables when triggered.</p> - - <p>This example makes use of the <a href="//datatables.net/reference/api/tables()"><code class="api" title= - "DataTables API method">tables()<span>DT</span></code></a> and <a href="//datatables.net/reference/api/table()"><code class="api" title= - "DataTables API method">table()<span>DT</span></code></a> methods for working with multiple tables, and also initialised ColVis using the <code>new - $.fn.dataTable.ColVis();</code> operator.</p> - </div> - - <table id="" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>$320,800</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>$433,060</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>$103,600</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>$342,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>$217,500</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>$92,575</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>$324,050</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>$75,650</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>$183,000</td> - </tr> - </tbody> - </table> - - <table id="" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>$90,560</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>$198,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>$132,000</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>$145,000</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>$136,200</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>$163,500</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>$103,500</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - var tables = $('table.display').DataTable( { - displayLength: 5 - } ); - - // When the column visibility changes on the firs table, also change it on - // the others - tables.table(0).on('column-visibility', function ( e, settings, colIdx, visibility ) { - tables.tables(':gt(0)').column( colIdx ).visible( visibility ); - } ); - - // Create ColVis on the first table only - var colvis = new $.fn.dataTable.ColVis( tables.table(0) ); - $( colvis.button() ).insertAfter('div.info'); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.colVis.js">../js/dataTables.colVis.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.colVis.css">../css/dataTables.colVis.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./new_init.html">`new` initialisation</a></li> - <li><a href="./text.html">Custom button text</a></li> - <li><a href="./exclude_columns.html">Exclude columns from list</a></li> - <li><a href="./title_callback.html">Column button callback</a></li> - <li><a href="./button_order.html">Button ordering</a></li> - <li><a href="./mouseover.html">Mouseover activation</a></li> - <li><a href="./group_columns.html">Group columns</a></li> - <li><a href="./two_tables.html">Two tables with individual controls</a></li> - <li class="active"><a href="./two_tables_identical.html">Two tables with shared controls</a></li> - <li><a href="./restore.html">Restore / show all</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/ColVis/js/dataTables.colVis.js b/assets/plugins/datatables/extensions/ColVis/js/dataTables.colVis.js deleted file mode 100644 index 57a4326a..00000000 --- a/assets/plugins/datatables/extensions/ColVis/js/dataTables.colVis.js +++ /dev/null @@ -1,1123 +0,0 @@ -/*! ColVis 1.1.2 - * ©2010-2015 SpryMedia Ltd - datatables.net/license - */ - -/** - * @summary ColVis - * @description Controls for column visibility in DataTables - * @version 1.1.2 - * @file dataTables.colReorder.js - * @author SpryMedia Ltd (www.sprymedia.co.uk) - * @contact www.sprymedia.co.uk/contact - * @copyright Copyright 2010-2015 SpryMedia Ltd. - * - * This source file is free software, available under the following license: - * MIT license - http://datatables.net/license/mit - * - * This source file is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. - * - * For details please refer to: http://www.datatables.net - */ - -(function(window, document, undefined) { - - -var factory = function( $, DataTable ) { -"use strict"; - -/** - * ColVis provides column visibility control for DataTables - * - * @class ColVis - * @constructor - * @param {object} DataTables settings object. With DataTables 1.10 this can - * also be and API instance, table node, jQuery collection or jQuery selector. - * @param {object} ColVis configuration options - */ -var ColVis = function( oDTSettings, oInit ) -{ - /* Santiy check that we are a new instance */ - if ( !this.CLASS || this.CLASS != "ColVis" ) - { - alert( "Warning: ColVis must be initialised with the keyword 'new'" ); - } - - if ( typeof oInit == 'undefined' ) - { - oInit = {}; - } - - var camelToHungarian = $.fn.dataTable.camelToHungarian; - if ( camelToHungarian ) { - camelToHungarian( ColVis.defaults, ColVis.defaults, true ); - camelToHungarian( ColVis.defaults, oInit ); - } - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Public class variables - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - /** - * @namespace Settings object which contains customisable information for - * ColVis instance. Augmented by ColVis.defaults - */ - this.s = { - /** - * DataTables settings object - * @property dt - * @type Object - * @default null - */ - "dt": null, - - /** - * Customisation object - * @property oInit - * @type Object - * @default passed in - */ - "oInit": oInit, - - /** - * Flag to say if the collection is hidden - * @property hidden - * @type boolean - * @default true - */ - "hidden": true, - - /** - * Store the original visibility settings so they could be restored - * @property abOriginal - * @type Array - * @default [] - */ - "abOriginal": [] - }; - - - /** - * @namespace Common and useful DOM elements for the class instance - */ - this.dom = { - /** - * Wrapper for the button - given back to DataTables as the node to insert - * @property wrapper - * @type Node - * @default null - */ - "wrapper": null, - - /** - * Activation button - * @property button - * @type Node - * @default null - */ - "button": null, - - /** - * Collection list node - * @property collection - * @type Node - * @default null - */ - "collection": null, - - /** - * Background node used for shading the display and event capturing - * @property background - * @type Node - * @default null - */ - "background": null, - - /** - * Element to position over the activation button to catch mouse events when using mouseover - * @property catcher - * @type Node - * @default null - */ - "catcher": null, - - /** - * List of button elements - * @property buttons - * @type Array - * @default [] - */ - "buttons": [], - - /** - * List of group button elements - * @property groupButtons - * @type Array - * @default [] - */ - "groupButtons": [], - - /** - * Restore button - * @property restore - * @type Node - * @default null - */ - "restore": null - }; - - /* Store global reference */ - ColVis.aInstances.push( this ); - - /* Constructor logic */ - this.s.dt = $.fn.dataTable.Api ? - new $.fn.dataTable.Api( oDTSettings ).settings()[0] : - oDTSettings; - - this._fnConstruct( oInit ); - return this; -}; - - - -ColVis.prototype = { - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Public methods - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - /** - * Get the ColVis instance's control button so it can be injected into the - * DOM - * @method button - * @returns {node} ColVis button - */ - button: function () - { - return this.dom.wrapper; - }, - - /** - * Alias of `rebuild` for backwards compatibility - * @method fnRebuild - */ - "fnRebuild": function () - { - this.rebuild(); - }, - - /** - * Rebuild the list of buttons for this instance (i.e. if there is a column - * header update) - * @method fnRebuild - */ - rebuild: function () - { - /* Remove the old buttons */ - for ( var i=this.dom.buttons.length-1 ; i>=0 ; i-- ) { - this.dom.collection.removeChild( this.dom.buttons[i] ); - } - this.dom.buttons.splice( 0, this.dom.buttons.length ); - this.dom.groupButtons.splice(0, this.dom.groupButtons.length); - - if ( this.dom.restore ) { - this.dom.restore.parentNode( this.dom.restore ); - } - - /* Re-add them (this is not the optimal way of doing this, it is fast and effective) */ - this._fnAddGroups(); - this._fnAddButtons(); - - /* Update the checkboxes */ - this._fnDrawCallback(); - }, - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Private methods (they are of course public in JS, but recommended as private) - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - /** - * Constructor logic - * @method _fnConstruct - * @returns void - * @private - */ - "_fnConstruct": function ( init ) - { - this._fnApplyCustomisation( init ); - - var that = this; - var i, iLen; - this.dom.wrapper = document.createElement('div'); - this.dom.wrapper.className = "ColVis"; - - this.dom.button = $( '<button />', { - 'class': !this.s.dt.bJUI ? - "ColVis_Button ColVis_MasterButton" : - "ColVis_Button ColVis_MasterButton ui-button ui-state-default" - } ) - .append( '<span>'+this.s.buttonText+'</span>' ) - .bind( this.s.activate=="mouseover" ? "mouseover" : "click", function (e) { - e.preventDefault(); - that._fnCollectionShow(); - } ) - .appendTo( this.dom.wrapper )[0]; - - this.dom.catcher = this._fnDomCatcher(); - this.dom.collection = this._fnDomCollection(); - this.dom.background = this._fnDomBackground(); - - this._fnAddGroups(); - this._fnAddButtons(); - - /* Store the original visibility information */ - for ( i=0, iLen=this.s.dt.aoColumns.length ; i<iLen ; i++ ) - { - this.s.abOriginal.push( this.s.dt.aoColumns[i].bVisible ); - } - - /* Update on each draw */ - this.s.dt.aoDrawCallback.push( { - "fn": function () { - that._fnDrawCallback.call( that ); - }, - "sName": "ColVis" - } ); - - /* If columns are reordered, then we need to update our exclude list and - * rebuild the displayed list - */ - $(this.s.dt.oInstance).bind( 'column-reorder.dt', function ( e, oSettings, oReorder ) { - for ( i=0, iLen=that.s.aiExclude.length ; i<iLen ; i++ ) { - that.s.aiExclude[i] = oReorder.aiInvertMapping[ that.s.aiExclude[i] ]; - } - - var mStore = that.s.abOriginal.splice( oReorder.iFrom, 1 )[0]; - that.s.abOriginal.splice( oReorder.iTo, 0, mStore ); - - that.fnRebuild(); - } ); - - $(this.s.dt.oInstance).bind( 'destroy.dt', function () { - $(that.dom.wrapper).remove(); - } ); - - // Set the initial state - this._fnDrawCallback(); - }, - - - /** - * Apply any customisation to the settings from the DataTables initialisation - * @method _fnApplyCustomisation - * @returns void - * @private - */ - "_fnApplyCustomisation": function ( init ) - { - $.extend( true, this.s, ColVis.defaults, init ); - - // Slightly messy overlap for the camelCase notation - if ( ! this.s.showAll && this.s.bShowAll ) { - this.s.showAll = this.s.sShowAll; - } - - if ( ! this.s.restore && this.s.bRestore ) { - this.s.restore = this.s.sRestore; - } - - // CamelCase to Hungarian for the column groups - var groups = this.s.groups; - var hungarianGroups = this.s.aoGroups; - if ( groups ) { - for ( var i=0, ien=groups.length ; i<ien ; i++ ) { - if ( groups[i].title ) { - hungarianGroups[i].sTitle = groups[i].title; - } - if ( groups[i].columns ) { - hungarianGroups[i].aiColumns = groups[i].columns; - } - } - } - }, - - - /** - * On each table draw, check the visibility checkboxes as needed. This allows any process to - * update the table's column visibility and ColVis will still be accurate. - * @method _fnDrawCallback - * @returns void - * @private - */ - "_fnDrawCallback": function () - { - var columns = this.s.dt.aoColumns; - var buttons = this.dom.buttons; - var groups = this.s.aoGroups; - var button; - - for ( var i=0, ien=buttons.length ; i<ien ; i++ ) { - button = buttons[i]; - - if ( button.__columnIdx !== undefined ) { - $('input', button).prop( 'checked', columns[ button.__columnIdx ].bVisible ); - } - } - - var allVisible = function ( columnIndeces ) { - for ( var k=0, kLen=columnIndeces.length ; k<kLen ; k++ ) - { - if ( columns[columnIndeces[k]].bVisible === false ) { return false; } - } - return true; - }; - var allHidden = function ( columnIndeces ) { - for ( var m=0 , mLen=columnIndeces.length ; m<mLen ; m++ ) - { - if ( columns[columnIndeces[m]].bVisible === true ) { return false; } - } - return true; - }; - - for ( var j=0, jLen=groups.length ; j<jLen ; j++ ) - { - if ( allVisible(groups[j].aiColumns) ) - { - $('input', this.dom.groupButtons[j]).prop('checked', true); - $('input', this.dom.groupButtons[j]).prop('indeterminate', false); - } - else if ( allHidden(groups[j].aiColumns) ) - { - $('input', this.dom.groupButtons[j]).prop('checked', false); - $('input', this.dom.groupButtons[j]).prop('indeterminate', false); - } - else - { - $('input', this.dom.groupButtons[j]).prop('indeterminate', true); - } - } - }, - - - /** - * Loop through the groups (provided in the settings) and create a button for each. - * @method _fnAddgroups - * @returns void - * @private - */ - "_fnAddGroups": function () - { - var nButton; - - if ( typeof this.s.aoGroups != 'undefined' ) - { - for ( var i=0, iLen=this.s.aoGroups.length ; i<iLen ; i++ ) - { - nButton = this._fnDomGroupButton( i ); - this.dom.groupButtons.push( nButton ); - this.dom.buttons.push( nButton ); - this.dom.collection.appendChild( nButton ); - } - } - }, - - - /** - * Loop through the columns in the table and as a new button for each one. - * @method _fnAddButtons - * @returns void - * @private - */ - "_fnAddButtons": function () - { - var - nButton, - columns = this.s.dt.aoColumns; - - if ( $.inArray( 'all', this.s.aiExclude ) === -1 ) { - for ( var i=0, iLen=columns.length ; i<iLen ; i++ ) - { - if ( $.inArray( i, this.s.aiExclude ) === -1 ) - { - nButton = this._fnDomColumnButton( i ); - nButton.__columnIdx = i; - this.dom.buttons.push( nButton ); - } - } - } - - if ( this.s.order === 'alpha' ) { - this.dom.buttons.sort( function ( a, b ) { - var titleA = columns[ a.__columnIdx ].sTitle; - var titleB = columns[ b.__columnIdx ].sTitle; - - return titleA === titleB ? - 0 : - titleA < titleB ? - -1 : - 1; - } ); - } - - if ( this.s.restore ) - { - nButton = this._fnDomRestoreButton(); - nButton.className += " ColVis_Restore"; - this.dom.buttons.push( nButton ); - } - - if ( this.s.showAll ) - { - nButton = this._fnDomShowXButton( this.s.showAll, true ); - nButton.className += " ColVis_ShowAll"; - this.dom.buttons.push( nButton ); - } - - if ( this.s.showNone ) - { - nButton = this._fnDomShowXButton( this.s.showNone, false ); - nButton.className += " ColVis_ShowNone"; - this.dom.buttons.push( nButton ); - } - - $(this.dom.collection).append( this.dom.buttons ); - }, - - - /** - * Create a button which allows a "restore" action - * @method _fnDomRestoreButton - * @returns {Node} Created button - * @private - */ - "_fnDomRestoreButton": function () - { - var - that = this, - dt = this.s.dt; - - return $( - '<li class="ColVis_Special '+(dt.bJUI ? 'ui-button ui-state-default' : '')+'">'+ - this.s.restore+ - '</li>' - ) - .click( function (e) { - for ( var i=0, iLen=that.s.abOriginal.length ; i<iLen ; i++ ) - { - that.s.dt.oInstance.fnSetColumnVis( i, that.s.abOriginal[i], false ); - } - that._fnAdjustOpenRows(); - that.s.dt.oInstance.fnAdjustColumnSizing( false ); - that.s.dt.oInstance.fnDraw( false ); - } )[0]; - }, - - - /** - * Create a button which allows show all and show node actions - * @method _fnDomShowXButton - * @returns {Node} Created button - * @private - */ - "_fnDomShowXButton": function ( str, action ) - { - var - that = this, - dt = this.s.dt; - - return $( - '<li class="ColVis_Special '+(dt.bJUI ? 'ui-button ui-state-default' : '')+'">'+ - str+ - '</li>' - ) - .click( function (e) { - for ( var i=0, iLen=that.s.abOriginal.length ; i<iLen ; i++ ) - { - if (that.s.aiExclude.indexOf(i) === -1) - { - that.s.dt.oInstance.fnSetColumnVis( i, action, false ); - } - } - that._fnAdjustOpenRows(); - that.s.dt.oInstance.fnAdjustColumnSizing( false ); - that.s.dt.oInstance.fnDraw( false ); - } )[0]; - }, - - - /** - * Create the DOM for a show / hide group button - * @method _fnDomGroupButton - * @param {int} i Group in question, order based on that provided in settings - * @returns {Node} Created button - * @private - */ - "_fnDomGroupButton": function ( i ) - { - var - that = this, - dt = this.s.dt, - oGroup = this.s.aoGroups[i]; - - return $( - '<li class="ColVis_Special '+(dt.bJUI ? 'ui-button ui-state-default' : '')+'">'+ - '<label>'+ - '<input type="checkbox" />'+ - '<span>'+oGroup.sTitle+'</span>'+ - '</label>'+ - '</li>' - ) - .click( function (e) { - var showHide = !$('input', this).is(":checked"); - if ( e.target.nodeName.toLowerCase() !== "li" ) - { - showHide = ! showHide; - } - - for ( var j=0 ; j < oGroup.aiColumns.length ; j++ ) - { - that.s.dt.oInstance.fnSetColumnVis( oGroup.aiColumns[j], showHide ); - } - } )[0]; - }, - - - /** - * Create the DOM for a show / hide button - * @method _fnDomColumnButton - * @param {int} i Column in question - * @returns {Node} Created button - * @private - */ - "_fnDomColumnButton": function ( i ) - { - var - that = this, - column = this.s.dt.aoColumns[i], - dt = this.s.dt; - - var title = this.s.fnLabel===null ? - column.sTitle : - this.s.fnLabel( i, column.sTitle, column.nTh ); - - return $( - '<li '+(dt.bJUI ? 'class="ui-button ui-state-default"' : '')+'>'+ - '<label>'+ - '<input type="checkbox" />'+ - '<span>'+title+'</span>'+ - '</label>'+ - '</li>' - ) - .click( function (e) { - var showHide = !$('input', this).is(":checked"); - if ( e.target.nodeName.toLowerCase() !== "li" ) - { - if ( e.target.nodeName.toLowerCase() == "input" || that.s.fnStateChange === null ) - { - showHide = ! showHide; - } - } - - /* Need to consider the case where the initialiser created more than one table - change the - * API index that DataTables is using - */ - var oldIndex = $.fn.dataTableExt.iApiIndex; - $.fn.dataTableExt.iApiIndex = that._fnDataTablesApiIndex.call(that); - - // Optimisation for server-side processing when scrolling - don't do a full redraw - if ( dt.oFeatures.bServerSide ) - { - that.s.dt.oInstance.fnSetColumnVis( i, showHide, false ); - that.s.dt.oInstance.fnAdjustColumnSizing( false ); - if (dt.oScroll.sX !== "" || dt.oScroll.sY !== "" ) - { - that.s.dt.oInstance.oApi._fnScrollDraw( that.s.dt ); - } - that._fnDrawCallback(); - } - else - { - that.s.dt.oInstance.fnSetColumnVis( i, showHide ); - } - - $.fn.dataTableExt.iApiIndex = oldIndex; /* Restore */ - - if ( that.s.fnStateChange !== null ) - { - if ( e.target.nodeName.toLowerCase() == "span" ) - { - e.preventDefault(); - } - that.s.fnStateChange.call( that, i, showHide ); - } - } )[0]; - }, - - - /** - * Get the position in the DataTables instance array of the table for this - * instance of ColVis - * @method _fnDataTablesApiIndex - * @returns {int} Index - * @private - */ - "_fnDataTablesApiIndex": function () - { - for ( var i=0, iLen=this.s.dt.oInstance.length ; i<iLen ; i++ ) - { - if ( this.s.dt.oInstance[i] == this.s.dt.nTable ) - { - return i; - } - } - return 0; - }, - - - /** - * Create the element used to contain list the columns (it is shown and - * hidden as needed) - * @method _fnDomCollection - * @returns {Node} div container for the collection - * @private - */ - "_fnDomCollection": function () - { - return $('<ul />', { - 'class': !this.s.dt.bJUI ? - "ColVis_collection" : - "ColVis_collection ui-buttonset ui-buttonset-multi" - } ) - .css( { - 'display': 'none', - 'opacity': 0, - 'position': ! this.s.bCssPosition ? - 'absolute' : - '' - } )[0]; - }, - - - /** - * An element to be placed on top of the activate button to catch events - * @method _fnDomCatcher - * @returns {Node} div container for the collection - * @private - */ - "_fnDomCatcher": function () - { - var - that = this, - nCatcher = document.createElement('div'); - nCatcher.className = "ColVis_catcher"; - - $(nCatcher).click( function () { - that._fnCollectionHide.call( that, null, null ); - } ); - - return nCatcher; - }, - - - /** - * Create the element used to shade the background, and capture hide events (it is shown and - * hidden as needed) - * @method _fnDomBackground - * @returns {Node} div container for the background - * @private - */ - "_fnDomBackground": function () - { - var that = this; - - var background = $('<div></div>') - .addClass( 'ColVis_collectionBackground' ) - .css( 'opacity', 0 ) - .click( function () { - that._fnCollectionHide.call( that, null, null ); - } ); - - /* When considering a mouse over action for the activation, we also consider a mouse out - * which is the same as a mouse over the background - without all the messing around of - * bubbling events. Use the catcher element to avoid messing around with bubbling - */ - if ( this.s.activate == "mouseover" ) - { - background.mouseover( function () { - that.s.overcollection = false; - that._fnCollectionHide.call( that, null, null ); - } ); - } - - return background[0]; - }, - - - /** - * Show the show / hide list and the background - * @method _fnCollectionShow - * @returns void - * @private - */ - "_fnCollectionShow": function () - { - var that = this, i, iLen, iLeft; - var oPos = $(this.dom.button).offset(); - var nHidden = this.dom.collection; - var nBackground = this.dom.background; - var iDivX = parseInt(oPos.left, 10); - var iDivY = parseInt(oPos.top + $(this.dom.button).outerHeight(), 10); - - if ( ! this.s.bCssPosition ) - { - nHidden.style.top = iDivY+"px"; - nHidden.style.left = iDivX+"px"; - } - - $(nHidden).css( { - 'display': 'block', - 'opacity': 0 - } ); - - nBackground.style.bottom ='0px'; - nBackground.style.right = '0px'; - - var oStyle = this.dom.catcher.style; - oStyle.height = $(this.dom.button).outerHeight()+"px"; - oStyle.width = $(this.dom.button).outerWidth()+"px"; - oStyle.top = oPos.top+"px"; - oStyle.left = iDivX+"px"; - - document.body.appendChild( nBackground ); - document.body.appendChild( nHidden ); - document.body.appendChild( this.dom.catcher ); - - /* This results in a very small delay for the end user but it allows the animation to be - * much smoother. If you don't want the animation, then the setTimeout can be removed - */ - $(nHidden).animate({"opacity": 1}, that.s.iOverlayFade); - $(nBackground).animate({"opacity": 0.1}, that.s.iOverlayFade, 'linear', function () { - /* In IE6 if you set the checked attribute of a hidden checkbox, then this is not visually - * reflected. As such, we need to do it here, once it is visible. Unbelievable. - */ - if ( $.browser && $.browser.msie && $.browser.version == "6.0" ) - { - that._fnDrawCallback(); - } - }); - - /* Visual corrections to try and keep the collection visible */ - if ( !this.s.bCssPosition ) - { - iLeft = ( this.s.sAlign=="left" ) ? - iDivX : - iDivX - $(nHidden).outerWidth() + $(this.dom.button).outerWidth(); - - nHidden.style.left = iLeft+"px"; - - var iDivWidth = $(nHidden).outerWidth(); - var iDivHeight = $(nHidden).outerHeight(); - var iDocWidth = $(document).width(); - - if ( iLeft + iDivWidth > iDocWidth ) - { - nHidden.style.left = (iDocWidth-iDivWidth)+"px"; - } - } - - this.s.hidden = false; - }, - - - /** - * Hide the show / hide list and the background - * @method _fnCollectionHide - * @returns void - * @private - */ - "_fnCollectionHide": function ( ) - { - var that = this; - - if ( !this.s.hidden && this.dom.collection !== null ) - { - this.s.hidden = true; - - $(this.dom.collection).animate({"opacity": 0}, that.s.iOverlayFade, function (e) { - this.style.display = "none"; - } ); - - $(this.dom.background).animate({"opacity": 0}, that.s.iOverlayFade, function (e) { - document.body.removeChild( that.dom.background ); - document.body.removeChild( that.dom.catcher ); - } ); - } - }, - - - /** - * Alter the colspan on any fnOpen rows - */ - "_fnAdjustOpenRows": function () - { - var aoOpen = this.s.dt.aoOpenRows; - var iVisible = this.s.dt.oApi._fnVisbleColumns( this.s.dt ); - - for ( var i=0, iLen=aoOpen.length ; i<iLen ; i++ ) { - aoOpen[i].nTr.getElementsByTagName('td')[0].colSpan = iVisible; - } - } -}; - - - - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Static object methods - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/** - * Rebuild the collection for a given table, or all tables if no parameter given - * @method ColVis.fnRebuild - * @static - * @param object oTable DataTable instance to consider - optional - * @returns void - */ -ColVis.fnRebuild = function ( oTable ) -{ - var nTable = null; - if ( typeof oTable != 'undefined' ) - { - nTable = $.fn.dataTable.Api ? - new $.fn.dataTable.Api( oTable ).table().node() : - oTable.fnSettings().nTable; - } - - for ( var i=0, iLen=ColVis.aInstances.length ; i<iLen ; i++ ) - { - if ( typeof oTable == 'undefined' || nTable == ColVis.aInstances[i].s.dt.nTable ) - { - ColVis.aInstances[i].fnRebuild(); - } - } -}; - - -ColVis.defaults = { - /** - * Mode of activation. Can be 'click' or 'mouseover' - * @property activate - * @type string - * @default click - */ - active: 'click', - - /** - * Text used for the button - * @property buttonText - * @type string - * @default Show / hide columns - */ - buttonText: 'Show / hide columns', - - /** - * List of columns (integers) which should be excluded from the list - * @property aiExclude - * @type array - * @default [] - */ - aiExclude: [], - - /** - * Show restore button - * @property bRestore - * @type boolean - * @default false - */ - bRestore: false, - - /** - * Restore button text - * @property sRestore - * @type string - * @default Restore original - */ - sRestore: 'Restore original', - - /** - * Show Show-All button - * @property bShowAll - * @type boolean - * @default false - */ - bShowAll: false, - - /** - * Show All button text - * @property sShowAll - * @type string - * @default Restore original - */ - sShowAll: 'Show All', - - /** - * Position of the collection menu when shown - align "left" or "right" - * @property sAlign - * @type string - * @default left - */ - sAlign: 'left', - - /** - * Callback function to tell the user when the state has changed - * @property fnStateChange - * @type function - * @default null - */ - fnStateChange: null, - - /** - * Overlay animation duration in mS - * @property iOverlayFade - * @type integer|false - * @default 500 - */ - iOverlayFade: 500, - - /** - * Label callback for column names. Takes three parameters: 1. the - * column index, 2. the column title detected by DataTables and 3. the - * TH node for the column - * @property fnLabel - * @type function - * @default null - */ - fnLabel: null, - - /** - * Indicate if the column list should be positioned by Javascript, - * visually below the button or allow CSS to do the positioning - * @property bCssPosition - * @type boolean - * @default false - */ - bCssPosition: false, - - /** - * Group buttons - * @property aoGroups - * @type array - * @default [] - */ - aoGroups: [], - - /** - * Button ordering - 'alpha' (alphabetical) or 'column' (table column - * order) - * @property order - * @type string - * @default column - */ - order: 'column' -}; - - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Static object properties - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/** - * Collection of all ColVis instances - * @property ColVis.aInstances - * @static - * @type Array - * @default [] - */ -ColVis.aInstances = []; - - - - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Constants - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/** - * Name of this class - * @constant CLASS - * @type String - * @default ColVis - */ -ColVis.prototype.CLASS = "ColVis"; - - -/** - * ColVis version - * @constant VERSION - * @type String - * @default See code - */ -ColVis.VERSION = "1.1.2"; -ColVis.prototype.VERSION = ColVis.VERSION; - - - - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Initialisation - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* - * Register a new feature with DataTables - */ -if ( typeof $.fn.dataTable == "function" && - typeof $.fn.dataTableExt.fnVersionCheck == "function" && - $.fn.dataTableExt.fnVersionCheck('1.7.0') ) -{ - $.fn.dataTableExt.aoFeatures.push( { - "fnInit": function( oDTSettings ) { - var init = oDTSettings.oInit; - var colvis = new ColVis( oDTSettings, init.colVis || init.oColVis || {} ); - return colvis.button(); - }, - "cFeature": "C", - "sFeature": "ColVis" - } ); -} -else -{ - alert( "Warning: ColVis requires DataTables 1.7 or greater - www.datatables.net/download"); -} - - -// Make ColVis accessible from the DataTables instance -$.fn.dataTable.ColVis = ColVis; -$.fn.DataTable.ColVis = ColVis; - - -return ColVis; -}; // /factory - - -// Define as an AMD module if possible -if ( typeof define === 'function' && define.amd ) { - define( ['jquery', 'datatables'], factory ); -} -else if ( typeof exports === 'object' ) { - // Node/CommonJS - factory( require('jquery'), require('datatables') ); -} -else if ( jQuery && !jQuery.fn.dataTable.ColVis ) { - // Otherwise simply initialise as normal, stopping multiple evaluation - factory( jQuery, jQuery.fn.dataTable ); -} - - -})(window, document); - diff --git a/assets/plugins/datatables/extensions/ColVis/js/dataTables.colVis.min.js b/assets/plugins/datatables/extensions/ColVis/js/dataTables.colVis.min.js deleted file mode 100644 index 764b1024..00000000 --- a/assets/plugins/datatables/extensions/ColVis/js/dataTables.colVis.min.js +++ /dev/null @@ -1,24 +0,0 @@ -/*! - ColVis 1.1.2 - ©2010-2015 SpryMedia Ltd - datatables.net/license -*/ -(function(j,i,k){j=function(d){var e=function(a,b){(!this.CLASS||"ColVis"!=this.CLASS)&&alert("Warning: ColVis must be initialised with the keyword 'new'");"undefined"==typeof b&&(b={});var c=d.fn.dataTable.camelToHungarian;c&&(c(e.defaults,e.defaults,!0),c(e.defaults,b));this.s={dt:null,oInit:b,hidden:!0,abOriginal:[]};this.dom={wrapper:null,button:null,collection:null,background:null,catcher:null,buttons:[],groupButtons:[],restore:null};e.aInstances.push(this);this.s.dt=d.fn.dataTable.Api?(new d.fn.dataTable.Api(a)).settings()[0]: -a;this._fnConstruct(b);return this};e.prototype={button:function(){return this.dom.wrapper},fnRebuild:function(){this.rebuild()},rebuild:function(){for(var a=this.dom.buttons.length-1;0<=a;a--)this.dom.collection.removeChild(this.dom.buttons[a]);this.dom.buttons.splice(0,this.dom.buttons.length);this.dom.groupButtons.splice(0,this.dom.groupButtons.length);this.dom.restore&&this.dom.restore.parentNode(this.dom.restore);this._fnAddGroups();this._fnAddButtons();this._fnDrawCallback()},_fnConstruct:function(a){this._fnApplyCustomisation(a); -var b=this,c,f;this.dom.wrapper=i.createElement("div");this.dom.wrapper.className="ColVis";this.dom.button=d("<button />",{"class":!this.s.dt.bJUI?"ColVis_Button ColVis_MasterButton":"ColVis_Button ColVis_MasterButton ui-button ui-state-default"}).append("<span>"+this.s.buttonText+"</span>").bind("mouseover"==this.s.activate?"mouseover":"click",function(a){a.preventDefault();b._fnCollectionShow()}).appendTo(this.dom.wrapper)[0];this.dom.catcher=this._fnDomCatcher();this.dom.collection=this._fnDomCollection(); -this.dom.background=this._fnDomBackground();this._fnAddGroups();this._fnAddButtons();c=0;for(f=this.s.dt.aoColumns.length;c<f;c++)this.s.abOriginal.push(this.s.dt.aoColumns[c].bVisible);this.s.dt.aoDrawCallback.push({fn:function(){b._fnDrawCallback.call(b)},sName:"ColVis"});d(this.s.dt.oInstance).bind("column-reorder.dt",function(a,d,e){c=0;for(f=b.s.aiExclude.length;c<f;c++)b.s.aiExclude[c]=e.aiInvertMapping[b.s.aiExclude[c]];a=b.s.abOriginal.splice(e.iFrom,1)[0];b.s.abOriginal.splice(e.iTo,0,a); -b.fnRebuild()});d(this.s.dt.oInstance).bind("destroy.dt",function(){d(b.dom.wrapper).remove()});this._fnDrawCallback()},_fnApplyCustomisation:function(a){d.extend(!0,this.s,e.defaults,a);!this.s.showAll&&this.s.bShowAll&&(this.s.showAll=this.s.sShowAll);!this.s.restore&&this.s.bRestore&&(this.s.restore=this.s.sRestore);var a=this.s.groups,b=this.s.aoGroups;if(a)for(var c=0,f=a.length;c<f;c++)if(a[c].title&&(b[c].sTitle=a[c].title),a[c].columns)b[c].aiColumns=a[c].columns},_fnDrawCallback:function(){for(var a= -this.s.dt.aoColumns,b=this.dom.buttons,c=this.s.aoGroups,f,g=0,h=b.length;g<h;g++)f=b[g],f.__columnIdx!==k&&d("input",f).prop("checked",a[f.__columnIdx].bVisible);b=0;for(f=c.length;b<f;b++){a:{for(var g=c[b].aiColumns,h=0,e=g.length;h<e;h++)if(!1===a[g[h]].bVisible){g=!1;break a}g=!0}if(g)d("input",this.dom.groupButtons[b]).prop("checked",!0),d("input",this.dom.groupButtons[b]).prop("indeterminate",!1);else{a:{g=c[b].aiColumns;h=0;for(e=g.length;h<e;h++)if(!0===a[g[h]].bVisible){g=!1;break a}g=!0}g? -(d("input",this.dom.groupButtons[b]).prop("checked",!1),d("input",this.dom.groupButtons[b]).prop("indeterminate",!1)):d("input",this.dom.groupButtons[b]).prop("indeterminate",!0)}}},_fnAddGroups:function(){var a;if("undefined"!=typeof this.s.aoGroups)for(var b=0,c=this.s.aoGroups.length;b<c;b++)a=this._fnDomGroupButton(b),this.dom.groupButtons.push(a),this.dom.buttons.push(a),this.dom.collection.appendChild(a)},_fnAddButtons:function(){var a,b=this.s.dt.aoColumns;if(-1===d.inArray("all",this.s.aiExclude))for(var c= -0,f=b.length;c<f;c++)-1===d.inArray(c,this.s.aiExclude)&&(a=this._fnDomColumnButton(c),a.__columnIdx=c,this.dom.buttons.push(a));"alpha"===this.s.order&&this.dom.buttons.sort(function(a,c){var d=b[a.__columnIdx].sTitle,f=b[c.__columnIdx].sTitle;return d===f?0:d<f?-1:1});this.s.restore&&(a=this._fnDomRestoreButton(),a.className+=" ColVis_Restore",this.dom.buttons.push(a));this.s.showAll&&(a=this._fnDomShowXButton(this.s.showAll,!0),a.className+=" ColVis_ShowAll",this.dom.buttons.push(a));this.s.showNone&& -(a=this._fnDomShowXButton(this.s.showNone,!1),a.className+=" ColVis_ShowNone",this.dom.buttons.push(a));d(this.dom.collection).append(this.dom.buttons)},_fnDomRestoreButton:function(){var a=this;return d('<li class="ColVis_Special '+(this.s.dt.bJUI?"ui-button ui-state-default":"")+'">'+this.s.restore+"</li>").click(function(){for(var b=0,c=a.s.abOriginal.length;b<c;b++)a.s.dt.oInstance.fnSetColumnVis(b,a.s.abOriginal[b],!1);a._fnAdjustOpenRows();a.s.dt.oInstance.fnAdjustColumnSizing(!1);a.s.dt.oInstance.fnDraw(!1)})[0]}, -_fnDomShowXButton:function(a,b){var c=this;return d('<li class="ColVis_Special '+(this.s.dt.bJUI?"ui-button ui-state-default":"")+'">'+a+"</li>").click(function(){for(var a=0,d=c.s.abOriginal.length;a<d;a++)-1===c.s.aiExclude.indexOf(a)&&c.s.dt.oInstance.fnSetColumnVis(a,b,!1);c._fnAdjustOpenRows();c.s.dt.oInstance.fnAdjustColumnSizing(!1);c.s.dt.oInstance.fnDraw(!1)})[0]},_fnDomGroupButton:function(a){var b=this,c=this.s.aoGroups[a];return d('<li class="ColVis_Special '+(this.s.dt.bJUI?"ui-button ui-state-default": -"")+'"><label><input type="checkbox" /><span>'+c.sTitle+"</span></label></li>").click(function(a){var g=!d("input",this).is(":checked");"li"!==a.target.nodeName.toLowerCase()&&(g=!g);for(a=0;a<c.aiColumns.length;a++)b.s.dt.oInstance.fnSetColumnVis(c.aiColumns[a],g)})[0]},_fnDomColumnButton:function(a){var b=this,c=this.s.dt.aoColumns[a],f=this.s.dt,c=null===this.s.fnLabel?c.sTitle:this.s.fnLabel(a,c.sTitle,c.nTh);return d("<li "+(f.bJUI?'class="ui-button ui-state-default"':"")+'><label><input type="checkbox" /><span>'+ -c+"</span></label></li>").click(function(c){var e=!d("input",this).is(":checked");if("li"!==c.target.nodeName.toLowerCase()&&("input"==c.target.nodeName.toLowerCase()||null===b.s.fnStateChange))e=!e;var i=d.fn.dataTableExt.iApiIndex;d.fn.dataTableExt.iApiIndex=b._fnDataTablesApiIndex.call(b);f.oFeatures.bServerSide?(b.s.dt.oInstance.fnSetColumnVis(a,e,!1),b.s.dt.oInstance.fnAdjustColumnSizing(!1),(""!==f.oScroll.sX||""!==f.oScroll.sY)&&b.s.dt.oInstance.oApi._fnScrollDraw(b.s.dt),b._fnDrawCallback()): -b.s.dt.oInstance.fnSetColumnVis(a,e);d.fn.dataTableExt.iApiIndex=i;null!==b.s.fnStateChange&&("span"==c.target.nodeName.toLowerCase()&&c.preventDefault(),b.s.fnStateChange.call(b,a,e))})[0]},_fnDataTablesApiIndex:function(){for(var a=0,b=this.s.dt.oInstance.length;a<b;a++)if(this.s.dt.oInstance[a]==this.s.dt.nTable)return a;return 0},_fnDomCollection:function(){return d("<ul />",{"class":!this.s.dt.bJUI?"ColVis_collection":"ColVis_collection ui-buttonset ui-buttonset-multi"}).css({display:"none", -opacity:0,position:!this.s.bCssPosition?"absolute":""})[0]},_fnDomCatcher:function(){var a=this,b=i.createElement("div");b.className="ColVis_catcher";d(b).click(function(){a._fnCollectionHide.call(a,null,null)});return b},_fnDomBackground:function(){var a=this,b=d("<div></div>").addClass("ColVis_collectionBackground").css("opacity",0).click(function(){a._fnCollectionHide.call(a,null,null)});"mouseover"==this.s.activate&&b.mouseover(function(){a.s.overcollection=!1;a._fnCollectionHide.call(a,null, -null)});return b[0]},_fnCollectionShow:function(){var a=this,b;b=d(this.dom.button).offset();var c=this.dom.collection,f=this.dom.background,e=parseInt(b.left,10),h=parseInt(b.top+d(this.dom.button).outerHeight(),10);this.s.bCssPosition||(c.style.top=h+"px",c.style.left=e+"px");d(c).css({display:"block",opacity:0});f.style.bottom="0px";f.style.right="0px";h=this.dom.catcher.style;h.height=d(this.dom.button).outerHeight()+"px";h.width=d(this.dom.button).outerWidth()+"px";h.top=b.top+"px";h.left=e+ -"px";i.body.appendChild(f);i.body.appendChild(c);i.body.appendChild(this.dom.catcher);d(c).animate({opacity:1},a.s.iOverlayFade);d(f).animate({opacity:0.1},a.s.iOverlayFade,"linear",function(){d.browser&&(d.browser.msie&&d.browser.version=="6.0")&&a._fnDrawCallback()});this.s.bCssPosition||(b="left"==this.s.sAlign?e:e-d(c).outerWidth()+d(this.dom.button).outerWidth(),c.style.left=b+"px",f=d(c).outerWidth(),d(c).outerHeight(),e=d(i).width(),b+f>e&&(c.style.left=e-f+"px"));this.s.hidden=!1},_fnCollectionHide:function(){var a= -this;!this.s.hidden&&null!==this.dom.collection&&(this.s.hidden=!0,d(this.dom.collection).animate({opacity:0},a.s.iOverlayFade,function(){this.style.display="none"}),d(this.dom.background).animate({opacity:0},a.s.iOverlayFade,function(){i.body.removeChild(a.dom.background);i.body.removeChild(a.dom.catcher)}))},_fnAdjustOpenRows:function(){for(var a=this.s.dt.aoOpenRows,b=this.s.dt.oApi._fnVisbleColumns(this.s.dt),c=0,d=a.length;c<d;c++)a[c].nTr.getElementsByTagName("td")[0].colSpan=b}};e.fnRebuild= -function(a){var b=null;"undefined"!=typeof a&&(b=d.fn.dataTable.Api?(new d.fn.dataTable.Api(a)).table().node():a.fnSettings().nTable);for(var c=0,f=e.aInstances.length;c<f;c++)("undefined"==typeof a||b==e.aInstances[c].s.dt.nTable)&&e.aInstances[c].fnRebuild()};e.defaults={active:"click",buttonText:"Show / hide columns",aiExclude:[],bRestore:!1,sRestore:"Restore original",bShowAll:!1,sShowAll:"Show All",sAlign:"left",fnStateChange:null,iOverlayFade:500,fnLabel:null,bCssPosition:!1,aoGroups:[],order:"column"}; -e.aInstances=[];e.prototype.CLASS="ColVis";e.VERSION="1.1.2";e.prototype.VERSION=e.VERSION;"function"==typeof d.fn.dataTable&&"function"==typeof d.fn.dataTableExt.fnVersionCheck&&d.fn.dataTableExt.fnVersionCheck("1.7.0")?d.fn.dataTableExt.aoFeatures.push({fnInit:function(a){var b=a.oInit;return(new e(a,b.colVis||b.oColVis||{})).button()},cFeature:"C",sFeature:"ColVis"}):alert("Warning: ColVis requires DataTables 1.7 or greater - www.datatables.net/download");d.fn.dataTable.ColVis=e;return d.fn.DataTable.ColVis= -e};"function"===typeof define&&define.amd?define(["jquery","datatables"],j):"object"===typeof exports?j(require("jquery"),require("datatables")):jQuery&&!jQuery.fn.dataTable.ColVis&&j(jQuery,jQuery.fn.dataTable)})(window,document); diff --git a/assets/plugins/datatables/extensions/FixedColumns/License.txt b/assets/plugins/datatables/extensions/FixedColumns/License.txt deleted file mode 100644 index 9ade2f1b..00000000 --- a/assets/plugins/datatables/extensions/FixedColumns/License.txt +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2010-2015 SpryMedia Limited -http://datatables.net - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/assets/plugins/datatables/extensions/FixedColumns/Readme.md b/assets/plugins/datatables/extensions/FixedColumns/Readme.md deleted file mode 100644 index 15d64c38..00000000 --- a/assets/plugins/datatables/extensions/FixedColumns/Readme.md +++ /dev/null @@ -1,42 +0,0 @@ -# FixedColumns - -When making use of DataTables' x-axis scrolling feature (`scrollX`), you may wish to fix the left or right most columns in place. This plug-in for DataTables provides exactly this option (for non-scrolling tables, please use the FixedHeader plug-in, which can fix headers, footers and columns). Key features include: - -* Freezes the left most column to the side of the table -* Option to freeze two or more columns -* Full integration with DataTables' scrolling options - - -# Installation - -To use FixedColumns, first download DataTables ( http://datatables.net/download ) and place the unzipped FixedColumns package into a `extensions` directory in the DataTables package. This will allow the pages in the examples to operate correctly. To see the examples running, open the `examples` directory in your web-browser. - - -# Basic usage - -FixedColumns is initialised using the `$.fn.dataTable.FixedColumns()` constructor. For example: - -```js -$(document).ready(function() { - var table = $('#example').DataTable( { - scrollY: "300px", - scrollX: true, - scrollCollapse: true, - paging: false - } ); - - new $.fn.dataTable.FixedColumns( table ); -} ); -``` - - -# Documentation / support - -* Documentation: http://datatables.net/extensions/FixedColumns/ -* DataTables support forums: http://datatables.net/forums - - -# GitHub - -If you fancy getting involved with the development of FixedColumns and help make it better, please refer to its GitHub repo: https://github.com/DataTables/FixedColumns - diff --git a/assets/plugins/datatables/extensions/FixedColumns/css/dataTables.fixedColumns.css b/assets/plugins/datatables/extensions/FixedColumns/css/dataTables.fixedColumns.css deleted file mode 100644 index 0d6e18ab..00000000 --- a/assets/plugins/datatables/extensions/FixedColumns/css/dataTables.fixedColumns.css +++ /dev/null @@ -1,25 +0,0 @@ - - -/* Block out what is behind the fixed column's header and footer */ -table.DTFC_Cloned thead, -table.DTFC_Cloned tfoot { - background-color: white; -} - -/* Block out the gap above the scrollbar on the right, when there is a fixed - * right column - */ -div.DTFC_Blocker { - background-color: white; -} - -div.DTFC_LeftWrapper table.dataTable, -div.DTFC_RightWrapper table.dataTable { - margin-bottom: 0; - z-index: 2; -} - -div.DTFC_LeftWrapper table.dataTable.no-footer, -div.DTFC_RightWrapper table.dataTable.no-footer { - border-bottom: none; -} diff --git a/assets/plugins/datatables/extensions/FixedColumns/css/dataTables.fixedColumns.min.css b/assets/plugins/datatables/extensions/FixedColumns/css/dataTables.fixedColumns.min.css deleted file mode 100644 index 71e801b5..00000000 --- a/assets/plugins/datatables/extensions/FixedColumns/css/dataTables.fixedColumns.min.css +++ /dev/null @@ -1 +0,0 @@ -table.DTFC_Cloned thead,table.DTFC_Cloned tfoot{background-color:white}div.DTFC_Blocker{background-color:white}div.DTFC_LeftWrapper table.dataTable,div.DTFC_RightWrapper table.dataTable{margin-bottom:0;z-index:2}div.DTFC_LeftWrapper table.dataTable.no-footer,div.DTFC_RightWrapper table.dataTable.no-footer{border-bottom:none} diff --git a/assets/plugins/datatables/extensions/FixedColumns/examples/bootstrap.html b/assets/plugins/datatables/extensions/FixedColumns/examples/bootstrap.html deleted file mode 100644 index 24ccd3ec..00000000 --- a/assets/plugins/datatables/extensions/FixedColumns/examples/bootstrap.html +++ /dev/null @@ -1,819 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>FixedColumns example - Bootstrap</title> - <link rel="stylesheet" type="text/css" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css"> - <link rel="stylesheet" type="text/css" href="../../Plugins/integration/bootstrap/3/dataTables.bootstrap.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - body { font-size: 140%; } - - /* Ensure that the demo table scrolls */ - th, td { white-space: nowrap; } - div.dataTables_wrapper { - width: 800px; - margin: 0 auto; - } - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.fixedColumns.js"></script> - <script type="text/javascript" language="javascript" src="../../Plugins/integration/bootstrap/3/dataTables.bootstrap.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - var table = $('#example').DataTable( { - scrollY: "300px", - scrollX: true, - scrollCollapse: true, - paging: false - } ); - new $.fn.dataTable.FixedColumns( table ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>FixedColumns example <span>Bootstrap</span></h1> - - <div class="info"> - <p>When displaying a table which scrolls along the x-axis, it can sometimes be useful to the end user for the left most column to be fixed in place, if it shows - grouping, index or similar information. This is basically the same idea as 'freeze columns' in Excel. This can be achieved with the FixedColumns plug-in for - DataTables, as shown below.</p> - - <p>Note that FixedColumns is suitable only for use with the scrolling features in <a href="http://datatables.net">DataTables</a>. If you want to achieve a similar - effect without scrolling enabled, please checkout <a href="http://datatables.net/plug-ins">FixedHeader</a>, also for DataTables.</p> - - <p>FixedColumns is initialised using the constructor <code>new $.fn.dataTable.FixedColumns();</code> - shown below.</p> - </div> - - <table id="example" class="table table-striped table-bordered" cellspacing="0" width="100%"> - <thead> - <tr> - <th>First name</th> - <th>Last name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - <th>Extn.</th> - <th>E-mail</th> - </tr> - </thead> - - <tbody> - <tr> - <td>Tiger</td> - <td>Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - <td>5421</td> - <td>t.nixon@datatables.net</td> - </tr> - <tr> - <td>Garrett</td> - <td>Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - <td>8422</td> - <td>g.winters@datatables.net</td> - </tr> - <tr> - <td>Ashton</td> - <td>Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - <td>1562</td> - <td>a.cox@datatables.net</td> - </tr> - <tr> - <td>Cedric</td> - <td>Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - <td>6224</td> - <td>c.kelly@datatables.net</td> - </tr> - <tr> - <td>Airi</td> - <td>Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - <td>5407</td> - <td>a.satou@datatables.net</td> - </tr> - <tr> - <td>Brielle</td> - <td>Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - <td>4804</td> - <td>b.williamson@datatables.net</td> - </tr> - <tr> - <td>Herrod</td> - <td>Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - <td>9608</td> - <td>h.chandler@datatables.net</td> - </tr> - <tr> - <td>Rhona</td> - <td>Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - <td>6200</td> - <td>r.davidson@datatables.net</td> - </tr> - <tr> - <td>Colleen</td> - <td>Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - <td>2360</td> - <td>c.hurst@datatables.net</td> - </tr> - <tr> - <td>Sonya</td> - <td>Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - <td>1667</td> - <td>s.frost@datatables.net</td> - </tr> - <tr> - <td>Jena</td> - <td>Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - <td>3814</td> - <td>j.gaines@datatables.net</td> - </tr> - <tr> - <td>Quinn</td> - <td>Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - <td>9497</td> - <td>q.flynn@datatables.net</td> - </tr> - <tr> - <td>Charde</td> - <td>Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - <td>6741</td> - <td>c.marshall@datatables.net</td> - </tr> - <tr> - <td>Haley</td> - <td>Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - <td>3597</td> - <td>h.kennedy@datatables.net</td> - </tr> - <tr> - <td>Tatyana</td> - <td>Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - <td>1965</td> - <td>t.fitzpatrick@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - <td>1581</td> - <td>m.silva@datatables.net</td> - </tr> - <tr> - <td>Paul</td> - <td>Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - <td>3059</td> - <td>p.byrd@datatables.net</td> - </tr> - <tr> - <td>Gloria</td> - <td>Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - <td>1721</td> - <td>g.little@datatables.net</td> - </tr> - <tr> - <td>Bradley</td> - <td>Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - <td>2558</td> - <td>b.greer@datatables.net</td> - </tr> - <tr> - <td>Dai</td> - <td>Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - <td>2290</td> - <td>d.rios@datatables.net</td> - </tr> - <tr> - <td>Jenette</td> - <td>Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - <td>1937</td> - <td>j.caldwell@datatables.net</td> - </tr> - <tr> - <td>Yuri</td> - <td>Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - <td>6154</td> - <td>y.berry@datatables.net</td> - </tr> - <tr> - <td>Caesar</td> - <td>Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - <td>8330</td> - <td>c.vance@datatables.net</td> - </tr> - <tr> - <td>Doris</td> - <td>Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - <td>3023</td> - <td>d.wilder@datatables.net</td> - </tr> - <tr> - <td>Angelica</td> - <td>Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - <td>5797</td> - <td>a.ramos@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - <td>8822</td> - <td>g.joyce@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - <td>9239</td> - <td>j.chang@datatables.net</td> - </tr> - <tr> - <td>Brenden</td> - <td>Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - <td>1314</td> - <td>b.wagner@datatables.net</td> - </tr> - <tr> - <td>Fiona</td> - <td>Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - <td>2947</td> - <td>f.green@datatables.net</td> - </tr> - <tr> - <td>Shou</td> - <td>Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - <td>8899</td> - <td>s.itou@datatables.net</td> - </tr> - <tr> - <td>Michelle</td> - <td>House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - <td>2769</td> - <td>m.house@datatables.net</td> - </tr> - <tr> - <td>Suki</td> - <td>Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - <td>6832</td> - <td>s.burks@datatables.net</td> - </tr> - <tr> - <td>Prescott</td> - <td>Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - <td>3606</td> - <td>p.bartlett@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - <td>2860</td> - <td>g.cortez@datatables.net</td> - </tr> - <tr> - <td>Martena</td> - <td>Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - <td>8240</td> - <td>m.mccray@datatables.net</td> - </tr> - <tr> - <td>Unity</td> - <td>Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - <td>5384</td> - <td>u.butler@datatables.net</td> - </tr> - <tr> - <td>Howard</td> - <td>Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - <td>7031</td> - <td>h.hatfield@datatables.net</td> - </tr> - <tr> - <td>Hope</td> - <td>Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - <td>6318</td> - <td>h.fuentes@datatables.net</td> - </tr> - <tr> - <td>Vivian</td> - <td>Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - <td>9422</td> - <td>v.harrell@datatables.net</td> - </tr> - <tr> - <td>Timothy</td> - <td>Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - <td>7580</td> - <td>t.mooney@datatables.net</td> - </tr> - <tr> - <td>Jackson</td> - <td>Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - <td>1042</td> - <td>j.bradshaw@datatables.net</td> - </tr> - <tr> - <td>Olivia</td> - <td>Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - <td>2120</td> - <td>o.liang@datatables.net</td> - </tr> - <tr> - <td>Bruno</td> - <td>Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - <td>6222</td> - <td>b.nash@datatables.net</td> - </tr> - <tr> - <td>Sakura</td> - <td>Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - <td>9383</td> - <td>s.yamamoto@datatables.net</td> - </tr> - <tr> - <td>Thor</td> - <td>Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - <td>8327</td> - <td>t.walton@datatables.net</td> - </tr> - <tr> - <td>Finn</td> - <td>Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - <td>2927</td> - <td>f.camacho@datatables.net</td> - </tr> - <tr> - <td>Serge</td> - <td>Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - <td>8352</td> - <td>s.baldwin@datatables.net</td> - </tr> - <tr> - <td>Zenaida</td> - <td>Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - <td>7439</td> - <td>z.frank@datatables.net</td> - </tr> - <tr> - <td>Zorita</td> - <td>Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - <td>4389</td> - <td>z.serrano@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - <td>3431</td> - <td>j.acosta@datatables.net</td> - </tr> - <tr> - <td>Cara</td> - <td>Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - <td>3990</td> - <td>c.stevens@datatables.net</td> - </tr> - <tr> - <td>Hermione</td> - <td>Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - <td>1016</td> - <td>h.butler@datatables.net</td> - </tr> - <tr> - <td>Lael</td> - <td>Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - <td>6733</td> - <td>l.greer@datatables.net</td> - </tr> - <tr> - <td>Jonas</td> - <td>Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - <td>8196</td> - <td>j.alexander@datatables.net</td> - </tr> - <tr> - <td>Shad</td> - <td>Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - <td>6373</td> - <td>s.decker@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - <td>5384</td> - <td>m.bruce@datatables.net</td> - </tr> - <tr> - <td>Donna</td> - <td>Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - <td>4226</td> - <td>d.snider@datatables.net</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - var table = $('#example').DataTable( { - scrollY: &quot;300px&quot;, - scrollX: true, - scrollCollapse: true, - paging: false - } ); - new $.fn.dataTable.FixedColumns( table ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.fixedColumns.js">../js/dataTables.fixedColumns.js</a></li> - <li><a href="../../Plugins/integration/bootstrap/3/dataTables.bootstrap.js">../../Plugins/integration/bootstrap/3/dataTables.bootstrap.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css">body { font-size: 140%; } - - /* Ensure that the demo table scrolls */ - th, td { white-space: nowrap; } - div.dataTables_wrapper { - width: 800px; - margin: 0 auto; - }</code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css</a></li> - <li><a href="../../Plugins/integration/bootstrap/3/dataTables.bootstrap.css">../../Plugins/integration/bootstrap/3/dataTables.bootstrap.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./left_right_columns.html">Left and right fixed columns</a></li> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./two_columns.html">Multiple fixed columns</a></li> - <li><a href="./right_column.html">Right column only</a></li> - <li><a href="./rowspan.html">Complex headers</a></li> - <li><a href="./colvis.html">ColVis integration</a></li> - <li><a href="./server-side-processing.html">Server-side processing</a></li> - <li><a href="./css_size.html">CSS row sizing</a></li> - <li><a href="./size_fixed.html">Assigned column width</a></li> - <li><a href="./size_fluid.html">Fluid column width</a></li> - <li><a href="./col_filter.html">Individual column filtering</a></li> - <li class="active"><a href="./bootstrap.html">Bootstrap</a></li> - <li><a href="./index_column.html">Index column</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/FixedColumns/examples/col_filter.html b/assets/plugins/datatables/extensions/FixedColumns/examples/col_filter.html deleted file mode 100644 index 6220d8f7..00000000 --- a/assets/plugins/datatables/extensions/FixedColumns/examples/col_filter.html +++ /dev/null @@ -1,857 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>FixedColumns example - Individual column filtering</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.fixedColumns.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - /* Ensure that the demo table scrolls */ - th, td { white-space: nowrap; } - div.dataTables_wrapper { - width: 800px; - margin: 0 auto; - } - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.fixedColumns.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - // Setup - add a text input to each footer cell - $('#example tfoot th').each( function () { - var title = $('#example thead th').eq( $(this).index() ).text(); - $(this).html( '<input type="text" placeholder="Search '+title+'" />' ); - } ); - - // DataTable - var table = $('#example').DataTable( { - scrollY: "300px", - scrollX: true, - scrollCollapse: true, - paging: false - } ); - - // Apply the filter - table.columns().indexes().each( function (idx) { - $( 'input', table.column( idx ).footer() ).on( 'keyup change', function () { - table - .column( idx ) - .search( this.value ) - .draw(); - } ); - } ); - - new $.fn.dataTable.FixedColumns( table ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>FixedColumns example <span>Individual column filtering</span></h1> - - <div class="info"> - <p>This example shows FixedColumns being configured with individual column filtering abilities. Note that the event handler for the filtering is applied to the - <code class="tag" title="HTML tag">input</code> elements before FixedColumns is initialised, so when FixedColumns clones nodes it also copies the event.</p> - </div> - - <table id="example" class="stripe row-border order-column" cellspacing="0" width="100%"> - <thead> - <tr> - <th>First name</th> - <th>Last name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - <th>Extn.</th> - <th>E-mail</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>First name</th> - <th>Last name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - <th>Extn.</th> - <th>E-mail</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger</td> - <td>Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - <td>5421</td> - <td>t.nixon@datatables.net</td> - </tr> - <tr> - <td>Garrett</td> - <td>Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - <td>8422</td> - <td>g.winters@datatables.net</td> - </tr> - <tr> - <td>Ashton</td> - <td>Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - <td>1562</td> - <td>a.cox@datatables.net</td> - </tr> - <tr> - <td>Cedric</td> - <td>Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - <td>6224</td> - <td>c.kelly@datatables.net</td> - </tr> - <tr> - <td>Airi</td> - <td>Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - <td>5407</td> - <td>a.satou@datatables.net</td> - </tr> - <tr> - <td>Brielle</td> - <td>Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - <td>4804</td> - <td>b.williamson@datatables.net</td> - </tr> - <tr> - <td>Herrod</td> - <td>Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - <td>9608</td> - <td>h.chandler@datatables.net</td> - </tr> - <tr> - <td>Rhona</td> - <td>Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - <td>6200</td> - <td>r.davidson@datatables.net</td> - </tr> - <tr> - <td>Colleen</td> - <td>Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - <td>2360</td> - <td>c.hurst@datatables.net</td> - </tr> - <tr> - <td>Sonya</td> - <td>Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - <td>1667</td> - <td>s.frost@datatables.net</td> - </tr> - <tr> - <td>Jena</td> - <td>Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - <td>3814</td> - <td>j.gaines@datatables.net</td> - </tr> - <tr> - <td>Quinn</td> - <td>Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - <td>9497</td> - <td>q.flynn@datatables.net</td> - </tr> - <tr> - <td>Charde</td> - <td>Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - <td>6741</td> - <td>c.marshall@datatables.net</td> - </tr> - <tr> - <td>Haley</td> - <td>Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - <td>3597</td> - <td>h.kennedy@datatables.net</td> - </tr> - <tr> - <td>Tatyana</td> - <td>Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - <td>1965</td> - <td>t.fitzpatrick@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - <td>1581</td> - <td>m.silva@datatables.net</td> - </tr> - <tr> - <td>Paul</td> - <td>Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - <td>3059</td> - <td>p.byrd@datatables.net</td> - </tr> - <tr> - <td>Gloria</td> - <td>Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - <td>1721</td> - <td>g.little@datatables.net</td> - </tr> - <tr> - <td>Bradley</td> - <td>Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - <td>2558</td> - <td>b.greer@datatables.net</td> - </tr> - <tr> - <td>Dai</td> - <td>Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - <td>2290</td> - <td>d.rios@datatables.net</td> - </tr> - <tr> - <td>Jenette</td> - <td>Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - <td>1937</td> - <td>j.caldwell@datatables.net</td> - </tr> - <tr> - <td>Yuri</td> - <td>Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - <td>6154</td> - <td>y.berry@datatables.net</td> - </tr> - <tr> - <td>Caesar</td> - <td>Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - <td>8330</td> - <td>c.vance@datatables.net</td> - </tr> - <tr> - <td>Doris</td> - <td>Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - <td>3023</td> - <td>d.wilder@datatables.net</td> - </tr> - <tr> - <td>Angelica</td> - <td>Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - <td>5797</td> - <td>a.ramos@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - <td>8822</td> - <td>g.joyce@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - <td>9239</td> - <td>j.chang@datatables.net</td> - </tr> - <tr> - <td>Brenden</td> - <td>Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - <td>1314</td> - <td>b.wagner@datatables.net</td> - </tr> - <tr> - <td>Fiona</td> - <td>Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - <td>2947</td> - <td>f.green@datatables.net</td> - </tr> - <tr> - <td>Shou</td> - <td>Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - <td>8899</td> - <td>s.itou@datatables.net</td> - </tr> - <tr> - <td>Michelle</td> - <td>House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - <td>2769</td> - <td>m.house@datatables.net</td> - </tr> - <tr> - <td>Suki</td> - <td>Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - <td>6832</td> - <td>s.burks@datatables.net</td> - </tr> - <tr> - <td>Prescott</td> - <td>Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - <td>3606</td> - <td>p.bartlett@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - <td>2860</td> - <td>g.cortez@datatables.net</td> - </tr> - <tr> - <td>Martena</td> - <td>Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - <td>8240</td> - <td>m.mccray@datatables.net</td> - </tr> - <tr> - <td>Unity</td> - <td>Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - <td>5384</td> - <td>u.butler@datatables.net</td> - </tr> - <tr> - <td>Howard</td> - <td>Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - <td>7031</td> - <td>h.hatfield@datatables.net</td> - </tr> - <tr> - <td>Hope</td> - <td>Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - <td>6318</td> - <td>h.fuentes@datatables.net</td> - </tr> - <tr> - <td>Vivian</td> - <td>Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - <td>9422</td> - <td>v.harrell@datatables.net</td> - </tr> - <tr> - <td>Timothy</td> - <td>Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - <td>7580</td> - <td>t.mooney@datatables.net</td> - </tr> - <tr> - <td>Jackson</td> - <td>Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - <td>1042</td> - <td>j.bradshaw@datatables.net</td> - </tr> - <tr> - <td>Olivia</td> - <td>Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - <td>2120</td> - <td>o.liang@datatables.net</td> - </tr> - <tr> - <td>Bruno</td> - <td>Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - <td>6222</td> - <td>b.nash@datatables.net</td> - </tr> - <tr> - <td>Sakura</td> - <td>Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - <td>9383</td> - <td>s.yamamoto@datatables.net</td> - </tr> - <tr> - <td>Thor</td> - <td>Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - <td>8327</td> - <td>t.walton@datatables.net</td> - </tr> - <tr> - <td>Finn</td> - <td>Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - <td>2927</td> - <td>f.camacho@datatables.net</td> - </tr> - <tr> - <td>Serge</td> - <td>Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - <td>8352</td> - <td>s.baldwin@datatables.net</td> - </tr> - <tr> - <td>Zenaida</td> - <td>Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - <td>7439</td> - <td>z.frank@datatables.net</td> - </tr> - <tr> - <td>Zorita</td> - <td>Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - <td>4389</td> - <td>z.serrano@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - <td>3431</td> - <td>j.acosta@datatables.net</td> - </tr> - <tr> - <td>Cara</td> - <td>Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - <td>3990</td> - <td>c.stevens@datatables.net</td> - </tr> - <tr> - <td>Hermione</td> - <td>Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - <td>1016</td> - <td>h.butler@datatables.net</td> - </tr> - <tr> - <td>Lael</td> - <td>Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - <td>6733</td> - <td>l.greer@datatables.net</td> - </tr> - <tr> - <td>Jonas</td> - <td>Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - <td>8196</td> - <td>j.alexander@datatables.net</td> - </tr> - <tr> - <td>Shad</td> - <td>Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - <td>6373</td> - <td>s.decker@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - <td>5384</td> - <td>m.bruce@datatables.net</td> - </tr> - <tr> - <td>Donna</td> - <td>Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - <td>4226</td> - <td>d.snider@datatables.net</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - // Setup - add a text input to each footer cell - $('#example tfoot th').each( function () { - var title = $('#example thead th').eq( $(this).index() ).text(); - $(this).html( '&lt;input type=&quot;text&quot; placeholder=&quot;Search '+title+'&quot; /&gt;' ); - } ); - - // DataTable - var table = $('#example').DataTable( { - scrollY: &quot;300px&quot;, - scrollX: true, - scrollCollapse: true, - paging: false - } ); - - // Apply the filter - table.columns().indexes().each( function (idx) { - $( 'input', table.column( idx ).footer() ).on( 'keyup change', function () { - table - .column( idx ) - .search( this.value ) - .draw(); - } ); - } ); - - new $.fn.dataTable.FixedColumns( table ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.fixedColumns.js">../js/dataTables.fixedColumns.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css">/* Ensure that the demo table scrolls */ - th, td { white-space: nowrap; } - div.dataTables_wrapper { - width: 800px; - margin: 0 auto; - }</code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.fixedColumns.css">../css/dataTables.fixedColumns.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./left_right_columns.html">Left and right fixed columns</a></li> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./two_columns.html">Multiple fixed columns</a></li> - <li><a href="./right_column.html">Right column only</a></li> - <li><a href="./rowspan.html">Complex headers</a></li> - <li><a href="./colvis.html">ColVis integration</a></li> - <li><a href="./server-side-processing.html">Server-side processing</a></li> - <li><a href="./css_size.html">CSS row sizing</a></li> - <li><a href="./size_fixed.html">Assigned column width</a></li> - <li><a href="./size_fluid.html">Fluid column width</a></li> - <li class="active"><a href="./col_filter.html">Individual column filtering</a></li> - <li><a href="./bootstrap.html">Bootstrap</a></li> - <li><a href="./index_column.html">Index column</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/FixedColumns/examples/colvis.html b/assets/plugins/datatables/extensions/FixedColumns/examples/colvis.html deleted file mode 100644 index e5d0aa70..00000000 --- a/assets/plugins/datatables/extensions/FixedColumns/examples/colvis.html +++ /dev/null @@ -1,833 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>FixedColumns example - ColVis integration</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../../ColVis/css/dataTables.colVis.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.fixedColumns.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - /* Ensure that the demo table scrolls */ - th, td { white-space: nowrap; } - div.dataTables_wrapper { - width: 800px; - margin: 0 auto; - } - - div.ColVis { - float: left; - } - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../../ColVis/js/dataTables.colVis.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.fixedColumns.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - var table = $('#example').DataTable( { - dom: "Cfrtip", - scrollY: "300px", - scrollX: true, - scrollCollapse: true, - paging: false - } ); - - new $.fn.dataTable.FixedColumns( table, { - leftColumns: 2 - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>FixedColumns example <span>ColVis integration</span></h1> - - <div class="info"> - <p>FixedColumns operates with DataTables' built-in column visibility options (<a href="//datatables.net/reference/option/columns.visible"><code class="option" - title="DataTables initialisation option">columns.visible<span>DT</span></code></a> and <a href="//datatables.net/reference/api/column().visible()"><code class= - "api" title="DataTables API method">column().visible()<span>DT</span></code></a>), which columns that are hidden not being shown in the fixed columns. This - integration also means that FixedColumns works well with <a href="http://datatables.net/extensions/colvis">ColVis</a>, with columns that are dynamically shown and - hidden updated immediately in the fixed columns.</p> - - <p>The example below shows ColVis and FixedColumns working together. Two columns have been fixed on the left hand side of the table to show FixedColumns ability to - work effortlessly with column visibility.</p> - </div> - - <table id="example" class="stripe row-border order-column" cellspacing="0" width="100%"> - <thead> - <tr> - <th>First name</th> - <th>Last name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - <th>Extn.</th> - <th>E-mail</th> - </tr> - </thead> - - <tbody> - <tr> - <td>Tiger</td> - <td>Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - <td>5421</td> - <td>t.nixon@datatables.net</td> - </tr> - <tr> - <td>Garrett</td> - <td>Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - <td>8422</td> - <td>g.winters@datatables.net</td> - </tr> - <tr> - <td>Ashton</td> - <td>Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - <td>1562</td> - <td>a.cox@datatables.net</td> - </tr> - <tr> - <td>Cedric</td> - <td>Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - <td>6224</td> - <td>c.kelly@datatables.net</td> - </tr> - <tr> - <td>Airi</td> - <td>Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - <td>5407</td> - <td>a.satou@datatables.net</td> - </tr> - <tr> - <td>Brielle</td> - <td>Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - <td>4804</td> - <td>b.williamson@datatables.net</td> - </tr> - <tr> - <td>Herrod</td> - <td>Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - <td>9608</td> - <td>h.chandler@datatables.net</td> - </tr> - <tr> - <td>Rhona</td> - <td>Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - <td>6200</td> - <td>r.davidson@datatables.net</td> - </tr> - <tr> - <td>Colleen</td> - <td>Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - <td>2360</td> - <td>c.hurst@datatables.net</td> - </tr> - <tr> - <td>Sonya</td> - <td>Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - <td>1667</td> - <td>s.frost@datatables.net</td> - </tr> - <tr> - <td>Jena</td> - <td>Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - <td>3814</td> - <td>j.gaines@datatables.net</td> - </tr> - <tr> - <td>Quinn</td> - <td>Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - <td>9497</td> - <td>q.flynn@datatables.net</td> - </tr> - <tr> - <td>Charde</td> - <td>Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - <td>6741</td> - <td>c.marshall@datatables.net</td> - </tr> - <tr> - <td>Haley</td> - <td>Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - <td>3597</td> - <td>h.kennedy@datatables.net</td> - </tr> - <tr> - <td>Tatyana</td> - <td>Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - <td>1965</td> - <td>t.fitzpatrick@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - <td>1581</td> - <td>m.silva@datatables.net</td> - </tr> - <tr> - <td>Paul</td> - <td>Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - <td>3059</td> - <td>p.byrd@datatables.net</td> - </tr> - <tr> - <td>Gloria</td> - <td>Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - <td>1721</td> - <td>g.little@datatables.net</td> - </tr> - <tr> - <td>Bradley</td> - <td>Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - <td>2558</td> - <td>b.greer@datatables.net</td> - </tr> - <tr> - <td>Dai</td> - <td>Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - <td>2290</td> - <td>d.rios@datatables.net</td> - </tr> - <tr> - <td>Jenette</td> - <td>Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - <td>1937</td> - <td>j.caldwell@datatables.net</td> - </tr> - <tr> - <td>Yuri</td> - <td>Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - <td>6154</td> - <td>y.berry@datatables.net</td> - </tr> - <tr> - <td>Caesar</td> - <td>Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - <td>8330</td> - <td>c.vance@datatables.net</td> - </tr> - <tr> - <td>Doris</td> - <td>Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - <td>3023</td> - <td>d.wilder@datatables.net</td> - </tr> - <tr> - <td>Angelica</td> - <td>Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - <td>5797</td> - <td>a.ramos@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - <td>8822</td> - <td>g.joyce@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - <td>9239</td> - <td>j.chang@datatables.net</td> - </tr> - <tr> - <td>Brenden</td> - <td>Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - <td>1314</td> - <td>b.wagner@datatables.net</td> - </tr> - <tr> - <td>Fiona</td> - <td>Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - <td>2947</td> - <td>f.green@datatables.net</td> - </tr> - <tr> - <td>Shou</td> - <td>Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - <td>8899</td> - <td>s.itou@datatables.net</td> - </tr> - <tr> - <td>Michelle</td> - <td>House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - <td>2769</td> - <td>m.house@datatables.net</td> - </tr> - <tr> - <td>Suki</td> - <td>Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - <td>6832</td> - <td>s.burks@datatables.net</td> - </tr> - <tr> - <td>Prescott</td> - <td>Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - <td>3606</td> - <td>p.bartlett@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - <td>2860</td> - <td>g.cortez@datatables.net</td> - </tr> - <tr> - <td>Martena</td> - <td>Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - <td>8240</td> - <td>m.mccray@datatables.net</td> - </tr> - <tr> - <td>Unity</td> - <td>Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - <td>5384</td> - <td>u.butler@datatables.net</td> - </tr> - <tr> - <td>Howard</td> - <td>Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - <td>7031</td> - <td>h.hatfield@datatables.net</td> - </tr> - <tr> - <td>Hope</td> - <td>Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - <td>6318</td> - <td>h.fuentes@datatables.net</td> - </tr> - <tr> - <td>Vivian</td> - <td>Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - <td>9422</td> - <td>v.harrell@datatables.net</td> - </tr> - <tr> - <td>Timothy</td> - <td>Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - <td>7580</td> - <td>t.mooney@datatables.net</td> - </tr> - <tr> - <td>Jackson</td> - <td>Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - <td>1042</td> - <td>j.bradshaw@datatables.net</td> - </tr> - <tr> - <td>Olivia</td> - <td>Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - <td>2120</td> - <td>o.liang@datatables.net</td> - </tr> - <tr> - <td>Bruno</td> - <td>Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - <td>6222</td> - <td>b.nash@datatables.net</td> - </tr> - <tr> - <td>Sakura</td> - <td>Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - <td>9383</td> - <td>s.yamamoto@datatables.net</td> - </tr> - <tr> - <td>Thor</td> - <td>Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - <td>8327</td> - <td>t.walton@datatables.net</td> - </tr> - <tr> - <td>Finn</td> - <td>Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - <td>2927</td> - <td>f.camacho@datatables.net</td> - </tr> - <tr> - <td>Serge</td> - <td>Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - <td>8352</td> - <td>s.baldwin@datatables.net</td> - </tr> - <tr> - <td>Zenaida</td> - <td>Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - <td>7439</td> - <td>z.frank@datatables.net</td> - </tr> - <tr> - <td>Zorita</td> - <td>Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - <td>4389</td> - <td>z.serrano@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - <td>3431</td> - <td>j.acosta@datatables.net</td> - </tr> - <tr> - <td>Cara</td> - <td>Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - <td>3990</td> - <td>c.stevens@datatables.net</td> - </tr> - <tr> - <td>Hermione</td> - <td>Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - <td>1016</td> - <td>h.butler@datatables.net</td> - </tr> - <tr> - <td>Lael</td> - <td>Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - <td>6733</td> - <td>l.greer@datatables.net</td> - </tr> - <tr> - <td>Jonas</td> - <td>Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - <td>8196</td> - <td>j.alexander@datatables.net</td> - </tr> - <tr> - <td>Shad</td> - <td>Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - <td>6373</td> - <td>s.decker@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - <td>5384</td> - <td>m.bruce@datatables.net</td> - </tr> - <tr> - <td>Donna</td> - <td>Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - <td>4226</td> - <td>d.snider@datatables.net</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - var table = $('#example').DataTable( { - dom: &quot;Cfrtip&quot;, - scrollY: &quot;300px&quot;, - scrollX: true, - scrollCollapse: true, - paging: false - } ); - - new $.fn.dataTable.FixedColumns( table, { - leftColumns: 2 - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../../ColVis/js/dataTables.colVis.js">../../ColVis/js/dataTables.colVis.js</a></li> - <li><a href="../js/dataTables.fixedColumns.js">../js/dataTables.fixedColumns.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css">/* Ensure that the demo table scrolls */ - th, td { white-space: nowrap; } - div.dataTables_wrapper { - width: 800px; - margin: 0 auto; - } - - div.ColVis { - float: left; - }</code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../../ColVis/css/dataTables.colVis.css">../../ColVis/css/dataTables.colVis.css</a></li> - <li><a href="../css/dataTables.fixedColumns.css">../css/dataTables.fixedColumns.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./left_right_columns.html">Left and right fixed columns</a></li> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./two_columns.html">Multiple fixed columns</a></li> - <li><a href="./right_column.html">Right column only</a></li> - <li><a href="./rowspan.html">Complex headers</a></li> - <li class="active"><a href="./colvis.html">ColVis integration</a></li> - <li><a href="./server-side-processing.html">Server-side processing</a></li> - <li><a href="./css_size.html">CSS row sizing</a></li> - <li><a href="./size_fixed.html">Assigned column width</a></li> - <li><a href="./size_fluid.html">Fluid column width</a></li> - <li><a href="./col_filter.html">Individual column filtering</a></li> - <li><a href="./bootstrap.html">Bootstrap</a></li> - <li><a href="./index_column.html">Index column</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/FixedColumns/examples/css_size.html b/assets/plugins/datatables/extensions/FixedColumns/examples/css_size.html deleted file mode 100644 index dfa525ed..00000000 --- a/assets/plugins/datatables/extensions/FixedColumns/examples/css_size.html +++ /dev/null @@ -1,828 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>FixedColumns example - CSS row sizing</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.fixedColumns.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - /* Ensure that the demo table scrolls */ - th, td { white-space: nowrap; } - div.dataTables_wrapper { - width: 800px; - margin: 0 auto; - } - - tr { height: 50px; } - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.fixedColumns.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - var table = $('#example').DataTable( { - scrollY: "300px", - scrollX: true, - scrollCollapse: true, - paging: false - } ); - - new $.fn.dataTable.FixedColumns( table, { - heightMatch: 'none' - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>FixedColumns example <span>CSS row sizing</span></h1> - - <div class="info"> - <p>Because of the method FixedColumns uses to display the fixed columns, an important consideration is the alignment of the rows due to different heights in the - individual rows of the table. There are two different algorithms in FixedColumns which can be used, or you can switch off automatic row sizing all together. This - is controlled through the <code>heightMatch</code> parameter. If can take the following values:</p> - - <ul class="markdown"> - <li><code class="string" title="String">none</code> - no automatic row height matching is performed. CSS can be used in this case and is useful when speed is - of primary importance.</li> - <li><code class="string" title="String">semiauto</code> (default) - the height calculation will be performed once, and the result cached to be used again - (<code>fnRecalculateHeight</code> can be used to force recalculation)</li> - <li><code class="string" title="String">auto</code> - height matching is performed on every draw (slowest but must accurate)</li> - </ul> - - <p>This example shows row height matching switched off but there is a CSS statement of <code>tr { height: 50px }</code> to force all rows to the same height.</p> - </div> - - <table id="example" class="stripe row-border order-column" cellspacing="0" width="100%"> - <thead> - <tr> - <th>First name</th> - <th>Last name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - <th>Extn.</th> - <th>E-mail</th> - </tr> - </thead> - - <tbody> - <tr> - <td>Tiger</td> - <td>Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - <td>5421</td> - <td>t.nixon@datatables.net</td> - </tr> - <tr> - <td>Garrett</td> - <td>Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - <td>8422</td> - <td>g.winters@datatables.net</td> - </tr> - <tr> - <td>Ashton</td> - <td>Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - <td>1562</td> - <td>a.cox@datatables.net</td> - </tr> - <tr> - <td>Cedric</td> - <td>Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - <td>6224</td> - <td>c.kelly@datatables.net</td> - </tr> - <tr> - <td>Airi</td> - <td>Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - <td>5407</td> - <td>a.satou@datatables.net</td> - </tr> - <tr> - <td>Brielle</td> - <td>Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - <td>4804</td> - <td>b.williamson@datatables.net</td> - </tr> - <tr> - <td>Herrod</td> - <td>Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - <td>9608</td> - <td>h.chandler@datatables.net</td> - </tr> - <tr> - <td>Rhona</td> - <td>Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - <td>6200</td> - <td>r.davidson@datatables.net</td> - </tr> - <tr> - <td>Colleen</td> - <td>Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - <td>2360</td> - <td>c.hurst@datatables.net</td> - </tr> - <tr> - <td>Sonya</td> - <td>Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - <td>1667</td> - <td>s.frost@datatables.net</td> - </tr> - <tr> - <td>Jena</td> - <td>Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - <td>3814</td> - <td>j.gaines@datatables.net</td> - </tr> - <tr> - <td>Quinn</td> - <td>Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - <td>9497</td> - <td>q.flynn@datatables.net</td> - </tr> - <tr> - <td>Charde</td> - <td>Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - <td>6741</td> - <td>c.marshall@datatables.net</td> - </tr> - <tr> - <td>Haley</td> - <td>Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - <td>3597</td> - <td>h.kennedy@datatables.net</td> - </tr> - <tr> - <td>Tatyana</td> - <td>Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - <td>1965</td> - <td>t.fitzpatrick@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - <td>1581</td> - <td>m.silva@datatables.net</td> - </tr> - <tr> - <td>Paul</td> - <td>Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - <td>3059</td> - <td>p.byrd@datatables.net</td> - </tr> - <tr> - <td>Gloria</td> - <td>Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - <td>1721</td> - <td>g.little@datatables.net</td> - </tr> - <tr> - <td>Bradley</td> - <td>Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - <td>2558</td> - <td>b.greer@datatables.net</td> - </tr> - <tr> - <td>Dai</td> - <td>Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - <td>2290</td> - <td>d.rios@datatables.net</td> - </tr> - <tr> - <td>Jenette</td> - <td>Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - <td>1937</td> - <td>j.caldwell@datatables.net</td> - </tr> - <tr> - <td>Yuri</td> - <td>Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - <td>6154</td> - <td>y.berry@datatables.net</td> - </tr> - <tr> - <td>Caesar</td> - <td>Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - <td>8330</td> - <td>c.vance@datatables.net</td> - </tr> - <tr> - <td>Doris</td> - <td>Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - <td>3023</td> - <td>d.wilder@datatables.net</td> - </tr> - <tr> - <td>Angelica</td> - <td>Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - <td>5797</td> - <td>a.ramos@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - <td>8822</td> - <td>g.joyce@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - <td>9239</td> - <td>j.chang@datatables.net</td> - </tr> - <tr> - <td>Brenden</td> - <td>Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - <td>1314</td> - <td>b.wagner@datatables.net</td> - </tr> - <tr> - <td>Fiona</td> - <td>Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - <td>2947</td> - <td>f.green@datatables.net</td> - </tr> - <tr> - <td>Shou</td> - <td>Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - <td>8899</td> - <td>s.itou@datatables.net</td> - </tr> - <tr> - <td>Michelle</td> - <td>House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - <td>2769</td> - <td>m.house@datatables.net</td> - </tr> - <tr> - <td>Suki</td> - <td>Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - <td>6832</td> - <td>s.burks@datatables.net</td> - </tr> - <tr> - <td>Prescott</td> - <td>Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - <td>3606</td> - <td>p.bartlett@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - <td>2860</td> - <td>g.cortez@datatables.net</td> - </tr> - <tr> - <td>Martena</td> - <td>Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - <td>8240</td> - <td>m.mccray@datatables.net</td> - </tr> - <tr> - <td>Unity</td> - <td>Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - <td>5384</td> - <td>u.butler@datatables.net</td> - </tr> - <tr> - <td>Howard</td> - <td>Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - <td>7031</td> - <td>h.hatfield@datatables.net</td> - </tr> - <tr> - <td>Hope</td> - <td>Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - <td>6318</td> - <td>h.fuentes@datatables.net</td> - </tr> - <tr> - <td>Vivian</td> - <td>Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - <td>9422</td> - <td>v.harrell@datatables.net</td> - </tr> - <tr> - <td>Timothy</td> - <td>Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - <td>7580</td> - <td>t.mooney@datatables.net</td> - </tr> - <tr> - <td>Jackson</td> - <td>Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - <td>1042</td> - <td>j.bradshaw@datatables.net</td> - </tr> - <tr> - <td>Olivia</td> - <td>Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - <td>2120</td> - <td>o.liang@datatables.net</td> - </tr> - <tr> - <td>Bruno</td> - <td>Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - <td>6222</td> - <td>b.nash@datatables.net</td> - </tr> - <tr> - <td>Sakura</td> - <td>Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - <td>9383</td> - <td>s.yamamoto@datatables.net</td> - </tr> - <tr> - <td>Thor</td> - <td>Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - <td>8327</td> - <td>t.walton@datatables.net</td> - </tr> - <tr> - <td>Finn</td> - <td>Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - <td>2927</td> - <td>f.camacho@datatables.net</td> - </tr> - <tr> - <td>Serge</td> - <td>Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - <td>8352</td> - <td>s.baldwin@datatables.net</td> - </tr> - <tr> - <td>Zenaida</td> - <td>Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - <td>7439</td> - <td>z.frank@datatables.net</td> - </tr> - <tr> - <td>Zorita</td> - <td>Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - <td>4389</td> - <td>z.serrano@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - <td>3431</td> - <td>j.acosta@datatables.net</td> - </tr> - <tr> - <td>Cara</td> - <td>Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - <td>3990</td> - <td>c.stevens@datatables.net</td> - </tr> - <tr> - <td>Hermione</td> - <td>Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - <td>1016</td> - <td>h.butler@datatables.net</td> - </tr> - <tr> - <td>Lael</td> - <td>Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - <td>6733</td> - <td>l.greer@datatables.net</td> - </tr> - <tr> - <td>Jonas</td> - <td>Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - <td>8196</td> - <td>j.alexander@datatables.net</td> - </tr> - <tr> - <td>Shad</td> - <td>Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - <td>6373</td> - <td>s.decker@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - <td>5384</td> - <td>m.bruce@datatables.net</td> - </tr> - <tr> - <td>Donna</td> - <td>Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - <td>4226</td> - <td>d.snider@datatables.net</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - var table = $('#example').DataTable( { - scrollY: &quot;300px&quot;, - scrollX: true, - scrollCollapse: true, - paging: false - } ); - - new $.fn.dataTable.FixedColumns( table, { - heightMatch: 'none' - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.fixedColumns.js">../js/dataTables.fixedColumns.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css">/* Ensure that the demo table scrolls */ - th, td { white-space: nowrap; } - div.dataTables_wrapper { - width: 800px; - margin: 0 auto; - } - - tr { height: 50px; }</code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.fixedColumns.css">../css/dataTables.fixedColumns.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./left_right_columns.html">Left and right fixed columns</a></li> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./two_columns.html">Multiple fixed columns</a></li> - <li><a href="./right_column.html">Right column only</a></li> - <li><a href="./rowspan.html">Complex headers</a></li> - <li><a href="./colvis.html">ColVis integration</a></li> - <li><a href="./server-side-processing.html">Server-side processing</a></li> - <li class="active"><a href="./css_size.html">CSS row sizing</a></li> - <li><a href="./size_fixed.html">Assigned column width</a></li> - <li><a href="./size_fluid.html">Fluid column width</a></li> - <li><a href="./col_filter.html">Individual column filtering</a></li> - <li><a href="./bootstrap.html">Bootstrap</a></li> - <li><a href="./index_column.html">Index column</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/FixedColumns/examples/index.html b/assets/plugins/datatables/extensions/FixedColumns/examples/index.html deleted file mode 100644 index 7cb9a058..00000000 --- a/assets/plugins/datatables/extensions/FixedColumns/examples/index.html +++ /dev/null @@ -1,74 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - - <title>FixedColumns examples - FixedColumns examples</title> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>FixedColumns example <span>FixedColumns examples</span></h1> - - <div class="info"> - <p>When making use of DataTables' x-axis scrolling feature (<a href="//datatables.net/reference/option/scrollX"><code class="option" title= - "DataTables initialisation option">scrollX<span>DT</span></code></a>), you may wish to fix the left or right most columns in place. This extension for DataTables - provides exactly this option (for non-scrolling tables, please use the <a href="//datatables.net/extensions/fixedheader">FixedHeader extension</a>, which can fix - headers, footers and columns). Key features include:</p> - - <ul class="markdown"> - <li>Freezes the left most column to the side of the table</li> - <li>Option to freeze two or more columns</li> - <li>Full integration with DataTables' scrolling options</li> - </ul> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc"> - <li><a href="./left_right_columns.html">Left and right fixed columns</a></li> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./two_columns.html">Multiple fixed columns</a></li> - <li><a href="./right_column.html">Right column only</a></li> - <li><a href="./rowspan.html">Complex headers</a></li> - <li><a href="./colvis.html">ColVis integration</a></li> - <li><a href="./server-side-processing.html">Server-side processing</a></li> - <li><a href="./css_size.html">CSS row sizing</a></li> - <li><a href="./size_fixed.html">Assigned column width</a></li> - <li><a href="./size_fluid.html">Fluid column width</a></li> - <li><a href="./col_filter.html">Individual column filtering</a></li> - <li><a href="./bootstrap.html">Bootstrap</a></li> - <li><a href="./index_column.html">Index column</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/FixedColumns/examples/index_column.html b/assets/plugins/datatables/extensions/FixedColumns/examples/index_column.html deleted file mode 100644 index e61073ec..00000000 --- a/assets/plugins/datatables/extensions/FixedColumns/examples/index_column.html +++ /dev/null @@ -1,932 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>FixedColumns example - Index column</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.fixedColumns.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - /* Ensure that the demo table scrolls */ - th, td { white-space: nowrap; } - div.dataTables_wrapper { - width: 800px; - margin: 0 auto; - } - - /* Styling for the index columns */ - th.index, - td.index { - background-color: white !important; - border-top: 1px solid white !important; - border-bottom: none !important; - } - div.DTFC_LeftHeadWrapper table { - border-bottom: 1px solid white !important; - } - div.DTFC_LeftHeadWrapper th { - border-bottom: 1px solid white !important; - } - div.DTFC_LeftBodyWrapper { - border-right: 1px solid black; - } - div.DTFC_LeftFootWrapper th { - border-top: 1px solid white !important; - } - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.fixedColumns.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - var table = $('#example').DataTable( { - scrollY: "300px", - scrollX: true, - scrollCollapse: true, - paging: false, - columnDefs: [ { - sortable: false, - "class": "index", - targets: 0 - } ], - order: [[ 1, 'asc' ]] - } ); - - table.on( 'order.dt search.dt', function () { - table.column(0, {search:'applied', order:'applied'}).nodes().each( function (cell, i) { - cell.innerHTML = i+1; - } ); - } ).draw(); - - new $.fn.dataTable.FixedColumns( table ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>FixedColumns example <span>Index column</span></h1> - - <div class="info"> - <p>A typical interaction to want to perform with a fixed column, is an index column. A method for how this can be achieved with FixedColumns is shown in this - example, building on the <a href="http://datatables.net/examples/api/counter_column">index column</a> example for DataTables. Also shown in this example is how the - fixed column can be styled with CSS to show it more prominently.</p> - </div> - - <table id="example" class="stripe row-border order-column" cellspacing="0" width="100%"> - <thead> - <tr> - <th></th> - <th>First name</th> - <th>Last name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - <th>Extn.</th> - <th>E-mail</th> - </tr> - </thead> - - <tbody> - <tr> - <td></td> - <td>Tiger</td> - <td>Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - <td>5421</td> - <td>t.nixon@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Garrett</td> - <td>Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - <td>8422</td> - <td>g.winters@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Ashton</td> - <td>Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - <td>1562</td> - <td>a.cox@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Cedric</td> - <td>Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - <td>6224</td> - <td>c.kelly@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Airi</td> - <td>Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - <td>5407</td> - <td>a.satou@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Brielle</td> - <td>Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - <td>4804</td> - <td>b.williamson@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Herrod</td> - <td>Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - <td>9608</td> - <td>h.chandler@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Rhona</td> - <td>Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - <td>6200</td> - <td>r.davidson@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Colleen</td> - <td>Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - <td>2360</td> - <td>c.hurst@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Sonya</td> - <td>Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - <td>1667</td> - <td>s.frost@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Jena</td> - <td>Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - <td>3814</td> - <td>j.gaines@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Quinn</td> - <td>Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - <td>9497</td> - <td>q.flynn@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Charde</td> - <td>Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - <td>6741</td> - <td>c.marshall@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Haley</td> - <td>Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - <td>3597</td> - <td>h.kennedy@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Tatyana</td> - <td>Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - <td>1965</td> - <td>t.fitzpatrick@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Michael</td> - <td>Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - <td>1581</td> - <td>m.silva@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Paul</td> - <td>Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - <td>3059</td> - <td>p.byrd@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Gloria</td> - <td>Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - <td>1721</td> - <td>g.little@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Bradley</td> - <td>Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - <td>2558</td> - <td>b.greer@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Dai</td> - <td>Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - <td>2290</td> - <td>d.rios@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Jenette</td> - <td>Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - <td>1937</td> - <td>j.caldwell@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Yuri</td> - <td>Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - <td>6154</td> - <td>y.berry@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Caesar</td> - <td>Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - <td>8330</td> - <td>c.vance@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Doris</td> - <td>Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - <td>3023</td> - <td>d.wilder@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Angelica</td> - <td>Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - <td>5797</td> - <td>a.ramos@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Gavin</td> - <td>Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - <td>8822</td> - <td>g.joyce@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Jennifer</td> - <td>Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - <td>9239</td> - <td>j.chang@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Brenden</td> - <td>Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - <td>1314</td> - <td>b.wagner@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Fiona</td> - <td>Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - <td>2947</td> - <td>f.green@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Shou</td> - <td>Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - <td>8899</td> - <td>s.itou@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Michelle</td> - <td>House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - <td>2769</td> - <td>m.house@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Suki</td> - <td>Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - <td>6832</td> - <td>s.burks@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Prescott</td> - <td>Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - <td>3606</td> - <td>p.bartlett@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Gavin</td> - <td>Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - <td>2860</td> - <td>g.cortez@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Martena</td> - <td>Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - <td>8240</td> - <td>m.mccray@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Unity</td> - <td>Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - <td>5384</td> - <td>u.butler@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Howard</td> - <td>Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - <td>7031</td> - <td>h.hatfield@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Hope</td> - <td>Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - <td>6318</td> - <td>h.fuentes@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Vivian</td> - <td>Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - <td>9422</td> - <td>v.harrell@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Timothy</td> - <td>Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - <td>7580</td> - <td>t.mooney@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Jackson</td> - <td>Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - <td>1042</td> - <td>j.bradshaw@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Olivia</td> - <td>Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - <td>2120</td> - <td>o.liang@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Bruno</td> - <td>Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - <td>6222</td> - <td>b.nash@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Sakura</td> - <td>Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - <td>9383</td> - <td>s.yamamoto@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Thor</td> - <td>Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - <td>8327</td> - <td>t.walton@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Finn</td> - <td>Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - <td>2927</td> - <td>f.camacho@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Serge</td> - <td>Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - <td>8352</td> - <td>s.baldwin@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Zenaida</td> - <td>Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - <td>7439</td> - <td>z.frank@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Zorita</td> - <td>Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - <td>4389</td> - <td>z.serrano@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Jennifer</td> - <td>Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - <td>3431</td> - <td>j.acosta@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Cara</td> - <td>Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - <td>3990</td> - <td>c.stevens@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Hermione</td> - <td>Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - <td>1016</td> - <td>h.butler@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Lael</td> - <td>Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - <td>6733</td> - <td>l.greer@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Jonas</td> - <td>Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - <td>8196</td> - <td>j.alexander@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Shad</td> - <td>Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - <td>6373</td> - <td>s.decker@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Michael</td> - <td>Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - <td>5384</td> - <td>m.bruce@datatables.net</td> - </tr> - <tr> - <td></td> - <td>Donna</td> - <td>Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - <td>4226</td> - <td>d.snider@datatables.net</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - var table = $('#example').DataTable( { - scrollY: &quot;300px&quot;, - scrollX: true, - scrollCollapse: true, - paging: false, - columnDefs: [ { - sortable: false, - &quot;class&quot;: &quot;index&quot;, - targets: 0 - } ], - order: [[ 1, 'asc' ]] - } ); - - table.on( 'order.dt search.dt', function () { - table.column(0, {search:'applied', order:'applied'}).nodes().each( function (cell, i) { - cell.innerHTML = i+1; - } ); - } ).draw(); - - new $.fn.dataTable.FixedColumns( table ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.fixedColumns.js">../js/dataTables.fixedColumns.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css">/* Ensure that the demo table scrolls */ - th, td { white-space: nowrap; } - div.dataTables_wrapper { - width: 800px; - margin: 0 auto; - } - - /* Styling for the index columns */ - th.index, - td.index { - background-color: white !important; - border-top: 1px solid white !important; - border-bottom: none !important; - } - div.DTFC_LeftHeadWrapper table { - border-bottom: 1px solid white !important; - } - div.DTFC_LeftHeadWrapper th { - border-bottom: 1px solid white !important; - } - div.DTFC_LeftBodyWrapper { - border-right: 1px solid black; - } - div.DTFC_LeftFootWrapper th { - border-top: 1px solid white !important; - }</code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.fixedColumns.css">../css/dataTables.fixedColumns.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./left_right_columns.html">Left and right fixed columns</a></li> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./two_columns.html">Multiple fixed columns</a></li> - <li><a href="./right_column.html">Right column only</a></li> - <li><a href="./rowspan.html">Complex headers</a></li> - <li><a href="./colvis.html">ColVis integration</a></li> - <li><a href="./server-side-processing.html">Server-side processing</a></li> - <li><a href="./css_size.html">CSS row sizing</a></li> - <li><a href="./size_fixed.html">Assigned column width</a></li> - <li><a href="./size_fluid.html">Fluid column width</a></li> - <li><a href="./col_filter.html">Individual column filtering</a></li> - <li><a href="./bootstrap.html">Bootstrap</a></li> - <li class="active"><a href="./index_column.html">Index column</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/FixedColumns/examples/left_right_columns.html b/assets/plugins/datatables/extensions/FixedColumns/examples/left_right_columns.html deleted file mode 100644 index f92789c4..00000000 --- a/assets/plugins/datatables/extensions/FixedColumns/examples/left_right_columns.html +++ /dev/null @@ -1,816 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>FixedColumns example - Left and right fixed columns</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.fixedColumns.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - /* Ensure that the demo table scrolls */ - th, td { white-space: nowrap; } - div.dataTables_wrapper { - width: 800px; - margin: 0 auto; - } - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.fixedColumns.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - var table = $('#example').DataTable( { - scrollY: "300px", - scrollX: true, - scrollCollapse: true, - paging: false - } ); - - new $.fn.dataTable.FixedColumns( table, { - leftColumns: 1, - rightColumns: 1 - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>FixedColumns example <span>Left and right fixed columns</span></h1> - - <div class="info"> - <p>FixedColumns allows columns to be fixed from both the left and right hand sides of the table. Fixing right hand-side columns is done by using the - <code>rightColumns</code> initialisation parameter, which works just the same as <code>leftColumns</code> does for the left side of the table. This example shows - both the left and right columns being fixed in place.</p> - </div> - - <table id="example" class="stripe row-border order-column" cellspacing="0" width="100%"> - <thead> - <tr> - <th>First name</th> - <th>Last name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - <th>Extn.</th> - <th>E-mail</th> - </tr> - </thead> - - <tbody> - <tr> - <td>Tiger</td> - <td>Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - <td>5421</td> - <td>t.nixon@datatables.net</td> - </tr> - <tr> - <td>Garrett</td> - <td>Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - <td>8422</td> - <td>g.winters@datatables.net</td> - </tr> - <tr> - <td>Ashton</td> - <td>Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - <td>1562</td> - <td>a.cox@datatables.net</td> - </tr> - <tr> - <td>Cedric</td> - <td>Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - <td>6224</td> - <td>c.kelly@datatables.net</td> - </tr> - <tr> - <td>Airi</td> - <td>Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - <td>5407</td> - <td>a.satou@datatables.net</td> - </tr> - <tr> - <td>Brielle</td> - <td>Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - <td>4804</td> - <td>b.williamson@datatables.net</td> - </tr> - <tr> - <td>Herrod</td> - <td>Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - <td>9608</td> - <td>h.chandler@datatables.net</td> - </tr> - <tr> - <td>Rhona</td> - <td>Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - <td>6200</td> - <td>r.davidson@datatables.net</td> - </tr> - <tr> - <td>Colleen</td> - <td>Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - <td>2360</td> - <td>c.hurst@datatables.net</td> - </tr> - <tr> - <td>Sonya</td> - <td>Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - <td>1667</td> - <td>s.frost@datatables.net</td> - </tr> - <tr> - <td>Jena</td> - <td>Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - <td>3814</td> - <td>j.gaines@datatables.net</td> - </tr> - <tr> - <td>Quinn</td> - <td>Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - <td>9497</td> - <td>q.flynn@datatables.net</td> - </tr> - <tr> - <td>Charde</td> - <td>Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - <td>6741</td> - <td>c.marshall@datatables.net</td> - </tr> - <tr> - <td>Haley</td> - <td>Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - <td>3597</td> - <td>h.kennedy@datatables.net</td> - </tr> - <tr> - <td>Tatyana</td> - <td>Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - <td>1965</td> - <td>t.fitzpatrick@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - <td>1581</td> - <td>m.silva@datatables.net</td> - </tr> - <tr> - <td>Paul</td> - <td>Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - <td>3059</td> - <td>p.byrd@datatables.net</td> - </tr> - <tr> - <td>Gloria</td> - <td>Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - <td>1721</td> - <td>g.little@datatables.net</td> - </tr> - <tr> - <td>Bradley</td> - <td>Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - <td>2558</td> - <td>b.greer@datatables.net</td> - </tr> - <tr> - <td>Dai</td> - <td>Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - <td>2290</td> - <td>d.rios@datatables.net</td> - </tr> - <tr> - <td>Jenette</td> - <td>Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - <td>1937</td> - <td>j.caldwell@datatables.net</td> - </tr> - <tr> - <td>Yuri</td> - <td>Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - <td>6154</td> - <td>y.berry@datatables.net</td> - </tr> - <tr> - <td>Caesar</td> - <td>Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - <td>8330</td> - <td>c.vance@datatables.net</td> - </tr> - <tr> - <td>Doris</td> - <td>Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - <td>3023</td> - <td>d.wilder@datatables.net</td> - </tr> - <tr> - <td>Angelica</td> - <td>Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - <td>5797</td> - <td>a.ramos@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - <td>8822</td> - <td>g.joyce@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - <td>9239</td> - <td>j.chang@datatables.net</td> - </tr> - <tr> - <td>Brenden</td> - <td>Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - <td>1314</td> - <td>b.wagner@datatables.net</td> - </tr> - <tr> - <td>Fiona</td> - <td>Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - <td>2947</td> - <td>f.green@datatables.net</td> - </tr> - <tr> - <td>Shou</td> - <td>Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - <td>8899</td> - <td>s.itou@datatables.net</td> - </tr> - <tr> - <td>Michelle</td> - <td>House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - <td>2769</td> - <td>m.house@datatables.net</td> - </tr> - <tr> - <td>Suki</td> - <td>Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - <td>6832</td> - <td>s.burks@datatables.net</td> - </tr> - <tr> - <td>Prescott</td> - <td>Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - <td>3606</td> - <td>p.bartlett@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - <td>2860</td> - <td>g.cortez@datatables.net</td> - </tr> - <tr> - <td>Martena</td> - <td>Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - <td>8240</td> - <td>m.mccray@datatables.net</td> - </tr> - <tr> - <td>Unity</td> - <td>Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - <td>5384</td> - <td>u.butler@datatables.net</td> - </tr> - <tr> - <td>Howard</td> - <td>Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - <td>7031</td> - <td>h.hatfield@datatables.net</td> - </tr> - <tr> - <td>Hope</td> - <td>Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - <td>6318</td> - <td>h.fuentes@datatables.net</td> - </tr> - <tr> - <td>Vivian</td> - <td>Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - <td>9422</td> - <td>v.harrell@datatables.net</td> - </tr> - <tr> - <td>Timothy</td> - <td>Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - <td>7580</td> - <td>t.mooney@datatables.net</td> - </tr> - <tr> - <td>Jackson</td> - <td>Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - <td>1042</td> - <td>j.bradshaw@datatables.net</td> - </tr> - <tr> - <td>Olivia</td> - <td>Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - <td>2120</td> - <td>o.liang@datatables.net</td> - </tr> - <tr> - <td>Bruno</td> - <td>Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - <td>6222</td> - <td>b.nash@datatables.net</td> - </tr> - <tr> - <td>Sakura</td> - <td>Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - <td>9383</td> - <td>s.yamamoto@datatables.net</td> - </tr> - <tr> - <td>Thor</td> - <td>Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - <td>8327</td> - <td>t.walton@datatables.net</td> - </tr> - <tr> - <td>Finn</td> - <td>Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - <td>2927</td> - <td>f.camacho@datatables.net</td> - </tr> - <tr> - <td>Serge</td> - <td>Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - <td>8352</td> - <td>s.baldwin@datatables.net</td> - </tr> - <tr> - <td>Zenaida</td> - <td>Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - <td>7439</td> - <td>z.frank@datatables.net</td> - </tr> - <tr> - <td>Zorita</td> - <td>Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - <td>4389</td> - <td>z.serrano@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - <td>3431</td> - <td>j.acosta@datatables.net</td> - </tr> - <tr> - <td>Cara</td> - <td>Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - <td>3990</td> - <td>c.stevens@datatables.net</td> - </tr> - <tr> - <td>Hermione</td> - <td>Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - <td>1016</td> - <td>h.butler@datatables.net</td> - </tr> - <tr> - <td>Lael</td> - <td>Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - <td>6733</td> - <td>l.greer@datatables.net</td> - </tr> - <tr> - <td>Jonas</td> - <td>Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - <td>8196</td> - <td>j.alexander@datatables.net</td> - </tr> - <tr> - <td>Shad</td> - <td>Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - <td>6373</td> - <td>s.decker@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - <td>5384</td> - <td>m.bruce@datatables.net</td> - </tr> - <tr> - <td>Donna</td> - <td>Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - <td>4226</td> - <td>d.snider@datatables.net</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - var table = $('#example').DataTable( { - scrollY: &quot;300px&quot;, - scrollX: true, - scrollCollapse: true, - paging: false - } ); - - new $.fn.dataTable.FixedColumns( table, { - leftColumns: 1, - rightColumns: 1 - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.fixedColumns.js">../js/dataTables.fixedColumns.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css">/* Ensure that the demo table scrolls */ - th, td { white-space: nowrap; } - div.dataTables_wrapper { - width: 800px; - margin: 0 auto; - }</code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.fixedColumns.css">../css/dataTables.fixedColumns.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li class="active"><a href="./left_right_columns.html">Left and right fixed columns</a></li> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./two_columns.html">Multiple fixed columns</a></li> - <li><a href="./right_column.html">Right column only</a></li> - <li><a href="./rowspan.html">Complex headers</a></li> - <li><a href="./colvis.html">ColVis integration</a></li> - <li><a href="./server-side-processing.html">Server-side processing</a></li> - <li><a href="./css_size.html">CSS row sizing</a></li> - <li><a href="./size_fixed.html">Assigned column width</a></li> - <li><a href="./size_fluid.html">Fluid column width</a></li> - <li><a href="./col_filter.html">Individual column filtering</a></li> - <li><a href="./bootstrap.html">Bootstrap</a></li> - <li><a href="./index_column.html">Index column</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/FixedColumns/examples/right_column.html b/assets/plugins/datatables/extensions/FixedColumns/examples/right_column.html deleted file mode 100644 index d6bf0f80..00000000 --- a/assets/plugins/datatables/extensions/FixedColumns/examples/right_column.html +++ /dev/null @@ -1,816 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>FixedColumns example - Right column only</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.fixedColumns.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - /* Ensure that the demo table scrolls */ - th, td { white-space: nowrap; } - div.dataTables_wrapper { - width: 800px; - margin: 0 auto; - } - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.fixedColumns.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - var table = $('#example').DataTable( { - scrollY: "300px", - scrollX: true, - scrollCollapse: true, - paging: false - } ); - - new $.fn.dataTable.FixedColumns( table, { - leftColumns: 0, - rightColumns: 1 - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>FixedColumns example <span>Right column only</span></h1> - - <div class="info"> - <p>FixedColumns has the ability to freeze columns on both the left and right hand sides of the table. By default it will fix the first column on the left, but - using the initialisation parameters <code>leftColumns</code> and <code>rightColumns</code> you can alter this to fix the columns on the right as well. This example - shows a single column fixed in place, in this case the right most column.</p> - </div> - - <table id="example" class="stripe row-border order-column" cellspacing="0" width="100%"> - <thead> - <tr> - <th>First name</th> - <th>Last name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - <th>Extn.</th> - <th>E-mail</th> - </tr> - </thead> - - <tbody> - <tr> - <td>Tiger</td> - <td>Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - <td>5421</td> - <td>t.nixon@datatables.net</td> - </tr> - <tr> - <td>Garrett</td> - <td>Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - <td>8422</td> - <td>g.winters@datatables.net</td> - </tr> - <tr> - <td>Ashton</td> - <td>Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - <td>1562</td> - <td>a.cox@datatables.net</td> - </tr> - <tr> - <td>Cedric</td> - <td>Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - <td>6224</td> - <td>c.kelly@datatables.net</td> - </tr> - <tr> - <td>Airi</td> - <td>Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - <td>5407</td> - <td>a.satou@datatables.net</td> - </tr> - <tr> - <td>Brielle</td> - <td>Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - <td>4804</td> - <td>b.williamson@datatables.net</td> - </tr> - <tr> - <td>Herrod</td> - <td>Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - <td>9608</td> - <td>h.chandler@datatables.net</td> - </tr> - <tr> - <td>Rhona</td> - <td>Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - <td>6200</td> - <td>r.davidson@datatables.net</td> - </tr> - <tr> - <td>Colleen</td> - <td>Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - <td>2360</td> - <td>c.hurst@datatables.net</td> - </tr> - <tr> - <td>Sonya</td> - <td>Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - <td>1667</td> - <td>s.frost@datatables.net</td> - </tr> - <tr> - <td>Jena</td> - <td>Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - <td>3814</td> - <td>j.gaines@datatables.net</td> - </tr> - <tr> - <td>Quinn</td> - <td>Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - <td>9497</td> - <td>q.flynn@datatables.net</td> - </tr> - <tr> - <td>Charde</td> - <td>Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - <td>6741</td> - <td>c.marshall@datatables.net</td> - </tr> - <tr> - <td>Haley</td> - <td>Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - <td>3597</td> - <td>h.kennedy@datatables.net</td> - </tr> - <tr> - <td>Tatyana</td> - <td>Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - <td>1965</td> - <td>t.fitzpatrick@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - <td>1581</td> - <td>m.silva@datatables.net</td> - </tr> - <tr> - <td>Paul</td> - <td>Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - <td>3059</td> - <td>p.byrd@datatables.net</td> - </tr> - <tr> - <td>Gloria</td> - <td>Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - <td>1721</td> - <td>g.little@datatables.net</td> - </tr> - <tr> - <td>Bradley</td> - <td>Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - <td>2558</td> - <td>b.greer@datatables.net</td> - </tr> - <tr> - <td>Dai</td> - <td>Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - <td>2290</td> - <td>d.rios@datatables.net</td> - </tr> - <tr> - <td>Jenette</td> - <td>Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - <td>1937</td> - <td>j.caldwell@datatables.net</td> - </tr> - <tr> - <td>Yuri</td> - <td>Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - <td>6154</td> - <td>y.berry@datatables.net</td> - </tr> - <tr> - <td>Caesar</td> - <td>Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - <td>8330</td> - <td>c.vance@datatables.net</td> - </tr> - <tr> - <td>Doris</td> - <td>Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - <td>3023</td> - <td>d.wilder@datatables.net</td> - </tr> - <tr> - <td>Angelica</td> - <td>Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - <td>5797</td> - <td>a.ramos@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - <td>8822</td> - <td>g.joyce@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - <td>9239</td> - <td>j.chang@datatables.net</td> - </tr> - <tr> - <td>Brenden</td> - <td>Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - <td>1314</td> - <td>b.wagner@datatables.net</td> - </tr> - <tr> - <td>Fiona</td> - <td>Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - <td>2947</td> - <td>f.green@datatables.net</td> - </tr> - <tr> - <td>Shou</td> - <td>Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - <td>8899</td> - <td>s.itou@datatables.net</td> - </tr> - <tr> - <td>Michelle</td> - <td>House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - <td>2769</td> - <td>m.house@datatables.net</td> - </tr> - <tr> - <td>Suki</td> - <td>Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - <td>6832</td> - <td>s.burks@datatables.net</td> - </tr> - <tr> - <td>Prescott</td> - <td>Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - <td>3606</td> - <td>p.bartlett@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - <td>2860</td> - <td>g.cortez@datatables.net</td> - </tr> - <tr> - <td>Martena</td> - <td>Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - <td>8240</td> - <td>m.mccray@datatables.net</td> - </tr> - <tr> - <td>Unity</td> - <td>Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - <td>5384</td> - <td>u.butler@datatables.net</td> - </tr> - <tr> - <td>Howard</td> - <td>Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - <td>7031</td> - <td>h.hatfield@datatables.net</td> - </tr> - <tr> - <td>Hope</td> - <td>Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - <td>6318</td> - <td>h.fuentes@datatables.net</td> - </tr> - <tr> - <td>Vivian</td> - <td>Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - <td>9422</td> - <td>v.harrell@datatables.net</td> - </tr> - <tr> - <td>Timothy</td> - <td>Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - <td>7580</td> - <td>t.mooney@datatables.net</td> - </tr> - <tr> - <td>Jackson</td> - <td>Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - <td>1042</td> - <td>j.bradshaw@datatables.net</td> - </tr> - <tr> - <td>Olivia</td> - <td>Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - <td>2120</td> - <td>o.liang@datatables.net</td> - </tr> - <tr> - <td>Bruno</td> - <td>Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - <td>6222</td> - <td>b.nash@datatables.net</td> - </tr> - <tr> - <td>Sakura</td> - <td>Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - <td>9383</td> - <td>s.yamamoto@datatables.net</td> - </tr> - <tr> - <td>Thor</td> - <td>Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - <td>8327</td> - <td>t.walton@datatables.net</td> - </tr> - <tr> - <td>Finn</td> - <td>Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - <td>2927</td> - <td>f.camacho@datatables.net</td> - </tr> - <tr> - <td>Serge</td> - <td>Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - <td>8352</td> - <td>s.baldwin@datatables.net</td> - </tr> - <tr> - <td>Zenaida</td> - <td>Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - <td>7439</td> - <td>z.frank@datatables.net</td> - </tr> - <tr> - <td>Zorita</td> - <td>Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - <td>4389</td> - <td>z.serrano@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - <td>3431</td> - <td>j.acosta@datatables.net</td> - </tr> - <tr> - <td>Cara</td> - <td>Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - <td>3990</td> - <td>c.stevens@datatables.net</td> - </tr> - <tr> - <td>Hermione</td> - <td>Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - <td>1016</td> - <td>h.butler@datatables.net</td> - </tr> - <tr> - <td>Lael</td> - <td>Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - <td>6733</td> - <td>l.greer@datatables.net</td> - </tr> - <tr> - <td>Jonas</td> - <td>Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - <td>8196</td> - <td>j.alexander@datatables.net</td> - </tr> - <tr> - <td>Shad</td> - <td>Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - <td>6373</td> - <td>s.decker@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - <td>5384</td> - <td>m.bruce@datatables.net</td> - </tr> - <tr> - <td>Donna</td> - <td>Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - <td>4226</td> - <td>d.snider@datatables.net</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - var table = $('#example').DataTable( { - scrollY: &quot;300px&quot;, - scrollX: true, - scrollCollapse: true, - paging: false - } ); - - new $.fn.dataTable.FixedColumns( table, { - leftColumns: 0, - rightColumns: 1 - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.fixedColumns.js">../js/dataTables.fixedColumns.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css">/* Ensure that the demo table scrolls */ - th, td { white-space: nowrap; } - div.dataTables_wrapper { - width: 800px; - margin: 0 auto; - }</code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.fixedColumns.css">../css/dataTables.fixedColumns.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./left_right_columns.html">Left and right fixed columns</a></li> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./two_columns.html">Multiple fixed columns</a></li> - <li class="active"><a href="./right_column.html">Right column only</a></li> - <li><a href="./rowspan.html">Complex headers</a></li> - <li><a href="./colvis.html">ColVis integration</a></li> - <li><a href="./server-side-processing.html">Server-side processing</a></li> - <li><a href="./css_size.html">CSS row sizing</a></li> - <li><a href="./size_fixed.html">Assigned column width</a></li> - <li><a href="./size_fluid.html">Fluid column width</a></li> - <li><a href="./col_filter.html">Individual column filtering</a></li> - <li><a href="./bootstrap.html">Bootstrap</a></li> - <li><a href="./index_column.html">Index column</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/FixedColumns/examples/rowspan.html b/assets/plugins/datatables/extensions/FixedColumns/examples/rowspan.html deleted file mode 100644 index 08085e60..00000000 --- a/assets/plugins/datatables/extensions/FixedColumns/examples/rowspan.html +++ /dev/null @@ -1,657 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>FixedColumns example - Complex headers</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.fixedColumns.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - /* Ensure that the demo table scrolls */ - th, td { - white-space: nowrap; - padding-left: 40px !important; - padding-right: 40px !important; - } - div.dataTables_wrapper { - width: 800px; - margin: 0 auto; - } - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.fixedColumns.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - var table = $('#example').DataTable( { - scrollY: "300px", - scrollX: true, - scrollCollapse: true, - paging: false - } ); - new $.fn.dataTable.FixedColumns( table ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>FixedColumns example <span>Complex headers</span></h1> - - <div class="info"> - <p>If you are using multiple rows in the table header, it can be useful to have a rowspanning cell on the column(s) you have fixed in place - equally at other - times it can be useful to not and make use of the two or more cells per column. FixedColumns builds on the complex header support in DataTables to make this - trivial to use in FixedColumns. Just initialise your FixedColumns instance as you normally would!</p> - </div> - - <table id="example" class="stripe row-border order-column" cellspacing="0" width="100%"> - <thead> - <tr> - <th rowspan="2">Name</th> - <th colspan="2">HR Information</th> - <th colspan="3">Contact</th> - </tr> - <tr> - <th>Position</th> - <th>Salary</th> - <th>Office</th> - <th>Extn.</th> - <th>E-mail</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Salary</th> - <th>Office</th> - <th>Extn.</th> - <th>E-mail</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>$320,800</td> - <td>Edinburgh</td> - <td>5421</td> - <td>t.nixon@datatables.net</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>$170,750</td> - <td>Tokyo</td> - <td>8422</td> - <td>g.winters@datatables.net</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>$86,000</td> - <td>San Francisco</td> - <td>1562</td> - <td>a.cox@datatables.net</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>$433,060</td> - <td>Edinburgh</td> - <td>6224</td> - <td>c.kelly@datatables.net</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>$162,700</td> - <td>Tokyo</td> - <td>5407</td> - <td>a.satou@datatables.net</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>$372,000</td> - <td>New York</td> - <td>4804</td> - <td>b.williamson@datatables.net</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>$137,500</td> - <td>San Francisco</td> - <td>9608</td> - <td>h.chandler@datatables.net</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>$327,900</td> - <td>Tokyo</td> - <td>6200</td> - <td>r.davidson@datatables.net</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>$205,500</td> - <td>San Francisco</td> - <td>2360</td> - <td>c.hurst@datatables.net</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>$103,600</td> - <td>Edinburgh</td> - <td>1667</td> - <td>s.frost@datatables.net</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>$90,560</td> - <td>London</td> - <td>3814</td> - <td>j.gaines@datatables.net</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>$342,000</td> - <td>Edinburgh</td> - <td>9497</td> - <td>q.flynn@datatables.net</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>$470,600</td> - <td>San Francisco</td> - <td>6741</td> - <td>c.marshall@datatables.net</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>$313,500</td> - <td>London</td> - <td>3597</td> - <td>h.kennedy@datatables.net</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>$385,750</td> - <td>London</td> - <td>1965</td> - <td>t.fitzpatrick@datatables.net</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>$198,500</td> - <td>London</td> - <td>1581</td> - <td>m.silva@datatables.net</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>$725,000</td> - <td>New York</td> - <td>3059</td> - <td>p.byrd@datatables.net</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>$237,500</td> - <td>New York</td> - <td>1721</td> - <td>g.little@datatables.net</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>$132,000</td> - <td>London</td> - <td>2558</td> - <td>b.greer@datatables.net</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>$217,500</td> - <td>Edinburgh</td> - <td>2290</td> - <td>d.rios@datatables.net</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>$345,000</td> - <td>New York</td> - <td>1937</td> - <td>j.caldwell@datatables.net</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>$675,000</td> - <td>New York</td> - <td>6154</td> - <td>y.berry@datatables.net</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>$106,450</td> - <td>New York</td> - <td>8330</td> - <td>c.vance@datatables.net</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>$85,600</td> - <td>Sidney</td> - <td>3023</td> - <td>d.wilder@datatables.net</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>$1,200,000</td> - <td>London</td> - <td>5797</td> - <td>a.ramos@datatables.net</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>$92,575</td> - <td>Edinburgh</td> - <td>8822</td> - <td>g.joyce@datatables.net</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>$357,650</td> - <td>Singapore</td> - <td>9239</td> - <td>j.chang@datatables.net</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>$206,850</td> - <td>San Francisco</td> - <td>1314</td> - <td>b.wagner@datatables.net</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>$850,000</td> - <td>San Francisco</td> - <td>2947</td> - <td>f.green@datatables.net</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>$163,000</td> - <td>Tokyo</td> - <td>8899</td> - <td>s.itou@datatables.net</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>$95,400</td> - <td>Sidney</td> - <td>2769</td> - <td>m.house@datatables.net</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>$114,500</td> - <td>London</td> - <td>6832</td> - <td>s.burks@datatables.net</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>$145,000</td> - <td>London</td> - <td>3606</td> - <td>p.bartlett@datatables.net</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>$235,500</td> - <td>San Francisco</td> - <td>2860</td> - <td>g.cortez@datatables.net</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>$324,050</td> - <td>Edinburgh</td> - <td>8240</td> - <td>m.mccray@datatables.net</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>$85,675</td> - <td>San Francisco</td> - <td>5384</td> - <td>u.butler@datatables.net</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>$164,500</td> - <td>San Francisco</td> - <td>7031</td> - <td>h.hatfield@datatables.net</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>$109,850</td> - <td>San Francisco</td> - <td>6318</td> - <td>h.fuentes@datatables.net</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>$452,500</td> - <td>San Francisco</td> - <td>9422</td> - <td>v.harrell@datatables.net</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>$136,200</td> - <td>London</td> - <td>7580</td> - <td>t.mooney@datatables.net</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>$645,750</td> - <td>New York</td> - <td>1042</td> - <td>j.bradshaw@datatables.net</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>$234,500</td> - <td>Singapore</td> - <td>2120</td> - <td>o.liang@datatables.net</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>$163,500</td> - <td>London</td> - <td>6222</td> - <td>b.nash@datatables.net</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>$139,575</td> - <td>Tokyo</td> - <td>9383</td> - <td>s.yamamoto@datatables.net</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>$98,540</td> - <td>New York</td> - <td>8327</td> - <td>t.walton@datatables.net</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>$87,500</td> - <td>San Francisco</td> - <td>2927</td> - <td>f.camacho@datatables.net</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>$138,575</td> - <td>Singapore</td> - <td>8352</td> - <td>s.baldwin@datatables.net</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>$125,250</td> - <td>New York</td> - <td>7439</td> - <td>z.frank@datatables.net</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>$115,000</td> - <td>San Francisco</td> - <td>4389</td> - <td>z.serrano@datatables.net</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>$75,650</td> - <td>Edinburgh</td> - <td>3431</td> - <td>j.acosta@datatables.net</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>$145,600</td> - <td>New York</td> - <td>3990</td> - <td>c.stevens@datatables.net</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>$356,250</td> - <td>London</td> - <td>1016</td> - <td>h.butler@datatables.net</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>$103,500</td> - <td>London</td> - <td>6733</td> - <td>l.greer@datatables.net</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>$86,500</td> - <td>San Francisco</td> - <td>8196</td> - <td>j.alexander@datatables.net</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>$183,000</td> - <td>Edinburgh</td> - <td>6373</td> - <td>s.decker@datatables.net</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>$183,000</td> - <td>Singapore</td> - <td>5384</td> - <td>m.bruce@datatables.net</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>$112,000</td> - <td>New York</td> - <td>4226</td> - <td>d.snider@datatables.net</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - var table = $('#example').DataTable( { - scrollY: &quot;300px&quot;, - scrollX: true, - scrollCollapse: true, - paging: false - } ); - new $.fn.dataTable.FixedColumns( table ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.fixedColumns.js">../js/dataTables.fixedColumns.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css">/* Ensure that the demo table scrolls */ - th, td { - white-space: nowrap; - padding-left: 40px !important; - padding-right: 40px !important; - } - div.dataTables_wrapper { - width: 800px; - margin: 0 auto; - }</code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.fixedColumns.css">../css/dataTables.fixedColumns.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./left_right_columns.html">Left and right fixed columns</a></li> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./two_columns.html">Multiple fixed columns</a></li> - <li><a href="./right_column.html">Right column only</a></li> - <li class="active"><a href="./rowspan.html">Complex headers</a></li> - <li><a href="./colvis.html">ColVis integration</a></li> - <li><a href="./server-side-processing.html">Server-side processing</a></li> - <li><a href="./css_size.html">CSS row sizing</a></li> - <li><a href="./size_fixed.html">Assigned column width</a></li> - <li><a href="./size_fluid.html">Fluid column width</a></li> - <li><a href="./col_filter.html">Individual column filtering</a></li> - <li><a href="./bootstrap.html">Bootstrap</a></li> - <li><a href="./index_column.html">Index column</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/FixedColumns/examples/server-side-processing.html b/assets/plugins/datatables/extensions/FixedColumns/examples/server-side-processing.html deleted file mode 100644 index 0d976b9f..00000000 --- a/assets/plugins/datatables/extensions/FixedColumns/examples/server-side-processing.html +++ /dev/null @@ -1,204 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>FixedColumns example - Server-side processing</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.fixedColumns.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - /* Ensure that the demo table scrolls */ - th, td { white-space: nowrap; } - div.dataTables_wrapper { - width: 600px; - margin: 0 auto; - } - - /* Lots of padding for the cells as SSP has limited data in the demo */ - th, - td { - padding-left: 40px !important; - padding-right: 40px !important; - } - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.fixedColumns.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - var table = $('#example').DataTable( { - scrollY: "300px", - scrollX: true, - scrollCollapse: true, - ajax: "../../../examples/server_side/scripts/server_processing.php", - serverSide: true - } ); - new $.fn.dataTable.FixedColumns( table ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>FixedColumns example <span>Server-side processing</span></h1> - - <div class="info"> - <p>This example shows how FixedColumns can be used with server-side processing in DataTables to cope with very large tables. No special considerations are - required, just initialise FixedColumns as you normally would!</p> - - <p>Note that the table width is constrained in this example to allow scrolling to occur as the server-side processing data set has a limited number of columns in - this demo!</p> - </div> - - <table id="example" class="stripe row-border order-column" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Extn.</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Extn.</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - var table = $('#example').DataTable( { - scrollY: &quot;300px&quot;, - scrollX: true, - scrollCollapse: true, - ajax: &quot;../../../examples/server_side/scripts/server_processing.php&quot;, - serverSide: true - } ); - new $.fn.dataTable.FixedColumns( table ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.fixedColumns.js">../js/dataTables.fixedColumns.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css">/* Ensure that the demo table scrolls */ - th, td { white-space: nowrap; } - div.dataTables_wrapper { - width: 600px; - margin: 0 auto; - } - - /* Lots of padding for the cells as SSP has limited data in the demo */ - th, - td { - padding-left: 40px !important; - padding-right: 40px !important; - }</code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.fixedColumns.css">../css/dataTables.fixedColumns.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./left_right_columns.html">Left and right fixed columns</a></li> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./two_columns.html">Multiple fixed columns</a></li> - <li><a href="./right_column.html">Right column only</a></li> - <li><a href="./rowspan.html">Complex headers</a></li> - <li><a href="./colvis.html">ColVis integration</a></li> - <li class="active"><a href="./server-side-processing.html">Server-side processing</a></li> - <li><a href="./css_size.html">CSS row sizing</a></li> - <li><a href="./size_fixed.html">Assigned column width</a></li> - <li><a href="./size_fluid.html">Fluid column width</a></li> - <li><a href="./col_filter.html">Individual column filtering</a></li> - <li><a href="./bootstrap.html">Bootstrap</a></li> - <li><a href="./index_column.html">Index column</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/FixedColumns/examples/simple.html b/assets/plugins/datatables/extensions/FixedColumns/examples/simple.html deleted file mode 100644 index c5b0dcb9..00000000 --- a/assets/plugins/datatables/extensions/FixedColumns/examples/simple.html +++ /dev/null @@ -1,813 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>FixedColumns example - Basic initialisation</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.fixedColumns.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - /* Ensure that the demo table scrolls */ - th, td { white-space: nowrap; } - div.dataTables_wrapper { - width: 800px; - margin: 0 auto; - } - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.fixedColumns.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - var table = $('#example').DataTable( { - scrollY: "300px", - scrollX: true, - scrollCollapse: true, - paging: false - } ); - new $.fn.dataTable.FixedColumns( table ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>FixedColumns example <span>Basic initialisation</span></h1> - - <div class="info"> - <p>When displaying a table which scrolls along the x-axis, it can sometimes be useful to the end user for the left most column to be fixed in place, if it shows - grouping, index or similar information. This is basically the same idea as 'freeze columns' in Excel. This can be achieved with the FixedColumns plug-in for - DataTables, as shown below.</p> - - <p>Note that FixedColumns is suitable only for use with the scrolling features in <a href="http://datatables.net">DataTables</a>. If you want to achieve a similar - effect without scrolling enabled, please checkout <a href="http://datatables.net/plug-ins">FixedHeader</a>, also for DataTables.</p> - - <p>FixedColumns is initialised using the constructor <code>new $.fn.dataTable.FixedColumns();</code> - shown below.</p> - </div> - - <table id="example" class="stripe row-border order-column" cellspacing="0" width="100%"> - <thead> - <tr> - <th>First name</th> - <th>Last name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - <th>Extn.</th> - <th>E-mail</th> - </tr> - </thead> - - <tbody> - <tr> - <td>Tiger</td> - <td>Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - <td>5421</td> - <td>t.nixon@datatables.net</td> - </tr> - <tr> - <td>Garrett</td> - <td>Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - <td>8422</td> - <td>g.winters@datatables.net</td> - </tr> - <tr> - <td>Ashton</td> - <td>Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - <td>1562</td> - <td>a.cox@datatables.net</td> - </tr> - <tr> - <td>Cedric</td> - <td>Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - <td>6224</td> - <td>c.kelly@datatables.net</td> - </tr> - <tr> - <td>Airi</td> - <td>Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - <td>5407</td> - <td>a.satou@datatables.net</td> - </tr> - <tr> - <td>Brielle</td> - <td>Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - <td>4804</td> - <td>b.williamson@datatables.net</td> - </tr> - <tr> - <td>Herrod</td> - <td>Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - <td>9608</td> - <td>h.chandler@datatables.net</td> - </tr> - <tr> - <td>Rhona</td> - <td>Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - <td>6200</td> - <td>r.davidson@datatables.net</td> - </tr> - <tr> - <td>Colleen</td> - <td>Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - <td>2360</td> - <td>c.hurst@datatables.net</td> - </tr> - <tr> - <td>Sonya</td> - <td>Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - <td>1667</td> - <td>s.frost@datatables.net</td> - </tr> - <tr> - <td>Jena</td> - <td>Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - <td>3814</td> - <td>j.gaines@datatables.net</td> - </tr> - <tr> - <td>Quinn</td> - <td>Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - <td>9497</td> - <td>q.flynn@datatables.net</td> - </tr> - <tr> - <td>Charde</td> - <td>Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - <td>6741</td> - <td>c.marshall@datatables.net</td> - </tr> - <tr> - <td>Haley</td> - <td>Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - <td>3597</td> - <td>h.kennedy@datatables.net</td> - </tr> - <tr> - <td>Tatyana</td> - <td>Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - <td>1965</td> - <td>t.fitzpatrick@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - <td>1581</td> - <td>m.silva@datatables.net</td> - </tr> - <tr> - <td>Paul</td> - <td>Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - <td>3059</td> - <td>p.byrd@datatables.net</td> - </tr> - <tr> - <td>Gloria</td> - <td>Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - <td>1721</td> - <td>g.little@datatables.net</td> - </tr> - <tr> - <td>Bradley</td> - <td>Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - <td>2558</td> - <td>b.greer@datatables.net</td> - </tr> - <tr> - <td>Dai</td> - <td>Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - <td>2290</td> - <td>d.rios@datatables.net</td> - </tr> - <tr> - <td>Jenette</td> - <td>Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - <td>1937</td> - <td>j.caldwell@datatables.net</td> - </tr> - <tr> - <td>Yuri</td> - <td>Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - <td>6154</td> - <td>y.berry@datatables.net</td> - </tr> - <tr> - <td>Caesar</td> - <td>Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - <td>8330</td> - <td>c.vance@datatables.net</td> - </tr> - <tr> - <td>Doris</td> - <td>Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - <td>3023</td> - <td>d.wilder@datatables.net</td> - </tr> - <tr> - <td>Angelica</td> - <td>Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - <td>5797</td> - <td>a.ramos@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - <td>8822</td> - <td>g.joyce@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - <td>9239</td> - <td>j.chang@datatables.net</td> - </tr> - <tr> - <td>Brenden</td> - <td>Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - <td>1314</td> - <td>b.wagner@datatables.net</td> - </tr> - <tr> - <td>Fiona</td> - <td>Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - <td>2947</td> - <td>f.green@datatables.net</td> - </tr> - <tr> - <td>Shou</td> - <td>Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - <td>8899</td> - <td>s.itou@datatables.net</td> - </tr> - <tr> - <td>Michelle</td> - <td>House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - <td>2769</td> - <td>m.house@datatables.net</td> - </tr> - <tr> - <td>Suki</td> - <td>Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - <td>6832</td> - <td>s.burks@datatables.net</td> - </tr> - <tr> - <td>Prescott</td> - <td>Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - <td>3606</td> - <td>p.bartlett@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - <td>2860</td> - <td>g.cortez@datatables.net</td> - </tr> - <tr> - <td>Martena</td> - <td>Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - <td>8240</td> - <td>m.mccray@datatables.net</td> - </tr> - <tr> - <td>Unity</td> - <td>Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - <td>5384</td> - <td>u.butler@datatables.net</td> - </tr> - <tr> - <td>Howard</td> - <td>Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - <td>7031</td> - <td>h.hatfield@datatables.net</td> - </tr> - <tr> - <td>Hope</td> - <td>Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - <td>6318</td> - <td>h.fuentes@datatables.net</td> - </tr> - <tr> - <td>Vivian</td> - <td>Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - <td>9422</td> - <td>v.harrell@datatables.net</td> - </tr> - <tr> - <td>Timothy</td> - <td>Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - <td>7580</td> - <td>t.mooney@datatables.net</td> - </tr> - <tr> - <td>Jackson</td> - <td>Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - <td>1042</td> - <td>j.bradshaw@datatables.net</td> - </tr> - <tr> - <td>Olivia</td> - <td>Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - <td>2120</td> - <td>o.liang@datatables.net</td> - </tr> - <tr> - <td>Bruno</td> - <td>Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - <td>6222</td> - <td>b.nash@datatables.net</td> - </tr> - <tr> - <td>Sakura</td> - <td>Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - <td>9383</td> - <td>s.yamamoto@datatables.net</td> - </tr> - <tr> - <td>Thor</td> - <td>Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - <td>8327</td> - <td>t.walton@datatables.net</td> - </tr> - <tr> - <td>Finn</td> - <td>Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - <td>2927</td> - <td>f.camacho@datatables.net</td> - </tr> - <tr> - <td>Serge</td> - <td>Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - <td>8352</td> - <td>s.baldwin@datatables.net</td> - </tr> - <tr> - <td>Zenaida</td> - <td>Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - <td>7439</td> - <td>z.frank@datatables.net</td> - </tr> - <tr> - <td>Zorita</td> - <td>Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - <td>4389</td> - <td>z.serrano@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - <td>3431</td> - <td>j.acosta@datatables.net</td> - </tr> - <tr> - <td>Cara</td> - <td>Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - <td>3990</td> - <td>c.stevens@datatables.net</td> - </tr> - <tr> - <td>Hermione</td> - <td>Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - <td>1016</td> - <td>h.butler@datatables.net</td> - </tr> - <tr> - <td>Lael</td> - <td>Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - <td>6733</td> - <td>l.greer@datatables.net</td> - </tr> - <tr> - <td>Jonas</td> - <td>Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - <td>8196</td> - <td>j.alexander@datatables.net</td> - </tr> - <tr> - <td>Shad</td> - <td>Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - <td>6373</td> - <td>s.decker@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - <td>5384</td> - <td>m.bruce@datatables.net</td> - </tr> - <tr> - <td>Donna</td> - <td>Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - <td>4226</td> - <td>d.snider@datatables.net</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - var table = $('#example').DataTable( { - scrollY: &quot;300px&quot;, - scrollX: true, - scrollCollapse: true, - paging: false - } ); - new $.fn.dataTable.FixedColumns( table ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.fixedColumns.js">../js/dataTables.fixedColumns.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css">/* Ensure that the demo table scrolls */ - th, td { white-space: nowrap; } - div.dataTables_wrapper { - width: 800px; - margin: 0 auto; - }</code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.fixedColumns.css">../css/dataTables.fixedColumns.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./left_right_columns.html">Left and right fixed columns</a></li> - <li class="active"><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./two_columns.html">Multiple fixed columns</a></li> - <li><a href="./right_column.html">Right column only</a></li> - <li><a href="./rowspan.html">Complex headers</a></li> - <li><a href="./colvis.html">ColVis integration</a></li> - <li><a href="./server-side-processing.html">Server-side processing</a></li> - <li><a href="./css_size.html">CSS row sizing</a></li> - <li><a href="./size_fixed.html">Assigned column width</a></li> - <li><a href="./size_fluid.html">Fluid column width</a></li> - <li><a href="./col_filter.html">Individual column filtering</a></li> - <li><a href="./bootstrap.html">Bootstrap</a></li> - <li><a href="./index_column.html">Index column</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/FixedColumns/examples/size_fixed.html b/assets/plugins/datatables/extensions/FixedColumns/examples/size_fixed.html deleted file mode 100644 index cc17c66a..00000000 --- a/assets/plugins/datatables/extensions/FixedColumns/examples/size_fixed.html +++ /dev/null @@ -1,824 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>FixedColumns example - Assigned column width</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.fixedColumns.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - /* Ensure that the demo table scrolls */ - th, td { white-space: nowrap; } - div.dataTables_wrapper { - margin: 0 auto; - } - - div.container { - width: 80%; - } - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.fixedColumns.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - var table = $('#example').removeAttr('width').DataTable( { - scrollY: "300px", - scrollX: true, - scrollCollapse: true, - paging: false, - columnDefs: [ - { width: 200, targets: 0 } - ] - } ); - new $.fn.dataTable.FixedColumns( table ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>FixedColumns example <span>Assigned column width</span></h1> - - <div class="info"> - <p>The columns that are fixed in place by FixedColumns take their width from the parent DataTable. As such, the width of the column can be controlled using the - <a href="//datatables.net/reference/option/columns.width"><code class="option" title="DataTables initialisation option">columns.width<span>DT</span></code></a> - option.</p> - - <p>This example shows the first column being set to <code>width: 200px</code> (note that this is not pixel perfect in a table, the browser will make some - adjustments!), a width that is reflected in the fixed column. Resize the browser window horizontally and you will be able to see that the fixed column retains its - width while the scrolling viewport and the table resize.</p> - </div> - - <table id="example" class="stripe row-border order-column" cellspacing="0" width="100%"> - <thead> - <tr> - <th>First name</th> - <th>Last name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - <th>Extn.</th> - <th>E-mail</th> - </tr> - </thead> - - <tbody> - <tr> - <td>Tiger</td> - <td>Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - <td>5421</td> - <td>t.nixon@datatables.net</td> - </tr> - <tr> - <td>Garrett</td> - <td>Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - <td>8422</td> - <td>g.winters@datatables.net</td> - </tr> - <tr> - <td>Ashton</td> - <td>Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - <td>1562</td> - <td>a.cox@datatables.net</td> - </tr> - <tr> - <td>Cedric</td> - <td>Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - <td>6224</td> - <td>c.kelly@datatables.net</td> - </tr> - <tr> - <td>Airi</td> - <td>Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - <td>5407</td> - <td>a.satou@datatables.net</td> - </tr> - <tr> - <td>Brielle</td> - <td>Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - <td>4804</td> - <td>b.williamson@datatables.net</td> - </tr> - <tr> - <td>Herrod</td> - <td>Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - <td>9608</td> - <td>h.chandler@datatables.net</td> - </tr> - <tr> - <td>Rhona</td> - <td>Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - <td>6200</td> - <td>r.davidson@datatables.net</td> - </tr> - <tr> - <td>Colleen</td> - <td>Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - <td>2360</td> - <td>c.hurst@datatables.net</td> - </tr> - <tr> - <td>Sonya</td> - <td>Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - <td>1667</td> - <td>s.frost@datatables.net</td> - </tr> - <tr> - <td>Jena</td> - <td>Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - <td>3814</td> - <td>j.gaines@datatables.net</td> - </tr> - <tr> - <td>Quinn</td> - <td>Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - <td>9497</td> - <td>q.flynn@datatables.net</td> - </tr> - <tr> - <td>Charde</td> - <td>Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - <td>6741</td> - <td>c.marshall@datatables.net</td> - </tr> - <tr> - <td>Haley</td> - <td>Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - <td>3597</td> - <td>h.kennedy@datatables.net</td> - </tr> - <tr> - <td>Tatyana</td> - <td>Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - <td>1965</td> - <td>t.fitzpatrick@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - <td>1581</td> - <td>m.silva@datatables.net</td> - </tr> - <tr> - <td>Paul</td> - <td>Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - <td>3059</td> - <td>p.byrd@datatables.net</td> - </tr> - <tr> - <td>Gloria</td> - <td>Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - <td>1721</td> - <td>g.little@datatables.net</td> - </tr> - <tr> - <td>Bradley</td> - <td>Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - <td>2558</td> - <td>b.greer@datatables.net</td> - </tr> - <tr> - <td>Dai</td> - <td>Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - <td>2290</td> - <td>d.rios@datatables.net</td> - </tr> - <tr> - <td>Jenette</td> - <td>Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - <td>1937</td> - <td>j.caldwell@datatables.net</td> - </tr> - <tr> - <td>Yuri</td> - <td>Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - <td>6154</td> - <td>y.berry@datatables.net</td> - </tr> - <tr> - <td>Caesar</td> - <td>Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - <td>8330</td> - <td>c.vance@datatables.net</td> - </tr> - <tr> - <td>Doris</td> - <td>Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - <td>3023</td> - <td>d.wilder@datatables.net</td> - </tr> - <tr> - <td>Angelica</td> - <td>Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - <td>5797</td> - <td>a.ramos@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - <td>8822</td> - <td>g.joyce@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - <td>9239</td> - <td>j.chang@datatables.net</td> - </tr> - <tr> - <td>Brenden</td> - <td>Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - <td>1314</td> - <td>b.wagner@datatables.net</td> - </tr> - <tr> - <td>Fiona</td> - <td>Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - <td>2947</td> - <td>f.green@datatables.net</td> - </tr> - <tr> - <td>Shou</td> - <td>Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - <td>8899</td> - <td>s.itou@datatables.net</td> - </tr> - <tr> - <td>Michelle</td> - <td>House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - <td>2769</td> - <td>m.house@datatables.net</td> - </tr> - <tr> - <td>Suki</td> - <td>Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - <td>6832</td> - <td>s.burks@datatables.net</td> - </tr> - <tr> - <td>Prescott</td> - <td>Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - <td>3606</td> - <td>p.bartlett@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - <td>2860</td> - <td>g.cortez@datatables.net</td> - </tr> - <tr> - <td>Martena</td> - <td>Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - <td>8240</td> - <td>m.mccray@datatables.net</td> - </tr> - <tr> - <td>Unity</td> - <td>Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - <td>5384</td> - <td>u.butler@datatables.net</td> - </tr> - <tr> - <td>Howard</td> - <td>Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - <td>7031</td> - <td>h.hatfield@datatables.net</td> - </tr> - <tr> - <td>Hope</td> - <td>Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - <td>6318</td> - <td>h.fuentes@datatables.net</td> - </tr> - <tr> - <td>Vivian</td> - <td>Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - <td>9422</td> - <td>v.harrell@datatables.net</td> - </tr> - <tr> - <td>Timothy</td> - <td>Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - <td>7580</td> - <td>t.mooney@datatables.net</td> - </tr> - <tr> - <td>Jackson</td> - <td>Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - <td>1042</td> - <td>j.bradshaw@datatables.net</td> - </tr> - <tr> - <td>Olivia</td> - <td>Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - <td>2120</td> - <td>o.liang@datatables.net</td> - </tr> - <tr> - <td>Bruno</td> - <td>Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - <td>6222</td> - <td>b.nash@datatables.net</td> - </tr> - <tr> - <td>Sakura</td> - <td>Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - <td>9383</td> - <td>s.yamamoto@datatables.net</td> - </tr> - <tr> - <td>Thor</td> - <td>Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - <td>8327</td> - <td>t.walton@datatables.net</td> - </tr> - <tr> - <td>Finn</td> - <td>Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - <td>2927</td> - <td>f.camacho@datatables.net</td> - </tr> - <tr> - <td>Serge</td> - <td>Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - <td>8352</td> - <td>s.baldwin@datatables.net</td> - </tr> - <tr> - <td>Zenaida</td> - <td>Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - <td>7439</td> - <td>z.frank@datatables.net</td> - </tr> - <tr> - <td>Zorita</td> - <td>Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - <td>4389</td> - <td>z.serrano@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - <td>3431</td> - <td>j.acosta@datatables.net</td> - </tr> - <tr> - <td>Cara</td> - <td>Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - <td>3990</td> - <td>c.stevens@datatables.net</td> - </tr> - <tr> - <td>Hermione</td> - <td>Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - <td>1016</td> - <td>h.butler@datatables.net</td> - </tr> - <tr> - <td>Lael</td> - <td>Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - <td>6733</td> - <td>l.greer@datatables.net</td> - </tr> - <tr> - <td>Jonas</td> - <td>Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - <td>8196</td> - <td>j.alexander@datatables.net</td> - </tr> - <tr> - <td>Shad</td> - <td>Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - <td>6373</td> - <td>s.decker@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - <td>5384</td> - <td>m.bruce@datatables.net</td> - </tr> - <tr> - <td>Donna</td> - <td>Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - <td>4226</td> - <td>d.snider@datatables.net</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - var table = $('#example').removeAttr('width').DataTable( { - scrollY: &quot;300px&quot;, - scrollX: true, - scrollCollapse: true, - paging: false, - columnDefs: [ - { width: 200, targets: 0 } - ] - } ); - new $.fn.dataTable.FixedColumns( table ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.fixedColumns.js">../js/dataTables.fixedColumns.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css">/* Ensure that the demo table scrolls */ - th, td { white-space: nowrap; } - div.dataTables_wrapper { - margin: 0 auto; - } - - div.container { - width: 80%; - }</code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.fixedColumns.css">../css/dataTables.fixedColumns.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./left_right_columns.html">Left and right fixed columns</a></li> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./two_columns.html">Multiple fixed columns</a></li> - <li><a href="./right_column.html">Right column only</a></li> - <li><a href="./rowspan.html">Complex headers</a></li> - <li><a href="./colvis.html">ColVis integration</a></li> - <li><a href="./server-side-processing.html">Server-side processing</a></li> - <li><a href="./css_size.html">CSS row sizing</a></li> - <li class="active"><a href="./size_fixed.html">Assigned column width</a></li> - <li><a href="./size_fluid.html">Fluid column width</a></li> - <li><a href="./col_filter.html">Individual column filtering</a></li> - <li><a href="./bootstrap.html">Bootstrap</a></li> - <li><a href="./index_column.html">Index column</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/FixedColumns/examples/size_fluid.html b/assets/plugins/datatables/extensions/FixedColumns/examples/size_fluid.html deleted file mode 100644 index ee533886..00000000 --- a/assets/plugins/datatables/extensions/FixedColumns/examples/size_fluid.html +++ /dev/null @@ -1,824 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>FixedColumns example - Fluid column width</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.fixedColumns.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - /* Ensure that the demo table scrolls */ - th, td { white-space: nowrap; } - div.dataTables_wrapper { - margin: 0 auto; - } - - div.container { - width: 80%; - } - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.fixedColumns.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - var table = $('#example').DataTable( { - scrollY: "300px", - scrollX: true, - scrollCollapse: true, - paging: false, - columnDefs: [ - { width: '20%', targets: 0 } - ] - } ); - new $.fn.dataTable.FixedColumns( table ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>FixedColumns example <span>Fluid column width</span></h1> - - <div class="info"> - <p>The columns that are fixed in place by FixedColumns take their width from the parent DataTable. As such, the width of the column can be controlled using the - <a href="//datatables.net/reference/option/columns.width"><code class="option" title="DataTables initialisation option">columns.width<span>DT</span></code></a> - option.</p> - - <p>This example shows the first column being set to <code>width: 20%</code> (note that this is not pixel perfect in a table, the browser will make some - adjustments!), a width that is reflected in the fixed column. Resize the browser window horizontally and you will be able to see that the fixed column retains its - proportional width (again with a small margin dictated by the browser) in the resizing table.</p> - </div> - - <table id="example" class="stripe row-border order-column" cellspacing="0" width="100%"> - <thead> - <tr> - <th>First name</th> - <th>Last name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - <th>Extn.</th> - <th>E-mail</th> - </tr> - </thead> - - <tbody> - <tr> - <td>Tiger</td> - <td>Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - <td>5421</td> - <td>t.nixon@datatables.net</td> - </tr> - <tr> - <td>Garrett</td> - <td>Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - <td>8422</td> - <td>g.winters@datatables.net</td> - </tr> - <tr> - <td>Ashton</td> - <td>Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - <td>1562</td> - <td>a.cox@datatables.net</td> - </tr> - <tr> - <td>Cedric</td> - <td>Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - <td>6224</td> - <td>c.kelly@datatables.net</td> - </tr> - <tr> - <td>Airi</td> - <td>Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - <td>5407</td> - <td>a.satou@datatables.net</td> - </tr> - <tr> - <td>Brielle</td> - <td>Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - <td>4804</td> - <td>b.williamson@datatables.net</td> - </tr> - <tr> - <td>Herrod</td> - <td>Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - <td>9608</td> - <td>h.chandler@datatables.net</td> - </tr> - <tr> - <td>Rhona</td> - <td>Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - <td>6200</td> - <td>r.davidson@datatables.net</td> - </tr> - <tr> - <td>Colleen</td> - <td>Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - <td>2360</td> - <td>c.hurst@datatables.net</td> - </tr> - <tr> - <td>Sonya</td> - <td>Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - <td>1667</td> - <td>s.frost@datatables.net</td> - </tr> - <tr> - <td>Jena</td> - <td>Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - <td>3814</td> - <td>j.gaines@datatables.net</td> - </tr> - <tr> - <td>Quinn</td> - <td>Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - <td>9497</td> - <td>q.flynn@datatables.net</td> - </tr> - <tr> - <td>Charde</td> - <td>Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - <td>6741</td> - <td>c.marshall@datatables.net</td> - </tr> - <tr> - <td>Haley</td> - <td>Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - <td>3597</td> - <td>h.kennedy@datatables.net</td> - </tr> - <tr> - <td>Tatyana</td> - <td>Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - <td>1965</td> - <td>t.fitzpatrick@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - <td>1581</td> - <td>m.silva@datatables.net</td> - </tr> - <tr> - <td>Paul</td> - <td>Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - <td>3059</td> - <td>p.byrd@datatables.net</td> - </tr> - <tr> - <td>Gloria</td> - <td>Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - <td>1721</td> - <td>g.little@datatables.net</td> - </tr> - <tr> - <td>Bradley</td> - <td>Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - <td>2558</td> - <td>b.greer@datatables.net</td> - </tr> - <tr> - <td>Dai</td> - <td>Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - <td>2290</td> - <td>d.rios@datatables.net</td> - </tr> - <tr> - <td>Jenette</td> - <td>Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - <td>1937</td> - <td>j.caldwell@datatables.net</td> - </tr> - <tr> - <td>Yuri</td> - <td>Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - <td>6154</td> - <td>y.berry@datatables.net</td> - </tr> - <tr> - <td>Caesar</td> - <td>Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - <td>8330</td> - <td>c.vance@datatables.net</td> - </tr> - <tr> - <td>Doris</td> - <td>Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - <td>3023</td> - <td>d.wilder@datatables.net</td> - </tr> - <tr> - <td>Angelica</td> - <td>Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - <td>5797</td> - <td>a.ramos@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - <td>8822</td> - <td>g.joyce@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - <td>9239</td> - <td>j.chang@datatables.net</td> - </tr> - <tr> - <td>Brenden</td> - <td>Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - <td>1314</td> - <td>b.wagner@datatables.net</td> - </tr> - <tr> - <td>Fiona</td> - <td>Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - <td>2947</td> - <td>f.green@datatables.net</td> - </tr> - <tr> - <td>Shou</td> - <td>Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - <td>8899</td> - <td>s.itou@datatables.net</td> - </tr> - <tr> - <td>Michelle</td> - <td>House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - <td>2769</td> - <td>m.house@datatables.net</td> - </tr> - <tr> - <td>Suki</td> - <td>Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - <td>6832</td> - <td>s.burks@datatables.net</td> - </tr> - <tr> - <td>Prescott</td> - <td>Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - <td>3606</td> - <td>p.bartlett@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - <td>2860</td> - <td>g.cortez@datatables.net</td> - </tr> - <tr> - <td>Martena</td> - <td>Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - <td>8240</td> - <td>m.mccray@datatables.net</td> - </tr> - <tr> - <td>Unity</td> - <td>Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - <td>5384</td> - <td>u.butler@datatables.net</td> - </tr> - <tr> - <td>Howard</td> - <td>Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - <td>7031</td> - <td>h.hatfield@datatables.net</td> - </tr> - <tr> - <td>Hope</td> - <td>Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - <td>6318</td> - <td>h.fuentes@datatables.net</td> - </tr> - <tr> - <td>Vivian</td> - <td>Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - <td>9422</td> - <td>v.harrell@datatables.net</td> - </tr> - <tr> - <td>Timothy</td> - <td>Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - <td>7580</td> - <td>t.mooney@datatables.net</td> - </tr> - <tr> - <td>Jackson</td> - <td>Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - <td>1042</td> - <td>j.bradshaw@datatables.net</td> - </tr> - <tr> - <td>Olivia</td> - <td>Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - <td>2120</td> - <td>o.liang@datatables.net</td> - </tr> - <tr> - <td>Bruno</td> - <td>Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - <td>6222</td> - <td>b.nash@datatables.net</td> - </tr> - <tr> - <td>Sakura</td> - <td>Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - <td>9383</td> - <td>s.yamamoto@datatables.net</td> - </tr> - <tr> - <td>Thor</td> - <td>Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - <td>8327</td> - <td>t.walton@datatables.net</td> - </tr> - <tr> - <td>Finn</td> - <td>Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - <td>2927</td> - <td>f.camacho@datatables.net</td> - </tr> - <tr> - <td>Serge</td> - <td>Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - <td>8352</td> - <td>s.baldwin@datatables.net</td> - </tr> - <tr> - <td>Zenaida</td> - <td>Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - <td>7439</td> - <td>z.frank@datatables.net</td> - </tr> - <tr> - <td>Zorita</td> - <td>Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - <td>4389</td> - <td>z.serrano@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - <td>3431</td> - <td>j.acosta@datatables.net</td> - </tr> - <tr> - <td>Cara</td> - <td>Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - <td>3990</td> - <td>c.stevens@datatables.net</td> - </tr> - <tr> - <td>Hermione</td> - <td>Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - <td>1016</td> - <td>h.butler@datatables.net</td> - </tr> - <tr> - <td>Lael</td> - <td>Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - <td>6733</td> - <td>l.greer@datatables.net</td> - </tr> - <tr> - <td>Jonas</td> - <td>Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - <td>8196</td> - <td>j.alexander@datatables.net</td> - </tr> - <tr> - <td>Shad</td> - <td>Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - <td>6373</td> - <td>s.decker@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - <td>5384</td> - <td>m.bruce@datatables.net</td> - </tr> - <tr> - <td>Donna</td> - <td>Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - <td>4226</td> - <td>d.snider@datatables.net</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - var table = $('#example').DataTable( { - scrollY: &quot;300px&quot;, - scrollX: true, - scrollCollapse: true, - paging: false, - columnDefs: [ - { width: '20%', targets: 0 } - ] - } ); - new $.fn.dataTable.FixedColumns( table ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.fixedColumns.js">../js/dataTables.fixedColumns.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css">/* Ensure that the demo table scrolls */ - th, td { white-space: nowrap; } - div.dataTables_wrapper { - margin: 0 auto; - } - - div.container { - width: 80%; - }</code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.fixedColumns.css">../css/dataTables.fixedColumns.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./left_right_columns.html">Left and right fixed columns</a></li> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./two_columns.html">Multiple fixed columns</a></li> - <li><a href="./right_column.html">Right column only</a></li> - <li><a href="./rowspan.html">Complex headers</a></li> - <li><a href="./colvis.html">ColVis integration</a></li> - <li><a href="./server-side-processing.html">Server-side processing</a></li> - <li><a href="./css_size.html">CSS row sizing</a></li> - <li><a href="./size_fixed.html">Assigned column width</a></li> - <li class="active"><a href="./size_fluid.html">Fluid column width</a></li> - <li><a href="./col_filter.html">Individual column filtering</a></li> - <li><a href="./bootstrap.html">Bootstrap</a></li> - <li><a href="./index_column.html">Index column</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/FixedColumns/examples/two_columns.html b/assets/plugins/datatables/extensions/FixedColumns/examples/two_columns.html deleted file mode 100644 index 6c3f233e..00000000 --- a/assets/plugins/datatables/extensions/FixedColumns/examples/two_columns.html +++ /dev/null @@ -1,810 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>FixedColumns example - Multiple fixed columns</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.fixedColumns.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - /* Ensure that the demo table scrolls */ - th, td { white-space: nowrap; } - div.dataTables_wrapper { - width: 800px; - margin: 0 auto; - } - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.fixedColumns.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - var table = $('#example').DataTable( { - scrollY: "300px", - scrollX: true, - scrollCollapse: true, - paging: false - } ); - new $.fn.dataTable.FixedColumns( table, { - leftColumns: 2 - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>FixedColumns example <span>Multiple fixed columns</span></h1> - - <div class="info"> - <p>FixedColumns allows more than one column to be frozen into place using the <code>leftColumns</code> parameter. The example below shows two columns fixed.</p> - </div> - - <table id="example" class="stripe row-border order-column" cellspacing="0" width="100%"> - <thead> - <tr> - <th>First name</th> - <th>Last name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - <th>Extn.</th> - <th>E-mail</th> - </tr> - </thead> - - <tbody> - <tr> - <td>Tiger</td> - <td>Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - <td>5421</td> - <td>t.nixon@datatables.net</td> - </tr> - <tr> - <td>Garrett</td> - <td>Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - <td>8422</td> - <td>g.winters@datatables.net</td> - </tr> - <tr> - <td>Ashton</td> - <td>Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - <td>1562</td> - <td>a.cox@datatables.net</td> - </tr> - <tr> - <td>Cedric</td> - <td>Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - <td>6224</td> - <td>c.kelly@datatables.net</td> - </tr> - <tr> - <td>Airi</td> - <td>Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - <td>5407</td> - <td>a.satou@datatables.net</td> - </tr> - <tr> - <td>Brielle</td> - <td>Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - <td>4804</td> - <td>b.williamson@datatables.net</td> - </tr> - <tr> - <td>Herrod</td> - <td>Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - <td>9608</td> - <td>h.chandler@datatables.net</td> - </tr> - <tr> - <td>Rhona</td> - <td>Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - <td>6200</td> - <td>r.davidson@datatables.net</td> - </tr> - <tr> - <td>Colleen</td> - <td>Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - <td>2360</td> - <td>c.hurst@datatables.net</td> - </tr> - <tr> - <td>Sonya</td> - <td>Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - <td>1667</td> - <td>s.frost@datatables.net</td> - </tr> - <tr> - <td>Jena</td> - <td>Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - <td>3814</td> - <td>j.gaines@datatables.net</td> - </tr> - <tr> - <td>Quinn</td> - <td>Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - <td>9497</td> - <td>q.flynn@datatables.net</td> - </tr> - <tr> - <td>Charde</td> - <td>Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - <td>6741</td> - <td>c.marshall@datatables.net</td> - </tr> - <tr> - <td>Haley</td> - <td>Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - <td>3597</td> - <td>h.kennedy@datatables.net</td> - </tr> - <tr> - <td>Tatyana</td> - <td>Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - <td>1965</td> - <td>t.fitzpatrick@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - <td>1581</td> - <td>m.silva@datatables.net</td> - </tr> - <tr> - <td>Paul</td> - <td>Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - <td>3059</td> - <td>p.byrd@datatables.net</td> - </tr> - <tr> - <td>Gloria</td> - <td>Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - <td>1721</td> - <td>g.little@datatables.net</td> - </tr> - <tr> - <td>Bradley</td> - <td>Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - <td>2558</td> - <td>b.greer@datatables.net</td> - </tr> - <tr> - <td>Dai</td> - <td>Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - <td>2290</td> - <td>d.rios@datatables.net</td> - </tr> - <tr> - <td>Jenette</td> - <td>Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - <td>1937</td> - <td>j.caldwell@datatables.net</td> - </tr> - <tr> - <td>Yuri</td> - <td>Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - <td>6154</td> - <td>y.berry@datatables.net</td> - </tr> - <tr> - <td>Caesar</td> - <td>Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - <td>8330</td> - <td>c.vance@datatables.net</td> - </tr> - <tr> - <td>Doris</td> - <td>Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - <td>3023</td> - <td>d.wilder@datatables.net</td> - </tr> - <tr> - <td>Angelica</td> - <td>Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - <td>5797</td> - <td>a.ramos@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - <td>8822</td> - <td>g.joyce@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - <td>9239</td> - <td>j.chang@datatables.net</td> - </tr> - <tr> - <td>Brenden</td> - <td>Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - <td>1314</td> - <td>b.wagner@datatables.net</td> - </tr> - <tr> - <td>Fiona</td> - <td>Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - <td>2947</td> - <td>f.green@datatables.net</td> - </tr> - <tr> - <td>Shou</td> - <td>Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - <td>8899</td> - <td>s.itou@datatables.net</td> - </tr> - <tr> - <td>Michelle</td> - <td>House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - <td>2769</td> - <td>m.house@datatables.net</td> - </tr> - <tr> - <td>Suki</td> - <td>Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - <td>6832</td> - <td>s.burks@datatables.net</td> - </tr> - <tr> - <td>Prescott</td> - <td>Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - <td>3606</td> - <td>p.bartlett@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - <td>2860</td> - <td>g.cortez@datatables.net</td> - </tr> - <tr> - <td>Martena</td> - <td>Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - <td>8240</td> - <td>m.mccray@datatables.net</td> - </tr> - <tr> - <td>Unity</td> - <td>Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - <td>5384</td> - <td>u.butler@datatables.net</td> - </tr> - <tr> - <td>Howard</td> - <td>Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - <td>7031</td> - <td>h.hatfield@datatables.net</td> - </tr> - <tr> - <td>Hope</td> - <td>Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - <td>6318</td> - <td>h.fuentes@datatables.net</td> - </tr> - <tr> - <td>Vivian</td> - <td>Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - <td>9422</td> - <td>v.harrell@datatables.net</td> - </tr> - <tr> - <td>Timothy</td> - <td>Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - <td>7580</td> - <td>t.mooney@datatables.net</td> - </tr> - <tr> - <td>Jackson</td> - <td>Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - <td>1042</td> - <td>j.bradshaw@datatables.net</td> - </tr> - <tr> - <td>Olivia</td> - <td>Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - <td>2120</td> - <td>o.liang@datatables.net</td> - </tr> - <tr> - <td>Bruno</td> - <td>Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - <td>6222</td> - <td>b.nash@datatables.net</td> - </tr> - <tr> - <td>Sakura</td> - <td>Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - <td>9383</td> - <td>s.yamamoto@datatables.net</td> - </tr> - <tr> - <td>Thor</td> - <td>Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - <td>8327</td> - <td>t.walton@datatables.net</td> - </tr> - <tr> - <td>Finn</td> - <td>Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - <td>2927</td> - <td>f.camacho@datatables.net</td> - </tr> - <tr> - <td>Serge</td> - <td>Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - <td>8352</td> - <td>s.baldwin@datatables.net</td> - </tr> - <tr> - <td>Zenaida</td> - <td>Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - <td>7439</td> - <td>z.frank@datatables.net</td> - </tr> - <tr> - <td>Zorita</td> - <td>Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - <td>4389</td> - <td>z.serrano@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - <td>3431</td> - <td>j.acosta@datatables.net</td> - </tr> - <tr> - <td>Cara</td> - <td>Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - <td>3990</td> - <td>c.stevens@datatables.net</td> - </tr> - <tr> - <td>Hermione</td> - <td>Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - <td>1016</td> - <td>h.butler@datatables.net</td> - </tr> - <tr> - <td>Lael</td> - <td>Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - <td>6733</td> - <td>l.greer@datatables.net</td> - </tr> - <tr> - <td>Jonas</td> - <td>Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - <td>8196</td> - <td>j.alexander@datatables.net</td> - </tr> - <tr> - <td>Shad</td> - <td>Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - <td>6373</td> - <td>s.decker@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - <td>5384</td> - <td>m.bruce@datatables.net</td> - </tr> - <tr> - <td>Donna</td> - <td>Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - <td>4226</td> - <td>d.snider@datatables.net</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - var table = $('#example').DataTable( { - scrollY: &quot;300px&quot;, - scrollX: true, - scrollCollapse: true, - paging: false - } ); - new $.fn.dataTable.FixedColumns( table, { - leftColumns: 2 - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.fixedColumns.js">../js/dataTables.fixedColumns.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css">/* Ensure that the demo table scrolls */ - th, td { white-space: nowrap; } - div.dataTables_wrapper { - width: 800px; - margin: 0 auto; - }</code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.fixedColumns.css">../css/dataTables.fixedColumns.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./left_right_columns.html">Left and right fixed columns</a></li> - <li><a href="./simple.html">Basic initialisation</a></li> - <li class="active"><a href="./two_columns.html">Multiple fixed columns</a></li> - <li><a href="./right_column.html">Right column only</a></li> - <li><a href="./rowspan.html">Complex headers</a></li> - <li><a href="./colvis.html">ColVis integration</a></li> - <li><a href="./server-side-processing.html">Server-side processing</a></li> - <li><a href="./css_size.html">CSS row sizing</a></li> - <li><a href="./size_fixed.html">Assigned column width</a></li> - <li><a href="./size_fluid.html">Fluid column width</a></li> - <li><a href="./col_filter.html">Individual column filtering</a></li> - <li><a href="./bootstrap.html">Bootstrap</a></li> - <li><a href="./index_column.html">Index column</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/FixedColumns/js/dataTables.fixedColumns.js b/assets/plugins/datatables/extensions/FixedColumns/js/dataTables.fixedColumns.js deleted file mode 100644 index 33c98fad..00000000 --- a/assets/plugins/datatables/extensions/FixedColumns/js/dataTables.fixedColumns.js +++ /dev/null @@ -1,1423 +0,0 @@ -/*! FixedColumns 3.0.4 - * ©2010-2014 SpryMedia Ltd - datatables.net/license - */ - -/** - * @summary FixedColumns - * @description Freeze columns in place on a scrolling DataTable - * @version 3.0.4 - * @file dataTables.fixedColumns.js - * @author SpryMedia Ltd (www.sprymedia.co.uk) - * @contact www.sprymedia.co.uk/contact - * @copyright Copyright 2010-2014 SpryMedia Ltd. - * - * This source file is free software, available under the following license: - * MIT license - http://datatables.net/license/mit - * - * This source file is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. - * - * For details please refer to: http://www.datatables.net - */ - - -(function(window, document, undefined) { - - -var factory = function( $, DataTable ) { -"use strict"; - -/** - * When making use of DataTables' x-axis scrolling feature, you may wish to - * fix the left most column in place. This plug-in for DataTables provides - * exactly this option (note for non-scrolling tables, please use the - * FixedHeader plug-in, which can fix headers, footers and columns). Key - * features include: - * - * * Freezes the left or right most columns to the side of the table - * * Option to freeze two or more columns - * * Full integration with DataTables' scrolling options - * * Speed - FixedColumns is fast in its operation - * - * @class - * @constructor - * @global - * @param {object} dt DataTables instance. With DataTables 1.10 this can also - * be a jQuery collection, a jQuery selector, DataTables API instance or - * settings object. - * @param {object} [init={}] Configuration object for FixedColumns. Options are - * defined by {@link FixedColumns.defaults} - * - * @requires jQuery 1.7+ - * @requires DataTables 1.8.0+ - * - * @example - * var table = $('#example').dataTable( { - * "scrollX": "100%" - * } ); - * new $.fn.dataTable.fixedColumns( table ); - */ -var FixedColumns = function ( dt, init ) { - var that = this; - - /* Sanity check - you just know it will happen */ - if ( ! ( this instanceof FixedColumns ) ) - { - alert( "FixedColumns warning: FixedColumns must be initialised with the 'new' keyword." ); - return; - } - - if ( typeof init == 'undefined' ) - { - init = {}; - } - - // Use the DataTables Hungarian notation mapping method, if it exists to - // provide forwards compatibility for camel case variables - var camelToHungarian = $.fn.dataTable.camelToHungarian; - if ( camelToHungarian ) { - camelToHungarian( FixedColumns.defaults, FixedColumns.defaults, true ); - camelToHungarian( FixedColumns.defaults, init ); - } - - // v1.10 allows the settings object to be got form a number of sources - var dtSettings = $.fn.dataTable.Api ? - new $.fn.dataTable.Api( dt ).settings()[0] : - dt.fnSettings(); - - /** - * Settings object which contains customisable information for FixedColumns instance - * @namespace - * @extends FixedColumns.defaults - * @private - */ - this.s = { - /** - * DataTables settings objects - * @type object - * @default Obtained from DataTables instance - */ - "dt": dtSettings, - - /** - * Number of columns in the DataTable - stored for quick access - * @type int - * @default Obtained from DataTables instance - */ - "iTableColumns": dtSettings.aoColumns.length, - - /** - * Original outer widths of the columns as rendered by DataTables - used to calculate - * the FixedColumns grid bounding box - * @type array.<int> - * @default [] - */ - "aiOuterWidths": [], - - /** - * Original inner widths of the columns as rendered by DataTables - used to apply widths - * to the columns - * @type array.<int> - * @default [] - */ - "aiInnerWidths": [] - }; - - - /** - * DOM elements used by the class instance - * @namespace - * @private - * - */ - this.dom = { - /** - * DataTables scrolling element - * @type node - * @default null - */ - "scroller": null, - - /** - * DataTables header table - * @type node - * @default null - */ - "header": null, - - /** - * DataTables body table - * @type node - * @default null - */ - "body": null, - - /** - * DataTables footer table - * @type node - * @default null - */ - "footer": null, - - /** - * Display grid elements - * @namespace - */ - "grid": { - /** - * Grid wrapper. This is the container element for the 3x3 grid - * @type node - * @default null - */ - "wrapper": null, - - /** - * DataTables scrolling element. This element is the DataTables - * component in the display grid (making up the main table - i.e. - * not the fixed columns). - * @type node - * @default null - */ - "dt": null, - - /** - * Left fixed column grid components - * @namespace - */ - "left": { - "wrapper": null, - "head": null, - "body": null, - "foot": null - }, - - /** - * Right fixed column grid components - * @namespace - */ - "right": { - "wrapper": null, - "head": null, - "body": null, - "foot": null - } - }, - - /** - * Cloned table nodes - * @namespace - */ - "clone": { - /** - * Left column cloned table nodes - * @namespace - */ - "left": { - /** - * Cloned header table - * @type node - * @default null - */ - "header": null, - - /** - * Cloned body table - * @type node - * @default null - */ - "body": null, - - /** - * Cloned footer table - * @type node - * @default null - */ - "footer": null - }, - - /** - * Right column cloned table nodes - * @namespace - */ - "right": { - /** - * Cloned header table - * @type node - * @default null - */ - "header": null, - - /** - * Cloned body table - * @type node - * @default null - */ - "body": null, - - /** - * Cloned footer table - * @type node - * @default null - */ - "footer": null - } - } - }; - - /* Attach the instance to the DataTables instance so it can be accessed easily */ - dtSettings._oFixedColumns = this; - - /* Let's do it */ - if ( ! dtSettings._bInitComplete ) - { - dtSettings.oApi._fnCallbackReg( dtSettings, 'aoInitComplete', function () { - that._fnConstruct( init ); - }, 'FixedColumns' ); - } - else - { - this._fnConstruct( init ); - } -}; - - - -FixedColumns.prototype = /** @lends FixedColumns.prototype */{ - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Public methods - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - /** - * Update the fixed columns - including headers and footers. Note that FixedColumns will - * automatically update the display whenever the host DataTable redraws. - * @returns {void} - * @example - * var table = $('#example').dataTable( { - * "scrollX": "100%" - * } ); - * var fc = new $.fn.dataTable.fixedColumns( table ); - * - * // at some later point when the table has been manipulated.... - * fc.fnUpdate(); - */ - "fnUpdate": function () - { - this._fnDraw( true ); - }, - - - /** - * Recalculate the resizes of the 3x3 grid that FixedColumns uses for display of the table. - * This is useful if you update the width of the table container. Note that FixedColumns will - * perform this function automatically when the window.resize event is fired. - * @returns {void} - * @example - * var table = $('#example').dataTable( { - * "scrollX": "100%" - * } ); - * var fc = new $.fn.dataTable.fixedColumns( table ); - * - * // Resize the table container and then have FixedColumns adjust its layout.... - * $('#content').width( 1200 ); - * fc.fnRedrawLayout(); - */ - "fnRedrawLayout": function () - { - this._fnColCalc(); - this._fnGridLayout(); - this.fnUpdate(); - }, - - - /** - * Mark a row such that it's height should be recalculated when using 'semiauto' row - * height matching. This function will have no effect when 'none' or 'auto' row height - * matching is used. - * @param {Node} nTr TR element that should have it's height recalculated - * @returns {void} - * @example - * var table = $('#example').dataTable( { - * "scrollX": "100%" - * } ); - * var fc = new $.fn.dataTable.fixedColumns( table ); - * - * // manipulate the table - mark the row as needing an update then update the table - * // this allows the redraw performed by DataTables fnUpdate to recalculate the row - * // height - * fc.fnRecalculateHeight(); - * table.fnUpdate( $('#example tbody tr:eq(0)')[0], ["insert date", 1, 2, 3 ... ]); - */ - "fnRecalculateHeight": function ( nTr ) - { - delete nTr._DTTC_iHeight; - nTr.style.height = 'auto'; - }, - - - /** - * Set the height of a given row - provides cross browser compatibility - * @param {Node} nTarget TR element that should have it's height recalculated - * @param {int} iHeight Height in pixels to set - * @returns {void} - * @example - * var table = $('#example').dataTable( { - * "scrollX": "100%" - * } ); - * var fc = new $.fn.dataTable.fixedColumns( table ); - * - * // You may want to do this after manipulating a row in the fixed column - * fc.fnSetRowHeight( $('#example tbody tr:eq(0)')[0], 50 ); - */ - "fnSetRowHeight": function ( nTarget, iHeight ) - { - nTarget.style.height = iHeight+"px"; - }, - - - /** - * Get data index information about a row or cell in the table body. - * This function is functionally identical to fnGetPosition in DataTables, - * taking the same parameter (TH, TD or TR node) and returning exactly the - * the same information (data index information). THe difference between - * the two is that this method takes into account the fixed columns in the - * table, so you can pass in nodes from the master table, or the cloned - * tables and get the index position for the data in the main table. - * @param {node} node TR, TH or TD element to get the information about - * @returns {int} If nNode is given as a TR, then a single index is - * returned, or if given as a cell, an array of [row index, column index - * (visible), column index (all)] is given. - */ - "fnGetPosition": function ( node ) - { - var idx; - var inst = this.s.dt.oInstance; - - if ( ! $(node).parents('.DTFC_Cloned').length ) - { - // Not in a cloned table - return inst.fnGetPosition( node ); - } - else - { - // Its in the cloned table, so need to look up position - if ( node.nodeName.toLowerCase() === 'tr' ) { - idx = $(node).index(); - return inst.fnGetPosition( $('tr', this.s.dt.nTBody)[ idx ] ); - } - else - { - var colIdx = $(node).index(); - idx = $(node.parentNode).index(); - var row = inst.fnGetPosition( $('tr', this.s.dt.nTBody)[ idx ] ); - - return [ - row, - colIdx, - inst.oApi._fnVisibleToColumnIndex( this.s.dt, colIdx ) - ]; - } - } - }, - - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Private methods (they are of course public in JS, but recommended as private) - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - /** - * Initialisation for FixedColumns - * @param {Object} oInit User settings for initialisation - * @returns {void} - * @private - */ - "_fnConstruct": function ( oInit ) - { - var i, iLen, iWidth, - that = this; - - /* Sanity checking */ - if ( typeof this.s.dt.oInstance.fnVersionCheck != 'function' || - this.s.dt.oInstance.fnVersionCheck( '1.8.0' ) !== true ) - { - alert( "FixedColumns "+FixedColumns.VERSION+" required DataTables 1.8.0 or later. "+ - "Please upgrade your DataTables installation" ); - return; - } - - if ( this.s.dt.oScroll.sX === "" ) - { - this.s.dt.oInstance.oApi._fnLog( this.s.dt, 1, "FixedColumns is not needed (no "+ - "x-scrolling in DataTables enabled), so no action will be taken. Use 'FixedHeader' for "+ - "column fixing when scrolling is not enabled" ); - return; - } - - /* Apply the settings from the user / defaults */ - this.s = $.extend( true, this.s, FixedColumns.defaults, oInit ); - - /* Set up the DOM as we need it and cache nodes */ - var classes = this.s.dt.oClasses; - this.dom.grid.dt = $(this.s.dt.nTable).parents('div.'+classes.sScrollWrapper)[0]; - this.dom.scroller = $('div.'+classes.sScrollBody, this.dom.grid.dt )[0]; - - /* Set up the DOM that we want for the fixed column layout grid */ - this._fnColCalc(); - this._fnGridSetup(); - - /* Event handlers */ - var mouseController; - - // When the body is scrolled - scroll the left and right columns - $(this.dom.scroller) - .on( 'mouseover.DTFC touchstart.DTFC', function () { - mouseController = 'main'; - } ) - .on( 'scroll.DTFC', function () { - if ( mouseController === 'main' ) { - if ( that.s.iLeftColumns > 0 ) { - that.dom.grid.left.liner.scrollTop = that.dom.scroller.scrollTop; - } - if ( that.s.iRightColumns > 0 ) { - that.dom.grid.right.liner.scrollTop = that.dom.scroller.scrollTop; - } - } - } ); - - var wheelType = 'onwheel' in document.createElement('div') ? - 'wheel.DTFC' : - 'mousewheel.DTFC'; - - if ( that.s.iLeftColumns > 0 ) { - // When scrolling the left column, scroll the body and right column - $(that.dom.grid.left.liner) - .on( 'mouseover.DTFC touchstart.DTFC', function () { - mouseController = 'left'; - } ) - .on( 'scroll.DTFC', function () { - if ( mouseController === 'left' ) { - that.dom.scroller.scrollTop = that.dom.grid.left.liner.scrollTop; - if ( that.s.iRightColumns > 0 ) { - that.dom.grid.right.liner.scrollTop = that.dom.grid.left.liner.scrollTop; - } - } - } ) - .on( wheelType, function(e) { // xxx update the destroy as well - // Pass horizontal scrolling through - var xDelta = e.type === 'wheel' ? - -e.originalEvent.deltaX : - e.originalEvent.wheelDeltaX; - that.dom.scroller.scrollLeft -= xDelta; - } ); - } - - if ( that.s.iRightColumns > 0 ) { - // When scrolling the right column, scroll the body and the left column - $(that.dom.grid.right.liner) - .on( 'mouseover.DTFC touchstart.DTFC', function () { - mouseController = 'right'; - } ) - .on( 'scroll.DTFC', function () { - if ( mouseController === 'right' ) { - that.dom.scroller.scrollTop = that.dom.grid.right.liner.scrollTop; - if ( that.s.iLeftColumns > 0 ) { - that.dom.grid.left.liner.scrollTop = that.dom.grid.right.liner.scrollTop; - } - } - } ) - .on( wheelType, function(e) { - // Pass horizontal scrolling through - var xDelta = e.type === 'wheel' ? - -e.originalEvent.deltaX : - e.originalEvent.wheelDeltaX; - that.dom.scroller.scrollLeft -= xDelta; - } ); - } - - $(window).on( 'resize.DTFC', function () { - that._fnGridLayout.call( that ); - } ); - - var bFirstDraw = true; - var jqTable = $(this.s.dt.nTable); - - jqTable - .on( 'draw.dt.DTFC', function () { - that._fnDraw.call( that, bFirstDraw ); - bFirstDraw = false; - } ) - .on( 'column-sizing.dt.DTFC', function () { - that._fnColCalc(); - that._fnGridLayout( that ); - } ) - .on( 'column-visibility.dt.DTFC', function () { - that._fnColCalc(); - that._fnGridLayout( that ); - that._fnDraw( true ); - } ) - .on( 'destroy.dt.DTFC', function () { - jqTable.off( 'column-sizing.dt.DTFC destroy.dt.DTFC draw.dt.DTFC' ); - - $(that.dom.scroller).off( 'scroll.DTFC mouseover.DTFC' ); - $(window).off( 'resize.DTFC' ); - - $(that.dom.grid.left.liner).off( 'scroll.DTFC mouseover.DTFC '+wheelType ); - $(that.dom.grid.left.wrapper).remove(); - - $(that.dom.grid.right.liner).off( 'scroll.DTFC mouseover.DTFC '+wheelType ); - $(that.dom.grid.right.wrapper).remove(); - } ); - - /* Get things right to start with - note that due to adjusting the columns, there must be - * another redraw of the main table. It doesn't need to be a full redraw however. - */ - this._fnGridLayout(); - this.s.dt.oInstance.fnDraw(false); - }, - - - /** - * Calculate the column widths for the grid layout - * @returns {void} - * @private - */ - "_fnColCalc": function () - { - var that = this; - var iLeftWidth = 0; - var iRightWidth = 0; - - this.s.aiInnerWidths = []; - this.s.aiOuterWidths = []; - - $.each( this.s.dt.aoColumns, function (i, col) { - var th = $(col.nTh); - var border; - - if ( ! th.filter(':visible').length ) { - that.s.aiInnerWidths.push( 0 ); - that.s.aiOuterWidths.push( 0 ); - } - else - { - // Inner width is used to assign widths to cells - // Outer width is used to calculate the container - var iWidth = th.outerWidth(); - - // When working with the left most-cell, need to add on the - // table's border to the outerWidth, since we need to take - // account of it, but it isn't in any cell - if ( that.s.aiOuterWidths.length === 0 ) { - border = $(that.s.dt.nTable).css('border-left-width'); - iWidth += typeof border === 'string' ? 1 : parseInt( border, 10 ); - } - - // Likewise with the final column on the right - if ( that.s.aiOuterWidths.length === that.s.dt.aoColumns.length-1 ) { - border = $(that.s.dt.nTable).css('border-right-width'); - iWidth += typeof border === 'string' ? 1 : parseInt( border, 10 ); - } - - that.s.aiOuterWidths.push( iWidth ); - that.s.aiInnerWidths.push( th.width() ); - - if ( i < that.s.iLeftColumns ) - { - iLeftWidth += iWidth; - } - - if ( that.s.iTableColumns-that.s.iRightColumns <= i ) - { - iRightWidth += iWidth; - } - } - } ); - - this.s.iLeftWidth = iLeftWidth; - this.s.iRightWidth = iRightWidth; - }, - - - /** - * Set up the DOM for the fixed column. The way the layout works is to create a 1x3 grid - * for the left column, the DataTable (for which we just reuse the scrolling element DataTable - * puts into the DOM) and the right column. In each of he two fixed column elements there is a - * grouping wrapper element and then a head, body and footer wrapper. In each of these we then - * place the cloned header, body or footer tables. This effectively gives as 3x3 grid structure. - * @returns {void} - * @private - */ - "_fnGridSetup": function () - { - var that = this; - var oOverflow = this._fnDTOverflow(); - var block; - - this.dom.body = this.s.dt.nTable; - this.dom.header = this.s.dt.nTHead.parentNode; - this.dom.header.parentNode.parentNode.style.position = "relative"; - - var nSWrapper = - $('<div class="DTFC_ScrollWrapper" style="position:relative; clear:both;">'+ - '<div class="DTFC_LeftWrapper" style="position:absolute; top:0; left:0;">'+ - '<div class="DTFC_LeftHeadWrapper" style="position:relative; top:0; left:0; overflow:hidden;"></div>'+ - '<div class="DTFC_LeftBodyWrapper" style="position:relative; top:0; left:0; overflow:hidden;">'+ - '<div class="DTFC_LeftBodyLiner" style="position:relative; top:0; left:0; overflow-y:scroll;"></div>'+ - '</div>'+ - '<div class="DTFC_LeftFootWrapper" style="position:relative; top:0; left:0; overflow:hidden;"></div>'+ - '</div>'+ - '<div class="DTFC_RightWrapper" style="position:absolute; top:0; left:0;">'+ - '<div class="DTFC_RightHeadWrapper" style="position:relative; top:0; left:0;">'+ - '<div class="DTFC_RightHeadBlocker DTFC_Blocker" style="position:absolute; top:0; bottom:0;"></div>'+ - '</div>'+ - '<div class="DTFC_RightBodyWrapper" style="position:relative; top:0; left:0; overflow:hidden;">'+ - '<div class="DTFC_RightBodyLiner" style="position:relative; top:0; left:0; overflow-y:scroll;"></div>'+ - '</div>'+ - '<div class="DTFC_RightFootWrapper" style="position:relative; top:0; left:0;">'+ - '<div class="DTFC_RightFootBlocker DTFC_Blocker" style="position:absolute; top:0; bottom:0;"></div>'+ - '</div>'+ - '</div>'+ - '</div>')[0]; - var nLeft = nSWrapper.childNodes[0]; - var nRight = nSWrapper.childNodes[1]; - - this.dom.grid.dt.parentNode.insertBefore( nSWrapper, this.dom.grid.dt ); - nSWrapper.appendChild( this.dom.grid.dt ); - - this.dom.grid.wrapper = nSWrapper; - - if ( this.s.iLeftColumns > 0 ) - { - this.dom.grid.left.wrapper = nLeft; - this.dom.grid.left.head = nLeft.childNodes[0]; - this.dom.grid.left.body = nLeft.childNodes[1]; - this.dom.grid.left.liner = $('div.DTFC_LeftBodyLiner', nSWrapper)[0]; - - nSWrapper.appendChild( nLeft ); - } - - if ( this.s.iRightColumns > 0 ) - { - this.dom.grid.right.wrapper = nRight; - this.dom.grid.right.head = nRight.childNodes[0]; - this.dom.grid.right.body = nRight.childNodes[1]; - this.dom.grid.right.liner = $('div.DTFC_RightBodyLiner', nSWrapper)[0]; - - block = $('div.DTFC_RightHeadBlocker', nSWrapper)[0]; - block.style.width = oOverflow.bar+"px"; - block.style.right = -oOverflow.bar+"px"; - this.dom.grid.right.headBlock = block; - - block = $('div.DTFC_RightFootBlocker', nSWrapper)[0]; - block.style.width = oOverflow.bar+"px"; - block.style.right = -oOverflow.bar+"px"; - this.dom.grid.right.footBlock = block; - - nSWrapper.appendChild( nRight ); - } - - if ( this.s.dt.nTFoot ) - { - this.dom.footer = this.s.dt.nTFoot.parentNode; - if ( this.s.iLeftColumns > 0 ) - { - this.dom.grid.left.foot = nLeft.childNodes[2]; - } - if ( this.s.iRightColumns > 0 ) - { - this.dom.grid.right.foot = nRight.childNodes[2]; - } - } - }, - - - /** - * Style and position the grid used for the FixedColumns layout - * @returns {void} - * @private - */ - "_fnGridLayout": function () - { - var oGrid = this.dom.grid; - var iWidth = $(oGrid.wrapper).width(); - var iBodyHeight = $(this.s.dt.nTable.parentNode).outerHeight(); - var iFullHeight = $(this.s.dt.nTable.parentNode.parentNode).outerHeight(); - var oOverflow = this._fnDTOverflow(); - var - iLeftWidth = this.s.iLeftWidth, - iRightWidth = this.s.iRightWidth, - iRight; - var scrollbarAdjust = function ( node, width ) { - if ( ! oOverflow.bar ) { - // If there is no scrollbar (Macs) we need to hide the auto scrollbar - node.style.width = (width+20)+"px"; - node.style.paddingRight = "20px"; - node.style.boxSizing = "border-box"; - } - else { - // Otherwise just overflow by the scrollbar - node.style.width = (width+oOverflow.bar)+"px"; - } - }; - - // When x scrolling - don't paint the fixed columns over the x scrollbar - if ( oOverflow.x ) - { - iBodyHeight -= oOverflow.bar; - } - - oGrid.wrapper.style.height = iFullHeight+"px"; - - if ( this.s.iLeftColumns > 0 ) - { - oGrid.left.wrapper.style.width = iLeftWidth+"px"; - oGrid.left.wrapper.style.height = "1px"; - oGrid.left.body.style.height = iBodyHeight+"px"; - if ( oGrid.left.foot ) { - oGrid.left.foot.style.top = (oOverflow.x ? oOverflow.bar : 0)+"px"; // shift footer for scrollbar - } - - scrollbarAdjust( oGrid.left.liner, iLeftWidth ); - oGrid.left.liner.style.height = iBodyHeight+"px"; - } - - if ( this.s.iRightColumns > 0 ) - { - iRight = iWidth - iRightWidth; - if ( oOverflow.y ) - { - iRight -= oOverflow.bar; - } - - oGrid.right.wrapper.style.width = iRightWidth+"px"; - oGrid.right.wrapper.style.left = iRight+"px"; - oGrid.right.wrapper.style.height = "1px"; - oGrid.right.body.style.height = iBodyHeight+"px"; - if ( oGrid.right.foot ) { - oGrid.right.foot.style.top = (oOverflow.x ? oOverflow.bar : 0)+"px"; - } - - scrollbarAdjust( oGrid.right.liner, iRightWidth ); - oGrid.right.liner.style.height = iBodyHeight+"px"; - - oGrid.right.headBlock.style.display = oOverflow.y ? 'block' : 'none'; - oGrid.right.footBlock.style.display = oOverflow.y ? 'block' : 'none'; - } - }, - - - /** - * Get information about the DataTable's scrolling state - specifically if the table is scrolling - * on either the x or y axis, and also the scrollbar width. - * @returns {object} Information about the DataTables scrolling state with the properties: - * 'x', 'y' and 'bar' - * @private - */ - "_fnDTOverflow": function () - { - var nTable = this.s.dt.nTable; - var nTableScrollBody = nTable.parentNode; - var out = { - "x": false, - "y": false, - "bar": this.s.dt.oScroll.iBarWidth - }; - - if ( nTable.offsetWidth > nTableScrollBody.clientWidth ) - { - out.x = true; - } - - if ( nTable.offsetHeight > nTableScrollBody.clientHeight ) - { - out.y = true; - } - - return out; - }, - - - /** - * Clone and position the fixed columns - * @returns {void} - * @param {Boolean} bAll Indicate if the header and footer should be updated as well (true) - * @private - */ - "_fnDraw": function ( bAll ) - { - this._fnGridLayout(); - this._fnCloneLeft( bAll ); - this._fnCloneRight( bAll ); - - /* Draw callback function */ - if ( this.s.fnDrawCallback !== null ) - { - this.s.fnDrawCallback.call( this, this.dom.clone.left, this.dom.clone.right ); - } - - /* Event triggering */ - $(this).trigger( 'draw.dtfc', { - "leftClone": this.dom.clone.left, - "rightClone": this.dom.clone.right - } ); - }, - - - /** - * Clone the right columns - * @returns {void} - * @param {Boolean} bAll Indicate if the header and footer should be updated as well (true) - * @private - */ - "_fnCloneRight": function ( bAll ) - { - if ( this.s.iRightColumns <= 0 ) { - return; - } - - var that = this, - i, jq, - aiColumns = []; - - for ( i=this.s.iTableColumns-this.s.iRightColumns ; i<this.s.iTableColumns ; i++ ) { - if ( this.s.dt.aoColumns[i].bVisible ) { - aiColumns.push( i ); - } - } - - this._fnClone( this.dom.clone.right, this.dom.grid.right, aiColumns, bAll ); - }, - - - /** - * Clone the left columns - * @returns {void} - * @param {Boolean} bAll Indicate if the header and footer should be updated as well (true) - * @private - */ - "_fnCloneLeft": function ( bAll ) - { - if ( this.s.iLeftColumns <= 0 ) { - return; - } - - var that = this, - i, jq, - aiColumns = []; - - for ( i=0 ; i<this.s.iLeftColumns ; i++ ) { - if ( this.s.dt.aoColumns[i].bVisible ) { - aiColumns.push( i ); - } - } - - this._fnClone( this.dom.clone.left, this.dom.grid.left, aiColumns, bAll ); - }, - - - /** - * Make a copy of the layout object for a header or footer element from DataTables. Note that - * this method will clone the nodes in the layout object. - * @returns {Array} Copy of the layout array - * @param {Object} aoOriginal Layout array from DataTables (aoHeader or aoFooter) - * @param {Object} aiColumns Columns to copy - * @private - */ - "_fnCopyLayout": function ( aoOriginal, aiColumns ) - { - var aReturn = []; - var aClones = []; - var aCloned = []; - - for ( var i=0, iLen=aoOriginal.length ; i<iLen ; i++ ) - { - var aRow = []; - aRow.nTr = $(aoOriginal[i].nTr).clone(true, true)[0]; - - for ( var j=0, jLen=this.s.iTableColumns ; j<jLen ; j++ ) - { - if ( $.inArray( j, aiColumns ) === -1 ) - { - continue; - } - - var iCloned = $.inArray( aoOriginal[i][j].cell, aCloned ); - if ( iCloned === -1 ) - { - var nClone = $(aoOriginal[i][j].cell).clone(true, true)[0]; - aClones.push( nClone ); - aCloned.push( aoOriginal[i][j].cell ); - - aRow.push( { - "cell": nClone, - "unique": aoOriginal[i][j].unique - } ); - } - else - { - aRow.push( { - "cell": aClones[ iCloned ], - "unique": aoOriginal[i][j].unique - } ); - } - } - - aReturn.push( aRow ); - } - - return aReturn; - }, - - - /** - * Clone the DataTable nodes and place them in the DOM (sized correctly) - * @returns {void} - * @param {Object} oClone Object containing the header, footer and body cloned DOM elements - * @param {Object} oGrid Grid object containing the display grid elements for the cloned - * column (left or right) - * @param {Array} aiColumns Column indexes which should be operated on from the DataTable - * @param {Boolean} bAll Indicate if the header and footer should be updated as well (true) - * @private - */ - "_fnClone": function ( oClone, oGrid, aiColumns, bAll ) - { - var that = this, - i, iLen, j, jLen, jq, nTarget, iColumn, nClone, iIndex, aoCloneLayout, - jqCloneThead, aoFixedHeader, - dt = this.s.dt; - - /* - * Header - */ - if ( bAll ) - { - if ( oClone.header !== null ) - { - oClone.header.parentNode.removeChild( oClone.header ); - } - oClone.header = $(this.dom.header).clone(true, true)[0]; - oClone.header.className += " DTFC_Cloned"; - oClone.header.style.width = "100%"; - oGrid.head.appendChild( oClone.header ); - - /* Copy the DataTables layout cache for the header for our floating column */ - aoCloneLayout = this._fnCopyLayout( dt.aoHeader, aiColumns ); - jqCloneThead = $('>thead', oClone.header); - jqCloneThead.empty(); - - /* Add the created cloned TR elements to the table */ - for ( i=0, iLen=aoCloneLayout.length ; i<iLen ; i++ ) - { - jqCloneThead[0].appendChild( aoCloneLayout[i].nTr ); - } - - /* Use the handy _fnDrawHead function in DataTables to do the rowspan/colspan - * calculations for us - */ - dt.oApi._fnDrawHead( dt, aoCloneLayout, true ); - } - else - { - /* To ensure that we copy cell classes exactly, regardless of colspan, multiple rows - * etc, we make a copy of the header from the DataTable again, but don't insert the - * cloned cells, just copy the classes across. To get the matching layout for the - * fixed component, we use the DataTables _fnDetectHeader method, allowing 1:1 mapping - */ - aoCloneLayout = this._fnCopyLayout( dt.aoHeader, aiColumns ); - aoFixedHeader=[]; - - dt.oApi._fnDetectHeader( aoFixedHeader, $('>thead', oClone.header)[0] ); - - for ( i=0, iLen=aoCloneLayout.length ; i<iLen ; i++ ) - { - for ( j=0, jLen=aoCloneLayout[i].length ; j<jLen ; j++ ) - { - aoFixedHeader[i][j].cell.className = aoCloneLayout[i][j].cell.className; - - // If jQuery UI theming is used we need to copy those elements as well - $('span.DataTables_sort_icon', aoFixedHeader[i][j].cell).each( function () { - this.className = $('span.DataTables_sort_icon', aoCloneLayout[i][j].cell)[0].className; - } ); - } - } - } - this._fnEqualiseHeights( 'thead', this.dom.header, oClone.header ); - - /* - * Body - */ - if ( this.s.sHeightMatch == 'auto' ) - { - /* Remove any heights which have been applied already and let the browser figure it out */ - $('>tbody>tr', that.dom.body).css('height', 'auto'); - } - - if ( oClone.body !== null ) - { - oClone.body.parentNode.removeChild( oClone.body ); - oClone.body = null; - } - - oClone.body = $(this.dom.body).clone(true)[0]; - oClone.body.className += " DTFC_Cloned"; - oClone.body.style.paddingBottom = dt.oScroll.iBarWidth+"px"; - oClone.body.style.marginBottom = (dt.oScroll.iBarWidth*2)+"px"; /* For IE */ - if ( oClone.body.getAttribute('id') !== null ) - { - oClone.body.removeAttribute('id'); - } - - $('>thead>tr', oClone.body).empty(); - $('>tfoot', oClone.body).remove(); - - var nBody = $('tbody', oClone.body)[0]; - $(nBody).empty(); - if ( dt.aiDisplay.length > 0 ) - { - /* Copy the DataTables' header elements to force the column width in exactly the - * same way that DataTables does it - have the header element, apply the width and - * colapse it down - */ - var nInnerThead = $('>thead>tr', oClone.body)[0]; - for ( iIndex=0 ; iIndex<aiColumns.length ; iIndex++ ) - { - iColumn = aiColumns[iIndex]; - - nClone = $(dt.aoColumns[iColumn].nTh).clone(true)[0]; - nClone.innerHTML = ""; - - var oStyle = nClone.style; - oStyle.paddingTop = "0"; - oStyle.paddingBottom = "0"; - oStyle.borderTopWidth = "0"; - oStyle.borderBottomWidth = "0"; - oStyle.height = 0; - oStyle.width = that.s.aiInnerWidths[iColumn]+"px"; - - nInnerThead.appendChild( nClone ); - } - - /* Add in the tbody elements, cloning form the master table */ - $('>tbody>tr', that.dom.body).each( function (z) { - var n = this.cloneNode(false); - n.removeAttribute('id'); - var i = that.s.dt.oFeatures.bServerSide===false ? - that.s.dt.aiDisplay[ that.s.dt._iDisplayStart+z ] : z; - var aTds = that.s.dt.aoData[ i ].anCells || $(this).children('td, th'); - - for ( iIndex=0 ; iIndex<aiColumns.length ; iIndex++ ) - { - iColumn = aiColumns[iIndex]; - - if ( aTds.length > 0 ) - { - nClone = $( aTds[iColumn] ).clone(true, true)[0]; - n.appendChild( nClone ); - } - } - nBody.appendChild( n ); - } ); - } - else - { - $('>tbody>tr', that.dom.body).each( function (z) { - nClone = this.cloneNode(true); - nClone.className += ' DTFC_NoData'; - $('td', nClone).html(''); - nBody.appendChild( nClone ); - } ); - } - - oClone.body.style.width = "100%"; - oClone.body.style.margin = "0"; - oClone.body.style.padding = "0"; - - // Interop with Scroller - need to use a height forcing element in the - // scrolling area in the same way that Scroller does in the body scroll. - if ( dt.oScroller !== undefined ) - { - var scrollerForcer = dt.oScroller.dom.force; - - if ( ! oGrid.forcer ) { - oGrid.forcer = scrollerForcer.cloneNode( true ); - oGrid.liner.appendChild( oGrid.forcer ); - } - else { - oGrid.forcer.style.height = scrollerForcer.style.height; - } - } - - oGrid.liner.appendChild( oClone.body ); - - this._fnEqualiseHeights( 'tbody', that.dom.body, oClone.body ); - - /* - * Footer - */ - if ( dt.nTFoot !== null ) - { - if ( bAll ) - { - if ( oClone.footer !== null ) - { - oClone.footer.parentNode.removeChild( oClone.footer ); - } - oClone.footer = $(this.dom.footer).clone(true, true)[0]; - oClone.footer.className += " DTFC_Cloned"; - oClone.footer.style.width = "100%"; - oGrid.foot.appendChild( oClone.footer ); - - /* Copy the footer just like we do for the header */ - aoCloneLayout = this._fnCopyLayout( dt.aoFooter, aiColumns ); - var jqCloneTfoot = $('>tfoot', oClone.footer); - jqCloneTfoot.empty(); - - for ( i=0, iLen=aoCloneLayout.length ; i<iLen ; i++ ) - { - jqCloneTfoot[0].appendChild( aoCloneLayout[i].nTr ); - } - dt.oApi._fnDrawHead( dt, aoCloneLayout, true ); - } - else - { - aoCloneLayout = this._fnCopyLayout( dt.aoFooter, aiColumns ); - var aoCurrFooter=[]; - - dt.oApi._fnDetectHeader( aoCurrFooter, $('>tfoot', oClone.footer)[0] ); - - for ( i=0, iLen=aoCloneLayout.length ; i<iLen ; i++ ) - { - for ( j=0, jLen=aoCloneLayout[i].length ; j<jLen ; j++ ) - { - aoCurrFooter[i][j].cell.className = aoCloneLayout[i][j].cell.className; - } - } - } - this._fnEqualiseHeights( 'tfoot', this.dom.footer, oClone.footer ); - } - - /* Equalise the column widths between the header footer and body - body get's priority */ - var anUnique = dt.oApi._fnGetUniqueThs( dt, $('>thead', oClone.header)[0] ); - $(anUnique).each( function (i) { - iColumn = aiColumns[i]; - this.style.width = that.s.aiInnerWidths[iColumn]+"px"; - } ); - - if ( that.s.dt.nTFoot !== null ) - { - anUnique = dt.oApi._fnGetUniqueThs( dt, $('>tfoot', oClone.footer)[0] ); - $(anUnique).each( function (i) { - iColumn = aiColumns[i]; - this.style.width = that.s.aiInnerWidths[iColumn]+"px"; - } ); - } - }, - - - /** - * From a given table node (THEAD etc), get a list of TR direct child elements - * @param {Node} nIn Table element to search for TR elements (THEAD, TBODY or TFOOT element) - * @returns {Array} List of TR elements found - * @private - */ - "_fnGetTrNodes": function ( nIn ) - { - var aOut = []; - for ( var i=0, iLen=nIn.childNodes.length ; i<iLen ; i++ ) - { - if ( nIn.childNodes[i].nodeName.toUpperCase() == "TR" ) - { - aOut.push( nIn.childNodes[i] ); - } - } - return aOut; - }, - - - /** - * Equalise the heights of the rows in a given table node in a cross browser way - * @returns {void} - * @param {String} nodeName Node type - thead, tbody or tfoot - * @param {Node} original Original node to take the heights from - * @param {Node} clone Copy the heights to - * @private - */ - "_fnEqualiseHeights": function ( nodeName, original, clone ) - { - if ( this.s.sHeightMatch == 'none' && nodeName !== 'thead' && nodeName !== 'tfoot' ) - { - return; - } - - var that = this, - i, iLen, iHeight, iHeight2, iHeightOriginal, iHeightClone, - rootOriginal = original.getElementsByTagName(nodeName)[0], - rootClone = clone.getElementsByTagName(nodeName)[0], - jqBoxHack = $('>'+nodeName+'>tr:eq(0)', original).children(':first'), - iBoxHack = jqBoxHack.outerHeight() - jqBoxHack.height(), - anOriginal = this._fnGetTrNodes( rootOriginal ), - anClone = this._fnGetTrNodes( rootClone ), - heights = []; - - for ( i=0, iLen=anClone.length ; i<iLen ; i++ ) - { - iHeightOriginal = anOriginal[i].offsetHeight; - iHeightClone = anClone[i].offsetHeight; - iHeight = iHeightClone > iHeightOriginal ? iHeightClone : iHeightOriginal; - - if ( this.s.sHeightMatch == 'semiauto' ) - { - anOriginal[i]._DTTC_iHeight = iHeight; - } - - heights.push( iHeight ); - } - - for ( i=0, iLen=anClone.length ; i<iLen ; i++ ) - { - anClone[i].style.height = heights[i]+"px"; - anOriginal[i].style.height = heights[i]+"px"; - } - } -}; - - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Statics - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/** - * FixedColumns default settings for initialisation - * @name FixedColumns.defaults - * @namespace - * @static - */ -FixedColumns.defaults = /** @lends FixedColumns.defaults */{ - /** - * Number of left hand columns to fix in position - * @type int - * @default 1 - * @static - * @example - * var = $('#example').dataTable( { - * "scrollX": "100%" - * } ); - * new $.fn.dataTable.fixedColumns( table, { - * "leftColumns": 2 - * } ); - */ - "iLeftColumns": 1, - - /** - * Number of right hand columns to fix in position - * @type int - * @default 0 - * @static - * @example - * var table = $('#example').dataTable( { - * "scrollX": "100%" - * } ); - * new $.fn.dataTable.fixedColumns( table, { - * "rightColumns": 1 - * } ); - */ - "iRightColumns": 0, - - /** - * Draw callback function which is called when FixedColumns has redrawn the fixed assets - * @type function(object, object):void - * @default null - * @static - * @example - * var table = $('#example').dataTable( { - * "scrollX": "100%" - * } ); - * new $.fn.dataTable.fixedColumns( table, { - * "drawCallback": function () { - * alert( "FixedColumns redraw" ); - * } - * } ); - */ - "fnDrawCallback": null, - - /** - * Height matching algorthim to use. This can be "none" which will result in no height - * matching being applied by FixedColumns (height matching could be forced by CSS in this - * case), "semiauto" whereby the height calculation will be performed once, and the result - * cached to be used again (fnRecalculateHeight can be used to force recalculation), or - * "auto" when height matching is performed on every draw (slowest but must accurate) - * @type string - * @default semiauto - * @static - * @example - * var table = $('#example').dataTable( { - * "scrollX": "100%" - * } ); - * new $.fn.dataTable.fixedColumns( table, { - * "heightMatch": "auto" - * } ); - */ - "sHeightMatch": "semiauto" -}; - - - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Constants - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/** - * FixedColumns version - * @name FixedColumns.version - * @type String - * @default See code - * @static - */ -FixedColumns.version = "3.0.4"; - - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Fired events (for documentation) - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - -/** - * Event fired whenever FixedColumns redraws the fixed columns (i.e. clones the table elements from the main DataTable). This will occur whenever the DataTable that the FixedColumns instance is attached does its own draw. - * @name FixedColumns#draw.dtfc - * @event - * @param {event} e jQuery event object - * @param {object} o Event parameters from FixedColumns - * @param {object} o.leftClone Instance's object dom.clone.left for easy reference. This object contains references to the left fixed clumn column's nodes - * @param {object} o.rightClone Instance's object dom.clone.right for easy reference. This object contains references to the right fixed clumn column's nodes - */ - - -// Make FixedColumns accessible from the DataTables instance -$.fn.dataTable.FixedColumns = FixedColumns; -$.fn.DataTable.FixedColumns = FixedColumns; - - -return FixedColumns; -}; // /factory - - -// Define as an AMD module if possible -if ( typeof define === 'function' && define.amd ) { - define( ['jquery', 'datatables'], factory ); -} -else if ( typeof exports === 'object' ) { - // Node/CommonJS - factory( require('jquery'), require('datatables') ); -} -else if ( jQuery && !jQuery.fn.dataTable.FixedColumns ) { - // Otherwise simply initialise as normal, stopping multiple evaluation - factory( jQuery, jQuery.fn.dataTable ); -} - - -})(window, document); - diff --git a/assets/plugins/datatables/extensions/FixedColumns/js/dataTables.fixedColumns.min.js b/assets/plugins/datatables/extensions/FixedColumns/js/dataTables.fixedColumns.min.js deleted file mode 100644 index 69878307..00000000 --- a/assets/plugins/datatables/extensions/FixedColumns/js/dataTables.fixedColumns.min.js +++ /dev/null @@ -1,30 +0,0 @@ -/*! - FixedColumns 3.0.4 - ©2010-2014 SpryMedia Ltd - datatables.net/license -*/ -(function(r,s,t){var p=function(d){var j=function(a,b){var c=this;if(this instanceof j){"undefined"==typeof b&&(b={});var g=d.fn.dataTable.camelToHungarian;g&&(g(j.defaults,j.defaults,!0),g(j.defaults,b));g=d.fn.dataTable.Api?(new d.fn.dataTable.Api(a)).settings()[0]:a.fnSettings();this.s={dt:g,iTableColumns:g.aoColumns.length,aiOuterWidths:[],aiInnerWidths:[]};this.dom={scroller:null,header:null,body:null,footer:null,grid:{wrapper:null,dt:null,left:{wrapper:null,head:null,body:null,foot:null},right:{wrapper:null, -head:null,body:null,foot:null}},clone:{left:{header:null,body:null,footer:null},right:{header:null,body:null,footer:null}}};g._oFixedColumns=this;g._bInitComplete?this._fnConstruct(b):g.oApi._fnCallbackReg(g,"aoInitComplete",function(){c._fnConstruct(b)},"FixedColumns")}else alert("FixedColumns warning: FixedColumns must be initialised with the 'new' keyword.")};j.prototype={fnUpdate:function(){this._fnDraw(!0)},fnRedrawLayout:function(){this._fnColCalc();this._fnGridLayout();this.fnUpdate()},fnRecalculateHeight:function(a){delete a._DTTC_iHeight; -a.style.height="auto"},fnSetRowHeight:function(a,b){a.style.height=b+"px"},fnGetPosition:function(a){var b=this.s.dt.oInstance;if(d(a).parents(".DTFC_Cloned").length){if("tr"===a.nodeName.toLowerCase())return a=d(a).index(),b.fnGetPosition(d("tr",this.s.dt.nTBody)[a]);var c=d(a).index(),a=d(a.parentNode).index();return[b.fnGetPosition(d("tr",this.s.dt.nTBody)[a]),c,b.oApi._fnVisibleToColumnIndex(this.s.dt,c)]}return b.fnGetPosition(a)},_fnConstruct:function(a){var b=this;if("function"!=typeof this.s.dt.oInstance.fnVersionCheck|| -!0!==this.s.dt.oInstance.fnVersionCheck("1.8.0"))alert("FixedColumns "+j.VERSION+" required DataTables 1.8.0 or later. Please upgrade your DataTables installation");else if(""===this.s.dt.oScroll.sX)this.s.dt.oInstance.oApi._fnLog(this.s.dt,1,"FixedColumns is not needed (no x-scrolling in DataTables enabled), so no action will be taken. Use 'FixedHeader' for column fixing when scrolling is not enabled");else{this.s=d.extend(!0,this.s,j.defaults,a);a=this.s.dt.oClasses;this.dom.grid.dt=d(this.s.dt.nTable).parents("div."+ -a.sScrollWrapper)[0];this.dom.scroller=d("div."+a.sScrollBody,this.dom.grid.dt)[0];this._fnColCalc();this._fnGridSetup();var c;d(this.dom.scroller).on("mouseover.DTFC touchstart.DTFC",function(){c="main"}).on("scroll.DTFC",function(){if("main"===c&&(0<b.s.iLeftColumns&&(b.dom.grid.left.liner.scrollTop=b.dom.scroller.scrollTop),0<b.s.iRightColumns))b.dom.grid.right.liner.scrollTop=b.dom.scroller.scrollTop});var g="onwheel"in s.createElement("div")?"wheel.DTFC":"mousewheel.DTFC";if(0<b.s.iLeftColumns)d(b.dom.grid.left.liner).on("mouseover.DTFC touchstart.DTFC", -function(){c="left"}).on("scroll.DTFC",function(){"left"===c&&(b.dom.scroller.scrollTop=b.dom.grid.left.liner.scrollTop,0<b.s.iRightColumns&&(b.dom.grid.right.liner.scrollTop=b.dom.grid.left.liner.scrollTop))}).on(g,function(a){b.dom.scroller.scrollLeft-="wheel"===a.type?-a.originalEvent.deltaX:a.originalEvent.wheelDeltaX});if(0<b.s.iRightColumns)d(b.dom.grid.right.liner).on("mouseover.DTFC touchstart.DTFC",function(){c="right"}).on("scroll.DTFC",function(){"right"===c&&(b.dom.scroller.scrollTop= -b.dom.grid.right.liner.scrollTop,0<b.s.iLeftColumns&&(b.dom.grid.left.liner.scrollTop=b.dom.grid.right.liner.scrollTop))}).on(g,function(a){b.dom.scroller.scrollLeft-="wheel"===a.type?-a.originalEvent.deltaX:a.originalEvent.wheelDeltaX});d(r).on("resize.DTFC",function(){b._fnGridLayout.call(b)});var f=!0,e=d(this.s.dt.nTable);e.on("draw.dt.DTFC",function(){b._fnDraw.call(b,f);f=!1}).on("column-sizing.dt.DTFC",function(){b._fnColCalc();b._fnGridLayout(b)}).on("column-visibility.dt.DTFC",function(){b._fnColCalc(); -b._fnGridLayout(b);b._fnDraw(!0)}).on("destroy.dt.DTFC",function(){e.off("column-sizing.dt.DTFC destroy.dt.DTFC draw.dt.DTFC");d(b.dom.scroller).off("scroll.DTFC mouseover.DTFC");d(r).off("resize.DTFC");d(b.dom.grid.left.liner).off("scroll.DTFC mouseover.DTFC "+g);d(b.dom.grid.left.wrapper).remove();d(b.dom.grid.right.liner).off("scroll.DTFC mouseover.DTFC "+g);d(b.dom.grid.right.wrapper).remove()});this._fnGridLayout();this.s.dt.oInstance.fnDraw(!1)}},_fnColCalc:function(){var a=this,b=0,c=0;this.s.aiInnerWidths= -[];this.s.aiOuterWidths=[];d.each(this.s.dt.aoColumns,function(g,f){var e=d(f.nTh),h;if(e.filter(":visible").length){var i=e.outerWidth();0===a.s.aiOuterWidths.length&&(h=d(a.s.dt.nTable).css("border-left-width"),i+="string"===typeof h?1:parseInt(h,10));a.s.aiOuterWidths.length===a.s.dt.aoColumns.length-1&&(h=d(a.s.dt.nTable).css("border-right-width"),i+="string"===typeof h?1:parseInt(h,10));a.s.aiOuterWidths.push(i);a.s.aiInnerWidths.push(e.width());g<a.s.iLeftColumns&&(b+=i);a.s.iTableColumns-a.s.iRightColumns<= -g&&(c+=i)}else a.s.aiInnerWidths.push(0),a.s.aiOuterWidths.push(0)});this.s.iLeftWidth=b;this.s.iRightWidth=c},_fnGridSetup:function(){var a=this._fnDTOverflow(),b;this.dom.body=this.s.dt.nTable;this.dom.header=this.s.dt.nTHead.parentNode;this.dom.header.parentNode.parentNode.style.position="relative";var c=d('<div class="DTFC_ScrollWrapper" style="position:relative; clear:both;"><div class="DTFC_LeftWrapper" style="position:absolute; top:0; left:0;"><div class="DTFC_LeftHeadWrapper" style="position:relative; top:0; left:0; overflow:hidden;"></div><div class="DTFC_LeftBodyWrapper" style="position:relative; top:0; left:0; overflow:hidden;"><div class="DTFC_LeftBodyLiner" style="position:relative; top:0; left:0; overflow-y:scroll;"></div></div><div class="DTFC_LeftFootWrapper" style="position:relative; top:0; left:0; overflow:hidden;"></div></div><div class="DTFC_RightWrapper" style="position:absolute; top:0; left:0;"><div class="DTFC_RightHeadWrapper" style="position:relative; top:0; left:0;"><div class="DTFC_RightHeadBlocker DTFC_Blocker" style="position:absolute; top:0; bottom:0;"></div></div><div class="DTFC_RightBodyWrapper" style="position:relative; top:0; left:0; overflow:hidden;"><div class="DTFC_RightBodyLiner" style="position:relative; top:0; left:0; overflow-y:scroll;"></div></div><div class="DTFC_RightFootWrapper" style="position:relative; top:0; left:0;"><div class="DTFC_RightFootBlocker DTFC_Blocker" style="position:absolute; top:0; bottom:0;"></div></div></div></div>')[0], -g=c.childNodes[0],f=c.childNodes[1];this.dom.grid.dt.parentNode.insertBefore(c,this.dom.grid.dt);c.appendChild(this.dom.grid.dt);this.dom.grid.wrapper=c;0<this.s.iLeftColumns&&(this.dom.grid.left.wrapper=g,this.dom.grid.left.head=g.childNodes[0],this.dom.grid.left.body=g.childNodes[1],this.dom.grid.left.liner=d("div.DTFC_LeftBodyLiner",c)[0],c.appendChild(g));0<this.s.iRightColumns&&(this.dom.grid.right.wrapper=f,this.dom.grid.right.head=f.childNodes[0],this.dom.grid.right.body=f.childNodes[1],this.dom.grid.right.liner= -d("div.DTFC_RightBodyLiner",c)[0],b=d("div.DTFC_RightHeadBlocker",c)[0],b.style.width=a.bar+"px",b.style.right=-a.bar+"px",this.dom.grid.right.headBlock=b,b=d("div.DTFC_RightFootBlocker",c)[0],b.style.width=a.bar+"px",b.style.right=-a.bar+"px",this.dom.grid.right.footBlock=b,c.appendChild(f));if(this.s.dt.nTFoot&&(this.dom.footer=this.s.dt.nTFoot.parentNode,0<this.s.iLeftColumns&&(this.dom.grid.left.foot=g.childNodes[2]),0<this.s.iRightColumns))this.dom.grid.right.foot=f.childNodes[2]},_fnGridLayout:function(){var a= -this.dom.grid,b=d(a.wrapper).width(),c=d(this.s.dt.nTable.parentNode).outerHeight(),g=d(this.s.dt.nTable.parentNode.parentNode).outerHeight(),f=this._fnDTOverflow(),e=this.s.iLeftWidth,h=this.s.iRightWidth,i=function(a,b){f.bar?a.style.width=b+f.bar+"px":(a.style.width=b+20+"px",a.style.paddingRight="20px",a.style.boxSizing="border-box")};f.x&&(c-=f.bar);a.wrapper.style.height=g+"px";0<this.s.iLeftColumns&&(a.left.wrapper.style.width=e+"px",a.left.wrapper.style.height="1px",a.left.body.style.height= -c+"px",a.left.foot&&(a.left.foot.style.top=(f.x?f.bar:0)+"px"),i(a.left.liner,e),a.left.liner.style.height=c+"px");0<this.s.iRightColumns&&(b-=h,f.y&&(b-=f.bar),a.right.wrapper.style.width=h+"px",a.right.wrapper.style.left=b+"px",a.right.wrapper.style.height="1px",a.right.body.style.height=c+"px",a.right.foot&&(a.right.foot.style.top=(f.x?f.bar:0)+"px"),i(a.right.liner,h),a.right.liner.style.height=c+"px",a.right.headBlock.style.display=f.y?"block":"none",a.right.footBlock.style.display=f.y?"block": -"none")},_fnDTOverflow:function(){var a=this.s.dt.nTable,b=a.parentNode,c={x:!1,y:!1,bar:this.s.dt.oScroll.iBarWidth};a.offsetWidth>b.clientWidth&&(c.x=!0);a.offsetHeight>b.clientHeight&&(c.y=!0);return c},_fnDraw:function(a){this._fnGridLayout();this._fnCloneLeft(a);this._fnCloneRight(a);null!==this.s.fnDrawCallback&&this.s.fnDrawCallback.call(this,this.dom.clone.left,this.dom.clone.right);d(this).trigger("draw.dtfc",{leftClone:this.dom.clone.left,rightClone:this.dom.clone.right})},_fnCloneRight:function(a){if(!(0>= -this.s.iRightColumns)){var b,c=[];for(b=this.s.iTableColumns-this.s.iRightColumns;b<this.s.iTableColumns;b++)this.s.dt.aoColumns[b].bVisible&&c.push(b);this._fnClone(this.dom.clone.right,this.dom.grid.right,c,a)}},_fnCloneLeft:function(a){if(!(0>=this.s.iLeftColumns)){var b,c=[];for(b=0;b<this.s.iLeftColumns;b++)this.s.dt.aoColumns[b].bVisible&&c.push(b);this._fnClone(this.dom.clone.left,this.dom.grid.left,c,a)}},_fnCopyLayout:function(a,b){for(var c=[],g=[],f=[],e=0,h=a.length;e<h;e++){var i=[]; -i.nTr=d(a[e].nTr).clone(!0,!0)[0];for(var k=0,j=this.s.iTableColumns;k<j;k++)if(-1!==d.inArray(k,b)){var m=d.inArray(a[e][k].cell,f);-1===m?(m=d(a[e][k].cell).clone(!0,!0)[0],g.push(m),f.push(a[e][k].cell),i.push({cell:m,unique:a[e][k].unique})):i.push({cell:g[m],unique:a[e][k].unique})}c.push(i)}return c},_fnClone:function(a,b,c,g){var f=this,e,h,i,k,j,m,o,n,q,l=this.s.dt;if(g){null!==a.header&&a.header.parentNode.removeChild(a.header);a.header=d(this.dom.header).clone(!0,!0)[0];a.header.className+= -" DTFC_Cloned";a.header.style.width="100%";b.head.appendChild(a.header);n=this._fnCopyLayout(l.aoHeader,c);k=d(">thead",a.header);k.empty();e=0;for(h=n.length;e<h;e++)k[0].appendChild(n[e].nTr);l.oApi._fnDrawHead(l,n,!0)}else{n=this._fnCopyLayout(l.aoHeader,c);q=[];l.oApi._fnDetectHeader(q,d(">thead",a.header)[0]);e=0;for(h=n.length;e<h;e++){i=0;for(k=n[e].length;i<k;i++)q[e][i].cell.className=n[e][i].cell.className,d("span.DataTables_sort_icon",q[e][i].cell).each(function(){this.className=d("span.DataTables_sort_icon", -n[e][i].cell)[0].className})}}this._fnEqualiseHeights("thead",this.dom.header,a.header);"auto"==this.s.sHeightMatch&&d(">tbody>tr",f.dom.body).css("height","auto");null!==a.body&&(a.body.parentNode.removeChild(a.body),a.body=null);a.body=d(this.dom.body).clone(!0)[0];a.body.className+=" DTFC_Cloned";a.body.style.paddingBottom=l.oScroll.iBarWidth+"px";a.body.style.marginBottom=2*l.oScroll.iBarWidth+"px";null!==a.body.getAttribute("id")&&a.body.removeAttribute("id");d(">thead>tr",a.body).empty();d(">tfoot", -a.body).remove();var p=d("tbody",a.body)[0];d(p).empty();if(0<l.aiDisplay.length){h=d(">thead>tr",a.body)[0];for(o=0;o<c.length;o++)j=c[o],m=d(l.aoColumns[j].nTh).clone(!0)[0],m.innerHTML="",k=m.style,k.paddingTop="0",k.paddingBottom="0",k.borderTopWidth="0",k.borderBottomWidth="0",k.height=0,k.width=f.s.aiInnerWidths[j]+"px",h.appendChild(m);d(">tbody>tr",f.dom.body).each(function(a){var b=this.cloneNode(false);b.removeAttribute("id");a=f.s.dt.aoData[f.s.dt.oFeatures.bServerSide===false?f.s.dt.aiDisplay[f.s.dt._iDisplayStart+ -a]:a].anCells||d(this).children("td, th");for(o=0;o<c.length;o++){j=c[o];if(a.length>0){m=d(a[j]).clone(true,true)[0];b.appendChild(m)}}p.appendChild(b)})}else d(">tbody>tr",f.dom.body).each(function(){m=this.cloneNode(true);m.className=m.className+" DTFC_NoData";d("td",m).html("");p.appendChild(m)});a.body.style.width="100%";a.body.style.margin="0";a.body.style.padding="0";l.oScroller!==t&&(h=l.oScroller.dom.force,b.forcer?b.forcer.style.height=h.style.height:(b.forcer=h.cloneNode(!0),b.liner.appendChild(b.forcer))); -b.liner.appendChild(a.body);this._fnEqualiseHeights("tbody",f.dom.body,a.body);if(null!==l.nTFoot){if(g){null!==a.footer&&a.footer.parentNode.removeChild(a.footer);a.footer=d(this.dom.footer).clone(!0,!0)[0];a.footer.className+=" DTFC_Cloned";a.footer.style.width="100%";b.foot.appendChild(a.footer);n=this._fnCopyLayout(l.aoFooter,c);b=d(">tfoot",a.footer);b.empty();e=0;for(h=n.length;e<h;e++)b[0].appendChild(n[e].nTr);l.oApi._fnDrawHead(l,n,!0)}else{n=this._fnCopyLayout(l.aoFooter,c);b=[];l.oApi._fnDetectHeader(b, -d(">tfoot",a.footer)[0]);e=0;for(h=n.length;e<h;e++){i=0;for(k=n[e].length;i<k;i++)b[e][i].cell.className=n[e][i].cell.className}}this._fnEqualiseHeights("tfoot",this.dom.footer,a.footer)}b=l.oApi._fnGetUniqueThs(l,d(">thead",a.header)[0]);d(b).each(function(a){j=c[a];this.style.width=f.s.aiInnerWidths[j]+"px"});null!==f.s.dt.nTFoot&&(b=l.oApi._fnGetUniqueThs(l,d(">tfoot",a.footer)[0]),d(b).each(function(a){j=c[a];this.style.width=f.s.aiInnerWidths[j]+"px"}))},_fnGetTrNodes:function(a){for(var b= -[],c=0,d=a.childNodes.length;c<d;c++)"TR"==a.childNodes[c].nodeName.toUpperCase()&&b.push(a.childNodes[c]);return b},_fnEqualiseHeights:function(a,b,c){if(!("none"==this.s.sHeightMatch&&"thead"!==a&&"tfoot"!==a)){var g,f,e=b.getElementsByTagName(a)[0],c=c.getElementsByTagName(a)[0],a=d(">"+a+">tr:eq(0)",b).children(":first");a.outerHeight();a.height();for(var e=this._fnGetTrNodes(e),b=this._fnGetTrNodes(c),h=[],c=0,a=b.length;c<a;c++)g=e[c].offsetHeight,f=b[c].offsetHeight,g=f>g?f:g,"semiauto"==this.s.sHeightMatch&& -(e[c]._DTTC_iHeight=g),h.push(g);c=0;for(a=b.length;c<a;c++)b[c].style.height=h[c]+"px",e[c].style.height=h[c]+"px"}}};j.defaults={iLeftColumns:1,iRightColumns:0,fnDrawCallback:null,sHeightMatch:"semiauto"};j.version="3.0.4";d.fn.dataTable.FixedColumns=j;return d.fn.DataTable.FixedColumns=j};"function"===typeof define&&define.amd?define(["jquery","datatables"],p):"object"===typeof exports?p(require("jquery"),require("datatables")):jQuery&&!jQuery.fn.dataTable.FixedColumns&&p(jQuery,jQuery.fn.dataTable)})(window, -document); diff --git a/assets/plugins/datatables/extensions/FixedHeader/Readme.txt b/assets/plugins/datatables/extensions/FixedHeader/Readme.txt deleted file mode 100644 index 875e0517..00000000 --- a/assets/plugins/datatables/extensions/FixedHeader/Readme.txt +++ /dev/null @@ -1,36 +0,0 @@ -# FixedHeader - -At times it can be useful to ensure that column titles will remain always visible on a table, even when a user scrolls down a table. The FixedHeader plug-in for DataTables will float the 'thead' element above the table at all times to help address this issue. The column titles also remain click-able to perform sorting. Key features include: - -* Fix the header to the top of the window -* Ability to fix the footer and left / right columns as well -* z-Index ordering options - - -# Installation - -To use FixedHeader, first download DataTables ( http://datatables.net/download ) and place the unzipped FixedHeader package into a `extensions` directory in the DataTables package. This will allow the pages in the examples to operate correctly. To see the examples running, open the `examples` directory in your web-browser. - - -# Basic usage - -FixedHeader is initialised using the `$.fn.dataTable.FixedHeader()` object. For example: - -```js -$(document).ready( function () { - var table = $('#example').dataTable(); - new $.fn.dataTable.FixedHeader( table ); -} ); -``` - - -# Documentation / support - -* Documentation: http://datatables.net/extensions/FixedHeader/ -* DataTables support forums: http://datatables.net/forums - - -# GitHub - -If you fancy getting involved with the development of FixedHeader and help make it better, please refer to its GitHub repo: https://github.com/DataTables/FixedHeader - diff --git a/assets/plugins/datatables/extensions/FixedHeader/css/dataTables.fixedHeader.css b/assets/plugins/datatables/extensions/FixedHeader/css/dataTables.fixedHeader.css deleted file mode 100644 index 724317a6..00000000 --- a/assets/plugins/datatables/extensions/FixedHeader/css/dataTables.fixedHeader.css +++ /dev/null @@ -1,7 +0,0 @@ - - -div.FixedHeader_Cloned th, -div.FixedHeader_Cloned td { - background-color: white !important; -} - diff --git a/assets/plugins/datatables/extensions/FixedHeader/css/dataTables.fixedHeader.min.css b/assets/plugins/datatables/extensions/FixedHeader/css/dataTables.fixedHeader.min.css deleted file mode 100644 index e276a91a..00000000 --- a/assets/plugins/datatables/extensions/FixedHeader/css/dataTables.fixedHeader.min.css +++ /dev/null @@ -1 +0,0 @@ -div.FixedHeader_Cloned th,div.FixedHeader_Cloned td{background-color:white !important} diff --git a/assets/plugins/datatables/extensions/FixedHeader/examples/header_footer.html b/assets/plugins/datatables/extensions/FixedHeader/examples/header_footer.html deleted file mode 100644 index 97aae298..00000000 --- a/assets/plugins/datatables/extensions/FixedHeader/examples/header_footer.html +++ /dev/null @@ -1,641 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>FixedHeader example - Header and footer fixed</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.fixedHeader.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.fixedHeader.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - var table = $('#example').DataTable(); - - new $.fn.dataTable.FixedHeader( table, { - bottom: true - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>FixedHeader example <span>Header and footer fixed</span></h1> - - <div class="info"> - <p>FixedHeader provides the ability to fix in place the header, footer, left and right columns of the - table. These are controlled by the options:</p> - - <ul class="markdown"> - <li><code>top</code> - default true</li> - <li><code>bottom</code> - default false</li> - <li><code>left</code> - default false</li> - <li><code>right</code> - default false</li> - </ul> - - <p>This example shows the header and footer of the table fixed by enabling the <code>bottom</code> - option.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this - example:</p><code class="multiline brush: js;">$(document).ready(function() { - var table = $('#example').DataTable(); - - new $.fn.dataTable.FixedHeader( table, { - bottom: true - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this - example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href= - "../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.fixedHeader.js">../js/dataTables.fixedHeader.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by - DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library - files (below), in order to correctly display the table. The additional CSS used is shown - below:</p><code class="multiline brush: js;"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the - table:</p> - - <ul> - <li><a href= - "../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.fixedHeader.css">../css/dataTables.fixedHeader.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data - will update automatically as any additional data is loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note - that this is just an example script using PHP. Server-side processing scripts can be written in any - language, using <a href="//datatables.net/manual/server-side">the protocol described in the - DataTables documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li class="active"><a href="./header_footer.html">Header and footer fixed</a></li> - <li><a href="./top_left_right.html">Header, left and right all fixed</a></li> - <li><a href="./two_tables.html">Multiple tables</a></li> - <li><a href="./zIndexes.html">z-index order control</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full - information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and - <a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of - DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href= - "http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/FixedHeader/examples/index.html b/assets/plugins/datatables/extensions/FixedHeader/examples/index.html deleted file mode 100644 index 2198d78c..00000000 --- a/assets/plugins/datatables/extensions/FixedHeader/examples/index.html +++ /dev/null @@ -1,69 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - - <title>FixedHeader examples - FixedHeader examples</title> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>FixedHeader example <span>FixedHeader examples</span></h1> - - <div class="info"> - <p>At times it can be useful to ensure that column titles will remain always visible on a table, even - when a user scrolls down a table. The FixedHeader plug-in for DataTables will float the <code class= - "tag" title="HTML tag">thead</code> element above the table at all times to help address this issue. - The column titles also remain click-able to perform sorting. Key features include:</p> - - <ul class="markdown"> - <li>Fix the header to the top of the window</li> - <li>Ability to fix the footer and left / right columns as well</li> - <li>z-Index ordering options</li> - </ul> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./header_footer.html">Header and footer fixed</a></li> - <li><a href="./top_left_right.html">Header, left and right all fixed</a></li> - <li><a href="./two_tables.html">Multiple tables</a></li> - <li><a href="./zIndexes.html">z-index order control</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full - information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and - <a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of - DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href= - "http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/FixedHeader/examples/simple.html b/assets/plugins/datatables/extensions/FixedHeader/examples/simple.html deleted file mode 100644 index 1ad6efa7..00000000 --- a/assets/plugins/datatables/extensions/FixedHeader/examples/simple.html +++ /dev/null @@ -1,637 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>FixedHeader example - Basic initialisation</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.fixedHeader.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.fixedHeader.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - var table = $('#example').DataTable(); - - new $.fn.dataTable.FixedHeader( table ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>FixedHeader example <span>Basic initialisation</span></h1> - - <div class="info"> - <p>When displaying large amounts of data in a table, it can often be useful for the end user to have - the column titles (the <code class="tag" title="HTML tag">thead</code> element as a whole in fact) - always visible. This is particularly true if using DataTables with pagination disabled, or the display - length is set to a high value.</p> - - <p>The FixedHeader extension for DataTables will ensure that your column titles will scroll with the - page, showing at the top of the table at all times. Try the demo shown below - you might want to try - resizing the window for full effect! Note also that the column titles remain clickable to perform - sorting on the table.</p> - - <p>FixedHeader is initialised using the constructor <code>new $.fn.dataTable.FixedHeader();</code> - - shown below.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this - example:</p><code class="multiline brush: js;">$(document).ready(function() { - var table = $('#example').DataTable(); - - new $.fn.dataTable.FixedHeader( table ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this - example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href= - "../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.fixedHeader.js">../js/dataTables.fixedHeader.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by - DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library - files (below), in order to correctly display the table. The additional CSS used is shown - below:</p><code class="multiline brush: js;"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the - table:</p> - - <ul> - <li><a href= - "../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.fixedHeader.css">../css/dataTables.fixedHeader.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data - will update automatically as any additional data is loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note - that this is just an example script using PHP. Server-side processing scripts can be written in any - language, using <a href="//datatables.net/manual/server-side">the protocol described in the - DataTables documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li class="active"><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./header_footer.html">Header and footer fixed</a></li> - <li><a href="./top_left_right.html">Header, left and right all fixed</a></li> - <li><a href="./two_tables.html">Multiple tables</a></li> - <li><a href="./zIndexes.html">z-index order control</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full - information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and - <a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of - DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href= - "http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/FixedHeader/examples/top_left_right.html b/assets/plugins/datatables/extensions/FixedHeader/examples/top_left_right.html deleted file mode 100644 index f15faeb5..00000000 --- a/assets/plugins/datatables/extensions/FixedHeader/examples/top_left_right.html +++ /dev/null @@ -1,236 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>FixedHeader example - Header, left and right all fixed</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.fixedHeader.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - div.dataTables_wrapper { - width: 150%; - } - - div.FixedHeader_Cloned.fixedLeft tbody td { - border-right: 1px solid black; - } - - div.FixedHeader_Cloned.fixedRight tbody td { - border-left: 1px solid black; - } - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.fixedHeader.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - var table = $('#example').DataTable( { - "order": [ 1, 'asc' ], - "ajax": "../../../examples/ajax/data/objects.txt", - "columns": [ - { title: '', data: null, defaultContent: "" }, - { title: 'Name', data: "name" }, - { title: 'Position', data: "position" }, - { title: 'Office', data: "office" }, - { title: 'Extn.', data: "extn" }, - { title: 'Start date', data: "start_date" }, - { title: 'Salary', data: "salary" }, - { title: '', data: null, defaultContent: "" } - ], - initComplete: function () { - new $.fn.dataTable.FixedHeader( table, { - left: true, - right: true - } ); - } - } ); - - table.on( 'order.dt search.dt', function () { - table.column(0, {search:'applied', order:'applied'}).nodes().each( function (cell, i) { - cell.innerHTML = i+1; - } ); - - table.column(-1, {search:'applied', order:'applied'}).nodes().each( function (cell, i) { - cell.innerHTML = i+1; - } ); - } ).draw(); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>FixedHeader example <span>Header, left and right all fixed</span></h1> - - <div class="info"> - <p>FixedHeader provides the ability to fix in place the header, footer, left and right columns of the - table. These are controlled by the options:</p> - - <ul class="markdown"> - <li><code>top</code> - default true</li> - <li><code>bottom</code> - default false</li> - <li><code>left</code> - default false</li> - <li><code>right</code> - default false</li> - </ul> - - <p>This example shows top, left and right enabled with index columns on the left and right.</p> - - <p>Note that in such a situation as this, the <a href= - "//datatables.net/extensions/fixedcolumns">FixedColumns extension</a> might be more useful, - particularly if you want to use the scrolling options built into DataTables.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"></table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this - example:</p><code class="multiline brush: js;">$(document).ready(function() { - var table = $('#example').DataTable( { - &quot;order&quot;: [ 1, 'asc' ], - &quot;ajax&quot;: &quot;../../../examples/ajax/data/objects.txt&quot;, - &quot;columns&quot;: [ - { title: '', data: null, defaultContent: &quot;&quot; }, - { title: 'Name', data: &quot;name&quot; }, - { title: 'Position', data: &quot;position&quot; }, - { title: 'Office', data: &quot;office&quot; }, - { title: 'Extn.', data: &quot;extn&quot; }, - { title: 'Start date', data: &quot;start_date&quot; }, - { title: 'Salary', data: &quot;salary&quot; }, - { title: '', data: null, defaultContent: &quot;&quot; } - ], - initComplete: function () { - new $.fn.dataTable.FixedHeader( table, { - left: true, - right: true - } ); - } - } ); - - table.on( 'order.dt search.dt', function () { - table.column(0, {search:'applied', order:'applied'}).nodes().each( function (cell, i) { - cell.innerHTML = i+1; - } ); - - table.column(-1, {search:'applied', order:'applied'}).nodes().each( function (cell, i) { - cell.innerHTML = i+1; - } ); - } ).draw(); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this - example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href= - "../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.fixedHeader.js">../js/dataTables.fixedHeader.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by - DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library - files (below), in order to correctly display the table. The additional CSS used is shown - below:</p><code class="multiline brush: js;">div.dataTables_wrapper { - width: 150%; - } - - div.FixedHeader_Cloned.fixedLeft tbody td { - border-right: 1px solid black; - } - - div.FixedHeader_Cloned.fixedRight tbody td { - border-left: 1px solid black; - }</code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the - table:</p> - - <ul> - <li><a href= - "../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.fixedHeader.css">../css/dataTables.fixedHeader.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data - will update automatically as any additional data is loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note - that this is just an example script using PHP. Server-side processing scripts can be written in any - language, using <a href="//datatables.net/manual/server-side">the protocol described in the - DataTables documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./header_footer.html">Header and footer fixed</a></li> - <li class="active"><a href="./top_left_right.html">Header, left and right all - fixed</a></li> - <li><a href="./two_tables.html">Multiple tables</a></li> - <li><a href="./zIndexes.html">z-index order control</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full - information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and - <a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of - DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href= - "http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/FixedHeader/examples/two_tables.html b/assets/plugins/datatables/extensions/FixedHeader/examples/two_tables.html deleted file mode 100644 index 1fbb3dfc..00000000 --- a/assets/plugins/datatables/extensions/FixedHeader/examples/two_tables.html +++ /dev/null @@ -1,354 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>FixedHeader example - Multiple tables</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.fixedHeader.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.fixedHeader.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - var t1 = $('table.display').eq(0).DataTable(); - new $.fn.dataTable.FixedHeader( t1, { - bottom: true - } ); - - var t2 = $('table.display').eq(1).DataTable(); - new $.fn.dataTable.FixedHeader( t2, { - bottom: true - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>FixedHeader example <span>Multiple tables</span></h1> - - <div class="info"> - <p>The following example shows two DataTables enhanced tables both with FixedHeader enabled on them. - This is done simply by initialising FixedHeader on each table. This example also shows the footer being - fixed in place for the two tables.</p> - </div> - - <table id="" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>$320,800</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>$433,060</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>$103,600</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>$342,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>$217,500</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>$92,575</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>$324,050</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>$75,650</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>$183,000</td> - </tr> - </tbody> - </table> - - <table id="" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>$90,560</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>$198,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>$132,000</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>$145,000</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>$136,200</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>$163,500</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>$103,500</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this - example:</p><code class="multiline brush: js;">$(document).ready(function() { - var t1 = $('table.display').eq(0).DataTable(); - new $.fn.dataTable.FixedHeader( t1, { - bottom: true - } ); - - var t2 = $('table.display').eq(1).DataTable(); - new $.fn.dataTable.FixedHeader( t2, { - bottom: true - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this - example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href= - "../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.fixedHeader.js">../js/dataTables.fixedHeader.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by - DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library - files (below), in order to correctly display the table. The additional CSS used is shown - below:</p><code class="multiline brush: js;"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the - table:</p> - - <ul> - <li><a href= - "../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.fixedHeader.css">../css/dataTables.fixedHeader.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data - will update automatically as any additional data is loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note - that this is just an example script using PHP. Server-side processing scripts can be written in any - language, using <a href="//datatables.net/manual/server-side">the protocol described in the - DataTables documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./header_footer.html">Header and footer fixed</a></li> - <li><a href="./top_left_right.html">Header, left and right all fixed</a></li> - <li class="active"><a href="./two_tables.html">Multiple tables</a></li> - <li><a href="./zIndexes.html">z-index order control</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full - information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and - <a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of - DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href= - "http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/FixedHeader/examples/zIndexes.html b/assets/plugins/datatables/extensions/FixedHeader/examples/zIndexes.html deleted file mode 100644 index a3292c4c..00000000 --- a/assets/plugins/datatables/extensions/FixedHeader/examples/zIndexes.html +++ /dev/null @@ -1,653 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>FixedHeader example - z-index order control</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.fixedHeader.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - div.dataTables_wrapper { - width: 1500px; - } - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.fixedHeader.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - var table = $('#example').DataTable(); - - new $.fn.dataTable.FixedHeader( table, { - left: true, - zLeft: 105 - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>FixedHeader example <span>z-index order control</span></h1> - - <div class="info"> - <p>When you have two or more columns fixed on a table, there might be occasions when you which to have - one column floating on top of another. This example shows how you can do that with the initialisation - parameters <code>zTop</code>, <code>zBottom</code>, <code>zLeft</code> and <code>zRight</code>. In this - example the left column is set to float on top of the header. The difference is subtle, but can be - effective.</p> - - <p>The default zIndexes are:</p> - - <ul class="markdown"> - <li><code>zTop</code>: 104</li> - <li><code>zBottom</code>: 103</li> - <li><code>zLeft</code>: 102</li> - <li><code>zRight</code>: 101</li> - </ul> - - <p>This example shows the left column being floated on top of the header.</p> - </div> - - <table id="example" class="stripe row-border order-column" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this - example:</p><code class="multiline brush: js;">$(document).ready(function() { - var table = $('#example').DataTable(); - - new $.fn.dataTable.FixedHeader( table, { - left: true, - zLeft: 105 - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this - example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href= - "../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.fixedHeader.js">../js/dataTables.fixedHeader.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by - DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library - files (below), in order to correctly display the table. The additional CSS used is shown - below:</p><code class="multiline brush: js;">div.dataTables_wrapper { - width: 1500px; - }</code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the - table:</p> - - <ul> - <li><a href= - "../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.fixedHeader.css">../css/dataTables.fixedHeader.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data - will update automatically as any additional data is loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note - that this is just an example script using PHP. Server-side processing scripts can be written in any - language, using <a href="//datatables.net/manual/server-side">the protocol described in the - DataTables documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./header_footer.html">Header and footer fixed</a></li> - <li><a href="./top_left_right.html">Header, left and right all fixed</a></li> - <li><a href="./two_tables.html">Multiple tables</a></li> - <li class="active"><a href="./zIndexes.html">z-index order control</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full - information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and - <a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of - DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href= - "http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/FixedHeader/js/dataTables.fixedHeader.js b/assets/plugins/datatables/extensions/FixedHeader/js/dataTables.fixedHeader.js deleted file mode 100644 index 90df8786..00000000 --- a/assets/plugins/datatables/extensions/FixedHeader/js/dataTables.fixedHeader.js +++ /dev/null @@ -1,1028 +0,0 @@ -/*! FixedHeader 2.1.2 - * ©2010-2014 SpryMedia Ltd - datatables.net/license - */ - -/** - * @summary FixedHeader - * @description Fix a table's header or footer, so it is always visible while - * Scrolling - * @version 2.1.2 - * @file dataTables.fixedHeader.js - * @author SpryMedia Ltd (www.sprymedia.co.uk) - * @contact www.sprymedia.co.uk/contact - * @copyright Copyright 2009-2014 SpryMedia Ltd. - * - * This source file is free software, available under the following license: - * MIT license - http://datatables.net/license/mit - * - * This source file is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. - * - * For details please refer to: http://www.datatables.net - */ - -/* Global scope for FixedColumns for backwards compatibility - will be removed - * in future. Not documented in 1.1.x. - */ - -/* Global scope for FixedColumns */ -var FixedHeader; - -(function(window, document, undefined) { - - -var factory = function( $, DataTable ) { -"use strict"; - -/* - * Function: FixedHeader - * Purpose: Provide 'fixed' header, footer and columns for a DataTable - * Returns: object:FixedHeader - must be called with 'new' - * Inputs: mixed:mTable - target table - * @param {object} dt DataTables instance or HTML table node. With DataTables - * 1.10 this can also be a jQuery collection (with just a single table in its - * result set), a jQuery selector, DataTables API instance or settings - * object. - * @param {object} [oInit] initialisation settings, with the following - * properties (each optional) - * * bool:top - fix the header (default true) - * * bool:bottom - fix the footer (default false) - * * int:left - fix the left column(s) (default 0) - * * int:right - fix the right column(s) (default 0) - * * int:zTop - fixed header zIndex - * * int:zBottom - fixed footer zIndex - * * int:zLeft - fixed left zIndex - * * int:zRight - fixed right zIndex - */ -FixedHeader = function ( mTable, oInit ) { - /* Sanity check - you just know it will happen */ - if ( ! this instanceof FixedHeader ) - { - alert( "FixedHeader warning: FixedHeader must be initialised with the 'new' keyword." ); - return; - } - - var that = this; - var oSettings = { - "aoCache": [], - "oSides": { - "top": true, - "bottom": false, - "left": 0, - "right": 0 - }, - "oZIndexes": { - "top": 104, - "bottom": 103, - "left": 102, - "right": 101 - }, - "oCloneOnDraw": { - "top": false, - "bottom": false, - "left": true, - "right": true - }, - "oMes": { - "iTableWidth": 0, - "iTableHeight": 0, - "iTableLeft": 0, - "iTableRight": 0, /* note this is left+width, not actually "right" */ - "iTableTop": 0, - "iTableBottom": 0 /* note this is top+height, not actually "bottom" */ - }, - "oOffset": { - "top": 0 - }, - "nTable": null, - "bFooter": false, - "bInitComplete": false - }; - - /* - * Function: fnGetSettings - * Purpose: Get the settings for this object - * Returns: object: - settings object - * Inputs: - - */ - this.fnGetSettings = function () { - return oSettings; - }; - - /* - * Function: fnUpdate - * Purpose: Update the positioning and copies of the fixed elements - * Returns: - - * Inputs: - - */ - this.fnUpdate = function () { - this._fnUpdateClones(); - this._fnUpdatePositions(); - }; - - /* - * Function: fnPosition - * Purpose: Update the positioning of the fixed elements - * Returns: - - * Inputs: - - */ - this.fnPosition = function () { - this._fnUpdatePositions(); - }; - - - var dt = $.fn.dataTable.Api ? - new $.fn.dataTable.Api( mTable ).settings()[0] : - mTable.fnSettings(); - - dt._oPluginFixedHeader = this; - - /* Let's do it */ - this.fnInit( dt, oInit ); - -}; - - -/* - * Variable: FixedHeader - * Purpose: Prototype for FixedHeader - * Scope: global - */ -FixedHeader.prototype = { - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Initialisation - */ - - /* - * Function: fnInit - * Purpose: The "constructor" - * Returns: - - * Inputs: {as FixedHeader function} - */ - fnInit: function ( oDtSettings, oInit ) - { - var s = this.fnGetSettings(); - var that = this; - - /* Record the user definable settings */ - this.fnInitSettings( s, oInit ); - - if ( oDtSettings.oScroll.sX !== "" || oDtSettings.oScroll.sY !== "" ) - { - alert( "FixedHeader 2 is not supported with DataTables' scrolling mode at this time" ); - return; - } - - s.nTable = oDtSettings.nTable; - oDtSettings.aoDrawCallback.unshift( { - "fn": function () { - FixedHeader.fnMeasure(); - that._fnUpdateClones.call(that); - that._fnUpdatePositions.call(that); - }, - "sName": "FixedHeader" - } ); - - s.bFooter = ($('>tfoot', s.nTable).length > 0) ? true : false; - - /* Add the 'sides' that are fixed */ - if ( s.oSides.top ) - { - s.aoCache.push( that._fnCloneTable( "fixedHeader", "FixedHeader_Header", that._fnCloneThead ) ); - } - if ( s.oSides.bottom ) - { - s.aoCache.push( that._fnCloneTable( "fixedFooter", "FixedHeader_Footer", that._fnCloneTfoot ) ); - } - if ( s.oSides.left ) - { - s.aoCache.push( that._fnCloneTable( "fixedLeft", "FixedHeader_Left", that._fnCloneTLeft, s.oSides.left ) ); - } - if ( s.oSides.right ) - { - s.aoCache.push( that._fnCloneTable( "fixedRight", "FixedHeader_Right", that._fnCloneTRight, s.oSides.right ) ); - } - - /* Event listeners for window movement */ - FixedHeader.afnScroll.push( function () { - that._fnUpdatePositions.call(that); - } ); - - $(window).resize( function () { - FixedHeader.fnMeasure(); - that._fnUpdateClones.call(that); - that._fnUpdatePositions.call(that); - } ); - - $(s.nTable) - .on('column-reorder.dt', function () { - FixedHeader.fnMeasure(); - that._fnUpdateClones( true ); - that._fnUpdatePositions(); - } ) - .on('column-visibility.dt', function () { - FixedHeader.fnMeasure(); - that._fnUpdateClones( true ); - that._fnUpdatePositions(); - } ); - - /* Get things right to start with */ - FixedHeader.fnMeasure(); - that._fnUpdateClones(); - that._fnUpdatePositions(); - - s.bInitComplete = true; - }, - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Support functions - */ - - /* - * Function: fnInitSettings - * Purpose: Take the user's settings and copy them to our local store - * Returns: - - * Inputs: object:s - the local settings object - * object:oInit - the user's settings object - */ - fnInitSettings: function ( s, oInit ) - { - if ( oInit !== undefined ) - { - if ( oInit.top !== undefined ) { - s.oSides.top = oInit.top; - } - if ( oInit.bottom !== undefined ) { - s.oSides.bottom = oInit.bottom; - } - if ( typeof oInit.left == 'boolean' ) { - s.oSides.left = oInit.left ? 1 : 0; - } - else if ( oInit.left !== undefined ) { - s.oSides.left = oInit.left; - } - if ( typeof oInit.right == 'boolean' ) { - s.oSides.right = oInit.right ? 1 : 0; - } - else if ( oInit.right !== undefined ) { - s.oSides.right = oInit.right; - } - - if ( oInit.zTop !== undefined ) { - s.oZIndexes.top = oInit.zTop; - } - if ( oInit.zBottom !== undefined ) { - s.oZIndexes.bottom = oInit.zBottom; - } - if ( oInit.zLeft !== undefined ) { - s.oZIndexes.left = oInit.zLeft; - } - if ( oInit.zRight !== undefined ) { - s.oZIndexes.right = oInit.zRight; - } - - if ( oInit.offsetTop !== undefined ) { - s.oOffset.top = oInit.offsetTop; - } - if ( oInit.alwaysCloneTop !== undefined ) { - s.oCloneOnDraw.top = oInit.alwaysCloneTop; - } - if ( oInit.alwaysCloneBottom !== undefined ) { - s.oCloneOnDraw.bottom = oInit.alwaysCloneBottom; - } - if ( oInit.alwaysCloneLeft !== undefined ) { - s.oCloneOnDraw.left = oInit.alwaysCloneLeft; - } - if ( oInit.alwaysCloneRight !== undefined ) { - s.oCloneOnDraw.right = oInit.alwaysCloneRight; - } - } - }, - - /* - * Function: _fnCloneTable - * Purpose: Clone the table node and do basic initialisation - * Returns: - - * Inputs: - - */ - _fnCloneTable: function ( sType, sClass, fnClone, iCells ) - { - var s = this.fnGetSettings(); - var nCTable; - - /* We know that the table _MUST_ has a DIV wrapped around it, because this is simply how - * DataTables works. Therefore, we can set this to be relatively position (if it is not - * alreadu absolute, and use this as the base point for the cloned header - */ - if ( $(s.nTable.parentNode).css('position') != "absolute" ) - { - s.nTable.parentNode.style.position = "relative"; - } - - /* Just a shallow clone will do - we only want the table node */ - nCTable = s.nTable.cloneNode( false ); - nCTable.removeAttribute( 'id' ); - - var nDiv = document.createElement( 'div' ); - nDiv.style.position = "absolute"; - nDiv.style.top = "0px"; - nDiv.style.left = "0px"; - nDiv.className += " FixedHeader_Cloned "+sType+" "+sClass; - - /* Set the zIndexes */ - if ( sType == "fixedHeader" ) - { - nDiv.style.zIndex = s.oZIndexes.top; - } - if ( sType == "fixedFooter" ) - { - nDiv.style.zIndex = s.oZIndexes.bottom; - } - if ( sType == "fixedLeft" ) - { - nDiv.style.zIndex = s.oZIndexes.left; - } - else if ( sType == "fixedRight" ) - { - nDiv.style.zIndex = s.oZIndexes.right; - } - - /* remove margins since we are going to position it absolutely */ - nCTable.style.margin = "0"; - - /* Insert the newly cloned table into the DOM, on top of the "real" header */ - nDiv.appendChild( nCTable ); - document.body.appendChild( nDiv ); - - return { - "nNode": nCTable, - "nWrapper": nDiv, - "sType": sType, - "sPosition": "", - "sTop": "", - "sLeft": "", - "fnClone": fnClone, - "iCells": iCells - }; - }, - - /* - * Function: _fnMeasure - * Purpose: Get the current positioning of the table in the DOM - * Returns: - - * Inputs: - - */ - _fnMeasure: function () - { - var - s = this.fnGetSettings(), - m = s.oMes, - jqTable = $(s.nTable), - oOffset = jqTable.offset(), - iParentScrollTop = this._fnSumScroll( s.nTable.parentNode, 'scrollTop' ), - iParentScrollLeft = this._fnSumScroll( s.nTable.parentNode, 'scrollLeft' ); - - m.iTableWidth = jqTable.outerWidth(); - m.iTableHeight = jqTable.outerHeight(); - m.iTableLeft = oOffset.left + s.nTable.parentNode.scrollLeft; - m.iTableTop = oOffset.top + iParentScrollTop; - m.iTableRight = m.iTableLeft + m.iTableWidth; - m.iTableRight = FixedHeader.oDoc.iWidth - m.iTableLeft - m.iTableWidth; - m.iTableBottom = FixedHeader.oDoc.iHeight - m.iTableTop - m.iTableHeight; - }, - - /* - * Function: _fnSumScroll - * Purpose: Sum node parameters all the way to the top - * Returns: int: sum - * Inputs: node:n - node to consider - * string:side - scrollTop or scrollLeft - */ - _fnSumScroll: function ( n, side ) - { - var i = n[side]; - while ( n = n.parentNode ) - { - if ( n.nodeName == 'HTML' || n.nodeName == 'BODY' ) - { - break; - } - i = n[side]; - } - return i; - }, - - /* - * Function: _fnUpdatePositions - * Purpose: Loop over the fixed elements for this table and update their positions - * Returns: - - * Inputs: - - */ - _fnUpdatePositions: function () - { - var s = this.fnGetSettings(); - this._fnMeasure(); - - for ( var i=0, iLen=s.aoCache.length ; i<iLen ; i++ ) - { - if ( s.aoCache[i].sType == "fixedHeader" ) - { - this._fnScrollFixedHeader( s.aoCache[i] ); - } - else if ( s.aoCache[i].sType == "fixedFooter" ) - { - this._fnScrollFixedFooter( s.aoCache[i] ); - } - else if ( s.aoCache[i].sType == "fixedLeft" ) - { - this._fnScrollHorizontalLeft( s.aoCache[i] ); - } - else - { - this._fnScrollHorizontalRight( s.aoCache[i] ); - } - } - }, - - /* - * Function: _fnUpdateClones - * Purpose: Loop over the fixed elements for this table and call their cloning functions - * Returns: - - * Inputs: - - */ - _fnUpdateClones: function ( full ) - { - var s = this.fnGetSettings(); - - if ( full ) { - // This is a little bit of a hack to force a full clone draw. When - // `full` is set to true, we want to reclone the source elements, - // regardless of the clone-on-draw settings - s.bInitComplete = false; - } - - for ( var i=0, iLen=s.aoCache.length ; i<iLen ; i++ ) - { - s.aoCache[i].fnClone.call( this, s.aoCache[i] ); - } - - if ( full ) { - s.bInitComplete = true; - } - }, - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Scrolling functions - */ - - /* - * Function: _fnScrollHorizontalLeft - * Purpose: Update the positioning of the scrolling elements - * Returns: - - * Inputs: object:oCache - the cached values for this fixed element - */ - _fnScrollHorizontalRight: function ( oCache ) - { - var - s = this.fnGetSettings(), - oMes = s.oMes, - oWin = FixedHeader.oWin, - oDoc = FixedHeader.oDoc, - nTable = oCache.nWrapper, - iFixedWidth = $(nTable).outerWidth(); - - if ( oWin.iScrollRight < oMes.iTableRight ) - { - /* Fully right aligned */ - this._fnUpdateCache( oCache, 'sPosition', 'absolute', 'position', nTable.style ); - this._fnUpdateCache( oCache, 'sTop', oMes.iTableTop+"px", 'top', nTable.style ); - this._fnUpdateCache( oCache, 'sLeft', (oMes.iTableLeft+oMes.iTableWidth-iFixedWidth)+"px", 'left', nTable.style ); - } - else if ( oMes.iTableLeft < oDoc.iWidth-oWin.iScrollRight-iFixedWidth ) - { - /* Middle */ - this._fnUpdateCache( oCache, 'sPosition', 'fixed', 'position', nTable.style ); - this._fnUpdateCache( oCache, 'sTop', (oMes.iTableTop-oWin.iScrollTop)+"px", 'top', nTable.style ); - this._fnUpdateCache( oCache, 'sLeft', (oWin.iWidth-iFixedWidth)+"px", 'left', nTable.style ); - } - else - { - /* Fully left aligned */ - this._fnUpdateCache( oCache, 'sPosition', 'absolute', 'position', nTable.style ); - this._fnUpdateCache( oCache, 'sTop', oMes.iTableTop+"px", 'top', nTable.style ); - this._fnUpdateCache( oCache, 'sLeft', oMes.iTableLeft+"px", 'left', nTable.style ); - } - }, - - /* - * Function: _fnScrollHorizontalLeft - * Purpose: Update the positioning of the scrolling elements - * Returns: - - * Inputs: object:oCache - the cached values for this fixed element - */ - _fnScrollHorizontalLeft: function ( oCache ) - { - var - s = this.fnGetSettings(), - oMes = s.oMes, - oWin = FixedHeader.oWin, - oDoc = FixedHeader.oDoc, - nTable = oCache.nWrapper, - iCellWidth = $(nTable).outerWidth(); - - if ( oWin.iScrollLeft < oMes.iTableLeft ) - { - /* Fully left align */ - this._fnUpdateCache( oCache, 'sPosition', 'absolute', 'position', nTable.style ); - this._fnUpdateCache( oCache, 'sTop', oMes.iTableTop+"px", 'top', nTable.style ); - this._fnUpdateCache( oCache, 'sLeft', oMes.iTableLeft+"px", 'left', nTable.style ); - } - else if ( oWin.iScrollLeft < oMes.iTableLeft+oMes.iTableWidth-iCellWidth ) - { - this._fnUpdateCache( oCache, 'sPosition', 'fixed', 'position', nTable.style ); - this._fnUpdateCache( oCache, 'sTop', (oMes.iTableTop-oWin.iScrollTop)+"px", 'top', nTable.style ); - this._fnUpdateCache( oCache, 'sLeft', "0px", 'left', nTable.style ); - } - else - { - /* Fully right align */ - this._fnUpdateCache( oCache, 'sPosition', 'absolute', 'position', nTable.style ); - this._fnUpdateCache( oCache, 'sTop', oMes.iTableTop+"px", 'top', nTable.style ); - this._fnUpdateCache( oCache, 'sLeft', (oMes.iTableLeft+oMes.iTableWidth-iCellWidth)+"px", 'left', nTable.style ); - } - }, - - /* - * Function: _fnScrollFixedFooter - * Purpose: Update the positioning of the scrolling elements - * Returns: - - * Inputs: object:oCache - the cached values for this fixed element - */ - _fnScrollFixedFooter: function ( oCache ) - { - var - s = this.fnGetSettings(), - oMes = s.oMes, - oWin = FixedHeader.oWin, - oDoc = FixedHeader.oDoc, - nTable = oCache.nWrapper, - iTheadHeight = $("thead", s.nTable).outerHeight(), - iCellHeight = $(nTable).outerHeight(); - - if ( oWin.iScrollBottom < oMes.iTableBottom ) - { - /* Below */ - this._fnUpdateCache( oCache, 'sPosition', 'absolute', 'position', nTable.style ); - this._fnUpdateCache( oCache, 'sTop', (oMes.iTableTop+oMes.iTableHeight-iCellHeight)+"px", 'top', nTable.style ); - this._fnUpdateCache( oCache, 'sLeft', oMes.iTableLeft+"px", 'left', nTable.style ); - } - else if ( oWin.iScrollBottom < oMes.iTableBottom+oMes.iTableHeight-iCellHeight-iTheadHeight ) - { - this._fnUpdateCache( oCache, 'sPosition', 'fixed', 'position', nTable.style ); - this._fnUpdateCache( oCache, 'sTop', (oWin.iHeight-iCellHeight)+"px", 'top', nTable.style ); - this._fnUpdateCache( oCache, 'sLeft', (oMes.iTableLeft-oWin.iScrollLeft)+"px", 'left', nTable.style ); - } - else - { - /* Above */ - this._fnUpdateCache( oCache, 'sPosition', 'absolute', 'position', nTable.style ); - this._fnUpdateCache( oCache, 'sTop', (oMes.iTableTop+iCellHeight)+"px", 'top', nTable.style ); - this._fnUpdateCache( oCache, 'sLeft', oMes.iTableLeft+"px", 'left', nTable.style ); - } - }, - - /* - * Function: _fnScrollFixedHeader - * Purpose: Update the positioning of the scrolling elements - * Returns: - - * Inputs: object:oCache - the cached values for this fixed element - */ - _fnScrollFixedHeader: function ( oCache ) - { - var - s = this.fnGetSettings(), - oMes = s.oMes, - oWin = FixedHeader.oWin, - oDoc = FixedHeader.oDoc, - nTable = oCache.nWrapper, - iTbodyHeight = 0, - anTbodies = s.nTable.getElementsByTagName('tbody'); - - for (var i = 0; i < anTbodies.length; ++i) { - iTbodyHeight += anTbodies[i].offsetHeight; - } - - if ( oMes.iTableTop > oWin.iScrollTop + s.oOffset.top ) - { - /* Above the table */ - this._fnUpdateCache( oCache, 'sPosition', "absolute", 'position', nTable.style ); - this._fnUpdateCache( oCache, 'sTop', oMes.iTableTop+"px", 'top', nTable.style ); - this._fnUpdateCache( oCache, 'sLeft', oMes.iTableLeft+"px", 'left', nTable.style ); - } - else if ( oWin.iScrollTop + s.oOffset.top > oMes.iTableTop+iTbodyHeight ) - { - /* At the bottom of the table */ - this._fnUpdateCache( oCache, 'sPosition', "absolute", 'position', nTable.style ); - this._fnUpdateCache( oCache, 'sTop', (oMes.iTableTop+iTbodyHeight)+"px", 'top', nTable.style ); - this._fnUpdateCache( oCache, 'sLeft', oMes.iTableLeft+"px", 'left', nTable.style ); - } - else - { - /* In the middle of the table */ - this._fnUpdateCache( oCache, 'sPosition', 'fixed', 'position', nTable.style ); - this._fnUpdateCache( oCache, 'sTop', s.oOffset.top+"px", 'top', nTable.style ); - this._fnUpdateCache( oCache, 'sLeft', (oMes.iTableLeft-oWin.iScrollLeft)+"px", 'left', nTable.style ); - } - }, - - /* - * Function: _fnUpdateCache - * Purpose: Check the cache and update cache and value if needed - * Returns: - - * Inputs: object:oCache - local cache object - * string:sCache - cache property - * string:sSet - value to set - * string:sProperty - object property to set - * object:oObj - object to update - */ - _fnUpdateCache: function ( oCache, sCache, sSet, sProperty, oObj ) - { - if ( oCache[sCache] != sSet ) - { - oObj[sProperty] = sSet; - oCache[sCache] = sSet; - } - }, - - - - /** - * Copy the classes of all child nodes from one element to another. This implies - * that the two have identical structure - no error checking is performed to that - * fact. - * @param {element} source Node to copy classes from - * @param {element} dest Node to copy classes too - */ - _fnClassUpdate: function ( source, dest ) - { - var that = this; - - if ( source.nodeName.toUpperCase() === "TR" || source.nodeName.toUpperCase() === "TH" || - source.nodeName.toUpperCase() === "TD" || source.nodeName.toUpperCase() === "SPAN" ) - { - dest.className = source.className; - } - - $(source).children().each( function (i) { - that._fnClassUpdate( $(source).children()[i], $(dest).children()[i] ); - } ); - }, - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Cloning functions - */ - - /* - * Function: _fnCloneThead - * Purpose: Clone the thead element - * Returns: - - * Inputs: object:oCache - the cached values for this fixed element - */ - _fnCloneThead: function ( oCache ) - { - var s = this.fnGetSettings(); - var nTable = oCache.nNode; - - if ( s.bInitComplete && !s.oCloneOnDraw.top ) - { - this._fnClassUpdate( $('thead', s.nTable)[0], $('thead', nTable)[0] ); - return; - } - - /* Set the wrapper width to match that of the cloned table */ - var iDtWidth = $(s.nTable).outerWidth(); - oCache.nWrapper.style.width = iDtWidth+"px"; - nTable.style.width = iDtWidth+"px"; - - /* Remove any children the cloned table has */ - while ( nTable.childNodes.length > 0 ) - { - $('thead th', nTable).unbind( 'click' ); - nTable.removeChild( nTable.childNodes[0] ); - } - - /* Clone the DataTables header */ - var nThead = $('thead', s.nTable).clone(true)[0]; - nTable.appendChild( nThead ); - - /* Copy the widths across - apparently a clone isn't good enough for this */ - var a = []; - var b = []; - - $("thead>tr th", s.nTable).each( function (i) { - a.push( $(this).width() ); - } ); - - $("thead>tr td", s.nTable).each( function (i) { - b.push( $(this).width() ); - } ); - - $("thead>tr th", s.nTable).each( function (i) { - $("thead>tr th:eq("+i+")", nTable).width( a[i] ); - $(this).width( a[i] ); - } ); - - $("thead>tr td", s.nTable).each( function (i) { - $("thead>tr td:eq("+i+")", nTable).width( b[i] ); - $(this).width( b[i] ); - } ); - - // Stop DataTables 1.9 from putting a focus ring on the headers when - // clicked to sort - $('th.sorting, th.sorting_desc, th.sorting_asc', nTable).bind( 'click', function () { - this.blur(); - } ); - }, - - /* - * Function: _fnCloneTfoot - * Purpose: Clone the tfoot element - * Returns: - - * Inputs: object:oCache - the cached values for this fixed element - */ - _fnCloneTfoot: function ( oCache ) - { - var s = this.fnGetSettings(); - var nTable = oCache.nNode; - - /* Set the wrapper width to match that of the cloned table */ - oCache.nWrapper.style.width = $(s.nTable).outerWidth()+"px"; - - /* Remove any children the cloned table has */ - while ( nTable.childNodes.length > 0 ) - { - nTable.removeChild( nTable.childNodes[0] ); - } - - /* Clone the DataTables footer */ - var nTfoot = $('tfoot', s.nTable).clone(true)[0]; - nTable.appendChild( nTfoot ); - - /* Copy the widths across - apparently a clone isn't good enough for this */ - $("tfoot:eq(0)>tr th", s.nTable).each( function (i) { - $("tfoot:eq(0)>tr th:eq("+i+")", nTable).width( $(this).width() ); - } ); - - $("tfoot:eq(0)>tr td", s.nTable).each( function (i) { - $("tfoot:eq(0)>tr td:eq("+i+")", nTable).width( $(this).width() ); - } ); - }, - - /* - * Function: _fnCloneTLeft - * Purpose: Clone the left column(s) - * Returns: - - * Inputs: object:oCache - the cached values for this fixed element - */ - _fnCloneTLeft: function ( oCache ) - { - var s = this.fnGetSettings(); - var nTable = oCache.nNode; - var nBody = $('tbody', s.nTable)[0]; - - /* Remove any children the cloned table has */ - while ( nTable.childNodes.length > 0 ) - { - nTable.removeChild( nTable.childNodes[0] ); - } - - /* Is this the most efficient way to do this - it looks horrible... */ - nTable.appendChild( $("thead", s.nTable).clone(true)[0] ); - nTable.appendChild( $("tbody", s.nTable).clone(true)[0] ); - if ( s.bFooter ) - { - nTable.appendChild( $("tfoot", s.nTable).clone(true)[0] ); - } - - /* Remove unneeded cells */ - var sSelector = 'gt(' + (oCache.iCells - 1) + ')'; - $('thead tr', nTable).each( function (k) { - $('th:' + sSelector, this).remove(); - } ); - - $('tfoot tr', nTable).each( function (k) { - $('th:' + sSelector, this).remove(); - } ); - - $('tbody tr', nTable).each( function (k) { - $('td:' + sSelector, this).remove(); - } ); - - this.fnEqualiseHeights( 'thead', nBody.parentNode, nTable ); - this.fnEqualiseHeights( 'tbody', nBody.parentNode, nTable ); - this.fnEqualiseHeights( 'tfoot', nBody.parentNode, nTable ); - - var iWidth = 0; - for (var i = 0; i < oCache.iCells; i++) { - iWidth += $('thead tr th:eq(' + i + ')', s.nTable).outerWidth(); - } - nTable.style.width = iWidth+"px"; - oCache.nWrapper.style.width = iWidth+"px"; - }, - - /* - * Function: _fnCloneTRight - * Purpose: Clone the right most column(s) - * Returns: - - * Inputs: object:oCache - the cached values for this fixed element - */ - _fnCloneTRight: function ( oCache ) - { - var s = this.fnGetSettings(); - var nBody = $('tbody', s.nTable)[0]; - var nTable = oCache.nNode; - var iCols = $('tbody tr:eq(0) td', s.nTable).length; - - /* Remove any children the cloned table has */ - while ( nTable.childNodes.length > 0 ) - { - nTable.removeChild( nTable.childNodes[0] ); - } - - /* Is this the most efficient way to do this - it looks horrible... */ - nTable.appendChild( $("thead", s.nTable).clone(true)[0] ); - nTable.appendChild( $("tbody", s.nTable).clone(true)[0] ); - if ( s.bFooter ) - { - nTable.appendChild( $("tfoot", s.nTable).clone(true)[0] ); - } - $('thead tr th:lt('+(iCols-oCache.iCells)+')', nTable).remove(); - $('tfoot tr th:lt('+(iCols-oCache.iCells)+')', nTable).remove(); - - /* Remove unneeded cells */ - $('tbody tr', nTable).each( function (k) { - $('td:lt('+(iCols-oCache.iCells)+')', this).remove(); - } ); - - this.fnEqualiseHeights( 'thead', nBody.parentNode, nTable ); - this.fnEqualiseHeights( 'tbody', nBody.parentNode, nTable ); - this.fnEqualiseHeights( 'tfoot', nBody.parentNode, nTable ); - - var iWidth = 0; - for (var i = 0; i < oCache.iCells; i++) { - iWidth += $('thead tr th:eq('+(iCols-1-i)+')', s.nTable).outerWidth(); - } - nTable.style.width = iWidth+"px"; - oCache.nWrapper.style.width = iWidth+"px"; - }, - - - /** - * Equalise the heights of the rows in a given table node in a cross browser way. Note that this - * is more or less lifted as is from FixedColumns - * @method fnEqualiseHeights - * @returns void - * @param {string} parent Node type - thead, tbody or tfoot - * @param {element} original Original node to take the heights from - * @param {element} clone Copy the heights to - * @private - */ - "fnEqualiseHeights": function ( parent, original, clone ) - { - var that = this; - var originals = $(parent +' tr', original); - var height; - - $(parent+' tr', clone).each( function (k) { - height = originals.eq( k ).css('height'); - - // This is nasty :-(. IE has a sub-pixel error even when setting - // the height below (the Firefox fix) which causes the fixed column - // to go out of alignment. Need to add a pixel before the assignment - // Can this be feature detected? Not sure how... - if ( navigator.appName == 'Microsoft Internet Explorer' ) { - height = parseInt( height, 10 ) + 1; - } - - $(this).css( 'height', height ); - - // For Firefox to work, we need to also set the height of the - // original row, to the value that we read from it! Otherwise there - // is a sub-pixel rounding error - originals.eq( k ).css( 'height', height ); - } ); - } -}; - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Static properties and methods - * We use these for speed! This information is common to all instances of FixedHeader, so no - * point if having them calculated and stored for each different instance. - */ - -/* - * Variable: oWin - * Purpose: Store information about the window positioning - * Scope: FixedHeader - */ -FixedHeader.oWin = { - "iScrollTop": 0, - "iScrollRight": 0, - "iScrollBottom": 0, - "iScrollLeft": 0, - "iHeight": 0, - "iWidth": 0 -}; - -/* - * Variable: oDoc - * Purpose: Store information about the document size - * Scope: FixedHeader - */ -FixedHeader.oDoc = { - "iHeight": 0, - "iWidth": 0 -}; - -/* - * Variable: afnScroll - * Purpose: Array of functions that are to be used for the scrolling components - * Scope: FixedHeader - */ -FixedHeader.afnScroll = []; - -/* - * Function: fnMeasure - * Purpose: Update the measurements for the window and document - * Returns: - - * Inputs: - - */ -FixedHeader.fnMeasure = function () -{ - var - jqWin = $(window), - jqDoc = $(document), - oWin = FixedHeader.oWin, - oDoc = FixedHeader.oDoc; - - oDoc.iHeight = jqDoc.height(); - oDoc.iWidth = jqDoc.width(); - - oWin.iHeight = jqWin.height(); - oWin.iWidth = jqWin.width(); - oWin.iScrollTop = jqWin.scrollTop(); - oWin.iScrollLeft = jqWin.scrollLeft(); - oWin.iScrollRight = oDoc.iWidth - oWin.iScrollLeft - oWin.iWidth; - oWin.iScrollBottom = oDoc.iHeight - oWin.iScrollTop - oWin.iHeight; -}; - - -FixedHeader.version = "2.1.2"; - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Global processing - */ - -/* - * Just one 'scroll' event handler in FixedHeader, which calls the required components. This is - * done as an optimisation, to reduce calculation and proagation time - */ -$(window).scroll( function () { - FixedHeader.fnMeasure(); - - for ( var i=0, iLen=FixedHeader.afnScroll.length ; i<iLen ; i++ ) { - FixedHeader.afnScroll[i](); - } -} ); - - -$.fn.dataTable.FixedHeader = FixedHeader; -$.fn.DataTable.FixedHeader = FixedHeader; - - -return FixedHeader; -}; // /factory - - -// Define as an AMD module if possible -if ( typeof define === 'function' && define.amd ) { - define( ['jquery', 'datatables'], factory ); -} -else if ( typeof exports === 'object' ) { - // Node/CommonJS - factory( require('jquery'), require('datatables') ); -} -else if ( jQuery && !jQuery.fn.dataTable.FixedHeader ) { - // Otherwise simply initialise as normal, stopping multiple evaluation - factory( jQuery, jQuery.fn.dataTable ); -} - - -})(window, document); - diff --git a/assets/plugins/datatables/extensions/FixedHeader/js/dataTables.fixedHeader.min.js b/assets/plugins/datatables/extensions/FixedHeader/js/dataTables.fixedHeader.min.js deleted file mode 100644 index 17160910..00000000 --- a/assets/plugins/datatables/extensions/FixedHeader/js/dataTables.fixedHeader.min.js +++ /dev/null @@ -1,30 +0,0 @@ -/*! - FixedHeader 2.1.2 - ©2010-2014 SpryMedia Ltd - datatables.net/license -*/ -var FixedHeader; -(function(j,k,h){var l=function(e){FixedHeader=function(a,b){if(!this instanceof FixedHeader)alert("FixedHeader warning: FixedHeader must be initialised with the 'new' keyword.");else{var c={aoCache:[],oSides:{top:!0,bottom:!1,left:0,right:0},oZIndexes:{top:104,bottom:103,left:102,right:101},oCloneOnDraw:{top:!1,bottom:!1,left:!0,right:!0},oMes:{iTableWidth:0,iTableHeight:0,iTableLeft:0,iTableRight:0,iTableTop:0,iTableBottom:0},oOffset:{top:0},nTable:null,bFooter:!1,bInitComplete:!1};this.fnGetSettings= -function(){return c};this.fnUpdate=function(){this._fnUpdateClones();this._fnUpdatePositions()};this.fnPosition=function(){this._fnUpdatePositions()};var d=e.fn.dataTable.Api?(new e.fn.dataTable.Api(a)).settings()[0]:a.fnSettings();d._oPluginFixedHeader=this;this.fnInit(d,b)}};FixedHeader.prototype={fnInit:function(a,b){var c=this.fnGetSettings(),d=this;this.fnInitSettings(c,b);""!==a.oScroll.sX||""!==a.oScroll.sY?alert("FixedHeader 2 is not supported with DataTables' scrolling mode at this time"): -(c.nTable=a.nTable,a.aoDrawCallback.unshift({fn:function(){FixedHeader.fnMeasure();d._fnUpdateClones.call(d);d._fnUpdatePositions.call(d)},sName:"FixedHeader"}),c.bFooter=0<e(">tfoot",c.nTable).length?!0:!1,c.oSides.top&&c.aoCache.push(d._fnCloneTable("fixedHeader","FixedHeader_Header",d._fnCloneThead)),c.oSides.bottom&&c.aoCache.push(d._fnCloneTable("fixedFooter","FixedHeader_Footer",d._fnCloneTfoot)),c.oSides.left&&c.aoCache.push(d._fnCloneTable("fixedLeft","FixedHeader_Left",d._fnCloneTLeft,c.oSides.left)), -c.oSides.right&&c.aoCache.push(d._fnCloneTable("fixedRight","FixedHeader_Right",d._fnCloneTRight,c.oSides.right)),FixedHeader.afnScroll.push(function(){d._fnUpdatePositions.call(d)}),e(j).resize(function(){FixedHeader.fnMeasure();d._fnUpdateClones.call(d);d._fnUpdatePositions.call(d)}),e(c.nTable).on("column-reorder.dt",function(){FixedHeader.fnMeasure();d._fnUpdateClones(!0);d._fnUpdatePositions()}).on("column-visibility.dt",function(){FixedHeader.fnMeasure();d._fnUpdateClones(!0);d._fnUpdatePositions()}), -FixedHeader.fnMeasure(),d._fnUpdateClones(),d._fnUpdatePositions(),c.bInitComplete=!0)},fnInitSettings:function(a,b){if(b!==h&&(b.top!==h&&(a.oSides.top=b.top),b.bottom!==h&&(a.oSides.bottom=b.bottom),"boolean"==typeof b.left?a.oSides.left=b.left?1:0:b.left!==h&&(a.oSides.left=b.left),"boolean"==typeof b.right?a.oSides.right=b.right?1:0:b.right!==h&&(a.oSides.right=b.right),b.zTop!==h&&(a.oZIndexes.top=b.zTop),b.zBottom!==h&&(a.oZIndexes.bottom=b.zBottom),b.zLeft!==h&&(a.oZIndexes.left=b.zLeft),b.zRight!== -h&&(a.oZIndexes.right=b.zRight),b.offsetTop!==h&&(a.oOffset.top=b.offsetTop),b.alwaysCloneTop!==h&&(a.oCloneOnDraw.top=b.alwaysCloneTop),b.alwaysCloneBottom!==h&&(a.oCloneOnDraw.bottom=b.alwaysCloneBottom),b.alwaysCloneLeft!==h&&(a.oCloneOnDraw.left=b.alwaysCloneLeft),b.alwaysCloneRight!==h))a.oCloneOnDraw.right=b.alwaysCloneRight},_fnCloneTable:function(a,b,c,d){var f=this.fnGetSettings(),g;"absolute"!=e(f.nTable.parentNode).css("position")&&(f.nTable.parentNode.style.position="relative");g=f.nTable.cloneNode(!1); -g.removeAttribute("id");var i=k.createElement("div");i.style.position="absolute";i.style.top="0px";i.style.left="0px";i.className+=" FixedHeader_Cloned "+a+" "+b;"fixedHeader"==a&&(i.style.zIndex=f.oZIndexes.top);"fixedFooter"==a&&(i.style.zIndex=f.oZIndexes.bottom);"fixedLeft"==a?i.style.zIndex=f.oZIndexes.left:"fixedRight"==a&&(i.style.zIndex=f.oZIndexes.right);g.style.margin="0";i.appendChild(g);k.body.appendChild(i);return{nNode:g,nWrapper:i,sType:a,sPosition:"",sTop:"",sLeft:"",fnClone:c,iCells:d}}, -_fnMeasure:function(){var a=this.fnGetSettings(),b=a.oMes,c=e(a.nTable),d=c.offset(),f=this._fnSumScroll(a.nTable.parentNode,"scrollTop");this._fnSumScroll(a.nTable.parentNode,"scrollLeft");b.iTableWidth=c.outerWidth();b.iTableHeight=c.outerHeight();b.iTableLeft=d.left+a.nTable.parentNode.scrollLeft;b.iTableTop=d.top+f;b.iTableRight=b.iTableLeft+b.iTableWidth;b.iTableRight=FixedHeader.oDoc.iWidth-b.iTableLeft-b.iTableWidth;b.iTableBottom=FixedHeader.oDoc.iHeight-b.iTableTop-b.iTableHeight},_fnSumScroll:function(a, -b){for(var c=a[b];(a=a.parentNode)&&!("HTML"==a.nodeName||"BODY"==a.nodeName);)c=a[b];return c},_fnUpdatePositions:function(){var a=this.fnGetSettings();this._fnMeasure();for(var b=0,c=a.aoCache.length;b<c;b++)"fixedHeader"==a.aoCache[b].sType?this._fnScrollFixedHeader(a.aoCache[b]):"fixedFooter"==a.aoCache[b].sType?this._fnScrollFixedFooter(a.aoCache[b]):"fixedLeft"==a.aoCache[b].sType?this._fnScrollHorizontalLeft(a.aoCache[b]):this._fnScrollHorizontalRight(a.aoCache[b])},_fnUpdateClones:function(a){var b= -this.fnGetSettings();a&&(b.bInitComplete=!1);for(var c=0,d=b.aoCache.length;c<d;c++)b.aoCache[c].fnClone.call(this,b.aoCache[c]);a&&(b.bInitComplete=!0)},_fnScrollHorizontalRight:function(a){var b=this.fnGetSettings().oMes,c=FixedHeader.oWin,d=FixedHeader.oDoc,f=a.nWrapper,g=e(f).outerWidth();c.iScrollRight<b.iTableRight?(this._fnUpdateCache(a,"sPosition","absolute","position",f.style),this._fnUpdateCache(a,"sTop",b.iTableTop+"px","top",f.style),this._fnUpdateCache(a,"sLeft",b.iTableLeft+b.iTableWidth- -g+"px","left",f.style)):b.iTableLeft<d.iWidth-c.iScrollRight-g?(this._fnUpdateCache(a,"sPosition","fixed","position",f.style),this._fnUpdateCache(a,"sTop",b.iTableTop-c.iScrollTop+"px","top",f.style),this._fnUpdateCache(a,"sLeft",c.iWidth-g+"px","left",f.style)):(this._fnUpdateCache(a,"sPosition","absolute","position",f.style),this._fnUpdateCache(a,"sTop",b.iTableTop+"px","top",f.style),this._fnUpdateCache(a,"sLeft",b.iTableLeft+"px","left",f.style))},_fnScrollHorizontalLeft:function(a){var b=this.fnGetSettings().oMes, -c=FixedHeader.oWin,d=a.nWrapper,f=e(d).outerWidth();c.iScrollLeft<b.iTableLeft?(this._fnUpdateCache(a,"sPosition","absolute","position",d.style),this._fnUpdateCache(a,"sTop",b.iTableTop+"px","top",d.style),this._fnUpdateCache(a,"sLeft",b.iTableLeft+"px","left",d.style)):c.iScrollLeft<b.iTableLeft+b.iTableWidth-f?(this._fnUpdateCache(a,"sPosition","fixed","position",d.style),this._fnUpdateCache(a,"sTop",b.iTableTop-c.iScrollTop+"px","top",d.style),this._fnUpdateCache(a,"sLeft","0px","left",d.style)): -(this._fnUpdateCache(a,"sPosition","absolute","position",d.style),this._fnUpdateCache(a,"sTop",b.iTableTop+"px","top",d.style),this._fnUpdateCache(a,"sLeft",b.iTableLeft+b.iTableWidth-f+"px","left",d.style))},_fnScrollFixedFooter:function(a){var b=this.fnGetSettings(),c=b.oMes,d=FixedHeader.oWin,f=a.nWrapper,b=e("thead",b.nTable).outerHeight(),g=e(f).outerHeight();d.iScrollBottom<c.iTableBottom?(this._fnUpdateCache(a,"sPosition","absolute","position",f.style),this._fnUpdateCache(a,"sTop",c.iTableTop+ -c.iTableHeight-g+"px","top",f.style),this._fnUpdateCache(a,"sLeft",c.iTableLeft+"px","left",f.style)):d.iScrollBottom<c.iTableBottom+c.iTableHeight-g-b?(this._fnUpdateCache(a,"sPosition","fixed","position",f.style),this._fnUpdateCache(a,"sTop",d.iHeight-g+"px","top",f.style),this._fnUpdateCache(a,"sLeft",c.iTableLeft-d.iScrollLeft+"px","left",f.style)):(this._fnUpdateCache(a,"sPosition","absolute","position",f.style),this._fnUpdateCache(a,"sTop",c.iTableTop+g+"px","top",f.style),this._fnUpdateCache(a, -"sLeft",c.iTableLeft+"px","left",f.style))},_fnScrollFixedHeader:function(a){for(var b=this.fnGetSettings(),c=b.oMes,d=FixedHeader.oWin,e=a.nWrapper,g=0,i=b.nTable.getElementsByTagName("tbody"),h=0;h<i.length;++h)g+=i[h].offsetHeight;c.iTableTop>d.iScrollTop+b.oOffset.top?(this._fnUpdateCache(a,"sPosition","absolute","position",e.style),this._fnUpdateCache(a,"sTop",c.iTableTop+"px","top",e.style),this._fnUpdateCache(a,"sLeft",c.iTableLeft+"px","left",e.style)):d.iScrollTop+b.oOffset.top>c.iTableTop+ -g?(this._fnUpdateCache(a,"sPosition","absolute","position",e.style),this._fnUpdateCache(a,"sTop",c.iTableTop+g+"px","top",e.style),this._fnUpdateCache(a,"sLeft",c.iTableLeft+"px","left",e.style)):(this._fnUpdateCache(a,"sPosition","fixed","position",e.style),this._fnUpdateCache(a,"sTop",b.oOffset.top+"px","top",e.style),this._fnUpdateCache(a,"sLeft",c.iTableLeft-d.iScrollLeft+"px","left",e.style))},_fnUpdateCache:function(a,b,c,d,e){a[b]!=c&&(e[d]=c,a[b]=c)},_fnClassUpdate:function(a,b){var c=this; -if("TR"===a.nodeName.toUpperCase()||"TH"===a.nodeName.toUpperCase()||"TD"===a.nodeName.toUpperCase()||"SPAN"===a.nodeName.toUpperCase())b.className=a.className;e(a).children().each(function(d){c._fnClassUpdate(e(a).children()[d],e(b).children()[d])})},_fnCloneThead:function(a){var b=this.fnGetSettings(),c=a.nNode;if(b.bInitComplete&&!b.oCloneOnDraw.top)this._fnClassUpdate(e("thead",b.nTable)[0],e("thead",c)[0]);else{var d=e(b.nTable).outerWidth();a.nWrapper.style.width=d+"px";for(c.style.width=d+ -"px";0<c.childNodes.length;)e("thead th",c).unbind("click"),c.removeChild(c.childNodes[0]);a=e("thead",b.nTable).clone(!0)[0];c.appendChild(a);var f=[],g=[];e("thead>tr th",b.nTable).each(function(){f.push(e(this).width())});e("thead>tr td",b.nTable).each(function(){g.push(e(this).width())});e("thead>tr th",b.nTable).each(function(a){e("thead>tr th:eq("+a+")",c).width(f[a]);e(this).width(f[a])});e("thead>tr td",b.nTable).each(function(a){e("thead>tr td:eq("+a+")",c).width(g[a]);e(this).width(g[a])}); -e("th.sorting, th.sorting_desc, th.sorting_asc",c).bind("click",function(){this.blur()})}},_fnCloneTfoot:function(a){var b=this.fnGetSettings(),c=a.nNode;for(a.nWrapper.style.width=e(b.nTable).outerWidth()+"px";0<c.childNodes.length;)c.removeChild(c.childNodes[0]);a=e("tfoot",b.nTable).clone(!0)[0];c.appendChild(a);e("tfoot:eq(0)>tr th",b.nTable).each(function(a){e("tfoot:eq(0)>tr th:eq("+a+")",c).width(e(this).width())});e("tfoot:eq(0)>tr td",b.nTable).each(function(a){e("tfoot:eq(0)>tr td:eq("+ -a+")",c).width(e(this).width())})},_fnCloneTLeft:function(a){for(var b=this.fnGetSettings(),c=a.nNode,d=e("tbody",b.nTable)[0];0<c.childNodes.length;)c.removeChild(c.childNodes[0]);c.appendChild(e("thead",b.nTable).clone(!0)[0]);c.appendChild(e("tbody",b.nTable).clone(!0)[0]);b.bFooter&&c.appendChild(e("tfoot",b.nTable).clone(!0)[0]);var f="gt("+(a.iCells-1)+")";e("thead tr",c).each(function(){e("th:"+f,this).remove()});e("tfoot tr",c).each(function(){e("th:"+f,this).remove()});e("tbody tr",c).each(function(){e("td:"+ -f,this).remove()});this.fnEqualiseHeights("thead",d.parentNode,c);this.fnEqualiseHeights("tbody",d.parentNode,c);this.fnEqualiseHeights("tfoot",d.parentNode,c);for(var g=d=0;g<a.iCells;g++)d+=e("thead tr th:eq("+g+")",b.nTable).outerWidth();c.style.width=d+"px";a.nWrapper.style.width=d+"px"},_fnCloneTRight:function(a){for(var b=this.fnGetSettings(),c=e("tbody",b.nTable)[0],d=a.nNode,f=e("tbody tr:eq(0) td",b.nTable).length;0<d.childNodes.length;)d.removeChild(d.childNodes[0]);d.appendChild(e("thead", -b.nTable).clone(!0)[0]);d.appendChild(e("tbody",b.nTable).clone(!0)[0]);b.bFooter&&d.appendChild(e("tfoot",b.nTable).clone(!0)[0]);e("thead tr th:lt("+(f-a.iCells)+")",d).remove();e("tfoot tr th:lt("+(f-a.iCells)+")",d).remove();e("tbody tr",d).each(function(){e("td:lt("+(f-a.iCells)+")",this).remove()});this.fnEqualiseHeights("thead",c.parentNode,d);this.fnEqualiseHeights("tbody",c.parentNode,d);this.fnEqualiseHeights("tfoot",c.parentNode,d);for(var g=c=0;g<a.iCells;g++)c+=e("thead tr th:eq("+(f- -1-g)+")",b.nTable).outerWidth();d.style.width=c+"px";a.nWrapper.style.width=c+"px"},fnEqualiseHeights:function(a,b,c){var d=e(a+" tr",b),f;e(a+" tr",c).each(function(a){f=d.eq(a).css("height");"Microsoft Internet Explorer"==navigator.appName&&(f=parseInt(f,10)+1);e(this).css("height",f);d.eq(a).css("height",f)})}};FixedHeader.oWin={iScrollTop:0,iScrollRight:0,iScrollBottom:0,iScrollLeft:0,iHeight:0,iWidth:0};FixedHeader.oDoc={iHeight:0,iWidth:0};FixedHeader.afnScroll=[];FixedHeader.fnMeasure=function(){var a= -e(j),b=e(k),c=FixedHeader.oWin,d=FixedHeader.oDoc;d.iHeight=b.height();d.iWidth=b.width();c.iHeight=a.height();c.iWidth=a.width();c.iScrollTop=a.scrollTop();c.iScrollLeft=a.scrollLeft();c.iScrollRight=d.iWidth-c.iScrollLeft-c.iWidth;c.iScrollBottom=d.iHeight-c.iScrollTop-c.iHeight};FixedHeader.version="2.1.2";e(j).scroll(function(){FixedHeader.fnMeasure();for(var a=0,b=FixedHeader.afnScroll.length;a<b;a++)FixedHeader.afnScroll[a]()});e.fn.dataTable.FixedHeader=FixedHeader;return e.fn.DataTable.FixedHeader= -FixedHeader};"function"===typeof define&&define.amd?define(["jquery","datatables"],l):"object"===typeof exports?l(require("jquery"),require("datatables")):jQuery&&!jQuery.fn.dataTable.FixedHeader&&l(jQuery,jQuery.fn.dataTable)})(window,document); diff --git a/assets/plugins/datatables/extensions/KeyTable/Readme.txt b/assets/plugins/datatables/extensions/KeyTable/Readme.txt deleted file mode 100644 index 345e9113..00000000 --- a/assets/plugins/datatables/extensions/KeyTable/Readme.txt +++ /dev/null @@ -1,36 +0,0 @@ -# KeyTable - -KeyTable provides enhanced accessibility and navigation options for DataTables enhanced tables, by allowing Excel like cell navigation on any table. Events (focus, blur, action etc) can be assigned to individual cells, columns, rows or all cells to allow advanced interaction options.. Key features include: - -* Easy to use spreadsheet like interaction -* Fully integrated with DataTables -* Wide range of supported events - - -# Installation - -To use KeyTable, first download DataTables ( http://datatables.net/download ) and place the unzipped KeyTable package into a `extensions` directory in the DataTables package. This will allow the pages in the examples to operate correctly. To see the examples running, open the `examples` directory in your web-browser. - - -# Basic usage - -KeyTable is initialised using the `C` option that it adds to DataTables' `dom` option. For example: - -```js -$(document).ready( function () { - var table = $('#example').DataTable(); - new $.fn.dataTable.KeyTable( table ); -} ); -``` - - -# Documentation / support - -* Documentation: http://datatables.net/extensions/keytable/ -* DataTables support forums: http://datatables.net/forums - - -# GitHub - -If you fancy getting involved with the development of KeyTable and help make it better, please refer to its GitHub repo: https://github.com/DataTables/KeyTable - diff --git a/assets/plugins/datatables/extensions/KeyTable/css/dataTables.keyTable.css b/assets/plugins/datatables/extensions/KeyTable/css/dataTables.keyTable.css deleted file mode 100644 index 2759df1b..00000000 --- a/assets/plugins/datatables/extensions/KeyTable/css/dataTables.keyTable.css +++ /dev/null @@ -1,7 +0,0 @@ - - -table.KeyTable th.focus, -table.KeyTable td.focus { - outline: 3px solid #3366FF; - outline-offset: -3px; -} diff --git a/assets/plugins/datatables/extensions/KeyTable/css/dataTables.keyTable.min.css b/assets/plugins/datatables/extensions/KeyTable/css/dataTables.keyTable.min.css deleted file mode 100644 index db040201..00000000 --- a/assets/plugins/datatables/extensions/KeyTable/css/dataTables.keyTable.min.css +++ /dev/null @@ -1 +0,0 @@ -table.KeyTable th.focus,table.KeyTable td.focus{outline:3px solid #3366FF;outline-offset:-3px} diff --git a/assets/plugins/datatables/extensions/KeyTable/examples/events.html b/assets/plugins/datatables/extensions/KeyTable/examples/events.html deleted file mode 100644 index 2ef0a9f8..00000000 --- a/assets/plugins/datatables/extensions/KeyTable/examples/events.html +++ /dev/null @@ -1,756 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>KeyTable example - Events</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.keyTable.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.keyTable.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -function eventMsg ( msg ) { - var n = document.getElementById('info'); - n.innerHTML += msg+"<br>"; - n.scrollTop = n.scrollHeight; -} - -$(document).ready(function() { - var table = $('#example').DataTable(); - var keys = new $.fn.dataTable.KeyTable( table ); - - /* Focus handler for all cells in last column */ - keys.event.focus( 4, null, function( node, x, y ) { - eventMsg( "Cell "+x+","+y+" focused ('live' event - column)" ); - } ); - - /* Focus handler for all cells in 8th row */ - keys.event.focus( null, 7, function( node, x, y ) { - eventMsg( "Cell "+x+","+y+" focused ('live' event - row)" ); - } ); - - /* Focus using coords. */ - keys.event.focus( 1, 0, function( node ) { - keys.event.remove.focus( node ); - eventMsg( "Cell 1,0 focus - this event has now been removed" ); - } ); - - keys.event.focus( 1, 3, function() { - eventMsg( "Cell 1,3 focus" ); - } ); - - /* focus with a node */ - keys.event.focus( $('#example tbody tr:eq(2) td:eq(0)')[0], function() { - eventMsg( "Cell 0,2 focus" ); - } ); - - /* Blur using a node */ - keys.event.blur( $('#example tbody tr:eq(1) td:eq(2)')[0], function() { - eventMsg( "Cell 1,2 blur" ); - } ); - - /* Blur using coords */ - keys.event.blur( 2, 4, function() { - eventMsg( "Cell 2,4 blur" ); - } ); - - /* Action */ - keys.event.action( 2, 2, function( node ) { - eventMsg( "Cell 2,2 action" ); - if ( node.style.fontWeight == "" || node.style.fontWeight == "normal" ) { - node.style.fontWeight = "bold"; - } - else { - node.style.fontWeight = "normal"; - } - } ); - - keys.event.action( 2, 5, function( node ) { - eventMsg( "Cell 2,5 action" ); - if ( node.style.fontStyle == "" ) { - node.style.fontStyle = "italic"; - } - else { - node.style.fontStyle = ""; - } - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>KeyTable example <span>Events</span></h1> - - <div class="info"> - <p>KeyTable provides the ability to listen for events such as <code>focus</code>, <code>blur</code>, - <code>esc</code> (the escape key) and 'return' (the return key) can be assigned event handling - functions through KeyTable's the API. This gives you the ability to take an action on a cell.</p> - - <p>The example shown below has a few cells (selected at random, but near the top) with blur and focus - events assigned to them. You can also see the navigation around the table using arrow keys.</p> - </div> - - <div id="info" class="box"> - Event information:<br> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this - example:</p><code class="multiline brush: js;">function eventMsg ( msg ) { - var n = document.getElementById('info'); - n.innerHTML += msg+&quot;&lt;br&gt;&quot;; - n.scrollTop = n.scrollHeight; -} - -$(document).ready(function() { - var table = $('#example').DataTable(); - var keys = new $.fn.dataTable.KeyTable( table ); - - /* Focus handler for all cells in last column */ - keys.event.focus( 4, null, function( node, x, y ) { - eventMsg( &quot;Cell &quot;+x+&quot;,&quot;+y+&quot; focused ('live' event - column)&quot; ); - } ); - - /* Focus handler for all cells in 8th row */ - keys.event.focus( null, 7, function( node, x, y ) { - eventMsg( &quot;Cell &quot;+x+&quot;,&quot;+y+&quot; focused ('live' event - row)&quot; ); - } ); - - /* Focus using coords. */ - keys.event.focus( 1, 0, function( node ) { - keys.event.remove.focus( node ); - eventMsg( &quot;Cell 1,0 focus - this event has now been removed&quot; ); - } ); - - keys.event.focus( 1, 3, function() { - eventMsg( &quot;Cell 1,3 focus&quot; ); - } ); - - /* focus with a node */ - keys.event.focus( $('#example tbody tr:eq(2) td:eq(0)')[0], function() { - eventMsg( &quot;Cell 0,2 focus&quot; ); - } ); - - /* Blur using a node */ - keys.event.blur( $('#example tbody tr:eq(1) td:eq(2)')[0], function() { - eventMsg( &quot;Cell 1,2 blur&quot; ); - } ); - - /* Blur using coords */ - keys.event.blur( 2, 4, function() { - eventMsg( &quot;Cell 2,4 blur&quot; ); - } ); - - /* Action */ - keys.event.action( 2, 2, function( node ) { - eventMsg( &quot;Cell 2,2 action&quot; ); - if ( node.style.fontWeight == &quot;&quot; || node.style.fontWeight == &quot;normal&quot; ) { - node.style.fontWeight = &quot;bold&quot;; - } - else { - node.style.fontWeight = &quot;normal&quot;; - } - } ); - - keys.event.action( 2, 5, function( node ) { - eventMsg( &quot;Cell 2,5 action&quot; ); - if ( node.style.fontStyle == &quot;&quot; ) { - node.style.fontStyle = &quot;italic&quot;; - } - else { - node.style.fontStyle = &quot;&quot;; - } - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this - example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href= - "../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.keyTable.js">../js/dataTables.keyTable.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by - DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library - files (below), in order to correctly display the table. The additional CSS used is shown - below:</p><code class="multiline brush: js;"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the - table:</p> - - <ul> - <li><a href= - "../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.keyTable.css">../css/dataTables.keyTable.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data - will update automatically as any additional data is loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note - that this is just an example script using PHP. Server-side processing scripts can be written in any - language, using <a href="//datatables.net/manual/server-side">the protocol described in the - DataTables documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li class="active"><a href="./events.html">Events</a></li> - <li><a href="./scrolling.html">Scrolling table</a></li> - <li><a href="./html.html">Plain HTML table</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full - information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and - <a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of - DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href= - "http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/KeyTable/examples/html.html b/assets/plugins/datatables/extensions/KeyTable/examples/html.html deleted file mode 100644 index a0a0e108..00000000 --- a/assets/plugins/datatables/extensions/KeyTable/examples/html.html +++ /dev/null @@ -1,627 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>KeyTable example - Plain HTML table</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.keyTable.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.keyTable.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - $('#example').addClass('KeyTable'); - new $.fn.dataTable.KeyTable(); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>KeyTable example <span>Plain HTML table</span></h1> - - <div class="info"> - <p>As well as being usable with DataTables, KeyTable can also be used with a plain HTML table. Please - note that this ability is deprecated and will be removed in KeyTable 1.3.</p> - - <p>This example shows KeyTable being initialised without any parameter, which instructs it to search - for any table with the class <code>KeyTable</code> which will be used.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this - example:</p><code class="multiline brush: js;">$(document).ready(function() { - $('#example').addClass('KeyTable'); - new $.fn.dataTable.KeyTable(); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this - example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href= - "../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.keyTable.js">../js/dataTables.keyTable.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by - DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library - files (below), in order to correctly display the table. The additional CSS used is shown - below:</p><code class="multiline brush: js;"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the - table:</p> - - <ul> - <li><a href= - "../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.keyTable.css">../css/dataTables.keyTable.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data - will update automatically as any additional data is loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note - that this is just an example script using PHP. Server-side processing scripts can be written in any - language, using <a href="//datatables.net/manual/server-side">the protocol described in the - DataTables documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./events.html">Events</a></li> - <li><a href="./scrolling.html">Scrolling table</a></li> - <li class="active"><a href="./html.html">Plain HTML table</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full - information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and - <a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of - DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href= - "http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/KeyTable/examples/index.html b/assets/plugins/datatables/extensions/KeyTable/examples/index.html deleted file mode 100644 index 71ab0a8f..00000000 --- a/assets/plugins/datatables/extensions/KeyTable/examples/index.html +++ /dev/null @@ -1,69 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - - <title>KeyTable examples - KeyTable examples</title> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>KeyTable example <span>KeyTable examples</span></h1> - - <div class="info"> - <p>KeyTable provides enhanced accessibility and navigation options for DataTables enhanced tables, by - allowing Excel like cell navigation on any table. Events (focus, blur, action etc) can be assigned to - individual cells, columns, rows or all cells to allow advanced interaction options.. Key features - include:</p> - - <ul class="markdown"> - <li>Easy to use spreadsheet like interaction</li> - <li>Fully integrated with DataTables</li> - <li>Wide range of supported events</li> - <li>Works without DataTables if you just want a plain table</li> - </ul> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./events.html">Events</a></li> - <li><a href="./scrolling.html">Scrolling table</a></li> - <li><a href="./html.html">Plain HTML table</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full - information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and - <a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of - DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href= - "http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/KeyTable/examples/scrolling.html b/assets/plugins/datatables/extensions/KeyTable/examples/scrolling.html deleted file mode 100644 index 6df15805..00000000 --- a/assets/plugins/datatables/extensions/KeyTable/examples/scrolling.html +++ /dev/null @@ -1,637 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>KeyTable example - Scrolling table</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.keyTable.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.keyTable.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - var table = $('#example').DataTable( { - scrollY: 300, - paging: false - } ); - - new $.fn.dataTable.KeyTable( table ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>KeyTable example <span>Scrolling table</span></h1> - - <div class="info"> - <p>KeyTable supports DataTables' scrolling options (<a href= - "//datatables.net/reference/option/scrollX"><code class="option" title= - "DataTables initialisation option">scrollX<span>DT</span></code></a> and <a href= - "//datatables.net/reference/option/scrollY"><code class="option" title= - "DataTables initialisation option">scrollY<span>DT</span></code></a>) without required any additional - configuration. As the navigation keys are used to alter the focus of the KeyTable, the DataTables - scrolling position is altered to show the focused cell.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this - example:</p><code class="multiline brush: js;">$(document).ready(function() { - var table = $('#example').DataTable( { - scrollY: 300, - paging: false - } ); - - new $.fn.dataTable.KeyTable( table ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this - example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href= - "../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.keyTable.js">../js/dataTables.keyTable.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by - DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library - files (below), in order to correctly display the table. The additional CSS used is shown - below:</p><code class="multiline brush: js;"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the - table:</p> - - <ul> - <li><a href= - "../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.keyTable.css">../css/dataTables.keyTable.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data - will update automatically as any additional data is loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note - that this is just an example script using PHP. Server-side processing scripts can be written in any - language, using <a href="//datatables.net/manual/server-side">the protocol described in the - DataTables documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./events.html">Events</a></li> - <li class="active"><a href="./scrolling.html">Scrolling table</a></li> - <li><a href="./html.html">Plain HTML table</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full - information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and - <a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of - DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href= - "http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/KeyTable/examples/simple.html b/assets/plugins/datatables/extensions/KeyTable/examples/simple.html deleted file mode 100644 index e18ed1c6..00000000 --- a/assets/plugins/datatables/extensions/KeyTable/examples/simple.html +++ /dev/null @@ -1,631 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>KeyTable example - Basic initialisation</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.keyTable.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.keyTable.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - var table = $('#example').DataTable(); - - new $.fn.dataTable.KeyTable( table ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>KeyTable example <span>Basic initialisation</span></h1> - - <div class="info"> - <p>KeyTable allows you to use keyboard navigation on a DataTables enhanced table, like an Excel - spreadsheet. The focused cell is shown through the CSS class ('focus') which in the case below is - simply a blue border. Use your keyboard's arrow keys and click the cells in the table to navigate.</p> - - <p>This example simply shows key table being initialised on a DataTable, but <a href= - "events.html">events</a> can be listened for through the KeyTable API which provide interaction - options.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this - example:</p><code class="multiline brush: js;">$(document).ready(function() { - var table = $('#example').DataTable(); - - new $.fn.dataTable.KeyTable( table ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this - example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href= - "../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.keyTable.js">../js/dataTables.keyTable.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by - DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library - files (below), in order to correctly display the table. The additional CSS used is shown - below:</p><code class="multiline brush: js;"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the - table:</p> - - <ul> - <li><a href= - "../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.keyTable.css">../css/dataTables.keyTable.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data - will update automatically as any additional data is loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note - that this is just an example script using PHP. Server-side processing scripts can be written in any - language, using <a href="//datatables.net/manual/server-side">the protocol described in the - DataTables documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li class="active"><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./events.html">Events</a></li> - <li><a href="./scrolling.html">Scrolling table</a></li> - <li><a href="./html.html">Plain HTML table</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full - information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and - <a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of - DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href= - "http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/KeyTable/js/dataTables.keyTable.js b/assets/plugins/datatables/extensions/KeyTable/js/dataTables.keyTable.js deleted file mode 100644 index f303f766..00000000 --- a/assets/plugins/datatables/extensions/KeyTable/js/dataTables.keyTable.js +++ /dev/null @@ -1,1175 +0,0 @@ -/*! KeyTable 1.2.1 - * ©2010-2014 SpryMedia Ltd - datatables.net/license - */ - -/** - * @summary KeyTable - * @description Spreadsheet like keyboard navigation for DataTables - * @version 1.2.1 - * @file dataTables.keyTable.js - * @author SpryMedia Ltd (www.sprymedia.co.uk) - * @contact www.sprymedia.co.uk/contact - * @copyright Copyright 2009-2014 SpryMedia Ltd. - * - * This source file is free software, available under the following license: - * MIT license - http://datatables.net/license/mit - * - * This source file is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. - * - * For details please refer to: http://www.datatables.net - */ - -// Global scope for KeyTable for backwards compatibility. Will be removed in 1.3 -var KeyTable; - - -(function(window, document, undefined) { - - -var factory = function( $, DataTable ) { -"use strict"; - -KeyTable = function ( oInit ) -{ - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * API parameters - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - /* - * Variable: block - * Purpose: Flag whether or not KeyTable events should be processed - * Scope: KeyTable - public - */ - this.block = false; - - /* - * Variable: event - * Purpose: Container for all event application methods - * Scope: KeyTable - public - * Notes: This object contains all the public methods for adding and removing events - these - * are dynamically added later on - */ - this.event = { - "remove": {} - }; - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * API methods - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - /* - * Function: fnGetCurrentPosition - * Purpose: Get the currently focused cell's position - * Returns: array int: [ x, y ] - * Inputs: void - */ - this.fnGetCurrentPosition = function () - { - return [ _iOldX, _iOldY ]; - }; - - - /* - * Function: fnGetCurrentData - * Purpose: Get the currently focused cell's data (innerHTML) - * Returns: string: - data requested - * Inputs: void - */ - this.fnGetCurrentData = function () - { - return _nOldFocus.innerHTML; - }; - - - /* - * Function: fnGetCurrentTD - * Purpose: Get the currently focused cell - * Returns: node: - focused element - * Inputs: void - */ - this.fnGetCurrentTD = function () - { - return _nOldFocus; - }; - - - /* - * Function: fnSetPosition - * Purpose: Set the position of the focused cell - * Returns: - - * Inputs: int:x - x coordinate - * int:y - y coordinate - * Notes: Thanks to Rohan Daxini for the basis of this function - */ - this.fnSetPosition = function( x, y ) - { - if ( typeof x == 'object' && x.nodeName ) - { - _fnSetFocus( x ); - } - else - { - _fnSetFocus( _fnCellFromCoords(x, y) ); - } - }; - - - /* - * Function: fnBlur - * Purpose: Blur the current focus - * Returns: - - * Inputs: - - */ - this.fnBlur = function() - { - _fnBlur(); - }; - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Private parameters - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - /* - * Variable: _nBody - * Purpose: Body node of the table - cached for renference - * Scope: KeyTable - private - */ - var _nBody = null; - - /* - * Variable: - * Purpose: - * Scope: KeyTable - private - */ - var _nOldFocus = null; - - /* - * Variable: _iOldX and _iOldY - * Purpose: X and Y coords of the old elemet that was focused on - * Scope: KeyTable - private - */ - var _iOldX = null; - var _iOldY = null; - - /* - * Variable: _that - * Purpose: Scope saving for 'this' after a jQuery event - * Scope: KeyTable - private - */ - var _that = null; - - /* - * Variable: sFocusClass - * Purpose: Class that should be used for focusing on a cell - * Scope: KeyTable - private - */ - var _sFocusClass = "focus"; - - /* - * Variable: _bKeyCapture - * Purpose: Flag for should KeyTable capture key events or not - * Scope: KeyTable - private - */ - var _bKeyCapture = false; - - /* - * Variable: _oaoEvents - * Purpose: Event cache object, one array for each supported event for speed of searching - * Scope: KeyTable - private - */ - var _oaoEvents = { - "action": [], - "esc": [], - "focus": [], - "blur": [] - }; - - /* - * Variable: _oDatatable - * Purpose: DataTables settings object for if we are actually using a - * DataTables table - * Scope: KeyTable - private - */ - var _oDatatable = null; - - var _bForm; - var _nInput; - var _bInputFocused = false; - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Private methods - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Key table events - */ - - /* - * Function: _fnEventAddTemplate - * Purpose: Create a function (with closure for sKey) event addition API - * Returns: function: - template function - * Inputs: string:sKey - type of event to detect - */ - function _fnEventAddTemplate( sKey ) - { - /* - * Function: - - * Purpose: API function for adding event to cache - * Returns: - - * Inputs: 1. node:x - target node to add event for - * 2. function:y - callback function to apply - * or - * 1. int:x - x coord. of target cell (can be null for live events) - * 2. int:y - y coord. of target cell (can be null for live events) - * 3. function:z - callback function to apply - * Notes: This function is (interally) overloaded (in as much as javascript allows for - * that) - the target cell can be given by either node or coords. - */ - return function ( x, y, z ) { - if ( (x===null || typeof x == "number") && - (y===null || typeof y == "number") && - typeof z == "function" ) - { - _fnEventAdd( sKey, x, y, z ); - } - else if ( typeof x == "object" && typeof y == "function" ) - { - var aCoords = _fnCoordsFromCell( x ); - _fnEventAdd( sKey, aCoords[0], aCoords[1], y ); - } - else - { - alert( "Unhandable event type was added: x" +x+ " y:" +y+ " z:" +z ); - } - }; - } - - - /* - * Function: _fnEventRemoveTemplate - * Purpose: Create a function (with closure for sKey) event removal API - * Returns: function: - template function - * Inputs: string:sKey - type of event to detect - */ - function _fnEventRemoveTemplate( sKey ) - { - /* - * Function: - - * Purpose: API function for removing event from cache - * Returns: int: - number of events removed - * Inputs: 1. node:x - target node to remove event from - * 2. function:y - callback function to apply - * or - * 1. int:x - x coord. of target cell (can be null for live events) - * 2. int:y - y coord. of target cell (can be null for live events) - * 3. function:z - callback function to remove - optional - * Notes: This function is (interally) overloaded (in as much as javascript allows for - * that) - the target cell can be given by either node or coords and the function - * to remove is optional - */ - return function ( x, y, z ) { - if ( (x===null || typeof arguments[0] == "number") && - (y===null || typeof arguments[1] == "number" ) ) - { - if ( typeof arguments[2] == "function" ) - { - _fnEventRemove( sKey, x, y, z ); - } - else - { - _fnEventRemove( sKey, x, y ); - } - } - else if ( typeof arguments[0] == "object" ) - { - var aCoords = _fnCoordsFromCell( x ); - if ( typeof arguments[1] == "function" ) - { - _fnEventRemove( sKey, aCoords[0], aCoords[1], y ); - } - else - { - _fnEventRemove( sKey, aCoords[0], aCoords[1] ); - } - } - else - { - alert( "Unhandable event type was removed: x" +x+ " y:" +y+ " z:" +z ); - } - }; - } - - /* Use the template functions to add the event API functions */ - for ( var sKey in _oaoEvents ) - { - if ( sKey ) - { - this.event[sKey] = _fnEventAddTemplate( sKey ); - this.event.remove[sKey] = _fnEventRemoveTemplate( sKey ); - } - } - - - /* - * Function: _fnEventAdd - * Purpose: Add an event to the internal cache - * Returns: - - * Inputs: string:sType - type of event to add, given by the available elements in _oaoEvents - * int:x - x-coords to add event to - can be null for "blanket" event - * int:y - y-coords to add event to - can be null for "blanket" event - * function:fn - callback function for when triggered - */ - function _fnEventAdd( sType, x, y, fn ) - { - _oaoEvents[sType].push( { - "x": x, - "y": y, - "fn": fn - } ); - } - - - /* - * Function: _fnEventRemove - * Purpose: Remove an event from the event cache - * Returns: int: - number of matching events removed - * Inputs: string:sType - type of event to look for - * node:nTarget - target table cell - * function:fn - optional - remove this function. If not given all handlers of this - * type will be removed - */ - function _fnEventRemove( sType, x, y, fn ) - { - var iCorrector = 0; - - for ( var i=0, iLen=_oaoEvents[sType].length ; i<iLen-iCorrector ; i++ ) - { - if ( typeof fn != 'undefined' ) - { - if ( _oaoEvents[sType][i-iCorrector].x == x && - _oaoEvents[sType][i-iCorrector].y == y && - _oaoEvents[sType][i-iCorrector].fn == fn ) - { - _oaoEvents[sType].splice( i-iCorrector, 1 ); - iCorrector++; - } - } - else - { - if ( _oaoEvents[sType][i-iCorrector].x == x && - _oaoEvents[sType][i-iCorrector].y == y ) - { - _oaoEvents[sType].splice( i, 1 ); - return 1; - } - } - } - return iCorrector; - } - - - /* - * Function: _fnEventFire - * Purpose: Look thought the events cache and fire off the event of interest - * Returns: int:iFired - number of events fired - * Inputs: string:sType - type of event to look for - * int:x - x coord of cell - * int:y - y coord of ell - * Notes: It might be more efficient to return after the first event has been tirggered, - * but that would mean that only one function of a particular type can be - * subscribed to a particular node. - */ - function _fnEventFire ( sType, x, y ) - { - var iFired = 0; - var aEvents = _oaoEvents[sType]; - for ( var i=0 ; i<aEvents.length ; i++ ) - { - if ( (aEvents[i].x == x && aEvents[i].y == y ) || - (aEvents[i].x === null && aEvents[i].y == y ) || - (aEvents[i].x == x && aEvents[i].y === null ) || - (aEvents[i].x === null && aEvents[i].y === null ) - ) - { - aEvents[i].fn( _fnCellFromCoords(x,y), x, y ); - iFired++; - } - } - return iFired; - } - - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Focus functions - */ - - /* - * Function: _fnSetFocus - * Purpose: Set focus on a node, and remove from an old node if needed - * Returns: - - * Inputs: node:nTarget - node we want to focus on - * bool:bAutoScroll - optional - should we scroll the view port to the display - */ - function _fnSetFocus( nTarget, bAutoScroll ) - { - /* If node already has focus, just ignore this call */ - if ( _nOldFocus == nTarget ) - { - return; - } - - if ( typeof bAutoScroll == 'undefined' ) - { - bAutoScroll = true; - } - - /* Remove old focus (with blur event if needed) */ - if ( _nOldFocus !== null ) - { - _fnRemoveFocus( _nOldFocus ); - } - - /* Add the new class to highlight the focused cell */ - $(nTarget).addClass( _sFocusClass ); - $(nTarget).parent().addClass( _sFocusClass ); - - /* If it's a DataTable then we need to jump the paging to the relevant page */ - var oSettings; - if ( _oDatatable ) - { - oSettings = _oDatatable; - var iRow = _fnFindDtCell( nTarget )[1]; - var bKeyCaptureCache = _bKeyCapture; - - /* Page forwards */ - while ( iRow >= oSettings.fnDisplayEnd() ) - { - if ( oSettings._iDisplayLength >= 0 ) - { - /* Make sure we are not over running the display array */ - if ( oSettings._iDisplayStart + oSettings._iDisplayLength < oSettings.fnRecordsDisplay() ) - { - oSettings._iDisplayStart += oSettings._iDisplayLength; - } - } - else - { - oSettings._iDisplayStart = 0; - } - _oDatatable.oApi._fnCalculateEnd( oSettings ); - } - - /* Page backwards */ - while ( iRow < oSettings._iDisplayStart ) - { - oSettings._iDisplayStart = oSettings._iDisplayLength>=0 ? - oSettings._iDisplayStart - oSettings._iDisplayLength : - 0; - - if ( oSettings._iDisplayStart < 0 ) - { - oSettings._iDisplayStart = 0; - } - _oDatatable.oApi._fnCalculateEnd( oSettings ); - } - - /* Re-draw the table */ - _oDatatable.oApi._fnDraw( oSettings ); - - /* Restore the key capture */ - _bKeyCapture = bKeyCaptureCache; - } - - /* Cache the information that we are interested in */ - var aNewPos = _fnCoordsFromCell( nTarget ); - _nOldFocus = nTarget; - _iOldX = aNewPos[0]; - _iOldY = aNewPos[1]; - - var iViewportHeight, iViewportWidth, iScrollTop, iScrollLeft, iHeight, iWidth, aiPos; - if ( bAutoScroll ) - { - /* Scroll the viewport such that the new cell is fully visible in the rendered window */ - iViewportHeight = $(window).height(); - iViewportWidth = $(window).width(); - iScrollTop = $(document).scrollTop(); - iScrollLeft = $(document).scrollLeft(); - iHeight = nTarget.offsetHeight; - iWidth = nTarget.offsetWidth; - aiPos = _fnGetPos( nTarget ); - - /* Take account of scrolling in DataTables 1.7 - remove scrolling since that would add to - * the positioning calculation - */ - if ( _oDatatable && typeof oSettings.oScroll != 'undefined' && - (oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "") ) - { - aiPos[1] -= $(oSettings.nTable.parentNode).scrollTop(); - aiPos[0] -= $(oSettings.nTable.parentNode).scrollLeft(); - } - - /* Correct viewport positioning for vertical scrolling */ - if ( aiPos[1]+iHeight > iScrollTop+iViewportHeight ) - { - /* Displayed element if off the bottom of the viewport */ - _fnSetScrollTop( aiPos[1]+iHeight - iViewportHeight ); - } - else if ( aiPos[1] < iScrollTop ) - { - /* Displayed element if off the top of the viewport */ - _fnSetScrollTop( aiPos[1] ); - } - - /* Correct viewport positioning for horizontal scrolling */ - if ( aiPos[0]+iWidth > iScrollLeft+iViewportWidth ) - { - /* Displayed element is off the bottom of the viewport */ - _fnSetScrollLeft( aiPos[0]+iWidth - iViewportWidth ); - } - else if ( aiPos[0] < iScrollLeft ) - { - /* Displayed element if off the Left of the viewport */ - _fnSetScrollLeft( aiPos[0] ); - } - } - - /* Take account of scrolling in DataTables 1.7 */ - if ( _oDatatable && typeof oSettings.oScroll != 'undefined' && - (oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "") ) - { - var dtScrollBody = oSettings.nTable.parentNode; - iViewportHeight = dtScrollBody.clientHeight; - iViewportWidth = dtScrollBody.clientWidth; - iScrollTop = dtScrollBody.scrollTop; - iScrollLeft = dtScrollBody.scrollLeft; - iHeight = nTarget.offsetHeight; - iWidth = nTarget.offsetWidth; - - /* Correct for vertical scrolling */ - if ( nTarget.offsetTop + iHeight > iViewportHeight+iScrollTop ) - { - dtScrollBody.scrollTop = (nTarget.offsetTop + iHeight) - iViewportHeight; - } - else if ( nTarget.offsetTop < iScrollTop ) - { - dtScrollBody.scrollTop = nTarget.offsetTop; - } - - /* Correct for horizontal scrolling */ - if ( nTarget.offsetLeft + iWidth > iViewportWidth+iScrollLeft ) - { - dtScrollBody.scrollLeft = (nTarget.offsetLeft + iWidth) - iViewportWidth; - } - else if ( nTarget.offsetLeft < iScrollLeft ) - { - dtScrollBody.scrollLeft = nTarget.offsetLeft; - } - } - - /* Focused - so we want to capture the keys */ - _fnCaptureKeys(); - - /* Fire of the focus event if there is one */ - _fnEventFire( "focus", _iOldX, _iOldY ); - } - - - /* - * Function: _fnBlur - * Purpose: Blur focus from the whole table - * Returns: - - * Inputs: - - */ - function _fnBlur() - { - _fnRemoveFocus( _nOldFocus ); - _iOldX = null; - _iOldY = null; - _nOldFocus = null; - _fnReleaseKeys(); - } - - - /* - * Function: _fnRemoveFocus - * Purpose: Remove focus from a cell and fire any blur events which are attached - * Returns: - - * Inputs: node:nTarget - cell of interest - */ - function _fnRemoveFocus( nTarget ) - { - $(nTarget).removeClass( _sFocusClass ); - $(nTarget).parent().removeClass( _sFocusClass ); - _fnEventFire( "blur", _iOldX, _iOldY ); - } - - - /* - * Function: _fnClick - * Purpose: Focus on the element that has been clicked on by the user - * Returns: - - * Inputs: event:e - click event - */ - function _fnClick ( e ) - { - var nTarget = this; - while ( nTarget.nodeName != "TD" ) - { - nTarget = nTarget.parentNode; - } - - _fnSetFocus( nTarget ); - _fnCaptureKeys(); - } - - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Key events - */ - - /* - * Function: _fnKey - * Purpose: Deal with a key events, be it moving the focus or return etc. - * Returns: bool: - allow browser default action - * Inputs: event:e - key event - */ - function _fnKey ( e ) - { - /* If user or system has blocked KeyTable from doing anything, just ignore this event */ - if ( _that.block || !_bKeyCapture ) - { - return true; - } - - /* If a modifier key is pressed (exapct shift), ignore the event */ - if ( e.metaKey || e.altKey || e.ctrlKey ) - { - return true; - } - var - x, y, - iTableWidth = _nBody.getElementsByTagName('tr')[0].getElementsByTagName('td').length, - iTableHeight; - - /* Get table height and width - done here so as to be dynamic (if table is updated) */ - if ( _oDatatable ) - { - /* - * Locate the current node in the DataTable overriding the old positions - the reason for - * is is that there might have been some DataTables interaction between the last focus and - * now - */ - iTableHeight = _oDatatable.aiDisplay.length; - - var aDtPos = _fnFindDtCell( _nOldFocus ); - if ( aDtPos === null ) - { - /* If the table has been updated such that the focused cell can't be seen - do nothing */ - return; - } - _iOldX = aDtPos[ 0 ]; - _iOldY = aDtPos[ 1 ]; - } - else - { - iTableHeight = _nBody.getElementsByTagName('tr').length; - } - - /* Capture shift+tab to match the left arrow key */ - var iKey = (e.keyCode == 9 && e.shiftKey) ? -1 : e.keyCode; - - switch( iKey ) - { - case 13: /* return */ - e.preventDefault(); - e.stopPropagation(); - _fnEventFire( "action", _iOldX, _iOldY ); - return true; - - case 27: /* esc */ - if ( !_fnEventFire( "esc", _iOldX, _iOldY ) ) - { - /* Only lose focus if there isn't an escape handler on the cell */ - _fnBlur(); - return; - } - x = _iOldX; - y = _iOldY; - break; - - case -1: - case 37: /* left arrow */ - if ( _iOldX > 0 ) { - x = _iOldX - 1; - y = _iOldY; - } else if ( _iOldY > 0 ) { - x = iTableWidth-1; - y = _iOldY - 1; - } else { - /* at start of table */ - if ( iKey == -1 && _bForm ) - { - /* If we are in a form, return focus to the 'input' element such that tabbing will - * follow correctly in the browser - */ - _bInputFocused = true; - _nInput.focus(); - - /* This timeout is a little nasty - but IE appears to have some asyhnc behaviour for - * focus - */ - setTimeout( function(){ _bInputFocused = false; }, 0 ); - _bKeyCapture = false; - _fnBlur(); - return true; - } - else - { - return false; - } - } - break; - - case 38: /* up arrow */ - if ( _iOldY > 0 ) { - x = _iOldX; - y = _iOldY - 1; - } else { - return false; - } - break; - - case 36: /* home */ - x = _iOldX; - y = 0; - break; - - case 33: /* page up */ - x = _iOldX; - y = _iOldY - 10; - if (y < 0) { - y = 0; - } - break; - - case 9: /* tab */ - case 39: /* right arrow */ - if ( _iOldX < iTableWidth-1 ) { - x = _iOldX + 1; - y = _iOldY; - } else if ( _iOldY < iTableHeight-1 ) { - x = 0; - y = _iOldY + 1; - } else { - /* at end of table */ - if ( iKey == 9 && _bForm ) - { - /* If we are in a form, return focus to the 'input' element such that tabbing will - * follow correctly in the browser - */ - _bInputFocused = true; - _nInput.focus(); - - /* This timeout is a little nasty - but IE appears to have some asyhnc behaviour for - * focus - */ - setTimeout( function(){ _bInputFocused = false; }, 0 ); - _bKeyCapture = false; - _fnBlur(); - return true; - } - else - { - return false; - } - } - break; - - case 40: /* down arrow */ - if ( _iOldY < iTableHeight-1 ) { - x = _iOldX; - y = _iOldY + 1; - } else { - return false; - } - break; - - case 35: /* end */ - x = _iOldX; - y = iTableHeight-1; - break; - - case 34: /* page down */ - x = _iOldX; - y = _iOldY+10; - if (y > iTableHeight-1) { - y = iTableHeight-1; - } - break; - - default: /* Nothing we are interested in */ - return true; - } - - _fnSetFocus( _fnCellFromCoords(x, y) ); - return false; - } - - - /* - * Function: _fnCaptureKeys - * Purpose: Start capturing key events for this table - * Returns: - - * Inputs: - - */ - function _fnCaptureKeys( ) - { - if ( !_bKeyCapture ) - { - _bKeyCapture = true; - } - } - - - /* - * Function: _fnReleaseKeys - * Purpose: Stop capturing key events for this table - * Returns: - - * Inputs: - - */ - function _fnReleaseKeys( ) - { - _bKeyCapture = false; - } - - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Support functions - */ - - /* - * Function: _fnCellFromCoords - * Purpose: Calulate the target TD cell from x and y coordinates - * Returns: node: - TD target - * Inputs: int:x - x coordinate - * int:y - y coordinate - */ - function _fnCellFromCoords( x, y ) - { - if ( _oDatatable ) - { - if ( typeof _oDatatable.aoData[ _oDatatable.aiDisplay[ y ] ] != 'undefined' ) - { - return _oDatatable.aoData[ _oDatatable.aiDisplay[ y ] ].nTr.getElementsByTagName('td')[x]; - } - else - { - return null; - } - } - else - { - return $('tr:eq('+y+')>td:eq('+x+')', _nBody )[0]; - } - } - - - /* - * Function: _fnCoordsFromCell - * Purpose: Calculate the x and y position in a table from a TD cell - * Returns: array[2] int: [x, y] - * Inputs: node:n - TD cell of interest - * Notes: Not actually interested in this for DataTables since it might go out of date - */ - function _fnCoordsFromCell( n ) - { - if ( _oDatatable ) - { - return [ - $('td', n.parentNode).index(n), - $('tr', n.parentNode.parentNode).index(n.parentNode) + _oDatatable._iDisplayStart - ]; - } - else - { - return [ - $('td', n.parentNode).index(n), - $('tr', n.parentNode.parentNode).index(n.parentNode) - ]; - } - } - - - /* - * Function: _fnSetScrollTop - * Purpose: Set the vertical scrolling position - * Returns: - - * Inputs: int:iPos - scrolltop - * Notes: This is so nasty, but without browser detection you can't tell which you should set - * So on browsers that support both, the scroll top will be set twice. I can live with - * that :-) - */ - function _fnSetScrollTop( iPos ) - { - document.documentElement.scrollTop = iPos; - document.body.scrollTop = iPos; - } - - - /* - * Function: _fnSetScrollLeft - * Purpose: Set the horizontal scrolling position - * Returns: - - * Inputs: int:iPos - scrollleft - */ - function _fnSetScrollLeft( iPos ) - { - document.documentElement.scrollLeft = iPos; - document.body.scrollLeft = iPos; - } - - - /* - * Function: _fnGetPos - * Purpose: Get the position of an object on the rendered page - * Returns: array[2] int: [left, right] - * Inputs: node:obj - element of interest - */ - function _fnGetPos ( obj ) - { - var iLeft = 0; - var iTop = 0; - - if (obj.offsetParent) - { - iLeft = obj.offsetLeft; - iTop = obj.offsetTop; - obj = obj.offsetParent; - while (obj) - { - iLeft += obj.offsetLeft; - iTop += obj.offsetTop; - obj = obj.offsetParent; - } - } - return [iLeft,iTop]; - } - - - /* - * Function: _fnFindDtCell - * Purpose: Get the coords. of a cell from the DataTables internal information - * Returns: array[2] int: [x, y] coords. or null if not found - * Inputs: node:nTarget - the node of interest - */ - function _fnFindDtCell( nTarget ) - { - for ( var i=0, iLen=_oDatatable.aiDisplay.length ; i<iLen ; i++ ) - { - var nTr = _oDatatable.aoData[ _oDatatable.aiDisplay[i] ].nTr; - var nTds = nTr.getElementsByTagName('td'); - for ( var j=0, jLen=nTds.length ; j<jLen ; j++ ) - { - if ( nTds[j] == nTarget ) - { - return [ j, i ]; - } - } - } - return null; - } - - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Initialisation - */ - - /* - * Function: _fnInit - * Purpose: Initialise the KeyTable - * Returns: - - * Inputs: object:oInit - optional - Initalisation object with the following parameters: - * array[2] int:focus - x and y coordinates of the initial target - * or - * node:focus - the node to set initial focus on - * node:table - the table to use, if not given, first table with class 'KeyTable' will be used - * string:focusClass - focusing class to give to table elements - * object:that - focus - * bool:initScroll - scroll the view port on load, default true - * int:tabIndex - the tab index to give the hidden input element - */ - function _fnInit( table, datatable, oInit, that ) - { - /* Save scope */ - _that = that; - - /* Capture undefined initialisation and apply the defaults */ - if ( typeof oInit == 'undefined' ) { - oInit = {}; - } - - if ( typeof oInit.focus == 'undefined' ) { - oInit.focus = [0,0]; - } - - oInit.table = table; - $(oInit.table).addClass('KeyTable'); - - if ( typeof oInit.focusClass != 'undefined' ) { - _sFocusClass = oInit.focusClass; - } - - if ( typeof datatable != 'undefined' ) { - _oDatatable = datatable; - } - - if ( typeof oInit.initScroll == 'undefined' ) { - oInit.initScroll = true; - } - - if ( typeof oInit.form == 'undefined' ) { - oInit.form = false; - } - _bForm = oInit.form; - - /* Cache the tbody node of interest */ - _nBody = oInit.table.getElementsByTagName('tbody')[0]; - - /* If the table is inside a form, then we need a hidden input box which can be used by the - * browser to catch the browser tabbing for our table - */ - if ( _bForm ) - { - var nDiv = document.createElement('div'); - _nInput = document.createElement('input'); - nDiv.style.height = "1px"; /* Opera requires a little something */ - nDiv.style.width = "0px"; - nDiv.style.overflow = "hidden"; - if ( typeof oInit.tabIndex != 'undefined' ) - { - _nInput.tabIndex = oInit.tabIndex; - } - nDiv.appendChild(_nInput); - oInit.table.parentNode.insertBefore( nDiv, oInit.table.nextSibling ); - - $(_nInput).focus( function () { - /* See if we want to 'tab into' the table or out */ - if ( !_bInputFocused ) - { - _bKeyCapture = true; - _bInputFocused = false; - if ( typeof oInit.focus.nodeName != "undefined" ) - { - _fnSetFocus( oInit.focus, oInit.initScroll ); - } - else - { - _fnSetFocus( _fnCellFromCoords( oInit.focus[0], oInit.focus[1]), oInit.initScroll ); - } - - /* Need to interup the thread for this to work */ - setTimeout( function() { _nInput.blur(); }, 0 ); - } - } ); - _bKeyCapture = false; - } - else - { - /* Set the initial focus on the table */ - if ( typeof oInit.focus.nodeName != "undefined" ) - { - _fnSetFocus( oInit.focus, oInit.initScroll ); - } - else - { - _fnSetFocus( _fnCellFromCoords( oInit.focus[0], oInit.focus[1]), oInit.initScroll ); - } - _fnCaptureKeys(); - } - - /* Add event listeners */ - $(document).bind( "keydown", _fnKey ); - - if ( _oDatatable ) - { - $(_oDatatable.nTable).on( 'click', 'td', _fnClick ); - } - else - { - $(_nBody).on( 'click', 'td', _fnClick ); - } - - /* Loose table focus when click outside the table */ - $(document).click( function(e) { - var nTarget = e.target; - var bTableClick = false; - while ( nTarget ) - { - if ( nTarget == oInit.table ) - { - bTableClick = true; - break; - } - nTarget = nTarget.parentNode; - } - if ( !bTableClick ) - { - _fnBlur(); - } - } ); - } - - var table, datatable; - - if ( oInit === undefined ) { - table = $('table.KeyTable')[0]; - datatable = null; - } - else if ( $.isPlainObject( oInit ) ) { - table = oInit.table; - datatable = oInit.datatable; - } - else { - datatable = new $.fn.dataTable.Api( oInit ).settings()[0]; - table = datatable.nTable; - } - /* Initialise our new object */ - _fnInit( table, datatable, oInit, this ); -}; - - -KeyTable.version = "1.2.1"; - - -$.fn.dataTable.KeyTable = KeyTable; -$.fn.DataTable.KeyTable = KeyTable; - - -return KeyTable; -}; // /factory - - -// Define as an AMD module if possible -if ( typeof define === 'function' && define.amd ) { - define( ['jquery', 'datatables'], factory ); -} -else if ( typeof exports === 'object' ) { - // Node/CommonJS - factory( require('jquery'), require('datatables') ); -} -else if ( jQuery && !jQuery.fn.dataTable.KeyTable ) { - // Otherwise simply initialise as normal, stopping multiple evaluation - factory( jQuery, jQuery.fn.dataTable ); -} - - -})(window, document); diff --git a/assets/plugins/datatables/extensions/KeyTable/js/dataTables.keyTable.min.js b/assets/plugins/datatables/extensions/KeyTable/js/dataTables.keyTable.min.js deleted file mode 100644 index f4c13d21..00000000 --- a/assets/plugins/datatables/extensions/KeyTable/js/dataTables.keyTable.min.js +++ /dev/null @@ -1,18 +0,0 @@ -/*! - KeyTable 1.2.1 - ©2010-2014 SpryMedia Ltd - datatables.net/license -*/ -var KeyTable; -(function(F,n,K){var A=function(d){KeyTable=function(j){function A(a){return function(e,c,p){(null===e||"number"==typeof e)&&(null===c||"number"==typeof c)&&"function"==typeof p?k[a].push({x:e,y:c,fn:p}):"object"==typeof e&&"function"==typeof c?(e=E(e),k[a].push({x:e[0],y:e[1],fn:c})):alert("Unhandable event type was added: x"+e+" y:"+c+" z:"+p)}}function L(a){return function(e,c,p){(null===e||"number"==typeof e)&&(null===c||"number"==typeof c)?"function"==typeof p?B(a,e,c,p):B(a,e,c):"object"== -typeof e?(e=E(e),"function"==typeof c?B(a,e[0],e[1],c):B(a,e[0],e[1])):alert("Unhandable event type was removed: x"+e+" y:"+c+" z:"+p)}}function B(a,e,c,p){for(var h=0,b=0,d=k[a].length;b<d-h;b++)if("undefined"!=typeof p)k[a][b-h].x==e&&(k[a][b-h].y==c&&k[a][b-h].fn==p)&&(k[a].splice(b-h,1),h++);else if(k[a][b-h].x==e&&k[a][b-h].y==c)return k[a].splice(b,1),1;return h}function C(a,e,c){for(var p=0,a=k[a],b=0;b<a.length;b++)if(a[b].x==e&&a[b].y==c||null===a[b].x&&a[b].y==c||a[b].x==e&&null===a[b].y|| -null===a[b].x&&null===a[b].y)a[b].fn(w(e,c),e,c),p++;return p}function q(a,e){if(t!=a){"undefined"==typeof e&&(e=!0);null!==t&&G(t);d(a).addClass(x);d(a).parent().addClass(x);var c;if(i){c=i;for(var b=H(a)[1],h=o;b>=c.fnDisplayEnd();)0<=c._iDisplayLength?c._iDisplayStart+c._iDisplayLength<c.fnRecordsDisplay()&&(c._iDisplayStart+=c._iDisplayLength):c._iDisplayStart=0,i.oApi._fnCalculateEnd(c);for(;b<c._iDisplayStart;)c._iDisplayStart=0<=c._iDisplayLength?c._iDisplayStart-c._iDisplayLength:0,0>c._iDisplayStart&& -(c._iDisplayStart=0),i.oApi._fnCalculateEnd(c);i.oApi._fnDraw(c);o=h}b=E(a);t=a;l=b[0];g=b[1];var r,j,k,m,f;if(e){r=d(F).height();b=d(F).width();j=d(n).scrollTop();h=d(n).scrollLeft();k=a.offsetHeight;m=a.offsetWidth;f=a;var q=0,s=0;if(f.offsetParent){q=f.offsetLeft;s=f.offsetTop;for(f=f.offsetParent;f;)q+=f.offsetLeft,s+=f.offsetTop,f=f.offsetParent}f=[q,s];if(i&&"undefined"!=typeof c.oScroll&&(""!==c.oScroll.sX||""!==c.oScroll.sY))f[1]-=d(c.nTable.parentNode).scrollTop(),f[0]-=d(c.nTable.parentNode).scrollLeft(); -f[1]+k>j+r?(r=f[1]+k-r,n.documentElement.scrollTop=r,n.body.scrollTop=r):f[1]<j&&(r=f[1],n.documentElement.scrollTop=r,n.body.scrollTop=r);f[0]+m>h+b?(b=f[0]+m-b,n.documentElement.scrollLeft=b,n.body.scrollLeft=b):f[0]<h&&(b=f[0],n.documentElement.scrollLeft=b,n.body.scrollLeft=b)}if(i&&"undefined"!=typeof c.oScroll&&(""!==c.oScroll.sX||""!==c.oScroll.sY))(c=c.nTable.parentNode,r=c.clientHeight,b=c.clientWidth,j=c.scrollTop,h=c.scrollLeft,k=a.offsetHeight,m=a.offsetWidth,a.offsetTop+k>r+j?c.scrollTop= -a.offsetTop+k-r:a.offsetTop<j&&(c.scrollTop=a.offsetTop),a.offsetLeft+m>b+h)?c.scrollLeft=a.offsetLeft+m-b:a.offsetLeft<h&&(c.scrollLeft=a.offsetLeft);o||(o=!0);C("focus",l,g)}}function y(){G(t);t=g=l=null;o=!1}function G(a){d(a).removeClass(x);d(a).parent().removeClass(x);C("blur",l,g)}function I(){for(var a=this;"TD"!=a.nodeName;)a=a.parentNode;q(a);o||(o=!0)}function w(a,b){return i?"undefined"!=typeof i.aoData[i.aiDisplay[b]]?i.aoData[i.aiDisplay[b]].nTr.getElementsByTagName("td")[a]:null:d("tr:eq("+ -b+")>td:eq("+a+")",z)[0]}function E(a){return i?[d("td",a.parentNode).index(a),d("tr",a.parentNode.parentNode).index(a.parentNode)+i._iDisplayStart]:[d("td",a.parentNode).index(a),d("tr",a.parentNode.parentNode).index(a.parentNode)]}function H(a){for(var b=0,c=i.aiDisplay.length;b<c;b++)for(var d=i.aoData[i.aiDisplay[b]].nTr.getElementsByTagName("td"),h=0,g=d.length;h<g;h++)if(d[h]==a)return[h,b];return null}this.block=!1;this.event={remove:{}};this.fnGetCurrentPosition=function(){return[l,g]};this.fnGetCurrentData= -function(){return t.innerHTML};this.fnGetCurrentTD=function(){return t};this.fnSetPosition=function(a,b){"object"==typeof a&&a.nodeName?q(a):q(w(a,b))};this.fnBlur=function(){y()};var z=null,t=null,l=null,g=null,J=null,x="focus",o=!1,k={action:[],esc:[],focus:[],blur:[]},i=null,D,s,u=!1,m;for(m in k)m&&(this.event[m]=A(m),this.event.remove[m]=L(m));var v;j===K?(m=d("table.KeyTable")[0],v=null):d.isPlainObject(j)?(m=j.table,v=j.datatable):(v=(new d.fn.dataTable.Api(j)).settings()[0],m=v.nTable);var b= -j,J=this;"undefined"==typeof b&&(b={});"undefined"==typeof b.focus&&(b.focus=[0,0]);b.table=m;d(b.table).addClass("KeyTable");"undefined"!=typeof b.focusClass&&(x=b.focusClass);"undefined"!=typeof v&&(i=v);"undefined"==typeof b.initScroll&&(b.initScroll=!0);"undefined"==typeof b.form&&(b.form=!1);D=b.form;z=b.table.getElementsByTagName("tbody")[0];D?(j=n.createElement("div"),s=n.createElement("input"),j.style.height="1px",j.style.width="0px",j.style.overflow="hidden","undefined"!=typeof b.tabIndex&& -(s.tabIndex=b.tabIndex),j.appendChild(s),b.table.parentNode.insertBefore(j,b.table.nextSibling),d(s).focus(function(){if(!u){o=true;u=false;typeof b.focus.nodeName!="undefined"?q(b.focus,b.initScroll):q(w(b.focus[0],b.focus[1]),b.initScroll);setTimeout(function(){s.blur()},0)}}),o=!1):("undefined"!=typeof b.focus.nodeName?q(b.focus,b.initScroll):q(w(b.focus[0],b.focus[1]),b.initScroll),o||(o=!0));d(n).bind("keydown",function(a){if(J.block||!o||a.metaKey||a.altKey||a.ctrlKey)return true;var b;b=z.getElementsByTagName("tr")[0].getElementsByTagName("td").length; -var c;if(i){c=i.aiDisplay.length;var d=H(t);if(d===null)return;l=d[0];g=d[1]}else c=z.getElementsByTagName("tr").length;d=a.keyCode==9&&a.shiftKey?-1:a.keyCode;switch(d){case 13:a.preventDefault();a.stopPropagation();C("action",l,g);return true;case 27:if(!C("esc",l,g)){y();return}a=l;b=g;break;case -1:case 37:if(l>0){a=l-1;b=g}else if(g>0){a=b-1;b=g-1}else{if(d==-1&&D){u=true;s.focus();setTimeout(function(){u=false},0);o=false;y();return true}return false}break;case 38:if(g>0){a=l;b=g-1}else return false; -break;case 36:a=l;b=0;break;case 33:a=l;b=g-10;b<0&&(b=0);break;case 9:case 39:if(l<b-1){a=l+1;b=g}else if(g<c-1){a=0;b=g+1}else{if(d==9&&D){u=true;s.focus();setTimeout(function(){u=false},0);o=false;y();return true}return false}break;case 40:if(g<c-1){a=l;b=g+1}else return false;break;case 35:a=l;b=c-1;break;case 34:a=l;b=g+10;b>c-1&&(b=c-1);break;default:return true}q(w(a,b));return false});if(i)d(i.nTable).on("click","td",I);else d(z).on("click","td",I);d(n).click(function(a){for(var a=a.target, -d=false;a;){if(a==b.table){d=true;break}a=a.parentNode}d||y()})};KeyTable.version="1.2.1";d.fn.dataTable.KeyTable=KeyTable;return d.fn.DataTable.KeyTable=KeyTable};"function"===typeof define&&define.amd?define(["jquery","datatables"],A):"object"===typeof exports?A(require("jquery"),require("datatables")):jQuery&&!jQuery.fn.dataTable.KeyTable&&A(jQuery,jQuery.fn.dataTable)})(window,document); diff --git a/assets/plugins/datatables/extensions/Responsive/License.txt b/assets/plugins/datatables/extensions/Responsive/License.txt deleted file mode 100644 index c0ee1c02..00000000 --- a/assets/plugins/datatables/extensions/Responsive/License.txt +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2014-2015 SpryMedia Limited -http://datatables.net - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/assets/plugins/datatables/extensions/Responsive/Readme.md b/assets/plugins/datatables/extensions/Responsive/Readme.md deleted file mode 100644 index e69de29b..00000000 diff --git a/assets/plugins/datatables/extensions/Responsive/css/dataTables.responsive.css b/assets/plugins/datatables/extensions/Responsive/css/dataTables.responsive.css deleted file mode 100644 index 1060f9c7..00000000 --- a/assets/plugins/datatables/extensions/Responsive/css/dataTables.responsive.css +++ /dev/null @@ -1,106 +0,0 @@ -table.dataTable.dtr-inline.collapsed > tbody > tr > td:first-child, -table.dataTable.dtr-inline.collapsed > tbody > tr > th:first-child { - position: relative; - padding-left: 30px; - cursor: pointer; -} -table.dataTable.dtr-inline.collapsed > tbody > tr > td:first-child:before, -table.dataTable.dtr-inline.collapsed > tbody > tr > th:first-child:before { - top: 8px; - left: 4px; - height: 16px; - width: 16px; - display: block; - position: absolute; - color: white; - border: 2px solid white; - border-radius: 16px; - text-align: center; - line-height: 14px; - box-shadow: 0 0 3px #444; - box-sizing: content-box; - content: '+'; - background-color: #31b131; -} -table.dataTable.dtr-inline.collapsed > tbody > tr > td:first-child.dataTables_empty:before, -table.dataTable.dtr-inline.collapsed > tbody > tr > th:first-child.dataTables_empty:before { - display: none; -} -table.dataTable.dtr-inline.collapsed > tbody > tr.parent > td:first-child:before, -table.dataTable.dtr-inline.collapsed > tbody > tr.parent > th:first-child:before { - content: '-'; - background-color: #d33333; -} -table.dataTable.dtr-inline.collapsed > tbody > tr.child td:before { - display: none; -} -table.dataTable.dtr-inline.collapsed.compact > tbody > tr > td:first-child, -table.dataTable.dtr-inline.collapsed.compact > tbody > tr > th:first-child { - padding-left: 27px; -} -table.dataTable.dtr-inline.collapsed.compact > tbody > tr > td:first-child:before, -table.dataTable.dtr-inline.collapsed.compact > tbody > tr > th:first-child:before { - top: 5px; - left: 4px; - height: 14px; - width: 14px; - border-radius: 14px; - line-height: 12px; -} -table.dataTable.dtr-column > tbody > tr > td.control, -table.dataTable.dtr-column > tbody > tr > th.control { - position: relative; - cursor: pointer; -} -table.dataTable.dtr-column > tbody > tr > td.control:before, -table.dataTable.dtr-column > tbody > tr > th.control:before { - top: 50%; - left: 50%; - height: 16px; - width: 16px; - margin-top: -10px; - margin-left: -10px; - display: block; - position: absolute; - color: white; - border: 2px solid white; - border-radius: 16px; - text-align: center; - line-height: 14px; - box-shadow: 0 0 3px #444; - box-sizing: content-box; - content: '+'; - background-color: #31b131; -} -table.dataTable.dtr-column > tbody > tr.parent td.control:before, -table.dataTable.dtr-column > tbody > tr.parent th.control:before { - content: '-'; - background-color: #d33333; -} -table.dataTable > tbody > tr.child { - padding: 0.5em 1em; -} -table.dataTable > tbody > tr.child:hover { - background: transparent !important; -} -table.dataTable > tbody > tr.child ul { - display: inline-block; - list-style-type: none; - margin: 0; - padding: 0; -} -table.dataTable > tbody > tr.child ul li { - border-bottom: 1px solid #efefef; - padding: 0.5em 0; -} -table.dataTable > tbody > tr.child ul li:first-child { - padding-top: 0; -} -table.dataTable > tbody > tr.child ul li:last-child { - border-bottom: none; -} -table.dataTable > tbody > tr.child span.dtr-title { - display: inline-block; - min-width: 75px; - font-weight: bold; -} diff --git a/assets/plugins/datatables/extensions/Responsive/css/dataTables.responsive.scss b/assets/plugins/datatables/extensions/Responsive/css/dataTables.responsive.scss deleted file mode 100644 index ed657ff7..00000000 --- a/assets/plugins/datatables/extensions/Responsive/css/dataTables.responsive.scss +++ /dev/null @@ -1,149 +0,0 @@ - -// -// Mixins -// -@mixin control() { - display: block; - position: absolute; - color: white; - border: 2px solid white; - border-radius: 16px; - text-align: center; - line-height: 14px; - box-shadow: 0 0 3px #444; - box-sizing: content-box; -} - -@mixin control-open() { - content: '+'; - background-color: #31b131; -} - -@mixin control-close() { - content: '-'; - background-color: #d33333; -} - - -// -// Table styles -// -table.dataTable { - // Styling for the `inline` type - &.dtr-inline.collapsed > tbody { - > tr > td:first-child, - > tr > th:first-child { - position: relative; - padding-left: 30px; - cursor: pointer; - - &:before { - top: 8px; - left: 4px; - height: 16px; - width: 16px; - @include control; - @include control-open; - } - - &.dataTables_empty:before { - display: none; - } - } - - > tr.parent { - > td:first-child:before, - > th:first-child:before { - @include control-close; - } - } - - > tr.child td:before { - display: none; - } - } - - // DataTables' `compact` styling - &.dtr-inline.collapsed.compact > tbody { - > tr > td:first-child, - > tr > th:first-child { - padding-left: 27px; - - &:before { - top: 5px; - left: 4px; - height: 14px; - width: 14px; - border-radius: 14px; - line-height: 12px; - } - } - } - - - // Styling for the `column` type - &.dtr-column > tbody { - > tr > td.control, - > tr > th.control { - position: relative; - cursor: pointer; - - &:before { - top: 50%; - left: 50%; - height: 16px; - width: 16px; - margin-top: -10px; - margin-left: -10px; - @include control; - @include control-open; - } - } - - > tr.parent { - td.control:before, - th.control:before { - @include control-close; - } - } - } - - - // Child row styling - > tbody > tr.child { - padding: 0.5em 1em; - - &:hover { - background: transparent !important; - } - - ul { - display: inline-block; - list-style-type: none; - margin: 0; - padding: 0; - - li { - border-bottom: 1px solid #efefef; - padding: 0.5em 0; - - &:first-child { - padding-top: 0; - } - - &:last-child { - border-bottom: none; - } - } - } - - span.dtr-title { - display: inline-block; - min-width: 75px; - font-weight: bold; - } - - span.dtr-data {} - } -} - diff --git a/assets/plugins/datatables/extensions/Responsive/examples/child-rows/column-control.html b/assets/plugins/datatables/extensions/Responsive/examples/child-rows/column-control.html deleted file mode 100644 index 66f213b2..00000000 --- a/assets/plugins/datatables/extensions/Responsive/examples/child-rows/column-control.html +++ /dev/null @@ -1,854 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>Responsive example - Column controlled child rows</title> - <link rel="stylesheet" type="text/css" href="../../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../../css/dataTables.responsive.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../../js/dataTables.responsive.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - - -$(document).ready(function() { - $('#example').DataTable( { - responsive: { - details: { - type: 'column' - } - }, - columnDefs: [ { - className: 'control', - orderable: false, - targets: 0 - } ], - order: [ 1, 'asc' ] - } ); -} ); - - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>Responsive example <span>Column controlled child rows</span></h1> - - <div class="info"> - <p>Responsive has two built in methods for displaying the controlling element of the child rows; <code>inline</code> which is the default option and shows the - control in the first column, and <code>column</code> which set a <em>control column</em> as the control. The control column is shown only when there is some other - column hidden, and is dedicated only to the show / hide control for the rows.</p> - - <p>This example shows the <a href="//datatables.net/extensions/responsive/reference/option/responsive.details.type"><code class="option" title= - "Responsive initialisation option">responsive.details.type<span>R</span></code></a> option set to <code>column</code> to activate the control column. Note that by - default the first column is used as the control, so additionally in the initialisation the <a href="//datatables.net/reference/option/order"><code class="option" - title="DataTables initialisation option">order<span>DT</span></code></a> and <a href="//datatables.net/reference/option/columns.orderable"><code class="option" - title="DataTables initialisation option">columns.orderable<span>DT</span></code></a> options are used to disable sorting on this column.</p> - </div> - - <table id="example" class="display nowrap" cellspacing="0" width="100%"> - <thead> - <tr> - <th></th> - <th>First name</th> - <th>Last name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - <th>Extn.</th> - </tr> - </thead> - - <tfoot> - <tr> - <th></th> - <th>First name</th> - <th>Last name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - <th>Extn.</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td></td> - <td>Tiger</td> - <td>Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - <td>5421</td> - </tr> - <tr> - <td></td> - <td>Garrett</td> - <td>Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - <td>8422</td> - </tr> - <tr> - <td></td> - <td>Ashton</td> - <td>Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - <td>1562</td> - </tr> - <tr> - <td></td> - <td>Cedric</td> - <td>Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - <td>6224</td> - </tr> - <tr> - <td></td> - <td>Airi</td> - <td>Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - <td>5407</td> - </tr> - <tr> - <td></td> - <td>Brielle</td> - <td>Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - <td>4804</td> - </tr> - <tr> - <td></td> - <td>Herrod</td> - <td>Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - <td>9608</td> - </tr> - <tr> - <td></td> - <td>Rhona</td> - <td>Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - <td>6200</td> - </tr> - <tr> - <td></td> - <td>Colleen</td> - <td>Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - <td>2360</td> - </tr> - <tr> - <td></td> - <td>Sonya</td> - <td>Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - <td>1667</td> - </tr> - <tr> - <td></td> - <td>Jena</td> - <td>Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - <td>3814</td> - </tr> - <tr> - <td></td> - <td>Quinn</td> - <td>Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - <td>9497</td> - </tr> - <tr> - <td></td> - <td>Charde</td> - <td>Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - <td>6741</td> - </tr> - <tr> - <td></td> - <td>Haley</td> - <td>Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - <td>3597</td> - </tr> - <tr> - <td></td> - <td>Tatyana</td> - <td>Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - <td>1965</td> - </tr> - <tr> - <td></td> - <td>Michael</td> - <td>Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - <td>1581</td> - </tr> - <tr> - <td></td> - <td>Paul</td> - <td>Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - <td>3059</td> - </tr> - <tr> - <td></td> - <td>Gloria</td> - <td>Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - <td>1721</td> - </tr> - <tr> - <td></td> - <td>Bradley</td> - <td>Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - <td>2558</td> - </tr> - <tr> - <td></td> - <td>Dai</td> - <td>Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - <td>2290</td> - </tr> - <tr> - <td></td> - <td>Jenette</td> - <td>Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - <td>1937</td> - </tr> - <tr> - <td></td> - <td>Yuri</td> - <td>Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - <td>6154</td> - </tr> - <tr> - <td></td> - <td>Caesar</td> - <td>Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - <td>8330</td> - </tr> - <tr> - <td></td> - <td>Doris</td> - <td>Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - <td>3023</td> - </tr> - <tr> - <td></td> - <td>Angelica</td> - <td>Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - <td>5797</td> - </tr> - <tr> - <td></td> - <td>Gavin</td> - <td>Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - <td>8822</td> - </tr> - <tr> - <td></td> - <td>Jennifer</td> - <td>Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - <td>9239</td> - </tr> - <tr> - <td></td> - <td>Brenden</td> - <td>Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - <td>1314</td> - </tr> - <tr> - <td></td> - <td>Fiona</td> - <td>Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - <td>2947</td> - </tr> - <tr> - <td></td> - <td>Shou</td> - <td>Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - <td>8899</td> - </tr> - <tr> - <td></td> - <td>Michelle</td> - <td>House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - <td>2769</td> - </tr> - <tr> - <td></td> - <td>Suki</td> - <td>Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - <td>6832</td> - </tr> - <tr> - <td></td> - <td>Prescott</td> - <td>Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - <td>3606</td> - </tr> - <tr> - <td></td> - <td>Gavin</td> - <td>Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - <td>2860</td> - </tr> - <tr> - <td></td> - <td>Martena</td> - <td>Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - <td>8240</td> - </tr> - <tr> - <td></td> - <td>Unity</td> - <td>Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - <td>5384</td> - </tr> - <tr> - <td></td> - <td>Howard</td> - <td>Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - <td>7031</td> - </tr> - <tr> - <td></td> - <td>Hope</td> - <td>Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - <td>6318</td> - </tr> - <tr> - <td></td> - <td>Vivian</td> - <td>Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - <td>9422</td> - </tr> - <tr> - <td></td> - <td>Timothy</td> - <td>Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - <td>7580</td> - </tr> - <tr> - <td></td> - <td>Jackson</td> - <td>Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - <td>1042</td> - </tr> - <tr> - <td></td> - <td>Olivia</td> - <td>Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - <td>2120</td> - </tr> - <tr> - <td></td> - <td>Bruno</td> - <td>Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - <td>6222</td> - </tr> - <tr> - <td></td> - <td>Sakura</td> - <td>Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - <td>9383</td> - </tr> - <tr> - <td></td> - <td>Thor</td> - <td>Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - <td>8327</td> - </tr> - <tr> - <td></td> - <td>Finn</td> - <td>Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - <td>2927</td> - </tr> - <tr> - <td></td> - <td>Serge</td> - <td>Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - <td>8352</td> - </tr> - <tr> - <td></td> - <td>Zenaida</td> - <td>Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - <td>7439</td> - </tr> - <tr> - <td></td> - <td>Zorita</td> - <td>Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - <td>4389</td> - </tr> - <tr> - <td></td> - <td>Jennifer</td> - <td>Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - <td>3431</td> - </tr> - <tr> - <td></td> - <td>Cara</td> - <td>Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - <td>3990</td> - </tr> - <tr> - <td></td> - <td>Hermione</td> - <td>Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - <td>1016</td> - </tr> - <tr> - <td></td> - <td>Lael</td> - <td>Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - <td>6733</td> - </tr> - <tr> - <td></td> - <td>Jonas</td> - <td>Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - <td>8196</td> - </tr> - <tr> - <td></td> - <td>Shad</td> - <td>Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - <td>6373</td> - </tr> - <tr> - <td></td> - <td>Michael</td> - <td>Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - <td>5384</td> - </tr> - <tr> - <td></td> - <td>Donna</td> - <td>Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - <td>4226</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').DataTable( { - responsive: { - details: { - type: 'column' - } - }, - columnDefs: [ { - className: 'control', - orderable: false, - targets: 0 - } ], - order: [ 1, 'asc' ] - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../../media/js/jquery.js">../../../../media/js/jquery.js</a></li> - <li><a href="../../../../media/js/jquery.dataTables.js">../../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../../js/dataTables.responsive.js">../../js/dataTables.responsive.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../../media/css/jquery.dataTables.css">../../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../../css/dataTables.responsive.css">../../css/dataTables.responsive.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="../initialisation/index.html">Basic initialisation</a></h3> - <ul class="toc"> - <li><a href="../initialisation/className.html">Class name</a></li> - <li><a href="../initialisation/option.html">Configuration option</a></li> - <li><a href="../initialisation/new.html">`new` constructor</a></li> - <li><a href="../initialisation/ajax.html">Ajax data</a></li> - <li><a href="../initialisation/default.html">Default initialisation</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../styling/index.html">Styling</a></h3> - <ul class="toc"> - <li><a href="../styling/bootstrap.html">Bootstrap styling</a></li> - <li><a href="../styling/foundation.html">Foundation styling</a></li> - <li><a href="../styling/scrolling.html">Vertical scrolling</a></li> - <li><a href="../styling/compact.html">Compact styling</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../display-control/index.html">Display control</a></h3> - <ul class="toc"> - <li><a href="../display-control/auto.html">Automatic column hiding</a></li> - <li><a href="../display-control/classes.html">Class control</a></li> - <li><a href="../display-control/init-classes.html">Assigned class control</a></li> - <li><a href="../display-control/fixedHeader.html">With FixedHeader</a></li> - <li><a href="../display-control/complexHeader.html">Complex headers (rowspan / colspan)</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="./index.html">Child rows</a></h3> - <ul class="toc active"> - <li><a href="./disable-child-rows.html">Disable child rows</a></li> - <li class="active"><a href="./column-control.html">Column controlled child rows</a></li> - <li><a href="./right-column.html">Column control - right</a></li> - <li><a href="./whole-row-control.html">Whole row child row control</a></li> - <li><a href="./custom-renderer.html">Custom child row renderer</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/Responsive/examples/child-rows/custom-renderer.html b/assets/plugins/datatables/extensions/Responsive/examples/child-rows/custom-renderer.html deleted file mode 100644 index cbf8b8bf..00000000 --- a/assets/plugins/datatables/extensions/Responsive/examples/child-rows/custom-renderer.html +++ /dev/null @@ -1,863 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>Responsive example - Custom child row renderer</title> - <link rel="stylesheet" type="text/css" href="../../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../../css/dataTables.responsive.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../../js/dataTables.responsive.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - - -$(document).ready(function() { - $('#example').DataTable( { - responsive: { - details: { - renderer: function ( api, rowIdx ) { - // Select hidden columns for the given row - var data = api.cells( rowIdx, ':hidden' ).eq(0).map( function ( cell ) { - var header = $( api.column( cell.column ).header() ); - - return '<tr>'+ - '<td>'+ - header.text()+':'+ - '</td> '+ - '<td>'+ - api.cell( cell ).data()+ - '</td>'+ - '</tr>'; - } ).toArray().join(''); - - return data ? - $('<table/>').append( data ) : - false; - } - } - } - } ); -} ); - - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>Responsive example <span>Custom child row renderer</span></h1> - - <div class="info"> - <p>The child row's for a collapsed table in Responsive, by default, show a <code class="tag" title="HTML tag">ul/li</code> list of the data from the hidden - columns. The <a href="//datatables.net/extensions/responsive/reference/option/responsive.details.renderer"><code class="option" title= - "Responsive initialisation option">responsive.details.renderer<span>R</span></code></a> option provide the ability to create your own custom renderer. It is given - two parameters: the DataTables API instance for the table and the row index to use.</p> - - <p>This example shows the <a href="//datatables.net/reference/api/cells()"><code class="api" title="DataTables API method">cells()<span>DT</span></code></a> method - being used to select the hidden columns and constructing a table of the data. You could refine the selector to select only certain columns, or show all columns, - etc.</p> - </div> - - <table id="example" class="display nowrap" cellspacing="0" width="100%"> - <thead> - <tr> - <th>First name</th> - <th>Last name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - <th>Extn.</th> - <th>E-mail</th> - </tr> - </thead> - - <tbody> - <tr> - <td>Tiger</td> - <td>Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - <td>5421</td> - <td>t.nixon@datatables.net</td> - </tr> - <tr> - <td>Garrett</td> - <td>Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - <td>8422</td> - <td>g.winters@datatables.net</td> - </tr> - <tr> - <td>Ashton</td> - <td>Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - <td>1562</td> - <td>a.cox@datatables.net</td> - </tr> - <tr> - <td>Cedric</td> - <td>Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - <td>6224</td> - <td>c.kelly@datatables.net</td> - </tr> - <tr> - <td>Airi</td> - <td>Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - <td>5407</td> - <td>a.satou@datatables.net</td> - </tr> - <tr> - <td>Brielle</td> - <td>Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - <td>4804</td> - <td>b.williamson@datatables.net</td> - </tr> - <tr> - <td>Herrod</td> - <td>Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - <td>9608</td> - <td>h.chandler@datatables.net</td> - </tr> - <tr> - <td>Rhona</td> - <td>Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - <td>6200</td> - <td>r.davidson@datatables.net</td> - </tr> - <tr> - <td>Colleen</td> - <td>Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - <td>2360</td> - <td>c.hurst@datatables.net</td> - </tr> - <tr> - <td>Sonya</td> - <td>Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - <td>1667</td> - <td>s.frost@datatables.net</td> - </tr> - <tr> - <td>Jena</td> - <td>Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - <td>3814</td> - <td>j.gaines@datatables.net</td> - </tr> - <tr> - <td>Quinn</td> - <td>Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - <td>9497</td> - <td>q.flynn@datatables.net</td> - </tr> - <tr> - <td>Charde</td> - <td>Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - <td>6741</td> - <td>c.marshall@datatables.net</td> - </tr> - <tr> - <td>Haley</td> - <td>Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - <td>3597</td> - <td>h.kennedy@datatables.net</td> - </tr> - <tr> - <td>Tatyana</td> - <td>Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - <td>1965</td> - <td>t.fitzpatrick@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - <td>1581</td> - <td>m.silva@datatables.net</td> - </tr> - <tr> - <td>Paul</td> - <td>Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - <td>3059</td> - <td>p.byrd@datatables.net</td> - </tr> - <tr> - <td>Gloria</td> - <td>Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - <td>1721</td> - <td>g.little@datatables.net</td> - </tr> - <tr> - <td>Bradley</td> - <td>Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - <td>2558</td> - <td>b.greer@datatables.net</td> - </tr> - <tr> - <td>Dai</td> - <td>Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - <td>2290</td> - <td>d.rios@datatables.net</td> - </tr> - <tr> - <td>Jenette</td> - <td>Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - <td>1937</td> - <td>j.caldwell@datatables.net</td> - </tr> - <tr> - <td>Yuri</td> - <td>Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - <td>6154</td> - <td>y.berry@datatables.net</td> - </tr> - <tr> - <td>Caesar</td> - <td>Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - <td>8330</td> - <td>c.vance@datatables.net</td> - </tr> - <tr> - <td>Doris</td> - <td>Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - <td>3023</td> - <td>d.wilder@datatables.net</td> - </tr> - <tr> - <td>Angelica</td> - <td>Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - <td>5797</td> - <td>a.ramos@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - <td>8822</td> - <td>g.joyce@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - <td>9239</td> - <td>j.chang@datatables.net</td> - </tr> - <tr> - <td>Brenden</td> - <td>Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - <td>1314</td> - <td>b.wagner@datatables.net</td> - </tr> - <tr> - <td>Fiona</td> - <td>Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - <td>2947</td> - <td>f.green@datatables.net</td> - </tr> - <tr> - <td>Shou</td> - <td>Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - <td>8899</td> - <td>s.itou@datatables.net</td> - </tr> - <tr> - <td>Michelle</td> - <td>House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - <td>2769</td> - <td>m.house@datatables.net</td> - </tr> - <tr> - <td>Suki</td> - <td>Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - <td>6832</td> - <td>s.burks@datatables.net</td> - </tr> - <tr> - <td>Prescott</td> - <td>Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - <td>3606</td> - <td>p.bartlett@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - <td>2860</td> - <td>g.cortez@datatables.net</td> - </tr> - <tr> - <td>Martena</td> - <td>Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - <td>8240</td> - <td>m.mccray@datatables.net</td> - </tr> - <tr> - <td>Unity</td> - <td>Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - <td>5384</td> - <td>u.butler@datatables.net</td> - </tr> - <tr> - <td>Howard</td> - <td>Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - <td>7031</td> - <td>h.hatfield@datatables.net</td> - </tr> - <tr> - <td>Hope</td> - <td>Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - <td>6318</td> - <td>h.fuentes@datatables.net</td> - </tr> - <tr> - <td>Vivian</td> - <td>Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - <td>9422</td> - <td>v.harrell@datatables.net</td> - </tr> - <tr> - <td>Timothy</td> - <td>Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - <td>7580</td> - <td>t.mooney@datatables.net</td> - </tr> - <tr> - <td>Jackson</td> - <td>Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - <td>1042</td> - <td>j.bradshaw@datatables.net</td> - </tr> - <tr> - <td>Olivia</td> - <td>Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - <td>2120</td> - <td>o.liang@datatables.net</td> - </tr> - <tr> - <td>Bruno</td> - <td>Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - <td>6222</td> - <td>b.nash@datatables.net</td> - </tr> - <tr> - <td>Sakura</td> - <td>Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - <td>9383</td> - <td>s.yamamoto@datatables.net</td> - </tr> - <tr> - <td>Thor</td> - <td>Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - <td>8327</td> - <td>t.walton@datatables.net</td> - </tr> - <tr> - <td>Finn</td> - <td>Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - <td>2927</td> - <td>f.camacho@datatables.net</td> - </tr> - <tr> - <td>Serge</td> - <td>Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - <td>8352</td> - <td>s.baldwin@datatables.net</td> - </tr> - <tr> - <td>Zenaida</td> - <td>Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - <td>7439</td> - <td>z.frank@datatables.net</td> - </tr> - <tr> - <td>Zorita</td> - <td>Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - <td>4389</td> - <td>z.serrano@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - <td>3431</td> - <td>j.acosta@datatables.net</td> - </tr> - <tr> - <td>Cara</td> - <td>Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - <td>3990</td> - <td>c.stevens@datatables.net</td> - </tr> - <tr> - <td>Hermione</td> - <td>Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - <td>1016</td> - <td>h.butler@datatables.net</td> - </tr> - <tr> - <td>Lael</td> - <td>Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - <td>6733</td> - <td>l.greer@datatables.net</td> - </tr> - <tr> - <td>Jonas</td> - <td>Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - <td>8196</td> - <td>j.alexander@datatables.net</td> - </tr> - <tr> - <td>Shad</td> - <td>Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - <td>6373</td> - <td>s.decker@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - <td>5384</td> - <td>m.bruce@datatables.net</td> - </tr> - <tr> - <td>Donna</td> - <td>Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - <td>4226</td> - <td>d.snider@datatables.net</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').DataTable( { - responsive: { - details: { - renderer: function ( api, rowIdx ) { - // Select hidden columns for the given row - var data = api.cells( rowIdx, ':hidden' ).eq(0).map( function ( cell ) { - var header = $( api.column( cell.column ).header() ); - - return '&lt;tr&gt;'+ - '&lt;td&gt;'+ - header.text()+':'+ - '&lt;/td&gt; '+ - '&lt;td&gt;'+ - api.cell( cell ).data()+ - '&lt;/td&gt;'+ - '&lt;/tr&gt;'; - } ).toArray().join(''); - - return data ? - $('&lt;table/&gt;').append( data ) : - false; - } - } - } - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../../media/js/jquery.js">../../../../media/js/jquery.js</a></li> - <li><a href="../../../../media/js/jquery.dataTables.js">../../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../../js/dataTables.responsive.js">../../js/dataTables.responsive.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../../media/css/jquery.dataTables.css">../../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../../css/dataTables.responsive.css">../../css/dataTables.responsive.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="../initialisation/index.html">Basic initialisation</a></h3> - <ul class="toc"> - <li><a href="../initialisation/className.html">Class name</a></li> - <li><a href="../initialisation/option.html">Configuration option</a></li> - <li><a href="../initialisation/new.html">`new` constructor</a></li> - <li><a href="../initialisation/ajax.html">Ajax data</a></li> - <li><a href="../initialisation/default.html">Default initialisation</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../styling/index.html">Styling</a></h3> - <ul class="toc"> - <li><a href="../styling/bootstrap.html">Bootstrap styling</a></li> - <li><a href="../styling/foundation.html">Foundation styling</a></li> - <li><a href="../styling/scrolling.html">Vertical scrolling</a></li> - <li><a href="../styling/compact.html">Compact styling</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../display-control/index.html">Display control</a></h3> - <ul class="toc"> - <li><a href="../display-control/auto.html">Automatic column hiding</a></li> - <li><a href="../display-control/classes.html">Class control</a></li> - <li><a href="../display-control/init-classes.html">Assigned class control</a></li> - <li><a href="../display-control/fixedHeader.html">With FixedHeader</a></li> - <li><a href="../display-control/complexHeader.html">Complex headers (rowspan / colspan)</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="./index.html">Child rows</a></h3> - <ul class="toc active"> - <li><a href="./disable-child-rows.html">Disable child rows</a></li> - <li><a href="./column-control.html">Column controlled child rows</a></li> - <li><a href="./right-column.html">Column control - right</a></li> - <li><a href="./whole-row-control.html">Whole row child row control</a></li> - <li class="active"><a href="./custom-renderer.html">Custom child row renderer</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/Responsive/examples/child-rows/disable-child-rows.html b/assets/plugins/datatables/extensions/Responsive/examples/child-rows/disable-child-rows.html deleted file mode 100644 index 482e77a3..00000000 --- a/assets/plugins/datatables/extensions/Responsive/examples/child-rows/disable-child-rows.html +++ /dev/null @@ -1,819 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>Responsive example - Disable child rows</title> - <link rel="stylesheet" type="text/css" href="../../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../../css/dataTables.responsive.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../../js/dataTables.responsive.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - - -$(document).ready(function() { - $('#example').DataTable( { - responsive: { - details: false - } - } ); -} ); - - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>Responsive example <span>Disable child rows</span></h1> - - <div class="info"> - <p>By default, when Responsive collapses a table, it will show an option for the end user to expand the row, showing the details of the hidden columns in a child - row. This can be disabled using the <a href="//datatables.net/extensions/responsive/reference/option/responsive.details"><code class="option" title= - "Responsive initialisation option">responsive.details<span>R</span></code></a> option and setting it to <code>false</code>, as shown in the example below. In this - case the hidden data is not directly accessible to the end user.</p> - </div> - - <table id="example" class="display nowrap" cellspacing="0" width="100%"> - <thead> - <tr> - <th>First name</th> - <th>Last name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - <th>Extn.</th> - <th>E-mail</th> - </tr> - </thead> - - <tbody> - <tr> - <td>Tiger</td> - <td>Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - <td>5421</td> - <td>t.nixon@datatables.net</td> - </tr> - <tr> - <td>Garrett</td> - <td>Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - <td>8422</td> - <td>g.winters@datatables.net</td> - </tr> - <tr> - <td>Ashton</td> - <td>Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - <td>1562</td> - <td>a.cox@datatables.net</td> - </tr> - <tr> - <td>Cedric</td> - <td>Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - <td>6224</td> - <td>c.kelly@datatables.net</td> - </tr> - <tr> - <td>Airi</td> - <td>Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - <td>5407</td> - <td>a.satou@datatables.net</td> - </tr> - <tr> - <td>Brielle</td> - <td>Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - <td>4804</td> - <td>b.williamson@datatables.net</td> - </tr> - <tr> - <td>Herrod</td> - <td>Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - <td>9608</td> - <td>h.chandler@datatables.net</td> - </tr> - <tr> - <td>Rhona</td> - <td>Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - <td>6200</td> - <td>r.davidson@datatables.net</td> - </tr> - <tr> - <td>Colleen</td> - <td>Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - <td>2360</td> - <td>c.hurst@datatables.net</td> - </tr> - <tr> - <td>Sonya</td> - <td>Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - <td>1667</td> - <td>s.frost@datatables.net</td> - </tr> - <tr> - <td>Jena</td> - <td>Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - <td>3814</td> - <td>j.gaines@datatables.net</td> - </tr> - <tr> - <td>Quinn</td> - <td>Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - <td>9497</td> - <td>q.flynn@datatables.net</td> - </tr> - <tr> - <td>Charde</td> - <td>Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - <td>6741</td> - <td>c.marshall@datatables.net</td> - </tr> - <tr> - <td>Haley</td> - <td>Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - <td>3597</td> - <td>h.kennedy@datatables.net</td> - </tr> - <tr> - <td>Tatyana</td> - <td>Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - <td>1965</td> - <td>t.fitzpatrick@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - <td>1581</td> - <td>m.silva@datatables.net</td> - </tr> - <tr> - <td>Paul</td> - <td>Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - <td>3059</td> - <td>p.byrd@datatables.net</td> - </tr> - <tr> - <td>Gloria</td> - <td>Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - <td>1721</td> - <td>g.little@datatables.net</td> - </tr> - <tr> - <td>Bradley</td> - <td>Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - <td>2558</td> - <td>b.greer@datatables.net</td> - </tr> - <tr> - <td>Dai</td> - <td>Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - <td>2290</td> - <td>d.rios@datatables.net</td> - </tr> - <tr> - <td>Jenette</td> - <td>Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - <td>1937</td> - <td>j.caldwell@datatables.net</td> - </tr> - <tr> - <td>Yuri</td> - <td>Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - <td>6154</td> - <td>y.berry@datatables.net</td> - </tr> - <tr> - <td>Caesar</td> - <td>Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - <td>8330</td> - <td>c.vance@datatables.net</td> - </tr> - <tr> - <td>Doris</td> - <td>Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - <td>3023</td> - <td>d.wilder@datatables.net</td> - </tr> - <tr> - <td>Angelica</td> - <td>Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - <td>5797</td> - <td>a.ramos@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - <td>8822</td> - <td>g.joyce@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - <td>9239</td> - <td>j.chang@datatables.net</td> - </tr> - <tr> - <td>Brenden</td> - <td>Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - <td>1314</td> - <td>b.wagner@datatables.net</td> - </tr> - <tr> - <td>Fiona</td> - <td>Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - <td>2947</td> - <td>f.green@datatables.net</td> - </tr> - <tr> - <td>Shou</td> - <td>Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - <td>8899</td> - <td>s.itou@datatables.net</td> - </tr> - <tr> - <td>Michelle</td> - <td>House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - <td>2769</td> - <td>m.house@datatables.net</td> - </tr> - <tr> - <td>Suki</td> - <td>Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - <td>6832</td> - <td>s.burks@datatables.net</td> - </tr> - <tr> - <td>Prescott</td> - <td>Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - <td>3606</td> - <td>p.bartlett@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - <td>2860</td> - <td>g.cortez@datatables.net</td> - </tr> - <tr> - <td>Martena</td> - <td>Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - <td>8240</td> - <td>m.mccray@datatables.net</td> - </tr> - <tr> - <td>Unity</td> - <td>Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - <td>5384</td> - <td>u.butler@datatables.net</td> - </tr> - <tr> - <td>Howard</td> - <td>Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - <td>7031</td> - <td>h.hatfield@datatables.net</td> - </tr> - <tr> - <td>Hope</td> - <td>Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - <td>6318</td> - <td>h.fuentes@datatables.net</td> - </tr> - <tr> - <td>Vivian</td> - <td>Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - <td>9422</td> - <td>v.harrell@datatables.net</td> - </tr> - <tr> - <td>Timothy</td> - <td>Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - <td>7580</td> - <td>t.mooney@datatables.net</td> - </tr> - <tr> - <td>Jackson</td> - <td>Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - <td>1042</td> - <td>j.bradshaw@datatables.net</td> - </tr> - <tr> - <td>Olivia</td> - <td>Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - <td>2120</td> - <td>o.liang@datatables.net</td> - </tr> - <tr> - <td>Bruno</td> - <td>Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - <td>6222</td> - <td>b.nash@datatables.net</td> - </tr> - <tr> - <td>Sakura</td> - <td>Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - <td>9383</td> - <td>s.yamamoto@datatables.net</td> - </tr> - <tr> - <td>Thor</td> - <td>Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - <td>8327</td> - <td>t.walton@datatables.net</td> - </tr> - <tr> - <td>Finn</td> - <td>Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - <td>2927</td> - <td>f.camacho@datatables.net</td> - </tr> - <tr> - <td>Serge</td> - <td>Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - <td>8352</td> - <td>s.baldwin@datatables.net</td> - </tr> - <tr> - <td>Zenaida</td> - <td>Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - <td>7439</td> - <td>z.frank@datatables.net</td> - </tr> - <tr> - <td>Zorita</td> - <td>Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - <td>4389</td> - <td>z.serrano@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - <td>3431</td> - <td>j.acosta@datatables.net</td> - </tr> - <tr> - <td>Cara</td> - <td>Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - <td>3990</td> - <td>c.stevens@datatables.net</td> - </tr> - <tr> - <td>Hermione</td> - <td>Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - <td>1016</td> - <td>h.butler@datatables.net</td> - </tr> - <tr> - <td>Lael</td> - <td>Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - <td>6733</td> - <td>l.greer@datatables.net</td> - </tr> - <tr> - <td>Jonas</td> - <td>Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - <td>8196</td> - <td>j.alexander@datatables.net</td> - </tr> - <tr> - <td>Shad</td> - <td>Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - <td>6373</td> - <td>s.decker@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - <td>5384</td> - <td>m.bruce@datatables.net</td> - </tr> - <tr> - <td>Donna</td> - <td>Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - <td>4226</td> - <td>d.snider@datatables.net</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').DataTable( { - responsive: { - details: false - } - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../../media/js/jquery.js">../../../../media/js/jquery.js</a></li> - <li><a href="../../../../media/js/jquery.dataTables.js">../../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../../js/dataTables.responsive.js">../../js/dataTables.responsive.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../../media/css/jquery.dataTables.css">../../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../../css/dataTables.responsive.css">../../css/dataTables.responsive.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="../initialisation/index.html">Basic initialisation</a></h3> - <ul class="toc"> - <li><a href="../initialisation/className.html">Class name</a></li> - <li><a href="../initialisation/option.html">Configuration option</a></li> - <li><a href="../initialisation/new.html">`new` constructor</a></li> - <li><a href="../initialisation/ajax.html">Ajax data</a></li> - <li><a href="../initialisation/default.html">Default initialisation</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../styling/index.html">Styling</a></h3> - <ul class="toc"> - <li><a href="../styling/bootstrap.html">Bootstrap styling</a></li> - <li><a href="../styling/foundation.html">Foundation styling</a></li> - <li><a href="../styling/scrolling.html">Vertical scrolling</a></li> - <li><a href="../styling/compact.html">Compact styling</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../display-control/index.html">Display control</a></h3> - <ul class="toc"> - <li><a href="../display-control/auto.html">Automatic column hiding</a></li> - <li><a href="../display-control/classes.html">Class control</a></li> - <li><a href="../display-control/init-classes.html">Assigned class control</a></li> - <li><a href="../display-control/fixedHeader.html">With FixedHeader</a></li> - <li><a href="../display-control/complexHeader.html">Complex headers (rowspan / colspan)</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="./index.html">Child rows</a></h3> - <ul class="toc active"> - <li class="active"><a href="./disable-child-rows.html">Disable child rows</a></li> - <li><a href="./column-control.html">Column controlled child rows</a></li> - <li><a href="./right-column.html">Column control - right</a></li> - <li><a href="./whole-row-control.html">Whole row child row control</a></li> - <li><a href="./custom-renderer.html">Custom child row renderer</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/Responsive/examples/child-rows/index.html b/assets/plugins/datatables/extensions/Responsive/examples/child-rows/index.html deleted file mode 100644 index 98b3680b..00000000 --- a/assets/plugins/datatables/extensions/Responsive/examples/child-rows/index.html +++ /dev/null @@ -1,72 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css"> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script> - - <title>Responsive examples - Child row control</title> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>Responsive example <span>Child row control</span></h1> - - <div class="info"> - <p>When a column is removed from display by Responsive, the data is still available in the table and can be displayed in a DataTables <em>child row</em> (see - <a href="//datatables.net/reference/api/row().child()"><code class="api" title="DataTables API method">row().child()<span>DT</span></code></a>). By default - Responsive will show child row controls in the first column when the table has been collapsed, allowing the end user to show / hide the information from the hidden - columns.</p> - - <p>Responsive has a number of options for display of the child rows:</p> - - <ul class="markdown"> - <li>If child row display is enabled: <a href="//datatables.net/extensions/responsive/reference/option/responsive.details"><code class="option" title= - "Responsive initialisation option">responsive.details<span>R</span></code></a></li> - <li>How the show / hide control is displayed: <a href="//datatables.net/extensions/responsive/reference/option/responsive.details.type"><code class="option" - title="Responsive initialisation option">responsive.details.type<span>R</span></code></a></li> - <li>How the child row is rendered: <a href="//datatables.net/extensions/responsive/reference/option/responsive.details.renderer"><code class="option" title= - "Responsive initialisation option">responsive.details.renderer<span>R</span></code></a></li> - </ul> - - <p>This section shows examples of these options being used.</p> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Child rows</a></h3> - <ul class="toc"> - <li><a href="./disable-child-rows.html">Disable child rows</a></li> - <li><a href="./column-control.html">Column controlled child rows</a></li> - <li><a href="./right-column.html">Column control - right</a></li> - <li><a href="./whole-row-control.html">Whole row child row control</a></li> - <li><a href="./custom-renderer.html">Custom child row renderer</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/Responsive/examples/child-rows/right-column.html b/assets/plugins/datatables/extensions/Responsive/examples/child-rows/right-column.html deleted file mode 100644 index 94c4f237..00000000 --- a/assets/plugins/datatables/extensions/Responsive/examples/child-rows/right-column.html +++ /dev/null @@ -1,850 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>Responsive example - Column control - right</title> - <link rel="stylesheet" type="text/css" href="../../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../../css/dataTables.responsive.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../../js/dataTables.responsive.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - - -$(document).ready(function() { - $('#example').DataTable( { - responsive: { - details: { - type: 'column', - target: -1 - } - }, - columnDefs: [ { - className: 'control', - orderable: false, - targets: -1 - } ] - } ); -} ); - - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>Responsive example <span>Column control - right</span></h1> - - <div class="info"> - <p>When using the <code>column</code> child row control type, Responsive has the ability to use any column or element as the show / hide control for the row - details. This is provided through the <a href="//datatables.net/extensions/responsive/reference/option/responsive.details.target"><code class="option" title= - "Responsive initialisation option">responsive.details.target<span>R</span></code></a> option, which can be either a column index, or a jQuery selector.</p> - - <p>This example shows the last column in the table being used as the control column.</p> - </div> - - <table id="example" class="display nowrap" cellspacing="0" width="100%"> - <thead> - <tr> - <th>First name</th> - <th>Last name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - <th>Extn.</th> - <th></th> - </tr> - </thead> - - <tfoot> - <tr> - <th>First name</th> - <th>Last name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - <th>Extn.</th> - <th></th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger</td> - <td>Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - <td>5421</td> - <td></td> - </tr> - <tr> - <td>Garrett</td> - <td>Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - <td>8422</td> - <td></td> - </tr> - <tr> - <td>Ashton</td> - <td>Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - <td>1562</td> - <td></td> - </tr> - <tr> - <td>Cedric</td> - <td>Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - <td>6224</td> - <td></td> - </tr> - <tr> - <td>Airi</td> - <td>Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - <td>5407</td> - <td></td> - </tr> - <tr> - <td>Brielle</td> - <td>Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - <td>4804</td> - <td></td> - </tr> - <tr> - <td>Herrod</td> - <td>Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - <td>9608</td> - <td></td> - </tr> - <tr> - <td>Rhona</td> - <td>Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - <td>6200</td> - <td></td> - </tr> - <tr> - <td>Colleen</td> - <td>Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - <td>2360</td> - <td></td> - </tr> - <tr> - <td>Sonya</td> - <td>Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - <td>1667</td> - <td></td> - </tr> - <tr> - <td>Jena</td> - <td>Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - <td>3814</td> - <td></td> - </tr> - <tr> - <td>Quinn</td> - <td>Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - <td>9497</td> - <td></td> - </tr> - <tr> - <td>Charde</td> - <td>Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - <td>6741</td> - <td></td> - </tr> - <tr> - <td>Haley</td> - <td>Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - <td>3597</td> - <td></td> - </tr> - <tr> - <td>Tatyana</td> - <td>Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - <td>1965</td> - <td></td> - </tr> - <tr> - <td>Michael</td> - <td>Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - <td>1581</td> - <td></td> - </tr> - <tr> - <td>Paul</td> - <td>Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - <td>3059</td> - <td></td> - </tr> - <tr> - <td>Gloria</td> - <td>Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - <td>1721</td> - <td></td> - </tr> - <tr> - <td>Bradley</td> - <td>Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - <td>2558</td> - <td></td> - </tr> - <tr> - <td>Dai</td> - <td>Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - <td>2290</td> - <td></td> - </tr> - <tr> - <td>Jenette</td> - <td>Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - <td>1937</td> - <td></td> - </tr> - <tr> - <td>Yuri</td> - <td>Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - <td>6154</td> - <td></td> - </tr> - <tr> - <td>Caesar</td> - <td>Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - <td>8330</td> - <td></td> - </tr> - <tr> - <td>Doris</td> - <td>Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - <td>3023</td> - <td></td> - </tr> - <tr> - <td>Angelica</td> - <td>Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - <td>5797</td> - <td></td> - </tr> - <tr> - <td>Gavin</td> - <td>Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - <td>8822</td> - <td></td> - </tr> - <tr> - <td>Jennifer</td> - <td>Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - <td>9239</td> - <td></td> - </tr> - <tr> - <td>Brenden</td> - <td>Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - <td>1314</td> - <td></td> - </tr> - <tr> - <td>Fiona</td> - <td>Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - <td>2947</td> - <td></td> - </tr> - <tr> - <td>Shou</td> - <td>Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - <td>8899</td> - <td></td> - </tr> - <tr> - <td>Michelle</td> - <td>House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - <td>2769</td> - <td></td> - </tr> - <tr> - <td>Suki</td> - <td>Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - <td>6832</td> - <td></td> - </tr> - <tr> - <td>Prescott</td> - <td>Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - <td>3606</td> - <td></td> - </tr> - <tr> - <td>Gavin</td> - <td>Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - <td>2860</td> - <td></td> - </tr> - <tr> - <td>Martena</td> - <td>Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - <td>8240</td> - <td></td> - </tr> - <tr> - <td>Unity</td> - <td>Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - <td>5384</td> - <td></td> - </tr> - <tr> - <td>Howard</td> - <td>Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - <td>7031</td> - <td></td> - </tr> - <tr> - <td>Hope</td> - <td>Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - <td>6318</td> - <td></td> - </tr> - <tr> - <td>Vivian</td> - <td>Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - <td>9422</td> - <td></td> - </tr> - <tr> - <td>Timothy</td> - <td>Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - <td>7580</td> - <td></td> - </tr> - <tr> - <td>Jackson</td> - <td>Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - <td>1042</td> - <td></td> - </tr> - <tr> - <td>Olivia</td> - <td>Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - <td>2120</td> - <td></td> - </tr> - <tr> - <td>Bruno</td> - <td>Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - <td>6222</td> - <td></td> - </tr> - <tr> - <td>Sakura</td> - <td>Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - <td>9383</td> - <td></td> - </tr> - <tr> - <td>Thor</td> - <td>Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - <td>8327</td> - <td></td> - </tr> - <tr> - <td>Finn</td> - <td>Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - <td>2927</td> - <td></td> - </tr> - <tr> - <td>Serge</td> - <td>Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - <td>8352</td> - <td></td> - </tr> - <tr> - <td>Zenaida</td> - <td>Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - <td>7439</td> - <td></td> - </tr> - <tr> - <td>Zorita</td> - <td>Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - <td>4389</td> - <td></td> - </tr> - <tr> - <td>Jennifer</td> - <td>Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - <td>3431</td> - <td></td> - </tr> - <tr> - <td>Cara</td> - <td>Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - <td>3990</td> - <td></td> - </tr> - <tr> - <td>Hermione</td> - <td>Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - <td>1016</td> - <td></td> - </tr> - <tr> - <td>Lael</td> - <td>Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - <td>6733</td> - <td></td> - </tr> - <tr> - <td>Jonas</td> - <td>Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - <td>8196</td> - <td></td> - </tr> - <tr> - <td>Shad</td> - <td>Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - <td>6373</td> - <td></td> - </tr> - <tr> - <td>Michael</td> - <td>Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - <td>5384</td> - <td></td> - </tr> - <tr> - <td>Donna</td> - <td>Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - <td>4226</td> - <td></td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').DataTable( { - responsive: { - details: { - type: 'column', - target: -1 - } - }, - columnDefs: [ { - className: 'control', - orderable: false, - targets: -1 - } ] - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../../media/js/jquery.js">../../../../media/js/jquery.js</a></li> - <li><a href="../../../../media/js/jquery.dataTables.js">../../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../../js/dataTables.responsive.js">../../js/dataTables.responsive.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../../media/css/jquery.dataTables.css">../../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../../css/dataTables.responsive.css">../../css/dataTables.responsive.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="../initialisation/index.html">Basic initialisation</a></h3> - <ul class="toc"> - <li><a href="../initialisation/className.html">Class name</a></li> - <li><a href="../initialisation/option.html">Configuration option</a></li> - <li><a href="../initialisation/new.html">`new` constructor</a></li> - <li><a href="../initialisation/ajax.html">Ajax data</a></li> - <li><a href="../initialisation/default.html">Default initialisation</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../styling/index.html">Styling</a></h3> - <ul class="toc"> - <li><a href="../styling/bootstrap.html">Bootstrap styling</a></li> - <li><a href="../styling/foundation.html">Foundation styling</a></li> - <li><a href="../styling/scrolling.html">Vertical scrolling</a></li> - <li><a href="../styling/compact.html">Compact styling</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../display-control/index.html">Display control</a></h3> - <ul class="toc"> - <li><a href="../display-control/auto.html">Automatic column hiding</a></li> - <li><a href="../display-control/classes.html">Class control</a></li> - <li><a href="../display-control/init-classes.html">Assigned class control</a></li> - <li><a href="../display-control/fixedHeader.html">With FixedHeader</a></li> - <li><a href="../display-control/complexHeader.html">Complex headers (rowspan / colspan)</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="./index.html">Child rows</a></h3> - <ul class="toc active"> - <li><a href="./disable-child-rows.html">Disable child rows</a></li> - <li><a href="./column-control.html">Column controlled child rows</a></li> - <li class="active"><a href="./right-column.html">Column control - right</a></li> - <li><a href="./whole-row-control.html">Whole row child row control</a></li> - <li><a href="./custom-renderer.html">Custom child row renderer</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/Responsive/examples/child-rows/whole-row-control.html b/assets/plugins/datatables/extensions/Responsive/examples/child-rows/whole-row-control.html deleted file mode 100644 index 74e11322..00000000 --- a/assets/plugins/datatables/extensions/Responsive/examples/child-rows/whole-row-control.html +++ /dev/null @@ -1,853 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>Responsive example - Whole row child row control</title> - <link rel="stylesheet" type="text/css" href="../../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../../css/dataTables.responsive.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../../js/dataTables.responsive.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - - -$(document).ready(function() { - $('#example').DataTable( { - responsive: { - details: { - type: 'column', - target: 'tr' - } - }, - columnDefs: [ { - className: 'control', - orderable: false, - targets: 0 - } ], - order: [ 1, 'asc' ] - } ); -} ); - - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>Responsive example <span>Whole row child row control</span></h1> - - <div class="info"> - <p>When using the <code>column</code> details type in Responsive the <a href= - "//datatables.net/extensions/responsive/reference/option/responsive.details.target"><code class="option" title= - "Responsive initialisation option">responsive.details.target<span>R</span></code></a> option provides the ability to control what element is used to show / hide - the child rows when the table is collapsed.</p> - - <p>This example uses the <code>tr</code> selector to have the whole row act as the control.</p> - </div> - - <table id="example" class="display nowrap" cellspacing="0" width="100%"> - <thead> - <tr> - <th></th> - <th>First name</th> - <th>Last name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - <th>Extn.</th> - </tr> - </thead> - - <tfoot> - <tr> - <th></th> - <th>First name</th> - <th>Last name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - <th>Extn.</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td></td> - <td>Tiger</td> - <td>Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - <td>5421</td> - </tr> - <tr> - <td></td> - <td>Garrett</td> - <td>Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - <td>8422</td> - </tr> - <tr> - <td></td> - <td>Ashton</td> - <td>Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - <td>1562</td> - </tr> - <tr> - <td></td> - <td>Cedric</td> - <td>Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - <td>6224</td> - </tr> - <tr> - <td></td> - <td>Airi</td> - <td>Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - <td>5407</td> - </tr> - <tr> - <td></td> - <td>Brielle</td> - <td>Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - <td>4804</td> - </tr> - <tr> - <td></td> - <td>Herrod</td> - <td>Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - <td>9608</td> - </tr> - <tr> - <td></td> - <td>Rhona</td> - <td>Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - <td>6200</td> - </tr> - <tr> - <td></td> - <td>Colleen</td> - <td>Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - <td>2360</td> - </tr> - <tr> - <td></td> - <td>Sonya</td> - <td>Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - <td>1667</td> - </tr> - <tr> - <td></td> - <td>Jena</td> - <td>Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - <td>3814</td> - </tr> - <tr> - <td></td> - <td>Quinn</td> - <td>Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - <td>9497</td> - </tr> - <tr> - <td></td> - <td>Charde</td> - <td>Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - <td>6741</td> - </tr> - <tr> - <td></td> - <td>Haley</td> - <td>Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - <td>3597</td> - </tr> - <tr> - <td></td> - <td>Tatyana</td> - <td>Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - <td>1965</td> - </tr> - <tr> - <td></td> - <td>Michael</td> - <td>Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - <td>1581</td> - </tr> - <tr> - <td></td> - <td>Paul</td> - <td>Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - <td>3059</td> - </tr> - <tr> - <td></td> - <td>Gloria</td> - <td>Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - <td>1721</td> - </tr> - <tr> - <td></td> - <td>Bradley</td> - <td>Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - <td>2558</td> - </tr> - <tr> - <td></td> - <td>Dai</td> - <td>Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - <td>2290</td> - </tr> - <tr> - <td></td> - <td>Jenette</td> - <td>Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - <td>1937</td> - </tr> - <tr> - <td></td> - <td>Yuri</td> - <td>Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - <td>6154</td> - </tr> - <tr> - <td></td> - <td>Caesar</td> - <td>Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - <td>8330</td> - </tr> - <tr> - <td></td> - <td>Doris</td> - <td>Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - <td>3023</td> - </tr> - <tr> - <td></td> - <td>Angelica</td> - <td>Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - <td>5797</td> - </tr> - <tr> - <td></td> - <td>Gavin</td> - <td>Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - <td>8822</td> - </tr> - <tr> - <td></td> - <td>Jennifer</td> - <td>Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - <td>9239</td> - </tr> - <tr> - <td></td> - <td>Brenden</td> - <td>Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - <td>1314</td> - </tr> - <tr> - <td></td> - <td>Fiona</td> - <td>Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - <td>2947</td> - </tr> - <tr> - <td></td> - <td>Shou</td> - <td>Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - <td>8899</td> - </tr> - <tr> - <td></td> - <td>Michelle</td> - <td>House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - <td>2769</td> - </tr> - <tr> - <td></td> - <td>Suki</td> - <td>Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - <td>6832</td> - </tr> - <tr> - <td></td> - <td>Prescott</td> - <td>Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - <td>3606</td> - </tr> - <tr> - <td></td> - <td>Gavin</td> - <td>Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - <td>2860</td> - </tr> - <tr> - <td></td> - <td>Martena</td> - <td>Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - <td>8240</td> - </tr> - <tr> - <td></td> - <td>Unity</td> - <td>Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - <td>5384</td> - </tr> - <tr> - <td></td> - <td>Howard</td> - <td>Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - <td>7031</td> - </tr> - <tr> - <td></td> - <td>Hope</td> - <td>Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - <td>6318</td> - </tr> - <tr> - <td></td> - <td>Vivian</td> - <td>Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - <td>9422</td> - </tr> - <tr> - <td></td> - <td>Timothy</td> - <td>Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - <td>7580</td> - </tr> - <tr> - <td></td> - <td>Jackson</td> - <td>Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - <td>1042</td> - </tr> - <tr> - <td></td> - <td>Olivia</td> - <td>Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - <td>2120</td> - </tr> - <tr> - <td></td> - <td>Bruno</td> - <td>Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - <td>6222</td> - </tr> - <tr> - <td></td> - <td>Sakura</td> - <td>Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - <td>9383</td> - </tr> - <tr> - <td></td> - <td>Thor</td> - <td>Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - <td>8327</td> - </tr> - <tr> - <td></td> - <td>Finn</td> - <td>Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - <td>2927</td> - </tr> - <tr> - <td></td> - <td>Serge</td> - <td>Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - <td>8352</td> - </tr> - <tr> - <td></td> - <td>Zenaida</td> - <td>Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - <td>7439</td> - </tr> - <tr> - <td></td> - <td>Zorita</td> - <td>Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - <td>4389</td> - </tr> - <tr> - <td></td> - <td>Jennifer</td> - <td>Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - <td>3431</td> - </tr> - <tr> - <td></td> - <td>Cara</td> - <td>Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - <td>3990</td> - </tr> - <tr> - <td></td> - <td>Hermione</td> - <td>Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - <td>1016</td> - </tr> - <tr> - <td></td> - <td>Lael</td> - <td>Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - <td>6733</td> - </tr> - <tr> - <td></td> - <td>Jonas</td> - <td>Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - <td>8196</td> - </tr> - <tr> - <td></td> - <td>Shad</td> - <td>Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - <td>6373</td> - </tr> - <tr> - <td></td> - <td>Michael</td> - <td>Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - <td>5384</td> - </tr> - <tr> - <td></td> - <td>Donna</td> - <td>Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - <td>4226</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').DataTable( { - responsive: { - details: { - type: 'column', - target: 'tr' - } - }, - columnDefs: [ { - className: 'control', - orderable: false, - targets: 0 - } ], - order: [ 1, 'asc' ] - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../../media/js/jquery.js">../../../../media/js/jquery.js</a></li> - <li><a href="../../../../media/js/jquery.dataTables.js">../../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../../js/dataTables.responsive.js">../../js/dataTables.responsive.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../../media/css/jquery.dataTables.css">../../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../../css/dataTables.responsive.css">../../css/dataTables.responsive.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="../initialisation/index.html">Basic initialisation</a></h3> - <ul class="toc"> - <li><a href="../initialisation/className.html">Class name</a></li> - <li><a href="../initialisation/option.html">Configuration option</a></li> - <li><a href="../initialisation/new.html">`new` constructor</a></li> - <li><a href="../initialisation/ajax.html">Ajax data</a></li> - <li><a href="../initialisation/default.html">Default initialisation</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../styling/index.html">Styling</a></h3> - <ul class="toc"> - <li><a href="../styling/bootstrap.html">Bootstrap styling</a></li> - <li><a href="../styling/foundation.html">Foundation styling</a></li> - <li><a href="../styling/scrolling.html">Vertical scrolling</a></li> - <li><a href="../styling/compact.html">Compact styling</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../display-control/index.html">Display control</a></h3> - <ul class="toc"> - <li><a href="../display-control/auto.html">Automatic column hiding</a></li> - <li><a href="../display-control/classes.html">Class control</a></li> - <li><a href="../display-control/init-classes.html">Assigned class control</a></li> - <li><a href="../display-control/fixedHeader.html">With FixedHeader</a></li> - <li><a href="../display-control/complexHeader.html">Complex headers (rowspan / colspan)</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="./index.html">Child rows</a></h3> - <ul class="toc active"> - <li><a href="./disable-child-rows.html">Disable child rows</a></li> - <li><a href="./column-control.html">Column controlled child rows</a></li> - <li><a href="./right-column.html">Column control - right</a></li> - <li class="active"><a href="./whole-row-control.html">Whole row child row control</a></li> - <li><a href="./custom-renderer.html">Custom child row renderer</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/Responsive/examples/display-control/auto.html b/assets/plugins/datatables/extensions/Responsive/examples/display-control/auto.html deleted file mode 100644 index ef8e2723..00000000 --- a/assets/plugins/datatables/extensions/Responsive/examples/display-control/auto.html +++ /dev/null @@ -1,813 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>Responsive example - Automatic column hiding</title> - <link rel="stylesheet" type="text/css" href="../../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../../css/dataTables.responsive.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../../js/dataTables.responsive.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - - -$(document).ready(function() { - $('#example').DataTable(); -} ); - - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>Responsive example <span>Automatic column hiding</span></h1> - - <div class="info"> - <p>Responsive will automatically detect which columns have breakpoint class names assigned to them for visibility control. If no breakpoint class is found for a - column, Responsive will determine automatically if the column should be shown or not at any particular viewport width. This is done by removing columns which cause - the table to overflow the viewport, with the columns being removed from the right.</p> - - <p>This example shows that simple case. On a desktop browser resize the window horizontally to see columns added and removed on-the-fly. On a tablet or mobile - browser, change the screen's orientation.</p> - </div> - - <table id="example" class="display responsive nowrap" cellspacing="0" width="100%"> - <thead> - <tr> - <th>First name</th> - <th>Last name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - <th>Extn.</th> - <th>E-mail</th> - </tr> - </thead> - - <tbody> - <tr> - <td>Tiger</td> - <td>Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - <td>5421</td> - <td>t.nixon@datatables.net</td> - </tr> - <tr> - <td>Garrett</td> - <td>Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - <td>8422</td> - <td>g.winters@datatables.net</td> - </tr> - <tr> - <td>Ashton</td> - <td>Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - <td>1562</td> - <td>a.cox@datatables.net</td> - </tr> - <tr> - <td>Cedric</td> - <td>Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - <td>6224</td> - <td>c.kelly@datatables.net</td> - </tr> - <tr> - <td>Airi</td> - <td>Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - <td>5407</td> - <td>a.satou@datatables.net</td> - </tr> - <tr> - <td>Brielle</td> - <td>Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - <td>4804</td> - <td>b.williamson@datatables.net</td> - </tr> - <tr> - <td>Herrod</td> - <td>Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - <td>9608</td> - <td>h.chandler@datatables.net</td> - </tr> - <tr> - <td>Rhona</td> - <td>Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - <td>6200</td> - <td>r.davidson@datatables.net</td> - </tr> - <tr> - <td>Colleen</td> - <td>Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - <td>2360</td> - <td>c.hurst@datatables.net</td> - </tr> - <tr> - <td>Sonya</td> - <td>Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - <td>1667</td> - <td>s.frost@datatables.net</td> - </tr> - <tr> - <td>Jena</td> - <td>Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - <td>3814</td> - <td>j.gaines@datatables.net</td> - </tr> - <tr> - <td>Quinn</td> - <td>Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - <td>9497</td> - <td>q.flynn@datatables.net</td> - </tr> - <tr> - <td>Charde</td> - <td>Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - <td>6741</td> - <td>c.marshall@datatables.net</td> - </tr> - <tr> - <td>Haley</td> - <td>Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - <td>3597</td> - <td>h.kennedy@datatables.net</td> - </tr> - <tr> - <td>Tatyana</td> - <td>Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - <td>1965</td> - <td>t.fitzpatrick@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - <td>1581</td> - <td>m.silva@datatables.net</td> - </tr> - <tr> - <td>Paul</td> - <td>Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - <td>3059</td> - <td>p.byrd@datatables.net</td> - </tr> - <tr> - <td>Gloria</td> - <td>Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - <td>1721</td> - <td>g.little@datatables.net</td> - </tr> - <tr> - <td>Bradley</td> - <td>Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - <td>2558</td> - <td>b.greer@datatables.net</td> - </tr> - <tr> - <td>Dai</td> - <td>Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - <td>2290</td> - <td>d.rios@datatables.net</td> - </tr> - <tr> - <td>Jenette</td> - <td>Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - <td>1937</td> - <td>j.caldwell@datatables.net</td> - </tr> - <tr> - <td>Yuri</td> - <td>Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - <td>6154</td> - <td>y.berry@datatables.net</td> - </tr> - <tr> - <td>Caesar</td> - <td>Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - <td>8330</td> - <td>c.vance@datatables.net</td> - </tr> - <tr> - <td>Doris</td> - <td>Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - <td>3023</td> - <td>d.wilder@datatables.net</td> - </tr> - <tr> - <td>Angelica</td> - <td>Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - <td>5797</td> - <td>a.ramos@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - <td>8822</td> - <td>g.joyce@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - <td>9239</td> - <td>j.chang@datatables.net</td> - </tr> - <tr> - <td>Brenden</td> - <td>Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - <td>1314</td> - <td>b.wagner@datatables.net</td> - </tr> - <tr> - <td>Fiona</td> - <td>Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - <td>2947</td> - <td>f.green@datatables.net</td> - </tr> - <tr> - <td>Shou</td> - <td>Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - <td>8899</td> - <td>s.itou@datatables.net</td> - </tr> - <tr> - <td>Michelle</td> - <td>House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - <td>2769</td> - <td>m.house@datatables.net</td> - </tr> - <tr> - <td>Suki</td> - <td>Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - <td>6832</td> - <td>s.burks@datatables.net</td> - </tr> - <tr> - <td>Prescott</td> - <td>Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - <td>3606</td> - <td>p.bartlett@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - <td>2860</td> - <td>g.cortez@datatables.net</td> - </tr> - <tr> - <td>Martena</td> - <td>Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - <td>8240</td> - <td>m.mccray@datatables.net</td> - </tr> - <tr> - <td>Unity</td> - <td>Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - <td>5384</td> - <td>u.butler@datatables.net</td> - </tr> - <tr> - <td>Howard</td> - <td>Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - <td>7031</td> - <td>h.hatfield@datatables.net</td> - </tr> - <tr> - <td>Hope</td> - <td>Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - <td>6318</td> - <td>h.fuentes@datatables.net</td> - </tr> - <tr> - <td>Vivian</td> - <td>Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - <td>9422</td> - <td>v.harrell@datatables.net</td> - </tr> - <tr> - <td>Timothy</td> - <td>Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - <td>7580</td> - <td>t.mooney@datatables.net</td> - </tr> - <tr> - <td>Jackson</td> - <td>Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - <td>1042</td> - <td>j.bradshaw@datatables.net</td> - </tr> - <tr> - <td>Olivia</td> - <td>Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - <td>2120</td> - <td>o.liang@datatables.net</td> - </tr> - <tr> - <td>Bruno</td> - <td>Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - <td>6222</td> - <td>b.nash@datatables.net</td> - </tr> - <tr> - <td>Sakura</td> - <td>Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - <td>9383</td> - <td>s.yamamoto@datatables.net</td> - </tr> - <tr> - <td>Thor</td> - <td>Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - <td>8327</td> - <td>t.walton@datatables.net</td> - </tr> - <tr> - <td>Finn</td> - <td>Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - <td>2927</td> - <td>f.camacho@datatables.net</td> - </tr> - <tr> - <td>Serge</td> - <td>Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - <td>8352</td> - <td>s.baldwin@datatables.net</td> - </tr> - <tr> - <td>Zenaida</td> - <td>Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - <td>7439</td> - <td>z.frank@datatables.net</td> - </tr> - <tr> - <td>Zorita</td> - <td>Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - <td>4389</td> - <td>z.serrano@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - <td>3431</td> - <td>j.acosta@datatables.net</td> - </tr> - <tr> - <td>Cara</td> - <td>Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - <td>3990</td> - <td>c.stevens@datatables.net</td> - </tr> - <tr> - <td>Hermione</td> - <td>Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - <td>1016</td> - <td>h.butler@datatables.net</td> - </tr> - <tr> - <td>Lael</td> - <td>Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - <td>6733</td> - <td>l.greer@datatables.net</td> - </tr> - <tr> - <td>Jonas</td> - <td>Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - <td>8196</td> - <td>j.alexander@datatables.net</td> - </tr> - <tr> - <td>Shad</td> - <td>Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - <td>6373</td> - <td>s.decker@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - <td>5384</td> - <td>m.bruce@datatables.net</td> - </tr> - <tr> - <td>Donna</td> - <td>Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - <td>4226</td> - <td>d.snider@datatables.net</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').DataTable(); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../../media/js/jquery.js">../../../../media/js/jquery.js</a></li> - <li><a href="../../../../media/js/jquery.dataTables.js">../../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../../js/dataTables.responsive.js">../../js/dataTables.responsive.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../../media/css/jquery.dataTables.css">../../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../../css/dataTables.responsive.css">../../css/dataTables.responsive.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="../initialisation/index.html">Basic initialisation</a></h3> - <ul class="toc"> - <li><a href="../initialisation/className.html">Class name</a></li> - <li><a href="../initialisation/option.html">Configuration option</a></li> - <li><a href="../initialisation/new.html">`new` constructor</a></li> - <li><a href="../initialisation/ajax.html">Ajax data</a></li> - <li><a href="../initialisation/default.html">Default initialisation</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../styling/index.html">Styling</a></h3> - <ul class="toc"> - <li><a href="../styling/bootstrap.html">Bootstrap styling</a></li> - <li><a href="../styling/foundation.html">Foundation styling</a></li> - <li><a href="../styling/scrolling.html">Vertical scrolling</a></li> - <li><a href="../styling/compact.html">Compact styling</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="./index.html">Display control</a></h3> - <ul class="toc active"> - <li class="active"><a href="./auto.html">Automatic column hiding</a></li> - <li><a href="./classes.html">Class control</a></li> - <li><a href="./init-classes.html">Assigned class control</a></li> - <li><a href="./fixedHeader.html">With FixedHeader</a></li> - <li><a href="./complexHeader.html">Complex headers (rowspan / colspan)</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../child-rows/index.html">Child rows</a></h3> - <ul class="toc"> - <li><a href="../child-rows/disable-child-rows.html">Disable child rows</a></li> - <li><a href="../child-rows/column-control.html">Column controlled child rows</a></li> - <li><a href="../child-rows/right-column.html">Column control - right</a></li> - <li><a href="../child-rows/whole-row-control.html">Whole row child row control</a></li> - <li><a href="../child-rows/custom-renderer.html">Custom child row renderer</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/Responsive/examples/display-control/classes.html b/assets/plugins/datatables/extensions/Responsive/examples/display-control/classes.html deleted file mode 100644 index fda21627..00000000 --- a/assets/plugins/datatables/extensions/Responsive/examples/display-control/classes.html +++ /dev/null @@ -1,247 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>Responsive example - Class control</title> - <link rel="stylesheet" type="text/css" href="../../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../../css/dataTables.responsive.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - - </style> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../../js/dataTables.responsive.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - - -$(document).ready(function() { - $('#example').DataTable( { - "ajax": "../../../../examples/ajax/data/objects.txt", - "columns": [ - { "data": "name" }, - { "data": "position" }, - { "data": "office" }, - { "data": "age" }, - { "data": "start_date" }, - { "data": "salary" }, - { "data": "extn" } - ] - } ); -} ); - - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>Responsive example <span>Class control</span></h1> - - <div class="info"> - <p>You can tell Responsive what columns to want to be visible on different devices through the use of class names on the columns. The breakpoints are horizontal - screen resolutions and the defaults are set for common devices:</p> - - <ul class="markdown"> - <li><code>desktop</code> x &gt;= 1024px</li> - <li><code>tablet-l</code> (landscape) 768 &lt;= x &lt; 1024</li> - <li><code>tablet-p</code> (portrait) 480 &lt;= x &lt; 768</li> - <li><code>mobile-l</code> (landscape) 320 &lt;= x &lt; 480</li> - <li><code>mobile-p</code> (portrait) x &lt; 320</li> - </ul> - - <p>You may leave the <code>-[lp]</code> option from the end if you wish to just target all tablet or mobile devices. Additionally to may add <code>min-</code>, - <code>max-</code> or <code>not-</code> as a prefix to the class name to perform logic operations. For example <code>not-mobile</code> would cause a column to - appear as visible on desktop and tablet devices, while <code>min-tablet-l</code> would require at least a horizontal width of 768 for the browser window to be - shown, and be shown at all sizes larger.</p> - - <p>Additionally, there are three special class names:</p> - - <ul class="markdown"> - <li><code>all</code> - Always display</li> - <li><code>none</code> - Don't display as a column, but show in the child row</li> - <li><code>never</code> - Never display</li> - <li><code>control</code> - Used for the <code>column</code> <a href= - "//datatables.net/extensions/responsive/reference/option/responsive.details.type"><code class="option" title= - "Responsive initialisation option">responsive.details.type<span>R</span></code></a> option.</li> - </ul> - - <p>Please <a href="//datatables.net/extensions/responsive/">refer to the Responsive manual</a> for further details of these options.</p> - - <p>This example shows the <code>salary</code> column visible on a desktop only - <code>office</code> and <code>age</code> require a tablet, while the - <code>position</code> column requires a phone in landscape or larger. The <code>name</code> column is always visible and the <code>start date</code> is never - visible.</p> - - <p>This can be useful if you wish to change the format of the data shown on different devices, for example using a combination of <code>mobile</code> and - <code>not-mobile</code> on two different columns would allow information to be formatted suitable for each device type.</p> - </div> - - <div id="breakpoint"></div> - - <table id="example" class="display responsive" width="100%"> - <thead> - <tr> - <th class="all">Name</th> - <th class="min-phone-l">Position</th> - <th class="min-tablet">Office</th> - <th class="min-tablet">Age</th> - <th class="never">Start date</th> - <th class="desktop">Salary</th> - <th class="none">Extn.</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - <th>Extn.</th> - </tr> - </tfoot> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').DataTable( { - &quot;ajax&quot;: &quot;../../../../examples/ajax/data/objects.txt&quot;, - &quot;columns&quot;: [ - { &quot;data&quot;: &quot;name&quot; }, - { &quot;data&quot;: &quot;position&quot; }, - { &quot;data&quot;: &quot;office&quot; }, - { &quot;data&quot;: &quot;age&quot; }, - { &quot;data&quot;: &quot;start_date&quot; }, - { &quot;data&quot;: &quot;salary&quot; }, - { &quot;data&quot;: &quot;extn&quot; } - ] - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../../media/js/jquery.js">../../../../media/js/jquery.js</a></li> - <li><a href="../../../../media/js/jquery.dataTables.js">../../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../../js/dataTables.responsive.js">../../js/dataTables.responsive.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../../media/css/jquery.dataTables.css">../../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../../css/dataTables.responsive.css">../../css/dataTables.responsive.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="../initialisation/index.html">Basic initialisation</a></h3> - <ul class="toc"> - <li><a href="../initialisation/className.html">Class name</a></li> - <li><a href="../initialisation/option.html">Configuration option</a></li> - <li><a href="../initialisation/new.html">`new` constructor</a></li> - <li><a href="../initialisation/ajax.html">Ajax data</a></li> - <li><a href="../initialisation/default.html">Default initialisation</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../styling/index.html">Styling</a></h3> - <ul class="toc"> - <li><a href="../styling/bootstrap.html">Bootstrap styling</a></li> - <li><a href="../styling/foundation.html">Foundation styling</a></li> - <li><a href="../styling/scrolling.html">Vertical scrolling</a></li> - <li><a href="../styling/compact.html">Compact styling</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="./index.html">Display control</a></h3> - <ul class="toc active"> - <li><a href="./auto.html">Automatic column hiding</a></li> - <li class="active"><a href="./classes.html">Class control</a></li> - <li><a href="./init-classes.html">Assigned class control</a></li> - <li><a href="./fixedHeader.html">With FixedHeader</a></li> - <li><a href="./complexHeader.html">Complex headers (rowspan / colspan)</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../child-rows/index.html">Child rows</a></h3> - <ul class="toc"> - <li><a href="../child-rows/disable-child-rows.html">Disable child rows</a></li> - <li><a href="../child-rows/column-control.html">Column controlled child rows</a></li> - <li><a href="../child-rows/right-column.html">Column control - right</a></li> - <li><a href="../child-rows/whole-row-control.html">Whole row child row control</a></li> - <li><a href="../child-rows/custom-renderer.html">Custom child row renderer</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/Responsive/examples/display-control/complexHeader.html b/assets/plugins/datatables/extensions/Responsive/examples/display-control/complexHeader.html deleted file mode 100644 index 04d051cd..00000000 --- a/assets/plugins/datatables/extensions/Responsive/examples/display-control/complexHeader.html +++ /dev/null @@ -1,708 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>Responsive example - Complex headers (rowspan / colspan)</title> - <link rel="stylesheet" type="text/css" href="../../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../../css/dataTables.responsive.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - th { - position: relative; - min-height: 41px; - } - span { - display: block; - position: absolute; - left: 0; - right: 0; - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - } - - </style> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../../js/dataTables.responsive.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - - -$(document).ready(function() { - // jQuery update a column title from the demo table to contain a long description - // You would not need to do this in your own code. - $('#example thead tr:eq(0) th:eq(2)').html("This is a really long column title!"); - - // Wrap the colspan'ing header cells with a span so they can be positioned - // absolutely - filling the available space, and no more. - $('#example thead th[colspan]').wrapInner( '<span/>' ).append( '&nbsp;' ); - - // Standard initialisation - $('#example').DataTable( { - responsive: true, - paging: false - } ); -} ); - - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>Responsive example <span>Complex headers (rowspan / colspan)</span></h1> - - <div class="info"> - <p>This example shows how Responsive can be used with <em>complex headers</em> (i.e. headers that contain <code>colspan</code> attributes for one or more cells). - As Responsive will removed columns one at a time the cell with the <code>colspan</code> attribute can end up forcing the width of a column, disrupting the flow. - Rather than removing all columns under the <code>colspan</code> cell, we want to reduce the amount of text that is visible in that cell. This example shows how - that can be achieved thought a little bit of jQuery and CSS.</p> - - <p>We use jQuery to find the header cells which have a <code>colspan</code> attribute and wrap their contents in a <code class="tag" title="HTML tag">span</code> - tag. That <code class="tag" title="HTML tag">span</code> is then set to <code>position: absolute;</code> using <code>text-overflow: ellipsis</code>. The result is - that the text of the <code>colspan</code> cell will reduce automatically to fit the available area based on the contents of the column cells below it.</p> - - <p>This functionality is not currently built into Responsive. It likely will be for v1.1.</p> - </div> - - <table id="example" class="display nowrap" cellspacing="0" width="100%"> - <thead> - <tr> - <th rowspan="2">Name</th> - <th colspan="2">HR Information</th> - <th colspan="3">Contact</th> - </tr> - <tr> - <th>Position</th> - <th>Salary</th> - <th>Office</th> - <th>Extn.</th> - <th>E-mail</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Salary</th> - <th>Office</th> - <th>Extn.</th> - <th>E-mail</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>$320,800</td> - <td>Edinburgh</td> - <td>5421</td> - <td>t.nixon@datatables.net</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>$170,750</td> - <td>Tokyo</td> - <td>8422</td> - <td>g.winters@datatables.net</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>$86,000</td> - <td>San Francisco</td> - <td>1562</td> - <td>a.cox@datatables.net</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>$433,060</td> - <td>Edinburgh</td> - <td>6224</td> - <td>c.kelly@datatables.net</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>$162,700</td> - <td>Tokyo</td> - <td>5407</td> - <td>a.satou@datatables.net</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>$372,000</td> - <td>New York</td> - <td>4804</td> - <td>b.williamson@datatables.net</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>$137,500</td> - <td>San Francisco</td> - <td>9608</td> - <td>h.chandler@datatables.net</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>$327,900</td> - <td>Tokyo</td> - <td>6200</td> - <td>r.davidson@datatables.net</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>$205,500</td> - <td>San Francisco</td> - <td>2360</td> - <td>c.hurst@datatables.net</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>$103,600</td> - <td>Edinburgh</td> - <td>1667</td> - <td>s.frost@datatables.net</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>$90,560</td> - <td>London</td> - <td>3814</td> - <td>j.gaines@datatables.net</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>$342,000</td> - <td>Edinburgh</td> - <td>9497</td> - <td>q.flynn@datatables.net</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>$470,600</td> - <td>San Francisco</td> - <td>6741</td> - <td>c.marshall@datatables.net</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>$313,500</td> - <td>London</td> - <td>3597</td> - <td>h.kennedy@datatables.net</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>$385,750</td> - <td>London</td> - <td>1965</td> - <td>t.fitzpatrick@datatables.net</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>$198,500</td> - <td>London</td> - <td>1581</td> - <td>m.silva@datatables.net</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>$725,000</td> - <td>New York</td> - <td>3059</td> - <td>p.byrd@datatables.net</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>$237,500</td> - <td>New York</td> - <td>1721</td> - <td>g.little@datatables.net</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>$132,000</td> - <td>London</td> - <td>2558</td> - <td>b.greer@datatables.net</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>$217,500</td> - <td>Edinburgh</td> - <td>2290</td> - <td>d.rios@datatables.net</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>$345,000</td> - <td>New York</td> - <td>1937</td> - <td>j.caldwell@datatables.net</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>$675,000</td> - <td>New York</td> - <td>6154</td> - <td>y.berry@datatables.net</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>$106,450</td> - <td>New York</td> - <td>8330</td> - <td>c.vance@datatables.net</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>$85,600</td> - <td>Sidney</td> - <td>3023</td> - <td>d.wilder@datatables.net</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>$1,200,000</td> - <td>London</td> - <td>5797</td> - <td>a.ramos@datatables.net</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>$92,575</td> - <td>Edinburgh</td> - <td>8822</td> - <td>g.joyce@datatables.net</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>$357,650</td> - <td>Singapore</td> - <td>9239</td> - <td>j.chang@datatables.net</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>$206,850</td> - <td>San Francisco</td> - <td>1314</td> - <td>b.wagner@datatables.net</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>$850,000</td> - <td>San Francisco</td> - <td>2947</td> - <td>f.green@datatables.net</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>$163,000</td> - <td>Tokyo</td> - <td>8899</td> - <td>s.itou@datatables.net</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>$95,400</td> - <td>Sidney</td> - <td>2769</td> - <td>m.house@datatables.net</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>$114,500</td> - <td>London</td> - <td>6832</td> - <td>s.burks@datatables.net</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>$145,000</td> - <td>London</td> - <td>3606</td> - <td>p.bartlett@datatables.net</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>$235,500</td> - <td>San Francisco</td> - <td>2860</td> - <td>g.cortez@datatables.net</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>$324,050</td> - <td>Edinburgh</td> - <td>8240</td> - <td>m.mccray@datatables.net</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>$85,675</td> - <td>San Francisco</td> - <td>5384</td> - <td>u.butler@datatables.net</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>$164,500</td> - <td>San Francisco</td> - <td>7031</td> - <td>h.hatfield@datatables.net</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>$109,850</td> - <td>San Francisco</td> - <td>6318</td> - <td>h.fuentes@datatables.net</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>$452,500</td> - <td>San Francisco</td> - <td>9422</td> - <td>v.harrell@datatables.net</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>$136,200</td> - <td>London</td> - <td>7580</td> - <td>t.mooney@datatables.net</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>$645,750</td> - <td>New York</td> - <td>1042</td> - <td>j.bradshaw@datatables.net</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>$234,500</td> - <td>Singapore</td> - <td>2120</td> - <td>o.liang@datatables.net</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>$163,500</td> - <td>London</td> - <td>6222</td> - <td>b.nash@datatables.net</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>$139,575</td> - <td>Tokyo</td> - <td>9383</td> - <td>s.yamamoto@datatables.net</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>$98,540</td> - <td>New York</td> - <td>8327</td> - <td>t.walton@datatables.net</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>$87,500</td> - <td>San Francisco</td> - <td>2927</td> - <td>f.camacho@datatables.net</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>$138,575</td> - <td>Singapore</td> - <td>8352</td> - <td>s.baldwin@datatables.net</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>$125,250</td> - <td>New York</td> - <td>7439</td> - <td>z.frank@datatables.net</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>$115,000</td> - <td>San Francisco</td> - <td>4389</td> - <td>z.serrano@datatables.net</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>$75,650</td> - <td>Edinburgh</td> - <td>3431</td> - <td>j.acosta@datatables.net</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>$145,600</td> - <td>New York</td> - <td>3990</td> - <td>c.stevens@datatables.net</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>$356,250</td> - <td>London</td> - <td>1016</td> - <td>h.butler@datatables.net</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>$103,500</td> - <td>London</td> - <td>6733</td> - <td>l.greer@datatables.net</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>$86,500</td> - <td>San Francisco</td> - <td>8196</td> - <td>j.alexander@datatables.net</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>$183,000</td> - <td>Edinburgh</td> - <td>6373</td> - <td>s.decker@datatables.net</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>$183,000</td> - <td>Singapore</td> - <td>5384</td> - <td>m.bruce@datatables.net</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>$112,000</td> - <td>New York</td> - <td>4226</td> - <td>d.snider@datatables.net</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - // jQuery update a column title from the demo table to contain a long description - // You would not need to do this in your own code. - $('#example thead tr:eq(0) th:eq(2)').html(&quot;This is a really long column title!&quot;); - - // Wrap the colspan'ing header cells with a span so they can be positioned - // absolutely - filling the available space, and no more. - $('#example thead th[colspan]').wrapInner( '&lt;span/&gt;' ).append( '&amp;nbsp;' ); - - // Standard initialisation - $('#example').DataTable( { - responsive: true, - paging: false - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../../media/js/jquery.js">../../../../media/js/jquery.js</a></li> - <li><a href="../../../../media/js/jquery.dataTables.js">../../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../../js/dataTables.responsive.js">../../js/dataTables.responsive.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css">th { - position: relative; - min-height: 41px; - } - span { - display: block; - position: absolute; - left: 0; - right: 0; - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - }</code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../../media/css/jquery.dataTables.css">../../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../../css/dataTables.responsive.css">../../css/dataTables.responsive.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="../initialisation/index.html">Basic initialisation</a></h3> - <ul class="toc"> - <li><a href="../initialisation/className.html">Class name</a></li> - <li><a href="../initialisation/option.html">Configuration option</a></li> - <li><a href="../initialisation/new.html">`new` constructor</a></li> - <li><a href="../initialisation/ajax.html">Ajax data</a></li> - <li><a href="../initialisation/default.html">Default initialisation</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../styling/index.html">Styling</a></h3> - <ul class="toc"> - <li><a href="../styling/bootstrap.html">Bootstrap styling</a></li> - <li><a href="../styling/foundation.html">Foundation styling</a></li> - <li><a href="../styling/scrolling.html">Vertical scrolling</a></li> - <li><a href="../styling/compact.html">Compact styling</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="./index.html">Display control</a></h3> - <ul class="toc active"> - <li><a href="./auto.html">Automatic column hiding</a></li> - <li><a href="./classes.html">Class control</a></li> - <li><a href="./init-classes.html">Assigned class control</a></li> - <li><a href="./fixedHeader.html">With FixedHeader</a></li> - <li class="active"><a href="./complexHeader.html">Complex headers (rowspan / colspan)</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../child-rows/index.html">Child rows</a></h3> - <ul class="toc"> - <li><a href="../child-rows/disable-child-rows.html">Disable child rows</a></li> - <li><a href="../child-rows/column-control.html">Column controlled child rows</a></li> - <li><a href="../child-rows/right-column.html">Column control - right</a></li> - <li><a href="../child-rows/whole-row-control.html">Whole row child row control</a></li> - <li><a href="../child-rows/custom-renderer.html">Custom child row renderer</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/Responsive/examples/display-control/fixedHeader.html b/assets/plugins/datatables/extensions/Responsive/examples/display-control/fixedHeader.html deleted file mode 100644 index fbf57a52..00000000 --- a/assets/plugins/datatables/extensions/Responsive/examples/display-control/fixedHeader.html +++ /dev/null @@ -1,825 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>Responsive example - With FixedHeader</title> - <link rel="stylesheet" type="text/css" href="../../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../../css/dataTables.responsive.css"> - <link rel="stylesheet" type="text/css" href="../../../FixedHeader/css/dataTables.fixedHeader.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - div.container { max-width: 1200px } - - </style> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../../js/dataTables.responsive.js"></script> - <script type="text/javascript" language="javascript" src="../../../FixedHeader/js/dataTables.fixedHeader.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - - -$(document).ready(function() { - var table = $('#example').DataTable( { - responsive: true, - paging: false - } ); - - new $.fn.dataTable.FixedHeader( table ); -} ); - - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>Responsive example <span>With FixedHeader</span></h1> - - <div class="info"> - <p>This example shows Responsive being used with the DataTables <a href="http://datatables.net/extensions/fixedheader">FixedHeader</a> extension. FixedHeader will - lock a table's header to the top of the table, ensuring that the user always knows what each column relates to.</p> - </div> - - <table id="example" class="display nowrap" cellspacing="0" width="100%"> - <thead> - <tr> - <th>First name</th> - <th>Last name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - <th>Extn.</th> - <th>E-mail</th> - </tr> - </thead> - - <tbody> - <tr> - <td>Tiger</td> - <td>Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - <td>5421</td> - <td>t.nixon@datatables.net</td> - </tr> - <tr> - <td>Garrett</td> - <td>Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - <td>8422</td> - <td>g.winters@datatables.net</td> - </tr> - <tr> - <td>Ashton</td> - <td>Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - <td>1562</td> - <td>a.cox@datatables.net</td> - </tr> - <tr> - <td>Cedric</td> - <td>Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - <td>6224</td> - <td>c.kelly@datatables.net</td> - </tr> - <tr> - <td>Airi</td> - <td>Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - <td>5407</td> - <td>a.satou@datatables.net</td> - </tr> - <tr> - <td>Brielle</td> - <td>Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - <td>4804</td> - <td>b.williamson@datatables.net</td> - </tr> - <tr> - <td>Herrod</td> - <td>Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - <td>9608</td> - <td>h.chandler@datatables.net</td> - </tr> - <tr> - <td>Rhona</td> - <td>Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - <td>6200</td> - <td>r.davidson@datatables.net</td> - </tr> - <tr> - <td>Colleen</td> - <td>Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - <td>2360</td> - <td>c.hurst@datatables.net</td> - </tr> - <tr> - <td>Sonya</td> - <td>Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - <td>1667</td> - <td>s.frost@datatables.net</td> - </tr> - <tr> - <td>Jena</td> - <td>Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - <td>3814</td> - <td>j.gaines@datatables.net</td> - </tr> - <tr> - <td>Quinn</td> - <td>Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - <td>9497</td> - <td>q.flynn@datatables.net</td> - </tr> - <tr> - <td>Charde</td> - <td>Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - <td>6741</td> - <td>c.marshall@datatables.net</td> - </tr> - <tr> - <td>Haley</td> - <td>Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - <td>3597</td> - <td>h.kennedy@datatables.net</td> - </tr> - <tr> - <td>Tatyana</td> - <td>Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - <td>1965</td> - <td>t.fitzpatrick@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - <td>1581</td> - <td>m.silva@datatables.net</td> - </tr> - <tr> - <td>Paul</td> - <td>Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - <td>3059</td> - <td>p.byrd@datatables.net</td> - </tr> - <tr> - <td>Gloria</td> - <td>Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - <td>1721</td> - <td>g.little@datatables.net</td> - </tr> - <tr> - <td>Bradley</td> - <td>Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - <td>2558</td> - <td>b.greer@datatables.net</td> - </tr> - <tr> - <td>Dai</td> - <td>Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - <td>2290</td> - <td>d.rios@datatables.net</td> - </tr> - <tr> - <td>Jenette</td> - <td>Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - <td>1937</td> - <td>j.caldwell@datatables.net</td> - </tr> - <tr> - <td>Yuri</td> - <td>Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - <td>6154</td> - <td>y.berry@datatables.net</td> - </tr> - <tr> - <td>Caesar</td> - <td>Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - <td>8330</td> - <td>c.vance@datatables.net</td> - </tr> - <tr> - <td>Doris</td> - <td>Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - <td>3023</td> - <td>d.wilder@datatables.net</td> - </tr> - <tr> - <td>Angelica</td> - <td>Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - <td>5797</td> - <td>a.ramos@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - <td>8822</td> - <td>g.joyce@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - <td>9239</td> - <td>j.chang@datatables.net</td> - </tr> - <tr> - <td>Brenden</td> - <td>Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - <td>1314</td> - <td>b.wagner@datatables.net</td> - </tr> - <tr> - <td>Fiona</td> - <td>Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - <td>2947</td> - <td>f.green@datatables.net</td> - </tr> - <tr> - <td>Shou</td> - <td>Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - <td>8899</td> - <td>s.itou@datatables.net</td> - </tr> - <tr> - <td>Michelle</td> - <td>House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - <td>2769</td> - <td>m.house@datatables.net</td> - </tr> - <tr> - <td>Suki</td> - <td>Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - <td>6832</td> - <td>s.burks@datatables.net</td> - </tr> - <tr> - <td>Prescott</td> - <td>Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - <td>3606</td> - <td>p.bartlett@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - <td>2860</td> - <td>g.cortez@datatables.net</td> - </tr> - <tr> - <td>Martena</td> - <td>Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - <td>8240</td> - <td>m.mccray@datatables.net</td> - </tr> - <tr> - <td>Unity</td> - <td>Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - <td>5384</td> - <td>u.butler@datatables.net</td> - </tr> - <tr> - <td>Howard</td> - <td>Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - <td>7031</td> - <td>h.hatfield@datatables.net</td> - </tr> - <tr> - <td>Hope</td> - <td>Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - <td>6318</td> - <td>h.fuentes@datatables.net</td> - </tr> - <tr> - <td>Vivian</td> - <td>Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - <td>9422</td> - <td>v.harrell@datatables.net</td> - </tr> - <tr> - <td>Timothy</td> - <td>Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - <td>7580</td> - <td>t.mooney@datatables.net</td> - </tr> - <tr> - <td>Jackson</td> - <td>Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - <td>1042</td> - <td>j.bradshaw@datatables.net</td> - </tr> - <tr> - <td>Olivia</td> - <td>Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - <td>2120</td> - <td>o.liang@datatables.net</td> - </tr> - <tr> - <td>Bruno</td> - <td>Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - <td>6222</td> - <td>b.nash@datatables.net</td> - </tr> - <tr> - <td>Sakura</td> - <td>Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - <td>9383</td> - <td>s.yamamoto@datatables.net</td> - </tr> - <tr> - <td>Thor</td> - <td>Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - <td>8327</td> - <td>t.walton@datatables.net</td> - </tr> - <tr> - <td>Finn</td> - <td>Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - <td>2927</td> - <td>f.camacho@datatables.net</td> - </tr> - <tr> - <td>Serge</td> - <td>Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - <td>8352</td> - <td>s.baldwin@datatables.net</td> - </tr> - <tr> - <td>Zenaida</td> - <td>Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - <td>7439</td> - <td>z.frank@datatables.net</td> - </tr> - <tr> - <td>Zorita</td> - <td>Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - <td>4389</td> - <td>z.serrano@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - <td>3431</td> - <td>j.acosta@datatables.net</td> - </tr> - <tr> - <td>Cara</td> - <td>Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - <td>3990</td> - <td>c.stevens@datatables.net</td> - </tr> - <tr> - <td>Hermione</td> - <td>Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - <td>1016</td> - <td>h.butler@datatables.net</td> - </tr> - <tr> - <td>Lael</td> - <td>Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - <td>6733</td> - <td>l.greer@datatables.net</td> - </tr> - <tr> - <td>Jonas</td> - <td>Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - <td>8196</td> - <td>j.alexander@datatables.net</td> - </tr> - <tr> - <td>Shad</td> - <td>Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - <td>6373</td> - <td>s.decker@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - <td>5384</td> - <td>m.bruce@datatables.net</td> - </tr> - <tr> - <td>Donna</td> - <td>Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - <td>4226</td> - <td>d.snider@datatables.net</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - var table = $('#example').DataTable( { - responsive: true, - paging: false - } ); - - new $.fn.dataTable.FixedHeader( table ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../../media/js/jquery.js">../../../../media/js/jquery.js</a></li> - <li><a href="../../../../media/js/jquery.dataTables.js">../../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../../js/dataTables.responsive.js">../../js/dataTables.responsive.js</a></li> - <li><a href="../../../FixedHeader/js/dataTables.fixedHeader.js">../../../FixedHeader/js/dataTables.fixedHeader.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css">div.container { max-width: 1200px }</code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../../media/css/jquery.dataTables.css">../../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../../css/dataTables.responsive.css">../../css/dataTables.responsive.css</a></li> - <li><a href="../../../FixedHeader/css/dataTables.fixedHeader.css">../../../FixedHeader/css/dataTables.fixedHeader.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="../initialisation/index.html">Basic initialisation</a></h3> - <ul class="toc"> - <li><a href="../initialisation/className.html">Class name</a></li> - <li><a href="../initialisation/option.html">Configuration option</a></li> - <li><a href="../initialisation/new.html">`new` constructor</a></li> - <li><a href="../initialisation/ajax.html">Ajax data</a></li> - <li><a href="../initialisation/default.html">Default initialisation</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../styling/index.html">Styling</a></h3> - <ul class="toc"> - <li><a href="../styling/bootstrap.html">Bootstrap styling</a></li> - <li><a href="../styling/foundation.html">Foundation styling</a></li> - <li><a href="../styling/scrolling.html">Vertical scrolling</a></li> - <li><a href="../styling/compact.html">Compact styling</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="./index.html">Display control</a></h3> - <ul class="toc active"> - <li><a href="./auto.html">Automatic column hiding</a></li> - <li><a href="./classes.html">Class control</a></li> - <li><a href="./init-classes.html">Assigned class control</a></li> - <li class="active"><a href="./fixedHeader.html">With FixedHeader</a></li> - <li><a href="./complexHeader.html">Complex headers (rowspan / colspan)</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../child-rows/index.html">Child rows</a></h3> - <ul class="toc"> - <li><a href="../child-rows/disable-child-rows.html">Disable child rows</a></li> - <li><a href="../child-rows/column-control.html">Column controlled child rows</a></li> - <li><a href="../child-rows/right-column.html">Column control - right</a></li> - <li><a href="../child-rows/whole-row-control.html">Whole row child row control</a></li> - <li><a href="../child-rows/custom-renderer.html">Custom child row renderer</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/Responsive/examples/display-control/index.html b/assets/plugins/datatables/extensions/Responsive/examples/display-control/index.html deleted file mode 100644 index 3dc1c472..00000000 --- a/assets/plugins/datatables/extensions/Responsive/examples/display-control/index.html +++ /dev/null @@ -1,65 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css"> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script> - - <title>Responsive examples - Display control</title> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>Responsive example <span>Display control</span></h1> - - <div class="info"> - <p>Responsive has two basic modes of operation for controlling the visibility of columns at different display sizes. These two modes can be using either separately - or together:</p> - - <ul class="markdown"> - <li>Manually assigned class names for breakpoints - Assign a column a class name to tell Responsive which breakpoint(s) to show it in.</li> - <li>Automatically - for columns without a breakpoint class name, it will be automatically removed if there is no room available on screen to show it. Columns - are removed from the right, moving left.</li> - </ul> - - <p>This section explores these two options.</p> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Display control</a></h3> - <ul class="toc"> - <li><a href="./auto.html">Automatic column hiding</a></li> - <li><a href="./classes.html">Class control</a></li> - <li><a href="./init-classes.html">Assigned class control</a></li> - <li><a href="./fixedHeader.html">With FixedHeader</a></li> - <li><a href="./complexHeader.html">Complex headers (rowspan / colspan)</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/Responsive/examples/display-control/init-classes.html b/assets/plugins/datatables/extensions/Responsive/examples/display-control/init-classes.html deleted file mode 100644 index 2524e421..00000000 --- a/assets/plugins/datatables/extensions/Responsive/examples/display-control/init-classes.html +++ /dev/null @@ -1,215 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>Responsive example - Assigned class control</title> - <link rel="stylesheet" type="text/css" href="../../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../../css/dataTables.responsive.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - - </style> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../../js/dataTables.responsive.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - - -$(document).ready(function() { - $('#example').DataTable( { - "ajax": "../../../../examples/ajax/data/objects.txt", - "columns": [ - { "data": "name", className: "all" }, - { "data": "position", className: "min-phone-l" }, - { "data": "office", className: "min-tablet" }, - { "data": "age", className: "min-tablet" }, - { "data": "start_date", className: "never" }, - { "data": "salary", className: "desktop" }, - { "data": "extn", className: "none" } - ] - } ); -} ); - - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>Responsive example <span>Assigned class control</span></h1> - - <div class="info"> - <p>This example exactly matches the functionality of the <a href="classes.xml">class control example</a> but in this case the classes are assigned using the - <a href="//datatables.net/reference/option/columns.className"><code class="option" title= - "DataTables initialisation option">columns.className<span>DT</span></code></a> option.</p> - </div> - - <div id="breakpoint"></div> - - <table id="example" class="display responsive" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - <th>Extn.</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - <th>Extn.</th> - </tr> - </tfoot> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').DataTable( { - &quot;ajax&quot;: &quot;../../../../examples/ajax/data/objects.txt&quot;, - &quot;columns&quot;: [ - { &quot;data&quot;: &quot;name&quot;, className: &quot;all&quot; }, - { &quot;data&quot;: &quot;position&quot;, className: &quot;min-phone-l&quot; }, - { &quot;data&quot;: &quot;office&quot;, className: &quot;min-tablet&quot; }, - { &quot;data&quot;: &quot;age&quot;, className: &quot;min-tablet&quot; }, - { &quot;data&quot;: &quot;start_date&quot;, className: &quot;never&quot; }, - { &quot;data&quot;: &quot;salary&quot;, className: &quot;desktop&quot; }, - { &quot;data&quot;: &quot;extn&quot;, className: &quot;none&quot; } - ] - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../../media/js/jquery.js">../../../../media/js/jquery.js</a></li> - <li><a href="../../../../media/js/jquery.dataTables.js">../../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../../js/dataTables.responsive.js">../../js/dataTables.responsive.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../../media/css/jquery.dataTables.css">../../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../../css/dataTables.responsive.css">../../css/dataTables.responsive.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="../initialisation/index.html">Basic initialisation</a></h3> - <ul class="toc"> - <li><a href="../initialisation/className.html">Class name</a></li> - <li><a href="../initialisation/option.html">Configuration option</a></li> - <li><a href="../initialisation/new.html">`new` constructor</a></li> - <li><a href="../initialisation/ajax.html">Ajax data</a></li> - <li><a href="../initialisation/default.html">Default initialisation</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../styling/index.html">Styling</a></h3> - <ul class="toc"> - <li><a href="../styling/bootstrap.html">Bootstrap styling</a></li> - <li><a href="../styling/foundation.html">Foundation styling</a></li> - <li><a href="../styling/scrolling.html">Vertical scrolling</a></li> - <li><a href="../styling/compact.html">Compact styling</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="./index.html">Display control</a></h3> - <ul class="toc active"> - <li><a href="./auto.html">Automatic column hiding</a></li> - <li><a href="./classes.html">Class control</a></li> - <li class="active"><a href="./init-classes.html">Assigned class control</a></li> - <li><a href="./fixedHeader.html">With FixedHeader</a></li> - <li><a href="./complexHeader.html">Complex headers (rowspan / colspan)</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../child-rows/index.html">Child rows</a></h3> - <ul class="toc"> - <li><a href="../child-rows/disable-child-rows.html">Disable child rows</a></li> - <li><a href="../child-rows/column-control.html">Column controlled child rows</a></li> - <li><a href="../child-rows/right-column.html">Column control - right</a></li> - <li><a href="../child-rows/whole-row-control.html">Whole row child row control</a></li> - <li><a href="../child-rows/custom-renderer.html">Custom child row renderer</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/Responsive/examples/index.html b/assets/plugins/datatables/extensions/Responsive/examples/index.html deleted file mode 100644 index bb2cfbc0..00000000 --- a/assets/plugins/datatables/extensions/Responsive/examples/index.html +++ /dev/null @@ -1,86 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - - <title>Responsive examples - Responsive DataTables</title> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>Responsive example <span>Responsive DataTables</span></h1> - - <div class="info"></div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <div class="toc"> - <div class="toc-group"> - <h3><a href="./initialisation/index.html">Basic initialisation</a></h3> - <ul class="toc"> - <li><a href="./initialisation/className.html">Class name</a></li> - <li><a href="./initialisation/option.html">Configuration option</a></li> - <li><a href="./initialisation/new.html">`new` constructor</a></li> - <li><a href="./initialisation/ajax.html">Ajax data</a></li> - <li><a href="./initialisation/default.html">Default initialisation</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="./styling/index.html">Styling</a></h3> - <ul class="toc"> - <li><a href="./styling/bootstrap.html">Bootstrap styling</a></li> - <li><a href="./styling/foundation.html">Foundation styling</a></li> - <li><a href="./styling/scrolling.html">Vertical scrolling</a></li> - <li><a href="./styling/compact.html">Compact styling</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="./display-control/index.html">Display control</a></h3> - <ul class="toc"> - <li><a href="./display-control/auto.html">Automatic column hiding</a></li> - <li><a href="./display-control/classes.html">Class control</a></li> - <li><a href="./display-control/init-classes.html">Assigned class control</a></li> - <li><a href="./display-control/fixedHeader.html">With FixedHeader</a></li> - <li><a href="./display-control/complexHeader.html">Complex headers (rowspan / colspan)</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="./child-rows/index.html">Child rows</a></h3> - <ul class="toc"> - <li><a href="./child-rows/disable-child-rows.html">Disable child rows</a></li> - <li><a href="./child-rows/column-control.html">Column controlled child rows</a></li> - <li><a href="./child-rows/right-column.html">Column control - right</a></li> - <li><a href="./child-rows/whole-row-control.html">Whole row child row control</a></li> - <li><a href="./child-rows/custom-renderer.html">Custom child row renderer</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/Responsive/examples/initialisation/ajax.html b/assets/plugins/datatables/extensions/Responsive/examples/initialisation/ajax.html deleted file mode 100644 index b60ebfc1..00000000 --- a/assets/plugins/datatables/extensions/Responsive/examples/initialisation/ajax.html +++ /dev/null @@ -1,210 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>Responsive example - Ajax data</title> - <link rel="stylesheet" type="text/css" href="../../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../../css/dataTables.responsive.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - div.container { max-width: 1200px } - - </style> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../../js/dataTables.responsive.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - - -$(document).ready(function() { - $('#example').DataTable( { - "ajax": "../../../../examples/ajax/data/objects.txt", - "columns": [ - { "data": "name" }, - { "data": "position" }, - { "data": "office" }, - { "data": "extn" }, - { "data": "start_date" }, - { "data": "salary" } - ] - } ); -} ); - - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>Responsive example <span>Ajax data</span></h1> - - <div class="info"> - <p>This example shows the Responsive extension working with <a href="//datatables.net/manual/data">Ajax sourced data</a> in the DataTable. Note that no special - initialisation is required. Responsive is enabled by adding the <code class="string" title="String">responsive</code> class to the <code class="tag" title= - "HTML tag">table</code> element.</p> - </div> - - <table id="example" class="display responsive nowrap" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Extn.</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Extn.</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').DataTable( { - &quot;ajax&quot;: &quot;../../../../examples/ajax/data/objects.txt&quot;, - &quot;columns&quot;: [ - { &quot;data&quot;: &quot;name&quot; }, - { &quot;data&quot;: &quot;position&quot; }, - { &quot;data&quot;: &quot;office&quot; }, - { &quot;data&quot;: &quot;extn&quot; }, - { &quot;data&quot;: &quot;start_date&quot; }, - { &quot;data&quot;: &quot;salary&quot; } - ] - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../../media/js/jquery.js">../../../../media/js/jquery.js</a></li> - <li><a href="../../../../media/js/jquery.dataTables.js">../../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../../js/dataTables.responsive.js">../../js/dataTables.responsive.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css">div.container { max-width: 1200px }</code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../../media/css/jquery.dataTables.css">../../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../../css/dataTables.responsive.css">../../css/dataTables.responsive.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Basic initialisation</a></h3> - <ul class="toc active"> - <li><a href="./className.html">Class name</a></li> - <li><a href="./option.html">Configuration option</a></li> - <li><a href="./new.html">`new` constructor</a></li> - <li class="active"><a href="./ajax.html">Ajax data</a></li> - <li><a href="./default.html">Default initialisation</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../styling/index.html">Styling</a></h3> - <ul class="toc"> - <li><a href="../styling/bootstrap.html">Bootstrap styling</a></li> - <li><a href="../styling/foundation.html">Foundation styling</a></li> - <li><a href="../styling/scrolling.html">Vertical scrolling</a></li> - <li><a href="../styling/compact.html">Compact styling</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../display-control/index.html">Display control</a></h3> - <ul class="toc"> - <li><a href="../display-control/auto.html">Automatic column hiding</a></li> - <li><a href="../display-control/classes.html">Class control</a></li> - <li><a href="../display-control/init-classes.html">Assigned class control</a></li> - <li><a href="../display-control/fixedHeader.html">With FixedHeader</a></li> - <li><a href="../display-control/complexHeader.html">Complex headers (rowspan / colspan)</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../child-rows/index.html">Child rows</a></h3> - <ul class="toc"> - <li><a href="../child-rows/disable-child-rows.html">Disable child rows</a></li> - <li><a href="../child-rows/column-control.html">Column controlled child rows</a></li> - <li><a href="../child-rows/right-column.html">Column control - right</a></li> - <li><a href="../child-rows/whole-row-control.html">Whole row child row control</a></li> - <li><a href="../child-rows/custom-renderer.html">Custom child row renderer</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/Responsive/examples/initialisation/className.html b/assets/plugins/datatables/extensions/Responsive/examples/initialisation/className.html deleted file mode 100644 index 813b7aff..00000000 --- a/assets/plugins/datatables/extensions/Responsive/examples/initialisation/className.html +++ /dev/null @@ -1,812 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>Responsive example - Class name</title> - <link rel="stylesheet" type="text/css" href="../../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../../css/dataTables.responsive.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../../js/dataTables.responsive.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - - -$(document).ready(function() { - $('#example').DataTable(); -} ); - - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>Responsive example <span>Class name</span></h1> - - <div class="info"> - <p>The easiest way to initialise the Responsive extension for DataTables is simply to add the class <code class="string" title="String">responsive</code> to the - table's class name. When the DataTable is initialised the Responsive extension will automatically enable itself on these tables.</p> - - <p>The may also use the class <code>dt-responsive</code> to perform the same action, since <code>responsive</code> may be used in your stylesheet, or may have some - other meaning in a CSS framework being used (for example Bootstrap).</p> - </div> - - <table id="example" class="display responsive nowrap" cellspacing="0" width="100%"> - <thead> - <tr> - <th>First name</th> - <th>Last name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - <th>Extn.</th> - <th>E-mail</th> - </tr> - </thead> - - <tbody> - <tr> - <td>Tiger</td> - <td>Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - <td>5421</td> - <td>t.nixon@datatables.net</td> - </tr> - <tr> - <td>Garrett</td> - <td>Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - <td>8422</td> - <td>g.winters@datatables.net</td> - </tr> - <tr> - <td>Ashton</td> - <td>Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - <td>1562</td> - <td>a.cox@datatables.net</td> - </tr> - <tr> - <td>Cedric</td> - <td>Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - <td>6224</td> - <td>c.kelly@datatables.net</td> - </tr> - <tr> - <td>Airi</td> - <td>Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - <td>5407</td> - <td>a.satou@datatables.net</td> - </tr> - <tr> - <td>Brielle</td> - <td>Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - <td>4804</td> - <td>b.williamson@datatables.net</td> - </tr> - <tr> - <td>Herrod</td> - <td>Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - <td>9608</td> - <td>h.chandler@datatables.net</td> - </tr> - <tr> - <td>Rhona</td> - <td>Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - <td>6200</td> - <td>r.davidson@datatables.net</td> - </tr> - <tr> - <td>Colleen</td> - <td>Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - <td>2360</td> - <td>c.hurst@datatables.net</td> - </tr> - <tr> - <td>Sonya</td> - <td>Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - <td>1667</td> - <td>s.frost@datatables.net</td> - </tr> - <tr> - <td>Jena</td> - <td>Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - <td>3814</td> - <td>j.gaines@datatables.net</td> - </tr> - <tr> - <td>Quinn</td> - <td>Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - <td>9497</td> - <td>q.flynn@datatables.net</td> - </tr> - <tr> - <td>Charde</td> - <td>Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - <td>6741</td> - <td>c.marshall@datatables.net</td> - </tr> - <tr> - <td>Haley</td> - <td>Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - <td>3597</td> - <td>h.kennedy@datatables.net</td> - </tr> - <tr> - <td>Tatyana</td> - <td>Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - <td>1965</td> - <td>t.fitzpatrick@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - <td>1581</td> - <td>m.silva@datatables.net</td> - </tr> - <tr> - <td>Paul</td> - <td>Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - <td>3059</td> - <td>p.byrd@datatables.net</td> - </tr> - <tr> - <td>Gloria</td> - <td>Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - <td>1721</td> - <td>g.little@datatables.net</td> - </tr> - <tr> - <td>Bradley</td> - <td>Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - <td>2558</td> - <td>b.greer@datatables.net</td> - </tr> - <tr> - <td>Dai</td> - <td>Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - <td>2290</td> - <td>d.rios@datatables.net</td> - </tr> - <tr> - <td>Jenette</td> - <td>Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - <td>1937</td> - <td>j.caldwell@datatables.net</td> - </tr> - <tr> - <td>Yuri</td> - <td>Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - <td>6154</td> - <td>y.berry@datatables.net</td> - </tr> - <tr> - <td>Caesar</td> - <td>Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - <td>8330</td> - <td>c.vance@datatables.net</td> - </tr> - <tr> - <td>Doris</td> - <td>Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - <td>3023</td> - <td>d.wilder@datatables.net</td> - </tr> - <tr> - <td>Angelica</td> - <td>Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - <td>5797</td> - <td>a.ramos@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - <td>8822</td> - <td>g.joyce@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - <td>9239</td> - <td>j.chang@datatables.net</td> - </tr> - <tr> - <td>Brenden</td> - <td>Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - <td>1314</td> - <td>b.wagner@datatables.net</td> - </tr> - <tr> - <td>Fiona</td> - <td>Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - <td>2947</td> - <td>f.green@datatables.net</td> - </tr> - <tr> - <td>Shou</td> - <td>Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - <td>8899</td> - <td>s.itou@datatables.net</td> - </tr> - <tr> - <td>Michelle</td> - <td>House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - <td>2769</td> - <td>m.house@datatables.net</td> - </tr> - <tr> - <td>Suki</td> - <td>Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - <td>6832</td> - <td>s.burks@datatables.net</td> - </tr> - <tr> - <td>Prescott</td> - <td>Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - <td>3606</td> - <td>p.bartlett@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - <td>2860</td> - <td>g.cortez@datatables.net</td> - </tr> - <tr> - <td>Martena</td> - <td>Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - <td>8240</td> - <td>m.mccray@datatables.net</td> - </tr> - <tr> - <td>Unity</td> - <td>Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - <td>5384</td> - <td>u.butler@datatables.net</td> - </tr> - <tr> - <td>Howard</td> - <td>Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - <td>7031</td> - <td>h.hatfield@datatables.net</td> - </tr> - <tr> - <td>Hope</td> - <td>Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - <td>6318</td> - <td>h.fuentes@datatables.net</td> - </tr> - <tr> - <td>Vivian</td> - <td>Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - <td>9422</td> - <td>v.harrell@datatables.net</td> - </tr> - <tr> - <td>Timothy</td> - <td>Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - <td>7580</td> - <td>t.mooney@datatables.net</td> - </tr> - <tr> - <td>Jackson</td> - <td>Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - <td>1042</td> - <td>j.bradshaw@datatables.net</td> - </tr> - <tr> - <td>Olivia</td> - <td>Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - <td>2120</td> - <td>o.liang@datatables.net</td> - </tr> - <tr> - <td>Bruno</td> - <td>Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - <td>6222</td> - <td>b.nash@datatables.net</td> - </tr> - <tr> - <td>Sakura</td> - <td>Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - <td>9383</td> - <td>s.yamamoto@datatables.net</td> - </tr> - <tr> - <td>Thor</td> - <td>Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - <td>8327</td> - <td>t.walton@datatables.net</td> - </tr> - <tr> - <td>Finn</td> - <td>Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - <td>2927</td> - <td>f.camacho@datatables.net</td> - </tr> - <tr> - <td>Serge</td> - <td>Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - <td>8352</td> - <td>s.baldwin@datatables.net</td> - </tr> - <tr> - <td>Zenaida</td> - <td>Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - <td>7439</td> - <td>z.frank@datatables.net</td> - </tr> - <tr> - <td>Zorita</td> - <td>Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - <td>4389</td> - <td>z.serrano@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - <td>3431</td> - <td>j.acosta@datatables.net</td> - </tr> - <tr> - <td>Cara</td> - <td>Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - <td>3990</td> - <td>c.stevens@datatables.net</td> - </tr> - <tr> - <td>Hermione</td> - <td>Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - <td>1016</td> - <td>h.butler@datatables.net</td> - </tr> - <tr> - <td>Lael</td> - <td>Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - <td>6733</td> - <td>l.greer@datatables.net</td> - </tr> - <tr> - <td>Jonas</td> - <td>Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - <td>8196</td> - <td>j.alexander@datatables.net</td> - </tr> - <tr> - <td>Shad</td> - <td>Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - <td>6373</td> - <td>s.decker@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - <td>5384</td> - <td>m.bruce@datatables.net</td> - </tr> - <tr> - <td>Donna</td> - <td>Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - <td>4226</td> - <td>d.snider@datatables.net</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').DataTable(); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../../media/js/jquery.js">../../../../media/js/jquery.js</a></li> - <li><a href="../../../../media/js/jquery.dataTables.js">../../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../../js/dataTables.responsive.js">../../js/dataTables.responsive.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../../media/css/jquery.dataTables.css">../../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../../css/dataTables.responsive.css">../../css/dataTables.responsive.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Basic initialisation</a></h3> - <ul class="toc active"> - <li class="active"><a href="./className.html">Class name</a></li> - <li><a href="./option.html">Configuration option</a></li> - <li><a href="./new.html">`new` constructor</a></li> - <li><a href="./ajax.html">Ajax data</a></li> - <li><a href="./default.html">Default initialisation</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../styling/index.html">Styling</a></h3> - <ul class="toc"> - <li><a href="../styling/bootstrap.html">Bootstrap styling</a></li> - <li><a href="../styling/foundation.html">Foundation styling</a></li> - <li><a href="../styling/scrolling.html">Vertical scrolling</a></li> - <li><a href="../styling/compact.html">Compact styling</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../display-control/index.html">Display control</a></h3> - <ul class="toc"> - <li><a href="../display-control/auto.html">Automatic column hiding</a></li> - <li><a href="../display-control/classes.html">Class control</a></li> - <li><a href="../display-control/init-classes.html">Assigned class control</a></li> - <li><a href="../display-control/fixedHeader.html">With FixedHeader</a></li> - <li><a href="../display-control/complexHeader.html">Complex headers (rowspan / colspan)</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../child-rows/index.html">Child rows</a></h3> - <ul class="toc"> - <li><a href="../child-rows/disable-child-rows.html">Disable child rows</a></li> - <li><a href="../child-rows/column-control.html">Column controlled child rows</a></li> - <li><a href="../child-rows/right-column.html">Column control - right</a></li> - <li><a href="../child-rows/whole-row-control.html">Whole row child row control</a></li> - <li><a href="../child-rows/custom-renderer.html">Custom child row renderer</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/Responsive/examples/initialisation/default.html b/assets/plugins/datatables/extensions/Responsive/examples/initialisation/default.html deleted file mode 100644 index f196839d..00000000 --- a/assets/plugins/datatables/extensions/Responsive/examples/initialisation/default.html +++ /dev/null @@ -1,822 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>Responsive example - Default initialisation</title> - <link rel="stylesheet" type="text/css" href="../../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../../css/dataTables.responsive.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../../js/dataTables.responsive.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - - -$.extend( $.fn.dataTable.defaults, { - responsive: true -} ); - -$(document).ready(function() { - $('#example').DataTable(); -} ); - - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>Responsive example <span>Default initialisation</span></h1> - - <div class="info"> - <p>It can often be useful to be able to set a default value for DataTables' initialisation options, providing a common starting point for initialisation when - working with multiple tables over many pages or even just on a single page. DataTables provides that ability through the <code>$.fn.dataTable.defaults</code> - object which can have any of the <a href="//datatables.net/reference/option">initialisation options</a> set.</p> - - <p>Extending that ability, Responsive can also be set to initialise by default, as shown in this example thorugh the - <code>$.fn.dataTable.defaults.responsive</code> property. Extending that, <a href="//datatables.net/extensions/responsive/reference/option/">all of the Responsive - options</a> can also be set using this configuration option (i.e. use <code>responsive</code> as an object).</p> - </div> - - <table id="example" class="display nowrap" cellspacing="0" width="100%"> - <thead> - <tr> - <th>First name</th> - <th>Last name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - <th>Extn.</th> - <th>E-mail</th> - </tr> - </thead> - - <tbody> - <tr> - <td>Tiger</td> - <td>Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - <td>5421</td> - <td>t.nixon@datatables.net</td> - </tr> - <tr> - <td>Garrett</td> - <td>Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - <td>8422</td> - <td>g.winters@datatables.net</td> - </tr> - <tr> - <td>Ashton</td> - <td>Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - <td>1562</td> - <td>a.cox@datatables.net</td> - </tr> - <tr> - <td>Cedric</td> - <td>Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - <td>6224</td> - <td>c.kelly@datatables.net</td> - </tr> - <tr> - <td>Airi</td> - <td>Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - <td>5407</td> - <td>a.satou@datatables.net</td> - </tr> - <tr> - <td>Brielle</td> - <td>Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - <td>4804</td> - <td>b.williamson@datatables.net</td> - </tr> - <tr> - <td>Herrod</td> - <td>Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - <td>9608</td> - <td>h.chandler@datatables.net</td> - </tr> - <tr> - <td>Rhona</td> - <td>Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - <td>6200</td> - <td>r.davidson@datatables.net</td> - </tr> - <tr> - <td>Colleen</td> - <td>Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - <td>2360</td> - <td>c.hurst@datatables.net</td> - </tr> - <tr> - <td>Sonya</td> - <td>Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - <td>1667</td> - <td>s.frost@datatables.net</td> - </tr> - <tr> - <td>Jena</td> - <td>Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - <td>3814</td> - <td>j.gaines@datatables.net</td> - </tr> - <tr> - <td>Quinn</td> - <td>Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - <td>9497</td> - <td>q.flynn@datatables.net</td> - </tr> - <tr> - <td>Charde</td> - <td>Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - <td>6741</td> - <td>c.marshall@datatables.net</td> - </tr> - <tr> - <td>Haley</td> - <td>Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - <td>3597</td> - <td>h.kennedy@datatables.net</td> - </tr> - <tr> - <td>Tatyana</td> - <td>Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - <td>1965</td> - <td>t.fitzpatrick@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - <td>1581</td> - <td>m.silva@datatables.net</td> - </tr> - <tr> - <td>Paul</td> - <td>Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - <td>3059</td> - <td>p.byrd@datatables.net</td> - </tr> - <tr> - <td>Gloria</td> - <td>Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - <td>1721</td> - <td>g.little@datatables.net</td> - </tr> - <tr> - <td>Bradley</td> - <td>Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - <td>2558</td> - <td>b.greer@datatables.net</td> - </tr> - <tr> - <td>Dai</td> - <td>Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - <td>2290</td> - <td>d.rios@datatables.net</td> - </tr> - <tr> - <td>Jenette</td> - <td>Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - <td>1937</td> - <td>j.caldwell@datatables.net</td> - </tr> - <tr> - <td>Yuri</td> - <td>Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - <td>6154</td> - <td>y.berry@datatables.net</td> - </tr> - <tr> - <td>Caesar</td> - <td>Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - <td>8330</td> - <td>c.vance@datatables.net</td> - </tr> - <tr> - <td>Doris</td> - <td>Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - <td>3023</td> - <td>d.wilder@datatables.net</td> - </tr> - <tr> - <td>Angelica</td> - <td>Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - <td>5797</td> - <td>a.ramos@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - <td>8822</td> - <td>g.joyce@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - <td>9239</td> - <td>j.chang@datatables.net</td> - </tr> - <tr> - <td>Brenden</td> - <td>Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - <td>1314</td> - <td>b.wagner@datatables.net</td> - </tr> - <tr> - <td>Fiona</td> - <td>Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - <td>2947</td> - <td>f.green@datatables.net</td> - </tr> - <tr> - <td>Shou</td> - <td>Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - <td>8899</td> - <td>s.itou@datatables.net</td> - </tr> - <tr> - <td>Michelle</td> - <td>House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - <td>2769</td> - <td>m.house@datatables.net</td> - </tr> - <tr> - <td>Suki</td> - <td>Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - <td>6832</td> - <td>s.burks@datatables.net</td> - </tr> - <tr> - <td>Prescott</td> - <td>Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - <td>3606</td> - <td>p.bartlett@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - <td>2860</td> - <td>g.cortez@datatables.net</td> - </tr> - <tr> - <td>Martena</td> - <td>Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - <td>8240</td> - <td>m.mccray@datatables.net</td> - </tr> - <tr> - <td>Unity</td> - <td>Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - <td>5384</td> - <td>u.butler@datatables.net</td> - </tr> - <tr> - <td>Howard</td> - <td>Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - <td>7031</td> - <td>h.hatfield@datatables.net</td> - </tr> - <tr> - <td>Hope</td> - <td>Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - <td>6318</td> - <td>h.fuentes@datatables.net</td> - </tr> - <tr> - <td>Vivian</td> - <td>Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - <td>9422</td> - <td>v.harrell@datatables.net</td> - </tr> - <tr> - <td>Timothy</td> - <td>Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - <td>7580</td> - <td>t.mooney@datatables.net</td> - </tr> - <tr> - <td>Jackson</td> - <td>Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - <td>1042</td> - <td>j.bradshaw@datatables.net</td> - </tr> - <tr> - <td>Olivia</td> - <td>Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - <td>2120</td> - <td>o.liang@datatables.net</td> - </tr> - <tr> - <td>Bruno</td> - <td>Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - <td>6222</td> - <td>b.nash@datatables.net</td> - </tr> - <tr> - <td>Sakura</td> - <td>Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - <td>9383</td> - <td>s.yamamoto@datatables.net</td> - </tr> - <tr> - <td>Thor</td> - <td>Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - <td>8327</td> - <td>t.walton@datatables.net</td> - </tr> - <tr> - <td>Finn</td> - <td>Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - <td>2927</td> - <td>f.camacho@datatables.net</td> - </tr> - <tr> - <td>Serge</td> - <td>Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - <td>8352</td> - <td>s.baldwin@datatables.net</td> - </tr> - <tr> - <td>Zenaida</td> - <td>Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - <td>7439</td> - <td>z.frank@datatables.net</td> - </tr> - <tr> - <td>Zorita</td> - <td>Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - <td>4389</td> - <td>z.serrano@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - <td>3431</td> - <td>j.acosta@datatables.net</td> - </tr> - <tr> - <td>Cara</td> - <td>Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - <td>3990</td> - <td>c.stevens@datatables.net</td> - </tr> - <tr> - <td>Hermione</td> - <td>Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - <td>1016</td> - <td>h.butler@datatables.net</td> - </tr> - <tr> - <td>Lael</td> - <td>Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - <td>6733</td> - <td>l.greer@datatables.net</td> - </tr> - <tr> - <td>Jonas</td> - <td>Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - <td>8196</td> - <td>j.alexander@datatables.net</td> - </tr> - <tr> - <td>Shad</td> - <td>Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - <td>6373</td> - <td>s.decker@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - <td>5384</td> - <td>m.bruce@datatables.net</td> - </tr> - <tr> - <td>Donna</td> - <td>Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - <td>4226</td> - <td>d.snider@datatables.net</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$.extend( $.fn.dataTable.defaults, { - responsive: true -} ); - -$(document).ready(function() { - $('#example').DataTable(); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../../media/js/jquery.js">../../../../media/js/jquery.js</a></li> - <li><a href="../../../../media/js/jquery.dataTables.js">../../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../../js/dataTables.responsive.js">../../js/dataTables.responsive.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../../media/css/jquery.dataTables.css">../../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../../css/dataTables.responsive.css">../../css/dataTables.responsive.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Basic initialisation</a></h3> - <ul class="toc active"> - <li><a href="./className.html">Class name</a></li> - <li><a href="./option.html">Configuration option</a></li> - <li><a href="./new.html">`new` constructor</a></li> - <li><a href="./ajax.html">Ajax data</a></li> - <li class="active"><a href="./default.html">Default initialisation</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../styling/index.html">Styling</a></h3> - <ul class="toc"> - <li><a href="../styling/bootstrap.html">Bootstrap styling</a></li> - <li><a href="../styling/foundation.html">Foundation styling</a></li> - <li><a href="../styling/scrolling.html">Vertical scrolling</a></li> - <li><a href="../styling/compact.html">Compact styling</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../display-control/index.html">Display control</a></h3> - <ul class="toc"> - <li><a href="../display-control/auto.html">Automatic column hiding</a></li> - <li><a href="../display-control/classes.html">Class control</a></li> - <li><a href="../display-control/init-classes.html">Assigned class control</a></li> - <li><a href="../display-control/fixedHeader.html">With FixedHeader</a></li> - <li><a href="../display-control/complexHeader.html">Complex headers (rowspan / colspan)</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../child-rows/index.html">Child rows</a></h3> - <ul class="toc"> - <li><a href="../child-rows/disable-child-rows.html">Disable child rows</a></li> - <li><a href="../child-rows/column-control.html">Column controlled child rows</a></li> - <li><a href="../child-rows/right-column.html">Column control - right</a></li> - <li><a href="../child-rows/whole-row-control.html">Whole row child row control</a></li> - <li><a href="../child-rows/custom-renderer.html">Custom child row renderer</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/Responsive/examples/initialisation/index.html b/assets/plugins/datatables/extensions/Responsive/examples/initialisation/index.html deleted file mode 100644 index 8ca0f946..00000000 --- a/assets/plugins/datatables/extensions/Responsive/examples/initialisation/index.html +++ /dev/null @@ -1,65 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css"> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script> - - <title>Responsive examples - Initialisation</title> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>Responsive example <span>Initialisation</span></h1> - - <div class="info"> - <p>Responsive can be run on a DataTable in a number of different ways:</p> - - <ul class="markdown"> - <li>By adding the class <code>responsive</code> or <code>dt-responsive</code> to the <code class="tag" title="HTML tag">table</code></li> - <li>Using the <a href="//datatables.net/extensions/responsive/reference/option/responsive"><code class="option" title= - "Responsive initialisation option">responsive<span>R</span></code></a> option in the DataTables initialisation</li> - <li>Use the <code>$.fn.dataTable.Responsive</code> constructor.</li> - </ul> - - <p>This set of examples demonstrates these initialisation options.</p> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Basic initialisation</a></h3> - <ul class="toc"> - <li><a href="./className.html">Class name</a></li> - <li><a href="./option.html">Configuration option</a></li> - <li><a href="./new.html">`new` constructor</a></li> - <li><a href="./ajax.html">Ajax data</a></li> - <li><a href="./default.html">Default initialisation</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/Responsive/examples/initialisation/new.html b/assets/plugins/datatables/extensions/Responsive/examples/initialisation/new.html deleted file mode 100644 index 07ecd6f9..00000000 --- a/assets/plugins/datatables/extensions/Responsive/examples/initialisation/new.html +++ /dev/null @@ -1,821 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>Responsive example - `new` constructor</title> - <link rel="stylesheet" type="text/css" href="../../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../../css/dataTables.responsive.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - div.container { max-width: 1200px } - - </style> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../../js/dataTables.responsive.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - - -$(document).ready(function() { - var table = $('#example').DataTable(); - - new $.fn.dataTable.Responsive( table ); -} ); - - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>Responsive example <span>`new` constructor</span></h1> - - <div class="info"> - <p>Responsive will automatically detect new DataTable instances being created on a page and initialise itself if it find the <a href= - "//datatables.net/extensions/responsive/reference/option/responsive"><code class="option" title= - "Responsive initialisation option">responsive<span>R</span></code></a> option or <code>responsive</code> class name on the table, as shown in the other - examples.</p> - - <p>The third way of initialising Responsive is manually creating a new instance using the <code>$.fn.dataTable.Responsive</code> class, as shown in this example - (the other two methods are provided using this constructor in a <a href="//datatables.net/reference/event/init"><code class="event" title= - "DataTables event">init<span>DT</span></code></a> event handler!).</p> - </div> - - <table id="example" class="display nowrap" cellspacing="0" width="100%"> - <thead> - <tr> - <th>First name</th> - <th>Last name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - <th>Extn.</th> - <th>E-mail</th> - </tr> - </thead> - - <tbody> - <tr> - <td>Tiger</td> - <td>Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - <td>5421</td> - <td>t.nixon@datatables.net</td> - </tr> - <tr> - <td>Garrett</td> - <td>Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - <td>8422</td> - <td>g.winters@datatables.net</td> - </tr> - <tr> - <td>Ashton</td> - <td>Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - <td>1562</td> - <td>a.cox@datatables.net</td> - </tr> - <tr> - <td>Cedric</td> - <td>Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - <td>6224</td> - <td>c.kelly@datatables.net</td> - </tr> - <tr> - <td>Airi</td> - <td>Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - <td>5407</td> - <td>a.satou@datatables.net</td> - </tr> - <tr> - <td>Brielle</td> - <td>Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - <td>4804</td> - <td>b.williamson@datatables.net</td> - </tr> - <tr> - <td>Herrod</td> - <td>Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - <td>9608</td> - <td>h.chandler@datatables.net</td> - </tr> - <tr> - <td>Rhona</td> - <td>Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - <td>6200</td> - <td>r.davidson@datatables.net</td> - </tr> - <tr> - <td>Colleen</td> - <td>Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - <td>2360</td> - <td>c.hurst@datatables.net</td> - </tr> - <tr> - <td>Sonya</td> - <td>Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - <td>1667</td> - <td>s.frost@datatables.net</td> - </tr> - <tr> - <td>Jena</td> - <td>Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - <td>3814</td> - <td>j.gaines@datatables.net</td> - </tr> - <tr> - <td>Quinn</td> - <td>Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - <td>9497</td> - <td>q.flynn@datatables.net</td> - </tr> - <tr> - <td>Charde</td> - <td>Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - <td>6741</td> - <td>c.marshall@datatables.net</td> - </tr> - <tr> - <td>Haley</td> - <td>Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - <td>3597</td> - <td>h.kennedy@datatables.net</td> - </tr> - <tr> - <td>Tatyana</td> - <td>Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - <td>1965</td> - <td>t.fitzpatrick@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - <td>1581</td> - <td>m.silva@datatables.net</td> - </tr> - <tr> - <td>Paul</td> - <td>Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - <td>3059</td> - <td>p.byrd@datatables.net</td> - </tr> - <tr> - <td>Gloria</td> - <td>Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - <td>1721</td> - <td>g.little@datatables.net</td> - </tr> - <tr> - <td>Bradley</td> - <td>Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - <td>2558</td> - <td>b.greer@datatables.net</td> - </tr> - <tr> - <td>Dai</td> - <td>Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - <td>2290</td> - <td>d.rios@datatables.net</td> - </tr> - <tr> - <td>Jenette</td> - <td>Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - <td>1937</td> - <td>j.caldwell@datatables.net</td> - </tr> - <tr> - <td>Yuri</td> - <td>Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - <td>6154</td> - <td>y.berry@datatables.net</td> - </tr> - <tr> - <td>Caesar</td> - <td>Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - <td>8330</td> - <td>c.vance@datatables.net</td> - </tr> - <tr> - <td>Doris</td> - <td>Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - <td>3023</td> - <td>d.wilder@datatables.net</td> - </tr> - <tr> - <td>Angelica</td> - <td>Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - <td>5797</td> - <td>a.ramos@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - <td>8822</td> - <td>g.joyce@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - <td>9239</td> - <td>j.chang@datatables.net</td> - </tr> - <tr> - <td>Brenden</td> - <td>Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - <td>1314</td> - <td>b.wagner@datatables.net</td> - </tr> - <tr> - <td>Fiona</td> - <td>Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - <td>2947</td> - <td>f.green@datatables.net</td> - </tr> - <tr> - <td>Shou</td> - <td>Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - <td>8899</td> - <td>s.itou@datatables.net</td> - </tr> - <tr> - <td>Michelle</td> - <td>House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - <td>2769</td> - <td>m.house@datatables.net</td> - </tr> - <tr> - <td>Suki</td> - <td>Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - <td>6832</td> - <td>s.burks@datatables.net</td> - </tr> - <tr> - <td>Prescott</td> - <td>Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - <td>3606</td> - <td>p.bartlett@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - <td>2860</td> - <td>g.cortez@datatables.net</td> - </tr> - <tr> - <td>Martena</td> - <td>Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - <td>8240</td> - <td>m.mccray@datatables.net</td> - </tr> - <tr> - <td>Unity</td> - <td>Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - <td>5384</td> - <td>u.butler@datatables.net</td> - </tr> - <tr> - <td>Howard</td> - <td>Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - <td>7031</td> - <td>h.hatfield@datatables.net</td> - </tr> - <tr> - <td>Hope</td> - <td>Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - <td>6318</td> - <td>h.fuentes@datatables.net</td> - </tr> - <tr> - <td>Vivian</td> - <td>Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - <td>9422</td> - <td>v.harrell@datatables.net</td> - </tr> - <tr> - <td>Timothy</td> - <td>Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - <td>7580</td> - <td>t.mooney@datatables.net</td> - </tr> - <tr> - <td>Jackson</td> - <td>Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - <td>1042</td> - <td>j.bradshaw@datatables.net</td> - </tr> - <tr> - <td>Olivia</td> - <td>Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - <td>2120</td> - <td>o.liang@datatables.net</td> - </tr> - <tr> - <td>Bruno</td> - <td>Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - <td>6222</td> - <td>b.nash@datatables.net</td> - </tr> - <tr> - <td>Sakura</td> - <td>Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - <td>9383</td> - <td>s.yamamoto@datatables.net</td> - </tr> - <tr> - <td>Thor</td> - <td>Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - <td>8327</td> - <td>t.walton@datatables.net</td> - </tr> - <tr> - <td>Finn</td> - <td>Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - <td>2927</td> - <td>f.camacho@datatables.net</td> - </tr> - <tr> - <td>Serge</td> - <td>Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - <td>8352</td> - <td>s.baldwin@datatables.net</td> - </tr> - <tr> - <td>Zenaida</td> - <td>Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - <td>7439</td> - <td>z.frank@datatables.net</td> - </tr> - <tr> - <td>Zorita</td> - <td>Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - <td>4389</td> - <td>z.serrano@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - <td>3431</td> - <td>j.acosta@datatables.net</td> - </tr> - <tr> - <td>Cara</td> - <td>Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - <td>3990</td> - <td>c.stevens@datatables.net</td> - </tr> - <tr> - <td>Hermione</td> - <td>Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - <td>1016</td> - <td>h.butler@datatables.net</td> - </tr> - <tr> - <td>Lael</td> - <td>Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - <td>6733</td> - <td>l.greer@datatables.net</td> - </tr> - <tr> - <td>Jonas</td> - <td>Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - <td>8196</td> - <td>j.alexander@datatables.net</td> - </tr> - <tr> - <td>Shad</td> - <td>Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - <td>6373</td> - <td>s.decker@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - <td>5384</td> - <td>m.bruce@datatables.net</td> - </tr> - <tr> - <td>Donna</td> - <td>Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - <td>4226</td> - <td>d.snider@datatables.net</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - var table = $('#example').DataTable(); - - new $.fn.dataTable.Responsive( table ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../../media/js/jquery.js">../../../../media/js/jquery.js</a></li> - <li><a href="../../../../media/js/jquery.dataTables.js">../../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../../js/dataTables.responsive.js">../../js/dataTables.responsive.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css">div.container { max-width: 1200px }</code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../../media/css/jquery.dataTables.css">../../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../../css/dataTables.responsive.css">../../css/dataTables.responsive.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Basic initialisation</a></h3> - <ul class="toc active"> - <li><a href="./className.html">Class name</a></li> - <li><a href="./option.html">Configuration option</a></li> - <li class="active"><a href="./new.html">`new` constructor</a></li> - <li><a href="./ajax.html">Ajax data</a></li> - <li><a href="./default.html">Default initialisation</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../styling/index.html">Styling</a></h3> - <ul class="toc"> - <li><a href="../styling/bootstrap.html">Bootstrap styling</a></li> - <li><a href="../styling/foundation.html">Foundation styling</a></li> - <li><a href="../styling/scrolling.html">Vertical scrolling</a></li> - <li><a href="../styling/compact.html">Compact styling</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../display-control/index.html">Display control</a></h3> - <ul class="toc"> - <li><a href="../display-control/auto.html">Automatic column hiding</a></li> - <li><a href="../display-control/classes.html">Class control</a></li> - <li><a href="../display-control/init-classes.html">Assigned class control</a></li> - <li><a href="../display-control/fixedHeader.html">With FixedHeader</a></li> - <li><a href="../display-control/complexHeader.html">Complex headers (rowspan / colspan)</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../child-rows/index.html">Child rows</a></h3> - <ul class="toc"> - <li><a href="../child-rows/disable-child-rows.html">Disable child rows</a></li> - <li><a href="../child-rows/column-control.html">Column controlled child rows</a></li> - <li><a href="../child-rows/right-column.html">Column control - right</a></li> - <li><a href="../child-rows/whole-row-control.html">Whole row child row control</a></li> - <li><a href="../child-rows/custom-renderer.html">Custom child row renderer</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/Responsive/examples/initialisation/option.html b/assets/plugins/datatables/extensions/Responsive/examples/initialisation/option.html deleted file mode 100644 index 70785d85..00000000 --- a/assets/plugins/datatables/extensions/Responsive/examples/initialisation/option.html +++ /dev/null @@ -1,820 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>Responsive example - Configuration option</title> - <link rel="stylesheet" type="text/css" href="../../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../../css/dataTables.responsive.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - div.container { max-width: 1200px } - - </style> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../../js/dataTables.responsive.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - - -$(document).ready(function() { - $('#example').DataTable( { - responsive: true - } ); -} ); - - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>Responsive example <span>Configuration option</span></h1> - - <div class="info"> - <p>The Responsive extension for DataTables can be applied to a DataTable in one of two ways; with a specific class name on the table, or using the DataTables - initialisation options. This method shows the latter, with the <a href="//datatables.net/extensions/responsive/reference/option/responsive"><code class="option" - title="Responsive initialisation option">responsive<span>R</span></code></a> option being set to the boolean value <code>true</code>.</p> - - <p>The <a href="//datatables.net/extensions/responsive/reference/option/responsive"><code class="option" title= - "Responsive initialisation option">responsive<span>R</span></code></a> option can be given as a boolean value, or as an object with configuration options. If as a - boolean, as in this case, the default options are used.</p> - </div> - - <table id="example" class="display nowrap" cellspacing="0" width="100%"> - <thead> - <tr> - <th>First name</th> - <th>Last name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - <th>Extn.</th> - <th>E-mail</th> - </tr> - </thead> - - <tbody> - <tr> - <td>Tiger</td> - <td>Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - <td>5421</td> - <td>t.nixon@datatables.net</td> - </tr> - <tr> - <td>Garrett</td> - <td>Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - <td>8422</td> - <td>g.winters@datatables.net</td> - </tr> - <tr> - <td>Ashton</td> - <td>Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - <td>1562</td> - <td>a.cox@datatables.net</td> - </tr> - <tr> - <td>Cedric</td> - <td>Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - <td>6224</td> - <td>c.kelly@datatables.net</td> - </tr> - <tr> - <td>Airi</td> - <td>Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - <td>5407</td> - <td>a.satou@datatables.net</td> - </tr> - <tr> - <td>Brielle</td> - <td>Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - <td>4804</td> - <td>b.williamson@datatables.net</td> - </tr> - <tr> - <td>Herrod</td> - <td>Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - <td>9608</td> - <td>h.chandler@datatables.net</td> - </tr> - <tr> - <td>Rhona</td> - <td>Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - <td>6200</td> - <td>r.davidson@datatables.net</td> - </tr> - <tr> - <td>Colleen</td> - <td>Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - <td>2360</td> - <td>c.hurst@datatables.net</td> - </tr> - <tr> - <td>Sonya</td> - <td>Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - <td>1667</td> - <td>s.frost@datatables.net</td> - </tr> - <tr> - <td>Jena</td> - <td>Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - <td>3814</td> - <td>j.gaines@datatables.net</td> - </tr> - <tr> - <td>Quinn</td> - <td>Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - <td>9497</td> - <td>q.flynn@datatables.net</td> - </tr> - <tr> - <td>Charde</td> - <td>Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - <td>6741</td> - <td>c.marshall@datatables.net</td> - </tr> - <tr> - <td>Haley</td> - <td>Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - <td>3597</td> - <td>h.kennedy@datatables.net</td> - </tr> - <tr> - <td>Tatyana</td> - <td>Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - <td>1965</td> - <td>t.fitzpatrick@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - <td>1581</td> - <td>m.silva@datatables.net</td> - </tr> - <tr> - <td>Paul</td> - <td>Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - <td>3059</td> - <td>p.byrd@datatables.net</td> - </tr> - <tr> - <td>Gloria</td> - <td>Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - <td>1721</td> - <td>g.little@datatables.net</td> - </tr> - <tr> - <td>Bradley</td> - <td>Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - <td>2558</td> - <td>b.greer@datatables.net</td> - </tr> - <tr> - <td>Dai</td> - <td>Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - <td>2290</td> - <td>d.rios@datatables.net</td> - </tr> - <tr> - <td>Jenette</td> - <td>Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - <td>1937</td> - <td>j.caldwell@datatables.net</td> - </tr> - <tr> - <td>Yuri</td> - <td>Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - <td>6154</td> - <td>y.berry@datatables.net</td> - </tr> - <tr> - <td>Caesar</td> - <td>Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - <td>8330</td> - <td>c.vance@datatables.net</td> - </tr> - <tr> - <td>Doris</td> - <td>Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - <td>3023</td> - <td>d.wilder@datatables.net</td> - </tr> - <tr> - <td>Angelica</td> - <td>Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - <td>5797</td> - <td>a.ramos@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - <td>8822</td> - <td>g.joyce@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - <td>9239</td> - <td>j.chang@datatables.net</td> - </tr> - <tr> - <td>Brenden</td> - <td>Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - <td>1314</td> - <td>b.wagner@datatables.net</td> - </tr> - <tr> - <td>Fiona</td> - <td>Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - <td>2947</td> - <td>f.green@datatables.net</td> - </tr> - <tr> - <td>Shou</td> - <td>Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - <td>8899</td> - <td>s.itou@datatables.net</td> - </tr> - <tr> - <td>Michelle</td> - <td>House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - <td>2769</td> - <td>m.house@datatables.net</td> - </tr> - <tr> - <td>Suki</td> - <td>Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - <td>6832</td> - <td>s.burks@datatables.net</td> - </tr> - <tr> - <td>Prescott</td> - <td>Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - <td>3606</td> - <td>p.bartlett@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - <td>2860</td> - <td>g.cortez@datatables.net</td> - </tr> - <tr> - <td>Martena</td> - <td>Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - <td>8240</td> - <td>m.mccray@datatables.net</td> - </tr> - <tr> - <td>Unity</td> - <td>Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - <td>5384</td> - <td>u.butler@datatables.net</td> - </tr> - <tr> - <td>Howard</td> - <td>Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - <td>7031</td> - <td>h.hatfield@datatables.net</td> - </tr> - <tr> - <td>Hope</td> - <td>Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - <td>6318</td> - <td>h.fuentes@datatables.net</td> - </tr> - <tr> - <td>Vivian</td> - <td>Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - <td>9422</td> - <td>v.harrell@datatables.net</td> - </tr> - <tr> - <td>Timothy</td> - <td>Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - <td>7580</td> - <td>t.mooney@datatables.net</td> - </tr> - <tr> - <td>Jackson</td> - <td>Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - <td>1042</td> - <td>j.bradshaw@datatables.net</td> - </tr> - <tr> - <td>Olivia</td> - <td>Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - <td>2120</td> - <td>o.liang@datatables.net</td> - </tr> - <tr> - <td>Bruno</td> - <td>Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - <td>6222</td> - <td>b.nash@datatables.net</td> - </tr> - <tr> - <td>Sakura</td> - <td>Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - <td>9383</td> - <td>s.yamamoto@datatables.net</td> - </tr> - <tr> - <td>Thor</td> - <td>Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - <td>8327</td> - <td>t.walton@datatables.net</td> - </tr> - <tr> - <td>Finn</td> - <td>Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - <td>2927</td> - <td>f.camacho@datatables.net</td> - </tr> - <tr> - <td>Serge</td> - <td>Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - <td>8352</td> - <td>s.baldwin@datatables.net</td> - </tr> - <tr> - <td>Zenaida</td> - <td>Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - <td>7439</td> - <td>z.frank@datatables.net</td> - </tr> - <tr> - <td>Zorita</td> - <td>Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - <td>4389</td> - <td>z.serrano@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - <td>3431</td> - <td>j.acosta@datatables.net</td> - </tr> - <tr> - <td>Cara</td> - <td>Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - <td>3990</td> - <td>c.stevens@datatables.net</td> - </tr> - <tr> - <td>Hermione</td> - <td>Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - <td>1016</td> - <td>h.butler@datatables.net</td> - </tr> - <tr> - <td>Lael</td> - <td>Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - <td>6733</td> - <td>l.greer@datatables.net</td> - </tr> - <tr> - <td>Jonas</td> - <td>Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - <td>8196</td> - <td>j.alexander@datatables.net</td> - </tr> - <tr> - <td>Shad</td> - <td>Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - <td>6373</td> - <td>s.decker@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - <td>5384</td> - <td>m.bruce@datatables.net</td> - </tr> - <tr> - <td>Donna</td> - <td>Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - <td>4226</td> - <td>d.snider@datatables.net</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').DataTable( { - responsive: true - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../../media/js/jquery.js">../../../../media/js/jquery.js</a></li> - <li><a href="../../../../media/js/jquery.dataTables.js">../../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../../js/dataTables.responsive.js">../../js/dataTables.responsive.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css">div.container { max-width: 1200px }</code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../../media/css/jquery.dataTables.css">../../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../../css/dataTables.responsive.css">../../css/dataTables.responsive.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Basic initialisation</a></h3> - <ul class="toc active"> - <li><a href="./className.html">Class name</a></li> - <li class="active"><a href="./option.html">Configuration option</a></li> - <li><a href="./new.html">`new` constructor</a></li> - <li><a href="./ajax.html">Ajax data</a></li> - <li><a href="./default.html">Default initialisation</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../styling/index.html">Styling</a></h3> - <ul class="toc"> - <li><a href="../styling/bootstrap.html">Bootstrap styling</a></li> - <li><a href="../styling/foundation.html">Foundation styling</a></li> - <li><a href="../styling/scrolling.html">Vertical scrolling</a></li> - <li><a href="../styling/compact.html">Compact styling</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../display-control/index.html">Display control</a></h3> - <ul class="toc"> - <li><a href="../display-control/auto.html">Automatic column hiding</a></li> - <li><a href="../display-control/classes.html">Class control</a></li> - <li><a href="../display-control/init-classes.html">Assigned class control</a></li> - <li><a href="../display-control/fixedHeader.html">With FixedHeader</a></li> - <li><a href="../display-control/complexHeader.html">Complex headers (rowspan / colspan)</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../child-rows/index.html">Child rows</a></h3> - <ul class="toc"> - <li><a href="../child-rows/disable-child-rows.html">Disable child rows</a></li> - <li><a href="../child-rows/column-control.html">Column controlled child rows</a></li> - <li><a href="../child-rows/right-column.html">Column control - right</a></li> - <li><a href="../child-rows/whole-row-control.html">Whole row child row control</a></li> - <li><a href="../child-rows/custom-renderer.html">Custom child row renderer</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/Responsive/examples/styling/bootstrap.html b/assets/plugins/datatables/extensions/Responsive/examples/styling/bootstrap.html deleted file mode 100644 index 6a7175f1..00000000 --- a/assets/plugins/datatables/extensions/Responsive/examples/styling/bootstrap.html +++ /dev/null @@ -1,831 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>Responsive example - Bootstrap styling</title> - <link rel="stylesheet" type="text/css" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css"> - <link rel="stylesheet" type="text/css" href="../../../Plugins/integration/bootstrap/3/dataTables.bootstrap.css"> - <link rel="stylesheet" type="text/css" href="../../css/dataTables.responsive.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - body { font-size: 140% } - - table.dataTable th, - table.dataTable td { - white-space: nowrap; - } - - </style> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../../js/dataTables.responsive.js"></script> - <script type="text/javascript" language="javascript" src="../../../Plugins/integration/bootstrap/3/dataTables.bootstrap.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - - -$(document).ready(function() { - $('#example').DataTable(); -} ); - - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>Responsive example <span>Bootstrap styling</span></h1> - - <div class="info"> - <p>This example shows DataTables and the Responsive extension being used with the <a href="http://getbootstrap.com">Bootstrap</a> framework providing the styling. - The <a href="//datatables.net/manual/styling/bootstrap">DataTables / Bootstrap integration files</a> prove seamless integration for DataTables to be used in a - Bootstrap page.</p> - - <p>Note that the <code>dt-responsive</code> class is used to indicate to the extension that it should be enabled on this page, as <code>responsive</code> <a href= - "http://getbootstrap.com/css/#tables-responsive">has special meaning in Bootstrap</a>. The <a href= - "//datatables.net/extensions/responsive/reference/option/responsive"><code class="option" title= - "Responsive initialisation option">responsive<span>R</span></code></a> option could also be used if required.</p> - </div> - - <table id="example" class="table table-striped table-hover dt-responsive" cellspacing="0" width="100%"> - <thead> - <tr> - <th>First name</th> - <th>Last name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - <th>Extn.</th> - <th>E-mail</th> - </tr> - </thead> - - <tbody> - <tr> - <td>Tiger</td> - <td>Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - <td>5421</td> - <td>t.nixon@datatables.net</td> - </tr> - <tr> - <td>Garrett</td> - <td>Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - <td>8422</td> - <td>g.winters@datatables.net</td> - </tr> - <tr> - <td>Ashton</td> - <td>Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - <td>1562</td> - <td>a.cox@datatables.net</td> - </tr> - <tr> - <td>Cedric</td> - <td>Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - <td>6224</td> - <td>c.kelly@datatables.net</td> - </tr> - <tr> - <td>Airi</td> - <td>Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - <td>5407</td> - <td>a.satou@datatables.net</td> - </tr> - <tr> - <td>Brielle</td> - <td>Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - <td>4804</td> - <td>b.williamson@datatables.net</td> - </tr> - <tr> - <td>Herrod</td> - <td>Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - <td>9608</td> - <td>h.chandler@datatables.net</td> - </tr> - <tr> - <td>Rhona</td> - <td>Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - <td>6200</td> - <td>r.davidson@datatables.net</td> - </tr> - <tr> - <td>Colleen</td> - <td>Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - <td>2360</td> - <td>c.hurst@datatables.net</td> - </tr> - <tr> - <td>Sonya</td> - <td>Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - <td>1667</td> - <td>s.frost@datatables.net</td> - </tr> - <tr> - <td>Jena</td> - <td>Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - <td>3814</td> - <td>j.gaines@datatables.net</td> - </tr> - <tr> - <td>Quinn</td> - <td>Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - <td>9497</td> - <td>q.flynn@datatables.net</td> - </tr> - <tr> - <td>Charde</td> - <td>Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - <td>6741</td> - <td>c.marshall@datatables.net</td> - </tr> - <tr> - <td>Haley</td> - <td>Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - <td>3597</td> - <td>h.kennedy@datatables.net</td> - </tr> - <tr> - <td>Tatyana</td> - <td>Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - <td>1965</td> - <td>t.fitzpatrick@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - <td>1581</td> - <td>m.silva@datatables.net</td> - </tr> - <tr> - <td>Paul</td> - <td>Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - <td>3059</td> - <td>p.byrd@datatables.net</td> - </tr> - <tr> - <td>Gloria</td> - <td>Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - <td>1721</td> - <td>g.little@datatables.net</td> - </tr> - <tr> - <td>Bradley</td> - <td>Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - <td>2558</td> - <td>b.greer@datatables.net</td> - </tr> - <tr> - <td>Dai</td> - <td>Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - <td>2290</td> - <td>d.rios@datatables.net</td> - </tr> - <tr> - <td>Jenette</td> - <td>Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - <td>1937</td> - <td>j.caldwell@datatables.net</td> - </tr> - <tr> - <td>Yuri</td> - <td>Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - <td>6154</td> - <td>y.berry@datatables.net</td> - </tr> - <tr> - <td>Caesar</td> - <td>Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - <td>8330</td> - <td>c.vance@datatables.net</td> - </tr> - <tr> - <td>Doris</td> - <td>Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - <td>3023</td> - <td>d.wilder@datatables.net</td> - </tr> - <tr> - <td>Angelica</td> - <td>Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - <td>5797</td> - <td>a.ramos@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - <td>8822</td> - <td>g.joyce@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - <td>9239</td> - <td>j.chang@datatables.net</td> - </tr> - <tr> - <td>Brenden</td> - <td>Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - <td>1314</td> - <td>b.wagner@datatables.net</td> - </tr> - <tr> - <td>Fiona</td> - <td>Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - <td>2947</td> - <td>f.green@datatables.net</td> - </tr> - <tr> - <td>Shou</td> - <td>Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - <td>8899</td> - <td>s.itou@datatables.net</td> - </tr> - <tr> - <td>Michelle</td> - <td>House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - <td>2769</td> - <td>m.house@datatables.net</td> - </tr> - <tr> - <td>Suki</td> - <td>Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - <td>6832</td> - <td>s.burks@datatables.net</td> - </tr> - <tr> - <td>Prescott</td> - <td>Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - <td>3606</td> - <td>p.bartlett@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - <td>2860</td> - <td>g.cortez@datatables.net</td> - </tr> - <tr> - <td>Martena</td> - <td>Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - <td>8240</td> - <td>m.mccray@datatables.net</td> - </tr> - <tr> - <td>Unity</td> - <td>Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - <td>5384</td> - <td>u.butler@datatables.net</td> - </tr> - <tr> - <td>Howard</td> - <td>Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - <td>7031</td> - <td>h.hatfield@datatables.net</td> - </tr> - <tr> - <td>Hope</td> - <td>Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - <td>6318</td> - <td>h.fuentes@datatables.net</td> - </tr> - <tr> - <td>Vivian</td> - <td>Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - <td>9422</td> - <td>v.harrell@datatables.net</td> - </tr> - <tr> - <td>Timothy</td> - <td>Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - <td>7580</td> - <td>t.mooney@datatables.net</td> - </tr> - <tr> - <td>Jackson</td> - <td>Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - <td>1042</td> - <td>j.bradshaw@datatables.net</td> - </tr> - <tr> - <td>Olivia</td> - <td>Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - <td>2120</td> - <td>o.liang@datatables.net</td> - </tr> - <tr> - <td>Bruno</td> - <td>Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - <td>6222</td> - <td>b.nash@datatables.net</td> - </tr> - <tr> - <td>Sakura</td> - <td>Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - <td>9383</td> - <td>s.yamamoto@datatables.net</td> - </tr> - <tr> - <td>Thor</td> - <td>Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - <td>8327</td> - <td>t.walton@datatables.net</td> - </tr> - <tr> - <td>Finn</td> - <td>Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - <td>2927</td> - <td>f.camacho@datatables.net</td> - </tr> - <tr> - <td>Serge</td> - <td>Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - <td>8352</td> - <td>s.baldwin@datatables.net</td> - </tr> - <tr> - <td>Zenaida</td> - <td>Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - <td>7439</td> - <td>z.frank@datatables.net</td> - </tr> - <tr> - <td>Zorita</td> - <td>Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - <td>4389</td> - <td>z.serrano@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - <td>3431</td> - <td>j.acosta@datatables.net</td> - </tr> - <tr> - <td>Cara</td> - <td>Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - <td>3990</td> - <td>c.stevens@datatables.net</td> - </tr> - <tr> - <td>Hermione</td> - <td>Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - <td>1016</td> - <td>h.butler@datatables.net</td> - </tr> - <tr> - <td>Lael</td> - <td>Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - <td>6733</td> - <td>l.greer@datatables.net</td> - </tr> - <tr> - <td>Jonas</td> - <td>Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - <td>8196</td> - <td>j.alexander@datatables.net</td> - </tr> - <tr> - <td>Shad</td> - <td>Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - <td>6373</td> - <td>s.decker@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - <td>5384</td> - <td>m.bruce@datatables.net</td> - </tr> - <tr> - <td>Donna</td> - <td>Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - <td>4226</td> - <td>d.snider@datatables.net</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').DataTable(); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../../media/js/jquery.js">../../../../media/js/jquery.js</a></li> - <li><a href="../../../../media/js/jquery.dataTables.js">../../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../../js/dataTables.responsive.js">../../js/dataTables.responsive.js</a></li> - <li><a href="../../../Plugins/integration/bootstrap/3/dataTables.bootstrap.js">../../../Plugins/integration/bootstrap/3/dataTables.bootstrap.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css">body { font-size: 140% } - - table.dataTable th, - table.dataTable td { - white-space: nowrap; - }</code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css</a></li> - <li><a href="../../../Plugins/integration/bootstrap/3/dataTables.bootstrap.css">../../../Plugins/integration/bootstrap/3/dataTables.bootstrap.css</a></li> - <li><a href="../../css/dataTables.responsive.css">../../css/dataTables.responsive.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="../initialisation/index.html">Basic initialisation</a></h3> - <ul class="toc"> - <li><a href="../initialisation/className.html">Class name</a></li> - <li><a href="../initialisation/option.html">Configuration option</a></li> - <li><a href="../initialisation/new.html">`new` constructor</a></li> - <li><a href="../initialisation/ajax.html">Ajax data</a></li> - <li><a href="../initialisation/default.html">Default initialisation</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="./index.html">Styling</a></h3> - <ul class="toc active"> - <li class="active"><a href="./bootstrap.html">Bootstrap styling</a></li> - <li><a href="./foundation.html">Foundation styling</a></li> - <li><a href="./scrolling.html">Vertical scrolling</a></li> - <li><a href="./compact.html">Compact styling</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../display-control/index.html">Display control</a></h3> - <ul class="toc"> - <li><a href="../display-control/auto.html">Automatic column hiding</a></li> - <li><a href="../display-control/classes.html">Class control</a></li> - <li><a href="../display-control/init-classes.html">Assigned class control</a></li> - <li><a href="../display-control/fixedHeader.html">With FixedHeader</a></li> - <li><a href="../display-control/complexHeader.html">Complex headers (rowspan / colspan)</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../child-rows/index.html">Child rows</a></h3> - <ul class="toc"> - <li><a href="../child-rows/disable-child-rows.html">Disable child rows</a></li> - <li><a href="../child-rows/column-control.html">Column controlled child rows</a></li> - <li><a href="../child-rows/right-column.html">Column control - right</a></li> - <li><a href="../child-rows/whole-row-control.html">Whole row child row control</a></li> - <li><a href="../child-rows/custom-renderer.html">Custom child row renderer</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/Responsive/examples/styling/compact.html b/assets/plugins/datatables/extensions/Responsive/examples/styling/compact.html deleted file mode 100644 index 91d71184..00000000 --- a/assets/plugins/datatables/extensions/Responsive/examples/styling/compact.html +++ /dev/null @@ -1,816 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>Responsive example - Compact styling</title> - <link rel="stylesheet" type="text/css" href="../../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../../css/dataTables.responsive.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - div.container { max-width: 1200px } - - </style> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../../js/dataTables.responsive.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - - -$(document).ready(function() { - var table = $('#example').DataTable(); - - new $.fn.dataTable.Responsive( table ); -} ); - - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>Responsive example <span>Compact styling</span></h1> - - <div class="info"> - <p>DataTables' <a href="http://datatables.net/manual/styling/classes">default stylesheet</a> has a number number of features available that can be enabled by - including a class name on the DataTable. One of those options is <code>compact</code> which displays the DataTable with less whitespace padding that might other be - used to increase the information density of the table. Responsive's own style has support for this <code>compact</code> styling as showing in this example.</p> - </div> - - <table id="example" class="display compact nowrap" cellspacing="0" width="100%"> - <thead> - <tr> - <th>First name</th> - <th>Last name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - <th>Extn.</th> - <th>E-mail</th> - </tr> - </thead> - - <tbody> - <tr> - <td>Tiger</td> - <td>Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - <td>5421</td> - <td>t.nixon@datatables.net</td> - </tr> - <tr> - <td>Garrett</td> - <td>Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - <td>8422</td> - <td>g.winters@datatables.net</td> - </tr> - <tr> - <td>Ashton</td> - <td>Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - <td>1562</td> - <td>a.cox@datatables.net</td> - </tr> - <tr> - <td>Cedric</td> - <td>Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - <td>6224</td> - <td>c.kelly@datatables.net</td> - </tr> - <tr> - <td>Airi</td> - <td>Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - <td>5407</td> - <td>a.satou@datatables.net</td> - </tr> - <tr> - <td>Brielle</td> - <td>Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - <td>4804</td> - <td>b.williamson@datatables.net</td> - </tr> - <tr> - <td>Herrod</td> - <td>Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - <td>9608</td> - <td>h.chandler@datatables.net</td> - </tr> - <tr> - <td>Rhona</td> - <td>Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - <td>6200</td> - <td>r.davidson@datatables.net</td> - </tr> - <tr> - <td>Colleen</td> - <td>Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - <td>2360</td> - <td>c.hurst@datatables.net</td> - </tr> - <tr> - <td>Sonya</td> - <td>Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - <td>1667</td> - <td>s.frost@datatables.net</td> - </tr> - <tr> - <td>Jena</td> - <td>Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - <td>3814</td> - <td>j.gaines@datatables.net</td> - </tr> - <tr> - <td>Quinn</td> - <td>Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - <td>9497</td> - <td>q.flynn@datatables.net</td> - </tr> - <tr> - <td>Charde</td> - <td>Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - <td>6741</td> - <td>c.marshall@datatables.net</td> - </tr> - <tr> - <td>Haley</td> - <td>Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - <td>3597</td> - <td>h.kennedy@datatables.net</td> - </tr> - <tr> - <td>Tatyana</td> - <td>Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - <td>1965</td> - <td>t.fitzpatrick@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - <td>1581</td> - <td>m.silva@datatables.net</td> - </tr> - <tr> - <td>Paul</td> - <td>Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - <td>3059</td> - <td>p.byrd@datatables.net</td> - </tr> - <tr> - <td>Gloria</td> - <td>Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - <td>1721</td> - <td>g.little@datatables.net</td> - </tr> - <tr> - <td>Bradley</td> - <td>Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - <td>2558</td> - <td>b.greer@datatables.net</td> - </tr> - <tr> - <td>Dai</td> - <td>Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - <td>2290</td> - <td>d.rios@datatables.net</td> - </tr> - <tr> - <td>Jenette</td> - <td>Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - <td>1937</td> - <td>j.caldwell@datatables.net</td> - </tr> - <tr> - <td>Yuri</td> - <td>Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - <td>6154</td> - <td>y.berry@datatables.net</td> - </tr> - <tr> - <td>Caesar</td> - <td>Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - <td>8330</td> - <td>c.vance@datatables.net</td> - </tr> - <tr> - <td>Doris</td> - <td>Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - <td>3023</td> - <td>d.wilder@datatables.net</td> - </tr> - <tr> - <td>Angelica</td> - <td>Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - <td>5797</td> - <td>a.ramos@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - <td>8822</td> - <td>g.joyce@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - <td>9239</td> - <td>j.chang@datatables.net</td> - </tr> - <tr> - <td>Brenden</td> - <td>Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - <td>1314</td> - <td>b.wagner@datatables.net</td> - </tr> - <tr> - <td>Fiona</td> - <td>Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - <td>2947</td> - <td>f.green@datatables.net</td> - </tr> - <tr> - <td>Shou</td> - <td>Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - <td>8899</td> - <td>s.itou@datatables.net</td> - </tr> - <tr> - <td>Michelle</td> - <td>House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - <td>2769</td> - <td>m.house@datatables.net</td> - </tr> - <tr> - <td>Suki</td> - <td>Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - <td>6832</td> - <td>s.burks@datatables.net</td> - </tr> - <tr> - <td>Prescott</td> - <td>Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - <td>3606</td> - <td>p.bartlett@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - <td>2860</td> - <td>g.cortez@datatables.net</td> - </tr> - <tr> - <td>Martena</td> - <td>Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - <td>8240</td> - <td>m.mccray@datatables.net</td> - </tr> - <tr> - <td>Unity</td> - <td>Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - <td>5384</td> - <td>u.butler@datatables.net</td> - </tr> - <tr> - <td>Howard</td> - <td>Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - <td>7031</td> - <td>h.hatfield@datatables.net</td> - </tr> - <tr> - <td>Hope</td> - <td>Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - <td>6318</td> - <td>h.fuentes@datatables.net</td> - </tr> - <tr> - <td>Vivian</td> - <td>Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - <td>9422</td> - <td>v.harrell@datatables.net</td> - </tr> - <tr> - <td>Timothy</td> - <td>Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - <td>7580</td> - <td>t.mooney@datatables.net</td> - </tr> - <tr> - <td>Jackson</td> - <td>Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - <td>1042</td> - <td>j.bradshaw@datatables.net</td> - </tr> - <tr> - <td>Olivia</td> - <td>Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - <td>2120</td> - <td>o.liang@datatables.net</td> - </tr> - <tr> - <td>Bruno</td> - <td>Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - <td>6222</td> - <td>b.nash@datatables.net</td> - </tr> - <tr> - <td>Sakura</td> - <td>Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - <td>9383</td> - <td>s.yamamoto@datatables.net</td> - </tr> - <tr> - <td>Thor</td> - <td>Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - <td>8327</td> - <td>t.walton@datatables.net</td> - </tr> - <tr> - <td>Finn</td> - <td>Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - <td>2927</td> - <td>f.camacho@datatables.net</td> - </tr> - <tr> - <td>Serge</td> - <td>Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - <td>8352</td> - <td>s.baldwin@datatables.net</td> - </tr> - <tr> - <td>Zenaida</td> - <td>Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - <td>7439</td> - <td>z.frank@datatables.net</td> - </tr> - <tr> - <td>Zorita</td> - <td>Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - <td>4389</td> - <td>z.serrano@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - <td>3431</td> - <td>j.acosta@datatables.net</td> - </tr> - <tr> - <td>Cara</td> - <td>Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - <td>3990</td> - <td>c.stevens@datatables.net</td> - </tr> - <tr> - <td>Hermione</td> - <td>Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - <td>1016</td> - <td>h.butler@datatables.net</td> - </tr> - <tr> - <td>Lael</td> - <td>Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - <td>6733</td> - <td>l.greer@datatables.net</td> - </tr> - <tr> - <td>Jonas</td> - <td>Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - <td>8196</td> - <td>j.alexander@datatables.net</td> - </tr> - <tr> - <td>Shad</td> - <td>Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - <td>6373</td> - <td>s.decker@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - <td>5384</td> - <td>m.bruce@datatables.net</td> - </tr> - <tr> - <td>Donna</td> - <td>Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - <td>4226</td> - <td>d.snider@datatables.net</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - var table = $('#example').DataTable(); - - new $.fn.dataTable.Responsive( table ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../../media/js/jquery.js">../../../../media/js/jquery.js</a></li> - <li><a href="../../../../media/js/jquery.dataTables.js">../../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../../js/dataTables.responsive.js">../../js/dataTables.responsive.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css">div.container { max-width: 1200px }</code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../../media/css/jquery.dataTables.css">../../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../../css/dataTables.responsive.css">../../css/dataTables.responsive.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="../initialisation/index.html">Basic initialisation</a></h3> - <ul class="toc"> - <li><a href="../initialisation/className.html">Class name</a></li> - <li><a href="../initialisation/option.html">Configuration option</a></li> - <li><a href="../initialisation/new.html">`new` constructor</a></li> - <li><a href="../initialisation/ajax.html">Ajax data</a></li> - <li><a href="../initialisation/default.html">Default initialisation</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="./index.html">Styling</a></h3> - <ul class="toc active"> - <li><a href="./bootstrap.html">Bootstrap styling</a></li> - <li><a href="./foundation.html">Foundation styling</a></li> - <li><a href="./scrolling.html">Vertical scrolling</a></li> - <li class="active"><a href="./compact.html">Compact styling</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../display-control/index.html">Display control</a></h3> - <ul class="toc"> - <li><a href="../display-control/auto.html">Automatic column hiding</a></li> - <li><a href="../display-control/classes.html">Class control</a></li> - <li><a href="../display-control/init-classes.html">Assigned class control</a></li> - <li><a href="../display-control/fixedHeader.html">With FixedHeader</a></li> - <li><a href="../display-control/complexHeader.html">Complex headers (rowspan / colspan)</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../child-rows/index.html">Child rows</a></h3> - <ul class="toc"> - <li><a href="../child-rows/disable-child-rows.html">Disable child rows</a></li> - <li><a href="../child-rows/column-control.html">Column controlled child rows</a></li> - <li><a href="../child-rows/right-column.html">Column control - right</a></li> - <li><a href="../child-rows/whole-row-control.html">Whole row child row control</a></li> - <li><a href="../child-rows/custom-renderer.html">Custom child row renderer</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/Responsive/examples/styling/foundation.html b/assets/plugins/datatables/extensions/Responsive/examples/styling/foundation.html deleted file mode 100644 index d41ba407..00000000 --- a/assets/plugins/datatables/extensions/Responsive/examples/styling/foundation.html +++ /dev/null @@ -1,822 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>Responsive example - Foundation styling</title> - <link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/foundation/5.5.1/css/foundation.min.css"> - <link rel="stylesheet" type="text/css" href="../../../Plugins/integration/foundation/dataTables.foundation.css"> - <link rel="stylesheet" type="text/css" href="../../css/dataTables.responsive.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - table.dataTable th, - table.dataTable td { - white-space: nowrap; - } - - </style> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../../js/dataTables.responsive.js"></script> - <script type="text/javascript" language="javascript" src="../../../Plugins/integration/foundation/dataTables.foundation.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - - -$(document).ready(function() { - $('#example').DataTable(); -} ); - - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>Responsive example <span>Foundation styling</span></h1> - - <div class="info"> - <p>This example shows DataTables and the Responsive extension being used with the <a href="http://foundation.zurb.com">Foundation</a> framework providing the - styling. The <a href="//datatables.net/manual/styling/foundation">DataTables / Foundation integration files</a> prove seamless integration for DataTables to be - used in a Foundation page.</p> - </div> - - <table id="example" class="tdisplay responsive" cellspacing="0" width="100%"> - <thead> - <tr> - <th>First name</th> - <th>Last name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - <th>Extn.</th> - <th>E-mail</th> - </tr> - </thead> - - <tbody> - <tr> - <td>Tiger</td> - <td>Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - <td>5421</td> - <td>t.nixon@datatables.net</td> - </tr> - <tr> - <td>Garrett</td> - <td>Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - <td>8422</td> - <td>g.winters@datatables.net</td> - </tr> - <tr> - <td>Ashton</td> - <td>Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - <td>1562</td> - <td>a.cox@datatables.net</td> - </tr> - <tr> - <td>Cedric</td> - <td>Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - <td>6224</td> - <td>c.kelly@datatables.net</td> - </tr> - <tr> - <td>Airi</td> - <td>Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - <td>5407</td> - <td>a.satou@datatables.net</td> - </tr> - <tr> - <td>Brielle</td> - <td>Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - <td>4804</td> - <td>b.williamson@datatables.net</td> - </tr> - <tr> - <td>Herrod</td> - <td>Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - <td>9608</td> - <td>h.chandler@datatables.net</td> - </tr> - <tr> - <td>Rhona</td> - <td>Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - <td>6200</td> - <td>r.davidson@datatables.net</td> - </tr> - <tr> - <td>Colleen</td> - <td>Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - <td>2360</td> - <td>c.hurst@datatables.net</td> - </tr> - <tr> - <td>Sonya</td> - <td>Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - <td>1667</td> - <td>s.frost@datatables.net</td> - </tr> - <tr> - <td>Jena</td> - <td>Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - <td>3814</td> - <td>j.gaines@datatables.net</td> - </tr> - <tr> - <td>Quinn</td> - <td>Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - <td>9497</td> - <td>q.flynn@datatables.net</td> - </tr> - <tr> - <td>Charde</td> - <td>Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - <td>6741</td> - <td>c.marshall@datatables.net</td> - </tr> - <tr> - <td>Haley</td> - <td>Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - <td>3597</td> - <td>h.kennedy@datatables.net</td> - </tr> - <tr> - <td>Tatyana</td> - <td>Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - <td>1965</td> - <td>t.fitzpatrick@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - <td>1581</td> - <td>m.silva@datatables.net</td> - </tr> - <tr> - <td>Paul</td> - <td>Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - <td>3059</td> - <td>p.byrd@datatables.net</td> - </tr> - <tr> - <td>Gloria</td> - <td>Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - <td>1721</td> - <td>g.little@datatables.net</td> - </tr> - <tr> - <td>Bradley</td> - <td>Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - <td>2558</td> - <td>b.greer@datatables.net</td> - </tr> - <tr> - <td>Dai</td> - <td>Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - <td>2290</td> - <td>d.rios@datatables.net</td> - </tr> - <tr> - <td>Jenette</td> - <td>Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - <td>1937</td> - <td>j.caldwell@datatables.net</td> - </tr> - <tr> - <td>Yuri</td> - <td>Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - <td>6154</td> - <td>y.berry@datatables.net</td> - </tr> - <tr> - <td>Caesar</td> - <td>Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - <td>8330</td> - <td>c.vance@datatables.net</td> - </tr> - <tr> - <td>Doris</td> - <td>Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - <td>3023</td> - <td>d.wilder@datatables.net</td> - </tr> - <tr> - <td>Angelica</td> - <td>Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - <td>5797</td> - <td>a.ramos@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - <td>8822</td> - <td>g.joyce@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - <td>9239</td> - <td>j.chang@datatables.net</td> - </tr> - <tr> - <td>Brenden</td> - <td>Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - <td>1314</td> - <td>b.wagner@datatables.net</td> - </tr> - <tr> - <td>Fiona</td> - <td>Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - <td>2947</td> - <td>f.green@datatables.net</td> - </tr> - <tr> - <td>Shou</td> - <td>Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - <td>8899</td> - <td>s.itou@datatables.net</td> - </tr> - <tr> - <td>Michelle</td> - <td>House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - <td>2769</td> - <td>m.house@datatables.net</td> - </tr> - <tr> - <td>Suki</td> - <td>Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - <td>6832</td> - <td>s.burks@datatables.net</td> - </tr> - <tr> - <td>Prescott</td> - <td>Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - <td>3606</td> - <td>p.bartlett@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - <td>2860</td> - <td>g.cortez@datatables.net</td> - </tr> - <tr> - <td>Martena</td> - <td>Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - <td>8240</td> - <td>m.mccray@datatables.net</td> - </tr> - <tr> - <td>Unity</td> - <td>Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - <td>5384</td> - <td>u.butler@datatables.net</td> - </tr> - <tr> - <td>Howard</td> - <td>Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - <td>7031</td> - <td>h.hatfield@datatables.net</td> - </tr> - <tr> - <td>Hope</td> - <td>Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - <td>6318</td> - <td>h.fuentes@datatables.net</td> - </tr> - <tr> - <td>Vivian</td> - <td>Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - <td>9422</td> - <td>v.harrell@datatables.net</td> - </tr> - <tr> - <td>Timothy</td> - <td>Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - <td>7580</td> - <td>t.mooney@datatables.net</td> - </tr> - <tr> - <td>Jackson</td> - <td>Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - <td>1042</td> - <td>j.bradshaw@datatables.net</td> - </tr> - <tr> - <td>Olivia</td> - <td>Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - <td>2120</td> - <td>o.liang@datatables.net</td> - </tr> - <tr> - <td>Bruno</td> - <td>Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - <td>6222</td> - <td>b.nash@datatables.net</td> - </tr> - <tr> - <td>Sakura</td> - <td>Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - <td>9383</td> - <td>s.yamamoto@datatables.net</td> - </tr> - <tr> - <td>Thor</td> - <td>Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - <td>8327</td> - <td>t.walton@datatables.net</td> - </tr> - <tr> - <td>Finn</td> - <td>Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - <td>2927</td> - <td>f.camacho@datatables.net</td> - </tr> - <tr> - <td>Serge</td> - <td>Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - <td>8352</td> - <td>s.baldwin@datatables.net</td> - </tr> - <tr> - <td>Zenaida</td> - <td>Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - <td>7439</td> - <td>z.frank@datatables.net</td> - </tr> - <tr> - <td>Zorita</td> - <td>Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - <td>4389</td> - <td>z.serrano@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - <td>3431</td> - <td>j.acosta@datatables.net</td> - </tr> - <tr> - <td>Cara</td> - <td>Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - <td>3990</td> - <td>c.stevens@datatables.net</td> - </tr> - <tr> - <td>Hermione</td> - <td>Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - <td>1016</td> - <td>h.butler@datatables.net</td> - </tr> - <tr> - <td>Lael</td> - <td>Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - <td>6733</td> - <td>l.greer@datatables.net</td> - </tr> - <tr> - <td>Jonas</td> - <td>Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - <td>8196</td> - <td>j.alexander@datatables.net</td> - </tr> - <tr> - <td>Shad</td> - <td>Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - <td>6373</td> - <td>s.decker@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - <td>5384</td> - <td>m.bruce@datatables.net</td> - </tr> - <tr> - <td>Donna</td> - <td>Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - <td>4226</td> - <td>d.snider@datatables.net</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').DataTable(); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../../media/js/jquery.js">../../../../media/js/jquery.js</a></li> - <li><a href="../../../../media/js/jquery.dataTables.js">../../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../../js/dataTables.responsive.js">../../js/dataTables.responsive.js</a></li> - <li><a href="../../../Plugins/integration/foundation/dataTables.foundation.js">../../../Plugins/integration/foundation/dataTables.foundation.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css">table.dataTable th, - table.dataTable td { - white-space: nowrap; - }</code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="//cdn.jsdelivr.net/foundation/5.5.1/css/foundation.min.css">//cdn.jsdelivr.net/foundation/5.5.1/css/foundation.min.css</a></li> - <li><a href="../../../Plugins/integration/foundation/dataTables.foundation.css">../../../Plugins/integration/foundation/dataTables.foundation.css</a></li> - <li><a href="../../css/dataTables.responsive.css">../../css/dataTables.responsive.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="../initialisation/index.html">Basic initialisation</a></h3> - <ul class="toc"> - <li><a href="../initialisation/className.html">Class name</a></li> - <li><a href="../initialisation/option.html">Configuration option</a></li> - <li><a href="../initialisation/new.html">`new` constructor</a></li> - <li><a href="../initialisation/ajax.html">Ajax data</a></li> - <li><a href="../initialisation/default.html">Default initialisation</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="./index.html">Styling</a></h3> - <ul class="toc active"> - <li><a href="./bootstrap.html">Bootstrap styling</a></li> - <li class="active"><a href="./foundation.html">Foundation styling</a></li> - <li><a href="./scrolling.html">Vertical scrolling</a></li> - <li><a href="./compact.html">Compact styling</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../display-control/index.html">Display control</a></h3> - <ul class="toc"> - <li><a href="../display-control/auto.html">Automatic column hiding</a></li> - <li><a href="../display-control/classes.html">Class control</a></li> - <li><a href="../display-control/init-classes.html">Assigned class control</a></li> - <li><a href="../display-control/fixedHeader.html">With FixedHeader</a></li> - <li><a href="../display-control/complexHeader.html">Complex headers (rowspan / colspan)</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../child-rows/index.html">Child rows</a></h3> - <ul class="toc"> - <li><a href="../child-rows/disable-child-rows.html">Disable child rows</a></li> - <li><a href="../child-rows/column-control.html">Column controlled child rows</a></li> - <li><a href="../child-rows/right-column.html">Column control - right</a></li> - <li><a href="../child-rows/whole-row-control.html">Whole row child row control</a></li> - <li><a href="../child-rows/custom-renderer.html">Custom child row renderer</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/Responsive/examples/styling/index.html b/assets/plugins/datatables/extensions/Responsive/examples/styling/index.html deleted file mode 100644 index 0de49171..00000000 --- a/assets/plugins/datatables/extensions/Responsive/examples/styling/index.html +++ /dev/null @@ -1,57 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css"> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script> - - <title>Responsive examples - Styling</title> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>Responsive example <span>Styling</span></h1> - - <div class="info"> - <p>Responsive requires very little styling information of its own, with styling needed only for the child row display when the table has been collapsed. As such, - integrating Responsive with your application should be as simple as including the Javascript and base stylesheet! This section shows Responsive being styling using - external CSS frameworks.</p> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Styling</a></h3> - <ul class="toc"> - <li><a href="./bootstrap.html">Bootstrap styling</a></li> - <li><a href="./foundation.html">Foundation styling</a></li> - <li><a href="./scrolling.html">Vertical scrolling</a></li> - <li><a href="./compact.html">Compact styling</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/Responsive/examples/styling/scrolling.html b/assets/plugins/datatables/extensions/Responsive/examples/styling/scrolling.html deleted file mode 100644 index 94d77ca2..00000000 --- a/assets/plugins/datatables/extensions/Responsive/examples/styling/scrolling.html +++ /dev/null @@ -1,826 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>Responsive example - Vertical scrolling</title> - <link rel="stylesheet" type="text/css" href="../../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../../css/dataTables.responsive.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - div.container { max-width: 1200px } - - </style> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../../js/dataTables.responsive.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - - -$(document).ready(function() { - var table = $('#example').DataTable( { - scrollY: 300, - paging: false - } ); - - new $.fn.dataTable.Responsive( table ); -} ); - - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>Responsive example <span>Vertical scrolling</span></h1> - - <div class="info"> - <p>This example shows Responsive in use with the <a href="//datatables.net/reference/option/scrollY"><code class="option" title= - "DataTables initialisation option">scrollY<span>DT</span></code></a> option to present a scrolling table (instead of using paging as the other Responsive examples - do). Responsive will automatically work with the table in such a configuration.</p> - - <p>Responsive can be used with <a href="//datatables.net/reference/option/scrollX"><code class="option" title= - "DataTables initialisation option">scrollX<span>DT</span></code></a>, however it is relatively pointless as Responsive will remove columns to ensure that there is - no horizontal scrolling!</p> - </div> - - <table id="example" class="display nowrap" cellspacing="0" width="100%"> - <thead> - <tr> - <th>First name</th> - <th>Last name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - <th>Extn.</th> - <th>E-mail</th> - </tr> - </thead> - - <tbody> - <tr> - <td>Tiger</td> - <td>Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - <td>5421</td> - <td>t.nixon@datatables.net</td> - </tr> - <tr> - <td>Garrett</td> - <td>Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - <td>8422</td> - <td>g.winters@datatables.net</td> - </tr> - <tr> - <td>Ashton</td> - <td>Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - <td>1562</td> - <td>a.cox@datatables.net</td> - </tr> - <tr> - <td>Cedric</td> - <td>Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - <td>6224</td> - <td>c.kelly@datatables.net</td> - </tr> - <tr> - <td>Airi</td> - <td>Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - <td>5407</td> - <td>a.satou@datatables.net</td> - </tr> - <tr> - <td>Brielle</td> - <td>Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - <td>4804</td> - <td>b.williamson@datatables.net</td> - </tr> - <tr> - <td>Herrod</td> - <td>Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - <td>9608</td> - <td>h.chandler@datatables.net</td> - </tr> - <tr> - <td>Rhona</td> - <td>Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - <td>6200</td> - <td>r.davidson@datatables.net</td> - </tr> - <tr> - <td>Colleen</td> - <td>Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - <td>2360</td> - <td>c.hurst@datatables.net</td> - </tr> - <tr> - <td>Sonya</td> - <td>Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - <td>1667</td> - <td>s.frost@datatables.net</td> - </tr> - <tr> - <td>Jena</td> - <td>Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - <td>3814</td> - <td>j.gaines@datatables.net</td> - </tr> - <tr> - <td>Quinn</td> - <td>Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - <td>9497</td> - <td>q.flynn@datatables.net</td> - </tr> - <tr> - <td>Charde</td> - <td>Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - <td>6741</td> - <td>c.marshall@datatables.net</td> - </tr> - <tr> - <td>Haley</td> - <td>Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - <td>3597</td> - <td>h.kennedy@datatables.net</td> - </tr> - <tr> - <td>Tatyana</td> - <td>Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - <td>1965</td> - <td>t.fitzpatrick@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - <td>1581</td> - <td>m.silva@datatables.net</td> - </tr> - <tr> - <td>Paul</td> - <td>Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - <td>3059</td> - <td>p.byrd@datatables.net</td> - </tr> - <tr> - <td>Gloria</td> - <td>Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - <td>1721</td> - <td>g.little@datatables.net</td> - </tr> - <tr> - <td>Bradley</td> - <td>Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - <td>2558</td> - <td>b.greer@datatables.net</td> - </tr> - <tr> - <td>Dai</td> - <td>Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - <td>2290</td> - <td>d.rios@datatables.net</td> - </tr> - <tr> - <td>Jenette</td> - <td>Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - <td>1937</td> - <td>j.caldwell@datatables.net</td> - </tr> - <tr> - <td>Yuri</td> - <td>Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - <td>6154</td> - <td>y.berry@datatables.net</td> - </tr> - <tr> - <td>Caesar</td> - <td>Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - <td>8330</td> - <td>c.vance@datatables.net</td> - </tr> - <tr> - <td>Doris</td> - <td>Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - <td>3023</td> - <td>d.wilder@datatables.net</td> - </tr> - <tr> - <td>Angelica</td> - <td>Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - <td>5797</td> - <td>a.ramos@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - <td>8822</td> - <td>g.joyce@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - <td>9239</td> - <td>j.chang@datatables.net</td> - </tr> - <tr> - <td>Brenden</td> - <td>Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - <td>1314</td> - <td>b.wagner@datatables.net</td> - </tr> - <tr> - <td>Fiona</td> - <td>Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - <td>2947</td> - <td>f.green@datatables.net</td> - </tr> - <tr> - <td>Shou</td> - <td>Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - <td>8899</td> - <td>s.itou@datatables.net</td> - </tr> - <tr> - <td>Michelle</td> - <td>House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - <td>2769</td> - <td>m.house@datatables.net</td> - </tr> - <tr> - <td>Suki</td> - <td>Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - <td>6832</td> - <td>s.burks@datatables.net</td> - </tr> - <tr> - <td>Prescott</td> - <td>Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - <td>3606</td> - <td>p.bartlett@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - <td>2860</td> - <td>g.cortez@datatables.net</td> - </tr> - <tr> - <td>Martena</td> - <td>Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - <td>8240</td> - <td>m.mccray@datatables.net</td> - </tr> - <tr> - <td>Unity</td> - <td>Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - <td>5384</td> - <td>u.butler@datatables.net</td> - </tr> - <tr> - <td>Howard</td> - <td>Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - <td>7031</td> - <td>h.hatfield@datatables.net</td> - </tr> - <tr> - <td>Hope</td> - <td>Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - <td>6318</td> - <td>h.fuentes@datatables.net</td> - </tr> - <tr> - <td>Vivian</td> - <td>Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - <td>9422</td> - <td>v.harrell@datatables.net</td> - </tr> - <tr> - <td>Timothy</td> - <td>Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - <td>7580</td> - <td>t.mooney@datatables.net</td> - </tr> - <tr> - <td>Jackson</td> - <td>Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - <td>1042</td> - <td>j.bradshaw@datatables.net</td> - </tr> - <tr> - <td>Olivia</td> - <td>Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - <td>2120</td> - <td>o.liang@datatables.net</td> - </tr> - <tr> - <td>Bruno</td> - <td>Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - <td>6222</td> - <td>b.nash@datatables.net</td> - </tr> - <tr> - <td>Sakura</td> - <td>Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - <td>9383</td> - <td>s.yamamoto@datatables.net</td> - </tr> - <tr> - <td>Thor</td> - <td>Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - <td>8327</td> - <td>t.walton@datatables.net</td> - </tr> - <tr> - <td>Finn</td> - <td>Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - <td>2927</td> - <td>f.camacho@datatables.net</td> - </tr> - <tr> - <td>Serge</td> - <td>Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - <td>8352</td> - <td>s.baldwin@datatables.net</td> - </tr> - <tr> - <td>Zenaida</td> - <td>Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - <td>7439</td> - <td>z.frank@datatables.net</td> - </tr> - <tr> - <td>Zorita</td> - <td>Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - <td>4389</td> - <td>z.serrano@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - <td>3431</td> - <td>j.acosta@datatables.net</td> - </tr> - <tr> - <td>Cara</td> - <td>Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - <td>3990</td> - <td>c.stevens@datatables.net</td> - </tr> - <tr> - <td>Hermione</td> - <td>Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - <td>1016</td> - <td>h.butler@datatables.net</td> - </tr> - <tr> - <td>Lael</td> - <td>Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - <td>6733</td> - <td>l.greer@datatables.net</td> - </tr> - <tr> - <td>Jonas</td> - <td>Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - <td>8196</td> - <td>j.alexander@datatables.net</td> - </tr> - <tr> - <td>Shad</td> - <td>Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - <td>6373</td> - <td>s.decker@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - <td>5384</td> - <td>m.bruce@datatables.net</td> - </tr> - <tr> - <td>Donna</td> - <td>Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - <td>4226</td> - <td>d.snider@datatables.net</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - var table = $('#example').DataTable( { - scrollY: 300, - paging: false - } ); - - new $.fn.dataTable.Responsive( table ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../../media/js/jquery.js">../../../../media/js/jquery.js</a></li> - <li><a href="../../../../media/js/jquery.dataTables.js">../../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../../js/dataTables.responsive.js">../../js/dataTables.responsive.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css">div.container { max-width: 1200px }</code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../../media/css/jquery.dataTables.css">../../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../../css/dataTables.responsive.css">../../css/dataTables.responsive.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="../initialisation/index.html">Basic initialisation</a></h3> - <ul class="toc"> - <li><a href="../initialisation/className.html">Class name</a></li> - <li><a href="../initialisation/option.html">Configuration option</a></li> - <li><a href="../initialisation/new.html">`new` constructor</a></li> - <li><a href="../initialisation/ajax.html">Ajax data</a></li> - <li><a href="../initialisation/default.html">Default initialisation</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="./index.html">Styling</a></h3> - <ul class="toc active"> - <li><a href="./bootstrap.html">Bootstrap styling</a></li> - <li><a href="./foundation.html">Foundation styling</a></li> - <li class="active"><a href="./scrolling.html">Vertical scrolling</a></li> - <li><a href="./compact.html">Compact styling</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../display-control/index.html">Display control</a></h3> - <ul class="toc"> - <li><a href="../display-control/auto.html">Automatic column hiding</a></li> - <li><a href="../display-control/classes.html">Class control</a></li> - <li><a href="../display-control/init-classes.html">Assigned class control</a></li> - <li><a href="../display-control/fixedHeader.html">With FixedHeader</a></li> - <li><a href="../display-control/complexHeader.html">Complex headers (rowspan / colspan)</a></li> - </ul> - </div> - - <div class="toc-group"> - <h3><a href="../child-rows/index.html">Child rows</a></h3> - <ul class="toc"> - <li><a href="../child-rows/disable-child-rows.html">Disable child rows</a></li> - <li><a href="../child-rows/column-control.html">Column controlled child rows</a></li> - <li><a href="../child-rows/right-column.html">Column control - right</a></li> - <li><a href="../child-rows/whole-row-control.html">Whole row child row control</a></li> - <li><a href="../child-rows/custom-renderer.html">Custom child row renderer</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/Responsive/js/dataTables.responsive.js b/assets/plugins/datatables/extensions/Responsive/js/dataTables.responsive.js deleted file mode 100644 index 5b4743f1..00000000 --- a/assets/plugins/datatables/extensions/Responsive/js/dataTables.responsive.js +++ /dev/null @@ -1,873 +0,0 @@ -/*! Responsive 1.0.6 - * 2014-2015 SpryMedia Ltd - datatables.net/license - */ - -/** - * @summary Responsive - * @description Responsive tables plug-in for DataTables - * @version 1.0.6 - * @file dataTables.responsive.js - * @author SpryMedia Ltd (www.sprymedia.co.uk) - * @contact www.sprymedia.co.uk/contact - * @copyright Copyright 2014-2015 SpryMedia Ltd. - * - * This source file is free software, available under the following license: - * MIT license - http://datatables.net/license/mit - * - * This source file is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. - * - * For details please refer to: http://www.datatables.net - */ - -(function(window, document, undefined) { - - -var factory = function( $, DataTable ) { -"use strict"; - -/** - * Responsive is a plug-in for the DataTables library that makes use of - * DataTables' ability to change the visibility of columns, changing the - * visibility of columns so the displayed columns fit into the table container. - * The end result is that complex tables will be dynamically adjusted to fit - * into the viewport, be it on a desktop, tablet or mobile browser. - * - * Responsive for DataTables has two modes of operation, which can used - * individually or combined: - * - * * Class name based control - columns assigned class names that match the - * breakpoint logic can be shown / hidden as required for each breakpoint. - * * Automatic control - columns are automatically hidden when there is no - * room left to display them. Columns removed from the right. - * - * In additional to column visibility control, Responsive also has built into - * options to use DataTables' child row display to show / hide the information - * from the table that has been hidden. There are also two modes of operation - * for this child row display: - * - * * Inline - when the control element that the user can use to show / hide - * child rows is displayed inside the first column of the table. - * * Column - where a whole column is dedicated to be the show / hide control. - * - * Initialisation of Responsive is performed by: - * - * * Adding the class `responsive` or `dt-responsive` to the table. In this case - * Responsive will automatically be initialised with the default configuration - * options when the DataTable is created. - * * Using the `responsive` option in the DataTables configuration options. This - * can also be used to specify the configuration options, or simply set to - * `true` to use the defaults. - * - * @class - * @param {object} settings DataTables settings object for the host table - * @param {object} [opts] Configuration options - * @requires jQuery 1.7+ - * @requires DataTables 1.10.1+ - * - * @example - * $('#example').DataTable( { - * responsive: true - * } ); - * } ); - */ -var Responsive = function ( settings, opts ) { - // Sanity check that we are using DataTables 1.10 or newer - if ( ! DataTable.versionCheck || ! DataTable.versionCheck( '1.10.1' ) ) { - throw 'DataTables Responsive requires DataTables 1.10.1 or newer'; - } - - this.s = { - dt: new DataTable.Api( settings ), - columns: [] - }; - - // Check if responsive has already been initialised on this table - if ( this.s.dt.settings()[0].responsive ) { - return; - } - - // details is an object, but for simplicity the user can give it as a string - if ( opts && typeof opts.details === 'string' ) { - opts.details = { type: opts.details }; - } - - this.c = $.extend( true, {}, Responsive.defaults, DataTable.defaults.responsive, opts ); - settings.responsive = this; - this._constructor(); -}; - -Responsive.prototype = { - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Constructor - */ - - /** - * Initialise the Responsive instance - * - * @private - */ - _constructor: function () - { - var that = this; - var dt = this.s.dt; - - dt.settings()[0]._responsive = this; - - // Use DataTables' private throttle function to avoid processor thrashing - $(window).on( 'resize.dtr orientationchange.dtr', dt.settings()[0].oApi._fnThrottle( function () { - that._resize(); - } ) ); - - // Destroy event handler - dt.on( 'destroy.dtr', function () { - $(window).off( 'resize.dtr orientationchange.dtr draw.dtr' ); - } ); - - // Reorder the breakpoints array here in case they have been added out - // of order - this.c.breakpoints.sort( function (a, b) { - return a.width < b.width ? 1 : - a.width > b.width ? -1 : 0; - } ); - - // Determine which columns are already hidden, and should therefore - // remain hidden. todo - should this be done? See thread 22677 - // - // this.s.alwaysHidden = dt.columns(':hidden').indexes(); - - this._classLogic(); - this._resizeAuto(); - - // Details handler - var details = this.c.details; - if ( details.type ) { - that._detailsInit(); - this._detailsVis(); - - dt.on( 'column-visibility.dtr', function () { - that._detailsVis(); - } ); - - // Redraw the details box on each draw. This is used until - // DataTables implements a native `updated` event for rows - dt.on( 'draw.dtr', function () { - dt.rows( {page: 'current'} ).iterator( 'row', function ( settings, idx ) { - var row = dt.row( idx ); - - if ( row.child.isShown() ) { - var info = that.c.details.renderer( dt, idx ); - row.child( info, 'child' ).show(); - } - } ); - } ); - - $(dt.table().node()).addClass( 'dtr-'+details.type ); - } - - // First pass - draw the table for the current viewport size - this._resize(); - }, - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Private methods - */ - - /** - * Calculate the visibility for the columns in a table for a given - * breakpoint. The result is pre-determined based on the class logic if - * class names are used to control all columns, but the width of the table - * is also used if there are columns which are to be automatically shown - * and hidden. - * - * @param {string} breakpoint Breakpoint name to use for the calculation - * @return {array} Array of boolean values initiating the visibility of each - * column. - * @private - */ - _columnsVisiblity: function ( breakpoint ) - { - var dt = this.s.dt; - var columns = this.s.columns; - var i, ien; - - // Class logic - determine which columns are in this breakpoint based - // on the classes. If no class control (i.e. `auto`) then `-` is used - // to indicate this to the rest of the function - var display = $.map( columns, function ( col ) { - return col.auto && col.minWidth === null ? - false : - col.auto === true ? - '-' : - $.inArray( breakpoint, col.includeIn ) !== -1; - } ); - - // Auto column control - first pass: how much width is taken by the - // ones that must be included from the non-auto columns - var requiredWidth = 0; - for ( i=0, ien=display.length ; i<ien ; i++ ) { - if ( display[i] === true ) { - requiredWidth += columns[i].minWidth; - } - } - - // Second pass, use up any remaining width for other columns. For - // scrolling tables we need to subtract the width of the scrollbar. It - // may not be requires which makes this sub-optimal, but it would - // require another full redraw to make complete use of those extra few - // pixels - var scrolling = dt.settings()[0].oScroll; - var bar = scrolling.sY || scrolling.sX ? scrolling.iBarWidth : 0; - var widthAvailable = dt.table().container().offsetWidth - bar; - var usedWidth = widthAvailable - requiredWidth; - - // Control column needs to always be included. This makes it sub- - // optimal in terms of using the available with, but to stop layout - // thrashing or overflow. Also we need to account for the control column - // width first so we know how much width is available for the other - // columns, since the control column might not be the first one shown - for ( i=0, ien=display.length ; i<ien ; i++ ) { - if ( columns[i].control ) { - usedWidth -= columns[i].minWidth; - } - } - - // Allow columns to be shown (counting from the left) until we run out - // of room - var empty = false; - for ( i=0, ien=display.length ; i<ien ; i++ ) { - if ( display[i] === '-' && ! columns[i].control ) { - // Once we've found a column that won't fit we don't let any - // others display either, or columns might disappear in the - // middle of the table - if ( empty || usedWidth - columns[i].minWidth < 0 ) { - empty = true; - display[i] = false; - } - else { - display[i] = true; - } - - usedWidth -= columns[i].minWidth; - } - } - - // Determine if the 'control' column should be shown (if there is one). - // This is the case when there is a hidden column (that is not the - // control column). The two loops look inefficient here, but they are - // trivial and will fly through. We need to know the outcome from the - // first , before the action in the second can be taken - var showControl = false; - - for ( i=0, ien=columns.length ; i<ien ; i++ ) { - if ( ! columns[i].control && ! columns[i].never && ! display[i] ) { - showControl = true; - break; - } - } - - for ( i=0, ien=columns.length ; i<ien ; i++ ) { - if ( columns[i].control ) { - display[i] = showControl; - } - } - - // Finally we need to make sure that there is at least one column that - // is visible - if ( $.inArray( true, display ) === -1 ) { - display[0] = true; - } - - return display; - }, - - - /** - * Create the internal `columns` array with information about the columns - * for the table. This includes determining which breakpoints the column - * will appear in, based upon class names in the column, which makes up the - * vast majority of this method. - * - * @private - */ - _classLogic: function () - { - var that = this; - var calc = {}; - var breakpoints = this.c.breakpoints; - var columns = this.s.dt.columns().eq(0).map( function (i) { - var className = this.column(i).header().className; - - return { - className: className, - includeIn: [], - auto: false, - control: false, - never: className.match(/\bnever\b/) ? true : false - }; - } ); - - // Simply add a breakpoint to `includeIn` array, ensuring that there are - // no duplicates - var add = function ( colIdx, name ) { - var includeIn = columns[ colIdx ].includeIn; - - if ( $.inArray( name, includeIn ) === -1 ) { - includeIn.push( name ); - } - }; - - var column = function ( colIdx, name, operator, matched ) { - var size, i, ien; - - if ( ! operator ) { - columns[ colIdx ].includeIn.push( name ); - } - else if ( operator === 'max-' ) { - // Add this breakpoint and all smaller - size = that._find( name ).width; - - for ( i=0, ien=breakpoints.length ; i<ien ; i++ ) { - if ( breakpoints[i].width <= size ) { - add( colIdx, breakpoints[i].name ); - } - } - } - else if ( operator === 'min-' ) { - // Add this breakpoint and all larger - size = that._find( name ).width; - - for ( i=0, ien=breakpoints.length ; i<ien ; i++ ) { - if ( breakpoints[i].width >= size ) { - add( colIdx, breakpoints[i].name ); - } - } - } - else if ( operator === 'not-' ) { - // Add all but this breakpoint (xxx need extra information) - - for ( i=0, ien=breakpoints.length ; i<ien ; i++ ) { - if ( breakpoints[i].name.indexOf( matched ) === -1 ) { - add( colIdx, breakpoints[i].name ); - } - } - } - }; - - // Loop over each column and determine if it has a responsive control - // class - columns.each( function ( col, i ) { - var classNames = col.className.split(' '); - var hasClass = false; - - // Split the class name up so multiple rules can be applied if needed - for ( var k=0, ken=classNames.length ; k<ken ; k++ ) { - var className = $.trim( classNames[k] ); - - if ( className === 'all' ) { - // Include in all - hasClass = true; - col.includeIn = $.map( breakpoints, function (a) { - return a.name; - } ); - return; - } - else if ( className === 'none' || className === 'never' ) { - // Include in none (default) and no auto - hasClass = true; - return; - } - else if ( className === 'control' ) { - // Special column that is only visible, when one of the other - // columns is hidden. This is used for the details control - hasClass = true; - col.control = true; - return; - } - - $.each( breakpoints, function ( j, breakpoint ) { - // Does this column have a class that matches this breakpoint? - var brokenPoint = breakpoint.name.split('-'); - var re = new RegExp( '(min\\-|max\\-|not\\-)?('+brokenPoint[0]+')(\\-[_a-zA-Z0-9])?' ); - var match = className.match( re ); - - if ( match ) { - hasClass = true; - - if ( match[2] === brokenPoint[0] && match[3] === '-'+brokenPoint[1] ) { - // Class name matches breakpoint name fully - column( i, breakpoint.name, match[1], match[2]+match[3] ); - } - else if ( match[2] === brokenPoint[0] && ! match[3] ) { - // Class name matched primary breakpoint name with no qualifier - column( i, breakpoint.name, match[1], match[2] ); - } - } - } ); - } - - // If there was no control class, then automatic sizing is used - if ( ! hasClass ) { - col.auto = true; - } - } ); - - this.s.columns = columns; - }, - - - /** - * Initialisation for the details handler - * - * @private - */ - _detailsInit: function () - { - var that = this; - var dt = this.s.dt; - var details = this.c.details; - - // The inline type always uses the first child as the target - if ( details.type === 'inline' ) { - details.target = 'td:first-child'; - } - - // type.target can be a string jQuery selector or a column index - var target = details.target; - var selector = typeof target === 'string' ? target : 'td'; - - // Click handler to show / hide the details rows when they are available - $( dt.table().body() ).on( 'click', selector, function (e) { - // If the table is not collapsed (i.e. there is no hidden columns) - // then take no action - if ( ! $(dt.table().node()).hasClass('collapsed' ) ) { - return; - } - - // Check that the row is actually a DataTable's controlled node - if ( ! dt.row( $(this).closest('tr') ).length ) { - return; - } - - // For column index, we determine if we should act or not in the - // handler - otherwise it is already okay - if ( typeof target === 'number' ) { - var targetIdx = target < 0 ? - dt.columns().eq(0).length + target : - target; - - if ( dt.cell( this ).index().column !== targetIdx ) { - return; - } - } - - // $().closest() includes itself in its check - var row = dt.row( $(this).closest('tr') ); - - if ( row.child.isShown() ) { - row.child( false ); - $( row.node() ).removeClass( 'parent' ); - } - else { - var info = that.c.details.renderer( dt, row[0] ); - row.child( info, 'child' ).show(); - $( row.node() ).addClass( 'parent' ); - } - } ); - }, - - - /** - * Update the child rows in the table whenever the column visibility changes - * - * @private - */ - _detailsVis: function () - { - var that = this; - var dt = this.s.dt; - - // Find how many columns are hidden - var hiddenColumns = dt.columns().indexes().filter( function ( idx ) { - var col = dt.column( idx ); - - if ( col.visible() ) { - return null; - } - - // Only counts as hidden if it doesn't have the `never` class - return $( col.header() ).hasClass( 'never' ) ? null : idx; - } ); - var haveHidden = true; - - if ( hiddenColumns.length === 0 || ( hiddenColumns.length === 1 && this.s.columns[ hiddenColumns[0] ].control ) ) { - haveHidden = false; - } - - if ( haveHidden ) { - // Show all existing child rows - dt.rows( { page: 'current' } ).eq(0).each( function (idx) { - var row = dt.row( idx ); - - if ( row.child() ) { - var info = that.c.details.renderer( dt, row[0] ); - - // The renderer can return false to have no child row - if ( info === false ) { - row.child.hide(); - } - else { - row.child( info, 'child' ).show(); - } - } - } ); - } - else { - // Hide all existing child rows - dt.rows( { page: 'current' } ).eq(0).each( function (idx) { - dt.row( idx ).child.hide(); - } ); - } - }, - - - /** - * Find a breakpoint object from a name - * @param {string} name Breakpoint name to find - * @return {object} Breakpoint description object - */ - _find: function ( name ) - { - var breakpoints = this.c.breakpoints; - - for ( var i=0, ien=breakpoints.length ; i<ien ; i++ ) { - if ( breakpoints[i].name === name ) { - return breakpoints[i]; - } - } - }, - - - /** - * Alter the table display for a resized viewport. This involves first - * determining what breakpoint the window currently is in, getting the - * column visibilities to apply and then setting them. - * - * @private - */ - _resize: function () - { - var dt = this.s.dt; - var width = $(window).width(); - var breakpoints = this.c.breakpoints; - var breakpoint = breakpoints[0].name; - var columns = this.s.columns; - var i, ien; - - // Determine what breakpoint we are currently at - for ( i=breakpoints.length-1 ; i>=0 ; i-- ) { - if ( width <= breakpoints[i].width ) { - breakpoint = breakpoints[i].name; - break; - } - } - - // Show the columns for that break point - var columnsVis = this._columnsVisiblity( breakpoint ); - - // Set the class before the column visibility is changed so event - // listeners know what the state is. Need to determine if there are - // any columns that are not visible but can be shown - var collapsedClass = false; - for ( i=0, ien=columns.length ; i<ien ; i++ ) { - if ( columnsVis[i] === false && ! columns[i].never ) { - collapsedClass = true; - break; - } - } - - $( dt.table().node() ).toggleClass('collapsed', collapsedClass ); - - dt.columns().eq(0).each( function ( colIdx, i ) { - dt.column( colIdx ).visible( columnsVis[i] ); - } ); - }, - - - /** - * Determine the width of each column in the table so the auto column hiding - * has that information to work with. This method is never going to be 100% - * perfect since column widths can change slightly per page, but without - * seriously compromising performance this is quite effective. - * - * @private - */ - _resizeAuto: function () - { - var dt = this.s.dt; - var columns = this.s.columns; - - // Are we allowed to do auto sizing? - if ( ! this.c.auto ) { - return; - } - - // Are there any columns that actually need auto-sizing, or do they all - // have classes defined - if ( $.inArray( true, $.map( columns, function (c) { return c.auto; } ) ) === -1 ) { - return; - } - - // Clone the table with the current data in it - var tableWidth = dt.table().node().offsetWidth; - var columnWidths = dt.columns; - var clonedTable = dt.table().node().cloneNode( false ); - var clonedHeader = $( dt.table().header().cloneNode( false ) ).appendTo( clonedTable ); - var clonedBody = $( dt.table().body().cloneNode( false ) ).appendTo( clonedTable ); - - $( dt.table().footer() ).clone( false ).appendTo( clonedTable ); - - // This is a bit slow, but we need to get a clone of each row that - // includes all columns. As such, try to do this as little as possible. - dt.rows( { page: 'current' } ).indexes().flatten().each( function ( idx ) { - var clone = dt.row( idx ).node().cloneNode( true ); - - if ( dt.columns( ':hidden' ).flatten().length ) { - $(clone).append( dt.cells( idx, ':hidden' ).nodes().to$().clone() ); - } - - $(clone).appendTo( clonedBody ); - } ); - - var cells = dt.columns().header().to$().clone( false ); - $('<tr/>') - .append( cells ) - .appendTo( clonedHeader ); - - // In the inline case extra padding is applied to the first column to - // give space for the show / hide icon. We need to use this in the - // calculation - if ( this.c.details.type === 'inline' ) { - $(clonedTable).addClass( 'dtr-inline collapsed' ); - } - - var inserted = $('<div/>') - .css( { - width: 1, - height: 1, - overflow: 'hidden' - } ) - .append( clonedTable ); - - // Remove columns which are not to be included - inserted.find('th.never, td.never').remove(); - - inserted.insertBefore( dt.table().node() ); - - // The cloned header now contains the smallest that each column can be - dt.columns().eq(0).each( function ( idx ) { - columns[idx].minWidth = cells[ idx ].offsetWidth || 0; - } ); - - inserted.remove(); - } -}; - - -/** - * List of default breakpoints. Each item in the array is an object with two - * properties: - * - * * `name` - the breakpoint name. - * * `width` - the breakpoint width - * - * @name Responsive.breakpoints - * @static - */ -Responsive.breakpoints = [ - { name: 'desktop', width: Infinity }, - { name: 'tablet-l', width: 1024 }, - { name: 'tablet-p', width: 768 }, - { name: 'mobile-l', width: 480 }, - { name: 'mobile-p', width: 320 } -]; - - -/** - * Responsive default settings for initialisation - * - * @namespace - * @name Responsive.defaults - * @static - */ -Responsive.defaults = { - /** - * List of breakpoints for the instance. Note that this means that each - * instance can have its own breakpoints. Additionally, the breakpoints - * cannot be changed once an instance has been creased. - * - * @type {Array} - * @default Takes the value of `Responsive.breakpoints` - */ - breakpoints: Responsive.breakpoints, - - /** - * Enable / disable auto hiding calculations. It can help to increase - * performance slightly if you disable this option, but all columns would - * need to have breakpoint classes assigned to them - * - * @type {Boolean} - * @default `true` - */ - auto: true, - - /** - * Details control. If given as a string value, the `type` property of the - * default object is set to that value, and the defaults used for the rest - * of the object - this is for ease of implementation. - * - * The object consists of the following properties: - * - * * `renderer` - function that is called for display of the child row data. - * The default function will show the data from the hidden columns - * * `target` - Used as the selector for what objects to attach the child - * open / close to - * * `type` - `false` to disable the details display, `inline` or `column` - * for the two control types - * - * @type {Object|string} - */ - details: { - renderer: function ( api, rowIdx ) { - var data = api.cells( rowIdx, ':hidden' ).eq(0).map( function ( cell ) { - var header = $( api.column( cell.column ).header() ); - var idx = api.cell( cell ).index(); - - if ( header.hasClass( 'control' ) || header.hasClass( 'never' ) ) { - return ''; - } - - // Use a non-public DT API method to render the data for display - // This needs to be updated when DT adds a suitable method for - // this type of data retrieval - var dtPrivate = api.settings()[0]; - var cellData = dtPrivate.oApi._fnGetCellData( - dtPrivate, idx.row, idx.column, 'display' - ); - var title = header.text(); - if ( title ) { - title = title + ':'; - } - - return '<li data-dtr-index="'+idx.column+'">'+ - '<span class="dtr-title">'+ - title+ - '</span> '+ - '<span class="dtr-data">'+ - cellData+ - '</span>'+ - '</li>'; - } ).toArray().join(''); - - return data ? - $('<ul data-dtr-index="'+rowIdx+'"/>').append( data ) : - false; - }, - - target: 0, - - type: 'inline' - } -}; - - -/* - * API - */ -var Api = $.fn.dataTable.Api; - -// Doesn't do anything - work around for a bug in DT... Not documented -Api.register( 'responsive()', function () { - return this; -} ); - -Api.register( 'responsive.index()', function ( li ) { - li = $(li); - - return { - column: li.data('dtr-index'), - row: li.parent().data('dtr-index') - }; -} ); - -Api.register( 'responsive.rebuild()', function () { - return this.iterator( 'table', function ( ctx ) { - if ( ctx._responsive ) { - ctx._responsive._classLogic(); - } - } ); -} ); - -Api.register( 'responsive.recalc()', function () { - return this.iterator( 'table', function ( ctx ) { - if ( ctx._responsive ) { - ctx._responsive._resizeAuto(); - ctx._responsive._resize(); - } - } ); -} ); - - -/** - * Version information - * - * @name Responsive.version - * @static - */ -Responsive.version = '1.0.6'; - - -$.fn.dataTable.Responsive = Responsive; -$.fn.DataTable.Responsive = Responsive; - -// Attach a listener to the document which listens for DataTables initialisation -// events so we can automatically initialise -$(document).on( 'init.dt.dtr', function (e, settings, json) { - if ( e.namespace !== 'dt' ) { - return; - } - - if ( $(settings.nTable).hasClass( 'responsive' ) || - $(settings.nTable).hasClass( 'dt-responsive' ) || - settings.oInit.responsive || - DataTable.defaults.responsive - ) { - var init = settings.oInit.responsive; - - if ( init !== false ) { - new Responsive( settings, $.isPlainObject( init ) ? init : {} ); - } - } -} ); - -return Responsive; -}; // /factory - - -// Define as an AMD module if possible -if ( typeof define === 'function' && define.amd ) { - define( ['jquery', 'datatables'], factory ); -} -else if ( typeof exports === 'object' ) { - // Node/CommonJS - factory( require('jquery'), require('datatables') ); -} -else if ( jQuery && !jQuery.fn.dataTable.Responsive ) { - // Otherwise simply initialise as normal, stopping multiple evaluation - factory( jQuery, jQuery.fn.dataTable ); -} - - -})(window, document); diff --git a/assets/plugins/datatables/extensions/Responsive/js/dataTables.responsive.min.js b/assets/plugins/datatables/extensions/Responsive/js/dataTables.responsive.min.js deleted file mode 100644 index 1142b801..00000000 --- a/assets/plugins/datatables/extensions/Responsive/js/dataTables.responsive.min.js +++ /dev/null @@ -1,19 +0,0 @@ -/*! - Responsive 1.0.6 - 2014-2015 SpryMedia Ltd - datatables.net/license -*/ -(function(n,p){var o=function(e,k){var h=function(d,a){if(!k.versionCheck||!k.versionCheck("1.10.1"))throw"DataTables Responsive requires DataTables 1.10.1 or newer";this.s={dt:new k.Api(d),columns:[]};this.s.dt.settings()[0].responsive||(a&&"string"===typeof a.details&&(a.details={type:a.details}),this.c=e.extend(!0,{},h.defaults,k.defaults.responsive,a),d.responsive=this,this._constructor())};h.prototype={_constructor:function(){var d=this,a=this.s.dt;a.settings()[0]._responsive=this;e(n).on("resize.dtr orientationchange.dtr", -a.settings()[0].oApi._fnThrottle(function(){d._resize()}));a.on("destroy.dtr",function(){e(n).off("resize.dtr orientationchange.dtr draw.dtr")});this.c.breakpoints.sort(function(a,c){return a.width<c.width?1:a.width>c.width?-1:0});this._classLogic();this._resizeAuto();var c=this.c.details;c.type&&(d._detailsInit(),this._detailsVis(),a.on("column-visibility.dtr",function(){d._detailsVis()}),a.on("draw.dtr",function(){a.rows({page:"current"}).iterator("row",function(b,c){var f=a.row(c);if(f.child.isShown()){var i= -d.c.details.renderer(a,c);f.child(i,"child").show()}})}),e(a.table().node()).addClass("dtr-"+c.type));this._resize()},_columnsVisiblity:function(d){var a=this.s.dt,c=this.s.columns,b,g,f=e.map(c,function(a){return a.auto&&null===a.minWidth?!1:!0===a.auto?"-":-1!==e.inArray(d,a.includeIn)}),i=0;b=0;for(g=f.length;b<g;b++)!0===f[b]&&(i+=c[b].minWidth);b=a.settings()[0].oScroll;b=b.sY||b.sX?b.iBarWidth:0;a=a.table().container().offsetWidth-b-i;b=0;for(g=f.length;b<g;b++)c[b].control&&(a-=c[b].minWidth); -i=!1;b=0;for(g=f.length;b<g;b++)"-"===f[b]&&!c[b].control&&(i||0>a-c[b].minWidth?(i=!0,f[b]=!1):f[b]=!0,a-=c[b].minWidth);a=!1;b=0;for(g=c.length;b<g;b++)if(!c[b].control&&!c[b].never&&!f[b]){a=!0;break}b=0;for(g=c.length;b<g;b++)c[b].control&&(f[b]=a);-1===e.inArray(!0,f)&&(f[0]=!0);return f},_classLogic:function(){var d=this,a=this.c.breakpoints,c=this.s.dt.columns().eq(0).map(function(a){a=this.column(a).header().className;return{className:a,includeIn:[],auto:!1,control:!1,never:a.match(/\bnever\b/)? -!0:!1}}),b=function(a,b){var d=c[a].includeIn;-1===e.inArray(b,d)&&d.push(b)},g=function(f,g,e,j){if(e)if("max-"===e){j=d._find(g).width;g=0;for(e=a.length;g<e;g++)a[g].width<=j&&b(f,a[g].name)}else if("min-"===e){j=d._find(g).width;g=0;for(e=a.length;g<e;g++)a[g].width>=j&&b(f,a[g].name)}else{if("not-"===e){g=0;for(e=a.length;g<e;g++)-1===a[g].name.indexOf(j)&&b(f,a[g].name)}}else c[f].includeIn.push(g)};c.each(function(b,c){for(var d=b.className.split(" "),j=!1,h=0,k=d.length;h<k;h++){var l=e.trim(d[h]); -if("all"===l){j=!0;b.includeIn=e.map(a,function(a){return a.name});return}if("none"===l||"never"===l){j=!0;return}if("control"===l){j=!0;b.control=!0;return}e.each(a,function(a,b){var d=b.name.split("-"),e=l.match(RegExp("(min\\-|max\\-|not\\-)?("+d[0]+")(\\-[_a-zA-Z0-9])?"));e&&(j=!0,e[2]===d[0]&&e[3]==="-"+d[1]?g(c,b.name,e[1],e[2]+e[3]):e[2]===d[0]&&!e[3]&&g(c,b.name,e[1],e[2]))})}j||(b.auto=!0)});this.s.columns=c},_detailsInit:function(){var d=this,a=this.s.dt,c=this.c.details;"inline"===c.type&& -(c.target="td:first-child");var b=c.target;e(a.table().body()).on("click","string"===typeof b?b:"td",function(){if(e(a.table().node()).hasClass("collapsed")&&a.row(e(this).closest("tr")).length){if(typeof b==="number"){var c=b<0?a.columns().eq(0).length+b:b;if(a.cell(this).index().column!==c)return}c=a.row(e(this).closest("tr"));if(c.child.isShown()){c.child(false);e(c.node()).removeClass("parent")}else{var f=d.c.details.renderer(a,c[0]);c.child(f,"child").show();e(c.node()).addClass("parent")}}})}, -_detailsVis:function(){var d=this,a=this.s.dt,c=a.columns().indexes().filter(function(b){var c=a.column(b);return c.visible()?null:e(c.header()).hasClass("never")?null:b}),b=!0;if(0===c.length||1===c.length&&this.s.columns[c[0]].control)b=!1;b?a.rows({page:"current"}).eq(0).each(function(b){b=a.row(b);if(b.child()){var c=d.c.details.renderer(a,b[0]);!1===c?b.child.hide():b.child(c,"child").show()}}):a.rows({page:"current"}).eq(0).each(function(b){a.row(b).child.hide()})},_find:function(d){for(var a= -this.c.breakpoints,c=0,b=a.length;c<b;c++)if(a[c].name===d)return a[c]},_resize:function(){var d=this.s.dt,a=e(n).width(),c=this.c.breakpoints,b=c[0].name,g=this.s.columns,f;for(f=c.length-1;0<=f;f--)if(a<=c[f].width){b=c[f].name;break}var i=this._columnsVisiblity(b),c=!1;f=0;for(a=g.length;f<a;f++)if(!1===i[f]&&!g[f].never){c=!0;break}e(d.table().node()).toggleClass("collapsed",c);d.columns().eq(0).each(function(a,b){d.column(a).visible(i[b])})},_resizeAuto:function(){var d=this.s.dt,a=this.s.columns; -if(this.c.auto&&-1!==e.inArray(!0,e.map(a,function(a){return a.auto}))){d.table().node();var c=d.table().node().cloneNode(!1),b=e(d.table().header().cloneNode(!1)).appendTo(c),g=e(d.table().body().cloneNode(!1)).appendTo(c);e(d.table().footer()).clone(!1).appendTo(c);d.rows({page:"current"}).indexes().flatten().each(function(a){var b=d.row(a).node().cloneNode(!0);d.columns(":hidden").flatten().length&&e(b).append(d.cells(a,":hidden").nodes().to$().clone());e(b).appendTo(g)});var f=d.columns().header().to$().clone(!1); -e("<tr/>").append(f).appendTo(b);"inline"===this.c.details.type&&e(c).addClass("dtr-inline collapsed");c=e("<div/>").css({width:1,height:1,overflow:"hidden"}).append(c);c.find("th.never, td.never").remove();c.insertBefore(d.table().node());d.columns().eq(0).each(function(b){a[b].minWidth=f[b].offsetWidth||0});c.remove()}}};h.breakpoints=[{name:"desktop",width:Infinity},{name:"tablet-l",width:1024},{name:"tablet-p",width:768},{name:"mobile-l",width:480},{name:"mobile-p",width:320}];h.defaults={breakpoints:h.breakpoints, -auto:!0,details:{renderer:function(d,a){var c=d.cells(a,":hidden").eq(0).map(function(a){var c=e(d.column(a.column).header()),a=d.cell(a).index();if(c.hasClass("control")||c.hasClass("never"))return"";var f=d.settings()[0],f=f.oApi._fnGetCellData(f,a.row,a.column,"display");(c=c.text())&&(c+=":");return'<li data-dtr-index="'+a.column+'"><span class="dtr-title">'+c+'</span> <span class="dtr-data">'+f+"</span></li>"}).toArray().join("");return c?e('<ul data-dtr-index="'+a+'"/>').append(c):!1},target:0, -type:"inline"}};var m=e.fn.dataTable.Api;m.register("responsive()",function(){return this});m.register("responsive.index()",function(d){d=e(d);return{column:d.data("dtr-index"),row:d.parent().data("dtr-index")}});m.register("responsive.rebuild()",function(){return this.iterator("table",function(d){d._responsive&&d._responsive._classLogic()})});m.register("responsive.recalc()",function(){return this.iterator("table",function(d){d._responsive&&(d._responsive._resizeAuto(),d._responsive._resize())})}); -h.version="1.0.6";e.fn.dataTable.Responsive=h;e.fn.DataTable.Responsive=h;e(p).on("init.dt.dtr",function(d,a){if("dt"===d.namespace&&(e(a.nTable).hasClass("responsive")||e(a.nTable).hasClass("dt-responsive")||a.oInit.responsive||k.defaults.responsive)){var c=a.oInit.responsive;!1!==c&&new h(a,e.isPlainObject(c)?c:{})}});return h};"function"===typeof define&&define.amd?define(["jquery","datatables"],o):"object"===typeof exports?o(require("jquery"),require("datatables")):jQuery&&!jQuery.fn.dataTable.Responsive&& -o(jQuery,jQuery.fn.dataTable)})(window,document); diff --git a/assets/plugins/datatables/extensions/Scroller/Readme.txt b/assets/plugins/datatables/extensions/Scroller/Readme.txt deleted file mode 100644 index d262eaf8..00000000 --- a/assets/plugins/datatables/extensions/Scroller/Readme.txt +++ /dev/null @@ -1,43 +0,0 @@ -# Scroller - -Scroller is a virtual rendering plug-in for DataTables which allows large datasets to be drawn on screen every quickly. What the virtual rendering means is that only the visible portion of the table (and a bit to either side to make the scrolling smooth) is drawn, while the scrolling container gives the visual impression that the whole table is visible. This is done by making use of the pagination abilities of DataTables and moving the table around in the scrolling container DataTables adds to the page. The scrolling container is forced to the height it would be for the full table display using an extra element. - -Key features include: - -* Speed! The aim of Scroller for DataTables is to make rendering large data sets fast -* Full compatibility with DataTables' deferred rendering for maximum speed -* Integration with state saving in DataTables (scrolling position is saved) -* Support for scrolling with millions of rows -* Easy to use - - -# Installation - -To use Scroller, first download DataTables ( http://datatables.net/download ) and place the unzipped Scroller package into a `extensions` directory in the DataTables package. This will allow the pages in the examples to operate correctly. To see the examples running, open the `examples` directory in your web-browser. - - -# Basic usage - -Scroller is initialised by simply including the letter `dt-string S` in the `dt-init dom` for the table you want to have this feature enabled on. Note that the `dt-string S` must come after the `dt-string t` parameter in `dom`. For example: - -```js -$(document).ready( function () { - $('#example').DataTable( { - dom: 'lfrtipS' - } ); -} ); -``` - -Note that rows in the table must all be the same height. Information in a cell which expands on to multiple lines will cause some odd behaviour in the scrolling. Additionally, the table's `cellspacing` parameter must be set to 0, again to ensure the information display is correct. - - -# Documentation / support - -* Documentation: http://datatables.net/extensions/scroller/ -* DataTables support forums: http://datatables.net/forums - - -# GitHub - -If you fancy getting involved with the development of Scroller and help make it better, please refer to its GitHub repo: https://github.com/DataTables/Scroller - diff --git a/assets/plugins/datatables/extensions/Scroller/css/dataTables.scroller.css b/assets/plugins/datatables/extensions/Scroller/css/dataTables.scroller.css deleted file mode 100644 index 4bbaa575..00000000 --- a/assets/plugins/datatables/extensions/Scroller/css/dataTables.scroller.css +++ /dev/null @@ -1,44 +0,0 @@ - -/* - * Namespace: DTS (DataTables Scroller) - */ - -div.DTS tbody th, -div.DTS tbody td { - white-space: nowrap; -} - -div.DTS tbody tr.even { - background-color: white; -} - -div.DTS div.DTS_Loading { - position: absolute; - top: 50%; - left: 50%; - width: 200px; - height: 20px; - margin-top: -20px; - margin-left: -100px; - z-index: 1; - - border: 1px solid #999; - padding: 20px 0; - text-align: center; - background-color: white; - background-color: rgba(255, 255, 255, 0.5); -} - -div.DTS div.dataTables_scrollHead, -div.DTS div.dataTables_scrollFoot { - background-color: white; -} - -div.DTS div.dataTables_scrollBody { - z-index: 2; -} - -div.DTS div.dataTables_scroll { - background: url('../images/loading-background.png') repeat 0 0; -} - diff --git a/assets/plugins/datatables/extensions/Scroller/css/dataTables.scroller.min.css b/assets/plugins/datatables/extensions/Scroller/css/dataTables.scroller.min.css deleted file mode 100644 index 499b85d6..00000000 --- a/assets/plugins/datatables/extensions/Scroller/css/dataTables.scroller.min.css +++ /dev/null @@ -1 +0,0 @@ -div.DTS tbody th,div.DTS tbody td{white-space:nowrap}div.DTS tbody tr.even{background-color:white}div.DTS div.DTS_Loading{position:absolute;top:50%;left:50%;width:200px;height:20px;margin-top:-20px;margin-left:-100px;z-index:1;border:1px solid #999;padding:20px 0;text-align:center;background-color:white;background-color:rgba(255,255,255,0.5)}div.DTS div.dataTables_scrollHead,div.DTS div.dataTables_scrollFoot{background-color:white}div.DTS div.dataTables_scrollBody{z-index:2}div.DTS div.dataTables_scroll{background:url("../images/loading-background.png") repeat 0 0} diff --git a/assets/plugins/datatables/extensions/Scroller/examples/api_scrolling.html b/assets/plugins/datatables/extensions/Scroller/examples/api_scrolling.html deleted file mode 100644 index 1653d215..00000000 --- a/assets/plugins/datatables/extensions/Scroller/examples/api_scrolling.html +++ /dev/null @@ -1,174 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>Scroller example - API</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.scroller.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.scroller.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - $('#example').DataTable( { - ajax: "data/2500.txt", - deferRender: true, - dom: "frtiS", - scrollY: 200, - scrollCollapse: true, - initComplete: function () { - var api = this.api(); - api.scroller().scrollToRow( 1000 ); - } - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>Scroller example <span>API</span></h1> - - <div class="info"> - <p>This example shows a trivial use of the API methods that Scroller adds to the DataTables API to - scroll to a row once the table's data has been loaded. In this case - <code>scroller().scrollToRow()</code> is used to jump to row 1000.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>ID</th> - <th>First name</th> - <th>Last name</th> - <th>ZIP / Post code</th> - <th>Country</th> - </tr> - </thead> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this - example:</p><code class="multiline brush: js;">$(document).ready(function() { - $('#example').DataTable( { - ajax: &quot;data/2500.txt&quot;, - deferRender: true, - dom: &quot;frtiS&quot;, - scrollY: 200, - scrollCollapse: true, - initComplete: function () { - var api = this.api(); - api.scroller().scrollToRow( 1000 ); - } - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this - example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href= - "../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.scroller.js">../js/dataTables.scroller.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by - DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library - files (below), in order to correctly display the table. The additional CSS used is shown - below:</p><code class="multiline brush: js;"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the - table:</p> - - <ul> - <li><a href= - "../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.scroller.css">../css/dataTables.scroller.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data - will update automatically as any additional data is loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note - that this is just an example script using PHP. Server-side processing scripts can be written in any - language, using <a href="//datatables.net/manual/server-side">the protocol described in the - DataTables documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./state_saving.html">State saving</a></li> - <li><a href="./large_js_source.html">Client-side data source (50,000 rows)</a></li> - <li><a href="./server-side_processing.html">Server-side processing (5,000,000 - rows)</a></li> - <li class="active"><a href="./api_scrolling.html">API</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full - information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and - <a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of - DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href= - "http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/Scroller/examples/data/2500.txt b/assets/plugins/datatables/extensions/Scroller/examples/data/2500.txt deleted file mode 100644 index 4e9f706e..00000000 --- a/assets/plugins/datatables/extensions/Scroller/examples/data/2500.txt +++ /dev/null @@ -1,2502 +0,0 @@ -{ "aaData": [ - [ "1", "Armand", "Warren", "56045", "Taiwan, Province of China" ], - [ "2", "Xenos", "Salas", "71090", "Liberia" ], - [ "3", "Virginia", "Whitaker", "62723", "Nicaragua" ], - [ "4", "Kato", "Patrick", "97662", "Palau" ], - [ "5", "Penelope", "Hensley", "76634", "Greenland" ], - [ "6", "Georgia", "Erickson", "81358", "Bolivia" ], - [ "7", "Shad", "Pena", "20600", "Palestinian Territory, Occupied" ], - [ "8", "Tanisha", "Humphrey", "93371", "Kenya" ], - [ "9", "Claire", "Espinoza", "I8S 2S8", "Panama" ], - [ "10", "Raya", "Tucker", "O8D 8W7", "Botswana" ], - [ "11", "Otto", "Briggs", "57590", "Anguilla" ], - [ "12", "Logan", "Burt", "53041", "Venezuela" ], - [ "13", "Cooper", "Pennington", "36994", "France" ], - [ "14", "Kristen", "Peterson", "52917", "Sao Tome and Principe" ], - [ "15", "Jordan", "Velasquez", "08884", "Switzerland" ], - [ "16", "Zelda", "Freeman", "F9H 1J9", "Holy See (Vatican City State)" ], - [ "17", "Mary", "Pacheco", "A7Y 6X9", "Niger" ], - [ "18", "Tiger", "Robles", "44533", "Malaysia" ], - [ "19", "Zelenia", "Buckner", "Q8N 6E5", "Malawi" ], - [ "20", "Coby", "Johnston", "N6I 2O9", "Rwanda" ], - [ "21", "Gillian", "Strickland", "12258", "Cook Islands" ], - [ "22", "Alfreda", "Mcbride", "K5A 3B6", "Nigeria" ], - [ "23", "Laith", "Ford", "19072", "Czech Republic" ], - [ "24", "Autumn", "Barton", "U9D 9F4", "Angola" ], - [ "25", "Nadine", "Britt", "G4U 8L0", "Liechtenstein" ], - [ "26", "Xaviera", "Hart", "T1N 7D2", "Mali" ], - [ "27", "Neil", "Page", "T3E 9F4", "Korea" ], - [ "28", "Rose", "French", "B7T 8M2", "French Polynesia" ], - [ "29", "Alyssa", "Poole", "S1L 2T5", "Yemen" ], - [ "30", "Chantale", "Lynch", "97316", "United States" ], - [ "31", "Jermaine", "Dawson", "A3H 7A1", "American Samoa" ], - [ "32", "Ann", "Giles", "54258", "Korea" ], - [ "33", "Jerry", "Carr", "04901", "South Georgia and The South Sandwich Islands" ], - [ "34", "Lionel", "Hooper", "67970", "Bahrain" ], - [ "35", "Alyssa", "Hewitt", "R3K 2V8", "Paraguay" ], - [ "36", "Lisandra", "Sheppard", "71886", "Seychelles" ], - [ "37", "Kylan", "Harrison", "96763", "Italy" ], - [ "38", "Kaitlin", "Montgomery", "V5K 5U8", "Niger" ], - [ "39", "Heidi", "Boyd", "B3C 8M9", "Papua New Guinea" ], - [ "40", "Rinah", "Case", "W7M 5K1", "Mali" ], - [ "41", "Thaddeus", "Maynard", "E4V 6W6", "Egypt" ], - [ "42", "Lacota", "Ray", "T3J 8D8", "United Kingdom" ], - [ "43", "Olympia", "Cortez", "F8C 7I5", "Palau" ], - [ "44", "Wendy", "Rojas", "N8T 4K6", "Cook Islands" ], - [ "45", "Arden", "Kelley", "V9N 2T6", "India" ], - [ "46", "Colorado", "Lindsey", "96703", "Chad" ], - [ "47", "Alika", "Weaver", "F6V 1I1", "Bulgaria" ], - [ "48", "Phoebe", "Mack", "E4B 1X2", "El Salvador" ], - [ "49", "Sybill", "Bridges", "Z2G 6A2", "Somalia" ], - [ "50", "Trevor", "Larsen", "K1R 3B9", "United Arab Emirates" ], - [ "51", "Maya", "Battle", "70881", "Australia" ], - [ "52", "Charity", "Walton", "I4I 5R9", "Swaziland" ], - [ "53", "Lane", "Sloan", "79076", "Nauru" ], - [ "54", "Christopher", "Watson", "35116", "Suriname" ], - [ "55", "Clementine", "Shelton", "98232", "Venezuela" ], - [ "56", "Basil", "Hood", "J9I 1R2", "Tonga" ], - [ "57", "Meghan", "Pacheco", "H5Z 6B1", "Dominican Republic" ], - [ "58", "Brennan", "Potts", "51743", "Turkey" ], - [ "59", "Lawrence", "Duran", "63266", "Uruguay" ], - [ "60", "Ina", "Head", "S8P 9J5", "Romania" ], - [ "61", "Castor", "Jacobson", "C9F 6C9", "Albania" ], - [ "62", "Daquan", "Holden", "38571", "Ireland" ], - [ "63", "Donna", "Valencia", "J7B 3I0", "Portugal" ], - [ "64", "Kessie", "Phelps", "61063", "Georgia" ], - [ "65", "Dillon", "Garcia", "13652", "Holy See (Vatican City State)" ], - [ "66", "Russell", "Sweeney", "T8P 2O6", "Saint Kitts and Nevis" ], - [ "67", "Zelda", "Berg", "84946", "Afghanistan" ], - [ "68", "Dexter", "Mann", "73596", "Thailand" ], - [ "69", "Maisie", "Miller", "X3M 6C1", "Seychelles" ], - [ "70", "Lynn", "Mitchell", "N5B 3Z9", "Wallis and Futuna" ], - [ "71", "Gay", "Medina", "66692", "Germany" ], - [ "72", "Olga", "Clark", "M6B 7B6", "Kuwait" ], - [ "73", "Brianna", "Obrien", "Z6Z 5R3", "Bahrain" ], - [ "74", "Daria", "Byers", "R9T 4N7", "Ghana" ], - [ "75", "Chiquita", "Barker", "28435", "Ireland" ], - [ "76", "Gray", "Salazar", "58618", "Chile" ], - [ "77", "Delilah", "Kirby", "42811", "Oman" ], - [ "78", "Xanthus", "Holland", "B8Q 9C4", "Antigua and Barbuda" ], - [ "79", "Reuben", "Brennan", "44693", "Czech Republic" ], - [ "80", "Alden", "Long", "94236", "Slovakia" ], - [ "81", "Blythe", "Bender", "04812", "Guam" ], - [ "82", "Aileen", "Burgess", "47942", "Djibouti" ], - [ "83", "Zeus", "Craig", "43002", "Nicaragua" ], - [ "84", "Jade", "Garza", "F2X 8F3", "New Zealand" ], - [ "85", "Noah", "Barrera", "K9C 8U0", "Malawi" ], - [ "86", "Quyn", "Robertson", "H3X 6J9", "Bosnia and Herzegovina" ], - [ "87", "Serena", "Cabrera", "83671", "Slovenia" ], - [ "88", "Charity", "Chase", "T9Q 7C4", "Solomon Islands" ], - [ "89", "Athena", "Grimes", "62801", "Aruba" ], - [ "90", "Mallory", "Middleton", "D2V 1M5", "Italy" ], - [ "91", "Xenos", "Jones", "46642", "Singapore" ], - [ "92", "Tate", "Gregory", "66538", "Zimbabwe" ], - [ "93", "Blaze", "Taylor", "70282", "Paraguay" ], - [ "94", "Jena", "Duncan", "63057", "Cambodia" ], - [ "95", "Thaddeus", "Chase", "66762", "Netherlands Antilles" ], - [ "96", "Guinevere", "Mcgee", "O9G 4S2", "Lebanon" ], - [ "97", "Kermit", "Ramsey", "41214", "Dominican Republic" ], - [ "98", "Josephine", "Gallagher", "04960", "French Southern Territories" ], - [ "99", "Amela", "Morales", "M9I 1X5", "Sudan" ], - [ "100", "Rina", "Yates", "G3T 7M9", "Dominica" ], - [ "101", "Orson", "Norris", "21660", "Sierra Leone" ], - [ "102", "Graiden", "Silva", "98191", "Saint Lucia" ], - [ "103", "Amaya", "Hood", "45779", "India" ], - [ "104", "Fatima", "Fitzpatrick", "I4R 9Q8", "Viet Nam" ], - [ "105", "Judith", "Stokes", "97596", "Sudan" ], - [ "106", "Jared", "Vaughn", "75521", "Benin" ], - [ "107", "Mira", "Morgan", "35169", "Martinique" ], - [ "108", "Walter", "Perkins", "28618", "San Marino" ], - [ "109", "Megan", "Maxwell", "K6X 3J4", "Oman" ], - [ "110", "Christine", "Christensen", "M7S 8G8", "Netherlands Antilles" ], - [ "111", "Tanner", "Guerra", "S3K 6Y5", "Finland" ], - [ "112", "Meghan", "Rowland", "K7U 3A1", "Rwanda" ], - [ "113", "Patrick", "Mitchell", "V3F 5C4", "Oman" ], - [ "114", "Jackson", "Sanders", "83229", "Greenland" ], - [ "115", "Omar", "Savage", "14082", "Korea" ], - [ "116", "Ulla", "Larsen", "Q2P 4L8", "French Southern Territories" ], - [ "117", "Hop", "Gates", "D9G 9J4", "Poland" ], - [ "118", "Astra", "Mendoza", "R3D 2H9", "Saint Vincent and The Grenadines" ], - [ "119", "Denise", "Cardenas", "73138", "Sao Tome and Principe" ], - [ "120", "Melodie", "Roberts", "L1G 4H2", "India" ], - [ "121", "Cedric", "Joseph", "M4V 8O9", "Korea, Republic of" ], - [ "122", "Linda", "Horn", "24465", "Bosnia and Herzegovina" ], - [ "123", "Mary", "Lyons", "22324", "Norfolk Island" ], - [ "124", "Ciara", "Mcknight", "30784", "Anguilla" ], - [ "125", "Vaughan", "Santiago", "65037", "Guyana" ], - [ "126", "Lamar", "Shepherd", "58040", "France" ], - [ "127", "Xavier", "Webster", "68321", "Afghanistan" ], - [ "128", "Ainsley", "Banks", "46902", "Pakistan" ], - [ "129", "Alika", "Love", "L5O 4B3", "Iran, Islamic Republic of" ], - [ "130", "Maite", "Dickson", "37405", "Saint Kitts and Nevis" ], - [ "131", "Kimberley", "Morrow", "F7C 7J0", "Lebanon" ], - [ "132", "Eugenia", "Stafford", "36282", "Nicaragua" ], - [ "133", "Mira", "Gill", "K1T 8U1", "Uruguay" ], - [ "134", "Herman", "Francis", "C2G 8G9", "Northern Mariana Islands" ], - [ "135", "Veronica", "Peters", "74146", "Cook Islands" ], - [ "136", "Axel", "Cochran", "32240", "Central African Republic" ], - [ "137", "Edan", "Howe", "51862", "Mali" ], - [ "138", "Ignacia", "Bruce", "Q8T 5Q1", "Sao Tome and Principe" ], - [ "139", "Jana", "Mcguire", "89412", "Czech Republic" ], - [ "140", "Alice", "Underwood", "74535", "Slovakia" ], - [ "141", "Tobias", "Kent", "33601", "South Georgia and The South Sandwich Islands" ], - [ "142", "Nasim", "Coleman", "19377", "United States Minor Outlying Islands" ], - [ "143", "Geoffrey", "Byers", "85753", "Netherlands Antilles" ], - [ "144", "Odette", "Sawyer", "55418", "Tunisia" ], - [ "145", "Chaney", "Flowers", "F4W 7O7", "Maldives" ], - [ "146", "Shelly", "Glover", "M5Y 4A6", "Taiwan, Province of China" ], - [ "147", "Uriel", "Thornton", "Z6Q 5B7", "Myanmar" ], - [ "148", "Clio", "Nicholson", "Y8S 7P2", "Martinique" ], - [ "149", "Jana", "Foley", "B1O 9J5", "United Arab Emirates" ], - [ "150", "Fulton", "Rasmussen", "39194", "Solomon Islands" ], - [ "151", "Lisandra", "Boyd", "J2Z 2V7", "French Guiana" ], - [ "152", "Brennan", "Lopez", "Q4M 7Y4", "Burkina Faso" ], - [ "153", "Martha", "Washington", "M7S 4U6", "Iran, Islamic Republic of" ], - [ "154", "Dara", "Ramos", "07799", "Portugal" ], - [ "155", "Virginia", "Harris", "01246", "Bermuda" ], - [ "156", "Maryam", "Patrick", "Y3J 4Y0", "Rwanda" ], - [ "157", "Shana", "Mullen", "61169", "Togo" ], - [ "158", "Rowan", "Hahn", "K6D 5T4", "Guinea-bissau" ], - [ "159", "Hermione", "Shepherd", "M4F 7T6", "Ireland" ], - [ "160", "Jada", "Bright", "P1Z 7E6", "French Southern Territories" ], - [ "161", "Scarlet", "Bray", "57161", "Austria" ], - [ "162", "Haviva", "Conner", "M4T 8O4", "Bermuda" ], - [ "163", "Myra", "Briggs", "Q4B 6L7", "Kenya" ], - [ "164", "Hall", "Floyd", "40411", "Bangladesh" ], - [ "165", "Kyle", "Marquez", "J4T 7C6", "Djibouti" ], - [ "166", "Claudia", "Long", "R7B 1T6", "Macedonia" ], - [ "167", "Hasad", "Clemons", "94009", "Bosnia and Herzegovina" ], - [ "168", "Kameko", "Reeves", "G4V 6D5", "Singapore" ], - [ "169", "Angelica", "Bailey", "Z3Y 7I0", "Micronesia" ], - [ "170", "Shelley", "Jennings", "O3A 9H0", "Christmas Island" ], - [ "171", "Rafael", "Randolph", "Y4L 8B5", "Germany" ], - [ "172", "Winter", "Kinney", "A3K 9A7", "Saint Lucia" ], - [ "173", "Brian", "Larsen", "53752", "Comoros" ], - [ "174", "Melvin", "Cooper", "72416", "Czech Republic" ], - [ "175", "Gil", "Valencia", "95798", "Uganda" ], - [ "176", "Uma", "Cummings", "84649", "Jordan" ], - [ "177", "Micah", "Shannon", "H9L 8R6", "Ghana" ], - [ "178", "Ahmed", "Weiss", "05291", "American Samoa" ], - [ "179", "Hop", "Foster", "W9C 7J7", "Panama" ], - [ "180", "Todd", "Barnett", "T9R 7J4", "Seychelles" ], - [ "181", "Byron", "Meyers", "J4G 9P2", "Congo" ], - [ "182", "Hadassah", "Barnett", "U1A 8V3", "Paraguay" ], - [ "183", "Hermione", "Luna", "L4G 2E5", "New Zealand" ], - [ "184", "Marsden", "Alvarado", "U1V 1Y4", "Aruba" ], - [ "185", "Britanni", "Gregory", "C8O 2T4", "Kazakhstan" ], - [ "186", "Brenda", "Oneil", "R9Q 9B7", "Gibraltar" ], - [ "187", "Reuben", "Hopkins", "C2D 9D0", "Bhutan" ], - [ "188", "Sonia", "Sandoval", "Y2G 5I0", "Guatemala" ], - [ "189", "Yasir", "Holcomb", "A1H 6Y3", "Angola" ], - [ "190", "Aristotle", "Rosa", "51870", "Indonesia" ], - [ "191", "Uriah", "Blair", "X8K 1B9", "Suriname" ], - [ "192", "Vaughan", "Sharp", "L2F 5N8", "Faroe Islands" ], - [ "193", "Cooper", "Beard", "80399", "United States Minor Outlying Islands" ], - [ "194", "Riley", "Greene", "44728", "Russian Federation" ], - [ "195", "Rashad", "Flowers", "L6N 8U7", "Mongolia" ], - [ "196", "Yvonne", "Wilson", "18599", "Svalbard and Jan Mayen" ], - [ "197", "Martena", "Ayers", "A8Z 5F7", "Oman" ], - [ "198", "Eagan", "Cline", "T9P 4L4", "Solomon Islands" ], - [ "199", "Dawn", "Carrillo", "T6O 6E5", "Malawi" ], - [ "200", "Ali", "Singleton", "G6F 3B4", "Italy" ], - [ "201", "Christopher", "Beach", "01655", "Palau" ], - [ "202", "Emma", "Cummings", "W1B 4R6", "Dominica" ], - [ "203", "Ishmael", "Gray", "76928", "Egypt" ], - [ "204", "Megan", "Hines", "F7X 2X5", "New Zealand" ], - [ "205", "Emmanuel", "Steele", "09729", "Netherlands" ], - [ "206", "Alea", "Burris", "08485", "Guatemala" ], - [ "207", "Martina", "Todd", "46863", "Christmas Island" ], - [ "208", "Len", "Valentine", "S6Z 5S8", "Slovenia" ], - [ "209", "Jorden", "Salazar", "U4D 8H6", "Austria" ], - [ "210", "Yvette", "Bradford", "17275", "Heard Island and Mcdonald Islands" ], - [ "211", "Elvis", "Mcmahon", "27586", "Marshall Islands" ], - [ "212", "Gray", "Bonner", "N4V 3U9", "Moldova" ], - [ "213", "Yoshi", "Singleton", "86603", "United Kingdom" ], - [ "214", "Amena", "Burks", "93820", "Reunion" ], - [ "215", "Ocean", "Maldonado", "72026", "Ireland" ], - [ "216", "Allen", "Foley", "75363", "Kiribati" ], - [ "217", "Duncan", "Jimenez", "H3H 3G6", "Oman" ], - [ "218", "Ira", "Maxwell", "53136", "French Polynesia" ], - [ "219", "Astra", "Moon", "D7W 8G2", "Dominican Republic" ], - [ "220", "Orson", "Myers", "06049", "Mali" ], - [ "221", "Brandon", "Estes", "D2B 7P2", "Kenya" ], - [ "222", "Halee", "Luna", "54733", "Moldova" ], - [ "223", "Jillian", "Gonzalez", "E8W 3L9", "Ecuador" ], - [ "224", "Julie", "Acosta", "X7M 1T2", "Equatorial Guinea" ], - [ "225", "Quemby", "Foster", "48596", "Eritrea" ], - [ "226", "Erich", "Chavez", "W4P 7G8", "Mayotte" ], - [ "227", "Roary", "Mcknight", "K9K 2K4", "Chile" ], - [ "228", "Mufutau", "Henderson", "81377", "Mayotte" ], - [ "229", "Herman", "Ferguson", "69405", "Japan" ], - [ "230", "Abdul", "Franks", "L1V 8X2", "Portugal" ], - [ "231", "Dominic", "Logan", "98770", "Saint Lucia" ], - [ "232", "Isadora", "Solis", "Y3A 6H5", "Portugal" ], - [ "233", "Lester", "Davis", "30339", "British Indian Ocean Territory" ], - [ "234", "Joel", "Rojas", "N8E 5T9", "Bahrain" ], - [ "235", "Quinlan", "Carroll", "55785", "Australia" ], - [ "236", "Guinevere", "Pickett", "A7Y 3V3", "Netherlands Antilles" ], - [ "237", "Nita", "Hopkins", "88370", "Albania" ], - [ "238", "Hayley", "Buckley", "F1V 7P5", "Togo" ], - [ "239", "Colorado", "Reyes", "18798", "Congo" ], - [ "240", "Tashya", "Bartlett", "48537", "Sierra Leone" ], - [ "241", "Isabella", "Keith", "48878", "Kiribati" ], - [ "242", "Jessica", "Noble", "D6C 9T9", "Svalbard and Jan Mayen" ], - [ "243", "Cairo", "Edwards", "40598", "Nepal" ], - [ "244", "Camille", "Bradley", "I4U 8F6", "Fiji" ], - [ "245", "Quin", "Mcgee", "O5D 2P0", "Poland" ], - [ "246", "Rina", "Guzman", "44940", "Bahrain" ], - [ "247", "Glenna", "Kirkland", "Z1L 4W2", "San Marino" ], - [ "248", "Tarik", "Todd", "77228", "Turks and Caicos Islands" ], - [ "249", "Yardley", "Burris", "M6U 9D7", "New Caledonia" ], - [ "250", "Hashim", "Casey", "17722", "Lesotho" ], - [ "251", "Maggie", "Raymond", "62540", "Uganda" ], - [ "252", "Christian", "Mcdonald", "R8K 2M1", "United Arab Emirates" ], - [ "253", "Colt", "Cobb", "75393", "Moldova" ], - [ "254", "Aline", "Graves", "I1C 9I6", "Holy See (Vatican City State)" ], - [ "255", "Farrah", "Cannon", "H5W 2Y0", "Bhutan" ], - [ "256", "Wynne", "Ayers", "B6X 6Y8", "Western Sahara" ], - [ "257", "Teegan", "Avery", "33643", "San Marino" ], - [ "258", "Shana", "Sloan", "K9P 9V7", "Gabon" ], - [ "259", "Britanney", "Cook", "Y5D 6K7", "Romania" ], - [ "260", "Kuame", "Schroeder", "12859", "Syrian Arab Republic" ], - [ "261", "Valentine", "Joseph", "P2S 6T6", "Mayotte" ], - [ "262", "Joelle", "Keller", "U6F 3T7", "Fiji" ], - [ "263", "Elaine", "Hickman", "28056", "Tuvalu" ], - [ "264", "Ivor", "Malone", "H2Z 5X5", "Virgin Islands, British" ], - [ "265", "Maris", "Jefferson", "12474", "Czech Republic" ], - [ "266", "Josephine", "Zimmerman", "Z5J 2I4", "Angola" ], - [ "267", "Baker", "Wooten", "X4K 2L8", "Austria" ], - [ "268", "Alyssa", "Mitchell", "97712", "Antarctica" ], - [ "269", "Carlos", "Pearson", "85838", "Gambia" ], - [ "270", "Luke", "Richardson", "73867", "Christmas Island" ], - [ "271", "Davis", "Gardner", "U2E 4D9", "Chile" ], - [ "272", "Thomas", "Conner", "92487", "Mozambique" ], - [ "273", "Kieran", "Baird", "X9G 6G1", "Iceland" ], - [ "274", "Cheyenne", "Morris", "F5V 4S2", "Greece" ], - [ "275", "Hillary", "Reeves", "89804", "Slovakia" ], - [ "276", "Ryder", "Long", "32725", "New Caledonia" ], - [ "277", "Ariel", "Colon", "50675", "Estonia" ], - [ "278", "Vanna", "Hess", "79057", "Saudi Arabia" ], - [ "279", "Hayley", "Cherry", "B5E 9X4", "United States Minor Outlying Islands" ], - [ "280", "Knox", "Blair", "75626", "Central African Republic" ], - [ "281", "Astra", "Mcdaniel", "24493", "Bermuda" ], - [ "282", "Teegan", "Ford", "A8U 1K9", "Iran, Islamic Republic of" ], - [ "283", "Harrison", "Jackson", "43519", "Marshall Islands" ], - [ "284", "Melyssa", "Lawson", "O7E 8E6", "Belize" ], - [ "285", "Shaine", "Francis", "Q5K 5I4", "India" ], - [ "286", "August", "Reed", "S9R 1O8", "Ghana" ], - [ "287", "Aphrodite", "Zimmerman", "28336", "Lesotho" ], - [ "288", "Declan", "Walters", "08662", "Rwanda" ], - [ "289", "Brody", "Pate", "G2G 9D9", "Serbia and Montenegro" ], - [ "290", "Bradley", "Odom", "L2R 6Z9", "Jordan" ], - [ "291", "Phillip", "Cleveland", "E4D 1B7", "Paraguay" ], - [ "292", "Silas", "Wiggins", "F9F 5X3", "Bahrain" ], - [ "293", "Keely", "Donaldson", "B5H 7F2", "Vanuatu" ], - [ "294", "Hammett", "Lancaster", "H2P 4E6", "Svalbard and Jan Mayen" ], - [ "295", "Kiara", "Clarke", "50885", "Thailand" ], - [ "296", "Ayanna", "Wiley", "20773", "Morocco" ], - [ "297", "Tashya", "Stanley", "F5J 5R9", "New Caledonia" ], - [ "298", "Margaret", "Barker", "J5A 9N8", "Marshall Islands" ], - [ "299", "Xandra", "English", "92299", "Korea, Republic of" ], - [ "300", "Jane", "Brock", "86140", "Yemen" ], - [ "301", "Lunea", "Garrett", "96730", "New Caledonia" ], - [ "302", "Slade", "Everett", "16105", "Malawi" ], - [ "303", "Scott", "Booker", "G8V 2R4", "Macedonia" ], - [ "304", "Candice", "Decker", "E5R 2D4", "China" ], - [ "305", "Armando", "Bridges", "87959", "Falkland Islands (Malvinas)" ], - [ "306", "Clayton", "Whitley", "Q6O 4M7", "British Indian Ocean Territory" ], - [ "307", "Driscoll", "Duncan", "M2J 9V5", "Argentina" ], - [ "308", "Devin", "Stafford", "L8F 2V7", "Svalbard and Jan Mayen" ], - [ "309", "Bell", "York", "E5B 7X5", "Lebanon" ], - [ "310", "Haley", "Becker", "19759", "Bhutan" ], - [ "311", "Chava", "Santiago", "04396", "Israel" ], - [ "312", "David", "Mccall", "62087", "Norfolk Island" ], - [ "313", "Clinton", "Jacobson", "06168", "Guam" ], - [ "314", "Melvin", "Kaufman", "C4E 9N6", "Gambia" ], - [ "315", "Dai", "Shepherd", "37490", "Saudi Arabia" ], - [ "316", "Zahir", "Chase", "44340", "Turkey" ], - [ "317", "Leilani", "Parrish", "62576", "Cocos (Keeling) Islands" ], - [ "318", "Oleg", "Wilkins", "Z7S 8Z4", "Latvia" ], - [ "319", "Pearl", "Pena", "82526", "Saudi Arabia" ], - [ "320", "Kelly", "Moody", "W7U 5Y3", "Burundi" ], - [ "321", "Marcia", "Kennedy", "85952", "Panama" ], - [ "322", "Cailin", "Burnett", "M2Z 3L5", "Guyana" ], - [ "323", "Ciara", "Small", "X6C 6M6", "Tanzania, United Republic of" ], - [ "324", "Lillian", "Massey", "Z8A 5U5", "Algeria" ], - [ "325", "Garrett", "Elliott", "R5P 6T0", "Canada" ], - [ "326", "Inga", "Daniels", "40156", "Cocos (Keeling) Islands" ], - [ "327", "Barry", "Pena", "03593", "Tonga" ], - [ "328", "Penelope", "Mcintyre", "29293", "Burkina Faso" ], - [ "329", "Dante", "Kirk", "74038", "Lesotho" ], - [ "330", "Owen", "Cole", "17968", "Rwanda" ], - [ "331", "Brittany", "Edwards", "24507", "Paraguay" ], - [ "332", "Zeph", "Bentley", "12000", "Guam" ], - [ "333", "Ruth", "Palmer", "E8V 9A5", "Ghana" ], - [ "334", "Driscoll", "Ellis", "X1X 2N5", "Angola" ], - [ "335", "Mohammad", "Guerra", "Y9N 3Y5", "Mongolia" ], - [ "336", "Clio", "Baldwin", "67557", "Morocco" ], - [ "337", "Virginia", "Duncan", "J8D 4T2", "Haiti" ], - [ "338", "Dieter", "Sanchez", "H7E 2H4", "Romania" ], - [ "339", "Quinn", "Hurst", "K4E 2X6", "Reunion" ], - [ "340", "Coby", "Kelly", "S1H 8N0", "Equatorial Guinea" ], - [ "341", "Raja", "Solis", "S5G 9T5", "Grenada" ], - [ "342", "Jordan", "Riddle", "J7M 5X3", "Svalbard and Jan Mayen" ], - [ "343", "Dora", "Knox", "25054", "Libyan Arab Jamahiriya" ], - [ "344", "Brendan", "Reilly", "U9U 3F7", "Armenia" ], - [ "345", "Melyssa", "Reyes", "11285", "Viet Nam" ], - [ "346", "Knox", "Rivera", "N8Z 7J0", "Nepal" ], - [ "347", "Quynn", "Irwin", "26524", "Chile" ], - [ "348", "Colin", "Coleman", "22833", "United Arab Emirates" ], - [ "349", "Sybil", "Delgado", "99947", "Belize" ], - [ "350", "Macaulay", "Salinas", "48521", "Heard Island and Mcdonald Islands" ], - [ "351", "Garrison", "Hogan", "68950", "India" ], - [ "352", "Ronan", "Guerra", "55445", "Angola" ], - [ "353", "Regina", "Andrews", "H3E 3T0", "Central African Republic" ], - [ "354", "Colorado", "Joyce", "V6X 5K8", "Anguilla" ], - [ "355", "Basia", "Banks", "85049", "Grenada" ], - [ "356", "Adena", "Berg", "04135", "New Caledonia" ], - [ "357", "Wade", "Richardson", "C8M 9J3", "Dominican Republic" ], - [ "358", "Cody", "Montoya", "22018", "Solomon Islands" ], - [ "359", "Faith", "Barnett", "61475", "China" ], - [ "360", "Cody", "Witt", "C8I 2Q8", "Congo" ], - [ "361", "Brenden", "Carlson", "74007", "Marshall Islands" ], - [ "362", "Gil", "Brooks", "U4S 5N1", "Saint Vincent and The Grenadines" ], - [ "363", "Kirestin", "Watts", "H8I 1D5", "Myanmar" ], - [ "364", "Amelia", "Gilliam", "11461", "Chile" ], - [ "365", "Noelani", "Rhodes", "83320", "Cuba" ], - [ "366", "Len", "Trevino", "W9F 2U5", "Armenia" ], - [ "367", "Galvin", "Middleton", "86707", "Thailand" ], - [ "368", "Germaine", "Bridges", "90283", "Japan" ], - [ "369", "Rose", "Hines", "W7L 7Q6", "Congo" ], - [ "370", "Hop", "Mueller", "I3E 2X8", "Angola" ], - [ "371", "Iliana", "Williamson", "56758", "Lebanon" ], - [ "372", "Raja", "Price", "49603", "Armenia" ], - [ "373", "Jeanette", "Hatfield", "E3K 5N5", "India" ], - [ "374", "Brittany", "Christensen", "04750", "Uruguay" ], - [ "375", "Inga", "Prince", "D4X 6J5", "Switzerland" ], - [ "376", "Cherokee", "Ballard", "U1O 1M0", "Rwanda" ], - [ "377", "Deirdre", "Watson", "46983", "Sri Lanka" ], - [ "378", "Amanda", "Parrish", "99838", "Hong Kong" ], - [ "379", "Leo", "Shannon", "L3N 3J0", "Brunei Darussalam" ], - [ "380", "Kimberly", "Clemons", "88734", "South Africa" ], - [ "381", "Seth", "Langley", "D6A 1Q9", "Guyana" ], - [ "382", "Carol", "Blankenship", "X5N 2A7", "Angola" ], - [ "383", "Dora", "Flores", "F8F 1O5", "Poland" ], - [ "384", "Chava", "Dickson", "P8B 6W6", "Comoros" ], - [ "385", "Trevor", "Mcdowell", "31382", "Solomon Islands" ], - [ "386", "Alec", "Valentine", "P2R 4K7", "Greenland" ], - [ "387", "Philip", "Jenkins", "Q7X 5U5", "Aruba" ], - [ "388", "Kim", "Bowen", "69873", "Saint Kitts and Nevis" ], - [ "389", "Allegra", "Oconnor", "X3Y 1X3", "Holy See (Vatican City State)" ], - [ "390", "Daria", "Briggs", "A7Z 7P4", "Serbia and Montenegro" ], - [ "391", "Amelia", "Wiley", "D4S 1G5", "Montserrat" ], - [ "392", "Erica", "Aguirre", "H5L 2O3", "Andorra" ], - [ "393", "Kibo", "Sawyer", "30638", "Guyana" ], - [ "394", "Jackson", "Meyers", "P4N 9D6", "Bangladesh" ], - [ "395", "Kirk", "Baxter", "F3M 7S6", "Estonia" ], - [ "396", "Sybil", "Christian", "B3Q 2X0", "South Georgia and The South Sandwich Islands" ], - [ "397", "Ina", "Mercer", "N4S 1K8", "Korea" ], - [ "398", "Kiara", "Whitehead", "86023", "Nicaragua" ], - [ "399", "Vielka", "Hays", "29845", "Malta" ], - [ "400", "Stacey", "Carlson", "53218", "Cook Islands" ], - [ "401", "Selma", "Lloyd", "78256", "Turkey" ], - [ "402", "Rhoda", "Mcintosh", "G8X 1C8", "Guatemala" ], - [ "403", "Teagan", "Ochoa", "99752", "Barbados" ], - [ "404", "Rebecca", "Carver", "82661", "Saint Kitts and Nevis" ], - [ "405", "Yael", "Woodward", "66095", "Niger" ], - [ "406", "Calvin", "Huffman", "82172", "Somalia" ], - [ "407", "Sopoline", "Walters", "K5L 3I7", "Spain" ], - [ "408", "Hollee", "Powell", "05572", "Samoa" ], - [ "409", "Fiona", "Frank", "74456", "Timor-leste" ], - [ "410", "Alana", "Hubbard", "76011", "Lithuania" ], - [ "411", "Lillian", "Garcia", "J5Z 2O5", "Sierra Leone" ], - [ "412", "Tad", "Mcleod", "B6A 8Z4", "Australia" ], - [ "413", "Hadassah", "Hall", "47417", "China" ], - [ "414", "Regan", "Summers", "X4L 4I6", "Honduras" ], - [ "415", "Herrod", "Erickson", "R8G 3V0", "Israel" ], - [ "416", "Autumn", "Rojas", "31205", "Cocos (Keeling) Islands" ], - [ "417", "Castor", "Mooney", "92737", "Grenada" ], - [ "418", "Wesley", "Holman", "57125", "Greenland" ], - [ "419", "Kitra", "Wooten", "Q6X 4Y0", "Mongolia" ], - [ "420", "Buckminster", "Rice", "U8B 7B8", "Tokelau" ], - [ "421", "Xavier", "Hardin", "18280", "Iran, Islamic Republic of" ], - [ "422", "Sopoline", "Fleming", "78437", "Singapore" ], - [ "423", "Sydney", "Salinas", "23801", "Cook Islands" ], - [ "424", "Bethany", "Rosales", "89650", "United States" ], - [ "425", "Deirdre", "Hensley", "F3X 1B7", "Micronesia" ], - [ "426", "Bernard", "Vargas", "S4D 9T0", "Uzbekistan" ], - [ "427", "Merrill", "Compton", "17713", "Suriname" ], - [ "428", "Carly", "Baird", "D3H 5G3", "United States Minor Outlying Islands" ], - [ "429", "Grace", "Phelps", "64695", "Nauru" ], - [ "430", "Kareem", "Stone", "65572", "Netherlands" ], - [ "431", "Susan", "Newton", "04627", "Anguilla" ], - [ "432", "Laura", "Miranda", "E1G 2R7", "Finland" ], - [ "433", "Madaline", "Pugh", "J9A 9M5", "Senegal" ], - [ "434", "Sophia", "Mendez", "33789", "Timor-leste" ], - [ "435", "Roary", "Greene", "61774", "Canada" ], - [ "436", "Amos", "Gilliam", "94933", "Sri Lanka" ], - [ "437", "Ivory", "Joyner", "15379", "San Marino" ], - [ "438", "Jorden", "Robbins", "43400", "Russian Federation" ], - [ "439", "Merritt", "Holcomb", "R1I 3C7", "Brazil" ], - [ "440", "Iliana", "Johnston", "U9W 8N2", "Trinidad and Tobago" ], - [ "441", "Ivana", "Patterson", "G5O 6A5", "Georgia" ], - [ "442", "Sydney", "Mccullough", "W9M 2H5", "American Samoa" ], - [ "443", "Alvin", "Fulton", "X8A 8R5", "Antigua and Barbuda" ], - [ "444", "Alfreda", "Lopez", "42499", "Montserrat" ], - [ "445", "Ethan", "Bird", "W9A 8M1", "British Indian Ocean Territory" ], - [ "446", "Zeus", "Logan", "01682", "San Marino" ], - [ "447", "Nehru", "Andrews", "W8J 3C8", "Dominican Republic" ], - [ "448", "Donna", "Booth", "64754", "Nepal" ], - [ "449", "Cruz", "Bruce", "17429", "Burundi" ], - [ "450", "Ronan", "Saunders", "69957", "South Africa" ], - [ "451", "Jordan", "Barnes", "D8K 9L8", "Dominica" ], - [ "452", "Carly", "Love", "D8Z 3P4", "Mauritania" ], - [ "453", "Mari", "George", "60260", "Japan" ], - [ "454", "Karly", "Hodges", "15790", "South Georgia and The South Sandwich Islands" ], - [ "455", "Rana", "Logan", "M1R 6Y6", "Bosnia and Herzegovina" ], - [ "456", "Theodore", "Sims", "C7A 8T2", "Barbados" ], - [ "457", "Quin", "Thompson", "26884", "Bouvet Island" ], - [ "458", "Kimberley", "Sloan", "S5T 8E3", "Costa Rica" ], - [ "459", "Upton", "Valenzuela", "Z6J 6Q1", "Macao" ], - [ "460", "Clinton", "Williams", "Z3O 7C4", "Germany" ], - [ "461", "Samson", "Mathis", "G1T 1V9", "Senegal" ], - [ "462", "Michelle", "Frost", "87113", "Serbia and Montenegro" ], - [ "463", "Tyrone", "Coffey", "80705", "Albania" ], - [ "464", "Alea", "Delaney", "E4S 4K4", "Guyana" ], - [ "465", "Dominique", "Schwartz", "81368", "Falkland Islands (Malvinas)" ], - [ "466", "Benedict", "Norton", "D1C 9C8", "Cyprus" ], - [ "467", "Vaughan", "Stein", "R7K 1L8", "Egypt" ], - [ "468", "Charles", "Foley", "20434", "Anguilla" ], - [ "469", "Arden", "Ramos", "54065", "Gibraltar" ], - [ "470", "Dillon", "Patel", "L6H 1H6", "Liberia" ], - [ "471", "Gretchen", "Davenport", "57188", "Equatorial Guinea" ], - [ "472", "Ivy", "Randall", "52617", "Costa Rica" ], - [ "473", "Brett", "Baird", "45791", "Hungary" ], - [ "474", "Wyoming", "Sparks", "11266", "Luxembourg" ], - [ "475", "Rashad", "Roy", "47012", "Guam" ], - [ "476", "Sopoline", "Le", "M1G 2P8", "United Arab Emirates" ], - [ "477", "Ursa", "Haynes", "53774", "British Indian Ocean Territory" ], - [ "478", "Maia", "Vincent", "26773", "New Caledonia" ], - [ "479", "Salvador", "Pace", "S9E 2C4", "Egypt" ], - [ "480", "Bethany", "Wilcox", "F2H 7N0", "Uzbekistan" ], - [ "481", "Sara", "Brooks", "08176", "Holy See (Vatican City State)" ], - [ "482", "Lillith", "Sampson", "75576", "British Indian Ocean Territory" ], - [ "483", "Brynne", "Browning", "N4K 7P6", "Peru" ], - [ "484", "Beck", "Tran", "06815", "Cambodia" ], - [ "485", "Peter", "Hurley", "05770", "Rwanda" ], - [ "486", "Buffy", "Sharpe", "H8F 8G6", "Georgia" ], - [ "487", "Harrison", "Cross", "Y1A 1R8", "United Kingdom" ], - [ "488", "Ursa", "Wolf", "J8C 9Q8", "French Polynesia" ], - [ "489", "Nayda", "Vasquez", "05523", "Taiwan, Province of China" ], - [ "490", "Gretchen", "Walters", "28628", "Seychelles" ], - [ "491", "Adrian", "Hickman", "17956", "El Salvador" ], - [ "492", "Laura", "Moon", "32103", "Myanmar" ], - [ "493", "Kellie", "Barnett", "L5Z 2U8", "Saint Helena" ], - [ "494", "Illana", "Stanton", "Z5D 2G0", "Australia" ], - [ "495", "Jescie", "Santiago", "D9L 4B5", "Cambodia" ], - [ "496", "Laura", "Hopkins", "X6V 9S5", "Netherlands Antilles" ], - [ "497", "Vielka", "Harding", "U6A 9T2", "Cambodia" ], - [ "498", "Walter", "Gentry", "L3X 9Q9", "Slovenia" ], - [ "499", "Sara", "Atkinson", "67146", "Guinea" ], - [ "500", "Yolanda", "Chambers", "Q8D 3W0", "Zimbabwe" ], - [ "501", "Josiah", "Villarreal", "I1V 6Y7", "Burkina Faso" ], - [ "502", "Hayfa", "Bowman", "77148", "Saudi Arabia" ], - [ "503", "Colette", "Conley", "41232", "Estonia" ], - [ "504", "Lana", "Doyle", "32962", "Cuba" ], - [ "505", "Keegan", "Goodwin", "M2P 1X3", "Cocos (Keeling) Islands" ], - [ "506", "Nina", "Cross", "49580", "Germany" ], - [ "507", "Xenos", "Cervantes", "K6X 7W8", "Mauritius" ], - [ "508", "Jared", "Hester", "30156", "Uzbekistan" ], - [ "509", "Damon", "Curry", "U2J 2D8", "Pitcairn" ], - [ "510", "Amery", "Savage", "O1S 2Z4", "Turkmenistan" ], - [ "511", "Brian", "Wilkinson", "J6O 4T0", "Luxembourg" ], - [ "512", "Ivory", "Mckinney", "L3E 8M2", "Lithuania" ], - [ "513", "Eric", "Dalton", "Y1L 6F4", "Ethiopia" ], - [ "514", "Brandon", "Callahan", "K6Q 9B4", "Haiti" ], - [ "515", "Phillip", "Mclean", "18836", "Ethiopia" ], - [ "516", "Carly", "Greer", "16811", "Mayotte" ], - [ "517", "Stone", "Ware", "58795", "Moldova" ], - [ "518", "Xena", "Hayden", "97158", "Chad" ], - [ "519", "Catherine", "Leonard", "77868", "Azerbaijan" ], - [ "520", "Bernard", "Horton", "04270", "Yemen" ], - [ "521", "Olga", "Richmond", "89169", "Lebanon" ], - [ "522", "Iris", "Cummings", "78836", "Falkland Islands (Malvinas)" ], - [ "523", "Beau", "Mccall", "78638", "Monaco" ], - [ "524", "Michael", "Humphrey", "Q1A 2W9", "Tokelau" ], - [ "525", "Oren", "Stevens", "F4V 9G7", "Heard Island and Mcdonald Islands" ], - [ "526", "Ima", "Shelton", "19295", "Mozambique" ], - [ "527", "Merritt", "Morrison", "K6W 5R0", "Georgia" ], - [ "528", "Vera", "Cherry", "54993", "Angola" ], - [ "529", "Grant", "Turner", "B4V 2J0", "Saint Helena" ], - [ "530", "Odette", "Snyder", "N9L 2V8", "Chad" ], - [ "531", "Uma", "Stewart", "E9A 6X9", "Bhutan" ], - [ "532", "Kylee", "Best", "11393", "Malaysia" ], - [ "533", "Nicholas", "Mercado", "85179", "Switzerland" ], - [ "534", "Nathaniel", "Stuart", "M1Q 6Z6", "Mongolia" ], - [ "535", "Ruth", "Conrad", "T7G 9V6", "Guadeloupe" ], - [ "536", "Deanna", "Dudley", "79721", "Kiribati" ], - [ "537", "David", "Thornton", "C6R 2G3", "Netherlands Antilles" ], - [ "538", "Jane", "Ashley", "48711", "Rwanda" ], - [ "539", "Nero", "Curry", "20590", "Denmark" ], - [ "540", "Kellie", "Poole", "46053", "Martinique" ], - [ "541", "Freya", "Burch", "W5R 8Y5", "Northern Mariana Islands" ], - [ "542", "Maxwell", "Mcbride", "D4W 4M3", "Paraguay" ], - [ "543", "Dawn", "Sargent", "85956", "Gibraltar" ], - [ "544", "Lilah", "Matthews", "J4D 8A9", "Montserrat" ], - [ "545", "Salvador", "Burns", "28067", "Bhutan" ], - [ "546", "Ezekiel", "Ayala", "67153", "Wallis and Futuna" ], - [ "547", "Evan", "Barker", "83026", "Puerto Rico" ], - [ "548", "Jemima", "Case", "U3S 7N6", "Georgia" ], - [ "549", "Belle", "Mcconnell", "H4S 9F8", "Angola" ], - [ "550", "Doris", "Mays", "57387", "Tonga" ], - [ "551", "Carson", "Buchanan", "20457", "Guatemala" ], - [ "552", "Calista", "Lamb", "26851", "Gibraltar" ], - [ "553", "Remedios", "Haley", "A9K 5M1", "Tokelau" ], - [ "554", "Odette", "Mccarty", "Y8B 3V4", "Marshall Islands" ], - [ "555", "Libby", "Pugh", "93261", "Netherlands" ], - [ "556", "Bo", "Maldonado", "C1H 1K7", "Oman" ], - [ "557", "Cameron", "Beasley", "41821", "Northern Mariana Islands" ], - [ "558", "Chadwick", "Crosby", "62855", "New Caledonia" ], - [ "559", "Steven", "Barrett", "92102", "Pakistan" ], - [ "560", "Jonas", "Valdez", "N3V 4R9", "Bulgaria" ], - [ "561", "Harlan", "Larsen", "Z8F 6A0", "Cayman Islands" ], - [ "562", "Iola", "Joyner", "D1J 4C3", "Italy" ], - [ "563", "Abra", "Medina", "Q9O 5J2", "Cambodia" ], - [ "564", "Solomon", "Davidson", "91317", "Turkmenistan" ], - [ "565", "Alisa", "Kim", "33036", "Austria" ], - [ "566", "Deacon", "Silva", "Z5L 6M0", "Djibouti" ], - [ "567", "Bree", "Landry", "43135", "Czech Republic" ], - [ "568", "Molly", "Leach", "71714", "Botswana" ], - [ "569", "Idona", "Cain", "A2J 1R8", "South Georgia and The South Sandwich Islands" ], - [ "570", "Aileen", "Salinas", "90344", "Uzbekistan" ], - [ "571", "Dominique", "Cooper", "31803", "Sao Tome and Principe" ], - [ "572", "Lunea", "Pollard", "S9R 7B0", "Sweden" ], - [ "573", "Leo", "Combs", "W7E 8T4", "Ukraine" ], - [ "574", "Illiana", "Donovan", "D8K 3R4", "Palau" ], - [ "575", "Orlando", "Vaughan", "Q4I 3E3", "Bosnia and Herzegovina" ], - [ "576", "Yuri", "Blake", "I9W 5U5", "Seychelles" ], - [ "577", "Amanda", "Baldwin", "19752", "Turkmenistan" ], - [ "578", "Hanna", "Emerson", "73316", "Antigua and Barbuda" ], - [ "579", "Xyla", "Atkins", "11151", "Uganda" ], - [ "580", "Nathaniel", "Patterson", "00391", "Portugal" ], - [ "581", "Naida", "Cote", "17484", "Mauritius" ], - [ "582", "Scarlett", "Little", "V8N 8A6", "Sao Tome and Principe" ], - [ "583", "Odessa", "Kerr", "56456", "Sweden" ], - [ "584", "Kamal", "Richardson", "F6S 4I1", "Algeria" ], - [ "585", "Griffith", "Morton", "I5H 2Z0", "Vanuatu" ], - [ "586", "Orli", "Santana", "48213", "Burundi" ], - [ "587", "Courtney", "Cook", "R3O 3A9", "Cape Verde" ], - [ "588", "Jolene", "Wallace", "F6Q 7W8", "Zambia" ], - [ "589", "Bert", "Sharp", "X7T 7Z8", "Paraguay" ], - [ "590", "Ila", "Carver", "E4M 7P4", "Paraguay" ], - [ "591", "Merrill", "Wall", "49416", "Fiji" ], - [ "592", "Hanae", "Espinoza", "Y6D 6K8", "Turkey" ], - [ "593", "Stephanie", "Bond", "Z1Q 3P3", "Algeria" ], - [ "594", "Lionel", "Leonard", "U8O 7G6", "Nauru" ], - [ "595", "Faith", "Ramirez", "75181", "Slovakia" ], - [ "596", "Fritz", "Glass", "62878", "El Salvador" ], - [ "597", "Raya", "Gardner", "L3E 2C7", "India" ], - [ "598", "Brynne", "Price", "W1S 6O9", "Lithuania" ], - [ "599", "Karen", "Gray", "O4X 8F6", "Albania" ], - [ "600", "Perry", "Goodwin", "44266", "Libyan Arab Jamahiriya" ], - [ "601", "Dylan", "Glover", "76573", "Estonia" ], - [ "602", "Melinda", "Holloway", "07861", "Grenada" ], - [ "603", "Rahim", "Robinson", "D7M 1E8", "Madagascar" ], - [ "604", "Ori", "Oconnor", "10386", "Antarctica" ], - [ "605", "Candace", "Preston", "03610", "Denmark" ], - [ "606", "Wing", "Howe", "E6U 3H2", "Burundi" ], - [ "607", "Lucy", "Eaton", "26436", "Guinea" ], - [ "608", "Ignatius", "Blevins", "93597", "Serbia and Montenegro" ], - [ "609", "Nadine", "Franco", "80096", "Tonga" ], - [ "610", "Shoshana", "Walters", "S4F 5O8", "Micronesia" ], - [ "611", "Remedios", "Buckner", "29213", "Antigua and Barbuda" ], - [ "612", "Adam", "Horne", "F8V 1V8", "Oman" ], - [ "613", "Kieran", "Saunders", "I7A 7Y5", "Japan" ], - [ "614", "Isabelle", "Fletcher", "K2K 3K5", "Norway" ], - [ "615", "Ryder", "Ballard", "38518", "Tanzania, United Republic of" ], - [ "616", "Nina", "Guerrero", "61142", "Saint Kitts and Nevis" ], - [ "617", "Sheila", "Poole", "E2H 6I6", "Denmark" ], - [ "618", "Melyssa", "Mcdaniel", "08247", "Netherlands Antilles" ], - [ "619", "Leila", "Vang", "Q5Z 3S1", "United States Minor Outlying Islands" ], - [ "620", "Grady", "Aguilar", "R1I 8I8", "Slovenia" ], - [ "621", "Plato", "Terrell", "23916", "Kuwait" ], - [ "622", "Rama", "Perkins", "56506", "Russian Federation" ], - [ "623", "Boris", "Chaney", "66737", "Antigua and Barbuda" ], - [ "624", "Edward", "Clarke", "30722", "Iraq" ], - [ "625", "Skyler", "Wise", "53248", "Taiwan, Province of China" ], - [ "626", "Uta", "Cox", "85242", "Malawi" ], - [ "627", "Lesley", "Watkins", "26710", "Estonia" ], - [ "628", "Gray", "Harrison", "C5L 9Y7", "Nepal" ], - [ "629", "Joan", "Flores", "J5Q 2B9", "Tajikistan" ], - [ "630", "Reece", "Lott", "85152", "Algeria" ], - [ "631", "Jerome", "Faulkner", "V1K 3N2", "Kiribati" ], - [ "632", "Jackson", "Hudson", "85932", "Botswana" ], - [ "633", "Uma", "Booker", "79755", "Senegal" ], - [ "634", "Katelyn", "Gillespie", "Q8P 4V9", "Eritrea" ], - [ "635", "Clio", "Tillman", "67552", "Liberia" ], - [ "636", "Anjolie", "Nixon", "36615", "Botswana" ], - [ "637", "Nell", "Lee", "T9S 4R3", "French Southern Territories" ], - [ "638", "Anthony", "Aguirre", "85443", "Morocco" ], - [ "639", "Aaron", "Green", "90326", "Faroe Islands" ], - [ "640", "Galvin", "Yang", "A4X 8H6", "Ukraine" ], - [ "641", "Yoshi", "Strickland", "52538", "Brazil" ], - [ "642", "Brenden", "Kirkland", "X7P 8V9", "Turks and Caicos Islands" ], - [ "643", "Bree", "Stone", "U4L 2H2", "Hong Kong" ], - [ "644", "Quin", "Tanner", "U4A 1X4", "Faroe Islands" ], - [ "645", "Camilla", "Heath", "91749", "Andorra" ], - [ "646", "Xaviera", "Bullock", "I4U 7W0", "Libyan Arab Jamahiriya" ], - [ "647", "Kay", "Rowe", "59689", "Iceland" ], - [ "648", "Lance", "Bond", "66558", "Spain" ], - [ "649", "Fredericka", "Langley", "48782", "Cayman Islands" ], - [ "650", "Charles", "Avila", "42037", "Papua New Guinea" ], - [ "651", "Ramona", "Rios", "T5M 3E1", "Argentina" ], - [ "652", "Ezekiel", "Young", "W8X 4S7", "French Polynesia" ], - [ "653", "Celeste", "Dodson", "19140", "Benin" ], - [ "654", "Frances", "Mcintosh", "91246", "Swaziland" ], - [ "655", "Deanna", "Hyde", "J8P 3T5", "Croatia" ], - [ "656", "Dahlia", "Blair", "45364", "Kazakhstan" ], - [ "657", "Jade", "Hayes", "I5Q 3S9", "Malawi" ], - [ "658", "Robin", "Bullock", "G9Q 2P8", "Ireland" ], - [ "659", "Nasim", "Bond", "I2V 8N4", "Macedonia" ], - [ "660", "Axel", "Pickett", "18370", "Saint Vincent and The Grenadines" ], - [ "661", "Pearl", "Lee", "G1R 3R8", "Poland" ], - [ "662", "Garth", "Meyers", "90308", "Georgia" ], - [ "663", "Ivory", "Rios", "S8F 8R5", "Mexico" ], - [ "664", "Jerome", "Lambert", "N1Q 6R8", "Saint Lucia" ], - [ "665", "Meredith", "Clark", "27720", "Cocos (Keeling) Islands" ], - [ "666", "Armando", "Holcomb", "M6D 4X0", "Oman" ], - [ "667", "Rowan", "Page", "00307", "Nauru" ], - [ "668", "Kyla", "Brown", "F4W 4C5", "Holy See (Vatican City State)" ], - [ "669", "Leigh", "Sosa", "28499", "Uruguay" ], - [ "670", "Shafira", "Forbes", "26526", "Honduras" ], - [ "671", "Maxine", "Mueller", "90923", "Kazakhstan" ], - [ "672", "Joy", "Sargent", "K6T 3W5", "Malawi" ], - [ "673", "Lamar", "Roberts", "R5F 9C8", "Poland" ], - [ "674", "Madonna", "Love", "15514", "Cyprus" ], - [ "675", "Uriel", "Ware", "Z6V 5J1", "Singapore" ], - [ "676", "Bevis", "Erickson", "M3X 9M8", "Brunei Darussalam" ], - [ "677", "Grant", "Velasquez", "96942", "Antarctica" ], - [ "678", "Lars", "Bullock", "14772", "Guyana" ], - [ "679", "Maryam", "Jones", "01854", "Togo" ], - [ "680", "Blythe", "Goodwin", "51731", "New Caledonia" ], - [ "681", "Kane", "Wiggins", "55727", "Kiribati" ], - [ "682", "Brian", "Rosales", "25896", "Cape Verde" ], - [ "683", "Blaze", "Leach", "P6J 3E5", "Northern Mariana Islands" ], - [ "684", "Cameron", "Neal", "82248", "Marshall Islands" ], - [ "685", "Lydia", "Cunningham", "Q1V 8P7", "San Marino" ], - [ "686", "Troy", "Cook", "32106", "British Indian Ocean Territory" ], - [ "687", "Alexander", "Valenzuela", "S8Z 6B2", "Guadeloupe" ], - [ "688", "Garth", "Beck", "46344", "Cook Islands" ], - [ "689", "Hillary", "Nunez", "29462", "Sri Lanka" ], - [ "690", "Hunter", "Sawyer", "W9M 6T4", "Saint Lucia" ], - [ "691", "Jaquelyn", "Everett", "T1X 2U2", "Guinea-bissau" ], - [ "692", "Indira", "Ortega", "43047", "Italy" ], - [ "693", "Josiah", "Hinton", "N5F 5Y8", "Andorra" ], - [ "694", "Bruno", "Gay", "E3U 3D9", "Palau" ], - [ "695", "Melissa", "Blackburn", "S4V 1K2", "Virgin Islands, U.S." ], - [ "696", "Zeus", "Dawson", "K5S 6Z6", "Belgium" ], - [ "697", "Castor", "Mcmahon", "H3R 1O8", "Cambodia" ], - [ "698", "Elizabeth", "Beasley", "98178", "Northern Mariana Islands" ], - [ "699", "Jescie", "Lee", "08056", "Eritrea" ], - [ "700", "Dennis", "Chapman", "T4O 1Q2", "Bangladesh" ], - [ "701", "Basia", "Wallace", "U3Y 7C1", "Pitcairn" ], - [ "702", "Dante", "Brewer", "53544", "Bosnia and Herzegovina" ], - [ "703", "Adrienne", "Glenn", "32378", "Austria" ], - [ "704", "Kellie", "Acevedo", "51723", "Italy" ], - [ "705", "Scarlet", "Mclaughlin", "43509", "Kiribati" ], - [ "706", "Lillith", "Mullins", "S6L 4Y6", "Kyrgyzstan" ], - [ "707", "Maxine", "Atkins", "Z5T 5R5", "Denmark" ], - [ "708", "Nicholas", "Rose", "40286", "Macedonia" ], - [ "709", "Zenia", "Pugh", "28682", "Venezuela" ], - [ "710", "Keely", "Turner", "34939", "New Zealand" ], - [ "711", "Maisie", "Walton", "S6M 5C5", "Cameroon" ], - [ "712", "Michelle", "Salinas", "T7A 9N6", "Nicaragua" ], - [ "713", "Reece", "Clements", "73923", "Austria" ], - [ "714", "Eliana", "Fox", "V3Y 5T4", "Denmark" ], - [ "715", "Kennedy", "Mullins", "43213", "Virgin Islands, British" ], - [ "716", "Alea", "Glover", "M6P 3Z5", "Turkmenistan" ], - [ "717", "Scarlett", "Hunt", "41461", "Montserrat" ], - [ "718", "Rooney", "Kane", "T8A 3E2", "Madagascar" ], - [ "719", "Cairo", "Ray", "L6M 1E7", "Canada" ], - [ "720", "Wendy", "Burks", "R8V 8F5", "Virgin Islands, U.S." ], - [ "721", "Christine", "Suarez", "67369", "Georgia" ], - [ "722", "Graiden", "Le", "K4M 9V5", "New Caledonia" ], - [ "723", "Zane", "Nunez", "60548", "Haiti" ], - [ "724", "Ali", "Bell", "U4Y 4C3", "Togo" ], - [ "725", "Marsden", "Leon", "39374", "Venezuela" ], - [ "726", "Holmes", "Kidd", "B6K 7Q9", "Iraq" ], - [ "727", "Cameron", "Gardner", "88627", "Brazil" ], - [ "728", "Ava", "George", "K1Z 7Y2", "Monaco" ], - [ "729", "Chantale", "Holland", "H1B 9L8", "Afghanistan" ], - [ "730", "Alika", "Middleton", "W8X 7O1", "Korea" ], - [ "731", "Cameran", "Zimmerman", "78576", "Benin" ], - [ "732", "Barrett", "Blair", "51161", "Virgin Islands, U.S." ], - [ "733", "Brielle", "Ballard", "59538", "Iceland" ], - [ "734", "Teagan", "Morales", "40107", "Kenya" ], - [ "735", "Lunea", "Cantu", "14690", "Oman" ], - [ "736", "Robin", "Gilmore", "17972", "Nauru" ], - [ "737", "Hall", "Mccarty", "86141", "China" ], - [ "738", "Olga", "Rasmussen", "58309", "Virgin Islands, British" ], - [ "739", "Mark", "Griffin", "51542", "Argentina" ], - [ "740", "Medge", "Carrillo", "23192", "Pitcairn" ], - [ "741", "Susan", "Mosley", "32128", "Turkmenistan" ], - [ "742", "Zelda", "Valdez", "46831", "New Caledonia" ], - [ "743", "Ruth", "Donaldson", "F9I 7G7", "Ukraine" ], - [ "744", "Kirby", "Workman", "36679", "Rwanda" ], - [ "745", "Alexa", "King", "66513", "Liberia" ], - [ "746", "Ronan", "Gross", "K2S 6D0", "Saint Lucia" ], - [ "747", "Kylee", "Dillon", "P7Y 1I5", "Faroe Islands" ], - [ "748", "Brenda", "Weaver", "99365", "Uzbekistan" ], - [ "749", "Aristotle", "Orr", "43451", "Canada" ], - [ "750", "Jaquelyn", "Tyler", "B9Q 7P5", "Brunei Darussalam" ], - [ "751", "Madeline", "Stewart", "D4D 2J4", "Zimbabwe" ], - [ "752", "Lacota", "Glass", "89124", "Israel" ], - [ "753", "Adrian", "Ashley", "N8M 4L1", "Sri Lanka" ], - [ "754", "Ignatius", "Waller", "12053", "Thailand" ], - [ "755", "Raven", "Stevens", "88768", "Estonia" ], - [ "756", "Carly", "Camacho", "27075", "Vanuatu" ], - [ "757", "Lee", "Calderon", "19501", "Pitcairn" ], - [ "758", "Amos", "Briggs", "I6A 3L8", "Saint Kitts and Nevis" ], - [ "759", "Cheryl", "Valencia", "90517", "Denmark" ], - [ "760", "Kenyon", "Franco", "B2S 2E2", "Western Sahara" ], - [ "761", "Damian", "Acosta", "A2S 6D0", "Bahamas" ], - [ "762", "Brenda", "Zamora", "T9E 7L3", "Finland" ], - [ "763", "Connor", "Atkinson", "03975", "Sierra Leone" ], - [ "764", "Kaseem", "Waters", "A2K 2X0", "China" ], - [ "765", "Zephania", "Whitfield", "A4Z 9P7", "Eritrea" ], - [ "766", "Emmanuel", "Ballard", "G1M 6Y2", "Finland" ], - [ "767", "Amos", "Walters", "43184", "Oman" ], - [ "768", "Urielle", "Browning", "19959", "Panama" ], - [ "769", "TaShya", "Summers", "B9V 3Y3", "Micronesia" ], - [ "770", "Jermaine", "Mcgee", "X8A 4E1", "Cape Verde" ], - [ "771", "Chaney", "Berry", "G2H 2C8", "Uganda" ], - [ "772", "Jaime", "May", "49723", "Eritrea" ], - [ "773", "Olga", "Cohen", "13403", "Macao" ], - [ "774", "Jacob", "Vaughn", "U7G 1V5", "Greece" ], - [ "775", "Kelly", "Mcdonald", "Z3B 5G7", "Kiribati" ], - [ "776", "Emi", "Gilbert", "W1L 2M4", "Nicaragua" ], - [ "777", "Francis", "Nunez", "K4U 6M5", "Lithuania" ], - [ "778", "Noel", "Nelson", "Z5T 1Y0", "Nauru" ], - [ "779", "Ora", "Ellison", "Y5I 4R8", "Burundi" ], - [ "780", "Kirby", "Glass", "J5X 2E3", "Argentina" ], - [ "781", "Hayley", "Tate", "V1T 6B6", "Greece" ], - [ "782", "Mohammad", "Leblanc", "E3S 5R3", "Oman" ], - [ "783", "Lionel", "Todd", "A1Z 9E1", "Macedonia" ], - [ "784", "Courtney", "Mckay", "D4I 8Z3", "Fiji" ], - [ "785", "Reagan", "West", "84159", "Equatorial Guinea" ], - [ "786", "Noel", "Strickland", "Q7K 6S3", "Mozambique" ], - [ "787", "Lara", "Porter", "49872", "Nigeria" ], - [ "788", "Kyra", "Haley", "I9E 2K3", "Dominican Republic" ], - [ "789", "Wynter", "Beasley", "66330", "Heard Island and Mcdonald Islands" ], - [ "790", "Vladimir", "Briggs", "99538", "Burkina Faso" ], - [ "791", "Rafael", "Campbell", "V8L 2S6", "Algeria" ], - [ "792", "Buffy", "Wilder", "N3U 2X0", "Bahrain" ], - [ "793", "Nyssa", "Dawson", "38434", "Spain" ], - [ "794", "Sylvia", "Swanson", "39714", "Azerbaijan" ], - [ "795", "Jolie", "Diaz", "A1J 5I1", "Cuba" ], - [ "796", "Rosalyn", "Mcdaniel", "F3T 6E2", "Benin" ], - [ "797", "Nelle", "Prince", "K1M 4U6", "Maldives" ], - [ "798", "Luke", "Knight", "05930", "Seychelles" ], - [ "799", "Macaulay", "Conway", "79707", "American Samoa" ], - [ "800", "Freya", "Webb", "U2H 2D7", "Ireland" ], - [ "801", "Clinton", "Meyers", "S9I 7N2", "Malta" ], - [ "802", "Rudyard", "Chandler", "40347", "Bahrain" ], - [ "803", "Courtney", "Hoover", "12325", "French Polynesia" ], - [ "804", "Melissa", "Davenport", "K7P 1S8", "Canada" ], - [ "805", "Noelle", "Nieves", "87427", "Martinique" ], - [ "806", "Myles", "Hart", "V6T 1W0", "Niue" ], - [ "807", "Jasper", "Campos", "78143", "Faroe Islands" ], - [ "808", "Ariana", "Valentine", "J4X 2D4", "Ecuador" ], - [ "809", "Vanna", "Fletcher", "M4Z 1F9", "Faroe Islands" ], - [ "810", "Elijah", "Harper", "Y1B 7E4", "New Zealand" ], - [ "811", "Leilani", "Nunez", "K9W 4F0", "United Arab Emirates" ], - [ "812", "Maia", "Huber", "V4L 8M6", "United Kingdom" ], - [ "813", "Richard", "Riddle", "U8C 8Q2", "Niue" ], - [ "814", "Harper", "Blanchard", "10904", "Cameroon" ], - [ "815", "Aurelia", "Trujillo", "01646", "Dominican Republic" ], - [ "816", "Anthony", "Owen", "J2I 2B4", "Palestinian Territory, Occupied" ], - [ "817", "Kelsie", "Roy", "M3J 6K3", "Maldives" ], - [ "818", "James", "Pearson", "94810", "Mexico" ], - [ "819", "Igor", "Marshall", "Y8M 2D6", "Palau" ], - [ "820", "Aquila", "Willis", "20354", "Samoa" ], - [ "821", "Randall", "Sheppard", "73577", "Sierra Leone" ], - [ "822", "Gray", "Myers", "53651", "Gibraltar" ], - [ "823", "Dana", "Camacho", "89571", "Reunion" ], - [ "824", "Berk", "Hopper", "17794", "Cook Islands" ], - [ "825", "Shannon", "Barry", "70536", "Bouvet Island" ], - [ "826", "Dahlia", "Herman", "F8L 1Q3", "Lesotho" ], - [ "827", "Gillian", "Hayes", "O2C 7X8", "Tajikistan" ], - [ "828", "Leo", "Bolton", "P6V 6E1", "Dominica" ], - [ "829", "Vivien", "Best", "E5E 6N8", "Cuba" ], - [ "830", "Clayton", "Bradley", "E7R 3M5", "Zimbabwe" ], - [ "831", "Lesley", "Collins", "16592", "Mali" ], - [ "832", "Holly", "Hensley", "49080", "Tunisia" ], - [ "833", "Larissa", "Velazquez", "41068", "Haiti" ], - [ "834", "Delilah", "Mejia", "A5I 9Q9", "Croatia" ], - [ "835", "Drew", "Roberson", "U7E 3R1", "Somalia" ], - [ "836", "Jenette", "Patel", "64084", "Denmark" ], - [ "837", "Gillian", "Cleveland", "05659", "Syrian Arab Republic" ], - [ "838", "Noelle", "Lara", "U1N 6V6", "Sri Lanka" ], - [ "839", "Celeste", "Rollins", "26590", "Mayotte" ], - [ "840", "Elvis", "Fletcher", "M8V 6J4", "Bahamas" ], - [ "841", "Caesar", "Hays", "E3D 3T7", "Malta" ], - [ "842", "Rama", "Weber", "25880", "Malta" ], - [ "843", "Lael", "Page", "57135", "Anguilla" ], - [ "844", "Omar", "Hammond", "90213", "Belarus" ], - [ "845", "Simone", "Mcintosh", "L5P 1S0", "Bhutan" ], - [ "846", "Gay", "Harper", "56404", "Virgin Islands, U.S." ], - [ "847", "Joel", "Holman", "C1F 1C4", "Saint Lucia" ], - [ "848", "Clayton", "Pennington", "57003", "Kazakhstan" ], - [ "849", "Susan", "Mckee", "I5U 8F2", "Taiwan, Province of China" ], - [ "850", "Jenna", "Stein", "P2K 6L4", "Reunion" ], - [ "851", "Madonna", "Joyner", "Q4Q 4K6", "Guadeloupe" ], - [ "852", "Deirdre", "Ingram", "N7U 3N9", "Monaco" ], - [ "853", "Juliet", "Hodges", "U2Q 2T0", "Uzbekistan" ], - [ "854", "Naomi", "Rice", "O6T 2Z1", "Nicaragua" ], - [ "855", "Leila", "Alvarado", "Z2V 7L3", "Suriname" ], - [ "856", "George", "Leon", "L6M 1V2", "Norway" ], - [ "857", "Rama", "Cruz", "Y2S 7K6", "Kenya" ], - [ "858", "Clarke", "Mckinney", "34622", "Viet Nam" ], - [ "859", "Savannah", "Bailey", "L3O 1U6", "Solomon Islands" ], - [ "860", "Maxwell", "Gibson", "R9K 9Q1", "Virgin Islands, British" ], - [ "861", "Devin", "Humphrey", "74821", "Costa Rica" ], - [ "862", "Kadeem", "Larsen", "43178", "Luxembourg" ], - [ "863", "Elvis", "Todd", "O3O 3G9", "Azerbaijan" ], - [ "864", "Levi", "Montoya", "G1Y 1N8", "Venezuela" ], - [ "865", "Risa", "Barnes", "86118", "Benin" ], - [ "866", "Dillon", "Riggs", "O3Y 8V2", "Greenland" ], - [ "867", "Stewart", "Marshall", "V8G 8S2", "Mexico" ], - [ "868", "Camden", "Goff", "N3W 2L0", "Bahrain" ], - [ "869", "Sheila", "Meadows", "T6K 7M2", "Yemen" ], - [ "870", "Hop", "Berger", "Q8B 9R7", "Germany" ], - [ "871", "Charissa", "Wilkerson", "08090", "Burundi" ], - [ "872", "Raphael", "Carey", "03667", "United Kingdom" ], - [ "873", "Micah", "Hood", "T9N 4T5", "Georgia" ], - [ "874", "Cathleen", "Mccall", "N6H 6N3", "Tanzania, United Republic of" ], - [ "875", "Lisandra", "Poole", "S7O 1J1", "Greece" ], - [ "876", "Stone", "Blackwell", "90654", "Serbia and Montenegro" ], - [ "877", "Serena", "Mann", "32305", "Trinidad and Tobago" ], - [ "878", "Scarlet", "Turner", "D7Y 8N4", "Oman" ], - [ "879", "Zenaida", "Carrillo", "60361", "Montserrat" ], - [ "880", "Jaime", "Dalton", "F4E 6R5", "Iraq" ], - [ "881", "Wesley", "Drake", "D8J 9U2", "Bulgaria" ], - [ "882", "Armand", "Chandler", "X8Z 9E6", "Saint Kitts and Nevis" ], - [ "883", "Inez", "Dillard", "59975", "Eritrea" ], - [ "884", "Roanna", "Floyd", "65958", "Bolivia" ], - [ "885", "Timon", "Dalton", "O3Q 5B5", "Colombia" ], - [ "886", "Ifeoma", "Lamb", "J9A 9X0", "Papua New Guinea" ], - [ "887", "Brody", "Cash", "75525", "Kazakhstan" ], - [ "888", "Dawn", "Wise", "G7X 5J3", "Samoa" ], - [ "889", "Chaney", "Bartlett", "11112", "Ecuador" ], - [ "890", "Galvin", "Merritt", "59635", "Bahrain" ], - [ "891", "Cynthia", "Nash", "U5P 1H4", "Switzerland" ], - [ "892", "Tara", "Austin", "Q6X 8U0", "Burundi" ], - [ "893", "Roanna", "Petty", "28524", "Northern Mariana Islands" ], - [ "894", "Palmer", "Mcdowell", "78234", "United States Minor Outlying Islands" ], - [ "895", "Sade", "Patton", "28984", "Czech Republic" ], - [ "896", "Yoko", "Compton", "62165", "Saint Kitts and Nevis" ], - [ "897", "Regan", "Mccarthy", "C5D 6G0", "Lebanon" ], - [ "898", "Norman", "Nixon", "E4C 4G0", "Virgin Islands, U.S." ], - [ "899", "Jocelyn", "Baldwin", "X9R 2B3", "Macedonia" ], - [ "900", "Jaquelyn", "Berg", "N6X 6E1", "Saint Lucia" ], - [ "901", "Zane", "Nelson", "G9P 4J8", "Macao" ], - [ "902", "Judith", "Elliott", "R4I 4O3", "Iraq" ], - [ "903", "Maia", "Ellis", "S9V 6P0", "Bahrain" ], - [ "904", "Mechelle", "Stevens", "43406", "Bouvet Island" ], - [ "905", "Sylvester", "Duran", "K5D 8W5", "Costa Rica" ], - [ "906", "Unity", "Cooke", "64362", "Ecuador" ], - [ "907", "Karly", "Velazquez", "43286", "Guam" ], - [ "908", "Damian", "Yates", "84910", "Thailand" ], - [ "909", "Linus", "Gross", "31808", "Israel" ], - [ "910", "Cooper", "Franco", "36700", "Yemen" ], - [ "911", "Gail", "Jones", "09157", "Turkey" ], - [ "912", "Hayfa", "Bennett", "59422", "France" ], - [ "913", "Hermione", "Barber", "I6W 8Z5", "Mozambique" ], - [ "914", "Hedy", "Stevens", "35535", "Cuba" ], - [ "915", "Galvin", "Frederick", "J2W 9A3", "Virgin Islands, British" ], - [ "916", "Lamar", "Rush", "P4O 3H4", "Austria" ], - [ "917", "Brenda", "Walter", "K8Q 9H9", "Tajikistan" ], - [ "918", "Ria", "Guy", "12801", "Gibraltar" ], - [ "919", "Bruno", "Lynch", "I6U 7D0", "Greenland" ], - [ "920", "Kirk", "Pearson", "66242", "Falkland Islands (Malvinas)" ], - [ "921", "Owen", "Sosa", "61483", "Martinique" ], - [ "922", "Rajah", "Mccarty", "G9K 6L2", "Faroe Islands" ], - [ "923", "Erasmus", "Malone", "D6H 7H5", "Sierra Leone" ], - [ "924", "Raja", "Hale", "85590", "Guadeloupe" ], - [ "925", "Logan", "Christensen", "Y6L 8Z0", "Guatemala" ], - [ "926", "Kirestin", "Griffith", "47900", "Micronesia" ], - [ "927", "Kato", "Reeves", "93779", "Uruguay" ], - [ "928", "Jonah", "Suarez", "13708", "Spain" ], - [ "929", "Adam", "Lynn", "E1P 1L3", "Indonesia" ], - [ "930", "Quinn", "Mckinney", "99683", "Faroe Islands" ], - [ "931", "Whilemina", "Macias", "32145", "Iceland" ], - [ "932", "Gillian", "Osborne", "L3L 6G0", "Italy" ], - [ "933", "Venus", "Zamora", "28318", "Comoros" ], - [ "934", "Allegra", "Eaton", "P5X 9S0", "Antarctica" ], - [ "935", "Driscoll", "Preston", "R3L 9R0", "Niue" ], - [ "936", "Joel", "Spencer", "12006", "Monaco" ], - [ "937", "Lucius", "Sharp", "B8V 6U7", "Dominica" ], - [ "938", "Curran", "Robinson", "82216", "Romania" ], - [ "939", "Kerry", "Espinoza", "N4B 7Q1", "Guatemala" ], - [ "940", "Isaac", "Kline", "85674", "Costa Rica" ], - [ "941", "Neil", "Harrison", "I5A 2S2", "Greenland" ], - [ "942", "Ezra", "Rodriguez", "D6P 5Q3", "Angola" ], - [ "943", "Galvin", "Jefferson", "D6H 7G0", "Macedonia" ], - [ "944", "Joseph", "Hahn", "Z8V 9B5", "Uganda" ], - [ "945", "Naida", "Hammond", "40105", "Philippines" ], - [ "946", "Brenna", "Everett", "41704", "Indonesia" ], - [ "947", "Rae", "Parks", "79077", "Sweden" ], - [ "948", "Jessica", "Richard", "Y3I 5R3", "Uganda" ], - [ "949", "Rachel", "Marks", "16157", "Cameroon" ], - [ "950", "Maxwell", "Ferguson", "V6A 6M0", "Ukraine" ], - [ "951", "Alyssa", "Beard", "13936", "Antarctica" ], - [ "952", "Camille", "Gill", "V9Q 9P7", "New Caledonia" ], - [ "953", "Cora", "Bond", "M9X 1A4", "Seychelles" ], - [ "954", "Peter", "Acosta", "07937", "Chile" ], - [ "955", "Ella", "Poole", "A3F 9Z1", "Panama" ], - [ "956", "Ashely", "Guerrero", "37436", "Central African Republic" ], - [ "957", "Mikayla", "Johnston", "L9W 5T8", "Cameroon" ], - [ "958", "Ora", "Weaver", "65897", "Turks and Caicos Islands" ], - [ "959", "Timon", "Barnes", "R6J 1J7", "Djibouti" ], - [ "960", "Jamalia", "Wade", "22211", "United States" ], - [ "961", "Bradley", "Haney", "K1H 1Q1", "Western Sahara" ], - [ "962", "Lance", "Le", "H4R 9T7", "Botswana" ], - [ "963", "Ethan", "Rich", "T8N 1C6", "Netherlands" ], - [ "964", "Jeanette", "Carver", "G1E 5C8", "Cook Islands" ], - [ "965", "Ocean", "Marquez", "15084", "Pakistan" ], - [ "966", "Ifeoma", "Cleveland", "R9D 6M1", "French Guiana" ], - [ "967", "Sylvia", "Herring", "U4R 8P1", "Thailand" ], - [ "968", "Clare", "Huffman", "Q5G 2Q0", "Niger" ], - [ "969", "Colton", "Leach", "V3F 9W6", "Syrian Arab Republic" ], - [ "970", "Maryam", "Hoover", "Y7U 6N3", "Slovakia" ], - [ "971", "Nola", "Snider", "54275", "Bosnia and Herzegovina" ], - [ "972", "Kameko", "Cote", "M3C 8N0", "Cambodia" ], - [ "973", "Julian", "Pugh", "B6E 7J7", "Mauritania" ], - [ "974", "Xena", "Lott", "52294", "Estonia" ], - [ "975", "Fuller", "Kirk", "65396", "Qatar" ], - [ "976", "Lance", "Knox", "78074", "Serbia and Montenegro" ], - [ "977", "Hedwig", "Beck", "T5P 4C8", "Dominican Republic" ], - [ "978", "Martena", "Diaz", "65420", "Saint Pierre and Miquelon" ], - [ "979", "Shafira", "David", "74843", "Senegal" ], - [ "980", "Shafira", "Clark", "T6F 5C7", "Mongolia" ], - [ "981", "Georgia", "Booth", "28183", "Japan" ], - [ "982", "Cameron", "Austin", "I2J 1R1", "Bahrain" ], - [ "983", "Vanna", "Hyde", "82434", "Croatia" ], - [ "984", "Deanna", "Park", "68486", "Zimbabwe" ], - [ "985", "Grady", "Freeman", "U4O 1Q9", "Belarus" ], - [ "986", "Sandra", "Knapp", "31413", "Sudan" ], - [ "987", "Dorian", "Joseph", "90768", "Lithuania" ], - [ "988", "Adria", "Bonner", "15899", "Mongolia" ], - [ "989", "Sebastian", "Guzman", "G9L 9G5", "Yemen" ], - [ "990", "Angelica", "Puckett", "W8D 8W8", "Virgin Islands, U.S." ], - [ "991", "Connor", "Parks", "26175", "Virgin Islands, U.S." ], - [ "992", "Yardley", "Griffith", "H3L 2U3", "Saint Pierre and Miquelon" ], - [ "993", "Charissa", "Beck", "30611", "Zambia" ], - [ "994", "Calvin", "Russo", "79906", "Chile" ], - [ "995", "Yoshi", "Durham", "N2J 8M8", "China" ], - [ "996", "Finn", "Buck", "Q9F 9Z8", "Iraq" ], - [ "997", "Kessie", "Holden", "C4A 1J0", "Syrian Arab Republic" ], - [ "998", "Chloe", "Richards", "63091", "Canada" ], - [ "999", "Uriel", "Snyder", "95487", "Pakistan" ], - [ "1000", "Maite", "Cash", "90705", "Syrian Arab Republic" ], - [ "1001", "Cameron", "Schwartz", "82778", "Taiwan, Province of China" ], - [ "1002", "Faith", "Jimenez", "J6K 2P9", "Saint Pierre and Miquelon" ], - [ "1003", "Otto", "Hancock", "34535", "Andorra" ], - [ "1004", "Harlan", "Blackwell", "N8Y 4E6", "Qatar" ], - [ "1005", "Fitzgerald", "Gilliam", "Y9J 6J5", "Burkina Faso" ], - [ "1006", "Lev", "Ballard", "01956", "American Samoa" ], - [ "1007", "Freya", "Brown", "01190", "Portugal" ], - [ "1008", "Harding", "Osborn", "14814", "San Marino" ], - [ "1009", "Alexander", "Howard", "81842", "Reunion" ], - [ "1010", "Ori", "Marsh", "77738", "Saint Helena" ], - [ "1011", "Brennan", "Rich", "18690", "Cambodia" ], - [ "1012", "Dawn", "Christensen", "Y8F 7R3", "Mali" ], - [ "1013", "Ahmed", "Pearson", "62230", "Sudan" ], - [ "1014", "Tanek", "Head", "25744", "Kiribati" ], - [ "1015", "Meredith", "Cantu", "E6X 2L1", "Kenya" ], - [ "1016", "Levi", "Fisher", "I9Y 9G2", "Djibouti" ], - [ "1017", "Katell", "Cameron", "10278", "Denmark" ], - [ "1018", "Ina", "Orr", "P7H 2O3", "Congo" ], - [ "1019", "Beck", "Hayden", "15115", "Saint Lucia" ], - [ "1020", "Cassady", "Wagner", "R9H 8C5", "Estonia" ], - [ "1021", "Amena", "Herrera", "13286", "Bahrain" ], - [ "1022", "Tarik", "Gross", "C3X 3W0", "Azerbaijan" ], - [ "1023", "Marshall", "Collier", "13416", "Dominica" ], - [ "1024", "Kirestin", "Callahan", "15429", "Micronesia" ], - [ "1025", "Sasha", "Rice", "O6H 6X2", "Denmark" ], - [ "1026", "Ross", "Gonzalez", "D3B 3R5", "Sudan" ], - [ "1027", "Veda", "Arnold", "56611", "Swaziland" ], - [ "1028", "Ferdinand", "Macias", "P1Q 3I2", "Colombia" ], - [ "1029", "Mohammad", "Reed", "74005", "Bhutan" ], - [ "1030", "Reagan", "Sandoval", "19275", "Pitcairn" ], - [ "1031", "Debra", "Nelson", "85945", "Ukraine" ], - [ "1032", "Cleo", "Robertson", "84072", "Guadeloupe" ], - [ "1033", "Tanya", "Vance", "C1F 7F1", "Romania" ], - [ "1034", "Desirae", "Wooten", "74659", "Mongolia" ], - [ "1035", "Hiram", "Estes", "Q5Z 5A0", "Namibia" ], - [ "1036", "Medge", "Weiss", "67079", "Azerbaijan" ], - [ "1037", "Hu", "Chase", "87562", "Cuba" ], - [ "1038", "Shafira", "Everett", "18983", "Georgia" ], - [ "1039", "Mannix", "Lamb", "45542", "Venezuela" ], - [ "1040", "Germaine", "Harvey", "I9G 1U0", "Falkland Islands (Malvinas)" ], - [ "1041", "Brenna", "Leonard", "55573", "New Zealand" ], - [ "1042", "Kylie", "Rivas", "U9J 3O9", "Djibouti" ], - [ "1043", "Alexandra", "Rich", "T4O 6S6", "Cuba" ], - [ "1044", "Dorian", "Spears", "00456", "Brazil" ], - [ "1045", "Laurel", "Abbott", "45449", "Switzerland" ], - [ "1046", "Gabriel", "Drake", "U1S 5O2", "Trinidad and Tobago" ], - [ "1047", "Priscilla", "Mercer", "01401", "Serbia and Montenegro" ], - [ "1048", "Darius", "Hoffman", "49694", "Greece" ], - [ "1049", "Caesar", "Patton", "42322", "Suriname" ], - [ "1050", "Susan", "Clayton", "W1G 5C3", "Maldives" ], - [ "1051", "Zane", "Dunlap", "73722", "Oman" ], - [ "1052", "Leah", "Fuentes", "60412", "Luxembourg" ], - [ "1053", "Yardley", "Hansen", "03194", "Mauritius" ], - [ "1054", "Ingrid", "Talley", "37315", "Solomon Islands" ], - [ "1055", "Demetria", "Evans", "30587", "Tajikistan" ], - [ "1056", "Ignacia", "Alford", "01282", "Bouvet Island" ], - [ "1057", "Destiny", "Wade", "L5R 3V3", "Uganda" ], - [ "1058", "Alden", "Mason", "V7D 2V6", "Dominican Republic" ], - [ "1059", "Pamela", "Wilcox", "L1I 6I1", "Canada" ], - [ "1060", "Melvin", "Buckley", "05478", "Hungary" ], - [ "1061", "Eve", "Holcomb", "B6B 8T1", "Cook Islands" ], - [ "1062", "Arthur", "Weeks", "R5P 7U2", "Bangladesh" ], - [ "1063", "Marah", "Levine", "10075", "Somalia" ], - [ "1064", "Keiko", "Freeman", "90950", "Faroe Islands" ], - [ "1065", "Dorian", "Rose", "T5M 4Z0", "Fiji" ], - [ "1066", "Desirae", "Velez", "T4E 8K2", "Afghanistan" ], - [ "1067", "Rebekah", "Lucas", "T9A 8V5", "Tunisia" ], - [ "1068", "Sylvester", "Copeland", "W6R 3B6", "Jamaica" ], - [ "1069", "Alea", "Preston", "31050", "Netherlands Antilles" ], - [ "1070", "Aphrodite", "Gordon", "T7C 6T8", "Sao Tome and Principe" ], - [ "1071", "Yael", "Delaney", "G9W 9P1", "Mexico" ], - [ "1072", "Sierra", "Perez", "R3O 8H0", "Slovenia" ], - [ "1073", "Avram", "Briggs", "05221", "Norfolk Island" ], - [ "1074", "Troy", "Poole", "W7Q 8O5", "Malta" ], - [ "1075", "Gavin", "Sandoval", "37352", "Greece" ], - [ "1076", "Nerea", "Stokes", "N2Q 6S9", "United States" ], - [ "1077", "Genevieve", "Ramirez", "53829", "Mali" ], - [ "1078", "Oliver", "Boone", "M1Q 8V9", "Bolivia" ], - [ "1079", "Lars", "Ramirez", "L2R 6V2", "Bosnia and Herzegovina" ], - [ "1080", "Abbot", "Horton", "R1R 1V8", "Netherlands Antilles" ], - [ "1081", "Abra", "Avila", "41608", "Congo" ], - [ "1082", "Candice", "Christian", "13930", "Faroe Islands" ], - [ "1083", "Flavia", "Miranda", "93964", "Estonia" ], - [ "1084", "Medge", "Drake", "Q7C 2E2", "Belize" ], - [ "1085", "Lee", "Montgomery", "H3T 4Q6", "Costa Rica" ], - [ "1086", "Aline", "Ratliff", "99839", "Macao" ], - [ "1087", "Shafira", "Fox", "A9S 7C8", "Palestinian Territory, Occupied" ], - [ "1088", "Orson", "Greene", "K9L 7R8", "Myanmar" ], - [ "1089", "Henry", "Joyner", "55853", "South Africa" ], - [ "1090", "Keely", "Boyer", "08996", "Liberia" ], - [ "1091", "Jerome", "Jones", "31770", "Saint Lucia" ], - [ "1092", "Hermione", "Dunlap", "U2R 7R2", "Moldova" ], - [ "1093", "Lenore", "Powers", "73772", "Tunisia" ], - [ "1094", "Alden", "Newman", "V4C 3O8", "Bhutan" ], - [ "1095", "Jasper", "Blevins", "K2H 5W0", "Paraguay" ], - [ "1096", "Robert", "Bender", "R5F 1H9", "Philippines" ], - [ "1097", "Bo", "Richard", "N5R 6T2", "Trinidad and Tobago" ], - [ "1098", "Iliana", "Mcpherson", "23758", "Bangladesh" ], - [ "1099", "Alfreda", "Camacho", "35387", "Saint Helena" ], - [ "1100", "Kirsten", "Giles", "14079", "Romania" ], - [ "1101", "Harlan", "Crawford", "84847", "French Polynesia" ], - [ "1102", "Wynne", "Bauer", "W9D 6F6", "Kazakhstan" ], - [ "1103", "Connor", "Melton", "E2F 4Q2", "Angola" ], - [ "1104", "Evelyn", "Barry", "I9H 8W7", "Turkmenistan" ], - [ "1105", "Barry", "Stephens", "07823", "Gibraltar" ], - [ "1106", "Ferris", "Farrell", "I7H 5Z6", "Saint Vincent and The Grenadines" ], - [ "1107", "Ursa", "Carr", "31124", "Chad" ], - [ "1108", "Laith", "Johnson", "10428", "Cyprus" ], - [ "1109", "Harlan", "Frank", "J6K 7I6", "Gambia" ], - [ "1110", "Gregory", "Ratliff", "P1C 8H2", "Chile" ], - [ "1111", "Rina", "Holloway", "Y7N 1E7", "Estonia" ], - [ "1112", "Maris", "Joyner", "T6R 2H9", "France" ], - [ "1113", "Galvin", "Webster", "V8E 9U4", "Croatia" ], - [ "1114", "Farrah", "Bean", "H2B 8E2", "Palestinian Territory, Occupied" ], - [ "1115", "Martha", "Schroeder", "14485", "Georgia" ], - [ "1116", "Mari", "Boone", "D4C 1Q0", "Comoros" ], - [ "1117", "Nadine", "Mercado", "35046", "Syrian Arab Republic" ], - [ "1118", "Isadora", "Keith", "R5H 8Y7", "Mayotte" ], - [ "1119", "Quinn", "William", "V8Q 3Y6", "India" ], - [ "1120", "Justina", "Gilbert", "11271", "Yemen" ], - [ "1121", "Jordan", "Hull", "F4Z 7R8", "Lesotho" ], - [ "1122", "Mechelle", "Davenport", "A9Z 8P2", "Bermuda" ], - [ "1123", "Isabelle", "Webster", "60972", "Zimbabwe" ], - [ "1124", "Armand", "Butler", "Y3F 4H9", "Nicaragua" ], - [ "1125", "Herman", "Beach", "Q8N 6V3", "Cape Verde" ], - [ "1126", "Brianna", "Love", "D9B 2W8", "Sierra Leone" ], - [ "1127", "Joy", "Brown", "O7V 7C1", "Djibouti" ], - [ "1128", "Amena", "Moss", "P8D 1L9", "Andorra" ], - [ "1129", "Zeph", "Whitehead", "01513", "Tanzania, United Republic of" ], - [ "1130", "Logan", "Matthews", "73541", "Finland" ], - [ "1131", "Amela", "Gregory", "65323", "Swaziland" ], - [ "1132", "Zoe", "Owen", "V5L 5O6", "Zambia" ], - [ "1133", "September", "Hewitt", "R8K 4G9", "Congo" ], - [ "1134", "Holly", "Walter", "S2E 3M4", "Serbia and Montenegro" ], - [ "1135", "Zeph", "Beach", "J6Z 8B5", "Ecuador" ], - [ "1136", "Morgan", "Decker", "M9H 8I5", "Uruguay" ], - [ "1137", "Malcolm", "Maldonado", "S6F 8X6", "Netherlands" ], - [ "1138", "Fay", "Day", "B9R 1U7", "Seychelles" ], - [ "1139", "Charles", "Juarez", "62791", "Virgin Islands, U.S." ], - [ "1140", "Amery", "Stout", "L9A 1F8", "Central African Republic" ], - [ "1141", "Irene", "Ferrell", "52649", "Norway" ], - [ "1142", "Dean", "Stout", "N5C 2S8", "Uruguay" ], - [ "1143", "Eric", "Baxter", "82082", "Chile" ], - [ "1144", "Shelley", "Larsen", "Y4T 4P3", "Antarctica" ], - [ "1145", "Rigel", "Ellis", "E3S 6K8", "Zimbabwe" ], - [ "1146", "Maite", "Rosa", "F6C 5Q9", "Zambia" ], - [ "1147", "Serena", "Blanchard", "99373", "Estonia" ], - [ "1148", "Melanie", "Berger", "C5P 4E2", "Mozambique" ], - [ "1149", "Noah", "Spence", "B8H 7X7", "Martinique" ], - [ "1150", "Elliott", "Pierce", "W5B 8V7", "Swaziland" ], - [ "1151", "Ahmed", "Chang", "E9X 7J0", "Bulgaria" ], - [ "1152", "Ross", "Figueroa", "22458", "China" ], - [ "1153", "Gary", "Calderon", "V3C 4J8", "Algeria" ], - [ "1154", "Montana", "Franklin", "94093", "Haiti" ], - [ "1155", "Rae", "Curry", "45477", "Morocco" ], - [ "1156", "Jillian", "Hogan", "N8L 4B5", "Iceland" ], - [ "1157", "Mia", "Kaufman", "54758", "Burkina Faso" ], - [ "1158", "Remedios", "Wilkerson", "75420", "Saint Vincent and The Grenadines" ], - [ "1159", "Xanthus", "Baldwin", "13961", "Congo" ], - [ "1160", "Madeline", "Gates", "76351", "Saint Helena" ], - [ "1161", "Leroy", "Craig", "12770", "Finland" ], - [ "1162", "Melanie", "Carpenter", "C3B 8L4", "Mayotte" ], - [ "1163", "Ashely", "Mcneil", "E7E 9K5", "French Southern Territories" ], - [ "1164", "Karina", "Mcneil", "39956", "United Arab Emirates" ], - [ "1165", "Nina", "Mills", "92913", "Saint Kitts and Nevis" ], - [ "1166", "Ashton", "Singleton", "73890", "Libyan Arab Jamahiriya" ], - [ "1167", "Meghan", "Black", "31814", "Armenia" ], - [ "1168", "Jolene", "Pope", "U6K 7O6", "Venezuela" ], - [ "1169", "Abel", "Boyd", "37110", "Botswana" ], - [ "1170", "Tiger", "Coffey", "Y6P 3S4", "Faroe Islands" ], - [ "1171", "Aileen", "Rowe", "F7G 8D9", "Netherlands Antilles" ], - [ "1172", "Bryar", "Forbes", "T2N 5H6", "Saint Vincent and The Grenadines" ], - [ "1173", "Vera", "Hoffman", "36299", "Guadeloupe" ], - [ "1174", "Hadassah", "Wright", "S8J 5B2", "Peru" ], - [ "1175", "Bruce", "Blair", "Q8E 7K6", "Cape Verde" ], - [ "1176", "Brianna", "Wolf", "V8S 5A6", "Bahamas" ], - [ "1177", "Kimberley", "Reed", "17652", "Tajikistan" ], - [ "1178", "Colin", "Phelps", "42334", "Brunei Darussalam" ], - [ "1179", "Gil", "Britt", "U3N 6C2", "Swaziland" ], - [ "1180", "Hasad", "Pena", "09526", "United States" ], - [ "1181", "Violet", "Dixon", "48691", "Micronesia" ], - [ "1182", "Uriel", "Bowen", "Z7F 7A7", "Uzbekistan" ], - [ "1183", "Madeline", "Keller", "18227", "Iran, Islamic Republic of" ], - [ "1184", "Buffy", "Mckee", "23861", "Ethiopia" ], - [ "1185", "Doris", "Martin", "V8N 8O7", "Liberia" ], - [ "1186", "Mia", "Burke", "64582", "Virgin Islands, British" ], - [ "1187", "William", "Kemp", "63587", "Tuvalu" ], - [ "1188", "Stacy", "Quinn", "01390", "Nauru" ], - [ "1189", "Halla", "Solomon", "31138", "Pakistan" ], - [ "1190", "Kasimir", "Rodriguez", "67823", "Costa Rica" ], - [ "1191", "Davis", "Lawrence", "27918", "Rwanda" ], - [ "1192", "Nigel", "Bryan", "L5U 2U9", "Seychelles" ], - [ "1193", "Ivana", "Stone", "94862", "Niue" ], - [ "1194", "Naomi", "Yang", "68985", "Haiti" ], - [ "1195", "Roanna", "Brown", "51196", "India" ], - [ "1196", "Colorado", "Chavez", "45634", "Brazil" ], - [ "1197", "Illana", "Levy", "V1A 7R8", "Jordan" ], - [ "1198", "Ali", "Lowe", "N8K 1Y5", "Hungary" ], - [ "1199", "Virginia", "Witt", "Y3O 5W8", "Azerbaijan" ], - [ "1200", "Howard", "Flores", "I9C 3Q7", "Fiji" ], - [ "1201", "Walter", "Odom", "78418", "Thailand" ], - [ "1202", "Thor", "Craig", "00935", "Jamaica" ], - [ "1203", "Petra", "Barry", "E5L 5K5", "Finland" ], - [ "1204", "Lev", "Ellison", "I6S 1K1", "Mongolia" ], - [ "1205", "Roth", "Osborne", "15014", "Swaziland" ], - [ "1206", "Lucius", "Baldwin", "12766", "China" ], - [ "1207", "Candice", "Hyde", "B5E 4B8", "Bahamas" ], - [ "1208", "Maggy", "Bailey", "76781", "Northern Mariana Islands" ], - [ "1209", "Beatrice", "Gregory", "S5S 8S4", "Rwanda" ], - [ "1210", "Adrian", "Bowman", "58500", "Vanuatu" ], - [ "1211", "Brenden", "Chandler", "50326", "Thailand" ], - [ "1212", "Jada", "Richmond", "15990", "Saint Vincent and The Grenadines" ], - [ "1213", "Sawyer", "Page", "G2W 7R7", "Somalia" ], - [ "1214", "Haley", "Jordan", "U7X 4U2", "Equatorial Guinea" ], - [ "1215", "Ruby", "Watson", "30990", "Romania" ], - [ "1216", "Jocelyn", "Knowles", "78987", "Lebanon" ], - [ "1217", "Preston", "Stevenson", "F3L 9B3", "Mali" ], - [ "1218", "Kimberly", "Merritt", "38779", "Venezuela" ], - [ "1219", "Herrod", "Burke", "56225", "French Guiana" ], - [ "1220", "Solomon", "Shannon", "67980", "Cape Verde" ], - [ "1221", "Bradley", "Stokes", "10213", "Botswana" ], - [ "1222", "Grace", "Kinney", "67923", "Montserrat" ], - [ "1223", "Celeste", "Clark", "S7M 6I2", "Guatemala" ], - [ "1224", "Patricia", "Frank", "05615", "Venezuela" ], - [ "1225", "Madonna", "Alford", "10878", "Brunei Darussalam" ], - [ "1226", "May", "Rios", "N7O 2L0", "Georgia" ], - [ "1227", "Driscoll", "Roach", "Y7F 9F8", "Palestinian Territory, Occupied" ], - [ "1228", "Idona", "Cruz", "T6Q 8L4", "Iraq" ], - [ "1229", "Sydney", "Delacruz", "69511", "United Arab Emirates" ], - [ "1230", "Gillian", "Huff", "52624", "French Southern Territories" ], - [ "1231", "Minerva", "Rosario", "29195", "Andorra" ], - [ "1232", "Kerry", "Alvarado", "L3Q 2V5", "Portugal" ], - [ "1233", "Amos", "Bass", "26389", "Holy See (Vatican City State)" ], - [ "1234", "Deanna", "Parks", "57376", "Estonia" ], - [ "1235", "Fitzgerald", "Green", "M3P 9N2", "Slovenia" ], - [ "1236", "Sade", "Hinton", "35561", "Barbados" ], - [ "1237", "Suki", "Parsons", "44591", "Syrian Arab Republic" ], - [ "1238", "Orli", "Weeks", "K2W 9L4", "Peru" ], - [ "1239", "Nicholas", "Copeland", "I5W 7A4", "French Guiana" ], - [ "1240", "Guy", "Vang", "22277", "Pitcairn" ], - [ "1241", "Hunter", "Goodman", "72290", "Malaysia" ], - [ "1242", "Noble", "Rich", "I3B 6T9", "Gibraltar" ], - [ "1243", "Delilah", "Zamora", "96328", "New Zealand" ], - [ "1244", "Sybil", "Mercer", "93665", "Namibia" ], - [ "1245", "Scarlett", "Brock", "Z2E 3J2", "Central African Republic" ], - [ "1246", "Channing", "Alexander", "W5V 8D2", "San Marino" ], - [ "1247", "Carolyn", "Boyle", "Q5Z 9E6", "Gabon" ], - [ "1248", "Irene", "Jennings", "F3H 4O6", "Saint Helena" ], - [ "1249", "Bianca", "Pratt", "66354", "Malaysia" ], - [ "1250", "Dexter", "Cole", "56106", "French Southern Territories" ], - [ "1251", "Berk", "Velez", "26759", "Lesotho" ], - [ "1252", "Barrett", "Richardson", "59446", "Cocos (Keeling) Islands" ], - [ "1253", "Scarlet", "Jacobs", "G9A 7L6", "Dominica" ], - [ "1254", "Aiko", "Brooks", "R6R 9E4", "Liberia" ], - [ "1255", "Jacob", "Moore", "P2Y 6P3", "Cambodia" ], - [ "1256", "Madeline", "Bishop", "D4I 2E7", "Dominican Republic" ], - [ "1257", "Jarrod", "Evans", "C9O 7V7", "Taiwan, Province of China" ], - [ "1258", "Beverly", "Witt", "64850", "Denmark" ], - [ "1259", "Karyn", "Rhodes", "D6G 5Z3", "Cape Verde" ], - [ "1260", "Imani", "Quinn", "01897", "Macao" ], - [ "1261", "Athena", "Eaton", "03568", "Syrian Arab Republic" ], - [ "1262", "Raymond", "Valdez", "21037", "Romania" ], - [ "1263", "Christopher", "Ferguson", "64945", "Indonesia" ], - [ "1264", "Latifah", "Harris", "91381", "Suriname" ], - [ "1265", "Dacey", "Wagner", "81483", "Qatar" ], - [ "1266", "Summer", "Myers", "H6A 1G5", "Angola" ], - [ "1267", "Jasmine", "Rivera", "Y4W 8P2", "Virgin Islands, British" ], - [ "1268", "Cairo", "Massey", "Q6Y 7A7", "Poland" ], - [ "1269", "Jena", "Hill", "89480", "United States Minor Outlying Islands" ], - [ "1270", "Ava", "Benson", "L9H 8V1", "Sri Lanka" ], - [ "1271", "Gillian", "Mercado", "A9W 6V5", "Norway" ], - [ "1272", "Peter", "Marquez", "I5B 3W9", "Guyana" ], - [ "1273", "Price", "Coleman", "X8G 2S0", "Burkina Faso" ], - [ "1274", "Shana", "Harper", "L2B 3U9", "Malaysia" ], - [ "1275", "Serina", "Matthews", "58061", "Lithuania" ], - [ "1276", "Aretha", "Bryant", "Y8J 7A5", "Tonga" ], - [ "1277", "Wesley", "Craig", "20141", "Australia" ], - [ "1278", "Martena", "Mercer", "P6X 2L9", "Sudan" ], - [ "1279", "Tamara", "Dennis", "D3H 9R0", "Mali" ], - [ "1280", "Phelan", "Pena", "D2H 2H7", "United States Minor Outlying Islands" ], - [ "1281", "Rebecca", "Kinney", "B5Z 9S4", "Antarctica" ], - [ "1282", "Josephine", "Delgado", "81010", "Algeria" ], - [ "1283", "Kieran", "Estes", "70093", "Bermuda" ], - [ "1284", "Tamara", "Williamson", "90905", "French Guiana" ], - [ "1285", "Dora", "Serrano", "W8K 6R5", "Nauru" ], - [ "1286", "Morgan", "Bass", "B6F 8R2", "Madagascar" ], - [ "1287", "Margaret", "Austin", "D2C 2C1", "Belgium" ], - [ "1288", "Nasim", "Berry", "J9X 7M5", "Heard Island and Mcdonald Islands" ], - [ "1289", "Jelani", "Rutledge", "34552", "Bolivia" ], - [ "1290", "Cassady", "Hardin", "I2K 4H6", "Hong Kong" ], - [ "1291", "Jenette", "Thornton", "44943", "Uganda" ], - [ "1292", "Alexandra", "Sims", "93937", "Australia" ], - [ "1293", "Ross", "Higgins", "61993", "Nicaragua" ], - [ "1294", "Penelope", "Henson", "90344", "Trinidad and Tobago" ], - [ "1295", "Yoshi", "Blackwell", "C8D 1T4", "Costa Rica" ], - [ "1296", "Daria", "Rodriquez", "X3C 6L0", "Iceland" ], - [ "1297", "Wesley", "Waller", "43947", "Myanmar" ], - [ "1298", "Adam", "Hayden", "88969", "Italy" ], - [ "1299", "Charity", "William", "46439", "Greece" ], - [ "1300", "Ronan", "Hopper", "51955", "Zambia" ], - [ "1301", "Geraldine", "Hatfield", "W9S 7T5", "Luxembourg" ], - [ "1302", "Barry", "Nicholson", "79625", "Liechtenstein" ], - [ "1303", "Donovan", "Ortiz", "68119", "Macao" ], - [ "1304", "Jeanette", "Cooper", "D5P 9L2", "Sri Lanka" ], - [ "1305", "Isadora", "Stephenson", "P4X 4H5", "Mauritania" ], - [ "1306", "Hall", "Hays", "J2Z 2H1", "Svalbard and Jan Mayen" ], - [ "1307", "Idola", "Roberson", "89249", "Niue" ], - [ "1308", "Olympia", "Dennis", "69498", "Guinea" ], - [ "1309", "Naida", "Palmer", "19840", "Gambia" ], - [ "1310", "Maxine", "Rollins", "87856", "Belize" ], - [ "1311", "Rooney", "Phelps", "48424", "Italy" ], - [ "1312", "Shelly", "Edwards", "O7O 1U4", "Mali" ], - [ "1313", "Cassidy", "Holcomb", "98785", "Colombia" ], - [ "1314", "Sybil", "Moran", "F3C 6E4", "Switzerland" ], - [ "1315", "Mufutau", "Larson", "00276", "British Indian Ocean Territory" ], - [ "1316", "Fiona", "Bryant", "U7Y 7N6", "Cocos (Keeling) Islands" ], - [ "1317", "Lenore", "Boyle", "H5G 6P9", "Sudan" ], - [ "1318", "Ignacia", "Avila", "Y5M 1S2", "Romania" ], - [ "1319", "Wendy", "Stein", "25422", "Taiwan, Province of China" ], - [ "1320", "Garrison", "Bass", "B9J 6D9", "Romania" ], - [ "1321", "Curran", "Roy", "X2F 4P2", "Taiwan, Province of China" ], - [ "1322", "Oliver", "Beach", "N6J 1C5", "Kazakhstan" ], - [ "1323", "Bo", "Duran", "D5C 5C2", "Eritrea" ], - [ "1324", "Tashya", "Morrow", "N2J 7O9", "Rwanda" ], - [ "1325", "Cheryl", "Powell", "72413", "Niger" ], - [ "1326", "Justin", "Roth", "18779", "Brunei Darussalam" ], - [ "1327", "Nathaniel", "Foster", "04955", "Bermuda" ], - [ "1328", "Candace", "Nunez", "G7Z 1N2", "Moldova" ], - [ "1329", "Nero", "West", "K3Q 6B3", "Myanmar" ], - [ "1330", "Brendan", "Mcintyre", "C4E 5H7", "Argentina" ], - [ "1331", "Chaney", "Stafford", "V3X 8J4", "Benin" ], - [ "1332", "Sylvia", "Velez", "95851", "Iraq" ], - [ "1333", "Azalia", "Castro", "55986", "Israel" ], - [ "1334", "Emily", "Hogan", "74667", "Botswana" ], - [ "1335", "Buckminster", "Hurst", "N9C 2X6", "Reunion" ], - [ "1336", "Rinah", "Rodriquez", "31896", "Guinea-bissau" ], - [ "1337", "Nash", "Barnett", "Y8X 7H5", "China" ], - [ "1338", "Xanthus", "Barker", "11212", "Trinidad and Tobago" ], - [ "1339", "Minerva", "Huber", "M6M 9U3", "Equatorial Guinea" ], - [ "1340", "Kaseem", "Tillman", "86565", "Bulgaria" ], - [ "1341", "Cassidy", "Dejesus", "93205", "Sierra Leone" ], - [ "1342", "Sheila", "Munoz", "26473", "Benin" ], - [ "1343", "Florence", "Yates", "M5O 1J1", "Russian Federation" ], - [ "1344", "Isadora", "Wagner", "88381", "Philippines" ], - [ "1345", "Hilel", "Kramer", "E5D 4F5", "Lebanon" ], - [ "1346", "Stewart", "Lawson", "67313", "Malaysia" ], - [ "1347", "Ira", "Duffy", "52841", "Greece" ], - [ "1348", "Ignatius", "Robinson", "10035", "Russian Federation" ], - [ "1349", "Baxter", "Carroll", "92288", "Albania" ], - [ "1350", "Palmer", "James", "N5X 5B1", "Germany" ], - [ "1351", "Ava", "Eaton", "76497", "Egypt" ], - [ "1352", "Kiona", "Smith", "09402", "Belize" ], - [ "1353", "Brian", "Barlow", "00156", "Panama" ], - [ "1354", "Nolan", "Rosa", "J2O 9W2", "Uruguay" ], - [ "1355", "Teegan", "Burnett", "02401", "Italy" ], - [ "1356", "Erin", "Knox", "95496", "Egypt" ], - [ "1357", "Amela", "Sanford", "59890", "Virgin Islands, U.S." ], - [ "1358", "Quemby", "Hensley", "17698", "Tuvalu" ], - [ "1359", "Ava", "York", "J1M 1A0", "Nigeria" ], - [ "1360", "Vivien", "Ware", "N9S 1W6", "Bahamas" ], - [ "1361", "Nyssa", "Lamb", "97964", "Estonia" ], - [ "1362", "Brenna", "Slater", "L4P 5V6", "British Indian Ocean Territory" ], - [ "1363", "Kennan", "Larsen", "M2A 4X0", "Angola" ], - [ "1364", "Linda", "Luna", "P8C 4S8", "Gambia" ], - [ "1365", "Boris", "Poole", "U7J 4G1", "Aruba" ], - [ "1366", "Lyle", "Cote", "F5J 3Y2", "Somalia" ], - [ "1367", "Oleg", "Knapp", "K4C 5T8", "Guinea" ], - [ "1368", "Hanae", "Brown", "51395", "Nepal" ], - [ "1369", "India", "Hyde", "E8P 7E8", "Belize" ], - [ "1370", "Madeson", "Hodge", "23265", "Gambia" ], - [ "1371", "Thaddeus", "Hester", "Y7S 5W1", "Saint Helena" ], - [ "1372", "Aaron", "Kemp", "A1Q 8R3", "Albania" ], - [ "1373", "Aurelia", "Thornton", "P8T 9D4", "Swaziland" ], - [ "1374", "Preston", "Sharpe", "97472", "Niue" ], - [ "1375", "Grace", "Gregory", "51767", "Burkina Faso" ], - [ "1376", "Nicole", "Hicks", "81040", "Burkina Faso" ], - [ "1377", "Hall", "Randall", "X1C 7A8", "Cambodia" ], - [ "1378", "Burke", "Silva", "57219", "Romania" ], - [ "1379", "Talon", "Kline", "28200", "Argentina" ], - [ "1380", "Cassady", "Duncan", "Y2M 8F5", "Kenya" ], - [ "1381", "Brielle", "Reed", "06254", "Greece" ], - [ "1382", "Claire", "Stein", "50289", "Viet Nam" ], - [ "1383", "Fleur", "Cabrera", "30131", "Indonesia" ], - [ "1384", "Ella", "Ellison", "Q7Q 4R2", "Netherlands Antilles" ], - [ "1385", "Zachery", "Wolf", "A9Q 6A8", "Jamaica" ], - [ "1386", "Emerson", "Brewer", "Y4R 9M9", "Bosnia and Herzegovina" ], - [ "1387", "Sarah", "Brooks", "27281", "Pitcairn" ], - [ "1388", "Kylan", "Garrison", "S8E 7L8", "Djibouti" ], - [ "1389", "Guinevere", "Mills", "75612", "Comoros" ], - [ "1390", "Claudia", "Stevenson", "73390", "Colombia" ], - [ "1391", "Valentine", "Burton", "Z9P 7R8", "Nauru" ], - [ "1392", "Raymond", "Mclean", "L8W 2K5", "Brunei Darussalam" ], - [ "1393", "Juliet", "Combs", "88712", "Samoa" ], - [ "1394", "Lawrence", "Williamson", "32528", "Netherlands Antilles" ], - [ "1395", "Inga", "Rivers", "12850", "Kuwait" ], - [ "1396", "Mira", "Zimmerman", "D1I 1W2", "Ireland" ], - [ "1397", "Hilda", "Stafford", "11054", "Cuba" ], - [ "1398", "Tanek", "Kim", "88590", "Cayman Islands" ], - [ "1399", "Bryar", "Mcintyre", "H6F 4S5", "Russian Federation" ], - [ "1400", "Sean", "Reed", "P2V 8J9", "Malta" ], - [ "1401", "Serena", "Henderson", "Z5C 8A0", "Madagascar" ], - [ "1402", "Hedley", "Parks", "L8S 6F4", "Angola" ], - [ "1403", "Alice", "Quinn", "06084", "Senegal" ], - [ "1404", "Linda", "Burgess", "H1E 7C0", "Turkmenistan" ], - [ "1405", "Hilda", "Burns", "Q9Q 4S2", "Kyrgyzstan" ], - [ "1406", "Griffith", "Watts", "D4J 7N2", "United States Minor Outlying Islands" ], - [ "1407", "Camden", "Glenn", "12939", "Russian Federation" ], - [ "1408", "Tallulah", "Rush", "G9V 3N2", "Turkey" ], - [ "1409", "Hasad", "Salinas", "H3F 7P9", "Cameroon" ], - [ "1410", "Violet", "Chavez", "T2H 9C6", "Virgin Islands, U.S." ], - [ "1411", "Declan", "Hurley", "32614", "Iran, Islamic Republic of" ], - [ "1412", "Robin", "Dean", "34266", "Northern Mariana Islands" ], - [ "1413", "Mariko", "Avila", "B8F 8Y5", "Burundi" ], - [ "1414", "Bradley", "Pugh", "11453", "Sri Lanka" ], - [ "1415", "Herman", "Hernandez", "F3C 6S2", "Chile" ], - [ "1416", "Montana", "Wynn", "B3M 8M2", "Aruba" ], - [ "1417", "Erin", "Melton", "17022", "France" ], - [ "1418", "Zachery", "Small", "L5O 7O1", "French Southern Territories" ], - [ "1419", "Melanie", "Rivera", "07922", "Korea" ], - [ "1420", "Blossom", "Chase", "75493", "Mauritius" ], - [ "1421", "Stephanie", "Taylor", "U8K 3I9", "Bahamas" ], - [ "1422", "Carter", "Fulton", "T4F 8D1", "Turks and Caicos Islands" ], - [ "1423", "Celeste", "Medina", "75629", "Lebanon" ], - [ "1424", "Katell", "Guzman", "15409", "United Arab Emirates" ], - [ "1425", "Howard", "Rowland", "29003", "Liberia" ], - [ "1426", "Reece", "Taylor", "W8G 7P7", "Samoa" ], - [ "1427", "Bradley", "Peterson", "52568", "Singapore" ], - [ "1428", "Ulric", "Hancock", "07437", "Bolivia" ], - [ "1429", "Francis", "Rogers", "15904", "Albania" ], - [ "1430", "Tatiana", "Mccray", "19604", "Belize" ], - [ "1431", "Merrill", "Rowe", "68539", "Ethiopia" ], - [ "1432", "Kiara", "Taylor", "F6D 8V7", "Burkina Faso" ], - [ "1433", "Buffy", "Shannon", "61880", "Kiribati" ], - [ "1434", "Amber", "Farmer", "K5F 1J7", "Barbados" ], - [ "1435", "Blake", "Wilkins", "O1L 2G2", "Virgin Islands, U.S." ], - [ "1436", "Aimee", "Fulton", "18626", "Chad" ], - [ "1437", "Kai", "Montgomery", "U6S 4W7", "Costa Rica" ], - [ "1438", "Latifah", "Bell", "74589", "Chad" ], - [ "1439", "Ronan", "Herring", "01710", "Palestinian Territory, Occupied" ], - [ "1440", "Macy", "Skinner", "78054", "Gibraltar" ], - [ "1441", "Ignatius", "Berg", "59756", "Liechtenstein" ], - [ "1442", "Prescott", "Pratt", "V6H 6P4", "Kuwait" ], - [ "1443", "Deborah", "Hebert", "11480", "Liberia" ], - [ "1444", "Quentin", "Jones", "G8W 8U6", "Slovenia" ], - [ "1445", "Duncan", "Parsons", "Z9F 5G8", "Cambodia" ], - [ "1446", "Sheila", "George", "18033", "Trinidad and Tobago" ], - [ "1447", "Alyssa", "Padilla", "V3O 6C3", "Qatar" ], - [ "1448", "Amelia", "Orr", "51943", "Canada" ], - [ "1449", "Bethany", "Thomas", "33451", "Liberia" ], - [ "1450", "Kellie", "Pitts", "G4S 1Q3", "Panama" ], - [ "1451", "Stone", "Stout", "L4C 9N0", "Latvia" ], - [ "1452", "Brynne", "Bailey", "B1M 4O0", "Ukraine" ], - [ "1453", "Aquila", "Hurley", "41312", "United Kingdom" ], - [ "1454", "David", "Bradshaw", "11152", "Denmark" ], - [ "1455", "Ryan", "Gates", "Z7O 1U0", "Austria" ], - [ "1456", "Kyle", "Weber", "39871", "Guyana" ], - [ "1457", "Declan", "Moore", "K3B 6L2", "Gibraltar" ], - [ "1458", "Theodore", "Hickman", "W8E 6K1", "Mauritius" ], - [ "1459", "Rebekah", "Merritt", "44042", "Mauritania" ], - [ "1460", "Meredith", "Powell", "98238", "Bhutan" ], - [ "1461", "Paki", "Simmons", "34122", "Norway" ], - [ "1462", "Carissa", "Ballard", "20095", "Antarctica" ], - [ "1463", "James", "Wilson", "96376", "Venezuela" ], - [ "1464", "Pamela", "Gamble", "U7F 7B6", "Turkmenistan" ], - [ "1465", "Rogan", "Davenport", "E6S 4R7", "French Polynesia" ], - [ "1466", "Daphne", "Pearson", "G2H 9M0", "American Samoa" ], - [ "1467", "Maxwell", "Nash", "87205", "Guadeloupe" ], - [ "1468", "Hayes", "Salazar", "55712", "American Samoa" ], - [ "1469", "Justin", "Conner", "03924", "United Kingdom" ], - [ "1470", "Blythe", "Joyner", "T6H 3M0", "Montserrat" ], - [ "1471", "Herrod", "Spears", "19474", "Philippines" ], - [ "1472", "Yvette", "Joyce", "R7Y 7B8", "Botswana" ], - [ "1473", "Chloe", "Reid", "K4Y 1R2", "Philippines" ], - [ "1474", "MacKensie", "Branch", "J5E 3X8", "Saint Kitts and Nevis" ], - [ "1475", "Nasim", "Buchanan", "M4E 4D2", "Portugal" ], - [ "1476", "Aileen", "Rasmussen", "H2V 3F4", "Dominica" ], - [ "1477", "Nicole", "Mullins", "U6Q 9X5", "New Caledonia" ], - [ "1478", "David", "Luna", "11935", "Svalbard and Jan Mayen" ], - [ "1479", "Germaine", "Massey", "G3N 4C7", "Colombia" ], - [ "1480", "Matthew", "Knowles", "V4D 4Z0", "Turkey" ], - [ "1481", "Timon", "Rowe", "14024", "Morocco" ], - [ "1482", "Gail", "Young", "68293", "Bhutan" ], - [ "1483", "Mariam", "Mejia", "O3P 4Q7", "Singapore" ], - [ "1484", "Carla", "Norris", "D7A 3F1", "Liberia" ], - [ "1485", "Ainsley", "Donaldson", "H4Z 1Q8", "Tanzania, United Republic of" ], - [ "1486", "Avye", "Raymond", "44808", "Namibia" ], - [ "1487", "Amanda", "Sargent", "O7F 3S4", "Afghanistan" ], - [ "1488", "Tiger", "Chambers", "I3K 7H4", "United States" ], - [ "1489", "Dylan", "Ford", "04043", "Solomon Islands" ], - [ "1490", "Kaitlin", "Franklin", "99451", "Namibia" ], - [ "1491", "Hayes", "Craft", "D6H 4Y6", "Christmas Island" ], - [ "1492", "Nolan", "Sullivan", "31246", "United States Minor Outlying Islands" ], - [ "1493", "Jennifer", "Romero", "E7I 1R7", "Latvia" ], - [ "1494", "Deanna", "Wall", "36109", "Nepal" ], - [ "1495", "Dara", "Valenzuela", "18359", "Martinique" ], - [ "1496", "Iris", "Blanchard", "84392", "Turks and Caicos Islands" ], - [ "1497", "Rhea", "Burgess", "T7Y 7C5", "Liberia" ], - [ "1498", "Karina", "Small", "B2F 2X5", "Bermuda" ], - [ "1499", "Victor", "Case", "49492", "Vanuatu" ], - [ "1500", "Rose", "Terry", "B4G 8I0", "Timor-leste" ], - [ "1501", "Wyatt", "Berg", "K3B 5N2", "Vanuatu" ], - [ "1502", "Zephania", "Herrera", "E6R 2A5", "Romania" ], - [ "1503", "Felix", "Johns", "X8U 2P1", "Angola" ], - [ "1504", "Melyssa", "George", "M4J 5X8", "Uzbekistan" ], - [ "1505", "Robert", "Spears", "61322", "Papua New Guinea" ], - [ "1506", "Myra", "Wood", "50638", "Afghanistan" ], - [ "1507", "Sean", "Kerr", "40094", "Guadeloupe" ], - [ "1508", "Wesley", "Mcclain", "H7F 1H3", "Mongolia" ], - [ "1509", "Ishmael", "Hoover", "42503", "Czech Republic" ], - [ "1510", "Ocean", "Parker", "L3Z 8G0", "Guyana" ], - [ "1511", "Berk", "Clay", "B6Q 7V7", "Botswana" ], - [ "1512", "Daquan", "Harrison", "78004", "Niger" ], - [ "1513", "Ramona", "Burris", "66986", "Palau" ], - [ "1514", "Jaden", "Miranda", "80086", "Madagascar" ], - [ "1515", "Solomon", "Kirk", "R7M 3M3", "Slovenia" ], - [ "1516", "Tanek", "Rosales", "X5B 5D0", "Tonga" ], - [ "1517", "Jack", "Cooke", "46356", "French Southern Territories" ], - [ "1518", "Naomi", "Sykes", "76541", "Marshall Islands" ], - [ "1519", "Moana", "Vinson", "K4R 3U7", "Saint Pierre and Miquelon" ], - [ "1520", "Kaye", "Sweet", "S6S 2G0", "Dominican Republic" ], - [ "1521", "Bruno", "Beard", "20686", "Israel" ], - [ "1522", "Helen", "Richards", "66393", "Argentina" ], - [ "1523", "Gisela", "Owens", "S8Q 4L3", "Haiti" ], - [ "1524", "Ivy", "Garrett", "P6G 8S8", "United Arab Emirates" ], - [ "1525", "Malik", "Osborne", "78332", "Tajikistan" ], - [ "1526", "Whoopi", "Franco", "T3T 5Y1", "Serbia and Montenegro" ], - [ "1527", "Basil", "Baker", "61233", "Cuba" ], - [ "1528", "Linda", "King", "31410", "Falkland Islands (Malvinas)" ], - [ "1529", "Allegra", "Hobbs", "F2C 9M8", "Andorra" ], - [ "1530", "Kirsten", "Elliott", "T8C 4X3", "Haiti" ], - [ "1531", "Joseph", "Ortiz", "40165", "Falkland Islands (Malvinas)" ], - [ "1532", "Pearl", "Mccormick", "93914", "Falkland Islands (Malvinas)" ], - [ "1533", "Fritz", "Austin", "A3S 7C8", "Canada" ], - [ "1534", "Lunea", "Hickman", "25676", "Cameroon" ], - [ "1535", "Inga", "Cortez", "14707", "Comoros" ], - [ "1536", "Claudia", "Long", "74877", "Tokelau" ], - [ "1537", "Judah", "Williamson", "S9N 6F0", "Paraguay" ], - [ "1538", "Eve", "Beasley", "K8Z 5H7", "Honduras" ], - [ "1539", "Tad", "Lang", "29577", "Equatorial Guinea" ], - [ "1540", "Jack", "Lawson", "46631", "Costa Rica" ], - [ "1541", "Vaughan", "Barron", "N9L 9T4", "Chile" ], - [ "1542", "Solomon", "Bowman", "05734", "Cocos (Keeling) Islands" ], - [ "1543", "Nash", "Giles", "64600", "Denmark" ], - [ "1544", "Xander", "Eaton", "84933", "Bosnia and Herzegovina" ], - [ "1545", "Hanna", "Hull", "61062", "Namibia" ], - [ "1546", "Lee", "Gaines", "V7H 6H7", "Suriname" ], - [ "1547", "Brian", "Sutton", "60055", "Timor-leste" ], - [ "1548", "Azalia", "Henson", "D9J 8E4", "Antarctica" ], - [ "1549", "Russell", "Avila", "01774", "China" ], - [ "1550", "Marsden", "Leblanc", "30201", "New Caledonia" ], - [ "1551", "Tad", "Nichols", "K5V 6N1", "Monaco" ], - [ "1552", "Eliana", "Savage", "06807", "Central African Republic" ], - [ "1553", "Madeline", "Conway", "83513", "Latvia" ], - [ "1554", "Kai", "Caldwell", "S1K 2Q2", "Indonesia" ], - [ "1555", "Wynne", "Goodman", "U9Y 8P7", "Gibraltar" ], - [ "1556", "Nora", "Dudley", "52688", "Netherlands Antilles" ], - [ "1557", "Anastasia", "Gates", "T7T 8C8", "Morocco" ], - [ "1558", "Lester", "Good", "76376", "Heard Island and Mcdonald Islands" ], - [ "1559", "Craig", "Skinner", "S7B 3Z6", "Madagascar" ], - [ "1560", "Kibo", "Craft", "M5C 2I9", "Hong Kong" ], - [ "1561", "Carlos", "Buck", "89343", "Northern Mariana Islands" ], - [ "1562", "Ivor", "Mooney", "M9D 2Y3", "Korea" ], - [ "1563", "Armand", "Shields", "E8O 7X6", "Uzbekistan" ], - [ "1564", "Grace", "Weeks", "G5B 3W5", "Nicaragua" ], - [ "1565", "Reagan", "Mann", "J2E 5I1", "San Marino" ], - [ "1566", "Quin", "Nolan", "Q9E 2Q0", "Turkey" ], - [ "1567", "Kareem", "Jefferson", "91393", "Zambia" ], - [ "1568", "Erica", "Mccoy", "C3P 3L0", "Viet Nam" ], - [ "1569", "Sybill", "Larsen", "J3U 3L9", "Sierra Leone" ], - [ "1570", "Angela", "Weber", "46559", "Croatia" ], - [ "1571", "Mannix", "Noel", "94029", "Belgium" ], - [ "1572", "Martina", "Travis", "20063", "Solomon Islands" ], - [ "1573", "Dominic", "Whitehead", "83547", "Gibraltar" ], - [ "1574", "Vladimir", "Hunter", "L3I 4G7", "Reunion" ], - [ "1575", "Farrah", "Alexander", "18538", "Croatia" ], - [ "1576", "Hop", "Burns", "X1C 7J6", "Saint Lucia" ], - [ "1577", "Zelda", "Trevino", "L8P 7E9", "Guinea" ], - [ "1578", "Nehru", "Decker", "Q1P 4Q9", "Western Sahara" ], - [ "1579", "Shay", "Goff", "68576", "Sweden" ], - [ "1580", "Dominic", "Martin", "C1M 9P2", "Denmark" ], - [ "1581", "Heather", "Doyle", "Y7R 9H1", "Iran, Islamic Republic of" ], - [ "1582", "Honorato", "Rojas", "29414", "India" ], - [ "1583", "Florence", "England", "64669", "China" ], - [ "1584", "Zane", "Reyes", "84771", "Heard Island and Mcdonald Islands" ], - [ "1585", "Scarlett", "Poole", "36928", "Algeria" ], - [ "1586", "Dieter", "Brennan", "Y8V 5L2", "Colombia" ], - [ "1587", "Jamal", "Whitney", "33428", "Turkey" ], - [ "1588", "Evan", "Guy", "72119", "Slovakia" ], - [ "1589", "Candace", "Bauer", "C8L 1P2", "Macedonia" ], - [ "1590", "Naomi", "Pennington", "17350", "Tonga" ], - [ "1591", "Celeste", "Banks", "R8R 4C8", "Anguilla" ], - [ "1592", "Basil", "Elliott", "80065", "Singapore" ], - [ "1593", "Darryl", "Wise", "33140", "Brunei Darussalam" ], - [ "1594", "Marny", "Walls", "S1K 4V1", "Western Sahara" ], - [ "1595", "Anastasia", "Meyer", "Z1F 8C2", "El Salvador" ], - [ "1596", "Brynne", "Rivera", "48070", "Mexico" ], - [ "1597", "Macey", "Johnston", "X9E 9J5", "Guadeloupe" ], - [ "1598", "Bethany", "Marks", "46648", "Bhutan" ], - [ "1599", "Kiayada", "Glass", "13661", "Christmas Island" ], - [ "1600", "Veda", "Bowers", "D7S 1S9", "Korea" ], - [ "1601", "Dante", "Kirk", "58404", "Guinea" ], - [ "1602", "Judah", "Sloan", "04528", "Andorra" ], - [ "1603", "Serena", "Giles", "12139", "Papua New Guinea" ], - [ "1604", "Chase", "Hull", "27203", "Guinea-bissau" ], - [ "1605", "Wallace", "Poole", "58919", "Christmas Island" ], - [ "1606", "Deacon", "Lynn", "Z1H 9G4", "Kenya" ], - [ "1607", "Igor", "Duncan", "X2V 2X1", "Christmas Island" ], - [ "1608", "Walker", "Hopkins", "67256", "Bosnia and Herzegovina" ], - [ "1609", "Serena", "Burnett", "Q4C 7Q0", "Canada" ], - [ "1610", "Hedwig", "Burgess", "O2J 7A5", "Rwanda" ], - [ "1611", "Amal", "Richmond", "34506", "Australia" ], - [ "1612", "Rhona", "Gomez", "W2C 3I7", "Oman" ], - [ "1613", "Kai", "Acosta", "N2O 7M2", "Uganda" ], - [ "1614", "Henry", "Roman", "78113", "Guadeloupe" ], - [ "1615", "Chester", "Good", "88809", "Norway" ], - [ "1616", "Cleo", "Tanner", "73924", "Uganda" ], - [ "1617", "Emi", "Lloyd", "59746", "South Africa" ], - [ "1618", "Christopher", "Lopez", "76264", "Libyan Arab Jamahiriya" ], - [ "1619", "Yvonne", "Mathews", "68655", "Saint Lucia" ], - [ "1620", "Kimberly", "Mullen", "D6J 9G3", "Virgin Islands, British" ], - [ "1621", "Hanna", "Slater", "F8F 9K5", "Montserrat" ], - [ "1622", "Laura", "Dennis", "J6U 2G3", "Viet Nam" ], - [ "1623", "Rogan", "Richards", "R1D 1B3", "Argentina" ], - [ "1624", "Mira", "Rodriquez", "C3D 3E5", "Guinea" ], - [ "1625", "Ezra", "Myers", "Y7Z 7X2", "Kuwait" ], - [ "1626", "Jocelyn", "Martin", "E2F 3F2", "Algeria" ], - [ "1627", "Denton", "Lee", "80903", "Congo" ], - [ "1628", "Grace", "Leach", "86865", "Spain" ], - [ "1629", "Clark", "Morrow", "12834", "Northern Mariana Islands" ], - [ "1630", "Armando", "Calhoun", "I3I 1D4", "Spain" ], - [ "1631", "George", "Decker", "R1B 6Q9", "Mali" ], - [ "1632", "Jerome", "Salazar", "03831", "Faroe Islands" ], - [ "1633", "Logan", "Santiago", "46269", "Hungary" ], - [ "1634", "Gavin", "Tate", "Y3L 6G5", "Italy" ], - [ "1635", "Chloe", "Jennings", "D9B 2H9", "Cambodia" ], - [ "1636", "Rashad", "Knox", "T1V 4G5", "Germany" ], - [ "1637", "Jin", "Roberts", "82928", "Azerbaijan" ], - [ "1638", "Amity", "Guerrero", "F4G 2L4", "Viet Nam" ], - [ "1639", "Carter", "Roberson", "53651", "Niue" ], - [ "1640", "Slade", "Carson", "H9E 1G1", "Guyana" ], - [ "1641", "Buckminster", "Christensen", "F5J 6T5", "Algeria" ], - [ "1642", "Fallon", "Peters", "D9Y 5Q4", "Ethiopia" ], - [ "1643", "Amy", "Barry", "D6F 3R4", "New Caledonia" ], - [ "1644", "Calvin", "Buck", "18354", "Macedonia" ], - [ "1645", "Kaye", "Haynes", "D9K 1X8", "Italy" ], - [ "1646", "Shea", "Hammond", "R7P 3X8", "Guam" ], - [ "1647", "Kiara", "Franks", "01185", "Mozambique" ], - [ "1648", "Armando", "Oneil", "88972", "Bahrain" ], - [ "1649", "Lesley", "Allen", "05171", "Belgium" ], - [ "1650", "Ignatius", "Barrett", "94084", "Georgia" ], - [ "1651", "Graham", "Maldonado", "76354", "Dominican Republic" ], - [ "1652", "Briar", "Roman", "P9M 3A9", "Cayman Islands" ], - [ "1653", "Germane", "Colon", "U3X 7S9", "Brazil" ], - [ "1654", "Alvin", "Mcpherson", "58411", "Guinea" ], - [ "1655", "Belle", "Sandoval", "87172", "Cyprus" ], - [ "1656", "Eric", "Caldwell", "63246", "Guinea" ], - [ "1657", "Nadine", "Dale", "T6E 4B0", "Denmark" ], - [ "1658", "Dora", "Jimenez", "85463", "Nauru" ], - [ "1659", "Mohammad", "Strickland", "H8B 9G2", "Japan" ], - [ "1660", "Reagan", "Preston", "G5E 8S5", "Honduras" ], - [ "1661", "Tamekah", "Daniel", "Z3X 6Q6", "Belarus" ], - [ "1662", "Halee", "Mills", "23332", "Mayotte" ], - [ "1663", "Courtney", "England", "09751", "Saint Kitts and Nevis" ], - [ "1664", "Dai", "Arnold", "A2N 9J4", "Argentina" ], - [ "1665", "Priscilla", "Reyes", "G2B 5M4", "Azerbaijan" ], - [ "1666", "Brenda", "Stanley", "I6O 3I1", "Hungary" ], - [ "1667", "Kasper", "Washington", "H4K 8K7", "Serbia and Montenegro" ], - [ "1668", "Suki", "Hendricks", "L1K 5O9", "Norway" ], - [ "1669", "Rebekah", "Mccormick", "89543", "Slovenia" ], - [ "1670", "Oprah", "Rodriquez", "90034", "Costa Rica" ], - [ "1671", "Ivory", "Matthews", "T9J 2A7", "Panama" ], - [ "1672", "Ferris", "Garner", "93583", "Niue" ], - [ "1673", "Melvin", "White", "X5U 9N8", "Nigeria" ], - [ "1674", "Henry", "Swanson", "E7V 2C9", "Northern Mariana Islands" ], - [ "1675", "Hadassah", "Eaton", "52798", "Albania" ], - [ "1676", "Lisandra", "Sykes", "90838", "Namibia" ], - [ "1677", "Honorato", "Bradshaw", "W3D 1Z9", "United States" ], - [ "1678", "Aurelia", "Paul", "Z6E 6W9", "Malaysia" ], - [ "1679", "Arthur", "Mann", "74673", "Bhutan" ], - [ "1680", "Melissa", "Hernandez", "11742", "Dominican Republic" ], - [ "1681", "Bert", "Mosley", "N2K 5U5", "Kuwait" ], - [ "1682", "Sigourney", "Sharpe", "30204", "South Africa" ], - [ "1683", "Ifeoma", "Woods", "39850", "Haiti" ], - [ "1684", "Tyler", "Medina", "K6L 9V8", "Indonesia" ], - [ "1685", "Karleigh", "Griffin", "G8Z 6W2", "Canada" ], - [ "1686", "Brianna", "Collins", "11919", "New Caledonia" ], - [ "1687", "Allistair", "Hampton", "O1X 2N7", "Cocos (Keeling) Islands" ], - [ "1688", "Carla", "Manning", "76866", "Svalbard and Jan Mayen" ], - [ "1689", "Jakeem", "Brewer", "Y1T 1D7", "Comoros" ], - [ "1690", "Price", "Guerrero", "S7Z 8O1", "Christmas Island" ], - [ "1691", "Harlan", "Sandoval", "58527", "Czech Republic" ], - [ "1692", "Marcia", "Robinson", "64662", "Uganda" ], - [ "1693", "Sylvester", "Hewitt", "81468", "Honduras" ], - [ "1694", "Dawn", "Wood", "77743", "Malawi" ], - [ "1695", "Farrah", "Nielsen", "E4N 9A9", "Christmas Island" ], - [ "1696", "Tanisha", "Benjamin", "L2J 3G7", "Cape Verde" ], - [ "1697", "Cherokee", "Atkins", "L7D 2L5", "Moldova" ], - [ "1698", "Madaline", "Elliott", "H7K 8R4", "Barbados" ], - [ "1699", "Odysseus", "Roy", "65008", "Slovakia" ], - [ "1700", "Eaton", "Stein", "Z2V 7H0", "Moldova" ], - [ "1701", "Rachel", "Hurley", "L6L 2B2", "Antigua and Barbuda" ], - [ "1702", "Stacey", "Hardin", "O9U 1B7", "Montserrat" ], - [ "1703", "Grady", "Montgomery", "75852", "Guinea-bissau" ], - [ "1704", "Serena", "Douglas", "F5M 8Z6", "Mauritius" ], - [ "1705", "Ralph", "Duke", "H7X 3M9", "Tunisia" ], - [ "1706", "Charles", "Moody", "86445", "Pitcairn" ], - [ "1707", "Mariam", "Lara", "07952", "United Kingdom" ], - [ "1708", "Whitney", "Garza", "74001", "Norfolk Island" ], - [ "1709", "Beverly", "Thornton", "69847", "Canada" ], - [ "1710", "Helen", "Gentry", "Z8S 7U4", "Reunion" ], - [ "1711", "Janna", "Gould", "W6C 6E1", "Burundi" ], - [ "1712", "Jana", "Hooper", "A1R 9Y0", "Yemen" ], - [ "1713", "Zachary", "Nicholson", "49616", "Gabon" ], - [ "1714", "Julian", "Davis", "37608", "Anguilla" ], - [ "1715", "Gay", "Knox", "51952", "Croatia" ], - [ "1716", "Iola", "Moses", "16601", "French Polynesia" ], - [ "1717", "Allegra", "Holder", "C9R 8J3", "Dominican Republic" ], - [ "1718", "Cecilia", "Shannon", "62624", "Reunion" ], - [ "1719", "Cora", "Peterson", "I9V 5P5", "Chad" ], - [ "1720", "Stewart", "Mathews", "A5H 1E1", "Mexico" ], - [ "1721", "Kathleen", "Lynn", "82408", "Honduras" ], - [ "1722", "William", "Schneider", "25823", "Tajikistan" ], - [ "1723", "Alice", "Mcconnell", "50155", "Russian Federation" ], - [ "1724", "Timon", "Dillon", "93171", "Croatia" ], - [ "1725", "Tanek", "Ellison", "Y7Q 5B1", "Malawi" ], - [ "1726", "Tamekah", "Cummings", "03764", "Afghanistan" ], - [ "1727", "Charlotte", "Chaney", "U7Y 7B0", "Kyrgyzstan" ], - [ "1728", "Jason", "Conway", "37713", "Martinique" ], - [ "1729", "Graiden", "Combs", "40454", "Turkmenistan" ], - [ "1730", "Virginia", "Ortiz", "K9N 2Q4", "Malta" ], - [ "1731", "Thomas", "Cannon", "W1H 3T9", "Cuba" ], - [ "1732", "Galena", "Dominguez", "68072", "India" ], - [ "1733", "Vaughan", "Petty", "15200", "Lesotho" ], - [ "1734", "Buffy", "Saunders", "K1W 3B1", "Burkina Faso" ], - [ "1735", "Chava", "Hill", "93461", "Iran, Islamic Republic of" ], - [ "1736", "Sage", "Hampton", "R8Y 8J1", "Malta" ], - [ "1737", "Nathaniel", "Whitney", "89097", "Ukraine" ], - [ "1738", "Hector", "Hayden", "70774", "Netherlands" ], - [ "1739", "Mercedes", "Freeman", "80848", "Croatia" ], - [ "1740", "Vance", "Spencer", "25484", "Guyana" ], - [ "1741", "Josephine", "Stevens", "E4D 9D1", "Netherlands Antilles" ], - [ "1742", "Barbara", "Mcclure", "22602", "Cambodia" ], - [ "1743", "Sydney", "Holder", "X4G 1Z7", "British Indian Ocean Territory" ], - [ "1744", "Velma", "Evans", "83914", "New Zealand" ], - [ "1745", "Francis", "Lane", "12545", "Serbia and Montenegro" ], - [ "1746", "Garrison", "Brock", "19993", "Eritrea" ], - [ "1747", "Quentin", "Santiago", "07085", "Norfolk Island" ], - [ "1748", "Ivory", "Wilkerson", "79440", "Libyan Arab Jamahiriya" ], - [ "1749", "Karyn", "Buckner", "D1Y 7D8", "Cocos (Keeling) Islands" ], - [ "1750", "Mari", "Bright", "24721", "Pakistan" ], - [ "1751", "Dexter", "Garrison", "X3X 7G3", "Western Sahara" ], - [ "1752", "Venus", "Acevedo", "V2F 8C0", "Poland" ], - [ "1753", "Nayda", "Camacho", "F6H 6J5", "Northern Mariana Islands" ], - [ "1754", "Avye", "Hartman", "G6V 2H0", "Hong Kong" ], - [ "1755", "Kerry", "Baird", "M3Q 7B7", "Russian Federation" ], - [ "1756", "Uma", "Herman", "C9A 4P3", "Libyan Arab Jamahiriya" ], - [ "1757", "Amaya", "Roman", "97179", "Iceland" ], - [ "1758", "Bruce", "Joyce", "18344", "Denmark" ], - [ "1759", "Jarrod", "Alvarez", "59269", "Liberia" ], - [ "1760", "Olivia", "Reilly", "99058", "Malaysia" ], - [ "1761", "Benedict", "Hensley", "23105", "Uganda" ], - [ "1762", "Lavinia", "Hunter", "44729", "Maldives" ], - [ "1763", "Bradley", "Gomez", "65125", "Belize" ], - [ "1764", "Keely", "Burris", "18390", "Brunei Darussalam" ], - [ "1765", "Autumn", "England", "E5D 7A5", "Kyrgyzstan" ], - [ "1766", "Jane", "Blair", "S1W 4O0", "Bangladesh" ], - [ "1767", "Chancellor", "Barrett", "E9F 1I1", "Fiji" ], - [ "1768", "Whitney", "Morin", "G5T 4E7", "Aruba" ], - [ "1769", "Madeline", "Sparks", "W7L 7E0", "Belize" ], - [ "1770", "Dale", "Estes", "82712", "Guam" ], - [ "1771", "Hakeem", "Buck", "O6K 1I8", "Singapore" ], - [ "1772", "Alexandra", "Burns", "12697", "Portugal" ], - [ "1773", "Winifred", "Gill", "Z8B 8B8", "Uruguay" ], - [ "1774", "Gail", "Gomez", "S1V 3N8", "American Samoa" ], - [ "1775", "Moana", "Brady", "18835", "Wallis and Futuna" ], - [ "1776", "Martha", "Oliver", "81962", "Bolivia" ], - [ "1777", "Nayda", "Wooten", "00071", "Palau" ], - [ "1778", "Bryar", "Collier", "50631", "Mexico" ], - [ "1779", "Penelope", "Bradshaw", "A6A 9M2", "Lebanon" ], - [ "1780", "Wyatt", "Lara", "75486", "Slovenia" ], - [ "1781", "Wang", "Odonnell", "N5X 1N5", "Bahamas" ], - [ "1782", "Chiquita", "Harrell", "21691", "Guadeloupe" ], - [ "1783", "Byron", "Blankenship", "M8A 3L4", "Syrian Arab Republic" ], - [ "1784", "Holmes", "Stokes", "81039", "Mauritania" ], - [ "1785", "Naomi", "Phillips", "56287", "Switzerland" ], - [ "1786", "Quyn", "Johnson", "D2T 6B7", "Czech Republic" ], - [ "1787", "Gillian", "Sanders", "50542", "Colombia" ], - [ "1788", "Hope", "Benjamin", "67423", "Bolivia" ], - [ "1789", "Bryar", "Dean", "U9V 9E5", "Guatemala" ], - [ "1790", "Karyn", "Swanson", "S6H 3R8", "Israel" ], - [ "1791", "Amena", "David", "02286", "French Polynesia" ], - [ "1792", "Ira", "Joyner", "37335", "Cayman Islands" ], - [ "1793", "Tanek", "Oneil", "75041", "Slovenia" ], - [ "1794", "Dolan", "Miles", "K7Q 9U8", "Maldives" ], - [ "1795", "Wang", "Keith", "88116", "Congo" ], - [ "1796", "Wylie", "Bryant", "93369", "Andorra" ], - [ "1797", "Heather", "Bryant", "78015", "French Polynesia" ], - [ "1798", "Regina", "Wagner", "29087", "Virgin Islands, British" ], - [ "1799", "Nathan", "Bush", "J5S 9L0", "Viet Nam" ], - [ "1800", "Charity", "Dawson", "29508", "Greece" ], - [ "1801", "Ulric", "Guzman", "I6R 6P6", "Micronesia" ], - [ "1802", "Keefe", "Scott", "J1R 8T6", "Uzbekistan" ], - [ "1803", "Florence", "Price", "U7P 8F6", "Taiwan, Province of China" ], - [ "1804", "Griffith", "England", "92557", "China" ], - [ "1805", "Kay", "Nielsen", "85991", "Suriname" ], - [ "1806", "Tamekah", "Blackburn", "47324", "Panama" ], - [ "1807", "Indira", "Crosby", "64463", "Trinidad and Tobago" ], - [ "1808", "Pamela", "Vasquez", "K2Q 9A1", "Ghana" ], - [ "1809", "Patricia", "Haley", "51509", "Jordan" ], - [ "1810", "Nevada", "Prince", "41315", "Tokelau" ], - [ "1811", "Martin", "Wilkerson", "Y8X 4Y5", "Palestinian Territory, Occupied" ], - [ "1812", "Deirdre", "Castaneda", "X1S 5E2", "Bahrain" ], - [ "1813", "Cara", "Flynn", "68372", "Azerbaijan" ], - [ "1814", "Sylvia", "Alexander", "E5F 9M5", "Svalbard and Jan Mayen" ], - [ "1815", "Macon", "Suarez", "69866", "Tunisia" ], - [ "1816", "Hammett", "Haney", "09768", "Bangladesh" ], - [ "1817", "Geoffrey", "Simmons", "61986", "Burundi" ], - [ "1818", "Danielle", "Kelly", "71568", "Mali" ], - [ "1819", "Wing", "Brown", "U4D 6L1", "Uzbekistan" ], - [ "1820", "Len", "Barber", "40311", "Suriname" ], - [ "1821", "Richard", "Wilson", "W9E 6D7", "Finland" ], - [ "1822", "Keaton", "Hayes", "55696", "Slovakia" ], - [ "1823", "Dora", "Chaney", "57297", "United States Minor Outlying Islands" ], - [ "1824", "Alexandra", "Pruitt", "17207", "Turkmenistan" ], - [ "1825", "Deanna", "Gomez", "C9M 9K0", "Paraguay" ], - [ "1826", "Laura", "Downs", "74422", "Antigua and Barbuda" ], - [ "1827", "Jolene", "Lucas", "K9E 6U4", "Tokelau" ], - [ "1828", "Lucy", "Marquez", "L1N 4O4", "Argentina" ], - [ "1829", "Abbot", "Bishop", "G8W 7I1", "Guinea-bissau" ], - [ "1830", "Aaron", "Bowman", "K8A 5K7", "Greece" ], - [ "1831", "Candace", "Lee", "58901", "Turks and Caicos Islands" ], - [ "1832", "Larissa", "Allen", "O1I 4X0", "Belgium" ], - [ "1833", "Linda", "Malone", "31211", "United Arab Emirates" ], - [ "1834", "Grace", "Daugherty", "62610", "Cyprus" ], - [ "1835", "Kyra", "Berry", "T2F 3E5", "Netherlands Antilles" ], - [ "1836", "Hadassah", "Willis", "C7H 5V4", "El Salvador" ], - [ "1837", "Kyle", "Fitzgerald", "X1V 2R9", "Croatia" ], - [ "1838", "Graiden", "Atkinson", "L9Q 6H8", "Thailand" ], - [ "1839", "Raymond", "Fletcher", "59574", "Argentina" ], - [ "1840", "Keaton", "Barnett", "O2G 6B4", "Papua New Guinea" ], - [ "1841", "Farrah", "Kramer", "21928", "Netherlands Antilles" ], - [ "1842", "Christian", "Sellers", "55504", "Timor-leste" ], - [ "1843", "Keith", "Cohen", "D9T 7D0", "Italy" ], - [ "1844", "Karleigh", "Bruce", "F2A 5H9", "Montserrat" ], - [ "1845", "Julie", "Avery", "T4T 3Y7", "Nepal" ], - [ "1846", "Hollee", "Deleon", "47524", "Oman" ], - [ "1847", "Charity", "Booker", "61071", "Cocos (Keeling) Islands" ], - [ "1848", "Flynn", "Bond", "E8L 9D2", "Afghanistan" ], - [ "1849", "Sybill", "Roth", "16453", "Saudi Arabia" ], - [ "1850", "Alyssa", "Juarez", "04466", "Singapore" ], - [ "1851", "Jennifer", "Odonnell", "59277", "Tuvalu" ], - [ "1852", "Carissa", "Byrd", "80861", "Palau" ], - [ "1853", "Coby", "Barrett", "04665", "Congo" ], - [ "1854", "Bertha", "Paul", "46442", "Andorra" ], - [ "1855", "Hayden", "Dennis", "K7E 3O1", "France" ], - [ "1856", "Kadeem", "Berry", "39544", "Vanuatu" ], - [ "1857", "Clayton", "Burns", "C2A 6W5", "Andorra" ], - [ "1858", "Breanna", "Hardy", "12284", "Norway" ], - [ "1859", "Yael", "Hester", "69399", "Hong Kong" ], - [ "1860", "Hunter", "Harding", "M4O 6N5", "Bosnia and Herzegovina" ], - [ "1861", "Breanna", "Sutton", "N2C 6K3", "Singapore" ], - [ "1862", "Bo", "Huffman", "54558", "Taiwan, Province of China" ], - [ "1863", "Zena", "Potts", "80326", "Czech Republic" ], - [ "1864", "Lucian", "Sykes", "D4M 6M5", "Trinidad and Tobago" ], - [ "1865", "Gabriel", "Shepherd", "77631", "Bahrain" ], - [ "1866", "Vivian", "Gould", "29510", "Norway" ], - [ "1867", "Ina", "Sherman", "08122", "Portugal" ], - [ "1868", "Constance", "Parsons", "D6E 9J8", "Armenia" ], - [ "1869", "Tallulah", "Woodard", "51380", "Bahamas" ], - [ "1870", "Amos", "Morris", "37846", "Switzerland" ], - [ "1871", "Charles", "Kinney", "45961", "Marshall Islands" ], - [ "1872", "Colby", "Camacho", "02978", "Niger" ], - [ "1873", "Ora", "Hays", "B6F 9Z9", "Martinique" ], - [ "1874", "Ariel", "Cannon", "04559", "Burundi" ], - [ "1875", "Beatrice", "Hull", "66569", "Saint Pierre and Miquelon" ], - [ "1876", "Stacey", "Morrow", "53760", "Zimbabwe" ], - [ "1877", "Naida", "Thomas", "43434", "Virgin Islands, U.S." ], - [ "1878", "Holly", "Holcomb", "31997", "Kazakhstan" ], - [ "1879", "Lee", "Davenport", "99355", "Central African Republic" ], - [ "1880", "Gary", "Higgins", "18703", "Norway" ], - [ "1881", "Kay", "Wolf", "25509", "Switzerland" ], - [ "1882", "Destiny", "Patel", "Q3X 2F8", "Ghana" ], - [ "1883", "Clayton", "Middleton", "Y5C 1I8", "Antigua and Barbuda" ], - [ "1884", "May", "Rivers", "26782", "Uzbekistan" ], - [ "1885", "Hadassah", "Caldwell", "64493", "Chile" ], - [ "1886", "Penelope", "Gentry", "V5N 7A6", "Kyrgyzstan" ], - [ "1887", "James", "Boyle", "95421", "Indonesia" ], - [ "1888", "Yuli", "Cardenas", "W4U 5U1", "Solomon Islands" ], - [ "1889", "George", "Simpson", "30385", "Brazil" ], - [ "1890", "Thaddeus", "Ferrell", "E6Z 2D4", "Norfolk Island" ], - [ "1891", "Piper", "Morrow", "S6I 1L8", "Estonia" ], - [ "1892", "Xaviera", "Heath", "L8I 5G1", "Afghanistan" ], - [ "1893", "Odette", "Patton", "L2S 4I8", "Bosnia and Herzegovina" ], - [ "1894", "Stewart", "Phillips", "E8E 5W6", "El Salvador" ], - [ "1895", "Kellie", "Cooper", "77401", "Cape Verde" ], - [ "1896", "Kathleen", "Salinas", "F3O 4Z9", "Sierra Leone" ], - [ "1897", "Fallon", "Bennett", "X3P 7L1", "Macedonia" ], - [ "1898", "Jesse", "Guerrero", "I2B 1Q0", "Finland" ], - [ "1899", "Zenaida", "Mcguire", "M5R 1X6", "Kenya" ], - [ "1900", "Carolyn", "Richards", "03060", "Paraguay" ], - [ "1901", "Ulla", "Bruce", "20940", "Cambodia" ], - [ "1902", "Adrian", "Shaffer", "M5O 9Y2", "Thailand" ], - [ "1903", "Callum", "Russo", "L3U 5S8", "Holy See (Vatican City State)" ], - [ "1904", "Echo", "Mathews", "49158", "Spain" ], - [ "1905", "Driscoll", "Buckner", "70115", "Solomon Islands" ], - [ "1906", "Nayda", "Phillips", "Y7D 4A9", "Singapore" ], - [ "1907", "Piper", "Livingston", "51701", "Anguilla" ], - [ "1908", "Zoe", "Hoover", "C8D 8W2", "Iraq" ], - [ "1909", "Veronica", "Montoya", "G6B 9S4", "Egypt" ], - [ "1910", "Kato", "Richmond", "41268", "Saint Helena" ], - [ "1911", "Kevyn", "Lancaster", "71863", "Montserrat" ], - [ "1912", "Rowan", "Carr", "90825", "Ethiopia" ], - [ "1913", "Alec", "Wells", "C9P 8I7", "Netherlands" ], - [ "1914", "Graham", "Shields", "S4B 5O9", "Norfolk Island" ], - [ "1915", "Pearl", "Austin", "43642", "Bermuda" ], - [ "1916", "Dana", "Pugh", "H4C 2A9", "Tuvalu" ], - [ "1917", "Lucy", "Ellis", "31272", "Cameroon" ], - [ "1918", "Logan", "Wright", "18651", "Honduras" ], - [ "1919", "Chantale", "Velasquez", "A5D 3X2", "Burundi" ], - [ "1920", "Linda", "Ingram", "R1P 1G8", "Myanmar" ], - [ "1921", "Ginger", "Howell", "Q5D 4E6", "Pakistan" ], - [ "1922", "Unity", "Lester", "P7M 7A4", "Gibraltar" ], - [ "1923", "Brett", "Rutledge", "Q1E 2B4", "Thailand" ], - [ "1924", "Stewart", "Morrow", "84299", "Mali" ], - [ "1925", "Declan", "Aguilar", "35400", "Kenya" ], - [ "1926", "Shad", "Simpson", "N8E 2U3", "Saint Pierre and Miquelon" ], - [ "1927", "Alma", "Benton", "Q6C 5D2", "Pakistan" ], - [ "1928", "Herman", "Bailey", "P5K 2X4", "Ireland" ], - [ "1929", "Keegan", "Mendez", "19421", "Lesotho" ], - [ "1930", "Erasmus", "Foreman", "J9T 1A2", "Panama" ], - [ "1931", "Tarik", "Meyers", "Z8V 5F9", "Cape Verde" ], - [ "1932", "Donovan", "Knox", "B8N 1G7", "Iceland" ], - [ "1933", "Chloe", "Mccray", "67537", "United Arab Emirates" ], - [ "1934", "Marvin", "Edwards", "21809", "Ukraine" ], - [ "1935", "Freya", "Watkins", "80099", "Central African Republic" ], - [ "1936", "Jerry", "Morgan", "C7U 7H5", "Guinea" ], - [ "1937", "Yardley", "Marsh", "23654", "India" ], - [ "1938", "Ava", "Mueller", "83374", "Greece" ], - [ "1939", "Silas", "Joseph", "P5M 7F2", "Sweden" ], - [ "1940", "Winifred", "Solis", "12335", "Viet Nam" ], - [ "1941", "Virginia", "Cantu", "K4C 3S5", "Yemen" ], - [ "1942", "Sade", "Cole", "40295", "Spain" ], - [ "1943", "Ethan", "Hodges", "R7W 8X2", "Congo" ], - [ "1944", "Barbara", "Day", "K6L 7S6", "Nigeria" ], - [ "1945", "Conan", "Simon", "22124", "Guyana" ], - [ "1946", "Lars", "Puckett", "R6Y 4N7", "Trinidad and Tobago" ], - [ "1947", "Quin", "Ewing", "99053", "American Samoa" ], - [ "1948", "Ali", "Haynes", "N6Z 7X0", "China" ], - [ "1949", "Sara", "Wagner", "74544", "Chad" ], - [ "1950", "Griffith", "Fuentes", "R1W 6Z9", "Slovenia" ], - [ "1951", "Sharon", "Crane", "I2Z 9D6", "Philippines" ], - [ "1952", "Marsden", "Acosta", "K6C 8C5", "Jordan" ], - [ "1953", "Whoopi", "Villarreal", "E2O 1T5", "Svalbard and Jan Mayen" ], - [ "1954", "Bruno", "Ball", "31931", "Barbados" ], - [ "1955", "Ulric", "Young", "T4R 3M5", "Solomon Islands" ], - [ "1956", "Noah", "Gonzalez", "L3O 6V5", "Mayotte" ], - [ "1957", "Cheryl", "Gilliam", "F4Q 4H9", "Albania" ], - [ "1958", "Bo", "Rowe", "67020", "Jamaica" ], - [ "1959", "Kelly", "Alexander", "P8Y 9K5", "Somalia" ], - [ "1960", "Hop", "Navarro", "O1G 9R6", "Cayman Islands" ], - [ "1961", "Zachery", "Howard", "67147", "Fiji" ], - [ "1962", "Elvis", "Daugherty", "X8V 7S7", "Jordan" ], - [ "1963", "Mallory", "Hensley", "A5S 1U6", "Swaziland" ], - [ "1964", "Fulton", "Williams", "P4C 4O5", "Viet Nam" ], - [ "1965", "Madison", "Pittman", "F8G 1P9", "Chile" ], - [ "1966", "Kermit", "Bradford", "W2T 6I5", "Uganda" ], - [ "1967", "Gabriel", "Ballard", "N5M 6W0", "Andorra" ], - [ "1968", "Jasmine", "Barber", "M2Z 7G5", "French Guiana" ], - [ "1969", "Thane", "Koch", "21097", "Armenia" ], - [ "1970", "Montana", "Oneal", "L2A 9Q6", "South Africa" ], - [ "1971", "Brett", "Coleman", "79399", "Luxembourg" ], - [ "1972", "Ivy", "Jimenez", "28549", "Senegal" ], - [ "1973", "Shad", "Melton", "Z8N 4Z5", "Cook Islands" ], - [ "1974", "Suki", "Vance", "H1A 1Z3", "Ireland" ], - [ "1975", "Jin", "Hodges", "L2I 3T8", "France" ], - [ "1976", "Diana", "Booth", "M3V 1S8", "Iran, Islamic Republic of" ], - [ "1977", "Martha", "Nunez", "27837", "Northern Mariana Islands" ], - [ "1978", "Silas", "Ayers", "17121", "United States" ], - [ "1979", "Ainsley", "Whitaker", "42695", "Dominica" ], - [ "1980", "Dillon", "Tucker", "N3R 3P3", "Botswana" ], - [ "1981", "Lillian", "West", "57665", "Palau" ], - [ "1982", "Talon", "Hart", "Z6T 4W3", "Serbia and Montenegro" ], - [ "1983", "Desiree", "Booth", "Q1W 9S1", "Gambia" ], - [ "1984", "Chastity", "Merrill", "F3B 9W7", "Puerto Rico" ], - [ "1985", "Nichole", "Leon", "T7V 5D6", "Belize" ], - [ "1986", "Rafael", "Washington", "87676", "Eritrea" ], - [ "1987", "Samson", "Mathews", "G7Q 5V6", "Burkina Faso" ], - [ "1988", "Jasper", "Campbell", "23791", "Thailand" ], - [ "1989", "Mason", "Harrington", "R9R 5S3", "Nigeria" ], - [ "1990", "Jameson", "Frederick", "R1N 4S0", "Guyana" ], - [ "1991", "Cadman", "Woodard", "43080", "Gambia" ], - [ "1992", "Catherine", "Gill", "W4W 8A4", "Philippines" ], - [ "1993", "Yael", "Richards", "99504", "Kenya" ], - [ "1994", "Porter", "Finley", "C8Z 5E0", "Brunei Darussalam" ], - [ "1995", "Alden", "Merritt", "P4E 9F0", "Mali" ], - [ "1996", "Kaye", "Andrews", "I5I 3A4", "Cayman Islands" ], - [ "1997", "Luke", "Bryant", "F3Z 2U1", "Kuwait" ], - [ "1998", "Heather", "Blackburn", "L1T 6B9", "Mongolia" ], - [ "1999", "Gage", "Sykes", "L9Q 7E6", "Palestinian Territory, Occupied" ], - [ "2000", "Kaseem", "Harris", "B9O 1C3", "Korea" ], - [ "2001", "Quail", "Leonard", "88755", "Burkina Faso" ], - [ "2002", "Dennis", "Craft", "13309", "Namibia" ], - [ "2003", "Ivor", "Forbes", "C3P 2E1", "Malta" ], - [ "2004", "Cade", "Herman", "R1E 5X9", "Sri Lanka" ], - [ "2005", "Larissa", "Santiago", "57781", "Dominica" ], - [ "2006", "Hyatt", "Tillman", "45071", "Ghana" ], - [ "2007", "Timothy", "Rodgers", "F8W 9W0", "Andorra" ], - [ "2008", "Hanae", "Powell", "F8B 7P7", "Luxembourg" ], - [ "2009", "Ima", "Pennington", "Z5W 5N5", "Latvia" ], - [ "2010", "Laurel", "Bell", "16805", "Venezuela" ], - [ "2011", "Avye", "Long", "04794", "Dominica" ], - [ "2012", "Lysandra", "Pierce", "H7O 3F4", "Zimbabwe" ], - [ "2013", "Eve", "Pollard", "L5K 6E2", "Algeria" ], - [ "2014", "Ina", "Mcdowell", "65712", "Saint Lucia" ], - [ "2015", "Meredith", "Serrano", "V8M 6K7", "Libyan Arab Jamahiriya" ], - [ "2016", "Daphne", "Irwin", "89933", "Mongolia" ], - [ "2017", "Adam", "Henson", "F6U 9D5", "Chile" ], - [ "2018", "Amery", "Hoover", "13408", "Mongolia" ], - [ "2019", "Quamar", "Hendricks", "20310", "Gambia" ], - [ "2020", "Ori", "Wheeler", "89005", "Nigeria" ], - [ "2021", "Zena", "Douglas", "Z1O 6F9", "Serbia and Montenegro" ], - [ "2022", "Buckminster", "Huffman", "R4V 9L2", "Mali" ], - [ "2023", "Harlan", "Gamble", "U4I 7M4", "Guyana" ], - [ "2024", "Dalton", "Cline", "63829", "Tonga" ], - [ "2025", "Martha", "Weber", "Z9B 4T0", "Bangladesh" ], - [ "2026", "Vernon", "Francis", "M5A 9X7", "Tokelau" ], - [ "2027", "Janna", "Velazquez", "67406", "Qatar" ], - [ "2028", "Fuller", "Keller", "80871", "Burkina Faso" ], - [ "2029", "Jamal", "Spears", "42197", "Norfolk Island" ], - [ "2030", "Christen", "Holcomb", "29806", "Norway" ], - [ "2031", "Mary", "Carter", "C6W 9K9", "Belgium" ], - [ "2032", "Colorado", "Austin", "62904", "Cook Islands" ], - [ "2033", "Fritz", "Hunt", "X8G 2V0", "Morocco" ], - [ "2034", "Isabella", "Bush", "17676", "Monaco" ], - [ "2035", "Adam", "Gilliam", "H7K 9X3", "Indonesia" ], - [ "2036", "John", "Austin", "O7X 4Z0", "Czech Republic" ], - [ "2037", "Cassady", "Yates", "68835", "Christmas Island" ], - [ "2038", "Ori", "Cantrell", "56920", "Guinea" ], - [ "2039", "May", "Horn", "47805", "Kuwait" ], - [ "2040", "Skyler", "Clarke", "64131", "Lebanon" ], - [ "2041", "Levi", "Foster", "S5Q 4B2", "Germany" ], - [ "2042", "Veda", "Wilkinson", "L7Z 9M8", "Niger" ], - [ "2043", "Brendan", "Levine", "L5B 9P4", "Nepal" ], - [ "2044", "Carson", "Sullivan", "93066", "United Arab Emirates" ], - [ "2045", "Steven", "Spencer", "F1V 9A7", "Pitcairn" ], - [ "2046", "Halla", "Michael", "N1U 1E7", "Seychelles" ], - [ "2047", "Jamal", "Hobbs", "G3D 6J7", "New Caledonia" ], - [ "2048", "Steel", "Bush", "U8F 6T2", "Belize" ], - [ "2049", "Ahmed", "Dennis", "M6E 3P3", "Afghanistan" ], - [ "2050", "Aspen", "Estes", "32157", "American Samoa" ], - [ "2051", "Peter", "Kelly", "91773", "Morocco" ], - [ "2052", "Xandra", "Grimes", "66702", "Tokelau" ], - [ "2053", "Michael", "Battle", "J2J 2N5", "Honduras" ], - [ "2054", "Steel", "Wiggins", "34625", "United States Minor Outlying Islands" ], - [ "2055", "Holmes", "Christian", "45402", "Liechtenstein" ], - [ "2056", "Charles", "Barrett", "O4N 9N8", "Lebanon" ], - [ "2057", "Hermione", "Soto", "C8E 4H8", "Congo" ], - [ "2058", "Elton", "Maxwell", "89033", "Madagascar" ], - [ "2059", "Zelda", "Burks", "B7W 5G7", "Sweden" ], - [ "2060", "Lynn", "David", "P3D 5K5", "Chad" ], - [ "2061", "Margaret", "Neal", "47438", "Western Sahara" ], - [ "2062", "David", "Vaughan", "E3L 8D9", "Tokelau" ], - [ "2063", "Vladimir", "Mcfarland", "U9V 1B3", "Belgium" ], - [ "2064", "Uriah", "Harrington", "77051", "United Arab Emirates" ], - [ "2065", "Noel", "Merritt", "J3G 7S1", "Dominican Republic" ], - [ "2066", "Christine", "Key", "54543", "Niger" ], - [ "2067", "Illana", "Hendricks", "07584", "Montserrat" ], - [ "2068", "Pearl", "Lewis", "U5D 2V3", "Libyan Arab Jamahiriya" ], - [ "2069", "Victoria", "Bullock", "17462", "Mauritania" ], - [ "2070", "Benedict", "Marsh", "61479", "Guyana" ], - [ "2071", "Quemby", "Washington", "99774", "French Polynesia" ], - [ "2072", "Shelley", "Noble", "U8S 5Z4", "Philippines" ], - [ "2073", "Olivia", "Britt", "72344", "Holy See (Vatican City State)" ], - [ "2074", "Oleg", "Hendrix", "67567", "Cuba" ], - [ "2075", "Hermione", "Gutierrez", "J5K 2J1", "Mozambique" ], - [ "2076", "Myra", "Dean", "03485", "Andorra" ], - [ "2077", "Deacon", "Moore", "34501", "Tunisia" ], - [ "2078", "Dai", "Baird", "B2P 4R0", "Cambodia" ], - [ "2079", "Levi", "Melton", "K7T 4B1", "Zimbabwe" ], - [ "2080", "Ocean", "Dalton", "66801", "Gabon" ], - [ "2081", "Selma", "Harding", "D7N 3J9", "Kyrgyzstan" ], - [ "2082", "Maisie", "Gill", "56324", "Morocco" ], - [ "2083", "Hillary", "Horne", "Y6O 6G3", "Cyprus" ], - [ "2084", "Joel", "Stokes", "77952", "Burundi" ], - [ "2085", "Channing", "Patterson", "G6B 8H4", "China" ], - [ "2086", "Elliott", "Cleveland", "H3J 9U9", "Namibia" ], - [ "2087", "Petra", "Gay", "44314", "Palestinian Territory, Occupied" ], - [ "2088", "May", "Hatfield", "48918", "Faroe Islands" ], - [ "2089", "Jemima", "Francis", "14347", "Libyan Arab Jamahiriya" ], - [ "2090", "Kyla", "Hale", "46200", "Cocos (Keeling) Islands" ], - [ "2091", "Veda", "Bruce", "F5W 9A6", "Mauritania" ], - [ "2092", "Sybill", "Avila", "58663", "Angola" ], - [ "2093", "Charissa", "Salazar", "35271", "Faroe Islands" ], - [ "2094", "Steven", "Allison", "E5L 4A3", "Wallis and Futuna" ], - [ "2095", "Kane", "Parks", "D5C 6K7", "Norfolk Island" ], - [ "2096", "Alika", "Bishop", "S3P 3O3", "China" ], - [ "2097", "James", "Bonner", "33277", "Canada" ], - [ "2098", "Yoko", "Foster", "B5J 6P9", "Croatia" ], - [ "2099", "Ivy", "Riggs", "94420", "Kiribati" ], - [ "2100", "Urielle", "Rosa", "V6W 2A0", "Falkland Islands (Malvinas)" ], - [ "2101", "Armando", "Shepherd", "Y5C 5W6", "Panama" ], - [ "2102", "Haley", "Ingram", "B4H 5U5", "Fiji" ], - [ "2103", "Brielle", "Dyer", "P2S 4H7", "Malawi" ], - [ "2104", "Francis", "Brady", "24239", "Uruguay" ], - [ "2105", "Fiona", "Webster", "72015", "Belize" ], - [ "2106", "Aiko", "Santos", "K4H 1N0", "Saint Vincent and The Grenadines" ], - [ "2107", "Amir", "Rivas", "02737", "Papua New Guinea" ], - [ "2108", "Mira", "Kerr", "W6E 6Y2", "Sri Lanka" ], - [ "2109", "Harrison", "Jensen", "50193", "Heard Island and Mcdonald Islands" ], - [ "2110", "Merrill", "Randall", "21534", "Colombia" ], - [ "2111", "Benjamin", "Howe", "N8M 4N6", "Turkmenistan" ], - [ "2112", "Melyssa", "Kidd", "97657", "Cameroon" ], - [ "2113", "Henry", "Moore", "95626", "Botswana" ], - [ "2114", "Nash", "Peters", "K3V 9F3", "Wallis and Futuna" ], - [ "2115", "Iliana", "Holt", "E9F 2Q8", "Netherlands Antilles" ], - [ "2116", "Naomi", "Hood", "P6D 2G3", "Anguilla" ], - [ "2117", "Ainsley", "Barron", "94273", "New Caledonia" ], - [ "2118", "Daphne", "Acevedo", "A9I 9E4", "Bermuda" ], - [ "2119", "Kiona", "Keith", "62523", "Saint Lucia" ], - [ "2120", "Kirsten", "Mcgee", "97481", "Macedonia" ], - [ "2121", "Emerald", "Franklin", "Q2I 6D6", "Botswana" ], - [ "2122", "Hall", "Schroeder", "I2D 9L7", "Kenya" ], - [ "2123", "Amaya", "Lynch", "50534", "Costa Rica" ], - [ "2124", "Randall", "Hanson", "B4R 2S3", "United Arab Emirates" ], - [ "2125", "Sasha", "Clarke", "50972", "United States Minor Outlying Islands" ], - [ "2126", "Susan", "Sutton", "Z4T 6K3", "Solomon Islands" ], - [ "2127", "Hiram", "Torres", "C8O 5O7", "Botswana" ], - [ "2128", "Melanie", "Calhoun", "87097", "New Zealand" ], - [ "2129", "Courtney", "Sutton", "07944", "Spain" ], - [ "2130", "Reuben", "Beard", "U6Z 8N5", "Faroe Islands" ], - [ "2131", "Jarrod", "Payne", "94171", "Turkey" ], - [ "2132", "Vincent", "Potts", "V5Z 9G9", "Madagascar" ], - [ "2133", "Kaye", "Kent", "O1B 2Z9", "Fiji" ], - [ "2134", "Carol", "Green", "78719", "Comoros" ], - [ "2135", "Cairo", "Combs", "G3C 8F0", "Indonesia" ], - [ "2136", "Ebony", "Parker", "77377", "Portugal" ], - [ "2137", "Gary", "Shaffer", "F1B 9W7", "French Guiana" ], - [ "2138", "Gay", "Jimenez", "05726", "Nepal" ], - [ "2139", "Patience", "Bryan", "60437", "Macao" ], - [ "2140", "Zenaida", "Bowen", "V3S 1G7", "Mauritania" ], - [ "2141", "Isaac", "Aguirre", "X8S 9K4", "Bermuda" ], - [ "2142", "Lacy", "Harrell", "67362", "Bhutan" ], - [ "2143", "Jael", "Grimes", "95612", "Anguilla" ], - [ "2144", "Catherine", "Galloway", "45834", "Suriname" ], - [ "2145", "Donna", "Burt", "N8C 2M8", "Burkina Faso" ], - [ "2146", "Colleen", "Ball", "N3E 4U8", "Libyan Arab Jamahiriya" ], - [ "2147", "Lael", "Brady", "01369", "Macedonia" ], - [ "2148", "Kermit", "Logan", "Y5P 8Q8", "Honduras" ], - [ "2149", "Katelyn", "Orr", "R7X 9W3", "Switzerland" ], - [ "2150", "Alisa", "Glenn", "17831", "Timor-leste" ], - [ "2151", "Lee", "Bean", "89445", "Guam" ], - [ "2152", "Maryam", "Cotton", "57924", "Gambia" ], - [ "2153", "Amena", "Love", "X1Z 6F7", "Thailand" ], - [ "2154", "Tallulah", "Case", "87477", "Ecuador" ], - [ "2155", "Carlos", "Sanford", "F6S 8J6", "Iraq" ], - [ "2156", "Quamar", "David", "D5F 2M8", "Gabon" ], - [ "2157", "Cassady", "Mays", "12786", "Netherlands" ], - [ "2158", "Jenna", "Rowland", "88845", "China" ], - [ "2159", "Justin", "Tanner", "66071", "Nepal" ], - [ "2160", "Riley", "Santiago", "F8K 2Y6", "Gabon" ], - [ "2161", "Iris", "Gallegos", "K9C 3T9", "Niue" ], - [ "2162", "Kato", "Osborn", "N4C 2L8", "Puerto Rico" ], - [ "2163", "Imogene", "Schroeder", "79710", "United States Minor Outlying Islands" ], - [ "2164", "Olympia", "Hebert", "D4W 1L0", "Saint Lucia" ], - [ "2165", "Skyler", "Burnett", "B2R 5H7", "Antarctica" ], - [ "2166", "Faith", "Sims", "88476", "Egypt" ], - [ "2167", "Emily", "Odom", "U7O 2P6", "Kuwait" ], - [ "2168", "Carly", "Washington", "46063", "Benin" ], - [ "2169", "Jolene", "Meyer", "B2B 9A4", "Australia" ], - [ "2170", "Ayanna", "Conrad", "84360", "Northern Mariana Islands" ], - [ "2171", "Violet", "Blankenship", "W2B 3U1", "New Caledonia" ], - [ "2172", "Rhona", "Gallegos", "10931", "Montserrat" ], - [ "2173", "Alice", "Hodges", "96181", "Burkina Faso" ], - [ "2174", "Brody", "Sandoval", "68959", "Pitcairn" ], - [ "2175", "Isabella", "Dunlap", "U8U 7Y8", "Afghanistan" ], - [ "2176", "Jordan", "Golden", "55152", "Guam" ], - [ "2177", "Gillian", "Thomas", "75633", "Djibouti" ], - [ "2178", "Hollee", "Clay", "79847", "Panama" ], - [ "2179", "Dane", "Knapp", "89535", "Armenia" ], - [ "2180", "Avram", "Martin", "T4S 4E2", "Madagascar" ], - [ "2181", "Fuller", "Newman", "47317", "Jamaica" ], - [ "2182", "Nina", "Berry", "81360", "Mongolia" ], - [ "2183", "Akeem", "Pratt", "56230", "Colombia" ], - [ "2184", "Lacy", "Hayes", "U7T 4F5", "Cyprus" ], - [ "2185", "Alfonso", "Mcclure", "06797", "Swaziland" ], - [ "2186", "Cedric", "Love", "64720", "Bermuda" ], - [ "2187", "Astra", "Fernandez", "H3I 1B0", "Mongolia" ], - [ "2188", "Iliana", "Durham", "R8C 7M8", "Spain" ], - [ "2189", "Gwendolyn", "Livingston", "C7X 5L1", "Northern Mariana Islands" ], - [ "2190", "Caldwell", "Anderson", "69099", "Kuwait" ], - [ "2191", "Risa", "Mejia", "P7A 4U7", "Israel" ], - [ "2192", "Dora", "Navarro", "L6G 2O8", "Ireland" ], - [ "2193", "Kirk", "Dean", "I2T 3E6", "Pitcairn" ], - [ "2194", "Jackson", "Harvey", "53467", "Myanmar" ], - [ "2195", "Thane", "Ballard", "87240", "Solomon Islands" ], - [ "2196", "Nadine", "Estes", "62003", "Malta" ], - [ "2197", "Candace", "Nunez", "57223", "Virgin Islands, British" ], - [ "2198", "Zelda", "Odom", "X4V 7F5", "Mongolia" ], - [ "2199", "Wylie", "Ayala", "S4I 4Q4", "Djibouti" ], - [ "2200", "Azalia", "Page", "57239", "Korea, Republic of" ], - [ "2201", "Joshua", "Burch", "R7B 1N7", "Samoa" ], - [ "2202", "Basil", "Ramos", "71614", "Tunisia" ], - [ "2203", "Jessica", "Shields", "U2D 4X3", "Syrian Arab Republic" ], - [ "2204", "Clio", "Singleton", "I1B 1B0", "Ghana" ], - [ "2205", "Astra", "Dotson", "62378", "Turks and Caicos Islands" ], - [ "2206", "Hamish", "Tucker", "E4Z 3N3", "Anguilla" ], - [ "2207", "Rachel", "Matthews", "U4I 8M3", "Trinidad and Tobago" ], - [ "2208", "Clayton", "Ball", "95319", "India" ], - [ "2209", "Quinn", "Wilkinson", "Y6M 3Q7", "Virgin Islands, U.S." ], - [ "2210", "Phelan", "Talley", "00543", "Philippines" ], - [ "2211", "Carol", "Brock", "M6X 4E2", "Gibraltar" ], - [ "2212", "Nomlanga", "Robles", "56511", "Viet Nam" ], - [ "2213", "Adrian", "Clay", "79479", "France" ], - [ "2214", "Sara", "Riley", "B9N 5P4", "Peru" ], - [ "2215", "Christine", "Sweeney", "W1Z 4S4", "French Polynesia" ], - [ "2216", "Leilani", "Johnston", "W1C 8M8", "American Samoa" ], - [ "2217", "Melyssa", "Lambert", "V1B 4P6", "Iraq" ], - [ "2218", "Talon", "Delacruz", "Y3N 9R2", "Bulgaria" ], - [ "2219", "Garth", "Jennings", "59667", "Malta" ], - [ "2220", "Naida", "Coleman", "45456", "Finland" ], - [ "2221", "Indigo", "Lopez", "77160", "Pitcairn" ], - [ "2222", "Asher", "French", "99064", "British Indian Ocean Territory" ], - [ "2223", "Vivian", "Mcgowan", "46310", "Oman" ], - [ "2224", "Gwendolyn", "Cervantes", "48905", "Cocos (Keeling) Islands" ], - [ "2225", "Logan", "Reid", "87376", "Ethiopia" ], - [ "2226", "Bryar", "Wolfe", "75860", "Comoros" ], - [ "2227", "Demetrius", "Hutchinson", "97252", "Dominican Republic" ], - [ "2228", "Freya", "Becker", "04872", "United States" ], - [ "2229", "Abel", "Brooks", "I7O 1M1", "Comoros" ], - [ "2230", "Silas", "Mcguire", "04101", "Indonesia" ], - [ "2231", "Quinn", "Fletcher", "B6E 2B0", "Niger" ], - [ "2232", "Rooney", "Holden", "29294", "Micronesia" ], - [ "2233", "Iris", "Hale", "N7W 6E9", "Greenland" ], - [ "2234", "Candace", "Barry", "U8I 5A4", "Germany" ], - [ "2235", "Yetta", "Ball", "62055", "Switzerland" ], - [ "2236", "Dai", "Bentley", "P2Y 4C5", "Dominica" ], - [ "2237", "Gannon", "Dunlap", "45728", "Fiji" ], - [ "2238", "Chelsea", "Mays", "36498", "Guinea" ], - [ "2239", "Ruth", "Mcguire", "62924", "Maldives" ], - [ "2240", "Melissa", "Durham", "D6S 1A2", "Armenia" ], - [ "2241", "Eaton", "Salinas", "53689", "Somalia" ], - [ "2242", "Driscoll", "Cunningham", "31194", "Sweden" ], - [ "2243", "Bevis", "Acosta", "V4M 9Z2", "Jamaica" ], - [ "2244", "Anastasia", "Mcknight", "24878", "Sao Tome and Principe" ], - [ "2245", "Anika", "Rowland", "45287", "Chile" ], - [ "2246", "Dexter", "Rollins", "00684", "Iran, Islamic Republic of" ], - [ "2247", "Brielle", "Irwin", "V4U 7R2", "Belgium" ], - [ "2248", "Ocean", "Fields", "08544", "Croatia" ], - [ "2249", "Sonia", "Solis", "C4X 1L5", "Niue" ], - [ "2250", "Joseph", "Haney", "29567", "Argentina" ], - [ "2251", "Lamar", "Heath", "81699", "Italy" ], - [ "2252", "Raya", "Jordan", "R6K 7B3", "Spain" ], - [ "2253", "Brody", "Frost", "34564", "Dominican Republic" ], - [ "2254", "Ann", "Hawkins", "S3A 5K7", "Yemen" ], - [ "2255", "Phillip", "Lindsay", "80544", "Sierra Leone" ], - [ "2256", "Willa", "Maynard", "A6A 4C5", "Mexico" ], - [ "2257", "Carolyn", "Mercer", "V8Z 1X5", "Zimbabwe" ], - [ "2258", "Justin", "Cole", "68764", "Saint Vincent and The Grenadines" ], - [ "2259", "Emmanuel", "Parks", "99769", "Latvia" ], - [ "2260", "Isaiah", "Salazar", "H1K 1X3", "Turks and Caicos Islands" ], - [ "2261", "Vance", "Porter", "49607", "Costa Rica" ], - [ "2262", "Igor", "Kim", "99489", "Turkmenistan" ], - [ "2263", "Emi", "Graves", "F4M 5L8", "El Salvador" ], - [ "2264", "Griffith", "Monroe", "11550", "Tanzania, United Republic of" ], - [ "2265", "Iliana", "Coffey", "30220", "Albania" ], - [ "2266", "Jemima", "Guthrie", "69283", "Saint Pierre and Miquelon" ], - [ "2267", "Zenia", "Farrell", "91872", "Tanzania, United Republic of" ], - [ "2268", "Lucas", "Chambers", "L5Z 1W0", "Bouvet Island" ], - [ "2269", "Zenaida", "Valenzuela", "31700", "Guam" ], - [ "2270", "Bradley", "Wynn", "21222", "Lithuania" ], - [ "2271", "Maite", "Richard", "H4D 7X0", "Cameroon" ], - [ "2272", "Moses", "House", "Y3Z 3K7", "Saint Vincent and The Grenadines" ], - [ "2273", "Erich", "Petersen", "U4N 9R7", "Rwanda" ], - [ "2274", "Stephanie", "Zimmerman", "70097", "Malawi" ], - [ "2275", "Rylee", "Schneider", "15645", "Gibraltar" ], - [ "2276", "Zia", "Craig", "H1K 1N9", "Norway" ], - [ "2277", "Fiona", "Chaney", "Y4U 7K8", "San Marino" ], - [ "2278", "Gil", "Sherman", "64720", "Wallis and Futuna" ], - [ "2279", "Raja", "Sandoval", "11225", "Lithuania" ], - [ "2280", "Illana", "Wyatt", "A2M 9O2", "Brazil" ], - [ "2281", "Declan", "Howell", "E9V 8J5", "San Marino" ], - [ "2282", "Warren", "Cooper", "47160", "Guyana" ], - [ "2283", "Alyssa", "Juarez", "S7G 8F2", "Sweden" ], - [ "2284", "Quynn", "Long", "P1P 5Y4", "Mexico" ], - [ "2285", "Dalton", "Booker", "I5T 1R3", "Mauritius" ], - [ "2286", "Lunea", "Mclaughlin", "I3F 6D4", "Togo" ], - [ "2287", "Irene", "Brock", "04760", "Tajikistan" ], - [ "2288", "Raven", "Floyd", "R2N 2Y5", "Philippines" ], - [ "2289", "Nichole", "Farmer", "81213", "Seychelles" ], - [ "2290", "Sophia", "Mcdonald", "86291", "Chile" ], - [ "2291", "Nehru", "Matthews", "60732", "Central African Republic" ], - [ "2292", "Marah", "Nelson", "44533", "Kenya" ], - [ "2293", "Marvin", "Lyons", "M7Y 1Q6", "Somalia" ], - [ "2294", "Ian", "Fernandez", "D9U 8B6", "Turkey" ], - [ "2295", "Gretchen", "Dotson", "48294", "China" ], - [ "2296", "Brady", "Weaver", "S4U 4I8", "Burundi" ], - [ "2297", "Ella", "Salas", "73771", "Sao Tome and Principe" ], - [ "2298", "Martha", "Irwin", "06554", "Timor-leste" ], - [ "2299", "Penelope", "Pratt", "S1R 4L4", "Gabon" ], - [ "2300", "Kenyon", "Dale", "64548", "Zimbabwe" ], - [ "2301", "Henry", "Myers", "07614", "United Arab Emirates" ], - [ "2302", "Chaney", "Dunlap", "18388", "French Southern Territories" ], - [ "2303", "Palmer", "Le", "10807", "Colombia" ], - [ "2304", "Kaseem", "Madden", "U4E 6L9", "Guyana" ], - [ "2305", "Grant", "Anthony", "F3K 4D8", "Trinidad and Tobago" ], - [ "2306", "Denton", "Moore", "I5O 4I5", "Belize" ], - [ "2307", "Regan", "Pittman", "U8T 9M1", "Romania" ], - [ "2308", "Valentine", "Hunt", "E9O 6H6", "Poland" ], - [ "2309", "Abraham", "Love", "X1T 4K0", "Philippines" ], - [ "2310", "Maggie", "Gaines", "W5Z 6L4", "Chad" ], - [ "2311", "Kylynn", "Sears", "53419", "Ghana" ], - [ "2312", "Abel", "Hudson", "O6C 6K5", "Malaysia" ], - [ "2313", "Aladdin", "Brady", "16465", "Antarctica" ], - [ "2314", "Laurel", "Bush", "42295", "Kyrgyzstan" ], - [ "2315", "Cameron", "Shepherd", "Y8R 5L7", "Finland" ], - [ "2316", "Colin", "Barker", "H8Q 5L0", "Aruba" ], - [ "2317", "Nichole", "Stephens", "B8P 3D5", "Qatar" ], - [ "2318", "Mary", "Dorsey", "J7D 1E5", "Iceland" ], - [ "2319", "Yetta", "Dillon", "I7X 9D3", "Hong Kong" ], - [ "2320", "Hope", "May", "L5W 1T9", "Taiwan, Province of China" ], - [ "2321", "Daphne", "Barr", "W2B 9G2", "Korea, Republic of" ], - [ "2322", "Melissa", "Hartman", "17607", "Reunion" ], - [ "2323", "Acton", "Merritt", "U7M 3Q5", "Cape Verde" ], - [ "2324", "Alika", "Weeks", "45475", "Singapore" ], - [ "2325", "Fitzgerald", "Rowe", "Z3Z 2B6", "Israel" ], - [ "2326", "Frances", "Valentine", "54329", "Kyrgyzstan" ], - [ "2327", "Hollee", "Poole", "56101", "Saint Kitts and Nevis" ], - [ "2328", "Melissa", "Stafford", "R5C 7V0", "Philippines" ], - [ "2329", "Patience", "Jones", "61516", "Mauritius" ], - [ "2330", "Uta", "Sloan", "K1B 9R2", "Timor-leste" ], - [ "2331", "Brent", "West", "69310", "Burundi" ], - [ "2332", "Otto", "Olsen", "88849", "Monaco" ], - [ "2333", "Blossom", "Soto", "E2Q 6E6", "Ukraine" ], - [ "2334", "Anastasia", "Stanton", "S8D 3U5", "Mexico" ], - [ "2335", "Nyssa", "Massey", "A4G 8G7", "Ireland" ], - [ "2336", "Brian", "Moreno", "T6O 4D7", "Myanmar" ], - [ "2337", "Fiona", "Price", "03826", "Benin" ], - [ "2338", "Wyoming", "Knowles", "I5M 7T3", "Chad" ], - [ "2339", "Iola", "Noble", "95251", "Tunisia" ], - [ "2340", "Cameran", "Montgomery", "35748", "Korea" ], - [ "2341", "Wesley", "Sims", "J6O 7C0", "Hungary" ], - [ "2342", "Mona", "Gates", "J6Y 3E2", "Tokelau" ], - [ "2343", "Dominique", "Sellers", "G6U 7I2", "Sudan" ], - [ "2344", "Destiny", "Frazier", "Y2P 5X6", "Madagascar" ], - [ "2345", "Kelsie", "Stokes", "78561", "Yemen" ], - [ "2346", "Julie", "Jordan", "U5H 4H0", "Myanmar" ], - [ "2347", "Xaviera", "Hodge", "36452", "Turkey" ], - [ "2348", "Cain", "Boyd", "74543", "Lebanon" ], - [ "2349", "Devin", "Burch", "94879", "Cyprus" ], - [ "2350", "Michelle", "Manning", "V7T 4A3", "New Zealand" ], - [ "2351", "Quintessa", "Chapman", "95379", "Faroe Islands" ], - [ "2352", "Danielle", "Wells", "27722", "Colombia" ], - [ "2353", "Faith", "Decker", "04881", "Canada" ], - [ "2354", "Gannon", "Chapman", "07687", "Israel" ], - [ "2355", "Jayme", "Black", "A6L 9W1", "Jordan" ], - [ "2356", "Zenia", "Cooley", "A6X 1B7", "Greenland" ], - [ "2357", "Maris", "Burton", "J4G 1Y0", "Ecuador" ], - [ "2358", "Rina", "Vazquez", "G3V 7G6", "Russian Federation" ], - [ "2359", "Nina", "Stanton", "E7Z 1W0", "Dominica" ], - [ "2360", "Alexandra", "Jenkins", "C6N 4R4", "Morocco" ], - [ "2361", "Jerome", "Chen", "68955", "Israel" ], - [ "2362", "Clementine", "Robbins", "X7I 7T3", "Croatia" ], - [ "2363", "Nigel", "Guthrie", "A4N 6X8", "French Southern Territories" ], - [ "2364", "Xaviera", "Griffith", "90489", "Cuba" ], - [ "2365", "Marsden", "Best", "U4B 5R7", "Estonia" ], - [ "2366", "Ebony", "Benson", "H7C 7F7", "Anguilla" ], - [ "2367", "Kylie", "Hansen", "38932", "Eritrea" ], - [ "2368", "Iola", "Copeland", "P4X 9M4", "Rwanda" ], - [ "2369", "Jorden", "Green", "48018", "Namibia" ], - [ "2370", "Hamish", "Porter", "L6F 8L1", "Taiwan, Province of China" ], - [ "2371", "Ezra", "Taylor", "09148", "French Southern Territories" ], - [ "2372", "Dara", "Pratt", "00558", "Saint Kitts and Nevis" ], - [ "2373", "Oliver", "Holt", "C4N 5Z7", "Thailand" ], - [ "2374", "Kato", "Mcgee", "17017", "Micronesia" ], - [ "2375", "Fuller", "Rogers", "M8F 6Y7", "French Polynesia" ], - [ "2376", "Carol", "Stuart", "55980", "Sudan" ], - [ "2377", "Wayne", "Nichols", "37344", "Chile" ], - [ "2378", "Lars", "Gilbert", "27076", "Micronesia" ], - [ "2379", "Todd", "Rollins", "M4I 4X8", "Virgin Islands, U.S." ], - [ "2380", "Colorado", "Justice", "68795", "Yemen" ], - [ "2381", "Jordan", "Chang", "11149", "Mayotte" ], - [ "2382", "Troy", "Haynes", "N2N 1N8", "Reunion" ], - [ "2383", "Amity", "Snyder", "17785", "Argentina" ], - [ "2384", "Kennan", "Turner", "30041", "Brazil" ], - [ "2385", "Dorothy", "Gates", "B7Z 6V4", "Ghana" ], - [ "2386", "Ariana", "Rojas", "70797", "Eritrea" ], - [ "2387", "Desirae", "Joyner", "63493", "Maldives" ], - [ "2388", "Marsden", "Barton", "36343", "Chile" ], - [ "2389", "Graham", "Greer", "65152", "Cayman Islands" ], - [ "2390", "Cameron", "Edwards", "89276", "Montserrat" ], - [ "2391", "Bradley", "White", "80364", "United Kingdom" ], - [ "2392", "Finn", "Cote", "G9P 1P0", "Ghana" ], - [ "2393", "Geoffrey", "Becker", "O5G 4L4", "Wallis and Futuna" ], - [ "2394", "Hayden", "Estes", "Q8G 7F9", "Togo" ], - [ "2395", "Quinlan", "Garrett", "R2C 3E7", "Uganda" ], - [ "2396", "Haviva", "Harrington", "64198", "Bahamas" ], - [ "2397", "Brennan", "Hodge", "35327", "Paraguay" ], - [ "2398", "Halee", "Sykes", "S6J 4S4", "Costa Rica" ], - [ "2399", "Mikayla", "Ruiz", "21686", "Malaysia" ], - [ "2400", "Macy", "Stanley", "F6D 6C4", "Luxembourg" ], - [ "2401", "Petra", "Miles", "O7X 2D2", "Tokelau" ], - [ "2402", "Oprah", "Mendez", "88994", "France" ], - [ "2403", "Upton", "Silva", "17878", "French Southern Territories" ], - [ "2404", "Wade", "Pennington", "S8J 3P2", "Malaysia" ], - [ "2405", "Gannon", "Riddle", "I4A 2H9", "Somalia" ], - [ "2406", "Jana", "Myers", "04982", "Philippines" ], - [ "2407", "Brooke", "Hale", "98272", "Lithuania" ], - [ "2408", "Hashim", "Mendez", "00144", "Saint Helena" ], - [ "2409", "Blythe", "Hanson", "U5Z 6P4", "Saint Helena" ], - [ "2410", "Michelle", "Madden", "B4R 1I9", "Ireland" ], - [ "2411", "Deirdre", "Patton", "B4H 1N7", "Georgia" ], - [ "2412", "Nathaniel", "Chandler", "W1V 8R4", "Sierra Leone" ], - [ "2413", "Tamekah", "Murray", "I8M 1W8", "Guatemala" ], - [ "2414", "Naida", "Boyle", "V4S 2N2", "United Arab Emirates" ], - [ "2415", "Hiroko", "Winters", "K8G 3R9", "Barbados" ], - [ "2416", "Palmer", "Guy", "A4H 5L1", "Saudi Arabia" ], - [ "2417", "Hermione", "Nicholson", "76147", "Marshall Islands" ], - [ "2418", "Russell", "Boyd", "66149", "Switzerland" ], - [ "2419", "Gretchen", "Robles", "B9L 1J7", "Spain" ], - [ "2420", "Leah", "Gibbs", "16682", "Vanuatu" ], - [ "2421", "Amir", "Carlson", "A5C 6F2", "Myanmar" ], - [ "2422", "Merrill", "Ratliff", "A6E 9B2", "Tonga" ], - [ "2423", "Wyatt", "David", "P8G 2M1", "Kiribati" ], - [ "2424", "Violet", "Boyle", "P5X 7B0", "Denmark" ], - [ "2425", "Jared", "Myers", "22131", "Kyrgyzstan" ], - [ "2426", "Lavinia", "Stephenson", "55537", "Turks and Caicos Islands" ], - [ "2427", "Zachary", "Tyson", "C4O 7V4", "Macedonia" ], - [ "2428", "Emma", "Clark", "A7Z 2Z1", "Guam" ], - [ "2429", "Aaron", "Montoya", "Q3U 2X1", "Bahrain" ], - [ "2430", "Dylan", "Roach", "81238", "French Guiana" ], - [ "2431", "Baxter", "Rosario", "H7B 1R2", "Suriname" ], - [ "2432", "Shad", "Bolton", "D1W 5X0", "Barbados" ], - [ "2433", "Hasad", "Hines", "D9U 3H1", "Ukraine" ], - [ "2434", "Maggy", "French", "M3E 5H8", "Nicaragua" ], - [ "2435", "Evangeline", "Jenkins", "57732", "Nigeria" ], - [ "2436", "Eaton", "Shannon", "56854", "Namibia" ], - [ "2437", "Keaton", "Barber", "G5V 7T0", "Svalbard and Jan Mayen" ], - [ "2438", "Lester", "Love", "J5Q 8H3", "United Kingdom" ], - [ "2439", "Olivia", "Foley", "16284", "Mayotte" ], - [ "2440", "Inez", "Craig", "98947", "Poland" ], - [ "2441", "Desirae", "Jacobson", "25950", "French Polynesia" ], - [ "2442", "Amethyst", "Robertson", "78840", "Timor-leste" ], - [ "2443", "Rahim", "Day", "61420", "Maldives" ], - [ "2444", "Kevyn", "Mccarty", "X7T 8Z3", "Guam" ], - [ "2445", "Logan", "Malone", "B6F 8N0", "Madagascar" ], - [ "2446", "Kathleen", "Cote", "L4R 6W9", "Congo" ], - [ "2447", "Porter", "Mclean", "G1Z 1W9", "Mauritius" ], - [ "2448", "Reagan", "Chapman", "86314", "Palestinian Territory, Occupied" ], - [ "2449", "Veda", "Harrington", "R7W 1K4", "Congo" ], - [ "2450", "Dominique", "Hewitt", "P5K 7L4", "San Marino" ], - [ "2451", "Zelda", "Orr", "Z5B 6V1", "Greenland" ], - [ "2452", "Natalie", "Kane", "10491", "Belgium" ], - [ "2453", "Elizabeth", "Bright", "R3V 2R4", "Bangladesh" ], - [ "2454", "Evan", "Knapp", "W3Z 3I5", "Mauritius" ], - [ "2455", "Unity", "Armstrong", "82986", "Kiribati" ], - [ "2456", "Arden", "Winters", "C7D 4M2", "Sweden" ], - [ "2457", "Hayfa", "Henderson", "B8Z 3V3", "Latvia" ], - [ "2458", "Ocean", "Delacruz", "Z3Z 2H8", "Tonga" ], - [ "2459", "Carter", "Harding", "R1Z 8J4", "Ireland" ], - [ "2460", "Harriet", "Simmons", "54757", "Indonesia" ], - [ "2461", "Sopoline", "Hicks", "I5A 6O2", "Argentina" ], - [ "2462", "Jenette", "Ramos", "I4V 3H6", "Portugal" ], - [ "2463", "Abigail", "Berg", "E6P 6L0", "United States" ], - [ "2464", "Sybill", "Fox", "02319", "Svalbard and Jan Mayen" ], - [ "2465", "Wyoming", "Jarvis", "I1R 7V9", "Palestinian Territory, Occupied" ], - [ "2466", "Cynthia", "English", "17983", "Israel" ], - [ "2467", "Jerry", "Little", "33846", "Mauritius" ], - [ "2468", "Quintessa", "Donaldson", "V4N 2K1", "China" ], - [ "2469", "Anne", "Potter", "78596", "United States Minor Outlying Islands" ], - [ "2470", "Madonna", "Hart", "A4A 4T8", "Bahrain" ], - [ "2471", "Madeline", "Walls", "Y3D 4T3", "Comoros" ], - [ "2472", "Fleur", "Blevins", "D1T 9P6", "Guinea-bissau" ], - [ "2473", "Jaden", "Webb", "13917", "Lesotho" ], - [ "2474", "Abdul", "Fleming", "A8A 3Y3", "Canada" ], - [ "2475", "Blaze", "Carroll", "41059", "Marshall Islands" ], - [ "2476", "David", "Hoover", "29132", "Algeria" ], - [ "2477", "Renee", "Nieves", "35843", "Egypt" ], - [ "2478", "Jaime", "Mcclure", "R5K 6B5", "Liechtenstein" ], - [ "2479", "Deborah", "Fletcher", "70399", "Equatorial Guinea" ], - [ "2480", "Otto", "Lopez", "72417", "Belarus" ], - [ "2481", "Bo", "Walls", "F4M 8X8", "Latvia" ], - [ "2482", "Jamal", "Adams", "N9X 3A2", "Spain" ], - [ "2483", "Silas", "Gardner", "25259", "French Guiana" ], - [ "2484", "Aladdin", "Morin", "45179", "Sweden" ], - [ "2485", "Dawn", "Grant", "53613", "Grenada" ], - [ "2486", "Forrest", "Gay", "53606", "Cayman Islands" ], - [ "2487", "Lavinia", "Murphy", "S5L 6X9", "Turkey" ], - [ "2488", "Sylvia", "Wolfe", "37280", "Indonesia" ], - [ "2489", "Wynter", "Adkins", "37391", "Russian Federation" ], - [ "2490", "Iola", "Frank", "I9H 1K7", "Nigeria" ], - [ "2491", "Emmanuel", "Hester", "Z6E 3I4", "Guinea" ], - [ "2492", "Karina", "Christian", "V8M 6F3", "Honduras" ], - [ "2493", "Malcolm", "Holden", "I7J 6U7", "Austria" ], - [ "2494", "Moana", "Holmes", "80402", "Israel" ], - [ "2495", "Ramona", "Hewitt", "U6B 7A6", "Guadeloupe" ], - [ "2496", "Nicholas", "Terry", "V8J 5D9", "Costa Rica" ], - [ "2497", "Erica", "Dunlap", "91596", "Kazakhstan" ], - [ "2498", "Logan", "Harper", "R7V 3T5", "Guinea-bissau" ], - [ "2499", "Bert", "Ortega", "74557", "Paraguay" ], - [ "2500", "Cameron", "Ortiz", "P9C 5B6", "Eritrea" ] -] } \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/Scroller/examples/data/ssp.php b/assets/plugins/datatables/extensions/Scroller/examples/data/ssp.php deleted file mode 100644 index 71057e9e..00000000 --- a/assets/plugins/datatables/extensions/Scroller/examples/data/ssp.php +++ /dev/null @@ -1,58 +0,0 @@ -<?php - -/* - * DataTables example server-side processing script. - * - * Please note that this script is intentionally extremely simply to show how - * server-side processing can be implemented, and probably shouldn't be used as - * the basis for a large complex system. It is suitable for simple use cases as - * for learning. - * - * See http://datatables.net/usage/server-side for full details on the server- - * side processing requirements of DataTables. - * - * @license MIT - http://datatables.net/license_mit - */ - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Easy set variables - */ - -// DB table to use -$table = 'massive'; - -// Table's primary key -$primaryKey = 'id'; - -// Array of database columns which should be read and sent back to DataTables. -// The `db` parameter represents the column name in the database, while the `dt` -// parameter represents the DataTables column identifier. In this case simple -// indexes -$columns = array( - array( 'db' => 'id', 'dt' => 0 ), - array( 'db' => 'firstname', 'dt' => 1 ), - array( 'db' => 'surname', 'dt' => 2 ), - array( 'db' => 'zip', 'dt' => 3 ), - array( 'db' => 'country', 'dt' => 4 ) -); - -// SQL server connection information -$sql_details = array( - 'user' => '', - 'pass' => '', - 'db' => '', - 'host' => '' -); - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * If you just want to use the basic configuration for DataTables with PHP - * server-side, there is no need to edit below this line. - */ - -require( '../../../../examples/server_side/scripts/ssp.class.php' ); - -echo json_encode( - SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns ) -); - diff --git a/assets/plugins/datatables/extensions/Scroller/examples/index.html b/assets/plugins/datatables/extensions/Scroller/examples/index.html deleted file mode 100644 index f0b5bcb6..00000000 --- a/assets/plugins/datatables/extensions/Scroller/examples/index.html +++ /dev/null @@ -1,83 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - - <title>Scroller examples - Scroller examples</title> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>Scroller example <span>Scroller examples</span></h1> - - <div class="info"> - <p>Scroller is a virtual rendering plug-in for DataTables which allows large datasets to be drawn on - screen every quickly. What the virtual rendering means is that only the visible portion of the table - (and a bit to either side to make the scrolling smooth) is drawn, while the scrolling container gives - the visual impression that the whole table is visible. This is done by making use of the pagination - abilities of DataTables and moving the table around in the scrolling container DataTables adds to the - page. The scrolling container is forced to the height it would be for the full table display using an - extra element.</p> - - <p>Scroller is initialised by simply including the letter <code>S</code> in the <a href= - "//datatables.net/reference/option/dom"><code class="option" title= - "DataTables initialisation option">dom<span>DT</span></code></a> for the table you want to have this - feature enabled on. Note that the <code>S</code> must come after the <code>t</code> parameter in - <a href="//datatables.net/reference/option/dom"><code class="option" title= - "DataTables initialisation option">dom<span>DT</span></code></a>.</p> - - <p>Key features include:</p> - - <ul class="markdown"> - <li>Speed! The aim of Scroller for DataTables is to make rendering large data sets fast</li> - <li>Full compatibility with DataTables' deferred rendering for maximum speed</li> - <li>Integration with state saving in DataTables (scrolling position is saved)</li> - <li>Easy to use</li> - </ul> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./state_saving.html">State saving</a></li> - <li><a href="./large_js_source.html">Client-side data source (50,000 rows)</a></li> - <li><a href="./server-side_processing.html">Server-side processing (5,000,000 - rows)</a></li> - <li><a href="./api_scrolling.html">API</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full - information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and - <a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of - DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href= - "http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/Scroller/examples/large_js_source.html b/assets/plugins/datatables/extensions/Scroller/examples/large_js_source.html deleted file mode 100644 index 9d39ffaf..00000000 --- a/assets/plugins/datatables/extensions/Scroller/examples/large_js_source.html +++ /dev/null @@ -1,182 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>Scroller example - Client-side data source (50,000 rows)</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.scroller.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.scroller.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - - $(document).ready(function() { - var data = []; - for ( var i=0 ; i<50000 ; i++ ) { - data.push( [ i, i, i, i, i ] ); - } - - var oTable = $('#example').dataTable( { - data: data, - deferRender: true, - dom: "frtiS", - scrollY: 200, - scrollCollapse: true - } ); - } ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>Scroller example <span>Client-side data source (50,000 rows)</span></h1> - - <div class="info"> - <p>This example is completely artificial in that the data generated is created on the client-side by - just looping around a Javascript array and then passing that to DataTables. However, it does show quite - nicely that DataTables and Scroller can cope with large amounts of data on the client-side quite - nicely. Typically data such as this would be Ajax sourced and server-side processing should be - considered.</p> - - <p>Please be aware that the performance of this page will depend on your browser as the array of data - is generated - for example IE6 will crawl!</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>ID</th> - <th>First name</th> - <th>Last name</th> - <th>ZIP / Post code</th> - <th>Country</th> - </tr> - </thead> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this - example:</p><code class="multiline brush: js;">$(document).ready(function() { - var data = []; - for ( var i=0 ; i&lt;50000 ; i++ ) { - data.push( [ i, i, i, i, i ] ); - } - - var oTable = $('#example').dataTable( { - data: data, - deferRender: true, - dom: &quot;frtiS&quot;, - scrollY: 200, - scrollCollapse: true - } ); - } );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this - example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href= - "../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.scroller.js">../js/dataTables.scroller.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by - DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library - files (below), in order to correctly display the table. The additional CSS used is shown - below:</p><code class="multiline brush: js;"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the - table:</p> - - <ul> - <li><a href= - "../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.scroller.css">../css/dataTables.scroller.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data - will update automatically as any additional data is loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note - that this is just an example script using PHP. Server-side processing scripts can be written in any - language, using <a href="//datatables.net/manual/server-side">the protocol described in the - DataTables documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./state_saving.html">State saving</a></li> - <li class="active"><a href="./large_js_source.html">Client-side data source (50,000 - rows)</a></li> - <li><a href="./server-side_processing.html">Server-side processing (5,000,000 - rows)</a></li> - <li><a href="./api_scrolling.html">API</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full - information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and - <a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of - DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href= - "http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/Scroller/examples/server-side_processing.html b/assets/plugins/datatables/extensions/Scroller/examples/server-side_processing.html deleted file mode 100644 index b1650a99..00000000 --- a/assets/plugins/datatables/extensions/Scroller/examples/server-side_processing.html +++ /dev/null @@ -1,220 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>Scroller example - Server-side processing (5,000,000 rows)</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.scroller.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.scroller.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - $('#example').DataTable( { - serverSide: true, - ordering: false, - searching: false, - ajax: function ( data, callback, settings ) { - var out = []; - - for ( var i=data.start, ien=data.start+data.length ; i<ien ; i++ ) { - out.push( [ i+'-1', i+'-2', i+'-3', i+'-4', i+'-5' ] ); - } - - setTimeout( function () { - callback( { - draw: data.draw, - data: out, - recordsTotal: 5000000, - recordsFiltered: 5000000 - } ); - }, 50 ); - }, - dom: "rtiS", - scrollY: 200, - scroller: { - loadingIndicator: true - } - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>Scroller example <span>Server-side processing (5,000,000 rows)</span></h1> - - <div class="info"> - <p>DataTables' server-side processing mode is a feature that naturally fits in with Scroller perfectly. - Server-side processing can be used to show large data sets, with the server being used to do the data - processing, and Scroller optimising the display of the data in a scrolling viewport.</p> - - <p>When using server-side processing, Scroller will wait a small amount of time to allow the scrolling - to finish before requesting more data from the server (200mS by default). This prevents you from DoSing - your own server!</p> - - <p>This example shows Scroller using server-side processing mode and 5 million rows. - <strong>Important</strong> This particular example uses <a href= - "//datatables.net/reference/option/ajax"><code class="option" title= - "DataTables initialisation option">ajax<span>DT</span></code></a> as a function to 'fake' the data to - show Scroller's ability to show large data sets. It does not have a real database behind it! You would - normally not use <a href="//datatables.net/reference/option/ajax"><code class="option" title= - "DataTables initialisation option">ajax<span>DT</span></code></a> as a function to generate data, but - rather as a url for where to fetch the real data!</p> - - <p>In this example we also enable the <code>loadingIndicator</code> option of Scroller to show the end - user what is happening when they scroll passed the currently loaded data.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>ID</th> - <th>First name</th> - <th>Last name</th> - <th>ZIP / Post code</th> - <th>Country</th> - </tr> - </thead> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this - example:</p><code class="multiline brush: js;">$(document).ready(function() { - $('#example').DataTable( { - serverSide: true, - ordering: false, - searching: false, - ajax: function ( data, callback, settings ) { - var out = []; - - for ( var i=data.start, ien=data.start+data.length ; i&lt;ien ; i++ ) { - out.push( [ i+'-1', i+'-2', i+'-3', i+'-4', i+'-5' ] ); - } - - setTimeout( function () { - callback( { - draw: data.draw, - data: out, - recordsTotal: 5000000, - recordsFiltered: 5000000 - } ); - }, 50 ); - }, - dom: &quot;rtiS&quot;, - scrollY: 200, - scroller: { - loadingIndicator: true - } - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this - example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href= - "../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.scroller.js">../js/dataTables.scroller.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by - DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library - files (below), in order to correctly display the table. The additional CSS used is shown - below:</p><code class="multiline brush: js;"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the - table:</p> - - <ul> - <li><a href= - "../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.scroller.css">../css/dataTables.scroller.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data - will update automatically as any additional data is loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note - that this is just an example script using PHP. Server-side processing scripts can be written in any - language, using <a href="//datatables.net/manual/server-side">the protocol described in the - DataTables documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./state_saving.html">State saving</a></li> - <li><a href="./large_js_source.html">Client-side data source (50,000 rows)</a></li> - <li class="active"><a href="./server-side_processing.html">Server-side processing - (5,000,000 rows)</a></li> - <li><a href="./api_scrolling.html">API</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full - information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and - <a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of - DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href= - "http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/Scroller/examples/simple.html b/assets/plugins/datatables/extensions/Scroller/examples/simple.html deleted file mode 100644 index 6d54a6c7..00000000 --- a/assets/plugins/datatables/extensions/Scroller/examples/simple.html +++ /dev/null @@ -1,175 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>Scroller example - Basic initialisation</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.scroller.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.scroller.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - $('#example').DataTable( { - ajax: "data/2500.txt", - deferRender: true, - dom: "frtiS", - scrollY: 200, - scrollCollapse: true - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>Scroller example <span>Basic initialisation</span></h1> - - <div class="info"> - <p>Scroller is a plug-in for DataTables which enhances DataTables' built-in scrolling features to allow - large amounts of data to be rendered on page very quickly. This is done by Scroller through the use of - a virtual rendering technique that will render only the part of the table that is actually required for - the current view.</p> - - <p>Note that Scroller assumes that all rows are of the same height (in order to preform the required - calculations. You can use <code>td { white-space: nowrap; }</code> in your CSS to ensure that text in - rows does not wrap.</p> - - <p>This example shows how Scroller for DataTables can be initialised by simply including the character - <code>S</code> in sDom (note that the <code>S</code> must come after the <code>t</code> in sDom). - Deferred rendering an and Ajax data source are also used in this example.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>ID</th> - <th>First name</th> - <th>Last name</th> - <th>ZIP / Post code</th> - <th>Country</th> - </tr> - </thead> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this - example:</p><code class="multiline brush: js;">$(document).ready(function() { - $('#example').DataTable( { - ajax: &quot;data/2500.txt&quot;, - deferRender: true, - dom: &quot;frtiS&quot;, - scrollY: 200, - scrollCollapse: true - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this - example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href= - "../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.scroller.js">../js/dataTables.scroller.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by - DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library - files (below), in order to correctly display the table. The additional CSS used is shown - below:</p><code class="multiline brush: js;"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the - table:</p> - - <ul> - <li><a href= - "../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.scroller.css">../css/dataTables.scroller.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data - will update automatically as any additional data is loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note - that this is just an example script using PHP. Server-side processing scripts can be written in any - language, using <a href="//datatables.net/manual/server-side">the protocol described in the - DataTables documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li class="active"><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./state_saving.html">State saving</a></li> - <li><a href="./large_js_source.html">Client-side data source (50,000 rows)</a></li> - <li><a href="./server-side_processing.html">Server-side processing (5,000,000 - rows)</a></li> - <li><a href="./api_scrolling.html">API</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full - information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and - <a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of - DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href= - "http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/Scroller/examples/state_saving.html b/assets/plugins/datatables/extensions/Scroller/examples/state_saving.html deleted file mode 100644 index 3dc8c3de..00000000 --- a/assets/plugins/datatables/extensions/Scroller/examples/state_saving.html +++ /dev/null @@ -1,170 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>Scroller example - State saving</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.scroller.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.scroller.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - $('#example').DataTable( { - ajax: "data/2500.txt", - deferRender: true, - dom: "frtiS", - scrollY: 200, - scrollCollapse: true, - stateSave: true - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>Scroller example <span>State saving</span></h1> - - <div class="info"> - <p>Scroller will automatically integrate with DataTables in order to save the scrolling position of the - table, if state saving is enabled in the DataTable (<a href= - "//datatables.net/reference/option/stateSave"><code class="option" title= - "DataTables initialisation option">stateSave<span>DT</span></code></a>). This example shows that in - practice - to demonstrate, scroll the table and then reload the page.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>ID</th> - <th>First name</th> - <th>Last name</th> - <th>ZIP / Post code</th> - <th>Country</th> - </tr> - </thead> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this - example:</p><code class="multiline brush: js;">$(document).ready(function() { - $('#example').DataTable( { - ajax: &quot;data/2500.txt&quot;, - deferRender: true, - dom: &quot;frtiS&quot;, - scrollY: 200, - scrollCollapse: true, - stateSave: true - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this - example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href= - "../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.scroller.js">../js/dataTables.scroller.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by - DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library - files (below), in order to correctly display the table. The additional CSS used is shown - below:</p><code class="multiline brush: js;"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the - table:</p> - - <ul> - <li><a href= - "../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.scroller.css">../css/dataTables.scroller.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data - will update automatically as any additional data is loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note - that this is just an example script using PHP. Server-side processing scripts can be written in any - language, using <a href="//datatables.net/manual/server-side">the protocol described in the - DataTables documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li class="active"><a href="./state_saving.html">State saving</a></li> - <li><a href="./large_js_source.html">Client-side data source (50,000 rows)</a></li> - <li><a href="./server-side_processing.html">Server-side processing (5,000,000 - rows)</a></li> - <li><a href="./api_scrolling.html">API</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full - information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and - <a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of - DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href= - "http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/Scroller/images/loading-background.png b/assets/plugins/datatables/extensions/Scroller/images/loading-background.png deleted file mode 100644 index 2d815070..00000000 Binary files a/assets/plugins/datatables/extensions/Scroller/images/loading-background.png and /dev/null differ diff --git a/assets/plugins/datatables/extensions/Scroller/js/dataTables.scroller.js b/assets/plugins/datatables/extensions/Scroller/js/dataTables.scroller.js deleted file mode 100644 index 2beecdbd..00000000 --- a/assets/plugins/datatables/extensions/Scroller/js/dataTables.scroller.js +++ /dev/null @@ -1,1262 +0,0 @@ -/*! Scroller 1.2.2 - * ©2011-2014 SpryMedia Ltd - datatables.net/license - */ - -/** - * @summary Scroller - * @description Virtual rendering for DataTables - * @version 1.2.2 - * @file dataTables.scroller.js - * @author SpryMedia Ltd (www.sprymedia.co.uk) - * @contact www.sprymedia.co.uk/contact - * @copyright Copyright 2011-2014 SpryMedia Ltd. - * - * This source file is free software, available under the following license: - * MIT license - http://datatables.net/license/mit - * - * This source file is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. - * - * For details please refer to: http://www.datatables.net - */ - -(function(window, document, undefined){ - - -var factory = function( $, DataTable ) { -"use strict"; - -/** - * Scroller is a virtual rendering plug-in for DataTables which allows large - * datasets to be drawn on screen every quickly. What the virtual rendering means - * is that only the visible portion of the table (and a bit to either side to make - * the scrolling smooth) is drawn, while the scrolling container gives the - * visual impression that the whole table is visible. This is done by making use - * of the pagination abilities of DataTables and moving the table around in the - * scrolling container DataTables adds to the page. The scrolling container is - * forced to the height it would be for the full table display using an extra - * element. - * - * Note that rows in the table MUST all be the same height. Information in a cell - * which expands on to multiple lines will cause some odd behaviour in the scrolling. - * - * Scroller is initialised by simply including the letter 'S' in the sDom for the - * table you want to have this feature enabled on. Note that the 'S' must come - * AFTER the 't' parameter in `dom`. - * - * Key features include: - * <ul class="limit_length"> - * <li>Speed! The aim of Scroller for DataTables is to make rendering large data sets fast</li> - * <li>Full compatibility with deferred rendering in DataTables 1.9 for maximum speed</li> - * <li>Display millions of rows</li> - * <li>Integration with state saving in DataTables (scrolling position is saved)</li> - * <li>Easy to use</li> - * </ul> - * - * @class - * @constructor - * @global - * @param {object} oDT DataTables settings object - * @param {object} [oOpts={}] Configuration object for FixedColumns. Options - * are defined by {@link Scroller.defaults} - * - * @requires jQuery 1.7+ - * @requires DataTables 1.9.0+ - * - * @example - * $(document).ready(function() { - * $('#example').dataTable( { - * "sScrollY": "200px", - * "sAjaxSource": "media/dataset/large.txt", - * "sDom": "frtiS", - * "bDeferRender": true - * } ); - * } ); - */ -var Scroller = function ( oDTSettings, oOpts ) { - /* Sanity check - you just know it will happen */ - if ( ! this instanceof Scroller ) - { - alert( "Scroller warning: Scroller must be initialised with the 'new' keyword." ); - return; - } - - if ( typeof oOpts == 'undefined' ) - { - oOpts = {}; - } - - /** - * Settings object which contains customisable information for the Scroller instance - * @namespace - * @private - * @extends Scroller.defaults - */ - this.s = { - /** - * DataTables settings object - * @type object - * @default Passed in as first parameter to constructor - */ - "dt": oDTSettings, - - /** - * Pixel location of the top of the drawn table in the viewport - * @type int - * @default 0 - */ - "tableTop": 0, - - /** - * Pixel location of the bottom of the drawn table in the viewport - * @type int - * @default 0 - */ - "tableBottom": 0, - - /** - * Pixel location of the boundary for when the next data set should be loaded and drawn - * when scrolling up the way. - * @type int - * @default 0 - * @private - */ - "redrawTop": 0, - - /** - * Pixel location of the boundary for when the next data set should be loaded and drawn - * when scrolling down the way. Note that this is actually calculated as the offset from - * the top. - * @type int - * @default 0 - * @private - */ - "redrawBottom": 0, - - /** - * Auto row height or not indicator - * @type bool - * @default 0 - */ - "autoHeight": true, - - /** - * Number of rows calculated as visible in the visible viewport - * @type int - * @default 0 - */ - "viewportRows": 0, - - /** - * setTimeout reference for state saving, used when state saving is enabled in the DataTable - * and when the user scrolls the viewport in order to stop the cookie set taking too much - * CPU! - * @type int - * @default 0 - */ - "stateTO": null, - - /** - * setTimeout reference for the redraw, used when server-side processing is enabled in the - * DataTables in order to prevent DoSing the server - * @type int - * @default null - */ - "drawTO": null, - - heights: { - jump: null, - page: null, - virtual: null, - scroll: null, - - /** - * Height of rows in the table - * @type int - * @default 0 - */ - row: null, - - /** - * Pixel height of the viewport - * @type int - * @default 0 - */ - viewport: null - }, - - topRowFloat: 0, - scrollDrawDiff: null, - loaderVisible: false - }; - - // @todo The defaults should extend a `c` property and the internal settings - // only held in the `s` property. At the moment they are mixed - this.s = $.extend( this.s, Scroller.oDefaults, oOpts ); - - // Workaround for row height being read from height object (see above comment) - this.s.heights.row = this.s.rowHeight; - - /** - * DOM elements used by the class instance - * @private - * @namespace - * - */ - this.dom = { - "force": document.createElement('div'), - "scroller": null, - "table": null, - "loader": null - }; - - /* Attach the instance to the DataTables instance so it can be accessed */ - this.s.dt.oScroller = this; - - /* Let's do it */ - this._fnConstruct(); -}; - - - -Scroller.prototype = /** @lends Scroller.prototype */{ - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Public methods - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - /** - * Calculate the pixel position from the top of the scrolling container for - * a given row - * @param {int} iRow Row number to calculate the position of - * @returns {int} Pixels - * @example - * $(document).ready(function() { - * $('#example').dataTable( { - * "sScrollY": "200px", - * "sAjaxSource": "media/dataset/large.txt", - * "sDom": "frtiS", - * "bDeferRender": true, - * "fnInitComplete": function (o) { - * // Find where row 25 is - * alert( o.oScroller.fnRowToPixels( 25 ) ); - * } - * } ); - * } ); - */ - "fnRowToPixels": function ( rowIdx, intParse, virtual ) - { - var pixels; - - if ( virtual ) { - pixels = this._domain( 'virtualToPhysical', rowIdx * this.s.heights.row ); - } - else { - var diff = rowIdx - this.s.baseRowTop; - pixels = this.s.baseScrollTop + (diff * this.s.heights.row); - } - - return intParse || intParse === undefined ? - parseInt( pixels, 10 ) : - pixels; - }, - - - /** - * Calculate the row number that will be found at the given pixel position - * (y-scroll). - * - * Please note that when the height of the full table exceeds 1 million - * pixels, Scroller switches into a non-linear mode for the scrollbar to fit - * all of the records into a finite area, but this function returns a linear - * value (relative to the last non-linear positioning). - * @param {int} iPixels Offset from top to calculate the row number of - * @param {int} [intParse=true] If an integer value should be returned - * @param {int} [virtual=false] Perform the calculations in the virtual domain - * @returns {int} Row index - * @example - * $(document).ready(function() { - * $('#example').dataTable( { - * "sScrollY": "200px", - * "sAjaxSource": "media/dataset/large.txt", - * "sDom": "frtiS", - * "bDeferRender": true, - * "fnInitComplete": function (o) { - * // Find what row number is at 500px - * alert( o.oScroller.fnPixelsToRow( 500 ) ); - * } - * } ); - * } ); - */ - "fnPixelsToRow": function ( pixels, intParse, virtual ) - { - var diff = pixels - this.s.baseScrollTop; - var row = virtual ? - this._domain( 'physicalToVirtual', pixels ) / this.s.heights.row : - ( diff / this.s.heights.row ) + this.s.baseRowTop; - - return intParse || intParse === undefined ? - parseInt( row, 10 ) : - row; - }, - - - /** - * Calculate the row number that will be found at the given pixel position (y-scroll) - * @param {int} iRow Row index to scroll to - * @param {bool} [bAnimate=true] Animate the transition or not - * @returns {void} - * @example - * $(document).ready(function() { - * $('#example').dataTable( { - * "sScrollY": "200px", - * "sAjaxSource": "media/dataset/large.txt", - * "sDom": "frtiS", - * "bDeferRender": true, - * "fnInitComplete": function (o) { - * // Immediately scroll to row 1000 - * o.oScroller.fnScrollToRow( 1000 ); - * } - * } ); - * - * // Sometime later on use the following to scroll to row 500... - * var oSettings = $('#example').dataTable().fnSettings(); - * oSettings.oScroller.fnScrollToRow( 500 ); - * } ); - */ - "fnScrollToRow": function ( iRow, bAnimate ) - { - var that = this; - var ani = false; - var px = this.fnRowToPixels( iRow ); - - // We need to know if the table will redraw or not before doing the - // scroll. If it will not redraw, then we need to use the currently - // displayed table, and scroll with the physical pixels. Otherwise, we - // need to calculate the table's new position from the virtual - // transform. - var preRows = ((this.s.displayBuffer-1)/2) * this.s.viewportRows; - var drawRow = iRow - preRows; - if ( drawRow < 0 ) { - drawRow = 0; - } - - if ( (px > this.s.redrawBottom || px < this.s.redrawTop) && this.s.dt._iDisplayStart !== drawRow ) { - ani = true; - px = this.fnRowToPixels( iRow, false, true ); - } - - if ( typeof bAnimate == 'undefined' || bAnimate ) - { - this.s.ani = ani; - $(this.dom.scroller).animate( { - "scrollTop": px - }, function () { - // This needs to happen after the animation has completed and - // the final scroll event fired - setTimeout( function () { - that.s.ani = false; - }, 25 ); - } ); - } - else - { - $(this.dom.scroller).scrollTop( px ); - } - }, - - - /** - * Calculate and store information about how many rows are to be displayed - * in the scrolling viewport, based on current dimensions in the browser's - * rendering. This can be particularly useful if the table is initially - * drawn in a hidden element - for example in a tab. - * @param {bool} [bRedraw=true] Redraw the table automatically after the recalculation, with - * the new dimensions forming the basis for the draw. - * @returns {void} - * @example - * $(document).ready(function() { - * // Make the example container hidden to throw off the browser's sizing - * document.getElementById('container').style.display = "none"; - * var oTable = $('#example').dataTable( { - * "sScrollY": "200px", - * "sAjaxSource": "media/dataset/large.txt", - * "sDom": "frtiS", - * "bDeferRender": true, - * "fnInitComplete": function (o) { - * // Immediately scroll to row 1000 - * o.oScroller.fnScrollToRow( 1000 ); - * } - * } ); - * - * setTimeout( function () { - * // Make the example container visible and recalculate the scroller sizes - * document.getElementById('container').style.display = "block"; - * oTable.fnSettings().oScroller.fnMeasure(); - * }, 3000 ); - */ - "fnMeasure": function ( bRedraw ) - { - if ( this.s.autoHeight ) - { - this._fnCalcRowHeight(); - } - - var heights = this.s.heights; - - heights.viewport = $(this.dom.scroller).height(); - this.s.viewportRows = parseInt( heights.viewport / heights.row, 10 )+1; - this.s.dt._iDisplayLength = this.s.viewportRows * this.s.displayBuffer; - - if ( bRedraw === undefined || bRedraw ) - { - this.s.dt.oInstance.fnDraw(); - } - }, - - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Private methods (they are of course public in JS, but recommended as private) - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - /** - * Initialisation for Scroller - * @returns {void} - * @private - */ - "_fnConstruct": function () - { - var that = this; - - /* Sanity check */ - if ( !this.s.dt.oFeatures.bPaginate ) { - this.s.dt.oApi._fnLog( this.s.dt, 0, 'Pagination must be enabled for Scroller' ); - return; - } - - /* Insert a div element that we can use to force the DT scrolling container to - * the height that would be required if the whole table was being displayed - */ - this.dom.force.style.position = "absolute"; - this.dom.force.style.top = "0px"; - this.dom.force.style.left = "0px"; - this.dom.force.style.width = "1px"; - - this.dom.scroller = $('div.'+this.s.dt.oClasses.sScrollBody, this.s.dt.nTableWrapper)[0]; - this.dom.scroller.appendChild( this.dom.force ); - this.dom.scroller.style.position = "relative"; - - this.dom.table = $('>table', this.dom.scroller)[0]; - this.dom.table.style.position = "absolute"; - this.dom.table.style.top = "0px"; - this.dom.table.style.left = "0px"; - - // Add class to 'announce' that we are a Scroller table - $(this.s.dt.nTableWrapper).addClass('DTS'); - - // Add a 'loading' indicator - if ( this.s.loadingIndicator ) - { - this.dom.loader = $('<div class="DTS_Loading">'+this.s.dt.oLanguage.sLoadingRecords+'</div>') - .css('display', 'none'); - - $(this.dom.scroller.parentNode) - .css('position', 'relative') - .append( this.dom.loader ); - } - - /* Initial size calculations */ - if ( this.s.heights.row && this.s.heights.row != 'auto' ) - { - this.s.autoHeight = false; - } - this.fnMeasure( false ); - - /* Scrolling callback to see if a page change is needed - use a throttled - * function for the save save callback so we aren't hitting it on every - * scroll - */ - this.s.ingnoreScroll = true; - this.s.stateSaveThrottle = this.s.dt.oApi._fnThrottle( function () { - that.s.dt.oApi._fnSaveState( that.s.dt ); - }, 500 ); - $(this.dom.scroller).on( 'scroll.DTS', function (e) { - that._fnScroll.call( that ); - } ); - - /* In iOS we catch the touchstart event in case the user tries to scroll - * while the display is already scrolling - */ - $(this.dom.scroller).on('touchstart.DTS', function () { - that._fnScroll.call( that ); - } ); - - /* Update the scroller when the DataTable is redrawn */ - this.s.dt.aoDrawCallback.push( { - "fn": function () { - if ( that.s.dt.bInitialised ) { - that._fnDrawCallback.call( that ); - } - }, - "sName": "Scroller" - } ); - - /* On resize, update the information element, since the number of rows shown might change */ - $(window).on( 'resize.DTS', function () { - that.fnMeasure( false ); - that._fnInfo(); - } ); - - /* Add a state saving parameter to the DT state saving so we can restore the exact - * position of the scrolling - */ - var initialStateSave = true; - this.s.dt.oApi._fnCallbackReg( this.s.dt, 'aoStateSaveParams', function (oS, oData) { - /* Set iScroller to saved scroll position on initialization. - */ - if(initialStateSave && that.s.dt.oLoadedState){ - oData.iScroller = that.s.dt.oLoadedState.iScroller; - oData.iScrollerTopRow = that.s.dt.oLoadedState.iScrollerTopRow; - initialStateSave = false; - } else { - oData.iScroller = that.dom.scroller.scrollTop; - oData.iScrollerTopRow = that.s.topRowFloat; - } - }, "Scroller_State" ); - - if ( this.s.dt.oLoadedState ) { - this.s.topRowFloat = this.s.dt.oLoadedState.iScrollerTopRow || 0; - } - - /* Destructor */ - this.s.dt.aoDestroyCallback.push( { - "sName": "Scroller", - "fn": function () { - $(window).off( 'resize.DTS' ); - $(that.dom.scroller).off('touchstart.DTS scroll.DTS'); - $(that.s.dt.nTableWrapper).removeClass('DTS'); - $('div.DTS_Loading', that.dom.scroller.parentNode).remove(); - - that.dom.table.style.position = ""; - that.dom.table.style.top = ""; - that.dom.table.style.left = ""; - } - } ); - }, - - - /** - * Scrolling function - fired whenever the scrolling position is changed. - * This method needs to use the stored values to see if the table should be - * redrawn as we are moving towards the end of the information that is - * currently drawn or not. If needed, then it will redraw the table based on - * the new position. - * @returns {void} - * @private - */ - "_fnScroll": function () - { - var - that = this, - heights = this.s.heights, - iScrollTop = this.dom.scroller.scrollTop, - iTopRow; - - if ( this.s.skip ) { - return; - } - - if ( this.s.ingnoreScroll ) { - return; - } - - /* If the table has been sorted or filtered, then we use the redraw that - * DataTables as done, rather than performing our own - */ - if ( this.s.dt.bFiltered || this.s.dt.bSorted ) { - this.s.lastScrollTop = 0; - return; - } - - /* Update the table's information display for what is now in the viewport */ - this._fnInfo(); - - /* We don't want to state save on every scroll event - that's heavy - * handed, so use a timeout to update the state saving only when the - * scrolling has finished - */ - clearTimeout( this.s.stateTO ); - this.s.stateTO = setTimeout( function () { - that.s.dt.oApi._fnSaveState( that.s.dt ); - }, 250 ); - - /* Check if the scroll point is outside the trigger boundary which would required - * a DataTables redraw - */ - if ( iScrollTop < this.s.redrawTop || iScrollTop > this.s.redrawBottom ) { - var preRows = Math.ceil( ((this.s.displayBuffer-1)/2) * this.s.viewportRows ); - - if ( Math.abs( iScrollTop - this.s.lastScrollTop ) > heights.viewport || this.s.ani ) { - iTopRow = parseInt(this._domain( 'physicalToVirtual', iScrollTop ) / heights.row, 10) - preRows; - this.s.topRowFloat = (this._domain( 'physicalToVirtual', iScrollTop ) / heights.row); - } - else { - iTopRow = this.fnPixelsToRow( iScrollTop ) - preRows; - this.s.topRowFloat = this.fnPixelsToRow( iScrollTop, false ); - } - - if ( iTopRow <= 0 ) { - /* At the start of the table */ - iTopRow = 0; - } - else if ( iTopRow + this.s.dt._iDisplayLength > this.s.dt.fnRecordsDisplay() ) { - /* At the end of the table */ - iTopRow = this.s.dt.fnRecordsDisplay() - this.s.dt._iDisplayLength; - if ( iTopRow < 0 ) { - iTopRow = 0; - } - } - else if ( iTopRow % 2 !== 0 ) { - // For the row-striping classes (odd/even) we want only to start - // on evens otherwise the stripes will change between draws and - // look rubbish - iTopRow++; - } - - if ( iTopRow != this.s.dt._iDisplayStart ) { - /* Cache the new table position for quick lookups */ - this.s.tableTop = $(this.s.dt.nTable).offset().top; - this.s.tableBottom = $(this.s.dt.nTable).height() + this.s.tableTop; - - var draw = function () { - if ( that.s.scrollDrawReq === null ) { - that.s.scrollDrawReq = iScrollTop; - } - - that.s.dt._iDisplayStart = iTopRow; - if ( that.s.dt.oApi._fnCalculateEnd ) { // Removed in 1.10 - that.s.dt.oApi._fnCalculateEnd( that.s.dt ); - } - that.s.dt.oApi._fnDraw( that.s.dt ); - }; - - /* Do the DataTables redraw based on the calculated start point - note that when - * using server-side processing we introduce a small delay to not DoS the server... - */ - if ( this.s.dt.oFeatures.bServerSide ) { - clearTimeout( this.s.drawTO ); - this.s.drawTO = setTimeout( draw, this.s.serverWait ); - } - else { - draw(); - } - - if ( this.dom.loader && ! this.s.loaderVisible ) { - this.dom.loader.css( 'display', 'block' ); - this.s.loaderVisible = true; - } - } - } - - this.s.lastScrollTop = iScrollTop; - this.s.stateSaveThrottle(); - }, - - - /** - * Convert from one domain to another. The physical domain is the actual - * pixel count on the screen, while the virtual is if we had browsers which - * had scrolling containers of infinite height (i.e. the absolute value) - * - * @param {string} dir Domain transform direction, `virtualToPhysical` or - * `physicalToVirtual` - * @returns {number} Calculated transform - * @private - */ - _domain: function ( dir, val ) - { - var heights = this.s.heights; - var coeff; - - // If the virtual and physical height match, then we use a linear - // transform between the two, allowing the scrollbar to be linear - if ( heights.virtual === heights.scroll ) { - coeff = (heights.virtual-heights.viewport) / (heights.scroll-heights.viewport); - - if ( dir === 'virtualToPhysical' ) { - return val / coeff; - } - else if ( dir === 'physicalToVirtual' ) { - return val * coeff; - } - } - - // Otherwise, we want a non-linear scrollbar to take account of the - // redrawing regions at the start and end of the table, otherwise these - // can stutter badly - on large tables 30px (for example) scroll might - // be hundreds of rows, so the table would be redrawing every few px at - // the start and end. Use a simple quadratic to stop this. It does mean - // the scrollbar is non-linear, but with such massive data sets, the - // scrollbar is going to be a best guess anyway - var xMax = (heights.scroll - heights.viewport) / 2; - var yMax = (heights.virtual - heights.viewport) / 2; - - coeff = yMax / ( xMax * xMax ); - - if ( dir === 'virtualToPhysical' ) { - if ( val < yMax ) { - return Math.pow(val / coeff, 0.5); - } - else { - val = (yMax*2) - val; - return val < 0 ? - heights.scroll : - (xMax*2) - Math.pow(val / coeff, 0.5); - } - } - else if ( dir === 'physicalToVirtual' ) { - if ( val < xMax ) { - return val * val * coeff; - } - else { - val = (xMax*2) - val; - return val < 0 ? - heights.virtual : - (yMax*2) - (val * val * coeff); - } - } - }, - - - /** - * Draw callback function which is fired when the DataTable is redrawn. The main function of - * this method is to position the drawn table correctly the scrolling container for the rows - * that is displays as a result of the scrolling position. - * @returns {void} - * @private - */ - "_fnDrawCallback": function () - { - var - that = this, - heights = this.s.heights, - iScrollTop = this.dom.scroller.scrollTop, - iActualScrollTop = iScrollTop, - iScrollBottom = iScrollTop + heights.viewport, - iTableHeight = $(this.s.dt.nTable).height(), - displayStart = this.s.dt._iDisplayStart, - displayLen = this.s.dt._iDisplayLength, - displayEnd = this.s.dt.fnRecordsDisplay(); - - // Disable the scroll event listener while we are updating the DOM - this.s.skip = true; - - // Resize the scroll forcing element - this._fnScrollForce(); - - // Reposition the scrolling for the updated virtual position if needed - if ( displayStart === 0 ) { - // Linear calculation at the top of the table - iScrollTop = this.s.topRowFloat * heights.row; - } - else if ( displayStart + displayLen >= displayEnd ) { - // Linear calculation that the bottom as well - iScrollTop = heights.scroll - ((displayEnd - this.s.topRowFloat) * heights.row); - } - else { - // Domain scaled in the middle - iScrollTop = this._domain( 'virtualToPhysical', this.s.topRowFloat * heights.row ); - } - - this.dom.scroller.scrollTop = iScrollTop; - - // Store positional information so positional calculations can be based - // upon the current table draw position - this.s.baseScrollTop = iScrollTop; - this.s.baseRowTop = this.s.topRowFloat; - - // Position the table in the virtual scroller - var tableTop = iScrollTop - ((this.s.topRowFloat - displayStart) * heights.row); - if ( displayStart === 0 ) { - tableTop = 0; - } - else if ( displayStart + displayLen >= displayEnd ) { - tableTop = heights.scroll - iTableHeight; - } - - this.dom.table.style.top = tableTop+'px'; - - /* Cache some information for the scroller */ - this.s.tableTop = tableTop; - this.s.tableBottom = iTableHeight + this.s.tableTop; - - // Calculate the boundaries for where a redraw will be triggered by the - // scroll event listener - var boundaryPx = (iScrollTop - this.s.tableTop) * this.s.boundaryScale; - this.s.redrawTop = iScrollTop - boundaryPx; - this.s.redrawBottom = iScrollTop + boundaryPx; - - this.s.skip = false; - - // Restore the scrolling position that was saved by DataTable's state - // saving Note that this is done on the second draw when data is Ajax - // sourced, and the first draw when DOM soured - if ( this.s.dt.oFeatures.bStateSave && this.s.dt.oLoadedState !== null && - typeof this.s.dt.oLoadedState.iScroller != 'undefined' ) - { - // A quirk of DataTables is that the draw callback will occur on an - // empty set if Ajax sourced, but not if server-side processing. - var ajaxSourced = (this.s.dt.sAjaxSource || that.s.dt.ajax) && ! this.s.dt.oFeatures.bServerSide ? - true : - false; - - if ( ( ajaxSourced && this.s.dt.iDraw == 2) || - (!ajaxSourced && this.s.dt.iDraw == 1) ) - { - setTimeout( function () { - $(that.dom.scroller).scrollTop( that.s.dt.oLoadedState.iScroller ); - that.s.redrawTop = that.s.dt.oLoadedState.iScroller - (heights.viewport/2); - - // In order to prevent layout thrashing we need another - // small delay - setTimeout( function () { - that.s.ingnoreScroll = false; - }, 0 ); - }, 0 ); - } - } - else { - that.s.ingnoreScroll = false; - } - - // Because of the order of the DT callbacks, the info update will - // take precedence over the one we want here. So a 'thread' break is - // needed - setTimeout( function () { - that._fnInfo.call( that ); - }, 0 ); - - // Hide the loading indicator - if ( this.dom.loader && this.s.loaderVisible ) { - this.dom.loader.css( 'display', 'none' ); - this.s.loaderVisible = false; - } - }, - - - /** - * Force the scrolling container to have height beyond that of just the - * table that has been drawn so the user can scroll the whole data set. - * - * Note that if the calculated required scrolling height exceeds a maximum - * value (1 million pixels - hard-coded) the forcing element will be set - * only to that maximum value and virtual / physical domain transforms will - * be used to allow Scroller to display tables of any number of records. - * @returns {void} - * @private - */ - _fnScrollForce: function () - { - var heights = this.s.heights; - var max = 1000000; - - heights.virtual = heights.row * this.s.dt.fnRecordsDisplay(); - heights.scroll = heights.virtual; - - if ( heights.scroll > max ) { - heights.scroll = max; - } - - this.dom.force.style.height = heights.scroll+"px"; - }, - - - /** - * Automatic calculation of table row height. This is just a little tricky here as using - * initialisation DataTables has tale the table out of the document, so we need to create - * a new table and insert it into the document, calculate the row height and then whip the - * table out. - * @returns {void} - * @private - */ - "_fnCalcRowHeight": function () - { - var dt = this.s.dt; - var origTable = dt.nTable; - var nTable = origTable.cloneNode( false ); - var tbody = $('<tbody/>').appendTo( nTable ); - var container = $( - '<div class="'+dt.oClasses.sWrapper+' DTS">'+ - '<div class="'+dt.oClasses.sScrollWrapper+'">'+ - '<div class="'+dt.oClasses.sScrollBody+'"></div>'+ - '</div>'+ - '</div>' - ); - - // Want 3 rows in the sizing table so :first-child and :last-child - // CSS styles don't come into play - take the size of the middle row - $('tbody tr:lt(4)', origTable).clone().appendTo( tbody ); - while( $('tr', tbody).length < 3 ) { - tbody.append( '<tr><td>&nbsp;</td></tr>' ); - } - - $('div.'+dt.oClasses.sScrollBody, container).append( nTable ); - - var appendTo; - if (dt._bInitComplete) { - appendTo = origTable.parentNode; - } else { - if (!this.s.dt.nHolding) { - this.s.dt.nHolding = $( '<div></div>' ).insertBefore( this.s.dt.nTable ); - } - appendTo = this.s.dt.nHolding; - } - - container.appendTo( appendTo ); - this.s.heights.row = $('tr', tbody).eq(1).outerHeight(); - container.remove(); - }, - - - /** - * Update any information elements that are controlled by the DataTable based on the scrolling - * viewport and what rows are visible in it. This function basically acts in the same way as - * _fnUpdateInfo in DataTables, and effectively replaces that function. - * @returns {void} - * @private - */ - "_fnInfo": function () - { - if ( !this.s.dt.oFeatures.bInfo ) - { - return; - } - - var - dt = this.s.dt, - language = dt.oLanguage, - iScrollTop = this.dom.scroller.scrollTop, - iStart = Math.floor( this.fnPixelsToRow(iScrollTop, false, this.s.ani)+1 ), - iMax = dt.fnRecordsTotal(), - iTotal = dt.fnRecordsDisplay(), - iPossibleEnd = Math.ceil( this.fnPixelsToRow(iScrollTop+this.s.heights.viewport, false, this.s.ani) ), - iEnd = iTotal < iPossibleEnd ? iTotal : iPossibleEnd, - sStart = dt.fnFormatNumber( iStart ), - sEnd = dt.fnFormatNumber( iEnd ), - sMax = dt.fnFormatNumber( iMax ), - sTotal = dt.fnFormatNumber( iTotal ), - sOut; - - if ( dt.fnRecordsDisplay() === 0 && - dt.fnRecordsDisplay() == dt.fnRecordsTotal() ) - { - /* Empty record set */ - sOut = language.sInfoEmpty+ language.sInfoPostFix; - } - else if ( dt.fnRecordsDisplay() === 0 ) - { - /* Empty record set after filtering */ - sOut = language.sInfoEmpty +' '+ - language.sInfoFiltered.replace('_MAX_', sMax)+ - language.sInfoPostFix; - } - else if ( dt.fnRecordsDisplay() == dt.fnRecordsTotal() ) - { - /* Normal record set */ - sOut = language.sInfo. - replace('_START_', sStart). - replace('_END_', sEnd). - replace('_MAX_', sMax). - replace('_TOTAL_', sTotal)+ - language.sInfoPostFix; - } - else - { - /* Record set after filtering */ - sOut = language.sInfo. - replace('_START_', sStart). - replace('_END_', sEnd). - replace('_MAX_', sMax). - replace('_TOTAL_', sTotal) +' '+ - language.sInfoFiltered.replace( - '_MAX_', - dt.fnFormatNumber(dt.fnRecordsTotal()) - )+ - language.sInfoPostFix; - } - - var callback = language.fnInfoCallback; - if ( callback ) { - sOut = callback.call( dt.oInstance, - dt, iStart, iEnd, iMax, iTotal, sOut - ); - } - - var n = dt.aanFeatures.i; - if ( typeof n != 'undefined' ) - { - for ( var i=0, iLen=n.length ; i<iLen ; i++ ) - { - $(n[i]).html( sOut ); - } - } - } -}; - - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Statics - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - -/** - * Scroller default settings for initialisation - * @namespace - * @name Scroller.defaults - * @static - */ -Scroller.defaults = /** @lends Scroller.defaults */{ - /** - * Indicate if Scroller show show trace information on the console or not. This can be - * useful when debugging Scroller or if just curious as to what it is doing, but should - * be turned off for production. - * @type bool - * @default false - * @static - * @example - * var oTable = $('#example').dataTable( { - * "sScrollY": "200px", - * "sDom": "frtiS", - * "bDeferRender": true, - * "oScroller": { - * "trace": true - * } - * } ); - */ - "trace": false, - - /** - * Scroller will attempt to automatically calculate the height of rows for it's internal - * calculations. However the height that is used can be overridden using this parameter. - * @type int|string - * @default auto - * @static - * @example - * var oTable = $('#example').dataTable( { - * "sScrollY": "200px", - * "sDom": "frtiS", - * "bDeferRender": true, - * "oScroller": { - * "rowHeight": 30 - * } - * } ); - */ - "rowHeight": "auto", - - /** - * When using server-side processing, Scroller will wait a small amount of time to allow - * the scrolling to finish before requesting more data from the server. This prevents - * you from DoSing your own server! The wait time can be configured by this parameter. - * @type int - * @default 200 - * @static - * @example - * var oTable = $('#example').dataTable( { - * "sScrollY": "200px", - * "sDom": "frtiS", - * "bDeferRender": true, - * "oScroller": { - * "serverWait": 100 - * } - * } ); - */ - "serverWait": 200, - - /** - * The display buffer is what Scroller uses to calculate how many rows it should pre-fetch - * for scrolling. Scroller automatically adjusts DataTables' display length to pre-fetch - * rows that will be shown in "near scrolling" (i.e. just beyond the current display area). - * The value is based upon the number of rows that can be displayed in the viewport (i.e. - * a value of 1), and will apply the display range to records before before and after the - * current viewport - i.e. a factor of 3 will allow Scroller to pre-fetch 1 viewport's worth - * of rows before the current viewport, the current viewport's rows and 1 viewport's worth - * of rows after the current viewport. Adjusting this value can be useful for ensuring - * smooth scrolling based on your data set. - * @type int - * @default 7 - * @static - * @example - * var oTable = $('#example').dataTable( { - * "sScrollY": "200px", - * "sDom": "frtiS", - * "bDeferRender": true, - * "oScroller": { - * "displayBuffer": 10 - * } - * } ); - */ - "displayBuffer": 9, - - /** - * Scroller uses the boundary scaling factor to decide when to redraw the table - which it - * typically does before you reach the end of the currently loaded data set (in order to - * allow the data to look continuous to a user scrolling through the data). If given as 0 - * then the table will be redrawn whenever the viewport is scrolled, while 1 would not - * redraw the table until the currently loaded data has all been shown. You will want - * something in the middle - the default factor of 0.5 is usually suitable. - * @type float - * @default 0.5 - * @static - * @example - * var oTable = $('#example').dataTable( { - * "sScrollY": "200px", - * "sDom": "frtiS", - * "bDeferRender": true, - * "oScroller": { - * "boundaryScale": 0.75 - * } - * } ); - */ - "boundaryScale": 0.5, - - /** - * Show (or not) the loading element in the background of the table. Note that you should - * include the dataTables.scroller.css file for this to be displayed correctly. - * @type boolean - * @default false - * @static - * @example - * var oTable = $('#example').dataTable( { - * "sScrollY": "200px", - * "sDom": "frtiS", - * "bDeferRender": true, - * "oScroller": { - * "loadingIndicator": true - * } - * } ); - */ - "loadingIndicator": false -}; - -Scroller.oDefaults = Scroller.defaults; - - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Constants - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/** - * Scroller version - * @type String - * @default See code - * @name Scroller.version - * @static - */ -Scroller.version = "1.2.2"; - - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Initialisation - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* - * Register a new feature with DataTables - */ -if ( typeof $.fn.dataTable == "function" && - typeof $.fn.dataTableExt.fnVersionCheck == "function" && - $.fn.dataTableExt.fnVersionCheck('1.9.0') ) -{ - $.fn.dataTableExt.aoFeatures.push( { - "fnInit": function( oDTSettings ) { - var init = oDTSettings.oInit; - var opts = init.scroller || init.oScroller || {}; - var oScroller = new Scroller( oDTSettings, opts ); - return oScroller.dom.wrapper; - }, - "cFeature": "S", - "sFeature": "Scroller" - } ); -} -else -{ - alert( "Warning: Scroller requires DataTables 1.9.0 or greater - www.datatables.net/download"); -} - - -// Attach Scroller to DataTables so it can be accessed as an 'extra' -$.fn.dataTable.Scroller = Scroller; -$.fn.DataTable.Scroller = Scroller; - - -// DataTables 1.10 API method aliases -if ( $.fn.dataTable.Api ) { - var Api = $.fn.dataTable.Api; - - Api.register( 'scroller()', function () { - return this; - } ); - - Api.register( 'scroller().rowToPixels()', function ( rowIdx, intParse, virtual ) { - var ctx = this.context; - - if ( ctx.length && ctx[0].oScroller ) { - return ctx[0].oScroller.fnRowToPixels( rowIdx, intParse, virtual ); - } - // undefined - } ); - - Api.register( 'scroller().pixelsToRow()', function ( pixels, intParse, virtual ) { - var ctx = this.context; - - if ( ctx.length && ctx[0].oScroller ) { - return ctx[0].oScroller.fnPixelsToRow( pixels, intParse, virtual ); - } - // undefined - } ); - - Api.register( 'scroller().scrollToRow()', function ( row, ani ) { - this.iterator( 'table', function ( ctx ) { - if ( ctx.oScroller ) { - ctx.oScroller.fnScrollToRow( row, ani ); - } - } ); - - return this; - } ); - - Api.register( 'scroller().measure()', function ( redraw ) { - this.iterator( 'table', function ( ctx ) { - if ( ctx.oScroller ) { - ctx.oScroller.fnMeasure( redraw ); - } - } ); - - return this; - } ); -} - - -return Scroller; -}; // /factory - - -// Define as an AMD module if possible -if ( typeof define === 'function' && define.amd ) { - define( ['jquery', 'datatables'], factory ); -} -else if ( typeof exports === 'object' ) { - // Node/CommonJS - factory( require('jquery'), require('datatables') ); -} -else if ( jQuery && !jQuery.fn.dataTable.Scroller ) { - // Otherwise simply initialise as normal, stopping multiple evaluation - factory( jQuery, jQuery.fn.dataTable ); -} - - -})(window, document); - diff --git a/assets/plugins/datatables/extensions/Scroller/js/dataTables.scroller.min.js b/assets/plugins/datatables/extensions/Scroller/js/dataTables.scroller.min.js deleted file mode 100644 index d7aad08b..00000000 --- a/assets/plugins/datatables/extensions/Scroller/js/dataTables.scroller.min.js +++ /dev/null @@ -1,25 +0,0 @@ -/*! - Scroller 1.2.2 - ©2011-2014 SpryMedia Ltd - datatables.net/license -*/ -(function(m,n,k){var l=function(e){var g=function(a,b){!this instanceof g?alert("Scroller warning: Scroller must be initialised with the 'new' keyword."):("undefined"==typeof b&&(b={}),this.s={dt:a,tableTop:0,tableBottom:0,redrawTop:0,redrawBottom:0,autoHeight:!0,viewportRows:0,stateTO:null,drawTO:null,heights:{jump:null,page:null,virtual:null,scroll:null,row:null,viewport:null},topRowFloat:0,scrollDrawDiff:null,loaderVisible:!1},this.s=e.extend(this.s,g.oDefaults,b),this.s.heights.row=this.s.rowHeight, -this.dom={force:n.createElement("div"),scroller:null,table:null,loader:null},this.s.dt.oScroller=this,this._fnConstruct())};g.prototype={fnRowToPixels:function(a,b,c){a=c?this._domain("virtualToPhysical",a*this.s.heights.row):this.s.baseScrollTop+(a-this.s.baseRowTop)*this.s.heights.row;return b||b===k?parseInt(a,10):a},fnPixelsToRow:function(a,b,c){var d=a-this.s.baseScrollTop,a=c?this._domain("physicalToVirtual",a)/this.s.heights.row:d/this.s.heights.row+this.s.baseRowTop;return b||b===k?parseInt(a, -10):a},fnScrollToRow:function(a,b){var c=this,d=!1,f=this.fnRowToPixels(a),h=a-(this.s.displayBuffer-1)/2*this.s.viewportRows;0>h&&(h=0);if((f>this.s.redrawBottom||f<this.s.redrawTop)&&this.s.dt._iDisplayStart!==h)d=!0,f=this.fnRowToPixels(a,!1,!0);"undefined"==typeof b||b?(this.s.ani=d,e(this.dom.scroller).animate({scrollTop:f},function(){setTimeout(function(){c.s.ani=!1},25)})):e(this.dom.scroller).scrollTop(f)},fnMeasure:function(a){this.s.autoHeight&&this._fnCalcRowHeight();var b=this.s.heights; -b.viewport=e(this.dom.scroller).height();this.s.viewportRows=parseInt(b.viewport/b.row,10)+1;this.s.dt._iDisplayLength=this.s.viewportRows*this.s.displayBuffer;(a===k||a)&&this.s.dt.oInstance.fnDraw()},_fnConstruct:function(){var a=this;if(this.s.dt.oFeatures.bPaginate){this.dom.force.style.position="absolute";this.dom.force.style.top="0px";this.dom.force.style.left="0px";this.dom.force.style.width="1px";this.dom.scroller=e("div."+this.s.dt.oClasses.sScrollBody,this.s.dt.nTableWrapper)[0];this.dom.scroller.appendChild(this.dom.force); -this.dom.scroller.style.position="relative";this.dom.table=e(">table",this.dom.scroller)[0];this.dom.table.style.position="absolute";this.dom.table.style.top="0px";this.dom.table.style.left="0px";e(this.s.dt.nTableWrapper).addClass("DTS");this.s.loadingIndicator&&(this.dom.loader=e('<div class="DTS_Loading">'+this.s.dt.oLanguage.sLoadingRecords+"</div>").css("display","none"),e(this.dom.scroller.parentNode).css("position","relative").append(this.dom.loader));this.s.heights.row&&"auto"!=this.s.heights.row&& -(this.s.autoHeight=!1);this.fnMeasure(!1);this.s.ingnoreScroll=!0;this.s.stateSaveThrottle=this.s.dt.oApi._fnThrottle(function(){a.s.dt.oApi._fnSaveState(a.s.dt)},500);e(this.dom.scroller).on("scroll.DTS",function(){a._fnScroll.call(a)});e(this.dom.scroller).on("touchstart.DTS",function(){a._fnScroll.call(a)});this.s.dt.aoDrawCallback.push({fn:function(){a.s.dt.bInitialised&&a._fnDrawCallback.call(a)},sName:"Scroller"});e(m).on("resize.DTS",function(){a.fnMeasure(false);a._fnInfo()});var b=!0;this.s.dt.oApi._fnCallbackReg(this.s.dt, -"aoStateSaveParams",function(c,d){if(b&&a.s.dt.oLoadedState){d.iScroller=a.s.dt.oLoadedState.iScroller;d.iScrollerTopRow=a.s.dt.oLoadedState.iScrollerTopRow;b=false}else{d.iScroller=a.dom.scroller.scrollTop;d.iScrollerTopRow=a.s.topRowFloat}},"Scroller_State");this.s.dt.oLoadedState&&(this.s.topRowFloat=this.s.dt.oLoadedState.iScrollerTopRow||0);this.s.dt.aoDestroyCallback.push({sName:"Scroller",fn:function(){e(m).off("resize.DTS");e(a.dom.scroller).off("touchstart.DTS scroll.DTS");e(a.s.dt.nTableWrapper).removeClass("DTS"); -e("div.DTS_Loading",a.dom.scroller.parentNode).remove();a.dom.table.style.position="";a.dom.table.style.top="";a.dom.table.style.left=""}})}else this.s.dt.oApi._fnLog(this.s.dt,0,"Pagination must be enabled for Scroller")},_fnScroll:function(){var a=this,b=this.s.heights,c=this.dom.scroller.scrollTop,d;if(!this.s.skip&&!this.s.ingnoreScroll)if(this.s.dt.bFiltered||this.s.dt.bSorted)this.s.lastScrollTop=0;else{this._fnInfo();clearTimeout(this.s.stateTO);this.s.stateTO=setTimeout(function(){a.s.dt.oApi._fnSaveState(a.s.dt)}, -250);if(c<this.s.redrawTop||c>this.s.redrawBottom){var f=Math.ceil((this.s.displayBuffer-1)/2*this.s.viewportRows);Math.abs(c-this.s.lastScrollTop)>b.viewport||this.s.ani?(d=parseInt(this._domain("physicalToVirtual",c)/b.row,10)-f,this.s.topRowFloat=this._domain("physicalToVirtual",c)/b.row):(d=this.fnPixelsToRow(c)-f,this.s.topRowFloat=this.fnPixelsToRow(c,!1));0>=d?d=0:d+this.s.dt._iDisplayLength>this.s.dt.fnRecordsDisplay()?(d=this.s.dt.fnRecordsDisplay()-this.s.dt._iDisplayLength,0>d&&(d=0)): -0!==d%2&&d++;if(d!=this.s.dt._iDisplayStart&&(this.s.tableTop=e(this.s.dt.nTable).offset().top,this.s.tableBottom=e(this.s.dt.nTable).height()+this.s.tableTop,b=function(){if(a.s.scrollDrawReq===null)a.s.scrollDrawReq=c;a.s.dt._iDisplayStart=d;a.s.dt.oApi._fnCalculateEnd&&a.s.dt.oApi._fnCalculateEnd(a.s.dt);a.s.dt.oApi._fnDraw(a.s.dt)},this.s.dt.oFeatures.bServerSide?(clearTimeout(this.s.drawTO),this.s.drawTO=setTimeout(b,this.s.serverWait)):b(),this.dom.loader&&!this.s.loaderVisible))this.dom.loader.css("display", -"block"),this.s.loaderVisible=!0}this.s.lastScrollTop=c;this.s.stateSaveThrottle()}},_domain:function(a,b){var c=this.s.heights,d;if(c.virtual===c.scroll){d=(c.virtual-c.viewport)/(c.scroll-c.viewport);if("virtualToPhysical"===a)return b/d;if("physicalToVirtual"===a)return b*d}var e=(c.scroll-c.viewport)/2,h=(c.virtual-c.viewport)/2;d=h/(e*e);if("virtualToPhysical"===a){if(b<h)return Math.pow(b/d,0.5);b=2*h-b;return 0>b?c.scroll:2*e-Math.pow(b/d,0.5)}if("physicalToVirtual"===a){if(b<e)return b*b* -d;b=2*e-b;return 0>b?c.virtual:2*h-b*b*d}},_fnDrawCallback:function(){var a=this,b=this.s.heights,c=this.dom.scroller.scrollTop,d=e(this.s.dt.nTable).height(),f=this.s.dt._iDisplayStart,h=this.s.dt._iDisplayLength,g=this.s.dt.fnRecordsDisplay();this.s.skip=!0;this._fnScrollForce();c=0===f?this.s.topRowFloat*b.row:f+h>=g?b.scroll-(g-this.s.topRowFloat)*b.row:this._domain("virtualToPhysical",this.s.topRowFloat*b.row);this.dom.scroller.scrollTop=c;this.s.baseScrollTop=c;this.s.baseRowTop=this.s.topRowFloat; -var j=c-(this.s.topRowFloat-f)*b.row;0===f?j=0:f+h>=g&&(j=b.scroll-d);this.dom.table.style.top=j+"px";this.s.tableTop=j;this.s.tableBottom=d+this.s.tableTop;d=(c-this.s.tableTop)*this.s.boundaryScale;this.s.redrawTop=c-d;this.s.redrawBottom=c+d;this.s.skip=!1;this.s.dt.oFeatures.bStateSave&&null!==this.s.dt.oLoadedState&&"undefined"!=typeof this.s.dt.oLoadedState.iScroller?((c=(this.s.dt.sAjaxSource||a.s.dt.ajax)&&!this.s.dt.oFeatures.bServerSide?!0:!1)&&2==this.s.dt.iDraw||!c&&1==this.s.dt.iDraw)&& -setTimeout(function(){e(a.dom.scroller).scrollTop(a.s.dt.oLoadedState.iScroller);a.s.redrawTop=a.s.dt.oLoadedState.iScroller-b.viewport/2;setTimeout(function(){a.s.ingnoreScroll=!1},0)},0):a.s.ingnoreScroll=!1;setTimeout(function(){a._fnInfo.call(a)},0);this.dom.loader&&this.s.loaderVisible&&(this.dom.loader.css("display","none"),this.s.loaderVisible=!1)},_fnScrollForce:function(){var a=this.s.heights;a.virtual=a.row*this.s.dt.fnRecordsDisplay();a.scroll=a.virtual;1E6<a.scroll&&(a.scroll=1E6);this.dom.force.style.height= -a.scroll+"px"},_fnCalcRowHeight:function(){var a=this.s.dt,b=a.nTable,c=b.cloneNode(!1),d=e("<tbody/>").appendTo(c),f=e('<div class="'+a.oClasses.sWrapper+' DTS"><div class="'+a.oClasses.sScrollWrapper+'"><div class="'+a.oClasses.sScrollBody+'"></div></div></div>');for(e("tbody tr:lt(4)",b).clone().appendTo(d);3>e("tr",d).length;)d.append("<tr><td>&nbsp;</td></tr>");e("div."+a.oClasses.sScrollBody,f).append(c);a._bInitComplete?a=b.parentNode:(this.s.dt.nHolding||(this.s.dt.nHolding=e("<div></div>").insertBefore(this.s.dt.nTable)), -a=this.s.dt.nHolding);f.appendTo(a);this.s.heights.row=e("tr",d).eq(1).outerHeight();f.remove()},_fnInfo:function(){if(this.s.dt.oFeatures.bInfo){var a=this.s.dt,b=a.oLanguage,c=this.dom.scroller.scrollTop,d=Math.floor(this.fnPixelsToRow(c,!1,this.s.ani)+1),f=a.fnRecordsTotal(),h=a.fnRecordsDisplay(),c=Math.ceil(this.fnPixelsToRow(c+this.s.heights.viewport,!1,this.s.ani)),c=h<c?h:c,g=a.fnFormatNumber(d),j=a.fnFormatNumber(c),i=a.fnFormatNumber(f),k=a.fnFormatNumber(h),g=0===a.fnRecordsDisplay()&& -a.fnRecordsDisplay()==a.fnRecordsTotal()?b.sInfoEmpty+b.sInfoPostFix:0===a.fnRecordsDisplay()?b.sInfoEmpty+" "+b.sInfoFiltered.replace("_MAX_",i)+b.sInfoPostFix:a.fnRecordsDisplay()==a.fnRecordsTotal()?b.sInfo.replace("_START_",g).replace("_END_",j).replace("_MAX_",i).replace("_TOTAL_",k)+b.sInfoPostFix:b.sInfo.replace("_START_",g).replace("_END_",j).replace("_MAX_",i).replace("_TOTAL_",k)+" "+b.sInfoFiltered.replace("_MAX_",a.fnFormatNumber(a.fnRecordsTotal()))+b.sInfoPostFix;(b=b.fnInfoCallback)&& -(g=b.call(a.oInstance,a,d,c,f,h,g));a=a.aanFeatures.i;if("undefined"!=typeof a){d=0;for(f=a.length;d<f;d++)e(a[d]).html(g)}}}};g.defaults={trace:!1,rowHeight:"auto",serverWait:200,displayBuffer:9,boundaryScale:0.5,loadingIndicator:!1};g.oDefaults=g.defaults;g.version="1.2.2";"function"==typeof e.fn.dataTable&&"function"==typeof e.fn.dataTableExt.fnVersionCheck&&e.fn.dataTableExt.fnVersionCheck("1.9.0")?e.fn.dataTableExt.aoFeatures.push({fnInit:function(a){var b=a.oInit;return(new g(a,b.scroller|| -b.oScroller||{})).dom.wrapper},cFeature:"S",sFeature:"Scroller"}):alert("Warning: Scroller requires DataTables 1.9.0 or greater - www.datatables.net/download");e.fn.dataTable.Scroller=g;e.fn.DataTable.Scroller=g;if(e.fn.dataTable.Api){var i=e.fn.dataTable.Api;i.register("scroller()",function(){return this});i.register("scroller().rowToPixels()",function(a,b,c){var d=this.context;if(d.length&&d[0].oScroller)return d[0].oScroller.fnRowToPixels(a,b,c)});i.register("scroller().pixelsToRow()",function(a, -b,c){var d=this.context;if(d.length&&d[0].oScroller)return d[0].oScroller.fnPixelsToRow(a,b,c)});i.register("scroller().scrollToRow()",function(a,b){this.iterator("table",function(c){c.oScroller&&c.oScroller.fnScrollToRow(a,b)});return this});i.register("scroller().measure()",function(a){this.iterator("table",function(b){b.oScroller&&b.oScroller.fnMeasure(a)});return this})}return g};"function"===typeof define&&define.amd?define(["jquery","datatables"],l):"object"===typeof exports?l(require("jquery"), -require("datatables")):jQuery&&!jQuery.fn.dataTable.Scroller&&l(jQuery,jQuery.fn.dataTable)})(window,document); diff --git a/assets/plugins/datatables/extensions/TableTools/Readme.md b/assets/plugins/datatables/extensions/TableTools/Readme.md deleted file mode 100644 index d83ea9f5..00000000 --- a/assets/plugins/datatables/extensions/TableTools/Readme.md +++ /dev/null @@ -1,41 +0,0 @@ -# TableTools - -TableTools is a plug-in for the DataTables HTML table enhancer, which adds a highly customisable button toolbar to a DataTable. Key features include: - -* Copy to clipboard -* Save table data as CSV, XLS or PDF files -* Print view for clean printing -* Row selection options -* Easy use predefined buttons -* Simple customisation of buttons -* Well defined API for advanced control - - -# Installation - -To use TableTools, first download DataTables ( http://datatables.net/download ) and place the unzipped TableTools package into a `extensions` directory in the DataTables package (in DataTables 1.9- use the `extras` directory). This will allow the pages in the examples to operate correctly. To see the examples running, open the `examples` directory in your web-browser. - - -# Basic usage - -TableTools is initialised using the `T` option that it adds to DataTables' `dom` option. For example: - -```js -$(document).ready( function () { - $('#example').DataTable( { - dom: 'T<"clear">lfrtip' - } ); -} ); -``` - - -# Documentation / support - -* Documentation: http://datatables.net/extensions/tabletools/ -* DataTables support forums: http://datatables.net/forums - - -# GitHub - -If you fancy getting involved with the development of TableTools and help make it better, please refer to its GitHub repo: https://github.com/DataTables/TableTools - diff --git a/assets/plugins/datatables/extensions/TableTools/css/dataTables.tableTools.css b/assets/plugins/datatables/extensions/TableTools/css/dataTables.tableTools.css deleted file mode 100644 index c959b111..00000000 --- a/assets/plugins/datatables/extensions/TableTools/css/dataTables.tableTools.css +++ /dev/null @@ -1,361 +0,0 @@ -/* - * File: TableTools.css - * Description: Styles for TableTools 2 - * Author: Allan Jardine (www.sprymedia.co.uk) - * Language: Javascript - * License: GPL v2 / 3 point BSD - * Project: DataTables - * - * Copyright 2009-2012 Allan Jardine, all rights reserved. - * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * - * CSS name space: - * DTTT DataTables TableTools - * - * Style sheet provides: - * CONTAINER TableTools container element and styles applying to all components - * BUTTON_STYLES Action specific button styles - * SELECTING Row selection styles - * COLLECTIONS Drop down list (collection) styles - * PRINTING Print display styles - */ - - -/* - * CONTAINER - * TableTools container element and styles applying to all components - */ -div.DTTT_container { - position: relative; - float: right; - margin-bottom: 1em; -} - -@media screen and (max-width: 640px) { - div.DTTT_container { - float: none !important; - text-align: center; - } - - div.DTTT_container:after { - visibility: hidden; - display: block; - content: ""; - clear: both; - height: 0; - } -} - - -button.DTTT_button, -div.DTTT_button, -a.DTTT_button { - position: relative; - display: inline-block; - margin-right: 3px; - padding: 5px 8px; - border: 1px solid #999; - cursor: pointer; - *cursor: hand; - font-size: 0.88em; - color: black !important; - - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - -ms-border-radius: 2px; - -o-border-radius: 2px; - border-radius: 2px; - - -webkit-box-shadow: 1px 1px 3px #ccc; - -moz-box-shadow: 1px 1px 3px #ccc; - -ms-box-shadow: 1px 1px 3px #ccc; - -o-box-shadow: 1px 1px 3px #ccc; - box-shadow: 1px 1px 3px #ccc; - - /* Generated by http://www.colorzilla.com/gradient-editor/ */ - background: #ffffff; /* Old browsers */ - background: -webkit-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* Chrome10+,Safari5.1+ */ - background: -moz-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* FF3.6+ */ - background: -ms-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* IE10+ */ - background: -o-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* Opera 11.10+ */ - background: linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* W3C */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#f9f9f9',GradientType=0 ); /* IE6-9 */ -} - - -/* Buttons are cunning border-box sizing - we can't just use that for A and DIV due to IE6/7 */ -button.DTTT_button { - height: 30px; - padding: 3px 8px; -} - -.DTTT_button embed { - outline: none; -} - -button.DTTT_button:hover:not(.DTTT_disabled), -div.DTTT_button:hover:not(.DTTT_disabled), -a.DTTT_button:hover:not(.DTTT_disabled) { - border: 1px solid #666; - text-decoration: none !important; - - -webkit-box-shadow: 1px 1px 3px #999; - -moz-box-shadow: 1px 1px 3px #999; - -ms-box-shadow: 1px 1px 3px #999; - -o-box-shadow: 1px 1px 3px #999; - box-shadow: 1px 1px 3px #999; - - background: #f3f3f3; /* Old browsers */ - background: -webkit-linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* Chrome10+,Safari5.1+ */ - background: -moz-linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* FF3.6+ */ - background: -ms-linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* IE10+ */ - background: -o-linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* Opera 11.10+ */ - background: linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* W3C */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f3f3f3', endColorstr='#f4f4f4',GradientType=0 ); /* IE6-9 */ -} - -button.DTTT_button:focus, -div.DTTT_button:focus, -a.DTTT_button:focus { - border: 1px solid #426c9e; - text-shadow: 0 1px 0 #c4def1; - outline: none; - - background-color: #a3d0ef 100%; - background-image: -webkit-linear-gradient(top, #a3d0ef 0%, #79ace9 65%, #a3d0ef 100%); - background-image: -moz-linear-gradient(top, #a3d0ef 0%, #79ace9 65%, #a3d0ef 100%); - background-image: -ms-linear-gradient(top, #a3d0ef 0%, #79ace9 65%, #a3d0ef 100%); - background-image: -o-linear-gradient(top, #a3d0ef 0%, #79ace9 65%, #a3d0ef 100%); - background-image: linear-gradient(top, #a3d0ef 0%, #79ace9 65%, #a3d0ef 100%); - filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#a3d0ef', EndColorStr='#a3d0ef'); -} - -button.DTTT_button:active:not(.DTTT_disabled), -div.DTTT_button:active:not(.DTTT_disabled), -a.DTTT_button:active:not(.DTTT_disabled) { - -webkit-box-shadow: inset 1px 1px 3px #999999; - -moz-box-shadow: inset 1px 1px 3px #999999; - box-shadow: inset 1px 1px 3px #999999; -} - -button.DTTT_disabled, -div.DTTT_disabled, -a.DTTT_disabled { - color: #999 !important; - border: 1px solid #d0d0d0; - cursor: default; - background: #ffffff; /* Old browsers */ - background: -webkit-linear-gradient(top, #ffffff 0%,#f9f9f9 89%,#fafafa 100%); /* Chrome10+,Safari5.1+ */ - background: -moz-linear-gradient(top, #ffffff 0%,#f9f9f9 89%,#fafafa 100%); /* FF3.6+ */ - background: -ms-linear-gradient(top, #ffffff 0%,#f9f9f9 89%,#fafafa 100%); /* IE10+ */ - background: -o-linear-gradient(top, #ffffff 0%,#f9f9f9 89%,#fafafa 100%); /* Opera 11.10+ */ - background: linear-gradient(top, #ffffff 0%,#f9f9f9 89%,#fafafa 100%); /* W3C */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#fafafa',GradientType=0 ); /* IE6-9 */ -} - - - -/* - * BUTTON_STYLES - * Action specific button styles - * If you want images - comment this back in - -a.DTTT_button_csv, -a.DTTT_button_xls, -a.DTTT_button_copy, -a.DTTT_button_pdf, -a.DTTT_button_print { - padding-right: 0px; -} - -a.DTTT_button_csv span, -a.DTTT_button_xls span, -a.DTTT_button_copy span, -a.DTTT_button_pdf span, -a.DTTT_button_print span { - display: inline-block; - height: 24px; - line-height: 24px; - padding-right: 30px; -} - - -a.DTTT_button_csv span { background: url(../images/csv.png) no-repeat bottom right; } -a.DTTT_button_csv:hover span { background: url(../images/csv_hover.png) no-repeat center right; } - -a.DTTT_button_xls span { background: url(../images/xls.png) no-repeat center right; } -a.DTTT_button_xls:hover span { background: #f0f0f0 url(../images/xls_hover.png) no-repeat center right; } - -a.DTTT_button_copy span { background: url(../images/copy.png) no-repeat center right; } -a.DTTT_button_copy:hover span { background: #f0f0f0 url(../images/copy_hover.png) no-repeat center right; } - -a.DTTT_button_pdf span { background: url(../images/pdf.png) no-repeat center right; } -a.DTTT_button_pdf:hover span { background: #f0f0f0 url(../images/pdf_hover.png) no-repeat center right; } - -a.DTTT_button_print span { background: url(../images/print.png) no-repeat center right; } -a.DTTT_button_print:hover span { background: #f0f0f0 url(../images/print_hover.png) no-repeat center right; } - - */ - -button.DTTT_button_collection span { - padding-right: 17px; - background: url(../images/collection.png) no-repeat center right; -} - -button.DTTT_button_collection:hover span { - padding-right: 17px; - background: #f0f0f0 url(../images/collection_hover.png) no-repeat center right; -} - - -/* - * SELECTING - * Row selection styles - */ -table.DTTT_selectable tbody tr { - cursor: pointer; - *cursor: hand; -} - -table.dataTable tr.DTTT_selected.odd { - background-color: #9FAFD1; -} - -table.dataTable tr.DTTT_selected.odd td.sorting_1 { - background-color: #9FAFD1; -} - -table.dataTable tr.DTTT_selected.odd td.sorting_2 { - background-color: #9FAFD1; -} - -table.dataTable tr.DTTT_selected.odd td.sorting_3 { - background-color: #9FAFD1; -} - - -table.dataTable tr.DTTT_selected.even { - background-color: #B0BED9; -} - -table.dataTable tr.DTTT_selected.even td.sorting_1 { - background-color: #B0BED9; -} - -table.dataTable tr.DTTT_selected.even td.sorting_2 { - background-color: #B0BED9; -} - -table.dataTable tr.DTTT_selected.even td.sorting_3 { - background-color: #B0BED9; -} - - -/* - * COLLECTIONS - * Drop down list (collection) styles - */ - -div.DTTT_collection { - width: 150px; - padding: 8px 8px 4px 8px; - border: 1px solid #ccc; - border: 1px solid rgba( 0, 0, 0, 0.4 ); - background-color: #f3f3f3; - background-color: rgba( 255, 255, 255, 0.3 ); - overflow: hidden; - z-index: 2002; - - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - -ms-border-radius: 5px; - -o-border-radius: 5px; - border-radius: 5px; - - -webkit-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3); - -moz-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3); - -ms-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3); - -o-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3); - box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3); -} - -div.DTTT_collection_background { - background: black; - z-index: 2001; -} - -div.DTTT_collection button.DTTT_button, -div.DTTT_collection div.DTTT_button, -div.DTTT_collection a.DTTT_button { - position: relative; - left: 0; - right: 0; - - display: block; - float: none; - margin-bottom: 4px; - - -webkit-box-shadow: 1px 1px 3px #999; - -moz-box-shadow: 1px 1px 3px #999; - -ms-box-shadow: 1px 1px 3px #999; - -o-box-shadow: 1px 1px 3px #999; - box-shadow: 1px 1px 3px #999; -} - - -/* - * PRINTING - * Print display styles - */ - -.DTTT_print_info { - position: fixed; - top: 50%; - left: 50%; - width: 400px; - height: 150px; - margin-left: -200px; - margin-top: -75px; - text-align: center; - color: #333; - padding: 10px 30px; - - background: #ffffff; /* Old browsers */ - background: -webkit-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* Chrome10+,Safari5.1+ */ - background: -moz-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* FF3.6+ */ - background: -ms-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* IE10+ */ - background: -o-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* Opera 11.10+ */ - background: linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* W3C */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#f9f9f9',GradientType=0 ); /* IE6-9 */ - - opacity: 0.95; - - border: 1px solid black; - border: 1px solid rgba(0, 0, 0, 0.5); - - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - -ms-border-radius: 6px; - -o-border-radius: 6px; - border-radius: 6px; - - -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5); - -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5); - -ms-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5); - -o-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5); - box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5); -} - -.DTTT_print_info h6 { - font-weight: normal; - font-size: 28px; - line-height: 28px; - margin: 1em; -} - -.DTTT_print_info p { - font-size: 14px; - line-height: 20px; -} - diff --git a/assets/plugins/datatables/extensions/TableTools/css/dataTables.tableTools.min.css b/assets/plugins/datatables/extensions/TableTools/css/dataTables.tableTools.min.css deleted file mode 100644 index 61a89d52..00000000 --- a/assets/plugins/datatables/extensions/TableTools/css/dataTables.tableTools.min.css +++ /dev/null @@ -1 +0,0 @@ -div.DTTT_container{position:relative;float:right;margin-bottom:1em}@media screen and (max-width: 640px){div.DTTT_container{float:none !important;text-align:center}div.DTTT_container:after{visibility:hidden;display:block;content:"";clear:both;height:0}}button.DTTT_button,div.DTTT_button,a.DTTT_button{position:relative;display:inline-block;margin-right:3px;padding:5px 8px;border:1px solid #999;cursor:pointer;*cursor:hand;font-size:0.88em;color:black !important;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;-webkit-box-shadow:1px 1px 3px #ccc;-moz-box-shadow:1px 1px 3px #ccc;-ms-box-shadow:1px 1px 3px #ccc;-o-box-shadow:1px 1px 3px #ccc;box-shadow:1px 1px 3px #ccc;background:#ffffff;background:-webkit-linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);background:-moz-linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);background:-ms-linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);background:-o-linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);background:linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f9f9f9',GradientType=0 )}button.DTTT_button{height:30px;padding:3px 8px}.DTTT_button embed{outline:none}button.DTTT_button:hover:not(.DTTT_disabled),div.DTTT_button:hover:not(.DTTT_disabled),a.DTTT_button:hover:not(.DTTT_disabled){border:1px solid #666;text-decoration:none !important;-webkit-box-shadow:1px 1px 3px #999;-moz-box-shadow:1px 1px 3px #999;-ms-box-shadow:1px 1px 3px #999;-o-box-shadow:1px 1px 3px #999;box-shadow:1px 1px 3px #999;background:#f3f3f3;background:-webkit-linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%);background:-moz-linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%);background:-ms-linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%);background:-o-linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%);background:linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3f3f3', endColorstr='#f4f4f4',GradientType=0 )}button.DTTT_button:focus,div.DTTT_button:focus,a.DTTT_button:focus{border:1px solid #426c9e;text-shadow:0 1px 0 #c4def1;outline:none;background-color:#a3d0ef 100%;background-image:-webkit-linear-gradient(top, #a3d0ef 0%, #79ace9 65%, #a3d0ef 100%);background-image:-moz-linear-gradient(top, #a3d0ef 0%, #79ace9 65%, #a3d0ef 100%);background-image:-ms-linear-gradient(top, #a3d0ef 0%, #79ace9 65%, #a3d0ef 100%);background-image:-o-linear-gradient(top, #a3d0ef 0%, #79ace9 65%, #a3d0ef 100%);background-image:linear-gradient(top, #a3d0ef 0%, #79ace9 65%, #a3d0ef 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#a3d0ef', EndColorStr='#a3d0ef')}button.DTTT_button:active:not(.DTTT_disabled),div.DTTT_button:active:not(.DTTT_disabled),a.DTTT_button:active:not(.DTTT_disabled){-webkit-box-shadow:inset 1px 1px 3px #999999;-moz-box-shadow:inset 1px 1px 3px #999999;box-shadow:inset 1px 1px 3px #999999}button.DTTT_disabled,div.DTTT_disabled,a.DTTT_disabled{color:#999 !important;border:1px solid #d0d0d0;cursor:default;background:#ffffff;background:-webkit-linear-gradient(top, #fff 0%, #f9f9f9 89%, #fafafa 100%);background:-moz-linear-gradient(top, #fff 0%, #f9f9f9 89%, #fafafa 100%);background:-ms-linear-gradient(top, #fff 0%, #f9f9f9 89%, #fafafa 100%);background:-o-linear-gradient(top, #fff 0%, #f9f9f9 89%, #fafafa 100%);background:linear-gradient(top, #fff 0%, #f9f9f9 89%, #fafafa 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#fafafa',GradientType=0 )}button.DTTT_button_collection span{padding-right:17px;background:url(../images/collection.png) no-repeat center right}button.DTTT_button_collection:hover span{padding-right:17px;background:#f0f0f0 url(../images/collection_hover.png) no-repeat center right}table.DTTT_selectable tbody tr{cursor:pointer;*cursor:hand}table.dataTable tr.DTTT_selected.odd{background-color:#9FAFD1}table.dataTable tr.DTTT_selected.odd td.sorting_1{background-color:#9FAFD1}table.dataTable tr.DTTT_selected.odd td.sorting_2{background-color:#9FAFD1}table.dataTable tr.DTTT_selected.odd td.sorting_3{background-color:#9FAFD1}table.dataTable tr.DTTT_selected.even{background-color:#B0BED9}table.dataTable tr.DTTT_selected.even td.sorting_1{background-color:#B0BED9}table.dataTable tr.DTTT_selected.even td.sorting_2{background-color:#B0BED9}table.dataTable tr.DTTT_selected.even td.sorting_3{background-color:#B0BED9}div.DTTT_collection{width:150px;padding:8px 8px 4px 8px;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.4);background-color:#f3f3f3;background-color:rgba(255,255,255,0.3);overflow:hidden;z-index:2002;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;-webkit-box-shadow:3px 3px 5px rgba(0,0,0,0.3);-moz-box-shadow:3px 3px 5px rgba(0,0,0,0.3);-ms-box-shadow:3px 3px 5px rgba(0,0,0,0.3);-o-box-shadow:3px 3px 5px rgba(0,0,0,0.3);box-shadow:3px 3px 5px rgba(0,0,0,0.3)}div.DTTT_collection_background{background:black;z-index:2001}div.DTTT_collection button.DTTT_button,div.DTTT_collection div.DTTT_button,div.DTTT_collection a.DTTT_button{position:relative;left:0;right:0;display:block;float:none;margin-bottom:4px;-webkit-box-shadow:1px 1px 3px #999;-moz-box-shadow:1px 1px 3px #999;-ms-box-shadow:1px 1px 3px #999;-o-box-shadow:1px 1px 3px #999;box-shadow:1px 1px 3px #999}.DTTT_print_info{position:fixed;top:50%;left:50%;width:400px;height:150px;margin-left:-200px;margin-top:-75px;text-align:center;color:#333;padding:10px 30px;background:#ffffff;background:-webkit-linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);background:-moz-linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);background:-ms-linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);background:-o-linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);background:linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f9f9f9',GradientType=0 );opacity:0.95;border:1px solid black;border:1px solid rgba(0,0,0,0.5);-webkit-border-radius:6px;-moz-border-radius:6px;-ms-border-radius:6px;-o-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.5);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.5);-ms-box-shadow:0 3px 7px rgba(0,0,0,0.5);-o-box-shadow:0 3px 7px rgba(0,0,0,0.5);box-shadow:0 3px 7px rgba(0,0,0,0.5)}.DTTT_print_info h6{font-weight:normal;font-size:28px;line-height:28px;margin:1em}.DTTT_print_info p{font-size:14px;line-height:20px} diff --git a/assets/plugins/datatables/extensions/TableTools/examples/ajax.html b/assets/plugins/datatables/extensions/TableTools/examples/ajax.html deleted file mode 100644 index a37670a3..00000000 --- a/assets/plugins/datatables/extensions/TableTools/examples/ajax.html +++ /dev/null @@ -1,190 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>TableTools example - Ajax loaded data</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.tableTools.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.tableTools.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - $('#example').DataTable( { - dom: 'T<"clear">lfrtip', - "ajax": "../../../../examples/ajax/data/objects.txt", - "columns": [ - { "data": "name" }, - { "data": "position" }, - { "data": "office" }, - { "data": "extn" }, - { "data": "start_date" }, - { "data": "salary" } - ], - deferRender: true - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>TableTools example <span>Ajax loaded data</span></h1> - - <div class="info"> - <p>This TableTools example shows DataTables using its ability to <a href="//datatables.net/manual/data#Objects">Ajax load object based data</a> and operate in - exactly the same manner as when the data is read directly from the document.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Extn.</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Extn.</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').DataTable( { - dom: 'T&lt;&quot;clear&quot;&gt;lfrtip', - &quot;ajax&quot;: &quot;../../../../examples/ajax/data/objects.txt&quot;, - &quot;columns&quot;: [ - { &quot;data&quot;: &quot;name&quot; }, - { &quot;data&quot;: &quot;position&quot; }, - { &quot;data&quot;: &quot;office&quot; }, - { &quot;data&quot;: &quot;extn&quot; }, - { &quot;data&quot;: &quot;start_date&quot; }, - { &quot;data&quot;: &quot;salary&quot; } - ], - deferRender: true - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.tableTools.js">../js/dataTables.tableTools.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.tableTools.css">../css/dataTables.tableTools.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./swf_path.html">Setting the SWF path</a></li> - <li><a href="./new_init.html">Initialisation with `new`</a></li> - <li><a href="./defaults.html">Defaults</a></li> - <li><a href="./select_single.html">Row selection - single row select</a></li> - <li><a href="./select_multi.html">Row selection - multi-row select</a></li> - <li><a href="./select_os.html">Row selection - operating system style</a></li> - <li><a href="./select_column.html">Row selection - row selector on specific cells</a></li> - <li><a href="./multiple_tables.html">Multiple tables</a></li> - <li><a href="./multi_instance.html">Multiple toolbars</a></li> - <li><a href="./collection.html">Button collections</a></li> - <li><a href="./plug-in.html">Plug-in button types</a></li> - <li><a href="./button_text.html">Custom button text</a></li> - <li><a href="./alter_buttons.html">Button arrangement</a></li> - <li class="active"><a href="./ajax.html">Ajax loaded data</a></li> - <li><a href="./pdf_message.html">PDF message</a></li> - <li><a href="./bootstrap.html">Bootstrap styling</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/TableTools/examples/alter_buttons.html b/assets/plugins/datatables/extensions/TableTools/examples/alter_buttons.html deleted file mode 100644 index 87c41481..00000000 --- a/assets/plugins/datatables/extensions/TableTools/examples/alter_buttons.html +++ /dev/null @@ -1,637 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>TableTools example - Button arrangement</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.tableTools.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.tableTools.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - $('#example').DataTable( { - dom: 'T<"clear">lfrtip', - tableTools: { - "aButtons": [ "copy", "print" ] - } - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>TableTools example <span>Button arrangement</span></h1> - - <div class="info"> - <p>TableTools makes it very simple to arrange the buttons in the toolbar as you see fit. Using the <code>aButtons</code> parameter you can use any of the <a href= - "http://datatables.net/extensions/tabletools/buttons">predefined buttons</a> or <a href="http://datatables.net/extensions/tabletools/button_options">customised - buttons</a>. The example below shows how TableTools can be initialised to provide only the 'copy-to-clipboard' and 'print view' options (i.e. no save to local file - option is available).</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').DataTable( { - dom: 'T&lt;&quot;clear&quot;&gt;lfrtip', - tableTools: { - &quot;aButtons&quot;: [ &quot;copy&quot;, &quot;print&quot; ] - } - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.tableTools.js">../js/dataTables.tableTools.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.tableTools.css">../css/dataTables.tableTools.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./swf_path.html">Setting the SWF path</a></li> - <li><a href="./new_init.html">Initialisation with `new`</a></li> - <li><a href="./defaults.html">Defaults</a></li> - <li><a href="./select_single.html">Row selection - single row select</a></li> - <li><a href="./select_multi.html">Row selection - multi-row select</a></li> - <li><a href="./select_os.html">Row selection - operating system style</a></li> - <li><a href="./select_column.html">Row selection - row selector on specific cells</a></li> - <li><a href="./multiple_tables.html">Multiple tables</a></li> - <li><a href="./multi_instance.html">Multiple toolbars</a></li> - <li><a href="./collection.html">Button collections</a></li> - <li><a href="./plug-in.html">Plug-in button types</a></li> - <li><a href="./button_text.html">Custom button text</a></li> - <li class="active"><a href="./alter_buttons.html">Button arrangement</a></li> - <li><a href="./ajax.html">Ajax loaded data</a></li> - <li><a href="./pdf_message.html">PDF message</a></li> - <li><a href="./bootstrap.html">Bootstrap styling</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/TableTools/examples/bootstrap.html b/assets/plugins/datatables/extensions/TableTools/examples/bootstrap.html deleted file mode 100644 index 24b2c0bb..00000000 --- a/assets/plugins/datatables/extensions/TableTools/examples/bootstrap.html +++ /dev/null @@ -1,645 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>TableTools example - Bootstrap styling</title> - <link rel="stylesheet" type="text/css" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css"> - <link rel="stylesheet" type="text/css" href="../../Plugins/integration/bootstrap/3/dataTables.bootstrap.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - body { font-size: 140%; } - div.DTTT { margin-bottom: 0.5em; float: right; } - div.dataTables_wrapper { clear: both; } - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.tableTools.js"></script> - <script type="text/javascript" language="javascript" src="../../Plugins/integration/bootstrap/3/dataTables.bootstrap.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - var table = $('#example').DataTable(); - var tt = new $.fn.dataTable.TableTools( table ); - - $( tt.fnContainer() ).insertBefore('div.dataTables_wrapper'); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>TableTools example <span>Bootstrap styling</span></h1> - - <div class="info"> - <p><a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap</a> is a very powerful design framework for allowing you to very quickly create applications - with a unified look and feel. <a href="http://datatables.net/manual/styling/bootstrap">DataTables integrates well</a> with Bootstrap, and so does TableTools.</p> - - <p>This example shows the default Bootstrap theme being used with a Bootstrap styled DataTable. The <a href="new_init.html"><code>new</code></a> form of - initialising TableTools is used here, as the Bootstrap integration uses a complex <a href="//datatables.net/reference/option/dom"><code class="option" title= - "DataTables initialisation option">dom<span>DT</span></code></a> option (it is possible to provide a custom <a href= - "//datatables.net/reference/option/dom"><code class="option" title="DataTables initialisation option">dom<span>DT</span></code></a> option if you want to, this is - just for simplicity!).</p> - </div> - - <table id="example" class="table table-striped table-bordered" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - var table = $('#example').DataTable(); - var tt = new $.fn.dataTable.TableTools( table ); - - $( tt.fnContainer() ).insertBefore('div.dataTables_wrapper'); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.tableTools.js">../js/dataTables.tableTools.js</a></li> - <li><a href="../../Plugins/integration/bootstrap/3/dataTables.bootstrap.js">../../Plugins/integration/bootstrap/3/dataTables.bootstrap.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css">body { font-size: 140%; } - div.DTTT { margin-bottom: 0.5em; float: right; } - div.dataTables_wrapper { clear: both; }</code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css</a></li> - <li><a href="../../Plugins/integration/bootstrap/3/dataTables.bootstrap.css">../../Plugins/integration/bootstrap/3/dataTables.bootstrap.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./swf_path.html">Setting the SWF path</a></li> - <li><a href="./new_init.html">Initialisation with `new`</a></li> - <li><a href="./defaults.html">Defaults</a></li> - <li><a href="./select_single.html">Row selection - single row select</a></li> - <li><a href="./select_multi.html">Row selection - multi-row select</a></li> - <li><a href="./select_os.html">Row selection - operating system style</a></li> - <li><a href="./select_column.html">Row selection - row selector on specific cells</a></li> - <li><a href="./multiple_tables.html">Multiple tables</a></li> - <li><a href="./multi_instance.html">Multiple toolbars</a></li> - <li><a href="./collection.html">Button collections</a></li> - <li><a href="./plug-in.html">Plug-in button types</a></li> - <li><a href="./button_text.html">Custom button text</a></li> - <li><a href="./alter_buttons.html">Button arrangement</a></li> - <li><a href="./ajax.html">Ajax loaded data</a></li> - <li><a href="./pdf_message.html">PDF message</a></li> - <li class="active"><a href="./bootstrap.html">Bootstrap styling</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/TableTools/examples/button_text.html b/assets/plugins/datatables/extensions/TableTools/examples/button_text.html deleted file mode 100644 index 20565db1..00000000 --- a/assets/plugins/datatables/extensions/TableTools/examples/button_text.html +++ /dev/null @@ -1,669 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>TableTools example - Custom button text</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.tableTools.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.tableTools.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - $('#example').DataTable( { - "dom": 'T<"clear">lfrtip', - "tableTools": { - "aButtons": [ - { - "sExtends": "copy", - "sButtonText": "Copy to clipboard" - }, - { - "sExtends": "csv", - "sButtonText": "Save to CSV" - }, - { - "sExtends": "xls", - "oSelectorOpts": { - page: 'current' - } - } - ] - } - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>TableTools example <span>Custom button text</span></h1> - - <div class="info"> - <p>You may wish to set your own text for the buttons in the TableTools toolbar, rather than relying on the default built-in text. This is done by overriding the - <code>sButtonText</code> parameter of whatever button you wish to alter. The way TableTools allows you to alter a predefined button is by 'extending' it (using the - <code>sExtends</code> parameter) and then setting the overriding parameter.</p> - - <p>A full list of the parameters which can be used is <a href="http://datatables.net/extensions/tabletools/button_options">available on the DataTables.net - web-site</a>. This example shows how to set the button text as required.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').DataTable( { - &quot;dom&quot;: 'T&lt;&quot;clear&quot;&gt;lfrtip', - &quot;tableTools&quot;: { - &quot;aButtons&quot;: [ - { - &quot;sExtends&quot;: &quot;copy&quot;, - &quot;sButtonText&quot;: &quot;Copy to clipboard&quot; - }, - { - &quot;sExtends&quot;: &quot;csv&quot;, - &quot;sButtonText&quot;: &quot;Save to CSV&quot; - }, - { - &quot;sExtends&quot;: &quot;xls&quot;, - &quot;oSelectorOpts&quot;: { - page: 'current' - } - } - ] - } - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.tableTools.js">../js/dataTables.tableTools.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.tableTools.css">../css/dataTables.tableTools.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./swf_path.html">Setting the SWF path</a></li> - <li><a href="./new_init.html">Initialisation with `new`</a></li> - <li><a href="./defaults.html">Defaults</a></li> - <li><a href="./select_single.html">Row selection - single row select</a></li> - <li><a href="./select_multi.html">Row selection - multi-row select</a></li> - <li><a href="./select_os.html">Row selection - operating system style</a></li> - <li><a href="./select_column.html">Row selection - row selector on specific cells</a></li> - <li><a href="./multiple_tables.html">Multiple tables</a></li> - <li><a href="./multi_instance.html">Multiple toolbars</a></li> - <li><a href="./collection.html">Button collections</a></li> - <li><a href="./plug-in.html">Plug-in button types</a></li> - <li class="active"><a href="./button_text.html">Custom button text</a></li> - <li><a href="./alter_buttons.html">Button arrangement</a></li> - <li><a href="./ajax.html">Ajax loaded data</a></li> - <li><a href="./pdf_message.html">PDF message</a></li> - <li><a href="./bootstrap.html">Bootstrap styling</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/TableTools/examples/collection.html b/assets/plugins/datatables/extensions/TableTools/examples/collection.html deleted file mode 100644 index 26b4a209..00000000 --- a/assets/plugins/datatables/extensions/TableTools/examples/collection.html +++ /dev/null @@ -1,654 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>TableTools example - Button collections</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.tableTools.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.tableTools.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - $('#example').DataTable( { - "dom": 'T<"clear">lfrtip', - "tableTools": { - "aButtons": [ - "copy", - "print", - { - "sExtends": "collection", - "sButtonText": "Save", - "aButtons": [ "csv", "xls", "pdf" ] - } - ] - } - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>TableTools example <span>Button collections</span></h1> - - <div class="info"> - <p>TableTools provides the ability to group buttons into a hidden drop down list, which is activated by clicking on a top-level button. This is achieved by - extending the 'collection' predefined button type and setting it's <code>aButtons</code> parameter with the same options as the top level buttons (note that you - cannot currently use a collection within a collection).</p> - - <p>The example below shows the file save buttons grouped into a collection, while the copy and print buttons are left on the top level.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').DataTable( { - &quot;dom&quot;: 'T&lt;&quot;clear&quot;&gt;lfrtip', - &quot;tableTools&quot;: { - &quot;aButtons&quot;: [ - &quot;copy&quot;, - &quot;print&quot;, - { - &quot;sExtends&quot;: &quot;collection&quot;, - &quot;sButtonText&quot;: &quot;Save&quot;, - &quot;aButtons&quot;: [ &quot;csv&quot;, &quot;xls&quot;, &quot;pdf&quot; ] - } - ] - } - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.tableTools.js">../js/dataTables.tableTools.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.tableTools.css">../css/dataTables.tableTools.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./swf_path.html">Setting the SWF path</a></li> - <li><a href="./new_init.html">Initialisation with `new`</a></li> - <li><a href="./defaults.html">Defaults</a></li> - <li><a href="./select_single.html">Row selection - single row select</a></li> - <li><a href="./select_multi.html">Row selection - multi-row select</a></li> - <li><a href="./select_os.html">Row selection - operating system style</a></li> - <li><a href="./select_column.html">Row selection - row selector on specific cells</a></li> - <li><a href="./multiple_tables.html">Multiple tables</a></li> - <li><a href="./multi_instance.html">Multiple toolbars</a></li> - <li class="active"><a href="./collection.html">Button collections</a></li> - <li><a href="./plug-in.html">Plug-in button types</a></li> - <li><a href="./button_text.html">Custom button text</a></li> - <li><a href="./alter_buttons.html">Button arrangement</a></li> - <li><a href="./ajax.html">Ajax loaded data</a></li> - <li><a href="./pdf_message.html">PDF message</a></li> - <li><a href="./bootstrap.html">Bootstrap styling</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/TableTools/examples/defaults.html b/assets/plugins/datatables/extensions/TableTools/examples/defaults.html deleted file mode 100644 index e821b4ac..00000000 --- a/assets/plugins/datatables/extensions/TableTools/examples/defaults.html +++ /dev/null @@ -1,634 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>TableTools example - Defaults</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.tableTools.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.tableTools.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$.fn.dataTable.TableTools.defaults.aButtons = [ "copy", "csv", "xls" ]; - -$(document).ready(function() { - $('#example').DataTable( { - dom: 'T<"clear">lfrtip' - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>TableTools example <span>Defaults</span></h1> - - <div class="info"> - <p>TableTools provides the ability to override the default initialisation parameters that are used when creating a new instance. This this particularly useful if - you have multiple tables which you want to have the same TableTools behaviour - rather than declaring the structure multiple times, you can just set the defaults - once. This example shows how to alter the default buttons.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$.fn.dataTable.TableTools.defaults.aButtons = [ &quot;copy&quot;, &quot;csv&quot;, &quot;xls&quot; ]; - -$(document).ready(function() { - $('#example').DataTable( { - dom: 'T&lt;&quot;clear&quot;&gt;lfrtip' - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.tableTools.js">../js/dataTables.tableTools.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.tableTools.css">../css/dataTables.tableTools.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./swf_path.html">Setting the SWF path</a></li> - <li><a href="./new_init.html">Initialisation with `new`</a></li> - <li class="active"><a href="./defaults.html">Defaults</a></li> - <li><a href="./select_single.html">Row selection - single row select</a></li> - <li><a href="./select_multi.html">Row selection - multi-row select</a></li> - <li><a href="./select_os.html">Row selection - operating system style</a></li> - <li><a href="./select_column.html">Row selection - row selector on specific cells</a></li> - <li><a href="./multiple_tables.html">Multiple tables</a></li> - <li><a href="./multi_instance.html">Multiple toolbars</a></li> - <li><a href="./collection.html">Button collections</a></li> - <li><a href="./plug-in.html">Plug-in button types</a></li> - <li><a href="./button_text.html">Custom button text</a></li> - <li><a href="./alter_buttons.html">Button arrangement</a></li> - <li><a href="./ajax.html">Ajax loaded data</a></li> - <li><a href="./pdf_message.html">PDF message</a></li> - <li><a href="./bootstrap.html">Bootstrap styling</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/TableTools/examples/index.html b/assets/plugins/datatables/extensions/TableTools/examples/index.html deleted file mode 100644 index f9758823..00000000 --- a/assets/plugins/datatables/extensions/TableTools/examples/index.html +++ /dev/null @@ -1,80 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - - <title>TableTools examples - TableTools examples</title> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>TableTools example <span>TableTools examples</span></h1> - - <div class="info"> - <p>TableTools is a plug-in for the DataTables HTML table enhancer, which adds a highly customisable button toolbar to a DataTable. Key features include:</p> - - <ul class="markdown"> - <li>Copy to clipboard</li> - <li>Save table data as CSV, XLS or PDF files</li> - <li>Print view for clean printing</li> - <li>Row selection options</li> - <li>Easy use predefined buttons</li> - <li>Simple customisation of buttons</li> - <li>Well defined API for advanced control</li> - </ul> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./swf_path.html">Setting the SWF path</a></li> - <li><a href="./new_init.html">Initialisation with `new`</a></li> - <li><a href="./defaults.html">Defaults</a></li> - <li><a href="./select_single.html">Row selection - single row select</a></li> - <li><a href="./select_multi.html">Row selection - multi-row select</a></li> - <li><a href="./select_os.html">Row selection - operating system style</a></li> - <li><a href="./select_column.html">Row selection - row selector on specific cells</a></li> - <li><a href="./multiple_tables.html">Multiple tables</a></li> - <li><a href="./multi_instance.html">Multiple toolbars</a></li> - <li><a href="./collection.html">Button collections</a></li> - <li><a href="./plug-in.html">Plug-in button types</a></li> - <li><a href="./button_text.html">Custom button text</a></li> - <li><a href="./alter_buttons.html">Button arrangement</a></li> - <li><a href="./ajax.html">Ajax loaded data</a></li> - <li><a href="./pdf_message.html">PDF message</a></li> - <li><a href="./bootstrap.html">Bootstrap styling</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/TableTools/examples/jqueryui.html b/assets/plugins/datatables/extensions/TableTools/examples/jqueryui.html deleted file mode 100644 index d075c909..00000000 --- a/assets/plugins/datatables/extensions/TableTools/examples/jqueryui.html +++ /dev/null @@ -1,637 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>TableTools example - jQuery UI styling</title> - <link rel="stylesheet" type="text/css" href="//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css"> - <link rel="stylesheet" type="text/css" href="../../Plugins/integration/jqueryui/dataTables.jqueryui.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.tableTools.js"></script> - <script type="text/javascript" language="javascript" src="../../Plugins/integration/jqueryui/dataTables.jqueryui.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - var table = $('#example').DataTable( { - lengthChange: false - } ); - - var tt = new $.fn.dataTable.TableTools( table ); - $( tt.fnContainer() ).insertBefore('div.dataTables_filter'); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>TableTools example <span>jQuery UI styling</span></h1> - - <div class="info"> - <p>This example shows the TableTools buttons being styled by jQuery UI ThemeRoller. This allows the TableTools buttons to have the same look-and-feel as other - buttons on your site if you are already using jQuery UI.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - var table = $('#example').DataTable( { - lengthChange: false - } ); - - var tt = new $.fn.dataTable.TableTools( table ); - $( tt.fnContainer() ).insertBefore('div.dataTables_filter'); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.tableTools.js">../js/dataTables.tableTools.js</a></li> - <li><a href="../../Plugins/integration/jqueryui/dataTables.jqueryui.js">../../Plugins/integration/jqueryui/dataTables.jqueryui.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css">//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css</a></li> - <li><a href="../../Plugins/integration/jqueryui/dataTables.jqueryui.css">../../Plugins/integration/jqueryui/dataTables.jqueryui.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./swf_path.html">Setting the SWF path</a></li> - <li><a href="./new_init.html">Initialisation with `new`</a></li> - <li><a href="./defaults.html">Defaults</a></li> - <li><a href="./select_single.html">Row selection - single row select</a></li> - <li><a href="./select_multi.html">Row selection - multi-row select</a></li> - <li><a href="./select_os.html">Row selection - operating system style</a></li> - <li><a href="./select_column.html">Row selection - row selector on specific cells</a></li> - <li><a href="./multiple_tables.html">Multiple tables</a></li> - <li><a href="./multi_instance.html">Multiple toolbars</a></li> - <li><a href="./collection.html">Button collections</a></li> - <li><a href="./plug-in.html">Plug-in button types</a></li> - <li><a href="./button_text.html">Custom button text</a></li> - <li><a href="./alter_buttons.html">Button arrangement</a></li> - <li><a href="./ajax.html">Ajax loaded data</a></li> - <li><a href="./pdf_message.html">PDF message</a></li> - <li><a href="./bootstrap.html">Bootstrap styling</a></li> - <li class="active"><a href="./jqueryui.html">jQuery UI styling</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/TableTools/examples/multi_instance.html b/assets/plugins/datatables/extensions/TableTools/examples/multi_instance.html deleted file mode 100644 index caf3317a..00000000 --- a/assets/plugins/datatables/extensions/TableTools/examples/multi_instance.html +++ /dev/null @@ -1,638 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>TableTools example - Multiple toolbars</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.tableTools.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.tableTools.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - $('#example').DataTable( { - dom: 'T<"clear">lfrtip<"clear spacer">T', - tableTools: { - "aButtons": [ "copy", "print" ] - } - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>TableTools example <span>Multiple toolbars</span></h1> - - <div class="info"> - <p>Like all DataTables control elements, TableTools can have multiple instances specified in the <a href="//datatables.net/reference/option/dom"><code class= - "option" title="DataTables initialisation option">dom<span>DT</span></code></a> parameter of DataTables. This will create two TableTools toolbars next to the - table, providing the same functions.</p> - - <p>An example of when this might be useful is to show the toolbar both above and below the table - as is done in this example.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').DataTable( { - dom: 'T&lt;&quot;clear&quot;&gt;lfrtip&lt;&quot;clear spacer&quot;&gt;T', - tableTools: { - &quot;aButtons&quot;: [ &quot;copy&quot;, &quot;print&quot; ] - } - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.tableTools.js">../js/dataTables.tableTools.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.tableTools.css">../css/dataTables.tableTools.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./swf_path.html">Setting the SWF path</a></li> - <li><a href="./new_init.html">Initialisation with `new`</a></li> - <li><a href="./defaults.html">Defaults</a></li> - <li><a href="./select_single.html">Row selection - single row select</a></li> - <li><a href="./select_multi.html">Row selection - multi-row select</a></li> - <li><a href="./select_os.html">Row selection - operating system style</a></li> - <li><a href="./select_column.html">Row selection - row selector on specific cells</a></li> - <li><a href="./multiple_tables.html">Multiple tables</a></li> - <li class="active"><a href="./multi_instance.html">Multiple toolbars</a></li> - <li><a href="./collection.html">Button collections</a></li> - <li><a href="./plug-in.html">Plug-in button types</a></li> - <li><a href="./button_text.html">Custom button text</a></li> - <li><a href="./alter_buttons.html">Button arrangement</a></li> - <li><a href="./ajax.html">Ajax loaded data</a></li> - <li><a href="./pdf_message.html">PDF message</a></li> - <li><a href="./bootstrap.html">Bootstrap styling</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/TableTools/examples/multiple_tables.html b/assets/plugins/datatables/extensions/TableTools/examples/multiple_tables.html deleted file mode 100644 index e39d4d09..00000000 --- a/assets/plugins/datatables/extensions/TableTools/examples/multiple_tables.html +++ /dev/null @@ -1,343 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>TableTools example - Multiple tables</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.tableTools.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.tableTools.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - $('#example').DataTable( { - dom: 'T<"clear">lfrtip' - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>TableTools example <span>Multiple tables</span></h1> - - <div class="info"> - <p>This example shows how multiple tables can be initialised with DataTables and TableTools in a single call to the <code>$().DataTable()</code> function. - Basically it works as you would expect - no special considerations need be made!</p> - </div> - - <table id="" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>$320,800</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>$433,060</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>$103,600</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>$342,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>$217,500</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>$92,575</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>$324,050</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>$75,650</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>$183,000</td> - </tr> - </tbody> - </table> - - <table id="" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>$90,560</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>$198,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>$132,000</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>$145,000</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>$136,200</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>$163,500</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>$103,500</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').DataTable( { - dom: 'T&lt;&quot;clear&quot;&gt;lfrtip' - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.tableTools.js">../js/dataTables.tableTools.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.tableTools.css">../css/dataTables.tableTools.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./swf_path.html">Setting the SWF path</a></li> - <li><a href="./new_init.html">Initialisation with `new`</a></li> - <li><a href="./defaults.html">Defaults</a></li> - <li><a href="./select_single.html">Row selection - single row select</a></li> - <li><a href="./select_multi.html">Row selection - multi-row select</a></li> - <li><a href="./select_os.html">Row selection - operating system style</a></li> - <li><a href="./select_column.html">Row selection - row selector on specific cells</a></li> - <li class="active"><a href="./multiple_tables.html">Multiple tables</a></li> - <li><a href="./multi_instance.html">Multiple toolbars</a></li> - <li><a href="./collection.html">Button collections</a></li> - <li><a href="./plug-in.html">Plug-in button types</a></li> - <li><a href="./button_text.html">Custom button text</a></li> - <li><a href="./alter_buttons.html">Button arrangement</a></li> - <li><a href="./ajax.html">Ajax loaded data</a></li> - <li><a href="./pdf_message.html">PDF message</a></li> - <li><a href="./bootstrap.html">Bootstrap styling</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/TableTools/examples/new_init.html b/assets/plugins/datatables/extensions/TableTools/examples/new_init.html deleted file mode 100644 index 129f9e8a..00000000 --- a/assets/plugins/datatables/extensions/TableTools/examples/new_init.html +++ /dev/null @@ -1,644 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>TableTools example - Initialisation with `new`</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.tableTools.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.tableTools.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - var table = $('#example').DataTable(); - var tt = new $.fn.dataTable.TableTools( table, { - sRowSelect: 'single' - } ); - - $( tt.fnContainer() ).insertAfter('div.info'); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>TableTools example <span>Initialisation with `new`</span></h1> - - <div class="info"> - <p>Typically when working with TableTools, the initialisation and insertion into the DOM will be done automatically by DataTables, through the use of the <a href= - "//datatables.net/reference/option/dom"><code class="option" title="DataTables initialisation option">dom<span>DT</span></code></a> parameter. However, it is also - possible to initialise TableTools manually as shown in the example below using <code>new $.fn.dataTable.TableTools();</code>. The constructor for TableTools takes - two parameters:</p> - - <ol class="markdown"> - <li>The DataTable that the newly created TableTools instance should attach to</li> - <li>Optionally - A list of options</li> - </ol> - - <p>Once initialised you can insert the TableTools tool bar node anywhere you wish into the DOM using the <code>fnContainer()</code> API method to get the node.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - var table = $('#example').DataTable(); - var tt = new $.fn.dataTable.TableTools( table, { - sRowSelect: 'single' - } ); - - $( tt.fnContainer() ).insertAfter('div.info'); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.tableTools.js">../js/dataTables.tableTools.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.tableTools.css">../css/dataTables.tableTools.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./swf_path.html">Setting the SWF path</a></li> - <li class="active"><a href="./new_init.html">Initialisation with `new`</a></li> - <li><a href="./defaults.html">Defaults</a></li> - <li><a href="./select_single.html">Row selection - single row select</a></li> - <li><a href="./select_multi.html">Row selection - multi-row select</a></li> - <li><a href="./select_os.html">Row selection - operating system style</a></li> - <li><a href="./select_column.html">Row selection - row selector on specific cells</a></li> - <li><a href="./multiple_tables.html">Multiple tables</a></li> - <li><a href="./multi_instance.html">Multiple toolbars</a></li> - <li><a href="./collection.html">Button collections</a></li> - <li><a href="./plug-in.html">Plug-in button types</a></li> - <li><a href="./button_text.html">Custom button text</a></li> - <li><a href="./alter_buttons.html">Button arrangement</a></li> - <li><a href="./ajax.html">Ajax loaded data</a></li> - <li><a href="./pdf_message.html">PDF message</a></li> - <li><a href="./bootstrap.html">Bootstrap styling</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/TableTools/examples/pdf_message.html b/assets/plugins/datatables/extensions/TableTools/examples/pdf_message.html deleted file mode 100644 index 18afd9e7..00000000 --- a/assets/plugins/datatables/extensions/TableTools/examples/pdf_message.html +++ /dev/null @@ -1,655 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>TableTools example - PDF message</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.tableTools.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.tableTools.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - $('#example').DataTable( { - dom: 'T<"clear">lfrtip', - tableTools: { - "aButtons": [ - "copy", - "csv", - "xls", - { - "sExtends": "pdf", - "sPdfOrientation": "landscape", - "sPdfMessage": "Your custom message would go here." - }, - "print" - ] - } - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>TableTools example <span>PDF message</span></h1> - - <div class="info"> - <p>This example shows how you can add a message to the saved PDF using the <code>sPdfMessage</code> parameter. It also shows that the orientation of the output PDF - can be changed to landscape which is useful if you have a lot of columns.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').DataTable( { - dom: 'T&lt;&quot;clear&quot;&gt;lfrtip', - tableTools: { - &quot;aButtons&quot;: [ - &quot;copy&quot;, - &quot;csv&quot;, - &quot;xls&quot;, - { - &quot;sExtends&quot;: &quot;pdf&quot;, - &quot;sPdfOrientation&quot;: &quot;landscape&quot;, - &quot;sPdfMessage&quot;: &quot;Your custom message would go here.&quot; - }, - &quot;print&quot; - ] - } - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.tableTools.js">../js/dataTables.tableTools.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.tableTools.css">../css/dataTables.tableTools.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./swf_path.html">Setting the SWF path</a></li> - <li><a href="./new_init.html">Initialisation with `new`</a></li> - <li><a href="./defaults.html">Defaults</a></li> - <li><a href="./select_single.html">Row selection - single row select</a></li> - <li><a href="./select_multi.html">Row selection - multi-row select</a></li> - <li><a href="./select_os.html">Row selection - operating system style</a></li> - <li><a href="./select_column.html">Row selection - row selector on specific cells</a></li> - <li><a href="./multiple_tables.html">Multiple tables</a></li> - <li><a href="./multi_instance.html">Multiple toolbars</a></li> - <li><a href="./collection.html">Button collections</a></li> - <li><a href="./plug-in.html">Plug-in button types</a></li> - <li><a href="./button_text.html">Custom button text</a></li> - <li><a href="./alter_buttons.html">Button arrangement</a></li> - <li><a href="./ajax.html">Ajax loaded data</a></li> - <li class="active"><a href="./pdf_message.html">PDF message</a></li> - <li><a href="./bootstrap.html">Bootstrap styling</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/TableTools/examples/plug-in.html b/assets/plugins/datatables/extensions/TableTools/examples/plug-in.html deleted file mode 100644 index 0c6bfb01..00000000 --- a/assets/plugins/datatables/extensions/TableTools/examples/plug-in.html +++ /dev/null @@ -1,682 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>TableTools example - Plug-in button types</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.tableTools.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.tableTools.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - - -$.fn.dataTable.TableTools.buttons.copy_to_div = $.extend( - true, - {}, - $.fn.dataTable.TableTools.buttonBase, - { - "sNewLine": "<br>", - "sButtonText": "Copy to element", - "target": "", - "fnClick": function( button, conf ) { - $(conf.target).html( this.fnGetTableData(conf) ); - } - } -); - - -$(document).ready(function() { - $('#example').DataTable( { - dom: 'T<"clear">lfrtip', - tableTools: { - "aButtons": [ { - "sExtends": "copy_to_div", - "sButtonText": "Copy to HTML", - "target": "#copy" - } ] - } - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>TableTools example <span>Plug-in button types</span></h1> - - <div class="info"> - <p>This example shows now a plug-in button type can be created for TableTools. Button types are attached to the <code>$.fn.dataTable.TableTools.buttons</code> - object and extend <code>$.fn.dataTable.TableTools.buttonBase</code>. All of the <a href="//datatables.net/extensions/tabletools/button_options">button options - defined in the documentation</a> are available and can be overridden as required. Finally to use the button simply include its name in the <code>aButtons</code> - array or use it as a button extender (<code>sExtends</code>).</p> - - <p>This example shows a button which will simply get the data contents of a table and set that as the contents of another element.</p> - </div> - - <div id="copy" class="box" style="height: 100px; overflow: auto"> - Copy output will go here - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$.fn.dataTable.TableTools.buttons.copy_to_div = $.extend( - true, - {}, - $.fn.dataTable.TableTools.buttonBase, - { - &quot;sNewLine&quot;: &quot;&lt;br&gt;&quot;, - &quot;sButtonText&quot;: &quot;Copy to element&quot;, - &quot;target&quot;: &quot;&quot;, - &quot;fnClick&quot;: function( button, conf ) { - $(conf.target).html( this.fnGetTableData(conf) ); - } - } -); - - -$(document).ready(function() { - $('#example').DataTable( { - dom: 'T&lt;&quot;clear&quot;&gt;lfrtip', - tableTools: { - &quot;aButtons&quot;: [ { - &quot;sExtends&quot;: &quot;copy_to_div&quot;, - &quot;sButtonText&quot;: &quot;Copy to HTML&quot;, - &quot;target&quot;: &quot;#copy&quot; - } ] - } - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.tableTools.js">../js/dataTables.tableTools.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.tableTools.css">../css/dataTables.tableTools.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./swf_path.html">Setting the SWF path</a></li> - <li><a href="./new_init.html">Initialisation with `new`</a></li> - <li><a href="./defaults.html">Defaults</a></li> - <li><a href="./select_single.html">Row selection - single row select</a></li> - <li><a href="./select_multi.html">Row selection - multi-row select</a></li> - <li><a href="./select_os.html">Row selection - operating system style</a></li> - <li><a href="./select_column.html">Row selection - row selector on specific cells</a></li> - <li><a href="./multiple_tables.html">Multiple tables</a></li> - <li><a href="./multi_instance.html">Multiple toolbars</a></li> - <li><a href="./collection.html">Button collections</a></li> - <li class="active"><a href="./plug-in.html">Plug-in button types</a></li> - <li><a href="./button_text.html">Custom button text</a></li> - <li><a href="./alter_buttons.html">Button arrangement</a></li> - <li><a href="./ajax.html">Ajax loaded data</a></li> - <li><a href="./pdf_message.html">PDF message</a></li> - <li><a href="./bootstrap.html">Bootstrap styling</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/TableTools/examples/select_column.html b/assets/plugins/datatables/extensions/TableTools/examples/select_column.html deleted file mode 100644 index e8e37063..00000000 --- a/assets/plugins/datatables/extensions/TableTools/examples/select_column.html +++ /dev/null @@ -1,228 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>TableTools example - Row selection - row selector on specific cells</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.tableTools.css"> - <link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.0.3/css/font-awesome.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - tr td:first-child { - text-align: center; - } - - tr td:first-child:before { - content: "\f096"; /* fa-square-o */ - font-family: FontAwesome; - } - - tr.selected td:first-child:before { - content: "\f046"; /* fa-check-square-o */ - } - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.tableTools.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - - -$(document).ready(function() { - $('#example').DataTable( { - ajax: "../../../examples/ajax/data/objects.txt", - columns: [ - { data: null, defaultContent: '', orderable: false }, - { data: 'name' }, - { data: 'position' }, - { data: 'office' }, - { data: 'extn' }, - { data: 'start_date' }, - { data: 'salary' } - ], - order: [ 1, 'asc' ], - dom: 'T<"clear">lfrtip', - tableTools: { - sRowSelect: 'os', - sRowSelector: 'td:first-child', - aButtons: [ 'select_all', 'select_none' ] - } - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>TableTools example <span>Row selection - row selector on specific cells</span></h1> - - <div class="info"> - <p>By default, TableTools' row selector option will register a row selection click on any part of the row. Although this is often desirable, you might wish at - times to limit the row selection to just a single column, or other elements in the row. This might be useful, for example, with <a href= - "//editor.datatables.net">Editor's</a> inline editing, so you don't select the row on click of a cell that is to be edited.</p> - - <p>The <code>sRowSelector</code> method provides this ability, allowing a custom jQuery selector to be passed in. TableTools will use the parent row of any element - that is selected by the end user.</p> - - <p>In this case, the row selector is attached to the cells in the first column of the table, and <a href="http://fortawesome.github.io/Font-Awesome">Font - Awesome</a> is used to display a checkbox indicating the selection state of the row, in addition to the row background colouring.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th> - - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').DataTable( { - ajax: &quot;../../../examples/ajax/data/objects.txt&quot;, - columns: [ - { data: null, defaultContent: '', orderable: false }, - { data: 'name' }, - { data: 'position' }, - { data: 'office' }, - { data: 'extn' }, - { data: 'start_date' }, - { data: 'salary' } - ], - order: [ 1, 'asc' ], - dom: 'T&lt;&quot;clear&quot;&gt;lfrtip', - tableTools: { - sRowSelect: 'os', - sRowSelector: 'td:first-child', - aButtons: [ 'select_all', 'select_none' ] - } - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.tableTools.js">../js/dataTables.tableTools.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css">tr td:first-child { - text-align: center; - } - - tr td:first-child:before { - content: &quot;\f096&quot;; /* fa-square-o */ - font-family: FontAwesome; - } - - tr.selected td:first-child:before { - content: &quot;\f046&quot;; /* fa-check-square-o */ - }</code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.tableTools.css">../css/dataTables.tableTools.css</a></li> - <li><a href= - "//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.0.3/css/font-awesome.css">//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.0.3/css/font-awesome.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./swf_path.html">Setting the SWF path</a></li> - <li><a href="./new_init.html">Initialisation with `new`</a></li> - <li><a href="./defaults.html">Defaults</a></li> - <li><a href="./select_single.html">Row selection - single row select</a></li> - <li><a href="./select_multi.html">Row selection - multi-row select</a></li> - <li><a href="./select_os.html">Row selection - operating system style</a></li> - <li class="active"><a href="./select_column.html">Row selection - row selector on specific cells</a></li> - <li><a href="./multiple_tables.html">Multiple tables</a></li> - <li><a href="./multi_instance.html">Multiple toolbars</a></li> - <li><a href="./collection.html">Button collections</a></li> - <li><a href="./plug-in.html">Plug-in button types</a></li> - <li><a href="./button_text.html">Custom button text</a></li> - <li><a href="./alter_buttons.html">Button arrangement</a></li> - <li><a href="./ajax.html">Ajax loaded data</a></li> - <li><a href="./pdf_message.html">PDF message</a></li> - <li><a href="./bootstrap.html">Bootstrap styling</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/TableTools/examples/select_multi.html b/assets/plugins/datatables/extensions/TableTools/examples/select_multi.html deleted file mode 100644 index cbcca65f..00000000 --- a/assets/plugins/datatables/extensions/TableTools/examples/select_multi.html +++ /dev/null @@ -1,649 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>TableTools example - Row selection - multi-row select</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.tableTools.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.tableTools.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - - -$(document).ready(function() { - $('#example').DataTable( { - dom: 'T<"clear">lfrtip', - tableTools: { - "sRowSelect": "multi", - "aButtons": [ "select_all", "select_none" ] - } - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>TableTools example <span>Row selection - multi-row select</span></h1> - - <div class="info"> - <p>As well as providing a button toolbar, TableTools provides everything needed to have selectable rows in the table. TableTools has four row selection modes of - operation:</p> - - <ul class="markdown"> - <li><code>none</code> - Default, where no user row selection options are available</li> - <li><code>single</code> - A single row can be selected</li> - <li><code>multi</code> - Multiple rows can be selected simply by clicking on the rows</li> - <li><code>os</code> - Operating System like selection where you can use the shift and ctrl / cmd keys on your keyboard to add / remove rows from the - selection.</li> - </ul> - - <p>This example shows the <code>multi</code> select option. There are also a number of <a href="http://datatables.net/extras/tabletools/buttons">pre-defined - buttons</a> to provide functions such as select-all and select-none, as shown in this example.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').DataTable( { - dom: 'T&lt;&quot;clear&quot;&gt;lfrtip', - tableTools: { - &quot;sRowSelect&quot;: &quot;multi&quot;, - &quot;aButtons&quot;: [ &quot;select_all&quot;, &quot;select_none&quot; ] - } - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.tableTools.js">../js/dataTables.tableTools.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.tableTools.css">../css/dataTables.tableTools.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./swf_path.html">Setting the SWF path</a></li> - <li><a href="./new_init.html">Initialisation with `new`</a></li> - <li><a href="./defaults.html">Defaults</a></li> - <li><a href="./select_single.html">Row selection - single row select</a></li> - <li class="active"><a href="./select_multi.html">Row selection - multi-row select</a></li> - <li><a href="./select_os.html">Row selection - operating system style</a></li> - <li><a href="./select_column.html">Row selection - row selector on specific cells</a></li> - <li><a href="./multiple_tables.html">Multiple tables</a></li> - <li><a href="./multi_instance.html">Multiple toolbars</a></li> - <li><a href="./collection.html">Button collections</a></li> - <li><a href="./plug-in.html">Plug-in button types</a></li> - <li><a href="./button_text.html">Custom button text</a></li> - <li><a href="./alter_buttons.html">Button arrangement</a></li> - <li><a href="./ajax.html">Ajax loaded data</a></li> - <li><a href="./pdf_message.html">PDF message</a></li> - <li><a href="./bootstrap.html">Bootstrap styling</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/TableTools/examples/select_os.html b/assets/plugins/datatables/extensions/TableTools/examples/select_os.html deleted file mode 100644 index 54e0afe8..00000000 --- a/assets/plugins/datatables/extensions/TableTools/examples/select_os.html +++ /dev/null @@ -1,649 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>TableTools example - Row selection - operating system style</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.tableTools.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.tableTools.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - - -$(document).ready(function() { - $('#example').DataTable( { - dom: 'T<"clear">lfrtip', - tableTools: { - "sRowSelect": "os", - "aButtons": [ "select_all", "select_none" ] - } - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>TableTools example <span>Row selection - operating system style</span></h1> - - <div class="info"> - <p>As well as providing a button toolbar, TableTools provides everything needed to have selectable rows in the table. TableTools has four row selection modes of - operation:</p> - - <ul class="markdown"> - <li><code>none</code> - Default, where no user row selection options are available</li> - <li><code>single</code> - A single row can be selected</li> - <li><code>multi</code> - Multiple rows can be selected simply by clicking on the rows</li> - <li><code>os</code> - Operating System like selection where you can use the shift and ctrl / cmd keys on your keyboard to add / remove rows from the - selection.</li> - </ul> - - <p>This example shows the <code>os</code> select option. Without keyboard interaction a single row can be selected at a time, but multiple rows can be selected in - a range using the shift key, while rows can be added and removed from the selection using the ctrl / cmd key.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').DataTable( { - dom: 'T&lt;&quot;clear&quot;&gt;lfrtip', - tableTools: { - &quot;sRowSelect&quot;: &quot;os&quot;, - &quot;aButtons&quot;: [ &quot;select_all&quot;, &quot;select_none&quot; ] - } - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.tableTools.js">../js/dataTables.tableTools.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.tableTools.css">../css/dataTables.tableTools.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./swf_path.html">Setting the SWF path</a></li> - <li><a href="./new_init.html">Initialisation with `new`</a></li> - <li><a href="./defaults.html">Defaults</a></li> - <li><a href="./select_single.html">Row selection - single row select</a></li> - <li><a href="./select_multi.html">Row selection - multi-row select</a></li> - <li class="active"><a href="./select_os.html">Row selection - operating system style</a></li> - <li><a href="./select_column.html">Row selection - row selector on specific cells</a></li> - <li><a href="./multiple_tables.html">Multiple tables</a></li> - <li><a href="./multi_instance.html">Multiple toolbars</a></li> - <li><a href="./collection.html">Button collections</a></li> - <li><a href="./plug-in.html">Plug-in button types</a></li> - <li><a href="./button_text.html">Custom button text</a></li> - <li><a href="./alter_buttons.html">Button arrangement</a></li> - <li><a href="./ajax.html">Ajax loaded data</a></li> - <li><a href="./pdf_message.html">PDF message</a></li> - <li><a href="./bootstrap.html">Bootstrap styling</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/TableTools/examples/select_single.html b/assets/plugins/datatables/extensions/TableTools/examples/select_single.html deleted file mode 100644 index 33cff2ff..00000000 --- a/assets/plugins/datatables/extensions/TableTools/examples/select_single.html +++ /dev/null @@ -1,646 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>TableTools example - Row selection - single row select</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.tableTools.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.tableTools.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - - -$(document).ready(function() { - $('#example').DataTable( { - dom: 'T<"clear">lfrtip', - tableTools: { - "sRowSelect": "single" - } - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>TableTools example <span>Row selection - single row select</span></h1> - - <div class="info"> - <p>As well as providing a button toolbar, TableTools provides everything needed to have selectable rows in the table. TableTools has four row selection modes of - operation:</p> - - <ul class="markdown"> - <li><code>none</code> - Default, where no user row selection options are available</li> - <li><code>single</code> - A single row can be selected</li> - <li><code>multi</code> - Multiple rows can be selected simply by clicking on the rows</li> - <li><code>os</code> - Operating System like selection where you can use the shift and ctrl / cmd keys on your keyboard to add / remove rows from the - selection.</li> - </ul> - - <p>This example shows the <code>single</code> select option.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').DataTable( { - dom: 'T&lt;&quot;clear&quot;&gt;lfrtip', - tableTools: { - &quot;sRowSelect&quot;: &quot;single&quot; - } - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.tableTools.js">../js/dataTables.tableTools.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.tableTools.css">../css/dataTables.tableTools.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./swf_path.html">Setting the SWF path</a></li> - <li><a href="./new_init.html">Initialisation with `new`</a></li> - <li><a href="./defaults.html">Defaults</a></li> - <li class="active"><a href="./select_single.html">Row selection - single row select</a></li> - <li><a href="./select_multi.html">Row selection - multi-row select</a></li> - <li><a href="./select_os.html">Row selection - operating system style</a></li> - <li><a href="./select_column.html">Row selection - row selector on specific cells</a></li> - <li><a href="./multiple_tables.html">Multiple tables</a></li> - <li><a href="./multi_instance.html">Multiple toolbars</a></li> - <li><a href="./collection.html">Button collections</a></li> - <li><a href="./plug-in.html">Plug-in button types</a></li> - <li><a href="./button_text.html">Custom button text</a></li> - <li><a href="./alter_buttons.html">Button arrangement</a></li> - <li><a href="./ajax.html">Ajax loaded data</a></li> - <li><a href="./pdf_message.html">PDF message</a></li> - <li><a href="./bootstrap.html">Bootstrap styling</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/TableTools/examples/simple.html b/assets/plugins/datatables/extensions/TableTools/examples/simple.html deleted file mode 100644 index dbc77e47..00000000 --- a/assets/plugins/datatables/extensions/TableTools/examples/simple.html +++ /dev/null @@ -1,633 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>TableTools example - Basic initialisation</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.tableTools.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.tableTools.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - $('#example').DataTable( { - dom: 'T<"clear">lfrtip' - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>TableTools example <span>Basic initialisation</span></h1> - - <div class="info"> - <p>This example shows the basic initialisation of TableTools by simply including the <code class="string" title="String">T</code> option in DataTables' <a href= - "//datatables.net/reference/option/dom"><code class="option" title="DataTables initialisation option">dom<span>DT</span></code></a> parameter. This tell DataTables - to insert the TableTools toolbar in that location. Remember to include the Javascript and CSS source files as well!</p> - - <p>It is worth noting that you might need to <a href="swf_path.html">set the <code>sSwfPath</code> parameter</a> to tell TableTools where to find the SWF file for - copy and file save.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').DataTable( { - dom: 'T&lt;&quot;clear&quot;&gt;lfrtip' - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.tableTools.js">../js/dataTables.tableTools.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.tableTools.css">../css/dataTables.tableTools.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li class="active"><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./swf_path.html">Setting the SWF path</a></li> - <li><a href="./new_init.html">Initialisation with `new`</a></li> - <li><a href="./defaults.html">Defaults</a></li> - <li><a href="./select_single.html">Row selection - single row select</a></li> - <li><a href="./select_multi.html">Row selection - multi-row select</a></li> - <li><a href="./select_os.html">Row selection - operating system style</a></li> - <li><a href="./select_column.html">Row selection - row selector on specific cells</a></li> - <li><a href="./multiple_tables.html">Multiple tables</a></li> - <li><a href="./multi_instance.html">Multiple toolbars</a></li> - <li><a href="./collection.html">Button collections</a></li> - <li><a href="./plug-in.html">Plug-in button types</a></li> - <li><a href="./button_text.html">Custom button text</a></li> - <li><a href="./alter_buttons.html">Button arrangement</a></li> - <li><a href="./ajax.html">Ajax loaded data</a></li> - <li><a href="./pdf_message.html">PDF message</a></li> - <li><a href="./bootstrap.html">Bootstrap styling</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/TableTools/examples/swf_path.html b/assets/plugins/datatables/extensions/TableTools/examples/swf_path.html deleted file mode 100644 index 0ab0c136..00000000 --- a/assets/plugins/datatables/extensions/TableTools/examples/swf_path.html +++ /dev/null @@ -1,639 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>TableTools example - Setting the SWF path</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.tableTools.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.tableTools.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - $('#example').DataTable( { - dom: 'T<"clear">lfrtip', - tableTools: { - "sSwfPath": "../swf/copy_csv_xls_pdf.swf" - } - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>TableTools example <span>Setting the SWF path</span></h1> - - <div class="info"> - <p>TableTools uses a Flash SWF file to provide the ability to copy text to the system clipboard and save files locally. TableTools must be able to load the SWF - file in order to provide these facilities. If you aren't using the same directory structure as the TableTools package, you will need to set the - <code>sSwfPath</code> TableTools parameter, as shown in this example.</p> - - <p>Note that TableTools ships with two different SWF files - the only difference between them is that one of them provides the ability to save PDF files while the - other doesn't. The trade off is that the PDF capable file is significantly larger in size (56K v 2K).</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').DataTable( { - dom: 'T&lt;&quot;clear&quot;&gt;lfrtip', - tableTools: { - &quot;sSwfPath&quot;: &quot;../swf/copy_csv_xls_pdf.swf&quot; - } - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.tableTools.js">../js/dataTables.tableTools.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.tableTools.css">../css/dataTables.tableTools.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li class="active"><a href="./swf_path.html">Setting the SWF path</a></li> - <li><a href="./new_init.html">Initialisation with `new`</a></li> - <li><a href="./defaults.html">Defaults</a></li> - <li><a href="./select_single.html">Row selection - single row select</a></li> - <li><a href="./select_multi.html">Row selection - multi-row select</a></li> - <li><a href="./select_os.html">Row selection - operating system style</a></li> - <li><a href="./select_column.html">Row selection - row selector on specific cells</a></li> - <li><a href="./multiple_tables.html">Multiple tables</a></li> - <li><a href="./multi_instance.html">Multiple toolbars</a></li> - <li><a href="./collection.html">Button collections</a></li> - <li><a href="./plug-in.html">Plug-in button types</a></li> - <li><a href="./button_text.html">Custom button text</a></li> - <li><a href="./alter_buttons.html">Button arrangement</a></li> - <li><a href="./ajax.html">Ajax loaded data</a></li> - <li><a href="./pdf_message.html">PDF message</a></li> - <li><a href="./bootstrap.html">Bootstrap styling</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/TableTools/images/collection.png b/assets/plugins/datatables/extensions/TableTools/images/collection.png deleted file mode 100644 index 5dd4dfdf..00000000 Binary files a/assets/plugins/datatables/extensions/TableTools/images/collection.png and /dev/null differ diff --git a/assets/plugins/datatables/extensions/TableTools/images/collection_hover.png b/assets/plugins/datatables/extensions/TableTools/images/collection_hover.png deleted file mode 100644 index 7b37b1e9..00000000 Binary files a/assets/plugins/datatables/extensions/TableTools/images/collection_hover.png and /dev/null differ diff --git a/assets/plugins/datatables/extensions/TableTools/images/copy.png b/assets/plugins/datatables/extensions/TableTools/images/copy.png deleted file mode 100644 index 5b01ab16..00000000 Binary files a/assets/plugins/datatables/extensions/TableTools/images/copy.png and /dev/null differ diff --git a/assets/plugins/datatables/extensions/TableTools/images/copy_hover.png b/assets/plugins/datatables/extensions/TableTools/images/copy_hover.png deleted file mode 100644 index 039a7fc3..00000000 Binary files a/assets/plugins/datatables/extensions/TableTools/images/copy_hover.png and /dev/null differ diff --git a/assets/plugins/datatables/extensions/TableTools/images/csv.png b/assets/plugins/datatables/extensions/TableTools/images/csv.png deleted file mode 100644 index 43df1559..00000000 Binary files a/assets/plugins/datatables/extensions/TableTools/images/csv.png and /dev/null differ diff --git a/assets/plugins/datatables/extensions/TableTools/images/csv_hover.png b/assets/plugins/datatables/extensions/TableTools/images/csv_hover.png deleted file mode 100644 index 10b34d3b..00000000 Binary files a/assets/plugins/datatables/extensions/TableTools/images/csv_hover.png and /dev/null differ diff --git a/assets/plugins/datatables/extensions/TableTools/images/pdf.png b/assets/plugins/datatables/extensions/TableTools/images/pdf.png deleted file mode 100644 index 1b038d08..00000000 Binary files a/assets/plugins/datatables/extensions/TableTools/images/pdf.png and /dev/null differ diff --git a/assets/plugins/datatables/extensions/TableTools/images/pdf_hover.png b/assets/plugins/datatables/extensions/TableTools/images/pdf_hover.png deleted file mode 100644 index eb06855f..00000000 Binary files a/assets/plugins/datatables/extensions/TableTools/images/pdf_hover.png and /dev/null differ diff --git a/assets/plugins/datatables/extensions/TableTools/images/print.png b/assets/plugins/datatables/extensions/TableTools/images/print.png deleted file mode 100644 index 2db08242..00000000 Binary files a/assets/plugins/datatables/extensions/TableTools/images/print.png and /dev/null differ diff --git a/assets/plugins/datatables/extensions/TableTools/images/print_hover.png b/assets/plugins/datatables/extensions/TableTools/images/print_hover.png deleted file mode 100644 index 9808a9cc..00000000 Binary files a/assets/plugins/datatables/extensions/TableTools/images/print_hover.png and /dev/null differ diff --git a/assets/plugins/datatables/extensions/TableTools/images/psd/collection.psd b/assets/plugins/datatables/extensions/TableTools/images/psd/collection.psd deleted file mode 100644 index 7eb7caf2..00000000 Binary files a/assets/plugins/datatables/extensions/TableTools/images/psd/collection.psd and /dev/null differ diff --git a/assets/plugins/datatables/extensions/TableTools/images/psd/copy document.psd b/assets/plugins/datatables/extensions/TableTools/images/psd/copy document.psd deleted file mode 100644 index ca207adc..00000000 Binary files a/assets/plugins/datatables/extensions/TableTools/images/psd/copy document.psd and /dev/null differ diff --git a/assets/plugins/datatables/extensions/TableTools/images/psd/file_types.psd b/assets/plugins/datatables/extensions/TableTools/images/psd/file_types.psd deleted file mode 100644 index 0f280ad5..00000000 Binary files a/assets/plugins/datatables/extensions/TableTools/images/psd/file_types.psd and /dev/null differ diff --git a/assets/plugins/datatables/extensions/TableTools/images/psd/printer.psd b/assets/plugins/datatables/extensions/TableTools/images/psd/printer.psd deleted file mode 100644 index 8c33f7aa..00000000 Binary files a/assets/plugins/datatables/extensions/TableTools/images/psd/printer.psd and /dev/null differ diff --git a/assets/plugins/datatables/extensions/TableTools/images/xls.png b/assets/plugins/datatables/extensions/TableTools/images/xls.png deleted file mode 100644 index 5aaf40d0..00000000 Binary files a/assets/plugins/datatables/extensions/TableTools/images/xls.png and /dev/null differ diff --git a/assets/plugins/datatables/extensions/TableTools/images/xls_hover.png b/assets/plugins/datatables/extensions/TableTools/images/xls_hover.png deleted file mode 100644 index 5b1930af..00000000 Binary files a/assets/plugins/datatables/extensions/TableTools/images/xls_hover.png and /dev/null differ diff --git a/assets/plugins/datatables/extensions/TableTools/js/dataTables.tableTools.js b/assets/plugins/datatables/extensions/TableTools/js/dataTables.tableTools.js deleted file mode 100644 index 749fcd8c..00000000 --- a/assets/plugins/datatables/extensions/TableTools/js/dataTables.tableTools.js +++ /dev/null @@ -1,3230 +0,0 @@ -/*! TableTools 2.2.4 - * 2009-2015 SpryMedia Ltd - datatables.net/license - * - * ZeroClipboard 1.0.4 - * Author: Joseph Huckaby - MIT licensed - */ - -/** - * @summary TableTools - * @description Tools and buttons for DataTables - * @version 2.2.4 - * @file dataTables.tableTools.js - * @author SpryMedia Ltd (www.sprymedia.co.uk) - * @contact www.sprymedia.co.uk/contact - * @copyright Copyright 2009-2015 SpryMedia Ltd. - * - * This source file is free software, available under the following license: - * MIT license - http://datatables.net/license/mit - * - * This source file is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. - * - * For details please refer to: http://www.datatables.net - */ - - -/* Global scope for TableTools for backwards compatibility. - * Will be removed in 2.3 - */ -var TableTools; - -(function(window, document, undefined) { - - -var factory = function( $, DataTable ) { -"use strict"; - - -//include ZeroClipboard.js -/* ZeroClipboard 1.0.4 - * Author: Joseph Huckaby - */ - -var ZeroClipboard_TableTools = { - - version: "1.0.4-TableTools2", - clients: {}, // registered upload clients on page, indexed by id - moviePath: '', // URL to movie - nextId: 1, // ID of next movie - - $: function(thingy) { - // simple DOM lookup utility function - if (typeof(thingy) == 'string') { - thingy = document.getElementById(thingy); - } - if (!thingy.addClass) { - // extend element with a few useful methods - thingy.hide = function() { this.style.display = 'none'; }; - thingy.show = function() { this.style.display = ''; }; - thingy.addClass = function(name) { this.removeClass(name); this.className += ' ' + name; }; - thingy.removeClass = function(name) { - this.className = this.className.replace( new RegExp("\\s*" + name + "\\s*"), " ").replace(/^\s+/, '').replace(/\s+$/, ''); - }; - thingy.hasClass = function(name) { - return !!this.className.match( new RegExp("\\s*" + name + "\\s*") ); - }; - } - return thingy; - }, - - setMoviePath: function(path) { - // set path to ZeroClipboard.swf - this.moviePath = path; - }, - - dispatch: function(id, eventName, args) { - // receive event from flash movie, send to client - var client = this.clients[id]; - if (client) { - client.receiveEvent(eventName, args); - } - }, - - register: function(id, client) { - // register new client to receive events - this.clients[id] = client; - }, - - getDOMObjectPosition: function(obj) { - // get absolute coordinates for dom element - var info = { - left: 0, - top: 0, - width: obj.width ? obj.width : obj.offsetWidth, - height: obj.height ? obj.height : obj.offsetHeight - }; - - if ( obj.style.width !== "" ) { - info.width = obj.style.width.replace("px",""); - } - - if ( obj.style.height !== "" ) { - info.height = obj.style.height.replace("px",""); - } - - while (obj) { - info.left += obj.offsetLeft; - info.top += obj.offsetTop; - obj = obj.offsetParent; - } - - return info; - }, - - Client: function(elem) { - // constructor for new simple upload client - this.handlers = {}; - - // unique ID - this.id = ZeroClipboard_TableTools.nextId++; - this.movieId = 'ZeroClipboard_TableToolsMovie_' + this.id; - - // register client with singleton to receive flash events - ZeroClipboard_TableTools.register(this.id, this); - - // create movie - if (elem) { - this.glue(elem); - } - } -}; - -ZeroClipboard_TableTools.Client.prototype = { - - id: 0, // unique ID for us - ready: false, // whether movie is ready to receive events or not - movie: null, // reference to movie object - clipText: '', // text to copy to clipboard - fileName: '', // default file save name - action: 'copy', // action to perform - handCursorEnabled: true, // whether to show hand cursor, or default pointer cursor - cssEffects: true, // enable CSS mouse effects on dom container - handlers: null, // user event handlers - sized: false, - - glue: function(elem, title) { - // glue to DOM element - // elem can be ID or actual DOM element object - this.domElement = ZeroClipboard_TableTools.$(elem); - - // float just above object, or zIndex 99 if dom element isn't set - var zIndex = 99; - if (this.domElement.style.zIndex) { - zIndex = parseInt(this.domElement.style.zIndex, 10) + 1; - } - - // find X/Y position of domElement - var box = ZeroClipboard_TableTools.getDOMObjectPosition(this.domElement); - - // create floating DIV above element - this.div = document.createElement('div'); - var style = this.div.style; - style.position = 'absolute'; - style.left = '0px'; - style.top = '0px'; - style.width = (box.width) + 'px'; - style.height = box.height + 'px'; - style.zIndex = zIndex; - - if ( typeof title != "undefined" && title !== "" ) { - this.div.title = title; - } - if ( box.width !== 0 && box.height !== 0 ) { - this.sized = true; - } - - // style.backgroundColor = '#f00'; // debug - if ( this.domElement ) { - this.domElement.appendChild(this.div); - this.div.innerHTML = this.getHTML( box.width, box.height ).replace(/&/g, '&amp;'); - } - }, - - positionElement: function() { - var box = ZeroClipboard_TableTools.getDOMObjectPosition(this.domElement); - var style = this.div.style; - - style.position = 'absolute'; - //style.left = (this.domElement.offsetLeft)+'px'; - //style.top = this.domElement.offsetTop+'px'; - style.width = box.width + 'px'; - style.height = box.height + 'px'; - - if ( box.width !== 0 && box.height !== 0 ) { - this.sized = true; - } else { - return; - } - - var flash = this.div.childNodes[0]; - flash.width = box.width; - flash.height = box.height; - }, - - getHTML: function(width, height) { - // return HTML for movie - var html = ''; - var flashvars = 'id=' + this.id + - '&width=' + width + - '&height=' + height; - - if (navigator.userAgent.match(/MSIE/)) { - // IE gets an OBJECT tag - var protocol = location.href.match(/^https/i) ? 'https://' : 'http://'; - html += '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="'+protocol+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="'+width+'" height="'+height+'" id="'+this.movieId+'" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="'+ZeroClipboard_TableTools.moviePath+'" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="'+flashvars+'"/><param name="wmode" value="transparent"/></object>'; - } - else { - // all other browsers get an EMBED tag - html += '<embed id="'+this.movieId+'" src="'+ZeroClipboard_TableTools.moviePath+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="'+width+'" height="'+height+'" name="'+this.movieId+'" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+flashvars+'" wmode="transparent" />'; - } - return html; - }, - - hide: function() { - // temporarily hide floater offscreen - if (this.div) { - this.div.style.left = '-2000px'; - } - }, - - show: function() { - // show ourselves after a call to hide() - this.reposition(); - }, - - destroy: function() { - // destroy control and floater - if (this.domElement && this.div) { - this.hide(); - this.div.innerHTML = ''; - - var body = document.getElementsByTagName('body')[0]; - try { body.removeChild( this.div ); } catch(e) {} - - this.domElement = null; - this.div = null; - } - }, - - reposition: function(elem) { - // reposition our floating div, optionally to new container - // warning: container CANNOT change size, only position - if (elem) { - this.domElement = ZeroClipboard_TableTools.$(elem); - if (!this.domElement) { - this.hide(); - } - } - - if (this.domElement && this.div) { - var box = ZeroClipboard_TableTools.getDOMObjectPosition(this.domElement); - var style = this.div.style; - style.left = '' + box.left + 'px'; - style.top = '' + box.top + 'px'; - } - }, - - clearText: function() { - // clear the text to be copy / saved - this.clipText = ''; - if (this.ready) { - this.movie.clearText(); - } - }, - - appendText: function(newText) { - // append text to that which is to be copied / saved - this.clipText += newText; - if (this.ready) { this.movie.appendText(newText) ;} - }, - - setText: function(newText) { - // set text to be copied to be copied / saved - this.clipText = newText; - if (this.ready) { this.movie.setText(newText) ;} - }, - - setCharSet: function(charSet) { - // set the character set (UTF16LE or UTF8) - this.charSet = charSet; - if (this.ready) { this.movie.setCharSet(charSet) ;} - }, - - setBomInc: function(bomInc) { - // set if the BOM should be included or not - this.incBom = bomInc; - if (this.ready) { this.movie.setBomInc(bomInc) ;} - }, - - setFileName: function(newText) { - // set the file name - this.fileName = newText; - if (this.ready) { - this.movie.setFileName(newText); - } - }, - - setAction: function(newText) { - // set action (save or copy) - this.action = newText; - if (this.ready) { - this.movie.setAction(newText); - } - }, - - addEventListener: function(eventName, func) { - // add user event listener for event - // event types: load, queueStart, fileStart, fileComplete, queueComplete, progress, error, cancel - eventName = eventName.toString().toLowerCase().replace(/^on/, ''); - if (!this.handlers[eventName]) { - this.handlers[eventName] = []; - } - this.handlers[eventName].push(func); - }, - - setHandCursor: function(enabled) { - // enable hand cursor (true), or default arrow cursor (false) - this.handCursorEnabled = enabled; - if (this.ready) { - this.movie.setHandCursor(enabled); - } - }, - - setCSSEffects: function(enabled) { - // enable or disable CSS effects on DOM container - this.cssEffects = !!enabled; - }, - - receiveEvent: function(eventName, args) { - var self; - - // receive event from flash - eventName = eventName.toString().toLowerCase().replace(/^on/, ''); - - // special behavior for certain events - switch (eventName) { - case 'load': - // movie claims it is ready, but in IE this isn't always the case... - // bug fix: Cannot extend EMBED DOM elements in Firefox, must use traditional function - this.movie = document.getElementById(this.movieId); - if (!this.movie) { - self = this; - setTimeout( function() { self.receiveEvent('load', null); }, 1 ); - return; - } - - // firefox on pc needs a "kick" in order to set these in certain cases - if (!this.ready && navigator.userAgent.match(/Firefox/) && navigator.userAgent.match(/Windows/)) { - self = this; - setTimeout( function() { self.receiveEvent('load', null); }, 100 ); - this.ready = true; - return; - } - - this.ready = true; - this.movie.clearText(); - this.movie.appendText( this.clipText ); - this.movie.setFileName( this.fileName ); - this.movie.setAction( this.action ); - this.movie.setCharSet( this.charSet ); - this.movie.setBomInc( this.incBom ); - this.movie.setHandCursor( this.handCursorEnabled ); - break; - - case 'mouseover': - if (this.domElement && this.cssEffects) { - //this.domElement.addClass('hover'); - if (this.recoverActive) { - this.domElement.addClass('active'); - } - } - break; - - case 'mouseout': - if (this.domElement && this.cssEffects) { - this.recoverActive = false; - if (this.domElement.hasClass('active')) { - this.domElement.removeClass('active'); - this.recoverActive = true; - } - //this.domElement.removeClass('hover'); - } - break; - - case 'mousedown': - if (this.domElement && this.cssEffects) { - this.domElement.addClass('active'); - } - break; - - case 'mouseup': - if (this.domElement && this.cssEffects) { - this.domElement.removeClass('active'); - this.recoverActive = false; - } - break; - } // switch eventName - - if (this.handlers[eventName]) { - for (var idx = 0, len = this.handlers[eventName].length; idx < len; idx++) { - var func = this.handlers[eventName][idx]; - - if (typeof(func) == 'function') { - // actual function reference - func(this, args); - } - else if ((typeof(func) == 'object') && (func.length == 2)) { - // PHP style object + method, i.e. [myObject, 'myMethod'] - func[0][ func[1] ](this, args); - } - else if (typeof(func) == 'string') { - // name of function - window[func](this, args); - } - } // foreach event handler defined - } // user defined handler for event - } - -}; - -// For the Flash binding to work, ZeroClipboard_TableTools must be on the global -// object list -window.ZeroClipboard_TableTools = ZeroClipboard_TableTools; -//include TableTools.js -/* TableTools - * 2009-2015 SpryMedia Ltd - datatables.net/license - */ - -/*globals TableTools,ZeroClipboard_TableTools*/ - - -(function($, window, document) { - -/** - * TableTools provides flexible buttons and other tools for a DataTables enhanced table - * @class TableTools - * @constructor - * @param {Object} oDT DataTables instance. When using DataTables 1.10 this can - * also be a jQuery collection, jQuery selector, table node, DataTables API - * instance or DataTables settings object. - * @param {Object} oOpts TableTools options - * @param {String} oOpts.sSwfPath ZeroClipboard SWF path - * @param {String} oOpts.sRowSelect Row selection options - 'none', 'single', 'multi' or 'os' - * @param {Function} oOpts.fnPreRowSelect Callback function just prior to row selection - * @param {Function} oOpts.fnRowSelected Callback function just after row selection - * @param {Function} oOpts.fnRowDeselected Callback function when row is deselected - * @param {Array} oOpts.aButtons List of buttons to be used - */ -TableTools = function( oDT, oOpts ) -{ - /* Santiy check that we are a new instance */ - if ( ! this instanceof TableTools ) - { - alert( "Warning: TableTools must be initialised with the keyword 'new'" ); - } - - // In 1.10 we can use the API to get the settings object from a number of - // sources - var dtSettings = $.fn.dataTable.Api ? - new $.fn.dataTable.Api( oDT ).settings()[0] : - oDT.fnSettings(); - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Public class variables - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - /** - * @namespace Settings object which contains customisable information for TableTools instance - */ - this.s = { - /** - * Store 'this' so the instance can be retrieved from the settings object - * @property that - * @type object - * @default this - */ - "that": this, - - /** - * DataTables settings objects - * @property dt - * @type object - * @default <i>From the oDT init option</i> - */ - "dt": dtSettings, - - /** - * @namespace Print specific information - */ - "print": { - /** - * DataTables draw 'start' point before the printing display was shown - * @property saveStart - * @type int - * @default -1 - */ - "saveStart": -1, - - /** - * DataTables draw 'length' point before the printing display was shown - * @property saveLength - * @type int - * @default -1 - */ - "saveLength": -1, - - /** - * Page scrolling point before the printing display was shown so it can be restored - * @property saveScroll - * @type int - * @default -1 - */ - "saveScroll": -1, - - /** - * Wrapped function to end the print display (to maintain scope) - * @property funcEnd - * @type Function - * @default function () {} - */ - "funcEnd": function () {} - }, - - /** - * A unique ID is assigned to each button in each instance - * @property buttonCounter - * @type int - * @default 0 - */ - "buttonCounter": 0, - - /** - * @namespace Select rows specific information - */ - "select": { - /** - * Select type - can be 'none', 'single' or 'multi' - * @property type - * @type string - * @default "" - */ - "type": "", - - /** - * Array of nodes which are currently selected - * @property selected - * @type array - * @default [] - */ - "selected": [], - - /** - * Function to run before the selection can take place. Will cancel the select if the - * function returns false - * @property preRowSelect - * @type Function - * @default null - */ - "preRowSelect": null, - - /** - * Function to run when a row is selected - * @property postSelected - * @type Function - * @default null - */ - "postSelected": null, - - /** - * Function to run when a row is deselected - * @property postDeselected - * @type Function - * @default null - */ - "postDeselected": null, - - /** - * Indicate if all rows are selected (needed for server-side processing) - * @property all - * @type boolean - * @default false - */ - "all": false, - - /** - * Class name to add to selected TR nodes - * @property selectedClass - * @type String - * @default "" - */ - "selectedClass": "" - }, - - /** - * Store of the user input customisation object - * @property custom - * @type object - * @default {} - */ - "custom": {}, - - /** - * SWF movie path - * @property swfPath - * @type string - * @default "" - */ - "swfPath": "", - - /** - * Default button set - * @property buttonSet - * @type array - * @default [] - */ - "buttonSet": [], - - /** - * When there is more than one TableTools instance for a DataTable, there must be a - * master which controls events (row selection etc) - * @property master - * @type boolean - * @default false - */ - "master": false, - - /** - * Tag names that are used for creating collections and buttons - * @namesapce - */ - "tags": {} - }; - - - /** - * @namespace Common and useful DOM elements for the class instance - */ - this.dom = { - /** - * DIV element that is create and all TableTools buttons (and their children) put into - * @property container - * @type node - * @default null - */ - "container": null, - - /** - * The table node to which TableTools will be applied - * @property table - * @type node - * @default null - */ - "table": null, - - /** - * @namespace Nodes used for the print display - */ - "print": { - /** - * Nodes which have been removed from the display by setting them to display none - * @property hidden - * @type array - * @default [] - */ - "hidden": [], - - /** - * The information display saying telling the user about the print display - * @property message - * @type node - * @default null - */ - "message": null - }, - - /** - * @namespace Nodes used for a collection display. This contains the currently used collection - */ - "collection": { - /** - * The div wrapper containing the buttons in the collection (i.e. the menu) - * @property collection - * @type node - * @default null - */ - "collection": null, - - /** - * Background display to provide focus and capture events - * @property background - * @type node - * @default null - */ - "background": null - } - }; - - /** - * @namespace Name space for the classes that this TableTools instance will use - * @extends TableTools.classes - */ - this.classes = $.extend( true, {}, TableTools.classes ); - if ( this.s.dt.bJUI ) - { - $.extend( true, this.classes, TableTools.classes_themeroller ); - } - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Public class methods - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - /** - * Retreieve the settings object from an instance - * @method fnSettings - * @returns {object} TableTools settings object - */ - this.fnSettings = function () { - return this.s; - }; - - - /* Constructor logic */ - if ( typeof oOpts == 'undefined' ) - { - oOpts = {}; - } - - - TableTools._aInstances.push( this ); - this._fnConstruct( oOpts ); - - return this; -}; - - - -TableTools.prototype = { - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Public methods - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - /** - * Retreieve the settings object from an instance - * @returns {array} List of TR nodes which are currently selected - * @param {boolean} [filtered=false] Get only selected rows which are - * available given the filtering applied to the table. By default - * this is false - i.e. all rows, regardless of filtering are - selected. - */ - "fnGetSelected": function ( filtered ) - { - var - out = [], - data = this.s.dt.aoData, - displayed = this.s.dt.aiDisplay, - i, iLen; - - if ( filtered ) - { - // Only consider filtered rows - for ( i=0, iLen=displayed.length ; i<iLen ; i++ ) - { - if ( data[ displayed[i] ]._DTTT_selected ) - { - out.push( data[ displayed[i] ].nTr ); - } - } - } - else - { - // Use all rows - for ( i=0, iLen=data.length ; i<iLen ; i++ ) - { - if ( data[i]._DTTT_selected ) - { - out.push( data[i].nTr ); - } - } - } - - return out; - }, - - - /** - * Get the data source objects/arrays from DataTables for the selected rows (same as - * fnGetSelected followed by fnGetData on each row from the table) - * @returns {array} Data from the TR nodes which are currently selected - */ - "fnGetSelectedData": function () - { - var out = []; - var data=this.s.dt.aoData; - var i, iLen; - - for ( i=0, iLen=data.length ; i<iLen ; i++ ) - { - if ( data[i]._DTTT_selected ) - { - out.push( this.s.dt.oInstance.fnGetData(i) ); - } - } - - return out; - }, - - - /** - * Get the indexes of the selected rows - * @returns {array} List of row indexes - * @param {boolean} [filtered=false] Get only selected rows which are - * available given the filtering applied to the table. By default - * this is false - i.e. all rows, regardless of filtering are - selected. - */ - "fnGetSelectedIndexes": function ( filtered ) - { - var - out = [], - data = this.s.dt.aoData, - displayed = this.s.dt.aiDisplay, - i, iLen; - - if ( filtered ) - { - // Only consider filtered rows - for ( i=0, iLen=displayed.length ; i<iLen ; i++ ) - { - if ( data[ displayed[i] ]._DTTT_selected ) - { - out.push( displayed[i] ); - } - } - } - else - { - // Use all rows - for ( i=0, iLen=data.length ; i<iLen ; i++ ) - { - if ( data[i]._DTTT_selected ) - { - out.push( i ); - } - } - } - - return out; - }, - - - /** - * Check to see if a current row is selected or not - * @param {Node} n TR node to check if it is currently selected or not - * @returns {Boolean} true if select, false otherwise - */ - "fnIsSelected": function ( n ) - { - var pos = this.s.dt.oInstance.fnGetPosition( n ); - return (this.s.dt.aoData[pos]._DTTT_selected===true) ? true : false; - }, - - - /** - * Select all rows in the table - * @param {boolean} [filtered=false] Select only rows which are available - * given the filtering applied to the table. By default this is false - - * i.e. all rows, regardless of filtering are selected. - */ - "fnSelectAll": function ( filtered ) - { - this._fnRowSelect( filtered ? - this.s.dt.aiDisplay : - this.s.dt.aoData - ); - }, - - - /** - * Deselect all rows in the table - * @param {boolean} [filtered=false] Deselect only rows which are available - * given the filtering applied to the table. By default this is false - - * i.e. all rows, regardless of filtering are deselected. - */ - "fnSelectNone": function ( filtered ) - { - this._fnRowDeselect( this.fnGetSelectedIndexes(filtered) ); - }, - - - /** - * Select row(s) - * @param {node|object|array} n The row(s) to select. Can be a single DOM - * TR node, an array of TR nodes or a jQuery object. - */ - "fnSelect": function ( n ) - { - if ( this.s.select.type == "single" ) - { - this.fnSelectNone(); - this._fnRowSelect( n ); - } - else - { - this._fnRowSelect( n ); - } - }, - - - /** - * Deselect row(s) - * @param {node|object|array} n The row(s) to deselect. Can be a single DOM - * TR node, an array of TR nodes or a jQuery object. - */ - "fnDeselect": function ( n ) - { - this._fnRowDeselect( n ); - }, - - - /** - * Get the title of the document - useful for file names. The title is retrieved from either - * the configuration object's 'title' parameter, or the HTML document title - * @param {Object} oConfig Button configuration object - * @returns {String} Button title - */ - "fnGetTitle": function( oConfig ) - { - var sTitle = ""; - if ( typeof oConfig.sTitle != 'undefined' && oConfig.sTitle !== "" ) { - sTitle = oConfig.sTitle; - } else { - var anTitle = document.getElementsByTagName('title'); - if ( anTitle.length > 0 ) - { - sTitle = anTitle[0].innerHTML; - } - } - - /* Strip characters which the OS will object to - checking for UTF8 support in the scripting - * engine - */ - if ( "\u00A1".toString().length < 4 ) { - return sTitle.replace(/[^a-zA-Z0-9_\u00A1-\uFFFF\.,\-_ !\(\)]/g, ""); - } else { - return sTitle.replace(/[^a-zA-Z0-9_\.,\-_ !\(\)]/g, ""); - } - }, - - - /** - * Calculate a unity array with the column width by proportion for a set of columns to be - * included for a button. This is particularly useful for PDF creation, where we can use the - * column widths calculated by the browser to size the columns in the PDF. - * @param {Object} oConfig Button configuration object - * @returns {Array} Unity array of column ratios - */ - "fnCalcColRatios": function ( oConfig ) - { - var - aoCols = this.s.dt.aoColumns, - aColumnsInc = this._fnColumnTargets( oConfig.mColumns ), - aColWidths = [], - iWidth = 0, iTotal = 0, i, iLen; - - for ( i=0, iLen=aColumnsInc.length ; i<iLen ; i++ ) - { - if ( aColumnsInc[i] ) - { - iWidth = aoCols[i].nTh.offsetWidth; - iTotal += iWidth; - aColWidths.push( iWidth ); - } - } - - for ( i=0, iLen=aColWidths.length ; i<iLen ; i++ ) - { - aColWidths[i] = aColWidths[i] / iTotal; - } - - return aColWidths.join('\t'); - }, - - - /** - * Get the information contained in a table as a string - * @param {Object} oConfig Button configuration object - * @returns {String} Table data as a string - */ - "fnGetTableData": function ( oConfig ) - { - /* In future this could be used to get data from a plain HTML source as well as DataTables */ - if ( this.s.dt ) - { - return this._fnGetDataTablesData( oConfig ); - } - }, - - - /** - * Pass text to a flash button instance, which will be used on the button's click handler - * @param {Object} clip Flash button object - * @param {String} text Text to set - */ - "fnSetText": function ( clip, text ) - { - this._fnFlashSetText( clip, text ); - }, - - - /** - * Resize the flash elements of the buttons attached to this TableTools instance - this is - * useful for when initialising TableTools when it is hidden (display:none) since sizes can't - * be calculated at that time. - */ - "fnResizeButtons": function () - { - for ( var cli in ZeroClipboard_TableTools.clients ) - { - if ( cli ) - { - var client = ZeroClipboard_TableTools.clients[cli]; - if ( typeof client.domElement != 'undefined' && - client.domElement.parentNode ) - { - client.positionElement(); - } - } - } - }, - - - /** - * Check to see if any of the ZeroClipboard client's attached need to be resized - */ - "fnResizeRequired": function () - { - for ( var cli in ZeroClipboard_TableTools.clients ) - { - if ( cli ) - { - var client = ZeroClipboard_TableTools.clients[cli]; - if ( typeof client.domElement != 'undefined' && - client.domElement.parentNode == this.dom.container && - client.sized === false ) - { - return true; - } - } - } - return false; - }, - - - /** - * Programmatically enable or disable the print view - * @param {boolean} [bView=true] Show the print view if true or not given. If false, then - * terminate the print view and return to normal. - * @param {object} [oConfig={}] Configuration for the print view - * @param {boolean} [oConfig.bShowAll=false] Show all rows in the table if true - * @param {string} [oConfig.sInfo] Information message, displayed as an overlay to the - * user to let them know what the print view is. - * @param {string} [oConfig.sMessage] HTML string to show at the top of the document - will - * be included in the printed document. - */ - "fnPrint": function ( bView, oConfig ) - { - if ( oConfig === undefined ) - { - oConfig = {}; - } - - if ( bView === undefined || bView ) - { - this._fnPrintStart( oConfig ); - } - else - { - this._fnPrintEnd(); - } - }, - - - /** - * Show a message to the end user which is nicely styled - * @param {string} message The HTML string to show to the user - * @param {int} time The duration the message is to be shown on screen for (mS) - */ - "fnInfo": function ( message, time ) { - var info = $('<div/>') - .addClass( this.classes.print.info ) - .html( message ) - .appendTo( 'body' ); - - setTimeout( function() { - info.fadeOut( "normal", function() { - info.remove(); - } ); - }, time ); - }, - - - - /** - * Get the container element of the instance for attaching to the DOM - * @returns {node} DOM node - */ - "fnContainer": function () { - return this.dom.container; - }, - - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Private methods (they are of course public in JS, but recommended as private) - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - /** - * Constructor logic - * @method _fnConstruct - * @param {Object} oOpts Same as TableTools constructor - * @returns void - * @private - */ - "_fnConstruct": function ( oOpts ) - { - var that = this; - - this._fnCustomiseSettings( oOpts ); - - /* Container element */ - this.dom.container = document.createElement( this.s.tags.container ); - this.dom.container.className = this.classes.container; - - /* Row selection config */ - if ( this.s.select.type != 'none' ) - { - this._fnRowSelectConfig(); - } - - /* Buttons */ - this._fnButtonDefinations( this.s.buttonSet, this.dom.container ); - - /* Destructor */ - this.s.dt.aoDestroyCallback.push( { - "sName": "TableTools", - "fn": function () { - $(that.s.dt.nTBody) - .off( 'click.DTTT_Select', that.s.custom.sRowSelector ) - .off( 'mousedown.DTTT_Select', 'tr' ) - .off( 'mouseup.DTTT_Select', 'tr' ); - - $(that.dom.container).empty(); - - // Remove the instance - var idx = $.inArray( that, TableTools._aInstances ); - if ( idx !== -1 ) { - TableTools._aInstances.splice( idx, 1 ); - } - } - } ); - }, - - - /** - * Take the user defined settings and the default settings and combine them. - * @method _fnCustomiseSettings - * @param {Object} oOpts Same as TableTools constructor - * @returns void - * @private - */ - "_fnCustomiseSettings": function ( oOpts ) - { - /* Is this the master control instance or not? */ - if ( typeof this.s.dt._TableToolsInit == 'undefined' ) - { - this.s.master = true; - this.s.dt._TableToolsInit = true; - } - - /* We can use the table node from comparisons to group controls */ - this.dom.table = this.s.dt.nTable; - - /* Clone the defaults and then the user options */ - this.s.custom = $.extend( {}, TableTools.DEFAULTS, oOpts ); - - /* Flash file location */ - this.s.swfPath = this.s.custom.sSwfPath; - if ( typeof ZeroClipboard_TableTools != 'undefined' ) - { - ZeroClipboard_TableTools.moviePath = this.s.swfPath; - } - - /* Table row selecting */ - this.s.select.type = this.s.custom.sRowSelect; - this.s.select.preRowSelect = this.s.custom.fnPreRowSelect; - this.s.select.postSelected = this.s.custom.fnRowSelected; - this.s.select.postDeselected = this.s.custom.fnRowDeselected; - - // Backwards compatibility - allow the user to specify a custom class in the initialiser - if ( this.s.custom.sSelectedClass ) - { - this.classes.select.row = this.s.custom.sSelectedClass; - } - - this.s.tags = this.s.custom.oTags; - - /* Button set */ - this.s.buttonSet = this.s.custom.aButtons; - }, - - - /** - * Take the user input arrays and expand them to be fully defined, and then add them to a given - * DOM element - * @method _fnButtonDefinations - * @param {array} buttonSet Set of user defined buttons - * @param {node} wrapper Node to add the created buttons to - * @returns void - * @private - */ - "_fnButtonDefinations": function ( buttonSet, wrapper ) - { - var buttonDef; - - for ( var i=0, iLen=buttonSet.length ; i<iLen ; i++ ) - { - if ( typeof buttonSet[i] == "string" ) - { - if ( typeof TableTools.BUTTONS[ buttonSet[i] ] == 'undefined' ) - { - alert( "TableTools: Warning - unknown button type: "+buttonSet[i] ); - continue; - } - buttonDef = $.extend( {}, TableTools.BUTTONS[ buttonSet[i] ], true ); - } - else - { - if ( typeof TableTools.BUTTONS[ buttonSet[i].sExtends ] == 'undefined' ) - { - alert( "TableTools: Warning - unknown button type: "+buttonSet[i].sExtends ); - continue; - } - var o = $.extend( {}, TableTools.BUTTONS[ buttonSet[i].sExtends ], true ); - buttonDef = $.extend( o, buttonSet[i], true ); - } - - var button = this._fnCreateButton( - buttonDef, - $(wrapper).hasClass(this.classes.collection.container) - ); - - if ( button ) { - wrapper.appendChild( button ); - } - } - }, - - - /** - * Create and configure a TableTools button - * @method _fnCreateButton - * @param {Object} oConfig Button configuration object - * @returns {Node} Button element - * @private - */ - "_fnCreateButton": function ( oConfig, bCollectionButton ) - { - var nButton = this._fnButtonBase( oConfig, bCollectionButton ); - - if ( oConfig.sAction.match(/flash/) ) - { - if ( ! this._fnHasFlash() ) { - return false; - } - - this._fnFlashConfig( nButton, oConfig ); - } - else if ( oConfig.sAction == "text" ) - { - this._fnTextConfig( nButton, oConfig ); - } - else if ( oConfig.sAction == "div" ) - { - this._fnTextConfig( nButton, oConfig ); - } - else if ( oConfig.sAction == "collection" ) - { - this._fnTextConfig( nButton, oConfig ); - this._fnCollectionConfig( nButton, oConfig ); - } - - if ( this.s.dt.iTabIndex !== -1 ) { - $(nButton) - .attr( 'tabindex', this.s.dt.iTabIndex ) - .attr( 'aria-controls', this.s.dt.sTableId ) - .on( 'keyup.DTTT', function (e) { - // Trigger the click event on return key when focused. - // Note that for Flash buttons this has no effect since we - // can't programmatically trigger the Flash export - if ( e.keyCode === 13 ) { - e.stopPropagation(); - - $(this).trigger( 'click' ); - } - } ) - .on( 'mousedown.DTTT', function (e) { - // On mousedown we want to stop the focus occurring on the - // button, focus is used only for the keyboard navigation. - // But using preventDefault for the flash buttons stops the - // flash action. However, it is not the button that gets - // focused but the flash element for flash buttons, so this - // works - if ( ! oConfig.sAction.match(/flash/) ) { - e.preventDefault(); - } - } ); - } - - return nButton; - }, - - - /** - * Create the DOM needed for the button and apply some base properties. All buttons start here - * @method _fnButtonBase - * @param {o} oConfig Button configuration object - * @returns {Node} DIV element for the button - * @private - */ - "_fnButtonBase": function ( o, bCollectionButton ) - { - var sTag, sLiner, sClass; - - if ( bCollectionButton ) - { - sTag = o.sTag && o.sTag !== "default" ? o.sTag : this.s.tags.collection.button; - sLiner = o.sLinerTag && o.sLinerTag !== "default" ? o.sLiner : this.s.tags.collection.liner; - sClass = this.classes.collection.buttons.normal; - } - else - { - sTag = o.sTag && o.sTag !== "default" ? o.sTag : this.s.tags.button; - sLiner = o.sLinerTag && o.sLinerTag !== "default" ? o.sLiner : this.s.tags.liner; - sClass = this.classes.buttons.normal; - } - - var - nButton = document.createElement( sTag ), - nSpan = document.createElement( sLiner ), - masterS = this._fnGetMasterSettings(); - - nButton.className = sClass+" "+o.sButtonClass; - nButton.setAttribute('id', "ToolTables_"+this.s.dt.sInstance+"_"+masterS.buttonCounter ); - nButton.appendChild( nSpan ); - nSpan.innerHTML = o.sButtonText; - - masterS.buttonCounter++; - - return nButton; - }, - - - /** - * Get the settings object for the master instance. When more than one TableTools instance is - * assigned to a DataTable, only one of them can be the 'master' (for the select rows). As such, - * we will typically want to interact with that master for global properties. - * @method _fnGetMasterSettings - * @returns {Object} TableTools settings object - * @private - */ - "_fnGetMasterSettings": function () - { - if ( this.s.master ) - { - return this.s; - } - else - { - /* Look for the master which has the same DT as this one */ - var instances = TableTools._aInstances; - for ( var i=0, iLen=instances.length ; i<iLen ; i++ ) - { - if ( this.dom.table == instances[i].s.dt.nTable ) - { - return instances[i].s; - } - } - } - }, - - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Button collection functions - */ - - /** - * Create a collection button, when activated will present a drop down list of other buttons - * @param {Node} nButton Button to use for the collection activation - * @param {Object} oConfig Button configuration object - * @returns void - * @private - */ - "_fnCollectionConfig": function ( nButton, oConfig ) - { - var nHidden = document.createElement( this.s.tags.collection.container ); - nHidden.style.display = "none"; - nHidden.className = this.classes.collection.container; - oConfig._collection = nHidden; - document.body.appendChild( nHidden ); - - this._fnButtonDefinations( oConfig.aButtons, nHidden ); - }, - - - /** - * Show a button collection - * @param {Node} nButton Button to use for the collection - * @param {Object} oConfig Button configuration object - * @returns void - * @private - */ - "_fnCollectionShow": function ( nButton, oConfig ) - { - var - that = this, - oPos = $(nButton).offset(), - nHidden = oConfig._collection, - iDivX = oPos.left, - iDivY = oPos.top + $(nButton).outerHeight(), - iWinHeight = $(window).height(), iDocHeight = $(document).height(), - iWinWidth = $(window).width(), iDocWidth = $(document).width(); - - nHidden.style.position = "absolute"; - nHidden.style.left = iDivX+"px"; - nHidden.style.top = iDivY+"px"; - nHidden.style.display = "block"; - $(nHidden).css('opacity',0); - - var nBackground = document.createElement('div'); - nBackground.style.position = "absolute"; - nBackground.style.left = "0px"; - nBackground.style.top = "0px"; - nBackground.style.height = ((iWinHeight>iDocHeight)? iWinHeight : iDocHeight) +"px"; - nBackground.style.width = ((iWinWidth>iDocWidth)? iWinWidth : iDocWidth) +"px"; - nBackground.className = this.classes.collection.background; - $(nBackground).css('opacity',0); - - document.body.appendChild( nBackground ); - document.body.appendChild( nHidden ); - - /* Visual corrections to try and keep the collection visible */ - var iDivWidth = $(nHidden).outerWidth(); - var iDivHeight = $(nHidden).outerHeight(); - - if ( iDivX + iDivWidth > iDocWidth ) - { - nHidden.style.left = (iDocWidth-iDivWidth)+"px"; - } - - if ( iDivY + iDivHeight > iDocHeight ) - { - nHidden.style.top = (iDivY-iDivHeight-$(nButton).outerHeight())+"px"; - } - - this.dom.collection.collection = nHidden; - this.dom.collection.background = nBackground; - - /* This results in a very small delay for the end user but it allows the animation to be - * much smoother. If you don't want the animation, then the setTimeout can be removed - */ - setTimeout( function () { - $(nHidden).animate({"opacity": 1}, 500); - $(nBackground).animate({"opacity": 0.25}, 500); - }, 10 ); - - /* Resize the buttons to the Flash contents fit */ - this.fnResizeButtons(); - - /* Event handler to remove the collection display */ - $(nBackground).click( function () { - that._fnCollectionHide.call( that, null, null ); - } ); - }, - - - /** - * Hide a button collection - * @param {Node} nButton Button to use for the collection - * @param {Object} oConfig Button configuration object - * @returns void - * @private - */ - "_fnCollectionHide": function ( nButton, oConfig ) - { - if ( oConfig !== null && oConfig.sExtends == 'collection' ) - { - return; - } - - if ( this.dom.collection.collection !== null ) - { - $(this.dom.collection.collection).animate({"opacity": 0}, 500, function (e) { - this.style.display = "none"; - } ); - - $(this.dom.collection.background).animate({"opacity": 0}, 500, function (e) { - this.parentNode.removeChild( this ); - } ); - - this.dom.collection.collection = null; - this.dom.collection.background = null; - } - }, - - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Row selection functions - */ - - /** - * Add event handlers to a table to allow for row selection - * @method _fnRowSelectConfig - * @returns void - * @private - */ - "_fnRowSelectConfig": function () - { - if ( this.s.master ) - { - var - that = this, - i, iLen, - dt = this.s.dt, - aoOpenRows = this.s.dt.aoOpenRows; - - $(dt.nTable).addClass( this.classes.select.table ); - - // When using OS style selection, we want to cancel the shift text - // selection, but only when the shift key is used (so you can - // actually still select text in the table) - if ( this.s.select.type === 'os' ) { - $(dt.nTBody).on( 'mousedown.DTTT_Select', 'tr', function(e) { - if ( e.shiftKey ) { - - $(dt.nTBody) - .css( '-moz-user-select', 'none' ) - .one('selectstart.DTTT_Select', 'tr', function () { - return false; - } ); - } - } ); - - $(dt.nTBody).on( 'mouseup.DTTT_Select', 'tr', function(e) { - $(dt.nTBody).css( '-moz-user-select', '' ); - } ); - } - - // Row selection - $(dt.nTBody).on( 'click.DTTT_Select', this.s.custom.sRowSelector, function(e) { - var row = this.nodeName.toLowerCase() === 'tr' ? - this : - $(this).parents('tr')[0]; - - var select = that.s.select; - var pos = that.s.dt.oInstance.fnGetPosition( row ); - - /* Sub-table must be ignored (odd that the selector won't do this with >) */ - if ( row.parentNode != dt.nTBody ) { - return; - } - - /* Check that we are actually working with a DataTables controlled row */ - if ( dt.oInstance.fnGetData(row) === null ) { - return; - } - - // Shift click, ctrl click and simple click handling to make - // row selection a lot like a file system in desktop OSs - if ( select.type == 'os' ) { - if ( e.ctrlKey || e.metaKey ) { - // Add or remove from the selection - if ( that.fnIsSelected( row ) ) { - that._fnRowDeselect( row, e ); - } - else { - that._fnRowSelect( row, e ); - } - } - else if ( e.shiftKey ) { - // Add a range of rows, from the last selected row to - // this one - var rowIdxs = that.s.dt.aiDisplay.slice(); // visible rows - var idx1 = $.inArray( select.lastRow, rowIdxs ); - var idx2 = $.inArray( pos, rowIdxs ); - - if ( that.fnGetSelected().length === 0 || idx1 === -1 ) { - // select from top to here - slightly odd, but both - // Windows and Mac OS do this - rowIdxs.splice( $.inArray( pos, rowIdxs )+1, rowIdxs.length ); - } - else { - // reverse so we can shift click 'up' as well as down - if ( idx1 > idx2 ) { - var tmp = idx2; - idx2 = idx1; - idx1 = tmp; - } - - rowIdxs.splice( idx2+1, rowIdxs.length ); - rowIdxs.splice( 0, idx1 ); - } - - if ( ! that.fnIsSelected( row ) ) { - // Select range - that._fnRowSelect( rowIdxs, e ); - } - else { - // Deselect range - need to keep the clicked on row selected - rowIdxs.splice( $.inArray( pos, rowIdxs ), 1 ); - that._fnRowDeselect( rowIdxs, e ); - } - } - else { - // No cmd or shift click. Deselect current if selected, - // or select this row only - if ( that.fnIsSelected( row ) && that.fnGetSelected().length === 1 ) { - that._fnRowDeselect( row, e ); - } - else { - that.fnSelectNone(); - that._fnRowSelect( row, e ); - } - } - } - else if ( that.fnIsSelected( row ) ) { - that._fnRowDeselect( row, e ); - } - else if ( select.type == "single" ) { - that.fnSelectNone(); - that._fnRowSelect( row, e ); - } - else if ( select.type == "multi" ) { - that._fnRowSelect( row, e ); - } - - select.lastRow = pos; - } );//.on('selectstart', function () { return false; } ); - - // Bind a listener to the DataTable for when new rows are created. - // This allows rows to be visually selected when they should be and - // deferred rendering is used. - dt.oApi._fnCallbackReg( dt, 'aoRowCreatedCallback', function (tr, data, index) { - if ( dt.aoData[index]._DTTT_selected ) { - $(tr).addClass( that.classes.select.row ); - } - }, 'TableTools-SelectAll' ); - } - }, - - /** - * Select rows - * @param {*} src Rows to select - see _fnSelectData for a description of valid inputs - * @private - */ - "_fnRowSelect": function ( src, e ) - { - var - that = this, - data = this._fnSelectData( src ), - firstTr = data.length===0 ? null : data[0].nTr, - anSelected = [], - i, len; - - // Get all the rows that will be selected - for ( i=0, len=data.length ; i<len ; i++ ) - { - if ( data[i].nTr ) - { - anSelected.push( data[i].nTr ); - } - } - - // User defined pre-selection function - if ( this.s.select.preRowSelect !== null && !this.s.select.preRowSelect.call(this, e, anSelected, true) ) - { - return; - } - - // Mark them as selected - for ( i=0, len=data.length ; i<len ; i++ ) - { - data[i]._DTTT_selected = true; - - if ( data[i].nTr ) - { - $(data[i].nTr).addClass( that.classes.select.row ); - } - } - - // Post-selection function - if ( this.s.select.postSelected !== null ) - { - this.s.select.postSelected.call( this, anSelected ); - } - - TableTools._fnEventDispatch( this, 'select', anSelected, true ); - }, - - /** - * Deselect rows - * @param {*} src Rows to deselect - see _fnSelectData for a description of valid inputs - * @private - */ - "_fnRowDeselect": function ( src, e ) - { - var - that = this, - data = this._fnSelectData( src ), - firstTr = data.length===0 ? null : data[0].nTr, - anDeselectedTrs = [], - i, len; - - // Get all the rows that will be deselected - for ( i=0, len=data.length ; i<len ; i++ ) - { - if ( data[i].nTr ) - { - anDeselectedTrs.push( data[i].nTr ); - } - } - - // User defined pre-selection function - if ( this.s.select.preRowSelect !== null && !this.s.select.preRowSelect.call(this, e, anDeselectedTrs, false) ) - { - return; - } - - // Mark them as deselected - for ( i=0, len=data.length ; i<len ; i++ ) - { - data[i]._DTTT_selected = false; - - if ( data[i].nTr ) - { - $(data[i].nTr).removeClass( that.classes.select.row ); - } - } - - // Post-deselection function - if ( this.s.select.postDeselected !== null ) - { - this.s.select.postDeselected.call( this, anDeselectedTrs ); - } - - TableTools._fnEventDispatch( this, 'select', anDeselectedTrs, false ); - }, - - /** - * Take a data source for row selection and convert it into aoData points for the DT - * @param {*} src Can be a single DOM TR node, an array of TR nodes (including a - * a jQuery object), a single aoData point from DataTables, an array of aoData - * points or an array of aoData indexes - * @returns {array} An array of aoData points - */ - "_fnSelectData": function ( src ) - { - var out = [], pos, i, iLen; - - if ( src.nodeName ) - { - // Single node - pos = this.s.dt.oInstance.fnGetPosition( src ); - out.push( this.s.dt.aoData[pos] ); - } - else if ( typeof src.length !== 'undefined' ) - { - // jQuery object or an array of nodes, or aoData points - for ( i=0, iLen=src.length ; i<iLen ; i++ ) - { - if ( src[i].nodeName ) - { - pos = this.s.dt.oInstance.fnGetPosition( src[i] ); - out.push( this.s.dt.aoData[pos] ); - } - else if ( typeof src[i] === 'number' ) - { - out.push( this.s.dt.aoData[ src[i] ] ); - } - else - { - out.push( src[i] ); - } - } - - return out; - } - else if ( typeof src === 'number' ) - { - out.push(this.s.dt.aoData[src]); - } - else - { - // A single aoData point - out.push( src ); - } - - return out; - }, - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Text button functions - */ - - /** - * Configure a text based button for interaction events - * @method _fnTextConfig - * @param {Node} nButton Button element which is being considered - * @param {Object} oConfig Button configuration object - * @returns void - * @private - */ - "_fnTextConfig": function ( nButton, oConfig ) - { - var that = this; - - if ( oConfig.fnInit !== null ) - { - oConfig.fnInit.call( this, nButton, oConfig ); - } - - if ( oConfig.sToolTip !== "" ) - { - nButton.title = oConfig.sToolTip; - } - - $(nButton).hover( function () { - if ( oConfig.fnMouseover !== null ) - { - oConfig.fnMouseover.call( this, nButton, oConfig, null ); - } - }, function () { - if ( oConfig.fnMouseout !== null ) - { - oConfig.fnMouseout.call( this, nButton, oConfig, null ); - } - } ); - - if ( oConfig.fnSelect !== null ) - { - TableTools._fnEventListen( this, 'select', function (n) { - oConfig.fnSelect.call( that, nButton, oConfig, n ); - } ); - } - - $(nButton).click( function (e) { - //e.preventDefault(); - - if ( oConfig.fnClick !== null ) - { - oConfig.fnClick.call( that, nButton, oConfig, null, e ); - } - - /* Provide a complete function to match the behaviour of the flash elements */ - if ( oConfig.fnComplete !== null ) - { - oConfig.fnComplete.call( that, nButton, oConfig, null, null ); - } - - that._fnCollectionHide( nButton, oConfig ); - } ); - }, - - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Flash button functions - */ - - /** - * Check if the Flash plug-in is available - * @method _fnHasFlash - * @returns {boolean} `true` if Flash available, `false` otherwise - * @private - */ - "_fnHasFlash": function () - { - try { - var fo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash'); - if (fo) { - return true; - } - } - catch (e) { - if ( - navigator.mimeTypes && - navigator.mimeTypes['application/x-shockwave-flash'] !== undefined && - navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin - ) { - return true; - } - } - - return false; - }, - - - /** - * Configure a flash based button for interaction events - * @method _fnFlashConfig - * @param {Node} nButton Button element which is being considered - * @param {o} oConfig Button configuration object - * @returns void - * @private - */ - "_fnFlashConfig": function ( nButton, oConfig ) - { - var that = this; - var flash = new ZeroClipboard_TableTools.Client(); - - if ( oConfig.fnInit !== null ) - { - oConfig.fnInit.call( this, nButton, oConfig ); - } - - flash.setHandCursor( true ); - - if ( oConfig.sAction == "flash_save" ) - { - flash.setAction( 'save' ); - flash.setCharSet( (oConfig.sCharSet=="utf16le") ? 'UTF16LE' : 'UTF8' ); - flash.setBomInc( oConfig.bBomInc ); - flash.setFileName( oConfig.sFileName.replace('*', this.fnGetTitle(oConfig)) ); - } - else if ( oConfig.sAction == "flash_pdf" ) - { - flash.setAction( 'pdf' ); - flash.setFileName( oConfig.sFileName.replace('*', this.fnGetTitle(oConfig)) ); - } - else - { - flash.setAction( 'copy' ); - } - - flash.addEventListener('mouseOver', function(client) { - if ( oConfig.fnMouseover !== null ) - { - oConfig.fnMouseover.call( that, nButton, oConfig, flash ); - } - } ); - - flash.addEventListener('mouseOut', function(client) { - if ( oConfig.fnMouseout !== null ) - { - oConfig.fnMouseout.call( that, nButton, oConfig, flash ); - } - } ); - - flash.addEventListener('mouseDown', function(client) { - if ( oConfig.fnClick !== null ) - { - oConfig.fnClick.call( that, nButton, oConfig, flash ); - } - } ); - - flash.addEventListener('complete', function (client, text) { - if ( oConfig.fnComplete !== null ) - { - oConfig.fnComplete.call( that, nButton, oConfig, flash, text ); - } - that._fnCollectionHide( nButton, oConfig ); - } ); - - if ( oConfig.fnSelect !== null ) - { - TableTools._fnEventListen( this, 'select', function (n) { - oConfig.fnSelect.call( that, nButton, oConfig, n ); - } ); - } - - this._fnFlashGlue( flash, nButton, oConfig.sToolTip ); - }, - - - /** - * Wait until the id is in the DOM before we "glue" the swf. Note that this function will call - * itself (using setTimeout) until it completes successfully - * @method _fnFlashGlue - * @param {Object} clip Zero clipboard object - * @param {Node} node node to glue swf to - * @param {String} text title of the flash movie - * @returns void - * @private - */ - "_fnFlashGlue": function ( flash, node, text ) - { - var that = this; - var id = node.getAttribute('id'); - - if ( document.getElementById(id) ) - { - flash.glue( node, text ); - } - else - { - setTimeout( function () { - that._fnFlashGlue( flash, node, text ); - }, 100 ); - } - }, - - - /** - * Set the text for the flash clip to deal with - * - * This function is required for large information sets. There is a limit on the - * amount of data that can be transferred between Javascript and Flash in a single call, so - * we use this method to build up the text in Flash by sending over chunks. It is estimated - * that the data limit is around 64k, although it is undocumented, and appears to be different - * between different flash versions. We chunk at 8KiB. - * @method _fnFlashSetText - * @param {Object} clip the ZeroClipboard object - * @param {String} sData the data to be set - * @returns void - * @private - */ - "_fnFlashSetText": function ( clip, sData ) - { - var asData = this._fnChunkData( sData, 8192 ); - - clip.clearText(); - for ( var i=0, iLen=asData.length ; i<iLen ; i++ ) - { - clip.appendText( asData[i] ); - } - }, - - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Data retrieval functions - */ - - /** - * Convert the mixed columns variable into a boolean array the same size as the columns, which - * indicates which columns we want to include - * @method _fnColumnTargets - * @param {String|Array} mColumns The columns to be included in data retrieval. If a string - * then it can take the value of "visible" or "hidden" (to include all visible or - * hidden columns respectively). Or an array of column indexes - * @returns {Array} A boolean array the length of the columns of the table, which each value - * indicating if the column is to be included or not - * @private - */ - "_fnColumnTargets": function ( mColumns ) - { - var aColumns = []; - var dt = this.s.dt; - var i, iLen; - var columns = dt.aoColumns; - var columnCount = columns.length; - - if ( typeof mColumns == "function" ) - { - var a = mColumns.call( this, dt ); - - for ( i=0, iLen=columnCount ; i<iLen ; i++ ) - { - aColumns.push( $.inArray( i, a ) !== -1 ? true : false ); - } - } - else if ( typeof mColumns == "object" ) - { - for ( i=0, iLen=columnCount ; i<iLen ; i++ ) - { - aColumns.push( false ); - } - - for ( i=0, iLen=mColumns.length ; i<iLen ; i++ ) - { - aColumns[ mColumns[i] ] = true; - } - } - else if ( mColumns == "visible" ) - { - for ( i=0, iLen=columnCount ; i<iLen ; i++ ) - { - aColumns.push( columns[i].bVisible ? true : false ); - } - } - else if ( mColumns == "hidden" ) - { - for ( i=0, iLen=columnCount ; i<iLen ; i++ ) - { - aColumns.push( columns[i].bVisible ? false : true ); - } - } - else if ( mColumns == "sortable" ) - { - for ( i=0, iLen=columnCount ; i<iLen ; i++ ) - { - aColumns.push( columns[i].bSortable ? true : false ); - } - } - else /* all */ - { - for ( i=0, iLen=columnCount ; i<iLen ; i++ ) - { - aColumns.push( true ); - } - } - - return aColumns; - }, - - - /** - * New line character(s) depend on the platforms - * @method method - * @param {Object} oConfig Button configuration object - only interested in oConfig.sNewLine - * @returns {String} Newline character - */ - "_fnNewline": function ( oConfig ) - { - if ( oConfig.sNewLine == "auto" ) - { - return navigator.userAgent.match(/Windows/) ? "\r\n" : "\n"; - } - else - { - return oConfig.sNewLine; - } - }, - - - /** - * Get data from DataTables' internals and format it for output - * @method _fnGetDataTablesData - * @param {Object} oConfig Button configuration object - * @param {String} oConfig.sFieldBoundary Field boundary for the data cells in the string - * @param {String} oConfig.sFieldSeperator Field separator for the data cells - * @param {String} oConfig.sNewline New line options - * @param {Mixed} oConfig.mColumns Which columns should be included in the output - * @param {Boolean} oConfig.bHeader Include the header - * @param {Boolean} oConfig.bFooter Include the footer - * @param {Boolean} oConfig.bSelectedOnly Include only the selected rows in the output - * @returns {String} Concatenated string of data - * @private - */ - "_fnGetDataTablesData": function ( oConfig ) - { - var i, iLen, j, jLen; - var aRow, aData=[], sLoopData='', arr; - var dt = this.s.dt, tr, child; - var regex = new RegExp(oConfig.sFieldBoundary, "g"); /* Do it here for speed */ - var aColumnsInc = this._fnColumnTargets( oConfig.mColumns ); - var bSelectedOnly = (typeof oConfig.bSelectedOnly != 'undefined') ? oConfig.bSelectedOnly : false; - - /* - * Header - */ - if ( oConfig.bHeader ) - { - aRow = []; - - for ( i=0, iLen=dt.aoColumns.length ; i<iLen ; i++ ) - { - if ( aColumnsInc[i] ) - { - sLoopData = dt.aoColumns[i].sTitle.replace(/\n/g," ").replace( /<.*?>/g, "" ).replace(/^\s+|\s+$/g,""); - sLoopData = this._fnHtmlDecode( sLoopData ); - - aRow.push( this._fnBoundData( sLoopData, oConfig.sFieldBoundary, regex ) ); - } - } - - aData.push( aRow.join(oConfig.sFieldSeperator) ); - } - - bSelectedOnly = true; - - /* - * Body - */ - var aDataIndex; - var aSelected = this.fnGetSelectedIndexes(); - bSelectedOnly = this.s.select.type !== "none" && bSelectedOnly && aSelected.length !== 0; - - if ( bSelectedOnly ) { - // Use the selected indexes - aDataIndex = aSelected; - } - else if ( DataTable.Api ) { - // 1.10+ style - aDataIndex = new DataTable.Api( dt ) - .rows( oConfig.oSelectorOpts ) - .indexes() - .flatten() - .toArray(); - } - else { - // 1.9- style - aDataIndex = dt.oInstance - .$('tr', oConfig.oSelectorOpts) - .map( function (id, row) { - return dt.oInstance.fnGetPosition( row ); - } ) - .get(); - } - - for ( j=0, jLen=aDataIndex.length ; j<jLen ; j++ ) - { - tr = dt.aoData[ aDataIndex[j] ].nTr; - aRow = []; - - /* Columns */ - for ( i=0, iLen=dt.aoColumns.length ; i<iLen ; i++ ) - { - if ( aColumnsInc[i] ) - { - /* Convert to strings (with small optimisation) */ - var mTypeData = dt.oApi._fnGetCellData( dt, aDataIndex[j], i, 'display' ); - if ( oConfig.fnCellRender ) - { - sLoopData = oConfig.fnCellRender( mTypeData, i, tr, aDataIndex[j] )+""; - } - else if ( typeof mTypeData == "string" ) - { - /* Strip newlines, replace img tags with alt attr. and finally strip html... */ - sLoopData = mTypeData.replace(/\n/g," "); - sLoopData = - sLoopData.replace(/<img.*?\s+alt\s*=\s*(?:"([^"]+)"|'([^']+)'|([^\s>]+)).*?>/gi, - '$1$2$3'); - sLoopData = sLoopData.replace( /<.*?>/g, "" ); - } - else - { - sLoopData = mTypeData+""; - } - - /* Trim and clean the data */ - sLoopData = sLoopData.replace(/^\s+/, '').replace(/\s+$/, ''); - sLoopData = this._fnHtmlDecode( sLoopData ); - - /* Bound it and add it to the total data */ - aRow.push( this._fnBoundData( sLoopData, oConfig.sFieldBoundary, regex ) ); - } - } - - aData.push( aRow.join(oConfig.sFieldSeperator) ); - - /* Details rows from fnOpen */ - if ( oConfig.bOpenRows ) - { - arr = $.grep(dt.aoOpenRows, function(o) { return o.nParent === tr; }); - - if ( arr.length === 1 ) - { - sLoopData = this._fnBoundData( $('td', arr[0].nTr).html(), oConfig.sFieldBoundary, regex ); - aData.push( sLoopData ); - } - } - } - - /* - * Footer - */ - if ( oConfig.bFooter && dt.nTFoot !== null ) - { - aRow = []; - - for ( i=0, iLen=dt.aoColumns.length ; i<iLen ; i++ ) - { - if ( aColumnsInc[i] && dt.aoColumns[i].nTf !== null ) - { - sLoopData = dt.aoColumns[i].nTf.innerHTML.replace(/\n/g," ").replace( /<.*?>/g, "" ); - sLoopData = this._fnHtmlDecode( sLoopData ); - - aRow.push( this._fnBoundData( sLoopData, oConfig.sFieldBoundary, regex ) ); - } - } - - aData.push( aRow.join(oConfig.sFieldSeperator) ); - } - - var _sLastData = aData.join( this._fnNewline(oConfig) ); - return _sLastData; - }, - - - /** - * Wrap data up with a boundary string - * @method _fnBoundData - * @param {String} sData data to bound - * @param {String} sBoundary bounding char(s) - * @param {RegExp} regex search for the bounding chars - constructed outside for efficiency - * in the loop - * @returns {String} bound data - * @private - */ - "_fnBoundData": function ( sData, sBoundary, regex ) - { - if ( sBoundary === "" ) - { - return sData; - } - else - { - return sBoundary + sData.replace(regex, sBoundary+sBoundary) + sBoundary; - } - }, - - - /** - * Break a string up into an array of smaller strings - * @method _fnChunkData - * @param {String} sData data to be broken up - * @param {Int} iSize chunk size - * @returns {Array} String array of broken up text - * @private - */ - "_fnChunkData": function ( sData, iSize ) - { - var asReturn = []; - var iStrlen = sData.length; - - for ( var i=0 ; i<iStrlen ; i+=iSize ) - { - if ( i+iSize < iStrlen ) - { - asReturn.push( sData.substring( i, i+iSize ) ); - } - else - { - asReturn.push( sData.substring( i, iStrlen ) ); - } - } - - return asReturn; - }, - - - /** - * Decode HTML entities - * @method _fnHtmlDecode - * @param {String} sData encoded string - * @returns {String} decoded string - * @private - */ - "_fnHtmlDecode": function ( sData ) - { - if ( sData.indexOf('&') === -1 ) - { - return sData; - } - - var n = document.createElement('div'); - - return sData.replace( /&([^\s]*?);/g, function( match, match2 ) { - if ( match.substr(1, 1) === '#' ) - { - return String.fromCharCode( Number(match2.substr(1)) ); - } - else - { - n.innerHTML = match; - return n.childNodes[0].nodeValue; - } - } ); - }, - - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Printing functions - */ - - /** - * Show print display - * @method _fnPrintStart - * @param {Event} e Event object - * @param {Object} oConfig Button configuration object - * @returns void - * @private - */ - "_fnPrintStart": function ( oConfig ) - { - var that = this; - var oSetDT = this.s.dt; - - /* Parse through the DOM hiding everything that isn't needed for the table */ - this._fnPrintHideNodes( oSetDT.nTable ); - - /* Show the whole table */ - this.s.print.saveStart = oSetDT._iDisplayStart; - this.s.print.saveLength = oSetDT._iDisplayLength; - - if ( oConfig.bShowAll ) - { - oSetDT._iDisplayStart = 0; - oSetDT._iDisplayLength = -1; - if ( oSetDT.oApi._fnCalculateEnd ) { - oSetDT.oApi._fnCalculateEnd( oSetDT ); - } - oSetDT.oApi._fnDraw( oSetDT ); - } - - /* Adjust the display for scrolling which might be done by DataTables */ - if ( oSetDT.oScroll.sX !== "" || oSetDT.oScroll.sY !== "" ) - { - this._fnPrintScrollStart( oSetDT ); - - // If the table redraws while in print view, the DataTables scrolling - // setup would hide the header, so we need to readd it on draw - $(this.s.dt.nTable).bind('draw.DTTT_Print', function () { - that._fnPrintScrollStart( oSetDT ); - } ); - } - - /* Remove the other DataTables feature nodes - but leave the table! and info div */ - var anFeature = oSetDT.aanFeatures; - for ( var cFeature in anFeature ) - { - if ( cFeature != 'i' && cFeature != 't' && cFeature.length == 1 ) - { - for ( var i=0, iLen=anFeature[cFeature].length ; i<iLen ; i++ ) - { - this.dom.print.hidden.push( { - "node": anFeature[cFeature][i], - "display": "block" - } ); - anFeature[cFeature][i].style.display = "none"; - } - } - } - - /* Print class can be used for styling */ - $(document.body).addClass( this.classes.print.body ); - - /* Show information message to let the user know what is happening */ - if ( oConfig.sInfo !== "" ) - { - this.fnInfo( oConfig.sInfo, 3000 ); - } - - /* Add a message at the top of the page */ - if ( oConfig.sMessage ) - { - $('<div/>') - .addClass( this.classes.print.message ) - .html( oConfig.sMessage ) - .prependTo( 'body' ); - } - - /* Cache the scrolling and the jump to the top of the page */ - this.s.print.saveScroll = $(window).scrollTop(); - window.scrollTo( 0, 0 ); - - /* Bind a key event listener to the document for the escape key - - * it is removed in the callback - */ - $(document).bind( "keydown.DTTT", function(e) { - /* Only interested in the escape key */ - if ( e.keyCode == 27 ) - { - e.preventDefault(); - that._fnPrintEnd.call( that, e ); - } - } ); - }, - - - /** - * Printing is finished, resume normal display - * @method _fnPrintEnd - * @param {Event} e Event object - * @returns void - * @private - */ - "_fnPrintEnd": function ( e ) - { - var that = this; - var oSetDT = this.s.dt; - var oSetPrint = this.s.print; - var oDomPrint = this.dom.print; - - /* Show all hidden nodes */ - this._fnPrintShowNodes(); - - /* Restore DataTables' scrolling */ - if ( oSetDT.oScroll.sX !== "" || oSetDT.oScroll.sY !== "" ) - { - $(this.s.dt.nTable).unbind('draw.DTTT_Print'); - - this._fnPrintScrollEnd(); - } - - /* Restore the scroll */ - window.scrollTo( 0, oSetPrint.saveScroll ); - - /* Drop the print message */ - $('div.'+this.classes.print.message).remove(); - - /* Styling class */ - $(document.body).removeClass( 'DTTT_Print' ); - - /* Restore the table length */ - oSetDT._iDisplayStart = oSetPrint.saveStart; - oSetDT._iDisplayLength = oSetPrint.saveLength; - if ( oSetDT.oApi._fnCalculateEnd ) { - oSetDT.oApi._fnCalculateEnd( oSetDT ); - } - oSetDT.oApi._fnDraw( oSetDT ); - - $(document).unbind( "keydown.DTTT" ); - }, - - - /** - * Take account of scrolling in DataTables by showing the full table - * @returns void - * @private - */ - "_fnPrintScrollStart": function () - { - var - oSetDT = this.s.dt, - nScrollHeadInner = oSetDT.nScrollHead.getElementsByTagName('div')[0], - nScrollHeadTable = nScrollHeadInner.getElementsByTagName('table')[0], - nScrollBody = oSetDT.nTable.parentNode, - nTheadSize, nTfootSize; - - /* Copy the header in the thead in the body table, this way we show one single table when - * in print view. Note that this section of code is more or less verbatim from DT 1.7.0 - */ - nTheadSize = oSetDT.nTable.getElementsByTagName('thead'); - if ( nTheadSize.length > 0 ) - { - oSetDT.nTable.removeChild( nTheadSize[0] ); - } - - if ( oSetDT.nTFoot !== null ) - { - nTfootSize = oSetDT.nTable.getElementsByTagName('tfoot'); - if ( nTfootSize.length > 0 ) - { - oSetDT.nTable.removeChild( nTfootSize[0] ); - } - } - - nTheadSize = oSetDT.nTHead.cloneNode(true); - oSetDT.nTable.insertBefore( nTheadSize, oSetDT.nTable.childNodes[0] ); - - if ( oSetDT.nTFoot !== null ) - { - nTfootSize = oSetDT.nTFoot.cloneNode(true); - oSetDT.nTable.insertBefore( nTfootSize, oSetDT.nTable.childNodes[1] ); - } - - /* Now adjust the table's viewport so we can actually see it */ - if ( oSetDT.oScroll.sX !== "" ) - { - oSetDT.nTable.style.width = $(oSetDT.nTable).outerWidth()+"px"; - nScrollBody.style.width = $(oSetDT.nTable).outerWidth()+"px"; - nScrollBody.style.overflow = "visible"; - } - - if ( oSetDT.oScroll.sY !== "" ) - { - nScrollBody.style.height = $(oSetDT.nTable).outerHeight()+"px"; - nScrollBody.style.overflow = "visible"; - } - }, - - - /** - * Take account of scrolling in DataTables by showing the full table. Note that the redraw of - * the DataTable that we do will actually deal with the majority of the hard work here - * @returns void - * @private - */ - "_fnPrintScrollEnd": function () - { - var - oSetDT = this.s.dt, - nScrollBody = oSetDT.nTable.parentNode; - - if ( oSetDT.oScroll.sX !== "" ) - { - nScrollBody.style.width = oSetDT.oApi._fnStringToCss( oSetDT.oScroll.sX ); - nScrollBody.style.overflow = "auto"; - } - - if ( oSetDT.oScroll.sY !== "" ) - { - nScrollBody.style.height = oSetDT.oApi._fnStringToCss( oSetDT.oScroll.sY ); - nScrollBody.style.overflow = "auto"; - } - }, - - - /** - * Resume the display of all TableTools hidden nodes - * @method _fnPrintShowNodes - * @returns void - * @private - */ - "_fnPrintShowNodes": function ( ) - { - var anHidden = this.dom.print.hidden; - - for ( var i=0, iLen=anHidden.length ; i<iLen ; i++ ) - { - anHidden[i].node.style.display = anHidden[i].display; - } - anHidden.splice( 0, anHidden.length ); - }, - - - /** - * Hide nodes which are not needed in order to display the table. Note that this function is - * recursive - * @method _fnPrintHideNodes - * @param {Node} nNode Element which should be showing in a 'print' display - * @returns void - * @private - */ - "_fnPrintHideNodes": function ( nNode ) - { - var anHidden = this.dom.print.hidden; - - var nParent = nNode.parentNode; - var nChildren = nParent.childNodes; - for ( var i=0, iLen=nChildren.length ; i<iLen ; i++ ) - { - if ( nChildren[i] != nNode && nChildren[i].nodeType == 1 ) - { - /* If our node is shown (don't want to show nodes which were previously hidden) */ - var sDisplay = $(nChildren[i]).css("display"); - if ( sDisplay != "none" ) - { - /* Cache the node and it's previous state so we can restore it */ - anHidden.push( { - "node": nChildren[i], - "display": sDisplay - } ); - nChildren[i].style.display = "none"; - } - } - } - - if ( nParent.nodeName.toUpperCase() != "BODY" ) - { - this._fnPrintHideNodes( nParent ); - } - } -}; - - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Static variables - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/** - * Store of all instances that have been created of TableTools, so one can look up other (when - * there is need of a master) - * @property _aInstances - * @type Array - * @default [] - * @private - */ -TableTools._aInstances = []; - - -/** - * Store of all listeners and their callback functions - * @property _aListeners - * @type Array - * @default [] - */ -TableTools._aListeners = []; - - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Static methods - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/** - * Get an array of all the master instances - * @method fnGetMasters - * @returns {Array} List of master TableTools instances - * @static - */ -TableTools.fnGetMasters = function () -{ - var a = []; - for ( var i=0, iLen=TableTools._aInstances.length ; i<iLen ; i++ ) - { - if ( TableTools._aInstances[i].s.master ) - { - a.push( TableTools._aInstances[i] ); - } - } - return a; -}; - -/** - * Get the master instance for a table node (or id if a string is given) - * @method fnGetInstance - * @returns {Object} ID of table OR table node, for which we want the TableTools instance - * @static - */ -TableTools.fnGetInstance = function ( node ) -{ - if ( typeof node != 'object' ) - { - node = document.getElementById(node); - } - - for ( var i=0, iLen=TableTools._aInstances.length ; i<iLen ; i++ ) - { - if ( TableTools._aInstances[i].s.master && TableTools._aInstances[i].dom.table == node ) - { - return TableTools._aInstances[i]; - } - } - return null; -}; - - -/** - * Add a listener for a specific event - * @method _fnEventListen - * @param {Object} that Scope of the listening function (i.e. 'this' in the caller) - * @param {String} type Event type - * @param {Function} fn Function - * @returns void - * @private - * @static - */ -TableTools._fnEventListen = function ( that, type, fn ) -{ - TableTools._aListeners.push( { - "that": that, - "type": type, - "fn": fn - } ); -}; - - -/** - * An event has occurred - look up every listener and fire it off. We check that the event we are - * going to fire is attached to the same table (using the table node as reference) before firing - * @method _fnEventDispatch - * @param {Object} that Scope of the listening function (i.e. 'this' in the caller) - * @param {String} type Event type - * @param {Node} node Element that the event occurred on (may be null) - * @param {boolean} [selected] Indicate if the node was selected (true) or deselected (false) - * @returns void - * @private - * @static - */ -TableTools._fnEventDispatch = function ( that, type, node, selected ) -{ - var listeners = TableTools._aListeners; - for ( var i=0, iLen=listeners.length ; i<iLen ; i++ ) - { - if ( that.dom.table == listeners[i].that.dom.table && listeners[i].type == type ) - { - listeners[i].fn( node, selected ); - } - } -}; - - - - - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Constants - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - - -TableTools.buttonBase = { - // Button base - "sAction": "text", - "sTag": "default", - "sLinerTag": "default", - "sButtonClass": "DTTT_button_text", - "sButtonText": "Button text", - "sTitle": "", - "sToolTip": "", - - // Common button specific options - "sCharSet": "utf8", - "bBomInc": false, - "sFileName": "*.csv", - "sFieldBoundary": "", - "sFieldSeperator": "\t", - "sNewLine": "auto", - "mColumns": "all", /* "all", "visible", "hidden" or array of column integers */ - "bHeader": true, - "bFooter": true, - "bOpenRows": false, - "bSelectedOnly": false, - "oSelectorOpts": undefined, // See http://datatables.net/docs/DataTables/1.9.4/#$ for full options - - // Callbacks - "fnMouseover": null, - "fnMouseout": null, - "fnClick": null, - "fnSelect": null, - "fnComplete": null, - "fnInit": null, - "fnCellRender": null -}; - - -/** - * @namespace Default button configurations - */ -TableTools.BUTTONS = { - "csv": $.extend( {}, TableTools.buttonBase, { - "sAction": "flash_save", - "sButtonClass": "DTTT_button_csv", - "sButtonText": "CSV", - "sFieldBoundary": '"', - "sFieldSeperator": ",", - "fnClick": function( nButton, oConfig, flash ) { - this.fnSetText( flash, this.fnGetTableData(oConfig) ); - } - } ), - - "xls": $.extend( {}, TableTools.buttonBase, { - "sAction": "flash_save", - "sCharSet": "utf16le", - "bBomInc": true, - "sButtonClass": "DTTT_button_xls", - "sButtonText": "Excel", - "fnClick": function( nButton, oConfig, flash ) { - this.fnSetText( flash, this.fnGetTableData(oConfig) ); - } - } ), - - "copy": $.extend( {}, TableTools.buttonBase, { - "sAction": "flash_copy", - "sButtonClass": "DTTT_button_copy", - "sButtonText": "Copy", - "fnClick": function( nButton, oConfig, flash ) { - this.fnSetText( flash, this.fnGetTableData(oConfig) ); - }, - "fnComplete": function(nButton, oConfig, flash, text) { - var lines = text.split('\n').length; - if (oConfig.bHeader) lines--; - if (this.s.dt.nTFoot !== null && oConfig.bFooter) lines--; - var plural = (lines==1) ? "" : "s"; - this.fnInfo( '<h6>Table copied</h6>'+ - '<p>Copied '+lines+' row'+plural+' to the clipboard.</p>', - 1500 - ); - } - } ), - - "pdf": $.extend( {}, TableTools.buttonBase, { - "sAction": "flash_pdf", - "sNewLine": "\n", - "sFileName": "*.pdf", - "sButtonClass": "DTTT_button_pdf", - "sButtonText": "PDF", - "sPdfOrientation": "portrait", - "sPdfSize": "A4", - "sPdfMessage": "", - "fnClick": function( nButton, oConfig, flash ) { - this.fnSetText( flash, - "title:"+ this.fnGetTitle(oConfig) +"\n"+ - "message:"+ oConfig.sPdfMessage +"\n"+ - "colWidth:"+ this.fnCalcColRatios(oConfig) +"\n"+ - "orientation:"+ oConfig.sPdfOrientation +"\n"+ - "size:"+ oConfig.sPdfSize +"\n"+ - "--/TableToolsOpts--\n" + - this.fnGetTableData(oConfig) - ); - } - } ), - - "print": $.extend( {}, TableTools.buttonBase, { - "sInfo": "<h6>Print view</h6><p>Please use your browser's print function to "+ - "print this table. Press escape when finished.</p>", - "sMessage": null, - "bShowAll": true, - "sToolTip": "View print view", - "sButtonClass": "DTTT_button_print", - "sButtonText": "Print", - "fnClick": function ( nButton, oConfig ) { - this.fnPrint( true, oConfig ); - } - } ), - - "text": $.extend( {}, TableTools.buttonBase ), - - "select": $.extend( {}, TableTools.buttonBase, { - "sButtonText": "Select button", - "fnSelect": function( nButton, oConfig ) { - if ( this.fnGetSelected().length !== 0 ) { - $(nButton).removeClass( this.classes.buttons.disabled ); - } else { - $(nButton).addClass( this.classes.buttons.disabled ); - } - }, - "fnInit": function( nButton, oConfig ) { - $(nButton).addClass( this.classes.buttons.disabled ); - } - } ), - - "select_single": $.extend( {}, TableTools.buttonBase, { - "sButtonText": "Select button", - "fnSelect": function( nButton, oConfig ) { - var iSelected = this.fnGetSelected().length; - if ( iSelected == 1 ) { - $(nButton).removeClass( this.classes.buttons.disabled ); - } else { - $(nButton).addClass( this.classes.buttons.disabled ); - } - }, - "fnInit": function( nButton, oConfig ) { - $(nButton).addClass( this.classes.buttons.disabled ); - } - } ), - - "select_all": $.extend( {}, TableTools.buttonBase, { - "sButtonText": "Select all", - "fnClick": function( nButton, oConfig ) { - this.fnSelectAll(); - }, - "fnSelect": function( nButton, oConfig ) { - if ( this.fnGetSelected().length == this.s.dt.fnRecordsDisplay() ) { - $(nButton).addClass( this.classes.buttons.disabled ); - } else { - $(nButton).removeClass( this.classes.buttons.disabled ); - } - } - } ), - - "select_none": $.extend( {}, TableTools.buttonBase, { - "sButtonText": "Deselect all", - "fnClick": function( nButton, oConfig ) { - this.fnSelectNone(); - }, - "fnSelect": function( nButton, oConfig ) { - if ( this.fnGetSelected().length !== 0 ) { - $(nButton).removeClass( this.classes.buttons.disabled ); - } else { - $(nButton).addClass( this.classes.buttons.disabled ); - } - }, - "fnInit": function( nButton, oConfig ) { - $(nButton).addClass( this.classes.buttons.disabled ); - } - } ), - - "ajax": $.extend( {}, TableTools.buttonBase, { - "sAjaxUrl": "/xhr.php", - "sButtonText": "Ajax button", - "fnClick": function( nButton, oConfig ) { - var sData = this.fnGetTableData(oConfig); - $.ajax( { - "url": oConfig.sAjaxUrl, - "data": [ - { "name": "tableData", "value": sData } - ], - "success": oConfig.fnAjaxComplete, - "dataType": "json", - "type": "POST", - "cache": false, - "error": function () { - alert( "Error detected when sending table data to server" ); - } - } ); - }, - "fnAjaxComplete": function( json ) { - alert( 'Ajax complete' ); - } - } ), - - "div": $.extend( {}, TableTools.buttonBase, { - "sAction": "div", - "sTag": "div", - "sButtonClass": "DTTT_nonbutton", - "sButtonText": "Text button" - } ), - - "collection": $.extend( {}, TableTools.buttonBase, { - "sAction": "collection", - "sButtonClass": "DTTT_button_collection", - "sButtonText": "Collection", - "fnClick": function( nButton, oConfig ) { - this._fnCollectionShow(nButton, oConfig); - } - } ) -}; -/* - * on* callback parameters: - * 1. node - button element - * 2. object - configuration object for this button - * 3. object - ZeroClipboard reference (flash button only) - * 4. string - Returned string from Flash (flash button only - and only on 'complete') - */ - -// Alias to match the other plug-ins styling -TableTools.buttons = TableTools.BUTTONS; - - -/** - * @namespace Classes used by TableTools - allows the styles to be override easily. - * Note that when TableTools initialises it will take a copy of the classes object - * and will use its internal copy for the remainder of its run time. - */ -TableTools.classes = { - "container": "DTTT_container", - "buttons": { - "normal": "DTTT_button", - "disabled": "DTTT_disabled" - }, - "collection": { - "container": "DTTT_collection", - "background": "DTTT_collection_background", - "buttons": { - "normal": "DTTT_button", - "disabled": "DTTT_disabled" - } - }, - "select": { - "table": "DTTT_selectable", - "row": "DTTT_selected selected" - }, - "print": { - "body": "DTTT_Print", - "info": "DTTT_print_info", - "message": "DTTT_PrintMessage" - } -}; - - -/** - * @namespace ThemeRoller classes - built in for compatibility with DataTables' - * bJQueryUI option. - */ -TableTools.classes_themeroller = { - "container": "DTTT_container ui-buttonset ui-buttonset-multi", - "buttons": { - "normal": "DTTT_button ui-button ui-state-default" - }, - "collection": { - "container": "DTTT_collection ui-buttonset ui-buttonset-multi" - } -}; - - -/** - * @namespace TableTools default settings for initialisation - */ -TableTools.DEFAULTS = { - "sSwfPath": "../swf/copy_csv_xls_pdf.swf", - "sRowSelect": "none", - "sRowSelector": "tr", - "sSelectedClass": null, - "fnPreRowSelect": null, - "fnRowSelected": null, - "fnRowDeselected": null, - "aButtons": [ "copy", "csv", "xls", "pdf", "print" ], - "oTags": { - "container": "div", - "button": "a", // We really want to use buttons here, but Firefox and IE ignore the - // click on the Flash element in the button (but not mouse[in|out]). - "liner": "span", - "collection": { - "container": "div", - "button": "a", - "liner": "span" - } - } -}; - -// Alias to match the other plug-ins -TableTools.defaults = TableTools.DEFAULTS; - - -/** - * Name of this class - * @constant CLASS - * @type String - * @default TableTools - */ -TableTools.prototype.CLASS = "TableTools"; - - -/** - * TableTools version - * @constant VERSION - * @type String - * @default See code - */ -TableTools.version = "2.2.4"; - - - -// DataTables 1.10 API -// -// This will be extended in a big way in in TableTools 3 to provide API methods -// such as rows().select() and rows.selected() etc, but for the moment the -// tabletools() method simply returns the instance. - -if ( $.fn.dataTable.Api ) { - $.fn.dataTable.Api.register( 'tabletools()', function () { - var tt = null; - - if ( this.context.length > 0 ) { - tt = TableTools.fnGetInstance( this.context[0].nTable ); - } - - return tt; - } ); -} - - - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Initialisation - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* - * Register a new feature with DataTables - */ -if ( typeof $.fn.dataTable == "function" && - typeof $.fn.dataTableExt.fnVersionCheck == "function" && - $.fn.dataTableExt.fnVersionCheck('1.9.0') ) -{ - $.fn.dataTableExt.aoFeatures.push( { - "fnInit": function( oDTSettings ) { - var init = oDTSettings.oInit; - var opts = init ? - init.tableTools || init.oTableTools || {} : - {}; - - return new TableTools( oDTSettings.oInstance, opts ).dom.container; - }, - "cFeature": "T", - "sFeature": "TableTools" - } ); -} -else -{ - alert( "Warning: TableTools requires DataTables 1.9.0 or newer - www.datatables.net/download"); -} - -$.fn.DataTable.TableTools = TableTools; - -})(jQuery, window, document); - -/* - * Register a new feature with DataTables - */ -if ( typeof $.fn.dataTable == "function" && - typeof $.fn.dataTableExt.fnVersionCheck == "function" && - $.fn.dataTableExt.fnVersionCheck('1.9.0') ) -{ - $.fn.dataTableExt.aoFeatures.push( { - "fnInit": function( oDTSettings ) { - var oOpts = typeof oDTSettings.oInit.oTableTools != 'undefined' ? - oDTSettings.oInit.oTableTools : {}; - - var oTT = new TableTools( oDTSettings.oInstance, oOpts ); - TableTools._aInstances.push( oTT ); - - return oTT.dom.container; - }, - "cFeature": "T", - "sFeature": "TableTools" - } ); -} -else -{ - alert( "Warning: TableTools 2 requires DataTables 1.9.0 or newer - www.datatables.net/download"); -} - - -$.fn.dataTable.TableTools = TableTools; -$.fn.DataTable.TableTools = TableTools; - - -return TableTools; -}; // /factory - - -// Define as an AMD module if possible -if ( typeof define === 'function' && define.amd ) { - define( ['jquery', 'datatables'], factory ); -} -else if ( typeof exports === 'object' ) { - // Node/CommonJS - factory( require('jquery'), require('datatables') ); -} -else if ( jQuery && !jQuery.fn.dataTable.TableTools ) { - // Otherwise simply initialise as normal, stopping multiple evaluation - factory( jQuery, jQuery.fn.dataTable ); -} - - -})(window, document); - diff --git a/assets/plugins/datatables/extensions/TableTools/js/dataTables.tableTools.min.js b/assets/plugins/datatables/extensions/TableTools/js/dataTables.tableTools.min.js deleted file mode 100644 index e8c87056..00000000 --- a/assets/plugins/datatables/extensions/TableTools/js/dataTables.tableTools.min.js +++ /dev/null @@ -1,70 +0,0 @@ -/*! - TableTools 2.2.4 - 2009-2015 SpryMedia Ltd - datatables.net/license - - ZeroClipboard 1.0.4 - Author: Joseph Huckaby - MIT licensed -*/ -var TableTools; -(function(n,k,q){var p=function(m,p){var g={version:"1.0.4-TableTools2",clients:{},moviePath:"",nextId:1,$:function(a){"string"==typeof a&&(a=k.getElementById(a));a.addClass||(a.hide=function(){this.style.display="none"},a.show=function(){this.style.display=""},a.addClass=function(a){this.removeClass(a);this.className+=" "+a},a.removeClass=function(a){this.className=this.className.replace(RegExp("\\s*"+a+"\\s*")," ").replace(/^\s+/,"").replace(/\s+$/,"")},a.hasClass=function(a){return!!this.className.match(RegExp("\\s*"+a+ -"\\s*"))});return a},setMoviePath:function(a){this.moviePath=a},dispatch:function(a,b,c){(a=this.clients[a])&&a.receiveEvent(b,c)},register:function(a,b){this.clients[a]=b},getDOMObjectPosition:function(a){var b={left:0,top:0,width:a.width?a.width:a.offsetWidth,height:a.height?a.height:a.offsetHeight};""!==a.style.width&&(b.width=a.style.width.replace("px",""));""!==a.style.height&&(b.height=a.style.height.replace("px",""));for(;a;)b.left+=a.offsetLeft,b.top+=a.offsetTop,a=a.offsetParent;return b}, -Client:function(a){this.handlers={};this.id=g.nextId++;this.movieId="ZeroClipboard_TableToolsMovie_"+this.id;g.register(this.id,this);a&&this.glue(a)}};g.Client.prototype={id:0,ready:!1,movie:null,clipText:"",fileName:"",action:"copy",handCursorEnabled:!0,cssEffects:!0,handlers:null,sized:!1,glue:function(a,b){this.domElement=g.$(a);var c=99;this.domElement.style.zIndex&&(c=parseInt(this.domElement.style.zIndex,10)+1);var d=g.getDOMObjectPosition(this.domElement);this.div=k.createElement("div");var f= -this.div.style;f.position="absolute";f.left="0px";f.top="0px";f.width=d.width+"px";f.height=d.height+"px";f.zIndex=c;"undefined"!=typeof b&&""!==b&&(this.div.title=b);0!==d.width&&0!==d.height&&(this.sized=!0);this.domElement&&(this.domElement.appendChild(this.div),this.div.innerHTML=this.getHTML(d.width,d.height).replace(/&/g,"&amp;"))},positionElement:function(){var a=g.getDOMObjectPosition(this.domElement),b=this.div.style;b.position="absolute";b.width=a.width+"px";b.height=a.height+"px";0!==a.width&& -0!==a.height&&(this.sized=!0,b=this.div.childNodes[0],b.width=a.width,b.height=a.height)},getHTML:function(a,b){var c="",d="id="+this.id+"&width="+a+"&height="+b;if(navigator.userAgent.match(/MSIE/))var f=location.href.match(/^https/i)?"https://":"http://",c=c+('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="'+f+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="'+a+'" height="'+b+'" id="'+this.movieId+'" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="'+ -g.moviePath+'" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="'+d+'"/><param name="wmode" value="transparent"/></object>');else c+='<embed id="'+this.movieId+'" src="'+g.moviePath+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="'+a+'" height="'+b+'" name="'+this.movieId+'" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+ -d+'" wmode="transparent" />';return c},hide:function(){this.div&&(this.div.style.left="-2000px")},show:function(){this.reposition()},destroy:function(){if(this.domElement&&this.div){this.hide();this.div.innerHTML="";var a=k.getElementsByTagName("body")[0];try{a.removeChild(this.div)}catch(b){}this.div=this.domElement=null}},reposition:function(a){a&&((this.domElement=g.$(a))||this.hide());if(this.domElement&&this.div){var a=g.getDOMObjectPosition(this.domElement),b=this.div.style;b.left=""+a.left+ -"px";b.top=""+a.top+"px"}},clearText:function(){this.clipText="";this.ready&&this.movie.clearText()},appendText:function(a){this.clipText+=a;this.ready&&this.movie.appendText(a)},setText:function(a){this.clipText=a;this.ready&&this.movie.setText(a)},setCharSet:function(a){this.charSet=a;this.ready&&this.movie.setCharSet(a)},setBomInc:function(a){this.incBom=a;this.ready&&this.movie.setBomInc(a)},setFileName:function(a){this.fileName=a;this.ready&&this.movie.setFileName(a)},setAction:function(a){this.action= -a;this.ready&&this.movie.setAction(a)},addEventListener:function(a,b){a=a.toString().toLowerCase().replace(/^on/,"");this.handlers[a]||(this.handlers[a]=[]);this.handlers[a].push(b)},setHandCursor:function(a){this.handCursorEnabled=a;this.ready&&this.movie.setHandCursor(a)},setCSSEffects:function(a){this.cssEffects=!!a},receiveEvent:function(a,b){var c,a=a.toString().toLowerCase().replace(/^on/,"");switch(a){case "load":this.movie=k.getElementById(this.movieId);if(!this.movie){c=this;setTimeout(function(){c.receiveEvent("load", -null)},1);return}if(!this.ready&&navigator.userAgent.match(/Firefox/)&&navigator.userAgent.match(/Windows/)){c=this;setTimeout(function(){c.receiveEvent("load",null)},100);this.ready=!0;return}this.ready=!0;this.movie.clearText();this.movie.appendText(this.clipText);this.movie.setFileName(this.fileName);this.movie.setAction(this.action);this.movie.setCharSet(this.charSet);this.movie.setBomInc(this.incBom);this.movie.setHandCursor(this.handCursorEnabled);break;case "mouseover":this.domElement&&this.cssEffects&& -this.recoverActive&&this.domElement.addClass("active");break;case "mouseout":this.domElement&&this.cssEffects&&(this.recoverActive=!1,this.domElement.hasClass("active")&&(this.domElement.removeClass("active"),this.recoverActive=!0));break;case "mousedown":this.domElement&&this.cssEffects&&this.domElement.addClass("active");break;case "mouseup":this.domElement&&this.cssEffects&&(this.domElement.removeClass("active"),this.recoverActive=!1)}if(this.handlers[a])for(var d=0,f=this.handlers[a].length;d< -f;d++){var e=this.handlers[a][d];if("function"==typeof e)e(this,b);else if("object"==typeof e&&2==e.length)e[0][e[1]](this,b);else if("string"==typeof e)n[e](this,b)}}};n.ZeroClipboard_TableTools=g;var e=jQuery;TableTools=function(a,b){!this instanceof TableTools&&alert("Warning: TableTools must be initialised with the keyword 'new'");this.s={that:this,dt:e.fn.dataTable.Api?(new e.fn.dataTable.Api(a)).settings()[0]:a.fnSettings(),print:{saveStart:-1,saveLength:-1,saveScroll:-1,funcEnd:function(){}}, -buttonCounter:0,select:{type:"",selected:[],preRowSelect:null,postSelected:null,postDeselected:null,all:!1,selectedClass:""},custom:{},swfPath:"",buttonSet:[],master:!1,tags:{}};this.dom={container:null,table:null,print:{hidden:[],message:null},collection:{collection:null,background:null}};this.classes=e.extend(!0,{},TableTools.classes);this.s.dt.bJUI&&e.extend(!0,this.classes,TableTools.classes_themeroller);this.fnSettings=function(){return this.s};"undefined"==typeof b&&(b={});TableTools._aInstances.push(this); -this._fnConstruct(b);return this};TableTools.prototype={fnGetSelected:function(a){var b=[],c=this.s.dt.aoData,d=this.s.dt.aiDisplay,f;if(a){a=0;for(f=d.length;a<f;a++)c[d[a]]._DTTT_selected&&b.push(c[d[a]].nTr)}else{a=0;for(f=c.length;a<f;a++)c[a]._DTTT_selected&&b.push(c[a].nTr)}return b},fnGetSelectedData:function(){var a=[],b=this.s.dt.aoData,c,d;c=0;for(d=b.length;c<d;c++)b[c]._DTTT_selected&&a.push(this.s.dt.oInstance.fnGetData(c));return a},fnGetSelectedIndexes:function(a){var b=[],c=this.s.dt.aoData, -d=this.s.dt.aiDisplay,f;if(a){a=0;for(f=d.length;a<f;a++)c[d[a]]._DTTT_selected&&b.push(d[a])}else{a=0;for(f=c.length;a<f;a++)c[a]._DTTT_selected&&b.push(a)}return b},fnIsSelected:function(a){a=this.s.dt.oInstance.fnGetPosition(a);return!0===this.s.dt.aoData[a]._DTTT_selected?!0:!1},fnSelectAll:function(a){this._fnRowSelect(a?this.s.dt.aiDisplay:this.s.dt.aoData)},fnSelectNone:function(a){this._fnRowDeselect(this.fnGetSelectedIndexes(a))},fnSelect:function(a){"single"==this.s.select.type&&this.fnSelectNone(); -this._fnRowSelect(a)},fnDeselect:function(a){this._fnRowDeselect(a)},fnGetTitle:function(a){var b="";"undefined"!=typeof a.sTitle&&""!==a.sTitle?b=a.sTitle:(a=k.getElementsByTagName("title"),0<a.length&&(b=a[0].innerHTML));return 4>"¡".toString().length?b.replace(/[^a-zA-Z0-9_\u00A1-\uFFFF\.,\-_ !\(\)]/g,""):b.replace(/[^a-zA-Z0-9_\.,\-_ !\(\)]/g,"")},fnCalcColRatios:function(a){var b=this.s.dt.aoColumns,a=this._fnColumnTargets(a.mColumns),c=[],d=0,f=0,e,i;e=0;for(i=a.length;e<i;e++)a[e]&&(d=b[e].nTh.offsetWidth, -f+=d,c.push(d));e=0;for(i=c.length;e<i;e++)c[e]/=f;return c.join("\t")},fnGetTableData:function(a){if(this.s.dt)return this._fnGetDataTablesData(a)},fnSetText:function(a,b){this._fnFlashSetText(a,b)},fnResizeButtons:function(){for(var a in g.clients)if(a){var b=g.clients[a];"undefined"!=typeof b.domElement&&b.domElement.parentNode&&b.positionElement()}},fnResizeRequired:function(){for(var a in g.clients)if(a){var b=g.clients[a];if("undefined"!=typeof b.domElement&&b.domElement.parentNode==this.dom.container&& -!1===b.sized)return!0}return!1},fnPrint:function(a,b){b===q&&(b={});a===q||a?this._fnPrintStart(b):this._fnPrintEnd()},fnInfo:function(a,b){var c=e("<div/>").addClass(this.classes.print.info).html(a).appendTo("body");setTimeout(function(){c.fadeOut("normal",function(){c.remove()})},b)},fnContainer:function(){return this.dom.container},_fnConstruct:function(a){var b=this;this._fnCustomiseSettings(a);this.dom.container=k.createElement(this.s.tags.container);this.dom.container.className=this.classes.container; -"none"!=this.s.select.type&&this._fnRowSelectConfig();this._fnButtonDefinations(this.s.buttonSet,this.dom.container);this.s.dt.aoDestroyCallback.push({sName:"TableTools",fn:function(){e(b.s.dt.nTBody).off("click.DTTT_Select",b.s.custom.sRowSelector).off("mousedown.DTTT_Select","tr").off("mouseup.DTTT_Select","tr");e(b.dom.container).empty();var a=e.inArray(b,TableTools._aInstances);-1!==a&&TableTools._aInstances.splice(a,1)}})},_fnCustomiseSettings:function(a){"undefined"==typeof this.s.dt._TableToolsInit&& -(this.s.master=!0,this.s.dt._TableToolsInit=!0);this.dom.table=this.s.dt.nTable;this.s.custom=e.extend({},TableTools.DEFAULTS,a);this.s.swfPath=this.s.custom.sSwfPath;"undefined"!=typeof g&&(g.moviePath=this.s.swfPath);this.s.select.type=this.s.custom.sRowSelect;this.s.select.preRowSelect=this.s.custom.fnPreRowSelect;this.s.select.postSelected=this.s.custom.fnRowSelected;this.s.select.postDeselected=this.s.custom.fnRowDeselected;this.s.custom.sSelectedClass&&(this.classes.select.row=this.s.custom.sSelectedClass); -this.s.tags=this.s.custom.oTags;this.s.buttonSet=this.s.custom.aButtons},_fnButtonDefinations:function(a,b){for(var c,d=0,f=a.length;d<f;d++){if("string"==typeof a[d]){if("undefined"==typeof TableTools.BUTTONS[a[d]]){alert("TableTools: Warning - unknown button type: "+a[d]);continue}c=e.extend({},TableTools.BUTTONS[a[d]],!0)}else{if("undefined"==typeof TableTools.BUTTONS[a[d].sExtends]){alert("TableTools: Warning - unknown button type: "+a[d].sExtends);continue}c=e.extend({},TableTools.BUTTONS[a[d].sExtends], -!0);c=e.extend(c,a[d],!0)}(c=this._fnCreateButton(c,e(b).hasClass(this.classes.collection.container)))&&b.appendChild(c)}},_fnCreateButton:function(a,b){var c=this._fnButtonBase(a,b);if(a.sAction.match(/flash/)){if(!this._fnHasFlash())return!1;this._fnFlashConfig(c,a)}else"text"==a.sAction?this._fnTextConfig(c,a):"div"==a.sAction?this._fnTextConfig(c,a):"collection"==a.sAction&&(this._fnTextConfig(c,a),this._fnCollectionConfig(c,a));if(-1!==this.s.dt.iTabIndex)e(c).attr("tabindex",this.s.dt.iTabIndex).attr("aria-controls", -this.s.dt.sTableId).on("keyup.DTTT",function(a){13===a.keyCode&&(a.stopPropagation(),e(this).trigger("click"))}).on("mousedown.DTTT",function(b){a.sAction.match(/flash/)||b.preventDefault()});return c},_fnButtonBase:function(a,b){var c,d,f;b?(c=a.sTag&&"default"!==a.sTag?a.sTag:this.s.tags.collection.button,d=a.sLinerTag&&"default"!==a.sLinerTag?a.sLiner:this.s.tags.collection.liner,f=this.classes.collection.buttons.normal):(c=a.sTag&&"default"!==a.sTag?a.sTag:this.s.tags.button,d=a.sLinerTag&&"default"!== -a.sLinerTag?a.sLiner:this.s.tags.liner,f=this.classes.buttons.normal);c=k.createElement(c);d=k.createElement(d);var e=this._fnGetMasterSettings();c.className=f+" "+a.sButtonClass;c.setAttribute("id","ToolTables_"+this.s.dt.sInstance+"_"+e.buttonCounter);c.appendChild(d);d.innerHTML=a.sButtonText;e.buttonCounter++;return c},_fnGetMasterSettings:function(){if(this.s.master)return this.s;for(var a=TableTools._aInstances,b=0,c=a.length;b<c;b++)if(this.dom.table==a[b].s.dt.nTable)return a[b].s},_fnCollectionConfig:function(a, -b){var c=k.createElement(this.s.tags.collection.container);c.style.display="none";c.className=this.classes.collection.container;b._collection=c;k.body.appendChild(c);this._fnButtonDefinations(b.aButtons,c)},_fnCollectionShow:function(a,b){var c=this,d=e(a).offset(),f=b._collection,j=d.left,d=d.top+e(a).outerHeight(),i=e(n).height(),h=e(k).height(),o=e(n).width(),g=e(k).width();f.style.position="absolute";f.style.left=j+"px";f.style.top=d+"px";f.style.display="block";e(f).css("opacity",0);var l=k.createElement("div"); -l.style.position="absolute";l.style.left="0px";l.style.top="0px";l.style.height=(i>h?i:h)+"px";l.style.width=(o>g?o:g)+"px";l.className=this.classes.collection.background;e(l).css("opacity",0);k.body.appendChild(l);k.body.appendChild(f);i=e(f).outerWidth();o=e(f).outerHeight();j+i>g&&(f.style.left=g-i+"px");d+o>h&&(f.style.top=d-o-e(a).outerHeight()+"px");this.dom.collection.collection=f;this.dom.collection.background=l;setTimeout(function(){e(f).animate({opacity:1},500);e(l).animate({opacity:0.25}, -500)},10);this.fnResizeButtons();e(l).click(function(){c._fnCollectionHide.call(c,null,null)})},_fnCollectionHide:function(a,b){!(null!==b&&"collection"==b.sExtends)&&null!==this.dom.collection.collection&&(e(this.dom.collection.collection).animate({opacity:0},500,function(){this.style.display="none"}),e(this.dom.collection.background).animate({opacity:0},500,function(){this.parentNode.removeChild(this)}),this.dom.collection.collection=null,this.dom.collection.background=null)},_fnRowSelectConfig:function(){if(this.s.master){var a= -this,b=this.s.dt;e(b.nTable).addClass(this.classes.select.table);"os"===this.s.select.type&&(e(b.nTBody).on("mousedown.DTTT_Select","tr",function(a){if(a.shiftKey)e(b.nTBody).css("-moz-user-select","none").one("selectstart.DTTT_Select","tr",function(){return!1})}),e(b.nTBody).on("mouseup.DTTT_Select","tr",function(){e(b.nTBody).css("-moz-user-select","")}));e(b.nTBody).on("click.DTTT_Select",this.s.custom.sRowSelector,function(c){var d=this.nodeName.toLowerCase()==="tr"?this:e(this).parents("tr")[0], -f=a.s.select,j=a.s.dt.oInstance.fnGetPosition(d);if(d.parentNode==b.nTBody&&b.oInstance.fnGetData(d)!==null){if(f.type=="os")if(c.ctrlKey||c.metaKey)a.fnIsSelected(d)?a._fnRowDeselect(d,c):a._fnRowSelect(d,c);else if(c.shiftKey){var i=a.s.dt.aiDisplay.slice(),h=e.inArray(f.lastRow,i),o=e.inArray(j,i);if(a.fnGetSelected().length===0||h===-1)i.splice(e.inArray(j,i)+1,i.length);else{if(h>o)var g=o,o=h,h=g;i.splice(o+1,i.length);i.splice(0,h)}if(a.fnIsSelected(d)){i.splice(e.inArray(j,i),1);a._fnRowDeselect(i, -c)}else a._fnRowSelect(i,c)}else if(a.fnIsSelected(d)&&a.fnGetSelected().length===1)a._fnRowDeselect(d,c);else{a.fnSelectNone();a._fnRowSelect(d,c)}else if(a.fnIsSelected(d))a._fnRowDeselect(d,c);else if(f.type=="single"){a.fnSelectNone();a._fnRowSelect(d,c)}else f.type=="multi"&&a._fnRowSelect(d,c);f.lastRow=j}});b.oApi._fnCallbackReg(b,"aoRowCreatedCallback",function(c,d,f){b.aoData[f]._DTTT_selected&&e(c).addClass(a.classes.select.row)},"TableTools-SelectAll")}},_fnRowSelect:function(a,b){var c= -this._fnSelectData(a),d=[],f,j;f=0;for(j=c.length;f<j;f++)c[f].nTr&&d.push(c[f].nTr);if(null===this.s.select.preRowSelect||this.s.select.preRowSelect.call(this,b,d,!0)){f=0;for(j=c.length;f<j;f++)c[f]._DTTT_selected=!0,c[f].nTr&&e(c[f].nTr).addClass(this.classes.select.row);null!==this.s.select.postSelected&&this.s.select.postSelected.call(this,d);TableTools._fnEventDispatch(this,"select",d,!0)}},_fnRowDeselect:function(a,b){var c=this._fnSelectData(a),d=[],f,j;f=0;for(j=c.length;f<j;f++)c[f].nTr&& -d.push(c[f].nTr);if(null===this.s.select.preRowSelect||this.s.select.preRowSelect.call(this,b,d,!1)){f=0;for(j=c.length;f<j;f++)c[f]._DTTT_selected=!1,c[f].nTr&&e(c[f].nTr).removeClass(this.classes.select.row);null!==this.s.select.postDeselected&&this.s.select.postDeselected.call(this,d);TableTools._fnEventDispatch(this,"select",d,!1)}},_fnSelectData:function(a){var b=[],c,d,f;if(a.nodeName)c=this.s.dt.oInstance.fnGetPosition(a),b.push(this.s.dt.aoData[c]);else if("undefined"!==typeof a.length){d= -0;for(f=a.length;d<f;d++)a[d].nodeName?(c=this.s.dt.oInstance.fnGetPosition(a[d]),b.push(this.s.dt.aoData[c])):"number"===typeof a[d]?b.push(this.s.dt.aoData[a[d]]):b.push(a[d])}else"number"===typeof a?b.push(this.s.dt.aoData[a]):b.push(a);return b},_fnTextConfig:function(a,b){var c=this;null!==b.fnInit&&b.fnInit.call(this,a,b);""!==b.sToolTip&&(a.title=b.sToolTip);e(a).hover(function(){b.fnMouseover!==null&&b.fnMouseover.call(this,a,b,null)},function(){b.fnMouseout!==null&&b.fnMouseout.call(this, -a,b,null)});null!==b.fnSelect&&TableTools._fnEventListen(this,"select",function(d){b.fnSelect.call(c,a,b,d)});e(a).click(function(d){b.fnClick!==null&&b.fnClick.call(c,a,b,null,d);b.fnComplete!==null&&b.fnComplete.call(c,a,b,null,null);c._fnCollectionHide(a,b)})},_fnHasFlash:function(){try{if(new ActiveXObject("ShockwaveFlash.ShockwaveFlash"))return!0}catch(a){if(navigator.mimeTypes&&navigator.mimeTypes["application/x-shockwave-flash"]!==q&&navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin)return!0}return!1}, -_fnFlashConfig:function(a,b){var c=this,d=new g.Client;null!==b.fnInit&&b.fnInit.call(this,a,b);d.setHandCursor(!0);"flash_save"==b.sAction?(d.setAction("save"),d.setCharSet("utf16le"==b.sCharSet?"UTF16LE":"UTF8"),d.setBomInc(b.bBomInc),d.setFileName(b.sFileName.replace("*",this.fnGetTitle(b)))):"flash_pdf"==b.sAction?(d.setAction("pdf"),d.setFileName(b.sFileName.replace("*",this.fnGetTitle(b)))):d.setAction("copy");d.addEventListener("mouseOver",function(){b.fnMouseover!==null&&b.fnMouseover.call(c, -a,b,d)});d.addEventListener("mouseOut",function(){b.fnMouseout!==null&&b.fnMouseout.call(c,a,b,d)});d.addEventListener("mouseDown",function(){b.fnClick!==null&&b.fnClick.call(c,a,b,d)});d.addEventListener("complete",function(f,e){b.fnComplete!==null&&b.fnComplete.call(c,a,b,d,e);c._fnCollectionHide(a,b)});null!==b.fnSelect&&TableTools._fnEventListen(this,"select",function(d){b.fnSelect.call(c,a,b,d)});this._fnFlashGlue(d,a,b.sToolTip)},_fnFlashGlue:function(a,b,c){var d=this,f=b.getAttribute("id"); -k.getElementById(f)?a.glue(b,c):setTimeout(function(){d._fnFlashGlue(a,b,c)},100)},_fnFlashSetText:function(a,b){var c=this._fnChunkData(b,8192);a.clearText();for(var d=0,f=c.length;d<f;d++)a.appendText(c[d])},_fnColumnTargets:function(a){var b=[],c=this.s.dt,d,f=c.aoColumns;d=f.length;if("function"==typeof a){a=a.call(this,c);for(c=0;c<d;c++)b.push(-1!==e.inArray(c,a)?!0:!1)}else if("object"==typeof a){for(c=0;c<d;c++)b.push(!1);c=0;for(d=a.length;c<d;c++)b[a[c]]=!0}else if("visible"==a)for(c=0;c< -d;c++)b.push(f[c].bVisible?!0:!1);else if("hidden"==a)for(c=0;c<d;c++)b.push(f[c].bVisible?!1:!0);else if("sortable"==a)for(c=0;c<d;c++)b.push(f[c].bSortable?!0:!1);else for(c=0;c<d;c++)b.push(!0);return b},_fnNewline:function(a){return"auto"==a.sNewLine?navigator.userAgent.match(/Windows/)?"\r\n":"\n":a.sNewLine},_fnGetDataTablesData:function(a){var b,c,d,f,j,i=[],h="",g=this.s.dt,k,l=RegExp(a.sFieldBoundary,"g"),n=this._fnColumnTargets(a.mColumns);d="undefined"!=typeof a.bSelectedOnly?a.bSelectedOnly: -!1;if(a.bHeader){j=[];b=0;for(c=g.aoColumns.length;b<c;b++)n[b]&&(h=g.aoColumns[b].sTitle.replace(/\n/g," ").replace(/<.*?>/g,"").replace(/^\s+|\s+$/g,""),h=this._fnHtmlDecode(h),j.push(this._fnBoundData(h,a.sFieldBoundary,l)));i.push(j.join(a.sFieldSeperator))}d=!0;var m;f=this.fnGetSelectedIndexes();m=(d="none"!==this.s.select.type&&d&&0!==f.length)?f:p.Api?(new p.Api(g)).rows(a.oSelectorOpts).indexes().flatten().toArray():g.oInstance.$("tr",a.oSelectorOpts).map(function(a,b){return g.oInstance.fnGetPosition(b)}).get(); -d=0;for(f=m.length;d<f;d++){k=g.aoData[m[d]].nTr;j=[];b=0;for(c=g.aoColumns.length;b<c;b++)n[b]&&(h=g.oApi._fnGetCellData(g,m[d],b,"display"),a.fnCellRender?h=a.fnCellRender(h,b,k,m[d])+"":"string"==typeof h?(h=h.replace(/\n/g," "),h=h.replace(/<img.*?\s+alt\s*=\s*(?:"([^"]+)"|'([^']+)'|([^\s>]+)).*?>/gi,"$1$2$3"),h=h.replace(/<.*?>/g,"")):h+="",h=h.replace(/^\s+/,"").replace(/\s+$/,""),h=this._fnHtmlDecode(h),j.push(this._fnBoundData(h,a.sFieldBoundary,l)));i.push(j.join(a.sFieldSeperator));a.bOpenRows&& -(b=e.grep(g.aoOpenRows,function(a){return a.nParent===k}),1===b.length&&(h=this._fnBoundData(e("td",b[0].nTr).html(),a.sFieldBoundary,l),i.push(h)))}if(a.bFooter&&null!==g.nTFoot){j=[];b=0;for(c=g.aoColumns.length;b<c;b++)n[b]&&null!==g.aoColumns[b].nTf&&(h=g.aoColumns[b].nTf.innerHTML.replace(/\n/g," ").replace(/<.*?>/g,""),h=this._fnHtmlDecode(h),j.push(this._fnBoundData(h,a.sFieldBoundary,l)));i.push(j.join(a.sFieldSeperator))}return i.join(this._fnNewline(a))},_fnBoundData:function(a,b,c){return""=== -b?a:b+a.replace(c,b+b)+b},_fnChunkData:function(a,b){for(var c=[],d=a.length,f=0;f<d;f+=b)f+b<d?c.push(a.substring(f,f+b)):c.push(a.substring(f,d));return c},_fnHtmlDecode:function(a){if(-1===a.indexOf("&"))return a;var b=k.createElement("div");return a.replace(/&([^\s]*?);/g,function(a,d){if("#"===a.substr(1,1))return String.fromCharCode(Number(d.substr(1)));b.innerHTML=a;return b.childNodes[0].nodeValue})},_fnPrintStart:function(a){var b=this,c=this.s.dt;this._fnPrintHideNodes(c.nTable);this.s.print.saveStart= -c._iDisplayStart;this.s.print.saveLength=c._iDisplayLength;a.bShowAll&&(c._iDisplayStart=0,c._iDisplayLength=-1,c.oApi._fnCalculateEnd&&c.oApi._fnCalculateEnd(c),c.oApi._fnDraw(c));if(""!==c.oScroll.sX||""!==c.oScroll.sY)this._fnPrintScrollStart(c),e(this.s.dt.nTable).bind("draw.DTTT_Print",function(){b._fnPrintScrollStart(c)});var d=c.aanFeatures,f;for(f in d)if("i"!=f&&"t"!=f&&1==f.length)for(var g=0,i=d[f].length;g<i;g++)this.dom.print.hidden.push({node:d[f][g],display:"block"}),d[f][g].style.display= -"none";e(k.body).addClass(this.classes.print.body);""!==a.sInfo&&this.fnInfo(a.sInfo,3E3);a.sMessage&&e("<div/>").addClass(this.classes.print.message).html(a.sMessage).prependTo("body");this.s.print.saveScroll=e(n).scrollTop();n.scrollTo(0,0);e(k).bind("keydown.DTTT",function(a){if(a.keyCode==27){a.preventDefault();b._fnPrintEnd.call(b,a)}})},_fnPrintEnd:function(){var a=this.s.dt,b=this.s.print;this._fnPrintShowNodes();if(""!==a.oScroll.sX||""!==a.oScroll.sY)e(this.s.dt.nTable).unbind("draw.DTTT_Print"), -this._fnPrintScrollEnd();n.scrollTo(0,b.saveScroll);e("div."+this.classes.print.message).remove();e(k.body).removeClass("DTTT_Print");a._iDisplayStart=b.saveStart;a._iDisplayLength=b.saveLength;a.oApi._fnCalculateEnd&&a.oApi._fnCalculateEnd(a);a.oApi._fnDraw(a);e(k).unbind("keydown.DTTT")},_fnPrintScrollStart:function(){var a=this.s.dt;a.nScrollHead.getElementsByTagName("div")[0].getElementsByTagName("table");var b=a.nTable.parentNode,c;c=a.nTable.getElementsByTagName("thead");0<c.length&&a.nTable.removeChild(c[0]); -null!==a.nTFoot&&(c=a.nTable.getElementsByTagName("tfoot"),0<c.length&&a.nTable.removeChild(c[0]));c=a.nTHead.cloneNode(!0);a.nTable.insertBefore(c,a.nTable.childNodes[0]);null!==a.nTFoot&&(c=a.nTFoot.cloneNode(!0),a.nTable.insertBefore(c,a.nTable.childNodes[1]));""!==a.oScroll.sX&&(a.nTable.style.width=e(a.nTable).outerWidth()+"px",b.style.width=e(a.nTable).outerWidth()+"px",b.style.overflow="visible");""!==a.oScroll.sY&&(b.style.height=e(a.nTable).outerHeight()+"px",b.style.overflow="visible")}, -_fnPrintScrollEnd:function(){var a=this.s.dt,b=a.nTable.parentNode;""!==a.oScroll.sX&&(b.style.width=a.oApi._fnStringToCss(a.oScroll.sX),b.style.overflow="auto");""!==a.oScroll.sY&&(b.style.height=a.oApi._fnStringToCss(a.oScroll.sY),b.style.overflow="auto")},_fnPrintShowNodes:function(){for(var a=this.dom.print.hidden,b=0,c=a.length;b<c;b++)a[b].node.style.display=a[b].display;a.splice(0,a.length)},_fnPrintHideNodes:function(a){for(var b=this.dom.print.hidden,c=a.parentNode,d=c.childNodes,f=0,g=d.length;f< -g;f++)if(d[f]!=a&&1==d[f].nodeType){var i=e(d[f]).css("display");"none"!=i&&(b.push({node:d[f],display:i}),d[f].style.display="none")}"BODY"!=c.nodeName.toUpperCase()&&this._fnPrintHideNodes(c)}};TableTools._aInstances=[];TableTools._aListeners=[];TableTools.fnGetMasters=function(){for(var a=[],b=0,c=TableTools._aInstances.length;b<c;b++)TableTools._aInstances[b].s.master&&a.push(TableTools._aInstances[b]);return a};TableTools.fnGetInstance=function(a){"object"!=typeof a&&(a=k.getElementById(a)); -for(var b=0,c=TableTools._aInstances.length;b<c;b++)if(TableTools._aInstances[b].s.master&&TableTools._aInstances[b].dom.table==a)return TableTools._aInstances[b];return null};TableTools._fnEventListen=function(a,b,c){TableTools._aListeners.push({that:a,type:b,fn:c})};TableTools._fnEventDispatch=function(a,b,c,d){for(var f=TableTools._aListeners,e=0,g=f.length;e<g;e++)a.dom.table==f[e].that.dom.table&&f[e].type==b&&f[e].fn(c,d)};TableTools.buttonBase={sAction:"text",sTag:"default",sLinerTag:"default", -sButtonClass:"DTTT_button_text",sButtonText:"Button text",sTitle:"",sToolTip:"",sCharSet:"utf8",bBomInc:!1,sFileName:"*.csv",sFieldBoundary:"",sFieldSeperator:"\t",sNewLine:"auto",mColumns:"all",bHeader:!0,bFooter:!0,bOpenRows:!1,bSelectedOnly:!1,oSelectorOpts:q,fnMouseover:null,fnMouseout:null,fnClick:null,fnSelect:null,fnComplete:null,fnInit:null,fnCellRender:null};TableTools.BUTTONS={csv:e.extend({},TableTools.buttonBase,{sAction:"flash_save",sButtonClass:"DTTT_button_csv",sButtonText:"CSV",sFieldBoundary:'"', -sFieldSeperator:",",fnClick:function(a,b,c){this.fnSetText(c,this.fnGetTableData(b))}}),xls:e.extend({},TableTools.buttonBase,{sAction:"flash_save",sCharSet:"utf16le",bBomInc:!0,sButtonClass:"DTTT_button_xls",sButtonText:"Excel",fnClick:function(a,b,c){this.fnSetText(c,this.fnGetTableData(b))}}),copy:e.extend({},TableTools.buttonBase,{sAction:"flash_copy",sButtonClass:"DTTT_button_copy",sButtonText:"Copy",fnClick:function(a,b,c){this.fnSetText(c,this.fnGetTableData(b))},fnComplete:function(a,b,c, -d){a=d.split("\n").length;b.bHeader&&a--;null!==this.s.dt.nTFoot&&b.bFooter&&a--;this.fnInfo("<h6>Table copied</h6><p>Copied "+a+" row"+(1==a?"":"s")+" to the clipboard.</p>",1500)}}),pdf:e.extend({},TableTools.buttonBase,{sAction:"flash_pdf",sNewLine:"\n",sFileName:"*.pdf",sButtonClass:"DTTT_button_pdf",sButtonText:"PDF",sPdfOrientation:"portrait",sPdfSize:"A4",sPdfMessage:"",fnClick:function(a,b,c){this.fnSetText(c,"title:"+this.fnGetTitle(b)+"\nmessage:"+b.sPdfMessage+"\ncolWidth:"+this.fnCalcColRatios(b)+ -"\norientation:"+b.sPdfOrientation+"\nsize:"+b.sPdfSize+"\n--/TableToolsOpts--\n"+this.fnGetTableData(b))}}),print:e.extend({},TableTools.buttonBase,{sInfo:"<h6>Print view</h6><p>Please use your browser's print function to print this table. Press escape when finished.</p>",sMessage:null,bShowAll:!0,sToolTip:"View print view",sButtonClass:"DTTT_button_print",sButtonText:"Print",fnClick:function(a,b){this.fnPrint(!0,b)}}),text:e.extend({},TableTools.buttonBase),select:e.extend({},TableTools.buttonBase, -{sButtonText:"Select button",fnSelect:function(a){0!==this.fnGetSelected().length?e(a).removeClass(this.classes.buttons.disabled):e(a).addClass(this.classes.buttons.disabled)},fnInit:function(a){e(a).addClass(this.classes.buttons.disabled)}}),select_single:e.extend({},TableTools.buttonBase,{sButtonText:"Select button",fnSelect:function(a){1==this.fnGetSelected().length?e(a).removeClass(this.classes.buttons.disabled):e(a).addClass(this.classes.buttons.disabled)},fnInit:function(a){e(a).addClass(this.classes.buttons.disabled)}}), -select_all:e.extend({},TableTools.buttonBase,{sButtonText:"Select all",fnClick:function(){this.fnSelectAll()},fnSelect:function(a){this.fnGetSelected().length==this.s.dt.fnRecordsDisplay()?e(a).addClass(this.classes.buttons.disabled):e(a).removeClass(this.classes.buttons.disabled)}}),select_none:e.extend({},TableTools.buttonBase,{sButtonText:"Deselect all",fnClick:function(){this.fnSelectNone()},fnSelect:function(a){0!==this.fnGetSelected().length?e(a).removeClass(this.classes.buttons.disabled):e(a).addClass(this.classes.buttons.disabled)}, -fnInit:function(a){e(a).addClass(this.classes.buttons.disabled)}}),ajax:e.extend({},TableTools.buttonBase,{sAjaxUrl:"/xhr.php",sButtonText:"Ajax button",fnClick:function(a,b){var c=this.fnGetTableData(b);e.ajax({url:b.sAjaxUrl,data:[{name:"tableData",value:c}],success:b.fnAjaxComplete,dataType:"json",type:"POST",cache:!1,error:function(){alert("Error detected when sending table data to server")}})},fnAjaxComplete:function(){alert("Ajax complete")}}),div:e.extend({},TableTools.buttonBase,{sAction:"div", -sTag:"div",sButtonClass:"DTTT_nonbutton",sButtonText:"Text button"}),collection:e.extend({},TableTools.buttonBase,{sAction:"collection",sButtonClass:"DTTT_button_collection",sButtonText:"Collection",fnClick:function(a,b){this._fnCollectionShow(a,b)}})};TableTools.buttons=TableTools.BUTTONS;TableTools.classes={container:"DTTT_container",buttons:{normal:"DTTT_button",disabled:"DTTT_disabled"},collection:{container:"DTTT_collection",background:"DTTT_collection_background",buttons:{normal:"DTTT_button", -disabled:"DTTT_disabled"}},select:{table:"DTTT_selectable",row:"DTTT_selected selected"},print:{body:"DTTT_Print",info:"DTTT_print_info",message:"DTTT_PrintMessage"}};TableTools.classes_themeroller={container:"DTTT_container ui-buttonset ui-buttonset-multi",buttons:{normal:"DTTT_button ui-button ui-state-default"},collection:{container:"DTTT_collection ui-buttonset ui-buttonset-multi"}};TableTools.DEFAULTS={sSwfPath:"../swf/copy_csv_xls_pdf.swf",sRowSelect:"none",sRowSelector:"tr",sSelectedClass:null, -fnPreRowSelect:null,fnRowSelected:null,fnRowDeselected:null,aButtons:["copy","csv","xls","pdf","print"],oTags:{container:"div",button:"a",liner:"span",collection:{container:"div",button:"a",liner:"span"}}};TableTools.defaults=TableTools.DEFAULTS;TableTools.prototype.CLASS="TableTools";TableTools.version="2.2.4";e.fn.dataTable.Api&&e.fn.dataTable.Api.register("tabletools()",function(){var a=null;0<this.context.length&&(a=TableTools.fnGetInstance(this.context[0].nTable));return a});"function"==typeof e.fn.dataTable&& -"function"==typeof e.fn.dataTableExt.fnVersionCheck&&e.fn.dataTableExt.fnVersionCheck("1.9.0")?e.fn.dataTableExt.aoFeatures.push({fnInit:function(a){var b=a.oInit;return(new TableTools(a.oInstance,b?b.tableTools||b.oTableTools||{}:{})).dom.container},cFeature:"T",sFeature:"TableTools"}):alert("Warning: TableTools requires DataTables 1.9.0 or newer - www.datatables.net/download");e.fn.DataTable.TableTools=TableTools;"function"==typeof m.fn.dataTable&&"function"==typeof m.fn.dataTableExt.fnVersionCheck&& -m.fn.dataTableExt.fnVersionCheck("1.9.0")?m.fn.dataTableExt.aoFeatures.push({fnInit:function(a){a=new TableTools(a.oInstance,"undefined"!=typeof a.oInit.oTableTools?a.oInit.oTableTools:{});TableTools._aInstances.push(a);return a.dom.container},cFeature:"T",sFeature:"TableTools"}):alert("Warning: TableTools 2 requires DataTables 1.9.0 or newer - www.datatables.net/download");m.fn.dataTable.TableTools=TableTools;return m.fn.DataTable.TableTools=TableTools};"function"===typeof define&&define.amd?define(["jquery", -"datatables"],p):"object"===typeof exports?p(require("jquery"),require("datatables")):jQuery&&!jQuery.fn.dataTable.TableTools&&p(jQuery,jQuery.fn.dataTable)})(window,document); diff --git a/assets/plugins/datatables/extensions/TableTools/swf/copy_csv_xls.swf b/assets/plugins/datatables/extensions/TableTools/swf/copy_csv_xls.swf deleted file mode 100644 index 8976009d..00000000 Binary files a/assets/plugins/datatables/extensions/TableTools/swf/copy_csv_xls.swf and /dev/null differ diff --git a/assets/plugins/datatables/extensions/TableTools/swf/copy_csv_xls_pdf.swf b/assets/plugins/datatables/extensions/TableTools/swf/copy_csv_xls_pdf.swf deleted file mode 100644 index 10f6d950..00000000 Binary files a/assets/plugins/datatables/extensions/TableTools/swf/copy_csv_xls_pdf.swf and /dev/null differ diff --git a/assets/plugins/datatables/extensions/colreorder/License.txt b/assets/plugins/datatables/extensions/colreorder/License.txt deleted file mode 100644 index 9ade2f1b..00000000 --- a/assets/plugins/datatables/extensions/colreorder/License.txt +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2010-2015 SpryMedia Limited -http://datatables.net - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/assets/plugins/datatables/extensions/colreorder/Readme.md b/assets/plugins/datatables/extensions/colreorder/Readme.md deleted file mode 100644 index 217dd60e..00000000 --- a/assets/plugins/datatables/extensions/colreorder/Readme.md +++ /dev/null @@ -1,39 +0,0 @@ -# ColReorder - -ColReorder adds the ability for the end user to click and drag column headers to reorder a table as they see fit, to DataTables. Key features include: - -* Very easy integration with DataTables -* Tight integration with all other DataTables plug-ins -* The ability to exclude the first (or more) column from being movable -* Predefine a column order -* Save staving integration with DataTables - - -# Installation - -To use ColReorder, first download DataTables ( http://datatables.net/download ) and place the unzipped ColReorder package into a `extensions` directory in the DataTables package. This will allow the pages in the examples to operate correctly. To see the examples running, open the `examples` directory in your web-browser. - - -# Basic usage - -ColReorder is initialised using the `$.fn.dataTable.ColReorder` constructor. For example: - -```js -$(document).ready( function () { - $('#example').DataTable(); - - new $.fn.dataTable.ColReorder( table ); -} ); -``` - - -# Documentation / support - -* Documentation: http://datatables.net/extensions/colreorder/ -* DataTables support forums: http://datatables.net/forums - - -# GitHub - -If you fancy getting involved with the development of ColReorder and help make it better, please refer to its GitHub repo: https://github.com/DataTables/ColReorder - diff --git a/assets/plugins/datatables/extensions/colreorder/css/dataTables.colReorder.css b/assets/plugins/datatables/extensions/colreorder/css/dataTables.colReorder.css deleted file mode 100644 index bdd6aa0b..00000000 --- a/assets/plugins/datatables/extensions/colreorder/css/dataTables.colReorder.css +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Namespace DTCR - "DataTables ColReorder" plug-in - */ - -table.DTCR_clonedTable { - background-color: rgba(255, 255, 255, 0.7); - z-index: 202; -} - -div.DTCR_pointer { - width: 1px; - background-color: #0259C4; - z-index: 201; -} \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/colreorder/css/dataTables.colReorder.min.css b/assets/plugins/datatables/extensions/colreorder/css/dataTables.colReorder.min.css deleted file mode 100644 index 77b230e0..00000000 --- a/assets/plugins/datatables/extensions/colreorder/css/dataTables.colReorder.min.css +++ /dev/null @@ -1 +0,0 @@ -table.DTCR_clonedTable{background-color:rgba(255,255,255,0.7);z-index:202}div.DTCR_pointer{width:1px;background-color:#0259C4;z-index:201} diff --git a/assets/plugins/datatables/extensions/colreorder/examples/alt_insert.html b/assets/plugins/datatables/extensions/colreorder/examples/alt_insert.html deleted file mode 100644 index 16bedcfe..00000000 --- a/assets/plugins/datatables/extensions/colreorder/examples/alt_insert.html +++ /dev/null @@ -1,637 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>ColReorder example - Alternative insert styling</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.colReorder.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - -div.DTCR_pointer { - margin-top: -15px; - margin-left: -9px; - width: 18px; - background: url('../images/insert.png') no-repeat top left; -} - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.colReorder.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - $('#example').DataTable( { - dom: 'Rlfrtip' - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>ColReorder example <span>Alternative insert styling</span></h1> - - <div class="info"> - <p>Using CSS it is easy to modify the insert bar to suit your web-site. This example shows how an arrow can be used to show the insert point rather than the - straight bar used in the other examples by simply adding an extra CSS rule to include the image.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').DataTable( { - dom: 'Rlfrtip' - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.colReorder.js">../js/dataTables.colReorder.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css">div.DTCR_pointer { - margin-top: -15px; - margin-left: -9px; - width: 18px; - background: url('../images/insert.png') no-repeat top left; -}</code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.colReorder.css">../css/dataTables.colReorder.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./new_init.html">Initialisation using `new`</a></li> - <li class="active"><a href="./alt_insert.html">Alternative insert styling</a></li> - <li><a href="./realtime.html">Realtime updating</a></li> - <li><a href="./state_save.html">State saving</a></li> - <li><a href="./scrolling.html">Scrolling table</a></li> - <li><a href="./predefined.html">Predefined column ordering</a></li> - <li><a href="./reset.html">Reset ordering API</a></li> - <li><a href="./colvis.html">ColVis integration</a></li> - <li><a href="./fixedcolumns.html">FixedColumns integration</a></li> - <li><a href="./fixedheader.html">FixedHeader integration</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - <li><a href="./col_filter.html">Individual column filtering</a></li> - <li><a href="./server_side.html">Server-side processing</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/colreorder/examples/col_filter.html b/assets/plugins/datatables/extensions/colreorder/examples/col_filter.html deleted file mode 100644 index 355ff2b5..00000000 --- a/assets/plugins/datatables/extensions/colreorder/examples/col_filter.html +++ /dev/null @@ -1,656 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>ColReorder example - Individual column filtering</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.colReorder.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.colReorder.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - // Setup - add a text input to each footer cell - $('#example tfoot th').each( function () { - var title = $('#example thead th').eq( $(this).index() ).text(); - $(this).html( '<input type="text" placeholder="Search '+title+'" />' ); - } ); - - // DataTable - var table = $('#example').DataTable( { - dom: 'Rlfrtip' - } ); - - // Apply the filter - $("#example tfoot input").on( 'keyup change', function () { - table - .column( $(this).parent().index()+':visible' ) - .search( this.value ) - .draw(); - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>ColReorder example <span>Individual column filtering</span></h1> - - <div class="info"> - <p>This example of how to use ColReorder shows how it can with with DataTables' ability to do individual column filtering. The basic example is exactly the same as - the DataTables column filtering example, but with ColReorder also added to the table (through the <code>R</code> option for <a href= - "//datatables.net/reference/option/dom"><code class="option" title="DataTables initialisation option">dom<span>DT</span></code></a>).</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - // Setup - add a text input to each footer cell - $('#example tfoot th').each( function () { - var title = $('#example thead th').eq( $(this).index() ).text(); - $(this).html( '&lt;input type=&quot;text&quot; placeholder=&quot;Search '+title+'&quot; /&gt;' ); - } ); - - // DataTable - var table = $('#example').DataTable( { - dom: 'Rlfrtip' - } ); - - // Apply the filter - $(&quot;#example tfoot input&quot;).on( 'keyup change', function () { - table - .column( $(this).parent().index()+':visible' ) - .search( this.value ) - .draw(); - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.colReorder.js">../js/dataTables.colReorder.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.colReorder.css">../css/dataTables.colReorder.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./new_init.html">Initialisation using `new`</a></li> - <li><a href="./alt_insert.html">Alternative insert styling</a></li> - <li><a href="./realtime.html">Realtime updating</a></li> - <li><a href="./state_save.html">State saving</a></li> - <li><a href="./scrolling.html">Scrolling table</a></li> - <li><a href="./predefined.html">Predefined column ordering</a></li> - <li><a href="./reset.html">Reset ordering API</a></li> - <li><a href="./colvis.html">ColVis integration</a></li> - <li><a href="./fixedcolumns.html">FixedColumns integration</a></li> - <li><a href="./fixedheader.html">FixedHeader integration</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - <li class="active"><a href="./col_filter.html">Individual column filtering</a></li> - <li><a href="./server_side.html">Server-side processing</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/colreorder/examples/colvis.html b/assets/plugins/datatables/extensions/colreorder/examples/colvis.html deleted file mode 100644 index 54c79c2a..00000000 --- a/assets/plugins/datatables/extensions/colreorder/examples/colvis.html +++ /dev/null @@ -1,635 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>ColReorder example - ColVis integration</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.colReorder.css"> - <link rel="stylesheet" type="text/css" href="../../ColVis/css/dataTables.colVis.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.colReorder.js"></script> - <script type="text/javascript" language="javascript" src="../../ColVis/js/dataTables.colVis.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - var table = $('#example').DataTable( { - dom: 'RC<"clear">lfrtip', - columnDefs: [ - { visible: false, targets: 1 } - ] - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>ColReorder example <span>ColVis integration</span></h1> - - <div class="info"> - <p>ColReorder interfaces with the <a href="//datatables.net/extensions/colvis">ColVis extension</a> for DataTables by updating the order of the list of columns - whenever a reorder is done. This is shown in the example below, where one column has been initially hidden to add extra emphasis to ColVis.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - var table = $('#example').DataTable( { - dom: 'RC&lt;&quot;clear&quot;&gt;lfrtip', - columnDefs: [ - { visible: false, targets: 1 } - ] - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.colReorder.js">../js/dataTables.colReorder.js</a></li> - <li><a href="../../ColVis/js/dataTables.colVis.js">../../ColVis/js/dataTables.colVis.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.colReorder.css">../css/dataTables.colReorder.css</a></li> - <li><a href="../../ColVis/css/dataTables.colVis.css">../../ColVis/css/dataTables.colVis.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./new_init.html">Initialisation using `new`</a></li> - <li><a href="./alt_insert.html">Alternative insert styling</a></li> - <li><a href="./realtime.html">Realtime updating</a></li> - <li><a href="./state_save.html">State saving</a></li> - <li><a href="./scrolling.html">Scrolling table</a></li> - <li><a href="./predefined.html">Predefined column ordering</a></li> - <li><a href="./reset.html">Reset ordering API</a></li> - <li class="active"><a href="./colvis.html">ColVis integration</a></li> - <li><a href="./fixedcolumns.html">FixedColumns integration</a></li> - <li><a href="./fixedheader.html">FixedHeader integration</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - <li><a href="./col_filter.html">Individual column filtering</a></li> - <li><a href="./server_side.html">Server-side processing</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/colreorder/examples/fixedcolumns.html b/assets/plugins/datatables/extensions/colreorder/examples/fixedcolumns.html deleted file mode 100644 index 0599ba48..00000000 --- a/assets/plugins/datatables/extensions/colreorder/examples/fixedcolumns.html +++ /dev/null @@ -1,831 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>ColReorder example - FixedColumns integration</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.colReorder.css"> - <link rel="stylesheet" type="text/css" href="../../FixedColumns/css/dataTables.fixedColumns.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.colReorder.js"></script> - <script type="text/javascript" language="javascript" src="../../FixedColumns/js/dataTables.fixedColumns.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - - -$(document).ready(function() { - window.table = $('#example').DataTable( { - dom: 'Rlfrtip', - scrollX: true, - scrollCollapse: true, - columnDefs: [ - { orderable: false, targets: 0 }, - { orderable: false, targets: -1 } - ], - ordering: [[ 1, 'asc' ]], - colReorder: { - fixedColumnsLeft: 1, - fixedColumnsRight: 1 - } - } ); - - window.fc = new $.fn.dataTable.FixedColumns( table, { - leftColumns: 1, - rightColumns: 1 - } ); -} ); - - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>ColReorder example <span>FixedColumns integration</span></h1> - - <div class="info"> - <p>While ColReorder works with the built-in scrolling options in DataTables (<a href="//datatables.net/reference/option/scrollY"><code class="option" title= - "DataTables initialisation option">scrollY<span>DT</span></code></a> and <a href="//datatables.net/reference/option/scrollX"><code class="option" title= - "DataTables initialisation option">scrollX<span>DT</span></code></a>) and also the <a href="//datatables.net/extensions/fixedcolumns">FixedColumns - extension</a>.</p> - - <p>ColReorder provides the <code>fixedColumnsLeft</code> and <code>fixedColumnsRight</code> options which allows you disallow reordering of the fixed columns - (which is required).</p> - </div> - - <table id="example" class="display nowrap" cellspacing="0" width="100%"> - <thead> - <tr> - <th>First name</th> - <th>Last name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - <th>Extn.</th> - <th>E-mail</th> - </tr> - </thead> - - <tbody> - <tr> - <td>Tiger</td> - <td>Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - <td>5421</td> - <td>t.nixon@datatables.net</td> - </tr> - <tr> - <td>Garrett</td> - <td>Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - <td>8422</td> - <td>g.winters@datatables.net</td> - </tr> - <tr> - <td>Ashton</td> - <td>Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - <td>1562</td> - <td>a.cox@datatables.net</td> - </tr> - <tr> - <td>Cedric</td> - <td>Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - <td>6224</td> - <td>c.kelly@datatables.net</td> - </tr> - <tr> - <td>Airi</td> - <td>Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - <td>5407</td> - <td>a.satou@datatables.net</td> - </tr> - <tr> - <td>Brielle</td> - <td>Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - <td>4804</td> - <td>b.williamson@datatables.net</td> - </tr> - <tr> - <td>Herrod</td> - <td>Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - <td>9608</td> - <td>h.chandler@datatables.net</td> - </tr> - <tr> - <td>Rhona</td> - <td>Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - <td>6200</td> - <td>r.davidson@datatables.net</td> - </tr> - <tr> - <td>Colleen</td> - <td>Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - <td>2360</td> - <td>c.hurst@datatables.net</td> - </tr> - <tr> - <td>Sonya</td> - <td>Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - <td>1667</td> - <td>s.frost@datatables.net</td> - </tr> - <tr> - <td>Jena</td> - <td>Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - <td>3814</td> - <td>j.gaines@datatables.net</td> - </tr> - <tr> - <td>Quinn</td> - <td>Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - <td>9497</td> - <td>q.flynn@datatables.net</td> - </tr> - <tr> - <td>Charde</td> - <td>Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - <td>6741</td> - <td>c.marshall@datatables.net</td> - </tr> - <tr> - <td>Haley</td> - <td>Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - <td>3597</td> - <td>h.kennedy@datatables.net</td> - </tr> - <tr> - <td>Tatyana</td> - <td>Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - <td>1965</td> - <td>t.fitzpatrick@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - <td>1581</td> - <td>m.silva@datatables.net</td> - </tr> - <tr> - <td>Paul</td> - <td>Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - <td>3059</td> - <td>p.byrd@datatables.net</td> - </tr> - <tr> - <td>Gloria</td> - <td>Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - <td>1721</td> - <td>g.little@datatables.net</td> - </tr> - <tr> - <td>Bradley</td> - <td>Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - <td>2558</td> - <td>b.greer@datatables.net</td> - </tr> - <tr> - <td>Dai</td> - <td>Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - <td>2290</td> - <td>d.rios@datatables.net</td> - </tr> - <tr> - <td>Jenette</td> - <td>Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - <td>1937</td> - <td>j.caldwell@datatables.net</td> - </tr> - <tr> - <td>Yuri</td> - <td>Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - <td>6154</td> - <td>y.berry@datatables.net</td> - </tr> - <tr> - <td>Caesar</td> - <td>Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - <td>8330</td> - <td>c.vance@datatables.net</td> - </tr> - <tr> - <td>Doris</td> - <td>Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - <td>3023</td> - <td>d.wilder@datatables.net</td> - </tr> - <tr> - <td>Angelica</td> - <td>Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - <td>5797</td> - <td>a.ramos@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - <td>8822</td> - <td>g.joyce@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - <td>9239</td> - <td>j.chang@datatables.net</td> - </tr> - <tr> - <td>Brenden</td> - <td>Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - <td>1314</td> - <td>b.wagner@datatables.net</td> - </tr> - <tr> - <td>Fiona</td> - <td>Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - <td>2947</td> - <td>f.green@datatables.net</td> - </tr> - <tr> - <td>Shou</td> - <td>Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - <td>8899</td> - <td>s.itou@datatables.net</td> - </tr> - <tr> - <td>Michelle</td> - <td>House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - <td>2769</td> - <td>m.house@datatables.net</td> - </tr> - <tr> - <td>Suki</td> - <td>Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - <td>6832</td> - <td>s.burks@datatables.net</td> - </tr> - <tr> - <td>Prescott</td> - <td>Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - <td>3606</td> - <td>p.bartlett@datatables.net</td> - </tr> - <tr> - <td>Gavin</td> - <td>Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - <td>2860</td> - <td>g.cortez@datatables.net</td> - </tr> - <tr> - <td>Martena</td> - <td>Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - <td>8240</td> - <td>m.mccray@datatables.net</td> - </tr> - <tr> - <td>Unity</td> - <td>Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - <td>5384</td> - <td>u.butler@datatables.net</td> - </tr> - <tr> - <td>Howard</td> - <td>Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - <td>7031</td> - <td>h.hatfield@datatables.net</td> - </tr> - <tr> - <td>Hope</td> - <td>Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - <td>6318</td> - <td>h.fuentes@datatables.net</td> - </tr> - <tr> - <td>Vivian</td> - <td>Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - <td>9422</td> - <td>v.harrell@datatables.net</td> - </tr> - <tr> - <td>Timothy</td> - <td>Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - <td>7580</td> - <td>t.mooney@datatables.net</td> - </tr> - <tr> - <td>Jackson</td> - <td>Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - <td>1042</td> - <td>j.bradshaw@datatables.net</td> - </tr> - <tr> - <td>Olivia</td> - <td>Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - <td>2120</td> - <td>o.liang@datatables.net</td> - </tr> - <tr> - <td>Bruno</td> - <td>Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - <td>6222</td> - <td>b.nash@datatables.net</td> - </tr> - <tr> - <td>Sakura</td> - <td>Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - <td>9383</td> - <td>s.yamamoto@datatables.net</td> - </tr> - <tr> - <td>Thor</td> - <td>Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - <td>8327</td> - <td>t.walton@datatables.net</td> - </tr> - <tr> - <td>Finn</td> - <td>Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - <td>2927</td> - <td>f.camacho@datatables.net</td> - </tr> - <tr> - <td>Serge</td> - <td>Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - <td>8352</td> - <td>s.baldwin@datatables.net</td> - </tr> - <tr> - <td>Zenaida</td> - <td>Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - <td>7439</td> - <td>z.frank@datatables.net</td> - </tr> - <tr> - <td>Zorita</td> - <td>Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - <td>4389</td> - <td>z.serrano@datatables.net</td> - </tr> - <tr> - <td>Jennifer</td> - <td>Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - <td>3431</td> - <td>j.acosta@datatables.net</td> - </tr> - <tr> - <td>Cara</td> - <td>Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - <td>3990</td> - <td>c.stevens@datatables.net</td> - </tr> - <tr> - <td>Hermione</td> - <td>Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - <td>1016</td> - <td>h.butler@datatables.net</td> - </tr> - <tr> - <td>Lael</td> - <td>Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - <td>6733</td> - <td>l.greer@datatables.net</td> - </tr> - <tr> - <td>Jonas</td> - <td>Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - <td>8196</td> - <td>j.alexander@datatables.net</td> - </tr> - <tr> - <td>Shad</td> - <td>Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - <td>6373</td> - <td>s.decker@datatables.net</td> - </tr> - <tr> - <td>Michael</td> - <td>Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - <td>5384</td> - <td>m.bruce@datatables.net</td> - </tr> - <tr> - <td>Donna</td> - <td>Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - <td>4226</td> - <td>d.snider@datatables.net</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - window.table = $('#example').DataTable( { - dom: 'Rlfrtip', - scrollX: true, - scrollCollapse: true, - columnDefs: [ - { orderable: false, targets: 0 }, - { orderable: false, targets: -1 } - ], - ordering: [[ 1, 'asc' ]], - colReorder: { - fixedColumnsLeft: 1, - fixedColumnsRight: 1 - } - } ); - - window.fc = new $.fn.dataTable.FixedColumns( table, { - leftColumns: 1, - rightColumns: 1 - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.colReorder.js">../js/dataTables.colReorder.js</a></li> - <li><a href="../../FixedColumns/js/dataTables.fixedColumns.js">../../FixedColumns/js/dataTables.fixedColumns.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.colReorder.css">../css/dataTables.colReorder.css</a></li> - <li><a href="../../FixedColumns/css/dataTables.fixedColumns.css">../../FixedColumns/css/dataTables.fixedColumns.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./new_init.html">Initialisation using `new`</a></li> - <li><a href="./alt_insert.html">Alternative insert styling</a></li> - <li><a href="./realtime.html">Realtime updating</a></li> - <li><a href="./state_save.html">State saving</a></li> - <li><a href="./scrolling.html">Scrolling table</a></li> - <li><a href="./predefined.html">Predefined column ordering</a></li> - <li><a href="./reset.html">Reset ordering API</a></li> - <li><a href="./colvis.html">ColVis integration</a></li> - <li class="active"><a href="./fixedcolumns.html">FixedColumns integration</a></li> - <li><a href="./fixedheader.html">FixedHeader integration</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - <li><a href="./col_filter.html">Individual column filtering</a></li> - <li><a href="./server_side.html">Server-side processing</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/colreorder/examples/fixedheader.html b/assets/plugins/datatables/extensions/colreorder/examples/fixedheader.html deleted file mode 100644 index 40f05468..00000000 --- a/assets/plugins/datatables/extensions/colreorder/examples/fixedheader.html +++ /dev/null @@ -1,635 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>ColReorder example - FixedHeader integration</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.colReorder.css"> - <link rel="stylesheet" type="text/css" href="../../FixedHeader/css/dataTables.fixedHeader.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.colReorder.js"></script> - <script type="text/javascript" language="javascript" src="../../FixedHeader/js/dataTables.fixedHeader.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - - -$(document).ready(function() { - var table = $('#example').dataTable( { - dom: 'Rlfrtip' - } ); - - new $.fn.dataTable.fixedHeader( table ); -} ); - - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>ColReorder example <span>FixedHeader integration</span></h1> - - <div class="info"> - <p>FixedHeader is a particularly useful plug-in for DataTables, allowing a table header to float at the top of a scrolling window. ColReorder works well with - FixedHeader, allowing you to reorder columns even using the floating header, as shown in the example below.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - var table = $('#example').dataTable( { - dom: 'Rlfrtip' - } ); - - new $.fn.dataTable.fixedHeader( table ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.colReorder.js">../js/dataTables.colReorder.js</a></li> - <li><a href="../../FixedHeader/js/dataTables.fixedHeader.js">../../FixedHeader/js/dataTables.fixedHeader.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.colReorder.css">../css/dataTables.colReorder.css</a></li> - <li><a href="../../FixedHeader/css/dataTables.fixedHeader.css">../../FixedHeader/css/dataTables.fixedHeader.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./new_init.html">Initialisation using `new`</a></li> - <li><a href="./alt_insert.html">Alternative insert styling</a></li> - <li><a href="./realtime.html">Realtime updating</a></li> - <li><a href="./state_save.html">State saving</a></li> - <li><a href="./scrolling.html">Scrolling table</a></li> - <li><a href="./predefined.html">Predefined column ordering</a></li> - <li><a href="./reset.html">Reset ordering API</a></li> - <li><a href="./colvis.html">ColVis integration</a></li> - <li><a href="./fixedcolumns.html">FixedColumns integration</a></li> - <li class="active"><a href="./fixedheader.html">FixedHeader integration</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - <li><a href="./col_filter.html">Individual column filtering</a></li> - <li><a href="./server_side.html">Server-side processing</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/colreorder/examples/index.html b/assets/plugins/datatables/extensions/colreorder/examples/index.html deleted file mode 100644 index 65018ab6..00000000 --- a/assets/plugins/datatables/extensions/colreorder/examples/index.html +++ /dev/null @@ -1,74 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - - <title>ColReorder examples - ColReorder examples</title> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>ColReorder example <span>ColReorder examples</span></h1> - - <div class="info"> - <p>ColReorder adds the ability for the end user to click and drag column headers to reorder a table as they see fit, to DataTables. Key features include:</p> - - <ul class="markdown"> - <li>Very easy integration with DataTables</li> - <li>Tight integration with all other DataTables plug-ins</li> - <li>The ability to exclude the first (or more) column from being movable</li> - <li>Predefine a column order</li> - <li>Save staving integration with DataTables</li> - </ul> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./new_init.html">Initialisation using `new`</a></li> - <li><a href="./alt_insert.html">Alternative insert styling</a></li> - <li><a href="./realtime.html">Realtime updating</a></li> - <li><a href="./state_save.html">State saving</a></li> - <li><a href="./scrolling.html">Scrolling table</a></li> - <li><a href="./predefined.html">Predefined column ordering</a></li> - <li><a href="./reset.html">Reset ordering API</a></li> - <li><a href="./colvis.html">ColVis integration</a></li> - <li><a href="./fixedcolumns.html">FixedColumns integration</a></li> - <li><a href="./fixedheader.html">FixedHeader integration</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - <li><a href="./col_filter.html">Individual column filtering</a></li> - <li><a href="./server_side.html">Server-side processing</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/colreorder/examples/jqueryui.html b/assets/plugins/datatables/extensions/colreorder/examples/jqueryui.html deleted file mode 100644 index 8eedf912..00000000 --- a/assets/plugins/datatables/extensions/colreorder/examples/jqueryui.html +++ /dev/null @@ -1,635 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>ColReorder example - jQuery UI styling</title> - <link rel="stylesheet" type="text/css" href="//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css"> - <link rel="stylesheet" type="text/css" href="../../Plugins/integration/jqueryui/dataTables.jqueryui.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.colReorder.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../../Plugins/integration/jqueryui/dataTables.jqueryui.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.colReorder.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - - -$(document).ready(function() { - var table = $('#example').dataTable(); - - new $.fn.dataTable.ColReorder( table ); -} ); - - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>ColReorder example <span>jQuery UI styling</span></h1> - - <div class="info"> - <p>This example shows how the jQuery UI ThemeRoller option in DataTables can be used with ColReorder.</p> - - <p>The important thing to note here is that it is easier to use <code>new $.fn.dataTable.ColReorder()</code> to add ColReorder to the table rather than <a href= - "//datatables.net/reference/option/dom"><code class="option" title="DataTables initialisation option">dom<span>DT</span></code></a> as the jQuery UI integration - uses a complex expression for <a href="//datatables.net/reference/option/dom"><code class="option" title= - "DataTables initialisation option">dom<span>DT</span></code></a>.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - var table = $('#example').dataTable(); - - new $.fn.dataTable.ColReorder( table ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../../Plugins/integration/jqueryui/dataTables.jqueryui.js">../../Plugins/integration/jqueryui/dataTables.jqueryui.js</a></li> - <li><a href="../js/dataTables.colReorder.js">../js/dataTables.colReorder.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css">//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css</a></li> - <li><a href="../../Plugins/integration/jqueryui/dataTables.jqueryui.css">../../Plugins/integration/jqueryui/dataTables.jqueryui.css</a></li> - <li><a href="../css/dataTables.colReorder.css">../css/dataTables.colReorder.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./new_init.html">Initialisation using `new`</a></li> - <li><a href="./alt_insert.html">Alternative insert styling</a></li> - <li><a href="./realtime.html">Realtime updating</a></li> - <li><a href="./state_save.html">State saving</a></li> - <li><a href="./scrolling.html">Scrolling table</a></li> - <li><a href="./predefined.html">Predefined column ordering</a></li> - <li><a href="./reset.html">Reset ordering API</a></li> - <li><a href="./colvis.html">ColVis integration</a></li> - <li><a href="./fixedcolumns.html">FixedColumns integration</a></li> - <li><a href="./fixedheader.html">FixedHeader integration</a></li> - <li class="active"><a href="./jqueryui.html">jQuery UI styling</a></li> - <li><a href="./col_filter.html">Individual column filtering</a></li> - <li><a href="./server_side.html">Server-side processing</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/colreorder/examples/new_init.html b/assets/plugins/datatables/extensions/colreorder/examples/new_init.html deleted file mode 100644 index 01ab2aac..00000000 --- a/assets/plugins/datatables/extensions/colreorder/examples/new_init.html +++ /dev/null @@ -1,626 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>ColReorder example - Initialisation using `new`</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.colReorder.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.colReorder.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - var table = $('#example').DataTable(); - - new $.fn.dataTable.ColReorder( table ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>ColReorder example <span>Initialisation using `new`</span></h1> - - <div class="info"> - <p>As well as providing the option to be initialised through the <code>R</code> option of <a href="//datatables.net/reference/option/dom"><code class="option" - title="DataTables initialisation option">dom<span>DT</span></code></a>, ColReorder can also be added to a DataTable using direct initialisation - <code>new - $.fn.dataTable.ColReorder();</code> as shown in this example.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - var table = $('#example').DataTable(); - - new $.fn.dataTable.ColReorder( table ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.colReorder.js">../js/dataTables.colReorder.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.colReorder.css">../css/dataTables.colReorder.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li class="active"><a href="./new_init.html">Initialisation using `new`</a></li> - <li><a href="./alt_insert.html">Alternative insert styling</a></li> - <li><a href="./realtime.html">Realtime updating</a></li> - <li><a href="./state_save.html">State saving</a></li> - <li><a href="./scrolling.html">Scrolling table</a></li> - <li><a href="./predefined.html">Predefined column ordering</a></li> - <li><a href="./reset.html">Reset ordering API</a></li> - <li><a href="./colvis.html">ColVis integration</a></li> - <li><a href="./fixedcolumns.html">FixedColumns integration</a></li> - <li><a href="./fixedheader.html">FixedHeader integration</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - <li><a href="./col_filter.html">Individual column filtering</a></li> - <li><a href="./server_side.html">Server-side processing</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/colreorder/examples/predefined.html b/assets/plugins/datatables/extensions/colreorder/examples/predefined.html deleted file mode 100644 index 3cbb1663..00000000 --- a/assets/plugins/datatables/extensions/colreorder/examples/predefined.html +++ /dev/null @@ -1,636 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>ColReorder example - Predefined column ordering</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.colReorder.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.colReorder.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - - -$(document).ready(function() { - $('#example').dataTable( { - dom: 'Rlfrtip', - colReorder: { - order: [ 4, 3, 2, 1, 0, 5 ] - } - } ); -} ); - - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>ColReorder example <span>Predefined column ordering</span></h1> - - <div class="info"> - <p>ColReorder provides the ability to specify a column ordering which is not that of the HTML (which typically you will want) through the parameter - <code>colReorder.order</code>. This is an array of integers with the column ordering you want.</p> - - <p>For full information about the ColReorder options, please refer to the <a href="//datatables.net/extensions/colreorder/options">ColReorder options - documentation</a>.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').dataTable( { - dom: 'Rlfrtip', - colReorder: { - order: [ 4, 3, 2, 1, 0, 5 ] - } - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.colReorder.js">../js/dataTables.colReorder.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.colReorder.css">../css/dataTables.colReorder.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./new_init.html">Initialisation using `new`</a></li> - <li><a href="./alt_insert.html">Alternative insert styling</a></li> - <li><a href="./realtime.html">Realtime updating</a></li> - <li><a href="./state_save.html">State saving</a></li> - <li><a href="./scrolling.html">Scrolling table</a></li> - <li class="active"><a href="./predefined.html">Predefined column ordering</a></li> - <li><a href="./reset.html">Reset ordering API</a></li> - <li><a href="./colvis.html">ColVis integration</a></li> - <li><a href="./fixedcolumns.html">FixedColumns integration</a></li> - <li><a href="./fixedheader.html">FixedHeader integration</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - <li><a href="./col_filter.html">Individual column filtering</a></li> - <li><a href="./server_side.html">Server-side processing</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/colreorder/examples/realtime.html b/assets/plugins/datatables/extensions/colreorder/examples/realtime.html deleted file mode 100644 index c759409a..00000000 --- a/assets/plugins/datatables/extensions/colreorder/examples/realtime.html +++ /dev/null @@ -1,637 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>ColReorder example - Realtime updating</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.colReorder.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.colReorder.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - - -$(document).ready(function() { - $('#example').dataTable( { - dom: 'Rlfrtip', - colReorder: { - realtime: true - } - } ); -} ); - - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>ColReorder example <span>Realtime updating</span></h1> - - <div class="info"> - <p>While the ColReorder insertion point indicator can be styled, another option to show the end user what the column will look like when the table has been - reordered is to actually do the reordering while the mouse is still dragging the column header. This is shown in this example and is controlled by the - <code>realtime</code> parameter.</p> - - <p>For full information about the ColReorder options, please refer to the <a href="//datatables.net/extensions/colreorder/options">ColReorder options - documentation</a>.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').dataTable( { - dom: 'Rlfrtip', - colReorder: { - realtime: true - } - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.colReorder.js">../js/dataTables.colReorder.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.colReorder.css">../css/dataTables.colReorder.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./new_init.html">Initialisation using `new`</a></li> - <li><a href="./alt_insert.html">Alternative insert styling</a></li> - <li class="active"><a href="./realtime.html">Realtime updating</a></li> - <li><a href="./state_save.html">State saving</a></li> - <li><a href="./scrolling.html">Scrolling table</a></li> - <li><a href="./predefined.html">Predefined column ordering</a></li> - <li><a href="./reset.html">Reset ordering API</a></li> - <li><a href="./colvis.html">ColVis integration</a></li> - <li><a href="./fixedcolumns.html">FixedColumns integration</a></li> - <li><a href="./fixedheader.html">FixedHeader integration</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - <li><a href="./col_filter.html">Individual column filtering</a></li> - <li><a href="./server_side.html">Server-side processing</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/colreorder/examples/reset.html b/assets/plugins/datatables/extensions/colreorder/examples/reset.html deleted file mode 100644 index b2e1fc08..00000000 --- a/assets/plugins/datatables/extensions/colreorder/examples/reset.html +++ /dev/null @@ -1,649 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>ColReorder example - Reset ordering API</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.colReorder.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.colReorder.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - - -$(document).ready(function() { - var table = $('#example').DataTable( { - dom: 'Rlfrtip', - colReorder: { - order: [ 4, 3, 2, 1, 0 ] - } - } ); - - $('#reset').click( function (e) { - e.preventDefault(); - - table.colReorder.reset(); - } ); -} ); - - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>ColReorder example <span>Reset ordering API</span></h1> - - <div class="info"> - <p>One useful control option to present the end user when using ColReorder is the ability to reset the column ordering to that which was found in the HTML. This - can be done by calling the <code>reset</code> API function. While ColReorder does not provide a visual element for this itself (in order to provide maximum - flexibility) it is easy to hook to an event handler, as shown in this example.</p> - - <p>For full information about the ColReorder API, please refer to the <a href="//datatables.net/extensions/colreorder/api">ColReorder API documentation</a>.</p> - </div><button id="reset">Reset to original HTML order</button><br> - <br> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - var table = $('#example').DataTable( { - dom: 'Rlfrtip', - colReorder: { - order: [ 4, 3, 2, 1, 0 ] - } - } ); - - $('#reset').click( function (e) { - e.preventDefault(); - - table.colReorder.reset(); - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.colReorder.js">../js/dataTables.colReorder.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.colReorder.css">../css/dataTables.colReorder.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./new_init.html">Initialisation using `new`</a></li> - <li><a href="./alt_insert.html">Alternative insert styling</a></li> - <li><a href="./realtime.html">Realtime updating</a></li> - <li><a href="./state_save.html">State saving</a></li> - <li><a href="./scrolling.html">Scrolling table</a></li> - <li><a href="./predefined.html">Predefined column ordering</a></li> - <li class="active"><a href="./reset.html">Reset ordering API</a></li> - <li><a href="./colvis.html">ColVis integration</a></li> - <li><a href="./fixedcolumns.html">FixedColumns integration</a></li> - <li><a href="./fixedheader.html">FixedHeader integration</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - <li><a href="./col_filter.html">Individual column filtering</a></li> - <li><a href="./server_side.html">Server-side processing</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/colreorder/examples/scrolling.html b/assets/plugins/datatables/extensions/colreorder/examples/scrolling.html deleted file mode 100644 index 860e6655..00000000 --- a/assets/plugins/datatables/extensions/colreorder/examples/scrolling.html +++ /dev/null @@ -1,632 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>ColReorder example - Scrolling table</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.colReorder.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.colReorder.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - - -$(document).ready(function() { - $('#example').dataTable( { - dom: 'Rlfrtip', - scrollY: '200px', - paging: false - } ); -} ); - - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>ColReorder example <span>Scrolling table</span></h1> - - <div class="info"> - <p>This is a simple example to show ColReorder working with DataTables scrolling (<a href="//datatables.net/reference/option/scrollY"><code class="option" title= - "DataTables initialisation option">scrollY<span>DT</span></code></a> and <a href="//datatables.net/reference/option/scrollX"><code class="option" title= - "DataTables initialisation option">scrollX<span>DT</span></code></a>).</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').dataTable( { - dom: 'Rlfrtip', - scrollY: '200px', - paging: false - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.colReorder.js">../js/dataTables.colReorder.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.colReorder.css">../css/dataTables.colReorder.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./new_init.html">Initialisation using `new`</a></li> - <li><a href="./alt_insert.html">Alternative insert styling</a></li> - <li><a href="./realtime.html">Realtime updating</a></li> - <li><a href="./state_save.html">State saving</a></li> - <li class="active"><a href="./scrolling.html">Scrolling table</a></li> - <li><a href="./predefined.html">Predefined column ordering</a></li> - <li><a href="./reset.html">Reset ordering API</a></li> - <li><a href="./colvis.html">ColVis integration</a></li> - <li><a href="./fixedcolumns.html">FixedColumns integration</a></li> - <li><a href="./fixedheader.html">FixedHeader integration</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - <li><a href="./col_filter.html">Individual column filtering</a></li> - <li><a href="./server_side.html">Server-side processing</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/colreorder/examples/server_side.html b/assets/plugins/datatables/extensions/colreorder/examples/server_side.html deleted file mode 100644 index f682b7ab..00000000 --- a/assets/plugins/datatables/extensions/colreorder/examples/server_side.html +++ /dev/null @@ -1,192 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>ColReorder example - Server-side processing</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.colReorder.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.colReorder.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - - -$(document).ready(function() { - $('#example').dataTable( { - dom: 'Rlfrtip', - processing: true, - serverSide: true, - ajax: "../../../examples/server_side/scripts/objects.php", - columns: [ - { data: "first_name" }, - { data: "last_name" }, - { data: "position" }, - { data: "office" }, - { data: "start_date" }, - { data: "salary" } - ] - } ); -} ); - - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>ColReorder example <span>Server-side processing</span></h1> - - <div class="info"> - <p>Server-side processing can be exceptionally useful in DataTables when dealing with massive data sets, and ColReorder works with this as would be expected.</p> - - <p>It is recommend that you use object based data with server-side processing and ColReorder, as this provides easily understandable mapping between the the - columns and the data relation on the server, otherwise you need to work out array indexes on each call!</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Extn.</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Extn.</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').dataTable( { - dom: 'Rlfrtip', - processing: true, - serverSide: true, - ajax: &quot;../../../examples/server_side/scripts/objects.php&quot;, - columns: [ - { data: &quot;first_name&quot; }, - { data: &quot;last_name&quot; }, - { data: &quot;position&quot; }, - { data: &quot;office&quot; }, - { data: &quot;start_date&quot; }, - { data: &quot;salary&quot; } - ] - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.colReorder.js">../js/dataTables.colReorder.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.colReorder.css">../css/dataTables.colReorder.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./new_init.html">Initialisation using `new`</a></li> - <li><a href="./alt_insert.html">Alternative insert styling</a></li> - <li><a href="./realtime.html">Realtime updating</a></li> - <li><a href="./state_save.html">State saving</a></li> - <li><a href="./scrolling.html">Scrolling table</a></li> - <li><a href="./predefined.html">Predefined column ordering</a></li> - <li><a href="./reset.html">Reset ordering API</a></li> - <li><a href="./colvis.html">ColVis integration</a></li> - <li><a href="./fixedcolumns.html">FixedColumns integration</a></li> - <li><a href="./fixedheader.html">FixedHeader integration</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - <li><a href="./col_filter.html">Individual column filtering</a></li> - <li class="active"><a href="./server_side.html">Server-side processing</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/colreorder/examples/simple.html b/assets/plugins/datatables/extensions/colreorder/examples/simple.html deleted file mode 100644 index 92cffee7..00000000 --- a/assets/plugins/datatables/extensions/colreorder/examples/simple.html +++ /dev/null @@ -1,630 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>ColReorder example - Basic initialisation</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.colReorder.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.colReorder.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - -$(document).ready(function() { - $('#example').DataTable( { - dom: 'Rlfrtip' - } ); -} ); - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>ColReorder example <span>Basic initialisation</span></h1> - - <div class="info"> - <p>This example shows the basic use case of the ColReorder plug-in. With ColReorder enabled for a table, the user has the ability to click and drag any table - header cell, and drop it where they wish the column to be inserted. The insert point is shown visually, and the column reordering is done as soon as the mouse - button is released.</p> - - <p>ColReorder is added to a DataTable through the <code>R</code> character that it adds to DataTables feature plug-ins. This means that you simply add the - character <code>R</code> to the <a href="//datatables.net/reference/option/dom"><code class="option" title= - "DataTables initialisation option">dom<span>DT</span></code></a> parameter for your table to add ColReorder - as shown in the example below.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').DataTable( { - dom: 'Rlfrtip' - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.colReorder.js">../js/dataTables.colReorder.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.colReorder.css">../css/dataTables.colReorder.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li class="active"><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./new_init.html">Initialisation using `new`</a></li> - <li><a href="./alt_insert.html">Alternative insert styling</a></li> - <li><a href="./realtime.html">Realtime updating</a></li> - <li><a href="./state_save.html">State saving</a></li> - <li><a href="./scrolling.html">Scrolling table</a></li> - <li><a href="./predefined.html">Predefined column ordering</a></li> - <li><a href="./reset.html">Reset ordering API</a></li> - <li><a href="./colvis.html">ColVis integration</a></li> - <li><a href="./fixedcolumns.html">FixedColumns integration</a></li> - <li><a href="./fixedheader.html">FixedHeader integration</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - <li><a href="./col_filter.html">Individual column filtering</a></li> - <li><a href="./server_side.html">Server-side processing</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/colreorder/examples/state_save.html b/assets/plugins/datatables/extensions/colreorder/examples/state_save.html deleted file mode 100644 index 6e4e2e9e..00000000 --- a/assets/plugins/datatables/extensions/colreorder/examples/state_save.html +++ /dev/null @@ -1,631 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> - <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> - <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> - - <title>ColReorder example - State saving</title> - <link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="../css/dataTables.colReorder.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css"> - <link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css"> - <style type="text/css" class="init"> - - </style> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script> - <script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="../js/dataTables.colReorder.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script> - <script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script> - <script type="text/javascript" language="javascript" class="init"> - - - -$(document).ready(function() { - $('#example').dataTable( { - dom: 'Rlfrtip', - stateSave: true - } ); -} ); - - - - </script> -</head> - -<body class="dt-example"> - <div class="container"> - <section> - <h1>ColReorder example <span>State saving</span></h1> - - <div class="info"> - <p>A useful interaction pattern to use in DataTables is state saving, so when the end user reloads or revisits a page its previous state is retained. ColReorder - works seamlessly with state saving in DataTables (<a href="//datatables.net/reference/option/stateSave"><code class="option" title= - "DataTables initialisation option">stateSave<span>DT</span></code></a>), remembering and restoring the column positions, as well as everything else such as sorting - and filtering.</p> - </div> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <ul class="tabs"> - <li class="active">Javascript</li> - <li>HTML</li> - <li>CSS</li> - <li>Ajax</li> - <li>Server-side script</li> - </ul> - - <div class="tabs"> - <div class="js"> - <p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() { - $('#example').dataTable( { - dom: 'Rlfrtip', - stateSave: true - } ); -} );</code> - - <p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p> - - <ul> - <li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li> - <li><a href="../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li> - <li><a href="../js/dataTables.colReorder.js">../js/dataTables.colReorder.js</a></li> - </ul> - </div> - - <div class="table"> - <p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p> - </div> - - <div class="css"> - <div> - <p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The - additional CSS used is shown below:</p><code class="multiline language-css"></code> - </div> - - <p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p> - - <ul> - <li><a href="../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li> - <li><a href="../css/dataTables.colReorder.css">../css/dataTables.colReorder.css</a></li> - </ul> - </div> - - <div class="ajax"> - <p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is - loaded.</p> - </div> - - <div class="php"> - <p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side - processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables - documentation</a>.</p> - </div> - </div> - </section> - </div> - - <section> - <div class="footer"> - <div class="gradient"></div> - - <div class="liner"> - <h2>Other examples</h2> - - <div class="toc"> - <div class="toc-group"> - <h3><a href="./index.html">Examples</a></h3> - <ul class="toc active"> - <li><a href="./simple.html">Basic initialisation</a></li> - <li><a href="./new_init.html">Initialisation using `new`</a></li> - <li><a href="./alt_insert.html">Alternative insert styling</a></li> - <li><a href="./realtime.html">Realtime updating</a></li> - <li class="active"><a href="./state_save.html">State saving</a></li> - <li><a href="./scrolling.html">Scrolling table</a></li> - <li><a href="./predefined.html">Predefined column ordering</a></li> - <li><a href="./reset.html">Reset ordering API</a></li> - <li><a href="./colvis.html">ColVis integration</a></li> - <li><a href="./fixedcolumns.html">FixedColumns integration</a></li> - <li><a href="./fixedheader.html">FixedHeader integration</a></li> - <li><a href="./jqueryui.html">jQuery UI styling</a></li> - <li><a href="./col_filter.html">Individual column filtering</a></li> - <li><a href="./server_side.html">Server-side processing</a></li> - </ul> - </div> - </div> - - <div class="epilogue"> - <p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br> - Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> - which extend the capabilities of DataTables.</p> - - <p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br> - DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p> - </div> - </div> - </div> - </section> -</body> -</html> \ No newline at end of file diff --git a/assets/plugins/datatables/extensions/colreorder/images/insert.png b/assets/plugins/datatables/extensions/colreorder/images/insert.png deleted file mode 100644 index 15d5522d..00000000 Binary files a/assets/plugins/datatables/extensions/colreorder/images/insert.png and /dev/null differ diff --git a/assets/plugins/datatables/extensions/colreorder/js/dataTables.colReorder.js b/assets/plugins/datatables/extensions/colreorder/js/dataTables.colReorder.js deleted file mode 100644 index c3b2f1e2..00000000 --- a/assets/plugins/datatables/extensions/colreorder/js/dataTables.colReorder.js +++ /dev/null @@ -1,1372 +0,0 @@ -/*! ColReorder 1.1.3 - * ©2010-2014 SpryMedia Ltd - datatables.net/license - */ - -/** - * @summary ColReorder - * @description Provide the ability to reorder columns in a DataTable - * @version 1.1.3 - * @file dataTables.colReorder.js - * @author SpryMedia Ltd (www.sprymedia.co.uk) - * @contact www.sprymedia.co.uk/contact - * @copyright Copyright 2010-2014 SpryMedia Ltd. - * - * This source file is free software, available under the following license: - * MIT license - http://datatables.net/license/mit - * - * This source file is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. - * - * For details please refer to: http://www.datatables.net - */ - -(function(window, document, undefined) { - - -/** - * Switch the key value pairing of an index array to be value key (i.e. the old value is now the - * key). For example consider [ 2, 0, 1 ] this would be returned as [ 1, 2, 0 ]. - * @method fnInvertKeyValues - * @param array aIn Array to switch around - * @returns array - */ -function fnInvertKeyValues( aIn ) -{ - var aRet=[]; - for ( var i=0, iLen=aIn.length ; i<iLen ; i++ ) - { - aRet[ aIn[i] ] = i; - } - return aRet; -} - - -/** - * Modify an array by switching the position of two elements - * @method fnArraySwitch - * @param array aArray Array to consider, will be modified by reference (i.e. no return) - * @param int iFrom From point - * @param int iTo Insert point - * @returns void - */ -function fnArraySwitch( aArray, iFrom, iTo ) -{ - var mStore = aArray.splice( iFrom, 1 )[0]; - aArray.splice( iTo, 0, mStore ); -} - - -/** - * Switch the positions of nodes in a parent node (note this is specifically designed for - * table rows). Note this function considers all element nodes under the parent! - * @method fnDomSwitch - * @param string sTag Tag to consider - * @param int iFrom Element to move - * @param int Point to element the element to (before this point), can be null for append - * @returns void - */ -function fnDomSwitch( nParent, iFrom, iTo ) -{ - var anTags = []; - for ( var i=0, iLen=nParent.childNodes.length ; i<iLen ; i++ ) - { - if ( nParent.childNodes[i].nodeType == 1 ) - { - anTags.push( nParent.childNodes[i] ); - } - } - var nStore = anTags[ iFrom ]; - - if ( iTo !== null ) - { - nParent.insertBefore( nStore, anTags[iTo] ); - } - else - { - nParent.appendChild( nStore ); - } -} - - - -var factory = function( $, DataTable ) { -"use strict"; - -/** - * Plug-in for DataTables which will reorder the internal column structure by taking the column - * from one position (iFrom) and insert it into a given point (iTo). - * @method $.fn.dataTableExt.oApi.fnColReorder - * @param object oSettings DataTables settings object - automatically added by DataTables! - * @param int iFrom Take the column to be repositioned from this point - * @param int iTo and insert it into this point - * @returns void - */ -$.fn.dataTableExt.oApi.fnColReorder = function ( oSettings, iFrom, iTo ) -{ - var v110 = $.fn.dataTable.Api ? true : false; - var i, iLen, j, jLen, iCols=oSettings.aoColumns.length, nTrs, oCol; - var attrMap = function ( obj, prop, mapping ) { - if ( ! obj[ prop ] ) { - return; - } - - var a = obj[ prop ].split('.'); - var num = a.shift(); - - if ( isNaN( num*1 ) ) { - return; - } - - obj[ prop ] = mapping[ num*1 ]+'.'+a.join('.'); - }; - - /* Sanity check in the input */ - if ( iFrom == iTo ) - { - /* Pointless reorder */ - return; - } - - if ( iFrom < 0 || iFrom >= iCols ) - { - this.oApi._fnLog( oSettings, 1, "ColReorder 'from' index is out of bounds: "+iFrom ); - return; - } - - if ( iTo < 0 || iTo >= iCols ) - { - this.oApi._fnLog( oSettings, 1, "ColReorder 'to' index is out of bounds: "+iTo ); - return; - } - - /* - * Calculate the new column array index, so we have a mapping between the old and new - */ - var aiMapping = []; - for ( i=0, iLen=iCols ; i<iLen ; i++ ) - { - aiMapping[i] = i; - } - fnArraySwitch( aiMapping, iFrom, iTo ); - var aiInvertMapping = fnInvertKeyValues( aiMapping ); - - - /* - * Convert all internal indexing to the new column order indexes - */ - /* Sorting */ - for ( i=0, iLen=oSettings.aaSorting.length ; i<iLen ; i++ ) - { - oSettings.aaSorting[i][0] = aiInvertMapping[ oSettings.aaSorting[i][0] ]; - } - - /* Fixed sorting */ - if ( oSettings.aaSortingFixed !== null ) - { - for ( i=0, iLen=oSettings.aaSortingFixed.length ; i<iLen ; i++ ) - { - oSettings.aaSortingFixed[i][0] = aiInvertMapping[ oSettings.aaSortingFixed[i][0] ]; - } - } - - /* Data column sorting (the column which the sort for a given column should take place on) */ - for ( i=0, iLen=iCols ; i<iLen ; i++ ) - { - oCol = oSettings.aoColumns[i]; - for ( j=0, jLen=oCol.aDataSort.length ; j<jLen ; j++ ) - { - oCol.aDataSort[j] = aiInvertMapping[ oCol.aDataSort[j] ]; - } - - // Update the column indexes - if ( v110 ) { - oCol.idx = aiInvertMapping[ oCol.idx ]; - } - } - - if ( v110 ) { - // Update 1.10 optimised sort class removal variable - $.each( oSettings.aLastSort, function (i, val) { - oSettings.aLastSort[i].src = aiInvertMapping[ val.src ]; - } ); - } - - /* Update the Get and Set functions for each column */ - for ( i=0, iLen=iCols ; i<iLen ; i++ ) - { - oCol = oSettings.aoColumns[i]; - - if ( typeof oCol.mData == 'number' ) { - oCol.mData = aiInvertMapping[ oCol.mData ]; - - // regenerate the get / set functions - oSettings.oApi._fnColumnOptions( oSettings, i, {} ); - } - else if ( $.isPlainObject( oCol.mData ) ) { - // HTML5 data sourced - attrMap( oCol.mData, '_', aiInvertMapping ); - attrMap( oCol.mData, 'filter', aiInvertMapping ); - attrMap( oCol.mData, 'sort', aiInvertMapping ); - attrMap( oCol.mData, 'type', aiInvertMapping ); - - // regenerate the get / set functions - oSettings.oApi._fnColumnOptions( oSettings, i, {} ); - } - } - - - /* - * Move the DOM elements - */ - if ( oSettings.aoColumns[iFrom].bVisible ) - { - /* Calculate the current visible index and the point to insert the node before. The insert - * before needs to take into account that there might not be an element to insert before, - * in which case it will be null, and an appendChild should be used - */ - var iVisibleIndex = this.oApi._fnColumnIndexToVisible( oSettings, iFrom ); - var iInsertBeforeIndex = null; - - i = iTo < iFrom ? iTo : iTo + 1; - while ( iInsertBeforeIndex === null && i < iCols ) - { - iInsertBeforeIndex = this.oApi._fnColumnIndexToVisible( oSettings, i ); - i++; - } - - /* Header */ - nTrs = oSettings.nTHead.getElementsByTagName('tr'); - for ( i=0, iLen=nTrs.length ; i<iLen ; i++ ) - { - fnDomSwitch( nTrs[i], iVisibleIndex, iInsertBeforeIndex ); - } - - /* Footer */ - if ( oSettings.nTFoot !== null ) - { - nTrs = oSettings.nTFoot.getElementsByTagName('tr'); - for ( i=0, iLen=nTrs.length ; i<iLen ; i++ ) - { - fnDomSwitch( nTrs[i], iVisibleIndex, iInsertBeforeIndex ); - } - } - - /* Body */ - for ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ ) - { - if ( oSettings.aoData[i].nTr !== null ) - { - fnDomSwitch( oSettings.aoData[i].nTr, iVisibleIndex, iInsertBeforeIndex ); - } - } - } - - /* - * Move the internal array elements - */ - /* Columns */ - fnArraySwitch( oSettings.aoColumns, iFrom, iTo ); - - /* Search columns */ - fnArraySwitch( oSettings.aoPreSearchCols, iFrom, iTo ); - - /* Array array - internal data anodes cache */ - for ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ ) - { - var data = oSettings.aoData[i]; - - if ( v110 ) { - // DataTables 1.10+ - if ( data.anCells ) { - fnArraySwitch( data.anCells, iFrom, iTo ); - } - - // For DOM sourced data, the invalidate will reread the cell into - // the data array, but for data sources as an array, they need to - // be flipped - if ( data.src !== 'dom' && $.isArray( data._aData ) ) { - fnArraySwitch( data._aData, iFrom, iTo ); - } - } - else { - // DataTables 1.9- - if ( $.isArray( data._aData ) ) { - fnArraySwitch( data._aData, iFrom, iTo ); - } - fnArraySwitch( data._anHidden, iFrom, iTo ); - } - } - - /* Reposition the header elements in the header layout array */ - for ( i=0, iLen=oSettings.aoHeader.length ; i<iLen ; i++ ) - { - fnArraySwitch( oSettings.aoHeader[i], iFrom, iTo ); - } - - if ( oSettings.aoFooter !== null ) - { - for ( i=0, iLen=oSettings.aoFooter.length ; i<iLen ; i++ ) - { - fnArraySwitch( oSettings.aoFooter[i], iFrom, iTo ); - } - } - - // In 1.10 we need to invalidate row cached data for sorting, filtering etc - if ( v110 ) { - var api = new $.fn.dataTable.Api( oSettings ); - api.rows().invalidate(); - } - - /* - * Update DataTables' event handlers - */ - - /* Sort listener */ - for ( i=0, iLen=iCols ; i<iLen ; i++ ) - { - $(oSettings.aoColumns[i].nTh).off('click.DT'); - this.oApi._fnSortAttachListener( oSettings, oSettings.aoColumns[i].nTh, i ); - } - - - /* Fire an event so other plug-ins can update */ - $(oSettings.oInstance).trigger( 'column-reorder', [ oSettings, { - "iFrom": iFrom, - "iTo": iTo, - "aiInvertMapping": aiInvertMapping - } ] ); -}; - - -/** - * ColReorder provides column visibility control for DataTables - * @class ColReorder - * @constructor - * @param {object} dt DataTables settings object - * @param {object} opts ColReorder options - */ -var ColReorder = function( dt, opts ) -{ - var oDTSettings; - - if ( $.fn.dataTable.Api ) { - oDTSettings = new $.fn.dataTable.Api( dt ).settings()[0]; - } - // 1.9 compatibility - else if ( dt.fnSettings ) { - // DataTables object, convert to the settings object - oDTSettings = dt.fnSettings(); - } - else if ( typeof dt === 'string' ) { - // jQuery selector - if ( $.fn.dataTable.fnIsDataTable( $(dt)[0] ) ) { - oDTSettings = $(dt).eq(0).dataTable().fnSettings(); - } - } - else if ( dt.nodeName && dt.nodeName.toLowerCase() === 'table' ) { - // Table node - if ( $.fn.dataTable.fnIsDataTable( dt.nodeName ) ) { - oDTSettings = $(dt.nodeName).dataTable().fnSettings(); - } - } - else if ( dt instanceof jQuery ) { - // jQuery object - if ( $.fn.dataTable.fnIsDataTable( dt[0] ) ) { - oDTSettings = dt.eq(0).dataTable().fnSettings(); - } - } - else { - // DataTables settings object - oDTSettings = dt; - } - - // Ensure that we can't initialise on the same table twice - if ( oDTSettings._colReorder ) { - throw "ColReorder already initialised on table #"+oDTSettings.nTable.id; - } - - // Convert from camelCase to Hungarian, just as DataTables does - var camelToHungarian = $.fn.dataTable.camelToHungarian; - if ( camelToHungarian ) { - camelToHungarian( ColReorder.defaults, ColReorder.defaults, true ); - camelToHungarian( ColReorder.defaults, opts || {} ); - } - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Public class variables - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - /** - * @namespace Settings object which contains customisable information for ColReorder instance - */ - this.s = { - /** - * DataTables settings object - * @property dt - * @type Object - * @default null - */ - "dt": null, - - /** - * Initialisation object used for this instance - * @property init - * @type object - * @default {} - */ - "init": $.extend( true, {}, ColReorder.defaults, opts ), - - /** - * Number of columns to fix (not allow to be reordered) - * @property fixed - * @type int - * @default 0 - */ - "fixed": 0, - - /** - * Number of columns to fix counting from right (not allow to be reordered) - * @property fixedRight - * @type int - * @default 0 - */ - "fixedRight": 0, - - /** - * Callback function for once the reorder has been done - * @property reorderCallback - * @type function - * @default null - */ - "reorderCallback": null, - - /** - * @namespace Information used for the mouse drag - */ - "mouse": { - "startX": -1, - "startY": -1, - "offsetX": -1, - "offsetY": -1, - "target": -1, - "targetIndex": -1, - "fromIndex": -1 - }, - - /** - * Information which is used for positioning the insert cusor and knowing where to do the - * insert. Array of objects with the properties: - * x: x-axis position - * to: insert point - * @property aoTargets - * @type array - * @default [] - */ - "aoTargets": [] - }; - - - /** - * @namespace Common and useful DOM elements for the class instance - */ - this.dom = { - /** - * Dragging element (the one the mouse is moving) - * @property drag - * @type element - * @default null - */ - "drag": null, - - /** - * The insert cursor - * @property pointer - * @type element - * @default null - */ - "pointer": null - }; - - - /* Constructor logic */ - this.s.dt = oDTSettings; - this.s.dt._colReorder = this; - this._fnConstruct(); - - /* Add destroy callback */ - oDTSettings.oApi._fnCallbackReg(oDTSettings, 'aoDestroyCallback', $.proxy(this._fnDestroy, this), 'ColReorder'); - - return this; -}; - - - -ColReorder.prototype = { - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Public methods - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - /** - * Reset the column ordering to the original ordering that was detected on - * start up. - * @return {this} Returns `this` for chaining. - * - * @example - * // DataTables initialisation with ColReorder - * var table = $('#example').dataTable( { - * "sDom": 'Rlfrtip' - * } ); - * - * // Add click event to a button to reset the ordering - * $('#resetOrdering').click( function (e) { - * e.preventDefault(); - * $.fn.dataTable.ColReorder( table ).fnReset(); - * } ); - */ - "fnReset": function () - { - var a = []; - for ( var i=0, iLen=this.s.dt.aoColumns.length ; i<iLen ; i++ ) - { - a.push( this.s.dt.aoColumns[i]._ColReorder_iOrigCol ); - } - - this._fnOrderColumns( a ); - - return this; - }, - - /** - * `Deprecated` - Get the current order of the columns, as an array. - * @return {array} Array of column identifiers - * @deprecated `fnOrder` should be used in preference to this method. - * `fnOrder` acts as a getter/setter. - */ - "fnGetCurrentOrder": function () - { - return this.fnOrder(); - }, - - /** - * Get the current order of the columns, as an array. Note that the values - * given in the array are unique identifiers for each column. Currently - * these are the original ordering of the columns that was detected on - * start up, but this could potentially change in future. - * @return {array} Array of column identifiers - * - * @example - * // Get column ordering for the table - * var order = $.fn.dataTable.ColReorder( dataTable ).fnOrder(); - *//** - * Set the order of the columns, from the positions identified in the - * ordering array given. Note that ColReorder takes a brute force approach - * to reordering, so it is possible multiple reordering events will occur - * before the final order is settled upon. - * @param {array} [set] Array of column identifiers in the new order. Note - * that every column must be included, uniquely, in this array. - * @return {this} Returns `this` for chaining. - * - * @example - * // Swap the first and second columns - * $.fn.dataTable.ColReorder( dataTable ).fnOrder( [1, 0, 2, 3, 4] ); - * - * @example - * // Move the first column to the end for the table `#example` - * var curr = $.fn.dataTable.ColReorder( '#example' ).fnOrder(); - * var first = curr.shift(); - * curr.push( first ); - * $.fn.dataTable.ColReorder( '#example' ).fnOrder( curr ); - * - * @example - * // Reverse the table's order - * $.fn.dataTable.ColReorder( '#example' ).fnOrder( - * $.fn.dataTable.ColReorder( '#example' ).fnOrder().reverse() - * ); - */ - "fnOrder": function ( set ) - { - if ( set === undefined ) - { - var a = []; - for ( var i=0, iLen=this.s.dt.aoColumns.length ; i<iLen ; i++ ) - { - a.push( this.s.dt.aoColumns[i]._ColReorder_iOrigCol ); - } - return a; - } - - this._fnOrderColumns( fnInvertKeyValues( set ) ); - - return this; - }, - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Private methods (they are of course public in JS, but recommended as private) - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - /** - * Constructor logic - * @method _fnConstruct - * @returns void - * @private - */ - "_fnConstruct": function () - { - var that = this; - var iLen = this.s.dt.aoColumns.length; - var i; - - /* Columns discounted from reordering - counting left to right */ - if ( this.s.init.iFixedColumns ) - { - this.s.fixed = this.s.init.iFixedColumns; - } - - /* Columns discounted from reordering - counting right to left */ - this.s.fixedRight = this.s.init.iFixedColumnsRight ? - this.s.init.iFixedColumnsRight : - 0; - - /* Drop callback initialisation option */ - if ( this.s.init.fnReorderCallback ) - { - this.s.reorderCallback = this.s.init.fnReorderCallback; - } - - /* Add event handlers for the drag and drop, and also mark the original column order */ - for ( i = 0; i < iLen; i++ ) - { - if ( i > this.s.fixed-1 && i < iLen - this.s.fixedRight ) - { - this._fnMouseListener( i, this.s.dt.aoColumns[i].nTh ); - } - - /* Mark the original column order for later reference */ - this.s.dt.aoColumns[i]._ColReorder_iOrigCol = i; - } - - /* State saving */ - this.s.dt.oApi._fnCallbackReg( this.s.dt, 'aoStateSaveParams', function (oS, oData) { - that._fnStateSave.call( that, oData ); - }, "ColReorder_State" ); - - /* An initial column order has been specified */ - var aiOrder = null; - if ( this.s.init.aiOrder ) - { - aiOrder = this.s.init.aiOrder.slice(); - } - - /* State loading, overrides the column order given */ - if ( this.s.dt.oLoadedState && typeof this.s.dt.oLoadedState.ColReorder != 'undefined' && - this.s.dt.oLoadedState.ColReorder.length == this.s.dt.aoColumns.length ) - { - aiOrder = this.s.dt.oLoadedState.ColReorder; - } - - /* If we have an order to apply - do so */ - if ( aiOrder ) - { - /* We might be called during or after the DataTables initialisation. If before, then we need - * to wait until the draw is done, if after, then do what we need to do right away - */ - if ( !that.s.dt._bInitComplete ) - { - var bDone = false; - this.s.dt.aoDrawCallback.push( { - "fn": function () { - if ( !that.s.dt._bInitComplete && !bDone ) - { - bDone = true; - var resort = fnInvertKeyValues( aiOrder ); - that._fnOrderColumns.call( that, resort ); - } - }, - "sName": "ColReorder_Pre" - } ); - } - else - { - var resort = fnInvertKeyValues( aiOrder ); - that._fnOrderColumns.call( that, resort ); - } - } - else { - this._fnSetColumnIndexes(); - } - }, - - - /** - * Set the column order from an array - * @method _fnOrderColumns - * @param array a An array of integers which dictate the column order that should be applied - * @returns void - * @private - */ - "_fnOrderColumns": function ( a ) - { - if ( a.length != this.s.dt.aoColumns.length ) - { - this.s.dt.oInstance.oApi._fnLog( this.s.dt, 1, "ColReorder - array reorder does not "+ - "match known number of columns. Skipping." ); - return; - } - - for ( var i=0, iLen=a.length ; i<iLen ; i++ ) - { - var currIndex = $.inArray( i, a ); - if ( i != currIndex ) - { - /* Reorder our switching array */ - fnArraySwitch( a, currIndex, i ); - - /* Do the column reorder in the table */ - this.s.dt.oInstance.fnColReorder( currIndex, i ); - } - } - - /* When scrolling we need to recalculate the column sizes to allow for the shift */ - if ( this.s.dt.oScroll.sX !== "" || this.s.dt.oScroll.sY !== "" ) - { - this.s.dt.oInstance.fnAdjustColumnSizing( false ); - } - - /* Save the state */ - this.s.dt.oInstance.oApi._fnSaveState( this.s.dt ); - - this._fnSetColumnIndexes(); - - if ( this.s.reorderCallback !== null ) - { - this.s.reorderCallback.call( this ); - } - }, - - - /** - * Because we change the indexes of columns in the table, relative to their starting point - * we need to reorder the state columns to what they are at the starting point so we can - * then rearrange them again on state load! - * @method _fnStateSave - * @param object oState DataTables state - * @returns string JSON encoded cookie string for DataTables - * @private - */ - "_fnStateSave": function ( oState ) - { - var i, iLen, aCopy, iOrigColumn; - var oSettings = this.s.dt; - var columns = oSettings.aoColumns; - - oState.ColReorder = []; - - /* Sorting */ - if ( oState.aaSorting ) { - // 1.10.0- - for ( i=0 ; i<oState.aaSorting.length ; i++ ) { - oState.aaSorting[i][0] = columns[ oState.aaSorting[i][0] ]._ColReorder_iOrigCol; - } - - var aSearchCopy = $.extend( true, [], oState.aoSearchCols ); - - for ( i=0, iLen=columns.length ; i<iLen ; i++ ) - { - iOrigColumn = columns[i]._ColReorder_iOrigCol; - - /* Column filter */ - oState.aoSearchCols[ iOrigColumn ] = aSearchCopy[i]; - - /* Visibility */ - oState.abVisCols[ iOrigColumn ] = columns[i].bVisible; - - /* Column reordering */ - oState.ColReorder.push( iOrigColumn ); - } - } - else if ( oState.order ) { - // 1.10.1+ - for ( i=0 ; i<oState.order.length ; i++ ) { - oState.order[i][0] = columns[ oState.order[i][0] ]._ColReorder_iOrigCol; - } - - var stateColumnsCopy = $.extend( true, [], oState.columns ); - - for ( i=0, iLen=columns.length ; i<iLen ; i++ ) - { - iOrigColumn = columns[i]._ColReorder_iOrigCol; - - /* Columns */ - oState.columns[ iOrigColumn ] = stateColumnsCopy[i]; - - /* Column reordering */ - oState.ColReorder.push( iOrigColumn ); - } - } - }, - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Mouse drop and drag - */ - - /** - * Add a mouse down listener to a particluar TH element - * @method _fnMouseListener - * @param int i Column index - * @param element nTh TH element clicked on - * @returns void - * @private - */ - "_fnMouseListener": function ( i, nTh ) - { - var that = this; - $(nTh).on( 'mousedown.ColReorder', function (e) { - e.preventDefault(); - that._fnMouseDown.call( that, e, nTh ); - } ); - }, - - - /** - * Mouse down on a TH element in the table header - * @method _fnMouseDown - * @param event e Mouse event - * @param element nTh TH element to be dragged - * @returns void - * @private - */ - "_fnMouseDown": function ( e, nTh ) - { - var that = this; - - /* Store information about the mouse position */ - var target = $(e.target).closest('th, td'); - var offset = target.offset(); - var idx = parseInt( $(nTh).attr('data-column-index'), 10 ); - - if ( idx === undefined ) { - return; - } - - this.s.mouse.startX = e.pageX; - this.s.mouse.startY = e.pageY; - this.s.mouse.offsetX = e.pageX - offset.left; - this.s.mouse.offsetY = e.pageY - offset.top; - this.s.mouse.target = this.s.dt.aoColumns[ idx ].nTh;//target[0]; - this.s.mouse.targetIndex = idx; - this.s.mouse.fromIndex = idx; - - this._fnRegions(); - - /* Add event handlers to the document */ - $(document) - .on( 'mousemove.ColReorder', function (e) { - that._fnMouseMove.call( that, e ); - } ) - .on( 'mouseup.ColReorder', function (e) { - that._fnMouseUp.call( that, e ); - } ); - }, - - - /** - * Deal with a mouse move event while dragging a node - * @method _fnMouseMove - * @param event e Mouse event - * @returns void - * @private - */ - "_fnMouseMove": function ( e ) - { - var that = this; - - if ( this.dom.drag === null ) - { - /* Only create the drag element if the mouse has moved a specific distance from the start - * point - this allows the user to make small mouse movements when sorting and not have a - * possibly confusing drag element showing up - */ - if ( Math.pow( - Math.pow(e.pageX - this.s.mouse.startX, 2) + - Math.pow(e.pageY - this.s.mouse.startY, 2), 0.5 ) < 5 ) - { - return; - } - this._fnCreateDragNode(); - } - - /* Position the element - we respect where in the element the click occured */ - this.dom.drag.css( { - left: e.pageX - this.s.mouse.offsetX, - top: e.pageY - this.s.mouse.offsetY - } ); - - /* Based on the current mouse position, calculate where the insert should go */ - var bSet = false; - var lastToIndex = this.s.mouse.toIndex; - - for ( var i=1, iLen=this.s.aoTargets.length ; i<iLen ; i++ ) - { - if ( e.pageX < this.s.aoTargets[i-1].x + ((this.s.aoTargets[i].x-this.s.aoTargets[i-1].x)/2) ) - { - this.dom.pointer.css( 'left', this.s.aoTargets[i-1].x ); - this.s.mouse.toIndex = this.s.aoTargets[i-1].to; - bSet = true; - break; - } - } - - // The insert element wasn't positioned in the array (less than - // operator), so we put it at the end - if ( !bSet ) - { - this.dom.pointer.css( 'left', this.s.aoTargets[this.s.aoTargets.length-1].x ); - this.s.mouse.toIndex = this.s.aoTargets[this.s.aoTargets.length-1].to; - } - - // Perform reordering if realtime updating is on and the column has moved - if ( this.s.init.bRealtime && lastToIndex !== this.s.mouse.toIndex ) { - this.s.dt.oInstance.fnColReorder( this.s.mouse.fromIndex, this.s.mouse.toIndex ); - this.s.mouse.fromIndex = this.s.mouse.toIndex; - this._fnRegions(); - } - }, - - - /** - * Finish off the mouse drag and insert the column where needed - * @method _fnMouseUp - * @param event e Mouse event - * @returns void - * @private - */ - "_fnMouseUp": function ( e ) - { - var that = this; - - $(document).off( 'mousemove.ColReorder mouseup.ColReorder' ); - - if ( this.dom.drag !== null ) - { - /* Remove the guide elements */ - this.dom.drag.remove(); - this.dom.pointer.remove(); - this.dom.drag = null; - this.dom.pointer = null; - - /* Actually do the reorder */ - this.s.dt.oInstance.fnColReorder( this.s.mouse.fromIndex, this.s.mouse.toIndex ); - this._fnSetColumnIndexes(); - - /* When scrolling we need to recalculate the column sizes to allow for the shift */ - if ( this.s.dt.oScroll.sX !== "" || this.s.dt.oScroll.sY !== "" ) - { - this.s.dt.oInstance.fnAdjustColumnSizing( false ); - } - - /* Save the state */ - this.s.dt.oInstance.oApi._fnSaveState( this.s.dt ); - - if ( this.s.reorderCallback !== null ) - { - this.s.reorderCallback.call( this ); - } - } - }, - - - /** - * Calculate a cached array with the points of the column inserts, and the - * 'to' points - * @method _fnRegions - * @returns void - * @private - */ - "_fnRegions": function () - { - var aoColumns = this.s.dt.aoColumns; - - this.s.aoTargets.splice( 0, this.s.aoTargets.length ); - - this.s.aoTargets.push( { - "x": $(this.s.dt.nTable).offset().left, - "to": 0 - } ); - - var iToPoint = 0; - for ( var i=0, iLen=aoColumns.length ; i<iLen ; i++ ) - { - /* For the column / header in question, we want it's position to remain the same if the - * position is just to it's immediate left or right, so we only incremement the counter for - * other columns - */ - if ( i != this.s.mouse.fromIndex ) - { - iToPoint++; - } - - if ( aoColumns[i].bVisible ) - { - this.s.aoTargets.push( { - "x": $(aoColumns[i].nTh).offset().left + $(aoColumns[i].nTh).outerWidth(), - "to": iToPoint - } ); - } - } - - /* Disallow columns for being reordered by drag and drop, counting right to left */ - if ( this.s.fixedRight !== 0 ) - { - this.s.aoTargets.splice( this.s.aoTargets.length - this.s.fixedRight ); - } - - /* Disallow columns for being reordered by drag and drop, counting left to right */ - if ( this.s.fixed !== 0 ) - { - this.s.aoTargets.splice( 0, this.s.fixed ); - } - }, - - - /** - * Copy the TH element that is being drags so the user has the idea that they are actually - * moving it around the page. - * @method _fnCreateDragNode - * @returns void - * @private - */ - "_fnCreateDragNode": function () - { - var scrolling = this.s.dt.oScroll.sX !== "" || this.s.dt.oScroll.sY !== ""; - - var origCell = this.s.dt.aoColumns[ this.s.mouse.targetIndex ].nTh; - var origTr = origCell.parentNode; - var origThead = origTr.parentNode; - var origTable = origThead.parentNode; - var cloneCell = $(origCell).clone(); - - // This is a slightly odd combination of jQuery and DOM, but it is the - // fastest and least resource intensive way I could think of cloning - // the table with just a single header cell in it. - this.dom.drag = $(origTable.cloneNode(false)) - .addClass( 'DTCR_clonedTable' ) - .append( - $(origThead.cloneNode(false)).append( - $(origTr.cloneNode(false)).append( - cloneCell[0] - ) - ) - ) - .css( { - position: 'absolute', - top: 0, - left: 0, - width: $(origCell).outerWidth(), - height: $(origCell).outerHeight() - } ) - .appendTo( 'body' ); - - this.dom.pointer = $('<div></div>') - .addClass( 'DTCR_pointer' ) - .css( { - position: 'absolute', - top: scrolling ? - $('div.dataTables_scroll', this.s.dt.nTableWrapper).offset().top : - $(this.s.dt.nTable).offset().top, - height : scrolling ? - $('div.dataTables_scroll', this.s.dt.nTableWrapper).height() : - $(this.s.dt.nTable).height() - } ) - .appendTo( 'body' ); - }, - - /** - * Clean up ColReorder memory references and event handlers - * @method _fnDestroy - * @returns void - * @private - */ - "_fnDestroy": function () - { - var i, iLen; - - for ( i=0, iLen=this.s.dt.aoDrawCallback.length ; i<iLen ; i++ ) - { - if ( this.s.dt.aoDrawCallback[i].sName === 'ColReorder_Pre' ) - { - this.s.dt.aoDrawCallback.splice( i, 1 ); - break; - } - } - - $(this.s.dt.nTHead).find( '*' ).off( '.ColReorder' ); - - $.each( this.s.dt.aoColumns, function (i, column) { - $(column.nTh).removeAttr('data-column-index'); - } ); - - this.s.dt._colReorder = null; - this.s = null; - }, - - - /** - * Add a data attribute to the column headers, so we know the index of - * the row to be reordered. This allows fast detection of the index, and - * for this plug-in to work with FixedHeader which clones the nodes. - * @private - */ - "_fnSetColumnIndexes": function () - { - $.each( this.s.dt.aoColumns, function (i, column) { - $(column.nTh).attr('data-column-index', i); - } ); - } -}; - - - - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Static parameters - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - -/** - * ColReorder default settings for initialisation - * @namespace - * @static - */ -ColReorder.defaults = { - /** - * Predefined ordering for the columns that will be applied automatically - * on initialisation. If not specified then the order that the columns are - * found to be in the HTML is the order used. - * @type array - * @default null - * @static - * @example - * // Using the `oColReorder` option in the DataTables options object - * $('#example').dataTable( { - * "sDom": 'Rlfrtip', - * "oColReorder": { - * "aiOrder": [ 4, 3, 2, 1, 0 ] - * } - * } ); - * - * @example - * // Using `new` constructor - * $('#example').dataTable() - * - * new $.fn.dataTable.ColReorder( '#example', { - * "aiOrder": [ 4, 3, 2, 1, 0 ] - * } ); - */ - aiOrder: null, - - /** - * Redraw the table's column ordering as the end user draws the column - * (`true`) or wait until the mouse is released (`false` - default). Note - * that this will perform a redraw on each reordering, which involves an - * Ajax request each time if you are using server-side processing in - * DataTables. - * @type boolean - * @default false - * @static - * @example - * // Using the `oColReorder` option in the DataTables options object - * $('#example').dataTable( { - * "sDom": 'Rlfrtip', - * "oColReorder": { - * "bRealtime": true - * } - * } ); - * - * @example - * // Using `new` constructor - * $('#example').dataTable() - * - * new $.fn.dataTable.ColReorder( '#example', { - * "bRealtime": true - * } ); - */ - bRealtime: false, - - /** - * Indicate how many columns should be fixed in position (counting from the - * left). This will typically be 1 if used, but can be as high as you like. - * @type int - * @default 0 - * @static - * @example - * // Using the `oColReorder` option in the DataTables options object - * $('#example').dataTable( { - * "sDom": 'Rlfrtip', - * "oColReorder": { - * "iFixedColumns": 1 - * } - * } ); - * - * @example - * // Using `new` constructor - * $('#example').dataTable() - * - * new $.fn.dataTable.ColReorder( '#example', { - * "iFixedColumns": 1 - * } ); - */ - iFixedColumns: 0, - - /** - * As `iFixedColumnsRight` but counting from the right. - * @type int - * @default 0 - * @static - * @example - * // Using the `oColReorder` option in the DataTables options object - * $('#example').dataTable( { - * "sDom": 'Rlfrtip', - * "oColReorder": { - * "iFixedColumnsRight": 1 - * } - * } ); - * - * @example - * // Using `new` constructor - * $('#example').dataTable() - * - * new $.fn.dataTable.ColReorder( '#example', { - * "iFixedColumnsRight": 1 - * } ); - */ - iFixedColumnsRight: 0, - - /** - * Callback function that is fired when columns are reordered - * @type function():void - * @default null - * @static - * @example - * // Using the `oColReorder` option in the DataTables options object - * $('#example').dataTable( { - * "sDom": 'Rlfrtip', - * "oColReorder": { - * "fnReorderCallback": function () { - * alert( 'Columns reordered' ); - * } - * } - * } ); - * - * @example - * // Using `new` constructor - * $('#example').dataTable() - * - * new $.fn.dataTable.ColReorder( '#example', { - * "fnReorderCallback": function () { - * alert( 'Columns reordered' ); - * } - * } ); - */ - fnReorderCallback: null -}; - - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Constants - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/** - * ColReorder version - * @constant version - * @type String - * @default As code - */ -ColReorder.version = "1.1.3"; - - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * DataTables interfaces - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -// Expose -$.fn.dataTable.ColReorder = ColReorder; -$.fn.DataTable.ColReorder = ColReorder; - - -// Register a new feature with DataTables -if ( typeof $.fn.dataTable == "function" && - typeof $.fn.dataTableExt.fnVersionCheck == "function" && - $.fn.dataTableExt.fnVersionCheck('1.9.3') ) -{ - $.fn.dataTableExt.aoFeatures.push( { - "fnInit": function( settings ) { - var table = settings.oInstance; - - if ( ! settings._colReorder ) { - var dtInit = settings.oInit; - var opts = dtInit.colReorder || dtInit.oColReorder || {}; - - new ColReorder( settings, opts ); - } - else { - table.oApi._fnLog( settings, 1, "ColReorder attempted to initialise twice. Ignoring second" ); - } - - return null; /* No node for DataTables to insert */ - }, - "cFeature": "R", - "sFeature": "ColReorder" - } ); -} -else { - alert( "Warning: ColReorder requires DataTables 1.9.3 or greater - www.datatables.net/download"); -} - - -// API augmentation -if ( $.fn.dataTable.Api ) { - $.fn.dataTable.Api.register( 'colReorder.reset()', function () { - return this.iterator( 'table', function ( ctx ) { - ctx._colReorder.fnReset(); - } ); - } ); - - $.fn.dataTable.Api.register( 'colReorder.order()', function ( set ) { - if ( set ) { - return this.iterator( 'table', function ( ctx ) { - ctx._colReorder.fnOrder( set ); - } ); - } - - return this.context.length ? - this.context[0]._colReorder.fnOrder() : - null; - } ); -} - -return ColReorder; -}; // /factory - - -// Define as an AMD module if possible -if ( typeof define === 'function' && define.amd ) { - define( ['jquery', 'datatables'], factory ); -} -else if ( typeof exports === 'object' ) { - // Node/CommonJS - factory( require('jquery'), require('datatables') ); -} -else if ( jQuery && !jQuery.fn.dataTable.ColReorder ) { - // Otherwise simply initialise as normal, stopping multiple evaluation - factory( jQuery, jQuery.fn.dataTable ); -} - - -})(window, document); diff --git a/assets/plugins/datatables/extensions/colreorder/js/dataTables.colReorder.min.js b/assets/plugins/datatables/extensions/colreorder/js/dataTables.colReorder.min.js deleted file mode 100644 index b8758c96..00000000 --- a/assets/plugins/datatables/extensions/colreorder/js/dataTables.colReorder.min.js +++ /dev/null @@ -1,26 +0,0 @@ -/*! - ColReorder 1.1.3 - ©2010-2014 SpryMedia Ltd - datatables.net/license -*/ -(function(o,r,s){function p(d){for(var f=[],a=0,b=d.length;a<b;a++)f[d[a]]=a;return f}function l(d,f,a){f=d.splice(f,1)[0];d.splice(a,0,f)}function q(d,f,a){for(var b=[],e=0,h=d.childNodes.length;e<h;e++)1==d.childNodes[e].nodeType&&b.push(d.childNodes[e]);f=b[f];null!==a?d.insertBefore(f,b[a]):d.appendChild(f)}o=function(d){d.fn.dataTableExt.oApi.fnColReorder=function(a,b,e){var h=d.fn.dataTable.Api?!0:!1,c,g,f,m,n=a.aoColumns.length,i,j;i=function(a,b,c){if(a[b]){var e=a[b].split("."),d=e.shift(); -isNaN(1*d)||(a[b]=c[1*d]+"."+e.join("."))}};if(b!=e)if(0>b||b>=n)this.oApi._fnLog(a,1,"ColReorder 'from' index is out of bounds: "+b);else if(0>e||e>=n)this.oApi._fnLog(a,1,"ColReorder 'to' index is out of bounds: "+e);else{f=[];c=0;for(g=n;c<g;c++)f[c]=c;l(f,b,e);var k=p(f);c=0;for(g=a.aaSorting.length;c<g;c++)a.aaSorting[c][0]=k[a.aaSorting[c][0]];if(null!==a.aaSortingFixed){c=0;for(g=a.aaSortingFixed.length;c<g;c++)a.aaSortingFixed[c][0]=k[a.aaSortingFixed[c][0]]}c=0;for(g=n;c<g;c++){j=a.aoColumns[c]; -f=0;for(m=j.aDataSort.length;f<m;f++)j.aDataSort[f]=k[j.aDataSort[f]];h&&(j.idx=k[j.idx])}h&&d.each(a.aLastSort,function(b,c){a.aLastSort[b].src=k[c.src]});c=0;for(g=n;c<g;c++)j=a.aoColumns[c],"number"==typeof j.mData?(j.mData=k[j.mData],a.oApi._fnColumnOptions(a,c,{})):d.isPlainObject(j.mData)&&(i(j.mData,"_",k),i(j.mData,"filter",k),i(j.mData,"sort",k),i(j.mData,"type",k),a.oApi._fnColumnOptions(a,c,{}));if(a.aoColumns[b].bVisible){f=this.oApi._fnColumnIndexToVisible(a,b);m=null;for(c=e<b?e:e+1;null=== -m&&c<n;)m=this.oApi._fnColumnIndexToVisible(a,c),c++;i=a.nTHead.getElementsByTagName("tr");c=0;for(g=i.length;c<g;c++)q(i[c],f,m);if(null!==a.nTFoot){i=a.nTFoot.getElementsByTagName("tr");c=0;for(g=i.length;c<g;c++)q(i[c],f,m)}c=0;for(g=a.aoData.length;c<g;c++)null!==a.aoData[c].nTr&&q(a.aoData[c].nTr,f,m)}l(a.aoColumns,b,e);l(a.aoPreSearchCols,b,e);c=0;for(g=a.aoData.length;c<g;c++)i=a.aoData[c],h?(i.anCells&&l(i.anCells,b,e),"dom"!==i.src&&d.isArray(i._aData)&&l(i._aData,b,e)):(d.isArray(i._aData)&& -l(i._aData,b,e),l(i._anHidden,b,e));c=0;for(g=a.aoHeader.length;c<g;c++)l(a.aoHeader[c],b,e);if(null!==a.aoFooter){c=0;for(g=a.aoFooter.length;c<g;c++)l(a.aoFooter[c],b,e)}h&&(new d.fn.dataTable.Api(a)).rows().invalidate();c=0;for(g=n;c<g;c++)d(a.aoColumns[c].nTh).off("click.DT"),this.oApi._fnSortAttachListener(a,a.aoColumns[c].nTh,c);d(a.oInstance).trigger("column-reorder",[a,{iFrom:b,iTo:e,aiInvertMapping:k}])}};var f=function(a,b){var e;d.fn.dataTable.Api?e=(new d.fn.dataTable.Api(a)).settings()[0]: -a.fnSettings?e=a.fnSettings():"string"===typeof a?d.fn.dataTable.fnIsDataTable(d(a)[0])&&(e=d(a).eq(0).dataTable().fnSettings()):a.nodeName&&"table"===a.nodeName.toLowerCase()?d.fn.dataTable.fnIsDataTable(a.nodeName)&&(e=d(a.nodeName).dataTable().fnSettings()):a instanceof jQuery?d.fn.dataTable.fnIsDataTable(a[0])&&(e=a.eq(0).dataTable().fnSettings()):e=a;if(e._colReorder)throw"ColReorder already initialised on table #"+e.nTable.id;var h=d.fn.dataTable.camelToHungarian;h&&(h(f.defaults,f.defaults, -!0),h(f.defaults,b||{}));this.s={dt:null,init:d.extend(!0,{},f.defaults,b),fixed:0,fixedRight:0,reorderCallback:null,mouse:{startX:-1,startY:-1,offsetX:-1,offsetY:-1,target:-1,targetIndex:-1,fromIndex:-1},aoTargets:[]};this.dom={drag:null,pointer:null};this.s.dt=e;this.s.dt._colReorder=this;this._fnConstruct();e.oApi._fnCallbackReg(e,"aoDestroyCallback",d.proxy(this._fnDestroy,this),"ColReorder");return this};f.prototype={fnReset:function(){for(var a=[],b=0,e=this.s.dt.aoColumns.length;b<e;b++)a.push(this.s.dt.aoColumns[b]._ColReorder_iOrigCol); -this._fnOrderColumns(a);return this},fnGetCurrentOrder:function(){return this.fnOrder()},fnOrder:function(a){if(a===s){for(var a=[],b=0,e=this.s.dt.aoColumns.length;b<e;b++)a.push(this.s.dt.aoColumns[b]._ColReorder_iOrigCol);return a}this._fnOrderColumns(p(a));return this},_fnConstruct:function(){var a=this,b=this.s.dt.aoColumns.length,e;this.s.init.iFixedColumns&&(this.s.fixed=this.s.init.iFixedColumns);this.s.fixedRight=this.s.init.iFixedColumnsRight?this.s.init.iFixedColumnsRight:0;this.s.init.fnReorderCallback&& -(this.s.reorderCallback=this.s.init.fnReorderCallback);for(e=0;e<b;e++)e>this.s.fixed-1&&e<b-this.s.fixedRight&&this._fnMouseListener(e,this.s.dt.aoColumns[e].nTh),this.s.dt.aoColumns[e]._ColReorder_iOrigCol=e;this.s.dt.oApi._fnCallbackReg(this.s.dt,"aoStateSaveParams",function(b,c){a._fnStateSave.call(a,c)},"ColReorder_State");var d=null;this.s.init.aiOrder&&(d=this.s.init.aiOrder.slice());this.s.dt.oLoadedState&&("undefined"!=typeof this.s.dt.oLoadedState.ColReorder&&this.s.dt.oLoadedState.ColReorder.length== -this.s.dt.aoColumns.length)&&(d=this.s.dt.oLoadedState.ColReorder);if(d)if(a.s.dt._bInitComplete)b=p(d),a._fnOrderColumns.call(a,b);else{var c=!1;this.s.dt.aoDrawCallback.push({fn:function(){if(!a.s.dt._bInitComplete&&!c){c=true;var b=p(d);a._fnOrderColumns.call(a,b)}},sName:"ColReorder_Pre"})}else this._fnSetColumnIndexes()},_fnOrderColumns:function(a){if(a.length!=this.s.dt.aoColumns.length)this.s.dt.oInstance.oApi._fnLog(this.s.dt,1,"ColReorder - array reorder does not match known number of columns. Skipping."); -else{for(var b=0,e=a.length;b<e;b++){var h=d.inArray(b,a);b!=h&&(l(a,h,b),this.s.dt.oInstance.fnColReorder(h,b))}(""!==this.s.dt.oScroll.sX||""!==this.s.dt.oScroll.sY)&&this.s.dt.oInstance.fnAdjustColumnSizing(!1);this.s.dt.oInstance.oApi._fnSaveState(this.s.dt);this._fnSetColumnIndexes();null!==this.s.reorderCallback&&this.s.reorderCallback.call(this)}},_fnStateSave:function(a){var b,e,h,c=this.s.dt.aoColumns;a.ColReorder=[];if(a.aaSorting){for(b=0;b<a.aaSorting.length;b++)a.aaSorting[b][0]=c[a.aaSorting[b][0]]._ColReorder_iOrigCol; -var f=d.extend(!0,[],a.aoSearchCols);b=0;for(e=c.length;b<e;b++)h=c[b]._ColReorder_iOrigCol,a.aoSearchCols[h]=f[b],a.abVisCols[h]=c[b].bVisible,a.ColReorder.push(h)}else if(a.order){for(b=0;b<a.order.length;b++)a.order[b][0]=c[a.order[b][0]]._ColReorder_iOrigCol;f=d.extend(!0,[],a.columns);b=0;for(e=c.length;b<e;b++)h=c[b]._ColReorder_iOrigCol,a.columns[h]=f[b],a.ColReorder.push(h)}},_fnMouseListener:function(a,b){var e=this;d(b).on("mousedown.ColReorder",function(a){a.preventDefault();e._fnMouseDown.call(e, -a,b)})},_fnMouseDown:function(a,b){var e=this,f=d(a.target).closest("th, td").offset(),c=parseInt(d(b).attr("data-column-index"),10);c!==s&&(this.s.mouse.startX=a.pageX,this.s.mouse.startY=a.pageY,this.s.mouse.offsetX=a.pageX-f.left,this.s.mouse.offsetY=a.pageY-f.top,this.s.mouse.target=this.s.dt.aoColumns[c].nTh,this.s.mouse.targetIndex=c,this.s.mouse.fromIndex=c,this._fnRegions(),d(r).on("mousemove.ColReorder",function(a){e._fnMouseMove.call(e,a)}).on("mouseup.ColReorder",function(a){e._fnMouseUp.call(e, -a)}))},_fnMouseMove:function(a){if(null===this.dom.drag){if(5>Math.pow(Math.pow(a.pageX-this.s.mouse.startX,2)+Math.pow(a.pageY-this.s.mouse.startY,2),0.5))return;this._fnCreateDragNode()}this.dom.drag.css({left:a.pageX-this.s.mouse.offsetX,top:a.pageY-this.s.mouse.offsetY});for(var b=!1,e=this.s.mouse.toIndex,d=1,c=this.s.aoTargets.length;d<c;d++)if(a.pageX<this.s.aoTargets[d-1].x+(this.s.aoTargets[d].x-this.s.aoTargets[d-1].x)/2){this.dom.pointer.css("left",this.s.aoTargets[d-1].x);this.s.mouse.toIndex= -this.s.aoTargets[d-1].to;b=!0;break}b||(this.dom.pointer.css("left",this.s.aoTargets[this.s.aoTargets.length-1].x),this.s.mouse.toIndex=this.s.aoTargets[this.s.aoTargets.length-1].to);this.s.init.bRealtime&&e!==this.s.mouse.toIndex&&(this.s.dt.oInstance.fnColReorder(this.s.mouse.fromIndex,this.s.mouse.toIndex),this.s.mouse.fromIndex=this.s.mouse.toIndex,this._fnRegions())},_fnMouseUp:function(){d(r).off("mousemove.ColReorder mouseup.ColReorder");null!==this.dom.drag&&(this.dom.drag.remove(),this.dom.pointer.remove(), -this.dom.drag=null,this.dom.pointer=null,this.s.dt.oInstance.fnColReorder(this.s.mouse.fromIndex,this.s.mouse.toIndex),this._fnSetColumnIndexes(),(""!==this.s.dt.oScroll.sX||""!==this.s.dt.oScroll.sY)&&this.s.dt.oInstance.fnAdjustColumnSizing(!1),this.s.dt.oInstance.oApi._fnSaveState(this.s.dt),null!==this.s.reorderCallback&&this.s.reorderCallback.call(this))},_fnRegions:function(){var a=this.s.dt.aoColumns;this.s.aoTargets.splice(0,this.s.aoTargets.length);this.s.aoTargets.push({x:d(this.s.dt.nTable).offset().left, -to:0});for(var b=0,e=0,f=a.length;e<f;e++)e!=this.s.mouse.fromIndex&&b++,a[e].bVisible&&this.s.aoTargets.push({x:d(a[e].nTh).offset().left+d(a[e].nTh).outerWidth(),to:b});0!==this.s.fixedRight&&this.s.aoTargets.splice(this.s.aoTargets.length-this.s.fixedRight);0!==this.s.fixed&&this.s.aoTargets.splice(0,this.s.fixed)},_fnCreateDragNode:function(){var a=""!==this.s.dt.oScroll.sX||""!==this.s.dt.oScroll.sY,b=this.s.dt.aoColumns[this.s.mouse.targetIndex].nTh,e=b.parentNode,f=e.parentNode,c=f.parentNode, -g=d(b).clone();this.dom.drag=d(c.cloneNode(!1)).addClass("DTCR_clonedTable").append(d(f.cloneNode(!1)).append(d(e.cloneNode(!1)).append(g[0]))).css({position:"absolute",top:0,left:0,width:d(b).outerWidth(),height:d(b).outerHeight()}).appendTo("body");this.dom.pointer=d("<div></div>").addClass("DTCR_pointer").css({position:"absolute",top:a?d("div.dataTables_scroll",this.s.dt.nTableWrapper).offset().top:d(this.s.dt.nTable).offset().top,height:a?d("div.dataTables_scroll",this.s.dt.nTableWrapper).height(): -d(this.s.dt.nTable).height()}).appendTo("body")},_fnDestroy:function(){var a,b;a=0;for(b=this.s.dt.aoDrawCallback.length;a<b;a++)if("ColReorder_Pre"===this.s.dt.aoDrawCallback[a].sName){this.s.dt.aoDrawCallback.splice(a,1);break}d(this.s.dt.nTHead).find("*").off(".ColReorder");d.each(this.s.dt.aoColumns,function(a,b){d(b.nTh).removeAttr("data-column-index")});this.s=this.s.dt._colReorder=null},_fnSetColumnIndexes:function(){d.each(this.s.dt.aoColumns,function(a,b){d(b.nTh).attr("data-column-index", -a)})}};f.defaults={aiOrder:null,bRealtime:!1,iFixedColumns:0,iFixedColumnsRight:0,fnReorderCallback:null};f.version="1.1.3";d.fn.dataTable.ColReorder=f;d.fn.DataTable.ColReorder=f;"function"==typeof d.fn.dataTable&&"function"==typeof d.fn.dataTableExt.fnVersionCheck&&d.fn.dataTableExt.fnVersionCheck("1.9.3")?d.fn.dataTableExt.aoFeatures.push({fnInit:function(a){var b=a.oInstance;a._colReorder?b.oApi._fnLog(a,1,"ColReorder attempted to initialise twice. Ignoring second"):(b=a.oInit,new f(a,b.colReorder|| -b.oColReorder||{}));return null},cFeature:"R",sFeature:"ColReorder"}):alert("Warning: ColReorder requires DataTables 1.9.3 or greater - www.datatables.net/download");d.fn.dataTable.Api&&(d.fn.dataTable.Api.register("colReorder.reset()",function(){return this.iterator("table",function(a){a._colReorder.fnReset()})}),d.fn.dataTable.Api.register("colReorder.order()",function(a){return a?this.iterator("table",function(b){b._colReorder.fnOrder(a)}):this.context.length?this.context[0]._colReorder.fnOrder(): -null}));return f};"function"===typeof define&&define.amd?define(["jquery","datatables"],o):"object"===typeof exports?o(require("jquery"),require("datatables")):jQuery&&!jQuery.fn.dataTable.ColReorder&&o(jQuery,jQuery.fn.dataTable)})(window,document); diff --git a/assets/plugins/datatables/images/sort_asc.png b/assets/plugins/datatables/images/sort_asc.png deleted file mode 100644 index e1ba61a8..00000000 Binary files a/assets/plugins/datatables/images/sort_asc.png and /dev/null differ diff --git a/assets/plugins/datatables/images/sort_asc_disabled.png b/assets/plugins/datatables/images/sort_asc_disabled.png deleted file mode 100644 index fb11dfe2..00000000 Binary files a/assets/plugins/datatables/images/sort_asc_disabled.png and /dev/null differ diff --git a/assets/plugins/datatables/images/sort_both.png b/assets/plugins/datatables/images/sort_both.png deleted file mode 100644 index af5bc7c5..00000000 Binary files a/assets/plugins/datatables/images/sort_both.png and /dev/null differ diff --git a/assets/plugins/datatables/images/sort_desc.png b/assets/plugins/datatables/images/sort_desc.png deleted file mode 100644 index 0e156deb..00000000 Binary files a/assets/plugins/datatables/images/sort_desc.png and /dev/null differ diff --git a/assets/plugins/datatables/images/sort_desc_disabled.png b/assets/plugins/datatables/images/sort_desc_disabled.png deleted file mode 100644 index c9fdd8a1..00000000 Binary files a/assets/plugins/datatables/images/sort_desc_disabled.png and /dev/null differ diff --git a/assets/plugins/datatables/jquery.dataTables.css b/assets/plugins/datatables/jquery.dataTables.css deleted file mode 100644 index eec02ef5..00000000 --- a/assets/plugins/datatables/jquery.dataTables.css +++ /dev/null @@ -1,455 +0,0 @@ -/* - * Table styles - */ -table.dataTable { - width: 100%; - margin: 0 auto; - clear: both; - border-collapse: separate; - border-spacing: 0; - /* - * Header and footer styles - */ - /* - * Body styles - */ -} -table.dataTable thead th, -table.dataTable tfoot th { - font-weight: bold; -} -table.dataTable thead th, -table.dataTable thead td { - padding: 10px 18px; - border-bottom: 1px solid #111; -} -table.dataTable thead th:active, -table.dataTable thead td:active { - outline: none; -} -table.dataTable tfoot th, -table.dataTable tfoot td { - padding: 10px 18px 6px 18px; - border-top: 1px solid #111; -} -table.dataTable thead .sorting, -table.dataTable thead .sorting_asc, -table.dataTable thead .sorting_desc { - cursor: pointer; - *cursor: hand; -} -table.dataTable thead .sorting, -table.dataTable thead .sorting_asc, -table.dataTable thead .sorting_desc, -table.dataTable thead .sorting_asc_disabled, -table.dataTable thead .sorting_desc_disabled { - background-repeat: no-repeat; - background-position: center right; -} -table.dataTable thead .sorting { - background-image: url("../images/sort_both.png"); -} -table.dataTable thead .sorting_asc { - background-image: url("../images/sort_asc.png"); -} -table.dataTable thead .sorting_desc { - background-image: url("../images/sort_desc.png"); -} -table.dataTable thead .sorting_asc_disabled { - background-image: url("../images/sort_asc_disabled.png"); -} -table.dataTable thead .sorting_desc_disabled { - background-image: url("../images/sort_desc_disabled.png"); -} -table.dataTable tbody tr { - background-color: #ffffff; -} -table.dataTable tbody tr.selected { - background-color: #B0BED9; -} -table.dataTable tbody th, -table.dataTable tbody td { - padding: 8px 10px; -} -table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td { - border-top: 1px solid #ddd; -} -table.dataTable.row-border tbody tr:first-child th, -table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th, -table.dataTable.display tbody tr:first-child td { - border-top: none; -} -table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td { - border-top: 1px solid #ddd; - border-right: 1px solid #ddd; -} -table.dataTable.cell-border tbody tr th:first-child, -table.dataTable.cell-border tbody tr td:first-child { - border-left: 1px solid #ddd; -} -table.dataTable.cell-border tbody tr:first-child th, -table.dataTable.cell-border tbody tr:first-child td { - border-top: none; -} -table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd { - background-color: #f9f9f9; -} -table.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected { - background-color: #abb9d3; -} -table.dataTable.hover tbody tr:hover, table.dataTable.display tbody tr:hover { - background-color: whitesmoke; -} -table.dataTable.hover tbody tr:hover.selected, table.dataTable.display tbody tr:hover.selected { - background-color: #a9b7d1; -} -table.dataTable.order-column tbody tr > .sorting_1, -table.dataTable.order-column tbody tr > .sorting_2, -table.dataTable.order-column tbody tr > .sorting_3, table.dataTable.display tbody tr > .sorting_1, -table.dataTable.display tbody tr > .sorting_2, -table.dataTable.display tbody tr > .sorting_3 { - background-color: #f9f9f9; -} -table.dataTable.order-column tbody tr.selected > .sorting_1, -table.dataTable.order-column tbody tr.selected > .sorting_2, -table.dataTable.order-column tbody tr.selected > .sorting_3, table.dataTable.display tbody tr.selected > .sorting_1, -table.dataTable.display tbody tr.selected > .sorting_2, -table.dataTable.display tbody tr.selected > .sorting_3 { - background-color: #acbad4; -} -table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 { - background-color: #f1f1f1; -} -table.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 { - background-color: #f3f3f3; -} -table.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 { - background-color: whitesmoke; -} -table.dataTable.display tbody tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 { - background-color: #a6b3cd; -} -table.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 { - background-color: #a7b5ce; -} -table.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 { - background-color: #a9b6d0; -} -table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 { - background-color: #f9f9f9; -} -table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 { - background-color: #fbfbfb; -} -table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 { - background-color: #fdfdfd; -} -table.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 { - background-color: #acbad4; -} -table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 { - background-color: #adbbd6; -} -table.dataTable.display tbody tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 { - background-color: #afbdd8; -} -table.dataTable.display tbody tr:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1 { - background-color: #eaeaea; -} -table.dataTable.display tbody tr:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2 { - background-color: #ebebeb; -} -table.dataTable.display tbody tr:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3 { - background-color: #eeeeee; -} -table.dataTable.display tbody tr:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1 { - background-color: #a1aec7; -} -table.dataTable.display tbody tr:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2 { - background-color: #a2afc8; -} -table.dataTable.display tbody tr:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3 { - background-color: #a4b2cb; -} -table.dataTable.no-footer { - border-bottom: 1px solid #111; -} -table.dataTable.nowrap th, table.dataTable.nowrap td { - white-space: nowrap; -} -table.dataTable.compact thead th, -table.dataTable.compact thead td { - padding: 4px 17px 4px 4px; -} -table.dataTable.compact tfoot th, -table.dataTable.compact tfoot td { - padding: 4px; -} -table.dataTable.compact tbody th, -table.dataTable.compact tbody td { - padding: 4px; -} -table.dataTable th.dt-left, -table.dataTable td.dt-left { - text-align: left; -} -table.dataTable th.dt-center, -table.dataTable td.dt-center, -table.dataTable td.dataTables_empty { - text-align: center; -} -table.dataTable th.dt-right, -table.dataTable td.dt-right { - text-align: right; -} -table.dataTable th.dt-justify, -table.dataTable td.dt-justify { - text-align: justify; -} -table.dataTable th.dt-nowrap, -table.dataTable td.dt-nowrap { - white-space: nowrap; -} -table.dataTable thead th.dt-head-left, -table.dataTable thead td.dt-head-left, -table.dataTable tfoot th.dt-head-left, -table.dataTable tfoot td.dt-head-left { - text-align: left; -} -table.dataTable thead th.dt-head-center, -table.dataTable thead td.dt-head-center, -table.dataTable tfoot th.dt-head-center, -table.dataTable tfoot td.dt-head-center { - text-align: center; -} -table.dataTable thead th.dt-head-right, -table.dataTable thead td.dt-head-right, -table.dataTable tfoot th.dt-head-right, -table.dataTable tfoot td.dt-head-right { - text-align: right; -} -table.dataTable thead th.dt-head-justify, -table.dataTable thead td.dt-head-justify, -table.dataTable tfoot th.dt-head-justify, -table.dataTable tfoot td.dt-head-justify { - text-align: justify; -} -table.dataTable thead th.dt-head-nowrap, -table.dataTable thead td.dt-head-nowrap, -table.dataTable tfoot th.dt-head-nowrap, -table.dataTable tfoot td.dt-head-nowrap { - white-space: nowrap; -} -table.dataTable tbody th.dt-body-left, -table.dataTable tbody td.dt-body-left { - text-align: left; -} -table.dataTable tbody th.dt-body-center, -table.dataTable tbody td.dt-body-center { - text-align: center; -} -table.dataTable tbody th.dt-body-right, -table.dataTable tbody td.dt-body-right { - text-align: right; -} -table.dataTable tbody th.dt-body-justify, -table.dataTable tbody td.dt-body-justify { - text-align: justify; -} -table.dataTable tbody th.dt-body-nowrap, -table.dataTable tbody td.dt-body-nowrap { - white-space: nowrap; -} - -table.dataTable, -table.dataTable th, -table.dataTable td { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} - -/* - * Control feature layout - */ -.dataTables_wrapper { - position: relative; - clear: both; - *zoom: 1; - zoom: 1; -} -.dataTables_wrapper .dataTables_length { - float: left; -} -.dataTables_wrapper .dataTables_filter { - float: right; - text-align: right; -} -.dataTables_wrapper .dataTables_filter input { - margin-left: 0.5em; -} -.dataTables_wrapper .dataTables_info { - clear: both; - float: left; - padding-top: 0.755em; -} -.dataTables_wrapper .dataTables_paginate { - float: right; - text-align: right; - padding-top: 0.25em; -} -.dataTables_wrapper .dataTables_paginate .paginate_button { - box-sizing: border-box; - display: inline-block; - min-width: 1.5em; - padding: 0.5em 1em; - margin-left: 2px; - text-align: center; - text-decoration: none !important; - cursor: pointer; - *cursor: hand; - color: #333 !important; - border: 1px solid transparent; -} -.dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover { - color: #333 !important; - border: 1px solid #cacaca; - background-color: white; - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, white), color-stop(100%, #dcdcdc)); - /* Chrome,Safari4+ */ - background: -webkit-linear-gradient(top, white 0%, #dcdcdc 100%); - /* Chrome10+,Safari5.1+ */ - background: -moz-linear-gradient(top, white 0%, #dcdcdc 100%); - /* FF3.6+ */ - background: -ms-linear-gradient(top, white 0%, #dcdcdc 100%); - /* IE10+ */ - background: -o-linear-gradient(top, white 0%, #dcdcdc 100%); - /* Opera 11.10+ */ - background: linear-gradient(to bottom, white 0%, #dcdcdc 100%); - /* W3C */ -} -.dataTables_wrapper .dataTables_paginate .paginate_button.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active { - cursor: default; - color: #666 !important; - border: 1px solid transparent; - background: transparent; - box-shadow: none; -} -.dataTables_wrapper .dataTables_paginate .paginate_button:hover { - color: white !important; - border: 1px solid #111; - background-color: #585858; - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111)); - /* Chrome,Safari4+ */ - background: -webkit-linear-gradient(top, #585858 0%, #111 100%); - /* Chrome10+,Safari5.1+ */ - background: -moz-linear-gradient(top, #585858 0%, #111 100%); - /* FF3.6+ */ - background: -ms-linear-gradient(top, #585858 0%, #111 100%); - /* IE10+ */ - background: -o-linear-gradient(top, #585858 0%, #111 100%); - /* Opera 11.10+ */ - background: linear-gradient(to bottom, #585858 0%, #111 100%); - /* W3C */ -} -.dataTables_wrapper .dataTables_paginate .paginate_button:active { - outline: none; - background-color: #2b2b2b; - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c)); - /* Chrome,Safari4+ */ - background: -webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); - /* Chrome10+,Safari5.1+ */ - background: -moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); - /* FF3.6+ */ - background: -ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); - /* IE10+ */ - background: -o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); - /* Opera 11.10+ */ - background: linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%); - /* W3C */ - box-shadow: inset 0 0 3px #111; -} -.dataTables_wrapper .dataTables_paginate .ellipsis { - padding: 0 1em; -} -.dataTables_wrapper .dataTables_processing { - position: absolute; - top: 50%; - left: 50%; - width: 100%; - height: 40px; - margin-left: -50%; - margin-top: -25px; - padding-top: 20px; - text-align: center; - font-size: 1.2em; - background-color: white; - background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(25%, rgba(255, 255, 255, 0.9)), color-stop(75%, rgba(255, 255, 255, 0.9)), color-stop(100%, rgba(255, 255, 255, 0))); - /* Chrome,Safari4+ */ - background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); - /* Chrome10+,Safari5.1+ */ - background: -moz-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); - /* FF3.6+ */ - background: -ms-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); - /* IE10+ */ - background: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); - /* Opera 11.10+ */ - background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); - /* W3C */ -} -.dataTables_wrapper .dataTables_length, -.dataTables_wrapper .dataTables_filter, -.dataTables_wrapper .dataTables_info, -.dataTables_wrapper .dataTables_processing, -.dataTables_wrapper .dataTables_paginate { - color: #333; -} -.dataTables_wrapper .dataTables_scroll { - clear: both; -} -.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody { - *margin-top: -1px; - -webkit-overflow-scrolling: touch; -} -.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th > div.dataTables_sizing, -.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td > div.dataTables_sizing { - height: 0; - overflow: hidden; - margin: 0 !important; - padding: 0 !important; -} -.dataTables_wrapper.no-footer .dataTables_scrollBody { - border-bottom: 1px solid #111; -} -.dataTables_wrapper.no-footer div.dataTables_scrollHead table, -.dataTables_wrapper.no-footer div.dataTables_scrollBody table { - border-bottom: none; -} -.dataTables_wrapper:after { - visibility: hidden; - display: block; - content: ""; - clear: both; - height: 0; -} - -@media screen and (max-width: 767px) { - .dataTables_wrapper .dataTables_info, - .dataTables_wrapper .dataTables_paginate { - float: none; - text-align: center; - } - .dataTables_wrapper .dataTables_paginate { - margin-top: 0.5em; - } -} -@media screen and (max-width: 640px) { - .dataTables_wrapper .dataTables_length, - .dataTables_wrapper .dataTables_filter { - float: none; - text-align: center; - } - .dataTables_wrapper .dataTables_filter { - margin-top: 0.5em; - } -} diff --git a/assets/plugins/datatables/jquery.dataTables.js b/assets/plugins/datatables/jquery.dataTables.js deleted file mode 100644 index 2a9bdb36..00000000 --- a/assets/plugins/datatables/jquery.dataTables.js +++ /dev/null @@ -1,14951 +0,0 @@ -/*! DataTables 1.10.7 - * ©2008-2014 SpryMedia Ltd - datatables.net/license - */ - -/** - * @summary DataTables - * @description Paginate, search and order HTML tables - * @version 1.10.7 - * @file jquery.dataTables.js - * @author SpryMedia Ltd (www.sprymedia.co.uk) - * @contact www.sprymedia.co.uk/contact - * @copyright Copyright 2008-2014 SpryMedia Ltd. - * - * This source file is free software, available under the following license: - * MIT license - http://datatables.net/license - * - * This source file is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. - * - * For details please refer to: http://www.datatables.net - */ - -/*jslint evil: true, undef: true, browser: true */ -/*globals $,require,jQuery,define,_selector_run,_selector_opts,_selector_first,_selector_row_indexes,_ext,_Api,_api_register,_api_registerPlural,_re_new_lines,_re_html,_re_formatted_numeric,_re_escape_regex,_empty,_intVal,_numToDecimal,_isNumber,_isHtml,_htmlNumeric,_pluck,_pluck_order,_range,_stripHtml,_unique,_fnBuildAjax,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnAjaxDataSrc,_fnAddColumn,_fnColumnOptions,_fnAdjustColumnSizing,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnVisbleColumns,_fnGetColumns,_fnColumnTypes,_fnApplyColumnDefs,_fnHungarianMap,_fnCamelToHungarian,_fnLanguageCompat,_fnBrowserDetect,_fnAddData,_fnAddTr,_fnNodeToDataIndex,_fnNodeToColumnIndex,_fnGetCellData,_fnSetCellData,_fnSplitObjNotation,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnGetDataMaster,_fnClearTable,_fnDeleteIndex,_fnInvalidate,_fnGetRowElements,_fnCreateTr,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAddOptionsHtml,_fnDetectHeader,_fnGetUniqueThs,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnFilterCreateSearch,_fnEscapeRegex,_fnFilterData,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnInfoMacros,_fnInitialise,_fnInitComplete,_fnLengthChange,_fnFeatureHtmlLength,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnFeatureHtmlTable,_fnScrollDraw,_fnApplyToChildren,_fnCalculateColumnWidths,_fnThrottle,_fnConvertToWidth,_fnScrollingWidthAdjust,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnScrollBarWidth,_fnSortFlatten,_fnSort,_fnSortAria,_fnSortListener,_fnSortAttachListener,_fnSortingClasses,_fnSortData,_fnSaveState,_fnLoadState,_fnSettingsFromNode,_fnLog,_fnMap,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnLengthOverflow,_fnRenderer,_fnDataSource,_fnRowAttributes*/ - -(/** @lends <global> */function( window, document, undefined ) { - -(function( factory ) { - "use strict"; - - if ( typeof define === 'function' && define.amd ) { - // Define as an AMD module if possible - define( 'datatables', ['jquery'], factory ); - } - else if ( typeof exports === 'object' ) { - // Node/CommonJS - module.exports = factory( require( 'jquery' ) ); - } - else if ( jQuery && !jQuery.fn.dataTable ) { - // Define using browser globals otherwise - // Prevent multiple instantiations if the script is loaded twice - factory( jQuery ); - } -} -(/** @lends <global> */function( $ ) { - "use strict"; - - /** - * DataTables is a plug-in for the jQuery Javascript library. It is a highly - * flexible tool, based upon the foundations of progressive enhancement, - * which will add advanced interaction controls to any HTML table. For a - * full list of features please refer to - * [DataTables.net](href="http://datatables.net). - * - * Note that the `DataTable` object is not a global variable but is aliased - * to `jQuery.fn.DataTable` and `jQuery.fn.dataTable` through which it may - * be accessed. - * - * @class - * @param {object} [init={}] Configuration object for DataTables. Options - * are defined by {@link DataTable.defaults} - * @requires jQuery 1.7+ - * - * @example - * // Basic initialisation - * $(document).ready( function { - * $('#example').dataTable(); - * } ); - * - * @example - * // Initialisation with configuration options - in this case, disable - * // pagination and sorting. - * $(document).ready( function { - * $('#example').dataTable( { - * "paginate": false, - * "sort": false - * } ); - * } ); - */ - var DataTable; - - - /* - * It is useful to have variables which are scoped locally so only the - * DataTables functions can access them and they don't leak into global space. - * At the same time these functions are often useful over multiple files in the - * core and API, so we list, or at least document, all variables which are used - * by DataTables as private variables here. This also ensures that there is no - * clashing of variable names and that they can easily referenced for reuse. - */ - - - // Defined else where - // _selector_run - // _selector_opts - // _selector_first - // _selector_row_indexes - - var _ext; // DataTable.ext - var _Api; // DataTable.Api - var _api_register; // DataTable.Api.register - var _api_registerPlural; // DataTable.Api.registerPlural - - var _re_dic = {}; - var _re_new_lines = /[\r\n]/g; - var _re_html = /<.*?>/g; - var _re_date_start = /^[\w\+\-]/; - var _re_date_end = /[\w\+\-]$/; - - // Escape regular expression special characters - var _re_escape_regex = new RegExp( '(\\' + [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\', '$', '^', '-' ].join('|\\') + ')', 'g' ); - - // http://en.wikipedia.org/wiki/Foreign_exchange_market - // - \u20BD - Russian ruble. - // - \u20a9 - South Korean Won - // - \u20BA - Turkish Lira - // - \u20B9 - Indian Rupee - // - R - Brazil (R$) and South Africa - // - fr - Swiss Franc - // - kr - Swedish krona, Norwegian krone and Danish krone - // - \u2009 is thin space and \u202F is narrow no-break space, both used in many - // standards as thousands separators. - var _re_formatted_numeric = /[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfk]/gi; - - - var _empty = function ( d ) { - return !d || d === true || d === '-' ? true : false; - }; - - - var _intVal = function ( s ) { - var integer = parseInt( s, 10 ); - return !isNaN(integer) && isFinite(s) ? integer : null; - }; - - // Convert from a formatted number with characters other than `.` as the - // decimal place, to a Javascript number - var _numToDecimal = function ( num, decimalPoint ) { - // Cache created regular expressions for speed as this function is called often - if ( ! _re_dic[ decimalPoint ] ) { - _re_dic[ decimalPoint ] = new RegExp( _fnEscapeRegex( decimalPoint ), 'g' ); - } - return typeof num === 'string' && decimalPoint !== '.' ? - num.replace( /\./g, '' ).replace( _re_dic[ decimalPoint ], '.' ) : - num; - }; - - - var _isNumber = function ( d, decimalPoint, formatted ) { - var strType = typeof d === 'string'; - - // If empty return immediately so there must be a number if it is a - // formatted string (this stops the string "k", or "kr", etc being detected - // as a formatted number for currency - if ( _empty( d ) ) { - return true; - } - - if ( decimalPoint && strType ) { - d = _numToDecimal( d, decimalPoint ); - } - - if ( formatted && strType ) { - d = d.replace( _re_formatted_numeric, '' ); - } - - return !isNaN( parseFloat(d) ) && isFinite( d ); - }; - - - // A string without HTML in it can be considered to be HTML still - var _isHtml = function ( d ) { - return _empty( d ) || typeof d === 'string'; - }; - - - var _htmlNumeric = function ( d, decimalPoint, formatted ) { - if ( _empty( d ) ) { - return true; - } - - var html = _isHtml( d ); - return ! html ? - null : - _isNumber( _stripHtml( d ), decimalPoint, formatted ) ? - true : - null; - }; - - - var _pluck = function ( a, prop, prop2 ) { - var out = []; - var i=0, ien=a.length; - - // Could have the test in the loop for slightly smaller code, but speed - // is essential here - if ( prop2 !== undefined ) { - for ( ; i<ien ; i++ ) { - if ( a[i] && a[i][ prop ] ) { - out.push( a[i][ prop ][ prop2 ] ); - } - } - } - else { - for ( ; i<ien ; i++ ) { - if ( a[i] ) { - out.push( a[i][ prop ] ); - } - } - } - - return out; - }; - - - // Basically the same as _pluck, but rather than looping over `a` we use `order` - // as the indexes to pick from `a` - var _pluck_order = function ( a, order, prop, prop2 ) - { - var out = []; - var i=0, ien=order.length; - - // Could have the test in the loop for slightly smaller code, but speed - // is essential here - if ( prop2 !== undefined ) { - for ( ; i<ien ; i++ ) { - if ( a[ order[i] ][ prop ] ) { - out.push( a[ order[i] ][ prop ][ prop2 ] ); - } - } - } - else { - for ( ; i<ien ; i++ ) { - out.push( a[ order[i] ][ prop ] ); - } - } - - return out; - }; - - - var _range = function ( len, start ) - { - var out = []; - var end; - - if ( start === undefined ) { - start = 0; - end = len; - } - else { - end = start; - start = len; - } - - for ( var i=start ; i<end ; i++ ) { - out.push( i ); - } - - return out; - }; - - - var _removeEmpty = function ( a ) - { - var out = []; - - for ( var i=0, ien=a.length ; i<ien ; i++ ) { - if ( a[i] ) { // careful - will remove all falsy values! - out.push( a[i] ); - } - } - - return out; - }; - - - var _stripHtml = function ( d ) { - return d.replace( _re_html, '' ); - }; - - - /** - * Find the unique elements in a source array. - * - * @param {array} src Source array - * @return {array} Array of unique items - * @ignore - */ - var _unique = function ( src ) - { - // A faster unique method is to use object keys to identify used values, - // but this doesn't work with arrays or objects, which we must also - // consider. See jsperf.com/compare-array-unique-versions/4 for more - // information. - var - out = [], - val, - i, ien=src.length, - j, k=0; - - again: for ( i=0 ; i<ien ; i++ ) { - val = src[i]; - - for ( j=0 ; j<k ; j++ ) { - if ( out[j] === val ) { - continue again; - } - } - - out.push( val ); - k++; - } - - return out; - }; - - - - /** - * Create a mapping object that allows camel case parameters to be looked up - * for their Hungarian counterparts. The mapping is stored in a private - * parameter called `_hungarianMap` which can be accessed on the source object. - * @param {object} o - * @memberof DataTable#oApi - */ - function _fnHungarianMap ( o ) - { - var - hungarian = 'a aa ai ao as b fn i m o s ', - match, - newKey, - map = {}; - - $.each( o, function (key, val) { - match = key.match(/^([^A-Z]+?)([A-Z])/); - - if ( match && hungarian.indexOf(match[1]+' ') !== -1 ) - { - newKey = key.replace( match[0], match[2].toLowerCase() ); - map[ newKey ] = key; - - if ( match[1] === 'o' ) - { - _fnHungarianMap( o[key] ); - } - } - } ); - - o._hungarianMap = map; - } - - - /** - * Convert from camel case parameters to Hungarian, based on a Hungarian map - * created by _fnHungarianMap. - * @param {object} src The model object which holds all parameters that can be - * mapped. - * @param {object} user The object to convert from camel case to Hungarian. - * @param {boolean} force When set to `true`, properties which already have a - * Hungarian value in the `user` object will be overwritten. Otherwise they - * won't be. - * @memberof DataTable#oApi - */ - function _fnCamelToHungarian ( src, user, force ) - { - if ( ! src._hungarianMap ) { - _fnHungarianMap( src ); - } - - var hungarianKey; - - $.each( user, function (key, val) { - hungarianKey = src._hungarianMap[ key ]; - - if ( hungarianKey !== undefined && (force || user[hungarianKey] === undefined) ) - { - // For objects, we need to buzz down into the object to copy parameters - if ( hungarianKey.charAt(0) === 'o' ) - { - // Copy the camelCase options over to the hungarian - if ( ! user[ hungarianKey ] ) { - user[ hungarianKey ] = {}; - } - $.extend( true, user[hungarianKey], user[key] ); - - _fnCamelToHungarian( src[hungarianKey], user[hungarianKey], force ); - } - else { - user[hungarianKey] = user[ key ]; - } - } - } ); - } - - - /** - * Language compatibility - when certain options are given, and others aren't, we - * need to duplicate the values over, in order to provide backwards compatibility - * with older language files. - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnLanguageCompat( lang ) - { - var defaults = DataTable.defaults.oLanguage; - var zeroRecords = lang.sZeroRecords; - - /* Backwards compatibility - if there is no sEmptyTable given, then use the same as - * sZeroRecords - assuming that is given. - */ - if ( ! lang.sEmptyTable && zeroRecords && - defaults.sEmptyTable === "No data available in table" ) - { - _fnMap( lang, lang, 'sZeroRecords', 'sEmptyTable' ); - } - - /* Likewise with loading records */ - if ( ! lang.sLoadingRecords && zeroRecords && - defaults.sLoadingRecords === "Loading..." ) - { - _fnMap( lang, lang, 'sZeroRecords', 'sLoadingRecords' ); - } - - // Old parameter name of the thousands separator mapped onto the new - if ( lang.sInfoThousands ) { - lang.sThousands = lang.sInfoThousands; - } - - var decimal = lang.sDecimal; - if ( decimal ) { - _addNumericSort( decimal ); - } - } - - - /** - * Map one parameter onto another - * @param {object} o Object to map - * @param {*} knew The new parameter name - * @param {*} old The old parameter name - */ - var _fnCompatMap = function ( o, knew, old ) { - if ( o[ knew ] !== undefined ) { - o[ old ] = o[ knew ]; - } - }; - - - /** - * Provide backwards compatibility for the main DT options. Note that the new - * options are mapped onto the old parameters, so this is an external interface - * change only. - * @param {object} init Object to map - */ - function _fnCompatOpts ( init ) - { - _fnCompatMap( init, 'ordering', 'bSort' ); - _fnCompatMap( init, 'orderMulti', 'bSortMulti' ); - _fnCompatMap( init, 'orderClasses', 'bSortClasses' ); - _fnCompatMap( init, 'orderCellsTop', 'bSortCellsTop' ); - _fnCompatMap( init, 'order', 'aaSorting' ); - _fnCompatMap( init, 'orderFixed', 'aaSortingFixed' ); - _fnCompatMap( init, 'paging', 'bPaginate' ); - _fnCompatMap( init, 'pagingType', 'sPaginationType' ); - _fnCompatMap( init, 'pageLength', 'iDisplayLength' ); - _fnCompatMap( init, 'searching', 'bFilter' ); - - // Column search objects are in an array, so it needs to be converted - // element by element - var searchCols = init.aoSearchCols; - - if ( searchCols ) { - for ( var i=0, ien=searchCols.length ; i<ien ; i++ ) { - if ( searchCols[i] ) { - _fnCamelToHungarian( DataTable.models.oSearch, searchCols[i] ); - } - } - } - } - - - /** - * Provide backwards compatibility for column options. Note that the new options - * are mapped onto the old parameters, so this is an external interface change - * only. - * @param {object} init Object to map - */ - function _fnCompatCols ( init ) - { - _fnCompatMap( init, 'orderable', 'bSortable' ); - _fnCompatMap( init, 'orderData', 'aDataSort' ); - _fnCompatMap( init, 'orderSequence', 'asSorting' ); - _fnCompatMap( init, 'orderDataType', 'sortDataType' ); - - // orderData can be given as an integer - var dataSort = init.aDataSort; - if ( dataSort && ! $.isArray( dataSort ) ) { - init.aDataSort = [ dataSort ]; - } - } - - - /** - * Browser feature detection for capabilities, quirks - * @param {object} settings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnBrowserDetect( settings ) - { - var browser = settings.oBrowser; - - // Scrolling feature / quirks detection - var n = $('<div/>') - .css( { - position: 'absolute', - top: 0, - left: 0, - height: 1, - width: 1, - overflow: 'hidden' - } ) - .append( - $('<div/>') - .css( { - position: 'absolute', - top: 1, - left: 1, - width: 100, - overflow: 'scroll' - } ) - .append( - $('<div class="test"/>') - .css( { - width: '100%', - height: 10 - } ) - ) - ) - .appendTo( 'body' ); - - var test = n.find('.test'); - - // IE6/7 will oversize a width 100% element inside a scrolling element, to - // include the width of the scrollbar, while other browsers ensure the inner - // element is contained without forcing scrolling - browser.bScrollOversize = test[0].offsetWidth === 100; - - // In rtl text layout, some browsers (most, but not all) will place the - // scrollbar on the left, rather than the right. - browser.bScrollbarLeft = Math.round( test.offset().left ) !== 1; - - n.remove(); - } - - - /** - * Array.prototype reduce[Right] method, used for browsers which don't support - * JS 1.6. Done this way to reduce code size, since we iterate either way - * @param {object} settings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnReduce ( that, fn, init, start, end, inc ) - { - var - i = start, - value, - isSet = false; - - if ( init !== undefined ) { - value = init; - isSet = true; - } - - while ( i !== end ) { - if ( ! that.hasOwnProperty(i) ) { - continue; - } - - value = isSet ? - fn( value, that[i], i, that ) : - that[i]; - - isSet = true; - i += inc; - } - - return value; - } - - /** - * Add a column to the list used for the table with default values - * @param {object} oSettings dataTables settings object - * @param {node} nTh The th element for this column - * @memberof DataTable#oApi - */ - function _fnAddColumn( oSettings, nTh ) - { - // Add column to aoColumns array - var oDefaults = DataTable.defaults.column; - var iCol = oSettings.aoColumns.length; - var oCol = $.extend( {}, DataTable.models.oColumn, oDefaults, { - "nTh": nTh ? nTh : document.createElement('th'), - "sTitle": oDefaults.sTitle ? oDefaults.sTitle : nTh ? nTh.innerHTML : '', - "aDataSort": oDefaults.aDataSort ? oDefaults.aDataSort : [iCol], - "mData": oDefaults.mData ? oDefaults.mData : iCol, - idx: iCol - } ); - oSettings.aoColumns.push( oCol ); - - // Add search object for column specific search. Note that the `searchCols[ iCol ]` - // passed into extend can be undefined. This allows the user to give a default - // with only some of the parameters defined, and also not give a default - var searchCols = oSettings.aoPreSearchCols; - searchCols[ iCol ] = $.extend( {}, DataTable.models.oSearch, searchCols[ iCol ] ); - - // Use the default column options function to initialise classes etc - _fnColumnOptions( oSettings, iCol, $(nTh).data() ); - } - - - /** - * Apply options for a column - * @param {object} oSettings dataTables settings object - * @param {int} iCol column index to consider - * @param {object} oOptions object with sType, bVisible and bSearchable etc - * @memberof DataTable#oApi - */ - function _fnColumnOptions( oSettings, iCol, oOptions ) - { - var oCol = oSettings.aoColumns[ iCol ]; - var oClasses = oSettings.oClasses; - var th = $(oCol.nTh); - - // Try to get width information from the DOM. We can't get it from CSS - // as we'd need to parse the CSS stylesheet. `width` option can override - if ( ! oCol.sWidthOrig ) { - // Width attribute - oCol.sWidthOrig = th.attr('width') || null; - - // Style attribute - var t = (th.attr('style') || '').match(/width:\s*(\d+[pxem%]+)/); - if ( t ) { - oCol.sWidthOrig = t[1]; - } - } - - /* User specified column options */ - if ( oOptions !== undefined && oOptions !== null ) - { - // Backwards compatibility - _fnCompatCols( oOptions ); - - // Map camel case parameters to their Hungarian counterparts - _fnCamelToHungarian( DataTable.defaults.column, oOptions ); - - /* Backwards compatibility for mDataProp */ - if ( oOptions.mDataProp !== undefined && !oOptions.mData ) - { - oOptions.mData = oOptions.mDataProp; - } - - if ( oOptions.sType ) - { - oCol._sManualType = oOptions.sType; - } - - // `class` is a reserved word in Javascript, so we need to provide - // the ability to use a valid name for the camel case input - if ( oOptions.className && ! oOptions.sClass ) - { - oOptions.sClass = oOptions.className; - } - - $.extend( oCol, oOptions ); - _fnMap( oCol, oOptions, "sWidth", "sWidthOrig" ); - - /* iDataSort to be applied (backwards compatibility), but aDataSort will take - * priority if defined - */ - if ( oOptions.iDataSort !== undefined ) - { - oCol.aDataSort = [ oOptions.iDataSort ]; - } - _fnMap( oCol, oOptions, "aDataSort" ); - } - - /* Cache the data get and set functions for speed */ - var mDataSrc = oCol.mData; - var mData = _fnGetObjectDataFn( mDataSrc ); - var mRender = oCol.mRender ? _fnGetObjectDataFn( oCol.mRender ) : null; - - var attrTest = function( src ) { - return typeof src === 'string' && src.indexOf('@') !== -1; - }; - oCol._bAttrSrc = $.isPlainObject( mDataSrc ) && ( - attrTest(mDataSrc.sort) || attrTest(mDataSrc.type) || attrTest(mDataSrc.filter) - ); - - oCol.fnGetData = function (rowData, type, meta) { - var innerData = mData( rowData, type, undefined, meta ); - - return mRender && type ? - mRender( innerData, type, rowData, meta ) : - innerData; - }; - oCol.fnSetData = function ( rowData, val, meta ) { - return _fnSetObjectDataFn( mDataSrc )( rowData, val, meta ); - }; - - // Indicate if DataTables should read DOM data as an object or array - // Used in _fnGetRowElements - if ( typeof mDataSrc !== 'number' ) { - oSettings._rowReadObject = true; - } - - /* Feature sorting overrides column specific when off */ - if ( !oSettings.oFeatures.bSort ) - { - oCol.bSortable = false; - th.addClass( oClasses.sSortableNone ); // Have to add class here as order event isn't called - } - - /* Check that the class assignment is correct for sorting */ - var bAsc = $.inArray('asc', oCol.asSorting) !== -1; - var bDesc = $.inArray('desc', oCol.asSorting) !== -1; - if ( !oCol.bSortable || (!bAsc && !bDesc) ) - { - oCol.sSortingClass = oClasses.sSortableNone; - oCol.sSortingClassJUI = ""; - } - else if ( bAsc && !bDesc ) - { - oCol.sSortingClass = oClasses.sSortableAsc; - oCol.sSortingClassJUI = oClasses.sSortJUIAscAllowed; - } - else if ( !bAsc && bDesc ) - { - oCol.sSortingClass = oClasses.sSortableDesc; - oCol.sSortingClassJUI = oClasses.sSortJUIDescAllowed; - } - else - { - oCol.sSortingClass = oClasses.sSortable; - oCol.sSortingClassJUI = oClasses.sSortJUI; - } - } - - - /** - * Adjust the table column widths for new data. Note: you would probably want to - * do a redraw after calling this function! - * @param {object} settings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnAdjustColumnSizing ( settings ) - { - /* Not interested in doing column width calculation if auto-width is disabled */ - if ( settings.oFeatures.bAutoWidth !== false ) - { - var columns = settings.aoColumns; - - _fnCalculateColumnWidths( settings ); - for ( var i=0 , iLen=columns.length ; i<iLen ; i++ ) - { - columns[i].nTh.style.width = columns[i].sWidth; - } - } - - var scroll = settings.oScroll; - if ( scroll.sY !== '' || scroll.sX !== '') - { - _fnScrollDraw( settings ); - } - - _fnCallbackFire( settings, null, 'column-sizing', [settings] ); - } - - - /** - * Covert the index of a visible column to the index in the data array (take account - * of hidden columns) - * @param {object} oSettings dataTables settings object - * @param {int} iMatch Visible column index to lookup - * @returns {int} i the data index - * @memberof DataTable#oApi - */ - function _fnVisibleToColumnIndex( oSettings, iMatch ) - { - var aiVis = _fnGetColumns( oSettings, 'bVisible' ); - - return typeof aiVis[iMatch] === 'number' ? - aiVis[iMatch] : - null; - } - - - /** - * Covert the index of an index in the data array and convert it to the visible - * column index (take account of hidden columns) - * @param {int} iMatch Column index to lookup - * @param {object} oSettings dataTables settings object - * @returns {int} i the data index - * @memberof DataTable#oApi - */ - function _fnColumnIndexToVisible( oSettings, iMatch ) - { - var aiVis = _fnGetColumns( oSettings, 'bVisible' ); - var iPos = $.inArray( iMatch, aiVis ); - - return iPos !== -1 ? iPos : null; - } - - - /** - * Get the number of visible columns - * @param {object} oSettings dataTables settings object - * @returns {int} i the number of visible columns - * @memberof DataTable#oApi - */ - function _fnVisbleColumns( oSettings ) - { - return _fnGetColumns( oSettings, 'bVisible' ).length; - } - - - /** - * Get an array of column indexes that match a given property - * @param {object} oSettings dataTables settings object - * @param {string} sParam Parameter in aoColumns to look for - typically - * bVisible or bSearchable - * @returns {array} Array of indexes with matched properties - * @memberof DataTable#oApi - */ - function _fnGetColumns( oSettings, sParam ) - { - var a = []; - - $.map( oSettings.aoColumns, function(val, i) { - if ( val[sParam] ) { - a.push( i ); - } - } ); - - return a; - } - - - /** - * Calculate the 'type' of a column - * @param {object} settings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnColumnTypes ( settings ) - { - var columns = settings.aoColumns; - var data = settings.aoData; - var types = DataTable.ext.type.detect; - var i, ien, j, jen, k, ken; - var col, cell, detectedType, cache; - - // For each column, spin over the - for ( i=0, ien=columns.length ; i<ien ; i++ ) { - col = columns[i]; - cache = []; - - if ( ! col.sType && col._sManualType ) { - col.sType = col._sManualType; - } - else if ( ! col.sType ) { - for ( j=0, jen=types.length ; j<jen ; j++ ) { - for ( k=0, ken=data.length ; k<ken ; k++ ) { - // Use a cache array so we only need to get the type data - // from the formatter once (when using multiple detectors) - if ( cache[k] === undefined ) { - cache[k] = _fnGetCellData( settings, k, i, 'type' ); - } - - detectedType = types[j]( cache[k], settings ); - - // If null, then this type can't apply to this column, so - // rather than testing all cells, break out. There is an - // exception for the last type which is `html`. We need to - // scan all rows since it is possible to mix string and HTML - // types - if ( ! detectedType && j !== types.length-1 ) { - break; - } - - // Only a single match is needed for html type since it is - // bottom of the pile and very similar to string - if ( detectedType === 'html' ) { - break; - } - } - - // Type is valid for all data points in the column - use this - // type - if ( detectedType ) { - col.sType = detectedType; - break; - } - } - - // Fall back - if no type was detected, always use string - if ( ! col.sType ) { - col.sType = 'string'; - } - } - } - } - - - /** - * Take the column definitions and static columns arrays and calculate how - * they relate to column indexes. The callback function will then apply the - * definition found for a column to a suitable configuration object. - * @param {object} oSettings dataTables settings object - * @param {array} aoColDefs The aoColumnDefs array that is to be applied - * @param {array} aoCols The aoColumns array that defines columns individually - * @param {function} fn Callback function - takes two parameters, the calculated - * column index and the definition for that column. - * @memberof DataTable#oApi - */ - function _fnApplyColumnDefs( oSettings, aoColDefs, aoCols, fn ) - { - var i, iLen, j, jLen, k, kLen, def; - var columns = oSettings.aoColumns; - - // Column definitions with aTargets - if ( aoColDefs ) - { - /* Loop over the definitions array - loop in reverse so first instance has priority */ - for ( i=aoColDefs.length-1 ; i>=0 ; i-- ) - { - def = aoColDefs[i]; - - /* Each definition can target multiple columns, as it is an array */ - var aTargets = def.targets !== undefined ? - def.targets : - def.aTargets; - - if ( ! $.isArray( aTargets ) ) - { - aTargets = [ aTargets ]; - } - - for ( j=0, jLen=aTargets.length ; j<jLen ; j++ ) - { - if ( typeof aTargets[j] === 'number' && aTargets[j] >= 0 ) - { - /* Add columns that we don't yet know about */ - while( columns.length <= aTargets[j] ) - { - _fnAddColumn( oSettings ); - } - - /* Integer, basic index */ - fn( aTargets[j], def ); - } - else if ( typeof aTargets[j] === 'number' && aTargets[j] < 0 ) - { - /* Negative integer, right to left column counting */ - fn( columns.length+aTargets[j], def ); - } - else if ( typeof aTargets[j] === 'string' ) - { - /* Class name matching on TH element */ - for ( k=0, kLen=columns.length ; k<kLen ; k++ ) - { - if ( aTargets[j] == "_all" || - $(columns[k].nTh).hasClass( aTargets[j] ) ) - { - fn( k, def ); - } - } - } - } - } - } - - // Statically defined columns array - if ( aoCols ) - { - for ( i=0, iLen=aoCols.length ; i<iLen ; i++ ) - { - fn( i, aoCols[i] ); - } - } - } - - /** - * Add a data array to the table, creating DOM node etc. This is the parallel to - * _fnGatherData, but for adding rows from a Javascript source, rather than a - * DOM source. - * @param {object} oSettings dataTables settings object - * @param {array} aData data array to be added - * @param {node} [nTr] TR element to add to the table - optional. If not given, - * DataTables will create a row automatically - * @param {array} [anTds] Array of TD|TH elements for the row - must be given - * if nTr is. - * @returns {int} >=0 if successful (index of new aoData entry), -1 if failed - * @memberof DataTable#oApi - */ - function _fnAddData ( oSettings, aDataIn, nTr, anTds ) - { - /* Create the object for storing information about this new row */ - var iRow = oSettings.aoData.length; - var oData = $.extend( true, {}, DataTable.models.oRow, { - src: nTr ? 'dom' : 'data' - } ); - - oData._aData = aDataIn; - oSettings.aoData.push( oData ); - - /* Create the cells */ - var nTd, sThisType; - var columns = oSettings.aoColumns; - for ( var i=0, iLen=columns.length ; i<iLen ; i++ ) - { - // When working with a row, the data source object must be populated. In - // all other cases, the data source object is already populated, so we - // don't overwrite it, which might break bindings etc - if ( nTr ) { - _fnSetCellData( oSettings, iRow, i, _fnGetCellData( oSettings, iRow, i ) ); - } - columns[i].sType = null; - } - - /* Add to the display array */ - oSettings.aiDisplayMaster.push( iRow ); - - /* Create the DOM information, or register it if already present */ - if ( nTr || ! oSettings.oFeatures.bDeferRender ) - { - _fnCreateTr( oSettings, iRow, nTr, anTds ); - } - - return iRow; - } - - - /** - * Add one or more TR elements to the table. Generally we'd expect to - * use this for reading data from a DOM sourced table, but it could be - * used for an TR element. Note that if a TR is given, it is used (i.e. - * it is not cloned). - * @param {object} settings dataTables settings object - * @param {array|node|jQuery} trs The TR element(s) to add to the table - * @returns {array} Array of indexes for the added rows - * @memberof DataTable#oApi - */ - function _fnAddTr( settings, trs ) - { - var row; - - // Allow an individual node to be passed in - if ( ! (trs instanceof $) ) { - trs = $(trs); - } - - return trs.map( function (i, el) { - row = _fnGetRowElements( settings, el ); - return _fnAddData( settings, row.data, el, row.cells ); - } ); - } - - - /** - * Take a TR element and convert it to an index in aoData - * @param {object} oSettings dataTables settings object - * @param {node} n the TR element to find - * @returns {int} index if the node is found, null if not - * @memberof DataTable#oApi - */ - function _fnNodeToDataIndex( oSettings, n ) - { - return (n._DT_RowIndex!==undefined) ? n._DT_RowIndex : null; - } - - - /** - * Take a TD element and convert it into a column data index (not the visible index) - * @param {object} oSettings dataTables settings object - * @param {int} iRow The row number the TD/TH can be found in - * @param {node} n The TD/TH element to find - * @returns {int} index if the node is found, -1 if not - * @memberof DataTable#oApi - */ - function _fnNodeToColumnIndex( oSettings, iRow, n ) - { - return $.inArray( n, oSettings.aoData[ iRow ].anCells ); - } - - - /** - * Get the data for a given cell from the internal cache, taking into account data mapping - * @param {object} settings dataTables settings object - * @param {int} rowIdx aoData row id - * @param {int} colIdx Column index - * @param {string} type data get type ('display', 'type' 'filter' 'sort') - * @returns {*} Cell data - * @memberof DataTable#oApi - */ - function _fnGetCellData( settings, rowIdx, colIdx, type ) - { - var draw = settings.iDraw; - var col = settings.aoColumns[colIdx]; - var rowData = settings.aoData[rowIdx]._aData; - var defaultContent = col.sDefaultContent; - var cellData = col.fnGetData( rowData, type, { - settings: settings, - row: rowIdx, - col: colIdx - } ); - - if ( cellData === undefined ) { - if ( settings.iDrawError != draw && defaultContent === null ) { - _fnLog( settings, 0, "Requested unknown parameter "+ - (typeof col.mData=='function' ? '{function}' : "'"+col.mData+"'")+ - " for row "+rowIdx, 4 ); - settings.iDrawError = draw; - } - return defaultContent; - } - - /* When the data source is null, we can use default column data */ - if ( (cellData === rowData || cellData === null) && defaultContent !== null ) { - cellData = defaultContent; - } - else if ( typeof cellData === 'function' ) { - // If the data source is a function, then we run it and use the return, - // executing in the scope of the data object (for instances) - return cellData.call( rowData ); - } - - if ( cellData === null && type == 'display' ) { - return ''; - } - return cellData; - } - - - /** - * Set the value for a specific cell, into the internal data cache - * @param {object} settings dataTables settings object - * @param {int} rowIdx aoData row id - * @param {int} colIdx Column index - * @param {*} val Value to set - * @memberof DataTable#oApi - */ - function _fnSetCellData( settings, rowIdx, colIdx, val ) - { - var col = settings.aoColumns[colIdx]; - var rowData = settings.aoData[rowIdx]._aData; - - col.fnSetData( rowData, val, { - settings: settings, - row: rowIdx, - col: colIdx - } ); - } - - - // Private variable that is used to match action syntax in the data property object - var __reArray = /\[.*?\]$/; - var __reFn = /\(\)$/; - - /** - * Split string on periods, taking into account escaped periods - * @param {string} str String to split - * @return {array} Split string - */ - function _fnSplitObjNotation( str ) - { - return $.map( str.match(/(\\.|[^\.])+/g), function ( s ) { - return s.replace(/\\./g, '.'); - } ); - } - - - /** - * Return a function that can be used to get data from a source object, taking - * into account the ability to use nested objects as a source - * @param {string|int|function} mSource The data source for the object - * @returns {function} Data get function - * @memberof DataTable#oApi - */ - function _fnGetObjectDataFn( mSource ) - { - if ( $.isPlainObject( mSource ) ) - { - /* Build an object of get functions, and wrap them in a single call */ - var o = {}; - $.each( mSource, function (key, val) { - if ( val ) { - o[key] = _fnGetObjectDataFn( val ); - } - } ); - - return function (data, type, row, meta) { - var t = o[type] || o._; - return t !== undefined ? - t(data, type, row, meta) : - data; - }; - } - else if ( mSource === null ) - { - /* Give an empty string for rendering / sorting etc */ - return function (data) { // type, row and meta also passed, but not used - return data; - }; - } - else if ( typeof mSource === 'function' ) - { - return function (data, type, row, meta) { - return mSource( data, type, row, meta ); - }; - } - else if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 || - mSource.indexOf('[') !== -1 || mSource.indexOf('(') !== -1) ) - { - /* If there is a . in the source string then the data source is in a - * nested object so we loop over the data for each level to get the next - * level down. On each loop we test for undefined, and if found immediately - * return. This allows entire objects to be missing and sDefaultContent to - * be used if defined, rather than throwing an error - */ - var fetchData = function (data, type, src) { - var arrayNotation, funcNotation, out, innerSrc; - - if ( src !== "" ) - { - var a = _fnSplitObjNotation( src ); - - for ( var i=0, iLen=a.length ; i<iLen ; i++ ) - { - // Check if we are dealing with special notation - arrayNotation = a[i].match(__reArray); - funcNotation = a[i].match(__reFn); - - if ( arrayNotation ) - { - // Array notation - a[i] = a[i].replace(__reArray, ''); - - // Condition allows simply [] to be passed in - if ( a[i] !== "" ) { - data = data[ a[i] ]; - } - out = []; - - // Get the remainder of the nested object to get - a.splice( 0, i+1 ); - innerSrc = a.join('.'); - - // Traverse each entry in the array getting the properties requested - for ( var j=0, jLen=data.length ; j<jLen ; j++ ) { - out.push( fetchData( data[j], type, innerSrc ) ); - } - - // If a string is given in between the array notation indicators, that - // is used to join the strings together, otherwise an array is returned - var join = arrayNotation[0].substring(1, arrayNotation[0].length-1); - data = (join==="") ? out : out.join(join); - - // The inner call to fetchData has already traversed through the remainder - // of the source requested, so we exit from the loop - break; - } - else if ( funcNotation ) - { - // Function call - a[i] = a[i].replace(__reFn, ''); - data = data[ a[i] ](); - continue; - } - - if ( data === null || data[ a[i] ] === undefined ) - { - return undefined; - } - data = data[ a[i] ]; - } - } - - return data; - }; - - return function (data, type) { // row and meta also passed, but not used - return fetchData( data, type, mSource ); - }; - } - else - { - /* Array or flat object mapping */ - return function (data, type) { // row and meta also passed, but not used - return data[mSource]; - }; - } - } - - - /** - * Return a function that can be used to set data from a source object, taking - * into account the ability to use nested objects as a source - * @param {string|int|function} mSource The data source for the object - * @returns {function} Data set function - * @memberof DataTable#oApi - */ - function _fnSetObjectDataFn( mSource ) - { - if ( $.isPlainObject( mSource ) ) - { - /* Unlike get, only the underscore (global) option is used for for - * setting data since we don't know the type here. This is why an object - * option is not documented for `mData` (which is read/write), but it is - * for `mRender` which is read only. - */ - return _fnSetObjectDataFn( mSource._ ); - } - else if ( mSource === null ) - { - /* Nothing to do when the data source is null */ - return function () {}; - } - else if ( typeof mSource === 'function' ) - { - return function (data, val, meta) { - mSource( data, 'set', val, meta ); - }; - } - else if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 || - mSource.indexOf('[') !== -1 || mSource.indexOf('(') !== -1) ) - { - /* Like the get, we need to get data from a nested object */ - var setData = function (data, val, src) { - var a = _fnSplitObjNotation( src ), b; - var aLast = a[a.length-1]; - var arrayNotation, funcNotation, o, innerSrc; - - for ( var i=0, iLen=a.length-1 ; i<iLen ; i++ ) - { - // Check if we are dealing with an array notation request - arrayNotation = a[i].match(__reArray); - funcNotation = a[i].match(__reFn); - - if ( arrayNotation ) - { - a[i] = a[i].replace(__reArray, ''); - data[ a[i] ] = []; - - // Get the remainder of the nested object to set so we can recurse - b = a.slice(); - b.splice( 0, i+1 ); - innerSrc = b.join('.'); - - // Traverse each entry in the array setting the properties requested - for ( var j=0, jLen=val.length ; j<jLen ; j++ ) - { - o = {}; - setData( o, val[j], innerSrc ); - data[ a[i] ].push( o ); - } - - // The inner call to setData has already traversed through the remainder - // of the source and has set the data, thus we can exit here - return; - } - else if ( funcNotation ) - { - // Function call - a[i] = a[i].replace(__reFn, ''); - data = data[ a[i] ]( val ); - } - - // If the nested object doesn't currently exist - since we are - // trying to set the value - create it - if ( data[ a[i] ] === null || data[ a[i] ] === undefined ) - { - data[ a[i] ] = {}; - } - data = data[ a[i] ]; - } - - // Last item in the input - i.e, the actual set - if ( aLast.match(__reFn ) ) - { - // Function call - data = data[ aLast.replace(__reFn, '') ]( val ); - } - else - { - // If array notation is used, we just want to strip it and use the property name - // and assign the value. If it isn't used, then we get the result we want anyway - data[ aLast.replace(__reArray, '') ] = val; - } - }; - - return function (data, val) { // meta is also passed in, but not used - return setData( data, val, mSource ); - }; - } - else - { - /* Array or flat object mapping */ - return function (data, val) { // meta is also passed in, but not used - data[mSource] = val; - }; - } - } - - - /** - * Return an array with the full table data - * @param {object} oSettings dataTables settings object - * @returns array {array} aData Master data array - * @memberof DataTable#oApi - */ - function _fnGetDataMaster ( settings ) - { - return _pluck( settings.aoData, '_aData' ); - } - - - /** - * Nuke the table - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnClearTable( settings ) - { - settings.aoData.length = 0; - settings.aiDisplayMaster.length = 0; - settings.aiDisplay.length = 0; - } - - - /** - * Take an array of integers (index array) and remove a target integer (value - not - * the key!) - * @param {array} a Index array to target - * @param {int} iTarget value to find - * @memberof DataTable#oApi - */ - function _fnDeleteIndex( a, iTarget, splice ) - { - var iTargetIndex = -1; - - for ( var i=0, iLen=a.length ; i<iLen ; i++ ) - { - if ( a[i] == iTarget ) - { - iTargetIndex = i; - } - else if ( a[i] > iTarget ) - { - a[i]--; - } - } - - if ( iTargetIndex != -1 && splice === undefined ) - { - a.splice( iTargetIndex, 1 ); - } - } - - - /** - * Mark cached data as invalid such that a re-read of the data will occur when - * the cached data is next requested. Also update from the data source object. - * - * @param {object} settings DataTables settings object - * @param {int} rowIdx Row index to invalidate - * @param {string} [src] Source to invalidate from: undefined, 'auto', 'dom' - * or 'data' - * @param {int} [colIdx] Column index to invalidate. If undefined the whole - * row will be invalidated - * @memberof DataTable#oApi - * - * @todo For the modularisation of v1.11 this will need to become a callback, so - * the sort and filter methods can subscribe to it. That will required - * initialisation options for sorting, which is why it is not already baked in - */ - function _fnInvalidate( settings, rowIdx, src, colIdx ) - { - var row = settings.aoData[ rowIdx ]; - var i, ien; - var cellWrite = function ( cell, col ) { - // This is very frustrating, but in IE if you just write directly - // to innerHTML, and elements that are overwritten are GC'ed, - // even if there is a reference to them elsewhere - while ( cell.childNodes.length ) { - cell.removeChild( cell.firstChild ); - } - - cell.innerHTML = _fnGetCellData( settings, rowIdx, col, 'display' ); - }; - - // Are we reading last data from DOM or the data object? - if ( src === 'dom' || ((! src || src === 'auto') && row.src === 'dom') ) { - // Read the data from the DOM - row._aData = _fnGetRowElements( - settings, row, colIdx, colIdx === undefined ? undefined : row._aData - ) - .data; - } - else { - // Reading from data object, update the DOM - var cells = row.anCells; - - if ( cells ) { - if ( colIdx !== undefined ) { - cellWrite( cells[colIdx], colIdx ); - } - else { - for ( i=0, ien=cells.length ; i<ien ; i++ ) { - cellWrite( cells[i], i ); - } - } - } - } - - // For both row and cell invalidation, the cached data for sorting and - // filtering is nulled out - row._aSortData = null; - row._aFilterData = null; - - // Invalidate the type for a specific column (if given) or all columns since - // the data might have changed - var cols = settings.aoColumns; - if ( colIdx !== undefined ) { - cols[ colIdx ].sType = null; - } - else { - for ( i=0, ien=cols.length ; i<ien ; i++ ) { - cols[i].sType = null; - } - - // Update DataTables special `DT_*` attributes for the row - _fnRowAttributes( row ); - } - } - - - /** - * Build a data source object from an HTML row, reading the contents of the - * cells that are in the row. - * - * @param {object} settings DataTables settings object - * @param {node|object} TR element from which to read data or existing row - * object from which to re-read the data from the cells - * @param {int} [colIdx] Optional column index - * @param {array|object} [d] Data source object. If `colIdx` is given then this - * parameter should also be given and will be used to write the data into. - * Only the column in question will be written - * @returns {object} Object with two parameters: `data` the data read, in - * document order, and `cells` and array of nodes (they can be useful to the - * caller, so rather than needing a second traversal to get them, just return - * them from here). - * @memberof DataTable#oApi - */ - function _fnGetRowElements( settings, row, colIdx, d ) - { - var - tds = [], - td = row.firstChild, - name, col, o, i=0, contents, - columns = settings.aoColumns, - objectRead = settings._rowReadObject; - - // Allow the data object to be passed in, or construct - d = d || objectRead ? {} : []; - - var attr = function ( str, td ) { - if ( typeof str === 'string' ) { - var idx = str.indexOf('@'); - - if ( idx !== -1 ) { - var attr = str.substring( idx+1 ); - var setter = _fnSetObjectDataFn( str ); - setter( d, td.getAttribute( attr ) ); - } - } - }; - - // Read data from a cell and store into the data object - var cellProcess = function ( cell ) { - if ( colIdx === undefined || colIdx === i ) { - col = columns[i]; - contents = $.trim(cell.innerHTML); - - if ( col && col._bAttrSrc ) { - var setter = _fnSetObjectDataFn( col.mData._ ); - setter( d, contents ); - - attr( col.mData.sort, cell ); - attr( col.mData.type, cell ); - attr( col.mData.filter, cell ); - } - else { - // Depending on the `data` option for the columns the data can - // be read to either an object or an array. - if ( objectRead ) { - if ( ! col._setter ) { - // Cache the setter function - col._setter = _fnSetObjectDataFn( col.mData ); - } - col._setter( d, contents ); - } - else { - d[i] = contents; - } - } - } - - i++; - }; - - if ( td ) { - // `tr` element was passed in - while ( td ) { - name = td.nodeName.toUpperCase(); - - if ( name == "TD" || name == "TH" ) { - cellProcess( td ); - tds.push( td ); - } - - td = td.nextSibling; - } - } - else { - // Existing row object passed in - tds = row.anCells; - - for ( var j=0, jen=tds.length ; j<jen ; j++ ) { - cellProcess( tds[j] ); - } - } - - return { - data: d, - cells: tds - }; - } - /** - * Create a new TR element (and it's TD children) for a row - * @param {object} oSettings dataTables settings object - * @param {int} iRow Row to consider - * @param {node} [nTrIn] TR element to add to the table - optional. If not given, - * DataTables will create a row automatically - * @param {array} [anTds] Array of TD|TH elements for the row - must be given - * if nTr is. - * @memberof DataTable#oApi - */ - function _fnCreateTr ( oSettings, iRow, nTrIn, anTds ) - { - var - row = oSettings.aoData[iRow], - rowData = row._aData, - cells = [], - nTr, nTd, oCol, - i, iLen; - - if ( row.nTr === null ) - { - nTr = nTrIn || document.createElement('tr'); - - row.nTr = nTr; - row.anCells = cells; - - /* Use a private property on the node to allow reserve mapping from the node - * to the aoData array for fast look up - */ - nTr._DT_RowIndex = iRow; - - /* Special parameters can be given by the data source to be used on the row */ - _fnRowAttributes( row ); - - /* Process each column */ - for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ ) - { - oCol = oSettings.aoColumns[i]; - - nTd = nTrIn ? anTds[i] : document.createElement( oCol.sCellType ); - cells.push( nTd ); - - // Need to create the HTML if new, or if a rendering function is defined - if ( !nTrIn || oCol.mRender || oCol.mData !== i ) - { - nTd.innerHTML = _fnGetCellData( oSettings, iRow, i, 'display' ); - } - - /* Add user defined class */ - if ( oCol.sClass ) - { - nTd.className += ' '+oCol.sClass; - } - - // Visibility - add or remove as required - if ( oCol.bVisible && ! nTrIn ) - { - nTr.appendChild( nTd ); - } - else if ( ! oCol.bVisible && nTrIn ) - { - nTd.parentNode.removeChild( nTd ); - } - - if ( oCol.fnCreatedCell ) - { - oCol.fnCreatedCell.call( oSettings.oInstance, - nTd, _fnGetCellData( oSettings, iRow, i ), rowData, iRow, i - ); - } - } - - _fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [nTr, rowData, iRow] ); - } - - // Remove once webkit bug 131819 and Chromium bug 365619 have been resolved - // and deployed - row.nTr.setAttribute( 'role', 'row' ); - } - - - /** - * Add attributes to a row based on the special `DT_*` parameters in a data - * source object. - * @param {object} DataTables row object for the row to be modified - * @memberof DataTable#oApi - */ - function _fnRowAttributes( row ) - { - var tr = row.nTr; - var data = row._aData; - - if ( tr ) { - if ( data.DT_RowId ) { - tr.id = data.DT_RowId; - } - - if ( data.DT_RowClass ) { - // Remove any classes added by DT_RowClass before - var a = data.DT_RowClass.split(' '); - row.__rowc = row.__rowc ? - _unique( row.__rowc.concat( a ) ) : - a; - - $(tr) - .removeClass( row.__rowc.join(' ') ) - .addClass( data.DT_RowClass ); - } - - if ( data.DT_RowAttr ) { - $(tr).attr( data.DT_RowAttr ); - } - - if ( data.DT_RowData ) { - $(tr).data( data.DT_RowData ); - } - } - } - - - /** - * Create the HTML header for the table - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnBuildHead( oSettings ) - { - var i, ien, cell, row, column; - var thead = oSettings.nTHead; - var tfoot = oSettings.nTFoot; - var createHeader = $('th, td', thead).length === 0; - var classes = oSettings.oClasses; - var columns = oSettings.aoColumns; - - if ( createHeader ) { - row = $('<tr/>').appendTo( thead ); - } - - for ( i=0, ien=columns.length ; i<ien ; i++ ) { - column = columns[i]; - cell = $( column.nTh ).addClass( column.sClass ); - - if ( createHeader ) { - cell.appendTo( row ); - } - - // 1.11 move into sorting - if ( oSettings.oFeatures.bSort ) { - cell.addClass( column.sSortingClass ); - - if ( column.bSortable !== false ) { - cell - .attr( 'tabindex', oSettings.iTabIndex ) - .attr( 'aria-controls', oSettings.sTableId ); - - _fnSortAttachListener( oSettings, column.nTh, i ); - } - } - - if ( column.sTitle != cell.html() ) { - cell.html( column.sTitle ); - } - - _fnRenderer( oSettings, 'header' )( - oSettings, cell, column, classes - ); - } - - if ( createHeader ) { - _fnDetectHeader( oSettings.aoHeader, thead ); - } - - /* ARIA role for the rows */ - $(thead).find('>tr').attr('role', 'row'); - - /* Deal with the footer - add classes if required */ - $(thead).find('>tr>th, >tr>td').addClass( classes.sHeaderTH ); - $(tfoot).find('>tr>th, >tr>td').addClass( classes.sFooterTH ); - - // Cache the footer cells. Note that we only take the cells from the first - // row in the footer. If there is more than one row the user wants to - // interact with, they need to use the table().foot() method. Note also this - // allows cells to be used for multiple columns using colspan - if ( tfoot !== null ) { - var cells = oSettings.aoFooter[0]; - - for ( i=0, ien=cells.length ; i<ien ; i++ ) { - column = columns[i]; - column.nTf = cells[i].cell; - - if ( column.sClass ) { - $(column.nTf).addClass( column.sClass ); - } - } - } - } - - - /** - * Draw the header (or footer) element based on the column visibility states. The - * methodology here is to use the layout array from _fnDetectHeader, modified for - * the instantaneous column visibility, to construct the new layout. The grid is - * traversed over cell at a time in a rows x columns grid fashion, although each - * cell insert can cover multiple elements in the grid - which is tracks using the - * aApplied array. Cell inserts in the grid will only occur where there isn't - * already a cell in that position. - * @param {object} oSettings dataTables settings object - * @param array {objects} aoSource Layout array from _fnDetectHeader - * @param {boolean} [bIncludeHidden=false] If true then include the hidden columns in the calc, - * @memberof DataTable#oApi - */ - function _fnDrawHead( oSettings, aoSource, bIncludeHidden ) - { - var i, iLen, j, jLen, k, kLen, n, nLocalTr; - var aoLocal = []; - var aApplied = []; - var iColumns = oSettings.aoColumns.length; - var iRowspan, iColspan; - - if ( ! aoSource ) - { - return; - } - - if ( bIncludeHidden === undefined ) - { - bIncludeHidden = false; - } - - /* Make a copy of the master layout array, but without the visible columns in it */ - for ( i=0, iLen=aoSource.length ; i<iLen ; i++ ) - { - aoLocal[i] = aoSource[i].slice(); - aoLocal[i].nTr = aoSource[i].nTr; - - /* Remove any columns which are currently hidden */ - for ( j=iColumns-1 ; j>=0 ; j-- ) - { - if ( !oSettings.aoColumns[j].bVisible && !bIncludeHidden ) - { - aoLocal[i].splice( j, 1 ); - } - } - - /* Prep the applied array - it needs an element for each row */ - aApplied.push( [] ); - } - - for ( i=0, iLen=aoLocal.length ; i<iLen ; i++ ) - { - nLocalTr = aoLocal[i].nTr; - - /* All cells are going to be replaced, so empty out the row */ - if ( nLocalTr ) - { - while( (n = nLocalTr.firstChild) ) - { - nLocalTr.removeChild( n ); - } - } - - for ( j=0, jLen=aoLocal[i].length ; j<jLen ; j++ ) - { - iRowspan = 1; - iColspan = 1; - - /* Check to see if there is already a cell (row/colspan) covering our target - * insert point. If there is, then there is nothing to do. - */ - if ( aApplied[i][j] === undefined ) - { - nLocalTr.appendChild( aoLocal[i][j].cell ); - aApplied[i][j] = 1; - - /* Expand the cell to cover as many rows as needed */ - while ( aoLocal[i+iRowspan] !== undefined && - aoLocal[i][j].cell == aoLocal[i+iRowspan][j].cell ) - { - aApplied[i+iRowspan][j] = 1; - iRowspan++; - } - - /* Expand the cell to cover as many columns as needed */ - while ( aoLocal[i][j+iColspan] !== undefined && - aoLocal[i][j].cell == aoLocal[i][j+iColspan].cell ) - { - /* Must update the applied array over the rows for the columns */ - for ( k=0 ; k<iRowspan ; k++ ) - { - aApplied[i+k][j+iColspan] = 1; - } - iColspan++; - } - - /* Do the actual expansion in the DOM */ - $(aoLocal[i][j].cell) - .attr('rowspan', iRowspan) - .attr('colspan', iColspan); - } - } - } - } - - - /** - * Insert the required TR nodes into the table for display - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnDraw( oSettings ) - { - /* Provide a pre-callback function which can be used to cancel the draw is false is returned */ - var aPreDraw = _fnCallbackFire( oSettings, 'aoPreDrawCallback', 'preDraw', [oSettings] ); - if ( $.inArray( false, aPreDraw ) !== -1 ) - { - _fnProcessingDisplay( oSettings, false ); - return; - } - - var i, iLen, n; - var anRows = []; - var iRowCount = 0; - var asStripeClasses = oSettings.asStripeClasses; - var iStripes = asStripeClasses.length; - var iOpenRows = oSettings.aoOpenRows.length; - var oLang = oSettings.oLanguage; - var iInitDisplayStart = oSettings.iInitDisplayStart; - var bServerSide = _fnDataSource( oSettings ) == 'ssp'; - var aiDisplay = oSettings.aiDisplay; - - oSettings.bDrawing = true; - - /* Check and see if we have an initial draw position from state saving */ - if ( iInitDisplayStart !== undefined && iInitDisplayStart !== -1 ) - { - oSettings._iDisplayStart = bServerSide ? - iInitDisplayStart : - iInitDisplayStart >= oSettings.fnRecordsDisplay() ? - 0 : - iInitDisplayStart; - - oSettings.iInitDisplayStart = -1; - } - - var iDisplayStart = oSettings._iDisplayStart; - var iDisplayEnd = oSettings.fnDisplayEnd(); - - /* Server-side processing draw intercept */ - if ( oSettings.bDeferLoading ) - { - oSettings.bDeferLoading = false; - oSettings.iDraw++; - _fnProcessingDisplay( oSettings, false ); - } - else if ( !bServerSide ) - { - oSettings.iDraw++; - } - else if ( !oSettings.bDestroying && !_fnAjaxUpdate( oSettings ) ) - { - return; - } - - if ( aiDisplay.length !== 0 ) - { - var iStart = bServerSide ? 0 : iDisplayStart; - var iEnd = bServerSide ? oSettings.aoData.length : iDisplayEnd; - - for ( var j=iStart ; j<iEnd ; j++ ) - { - var iDataIndex = aiDisplay[j]; - var aoData = oSettings.aoData[ iDataIndex ]; - if ( aoData.nTr === null ) - { - _fnCreateTr( oSettings, iDataIndex ); - } - - var nRow = aoData.nTr; - - /* Remove the old striping classes and then add the new one */ - if ( iStripes !== 0 ) - { - var sStripe = asStripeClasses[ iRowCount % iStripes ]; - if ( aoData._sRowStripe != sStripe ) - { - $(nRow).removeClass( aoData._sRowStripe ).addClass( sStripe ); - aoData._sRowStripe = sStripe; - } - } - - // Row callback functions - might want to manipulate the row - // iRowCount and j are not currently documented. Are they at all - // useful? - _fnCallbackFire( oSettings, 'aoRowCallback', null, - [nRow, aoData._aData, iRowCount, j] ); - - anRows.push( nRow ); - iRowCount++; - } - } - else - { - /* Table is empty - create a row with an empty message in it */ - var sZero = oLang.sZeroRecords; - if ( oSettings.iDraw == 1 && _fnDataSource( oSettings ) == 'ajax' ) - { - sZero = oLang.sLoadingRecords; - } - else if ( oLang.sEmptyTable && oSettings.fnRecordsTotal() === 0 ) - { - sZero = oLang.sEmptyTable; - } - - anRows[ 0 ] = $( '<tr/>', { 'class': iStripes ? asStripeClasses[0] : '' } ) - .append( $('<td />', { - 'valign': 'top', - 'colSpan': _fnVisbleColumns( oSettings ), - 'class': oSettings.oClasses.sRowEmpty - } ).html( sZero ) )[0]; - } - - /* Header and footer callbacks */ - _fnCallbackFire( oSettings, 'aoHeaderCallback', 'header', [ $(oSettings.nTHead).children('tr')[0], - _fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] ); - - _fnCallbackFire( oSettings, 'aoFooterCallback', 'footer', [ $(oSettings.nTFoot).children('tr')[0], - _fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] ); - - var body = $(oSettings.nTBody); - - body.children().detach(); - body.append( $(anRows) ); - - /* Call all required callback functions for the end of a draw */ - _fnCallbackFire( oSettings, 'aoDrawCallback', 'draw', [oSettings] ); - - /* Draw is complete, sorting and filtering must be as well */ - oSettings.bSorted = false; - oSettings.bFiltered = false; - oSettings.bDrawing = false; - } - - - /** - * Redraw the table - taking account of the various features which are enabled - * @param {object} oSettings dataTables settings object - * @param {boolean} [holdPosition] Keep the current paging position. By default - * the paging is reset to the first page - * @memberof DataTable#oApi - */ - function _fnReDraw( settings, holdPosition ) - { - var - features = settings.oFeatures, - sort = features.bSort, - filter = features.bFilter; - - if ( sort ) { - _fnSort( settings ); - } - - if ( filter ) { - _fnFilterComplete( settings, settings.oPreviousSearch ); - } - else { - // No filtering, so we want to just use the display master - settings.aiDisplay = settings.aiDisplayMaster.slice(); - } - - if ( holdPosition !== true ) { - settings._iDisplayStart = 0; - } - - // Let any modules know about the draw hold position state (used by - // scrolling internally) - settings._drawHold = holdPosition; - - _fnDraw( settings ); - - settings._drawHold = false; - } - - - /** - * Add the options to the page HTML for the table - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnAddOptionsHtml ( oSettings ) - { - var classes = oSettings.oClasses; - var table = $(oSettings.nTable); - var holding = $('<div/>').insertBefore( table ); // Holding element for speed - var features = oSettings.oFeatures; - - // All DataTables are wrapped in a div - var insert = $('<div/>', { - id: oSettings.sTableId+'_wrapper', - 'class': classes.sWrapper + (oSettings.nTFoot ? '' : ' '+classes.sNoFooter) - } ); - - oSettings.nHolding = holding[0]; - oSettings.nTableWrapper = insert[0]; - oSettings.nTableReinsertBefore = oSettings.nTable.nextSibling; - - /* Loop over the user set positioning and place the elements as needed */ - var aDom = oSettings.sDom.split(''); - var featureNode, cOption, nNewNode, cNext, sAttr, j; - for ( var i=0 ; i<aDom.length ; i++ ) - { - featureNode = null; - cOption = aDom[i]; - - if ( cOption == '<' ) - { - /* New container div */ - nNewNode = $('<div/>')[0]; - - /* Check to see if we should append an id and/or a class name to the container */ - cNext = aDom[i+1]; - if ( cNext == "'" || cNext == '"' ) - { - sAttr = ""; - j = 2; - while ( aDom[i+j] != cNext ) - { - sAttr += aDom[i+j]; - j++; - } - - /* Replace jQuery UI constants @todo depreciated */ - if ( sAttr == "H" ) - { - sAttr = classes.sJUIHeader; - } - else if ( sAttr == "F" ) - { - sAttr = classes.sJUIFooter; - } - - /* The attribute can be in the format of "#id.class", "#id" or "class" This logic - * breaks the string into parts and applies them as needed - */ - if ( sAttr.indexOf('.') != -1 ) - { - var aSplit = sAttr.split('.'); - nNewNode.id = aSplit[0].substr(1, aSplit[0].length-1); - nNewNode.className = aSplit[1]; - } - else if ( sAttr.charAt(0) == "#" ) - { - nNewNode.id = sAttr.substr(1, sAttr.length-1); - } - else - { - nNewNode.className = sAttr; - } - - i += j; /* Move along the position array */ - } - - insert.append( nNewNode ); - insert = $(nNewNode); - } - else if ( cOption == '>' ) - { - /* End container div */ - insert = insert.parent(); - } - // @todo Move options into their own plugins? - else if ( cOption == 'l' && features.bPaginate && features.bLengthChange ) - { - /* Length */ - featureNode = _fnFeatureHtmlLength( oSettings ); - } - else if ( cOption == 'f' && features.bFilter ) - { - /* Filter */ - featureNode = _fnFeatureHtmlFilter( oSettings ); - } - else if ( cOption == 'r' && features.bProcessing ) - { - /* pRocessing */ - featureNode = _fnFeatureHtmlProcessing( oSettings ); - } - else if ( cOption == 't' ) - { - /* Table */ - featureNode = _fnFeatureHtmlTable( oSettings ); - } - else if ( cOption == 'i' && features.bInfo ) - { - /* Info */ - featureNode = _fnFeatureHtmlInfo( oSettings ); - } - else if ( cOption == 'p' && features.bPaginate ) - { - /* Pagination */ - featureNode = _fnFeatureHtmlPaginate( oSettings ); - } - else if ( DataTable.ext.feature.length !== 0 ) - { - /* Plug-in features */ - var aoFeatures = DataTable.ext.feature; - for ( var k=0, kLen=aoFeatures.length ; k<kLen ; k++ ) - { - if ( cOption == aoFeatures[k].cFeature ) - { - featureNode = aoFeatures[k].fnInit( oSettings ); - break; - } - } - } - - /* Add to the 2D features array */ - if ( featureNode ) - { - var aanFeatures = oSettings.aanFeatures; - - if ( ! aanFeatures[cOption] ) - { - aanFeatures[cOption] = []; - } - - aanFeatures[cOption].push( featureNode ); - insert.append( featureNode ); - } - } - - /* Built our DOM structure - replace the holding div with what we want */ - holding.replaceWith( insert ); - } - - - /** - * Use the DOM source to create up an array of header cells. The idea here is to - * create a layout grid (array) of rows x columns, which contains a reference - * to the cell that that point in the grid (regardless of col/rowspan), such that - * any column / row could be removed and the new grid constructed - * @param array {object} aLayout Array to store the calculated layout in - * @param {node} nThead The header/footer element for the table - * @memberof DataTable#oApi - */ - function _fnDetectHeader ( aLayout, nThead ) - { - var nTrs = $(nThead).children('tr'); - var nTr, nCell; - var i, k, l, iLen, jLen, iColShifted, iColumn, iColspan, iRowspan; - var bUnique; - var fnShiftCol = function ( a, i, j ) { - var k = a[i]; - while ( k[j] ) { - j++; - } - return j; - }; - - aLayout.splice( 0, aLayout.length ); - - /* We know how many rows there are in the layout - so prep it */ - for ( i=0, iLen=nTrs.length ; i<iLen ; i++ ) - { - aLayout.push( [] ); - } - - /* Calculate a layout array */ - for ( i=0, iLen=nTrs.length ; i<iLen ; i++ ) - { - nTr = nTrs[i]; - iColumn = 0; - - /* For every cell in the row... */ - nCell = nTr.firstChild; - while ( nCell ) { - if ( nCell.nodeName.toUpperCase() == "TD" || - nCell.nodeName.toUpperCase() == "TH" ) - { - /* Get the col and rowspan attributes from the DOM and sanitise them */ - iColspan = nCell.getAttribute('colspan') * 1; - iRowspan = nCell.getAttribute('rowspan') * 1; - iColspan = (!iColspan || iColspan===0 || iColspan===1) ? 1 : iColspan; - iRowspan = (!iRowspan || iRowspan===0 || iRowspan===1) ? 1 : iRowspan; - - /* There might be colspan cells already in this row, so shift our target - * accordingly - */ - iColShifted = fnShiftCol( aLayout, i, iColumn ); - - /* Cache calculation for unique columns */ - bUnique = iColspan === 1 ? true : false; - - /* If there is col / rowspan, copy the information into the layout grid */ - for ( l=0 ; l<iColspan ; l++ ) - { - for ( k=0 ; k<iRowspan ; k++ ) - { - aLayout[i+k][iColShifted+l] = { - "cell": nCell, - "unique": bUnique - }; - aLayout[i+k].nTr = nTr; - } - } - } - nCell = nCell.nextSibling; - } - } - } - - - /** - * Get an array of unique th elements, one for each column - * @param {object} oSettings dataTables settings object - * @param {node} nHeader automatically detect the layout from this node - optional - * @param {array} aLayout thead/tfoot layout from _fnDetectHeader - optional - * @returns array {node} aReturn list of unique th's - * @memberof DataTable#oApi - */ - function _fnGetUniqueThs ( oSettings, nHeader, aLayout ) - { - var aReturn = []; - if ( !aLayout ) - { - aLayout = oSettings.aoHeader; - if ( nHeader ) - { - aLayout = []; - _fnDetectHeader( aLayout, nHeader ); - } - } - - for ( var i=0, iLen=aLayout.length ; i<iLen ; i++ ) - { - for ( var j=0, jLen=aLayout[i].length ; j<jLen ; j++ ) - { - if ( aLayout[i][j].unique && - (!aReturn[j] || !oSettings.bSortCellsTop) ) - { - aReturn[j] = aLayout[i][j].cell; - } - } - } - - return aReturn; - } - - /** - * Create an Ajax call based on the table's settings, taking into account that - * parameters can have multiple forms, and backwards compatibility. - * - * @param {object} oSettings dataTables settings object - * @param {array} data Data to send to the server, required by - * DataTables - may be augmented by developer callbacks - * @param {function} fn Callback function to run when data is obtained - */ - function _fnBuildAjax( oSettings, data, fn ) - { - // Compatibility with 1.9-, allow fnServerData and event to manipulate - _fnCallbackFire( oSettings, 'aoServerParams', 'serverParams', [data] ); - - // Convert to object based for 1.10+ if using the old array scheme which can - // come from server-side processing or serverParams - if ( data && $.isArray(data) ) { - var tmp = {}; - var rbracket = /(.*?)\[\]$/; - - $.each( data, function (key, val) { - var match = val.name.match(rbracket); - - if ( match ) { - // Support for arrays - var name = match[0]; - - if ( ! tmp[ name ] ) { - tmp[ name ] = []; - } - tmp[ name ].push( val.value ); - } - else { - tmp[val.name] = val.value; - } - } ); - data = tmp; - } - - var ajaxData; - var ajax = oSettings.ajax; - var instance = oSettings.oInstance; - var callback = function ( json ) { - _fnCallbackFire( oSettings, null, 'xhr', [oSettings, json, oSettings.jqXHR] ); - fn( json ); - }; - - if ( $.isPlainObject( ajax ) && ajax.data ) - { - ajaxData = ajax.data; - - var newData = $.isFunction( ajaxData ) ? - ajaxData( data, oSettings ) : // fn can manipulate data or return - ajaxData; // an object object or array to merge - - // If the function returned something, use that alone - data = $.isFunction( ajaxData ) && newData ? - newData : - $.extend( true, data, newData ); - - // Remove the data property as we've resolved it already and don't want - // jQuery to do it again (it is restored at the end of the function) - delete ajax.data; - } - - var baseAjax = { - "data": data, - "success": function (json) { - var error = json.error || json.sError; - if ( error ) { - _fnLog( oSettings, 0, error ); - } - - oSettings.json = json; - callback( json ); - }, - "dataType": "json", - "cache": false, - "type": oSettings.sServerMethod, - "error": function (xhr, error, thrown) { - var ret = _fnCallbackFire( oSettings, null, 'xhr', [oSettings, null, oSettings.jqXHR] ); - - if ( $.inArray( true, ret ) === -1 ) { - if ( error == "parsererror" ) { - _fnLog( oSettings, 0, 'Invalid JSON response', 1 ); - } - else if ( xhr.readyState === 4 ) { - _fnLog( oSettings, 0, 'Ajax error', 7 ); - } - } - - _fnProcessingDisplay( oSettings, false ); - } - }; - - // Store the data submitted for the API - oSettings.oAjaxData = data; - - // Allow plug-ins and external processes to modify the data - _fnCallbackFire( oSettings, null, 'preXhr', [oSettings, data] ); - - if ( oSettings.fnServerData ) - { - // DataTables 1.9- compatibility - oSettings.fnServerData.call( instance, - oSettings.sAjaxSource, - $.map( data, function (val, key) { // Need to convert back to 1.9 trad format - return { name: key, value: val }; - } ), - callback, - oSettings - ); - } - else if ( oSettings.sAjaxSource || typeof ajax === 'string' ) - { - // DataTables 1.9- compatibility - oSettings.jqXHR = $.ajax( $.extend( baseAjax, { - url: ajax || oSettings.sAjaxSource - } ) ); - } - else if ( $.isFunction( ajax ) ) - { - // Is a function - let the caller define what needs to be done - oSettings.jqXHR = ajax.call( instance, data, callback, oSettings ); - } - else - { - // Object to extend the base settings - oSettings.jqXHR = $.ajax( $.extend( baseAjax, ajax ) ); - - // Restore for next time around - ajax.data = ajaxData; - } - } - - - /** - * Update the table using an Ajax call - * @param {object} settings dataTables settings object - * @returns {boolean} Block the table drawing or not - * @memberof DataTable#oApi - */ - function _fnAjaxUpdate( settings ) - { - if ( settings.bAjaxDataGet ) { - settings.iDraw++; - _fnProcessingDisplay( settings, true ); - - _fnBuildAjax( - settings, - _fnAjaxParameters( settings ), - function(json) { - _fnAjaxUpdateDraw( settings, json ); - } - ); - - return false; - } - return true; - } - - - /** - * Build up the parameters in an object needed for a server-side processing - * request. Note that this is basically done twice, is different ways - a modern - * method which is used by default in DataTables 1.10 which uses objects and - * arrays, or the 1.9- method with is name / value pairs. 1.9 method is used if - * the sAjaxSource option is used in the initialisation, or the legacyAjax - * option is set. - * @param {object} oSettings dataTables settings object - * @returns {bool} block the table drawing or not - * @memberof DataTable#oApi - */ - function _fnAjaxParameters( settings ) - { - var - columns = settings.aoColumns, - columnCount = columns.length, - features = settings.oFeatures, - preSearch = settings.oPreviousSearch, - preColSearch = settings.aoPreSearchCols, - i, data = [], dataProp, column, columnSearch, - sort = _fnSortFlatten( settings ), - displayStart = settings._iDisplayStart, - displayLength = features.bPaginate !== false ? - settings._iDisplayLength : - -1; - - var param = function ( name, value ) { - data.push( { 'name': name, 'value': value } ); - }; - - // DataTables 1.9- compatible method - param( 'sEcho', settings.iDraw ); - param( 'iColumns', columnCount ); - param( 'sColumns', _pluck( columns, 'sName' ).join(',') ); - param( 'iDisplayStart', displayStart ); - param( 'iDisplayLength', displayLength ); - - // DataTables 1.10+ method - var d = { - draw: settings.iDraw, - columns: [], - order: [], - start: displayStart, - length: displayLength, - search: { - value: preSearch.sSearch, - regex: preSearch.bRegex - } - }; - - for ( i=0 ; i<columnCount ; i++ ) { - column = columns[i]; - columnSearch = preColSearch[i]; - dataProp = typeof column.mData=="function" ? 'function' : column.mData ; - - d.columns.push( { - data: dataProp, - name: column.sName, - searchable: column.bSearchable, - orderable: column.bSortable, - search: { - value: columnSearch.sSearch, - regex: columnSearch.bRegex - } - } ); - - param( "mDataProp_"+i, dataProp ); - - if ( features.bFilter ) { - param( 'sSearch_'+i, columnSearch.sSearch ); - param( 'bRegex_'+i, columnSearch.bRegex ); - param( 'bSearchable_'+i, column.bSearchable ); - } - - if ( features.bSort ) { - param( 'bSortable_'+i, column.bSortable ); - } - } - - if ( features.bFilter ) { - param( 'sSearch', preSearch.sSearch ); - param( 'bRegex', preSearch.bRegex ); - } - - if ( features.bSort ) { - $.each( sort, function ( i, val ) { - d.order.push( { column: val.col, dir: val.dir } ); - - param( 'iSortCol_'+i, val.col ); - param( 'sSortDir_'+i, val.dir ); - } ); - - param( 'iSortingCols', sort.length ); - } - - // If the legacy.ajax parameter is null, then we automatically decide which - // form to use, based on sAjaxSource - var legacy = DataTable.ext.legacy.ajax; - if ( legacy === null ) { - return settings.sAjaxSource ? data : d; - } - - // Otherwise, if legacy has been specified then we use that to decide on the - // form - return legacy ? data : d; - } - - - /** - * Data the data from the server (nuking the old) and redraw the table - * @param {object} oSettings dataTables settings object - * @param {object} json json data return from the server. - * @param {string} json.sEcho Tracking flag for DataTables to match requests - * @param {int} json.iTotalRecords Number of records in the data set, not accounting for filtering - * @param {int} json.iTotalDisplayRecords Number of records in the data set, accounting for filtering - * @param {array} json.aaData The data to display on this page - * @param {string} [json.sColumns] Column ordering (sName, comma separated) - * @memberof DataTable#oApi - */ - function _fnAjaxUpdateDraw ( settings, json ) - { - // v1.10 uses camelCase variables, while 1.9 uses Hungarian notation. - // Support both - var compat = function ( old, modern ) { - return json[old] !== undefined ? json[old] : json[modern]; - }; - - var data = _fnAjaxDataSrc( settings, json ); - var draw = compat( 'sEcho', 'draw' ); - var recordsTotal = compat( 'iTotalRecords', 'recordsTotal' ); - var recordsFiltered = compat( 'iTotalDisplayRecords', 'recordsFiltered' ); - - if ( draw ) { - // Protect against out of sequence returns - if ( draw*1 < settings.iDraw ) { - return; - } - settings.iDraw = draw * 1; - } - - _fnClearTable( settings ); - settings._iRecordsTotal = parseInt(recordsTotal, 10); - settings._iRecordsDisplay = parseInt(recordsFiltered, 10); - - for ( var i=0, ien=data.length ; i<ien ; i++ ) { - _fnAddData( settings, data[i] ); - } - settings.aiDisplay = settings.aiDisplayMaster.slice(); - - settings.bAjaxDataGet = false; - _fnDraw( settings ); - - if ( ! settings._bInitComplete ) { - _fnInitComplete( settings, json ); - } - - settings.bAjaxDataGet = true; - _fnProcessingDisplay( settings, false ); - } - - - /** - * Get the data from the JSON data source to use for drawing a table. Using - * `_fnGetObjectDataFn` allows the data to be sourced from a property of the - * source object, or from a processing function. - * @param {object} oSettings dataTables settings object - * @param {object} json Data source object / array from the server - * @return {array} Array of data to use - */ - function _fnAjaxDataSrc ( oSettings, json ) - { - var dataSrc = $.isPlainObject( oSettings.ajax ) && oSettings.ajax.dataSrc !== undefined ? - oSettings.ajax.dataSrc : - oSettings.sAjaxDataProp; // Compatibility with 1.9-. - - // Compatibility with 1.9-. In order to read from aaData, check if the - // default has been changed, if not, check for aaData - if ( dataSrc === 'data' ) { - return json.aaData || json[dataSrc]; - } - - return dataSrc !== "" ? - _fnGetObjectDataFn( dataSrc )( json ) : - json; - } - - /** - * Generate the node required for filtering text - * @returns {node} Filter control element - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnFeatureHtmlFilter ( settings ) - { - var classes = settings.oClasses; - var tableId = settings.sTableId; - var language = settings.oLanguage; - var previousSearch = settings.oPreviousSearch; - var features = settings.aanFeatures; - var input = '<input type="search" class="'+classes.sFilterInput+'"/>'; - - var str = language.sSearch; - str = str.match(/_INPUT_/) ? - str.replace('_INPUT_', input) : - str+input; - - var filter = $('<div/>', { - 'id': ! features.f ? tableId+'_filter' : null, - 'class': classes.sFilter - } ) - .append( $('<label/>' ).append( str ) ); - - var searchFn = function() { - /* Update all other filter input elements for the new display */ - var n = features.f; - var val = !this.value ? "" : this.value; // mental IE8 fix :-( - - /* Now do the filter */ - if ( val != previousSearch.sSearch ) { - _fnFilterComplete( settings, { - "sSearch": val, - "bRegex": previousSearch.bRegex, - "bSmart": previousSearch.bSmart , - "bCaseInsensitive": previousSearch.bCaseInsensitive - } ); - - // Need to redraw, without resorting - settings._iDisplayStart = 0; - _fnDraw( settings ); - } - }; - - var searchDelay = settings.searchDelay !== null ? - settings.searchDelay : - _fnDataSource( settings ) === 'ssp' ? - 400 : - 0; - - var jqFilter = $('input', filter) - .val( previousSearch.sSearch ) - .attr( 'placeholder', language.sSearchPlaceholder ) - .bind( - 'keyup.DT search.DT input.DT paste.DT cut.DT', - searchDelay ? - _fnThrottle( searchFn, searchDelay ) : - searchFn - ) - .bind( 'keypress.DT', function(e) { - /* Prevent form submission */ - if ( e.keyCode == 13 ) { - return false; - } - } ) - .attr('aria-controls', tableId); - - // Update the input elements whenever the table is filtered - $(settings.nTable).on( 'search.dt.DT', function ( ev, s ) { - if ( settings === s ) { - // IE9 throws an 'unknown error' if document.activeElement is used - // inside an iframe or frame... - try { - if ( jqFilter[0] !== document.activeElement ) { - jqFilter.val( previousSearch.sSearch ); - } - } - catch ( e ) {} - } - } ); - - return filter[0]; - } - - - /** - * Filter the table using both the global filter and column based filtering - * @param {object} oSettings dataTables settings object - * @param {object} oSearch search information - * @param {int} [iForce] force a research of the master array (1) or not (undefined or 0) - * @memberof DataTable#oApi - */ - function _fnFilterComplete ( oSettings, oInput, iForce ) - { - var oPrevSearch = oSettings.oPreviousSearch; - var aoPrevSearch = oSettings.aoPreSearchCols; - var fnSaveFilter = function ( oFilter ) { - /* Save the filtering values */ - oPrevSearch.sSearch = oFilter.sSearch; - oPrevSearch.bRegex = oFilter.bRegex; - oPrevSearch.bSmart = oFilter.bSmart; - oPrevSearch.bCaseInsensitive = oFilter.bCaseInsensitive; - }; - var fnRegex = function ( o ) { - // Backwards compatibility with the bEscapeRegex option - return o.bEscapeRegex !== undefined ? !o.bEscapeRegex : o.bRegex; - }; - - // Resolve any column types that are unknown due to addition or invalidation - // @todo As per sort - can this be moved into an event handler? - _fnColumnTypes( oSettings ); - - /* In server-side processing all filtering is done by the server, so no point hanging around here */ - if ( _fnDataSource( oSettings ) != 'ssp' ) - { - /* Global filter */ - _fnFilter( oSettings, oInput.sSearch, iForce, fnRegex(oInput), oInput.bSmart, oInput.bCaseInsensitive ); - fnSaveFilter( oInput ); - - /* Now do the individual column filter */ - for ( var i=0 ; i<aoPrevSearch.length ; i++ ) - { - _fnFilterColumn( oSettings, aoPrevSearch[i].sSearch, i, fnRegex(aoPrevSearch[i]), - aoPrevSearch[i].bSmart, aoPrevSearch[i].bCaseInsensitive ); - } - - /* Custom filtering */ - _fnFilterCustom( oSettings ); - } - else - { - fnSaveFilter( oInput ); - } - - /* Tell the draw function we have been filtering */ - oSettings.bFiltered = true; - _fnCallbackFire( oSettings, null, 'search', [oSettings] ); - } - - - /** - * Apply custom filtering functions - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnFilterCustom( settings ) - { - var filters = DataTable.ext.search; - var displayRows = settings.aiDisplay; - var row, rowIdx; - - for ( var i=0, ien=filters.length ; i<ien ; i++ ) { - var rows = []; - - // Loop over each row and see if it should be included - for ( var j=0, jen=displayRows.length ; j<jen ; j++ ) { - rowIdx = displayRows[ j ]; - row = settings.aoData[ rowIdx ]; - - if ( filters[i]( settings, row._aFilterData, rowIdx, row._aData, j ) ) { - rows.push( rowIdx ); - } - } - - // So the array reference doesn't break set the results into the - // existing array - displayRows.length = 0; - displayRows.push.apply( displayRows, rows ); - } - } - - - /** - * Filter the table on a per-column basis - * @param {object} oSettings dataTables settings object - * @param {string} sInput string to filter on - * @param {int} iColumn column to filter - * @param {bool} bRegex treat search string as a regular expression or not - * @param {bool} bSmart use smart filtering or not - * @param {bool} bCaseInsensitive Do case insenstive matching or not - * @memberof DataTable#oApi - */ - function _fnFilterColumn ( settings, searchStr, colIdx, regex, smart, caseInsensitive ) - { - if ( searchStr === '' ) { - return; - } - - var data; - var display = settings.aiDisplay; - var rpSearch = _fnFilterCreateSearch( searchStr, regex, smart, caseInsensitive ); - - for ( var i=display.length-1 ; i>=0 ; i-- ) { - data = settings.aoData[ display[i] ]._aFilterData[ colIdx ]; - - if ( ! rpSearch.test( data ) ) { - display.splice( i, 1 ); - } - } - } - - - /** - * Filter the data table based on user input and draw the table - * @param {object} settings dataTables settings object - * @param {string} input string to filter on - * @param {int} force optional - force a research of the master array (1) or not (undefined or 0) - * @param {bool} regex treat as a regular expression or not - * @param {bool} smart perform smart filtering or not - * @param {bool} caseInsensitive Do case insenstive matching or not - * @memberof DataTable#oApi - */ - function _fnFilter( settings, input, force, regex, smart, caseInsensitive ) - { - var rpSearch = _fnFilterCreateSearch( input, regex, smart, caseInsensitive ); - var prevSearch = settings.oPreviousSearch.sSearch; - var displayMaster = settings.aiDisplayMaster; - var display, invalidated, i; - - // Need to take account of custom filtering functions - always filter - if ( DataTable.ext.search.length !== 0 ) { - force = true; - } - - // Check if any of the rows were invalidated - invalidated = _fnFilterData( settings ); - - // If the input is blank - we just want the full data set - if ( input.length <= 0 ) { - settings.aiDisplay = displayMaster.slice(); - } - else { - // New search - start from the master array - if ( invalidated || - force || - prevSearch.length > input.length || - input.indexOf(prevSearch) !== 0 || - settings.bSorted // On resort, the display master needs to be - // re-filtered since indexes will have changed - ) { - settings.aiDisplay = displayMaster.slice(); - } - - // Search the display array - display = settings.aiDisplay; - - for ( i=display.length-1 ; i>=0 ; i-- ) { - if ( ! rpSearch.test( settings.aoData[ display[i] ]._sFilterRow ) ) { - display.splice( i, 1 ); - } - } - } - } - - - /** - * Build a regular expression object suitable for searching a table - * @param {string} sSearch string to search for - * @param {bool} bRegex treat as a regular expression or not - * @param {bool} bSmart perform smart filtering or not - * @param {bool} bCaseInsensitive Do case insensitive matching or not - * @returns {RegExp} constructed object - * @memberof DataTable#oApi - */ - function _fnFilterCreateSearch( search, regex, smart, caseInsensitive ) - { - search = regex ? - search : - _fnEscapeRegex( search ); - - if ( smart ) { - /* For smart filtering we want to allow the search to work regardless of - * word order. We also want double quoted text to be preserved, so word - * order is important - a la google. So this is what we want to - * generate: - * - * ^(?=.*?\bone\b)(?=.*?\btwo three\b)(?=.*?\bfour\b).*$ - */ - var a = $.map( search.match( /"[^"]+"|[^ ]+/g ) || [''], function ( word ) { - if ( word.charAt(0) === '"' ) { - var m = word.match( /^"(.*)"$/ ); - word = m ? m[1] : word; - } - - return word.replace('"', ''); - } ); - - search = '^(?=.*?'+a.join( ')(?=.*?' )+').*$'; - } - - return new RegExp( search, caseInsensitive ? 'i' : '' ); - } - - - /** - * Escape a string such that it can be used in a regular expression - * @param {string} sVal string to escape - * @returns {string} escaped string - * @memberof DataTable#oApi - */ - function _fnEscapeRegex ( sVal ) - { - return sVal.replace( _re_escape_regex, '\\$1' ); - } - - - - var __filter_div = $('<div>')[0]; - var __filter_div_textContent = __filter_div.textContent !== undefined; - - // Update the filtering data for each row if needed (by invalidation or first run) - function _fnFilterData ( settings ) - { - var columns = settings.aoColumns; - var column; - var i, j, ien, jen, filterData, cellData, row; - var fomatters = DataTable.ext.type.search; - var wasInvalidated = false; - - for ( i=0, ien=settings.aoData.length ; i<ien ; i++ ) { - row = settings.aoData[i]; - - if ( ! row._aFilterData ) { - filterData = []; - - for ( j=0, jen=columns.length ; j<jen ; j++ ) { - column = columns[j]; - - if ( column.bSearchable ) { - cellData = _fnGetCellData( settings, i, j, 'filter' ); - - if ( fomatters[ column.sType ] ) { - cellData = fomatters[ column.sType ]( cellData ); - } - - // Search in DataTables 1.10 is string based. In 1.11 this - // should be altered to also allow strict type checking. - if ( cellData === null ) { - cellData = ''; - } - - if ( typeof cellData !== 'string' && cellData.toString ) { - cellData = cellData.toString(); - } - } - else { - cellData = ''; - } - - // If it looks like there is an HTML entity in the string, - // attempt to decode it so sorting works as expected. Note that - // we could use a single line of jQuery to do this, but the DOM - // method used here is much faster http://jsperf.com/html-decode - if ( cellData.indexOf && cellData.indexOf('&') !== -1 ) { - __filter_div.innerHTML = cellData; - cellData = __filter_div_textContent ? - __filter_div.textContent : - __filter_div.innerText; - } - - if ( cellData.replace ) { - cellData = cellData.replace(/[\r\n]/g, ''); - } - - filterData.push( cellData ); - } - - row._aFilterData = filterData; - row._sFilterRow = filterData.join(' '); - wasInvalidated = true; - } - } - - return wasInvalidated; - } - - - /** - * Convert from the internal Hungarian notation to camelCase for external - * interaction - * @param {object} obj Object to convert - * @returns {object} Inverted object - * @memberof DataTable#oApi - */ - function _fnSearchToCamel ( obj ) - { - return { - search: obj.sSearch, - smart: obj.bSmart, - regex: obj.bRegex, - caseInsensitive: obj.bCaseInsensitive - }; - } - - - - /** - * Convert from camelCase notation to the internal Hungarian. We could use the - * Hungarian convert function here, but this is cleaner - * @param {object} obj Object to convert - * @returns {object} Inverted object - * @memberof DataTable#oApi - */ - function _fnSearchToHung ( obj ) - { - return { - sSearch: obj.search, - bSmart: obj.smart, - bRegex: obj.regex, - bCaseInsensitive: obj.caseInsensitive - }; - } - - /** - * Generate the node required for the info display - * @param {object} oSettings dataTables settings object - * @returns {node} Information element - * @memberof DataTable#oApi - */ - function _fnFeatureHtmlInfo ( settings ) - { - var - tid = settings.sTableId, - nodes = settings.aanFeatures.i, - n = $('<div/>', { - 'class': settings.oClasses.sInfo, - 'id': ! nodes ? tid+'_info' : null - } ); - - if ( ! nodes ) { - // Update display on each draw - settings.aoDrawCallback.push( { - "fn": _fnUpdateInfo, - "sName": "information" - } ); - - n - .attr( 'role', 'status' ) - .attr( 'aria-live', 'polite' ); - - // Table is described by our info div - $(settings.nTable).attr( 'aria-describedby', tid+'_info' ); - } - - return n[0]; - } - - - /** - * Update the information elements in the display - * @param {object} settings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnUpdateInfo ( settings ) - { - /* Show information about the table */ - var nodes = settings.aanFeatures.i; - if ( nodes.length === 0 ) { - return; - } - - var - lang = settings.oLanguage, - start = settings._iDisplayStart+1, - end = settings.fnDisplayEnd(), - max = settings.fnRecordsTotal(), - total = settings.fnRecordsDisplay(), - out = total ? - lang.sInfo : - lang.sInfoEmpty; - - if ( total !== max ) { - /* Record set after filtering */ - out += ' ' + lang.sInfoFiltered; - } - - // Convert the macros - out += lang.sInfoPostFix; - out = _fnInfoMacros( settings, out ); - - var callback = lang.fnInfoCallback; - if ( callback !== null ) { - out = callback.call( settings.oInstance, - settings, start, end, max, total, out - ); - } - - $(nodes).html( out ); - } - - - function _fnInfoMacros ( settings, str ) - { - // When infinite scrolling, we are always starting at 1. _iDisplayStart is used only - // internally - var - formatter = settings.fnFormatNumber, - start = settings._iDisplayStart+1, - len = settings._iDisplayLength, - vis = settings.fnRecordsDisplay(), - all = len === -1; - - return str. - replace(/_START_/g, formatter.call( settings, start ) ). - replace(/_END_/g, formatter.call( settings, settings.fnDisplayEnd() ) ). - replace(/_MAX_/g, formatter.call( settings, settings.fnRecordsTotal() ) ). - replace(/_TOTAL_/g, formatter.call( settings, vis ) ). - replace(/_PAGE_/g, formatter.call( settings, all ? 1 : Math.ceil( start / len ) ) ). - replace(/_PAGES_/g, formatter.call( settings, all ? 1 : Math.ceil( vis / len ) ) ); - } - - - - /** - * Draw the table for the first time, adding all required features - * @param {object} settings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnInitialise ( settings ) - { - var i, iLen, iAjaxStart=settings.iInitDisplayStart; - var columns = settings.aoColumns, column; - var features = settings.oFeatures; - - /* Ensure that the table data is fully initialised */ - if ( ! settings.bInitialised ) { - setTimeout( function(){ _fnInitialise( settings ); }, 200 ); - return; - } - - /* Show the display HTML options */ - _fnAddOptionsHtml( settings ); - - /* Build and draw the header / footer for the table */ - _fnBuildHead( settings ); - _fnDrawHead( settings, settings.aoHeader ); - _fnDrawHead( settings, settings.aoFooter ); - - /* Okay to show that something is going on now */ - _fnProcessingDisplay( settings, true ); - - /* Calculate sizes for columns */ - if ( features.bAutoWidth ) { - _fnCalculateColumnWidths( settings ); - } - - for ( i=0, iLen=columns.length ; i<iLen ; i++ ) { - column = columns[i]; - - if ( column.sWidth ) { - column.nTh.style.width = _fnStringToCss( column.sWidth ); - } - } - - // If there is default sorting required - let's do it. The sort function - // will do the drawing for us. Otherwise we draw the table regardless of the - // Ajax source - this allows the table to look initialised for Ajax sourcing - // data (show 'loading' message possibly) - _fnReDraw( settings ); - - // Server-side processing init complete is done by _fnAjaxUpdateDraw - var dataSrc = _fnDataSource( settings ); - if ( dataSrc != 'ssp' ) { - // if there is an ajax source load the data - if ( dataSrc == 'ajax' ) { - _fnBuildAjax( settings, [], function(json) { - var aData = _fnAjaxDataSrc( settings, json ); - - // Got the data - add it to the table - for ( i=0 ; i<aData.length ; i++ ) { - _fnAddData( settings, aData[i] ); - } - - // Reset the init display for cookie saving. We've already done - // a filter, and therefore cleared it before. So we need to make - // it appear 'fresh' - settings.iInitDisplayStart = iAjaxStart; - - _fnReDraw( settings ); - - _fnProcessingDisplay( settings, false ); - _fnInitComplete( settings, json ); - }, settings ); - } - else { - _fnProcessingDisplay( settings, false ); - _fnInitComplete( settings ); - } - } - } - - - /** - * Draw the table for the first time, adding all required features - * @param {object} oSettings dataTables settings object - * @param {object} [json] JSON from the server that completed the table, if using Ajax source - * with client-side processing (optional) - * @memberof DataTable#oApi - */ - function _fnInitComplete ( settings, json ) - { - settings._bInitComplete = true; - - // On an Ajax load we now have data and therefore want to apply the column - // sizing - if ( json ) { - _fnAdjustColumnSizing( settings ); - } - - _fnCallbackFire( settings, 'aoInitComplete', 'init', [settings, json] ); - } - - - function _fnLengthChange ( settings, val ) - { - var len = parseInt( val, 10 ); - settings._iDisplayLength = len; - - _fnLengthOverflow( settings ); - - // Fire length change event - _fnCallbackFire( settings, null, 'length', [settings, len] ); - } - - - /** - * Generate the node required for user display length changing - * @param {object} settings dataTables settings object - * @returns {node} Display length feature node - * @memberof DataTable#oApi - */ - function _fnFeatureHtmlLength ( settings ) - { - var - classes = settings.oClasses, - tableId = settings.sTableId, - menu = settings.aLengthMenu, - d2 = $.isArray( menu[0] ), - lengths = d2 ? menu[0] : menu, - language = d2 ? menu[1] : menu; - - var select = $('<select/>', { - 'name': tableId+'_length', - 'aria-controls': tableId, - 'class': classes.sLengthSelect - } ); - - for ( var i=0, ien=lengths.length ; i<ien ; i++ ) { - select[0][ i ] = new Option( language[i], lengths[i] ); - } - - var div = $('<div><label/></div>').addClass( classes.sLength ); - if ( ! settings.aanFeatures.l ) { - div[0].id = tableId+'_length'; - } - - div.children().append( - settings.oLanguage.sLengthMenu.replace( '_MENU_', select[0].outerHTML ) - ); - - // Can't use `select` variable as user might provide their own and the - // reference is broken by the use of outerHTML - $('select', div) - .val( settings._iDisplayLength ) - .bind( 'change.DT', function(e) { - _fnLengthChange( settings, $(this).val() ); - _fnDraw( settings ); - } ); - - // Update node value whenever anything changes the table's length - $(settings.nTable).bind( 'length.dt.DT', function (e, s, len) { - if ( settings === s ) { - $('select', div).val( len ); - } - } ); - - return div[0]; - } - - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Note that most of the paging logic is done in - * DataTable.ext.pager - */ - - /** - * Generate the node required for default pagination - * @param {object} oSettings dataTables settings object - * @returns {node} Pagination feature node - * @memberof DataTable#oApi - */ - function _fnFeatureHtmlPaginate ( settings ) - { - var - type = settings.sPaginationType, - plugin = DataTable.ext.pager[ type ], - modern = typeof plugin === 'function', - redraw = function( settings ) { - _fnDraw( settings ); - }, - node = $('<div/>').addClass( settings.oClasses.sPaging + type )[0], - features = settings.aanFeatures; - - if ( ! modern ) { - plugin.fnInit( settings, node, redraw ); - } - - /* Add a draw callback for the pagination on first instance, to update the paging display */ - if ( ! features.p ) - { - node.id = settings.sTableId+'_paginate'; - - settings.aoDrawCallback.push( { - "fn": function( settings ) { - if ( modern ) { - var - start = settings._iDisplayStart, - len = settings._iDisplayLength, - visRecords = settings.fnRecordsDisplay(), - all = len === -1, - page = all ? 0 : Math.ceil( start / len ), - pages = all ? 1 : Math.ceil( visRecords / len ), - buttons = plugin(page, pages), - i, ien; - - for ( i=0, ien=features.p.length ; i<ien ; i++ ) { - _fnRenderer( settings, 'pageButton' )( - settings, features.p[i], i, buttons, page, pages - ); - } - } - else { - plugin.fnUpdate( settings, redraw ); - } - }, - "sName": "pagination" - } ); - } - - return node; - } - - - /** - * Alter the display settings to change the page - * @param {object} settings DataTables settings object - * @param {string|int} action Paging action to take: "first", "previous", - * "next" or "last" or page number to jump to (integer) - * @param [bool] redraw Automatically draw the update or not - * @returns {bool} true page has changed, false - no change - * @memberof DataTable#oApi - */ - function _fnPageChange ( settings, action, redraw ) - { - var - start = settings._iDisplayStart, - len = settings._iDisplayLength, - records = settings.fnRecordsDisplay(); - - if ( records === 0 || len === -1 ) - { - start = 0; - } - else if ( typeof action === "number" ) - { - start = action * len; - - if ( start > records ) - { - start = 0; - } - } - else if ( action == "first" ) - { - start = 0; - } - else if ( action == "previous" ) - { - start = len >= 0 ? - start - len : - 0; - - if ( start < 0 ) - { - start = 0; - } - } - else if ( action == "next" ) - { - if ( start + len < records ) - { - start += len; - } - } - else if ( action == "last" ) - { - start = Math.floor( (records-1) / len) * len; - } - else - { - _fnLog( settings, 0, "Unknown paging action: "+action, 5 ); - } - - var changed = settings._iDisplayStart !== start; - settings._iDisplayStart = start; - - if ( changed ) { - _fnCallbackFire( settings, null, 'page', [settings] ); - - if ( redraw ) { - _fnDraw( settings ); - } - } - - return changed; - } - - - - /** - * Generate the node required for the processing node - * @param {object} settings dataTables settings object - * @returns {node} Processing element - * @memberof DataTable#oApi - */ - function _fnFeatureHtmlProcessing ( settings ) - { - return $('<div/>', { - 'id': ! settings.aanFeatures.r ? settings.sTableId+'_processing' : null, - 'class': settings.oClasses.sProcessing - } ) - .html( settings.oLanguage.sProcessing ) - .insertBefore( settings.nTable )[0]; - } - - - /** - * Display or hide the processing indicator - * @param {object} settings dataTables settings object - * @param {bool} show Show the processing indicator (true) or not (false) - * @memberof DataTable#oApi - */ - function _fnProcessingDisplay ( settings, show ) - { - if ( settings.oFeatures.bProcessing ) { - $(settings.aanFeatures.r).css( 'display', show ? 'block' : 'none' ); - } - - _fnCallbackFire( settings, null, 'processing', [settings, show] ); - } - - /** - * Add any control elements for the table - specifically scrolling - * @param {object} settings dataTables settings object - * @returns {node} Node to add to the DOM - * @memberof DataTable#oApi - */ - function _fnFeatureHtmlTable ( settings ) - { - var table = $(settings.nTable); - - // Add the ARIA grid role to the table - table.attr( 'role', 'grid' ); - - // Scrolling from here on in - var scroll = settings.oScroll; - - if ( scroll.sX === '' && scroll.sY === '' ) { - return settings.nTable; - } - - var scrollX = scroll.sX; - var scrollY = scroll.sY; - var classes = settings.oClasses; - var caption = table.children('caption'); - var captionSide = caption.length ? caption[0]._captionSide : null; - var headerClone = $( table[0].cloneNode(false) ); - var footerClone = $( table[0].cloneNode(false) ); - var footer = table.children('tfoot'); - var _div = '<div/>'; - var size = function ( s ) { - return !s ? null : _fnStringToCss( s ); - }; - - // This is fairly messy, but with x scrolling enabled, if the table has a - // width attribute, regardless of any width applied using the column width - // options, the browser will shrink or grow the table as needed to fit into - // that 100%. That would make the width options useless. So we remove it. - // This is okay, under the assumption that width:100% is applied to the - // table in CSS (it is in the default stylesheet) which will set the table - // width as appropriate (the attribute and css behave differently...) - if ( scroll.sX && table.attr('width') === '100%' ) { - table.removeAttr('width'); - } - - if ( ! footer.length ) { - footer = null; - } - - /* - * The HTML structure that we want to generate in this function is: - * div - scroller - * div - scroll head - * div - scroll head inner - * table - scroll head table - * thead - thead - * div - scroll body - * table - table (master table) - * thead - thead clone for sizing - * tbody - tbody - * div - scroll foot - * div - scroll foot inner - * table - scroll foot table - * tfoot - tfoot - */ - var scroller = $( _div, { 'class': classes.sScrollWrapper } ) - .append( - $(_div, { 'class': classes.sScrollHead } ) - .css( { - overflow: 'hidden', - position: 'relative', - border: 0, - width: scrollX ? size(scrollX) : '100%' - } ) - .append( - $(_div, { 'class': classes.sScrollHeadInner } ) - .css( { - 'box-sizing': 'content-box', - width: scroll.sXInner || '100%' - } ) - .append( - headerClone - .removeAttr('id') - .css( 'margin-left', 0 ) - .append( captionSide === 'top' ? caption : null ) - .append( - table.children('thead') - ) - ) - ) - ) - .append( - $(_div, { 'class': classes.sScrollBody } ) - .css( { - overflow: 'auto', - height: size( scrollY ), - width: size( scrollX ) - } ) - .append( table ) - ); - - if ( footer ) { - scroller.append( - $(_div, { 'class': classes.sScrollFoot } ) - .css( { - overflow: 'hidden', - border: 0, - width: scrollX ? size(scrollX) : '100%' - } ) - .append( - $(_div, { 'class': classes.sScrollFootInner } ) - .append( - footerClone - .removeAttr('id') - .css( 'margin-left', 0 ) - .append( captionSide === 'bottom' ? caption : null ) - .append( - table.children('tfoot') - ) - ) - ) - ); - } - - var children = scroller.children(); - var scrollHead = children[0]; - var scrollBody = children[1]; - var scrollFoot = footer ? children[2] : null; - - // When the body is scrolled, then we also want to scroll the headers - if ( scrollX ) { - $(scrollBody).on( 'scroll.DT', function (e) { - var scrollLeft = this.scrollLeft; - - scrollHead.scrollLeft = scrollLeft; - - if ( footer ) { - scrollFoot.scrollLeft = scrollLeft; - } - } ); - } - - settings.nScrollHead = scrollHead; - settings.nScrollBody = scrollBody; - settings.nScrollFoot = scrollFoot; - - // On redraw - align columns - settings.aoDrawCallback.push( { - "fn": _fnScrollDraw, - "sName": "scrolling" - } ); - - return scroller[0]; - } - - - - /** - * Update the header, footer and body tables for resizing - i.e. column - * alignment. - * - * Welcome to the most horrible function DataTables. The process that this - * function follows is basically: - * 1. Re-create the table inside the scrolling div - * 2. Take live measurements from the DOM - * 3. Apply the measurements to align the columns - * 4. Clean up - * - * @param {object} settings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnScrollDraw ( settings ) - { - // Given that this is such a monster function, a lot of variables are use - // to try and keep the minimised size as small as possible - var - scroll = settings.oScroll, - scrollX = scroll.sX, - scrollXInner = scroll.sXInner, - scrollY = scroll.sY, - barWidth = scroll.iBarWidth, - divHeader = $(settings.nScrollHead), - divHeaderStyle = divHeader[0].style, - divHeaderInner = divHeader.children('div'), - divHeaderInnerStyle = divHeaderInner[0].style, - divHeaderTable = divHeaderInner.children('table'), - divBodyEl = settings.nScrollBody, - divBody = $(divBodyEl), - divBodyStyle = divBodyEl.style, - divFooter = $(settings.nScrollFoot), - divFooterInner = divFooter.children('div'), - divFooterTable = divFooterInner.children('table'), - header = $(settings.nTHead), - table = $(settings.nTable), - tableEl = table[0], - tableStyle = tableEl.style, - footer = settings.nTFoot ? $(settings.nTFoot) : null, - browser = settings.oBrowser, - ie67 = browser.bScrollOversize, - headerTrgEls, footerTrgEls, - headerSrcEls, footerSrcEls, - headerCopy, footerCopy, - headerWidths=[], footerWidths=[], - headerContent=[], - idx, correction, sanityWidth, - zeroOut = function(nSizer) { - var style = nSizer.style; - style.paddingTop = "0"; - style.paddingBottom = "0"; - style.borderTopWidth = "0"; - style.borderBottomWidth = "0"; - style.height = 0; - }; - - /* - * 1. Re-create the table inside the scrolling div - */ - - // Remove the old minimised thead and tfoot elements in the inner table - table.children('thead, tfoot').remove(); - - // Clone the current header and footer elements and then place it into the inner table - headerCopy = header.clone().prependTo( table ); - headerTrgEls = header.find('tr'); // original header is in its own table - headerSrcEls = headerCopy.find('tr'); - headerCopy.find('th, td').removeAttr('tabindex'); - - if ( footer ) { - footerCopy = footer.clone().prependTo( table ); - footerTrgEls = footer.find('tr'); // the original tfoot is in its own table and must be sized - footerSrcEls = footerCopy.find('tr'); - } - - - /* - * 2. Take live measurements from the DOM - do not alter the DOM itself! - */ - - // Remove old sizing and apply the calculated column widths - // Get the unique column headers in the newly created (cloned) header. We want to apply the - // calculated sizes to this header - if ( ! scrollX ) - { - divBodyStyle.width = '100%'; - divHeader[0].style.width = '100%'; - } - - $.each( _fnGetUniqueThs( settings, headerCopy ), function ( i, el ) { - idx = _fnVisibleToColumnIndex( settings, i ); - el.style.width = settings.aoColumns[idx].sWidth; - } ); - - if ( footer ) { - _fnApplyToChildren( function(n) { - n.style.width = ""; - }, footerSrcEls ); - } - - // If scroll collapse is enabled, when we put the headers back into the body for sizing, we - // will end up forcing the scrollbar to appear, making our measurements wrong for when we - // then hide it (end of this function), so add the header height to the body scroller. - if ( scroll.bCollapse && scrollY !== "" ) { - divBodyStyle.height = (divBody[0].offsetHeight + header[0].offsetHeight)+"px"; - } - - // Size the table as a whole - sanityWidth = table.outerWidth(); - if ( scrollX === "" ) { - // No x scrolling - tableStyle.width = "100%"; - - // IE7 will make the width of the table when 100% include the scrollbar - // - which is shouldn't. When there is a scrollbar we need to take this - // into account. - if ( ie67 && (table.find('tbody').height() > divBodyEl.offsetHeight || - divBody.css('overflow-y') == "scroll") - ) { - tableStyle.width = _fnStringToCss( table.outerWidth() - barWidth); - } - } - else - { - // x scrolling - if ( scrollXInner !== "" ) { - // x scroll inner has been given - use it - tableStyle.width = _fnStringToCss(scrollXInner); - } - else if ( sanityWidth == divBody.width() && divBody.height() < table.height() ) { - // There is y-scrolling - try to take account of the y scroll bar - tableStyle.width = _fnStringToCss( sanityWidth-barWidth ); - if ( table.outerWidth() > sanityWidth-barWidth ) { - // Not possible to take account of it - tableStyle.width = _fnStringToCss( sanityWidth ); - } - } - else { - // When all else fails - tableStyle.width = _fnStringToCss( sanityWidth ); - } - } - - // Recalculate the sanity width - now that we've applied the required width, - // before it was a temporary variable. This is required because the column - // width calculation is done before this table DOM is created. - sanityWidth = table.outerWidth(); - - // Hidden header should have zero height, so remove padding and borders. Then - // set the width based on the real headers - - // Apply all styles in one pass - _fnApplyToChildren( zeroOut, headerSrcEls ); - - // Read all widths in next pass - _fnApplyToChildren( function(nSizer) { - headerContent.push( nSizer.innerHTML ); - headerWidths.push( _fnStringToCss( $(nSizer).css('width') ) ); - }, headerSrcEls ); - - // Apply all widths in final pass - _fnApplyToChildren( function(nToSize, i) { - nToSize.style.width = headerWidths[i]; - }, headerTrgEls ); - - $(headerSrcEls).height(0); - - /* Same again with the footer if we have one */ - if ( footer ) - { - _fnApplyToChildren( zeroOut, footerSrcEls ); - - _fnApplyToChildren( function(nSizer) { - footerWidths.push( _fnStringToCss( $(nSizer).css('width') ) ); - }, footerSrcEls ); - - _fnApplyToChildren( function(nToSize, i) { - nToSize.style.width = footerWidths[i]; - }, footerTrgEls ); - - $(footerSrcEls).height(0); - } - - - /* - * 3. Apply the measurements - */ - - // "Hide" the header and footer that we used for the sizing. We need to keep - // the content of the cell so that the width applied to the header and body - // both match, but we want to hide it completely. We want to also fix their - // width to what they currently are - _fnApplyToChildren( function(nSizer, i) { - nSizer.innerHTML = '<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+headerContent[i]+'</div>'; - nSizer.style.width = headerWidths[i]; - }, headerSrcEls ); - - if ( footer ) - { - _fnApplyToChildren( function(nSizer, i) { - nSizer.innerHTML = ""; - nSizer.style.width = footerWidths[i]; - }, footerSrcEls ); - } - - // Sanity check that the table is of a sensible width. If not then we are going to get - // misalignment - try to prevent this by not allowing the table to shrink below its min width - if ( table.outerWidth() < sanityWidth ) - { - // The min width depends upon if we have a vertical scrollbar visible or not */ - correction = ((divBodyEl.scrollHeight > divBodyEl.offsetHeight || - divBody.css('overflow-y') == "scroll")) ? - sanityWidth+barWidth : - sanityWidth; - - // IE6/7 are a law unto themselves... - if ( ie67 && (divBodyEl.scrollHeight > - divBodyEl.offsetHeight || divBody.css('overflow-y') == "scroll") - ) { - tableStyle.width = _fnStringToCss( correction-barWidth ); - } - - // And give the user a warning that we've stopped the table getting too small - if ( scrollX === "" || scrollXInner !== "" ) { - _fnLog( settings, 1, 'Possible column misalignment', 6 ); - } - } - else - { - correction = '100%'; - } - - // Apply to the container elements - divBodyStyle.width = _fnStringToCss( correction ); - divHeaderStyle.width = _fnStringToCss( correction ); - - if ( footer ) { - settings.nScrollFoot.style.width = _fnStringToCss( correction ); - } - - - /* - * 4. Clean up - */ - if ( ! scrollY ) { - /* IE7< puts a vertical scrollbar in place (when it shouldn't be) due to subtracting - * the scrollbar height from the visible display, rather than adding it on. We need to - * set the height in order to sort this. Don't want to do it in any other browsers. - */ - if ( ie67 ) { - divBodyStyle.height = _fnStringToCss( tableEl.offsetHeight+barWidth ); - } - } - - if ( scrollY && scroll.bCollapse ) { - divBodyStyle.height = _fnStringToCss( scrollY ); - - var iExtra = (scrollX && tableEl.offsetWidth > divBodyEl.offsetWidth) ? - barWidth : - 0; - - if ( tableEl.offsetHeight < divBodyEl.offsetHeight ) { - divBodyStyle.height = _fnStringToCss( tableEl.offsetHeight+iExtra ); - } - } - - /* Finally set the width's of the header and footer tables */ - var iOuterWidth = table.outerWidth(); - divHeaderTable[0].style.width = _fnStringToCss( iOuterWidth ); - divHeaderInnerStyle.width = _fnStringToCss( iOuterWidth ); - - // Figure out if there are scrollbar present - if so then we need a the header and footer to - // provide a bit more space to allow "overflow" scrolling (i.e. past the scrollbar) - var bScrolling = table.height() > divBodyEl.clientHeight || divBody.css('overflow-y') == "scroll"; - var padding = 'padding' + (browser.bScrollbarLeft ? 'Left' : 'Right' ); - divHeaderInnerStyle[ padding ] = bScrolling ? barWidth+"px" : "0px"; - - if ( footer ) { - divFooterTable[0].style.width = _fnStringToCss( iOuterWidth ); - divFooterInner[0].style.width = _fnStringToCss( iOuterWidth ); - divFooterInner[0].style[padding] = bScrolling ? barWidth+"px" : "0px"; - } - - /* Adjust the position of the header in case we loose the y-scrollbar */ - divBody.scroll(); - - // If sorting or filtering has occurred, jump the scrolling back to the top - // only if we aren't holding the position - if ( (settings.bSorted || settings.bFiltered) && ! settings._drawHold ) { - divBodyEl.scrollTop = 0; - } - } - - - - /** - * Apply a given function to the display child nodes of an element array (typically - * TD children of TR rows - * @param {function} fn Method to apply to the objects - * @param array {nodes} an1 List of elements to look through for display children - * @param array {nodes} an2 Another list (identical structure to the first) - optional - * @memberof DataTable#oApi - */ - function _fnApplyToChildren( fn, an1, an2 ) - { - var index=0, i=0, iLen=an1.length; - var nNode1, nNode2; - - while ( i < iLen ) { - nNode1 = an1[i].firstChild; - nNode2 = an2 ? an2[i].firstChild : null; - - while ( nNode1 ) { - if ( nNode1.nodeType === 1 ) { - if ( an2 ) { - fn( nNode1, nNode2, index ); - } - else { - fn( nNode1, index ); - } - - index++; - } - - nNode1 = nNode1.nextSibling; - nNode2 = an2 ? nNode2.nextSibling : null; - } - - i++; - } - } - - - - var __re_html_remove = /<.*?>/g; - - - /** - * Calculate the width of columns for the table - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnCalculateColumnWidths ( oSettings ) - { - var - table = oSettings.nTable, - columns = oSettings.aoColumns, - scroll = oSettings.oScroll, - scrollY = scroll.sY, - scrollX = scroll.sX, - scrollXInner = scroll.sXInner, - columnCount = columns.length, - visibleColumns = _fnGetColumns( oSettings, 'bVisible' ), - headerCells = $('th', oSettings.nTHead), - tableWidthAttr = table.getAttribute('width'), // from DOM element - tableContainer = table.parentNode, - userInputs = false, - i, column, columnIdx, width, outerWidth; - - var styleWidth = table.style.width; - if ( styleWidth && styleWidth.indexOf('%') !== -1 ) { - tableWidthAttr = styleWidth; - } - - /* Convert any user input sizes into pixel sizes */ - for ( i=0 ; i<visibleColumns.length ; i++ ) { - column = columns[ visibleColumns[i] ]; - - if ( column.sWidth !== null ) { - column.sWidth = _fnConvertToWidth( column.sWidthOrig, tableContainer ); - - userInputs = true; - } - } - - /* If the number of columns in the DOM equals the number that we have to - * process in DataTables, then we can use the offsets that are created by - * the web- browser. No custom sizes can be set in order for this to happen, - * nor scrolling used - */ - if ( ! userInputs && ! scrollX && ! scrollY && - columnCount == _fnVisbleColumns( oSettings ) && - columnCount == headerCells.length - ) { - for ( i=0 ; i<columnCount ; i++ ) { - columns[i].sWidth = _fnStringToCss( headerCells.eq(i).width() ); - } - } - else - { - // Otherwise construct a single row, worst case, table with the widest - // node in the data, assign any user defined widths, then insert it into - // the DOM and allow the browser to do all the hard work of calculating - // table widths - var tmpTable = $(table).clone() // don't use cloneNode - IE8 will remove events on the main table - .css( 'visibility', 'hidden' ) - .removeAttr( 'id' ); - - // Clean up the table body - tmpTable.find('tbody tr').remove(); - var tr = $('<tr/>').appendTo( tmpTable.find('tbody') ); - - // Remove any assigned widths from the footer (from scrolling) - tmpTable.find('tfoot th, tfoot td').css('width', ''); - - // Apply custom sizing to the cloned header - headerCells = _fnGetUniqueThs( oSettings, tmpTable.find('thead')[0] ); - - for ( i=0 ; i<visibleColumns.length ; i++ ) { - column = columns[ visibleColumns[i] ]; - - headerCells[i].style.width = column.sWidthOrig !== null && column.sWidthOrig !== '' ? - _fnStringToCss( column.sWidthOrig ) : - ''; - } - - // Find the widest cell for each column and put it into the table - if ( oSettings.aoData.length ) { - for ( i=0 ; i<visibleColumns.length ; i++ ) { - columnIdx = visibleColumns[i]; - column = columns[ columnIdx ]; - - $( _fnGetWidestNode( oSettings, columnIdx ) ) - .clone( false ) - .append( column.sContentPadding ) - .appendTo( tr ); - } - } - - // Table has been built, attach to the document so we can work with it - tmpTable.appendTo( tableContainer ); - - // When scrolling (X or Y) we want to set the width of the table as - // appropriate. However, when not scrolling leave the table width as it - // is. This results in slightly different, but I think correct behaviour - if ( scrollX && scrollXInner ) { - tmpTable.width( scrollXInner ); - } - else if ( scrollX ) { - tmpTable.css( 'width', 'auto' ); - - if ( tmpTable.width() < tableContainer.offsetWidth ) { - tmpTable.width( tableContainer.offsetWidth ); - } - } - else if ( scrollY ) { - tmpTable.width( tableContainer.offsetWidth ); - } - else if ( tableWidthAttr ) { - tmpTable.width( tableWidthAttr ); - } - - // Take into account the y scrollbar - _fnScrollingWidthAdjust( oSettings, tmpTable[0] ); - - // Browsers need a bit of a hand when a width is assigned to any columns - // when x-scrolling as they tend to collapse the table to the min-width, - // even if we sent the column widths. So we need to keep track of what - // the table width should be by summing the user given values, and the - // automatic values - if ( scrollX ) - { - var total = 0; - - for ( i=0 ; i<visibleColumns.length ; i++ ) { - column = columns[ visibleColumns[i] ]; - outerWidth = $(headerCells[i]).outerWidth(); - - total += column.sWidthOrig === null ? - outerWidth : - parseInt( column.sWidth, 10 ) + outerWidth - $(headerCells[i]).width(); - } - - tmpTable.width( _fnStringToCss( total ) ); - table.style.width = _fnStringToCss( total ); - } - - // Get the width of each column in the constructed table - for ( i=0 ; i<visibleColumns.length ; i++ ) { - column = columns[ visibleColumns[i] ]; - width = $(headerCells[i]).width(); - - if ( width ) { - column.sWidth = _fnStringToCss( width ); - } - } - - table.style.width = _fnStringToCss( tmpTable.css('width') ); - - // Finished with the table - ditch it - tmpTable.remove(); - } - - // If there is a width attr, we want to attach an event listener which - // allows the table sizing to automatically adjust when the window is - // resized. Use the width attr rather than CSS, since we can't know if the - // CSS is a relative value or absolute - DOM read is always px. - if ( tableWidthAttr ) { - table.style.width = _fnStringToCss( tableWidthAttr ); - } - - if ( (tableWidthAttr || scrollX) && ! oSettings._reszEvt ) { - var bindResize = function () { - $(window).bind('resize.DT-'+oSettings.sInstance, _fnThrottle( function () { - _fnAdjustColumnSizing( oSettings ); - } ) ); - }; - - // IE6/7 will crash if we bind a resize event handler on page load. - // To be removed in 1.11 which drops IE6/7 support - if ( oSettings.oBrowser.bScrollOversize ) { - setTimeout( bindResize, 1000 ); - } - else { - bindResize(); - } - - oSettings._reszEvt = true; - } - } - - - /** - * Throttle the calls to a function. Arguments and context are maintained for - * the throttled function - * @param {function} fn Function to be called - * @param {int} [freq=200] call frequency in mS - * @returns {function} wrapped function - * @memberof DataTable#oApi - */ - function _fnThrottle( fn, freq ) { - var - frequency = freq !== undefined ? freq : 200, - last, - timer; - - return function () { - var - that = this, - now = +new Date(), - args = arguments; - - if ( last && now < last + frequency ) { - clearTimeout( timer ); - - timer = setTimeout( function () { - last = undefined; - fn.apply( that, args ); - }, frequency ); - } - else { - last = now; - fn.apply( that, args ); - } - }; - } - - - /** - * Convert a CSS unit width to pixels (e.g. 2em) - * @param {string} width width to be converted - * @param {node} parent parent to get the with for (required for relative widths) - optional - * @returns {int} width in pixels - * @memberof DataTable#oApi - */ - function _fnConvertToWidth ( width, parent ) - { - if ( ! width ) { - return 0; - } - - var n = $('<div/>') - .css( 'width', _fnStringToCss( width ) ) - .appendTo( parent || document.body ); - - var val = n[0].offsetWidth; - n.remove(); - - return val; - } - - - /** - * Adjust a table's width to take account of vertical scroll bar - * @param {object} oSettings dataTables settings object - * @param {node} n table node - * @memberof DataTable#oApi - */ - - function _fnScrollingWidthAdjust ( settings, n ) - { - var scroll = settings.oScroll; - - if ( scroll.sX || scroll.sY ) { - // When y-scrolling only, we want to remove the width of the scroll bar - // so the table + scroll bar will fit into the area available, otherwise - // we fix the table at its current size with no adjustment - var correction = ! scroll.sX ? scroll.iBarWidth : 0; - n.style.width = _fnStringToCss( $(n).outerWidth() - correction ); - } - } - - - /** - * Get the widest node - * @param {object} settings dataTables settings object - * @param {int} colIdx column of interest - * @returns {node} widest table node - * @memberof DataTable#oApi - */ - function _fnGetWidestNode( settings, colIdx ) - { - var idx = _fnGetMaxLenString( settings, colIdx ); - if ( idx < 0 ) { - return null; - } - - var data = settings.aoData[ idx ]; - return ! data.nTr ? // Might not have been created when deferred rendering - $('<td/>').html( _fnGetCellData( settings, idx, colIdx, 'display' ) )[0] : - data.anCells[ colIdx ]; - } - - - /** - * Get the maximum strlen for each data column - * @param {object} settings dataTables settings object - * @param {int} colIdx column of interest - * @returns {string} max string length for each column - * @memberof DataTable#oApi - */ - function _fnGetMaxLenString( settings, colIdx ) - { - var s, max=-1, maxIdx = -1; - - for ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) { - s = _fnGetCellData( settings, i, colIdx, 'display' )+''; - s = s.replace( __re_html_remove, '' ); - - if ( s.length > max ) { - max = s.length; - maxIdx = i; - } - } - - return maxIdx; - } - - - /** - * Append a CSS unit (only if required) to a string - * @param {string} value to css-ify - * @returns {string} value with css unit - * @memberof DataTable#oApi - */ - function _fnStringToCss( s ) - { - if ( s === null ) { - return '0px'; - } - - if ( typeof s == 'number' ) { - return s < 0 ? - '0px' : - s+'px'; - } - - // Check it has a unit character already - return s.match(/\d$/) ? - s+'px' : - s; - } - - - /** - * Get the width of a scroll bar in this browser being used - * @returns {int} width in pixels - * @memberof DataTable#oApi - */ - function _fnScrollBarWidth () - { - // On first run a static variable is set, since this is only needed once. - // Subsequent runs will just use the previously calculated value - var width = DataTable.__scrollbarWidth; - - if ( width === undefined ) { - var sizer = $('<p/>').css( { - position: 'absolute', - top: 0, - left: 0, - width: '100%', - height: 150, - padding: 0, - overflow: 'scroll', - visibility: 'hidden' - } ) - .appendTo('body'); - - width = sizer[0].offsetWidth - sizer[0].clientWidth; - DataTable.__scrollbarWidth = width; - - sizer.remove(); - } - - return width; - } - - - - function _fnSortFlatten ( settings ) - { - var - i, iLen, k, kLen, - aSort = [], - aiOrig = [], - aoColumns = settings.aoColumns, - aDataSort, iCol, sType, srcCol, - fixed = settings.aaSortingFixed, - fixedObj = $.isPlainObject( fixed ), - nestedSort = [], - add = function ( a ) { - if ( a.length && ! $.isArray( a[0] ) ) { - // 1D array - nestedSort.push( a ); - } - else { - // 2D array - nestedSort.push.apply( nestedSort, a ); - } - }; - - // Build the sort array, with pre-fix and post-fix options if they have been - // specified - if ( $.isArray( fixed ) ) { - add( fixed ); - } - - if ( fixedObj && fixed.pre ) { - add( fixed.pre ); - } - - add( settings.aaSorting ); - - if (fixedObj && fixed.post ) { - add( fixed.post ); - } - - for ( i=0 ; i<nestedSort.length ; i++ ) - { - srcCol = nestedSort[i][0]; - aDataSort = aoColumns[ srcCol ].aDataSort; - - for ( k=0, kLen=aDataSort.length ; k<kLen ; k++ ) - { - iCol = aDataSort[k]; - sType = aoColumns[ iCol ].sType || 'string'; - - if ( nestedSort[i]._idx === undefined ) { - nestedSort[i]._idx = $.inArray( nestedSort[i][1], aoColumns[iCol].asSorting ); - } - - aSort.push( { - src: srcCol, - col: iCol, - dir: nestedSort[i][1], - index: nestedSort[i]._idx, - type: sType, - formatter: DataTable.ext.type.order[ sType+"-pre" ] - } ); - } - } - - return aSort; - } - - /** - * Change the order of the table - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - * @todo This really needs split up! - */ - function _fnSort ( oSettings ) - { - var - i, ien, iLen, j, jLen, k, kLen, - sDataType, nTh, - aiOrig = [], - oExtSort = DataTable.ext.type.order, - aoData = oSettings.aoData, - aoColumns = oSettings.aoColumns, - aDataSort, data, iCol, sType, oSort, - formatters = 0, - sortCol, - displayMaster = oSettings.aiDisplayMaster, - aSort; - - // Resolve any column types that are unknown due to addition or invalidation - // @todo Can this be moved into a 'data-ready' handler which is called when - // data is going to be used in the table? - _fnColumnTypes( oSettings ); - - aSort = _fnSortFlatten( oSettings ); - - for ( i=0, ien=aSort.length ; i<ien ; i++ ) { - sortCol = aSort[i]; - - // Track if we can use the fast sort algorithm - if ( sortCol.formatter ) { - formatters++; - } - - // Load the data needed for the sort, for each cell - _fnSortData( oSettings, sortCol.col ); - } - - /* No sorting required if server-side or no sorting array */ - if ( _fnDataSource( oSettings ) != 'ssp' && aSort.length !== 0 ) - { - // Create a value - key array of the current row positions such that we can use their - // current position during the sort, if values match, in order to perform stable sorting - for ( i=0, iLen=displayMaster.length ; i<iLen ; i++ ) { - aiOrig[ displayMaster[i] ] = i; - } - - /* Do the sort - here we want multi-column sorting based on a given data source (column) - * and sorting function (from oSort) in a certain direction. It's reasonably complex to - * follow on it's own, but this is what we want (example two column sorting): - * fnLocalSorting = function(a,b){ - * var iTest; - * iTest = oSort['string-asc']('data11', 'data12'); - * if (iTest !== 0) - * return iTest; - * iTest = oSort['numeric-desc']('data21', 'data22'); - * if (iTest !== 0) - * return iTest; - * return oSort['numeric-asc']( aiOrig[a], aiOrig[b] ); - * } - * Basically we have a test for each sorting column, if the data in that column is equal, - * test the next column. If all columns match, then we use a numeric sort on the row - * positions in the original data array to provide a stable sort. - * - * Note - I know it seems excessive to have two sorting methods, but the first is around - * 15% faster, so the second is only maintained for backwards compatibility with sorting - * methods which do not have a pre-sort formatting function. - */ - if ( formatters === aSort.length ) { - // All sort types have formatting functions - displayMaster.sort( function ( a, b ) { - var - x, y, k, test, sort, - len=aSort.length, - dataA = aoData[a]._aSortData, - dataB = aoData[b]._aSortData; - - for ( k=0 ; k<len ; k++ ) { - sort = aSort[k]; - - x = dataA[ sort.col ]; - y = dataB[ sort.col ]; - - test = x<y ? -1 : x>y ? 1 : 0; - if ( test !== 0 ) { - return sort.dir === 'asc' ? test : -test; - } - } - - x = aiOrig[a]; - y = aiOrig[b]; - return x<y ? -1 : x>y ? 1 : 0; - } ); - } - else { - // Depreciated - remove in 1.11 (providing a plug-in option) - // Not all sort types have formatting methods, so we have to call their sorting - // methods. - displayMaster.sort( function ( a, b ) { - var - x, y, k, l, test, sort, fn, - len=aSort.length, - dataA = aoData[a]._aSortData, - dataB = aoData[b]._aSortData; - - for ( k=0 ; k<len ; k++ ) { - sort = aSort[k]; - - x = dataA[ sort.col ]; - y = dataB[ sort.col ]; - - fn = oExtSort[ sort.type+"-"+sort.dir ] || oExtSort[ "string-"+sort.dir ]; - test = fn( x, y ); - if ( test !== 0 ) { - return test; - } - } - - x = aiOrig[a]; - y = aiOrig[b]; - return x<y ? -1 : x>y ? 1 : 0; - } ); - } - } - - /* Tell the draw function that we have sorted the data */ - oSettings.bSorted = true; - } - - - function _fnSortAria ( settings ) - { - var label; - var nextSort; - var columns = settings.aoColumns; - var aSort = _fnSortFlatten( settings ); - var oAria = settings.oLanguage.oAria; - - // ARIA attributes - need to loop all columns, to update all (removing old - // attributes as needed) - for ( var i=0, iLen=columns.length ; i<iLen ; i++ ) - { - var col = columns[i]; - var asSorting = col.asSorting; - var sTitle = col.sTitle.replace( /<.*?>/g, "" ); - var th = col.nTh; - - // IE7 is throwing an error when setting these properties with jQuery's - // attr() and removeAttr() methods... - th.removeAttribute('aria-sort'); - - /* In ARIA only the first sorting column can be marked as sorting - no multi-sort option */ - if ( col.bSortable ) { - if ( aSort.length > 0 && aSort[0].col == i ) { - th.setAttribute('aria-sort', aSort[0].dir=="asc" ? "ascending" : "descending" ); - nextSort = asSorting[ aSort[0].index+1 ] || asSorting[0]; - } - else { - nextSort = asSorting[0]; - } - - label = sTitle + ( nextSort === "asc" ? - oAria.sSortAscending : - oAria.sSortDescending - ); - } - else { - label = sTitle; - } - - th.setAttribute('aria-label', label); - } - } - - - /** - * Function to run on user sort request - * @param {object} settings dataTables settings object - * @param {node} attachTo node to attach the handler to - * @param {int} colIdx column sorting index - * @param {boolean} [append=false] Append the requested sort to the existing - * sort if true (i.e. multi-column sort) - * @param {function} [callback] callback function - * @memberof DataTable#oApi - */ - function _fnSortListener ( settings, colIdx, append, callback ) - { - var col = settings.aoColumns[ colIdx ]; - var sorting = settings.aaSorting; - var asSorting = col.asSorting; - var nextSortIdx; - var next = function ( a, overflow ) { - var idx = a._idx; - if ( idx === undefined ) { - idx = $.inArray( a[1], asSorting ); - } - - return idx+1 < asSorting.length ? - idx+1 : - overflow ? - null : - 0; - }; - - // Convert to 2D array if needed - if ( typeof sorting[0] === 'number' ) { - sorting = settings.aaSorting = [ sorting ]; - } - - // If appending the sort then we are multi-column sorting - if ( append && settings.oFeatures.bSortMulti ) { - // Are we already doing some kind of sort on this column? - var sortIdx = $.inArray( colIdx, _pluck(sorting, '0') ); - - if ( sortIdx !== -1 ) { - // Yes, modify the sort - nextSortIdx = next( sorting[sortIdx], true ); - - if ( nextSortIdx === null && sorting.length === 1 ) { - nextSortIdx = 0; // can't remove sorting completely - } - - if ( nextSortIdx === null ) { - sorting.splice( sortIdx, 1 ); - } - else { - sorting[sortIdx][1] = asSorting[ nextSortIdx ]; - sorting[sortIdx]._idx = nextSortIdx; - } - } - else { - // No sort on this column yet - sorting.push( [ colIdx, asSorting[0], 0 ] ); - sorting[sorting.length-1]._idx = 0; - } - } - else if ( sorting.length && sorting[0][0] == colIdx ) { - // Single column - already sorting on this column, modify the sort - nextSortIdx = next( sorting[0] ); - - sorting.length = 1; - sorting[0][1] = asSorting[ nextSortIdx ]; - sorting[0]._idx = nextSortIdx; - } - else { - // Single column - sort only on this column - sorting.length = 0; - sorting.push( [ colIdx, asSorting[0] ] ); - sorting[0]._idx = 0; - } - - // Run the sort by calling a full redraw - _fnReDraw( settings ); - - // callback used for async user interaction - if ( typeof callback == 'function' ) { - callback( settings ); - } - } - - - /** - * Attach a sort handler (click) to a node - * @param {object} settings dataTables settings object - * @param {node} attachTo node to attach the handler to - * @param {int} colIdx column sorting index - * @param {function} [callback] callback function - * @memberof DataTable#oApi - */ - function _fnSortAttachListener ( settings, attachTo, colIdx, callback ) - { - var col = settings.aoColumns[ colIdx ]; - - _fnBindAction( attachTo, {}, function (e) { - /* If the column is not sortable - don't to anything */ - if ( col.bSortable === false ) { - return; - } - - // If processing is enabled use a timeout to allow the processing - // display to be shown - otherwise to it synchronously - if ( settings.oFeatures.bProcessing ) { - _fnProcessingDisplay( settings, true ); - - setTimeout( function() { - _fnSortListener( settings, colIdx, e.shiftKey, callback ); - - // In server-side processing, the draw callback will remove the - // processing display - if ( _fnDataSource( settings ) !== 'ssp' ) { - _fnProcessingDisplay( settings, false ); - } - }, 0 ); - } - else { - _fnSortListener( settings, colIdx, e.shiftKey, callback ); - } - } ); - } - - - /** - * Set the sorting classes on table's body, Note: it is safe to call this function - * when bSort and bSortClasses are false - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnSortingClasses( settings ) - { - var oldSort = settings.aLastSort; - var sortClass = settings.oClasses.sSortColumn; - var sort = _fnSortFlatten( settings ); - var features = settings.oFeatures; - var i, ien, colIdx; - - if ( features.bSort && features.bSortClasses ) { - // Remove old sorting classes - for ( i=0, ien=oldSort.length ; i<ien ; i++ ) { - colIdx = oldSort[i].src; - - // Remove column sorting - $( _pluck( settings.aoData, 'anCells', colIdx ) ) - .removeClass( sortClass + (i<2 ? i+1 : 3) ); - } - - // Add new column sorting - for ( i=0, ien=sort.length ; i<ien ; i++ ) { - colIdx = sort[i].src; - - $( _pluck( settings.aoData, 'anCells', colIdx ) ) - .addClass( sortClass + (i<2 ? i+1 : 3) ); - } - } - - settings.aLastSort = sort; - } - - - // Get the data to sort a column, be it from cache, fresh (populating the - // cache), or from a sort formatter - function _fnSortData( settings, idx ) - { - // Custom sorting function - provided by the sort data type - var column = settings.aoColumns[ idx ]; - var customSort = DataTable.ext.order[ column.sSortDataType ]; - var customData; - - if ( customSort ) { - customData = customSort.call( settings.oInstance, settings, idx, - _fnColumnIndexToVisible( settings, idx ) - ); - } - - // Use / populate cache - var row, cellData; - var formatter = DataTable.ext.type.order[ column.sType+"-pre" ]; - - for ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) { - row = settings.aoData[i]; - - if ( ! row._aSortData ) { - row._aSortData = []; - } - - if ( ! row._aSortData[idx] || customSort ) { - cellData = customSort ? - customData[i] : // If there was a custom sort function, use data from there - _fnGetCellData( settings, i, idx, 'sort' ); - - row._aSortData[ idx ] = formatter ? - formatter( cellData ) : - cellData; - } - } - } - - - - /** - * Save the state of a table - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnSaveState ( settings ) - { - if ( !settings.oFeatures.bStateSave || settings.bDestroying ) - { - return; - } - - /* Store the interesting variables */ - var state = { - time: +new Date(), - start: settings._iDisplayStart, - length: settings._iDisplayLength, - order: $.extend( true, [], settings.aaSorting ), - search: _fnSearchToCamel( settings.oPreviousSearch ), - columns: $.map( settings.aoColumns, function ( col, i ) { - return { - visible: col.bVisible, - search: _fnSearchToCamel( settings.aoPreSearchCols[i] ) - }; - } ) - }; - - _fnCallbackFire( settings, "aoStateSaveParams", 'stateSaveParams', [settings, state] ); - - settings.oSavedState = state; - settings.fnStateSaveCallback.call( settings.oInstance, settings, state ); - } - - - /** - * Attempt to load a saved table state - * @param {object} oSettings dataTables settings object - * @param {object} oInit DataTables init object so we can override settings - * @memberof DataTable#oApi - */ - function _fnLoadState ( settings, oInit ) - { - var i, ien; - var columns = settings.aoColumns; - - if ( ! settings.oFeatures.bStateSave ) { - return; - } - - var state = settings.fnStateLoadCallback.call( settings.oInstance, settings ); - if ( ! state || ! state.time ) { - return; - } - - /* Allow custom and plug-in manipulation functions to alter the saved data set and - * cancelling of loading by returning false - */ - var abStateLoad = _fnCallbackFire( settings, 'aoStateLoadParams', 'stateLoadParams', [settings, state] ); - if ( $.inArray( false, abStateLoad ) !== -1 ) { - return; - } - - /* Reject old data */ - var duration = settings.iStateDuration; - if ( duration > 0 && state.time < +new Date() - (duration*1000) ) { - return; - } - - // Number of columns have changed - all bets are off, no restore of settings - if ( columns.length !== state.columns.length ) { - return; - } - - // Store the saved state so it might be accessed at any time - settings.oLoadedState = $.extend( true, {}, state ); - - // Restore key features - todo - for 1.11 this needs to be done by - // subscribed events - if ( state.start !== undefined ) { - settings._iDisplayStart = state.start; - settings.iInitDisplayStart = state.start; - } - if ( state.length !== undefined ) { - settings._iDisplayLength = state.length; - } - - // Order - if ( state.order !== undefined ) { - settings.aaSorting = []; - $.each( state.order, function ( i, col ) { - settings.aaSorting.push( col[0] >= columns.length ? - [ 0, col[1] ] : - col - ); - } ); - } - - // Search - if ( state.search !== undefined ) { - $.extend( settings.oPreviousSearch, _fnSearchToHung( state.search ) ); - } - - // Columns - for ( i=0, ien=state.columns.length ; i<ien ; i++ ) { - var col = state.columns[i]; - - // Visibility - if ( col.visible !== undefined ) { - columns[i].bVisible = col.visible; - } - - // Search - if ( col.search !== undefined ) { - $.extend( settings.aoPreSearchCols[i], _fnSearchToHung( col.search ) ); - } - } - - _fnCallbackFire( settings, 'aoStateLoaded', 'stateLoaded', [settings, state] ); - } - - - /** - * Return the settings object for a particular table - * @param {node} table table we are using as a dataTable - * @returns {object} Settings object - or null if not found - * @memberof DataTable#oApi - */ - function _fnSettingsFromNode ( table ) - { - var settings = DataTable.settings; - var idx = $.inArray( table, _pluck( settings, 'nTable' ) ); - - return idx !== -1 ? - settings[ idx ] : - null; - } - - - /** - * Log an error message - * @param {object} settings dataTables settings object - * @param {int} level log error messages, or display them to the user - * @param {string} msg error message - * @param {int} tn Technical note id to get more information about the error. - * @memberof DataTable#oApi - */ - function _fnLog( settings, level, msg, tn ) - { - msg = 'DataTables warning: '+ - (settings!==null ? 'table id='+settings.sTableId+' - ' : '')+msg; - - if ( tn ) { - msg += '. For more information about this error, please see '+ - 'http://datatables.net/tn/'+tn; - } - - if ( ! level ) { - // Backwards compatibility pre 1.10 - var ext = DataTable.ext; - var type = ext.sErrMode || ext.errMode; - - _fnCallbackFire( settings, null, 'error', [ settings, tn, msg ] ); - - if ( type == 'alert' ) { - alert( msg ); - } - else if ( type == 'throw' ) { - throw new Error(msg); - } - else if ( typeof type == 'function' ) { - type( settings, tn, msg ); - } - } - else if ( window.console && console.log ) { - console.log( msg ); - } - } - - - /** - * See if a property is defined on one object, if so assign it to the other object - * @param {object} ret target object - * @param {object} src source object - * @param {string} name property - * @param {string} [mappedName] name to map too - optional, name used if not given - * @memberof DataTable#oApi - */ - function _fnMap( ret, src, name, mappedName ) - { - if ( $.isArray( name ) ) { - $.each( name, function (i, val) { - if ( $.isArray( val ) ) { - _fnMap( ret, src, val[0], val[1] ); - } - else { - _fnMap( ret, src, val ); - } - } ); - - return; - } - - if ( mappedName === undefined ) { - mappedName = name; - } - - if ( src[name] !== undefined ) { - ret[mappedName] = src[name]; - } - } - - - /** - * Extend objects - very similar to jQuery.extend, but deep copy objects, and - * shallow copy arrays. The reason we need to do this, is that we don't want to - * deep copy array init values (such as aaSorting) since the dev wouldn't be - * able to override them, but we do want to deep copy arrays. - * @param {object} out Object to extend - * @param {object} extender Object from which the properties will be applied to - * out - * @param {boolean} breakRefs If true, then arrays will be sliced to take an - * independent copy with the exception of the `data` or `aaData` parameters - * if they are present. This is so you can pass in a collection to - * DataTables and have that used as your data source without breaking the - * references - * @returns {object} out Reference, just for convenience - out === the return. - * @memberof DataTable#oApi - * @todo This doesn't take account of arrays inside the deep copied objects. - */ - function _fnExtend( out, extender, breakRefs ) - { - var val; - - for ( var prop in extender ) { - if ( extender.hasOwnProperty(prop) ) { - val = extender[prop]; - - if ( $.isPlainObject( val ) ) { - if ( ! $.isPlainObject( out[prop] ) ) { - out[prop] = {}; - } - $.extend( true, out[prop], val ); - } - else if ( breakRefs && prop !== 'data' && prop !== 'aaData' && $.isArray(val) ) { - out[prop] = val.slice(); - } - else { - out[prop] = val; - } - } - } - - return out; - } - - - /** - * Bind an event handers to allow a click or return key to activate the callback. - * This is good for accessibility since a return on the keyboard will have the - * same effect as a click, if the element has focus. - * @param {element} n Element to bind the action to - * @param {object} oData Data object to pass to the triggered function - * @param {function} fn Callback function for when the event is triggered - * @memberof DataTable#oApi - */ - function _fnBindAction( n, oData, fn ) - { - $(n) - .bind( 'click.DT', oData, function (e) { - n.blur(); // Remove focus outline for mouse users - fn(e); - } ) - .bind( 'keypress.DT', oData, function (e){ - if ( e.which === 13 ) { - e.preventDefault(); - fn(e); - } - } ) - .bind( 'selectstart.DT', function () { - /* Take the brutal approach to cancelling text selection */ - return false; - } ); - } - - - /** - * Register a callback function. Easily allows a callback function to be added to - * an array store of callback functions that can then all be called together. - * @param {object} oSettings dataTables settings object - * @param {string} sStore Name of the array storage for the callbacks in oSettings - * @param {function} fn Function to be called back - * @param {string} sName Identifying name for the callback (i.e. a label) - * @memberof DataTable#oApi - */ - function _fnCallbackReg( oSettings, sStore, fn, sName ) - { - if ( fn ) - { - oSettings[sStore].push( { - "fn": fn, - "sName": sName - } ); - } - } - - - /** - * Fire callback functions and trigger events. Note that the loop over the - * callback array store is done backwards! Further note that you do not want to - * fire off triggers in time sensitive applications (for example cell creation) - * as its slow. - * @param {object} settings dataTables settings object - * @param {string} callbackArr Name of the array storage for the callbacks in - * oSettings - * @param {string} eventName Name of the jQuery custom event to trigger. If - * null no trigger is fired - * @param {array} args Array of arguments to pass to the callback function / - * trigger - * @memberof DataTable#oApi - */ - function _fnCallbackFire( settings, callbackArr, eventName, args ) - { - var ret = []; - - if ( callbackArr ) { - ret = $.map( settings[callbackArr].slice().reverse(), function (val, i) { - return val.fn.apply( settings.oInstance, args ); - } ); - } - - if ( eventName !== null ) { - var e = $.Event( eventName+'.dt' ); - - $(settings.nTable).trigger( e, args ); - - ret.push( e.result ); - } - - return ret; - } - - - function _fnLengthOverflow ( settings ) - { - var - start = settings._iDisplayStart, - end = settings.fnDisplayEnd(), - len = settings._iDisplayLength; - - /* If we have space to show extra rows (backing up from the end point - then do so */ - if ( start >= end ) - { - start = end - len; - } - - // Keep the start record on the current page - start -= (start % len); - - if ( len === -1 || start < 0 ) - { - start = 0; - } - - settings._iDisplayStart = start; - } - - - function _fnRenderer( settings, type ) - { - var renderer = settings.renderer; - var host = DataTable.ext.renderer[type]; - - if ( $.isPlainObject( renderer ) && renderer[type] ) { - // Specific renderer for this type. If available use it, otherwise use - // the default. - return host[renderer[type]] || host._; - } - else if ( typeof renderer === 'string' ) { - // Common renderer - if there is one available for this type use it, - // otherwise use the default - return host[renderer] || host._; - } - - // Use the default - return host._; - } - - - /** - * Detect the data source being used for the table. Used to simplify the code - * a little (ajax) and to make it compress a little smaller. - * - * @param {object} settings dataTables settings object - * @returns {string} Data source - * @memberof DataTable#oApi - */ - function _fnDataSource ( settings ) - { - if ( settings.oFeatures.bServerSide ) { - return 'ssp'; - } - else if ( settings.ajax || settings.sAjaxSource ) { - return 'ajax'; - } - return 'dom'; - } - - - DataTable = function( options ) - { - /** - * Perform a jQuery selector action on the table's TR elements (from the tbody) and - * return the resulting jQuery object. - * @param {string|node|jQuery} sSelector jQuery selector or node collection to act on - * @param {object} [oOpts] Optional parameters for modifying the rows to be included - * @param {string} [oOpts.filter=none] Select TR elements that meet the current filter - * criterion ("applied") or all TR elements (i.e. no filter). - * @param {string} [oOpts.order=current] Order of the TR elements in the processed array. - * Can be either 'current', whereby the current sorting of the table is used, or - * 'original' whereby the original order the data was read into the table is used. - * @param {string} [oOpts.page=all] Limit the selection to the currently displayed page - * ("current") or not ("all"). If 'current' is given, then order is assumed to be - * 'current' and filter is 'applied', regardless of what they might be given as. - * @returns {object} jQuery object, filtered by the given selector. - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Highlight every second row - * oTable.$('tr:odd').css('backgroundColor', 'blue'); - * } ); - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Filter to rows with 'Webkit' in them, add a background colour and then - * // remove the filter, thus highlighting the 'Webkit' rows only. - * oTable.fnFilter('Webkit'); - * oTable.$('tr', {"search": "applied"}).css('backgroundColor', 'blue'); - * oTable.fnFilter(''); - * } ); - */ - this.$ = function ( sSelector, oOpts ) - { - return this.api(true).$( sSelector, oOpts ); - }; - - - /** - * Almost identical to $ in operation, but in this case returns the data for the matched - * rows - as such, the jQuery selector used should match TR row nodes or TD/TH cell nodes - * rather than any descendants, so the data can be obtained for the row/cell. If matching - * rows are found, the data returned is the original data array/object that was used to - * create the row (or a generated array if from a DOM source). - * - * This method is often useful in-combination with $ where both functions are given the - * same parameters and the array indexes will match identically. - * @param {string|node|jQuery} sSelector jQuery selector or node collection to act on - * @param {object} [oOpts] Optional parameters for modifying the rows to be included - * @param {string} [oOpts.filter=none] Select elements that meet the current filter - * criterion ("applied") or all elements (i.e. no filter). - * @param {string} [oOpts.order=current] Order of the data in the processed array. - * Can be either 'current', whereby the current sorting of the table is used, or - * 'original' whereby the original order the data was read into the table is used. - * @param {string} [oOpts.page=all] Limit the selection to the currently displayed page - * ("current") or not ("all"). If 'current' is given, then order is assumed to be - * 'current' and filter is 'applied', regardless of what they might be given as. - * @returns {array} Data for the matched elements. If any elements, as a result of the - * selector, were not TR, TD or TH elements in the DataTable, they will have a null - * entry in the array. - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Get the data from the first row in the table - * var data = oTable._('tr:first'); - * - * // Do something useful with the data - * alert( "First cell is: "+data[0] ); - * } ); - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Filter to 'Webkit' and get all data for - * oTable.fnFilter('Webkit'); - * var data = oTable._('tr', {"search": "applied"}); - * - * // Do something with the data - * alert( data.length+" rows matched the search" ); - * } ); - */ - this._ = function ( sSelector, oOpts ) - { - return this.api(true).rows( sSelector, oOpts ).data(); - }; - - - /** - * Create a DataTables Api instance, with the currently selected tables for - * the Api's context. - * @param {boolean} [traditional=false] Set the API instance's context to be - * only the table referred to by the `DataTable.ext.iApiIndex` option, as was - * used in the API presented by DataTables 1.9- (i.e. the traditional mode), - * or if all tables captured in the jQuery object should be used. - * @return {DataTables.Api} - */ - this.api = function ( traditional ) - { - return traditional ? - new _Api( - _fnSettingsFromNode( this[ _ext.iApiIndex ] ) - ) : - new _Api( this ); - }; - - - /** - * Add a single new row or multiple rows of data to the table. Please note - * that this is suitable for client-side processing only - if you are using - * server-side processing (i.e. "bServerSide": true), then to add data, you - * must add it to the data source, i.e. the server-side, through an Ajax call. - * @param {array|object} data The data to be added to the table. This can be: - * <ul> - * <li>1D array of data - add a single row with the data provided</li> - * <li>2D array of arrays - add multiple rows in a single call</li> - * <li>object - data object when using <i>mData</i></li> - * <li>array of objects - multiple data objects when using <i>mData</i></li> - * </ul> - * @param {bool} [redraw=true] redraw the table or not - * @returns {array} An array of integers, representing the list of indexes in - * <i>aoData</i> ({@link DataTable.models.oSettings}) that have been added to - * the table. - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * // Global var for counter - * var giCount = 2; - * - * $(document).ready(function() { - * $('#example').dataTable(); - * } ); - * - * function fnClickAddRow() { - * $('#example').dataTable().fnAddData( [ - * giCount+".1", - * giCount+".2", - * giCount+".3", - * giCount+".4" ] - * ); - * - * giCount++; - * } - */ - this.fnAddData = function( data, redraw ) - { - var api = this.api( true ); - - /* Check if we want to add multiple rows or not */ - var rows = $.isArray(data) && ( $.isArray(data[0]) || $.isPlainObject(data[0]) ) ? - api.rows.add( data ) : - api.row.add( data ); - - if ( redraw === undefined || redraw ) { - api.draw(); - } - - return rows.flatten().toArray(); - }; - - - /** - * This function will make DataTables recalculate the column sizes, based on the data - * contained in the table and the sizes applied to the columns (in the DOM, CSS or - * through the sWidth parameter). This can be useful when the width of the table's - * parent element changes (for example a window resize). - * @param {boolean} [bRedraw=true] Redraw the table or not, you will typically want to - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable( { - * "sScrollY": "200px", - * "bPaginate": false - * } ); - * - * $(window).bind('resize', function () { - * oTable.fnAdjustColumnSizing(); - * } ); - * } ); - */ - this.fnAdjustColumnSizing = function ( bRedraw ) - { - var api = this.api( true ).columns.adjust(); - var settings = api.settings()[0]; - var scroll = settings.oScroll; - - if ( bRedraw === undefined || bRedraw ) { - api.draw( false ); - } - else if ( scroll.sX !== "" || scroll.sY !== "" ) { - /* If not redrawing, but scrolling, we want to apply the new column sizes anyway */ - _fnScrollDraw( settings ); - } - }; - - - /** - * Quickly and simply clear a table - * @param {bool} [bRedraw=true] redraw the table or not - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Immediately 'nuke' the current rows (perhaps waiting for an Ajax callback...) - * oTable.fnClearTable(); - * } ); - */ - this.fnClearTable = function( bRedraw ) - { - var api = this.api( true ).clear(); - - if ( bRedraw === undefined || bRedraw ) { - api.draw(); - } - }; - - - /** - * The exact opposite of 'opening' a row, this function will close any rows which - * are currently 'open'. - * @param {node} nTr the table row to 'close' - * @returns {int} 0 on success, or 1 if failed (can't find the row) - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable; - * - * // 'open' an information row when a row is clicked on - * $('#example tbody tr').click( function () { - * if ( oTable.fnIsOpen(this) ) { - * oTable.fnClose( this ); - * } else { - * oTable.fnOpen( this, "Temporary row opened", "info_row" ); - * } - * } ); - * - * oTable = $('#example').dataTable(); - * } ); - */ - this.fnClose = function( nTr ) - { - this.api( true ).row( nTr ).child.hide(); - }; - - - /** - * Remove a row for the table - * @param {mixed} target The index of the row from aoData to be deleted, or - * the TR element you want to delete - * @param {function|null} [callBack] Callback function - * @param {bool} [redraw=true] Redraw the table or not - * @returns {array} The row that was deleted - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Immediately remove the first row - * oTable.fnDeleteRow( 0 ); - * } ); - */ - this.fnDeleteRow = function( target, callback, redraw ) - { - var api = this.api( true ); - var rows = api.rows( target ); - var settings = rows.settings()[0]; - var data = settings.aoData[ rows[0][0] ]; - - rows.remove(); - - if ( callback ) { - callback.call( this, settings, data ); - } - - if ( redraw === undefined || redraw ) { - api.draw(); - } - - return data; - }; - - - /** - * Restore the table to it's original state in the DOM by removing all of DataTables - * enhancements, alterations to the DOM structure of the table and event listeners. - * @param {boolean} [remove=false] Completely remove the table from the DOM - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * // This example is fairly pointless in reality, but shows how fnDestroy can be used - * var oTable = $('#example').dataTable(); - * oTable.fnDestroy(); - * } ); - */ - this.fnDestroy = function ( remove ) - { - this.api( true ).destroy( remove ); - }; - - - /** - * Redraw the table - * @param {bool} [complete=true] Re-filter and resort (if enabled) the table before the draw. - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Re-draw the table - you wouldn't want to do it here, but it's an example :-) - * oTable.fnDraw(); - * } ); - */ - this.fnDraw = function( complete ) - { - // Note that this isn't an exact match to the old call to _fnDraw - it takes - // into account the new data, but can hold position. - this.api( true ).draw( complete ); - }; - - - /** - * Filter the input based on data - * @param {string} sInput String to filter the table on - * @param {int|null} [iColumn] Column to limit filtering to - * @param {bool} [bRegex=false] Treat as regular expression or not - * @param {bool} [bSmart=true] Perform smart filtering or not - * @param {bool} [bShowGlobal=true] Show the input global filter in it's input box(es) - * @param {bool} [bCaseInsensitive=true] Do case-insensitive matching (true) or not (false) - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Sometime later - filter... - * oTable.fnFilter( 'test string' ); - * } ); - */ - this.fnFilter = function( sInput, iColumn, bRegex, bSmart, bShowGlobal, bCaseInsensitive ) - { - var api = this.api( true ); - - if ( iColumn === null || iColumn === undefined ) { - api.search( sInput, bRegex, bSmart, bCaseInsensitive ); - } - else { - api.column( iColumn ).search( sInput, bRegex, bSmart, bCaseInsensitive ); - } - - api.draw(); - }; - - - /** - * Get the data for the whole table, an individual row or an individual cell based on the - * provided parameters. - * @param {int|node} [src] A TR row node, TD/TH cell node or an integer. If given as - * a TR node then the data source for the whole row will be returned. If given as a - * TD/TH cell node then iCol will be automatically calculated and the data for the - * cell returned. If given as an integer, then this is treated as the aoData internal - * data index for the row (see fnGetPosition) and the data for that row used. - * @param {int} [col] Optional column index that you want the data of. - * @returns {array|object|string} If mRow is undefined, then the data for all rows is - * returned. If mRow is defined, just data for that row, and is iCol is - * defined, only data for the designated cell is returned. - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * // Row data - * $(document).ready(function() { - * oTable = $('#example').dataTable(); - * - * oTable.$('tr').click( function () { - * var data = oTable.fnGetData( this ); - * // ... do something with the array / object of data for the row - * } ); - * } ); - * - * @example - * // Individual cell data - * $(document).ready(function() { - * oTable = $('#example').dataTable(); - * - * oTable.$('td').click( function () { - * var sData = oTable.fnGetData( this ); - * alert( 'The cell clicked on had the value of '+sData ); - * } ); - * } ); - */ - this.fnGetData = function( src, col ) - { - var api = this.api( true ); - - if ( src !== undefined ) { - var type = src.nodeName ? src.nodeName.toLowerCase() : ''; - - return col !== undefined || type == 'td' || type == 'th' ? - api.cell( src, col ).data() : - api.row( src ).data() || null; - } - - return api.data().toArray(); - }; - - - /** - * Get an array of the TR nodes that are used in the table's body. Note that you will - * typically want to use the '$' API method in preference to this as it is more - * flexible. - * @param {int} [iRow] Optional row index for the TR element you want - * @returns {array|node} If iRow is undefined, returns an array of all TR elements - * in the table's body, or iRow is defined, just the TR element requested. - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Get the nodes from the table - * var nNodes = oTable.fnGetNodes( ); - * } ); - */ - this.fnGetNodes = function( iRow ) - { - var api = this.api( true ); - - return iRow !== undefined ? - api.row( iRow ).node() : - api.rows().nodes().flatten().toArray(); - }; - - - /** - * Get the array indexes of a particular cell from it's DOM element - * and column index including hidden columns - * @param {node} node this can either be a TR, TD or TH in the table's body - * @returns {int} If nNode is given as a TR, then a single index is returned, or - * if given as a cell, an array of [row index, column index (visible), - * column index (all)] is given. - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * $('#example tbody td').click( function () { - * // Get the position of the current data from the node - * var aPos = oTable.fnGetPosition( this ); - * - * // Get the data array for this row - * var aData = oTable.fnGetData( aPos[0] ); - * - * // Update the data array and return the value - * aData[ aPos[1] ] = 'clicked'; - * this.innerHTML = 'clicked'; - * } ); - * - * // Init DataTables - * oTable = $('#example').dataTable(); - * } ); - */ - this.fnGetPosition = function( node ) - { - var api = this.api( true ); - var nodeName = node.nodeName.toUpperCase(); - - if ( nodeName == 'TR' ) { - return api.row( node ).index(); - } - else if ( nodeName == 'TD' || nodeName == 'TH' ) { - var cell = api.cell( node ).index(); - - return [ - cell.row, - cell.columnVisible, - cell.column - ]; - } - return null; - }; - - - /** - * Check to see if a row is 'open' or not. - * @param {node} nTr the table row to check - * @returns {boolean} true if the row is currently open, false otherwise - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable; - * - * // 'open' an information row when a row is clicked on - * $('#example tbody tr').click( function () { - * if ( oTable.fnIsOpen(this) ) { - * oTable.fnClose( this ); - * } else { - * oTable.fnOpen( this, "Temporary row opened", "info_row" ); - * } - * } ); - * - * oTable = $('#example').dataTable(); - * } ); - */ - this.fnIsOpen = function( nTr ) - { - return this.api( true ).row( nTr ).child.isShown(); - }; - - - /** - * This function will place a new row directly after a row which is currently - * on display on the page, with the HTML contents that is passed into the - * function. This can be used, for example, to ask for confirmation that a - * particular record should be deleted. - * @param {node} nTr The table row to 'open' - * @param {string|node|jQuery} mHtml The HTML to put into the row - * @param {string} sClass Class to give the new TD cell - * @returns {node} The row opened. Note that if the table row passed in as the - * first parameter, is not found in the table, this method will silently - * return. - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable; - * - * // 'open' an information row when a row is clicked on - * $('#example tbody tr').click( function () { - * if ( oTable.fnIsOpen(this) ) { - * oTable.fnClose( this ); - * } else { - * oTable.fnOpen( this, "Temporary row opened", "info_row" ); - * } - * } ); - * - * oTable = $('#example').dataTable(); - * } ); - */ - this.fnOpen = function( nTr, mHtml, sClass ) - { - return this.api( true ) - .row( nTr ) - .child( mHtml, sClass ) - .show() - .child()[0]; - }; - - - /** - * Change the pagination - provides the internal logic for pagination in a simple API - * function. With this function you can have a DataTables table go to the next, - * previous, first or last pages. - * @param {string|int} mAction Paging action to take: "first", "previous", "next" or "last" - * or page number to jump to (integer), note that page 0 is the first page. - * @param {bool} [bRedraw=true] Redraw the table or not - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * oTable.fnPageChange( 'next' ); - * } ); - */ - this.fnPageChange = function ( mAction, bRedraw ) - { - var api = this.api( true ).page( mAction ); - - if ( bRedraw === undefined || bRedraw ) { - api.draw(false); - } - }; - - - /** - * Show a particular column - * @param {int} iCol The column whose display should be changed - * @param {bool} bShow Show (true) or hide (false) the column - * @param {bool} [bRedraw=true] Redraw the table or not - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Hide the second column after initialisation - * oTable.fnSetColumnVis( 1, false ); - * } ); - */ - this.fnSetColumnVis = function ( iCol, bShow, bRedraw ) - { - var api = this.api( true ).column( iCol ).visible( bShow ); - - if ( bRedraw === undefined || bRedraw ) { - api.columns.adjust().draw(); - } - }; - - - /** - * Get the settings for a particular table for external manipulation - * @returns {object} DataTables settings object. See - * {@link DataTable.models.oSettings} - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * var oSettings = oTable.fnSettings(); - * - * // Show an example parameter from the settings - * alert( oSettings._iDisplayStart ); - * } ); - */ - this.fnSettings = function() - { - return _fnSettingsFromNode( this[_ext.iApiIndex] ); - }; - - - /** - * Sort the table by a particular column - * @param {int} iCol the data index to sort on. Note that this will not match the - * 'display index' if you have hidden data entries - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Sort immediately with columns 0 and 1 - * oTable.fnSort( [ [0,'asc'], [1,'asc'] ] ); - * } ); - */ - this.fnSort = function( aaSort ) - { - this.api( true ).order( aaSort ).draw(); - }; - - - /** - * Attach a sort listener to an element for a given column - * @param {node} nNode the element to attach the sort listener to - * @param {int} iColumn the column that a click on this node will sort on - * @param {function} [fnCallback] callback function when sort is run - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Sort on column 1, when 'sorter' is clicked on - * oTable.fnSortListener( document.getElementById('sorter'), 1 ); - * } ); - */ - this.fnSortListener = function( nNode, iColumn, fnCallback ) - { - this.api( true ).order.listener( nNode, iColumn, fnCallback ); - }; - - - /** - * Update a table cell or row - this method will accept either a single value to - * update the cell with, an array of values with one element for each column or - * an object in the same format as the original data source. The function is - * self-referencing in order to make the multi column updates easier. - * @param {object|array|string} mData Data to update the cell/row with - * @param {node|int} mRow TR element you want to update or the aoData index - * @param {int} [iColumn] The column to update, give as null or undefined to - * update a whole row. - * @param {bool} [bRedraw=true] Redraw the table or not - * @param {bool} [bAction=true] Perform pre-draw actions or not - * @returns {int} 0 on success, 1 on error - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * oTable.fnUpdate( 'Example update', 0, 0 ); // Single cell - * oTable.fnUpdate( ['a', 'b', 'c', 'd', 'e'], $('tbody tr')[0] ); // Row - * } ); - */ - this.fnUpdate = function( mData, mRow, iColumn, bRedraw, bAction ) - { - var api = this.api( true ); - - if ( iColumn === undefined || iColumn === null ) { - api.row( mRow ).data( mData ); - } - else { - api.cell( mRow, iColumn ).data( mData ); - } - - if ( bAction === undefined || bAction ) { - api.columns.adjust(); - } - - if ( bRedraw === undefined || bRedraw ) { - api.draw(); - } - return 0; - }; - - - /** - * Provide a common method for plug-ins to check the version of DataTables being used, in order - * to ensure compatibility. - * @param {string} sVersion Version string to check for, in the format "X.Y.Z". Note that the - * formats "X" and "X.Y" are also acceptable. - * @returns {boolean} true if this version of DataTables is greater or equal to the required - * version, or false if this version of DataTales is not suitable - * @method - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * alert( oTable.fnVersionCheck( '1.9.0' ) ); - * } ); - */ - this.fnVersionCheck = _ext.fnVersionCheck; - - - var _that = this; - var emptyInit = options === undefined; - var len = this.length; - - if ( emptyInit ) { - options = {}; - } - - this.oApi = this.internal = _ext.internal; - - // Extend with old style plug-in API methods - for ( var fn in DataTable.ext.internal ) { - if ( fn ) { - this[fn] = _fnExternApiFunc(fn); - } - } - - this.each(function() { - // For each initialisation we want to give it a clean initialisation - // object that can be bashed around - var o = {}; - var oInit = len > 1 ? // optimisation for single table case - _fnExtend( o, options, true ) : - options; - - /*global oInit,_that,emptyInit*/ - var i=0, iLen, j, jLen, k, kLen; - var sId = this.getAttribute( 'id' ); - var bInitHandedOff = false; - var defaults = DataTable.defaults; - var $this = $(this); - - - /* Sanity check */ - if ( this.nodeName.toLowerCase() != 'table' ) - { - _fnLog( null, 0, 'Non-table node initialisation ('+this.nodeName+')', 2 ); - return; - } - - /* Backwards compatibility for the defaults */ - _fnCompatOpts( defaults ); - _fnCompatCols( defaults.column ); - - /* Convert the camel-case defaults to Hungarian */ - _fnCamelToHungarian( defaults, defaults, true ); - _fnCamelToHungarian( defaults.column, defaults.column, true ); - - /* Setting up the initialisation object */ - _fnCamelToHungarian( defaults, $.extend( oInit, $this.data() ) ); - - - - /* Check to see if we are re-initialising a table */ - var allSettings = DataTable.settings; - for ( i=0, iLen=allSettings.length ; i<iLen ; i++ ) - { - var s = allSettings[i]; - - /* Base check on table node */ - if ( s.nTable == this || s.nTHead.parentNode == this || (s.nTFoot && s.nTFoot.parentNode == this) ) - { - var bRetrieve = oInit.bRetrieve !== undefined ? oInit.bRetrieve : defaults.bRetrieve; - var bDestroy = oInit.bDestroy !== undefined ? oInit.bDestroy : defaults.bDestroy; - - if ( emptyInit || bRetrieve ) - { - return s.oInstance; - } - else if ( bDestroy ) - { - s.oInstance.fnDestroy(); - break; - } - else - { - _fnLog( s, 0, 'Cannot reinitialise DataTable', 3 ); - return; - } - } - - /* If the element we are initialising has the same ID as a table which was previously - * initialised, but the table nodes don't match (from before) then we destroy the old - * instance by simply deleting it. This is under the assumption that the table has been - * destroyed by other methods. Anyone using non-id selectors will need to do this manually - */ - if ( s.sTableId == this.id ) - { - allSettings.splice( i, 1 ); - break; - } - } - - /* Ensure the table has an ID - required for accessibility */ - if ( sId === null || sId === "" ) - { - sId = "DataTables_Table_"+(DataTable.ext._unique++); - this.id = sId; - } - - /* Create the settings object for this table and set some of the default parameters */ - var oSettings = $.extend( true, {}, DataTable.models.oSettings, { - "sDestroyWidth": $this[0].style.width, - "sInstance": sId, - "sTableId": sId - } ); - oSettings.nTable = this; - oSettings.oApi = _that.internal; - oSettings.oInit = oInit; - - allSettings.push( oSettings ); - - // Need to add the instance after the instance after the settings object has been added - // to the settings array, so we can self reference the table instance if more than one - oSettings.oInstance = (_that.length===1) ? _that : $this.dataTable(); - - // Backwards compatibility, before we apply all the defaults - _fnCompatOpts( oInit ); - - if ( oInit.oLanguage ) - { - _fnLanguageCompat( oInit.oLanguage ); - } - - // If the length menu is given, but the init display length is not, use the length menu - if ( oInit.aLengthMenu && ! oInit.iDisplayLength ) - { - oInit.iDisplayLength = $.isArray( oInit.aLengthMenu[0] ) ? - oInit.aLengthMenu[0][0] : oInit.aLengthMenu[0]; - } - - // Apply the defaults and init options to make a single init object will all - // options defined from defaults and instance options. - oInit = _fnExtend( $.extend( true, {}, defaults ), oInit ); - - - // Map the initialisation options onto the settings object - _fnMap( oSettings.oFeatures, oInit, [ - "bPaginate", - "bLengthChange", - "bFilter", - "bSort", - "bSortMulti", - "bInfo", - "bProcessing", - "bAutoWidth", - "bSortClasses", - "bServerSide", - "bDeferRender" - ] ); - _fnMap( oSettings, oInit, [ - "asStripeClasses", - "ajax", - "fnServerData", - "fnFormatNumber", - "sServerMethod", - "aaSorting", - "aaSortingFixed", - "aLengthMenu", - "sPaginationType", - "sAjaxSource", - "sAjaxDataProp", - "iStateDuration", - "sDom", - "bSortCellsTop", - "iTabIndex", - "fnStateLoadCallback", - "fnStateSaveCallback", - "renderer", - "searchDelay", - [ "iCookieDuration", "iStateDuration" ], // backwards compat - [ "oSearch", "oPreviousSearch" ], - [ "aoSearchCols", "aoPreSearchCols" ], - [ "iDisplayLength", "_iDisplayLength" ], - [ "bJQueryUI", "bJUI" ] - ] ); - _fnMap( oSettings.oScroll, oInit, [ - [ "sScrollX", "sX" ], - [ "sScrollXInner", "sXInner" ], - [ "sScrollY", "sY" ], - [ "bScrollCollapse", "bCollapse" ] - ] ); - _fnMap( oSettings.oLanguage, oInit, "fnInfoCallback" ); - - /* Callback functions which are array driven */ - _fnCallbackReg( oSettings, 'aoDrawCallback', oInit.fnDrawCallback, 'user' ); - _fnCallbackReg( oSettings, 'aoServerParams', oInit.fnServerParams, 'user' ); - _fnCallbackReg( oSettings, 'aoStateSaveParams', oInit.fnStateSaveParams, 'user' ); - _fnCallbackReg( oSettings, 'aoStateLoadParams', oInit.fnStateLoadParams, 'user' ); - _fnCallbackReg( oSettings, 'aoStateLoaded', oInit.fnStateLoaded, 'user' ); - _fnCallbackReg( oSettings, 'aoRowCallback', oInit.fnRowCallback, 'user' ); - _fnCallbackReg( oSettings, 'aoRowCreatedCallback', oInit.fnCreatedRow, 'user' ); - _fnCallbackReg( oSettings, 'aoHeaderCallback', oInit.fnHeaderCallback, 'user' ); - _fnCallbackReg( oSettings, 'aoFooterCallback', oInit.fnFooterCallback, 'user' ); - _fnCallbackReg( oSettings, 'aoInitComplete', oInit.fnInitComplete, 'user' ); - _fnCallbackReg( oSettings, 'aoPreDrawCallback', oInit.fnPreDrawCallback, 'user' ); - - var oClasses = oSettings.oClasses; - - // @todo Remove in 1.11 - if ( oInit.bJQueryUI ) - { - /* Use the JUI classes object for display. You could clone the oStdClasses object if - * you want to have multiple tables with multiple independent classes - */ - $.extend( oClasses, DataTable.ext.oJUIClasses, oInit.oClasses ); - - if ( oInit.sDom === defaults.sDom && defaults.sDom === "lfrtip" ) - { - /* Set the DOM to use a layout suitable for jQuery UI's theming */ - oSettings.sDom = '<"H"lfr>t<"F"ip>'; - } - - if ( ! oSettings.renderer ) { - oSettings.renderer = 'jqueryui'; - } - else if ( $.isPlainObject( oSettings.renderer ) && ! oSettings.renderer.header ) { - oSettings.renderer.header = 'jqueryui'; - } - } - else - { - $.extend( oClasses, DataTable.ext.classes, oInit.oClasses ); - } - $this.addClass( oClasses.sTable ); - - /* Calculate the scroll bar width and cache it for use later on */ - if ( oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "" ) - { - oSettings.oScroll.iBarWidth = _fnScrollBarWidth(); - } - if ( oSettings.oScroll.sX === true ) { // Easy initialisation of x-scrolling - oSettings.oScroll.sX = '100%'; - } - - if ( oSettings.iInitDisplayStart === undefined ) - { - /* Display start point, taking into account the save saving */ - oSettings.iInitDisplayStart = oInit.iDisplayStart; - oSettings._iDisplayStart = oInit.iDisplayStart; - } - - if ( oInit.iDeferLoading !== null ) - { - oSettings.bDeferLoading = true; - var tmp = $.isArray( oInit.iDeferLoading ); - oSettings._iRecordsDisplay = tmp ? oInit.iDeferLoading[0] : oInit.iDeferLoading; - oSettings._iRecordsTotal = tmp ? oInit.iDeferLoading[1] : oInit.iDeferLoading; - } - - /* Language definitions */ - var oLanguage = oSettings.oLanguage; - $.extend( true, oLanguage, oInit.oLanguage ); - - if ( oLanguage.sUrl !== "" ) - { - /* Get the language definitions from a file - because this Ajax call makes the language - * get async to the remainder of this function we use bInitHandedOff to indicate that - * _fnInitialise will be fired by the returned Ajax handler, rather than the constructor - */ - $.ajax( { - dataType: 'json', - url: oLanguage.sUrl, - success: function ( json ) { - _fnLanguageCompat( json ); - _fnCamelToHungarian( defaults.oLanguage, json ); - $.extend( true, oLanguage, json ); - _fnInitialise( oSettings ); - }, - error: function () { - // Error occurred loading language file, continue on as best we can - _fnInitialise( oSettings ); - } - } ); - bInitHandedOff = true; - } - - /* - * Stripes - */ - if ( oInit.asStripeClasses === null ) - { - oSettings.asStripeClasses =[ - oClasses.sStripeOdd, - oClasses.sStripeEven - ]; - } - - /* Remove row stripe classes if they are already on the table row */ - var stripeClasses = oSettings.asStripeClasses; - var rowOne = $this.children('tbody').find('tr').eq(0); - if ( $.inArray( true, $.map( stripeClasses, function(el, i) { - return rowOne.hasClass(el); - } ) ) !== -1 ) { - $('tbody tr', this).removeClass( stripeClasses.join(' ') ); - oSettings.asDestroyStripes = stripeClasses.slice(); - } - - /* - * Columns - * See if we should load columns automatically or use defined ones - */ - var anThs = []; - var aoColumnsInit; - var nThead = this.getElementsByTagName('thead'); - if ( nThead.length !== 0 ) - { - _fnDetectHeader( oSettings.aoHeader, nThead[0] ); - anThs = _fnGetUniqueThs( oSettings ); - } - - /* If not given a column array, generate one with nulls */ - if ( oInit.aoColumns === null ) - { - aoColumnsInit = []; - for ( i=0, iLen=anThs.length ; i<iLen ; i++ ) - { - aoColumnsInit.push( null ); - } - } - else - { - aoColumnsInit = oInit.aoColumns; - } - - /* Add the columns */ - for ( i=0, iLen=aoColumnsInit.length ; i<iLen ; i++ ) - { - _fnAddColumn( oSettings, anThs ? anThs[i] : null ); - } - - /* Apply the column definitions */ - _fnApplyColumnDefs( oSettings, oInit.aoColumnDefs, aoColumnsInit, function (iCol, oDef) { - _fnColumnOptions( oSettings, iCol, oDef ); - } ); - - /* HTML5 attribute detection - build an mData object automatically if the - * attributes are found - */ - if ( rowOne.length ) { - var a = function ( cell, name ) { - return cell.getAttribute( 'data-'+name ) !== null ? name : null; - }; - - $.each( _fnGetRowElements( oSettings, rowOne[0] ).cells, function (i, cell) { - var col = oSettings.aoColumns[i]; - - if ( col.mData === i ) { - var sort = a( cell, 'sort' ) || a( cell, 'order' ); - var filter = a( cell, 'filter' ) || a( cell, 'search' ); - - if ( sort !== null || filter !== null ) { - col.mData = { - _: i+'.display', - sort: sort !== null ? i+'.@data-'+sort : undefined, - type: sort !== null ? i+'.@data-'+sort : undefined, - filter: filter !== null ? i+'.@data-'+filter : undefined - }; - - _fnColumnOptions( oSettings, i ); - } - } - } ); - } - - var features = oSettings.oFeatures; - - /* Must be done after everything which can be overridden by the state saving! */ - if ( oInit.bStateSave ) - { - features.bStateSave = true; - _fnLoadState( oSettings, oInit ); - _fnCallbackReg( oSettings, 'aoDrawCallback', _fnSaveState, 'state_save' ); - } - - - /* - * Sorting - * @todo For modularisation (1.11) this needs to do into a sort start up handler - */ - - // If aaSorting is not defined, then we use the first indicator in asSorting - // in case that has been altered, so the default sort reflects that option - if ( oInit.aaSorting === undefined ) - { - var sorting = oSettings.aaSorting; - for ( i=0, iLen=sorting.length ; i<iLen ; i++ ) - { - sorting[i][1] = oSettings.aoColumns[ i ].asSorting[0]; - } - } - - /* Do a first pass on the sorting classes (allows any size changes to be taken into - * account, and also will apply sorting disabled classes if disabled - */ - _fnSortingClasses( oSettings ); - - if ( features.bSort ) - { - _fnCallbackReg( oSettings, 'aoDrawCallback', function () { - if ( oSettings.bSorted ) { - var aSort = _fnSortFlatten( oSettings ); - var sortedColumns = {}; - - $.each( aSort, function (i, val) { - sortedColumns[ val.src ] = val.dir; - } ); - - _fnCallbackFire( oSettings, null, 'order', [oSettings, aSort, sortedColumns] ); - _fnSortAria( oSettings ); - } - } ); - } - - _fnCallbackReg( oSettings, 'aoDrawCallback', function () { - if ( oSettings.bSorted || _fnDataSource( oSettings ) === 'ssp' || features.bDeferRender ) { - _fnSortingClasses( oSettings ); - } - }, 'sc' ); - - - /* - * Final init - * Cache the header, body and footer as required, creating them if needed - */ - - /* Browser support detection */ - _fnBrowserDetect( oSettings ); - - // Work around for Webkit bug 83867 - store the caption-side before removing from doc - var captions = $this.children('caption').each( function () { - this._captionSide = $this.css('caption-side'); - } ); - - var thead = $this.children('thead'); - if ( thead.length === 0 ) - { - thead = $('<thead/>').appendTo(this); - } - oSettings.nTHead = thead[0]; - - var tbody = $this.children('tbody'); - if ( tbody.length === 0 ) - { - tbody = $('<tbody/>').appendTo(this); - } - oSettings.nTBody = tbody[0]; - - var tfoot = $this.children('tfoot'); - if ( tfoot.length === 0 && captions.length > 0 && (oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "") ) - { - // If we are a scrolling table, and no footer has been given, then we need to create - // a tfoot element for the caption element to be appended to - tfoot = $('<tfoot/>').appendTo(this); - } - - if ( tfoot.length === 0 || tfoot.children().length === 0 ) { - $this.addClass( oClasses.sNoFooter ); - } - else if ( tfoot.length > 0 ) { - oSettings.nTFoot = tfoot[0]; - _fnDetectHeader( oSettings.aoFooter, oSettings.nTFoot ); - } - - /* Check if there is data passing into the constructor */ - if ( oInit.aaData ) - { - for ( i=0 ; i<oInit.aaData.length ; i++ ) - { - _fnAddData( oSettings, oInit.aaData[ i ] ); - } - } - else if ( oSettings.bDeferLoading || _fnDataSource( oSettings ) == 'dom' ) - { - /* Grab the data from the page - only do this when deferred loading or no Ajax - * source since there is no point in reading the DOM data if we are then going - * to replace it with Ajax data - */ - _fnAddTr( oSettings, $(oSettings.nTBody).children('tr') ); - } - - /* Copy the data index array */ - oSettings.aiDisplay = oSettings.aiDisplayMaster.slice(); - - /* Initialisation complete - table can be drawn */ - oSettings.bInitialised = true; - - /* Check if we need to initialise the table (it might not have been handed off to the - * language processor) - */ - if ( bInitHandedOff === false ) - { - _fnInitialise( oSettings ); - } - } ); - _that = null; - return this; - }; - - - - /** - * Computed structure of the DataTables API, defined by the options passed to - * `DataTable.Api.register()` when building the API. - * - * The structure is built in order to speed creation and extension of the Api - * objects since the extensions are effectively pre-parsed. - * - * The array is an array of objects with the following structure, where this - * base array represents the Api prototype base: - * - * [ - * { - * name: 'data' -- string - Property name - * val: function () {}, -- function - Api method (or undefined if just an object - * methodExt: [ ... ], -- array - Array of Api object definitions to extend the method result - * propExt: [ ... ] -- array - Array of Api object definitions to extend the property - * }, - * { - * name: 'row' - * val: {}, - * methodExt: [ ... ], - * propExt: [ - * { - * name: 'data' - * val: function () {}, - * methodExt: [ ... ], - * propExt: [ ... ] - * }, - * ... - * ] - * } - * ] - * - * @type {Array} - * @ignore - */ - var __apiStruct = []; - - - /** - * `Array.prototype` reference. - * - * @type object - * @ignore - */ - var __arrayProto = Array.prototype; - - - /** - * Abstraction for `context` parameter of the `Api` constructor to allow it to - * take several different forms for ease of use. - * - * Each of the input parameter types will be converted to a DataTables settings - * object where possible. - * - * @param {string|node|jQuery|object} mixed DataTable identifier. Can be one - * of: - * - * * `string` - jQuery selector. Any DataTables' matching the given selector - * with be found and used. - * * `node` - `TABLE` node which has already been formed into a DataTable. - * * `jQuery` - A jQuery object of `TABLE` nodes. - * * `object` - DataTables settings object - * * `DataTables.Api` - API instance - * @return {array|null} Matching DataTables settings objects. `null` or - * `undefined` is returned if no matching DataTable is found. - * @ignore - */ - var _toSettings = function ( mixed ) - { - var idx, jq; - var settings = DataTable.settings; - var tables = $.map( settings, function (el, i) { - return el.nTable; - } ); - - if ( ! mixed ) { - return []; - } - else if ( mixed.nTable && mixed.oApi ) { - // DataTables settings object - return [ mixed ]; - } - else if ( mixed.nodeName && mixed.nodeName.toLowerCase() === 'table' ) { - // Table node - idx = $.inArray( mixed, tables ); - return idx !== -1 ? [ settings[idx] ] : null; - } - else if ( mixed && typeof mixed.settings === 'function' ) { - return mixed.settings().toArray(); - } - else if ( typeof mixed === 'string' ) { - // jQuery selector - jq = $(mixed); - } - else if ( mixed instanceof $ ) { - // jQuery object (also DataTables instance) - jq = mixed; - } - - if ( jq ) { - return jq.map( function(i) { - idx = $.inArray( this, tables ); - return idx !== -1 ? settings[idx] : null; - } ).toArray(); - } - }; - - - /** - * DataTables API class - used to control and interface with one or more - * DataTables enhanced tables. - * - * The API class is heavily based on jQuery, presenting a chainable interface - * that you can use to interact with tables. Each instance of the API class has - * a "context" - i.e. the tables that it will operate on. This could be a single - * table, all tables on a page or a sub-set thereof. - * - * Additionally the API is designed to allow you to easily work with the data in - * the tables, retrieving and manipulating it as required. This is done by - * presenting the API class as an array like interface. The contents of the - * array depend upon the actions requested by each method (for example - * `rows().nodes()` will return an array of nodes, while `rows().data()` will - * return an array of objects or arrays depending upon your table's - * configuration). The API object has a number of array like methods (`push`, - * `pop`, `reverse` etc) as well as additional helper methods (`each`, `pluck`, - * `unique` etc) to assist your working with the data held in a table. - * - * Most methods (those which return an Api instance) are chainable, which means - * the return from a method call also has all of the methods available that the - * top level object had. For example, these two calls are equivalent: - * - * // Not chained - * api.row.add( {...} ); - * api.draw(); - * - * // Chained - * api.row.add( {...} ).draw(); - * - * @class DataTable.Api - * @param {array|object|string|jQuery} context DataTable identifier. This is - * used to define which DataTables enhanced tables this API will operate on. - * Can be one of: - * - * * `string` - jQuery selector. Any DataTables' matching the given selector - * with be found and used. - * * `node` - `TABLE` node which has already been formed into a DataTable. - * * `jQuery` - A jQuery object of `TABLE` nodes. - * * `object` - DataTables settings object - * @param {array} [data] Data to initialise the Api instance with. - * - * @example - * // Direct initialisation during DataTables construction - * var api = $('#example').DataTable(); - * - * @example - * // Initialisation using a DataTables jQuery object - * var api = $('#example').dataTable().api(); - * - * @example - * // Initialisation as a constructor - * var api = new $.fn.DataTable.Api( 'table.dataTable' ); - */ - _Api = function ( context, data ) - { - if ( ! (this instanceof _Api) ) { - return new _Api( context, data ); - } - - var settings = []; - var ctxSettings = function ( o ) { - var a = _toSettings( o ); - if ( a ) { - settings.push.apply( settings, a ); - } - }; - - if ( $.isArray( context ) ) { - for ( var i=0, ien=context.length ; i<ien ; i++ ) { - ctxSettings( context[i] ); - } - } - else { - ctxSettings( context ); - } - - // Remove duplicates - this.context = _unique( settings ); - - // Initial data - if ( data ) { - this.push.apply( this, data.toArray ? data.toArray() : data ); - } - - // selector - this.selector = { - rows: null, - cols: null, - opts: null - }; - - _Api.extend( this, this, __apiStruct ); - }; - - DataTable.Api = _Api; - - _Api.prototype = /** @lends DataTables.Api */{ - any: function () - { - return this.flatten().length !== 0; - }, - - - concat: __arrayProto.concat, - - - context: [], // array of table settings objects - - - each: function ( fn ) - { - for ( var i=0, ien=this.length ; i<ien; i++ ) { - fn.call( this, this[i], i, this ); - } - - return this; - }, - - - eq: function ( idx ) - { - var ctx = this.context; - - return ctx.length > idx ? - new _Api( ctx[idx], this[idx] ) : - null; - }, - - - filter: function ( fn ) - { - var a = []; - - if ( __arrayProto.filter ) { - a = __arrayProto.filter.call( this, fn, this ); - } - else { - // Compatibility for browsers without EMCA-252-5 (JS 1.6) - for ( var i=0, ien=this.length ; i<ien ; i++ ) { - if ( fn.call( this, this[i], i, this ) ) { - a.push( this[i] ); - } - } - } - - return new _Api( this.context, a ); - }, - - - flatten: function () - { - var a = []; - return new _Api( this.context, a.concat.apply( a, this.toArray() ) ); - }, - - - join: __arrayProto.join, - - - indexOf: __arrayProto.indexOf || function (obj, start) - { - for ( var i=(start || 0), ien=this.length ; i<ien ; i++ ) { - if ( this[i] === obj ) { - return i; - } - } - return -1; - }, - - iterator: function ( flatten, type, fn, alwaysNew ) { - var - a = [], ret, - i, ien, j, jen, - context = this.context, - rows, items, item, - selector = this.selector; - - // Argument shifting - if ( typeof flatten === 'string' ) { - alwaysNew = fn; - fn = type; - type = flatten; - flatten = false; - } - - for ( i=0, ien=context.length ; i<ien ; i++ ) { - var apiInst = new _Api( context[i] ); - - if ( type === 'table' ) { - ret = fn.call( apiInst, context[i], i ); - - if ( ret !== undefined ) { - a.push( ret ); - } - } - else if ( type === 'columns' || type === 'rows' ) { - // this has same length as context - one entry for each table - ret = fn.call( apiInst, context[i], this[i], i ); - - if ( ret !== undefined ) { - a.push( ret ); - } - } - else if ( type === 'column' || type === 'column-rows' || type === 'row' || type === 'cell' ) { - // columns and rows share the same structure. - // 'this' is an array of column indexes for each context - items = this[i]; - - if ( type === 'column-rows' ) { - rows = _selector_row_indexes( context[i], selector.opts ); - } - - for ( j=0, jen=items.length ; j<jen ; j++ ) { - item = items[j]; - - if ( type === 'cell' ) { - ret = fn.call( apiInst, context[i], item.row, item.column, i, j ); - } - else { - ret = fn.call( apiInst, context[i], item, i, j, rows ); - } - - if ( ret !== undefined ) { - a.push( ret ); - } - } - } - } - - if ( a.length || alwaysNew ) { - var api = new _Api( context, flatten ? a.concat.apply( [], a ) : a ); - var apiSelector = api.selector; - apiSelector.rows = selector.rows; - apiSelector.cols = selector.cols; - apiSelector.opts = selector.opts; - return api; - } - return this; - }, - - - lastIndexOf: __arrayProto.lastIndexOf || function (obj, start) - { - // Bit cheeky... - return this.indexOf.apply( this.toArray.reverse(), arguments ); - }, - - - length: 0, - - - map: function ( fn ) - { - var a = []; - - if ( __arrayProto.map ) { - a = __arrayProto.map.call( this, fn, this ); - } - else { - // Compatibility for browsers without EMCA-252-5 (JS 1.6) - for ( var i=0, ien=this.length ; i<ien ; i++ ) { - a.push( fn.call( this, this[i], i ) ); - } - } - - return new _Api( this.context, a ); - }, - - - pluck: function ( prop ) - { - return this.map( function ( el ) { - return el[ prop ]; - } ); - }, - - pop: __arrayProto.pop, - - - push: __arrayProto.push, - - - // Does not return an API instance - reduce: __arrayProto.reduce || function ( fn, init ) - { - return _fnReduce( this, fn, init, 0, this.length, 1 ); - }, - - - reduceRight: __arrayProto.reduceRight || function ( fn, init ) - { - return _fnReduce( this, fn, init, this.length-1, -1, -1 ); - }, - - - reverse: __arrayProto.reverse, - - - // Object with rows, columns and opts - selector: null, - - - shift: __arrayProto.shift, - - - sort: __arrayProto.sort, // ? name - order? - - - splice: __arrayProto.splice, - - - toArray: function () - { - return __arrayProto.slice.call( this ); - }, - - - to$: function () - { - return $( this ); - }, - - - toJQuery: function () - { - return $( this ); - }, - - - unique: function () - { - return new _Api( this.context, _unique(this) ); - }, - - - unshift: __arrayProto.unshift - }; - - - _Api.extend = function ( scope, obj, ext ) - { - // Only extend API instances and static properties of the API - if ( ! ext.length || ! obj || ( ! (obj instanceof _Api) && ! obj.__dt_wrapper ) ) { - return; - } - - var - i, ien, - j, jen, - struct, inner, - methodScoping = function ( scope, fn, struc ) { - return function () { - var ret = fn.apply( scope, arguments ); - - // Method extension - _Api.extend( ret, ret, struc.methodExt ); - return ret; - }; - }; - - for ( i=0, ien=ext.length ; i<ien ; i++ ) { - struct = ext[i]; - - // Value - obj[ struct.name ] = typeof struct.val === 'function' ? - methodScoping( scope, struct.val, struct ) : - $.isPlainObject( struct.val ) ? - {} : - struct.val; - - obj[ struct.name ].__dt_wrapper = true; - - // Property extension - _Api.extend( scope, obj[ struct.name ], struct.propExt ); - } - }; - - - // @todo - Is there need for an augment function? - // _Api.augment = function ( inst, name ) - // { - // // Find src object in the structure from the name - // var parts = name.split('.'); - - // _Api.extend( inst, obj ); - // }; - - - // [ - // { - // name: 'data' -- string - Property name - // val: function () {}, -- function - Api method (or undefined if just an object - // methodExt: [ ... ], -- array - Array of Api object definitions to extend the method result - // propExt: [ ... ] -- array - Array of Api object definitions to extend the property - // }, - // { - // name: 'row' - // val: {}, - // methodExt: [ ... ], - // propExt: [ - // { - // name: 'data' - // val: function () {}, - // methodExt: [ ... ], - // propExt: [ ... ] - // }, - // ... - // ] - // } - // ] - - _Api.register = _api_register = function ( name, val ) - { - if ( $.isArray( name ) ) { - for ( var j=0, jen=name.length ; j<jen ; j++ ) { - _Api.register( name[j], val ); - } - return; - } - - var - i, ien, - heir = name.split('.'), - struct = __apiStruct, - key, method; - - var find = function ( src, name ) { - for ( var i=0, ien=src.length ; i<ien ; i++ ) { - if ( src[i].name === name ) { - return src[i]; - } - } - return null; - }; - - for ( i=0, ien=heir.length ; i<ien ; i++ ) { - method = heir[i].indexOf('()') !== -1; - key = method ? - heir[i].replace('()', '') : - heir[i]; - - var src = find( struct, key ); - if ( ! src ) { - src = { - name: key, - val: {}, - methodExt: [], - propExt: [] - }; - struct.push( src ); - } - - if ( i === ien-1 ) { - src.val = val; - } - else { - struct = method ? - src.methodExt : - src.propExt; - } - } - }; - - - _Api.registerPlural = _api_registerPlural = function ( pluralName, singularName, val ) { - _Api.register( pluralName, val ); - - _Api.register( singularName, function () { - var ret = val.apply( this, arguments ); - - if ( ret === this ) { - // Returned item is the API instance that was passed in, return it - return this; - } - else if ( ret instanceof _Api ) { - // New API instance returned, want the value from the first item - // in the returned array for the singular result. - return ret.length ? - $.isArray( ret[0] ) ? - new _Api( ret.context, ret[0] ) : // Array results are 'enhanced' - ret[0] : - undefined; - } - - // Non-API return - just fire it back - return ret; - } ); - }; - - - /** - * Selector for HTML tables. Apply the given selector to the give array of - * DataTables settings objects. - * - * @param {string|integer} [selector] jQuery selector string or integer - * @param {array} Array of DataTables settings objects to be filtered - * @return {array} - * @ignore - */ - var __table_selector = function ( selector, a ) - { - // Integer is used to pick out a table by index - if ( typeof selector === 'number' ) { - return [ a[ selector ] ]; - } - - // Perform a jQuery selector on the table nodes - var nodes = $.map( a, function (el, i) { - return el.nTable; - } ); - - return $(nodes) - .filter( selector ) - .map( function (i) { - // Need to translate back from the table node to the settings - var idx = $.inArray( this, nodes ); - return a[ idx ]; - } ) - .toArray(); - }; - - - - /** - * Context selector for the API's context (i.e. the tables the API instance - * refers to. - * - * @name DataTable.Api#tables - * @param {string|integer} [selector] Selector to pick which tables the iterator - * should operate on. If not given, all tables in the current context are - * used. This can be given as a jQuery selector (for example `':gt(0)'`) to - * select multiple tables or as an integer to select a single table. - * @returns {DataTable.Api} Returns a new API instance if a selector is given. - */ - _api_register( 'tables()', function ( selector ) { - // A new instance is created if there was a selector specified - return selector ? - new _Api( __table_selector( selector, this.context ) ) : - this; - } ); - - - _api_register( 'table()', function ( selector ) { - var tables = this.tables( selector ); - var ctx = tables.context; - - // Truncate to the first matched table - return ctx.length ? - new _Api( ctx[0] ) : - tables; - } ); - - - _api_registerPlural( 'tables().nodes()', 'table().node()' , function () { - return this.iterator( 'table', function ( ctx ) { - return ctx.nTable; - }, 1 ); - } ); - - - _api_registerPlural( 'tables().body()', 'table().body()' , function () { - return this.iterator( 'table', function ( ctx ) { - return ctx.nTBody; - }, 1 ); - } ); - - - _api_registerPlural( 'tables().header()', 'table().header()' , function () { - return this.iterator( 'table', function ( ctx ) { - return ctx.nTHead; - }, 1 ); - } ); - - - _api_registerPlural( 'tables().footer()', 'table().footer()' , function () { - return this.iterator( 'table', function ( ctx ) { - return ctx.nTFoot; - }, 1 ); - } ); - - - _api_registerPlural( 'tables().containers()', 'table().container()' , function () { - return this.iterator( 'table', function ( ctx ) { - return ctx.nTableWrapper; - }, 1 ); - } ); - - - - /** - * Redraw the tables in the current context. - * - * @param {boolean} [reset=true] Reset (default) or hold the current paging - * position. A full re-sort and re-filter is performed when this method is - * called, which is why the pagination reset is the default action. - * @returns {DataTables.Api} this - */ - _api_register( 'draw()', function ( resetPaging ) { - return this.iterator( 'table', function ( settings ) { - _fnReDraw( settings, resetPaging===false ); - } ); - } ); - - - - /** - * Get the current page index. - * - * @return {integer} Current page index (zero based) - *//** - * Set the current page. - * - * Note that if you attempt to show a page which does not exist, DataTables will - * not throw an error, but rather reset the paging. - * - * @param {integer|string} action The paging action to take. This can be one of: - * * `integer` - The page index to jump to - * * `string` - An action to take: - * * `first` - Jump to first page. - * * `next` - Jump to the next page - * * `previous` - Jump to previous page - * * `last` - Jump to the last page. - * @returns {DataTables.Api} this - */ - _api_register( 'page()', function ( action ) { - if ( action === undefined ) { - return this.page.info().page; // not an expensive call - } - - // else, have an action to take on all tables - return this.iterator( 'table', function ( settings ) { - _fnPageChange( settings, action ); - } ); - } ); - - - /** - * Paging information for the first table in the current context. - * - * If you require paging information for another table, use the `table()` method - * with a suitable selector. - * - * @return {object} Object with the following properties set: - * * `page` - Current page index (zero based - i.e. the first page is `0`) - * * `pages` - Total number of pages - * * `start` - Display index for the first record shown on the current page - * * `end` - Display index for the last record shown on the current page - * * `length` - Display length (number of records). Note that generally `start - * + length = end`, but this is not always true, for example if there are - * only 2 records to show on the final page, with a length of 10. - * * `recordsTotal` - Full data set length - * * `recordsDisplay` - Data set length once the current filtering criterion - * are applied. - */ - _api_register( 'page.info()', function ( action ) { - if ( this.context.length === 0 ) { - return undefined; - } - - var - settings = this.context[0], - start = settings._iDisplayStart, - len = settings._iDisplayLength, - visRecords = settings.fnRecordsDisplay(), - all = len === -1; - - return { - "page": all ? 0 : Math.floor( start / len ), - "pages": all ? 1 : Math.ceil( visRecords / len ), - "start": start, - "end": settings.fnDisplayEnd(), - "length": len, - "recordsTotal": settings.fnRecordsTotal(), - "recordsDisplay": visRecords - }; - } ); - - - /** - * Get the current page length. - * - * @return {integer} Current page length. Note `-1` indicates that all records - * are to be shown. - *//** - * Set the current page length. - * - * @param {integer} Page length to set. Use `-1` to show all records. - * @returns {DataTables.Api} this - */ - _api_register( 'page.len()', function ( len ) { - // Note that we can't call this function 'length()' because `length` - // is a Javascript property of functions which defines how many arguments - // the function expects. - if ( len === undefined ) { - return this.context.length !== 0 ? - this.context[0]._iDisplayLength : - undefined; - } - - // else, set the page length - return this.iterator( 'table', function ( settings ) { - _fnLengthChange( settings, len ); - } ); - } ); - - - - var __reload = function ( settings, holdPosition, callback ) { - // Use the draw event to trigger a callback - if ( callback ) { - var api = new _Api( settings ); - - api.one( 'draw', function () { - callback( api.ajax.json() ); - } ); - } - - if ( _fnDataSource( settings ) == 'ssp' ) { - _fnReDraw( settings, holdPosition ); - } - else { - // Trigger xhr - _fnProcessingDisplay( settings, true ); - - _fnBuildAjax( settings, [], function( json ) { - _fnClearTable( settings ); - - var data = _fnAjaxDataSrc( settings, json ); - for ( var i=0, ien=data.length ; i<ien ; i++ ) { - _fnAddData( settings, data[i] ); - } - - _fnReDraw( settings, holdPosition ); - _fnProcessingDisplay( settings, false ); - } ); - } - }; - - - /** - * Get the JSON response from the last Ajax request that DataTables made to the - * server. Note that this returns the JSON from the first table in the current - * context. - * - * @return {object} JSON received from the server. - */ - _api_register( 'ajax.json()', function () { - var ctx = this.context; - - if ( ctx.length > 0 ) { - return ctx[0].json; - } - - // else return undefined; - } ); - - - /** - * Get the data submitted in the last Ajax request - */ - _api_register( 'ajax.params()', function () { - var ctx = this.context; - - if ( ctx.length > 0 ) { - return ctx[0].oAjaxData; - } - - // else return undefined; - } ); - - - /** - * Reload tables from the Ajax data source. Note that this function will - * automatically re-draw the table when the remote data has been loaded. - * - * @param {boolean} [reset=true] Reset (default) or hold the current paging - * position. A full re-sort and re-filter is performed when this method is - * called, which is why the pagination reset is the default action. - * @returns {DataTables.Api} this - */ - _api_register( 'ajax.reload()', function ( callback, resetPaging ) { - return this.iterator( 'table', function (settings) { - __reload( settings, resetPaging===false, callback ); - } ); - } ); - - - /** - * Get the current Ajax URL. Note that this returns the URL from the first - * table in the current context. - * - * @return {string} Current Ajax source URL - *//** - * Set the Ajax URL. Note that this will set the URL for all tables in the - * current context. - * - * @param {string} url URL to set. - * @returns {DataTables.Api} this - */ - _api_register( 'ajax.url()', function ( url ) { - var ctx = this.context; - - if ( url === undefined ) { - // get - if ( ctx.length === 0 ) { - return undefined; - } - ctx = ctx[0]; - - return ctx.ajax ? - $.isPlainObject( ctx.ajax ) ? - ctx.ajax.url : - ctx.ajax : - ctx.sAjaxSource; - } - - // set - return this.iterator( 'table', function ( settings ) { - if ( $.isPlainObject( settings.ajax ) ) { - settings.ajax.url = url; - } - else { - settings.ajax = url; - } - // No need to consider sAjaxSource here since DataTables gives priority - // to `ajax` over `sAjaxSource`. So setting `ajax` here, renders any - // value of `sAjaxSource` redundant. - } ); - } ); - - - /** - * Load data from the newly set Ajax URL. Note that this method is only - * available when `ajax.url()` is used to set a URL. Additionally, this method - * has the same effect as calling `ajax.reload()` but is provided for - * convenience when setting a new URL. Like `ajax.reload()` it will - * automatically redraw the table once the remote data has been loaded. - * - * @returns {DataTables.Api} this - */ - _api_register( 'ajax.url().load()', function ( callback, resetPaging ) { - // Same as a reload, but makes sense to present it for easy access after a - // url change - return this.iterator( 'table', function ( ctx ) { - __reload( ctx, resetPaging===false, callback ); - } ); - } ); - - - - - var _selector_run = function ( type, selector, selectFn, settings, opts ) - { - var - out = [], res, - a, i, ien, j, jen, - selectorType = typeof selector; - - // Can't just check for isArray here, as an API or jQuery instance might be - // given with their array like look - if ( ! selector || selectorType === 'string' || selectorType === 'function' || selector.length === undefined ) { - selector = [ selector ]; - } - - for ( i=0, ien=selector.length ; i<ien ; i++ ) { - a = selector[i] && selector[i].split ? - selector[i].split(',') : - [ selector[i] ]; - - for ( j=0, jen=a.length ; j<jen ; j++ ) { - res = selectFn( typeof a[j] === 'string' ? $.trim(a[j]) : a[j] ); - - if ( res && res.length ) { - out.push.apply( out, res ); - } - } - } - - // selector extensions - var ext = _ext.selector[ type ]; - if ( ext.length ) { - for ( i=0, ien=ext.length ; i<ien ; i++ ) { - out = ext[i]( settings, opts, out ); - } - } - - return out; - }; - - - var _selector_opts = function ( opts ) - { - if ( ! opts ) { - opts = {}; - } - - // Backwards compatibility for 1.9- which used the terminology filter rather - // than search - if ( opts.filter && opts.search === undefined ) { - opts.search = opts.filter; - } - - return $.extend( { - search: 'none', - order: 'current', - page: 'all' - }, opts ); - }; - - - var _selector_first = function ( inst ) - { - // Reduce the API instance to the first item found - for ( var i=0, ien=inst.length ; i<ien ; i++ ) { - if ( inst[i].length > 0 ) { - // Assign the first element to the first item in the instance - // and truncate the instance and context - inst[0] = inst[i]; - inst[0].length = 1; - inst.length = 1; - inst.context = [ inst.context[i] ]; - - return inst; - } - } - - // Not found - return an empty instance - inst.length = 0; - return inst; - }; - - - var _selector_row_indexes = function ( settings, opts ) - { - var - i, ien, tmp, a=[], - displayFiltered = settings.aiDisplay, - displayMaster = settings.aiDisplayMaster; - - var - search = opts.search, // none, applied, removed - order = opts.order, // applied, current, index (original - compatibility with 1.9) - page = opts.page; // all, current - - if ( _fnDataSource( settings ) == 'ssp' ) { - // In server-side processing mode, most options are irrelevant since - // rows not shown don't exist and the index order is the applied order - // Removed is a special case - for consistency just return an empty - // array - return search === 'removed' ? - [] : - _range( 0, displayMaster.length ); - } - else if ( page == 'current' ) { - // Current page implies that order=current and fitler=applied, since it is - // fairly senseless otherwise, regardless of what order and search actually - // are - for ( i=settings._iDisplayStart, ien=settings.fnDisplayEnd() ; i<ien ; i++ ) { - a.push( displayFiltered[i] ); - } - } - else if ( order == 'current' || order == 'applied' ) { - a = search == 'none' ? - displayMaster.slice() : // no search - search == 'applied' ? - displayFiltered.slice() : // applied search - $.map( displayMaster, function (el, i) { // removed search - return $.inArray( el, displayFiltered ) === -1 ? el : null; - } ); - } - else if ( order == 'index' || order == 'original' ) { - for ( i=0, ien=settings.aoData.length ; i<ien ; i++ ) { - if ( search == 'none' ) { - a.push( i ); - } - else { // applied | removed - tmp = $.inArray( i, displayFiltered ); - - if ((tmp === -1 && search == 'removed') || - (tmp >= 0 && search == 'applied') ) - { - a.push( i ); - } - } - } - } - - return a; - }; - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Rows - * - * {} - no selector - use all available rows - * {integer} - row aoData index - * {node} - TR node - * {string} - jQuery selector to apply to the TR elements - * {array} - jQuery array of nodes, or simply an array of TR nodes - * - */ - - - var __row_selector = function ( settings, selector, opts ) - { - var run = function ( sel ) { - var selInt = _intVal( sel ); - var i, ien; - - // Short cut - selector is a number and no options provided (default is - // all records, so no need to check if the index is in there, since it - // must be - dev error if the index doesn't exist). - if ( selInt !== null && ! opts ) { - return [ selInt ]; - } - - var rows = _selector_row_indexes( settings, opts ); - - if ( selInt !== null && $.inArray( selInt, rows ) !== -1 ) { - // Selector - integer - return [ selInt ]; - } - else if ( ! sel ) { - // Selector - none - return rows; - } - - // Selector - function - if ( typeof sel === 'function' ) { - return $.map( rows, function (idx) { - var row = settings.aoData[ idx ]; - return sel( idx, row._aData, row.nTr ) ? idx : null; - } ); - } - - // Get nodes in the order from the `rows` array with null values removed - var nodes = _removeEmpty( - _pluck_order( settings.aoData, rows, 'nTr' ) - ); - - // Selector - node - if ( sel.nodeName ) { - if ( $.inArray( sel, nodes ) !== -1 ) { - return [ sel._DT_RowIndex ]; // sel is a TR node that is in the table - // and DataTables adds a prop for fast lookup - } - } - - // Selector - jQuery selector string, array of nodes or jQuery object/ - // As jQuery's .filter() allows jQuery objects to be passed in filter, - // it also allows arrays, so this will cope with all three options - return $(nodes) - .filter( sel ) - .map( function () { - return this._DT_RowIndex; - } ) - .toArray(); - }; - - return _selector_run( 'row', selector, run, settings, opts ); - }; - - - _api_register( 'rows()', function ( selector, opts ) { - // argument shifting - if ( selector === undefined ) { - selector = ''; - } - else if ( $.isPlainObject( selector ) ) { - opts = selector; - selector = ''; - } - - opts = _selector_opts( opts ); - - var inst = this.iterator( 'table', function ( settings ) { - return __row_selector( settings, selector, opts ); - }, 1 ); - - // Want argument shifting here and in __row_selector? - inst.selector.rows = selector; - inst.selector.opts = opts; - - return inst; - } ); - - _api_register( 'rows().nodes()', function () { - return this.iterator( 'row', function ( settings, row ) { - return settings.aoData[ row ].nTr || undefined; - }, 1 ); - } ); - - _api_register( 'rows().data()', function () { - return this.iterator( true, 'rows', function ( settings, rows ) { - return _pluck_order( settings.aoData, rows, '_aData' ); - }, 1 ); - } ); - - _api_registerPlural( 'rows().cache()', 'row().cache()', function ( type ) { - return this.iterator( 'row', function ( settings, row ) { - var r = settings.aoData[ row ]; - return type === 'search' ? r._aFilterData : r._aSortData; - }, 1 ); - } ); - - _api_registerPlural( 'rows().invalidate()', 'row().invalidate()', function ( src ) { - return this.iterator( 'row', function ( settings, row ) { - _fnInvalidate( settings, row, src ); - } ); - } ); - - _api_registerPlural( 'rows().indexes()', 'row().index()', function () { - return this.iterator( 'row', function ( settings, row ) { - return row; - }, 1 ); - } ); - - _api_registerPlural( 'rows().remove()', 'row().remove()', function () { - var that = this; - - return this.iterator( 'row', function ( settings, row, thatIdx ) { - var data = settings.aoData; - - data.splice( row, 1 ); - - // Update the _DT_RowIndex parameter on all rows in the table - for ( var i=0, ien=data.length ; i<ien ; i++ ) { - if ( data[i].nTr !== null ) { - data[i].nTr._DT_RowIndex = i; - } - } - - // Remove the target row from the search array - var displayIndex = $.inArray( row, settings.aiDisplay ); - - // Delete from the display arrays - _fnDeleteIndex( settings.aiDisplayMaster, row ); - _fnDeleteIndex( settings.aiDisplay, row ); - _fnDeleteIndex( that[ thatIdx ], row, false ); // maintain local indexes - - // Check for an 'overflow' they case for displaying the table - _fnLengthOverflow( settings ); - } ); - } ); - - - _api_register( 'rows.add()', function ( rows ) { - var newRows = this.iterator( 'table', function ( settings ) { - var row, i, ien; - var out = []; - - for ( i=0, ien=rows.length ; i<ien ; i++ ) { - row = rows[i]; - - if ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) { - out.push( _fnAddTr( settings, row )[0] ); - } - else { - out.push( _fnAddData( settings, row ) ); - } - } - - return out; - }, 1 ); - - // Return an Api.rows() extended instance, so rows().nodes() etc can be used - var modRows = this.rows( -1 ); - modRows.pop(); - modRows.push.apply( modRows, newRows.toArray() ); - - return modRows; - } ); - - - - - - /** - * - */ - _api_register( 'row()', function ( selector, opts ) { - return _selector_first( this.rows( selector, opts ) ); - } ); - - - _api_register( 'row().data()', function ( data ) { - var ctx = this.context; - - if ( data === undefined ) { - // Get - return ctx.length && this.length ? - ctx[0].aoData[ this[0] ]._aData : - undefined; - } - - // Set - ctx[0].aoData[ this[0] ]._aData = data; - - // Automatically invalidate - _fnInvalidate( ctx[0], this[0], 'data' ); - - return this; - } ); - - - _api_register( 'row().node()', function () { - var ctx = this.context; - - return ctx.length && this.length ? - ctx[0].aoData[ this[0] ].nTr || null : - null; - } ); - - - _api_register( 'row.add()', function ( row ) { - // Allow a jQuery object to be passed in - only a single row is added from - // it though - the first element in the set - if ( row instanceof $ && row.length ) { - row = row[0]; - } - - var rows = this.iterator( 'table', function ( settings ) { - if ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) { - return _fnAddTr( settings, row )[0]; - } - return _fnAddData( settings, row ); - } ); - - // Return an Api.rows() extended instance, with the newly added row selected - return this.row( rows[0] ); - } ); - - - - var __details_add = function ( ctx, row, data, klass ) - { - // Convert to array of TR elements - var rows = []; - var addRow = function ( r, k ) { - // Recursion to allow for arrays of jQuery objects - if ( $.isArray( r ) || r instanceof $ ) { - for ( var i=0, ien=r.length ; i<ien ; i++ ) { - addRow( r[i], k ); - } - return; - } - - // If we get a TR element, then just add it directly - up to the dev - // to add the correct number of columns etc - if ( r.nodeName && r.nodeName.toLowerCase() === 'tr' ) { - rows.push( r ); - } - else { - // Otherwise create a row with a wrapper - var created = $('<tr><td/></tr>').addClass( k ); - $('td', created) - .addClass( k ) - .html( r ) - [0].colSpan = _fnVisbleColumns( ctx ); - - rows.push( created[0] ); - } - }; - - addRow( data, klass ); - - if ( row._details ) { - row._details.remove(); - } - - row._details = $(rows); - - // If the children were already shown, that state should be retained - if ( row._detailsShow ) { - row._details.insertAfter( row.nTr ); - } - }; - - - var __details_remove = function ( api, idx ) - { - var ctx = api.context; - - if ( ctx.length ) { - var row = ctx[0].aoData[ idx !== undefined ? idx : api[0] ]; - - if ( row._details ) { - row._details.remove(); - - row._detailsShow = undefined; - row._details = undefined; - } - } - }; - - - var __details_display = function ( api, show ) { - var ctx = api.context; - - if ( ctx.length && api.length ) { - var row = ctx[0].aoData[ api[0] ]; - - if ( row._details ) { - row._detailsShow = show; - - if ( show ) { - row._details.insertAfter( row.nTr ); - } - else { - row._details.detach(); - } - - __details_events( ctx[0] ); - } - } - }; - - - var __details_events = function ( settings ) - { - var api = new _Api( settings ); - var namespace = '.dt.DT_details'; - var drawEvent = 'draw'+namespace; - var colvisEvent = 'column-visibility'+namespace; - var destroyEvent = 'destroy'+namespace; - var data = settings.aoData; - - api.off( drawEvent +' '+ colvisEvent +' '+ destroyEvent ); - - if ( _pluck( data, '_details' ).length > 0 ) { - // On each draw, insert the required elements into the document - api.on( drawEvent, function ( e, ctx ) { - if ( settings !== ctx ) { - return; - } - - api.rows( {page:'current'} ).eq(0).each( function (idx) { - // Internal data grab - var row = data[ idx ]; - - if ( row._detailsShow ) { - row._details.insertAfter( row.nTr ); - } - } ); - } ); - - // Column visibility change - update the colspan - api.on( colvisEvent, function ( e, ctx, idx, vis ) { - if ( settings !== ctx ) { - return; - } - - // Update the colspan for the details rows (note, only if it already has - // a colspan) - var row, visible = _fnVisbleColumns( ctx ); - - for ( var i=0, ien=data.length ; i<ien ; i++ ) { - row = data[i]; - - if ( row._details ) { - row._details.children('td[colspan]').attr('colspan', visible ); - } - } - } ); - - // Table destroyed - nuke any child rows - api.on( destroyEvent, function ( e, ctx ) { - if ( settings !== ctx ) { - return; - } - - for ( var i=0, ien=data.length ; i<ien ; i++ ) { - if ( data[i]._details ) { - __details_remove( api, i ); - } - } - } ); - } - }; - - // Strings for the method names to help minification - var _emp = ''; - var _child_obj = _emp+'row().child'; - var _child_mth = _child_obj+'()'; - - // data can be: - // tr - // string - // jQuery or array of any of the above - _api_register( _child_mth, function ( data, klass ) { - var ctx = this.context; - - if ( data === undefined ) { - // get - return ctx.length && this.length ? - ctx[0].aoData[ this[0] ]._details : - undefined; - } - else if ( data === true ) { - // show - this.child.show(); - } - else if ( data === false ) { - // remove - __details_remove( this ); - } - else if ( ctx.length && this.length ) { - // set - __details_add( ctx[0], ctx[0].aoData[ this[0] ], data, klass ); - } - - return this; - } ); - - - _api_register( [ - _child_obj+'.show()', - _child_mth+'.show()' // only when `child()` was called with parameters (without - ], function ( show ) { // it returns an object and this method is not executed) - __details_display( this, true ); - return this; - } ); - - - _api_register( [ - _child_obj+'.hide()', - _child_mth+'.hide()' // only when `child()` was called with parameters (without - ], function () { // it returns an object and this method is not executed) - __details_display( this, false ); - return this; - } ); - - - _api_register( [ - _child_obj+'.remove()', - _child_mth+'.remove()' // only when `child()` was called with parameters (without - ], function () { // it returns an object and this method is not executed) - __details_remove( this ); - return this; - } ); - - - _api_register( _child_obj+'.isShown()', function () { - var ctx = this.context; - - if ( ctx.length && this.length ) { - // _detailsShown as false or undefined will fall through to return false - return ctx[0].aoData[ this[0] ]._detailsShow || false; - } - return false; - } ); - - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Columns - * - * {integer} - column index (>=0 count from left, <0 count from right) - * "{integer}:visIdx" - visible column index (i.e. translate to column index) (>=0 count from left, <0 count from right) - * "{integer}:visible" - alias for {integer}:visIdx (>=0 count from left, <0 count from right) - * "{string}:name" - column name - * "{string}" - jQuery selector on column header nodes - * - */ - - // can be an array of these items, comma separated list, or an array of comma - // separated lists - - var __re_column_selector = /^(.+):(name|visIdx|visible)$/; - - - // r1 and r2 are redundant - but it means that the parameters match for the - // iterator callback in columns().data() - var __columnData = function ( settings, column, r1, r2, rows ) { - var a = []; - for ( var row=0, ien=rows.length ; row<ien ; row++ ) { - a.push( _fnGetCellData( settings, rows[row], column ) ); - } - return a; - }; - - - var __column_selector = function ( settings, selector, opts ) - { - var - columns = settings.aoColumns, - names = _pluck( columns, 'sName' ), - nodes = _pluck( columns, 'nTh' ); - - var run = function ( s ) { - var selInt = _intVal( s ); - - // Selector - all - if ( s === '' ) { - return _range( columns.length ); - } - - // Selector - index - if ( selInt !== null ) { - return [ selInt >= 0 ? - selInt : // Count from left - columns.length + selInt // Count from right (+ because its a negative value) - ]; - } - - // Selector = function - if ( typeof s === 'function' ) { - var rows = _selector_row_indexes( settings, opts ); - - return $.map( columns, function (col, idx) { - return s( - idx, - __columnData( settings, idx, 0, 0, rows ), - nodes[ idx ] - ) ? idx : null; - } ); - } - - // jQuery or string selector - var match = typeof s === 'string' ? - s.match( __re_column_selector ) : - ''; - - if ( match ) { - switch( match[2] ) { - case 'visIdx': - case 'visible': - var idx = parseInt( match[1], 10 ); - // Visible index given, convert to column index - if ( idx < 0 ) { - // Counting from the right - var visColumns = $.map( columns, function (col,i) { - return col.bVisible ? i : null; - } ); - return [ visColumns[ visColumns.length + idx ] ]; - } - // Counting from the left - return [ _fnVisibleToColumnIndex( settings, idx ) ]; - - case 'name': - // match by name. `names` is column index complete and in order - return $.map( names, function (name, i) { - return name === match[1] ? i : null; - } ); - } - } - else { - // jQuery selector on the TH elements for the columns - return $( nodes ) - .filter( s ) - .map( function () { - return $.inArray( this, nodes ); // `nodes` is column index complete and in order - } ) - .toArray(); - } - }; - - return _selector_run( 'column', selector, run, settings, opts ); - }; - - - var __setColumnVis = function ( settings, column, vis, recalc ) { - var - cols = settings.aoColumns, - col = cols[ column ], - data = settings.aoData, - row, cells, i, ien, tr; - - // Get - if ( vis === undefined ) { - return col.bVisible; - } - - // Set - // No change - if ( col.bVisible === vis ) { - return; - } - - if ( vis ) { - // Insert column - // Need to decide if we should use appendChild or insertBefore - var insertBefore = $.inArray( true, _pluck(cols, 'bVisible'), column+1 ); - - for ( i=0, ien=data.length ; i<ien ; i++ ) { - tr = data[i].nTr; - cells = data[i].anCells; - - if ( tr ) { - // insertBefore can act like appendChild if 2nd arg is null - tr.insertBefore( cells[ column ], cells[ insertBefore ] || null ); - } - } - } - else { - // Remove column - $( _pluck( settings.aoData, 'anCells', column ) ).detach(); - } - - // Common actions - col.bVisible = vis; - _fnDrawHead( settings, settings.aoHeader ); - _fnDrawHead( settings, settings.aoFooter ); - - if ( recalc === undefined || recalc ) { - // Automatically adjust column sizing - _fnAdjustColumnSizing( settings ); - - // Realign columns for scrolling - if ( settings.oScroll.sX || settings.oScroll.sY ) { - _fnScrollDraw( settings ); - } - } - - _fnCallbackFire( settings, null, 'column-visibility', [settings, column, vis] ); - - _fnSaveState( settings ); - }; - - - _api_register( 'columns()', function ( selector, opts ) { - // argument shifting - if ( selector === undefined ) { - selector = ''; - } - else if ( $.isPlainObject( selector ) ) { - opts = selector; - selector = ''; - } - - opts = _selector_opts( opts ); - - var inst = this.iterator( 'table', function ( settings ) { - return __column_selector( settings, selector, opts ); - }, 1 ); - - // Want argument shifting here and in _row_selector? - inst.selector.cols = selector; - inst.selector.opts = opts; - - return inst; - } ); - - _api_registerPlural( 'columns().header()', 'column().header()', function ( selector, opts ) { - return this.iterator( 'column', function ( settings, column ) { - return settings.aoColumns[column].nTh; - }, 1 ); - } ); - - _api_registerPlural( 'columns().footer()', 'column().footer()', function ( selector, opts ) { - return this.iterator( 'column', function ( settings, column ) { - return settings.aoColumns[column].nTf; - }, 1 ); - } ); - - _api_registerPlural( 'columns().data()', 'column().data()', function () { - return this.iterator( 'column-rows', __columnData, 1 ); - } ); - - _api_registerPlural( 'columns().dataSrc()', 'column().dataSrc()', function () { - return this.iterator( 'column', function ( settings, column ) { - return settings.aoColumns[column].mData; - }, 1 ); - } ); - - _api_registerPlural( 'columns().cache()', 'column().cache()', function ( type ) { - return this.iterator( 'column-rows', function ( settings, column, i, j, rows ) { - return _pluck_order( settings.aoData, rows, - type === 'search' ? '_aFilterData' : '_aSortData', column - ); - }, 1 ); - } ); - - _api_registerPlural( 'columns().nodes()', 'column().nodes()', function () { - return this.iterator( 'column-rows', function ( settings, column, i, j, rows ) { - return _pluck_order( settings.aoData, rows, 'anCells', column ) ; - }, 1 ); - } ); - - _api_registerPlural( 'columns().visible()', 'column().visible()', function ( vis, calc ) { - return this.iterator( 'column', function ( settings, column ) { - if ( vis === undefined ) { - return settings.aoColumns[ column ].bVisible; - } // else - __setColumnVis( settings, column, vis, calc ); - } ); - } ); - - _api_registerPlural( 'columns().indexes()', 'column().index()', function ( type ) { - return this.iterator( 'column', function ( settings, column ) { - return type === 'visible' ? - _fnColumnIndexToVisible( settings, column ) : - column; - }, 1 ); - } ); - - _api_register( 'columns.adjust()', function () { - return this.iterator( 'table', function ( settings ) { - _fnAdjustColumnSizing( settings ); - }, 1 ); - } ); - - _api_register( 'column.index()', function ( type, idx ) { - if ( this.context.length !== 0 ) { - var ctx = this.context[0]; - - if ( type === 'fromVisible' || type === 'toData' ) { - return _fnVisibleToColumnIndex( ctx, idx ); - } - else if ( type === 'fromData' || type === 'toVisible' ) { - return _fnColumnIndexToVisible( ctx, idx ); - } - } - } ); - - _api_register( 'column()', function ( selector, opts ) { - return _selector_first( this.columns( selector, opts ) ); - } ); - - - - - var __cell_selector = function ( settings, selector, opts ) - { - var data = settings.aoData; - var rows = _selector_row_indexes( settings, opts ); - var cells = _removeEmpty( _pluck_order( data, rows, 'anCells' ) ); - var allCells = $( [].concat.apply([], cells) ); - var row; - var columns = settings.aoColumns.length; - var a, i, ien, j, o, host; - - var run = function ( s ) { - var fnSelector = typeof s === 'function'; - - if ( s === null || s === undefined || fnSelector ) { - // All cells and function selectors - a = []; - - for ( i=0, ien=rows.length ; i<ien ; i++ ) { - row = rows[i]; - - for ( j=0 ; j<columns ; j++ ) { - o = { - row: row, - column: j - }; - - if ( fnSelector ) { - // Selector - function - host = settings.aoData[ row ]; - - if ( s( o, _fnGetCellData(settings, row, j), host.anCells ? host.anCells[j] : null ) ) { - a.push( o ); - } - } - else { - // Selector - all - a.push( o ); - } - } - } - - return a; - } - - // Selector - index - if ( $.isPlainObject( s ) ) { - return [s]; - } - - // Selector - jQuery filtered cells - return allCells - .filter( s ) - .map( function (i, el) { - row = el.parentNode._DT_RowIndex; - - return { - row: row, - column: $.inArray( el, data[ row ].anCells ) - }; - } ) - .toArray(); - }; - - return _selector_run( 'cell', selector, run, settings, opts ); - }; - - - - - _api_register( 'cells()', function ( rowSelector, columnSelector, opts ) { - // Argument shifting - if ( $.isPlainObject( rowSelector ) ) { - // Indexes - if ( rowSelector.row === undefined ) { - // Selector options in first parameter - opts = rowSelector; - rowSelector = null; - } - else { - // Cell index objects in first parameter - opts = columnSelector; - columnSelector = null; - } - } - if ( $.isPlainObject( columnSelector ) ) { - opts = columnSelector; - columnSelector = null; - } - - // Cell selector - if ( columnSelector === null || columnSelector === undefined ) { - return this.iterator( 'table', function ( settings ) { - return __cell_selector( settings, rowSelector, _selector_opts( opts ) ); - } ); - } - - // Row + column selector - var columns = this.columns( columnSelector, opts ); - var rows = this.rows( rowSelector, opts ); - var a, i, ien, j, jen; - - var cells = this.iterator( 'table', function ( settings, idx ) { - a = []; - - for ( i=0, ien=rows[idx].length ; i<ien ; i++ ) { - for ( j=0, jen=columns[idx].length ; j<jen ; j++ ) { - a.push( { - row: rows[idx][i], - column: columns[idx][j] - } ); - } - } - - return a; - }, 1 ); - - $.extend( cells.selector, { - cols: columnSelector, - rows: rowSelector, - opts: opts - } ); - - return cells; - } ); - - - _api_registerPlural( 'cells().nodes()', 'cell().node()', function () { - return this.iterator( 'cell', function ( settings, row, column ) { - var cells = settings.aoData[ row ].anCells; - return cells ? - cells[ column ] : - undefined; - }, 1 ); - } ); - - - _api_register( 'cells().data()', function () { - return this.iterator( 'cell', function ( settings, row, column ) { - return _fnGetCellData( settings, row, column ); - }, 1 ); - } ); - - - _api_registerPlural( 'cells().cache()', 'cell().cache()', function ( type ) { - type = type === 'search' ? '_aFilterData' : '_aSortData'; - - return this.iterator( 'cell', function ( settings, row, column ) { - return settings.aoData[ row ][ type ][ column ]; - }, 1 ); - } ); - - - _api_registerPlural( 'cells().render()', 'cell().render()', function ( type ) { - return this.iterator( 'cell', function ( settings, row, column ) { - return _fnGetCellData( settings, row, column, type ); - }, 1 ); - } ); - - - _api_registerPlural( 'cells().indexes()', 'cell().index()', function () { - return this.iterator( 'cell', function ( settings, row, column ) { - return { - row: row, - column: column, - columnVisible: _fnColumnIndexToVisible( settings, column ) - }; - }, 1 ); - } ); - - - _api_registerPlural( 'cells().invalidate()', 'cell().invalidate()', function ( src ) { - return this.iterator( 'cell', function ( settings, row, column ) { - _fnInvalidate( settings, row, src, column ); - } ); - } ); - - - - _api_register( 'cell()', function ( rowSelector, columnSelector, opts ) { - return _selector_first( this.cells( rowSelector, columnSelector, opts ) ); - } ); - - - _api_register( 'cell().data()', function ( data ) { - var ctx = this.context; - var cell = this[0]; - - if ( data === undefined ) { - // Get - return ctx.length && cell.length ? - _fnGetCellData( ctx[0], cell[0].row, cell[0].column ) : - undefined; - } - - // Set - _fnSetCellData( ctx[0], cell[0].row, cell[0].column, data ); - _fnInvalidate( ctx[0], cell[0].row, 'data', cell[0].column ); - - return this; - } ); - - - - /** - * Get current ordering (sorting) that has been applied to the table. - * - * @returns {array} 2D array containing the sorting information for the first - * table in the current context. Each element in the parent array represents - * a column being sorted upon (i.e. multi-sorting with two columns would have - * 2 inner arrays). The inner arrays may have 2 or 3 elements. The first is - * the column index that the sorting condition applies to, the second is the - * direction of the sort (`desc` or `asc`) and, optionally, the third is the - * index of the sorting order from the `column.sorting` initialisation array. - *//** - * Set the ordering for the table. - * - * @param {integer} order Column index to sort upon. - * @param {string} direction Direction of the sort to be applied (`asc` or `desc`) - * @returns {DataTables.Api} this - *//** - * Set the ordering for the table. - * - * @param {array} order 1D array of sorting information to be applied. - * @param {array} [...] Optional additional sorting conditions - * @returns {DataTables.Api} this - *//** - * Set the ordering for the table. - * - * @param {array} order 2D array of sorting information to be applied. - * @returns {DataTables.Api} this - */ - _api_register( 'order()', function ( order, dir ) { - var ctx = this.context; - - if ( order === undefined ) { - // get - return ctx.length !== 0 ? - ctx[0].aaSorting : - undefined; - } - - // set - if ( typeof order === 'number' ) { - // Simple column / direction passed in - order = [ [ order, dir ] ]; - } - else if ( ! $.isArray( order[0] ) ) { - // Arguments passed in (list of 1D arrays) - order = Array.prototype.slice.call( arguments ); - } - // otherwise a 2D array was passed in - - return this.iterator( 'table', function ( settings ) { - settings.aaSorting = order.slice(); - } ); - } ); - - - /** - * Attach a sort listener to an element for a given column - * - * @param {node|jQuery|string} node Identifier for the element(s) to attach the - * listener to. This can take the form of a single DOM node, a jQuery - * collection of nodes or a jQuery selector which will identify the node(s). - * @param {integer} column the column that a click on this node will sort on - * @param {function} [callback] callback function when sort is run - * @returns {DataTables.Api} this - */ - _api_register( 'order.listener()', function ( node, column, callback ) { - return this.iterator( 'table', function ( settings ) { - _fnSortAttachListener( settings, node, column, callback ); - } ); - } ); - - - // Order by the selected column(s) - _api_register( [ - 'columns().order()', - 'column().order()' - ], function ( dir ) { - var that = this; - - return this.iterator( 'table', function ( settings, i ) { - var sort = []; - - $.each( that[i], function (j, col) { - sort.push( [ col, dir ] ); - } ); - - settings.aaSorting = sort; - } ); - } ); - - - - _api_register( 'search()', function ( input, regex, smart, caseInsen ) { - var ctx = this.context; - - if ( input === undefined ) { - // get - return ctx.length !== 0 ? - ctx[0].oPreviousSearch.sSearch : - undefined; - } - - // set - return this.iterator( 'table', function ( settings ) { - if ( ! settings.oFeatures.bFilter ) { - return; - } - - _fnFilterComplete( settings, $.extend( {}, settings.oPreviousSearch, { - "sSearch": input+"", - "bRegex": regex === null ? false : regex, - "bSmart": smart === null ? true : smart, - "bCaseInsensitive": caseInsen === null ? true : caseInsen - } ), 1 ); - } ); - } ); - - - _api_registerPlural( - 'columns().search()', - 'column().search()', - function ( input, regex, smart, caseInsen ) { - return this.iterator( 'column', function ( settings, column ) { - var preSearch = settings.aoPreSearchCols; - - if ( input === undefined ) { - // get - return preSearch[ column ].sSearch; - } - - // set - if ( ! settings.oFeatures.bFilter ) { - return; - } - - $.extend( preSearch[ column ], { - "sSearch": input+"", - "bRegex": regex === null ? false : regex, - "bSmart": smart === null ? true : smart, - "bCaseInsensitive": caseInsen === null ? true : caseInsen - } ); - - _fnFilterComplete( settings, settings.oPreviousSearch, 1 ); - } ); - } - ); - - /* - * State API methods - */ - - _api_register( 'state()', function () { - return this.context.length ? - this.context[0].oSavedState : - null; - } ); - - - _api_register( 'state.clear()', function () { - return this.iterator( 'table', function ( settings ) { - // Save an empty object - settings.fnStateSaveCallback.call( settings.oInstance, settings, {} ); - } ); - } ); - - - _api_register( 'state.loaded()', function () { - return this.context.length ? - this.context[0].oLoadedState : - null; - } ); - - - _api_register( 'state.save()', function () { - return this.iterator( 'table', function ( settings ) { - _fnSaveState( settings ); - } ); - } ); - - - - /** - * Provide a common method for plug-ins to check the version of DataTables being - * used, in order to ensure compatibility. - * - * @param {string} version Version string to check for, in the format "X.Y.Z". - * Note that the formats "X" and "X.Y" are also acceptable. - * @returns {boolean} true if this version of DataTables is greater or equal to - * the required version, or false if this version of DataTales is not - * suitable - * @static - * @dtopt API-Static - * - * @example - * alert( $.fn.dataTable.versionCheck( '1.9.0' ) ); - */ - DataTable.versionCheck = DataTable.fnVersionCheck = function( version ) - { - var aThis = DataTable.version.split('.'); - var aThat = version.split('.'); - var iThis, iThat; - - for ( var i=0, iLen=aThat.length ; i<iLen ; i++ ) { - iThis = parseInt( aThis[i], 10 ) || 0; - iThat = parseInt( aThat[i], 10 ) || 0; - - // Parts are the same, keep comparing - if (iThis === iThat) { - continue; - } - - // Parts are different, return immediately - return iThis > iThat; - } - - return true; - }; - - - /** - * Check if a `<table>` node is a DataTable table already or not. - * - * @param {node|jquery|string} table Table node, jQuery object or jQuery - * selector for the table to test. Note that if more than more than one - * table is passed on, only the first will be checked - * @returns {boolean} true the table given is a DataTable, or false otherwise - * @static - * @dtopt API-Static - * - * @example - * if ( ! $.fn.DataTable.isDataTable( '#example' ) ) { - * $('#example').dataTable(); - * } - */ - DataTable.isDataTable = DataTable.fnIsDataTable = function ( table ) - { - var t = $(table).get(0); - var is = false; - - $.each( DataTable.settings, function (i, o) { - var head = o.nScrollHead ? $('table', o.nScrollHead)[0] : null; - var foot = o.nScrollFoot ? $('table', o.nScrollFoot)[0] : null; - - if ( o.nTable === t || head === t || foot === t ) { - is = true; - } - } ); - - return is; - }; - - - /** - * Get all DataTable tables that have been initialised - optionally you can - * select to get only currently visible tables. - * - * @param {boolean} [visible=false] Flag to indicate if you want all (default) - * or visible tables only. - * @returns {array} Array of `table` nodes (not DataTable instances) which are - * DataTables - * @static - * @dtopt API-Static - * - * @example - * $.each( $.fn.dataTable.tables(true), function () { - * $(table).DataTable().columns.adjust(); - * } ); - */ - DataTable.tables = DataTable.fnTables = function ( visible ) - { - return $.map( DataTable.settings, function (o) { - if ( !visible || (visible && $(o.nTable).is(':visible')) ) { - return o.nTable; - } - } ); - }; - - - /** - * DataTables utility methods - * - * This namespace provides helper methods that DataTables uses internally to - * create a DataTable, but which are not exclusively used only for DataTables. - * These methods can be used by extension authors to save the duplication of - * code. - * - * @namespace - */ - DataTable.util = { - /** - * Throttle the calls to a function. Arguments and context are maintained - * for the throttled function. - * - * @param {function} fn Function to be called - * @param {integer} freq Call frequency in mS - * @return {function} Wrapped function - */ - throttle: _fnThrottle, - - - /** - * Escape a string such that it can be used in a regular expression - * - * @param {string} sVal string to escape - * @returns {string} escaped string - */ - escapeRegex: _fnEscapeRegex - }; - - - /** - * Convert from camel case parameters to Hungarian notation. This is made public - * for the extensions to provide the same ability as DataTables core to accept - * either the 1.9 style Hungarian notation, or the 1.10+ style camelCase - * parameters. - * - * @param {object} src The model object which holds all parameters that can be - * mapped. - * @param {object} user The object to convert from camel case to Hungarian. - * @param {boolean} force When set to `true`, properties which already have a - * Hungarian value in the `user` object will be overwritten. Otherwise they - * won't be. - */ - DataTable.camelToHungarian = _fnCamelToHungarian; - - - - /** - * - */ - _api_register( '$()', function ( selector, opts ) { - var - rows = this.rows( opts ).nodes(), // Get all rows - jqRows = $(rows); - - return $( [].concat( - jqRows.filter( selector ).toArray(), - jqRows.find( selector ).toArray() - ) ); - } ); - - - // jQuery functions to operate on the tables - $.each( [ 'on', 'one', 'off' ], function (i, key) { - _api_register( key+'()', function ( /* event, handler */ ) { - var args = Array.prototype.slice.call(arguments); - - // Add the `dt` namespace automatically if it isn't already present - if ( ! args[0].match(/\.dt\b/) ) { - args[0] += '.dt'; - } - - var inst = $( this.tables().nodes() ); - inst[key].apply( inst, args ); - return this; - } ); - } ); - - - _api_register( 'clear()', function () { - return this.iterator( 'table', function ( settings ) { - _fnClearTable( settings ); - } ); - } ); - - - _api_register( 'settings()', function () { - return new _Api( this.context, this.context ); - } ); - - - _api_register( 'init()', function () { - var ctx = this.context; - return ctx.length ? ctx[0].oInit : null; - } ); - - - _api_register( 'data()', function () { - return this.iterator( 'table', function ( settings ) { - return _pluck( settings.aoData, '_aData' ); - } ).flatten(); - } ); - - - _api_register( 'destroy()', function ( remove ) { - remove = remove || false; - - return this.iterator( 'table', function ( settings ) { - var orig = settings.nTableWrapper.parentNode; - var classes = settings.oClasses; - var table = settings.nTable; - var tbody = settings.nTBody; - var thead = settings.nTHead; - var tfoot = settings.nTFoot; - var jqTable = $(table); - var jqTbody = $(tbody); - var jqWrapper = $(settings.nTableWrapper); - var rows = $.map( settings.aoData, function (r) { return r.nTr; } ); - var i, ien; - - // Flag to note that the table is currently being destroyed - no action - // should be taken - settings.bDestroying = true; - - // Fire off the destroy callbacks for plug-ins etc - _fnCallbackFire( settings, "aoDestroyCallback", "destroy", [settings] ); - - // If not being removed from the document, make all columns visible - if ( ! remove ) { - new _Api( settings ).columns().visible( true ); - } - - // Blitz all `DT` namespaced events (these are internal events, the - // lowercase, `dt` events are user subscribed and they are responsible - // for removing them - jqWrapper.unbind('.DT').find(':not(tbody *)').unbind('.DT'); - $(window).unbind('.DT-'+settings.sInstance); - - // When scrolling we had to break the table up - restore it - if ( table != thead.parentNode ) { - jqTable.children('thead').detach(); - jqTable.append( thead ); - } - - if ( tfoot && table != tfoot.parentNode ) { - jqTable.children('tfoot').detach(); - jqTable.append( tfoot ); - } - - // Remove the DataTables generated nodes, events and classes - jqTable.detach(); - jqWrapper.detach(); - - settings.aaSorting = []; - settings.aaSortingFixed = []; - _fnSortingClasses( settings ); - - $( rows ).removeClass( settings.asStripeClasses.join(' ') ); - - $('th, td', thead).removeClass( classes.sSortable+' '+ - classes.sSortableAsc+' '+classes.sSortableDesc+' '+classes.sSortableNone - ); - - if ( settings.bJUI ) { - $('th span.'+classes.sSortIcon+ ', td span.'+classes.sSortIcon, thead).detach(); - $('th, td', thead).each( function () { - var wrapper = $('div.'+classes.sSortJUIWrapper, this); - $(this).append( wrapper.contents() ); - wrapper.detach(); - } ); - } - - if ( ! remove && orig ) { - // insertBefore acts like appendChild if !arg[1] - orig.insertBefore( table, settings.nTableReinsertBefore ); - } - - // Add the TR elements back into the table in their original order - jqTbody.children().detach(); - jqTbody.append( rows ); - - // Restore the width of the original table - was read from the style property, - // so we can restore directly to that - jqTable - .css( 'width', settings.sDestroyWidth ) - .removeClass( classes.sTable ); - - // If the were originally stripe classes - then we add them back here. - // Note this is not fool proof (for example if not all rows had stripe - // classes - but it's a good effort without getting carried away - ien = settings.asDestroyStripes.length; - - if ( ien ) { - jqTbody.children().each( function (i) { - $(this).addClass( settings.asDestroyStripes[i % ien] ); - } ); - } - - /* Remove the settings object from the settings array */ - var idx = $.inArray( settings, DataTable.settings ); - if ( idx !== -1 ) { - DataTable.settings.splice( idx, 1 ); - } - } ); - } ); - - - // Add the `every()` method for rows, columns and cells in a compact form - $.each( [ 'column', 'row', 'cell' ], function ( i, type ) { - _api_register( type+'s().every()', function ( fn ) { - return this.iterator( type, function ( settings, idx, idx2 ) { - // idx2 is undefined for rows and columns. - fn.call( new _Api( settings )[ type ]( idx, idx2 ) ); - } ); - } ); - } ); - - - // i18n method for extensions to be able to use the language object from the - // DataTable - _api_register( 'i18n()', function ( token, def, plural ) { - var ctx = this.context[0]; - var resolved = _fnGetObjectDataFn( token )( ctx.oLanguage ); - - if ( resolved === undefined ) { - resolved = def; - } - - if ( plural !== undefined && $.isPlainObject( resolved ) ) { - resolved = resolved[ plural ] !== undefined ? - resolved[ plural ] : - resolved._; - } - - return resolved.replace( '%d', plural ); // nb: plural might be undefined, - } ); - - /** - * Version string for plug-ins to check compatibility. Allowed format is - * `a.b.c-d` where: a:int, b:int, c:int, d:string(dev|beta|alpha). `d` is used - * only for non-release builds. See http://semver.org/ for more information. - * @member - * @type string - * @default Version number - */ - DataTable.version = "1.10.7"; - - /** - * Private data store, containing all of the settings objects that are - * created for the tables on a given page. - * - * Note that the `DataTable.settings` object is aliased to - * `jQuery.fn.dataTableExt` through which it may be accessed and - * manipulated, or `jQuery.fn.dataTable.settings`. - * @member - * @type array - * @default [] - * @private - */ - DataTable.settings = []; - - /** - * Object models container, for the various models that DataTables has - * available to it. These models define the objects that are used to hold - * the active state and configuration of the table. - * @namespace - */ - DataTable.models = {}; - - - - /** - * Template object for the way in which DataTables holds information about - * search information for the global filter and individual column filters. - * @namespace - */ - DataTable.models.oSearch = { - /** - * Flag to indicate if the filtering should be case insensitive or not - * @type boolean - * @default true - */ - "bCaseInsensitive": true, - - /** - * Applied search term - * @type string - * @default <i>Empty string</i> - */ - "sSearch": "", - - /** - * Flag to indicate if the search term should be interpreted as a - * regular expression (true) or not (false) and therefore and special - * regex characters escaped. - * @type boolean - * @default false - */ - "bRegex": false, - - /** - * Flag to indicate if DataTables is to use its smart filtering or not. - * @type boolean - * @default true - */ - "bSmart": true - }; - - - - - /** - * Template object for the way in which DataTables holds information about - * each individual row. This is the object format used for the settings - * aoData array. - * @namespace - */ - DataTable.models.oRow = { - /** - * TR element for the row - * @type node - * @default null - */ - "nTr": null, - - /** - * Array of TD elements for each row. This is null until the row has been - * created. - * @type array nodes - * @default [] - */ - "anCells": null, - - /** - * Data object from the original data source for the row. This is either - * an array if using the traditional form of DataTables, or an object if - * using mData options. The exact type will depend on the passed in - * data from the data source, or will be an array if using DOM a data - * source. - * @type array|object - * @default [] - */ - "_aData": [], - - /** - * Sorting data cache - this array is ostensibly the same length as the - * number of columns (although each index is generated only as it is - * needed), and holds the data that is used for sorting each column in the - * row. We do this cache generation at the start of the sort in order that - * the formatting of the sort data need be done only once for each cell - * per sort. This array should not be read from or written to by anything - * other than the master sorting methods. - * @type array - * @default null - * @private - */ - "_aSortData": null, - - /** - * Per cell filtering data cache. As per the sort data cache, used to - * increase the performance of the filtering in DataTables - * @type array - * @default null - * @private - */ - "_aFilterData": null, - - /** - * Filtering data cache. This is the same as the cell filtering cache, but - * in this case a string rather than an array. This is easily computed with - * a join on `_aFilterData`, but is provided as a cache so the join isn't - * needed on every search (memory traded for performance) - * @type array - * @default null - * @private - */ - "_sFilterRow": null, - - /** - * Cache of the class name that DataTables has applied to the row, so we - * can quickly look at this variable rather than needing to do a DOM check - * on className for the nTr property. - * @type string - * @default <i>Empty string</i> - * @private - */ - "_sRowStripe": "", - - /** - * Denote if the original data source was from the DOM, or the data source - * object. This is used for invalidating data, so DataTables can - * automatically read data from the original source, unless uninstructed - * otherwise. - * @type string - * @default null - * @private - */ - "src": null - }; - - - /** - * Template object for the column information object in DataTables. This object - * is held in the settings aoColumns array and contains all the information that - * DataTables needs about each individual column. - * - * Note that this object is related to {@link DataTable.defaults.column} - * but this one is the internal data store for DataTables's cache of columns. - * It should NOT be manipulated outside of DataTables. Any configuration should - * be done through the initialisation options. - * @namespace - */ - DataTable.models.oColumn = { - /** - * Column index. This could be worked out on-the-fly with $.inArray, but it - * is faster to just hold it as a variable - * @type integer - * @default null - */ - "idx": null, - - /** - * A list of the columns that sorting should occur on when this column - * is sorted. That this property is an array allows multi-column sorting - * to be defined for a column (for example first name / last name columns - * would benefit from this). The values are integers pointing to the - * columns to be sorted on (typically it will be a single integer pointing - * at itself, but that doesn't need to be the case). - * @type array - */ - "aDataSort": null, - - /** - * Define the sorting directions that are applied to the column, in sequence - * as the column is repeatedly sorted upon - i.e. the first value is used - * as the sorting direction when the column if first sorted (clicked on). - * Sort it again (click again) and it will move on to the next index. - * Repeat until loop. - * @type array - */ - "asSorting": null, - - /** - * Flag to indicate if the column is searchable, and thus should be included - * in the filtering or not. - * @type boolean - */ - "bSearchable": null, - - /** - * Flag to indicate if the column is sortable or not. - * @type boolean - */ - "bSortable": null, - - /** - * Flag to indicate if the column is currently visible in the table or not - * @type boolean - */ - "bVisible": null, - - /** - * Store for manual type assignment using the `column.type` option. This - * is held in store so we can manipulate the column's `sType` property. - * @type string - * @default null - * @private - */ - "_sManualType": null, - - /** - * Flag to indicate if HTML5 data attributes should be used as the data - * source for filtering or sorting. True is either are. - * @type boolean - * @default false - * @private - */ - "_bAttrSrc": false, - - /** - * Developer definable function that is called whenever a cell is created (Ajax source, - * etc) or processed for input (DOM source). This can be used as a compliment to mRender - * allowing you to modify the DOM element (add background colour for example) when the - * element is available. - * @type function - * @param {element} nTd The TD node that has been created - * @param {*} sData The Data for the cell - * @param {array|object} oData The data for the whole row - * @param {int} iRow The row index for the aoData data store - * @default null - */ - "fnCreatedCell": null, - - /** - * Function to get data from a cell in a column. You should <b>never</b> - * access data directly through _aData internally in DataTables - always use - * the method attached to this property. It allows mData to function as - * required. This function is automatically assigned by the column - * initialisation method - * @type function - * @param {array|object} oData The data array/object for the array - * (i.e. aoData[]._aData) - * @param {string} sSpecific The specific data type you want to get - - * 'display', 'type' 'filter' 'sort' - * @returns {*} The data for the cell from the given row's data - * @default null - */ - "fnGetData": null, - - /** - * Function to set data for a cell in the column. You should <b>never</b> - * set the data directly to _aData internally in DataTables - always use - * this method. It allows mData to function as required. This function - * is automatically assigned by the column initialisation method - * @type function - * @param {array|object} oData The data array/object for the array - * (i.e. aoData[]._aData) - * @param {*} sValue Value to set - * @default null - */ - "fnSetData": null, - - /** - * Property to read the value for the cells in the column from the data - * source array / object. If null, then the default content is used, if a - * function is given then the return from the function is used. - * @type function|int|string|null - * @default null - */ - "mData": null, - - /** - * Partner property to mData which is used (only when defined) to get - * the data - i.e. it is basically the same as mData, but without the - * 'set' option, and also the data fed to it is the result from mData. - * This is the rendering method to match the data method of mData. - * @type function|int|string|null - * @default null - */ - "mRender": null, - - /** - * Unique header TH/TD element for this column - this is what the sorting - * listener is attached to (if sorting is enabled.) - * @type node - * @default null - */ - "nTh": null, - - /** - * Unique footer TH/TD element for this column (if there is one). Not used - * in DataTables as such, but can be used for plug-ins to reference the - * footer for each column. - * @type node - * @default null - */ - "nTf": null, - - /** - * The class to apply to all TD elements in the table's TBODY for the column - * @type string - * @default null - */ - "sClass": null, - - /** - * When DataTables calculates the column widths to assign to each column, - * it finds the longest string in each column and then constructs a - * temporary table and reads the widths from that. The problem with this - * is that "mmm" is much wider then "iiii", but the latter is a longer - * string - thus the calculation can go wrong (doing it properly and putting - * it into an DOM object and measuring that is horribly(!) slow). Thus as - * a "work around" we provide this option. It will append its value to the - * text that is found to be the longest string for the column - i.e. padding. - * @type string - */ - "sContentPadding": null, - - /** - * Allows a default value to be given for a column's data, and will be used - * whenever a null data source is encountered (this can be because mData - * is set to null, or because the data source itself is null). - * @type string - * @default null - */ - "sDefaultContent": null, - - /** - * Name for the column, allowing reference to the column by name as well as - * by index (needs a lookup to work by name). - * @type string - */ - "sName": null, - - /** - * Custom sorting data type - defines which of the available plug-ins in - * afnSortData the custom sorting will use - if any is defined. - * @type string - * @default std - */ - "sSortDataType": 'std', - - /** - * Class to be applied to the header element when sorting on this column - * @type string - * @default null - */ - "sSortingClass": null, - - /** - * Class to be applied to the header element when sorting on this column - - * when jQuery UI theming is used. - * @type string - * @default null - */ - "sSortingClassJUI": null, - - /** - * Title of the column - what is seen in the TH element (nTh). - * @type string - */ - "sTitle": null, - - /** - * Column sorting and filtering type - * @type string - * @default null - */ - "sType": null, - - /** - * Width of the column - * @type string - * @default null - */ - "sWidth": null, - - /** - * Width of the column when it was first "encountered" - * @type string - * @default null - */ - "sWidthOrig": null - }; - - - /* - * Developer note: The properties of the object below are given in Hungarian - * notation, that was used as the interface for DataTables prior to v1.10, however - * from v1.10 onwards the primary interface is camel case. In order to avoid - * breaking backwards compatibility utterly with this change, the Hungarian - * version is still, internally the primary interface, but is is not documented - * - hence the @name tags in each doc comment. This allows a Javascript function - * to create a map from Hungarian notation to camel case (going the other direction - * would require each property to be listed, which would at around 3K to the size - * of DataTables, while this method is about a 0.5K hit. - * - * Ultimately this does pave the way for Hungarian notation to be dropped - * completely, but that is a massive amount of work and will break current - * installs (therefore is on-hold until v2). - */ - - /** - * Initialisation options that can be given to DataTables at initialisation - * time. - * @namespace - */ - DataTable.defaults = { - /** - * An array of data to use for the table, passed in at initialisation which - * will be used in preference to any data which is already in the DOM. This is - * particularly useful for constructing tables purely in Javascript, for - * example with a custom Ajax call. - * @type array - * @default null - * - * @dtopt Option - * @name DataTable.defaults.data - * - * @example - * // Using a 2D array data source - * $(document).ready( function () { - * $('#example').dataTable( { - * "data": [ - * ['Trident', 'Internet Explorer 4.0', 'Win 95+', 4, 'X'], - * ['Trident', 'Internet Explorer 5.0', 'Win 95+', 5, 'C'], - * ], - * "columns": [ - * { "title": "Engine" }, - * { "title": "Browser" }, - * { "title": "Platform" }, - * { "title": "Version" }, - * { "title": "Grade" } - * ] - * } ); - * } ); - * - * @example - * // Using an array of objects as a data source (`data`) - * $(document).ready( function () { - * $('#example').dataTable( { - * "data": [ - * { - * "engine": "Trident", - * "browser": "Internet Explorer 4.0", - * "platform": "Win 95+", - * "version": 4, - * "grade": "X" - * }, - * { - * "engine": "Trident", - * "browser": "Internet Explorer 5.0", - * "platform": "Win 95+", - * "version": 5, - * "grade": "C" - * } - * ], - * "columns": [ - * { "title": "Engine", "data": "engine" }, - * { "title": "Browser", "data": "browser" }, - * { "title": "Platform", "data": "platform" }, - * { "title": "Version", "data": "version" }, - * { "title": "Grade", "data": "grade" } - * ] - * } ); - * } ); - */ - "aaData": null, - - - /** - * If ordering is enabled, then DataTables will perform a first pass sort on - * initialisation. You can define which column(s) the sort is performed - * upon, and the sorting direction, with this variable. The `sorting` array - * should contain an array for each column to be sorted initially containing - * the column's index and a direction string ('asc' or 'desc'). - * @type array - * @default [[0,'asc']] - * - * @dtopt Option - * @name DataTable.defaults.order - * - * @example - * // Sort by 3rd column first, and then 4th column - * $(document).ready( function() { - * $('#example').dataTable( { - * "order": [[2,'asc'], [3,'desc']] - * } ); - * } ); - * - * // No initial sorting - * $(document).ready( function() { - * $('#example').dataTable( { - * "order": [] - * } ); - * } ); - */ - "aaSorting": [[0,'asc']], - - - /** - * This parameter is basically identical to the `sorting` parameter, but - * cannot be overridden by user interaction with the table. What this means - * is that you could have a column (visible or hidden) which the sorting - * will always be forced on first - any sorting after that (from the user) - * will then be performed as required. This can be useful for grouping rows - * together. - * @type array - * @default null - * - * @dtopt Option - * @name DataTable.defaults.orderFixed - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "orderFixed": [[0,'asc']] - * } ); - * } ) - */ - "aaSortingFixed": [], - - - /** - * DataTables can be instructed to load data to display in the table from a - * Ajax source. This option defines how that Ajax call is made and where to. - * - * The `ajax` property has three different modes of operation, depending on - * how it is defined. These are: - * - * * `string` - Set the URL from where the data should be loaded from. - * * `object` - Define properties for `jQuery.ajax`. - * * `function` - Custom data get function - * - * `string` - * -------- - * - * As a string, the `ajax` property simply defines the URL from which - * DataTables will load data. - * - * `object` - * -------- - * - * As an object, the parameters in the object are passed to - * [jQuery.ajax](http://api.jquery.com/jQuery.ajax/) allowing fine control - * of the Ajax request. DataTables has a number of default parameters which - * you can override using this option. Please refer to the jQuery - * documentation for a full description of the options available, although - * the following parameters provide additional options in DataTables or - * require special consideration: - * - * * `data` - As with jQuery, `data` can be provided as an object, but it - * can also be used as a function to manipulate the data DataTables sends - * to the server. The function takes a single parameter, an object of - * parameters with the values that DataTables has readied for sending. An - * object may be returned which will be merged into the DataTables - * defaults, or you can add the items to the object that was passed in and - * not return anything from the function. This supersedes `fnServerParams` - * from DataTables 1.9-. - * - * * `dataSrc` - By default DataTables will look for the property `data` (or - * `aaData` for compatibility with DataTables 1.9-) when obtaining data - * from an Ajax source or for server-side processing - this parameter - * allows that property to be changed. You can use Javascript dotted - * object notation to get a data source for multiple levels of nesting, or - * it my be used as a function. As a function it takes a single parameter, - * the JSON returned from the server, which can be manipulated as - * required, with the returned value being that used by DataTables as the - * data source for the table. This supersedes `sAjaxDataProp` from - * DataTables 1.9-. - * - * * `success` - Should not be overridden it is used internally in - * DataTables. To manipulate / transform the data returned by the server - * use `ajax.dataSrc`, or use `ajax` as a function (see below). - * - * `function` - * ---------- - * - * As a function, making the Ajax call is left up to yourself allowing - * complete control of the Ajax request. Indeed, if desired, a method other - * than Ajax could be used to obtain the required data, such as Web storage - * or an AIR database. - * - * The function is given four parameters and no return is required. The - * parameters are: - * - * 1. _object_ - Data to send to the server - * 2. _function_ - Callback function that must be executed when the required - * data has been obtained. That data should be passed into the callback - * as the only parameter - * 3. _object_ - DataTables settings object for the table - * - * Note that this supersedes `fnServerData` from DataTables 1.9-. - * - * @type string|object|function - * @default null - * - * @dtopt Option - * @name DataTable.defaults.ajax - * @since 1.10.0 - * - * @example - * // Get JSON data from a file via Ajax. - * // Note DataTables expects data in the form `{ data: [ ...data... ] }` by default). - * $('#example').dataTable( { - * "ajax": "data.json" - * } ); - * - * @example - * // Get JSON data from a file via Ajax, using `dataSrc` to change - * // `data` to `tableData` (i.e. `{ tableData: [ ...data... ] }`) - * $('#example').dataTable( { - * "ajax": { - * "url": "data.json", - * "dataSrc": "tableData" - * } - * } ); - * - * @example - * // Get JSON data from a file via Ajax, using `dataSrc` to read data - * // from a plain array rather than an array in an object - * $('#example').dataTable( { - * "ajax": { - * "url": "data.json", - * "dataSrc": "" - * } - * } ); - * - * @example - * // Manipulate the data returned from the server - add a link to data - * // (note this can, should, be done using `render` for the column - this - * // is just a simple example of how the data can be manipulated). - * $('#example').dataTable( { - * "ajax": { - * "url": "data.json", - * "dataSrc": function ( json ) { - * for ( var i=0, ien=json.length ; i<ien ; i++ ) { - * json[i][0] = '<a href="/message/'+json[i][0]+'>View message</a>'; - * } - * return json; - * } - * } - * } ); - * - * @example - * // Add data to the request - * $('#example').dataTable( { - * "ajax": { - * "url": "data.json", - * "data": function ( d ) { - * return { - * "extra_search": $('#extra').val() - * }; - * } - * } - * } ); - * - * @example - * // Send request as POST - * $('#example').dataTable( { - * "ajax": { - * "url": "data.json", - * "type": "POST" - * } - * } ); - * - * @example - * // Get the data from localStorage (could interface with a form for - * // adding, editing and removing rows). - * $('#example').dataTable( { - * "ajax": function (data, callback, settings) { - * callback( - * JSON.parse( localStorage.getItem('dataTablesData') ) - * ); - * } - * } ); - */ - "ajax": null, - - - /** - * This parameter allows you to readily specify the entries in the length drop - * down menu that DataTables shows when pagination is enabled. It can be - * either a 1D array of options which will be used for both the displayed - * option and the value, or a 2D array which will use the array in the first - * position as the value, and the array in the second position as the - * displayed options (useful for language strings such as 'All'). - * - * Note that the `pageLength` property will be automatically set to the - * first value given in this array, unless `pageLength` is also provided. - * @type array - * @default [ 10, 25, 50, 100 ] - * - * @dtopt Option - * @name DataTable.defaults.lengthMenu - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]] - * } ); - * } ); - */ - "aLengthMenu": [ 10, 25, 50, 100 ], - - - /** - * The `columns` option in the initialisation parameter allows you to define - * details about the way individual columns behave. For a full list of - * column options that can be set, please see - * {@link DataTable.defaults.column}. Note that if you use `columns` to - * define your columns, you must have an entry in the array for every single - * column that you have in your table (these can be null if you don't which - * to specify any options). - * @member - * - * @name DataTable.defaults.column - */ - "aoColumns": null, - - /** - * Very similar to `columns`, `columnDefs` allows you to target a specific - * column, multiple columns, or all columns, using the `targets` property of - * each object in the array. This allows great flexibility when creating - * tables, as the `columnDefs` arrays can be of any length, targeting the - * columns you specifically want. `columnDefs` may use any of the column - * options available: {@link DataTable.defaults.column}, but it _must_ - * have `targets` defined in each object in the array. Values in the `targets` - * array may be: - * <ul> - * <li>a string - class name will be matched on the TH for the column</li> - * <li>0 or a positive integer - column index counting from the left</li> - * <li>a negative integer - column index counting from the right</li> - * <li>the string "_all" - all columns (i.e. assign a default)</li> - * </ul> - * @member - * - * @name DataTable.defaults.columnDefs - */ - "aoColumnDefs": null, - - - /** - * Basically the same as `search`, this parameter defines the individual column - * filtering state at initialisation time. The array must be of the same size - * as the number of columns, and each element be an object with the parameters - * `search` and `escapeRegex` (the latter is optional). 'null' is also - * accepted and the default will be used. - * @type array - * @default [] - * - * @dtopt Option - * @name DataTable.defaults.searchCols - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "searchCols": [ - * null, - * { "search": "My filter" }, - * null, - * { "search": "^[0-9]", "escapeRegex": false } - * ] - * } ); - * } ) - */ - "aoSearchCols": [], - - - /** - * An array of CSS classes that should be applied to displayed rows. This - * array may be of any length, and DataTables will apply each class - * sequentially, looping when required. - * @type array - * @default null <i>Will take the values determined by the `oClasses.stripe*` - * options</i> - * - * @dtopt Option - * @name DataTable.defaults.stripeClasses - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "stripeClasses": [ 'strip1', 'strip2', 'strip3' ] - * } ); - * } ) - */ - "asStripeClasses": null, - - - /** - * Enable or disable automatic column width calculation. This can be disabled - * as an optimisation (it takes some time to calculate the widths) if the - * tables widths are passed in using `columns`. - * @type boolean - * @default true - * - * @dtopt Features - * @name DataTable.defaults.autoWidth - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "autoWidth": false - * } ); - * } ); - */ - "bAutoWidth": true, - - - /** - * Deferred rendering can provide DataTables with a huge speed boost when you - * are using an Ajax or JS data source for the table. This option, when set to - * true, will cause DataTables to defer the creation of the table elements for - * each row until they are needed for a draw - saving a significant amount of - * time. - * @type boolean - * @default false - * - * @dtopt Features - * @name DataTable.defaults.deferRender - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "ajax": "sources/arrays.txt", - * "deferRender": true - * } ); - * } ); - */ - "bDeferRender": false, - - - /** - * Replace a DataTable which matches the given selector and replace it with - * one which has the properties of the new initialisation object passed. If no - * table matches the selector, then the new DataTable will be constructed as - * per normal. - * @type boolean - * @default false - * - * @dtopt Options - * @name DataTable.defaults.destroy - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "srollY": "200px", - * "paginate": false - * } ); - * - * // Some time later.... - * $('#example').dataTable( { - * "filter": false, - * "destroy": true - * } ); - * } ); - */ - "bDestroy": false, - - - /** - * Enable or disable filtering of data. Filtering in DataTables is "smart" in - * that it allows the end user to input multiple words (space separated) and - * will match a row containing those words, even if not in the order that was - * specified (this allow matching across multiple columns). Note that if you - * wish to use filtering in DataTables this must remain 'true' - to remove the - * default filtering input box and retain filtering abilities, please use - * {@link DataTable.defaults.dom}. - * @type boolean - * @default true - * - * @dtopt Features - * @name DataTable.defaults.searching - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "searching": false - * } ); - * } ); - */ - "bFilter": true, - - - /** - * Enable or disable the table information display. This shows information - * about the data that is currently visible on the page, including information - * about filtered data if that action is being performed. - * @type boolean - * @default true - * - * @dtopt Features - * @name DataTable.defaults.info - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "info": false - * } ); - * } ); - */ - "bInfo": true, - - - /** - * Enable jQuery UI ThemeRoller support (required as ThemeRoller requires some - * slightly different and additional mark-up from what DataTables has - * traditionally used). - * @type boolean - * @default false - * - * @dtopt Features - * @name DataTable.defaults.jQueryUI - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "jQueryUI": true - * } ); - * } ); - */ - "bJQueryUI": false, - - - /** - * Allows the end user to select the size of a formatted page from a select - * menu (sizes are 10, 25, 50 and 100). Requires pagination (`paginate`). - * @type boolean - * @default true - * - * @dtopt Features - * @name DataTable.defaults.lengthChange - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "lengthChange": false - * } ); - * } ); - */ - "bLengthChange": true, - - - /** - * Enable or disable pagination. - * @type boolean - * @default true - * - * @dtopt Features - * @name DataTable.defaults.paging - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "paging": false - * } ); - * } ); - */ - "bPaginate": true, - - - /** - * Enable or disable the display of a 'processing' indicator when the table is - * being processed (e.g. a sort). This is particularly useful for tables with - * large amounts of data where it can take a noticeable amount of time to sort - * the entries. - * @type boolean - * @default false - * - * @dtopt Features - * @name DataTable.defaults.processing - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "processing": true - * } ); - * } ); - */ - "bProcessing": false, - - - /** - * Retrieve the DataTables object for the given selector. Note that if the - * table has already been initialised, this parameter will cause DataTables - * to simply return the object that has already been set up - it will not take - * account of any changes you might have made to the initialisation object - * passed to DataTables (setting this parameter to true is an acknowledgement - * that you understand this). `destroy` can be used to reinitialise a table if - * you need. - * @type boolean - * @default false - * - * @dtopt Options - * @name DataTable.defaults.retrieve - * - * @example - * $(document).ready( function() { - * initTable(); - * tableActions(); - * } ); - * - * function initTable () - * { - * return $('#example').dataTable( { - * "scrollY": "200px", - * "paginate": false, - * "retrieve": true - * } ); - * } - * - * function tableActions () - * { - * var table = initTable(); - * // perform API operations with oTable - * } - */ - "bRetrieve": false, - - - /** - * When vertical (y) scrolling is enabled, DataTables will force the height of - * the table's viewport to the given height at all times (useful for layout). - * However, this can look odd when filtering data down to a small data set, - * and the footer is left "floating" further down. This parameter (when - * enabled) will cause DataTables to collapse the table's viewport down when - * the result set will fit within the given Y height. - * @type boolean - * @default false - * - * @dtopt Options - * @name DataTable.defaults.scrollCollapse - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "scrollY": "200", - * "scrollCollapse": true - * } ); - * } ); - */ - "bScrollCollapse": false, - - - /** - * Configure DataTables to use server-side processing. Note that the - * `ajax` parameter must also be given in order to give DataTables a - * source to obtain the required data for each draw. - * @type boolean - * @default false - * - * @dtopt Features - * @dtopt Server-side - * @name DataTable.defaults.serverSide - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "serverSide": true, - * "ajax": "xhr.php" - * } ); - * } ); - */ - "bServerSide": false, - - - /** - * Enable or disable sorting of columns. Sorting of individual columns can be - * disabled by the `sortable` option for each column. - * @type boolean - * @default true - * - * @dtopt Features - * @name DataTable.defaults.ordering - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "ordering": false - * } ); - * } ); - */ - "bSort": true, - - - /** - * Enable or display DataTables' ability to sort multiple columns at the - * same time (activated by shift-click by the user). - * @type boolean - * @default true - * - * @dtopt Options - * @name DataTable.defaults.orderMulti - * - * @example - * // Disable multiple column sorting ability - * $(document).ready( function () { - * $('#example').dataTable( { - * "orderMulti": false - * } ); - * } ); - */ - "bSortMulti": true, - - - /** - * Allows control over whether DataTables should use the top (true) unique - * cell that is found for a single column, or the bottom (false - default). - * This is useful when using complex headers. - * @type boolean - * @default false - * - * @dtopt Options - * @name DataTable.defaults.orderCellsTop - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "orderCellsTop": true - * } ); - * } ); - */ - "bSortCellsTop": false, - - - /** - * Enable or disable the addition of the classes `sorting\_1`, `sorting\_2` and - * `sorting\_3` to the columns which are currently being sorted on. This is - * presented as a feature switch as it can increase processing time (while - * classes are removed and added) so for large data sets you might want to - * turn this off. - * @type boolean - * @default true - * - * @dtopt Features - * @name DataTable.defaults.orderClasses - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "orderClasses": false - * } ); - * } ); - */ - "bSortClasses": true, - - - /** - * Enable or disable state saving. When enabled HTML5 `localStorage` will be - * used to save table display information such as pagination information, - * display length, filtering and sorting. As such when the end user reloads - * the page the display display will match what thy had previously set up. - * - * Due to the use of `localStorage` the default state saving is not supported - * in IE6 or 7. If state saving is required in those browsers, use - * `stateSaveCallback` to provide a storage solution such as cookies. - * @type boolean - * @default false - * - * @dtopt Features - * @name DataTable.defaults.stateSave - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "stateSave": true - * } ); - * } ); - */ - "bStateSave": false, - - - /** - * This function is called when a TR element is created (and all TD child - * elements have been inserted), or registered if using a DOM source, allowing - * manipulation of the TR element (adding classes etc). - * @type function - * @param {node} row "TR" element for the current row - * @param {array} data Raw data array for this row - * @param {int} dataIndex The index of this row in the internal aoData array - * - * @dtopt Callbacks - * @name DataTable.defaults.createdRow - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "createdRow": function( row, data, dataIndex ) { - * // Bold the grade for all 'A' grade browsers - * if ( data[4] == "A" ) - * { - * $('td:eq(4)', row).html( '<b>A</b>' ); - * } - * } - * } ); - * } ); - */ - "fnCreatedRow": null, - - - /** - * This function is called on every 'draw' event, and allows you to - * dynamically modify any aspect you want about the created DOM. - * @type function - * @param {object} settings DataTables settings object - * - * @dtopt Callbacks - * @name DataTable.defaults.drawCallback - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "drawCallback": function( settings ) { - * alert( 'DataTables has redrawn the table' ); - * } - * } ); - * } ); - */ - "fnDrawCallback": null, - - - /** - * Identical to fnHeaderCallback() but for the table footer this function - * allows you to modify the table footer on every 'draw' event. - * @type function - * @param {node} foot "TR" element for the footer - * @param {array} data Full table data (as derived from the original HTML) - * @param {int} start Index for the current display starting point in the - * display array - * @param {int} end Index for the current display ending point in the - * display array - * @param {array int} display Index array to translate the visual position - * to the full data array - * - * @dtopt Callbacks - * @name DataTable.defaults.footerCallback - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "footerCallback": function( tfoot, data, start, end, display ) { - * tfoot.getElementsByTagName('th')[0].innerHTML = "Starting index is "+start; - * } - * } ); - * } ) - */ - "fnFooterCallback": null, - - - /** - * When rendering large numbers in the information element for the table - * (i.e. "Showing 1 to 10 of 57 entries") DataTables will render large numbers - * to have a comma separator for the 'thousands' units (e.g. 1 million is - * rendered as "1,000,000") to help readability for the end user. This - * function will override the default method DataTables uses. - * @type function - * @member - * @param {int} toFormat number to be formatted - * @returns {string} formatted string for DataTables to show the number - * - * @dtopt Callbacks - * @name DataTable.defaults.formatNumber - * - * @example - * // Format a number using a single quote for the separator (note that - * // this can also be done with the language.thousands option) - * $(document).ready( function() { - * $('#example').dataTable( { - * "formatNumber": function ( toFormat ) { - * return toFormat.toString().replace( - * /\B(?=(\d{3})+(?!\d))/g, "'" - * ); - * }; - * } ); - * } ); - */ - "fnFormatNumber": function ( toFormat ) { - return toFormat.toString().replace( - /\B(?=(\d{3})+(?!\d))/g, - this.oLanguage.sThousands - ); - }, - - - /** - * This function is called on every 'draw' event, and allows you to - * dynamically modify the header row. This can be used to calculate and - * display useful information about the table. - * @type function - * @param {node} head "TR" element for the header - * @param {array} data Full table data (as derived from the original HTML) - * @param {int} start Index for the current display starting point in the - * display array - * @param {int} end Index for the current display ending point in the - * display array - * @param {array int} display Index array to translate the visual position - * to the full data array - * - * @dtopt Callbacks - * @name DataTable.defaults.headerCallback - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "fheaderCallback": function( head, data, start, end, display ) { - * head.getElementsByTagName('th')[0].innerHTML = "Displaying "+(end-start)+" records"; - * } - * } ); - * } ) - */ - "fnHeaderCallback": null, - - - /** - * The information element can be used to convey information about the current - * state of the table. Although the internationalisation options presented by - * DataTables are quite capable of dealing with most customisations, there may - * be times where you wish to customise the string further. This callback - * allows you to do exactly that. - * @type function - * @param {object} oSettings DataTables settings object - * @param {int} start Starting position in data for the draw - * @param {int} end End position in data for the draw - * @param {int} max Total number of rows in the table (regardless of - * filtering) - * @param {int} total Total number of rows in the data set, after filtering - * @param {string} pre The string that DataTables has formatted using it's - * own rules - * @returns {string} The string to be displayed in the information element. - * - * @dtopt Callbacks - * @name DataTable.defaults.infoCallback - * - * @example - * $('#example').dataTable( { - * "infoCallback": function( settings, start, end, max, total, pre ) { - * return start +" to "+ end; - * } - * } ); - */ - "fnInfoCallback": null, - - - /** - * Called when the table has been initialised. Normally DataTables will - * initialise sequentially and there will be no need for this function, - * however, this does not hold true when using external language information - * since that is obtained using an async XHR call. - * @type function - * @param {object} settings DataTables settings object - * @param {object} json The JSON object request from the server - only - * present if client-side Ajax sourced data is used - * - * @dtopt Callbacks - * @name DataTable.defaults.initComplete - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "initComplete": function(settings, json) { - * alert( 'DataTables has finished its initialisation.' ); - * } - * } ); - * } ) - */ - "fnInitComplete": null, - - - /** - * Called at the very start of each table draw and can be used to cancel the - * draw by returning false, any other return (including undefined) results in - * the full draw occurring). - * @type function - * @param {object} settings DataTables settings object - * @returns {boolean} False will cancel the draw, anything else (including no - * return) will allow it to complete. - * - * @dtopt Callbacks - * @name DataTable.defaults.preDrawCallback - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "preDrawCallback": function( settings ) { - * if ( $('#test').val() == 1 ) { - * return false; - * } - * } - * } ); - * } ); - */ - "fnPreDrawCallback": null, - - - /** - * This function allows you to 'post process' each row after it have been - * generated for each table draw, but before it is rendered on screen. This - * function might be used for setting the row class name etc. - * @type function - * @param {node} row "TR" element for the current row - * @param {array} data Raw data array for this row - * @param {int} displayIndex The display index for the current table draw - * @param {int} displayIndexFull The index of the data in the full list of - * rows (after filtering) - * - * @dtopt Callbacks - * @name DataTable.defaults.rowCallback - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "rowCallback": function( row, data, displayIndex, displayIndexFull ) { - * // Bold the grade for all 'A' grade browsers - * if ( data[4] == "A" ) { - * $('td:eq(4)', row).html( '<b>A</b>' ); - * } - * } - * } ); - * } ); - */ - "fnRowCallback": null, - - - /** - * __Deprecated__ The functionality provided by this parameter has now been - * superseded by that provided through `ajax`, which should be used instead. - * - * This parameter allows you to override the default function which obtains - * the data from the server so something more suitable for your application. - * For example you could use POST data, or pull information from a Gears or - * AIR database. - * @type function - * @member - * @param {string} source HTTP source to obtain the data from (`ajax`) - * @param {array} data A key/value pair object containing the data to send - * to the server - * @param {function} callback to be called on completion of the data get - * process that will draw the data on the page. - * @param {object} settings DataTables settings object - * - * @dtopt Callbacks - * @dtopt Server-side - * @name DataTable.defaults.serverData - * - * @deprecated 1.10. Please use `ajax` for this functionality now. - */ - "fnServerData": null, - - - /** - * __Deprecated__ The functionality provided by this parameter has now been - * superseded by that provided through `ajax`, which should be used instead. - * - * It is often useful to send extra data to the server when making an Ajax - * request - for example custom filtering information, and this callback - * function makes it trivial to send extra information to the server. The - * passed in parameter is the data set that has been constructed by - * DataTables, and you can add to this or modify it as you require. - * @type function - * @param {array} data Data array (array of objects which are name/value - * pairs) that has been constructed by DataTables and will be sent to the - * server. In the case of Ajax sourced data with server-side processing - * this will be an empty array, for server-side processing there will be a - * significant number of parameters! - * @returns {undefined} Ensure that you modify the data array passed in, - * as this is passed by reference. - * - * @dtopt Callbacks - * @dtopt Server-side - * @name DataTable.defaults.serverParams - * - * @deprecated 1.10. Please use `ajax` for this functionality now. - */ - "fnServerParams": null, - - - /** - * Load the table state. With this function you can define from where, and how, the - * state of a table is loaded. By default DataTables will load from `localStorage` - * but you might wish to use a server-side database or cookies. - * @type function - * @member - * @param {object} settings DataTables settings object - * @return {object} The DataTables state object to be loaded - * - * @dtopt Callbacks - * @name DataTable.defaults.stateLoadCallback - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "stateSave": true, - * "stateLoadCallback": function (settings) { - * var o; - * - * // Send an Ajax request to the server to get the data. Note that - * // this is a synchronous request. - * $.ajax( { - * "url": "/state_load", - * "async": false, - * "dataType": "json", - * "success": function (json) { - * o = json; - * } - * } ); - * - * return o; - * } - * } ); - * } ); - */ - "fnStateLoadCallback": function ( settings ) { - try { - return JSON.parse( - (settings.iStateDuration === -1 ? sessionStorage : localStorage).getItem( - 'DataTables_'+settings.sInstance+'_'+location.pathname - ) - ); - } catch (e) {} - }, - - - /** - * Callback which allows modification of the saved state prior to loading that state. - * This callback is called when the table is loading state from the stored data, but - * prior to the settings object being modified by the saved state. Note that for - * plug-in authors, you should use the `stateLoadParams` event to load parameters for - * a plug-in. - * @type function - * @param {object} settings DataTables settings object - * @param {object} data The state object that is to be loaded - * - * @dtopt Callbacks - * @name DataTable.defaults.stateLoadParams - * - * @example - * // Remove a saved filter, so filtering is never loaded - * $(document).ready( function() { - * $('#example').dataTable( { - * "stateSave": true, - * "stateLoadParams": function (settings, data) { - * data.oSearch.sSearch = ""; - * } - * } ); - * } ); - * - * @example - * // Disallow state loading by returning false - * $(document).ready( function() { - * $('#example').dataTable( { - * "stateSave": true, - * "stateLoadParams": function (settings, data) { - * return false; - * } - * } ); - * } ); - */ - "fnStateLoadParams": null, - - - /** - * Callback that is called when the state has been loaded from the state saving method - * and the DataTables settings object has been modified as a result of the loaded state. - * @type function - * @param {object} settings DataTables settings object - * @param {object} data The state object that was loaded - * - * @dtopt Callbacks - * @name DataTable.defaults.stateLoaded - * - * @example - * // Show an alert with the filtering value that was saved - * $(document).ready( function() { - * $('#example').dataTable( { - * "stateSave": true, - * "stateLoaded": function (settings, data) { - * alert( 'Saved filter was: '+data.oSearch.sSearch ); - * } - * } ); - * } ); - */ - "fnStateLoaded": null, - - - /** - * Save the table state. This function allows you to define where and how the state - * information for the table is stored By default DataTables will use `localStorage` - * but you might wish to use a server-side database or cookies. - * @type function - * @member - * @param {object} settings DataTables settings object - * @param {object} data The state object to be saved - * - * @dtopt Callbacks - * @name DataTable.defaults.stateSaveCallback - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "stateSave": true, - * "stateSaveCallback": function (settings, data) { - * // Send an Ajax request to the server with the state object - * $.ajax( { - * "url": "/state_save", - * "data": data, - * "dataType": "json", - * "method": "POST" - * "success": function () {} - * } ); - * } - * } ); - * } ); - */ - "fnStateSaveCallback": function ( settings, data ) { - try { - (settings.iStateDuration === -1 ? sessionStorage : localStorage).setItem( - 'DataTables_'+settings.sInstance+'_'+location.pathname, - JSON.stringify( data ) - ); - } catch (e) {} - }, - - - /** - * Callback which allows modification of the state to be saved. Called when the table - * has changed state a new state save is required. This method allows modification of - * the state saving object prior to actually doing the save, including addition or - * other state properties or modification. Note that for plug-in authors, you should - * use the `stateSaveParams` event to save parameters for a plug-in. - * @type function - * @param {object} settings DataTables settings object - * @param {object} data The state object to be saved - * - * @dtopt Callbacks - * @name DataTable.defaults.stateSaveParams - * - * @example - * // Remove a saved filter, so filtering is never saved - * $(document).ready( function() { - * $('#example').dataTable( { - * "stateSave": true, - * "stateSaveParams": function (settings, data) { - * data.oSearch.sSearch = ""; - * } - * } ); - * } ); - */ - "fnStateSaveParams": null, - - - /** - * Duration for which the saved state information is considered valid. After this period - * has elapsed the state will be returned to the default. - * Value is given in seconds. - * @type int - * @default 7200 <i>(2 hours)</i> - * - * @dtopt Options - * @name DataTable.defaults.stateDuration - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "stateDuration": 60*60*24; // 1 day - * } ); - * } ) - */ - "iStateDuration": 7200, - - - /** - * When enabled DataTables will not make a request to the server for the first - * page draw - rather it will use the data already on the page (no sorting etc - * will be applied to it), thus saving on an XHR at load time. `deferLoading` - * is used to indicate that deferred loading is required, but it is also used - * to tell DataTables how many records there are in the full table (allowing - * the information element and pagination to be displayed correctly). In the case - * where a filtering is applied to the table on initial load, this can be - * indicated by giving the parameter as an array, where the first element is - * the number of records available after filtering and the second element is the - * number of records without filtering (allowing the table information element - * to be shown correctly). - * @type int | array - * @default null - * - * @dtopt Options - * @name DataTable.defaults.deferLoading - * - * @example - * // 57 records available in the table, no filtering applied - * $(document).ready( function() { - * $('#example').dataTable( { - * "serverSide": true, - * "ajax": "scripts/server_processing.php", - * "deferLoading": 57 - * } ); - * } ); - * - * @example - * // 57 records after filtering, 100 without filtering (an initial filter applied) - * $(document).ready( function() { - * $('#example').dataTable( { - * "serverSide": true, - * "ajax": "scripts/server_processing.php", - * "deferLoading": [ 57, 100 ], - * "search": { - * "search": "my_filter" - * } - * } ); - * } ); - */ - "iDeferLoading": null, - - - /** - * Number of rows to display on a single page when using pagination. If - * feature enabled (`lengthChange`) then the end user will be able to override - * this to a custom setting using a pop-up menu. - * @type int - * @default 10 - * - * @dtopt Options - * @name DataTable.defaults.pageLength - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "pageLength": 50 - * } ); - * } ) - */ - "iDisplayLength": 10, - - - /** - * Define the starting point for data display when using DataTables with - * pagination. Note that this parameter is the number of records, rather than - * the page number, so if you have 10 records per page and want to start on - * the third page, it should be "20". - * @type int - * @default 0 - * - * @dtopt Options - * @name DataTable.defaults.displayStart - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "displayStart": 20 - * } ); - * } ) - */ - "iDisplayStart": 0, - - - /** - * By default DataTables allows keyboard navigation of the table (sorting, paging, - * and filtering) by adding a `tabindex` attribute to the required elements. This - * allows you to tab through the controls and press the enter key to activate them. - * The tabindex is default 0, meaning that the tab follows the flow of the document. - * You can overrule this using this parameter if you wish. Use a value of -1 to - * disable built-in keyboard navigation. - * @type int - * @default 0 - * - * @dtopt Options - * @name DataTable.defaults.tabIndex - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "tabIndex": 1 - * } ); - * } ); - */ - "iTabIndex": 0, - - - /** - * Classes that DataTables assigns to the various components and features - * that it adds to the HTML table. This allows classes to be configured - * during initialisation in addition to through the static - * {@link DataTable.ext.oStdClasses} object). - * @namespace - * @name DataTable.defaults.classes - */ - "oClasses": {}, - - - /** - * All strings that DataTables uses in the user interface that it creates - * are defined in this object, allowing you to modified them individually or - * completely replace them all as required. - * @namespace - * @name DataTable.defaults.language - */ - "oLanguage": { - /** - * Strings that are used for WAI-ARIA labels and controls only (these are not - * actually visible on the page, but will be read by screenreaders, and thus - * must be internationalised as well). - * @namespace - * @name DataTable.defaults.language.aria - */ - "oAria": { - /** - * ARIA label that is added to the table headers when the column may be - * sorted ascending by activing the column (click or return when focused). - * Note that the column header is prefixed to this string. - * @type string - * @default : activate to sort column ascending - * - * @dtopt Language - * @name DataTable.defaults.language.aria.sortAscending - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "aria": { - * "sortAscending": " - click/return to sort ascending" - * } - * } - * } ); - * } ); - */ - "sSortAscending": ": activate to sort column ascending", - - /** - * ARIA label that is added to the table headers when the column may be - * sorted descending by activing the column (click or return when focused). - * Note that the column header is prefixed to this string. - * @type string - * @default : activate to sort column ascending - * - * @dtopt Language - * @name DataTable.defaults.language.aria.sortDescending - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "aria": { - * "sortDescending": " - click/return to sort descending" - * } - * } - * } ); - * } ); - */ - "sSortDescending": ": activate to sort column descending" - }, - - /** - * Pagination string used by DataTables for the built-in pagination - * control types. - * @namespace - * @name DataTable.defaults.language.paginate - */ - "oPaginate": { - /** - * Text to use when using the 'full_numbers' type of pagination for the - * button to take the user to the first page. - * @type string - * @default First - * - * @dtopt Language - * @name DataTable.defaults.language.paginate.first - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "paginate": { - * "first": "First page" - * } - * } - * } ); - * } ); - */ - "sFirst": "First", - - - /** - * Text to use when using the 'full_numbers' type of pagination for the - * button to take the user to the last page. - * @type string - * @default Last - * - * @dtopt Language - * @name DataTable.defaults.language.paginate.last - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "paginate": { - * "last": "Last page" - * } - * } - * } ); - * } ); - */ - "sLast": "Last", - - - /** - * Text to use for the 'next' pagination button (to take the user to the - * next page). - * @type string - * @default Next - * - * @dtopt Language - * @name DataTable.defaults.language.paginate.next - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "paginate": { - * "next": "Next page" - * } - * } - * } ); - * } ); - */ - "sNext": "Next", - - - /** - * Text to use for the 'previous' pagination button (to take the user to - * the previous page). - * @type string - * @default Previous - * - * @dtopt Language - * @name DataTable.defaults.language.paginate.previous - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "paginate": { - * "previous": "Previous page" - * } - * } - * } ); - * } ); - */ - "sPrevious": "Previous" - }, - - /** - * This string is shown in preference to `zeroRecords` when the table is - * empty of data (regardless of filtering). Note that this is an optional - * parameter - if it is not given, the value of `zeroRecords` will be used - * instead (either the default or given value). - * @type string - * @default No data available in table - * - * @dtopt Language - * @name DataTable.defaults.language.emptyTable - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "emptyTable": "No data available in table" - * } - * } ); - * } ); - */ - "sEmptyTable": "No data available in table", - - - /** - * This string gives information to the end user about the information - * that is current on display on the page. The following tokens can be - * used in the string and will be dynamically replaced as the table - * display updates. This tokens can be placed anywhere in the string, or - * removed as needed by the language requires: - * - * * `\_START\_` - Display index of the first record on the current page - * * `\_END\_` - Display index of the last record on the current page - * * `\_TOTAL\_` - Number of records in the table after filtering - * * `\_MAX\_` - Number of records in the table without filtering - * * `\_PAGE\_` - Current page number - * * `\_PAGES\_` - Total number of pages of data in the table - * - * @type string - * @default Showing _START_ to _END_ of _TOTAL_ entries - * - * @dtopt Language - * @name DataTable.defaults.language.info - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "info": "Showing page _PAGE_ of _PAGES_" - * } - * } ); - * } ); - */ - "sInfo": "Showing _START_ to _END_ of _TOTAL_ entries", - - - /** - * Display information string for when the table is empty. Typically the - * format of this string should match `info`. - * @type string - * @default Showing 0 to 0 of 0 entries - * - * @dtopt Language - * @name DataTable.defaults.language.infoEmpty - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "infoEmpty": "No entries to show" - * } - * } ); - * } ); - */ - "sInfoEmpty": "Showing 0 to 0 of 0 entries", - - - /** - * When a user filters the information in a table, this string is appended - * to the information (`info`) to give an idea of how strong the filtering - * is. The variable _MAX_ is dynamically updated. - * @type string - * @default (filtered from _MAX_ total entries) - * - * @dtopt Language - * @name DataTable.defaults.language.infoFiltered - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "infoFiltered": " - filtering from _MAX_ records" - * } - * } ); - * } ); - */ - "sInfoFiltered": "(filtered from _MAX_ total entries)", - - - /** - * If can be useful to append extra information to the info string at times, - * and this variable does exactly that. This information will be appended to - * the `info` (`infoEmpty` and `infoFiltered` in whatever combination they are - * being used) at all times. - * @type string - * @default <i>Empty string</i> - * - * @dtopt Language - * @name DataTable.defaults.language.infoPostFix - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "infoPostFix": "All records shown are derived from real information." - * } - * } ); - * } ); - */ - "sInfoPostFix": "", - - - /** - * This decimal place operator is a little different from the other - * language options since DataTables doesn't output floating point - * numbers, so it won't ever use this for display of a number. Rather, - * what this parameter does is modify the sort methods of the table so - * that numbers which are in a format which has a character other than - * a period (`.`) as a decimal place will be sorted numerically. - * - * Note that numbers with different decimal places cannot be shown in - * the same table and still be sortable, the table must be consistent. - * However, multiple different tables on the page can use different - * decimal place characters. - * @type string - * @default - * - * @dtopt Language - * @name DataTable.defaults.language.decimal - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "decimal": "," - * "thousands": "." - * } - * } ); - * } ); - */ - "sDecimal": "", - - - /** - * DataTables has a build in number formatter (`formatNumber`) which is - * used to format large numbers that are used in the table information. - * By default a comma is used, but this can be trivially changed to any - * character you wish with this parameter. - * @type string - * @default , - * - * @dtopt Language - * @name DataTable.defaults.language.thousands - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "thousands": "'" - * } - * } ); - * } ); - */ - "sThousands": ",", - - - /** - * Detail the action that will be taken when the drop down menu for the - * pagination length option is changed. The '_MENU_' variable is replaced - * with a default select list of 10, 25, 50 and 100, and can be replaced - * with a custom select box if required. - * @type string - * @default Show _MENU_ entries - * - * @dtopt Language - * @name DataTable.defaults.language.lengthMenu - * - * @example - * // Language change only - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "lengthMenu": "Display _MENU_ records" - * } - * } ); - * } ); - * - * @example - * // Language and options change - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "lengthMenu": 'Display <select>'+ - * '<option value="10">10</option>'+ - * '<option value="20">20</option>'+ - * '<option value="30">30</option>'+ - * '<option value="40">40</option>'+ - * '<option value="50">50</option>'+ - * '<option value="-1">All</option>'+ - * '</select> records' - * } - * } ); - * } ); - */ - "sLengthMenu": "Show _MENU_ entries", - - - /** - * When using Ajax sourced data and during the first draw when DataTables is - * gathering the data, this message is shown in an empty row in the table to - * indicate to the end user the the data is being loaded. Note that this - * parameter is not used when loading data by server-side processing, just - * Ajax sourced data with client-side processing. - * @type string - * @default Loading... - * - * @dtopt Language - * @name DataTable.defaults.language.loadingRecords - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "loadingRecords": "Please wait - loading..." - * } - * } ); - * } ); - */ - "sLoadingRecords": "Loading...", - - - /** - * Text which is displayed when the table is processing a user action - * (usually a sort command or similar). - * @type string - * @default Processing... - * - * @dtopt Language - * @name DataTable.defaults.language.processing - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "processing": "DataTables is currently busy" - * } - * } ); - * } ); - */ - "sProcessing": "Processing...", - - - /** - * Details the actions that will be taken when the user types into the - * filtering input text box. The variable "_INPUT_", if used in the string, - * is replaced with the HTML text box for the filtering input allowing - * control over where it appears in the string. If "_INPUT_" is not given - * then the input box is appended to the string automatically. - * @type string - * @default Search: - * - * @dtopt Language - * @name DataTable.defaults.language.search - * - * @example - * // Input text box will be appended at the end automatically - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "search": "Filter records:" - * } - * } ); - * } ); - * - * @example - * // Specify where the filter should appear - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "search": "Apply filter _INPUT_ to table" - * } - * } ); - * } ); - */ - "sSearch": "Search:", - - - /** - * Assign a `placeholder` attribute to the search `input` element - * @type string - * @default - * - * @dtopt Language - * @name DataTable.defaults.language.searchPlaceholder - */ - "sSearchPlaceholder": "", - - - /** - * All of the language information can be stored in a file on the - * server-side, which DataTables will look up if this parameter is passed. - * It must store the URL of the language file, which is in a JSON format, - * and the object has the same properties as the oLanguage object in the - * initialiser object (i.e. the above parameters). Please refer to one of - * the example language files to see how this works in action. - * @type string - * @default <i>Empty string - i.e. disabled</i> - * - * @dtopt Language - * @name DataTable.defaults.language.url - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "url": "http://www.sprymedia.co.uk/dataTables/lang.txt" - * } - * } ); - * } ); - */ - "sUrl": "", - - - /** - * Text shown inside the table records when the is no information to be - * displayed after filtering. `emptyTable` is shown when there is simply no - * information in the table at all (regardless of filtering). - * @type string - * @default No matching records found - * - * @dtopt Language - * @name DataTable.defaults.language.zeroRecords - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "zeroRecords": "No records to display" - * } - * } ); - * } ); - */ - "sZeroRecords": "No matching records found" - }, - - - /** - * This parameter allows you to have define the global filtering state at - * initialisation time. As an object the `search` parameter must be - * defined, but all other parameters are optional. When `regex` is true, - * the search string will be treated as a regular expression, when false - * (default) it will be treated as a straight string. When `smart` - * DataTables will use it's smart filtering methods (to word match at - * any point in the data), when false this will not be done. - * @namespace - * @extends DataTable.models.oSearch - * - * @dtopt Options - * @name DataTable.defaults.search - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "search": {"search": "Initial search"} - * } ); - * } ) - */ - "oSearch": $.extend( {}, DataTable.models.oSearch ), - - - /** - * __Deprecated__ The functionality provided by this parameter has now been - * superseded by that provided through `ajax`, which should be used instead. - * - * By default DataTables will look for the property `data` (or `aaData` for - * compatibility with DataTables 1.9-) when obtaining data from an Ajax - * source or for server-side processing - this parameter allows that - * property to be changed. You can use Javascript dotted object notation to - * get a data source for multiple levels of nesting. - * @type string - * @default data - * - * @dtopt Options - * @dtopt Server-side - * @name DataTable.defaults.ajaxDataProp - * - * @deprecated 1.10. Please use `ajax` for this functionality now. - */ - "sAjaxDataProp": "data", - - - /** - * __Deprecated__ The functionality provided by this parameter has now been - * superseded by that provided through `ajax`, which should be used instead. - * - * You can instruct DataTables to load data from an external - * source using this parameter (use aData if you want to pass data in you - * already have). Simply provide a url a JSON object can be obtained from. - * @type string - * @default null - * - * @dtopt Options - * @dtopt Server-side - * @name DataTable.defaults.ajaxSource - * - * @deprecated 1.10. Please use `ajax` for this functionality now. - */ - "sAjaxSource": null, - - - /** - * This initialisation variable allows you to specify exactly where in the - * DOM you want DataTables to inject the various controls it adds to the page - * (for example you might want the pagination controls at the top of the - * table). DIV elements (with or without a custom class) can also be added to - * aid styling. The follow syntax is used: - * <ul> - * <li>The following options are allowed: - * <ul> - * <li>'l' - Length changing</li> - * <li>'f' - Filtering input</li> - * <li>'t' - The table!</li> - * <li>'i' - Information</li> - * <li>'p' - Pagination</li> - * <li>'r' - pRocessing</li> - * </ul> - * </li> - * <li>The following constants are allowed: - * <ul> - * <li>'H' - jQueryUI theme "header" classes ('fg-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix')</li> - * <li>'F' - jQueryUI theme "footer" classes ('fg-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix')</li> - * </ul> - * </li> - * <li>The following syntax is expected: - * <ul> - * <li>'&lt;' and '&gt;' - div elements</li> - * <li>'&lt;"class" and '&gt;' - div with a class</li> - * <li>'&lt;"#id" and '&gt;' - div with an ID</li> - * </ul> - * </li> - * <li>Examples: - * <ul> - * <li>'&lt;"wrapper"flipt&gt;'</li> - * <li>'&lt;lf&lt;t&gt;ip&gt;'</li> - * </ul> - * </li> - * </ul> - * @type string - * @default lfrtip <i>(when `jQueryUI` is false)</i> <b>or</b> - * <"H"lfr>t<"F"ip> <i>(when `jQueryUI` is true)</i> - * - * @dtopt Options - * @name DataTable.defaults.dom - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "dom": '&lt;"top"i&gt;rt&lt;"bottom"flp&gt;&lt;"clear"&gt;' - * } ); - * } ); - */ - "sDom": "lfrtip", - - - /** - * Search delay option. This will throttle full table searches that use the - * DataTables provided search input element (it does not effect calls to - * `dt-api search()`, providing a delay before the search is made. - * @type integer - * @default 0 - * - * @dtopt Options - * @name DataTable.defaults.searchDelay - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "searchDelay": 200 - * } ); - * } ) - */ - "searchDelay": null, - - - /** - * DataTables features four different built-in options for the buttons to - * display for pagination control: - * - * * `simple` - 'Previous' and 'Next' buttons only - * * 'simple_numbers` - 'Previous' and 'Next' buttons, plus page numbers - * * `full` - 'First', 'Previous', 'Next' and 'Last' buttons - * * `full_numbers` - 'First', 'Previous', 'Next' and 'Last' buttons, plus - * page numbers - * - * Further methods can be added using {@link DataTable.ext.oPagination}. - * @type string - * @default simple_numbers - * - * @dtopt Options - * @name DataTable.defaults.pagingType - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "pagingType": "full_numbers" - * } ); - * } ) - */ - "sPaginationType": "simple_numbers", - - - /** - * Enable horizontal scrolling. When a table is too wide to fit into a - * certain layout, or you have a large number of columns in the table, you - * can enable x-scrolling to show the table in a viewport, which can be - * scrolled. This property can be `true` which will allow the table to - * scroll horizontally when needed, or any CSS unit, or a number (in which - * case it will be treated as a pixel measurement). Setting as simply `true` - * is recommended. - * @type boolean|string - * @default <i>blank string - i.e. disabled</i> - * - * @dtopt Features - * @name DataTable.defaults.scrollX - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "scrollX": true, - * "scrollCollapse": true - * } ); - * } ); - */ - "sScrollX": "", - - - /** - * This property can be used to force a DataTable to use more width than it - * might otherwise do when x-scrolling is enabled. For example if you have a - * table which requires to be well spaced, this parameter is useful for - * "over-sizing" the table, and thus forcing scrolling. This property can by - * any CSS unit, or a number (in which case it will be treated as a pixel - * measurement). - * @type string - * @default <i>blank string - i.e. disabled</i> - * - * @dtopt Options - * @name DataTable.defaults.scrollXInner - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "scrollX": "100%", - * "scrollXInner": "110%" - * } ); - * } ); - */ - "sScrollXInner": "", - - - /** - * Enable vertical scrolling. Vertical scrolling will constrain the DataTable - * to the given height, and enable scrolling for any data which overflows the - * current viewport. This can be used as an alternative to paging to display - * a lot of data in a small area (although paging and scrolling can both be - * enabled at the same time). This property can be any CSS unit, or a number - * (in which case it will be treated as a pixel measurement). - * @type string - * @default <i>blank string - i.e. disabled</i> - * - * @dtopt Features - * @name DataTable.defaults.scrollY - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "scrollY": "200px", - * "paginate": false - * } ); - * } ); - */ - "sScrollY": "", - - - /** - * __Deprecated__ The functionality provided by this parameter has now been - * superseded by that provided through `ajax`, which should be used instead. - * - * Set the HTTP method that is used to make the Ajax call for server-side - * processing or Ajax sourced data. - * @type string - * @default GET - * - * @dtopt Options - * @dtopt Server-side - * @name DataTable.defaults.serverMethod - * - * @deprecated 1.10. Please use `ajax` for this functionality now. - */ - "sServerMethod": "GET", - - - /** - * DataTables makes use of renderers when displaying HTML elements for - * a table. These renderers can be added or modified by plug-ins to - * generate suitable mark-up for a site. For example the Bootstrap - * integration plug-in for DataTables uses a paging button renderer to - * display pagination buttons in the mark-up required by Bootstrap. - * - * For further information about the renderers available see - * DataTable.ext.renderer - * @type string|object - * @default null - * - * @name DataTable.defaults.renderer - * - */ - "renderer": null - }; - - _fnHungarianMap( DataTable.defaults ); - - - - /* - * Developer note - See note in model.defaults.js about the use of Hungarian - * notation and camel case. - */ - - /** - * Column options that can be given to DataTables at initialisation time. - * @namespace - */ - DataTable.defaults.column = { - /** - * Define which column(s) an order will occur on for this column. This - * allows a column's ordering to take multiple columns into account when - * doing a sort or use the data from a different column. For example first - * name / last name columns make sense to do a multi-column sort over the - * two columns. - * @type array|int - * @default null <i>Takes the value of the column index automatically</i> - * - * @name DataTable.defaults.column.orderData - * @dtopt Columns - * - * @example - * // Using `columnDefs` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ - * { "orderData": [ 0, 1 ], "targets": [ 0 ] }, - * { "orderData": [ 1, 0 ], "targets": [ 1 ] }, - * { "orderData": 2, "targets": [ 2 ] } - * ] - * } ); - * } ); - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * { "orderData": [ 0, 1 ] }, - * { "orderData": [ 1, 0 ] }, - * { "orderData": 2 }, - * null, - * null - * ] - * } ); - * } ); - */ - "aDataSort": null, - "iDataSort": -1, - - - /** - * You can control the default ordering direction, and even alter the - * behaviour of the sort handler (i.e. only allow ascending ordering etc) - * using this parameter. - * @type array - * @default [ 'asc', 'desc' ] - * - * @name DataTable.defaults.column.orderSequence - * @dtopt Columns - * - * @example - * // Using `columnDefs` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ - * { "orderSequence": [ "asc" ], "targets": [ 1 ] }, - * { "orderSequence": [ "desc", "asc", "asc" ], "targets": [ 2 ] }, - * { "orderSequence": [ "desc" ], "targets": [ 3 ] } - * ] - * } ); - * } ); - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * null, - * { "orderSequence": [ "asc" ] }, - * { "orderSequence": [ "desc", "asc", "asc" ] }, - * { "orderSequence": [ "desc" ] }, - * null - * ] - * } ); - * } ); - */ - "asSorting": [ 'asc', 'desc' ], - - - /** - * Enable or disable filtering on the data in this column. - * @type boolean - * @default true - * - * @name DataTable.defaults.column.searchable - * @dtopt Columns - * - * @example - * // Using `columnDefs` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ - * { "searchable": false, "targets": [ 0 ] } - * ] } ); - * } ); - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * { "searchable": false }, - * null, - * null, - * null, - * null - * ] } ); - * } ); - */ - "bSearchable": true, - - - /** - * Enable or disable ordering on this column. - * @type boolean - * @default true - * - * @name DataTable.defaults.column.orderable - * @dtopt Columns - * - * @example - * // Using `columnDefs` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ - * { "orderable": false, "targets": [ 0 ] } - * ] } ); - * } ); - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * { "orderable": false }, - * null, - * null, - * null, - * null - * ] } ); - * } ); - */ - "bSortable": true, - - - /** - * Enable or disable the display of this column. - * @type boolean - * @default true - * - * @name DataTable.defaults.column.visible - * @dtopt Columns - * - * @example - * // Using `columnDefs` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ - * { "visible": false, "targets": [ 0 ] } - * ] } ); - * } ); - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * { "visible": false }, - * null, - * null, - * null, - * null - * ] } ); - * } ); - */ - "bVisible": true, - - - /** - * Developer definable function that is called whenever a cell is created (Ajax source, - * etc) or processed for input (DOM source). This can be used as a compliment to mRender - * allowing you to modify the DOM element (add background colour for example) when the - * element is available. - * @type function - * @param {element} td The TD node that has been created - * @param {*} cellData The Data for the cell - * @param {array|object} rowData The data for the whole row - * @param {int} row The row index for the aoData data store - * @param {int} col The column index for aoColumns - * - * @name DataTable.defaults.column.createdCell - * @dtopt Columns - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ { - * "targets": [3], - * "createdCell": function (td, cellData, rowData, row, col) { - * if ( cellData == "1.7" ) { - * $(td).css('color', 'blue') - * } - * } - * } ] - * }); - * } ); - */ - "fnCreatedCell": null, - - - /** - * This parameter has been replaced by `data` in DataTables to ensure naming - * consistency. `dataProp` can still be used, as there is backwards - * compatibility in DataTables for this option, but it is strongly - * recommended that you use `data` in preference to `dataProp`. - * @name DataTable.defaults.column.dataProp - */ - - - /** - * This property can be used to read data from any data source property, - * including deeply nested objects / properties. `data` can be given in a - * number of different ways which effect its behaviour: - * - * * `integer` - treated as an array index for the data source. This is the - * default that DataTables uses (incrementally increased for each column). - * * `string` - read an object property from the data source. There are - * three 'special' options that can be used in the string to alter how - * DataTables reads the data from the source object: - * * `.` - Dotted Javascript notation. Just as you use a `.` in - * Javascript to read from nested objects, so to can the options - * specified in `data`. For example: `browser.version` or - * `browser.name`. If your object parameter name contains a period, use - * `\\` to escape it - i.e. `first\\.name`. - * * `[]` - Array notation. DataTables can automatically combine data - * from and array source, joining the data with the characters provided - * between the two brackets. For example: `name[, ]` would provide a - * comma-space separated list from the source array. If no characters - * are provided between the brackets, the original array source is - * returned. - * * `()` - Function notation. Adding `()` to the end of a parameter will - * execute a function of the name given. For example: `browser()` for a - * simple function on the data source, `browser.version()` for a - * function in a nested property or even `browser().version` to get an - * object property if the function called returns an object. Note that - * function notation is recommended for use in `render` rather than - * `data` as it is much simpler to use as a renderer. - * * `null` - use the original data source for the row rather than plucking - * data directly from it. This action has effects on two other - * initialisation options: - * * `defaultContent` - When null is given as the `data` option and - * `defaultContent` is specified for the column, the value defined by - * `defaultContent` will be used for the cell. - * * `render` - When null is used for the `data` option and the `render` - * option is specified for the column, the whole data source for the - * row is used for the renderer. - * * `function` - the function given will be executed whenever DataTables - * needs to set or get the data for a cell in the column. The function - * takes three parameters: - * * Parameters: - * * `{array|object}` The data source for the row - * * `{string}` The type call data requested - this will be 'set' when - * setting data or 'filter', 'display', 'type', 'sort' or undefined - * when gathering data. Note that when `undefined` is given for the - * type DataTables expects to get the raw data for the object back< - * * `{*}` Data to set when the second parameter is 'set'. - * * Return: - * * The return value from the function is not required when 'set' is - * the type of call, but otherwise the return is what will be used - * for the data requested. - * - * Note that `data` is a getter and setter option. If you just require - * formatting of data for output, you will likely want to use `render` which - * is simply a getter and thus simpler to use. - * - * Note that prior to DataTables 1.9.2 `data` was called `mDataProp`. The - * name change reflects the flexibility of this property and is consistent - * with the naming of mRender. If 'mDataProp' is given, then it will still - * be used by DataTables, as it automatically maps the old name to the new - * if required. - * - * @type string|int|function|null - * @default null <i>Use automatically calculated column index</i> - * - * @name DataTable.defaults.column.data - * @dtopt Columns - * - * @example - * // Read table data from objects - * // JSON structure for each row: - * // { - * // "engine": {value}, - * // "browser": {value}, - * // "platform": {value}, - * // "version": {value}, - * // "grade": {value} - * // } - * $(document).ready( function() { - * $('#example').dataTable( { - * "ajaxSource": "sources/objects.txt", - * "columns": [ - * { "data": "engine" }, - * { "data": "browser" }, - * { "data": "platform" }, - * { "data": "version" }, - * { "data": "grade" } - * ] - * } ); - * } ); - * - * @example - * // Read information from deeply nested objects - * // JSON structure for each row: - * // { - * // "engine": {value}, - * // "browser": {value}, - * // "platform": { - * // "inner": {value} - * // }, - * // "details": [ - * // {value}, {value} - * // ] - * // } - * $(document).ready( function() { - * $('#example').dataTable( { - * "ajaxSource": "sources/deep.txt", - * "columns": [ - * { "data": "engine" }, - * { "data": "browser" }, - * { "data": "platform.inner" }, - * { "data": "platform.details.0" }, - * { "data": "platform.details.1" } - * ] - * } ); - * } ); - * - * @example - * // Using `data` as a function to provide different information for - * // sorting, filtering and display. In this case, currency (price) - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ { - * "targets": [ 0 ], - * "data": function ( source, type, val ) { - * if (type === 'set') { - * source.price = val; - * // Store the computed dislay and filter values for efficiency - * source.price_display = val=="" ? "" : "$"+numberFormat(val); - * source.price_filter = val=="" ? "" : "$"+numberFormat(val)+" "+val; - * return; - * } - * else if (type === 'display') { - * return source.price_display; - * } - * else if (type === 'filter') { - * return source.price_filter; - * } - * // 'sort', 'type' and undefined all just use the integer - * return source.price; - * } - * } ] - * } ); - * } ); - * - * @example - * // Using default content - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ { - * "targets": [ 0 ], - * "data": null, - * "defaultContent": "Click to edit" - * } ] - * } ); - * } ); - * - * @example - * // Using array notation - outputting a list from an array - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ { - * "targets": [ 0 ], - * "data": "name[, ]" - * } ] - * } ); - * } ); - * - */ - "mData": null, - - - /** - * This property is the rendering partner to `data` and it is suggested that - * when you want to manipulate data for display (including filtering, - * sorting etc) without altering the underlying data for the table, use this - * property. `render` can be considered to be the the read only companion to - * `data` which is read / write (then as such more complex). Like `data` - * this option can be given in a number of different ways to effect its - * behaviour: - * - * * `integer` - treated as an array index for the data source. This is the - * default that DataTables uses (incrementally increased for each column). - * * `string` - read an object property from the data source. There are - * three 'special' options that can be used in the string to alter how - * DataTables reads the data from the source object: - * * `.` - Dotted Javascript notation. Just as you use a `.` in - * Javascript to read from nested objects, so to can the options - * specified in `data`. For example: `browser.version` or - * `browser.name`. If your object parameter name contains a period, use - * `\\` to escape it - i.e. `first\\.name`. - * * `[]` - Array notation. DataTables can automatically combine data - * from and array source, joining the data with the characters provided - * between the two brackets. For example: `name[, ]` would provide a - * comma-space separated list from the source array. If no characters - * are provided between the brackets, the original array source is - * returned. - * * `()` - Function notation. Adding `()` to the end of a parameter will - * execute a function of the name given. For example: `browser()` for a - * simple function on the data source, `browser.version()` for a - * function in a nested property or even `browser().version` to get an - * object property if the function called returns an object. - * * `object` - use different data for the different data types requested by - * DataTables ('filter', 'display', 'type' or 'sort'). The property names - * of the object is the data type the property refers to and the value can - * defined using an integer, string or function using the same rules as - * `render` normally does. Note that an `_` option _must_ be specified. - * This is the default value to use if you haven't specified a value for - * the data type requested by DataTables. - * * `function` - the function given will be executed whenever DataTables - * needs to set or get the data for a cell in the column. The function - * takes three parameters: - * * Parameters: - * * {array|object} The data source for the row (based on `data`) - * * {string} The type call data requested - this will be 'filter', - * 'display', 'type' or 'sort'. - * * {array|object} The full data source for the row (not based on - * `data`) - * * Return: - * * The return value from the function is what will be used for the - * data requested. - * - * @type string|int|function|object|null - * @default null Use the data source value. - * - * @name DataTable.defaults.column.render - * @dtopt Columns - * - * @example - * // Create a comma separated list from an array of objects - * $(document).ready( function() { - * $('#example').dataTable( { - * "ajaxSource": "sources/deep.txt", - * "columns": [ - * { "data": "engine" }, - * { "data": "browser" }, - * { - * "data": "platform", - * "render": "[, ].name" - * } - * ] - * } ); - * } ); - * - * @example - * // Execute a function to obtain data - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ { - * "targets": [ 0 ], - * "data": null, // Use the full data source object for the renderer's source - * "render": "browserName()" - * } ] - * } ); - * } ); - * - * @example - * // As an object, extracting different data for the different types - * // This would be used with a data source such as: - * // { "phone": 5552368, "phone_filter": "5552368 555-2368", "phone_display": "555-2368" } - * // Here the `phone` integer is used for sorting and type detection, while `phone_filter` - * // (which has both forms) is used for filtering for if a user inputs either format, while - * // the formatted phone number is the one that is shown in the table. - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ { - * "targets": [ 0 ], - * "data": null, // Use the full data source object for the renderer's source - * "render": { - * "_": "phone", - * "filter": "phone_filter", - * "display": "phone_display" - * } - * } ] - * } ); - * } ); - * - * @example - * // Use as a function to create a link from the data source - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ { - * "targets": [ 0 ], - * "data": "download_link", - * "render": function ( data, type, full ) { - * return '<a href="'+data+'">Download</a>'; - * } - * } ] - * } ); - * } ); - */ - "mRender": null, - - - /** - * Change the cell type created for the column - either TD cells or TH cells. This - * can be useful as TH cells have semantic meaning in the table body, allowing them - * to act as a header for a row (you may wish to add scope='row' to the TH elements). - * @type string - * @default td - * - * @name DataTable.defaults.column.cellType - * @dtopt Columns - * - * @example - * // Make the first column use TH cells - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ { - * "targets": [ 0 ], - * "cellType": "th" - * } ] - * } ); - * } ); - */ - "sCellType": "td", - - - /** - * Class to give to each cell in this column. - * @type string - * @default <i>Empty string</i> - * - * @name DataTable.defaults.column.class - * @dtopt Columns - * - * @example - * // Using `columnDefs` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ - * { "class": "my_class", "targets": [ 0 ] } - * ] - * } ); - * } ); - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * { "class": "my_class" }, - * null, - * null, - * null, - * null - * ] - * } ); - * } ); - */ - "sClass": "", - - /** - * When DataTables calculates the column widths to assign to each column, - * it finds the longest string in each column and then constructs a - * temporary table and reads the widths from that. The problem with this - * is that "mmm" is much wider then "iiii", but the latter is a longer - * string - thus the calculation can go wrong (doing it properly and putting - * it into an DOM object and measuring that is horribly(!) slow). Thus as - * a "work around" we provide this option. It will append its value to the - * text that is found to be the longest string for the column - i.e. padding. - * Generally you shouldn't need this! - * @type string - * @default <i>Empty string<i> - * - * @name DataTable.defaults.column.contentPadding - * @dtopt Columns - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * null, - * null, - * null, - * { - * "contentPadding": "mmm" - * } - * ] - * } ); - * } ); - */ - "sContentPadding": "", - - - /** - * Allows a default value to be given for a column's data, and will be used - * whenever a null data source is encountered (this can be because `data` - * is set to null, or because the data source itself is null). - * @type string - * @default null - * - * @name DataTable.defaults.column.defaultContent - * @dtopt Columns - * - * @example - * // Using `columnDefs` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ - * { - * "data": null, - * "defaultContent": "Edit", - * "targets": [ -1 ] - * } - * ] - * } ); - * } ); - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * null, - * null, - * null, - * { - * "data": null, - * "defaultContent": "Edit" - * } - * ] - * } ); - * } ); - */ - "sDefaultContent": null, - - - /** - * This parameter is only used in DataTables' server-side processing. It can - * be exceptionally useful to know what columns are being displayed on the - * client side, and to map these to database fields. When defined, the names - * also allow DataTables to reorder information from the server if it comes - * back in an unexpected order (i.e. if you switch your columns around on the - * client-side, your server-side code does not also need updating). - * @type string - * @default <i>Empty string</i> - * - * @name DataTable.defaults.column.name - * @dtopt Columns - * - * @example - * // Using `columnDefs` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ - * { "name": "engine", "targets": [ 0 ] }, - * { "name": "browser", "targets": [ 1 ] }, - * { "name": "platform", "targets": [ 2 ] }, - * { "name": "version", "targets": [ 3 ] }, - * { "name": "grade", "targets": [ 4 ] } - * ] - * } ); - * } ); - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * { "name": "engine" }, - * { "name": "browser" }, - * { "name": "platform" }, - * { "name": "version" }, - * { "name": "grade" } - * ] - * } ); - * } ); - */ - "sName": "", - - - /** - * Defines a data source type for the ordering which can be used to read - * real-time information from the table (updating the internally cached - * version) prior to ordering. This allows ordering to occur on user - * editable elements such as form inputs. - * @type string - * @default std - * - * @name DataTable.defaults.column.orderDataType - * @dtopt Columns - * - * @example - * // Using `columnDefs` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ - * { "orderDataType": "dom-text", "targets": [ 2, 3 ] }, - * { "type": "numeric", "targets": [ 3 ] }, - * { "orderDataType": "dom-select", "targets": [ 4 ] }, - * { "orderDataType": "dom-checkbox", "targets": [ 5 ] } - * ] - * } ); - * } ); - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * null, - * null, - * { "orderDataType": "dom-text" }, - * { "orderDataType": "dom-text", "type": "numeric" }, - * { "orderDataType": "dom-select" }, - * { "orderDataType": "dom-checkbox" } - * ] - * } ); - * } ); - */ - "sSortDataType": "std", - - - /** - * The title of this column. - * @type string - * @default null <i>Derived from the 'TH' value for this column in the - * original HTML table.</i> - * - * @name DataTable.defaults.column.title - * @dtopt Columns - * - * @example - * // Using `columnDefs` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ - * { "title": "My column title", "targets": [ 0 ] } - * ] - * } ); - * } ); - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * { "title": "My column title" }, - * null, - * null, - * null, - * null - * ] - * } ); - * } ); - */ - "sTitle": null, - - - /** - * The type allows you to specify how the data for this column will be - * ordered. Four types (string, numeric, date and html (which will strip - * HTML tags before ordering)) are currently available. Note that only date - * formats understood by Javascript's Date() object will be accepted as type - * date. For example: "Mar 26, 2008 5:03 PM". May take the values: 'string', - * 'numeric', 'date' or 'html' (by default). Further types can be adding - * through plug-ins. - * @type string - * @default null <i>Auto-detected from raw data</i> - * - * @name DataTable.defaults.column.type - * @dtopt Columns - * - * @example - * // Using `columnDefs` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ - * { "type": "html", "targets": [ 0 ] } - * ] - * } ); - * } ); - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * { "type": "html" }, - * null, - * null, - * null, - * null - * ] - * } ); - * } ); - */ - "sType": null, - - - /** - * Defining the width of the column, this parameter may take any CSS value - * (3em, 20px etc). DataTables applies 'smart' widths to columns which have not - * been given a specific width through this interface ensuring that the table - * remains readable. - * @type string - * @default null <i>Automatic</i> - * - * @name DataTable.defaults.column.width - * @dtopt Columns - * - * @example - * // Using `columnDefs` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ - * { "width": "20%", "targets": [ 0 ] } - * ] - * } ); - * } ); - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * { "width": "20%" }, - * null, - * null, - * null, - * null - * ] - * } ); - * } ); - */ - "sWidth": null - }; - - _fnHungarianMap( DataTable.defaults.column ); - - - - /** - * DataTables settings object - this holds all the information needed for a - * given table, including configuration, data and current application of the - * table options. DataTables does not have a single instance for each DataTable - * with the settings attached to that instance, but rather instances of the - * DataTable "class" are created on-the-fly as needed (typically by a - * $().dataTable() call) and the settings object is then applied to that - * instance. - * - * Note that this object is related to {@link DataTable.defaults} but this - * one is the internal data store for DataTables's cache of columns. It should - * NOT be manipulated outside of DataTables. Any configuration should be done - * through the initialisation options. - * @namespace - * @todo Really should attach the settings object to individual instances so we - * don't need to create new instances on each $().dataTable() call (if the - * table already exists). It would also save passing oSettings around and - * into every single function. However, this is a very significant - * architecture change for DataTables and will almost certainly break - * backwards compatibility with older installations. This is something that - * will be done in 2.0. - */ - DataTable.models.oSettings = { - /** - * Primary features of DataTables and their enablement state. - * @namespace - */ - "oFeatures": { - - /** - * Flag to say if DataTables should automatically try to calculate the - * optimum table and columns widths (true) or not (false). - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bAutoWidth": null, - - /** - * Delay the creation of TR and TD elements until they are actually - * needed by a driven page draw. This can give a significant speed - * increase for Ajax source and Javascript source data, but makes no - * difference at all fro DOM and server-side processing tables. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bDeferRender": null, - - /** - * Enable filtering on the table or not. Note that if this is disabled - * then there is no filtering at all on the table, including fnFilter. - * To just remove the filtering input use sDom and remove the 'f' option. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bFilter": null, - - /** - * Table information element (the 'Showing x of y records' div) enable - * flag. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bInfo": null, - - /** - * Present a user control allowing the end user to change the page size - * when pagination is enabled. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bLengthChange": null, - - /** - * Pagination enabled or not. Note that if this is disabled then length - * changing must also be disabled. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bPaginate": null, - - /** - * Processing indicator enable flag whenever DataTables is enacting a - * user request - typically an Ajax request for server-side processing. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bProcessing": null, - - /** - * Server-side processing enabled flag - when enabled DataTables will - * get all data from the server for every draw - there is no filtering, - * sorting or paging done on the client-side. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bServerSide": null, - - /** - * Sorting enablement flag. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bSort": null, - - /** - * Multi-column sorting - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bSortMulti": null, - - /** - * Apply a class to the columns which are being sorted to provide a - * visual highlight or not. This can slow things down when enabled since - * there is a lot of DOM interaction. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bSortClasses": null, - - /** - * State saving enablement flag. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bStateSave": null - }, - - - /** - * Scrolling settings for a table. - * @namespace - */ - "oScroll": { - /** - * When the table is shorter in height than sScrollY, collapse the - * table container down to the height of the table (when true). - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bCollapse": null, - - /** - * Width of the scrollbar for the web-browser's platform. Calculated - * during table initialisation. - * @type int - * @default 0 - */ - "iBarWidth": 0, - - /** - * Viewport width for horizontal scrolling. Horizontal scrolling is - * disabled if an empty string. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type string - */ - "sX": null, - - /** - * Width to expand the table to when using x-scrolling. Typically you - * should not need to use this. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type string - * @deprecated - */ - "sXInner": null, - - /** - * Viewport height for vertical scrolling. Vertical scrolling is disabled - * if an empty string. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type string - */ - "sY": null - }, - - /** - * Language information for the table. - * @namespace - * @extends DataTable.defaults.oLanguage - */ - "oLanguage": { - /** - * Information callback function. See - * {@link DataTable.defaults.fnInfoCallback} - * @type function - * @default null - */ - "fnInfoCallback": null - }, - - /** - * Browser support parameters - * @namespace - */ - "oBrowser": { - /** - * Indicate if the browser incorrectly calculates width:100% inside a - * scrolling element (IE6/7) - * @type boolean - * @default false - */ - "bScrollOversize": false, - - /** - * Determine if the vertical scrollbar is on the right or left of the - * scrolling container - needed for rtl language layout, although not - * all browsers move the scrollbar (Safari). - * @type boolean - * @default false - */ - "bScrollbarLeft": false - }, - - - "ajax": null, - - - /** - * Array referencing the nodes which are used for the features. The - * parameters of this object match what is allowed by sDom - i.e. - * <ul> - * <li>'l' - Length changing</li> - * <li>'f' - Filtering input</li> - * <li>'t' - The table!</li> - * <li>'i' - Information</li> - * <li>'p' - Pagination</li> - * <li>'r' - pRocessing</li> - * </ul> - * @type array - * @default [] - */ - "aanFeatures": [], - - /** - * Store data information - see {@link DataTable.models.oRow} for detailed - * information. - * @type array - * @default [] - */ - "aoData": [], - - /** - * Array of indexes which are in the current display (after filtering etc) - * @type array - * @default [] - */ - "aiDisplay": [], - - /** - * Array of indexes for display - no filtering - * @type array - * @default [] - */ - "aiDisplayMaster": [], - - /** - * Store information about each column that is in use - * @type array - * @default [] - */ - "aoColumns": [], - - /** - * Store information about the table's header - * @type array - * @default [] - */ - "aoHeader": [], - - /** - * Store information about the table's footer - * @type array - * @default [] - */ - "aoFooter": [], - - /** - * Store the applied global search information in case we want to force a - * research or compare the old search to a new one. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @namespace - * @extends DataTable.models.oSearch - */ - "oPreviousSearch": {}, - - /** - * Store the applied search for each column - see - * {@link DataTable.models.oSearch} for the format that is used for the - * filtering information for each column. - * @type array - * @default [] - */ - "aoPreSearchCols": [], - - /** - * Sorting that is applied to the table. Note that the inner arrays are - * used in the following manner: - * <ul> - * <li>Index 0 - column number</li> - * <li>Index 1 - current sorting direction</li> - * </ul> - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type array - * @todo These inner arrays should really be objects - */ - "aaSorting": null, - - /** - * Sorting that is always applied to the table (i.e. prefixed in front of - * aaSorting). - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type array - * @default [] - */ - "aaSortingFixed": [], - - /** - * Classes to use for the striping of a table. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type array - * @default [] - */ - "asStripeClasses": null, - - /** - * If restoring a table - we should restore its striping classes as well - * @type array - * @default [] - */ - "asDestroyStripes": [], - - /** - * If restoring a table - we should restore its width - * @type int - * @default 0 - */ - "sDestroyWidth": 0, - - /** - * Callback functions array for every time a row is inserted (i.e. on a draw). - * @type array - * @default [] - */ - "aoRowCallback": [], - - /** - * Callback functions for the header on each draw. - * @type array - * @default [] - */ - "aoHeaderCallback": [], - - /** - * Callback function for the footer on each draw. - * @type array - * @default [] - */ - "aoFooterCallback": [], - - /** - * Array of callback functions for draw callback functions - * @type array - * @default [] - */ - "aoDrawCallback": [], - - /** - * Array of callback functions for row created function - * @type array - * @default [] - */ - "aoRowCreatedCallback": [], - - /** - * Callback functions for just before the table is redrawn. A return of - * false will be used to cancel the draw. - * @type array - * @default [] - */ - "aoPreDrawCallback": [], - - /** - * Callback functions for when the table has been initialised. - * @type array - * @default [] - */ - "aoInitComplete": [], - - - /** - * Callbacks for modifying the settings to be stored for state saving, prior to - * saving state. - * @type array - * @default [] - */ - "aoStateSaveParams": [], - - /** - * Callbacks for modifying the settings that have been stored for state saving - * prior to using the stored values to restore the state. - * @type array - * @default [] - */ - "aoStateLoadParams": [], - - /** - * Callbacks for operating on the settings object once the saved state has been - * loaded - * @type array - * @default [] - */ - "aoStateLoaded": [], - - /** - * Cache the table ID for quick access - * @type string - * @default <i>Empty string</i> - */ - "sTableId": "", - - /** - * The TABLE node for the main table - * @type node - * @default null - */ - "nTable": null, - - /** - * Permanent ref to the thead element - * @type node - * @default null - */ - "nTHead": null, - - /** - * Permanent ref to the tfoot element - if it exists - * @type node - * @default null - */ - "nTFoot": null, - - /** - * Permanent ref to the tbody element - * @type node - * @default null - */ - "nTBody": null, - - /** - * Cache the wrapper node (contains all DataTables controlled elements) - * @type node - * @default null - */ - "nTableWrapper": null, - - /** - * Indicate if when using server-side processing the loading of data - * should be deferred until the second draw. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - * @default false - */ - "bDeferLoading": false, - - /** - * Indicate if all required information has been read in - * @type boolean - * @default false - */ - "bInitialised": false, - - /** - * Information about open rows. Each object in the array has the parameters - * 'nTr' and 'nParent' - * @type array - * @default [] - */ - "aoOpenRows": [], - - /** - * Dictate the positioning of DataTables' control elements - see - * {@link DataTable.model.oInit.sDom}. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type string - * @default null - */ - "sDom": null, - - /** - * Search delay (in mS) - * @type integer - * @default null - */ - "searchDelay": null, - - /** - * Which type of pagination should be used. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type string - * @default two_button - */ - "sPaginationType": "two_button", - - /** - * The state duration (for `stateSave`) in seconds. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type int - * @default 0 - */ - "iStateDuration": 0, - - /** - * Array of callback functions for state saving. Each array element is an - * object with the following parameters: - * <ul> - * <li>function:fn - function to call. Takes two parameters, oSettings - * and the JSON string to save that has been thus far created. Returns - * a JSON string to be inserted into a json object - * (i.e. '"param": [ 0, 1, 2]')</li> - * <li>string:sName - name of callback</li> - * </ul> - * @type array - * @default [] - */ - "aoStateSave": [], - - /** - * Array of callback functions for state loading. Each array element is an - * object with the following parameters: - * <ul> - * <li>function:fn - function to call. Takes two parameters, oSettings - * and the object stored. May return false to cancel state loading</li> - * <li>string:sName - name of callback</li> - * </ul> - * @type array - * @default [] - */ - "aoStateLoad": [], - - /** - * State that was saved. Useful for back reference - * @type object - * @default null - */ - "oSavedState": null, - - /** - * State that was loaded. Useful for back reference - * @type object - * @default null - */ - "oLoadedState": null, - - /** - * Source url for AJAX data for the table. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type string - * @default null - */ - "sAjaxSource": null, - - /** - * Property from a given object from which to read the table data from. This - * can be an empty string (when not server-side processing), in which case - * it is assumed an an array is given directly. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type string - */ - "sAjaxDataProp": null, - - /** - * Note if draw should be blocked while getting data - * @type boolean - * @default true - */ - "bAjaxDataGet": true, - - /** - * The last jQuery XHR object that was used for server-side data gathering. - * This can be used for working with the XHR information in one of the - * callbacks - * @type object - * @default null - */ - "jqXHR": null, - - /** - * JSON returned from the server in the last Ajax request - * @type object - * @default undefined - */ - "json": undefined, - - /** - * Data submitted as part of the last Ajax request - * @type object - * @default undefined - */ - "oAjaxData": undefined, - - /** - * Function to get the server-side data. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type function - */ - "fnServerData": null, - - /** - * Functions which are called prior to sending an Ajax request so extra - * parameters can easily be sent to the server - * @type array - * @default [] - */ - "aoServerParams": [], - - /** - * Send the XHR HTTP method - GET or POST (could be PUT or DELETE if - * required). - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type string - */ - "sServerMethod": null, - - /** - * Format numbers for display. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type function - */ - "fnFormatNumber": null, - - /** - * List of options that can be used for the user selectable length menu. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type array - * @default [] - */ - "aLengthMenu": null, - - /** - * Counter for the draws that the table does. Also used as a tracker for - * server-side processing - * @type int - * @default 0 - */ - "iDraw": 0, - - /** - * Indicate if a redraw is being done - useful for Ajax - * @type boolean - * @default false - */ - "bDrawing": false, - - /** - * Draw index (iDraw) of the last error when parsing the returned data - * @type int - * @default -1 - */ - "iDrawError": -1, - - /** - * Paging display length - * @type int - * @default 10 - */ - "_iDisplayLength": 10, - - /** - * Paging start point - aiDisplay index - * @type int - * @default 0 - */ - "_iDisplayStart": 0, - - /** - * Server-side processing - number of records in the result set - * (i.e. before filtering), Use fnRecordsTotal rather than - * this property to get the value of the number of records, regardless of - * the server-side processing setting. - * @type int - * @default 0 - * @private - */ - "_iRecordsTotal": 0, - - /** - * Server-side processing - number of records in the current display set - * (i.e. after filtering). Use fnRecordsDisplay rather than - * this property to get the value of the number of records, regardless of - * the server-side processing setting. - * @type boolean - * @default 0 - * @private - */ - "_iRecordsDisplay": 0, - - /** - * Flag to indicate if jQuery UI marking and classes should be used. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bJUI": null, - - /** - * The classes to use for the table - * @type object - * @default {} - */ - "oClasses": {}, - - /** - * Flag attached to the settings object so you can check in the draw - * callback if filtering has been done in the draw. Deprecated in favour of - * events. - * @type boolean - * @default false - * @deprecated - */ - "bFiltered": false, - - /** - * Flag attached to the settings object so you can check in the draw - * callback if sorting has been done in the draw. Deprecated in favour of - * events. - * @type boolean - * @default false - * @deprecated - */ - "bSorted": false, - - /** - * Indicate that if multiple rows are in the header and there is more than - * one unique cell per column, if the top one (true) or bottom one (false) - * should be used for sorting / title by DataTables. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bSortCellsTop": null, - - /** - * Initialisation object that is used for the table - * @type object - * @default null - */ - "oInit": null, - - /** - * Destroy callback functions - for plug-ins to attach themselves to the - * destroy so they can clean up markup and events. - * @type array - * @default [] - */ - "aoDestroyCallback": [], - - - /** - * Get the number of records in the current record set, before filtering - * @type function - */ - "fnRecordsTotal": function () - { - return _fnDataSource( this ) == 'ssp' ? - this._iRecordsTotal * 1 : - this.aiDisplayMaster.length; - }, - - /** - * Get the number of records in the current record set, after filtering - * @type function - */ - "fnRecordsDisplay": function () - { - return _fnDataSource( this ) == 'ssp' ? - this._iRecordsDisplay * 1 : - this.aiDisplay.length; - }, - - /** - * Get the display end point - aiDisplay index - * @type function - */ - "fnDisplayEnd": function () - { - var - len = this._iDisplayLength, - start = this._iDisplayStart, - calc = start + len, - records = this.aiDisplay.length, - features = this.oFeatures, - paginate = features.bPaginate; - - if ( features.bServerSide ) { - return paginate === false || len === -1 ? - start + records : - Math.min( start+len, this._iRecordsDisplay ); - } - else { - return ! paginate || calc>records || len===-1 ? - records : - calc; - } - }, - - /** - * The DataTables object for this table - * @type object - * @default null - */ - "oInstance": null, - - /** - * Unique identifier for each instance of the DataTables object. If there - * is an ID on the table node, then it takes that value, otherwise an - * incrementing internal counter is used. - * @type string - * @default null - */ - "sInstance": null, - - /** - * tabindex attribute value that is added to DataTables control elements, allowing - * keyboard navigation of the table and its controls. - */ - "iTabIndex": 0, - - /** - * DIV container for the footer scrolling table if scrolling - */ - "nScrollHead": null, - - /** - * DIV container for the footer scrolling table if scrolling - */ - "nScrollFoot": null, - - /** - * Last applied sort - * @type array - * @default [] - */ - "aLastSort": [], - - /** - * Stored plug-in instances - * @type object - * @default {} - */ - "oPlugins": {} - }; - - /** - * Extension object for DataTables that is used to provide all extension - * options. - * - * Note that the `DataTable.ext` object is available through - * `jQuery.fn.dataTable.ext` where it may be accessed and manipulated. It is - * also aliased to `jQuery.fn.dataTableExt` for historic reasons. - * @namespace - * @extends DataTable.models.ext - */ - - - /** - * DataTables extensions - * - * This namespace acts as a collection area for plug-ins that can be used to - * extend DataTables capabilities. Indeed many of the build in methods - * use this method to provide their own capabilities (sorting methods for - * example). - * - * Note that this namespace is aliased to `jQuery.fn.dataTableExt` for legacy - * reasons - * - * @namespace - */ - DataTable.ext = _ext = { - /** - * Buttons. For use with the Buttons extension for DataTables. This is - * defined here so other extensions can define buttons regardless of load - * order. It is _not_ used by DataTables core. - * - * @type object - * @default {} - */ - buttons: {}, - - - /** - * Element class names - * - * @type object - * @default {} - */ - classes: {}, - - - /** - * Error reporting. - * - * How should DataTables report an error. Can take the value 'alert', - * 'throw', 'none' or a function. - * - * @type string|function - * @default alert - */ - errMode: "alert", - - - /** - * Feature plug-ins. - * - * This is an array of objects which describe the feature plug-ins that are - * available to DataTables. These feature plug-ins are then available for - * use through the `dom` initialisation option. - * - * Each feature plug-in is described by an object which must have the - * following properties: - * - * * `fnInit` - function that is used to initialise the plug-in, - * * `cFeature` - a character so the feature can be enabled by the `dom` - * instillation option. This is case sensitive. - * - * The `fnInit` function has the following input parameters: - * - * 1. `{object}` DataTables settings object: see - * {@link DataTable.models.oSettings} - * - * And the following return is expected: - * - * * {node|null} The element which contains your feature. Note that the - * return may also be void if your plug-in does not require to inject any - * DOM elements into DataTables control (`dom`) - for example this might - * be useful when developing a plug-in which allows table control via - * keyboard entry - * - * @type array - * - * @example - * $.fn.dataTable.ext.features.push( { - * "fnInit": function( oSettings ) { - * return new TableTools( { "oDTSettings": oSettings } ); - * }, - * "cFeature": "T" - * } ); - */ - feature: [], - - - /** - * Row searching. - * - * This method of searching is complimentary to the default type based - * searching, and a lot more comprehensive as it allows you complete control - * over the searching logic. Each element in this array is a function - * (parameters described below) that is called for every row in the table, - * and your logic decides if it should be included in the searching data set - * or not. - * - * Searching functions have the following input parameters: - * - * 1. `{object}` DataTables settings object: see - * {@link DataTable.models.oSettings} - * 2. `{array|object}` Data for the row to be processed (same as the - * original format that was passed in as the data source, or an array - * from a DOM data source - * 3. `{int}` Row index ({@link DataTable.models.oSettings.aoData}), which - * can be useful to retrieve the `TR` element if you need DOM interaction. - * - * And the following return is expected: - * - * * {boolean} Include the row in the searched result set (true) or not - * (false) - * - * Note that as with the main search ability in DataTables, technically this - * is "filtering", since it is subtractive. However, for consistency in - * naming we call it searching here. - * - * @type array - * @default [] - * - * @example - * // The following example shows custom search being applied to the - * // fourth column (i.e. the data[3] index) based on two input values - * // from the end-user, matching the data in a certain range. - * $.fn.dataTable.ext.search.push( - * function( settings, data, dataIndex ) { - * var min = document.getElementById('min').value * 1; - * var max = document.getElementById('max').value * 1; - * var version = data[3] == "-" ? 0 : data[3]*1; - * - * if ( min == "" && max == "" ) { - * return true; - * } - * else if ( min == "" && version < max ) { - * return true; - * } - * else if ( min < version && "" == max ) { - * return true; - * } - * else if ( min < version && version < max ) { - * return true; - * } - * return false; - * } - * ); - */ - search: [], - - - /** - * Selector extensions - * - * The `selector` option can be used to extend the options available for the - * selector modifier options (`selector-modifier` object data type) that - * each of the three built in selector types offer (row, column and cell + - * their plural counterparts). For example the Select extension uses this - * mechanism to provide an option to select only rows, columns and cells - * that have been marked as selected by the end user (`{selected: true}`), - * which can be used in conjunction with the existing built in selector - * options. - * - * Each property is an array to which functions can be pushed. The functions - * take three attributes: - * - * * Settings object for the host table - * * Options object (`selector-modifier` object type) - * * Array of selected item indexes - * - * The return is an array of the resulting item indexes after the custom - * selector has been applied. - * - * @type object - */ - selector: { - cell: [], - column: [], - row: [] - }, - - - /** - * Internal functions, exposed for used in plug-ins. - * - * Please note that you should not need to use the internal methods for - * anything other than a plug-in (and even then, try to avoid if possible). - * The internal function may change between releases. - * - * @type object - * @default {} - */ - internal: {}, - - - /** - * Legacy configuration options. Enable and disable legacy options that - * are available in DataTables. - * - * @type object - */ - legacy: { - /** - * Enable / disable DataTables 1.9 compatible server-side processing - * requests - * - * @type boolean - * @default null - */ - ajax: null - }, - - - /** - * Pagination plug-in methods. - * - * Each entry in this object is a function and defines which buttons should - * be shown by the pagination rendering method that is used for the table: - * {@link DataTable.ext.renderer.pageButton}. The renderer addresses how the - * buttons are displayed in the document, while the functions here tell it - * what buttons to display. This is done by returning an array of button - * descriptions (what each button will do). - * - * Pagination types (the four built in options and any additional plug-in - * options defined here) can be used through the `paginationType` - * initialisation parameter. - * - * The functions defined take two parameters: - * - * 1. `{int} page` The current page index - * 2. `{int} pages` The number of pages in the table - * - * Each function is expected to return an array where each element of the - * array can be one of: - * - * * `first` - Jump to first page when activated - * * `last` - Jump to last page when activated - * * `previous` - Show previous page when activated - * * `next` - Show next page when activated - * * `{int}` - Show page of the index given - * * `{array}` - A nested array containing the above elements to add a - * containing 'DIV' element (might be useful for styling). - * - * Note that DataTables v1.9- used this object slightly differently whereby - * an object with two functions would be defined for each plug-in. That - * ability is still supported by DataTables 1.10+ to provide backwards - * compatibility, but this option of use is now decremented and no longer - * documented in DataTables 1.10+. - * - * @type object - * @default {} - * - * @example - * // Show previous, next and current page buttons only - * $.fn.dataTableExt.oPagination.current = function ( page, pages ) { - * return [ 'previous', page, 'next' ]; - * }; - */ - pager: {}, - - - renderer: { - pageButton: {}, - header: {} - }, - - - /** - * Ordering plug-ins - custom data source - * - * The extension options for ordering of data available here is complimentary - * to the default type based ordering that DataTables typically uses. It - * allows much greater control over the the data that is being used to - * order a column, but is necessarily therefore more complex. - * - * This type of ordering is useful if you want to do ordering based on data - * live from the DOM (for example the contents of an 'input' element) rather - * than just the static string that DataTables knows of. - * - * The way these plug-ins work is that you create an array of the values you - * wish to be ordering for the column in question and then return that - * array. The data in the array much be in the index order of the rows in - * the table (not the currently ordering order!). Which order data gathering - * function is run here depends on the `dt-init columns.orderDataType` - * parameter that is used for the column (if any). - * - * The functions defined take two parameters: - * - * 1. `{object}` DataTables settings object: see - * {@link DataTable.models.oSettings} - * 2. `{int}` Target column index - * - * Each function is expected to return an array: - * - * * `{array}` Data for the column to be ordering upon - * - * @type array - * - * @example - * // Ordering using `input` node values - * $.fn.dataTable.ext.order['dom-text'] = function ( settings, col ) - * { - * return this.api().column( col, {order:'index'} ).nodes().map( function ( td, i ) { - * return $('input', td).val(); - * } ); - * } - */ - order: {}, - - - /** - * Type based plug-ins. - * - * Each column in DataTables has a type assigned to it, either by automatic - * detection or by direct assignment using the `type` option for the column. - * The type of a column will effect how it is ordering and search (plug-ins - * can also make use of the column type if required). - * - * @namespace - */ - type: { - /** - * Type detection functions. - * - * The functions defined in this object are used to automatically detect - * a column's type, making initialisation of DataTables super easy, even - * when complex data is in the table. - * - * The functions defined take two parameters: - * - * 1. `{*}` Data from the column cell to be analysed - * 2. `{settings}` DataTables settings object. This can be used to - * perform context specific type detection - for example detection - * based on language settings such as using a comma for a decimal - * place. Generally speaking the options from the settings will not - * be required - * - * Each function is expected to return: - * - * * `{string|null}` Data type detected, or null if unknown (and thus - * pass it on to the other type detection functions. - * - * @type array - * - * @example - * // Currency type detection plug-in: - * $.fn.dataTable.ext.type.detect.push( - * function ( data, settings ) { - * // Check the numeric part - * if ( ! $.isNumeric( data.substring(1) ) ) { - * return null; - * } - * - * // Check prefixed by currency - * if ( data.charAt(0) == '$' || data.charAt(0) == '&pound;' ) { - * return 'currency'; - * } - * return null; - * } - * ); - */ - detect: [], - - - /** - * Type based search formatting. - * - * The type based searching functions can be used to pre-format the - * data to be search on. For example, it can be used to strip HTML - * tags or to de-format telephone numbers for numeric only searching. - * - * Note that is a search is not defined for a column of a given type, - * no search formatting will be performed. - * - * Pre-processing of searching data plug-ins - When you assign the sType - * for a column (or have it automatically detected for you by DataTables - * or a type detection plug-in), you will typically be using this for - * custom sorting, but it can also be used to provide custom searching - * by allowing you to pre-processing the data and returning the data in - * the format that should be searched upon. This is done by adding - * functions this object with a parameter name which matches the sType - * for that target column. This is the corollary of <i>afnSortData</i> - * for searching data. - * - * The functions defined take a single parameter: - * - * 1. `{*}` Data from the column cell to be prepared for searching - * - * Each function is expected to return: - * - * * `{string|null}` Formatted string that will be used for the searching. - * - * @type object - * @default {} - * - * @example - * $.fn.dataTable.ext.type.search['title-numeric'] = function ( d ) { - * return d.replace(/\n/g," ").replace( /<.*?>/g, "" ); - * } - */ - search: {}, - - - /** - * Type based ordering. - * - * The column type tells DataTables what ordering to apply to the table - * when a column is sorted upon. The order for each type that is defined, - * is defined by the functions available in this object. - * - * Each ordering option can be described by three properties added to - * this object: - * - * * `{type}-pre` - Pre-formatting function - * * `{type}-asc` - Ascending order function - * * `{type}-desc` - Descending order function - * - * All three can be used together, only `{type}-pre` or only - * `{type}-asc` and `{type}-desc` together. It is generally recommended - * that only `{type}-pre` is used, as this provides the optimal - * implementation in terms of speed, although the others are provided - * for compatibility with existing Javascript sort functions. - * - * `{type}-pre`: Functions defined take a single parameter: - * - * 1. `{*}` Data from the column cell to be prepared for ordering - * - * And return: - * - * * `{*}` Data to be sorted upon - * - * `{type}-asc` and `{type}-desc`: Functions are typical Javascript sort - * functions, taking two parameters: - * - * 1. `{*}` Data to compare to the second parameter - * 2. `{*}` Data to compare to the first parameter - * - * And returning: - * - * * `{*}` Ordering match: <0 if first parameter should be sorted lower - * than the second parameter, ===0 if the two parameters are equal and - * >0 if the first parameter should be sorted height than the second - * parameter. - * - * @type object - * @default {} - * - * @example - * // Numeric ordering of formatted numbers with a pre-formatter - * $.extend( $.fn.dataTable.ext.type.order, { - * "string-pre": function(x) { - * a = (a === "-" || a === "") ? 0 : a.replace( /[^\d\-\.]/g, "" ); - * return parseFloat( a ); - * } - * } ); - * - * @example - * // Case-sensitive string ordering, with no pre-formatting method - * $.extend( $.fn.dataTable.ext.order, { - * "string-case-asc": function(x,y) { - * return ((x < y) ? -1 : ((x > y) ? 1 : 0)); - * }, - * "string-case-desc": function(x,y) { - * return ((x < y) ? 1 : ((x > y) ? -1 : 0)); - * } - * } ); - */ - order: {} - }, - - /** - * Unique DataTables instance counter - * - * @type int - * @private - */ - _unique: 0, - - - // - // Depreciated - // The following properties are retained for backwards compatiblity only. - // The should not be used in new projects and will be removed in a future - // version - // - - /** - * Version check function. - * @type function - * @depreciated Since 1.10 - */ - fnVersionCheck: DataTable.fnVersionCheck, - - - /** - * Index for what 'this' index API functions should use - * @type int - * @deprecated Since v1.10 - */ - iApiIndex: 0, - - - /** - * jQuery UI class container - * @type object - * @deprecated Since v1.10 - */ - oJUIClasses: {}, - - - /** - * Software version - * @type string - * @deprecated Since v1.10 - */ - sVersion: DataTable.version - }; - - - // - // Backwards compatibility. Alias to pre 1.10 Hungarian notation counter parts - // - $.extend( _ext, { - afnFiltering: _ext.search, - aTypes: _ext.type.detect, - ofnSearch: _ext.type.search, - oSort: _ext.type.order, - afnSortData: _ext.order, - aoFeatures: _ext.feature, - oApi: _ext.internal, - oStdClasses: _ext.classes, - oPagination: _ext.pager - } ); - - - $.extend( DataTable.ext.classes, { - "sTable": "dataTable", - "sNoFooter": "no-footer", - - /* Paging buttons */ - "sPageButton": "paginate_button", - "sPageButtonActive": "current", - "sPageButtonDisabled": "disabled", - - /* Striping classes */ - "sStripeOdd": "odd", - "sStripeEven": "even", - - /* Empty row */ - "sRowEmpty": "dataTables_empty", - - /* Features */ - "sWrapper": "dataTables_wrapper", - "sFilter": "dataTables_filter", - "sInfo": "dataTables_info", - "sPaging": "dataTables_paginate paging_", /* Note that the type is postfixed */ - "sLength": "dataTables_length", - "sProcessing": "dataTables_processing", - - /* Sorting */ - "sSortAsc": "sorting_asc", - "sSortDesc": "sorting_desc", - "sSortable": "sorting", /* Sortable in both directions */ - "sSortableAsc": "sorting_asc_disabled", - "sSortableDesc": "sorting_desc_disabled", - "sSortableNone": "sorting_disabled", - "sSortColumn": "sorting_", /* Note that an int is postfixed for the sorting order */ - - /* Filtering */ - "sFilterInput": "", - - /* Page length */ - "sLengthSelect": "", - - /* Scrolling */ - "sScrollWrapper": "dataTables_scroll", - "sScrollHead": "dataTables_scrollHead", - "sScrollHeadInner": "dataTables_scrollHeadInner", - "sScrollBody": "dataTables_scrollBody", - "sScrollFoot": "dataTables_scrollFoot", - "sScrollFootInner": "dataTables_scrollFootInner", - - /* Misc */ - "sHeaderTH": "", - "sFooterTH": "", - - // Deprecated - "sSortJUIAsc": "", - "sSortJUIDesc": "", - "sSortJUI": "", - "sSortJUIAscAllowed": "", - "sSortJUIDescAllowed": "", - "sSortJUIWrapper": "", - "sSortIcon": "", - "sJUIHeader": "", - "sJUIFooter": "" - } ); - - - (function() { - - // Reused strings for better compression. Closure compiler appears to have a - // weird edge case where it is trying to expand strings rather than use the - // variable version. This results in about 200 bytes being added, for very - // little preference benefit since it this run on script load only. - var _empty = ''; - _empty = ''; - - var _stateDefault = _empty + 'ui-state-default'; - var _sortIcon = _empty + 'css_right ui-icon ui-icon-'; - var _headerFooter = _empty + 'fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix'; - - $.extend( DataTable.ext.oJUIClasses, DataTable.ext.classes, { - /* Full numbers paging buttons */ - "sPageButton": "fg-button ui-button "+_stateDefault, - "sPageButtonActive": "ui-state-disabled", - "sPageButtonDisabled": "ui-state-disabled", - - /* Features */ - "sPaging": "dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi "+ - "ui-buttonset-multi paging_", /* Note that the type is postfixed */ - - /* Sorting */ - "sSortAsc": _stateDefault+" sorting_asc", - "sSortDesc": _stateDefault+" sorting_desc", - "sSortable": _stateDefault+" sorting", - "sSortableAsc": _stateDefault+" sorting_asc_disabled", - "sSortableDesc": _stateDefault+" sorting_desc_disabled", - "sSortableNone": _stateDefault+" sorting_disabled", - "sSortJUIAsc": _sortIcon+"triangle-1-n", - "sSortJUIDesc": _sortIcon+"triangle-1-s", - "sSortJUI": _sortIcon+"carat-2-n-s", - "sSortJUIAscAllowed": _sortIcon+"carat-1-n", - "sSortJUIDescAllowed": _sortIcon+"carat-1-s", - "sSortJUIWrapper": "DataTables_sort_wrapper", - "sSortIcon": "DataTables_sort_icon", - - /* Scrolling */ - "sScrollHead": "dataTables_scrollHead "+_stateDefault, - "sScrollFoot": "dataTables_scrollFoot "+_stateDefault, - - /* Misc */ - "sHeaderTH": _stateDefault, - "sFooterTH": _stateDefault, - "sJUIHeader": _headerFooter+" ui-corner-tl ui-corner-tr", - "sJUIFooter": _headerFooter+" ui-corner-bl ui-corner-br" - } ); - - }()); - - - - var extPagination = DataTable.ext.pager; - - function _numbers ( page, pages ) { - var - numbers = [], - buttons = extPagination.numbers_length, - half = Math.floor( buttons / 2 ), - i = 1; - - if ( pages <= buttons ) { - numbers = _range( 0, pages ); - } - else if ( page <= half ) { - numbers = _range( 0, buttons-2 ); - numbers.push( 'ellipsis' ); - numbers.push( pages-1 ); - } - else if ( page >= pages - 1 - half ) { - numbers = _range( pages-(buttons-2), pages ); - numbers.splice( 0, 0, 'ellipsis' ); // no unshift in ie6 - numbers.splice( 0, 0, 0 ); - } - else { - numbers = _range( page-half+2, page+half-1 ); - numbers.push( 'ellipsis' ); - numbers.push( pages-1 ); - numbers.splice( 0, 0, 'ellipsis' ); - numbers.splice( 0, 0, 0 ); - } - - numbers.DT_el = 'span'; - return numbers; - } - - - $.extend( extPagination, { - simple: function ( page, pages ) { - return [ 'previous', 'next' ]; - }, - - full: function ( page, pages ) { - return [ 'first', 'previous', 'next', 'last' ]; - }, - - simple_numbers: function ( page, pages ) { - return [ 'previous', _numbers(page, pages), 'next' ]; - }, - - full_numbers: function ( page, pages ) { - return [ 'first', 'previous', _numbers(page, pages), 'next', 'last' ]; - }, - - // For testing and plug-ins to use - _numbers: _numbers, - - // Number of number buttons (including ellipsis) to show. _Must be odd!_ - numbers_length: 7 - } ); - - - $.extend( true, DataTable.ext.renderer, { - pageButton: { - _: function ( settings, host, idx, buttons, page, pages ) { - var classes = settings.oClasses; - var lang = settings.oLanguage.oPaginate; - var btnDisplay, btnClass, counter=0; - - var attach = function( container, buttons ) { - var i, ien, node, button; - var clickHandler = function ( e ) { - _fnPageChange( settings, e.data.action, true ); - }; - - for ( i=0, ien=buttons.length ; i<ien ; i++ ) { - button = buttons[i]; - - if ( $.isArray( button ) ) { - var inner = $( '<'+(button.DT_el || 'div')+'/>' ) - .appendTo( container ); - attach( inner, button ); - } - else { - btnDisplay = ''; - btnClass = ''; - - switch ( button ) { - case 'ellipsis': - container.append('<span class="ellipsis">&#x2026;</span>'); - break; - - case 'first': - btnDisplay = lang.sFirst; - btnClass = button + (page > 0 ? - '' : ' '+classes.sPageButtonDisabled); - break; - - case 'previous': - btnDisplay = lang.sPrevious; - btnClass = button + (page > 0 ? - '' : ' '+classes.sPageButtonDisabled); - break; - - case 'next': - btnDisplay = lang.sNext; - btnClass = button + (page < pages-1 ? - '' : ' '+classes.sPageButtonDisabled); - break; - - case 'last': - btnDisplay = lang.sLast; - btnClass = button + (page < pages-1 ? - '' : ' '+classes.sPageButtonDisabled); - break; - - default: - btnDisplay = button + 1; - btnClass = page === button ? - classes.sPageButtonActive : ''; - break; - } - - if ( btnDisplay ) { - node = $('<a>', { - 'class': classes.sPageButton+' '+btnClass, - 'aria-controls': settings.sTableId, - 'data-dt-idx': counter, - 'tabindex': settings.iTabIndex, - 'id': idx === 0 && typeof button === 'string' ? - settings.sTableId +'_'+ button : - null - } ) - .html( btnDisplay ) - .appendTo( container ); - - _fnBindAction( - node, {action: button}, clickHandler - ); - - counter++; - } - } - } - }; - - // IE9 throws an 'unknown error' if document.activeElement is used - // inside an iframe or frame. Try / catch the error. Not good for - // accessibility, but neither are frames. - var activeEl; - - try { - // Because this approach is destroying and recreating the paging - // elements, focus is lost on the select button which is bad for - // accessibility. So we want to restore focus once the draw has - // completed - activeEl = $(document.activeElement).data('dt-idx'); - } - catch (e) {} - - attach( $(host).empty(), buttons ); - - if ( activeEl ) { - $(host).find( '[data-dt-idx='+activeEl+']' ).focus(); - } - } - } - } ); - - - - // Built in type detection. See model.ext.aTypes for information about - // what is required from this methods. - $.extend( DataTable.ext.type.detect, [ - // Plain numbers - first since V8 detects some plain numbers as dates - // e.g. Date.parse('55') (but not all, e.g. Date.parse('22')...). - function ( d, settings ) - { - var decimal = settings.oLanguage.sDecimal; - return _isNumber( d, decimal ) ? 'num'+decimal : null; - }, - - // Dates (only those recognised by the browser's Date.parse) - function ( d, settings ) - { - // V8 will remove any unknown characters at the start and end of the - // expression, leading to false matches such as `$245.12` or `10%` being - // a valid date. See forum thread 18941 for detail. - if ( d && !(d instanceof Date) && ( ! _re_date_start.test(d) || ! _re_date_end.test(d) ) ) { - return null; - } - var parsed = Date.parse(d); - return (parsed !== null && !isNaN(parsed)) || _empty(d) ? 'date' : null; - }, - - // Formatted numbers - function ( d, settings ) - { - var decimal = settings.oLanguage.sDecimal; - return _isNumber( d, decimal, true ) ? 'num-fmt'+decimal : null; - }, - - // HTML numeric - function ( d, settings ) - { - var decimal = settings.oLanguage.sDecimal; - return _htmlNumeric( d, decimal ) ? 'html-num'+decimal : null; - }, - - // HTML numeric, formatted - function ( d, settings ) - { - var decimal = settings.oLanguage.sDecimal; - return _htmlNumeric( d, decimal, true ) ? 'html-num-fmt'+decimal : null; - }, - - // HTML (this is strict checking - there must be html) - function ( d, settings ) - { - return _empty( d ) || (typeof d === 'string' && d.indexOf('<') !== -1) ? - 'html' : null; - } - ] ); - - - - // Filter formatting functions. See model.ext.ofnSearch for information about - // what is required from these methods. - // - // Note that additional search methods are added for the html numbers and - // html formatted numbers by `_addNumericSort()` when we know what the decimal - // place is - - - $.extend( DataTable.ext.type.search, { - html: function ( data ) { - return _empty(data) ? - data : - typeof data === 'string' ? - data - .replace( _re_new_lines, " " ) - .replace( _re_html, "" ) : - ''; - }, - - string: function ( data ) { - return _empty(data) ? - data : - typeof data === 'string' ? - data.replace( _re_new_lines, " " ) : - data; - } - } ); - - - - var __numericReplace = function ( d, decimalPlace, re1, re2 ) { - if ( d !== 0 && (!d || d === '-') ) { - return -Infinity; - } - - // If a decimal place other than `.` is used, it needs to be given to the - // function so we can detect it and replace with a `.` which is the only - // decimal place Javascript recognises - it is not locale aware. - if ( decimalPlace ) { - d = _numToDecimal( d, decimalPlace ); - } - - if ( d.replace ) { - if ( re1 ) { - d = d.replace( re1, '' ); - } - - if ( re2 ) { - d = d.replace( re2, '' ); - } - } - - return d * 1; - }; - - - // Add the numeric 'deformatting' functions for sorting and search. This is done - // in a function to provide an easy ability for the language options to add - // additional methods if a non-period decimal place is used. - function _addNumericSort ( decimalPlace ) { - $.each( - { - // Plain numbers - "num": function ( d ) { - return __numericReplace( d, decimalPlace ); - }, - - // Formatted numbers - "num-fmt": function ( d ) { - return __numericReplace( d, decimalPlace, _re_formatted_numeric ); - }, - - // HTML numeric - "html-num": function ( d ) { - return __numericReplace( d, decimalPlace, _re_html ); - }, - - // HTML numeric, formatted - "html-num-fmt": function ( d ) { - return __numericReplace( d, decimalPlace, _re_html, _re_formatted_numeric ); - } - }, - function ( key, fn ) { - // Add the ordering method - _ext.type.order[ key+decimalPlace+'-pre' ] = fn; - - // For HTML types add a search formatter that will strip the HTML - if ( key.match(/^html\-/) ) { - _ext.type.search[ key+decimalPlace ] = _ext.type.search.html; - } - } - ); - } - - - // Default sort methods - $.extend( _ext.type.order, { - // Dates - "date-pre": function ( d ) { - return Date.parse( d ) || 0; - }, - - // html - "html-pre": function ( a ) { - return _empty(a) ? - '' : - a.replace ? - a.replace( /<.*?>/g, "" ).toLowerCase() : - a+''; - }, - - // string - "string-pre": function ( a ) { - // This is a little complex, but faster than always calling toString, - // http://jsperf.com/tostring-v-check - return _empty(a) ? - '' : - typeof a === 'string' ? - a.toLowerCase() : - ! a.toString ? - '' : - a.toString(); - }, - - // string-asc and -desc are retained only for compatibility with the old - // sort methods - "string-asc": function ( x, y ) { - return ((x < y) ? -1 : ((x > y) ? 1 : 0)); - }, - - "string-desc": function ( x, y ) { - return ((x < y) ? 1 : ((x > y) ? -1 : 0)); - } - } ); - - - // Numeric sorting types - order doesn't matter here - _addNumericSort( '' ); - - - $.extend( true, DataTable.ext.renderer, { - header: { - _: function ( settings, cell, column, classes ) { - // No additional mark-up required - // Attach a sort listener to update on sort - note that using the - // `DT` namespace will allow the event to be removed automatically - // on destroy, while the `dt` namespaced event is the one we are - // listening for - $(settings.nTable).on( 'order.dt.DT', function ( e, ctx, sorting, columns ) { - if ( settings !== ctx ) { // need to check this this is the host - return; // table, not a nested one - } - - var colIdx = column.idx; - - cell - .removeClass( - column.sSortingClass +' '+ - classes.sSortAsc +' '+ - classes.sSortDesc - ) - .addClass( columns[ colIdx ] == 'asc' ? - classes.sSortAsc : columns[ colIdx ] == 'desc' ? - classes.sSortDesc : - column.sSortingClass - ); - } ); - }, - - jqueryui: function ( settings, cell, column, classes ) { - $('<div/>') - .addClass( classes.sSortJUIWrapper ) - .append( cell.contents() ) - .append( $('<span/>') - .addClass( classes.sSortIcon+' '+column.sSortingClassJUI ) - ) - .appendTo( cell ); - - // Attach a sort listener to update on sort - $(settings.nTable).on( 'order.dt.DT', function ( e, ctx, sorting, columns ) { - if ( settings !== ctx ) { - return; - } - - var colIdx = column.idx; - - cell - .removeClass( classes.sSortAsc +" "+classes.sSortDesc ) - .addClass( columns[ colIdx ] == 'asc' ? - classes.sSortAsc : columns[ colIdx ] == 'desc' ? - classes.sSortDesc : - column.sSortingClass - ); - - cell - .find( 'span.'+classes.sSortIcon ) - .removeClass( - classes.sSortJUIAsc +" "+ - classes.sSortJUIDesc +" "+ - classes.sSortJUI +" "+ - classes.sSortJUIAscAllowed +" "+ - classes.sSortJUIDescAllowed - ) - .addClass( columns[ colIdx ] == 'asc' ? - classes.sSortJUIAsc : columns[ colIdx ] == 'desc' ? - classes.sSortJUIDesc : - column.sSortingClassJUI - ); - } ); - } - } - } ); - - /* - * Public helper functions. These aren't used internally by DataTables, or - * called by any of the options passed into DataTables, but they can be used - * externally by developers working with DataTables. They are helper functions - * to make working with DataTables a little bit easier. - */ - - /** - * Helpers for `columns.render`. - * - * The options defined here can be used with the `columns.render` initialisation - * option to provide a display renderer. The following functions are defined: - * - * * `number` - Will format numeric data (defined by `columns.data`) for - * display, retaining the original unformatted data for sorting and filtering. - * It takes 4 parameters: - * * `string` - Thousands grouping separator - * * `string` - Decimal point indicator - * * `integer` - Number of decimal points to show - * * `string` (optional) - Prefix. - * - * @example - * // Column definition using the number renderer - * { - * data: "salary", - * render: $.fn.dataTable.render.number( '\'', '.', 0, '$' ) - * } - * - * @namespace - */ - DataTable.render = { - number: function ( thousands, decimal, precision, prefix ) { - return { - display: function ( d ) { - if ( typeof d !== 'number' && typeof d !== 'string' ) { - return d; - } - - var negative = d < 0 ? '-' : ''; - d = Math.abs( parseFloat( d ) ); - - var intPart = parseInt( d, 10 ); - var floatPart = precision ? - decimal+(d - intPart).toFixed( precision ).substring( 2 ): - ''; - - return negative + (prefix||'') + - intPart.toString().replace( - /\B(?=(\d{3})+(?!\d))/g, thousands - ) + - floatPart; - } - }; - } - }; - - - /* - * This is really a good bit rubbish this method of exposing the internal methods - * publicly... - To be fixed in 2.0 using methods on the prototype - */ - - - /** - * Create a wrapper function for exporting an internal functions to an external API. - * @param {string} fn API function name - * @returns {function} wrapped function - * @memberof DataTable#internal - */ - function _fnExternApiFunc (fn) - { - return function() { - var args = [_fnSettingsFromNode( this[DataTable.ext.iApiIndex] )].concat( - Array.prototype.slice.call(arguments) - ); - return DataTable.ext.internal[fn].apply( this, args ); - }; - } - - - /** - * Reference to internal functions for use by plug-in developers. Note that - * these methods are references to internal functions and are considered to be - * private. If you use these methods, be aware that they are liable to change - * between versions. - * @namespace - */ - $.extend( DataTable.ext.internal, { - _fnExternApiFunc: _fnExternApiFunc, - _fnBuildAjax: _fnBuildAjax, - _fnAjaxUpdate: _fnAjaxUpdate, - _fnAjaxParameters: _fnAjaxParameters, - _fnAjaxUpdateDraw: _fnAjaxUpdateDraw, - _fnAjaxDataSrc: _fnAjaxDataSrc, - _fnAddColumn: _fnAddColumn, - _fnColumnOptions: _fnColumnOptions, - _fnAdjustColumnSizing: _fnAdjustColumnSizing, - _fnVisibleToColumnIndex: _fnVisibleToColumnIndex, - _fnColumnIndexToVisible: _fnColumnIndexToVisible, - _fnVisbleColumns: _fnVisbleColumns, - _fnGetColumns: _fnGetColumns, - _fnColumnTypes: _fnColumnTypes, - _fnApplyColumnDefs: _fnApplyColumnDefs, - _fnHungarianMap: _fnHungarianMap, - _fnCamelToHungarian: _fnCamelToHungarian, - _fnLanguageCompat: _fnLanguageCompat, - _fnBrowserDetect: _fnBrowserDetect, - _fnAddData: _fnAddData, - _fnAddTr: _fnAddTr, - _fnNodeToDataIndex: _fnNodeToDataIndex, - _fnNodeToColumnIndex: _fnNodeToColumnIndex, - _fnGetCellData: _fnGetCellData, - _fnSetCellData: _fnSetCellData, - _fnSplitObjNotation: _fnSplitObjNotation, - _fnGetObjectDataFn: _fnGetObjectDataFn, - _fnSetObjectDataFn: _fnSetObjectDataFn, - _fnGetDataMaster: _fnGetDataMaster, - _fnClearTable: _fnClearTable, - _fnDeleteIndex: _fnDeleteIndex, - _fnInvalidate: _fnInvalidate, - _fnGetRowElements: _fnGetRowElements, - _fnCreateTr: _fnCreateTr, - _fnBuildHead: _fnBuildHead, - _fnDrawHead: _fnDrawHead, - _fnDraw: _fnDraw, - _fnReDraw: _fnReDraw, - _fnAddOptionsHtml: _fnAddOptionsHtml, - _fnDetectHeader: _fnDetectHeader, - _fnGetUniqueThs: _fnGetUniqueThs, - _fnFeatureHtmlFilter: _fnFeatureHtmlFilter, - _fnFilterComplete: _fnFilterComplete, - _fnFilterCustom: _fnFilterCustom, - _fnFilterColumn: _fnFilterColumn, - _fnFilter: _fnFilter, - _fnFilterCreateSearch: _fnFilterCreateSearch, - _fnEscapeRegex: _fnEscapeRegex, - _fnFilterData: _fnFilterData, - _fnFeatureHtmlInfo: _fnFeatureHtmlInfo, - _fnUpdateInfo: _fnUpdateInfo, - _fnInfoMacros: _fnInfoMacros, - _fnInitialise: _fnInitialise, - _fnInitComplete: _fnInitComplete, - _fnLengthChange: _fnLengthChange, - _fnFeatureHtmlLength: _fnFeatureHtmlLength, - _fnFeatureHtmlPaginate: _fnFeatureHtmlPaginate, - _fnPageChange: _fnPageChange, - _fnFeatureHtmlProcessing: _fnFeatureHtmlProcessing, - _fnProcessingDisplay: _fnProcessingDisplay, - _fnFeatureHtmlTable: _fnFeatureHtmlTable, - _fnScrollDraw: _fnScrollDraw, - _fnApplyToChildren: _fnApplyToChildren, - _fnCalculateColumnWidths: _fnCalculateColumnWidths, - _fnThrottle: _fnThrottle, - _fnConvertToWidth: _fnConvertToWidth, - _fnScrollingWidthAdjust: _fnScrollingWidthAdjust, - _fnGetWidestNode: _fnGetWidestNode, - _fnGetMaxLenString: _fnGetMaxLenString, - _fnStringToCss: _fnStringToCss, - _fnScrollBarWidth: _fnScrollBarWidth, - _fnSortFlatten: _fnSortFlatten, - _fnSort: _fnSort, - _fnSortAria: _fnSortAria, - _fnSortListener: _fnSortListener, - _fnSortAttachListener: _fnSortAttachListener, - _fnSortingClasses: _fnSortingClasses, - _fnSortData: _fnSortData, - _fnSaveState: _fnSaveState, - _fnLoadState: _fnLoadState, - _fnSettingsFromNode: _fnSettingsFromNode, - _fnLog: _fnLog, - _fnMap: _fnMap, - _fnBindAction: _fnBindAction, - _fnCallbackReg: _fnCallbackReg, - _fnCallbackFire: _fnCallbackFire, - _fnLengthOverflow: _fnLengthOverflow, - _fnRenderer: _fnRenderer, - _fnDataSource: _fnDataSource, - _fnRowAttributes: _fnRowAttributes, - _fnCalculateEnd: function () {} // Used by a lot of plug-ins, but redundant - // in 1.10, so this dead-end function is - // added to prevent errors - } ); - - - // jQuery access - $.fn.dataTable = DataTable; - - // Legacy aliases - $.fn.dataTableSettings = DataTable.settings; - $.fn.dataTableExt = DataTable.ext; - - // With a capital `D` we return a DataTables API instance rather than a - // jQuery object - $.fn.DataTable = function ( opts ) { - return $(this).dataTable( opts ).api(); - }; - - // All properties that are available to $.fn.dataTable should also be - // available on $.fn.DataTable - $.each( DataTable, function ( prop, val ) { - $.fn.DataTable[ prop ] = val; - } ); - - - // Information about events fired by DataTables - for documentation. - /** - * Draw event, fired whenever the table is redrawn on the page, at the same - * point as fnDrawCallback. This may be useful for binding events or - * performing calculations when the table is altered at all. - * @name DataTable#draw.dt - * @event - * @param {event} e jQuery event object - * @param {object} o DataTables settings object {@link DataTable.models.oSettings} - */ - - /** - * Search event, fired when the searching applied to the table (using the - * built-in global search, or column filters) is altered. - * @name DataTable#search.dt - * @event - * @param {event} e jQuery event object - * @param {object} o DataTables settings object {@link DataTable.models.oSettings} - */ - - /** - * Page change event, fired when the paging of the table is altered. - * @name DataTable#page.dt - * @event - * @param {event} e jQuery event object - * @param {object} o DataTables settings object {@link DataTable.models.oSettings} - */ - - /** - * Order event, fired when the ordering applied to the table is altered. - * @name DataTable#order.dt - * @event - * @param {event} e jQuery event object - * @param {object} o DataTables settings object {@link DataTable.models.oSettings} - */ - - /** - * DataTables initialisation complete event, fired when the table is fully - * drawn, including Ajax data loaded, if Ajax data is required. - * @name DataTable#init.dt - * @event - * @param {event} e jQuery event object - * @param {object} oSettings DataTables settings object - * @param {object} json The JSON object request from the server - only - * present if client-side Ajax sourced data is used</li></ol> - */ - - /** - * State save event, fired when the table has changed state a new state save - * is required. This event allows modification of the state saving object - * prior to actually doing the save, including addition or other state - * properties (for plug-ins) or modification of a DataTables core property. - * @name DataTable#stateSaveParams.dt - * @event - * @param {event} e jQuery event object - * @param {object} oSettings DataTables settings object - * @param {object} json The state information to be saved - */ - - /** - * State load event, fired when the table is loading state from the stored - * data, but prior to the settings object being modified by the saved state - * - allowing modification of the saved state is required or loading of - * state for a plug-in. - * @name DataTable#stateLoadParams.dt - * @event - * @param {event} e jQuery event object - * @param {object} oSettings DataTables settings object - * @param {object} json The saved state information - */ - - /** - * State loaded event, fired when state has been loaded from stored data and - * the settings object has been modified by the loaded data. - * @name DataTable#stateLoaded.dt - * @event - * @param {event} e jQuery event object - * @param {object} oSettings DataTables settings object - * @param {object} json The saved state information - */ - - /** - * Processing event, fired when DataTables is doing some kind of processing - * (be it, order, searcg or anything else). It can be used to indicate to - * the end user that there is something happening, or that something has - * finished. - * @name DataTable#processing.dt - * @event - * @param {event} e jQuery event object - * @param {object} oSettings DataTables settings object - * @param {boolean} bShow Flag for if DataTables is doing processing or not - */ - - /** - * Ajax (XHR) event, fired whenever an Ajax request is completed from a - * request to made to the server for new data. This event is called before - * DataTables processed the returned data, so it can also be used to pre- - * process the data returned from the server, if needed. - * - * Note that this trigger is called in `fnServerData`, if you override - * `fnServerData` and which to use this event, you need to trigger it in you - * success function. - * @name DataTable#xhr.dt - * @event - * @param {event} e jQuery event object - * @param {object} o DataTables settings object {@link DataTable.models.oSettings} - * @param {object} json JSON returned from the server - * - * @example - * // Use a custom property returned from the server in another DOM element - * $('#table').dataTable().on('xhr.dt', function (e, settings, json) { - * $('#status').html( json.status ); - * } ); - * - * @example - * // Pre-process the data returned from the server - * $('#table').dataTable().on('xhr.dt', function (e, settings, json) { - * for ( var i=0, ien=json.aaData.length ; i<ien ; i++ ) { - * json.aaData[i].sum = json.aaData[i].one + json.aaData[i].two; - * } - * // Note no return - manipulate the data directly in the JSON object. - * } ); - */ - - /** - * Destroy event, fired when the DataTable is destroyed by calling fnDestroy - * or passing the bDestroy:true parameter in the initialisation object. This - * can be used to remove bound events, added DOM nodes, etc. - * @name DataTable#destroy.dt - * @event - * @param {event} e jQuery event object - * @param {object} o DataTables settings object {@link DataTable.models.oSettings} - */ - - /** - * Page length change event, fired when number of records to show on each - * page (the length) is changed. - * @name DataTable#length.dt - * @event - * @param {event} e jQuery event object - * @param {object} o DataTables settings object {@link DataTable.models.oSettings} - * @param {integer} len New length - */ - - /** - * Column sizing has changed. - * @name DataTable#column-sizing.dt - * @event - * @param {event} e jQuery event object - * @param {object} o DataTables settings object {@link DataTable.models.oSettings} - */ - - /** - * Column visibility has changed. - * @name DataTable#column-visibility.dt - * @event - * @param {event} e jQuery event object - * @param {object} o DataTables settings object {@link DataTable.models.oSettings} - * @param {int} column Column index - * @param {bool} vis `false` if column now hidden, or `true` if visible - */ - - return $.fn.dataTable; -})); - -}(window, document)); - diff --git a/assets/plugins/datatables/jquery.dataTables.min.css b/assets/plugins/datatables/jquery.dataTables.min.css deleted file mode 100644 index 2edb32f7..00000000 --- a/assets/plugins/datatables/jquery.dataTables.min.css +++ /dev/null @@ -1 +0,0 @@ -table.dataTable{width:100%;margin:0 auto;clear:both;border-collapse:separate;border-spacing:0}table.dataTable thead th,table.dataTable tfoot th{font-weight:bold}table.dataTable thead th,table.dataTable thead td{padding:10px 18px;border-bottom:1px solid #111}table.dataTable thead th:active,table.dataTable thead td:active{outline:none}table.dataTable tfoot th,table.dataTable tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc{cursor:pointer;*cursor:hand}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{background-repeat:no-repeat;background-position:center right}table.dataTable thead .sorting{background-image:url("../images/sort_both.png")}table.dataTable thead .sorting_asc{background-image:url("../images/sort_asc.png")}table.dataTable thead .sorting_desc{background-image:url("../images/sort_desc.png")}table.dataTable thead .sorting_asc_disabled{background-image:url("../images/sort_asc_disabled.png")}table.dataTable thead .sorting_desc_disabled{background-image:url("../images/sort_desc_disabled.png")}table.dataTable tbody tr{background-color:#fff}table.dataTable tbody tr.selected{background-color:#B0BED9}table.dataTable tbody th,table.dataTable tbody td{padding:8px 10px}table.dataTable.row-border tbody th,table.dataTable.row-border tbody td,table.dataTable.display tbody th,table.dataTable.display tbody td{border-top:1px solid #ddd}table.dataTable.row-border tbody tr:first-child th,table.dataTable.row-border tbody tr:first-child td,table.dataTable.display tbody tr:first-child th,table.dataTable.display tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th,table.dataTable.cell-border tbody td{border-top:1px solid #ddd;border-right:1px solid #ddd}table.dataTable.cell-border tbody tr th:first-child,table.dataTable.cell-border tbody tr td:first-child{border-left:1px solid #ddd}table.dataTable.cell-border tbody tr:first-child th,table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.stripe tbody tr.odd,table.dataTable.display tbody tr.odd{background-color:#f9f9f9}table.dataTable.stripe tbody tr.odd.selected,table.dataTable.display tbody tr.odd.selected{background-color:#abb9d3}table.dataTable.hover tbody tr:hover,table.dataTable.display tbody tr:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr:hover.selected,table.dataTable.display tbody tr:hover.selected{background-color:#a9b7d1}table.dataTable.order-column tbody tr>.sorting_1,table.dataTable.order-column tbody tr>.sorting_2,table.dataTable.order-column tbody tr>.sorting_3,table.dataTable.display tbody tr>.sorting_1,table.dataTable.display tbody tr>.sorting_2,table.dataTable.display tbody tr>.sorting_3{background-color:#f9f9f9}table.dataTable.order-column tbody tr.selected>.sorting_1,table.dataTable.order-column tbody tr.selected>.sorting_2,table.dataTable.order-column tbody tr.selected>.sorting_3,table.dataTable.display tbody tr.selected>.sorting_1,table.dataTable.display tbody tr.selected>.sorting_2,table.dataTable.display tbody tr.selected>.sorting_3{background-color:#acbad4}table.dataTable.display tbody tr.odd>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.display tbody tr.odd>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.display tbody tr.odd>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:#f5f5f5}table.dataTable.display tbody tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b3cd}table.dataTable.display tbody tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a7b5ce}table.dataTable.display tbody tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b6d0}table.dataTable.display tbody tr.even>.sorting_1,table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#f9f9f9}table.dataTable.display tbody tr.even>.sorting_2,table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fbfbfb}table.dataTable.display tbody tr.even>.sorting_3,table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fdfdfd}table.dataTable.display tbody tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad4}table.dataTable.display tbody tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#adbbd6}table.dataTable.display tbody tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ebebeb}table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#eee}table.dataTable.display tbody tr:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.display tbody tr:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.display tbody tr:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.no-footer{border-bottom:1px solid #111}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th,table.dataTable.compact thead td{padding:4px 17px 4px 4px}table.dataTable.compact tfoot th,table.dataTable.compact tfoot td{padding:4px}table.dataTable.compact tbody th,table.dataTable.compact tbody td{padding:4px}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-center,table.dataTable td.dt-center,table.dataTable td.dataTables_empty{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable,table.dataTable th,table.dataTable td{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.dataTables_wrapper{position:relative;clear:both;*zoom:1;zoom:1}.dataTables_wrapper .dataTables_length{float:left}.dataTables_wrapper .dataTables_filter{float:right;text-align:right}.dataTables_wrapper .dataTables_filter input{margin-left:0.5em}.dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:0.755em}.dataTables_wrapper .dataTables_paginate{float:right;text-align:right;padding-top:0.25em}.dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:0.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;color:#333 !important;border:1px solid transparent}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{color:#333 !important;border:1px solid #cacaca;background-color:#fff;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(100%, #dcdcdc));background:-webkit-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-moz-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-ms-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-o-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:linear-gradient(to bottom, #fff 0%, #dcdcdc 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active{cursor:default;color:#666 !important;border:1px solid transparent;background:transparent;box-shadow:none}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{color:white !important;border:1px solid #111;background-color:#585858;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));background:-webkit-linear-gradient(top, #585858 0%, #111 100%);background:-moz-linear-gradient(top, #585858 0%, #111 100%);background:-ms-linear-gradient(top, #585858 0%, #111 100%);background:-o-linear-gradient(top, #585858 0%, #111 100%);background:linear-gradient(to bottom, #585858 0%, #111 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button:active{outline:none;background-color:#2b2b2b;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));background:-webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);box-shadow:inset 0 0 3px #111}.dataTables_wrapper .dataTables_paginate .ellipsis{padding:0 1em}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:white;background:-webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0)));background:-webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_processing,.dataTables_wrapper .dataTables_paginate{color:#333}.dataTables_wrapper .dataTables_scroll{clear:both}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{*margin-top:-1px;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td>div.dataTables_sizing{height:0;overflow:hidden;margin:0 !important;padding:0 !important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #111}.dataTables_wrapper.no-footer div.dataTables_scrollHead table,.dataTables_wrapper.no-footer div.dataTables_scrollBody table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width: 767px){.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.dataTables_wrapper .dataTables_paginate{margin-top:0.5em}}@media screen and (max-width: 640px){.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter{float:none;text-align:center}.dataTables_wrapper .dataTables_filter{margin-top:0.5em}} diff --git a/assets/plugins/datatables/jquery.dataTables.min.js b/assets/plugins/datatables/jquery.dataTables.min.js deleted file mode 100644 index 96ad285c..00000000 --- a/assets/plugins/datatables/jquery.dataTables.min.js +++ /dev/null @@ -1,160 +0,0 @@ -/*! DataTables 1.10.7 - * ©2008-2015 SpryMedia Ltd - datatables.net/license - */ -(function(Ea,Q,k){var P=function(h){function W(a){var b,c,e={};h.each(a,function(d){if((b=d.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(b[1]+" "))c=d.replace(b[0],b[2].toLowerCase()),e[c]=d,"o"===b[1]&&W(a[d])});a._hungarianMap=e}function H(a,b,c){a._hungarianMap||W(a);var e;h.each(b,function(d){e=a._hungarianMap[d];if(e!==k&&(c||b[e]===k))"o"===e.charAt(0)?(b[e]||(b[e]={}),h.extend(!0,b[e],b[d]),H(a[e],b[e],c)):b[e]=b[d]})}function P(a){var b=m.defaults.oLanguage,c=a.sZeroRecords; -!a.sEmptyTable&&(c&&"No data available in tables"===b.sEmptyTable)&&E(a,a,"sZeroRecords","sEmptyTable");!a.sLoadingRecords&&(c&&"Loading..."===b.sLoadingRecords)&&E(a,a,"sZeroRecords","sLoadingRecords");a.sInfoThousands&&(a.sThousands=a.sInfoThousands);(a=a.sDecimal)&&db(a)}function eb(a){A(a,"ordering","bSort");A(a,"orderMulti","bSortMulti");A(a,"orderClasses","bSortClasses");A(a,"orderCellsTop","bSortCellsTop");A(a,"order","aaSorting");A(a,"orderFixed","aaSortingFixed");A(a,"paging","bPaginate"); -A(a,"pagingType","sPaginationType");A(a,"pageLength","iDisplayLength");A(a,"searching","bFilter");if(a=a.aoSearchCols)for(var b=0,c=a.length;b<c;b++)a[b]&&H(m.models.oSearch,a[b])}function fb(a){A(a,"orderable","bSortable");A(a,"orderData","aDataSort");A(a,"orderSequence","asSorting");A(a,"orderDataType","sortDataType");var b=a.aDataSort;b&&!h.isArray(b)&&(a.aDataSort=[b])}function gb(a){var a=a.oBrowser,b=h("<div/>").css({position:"absolute",top:0,left:0,height:1,width:1,overflow:"hidden"}).append(h("<div/>").css({position:"absolute", -top:1,left:1,width:100,overflow:"scroll"}).append(h('<div class="test"/>').css({width:"100%",height:10}))).appendTo("body"),c=b.find(".test");a.bScrollOversize=100===c[0].offsetWidth;a.bScrollbarLeft=1!==Math.round(c.offset().left);b.remove()}function hb(a,b,c,e,d,f){var g,j=!1;c!==k&&(g=c,j=!0);for(;e!==d;)a.hasOwnProperty(e)&&(g=j?b(g,a[e],e,a):a[e],j=!0,e+=f);return g}function Fa(a,b){var c=m.defaults.column,e=a.aoColumns.length,c=h.extend({},m.models.oColumn,c,{nTh:b?b:Q.createElement("th"),sTitle:c.sTitle? -c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[e],mData:c.mData?c.mData:e,idx:e});a.aoColumns.push(c);c=a.aoPreSearchCols;c[e]=h.extend({},m.models.oSearch,c[e]);ka(a,e,h(b).data())}function ka(a,b,c){var b=a.aoColumns[b],e=a.oClasses,d=h(b.nTh);if(!b.sWidthOrig){b.sWidthOrig=d.attr("width")||null;var f=(d.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/);f&&(b.sWidthOrig=f[1])}c!==k&&null!==c&&(fb(c),H(m.defaults.column,c),c.mDataProp!==k&&!c.mData&&(c.mData=c.mDataProp),c.sType&& -(b._sManualType=c.sType),c.className&&!c.sClass&&(c.sClass=c.className),h.extend(b,c),E(b,c,"sWidth","sWidthOrig"),c.iDataSort!==k&&(b.aDataSort=[c.iDataSort]),E(b,c,"aDataSort"));var g=b.mData,j=R(g),i=b.mRender?R(b.mRender):null,c=function(a){return"string"===typeof a&&-1!==a.indexOf("@")};b._bAttrSrc=h.isPlainObject(g)&&(c(g.sort)||c(g.type)||c(g.filter));b.fnGetData=function(a,b,c){var e=j(a,b,k,c);return i&&b?i(e,b,a,c):e};b.fnSetData=function(a,b,c){return S(g)(a,b,c)};"number"!==typeof g&& -(a._rowReadObject=!0);a.oFeatures.bSort||(b.bSortable=!1,d.addClass(e.sSortableNone));a=-1!==h.inArray("asc",b.asSorting);c=-1!==h.inArray("desc",b.asSorting);!b.bSortable||!a&&!c?(b.sSortingClass=e.sSortableNone,b.sSortingClassJUI=""):a&&!c?(b.sSortingClass=e.sSortableAsc,b.sSortingClassJUI=e.sSortJUIAscAllowed):!a&&c?(b.sSortingClass=e.sSortableDesc,b.sSortingClassJUI=e.sSortJUIDescAllowed):(b.sSortingClass=e.sSortable,b.sSortingClassJUI=e.sSortJUI)}function X(a){if(!1!==a.oFeatures.bAutoWidth){var b= -a.aoColumns;Ga(a);for(var c=0,e=b.length;c<e;c++)b[c].nTh.style.width=b[c].sWidth}b=a.oScroll;(""!==b.sY||""!==b.sX)&&Y(a);w(a,null,"column-sizing",[a])}function la(a,b){var c=Z(a,"bVisible");return"number"===typeof c[b]?c[b]:null}function $(a,b){var c=Z(a,"bVisible"),c=h.inArray(b,c);return-1!==c?c:null}function aa(a){return Z(a,"bVisible").length}function Z(a,b){var c=[];h.map(a.aoColumns,function(a,d){a[b]&&c.push(d)});return c}function Ha(a){var b=a.aoColumns,c=a.aoData,e=m.ext.type.detect,d, -f,g,j,i,h,l,q,n;d=0;for(f=b.length;d<f;d++)if(l=b[d],n=[],!l.sType&&l._sManualType)l.sType=l._sManualType;else if(!l.sType){g=0;for(j=e.length;g<j;g++){i=0;for(h=c.length;i<h;i++){n[i]===k&&(n[i]=x(a,i,d,"type"));q=e[g](n[i],a);if(!q&&g!==e.length-1)break;if("html"===q)break}if(q){l.sType=q;break}}l.sType||(l.sType="string")}}function ib(a,b,c,e){var d,f,g,j,i,o,l=a.aoColumns;if(b)for(d=b.length-1;0<=d;d--){o=b[d];var q=o.targets!==k?o.targets:o.aTargets;h.isArray(q)||(q=[q]);f=0;for(g=q.length;f< -g;f++)if("number"===typeof q[f]&&0<=q[f]){for(;l.length<=q[f];)Fa(a);e(q[f],o)}else if("number"===typeof q[f]&&0>q[f])e(l.length+q[f],o);else if("string"===typeof q[f]){j=0;for(i=l.length;j<i;j++)("_all"==q[f]||h(l[j].nTh).hasClass(q[f]))&&e(j,o)}}if(c){d=0;for(a=c.length;d<a;d++)e(d,c[d])}}function K(a,b,c,e){var d=a.aoData.length,f=h.extend(!0,{},m.models.oRow,{src:c?"dom":"data"});f._aData=b;a.aoData.push(f);for(var b=a.aoColumns,f=0,g=b.length;f<g;f++)c&&Ia(a,d,f,x(a,d,f)),b[f].sType=null;a.aiDisplayMaster.push(d); -(c||!a.oFeatures.bDeferRender)&&Ja(a,d,c,e);return d}function ma(a,b){var c;b instanceof h||(b=h(b));return b.map(function(b,d){c=na(a,d);return K(a,c.data,d,c.cells)})}function x(a,b,c,e){var d=a.iDraw,f=a.aoColumns[c],g=a.aoData[b]._aData,j=f.sDefaultContent,c=f.fnGetData(g,e,{settings:a,row:b,col:c});if(c===k)return a.iDrawError!=d&&null===j&&(I(a,0,"Requested unknown parameter "+("function"==typeof f.mData?"{function}":"'"+f.mData+"'")+" for row "+b,4),a.iDrawError=d),j;if((c===g||null===c)&& -null!==j)c=j;else if("function"===typeof c)return c.call(g);return null===c&&"display"==e?"":c}function Ia(a,b,c,e){a.aoColumns[c].fnSetData(a.aoData[b]._aData,e,{settings:a,row:b,col:c})}function Ka(a){return h.map(a.match(/(\\.|[^\.])+/g),function(a){return a.replace(/\\./g,".")})}function R(a){if(h.isPlainObject(a)){var b={};h.each(a,function(a,c){c&&(b[a]=R(c))});return function(a,c,f,g){var j=b[c]||b._;return j!==k?j(a,c,f,g):a}}if(null===a)return function(a){return a};if("function"===typeof a)return function(b, -c,f,g){return a(b,c,f,g)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var c=function(a,b,f){var g,j;if(""!==f){j=Ka(f);for(var i=0,h=j.length;i<h;i++){f=j[i].match(ba);g=j[i].match(T);if(f){j[i]=j[i].replace(ba,"");""!==j[i]&&(a=a[j[i]]);g=[];j.splice(0,i+1);j=j.join(".");i=0;for(h=a.length;i<h;i++)g.push(c(a[i],b,j));a=f[0].substring(1,f[0].length-1);a=""===a?g:g.join(a);break}else if(g){j[i]=j[i].replace(T,"");a=a[j[i]]();continue}if(null===a||a[j[i]]=== -k)return k;a=a[j[i]]}}return a};return function(b,d){return c(b,d,a)}}return function(b){return b[a]}}function S(a){if(h.isPlainObject(a))return S(a._);if(null===a)return function(){};if("function"===typeof a)return function(b,e,d){a(b,"set",e,d)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var b=function(a,e,d){var d=Ka(d),f;f=d[d.length-1];for(var g,j,i=0,h=d.length-1;i<h;i++){g=d[i].match(ba);j=d[i].match(T);if(g){d[i]=d[i].replace(ba,"");a[d[i]]=[]; -f=d.slice();f.splice(0,i+1);g=f.join(".");j=0;for(h=e.length;j<h;j++)f={},b(f,e[j],g),a[d[i]].push(f);return}j&&(d[i]=d[i].replace(T,""),a=a[d[i]](e));if(null===a[d[i]]||a[d[i]]===k)a[d[i]]={};a=a[d[i]]}if(f.match(T))a[f.replace(T,"")](e);else a[f.replace(ba,"")]=e};return function(c,e){return b(c,e,a)}}return function(b,e){b[a]=e}}function La(a){return D(a.aoData,"_aData")}function oa(a){a.aoData.length=0;a.aiDisplayMaster.length=0;a.aiDisplay.length=0}function pa(a,b,c){for(var e=-1,d=0,f=a.length;d< -f;d++)a[d]==b?e=d:a[d]>b&&a[d]--; -1!=e&&c===k&&a.splice(e,1)}function ca(a,b,c,e){var d=a.aoData[b],f,g=function(c,f){for(;c.childNodes.length;)c.removeChild(c.firstChild);c.innerHTML=x(a,b,f,"display")};if("dom"===c||(!c||"auto"===c)&&"dom"===d.src)d._aData=na(a,d,e,e===k?k:d._aData).data;else{var j=d.anCells;if(j)if(e!==k)g(j[e],e);else{c=0;for(f=j.length;c<f;c++)g(j[c],c)}}d._aSortData=null;d._aFilterData=null;g=a.aoColumns;if(e!==k)g[e].sType=null;else{c=0;for(f=g.length;c<f;c++)g[c].sType=null; -Ma(d)}}function na(a,b,c,e){var d=[],f=b.firstChild,g,j=0,i,o=a.aoColumns,l=a._rowReadObject,e=e||l?{}:[],q=function(a,b){if("string"===typeof a){var c=a.indexOf("@");-1!==c&&(c=a.substring(c+1),S(a)(e,b.getAttribute(c)))}},a=function(a){if(c===k||c===j)g=o[j],i=h.trim(a.innerHTML),g&&g._bAttrSrc?(S(g.mData._)(e,i),q(g.mData.sort,a),q(g.mData.type,a),q(g.mData.filter,a)):l?(g._setter||(g._setter=S(g.mData)),g._setter(e,i)):e[j]=i;j++};if(f)for(;f;){b=f.nodeName.toUpperCase();if("TD"==b||"TH"==b)a(f), -d.push(f);f=f.nextSibling}else{d=b.anCells;f=0;for(b=d.length;f<b;f++)a(d[f])}return{data:e,cells:d}}function Ja(a,b,c,e){var d=a.aoData[b],f=d._aData,g=[],j,i,h,l,q;if(null===d.nTr){j=c||Q.createElement("tr");d.nTr=j;d.anCells=g;j._DT_RowIndex=b;Ma(d);l=0;for(q=a.aoColumns.length;l<q;l++){h=a.aoColumns[l];i=c?e[l]:Q.createElement(h.sCellType);g.push(i);if(!c||h.mRender||h.mData!==l)i.innerHTML=x(a,b,l,"display");h.sClass&&(i.className+=" "+h.sClass);h.bVisible&&!c?j.appendChild(i):!h.bVisible&&c&& -i.parentNode.removeChild(i);h.fnCreatedCell&&h.fnCreatedCell.call(a.oInstance,i,x(a,b,l),f,b,l)}w(a,"aoRowCreatedCallback",null,[j,f,b])}d.nTr.setAttribute("role","row")}function Ma(a){var b=a.nTr,c=a._aData;if(b){c.DT_RowId&&(b.id=c.DT_RowId);if(c.DT_RowClass){var e=c.DT_RowClass.split(" ");a.__rowc=a.__rowc?Na(a.__rowc.concat(e)):e;h(b).removeClass(a.__rowc.join(" ")).addClass(c.DT_RowClass)}c.DT_RowAttr&&h(b).attr(c.DT_RowAttr);c.DT_RowData&&h(b).data(c.DT_RowData)}}function jb(a){var b,c,e,d, -f,g=a.nTHead,j=a.nTFoot,i=0===h("th, td",g).length,o=a.oClasses,l=a.aoColumns;i&&(d=h("<tr/>").appendTo(g));b=0;for(c=l.length;b<c;b++)f=l[b],e=h(f.nTh).addClass(f.sClass),i&&e.appendTo(d),a.oFeatures.bSort&&(e.addClass(f.sSortingClass),!1!==f.bSortable&&(e.attr("tabindex",a.iTabIndex).attr("aria-controls",a.sTableId),Oa(a,f.nTh,b))),f.sTitle!=e.html()&&e.html(f.sTitle),Pa(a,"header")(a,e,f,o);i&&da(a.aoHeader,g);h(g).find(">tr").attr("role","row");h(g).find(">tr>th, >tr>td").addClass(o.sHeaderTH); -h(j).find(">tr>th, >tr>td").addClass(o.sFooterTH);if(null!==j){a=a.aoFooter[0];b=0;for(c=a.length;b<c;b++)f=l[b],f.nTf=a[b].cell,f.sClass&&h(f.nTf).addClass(f.sClass)}}function ea(a,b,c){var e,d,f,g=[],j=[],i=a.aoColumns.length,o;if(b){c===k&&(c=!1);e=0;for(d=b.length;e<d;e++){g[e]=b[e].slice();g[e].nTr=b[e].nTr;for(f=i-1;0<=f;f--)!a.aoColumns[f].bVisible&&!c&&g[e].splice(f,1);j.push([])}e=0;for(d=g.length;e<d;e++){if(a=g[e].nTr)for(;f=a.firstChild;)a.removeChild(f);f=0;for(b=g[e].length;f<b;f++)if(o= -i=1,j[e][f]===k){a.appendChild(g[e][f].cell);for(j[e][f]=1;g[e+i]!==k&&g[e][f].cell==g[e+i][f].cell;)j[e+i][f]=1,i++;for(;g[e][f+o]!==k&&g[e][f].cell==g[e][f+o].cell;){for(c=0;c<i;c++)j[e+c][f+o]=1;o++}h(g[e][f].cell).attr("rowspan",i).attr("colspan",o)}}}}function M(a){var b=w(a,"aoPreDrawCallback","preDraw",[a]);if(-1!==h.inArray(!1,b))C(a,!1);else{var b=[],c=0,e=a.asStripeClasses,d=e.length,f=a.oLanguage,g=a.iInitDisplayStart,j="ssp"==B(a),i=a.aiDisplay;a.bDrawing=!0;g!==k&&-1!==g&&(a._iDisplayStart= -j?g:g>=a.fnRecordsDisplay()?0:g,a.iInitDisplayStart=-1);var g=a._iDisplayStart,o=a.fnDisplayEnd();if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,C(a,!1);else if(j){if(!a.bDestroying&&!kb(a))return}else a.iDraw++;if(0!==i.length){f=j?a.aoData.length:o;for(j=j?0:g;j<f;j++){var l=i[j],q=a.aoData[l];null===q.nTr&&Ja(a,l);l=q.nTr;if(0!==d){var n=e[c%d];q._sRowStripe!=n&&(h(l).removeClass(q._sRowStripe).addClass(n),q._sRowStripe=n)}w(a,"aoRowCallback",null,[l,q._aData,c,j]);b.push(l);c++}}else c=f.sZeroRecords, -1==a.iDraw&&"ajax"==B(a)?c=f.sLoadingRecords:f.sEmptyTable&&0===a.fnRecordsTotal()&&(c=f.sEmptyTable),b[0]=h("<tr/>",{"class":d?e[0]:""}).append(h("<td />",{valign:"top",colSpan:aa(a),"class":a.oClasses.sRowEmpty}).html(c))[0];w(a,"aoHeaderCallback","header",[h(a.nTHead).children("tr")[0],La(a),g,o,i]);w(a,"aoFooterCallback","footer",[h(a.nTFoot).children("tr")[0],La(a),g,o,i]);e=h(a.nTBody);e.children().detach();e.append(h(b));w(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing= -!1}}function N(a,b){var c=a.oFeatures,e=c.bFilter;c.bSort&&lb(a);e?fa(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);a._drawHold=b;M(a);a._drawHold=!1}function mb(a){var b=a.oClasses,c=h(a.nTable),c=h("<div/>").insertBefore(c),e=a.oFeatures,d=h("<div/>",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=d[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var f=a.sDom.split(""),g,j,i,o,l,q,n=0;n<f.length;n++){g= -null;j=f[n];if("<"==j){i=h("<div/>")[0];o=f[n+1];if("'"==o||'"'==o){l="";for(q=2;f[n+q]!=o;)l+=f[n+q],q++;"H"==l?l=b.sJUIHeader:"F"==l&&(l=b.sJUIFooter);-1!=l.indexOf(".")?(o=l.split("."),i.id=o[0].substr(1,o[0].length-1),i.className=o[1]):"#"==l.charAt(0)?i.id=l.substr(1,l.length-1):i.className=l;n+=q}d.append(i);d=h(i)}else if(">"==j)d=d.parent();else if("l"==j&&e.bPaginate&&e.bLengthChange)g=nb(a);else if("f"==j&&e.bFilter)g=ob(a);else if("r"==j&&e.bProcessing)g=pb(a);else if("t"==j)g=qb(a);else if("i"== -j&&e.bInfo)g=rb(a);else if("p"==j&&e.bPaginate)g=sb(a);else if(0!==m.ext.feature.length){i=m.ext.feature;q=0;for(o=i.length;q<o;q++)if(j==i[q].cFeature){g=i[q].fnInit(a);break}}g&&(i=a.aanFeatures,i[j]||(i[j]=[]),i[j].push(g),d.append(g))}c.replaceWith(d)}function da(a,b){var c=h(b).children("tr"),e,d,f,g,j,i,o,l,q,n;a.splice(0,a.length);f=0;for(i=c.length;f<i;f++)a.push([]);f=0;for(i=c.length;f<i;f++){e=c[f];for(d=e.firstChild;d;){if("TD"==d.nodeName.toUpperCase()||"TH"==d.nodeName.toUpperCase()){l= -1*d.getAttribute("colspan");q=1*d.getAttribute("rowspan");l=!l||0===l||1===l?1:l;q=!q||0===q||1===q?1:q;g=0;for(j=a[f];j[g];)g++;o=g;n=1===l?!0:!1;for(j=0;j<l;j++)for(g=0;g<q;g++)a[f+g][o+j]={cell:d,unique:n},a[f+g].nTr=e}d=d.nextSibling}}}function qa(a,b,c){var e=[];c||(c=a.aoHeader,b&&(c=[],da(c,b)));for(var b=0,d=c.length;b<d;b++)for(var f=0,g=c[b].length;f<g;f++)if(c[b][f].unique&&(!e[f]||!a.bSortCellsTop))e[f]=c[b][f].cell;return e}function ra(a,b,c){w(a,"aoServerParams","serverParams",[b]); -if(b&&h.isArray(b)){var e={},d=/(.*?)\[\]$/;h.each(b,function(a,b){var c=b.name.match(d);c?(c=c[0],e[c]||(e[c]=[]),e[c].push(b.value)):e[b.name]=b.value});b=e}var f,g=a.ajax,j=a.oInstance,i=function(b){w(a,null,"xhr",[a,b,a.jqXHR]);c(b)};if(h.isPlainObject(g)&&g.data){f=g.data;var o=h.isFunction(f)?f(b,a):f,b=h.isFunction(f)&&o?o:h.extend(!0,b,o);delete g.data}o={data:b,success:function(b){var c=b.error||b.sError;c&&I(a,0,c);a.json=b;i(b)},dataType:"json",cache:!1,type:a.sServerMethod,error:function(b, -c){var f=w(a,null,"xhr",[a,null,a.jqXHR]);-1===h.inArray(!0,f)&&("parsererror"==c?I(a,0,"Invalid JSON response",1):4===b.readyState&&I(a,0,"Ajax error",7));C(a,!1)}};a.oAjaxData=b;w(a,null,"preXhr",[a,b]);a.fnServerData?a.fnServerData.call(j,a.sAjaxSource,h.map(b,function(a,b){return{name:b,value:a}}),i,a):a.sAjaxSource||"string"===typeof g?a.jqXHR=h.ajax(h.extend(o,{url:g||a.sAjaxSource})):h.isFunction(g)?a.jqXHR=g.call(j,b,i,a):(a.jqXHR=h.ajax(h.extend(o,g)),g.data=f)}function kb(a){return a.bAjaxDataGet? -(a.iDraw++,C(a,!0),ra(a,tb(a),function(b){ub(a,b)}),!1):!0}function tb(a){var b=a.aoColumns,c=b.length,e=a.oFeatures,d=a.oPreviousSearch,f=a.aoPreSearchCols,g,j=[],i,o,l,q=U(a);g=a._iDisplayStart;i=!1!==e.bPaginate?a._iDisplayLength:-1;var n=function(a,b){j.push({name:a,value:b})};n("sEcho",a.iDraw);n("iColumns",c);n("sColumns",D(b,"sName").join(","));n("iDisplayStart",g);n("iDisplayLength",i);var k={draw:a.iDraw,columns:[],order:[],start:g,length:i,search:{value:d.sSearch,regex:d.bRegex}};for(g= -0;g<c;g++)o=b[g],l=f[g],i="function"==typeof o.mData?"function":o.mData,k.columns.push({data:i,name:o.sName,searchable:o.bSearchable,orderable:o.bSortable,search:{value:l.sSearch,regex:l.bRegex}}),n("mDataProp_"+g,i),e.bFilter&&(n("sSearch_"+g,l.sSearch),n("bRegex_"+g,l.bRegex),n("bSearchable_"+g,o.bSearchable)),e.bSort&&n("bSortable_"+g,o.bSortable);e.bFilter&&(n("sSearch",d.sSearch),n("bRegex",d.bRegex));e.bSort&&(h.each(q,function(a,b){k.order.push({column:b.col,dir:b.dir});n("iSortCol_"+a,b.col); -n("sSortDir_"+a,b.dir)}),n("iSortingCols",q.length));b=m.ext.legacy.ajax;return null===b?a.sAjaxSource?j:k:b?j:k}function ub(a,b){var c=sa(a,b),e=b.sEcho!==k?b.sEcho:b.draw,d=b.iTotalRecords!==k?b.iTotalRecords:b.recordsTotal,f=b.iTotalDisplayRecords!==k?b.iTotalDisplayRecords:b.recordsFiltered;if(e){if(1*e<a.iDraw)return;a.iDraw=1*e}oa(a);a._iRecordsTotal=parseInt(d,10);a._iRecordsDisplay=parseInt(f,10);e=0;for(d=c.length;e<d;e++)K(a,c[e]);a.aiDisplay=a.aiDisplayMaster.slice();a.bAjaxDataGet=!1; -M(a);a._bInitComplete||ta(a,b);a.bAjaxDataGet=!0;C(a,!1)}function sa(a,b){var c=h.isPlainObject(a.ajax)&&a.ajax.dataSrc!==k?a.ajax.dataSrc:a.sAjaxDataProp;return"data"===c?b.aaData||b[c]:""!==c?R(c)(b):b}function ob(a){var b=a.oClasses,c=a.sTableId,e=a.oLanguage,d=a.oPreviousSearch,f=a.aanFeatures,g='<input type="search" class="'+b.sFilterInput+'"/>',j=e.sSearch,j=j.match(/_INPUT_/)?j.replace("_INPUT_",g):j+g,b=h("<div/>",{id:!f.f?c+"_filter":null,"class":b.sFilter}).append(h("<label/>").append(j)), -f=function(){var b=!this.value?"":this.value;b!=d.sSearch&&(fa(a,{sSearch:b,bRegex:d.bRegex,bSmart:d.bSmart,bCaseInsensitive:d.bCaseInsensitive}),a._iDisplayStart=0,M(a))},g=null!==a.searchDelay?a.searchDelay:"ssp"===B(a)?400:0,i=h("input",b).val(d.sSearch).attr("placeholder",e.sSearchPlaceholder).bind("keyup.DT search.DT input.DT paste.DT cut.DT",g?ua(f,g):f).bind("keypress.DT",function(a){if(13==a.keyCode)return!1}).attr("aria-controls",c);h(a.nTable).on("search.dt.DT",function(b,c){if(a===c)try{i[0]!== -Q.activeElement&&i.val(d.sSearch)}catch(f){}});return b[0]}function fa(a,b,c){var e=a.oPreviousSearch,d=a.aoPreSearchCols,f=function(a){e.sSearch=a.sSearch;e.bRegex=a.bRegex;e.bSmart=a.bSmart;e.bCaseInsensitive=a.bCaseInsensitive};Ha(a);if("ssp"!=B(a)){vb(a,b.sSearch,c,b.bEscapeRegex!==k?!b.bEscapeRegex:b.bRegex,b.bSmart,b.bCaseInsensitive);f(b);for(b=0;b<d.length;b++)wb(a,d[b].sSearch,b,d[b].bEscapeRegex!==k?!d[b].bEscapeRegex:d[b].bRegex,d[b].bSmart,d[b].bCaseInsensitive);xb(a)}else f(b);a.bFiltered= -!0;w(a,null,"search",[a])}function xb(a){for(var b=m.ext.search,c=a.aiDisplay,e,d,f=0,g=b.length;f<g;f++){for(var j=[],i=0,h=c.length;i<h;i++)d=c[i],e=a.aoData[d],b[f](a,e._aFilterData,d,e._aData,i)&&j.push(d);c.length=0;c.push.apply(c,j)}}function wb(a,b,c,e,d,f){if(""!==b)for(var g=a.aiDisplay,e=Qa(b,e,d,f),d=g.length-1;0<=d;d--)b=a.aoData[g[d]]._aFilterData[c],e.test(b)||g.splice(d,1)}function vb(a,b,c,e,d,f){var e=Qa(b,e,d,f),d=a.oPreviousSearch.sSearch,f=a.aiDisplayMaster,g;0!==m.ext.search.length&& -(c=!0);g=yb(a);if(0>=b.length)a.aiDisplay=f.slice();else{if(g||c||d.length>b.length||0!==b.indexOf(d)||a.bSorted)a.aiDisplay=f.slice();b=a.aiDisplay;for(c=b.length-1;0<=c;c--)e.test(a.aoData[b[c]]._sFilterRow)||b.splice(c,1)}}function Qa(a,b,c,e){a=b?a:va(a);c&&(a="^(?=.*?"+h.map(a.match(/"[^"]+"|[^ ]+/g)||[""],function(a){if('"'===a.charAt(0))var b=a.match(/^"(.*)"$/),a=b?b[1]:a;return a.replace('"',"")}).join(")(?=.*?")+").*$");return RegExp(a,e?"i":"")}function va(a){return a.replace(Yb,"\\$1")} -function yb(a){var b=a.aoColumns,c,e,d,f,g,j,i,h,l=m.ext.type.search;c=!1;e=0;for(f=a.aoData.length;e<f;e++)if(h=a.aoData[e],!h._aFilterData){j=[];d=0;for(g=b.length;d<g;d++)c=b[d],c.bSearchable?(i=x(a,e,d,"filter"),l[c.sType]&&(i=l[c.sType](i)),null===i&&(i=""),"string"!==typeof i&&i.toString&&(i=i.toString())):i="",i.indexOf&&-1!==i.indexOf("&")&&(wa.innerHTML=i,i=Zb?wa.textContent:wa.innerText),i.replace&&(i=i.replace(/[\r\n]/g,"")),j.push(i);h._aFilterData=j;h._sFilterRow=j.join(" ");c=!0}return c} -function zb(a){return{search:a.sSearch,smart:a.bSmart,regex:a.bRegex,caseInsensitive:a.bCaseInsensitive}}function Ab(a){return{sSearch:a.search,bSmart:a.smart,bRegex:a.regex,bCaseInsensitive:a.caseInsensitive}}function rb(a){var b=a.sTableId,c=a.aanFeatures.i,e=h("<div/>",{"class":a.oClasses.sInfo,id:!c?b+"_info":null});c||(a.aoDrawCallback.push({fn:Bb,sName:"information"}),e.attr("role","status").attr("aria-live","polite"),h(a.nTable).attr("aria-describedby",b+"_info"));return e[0]}function Bb(a){var b= -a.aanFeatures.i;if(0!==b.length){var c=a.oLanguage,e=a._iDisplayStart+1,d=a.fnDisplayEnd(),f=a.fnRecordsTotal(),g=a.fnRecordsDisplay(),j=g?c.sInfo:c.sInfoEmpty;g!==f&&(j+=" "+c.sInfoFiltered);j+=c.sInfoPostFix;j=Cb(a,j);c=c.fnInfoCallback;null!==c&&(j=c.call(a.oInstance,a,e,d,f,g,j));h(b).html(j)}}function Cb(a,b){var c=a.fnFormatNumber,e=a._iDisplayStart+1,d=a._iDisplayLength,f=a.fnRecordsDisplay(),g=-1===d;return b.replace(/_START_/g,c.call(a,e)).replace(/_END_/g,c.call(a,a.fnDisplayEnd())).replace(/_MAX_/g, -c.call(a,a.fnRecordsTotal())).replace(/_TOTAL_/g,c.call(a,f)).replace(/_PAGE_/g,c.call(a,g?1:Math.ceil(e/d))).replace(/_PAGES_/g,c.call(a,g?1:Math.ceil(f/d)))}function ga(a){var b,c,e=a.iInitDisplayStart,d=a.aoColumns,f;c=a.oFeatures;if(a.bInitialised){mb(a);jb(a);ea(a,a.aoHeader);ea(a,a.aoFooter);C(a,!0);c.bAutoWidth&&Ga(a);b=0;for(c=d.length;b<c;b++)f=d[b],f.sWidth&&(f.nTh.style.width=s(f.sWidth));N(a);d=B(a);"ssp"!=d&&("ajax"==d?ra(a,[],function(c){var f=sa(a,c);for(b=0;b<f.length;b++)K(a,f[b]); -a.iInitDisplayStart=e;N(a);C(a,!1);ta(a,c)},a):(C(a,!1),ta(a)))}else setTimeout(function(){ga(a)},200)}function ta(a,b){a._bInitComplete=!0;b&&X(a);w(a,"aoInitComplete","init",[a,b])}function Ra(a,b){var c=parseInt(b,10);a._iDisplayLength=c;Sa(a);w(a,null,"length",[a,c])}function nb(a){for(var b=a.oClasses,c=a.sTableId,e=a.aLengthMenu,d=h.isArray(e[0]),f=d?e[0]:e,e=d?e[1]:e,d=h("<select/>",{name:c+"_length","aria-controls":c,"class":b.sLengthSelect}),g=0,j=f.length;g<j;g++)d[0][g]=new Option(e[g], -f[g]);var i=h("<div><label/></div>").addClass(b.sLength);a.aanFeatures.l||(i[0].id=c+"_length");i.children().append(a.oLanguage.sLengthMenu.replace("_MENU_",d[0].outerHTML));h("select",i).val(a._iDisplayLength).bind("change.DT",function(){Ra(a,h(this).val());M(a)});h(a.nTable).bind("length.dt.DT",function(b,c,f){a===c&&h("select",i).val(f)});return i[0]}function sb(a){var b=a.sPaginationType,c=m.ext.pager[b],e="function"===typeof c,d=function(a){M(a)},b=h("<div/>").addClass(a.oClasses.sPaging+b)[0], -f=a.aanFeatures;e||c.fnInit(a,b,d);f.p||(b.id=a.sTableId+"_paginate",a.aoDrawCallback.push({fn:function(a){if(e){var b=a._iDisplayStart,i=a._iDisplayLength,h=a.fnRecordsDisplay(),l=-1===i,b=l?0:Math.ceil(b/i),i=l?1:Math.ceil(h/i),h=c(b,i),q,l=0;for(q=f.p.length;l<q;l++)Pa(a,"pageButton")(a,f.p[l],l,h,b,i)}else c.fnUpdate(a,d)},sName:"pagination"}));return b}function Ta(a,b,c){var e=a._iDisplayStart,d=a._iDisplayLength,f=a.fnRecordsDisplay();0===f||-1===d?e=0:"number"===typeof b?(e=b*d,e>f&&(e=0)): -"first"==b?e=0:"previous"==b?(e=0<=d?e-d:0,0>e&&(e=0)):"next"==b?e+d<f&&(e+=d):"last"==b?e=Math.floor((f-1)/d)*d:I(a,0,"Unknown paging action: "+b,5);b=a._iDisplayStart!==e;a._iDisplayStart=e;b&&(w(a,null,"page",[a]),c&&M(a));return b}function pb(a){return h("<div/>",{id:!a.aanFeatures.r?a.sTableId+"_processing":null,"class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]}function C(a,b){a.oFeatures.bProcessing&&h(a.aanFeatures.r).css("display",b?"block":"none");w(a, -null,"processing",[a,b])}function qb(a){var b=h(a.nTable);b.attr("role","grid");var c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var e=c.sX,d=c.sY,f=a.oClasses,g=b.children("caption"),j=g.length?g[0]._captionSide:null,i=h(b[0].cloneNode(!1)),o=h(b[0].cloneNode(!1)),l=b.children("tfoot");c.sX&&"100%"===b.attr("width")&&b.removeAttr("width");l.length||(l=null);c=h("<div/>",{"class":f.sScrollWrapper}).append(h("<div/>",{"class":f.sScrollHead}).css({overflow:"hidden",position:"relative",border:0, -width:e?!e?null:s(e):"100%"}).append(h("<div/>",{"class":f.sScrollHeadInner}).css({"box-sizing":"content-box",width:c.sXInner||"100%"}).append(i.removeAttr("id").css("margin-left",0).append("top"===j?g:null).append(b.children("thead"))))).append(h("<div/>",{"class":f.sScrollBody}).css({overflow:"auto",height:!d?null:s(d),width:!e?null:s(e)}).append(b));l&&c.append(h("<div/>",{"class":f.sScrollFoot}).css({overflow:"hidden",border:0,width:e?!e?null:s(e):"100%"}).append(h("<div/>",{"class":f.sScrollFootInner}).append(o.removeAttr("id").css("margin-left", -0).append("bottom"===j?g:null).append(b.children("tfoot")))));var b=c.children(),q=b[0],f=b[1],n=l?b[2]:null;if(e)h(f).on("scroll.DT",function(){var a=this.scrollLeft;q.scrollLeft=a;l&&(n.scrollLeft=a)});a.nScrollHead=q;a.nScrollBody=f;a.nScrollFoot=n;a.aoDrawCallback.push({fn:Y,sName:"scrolling"});return c[0]}function Y(a){var b=a.oScroll,c=b.sX,e=b.sXInner,d=b.sY,f=b.iBarWidth,g=h(a.nScrollHead),j=g[0].style,i=g.children("div"),o=i[0].style,l=i.children("table"),i=a.nScrollBody,q=h(i),n=i.style, -k=h(a.nScrollFoot).children("div"),p=k.children("table"),m=h(a.nTHead),r=h(a.nTable),t=r[0],O=t.style,L=a.nTFoot?h(a.nTFoot):null,ha=a.oBrowser,w=ha.bScrollOversize,v,u,y,x,z,A=[],B=[],C=[],D,E=function(a){a=a.style;a.paddingTop="0";a.paddingBottom="0";a.borderTopWidth="0";a.borderBottomWidth="0";a.height=0};r.children("thead, tfoot").remove();z=m.clone().prependTo(r);v=m.find("tr");y=z.find("tr");z.find("th, td").removeAttr("tabindex");L&&(x=L.clone().prependTo(r),u=L.find("tr"),x=x.find("tr")); -c||(n.width="100%",g[0].style.width="100%");h.each(qa(a,z),function(b,c){D=la(a,b);c.style.width=a.aoColumns[D].sWidth});L&&G(function(a){a.style.width=""},x);b.bCollapse&&""!==d&&(n.height=q[0].offsetHeight+m[0].offsetHeight+"px");g=r.outerWidth();if(""===c){if(O.width="100%",w&&(r.find("tbody").height()>i.offsetHeight||"scroll"==q.css("overflow-y")))O.width=s(r.outerWidth()-f)}else""!==e?O.width=s(e):g==q.width()&&q.height()<r.height()?(O.width=s(g-f),r.outerWidth()>g-f&&(O.width=s(g))):O.width= -s(g);g=r.outerWidth();G(E,y);G(function(a){C.push(a.innerHTML);A.push(s(h(a).css("width")))},y);G(function(a,b){a.style.width=A[b]},v);h(y).height(0);L&&(G(E,x),G(function(a){B.push(s(h(a).css("width")))},x),G(function(a,b){a.style.width=B[b]},u),h(x).height(0));G(function(a,b){a.innerHTML='<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+C[b]+"</div>";a.style.width=A[b]},y);L&&G(function(a,b){a.innerHTML="";a.style.width=B[b]},x);if(r.outerWidth()<g){u=i.scrollHeight>i.offsetHeight|| -"scroll"==q.css("overflow-y")?g+f:g;if(w&&(i.scrollHeight>i.offsetHeight||"scroll"==q.css("overflow-y")))O.width=s(u-f);(""===c||""!==e)&&I(a,1,"Possible column misalignment",6)}else u="100%";n.width=s(u);j.width=s(u);L&&(a.nScrollFoot.style.width=s(u));!d&&w&&(n.height=s(t.offsetHeight+f));d&&b.bCollapse&&(n.height=s(d),b=c&&t.offsetWidth>i.offsetWidth?f:0,t.offsetHeight<i.offsetHeight&&(n.height=s(t.offsetHeight+b)));b=r.outerWidth();l[0].style.width=s(b);o.width=s(b);l=r.height()>i.clientHeight|| -"scroll"==q.css("overflow-y");ha="padding"+(ha.bScrollbarLeft?"Left":"Right");o[ha]=l?f+"px":"0px";L&&(p[0].style.width=s(b),k[0].style.width=s(b),k[0].style[ha]=l?f+"px":"0px");q.scroll();if((a.bSorted||a.bFiltered)&&!a._drawHold)i.scrollTop=0}function G(a,b,c){for(var e=0,d=0,f=b.length,g,j;d<f;){g=b[d].firstChild;for(j=c?c[d].firstChild:null;g;)1===g.nodeType&&(c?a(g,j,e):a(g,e),e++),g=g.nextSibling,j=c?j.nextSibling:null;d++}}function Ga(a){var b=a.nTable,c=a.aoColumns,e=a.oScroll,d=e.sY,f=e.sX, -g=e.sXInner,j=c.length,e=Z(a,"bVisible"),i=h("th",a.nTHead),o=b.getAttribute("width"),l=b.parentNode,k=!1,n,m;(n=b.style.width)&&-1!==n.indexOf("%")&&(o=n);for(n=0;n<e.length;n++)m=c[e[n]],null!==m.sWidth&&(m.sWidth=Db(m.sWidthOrig,l),k=!0);if(!k&&!f&&!d&&j==aa(a)&&j==i.length)for(n=0;n<j;n++)c[n].sWidth=s(i.eq(n).width());else{j=h(b).clone().css("visibility","hidden").removeAttr("id");j.find("tbody tr").remove();var p=h("<tr/>").appendTo(j.find("tbody"));j.find("tfoot th, tfoot td").css("width", -"");i=qa(a,j.find("thead")[0]);for(n=0;n<e.length;n++)m=c[e[n]],i[n].style.width=null!==m.sWidthOrig&&""!==m.sWidthOrig?s(m.sWidthOrig):"";if(a.aoData.length)for(n=0;n<e.length;n++)k=e[n],m=c[k],h(Eb(a,k)).clone(!1).append(m.sContentPadding).appendTo(p);j.appendTo(l);f&&g?j.width(g):f?(j.css("width","auto"),j.width()<l.offsetWidth&&j.width(l.offsetWidth)):d?j.width(l.offsetWidth):o&&j.width(o);Fb(a,j[0]);if(f){for(n=g=0;n<e.length;n++)m=c[e[n]],d=h(i[n]).outerWidth(),g+=null===m.sWidthOrig?d:parseInt(m.sWidth, -10)+d-h(i[n]).width();j.width(s(g));b.style.width=s(g)}for(n=0;n<e.length;n++)if(m=c[e[n]],d=h(i[n]).width())m.sWidth=s(d);b.style.width=s(j.css("width"));j.remove()}o&&(b.style.width=s(o));if((o||f)&&!a._reszEvt)b=function(){h(Ea).bind("resize.DT-"+a.sInstance,ua(function(){X(a)}))},a.oBrowser.bScrollOversize?setTimeout(b,1E3):b(),a._reszEvt=!0}function ua(a,b){var c=b!==k?b:200,e,d;return function(){var b=this,g=+new Date,j=arguments;e&&g<e+c?(clearTimeout(d),d=setTimeout(function(){e=k;a.apply(b, -j)},c)):(e=g,a.apply(b,j))}}function Db(a,b){if(!a)return 0;var c=h("<div/>").css("width",s(a)).appendTo(b||Q.body),e=c[0].offsetWidth;c.remove();return e}function Fb(a,b){var c=a.oScroll;if(c.sX||c.sY)c=!c.sX?c.iBarWidth:0,b.style.width=s(h(b).outerWidth()-c)}function Eb(a,b){var c=Gb(a,b);if(0>c)return null;var e=a.aoData[c];return!e.nTr?h("<td/>").html(x(a,c,b,"display"))[0]:e.anCells[b]}function Gb(a,b){for(var c,e=-1,d=-1,f=0,g=a.aoData.length;f<g;f++)c=x(a,f,b,"display")+"",c=c.replace($b,""), -c.length>e&&(e=c.length,d=f);return d}function s(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function Hb(){var a=m.__scrollbarWidth;if(a===k){var b=h("<p/>").css({position:"absolute",top:0,left:0,width:"100%",height:150,padding:0,overflow:"scroll",visibility:"hidden"}).appendTo("body"),a=b[0].offsetWidth-b[0].clientWidth;m.__scrollbarWidth=a;b.remove()}return a}function U(a){var b,c,e=[],d=a.aoColumns,f,g,j,i;b=a.aaSortingFixed;c=h.isPlainObject(b);var o=[]; -f=function(a){a.length&&!h.isArray(a[0])?o.push(a):o.push.apply(o,a)};h.isArray(b)&&f(b);c&&b.pre&&f(b.pre);f(a.aaSorting);c&&b.post&&f(b.post);for(a=0;a<o.length;a++){i=o[a][0];f=d[i].aDataSort;b=0;for(c=f.length;b<c;b++)g=f[b],j=d[g].sType||"string",o[a]._idx===k&&(o[a]._idx=h.inArray(o[a][1],d[g].asSorting)),e.push({src:i,col:g,dir:o[a][1],index:o[a]._idx,type:j,formatter:m.ext.type.order[j+"-pre"]})}return e}function lb(a){var b,c,e=[],d=m.ext.type.order,f=a.aoData,g=0,j,i=a.aiDisplayMaster,h; -Ha(a);h=U(a);b=0;for(c=h.length;b<c;b++)j=h[b],j.formatter&&g++,Ib(a,j.col);if("ssp"!=B(a)&&0!==h.length){b=0;for(c=i.length;b<c;b++)e[i[b]]=b;g===h.length?i.sort(function(a,b){var c,d,g,j,i=h.length,k=f[a]._aSortData,m=f[b]._aSortData;for(g=0;g<i;g++)if(j=h[g],c=k[j.col],d=m[j.col],c=c<d?-1:c>d?1:0,0!==c)return"asc"===j.dir?c:-c;c=e[a];d=e[b];return c<d?-1:c>d?1:0}):i.sort(function(a,b){var c,g,j,i,k=h.length,m=f[a]._aSortData,r=f[b]._aSortData;for(j=0;j<k;j++)if(i=h[j],c=m[i.col],g=r[i.col],i=d[i.type+ -"-"+i.dir]||d["string-"+i.dir],c=i(c,g),0!==c)return c;c=e[a];g=e[b];return c<g?-1:c>g?1:0})}a.bSorted=!0}function Jb(a){for(var b,c,e=a.aoColumns,d=U(a),a=a.oLanguage.oAria,f=0,g=e.length;f<g;f++){c=e[f];var j=c.asSorting;b=c.sTitle.replace(/<.*?>/g,"");var i=c.nTh;i.removeAttribute("aria-sort");c.bSortable&&(0<d.length&&d[0].col==f?(i.setAttribute("aria-sort","asc"==d[0].dir?"ascending":"descending"),c=j[d[0].index+1]||j[0]):c=j[0],b+="asc"===c?a.sSortAscending:a.sSortDescending);i.setAttribute("aria-label", -b)}}function Ua(a,b,c,e){var d=a.aaSorting,f=a.aoColumns[b].asSorting,g=function(a,b){var c=a._idx;c===k&&(c=h.inArray(a[1],f));return c+1<f.length?c+1:b?null:0};"number"===typeof d[0]&&(d=a.aaSorting=[d]);c&&a.oFeatures.bSortMulti?(c=h.inArray(b,D(d,"0")),-1!==c?(b=g(d[c],!0),null===b&&1===d.length&&(b=0),null===b?d.splice(c,1):(d[c][1]=f[b],d[c]._idx=b)):(d.push([b,f[0],0]),d[d.length-1]._idx=0)):d.length&&d[0][0]==b?(b=g(d[0]),d.length=1,d[0][1]=f[b],d[0]._idx=b):(d.length=0,d.push([b,f[0]]),d[0]._idx= -0);N(a);"function"==typeof e&&e(a)}function Oa(a,b,c,e){var d=a.aoColumns[c];Va(b,{},function(b){!1!==d.bSortable&&(a.oFeatures.bProcessing?(C(a,!0),setTimeout(function(){Ua(a,c,b.shiftKey,e);"ssp"!==B(a)&&C(a,!1)},0)):Ua(a,c,b.shiftKey,e))})}function xa(a){var b=a.aLastSort,c=a.oClasses.sSortColumn,e=U(a),d=a.oFeatures,f,g;if(d.bSort&&d.bSortClasses){d=0;for(f=b.length;d<f;d++)g=b[d].src,h(D(a.aoData,"anCells",g)).removeClass(c+(2>d?d+1:3));d=0;for(f=e.length;d<f;d++)g=e[d].src,h(D(a.aoData,"anCells", -g)).addClass(c+(2>d?d+1:3))}a.aLastSort=e}function Ib(a,b){var c=a.aoColumns[b],e=m.ext.order[c.sSortDataType],d;e&&(d=e.call(a.oInstance,a,b,$(a,b)));for(var f,g=m.ext.type.order[c.sType+"-pre"],j=0,i=a.aoData.length;j<i;j++)if(c=a.aoData[j],c._aSortData||(c._aSortData=[]),!c._aSortData[b]||e)f=e?d[j]:x(a,j,b,"sort"),c._aSortData[b]=g?g(f):f}function ya(a){if(a.oFeatures.bStateSave&&!a.bDestroying){var b={time:+new Date,start:a._iDisplayStart,length:a._iDisplayLength,order:h.extend(!0,[],a.aaSorting), -search:zb(a.oPreviousSearch),columns:h.map(a.aoColumns,function(b,e){return{visible:b.bVisible,search:zb(a.aoPreSearchCols[e])}})};w(a,"aoStateSaveParams","stateSaveParams",[a,b]);a.oSavedState=b;a.fnStateSaveCallback.call(a.oInstance,a,b)}}function Kb(a){var b,c,e=a.aoColumns;if(a.oFeatures.bStateSave){var d=a.fnStateLoadCallback.call(a.oInstance,a);if(d&&d.time&&(b=w(a,"aoStateLoadParams","stateLoadParams",[a,d]),-1===h.inArray(!1,b)&&(b=a.iStateDuration,!(0<b&&d.time<+new Date-1E3*b)&&e.length=== -d.columns.length))){a.oLoadedState=h.extend(!0,{},d);d.start!==k&&(a._iDisplayStart=d.start,a.iInitDisplayStart=d.start);d.length!==k&&(a._iDisplayLength=d.length);d.order!==k&&(a.aaSorting=[],h.each(d.order,function(b,c){a.aaSorting.push(c[0]>=e.length?[0,c[1]]:c)}));d.search!==k&&h.extend(a.oPreviousSearch,Ab(d.search));b=0;for(c=d.columns.length;b<c;b++){var f=d.columns[b];f.visible!==k&&(e[b].bVisible=f.visible);f.search!==k&&h.extend(a.aoPreSearchCols[b],Ab(f.search))}w(a,"aoStateLoaded","stateLoaded", -[a,d])}}}function za(a){var b=m.settings,a=h.inArray(a,D(b,"nTable"));return-1!==a?b[a]:null}function I(a,b,c,e){c="DataTables warning: "+(null!==a?"table id="+a.sTableId+" - ":"")+c;e&&(c+=". For more information about this error, please see http://datatables.net/tn/"+e);if(b)Ea.console&&console.log&&console.log(c);else if(b=m.ext,b=b.sErrMode||b.errMode,w(a,null,"error",[a,e,c]),"alert"==b)alert(c);else{if("throw"==b)throw Error(c);"function"==typeof b&&b(a,e,c)}}function E(a,b,c,e){h.isArray(c)? -h.each(c,function(c,f){h.isArray(f)?E(a,b,f[0],f[1]):E(a,b,f)}):(e===k&&(e=c),b[c]!==k&&(a[e]=b[c]))}function Lb(a,b,c){var e,d;for(d in b)b.hasOwnProperty(d)&&(e=b[d],h.isPlainObject(e)?(h.isPlainObject(a[d])||(a[d]={}),h.extend(!0,a[d],e)):a[d]=c&&"data"!==d&&"aaData"!==d&&h.isArray(e)?e.slice():e);return a}function Va(a,b,c){h(a).bind("click.DT",b,function(b){a.blur();c(b)}).bind("keypress.DT",b,function(a){13===a.which&&(a.preventDefault(),c(a))}).bind("selectstart.DT",function(){return!1})}function z(a, -b,c,e){c&&a[b].push({fn:c,sName:e})}function w(a,b,c,e){var d=[];b&&(d=h.map(a[b].slice().reverse(),function(b){return b.fn.apply(a.oInstance,e)}));null!==c&&(b=h.Event(c+".dt"),h(a.nTable).trigger(b,e),d.push(b.result));return d}function Sa(a){var b=a._iDisplayStart,c=a.fnDisplayEnd(),e=a._iDisplayLength;b>=c&&(b=c-e);b-=b%e;if(-1===e||0>b)b=0;a._iDisplayStart=b}function Pa(a,b){var c=a.renderer,e=m.ext.renderer[b];return h.isPlainObject(c)&&c[b]?e[c[b]]||e._:"string"===typeof c?e[c]||e._:e._}function B(a){return a.oFeatures.bServerSide? -"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function Wa(a,b){var c=[],c=Mb.numbers_length,e=Math.floor(c/2);b<=c?c=V(0,b):a<=e?(c=V(0,c-2),c.push("ellipsis"),c.push(b-1)):(a>=b-1-e?c=V(b-(c-2),b):(c=V(a-e+2,a+e-1),c.push("ellipsis"),c.push(b-1)),c.splice(0,0,"ellipsis"),c.splice(0,0,0));c.DT_el="span";return c}function db(a){h.each({num:function(b){return Aa(b,a)},"num-fmt":function(b){return Aa(b,a,Xa)},"html-num":function(b){return Aa(b,a,Ba)},"html-num-fmt":function(b){return Aa(b,a,Ba,Xa)}},function(b, -c){u.type.order[b+a+"-pre"]=c;b.match(/^html\-/)&&(u.type.search[b+a]=u.type.search.html)})}function Nb(a){return function(){var b=[za(this[m.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return m.ext.internal[a].apply(this,b)}}var m,u,t,r,v,Ya={},Ob=/[\r\n]/g,Ba=/<.*?>/g,ac=/^[\w\+\-]/,bc=/[\w\+\-]$/,Yb=RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)","g"),Xa=/[',$\u00a3\u20ac\u00a5%\u2009\u202F\u20BD\u20a9\u20BArfk]/gi,J=function(a){return!a||!0===a|| -"-"===a?!0:!1},Pb=function(a){var b=parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},Qb=function(a,b){Ya[b]||(Ya[b]=RegExp(va(b),"g"));return"string"===typeof a&&"."!==b?a.replace(/\./g,"").replace(Ya[b],"."):a},Za=function(a,b,c){var e="string"===typeof a;if(J(a))return!0;b&&e&&(a=Qb(a,b));c&&e&&(a=a.replace(Xa,""));return!isNaN(parseFloat(a))&&isFinite(a)},Rb=function(a,b,c){return J(a)?!0:!(J(a)||"string"===typeof a)?null:Za(a.replace(Ba,""),b,c)?!0:null},D=function(a,b,c){var e=[],d=0,f=a.length; -if(c!==k)for(;d<f;d++)a[d]&&a[d][b]&&e.push(a[d][b][c]);else for(;d<f;d++)a[d]&&e.push(a[d][b]);return e},ia=function(a,b,c,e){var d=[],f=0,g=b.length;if(e!==k)for(;f<g;f++)a[b[f]][c]&&d.push(a[b[f]][c][e]);else for(;f<g;f++)d.push(a[b[f]][c]);return d},V=function(a,b){var c=[],e;b===k?(b=0,e=a):(e=b,b=a);for(var d=b;d<e;d++)c.push(d);return c},Sb=function(a){for(var b=[],c=0,e=a.length;c<e;c++)a[c]&&b.push(a[c]);return b},Na=function(a){var b=[],c,e,d=a.length,f,g=0;e=0;a:for(;e<d;e++){c=a[e];for(f= -0;f<g;f++)if(b[f]===c)continue a;b.push(c);g++}return b},A=function(a,b,c){a[b]!==k&&(a[c]=a[b])},ba=/\[.*?\]$/,T=/\(\)$/,wa=h("<div>")[0],Zb=wa.textContent!==k,$b=/<.*?>/g;m=function(a){this.$=function(a,b){return this.api(!0).$(a,b)};this._=function(a,b){return this.api(!0).rows(a,b).data()};this.api=function(a){return a?new t(za(this[u.iApiIndex])):new t(this)};this.fnAddData=function(a,b){var c=this.api(!0),e=h.isArray(a)&&(h.isArray(a[0])||h.isPlainObject(a[0]))?c.rows.add(a):c.row.add(a);(b=== -k||b)&&c.draw();return e.flatten().toArray()};this.fnAdjustColumnSizing=function(a){var b=this.api(!0).columns.adjust(),c=b.settings()[0],e=c.oScroll;a===k||a?b.draw(!1):(""!==e.sX||""!==e.sY)&&Y(c)};this.fnClearTable=function(a){var b=this.api(!0).clear();(a===k||a)&&b.draw()};this.fnClose=function(a){this.api(!0).row(a).child.hide()};this.fnDeleteRow=function(a,b,c){var e=this.api(!0),a=e.rows(a),d=a.settings()[0],h=d.aoData[a[0][0]];a.remove();b&&b.call(this,d,h);(c===k||c)&&e.draw();return h}; -this.fnDestroy=function(a){this.api(!0).destroy(a)};this.fnDraw=function(a){this.api(!0).draw(a)};this.fnFilter=function(a,b,c,e,d,h){d=this.api(!0);null===b||b===k?d.search(a,c,e,h):d.column(b).search(a,c,e,h);d.draw()};this.fnGetData=function(a,b){var c=this.api(!0);if(a!==k){var e=a.nodeName?a.nodeName.toLowerCase():"";return b!==k||"td"==e||"th"==e?c.cell(a,b).data():c.row(a).data()||null}return c.data().toArray()};this.fnGetNodes=function(a){var b=this.api(!0);return a!==k?b.row(a).node():b.rows().nodes().flatten().toArray()}; -this.fnGetPosition=function(a){var b=this.api(!0),c=a.nodeName.toUpperCase();return"TR"==c?b.row(a).index():"TD"==c||"TH"==c?(a=b.cell(a).index(),[a.row,a.columnVisible,a.column]):null};this.fnIsOpen=function(a){return this.api(!0).row(a).child.isShown()};this.fnOpen=function(a,b,c){return this.api(!0).row(a).child(b,c).show().child()[0]};this.fnPageChange=function(a,b){var c=this.api(!0).page(a);(b===k||b)&&c.draw(!1)};this.fnSetColumnVis=function(a,b,c){a=this.api(!0).column(a).visible(b);(c=== -k||c)&&a.columns.adjust().draw()};this.fnSettings=function(){return za(this[u.iApiIndex])};this.fnSort=function(a){this.api(!0).order(a).draw()};this.fnSortListener=function(a,b,c){this.api(!0).order.listener(a,b,c)};this.fnUpdate=function(a,b,c,e,d){var h=this.api(!0);c===k||null===c?h.row(b).data(a):h.cell(b,c).data(a);(d===k||d)&&h.columns.adjust();(e===k||e)&&h.draw();return 0};this.fnVersionCheck=u.fnVersionCheck;var b=this,c=a===k,e=this.length;c&&(a={});this.oApi=this.internal=u.internal;for(var d in m.ext.internal)d&& -(this[d]=Nb(d));this.each(function(){var d={},d=1<e?Lb(d,a,!0):a,g=0,j,i=this.getAttribute("id"),o=!1,l=m.defaults,q=h(this);if("table"!=this.nodeName.toLowerCase())I(null,0,"Non-table node initialisation ("+this.nodeName+")",2);else{eb(l);fb(l.column);H(l,l,!0);H(l.column,l.column,!0);H(l,h.extend(d,q.data()));var n=m.settings,g=0;for(j=n.length;g<j;g++){var r=n[g];if(r.nTable==this||r.nTHead.parentNode==this||r.nTFoot&&r.nTFoot.parentNode==this){g=d.bRetrieve!==k?d.bRetrieve:l.bRetrieve;if(c||g)return r.oInstance; -if(d.bDestroy!==k?d.bDestroy:l.bDestroy){r.oInstance.fnDestroy();break}else{I(r,0,"Cannot reinitialise DataTable",3);return}}if(r.sTableId==this.id){n.splice(g,1);break}}if(null===i||""===i)this.id=i="DataTables_Table_"+m.ext._unique++;var p=h.extend(!0,{},m.models.oSettings,{sDestroyWidth:q[0].style.width,sInstance:i,sTableId:i});p.nTable=this;p.oApi=b.internal;p.oInit=d;n.push(p);p.oInstance=1===b.length?b:q.dataTable();eb(d);d.oLanguage&&P(d.oLanguage);d.aLengthMenu&&!d.iDisplayLength&&(d.iDisplayLength= -h.isArray(d.aLengthMenu[0])?d.aLengthMenu[0][0]:d.aLengthMenu[0]);d=Lb(h.extend(!0,{},l),d);E(p.oFeatures,d,"bPaginate bLengthChange bFilter bSort bSortMulti bInfo bProcessing bAutoWidth bSortClasses bServerSide bDeferRender".split(" "));E(p,d,["asStripeClasses","ajax","fnServerData","fnFormatNumber","sServerMethod","aaSorting","aaSortingFixed","aLengthMenu","sPaginationType","sAjaxSource","sAjaxDataProp","iStateDuration","sDom","bSortCellsTop","iTabIndex","fnStateLoadCallback","fnStateSaveCallback", -"renderer","searchDelay",["iCookieDuration","iStateDuration"],["oSearch","oPreviousSearch"],["aoSearchCols","aoPreSearchCols"],["iDisplayLength","_iDisplayLength"],["bJQueryUI","bJUI"]]);E(p.oScroll,d,[["sScrollX","sX"],["sScrollXInner","sXInner"],["sScrollY","sY"],["bScrollCollapse","bCollapse"]]);E(p.oLanguage,d,"fnInfoCallback");z(p,"aoDrawCallback",d.fnDrawCallback,"user");z(p,"aoServerParams",d.fnServerParams,"user");z(p,"aoStateSaveParams",d.fnStateSaveParams,"user");z(p,"aoStateLoadParams", -d.fnStateLoadParams,"user");z(p,"aoStateLoaded",d.fnStateLoaded,"user");z(p,"aoRowCallback",d.fnRowCallback,"user");z(p,"aoRowCreatedCallback",d.fnCreatedRow,"user");z(p,"aoHeaderCallback",d.fnHeaderCallback,"user");z(p,"aoFooterCallback",d.fnFooterCallback,"user");z(p,"aoInitComplete",d.fnInitComplete,"user");z(p,"aoPreDrawCallback",d.fnPreDrawCallback,"user");i=p.oClasses;d.bJQueryUI?(h.extend(i,m.ext.oJUIClasses,d.oClasses),d.sDom===l.sDom&&"lfrtip"===l.sDom&&(p.sDom='<"H"lfr>t<"F"ip>'),p.renderer)? -h.isPlainObject(p.renderer)&&!p.renderer.header&&(p.renderer.header="jqueryui"):p.renderer="jqueryui":h.extend(i,m.ext.classes,d.oClasses);q.addClass(i.sTable);if(""!==p.oScroll.sX||""!==p.oScroll.sY)p.oScroll.iBarWidth=Hb();!0===p.oScroll.sX&&(p.oScroll.sX="100%");p.iInitDisplayStart===k&&(p.iInitDisplayStart=d.iDisplayStart,p._iDisplayStart=d.iDisplayStart);null!==d.iDeferLoading&&(p.bDeferLoading=!0,g=h.isArray(d.iDeferLoading),p._iRecordsDisplay=g?d.iDeferLoading[0]:d.iDeferLoading,p._iRecordsTotal= -g?d.iDeferLoading[1]:d.iDeferLoading);var t=p.oLanguage;h.extend(!0,t,d.oLanguage);""!==t.sUrl&&(h.ajax({dataType:"json",url:t.sUrl,success:function(a){P(a);H(l.oLanguage,a);h.extend(true,t,a);ga(p)},error:function(){ga(p)}}),o=!0);null===d.asStripeClasses&&(p.asStripeClasses=[i.sStripeOdd,i.sStripeEven]);var g=p.asStripeClasses,s=q.children("tbody").find("tr").eq(0);-1!==h.inArray(!0,h.map(g,function(a){return s.hasClass(a)}))&&(h("tbody tr",this).removeClass(g.join(" ")),p.asDestroyStripes=g.slice()); -n=[];g=this.getElementsByTagName("thead");0!==g.length&&(da(p.aoHeader,g[0]),n=qa(p));if(null===d.aoColumns){r=[];g=0;for(j=n.length;g<j;g++)r.push(null)}else r=d.aoColumns;g=0;for(j=r.length;g<j;g++)Fa(p,n?n[g]:null);ib(p,d.aoColumnDefs,r,function(a,b){ka(p,a,b)});if(s.length){var u=function(a,b){return a.getAttribute("data-"+b)!==null?b:null};h.each(na(p,s[0]).cells,function(a,b){var c=p.aoColumns[a];if(c.mData===a){var d=u(b,"sort")||u(b,"order"),e=u(b,"filter")||u(b,"search");if(d!==null||e!== -null){c.mData={_:a+".display",sort:d!==null?a+".@data-"+d:k,type:d!==null?a+".@data-"+d:k,filter:e!==null?a+".@data-"+e:k};ka(p,a)}}})}var v=p.oFeatures;d.bStateSave&&(v.bStateSave=!0,Kb(p,d),z(p,"aoDrawCallback",ya,"state_save"));if(d.aaSorting===k){n=p.aaSorting;g=0;for(j=n.length;g<j;g++)n[g][1]=p.aoColumns[g].asSorting[0]}xa(p);v.bSort&&z(p,"aoDrawCallback",function(){if(p.bSorted){var a=U(p),b={};h.each(a,function(a,c){b[c.src]=c.dir});w(p,null,"order",[p,a,b]);Jb(p)}});z(p,"aoDrawCallback", -function(){(p.bSorted||B(p)==="ssp"||v.bDeferRender)&&xa(p)},"sc");gb(p);g=q.children("caption").each(function(){this._captionSide=q.css("caption-side")});j=q.children("thead");0===j.length&&(j=h("<thead/>").appendTo(this));p.nTHead=j[0];j=q.children("tbody");0===j.length&&(j=h("<tbody/>").appendTo(this));p.nTBody=j[0];j=q.children("tfoot");if(0===j.length&&0<g.length&&(""!==p.oScroll.sX||""!==p.oScroll.sY))j=h("<tfoot/>").appendTo(this);0===j.length||0===j.children().length?q.addClass(i.sNoFooter): -0<j.length&&(p.nTFoot=j[0],da(p.aoFooter,p.nTFoot));if(d.aaData)for(g=0;g<d.aaData.length;g++)K(p,d.aaData[g]);else(p.bDeferLoading||"dom"==B(p))&&ma(p,h(p.nTBody).children("tr"));p.aiDisplay=p.aiDisplayMaster.slice();p.bInitialised=!0;!1===o&&ga(p)}});b=null;return this};var Tb=[],y=Array.prototype,cc=function(a){var b,c,e=m.settings,d=h.map(e,function(a){return a.nTable});if(a){if(a.nTable&&a.oApi)return[a];if(a.nodeName&&"table"===a.nodeName.toLowerCase())return b=h.inArray(a,d),-1!==b?[e[b]]: -null;if(a&&"function"===typeof a.settings)return a.settings().toArray();"string"===typeof a?c=h(a):a instanceof h&&(c=a)}else return[];if(c)return c.map(function(){b=h.inArray(this,d);return-1!==b?e[b]:null}).toArray()};t=function(a,b){if(!(this instanceof t))return new t(a,b);var c=[],e=function(a){(a=cc(a))&&c.push.apply(c,a)};if(h.isArray(a))for(var d=0,f=a.length;d<f;d++)e(a[d]);else e(a);this.context=Na(c);b&&this.push.apply(this,b.toArray?b.toArray():b);this.selector={rows:null,cols:null,opts:null}; -t.extend(this,this,Tb)};m.Api=t;t.prototype={any:function(){return 0!==this.flatten().length},concat:y.concat,context:[],each:function(a){for(var b=0,c=this.length;b<c;b++)a.call(this,this[b],b,this);return this},eq:function(a){var b=this.context;return b.length>a?new t(b[a],this[a]):null},filter:function(a){var b=[];if(y.filter)b=y.filter.call(this,a,this);else for(var c=0,e=this.length;c<e;c++)a.call(this,this[c],c,this)&&b.push(this[c]);return new t(this.context,b)},flatten:function(){var a=[]; -return new t(this.context,a.concat.apply(a,this.toArray()))},join:y.join,indexOf:y.indexOf||function(a,b){for(var c=b||0,e=this.length;c<e;c++)if(this[c]===a)return c;return-1},iterator:function(a,b,c,e){var d=[],f,g,h,i,o,l=this.context,q,n,m=this.selector;"string"===typeof a&&(e=c,c=b,b=a,a=!1);g=0;for(h=l.length;g<h;g++){var p=new t(l[g]);if("table"===b)f=c.call(p,l[g],g),f!==k&&d.push(f);else if("columns"===b||"rows"===b)f=c.call(p,l[g],this[g],g),f!==k&&d.push(f);else if("column"===b||"column-rows"=== -b||"row"===b||"cell"===b){n=this[g];"column-rows"===b&&(q=Ca(l[g],m.opts));i=0;for(o=n.length;i<o;i++)f=n[i],f="cell"===b?c.call(p,l[g],f.row,f.column,g,i):c.call(p,l[g],f,g,i,q),f!==k&&d.push(f)}}return d.length||e?(a=new t(l,a?d.concat.apply([],d):d),b=a.selector,b.rows=m.rows,b.cols=m.cols,b.opts=m.opts,a):this},lastIndexOf:y.lastIndexOf||function(a,b){return this.indexOf.apply(this.toArray.reverse(),arguments)},length:0,map:function(a){var b=[];if(y.map)b=y.map.call(this,a,this);else for(var c= -0,e=this.length;c<e;c++)b.push(a.call(this,this[c],c));return new t(this.context,b)},pluck:function(a){return this.map(function(b){return b[a]})},pop:y.pop,push:y.push,reduce:y.reduce||function(a,b){return hb(this,a,b,0,this.length,1)},reduceRight:y.reduceRight||function(a,b){return hb(this,a,b,this.length-1,-1,-1)},reverse:y.reverse,selector:null,shift:y.shift,sort:y.sort,splice:y.splice,toArray:function(){return y.slice.call(this)},to$:function(){return h(this)},toJQuery:function(){return h(this)}, -unique:function(){return new t(this.context,Na(this))},unshift:y.unshift};t.extend=function(a,b,c){if(c.length&&b&&(b instanceof t||b.__dt_wrapper)){var e,d,f,g=function(a,b,c){return function(){var d=b.apply(a,arguments);t.extend(d,d,c.methodExt);return d}};e=0;for(d=c.length;e<d;e++)f=c[e],b[f.name]="function"===typeof f.val?g(a,f.val,f):h.isPlainObject(f.val)?{}:f.val,b[f.name].__dt_wrapper=!0,t.extend(a,b[f.name],f.propExt)}};t.register=r=function(a,b){if(h.isArray(a))for(var c=0,e=a.length;c< -e;c++)t.register(a[c],b);else for(var d=a.split("."),f=Tb,g,j,c=0,e=d.length;c<e;c++){g=(j=-1!==d[c].indexOf("()"))?d[c].replace("()",""):d[c];var i;a:{i=0;for(var o=f.length;i<o;i++)if(f[i].name===g){i=f[i];break a}i=null}i||(i={name:g,val:{},methodExt:[],propExt:[]},f.push(i));c===e-1?i.val=b:f=j?i.methodExt:i.propExt}};t.registerPlural=v=function(a,b,c){t.register(a,c);t.register(b,function(){var a=c.apply(this,arguments);return a===this?this:a instanceof t?a.length?h.isArray(a[0])?new t(a.context, -a[0]):a[0]:k:a})};r("tables()",function(a){var b;if(a){b=t;var c=this.context;if("number"===typeof a)a=[c[a]];else var e=h.map(c,function(a){return a.nTable}),a=h(e).filter(a).map(function(){var a=h.inArray(this,e);return c[a]}).toArray();b=new b(a)}else b=this;return b});r("table()",function(a){var a=this.tables(a),b=a.context;return b.length?new t(b[0]):a});v("tables().nodes()","table().node()",function(){return this.iterator("table",function(a){return a.nTable},1)});v("tables().body()","table().body()", -function(){return this.iterator("table",function(a){return a.nTBody},1)});v("tables().header()","table().header()",function(){return this.iterator("table",function(a){return a.nTHead},1)});v("tables().footer()","table().footer()",function(){return this.iterator("table",function(a){return a.nTFoot},1)});v("tables().containers()","table().container()",function(){return this.iterator("table",function(a){return a.nTableWrapper},1)});r("draw()",function(a){return this.iterator("table",function(b){N(b, -!1===a)})});r("page()",function(a){return a===k?this.page.info().page:this.iterator("table",function(b){Ta(b,a)})});r("page.info()",function(){if(0===this.context.length)return k;var a=this.context[0],b=a._iDisplayStart,c=a._iDisplayLength,e=a.fnRecordsDisplay(),d=-1===c;return{page:d?0:Math.floor(b/c),pages:d?1:Math.ceil(e/c),start:b,end:a.fnDisplayEnd(),length:c,recordsTotal:a.fnRecordsTotal(),recordsDisplay:e}});r("page.len()",function(a){return a===k?0!==this.context.length?this.context[0]._iDisplayLength: -k:this.iterator("table",function(b){Ra(b,a)})});var Ub=function(a,b,c){if(c){var e=new t(a);e.one("draw",function(){c(e.ajax.json())})}"ssp"==B(a)?N(a,b):(C(a,!0),ra(a,[],function(c){oa(a);for(var c=sa(a,c),e=0,g=c.length;e<g;e++)K(a,c[e]);N(a,b);C(a,!1)}))};r("ajax.json()",function(){var a=this.context;if(0<a.length)return a[0].json});r("ajax.params()",function(){var a=this.context;if(0<a.length)return a[0].oAjaxData});r("ajax.reload()",function(a,b){return this.iterator("table",function(c){Ub(c, -!1===b,a)})});r("ajax.url()",function(a){var b=this.context;if(a===k){if(0===b.length)return k;b=b[0];return b.ajax?h.isPlainObject(b.ajax)?b.ajax.url:b.ajax:b.sAjaxSource}return this.iterator("table",function(b){h.isPlainObject(b.ajax)?b.ajax.url=a:b.ajax=a})});r("ajax.url().load()",function(a,b){return this.iterator("table",function(c){Ub(c,!1===b,a)})});var $a=function(a,b,c,e,d){var f=[],g,j,i,o,l,q;i=typeof b;if(!b||"string"===i||"function"===i||b.length===k)b=[b];i=0;for(o=b.length;i<o;i++){j= -b[i]&&b[i].split?b[i].split(","):[b[i]];l=0;for(q=j.length;l<q;l++)(g=c("string"===typeof j[l]?h.trim(j[l]):j[l]))&&g.length&&f.push.apply(f,g)}a=u.selector[a];if(a.length){i=0;for(o=a.length;i<o;i++)f=a[i](e,d,f)}return f},ab=function(a){a||(a={});a.filter&&a.search===k&&(a.search=a.filter);return h.extend({search:"none",order:"current",page:"all"},a)},bb=function(a){for(var b=0,c=a.length;b<c;b++)if(0<a[b].length)return a[0]=a[b],a[0].length=1,a.length=1,a.context=[a.context[b]],a;a.length=0;return a}, -Ca=function(a,b){var c,e,d,f=[],g=a.aiDisplay;c=a.aiDisplayMaster;var j=b.search;e=b.order;d=b.page;if("ssp"==B(a))return"removed"===j?[]:V(0,c.length);if("current"==d){c=a._iDisplayStart;for(e=a.fnDisplayEnd();c<e;c++)f.push(g[c])}else if("current"==e||"applied"==e)f="none"==j?c.slice():"applied"==j?g.slice():h.map(c,function(a){return-1===h.inArray(a,g)?a:null});else if("index"==e||"original"==e){c=0;for(e=a.aoData.length;c<e;c++)"none"==j?f.push(c):(d=h.inArray(c,g),(-1===d&&"removed"==j||0<=d&& -"applied"==j)&&f.push(c))}return f};r("rows()",function(a,b){a===k?a="":h.isPlainObject(a)&&(b=a,a="");var b=ab(b),c=this.iterator("table",function(c){var d=b;return $a("row",a,function(a){var b=Pb(a);if(b!==null&&!d)return[b];var j=Ca(c,d);if(b!==null&&h.inArray(b,j)!==-1)return[b];if(!a)return j;if(typeof a==="function")return h.map(j,function(b){var d=c.aoData[b];return a(b,d._aData,d.nTr)?b:null});b=Sb(ia(c.aoData,j,"nTr"));return a.nodeName&&h.inArray(a,b)!==-1?[a._DT_RowIndex]:h(b).filter(a).map(function(){return this._DT_RowIndex}).toArray()}, -c,d)},1);c.selector.rows=a;c.selector.opts=b;return c});r("rows().nodes()",function(){return this.iterator("row",function(a,b){return a.aoData[b].nTr||k},1)});r("rows().data()",function(){return this.iterator(!0,"rows",function(a,b){return ia(a.aoData,b,"_aData")},1)});v("rows().cache()","row().cache()",function(a){return this.iterator("row",function(b,c){var e=b.aoData[c];return"search"===a?e._aFilterData:e._aSortData},1)});v("rows().invalidate()","row().invalidate()",function(a){return this.iterator("row", -function(b,c){ca(b,c,a)})});v("rows().indexes()","row().index()",function(){return this.iterator("row",function(a,b){return b},1)});v("rows().remove()","row().remove()",function(){var a=this;return this.iterator("row",function(b,c,e){var d=b.aoData;d.splice(c,1);for(var f=0,g=d.length;f<g;f++)null!==d[f].nTr&&(d[f].nTr._DT_RowIndex=f);h.inArray(c,b.aiDisplay);pa(b.aiDisplayMaster,c);pa(b.aiDisplay,c);pa(a[e],c,!1);Sa(b)})});r("rows.add()",function(a){var b=this.iterator("table",function(b){var c, -f,g,h=[];f=0;for(g=a.length;f<g;f++)c=a[f],c.nodeName&&"TR"===c.nodeName.toUpperCase()?h.push(ma(b,c)[0]):h.push(K(b,c));return h},1),c=this.rows(-1);c.pop();c.push.apply(c,b.toArray());return c});r("row()",function(a,b){return bb(this.rows(a,b))});r("row().data()",function(a){var b=this.context;if(a===k)return b.length&&this.length?b[0].aoData[this[0]]._aData:k;b[0].aoData[this[0]]._aData=a;ca(b[0],this[0],"data");return this});r("row().node()",function(){var a=this.context;return a.length&&this.length? -a[0].aoData[this[0]].nTr||null:null});r("row.add()",function(a){a instanceof h&&a.length&&(a=a[0]);var b=this.iterator("table",function(b){return a.nodeName&&"TR"===a.nodeName.toUpperCase()?ma(b,a)[0]:K(b,a)});return this.row(b[0])});var cb=function(a,b){var c=a.context;c.length&&(c=c[0].aoData[b!==k?b:a[0]],c._details&&(c._details.remove(),c._detailsShow=k,c._details=k))},Vb=function(a,b){var c=a.context;if(c.length&&a.length){var e=c[0].aoData[a[0]];if(e._details){(e._detailsShow=b)?e._details.insertAfter(e.nTr): -e._details.detach();var d=c[0],f=new t(d),g=d.aoData;f.off("draw.dt.DT_details column-visibility.dt.DT_details destroy.dt.DT_details");0<D(g,"_details").length&&(f.on("draw.dt.DT_details",function(a,b){d===b&&f.rows({page:"current"}).eq(0).each(function(a){a=g[a];a._detailsShow&&a._details.insertAfter(a.nTr)})}),f.on("column-visibility.dt.DT_details",function(a,b){if(d===b)for(var c,e=aa(b),f=0,h=g.length;f<h;f++)c=g[f],c._details&&c._details.children("td[colspan]").attr("colspan",e)}),f.on("destroy.dt.DT_details", -function(a,b){if(d===b)for(var c=0,e=g.length;c<e;c++)g[c]._details&&cb(f,c)}))}}};r("row().child()",function(a,b){var c=this.context;if(a===k)return c.length&&this.length?c[0].aoData[this[0]]._details:k;if(!0===a)this.child.show();else if(!1===a)cb(this);else if(c.length&&this.length){var e=c[0],c=c[0].aoData[this[0]],d=[],f=function(a,b){if(h.isArray(a)||a instanceof h)for(var c=0,k=a.length;c<k;c++)f(a[c],b);else a.nodeName&&"tr"===a.nodeName.toLowerCase()?d.push(a):(c=h("<tr><td/></tr>").addClass(b), -h("td",c).addClass(b).html(a)[0].colSpan=aa(e),d.push(c[0]))};f(a,b);c._details&&c._details.remove();c._details=h(d);c._detailsShow&&c._details.insertAfter(c.nTr)}return this});r(["row().child.show()","row().child().show()"],function(){Vb(this,!0);return this});r(["row().child.hide()","row().child().hide()"],function(){Vb(this,!1);return this});r(["row().child.remove()","row().child().remove()"],function(){cb(this);return this});r("row().child.isShown()",function(){var a=this.context;return a.length&& -this.length?a[0].aoData[this[0]]._detailsShow||!1:!1});var dc=/^(.+):(name|visIdx|visible)$/,Wb=function(a,b,c,e,d){for(var c=[],e=0,f=d.length;e<f;e++)c.push(x(a,d[e],b));return c};r("columns()",function(a,b){a===k?a="":h.isPlainObject(a)&&(b=a,a="");var b=ab(b),c=this.iterator("table",function(c){var d=a,f=b,g=c.aoColumns,j=D(g,"sName"),i=D(g,"nTh");return $a("column",d,function(a){var b=Pb(a);if(a==="")return V(g.length);if(b!==null)return[b>=0?b:g.length+b];if(typeof a==="function"){var d=Ca(c, -f);return h.map(g,function(b,f){return a(f,Wb(c,f,0,0,d),i[f])?f:null})}var k=typeof a==="string"?a.match(dc):"";if(k)switch(k[2]){case "visIdx":case "visible":b=parseInt(k[1],10);if(b<0){var m=h.map(g,function(a,b){return a.bVisible?b:null});return[m[m.length+b]]}return[la(c,b)];case "name":return h.map(j,function(a,b){return a===k[1]?b:null})}else return h(i).filter(a).map(function(){return h.inArray(this,i)}).toArray()},c,f)},1);c.selector.cols=a;c.selector.opts=b;return c});v("columns().header()", -"column().header()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTh},1)});v("columns().footer()","column().footer()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTf},1)});v("columns().data()","column().data()",function(){return this.iterator("column-rows",Wb,1)});v("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].mData},1)});v("columns().cache()","column().cache()", -function(a){return this.iterator("column-rows",function(b,c,e,d,f){return ia(b.aoData,f,"search"===a?"_aFilterData":"_aSortData",c)},1)});v("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows",function(a,b,c,e,d){return ia(a.aoData,d,"anCells",b)},1)});v("columns().visible()","column().visible()",function(a,b){return this.iterator("column",function(c,e){if(a===k)return c.aoColumns[e].bVisible;var d=c.aoColumns,f=d[e],g=c.aoData,j,i,m;if(a!==k&&f.bVisible!==a){if(a){var l= -h.inArray(!0,D(d,"bVisible"),e+1);j=0;for(i=g.length;j<i;j++)m=g[j].nTr,d=g[j].anCells,m&&m.insertBefore(d[e],d[l]||null)}else h(D(c.aoData,"anCells",e)).detach();f.bVisible=a;ea(c,c.aoHeader);ea(c,c.aoFooter);if(b===k||b)X(c),(c.oScroll.sX||c.oScroll.sY)&&Y(c);w(c,null,"column-visibility",[c,e,a]);ya(c)}})});v("columns().indexes()","column().index()",function(a){return this.iterator("column",function(b,c){return"visible"===a?$(b,c):c},1)});r("columns.adjust()",function(){return this.iterator("table", -function(a){X(a)},1)});r("column.index()",function(a,b){if(0!==this.context.length){var c=this.context[0];if("fromVisible"===a||"toData"===a)return la(c,b);if("fromData"===a||"toVisible"===a)return $(c,b)}});r("column()",function(a,b){return bb(this.columns(a,b))});r("cells()",function(a,b,c){h.isPlainObject(a)&&(a.row===k?(c=a,a=null):(c=b,b=null));h.isPlainObject(b)&&(c=b,b=null);if(null===b||b===k)return this.iterator("table",function(b){var d=a,e=ab(c),f=b.aoData,g=Ca(b,e),i=Sb(ia(f,g,"anCells")), -j=h([].concat.apply([],i)),l,m=b.aoColumns.length,o,r,t,s,u,v;return $a("cell",d,function(a){var c=typeof a==="function";if(a===null||a===k||c){o=[];r=0;for(t=g.length;r<t;r++){l=g[r];for(s=0;s<m;s++){u={row:l,column:s};if(c){v=b.aoData[l];a(u,x(b,l,s),v.anCells?v.anCells[s]:null)&&o.push(u)}else o.push(u)}}return o}return h.isPlainObject(a)?[a]:j.filter(a).map(function(a,b){l=b.parentNode._DT_RowIndex;return{row:l,column:h.inArray(b,f[l].anCells)}}).toArray()},b,e)});var e=this.columns(b,c),d=this.rows(a, -c),f,g,j,i,m,l=this.iterator("table",function(a,b){f=[];g=0;for(j=d[b].length;g<j;g++){i=0;for(m=e[b].length;i<m;i++)f.push({row:d[b][g],column:e[b][i]})}return f},1);h.extend(l.selector,{cols:b,rows:a,opts:c});return l});v("cells().nodes()","cell().node()",function(){return this.iterator("cell",function(a,b,c){return(a=a.aoData[b].anCells)?a[c]:k},1)});r("cells().data()",function(){return this.iterator("cell",function(a,b,c){return x(a,b,c)},1)});v("cells().cache()","cell().cache()",function(a){a= -"search"===a?"_aFilterData":"_aSortData";return this.iterator("cell",function(b,c,e){return b.aoData[c][a][e]},1)});v("cells().render()","cell().render()",function(a){return this.iterator("cell",function(b,c,e){return x(b,c,e,a)},1)});v("cells().indexes()","cell().index()",function(){return this.iterator("cell",function(a,b,c){return{row:b,column:c,columnVisible:$(a,c)}},1)});v("cells().invalidate()","cell().invalidate()",function(a){return this.iterator("cell",function(b,c,e){ca(b,c,a,e)})});r("cell()", -function(a,b,c){return bb(this.cells(a,b,c))});r("cell().data()",function(a){var b=this.context,c=this[0];if(a===k)return b.length&&c.length?x(b[0],c[0].row,c[0].column):k;Ia(b[0],c[0].row,c[0].column,a);ca(b[0],c[0].row,"data",c[0].column);return this});r("order()",function(a,b){var c=this.context;if(a===k)return 0!==c.length?c[0].aaSorting:k;"number"===typeof a?a=[[a,b]]:h.isArray(a[0])||(a=Array.prototype.slice.call(arguments));return this.iterator("table",function(b){b.aaSorting=a.slice()})}); -r("order.listener()",function(a,b,c){return this.iterator("table",function(e){Oa(e,a,b,c)})});r(["columns().order()","column().order()"],function(a){var b=this;return this.iterator("table",function(c,e){var d=[];h.each(b[e],function(b,c){d.push([c,a])});c.aaSorting=d})});r("search()",function(a,b,c,e){var d=this.context;return a===k?0!==d.length?d[0].oPreviousSearch.sSearch:k:this.iterator("table",function(d){d.oFeatures.bFilter&&fa(d,h.extend({},d.oPreviousSearch,{sSearch:a+"",bRegex:null===b?!1: -b,bSmart:null===c?!0:c,bCaseInsensitive:null===e?!0:e}),1)})});v("columns().search()","column().search()",function(a,b,c,e){return this.iterator("column",function(d,f){var g=d.aoPreSearchCols;if(a===k)return g[f].sSearch;d.oFeatures.bFilter&&(h.extend(g[f],{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===e?!0:e}),fa(d,d.oPreviousSearch,1))})});r("state()",function(){return this.context.length?this.context[0].oSavedState:null});r("state.clear()",function(){return this.iterator("table", -function(a){a.fnStateSaveCallback.call(a.oInstance,a,{})})});r("state.loaded()",function(){return this.context.length?this.context[0].oLoadedState:null});r("state.save()",function(){return this.iterator("table",function(a){ya(a)})});m.versionCheck=m.fnVersionCheck=function(a){for(var b=m.version.split("."),a=a.split("."),c,e,d=0,f=a.length;d<f;d++)if(c=parseInt(b[d],10)||0,e=parseInt(a[d],10)||0,c!==e)return c>e;return!0};m.isDataTable=m.fnIsDataTable=function(a){var b=h(a).get(0),c=!1;h.each(m.settings, -function(a,d){var f=d.nScrollHead?h("table",d.nScrollHead)[0]:null,g=d.nScrollFoot?h("table",d.nScrollFoot)[0]:null;if(d.nTable===b||f===b||g===b)c=!0});return c};m.tables=m.fnTables=function(a){return h.map(m.settings,function(b){if(!a||a&&h(b.nTable).is(":visible"))return b.nTable})};m.util={throttle:ua,escapeRegex:va};m.camelToHungarian=H;r("$()",function(a,b){var c=this.rows(b).nodes(),c=h(c);return h([].concat(c.filter(a).toArray(),c.find(a).toArray()))});h.each(["on","one","off"],function(a, -b){r(b+"()",function(){var a=Array.prototype.slice.call(arguments);a[0].match(/\.dt\b/)||(a[0]+=".dt");var e=h(this.tables().nodes());e[b].apply(e,a);return this})});r("clear()",function(){return this.iterator("table",function(a){oa(a)})});r("settings()",function(){return new t(this.context,this.context)});r("init()",function(){var a=this.context;return a.length?a[0].oInit:null});r("data()",function(){return this.iterator("table",function(a){return D(a.aoData,"_aData")}).flatten()});r("destroy()", -function(a){a=a||!1;return this.iterator("table",function(b){var c=b.nTableWrapper.parentNode,e=b.oClasses,d=b.nTable,f=b.nTBody,g=b.nTHead,j=b.nTFoot,i=h(d),f=h(f),k=h(b.nTableWrapper),l=h.map(b.aoData,function(a){return a.nTr}),q;b.bDestroying=!0;w(b,"aoDestroyCallback","destroy",[b]);a||(new t(b)).columns().visible(!0);k.unbind(".DT").find(":not(tbody *)").unbind(".DT");h(Ea).unbind(".DT-"+b.sInstance);d!=g.parentNode&&(i.children("thead").detach(),i.append(g));j&&d!=j.parentNode&&(i.children("tfoot").detach(), -i.append(j));i.detach();k.detach();b.aaSorting=[];b.aaSortingFixed=[];xa(b);h(l).removeClass(b.asStripeClasses.join(" "));h("th, td",g).removeClass(e.sSortable+" "+e.sSortableAsc+" "+e.sSortableDesc+" "+e.sSortableNone);b.bJUI&&(h("th span."+e.sSortIcon+", td span."+e.sSortIcon,g).detach(),h("th, td",g).each(function(){var a=h("div."+e.sSortJUIWrapper,this);h(this).append(a.contents());a.detach()}));!a&&c&&c.insertBefore(d,b.nTableReinsertBefore);f.children().detach();f.append(l);i.css("width",b.sDestroyWidth).removeClass(e.sTable); -(q=b.asDestroyStripes.length)&&f.children().each(function(a){h(this).addClass(b.asDestroyStripes[a%q])});c=h.inArray(b,m.settings);-1!==c&&m.settings.splice(c,1)})});h.each(["column","row","cell"],function(a,b){r(b+"s().every()",function(a){return this.iterator(b,function(e,d,f){a.call((new t(e))[b](d,f))})})});r("i18n()",function(a,b,c){var e=this.context[0],a=R(a)(e.oLanguage);a===k&&(a=b);c!==k&&h.isPlainObject(a)&&(a=a[c]!==k?a[c]:a._);return a.replace("%d",c)});m.version="1.10.7";m.settings= -[];m.models={};m.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0};m.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",src:null};m.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std", -sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null};m.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bJQueryUI:!1,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:!1,bSortClasses:!0,bStateSave:!1, -fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(a){return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g,this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((-1===a.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+a.sInstance+"_"+location.pathname))}catch(b){}},fnStateLoadParams:null, -fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(-1===a.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+a.sInstance+"_"+location.pathname,JSON.stringify(b))}catch(c){}},fnStateSaveParams:null,iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",sSortDescending:": activate to sort column descending"},oPaginate:{sFirst:"First",sLast:"Last",sNext:"Next",sPrevious:"Previous"}, -sEmptyTable:"",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries",sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"Processing...",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:""},oSearch:h.extend({},m.models.oSearch),sAjaxDataProp:"data",sAjaxSource:null,sDom:"lfrtip",searchDelay:null, -sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null};W(m.defaults);m.defaults.column={aDataSort:null,iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};W(m.defaults.column);m.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null, -bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,bScrollbarLeft:!1},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[], -sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",iStateDuration:0,aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null, -bAjaxDataGet:!0,jqXHR:null,json:k,oAjaxData:k,fnServerData:null,aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,bJUI:null,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==B(this)?1*this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==B(this)?1*this._iRecordsDisplay: -this.aiDisplay.length},fnDisplayEnd:function(){var a=this._iDisplayLength,b=this._iDisplayStart,c=b+a,e=this.aiDisplay.length,d=this.oFeatures,f=d.bPaginate;return d.bServerSide?!1===f||-1===a?b+e:Math.min(b+a,this._iRecordsDisplay):!f||c>e||-1===a?e:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{}};m.ext=u={buttons:{},classes:{},errMode:"alert",feature:[],search:[],selector:{cell:[],column:[],row:[]},internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{}, -header:{}},order:{},type:{detect:[],search:{},order:{}},_unique:0,fnVersionCheck:m.fnVersionCheck,iApiIndex:0,oJUIClasses:{},sVersion:m.version};h.extend(u,{afnFiltering:u.search,aTypes:u.type.detect,ofnSearch:u.type.search,oSort:u.type.order,afnSortData:u.order,aoFeatures:u.feature,oApi:u.internal,oStdClasses:u.classes,oPagination:u.pager});h.extend(m.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",sPageButtonDisabled:"disabled",sStripeOdd:"odd", -sStripeEven:"even",sRowEmpty:"dataTables_empty",sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_asc_disabled",sSortableDesc:"sorting_desc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"",sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead", -sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",sJUIHeader:"",sJUIFooter:""});var Da="",Da="",F=Da+"ui-state-default",ja=Da+"css_right ui-icon ui-icon-",Xb=Da+"fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix";h.extend(m.ext.oJUIClasses, -m.ext.classes,{sPageButton:"fg-button ui-button "+F,sPageButtonActive:"ui-state-disabled",sPageButtonDisabled:"ui-state-disabled",sPaging:"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi ui-buttonset-multi paging_",sSortAsc:F+" sorting_asc",sSortDesc:F+" sorting_desc",sSortable:F+" sorting",sSortableAsc:F+" sorting_asc_disabled",sSortableDesc:F+" sorting_desc_disabled",sSortableNone:F+" sorting_disabled",sSortJUIAsc:ja+"triangle-1-n",sSortJUIDesc:ja+"triangle-1-s",sSortJUI:ja+"carat-2-n-s", -sSortJUIAscAllowed:ja+"carat-1-n",sSortJUIDescAllowed:ja+"carat-1-s",sSortJUIWrapper:"DataTables_sort_wrapper",sSortIcon:"DataTables_sort_icon",sScrollHead:"dataTables_scrollHead "+F,sScrollFoot:"dataTables_scrollFoot "+F,sHeaderTH:F,sFooterTH:F,sJUIHeader:Xb+" ui-corner-tl ui-corner-tr",sJUIFooter:Xb+" ui-corner-bl ui-corner-br"});var Mb=m.ext.pager;h.extend(Mb,{simple:function(){return["previous","next"]},full:function(){return["first","previous","next","last"]},simple_numbers:function(a,b){return["previous", -Wa(a,b),"next"]},full_numbers:function(a,b){return["first","previous",Wa(a,b),"next","last"]},_numbers:Wa,numbers_length:7});h.extend(!0,m.ext.renderer,{pageButton:{_:function(a,b,c,e,d,f){var g=a.oClasses,j=a.oLanguage.oPaginate,i,k,l=0,m=function(b,e){var n,r,t,s,u=function(b){Ta(a,b.data.action,true)};n=0;for(r=e.length;n<r;n++){s=e[n];if(h.isArray(s)){t=h("<"+(s.DT_el||"div")+"/>").appendTo(b);m(t,s)}else{k=i="";switch(s){case "ellipsis":b.append('<span class="ellipsis">&#x2026;</span>');break; -case "first":i=j.sFirst;k=s+(d>0?"":" "+g.sPageButtonDisabled);break;case "previous":i=j.sPrevious;k=s+(d>0?"":" "+g.sPageButtonDisabled);break;case "next":i=j.sNext;k=s+(d<f-1?"":" "+g.sPageButtonDisabled);break;case "last":i=j.sLast;k=s+(d<f-1?"":" "+g.sPageButtonDisabled);break;default:i=s+1;k=d===s?g.sPageButtonActive:""}if(i){t=h("<a>",{"class":g.sPageButton+" "+k,"aria-controls":a.sTableId,"data-dt-idx":l,tabindex:a.iTabIndex,id:c===0&&typeof s==="string"?a.sTableId+"_"+s:null}).html(i).appendTo(b); -Va(t,{action:s},u);l++}}}},n;try{n=h(Q.activeElement).data("dt-idx")}catch(r){}m(h(b).empty(),e);n&&h(b).find("[data-dt-idx="+n+"]").focus()}}});h.extend(m.ext.type.detect,[function(a,b){var c=b.oLanguage.sDecimal;return Za(a,c)?"num"+c:null},function(a){if(a&&!(a instanceof Date)&&(!ac.test(a)||!bc.test(a)))return null;var b=Date.parse(a);return null!==b&&!isNaN(b)||J(a)?"date":null},function(a,b){var c=b.oLanguage.sDecimal;return Za(a,c,!0)?"num-fmt"+c:null},function(a,b){var c=b.oLanguage.sDecimal; -return Rb(a,c)?"html-num"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Rb(a,c,!0)?"html-num-fmt"+c:null},function(a){return J(a)||"string"===typeof a&&-1!==a.indexOf("<")?"html":null}]);h.extend(m.ext.type.search,{html:function(a){return J(a)?a:"string"===typeof a?a.replace(Ob," ").replace(Ba,""):""},string:function(a){return J(a)?a:"string"===typeof a?a.replace(Ob," "):a}});var Aa=function(a,b,c,e){if(0!==a&&(!a||"-"===a))return-Infinity;b&&(a=Qb(a,b));a.replace&&(c&&(a=a.replace(c,"")), -e&&(a=a.replace(e,"")));return 1*a};h.extend(u.type.order,{"date-pre":function(a){return Date.parse(a)||0},"html-pre":function(a){return J(a)?"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():a+""},"string-pre":function(a){return J(a)?"":"string"===typeof a?a.toLowerCase():!a.toString?"":a.toString()},"string-asc":function(a,b){return a<b?-1:a>b?1:0},"string-desc":function(a,b){return a<b?1:a>b?-1:0}});db("");h.extend(!0,m.ext.renderer,{header:{_:function(a,b,c,e){h(a.nTable).on("order.dt.DT",function(d, -f,g,h){if(a===f){d=c.idx;b.removeClass(c.sSortingClass+" "+e.sSortAsc+" "+e.sSortDesc).addClass(h[d]=="asc"?e.sSortAsc:h[d]=="desc"?e.sSortDesc:c.sSortingClass)}})},jqueryui:function(a,b,c,e){h("<div/>").addClass(e.sSortJUIWrapper).append(b.contents()).append(h("<span/>").addClass(e.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b);h(a.nTable).on("order.dt.DT",function(d,f,g,h){if(a===f){d=c.idx;b.removeClass(e.sSortAsc+" "+e.sSortDesc).addClass(h[d]=="asc"?e.sSortAsc:h[d]=="desc"?e.sSortDesc:c.sSortingClass); -b.find("span."+e.sSortIcon).removeClass(e.sSortJUIAsc+" "+e.sSortJUIDesc+" "+e.sSortJUI+" "+e.sSortJUIAscAllowed+" "+e.sSortJUIDescAllowed).addClass(h[d]=="asc"?e.sSortJUIAsc:h[d]=="desc"?e.sSortJUIDesc:c.sSortingClassJUI)}})}}});m.render={number:function(a,b,c,e){return{display:function(d){if("number"!==typeof d&&"string"!==typeof d)return d;var f=0>d?"-":"",d=Math.abs(parseFloat(d)),g=parseInt(d,10),d=c?b+(d-g).toFixed(c).substring(2):"";return f+(e||"")+g.toString().replace(/\B(?=(\d{3})+(?!\d))/g, -a)+d}}}};h.extend(m.ext.internal,{_fnExternApiFunc:Nb,_fnBuildAjax:ra,_fnAjaxUpdate:kb,_fnAjaxParameters:tb,_fnAjaxUpdateDraw:ub,_fnAjaxDataSrc:sa,_fnAddColumn:Fa,_fnColumnOptions:ka,_fnAdjustColumnSizing:X,_fnVisibleToColumnIndex:la,_fnColumnIndexToVisible:$,_fnVisbleColumns:aa,_fnGetColumns:Z,_fnColumnTypes:Ha,_fnApplyColumnDefs:ib,_fnHungarianMap:W,_fnCamelToHungarian:H,_fnLanguageCompat:P,_fnBrowserDetect:gb,_fnAddData:K,_fnAddTr:ma,_fnNodeToDataIndex:function(a,b){return b._DT_RowIndex!==k?b._DT_RowIndex: -null},_fnNodeToColumnIndex:function(a,b,c){return h.inArray(c,a.aoData[b].anCells)},_fnGetCellData:x,_fnSetCellData:Ia,_fnSplitObjNotation:Ka,_fnGetObjectDataFn:R,_fnSetObjectDataFn:S,_fnGetDataMaster:La,_fnClearTable:oa,_fnDeleteIndex:pa,_fnInvalidate:ca,_fnGetRowElements:na,_fnCreateTr:Ja,_fnBuildHead:jb,_fnDrawHead:ea,_fnDraw:M,_fnReDraw:N,_fnAddOptionsHtml:mb,_fnDetectHeader:da,_fnGetUniqueThs:qa,_fnFeatureHtmlFilter:ob,_fnFilterComplete:fa,_fnFilterCustom:xb,_fnFilterColumn:wb,_fnFilter:vb,_fnFilterCreateSearch:Qa, -_fnEscapeRegex:va,_fnFilterData:yb,_fnFeatureHtmlInfo:rb,_fnUpdateInfo:Bb,_fnInfoMacros:Cb,_fnInitialise:ga,_fnInitComplete:ta,_fnLengthChange:Ra,_fnFeatureHtmlLength:nb,_fnFeatureHtmlPaginate:sb,_fnPageChange:Ta,_fnFeatureHtmlProcessing:pb,_fnProcessingDisplay:C,_fnFeatureHtmlTable:qb,_fnScrollDraw:Y,_fnApplyToChildren:G,_fnCalculateColumnWidths:Ga,_fnThrottle:ua,_fnConvertToWidth:Db,_fnScrollingWidthAdjust:Fb,_fnGetWidestNode:Eb,_fnGetMaxLenString:Gb,_fnStringToCss:s,_fnScrollBarWidth:Hb,_fnSortFlatten:U, -_fnSort:lb,_fnSortAria:Jb,_fnSortListener:Ua,_fnSortAttachListener:Oa,_fnSortingClasses:xa,_fnSortData:Ib,_fnSaveState:ya,_fnLoadState:Kb,_fnSettingsFromNode:za,_fnLog:I,_fnMap:E,_fnBindAction:Va,_fnCallbackReg:z,_fnCallbackFire:w,_fnLengthOverflow:Sa,_fnRenderer:Pa,_fnDataSource:B,_fnRowAttributes:Ma,_fnCalculateEnd:function(){}});h.fn.dataTable=m;h.fn.dataTableSettings=m.settings;h.fn.dataTableExt=m.ext;h.fn.DataTable=function(a){return h(this).dataTable(a).api()};h.each(m,function(a,b){h.fn.DataTable[a]= -b});return h.fn.dataTable};"function"===typeof define&&define.amd?define("datatables",["jquery"],P):"object"===typeof exports?module.exports=P(require("jquery")):jQuery&&!jQuery.fn.dataTable&&P(jQuery)})(window,document); diff --git a/assets/plugins/datatables/jquery.dataTables_themeroller.css b/assets/plugins/datatables/jquery.dataTables_themeroller.css deleted file mode 100644 index 1426a44a..00000000 --- a/assets/plugins/datatables/jquery.dataTables_themeroller.css +++ /dev/null @@ -1,416 +0,0 @@ -/* - * Table styles - */ -table.dataTable { - width: 100%; - margin: 0 auto; - clear: both; - border-collapse: separate; - border-spacing: 0; - /* - * Header and footer styles - */ - /* - * Body styles - */ -} -table.dataTable thead th, -table.dataTable thead td, -table.dataTable tfoot th, -table.dataTable tfoot td { - padding: 4px 10px; -} -table.dataTable thead th, -table.dataTable tfoot th { - font-weight: bold; -} -table.dataTable thead th:active, -table.dataTable thead td:active { - outline: none; -} -table.dataTable thead .sorting_asc, -table.dataTable thead .sorting_desc, -table.dataTable thead .sorting { - cursor: pointer; - *cursor: hand; -} -table.dataTable thead th div.DataTables_sort_wrapper { - position: relative; - padding-right: 10px; -} -table.dataTable thead th div.DataTables_sort_wrapper span { - position: absolute; - top: 50%; - margin-top: -8px; - right: -5px; -} -table.dataTable thead th.ui-state-default { - border-right-width: 0; -} -table.dataTable thead th.ui-state-default:last-child { - border-right-width: 1px; -} -table.dataTable tbody tr { - background-color: #ffffff; -} -table.dataTable tbody tr.selected { - background-color: #B0BED9; -} -table.dataTable tbody th, -table.dataTable tbody td { - padding: 8px 10px; -} -table.dataTable th.center, -table.dataTable td.center, -table.dataTable td.dataTables_empty { - text-align: center; -} -table.dataTable th.right, -table.dataTable td.right { - text-align: right; -} -table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td { - border-top: 1px solid #ddd; -} -table.dataTable.row-border tbody tr:first-child th, -table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th, -table.dataTable.display tbody tr:first-child td { - border-top: none; -} -table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td { - border-top: 1px solid #ddd; - border-right: 1px solid #ddd; -} -table.dataTable.cell-border tbody tr th:first-child, -table.dataTable.cell-border tbody tr td:first-child { - border-left: 1px solid #ddd; -} -table.dataTable.cell-border tbody tr:first-child th, -table.dataTable.cell-border tbody tr:first-child td { - border-top: none; -} -table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd { - background-color: #f9f9f9; -} -table.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected { - background-color: #abb9d3; -} -table.dataTable.hover tbody tr:hover, -table.dataTable.hover tbody tr.odd:hover, -table.dataTable.hover tbody tr.even:hover, table.dataTable.display tbody tr:hover, -table.dataTable.display tbody tr.odd:hover, -table.dataTable.display tbody tr.even:hover { - background-color: whitesmoke; -} -table.dataTable.hover tbody tr:hover.selected, -table.dataTable.hover tbody tr.odd:hover.selected, -table.dataTable.hover tbody tr.even:hover.selected, table.dataTable.display tbody tr:hover.selected, -table.dataTable.display tbody tr.odd:hover.selected, -table.dataTable.display tbody tr.even:hover.selected { - background-color: #a9b7d1; -} -table.dataTable.order-column tbody tr > .sorting_1, -table.dataTable.order-column tbody tr > .sorting_2, -table.dataTable.order-column tbody tr > .sorting_3, table.dataTable.display tbody tr > .sorting_1, -table.dataTable.display tbody tr > .sorting_2, -table.dataTable.display tbody tr > .sorting_3 { - background-color: #f9f9f9; -} -table.dataTable.order-column tbody tr.selected > .sorting_1, -table.dataTable.order-column tbody tr.selected > .sorting_2, -table.dataTable.order-column tbody tr.selected > .sorting_3, table.dataTable.display tbody tr.selected > .sorting_1, -table.dataTable.display tbody tr.selected > .sorting_2, -table.dataTable.display tbody tr.selected > .sorting_3 { - background-color: #acbad4; -} -table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 { - background-color: #f1f1f1; -} -table.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 { - background-color: #f3f3f3; -} -table.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 { - background-color: whitesmoke; -} -table.dataTable.display tbody tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 { - background-color: #a6b3cd; -} -table.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 { - background-color: #a7b5ce; -} -table.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 { - background-color: #a9b6d0; -} -table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 { - background-color: #f9f9f9; -} -table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 { - background-color: #fbfbfb; -} -table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 { - background-color: #fdfdfd; -} -table.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 { - background-color: #acbad4; -} -table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 { - background-color: #adbbd6; -} -table.dataTable.display tbody tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 { - background-color: #afbdd8; -} -table.dataTable.display tbody tr:hover > .sorting_1, -table.dataTable.display tbody tr.odd:hover > .sorting_1, -table.dataTable.display tbody tr.even:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1, -table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_1, -table.dataTable.order-column.hover tbody tr.even:hover > .sorting_1 { - background-color: #eaeaea; -} -table.dataTable.display tbody tr:hover > .sorting_2, -table.dataTable.display tbody tr.odd:hover > .sorting_2, -table.dataTable.display tbody tr.even:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2, -table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_2, -table.dataTable.order-column.hover tbody tr.even:hover > .sorting_2 { - background-color: #ebebeb; -} -table.dataTable.display tbody tr:hover > .sorting_3, -table.dataTable.display tbody tr.odd:hover > .sorting_3, -table.dataTable.display tbody tr.even:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3, -table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_3, -table.dataTable.order-column.hover tbody tr.even:hover > .sorting_3 { - background-color: #eeeeee; -} -table.dataTable.display tbody tr:hover.selected > .sorting_1, -table.dataTable.display tbody tr.odd:hover.selected > .sorting_1, -table.dataTable.display tbody tr.even:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1, -table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_1, -table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_1 { - background-color: #a1aec7; -} -table.dataTable.display tbody tr:hover.selected > .sorting_2, -table.dataTable.display tbody tr.odd:hover.selected > .sorting_2, -table.dataTable.display tbody tr.even:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2, -table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_2, -table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_2 { - background-color: #a2afc8; -} -table.dataTable.display tbody tr:hover.selected > .sorting_3, -table.dataTable.display tbody tr.odd:hover.selected > .sorting_3, -table.dataTable.display tbody tr.even:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3, -table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_3, -table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_3 { - background-color: #a4b2cb; -} -table.dataTable.nowrap th, table.dataTable.nowrap td { - white-space: nowrap; -} -table.dataTable.compact thead th, -table.dataTable.compact thead td { - padding: 5px 9px; -} -table.dataTable.compact tfoot th, -table.dataTable.compact tfoot td { - padding: 5px 9px 3px 9px; -} -table.dataTable.compact tbody th, -table.dataTable.compact tbody td { - padding: 4px 5px; -} -table.dataTable th.dt-left, -table.dataTable td.dt-left { - text-align: left; -} -table.dataTable th.dt-center, -table.dataTable td.dt-center, -table.dataTable td.dataTables_empty { - text-align: center; -} -table.dataTable th.dt-right, -table.dataTable td.dt-right { - text-align: right; -} -table.dataTable th.dt-justify, -table.dataTable td.dt-justify { - text-align: justify; -} -table.dataTable th.dt-nowrap, -table.dataTable td.dt-nowrap { - white-space: nowrap; -} -table.dataTable thead th.dt-head-left, -table.dataTable thead td.dt-head-left, -table.dataTable tfoot th.dt-head-left, -table.dataTable tfoot td.dt-head-left { - text-align: left; -} -table.dataTable thead th.dt-head-center, -table.dataTable thead td.dt-head-center, -table.dataTable tfoot th.dt-head-center, -table.dataTable tfoot td.dt-head-center { - text-align: center; -} -table.dataTable thead th.dt-head-right, -table.dataTable thead td.dt-head-right, -table.dataTable tfoot th.dt-head-right, -table.dataTable tfoot td.dt-head-right { - text-align: right; -} -table.dataTable thead th.dt-head-justify, -table.dataTable thead td.dt-head-justify, -table.dataTable tfoot th.dt-head-justify, -table.dataTable tfoot td.dt-head-justify { - text-align: justify; -} -table.dataTable thead th.dt-head-nowrap, -table.dataTable thead td.dt-head-nowrap, -table.dataTable tfoot th.dt-head-nowrap, -table.dataTable tfoot td.dt-head-nowrap { - white-space: nowrap; -} -table.dataTable tbody th.dt-body-left, -table.dataTable tbody td.dt-body-left { - text-align: left; -} -table.dataTable tbody th.dt-body-center, -table.dataTable tbody td.dt-body-center { - text-align: center; -} -table.dataTable tbody th.dt-body-right, -table.dataTable tbody td.dt-body-right { - text-align: right; -} -table.dataTable tbody th.dt-body-justify, -table.dataTable tbody td.dt-body-justify { - text-align: justify; -} -table.dataTable tbody th.dt-body-nowrap, -table.dataTable tbody td.dt-body-nowrap { - white-space: nowrap; -} - -table.dataTable, -table.dataTable th, -table.dataTable td { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} - -/* - * Control feature layout - */ -.dataTables_wrapper { - position: relative; - clear: both; - *zoom: 1; - zoom: 1; -} -.dataTables_wrapper .dataTables_length { - float: left; -} -.dataTables_wrapper .dataTables_filter { - float: right; - text-align: right; -} -.dataTables_wrapper .dataTables_filter input { - margin-left: 0.5em; -} -.dataTables_wrapper .dataTables_info { - clear: both; - float: left; - padding-top: 0.55em; -} -.dataTables_wrapper .dataTables_paginate { - float: right; - text-align: right; -} -.dataTables_wrapper .dataTables_paginate .fg-button { - box-sizing: border-box; - display: inline-block; - min-width: 1.5em; - padding: 0.5em; - margin-left: 2px; - text-align: center; - text-decoration: none !important; - cursor: pointer; - *cursor: hand; - color: #333 !important; - border: 1px solid transparent; -} -.dataTables_wrapper .dataTables_paginate .fg-button:active { - outline: none; -} -.dataTables_wrapper .dataTables_paginate .fg-button:first-child { - border-top-left-radius: 3px; - border-bottom-left-radius: 3px; -} -.dataTables_wrapper .dataTables_paginate .fg-button:last-child { - border-top-right-radius: 3px; - border-bottom-right-radius: 3px; -} -.dataTables_wrapper .dataTables_processing { - position: absolute; - top: 50%; - left: 50%; - width: 100%; - height: 40px; - margin-left: -50%; - margin-top: -25px; - padding-top: 20px; - text-align: center; - font-size: 1.2em; - background-color: white; - background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(25%, rgba(255, 255, 255, 0.9)), color-stop(75%, rgba(255, 255, 255, 0.9)), color-stop(100%, rgba(255, 255, 255, 0))); - /* Chrome,Safari4+ */ - background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); - /* Chrome10+,Safari5.1+ */ - background: -moz-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); - /* FF3.6+ */ - background: -ms-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); - /* IE10+ */ - background: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); - /* Opera 11.10+ */ - background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); - /* W3C */ -} -.dataTables_wrapper .dataTables_length, -.dataTables_wrapper .dataTables_filter, -.dataTables_wrapper .dataTables_info, -.dataTables_wrapper .dataTables_processing, -.dataTables_wrapper .dataTables_paginate { - color: #333; -} -.dataTables_wrapper .dataTables_scroll { - clear: both; -} -.dataTables_wrapper .dataTables_scrollBody { - *margin-top: -1px; - -webkit-overflow-scrolling: touch; -} -.dataTables_wrapper .ui-widget-header { - font-weight: normal; -} -.dataTables_wrapper .ui-toolbar { - padding: 8px; -} -.dataTables_wrapper:after { - visibility: hidden; - display: block; - content: ""; - clear: both; - height: 0; -} - -@media screen and (max-width: 767px) { - .dataTables_wrapper .dataTables_length, - .dataTables_wrapper .dataTables_filter, - .dataTables_wrapper .dataTables_info, - .dataTables_wrapper .dataTables_paginate { - float: none; - text-align: center; - } - .dataTables_wrapper .dataTables_filter, - .dataTables_wrapper .dataTables_paginate { - margin-top: 0.5em; - } -} diff --git a/assets/plugins/datepicker/bootstrap-datepicker.js b/assets/plugins/datepicker/bootstrap-datepicker.js deleted file mode 100644 index e53af251..00000000 --- a/assets/plugins/datepicker/bootstrap-datepicker.js +++ /dev/null @@ -1,1671 +0,0 @@ -/* ========================================================= - * bootstrap-datepicker.js - * Repo: https://github.com/eternicode/bootstrap-datepicker/ - * Demo: http://eternicode.github.io/bootstrap-datepicker/ - * Docs: http://bootstrap-datepicker.readthedocs.org/ - * Forked from http://www.eyecon.ro/bootstrap-datepicker - * ========================================================= - * Started by Stefan Petre; improvements by Andrew Rowls + contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================= */ - -(function($, undefined){ - - var $window = $(window); - - function UTCDate(){ - return new Date(Date.UTC.apply(Date, arguments)); - } - function UTCToday(){ - var today = new Date(); - return UTCDate(today.getFullYear(), today.getMonth(), today.getDate()); - } - function alias(method){ - return function(){ - return this[method].apply(this, arguments); - }; - } - - var DateArray = (function(){ - var extras = { - get: function(i){ - return this.slice(i)[0]; - }, - contains: function(d){ - // Array.indexOf is not cross-browser; - // $.inArray doesn't work with Dates - var val = d && d.valueOf(); - for (var i=0, l=this.length; i < l; i++) - if (this[i].valueOf() === val) - return i; - return -1; - }, - remove: function(i){ - this.splice(i,1); - }, - replace: function(new_array){ - if (!new_array) - return; - if (!$.isArray(new_array)) - new_array = [new_array]; - this.clear(); - this.push.apply(this, new_array); - }, - clear: function(){ - this.splice(0); - }, - copy: function(){ - var a = new DateArray(); - a.replace(this); - return a; - } - }; - - return function(){ - var a = []; - a.push.apply(a, arguments); - $.extend(a, extras); - return a; - }; - })(); - - - // Picker object - - var Datepicker = function(element, options){ - this.dates = new DateArray(); - this.viewDate = UTCToday(); - this.focusDate = null; - - this._process_options(options); - - this.element = $(element); - this.isInline = false; - this.isInput = this.element.is('input'); - this.component = this.element.is('.date') ? this.element.find('.add-on, .input-group-addon, .btn') : false; - this.hasInput = this.component && this.element.find('input').length; - if (this.component && this.component.length === 0) - this.component = false; - - this.picker = $(DPGlobal.template); - this._buildEvents(); - this._attachEvents(); - - if (this.isInline){ - this.picker.addClass('datepicker-inline').appendTo(this.element); - } - else { - this.picker.addClass('datepicker-dropdown dropdown-menu'); - } - - if (this.o.rtl){ - this.picker.addClass('datepicker-rtl'); - } - - this.viewMode = this.o.startView; - - if (this.o.calendarWeeks) - this.picker.find('tfoot th.today') - .attr('colspan', function(i, val){ - return parseInt(val) + 1; - }); - - this._allow_update = false; - - this.setStartDate(this._o.startDate); - this.setEndDate(this._o.endDate); - this.setDaysOfWeekDisabled(this.o.daysOfWeekDisabled); - - this.fillDow(); - this.fillMonths(); - - this._allow_update = true; - - this.update(); - this.showMode(); - - if (this.isInline){ - this.show(); - } - }; - - Datepicker.prototype = { - constructor: Datepicker, - - _process_options: function(opts){ - // Store raw options for reference - this._o = $.extend({}, this._o, opts); - // Processed options - var o = this.o = $.extend({}, this._o); - - // Check if "de-DE" style date is available, if not language should - // fallback to 2 letter code eg "de" - var lang = o.language; - if (!dates[lang]){ - lang = lang.split('-')[0]; - if (!dates[lang]) - lang = defaults.language; - } - o.language = lang; - - switch (o.startView){ - case 2: - case 'decade': - o.startView = 2; - break; - case 1: - case 'year': - o.startView = 1; - break; - default: - o.startView = 0; - } - - switch (o.minViewMode){ - case 1: - case 'months': - o.minViewMode = 1; - break; - case 2: - case 'years': - o.minViewMode = 2; - break; - default: - o.minViewMode = 0; - } - - o.startView = Math.max(o.startView, o.minViewMode); - - // true, false, or Number > 0 - if (o.multidate !== true){ - o.multidate = Number(o.multidate) || false; - if (o.multidate !== false) - o.multidate = Math.max(0, o.multidate); - else - o.multidate = 1; - } - o.multidateSeparator = String(o.multidateSeparator); - - o.weekStart %= 7; - o.weekEnd = ((o.weekStart + 6) % 7); - - var format = DPGlobal.parseFormat(o.format); - if (o.startDate !== -Infinity){ - if (!!o.startDate){ - if (o.startDate instanceof Date) - o.startDate = this._local_to_utc(this._zero_time(o.startDate)); - else - o.startDate = DPGlobal.parseDate(o.startDate, format, o.language); - } - else { - o.startDate = -Infinity; - } - } - if (o.endDate !== Infinity){ - if (!!o.endDate){ - if (o.endDate instanceof Date) - o.endDate = this._local_to_utc(this._zero_time(o.endDate)); - else - o.endDate = DPGlobal.parseDate(o.endDate, format, o.language); - } - else { - o.endDate = Infinity; - } - } - - o.daysOfWeekDisabled = o.daysOfWeekDisabled||[]; - if (!$.isArray(o.daysOfWeekDisabled)) - o.daysOfWeekDisabled = o.daysOfWeekDisabled.split(/[,\s]*/); - o.daysOfWeekDisabled = $.map(o.daysOfWeekDisabled, function(d){ - return parseInt(d, 10); - }); - - var plc = String(o.orientation).toLowerCase().split(/\s+/g), - _plc = o.orientation.toLowerCase(); - plc = $.grep(plc, function(word){ - return (/^auto|left|right|top|bottom$/).test(word); - }); - o.orientation = {x: 'auto', y: 'auto'}; - if (!_plc || _plc === 'auto') - ; // no action - else if (plc.length === 1){ - switch (plc[0]){ - case 'top': - case 'bottom': - o.orientation.y = plc[0]; - break; - case 'left': - case 'right': - o.orientation.x = plc[0]; - break; - } - } - else { - _plc = $.grep(plc, function(word){ - return (/^left|right$/).test(word); - }); - o.orientation.x = _plc[0] || 'auto'; - - _plc = $.grep(plc, function(word){ - return (/^top|bottom$/).test(word); - }); - o.orientation.y = _plc[0] || 'auto'; - } - }, - _events: [], - _secondaryEvents: [], - _applyEvents: function(evs){ - for (var i=0, el, ch, ev; i < evs.length; i++){ - el = evs[i][0]; - if (evs[i].length === 2){ - ch = undefined; - ev = evs[i][1]; - } - else if (evs[i].length === 3){ - ch = evs[i][1]; - ev = evs[i][2]; - } - el.on(ev, ch); - } - }, - _unapplyEvents: function(evs){ - for (var i=0, el, ev, ch; i < evs.length; i++){ - el = evs[i][0]; - if (evs[i].length === 2){ - ch = undefined; - ev = evs[i][1]; - } - else if (evs[i].length === 3){ - ch = evs[i][1]; - ev = evs[i][2]; - } - el.off(ev, ch); - } - }, - _buildEvents: function(){ - if (this.isInput){ // single input - this._events = [ - [this.element, { - focus: $.proxy(this.show, this), - keyup: $.proxy(function(e){ - if ($.inArray(e.keyCode, [27,37,39,38,40,32,13,9]) === -1) - this.update(); - }, this), - keydown: $.proxy(this.keydown, this) - }] - ]; - } - else if (this.component && this.hasInput){ // component: input + button - this._events = [ - // For components that are not readonly, allow keyboard nav - [this.element.find('input'), { - focus: $.proxy(this.show, this), - keyup: $.proxy(function(e){ - if ($.inArray(e.keyCode, [27,37,39,38,40,32,13,9]) === -1) - this.update(); - }, this), - keydown: $.proxy(this.keydown, this) - }], - [this.component, { - click: $.proxy(this.show, this) - }] - ]; - } - else if (this.element.is('div')){ // inline datepicker - this.isInline = true; - } - else { - this._events = [ - [this.element, { - click: $.proxy(this.show, this) - }] - ]; - } - this._events.push( - // Component: listen for blur on element descendants - [this.element, '*', { - blur: $.proxy(function(e){ - this._focused_from = e.target; - }, this) - }], - // Input: listen for blur on element - [this.element, { - blur: $.proxy(function(e){ - this._focused_from = e.target; - }, this) - }] - ); - - this._secondaryEvents = [ - [this.picker, { - click: $.proxy(this.click, this) - }], - [$(window), { - resize: $.proxy(this.place, this) - }], - [$(document), { - 'mousedown touchstart': $.proxy(function(e){ - // Clicked outside the datepicker, hide it - if (!( - this.element.is(e.target) || - this.element.find(e.target).length || - this.picker.is(e.target) || - this.picker.find(e.target).length - )){ - this.hide(); - } - }, this) - }] - ]; - }, - _attachEvents: function(){ - this._detachEvents(); - this._applyEvents(this._events); - }, - _detachEvents: function(){ - this._unapplyEvents(this._events); - }, - _attachSecondaryEvents: function(){ - this._detachSecondaryEvents(); - this._applyEvents(this._secondaryEvents); - }, - _detachSecondaryEvents: function(){ - this._unapplyEvents(this._secondaryEvents); - }, - _trigger: function(event, altdate){ - var date = altdate || this.dates.get(-1), - local_date = this._utc_to_local(date); - - this.element.trigger({ - type: event, - date: local_date, - dates: $.map(this.dates, this._utc_to_local), - format: $.proxy(function(ix, format){ - if (arguments.length === 0){ - ix = this.dates.length - 1; - format = this.o.format; - } - else if (typeof ix === 'string'){ - format = ix; - ix = this.dates.length - 1; - } - format = format || this.o.format; - var date = this.dates.get(ix); - return DPGlobal.formatDate(date, format, this.o.language); - }, this) - }); - }, - - show: function(){ - if (!this.isInline) - this.picker.appendTo('body'); - this.picker.show(); - this.place(); - this._attachSecondaryEvents(); - this._trigger('show'); - }, - - hide: function(){ - if (this.isInline) - return; - if (!this.picker.is(':visible')) - return; - this.focusDate = null; - this.picker.hide().detach(); - this._detachSecondaryEvents(); - this.viewMode = this.o.startView; - this.showMode(); - - if ( - this.o.forceParse && - ( - this.isInput && this.element.val() || - this.hasInput && this.element.find('input').val() - ) - ) - this.setValue(); - this._trigger('hide'); - }, - - remove: function(){ - this.hide(); - this._detachEvents(); - this._detachSecondaryEvents(); - this.picker.remove(); - delete this.element.data().datepicker; - if (!this.isInput){ - delete this.element.data().date; - } - }, - - _utc_to_local: function(utc){ - return utc && new Date(utc.getTime() + (utc.getTimezoneOffset()*60000)); - }, - _local_to_utc: function(local){ - return local && new Date(local.getTime() - (local.getTimezoneOffset()*60000)); - }, - _zero_time: function(local){ - return local && new Date(local.getFullYear(), local.getMonth(), local.getDate()); - }, - _zero_utc_time: function(utc){ - return utc && new Date(Date.UTC(utc.getUTCFullYear(), utc.getUTCMonth(), utc.getUTCDate())); - }, - - getDates: function(){ - return $.map(this.dates, this._utc_to_local); - }, - - getUTCDates: function(){ - return $.map(this.dates, function(d){ - return new Date(d); - }); - }, - - getDate: function(){ - return this._utc_to_local(this.getUTCDate()); - }, - - getUTCDate: function(){ - return new Date(this.dates.get(-1)); - }, - - setDates: function(){ - var args = $.isArray(arguments[0]) ? arguments[0] : arguments; - this.update.apply(this, args); - this._trigger('changeDate'); - this.setValue(); - }, - - setUTCDates: function(){ - var args = $.isArray(arguments[0]) ? arguments[0] : arguments; - this.update.apply(this, $.map(args, this._utc_to_local)); - this._trigger('changeDate'); - this.setValue(); - }, - - setDate: alias('setDates'), - setUTCDate: alias('setUTCDates'), - - setValue: function(){ - var formatted = this.getFormattedDate(); - if (!this.isInput){ - if (this.component){ - this.element.find('input').val(formatted).change(); - } - } - else { - this.element.val(formatted).change(); - } - }, - - getFormattedDate: function(format){ - if (format === undefined) - format = this.o.format; - - var lang = this.o.language; - return $.map(this.dates, function(d){ - return DPGlobal.formatDate(d, format, lang); - }).join(this.o.multidateSeparator); - }, - - setStartDate: function(startDate){ - this._process_options({startDate: startDate}); - this.update(); - this.updateNavArrows(); - }, - - setEndDate: function(endDate){ - this._process_options({endDate: endDate}); - this.update(); - this.updateNavArrows(); - }, - - setDaysOfWeekDisabled: function(daysOfWeekDisabled){ - this._process_options({daysOfWeekDisabled: daysOfWeekDisabled}); - this.update(); - this.updateNavArrows(); - }, - - place: function(){ - if (this.isInline) - return; - var calendarWidth = this.picker.outerWidth(), - calendarHeight = this.picker.outerHeight(), - visualPadding = 10, - windowWidth = $window.width(), - windowHeight = $window.height(), - scrollTop = $window.scrollTop(); - - var zIndex = parseInt(this.element.parents().filter(function(){ - return $(this).css('z-index') !== 'auto'; - }).first().css('z-index'))+10; - var offset = this.component ? this.component.parent().offset() : this.element.offset(); - var height = this.component ? this.component.outerHeight(true) : this.element.outerHeight(false); - var width = this.component ? this.component.outerWidth(true) : this.element.outerWidth(false); - var left = offset.left, - top = offset.top; - - this.picker.removeClass( - 'datepicker-orient-top datepicker-orient-bottom '+ - 'datepicker-orient-right datepicker-orient-left' - ); - - if (this.o.orientation.x !== 'auto'){ - this.picker.addClass('datepicker-orient-' + this.o.orientation.x); - if (this.o.orientation.x === 'right') - left -= calendarWidth - width; - } - // auto x orientation is best-placement: if it crosses a window - // edge, fudge it sideways - else { - // Default to left - this.picker.addClass('datepicker-orient-left'); - if (offset.left < 0) - left -= offset.left - visualPadding; - else if (offset.left + calendarWidth > windowWidth) - left = windowWidth - calendarWidth - visualPadding; - } - - // auto y orientation is best-situation: top or bottom, no fudging, - // decision based on which shows more of the calendar - var yorient = this.o.orientation.y, - top_overflow, bottom_overflow; - if (yorient === 'auto'){ - top_overflow = -scrollTop + offset.top - calendarHeight; - bottom_overflow = scrollTop + windowHeight - (offset.top + height + calendarHeight); - if (Math.max(top_overflow, bottom_overflow) === bottom_overflow) - yorient = 'top'; - else - yorient = 'bottom'; - } - this.picker.addClass('datepicker-orient-' + yorient); - if (yorient === 'top') - top += height; - else - top -= calendarHeight + parseInt(this.picker.css('padding-top')); - - this.picker.css({ - top: top, - left: left, - zIndex: zIndex - }); - }, - - _allow_update: true, - update: function(){ - if (!this._allow_update) - return; - - var oldDates = this.dates.copy(), - dates = [], - fromArgs = false; - if (arguments.length){ - $.each(arguments, $.proxy(function(i, date){ - if (date instanceof Date) - date = this._local_to_utc(date); - dates.push(date); - }, this)); - fromArgs = true; - } - else { - dates = this.isInput - ? this.element.val() - : this.element.data('date') || this.element.find('input').val(); - if (dates && this.o.multidate) - dates = dates.split(this.o.multidateSeparator); - else - dates = [dates]; - delete this.element.data().date; - } - - dates = $.map(dates, $.proxy(function(date){ - return DPGlobal.parseDate(date, this.o.format, this.o.language); - }, this)); - dates = $.grep(dates, $.proxy(function(date){ - return ( - date < this.o.startDate || - date > this.o.endDate || - !date - ); - }, this), true); - this.dates.replace(dates); - - if (this.dates.length) - this.viewDate = new Date(this.dates.get(-1)); - else if (this.viewDate < this.o.startDate) - this.viewDate = new Date(this.o.startDate); - else if (this.viewDate > this.o.endDate) - this.viewDate = new Date(this.o.endDate); - - if (fromArgs){ - // setting date by clicking - this.setValue(); - } - else if (dates.length){ - // setting date by typing - if (String(oldDates) !== String(this.dates)) - this._trigger('changeDate'); - } - if (!this.dates.length && oldDates.length) - this._trigger('clearDate'); - - this.fill(); - }, - - fillDow: function(){ - var dowCnt = this.o.weekStart, - html = '<tr>'; - if (this.o.calendarWeeks){ - var cell = '<th class="cw">&nbsp;</th>'; - html += cell; - this.picker.find('.datepicker-days thead tr:first-child').prepend(cell); - } - while (dowCnt < this.o.weekStart + 7){ - html += '<th class="dow">'+dates[this.o.language].daysMin[(dowCnt++)%7]+'</th>'; - } - html += '</tr>'; - this.picker.find('.datepicker-days thead').append(html); - }, - - fillMonths: function(){ - var html = '', - i = 0; - while (i < 12){ - html += '<span class="month">'+dates[this.o.language].monthsShort[i++]+'</span>'; - } - this.picker.find('.datepicker-months td').html(html); - }, - - setRange: function(range){ - if (!range || !range.length) - delete this.range; - else - this.range = $.map(range, function(d){ - return d.valueOf(); - }); - this.fill(); - }, - - getClassNames: function(date){ - var cls = [], - year = this.viewDate.getUTCFullYear(), - month = this.viewDate.getUTCMonth(), - today = new Date(); - if (date.getUTCFullYear() < year || (date.getUTCFullYear() === year && date.getUTCMonth() < month)){ - cls.push('old'); - } - else if (date.getUTCFullYear() > year || (date.getUTCFullYear() === year && date.getUTCMonth() > month)){ - cls.push('new'); - } - if (this.focusDate && date.valueOf() === this.focusDate.valueOf()) - cls.push('focused'); - // Compare internal UTC date with local today, not UTC today - if (this.o.todayHighlight && - date.getUTCFullYear() === today.getFullYear() && - date.getUTCMonth() === today.getMonth() && - date.getUTCDate() === today.getDate()){ - cls.push('today'); - } - if (this.dates.contains(date) !== -1) - cls.push('active'); - if (date.valueOf() < this.o.startDate || date.valueOf() > this.o.endDate || - $.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1){ - cls.push('disabled'); - } - if (this.range){ - if (date > this.range[0] && date < this.range[this.range.length-1]){ - cls.push('range'); - } - if ($.inArray(date.valueOf(), this.range) !== -1){ - cls.push('selected'); - } - } - return cls; - }, - - fill: function(){ - var d = new Date(this.viewDate), - year = d.getUTCFullYear(), - month = d.getUTCMonth(), - startYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity, - startMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity, - endYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity, - endMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity, - todaytxt = dates[this.o.language].today || dates['en'].today || '', - cleartxt = dates[this.o.language].clear || dates['en'].clear || '', - tooltip; - this.picker.find('.datepicker-days thead th.datepicker-switch') - .text(dates[this.o.language].months[month]+' '+year); - this.picker.find('tfoot th.today') - .text(todaytxt) - .toggle(this.o.todayBtn !== false); - this.picker.find('tfoot th.clear') - .text(cleartxt) - .toggle(this.o.clearBtn !== false); - this.updateNavArrows(); - this.fillMonths(); - var prevMonth = UTCDate(year, month-1, 28), - day = DPGlobal.getDaysInMonth(prevMonth.getUTCFullYear(), prevMonth.getUTCMonth()); - prevMonth.setUTCDate(day); - prevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.o.weekStart + 7)%7); - var nextMonth = new Date(prevMonth); - nextMonth.setUTCDate(nextMonth.getUTCDate() + 42); - nextMonth = nextMonth.valueOf(); - var html = []; - var clsName; - while (prevMonth.valueOf() < nextMonth){ - if (prevMonth.getUTCDay() === this.o.weekStart){ - html.push('<tr>'); - if (this.o.calendarWeeks){ - // ISO 8601: First week contains first thursday. - // ISO also states week starts on Monday, but we can be more abstract here. - var - // Start of current week: based on weekstart/current date - ws = new Date(+prevMonth + (this.o.weekStart - prevMonth.getUTCDay() - 7) % 7 * 864e5), - // Thursday of this week - th = new Date(Number(ws) + (7 + 4 - ws.getUTCDay()) % 7 * 864e5), - // First Thursday of year, year from thursday - yth = new Date(Number(yth = UTCDate(th.getUTCFullYear(), 0, 1)) + (7 + 4 - yth.getUTCDay())%7*864e5), - // Calendar week: ms between thursdays, div ms per day, div 7 days - calWeek = (th - yth) / 864e5 / 7 + 1; - html.push('<td class="cw">'+ calWeek +'</td>'); - - } - } - clsName = this.getClassNames(prevMonth); - clsName.push('day'); - - if (this.o.beforeShowDay !== $.noop){ - var before = this.o.beforeShowDay(this._utc_to_local(prevMonth)); - if (before === undefined) - before = {}; - else if (typeof(before) === 'boolean') - before = {enabled: before}; - else if (typeof(before) === 'string') - before = {classes: before}; - if (before.enabled === false) - clsName.push('disabled'); - if (before.classes) - clsName = clsName.concat(before.classes.split(/\s+/)); - if (before.tooltip) - tooltip = before.tooltip; - } - - clsName = $.unique(clsName); - html.push('<td class="'+clsName.join(' ')+'"' + (tooltip ? ' title="'+tooltip+'"' : '') + '>'+prevMonth.getUTCDate() + '</td>'); - if (prevMonth.getUTCDay() === this.o.weekEnd){ - html.push('</tr>'); - } - prevMonth.setUTCDate(prevMonth.getUTCDate()+1); - } - this.picker.find('.datepicker-days tbody').empty().append(html.join('')); - - var months = this.picker.find('.datepicker-months') - .find('th:eq(1)') - .text(year) - .end() - .find('span').removeClass('active'); - - $.each(this.dates, function(i, d){ - if (d.getUTCFullYear() === year) - months.eq(d.getUTCMonth()).addClass('active'); - }); - - if (year < startYear || year > endYear){ - months.addClass('disabled'); - } - if (year === startYear){ - months.slice(0, startMonth).addClass('disabled'); - } - if (year === endYear){ - months.slice(endMonth+1).addClass('disabled'); - } - - html = ''; - year = parseInt(year/10, 10) * 10; - var yearCont = this.picker.find('.datepicker-years') - .find('th:eq(1)') - .text(year + '-' + (year + 9)) - .end() - .find('td'); - year -= 1; - var years = $.map(this.dates, function(d){ - return d.getUTCFullYear(); - }), - classes; - for (var i = -1; i < 11; i++){ - classes = ['year']; - if (i === -1) - classes.push('old'); - else if (i === 10) - classes.push('new'); - if ($.inArray(year, years) !== -1) - classes.push('active'); - if (year < startYear || year > endYear) - classes.push('disabled'); - html += '<span class="' + classes.join(' ') + '">'+year+'</span>'; - year += 1; - } - yearCont.html(html); - }, - - updateNavArrows: function(){ - if (!this._allow_update) - return; - - var d = new Date(this.viewDate), - year = d.getUTCFullYear(), - month = d.getUTCMonth(); - switch (this.viewMode){ - case 0: - if (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear() && month <= this.o.startDate.getUTCMonth()){ - this.picker.find('.prev').css({visibility: 'hidden'}); - } - else { - this.picker.find('.prev').css({visibility: 'visible'}); - } - if (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear() && month >= this.o.endDate.getUTCMonth()){ - this.picker.find('.next').css({visibility: 'hidden'}); - } - else { - this.picker.find('.next').css({visibility: 'visible'}); - } - break; - case 1: - case 2: - if (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear()){ - this.picker.find('.prev').css({visibility: 'hidden'}); - } - else { - this.picker.find('.prev').css({visibility: 'visible'}); - } - if (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear()){ - this.picker.find('.next').css({visibility: 'hidden'}); - } - else { - this.picker.find('.next').css({visibility: 'visible'}); - } - break; - } - }, - - click: function(e){ - e.preventDefault(); - var target = $(e.target).closest('span, td, th'), - year, month, day; - if (target.length === 1){ - switch (target[0].nodeName.toLowerCase()){ - case 'th': - switch (target[0].className){ - case 'datepicker-switch': - this.showMode(1); - break; - case 'prev': - case 'next': - var dir = DPGlobal.modes[this.viewMode].navStep * (target[0].className === 'prev' ? -1 : 1); - switch (this.viewMode){ - case 0: - this.viewDate = this.moveMonth(this.viewDate, dir); - this._trigger('changeMonth', this.viewDate); - break; - case 1: - case 2: - this.viewDate = this.moveYear(this.viewDate, dir); - if (this.viewMode === 1) - this._trigger('changeYear', this.viewDate); - break; - } - this.fill(); - break; - case 'today': - var date = new Date(); - date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0); - - this.showMode(-2); - var which = this.o.todayBtn === 'linked' ? null : 'view'; - this._setDate(date, which); - break; - case 'clear': - var element; - if (this.isInput) - element = this.element; - else if (this.component) - element = this.element.find('input'); - if (element) - element.val("").change(); - this.update(); - this._trigger('changeDate'); - if (this.o.autoclose) - this.hide(); - break; - } - break; - case 'span': - if (!target.is('.disabled')){ - this.viewDate.setUTCDate(1); - if (target.is('.month')){ - day = 1; - month = target.parent().find('span').index(target); - year = this.viewDate.getUTCFullYear(); - this.viewDate.setUTCMonth(month); - this._trigger('changeMonth', this.viewDate); - if (this.o.minViewMode === 1){ - this._setDate(UTCDate(year, month, day)); - } - } - else { - day = 1; - month = 0; - year = parseInt(target.text(), 10)||0; - this.viewDate.setUTCFullYear(year); - this._trigger('changeYear', this.viewDate); - if (this.o.minViewMode === 2){ - this._setDate(UTCDate(year, month, day)); - } - } - this.showMode(-1); - this.fill(); - } - break; - case 'td': - if (target.is('.day') && !target.is('.disabled')){ - day = parseInt(target.text(), 10)||1; - year = this.viewDate.getUTCFullYear(); - month = this.viewDate.getUTCMonth(); - if (target.is('.old')){ - if (month === 0){ - month = 11; - year -= 1; - } - else { - month -= 1; - } - } - else if (target.is('.new')){ - if (month === 11){ - month = 0; - year += 1; - } - else { - month += 1; - } - } - this._setDate(UTCDate(year, month, day)); - } - break; - } - } - if (this.picker.is(':visible') && this._focused_from){ - $(this._focused_from).focus(); - } - delete this._focused_from; - }, - - _toggle_multidate: function(date){ - var ix = this.dates.contains(date); - if (!date){ - this.dates.clear(); - } - else if (ix !== -1){ - this.dates.remove(ix); - } - else { - this.dates.push(date); - } - if (typeof this.o.multidate === 'number') - while (this.dates.length > this.o.multidate) - this.dates.remove(0); - }, - - _setDate: function(date, which){ - if (!which || which === 'date') - this._toggle_multidate(date && new Date(date)); - if (!which || which === 'view') - this.viewDate = date && new Date(date); - - this.fill(); - this.setValue(); - this._trigger('changeDate'); - var element; - if (this.isInput){ - element = this.element; - } - else if (this.component){ - element = this.element.find('input'); - } - if (element){ - element.change(); - } - if (this.o.autoclose && (!which || which === 'date')){ - this.hide(); - } - }, - - moveMonth: function(date, dir){ - if (!date) - return undefined; - if (!dir) - return date; - var new_date = new Date(date.valueOf()), - day = new_date.getUTCDate(), - month = new_date.getUTCMonth(), - mag = Math.abs(dir), - new_month, test; - dir = dir > 0 ? 1 : -1; - if (mag === 1){ - test = dir === -1 - // If going back one month, make sure month is not current month - // (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02) - ? function(){ - return new_date.getUTCMonth() === month; - } - // If going forward one month, make sure month is as expected - // (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02) - : function(){ - return new_date.getUTCMonth() !== new_month; - }; - new_month = month + dir; - new_date.setUTCMonth(new_month); - // Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11 - if (new_month < 0 || new_month > 11) - new_month = (new_month + 12) % 12; - } - else { - // For magnitudes >1, move one month at a time... - for (var i=0; i < mag; i++) - // ...which might decrease the day (eg, Jan 31 to Feb 28, etc)... - new_date = this.moveMonth(new_date, dir); - // ...then reset the day, keeping it in the new month - new_month = new_date.getUTCMonth(); - new_date.setUTCDate(day); - test = function(){ - return new_month !== new_date.getUTCMonth(); - }; - } - // Common date-resetting loop -- if date is beyond end of month, make it - // end of month - while (test()){ - new_date.setUTCDate(--day); - new_date.setUTCMonth(new_month); - } - return new_date; - }, - - moveYear: function(date, dir){ - return this.moveMonth(date, dir*12); - }, - - dateWithinRange: function(date){ - return date >= this.o.startDate && date <= this.o.endDate; - }, - - keydown: function(e){ - if (this.picker.is(':not(:visible)')){ - if (e.keyCode === 27) // allow escape to hide and re-show picker - this.show(); - return; - } - var dateChanged = false, - dir, newDate, newViewDate, - focusDate = this.focusDate || this.viewDate; - switch (e.keyCode){ - case 27: // escape - if (this.focusDate){ - this.focusDate = null; - this.viewDate = this.dates.get(-1) || this.viewDate; - this.fill(); - } - else - this.hide(); - e.preventDefault(); - break; - case 37: // left - case 39: // right - if (!this.o.keyboardNavigation) - break; - dir = e.keyCode === 37 ? -1 : 1; - if (e.ctrlKey){ - newDate = this.moveYear(this.dates.get(-1) || UTCToday(), dir); - newViewDate = this.moveYear(focusDate, dir); - this._trigger('changeYear', this.viewDate); - } - else if (e.shiftKey){ - newDate = this.moveMonth(this.dates.get(-1) || UTCToday(), dir); - newViewDate = this.moveMonth(focusDate, dir); - this._trigger('changeMonth', this.viewDate); - } - else { - newDate = new Date(this.dates.get(-1) || UTCToday()); - newDate.setUTCDate(newDate.getUTCDate() + dir); - newViewDate = new Date(focusDate); - newViewDate.setUTCDate(focusDate.getUTCDate() + dir); - } - if (this.dateWithinRange(newDate)){ - this.focusDate = this.viewDate = newViewDate; - this.setValue(); - this.fill(); - e.preventDefault(); - } - break; - case 38: // up - case 40: // down - if (!this.o.keyboardNavigation) - break; - dir = e.keyCode === 38 ? -1 : 1; - if (e.ctrlKey){ - newDate = this.moveYear(this.dates.get(-1) || UTCToday(), dir); - newViewDate = this.moveYear(focusDate, dir); - this._trigger('changeYear', this.viewDate); - } - else if (e.shiftKey){ - newDate = this.moveMonth(this.dates.get(-1) || UTCToday(), dir); - newViewDate = this.moveMonth(focusDate, dir); - this._trigger('changeMonth', this.viewDate); - } - else { - newDate = new Date(this.dates.get(-1) || UTCToday()); - newDate.setUTCDate(newDate.getUTCDate() + dir * 7); - newViewDate = new Date(focusDate); - newViewDate.setUTCDate(focusDate.getUTCDate() + dir * 7); - } - if (this.dateWithinRange(newDate)){ - this.focusDate = this.viewDate = newViewDate; - this.setValue(); - this.fill(); - e.preventDefault(); - } - break; - case 32: // spacebar - // Spacebar is used in manually typing dates in some formats. - // As such, its behavior should not be hijacked. - break; - case 13: // enter - focusDate = this.focusDate || this.dates.get(-1) || this.viewDate; - this._toggle_multidate(focusDate); - dateChanged = true; - this.focusDate = null; - this.viewDate = this.dates.get(-1) || this.viewDate; - this.setValue(); - this.fill(); - if (this.picker.is(':visible')){ - e.preventDefault(); - if (this.o.autoclose) - this.hide(); - } - break; - case 9: // tab - this.focusDate = null; - this.viewDate = this.dates.get(-1) || this.viewDate; - this.fill(); - this.hide(); - break; - } - if (dateChanged){ - if (this.dates.length) - this._trigger('changeDate'); - else - this._trigger('clearDate'); - var element; - if (this.isInput){ - element = this.element; - } - else if (this.component){ - element = this.element.find('input'); - } - if (element){ - element.change(); - } - } - }, - - showMode: function(dir){ - if (dir){ - this.viewMode = Math.max(this.o.minViewMode, Math.min(2, this.viewMode + dir)); - } - this.picker - .find('>div') - .hide() - .filter('.datepicker-'+DPGlobal.modes[this.viewMode].clsName) - .css('display', 'block'); - this.updateNavArrows(); - } - }; - - var DateRangePicker = function(element, options){ - this.element = $(element); - this.inputs = $.map(options.inputs, function(i){ - return i.jquery ? i[0] : i; - }); - delete options.inputs; - - $(this.inputs) - .datepicker(options) - .bind('changeDate', $.proxy(this.dateUpdated, this)); - - this.pickers = $.map(this.inputs, function(i){ - return $(i).data('datepicker'); - }); - this.updateDates(); - }; - DateRangePicker.prototype = { - updateDates: function(){ - this.dates = $.map(this.pickers, function(i){ - return i.getUTCDate(); - }); - this.updateRanges(); - }, - updateRanges: function(){ - var range = $.map(this.dates, function(d){ - return d.valueOf(); - }); - $.each(this.pickers, function(i, p){ - p.setRange(range); - }); - }, - dateUpdated: function(e){ - // `this.updating` is a workaround for preventing infinite recursion - // between `changeDate` triggering and `setUTCDate` calling. Until - // there is a better mechanism. - if (this.updating) - return; - this.updating = true; - - var dp = $(e.target).data('datepicker'), - new_date = dp.getUTCDate(), - i = $.inArray(e.target, this.inputs), - l = this.inputs.length; - if (i === -1) - return; - - $.each(this.pickers, function(i, p){ - if (!p.getUTCDate()) - p.setUTCDate(new_date); - }); - - if (new_date < this.dates[i]){ - // Date being moved earlier/left - while (i >= 0 && new_date < this.dates[i]){ - this.pickers[i--].setUTCDate(new_date); - } - } - else if (new_date > this.dates[i]){ - // Date being moved later/right - while (i < l && new_date > this.dates[i]){ - this.pickers[i++].setUTCDate(new_date); - } - } - this.updateDates(); - - delete this.updating; - }, - remove: function(){ - $.map(this.pickers, function(p){ p.remove(); }); - delete this.element.data().datepicker; - } - }; - - function opts_from_el(el, prefix){ - // Derive options from element data-attrs - var data = $(el).data(), - out = {}, inkey, - replace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])'); - prefix = new RegExp('^' + prefix.toLowerCase()); - function re_lower(_,a){ - return a.toLowerCase(); - } - for (var key in data) - if (prefix.test(key)){ - inkey = key.replace(replace, re_lower); - out[inkey] = data[key]; - } - return out; - } - - function opts_from_locale(lang){ - // Derive options from locale plugins - var out = {}; - // Check if "de-DE" style date is available, if not language should - // fallback to 2 letter code eg "de" - if (!dates[lang]){ - lang = lang.split('-')[0]; - if (!dates[lang]) - return; - } - var d = dates[lang]; - $.each(locale_opts, function(i,k){ - if (k in d) - out[k] = d[k]; - }); - return out; - } - - var old = $.fn.datepicker; - $.fn.datepicker = function(option){ - var args = Array.apply(null, arguments); - args.shift(); - var internal_return; - this.each(function(){ - var $this = $(this), - data = $this.data('datepicker'), - options = typeof option === 'object' && option; - if (!data){ - var elopts = opts_from_el(this, 'date'), - // Preliminary otions - xopts = $.extend({}, defaults, elopts, options), - locopts = opts_from_locale(xopts.language), - // Options priority: js args, data-attrs, locales, defaults - opts = $.extend({}, defaults, locopts, elopts, options); - if ($this.is('.input-daterange') || opts.inputs){ - var ropts = { - inputs: opts.inputs || $this.find('input').toArray() - }; - $this.data('datepicker', (data = new DateRangePicker(this, $.extend(opts, ropts)))); - } - else { - $this.data('datepicker', (data = new Datepicker(this, opts))); - } - } - if (typeof option === 'string' && typeof data[option] === 'function'){ - internal_return = data[option].apply(data, args); - if (internal_return !== undefined) - return false; - } - }); - if (internal_return !== undefined) - return internal_return; - else - return this; - }; - - var defaults = $.fn.datepicker.defaults = { - autoclose: false, - beforeShowDay: $.noop, - calendarWeeks: false, - clearBtn: false, - daysOfWeekDisabled: [], - endDate: Infinity, - forceParse: true, - format: 'mm/dd/yyyy', - keyboardNavigation: true, - language: 'en', - minViewMode: 0, - multidate: false, - multidateSeparator: ',', - orientation: "auto", - rtl: false, - startDate: -Infinity, - startView: 0, - todayBtn: false, - todayHighlight: false, - weekStart: 0 - }; - var locale_opts = $.fn.datepicker.locale_opts = [ - 'format', - 'rtl', - 'weekStart' - ]; - $.fn.datepicker.Constructor = Datepicker; - var dates = $.fn.datepicker.dates = { - en: { - days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"], - daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"], - daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"], - months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], - monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], - today: "Today", - clear: "Clear" - } - }; - - var DPGlobal = { - modes: [ - { - clsName: 'days', - navFnc: 'Month', - navStep: 1 - }, - { - clsName: 'months', - navFnc: 'FullYear', - navStep: 1 - }, - { - clsName: 'years', - navFnc: 'FullYear', - navStep: 10 - }], - isLeapYear: function(year){ - return (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0)); - }, - getDaysInMonth: function(year, month){ - return [31, (DPGlobal.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month]; - }, - validParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g, - nonpunctuation: /[^ -\/:-@\[\u3400-\u9fff-`{-~\t\n\r]+/g, - parseFormat: function(format){ - // IE treats \0 as a string end in inputs (truncating the value), - // so it's a bad format delimiter, anyway - var separators = format.replace(this.validParts, '\0').split('\0'), - parts = format.match(this.validParts); - if (!separators || !separators.length || !parts || parts.length === 0){ - throw new Error("Invalid date format."); - } - return {separators: separators, parts: parts}; - }, - parseDate: function(date, format, language){ - if (!date) - return undefined; - if (date instanceof Date) - return date; - if (typeof format === 'string') - format = DPGlobal.parseFormat(format); - var part_re = /([\-+]\d+)([dmwy])/, - parts = date.match(/([\-+]\d+)([dmwy])/g), - part, dir, i; - if (/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/.test(date)){ - date = new Date(); - for (i=0; i < parts.length; i++){ - part = part_re.exec(parts[i]); - dir = parseInt(part[1]); - switch (part[2]){ - case 'd': - date.setUTCDate(date.getUTCDate() + dir); - break; - case 'm': - date = Datepicker.prototype.moveMonth.call(Datepicker.prototype, date, dir); - break; - case 'w': - date.setUTCDate(date.getUTCDate() + dir * 7); - break; - case 'y': - date = Datepicker.prototype.moveYear.call(Datepicker.prototype, date, dir); - break; - } - } - return UTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 0, 0, 0); - } - parts = date && date.match(this.nonpunctuation) || []; - date = new Date(); - var parsed = {}, - setters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'], - setters_map = { - yyyy: function(d,v){ - return d.setUTCFullYear(v); - }, - yy: function(d,v){ - return d.setUTCFullYear(2000+v); - }, - m: function(d,v){ - if (isNaN(d)) - return d; - v -= 1; - while (v < 0) v += 12; - v %= 12; - d.setUTCMonth(v); - while (d.getUTCMonth() !== v) - d.setUTCDate(d.getUTCDate()-1); - return d; - }, - d: function(d,v){ - return d.setUTCDate(v); - } - }, - val, filtered; - setters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m']; - setters_map['dd'] = setters_map['d']; - date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0); - var fparts = format.parts.slice(); - // Remove noop parts - if (parts.length !== fparts.length){ - fparts = $(fparts).filter(function(i,p){ - return $.inArray(p, setters_order) !== -1; - }).toArray(); - } - // Process remainder - function match_part(){ - var m = this.slice(0, parts[i].length), - p = parts[i].slice(0, m.length); - return m === p; - } - if (parts.length === fparts.length){ - var cnt; - for (i=0, cnt = fparts.length; i < cnt; i++){ - val = parseInt(parts[i], 10); - part = fparts[i]; - if (isNaN(val)){ - switch (part){ - case 'MM': - filtered = $(dates[language].months).filter(match_part); - val = $.inArray(filtered[0], dates[language].months) + 1; - break; - case 'M': - filtered = $(dates[language].monthsShort).filter(match_part); - val = $.inArray(filtered[0], dates[language].monthsShort) + 1; - break; - } - } - parsed[part] = val; - } - var _date, s; - for (i=0; i < setters_order.length; i++){ - s = setters_order[i]; - if (s in parsed && !isNaN(parsed[s])){ - _date = new Date(date); - setters_map[s](_date, parsed[s]); - if (!isNaN(_date)) - date = _date; - } - } - } - return date; - }, - formatDate: function(date, format, language){ - if (!date) - return ''; - if (typeof format === 'string') - format = DPGlobal.parseFormat(format); - var val = { - d: date.getUTCDate(), - D: dates[language].daysShort[date.getUTCDay()], - DD: dates[language].days[date.getUTCDay()], - m: date.getUTCMonth() + 1, - M: dates[language].monthsShort[date.getUTCMonth()], - MM: dates[language].months[date.getUTCMonth()], - yy: date.getUTCFullYear().toString().substring(2), - yyyy: date.getUTCFullYear() - }; - val.dd = (val.d < 10 ? '0' : '') + val.d; - val.mm = (val.m < 10 ? '0' : '') + val.m; - date = []; - var seps = $.extend([], format.separators); - for (var i=0, cnt = format.parts.length; i <= cnt; i++){ - if (seps.length) - date.push(seps.shift()); - date.push(val[format.parts[i]]); - } - return date.join(''); - }, - headTemplate: '<thead>'+ - '<tr>'+ - '<th class="prev">&laquo;</th>'+ - '<th colspan="5" class="datepicker-switch"></th>'+ - '<th class="next">&raquo;</th>'+ - '</tr>'+ - '</thead>', - contTemplate: '<tbody><tr><td colspan="7"></td></tr></tbody>', - footTemplate: '<tfoot>'+ - '<tr>'+ - '<th colspan="7" class="today"></th>'+ - '</tr>'+ - '<tr>'+ - '<th colspan="7" class="clear"></th>'+ - '</tr>'+ - '</tfoot>' - }; - DPGlobal.template = '<div class="datepicker">'+ - '<div class="datepicker-days">'+ - '<table class="table table-condensed">'+ - DPGlobal.headTemplate+ - '<tbody></tbody>'+ - DPGlobal.footTemplate+ - '</table>'+ - '</div>'+ - '<div class="datepicker-months">'+ - '<table class="table table-condensed">'+ - DPGlobal.headTemplate+ - DPGlobal.contTemplate+ - DPGlobal.footTemplate+ - '</table>'+ - '</div>'+ - '<div class="datepicker-years">'+ - '<table class="table table-condensed">'+ - DPGlobal.headTemplate+ - DPGlobal.contTemplate+ - DPGlobal.footTemplate+ - '</table>'+ - '</div>'+ - '</div>'; - - $.fn.datepicker.DPGlobal = DPGlobal; - - - /* DATEPICKER NO CONFLICT - * =================== */ - - $.fn.datepicker.noConflict = function(){ - $.fn.datepicker = old; - return this; - }; - - - /* DATEPICKER DATA-API - * ================== */ - - $(document).on( - 'focus.datepicker.data-api click.datepicker.data-api', - '[data-provide="datepicker"]', - function(e){ - var $this = $(this); - if ($this.data('datepicker')) - return; - e.preventDefault(); - // component click requires us to explicitly show it - $this.datepicker('show'); - } - ); - $(function(){ - $('[data-provide="datepicker-inline"]').datepicker(); - }); - -}(window.jQuery)); diff --git a/assets/plugins/datepicker/datepicker3.css b/assets/plugins/datepicker/datepicker3.css deleted file mode 100644 index d9c3fb6b..00000000 --- a/assets/plugins/datepicker/datepicker3.css +++ /dev/null @@ -1,790 +0,0 @@ -/*! - * Datepicker for Bootstrap - * - * Copyright 2012 Stefan Petre - * Improvements by Andrew Rowls - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - */ -.datepicker { - padding: 4px; - border-radius: 4px; - direction: ltr; - /*.dow { - border-top: 1px solid #ddd !important; - }*/ -} -.datepicker-inline { - width: 100%; -} -.datepicker.datepicker-rtl { - direction: rtl; -} -.datepicker.datepicker-rtl table tr td span { - float: right; -} -.datepicker-dropdown { - top: 0; - left: 0; -} -.datepicker-dropdown:before { - content: ''; - display: inline-block; - border-left: 7px solid transparent; - border-right: 7px solid transparent; - border-bottom: 7px solid #ccc; - border-top: 0; - border-bottom-color: rgba(0, 0, 0, 0.2); - position: absolute; -} -.datepicker-dropdown:after { - content: ''; - display: inline-block; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #fff; - border-top: 0; - position: absolute; -} -.datepicker-dropdown.datepicker-orient-left:before { - left: 6px; -} -.datepicker-dropdown.datepicker-orient-left:after { - left: 7px; -} -.datepicker-dropdown.datepicker-orient-right:before { - right: 6px; -} -.datepicker-dropdown.datepicker-orient-right:after { - right: 7px; -} -.datepicker-dropdown.datepicker-orient-top:before { - top: -7px; -} -.datepicker-dropdown.datepicker-orient-top:after { - top: -6px; -} -.datepicker-dropdown.datepicker-orient-bottom:before { - bottom: -7px; - border-bottom: 0; - border-top: 7px solid #999; -} -.datepicker-dropdown.datepicker-orient-bottom:after { - bottom: -6px; - border-bottom: 0; - border-top: 6px solid #fff; -} -.datepicker > div { - display: none; -} -.datepicker.days div.datepicker-days { - display: block; -} -.datepicker.months div.datepicker-months { - display: block; -} -.datepicker.years div.datepicker-years { - display: block; -} -.datepicker table { - margin: 0; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.datepicker table tr td, -.datepicker table tr th { - text-align: center; - width: 30px; - height: 30px; - border-radius: 4px; - border: none; -} -.table-striped .datepicker table tr td, -.table-striped .datepicker table tr th { - background-color: transparent; -} -.datepicker table tr td.day:hover, -.datepicker table tr td.day.focused { - background: rgba(0,0,0,0.2); - cursor: pointer; -} -.datepicker table tr td.old, -.datepicker table tr td.new { - color: #777; -} -.datepicker table tr td.disabled, -.datepicker table tr td.disabled:hover { - background: none; - color: #444; - cursor: default; -} -.datepicker table tr td.today, -.datepicker table tr td.today:hover, -.datepicker table tr td.today.disabled, -.datepicker table tr td.today.disabled:hover { - color: #000000; - background: rgba(0,0,0,0.2); - border-color: #ffb733; -} -.datepicker table tr td.today:hover, -.datepicker table tr td.today:hover:hover, -.datepicker table tr td.today.disabled:hover, -.datepicker table tr td.today.disabled:hover:hover, -.datepicker table tr td.today:focus, -.datepicker table tr td.today:hover:focus, -.datepicker table tr td.today.disabled:focus, -.datepicker table tr td.today.disabled:hover:focus, -.datepicker table tr td.today:active, -.datepicker table tr td.today:hover:active, -.datepicker table tr td.today.disabled:active, -.datepicker table tr td.today.disabled:hover:active, -.datepicker table tr td.today.active, -.datepicker table tr td.today:hover.active, -.datepicker table tr td.today.disabled.active, -.datepicker table tr td.today.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td.today, -.open .dropdown-toggle.datepicker table tr td.today:hover, -.open .dropdown-toggle.datepicker table tr td.today.disabled, -.open .dropdown-toggle.datepicker table tr td.today.disabled:hover { - color: #000000; - background: rgba(0,0,0,0.2); - border-color: #f59e00; -} -.datepicker table tr td.today:active, -.datepicker table tr td.today:hover:active, -.datepicker table tr td.today.disabled:active, -.datepicker table tr td.today.disabled:hover:active, -.datepicker table tr td.today.active, -.datepicker table tr td.today:hover.active, -.datepicker table tr td.today.disabled.active, -.datepicker table tr td.today.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td.today, -.open .dropdown-toggle.datepicker table tr td.today:hover, -.open .dropdown-toggle.datepicker table tr td.today.disabled, -.open .dropdown-toggle.datepicker table tr td.today.disabled:hover { - background-image: none; -} -.datepicker table tr td.today.disabled, -.datepicker table tr td.today:hover.disabled, -.datepicker table tr td.today.disabled.disabled, -.datepicker table tr td.today.disabled:hover.disabled, -.datepicker table tr td.today[disabled], -.datepicker table tr td.today:hover[disabled], -.datepicker table tr td.today.disabled[disabled], -.datepicker table tr td.today.disabled:hover[disabled], -fieldset[disabled] .datepicker table tr td.today, -fieldset[disabled] .datepicker table tr td.today:hover, -fieldset[disabled] .datepicker table tr td.today.disabled, -fieldset[disabled] .datepicker table tr td.today.disabled:hover, -.datepicker table tr td.today.disabled:hover, -.datepicker table tr td.today:hover.disabled:hover, -.datepicker table tr td.today.disabled.disabled:hover, -.datepicker table tr td.today.disabled:hover.disabled:hover, -.datepicker table tr td.today[disabled]:hover, -.datepicker table tr td.today:hover[disabled]:hover, -.datepicker table tr td.today.disabled[disabled]:hover, -.datepicker table tr td.today.disabled:hover[disabled]:hover, -fieldset[disabled] .datepicker table tr td.today:hover, -fieldset[disabled] .datepicker table tr td.today:hover:hover, -fieldset[disabled] .datepicker table tr td.today.disabled:hover, -fieldset[disabled] .datepicker table tr td.today.disabled:hover:hover, -.datepicker table tr td.today.disabled:focus, -.datepicker table tr td.today:hover.disabled:focus, -.datepicker table tr td.today.disabled.disabled:focus, -.datepicker table tr td.today.disabled:hover.disabled:focus, -.datepicker table tr td.today[disabled]:focus, -.datepicker table tr td.today:hover[disabled]:focus, -.datepicker table tr td.today.disabled[disabled]:focus, -.datepicker table tr td.today.disabled:hover[disabled]:focus, -fieldset[disabled] .datepicker table tr td.today:focus, -fieldset[disabled] .datepicker table tr td.today:hover:focus, -fieldset[disabled] .datepicker table tr td.today.disabled:focus, -fieldset[disabled] .datepicker table tr td.today.disabled:hover:focus, -.datepicker table tr td.today.disabled:active, -.datepicker table tr td.today:hover.disabled:active, -.datepicker table tr td.today.disabled.disabled:active, -.datepicker table tr td.today.disabled:hover.disabled:active, -.datepicker table tr td.today[disabled]:active, -.datepicker table tr td.today:hover[disabled]:active, -.datepicker table tr td.today.disabled[disabled]:active, -.datepicker table tr td.today.disabled:hover[disabled]:active, -fieldset[disabled] .datepicker table tr td.today:active, -fieldset[disabled] .datepicker table tr td.today:hover:active, -fieldset[disabled] .datepicker table tr td.today.disabled:active, -fieldset[disabled] .datepicker table tr td.today.disabled:hover:active, -.datepicker table tr td.today.disabled.active, -.datepicker table tr td.today:hover.disabled.active, -.datepicker table tr td.today.disabled.disabled.active, -.datepicker table tr td.today.disabled:hover.disabled.active, -.datepicker table tr td.today[disabled].active, -.datepicker table tr td.today:hover[disabled].active, -.datepicker table tr td.today.disabled[disabled].active, -.datepicker table tr td.today.disabled:hover[disabled].active, -fieldset[disabled] .datepicker table tr td.today.active, -fieldset[disabled] .datepicker table tr td.today:hover.active, -fieldset[disabled] .datepicker table tr td.today.disabled.active, -fieldset[disabled] .datepicker table tr td.today.disabled:hover.active { - background: rgba(0,0,0,0.2); - border-color: #ffb733; -} -.datepicker table tr td.today:hover:hover { - color: #000; -} -.datepicker table tr td.today.active:hover { - color: #fff; -} -.datepicker table tr td.range, -.datepicker table tr td.range:hover, -.datepicker table tr td.range.disabled, -.datepicker table tr td.range.disabled:hover { - background: rgba(0,0,0,0.2); - border-radius: 0; -} -.datepicker table tr td.range.today, -.datepicker table tr td.range.today:hover, -.datepicker table tr td.range.today.disabled, -.datepicker table tr td.range.today.disabled:hover { - color: #000000; - background: rgba(0,0,0,0.2); - border-color: #f1a417; - border-radius: 0; -} -.datepicker table tr td.range.today:hover, -.datepicker table tr td.range.today:hover:hover, -.datepicker table tr td.range.today.disabled:hover, -.datepicker table tr td.range.today.disabled:hover:hover, -.datepicker table tr td.range.today:focus, -.datepicker table tr td.range.today:hover:focus, -.datepicker table tr td.range.today.disabled:focus, -.datepicker table tr td.range.today.disabled:hover:focus, -.datepicker table tr td.range.today:active, -.datepicker table tr td.range.today:hover:active, -.datepicker table tr td.range.today.disabled:active, -.datepicker table tr td.range.today.disabled:hover:active, -.datepicker table tr td.range.today.active, -.datepicker table tr td.range.today:hover.active, -.datepicker table tr td.range.today.disabled.active, -.datepicker table tr td.range.today.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td.range.today, -.open .dropdown-toggle.datepicker table tr td.range.today:hover, -.open .dropdown-toggle.datepicker table tr td.range.today.disabled, -.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover { - color: #000000; - background: rgba(0,0,0,0.2); - border-color: #bf800c; -} -.datepicker table tr td.range.today:active, -.datepicker table tr td.range.today:hover:active, -.datepicker table tr td.range.today.disabled:active, -.datepicker table tr td.range.today.disabled:hover:active, -.datepicker table tr td.range.today.active, -.datepicker table tr td.range.today:hover.active, -.datepicker table tr td.range.today.disabled.active, -.datepicker table tr td.range.today.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td.range.today, -.open .dropdown-toggle.datepicker table tr td.range.today:hover, -.open .dropdown-toggle.datepicker table tr td.range.today.disabled, -.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover { - background-image: none; -} -.datepicker table tr td.range.today.disabled, -.datepicker table tr td.range.today:hover.disabled, -.datepicker table tr td.range.today.disabled.disabled, -.datepicker table tr td.range.today.disabled:hover.disabled, -.datepicker table tr td.range.today[disabled], -.datepicker table tr td.range.today:hover[disabled], -.datepicker table tr td.range.today.disabled[disabled], -.datepicker table tr td.range.today.disabled:hover[disabled], -fieldset[disabled] .datepicker table tr td.range.today, -fieldset[disabled] .datepicker table tr td.range.today:hover, -fieldset[disabled] .datepicker table tr td.range.today.disabled, -fieldset[disabled] .datepicker table tr td.range.today.disabled:hover, -.datepicker table tr td.range.today.disabled:hover, -.datepicker table tr td.range.today:hover.disabled:hover, -.datepicker table tr td.range.today.disabled.disabled:hover, -.datepicker table tr td.range.today.disabled:hover.disabled:hover, -.datepicker table tr td.range.today[disabled]:hover, -.datepicker table tr td.range.today:hover[disabled]:hover, -.datepicker table tr td.range.today.disabled[disabled]:hover, -.datepicker table tr td.range.today.disabled:hover[disabled]:hover, -fieldset[disabled] .datepicker table tr td.range.today:hover, -fieldset[disabled] .datepicker table tr td.range.today:hover:hover, -fieldset[disabled] .datepicker table tr td.range.today.disabled:hover, -fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:hover, -.datepicker table tr td.range.today.disabled:focus, -.datepicker table tr td.range.today:hover.disabled:focus, -.datepicker table tr td.range.today.disabled.disabled:focus, -.datepicker table tr td.range.today.disabled:hover.disabled:focus, -.datepicker table tr td.range.today[disabled]:focus, -.datepicker table tr td.range.today:hover[disabled]:focus, -.datepicker table tr td.range.today.disabled[disabled]:focus, -.datepicker table tr td.range.today.disabled:hover[disabled]:focus, -fieldset[disabled] .datepicker table tr td.range.today:focus, -fieldset[disabled] .datepicker table tr td.range.today:hover:focus, -fieldset[disabled] .datepicker table tr td.range.today.disabled:focus, -fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:focus, -.datepicker table tr td.range.today.disabled:active, -.datepicker table tr td.range.today:hover.disabled:active, -.datepicker table tr td.range.today.disabled.disabled:active, -.datepicker table tr td.range.today.disabled:hover.disabled:active, -.datepicker table tr td.range.today[disabled]:active, -.datepicker table tr td.range.today:hover[disabled]:active, -.datepicker table tr td.range.today.disabled[disabled]:active, -.datepicker table tr td.range.today.disabled:hover[disabled]:active, -fieldset[disabled] .datepicker table tr td.range.today:active, -fieldset[disabled] .datepicker table tr td.range.today:hover:active, -fieldset[disabled] .datepicker table tr td.range.today.disabled:active, -fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:active, -.datepicker table tr td.range.today.disabled.active, -.datepicker table tr td.range.today:hover.disabled.active, -.datepicker table tr td.range.today.disabled.disabled.active, -.datepicker table tr td.range.today.disabled:hover.disabled.active, -.datepicker table tr td.range.today[disabled].active, -.datepicker table tr td.range.today:hover[disabled].active, -.datepicker table tr td.range.today.disabled[disabled].active, -.datepicker table tr td.range.today.disabled:hover[disabled].active, -fieldset[disabled] .datepicker table tr td.range.today.active, -fieldset[disabled] .datepicker table tr td.range.today:hover.active, -fieldset[disabled] .datepicker table tr td.range.today.disabled.active, -fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.active { - background: rgba(0,0,0,0.2); - border-color: #f1a417; -} -.datepicker table tr td.selected, -.datepicker table tr td.selected:hover, -.datepicker table tr td.selected.disabled, -.datepicker table tr td.selected.disabled:hover { - color: #ffffff; - background: rgba(0,0,0,0.2); - border-color: #555555; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} -.datepicker table tr td.selected:hover, -.datepicker table tr td.selected:hover:hover, -.datepicker table tr td.selected.disabled:hover, -.datepicker table tr td.selected.disabled:hover:hover, -.datepicker table tr td.selected:focus, -.datepicker table tr td.selected:hover:focus, -.datepicker table tr td.selected.disabled:focus, -.datepicker table tr td.selected.disabled:hover:focus, -.datepicker table tr td.selected:active, -.datepicker table tr td.selected:hover:active, -.datepicker table tr td.selected.disabled:active, -.datepicker table tr td.selected.disabled:hover:active, -.datepicker table tr td.selected.active, -.datepicker table tr td.selected:hover.active, -.datepicker table tr td.selected.disabled.active, -.datepicker table tr td.selected.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td.selected, -.open .dropdown-toggle.datepicker table tr td.selected:hover, -.open .dropdown-toggle.datepicker table tr td.selected.disabled, -.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover { - color: #ffffff; - background: rgba(0,0,0,0.2); - border-color: #373737; -} -.datepicker table tr td.selected:active, -.datepicker table tr td.selected:hover:active, -.datepicker table tr td.selected.disabled:active, -.datepicker table tr td.selected.disabled:hover:active, -.datepicker table tr td.selected.active, -.datepicker table tr td.selected:hover.active, -.datepicker table tr td.selected.disabled.active, -.datepicker table tr td.selected.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td.selected, -.open .dropdown-toggle.datepicker table tr td.selected:hover, -.open .dropdown-toggle.datepicker table tr td.selected.disabled, -.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover { - background-image: none; -} -.datepicker table tr td.selected.disabled, -.datepicker table tr td.selected:hover.disabled, -.datepicker table tr td.selected.disabled.disabled, -.datepicker table tr td.selected.disabled:hover.disabled, -.datepicker table tr td.selected[disabled], -.datepicker table tr td.selected:hover[disabled], -.datepicker table tr td.selected.disabled[disabled], -.datepicker table tr td.selected.disabled:hover[disabled], -fieldset[disabled] .datepicker table tr td.selected, -fieldset[disabled] .datepicker table tr td.selected:hover, -fieldset[disabled] .datepicker table tr td.selected.disabled, -fieldset[disabled] .datepicker table tr td.selected.disabled:hover, -.datepicker table tr td.selected.disabled:hover, -.datepicker table tr td.selected:hover.disabled:hover, -.datepicker table tr td.selected.disabled.disabled:hover, -.datepicker table tr td.selected.disabled:hover.disabled:hover, -.datepicker table tr td.selected[disabled]:hover, -.datepicker table tr td.selected:hover[disabled]:hover, -.datepicker table tr td.selected.disabled[disabled]:hover, -.datepicker table tr td.selected.disabled:hover[disabled]:hover, -fieldset[disabled] .datepicker table tr td.selected:hover, -fieldset[disabled] .datepicker table tr td.selected:hover:hover, -fieldset[disabled] .datepicker table tr td.selected.disabled:hover, -fieldset[disabled] .datepicker table tr td.selected.disabled:hover:hover, -.datepicker table tr td.selected.disabled:focus, -.datepicker table tr td.selected:hover.disabled:focus, -.datepicker table tr td.selected.disabled.disabled:focus, -.datepicker table tr td.selected.disabled:hover.disabled:focus, -.datepicker table tr td.selected[disabled]:focus, -.datepicker table tr td.selected:hover[disabled]:focus, -.datepicker table tr td.selected.disabled[disabled]:focus, -.datepicker table tr td.selected.disabled:hover[disabled]:focus, -fieldset[disabled] .datepicker table tr td.selected:focus, -fieldset[disabled] .datepicker table tr td.selected:hover:focus, -fieldset[disabled] .datepicker table tr td.selected.disabled:focus, -fieldset[disabled] .datepicker table tr td.selected.disabled:hover:focus, -.datepicker table tr td.selected.disabled:active, -.datepicker table tr td.selected:hover.disabled:active, -.datepicker table tr td.selected.disabled.disabled:active, -.datepicker table tr td.selected.disabled:hover.disabled:active, -.datepicker table tr td.selected[disabled]:active, -.datepicker table tr td.selected:hover[disabled]:active, -.datepicker table tr td.selected.disabled[disabled]:active, -.datepicker table tr td.selected.disabled:hover[disabled]:active, -fieldset[disabled] .datepicker table tr td.selected:active, -fieldset[disabled] .datepicker table tr td.selected:hover:active, -fieldset[disabled] .datepicker table tr td.selected.disabled:active, -fieldset[disabled] .datepicker table tr td.selected.disabled:hover:active, -.datepicker table tr td.selected.disabled.active, -.datepicker table tr td.selected:hover.disabled.active, -.datepicker table tr td.selected.disabled.disabled.active, -.datepicker table tr td.selected.disabled:hover.disabled.active, -.datepicker table tr td.selected[disabled].active, -.datepicker table tr td.selected:hover[disabled].active, -.datepicker table tr td.selected.disabled[disabled].active, -.datepicker table tr td.selected.disabled:hover[disabled].active, -fieldset[disabled] .datepicker table tr td.selected.active, -fieldset[disabled] .datepicker table tr td.selected:hover.active, -fieldset[disabled] .datepicker table tr td.selected.disabled.active, -fieldset[disabled] .datepicker table tr td.selected.disabled:hover.active { - background: rgba(0,0,0,0.2); - border-color: #555555; -} -.datepicker table tr td.active, -.datepicker table tr td.active:hover, -.datepicker table tr td.active.disabled, -.datepicker table tr td.active.disabled:hover { - color: #ffffff; - background: rgba(0,0,0,0.2); - border-color: #357ebd; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} -.datepicker table tr td.active:hover, -.datepicker table tr td.active:hover:hover, -.datepicker table tr td.active.disabled:hover, -.datepicker table tr td.active.disabled:hover:hover, -.datepicker table tr td.active:focus, -.datepicker table tr td.active:hover:focus, -.datepicker table tr td.active.disabled:focus, -.datepicker table tr td.active.disabled:hover:focus, -.datepicker table tr td.active:active, -.datepicker table tr td.active:hover:active, -.datepicker table tr td.active.disabled:active, -.datepicker table tr td.active.disabled:hover:active, -.datepicker table tr td.active.active, -.datepicker table tr td.active:hover.active, -.datepicker table tr td.active.disabled.active, -.datepicker table tr td.active.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td.active, -.open .dropdown-toggle.datepicker table tr td.active:hover, -.open .dropdown-toggle.datepicker table tr td.active.disabled, -.open .dropdown-toggle.datepicker table tr td.active.disabled:hover { - color: #ffffff; - background: rgba(0,0,0,0.5); - border-color: #285e8e; -} -.datepicker table tr td.active:active, -.datepicker table tr td.active:hover:active, -.datepicker table tr td.active.disabled:active, -.datepicker table tr td.active.disabled:hover:active, -.datepicker table tr td.active.active, -.datepicker table tr td.active:hover.active, -.datepicker table tr td.active.disabled.active, -.datepicker table tr td.active.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td.active, -.open .dropdown-toggle.datepicker table tr td.active:hover, -.open .dropdown-toggle.datepicker table tr td.active.disabled, -.open .dropdown-toggle.datepicker table tr td.active.disabled:hover { - background-image: none; -} -.datepicker table tr td.active.disabled, -.datepicker table tr td.active:hover.disabled, -.datepicker table tr td.active.disabled.disabled, -.datepicker table tr td.active.disabled:hover.disabled, -.datepicker table tr td.active[disabled], -.datepicker table tr td.active:hover[disabled], -.datepicker table tr td.active.disabled[disabled], -.datepicker table tr td.active.disabled:hover[disabled], -fieldset[disabled] .datepicker table tr td.active, -fieldset[disabled] .datepicker table tr td.active:hover, -fieldset[disabled] .datepicker table tr td.active.disabled, -fieldset[disabled] .datepicker table tr td.active.disabled:hover, -.datepicker table tr td.active.disabled:hover, -.datepicker table tr td.active:hover.disabled:hover, -.datepicker table tr td.active.disabled.disabled:hover, -.datepicker table tr td.active.disabled:hover.disabled:hover, -.datepicker table tr td.active[disabled]:hover, -.datepicker table tr td.active:hover[disabled]:hover, -.datepicker table tr td.active.disabled[disabled]:hover, -.datepicker table tr td.active.disabled:hover[disabled]:hover, -fieldset[disabled] .datepicker table tr td.active:hover, -fieldset[disabled] .datepicker table tr td.active:hover:hover, -fieldset[disabled] .datepicker table tr td.active.disabled:hover, -fieldset[disabled] .datepicker table tr td.active.disabled:hover:hover, -.datepicker table tr td.active.disabled:focus, -.datepicker table tr td.active:hover.disabled:focus, -.datepicker table tr td.active.disabled.disabled:focus, -.datepicker table tr td.active.disabled:hover.disabled:focus, -.datepicker table tr td.active[disabled]:focus, -.datepicker table tr td.active:hover[disabled]:focus, -.datepicker table tr td.active.disabled[disabled]:focus, -.datepicker table tr td.active.disabled:hover[disabled]:focus, -fieldset[disabled] .datepicker table tr td.active:focus, -fieldset[disabled] .datepicker table tr td.active:hover:focus, -fieldset[disabled] .datepicker table tr td.active.disabled:focus, -fieldset[disabled] .datepicker table tr td.active.disabled:hover:focus, -.datepicker table tr td.active.disabled:active, -.datepicker table tr td.active:hover.disabled:active, -.datepicker table tr td.active.disabled.disabled:active, -.datepicker table tr td.active.disabled:hover.disabled:active, -.datepicker table tr td.active[disabled]:active, -.datepicker table tr td.active:hover[disabled]:active, -.datepicker table tr td.active.disabled[disabled]:active, -.datepicker table tr td.active.disabled:hover[disabled]:active, -fieldset[disabled] .datepicker table tr td.active:active, -fieldset[disabled] .datepicker table tr td.active:hover:active, -fieldset[disabled] .datepicker table tr td.active.disabled:active, -fieldset[disabled] .datepicker table tr td.active.disabled:hover:active, -.datepicker table tr td.active.disabled.active, -.datepicker table tr td.active:hover.disabled.active, -.datepicker table tr td.active.disabled.disabled.active, -.datepicker table tr td.active.disabled:hover.disabled.active, -.datepicker table tr td.active[disabled].active, -.datepicker table tr td.active:hover[disabled].active, -.datepicker table tr td.active.disabled[disabled].active, -.datepicker table tr td.active.disabled:hover[disabled].active, -fieldset[disabled] .datepicker table tr td.active.active, -fieldset[disabled] .datepicker table tr td.active:hover.active, -fieldset[disabled] .datepicker table tr td.active.disabled.active, -fieldset[disabled] .datepicker table tr td.active.disabled:hover.active { - background-color: #428bca; - border-color: #357ebd; -} -.datepicker table tr td span { - display: block; - width: 23%; - height: 54px; - line-height: 54px; - float: left; - margin: 1%; - cursor: pointer; - border-radius: 4px; -} -.datepicker table tr td span:hover { - background: rgba(0,0,0,0.2); -} -.datepicker table tr td span.disabled, -.datepicker table tr td span.disabled:hover { - background: none; - color: #444; - cursor: default; -} -.datepicker table tr td span.active, -.datepicker table tr td span.active:hover, -.datepicker table tr td span.active.disabled, -.datepicker table tr td span.active.disabled:hover { - color: #ffffff; - background-color: #428bca; - border-color: #357ebd; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} -.datepicker table tr td span.active:hover, -.datepicker table tr td span.active:hover:hover, -.datepicker table tr td span.active.disabled:hover, -.datepicker table tr td span.active.disabled:hover:hover, -.datepicker table tr td span.active:focus, -.datepicker table tr td span.active:hover:focus, -.datepicker table tr td span.active.disabled:focus, -.datepicker table tr td span.active.disabled:hover:focus, -.datepicker table tr td span.active:active, -.datepicker table tr td span.active:hover:active, -.datepicker table tr td span.active.disabled:active, -.datepicker table tr td span.active.disabled:hover:active, -.datepicker table tr td span.active.active, -.datepicker table tr td span.active:hover.active, -.datepicker table tr td span.active.disabled.active, -.datepicker table tr td span.active.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td span.active, -.open .dropdown-toggle.datepicker table tr td span.active:hover, -.open .dropdown-toggle.datepicker table tr td span.active.disabled, -.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover { - color: #ffffff; - background-color: #3276b1; - border-color: #285e8e; -} -.datepicker table tr td span.active:active, -.datepicker table tr td span.active:hover:active, -.datepicker table tr td span.active.disabled:active, -.datepicker table tr td span.active.disabled:hover:active, -.datepicker table tr td span.active.active, -.datepicker table tr td span.active:hover.active, -.datepicker table tr td span.active.disabled.active, -.datepicker table tr td span.active.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td span.active, -.open .dropdown-toggle.datepicker table tr td span.active:hover, -.open .dropdown-toggle.datepicker table tr td span.active.disabled, -.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover { - background-image: none; -} -.datepicker table tr td span.active.disabled, -.datepicker table tr td span.active:hover.disabled, -.datepicker table tr td span.active.disabled.disabled, -.datepicker table tr td span.active.disabled:hover.disabled, -.datepicker table tr td span.active[disabled], -.datepicker table tr td span.active:hover[disabled], -.datepicker table tr td span.active.disabled[disabled], -.datepicker table tr td span.active.disabled:hover[disabled], -fieldset[disabled] .datepicker table tr td span.active, -fieldset[disabled] .datepicker table tr td span.active:hover, -fieldset[disabled] .datepicker table tr td span.active.disabled, -fieldset[disabled] .datepicker table tr td span.active.disabled:hover, -.datepicker table tr td span.active.disabled:hover, -.datepicker table tr td span.active:hover.disabled:hover, -.datepicker table tr td span.active.disabled.disabled:hover, -.datepicker table tr td span.active.disabled:hover.disabled:hover, -.datepicker table tr td span.active[disabled]:hover, -.datepicker table tr td span.active:hover[disabled]:hover, -.datepicker table tr td span.active.disabled[disabled]:hover, -.datepicker table tr td span.active.disabled:hover[disabled]:hover, -fieldset[disabled] .datepicker table tr td span.active:hover, -fieldset[disabled] .datepicker table tr td span.active:hover:hover, -fieldset[disabled] .datepicker table tr td span.active.disabled:hover, -fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover, -.datepicker table tr td span.active.disabled:focus, -.datepicker table tr td span.active:hover.disabled:focus, -.datepicker table tr td span.active.disabled.disabled:focus, -.datepicker table tr td span.active.disabled:hover.disabled:focus, -.datepicker table tr td span.active[disabled]:focus, -.datepicker table tr td span.active:hover[disabled]:focus, -.datepicker table tr td span.active.disabled[disabled]:focus, -.datepicker table tr td span.active.disabled:hover[disabled]:focus, -fieldset[disabled] .datepicker table tr td span.active:focus, -fieldset[disabled] .datepicker table tr td span.active:hover:focus, -fieldset[disabled] .datepicker table tr td span.active.disabled:focus, -fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus, -.datepicker table tr td span.active.disabled:active, -.datepicker table tr td span.active:hover.disabled:active, -.datepicker table tr td span.active.disabled.disabled:active, -.datepicker table tr td span.active.disabled:hover.disabled:active, -.datepicker table tr td span.active[disabled]:active, -.datepicker table tr td span.active:hover[disabled]:active, -.datepicker table tr td span.active.disabled[disabled]:active, -.datepicker table tr td span.active.disabled:hover[disabled]:active, -fieldset[disabled] .datepicker table tr td span.active:active, -fieldset[disabled] .datepicker table tr td span.active:hover:active, -fieldset[disabled] .datepicker table tr td span.active.disabled:active, -fieldset[disabled] .datepicker table tr td span.active.disabled:hover:active, -.datepicker table tr td span.active.disabled.active, -.datepicker table tr td span.active:hover.disabled.active, -.datepicker table tr td span.active.disabled.disabled.active, -.datepicker table tr td span.active.disabled:hover.disabled.active, -.datepicker table tr td span.active[disabled].active, -.datepicker table tr td span.active:hover[disabled].active, -.datepicker table tr td span.active.disabled[disabled].active, -.datepicker table tr td span.active.disabled:hover[disabled].active, -fieldset[disabled] .datepicker table tr td span.active.active, -fieldset[disabled] .datepicker table tr td span.active:hover.active, -fieldset[disabled] .datepicker table tr td span.active.disabled.active, -fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active { - background-color: #428bca; - border-color: #357ebd; -} -.datepicker table tr td span.old, -.datepicker table tr td span.new { - color: #444; -} -.datepicker th.datepicker-switch { - width: 145px; -} -.datepicker thead tr:first-child th, -.datepicker tfoot tr th { - cursor: pointer; -} -.datepicker thead tr:first-child th:hover, -.datepicker tfoot tr th:hover { - background: rgba(0,0,0,0.2); -} -.datepicker .cw { - font-size: 10px; - width: 12px; - padding: 0 2px 0 5px; - vertical-align: middle; -} -.datepicker thead tr:first-child th.cw { - cursor: default; - background-color: transparent; -} -.input-group.date .input-group-addon i { - cursor: pointer; - width: 16px; - height: 16px; -} -.input-daterange input { - text-align: center; -} -.input-daterange input:first-child { - border-radius: 3px 0 0 3px; -} -.input-daterange input:last-child { - border-radius: 0 3px 3px 0; -} -.input-daterange .input-group-addon { - width: auto; - min-width: 16px; - padding: 4px 5px; - font-weight: normal; - line-height: 1.428571429; - text-align: center; - text-shadow: 0 1px 0 #fff; - vertical-align: middle; - background-color: #eeeeee; - border: solid #cccccc; - border-width: 1px 0; - margin-left: -5px; - margin-right: -5px; -} -.datepicker.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - float: left; - display: none; - min-width: 160px; - list-style: none; - background-color: #ffffff; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 5px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -webkit-background-clip: padding-box; - -moz-background-clip: padding; - background-clip: padding-box; - *border-right-width: 2px; - *border-bottom-width: 2px; - color: #333333; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 13px; - line-height: 1.428571429; -} -.datepicker.dropdown-menu th, -.datepicker.dropdown-menu td { - padding: 4px 5px; -} diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.ar.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.ar.js deleted file mode 100644 index 12ae1821..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.ar.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Arabic translation for bootstrap-datepicker - * Mohammed Alshehri <alshehri866@gmail.com> - */ -;(function($){ - $.fn.datepicker.dates['ar'] = { - days: ["الأحد", "الاثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت", "الأحد"], - daysShort: ["أحد", "اثنين", "ثلاثاء", "أربعاء", "خميس", "جمعة", "سبت", "أحد"], - daysMin: ["ح", "ن", "ث", "ع", "خ", "ج", "س", "ح"], - months: ["يناير", "فبراير", "مارس", "أبريل", "مايو", "يونيو", "يوليو", "أغسطس", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر"], - monthsShort: ["يناير", "فبراير", "مارس", "أبريل", "مايو", "يونيو", "يوليو", "أغسطس", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر"], - today: "هذا اليوم", - rtl: true - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.az.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.az.js deleted file mode 100644 index 0285341c..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.az.js +++ /dev/null @@ -1,12 +0,0 @@ -// Azerbaijani -;(function($){ - $.fn.datepicker.dates['az'] = { - days: ["Bazar", "Bazar ertəsi", "Çərşənbə axşamı", "Çərşənbə", "Cümə axşamı", "Cümə", "Şənbə", "Bazar"], - daysShort: ["B.", "B.e", "Ç.a", "Ç.", "C.a", "C.", "Ş.", "B."], - daysMin: ["B.", "B.e", "Ç.a", "Ç.", "C.a", "C.", "Ş.", "B."], - months: ["Yanvar", "Fevral", "Mart", "Aprel", "May", "İyun", "İyul", "Avqust", "Sentyabr", "Oktyabr", "Noyabr", "Dekabr"], - monthsShort: ["Yan", "Fev", "Mar", "Apr", "May", "İyun", "İyul", "Avq", "Sen", "Okt", "Noy", "Dek"], - today: "Bu gün", - weekStart: 1 - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.bg.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.bg.js deleted file mode 100644 index 6837afd9..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.bg.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Bulgarian translation for bootstrap-datepicker - * Apostol Apostolov <apostol.s.apostolov@gmail.com> - */ -;(function($){ - $.fn.datepicker.dates['bg'] = { - days: ["Неделя", "Понеделник", "Вторник", "Сряда", "Четвъртък", "Петък", "Събота", "Неделя"], - daysShort: ["Нед", "Пон", "Вто", "Сря", "Чет", "Пет", "Съб", "Нед"], - daysMin: ["Н", "П", "В", "С", "Ч", "П", "С", "Н"], - months: ["Януари", "Февруари", "Март", "Април", "Май", "Юни", "Юли", "Август", "Септември", "Октомври", "Ноември", "Декември"], - monthsShort: ["Ян", "Фев", "Мар", "Апр", "Май", "Юни", "Юли", "Авг", "Сеп", "Окт", "Ное", "Дек"], - today: "днес" - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.ca.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.ca.js deleted file mode 100644 index 3fc4d844..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.ca.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Catalan translation for bootstrap-datepicker - * J. Garcia <jogaco.en@gmail.com> - */ -;(function($){ - $.fn.datepicker.dates['ca'] = { - days: ["Diumenge", "Dilluns", "Dimarts", "Dimecres", "Dijous", "Divendres", "Dissabte", "Diumenge"], - daysShort: ["Diu", "Dil", "Dmt", "Dmc", "Dij", "Div", "Dis", "Diu"], - daysMin: ["dg", "dl", "dt", "dc", "dj", "dv", "ds", "dg"], - months: ["Gener", "Febrer", "Març", "Abril", "Maig", "Juny", "Juliol", "Agost", "Setembre", "Octubre", "Novembre", "Desembre"], - monthsShort: ["Gen", "Feb", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Oct", "Nov", "Des"], - today: "Avui" - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.cs.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.cs.js deleted file mode 100644 index f76a2c08..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.cs.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Czech translation for bootstrap-datepicker - * Matěj Koubík <matej@koubik.name> - * Fixes by Michal Remiš <michal.remis@gmail.com> - */ -;(function($){ - $.fn.datepicker.dates['cs'] = { - days: ["Neděle", "Pondělí", "Úterý", "Středa", "Čtvrtek", "Pátek", "Sobota", "Neděle"], - daysShort: ["Ned", "Pon", "Úte", "Stř", "Čtv", "Pát", "Sob", "Ned"], - daysMin: ["Ne", "Po", "Út", "St", "Čt", "Pá", "So", "Ne"], - months: ["Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec"], - monthsShort: ["Led", "Úno", "Bře", "Dub", "Kvě", "Čer", "Čnc", "Srp", "Zář", "Říj", "Lis", "Pro"], - today: "Dnes" - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.cy.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.cy.js deleted file mode 100644 index 7e1136ab..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.cy.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Welsh translation for bootstrap-datepicker - * S. Morris <s.morris@bangor.ac.uk> - */ -;(function($){ - $.fn.datepicker.dates['cy'] = { - days: ["Sul", "Llun", "Mawrth", "Mercher", "Iau", "Gwener", "Sadwrn", "Sul"], - daysShort: ["Sul", "Llu", "Maw", "Mer", "Iau", "Gwe", "Sad", "Sul"], - daysMin: ["Su", "Ll", "Ma", "Me", "Ia", "Gwe", "Sa", "Su"], - months: ["Ionawr", "Chewfror", "Mawrth", "Ebrill", "Mai", "Mehefin", "Gorfennaf", "Awst", "Medi", "Hydref", "Tachwedd", "Rhagfyr"], - monthsShort: ["Ion", "Chw", "Maw", "Ebr", "Mai", "Meh", "Gor", "Aws", "Med", "Hyd", "Tach", "Rha"], - today: "Heddiw" - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.da.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.da.js deleted file mode 100644 index c3d702d4..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.da.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Danish translation for bootstrap-datepicker - * Christian Pedersen <http://github.com/chripede> - */ -;(function($){ - $.fn.datepicker.dates['da'] = { - days: ["Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag", "Søndag"], - daysShort: ["Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør", "Søn"], - daysMin: ["Sø", "Ma", "Ti", "On", "To", "Fr", "Lø", "Sø"], - months: ["Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December"], - monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"], - today: "I Dag", - clear: "Nulstil" - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.de.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.de.js deleted file mode 100644 index a27ba578..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.de.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * German translation for bootstrap-datepicker - * Sam Zurcher <sam@orelias.ch> - */ -;(function($){ - $.fn.datepicker.dates['de'] = { - days: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag"], - daysShort: ["Son", "Mon", "Die", "Mit", "Don", "Fre", "Sam", "Son"], - daysMin: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"], - months: ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"], - monthsShort: ["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"], - today: "Heute", - clear: "Löschen", - weekStart: 1, - format: "dd.mm.yyyy" - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.el.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.el.js deleted file mode 100644 index 3b630f38..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.el.js +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Greek translation for bootstrap-datepicker - */ -;(function($){ - $.fn.datepicker.dates['el'] = { - days: ["Κυριακή", "Δευτέρα", "Τρίτη", "Τετάρτη", "Πέμπτη", "Παρασκευή", "Σάββατο", "Κυριακή"], - daysShort: ["Κυρ", "Δευ", "Τρι", "Τετ", "Πεμ", "Παρ", "Σαβ", "Κυρ"], - daysMin: ["Κυ", "Δε", "Τρ", "Τε", "Πε", "Πα", "Σα", "Κυ"], - months: ["Ιανουάριος", "Φεβρουάριος", "Μάρτιος", "Απρίλιος", "Μάιος", "Ιούνιος", "Ιούλιος", "Αύγουστος", "Σεπτέμβριος", "Οκτώβριος", "Νοέμβριος", "Δεκέμβριος"], - monthsShort: ["Ιαν", "Φεβ", "Μαρ", "Απρ", "Μάι", "Ιουν", "Ιουλ", "Αυγ", "Σεπ", "Οκτ", "Νοε", "Δεκ"], - today: "Σήμερα" - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.es.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.es.js deleted file mode 100644 index 72176902..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.es.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Spanish translation for bootstrap-datepicker - * Bruno Bonamin <bruno.bonamin@gmail.com> - */ -;(function($){ - $.fn.datepicker.dates['es'] = { - days: ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo"], - daysShort: ["Dom", "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb", "Dom"], - daysMin: ["Do", "Lu", "Ma", "Mi", "Ju", "Vi", "Sa", "Do"], - months: ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"], - monthsShort: ["Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"], - today: "Hoy" - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.et.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.et.js deleted file mode 100644 index 87c812ed..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.et.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Estonian translation for bootstrap-datepicker - * Ando Roots <https://github.com/anroots> - * Fixes by Illimar Tambek <<https://github.com/ragulka> - */ -;(function($){ - $.fn.datepicker.dates['et'] = { - days: ["Pühapäev", "Esmaspäev", "Teisipäev", "Kolmapäev", "Neljapäev", "Reede", "Laupäev", "Pühapäev"], - daysShort: ["Pühap", "Esmasp", "Teisip", "Kolmap", "Neljap", "Reede", "Laup", "Pühap"], - daysMin: ["P", "E", "T", "K", "N", "R", "L", "P"], - months: ["Jaanuar", "Veebruar", "Märts", "Aprill", "Mai", "Juuni", "Juuli", "August", "September", "Oktoober", "November", "Detsember"], - monthsShort: ["Jaan", "Veebr", "Märts", "Apr", "Mai", "Juuni", "Juuli", "Aug", "Sept", "Okt", "Nov", "Dets"], - today: "Täna", - clear: "Tühjenda", - weekStart: 1, - format: "dd.mm.yyyy" - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.fa.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.fa.js deleted file mode 100644 index 6503c85d..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.fa.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Persian translation for bootstrap-datepicker - * Mostafa Rokooie <mostafa.rokooie@gmail.com> - */ -;(function($){ - $.fn.datepicker.dates['fa'] = { - days: ["یک‌شنبه", "دوشنبه", "سه‌شنبه", "چهارشنبه", "پنج‌شنبه", "جمعه", "شنبه", "یک‌شنبه"], - daysShort: ["یک", "دو", "سه", "چهار", "پنج", "جمعه", "شنبه", "یک"], - daysMin: ["ی", "د", "س", "چ", "پ", "ج", "ش", "ی"], - months: ["ژانویه", "فوریه", "مارس", "آوریل", "مه", "ژوئن", "ژوئیه", "اوت", "سپتامبر", "اکتبر", "نوامبر", "دسامبر"], - monthsShort: ["ژان", "فور", "مار", "آور", "مه", "ژون", "ژوی", "اوت", "سپت", "اکت", "نوا", "دسا"], - today: "امروز", - clear: "پاک کن", - weekStart: 1, - format: "yyyy/mm/dd" - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.fi.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.fi.js deleted file mode 100644 index 01f40dc2..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.fi.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Finnish translation for bootstrap-datepicker - * Jaakko Salonen <https://github.com/jsalonen> - */ -;(function($){ - $.fn.datepicker.dates['fi'] = { - days: ["sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai", "sunnuntai"], - daysShort: ["sun", "maa", "tii", "kes", "tor", "per", "lau", "sun"], - daysMin: ["su", "ma", "ti", "ke", "to", "pe", "la", "su"], - months: ["tammikuu", "helmikuu", "maaliskuu", "huhtikuu", "toukokuu", "kesäkuu", "heinäkuu", "elokuu", "syyskuu", "lokakuu", "marraskuu", "joulukuu"], - monthsShort: ["tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", "syy", "lok", "mar", "jou"], - today: "tänään", - weekStart: 1, - format: "d.m.yyyy" - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.fr.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.fr.js deleted file mode 100644 index eff07aa6..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.fr.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * French translation for bootstrap-datepicker - * Nico Mollet <nico.mollet@gmail.com> - */ -;(function($){ - $.fn.datepicker.dates['fr'] = { - days: ["Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche"], - daysShort: ["Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam", "Dim"], - daysMin: ["D", "L", "Ma", "Me", "J", "V", "S", "D"], - months: ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"], - monthsShort: ["Jan", "Fév", "Mar", "Avr", "Mai", "Jui", "Jul", "Aou", "Sep", "Oct", "Nov", "Déc"], - today: "Aujourd'hui", - clear: "Effacer", - weekStart: 1, - format: "dd/mm/yyyy" - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.gl.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.gl.js deleted file mode 100644 index 538fd5e3..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.gl.js +++ /dev/null @@ -1,11 +0,0 @@ -;(function($){ - $.fn.datepicker.dates['gl'] = { - days: ["Domingo", "Luns", "Martes", "Mércores", "Xoves", "Venres", "Sábado", "Domingo"], - daysShort: ["Dom", "Lun", "Mar", "Mér", "Xov", "Ven", "Sáb", "Dom"], - daysMin: ["Do", "Lu", "Ma", "Me", "Xo", "Ve", "Sa", "Do"], - months: ["Xaneiro", "Febreiro", "Marzo", "Abril", "Maio", "Xuño", "Xullo", "Agosto", "Setembro", "Outubro", "Novembro", "Decembro"], - monthsShort: ["Xan", "Feb", "Mar", "Abr", "Mai", "Xun", "Xul", "Ago", "Sep", "Out", "Nov", "Dec"], - today: "Hoxe", - clear: "Limpar" - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.he.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.he.js deleted file mode 100644 index 2e17393b..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.he.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Hebrew translation for bootstrap-datepicker - * Sagie Maoz <sagie@maoz.info> - */ -;(function($){ - $.fn.datepicker.dates['he'] = { - days: ["ראשון", "שני", "שלישי", "רביעי", "חמישי", "שישי", "שבת", "ראשון"], - daysShort: ["א", "ב", "ג", "ד", "ה", "ו", "ש", "א"], - daysMin: ["א", "ב", "ג", "ד", "ה", "ו", "ש", "א"], - months: ["ינואר", "פברואר", "מרץ", "אפריל", "מאי", "יוני", "יולי", "אוגוסט", "ספטמבר", "אוקטובר", "נובמבר", "דצמבר"], - monthsShort: ["ינו", "פבר", "מרץ", "אפר", "מאי", "יונ", "יול", "אוג", "ספט", "אוק", "נוב", "דצמ"], - today: "היום", - rtl: true - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.hr.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.hr.js deleted file mode 100644 index 655ea54b..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.hr.js +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Croatian localisation - */ -;(function($){ - $.fn.datepicker.dates['hr'] = { - days: ["Nedjelja", "Ponedjeljak", "Utorak", "Srijeda", "Četvrtak", "Petak", "Subota", "Nedjelja"], - daysShort: ["Ned", "Pon", "Uto", "Sri", "Čet", "Pet", "Sub", "Ned"], - daysMin: ["Ne", "Po", "Ut", "Sr", "Če", "Pe", "Su", "Ne"], - months: ["Siječanj", "Veljača", "Ožujak", "Travanj", "Svibanj", "Lipanj", "Srpanj", "Kolovoz", "Rujan", "Listopad", "Studeni", "Prosinac"], - monthsShort: ["Sij", "Velj", "Ožu", "Tra", "Svi", "Lip", "Srp", "Kol", "Ruj", "Lis", "Stu", "Pro"], - today: "Danas" - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.hu.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.hu.js deleted file mode 100644 index bf5308a1..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.hu.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Hungarian translation for bootstrap-datepicker - * Sotus László <lacisan@gmail.com> - */ -;(function($){ - $.fn.datepicker.dates['hu'] = { - days: ["Vasárnap", "Hétfő", "Kedd", "Szerda", "Csütörtök", "Péntek", "Szombat", "Vasárnap"], - daysShort: ["Vas", "Hét", "Ked", "Sze", "Csü", "Pén", "Szo", "Vas"], - daysMin: ["Va", "Hé", "Ke", "Sz", "Cs", "Pé", "Sz", "Va"], - months: ["Január", "Február", "Március", "Április", "Május", "Június", "Július", "Augusztus", "Szeptember", "Október", "November", "December"], - monthsShort: ["Jan", "Feb", "Már", "Ápr", "Máj", "Jún", "Júl", "Aug", "Sze", "Okt", "Nov", "Dec"], - today: "Ma", - weekStart: 1, - format: "yyyy.mm.dd" - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.id.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.id.js deleted file mode 100644 index aae6e896..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.id.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Bahasa translation for bootstrap-datepicker - * Azwar Akbar <azwar.akbar@gmail.com> - */ -;(function($){ - $.fn.datepicker.dates['id'] = { - days: ["Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu"], - daysShort: ["Mgu", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab", "Mgu"], - daysMin: ["Mg", "Sn", "Sl", "Ra", "Ka", "Ju", "Sa", "Mg"], - months: ["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"], - monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Ags", "Sep", "Okt", "Nov", "Des"], - today: "Hari Ini", - clear: "Kosongkan" - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.is.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.is.js deleted file mode 100644 index 0e57a916..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.is.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Icelandic translation for bootstrap-datepicker - * Hinrik Örn Sigurðsson <hinrik.sig@gmail.com> - */ -;(function($){ - $.fn.datepicker.dates['is'] = { - days: ["Sunnudagur", "Mánudagur", "Þriðjudagur", "Miðvikudagur", "Fimmtudagur", "Föstudagur", "Laugardagur", "Sunnudagur"], - daysShort: ["Sun", "Mán", "Þri", "Mið", "Fim", "Fös", "Lau", "Sun"], - daysMin: ["Su", "Má", "Þr", "Mi", "Fi", "Fö", "La", "Su"], - months: ["Janúar", "Febrúar", "Mars", "Apríl", "Maí", "Júní", "Júlí", "Ágúst", "September", "Október", "Nóvember", "Desember"], - monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maí", "Jún", "Júl", "Ágú", "Sep", "Okt", "Nóv", "Des"], - today: "Í Dag" - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.it.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.it.js deleted file mode 100644 index 9f476fa2..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.it.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Italian translation for bootstrap-datepicker - * Enrico Rubboli <rubboli@gmail.com> - */ -;(function($){ - $.fn.datepicker.dates['it'] = { - days: ["Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato", "Domenica"], - daysShort: ["Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab", "Dom"], - daysMin: ["Do", "Lu", "Ma", "Me", "Gi", "Ve", "Sa", "Do"], - months: ["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"], - monthsShort: ["Gen", "Feb", "Mar", "Apr", "Mag", "Giu", "Lug", "Ago", "Set", "Ott", "Nov", "Dic"], - today: "Oggi", - clear: "Cancella", - weekStart: 1, - format: "dd/mm/yyyy" - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.ja.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.ja.js deleted file mode 100644 index ed0bc0f9..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.ja.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Japanese translation for bootstrap-datepicker - * Norio Suzuki <https://github.com/suzuki/> - */ -;(function($){ - $.fn.datepicker.dates['ja'] = { - days: ["日曜", "月曜", "火曜", "水曜", "木曜", "金曜", "土曜", "日曜"], - daysShort: ["日", "月", "火", "水", "木", "金", "土", "日"], - daysMin: ["日", "月", "火", "水", "木", "金", "土", "日"], - months: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"], - monthsShort: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"], - today: "今日", - format: "yyyy/mm/dd" - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.ka.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.ka.js deleted file mode 100644 index 54344549..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.ka.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Georgian translation for bootstrap-datepicker - * Levan Melikishvili <levani0101@yahoo.com> - */ -;(function($){ - $.fn.datepicker.dates['ka'] = { - days: ["კვირა", "ორშაბათი", "სამშაბათი", "ოთხშაბათი", "ხუთშაბათი", "პარასკევი", "შაბათი", "კვირა"], - daysShort: ["კვი", "ორშ", "სამ", "ოთხ", "ხუთ", "პარ", "შაბ", "კვი"], - daysMin: ["კვ", "ორ", "სა", "ოთ", "ხუ", "პა", "შა", "კვ"], - months: ["იანვარი", "თებერვალი", "მარტი", "აპრილი", "მაისი", "ივნისი", "ივლისი", "აგვისტო", "სექტემბერი", "ოქტომები", "ნოემბერი", "დეკემბერი"], - monthsShort: ["იან", "თებ", "მარ", "აპრ", "მაი", "ივნ", "ივლ", "აგვ", "სექ", "ოქტ", "ნოე", "დეკ"], - today: "დღეს", - clear: "გასუფთავება", - weekStart: 1, - format: "dd.mm.yyyy" - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.kk.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.kk.js deleted file mode 100644 index 94dd6b8f..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.kk.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Kazakh translation for bootstrap-datepicker - * Yerzhan Tolekov <era.tolekov@gmail.com> - */ -;(function($){ - $.fn.datepicker.dates['kk'] = { - days: ["Жексенбі", "Дүйсенбі", "Сейсенбі", "Сәрсенбі", "Бейсенбі", "Жұма", "Сенбі", "Жексенбі"], - daysShort: ["Жек", "Дүй", "Сей", "Сәр", "Бей", "Жұм", "Сен", "Жек"], - daysMin: ["Жк", "Дс", "Сс", "Ср", "Бс", "Жм", "Сн", "Жк"], - months: ["Қаңтар", "Ақпан", "Наурыз", "Сәуір", "Мамыр", "Маусым", "Шілде", "Тамыз", "Қыркүйек", "Қазан", "Қараша", "Желтоқсан"], - monthsShort: ["Қаң", "Ақп", "Нау", "Сәу", "Мамыр", "Мау", "Шлд", "Тмз", "Қыр", "Қзн", "Қар", "Жел"], - today: "Бүгін", - weekStart: 1 - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.kr.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.kr.js deleted file mode 100644 index 183a88d1..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.kr.js +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Korean translation for bootstrap-datepicker - * Gu Youn <http://github.com/guyoun> - */ -;(function($){ - $.fn.datepicker.dates['kr'] = { - days: ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일", "일요일"], - daysShort: ["일", "월", "화", "수", "목", "금", "토", "일"], - daysMin: ["일", "월", "화", "수", "목", "금", "토", "일"], - months: ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"], - monthsShort: ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"] - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.lt.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.lt.js deleted file mode 100644 index 11c1b3ad..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.lt.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Lithuanian translation for bootstrap-datepicker - * Šarūnas Gliebus <ssharunas@yahoo.co.uk> - */ - -;(function($){ - $.fn.datepicker.dates['lt'] = { - days: ["Sekmadienis", "Pirmadienis", "Antradienis", "Trečiadienis", "Ketvirtadienis", "Penktadienis", "Šeštadienis", "Sekmadienis"], - daysShort: ["S", "Pr", "A", "T", "K", "Pn", "Š", "S"], - daysMin: ["Sk", "Pr", "An", "Tr", "Ke", "Pn", "Št", "Sk"], - months: ["Sausis", "Vasaris", "Kovas", "Balandis", "Gegužė", "Birželis", "Liepa", "Rugpjūtis", "Rugsėjis", "Spalis", "Lapkritis", "Gruodis"], - monthsShort: ["Sau", "Vas", "Kov", "Bal", "Geg", "Bir", "Lie", "Rugp", "Rugs", "Spa", "Lap", "Gru"], - today: "Šiandien", - weekStart: 1 - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.lv.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.lv.js deleted file mode 100644 index 76d0f3a6..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.lv.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Latvian translation for bootstrap-datepicker - * Artis Avotins <artis@apit.lv> - */ - -;(function($){ - $.fn.datepicker.dates['lv'] = { - days: ["Svētdiena", "Pirmdiena", "Otrdiena", "Trešdiena", "Ceturtdiena", "Piektdiena", "Sestdiena", "Svētdiena"], - daysShort: ["Sv", "P", "O", "T", "C", "Pk", "S", "Sv"], - daysMin: ["Sv", "Pr", "Ot", "Tr", "Ce", "Pk", "Se", "Sv"], - months: ["Janvāris", "Februāris", "Marts", "Aprīlis", "Maijs", "Jūnijs", "Jūlijs", "Augusts", "Septembris", "Oktobris", "Novembris", "Decembris"], - monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mai", "Jūn", "Jūl", "Aug", "Sep", "Okt", "Nov", "Dec"], - today: "Šodien", - weekStart: 1 - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.mk.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.mk.js deleted file mode 100644 index 0ab8cf68..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.mk.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Macedonian translation for bootstrap-datepicker - * Marko Aleksic <psybaron@gmail.com> - */ -;(function($){ - $.fn.datepicker.dates['mk'] = { - days: ["Недела", "Понеделник", "Вторник", "Среда", "Четврток", "Петок", "Сабота", "Недела"], - daysShort: ["Нед", "Пон", "Вто", "Сре", "Чет", "Пет", "Саб", "Нед"], - daysMin: ["Не", "По", "Вт", "Ср", "Че", "Пе", "Са", "Не"], - months: ["Јануари", "Февруари", "Март", "Април", "Мај", "Јуни", "Јули", "Август", "Септември", "Октомври", "Ноември", "Декември"], - monthsShort: ["Јан", "Фев", "Мар", "Апр", "Мај", "Јун", "Јул", "Авг", "Сеп", "Окт", "Ное", "Дек"], - today: "Денес", - format: "dd.mm.yyyy" - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.ms.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.ms.js deleted file mode 100644 index fa3a21a5..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.ms.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Malay translation for bootstrap-datepicker - * Ateman Faiz <noorulfaiz@gmail.com> - */ -;(function($){ - $.fn.datepicker.dates['ms'] = { - days: ["Ahad", "Isnin", "Selasa", "Rabu", "Khamis", "Jumaat", "Sabtu", "Ahad"], - daysShort: ["Aha", "Isn", "Sel", "Rab", "Kha", "Jum", "Sab", "Aha"], - daysMin: ["Ah", "Is", "Se", "Ra", "Kh", "Ju", "Sa", "Ah"], - months: ["Januari", "Februari", "Mac", "April", "Mei", "Jun", "Julai", "Ogos", "September", "Oktober", "November", "Disember"], - monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Ogo", "Sep", "Okt", "Nov", "Dis"], - today: "Hari Ini" - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.nb.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.nb.js deleted file mode 100644 index 7b28e84f..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.nb.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Norwegian (bokmål) translation for bootstrap-datepicker - * Fredrik Sundmyhr <http://github.com/fsundmyhr> - */ -;(function($){ - $.fn.datepicker.dates['nb'] = { - days: ["Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag", "Søndag"], - daysShort: ["Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør", "Søn"], - daysMin: ["Sø", "Ma", "Ti", "On", "To", "Fr", "Lø", "Sø"], - months: ["Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember"], - monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Des"], - today: "I Dag" - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.nl-BE.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.nl-BE.js deleted file mode 100644 index ee4201a6..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.nl-BE.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Belgium-Dutch translation for bootstrap-datepicker - * Julien Poulin <poulin_julien@hotmail.com> - */ -;(function($){ - $.fn.datepicker.dates['nl-BE'] = { - days: ["Zondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrijdag", "Zaterdag", "Zondag"], - daysShort: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za", "Zo"], - daysMin: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za", "Zo"], - months: ["Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December"], - monthsShort: ["Jan", "Feb", "Mrt", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"], - today: "Vandaag", - clear: "Leegmaken", - weekStart: 1, - format: "dd/mm/yyyy" - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.nl.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.nl.js deleted file mode 100644 index 13a2f1a3..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.nl.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Dutch translation for bootstrap-datepicker - * Reinier Goltstein <mrgoltstein@gmail.com> - */ -;(function($){ - $.fn.datepicker.dates['nl'] = { - days: ["Zondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrijdag", "Zaterdag", "Zondag"], - daysShort: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za", "Zo"], - daysMin: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za", "Zo"], - months: ["Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December"], - monthsShort: ["Jan", "Feb", "Mrt", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"], - today: "Vandaag" - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.no.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.no.js deleted file mode 100644 index c29ec83b..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.no.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Norwegian translation for bootstrap-datepicker - **/ -;(function($){ - $.fn.datepicker.dates['no'] = { - days: ['Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag'], - daysShort: ['Søn','Man','Tir','Ons','Tor','Fre','Lør'], - daysMin: ['Sø','Ma','Ti','On','To','Fr','Lø'], - months: ['Januar','Februar','Mars','April','Mai','Juni','Juli','August','September','Oktober','November','Desember'], - monthsShort: ['Jan','Feb','Mar','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Des'], - today: 'I dag', - clear: 'Nullstill', - weekStart: 1, - format: 'dd.mm.yyyy' - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.pl.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.pl.js deleted file mode 100644 index f3fff8c8..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.pl.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Polish translation for bootstrap-datepicker - * Robert <rtpm@gazeta.pl> - */ -;(function($){ - $.fn.datepicker.dates['pl'] = { - days: ["Niedziela", "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota", "Niedziela"], - daysShort: ["Nie", "Pn", "Wt", "Śr", "Czw", "Pt", "So", "Nie"], - daysMin: ["N", "Pn", "Wt", "Śr", "Cz", "Pt", "So", "N"], - months: ["Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec", "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień"], - monthsShort: ["Sty", "Lu", "Mar", "Kw", "Maj", "Cze", "Lip", "Sie", "Wrz", "Pa", "Lis", "Gru"], - today: "Dzisiaj", - weekStart: 1 - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.pt-BR.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.pt-BR.js deleted file mode 100644 index eb642b7c..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.pt-BR.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Brazilian translation for bootstrap-datepicker - * Cauan Cabral <cauan@radig.com.br> - */ -;(function($){ - $.fn.datepicker.dates['pt-BR'] = { - days: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado", "Domingo"], - daysShort: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb", "Dom"], - daysMin: ["Do", "Se", "Te", "Qu", "Qu", "Se", "Sa", "Do"], - months: ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"], - monthsShort: ["Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"], - today: "Hoje", - clear: "Limpar" - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.pt.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.pt.js deleted file mode 100644 index e54981d3..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.pt.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Portuguese translation for bootstrap-datepicker - * Original code: Cauan Cabral <cauan@radig.com.br> - * Tiago Melo <tiago.blackcode@gmail.com> - */ -;(function($){ - $.fn.datepicker.dates['pt'] = { - days: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado", "Domingo"], - daysShort: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb", "Dom"], - daysMin: ["Do", "Se", "Te", "Qu", "Qu", "Se", "Sa", "Do"], - months: ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"], - monthsShort: ["Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"], - today: "Hoje", - clear: "Limpar" - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.ro.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.ro.js deleted file mode 100644 index e1e65df2..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.ro.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Romanian translation for bootstrap-datepicker - * Cristian Vasile <cristi.mie@gmail.com> - */ -;(function($){ - $.fn.datepicker.dates['ro'] = { - days: ["Duminică", "Luni", "Marţi", "Miercuri", "Joi", "Vineri", "Sâmbătă", "Duminică"], - daysShort: ["Dum", "Lun", "Mar", "Mie", "Joi", "Vin", "Sâm", "Dum"], - daysMin: ["Du", "Lu", "Ma", "Mi", "Jo", "Vi", "Sâ", "Du"], - months: ["Ianuarie", "Februarie", "Martie", "Aprilie", "Mai", "Iunie", "Iulie", "August", "Septembrie", "Octombrie", "Noiembrie", "Decembrie"], - monthsShort: ["Ian", "Feb", "Mar", "Apr", "Mai", "Iun", "Iul", "Aug", "Sep", "Oct", "Nov", "Dec"], - today: "Astăzi", - clear: "Șterge", - weekStart: 1 - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.rs-latin.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.rs-latin.js deleted file mode 100644 index d9424852..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.rs-latin.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Serbian latin translation for bootstrap-datepicker - * Bojan Milosavlević <milboj@gmail.com> - */ -;(function($){ - $.fn.datepicker.dates['rs-latin'] = { - days: ["Nedelja","Ponedeljak", "Utorak", "Sreda", "Četvrtak", "Petak", "Subota", "Nedelja"], - daysShort: ["Ned", "Pon", "Uto", "Sre", "Čet", "Pet", "Sub", "Ned"], - daysMin: ["N", "Po", "U", "Sr", "Č", "Pe", "Su", "N"], - months: ["Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar"], - monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Avg", "Sep", "Okt", "Nov", "Dec"], - today: "Danas" - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.rs.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.rs.js deleted file mode 100644 index 6b657473..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.rs.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Serbian cyrillic translation for bootstrap-datepicker - * Bojan Milosavlević <milboj@gmail.com> - */ -;(function($){ - $.fn.datepicker.dates['rs'] = { - days: ["Недеља","Понедељак", "Уторак", "Среда", "Четвртак", "Петак", "Субота", "Недеља"], - daysShort: ["Нед", "Пон", "Уто", "Сре", "Чет", "Пет", "Суб", "Нед"], - daysMin: ["Н", "По", "У", "Ср", "Ч", "Пе", "Су", "Н"], - months: ["Јануар", "Фебруар", "Март", "Април", "Мај", "Јун", "Јул", "Август", "Септембар", "Октобар", "Новембар", "Децембар"], - monthsShort: ["Јан", "Феб", "Мар", "Апр", "Мај", "Јун", "Јул", "Авг", "Сеп", "Окт", "Нов", "Дец"], - today: "Данас" - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.ru.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.ru.js deleted file mode 100644 index e230aa92..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.ru.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Russian translation for bootstrap-datepicker - * Victor Taranenko <darwin@snowdale.com> - */ -;(function($){ - $.fn.datepicker.dates['ru'] = { - days: ["Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье"], - daysShort: ["Вск", "Пнд", "Втр", "Срд", "Чтв", "Птн", "Суб", "Вск"], - daysMin: ["Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Вс"], - months: ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"], - monthsShort: ["Янв", "Фев", "Мар", "Апр", "Май", "Июн", "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек"], - today: "Сегодня", - weekStart: 1 - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.sk.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.sk.js deleted file mode 100644 index c48032a5..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.sk.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Slovak translation for bootstrap-datepicker - * Marek Lichtner <marek@licht.sk> - * Fixes by Michal Remiš <michal.remis@gmail.com> - */ -;(function($){ - $.fn.datepicker.dates["sk"] = { - days: ["Nedeľa", "Pondelok", "Utorok", "Streda", "Štvrtok", "Piatok", "Sobota", "Nedeľa"], - daysShort: ["Ned", "Pon", "Uto", "Str", "Štv", "Pia", "Sob", "Ned"], - daysMin: ["Ne", "Po", "Ut", "St", "Št", "Pia", "So", "Ne"], - months: ["Január", "Február", "Marec", "Apríl", "Máj", "Jún", "Júl", "August", "September", "Október", "November", "December"], - monthsShort: ["Jan", "Feb", "Mar", "Apr", "Máj", "Jún", "Júl", "Aug", "Sep", "Okt", "Nov", "Dec"], - today: "Dnes" - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.sl.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.sl.js deleted file mode 100644 index 41b0e060..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.sl.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Slovene translation for bootstrap-datepicker - * Gregor Rudolf <gregor.rudolf@gmail.com> - */ -;(function($){ - $.fn.datepicker.dates['sl'] = { - days: ["Nedelja", "Ponedeljek", "Torek", "Sreda", "Četrtek", "Petek", "Sobota", "Nedelja"], - daysShort: ["Ned", "Pon", "Tor", "Sre", "Čet", "Pet", "Sob", "Ned"], - daysMin: ["Ne", "Po", "To", "Sr", "Če", "Pe", "So", "Ne"], - months: ["Januar", "Februar", "Marec", "April", "Maj", "Junij", "Julij", "Avgust", "September", "Oktober", "November", "December"], - monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Avg", "Sep", "Okt", "Nov", "Dec"], - today: "Danes" - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.sq.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.sq.js deleted file mode 100644 index a045a9d9..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.sq.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Albanian translation for bootstrap-datepicker - * Tomor Pupovci <http://www.github.com/ttomor> - */ -;(function($){ - $.fn.datepicker.dates['sq'] = { - days: ["E Diel", "E Hënë", "E martē", "E mërkurë", "E Enjte", "E Premte", "E Shtunë", "E Diel"], - daysShort: ["Die", "Hën", "Mar", "Mër", "Enj", "Pre", "Shtu", "Die"], - daysMin: ["Di", "Hë", "Ma", "Më", "En", "Pr", "Sht", "Di"], - months: ["Janar", "Shkurt", "Mars", "Prill", "Maj", "Qershor", "Korrik", "Gusht", "Shtator", "Tetor", "Nëntor", "Dhjetor"], - monthsShort: ["Jan", "Shk", "Mar", "Pri", "Maj", "Qer", "Korr", "Gu", "Sht", "Tet", "Nën", "Dhjet"], - today: "Sot" - }; -}(jQuery)); - diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.sv.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.sv.js deleted file mode 100644 index 029cea00..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.sv.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Swedish translation for bootstrap-datepicker - * Patrik Ragnarsson <patrik@starkast.net> - */ -;(function($){ - $.fn.datepicker.dates['sv'] = { - days: ["Söndag", "Måndag", "Tisdag", "Onsdag", "Torsdag", "Fredag", "Lördag", "Söndag"], - daysShort: ["Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör", "Sön"], - daysMin: ["Sö", "Må", "Ti", "On", "To", "Fr", "Lö", "Sö"], - months: ["Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December"], - monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"], - today: "Idag", - format: "yyyy-mm-dd", - weekStart: 1 - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.sw.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.sw.js deleted file mode 100644 index 622e0ef0..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.sw.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Swahili translation for bootstrap-datepicker - * Edwin Mugendi <https://github.com/edwinmugendi> - * Source: http://scriptsource.org/cms/scripts/page.php?item_id=entry_detail&uid=xnfaqyzcku - */ -;(function($){ - $.fn.datepicker.dates['sw'] = { - days: ["Jumapili", "Jumatatu", "Jumanne", "Jumatano", "Alhamisi", "Ijumaa", "Jumamosi", "Jumapili"], - daysShort: ["J2", "J3", "J4", "J5", "Alh", "Ij", "J1", "J2"], - daysMin: ["2", "3", "4", "5", "A", "I", "1", "2"], - months: ["Januari", "Februari", "Machi", "Aprili", "Mei", "Juni", "Julai", "Agosti", "Septemba", "Oktoba", "Novemba", "Desemba"], - monthsShort: ["Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ago", "Sep", "Okt", "Nov", "Des"], - today: "Leo" - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.th.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.th.js deleted file mode 100644 index 562b063c..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.th.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Thai translation for bootstrap-datepicker - * Suchau Jiraprapot <seroz24@gmail.com> - */ -;(function($){ - $.fn.datepicker.dates['th'] = { - days: ["อาทิตย์", "จันทร์", "อังคาร", "พุธ", "พฤหัส", "ศุกร์", "เสาร์", "อาทิตย์"], - daysShort: ["อา", "จ", "อ", "พ", "พฤ", "ศ", "ส", "อา"], - daysMin: ["อา", "จ", "อ", "พ", "พฤ", "ศ", "ส", "อา"], - months: ["มกราคม", "กุมภาพันธ์", "มีนาคม", "เมษายน", "พฤษภาคม", "มิถุนายน", "กรกฎาคม", "สิงหาคม", "กันยายน", "ตุลาคม", "พฤศจิกายน", "ธันวาคม"], - monthsShort: ["ม.ค.", "ก.พ.", "มี.ค.", "เม.ย.", "พ.ค.", "มิ.ย.", "ก.ค.", "ส.ค.", "ก.ย.", "ต.ค.", "พ.ย.", "ธ.ค."], - today: "วันนี้" - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.tr.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.tr.js deleted file mode 100644 index 2be8b6d8..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.tr.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Turkish translation for bootstrap-datepicker - * Serkan Algur <kaisercrazy_2@hotmail.com> - */ -;(function($){ - $.fn.datepicker.dates['tr'] = { - days: ["Pazar", "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi", "Pazar"], - daysShort: ["Pz", "Pzt", "Sal", "Çrş", "Prş", "Cu", "Cts", "Pz"], - daysMin: ["Pz", "Pzt", "Sa", "Çr", "Pr", "Cu", "Ct", "Pz"], - months: ["Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"], - monthsShort: ["Oca", "Şub", "Mar", "Nis", "May", "Haz", "Tem", "Ağu", "Eyl", "Eki", "Kas", "Ara"], - today: "Bugün", - format: "dd.mm.yyyy" - }; -}(jQuery)); - diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.ua.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.ua.js deleted file mode 100644 index d4bb0f02..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.ua.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Ukrainian translation for bootstrap-datepicker - * Igor Polynets - */ -;(function($){ - $.fn.datepicker.dates['ua'] = { - days: ["Неділя", "Понеділок", "Вівторок", "Середа", "Четвер", "П'ятница", "Субота", "Неділя"], - daysShort: ["Нед", "Пнд", "Втр", "Срд", "Чтв", "Птн", "Суб", "Нед"], - daysMin: ["Нд", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Нд"], - months: ["Cічень", "Лютий", "Березень", "Квітень", "Травень", "Червень", "Липень", "Серпень", "Вересень", "Жовтень", "Листопад", "Грудень"], - monthsShort: ["Січ", "Лют", "Бер", "Кві", "Тра", "Чер", "Лип", "Сер", "Вер", "Жов", "Лис", "Гру"], - today: "Сьогодні", - weekStart: 1 - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.vi.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.vi.js deleted file mode 100644 index a8cc52ee..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.vi.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Vietnamese translation for bootstrap-datepicker - * An Vo <https://github.com/anvoz/> - */ -;(function($){ - $.fn.datepicker.dates['vi'] = { - days: ["Chủ nhật", "Thứ hai", "Thứ ba", "Thứ tư", "Thứ năm", "Thứ sáu", "Thứ bảy", "Chủ nhật"], - daysShort: ["CN", "Thứ 2", "Thứ 3", "Thứ 4", "Thứ 5", "Thứ 6", "Thứ 7", "CN"], - daysMin: ["CN", "T2", "T3", "T4", "T5", "T6", "T7", "CN"], - months: ["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"], - monthsShort: ["Th1", "Th2", "Th3", "Th4", "Th5", "Th6", "Th7", "Th8", "Th9", "Th10", "Th11", "Th12"], - today: "Hôm nay", - clear: "Xóa", - format: "dd/mm/yyyy" - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.zh-CN.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.zh-CN.js deleted file mode 100644 index d6625ec6..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.zh-CN.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Simplified Chinese translation for bootstrap-datepicker - * Yuan Cheung <advanimal@gmail.com> - */ -;(function($){ - $.fn.datepicker.dates['zh-CN'] = { - days: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"], - daysShort: ["周日", "周一", "周二", "周三", "周四", "周五", "周六", "周日"], - daysMin: ["日", "一", "二", "三", "四", "五", "六", "日"], - months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], - monthsShort: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], - today: "今日", - format: "yyyy年mm月dd日", - weekStart: 1 - }; -}(jQuery)); diff --git a/assets/plugins/datepicker/locales/bootstrap-datepicker.zh-TW.js b/assets/plugins/datepicker/locales/bootstrap-datepicker.zh-TW.js deleted file mode 100644 index 53337ae0..00000000 --- a/assets/plugins/datepicker/locales/bootstrap-datepicker.zh-TW.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Traditional Chinese translation for bootstrap-datepicker - * Rung-Sheng Jang <daniel@i-trend.co.cc> - * FrankWu <frankwu100@gmail.com> Fix more appropriate use of Traditional Chinese habit - */ -;(function($){ - $.fn.datepicker.dates['zh-TW'] = { - days: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"], - daysShort: ["週日", "週一", "週二", "週三", "週四", "週五", "週六", "週日"], - daysMin: ["日", "一", "二", "三", "四", "五", "六", "日"], - months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], - monthsShort: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], - today: "今天", - format: "yyyy年mm月dd日", - weekStart: 1 - }; -}(jQuery)); diff --git a/assets/plugins/daterangepicker/daterangepicker-bs3.css b/assets/plugins/daterangepicker/daterangepicker-bs3.css deleted file mode 100644 index 7a501fb0..00000000 --- a/assets/plugins/daterangepicker/daterangepicker-bs3.css +++ /dev/null @@ -1,335 +0,0 @@ -/*! - * Stylesheet for the Date Range Picker, for use with Bootstrap 3.x - * - * Copyright 2013-2015 Dan Grossman ( http://www.dangrossman.info ) - * Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php - * - * Built for http://www.improvely.com - */ - - .daterangepicker.dropdown-menu { - max-width: none; - z-index: 3000; -} - -.daterangepicker.opensleft .ranges, .daterangepicker.opensleft .calendar { - float: left; - margin: 4px; -} - -.daterangepicker.opensright .ranges, .daterangepicker.opensright .calendar, -.daterangepicker.openscenter .ranges, .daterangepicker.openscenter .calendar { - float: right; - margin: 4px; -} - -.daterangepicker.single .ranges, .daterangepicker.single .calendar { - float: none; -} - -.daterangepicker .ranges { - width: 160px; - text-align: left; -} - -.daterangepicker .ranges .range_inputs>div { - float: left; -} - -.daterangepicker .ranges .range_inputs>div:nth-child(2) { - padding-left: 11px; -} - -.daterangepicker .calendar { - display: none; - max-width: 270px; -} - -.daterangepicker.show-calendar .calendar { - display: block; -} - -.daterangepicker .calendar.single .calendar-date { - border: none; -} - -.daterangepicker .calendar th, .daterangepicker .calendar td { - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; - white-space: nowrap; - text-align: center; - min-width: 32px; -} - -.daterangepicker .daterangepicker_start_input label, -.daterangepicker .daterangepicker_end_input label { - color: #333; - display: block; - font-size: 11px; - font-weight: normal; - height: 20px; - line-height: 20px; - margin-bottom: 2px; - text-shadow: #fff 1px 1px 0px; - text-transform: uppercase; - width: 74px; -} - -.daterangepicker .ranges input { - font-size: 11px; -} - -.daterangepicker .ranges .input-mini { - border: 1px solid #ccc; - border-radius: 4px; - color: #555; - display: block; - font-size: 11px; - height: 30px; - line-height: 30px; - vertical-align: middle; - margin: 0 0 10px 0; - padding: 0 6px; - width: 74px; -} - -.daterangepicker .ranges ul { - list-style: none; - margin: 0; - padding: 0; -} - -.daterangepicker .ranges li { - font-size: 13px; - background: #f5f5f5; - border: 1px solid #f5f5f5; - color: #08c; - padding: 3px 12px; - margin-bottom: 8px; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; - cursor: pointer; -} - -.daterangepicker .ranges li.active, .daterangepicker .ranges li:hover { - background: #08c; - border: 1px solid #08c; - color: #fff; -} - -.daterangepicker .calendar-date { - border: 1px solid #ddd; - padding: 4px; - border-radius: 4px; - background: #fff; -} - -.daterangepicker .calendar-time { - text-align: center; - margin: 8px auto 0 auto; - line-height: 30px; -} - -.daterangepicker { - position: absolute; - background: #fff; - top: 100px; - left: 20px; - padding: 4px; - margin-top: 1px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -.daterangepicker.opensleft:before { - position: absolute; - top: -7px; - right: 9px; - display: inline-block; - border-right: 7px solid transparent; - border-bottom: 7px solid #ccc; - border-left: 7px solid transparent; - border-bottom-color: rgba(0, 0, 0, 0.2); - content: ''; -} - -.daterangepicker.opensleft:after { - position: absolute; - top: -6px; - right: 10px; - display: inline-block; - border-right: 6px solid transparent; - border-bottom: 6px solid #fff; - border-left: 6px solid transparent; - content: ''; -} - -.daterangepicker.openscenter:before { - position: absolute; - top: -7px; - left: 0; - right: 0; - width: 0; - margin-left: auto; - margin-right: auto; - display: inline-block; - border-right: 7px solid transparent; - border-bottom: 7px solid #ccc; - border-left: 7px solid transparent; - border-bottom-color: rgba(0, 0, 0, 0.2); - content: ''; -} - -.daterangepicker.openscenter:after { - position: absolute; - top: -6px; - left: 0; - right: 0; - width: 0; - margin-left: auto; - margin-right: auto; - display: inline-block; - border-right: 6px solid transparent; - border-bottom: 6px solid #fff; - border-left: 6px solid transparent; - content: ''; -} - -.daterangepicker.opensright:before { - position: absolute; - top: -7px; - left: 9px; - display: inline-block; - border-right: 7px solid transparent; - border-bottom: 7px solid #ccc; - border-left: 7px solid transparent; - border-bottom-color: rgba(0, 0, 0, 0.2); - content: ''; -} - -.daterangepicker.opensright:after { - position: absolute; - top: -6px; - left: 10px; - display: inline-block; - border-right: 6px solid transparent; - border-bottom: 6px solid #fff; - border-left: 6px solid transparent; - content: ''; -} - -.daterangepicker.dropup{ - margin-top: -5px; -} -.daterangepicker.dropup:before{ - top: initial; - bottom:-7px; - border-bottom: initial; - border-top: 7px solid #ccc; -} -.daterangepicker.dropup:after{ - top: initial; - bottom:-6px; - border-bottom: initial; - border-top: 6px solid #fff; -} - -.daterangepicker table { - width: 100%; - margin: 0; -} - -.daterangepicker td, .daterangepicker th { - text-align: center; - width: 20px; - height: 20px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - cursor: pointer; - white-space: nowrap; -} - -.daterangepicker td.off { - color: #999; -} - -.daterangepicker td.disabled, .daterangepicker option.disabled { - color: #999; -} - -.daterangepicker td.available:hover, .daterangepicker th.available:hover { - background: #eee; -} - -.daterangepicker td.in-range { - background: #ebf4f8; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} - -.daterangepicker td.start-date { - -webkit-border-radius: 4px 0 0 4px; - -moz-border-radius: 4px 0 0 4px; - border-radius: 4px 0 0 4px; -} - -.daterangepicker td.end-date { - -webkit-border-radius: 0 4px 4px 0; - -moz-border-radius: 0 4px 4px 0; - border-radius: 0 4px 4px 0; -} - -.daterangepicker td.start-date.end-date { - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -.daterangepicker td.active, .daterangepicker td.active:hover { - background-color: #357ebd; - border-color: #3071a9; - color: #fff; -} - -.daterangepicker td.week, .daterangepicker th.week { - font-size: 80%; - color: #ccc; -} - -.daterangepicker select.monthselect, .daterangepicker select.yearselect { - font-size: 12px; - padding: 1px; - height: auto; - margin: 0; - cursor: default; -} - -.daterangepicker select.monthselect { - margin-right: 2%; - width: 56%; -} - -.daterangepicker select.yearselect { - width: 40%; -} - -.daterangepicker select.hourselect, .daterangepicker select.minuteselect, .daterangepicker select.secondselect, .daterangepicker select.ampmselect { - width: 50px; - margin-bottom: 0; -} - -.daterangepicker_start_input { - float: left; -} - -.daterangepicker_end_input { - float: left; - padding-left: 11px -} - -.daterangepicker th.month { - width: auto; -} diff --git a/assets/plugins/daterangepicker/daterangepicker.css b/assets/plugins/daterangepicker/daterangepicker.css deleted file mode 100644 index dfce19cb..00000000 --- a/assets/plugins/daterangepicker/daterangepicker.css +++ /dev/null @@ -1,232 +0,0 @@ -.daterangepicker { - position: absolute; - color: inherit; - background: #fff; - border-radius: 4px; - width: 278px; - padding: 4px; - margin-top: 1px; - top: 100px; - left: 20px; - /* Calendars */ } - .daterangepicker:before, .daterangepicker:after { - position: absolute; - display: inline-block; - border-bottom-color: rgba(0, 0, 0, 0.2); - content: ''; } - .daterangepicker:before { - top: -7px; - border-right: 7px solid transparent; - border-left: 7px solid transparent; - border-bottom: 7px solid #ccc; } - .daterangepicker:after { - top: -6px; - border-right: 6px solid transparent; - border-bottom: 6px solid #fff; - border-left: 6px solid transparent; } - .daterangepicker.opensleft:before { - right: 9px; } - .daterangepicker.opensleft:after { - right: 10px; } - .daterangepicker.openscenter:before { - left: 0; - right: 0; - width: 0; - margin-left: auto; - margin-right: auto; } - .daterangepicker.openscenter:after { - left: 0; - right: 0; - width: 0; - margin-left: auto; - margin-right: auto; } - .daterangepicker.opensright:before { - left: 9px; } - .daterangepicker.opensright:after { - left: 10px; } - .daterangepicker.dropup { - margin-top: -5px; } - .daterangepicker.dropup:before { - top: initial; - bottom: -7px; - border-bottom: initial; - border-top: 7px solid #ccc; } - .daterangepicker.dropup:after { - top: initial; - bottom: -6px; - border-bottom: initial; - border-top: 6px solid #fff; } - .daterangepicker.dropdown-menu { - max-width: none; - z-index: 3001; } - .daterangepicker.single .ranges, .daterangepicker.single .calendar { - float: none; } - .daterangepicker.show-calendar .calendar { - display: block; } - .daterangepicker .calendar { - display: none; - max-width: 270px; - margin: 4px; } - .daterangepicker .calendar.single .calendar-table { - border: none; } - .daterangepicker .calendar th, .daterangepicker .calendar td { - white-space: nowrap; - text-align: center; - min-width: 32px; } - .daterangepicker .calendar-table { - border: 1px solid #fff; - padding: 4px; - border-radius: 4px; - background: #fff; } - .daterangepicker table { - width: 100%; - margin: 0; } - .daterangepicker td, .daterangepicker th { - text-align: center; - width: 20px; - height: 20px; - border-radius: 4px; - border: 1px solid transparent; - white-space: nowrap; - cursor: pointer; } - .daterangepicker td.available:hover, .daterangepicker th.available:hover { - background: #eee; } - .daterangepicker td.week, .daterangepicker th.week { - font-size: 80%; - color: #ccc; } - .daterangepicker td.off, .daterangepicker td.off.in-range, .daterangepicker td.off.start-date, .daterangepicker td.off.end-date { - background-color: #fff; - border-color: transparent; - color: #999; } - .daterangepicker td.in-range { - background-color: #ebf4f8; - border-color: transparent; - color: #000; - border-radius: 0; } - .daterangepicker td.start-date { - border-radius: 4px 0 0 4px; } - .daterangepicker td.end-date { - border-radius: 0 4px 4px 0; } - .daterangepicker td.start-date.end-date { - border-radius: 4px; } - .daterangepicker td.active, .daterangepicker td.active:hover { - background-color: #357ebd; - border-color: transparent; - color: #fff; } - .daterangepicker th.month { - width: auto; } - .daterangepicker td.disabled, .daterangepicker option.disabled { - color: #999; - cursor: not-allowed; - text-decoration: line-through; } - .daterangepicker select.monthselect, .daterangepicker select.yearselect { - font-size: 12px; - padding: 1px; - height: auto; - margin: 0; - cursor: default; } - .daterangepicker select.monthselect { - margin-right: 2%; - width: 56%; } - .daterangepicker select.yearselect { - width: 40%; } - .daterangepicker select.hourselect, .daterangepicker select.minuteselect, .daterangepicker select.secondselect, .daterangepicker select.ampmselect { - width: 50px; - margin-bottom: 0; } - .daterangepicker .input-mini { - border: 1px solid #ccc; - border-radius: 4px; - color: #555; - height: 30px; - line-height: 30px; - display: block; - vertical-align: middle; - margin: 0 0 5px 0; - padding: 0 6px 0 28px; - width: 100%; } - .daterangepicker .input-mini.active { - border: 1px solid #08c; - border-radius: 4px; } - .daterangepicker .daterangepicker_input { - position: relative; } - .daterangepicker .daterangepicker_input i { - position: absolute; - left: 8px; - top: 8px; } - .daterangepicker .calendar-time { - text-align: center; - margin: 5px auto; - line-height: 30px; - position: relative; - padding-left: 28px; } - .daterangepicker .calendar-time select.disabled { - color: #ccc; - cursor: not-allowed; } - -.ranges { - font-size: 11px; - float: none; - margin: 4px; - text-align: left; } - .ranges ul { - list-style: none; - margin: 0 auto; - padding: 0; - width: 100%; } - .ranges li { - font-size: 13px; - background: #f5f5f5; - border: 1px solid #f5f5f5; - border-radius: 4px; - color: #08c; - padding: 3px 12px; - margin-bottom: 8px; - cursor: pointer; } - .ranges li:hover { - background: #08c; - border: 1px solid #08c; - color: #fff; } - .ranges li.active { - background: #08c; - border: 1px solid #08c; - color: #fff; } - -/* Larger Screen Styling */ -@media (min-width: 564px) { - .daterangepicker { - width: auto; } - .daterangepicker .ranges ul { - width: 160px; } - .daterangepicker.single .ranges ul { - width: 100%; } - .daterangepicker.single .calendar.left { - clear: none; } - .daterangepicker.single .ranges, .daterangepicker.single .calendar { - float: left; } - .daterangepicker .calendar.left { - clear: left; - margin-right: 0; } - .daterangepicker .calendar.left .calendar-table { - border-right: none; - border-top-right-radius: 0; - border-bottom-right-radius: 0; } - .daterangepicker .calendar.right { - margin-left: 0; } - .daterangepicker .calendar.right .calendar-table { - border-left: none; - border-top-left-radius: 0; - border-bottom-left-radius: 0; } - .daterangepicker .left .daterangepicker_input { - padding-right: 12px; } - .daterangepicker .calendar.left .calendar-table { - padding-right: 12px; } - .daterangepicker .ranges, .daterangepicker .calendar { - float: left; } } - -@media (min-width: 730px) { - .daterangepicker .ranges { - width: auto; - float: left; } - .daterangepicker .calendar.left { - clear: none; } } - diff --git a/assets/plugins/daterangepicker/daterangepicker.js b/assets/plugins/daterangepicker/daterangepicker.js deleted file mode 100644 index be710052..00000000 --- a/assets/plugins/daterangepicker/daterangepicker.js +++ /dev/null @@ -1,1542 +0,0 @@ -/** -* @version: 2.1.19 -* @author: Dan Grossman http://www.dangrossman.info/ -* @copyright: Copyright (c) 2012-2015 Dan Grossman. All rights reserved. -* @license: Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php -* @website: https://www.improvely.com/ -*/ - -(function(root, factory) { - - if (typeof define === 'function' && define.amd) { - define(['moment', 'jquery', 'exports'], function(momentjs, $, exports) { - root.daterangepicker = factory(root, exports, momentjs, $); - }); - - } else if (typeof exports !== 'undefined') { - var momentjs = require('moment'); - var jQuery = (typeof window != 'undefined') ? window.jQuery : undefined; //isomorphic issue - if (!jQuery) { - try { - jQuery = require('jquery'); - if (!jQuery.fn) jQuery.fn = {}; //isomorphic issue - } catch (err) { - if (!jQuery) throw new Error('jQuery dependency not found'); - } - } - - factory(root, exports, momentjs, jQuery); - - // Finally, as a browser global. - } else { - root.daterangepicker = factory(root, {}, root.moment || moment, (root.jQuery || root.Zepto || root.ender || root.$)); - } - -}(this || {}, function(root, daterangepicker, moment, $) { // 'this' doesn't exist on a server - - var DateRangePicker = function(element, options, cb) { - - //default settings for options - this.parentEl = 'body'; - this.element = $(element); - this.startDate = moment().startOf('day'); - this.endDate = moment().endOf('day'); - this.minDate = false; - this.maxDate = false; - this.dateLimit = false; - this.autoApply = false; - this.singleDatePicker = false; - this.showDropdowns = false; - this.showWeekNumbers = false; - this.showISOWeekNumbers = false; - this.timePicker = false; - this.timePicker24Hour = false; - this.timePickerIncrement = 1; - this.timePickerSeconds = false; - this.linkedCalendars = true; - this.autoUpdateInput = true; - this.alwaysShowCalendars = false; - this.ranges = {}; - - this.opens = 'right'; - if (this.element.hasClass('pull-right')) - this.opens = 'left'; - - this.drops = 'down'; - if (this.element.hasClass('dropup')) - this.drops = 'up'; - - this.buttonClasses = 'btn btn-sm'; - this.applyClass = 'btn-success'; - this.cancelClass = 'btn-default'; - - this.locale = { - format: 'MM/DD/YYYY', - separator: ' - ', - applyLabel: 'Apply', - cancelLabel: 'Cancel', - weekLabel: 'W', - customRangeLabel: 'Custom Range', - daysOfWeek: moment.weekdaysMin(), - monthNames: moment.monthsShort(), - firstDay: moment.localeData().firstDayOfWeek() - }; - - this.callback = function() { }; - - //some state information - this.isShowing = false; - this.leftCalendar = {}; - this.rightCalendar = {}; - - //custom options from user - if (typeof options !== 'object' || options === null) - options = {}; - - //allow setting options with data attributes - //data-api options will be overwritten with custom javascript options - options = $.extend(this.element.data(), options); - - //html template for the picker UI - if (typeof options.template !== 'string' && !(options.template instanceof $)) - options.template = '<div class="daterangepicker dropdown-menu">' + - '<div class="calendar left">' + - '<div class="daterangepicker_input">' + - '<input class="input-mini" type="text" name="daterangepicker_start" value="" />' + - '<i class="fa fa-calendar glyphicon glyphicon-calendar"></i>' + - '<div class="calendar-time">' + - '<div></div>' + - '<i class="fa fa-clock-o glyphicon glyphicon-time"></i>' + - '</div>' + - '</div>' + - '<div class="calendar-table"></div>' + - '</div>' + - '<div class="calendar right">' + - '<div class="daterangepicker_input">' + - '<input class="input-mini" type="text" name="daterangepicker_end" value="" />' + - '<i class="fa fa-calendar glyphicon glyphicon-calendar"></i>' + - '<div class="calendar-time">' + - '<div></div>' + - '<i class="fa fa-clock-o glyphicon glyphicon-time"></i>' + - '</div>' + - '</div>' + - '<div class="calendar-table"></div>' + - '</div>' + - '<div class="ranges">' + - '<div class="range_inputs">' + - '<button class="applyBtn" disabled="disabled" type="button"></button> ' + - '<button class="cancelBtn" type="button"></button>' + - '</div>' + - '</div>' + - '</div>'; - - this.parentEl = (options.parentEl && $(options.parentEl).length) ? $(options.parentEl) : $(this.parentEl); - this.container = $(options.template).appendTo(this.parentEl); - - // - // handle all the possible options overriding defaults - // - - if (typeof options.locale === 'object') { - - if (typeof options.locale.format === 'string') - this.locale.format = options.locale.format; - - if (typeof options.locale.separator === 'string') - this.locale.separator = options.locale.separator; - - if (typeof options.locale.daysOfWeek === 'object') - this.locale.daysOfWeek = options.locale.daysOfWeek.slice(); - - if (typeof options.locale.monthNames === 'object') - this.locale.monthNames = options.locale.monthNames.slice(); - - if (typeof options.locale.firstDay === 'number') - this.locale.firstDay = options.locale.firstDay; - - if (typeof options.locale.applyLabel === 'string') - this.locale.applyLabel = options.locale.applyLabel; - - if (typeof options.locale.cancelLabel === 'string') - this.locale.cancelLabel = options.locale.cancelLabel; - - if (typeof options.locale.weekLabel === 'string') - this.locale.weekLabel = options.locale.weekLabel; - - if (typeof options.locale.customRangeLabel === 'string') - this.locale.customRangeLabel = options.locale.customRangeLabel; - - } - - if (typeof options.startDate === 'string') - this.startDate = moment(options.startDate, this.locale.format); - - if (typeof options.endDate === 'string') - this.endDate = moment(options.endDate, this.locale.format); - - if (typeof options.minDate === 'string') - this.minDate = moment(options.minDate, this.locale.format); - - if (typeof options.maxDate === 'string') - this.maxDate = moment(options.maxDate, this.locale.format); - - if (typeof options.startDate === 'object') - this.startDate = moment(options.startDate); - - if (typeof options.endDate === 'object') - this.endDate = moment(options.endDate); - - if (typeof options.minDate === 'object') - this.minDate = moment(options.minDate); - - if (typeof options.maxDate === 'object') - this.maxDate = moment(options.maxDate); - - // sanity check for bad options - if (this.minDate && this.startDate.isBefore(this.minDate)) - this.startDate = this.minDate.clone(); - - // sanity check for bad options - if (this.maxDate && this.endDate.isAfter(this.maxDate)) - this.endDate = this.maxDate.clone(); - - if (typeof options.applyClass === 'string') - this.applyClass = options.applyClass; - - if (typeof options.cancelClass === 'string') - this.cancelClass = options.cancelClass; - - if (typeof options.dateLimit === 'object') - this.dateLimit = options.dateLimit; - - if (typeof options.opens === 'string') - this.opens = options.opens; - - if (typeof options.drops === 'string') - this.drops = options.drops; - - if (typeof options.showWeekNumbers === 'boolean') - this.showWeekNumbers = options.showWeekNumbers; - - if (typeof options.showISOWeekNumbers === 'boolean') - this.showISOWeekNumbers = options.showISOWeekNumbers; - - if (typeof options.buttonClasses === 'string') - this.buttonClasses = options.buttonClasses; - - if (typeof options.buttonClasses === 'object') - this.buttonClasses = options.buttonClasses.join(' '); - - if (typeof options.showDropdowns === 'boolean') - this.showDropdowns = options.showDropdowns; - - if (typeof options.singleDatePicker === 'boolean') { - this.singleDatePicker = options.singleDatePicker; - if (this.singleDatePicker) - this.endDate = this.startDate.clone(); - } - - if (typeof options.timePicker === 'boolean') - this.timePicker = options.timePicker; - - if (typeof options.timePickerSeconds === 'boolean') - this.timePickerSeconds = options.timePickerSeconds; - - if (typeof options.timePickerIncrement === 'number') - this.timePickerIncrement = options.timePickerIncrement; - - if (typeof options.timePicker24Hour === 'boolean') - this.timePicker24Hour = options.timePicker24Hour; - - if (typeof options.autoApply === 'boolean') - this.autoApply = options.autoApply; - - if (typeof options.autoUpdateInput === 'boolean') - this.autoUpdateInput = options.autoUpdateInput; - - if (typeof options.linkedCalendars === 'boolean') - this.linkedCalendars = options.linkedCalendars; - - if (typeof options.isInvalidDate === 'function') - this.isInvalidDate = options.isInvalidDate; - - if (typeof options.alwaysShowCalendars === 'boolean') - this.alwaysShowCalendars = options.alwaysShowCalendars; - - // update day names order to firstDay - if (this.locale.firstDay != 0) { - var iterator = this.locale.firstDay; - while (iterator > 0) { - this.locale.daysOfWeek.push(this.locale.daysOfWeek.shift()); - iterator--; - } - } - - var start, end, range; - - //if no start/end dates set, check if an input element contains initial values - if (typeof options.startDate === 'undefined' && typeof options.endDate === 'undefined') { - if ($(this.element).is('input[type=text]')) { - var val = $(this.element).val(), - split = val.split(this.locale.separator); - - start = end = null; - - if (split.length == 2) { - start = moment(split[0], this.locale.format); - end = moment(split[1], this.locale.format); - } else if (this.singleDatePicker && val !== "") { - start = moment(val, this.locale.format); - end = moment(val, this.locale.format); - } - if (start !== null && end !== null) { - this.setStartDate(start); - this.setEndDate(end); - } - } - } - - if (typeof options.ranges === 'object') { - for (range in options.ranges) { - - if (typeof options.ranges[range][0] === 'string') - start = moment(options.ranges[range][0], this.locale.format); - else - start = moment(options.ranges[range][0]); - - if (typeof options.ranges[range][1] === 'string') - end = moment(options.ranges[range][1], this.locale.format); - else - end = moment(options.ranges[range][1]); - - // If the start or end date exceed those allowed by the minDate or dateLimit - // options, shorten the range to the allowable period. - if (this.minDate && start.isBefore(this.minDate)) - start = this.minDate.clone(); - - var maxDate = this.maxDate; - if (this.dateLimit && start.clone().add(this.dateLimit).isAfter(maxDate)) - maxDate = start.clone().add(this.dateLimit); - if (maxDate && end.isAfter(maxDate)) - end = maxDate.clone(); - - // If the end of the range is before the minimum or the start of the range is - // after the maximum, don't display this range option at all. - if ((this.minDate && end.isBefore(this.minDate)) || (maxDate && start.isAfter(maxDate))) - continue; - - //Support unicode chars in the range names. - var elem = document.createElement('textarea'); - elem.innerHTML = range; - var rangeHtml = elem.value; - - this.ranges[rangeHtml] = [start, end]; - } - - var list = '<ul>'; - for (range in this.ranges) { - list += '<li>' + range + '</li>'; - } - list += '<li>' + this.locale.customRangeLabel + '</li>'; - list += '</ul>'; - this.container.find('.ranges').prepend(list); - } - - if (typeof cb === 'function') { - this.callback = cb; - } - - if (!this.timePicker) { - this.startDate = this.startDate.startOf('day'); - this.endDate = this.endDate.endOf('day'); - this.container.find('.calendar-time').hide(); - } - - //can't be used together for now - if (this.timePicker && this.autoApply) - this.autoApply = false; - - if (this.autoApply && typeof options.ranges !== 'object') { - this.container.find('.ranges').hide(); - } else if (this.autoApply) { - this.container.find('.applyBtn, .cancelBtn').addClass('hide'); - } - - if (this.singleDatePicker) { - this.container.addClass('single'); - this.container.find('.calendar.left').addClass('single'); - this.container.find('.calendar.left').show(); - this.container.find('.calendar.right').hide(); - this.container.find('.daterangepicker_input input, .daterangepicker_input i').hide(); - if (!this.timePicker) { - this.container.find('.ranges').hide(); - } - } - - if ((typeof options.ranges === 'undefined' && !this.singleDatePicker) || this.alwaysShowCalendars) { - this.container.addClass('show-calendar'); - } - - this.container.addClass('opens' + this.opens); - - //swap the position of the predefined ranges if opens right - if (typeof options.ranges !== 'undefined' && this.opens == 'right') { - var ranges = this.container.find('.ranges'); - var html = ranges.clone(); - ranges.remove(); - this.container.find('.calendar.left').parent().prepend(html); - } - - //apply CSS classes and labels to buttons - this.container.find('.applyBtn, .cancelBtn').addClass(this.buttonClasses); - if (this.applyClass.length) - this.container.find('.applyBtn').addClass(this.applyClass); - if (this.cancelClass.length) - this.container.find('.cancelBtn').addClass(this.cancelClass); - this.container.find('.applyBtn').html(this.locale.applyLabel); - this.container.find('.cancelBtn').html(this.locale.cancelLabel); - - // - // event listeners - // - - this.container.find('.calendar') - .on('click.daterangepicker', '.prev', $.proxy(this.clickPrev, this)) - .on('click.daterangepicker', '.next', $.proxy(this.clickNext, this)) - .on('click.daterangepicker', 'td.available', $.proxy(this.clickDate, this)) - .on('mouseenter.daterangepicker', 'td.available', $.proxy(this.hoverDate, this)) - .on('mouseleave.daterangepicker', 'td.available', $.proxy(this.updateFormInputs, this)) - .on('change.daterangepicker', 'select.yearselect', $.proxy(this.monthOrYearChanged, this)) - .on('change.daterangepicker', 'select.monthselect', $.proxy(this.monthOrYearChanged, this)) - .on('change.daterangepicker', 'select.hourselect,select.minuteselect,select.secondselect,select.ampmselect', $.proxy(this.timeChanged, this)) - .on('click.daterangepicker', '.daterangepicker_input input', $.proxy(this.showCalendars, this)) - //.on('keyup.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsChanged, this)) - .on('change.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsChanged, this)); - - this.container.find('.ranges') - .on('click.daterangepicker', 'button.applyBtn', $.proxy(this.clickApply, this)) - .on('click.daterangepicker', 'button.cancelBtn', $.proxy(this.clickCancel, this)) - .on('click.daterangepicker', 'li', $.proxy(this.clickRange, this)) - .on('mouseenter.daterangepicker', 'li', $.proxy(this.hoverRange, this)) - .on('mouseleave.daterangepicker', 'li', $.proxy(this.updateFormInputs, this)); - - if (this.element.is('input')) { - this.element.on({ - 'click.daterangepicker': $.proxy(this.show, this), - 'focus.daterangepicker': $.proxy(this.show, this), - 'keyup.daterangepicker': $.proxy(this.elementChanged, this), - 'keydown.daterangepicker': $.proxy(this.keydown, this) - }); - } else { - this.element.on('click.daterangepicker', $.proxy(this.toggle, this)); - } - - // - // if attached to a text input, set the initial value - // - - if (this.element.is('input') && !this.singleDatePicker && this.autoUpdateInput) { - this.element.val(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format)); - this.element.trigger('change'); - } else if (this.element.is('input') && this.autoUpdateInput) { - this.element.val(this.startDate.format(this.locale.format)); - this.element.trigger('change'); - } - - }; - - DateRangePicker.prototype = { - - constructor: DateRangePicker, - - setStartDate: function(startDate) { - if (typeof startDate === 'string') - this.startDate = moment(startDate, this.locale.format); - - if (typeof startDate === 'object') - this.startDate = moment(startDate); - - if (!this.timePicker) - this.startDate = this.startDate.startOf('day'); - - if (this.timePicker && this.timePickerIncrement) - this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement); - - if (this.minDate && this.startDate.isBefore(this.minDate)) - this.startDate = this.minDate; - - if (this.maxDate && this.startDate.isAfter(this.maxDate)) - this.startDate = this.maxDate; - - if (!this.isShowing) - this.updateElement(); - - this.updateMonthsInView(); - }, - - setEndDate: function(endDate) { - if (typeof endDate === 'string') - this.endDate = moment(endDate, this.locale.format); - - if (typeof endDate === 'object') - this.endDate = moment(endDate); - - if (!this.timePicker) - this.endDate = this.endDate.endOf('day'); - - if (this.timePicker && this.timePickerIncrement) - this.endDate.minute(Math.round(this.endDate.minute() / this.timePickerIncrement) * this.timePickerIncrement); - - if (this.endDate.isBefore(this.startDate)) - this.endDate = this.startDate.clone(); - - if (this.maxDate && this.endDate.isAfter(this.maxDate)) - this.endDate = this.maxDate; - - if (this.dateLimit && this.startDate.clone().add(this.dateLimit).isBefore(this.endDate)) - this.endDate = this.startDate.clone().add(this.dateLimit); - - this.previousRightTime = this.endDate.clone(); - - if (!this.isShowing) - this.updateElement(); - - this.updateMonthsInView(); - }, - - isInvalidDate: function() { - return false; - }, - - updateView: function() { - if (this.timePicker) { - this.renderTimePicker('left'); - this.renderTimePicker('right'); - if (!this.endDate) { - this.container.find('.right .calendar-time select').attr('disabled', 'disabled').addClass('disabled'); - } else { - this.container.find('.right .calendar-time select').removeAttr('disabled').removeClass('disabled'); - } - } - if (this.endDate) { - this.container.find('input[name="daterangepicker_end"]').removeClass('active'); - this.container.find('input[name="daterangepicker_start"]').addClass('active'); - } else { - this.container.find('input[name="daterangepicker_end"]').addClass('active'); - this.container.find('input[name="daterangepicker_start"]').removeClass('active'); - } - this.updateMonthsInView(); - this.updateCalendars(); - this.updateFormInputs(); - }, - - updateMonthsInView: function() { - if (this.endDate) { - - //if both dates are visible already, do nothing - if (!this.singleDatePicker && this.leftCalendar.month && this.rightCalendar.month && - (this.startDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.startDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM')) - && - (this.endDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.endDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM')) - ) { - return; - } - - this.leftCalendar.month = this.startDate.clone().date(2); - if (!this.linkedCalendars && (this.endDate.month() != this.startDate.month() || this.endDate.year() != this.startDate.year())) { - this.rightCalendar.month = this.endDate.clone().date(2); - } else { - this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month'); - } - - } else { - if (this.leftCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM') && this.rightCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM')) { - this.leftCalendar.month = this.startDate.clone().date(2); - this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month'); - } - } - }, - - updateCalendars: function() { - - if (this.timePicker) { - var hour, minute, second; - if (this.endDate) { - hour = parseInt(this.container.find('.left .hourselect').val(), 10); - minute = parseInt(this.container.find('.left .minuteselect').val(), 10); - second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0; - if (!this.timePicker24Hour) { - var ampm = this.container.find('.left .ampmselect').val(); - if (ampm === 'PM' && hour < 12) - hour += 12; - if (ampm === 'AM' && hour === 12) - hour = 0; - } - } else { - hour = parseInt(this.container.find('.right .hourselect').val(), 10); - minute = parseInt(this.container.find('.right .minuteselect').val(), 10); - second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0; - if (!this.timePicker24Hour) { - var ampm = this.container.find('.right .ampmselect').val(); - if (ampm === 'PM' && hour < 12) - hour += 12; - if (ampm === 'AM' && hour === 12) - hour = 0; - } - } - this.leftCalendar.month.hour(hour).minute(minute).second(second); - this.rightCalendar.month.hour(hour).minute(minute).second(second); - } - - this.renderCalendar('left'); - this.renderCalendar('right'); - - //highlight any predefined range matching the current start and end dates - this.container.find('.ranges li').removeClass('active'); - if (this.endDate == null) return; - - this.calculateChosenLabel(); - }, - - renderCalendar: function(side) { - - // - // Build the matrix of dates that will populate the calendar - // - - var calendar = side == 'left' ? this.leftCalendar : this.rightCalendar; - var month = calendar.month.month(); - var year = calendar.month.year(); - var hour = calendar.month.hour(); - var minute = calendar.month.minute(); - var second = calendar.month.second(); - var daysInMonth = moment([year, month]).daysInMonth(); - var firstDay = moment([year, month, 1]); - var lastDay = moment([year, month, daysInMonth]); - var lastMonth = moment(firstDay).subtract(1, 'month').month(); - var lastYear = moment(firstDay).subtract(1, 'month').year(); - var daysInLastMonth = moment([lastYear, lastMonth]).daysInMonth(); - var dayOfWeek = firstDay.day(); - - //initialize a 6 rows x 7 columns array for the calendar - var calendar = []; - calendar.firstDay = firstDay; - calendar.lastDay = lastDay; - - for (var i = 0; i < 6; i++) { - calendar[i] = []; - } - - //populate the calendar with date objects - var startDay = daysInLastMonth - dayOfWeek + this.locale.firstDay + 1; - if (startDay > daysInLastMonth) - startDay -= 7; - - if (dayOfWeek == this.locale.firstDay) - startDay = daysInLastMonth - 6; - - var curDate = moment([lastYear, lastMonth, startDay, 12, minute, second]); - - var col, row; - for (var i = 0, col = 0, row = 0; i < 42; i++, col++, curDate = moment(curDate).add(24, 'hour')) { - if (i > 0 && col % 7 === 0) { - col = 0; - row++; - } - calendar[row][col] = curDate.clone().hour(hour).minute(minute).second(second); - curDate.hour(12); - - if (this.minDate && calendar[row][col].format('YYYY-MM-DD') == this.minDate.format('YYYY-MM-DD') && calendar[row][col].isBefore(this.minDate) && side == 'left') { - calendar[row][col] = this.minDate.clone(); - } - - if (this.maxDate && calendar[row][col].format('YYYY-MM-DD') == this.maxDate.format('YYYY-MM-DD') && calendar[row][col].isAfter(this.maxDate) && side == 'right') { - calendar[row][col] = this.maxDate.clone(); - } - - } - - //make the calendar object available to hoverDate/clickDate - if (side == 'left') { - this.leftCalendar.calendar = calendar; - } else { - this.rightCalendar.calendar = calendar; - } - - // - // Display the calendar - // - - var minDate = side == 'left' ? this.minDate : this.startDate; - var maxDate = this.maxDate; - var selected = side == 'left' ? this.startDate : this.endDate; - - var html = '<table class="table-condensed">'; - html += '<thead>'; - html += '<tr>'; - - // add empty cell for week number - if (this.showWeekNumbers || this.showISOWeekNumbers) - html += '<th></th>'; - - if ((!minDate || minDate.isBefore(calendar.firstDay)) && (!this.linkedCalendars || side == 'left')) { - html += '<th class="prev available"><i class="fa fa-chevron-left glyphicon glyphicon-chevron-left"></i></th>'; - } else { - html += '<th></th>'; - } - - var dateHtml = this.locale.monthNames[calendar[1][1].month()] + calendar[1][1].format(" YYYY"); - - if (this.showDropdowns) { - var currentMonth = calendar[1][1].month(); - var currentYear = calendar[1][1].year(); - var maxYear = (maxDate && maxDate.year()) || (currentYear + 5); - var minYear = (minDate && minDate.year()) || (currentYear - 50); - var inMinYear = currentYear == minYear; - var inMaxYear = currentYear == maxYear; - - var monthHtml = '<select class="monthselect">'; - for (var m = 0; m < 12; m++) { - if ((!inMinYear || m >= minDate.month()) && (!inMaxYear || m <= maxDate.month())) { - monthHtml += "<option value='" + m + "'" + - (m === currentMonth ? " selected='selected'" : "") + - ">" + this.locale.monthNames[m] + "</option>"; - } else { - monthHtml += "<option value='" + m + "'" + - (m === currentMonth ? " selected='selected'" : "") + - " disabled='disabled'>" + this.locale.monthNames[m] + "</option>"; - } - } - monthHtml += "</select>"; - - var yearHtml = '<select class="yearselect">'; - for (var y = minYear; y <= maxYear; y++) { - yearHtml += '<option value="' + y + '"' + - (y === currentYear ? ' selected="selected"' : '') + - '>' + y + '</option>'; - } - yearHtml += '</select>'; - - dateHtml = monthHtml + yearHtml; - } - - html += '<th colspan="5" class="month">' + dateHtml + '</th>'; - if ((!maxDate || maxDate.isAfter(calendar.lastDay)) && (!this.linkedCalendars || side == 'right' || this.singleDatePicker)) { - html += '<th class="next available"><i class="fa fa-chevron-right glyphicon glyphicon-chevron-right"></i></th>'; - } else { - html += '<th></th>'; - } - - html += '</tr>'; - html += '<tr>'; - - // add week number label - if (this.showWeekNumbers || this.showISOWeekNumbers) - html += '<th class="week">' + this.locale.weekLabel + '</th>'; - - $.each(this.locale.daysOfWeek, function(index, dayOfWeek) { - html += '<th>' + dayOfWeek + '</th>'; - }); - - html += '</tr>'; - html += '</thead>'; - html += '<tbody>'; - - //adjust maxDate to reflect the dateLimit setting in order to - //grey out end dates beyond the dateLimit - if (this.endDate == null && this.dateLimit) { - var maxLimit = this.startDate.clone().add(this.dateLimit).endOf('day'); - if (!maxDate || maxLimit.isBefore(maxDate)) { - maxDate = maxLimit; - } - } - - for (var row = 0; row < 6; row++) { - html += '<tr>'; - - // add week number - if (this.showWeekNumbers) - html += '<td class="week">' + calendar[row][0].week() + '</td>'; - else if (this.showISOWeekNumbers) - html += '<td class="week">' + calendar[row][0].isoWeek() + '</td>'; - - for (var col = 0; col < 7; col++) { - - var classes = []; - - //highlight today's date - if (calendar[row][col].isSame(new Date(), "day")) - classes.push('today'); - - //highlight weekends - if (calendar[row][col].isoWeekday() > 5) - classes.push('weekend'); - - //grey out the dates in other months displayed at beginning and end of this calendar - if (calendar[row][col].month() != calendar[1][1].month()) - classes.push('off'); - - //don't allow selection of dates before the minimum date - if (this.minDate && calendar[row][col].isBefore(this.minDate, 'day')) - classes.push('off', 'disabled'); - - //don't allow selection of dates after the maximum date - if (maxDate && calendar[row][col].isAfter(maxDate, 'day')) - classes.push('off', 'disabled'); - - //don't allow selection of date if a custom function decides it's invalid - if (this.isInvalidDate(calendar[row][col])) - classes.push('off', 'disabled'); - - //highlight the currently selected start date - if (calendar[row][col].format('YYYY-MM-DD') == this.startDate.format('YYYY-MM-DD')) - classes.push('active', 'start-date'); - - //highlight the currently selected end date - if (this.endDate != null && calendar[row][col].format('YYYY-MM-DD') == this.endDate.format('YYYY-MM-DD')) - classes.push('active', 'end-date'); - - //highlight dates in-between the selected dates - if (this.endDate != null && calendar[row][col] > this.startDate && calendar[row][col] < this.endDate) - classes.push('in-range'); - - var cname = '', disabled = false; - for (var i = 0; i < classes.length; i++) { - cname += classes[i] + ' '; - if (classes[i] == 'disabled') - disabled = true; - } - if (!disabled) - cname += 'available'; - - html += '<td class="' + cname.replace(/^\s+|\s+$/g, '') + '" data-title="' + 'r' + row + 'c' + col + '">' + calendar[row][col].date() + '</td>'; - - } - html += '</tr>'; - } - - html += '</tbody>'; - html += '</table>'; - - this.container.find('.calendar.' + side + ' .calendar-table').html(html); - - }, - - renderTimePicker: function(side) { - - var html, selected, minDate, maxDate = this.maxDate; - - if (this.dateLimit && (!this.maxDate || this.startDate.clone().add(this.dateLimit).isAfter(this.maxDate))) - maxDate = this.startDate.clone().add(this.dateLimit); - - if (side == 'left') { - selected = this.startDate.clone(); - minDate = this.minDate; - } else if (side == 'right') { - selected = this.endDate ? this.endDate.clone() : this.previousRightTime.clone(); - minDate = this.startDate; - - //Preserve the time already selected - var timeSelector = this.container.find('.calendar.right .calendar-time div'); - if (timeSelector.html() != '') { - - selected.hour(timeSelector.find('.hourselect option:selected').val() || selected.hour()); - selected.minute(timeSelector.find('.minuteselect option:selected').val() || selected.minute()); - selected.second(timeSelector.find('.secondselect option:selected').val() || selected.second()); - - if (!this.timePicker24Hour) { - var ampm = timeSelector.find('.ampmselect option:selected').val(); - if (ampm === 'PM' && selected.hour() < 12) - selected.hour(selected.hour() + 12); - if (ampm === 'AM' && selected.hour() === 12) - selected.hour(0); - } - - if (selected.isBefore(this.startDate)) - selected = this.startDate.clone(); - - if (selected.isAfter(maxDate)) - selected = maxDate.clone(); - - } - } - - // - // hours - // - - html = '<select class="hourselect">'; - - var start = this.timePicker24Hour ? 0 : 1; - var end = this.timePicker24Hour ? 23 : 12; - - for (var i = start; i <= end; i++) { - var i_in_24 = i; - if (!this.timePicker24Hour) - i_in_24 = selected.hour() >= 12 ? (i == 12 ? 12 : i + 12) : (i == 12 ? 0 : i); - - var time = selected.clone().hour(i_in_24); - var disabled = false; - if (minDate && time.minute(59).isBefore(minDate)) - disabled = true; - if (maxDate && time.minute(0).isAfter(maxDate)) - disabled = true; - - if (i_in_24 == selected.hour() && !disabled) { - html += '<option value="' + i + '" selected="selected">' + i + '</option>'; - } else if (disabled) { - html += '<option value="' + i + '" disabled="disabled" class="disabled">' + i + '</option>'; - } else { - html += '<option value="' + i + '">' + i + '</option>'; - } - } - - html += '</select> '; - - // - // minutes - // - - html += ': <select class="minuteselect">'; - - for (var i = 0; i < 60; i += this.timePickerIncrement) { - var padded = i < 10 ? '0' + i : i; - var time = selected.clone().minute(i); - - var disabled = false; - if (minDate && time.second(59).isBefore(minDate)) - disabled = true; - if (maxDate && time.second(0).isAfter(maxDate)) - disabled = true; - - if (selected.minute() == i && !disabled) { - html += '<option value="' + i + '" selected="selected">' + padded + '</option>'; - } else if (disabled) { - html += '<option value="' + i + '" disabled="disabled" class="disabled">' + padded + '</option>'; - } else { - html += '<option value="' + i + '">' + padded + '</option>'; - } - } - - html += '</select> '; - - // - // seconds - // - - if (this.timePickerSeconds) { - html += ': <select class="secondselect">'; - - for (var i = 0; i < 60; i++) { - var padded = i < 10 ? '0' + i : i; - var time = selected.clone().second(i); - - var disabled = false; - if (minDate && time.isBefore(minDate)) - disabled = true; - if (maxDate && time.isAfter(maxDate)) - disabled = true; - - if (selected.second() == i && !disabled) { - html += '<option value="' + i + '" selected="selected">' + padded + '</option>'; - } else if (disabled) { - html += '<option value="' + i + '" disabled="disabled" class="disabled">' + padded + '</option>'; - } else { - html += '<option value="' + i + '">' + padded + '</option>'; - } - } - - html += '</select> '; - } - - // - // AM/PM - // - - if (!this.timePicker24Hour) { - html += '<select class="ampmselect">'; - - var am_html = ''; - var pm_html = ''; - - if (minDate && selected.clone().hour(12).minute(0).second(0).isBefore(minDate)) - am_html = ' disabled="disabled" class="disabled"'; - - if (maxDate && selected.clone().hour(0).minute(0).second(0).isAfter(maxDate)) - pm_html = ' disabled="disabled" class="disabled"'; - - if (selected.hour() >= 12) { - html += '<option value="AM"' + am_html + '>AM</option><option value="PM" selected="selected"' + pm_html + '>PM</option>'; - } else { - html += '<option value="AM" selected="selected"' + am_html + '>AM</option><option value="PM"' + pm_html + '>PM</option>'; - } - - html += '</select>'; - } - - this.container.find('.calendar.' + side + ' .calendar-time div').html(html); - - }, - - updateFormInputs: function() { - - //ignore mouse movements while an above-calendar text input has focus - if (this.container.find('input[name=daterangepicker_start]').is(":focus") || this.container.find('input[name=daterangepicker_end]').is(":focus")) - return; - - this.container.find('input[name=daterangepicker_start]').val(this.startDate.format(this.locale.format)); - if (this.endDate) - this.container.find('input[name=daterangepicker_end]').val(this.endDate.format(this.locale.format)); - - if (this.singleDatePicker || (this.endDate && (this.startDate.isBefore(this.endDate) || this.startDate.isSame(this.endDate)))) { - this.container.find('button.applyBtn').removeAttr('disabled'); - } else { - this.container.find('button.applyBtn').attr('disabled', 'disabled'); - } - - }, - - move: function() { - var parentOffset = { top: 0, left: 0 }, - containerTop; - var parentRightEdge = $(window).width(); - if (!this.parentEl.is('body')) { - parentOffset = { - top: this.parentEl.offset().top - this.parentEl.scrollTop(), - left: this.parentEl.offset().left - this.parentEl.scrollLeft() - }; - parentRightEdge = this.parentEl[0].clientWidth + this.parentEl.offset().left; - } - - if (this.drops == 'up') - containerTop = this.element.offset().top - this.container.outerHeight() - parentOffset.top; - else - containerTop = this.element.offset().top + this.element.outerHeight() - parentOffset.top; - this.container[this.drops == 'up' ? 'addClass' : 'removeClass']('dropup'); - - if (this.opens == 'left') { - this.container.css({ - top: containerTop, - right: parentRightEdge - this.element.offset().left - this.element.outerWidth(), - left: 'auto' - }); - if (this.container.offset().left < 0) { - this.container.css({ - right: 'auto', - left: 9 - }); - } - } else if (this.opens == 'center') { - this.container.css({ - top: containerTop, - left: this.element.offset().left - parentOffset.left + this.element.outerWidth() / 2 - - this.container.outerWidth() / 2, - right: 'auto' - }); - if (this.container.offset().left < 0) { - this.container.css({ - right: 'auto', - left: 9 - }); - } - } else { - this.container.css({ - top: containerTop, - left: this.element.offset().left - parentOffset.left, - right: 'auto' - }); - if (this.container.offset().left + this.container.outerWidth() > $(window).width()) { - this.container.css({ - left: 'auto', - right: 0 - }); - } - } - }, - - show: function(e) { - if (this.isShowing) return; - - // Create a click proxy that is private to this instance of datepicker, for unbinding - this._outsideClickProxy = $.proxy(function(e) { this.outsideClick(e); }, this); - - // Bind global datepicker mousedown for hiding and - $(document) - .on('mousedown.daterangepicker', this._outsideClickProxy) - // also support mobile devices - .on('touchend.daterangepicker', this._outsideClickProxy) - // also explicitly play nice with Bootstrap dropdowns, which stopPropagation when clicking them - .on('click.daterangepicker', '[data-toggle=dropdown]', this._outsideClickProxy) - // and also close when focus changes to outside the picker (eg. tabbing between controls) - .on('focusin.daterangepicker', this._outsideClickProxy); - - // Reposition the picker if the window is resized while it's open - $(window).on('resize.daterangepicker', $.proxy(function(e) { this.move(e); }, this)); - - this.oldStartDate = this.startDate.clone(); - this.oldEndDate = this.endDate.clone(); - this.previousRightTime = this.endDate.clone(); - - this.updateView(); - this.container.show(); - this.move(); - this.element.trigger('show.daterangepicker', this); - this.isShowing = true; - }, - - hide: function(e) { - if (!this.isShowing) return; - - //incomplete date selection, revert to last values - if (!this.endDate) { - this.startDate = this.oldStartDate.clone(); - this.endDate = this.oldEndDate.clone(); - } - - //if a new date range was selected, invoke the user callback function - if (!this.startDate.isSame(this.oldStartDate) || !this.endDate.isSame(this.oldEndDate)) - this.callback(this.startDate, this.endDate, this.chosenLabel); - - //if picker is attached to a text input, update it - this.updateElement(); - - $(document).off('.daterangepicker'); - $(window).off('.daterangepicker'); - this.container.hide(); - this.element.trigger('hide.daterangepicker', this); - this.isShowing = false; - }, - - toggle: function(e) { - if (this.isShowing) { - this.hide(); - } else { - this.show(); - } - }, - - outsideClick: function(e) { - var target = $(e.target); - // if the page is clicked anywhere except within the daterangerpicker/button - // itself then call this.hide() - if ( - // ie modal dialog fix - e.type == "focusin" || - target.closest(this.element).length || - target.closest(this.container).length || - target.closest('.calendar-table').length - ) return; - this.hide(); - }, - - showCalendars: function() { - this.container.addClass('show-calendar'); - this.move(); - this.element.trigger('showCalendar.daterangepicker', this); - }, - - hideCalendars: function() { - this.container.removeClass('show-calendar'); - this.element.trigger('hideCalendar.daterangepicker', this); - }, - - hoverRange: function(e) { - - //ignore mouse movements while an above-calendar text input has focus - if (this.container.find('input[name=daterangepicker_start]').is(":focus") || this.container.find('input[name=daterangepicker_end]').is(":focus")) - return; - - var label = e.target.innerHTML; - if (label == this.locale.customRangeLabel) { - this.updateView(); - } else { - var dates = this.ranges[label]; - this.container.find('input[name=daterangepicker_start]').val(dates[0].format(this.locale.format)); - this.container.find('input[name=daterangepicker_end]').val(dates[1].format(this.locale.format)); - } - - }, - - clickRange: function(e) { - var label = e.target.innerHTML; - this.chosenLabel = label; - if (label == this.locale.customRangeLabel) { - this.showCalendars(); - } else { - var dates = this.ranges[label]; - this.startDate = dates[0]; - this.endDate = dates[1]; - - if (!this.timePicker) { - this.startDate.startOf('day'); - this.endDate.endOf('day'); - } - - if (!this.alwaysShowCalendars) - this.hideCalendars(); - this.clickApply(); - } - }, - - clickPrev: function(e) { - var cal = $(e.target).parents('.calendar'); - if (cal.hasClass('left')) { - this.leftCalendar.month.subtract(1, 'month'); - if (this.linkedCalendars) - this.rightCalendar.month.subtract(1, 'month'); - } else { - this.rightCalendar.month.subtract(1, 'month'); - } - this.updateCalendars(); - }, - - clickNext: function(e) { - var cal = $(e.target).parents('.calendar'); - if (cal.hasClass('left')) { - this.leftCalendar.month.add(1, 'month'); - } else { - this.rightCalendar.month.add(1, 'month'); - if (this.linkedCalendars) - this.leftCalendar.month.add(1, 'month'); - } - this.updateCalendars(); - }, - - hoverDate: function(e) { - - //ignore mouse movements while an above-calendar text input has focus - if (this.container.find('input[name=daterangepicker_start]').is(":focus") || this.container.find('input[name=daterangepicker_end]').is(":focus")) - return; - - //ignore dates that can't be selected - if (!$(e.target).hasClass('available')) return; - - //have the text inputs above calendars reflect the date being hovered over - var title = $(e.target).attr('data-title'); - var row = title.substr(1, 1); - var col = title.substr(3, 1); - var cal = $(e.target).parents('.calendar'); - var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col]; - - if (this.endDate) { - this.container.find('input[name=daterangepicker_start]').val(date.format(this.locale.format)); - } else { - this.container.find('input[name=daterangepicker_end]').val(date.format(this.locale.format)); - } - - //highlight the dates between the start date and the date being hovered as a potential end date - var leftCalendar = this.leftCalendar; - var rightCalendar = this.rightCalendar; - var startDate = this.startDate; - if (!this.endDate) { - this.container.find('.calendar td').each(function(index, el) { - - //skip week numbers, only look at dates - if ($(el).hasClass('week')) return; - - var title = $(el).attr('data-title'); - var row = title.substr(1, 1); - var col = title.substr(3, 1); - var cal = $(el).parents('.calendar'); - var dt = cal.hasClass('left') ? leftCalendar.calendar[row][col] : rightCalendar.calendar[row][col]; - - if (dt.isAfter(startDate) && dt.isBefore(date)) { - $(el).addClass('in-range'); - } else { - $(el).removeClass('in-range'); - } - - }); - } - - }, - - clickDate: function(e) { - - if (!$(e.target).hasClass('available')) return; - - var title = $(e.target).attr('data-title'); - var row = title.substr(1, 1); - var col = title.substr(3, 1); - var cal = $(e.target).parents('.calendar'); - var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col]; - - // - // this function needs to do a few things: - // * alternate between selecting a start and end date for the range, - // * if the time picker is enabled, apply the hour/minute/second from the select boxes to the clicked date - // * if autoapply is enabled, and an end date was chosen, apply the selection - // * if single date picker mode, and time picker isn't enabled, apply the selection immediately - // - - if (this.endDate || date.isBefore(this.startDate, 'day')) { - if (this.timePicker) { - var hour = parseInt(this.container.find('.left .hourselect').val(), 10); - if (!this.timePicker24Hour) { - var ampm = this.container.find('.left .ampmselect').val(); - if (ampm === 'PM' && hour < 12) - hour += 12; - if (ampm === 'AM' && hour === 12) - hour = 0; - } - var minute = parseInt(this.container.find('.left .minuteselect').val(), 10); - var second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0; - date = date.clone().hour(hour).minute(minute).second(second); - } - this.endDate = null; - this.setStartDate(date.clone()); - } else if (!this.endDate && date.isBefore(this.startDate)) { - //special case: clicking the same date for start/end, - //but the time of the end date is before the start date - this.setEndDate(this.startDate.clone()); - } else { - if (this.timePicker) { - var hour = parseInt(this.container.find('.right .hourselect').val(), 10); - if (!this.timePicker24Hour) { - var ampm = this.container.find('.right .ampmselect').val(); - if (ampm === 'PM' && hour < 12) - hour += 12; - if (ampm === 'AM' && hour === 12) - hour = 0; - } - var minute = parseInt(this.container.find('.right .minuteselect').val(), 10); - var second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0; - date = date.clone().hour(hour).minute(minute).second(second); - } - this.setEndDate(date.clone()); - if (this.autoApply) { - this.calculateChosenLabel(); - this.clickApply(); - } - } - - if (this.singleDatePicker) { - this.setEndDate(this.startDate); - if (!this.timePicker) - this.clickApply(); - } - - this.updateView(); - - }, - - calculateChosenLabel: function() { - var customRange = true; - var i = 0; - for (var range in this.ranges) { - if (this.timePicker) { - if (this.startDate.isSame(this.ranges[range][0]) && this.endDate.isSame(this.ranges[range][1])) { - customRange = false; - this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').html(); - break; - } - } else { - //ignore times when comparing dates if time picker is not enabled - if (this.startDate.format('YYYY-MM-DD') == this.ranges[range][0].format('YYYY-MM-DD') && this.endDate.format('YYYY-MM-DD') == this.ranges[range][1].format('YYYY-MM-DD')) { - customRange = false; - this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').html(); - break; - } - } - i++; - } - if (customRange) { - this.chosenLabel = this.container.find('.ranges li:last').addClass('active').html(); - this.showCalendars(); - } - }, - - clickApply: function(e) { - this.hide(); - this.element.trigger('apply.daterangepicker', this); - }, - - clickCancel: function(e) { - this.startDate = this.oldStartDate; - this.endDate = this.oldEndDate; - this.hide(); - this.element.trigger('cancel.daterangepicker', this); - }, - - monthOrYearChanged: function(e) { - var isLeft = $(e.target).closest('.calendar').hasClass('left'), - leftOrRight = isLeft ? 'left' : 'right', - cal = this.container.find('.calendar.'+leftOrRight); - - // Month must be Number for new moment versions - var month = parseInt(cal.find('.monthselect').val(), 10); - var year = cal.find('.yearselect').val(); - - if (!isLeft) { - if (year < this.startDate.year() || (year == this.startDate.year() && month < this.startDate.month())) { - month = this.startDate.month(); - year = this.startDate.year(); - } - } - - if (this.minDate) { - if (year < this.minDate.year() || (year == this.minDate.year() && month < this.minDate.month())) { - month = this.minDate.month(); - year = this.minDate.year(); - } - } - - if (this.maxDate) { - if (year > this.maxDate.year() || (year == this.maxDate.year() && month > this.maxDate.month())) { - month = this.maxDate.month(); - year = this.maxDate.year(); - } - } - - if (isLeft) { - this.leftCalendar.month.month(month).year(year); - if (this.linkedCalendars) - this.rightCalendar.month = this.leftCalendar.month.clone().add(1, 'month'); - } else { - this.rightCalendar.month.month(month).year(year); - if (this.linkedCalendars) - this.leftCalendar.month = this.rightCalendar.month.clone().subtract(1, 'month'); - } - this.updateCalendars(); - }, - - timeChanged: function(e) { - - var cal = $(e.target).closest('.calendar'), - isLeft = cal.hasClass('left'); - - var hour = parseInt(cal.find('.hourselect').val(), 10); - var minute = parseInt(cal.find('.minuteselect').val(), 10); - var second = this.timePickerSeconds ? parseInt(cal.find('.secondselect').val(), 10) : 0; - - if (!this.timePicker24Hour) { - var ampm = cal.find('.ampmselect').val(); - if (ampm === 'PM' && hour < 12) - hour += 12; - if (ampm === 'AM' && hour === 12) - hour = 0; - } - - if (isLeft) { - var start = this.startDate.clone(); - start.hour(hour); - start.minute(minute); - start.second(second); - this.setStartDate(start); - if (this.singleDatePicker) { - this.endDate = this.startDate.clone(); - } else if (this.endDate && this.endDate.format('YYYY-MM-DD') == start.format('YYYY-MM-DD') && this.endDate.isBefore(start)) { - this.setEndDate(start.clone()); - } - } else if (this.endDate) { - var end = this.endDate.clone(); - end.hour(hour); - end.minute(minute); - end.second(second); - this.setEndDate(end); - } - - //update the calendars so all clickable dates reflect the new time component - this.updateCalendars(); - - //update the form inputs above the calendars with the new time - this.updateFormInputs(); - - //re-render the time pickers because changing one selection can affect what's enabled in another - this.renderTimePicker('left'); - this.renderTimePicker('right'); - - }, - - formInputsChanged: function(e) { - var isRight = $(e.target).closest('.calendar').hasClass('right'); - var start = moment(this.container.find('input[name="daterangepicker_start"]').val(), this.locale.format); - var end = moment(this.container.find('input[name="daterangepicker_end"]').val(), this.locale.format); - - if (start.isValid() && end.isValid()) { - - if (isRight && end.isBefore(start)) - start = end.clone(); - - this.setStartDate(start); - this.setEndDate(end); - - if (isRight) { - this.container.find('input[name="daterangepicker_start"]').val(this.startDate.format(this.locale.format)); - } else { - this.container.find('input[name="daterangepicker_end"]').val(this.endDate.format(this.locale.format)); - } - - } - - this.updateCalendars(); - if (this.timePicker) { - this.renderTimePicker('left'); - this.renderTimePicker('right'); - } - }, - - elementChanged: function() { - if (!this.element.is('input')) return; - if (!this.element.val().length) return; - if (this.element.val().length < this.locale.format.length) return; - - var dateString = this.element.val().split(this.locale.separator), - start = null, - end = null; - - if (dateString.length === 2) { - start = moment(dateString[0], this.locale.format); - end = moment(dateString[1], this.locale.format); - } - - if (this.singleDatePicker || start === null || end === null) { - start = moment(this.element.val(), this.locale.format); - end = start; - } - - if (!start.isValid() || !end.isValid()) return; - - this.setStartDate(start); - this.setEndDate(end); - this.updateView(); - }, - - keydown: function(e) { - //hide on tab or enter - if ((e.keyCode === 9) || (e.keyCode === 13)) { - this.hide(); - } - }, - - updateElement: function() { - if (this.element.is('input') && !this.singleDatePicker && this.autoUpdateInput) { - this.element.val(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format)); - this.element.trigger('change'); - } else if (this.element.is('input') && this.autoUpdateInput) { - this.element.val(this.startDate.format(this.locale.format)); - this.element.trigger('change'); - } - }, - - remove: function() { - this.container.remove(); - this.element.off('.daterangepicker'); - this.element.removeData(); - } - - }; - - $.fn.daterangepicker = function(options, callback) { - this.each(function() { - var el = $(this); - if (el.data('daterangepicker')) - el.data('daterangepicker').remove(); - el.data('daterangepicker', new DateRangePicker(el, options, callback)); - }); - return this; - }; - - return DateRangePicker; - -})); diff --git a/assets/plugins/daterangepicker/moment.js b/assets/plugins/daterangepicker/moment.js deleted file mode 100644 index f70d530d..00000000 --- a/assets/plugins/daterangepicker/moment.js +++ /dev/null @@ -1,3111 +0,0 @@ -//! moment.js -//! version : 2.10.3 -//! authors : Tim Wood, Iskren Chernev, Moment.js contributors -//! license : MIT -//! momentjs.com - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - global.moment = factory() -}(this, function () { 'use strict'; - - var hookCallback; - - function utils_hooks__hooks () { - return hookCallback.apply(null, arguments); - } - - // This is done to register the method called with moment() - // without creating circular dependencies. - function setHookCallback (callback) { - hookCallback = callback; - } - - function isArray(input) { - return Object.prototype.toString.call(input) === '[object Array]'; - } - - function isDate(input) { - return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]'; - } - - function map(arr, fn) { - var res = [], i; - for (i = 0; i < arr.length; ++i) { - res.push(fn(arr[i], i)); - } - return res; - } - - function hasOwnProp(a, b) { - return Object.prototype.hasOwnProperty.call(a, b); - } - - function extend(a, b) { - for (var i in b) { - if (hasOwnProp(b, i)) { - a[i] = b[i]; - } - } - - if (hasOwnProp(b, 'toString')) { - a.toString = b.toString; - } - - if (hasOwnProp(b, 'valueOf')) { - a.valueOf = b.valueOf; - } - - return a; - } - - function create_utc__createUTC (input, format, locale, strict) { - return createLocalOrUTC(input, format, locale, strict, true).utc(); - } - - function defaultParsingFlags() { - // We need to deep clone this object. - return { - empty : false, - unusedTokens : [], - unusedInput : [], - overflow : -2, - charsLeftOver : 0, - nullInput : false, - invalidMonth : null, - invalidFormat : false, - userInvalidated : false, - iso : false - }; - } - - function getParsingFlags(m) { - if (m._pf == null) { - m._pf = defaultParsingFlags(); - } - return m._pf; - } - - function valid__isValid(m) { - if (m._isValid == null) { - var flags = getParsingFlags(m); - m._isValid = !isNaN(m._d.getTime()) && - flags.overflow < 0 && - !flags.empty && - !flags.invalidMonth && - !flags.nullInput && - !flags.invalidFormat && - !flags.userInvalidated; - - if (m._strict) { - m._isValid = m._isValid && - flags.charsLeftOver === 0 && - flags.unusedTokens.length === 0 && - flags.bigHour === undefined; - } - } - return m._isValid; - } - - function valid__createInvalid (flags) { - var m = create_utc__createUTC(NaN); - if (flags != null) { - extend(getParsingFlags(m), flags); - } - else { - getParsingFlags(m).userInvalidated = true; - } - - return m; - } - - var momentProperties = utils_hooks__hooks.momentProperties = []; - - function copyConfig(to, from) { - var i, prop, val; - - if (typeof from._isAMomentObject !== 'undefined') { - to._isAMomentObject = from._isAMomentObject; - } - if (typeof from._i !== 'undefined') { - to._i = from._i; - } - if (typeof from._f !== 'undefined') { - to._f = from._f; - } - if (typeof from._l !== 'undefined') { - to._l = from._l; - } - if (typeof from._strict !== 'undefined') { - to._strict = from._strict; - } - if (typeof from._tzm !== 'undefined') { - to._tzm = from._tzm; - } - if (typeof from._isUTC !== 'undefined') { - to._isUTC = from._isUTC; - } - if (typeof from._offset !== 'undefined') { - to._offset = from._offset; - } - if (typeof from._pf !== 'undefined') { - to._pf = getParsingFlags(from); - } - if (typeof from._locale !== 'undefined') { - to._locale = from._locale; - } - - if (momentProperties.length > 0) { - for (i in momentProperties) { - prop = momentProperties[i]; - val = from[prop]; - if (typeof val !== 'undefined') { - to[prop] = val; - } - } - } - - return to; - } - - var updateInProgress = false; - - // Moment prototype object - function Moment(config) { - copyConfig(this, config); - this._d = new Date(+config._d); - // Prevent infinite loop in case updateOffset creates new moment - // objects. - if (updateInProgress === false) { - updateInProgress = true; - utils_hooks__hooks.updateOffset(this); - updateInProgress = false; - } - } - - function isMoment (obj) { - return obj instanceof Moment || (obj != null && obj._isAMomentObject != null); - } - - function toInt(argumentForCoercion) { - var coercedNumber = +argumentForCoercion, - value = 0; - - if (coercedNumber !== 0 && isFinite(coercedNumber)) { - if (coercedNumber >= 0) { - value = Math.floor(coercedNumber); - } else { - value = Math.ceil(coercedNumber); - } - } - - return value; - } - - function compareArrays(array1, array2, dontConvert) { - var len = Math.min(array1.length, array2.length), - lengthDiff = Math.abs(array1.length - array2.length), - diffs = 0, - i; - for (i = 0; i < len; i++) { - if ((dontConvert && array1[i] !== array2[i]) || - (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { - diffs++; - } - } - return diffs + lengthDiff; - } - - function Locale() { - } - - var locales = {}; - var globalLocale; - - function normalizeLocale(key) { - return key ? key.toLowerCase().replace('_', '-') : key; - } - - // pick the locale from the array - // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each - // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root - function chooseLocale(names) { - var i = 0, j, next, locale, split; - - while (i < names.length) { - split = normalizeLocale(names[i]).split('-'); - j = split.length; - next = normalizeLocale(names[i + 1]); - next = next ? next.split('-') : null; - while (j > 0) { - locale = loadLocale(split.slice(0, j).join('-')); - if (locale) { - return locale; - } - if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { - //the next array item is better than a shallower substring of this one - break; - } - j--; - } - i++; - } - return null; - } - - function loadLocale(name) { - var oldLocale = null; - // TODO: Find a better way to register and load all the locales in Node - if (!locales[name] && typeof module !== 'undefined' && - module && module.exports) { - try { - oldLocale = globalLocale._abbr; - require('./locale/' + name); - // because defineLocale currently also sets the global locale, we - // want to undo that for lazy loaded locales - locale_locales__getSetGlobalLocale(oldLocale); - } catch (e) { } - } - return locales[name]; - } - - // This function will load locale and then set the global locale. If - // no arguments are passed in, it will simply return the current global - // locale key. - function locale_locales__getSetGlobalLocale (key, values) { - var data; - if (key) { - if (typeof values === 'undefined') { - data = locale_locales__getLocale(key); - } - else { - data = defineLocale(key, values); - } - - if (data) { - // moment.duration._locale = moment._locale = data; - globalLocale = data; - } - } - - return globalLocale._abbr; - } - - function defineLocale (name, values) { - if (values !== null) { - values.abbr = name; - if (!locales[name]) { - locales[name] = new Locale(); - } - locales[name].set(values); - - // backwards compat for now: also set the locale - locale_locales__getSetGlobalLocale(name); - - return locales[name]; - } else { - // useful for testing - delete locales[name]; - return null; - } - } - - // returns locale data - function locale_locales__getLocale (key) { - var locale; - - if (key && key._locale && key._locale._abbr) { - key = key._locale._abbr; - } - - if (!key) { - return globalLocale; - } - - if (!isArray(key)) { - //short-circuit everything else - locale = loadLocale(key); - if (locale) { - return locale; - } - key = [key]; - } - - return chooseLocale(key); - } - - var aliases = {}; - - function addUnitAlias (unit, shorthand) { - var lowerCase = unit.toLowerCase(); - aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit; - } - - function normalizeUnits(units) { - return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined; - } - - function normalizeObjectUnits(inputObject) { - var normalizedInput = {}, - normalizedProp, - prop; - - for (prop in inputObject) { - if (hasOwnProp(inputObject, prop)) { - normalizedProp = normalizeUnits(prop); - if (normalizedProp) { - normalizedInput[normalizedProp] = inputObject[prop]; - } - } - } - - return normalizedInput; - } - - function makeGetSet (unit, keepTime) { - return function (value) { - if (value != null) { - get_set__set(this, unit, value); - utils_hooks__hooks.updateOffset(this, keepTime); - return this; - } else { - return get_set__get(this, unit); - } - }; - } - - function get_set__get (mom, unit) { - return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); - } - - function get_set__set (mom, unit, value) { - return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); - } - - // MOMENTS - - function getSet (units, value) { - var unit; - if (typeof units === 'object') { - for (unit in units) { - this.set(unit, units[unit]); - } - } else { - units = normalizeUnits(units); - if (typeof this[units] === 'function') { - return this[units](value); - } - } - return this; - } - - function zeroFill(number, targetLength, forceSign) { - var output = '' + Math.abs(number), - sign = number >= 0; - - while (output.length < targetLength) { - output = '0' + output; - } - return (sign ? (forceSign ? '+' : '') : '-') + output; - } - - var formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g; - - var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g; - - var formatFunctions = {}; - - var formatTokenFunctions = {}; - - // token: 'M' - // padded: ['MM', 2] - // ordinal: 'Mo' - // callback: function () { this.month() + 1 } - function addFormatToken (token, padded, ordinal, callback) { - var func = callback; - if (typeof callback === 'string') { - func = function () { - return this[callback](); - }; - } - if (token) { - formatTokenFunctions[token] = func; - } - if (padded) { - formatTokenFunctions[padded[0]] = function () { - return zeroFill(func.apply(this, arguments), padded[1], padded[2]); - }; - } - if (ordinal) { - formatTokenFunctions[ordinal] = function () { - return this.localeData().ordinal(func.apply(this, arguments), token); - }; - } - } - - function removeFormattingTokens(input) { - if (input.match(/\[[\s\S]/)) { - return input.replace(/^\[|\]$/g, ''); - } - return input.replace(/\\/g, ''); - } - - function makeFormatFunction(format) { - var array = format.match(formattingTokens), i, length; - - for (i = 0, length = array.length; i < length; i++) { - if (formatTokenFunctions[array[i]]) { - array[i] = formatTokenFunctions[array[i]]; - } else { - array[i] = removeFormattingTokens(array[i]); - } - } - - return function (mom) { - var output = ''; - for (i = 0; i < length; i++) { - output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; - } - return output; - }; - } - - // format date using native date object - function formatMoment(m, format) { - if (!m.isValid()) { - return m.localeData().invalidDate(); - } - - format = expandFormat(format, m.localeData()); - - if (!formatFunctions[format]) { - formatFunctions[format] = makeFormatFunction(format); - } - - return formatFunctions[format](m); - } - - function expandFormat(format, locale) { - var i = 5; - - function replaceLongDateFormatTokens(input) { - return locale.longDateFormat(input) || input; - } - - localFormattingTokens.lastIndex = 0; - while (i >= 0 && localFormattingTokens.test(format)) { - format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); - localFormattingTokens.lastIndex = 0; - i -= 1; - } - - return format; - } - - var match1 = /\d/; // 0 - 9 - var match2 = /\d\d/; // 00 - 99 - var match3 = /\d{3}/; // 000 - 999 - var match4 = /\d{4}/; // 0000 - 9999 - var match6 = /[+-]?\d{6}/; // -999999 - 999999 - var match1to2 = /\d\d?/; // 0 - 99 - var match1to3 = /\d{1,3}/; // 0 - 999 - var match1to4 = /\d{1,4}/; // 0 - 9999 - var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999 - - var matchUnsigned = /\d+/; // 0 - inf - var matchSigned = /[+-]?\d+/; // -inf - inf - - var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z - - var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123 - - // any word (or two) characters or numbers including two/three word month in arabic. - var matchWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i; - - var regexes = {}; - - function addRegexToken (token, regex, strictRegex) { - regexes[token] = typeof regex === 'function' ? regex : function (isStrict) { - return (isStrict && strictRegex) ? strictRegex : regex; - }; - } - - function getParseRegexForToken (token, config) { - if (!hasOwnProp(regexes, token)) { - return new RegExp(unescapeFormat(token)); - } - - return regexes[token](config._strict, config._locale); - } - - // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript - function unescapeFormat(s) { - return s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { - return p1 || p2 || p3 || p4; - }).replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); - } - - var tokens = {}; - - function addParseToken (token, callback) { - var i, func = callback; - if (typeof token === 'string') { - token = [token]; - } - if (typeof callback === 'number') { - func = function (input, array) { - array[callback] = toInt(input); - }; - } - for (i = 0; i < token.length; i++) { - tokens[token[i]] = func; - } - } - - function addWeekParseToken (token, callback) { - addParseToken(token, function (input, array, config, token) { - config._w = config._w || {}; - callback(input, config._w, config, token); - }); - } - - function addTimeToArrayFromToken(token, input, config) { - if (input != null && hasOwnProp(tokens, token)) { - tokens[token](input, config._a, config, token); - } - } - - var YEAR = 0; - var MONTH = 1; - var DATE = 2; - var HOUR = 3; - var MINUTE = 4; - var SECOND = 5; - var MILLISECOND = 6; - - function daysInMonth(year, month) { - return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); - } - - // FORMATTING - - addFormatToken('M', ['MM', 2], 'Mo', function () { - return this.month() + 1; - }); - - addFormatToken('MMM', 0, 0, function (format) { - return this.localeData().monthsShort(this, format); - }); - - addFormatToken('MMMM', 0, 0, function (format) { - return this.localeData().months(this, format); - }); - - // ALIASES - - addUnitAlias('month', 'M'); - - // PARSING - - addRegexToken('M', match1to2); - addRegexToken('MM', match1to2, match2); - addRegexToken('MMM', matchWord); - addRegexToken('MMMM', matchWord); - - addParseToken(['M', 'MM'], function (input, array) { - array[MONTH] = toInt(input) - 1; - }); - - addParseToken(['MMM', 'MMMM'], function (input, array, config, token) { - var month = config._locale.monthsParse(input, token, config._strict); - // if we didn't find a month name, mark the date as invalid. - if (month != null) { - array[MONTH] = month; - } else { - getParsingFlags(config).invalidMonth = input; - } - }); - - // LOCALES - - var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'); - function localeMonths (m) { - return this._months[m.month()]; - } - - var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'); - function localeMonthsShort (m) { - return this._monthsShort[m.month()]; - } - - function localeMonthsParse (monthName, format, strict) { - var i, mom, regex; - - if (!this._monthsParse) { - this._monthsParse = []; - this._longMonthsParse = []; - this._shortMonthsParse = []; - } - - for (i = 0; i < 12; i++) { - // make the regex if we don't have it already - mom = create_utc__createUTC([2000, i]); - if (strict && !this._longMonthsParse[i]) { - this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); - this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); - } - if (!strict && !this._monthsParse[i]) { - regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); - this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { - return i; - } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { - return i; - } else if (!strict && this._monthsParse[i].test(monthName)) { - return i; - } - } - } - - // MOMENTS - - function setMonth (mom, value) { - var dayOfMonth; - - // TODO: Move this out of here! - if (typeof value === 'string') { - value = mom.localeData().monthsParse(value); - // TODO: Another silent failure? - if (typeof value !== 'number') { - return mom; - } - } - - dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); - mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); - return mom; - } - - function getSetMonth (value) { - if (value != null) { - setMonth(this, value); - utils_hooks__hooks.updateOffset(this, true); - return this; - } else { - return get_set__get(this, 'Month'); - } - } - - function getDaysInMonth () { - return daysInMonth(this.year(), this.month()); - } - - function checkOverflow (m) { - var overflow; - var a = m._a; - - if (a && getParsingFlags(m).overflow === -2) { - overflow = - a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : - a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : - a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR : - a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : - a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : - a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : - -1; - - if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { - overflow = DATE; - } - - getParsingFlags(m).overflow = overflow; - } - - return m; - } - - function warn(msg) { - if (utils_hooks__hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn) { - console.warn('Deprecation warning: ' + msg); - } - } - - function deprecate(msg, fn) { - var firstTime = true, - msgWithStack = msg + '\n' + (new Error()).stack; - - return extend(function () { - if (firstTime) { - warn(msgWithStack); - firstTime = false; - } - return fn.apply(this, arguments); - }, fn); - } - - var deprecations = {}; - - function deprecateSimple(name, msg) { - if (!deprecations[name]) { - warn(msg); - deprecations[name] = true; - } - } - - utils_hooks__hooks.suppressDeprecationWarnings = false; - - var from_string__isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; - - var isoDates = [ - ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], - ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], - ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], - ['GGGG-[W]WW', /\d{4}-W\d{2}/], - ['YYYY-DDD', /\d{4}-\d{3}/] - ]; - - // iso time formats and regexes - var isoTimes = [ - ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], - ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], - ['HH:mm', /(T| )\d\d:\d\d/], - ['HH', /(T| )\d\d/] - ]; - - var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i; - - // date from iso format - function configFromISO(config) { - var i, l, - string = config._i, - match = from_string__isoRegex.exec(string); - - if (match) { - getParsingFlags(config).iso = true; - for (i = 0, l = isoDates.length; i < l; i++) { - if (isoDates[i][1].exec(string)) { - // match[5] should be 'T' or undefined - config._f = isoDates[i][0] + (match[6] || ' '); - break; - } - } - for (i = 0, l = isoTimes.length; i < l; i++) { - if (isoTimes[i][1].exec(string)) { - config._f += isoTimes[i][0]; - break; - } - } - if (string.match(matchOffset)) { - config._f += 'Z'; - } - configFromStringAndFormat(config); - } else { - config._isValid = false; - } - } - - // date from iso format or fallback - function configFromString(config) { - var matched = aspNetJsonRegex.exec(config._i); - - if (matched !== null) { - config._d = new Date(+matched[1]); - return; - } - - configFromISO(config); - if (config._isValid === false) { - delete config._isValid; - utils_hooks__hooks.createFromInputFallback(config); - } - } - - utils_hooks__hooks.createFromInputFallback = deprecate( - 'moment construction falls back to js Date. This is ' + - 'discouraged and will be removed in upcoming major ' + - 'release. Please refer to ' + - 'https://github.com/moment/moment/issues/1407 for more info.', - function (config) { - config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); - } - ); - - function createDate (y, m, d, h, M, s, ms) { - //can't just apply() to create a date: - //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply - var date = new Date(y, m, d, h, M, s, ms); - - //the date constructor doesn't accept years < 1970 - if (y < 1970) { - date.setFullYear(y); - } - return date; - } - - function createUTCDate (y) { - var date = new Date(Date.UTC.apply(null, arguments)); - if (y < 1970) { - date.setUTCFullYear(y); - } - return date; - } - - addFormatToken(0, ['YY', 2], 0, function () { - return this.year() % 100; - }); - - addFormatToken(0, ['YYYY', 4], 0, 'year'); - addFormatToken(0, ['YYYYY', 5], 0, 'year'); - addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); - - // ALIASES - - addUnitAlias('year', 'y'); - - // PARSING - - addRegexToken('Y', matchSigned); - addRegexToken('YY', match1to2, match2); - addRegexToken('YYYY', match1to4, match4); - addRegexToken('YYYYY', match1to6, match6); - addRegexToken('YYYYYY', match1to6, match6); - - addParseToken(['YYYY', 'YYYYY', 'YYYYYY'], YEAR); - addParseToken('YY', function (input, array) { - array[YEAR] = utils_hooks__hooks.parseTwoDigitYear(input); - }); - - // HELPERS - - function daysInYear(year) { - return isLeapYear(year) ? 366 : 365; - } - - function isLeapYear(year) { - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; - } - - // HOOKS - - utils_hooks__hooks.parseTwoDigitYear = function (input) { - return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); - }; - - // MOMENTS - - var getSetYear = makeGetSet('FullYear', false); - - function getIsLeapYear () { - return isLeapYear(this.year()); - } - - addFormatToken('w', ['ww', 2], 'wo', 'week'); - addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); - - // ALIASES - - addUnitAlias('week', 'w'); - addUnitAlias('isoWeek', 'W'); - - // PARSING - - addRegexToken('w', match1to2); - addRegexToken('ww', match1to2, match2); - addRegexToken('W', match1to2); - addRegexToken('WW', match1to2, match2); - - addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) { - week[token.substr(0, 1)] = toInt(input); - }); - - // HELPERS - - // firstDayOfWeek 0 = sun, 6 = sat - // the day of the week that starts the week - // (usually sunday or monday) - // firstDayOfWeekOfYear 0 = sun, 6 = sat - // the first week is the week that contains the first - // of this day of the week - // (eg. ISO weeks use thursday (4)) - function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { - var end = firstDayOfWeekOfYear - firstDayOfWeek, - daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), - adjustedMoment; - - - if (daysToDayOfWeek > end) { - daysToDayOfWeek -= 7; - } - - if (daysToDayOfWeek < end - 7) { - daysToDayOfWeek += 7; - } - - adjustedMoment = local__createLocal(mom).add(daysToDayOfWeek, 'd'); - return { - week: Math.ceil(adjustedMoment.dayOfYear() / 7), - year: adjustedMoment.year() - }; - } - - // LOCALES - - function localeWeek (mom) { - return weekOfYear(mom, this._week.dow, this._week.doy).week; - } - - var defaultLocaleWeek = { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - }; - - function localeFirstDayOfWeek () { - return this._week.dow; - } - - function localeFirstDayOfYear () { - return this._week.doy; - } - - // MOMENTS - - function getSetWeek (input) { - var week = this.localeData().week(this); - return input == null ? week : this.add((input - week) * 7, 'd'); - } - - function getSetISOWeek (input) { - var week = weekOfYear(this, 1, 4).week; - return input == null ? week : this.add((input - week) * 7, 'd'); - } - - addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); - - // ALIASES - - addUnitAlias('dayOfYear', 'DDD'); - - // PARSING - - addRegexToken('DDD', match1to3); - addRegexToken('DDDD', match3); - addParseToken(['DDD', 'DDDD'], function (input, array, config) { - config._dayOfYear = toInt(input); - }); - - // HELPERS - - //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday - function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { - var d = createUTCDate(year, 0, 1).getUTCDay(); - var daysToAdd; - var dayOfYear; - - d = d === 0 ? 7 : d; - weekday = weekday != null ? weekday : firstDayOfWeek; - daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0); - dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1; - - return { - year : dayOfYear > 0 ? year : year - 1, - dayOfYear : dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear - }; - } - - // MOMENTS - - function getSetDayOfYear (input) { - var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1; - return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); - } - - // Pick the first defined of two or three arguments. - function defaults(a, b, c) { - if (a != null) { - return a; - } - if (b != null) { - return b; - } - return c; - } - - function currentDateArray(config) { - var now = new Date(); - if (config._useUTC) { - return [now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate()]; - } - return [now.getFullYear(), now.getMonth(), now.getDate()]; - } - - // convert an array to a date. - // the array should mirror the parameters below - // note: all values past the year are optional and will default to the lowest possible value. - // [year, month, day , hour, minute, second, millisecond] - function configFromArray (config) { - var i, date, input = [], currentDate, yearToUse; - - if (config._d) { - return; - } - - currentDate = currentDateArray(config); - - //compute day of the year from weeks and weekdays - if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { - dayOfYearFromWeekInfo(config); - } - - //if the day of the year is set, figure out what it is - if (config._dayOfYear) { - yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); - - if (config._dayOfYear > daysInYear(yearToUse)) { - getParsingFlags(config)._overflowDayOfYear = true; - } - - date = createUTCDate(yearToUse, 0, config._dayOfYear); - config._a[MONTH] = date.getUTCMonth(); - config._a[DATE] = date.getUTCDate(); - } - - // Default to current date. - // * if no year, month, day of month are given, default to today - // * if day of month is given, default month and year - // * if month is given, default only year - // * if year is given, don't default anything - for (i = 0; i < 3 && config._a[i] == null; ++i) { - config._a[i] = input[i] = currentDate[i]; - } - - // Zero out whatever was not defaulted, including time - for (; i < 7; i++) { - config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; - } - - // Check for 24:00:00.000 - if (config._a[HOUR] === 24 && - config._a[MINUTE] === 0 && - config._a[SECOND] === 0 && - config._a[MILLISECOND] === 0) { - config._nextDay = true; - config._a[HOUR] = 0; - } - - config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input); - // Apply timezone offset from input. The actual utcOffset can be changed - // with parseZone. - if (config._tzm != null) { - config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); - } - - if (config._nextDay) { - config._a[HOUR] = 24; - } - } - - function dayOfYearFromWeekInfo(config) { - var w, weekYear, week, weekday, dow, doy, temp; - - w = config._w; - if (w.GG != null || w.W != null || w.E != null) { - dow = 1; - doy = 4; - - // TODO: We need to take the current isoWeekYear, but that depends on - // how we interpret now (local, utc, fixed offset). So create - // a now version of current config (take local/utc/offset flags, and - // create now). - weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(local__createLocal(), 1, 4).year); - week = defaults(w.W, 1); - weekday = defaults(w.E, 1); - } else { - dow = config._locale._week.dow; - doy = config._locale._week.doy; - - weekYear = defaults(w.gg, config._a[YEAR], weekOfYear(local__createLocal(), dow, doy).year); - week = defaults(w.w, 1); - - if (w.d != null) { - // weekday -- low day numbers are considered next week - weekday = w.d; - if (weekday < dow) { - ++week; - } - } else if (w.e != null) { - // local weekday -- counting starts from begining of week - weekday = w.e + dow; - } else { - // default to begining of week - weekday = dow; - } - } - temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); - - config._a[YEAR] = temp.year; - config._dayOfYear = temp.dayOfYear; - } - - utils_hooks__hooks.ISO_8601 = function () {}; - - // date from string and format string - function configFromStringAndFormat(config) { - // TODO: Move this to another part of the creation flow to prevent circular deps - if (config._f === utils_hooks__hooks.ISO_8601) { - configFromISO(config); - return; - } - - config._a = []; - getParsingFlags(config).empty = true; - - // This array is used to make a Date, either with `new Date` or `Date.UTC` - var string = '' + config._i, - i, parsedInput, tokens, token, skipped, - stringLength = string.length, - totalParsedInputLength = 0; - - tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; - - for (i = 0; i < tokens.length; i++) { - token = tokens[i]; - parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; - if (parsedInput) { - skipped = string.substr(0, string.indexOf(parsedInput)); - if (skipped.length > 0) { - getParsingFlags(config).unusedInput.push(skipped); - } - string = string.slice(string.indexOf(parsedInput) + parsedInput.length); - totalParsedInputLength += parsedInput.length; - } - // don't parse if it's not a known token - if (formatTokenFunctions[token]) { - if (parsedInput) { - getParsingFlags(config).empty = false; - } - else { - getParsingFlags(config).unusedTokens.push(token); - } - addTimeToArrayFromToken(token, parsedInput, config); - } - else if (config._strict && !parsedInput) { - getParsingFlags(config).unusedTokens.push(token); - } - } - - // add remaining unparsed input length to the string - getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength; - if (string.length > 0) { - getParsingFlags(config).unusedInput.push(string); - } - - // clear _12h flag if hour is <= 12 - if (getParsingFlags(config).bigHour === true && - config._a[HOUR] <= 12 && - config._a[HOUR] > 0) { - getParsingFlags(config).bigHour = undefined; - } - // handle meridiem - config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); - - configFromArray(config); - checkOverflow(config); - } - - - function meridiemFixWrap (locale, hour, meridiem) { - var isPm; - - if (meridiem == null) { - // nothing to do - return hour; - } - if (locale.meridiemHour != null) { - return locale.meridiemHour(hour, meridiem); - } else if (locale.isPM != null) { - // Fallback - isPm = locale.isPM(meridiem); - if (isPm && hour < 12) { - hour += 12; - } - if (!isPm && hour === 12) { - hour = 0; - } - return hour; - } else { - // this is not supposed to happen - return hour; - } - } - - function configFromStringAndArray(config) { - var tempConfig, - bestMoment, - - scoreToBeat, - i, - currentScore; - - if (config._f.length === 0) { - getParsingFlags(config).invalidFormat = true; - config._d = new Date(NaN); - return; - } - - for (i = 0; i < config._f.length; i++) { - currentScore = 0; - tempConfig = copyConfig({}, config); - if (config._useUTC != null) { - tempConfig._useUTC = config._useUTC; - } - tempConfig._f = config._f[i]; - configFromStringAndFormat(tempConfig); - - if (!valid__isValid(tempConfig)) { - continue; - } - - // if there is any input that was not parsed add a penalty for that format - currentScore += getParsingFlags(tempConfig).charsLeftOver; - - //or tokens - currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; - - getParsingFlags(tempConfig).score = currentScore; - - if (scoreToBeat == null || currentScore < scoreToBeat) { - scoreToBeat = currentScore; - bestMoment = tempConfig; - } - } - - extend(config, bestMoment || tempConfig); - } - - function configFromObject(config) { - if (config._d) { - return; - } - - var i = normalizeObjectUnits(config._i); - config._a = [i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond]; - - configFromArray(config); - } - - function createFromConfig (config) { - var input = config._i, - format = config._f, - res; - - config._locale = config._locale || locale_locales__getLocale(config._l); - - if (input === null || (format === undefined && input === '')) { - return valid__createInvalid({nullInput: true}); - } - - if (typeof input === 'string') { - config._i = input = config._locale.preparse(input); - } - - if (isMoment(input)) { - return new Moment(checkOverflow(input)); - } else if (isArray(format)) { - configFromStringAndArray(config); - } else if (format) { - configFromStringAndFormat(config); - } else if (isDate(input)) { - config._d = input; - } else { - configFromInput(config); - } - - res = new Moment(checkOverflow(config)); - if (res._nextDay) { - // Adding is smart enough around DST - res.add(1, 'd'); - res._nextDay = undefined; - } - - return res; - } - - function configFromInput(config) { - var input = config._i; - if (input === undefined) { - config._d = new Date(); - } else if (isDate(input)) { - config._d = new Date(+input); - } else if (typeof input === 'string') { - configFromString(config); - } else if (isArray(input)) { - config._a = map(input.slice(0), function (obj) { - return parseInt(obj, 10); - }); - configFromArray(config); - } else if (typeof(input) === 'object') { - configFromObject(config); - } else if (typeof(input) === 'number') { - // from milliseconds - config._d = new Date(input); - } else { - utils_hooks__hooks.createFromInputFallback(config); - } - } - - function createLocalOrUTC (input, format, locale, strict, isUTC) { - var c = {}; - - if (typeof(locale) === 'boolean') { - strict = locale; - locale = undefined; - } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c._isAMomentObject = true; - c._useUTC = c._isUTC = isUTC; - c._l = locale; - c._i = input; - c._f = format; - c._strict = strict; - - return createFromConfig(c); - } - - function local__createLocal (input, format, locale, strict) { - return createLocalOrUTC(input, format, locale, strict, false); - } - - var prototypeMin = deprecate( - 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', - function () { - var other = local__createLocal.apply(null, arguments); - return other < this ? this : other; - } - ); - - var prototypeMax = deprecate( - 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', - function () { - var other = local__createLocal.apply(null, arguments); - return other > this ? this : other; - } - ); - - // Pick a moment m from moments so that m[fn](other) is true for all - // other. This relies on the function fn to be transitive. - // - // moments should either be an array of moment objects or an array, whose - // first element is an array of moment objects. - function pickBy(fn, moments) { - var res, i; - if (moments.length === 1 && isArray(moments[0])) { - moments = moments[0]; - } - if (!moments.length) { - return local__createLocal(); - } - res = moments[0]; - for (i = 1; i < moments.length; ++i) { - if (moments[i][fn](res)) { - res = moments[i]; - } - } - return res; - } - - // TODO: Use [].sort instead? - function min () { - var args = [].slice.call(arguments, 0); - - return pickBy('isBefore', args); - } - - function max () { - var args = [].slice.call(arguments, 0); - - return pickBy('isAfter', args); - } - - function Duration (duration) { - var normalizedInput = normalizeObjectUnits(duration), - years = normalizedInput.year || 0, - quarters = normalizedInput.quarter || 0, - months = normalizedInput.month || 0, - weeks = normalizedInput.week || 0, - days = normalizedInput.day || 0, - hours = normalizedInput.hour || 0, - minutes = normalizedInput.minute || 0, - seconds = normalizedInput.second || 0, - milliseconds = normalizedInput.millisecond || 0; - - // representation for dateAddRemove - this._milliseconds = +milliseconds + - seconds * 1e3 + // 1000 - minutes * 6e4 + // 1000 * 60 - hours * 36e5; // 1000 * 60 * 60 - // Because of dateAddRemove treats 24 hours as different from a - // day when working around DST, we need to store them separately - this._days = +days + - weeks * 7; - // It is impossible translate months into days without knowing - // which months you are are talking about, so we have to store - // it separately. - this._months = +months + - quarters * 3 + - years * 12; - - this._data = {}; - - this._locale = locale_locales__getLocale(); - - this._bubble(); - } - - function isDuration (obj) { - return obj instanceof Duration; - } - - function offset (token, separator) { - addFormatToken(token, 0, 0, function () { - var offset = this.utcOffset(); - var sign = '+'; - if (offset < 0) { - offset = -offset; - sign = '-'; - } - return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2); - }); - } - - offset('Z', ':'); - offset('ZZ', ''); - - // PARSING - - addRegexToken('Z', matchOffset); - addRegexToken('ZZ', matchOffset); - addParseToken(['Z', 'ZZ'], function (input, array, config) { - config._useUTC = true; - config._tzm = offsetFromString(input); - }); - - // HELPERS - - // timezone chunker - // '+10:00' > ['10', '00'] - // '-1530' > ['-15', '30'] - var chunkOffset = /([\+\-]|\d\d)/gi; - - function offsetFromString(string) { - var matches = ((string || '').match(matchOffset) || []); - var chunk = matches[matches.length - 1] || []; - var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; - var minutes = +(parts[1] * 60) + toInt(parts[2]); - - return parts[0] === '+' ? minutes : -minutes; - } - - // Return a moment from input, that is local/utc/zone equivalent to model. - function cloneWithOffset(input, model) { - var res, diff; - if (model._isUTC) { - res = model.clone(); - diff = (isMoment(input) || isDate(input) ? +input : +local__createLocal(input)) - (+res); - // Use low-level api, because this fn is low-level api. - res._d.setTime(+res._d + diff); - utils_hooks__hooks.updateOffset(res, false); - return res; - } else { - return local__createLocal(input).local(); - } - return model._isUTC ? local__createLocal(input).zone(model._offset || 0) : local__createLocal(input).local(); - } - - function getDateOffset (m) { - // On Firefox.24 Date#getTimezoneOffset returns a floating point. - // https://github.com/moment/moment/pull/1871 - return -Math.round(m._d.getTimezoneOffset() / 15) * 15; - } - - // HOOKS - - // This function will be called whenever a moment is mutated. - // It is intended to keep the offset in sync with the timezone. - utils_hooks__hooks.updateOffset = function () {}; - - // MOMENTS - - // keepLocalTime = true means only change the timezone, without - // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> - // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset - // +0200, so we adjust the time as needed, to be valid. - // - // Keeping the time actually adds/subtracts (one hour) - // from the actual represented time. That is why we call updateOffset - // a second time. In case it wants us to change the offset again - // _changeInProgress == true case, then we have to adjust, because - // there is no such time in the given timezone. - function getSetOffset (input, keepLocalTime) { - var offset = this._offset || 0, - localAdjust; - if (input != null) { - if (typeof input === 'string') { - input = offsetFromString(input); - } - if (Math.abs(input) < 16) { - input = input * 60; - } - if (!this._isUTC && keepLocalTime) { - localAdjust = getDateOffset(this); - } - this._offset = input; - this._isUTC = true; - if (localAdjust != null) { - this.add(localAdjust, 'm'); - } - if (offset !== input) { - if (!keepLocalTime || this._changeInProgress) { - add_subtract__addSubtract(this, create__createDuration(input - offset, 'm'), 1, false); - } else if (!this._changeInProgress) { - this._changeInProgress = true; - utils_hooks__hooks.updateOffset(this, true); - this._changeInProgress = null; - } - } - return this; - } else { - return this._isUTC ? offset : getDateOffset(this); - } - } - - function getSetZone (input, keepLocalTime) { - if (input != null) { - if (typeof input !== 'string') { - input = -input; - } - - this.utcOffset(input, keepLocalTime); - - return this; - } else { - return -this.utcOffset(); - } - } - - function setOffsetToUTC (keepLocalTime) { - return this.utcOffset(0, keepLocalTime); - } - - function setOffsetToLocal (keepLocalTime) { - if (this._isUTC) { - this.utcOffset(0, keepLocalTime); - this._isUTC = false; - - if (keepLocalTime) { - this.subtract(getDateOffset(this), 'm'); - } - } - return this; - } - - function setOffsetToParsedOffset () { - if (this._tzm) { - this.utcOffset(this._tzm); - } else if (typeof this._i === 'string') { - this.utcOffset(offsetFromString(this._i)); - } - return this; - } - - function hasAlignedHourOffset (input) { - if (!input) { - input = 0; - } - else { - input = local__createLocal(input).utcOffset(); - } - - return (this.utcOffset() - input) % 60 === 0; - } - - function isDaylightSavingTime () { - return ( - this.utcOffset() > this.clone().month(0).utcOffset() || - this.utcOffset() > this.clone().month(5).utcOffset() - ); - } - - function isDaylightSavingTimeShifted () { - if (this._a) { - var other = this._isUTC ? create_utc__createUTC(this._a) : local__createLocal(this._a); - return this.isValid() && compareArrays(this._a, other.toArray()) > 0; - } - - return false; - } - - function isLocal () { - return !this._isUTC; - } - - function isUtcOffset () { - return this._isUTC; - } - - function isUtc () { - return this._isUTC && this._offset === 0; - } - - var aspNetRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/; - - // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html - // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere - var create__isoRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/; - - function create__createDuration (input, key) { - var duration = input, - // matching against regexp is expensive, do it on demand - match = null, - sign, - ret, - diffRes; - - if (isDuration(input)) { - duration = { - ms : input._milliseconds, - d : input._days, - M : input._months - }; - } else if (typeof input === 'number') { - duration = {}; - if (key) { - duration[key] = input; - } else { - duration.milliseconds = input; - } - } else if (!!(match = aspNetRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - duration = { - y : 0, - d : toInt(match[DATE]) * sign, - h : toInt(match[HOUR]) * sign, - m : toInt(match[MINUTE]) * sign, - s : toInt(match[SECOND]) * sign, - ms : toInt(match[MILLISECOND]) * sign - }; - } else if (!!(match = create__isoRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - duration = { - y : parseIso(match[2], sign), - M : parseIso(match[3], sign), - d : parseIso(match[4], sign), - h : parseIso(match[5], sign), - m : parseIso(match[6], sign), - s : parseIso(match[7], sign), - w : parseIso(match[8], sign) - }; - } else if (duration == null) {// checks for null or undefined - duration = {}; - } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) { - diffRes = momentsDifference(local__createLocal(duration.from), local__createLocal(duration.to)); - - duration = {}; - duration.ms = diffRes.milliseconds; - duration.M = diffRes.months; - } - - ret = new Duration(duration); - - if (isDuration(input) && hasOwnProp(input, '_locale')) { - ret._locale = input._locale; - } - - return ret; - } - - create__createDuration.fn = Duration.prototype; - - function parseIso (inp, sign) { - // We'd normally use ~~inp for this, but unfortunately it also - // converts floats to ints. - // inp may be undefined, so careful calling replace on it. - var res = inp && parseFloat(inp.replace(',', '.')); - // apply sign while we're at it - return (isNaN(res) ? 0 : res) * sign; - } - - function positiveMomentsDifference(base, other) { - var res = {milliseconds: 0, months: 0}; - - res.months = other.month() - base.month() + - (other.year() - base.year()) * 12; - if (base.clone().add(res.months, 'M').isAfter(other)) { - --res.months; - } - - res.milliseconds = +other - +(base.clone().add(res.months, 'M')); - - return res; - } - - function momentsDifference(base, other) { - var res; - other = cloneWithOffset(other, base); - if (base.isBefore(other)) { - res = positiveMomentsDifference(base, other); - } else { - res = positiveMomentsDifference(other, base); - res.milliseconds = -res.milliseconds; - res.months = -res.months; - } - - return res; - } - - function createAdder(direction, name) { - return function (val, period) { - var dur, tmp; - //invert the arguments, but complain about it - if (period !== null && !isNaN(+period)) { - deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); - tmp = val; val = period; period = tmp; - } - - val = typeof val === 'string' ? +val : val; - dur = create__createDuration(val, period); - add_subtract__addSubtract(this, dur, direction); - return this; - }; - } - - function add_subtract__addSubtract (mom, duration, isAdding, updateOffset) { - var milliseconds = duration._milliseconds, - days = duration._days, - months = duration._months; - updateOffset = updateOffset == null ? true : updateOffset; - - if (milliseconds) { - mom._d.setTime(+mom._d + milliseconds * isAdding); - } - if (days) { - get_set__set(mom, 'Date', get_set__get(mom, 'Date') + days * isAdding); - } - if (months) { - setMonth(mom, get_set__get(mom, 'Month') + months * isAdding); - } - if (updateOffset) { - utils_hooks__hooks.updateOffset(mom, days || months); - } - } - - var add_subtract__add = createAdder(1, 'add'); - var add_subtract__subtract = createAdder(-1, 'subtract'); - - function moment_calendar__calendar (time) { - // We want to compare the start of today, vs this. - // Getting start-of-today depends on whether we're local/utc/offset or not. - var now = time || local__createLocal(), - sod = cloneWithOffset(now, this).startOf('day'), - diff = this.diff(sod, 'days', true), - format = diff < -6 ? 'sameElse' : - diff < -1 ? 'lastWeek' : - diff < 0 ? 'lastDay' : - diff < 1 ? 'sameDay' : - diff < 2 ? 'nextDay' : - diff < 7 ? 'nextWeek' : 'sameElse'; - return this.format(this.localeData().calendar(format, this, local__createLocal(now))); - } - - function clone () { - return new Moment(this); - } - - function isAfter (input, units) { - var inputMs; - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); - if (units === 'millisecond') { - input = isMoment(input) ? input : local__createLocal(input); - return +this > +input; - } else { - inputMs = isMoment(input) ? +input : +local__createLocal(input); - return inputMs < +this.clone().startOf(units); - } - } - - function isBefore (input, units) { - var inputMs; - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); - if (units === 'millisecond') { - input = isMoment(input) ? input : local__createLocal(input); - return +this < +input; - } else { - inputMs = isMoment(input) ? +input : +local__createLocal(input); - return +this.clone().endOf(units) < inputMs; - } - } - - function isBetween (from, to, units) { - return this.isAfter(from, units) && this.isBefore(to, units); - } - - function isSame (input, units) { - var inputMs; - units = normalizeUnits(units || 'millisecond'); - if (units === 'millisecond') { - input = isMoment(input) ? input : local__createLocal(input); - return +this === +input; - } else { - inputMs = +local__createLocal(input); - return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units)); - } - } - - function absFloor (number) { - if (number < 0) { - return Math.ceil(number); - } else { - return Math.floor(number); - } - } - - function diff (input, units, asFloat) { - var that = cloneWithOffset(input, this), - zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4, - delta, output; - - units = normalizeUnits(units); - - if (units === 'year' || units === 'month' || units === 'quarter') { - output = monthDiff(this, that); - if (units === 'quarter') { - output = output / 3; - } else if (units === 'year') { - output = output / 12; - } - } else { - delta = this - that; - output = units === 'second' ? delta / 1e3 : // 1000 - units === 'minute' ? delta / 6e4 : // 1000 * 60 - units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60 - units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst - units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst - delta; - } - return asFloat ? output : absFloor(output); - } - - function monthDiff (a, b) { - // difference in months - var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), - // b is in (anchor - 1 month, anchor + 1 month) - anchor = a.clone().add(wholeMonthDiff, 'months'), - anchor2, adjust; - - if (b - anchor < 0) { - anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor - anchor2); - } else { - anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor2 - anchor); - } - - return -(wholeMonthDiff + adjust); - } - - utils_hooks__hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; - - function toString () { - return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); - } - - function moment_format__toISOString () { - var m = this.clone().utc(); - if (0 < m.year() && m.year() <= 9999) { - if ('function' === typeof Date.prototype.toISOString) { - // native implementation is ~50x faster, use it when we can - return this.toDate().toISOString(); - } else { - return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } - } else { - return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } - } - - function format (inputString) { - var output = formatMoment(this, inputString || utils_hooks__hooks.defaultFormat); - return this.localeData().postformat(output); - } - - function from (time, withoutSuffix) { - if (!this.isValid()) { - return this.localeData().invalidDate(); - } - return create__createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); - } - - function fromNow (withoutSuffix) { - return this.from(local__createLocal(), withoutSuffix); - } - - function to (time, withoutSuffix) { - if (!this.isValid()) { - return this.localeData().invalidDate(); - } - return create__createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix); - } - - function toNow (withoutSuffix) { - return this.to(local__createLocal(), withoutSuffix); - } - - function locale (key) { - var newLocaleData; - - if (key === undefined) { - return this._locale._abbr; - } else { - newLocaleData = locale_locales__getLocale(key); - if (newLocaleData != null) { - this._locale = newLocaleData; - } - return this; - } - } - - var lang = deprecate( - 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', - function (key) { - if (key === undefined) { - return this.localeData(); - } else { - return this.locale(key); - } - } - ); - - function localeData () { - return this._locale; - } - - function startOf (units) { - units = normalizeUnits(units); - // the following switch intentionally omits break keywords - // to utilize falling through the cases. - switch (units) { - case 'year': - this.month(0); - /* falls through */ - case 'quarter': - case 'month': - this.date(1); - /* falls through */ - case 'week': - case 'isoWeek': - case 'day': - this.hours(0); - /* falls through */ - case 'hour': - this.minutes(0); - /* falls through */ - case 'minute': - this.seconds(0); - /* falls through */ - case 'second': - this.milliseconds(0); - } - - // weeks are a special case - if (units === 'week') { - this.weekday(0); - } - if (units === 'isoWeek') { - this.isoWeekday(1); - } - - // quarters are also special - if (units === 'quarter') { - this.month(Math.floor(this.month() / 3) * 3); - } - - return this; - } - - function endOf (units) { - units = normalizeUnits(units); - if (units === undefined || units === 'millisecond') { - return this; - } - return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); - } - - function to_type__valueOf () { - return +this._d - ((this._offset || 0) * 60000); - } - - function unix () { - return Math.floor(+this / 1000); - } - - function toDate () { - return this._offset ? new Date(+this) : this._d; - } - - function toArray () { - var m = this; - return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()]; - } - - function moment_valid__isValid () { - return valid__isValid(this); - } - - function parsingFlags () { - return extend({}, getParsingFlags(this)); - } - - function invalidAt () { - return getParsingFlags(this).overflow; - } - - addFormatToken(0, ['gg', 2], 0, function () { - return this.weekYear() % 100; - }); - - addFormatToken(0, ['GG', 2], 0, function () { - return this.isoWeekYear() % 100; - }); - - function addWeekYearFormatToken (token, getter) { - addFormatToken(0, [token, token.length], 0, getter); - } - - addWeekYearFormatToken('gggg', 'weekYear'); - addWeekYearFormatToken('ggggg', 'weekYear'); - addWeekYearFormatToken('GGGG', 'isoWeekYear'); - addWeekYearFormatToken('GGGGG', 'isoWeekYear'); - - // ALIASES - - addUnitAlias('weekYear', 'gg'); - addUnitAlias('isoWeekYear', 'GG'); - - // PARSING - - addRegexToken('G', matchSigned); - addRegexToken('g', matchSigned); - addRegexToken('GG', match1to2, match2); - addRegexToken('gg', match1to2, match2); - addRegexToken('GGGG', match1to4, match4); - addRegexToken('gggg', match1to4, match4); - addRegexToken('GGGGG', match1to6, match6); - addRegexToken('ggggg', match1to6, match6); - - addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) { - week[token.substr(0, 2)] = toInt(input); - }); - - addWeekParseToken(['gg', 'GG'], function (input, week, config, token) { - week[token] = utils_hooks__hooks.parseTwoDigitYear(input); - }); - - // HELPERS - - function weeksInYear(year, dow, doy) { - return weekOfYear(local__createLocal([year, 11, 31 + dow - doy]), dow, doy).week; - } - - // MOMENTS - - function getSetWeekYear (input) { - var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; - return input == null ? year : this.add((input - year), 'y'); - } - - function getSetISOWeekYear (input) { - var year = weekOfYear(this, 1, 4).year; - return input == null ? year : this.add((input - year), 'y'); - } - - function getISOWeeksInYear () { - return weeksInYear(this.year(), 1, 4); - } - - function getWeeksInYear () { - var weekInfo = this.localeData()._week; - return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); - } - - addFormatToken('Q', 0, 0, 'quarter'); - - // ALIASES - - addUnitAlias('quarter', 'Q'); - - // PARSING - - addRegexToken('Q', match1); - addParseToken('Q', function (input, array) { - array[MONTH] = (toInt(input) - 1) * 3; - }); - - // MOMENTS - - function getSetQuarter (input) { - return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); - } - - addFormatToken('D', ['DD', 2], 'Do', 'date'); - - // ALIASES - - addUnitAlias('date', 'D'); - - // PARSING - - addRegexToken('D', match1to2); - addRegexToken('DD', match1to2, match2); - addRegexToken('Do', function (isStrict, locale) { - return isStrict ? locale._ordinalParse : locale._ordinalParseLenient; - }); - - addParseToken(['D', 'DD'], DATE); - addParseToken('Do', function (input, array) { - array[DATE] = toInt(input.match(match1to2)[0], 10); - }); - - // MOMENTS - - var getSetDayOfMonth = makeGetSet('Date', true); - - addFormatToken('d', 0, 'do', 'day'); - - addFormatToken('dd', 0, 0, function (format) { - return this.localeData().weekdaysMin(this, format); - }); - - addFormatToken('ddd', 0, 0, function (format) { - return this.localeData().weekdaysShort(this, format); - }); - - addFormatToken('dddd', 0, 0, function (format) { - return this.localeData().weekdays(this, format); - }); - - addFormatToken('e', 0, 0, 'weekday'); - addFormatToken('E', 0, 0, 'isoWeekday'); - - // ALIASES - - addUnitAlias('day', 'd'); - addUnitAlias('weekday', 'e'); - addUnitAlias('isoWeekday', 'E'); - - // PARSING - - addRegexToken('d', match1to2); - addRegexToken('e', match1to2); - addRegexToken('E', match1to2); - addRegexToken('dd', matchWord); - addRegexToken('ddd', matchWord); - addRegexToken('dddd', matchWord); - - addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config) { - var weekday = config._locale.weekdaysParse(input); - // if we didn't get a weekday name, mark the date as invalid - if (weekday != null) { - week.d = weekday; - } else { - getParsingFlags(config).invalidWeekday = input; - } - }); - - addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) { - week[token] = toInt(input); - }); - - // HELPERS - - function parseWeekday(input, locale) { - if (typeof input === 'string') { - if (!isNaN(input)) { - input = parseInt(input, 10); - } - else { - input = locale.weekdaysParse(input); - if (typeof input !== 'number') { - return null; - } - } - } - return input; - } - - // LOCALES - - var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'); - function localeWeekdays (m) { - return this._weekdays[m.day()]; - } - - var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'); - function localeWeekdaysShort (m) { - return this._weekdaysShort[m.day()]; - } - - var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'); - function localeWeekdaysMin (m) { - return this._weekdaysMin[m.day()]; - } - - function localeWeekdaysParse (weekdayName) { - var i, mom, regex; - - if (!this._weekdaysParse) { - this._weekdaysParse = []; - } - - for (i = 0; i < 7; i++) { - // make the regex if we don't have it already - if (!this._weekdaysParse[i]) { - mom = local__createLocal([2000, 1]).day(i); - regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); - this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (this._weekdaysParse[i].test(weekdayName)) { - return i; - } - } - } - - // MOMENTS - - function getSetDayOfWeek (input) { - var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); - if (input != null) { - input = parseWeekday(input, this.localeData()); - return this.add(input - day, 'd'); - } else { - return day; - } - } - - function getSetLocaleDayOfWeek (input) { - var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; - return input == null ? weekday : this.add(input - weekday, 'd'); - } - - function getSetISODayOfWeek (input) { - // behaves the same as moment#day except - // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) - // as a setter, sunday should belong to the previous week. - return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); - } - - addFormatToken('H', ['HH', 2], 0, 'hour'); - addFormatToken('h', ['hh', 2], 0, function () { - return this.hours() % 12 || 12; - }); - - function meridiem (token, lowercase) { - addFormatToken(token, 0, 0, function () { - return this.localeData().meridiem(this.hours(), this.minutes(), lowercase); - }); - } - - meridiem('a', true); - meridiem('A', false); - - // ALIASES - - addUnitAlias('hour', 'h'); - - // PARSING - - function matchMeridiem (isStrict, locale) { - return locale._meridiemParse; - } - - addRegexToken('a', matchMeridiem); - addRegexToken('A', matchMeridiem); - addRegexToken('H', match1to2); - addRegexToken('h', match1to2); - addRegexToken('HH', match1to2, match2); - addRegexToken('hh', match1to2, match2); - - addParseToken(['H', 'HH'], HOUR); - addParseToken(['a', 'A'], function (input, array, config) { - config._isPm = config._locale.isPM(input); - config._meridiem = input; - }); - addParseToken(['h', 'hh'], function (input, array, config) { - array[HOUR] = toInt(input); - getParsingFlags(config).bigHour = true; - }); - - // LOCALES - - function localeIsPM (input) { - // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays - // Using charAt should be more compatible. - return ((input + '').toLowerCase().charAt(0) === 'p'); - } - - var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i; - function localeMeridiem (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'pm' : 'PM'; - } else { - return isLower ? 'am' : 'AM'; - } - } - - - // MOMENTS - - // Setting the hour should keep the time, because the user explicitly - // specified which hour he wants. So trying to maintain the same hour (in - // a new timezone) makes sense. Adding/subtracting hours does not follow - // this rule. - var getSetHour = makeGetSet('Hours', true); - - addFormatToken('m', ['mm', 2], 0, 'minute'); - - // ALIASES - - addUnitAlias('minute', 'm'); - - // PARSING - - addRegexToken('m', match1to2); - addRegexToken('mm', match1to2, match2); - addParseToken(['m', 'mm'], MINUTE); - - // MOMENTS - - var getSetMinute = makeGetSet('Minutes', false); - - addFormatToken('s', ['ss', 2], 0, 'second'); - - // ALIASES - - addUnitAlias('second', 's'); - - // PARSING - - addRegexToken('s', match1to2); - addRegexToken('ss', match1to2, match2); - addParseToken(['s', 'ss'], SECOND); - - // MOMENTS - - var getSetSecond = makeGetSet('Seconds', false); - - addFormatToken('S', 0, 0, function () { - return ~~(this.millisecond() / 100); - }); - - addFormatToken(0, ['SS', 2], 0, function () { - return ~~(this.millisecond() / 10); - }); - - function millisecond__milliseconds (token) { - addFormatToken(0, [token, 3], 0, 'millisecond'); - } - - millisecond__milliseconds('SSS'); - millisecond__milliseconds('SSSS'); - - // ALIASES - - addUnitAlias('millisecond', 'ms'); - - // PARSING - - addRegexToken('S', match1to3, match1); - addRegexToken('SS', match1to3, match2); - addRegexToken('SSS', match1to3, match3); - addRegexToken('SSSS', matchUnsigned); - addParseToken(['S', 'SS', 'SSS', 'SSSS'], function (input, array) { - array[MILLISECOND] = toInt(('0.' + input) * 1000); - }); - - // MOMENTS - - var getSetMillisecond = makeGetSet('Milliseconds', false); - - addFormatToken('z', 0, 0, 'zoneAbbr'); - addFormatToken('zz', 0, 0, 'zoneName'); - - // MOMENTS - - function getZoneAbbr () { - return this._isUTC ? 'UTC' : ''; - } - - function getZoneName () { - return this._isUTC ? 'Coordinated Universal Time' : ''; - } - - var momentPrototype__proto = Moment.prototype; - - momentPrototype__proto.add = add_subtract__add; - momentPrototype__proto.calendar = moment_calendar__calendar; - momentPrototype__proto.clone = clone; - momentPrototype__proto.diff = diff; - momentPrototype__proto.endOf = endOf; - momentPrototype__proto.format = format; - momentPrototype__proto.from = from; - momentPrototype__proto.fromNow = fromNow; - momentPrototype__proto.to = to; - momentPrototype__proto.toNow = toNow; - momentPrototype__proto.get = getSet; - momentPrototype__proto.invalidAt = invalidAt; - momentPrototype__proto.isAfter = isAfter; - momentPrototype__proto.isBefore = isBefore; - momentPrototype__proto.isBetween = isBetween; - momentPrototype__proto.isSame = isSame; - momentPrototype__proto.isValid = moment_valid__isValid; - momentPrototype__proto.lang = lang; - momentPrototype__proto.locale = locale; - momentPrototype__proto.localeData = localeData; - momentPrototype__proto.max = prototypeMax; - momentPrototype__proto.min = prototypeMin; - momentPrototype__proto.parsingFlags = parsingFlags; - momentPrototype__proto.set = getSet; - momentPrototype__proto.startOf = startOf; - momentPrototype__proto.subtract = add_subtract__subtract; - momentPrototype__proto.toArray = toArray; - momentPrototype__proto.toDate = toDate; - momentPrototype__proto.toISOString = moment_format__toISOString; - momentPrototype__proto.toJSON = moment_format__toISOString; - momentPrototype__proto.toString = toString; - momentPrototype__proto.unix = unix; - momentPrototype__proto.valueOf = to_type__valueOf; - - // Year - momentPrototype__proto.year = getSetYear; - momentPrototype__proto.isLeapYear = getIsLeapYear; - - // Week Year - momentPrototype__proto.weekYear = getSetWeekYear; - momentPrototype__proto.isoWeekYear = getSetISOWeekYear; - - // Quarter - momentPrototype__proto.quarter = momentPrototype__proto.quarters = getSetQuarter; - - // Month - momentPrototype__proto.month = getSetMonth; - momentPrototype__proto.daysInMonth = getDaysInMonth; - - // Week - momentPrototype__proto.week = momentPrototype__proto.weeks = getSetWeek; - momentPrototype__proto.isoWeek = momentPrototype__proto.isoWeeks = getSetISOWeek; - momentPrototype__proto.weeksInYear = getWeeksInYear; - momentPrototype__proto.isoWeeksInYear = getISOWeeksInYear; - - // Day - momentPrototype__proto.date = getSetDayOfMonth; - momentPrototype__proto.day = momentPrototype__proto.days = getSetDayOfWeek; - momentPrototype__proto.weekday = getSetLocaleDayOfWeek; - momentPrototype__proto.isoWeekday = getSetISODayOfWeek; - momentPrototype__proto.dayOfYear = getSetDayOfYear; - - // Hour - momentPrototype__proto.hour = momentPrototype__proto.hours = getSetHour; - - // Minute - momentPrototype__proto.minute = momentPrototype__proto.minutes = getSetMinute; - - // Second - momentPrototype__proto.second = momentPrototype__proto.seconds = getSetSecond; - - // Millisecond - momentPrototype__proto.millisecond = momentPrototype__proto.milliseconds = getSetMillisecond; - - // Offset - momentPrototype__proto.utcOffset = getSetOffset; - momentPrototype__proto.utc = setOffsetToUTC; - momentPrototype__proto.local = setOffsetToLocal; - momentPrototype__proto.parseZone = setOffsetToParsedOffset; - momentPrototype__proto.hasAlignedHourOffset = hasAlignedHourOffset; - momentPrototype__proto.isDST = isDaylightSavingTime; - momentPrototype__proto.isDSTShifted = isDaylightSavingTimeShifted; - momentPrototype__proto.isLocal = isLocal; - momentPrototype__proto.isUtcOffset = isUtcOffset; - momentPrototype__proto.isUtc = isUtc; - momentPrototype__proto.isUTC = isUtc; - - // Timezone - momentPrototype__proto.zoneAbbr = getZoneAbbr; - momentPrototype__proto.zoneName = getZoneName; - - // Deprecations - momentPrototype__proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth); - momentPrototype__proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth); - momentPrototype__proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear); - momentPrototype__proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779', getSetZone); - - var momentPrototype = momentPrototype__proto; - - function moment__createUnix (input) { - return local__createLocal(input * 1000); - } - - function moment__createInZone () { - return local__createLocal.apply(null, arguments).parseZone(); - } - - var defaultCalendar = { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }; - - function locale_calendar__calendar (key, mom, now) { - var output = this._calendar[key]; - return typeof output === 'function' ? output.call(mom, now) : output; - } - - var defaultLongDateFormat = { - LTS : 'h:mm:ss A', - LT : 'h:mm A', - L : 'MM/DD/YYYY', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY LT', - LLLL : 'dddd, MMMM D, YYYY LT' - }; - - function longDateFormat (key) { - var output = this._longDateFormat[key]; - if (!output && this._longDateFormat[key.toUpperCase()]) { - output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) { - return val.slice(1); - }); - this._longDateFormat[key] = output; - } - return output; - } - - var defaultInvalidDate = 'Invalid date'; - - function invalidDate () { - return this._invalidDate; - } - - var defaultOrdinal = '%d'; - var defaultOrdinalParse = /\d{1,2}/; - - function ordinal (number) { - return this._ordinal.replace('%d', number); - } - - function preParsePostFormat (string) { - return string; - } - - var defaultRelativeTime = { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }; - - function relative__relativeTime (number, withoutSuffix, string, isFuture) { - var output = this._relativeTime[string]; - return (typeof output === 'function') ? - output(number, withoutSuffix, string, isFuture) : - output.replace(/%d/i, number); - } - - function pastFuture (diff, output) { - var format = this._relativeTime[diff > 0 ? 'future' : 'past']; - return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); - } - - function locale_set__set (config) { - var prop, i; - for (i in config) { - prop = config[i]; - if (typeof prop === 'function') { - this[i] = prop; - } else { - this['_' + i] = prop; - } - } - // Lenient ordinal parsing accepts just a number in addition to - // number + (possibly) stuff coming from _ordinalParseLenient. - this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\d{1,2}/).source); - } - - var prototype__proto = Locale.prototype; - - prototype__proto._calendar = defaultCalendar; - prototype__proto.calendar = locale_calendar__calendar; - prototype__proto._longDateFormat = defaultLongDateFormat; - prototype__proto.longDateFormat = longDateFormat; - prototype__proto._invalidDate = defaultInvalidDate; - prototype__proto.invalidDate = invalidDate; - prototype__proto._ordinal = defaultOrdinal; - prototype__proto.ordinal = ordinal; - prototype__proto._ordinalParse = defaultOrdinalParse; - prototype__proto.preparse = preParsePostFormat; - prototype__proto.postformat = preParsePostFormat; - prototype__proto._relativeTime = defaultRelativeTime; - prototype__proto.relativeTime = relative__relativeTime; - prototype__proto.pastFuture = pastFuture; - prototype__proto.set = locale_set__set; - - // Month - prototype__proto.months = localeMonths; - prototype__proto._months = defaultLocaleMonths; - prototype__proto.monthsShort = localeMonthsShort; - prototype__proto._monthsShort = defaultLocaleMonthsShort; - prototype__proto.monthsParse = localeMonthsParse; - - // Week - prototype__proto.week = localeWeek; - prototype__proto._week = defaultLocaleWeek; - prototype__proto.firstDayOfYear = localeFirstDayOfYear; - prototype__proto.firstDayOfWeek = localeFirstDayOfWeek; - - // Day of Week - prototype__proto.weekdays = localeWeekdays; - prototype__proto._weekdays = defaultLocaleWeekdays; - prototype__proto.weekdaysMin = localeWeekdaysMin; - prototype__proto._weekdaysMin = defaultLocaleWeekdaysMin; - prototype__proto.weekdaysShort = localeWeekdaysShort; - prototype__proto._weekdaysShort = defaultLocaleWeekdaysShort; - prototype__proto.weekdaysParse = localeWeekdaysParse; - - // Hours - prototype__proto.isPM = localeIsPM; - prototype__proto._meridiemParse = defaultLocaleMeridiemParse; - prototype__proto.meridiem = localeMeridiem; - - function lists__get (format, index, field, setter) { - var locale = locale_locales__getLocale(); - var utc = create_utc__createUTC().set(setter, index); - return locale[field](utc, format); - } - - function list (format, index, field, count, setter) { - if (typeof format === 'number') { - index = format; - format = undefined; - } - - format = format || ''; - - if (index != null) { - return lists__get(format, index, field, setter); - } - - var i; - var out = []; - for (i = 0; i < count; i++) { - out[i] = lists__get(format, i, field, setter); - } - return out; - } - - function lists__listMonths (format, index) { - return list(format, index, 'months', 12, 'month'); - } - - function lists__listMonthsShort (format, index) { - return list(format, index, 'monthsShort', 12, 'month'); - } - - function lists__listWeekdays (format, index) { - return list(format, index, 'weekdays', 7, 'day'); - } - - function lists__listWeekdaysShort (format, index) { - return list(format, index, 'weekdaysShort', 7, 'day'); - } - - function lists__listWeekdaysMin (format, index) { - return list(format, index, 'weekdaysMin', 7, 'day'); - } - - locale_locales__getSetGlobalLocale('en', { - ordinalParse: /\d{1,2}(th|st|nd|rd)/, - ordinal : function (number) { - var b = number % 10, - output = (toInt(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - } - }); - - // Side effect imports - utils_hooks__hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', locale_locales__getSetGlobalLocale); - utils_hooks__hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', locale_locales__getLocale); - - var mathAbs = Math.abs; - - function duration_abs__abs () { - var data = this._data; - - this._milliseconds = mathAbs(this._milliseconds); - this._days = mathAbs(this._days); - this._months = mathAbs(this._months); - - data.milliseconds = mathAbs(data.milliseconds); - data.seconds = mathAbs(data.seconds); - data.minutes = mathAbs(data.minutes); - data.hours = mathAbs(data.hours); - data.months = mathAbs(data.months); - data.years = mathAbs(data.years); - - return this; - } - - function duration_add_subtract__addSubtract (duration, input, value, direction) { - var other = create__createDuration(input, value); - - duration._milliseconds += direction * other._milliseconds; - duration._days += direction * other._days; - duration._months += direction * other._months; - - return duration._bubble(); - } - - // supports only 2.0-style add(1, 's') or add(duration) - function duration_add_subtract__add (input, value) { - return duration_add_subtract__addSubtract(this, input, value, 1); - } - - // supports only 2.0-style subtract(1, 's') or subtract(duration) - function duration_add_subtract__subtract (input, value) { - return duration_add_subtract__addSubtract(this, input, value, -1); - } - - function bubble () { - var milliseconds = this._milliseconds; - var days = this._days; - var months = this._months; - var data = this._data; - var seconds, minutes, hours, years = 0; - - // The following code bubbles up values, see the tests for - // examples of what that means. - data.milliseconds = milliseconds % 1000; - - seconds = absFloor(milliseconds / 1000); - data.seconds = seconds % 60; - - minutes = absFloor(seconds / 60); - data.minutes = minutes % 60; - - hours = absFloor(minutes / 60); - data.hours = hours % 24; - - days += absFloor(hours / 24); - - // Accurately convert days to years, assume start from year 0. - years = absFloor(daysToYears(days)); - days -= absFloor(yearsToDays(years)); - - // 30 days to a month - // TODO (iskren): Use anchor date (like 1st Jan) to compute this. - months += absFloor(days / 30); - days %= 30; - - // 12 months -> 1 year - years += absFloor(months / 12); - months %= 12; - - data.days = days; - data.months = months; - data.years = years; - - return this; - } - - function daysToYears (days) { - // 400 years have 146097 days (taking into account leap year rules) - return days * 400 / 146097; - } - - function yearsToDays (years) { - // years * 365 + absFloor(years / 4) - - // absFloor(years / 100) + absFloor(years / 400); - return years * 146097 / 400; - } - - function as (units) { - var days; - var months; - var milliseconds = this._milliseconds; - - units = normalizeUnits(units); - - if (units === 'month' || units === 'year') { - days = this._days + milliseconds / 864e5; - months = this._months + daysToYears(days) * 12; - return units === 'month' ? months : months / 12; - } else { - // handle milliseconds separately because of floating point math errors (issue #1867) - days = this._days + Math.round(yearsToDays(this._months / 12)); - switch (units) { - case 'week' : return days / 7 + milliseconds / 6048e5; - case 'day' : return days + milliseconds / 864e5; - case 'hour' : return days * 24 + milliseconds / 36e5; - case 'minute' : return days * 1440 + milliseconds / 6e4; - case 'second' : return days * 86400 + milliseconds / 1000; - // Math.floor prevents floating point math errors here - case 'millisecond': return Math.floor(days * 864e5) + milliseconds; - default: throw new Error('Unknown unit ' + units); - } - } - } - - // TODO: Use this.as('ms')? - function duration_as__valueOf () { - return ( - this._milliseconds + - this._days * 864e5 + - (this._months % 12) * 2592e6 + - toInt(this._months / 12) * 31536e6 - ); - } - - function makeAs (alias) { - return function () { - return this.as(alias); - }; - } - - var asMilliseconds = makeAs('ms'); - var asSeconds = makeAs('s'); - var asMinutes = makeAs('m'); - var asHours = makeAs('h'); - var asDays = makeAs('d'); - var asWeeks = makeAs('w'); - var asMonths = makeAs('M'); - var asYears = makeAs('y'); - - function duration_get__get (units) { - units = normalizeUnits(units); - return this[units + 's'](); - } - - function makeGetter(name) { - return function () { - return this._data[name]; - }; - } - - var duration_get__milliseconds = makeGetter('milliseconds'); - var seconds = makeGetter('seconds'); - var minutes = makeGetter('minutes'); - var hours = makeGetter('hours'); - var days = makeGetter('days'); - var months = makeGetter('months'); - var years = makeGetter('years'); - - function weeks () { - return absFloor(this.days() / 7); - } - - var round = Math.round; - var thresholds = { - s: 45, // seconds to minute - m: 45, // minutes to hour - h: 22, // hours to day - d: 26, // days to month - M: 11 // months to year - }; - - // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize - function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { - return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); - } - - function duration_humanize__relativeTime (posNegDuration, withoutSuffix, locale) { - var duration = create__createDuration(posNegDuration).abs(); - var seconds = round(duration.as('s')); - var minutes = round(duration.as('m')); - var hours = round(duration.as('h')); - var days = round(duration.as('d')); - var months = round(duration.as('M')); - var years = round(duration.as('y')); - - var a = seconds < thresholds.s && ['s', seconds] || - minutes === 1 && ['m'] || - minutes < thresholds.m && ['mm', minutes] || - hours === 1 && ['h'] || - hours < thresholds.h && ['hh', hours] || - days === 1 && ['d'] || - days < thresholds.d && ['dd', days] || - months === 1 && ['M'] || - months < thresholds.M && ['MM', months] || - years === 1 && ['y'] || ['yy', years]; - - a[2] = withoutSuffix; - a[3] = +posNegDuration > 0; - a[4] = locale; - return substituteTimeAgo.apply(null, a); - } - - // This function allows you to set a threshold for relative time strings - function duration_humanize__getSetRelativeTimeThreshold (threshold, limit) { - if (thresholds[threshold] === undefined) { - return false; - } - if (limit === undefined) { - return thresholds[threshold]; - } - thresholds[threshold] = limit; - return true; - } - - function humanize (withSuffix) { - var locale = this.localeData(); - var output = duration_humanize__relativeTime(this, !withSuffix, locale); - - if (withSuffix) { - output = locale.pastFuture(+this, output); - } - - return locale.postformat(output); - } - - var iso_string__abs = Math.abs; - - function iso_string__toISOString() { - // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js - var Y = iso_string__abs(this.years()); - var M = iso_string__abs(this.months()); - var D = iso_string__abs(this.days()); - var h = iso_string__abs(this.hours()); - var m = iso_string__abs(this.minutes()); - var s = iso_string__abs(this.seconds() + this.milliseconds() / 1000); - var total = this.asSeconds(); - - if (!total) { - // this is the same as C#'s (Noda) and python (isodate)... - // but not other JS (goog.date) - return 'P0D'; - } - - return (total < 0 ? '-' : '') + - 'P' + - (Y ? Y + 'Y' : '') + - (M ? M + 'M' : '') + - (D ? D + 'D' : '') + - ((h || m || s) ? 'T' : '') + - (h ? h + 'H' : '') + - (m ? m + 'M' : '') + - (s ? s + 'S' : ''); - } - - var duration_prototype__proto = Duration.prototype; - - duration_prototype__proto.abs = duration_abs__abs; - duration_prototype__proto.add = duration_add_subtract__add; - duration_prototype__proto.subtract = duration_add_subtract__subtract; - duration_prototype__proto.as = as; - duration_prototype__proto.asMilliseconds = asMilliseconds; - duration_prototype__proto.asSeconds = asSeconds; - duration_prototype__proto.asMinutes = asMinutes; - duration_prototype__proto.asHours = asHours; - duration_prototype__proto.asDays = asDays; - duration_prototype__proto.asWeeks = asWeeks; - duration_prototype__proto.asMonths = asMonths; - duration_prototype__proto.asYears = asYears; - duration_prototype__proto.valueOf = duration_as__valueOf; - duration_prototype__proto._bubble = bubble; - duration_prototype__proto.get = duration_get__get; - duration_prototype__proto.milliseconds = duration_get__milliseconds; - duration_prototype__proto.seconds = seconds; - duration_prototype__proto.minutes = minutes; - duration_prototype__proto.hours = hours; - duration_prototype__proto.days = days; - duration_prototype__proto.weeks = weeks; - duration_prototype__proto.months = months; - duration_prototype__proto.years = years; - duration_prototype__proto.humanize = humanize; - duration_prototype__proto.toISOString = iso_string__toISOString; - duration_prototype__proto.toString = iso_string__toISOString; - duration_prototype__proto.toJSON = iso_string__toISOString; - duration_prototype__proto.locale = locale; - duration_prototype__proto.localeData = localeData; - - // Deprecations - duration_prototype__proto.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', iso_string__toISOString); - duration_prototype__proto.lang = lang; - - // Side effect imports - - addFormatToken('X', 0, 0, 'unix'); - addFormatToken('x', 0, 0, 'valueOf'); - - // PARSING - - addRegexToken('x', matchSigned); - addRegexToken('X', matchTimestamp); - addParseToken('X', function (input, array, config) { - config._d = new Date(parseFloat(input, 10) * 1000); - }); - addParseToken('x', function (input, array, config) { - config._d = new Date(toInt(input)); - }); - - // Side effect imports - - - utils_hooks__hooks.version = '2.10.3'; - - setHookCallback(local__createLocal); - - utils_hooks__hooks.fn = momentPrototype; - utils_hooks__hooks.min = min; - utils_hooks__hooks.max = max; - utils_hooks__hooks.utc = create_utc__createUTC; - utils_hooks__hooks.unix = moment__createUnix; - utils_hooks__hooks.months = lists__listMonths; - utils_hooks__hooks.isDate = isDate; - utils_hooks__hooks.locale = locale_locales__getSetGlobalLocale; - utils_hooks__hooks.invalid = valid__createInvalid; - utils_hooks__hooks.duration = create__createDuration; - utils_hooks__hooks.isMoment = isMoment; - utils_hooks__hooks.weekdays = lists__listWeekdays; - utils_hooks__hooks.parseZone = moment__createInZone; - utils_hooks__hooks.localeData = locale_locales__getLocale; - utils_hooks__hooks.isDuration = isDuration; - utils_hooks__hooks.monthsShort = lists__listMonthsShort; - utils_hooks__hooks.weekdaysMin = lists__listWeekdaysMin; - utils_hooks__hooks.defineLocale = defineLocale; - utils_hooks__hooks.weekdaysShort = lists__listWeekdaysShort; - utils_hooks__hooks.normalizeUnits = normalizeUnits; - utils_hooks__hooks.relativeTimeThreshold = duration_humanize__getSetRelativeTimeThreshold; - - var _moment = utils_hooks__hooks; - - return _moment; - -})); diff --git a/assets/plugins/daterangepicker/moment.min.js b/assets/plugins/daterangepicker/moment.min.js deleted file mode 100644 index 05199bd3..00000000 --- a/assets/plugins/daterangepicker/moment.min.js +++ /dev/null @@ -1,7 +0,0 @@ -//! moment.js -//! version : 2.10.3 -//! authors : Tim Wood, Iskren Chernev, Moment.js contributors -//! license : MIT -//! momentjs.com -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.moment=b()}(this,function(){"use strict";function a(){return Dc.apply(null,arguments)}function b(a){Dc=a}function c(a){return"[object Array]"===Object.prototype.toString.call(a)}function d(a){return a instanceof Date||"[object Date]"===Object.prototype.toString.call(a)}function e(a,b){var c,d=[];for(c=0;c<a.length;++c)d.push(b(a[c],c));return d}function f(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function g(a,b){for(var c in b)f(b,c)&&(a[c]=b[c]);return f(b,"toString")&&(a.toString=b.toString),f(b,"valueOf")&&(a.valueOf=b.valueOf),a}function h(a,b,c,d){return za(a,b,c,d,!0).utc()}function i(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function j(a){return null==a._pf&&(a._pf=i()),a._pf}function k(a){if(null==a._isValid){var b=j(a);a._isValid=!isNaN(a._d.getTime())&&b.overflow<0&&!b.empty&&!b.invalidMonth&&!b.nullInput&&!b.invalidFormat&&!b.userInvalidated,a._strict&&(a._isValid=a._isValid&&0===b.charsLeftOver&&0===b.unusedTokens.length&&void 0===b.bigHour)}return a._isValid}function l(a){var b=h(0/0);return null!=a?g(j(b),a):j(b).userInvalidated=!0,b}function m(a,b){var c,d,e;if("undefined"!=typeof b._isAMomentObject&&(a._isAMomentObject=b._isAMomentObject),"undefined"!=typeof b._i&&(a._i=b._i),"undefined"!=typeof b._f&&(a._f=b._f),"undefined"!=typeof b._l&&(a._l=b._l),"undefined"!=typeof b._strict&&(a._strict=b._strict),"undefined"!=typeof b._tzm&&(a._tzm=b._tzm),"undefined"!=typeof b._isUTC&&(a._isUTC=b._isUTC),"undefined"!=typeof b._offset&&(a._offset=b._offset),"undefined"!=typeof b._pf&&(a._pf=j(b)),"undefined"!=typeof b._locale&&(a._locale=b._locale),Fc.length>0)for(c in Fc)d=Fc[c],e=b[d],"undefined"!=typeof e&&(a[d]=e);return a}function n(b){m(this,b),this._d=new Date(+b._d),Gc===!1&&(Gc=!0,a.updateOffset(this),Gc=!1)}function o(a){return a instanceof n||null!=a&&null!=a._isAMomentObject}function p(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=b>=0?Math.floor(b):Math.ceil(b)),c}function q(a,b,c){var d,e=Math.min(a.length,b.length),f=Math.abs(a.length-b.length),g=0;for(d=0;e>d;d++)(c&&a[d]!==b[d]||!c&&p(a[d])!==p(b[d]))&&g++;return g+f}function r(){}function s(a){return a?a.toLowerCase().replace("_","-"):a}function t(a){for(var b,c,d,e,f=0;f<a.length;){for(e=s(a[f]).split("-"),b=e.length,c=s(a[f+1]),c=c?c.split("-"):null;b>0;){if(d=u(e.slice(0,b).join("-")))return d;if(c&&c.length>=b&&q(e,c,!0)>=b-1)break;b--}f++}return null}function u(a){var b=null;if(!Hc[a]&&"undefined"!=typeof module&&module&&module.exports)try{b=Ec._abbr,require("./locale/"+a),v(b)}catch(c){}return Hc[a]}function v(a,b){var c;return a&&(c="undefined"==typeof b?x(a):w(a,b),c&&(Ec=c)),Ec._abbr}function w(a,b){return null!==b?(b.abbr=a,Hc[a]||(Hc[a]=new r),Hc[a].set(b),v(a),Hc[a]):(delete Hc[a],null)}function x(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return Ec;if(!c(a)){if(b=u(a))return b;a=[a]}return t(a)}function y(a,b){var c=a.toLowerCase();Ic[c]=Ic[c+"s"]=Ic[b]=a}function z(a){return"string"==typeof a?Ic[a]||Ic[a.toLowerCase()]:void 0}function A(a){var b,c,d={};for(c in a)f(a,c)&&(b=z(c),b&&(d[b]=a[c]));return d}function B(b,c){return function(d){return null!=d?(D(this,b,d),a.updateOffset(this,c),this):C(this,b)}}function C(a,b){return a._d["get"+(a._isUTC?"UTC":"")+b]()}function D(a,b,c){return a._d["set"+(a._isUTC?"UTC":"")+b](c)}function E(a,b){var c;if("object"==typeof a)for(c in a)this.set(c,a[c]);else if(a=z(a),"function"==typeof this[a])return this[a](b);return this}function F(a,b,c){for(var d=""+Math.abs(a),e=a>=0;d.length<b;)d="0"+d;return(e?c?"+":"":"-")+d}function G(a,b,c,d){var e=d;"string"==typeof d&&(e=function(){return this[d]()}),a&&(Mc[a]=e),b&&(Mc[b[0]]=function(){return F(e.apply(this,arguments),b[1],b[2])}),c&&(Mc[c]=function(){return this.localeData().ordinal(e.apply(this,arguments),a)})}function H(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function I(a){var b,c,d=a.match(Jc);for(b=0,c=d.length;c>b;b++)Mc[d[b]]?d[b]=Mc[d[b]]:d[b]=H(d[b]);return function(e){var f="";for(b=0;c>b;b++)f+=d[b]instanceof Function?d[b].call(e,a):d[b];return f}}function J(a,b){return a.isValid()?(b=K(b,a.localeData()),Lc[b]||(Lc[b]=I(b)),Lc[b](a)):a.localeData().invalidDate()}function K(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(Kc.lastIndex=0;d>=0&&Kc.test(a);)a=a.replace(Kc,c),Kc.lastIndex=0,d-=1;return a}function L(a,b,c){_c[a]="function"==typeof b?b:function(a){return a&&c?c:b}}function M(a,b){return f(_c,a)?_c[a](b._strict,b._locale):new RegExp(N(a))}function N(a){return a.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e}).replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function O(a,b){var c,d=b;for("string"==typeof a&&(a=[a]),"number"==typeof b&&(d=function(a,c){c[b]=p(a)}),c=0;c<a.length;c++)ad[a[c]]=d}function P(a,b){O(a,function(a,c,d,e){d._w=d._w||{},b(a,d._w,d,e)})}function Q(a,b,c){null!=b&&f(ad,a)&&ad[a](b,c._a,c,a)}function R(a,b){return new Date(Date.UTC(a,b+1,0)).getUTCDate()}function S(a){return this._months[a.month()]}function T(a){return this._monthsShort[a.month()]}function U(a,b,c){var d,e,f;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),d=0;12>d;d++){if(e=h([2e3,d]),c&&!this._longMonthsParse[d]&&(this._longMonthsParse[d]=new RegExp("^"+this.months(e,"").replace(".","")+"$","i"),this._shortMonthsParse[d]=new RegExp("^"+this.monthsShort(e,"").replace(".","")+"$","i")),c||this._monthsParse[d]||(f="^"+this.months(e,"")+"|^"+this.monthsShort(e,""),this._monthsParse[d]=new RegExp(f.replace(".",""),"i")),c&&"MMMM"===b&&this._longMonthsParse[d].test(a))return d;if(c&&"MMM"===b&&this._shortMonthsParse[d].test(a))return d;if(!c&&this._monthsParse[d].test(a))return d}}function V(a,b){var c;return"string"==typeof b&&(b=a.localeData().monthsParse(b),"number"!=typeof b)?a:(c=Math.min(a.date(),R(a.year(),b)),a._d["set"+(a._isUTC?"UTC":"")+"Month"](b,c),a)}function W(b){return null!=b?(V(this,b),a.updateOffset(this,!0),this):C(this,"Month")}function X(){return R(this.year(),this.month())}function Y(a){var b,c=a._a;return c&&-2===j(a).overflow&&(b=c[cd]<0||c[cd]>11?cd:c[dd]<1||c[dd]>R(c[bd],c[cd])?dd:c[ed]<0||c[ed]>24||24===c[ed]&&(0!==c[fd]||0!==c[gd]||0!==c[hd])?ed:c[fd]<0||c[fd]>59?fd:c[gd]<0||c[gd]>59?gd:c[hd]<0||c[hd]>999?hd:-1,j(a)._overflowDayOfYear&&(bd>b||b>dd)&&(b=dd),j(a).overflow=b),a}function Z(b){a.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+b)}function $(a,b){var c=!0,d=a+"\n"+(new Error).stack;return g(function(){return c&&(Z(d),c=!1),b.apply(this,arguments)},b)}function _(a,b){kd[a]||(Z(b),kd[a]=!0)}function aa(a){var b,c,d=a._i,e=ld.exec(d);if(e){for(j(a).iso=!0,b=0,c=md.length;c>b;b++)if(md[b][1].exec(d)){a._f=md[b][0]+(e[6]||" ");break}for(b=0,c=nd.length;c>b;b++)if(nd[b][1].exec(d)){a._f+=nd[b][0];break}d.match(Yc)&&(a._f+="Z"),ta(a)}else a._isValid=!1}function ba(b){var c=od.exec(b._i);return null!==c?void(b._d=new Date(+c[1])):(aa(b),void(b._isValid===!1&&(delete b._isValid,a.createFromInputFallback(b))))}function ca(a,b,c,d,e,f,g){var h=new Date(a,b,c,d,e,f,g);return 1970>a&&h.setFullYear(a),h}function da(a){var b=new Date(Date.UTC.apply(null,arguments));return 1970>a&&b.setUTCFullYear(a),b}function ea(a){return fa(a)?366:365}function fa(a){return a%4===0&&a%100!==0||a%400===0}function ga(){return fa(this.year())}function ha(a,b,c){var d,e=c-b,f=c-a.day();return f>e&&(f-=7),e-7>f&&(f+=7),d=Aa(a).add(f,"d"),{week:Math.ceil(d.dayOfYear()/7),year:d.year()}}function ia(a){return ha(a,this._week.dow,this._week.doy).week}function ja(){return this._week.dow}function ka(){return this._week.doy}function la(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),"d")}function ma(a){var b=ha(this,1,4).week;return null==a?b:this.add(7*(a-b),"d")}function na(a,b,c,d,e){var f,g,h=da(a,0,1).getUTCDay();return h=0===h?7:h,c=null!=c?c:e,f=e-h+(h>d?7:0)-(e>h?7:0),g=7*(b-1)+(c-e)+f+1,{year:g>0?a:a-1,dayOfYear:g>0?g:ea(a-1)+g}}function oa(a){var b=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==a?b:this.add(a-b,"d")}function pa(a,b,c){return null!=a?a:null!=b?b:c}function qa(a){var b=new Date;return a._useUTC?[b.getUTCFullYear(),b.getUTCMonth(),b.getUTCDate()]:[b.getFullYear(),b.getMonth(),b.getDate()]}function ra(a){var b,c,d,e,f=[];if(!a._d){for(d=qa(a),a._w&&null==a._a[dd]&&null==a._a[cd]&&sa(a),a._dayOfYear&&(e=pa(a._a[bd],d[bd]),a._dayOfYear>ea(e)&&(j(a)._overflowDayOfYear=!0),c=da(e,0,a._dayOfYear),a._a[cd]=c.getUTCMonth(),a._a[dd]=c.getUTCDate()),b=0;3>b&&null==a._a[b];++b)a._a[b]=f[b]=d[b];for(;7>b;b++)a._a[b]=f[b]=null==a._a[b]?2===b?1:0:a._a[b];24===a._a[ed]&&0===a._a[fd]&&0===a._a[gd]&&0===a._a[hd]&&(a._nextDay=!0,a._a[ed]=0),a._d=(a._useUTC?da:ca).apply(null,f),null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()-a._tzm),a._nextDay&&(a._a[ed]=24)}}function sa(a){var b,c,d,e,f,g,h;b=a._w,null!=b.GG||null!=b.W||null!=b.E?(f=1,g=4,c=pa(b.GG,a._a[bd],ha(Aa(),1,4).year),d=pa(b.W,1),e=pa(b.E,1)):(f=a._locale._week.dow,g=a._locale._week.doy,c=pa(b.gg,a._a[bd],ha(Aa(),f,g).year),d=pa(b.w,1),null!=b.d?(e=b.d,f>e&&++d):e=null!=b.e?b.e+f:f),h=na(c,d,e,g,f),a._a[bd]=h.year,a._dayOfYear=h.dayOfYear}function ta(b){if(b._f===a.ISO_8601)return void aa(b);b._a=[],j(b).empty=!0;var c,d,e,f,g,h=""+b._i,i=h.length,k=0;for(e=K(b._f,b._locale).match(Jc)||[],c=0;c<e.length;c++)f=e[c],d=(h.match(M(f,b))||[])[0],d&&(g=h.substr(0,h.indexOf(d)),g.length>0&&j(b).unusedInput.push(g),h=h.slice(h.indexOf(d)+d.length),k+=d.length),Mc[f]?(d?j(b).empty=!1:j(b).unusedTokens.push(f),Q(f,d,b)):b._strict&&!d&&j(b).unusedTokens.push(f);j(b).charsLeftOver=i-k,h.length>0&&j(b).unusedInput.push(h),j(b).bigHour===!0&&b._a[ed]<=12&&b._a[ed]>0&&(j(b).bigHour=void 0),b._a[ed]=ua(b._locale,b._a[ed],b._meridiem),ra(b),Y(b)}function ua(a,b,c){var d;return null==c?b:null!=a.meridiemHour?a.meridiemHour(b,c):null!=a.isPM?(d=a.isPM(c),d&&12>b&&(b+=12),d||12!==b||(b=0),b):b}function va(a){var b,c,d,e,f;if(0===a._f.length)return j(a).invalidFormat=!0,void(a._d=new Date(0/0));for(e=0;e<a._f.length;e++)f=0,b=m({},a),null!=a._useUTC&&(b._useUTC=a._useUTC),b._f=a._f[e],ta(b),k(b)&&(f+=j(b).charsLeftOver,f+=10*j(b).unusedTokens.length,j(b).score=f,(null==d||d>f)&&(d=f,c=b));g(a,c||b)}function wa(a){if(!a._d){var b=A(a._i);a._a=[b.year,b.month,b.day||b.date,b.hour,b.minute,b.second,b.millisecond],ra(a)}}function xa(a){var b,e=a._i,f=a._f;return a._locale=a._locale||x(a._l),null===e||void 0===f&&""===e?l({nullInput:!0}):("string"==typeof e&&(a._i=e=a._locale.preparse(e)),o(e)?new n(Y(e)):(c(f)?va(a):f?ta(a):d(e)?a._d=e:ya(a),b=new n(Y(a)),b._nextDay&&(b.add(1,"d"),b._nextDay=void 0),b))}function ya(b){var f=b._i;void 0===f?b._d=new Date:d(f)?b._d=new Date(+f):"string"==typeof f?ba(b):c(f)?(b._a=e(f.slice(0),function(a){return parseInt(a,10)}),ra(b)):"object"==typeof f?wa(b):"number"==typeof f?b._d=new Date(f):a.createFromInputFallback(b)}function za(a,b,c,d,e){var f={};return"boolean"==typeof c&&(d=c,c=void 0),f._isAMomentObject=!0,f._useUTC=f._isUTC=e,f._l=c,f._i=a,f._f=b,f._strict=d,xa(f)}function Aa(a,b,c,d){return za(a,b,c,d,!1)}function Ba(a,b){var d,e;if(1===b.length&&c(b[0])&&(b=b[0]),!b.length)return Aa();for(d=b[0],e=1;e<b.length;++e)b[e][a](d)&&(d=b[e]);return d}function Ca(){var a=[].slice.call(arguments,0);return Ba("isBefore",a)}function Da(){var a=[].slice.call(arguments,0);return Ba("isAfter",a)}function Ea(a){var b=A(a),c=b.year||0,d=b.quarter||0,e=b.month||0,f=b.week||0,g=b.day||0,h=b.hour||0,i=b.minute||0,j=b.second||0,k=b.millisecond||0;this._milliseconds=+k+1e3*j+6e4*i+36e5*h,this._days=+g+7*f,this._months=+e+3*d+12*c,this._data={},this._locale=x(),this._bubble()}function Fa(a){return a instanceof Ea}function Ga(a,b){G(a,0,0,function(){var a=this.utcOffset(),c="+";return 0>a&&(a=-a,c="-"),c+F(~~(a/60),2)+b+F(~~a%60,2)})}function Ha(a){var b=(a||"").match(Yc)||[],c=b[b.length-1]||[],d=(c+"").match(td)||["-",0,0],e=+(60*d[1])+p(d[2]);return"+"===d[0]?e:-e}function Ia(b,c){var e,f;return c._isUTC?(e=c.clone(),f=(o(b)||d(b)?+b:+Aa(b))-+e,e._d.setTime(+e._d+f),a.updateOffset(e,!1),e):Aa(b).local();return c._isUTC?Aa(b).zone(c._offset||0):Aa(b).local()}function Ja(a){return 15*-Math.round(a._d.getTimezoneOffset()/15)}function Ka(b,c){var d,e=this._offset||0;return null!=b?("string"==typeof b&&(b=Ha(b)),Math.abs(b)<16&&(b=60*b),!this._isUTC&&c&&(d=Ja(this)),this._offset=b,this._isUTC=!0,null!=d&&this.add(d,"m"),e!==b&&(!c||this._changeInProgress?$a(this,Va(b-e,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,a.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?e:Ja(this)}function La(a,b){return null!=a?("string"!=typeof a&&(a=-a),this.utcOffset(a,b),this):-this.utcOffset()}function Ma(a){return this.utcOffset(0,a)}function Na(a){return this._isUTC&&(this.utcOffset(0,a),this._isUTC=!1,a&&this.subtract(Ja(this),"m")),this}function Oa(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Ha(this._i)),this}function Pa(a){return a=a?Aa(a).utcOffset():0,(this.utcOffset()-a)%60===0}function Qa(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Ra(){if(this._a){var a=this._isUTC?h(this._a):Aa(this._a);return this.isValid()&&q(this._a,a.toArray())>0}return!1}function Sa(){return!this._isUTC}function Ta(){return this._isUTC}function Ua(){return this._isUTC&&0===this._offset}function Va(a,b){var c,d,e,g=a,h=null;return Fa(a)?g={ms:a._milliseconds,d:a._days,M:a._months}:"number"==typeof a?(g={},b?g[b]=a:g.milliseconds=a):(h=ud.exec(a))?(c="-"===h[1]?-1:1,g={y:0,d:p(h[dd])*c,h:p(h[ed])*c,m:p(h[fd])*c,s:p(h[gd])*c,ms:p(h[hd])*c}):(h=vd.exec(a))?(c="-"===h[1]?-1:1,g={y:Wa(h[2],c),M:Wa(h[3],c),d:Wa(h[4],c),h:Wa(h[5],c),m:Wa(h[6],c),s:Wa(h[7],c),w:Wa(h[8],c)}):null==g?g={}:"object"==typeof g&&("from"in g||"to"in g)&&(e=Ya(Aa(g.from),Aa(g.to)),g={},g.ms=e.milliseconds,g.M=e.months),d=new Ea(g),Fa(a)&&f(a,"_locale")&&(d._locale=a._locale),d}function Wa(a,b){var c=a&&parseFloat(a.replace(",","."));return(isNaN(c)?0:c)*b}function Xa(a,b){var c={milliseconds:0,months:0};return c.months=b.month()-a.month()+12*(b.year()-a.year()),a.clone().add(c.months,"M").isAfter(b)&&--c.months,c.milliseconds=+b-+a.clone().add(c.months,"M"),c}function Ya(a,b){var c;return b=Ia(b,a),a.isBefore(b)?c=Xa(a,b):(c=Xa(b,a),c.milliseconds=-c.milliseconds,c.months=-c.months),c}function Za(a,b){return function(c,d){var e,f;return null===d||isNaN(+d)||(_(b,"moment()."+b+"(period, number) is deprecated. Please use moment()."+b+"(number, period)."),f=c,c=d,d=f),c="string"==typeof c?+c:c,e=Va(c,d),$a(this,e,a),this}}function $a(b,c,d,e){var f=c._milliseconds,g=c._days,h=c._months;e=null==e?!0:e,f&&b._d.setTime(+b._d+f*d),g&&D(b,"Date",C(b,"Date")+g*d),h&&V(b,C(b,"Month")+h*d),e&&a.updateOffset(b,g||h)}function _a(a){var b=a||Aa(),c=Ia(b,this).startOf("day"),d=this.diff(c,"days",!0),e=-6>d?"sameElse":-1>d?"lastWeek":0>d?"lastDay":1>d?"sameDay":2>d?"nextDay":7>d?"nextWeek":"sameElse";return this.format(this.localeData().calendar(e,this,Aa(b)))}function ab(){return new n(this)}function bb(a,b){var c;return b=z("undefined"!=typeof b?b:"millisecond"),"millisecond"===b?(a=o(a)?a:Aa(a),+this>+a):(c=o(a)?+a:+Aa(a),c<+this.clone().startOf(b))}function cb(a,b){var c;return b=z("undefined"!=typeof b?b:"millisecond"),"millisecond"===b?(a=o(a)?a:Aa(a),+a>+this):(c=o(a)?+a:+Aa(a),+this.clone().endOf(b)<c)}function db(a,b,c){return this.isAfter(a,c)&&this.isBefore(b,c)}function eb(a,b){var c;return b=z(b||"millisecond"),"millisecond"===b?(a=o(a)?a:Aa(a),+this===+a):(c=+Aa(a),+this.clone().startOf(b)<=c&&c<=+this.clone().endOf(b))}function fb(a){return 0>a?Math.ceil(a):Math.floor(a)}function gb(a,b,c){var d,e,f=Ia(a,this),g=6e4*(f.utcOffset()-this.utcOffset());return b=z(b),"year"===b||"month"===b||"quarter"===b?(e=hb(this,f),"quarter"===b?e/=3:"year"===b&&(e/=12)):(d=this-f,e="second"===b?d/1e3:"minute"===b?d/6e4:"hour"===b?d/36e5:"day"===b?(d-g)/864e5:"week"===b?(d-g)/6048e5:d),c?e:fb(e)}function hb(a,b){var c,d,e=12*(b.year()-a.year())+(b.month()-a.month()),f=a.clone().add(e,"months");return 0>b-f?(c=a.clone().add(e-1,"months"),d=(b-f)/(f-c)):(c=a.clone().add(e+1,"months"),d=(b-f)/(c-f)),-(e+d)}function ib(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function jb(){var a=this.clone().utc();return 0<a.year()&&a.year()<=9999?"function"==typeof Date.prototype.toISOString?this.toDate().toISOString():J(a,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):J(a,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")}function kb(b){var c=J(this,b||a.defaultFormat);return this.localeData().postformat(c)}function lb(a,b){return this.isValid()?Va({to:this,from:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function mb(a){return this.from(Aa(),a)}function nb(a,b){return this.isValid()?Va({from:this,to:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function ob(a){return this.to(Aa(),a)}function pb(a){var b;return void 0===a?this._locale._abbr:(b=x(a),null!=b&&(this._locale=b),this)}function qb(){return this._locale}function rb(a){switch(a=z(a)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===a&&this.weekday(0),"isoWeek"===a&&this.isoWeekday(1),"quarter"===a&&this.month(3*Math.floor(this.month()/3)),this}function sb(a){return a=z(a),void 0===a||"millisecond"===a?this:this.startOf(a).add(1,"isoWeek"===a?"week":a).subtract(1,"ms")}function tb(){return+this._d-6e4*(this._offset||0)}function ub(){return Math.floor(+this/1e3)}function vb(){return this._offset?new Date(+this):this._d}function wb(){var a=this;return[a.year(),a.month(),a.date(),a.hour(),a.minute(),a.second(),a.millisecond()]}function xb(){return k(this)}function yb(){return g({},j(this))}function zb(){return j(this).overflow}function Ab(a,b){G(0,[a,a.length],0,b)}function Bb(a,b,c){return ha(Aa([a,11,31+b-c]),b,c).week}function Cb(a){var b=ha(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==a?b:this.add(a-b,"y")}function Db(a){var b=ha(this,1,4).year;return null==a?b:this.add(a-b,"y")}function Eb(){return Bb(this.year(),1,4)}function Fb(){var a=this.localeData()._week;return Bb(this.year(),a.dow,a.doy)}function Gb(a){return null==a?Math.ceil((this.month()+1)/3):this.month(3*(a-1)+this.month()%3)}function Hb(a,b){if("string"==typeof a)if(isNaN(a)){if(a=b.weekdaysParse(a),"number"!=typeof a)return null}else a=parseInt(a,10);return a}function Ib(a){return this._weekdays[a.day()]}function Jb(a){return this._weekdaysShort[a.day()]}function Kb(a){return this._weekdaysMin[a.day()]}function Lb(a){var b,c,d;for(this._weekdaysParse||(this._weekdaysParse=[]),b=0;7>b;b++)if(this._weekdaysParse[b]||(c=Aa([2e3,1]).day(b),d="^"+this.weekdays(c,"")+"|^"+this.weekdaysShort(c,"")+"|^"+this.weekdaysMin(c,""),this._weekdaysParse[b]=new RegExp(d.replace(".",""),"i")),this._weekdaysParse[b].test(a))return b}function Mb(a){var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=Hb(a,this.localeData()),this.add(a-b,"d")):b}function Nb(a){var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,"d")}function Ob(a){return null==a?this.day()||7:this.day(this.day()%7?a:a-7)}function Pb(a,b){G(a,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),b)})}function Qb(a,b){return b._meridiemParse}function Rb(a){return"p"===(a+"").toLowerCase().charAt(0)}function Sb(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"}function Tb(a){G(0,[a,3],0,"millisecond")}function Ub(){return this._isUTC?"UTC":""}function Vb(){return this._isUTC?"Coordinated Universal Time":""}function Wb(a){return Aa(1e3*a)}function Xb(){return Aa.apply(null,arguments).parseZone()}function Yb(a,b,c){var d=this._calendar[a];return"function"==typeof d?d.call(b,c):d}function Zb(a){var b=this._longDateFormat[a];return!b&&this._longDateFormat[a.toUpperCase()]&&(b=this._longDateFormat[a.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a]=b),b}function $b(){return this._invalidDate}function _b(a){return this._ordinal.replace("%d",a)}function ac(a){return a}function bc(a,b,c,d){var e=this._relativeTime[c];return"function"==typeof e?e(a,b,c,d):e.replace(/%d/i,a)}function cc(a,b){var c=this._relativeTime[a>0?"future":"past"];return"function"==typeof c?c(b):c.replace(/%s/i,b)}function dc(a){var b,c;for(c in a)b=a[c],"function"==typeof b?this[c]=b:this["_"+c]=b;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function ec(a,b,c,d){var e=x(),f=h().set(d,b);return e[c](f,a)}function fc(a,b,c,d,e){if("number"==typeof a&&(b=a,a=void 0),a=a||"",null!=b)return ec(a,b,c,e);var f,g=[];for(f=0;d>f;f++)g[f]=ec(a,f,c,e);return g}function gc(a,b){return fc(a,b,"months",12,"month")}function hc(a,b){return fc(a,b,"monthsShort",12,"month")}function ic(a,b){return fc(a,b,"weekdays",7,"day")}function jc(a,b){return fc(a,b,"weekdaysShort",7,"day")}function kc(a,b){return fc(a,b,"weekdaysMin",7,"day")}function lc(){var a=this._data;return this._milliseconds=Rd(this._milliseconds),this._days=Rd(this._days),this._months=Rd(this._months),a.milliseconds=Rd(a.milliseconds),a.seconds=Rd(a.seconds),a.minutes=Rd(a.minutes),a.hours=Rd(a.hours),a.months=Rd(a.months),a.years=Rd(a.years),this}function mc(a,b,c,d){var e=Va(b,c);return a._milliseconds+=d*e._milliseconds,a._days+=d*e._days,a._months+=d*e._months,a._bubble()}function nc(a,b){return mc(this,a,b,1)}function oc(a,b){return mc(this,a,b,-1)}function pc(){var a,b,c,d=this._milliseconds,e=this._days,f=this._months,g=this._data,h=0;return g.milliseconds=d%1e3,a=fb(d/1e3),g.seconds=a%60,b=fb(a/60),g.minutes=b%60,c=fb(b/60),g.hours=c%24,e+=fb(c/24),h=fb(qc(e)),e-=fb(rc(h)),f+=fb(e/30),e%=30,h+=fb(f/12),f%=12,g.days=e,g.months=f,g.years=h,this}function qc(a){return 400*a/146097}function rc(a){return 146097*a/400}function sc(a){var b,c,d=this._milliseconds;if(a=z(a),"month"===a||"year"===a)return b=this._days+d/864e5,c=this._months+12*qc(b),"month"===a?c:c/12;switch(b=this._days+Math.round(rc(this._months/12)),a){case"week":return b/7+d/6048e5;case"day":return b+d/864e5;case"hour":return 24*b+d/36e5;case"minute":return 1440*b+d/6e4;case"second":return 86400*b+d/1e3;case"millisecond":return Math.floor(864e5*b)+d;default:throw new Error("Unknown unit "+a)}}function tc(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*p(this._months/12)}function uc(a){return function(){return this.as(a)}}function vc(a){return a=z(a),this[a+"s"]()}function wc(a){return function(){return this._data[a]}}function xc(){return fb(this.days()/7)}function yc(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function zc(a,b,c){var d=Va(a).abs(),e=fe(d.as("s")),f=fe(d.as("m")),g=fe(d.as("h")),h=fe(d.as("d")),i=fe(d.as("M")),j=fe(d.as("y")),k=e<ge.s&&["s",e]||1===f&&["m"]||f<ge.m&&["mm",f]||1===g&&["h"]||g<ge.h&&["hh",g]||1===h&&["d"]||h<ge.d&&["dd",h]||1===i&&["M"]||i<ge.M&&["MM",i]||1===j&&["y"]||["yy",j];return k[2]=b,k[3]=+a>0,k[4]=c,yc.apply(null,k)}function Ac(a,b){return void 0===ge[a]?!1:void 0===b?ge[a]:(ge[a]=b,!0)}function Bc(a){var b=this.localeData(),c=zc(this,!a,b);return a&&(c=b.pastFuture(+this,c)),b.postformat(c)}function Cc(){var a=he(this.years()),b=he(this.months()),c=he(this.days()),d=he(this.hours()),e=he(this.minutes()),f=he(this.seconds()+this.milliseconds()/1e3),g=this.asSeconds();return g?(0>g?"-":"")+"P"+(a?a+"Y":"")+(b?b+"M":"")+(c?c+"D":"")+(d||e||f?"T":"")+(d?d+"H":"")+(e?e+"M":"")+(f?f+"S":""):"P0D"}var Dc,Ec,Fc=a.momentProperties=[],Gc=!1,Hc={},Ic={},Jc=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g,Kc=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Lc={},Mc={},Nc=/\d/,Oc=/\d\d/,Pc=/\d{3}/,Qc=/\d{4}/,Rc=/[+-]?\d{6}/,Sc=/\d\d?/,Tc=/\d{1,3}/,Uc=/\d{1,4}/,Vc=/[+-]?\d{1,6}/,Wc=/\d+/,Xc=/[+-]?\d+/,Yc=/Z|[+-]\d\d:?\d\d/gi,Zc=/[+-]?\d+(\.\d{1,3})?/,$c=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,_c={},ad={},bd=0,cd=1,dd=2,ed=3,fd=4,gd=5,hd=6;G("M",["MM",2],"Mo",function(){return this.month()+1}),G("MMM",0,0,function(a){return this.localeData().monthsShort(this,a)}),G("MMMM",0,0,function(a){return this.localeData().months(this,a)}),y("month","M"),L("M",Sc),L("MM",Sc,Oc),L("MMM",$c),L("MMMM",$c),O(["M","MM"],function(a,b){b[cd]=p(a)-1}),O(["MMM","MMMM"],function(a,b,c,d){var e=c._locale.monthsParse(a,d,c._strict);null!=e?b[cd]=e:j(c).invalidMonth=a});var id="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),jd="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),kd={};a.suppressDeprecationWarnings=!1;var ld=/^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,md=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]],nd=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],od=/^\/?Date\((\-?\d+)/i;a.createFromInputFallback=$("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(a){a._d=new Date(a._i+(a._useUTC?" UTC":""))}),G(0,["YY",2],0,function(){return this.year()%100}),G(0,["YYYY",4],0,"year"),G(0,["YYYYY",5],0,"year"),G(0,["YYYYYY",6,!0],0,"year"),y("year","y"),L("Y",Xc),L("YY",Sc,Oc),L("YYYY",Uc,Qc),L("YYYYY",Vc,Rc),L("YYYYYY",Vc,Rc),O(["YYYY","YYYYY","YYYYYY"],bd),O("YY",function(b,c){c[bd]=a.parseTwoDigitYear(b)}),a.parseTwoDigitYear=function(a){return p(a)+(p(a)>68?1900:2e3)};var pd=B("FullYear",!1);G("w",["ww",2],"wo","week"),G("W",["WW",2],"Wo","isoWeek"),y("week","w"),y("isoWeek","W"),L("w",Sc),L("ww",Sc,Oc),L("W",Sc),L("WW",Sc,Oc),P(["w","ww","W","WW"],function(a,b,c,d){b[d.substr(0,1)]=p(a)});var qd={dow:0,doy:6};G("DDD",["DDDD",3],"DDDo","dayOfYear"),y("dayOfYear","DDD"),L("DDD",Tc),L("DDDD",Pc),O(["DDD","DDDD"],function(a,b,c){c._dayOfYear=p(a)}),a.ISO_8601=function(){};var rd=$("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(){var a=Aa.apply(null,arguments);return this>a?this:a}),sd=$("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(){var a=Aa.apply(null,arguments);return a>this?this:a});Ga("Z",":"),Ga("ZZ",""),L("Z",Yc),L("ZZ",Yc),O(["Z","ZZ"],function(a,b,c){c._useUTC=!0,c._tzm=Ha(a)});var td=/([\+\-]|\d\d)/gi;a.updateOffset=function(){};var ud=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,vd=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/;Va.fn=Ea.prototype;var wd=Za(1,"add"),xd=Za(-1,"subtract");a.defaultFormat="YYYY-MM-DDTHH:mm:ssZ";var yd=$("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(a){return void 0===a?this.localeData():this.locale(a)});G(0,["gg",2],0,function(){return this.weekYear()%100}),G(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Ab("gggg","weekYear"),Ab("ggggg","weekYear"),Ab("GGGG","isoWeekYear"),Ab("GGGGG","isoWeekYear"),y("weekYear","gg"),y("isoWeekYear","GG"),L("G",Xc),L("g",Xc),L("GG",Sc,Oc),L("gg",Sc,Oc),L("GGGG",Uc,Qc),L("gggg",Uc,Qc),L("GGGGG",Vc,Rc),L("ggggg",Vc,Rc),P(["gggg","ggggg","GGGG","GGGGG"],function(a,b,c,d){b[d.substr(0,2)]=p(a)}),P(["gg","GG"],function(b,c,d,e){c[e]=a.parseTwoDigitYear(b)}),G("Q",0,0,"quarter"),y("quarter","Q"),L("Q",Nc),O("Q",function(a,b){b[cd]=3*(p(a)-1)}),G("D",["DD",2],"Do","date"),y("date","D"),L("D",Sc),L("DD",Sc,Oc),L("Do",function(a,b){return a?b._ordinalParse:b._ordinalParseLenient}),O(["D","DD"],dd),O("Do",function(a,b){b[dd]=p(a.match(Sc)[0],10)});var zd=B("Date",!0);G("d",0,"do","day"),G("dd",0,0,function(a){return this.localeData().weekdaysMin(this,a)}),G("ddd",0,0,function(a){return this.localeData().weekdaysShort(this,a)}),G("dddd",0,0,function(a){return this.localeData().weekdays(this,a)}),G("e",0,0,"weekday"),G("E",0,0,"isoWeekday"),y("day","d"),y("weekday","e"),y("isoWeekday","E"),L("d",Sc),L("e",Sc),L("E",Sc),L("dd",$c),L("ddd",$c),L("dddd",$c),P(["dd","ddd","dddd"],function(a,b,c){var d=c._locale.weekdaysParse(a);null!=d?b.d=d:j(c).invalidWeekday=a}),P(["d","e","E"],function(a,b,c,d){b[d]=p(a)});var Ad="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Bd="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Cd="Su_Mo_Tu_We_Th_Fr_Sa".split("_");G("H",["HH",2],0,"hour"),G("h",["hh",2],0,function(){return this.hours()%12||12}),Pb("a",!0),Pb("A",!1),y("hour","h"),L("a",Qb),L("A",Qb),L("H",Sc),L("h",Sc),L("HH",Sc,Oc),L("hh",Sc,Oc),O(["H","HH"],ed),O(["a","A"],function(a,b,c){c._isPm=c._locale.isPM(a),c._meridiem=a}),O(["h","hh"],function(a,b,c){b[ed]=p(a),j(c).bigHour=!0});var Dd=/[ap]\.?m?\.?/i,Ed=B("Hours",!0);G("m",["mm",2],0,"minute"),y("minute","m"),L("m",Sc),L("mm",Sc,Oc),O(["m","mm"],fd);var Fd=B("Minutes",!1);G("s",["ss",2],0,"second"),y("second","s"),L("s",Sc),L("ss",Sc,Oc),O(["s","ss"],gd);var Gd=B("Seconds",!1);G("S",0,0,function(){return~~(this.millisecond()/100)}),G(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),Tb("SSS"),Tb("SSSS"),y("millisecond","ms"),L("S",Tc,Nc),L("SS",Tc,Oc),L("SSS",Tc,Pc),L("SSSS",Wc),O(["S","SS","SSS","SSSS"],function(a,b){b[hd]=p(1e3*("0."+a))});var Hd=B("Milliseconds",!1);G("z",0,0,"zoneAbbr"),G("zz",0,0,"zoneName");var Id=n.prototype;Id.add=wd,Id.calendar=_a,Id.clone=ab,Id.diff=gb,Id.endOf=sb,Id.format=kb,Id.from=lb,Id.fromNow=mb,Id.to=nb,Id.toNow=ob,Id.get=E,Id.invalidAt=zb,Id.isAfter=bb,Id.isBefore=cb,Id.isBetween=db,Id.isSame=eb,Id.isValid=xb,Id.lang=yd,Id.locale=pb,Id.localeData=qb,Id.max=sd,Id.min=rd,Id.parsingFlags=yb,Id.set=E,Id.startOf=rb,Id.subtract=xd,Id.toArray=wb,Id.toDate=vb,Id.toISOString=jb,Id.toJSON=jb,Id.toString=ib,Id.unix=ub,Id.valueOf=tb,Id.year=pd,Id.isLeapYear=ga,Id.weekYear=Cb,Id.isoWeekYear=Db,Id.quarter=Id.quarters=Gb,Id.month=W,Id.daysInMonth=X,Id.week=Id.weeks=la,Id.isoWeek=Id.isoWeeks=ma,Id.weeksInYear=Fb,Id.isoWeeksInYear=Eb,Id.date=zd,Id.day=Id.days=Mb,Id.weekday=Nb,Id.isoWeekday=Ob,Id.dayOfYear=oa,Id.hour=Id.hours=Ed,Id.minute=Id.minutes=Fd,Id.second=Id.seconds=Gd,Id.millisecond=Id.milliseconds=Hd,Id.utcOffset=Ka,Id.utc=Ma,Id.local=Na,Id.parseZone=Oa,Id.hasAlignedHourOffset=Pa,Id.isDST=Qa,Id.isDSTShifted=Ra,Id.isLocal=Sa,Id.isUtcOffset=Ta,Id.isUtc=Ua,Id.isUTC=Ua,Id.zoneAbbr=Ub,Id.zoneName=Vb,Id.dates=$("dates accessor is deprecated. Use date instead.",zd),Id.months=$("months accessor is deprecated. Use month instead",W),Id.years=$("years accessor is deprecated. Use year instead",pd),Id.zone=$("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",La);var Jd=Id,Kd={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},Ld={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},Md="Invalid date",Nd="%d",Od=/\d{1,2}/,Pd={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour", -hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},Qd=r.prototype;Qd._calendar=Kd,Qd.calendar=Yb,Qd._longDateFormat=Ld,Qd.longDateFormat=Zb,Qd._invalidDate=Md,Qd.invalidDate=$b,Qd._ordinal=Nd,Qd.ordinal=_b,Qd._ordinalParse=Od,Qd.preparse=ac,Qd.postformat=ac,Qd._relativeTime=Pd,Qd.relativeTime=bc,Qd.pastFuture=cc,Qd.set=dc,Qd.months=S,Qd._months=id,Qd.monthsShort=T,Qd._monthsShort=jd,Qd.monthsParse=U,Qd.week=ia,Qd._week=qd,Qd.firstDayOfYear=ka,Qd.firstDayOfWeek=ja,Qd.weekdays=Ib,Qd._weekdays=Ad,Qd.weekdaysMin=Kb,Qd._weekdaysMin=Cd,Qd.weekdaysShort=Jb,Qd._weekdaysShort=Bd,Qd.weekdaysParse=Lb,Qd.isPM=Rb,Qd._meridiemParse=Dd,Qd.meridiem=Sb,v("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===p(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),a.lang=$("moment.lang is deprecated. Use moment.locale instead.",v),a.langData=$("moment.langData is deprecated. Use moment.localeData instead.",x);var Rd=Math.abs,Sd=uc("ms"),Td=uc("s"),Ud=uc("m"),Vd=uc("h"),Wd=uc("d"),Xd=uc("w"),Yd=uc("M"),Zd=uc("y"),$d=wc("milliseconds"),_d=wc("seconds"),ae=wc("minutes"),be=wc("hours"),ce=wc("days"),de=wc("months"),ee=wc("years"),fe=Math.round,ge={s:45,m:45,h:22,d:26,M:11},he=Math.abs,ie=Ea.prototype;ie.abs=lc,ie.add=nc,ie.subtract=oc,ie.as=sc,ie.asMilliseconds=Sd,ie.asSeconds=Td,ie.asMinutes=Ud,ie.asHours=Vd,ie.asDays=Wd,ie.asWeeks=Xd,ie.asMonths=Yd,ie.asYears=Zd,ie.valueOf=tc,ie._bubble=pc,ie.get=vc,ie.milliseconds=$d,ie.seconds=_d,ie.minutes=ae,ie.hours=be,ie.days=ce,ie.weeks=xc,ie.months=de,ie.years=ee,ie.humanize=Bc,ie.toISOString=Cc,ie.toString=Cc,ie.toJSON=Cc,ie.locale=pb,ie.localeData=qb,ie.toIsoString=$("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Cc),ie.lang=yd,G("X",0,0,"unix"),G("x",0,0,"valueOf"),L("x",Xc),L("X",Zc),O("X",function(a,b,c){c._d=new Date(1e3*parseFloat(a,10))}),O("x",function(a,b,c){c._d=new Date(p(a))}),a.version="2.10.3",b(Aa),a.fn=Jd,a.min=Ca,a.max=Da,a.utc=h,a.unix=Wb,a.months=gc,a.isDate=d,a.locale=v,a.invalid=l,a.duration=Va,a.isMoment=o,a.weekdays=ic,a.parseZone=Xb,a.localeData=x,a.isDuration=Fa,a.monthsShort=hc,a.weekdaysMin=kc,a.defineLocale=w,a.weekdaysShort=jc,a.normalizeUnits=z,a.relativeTimeThreshold=Ac;var je=a;return je}); \ No newline at end of file diff --git a/assets/plugins/fastclick/fastclick.js b/assets/plugins/fastclick/fastclick.js deleted file mode 100644 index 3af4f9d6..00000000 --- a/assets/plugins/fastclick/fastclick.js +++ /dev/null @@ -1,841 +0,0 @@ -;(function () { - 'use strict'; - - /** - * @preserve FastClick: polyfill to remove click delays on browsers with touch UIs. - * - * @codingstandard ftlabs-jsv2 - * @copyright The Financial Times Limited [All Rights Reserved] - * @license MIT License (see LICENSE.txt) - */ - - /*jslint browser:true, node:true*/ - /*global define, Event, Node*/ - - - /** - * Instantiate fast-clicking listeners on the specified layer. - * - * @constructor - * @param {Element} layer The layer to listen on - * @param {Object} [options={}] The options to override the defaults - */ - function FastClick(layer, options) { - var oldOnClick; - - options = options || {}; - - /** - * Whether a click is currently being tracked. - * - * @type boolean - */ - this.trackingClick = false; - - - /** - * Timestamp for when click tracking started. - * - * @type number - */ - this.trackingClickStart = 0; - - - /** - * The element being tracked for a click. - * - * @type EventTarget - */ - this.targetElement = null; - - - /** - * X-coordinate of touch start event. - * - * @type number - */ - this.touchStartX = 0; - - - /** - * Y-coordinate of touch start event. - * - * @type number - */ - this.touchStartY = 0; - - - /** - * ID of the last touch, retrieved from Touch.identifier. - * - * @type number - */ - this.lastTouchIdentifier = 0; - - - /** - * Touchmove boundary, beyond which a click will be cancelled. - * - * @type number - */ - this.touchBoundary = options.touchBoundary || 10; - - - /** - * The FastClick layer. - * - * @type Element - */ - this.layer = layer; - - /** - * The minimum time between tap(touchstart and touchend) events - * - * @type number - */ - this.tapDelay = options.tapDelay || 200; - - /** - * The maximum time for a tap - * - * @type number - */ - this.tapTimeout = options.tapTimeout || 700; - - if (FastClick.notNeeded(layer)) { - return; - } - - // Some old versions of Android don't have Function.prototype.bind - function bind(method, context) { - return function() { return method.apply(context, arguments); }; - } - - - var methods = ['onMouse', 'onClick', 'onTouchStart', 'onTouchMove', 'onTouchEnd', 'onTouchCancel']; - var context = this; - for (var i = 0, l = methods.length; i < l; i++) { - context[methods[i]] = bind(context[methods[i]], context); - } - - // Set up event handlers as required - if (deviceIsAndroid) { - layer.addEventListener('mouseover', this.onMouse, true); - layer.addEventListener('mousedown', this.onMouse, true); - layer.addEventListener('mouseup', this.onMouse, true); - } - - layer.addEventListener('click', this.onClick, true); - layer.addEventListener('touchstart', this.onTouchStart, false); - layer.addEventListener('touchmove', this.onTouchMove, false); - layer.addEventListener('touchend', this.onTouchEnd, false); - layer.addEventListener('touchcancel', this.onTouchCancel, false); - - // Hack is required for browsers that don't support Event#stopImmediatePropagation (e.g. Android 2) - // which is how FastClick normally stops click events bubbling to callbacks registered on the FastClick - // layer when they are cancelled. - if (!Event.prototype.stopImmediatePropagation) { - layer.removeEventListener = function(type, callback, capture) { - var rmv = Node.prototype.removeEventListener; - if (type === 'click') { - rmv.call(layer, type, callback.hijacked || callback, capture); - } else { - rmv.call(layer, type, callback, capture); - } - }; - - layer.addEventListener = function(type, callback, capture) { - var adv = Node.prototype.addEventListener; - if (type === 'click') { - adv.call(layer, type, callback.hijacked || (callback.hijacked = function(event) { - if (!event.propagationStopped) { - callback(event); - } - }), capture); - } else { - adv.call(layer, type, callback, capture); - } - }; - } - - // If a handler is already declared in the element's onclick attribute, it will be fired before - // FastClick's onClick handler. Fix this by pulling out the user-defined handler function and - // adding it as listener. - if (typeof layer.onclick === 'function') { - - // Android browser on at least 3.2 requires a new reference to the function in layer.onclick - // - the old one won't work if passed to addEventListener directly. - oldOnClick = layer.onclick; - layer.addEventListener('click', function(event) { - oldOnClick(event); - }, false); - layer.onclick = null; - } - } - - /** - * Windows Phone 8.1 fakes user agent string to look like Android and iPhone. - * - * @type boolean - */ - var deviceIsWindowsPhone = navigator.userAgent.indexOf("Windows Phone") >= 0; - - /** - * Android requires exceptions. - * - * @type boolean - */ - var deviceIsAndroid = navigator.userAgent.indexOf('Android') > 0 && !deviceIsWindowsPhone; - - - /** - * iOS requires exceptions. - * - * @type boolean - */ - var deviceIsIOS = /iP(ad|hone|od)/.test(navigator.userAgent) && !deviceIsWindowsPhone; - - - /** - * iOS 4 requires an exception for select elements. - * - * @type boolean - */ - var deviceIsIOS4 = deviceIsIOS && (/OS 4_\d(_\d)?/).test(navigator.userAgent); - - - /** - * iOS 6.0-7.* requires the target element to be manually derived - * - * @type boolean - */ - var deviceIsIOSWithBadTarget = deviceIsIOS && (/OS [6-7]_\d/).test(navigator.userAgent); - - /** - * BlackBerry requires exceptions. - * - * @type boolean - */ - var deviceIsBlackBerry10 = navigator.userAgent.indexOf('BB10') > 0; - - /** - * Determine whether a given element requires a native click. - * - * @param {EventTarget|Element} target Target DOM element - * @returns {boolean} Returns true if the element needs a native click - */ - FastClick.prototype.needsClick = function(target) { - switch (target.nodeName.toLowerCase()) { - - // Don't send a synthetic click to disabled inputs (issue #62) - case 'button': - case 'select': - case 'textarea': - if (target.disabled) { - return true; - } - - break; - case 'input': - - // File inputs need real clicks on iOS 6 due to a browser bug (issue #68) - if ((deviceIsIOS && target.type === 'file') || target.disabled) { - return true; - } - - break; - case 'label': - case 'iframe': // iOS8 homescreen apps can prevent events bubbling into frames - case 'video': - return true; - } - - return (/\bneedsclick\b/).test(target.className); - }; - - - /** - * Determine whether a given element requires a call to focus to simulate click into element. - * - * @param {EventTarget|Element} target Target DOM element - * @returns {boolean} Returns true if the element requires a call to focus to simulate native click. - */ - FastClick.prototype.needsFocus = function(target) { - switch (target.nodeName.toLowerCase()) { - case 'textarea': - return true; - case 'select': - return !deviceIsAndroid; - case 'input': - switch (target.type) { - case 'button': - case 'checkbox': - case 'file': - case 'image': - case 'radio': - case 'submit': - return false; - } - - // No point in attempting to focus disabled inputs - return !target.disabled && !target.readOnly; - default: - return (/\bneedsfocus\b/).test(target.className); - } - }; - - - /** - * Send a click event to the specified element. - * - * @param {EventTarget|Element} targetElement - * @param {Event} event - */ - FastClick.prototype.sendClick = function(targetElement, event) { - var clickEvent, touch; - - // On some Android devices activeElement needs to be blurred otherwise the synthetic click will have no effect (#24) - if (document.activeElement && document.activeElement !== targetElement) { - document.activeElement.blur(); - } - - touch = event.changedTouches[0]; - - // Synthesise a click event, with an extra attribute so it can be tracked - clickEvent = document.createEvent('MouseEvents'); - clickEvent.initMouseEvent(this.determineEventType(targetElement), true, true, window, 1, touch.screenX, touch.screenY, touch.clientX, touch.clientY, false, false, false, false, 0, null); - clickEvent.forwardedTouchEvent = true; - targetElement.dispatchEvent(clickEvent); - }; - - FastClick.prototype.determineEventType = function(targetElement) { - - //Issue #159: Android Chrome Select Box does not open with a synthetic click event - if (deviceIsAndroid && targetElement.tagName.toLowerCase() === 'select') { - return 'mousedown'; - } - - return 'click'; - }; - - - /** - * @param {EventTarget|Element} targetElement - */ - FastClick.prototype.focus = function(targetElement) { - var length; - - // Issue #160: on iOS 7, some input elements (e.g. date datetime month) throw a vague TypeError on setSelectionRange. These elements don't have an integer value for the selectionStart and selectionEnd properties, but unfortunately that can't be used for detection because accessing the properties also throws a TypeError. Just check the type instead. Filed as Apple bug #15122724. - if (deviceIsIOS && targetElement.setSelectionRange && targetElement.type.indexOf('date') !== 0 && targetElement.type !== 'time' && targetElement.type !== 'month') { - length = targetElement.value.length; - targetElement.setSelectionRange(length, length); - } else { - targetElement.focus(); - } - }; - - - /** - * Check whether the given target element is a child of a scrollable layer and if so, set a flag on it. - * - * @param {EventTarget|Element} targetElement - */ - FastClick.prototype.updateScrollParent = function(targetElement) { - var scrollParent, parentElement; - - scrollParent = targetElement.fastClickScrollParent; - - // Attempt to discover whether the target element is contained within a scrollable layer. Re-check if the - // target element was moved to another parent. - if (!scrollParent || !scrollParent.contains(targetElement)) { - parentElement = targetElement; - do { - if (parentElement.scrollHeight > parentElement.offsetHeight) { - scrollParent = parentElement; - targetElement.fastClickScrollParent = parentElement; - break; - } - - parentElement = parentElement.parentElement; - } while (parentElement); - } - - // Always update the scroll top tracker if possible. - if (scrollParent) { - scrollParent.fastClickLastScrollTop = scrollParent.scrollTop; - } - }; - - - /** - * @param {EventTarget} targetElement - * @returns {Element|EventTarget} - */ - FastClick.prototype.getTargetElementFromEventTarget = function(eventTarget) { - - // On some older browsers (notably Safari on iOS 4.1 - see issue #56) the event target may be a text node. - if (eventTarget.nodeType === Node.TEXT_NODE) { - return eventTarget.parentNode; - } - - return eventTarget; - }; - - - /** - * On touch start, record the position and scroll offset. - * - * @param {Event} event - * @returns {boolean} - */ - FastClick.prototype.onTouchStart = function(event) { - var targetElement, touch, selection; - - // Ignore multiple touches, otherwise pinch-to-zoom is prevented if both fingers are on the FastClick element (issue #111). - if (event.targetTouches.length > 1) { - return true; - } - - targetElement = this.getTargetElementFromEventTarget(event.target); - touch = event.targetTouches[0]; - - if (deviceIsIOS) { - - // Only trusted events will deselect text on iOS (issue #49) - selection = window.getSelection(); - if (selection.rangeCount && !selection.isCollapsed) { - return true; - } - - if (!deviceIsIOS4) { - - // Weird things happen on iOS when an alert or confirm dialog is opened from a click event callback (issue #23): - // when the user next taps anywhere else on the page, new touchstart and touchend events are dispatched - // with the same identifier as the touch event that previously triggered the click that triggered the alert. - // Sadly, there is an issue on iOS 4 that causes some normal touch events to have the same identifier as an - // immediately preceeding touch event (issue #52), so this fix is unavailable on that platform. - // Issue 120: touch.identifier is 0 when Chrome dev tools 'Emulate touch events' is set with an iOS device UA string, - // which causes all touch events to be ignored. As this block only applies to iOS, and iOS identifiers are always long, - // random integers, it's safe to to continue if the identifier is 0 here. - if (touch.identifier && touch.identifier === this.lastTouchIdentifier) { - event.preventDefault(); - return false; - } - - this.lastTouchIdentifier = touch.identifier; - - // If the target element is a child of a scrollable layer (using -webkit-overflow-scrolling: touch) and: - // 1) the user does a fling scroll on the scrollable layer - // 2) the user stops the fling scroll with another tap - // then the event.target of the last 'touchend' event will be the element that was under the user's finger - // when the fling scroll was started, causing FastClick to send a click event to that layer - unless a check - // is made to ensure that a parent layer was not scrolled before sending a synthetic click (issue #42). - this.updateScrollParent(targetElement); - } - } - - this.trackingClick = true; - this.trackingClickStart = event.timeStamp; - this.targetElement = targetElement; - - this.touchStartX = touch.pageX; - this.touchStartY = touch.pageY; - - // Prevent phantom clicks on fast double-tap (issue #36) - if ((event.timeStamp - this.lastClickTime) < this.tapDelay) { - event.preventDefault(); - } - - return true; - }; - - - /** - * Based on a touchmove event object, check whether the touch has moved past a boundary since it started. - * - * @param {Event} event - * @returns {boolean} - */ - FastClick.prototype.touchHasMoved = function(event) { - var touch = event.changedTouches[0], boundary = this.touchBoundary; - - if (Math.abs(touch.pageX - this.touchStartX) > boundary || Math.abs(touch.pageY - this.touchStartY) > boundary) { - return true; - } - - return false; - }; - - - /** - * Update the last position. - * - * @param {Event} event - * @returns {boolean} - */ - FastClick.prototype.onTouchMove = function(event) { - if (!this.trackingClick) { - return true; - } - - // If the touch has moved, cancel the click tracking - if (this.targetElement !== this.getTargetElementFromEventTarget(event.target) || this.touchHasMoved(event)) { - this.trackingClick = false; - this.targetElement = null; - } - - return true; - }; - - - /** - * Attempt to find the labelled control for the given label element. - * - * @param {EventTarget|HTMLLabelElement} labelElement - * @returns {Element|null} - */ - FastClick.prototype.findControl = function(labelElement) { - - // Fast path for newer browsers supporting the HTML5 control attribute - if (labelElement.control !== undefined) { - return labelElement.control; - } - - // All browsers under test that support touch events also support the HTML5 htmlFor attribute - if (labelElement.htmlFor) { - return document.getElementById(labelElement.htmlFor); - } - - // If no for attribute exists, attempt to retrieve the first labellable descendant element - // the list of which is defined here: http://www.w3.org/TR/html5/forms.html#category-label - return labelElement.querySelector('button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea'); - }; - - - /** - * On touch end, determine whether to send a click event at once. - * - * @param {Event} event - * @returns {boolean} - */ - FastClick.prototype.onTouchEnd = function(event) { - var forElement, trackingClickStart, targetTagName, scrollParent, touch, targetElement = this.targetElement; - - if (!this.trackingClick) { - return true; - } - - // Prevent phantom clicks on fast double-tap (issue #36) - if ((event.timeStamp - this.lastClickTime) < this.tapDelay) { - this.cancelNextClick = true; - return true; - } - - if ((event.timeStamp - this.trackingClickStart) > this.tapTimeout) { - return true; - } - - // Reset to prevent wrong click cancel on input (issue #156). - this.cancelNextClick = false; - - this.lastClickTime = event.timeStamp; - - trackingClickStart = this.trackingClickStart; - this.trackingClick = false; - this.trackingClickStart = 0; - - // On some iOS devices, the targetElement supplied with the event is invalid if the layer - // is performing a transition or scroll, and has to be re-detected manually. Note that - // for this to function correctly, it must be called *after* the event target is checked! - // See issue #57; also filed as rdar://13048589 . - if (deviceIsIOSWithBadTarget) { - touch = event.changedTouches[0]; - - // In certain cases arguments of elementFromPoint can be negative, so prevent setting targetElement to null - targetElement = document.elementFromPoint(touch.pageX - window.pageXOffset, touch.pageY - window.pageYOffset) || targetElement; - targetElement.fastClickScrollParent = this.targetElement.fastClickScrollParent; - } - - targetTagName = targetElement.tagName.toLowerCase(); - if (targetTagName === 'label') { - forElement = this.findControl(targetElement); - if (forElement) { - this.focus(targetElement); - if (deviceIsAndroid) { - return false; - } - - targetElement = forElement; - } - } else if (this.needsFocus(targetElement)) { - - // Case 1: If the touch started a while ago (best guess is 100ms based on tests for issue #36) then focus will be triggered anyway. Return early and unset the target element reference so that the subsequent click will be allowed through. - // Case 2: Without this exception for input elements tapped when the document is contained in an iframe, then any inputted text won't be visible even though the value attribute is updated as the user types (issue #37). - if ((event.timeStamp - trackingClickStart) > 100 || (deviceIsIOS && window.top !== window && targetTagName === 'input')) { - this.targetElement = null; - return false; - } - - this.focus(targetElement); - this.sendClick(targetElement, event); - - // Select elements need the event to go through on iOS 4, otherwise the selector menu won't open. - // Also this breaks opening selects when VoiceOver is active on iOS6, iOS7 (and possibly others) - if (!deviceIsIOS || targetTagName !== 'select') { - this.targetElement = null; - event.preventDefault(); - } - - return false; - } - - if (deviceIsIOS && !deviceIsIOS4) { - - // Don't send a synthetic click event if the target element is contained within a parent layer that was scrolled - // and this tap is being used to stop the scrolling (usually initiated by a fling - issue #42). - scrollParent = targetElement.fastClickScrollParent; - if (scrollParent && scrollParent.fastClickLastScrollTop !== scrollParent.scrollTop) { - return true; - } - } - - // Prevent the actual click from going though - unless the target node is marked as requiring - // real clicks or if it is in the whitelist in which case only non-programmatic clicks are permitted. - if (!this.needsClick(targetElement)) { - event.preventDefault(); - this.sendClick(targetElement, event); - } - - return false; - }; - - - /** - * On touch cancel, stop tracking the click. - * - * @returns {void} - */ - FastClick.prototype.onTouchCancel = function() { - this.trackingClick = false; - this.targetElement = null; - }; - - - /** - * Determine mouse events which should be permitted. - * - * @param {Event} event - * @returns {boolean} - */ - FastClick.prototype.onMouse = function(event) { - - // If a target element was never set (because a touch event was never fired) allow the event - if (!this.targetElement) { - return true; - } - - if (event.forwardedTouchEvent) { - return true; - } - - // Programmatically generated events targeting a specific element should be permitted - if (!event.cancelable) { - return true; - } - - // Derive and check the target element to see whether the mouse event needs to be permitted; - // unless explicitly enabled, prevent non-touch click events from triggering actions, - // to prevent ghost/doubleclicks. - if (!this.needsClick(this.targetElement) || this.cancelNextClick) { - - // Prevent any user-added listeners declared on FastClick element from being fired. - if (event.stopImmediatePropagation) { - event.stopImmediatePropagation(); - } else { - - // Part of the hack for browsers that don't support Event#stopImmediatePropagation (e.g. Android 2) - event.propagationStopped = true; - } - - // Cancel the event - event.stopPropagation(); - event.preventDefault(); - - return false; - } - - // If the mouse event is permitted, return true for the action to go through. - return true; - }; - - - /** - * On actual clicks, determine whether this is a touch-generated click, a click action occurring - * naturally after a delay after a touch (which needs to be cancelled to avoid duplication), or - * an actual click which should be permitted. - * - * @param {Event} event - * @returns {boolean} - */ - FastClick.prototype.onClick = function(event) { - var permitted; - - // It's possible for another FastClick-like library delivered with third-party code to fire a click event before FastClick does (issue #44). In that case, set the click-tracking flag back to false and return early. This will cause onTouchEnd to return early. - if (this.trackingClick) { - this.targetElement = null; - this.trackingClick = false; - return true; - } - - // Very odd behaviour on iOS (issue #18): if a submit element is present inside a form and the user hits enter in the iOS simulator or clicks the Go button on the pop-up OS keyboard the a kind of 'fake' click event will be triggered with the submit-type input element as the target. - if (event.target.type === 'submit' && event.detail === 0) { - return true; - } - - permitted = this.onMouse(event); - - // Only unset targetElement if the click is not permitted. This will ensure that the check for !targetElement in onMouse fails and the browser's click doesn't go through. - if (!permitted) { - this.targetElement = null; - } - - // If clicks are permitted, return true for the action to go through. - return permitted; - }; - - - /** - * Remove all FastClick's event listeners. - * - * @returns {void} - */ - FastClick.prototype.destroy = function() { - var layer = this.layer; - - if (deviceIsAndroid) { - layer.removeEventListener('mouseover', this.onMouse, true); - layer.removeEventListener('mousedown', this.onMouse, true); - layer.removeEventListener('mouseup', this.onMouse, true); - } - - layer.removeEventListener('click', this.onClick, true); - layer.removeEventListener('touchstart', this.onTouchStart, false); - layer.removeEventListener('touchmove', this.onTouchMove, false); - layer.removeEventListener('touchend', this.onTouchEnd, false); - layer.removeEventListener('touchcancel', this.onTouchCancel, false); - }; - - - /** - * Check whether FastClick is needed. - * - * @param {Element} layer The layer to listen on - */ - FastClick.notNeeded = function(layer) { - var metaViewport; - var chromeVersion; - var blackberryVersion; - var firefoxVersion; - - // Devices that don't support touch don't need FastClick - if (typeof window.ontouchstart === 'undefined') { - return true; - } - - // Chrome version - zero for other browsers - chromeVersion = +(/Chrome\/([0-9]+)/.exec(navigator.userAgent) || [,0])[1]; - - if (chromeVersion) { - - if (deviceIsAndroid) { - metaViewport = document.querySelector('meta[name=viewport]'); - - if (metaViewport) { - // Chrome on Android with user-scalable="no" doesn't need FastClick (issue #89) - if (metaViewport.content.indexOf('user-scalable=no') !== -1) { - return true; - } - // Chrome 32 and above with width=device-width or less don't need FastClick - if (chromeVersion > 31 && document.documentElement.scrollWidth <= window.outerWidth) { - return true; - } - } - - // Chrome desktop doesn't need FastClick (issue #15) - } else { - return true; - } - } - - if (deviceIsBlackBerry10) { - blackberryVersion = navigator.userAgent.match(/Version\/([0-9]*)\.([0-9]*)/); - - // BlackBerry 10.3+ does not require Fastclick library. - // https://github.com/ftlabs/fastclick/issues/251 - if (blackberryVersion[1] >= 10 && blackberryVersion[2] >= 3) { - metaViewport = document.querySelector('meta[name=viewport]'); - - if (metaViewport) { - // user-scalable=no eliminates click delay. - if (metaViewport.content.indexOf('user-scalable=no') !== -1) { - return true; - } - // width=device-width (or less than device-width) eliminates click delay. - if (document.documentElement.scrollWidth <= window.outerWidth) { - return true; - } - } - } - } - - // IE10 with -ms-touch-action: none or manipulation, which disables double-tap-to-zoom (issue #97) - if (layer.style.msTouchAction === 'none' || layer.style.touchAction === 'manipulation') { - return true; - } - - // Firefox version - zero for other browsers - firefoxVersion = +(/Firefox\/([0-9]+)/.exec(navigator.userAgent) || [,0])[1]; - - if (firefoxVersion >= 27) { - // Firefox 27+ does not have tap delay if the content is not zoomable - https://bugzilla.mozilla.org/show_bug.cgi?id=922896 - - metaViewport = document.querySelector('meta[name=viewport]'); - if (metaViewport && (metaViewport.content.indexOf('user-scalable=no') !== -1 || document.documentElement.scrollWidth <= window.outerWidth)) { - return true; - } - } - - // IE11: prefixed -ms-touch-action is no longer supported and it's recomended to use non-prefixed version - // http://msdn.microsoft.com/en-us/library/windows/apps/Hh767313.aspx - if (layer.style.touchAction === 'none' || layer.style.touchAction === 'manipulation') { - return true; - } - - return false; - }; - - - /** - * Factory method for creating a FastClick object - * - * @param {Element} layer The layer to listen on - * @param {Object} [options={}] The options to override the defaults - */ - FastClick.attach = function(layer, options) { - return new FastClick(layer, options); - }; - - - if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) { - - // AMD. Register as an anonymous module. - define(function() { - return FastClick; - }); - } else if (typeof module !== 'undefined' && module.exports) { - module.exports = FastClick.attach; - module.exports.FastClick = FastClick; - } else { - window.FastClick = FastClick; - } -}()); diff --git a/assets/plugins/fastclick/fastclick.min.js b/assets/plugins/fastclick/fastclick.min.js deleted file mode 100644 index 131e29e4..00000000 --- a/assets/plugins/fastclick/fastclick.min.js +++ /dev/null @@ -1 +0,0 @@ -!function e(t,n,r){function i(s,a){if(!n[s]){if(!t[s]){var c="function"==typeof require&&require;if(!a&&c)return c(s,!0);if(o)return o(s,!0);var l=new Error("Cannot find module '"+s+"'");throw l.code="MODULE_NOT_FOUND",l}var u=n[s]={exports:{}};t[s][0].call(u.exports,function(e){var n=t[s][1][e];return i(n?n:e)},u,u.exports,e,t,n,r)}return n[s].exports}for(var o="function"==typeof require&&require,s=0;s<r.length;s++)i(r[s]);return i}({1:[function(e,t){!function(){"use strict";function e(t,n){function i(e,t){return function(){return e.apply(t,arguments)}}var o;if(n=n||{},this.trackingClick=!1,this.trackingClickStart=0,this.targetElement=null,this.touchStartX=0,this.touchStartY=0,this.lastTouchIdentifier=0,this.touchBoundary=n.touchBoundary||10,this.layer=t,this.tapDelay=n.tapDelay||200,this.tapTimeout=n.tapTimeout||700,!e.notNeeded(t)){for(var s=["onMouse","onClick","onTouchStart","onTouchMove","onTouchEnd","onTouchCancel"],a=this,c=0,l=s.length;l>c;c++)a[s[c]]=i(a[s[c]],a);r&&(t.addEventListener("mouseover",this.onMouse,!0),t.addEventListener("mousedown",this.onMouse,!0),t.addEventListener("mouseup",this.onMouse,!0)),t.addEventListener("click",this.onClick,!0),t.addEventListener("touchstart",this.onTouchStart,!1),t.addEventListener("touchmove",this.onTouchMove,!1),t.addEventListener("touchend",this.onTouchEnd,!1),t.addEventListener("touchcancel",this.onTouchCancel,!1),Event.prototype.stopImmediatePropagation||(t.removeEventListener=function(e,n,r){var i=Node.prototype.removeEventListener;"click"===e?i.call(t,e,n.hijacked||n,r):i.call(t,e,n,r)},t.addEventListener=function(e,n,r){var i=Node.prototype.addEventListener;"click"===e?i.call(t,e,n.hijacked||(n.hijacked=function(e){e.propagationStopped||n(e)}),r):i.call(t,e,n,r)}),"function"==typeof t.onclick&&(o=t.onclick,t.addEventListener("click",function(e){o(e)},!1),t.onclick=null)}}var n=navigator.userAgent.indexOf("Windows Phone")>=0,r=navigator.userAgent.indexOf("Android")>0&&!n,i=/iP(ad|hone|od)/.test(navigator.userAgent)&&!n,o=i&&/OS 4_\d(_\d)?/.test(navigator.userAgent),s=i&&/OS [6-7]_\d/.test(navigator.userAgent),a=navigator.userAgent.indexOf("BB10")>0;e.prototype.needsClick=function(e){switch(e.nodeName.toLowerCase()){case"button":case"select":case"textarea":if(e.disabled)return!0;break;case"input":if(i&&"file"===e.type||e.disabled)return!0;break;case"label":case"iframe":case"video":return!0}return/\bneedsclick\b/.test(e.className)},e.prototype.needsFocus=function(e){switch(e.nodeName.toLowerCase()){case"textarea":return!0;case"select":return!r;case"input":switch(e.type){case"button":case"checkbox":case"file":case"image":case"radio":case"submit":return!1}return!e.disabled&&!e.readOnly;default:return/\bneedsfocus\b/.test(e.className)}},e.prototype.sendClick=function(e,t){var n,r;document.activeElement&&document.activeElement!==e&&document.activeElement.blur(),r=t.changedTouches[0],n=document.createEvent("MouseEvents"),n.initMouseEvent(this.determineEventType(e),!0,!0,window,1,r.screenX,r.screenY,r.clientX,r.clientY,!1,!1,!1,!1,0,null),n.forwardedTouchEvent=!0,e.dispatchEvent(n)},e.prototype.determineEventType=function(e){return r&&"select"===e.tagName.toLowerCase()?"mousedown":"click"},e.prototype.focus=function(e){var t;i&&e.setSelectionRange&&0!==e.type.indexOf("date")&&"time"!==e.type&&"month"!==e.type?(t=e.value.length,e.setSelectionRange(t,t)):e.focus()},e.prototype.updateScrollParent=function(e){var t,n;if(t=e.fastClickScrollParent,!t||!t.contains(e)){n=e;do{if(n.scrollHeight>n.offsetHeight){t=n,e.fastClickScrollParent=n;break}n=n.parentElement}while(n)}t&&(t.fastClickLastScrollTop=t.scrollTop)},e.prototype.getTargetElementFromEventTarget=function(e){return e.nodeType===Node.TEXT_NODE?e.parentNode:e},e.prototype.onTouchStart=function(e){var t,n,r;if(e.targetTouches.length>1)return!0;if(t=this.getTargetElementFromEventTarget(e.target),n=e.targetTouches[0],i){if(r=window.getSelection(),r.rangeCount&&!r.isCollapsed)return!0;if(!o){if(n.identifier&&n.identifier===this.lastTouchIdentifier)return e.preventDefault(),!1;this.lastTouchIdentifier=n.identifier,this.updateScrollParent(t)}}return this.trackingClick=!0,this.trackingClickStart=e.timeStamp,this.targetElement=t,this.touchStartX=n.pageX,this.touchStartY=n.pageY,e.timeStamp-this.lastClickTime<this.tapDelay&&e.preventDefault(),!0},e.prototype.touchHasMoved=function(e){var t=e.changedTouches[0],n=this.touchBoundary;return Math.abs(t.pageX-this.touchStartX)>n||Math.abs(t.pageY-this.touchStartY)>n?!0:!1},e.prototype.onTouchMove=function(e){return this.trackingClick?((this.targetElement!==this.getTargetElementFromEventTarget(e.target)||this.touchHasMoved(e))&&(this.trackingClick=!1,this.targetElement=null),!0):!0},e.prototype.findControl=function(e){return void 0!==e.control?e.control:e.htmlFor?document.getElementById(e.htmlFor):e.querySelector("button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea")},e.prototype.onTouchEnd=function(e){var t,n,a,c,l,u=this.targetElement;if(!this.trackingClick)return!0;if(e.timeStamp-this.lastClickTime<this.tapDelay)return this.cancelNextClick=!0,!0;if(e.timeStamp-this.trackingClickStart>this.tapTimeout)return!0;if(this.cancelNextClick=!1,this.lastClickTime=e.timeStamp,n=this.trackingClickStart,this.trackingClick=!1,this.trackingClickStart=0,s&&(l=e.changedTouches[0],u=document.elementFromPoint(l.pageX-window.pageXOffset,l.pageY-window.pageYOffset)||u,u.fastClickScrollParent=this.targetElement.fastClickScrollParent),a=u.tagName.toLowerCase(),"label"===a){if(t=this.findControl(u)){if(this.focus(u),r)return!1;u=t}}else if(this.needsFocus(u))return e.timeStamp-n>100||i&&window.top!==window&&"input"===a?(this.targetElement=null,!1):(this.focus(u),this.sendClick(u,e),i&&"select"===a||(this.targetElement=null,e.preventDefault()),!1);return i&&!o&&(c=u.fastClickScrollParent,c&&c.fastClickLastScrollTop!==c.scrollTop)?!0:(this.needsClick(u)||(e.preventDefault(),this.sendClick(u,e)),!1)},e.prototype.onTouchCancel=function(){this.trackingClick=!1,this.targetElement=null},e.prototype.onMouse=function(e){return this.targetElement?e.forwardedTouchEvent?!0:e.cancelable&&(!this.needsClick(this.targetElement)||this.cancelNextClick)?(e.stopImmediatePropagation?e.stopImmediatePropagation():e.propagationStopped=!0,e.stopPropagation(),e.preventDefault(),!1):!0:!0},e.prototype.onClick=function(e){var t;return this.trackingClick?(this.targetElement=null,this.trackingClick=!1,!0):"submit"===e.target.type&&0===e.detail?!0:(t=this.onMouse(e),t||(this.targetElement=null),t)},e.prototype.destroy=function(){var e=this.layer;r&&(e.removeEventListener("mouseover",this.onMouse,!0),e.removeEventListener("mousedown",this.onMouse,!0),e.removeEventListener("mouseup",this.onMouse,!0)),e.removeEventListener("click",this.onClick,!0),e.removeEventListener("touchstart",this.onTouchStart,!1),e.removeEventListener("touchmove",this.onTouchMove,!1),e.removeEventListener("touchend",this.onTouchEnd,!1),e.removeEventListener("touchcancel",this.onTouchCancel,!1)},e.notNeeded=function(e){var t,n,i,o;if("undefined"==typeof window.ontouchstart)return!0;if(n=+(/Chrome\/([0-9]+)/.exec(navigator.userAgent)||[,0])[1]){if(!r)return!0;if(t=document.querySelector("meta[name=viewport]")){if(-1!==t.content.indexOf("user-scalable=no"))return!0;if(n>31&&document.documentElement.scrollWidth<=window.outerWidth)return!0}}if(a&&(i=navigator.userAgent.match(/Version\/([0-9]*)\.([0-9]*)/),i[1]>=10&&i[2]>=3&&(t=document.querySelector("meta[name=viewport]")))){if(-1!==t.content.indexOf("user-scalable=no"))return!0;if(document.documentElement.scrollWidth<=window.outerWidth)return!0}return"none"===e.style.msTouchAction||"manipulation"===e.style.touchAction?!0:(o=+(/Firefox\/([0-9]+)/.exec(navigator.userAgent)||[,0])[1],o>=27&&(t=document.querySelector("meta[name=viewport]"),t&&(-1!==t.content.indexOf("user-scalable=no")||document.documentElement.scrollWidth<=window.outerWidth))?!0:"none"===e.style.touchAction||"manipulation"===e.style.touchAction?!0:!1)},e.attach=function(t,n){return new e(t,n)},"function"==typeof define&&"object"==typeof define.amd&&define.amd?define(function(){return e}):"undefined"!=typeof t&&t.exports?(t.exports=e.attach,t.exports.FastClick=e):window.FastClick=e}()},{}],2:[function(e){window.Origami={fastclick:e("./bower_components/fastclick/lib/fastclick.js")}},{"./bower_components/fastclick/lib/fastclick.js":1}]},{},[2]);;(function() {function trigger(){document.dispatchEvent(new CustomEvent('o.load'))};document.addEventListener('load',trigger);if (document.readyState==='ready') trigger();}());(function() {function trigger(){document.dispatchEvent(new CustomEvent('o.DOMContentLoaded'))};document.addEventListener('DOMContentLoaded',trigger);if (document.readyState==='interactive') trigger();}()) \ No newline at end of file diff --git a/assets/plugins/flot/excanvas.js b/assets/plugins/flot/excanvas.js deleted file mode 100644 index f45bf03d..00000000 --- a/assets/plugins/flot/excanvas.js +++ /dev/null @@ -1,1427 +0,0 @@ -// Copyright 2006 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - - -// Known Issues: -// -// * Patterns only support repeat. -// * Radial gradient are not implemented. The VML version of these look very -// different from the canvas one. -// * Clipping paths are not implemented. -// * Coordsize. The width and height attribute have higher priority than the -// width and height style values which isn't correct. -// * Painting mode isn't implemented. -// * Canvas width/height should is using content-box by default. IE in -// Quirks mode will draw the canvas using border-box. Either change your -// doctype to HTML5 -// (http://www.whatwg.org/specs/web-apps/current-work/#the-doctype) -// or use Box Sizing Behavior from WebFX -// (http://webfx.eae.net/dhtml/boxsizing/boxsizing.html) -// * Non uniform scaling does not correctly scale strokes. -// * Filling very large shapes (above 5000 points) is buggy. -// * Optimize. There is always room for speed improvements. - -// Only add this code if we do not already have a canvas implementation -if (!document.createElement('canvas').getContext) { - -(function() { - - // alias some functions to make (compiled) code shorter - var m = Math; - var mr = m.round; - var ms = m.sin; - var mc = m.cos; - var abs = m.abs; - var sqrt = m.sqrt; - - // this is used for sub pixel precision - var Z = 10; - var Z2 = Z / 2; - - var IE_VERSION = +navigator.userAgent.match(/MSIE ([\d.]+)?/)[1]; - - /** - * This funtion is assigned to the <canvas> elements as element.getContext(). - * @this {HTMLElement} - * @return {CanvasRenderingContext2D_} - */ - function getContext() { - return this.context_ || - (this.context_ = new CanvasRenderingContext2D_(this)); - } - - var slice = Array.prototype.slice; - - /** - * Binds a function to an object. The returned function will always use the - * passed in {@code obj} as {@code this}. - * - * Example: - * - * g = bind(f, obj, a, b) - * g(c, d) // will do f.call(obj, a, b, c, d) - * - * @param {Function} f The function to bind the object to - * @param {Object} obj The object that should act as this when the function - * is called - * @param {*} var_args Rest arguments that will be used as the initial - * arguments when the function is called - * @return {Function} A new function that has bound this - */ - function bind(f, obj, var_args) { - var a = slice.call(arguments, 2); - return function() { - return f.apply(obj, a.concat(slice.call(arguments))); - }; - } - - function encodeHtmlAttribute(s) { - return String(s).replace(/&/g, '&amp;').replace(/"/g, '&quot;'); - } - - function addNamespace(doc, prefix, urn) { - if (!doc.namespaces[prefix]) { - doc.namespaces.add(prefix, urn, '#default#VML'); - } - } - - function addNamespacesAndStylesheet(doc) { - addNamespace(doc, 'g_vml_', 'urn:schemas-microsoft-com:vml'); - addNamespace(doc, 'g_o_', 'urn:schemas-microsoft-com:office:office'); - - // Setup default CSS. Only add one style sheet per document - if (!doc.styleSheets['ex_canvas_']) { - var ss = doc.createStyleSheet(); - ss.owningElement.id = 'ex_canvas_'; - ss.cssText = 'canvas{display:inline-block;overflow:hidden;' + - // default size is 300x150 in Gecko and Opera - 'text-align:left;width:300px;height:150px}'; - } - } - - // Add namespaces and stylesheet at startup. - addNamespacesAndStylesheet(document); - - var G_vmlCanvasManager_ = { - init: function(opt_doc) { - var doc = opt_doc || document; - // Create a dummy element so that IE will allow canvas elements to be - // recognized. - doc.createElement('canvas'); - doc.attachEvent('onreadystatechange', bind(this.init_, this, doc)); - }, - - init_: function(doc) { - // find all canvas elements - var els = doc.getElementsByTagName('canvas'); - for (var i = 0; i < els.length; i++) { - this.initElement(els[i]); - } - }, - - /** - * Public initializes a canvas element so that it can be used as canvas - * element from now on. This is called automatically before the page is - * loaded but if you are creating elements using createElement you need to - * make sure this is called on the element. - * @param {HTMLElement} el The canvas element to initialize. - * @return {HTMLElement} the element that was created. - */ - initElement: function(el) { - if (!el.getContext) { - el.getContext = getContext; - - // Add namespaces and stylesheet to document of the element. - addNamespacesAndStylesheet(el.ownerDocument); - - // Remove fallback content. There is no way to hide text nodes so we - // just remove all childNodes. We could hide all elements and remove - // text nodes but who really cares about the fallback content. - el.innerHTML = ''; - - // do not use inline function because that will leak memory - el.attachEvent('onpropertychange', onPropertyChange); - el.attachEvent('onresize', onResize); - - var attrs = el.attributes; - if (attrs.width && attrs.width.specified) { - // TODO: use runtimeStyle and coordsize - // el.getContext().setWidth_(attrs.width.nodeValue); - el.style.width = attrs.width.nodeValue + 'px'; - } else { - el.width = el.clientWidth; - } - if (attrs.height && attrs.height.specified) { - // TODO: use runtimeStyle and coordsize - // el.getContext().setHeight_(attrs.height.nodeValue); - el.style.height = attrs.height.nodeValue + 'px'; - } else { - el.height = el.clientHeight; - } - //el.getContext().setCoordsize_() - } - return el; - } - }; - - function onPropertyChange(e) { - var el = e.srcElement; - - switch (e.propertyName) { - case 'width': - el.getContext().clearRect(); - el.style.width = el.attributes.width.nodeValue + 'px'; - // In IE8 this does not trigger onresize. - el.firstChild.style.width = el.clientWidth + 'px'; - break; - case 'height': - el.getContext().clearRect(); - el.style.height = el.attributes.height.nodeValue + 'px'; - el.firstChild.style.height = el.clientHeight + 'px'; - break; - } - } - - function onResize(e) { - var el = e.srcElement; - if (el.firstChild) { - el.firstChild.style.width = el.clientWidth + 'px'; - el.firstChild.style.height = el.clientHeight + 'px'; - } - } - - G_vmlCanvasManager_.init(); - - // precompute "00" to "FF" - var decToHex = []; - for (var i = 0; i < 16; i++) { - for (var j = 0; j < 16; j++) { - decToHex[i * 16 + j] = i.toString(16) + j.toString(16); - } - } - - function createMatrixIdentity() { - return [ - [1, 0, 0], - [0, 1, 0], - [0, 0, 1] - ]; - } - - function matrixMultiply(m1, m2) { - var result = createMatrixIdentity(); - - for (var x = 0; x < 3; x++) { - for (var y = 0; y < 3; y++) { - var sum = 0; - - for (var z = 0; z < 3; z++) { - sum += m1[x][z] * m2[z][y]; - } - - result[x][y] = sum; - } - } - return result; - } - - function copyState(o1, o2) { - o2.fillStyle = o1.fillStyle; - o2.lineCap = o1.lineCap; - o2.lineJoin = o1.lineJoin; - o2.lineWidth = o1.lineWidth; - o2.miterLimit = o1.miterLimit; - o2.shadowBlur = o1.shadowBlur; - o2.shadowColor = o1.shadowColor; - o2.shadowOffsetX = o1.shadowOffsetX; - o2.shadowOffsetY = o1.shadowOffsetY; - o2.strokeStyle = o1.strokeStyle; - o2.globalAlpha = o1.globalAlpha; - o2.font = o1.font; - o2.textAlign = o1.textAlign; - o2.textBaseline = o1.textBaseline; - o2.arcScaleX_ = o1.arcScaleX_; - o2.arcScaleY_ = o1.arcScaleY_; - o2.lineScale_ = o1.lineScale_; - } - - var colorData = { - aliceblue: '#F0F8FF', - antiquewhite: '#FAEBD7', - aquamarine: '#7FFFD4', - azure: '#F0FFFF', - beige: '#F5F5DC', - bisque: '#FFE4C4', - black: '#000000', - blanchedalmond: '#FFEBCD', - blueviolet: '#8A2BE2', - brown: '#A52A2A', - burlywood: '#DEB887', - cadetblue: '#5F9EA0', - chartreuse: '#7FFF00', - chocolate: '#D2691E', - coral: '#FF7F50', - cornflowerblue: '#6495ED', - cornsilk: '#FFF8DC', - crimson: '#DC143C', - cyan: '#00FFFF', - darkblue: '#00008B', - darkcyan: '#008B8B', - darkgoldenrod: '#B8860B', - darkgray: '#A9A9A9', - darkgreen: '#006400', - darkgrey: '#A9A9A9', - darkkhaki: '#BDB76B', - darkmagenta: '#8B008B', - darkolivegreen: '#556B2F', - darkorange: '#FF8C00', - darkorchid: '#9932CC', - darkred: '#8B0000', - darksalmon: '#E9967A', - darkseagreen: '#8FBC8F', - darkslateblue: '#483D8B', - darkslategray: '#2F4F4F', - darkslategrey: '#2F4F4F', - darkturquoise: '#00CED1', - darkviolet: '#9400D3', - deeppink: '#FF1493', - deepskyblue: '#00BFFF', - dimgray: '#696969', - dimgrey: '#696969', - dodgerblue: '#1E90FF', - firebrick: '#B22222', - floralwhite: '#FFFAF0', - forestgreen: '#228B22', - gainsboro: '#DCDCDC', - ghostwhite: '#F8F8FF', - gold: '#FFD700', - goldenrod: '#DAA520', - grey: '#808080', - greenyellow: '#ADFF2F', - honeydew: '#F0FFF0', - hotpink: '#FF69B4', - indianred: '#CD5C5C', - indigo: '#4B0082', - ivory: '#FFFFF0', - khaki: '#F0E68C', - lavender: '#E6E6FA', - lavenderblush: '#FFF0F5', - lawngreen: '#7CFC00', - lemonchiffon: '#FFFACD', - lightblue: '#ADD8E6', - lightcoral: '#F08080', - lightcyan: '#E0FFFF', - lightgoldenrodyellow: '#FAFAD2', - lightgreen: '#90EE90', - lightgrey: '#D3D3D3', - lightpink: '#FFB6C1', - lightsalmon: '#FFA07A', - lightseagreen: '#20B2AA', - lightskyblue: '#87CEFA', - lightslategray: '#778899', - lightslategrey: '#778899', - lightsteelblue: '#B0C4DE', - lightyellow: '#FFFFE0', - limegreen: '#32CD32', - linen: '#FAF0E6', - magenta: '#FF00FF', - mediumaquamarine: '#66CDAA', - mediumblue: '#0000CD', - mediumorchid: '#BA55D3', - mediumpurple: '#9370DB', - mediumseagreen: '#3CB371', - mediumslateblue: '#7B68EE', - mediumspringgreen: '#00FA9A', - mediumturquoise: '#48D1CC', - mediumvioletred: '#C71585', - midnightblue: '#191970', - mintcream: '#F5FFFA', - mistyrose: '#FFE4E1', - moccasin: '#FFE4B5', - navajowhite: '#FFDEAD', - oldlace: '#FDF5E6', - olivedrab: '#6B8E23', - orange: '#FFA500', - orangered: '#FF4500', - orchid: '#DA70D6', - palegoldenrod: '#EEE8AA', - palegreen: '#98FB98', - paleturquoise: '#AFEEEE', - palevioletred: '#DB7093', - papayawhip: '#FFEFD5', - peachpuff: '#FFDAB9', - peru: '#CD853F', - pink: '#FFC0CB', - plum: '#DDA0DD', - powderblue: '#B0E0E6', - rosybrown: '#BC8F8F', - royalblue: '#4169E1', - saddlebrown: '#8B4513', - salmon: '#FA8072', - sandybrown: '#F4A460', - seagreen: '#2E8B57', - seashell: '#FFF5EE', - sienna: '#A0522D', - skyblue: '#87CEEB', - slateblue: '#6A5ACD', - slategray: '#708090', - slategrey: '#708090', - snow: '#FFFAFA', - springgreen: '#00FF7F', - steelblue: '#4682B4', - tan: '#D2B48C', - thistle: '#D8BFD8', - tomato: '#FF6347', - turquoise: '#40E0D0', - violet: '#EE82EE', - wheat: '#F5DEB3', - whitesmoke: '#F5F5F5', - yellowgreen: '#9ACD32' - }; - - - function getRgbHslContent(styleString) { - var start = styleString.indexOf('(', 3); - var end = styleString.indexOf(')', start + 1); - var parts = styleString.substring(start + 1, end).split(','); - // add alpha if needed - if (parts.length != 4 || styleString.charAt(3) != 'a') { - parts[3] = 1; - } - return parts; - } - - function percent(s) { - return parseFloat(s) / 100; - } - - function clamp(v, min, max) { - return Math.min(max, Math.max(min, v)); - } - - function hslToRgb(parts){ - var r, g, b, h, s, l; - h = parseFloat(parts[0]) / 360 % 360; - if (h < 0) - h++; - s = clamp(percent(parts[1]), 0, 1); - l = clamp(percent(parts[2]), 0, 1); - if (s == 0) { - r = g = b = l; // achromatic - } else { - var q = l < 0.5 ? l * (1 + s) : l + s - l * s; - var p = 2 * l - q; - r = hueToRgb(p, q, h + 1 / 3); - g = hueToRgb(p, q, h); - b = hueToRgb(p, q, h - 1 / 3); - } - - return '#' + decToHex[Math.floor(r * 255)] + - decToHex[Math.floor(g * 255)] + - decToHex[Math.floor(b * 255)]; - } - - function hueToRgb(m1, m2, h) { - if (h < 0) - h++; - if (h > 1) - h--; - - if (6 * h < 1) - return m1 + (m2 - m1) * 6 * h; - else if (2 * h < 1) - return m2; - else if (3 * h < 2) - return m1 + (m2 - m1) * (2 / 3 - h) * 6; - else - return m1; - } - - var processStyleCache = {}; - - function processStyle(styleString) { - if (styleString in processStyleCache) { - return processStyleCache[styleString]; - } - - var str, alpha = 1; - - styleString = String(styleString); - if (styleString.charAt(0) == '#') { - str = styleString; - } else if (/^rgb/.test(styleString)) { - var parts = getRgbHslContent(styleString); - var str = '#', n; - for (var i = 0; i < 3; i++) { - if (parts[i].indexOf('%') != -1) { - n = Math.floor(percent(parts[i]) * 255); - } else { - n = +parts[i]; - } - str += decToHex[clamp(n, 0, 255)]; - } - alpha = +parts[3]; - } else if (/^hsl/.test(styleString)) { - var parts = getRgbHslContent(styleString); - str = hslToRgb(parts); - alpha = parts[3]; - } else { - str = colorData[styleString] || styleString; - } - return processStyleCache[styleString] = {color: str, alpha: alpha}; - } - - var DEFAULT_STYLE = { - style: 'normal', - variant: 'normal', - weight: 'normal', - size: 10, - family: 'sans-serif' - }; - - // Internal text style cache - var fontStyleCache = {}; - - function processFontStyle(styleString) { - if (fontStyleCache[styleString]) { - return fontStyleCache[styleString]; - } - - var el = document.createElement('div'); - var style = el.style; - try { - style.font = styleString; - } catch (ex) { - // Ignore failures to set to invalid font. - } - - return fontStyleCache[styleString] = { - style: style.fontStyle || DEFAULT_STYLE.style, - variant: style.fontVariant || DEFAULT_STYLE.variant, - weight: style.fontWeight || DEFAULT_STYLE.weight, - size: style.fontSize || DEFAULT_STYLE.size, - family: style.fontFamily || DEFAULT_STYLE.family - }; - } - - function getComputedStyle(style, element) { - var computedStyle = {}; - - for (var p in style) { - computedStyle[p] = style[p]; - } - - // Compute the size - var canvasFontSize = parseFloat(element.currentStyle.fontSize), - fontSize = parseFloat(style.size); - - if (typeof style.size == 'number') { - computedStyle.size = style.size; - } else if (style.size.indexOf('px') != -1) { - computedStyle.size = fontSize; - } else if (style.size.indexOf('em') != -1) { - computedStyle.size = canvasFontSize * fontSize; - } else if(style.size.indexOf('%') != -1) { - computedStyle.size = (canvasFontSize / 100) * fontSize; - } else if (style.size.indexOf('pt') != -1) { - computedStyle.size = fontSize / .75; - } else { - computedStyle.size = canvasFontSize; - } - - // Different scaling between normal text and VML text. This was found using - // trial and error to get the same size as non VML text. - computedStyle.size *= 0.981; - - return computedStyle; - } - - function buildStyle(style) { - return style.style + ' ' + style.variant + ' ' + style.weight + ' ' + - style.size + 'px ' + style.family; - } - - var lineCapMap = { - 'butt': 'flat', - 'round': 'round' - }; - - function processLineCap(lineCap) { - return lineCapMap[lineCap] || 'square'; - } - - /** - * This class implements CanvasRenderingContext2D interface as described by - * the WHATWG. - * @param {HTMLElement} canvasElement The element that the 2D context should - * be associated with - */ - function CanvasRenderingContext2D_(canvasElement) { - this.m_ = createMatrixIdentity(); - - this.mStack_ = []; - this.aStack_ = []; - this.currentPath_ = []; - - // Canvas context properties - this.strokeStyle = '#000'; - this.fillStyle = '#000'; - - this.lineWidth = 1; - this.lineJoin = 'miter'; - this.lineCap = 'butt'; - this.miterLimit = Z * 1; - this.globalAlpha = 1; - this.font = '10px sans-serif'; - this.textAlign = 'left'; - this.textBaseline = 'alphabetic'; - this.canvas = canvasElement; - - var cssText = 'width:' + canvasElement.clientWidth + 'px;height:' + - canvasElement.clientHeight + 'px;overflow:hidden;position:absolute'; - var el = canvasElement.ownerDocument.createElement('div'); - el.style.cssText = cssText; - canvasElement.appendChild(el); - - var overlayEl = el.cloneNode(false); - // Use a non transparent background. - overlayEl.style.backgroundColor = 'red'; - overlayEl.style.filter = 'alpha(opacity=0)'; - canvasElement.appendChild(overlayEl); - - this.element_ = el; - this.arcScaleX_ = 1; - this.arcScaleY_ = 1; - this.lineScale_ = 1; - } - - var contextPrototype = CanvasRenderingContext2D_.prototype; - contextPrototype.clearRect = function() { - if (this.textMeasureEl_) { - this.textMeasureEl_.removeNode(true); - this.textMeasureEl_ = null; - } - this.element_.innerHTML = ''; - }; - - contextPrototype.beginPath = function() { - // TODO: Branch current matrix so that save/restore has no effect - // as per safari docs. - this.currentPath_ = []; - }; - - contextPrototype.moveTo = function(aX, aY) { - var p = getCoords(this, aX, aY); - this.currentPath_.push({type: 'moveTo', x: p.x, y: p.y}); - this.currentX_ = p.x; - this.currentY_ = p.y; - }; - - contextPrototype.lineTo = function(aX, aY) { - var p = getCoords(this, aX, aY); - this.currentPath_.push({type: 'lineTo', x: p.x, y: p.y}); - - this.currentX_ = p.x; - this.currentY_ = p.y; - }; - - contextPrototype.bezierCurveTo = function(aCP1x, aCP1y, - aCP2x, aCP2y, - aX, aY) { - var p = getCoords(this, aX, aY); - var cp1 = getCoords(this, aCP1x, aCP1y); - var cp2 = getCoords(this, aCP2x, aCP2y); - bezierCurveTo(this, cp1, cp2, p); - }; - - // Helper function that takes the already fixed cordinates. - function bezierCurveTo(self, cp1, cp2, p) { - self.currentPath_.push({ - type: 'bezierCurveTo', - cp1x: cp1.x, - cp1y: cp1.y, - cp2x: cp2.x, - cp2y: cp2.y, - x: p.x, - y: p.y - }); - self.currentX_ = p.x; - self.currentY_ = p.y; - } - - contextPrototype.quadraticCurveTo = function(aCPx, aCPy, aX, aY) { - // the following is lifted almost directly from - // http://developer.mozilla.org/en/docs/Canvas_tutorial:Drawing_shapes - - var cp = getCoords(this, aCPx, aCPy); - var p = getCoords(this, aX, aY); - - var cp1 = { - x: this.currentX_ + 2.0 / 3.0 * (cp.x - this.currentX_), - y: this.currentY_ + 2.0 / 3.0 * (cp.y - this.currentY_) - }; - var cp2 = { - x: cp1.x + (p.x - this.currentX_) / 3.0, - y: cp1.y + (p.y - this.currentY_) / 3.0 - }; - - bezierCurveTo(this, cp1, cp2, p); - }; - - contextPrototype.arc = function(aX, aY, aRadius, - aStartAngle, aEndAngle, aClockwise) { - aRadius *= Z; - var arcType = aClockwise ? 'at' : 'wa'; - - var xStart = aX + mc(aStartAngle) * aRadius - Z2; - var yStart = aY + ms(aStartAngle) * aRadius - Z2; - - var xEnd = aX + mc(aEndAngle) * aRadius - Z2; - var yEnd = aY + ms(aEndAngle) * aRadius - Z2; - - // IE won't render arches drawn counter clockwise if xStart == xEnd. - if (xStart == xEnd && !aClockwise) { - xStart += 0.125; // Offset xStart by 1/80 of a pixel. Use something - // that can be represented in binary - } - - var p = getCoords(this, aX, aY); - var pStart = getCoords(this, xStart, yStart); - var pEnd = getCoords(this, xEnd, yEnd); - - this.currentPath_.push({type: arcType, - x: p.x, - y: p.y, - radius: aRadius, - xStart: pStart.x, - yStart: pStart.y, - xEnd: pEnd.x, - yEnd: pEnd.y}); - - }; - - contextPrototype.rect = function(aX, aY, aWidth, aHeight) { - this.moveTo(aX, aY); - this.lineTo(aX + aWidth, aY); - this.lineTo(aX + aWidth, aY + aHeight); - this.lineTo(aX, aY + aHeight); - this.closePath(); - }; - - contextPrototype.strokeRect = function(aX, aY, aWidth, aHeight) { - var oldPath = this.currentPath_; - this.beginPath(); - - this.moveTo(aX, aY); - this.lineTo(aX + aWidth, aY); - this.lineTo(aX + aWidth, aY + aHeight); - this.lineTo(aX, aY + aHeight); - this.closePath(); - this.stroke(); - - this.currentPath_ = oldPath; - }; - - contextPrototype.fillRect = function(aX, aY, aWidth, aHeight) { - var oldPath = this.currentPath_; - this.beginPath(); - - this.moveTo(aX, aY); - this.lineTo(aX + aWidth, aY); - this.lineTo(aX + aWidth, aY + aHeight); - this.lineTo(aX, aY + aHeight); - this.closePath(); - this.fill(); - - this.currentPath_ = oldPath; - }; - - contextPrototype.createLinearGradient = function(aX0, aY0, aX1, aY1) { - var gradient = new CanvasGradient_('gradient'); - gradient.x0_ = aX0; - gradient.y0_ = aY0; - gradient.x1_ = aX1; - gradient.y1_ = aY1; - return gradient; - }; - - contextPrototype.createRadialGradient = function(aX0, aY0, aR0, - aX1, aY1, aR1) { - var gradient = new CanvasGradient_('gradientradial'); - gradient.x0_ = aX0; - gradient.y0_ = aY0; - gradient.r0_ = aR0; - gradient.x1_ = aX1; - gradient.y1_ = aY1; - gradient.r1_ = aR1; - return gradient; - }; - - contextPrototype.drawImage = function(image, var_args) { - var dx, dy, dw, dh, sx, sy, sw, sh; - - // to find the original width we overide the width and height - var oldRuntimeWidth = image.runtimeStyle.width; - var oldRuntimeHeight = image.runtimeStyle.height; - image.runtimeStyle.width = 'auto'; - image.runtimeStyle.height = 'auto'; - - // get the original size - var w = image.width; - var h = image.height; - - // and remove overides - image.runtimeStyle.width = oldRuntimeWidth; - image.runtimeStyle.height = oldRuntimeHeight; - - if (arguments.length == 3) { - dx = arguments[1]; - dy = arguments[2]; - sx = sy = 0; - sw = dw = w; - sh = dh = h; - } else if (arguments.length == 5) { - dx = arguments[1]; - dy = arguments[2]; - dw = arguments[3]; - dh = arguments[4]; - sx = sy = 0; - sw = w; - sh = h; - } else if (arguments.length == 9) { - sx = arguments[1]; - sy = arguments[2]; - sw = arguments[3]; - sh = arguments[4]; - dx = arguments[5]; - dy = arguments[6]; - dw = arguments[7]; - dh = arguments[8]; - } else { - throw Error('Invalid number of arguments'); - } - - var d = getCoords(this, dx, dy); - - var w2 = sw / 2; - var h2 = sh / 2; - - var vmlStr = []; - - var W = 10; - var H = 10; - - // For some reason that I've now forgotten, using divs didn't work - vmlStr.push(' <g_vml_:group', - ' coordsize="', Z * W, ',', Z * H, '"', - ' coordorigin="0,0"' , - ' style="width:', W, 'px;height:', H, 'px;position:absolute;'); - - // If filters are necessary (rotation exists), create them - // filters are bog-slow, so only create them if abbsolutely necessary - // The following check doesn't account for skews (which don't exist - // in the canvas spec (yet) anyway. - - if (this.m_[0][0] != 1 || this.m_[0][1] || - this.m_[1][1] != 1 || this.m_[1][0]) { - var filter = []; - - // Note the 12/21 reversal - filter.push('M11=', this.m_[0][0], ',', - 'M12=', this.m_[1][0], ',', - 'M21=', this.m_[0][1], ',', - 'M22=', this.m_[1][1], ',', - 'Dx=', mr(d.x / Z), ',', - 'Dy=', mr(d.y / Z), ''); - - // Bounding box calculation (need to minimize displayed area so that - // filters don't waste time on unused pixels. - var max = d; - var c2 = getCoords(this, dx + dw, dy); - var c3 = getCoords(this, dx, dy + dh); - var c4 = getCoords(this, dx + dw, dy + dh); - - max.x = m.max(max.x, c2.x, c3.x, c4.x); - max.y = m.max(max.y, c2.y, c3.y, c4.y); - - vmlStr.push('padding:0 ', mr(max.x / Z), 'px ', mr(max.y / Z), - 'px 0;filter:progid:DXImageTransform.Microsoft.Matrix(', - filter.join(''), ", sizingmethod='clip');"); - - } else { - vmlStr.push('top:', mr(d.y / Z), 'px;left:', mr(d.x / Z), 'px;'); - } - - vmlStr.push(' ">' , - '<g_vml_:image src="', image.src, '"', - ' style="width:', Z * dw, 'px;', - ' height:', Z * dh, 'px"', - ' cropleft="', sx / w, '"', - ' croptop="', sy / h, '"', - ' cropright="', (w - sx - sw) / w, '"', - ' cropbottom="', (h - sy - sh) / h, '"', - ' />', - '</g_vml_:group>'); - - this.element_.insertAdjacentHTML('BeforeEnd', vmlStr.join('')); - }; - - contextPrototype.stroke = function(aFill) { - var W = 10; - var H = 10; - // Divide the shape into chunks if it's too long because IE has a limit - // somewhere for how long a VML shape can be. This simple division does - // not work with fills, only strokes, unfortunately. - var chunkSize = 5000; - - var min = {x: null, y: null}; - var max = {x: null, y: null}; - - for (var j = 0; j < this.currentPath_.length; j += chunkSize) { - var lineStr = []; - var lineOpen = false; - - lineStr.push('<g_vml_:shape', - ' filled="', !!aFill, '"', - ' style="position:absolute;width:', W, 'px;height:', H, 'px;"', - ' coordorigin="0,0"', - ' coordsize="', Z * W, ',', Z * H, '"', - ' stroked="', !aFill, '"', - ' path="'); - - var newSeq = false; - - for (var i = j; i < Math.min(j + chunkSize, this.currentPath_.length); i++) { - if (i % chunkSize == 0 && i > 0) { // move into position for next chunk - lineStr.push(' m ', mr(this.currentPath_[i-1].x), ',', mr(this.currentPath_[i-1].y)); - } - - var p = this.currentPath_[i]; - var c; - - switch (p.type) { - case 'moveTo': - c = p; - lineStr.push(' m ', mr(p.x), ',', mr(p.y)); - break; - case 'lineTo': - lineStr.push(' l ', mr(p.x), ',', mr(p.y)); - break; - case 'close': - lineStr.push(' x '); - p = null; - break; - case 'bezierCurveTo': - lineStr.push(' c ', - mr(p.cp1x), ',', mr(p.cp1y), ',', - mr(p.cp2x), ',', mr(p.cp2y), ',', - mr(p.x), ',', mr(p.y)); - break; - case 'at': - case 'wa': - lineStr.push(' ', p.type, ' ', - mr(p.x - this.arcScaleX_ * p.radius), ',', - mr(p.y - this.arcScaleY_ * p.radius), ' ', - mr(p.x + this.arcScaleX_ * p.radius), ',', - mr(p.y + this.arcScaleY_ * p.radius), ' ', - mr(p.xStart), ',', mr(p.yStart), ' ', - mr(p.xEnd), ',', mr(p.yEnd)); - break; - } - - - // TODO: Following is broken for curves due to - // move to proper paths. - - // Figure out dimensions so we can do gradient fills - // properly - if (p) { - if (min.x == null || p.x < min.x) { - min.x = p.x; - } - if (max.x == null || p.x > max.x) { - max.x = p.x; - } - if (min.y == null || p.y < min.y) { - min.y = p.y; - } - if (max.y == null || p.y > max.y) { - max.y = p.y; - } - } - } - lineStr.push(' ">'); - - if (!aFill) { - appendStroke(this, lineStr); - } else { - appendFill(this, lineStr, min, max); - } - - lineStr.push('</g_vml_:shape>'); - - this.element_.insertAdjacentHTML('beforeEnd', lineStr.join('')); - } - }; - - function appendStroke(ctx, lineStr) { - var a = processStyle(ctx.strokeStyle); - var color = a.color; - var opacity = a.alpha * ctx.globalAlpha; - var lineWidth = ctx.lineScale_ * ctx.lineWidth; - - // VML cannot correctly render a line if the width is less than 1px. - // In that case, we dilute the color to make the line look thinner. - if (lineWidth < 1) { - opacity *= lineWidth; - } - - lineStr.push( - '<g_vml_:stroke', - ' opacity="', opacity, '"', - ' joinstyle="', ctx.lineJoin, '"', - ' miterlimit="', ctx.miterLimit, '"', - ' endcap="', processLineCap(ctx.lineCap), '"', - ' weight="', lineWidth, 'px"', - ' color="', color, '" />' - ); - } - - function appendFill(ctx, lineStr, min, max) { - var fillStyle = ctx.fillStyle; - var arcScaleX = ctx.arcScaleX_; - var arcScaleY = ctx.arcScaleY_; - var width = max.x - min.x; - var height = max.y - min.y; - if (fillStyle instanceof CanvasGradient_) { - // TODO: Gradients transformed with the transformation matrix. - var angle = 0; - var focus = {x: 0, y: 0}; - - // additional offset - var shift = 0; - // scale factor for offset - var expansion = 1; - - if (fillStyle.type_ == 'gradient') { - var x0 = fillStyle.x0_ / arcScaleX; - var y0 = fillStyle.y0_ / arcScaleY; - var x1 = fillStyle.x1_ / arcScaleX; - var y1 = fillStyle.y1_ / arcScaleY; - var p0 = getCoords(ctx, x0, y0); - var p1 = getCoords(ctx, x1, y1); - var dx = p1.x - p0.x; - var dy = p1.y - p0.y; - angle = Math.atan2(dx, dy) * 180 / Math.PI; - - // The angle should be a non-negative number. - if (angle < 0) { - angle += 360; - } - - // Very small angles produce an unexpected result because they are - // converted to a scientific notation string. - if (angle < 1e-6) { - angle = 0; - } - } else { - var p0 = getCoords(ctx, fillStyle.x0_, fillStyle.y0_); - focus = { - x: (p0.x - min.x) / width, - y: (p0.y - min.y) / height - }; - - width /= arcScaleX * Z; - height /= arcScaleY * Z; - var dimension = m.max(width, height); - shift = 2 * fillStyle.r0_ / dimension; - expansion = 2 * fillStyle.r1_ / dimension - shift; - } - - // We need to sort the color stops in ascending order by offset, - // otherwise IE won't interpret it correctly. - var stops = fillStyle.colors_; - stops.sort(function(cs1, cs2) { - return cs1.offset - cs2.offset; - }); - - var length = stops.length; - var color1 = stops[0].color; - var color2 = stops[length - 1].color; - var opacity1 = stops[0].alpha * ctx.globalAlpha; - var opacity2 = stops[length - 1].alpha * ctx.globalAlpha; - - var colors = []; - for (var i = 0; i < length; i++) { - var stop = stops[i]; - colors.push(stop.offset * expansion + shift + ' ' + stop.color); - } - - // When colors attribute is used, the meanings of opacity and o:opacity2 - // are reversed. - lineStr.push('<g_vml_:fill type="', fillStyle.type_, '"', - ' method="none" focus="100%"', - ' color="', color1, '"', - ' color2="', color2, '"', - ' colors="', colors.join(','), '"', - ' opacity="', opacity2, '"', - ' g_o_:opacity2="', opacity1, '"', - ' angle="', angle, '"', - ' focusposition="', focus.x, ',', focus.y, '" />'); - } else if (fillStyle instanceof CanvasPattern_) { - if (width && height) { - var deltaLeft = -min.x; - var deltaTop = -min.y; - lineStr.push('<g_vml_:fill', - ' position="', - deltaLeft / width * arcScaleX * arcScaleX, ',', - deltaTop / height * arcScaleY * arcScaleY, '"', - ' type="tile"', - // TODO: Figure out the correct size to fit the scale. - //' size="', w, 'px ', h, 'px"', - ' src="', fillStyle.src_, '" />'); - } - } else { - var a = processStyle(ctx.fillStyle); - var color = a.color; - var opacity = a.alpha * ctx.globalAlpha; - lineStr.push('<g_vml_:fill color="', color, '" opacity="', opacity, - '" />'); - } - } - - contextPrototype.fill = function() { - this.stroke(true); - }; - - contextPrototype.closePath = function() { - this.currentPath_.push({type: 'close'}); - }; - - function getCoords(ctx, aX, aY) { - var m = ctx.m_; - return { - x: Z * (aX * m[0][0] + aY * m[1][0] + m[2][0]) - Z2, - y: Z * (aX * m[0][1] + aY * m[1][1] + m[2][1]) - Z2 - }; - } - contextPrototype.save = function() { - var o = {}; - copyState(this, o); - this.aStack_.push(o); - this.mStack_.push(this.m_); - this.m_ = matrixMultiply(createMatrixIdentity(), this.m_); - }; - - contextPrototype.restore = function() { - if (this.aStack_.length) { - copyState(this.aStack_.pop(), this); - this.m_ = this.mStack_.pop(); - } - }; - - function matrixIsFinite(m) { - return isFinite(m[0][0]) && isFinite(m[0][1]) && - isFinite(m[1][0]) && isFinite(m[1][1]) && - isFinite(m[2][0]) && isFinite(m[2][1]); - } - - function setM(ctx, m, updateLineScale) { - if (!matrixIsFinite(m)) { - return; - } - ctx.m_ = m; - - if (updateLineScale) { - // Get the line scale. - // Determinant of this.m_ means how much the area is enlarged by the - // transformation. So its square root can be used as a scale factor - // for width. - var det = m[0][0] * m[1][1] - m[0][1] * m[1][0]; - ctx.lineScale_ = sqrt(abs(det)); - } - } - - contextPrototype.translate = function(aX, aY) { - var m1 = [ - [1, 0, 0], - [0, 1, 0], - [aX, aY, 1] - ]; - - setM(this, matrixMultiply(m1, this.m_), false); - }; - - contextPrototype.rotate = function(aRot) { - var c = mc(aRot); - var s = ms(aRot); - - var m1 = [ - [c, s, 0], - [-s, c, 0], - [0, 0, 1] - ]; - - setM(this, matrixMultiply(m1, this.m_), false); - }; - - contextPrototype.scale = function(aX, aY) { - this.arcScaleX_ *= aX; - this.arcScaleY_ *= aY; - var m1 = [ - [aX, 0, 0], - [0, aY, 0], - [0, 0, 1] - ]; - - setM(this, matrixMultiply(m1, this.m_), true); - }; - - contextPrototype.transform = function(m11, m12, m21, m22, dx, dy) { - var m1 = [ - [m11, m12, 0], - [m21, m22, 0], - [dx, dy, 1] - ]; - - setM(this, matrixMultiply(m1, this.m_), true); - }; - - contextPrototype.setTransform = function(m11, m12, m21, m22, dx, dy) { - var m = [ - [m11, m12, 0], - [m21, m22, 0], - [dx, dy, 1] - ]; - - setM(this, m, true); - }; - - /** - * The text drawing function. - * The maxWidth argument isn't taken in account, since no browser supports - * it yet. - */ - contextPrototype.drawText_ = function(text, x, y, maxWidth, stroke) { - var m = this.m_, - delta = 1000, - left = 0, - right = delta, - offset = {x: 0, y: 0}, - lineStr = []; - - var fontStyle = getComputedStyle(processFontStyle(this.font), - this.element_); - - var fontStyleString = buildStyle(fontStyle); - - var elementStyle = this.element_.currentStyle; - var textAlign = this.textAlign.toLowerCase(); - switch (textAlign) { - case 'left': - case 'center': - case 'right': - break; - case 'end': - textAlign = elementStyle.direction == 'ltr' ? 'right' : 'left'; - break; - case 'start': - textAlign = elementStyle.direction == 'rtl' ? 'right' : 'left'; - break; - default: - textAlign = 'left'; - } - - // 1.75 is an arbitrary number, as there is no info about the text baseline - switch (this.textBaseline) { - case 'hanging': - case 'top': - offset.y = fontStyle.size / 1.75; - break; - case 'middle': - break; - default: - case null: - case 'alphabetic': - case 'ideographic': - case 'bottom': - offset.y = -fontStyle.size / 2.25; - break; - } - - switch(textAlign) { - case 'right': - left = delta; - right = 0.05; - break; - case 'center': - left = right = delta / 2; - break; - } - - var d = getCoords(this, x + offset.x, y + offset.y); - - lineStr.push('<g_vml_:line from="', -left ,' 0" to="', right ,' 0.05" ', - ' coordsize="100 100" coordorigin="0 0"', - ' filled="', !stroke, '" stroked="', !!stroke, - '" style="position:absolute;width:1px;height:1px;">'); - - if (stroke) { - appendStroke(this, lineStr); - } else { - // TODO: Fix the min and max params. - appendFill(this, lineStr, {x: -left, y: 0}, - {x: right, y: fontStyle.size}); - } - - var skewM = m[0][0].toFixed(3) + ',' + m[1][0].toFixed(3) + ',' + - m[0][1].toFixed(3) + ',' + m[1][1].toFixed(3) + ',0,0'; - - var skewOffset = mr(d.x / Z) + ',' + mr(d.y / Z); - - lineStr.push('<g_vml_:skew on="t" matrix="', skewM ,'" ', - ' offset="', skewOffset, '" origin="', left ,' 0" />', - '<g_vml_:path textpathok="true" />', - '<g_vml_:textpath on="true" string="', - encodeHtmlAttribute(text), - '" style="v-text-align:', textAlign, - ';font:', encodeHtmlAttribute(fontStyleString), - '" /></g_vml_:line>'); - - this.element_.insertAdjacentHTML('beforeEnd', lineStr.join('')); - }; - - contextPrototype.fillText = function(text, x, y, maxWidth) { - this.drawText_(text, x, y, maxWidth, false); - }; - - contextPrototype.strokeText = function(text, x, y, maxWidth) { - this.drawText_(text, x, y, maxWidth, true); - }; - - contextPrototype.measureText = function(text) { - if (!this.textMeasureEl_) { - var s = '<span style="position:absolute;' + - 'top:-20000px;left:0;padding:0;margin:0;border:none;' + - 'white-space:pre;"></span>'; - this.element_.insertAdjacentHTML('beforeEnd', s); - this.textMeasureEl_ = this.element_.lastChild; - } - var doc = this.element_.ownerDocument; - this.textMeasureEl_.innerHTML = ''; - this.textMeasureEl_.style.font = this.font; - // Don't use innerHTML or innerText because they allow markup/whitespace. - this.textMeasureEl_.appendChild(doc.createTextNode(text)); - return {width: this.textMeasureEl_.offsetWidth}; - }; - - /******** STUBS ********/ - contextPrototype.clip = function() { - // TODO: Implement - }; - - contextPrototype.arcTo = function() { - // TODO: Implement - }; - - contextPrototype.createPattern = function(image, repetition) { - return new CanvasPattern_(image, repetition); - }; - - // Gradient / Pattern Stubs - function CanvasGradient_(aType) { - this.type_ = aType; - this.x0_ = 0; - this.y0_ = 0; - this.r0_ = 0; - this.x1_ = 0; - this.y1_ = 0; - this.r1_ = 0; - this.colors_ = []; - } - - CanvasGradient_.prototype.addColorStop = function(aOffset, aColor) { - aColor = processStyle(aColor); - this.colors_.push({offset: aOffset, - color: aColor.color, - alpha: aColor.alpha}); - }; - - function CanvasPattern_(image, repetition) { - assertImageIsValid(image); - switch (repetition) { - case 'repeat': - case null: - case '': - this.repetition_ = 'repeat'; - break; - case 'repeat-x': - case 'repeat-y': - case 'no-repeat': - this.repetition_ = repetition; - break; - default: - throwException('SYNTAX_ERR'); - } - - this.src_ = image.src; - this.width_ = image.width; - this.height_ = image.height; - } - - function throwException(s) { - throw new DOMException_(s); - } - - function assertImageIsValid(img) { - if (!img || img.nodeType != 1 || img.tagName != 'IMG') { - throwException('TYPE_MISMATCH_ERR'); - } - if (img.readyState != 'complete') { - throwException('INVALID_STATE_ERR'); - } - } - - function DOMException_(s) { - this.code = this[s]; - this.message = s +': DOM Exception ' + this.code; - } - var p = DOMException_.prototype = new Error; - p.INDEX_SIZE_ERR = 1; - p.DOMSTRING_SIZE_ERR = 2; - p.HIERARCHY_REQUEST_ERR = 3; - p.WRONG_DOCUMENT_ERR = 4; - p.INVALID_CHARACTER_ERR = 5; - p.NO_DATA_ALLOWED_ERR = 6; - p.NO_MODIFICATION_ALLOWED_ERR = 7; - p.NOT_FOUND_ERR = 8; - p.NOT_SUPPORTED_ERR = 9; - p.INUSE_ATTRIBUTE_ERR = 10; - p.INVALID_STATE_ERR = 11; - p.SYNTAX_ERR = 12; - p.INVALID_MODIFICATION_ERR = 13; - p.NAMESPACE_ERR = 14; - p.INVALID_ACCESS_ERR = 15; - p.VALIDATION_ERR = 16; - p.TYPE_MISMATCH_ERR = 17; - - // set up externs - G_vmlCanvasManager = G_vmlCanvasManager_; - CanvasRenderingContext2D = CanvasRenderingContext2D_; - CanvasGradient = CanvasGradient_; - CanvasPattern = CanvasPattern_; - DOMException = DOMException_; -})(); - -} // if diff --git a/assets/plugins/flot/excanvas.min.js b/assets/plugins/flot/excanvas.min.js deleted file mode 100644 index fcf876c7..00000000 --- a/assets/plugins/flot/excanvas.min.js +++ /dev/null @@ -1 +0,0 @@ -if(!document.createElement("canvas").getContext){(function(){var ab=Math;var n=ab.round;var l=ab.sin;var A=ab.cos;var H=ab.abs;var N=ab.sqrt;var d=10;var f=d/2;var z=+navigator.userAgent.match(/MSIE ([\d.]+)?/)[1];function y(){return this.context_||(this.context_=new D(this))}var t=Array.prototype.slice;function g(j,m,p){var i=t.call(arguments,2);return function(){return j.apply(m,i.concat(t.call(arguments)))}}function af(i){return String(i).replace(/&/g,"&amp;").replace(/"/g,"&quot;")}function Y(m,j,i){if(!m.namespaces[j]){m.namespaces.add(j,i,"#default#VML")}}function R(j){Y(j,"g_vml_","urn:schemas-microsoft-com:vml");Y(j,"g_o_","urn:schemas-microsoft-com:office:office");if(!j.styleSheets.ex_canvas_){var i=j.createStyleSheet();i.owningElement.id="ex_canvas_";i.cssText="canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}"}}R(document);var e={init:function(i){var j=i||document;j.createElement("canvas");j.attachEvent("onreadystatechange",g(this.init_,this,j))},init_:function(p){var m=p.getElementsByTagName("canvas");for(var j=0;j<m.length;j++){this.initElement(m[j])}},initElement:function(j){if(!j.getContext){j.getContext=y;R(j.ownerDocument);j.innerHTML="";j.attachEvent("onpropertychange",x);j.attachEvent("onresize",W);var i=j.attributes;if(i.width&&i.width.specified){j.style.width=i.width.nodeValue+"px"}else{j.width=j.clientWidth}if(i.height&&i.height.specified){j.style.height=i.height.nodeValue+"px"}else{j.height=j.clientHeight}}return j}};function x(j){var i=j.srcElement;switch(j.propertyName){case"width":i.getContext().clearRect();i.style.width=i.attributes.width.nodeValue+"px";i.firstChild.style.width=i.clientWidth+"px";break;case"height":i.getContext().clearRect();i.style.height=i.attributes.height.nodeValue+"px";i.firstChild.style.height=i.clientHeight+"px";break}}function W(j){var i=j.srcElement;if(i.firstChild){i.firstChild.style.width=i.clientWidth+"px";i.firstChild.style.height=i.clientHeight+"px"}}e.init();var k=[];for(var ae=0;ae<16;ae++){for(var ad=0;ad<16;ad++){k[ae*16+ad]=ae.toString(16)+ad.toString(16)}}function B(){return[[1,0,0],[0,1,0],[0,0,1]]}function J(p,m){var j=B();for(var i=0;i<3;i++){for(var ah=0;ah<3;ah++){var Z=0;for(var ag=0;ag<3;ag++){Z+=p[i][ag]*m[ag][ah]}j[i][ah]=Z}}return j}function v(j,i){i.fillStyle=j.fillStyle;i.lineCap=j.lineCap;i.lineJoin=j.lineJoin;i.lineWidth=j.lineWidth;i.miterLimit=j.miterLimit;i.shadowBlur=j.shadowBlur;i.shadowColor=j.shadowColor;i.shadowOffsetX=j.shadowOffsetX;i.shadowOffsetY=j.shadowOffsetY;i.strokeStyle=j.strokeStyle;i.globalAlpha=j.globalAlpha;i.font=j.font;i.textAlign=j.textAlign;i.textBaseline=j.textBaseline;i.arcScaleX_=j.arcScaleX_;i.arcScaleY_=j.arcScaleY_;i.lineScale_=j.lineScale_}var b={aliceblue:"#F0F8FF",antiquewhite:"#FAEBD7",aquamarine:"#7FFFD4",azure:"#F0FFFF",beige:"#F5F5DC",bisque:"#FFE4C4",black:"#000000",blanchedalmond:"#FFEBCD",blueviolet:"#8A2BE2",brown:"#A52A2A",burlywood:"#DEB887",cadetblue:"#5F9EA0",chartreuse:"#7FFF00",chocolate:"#D2691E",coral:"#FF7F50",cornflowerblue:"#6495ED",cornsilk:"#FFF8DC",crimson:"#DC143C",cyan:"#00FFFF",darkblue:"#00008B",darkcyan:"#008B8B",darkgoldenrod:"#B8860B",darkgray:"#A9A9A9",darkgreen:"#006400",darkgrey:"#A9A9A9",darkkhaki:"#BDB76B",darkmagenta:"#8B008B",darkolivegreen:"#556B2F",darkorange:"#FF8C00",darkorchid:"#9932CC",darkred:"#8B0000",darksalmon:"#E9967A",darkseagreen:"#8FBC8F",darkslateblue:"#483D8B",darkslategray:"#2F4F4F",darkslategrey:"#2F4F4F",darkturquoise:"#00CED1",darkviolet:"#9400D3",deeppink:"#FF1493",deepskyblue:"#00BFFF",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1E90FF",firebrick:"#B22222",floralwhite:"#FFFAF0",forestgreen:"#228B22",gainsboro:"#DCDCDC",ghostwhite:"#F8F8FF",gold:"#FFD700",goldenrod:"#DAA520",grey:"#808080",greenyellow:"#ADFF2F",honeydew:"#F0FFF0",hotpink:"#FF69B4",indianred:"#CD5C5C",indigo:"#4B0082",ivory:"#FFFFF0",khaki:"#F0E68C",lavender:"#E6E6FA",lavenderblush:"#FFF0F5",lawngreen:"#7CFC00",lemonchiffon:"#FFFACD",lightblue:"#ADD8E6",lightcoral:"#F08080",lightcyan:"#E0FFFF",lightgoldenrodyellow:"#FAFAD2",lightgreen:"#90EE90",lightgrey:"#D3D3D3",lightpink:"#FFB6C1",lightsalmon:"#FFA07A",lightseagreen:"#20B2AA",lightskyblue:"#87CEFA",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#B0C4DE",lightyellow:"#FFFFE0",limegreen:"#32CD32",linen:"#FAF0E6",magenta:"#FF00FF",mediumaquamarine:"#66CDAA",mediumblue:"#0000CD",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",mediumseagreen:"#3CB371",mediumslateblue:"#7B68EE",mediumspringgreen:"#00FA9A",mediumturquoise:"#48D1CC",mediumvioletred:"#C71585",midnightblue:"#191970",mintcream:"#F5FFFA",mistyrose:"#FFE4E1",moccasin:"#FFE4B5",navajowhite:"#FFDEAD",oldlace:"#FDF5E6",olivedrab:"#6B8E23",orange:"#FFA500",orangered:"#FF4500",orchid:"#DA70D6",palegoldenrod:"#EEE8AA",palegreen:"#98FB98",paleturquoise:"#AFEEEE",palevioletred:"#DB7093",papayawhip:"#FFEFD5",peachpuff:"#FFDAB9",peru:"#CD853F",pink:"#FFC0CB",plum:"#DDA0DD",powderblue:"#B0E0E6",rosybrown:"#BC8F8F",royalblue:"#4169E1",saddlebrown:"#8B4513",salmon:"#FA8072",sandybrown:"#F4A460",seagreen:"#2E8B57",seashell:"#FFF5EE",sienna:"#A0522D",skyblue:"#87CEEB",slateblue:"#6A5ACD",slategray:"#708090",slategrey:"#708090",snow:"#FFFAFA",springgreen:"#00FF7F",steelblue:"#4682B4",tan:"#D2B48C",thistle:"#D8BFD8",tomato:"#FF6347",turquoise:"#40E0D0",violet:"#EE82EE",wheat:"#F5DEB3",whitesmoke:"#F5F5F5",yellowgreen:"#9ACD32"};function M(j){var p=j.indexOf("(",3);var i=j.indexOf(")",p+1);var m=j.substring(p+1,i).split(",");if(m.length!=4||j.charAt(3)!="a"){m[3]=1}return m}function c(i){return parseFloat(i)/100}function r(j,m,i){return Math.min(i,Math.max(m,j))}function I(ag){var i,ai,aj,ah,ak,Z;ah=parseFloat(ag[0])/360%360;if(ah<0){ah++}ak=r(c(ag[1]),0,1);Z=r(c(ag[2]),0,1);if(ak==0){i=ai=aj=Z}else{var j=Z<0.5?Z*(1+ak):Z+ak-Z*ak;var m=2*Z-j;i=a(m,j,ah+1/3);ai=a(m,j,ah);aj=a(m,j,ah-1/3)}return"#"+k[Math.floor(i*255)]+k[Math.floor(ai*255)]+k[Math.floor(aj*255)]}function a(j,i,m){if(m<0){m++}if(m>1){m--}if(6*m<1){return j+(i-j)*6*m}else{if(2*m<1){return i}else{if(3*m<2){return j+(i-j)*(2/3-m)*6}else{return j}}}}var C={};function F(j){if(j in C){return C[j]}var ag,Z=1;j=String(j);if(j.charAt(0)=="#"){ag=j}else{if(/^rgb/.test(j)){var p=M(j);var ag="#",ah;for(var m=0;m<3;m++){if(p[m].indexOf("%")!=-1){ah=Math.floor(c(p[m])*255)}else{ah=+p[m]}ag+=k[r(ah,0,255)]}Z=+p[3]}else{if(/^hsl/.test(j)){var p=M(j);ag=I(p);Z=p[3]}else{ag=b[j]||j}}}return C[j]={color:ag,alpha:Z}}var o={style:"normal",variant:"normal",weight:"normal",size:10,family:"sans-serif"};var L={};function E(i){if(L[i]){return L[i]}var p=document.createElement("div");var m=p.style;try{m.font=i}catch(j){}return L[i]={style:m.fontStyle||o.style,variant:m.fontVariant||o.variant,weight:m.fontWeight||o.weight,size:m.fontSize||o.size,family:m.fontFamily||o.family}}function u(m,j){var i={};for(var ah in m){i[ah]=m[ah]}var ag=parseFloat(j.currentStyle.fontSize),Z=parseFloat(m.size);if(typeof m.size=="number"){i.size=m.size}else{if(m.size.indexOf("px")!=-1){i.size=Z}else{if(m.size.indexOf("em")!=-1){i.size=ag*Z}else{if(m.size.indexOf("%")!=-1){i.size=(ag/100)*Z}else{if(m.size.indexOf("pt")!=-1){i.size=Z/0.75}else{i.size=ag}}}}}i.size*=0.981;return i}function ac(i){return i.style+" "+i.variant+" "+i.weight+" "+i.size+"px "+i.family}var s={butt:"flat",round:"round"};function S(i){return s[i]||"square"}function D(i){this.m_=B();this.mStack_=[];this.aStack_=[];this.currentPath_=[];this.strokeStyle="#000";this.fillStyle="#000";this.lineWidth=1;this.lineJoin="miter";this.lineCap="butt";this.miterLimit=d*1;this.globalAlpha=1;this.font="10px sans-serif";this.textAlign="left";this.textBaseline="alphabetic";this.canvas=i;var m="width:"+i.clientWidth+"px;height:"+i.clientHeight+"px;overflow:hidden;position:absolute";var j=i.ownerDocument.createElement("div");j.style.cssText=m;i.appendChild(j);var p=j.cloneNode(false);p.style.backgroundColor="red";p.style.filter="alpha(opacity=0)";i.appendChild(p);this.element_=j;this.arcScaleX_=1;this.arcScaleY_=1;this.lineScale_=1}var q=D.prototype;q.clearRect=function(){if(this.textMeasureEl_){this.textMeasureEl_.removeNode(true);this.textMeasureEl_=null}this.element_.innerHTML=""};q.beginPath=function(){this.currentPath_=[]};q.moveTo=function(j,i){var m=V(this,j,i);this.currentPath_.push({type:"moveTo",x:m.x,y:m.y});this.currentX_=m.x;this.currentY_=m.y};q.lineTo=function(j,i){var m=V(this,j,i);this.currentPath_.push({type:"lineTo",x:m.x,y:m.y});this.currentX_=m.x;this.currentY_=m.y};q.bezierCurveTo=function(m,j,ak,aj,ai,ag){var i=V(this,ai,ag);var ah=V(this,m,j);var Z=V(this,ak,aj);K(this,ah,Z,i)};function K(i,Z,m,j){i.currentPath_.push({type:"bezierCurveTo",cp1x:Z.x,cp1y:Z.y,cp2x:m.x,cp2y:m.y,x:j.x,y:j.y});i.currentX_=j.x;i.currentY_=j.y}q.quadraticCurveTo=function(ai,m,j,i){var ah=V(this,ai,m);var ag=V(this,j,i);var aj={x:this.currentX_+2/3*(ah.x-this.currentX_),y:this.currentY_+2/3*(ah.y-this.currentY_)};var Z={x:aj.x+(ag.x-this.currentX_)/3,y:aj.y+(ag.y-this.currentY_)/3};K(this,aj,Z,ag)};q.arc=function(al,aj,ak,ag,j,m){ak*=d;var ap=m?"at":"wa";var am=al+A(ag)*ak-f;var ao=aj+l(ag)*ak-f;var i=al+A(j)*ak-f;var an=aj+l(j)*ak-f;if(am==i&&!m){am+=0.125}var Z=V(this,al,aj);var ai=V(this,am,ao);var ah=V(this,i,an);this.currentPath_.push({type:ap,x:Z.x,y:Z.y,radius:ak,xStart:ai.x,yStart:ai.y,xEnd:ah.x,yEnd:ah.y})};q.rect=function(m,j,i,p){this.moveTo(m,j);this.lineTo(m+i,j);this.lineTo(m+i,j+p);this.lineTo(m,j+p);this.closePath()};q.strokeRect=function(m,j,i,p){var Z=this.currentPath_;this.beginPath();this.moveTo(m,j);this.lineTo(m+i,j);this.lineTo(m+i,j+p);this.lineTo(m,j+p);this.closePath();this.stroke();this.currentPath_=Z};q.fillRect=function(m,j,i,p){var Z=this.currentPath_;this.beginPath();this.moveTo(m,j);this.lineTo(m+i,j);this.lineTo(m+i,j+p);this.lineTo(m,j+p);this.closePath();this.fill();this.currentPath_=Z};q.createLinearGradient=function(j,p,i,m){var Z=new U("gradient");Z.x0_=j;Z.y0_=p;Z.x1_=i;Z.y1_=m;return Z};q.createRadialGradient=function(p,ag,m,j,Z,i){var ah=new U("gradientradial");ah.x0_=p;ah.y0_=ag;ah.r0_=m;ah.x1_=j;ah.y1_=Z;ah.r1_=i;return ah};q.drawImage=function(aq,m){var aj,ah,al,ay,ao,am,at,aA;var ak=aq.runtimeStyle.width;var ap=aq.runtimeStyle.height;aq.runtimeStyle.width="auto";aq.runtimeStyle.height="auto";var ai=aq.width;var aw=aq.height;aq.runtimeStyle.width=ak;aq.runtimeStyle.height=ap;if(arguments.length==3){aj=arguments[1];ah=arguments[2];ao=am=0;at=al=ai;aA=ay=aw}else{if(arguments.length==5){aj=arguments[1];ah=arguments[2];al=arguments[3];ay=arguments[4];ao=am=0;at=ai;aA=aw}else{if(arguments.length==9){ao=arguments[1];am=arguments[2];at=arguments[3];aA=arguments[4];aj=arguments[5];ah=arguments[6];al=arguments[7];ay=arguments[8]}else{throw Error("Invalid number of arguments")}}}var az=V(this,aj,ah);var p=at/2;var j=aA/2;var ax=[];var i=10;var ag=10;ax.push(" <g_vml_:group",' coordsize="',d*i,",",d*ag,'"',' coordorigin="0,0"',' style="width:',i,"px;height:",ag,"px;position:absolute;");if(this.m_[0][0]!=1||this.m_[0][1]||this.m_[1][1]!=1||this.m_[1][0]){var Z=[];Z.push("M11=",this.m_[0][0],",","M12=",this.m_[1][0],",","M21=",this.m_[0][1],",","M22=",this.m_[1][1],",","Dx=",n(az.x/d),",","Dy=",n(az.y/d),"");var av=az;var au=V(this,aj+al,ah);var ar=V(this,aj,ah+ay);var an=V(this,aj+al,ah+ay);av.x=ab.max(av.x,au.x,ar.x,an.x);av.y=ab.max(av.y,au.y,ar.y,an.y);ax.push("padding:0 ",n(av.x/d),"px ",n(av.y/d),"px 0;filter:progid:DXImageTransform.Microsoft.Matrix(",Z.join(""),", sizingmethod='clip');")}else{ax.push("top:",n(az.y/d),"px;left:",n(az.x/d),"px;")}ax.push(' ">','<g_vml_:image src="',aq.src,'"',' style="width:',d*al,"px;"," height:",d*ay,'px"',' cropleft="',ao/ai,'"',' croptop="',am/aw,'"',' cropright="',(ai-ao-at)/ai,'"',' cropbottom="',(aw-am-aA)/aw,'"'," />","</g_vml_:group>");this.element_.insertAdjacentHTML("BeforeEnd",ax.join(""))};q.stroke=function(ao){var Z=10;var ap=10;var ag=5000;var ai={x:null,y:null};var an={x:null,y:null};for(var aj=0;aj<this.currentPath_.length;aj+=ag){var am=[];var ah=false;am.push("<g_vml_:shape",' filled="',!!ao,'"',' style="position:absolute;width:',Z,"px;height:",ap,'px;"',' coordorigin="0,0"',' coordsize="',d*Z,",",d*ap,'"',' stroked="',!ao,'"',' path="');var aq=false;for(var ak=aj;ak<Math.min(aj+ag,this.currentPath_.length);ak++){if(ak%ag==0&&ak>0){am.push(" m ",n(this.currentPath_[ak-1].x),",",n(this.currentPath_[ak-1].y))}var m=this.currentPath_[ak];var al;switch(m.type){case"moveTo":al=m;am.push(" m ",n(m.x),",",n(m.y));break;case"lineTo":am.push(" l ",n(m.x),",",n(m.y));break;case"close":am.push(" x ");m=null;break;case"bezierCurveTo":am.push(" c ",n(m.cp1x),",",n(m.cp1y),",",n(m.cp2x),",",n(m.cp2y),",",n(m.x),",",n(m.y));break;case"at":case"wa":am.push(" ",m.type," ",n(m.x-this.arcScaleX_*m.radius),",",n(m.y-this.arcScaleY_*m.radius)," ",n(m.x+this.arcScaleX_*m.radius),",",n(m.y+this.arcScaleY_*m.radius)," ",n(m.xStart),",",n(m.yStart)," ",n(m.xEnd),",",n(m.yEnd));break}if(m){if(ai.x==null||m.x<ai.x){ai.x=m.x}if(an.x==null||m.x>an.x){an.x=m.x}if(ai.y==null||m.y<ai.y){ai.y=m.y}if(an.y==null||m.y>an.y){an.y=m.y}}}am.push(' ">');if(!ao){w(this,am)}else{G(this,am,ai,an)}am.push("</g_vml_:shape>");this.element_.insertAdjacentHTML("beforeEnd",am.join(""))}};function w(m,ag){var j=F(m.strokeStyle);var p=j.color;var Z=j.alpha*m.globalAlpha;var i=m.lineScale_*m.lineWidth;if(i<1){Z*=i}ag.push("<g_vml_:stroke",' opacity="',Z,'"',' joinstyle="',m.lineJoin,'"',' miterlimit="',m.miterLimit,'"',' endcap="',S(m.lineCap),'"',' weight="',i,'px"',' color="',p,'" />')}function G(aq,ai,aK,ar){var aj=aq.fillStyle;var aB=aq.arcScaleX_;var aA=aq.arcScaleY_;var j=ar.x-aK.x;var p=ar.y-aK.y;if(aj instanceof U){var an=0;var aF={x:0,y:0};var ax=0;var am=1;if(aj.type_=="gradient"){var al=aj.x0_/aB;var m=aj.y0_/aA;var ak=aj.x1_/aB;var aM=aj.y1_/aA;var aJ=V(aq,al,m);var aI=V(aq,ak,aM);var ag=aI.x-aJ.x;var Z=aI.y-aJ.y;an=Math.atan2(ag,Z)*180/Math.PI;if(an<0){an+=360}if(an<0.000001){an=0}}else{var aJ=V(aq,aj.x0_,aj.y0_);aF={x:(aJ.x-aK.x)/j,y:(aJ.y-aK.y)/p};j/=aB*d;p/=aA*d;var aD=ab.max(j,p);ax=2*aj.r0_/aD;am=2*aj.r1_/aD-ax}var av=aj.colors_;av.sort(function(aN,i){return aN.offset-i.offset});var ap=av.length;var au=av[0].color;var at=av[ap-1].color;var az=av[0].alpha*aq.globalAlpha;var ay=av[ap-1].alpha*aq.globalAlpha;var aE=[];for(var aH=0;aH<ap;aH++){var ao=av[aH];aE.push(ao.offset*am+ax+" "+ao.color)}ai.push('<g_vml_:fill type="',aj.type_,'"',' method="none" focus="100%"',' color="',au,'"',' color2="',at,'"',' colors="',aE.join(","),'"',' opacity="',ay,'"',' g_o_:opacity2="',az,'"',' angle="',an,'"',' focusposition="',aF.x,",",aF.y,'" />')}else{if(aj instanceof T){if(j&&p){var ah=-aK.x;var aC=-aK.y;ai.push("<g_vml_:fill",' position="',ah/j*aB*aB,",",aC/p*aA*aA,'"',' type="tile"',' src="',aj.src_,'" />')}}else{var aL=F(aq.fillStyle);var aw=aL.color;var aG=aL.alpha*aq.globalAlpha;ai.push('<g_vml_:fill color="',aw,'" opacity="',aG,'" />')}}}q.fill=function(){this.stroke(true)};q.closePath=function(){this.currentPath_.push({type:"close"})};function V(j,Z,p){var i=j.m_;return{x:d*(Z*i[0][0]+p*i[1][0]+i[2][0])-f,y:d*(Z*i[0][1]+p*i[1][1]+i[2][1])-f}}q.save=function(){var i={};v(this,i);this.aStack_.push(i);this.mStack_.push(this.m_);this.m_=J(B(),this.m_)};q.restore=function(){if(this.aStack_.length){v(this.aStack_.pop(),this);this.m_=this.mStack_.pop()}};function h(i){return isFinite(i[0][0])&&isFinite(i[0][1])&&isFinite(i[1][0])&&isFinite(i[1][1])&&isFinite(i[2][0])&&isFinite(i[2][1])}function aa(j,i,p){if(!h(i)){return}j.m_=i;if(p){var Z=i[0][0]*i[1][1]-i[0][1]*i[1][0];j.lineScale_=N(H(Z))}}q.translate=function(m,j){var i=[[1,0,0],[0,1,0],[m,j,1]];aa(this,J(i,this.m_),false)};q.rotate=function(j){var p=A(j);var m=l(j);var i=[[p,m,0],[-m,p,0],[0,0,1]];aa(this,J(i,this.m_),false)};q.scale=function(m,j){this.arcScaleX_*=m;this.arcScaleY_*=j;var i=[[m,0,0],[0,j,0],[0,0,1]];aa(this,J(i,this.m_),true)};q.transform=function(Z,p,ah,ag,j,i){var m=[[Z,p,0],[ah,ag,0],[j,i,1]];aa(this,J(m,this.m_),true)};q.setTransform=function(ag,Z,ai,ah,p,j){var i=[[ag,Z,0],[ai,ah,0],[p,j,1]];aa(this,i,true)};q.drawText_=function(am,ak,aj,ap,ai){var ao=this.m_,at=1000,j=0,ar=at,ah={x:0,y:0},ag=[];var i=u(E(this.font),this.element_);var p=ac(i);var au=this.element_.currentStyle;var Z=this.textAlign.toLowerCase();switch(Z){case"left":case"center":case"right":break;case"end":Z=au.direction=="ltr"?"right":"left";break;case"start":Z=au.direction=="rtl"?"right":"left";break;default:Z="left"}switch(this.textBaseline){case"hanging":case"top":ah.y=i.size/1.75;break;case"middle":break;default:case null:case"alphabetic":case"ideographic":case"bottom":ah.y=-i.size/2.25;break}switch(Z){case"right":j=at;ar=0.05;break;case"center":j=ar=at/2;break}var aq=V(this,ak+ah.x,aj+ah.y);ag.push('<g_vml_:line from="',-j,' 0" to="',ar,' 0.05" ',' coordsize="100 100" coordorigin="0 0"',' filled="',!ai,'" stroked="',!!ai,'" style="position:absolute;width:1px;height:1px;">');if(ai){w(this,ag)}else{G(this,ag,{x:-j,y:0},{x:ar,y:i.size})}var an=ao[0][0].toFixed(3)+","+ao[1][0].toFixed(3)+","+ao[0][1].toFixed(3)+","+ao[1][1].toFixed(3)+",0,0";var al=n(aq.x/d)+","+n(aq.y/d);ag.push('<g_vml_:skew on="t" matrix="',an,'" ',' offset="',al,'" origin="',j,' 0" />','<g_vml_:path textpathok="true" />','<g_vml_:textpath on="true" string="',af(am),'" style="v-text-align:',Z,";font:",af(p),'" /></g_vml_:line>');this.element_.insertAdjacentHTML("beforeEnd",ag.join(""))};q.fillText=function(m,i,p,j){this.drawText_(m,i,p,j,false)};q.strokeText=function(m,i,p,j){this.drawText_(m,i,p,j,true)};q.measureText=function(m){if(!this.textMeasureEl_){var i='<span style="position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;"></span>';this.element_.insertAdjacentHTML("beforeEnd",i);this.textMeasureEl_=this.element_.lastChild}var j=this.element_.ownerDocument;this.textMeasureEl_.innerHTML="";this.textMeasureEl_.style.font=this.font;this.textMeasureEl_.appendChild(j.createTextNode(m));return{width:this.textMeasureEl_.offsetWidth}};q.clip=function(){};q.arcTo=function(){};q.createPattern=function(j,i){return new T(j,i)};function U(i){this.type_=i;this.x0_=0;this.y0_=0;this.r0_=0;this.x1_=0;this.y1_=0;this.r1_=0;this.colors_=[]}U.prototype.addColorStop=function(j,i){i=F(i);this.colors_.push({offset:j,color:i.color,alpha:i.alpha})};function T(j,i){Q(j);switch(i){case"repeat":case null:case"":this.repetition_="repeat";break;case"repeat-x":case"repeat-y":case"no-repeat":this.repetition_=i;break;default:O("SYNTAX_ERR")}this.src_=j.src;this.width_=j.width;this.height_=j.height}function O(i){throw new P(i)}function Q(i){if(!i||i.nodeType!=1||i.tagName!="IMG"){O("TYPE_MISMATCH_ERR")}if(i.readyState!="complete"){O("INVALID_STATE_ERR")}}function P(i){this.code=this[i];this.message=i+": DOM Exception "+this.code}var X=P.prototype=new Error;X.INDEX_SIZE_ERR=1;X.DOMSTRING_SIZE_ERR=2;X.HIERARCHY_REQUEST_ERR=3;X.WRONG_DOCUMENT_ERR=4;X.INVALID_CHARACTER_ERR=5;X.NO_DATA_ALLOWED_ERR=6;X.NO_MODIFICATION_ALLOWED_ERR=7;X.NOT_FOUND_ERR=8;X.NOT_SUPPORTED_ERR=9;X.INUSE_ATTRIBUTE_ERR=10;X.INVALID_STATE_ERR=11;X.SYNTAX_ERR=12;X.INVALID_MODIFICATION_ERR=13;X.NAMESPACE_ERR=14;X.INVALID_ACCESS_ERR=15;X.VALIDATION_ERR=16;X.TYPE_MISMATCH_ERR=17;G_vmlCanvasManager=e;CanvasRenderingContext2D=D;CanvasGradient=U;CanvasPattern=T;DOMException=P})()}; \ No newline at end of file diff --git a/assets/plugins/flot/jquery.colorhelpers.js b/assets/plugins/flot/jquery.colorhelpers.js deleted file mode 100644 index cc1643b5..00000000 --- a/assets/plugins/flot/jquery.colorhelpers.js +++ /dev/null @@ -1,180 +0,0 @@ -/* Plugin for jQuery for working with colors. - * - * Version 1.1. - * - * Inspiration from jQuery color animation plugin by John Resig. - * - * Released under the MIT license by Ole Laursen, October 2009. - * - * Examples: - * - * $.color.parse("#fff").scale('rgb', 0.25).add('a', -0.5).toString() - * var c = $.color.extract($("#mydiv"), 'background-color'); - * console.log(c.r, c.g, c.b, c.a); - * $.color.make(100, 50, 25, 0.4).toString() // returns "rgba(100,50,25,0.4)" - * - * Note that .scale() and .add() return the same modified object - * instead of making a new one. - * - * V. 1.1: Fix error handling so e.g. parsing an empty string does - * produce a color rather than just crashing. - */ - -(function($) { - $.color = {}; - - // construct color object with some convenient chainable helpers - $.color.make = function (r, g, b, a) { - var o = {}; - o.r = r || 0; - o.g = g || 0; - o.b = b || 0; - o.a = a != null ? a : 1; - - o.add = function (c, d) { - for (var i = 0; i < c.length; ++i) - o[c.charAt(i)] += d; - return o.normalize(); - }; - - o.scale = function (c, f) { - for (var i = 0; i < c.length; ++i) - o[c.charAt(i)] *= f; - return o.normalize(); - }; - - o.toString = function () { - if (o.a >= 1.0) { - return "rgb("+[o.r, o.g, o.b].join(",")+")"; - } else { - return "rgba("+[o.r, o.g, o.b, o.a].join(",")+")"; - } - }; - - o.normalize = function () { - function clamp(min, value, max) { - return value < min ? min: (value > max ? max: value); - } - - o.r = clamp(0, parseInt(o.r), 255); - o.g = clamp(0, parseInt(o.g), 255); - o.b = clamp(0, parseInt(o.b), 255); - o.a = clamp(0, o.a, 1); - return o; - }; - - o.clone = function () { - return $.color.make(o.r, o.b, o.g, o.a); - }; - - return o.normalize(); - }; - - // extract CSS color property from element, going up in the DOM - // if it's "transparent" - $.color.extract = function (elem, css) { - var c; - - do { - c = elem.css(css).toLowerCase(); - // keep going until we find an element that has color, or - // we hit the body or root (have no parent) - if (c != '' && c != 'transparent') - break; - elem = elem.parent(); - } while (elem.length && !$.nodeName(elem.get(0), "body")); - - // catch Safari's way of signalling transparent - if (c == "rgba(0, 0, 0, 0)") - c = "transparent"; - - return $.color.parse(c); - }; - - // parse CSS color string (like "rgb(10, 32, 43)" or "#fff"), - // returns color object, if parsing failed, you get black (0, 0, - // 0) out - $.color.parse = function (str) { - var res, m = $.color.make; - - // Look for rgb(num,num,num) - if (res = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str)) - return m(parseInt(res[1], 10), parseInt(res[2], 10), parseInt(res[3], 10)); - - // Look for rgba(num,num,num,num) - if (res = /rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str)) - return m(parseInt(res[1], 10), parseInt(res[2], 10), parseInt(res[3], 10), parseFloat(res[4])); - - // Look for rgb(num%,num%,num%) - if (res = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str)) - return m(parseFloat(res[1])*2.55, parseFloat(res[2])*2.55, parseFloat(res[3])*2.55); - - // Look for rgba(num%,num%,num%,num) - if (res = /rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str)) - return m(parseFloat(res[1])*2.55, parseFloat(res[2])*2.55, parseFloat(res[3])*2.55, parseFloat(res[4])); - - // Look for #a0b1c2 - if (res = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str)) - return m(parseInt(res[1], 16), parseInt(res[2], 16), parseInt(res[3], 16)); - - // Look for #fff - if (res = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str)) - return m(parseInt(res[1]+res[1], 16), parseInt(res[2]+res[2], 16), parseInt(res[3]+res[3], 16)); - - // Otherwise, we're most likely dealing with a named color - var name = $.trim(str).toLowerCase(); - if (name == "transparent") - return m(255, 255, 255, 0); - else { - // default to black - res = lookupColors[name] || [0, 0, 0]; - return m(res[0], res[1], res[2]); - } - }; - - var lookupColors = { - aqua:[0,255,255], - azure:[240,255,255], - beige:[245,245,220], - black:[0,0,0], - blue:[0,0,255], - brown:[165,42,42], - cyan:[0,255,255], - darkblue:[0,0,139], - darkcyan:[0,139,139], - darkgrey:[169,169,169], - darkgreen:[0,100,0], - darkkhaki:[189,183,107], - darkmagenta:[139,0,139], - darkolivegreen:[85,107,47], - darkorange:[255,140,0], - darkorchid:[153,50,204], - darkred:[139,0,0], - darksalmon:[233,150,122], - darkviolet:[148,0,211], - fuchsia:[255,0,255], - gold:[255,215,0], - green:[0,128,0], - indigo:[75,0,130], - khaki:[240,230,140], - lightblue:[173,216,230], - lightcyan:[224,255,255], - lightgreen:[144,238,144], - lightgrey:[211,211,211], - lightpink:[255,182,193], - lightyellow:[255,255,224], - lime:[0,255,0], - magenta:[255,0,255], - maroon:[128,0,0], - navy:[0,0,128], - olive:[128,128,0], - orange:[255,165,0], - pink:[255,192,203], - purple:[128,0,128], - violet:[128,0,128], - red:[255,0,0], - silver:[192,192,192], - white:[255,255,255], - yellow:[255,255,0] - }; -})(jQuery); diff --git a/assets/plugins/flot/jquery.colorhelpers.min.js b/assets/plugins/flot/jquery.colorhelpers.min.js deleted file mode 100644 index 7f426596..00000000 --- a/assets/plugins/flot/jquery.colorhelpers.min.js +++ /dev/null @@ -1 +0,0 @@ -(function($){$.color={};$.color.make=function(r,g,b,a){var o={};o.r=r||0;o.g=g||0;o.b=b||0;o.a=a!=null?a:1;o.add=function(c,d){for(var i=0;i<c.length;++i)o[c.charAt(i)]+=d;return o.normalize()};o.scale=function(c,f){for(var i=0;i<c.length;++i)o[c.charAt(i)]*=f;return o.normalize()};o.toString=function(){if(o.a>=1){return"rgb("+[o.r,o.g,o.b].join(",")+")"}else{return"rgba("+[o.r,o.g,o.b,o.a].join(",")+")"}};o.normalize=function(){function clamp(min,value,max){return value<min?min:value>max?max:value}o.r=clamp(0,parseInt(o.r),255);o.g=clamp(0,parseInt(o.g),255);o.b=clamp(0,parseInt(o.b),255);o.a=clamp(0,o.a,1);return o};o.clone=function(){return $.color.make(o.r,o.b,o.g,o.a)};return o.normalize()};$.color.extract=function(elem,css){var c;do{c=elem.css(css).toLowerCase();if(c!=""&&c!="transparent")break;elem=elem.parent()}while(elem.length&&!$.nodeName(elem.get(0),"body"));if(c=="rgba(0, 0, 0, 0)")c="transparent";return $.color.parse(c)};$.color.parse=function(str){var res,m=$.color.make;if(res=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10));if(res=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10),parseFloat(res[4]));if(res=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55);if(res=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55,parseFloat(res[4]));if(res=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str))return m(parseInt(res[1],16),parseInt(res[2],16),parseInt(res[3],16));if(res=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str))return m(parseInt(res[1]+res[1],16),parseInt(res[2]+res[2],16),parseInt(res[3]+res[3],16));var name=$.trim(str).toLowerCase();if(name=="transparent")return m(255,255,255,0);else{res=lookupColors[name]||[0,0,0];return m(res[0],res[1],res[2])}};var lookupColors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery); \ No newline at end of file diff --git a/assets/plugins/flot/jquery.flot.canvas.js b/assets/plugins/flot/jquery.flot.canvas.js deleted file mode 100644 index d94b9611..00000000 --- a/assets/plugins/flot/jquery.flot.canvas.js +++ /dev/null @@ -1,345 +0,0 @@ -/* Flot plugin for drawing all elements of a plot on the canvas. - -Copyright (c) 2007-2013 IOLA and Ole Laursen. -Licensed under the MIT license. - -Flot normally produces certain elements, like axis labels and the legend, using -HTML elements. This permits greater interactivity and customization, and often -looks better, due to cross-browser canvas text inconsistencies and limitations. - -It can also be desirable to render the plot entirely in canvas, particularly -if the goal is to save it as an image, or if Flot is being used in a context -where the HTML DOM does not exist, as is the case within Node.js. This plugin -switches out Flot's standard drawing operations for canvas-only replacements. - -Currently the plugin supports only axis labels, but it will eventually allow -every element of the plot to be rendered directly to canvas. - -The plugin supports these options: - -{ - canvas: boolean -} - -The "canvas" option controls whether full canvas drawing is enabled, making it -possible to toggle on and off. This is useful when a plot uses HTML text in the -browser, but needs to redraw with canvas text when exporting as an image. - -*/ - -(function($) { - - var options = { - canvas: true - }; - - var render, getTextInfo, addText; - - // Cache the prototype hasOwnProperty for faster access - - var hasOwnProperty = Object.prototype.hasOwnProperty; - - function init(plot, classes) { - - var Canvas = classes.Canvas; - - // We only want to replace the functions once; the second time around - // we would just get our new function back. This whole replacing of - // prototype functions is a disaster, and needs to be changed ASAP. - - if (render == null) { - getTextInfo = Canvas.prototype.getTextInfo, - addText = Canvas.prototype.addText, - render = Canvas.prototype.render; - } - - // Finishes rendering the canvas, including overlaid text - - Canvas.prototype.render = function() { - - if (!plot.getOptions().canvas) { - return render.call(this); - } - - var context = this.context, - cache = this._textCache; - - // For each text layer, render elements marked as active - - context.save(); - context.textBaseline = "middle"; - - for (var layerKey in cache) { - if (hasOwnProperty.call(cache, layerKey)) { - var layerCache = cache[layerKey]; - for (var styleKey in layerCache) { - if (hasOwnProperty.call(layerCache, styleKey)) { - var styleCache = layerCache[styleKey], - updateStyles = true; - for (var key in styleCache) { - if (hasOwnProperty.call(styleCache, key)) { - - var info = styleCache[key], - positions = info.positions, - lines = info.lines; - - // Since every element at this level of the cache have the - // same font and fill styles, we can just change them once - // using the values from the first element. - - if (updateStyles) { - context.fillStyle = info.font.color; - context.font = info.font.definition; - updateStyles = false; - } - - for (var i = 0, position; position = positions[i]; i++) { - if (position.active) { - for (var j = 0, line; line = position.lines[j]; j++) { - context.fillText(lines[j].text, line[0], line[1]); - } - } else { - positions.splice(i--, 1); - } - } - - if (positions.length == 0) { - delete styleCache[key]; - } - } - } - } - } - } - } - - context.restore(); - }; - - // Creates (if necessary) and returns a text info object. - // - // When the canvas option is set, the object looks like this: - // - // { - // width: Width of the text's bounding box. - // height: Height of the text's bounding box. - // positions: Array of positions at which this text is drawn. - // lines: [{ - // height: Height of this line. - // widths: Width of this line. - // text: Text on this line. - // }], - // font: { - // definition: Canvas font property string. - // color: Color of the text. - // }, - // } - // - // The positions array contains objects that look like this: - // - // { - // active: Flag indicating whether the text should be visible. - // lines: Array of [x, y] coordinates at which to draw the line. - // x: X coordinate at which to draw the text. - // y: Y coordinate at which to draw the text. - // } - - Canvas.prototype.getTextInfo = function(layer, text, font, angle, width) { - - if (!plot.getOptions().canvas) { - return getTextInfo.call(this, layer, text, font, angle, width); - } - - var textStyle, layerCache, styleCache, info; - - // Cast the value to a string, in case we were given a number - - text = "" + text; - - // If the font is a font-spec object, generate a CSS definition - - if (typeof font === "object") { - textStyle = font.style + " " + font.variant + " " + font.weight + " " + font.size + "px " + font.family; - } else { - textStyle = font; - } - - // Retrieve (or create) the cache for the text's layer and styles - - layerCache = this._textCache[layer]; - - if (layerCache == null) { - layerCache = this._textCache[layer] = {}; - } - - styleCache = layerCache[textStyle]; - - if (styleCache == null) { - styleCache = layerCache[textStyle] = {}; - } - - info = styleCache[text]; - - if (info == null) { - - var context = this.context; - - // If the font was provided as CSS, create a div with those - // classes and examine it to generate a canvas font spec. - - if (typeof font !== "object") { - - var element = $("<div>&nbsp;</div>") - .css("position", "absolute") - .addClass(typeof font === "string" ? font : null) - .appendTo(this.getTextLayer(layer)); - - font = { - lineHeight: element.height(), - style: element.css("font-style"), - variant: element.css("font-variant"), - weight: element.css("font-weight"), - family: element.css("font-family"), - color: element.css("color") - }; - - // Setting line-height to 1, without units, sets it equal - // to the font-size, even if the font-size is abstract, - // like 'smaller'. This enables us to read the real size - // via the element's height, working around browsers that - // return the literal 'smaller' value. - - font.size = element.css("line-height", 1).height(); - - element.remove(); - } - - textStyle = font.style + " " + font.variant + " " + font.weight + " " + font.size + "px " + font.family; - - // Create a new info object, initializing the dimensions to - // zero so we can count them up line-by-line. - - info = styleCache[text] = { - width: 0, - height: 0, - positions: [], - lines: [], - font: { - definition: textStyle, - color: font.color - } - }; - - context.save(); - context.font = textStyle; - - // Canvas can't handle multi-line strings; break on various - // newlines, including HTML brs, to build a list of lines. - // Note that we could split directly on regexps, but IE < 9 is - // broken; revisit when we drop IE 7/8 support. - - var lines = (text + "").replace(/<br ?\/?>|\r\n|\r/g, "\n").split("\n"); - - for (var i = 0; i < lines.length; ++i) { - - var lineText = lines[i], - measured = context.measureText(lineText); - - info.width = Math.max(measured.width, info.width); - info.height += font.lineHeight; - - info.lines.push({ - text: lineText, - width: measured.width, - height: font.lineHeight - }); - } - - context.restore(); - } - - return info; - }; - - // Adds a text string to the canvas text overlay. - - Canvas.prototype.addText = function(layer, x, y, text, font, angle, width, halign, valign) { - - if (!plot.getOptions().canvas) { - return addText.call(this, layer, x, y, text, font, angle, width, halign, valign); - } - - var info = this.getTextInfo(layer, text, font, angle, width), - positions = info.positions, - lines = info.lines; - - // Text is drawn with baseline 'middle', which we need to account - // for by adding half a line's height to the y position. - - y += info.height / lines.length / 2; - - // Tweak the initial y-position to match vertical alignment - - if (valign == "middle") { - y = Math.round(y - info.height / 2); - } else if (valign == "bottom") { - y = Math.round(y - info.height); - } else { - y = Math.round(y); - } - - // FIXME: LEGACY BROWSER FIX - // AFFECTS: Opera < 12.00 - - // Offset the y coordinate, since Opera is off pretty - // consistently compared to the other browsers. - - if (!!(window.opera && window.opera.version().split(".")[0] < 12)) { - y -= 2; - } - - // Determine whether this text already exists at this position. - // If so, mark it for inclusion in the next render pass. - - for (var i = 0, position; position = positions[i]; i++) { - if (position.x == x && position.y == y) { - position.active = true; - return; - } - } - - // If the text doesn't exist at this position, create a new entry - - position = { - active: true, - lines: [], - x: x, - y: y - }; - - positions.push(position); - - // Fill in the x & y positions of each line, adjusting them - // individually for horizontal alignment. - - for (var i = 0, line; line = lines[i]; i++) { - if (halign == "center") { - position.lines.push([Math.round(x - line.width / 2), y]); - } else if (halign == "right") { - position.lines.push([Math.round(x - line.width), y]); - } else { - position.lines.push([Math.round(x), y]); - } - y += line.height; - } - }; - } - - $.plot.plugins.push({ - init: init, - options: options, - name: "canvas", - version: "1.0" - }); - -})(jQuery); diff --git a/assets/plugins/flot/jquery.flot.canvas.min.js b/assets/plugins/flot/jquery.flot.canvas.min.js deleted file mode 100644 index 826d2177..00000000 --- a/assets/plugins/flot/jquery.flot.canvas.min.js +++ /dev/null @@ -1 +0,0 @@ -(function($){var options={canvas:true};var render,getTextInfo,addText;var hasOwnProperty=Object.prototype.hasOwnProperty;function init(plot,classes){var Canvas=classes.Canvas;if(render==null){getTextInfo=Canvas.prototype.getTextInfo,addText=Canvas.prototype.addText,render=Canvas.prototype.render}Canvas.prototype.render=function(){if(!plot.getOptions().canvas){return render.call(this)}var context=this.context,cache=this._textCache;context.save();context.textBaseline="middle";for(var layerKey in cache){if(hasOwnProperty.call(cache,layerKey)){var layerCache=cache[layerKey];for(var styleKey in layerCache){if(hasOwnProperty.call(layerCache,styleKey)){var styleCache=layerCache[styleKey],updateStyles=true;for(var key in styleCache){if(hasOwnProperty.call(styleCache,key)){var info=styleCache[key],positions=info.positions,lines=info.lines;if(updateStyles){context.fillStyle=info.font.color;context.font=info.font.definition;updateStyles=false}for(var i=0,position;position=positions[i];i++){if(position.active){for(var j=0,line;line=position.lines[j];j++){context.fillText(lines[j].text,line[0],line[1])}}else{positions.splice(i--,1)}}if(positions.length==0){delete styleCache[key]}}}}}}}context.restore()};Canvas.prototype.getTextInfo=function(layer,text,font,angle,width){if(!plot.getOptions().canvas){return getTextInfo.call(this,layer,text,font,angle,width)}var textStyle,layerCache,styleCache,info;text=""+text;if(typeof font==="object"){textStyle=font.style+" "+font.variant+" "+font.weight+" "+font.size+"px "+font.family}else{textStyle=font}layerCache=this._textCache[layer];if(layerCache==null){layerCache=this._textCache[layer]={}}styleCache=layerCache[textStyle];if(styleCache==null){styleCache=layerCache[textStyle]={}}info=styleCache[text];if(info==null){var context=this.context;if(typeof font!=="object"){var element=$("<div>&nbsp;</div>").css("position","absolute").addClass(typeof font==="string"?font:null).appendTo(this.getTextLayer(layer));font={lineHeight:element.height(),style:element.css("font-style"),variant:element.css("font-variant"),weight:element.css("font-weight"),family:element.css("font-family"),color:element.css("color")};font.size=element.css("line-height",1).height();element.remove()}textStyle=font.style+" "+font.variant+" "+font.weight+" "+font.size+"px "+font.family;info=styleCache[text]={width:0,height:0,positions:[],lines:[],font:{definition:textStyle,color:font.color}};context.save();context.font=textStyle;var lines=(text+"").replace(/<br ?\/?>|\r\n|\r/g,"\n").split("\n");for(var i=0;i<lines.length;++i){var lineText=lines[i],measured=context.measureText(lineText);info.width=Math.max(measured.width,info.width);info.height+=font.lineHeight;info.lines.push({text:lineText,width:measured.width,height:font.lineHeight})}context.restore()}return info};Canvas.prototype.addText=function(layer,x,y,text,font,angle,width,halign,valign){if(!plot.getOptions().canvas){return addText.call(this,layer,x,y,text,font,angle,width,halign,valign)}var info=this.getTextInfo(layer,text,font,angle,width),positions=info.positions,lines=info.lines;y+=info.height/lines.length/2;if(valign=="middle"){y=Math.round(y-info.height/2)}else if(valign=="bottom"){y=Math.round(y-info.height)}else{y=Math.round(y)}if(!!(window.opera&&window.opera.version().split(".")[0]<12)){y-=2}for(var i=0,position;position=positions[i];i++){if(position.x==x&&position.y==y){position.active=true;return}}position={active:true,lines:[],x:x,y:y};positions.push(position);for(var i=0,line;line=lines[i];i++){if(halign=="center"){position.lines.push([Math.round(x-line.width/2),y])}else if(halign=="right"){position.lines.push([Math.round(x-line.width),y])}else{position.lines.push([Math.round(x),y])}y+=line.height}}}$.plot.plugins.push({init:init,options:options,name:"canvas",version:"1.0"})})(jQuery); \ No newline at end of file diff --git a/assets/plugins/flot/jquery.flot.categories.js b/assets/plugins/flot/jquery.flot.categories.js deleted file mode 100644 index 6e6e8baa..00000000 --- a/assets/plugins/flot/jquery.flot.categories.js +++ /dev/null @@ -1,190 +0,0 @@ -/* Flot plugin for plotting textual data or categories. - -Copyright (c) 2007-2013 IOLA and Ole Laursen. -Licensed under the MIT license. - -Consider a dataset like [["February", 34], ["March", 20], ...]. This plugin -allows you to plot such a dataset directly. - -To enable it, you must specify mode: "categories" on the axis with the textual -labels, e.g. - - $.plot("#placeholder", data, { xaxis: { mode: "categories" } }); - -By default, the labels are ordered as they are met in the data series. If you -need a different ordering, you can specify "categories" on the axis options -and list the categories there: - - xaxis: { - mode: "categories", - categories: ["February", "March", "April"] - } - -If you need to customize the distances between the categories, you can specify -"categories" as an object mapping labels to values - - xaxis: { - mode: "categories", - categories: { "February": 1, "March": 3, "April": 4 } - } - -If you don't specify all categories, the remaining categories will be numbered -from the max value plus 1 (with a spacing of 1 between each). - -Internally, the plugin works by transforming the input data through an auto- -generated mapping where the first category becomes 0, the second 1, etc. -Hence, a point like ["February", 34] becomes [0, 34] internally in Flot (this -is visible in hover and click events that return numbers rather than the -category labels). The plugin also overrides the tick generator to spit out the -categories as ticks instead of the values. - -If you need to map a value back to its label, the mapping is always accessible -as "categories" on the axis object, e.g. plot.getAxes().xaxis.categories. - -*/ - -(function ($) { - var options = { - xaxis: { - categories: null - }, - yaxis: { - categories: null - } - }; - - function processRawData(plot, series, data, datapoints) { - // if categories are enabled, we need to disable - // auto-transformation to numbers so the strings are intact - // for later processing - - var xCategories = series.xaxis.options.mode == "categories", - yCategories = series.yaxis.options.mode == "categories"; - - if (!(xCategories || yCategories)) - return; - - var format = datapoints.format; - - if (!format) { - // FIXME: auto-detection should really not be defined here - var s = series; - format = []; - format.push({ x: true, number: true, required: true }); - format.push({ y: true, number: true, required: true }); - - if (s.bars.show || (s.lines.show && s.lines.fill)) { - var autoscale = !!((s.bars.show && s.bars.zero) || (s.lines.show && s.lines.zero)); - format.push({ y: true, number: true, required: false, defaultValue: 0, autoscale: autoscale }); - if (s.bars.horizontal) { - delete format[format.length - 1].y; - format[format.length - 1].x = true; - } - } - - datapoints.format = format; - } - - for (var m = 0; m < format.length; ++m) { - if (format[m].x && xCategories) - format[m].number = false; - - if (format[m].y && yCategories) - format[m].number = false; - } - } - - function getNextIndex(categories) { - var index = -1; - - for (var v in categories) - if (categories[v] > index) - index = categories[v]; - - return index + 1; - } - - function categoriesTickGenerator(axis) { - var res = []; - for (var label in axis.categories) { - var v = axis.categories[label]; - if (v >= axis.min && v <= axis.max) - res.push([v, label]); - } - - res.sort(function (a, b) { return a[0] - b[0]; }); - - return res; - } - - function setupCategoriesForAxis(series, axis, datapoints) { - if (series[axis].options.mode != "categories") - return; - - if (!series[axis].categories) { - // parse options - var c = {}, o = series[axis].options.categories || {}; - if ($.isArray(o)) { - for (var i = 0; i < o.length; ++i) - c[o[i]] = i; - } - else { - for (var v in o) - c[v] = o[v]; - } - - series[axis].categories = c; - } - - // fix ticks - if (!series[axis].options.ticks) - series[axis].options.ticks = categoriesTickGenerator; - - transformPointsOnAxis(datapoints, axis, series[axis].categories); - } - - function transformPointsOnAxis(datapoints, axis, categories) { - // go through the points, transforming them - var points = datapoints.points, - ps = datapoints.pointsize, - format = datapoints.format, - formatColumn = axis.charAt(0), - index = getNextIndex(categories); - - for (var i = 0; i < points.length; i += ps) { - if (points[i] == null) - continue; - - for (var m = 0; m < ps; ++m) { - var val = points[i + m]; - - if (val == null || !format[m][formatColumn]) - continue; - - if (!(val in categories)) { - categories[val] = index; - ++index; - } - - points[i + m] = categories[val]; - } - } - } - - function processDatapoints(plot, series, datapoints) { - setupCategoriesForAxis(series, "xaxis", datapoints); - setupCategoriesForAxis(series, "yaxis", datapoints); - } - - function init(plot) { - plot.hooks.processRawData.push(processRawData); - plot.hooks.processDatapoints.push(processDatapoints); - } - - $.plot.plugins.push({ - init: init, - options: options, - name: 'categories', - version: '1.0' - }); -})(jQuery); diff --git a/assets/plugins/flot/jquery.flot.categories.min.js b/assets/plugins/flot/jquery.flot.categories.min.js deleted file mode 100644 index 552dd90a..00000000 --- a/assets/plugins/flot/jquery.flot.categories.min.js +++ /dev/null @@ -1 +0,0 @@ -(function($){var options={xaxis:{categories:null},yaxis:{categories:null}};function processRawData(plot,series,data,datapoints){var xCategories=series.xaxis.options.mode=="categories",yCategories=series.yaxis.options.mode=="categories";if(!(xCategories||yCategories))return;var format=datapoints.format;if(!format){var s=series;format=[];format.push({x:true,number:true,required:true});format.push({y:true,number:true,required:true});if(s.bars.show||s.lines.show&&s.lines.fill){var autoscale=!!(s.bars.show&&s.bars.zero||s.lines.show&&s.lines.zero);format.push({y:true,number:true,required:false,defaultValue:0,autoscale:autoscale});if(s.bars.horizontal){delete format[format.length-1].y;format[format.length-1].x=true}}datapoints.format=format}for(var m=0;m<format.length;++m){if(format[m].x&&xCategories)format[m].number=false;if(format[m].y&&yCategories)format[m].number=false}}function getNextIndex(categories){var index=-1;for(var v in categories)if(categories[v]>index)index=categories[v];return index+1}function categoriesTickGenerator(axis){var res=[];for(var label in axis.categories){var v=axis.categories[label];if(v>=axis.min&&v<=axis.max)res.push([v,label])}res.sort(function(a,b){return a[0]-b[0]});return res}function setupCategoriesForAxis(series,axis,datapoints){if(series[axis].options.mode!="categories")return;if(!series[axis].categories){var c={},o=series[axis].options.categories||{};if($.isArray(o)){for(var i=0;i<o.length;++i)c[o[i]]=i}else{for(var v in o)c[v]=o[v]}series[axis].categories=c}if(!series[axis].options.ticks)series[axis].options.ticks=categoriesTickGenerator;transformPointsOnAxis(datapoints,axis,series[axis].categories)}function transformPointsOnAxis(datapoints,axis,categories){var points=datapoints.points,ps=datapoints.pointsize,format=datapoints.format,formatColumn=axis.charAt(0),index=getNextIndex(categories);for(var i=0;i<points.length;i+=ps){if(points[i]==null)continue;for(var m=0;m<ps;++m){var val=points[i+m];if(val==null||!format[m][formatColumn])continue;if(!(val in categories)){categories[val]=index;++index}points[i+m]=categories[val]}}}function processDatapoints(plot,series,datapoints){setupCategoriesForAxis(series,"xaxis",datapoints);setupCategoriesForAxis(series,"yaxis",datapoints)}function init(plot){plot.hooks.processRawData.push(processRawData);plot.hooks.processDatapoints.push(processDatapoints)}$.plot.plugins.push({init:init,options:options,name:"categories",version:"1.0"})})(jQuery); \ No newline at end of file diff --git a/assets/plugins/flot/jquery.flot.crosshair.js b/assets/plugins/flot/jquery.flot.crosshair.js deleted file mode 100644 index c5df9d91..00000000 --- a/assets/plugins/flot/jquery.flot.crosshair.js +++ /dev/null @@ -1,176 +0,0 @@ -/* Flot plugin for showing crosshairs when the mouse hovers over the plot. - -Copyright (c) 2007-2013 IOLA and Ole Laursen. -Licensed under the MIT license. - -The plugin supports these options: - - crosshair: { - mode: null or "x" or "y" or "xy" - color: color - lineWidth: number - } - -Set the mode to one of "x", "y" or "xy". The "x" mode enables a vertical -crosshair that lets you trace the values on the x axis, "y" enables a -horizontal crosshair and "xy" enables them both. "color" is the color of the -crosshair (default is "rgba(170, 0, 0, 0.80)"), "lineWidth" is the width of -the drawn lines (default is 1). - -The plugin also adds four public methods: - - - setCrosshair( pos ) - - Set the position of the crosshair. Note that this is cleared if the user - moves the mouse. "pos" is in coordinates of the plot and should be on the - form { x: xpos, y: ypos } (you can use x2/x3/... if you're using multiple - axes), which is coincidentally the same format as what you get from a - "plothover" event. If "pos" is null, the crosshair is cleared. - - - clearCrosshair() - - Clear the crosshair. - - - lockCrosshair(pos) - - Cause the crosshair to lock to the current location, no longer updating if - the user moves the mouse. Optionally supply a position (passed on to - setCrosshair()) to move it to. - - Example usage: - - var myFlot = $.plot( $("#graph"), ..., { crosshair: { mode: "x" } } }; - $("#graph").bind( "plothover", function ( evt, position, item ) { - if ( item ) { - // Lock the crosshair to the data point being hovered - myFlot.lockCrosshair({ - x: item.datapoint[ 0 ], - y: item.datapoint[ 1 ] - }); - } else { - // Return normal crosshair operation - myFlot.unlockCrosshair(); - } - }); - - - unlockCrosshair() - - Free the crosshair to move again after locking it. -*/ - -(function ($) { - var options = { - crosshair: { - mode: null, // one of null, "x", "y" or "xy", - color: "rgba(170, 0, 0, 0.80)", - lineWidth: 1 - } - }; - - function init(plot) { - // position of crosshair in pixels - var crosshair = { x: -1, y: -1, locked: false }; - - plot.setCrosshair = function setCrosshair(pos) { - if (!pos) - crosshair.x = -1; - else { - var o = plot.p2c(pos); - crosshair.x = Math.max(0, Math.min(o.left, plot.width())); - crosshair.y = Math.max(0, Math.min(o.top, plot.height())); - } - - plot.triggerRedrawOverlay(); - }; - - plot.clearCrosshair = plot.setCrosshair; // passes null for pos - - plot.lockCrosshair = function lockCrosshair(pos) { - if (pos) - plot.setCrosshair(pos); - crosshair.locked = true; - }; - - plot.unlockCrosshair = function unlockCrosshair() { - crosshair.locked = false; - }; - - function onMouseOut(e) { - if (crosshair.locked) - return; - - if (crosshair.x != -1) { - crosshair.x = -1; - plot.triggerRedrawOverlay(); - } - } - - function onMouseMove(e) { - if (crosshair.locked) - return; - - if (plot.getSelection && plot.getSelection()) { - crosshair.x = -1; // hide the crosshair while selecting - return; - } - - var offset = plot.offset(); - crosshair.x = Math.max(0, Math.min(e.pageX - offset.left, plot.width())); - crosshair.y = Math.max(0, Math.min(e.pageY - offset.top, plot.height())); - plot.triggerRedrawOverlay(); - } - - plot.hooks.bindEvents.push(function (plot, eventHolder) { - if (!plot.getOptions().crosshair.mode) - return; - - eventHolder.mouseout(onMouseOut); - eventHolder.mousemove(onMouseMove); - }); - - plot.hooks.drawOverlay.push(function (plot, ctx) { - var c = plot.getOptions().crosshair; - if (!c.mode) - return; - - var plotOffset = plot.getPlotOffset(); - - ctx.save(); - ctx.translate(plotOffset.left, plotOffset.top); - - if (crosshair.x != -1) { - var adj = plot.getOptions().crosshair.lineWidth % 2 === 0 ? 0 : 0.5; - - ctx.strokeStyle = c.color; - ctx.lineWidth = c.lineWidth; - ctx.lineJoin = "round"; - - ctx.beginPath(); - if (c.mode.indexOf("x") != -1) { - var drawX = Math.round(crosshair.x) + adj; - ctx.moveTo(drawX, 0); - ctx.lineTo(drawX, plot.height()); - } - if (c.mode.indexOf("y") != -1) { - var drawY = Math.round(crosshair.y) + adj; - ctx.moveTo(0, drawY); - ctx.lineTo(plot.width(), drawY); - } - ctx.stroke(); - } - ctx.restore(); - }); - - plot.hooks.shutdown.push(function (plot, eventHolder) { - eventHolder.unbind("mouseout", onMouseOut); - eventHolder.unbind("mousemove", onMouseMove); - }); - } - - $.plot.plugins.push({ - init: init, - options: options, - name: 'crosshair', - version: '1.0' - }); -})(jQuery); diff --git a/assets/plugins/flot/jquery.flot.crosshair.min.js b/assets/plugins/flot/jquery.flot.crosshair.min.js deleted file mode 100644 index f97ce65a..00000000 --- a/assets/plugins/flot/jquery.flot.crosshair.min.js +++ /dev/null @@ -1 +0,0 @@ -(function($){var options={crosshair:{mode:null,color:"rgba(170, 0, 0, 0.80)",lineWidth:1}};function init(plot){var crosshair={x:-1,y:-1,locked:false};plot.setCrosshair=function setCrosshair(pos){if(!pos)crosshair.x=-1;else{var o=plot.p2c(pos);crosshair.x=Math.max(0,Math.min(o.left,plot.width()));crosshair.y=Math.max(0,Math.min(o.top,plot.height()))}plot.triggerRedrawOverlay()};plot.clearCrosshair=plot.setCrosshair;plot.lockCrosshair=function lockCrosshair(pos){if(pos)plot.setCrosshair(pos);crosshair.locked=true};plot.unlockCrosshair=function unlockCrosshair(){crosshair.locked=false};function onMouseOut(e){if(crosshair.locked)return;if(crosshair.x!=-1){crosshair.x=-1;plot.triggerRedrawOverlay()}}function onMouseMove(e){if(crosshair.locked)return;if(plot.getSelection&&plot.getSelection()){crosshair.x=-1;return}var offset=plot.offset();crosshair.x=Math.max(0,Math.min(e.pageX-offset.left,plot.width()));crosshair.y=Math.max(0,Math.min(e.pageY-offset.top,plot.height()));plot.triggerRedrawOverlay()}plot.hooks.bindEvents.push(function(plot,eventHolder){if(!plot.getOptions().crosshair.mode)return;eventHolder.mouseout(onMouseOut);eventHolder.mousemove(onMouseMove)});plot.hooks.drawOverlay.push(function(plot,ctx){var c=plot.getOptions().crosshair;if(!c.mode)return;var plotOffset=plot.getPlotOffset();ctx.save();ctx.translate(plotOffset.left,plotOffset.top);if(crosshair.x!=-1){var adj=plot.getOptions().crosshair.lineWidth%2===0?0:.5;ctx.strokeStyle=c.color;ctx.lineWidth=c.lineWidth;ctx.lineJoin="round";ctx.beginPath();if(c.mode.indexOf("x")!=-1){var drawX=Math.round(crosshair.x)+adj;ctx.moveTo(drawX,0);ctx.lineTo(drawX,plot.height())}if(c.mode.indexOf("y")!=-1){var drawY=Math.round(crosshair.y)+adj;ctx.moveTo(0,drawY);ctx.lineTo(plot.width(),drawY)}ctx.stroke()}ctx.restore()});plot.hooks.shutdown.push(function(plot,eventHolder){eventHolder.unbind("mouseout",onMouseOut);eventHolder.unbind("mousemove",onMouseMove)})}$.plot.plugins.push({init:init,options:options,name:"crosshair",version:"1.0"})})(jQuery); \ No newline at end of file diff --git a/assets/plugins/flot/jquery.flot.errorbars.js b/assets/plugins/flot/jquery.flot.errorbars.js deleted file mode 100644 index 72984367..00000000 --- a/assets/plugins/flot/jquery.flot.errorbars.js +++ /dev/null @@ -1,353 +0,0 @@ -/* Flot plugin for plotting error bars. - -Copyright (c) 2007-2013 IOLA and Ole Laursen. -Licensed under the MIT license. - -Error bars are used to show standard deviation and other statistical -properties in a plot. - -* Created by Rui Pereira - rui (dot) pereira (at) gmail (dot) com - -This plugin allows you to plot error-bars over points. Set "errorbars" inside -the points series to the axis name over which there will be error values in -your data array (*even* if you do not intend to plot them later, by setting -"show: null" on xerr/yerr). - -The plugin supports these options: - - series: { - points: { - errorbars: "x" or "y" or "xy", - xerr: { - show: null/false or true, - asymmetric: null/false or true, - upperCap: null or "-" or function, - lowerCap: null or "-" or function, - color: null or color, - radius: null or number - }, - yerr: { same options as xerr } - } - } - -Each data point array is expected to be of the type: - - "x" [ x, y, xerr ] - "y" [ x, y, yerr ] - "xy" [ x, y, xerr, yerr ] - -Where xerr becomes xerr_lower,xerr_upper for the asymmetric error case, and -equivalently for yerr. Eg., a datapoint for the "xy" case with symmetric -error-bars on X and asymmetric on Y would be: - - [ x, y, xerr, yerr_lower, yerr_upper ] - -By default no end caps are drawn. Setting upperCap and/or lowerCap to "-" will -draw a small cap perpendicular to the error bar. They can also be set to a -user-defined drawing function, with (ctx, x, y, radius) as parameters, as eg. - - function drawSemiCircle( ctx, x, y, radius ) { - ctx.beginPath(); - ctx.arc( x, y, radius, 0, Math.PI, false ); - ctx.moveTo( x - radius, y ); - ctx.lineTo( x + radius, y ); - ctx.stroke(); - } - -Color and radius both default to the same ones of the points series if not -set. The independent radius parameter on xerr/yerr is useful for the case when -we may want to add error-bars to a line, without showing the interconnecting -points (with radius: 0), and still showing end caps on the error-bars. -shadowSize and lineWidth are derived as well from the points series. - -*/ - -(function ($) { - var options = { - series: { - points: { - errorbars: null, //should be 'x', 'y' or 'xy' - xerr: { err: 'x', show: null, asymmetric: null, upperCap: null, lowerCap: null, color: null, radius: null}, - yerr: { err: 'y', show: null, asymmetric: null, upperCap: null, lowerCap: null, color: null, radius: null} - } - } - }; - - function processRawData(plot, series, data, datapoints){ - if (!series.points.errorbars) - return; - - // x,y values - var format = [ - { x: true, number: true, required: true }, - { y: true, number: true, required: true } - ]; - - var errors = series.points.errorbars; - // error bars - first X then Y - if (errors == 'x' || errors == 'xy') { - // lower / upper error - if (series.points.xerr.asymmetric) { - format.push({ x: true, number: true, required: true }); - format.push({ x: true, number: true, required: true }); - } else - format.push({ x: true, number: true, required: true }); - } - if (errors == 'y' || errors == 'xy') { - // lower / upper error - if (series.points.yerr.asymmetric) { - format.push({ y: true, number: true, required: true }); - format.push({ y: true, number: true, required: true }); - } else - format.push({ y: true, number: true, required: true }); - } - datapoints.format = format; - } - - function parseErrors(series, i){ - - var points = series.datapoints.points; - - // read errors from points array - var exl = null, - exu = null, - eyl = null, - eyu = null; - var xerr = series.points.xerr, - yerr = series.points.yerr; - - var eb = series.points.errorbars; - // error bars - first X - if (eb == 'x' || eb == 'xy') { - if (xerr.asymmetric) { - exl = points[i + 2]; - exu = points[i + 3]; - if (eb == 'xy') - if (yerr.asymmetric){ - eyl = points[i + 4]; - eyu = points[i + 5]; - } else eyl = points[i + 4]; - } else { - exl = points[i + 2]; - if (eb == 'xy') - if (yerr.asymmetric) { - eyl = points[i + 3]; - eyu = points[i + 4]; - } else eyl = points[i + 3]; - } - // only Y - } else if (eb == 'y') - if (yerr.asymmetric) { - eyl = points[i + 2]; - eyu = points[i + 3]; - } else eyl = points[i + 2]; - - // symmetric errors? - if (exu == null) exu = exl; - if (eyu == null) eyu = eyl; - - var errRanges = [exl, exu, eyl, eyu]; - // nullify if not showing - if (!xerr.show){ - errRanges[0] = null; - errRanges[1] = null; - } - if (!yerr.show){ - errRanges[2] = null; - errRanges[3] = null; - } - return errRanges; - } - - function drawSeriesErrors(plot, ctx, s){ - - var points = s.datapoints.points, - ps = s.datapoints.pointsize, - ax = [s.xaxis, s.yaxis], - radius = s.points.radius, - err = [s.points.xerr, s.points.yerr]; - - //sanity check, in case some inverted axis hack is applied to flot - var invertX = false; - if (ax[0].p2c(ax[0].max) < ax[0].p2c(ax[0].min)) { - invertX = true; - var tmp = err[0].lowerCap; - err[0].lowerCap = err[0].upperCap; - err[0].upperCap = tmp; - } - - var invertY = false; - if (ax[1].p2c(ax[1].min) < ax[1].p2c(ax[1].max)) { - invertY = true; - var tmp = err[1].lowerCap; - err[1].lowerCap = err[1].upperCap; - err[1].upperCap = tmp; - } - - for (var i = 0; i < s.datapoints.points.length; i += ps) { - - //parse - var errRanges = parseErrors(s, i); - - //cycle xerr & yerr - for (var e = 0; e < err.length; e++){ - - var minmax = [ax[e].min, ax[e].max]; - - //draw this error? - if (errRanges[e * err.length]){ - - //data coordinates - var x = points[i], - y = points[i + 1]; - - //errorbar ranges - var upper = [x, y][e] + errRanges[e * err.length + 1], - lower = [x, y][e] - errRanges[e * err.length]; - - //points outside of the canvas - if (err[e].err == 'x') - if (y > ax[1].max || y < ax[1].min || upper < ax[0].min || lower > ax[0].max) - continue; - if (err[e].err == 'y') - if (x > ax[0].max || x < ax[0].min || upper < ax[1].min || lower > ax[1].max) - continue; - - // prevent errorbars getting out of the canvas - var drawUpper = true, - drawLower = true; - - if (upper > minmax[1]) { - drawUpper = false; - upper = minmax[1]; - } - if (lower < minmax[0]) { - drawLower = false; - lower = minmax[0]; - } - - //sanity check, in case some inverted axis hack is applied to flot - if ((err[e].err == 'x' && invertX) || (err[e].err == 'y' && invertY)) { - //swap coordinates - var tmp = lower; - lower = upper; - upper = tmp; - tmp = drawLower; - drawLower = drawUpper; - drawUpper = tmp; - tmp = minmax[0]; - minmax[0] = minmax[1]; - minmax[1] = tmp; - } - - // convert to pixels - x = ax[0].p2c(x), - y = ax[1].p2c(y), - upper = ax[e].p2c(upper); - lower = ax[e].p2c(lower); - minmax[0] = ax[e].p2c(minmax[0]); - minmax[1] = ax[e].p2c(minmax[1]); - - //same style as points by default - var lw = err[e].lineWidth ? err[e].lineWidth : s.points.lineWidth, - sw = s.points.shadowSize != null ? s.points.shadowSize : s.shadowSize; - - //shadow as for points - if (lw > 0 && sw > 0) { - var w = sw / 2; - ctx.lineWidth = w; - ctx.strokeStyle = "rgba(0,0,0,0.1)"; - drawError(ctx, err[e], x, y, upper, lower, drawUpper, drawLower, radius, w + w/2, minmax); - - ctx.strokeStyle = "rgba(0,0,0,0.2)"; - drawError(ctx, err[e], x, y, upper, lower, drawUpper, drawLower, radius, w/2, minmax); - } - - ctx.strokeStyle = err[e].color? err[e].color: s.color; - ctx.lineWidth = lw; - //draw it - drawError(ctx, err[e], x, y, upper, lower, drawUpper, drawLower, radius, 0, minmax); - } - } - } - } - - function drawError(ctx,err,x,y,upper,lower,drawUpper,drawLower,radius,offset,minmax){ - - //shadow offset - y += offset; - upper += offset; - lower += offset; - - // error bar - avoid plotting over circles - if (err.err == 'x'){ - if (upper > x + radius) drawPath(ctx, [[upper,y],[Math.max(x + radius,minmax[0]),y]]); - else drawUpper = false; - if (lower < x - radius) drawPath(ctx, [[Math.min(x - radius,minmax[1]),y],[lower,y]] ); - else drawLower = false; - } - else { - if (upper < y - radius) drawPath(ctx, [[x,upper],[x,Math.min(y - radius,minmax[0])]] ); - else drawUpper = false; - if (lower > y + radius) drawPath(ctx, [[x,Math.max(y + radius,minmax[1])],[x,lower]] ); - else drawLower = false; - } - - //internal radius value in errorbar, allows to plot radius 0 points and still keep proper sized caps - //this is a way to get errorbars on lines without visible connecting dots - radius = err.radius != null? err.radius: radius; - - // upper cap - if (drawUpper) { - if (err.upperCap == '-'){ - if (err.err=='x') drawPath(ctx, [[upper,y - radius],[upper,y + radius]] ); - else drawPath(ctx, [[x - radius,upper],[x + radius,upper]] ); - } else if ($.isFunction(err.upperCap)){ - if (err.err=='x') err.upperCap(ctx, upper, y, radius); - else err.upperCap(ctx, x, upper, radius); - } - } - // lower cap - if (drawLower) { - if (err.lowerCap == '-'){ - if (err.err=='x') drawPath(ctx, [[lower,y - radius],[lower,y + radius]] ); - else drawPath(ctx, [[x - radius,lower],[x + radius,lower]] ); - } else if ($.isFunction(err.lowerCap)){ - if (err.err=='x') err.lowerCap(ctx, lower, y, radius); - else err.lowerCap(ctx, x, lower, radius); - } - } - } - - function drawPath(ctx, pts){ - ctx.beginPath(); - ctx.moveTo(pts[0][0], pts[0][1]); - for (var p=1; p < pts.length; p++) - ctx.lineTo(pts[p][0], pts[p][1]); - ctx.stroke(); - } - - function draw(plot, ctx){ - var plotOffset = plot.getPlotOffset(); - - ctx.save(); - ctx.translate(plotOffset.left, plotOffset.top); - $.each(plot.getData(), function (i, s) { - if (s.points.errorbars && (s.points.xerr.show || s.points.yerr.show)) - drawSeriesErrors(plot, ctx, s); - }); - ctx.restore(); - } - - function init(plot) { - plot.hooks.processRawData.push(processRawData); - plot.hooks.draw.push(draw); - } - - $.plot.plugins.push({ - init: init, - options: options, - name: 'errorbars', - version: '1.0' - }); -})(jQuery); diff --git a/assets/plugins/flot/jquery.flot.errorbars.min.js b/assets/plugins/flot/jquery.flot.errorbars.min.js deleted file mode 100644 index a7bd0422..00000000 --- a/assets/plugins/flot/jquery.flot.errorbars.min.js +++ /dev/null @@ -1 +0,0 @@ -(function($){var options={series:{points:{errorbars:null,xerr:{err:"x",show:null,asymmetric:null,upperCap:null,lowerCap:null,color:null,radius:null},yerr:{err:"y",show:null,asymmetric:null,upperCap:null,lowerCap:null,color:null,radius:null}}}};function processRawData(plot,series,data,datapoints){if(!series.points.errorbars)return;var format=[{x:true,number:true,required:true},{y:true,number:true,required:true}];var errors=series.points.errorbars;if(errors=="x"||errors=="xy"){if(series.points.xerr.asymmetric){format.push({x:true,number:true,required:true});format.push({x:true,number:true,required:true})}else format.push({x:true,number:true,required:true})}if(errors=="y"||errors=="xy"){if(series.points.yerr.asymmetric){format.push({y:true,number:true,required:true});format.push({y:true,number:true,required:true})}else format.push({y:true,number:true,required:true})}datapoints.format=format}function parseErrors(series,i){var points=series.datapoints.points;var exl=null,exu=null,eyl=null,eyu=null;var xerr=series.points.xerr,yerr=series.points.yerr;var eb=series.points.errorbars;if(eb=="x"||eb=="xy"){if(xerr.asymmetric){exl=points[i+2];exu=points[i+3];if(eb=="xy")if(yerr.asymmetric){eyl=points[i+4];eyu=points[i+5]}else eyl=points[i+4]}else{exl=points[i+2];if(eb=="xy")if(yerr.asymmetric){eyl=points[i+3];eyu=points[i+4]}else eyl=points[i+3]}}else if(eb=="y")if(yerr.asymmetric){eyl=points[i+2];eyu=points[i+3]}else eyl=points[i+2];if(exu==null)exu=exl;if(eyu==null)eyu=eyl;var errRanges=[exl,exu,eyl,eyu];if(!xerr.show){errRanges[0]=null;errRanges[1]=null}if(!yerr.show){errRanges[2]=null;errRanges[3]=null}return errRanges}function drawSeriesErrors(plot,ctx,s){var points=s.datapoints.points,ps=s.datapoints.pointsize,ax=[s.xaxis,s.yaxis],radius=s.points.radius,err=[s.points.xerr,s.points.yerr];var invertX=false;if(ax[0].p2c(ax[0].max)<ax[0].p2c(ax[0].min)){invertX=true;var tmp=err[0].lowerCap;err[0].lowerCap=err[0].upperCap;err[0].upperCap=tmp}var invertY=false;if(ax[1].p2c(ax[1].min)<ax[1].p2c(ax[1].max)){invertY=true;var tmp=err[1].lowerCap;err[1].lowerCap=err[1].upperCap;err[1].upperCap=tmp}for(var i=0;i<s.datapoints.points.length;i+=ps){var errRanges=parseErrors(s,i);for(var e=0;e<err.length;e++){var minmax=[ax[e].min,ax[e].max];if(errRanges[e*err.length]){var x=points[i],y=points[i+1];var upper=[x,y][e]+errRanges[e*err.length+1],lower=[x,y][e]-errRanges[e*err.length];if(err[e].err=="x")if(y>ax[1].max||y<ax[1].min||upper<ax[0].min||lower>ax[0].max)continue;if(err[e].err=="y")if(x>ax[0].max||x<ax[0].min||upper<ax[1].min||lower>ax[1].max)continue;var drawUpper=true,drawLower=true;if(upper>minmax[1]){drawUpper=false;upper=minmax[1]}if(lower<minmax[0]){drawLower=false;lower=minmax[0]}if(err[e].err=="x"&&invertX||err[e].err=="y"&&invertY){var tmp=lower;lower=upper;upper=tmp;tmp=drawLower;drawLower=drawUpper;drawUpper=tmp;tmp=minmax[0];minmax[0]=minmax[1];minmax[1]=tmp}x=ax[0].p2c(x),y=ax[1].p2c(y),upper=ax[e].p2c(upper);lower=ax[e].p2c(lower);minmax[0]=ax[e].p2c(minmax[0]);minmax[1]=ax[e].p2c(minmax[1]);var lw=err[e].lineWidth?err[e].lineWidth:s.points.lineWidth,sw=s.points.shadowSize!=null?s.points.shadowSize:s.shadowSize;if(lw>0&&sw>0){var w=sw/2;ctx.lineWidth=w;ctx.strokeStyle="rgba(0,0,0,0.1)";drawError(ctx,err[e],x,y,upper,lower,drawUpper,drawLower,radius,w+w/2,minmax);ctx.strokeStyle="rgba(0,0,0,0.2)";drawError(ctx,err[e],x,y,upper,lower,drawUpper,drawLower,radius,w/2,minmax)}ctx.strokeStyle=err[e].color?err[e].color:s.color;ctx.lineWidth=lw;drawError(ctx,err[e],x,y,upper,lower,drawUpper,drawLower,radius,0,minmax)}}}}function drawError(ctx,err,x,y,upper,lower,drawUpper,drawLower,radius,offset,minmax){y+=offset;upper+=offset;lower+=offset;if(err.err=="x"){if(upper>x+radius)drawPath(ctx,[[upper,y],[Math.max(x+radius,minmax[0]),y]]);else drawUpper=false;if(lower<x-radius)drawPath(ctx,[[Math.min(x-radius,minmax[1]),y],[lower,y]]);else drawLower=false}else{if(upper<y-radius)drawPath(ctx,[[x,upper],[x,Math.min(y-radius,minmax[0])]]);else drawUpper=false;if(lower>y+radius)drawPath(ctx,[[x,Math.max(y+radius,minmax[1])],[x,lower]]);else drawLower=false}radius=err.radius!=null?err.radius:radius;if(drawUpper){if(err.upperCap=="-"){if(err.err=="x")drawPath(ctx,[[upper,y-radius],[upper,y+radius]]);else drawPath(ctx,[[x-radius,upper],[x+radius,upper]])}else if($.isFunction(err.upperCap)){if(err.err=="x")err.upperCap(ctx,upper,y,radius);else err.upperCap(ctx,x,upper,radius)}}if(drawLower){if(err.lowerCap=="-"){if(err.err=="x")drawPath(ctx,[[lower,y-radius],[lower,y+radius]]);else drawPath(ctx,[[x-radius,lower],[x+radius,lower]])}else if($.isFunction(err.lowerCap)){if(err.err=="x")err.lowerCap(ctx,lower,y,radius);else err.lowerCap(ctx,x,lower,radius)}}}function drawPath(ctx,pts){ctx.beginPath();ctx.moveTo(pts[0][0],pts[0][1]);for(var p=1;p<pts.length;p++)ctx.lineTo(pts[p][0],pts[p][1]);ctx.stroke()}function draw(plot,ctx){var plotOffset=plot.getPlotOffset();ctx.save();ctx.translate(plotOffset.left,plotOffset.top);$.each(plot.getData(),function(i,s){if(s.points.errorbars&&(s.points.xerr.show||s.points.yerr.show))drawSeriesErrors(plot,ctx,s)});ctx.restore()}function init(plot){plot.hooks.processRawData.push(processRawData);plot.hooks.draw.push(draw)}$.plot.plugins.push({init:init,options:options,name:"errorbars",version:"1.0"})})(jQuery); \ No newline at end of file diff --git a/assets/plugins/flot/jquery.flot.fillbetween.js b/assets/plugins/flot/jquery.flot.fillbetween.js deleted file mode 100644 index 2854d2d5..00000000 --- a/assets/plugins/flot/jquery.flot.fillbetween.js +++ /dev/null @@ -1,226 +0,0 @@ -/* Flot plugin for computing bottoms for filled line and bar charts. - -Copyright (c) 2007-2013 IOLA and Ole Laursen. -Licensed under the MIT license. - -The case: you've got two series that you want to fill the area between. In Flot -terms, you need to use one as the fill bottom of the other. You can specify the -bottom of each data point as the third coordinate manually, or you can use this -plugin to compute it for you. - -In order to name the other series, you need to give it an id, like this: - - var dataset = [ - { data: [ ... ], id: "foo" } , // use default bottom - { data: [ ... ], fillBetween: "foo" }, // use first dataset as bottom - ]; - - $.plot($("#placeholder"), dataset, { lines: { show: true, fill: true }}); - -As a convenience, if the id given is a number that doesn't appear as an id in -the series, it is interpreted as the index in the array instead (so fillBetween: -0 can also mean the first series). - -Internally, the plugin modifies the datapoints in each series. For line series, -extra data points might be inserted through interpolation. Note that at points -where the bottom line is not defined (due to a null point or start/end of line), -the current line will show a gap too. The algorithm comes from the -jquery.flot.stack.js plugin, possibly some code could be shared. - -*/ - -(function ( $ ) { - - var options = { - series: { - fillBetween: null // or number - } - }; - - function init( plot ) { - - function findBottomSeries( s, allseries ) { - - var i; - - for ( i = 0; i < allseries.length; ++i ) { - if ( allseries[ i ].id === s.fillBetween ) { - return allseries[ i ]; - } - } - - if ( typeof s.fillBetween === "number" ) { - if ( s.fillBetween < 0 || s.fillBetween >= allseries.length ) { - return null; - } - return allseries[ s.fillBetween ]; - } - - return null; - } - - function computeFillBottoms( plot, s, datapoints ) { - - if ( s.fillBetween == null ) { - return; - } - - var other = findBottomSeries( s, plot.getData() ); - - if ( !other ) { - return; - } - - var ps = datapoints.pointsize, - points = datapoints.points, - otherps = other.datapoints.pointsize, - otherpoints = other.datapoints.points, - newpoints = [], - px, py, intery, qx, qy, bottom, - withlines = s.lines.show, - withbottom = ps > 2 && datapoints.format[2].y, - withsteps = withlines && s.lines.steps, - fromgap = true, - i = 0, - j = 0, - l, m; - - while ( true ) { - - if ( i >= points.length ) { - break; - } - - l = newpoints.length; - - if ( points[ i ] == null ) { - - // copy gaps - - for ( m = 0; m < ps; ++m ) { - newpoints.push( points[ i + m ] ); - } - - i += ps; - - } else if ( j >= otherpoints.length ) { - - // for lines, we can't use the rest of the points - - if ( !withlines ) { - for ( m = 0; m < ps; ++m ) { - newpoints.push( points[ i + m ] ); - } - } - - i += ps; - - } else if ( otherpoints[ j ] == null ) { - - // oops, got a gap - - for ( m = 0; m < ps; ++m ) { - newpoints.push( null ); - } - - fromgap = true; - j += otherps; - - } else { - - // cases where we actually got two points - - px = points[ i ]; - py = points[ i + 1 ]; - qx = otherpoints[ j ]; - qy = otherpoints[ j + 1 ]; - bottom = 0; - - if ( px === qx ) { - - for ( m = 0; m < ps; ++m ) { - newpoints.push( points[ i + m ] ); - } - - //newpoints[ l + 1 ] += qy; - bottom = qy; - - i += ps; - j += otherps; - - } else if ( px > qx ) { - - // we got past point below, might need to - // insert interpolated extra point - - if ( withlines && i > 0 && points[ i - ps ] != null ) { - intery = py + ( points[ i - ps + 1 ] - py ) * ( qx - px ) / ( points[ i - ps ] - px ); - newpoints.push( qx ); - newpoints.push( intery ); - for ( m = 2; m < ps; ++m ) { - newpoints.push( points[ i + m ] ); - } - bottom = qy; - } - - j += otherps; - - } else { // px < qx - - // if we come from a gap, we just skip this point - - if ( fromgap && withlines ) { - i += ps; - continue; - } - - for ( m = 0; m < ps; ++m ) { - newpoints.push( points[ i + m ] ); - } - - // we might be able to interpolate a point below, - // this can give us a better y - - if ( withlines && j > 0 && otherpoints[ j - otherps ] != null ) { - bottom = qy + ( otherpoints[ j - otherps + 1 ] - qy ) * ( px - qx ) / ( otherpoints[ j - otherps ] - qx ); - } - - //newpoints[l + 1] += bottom; - - i += ps; - } - - fromgap = false; - - if ( l !== newpoints.length && withbottom ) { - newpoints[ l + 2 ] = bottom; - } - } - - // maintain the line steps invariant - - if ( withsteps && l !== newpoints.length && l > 0 && - newpoints[ l ] !== null && - newpoints[ l ] !== newpoints[ l - ps ] && - newpoints[ l + 1 ] !== newpoints[ l - ps + 1 ] ) { - for (m = 0; m < ps; ++m) { - newpoints[ l + ps + m ] = newpoints[ l + m ]; - } - newpoints[ l + 1 ] = newpoints[ l - ps + 1 ]; - } - } - - datapoints.points = newpoints; - } - - plot.hooks.processDatapoints.push( computeFillBottoms ); - } - - $.plot.plugins.push({ - init: init, - options: options, - name: "fillbetween", - version: "1.0" - }); - -})(jQuery); diff --git a/assets/plugins/flot/jquery.flot.fillbetween.min.js b/assets/plugins/flot/jquery.flot.fillbetween.min.js deleted file mode 100644 index 5bdad05f..00000000 --- a/assets/plugins/flot/jquery.flot.fillbetween.min.js +++ /dev/null @@ -1 +0,0 @@ -(function($){var options={series:{fillBetween:null}};function init(plot){function findBottomSeries(s,allseries){var i;for(i=0;i<allseries.length;++i){if(allseries[i].id===s.fillBetween){return allseries[i]}}if(typeof s.fillBetween==="number"){if(s.fillBetween<0||s.fillBetween>=allseries.length){return null}return allseries[s.fillBetween]}return null}function computeFillBottoms(plot,s,datapoints){if(s.fillBetween==null){return}var other=findBottomSeries(s,plot.getData());if(!other){return}var ps=datapoints.pointsize,points=datapoints.points,otherps=other.datapoints.pointsize,otherpoints=other.datapoints.points,newpoints=[],px,py,intery,qx,qy,bottom,withlines=s.lines.show,withbottom=ps>2&&datapoints.format[2].y,withsteps=withlines&&s.lines.steps,fromgap=true,i=0,j=0,l,m;while(true){if(i>=points.length){break}l=newpoints.length;if(points[i]==null){for(m=0;m<ps;++m){newpoints.push(points[i+m])}i+=ps}else if(j>=otherpoints.length){if(!withlines){for(m=0;m<ps;++m){newpoints.push(points[i+m])}}i+=ps}else if(otherpoints[j]==null){for(m=0;m<ps;++m){newpoints.push(null)}fromgap=true;j+=otherps}else{px=points[i];py=points[i+1];qx=otherpoints[j];qy=otherpoints[j+1];bottom=0;if(px===qx){for(m=0;m<ps;++m){newpoints.push(points[i+m])}bottom=qy;i+=ps;j+=otherps}else if(px>qx){if(withlines&&i>0&&points[i-ps]!=null){intery=py+(points[i-ps+1]-py)*(qx-px)/(points[i-ps]-px);newpoints.push(qx);newpoints.push(intery);for(m=2;m<ps;++m){newpoints.push(points[i+m])}bottom=qy}j+=otherps}else{if(fromgap&&withlines){i+=ps;continue}for(m=0;m<ps;++m){newpoints.push(points[i+m])}if(withlines&&j>0&&otherpoints[j-otherps]!=null){bottom=qy+(otherpoints[j-otherps+1]-qy)*(px-qx)/(otherpoints[j-otherps]-qx)}i+=ps}fromgap=false;if(l!==newpoints.length&&withbottom){newpoints[l+2]=bottom}}if(withsteps&&l!==newpoints.length&&l>0&&newpoints[l]!==null&&newpoints[l]!==newpoints[l-ps]&&newpoints[l+1]!==newpoints[l-ps+1]){for(m=0;m<ps;++m){newpoints[l+ps+m]=newpoints[l+m]}newpoints[l+1]=newpoints[l-ps+1]}}datapoints.points=newpoints}plot.hooks.processDatapoints.push(computeFillBottoms)}$.plot.plugins.push({init:init,options:options,name:"fillbetween",version:"1.0"})})(jQuery); \ No newline at end of file diff --git a/assets/plugins/flot/jquery.flot.image.js b/assets/plugins/flot/jquery.flot.image.js deleted file mode 100644 index 2e00ab18..00000000 --- a/assets/plugins/flot/jquery.flot.image.js +++ /dev/null @@ -1,241 +0,0 @@ -/* Flot plugin for plotting images. - -Copyright (c) 2007-2013 IOLA and Ole Laursen. -Licensed under the MIT license. - -The data syntax is [ [ image, x1, y1, x2, y2 ], ... ] where (x1, y1) and -(x2, y2) are where you intend the two opposite corners of the image to end up -in the plot. Image must be a fully loaded Javascript image (you can make one -with new Image()). If the image is not complete, it's skipped when plotting. - -There are two helpers included for retrieving images. The easiest work the way -that you put in URLs instead of images in the data, like this: - - [ "myimage.png", 0, 0, 10, 10 ] - -Then call $.plot.image.loadData( data, options, callback ) where data and -options are the same as you pass in to $.plot. This loads the images, replaces -the URLs in the data with the corresponding images and calls "callback" when -all images are loaded (or failed loading). In the callback, you can then call -$.plot with the data set. See the included example. - -A more low-level helper, $.plot.image.load(urls, callback) is also included. -Given a list of URLs, it calls callback with an object mapping from URL to -Image object when all images are loaded or have failed loading. - -The plugin supports these options: - - series: { - images: { - show: boolean - anchor: "corner" or "center" - alpha: [ 0, 1 ] - } - } - -They can be specified for a specific series: - - $.plot( $("#placeholder"), [{ - data: [ ... ], - images: { ... } - ]) - -Note that because the data format is different from usual data points, you -can't use images with anything else in a specific data series. - -Setting "anchor" to "center" causes the pixels in the image to be anchored at -the corner pixel centers inside of at the pixel corners, effectively letting -half a pixel stick out to each side in the plot. - -A possible future direction could be support for tiling for large images (like -Google Maps). - -*/ - -(function ($) { - var options = { - series: { - images: { - show: false, - alpha: 1, - anchor: "corner" // or "center" - } - } - }; - - $.plot.image = {}; - - $.plot.image.loadDataImages = function (series, options, callback) { - var urls = [], points = []; - - var defaultShow = options.series.images.show; - - $.each(series, function (i, s) { - if (!(defaultShow || s.images.show)) - return; - - if (s.data) - s = s.data; - - $.each(s, function (i, p) { - if (typeof p[0] == "string") { - urls.push(p[0]); - points.push(p); - } - }); - }); - - $.plot.image.load(urls, function (loadedImages) { - $.each(points, function (i, p) { - var url = p[0]; - if (loadedImages[url]) - p[0] = loadedImages[url]; - }); - - callback(); - }); - }; - - $.plot.image.load = function (urls, callback) { - var missing = urls.length, loaded = {}; - if (missing == 0) - callback({}); - - $.each(urls, function (i, url) { - var handler = function () { - --missing; - - loaded[url] = this; - - if (missing == 0) - callback(loaded); - }; - - $('<img />').load(handler).error(handler).attr('src', url); - }); - }; - - function drawSeries(plot, ctx, series) { - var plotOffset = plot.getPlotOffset(); - - if (!series.images || !series.images.show) - return; - - var points = series.datapoints.points, - ps = series.datapoints.pointsize; - - for (var i = 0; i < points.length; i += ps) { - var img = points[i], - x1 = points[i + 1], y1 = points[i + 2], - x2 = points[i + 3], y2 = points[i + 4], - xaxis = series.xaxis, yaxis = series.yaxis, - tmp; - - // actually we should check img.complete, but it - // appears to be a somewhat unreliable indicator in - // IE6 (false even after load event) - if (!img || img.width <= 0 || img.height <= 0) - continue; - - if (x1 > x2) { - tmp = x2; - x2 = x1; - x1 = tmp; - } - if (y1 > y2) { - tmp = y2; - y2 = y1; - y1 = tmp; - } - - // if the anchor is at the center of the pixel, expand the - // image by 1/2 pixel in each direction - if (series.images.anchor == "center") { - tmp = 0.5 * (x2-x1) / (img.width - 1); - x1 -= tmp; - x2 += tmp; - tmp = 0.5 * (y2-y1) / (img.height - 1); - y1 -= tmp; - y2 += tmp; - } - - // clip - if (x1 == x2 || y1 == y2 || - x1 >= xaxis.max || x2 <= xaxis.min || - y1 >= yaxis.max || y2 <= yaxis.min) - continue; - - var sx1 = 0, sy1 = 0, sx2 = img.width, sy2 = img.height; - if (x1 < xaxis.min) { - sx1 += (sx2 - sx1) * (xaxis.min - x1) / (x2 - x1); - x1 = xaxis.min; - } - - if (x2 > xaxis.max) { - sx2 += (sx2 - sx1) * (xaxis.max - x2) / (x2 - x1); - x2 = xaxis.max; - } - - if (y1 < yaxis.min) { - sy2 += (sy1 - sy2) * (yaxis.min - y1) / (y2 - y1); - y1 = yaxis.min; - } - - if (y2 > yaxis.max) { - sy1 += (sy1 - sy2) * (yaxis.max - y2) / (y2 - y1); - y2 = yaxis.max; - } - - x1 = xaxis.p2c(x1); - x2 = xaxis.p2c(x2); - y1 = yaxis.p2c(y1); - y2 = yaxis.p2c(y2); - - // the transformation may have swapped us - if (x1 > x2) { - tmp = x2; - x2 = x1; - x1 = tmp; - } - if (y1 > y2) { - tmp = y2; - y2 = y1; - y1 = tmp; - } - - tmp = ctx.globalAlpha; - ctx.globalAlpha *= series.images.alpha; - ctx.drawImage(img, - sx1, sy1, sx2 - sx1, sy2 - sy1, - x1 + plotOffset.left, y1 + plotOffset.top, - x2 - x1, y2 - y1); - ctx.globalAlpha = tmp; - } - } - - function processRawData(plot, series, data, datapoints) { - if (!series.images.show) - return; - - // format is Image, x1, y1, x2, y2 (opposite corners) - datapoints.format = [ - { required: true }, - { x: true, number: true, required: true }, - { y: true, number: true, required: true }, - { x: true, number: true, required: true }, - { y: true, number: true, required: true } - ]; - } - - function init(plot) { - plot.hooks.processRawData.push(processRawData); - plot.hooks.drawSeries.push(drawSeries); - } - - $.plot.plugins.push({ - init: init, - options: options, - name: 'image', - version: '1.1' - }); -})(jQuery); diff --git a/assets/plugins/flot/jquery.flot.image.min.js b/assets/plugins/flot/jquery.flot.image.min.js deleted file mode 100644 index 60600241..00000000 --- a/assets/plugins/flot/jquery.flot.image.min.js +++ /dev/null @@ -1 +0,0 @@ -(function($){var options={series:{images:{show:false,alpha:1,anchor:"corner"}}};$.plot.image={};$.plot.image.loadDataImages=function(series,options,callback){var urls=[],points=[];var defaultShow=options.series.images.show;$.each(series,function(i,s){if(!(defaultShow||s.images.show))return;if(s.data)s=s.data;$.each(s,function(i,p){if(typeof p[0]=="string"){urls.push(p[0]);points.push(p)}})});$.plot.image.load(urls,function(loadedImages){$.each(points,function(i,p){var url=p[0];if(loadedImages[url])p[0]=loadedImages[url]});callback()})};$.plot.image.load=function(urls,callback){var missing=urls.length,loaded={};if(missing==0)callback({});$.each(urls,function(i,url){var handler=function(){--missing;loaded[url]=this;if(missing==0)callback(loaded)};$("<img />").load(handler).error(handler).attr("src",url)})};function drawSeries(plot,ctx,series){var plotOffset=plot.getPlotOffset();if(!series.images||!series.images.show)return;var points=series.datapoints.points,ps=series.datapoints.pointsize;for(var i=0;i<points.length;i+=ps){var img=points[i],x1=points[i+1],y1=points[i+2],x2=points[i+3],y2=points[i+4],xaxis=series.xaxis,yaxis=series.yaxis,tmp;if(!img||img.width<=0||img.height<=0)continue;if(x1>x2){tmp=x2;x2=x1;x1=tmp}if(y1>y2){tmp=y2;y2=y1;y1=tmp}if(series.images.anchor=="center"){tmp=.5*(x2-x1)/(img.width-1);x1-=tmp;x2+=tmp;tmp=.5*(y2-y1)/(img.height-1);y1-=tmp;y2+=tmp}if(x1==x2||y1==y2||x1>=xaxis.max||x2<=xaxis.min||y1>=yaxis.max||y2<=yaxis.min)continue;var sx1=0,sy1=0,sx2=img.width,sy2=img.height;if(x1<xaxis.min){sx1+=(sx2-sx1)*(xaxis.min-x1)/(x2-x1);x1=xaxis.min}if(x2>xaxis.max){sx2+=(sx2-sx1)*(xaxis.max-x2)/(x2-x1);x2=xaxis.max}if(y1<yaxis.min){sy2+=(sy1-sy2)*(yaxis.min-y1)/(y2-y1);y1=yaxis.min}if(y2>yaxis.max){sy1+=(sy1-sy2)*(yaxis.max-y2)/(y2-y1);y2=yaxis.max}x1=xaxis.p2c(x1);x2=xaxis.p2c(x2);y1=yaxis.p2c(y1);y2=yaxis.p2c(y2);if(x1>x2){tmp=x2;x2=x1;x1=tmp}if(y1>y2){tmp=y2;y2=y1;y1=tmp}tmp=ctx.globalAlpha;ctx.globalAlpha*=series.images.alpha;ctx.drawImage(img,sx1,sy1,sx2-sx1,sy2-sy1,x1+plotOffset.left,y1+plotOffset.top,x2-x1,y2-y1);ctx.globalAlpha=tmp}}function processRawData(plot,series,data,datapoints){if(!series.images.show)return;datapoints.format=[{required:true},{x:true,number:true,required:true},{y:true,number:true,required:true},{x:true,number:true,required:true},{y:true,number:true,required:true}]}function init(plot){plot.hooks.processRawData.push(processRawData);plot.hooks.drawSeries.push(drawSeries)}$.plot.plugins.push({init:init,options:options,name:"image",version:"1.1"})})(jQuery); \ No newline at end of file diff --git a/assets/plugins/flot/jquery.flot.js b/assets/plugins/flot/jquery.flot.js deleted file mode 100644 index 965e78ef..00000000 --- a/assets/plugins/flot/jquery.flot.js +++ /dev/null @@ -1,3137 +0,0 @@ -/* Javascript plotting library for jQuery, version 0.8.2. - -Copyright (c) 2007-2013 IOLA and Ole Laursen. -Licensed under the MIT license. - -*/ - -// first an inline dependency, jquery.colorhelpers.js, we inline it here -// for convenience - -/* Plugin for jQuery for working with colors. - * - * Version 1.1. - * - * Inspiration from jQuery color animation plugin by John Resig. - * - * Released under the MIT license by Ole Laursen, October 2009. - * - * Examples: - * - * $.color.parse("#fff").scale('rgb', 0.25).add('a', -0.5).toString() - * var c = $.color.extract($("#mydiv"), 'background-color'); - * console.log(c.r, c.g, c.b, c.a); - * $.color.make(100, 50, 25, 0.4).toString() // returns "rgba(100,50,25,0.4)" - * - * Note that .scale() and .add() return the same modified object - * instead of making a new one. - * - * V. 1.1: Fix error handling so e.g. parsing an empty string does - * produce a color rather than just crashing. - */ -(function($){$.color={};$.color.make=function(r,g,b,a){var o={};o.r=r||0;o.g=g||0;o.b=b||0;o.a=a!=null?a:1;o.add=function(c,d){for(var i=0;i<c.length;++i)o[c.charAt(i)]+=d;return o.normalize()};o.scale=function(c,f){for(var i=0;i<c.length;++i)o[c.charAt(i)]*=f;return o.normalize()};o.toString=function(){if(o.a>=1){return"rgb("+[o.r,o.g,o.b].join(",")+")"}else{return"rgba("+[o.r,o.g,o.b,o.a].join(",")+")"}};o.normalize=function(){function clamp(min,value,max){return value<min?min:value>max?max:value}o.r=clamp(0,parseInt(o.r),255);o.g=clamp(0,parseInt(o.g),255);o.b=clamp(0,parseInt(o.b),255);o.a=clamp(0,o.a,1);return o};o.clone=function(){return $.color.make(o.r,o.b,o.g,o.a)};return o.normalize()};$.color.extract=function(elem,css){var c;do{c=elem.css(css).toLowerCase();if(c!=""&&c!="transparent")break;elem=elem.parent()}while(elem.length&&!$.nodeName(elem.get(0),"body"));if(c=="rgba(0, 0, 0, 0)")c="transparent";return $.color.parse(c)};$.color.parse=function(str){var res,m=$.color.make;if(res=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10));if(res=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10),parseFloat(res[4]));if(res=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55);if(res=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55,parseFloat(res[4]));if(res=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str))return m(parseInt(res[1],16),parseInt(res[2],16),parseInt(res[3],16));if(res=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str))return m(parseInt(res[1]+res[1],16),parseInt(res[2]+res[2],16),parseInt(res[3]+res[3],16));var name=$.trim(str).toLowerCase();if(name=="transparent")return m(255,255,255,0);else{res=lookupColors[name]||[0,0,0];return m(res[0],res[1],res[2])}};var lookupColors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery); - -// the actual Flot code -(function($) { - - // Cache the prototype hasOwnProperty for faster access - - var hasOwnProperty = Object.prototype.hasOwnProperty; - - /////////////////////////////////////////////////////////////////////////// - // The Canvas object is a wrapper around an HTML5 <canvas> tag. - // - // @constructor - // @param {string} cls List of classes to apply to the canvas. - // @param {element} container Element onto which to append the canvas. - // - // Requiring a container is a little iffy, but unfortunately canvas - // operations don't work unless the canvas is attached to the DOM. - - function Canvas(cls, container) { - - var element = container.children("." + cls)[0]; - - if (element == null) { - - element = document.createElement("canvas"); - element.className = cls; - - $(element).css({ direction: "ltr", position: "absolute", left: 0, top: 0 }) - .appendTo(container); - - // If HTML5 Canvas isn't available, fall back to [Ex|Flash]canvas - - if (!element.getContext) { - if (window.G_vmlCanvasManager) { - element = window.G_vmlCanvasManager.initElement(element); - } else { - throw new Error("Canvas is not available. If you're using IE with a fall-back such as Excanvas, then there's either a mistake in your conditional include, or the page has no DOCTYPE and is rendering in Quirks Mode."); - } - } - } - - this.element = element; - - var context = this.context = element.getContext("2d"); - - // Determine the screen's ratio of physical to device-independent - // pixels. This is the ratio between the canvas width that the browser - // advertises and the number of pixels actually present in that space. - - // The iPhone 4, for example, has a device-independent width of 320px, - // but its screen is actually 640px wide. It therefore has a pixel - // ratio of 2, while most normal devices have a ratio of 1. - - var devicePixelRatio = window.devicePixelRatio || 1, - backingStoreRatio = - context.webkitBackingStorePixelRatio || - context.mozBackingStorePixelRatio || - context.msBackingStorePixelRatio || - context.oBackingStorePixelRatio || - context.backingStorePixelRatio || 1; - - this.pixelRatio = devicePixelRatio / backingStoreRatio; - - // Size the canvas to match the internal dimensions of its container - - this.resize(container.width(), container.height()); - - // Collection of HTML div layers for text overlaid onto the canvas - - this.textContainer = null; - this.text = {}; - - // Cache of text fragments and metrics, so we can avoid expensively - // re-calculating them when the plot is re-rendered in a loop. - - this._textCache = {}; - } - - // Resizes the canvas to the given dimensions. - // - // @param {number} width New width of the canvas, in pixels. - // @param {number} width New height of the canvas, in pixels. - - Canvas.prototype.resize = function(width, height) { - - if (width <= 0 || height <= 0) { - throw new Error("Invalid dimensions for plot, width = " + width + ", height = " + height); - } - - var element = this.element, - context = this.context, - pixelRatio = this.pixelRatio; - - // Resize the canvas, increasing its density based on the display's - // pixel ratio; basically giving it more pixels without increasing the - // size of its element, to take advantage of the fact that retina - // displays have that many more pixels in the same advertised space. - - // Resizing should reset the state (excanvas seems to be buggy though) - - if (this.width != width) { - element.width = width * pixelRatio; - element.style.width = width + "px"; - this.width = width; - } - - if (this.height != height) { - element.height = height * pixelRatio; - element.style.height = height + "px"; - this.height = height; - } - - // Save the context, so we can reset in case we get replotted. The - // restore ensure that we're really back at the initial state, and - // should be safe even if we haven't saved the initial state yet. - - context.restore(); - context.save(); - - // Scale the coordinate space to match the display density; so even though we - // may have twice as many pixels, we still want lines and other drawing to - // appear at the same size; the extra pixels will just make them crisper. - - context.scale(pixelRatio, pixelRatio); - }; - - // Clears the entire canvas area, not including any overlaid HTML text - - Canvas.prototype.clear = function() { - this.context.clearRect(0, 0, this.width, this.height); - }; - - // Finishes rendering the canvas, including managing the text overlay. - - Canvas.prototype.render = function() { - - var cache = this._textCache; - - // For each text layer, add elements marked as active that haven't - // already been rendered, and remove those that are no longer active. - - for (var layerKey in cache) { - if (hasOwnProperty.call(cache, layerKey)) { - - var layer = this.getTextLayer(layerKey), - layerCache = cache[layerKey]; - - layer.hide(); - - for (var styleKey in layerCache) { - if (hasOwnProperty.call(layerCache, styleKey)) { - var styleCache = layerCache[styleKey]; - for (var key in styleCache) { - if (hasOwnProperty.call(styleCache, key)) { - - var positions = styleCache[key].positions; - - for (var i = 0, position; position = positions[i]; i++) { - if (position.active) { - if (!position.rendered) { - layer.append(position.element); - position.rendered = true; - } - } else { - positions.splice(i--, 1); - if (position.rendered) { - position.element.detach(); - } - } - } - - if (positions.length == 0) { - delete styleCache[key]; - } - } - } - } - } - - layer.show(); - } - } - }; - - // Creates (if necessary) and returns the text overlay container. - // - // @param {string} classes String of space-separated CSS classes used to - // uniquely identify the text layer. - // @return {object} The jQuery-wrapped text-layer div. - - Canvas.prototype.getTextLayer = function(classes) { - - var layer = this.text[classes]; - - // Create the text layer if it doesn't exist - - if (layer == null) { - - // Create the text layer container, if it doesn't exist - - if (this.textContainer == null) { - this.textContainer = $("<div class='flot-text'></div>") - .css({ - position: "absolute", - top: 0, - left: 0, - bottom: 0, - right: 0, - 'font-size': "smaller", - color: "#545454" - }) - .insertAfter(this.element); - } - - layer = this.text[classes] = $("<div></div>") - .addClass(classes) - .css({ - position: "absolute", - top: 0, - left: 0, - bottom: 0, - right: 0 - }) - .appendTo(this.textContainer); - } - - return layer; - }; - - // Creates (if necessary) and returns a text info object. - // - // The object looks like this: - // - // { - // width: Width of the text's wrapper div. - // height: Height of the text's wrapper div. - // element: The jQuery-wrapped HTML div containing the text. - // positions: Array of positions at which this text is drawn. - // } - // - // The positions array contains objects that look like this: - // - // { - // active: Flag indicating whether the text should be visible. - // rendered: Flag indicating whether the text is currently visible. - // element: The jQuery-wrapped HTML div containing the text. - // x: X coordinate at which to draw the text. - // y: Y coordinate at which to draw the text. - // } - // - // Each position after the first receives a clone of the original element. - // - // The idea is that that the width, height, and general 'identity' of the - // text is constant no matter where it is placed; the placements are a - // secondary property. - // - // Canvas maintains a cache of recently-used text info objects; getTextInfo - // either returns the cached element or creates a new entry. - // - // @param {string} layer A string of space-separated CSS classes uniquely - // identifying the layer containing this text. - // @param {string} text Text string to retrieve info for. - // @param {(string|object)=} font Either a string of space-separated CSS - // classes or a font-spec object, defining the text's font and style. - // @param {number=} angle Angle at which to rotate the text, in degrees. - // Angle is currently unused, it will be implemented in the future. - // @param {number=} width Maximum width of the text before it wraps. - // @return {object} a text info object. - - Canvas.prototype.getTextInfo = function(layer, text, font, angle, width) { - - var textStyle, layerCache, styleCache, info; - - // Cast the value to a string, in case we were given a number or such - - text = "" + text; - - // If the font is a font-spec object, generate a CSS font definition - - if (typeof font === "object") { - textStyle = font.style + " " + font.variant + " " + font.weight + " " + font.size + "px/" + font.lineHeight + "px " + font.family; - } else { - textStyle = font; - } - - // Retrieve (or create) the cache for the text's layer and styles - - layerCache = this._textCache[layer]; - - if (layerCache == null) { - layerCache = this._textCache[layer] = {}; - } - - styleCache = layerCache[textStyle]; - - if (styleCache == null) { - styleCache = layerCache[textStyle] = {}; - } - - info = styleCache[text]; - - // If we can't find a matching element in our cache, create a new one - - if (info == null) { - - var element = $("<div></div>").html(text) - .css({ - position: "absolute", - 'max-width': width, - top: -9999 - }) - .appendTo(this.getTextLayer(layer)); - - if (typeof font === "object") { - element.css({ - font: textStyle, - color: font.color - }); - } else if (typeof font === "string") { - element.addClass(font); - } - - info = styleCache[text] = { - width: element.outerWidth(true), - height: element.outerHeight(true), - element: element, - positions: [] - }; - - element.detach(); - } - - return info; - }; - - // Adds a text string to the canvas text overlay. - // - // The text isn't drawn immediately; it is marked as rendering, which will - // result in its addition to the canvas on the next render pass. - // - // @param {string} layer A string of space-separated CSS classes uniquely - // identifying the layer containing this text. - // @param {number} x X coordinate at which to draw the text. - // @param {number} y Y coordinate at which to draw the text. - // @param {string} text Text string to draw. - // @param {(string|object)=} font Either a string of space-separated CSS - // classes or a font-spec object, defining the text's font and style. - // @param {number=} angle Angle at which to rotate the text, in degrees. - // Angle is currently unused, it will be implemented in the future. - // @param {number=} width Maximum width of the text before it wraps. - // @param {string=} halign Horizontal alignment of the text; either "left", - // "center" or "right". - // @param {string=} valign Vertical alignment of the text; either "top", - // "middle" or "bottom". - - Canvas.prototype.addText = function(layer, x, y, text, font, angle, width, halign, valign) { - - var info = this.getTextInfo(layer, text, font, angle, width), - positions = info.positions; - - // Tweak the div's position to match the text's alignment - - if (halign == "center") { - x -= info.width / 2; - } else if (halign == "right") { - x -= info.width; - } - - if (valign == "middle") { - y -= info.height / 2; - } else if (valign == "bottom") { - y -= info.height; - } - - // Determine whether this text already exists at this position. - // If so, mark it for inclusion in the next render pass. - - for (var i = 0, position; position = positions[i]; i++) { - if (position.x == x && position.y == y) { - position.active = true; - return; - } - } - - // If the text doesn't exist at this position, create a new entry - - // For the very first position we'll re-use the original element, - // while for subsequent ones we'll clone it. - - position = { - active: true, - rendered: false, - element: positions.length ? info.element.clone() : info.element, - x: x, - y: y - }; - - positions.push(position); - - // Move the element to its final position within the container - - position.element.css({ - top: Math.round(y), - left: Math.round(x), - 'text-align': halign // In case the text wraps - }); - }; - - // Removes one or more text strings from the canvas text overlay. - // - // If no parameters are given, all text within the layer is removed. - // - // Note that the text is not immediately removed; it is simply marked as - // inactive, which will result in its removal on the next render pass. - // This avoids the performance penalty for 'clear and redraw' behavior, - // where we potentially get rid of all text on a layer, but will likely - // add back most or all of it later, as when redrawing axes, for example. - // - // @param {string} layer A string of space-separated CSS classes uniquely - // identifying the layer containing this text. - // @param {number=} x X coordinate of the text. - // @param {number=} y Y coordinate of the text. - // @param {string=} text Text string to remove. - // @param {(string|object)=} font Either a string of space-separated CSS - // classes or a font-spec object, defining the text's font and style. - // @param {number=} angle Angle at which the text is rotated, in degrees. - // Angle is currently unused, it will be implemented in the future. - - Canvas.prototype.removeText = function(layer, x, y, text, font, angle) { - if (text == null) { - var layerCache = this._textCache[layer]; - if (layerCache != null) { - for (var styleKey in layerCache) { - if (hasOwnProperty.call(layerCache, styleKey)) { - var styleCache = layerCache[styleKey]; - for (var key in styleCache) { - if (hasOwnProperty.call(styleCache, key)) { - var positions = styleCache[key].positions; - for (var i = 0, position; position = positions[i]; i++) { - position.active = false; - } - } - } - } - } - } - } else { - var positions = this.getTextInfo(layer, text, font, angle).positions; - for (var i = 0, position; position = positions[i]; i++) { - if (position.x == x && position.y == y) { - position.active = false; - } - } - } - }; - - /////////////////////////////////////////////////////////////////////////// - // The top-level container for the entire plot. - - function Plot(placeholder, data_, options_, plugins) { - // data is on the form: - // [ series1, series2 ... ] - // where series is either just the data as [ [x1, y1], [x2, y2], ... ] - // or { data: [ [x1, y1], [x2, y2], ... ], label: "some label", ... } - - var series = [], - options = { - // the color theme used for graphs - colors: ["#edc240", "#afd8f8", "#cb4b4b", "#4da74d", "#9440ed"], - legend: { - show: true, - noColumns: 1, // number of colums in legend table - labelFormatter: null, // fn: string -> string - labelBoxBorderColor: "#ccc", // border color for the little label boxes - container: null, // container (as jQuery object) to put legend in, null means default on top of graph - position: "ne", // position of default legend container within plot - margin: 5, // distance from grid edge to default legend container within plot - backgroundColor: null, // null means auto-detect - backgroundOpacity: 0.85, // set to 0 to avoid background - sorted: null // default to no legend sorting - }, - xaxis: { - show: null, // null = auto-detect, true = always, false = never - position: "bottom", // or "top" - mode: null, // null or "time" - font: null, // null (derived from CSS in placeholder) or object like { size: 11, lineHeight: 13, style: "italic", weight: "bold", family: "sans-serif", variant: "small-caps" } - color: null, // base color, labels, ticks - tickColor: null, // possibly different color of ticks, e.g. "rgba(0,0,0,0.15)" - transform: null, // null or f: number -> number to transform axis - inverseTransform: null, // if transform is set, this should be the inverse function - min: null, // min. value to show, null means set automatically - max: null, // max. value to show, null means set automatically - autoscaleMargin: null, // margin in % to add if auto-setting min/max - ticks: null, // either [1, 3] or [[1, "a"], 3] or (fn: axis info -> ticks) or app. number of ticks for auto-ticks - tickFormatter: null, // fn: number -> string - labelWidth: null, // size of tick labels in pixels - labelHeight: null, - reserveSpace: null, // whether to reserve space even if axis isn't shown - tickLength: null, // size in pixels of ticks, or "full" for whole line - alignTicksWithAxis: null, // axis number or null for no sync - tickDecimals: null, // no. of decimals, null means auto - tickSize: null, // number or [number, "unit"] - minTickSize: null // number or [number, "unit"] - }, - yaxis: { - autoscaleMargin: 0.02, - position: "left" // or "right" - }, - xaxes: [], - yaxes: [], - series: { - points: { - show: false, - radius: 3, - lineWidth: 2, // in pixels - fill: true, - fillColor: "#ffffff", - symbol: "circle" // or callback - }, - lines: { - // we don't put in show: false so we can see - // whether lines were actively disabled - lineWidth: 2, // in pixels - fill: false, - fillColor: null, - steps: false - // Omit 'zero', so we can later default its value to - // match that of the 'fill' option. - }, - bars: { - show: false, - lineWidth: 2, // in pixels - barWidth: 1, // in units of the x axis - fill: true, - fillColor: null, - align: "left", // "left", "right", or "center" - horizontal: false, - zero: true - }, - shadowSize: 3, - highlightColor: null - }, - grid: { - show: true, - aboveData: false, - color: "#545454", // primary color used for outline and labels - backgroundColor: null, // null for transparent, else color - borderColor: null, // set if different from the grid color - tickColor: null, // color for the ticks, e.g. "rgba(0,0,0,0.15)" - margin: 0, // distance from the canvas edge to the grid - labelMargin: 5, // in pixels - axisMargin: 8, // in pixels - borderWidth: 2, // in pixels - minBorderMargin: null, // in pixels, null means taken from points radius - markings: null, // array of ranges or fn: axes -> array of ranges - markingsColor: "#f4f4f4", - markingsLineWidth: 2, - // interactive stuff - clickable: false, - hoverable: false, - autoHighlight: true, // highlight in case mouse is near - mouseActiveRadius: 10 // how far the mouse can be away to activate an item - }, - interaction: { - redrawOverlayInterval: 1000/60 // time between updates, -1 means in same flow - }, - hooks: {} - }, - surface = null, // the canvas for the plot itself - overlay = null, // canvas for interactive stuff on top of plot - eventHolder = null, // jQuery object that events should be bound to - ctx = null, octx = null, - xaxes = [], yaxes = [], - plotOffset = { left: 0, right: 0, top: 0, bottom: 0}, - plotWidth = 0, plotHeight = 0, - hooks = { - processOptions: [], - processRawData: [], - processDatapoints: [], - processOffset: [], - drawBackground: [], - drawSeries: [], - draw: [], - bindEvents: [], - drawOverlay: [], - shutdown: [] - }, - plot = this; - - // public functions - plot.setData = setData; - plot.setupGrid = setupGrid; - plot.draw = draw; - plot.getPlaceholder = function() { return placeholder; }; - plot.getCanvas = function() { return surface.element; }; - plot.getPlotOffset = function() { return plotOffset; }; - plot.width = function () { return plotWidth; }; - plot.height = function () { return plotHeight; }; - plot.offset = function () { - var o = eventHolder.offset(); - o.left += plotOffset.left; - o.top += plotOffset.top; - return o; - }; - plot.getData = function () { return series; }; - plot.getAxes = function () { - var res = {}, i; - $.each(xaxes.concat(yaxes), function (_, axis) { - if (axis) - res[axis.direction + (axis.n != 1 ? axis.n : "") + "axis"] = axis; - }); - return res; - }; - plot.getXAxes = function () { return xaxes; }; - plot.getYAxes = function () { return yaxes; }; - plot.c2p = canvasToAxisCoords; - plot.p2c = axisToCanvasCoords; - plot.getOptions = function () { return options; }; - plot.highlight = highlight; - plot.unhighlight = unhighlight; - plot.triggerRedrawOverlay = triggerRedrawOverlay; - plot.pointOffset = function(point) { - return { - left: parseInt(xaxes[axisNumber(point, "x") - 1].p2c(+point.x) + plotOffset.left, 10), - top: parseInt(yaxes[axisNumber(point, "y") - 1].p2c(+point.y) + plotOffset.top, 10) - }; - }; - plot.shutdown = shutdown; - plot.destroy = function () { - shutdown(); - placeholder.removeData("plot").empty(); - - series = []; - options = null; - surface = null; - overlay = null; - eventHolder = null; - ctx = null; - octx = null; - xaxes = []; - yaxes = []; - hooks = null; - highlights = []; - plot = null; - }; - plot.resize = function () { - var width = placeholder.width(), - height = placeholder.height(); - surface.resize(width, height); - overlay.resize(width, height); - }; - - // public attributes - plot.hooks = hooks; - - // initialize - initPlugins(plot); - parseOptions(options_); - setupCanvases(); - setData(data_); - setupGrid(); - draw(); - bindEvents(); - - - function executeHooks(hook, args) { - args = [plot].concat(args); - for (var i = 0; i < hook.length; ++i) - hook[i].apply(this, args); - } - - function initPlugins() { - - // References to key classes, allowing plugins to modify them - - var classes = { - Canvas: Canvas - }; - - for (var i = 0; i < plugins.length; ++i) { - var p = plugins[i]; - p.init(plot, classes); - if (p.options) - $.extend(true, options, p.options); - } - } - - function parseOptions(opts) { - - $.extend(true, options, opts); - - // $.extend merges arrays, rather than replacing them. When less - // colors are provided than the size of the default palette, we - // end up with those colors plus the remaining defaults, which is - // not expected behavior; avoid it by replacing them here. - - if (opts && opts.colors) { - options.colors = opts.colors; - } - - if (options.xaxis.color == null) - options.xaxis.color = $.color.parse(options.grid.color).scale('a', 0.22).toString(); - if (options.yaxis.color == null) - options.yaxis.color = $.color.parse(options.grid.color).scale('a', 0.22).toString(); - - if (options.xaxis.tickColor == null) // grid.tickColor for back-compatibility - options.xaxis.tickColor = options.grid.tickColor || options.xaxis.color; - if (options.yaxis.tickColor == null) // grid.tickColor for back-compatibility - options.yaxis.tickColor = options.grid.tickColor || options.yaxis.color; - - if (options.grid.borderColor == null) - options.grid.borderColor = options.grid.color; - if (options.grid.tickColor == null) - options.grid.tickColor = $.color.parse(options.grid.color).scale('a', 0.22).toString(); - - // Fill in defaults for axis options, including any unspecified - // font-spec fields, if a font-spec was provided. - - // If no x/y axis options were provided, create one of each anyway, - // since the rest of the code assumes that they exist. - - var i, axisOptions, axisCount, - fontSize = placeholder.css("font-size"), - fontSizeDefault = fontSize ? +fontSize.replace("px", "") : 13, - fontDefaults = { - style: placeholder.css("font-style"), - size: Math.round(0.8 * fontSizeDefault), - variant: placeholder.css("font-variant"), - weight: placeholder.css("font-weight"), - family: placeholder.css("font-family") - }; - - axisCount = options.xaxes.length || 1; - for (i = 0; i < axisCount; ++i) { - - axisOptions = options.xaxes[i]; - if (axisOptions && !axisOptions.tickColor) { - axisOptions.tickColor = axisOptions.color; - } - - axisOptions = $.extend(true, {}, options.xaxis, axisOptions); - options.xaxes[i] = axisOptions; - - if (axisOptions.font) { - axisOptions.font = $.extend({}, fontDefaults, axisOptions.font); - if (!axisOptions.font.color) { - axisOptions.font.color = axisOptions.color; - } - if (!axisOptions.font.lineHeight) { - axisOptions.font.lineHeight = Math.round(axisOptions.font.size * 1.15); - } - } - } - - axisCount = options.yaxes.length || 1; - for (i = 0; i < axisCount; ++i) { - - axisOptions = options.yaxes[i]; - if (axisOptions && !axisOptions.tickColor) { - axisOptions.tickColor = axisOptions.color; - } - - axisOptions = $.extend(true, {}, options.yaxis, axisOptions); - options.yaxes[i] = axisOptions; - - if (axisOptions.font) { - axisOptions.font = $.extend({}, fontDefaults, axisOptions.font); - if (!axisOptions.font.color) { - axisOptions.font.color = axisOptions.color; - } - if (!axisOptions.font.lineHeight) { - axisOptions.font.lineHeight = Math.round(axisOptions.font.size * 1.15); - } - } - } - - // backwards compatibility, to be removed in future - if (options.xaxis.noTicks && options.xaxis.ticks == null) - options.xaxis.ticks = options.xaxis.noTicks; - if (options.yaxis.noTicks && options.yaxis.ticks == null) - options.yaxis.ticks = options.yaxis.noTicks; - if (options.x2axis) { - options.xaxes[1] = $.extend(true, {}, options.xaxis, options.x2axis); - options.xaxes[1].position = "top"; - } - if (options.y2axis) { - options.yaxes[1] = $.extend(true, {}, options.yaxis, options.y2axis); - options.yaxes[1].position = "right"; - } - if (options.grid.coloredAreas) - options.grid.markings = options.grid.coloredAreas; - if (options.grid.coloredAreasColor) - options.grid.markingsColor = options.grid.coloredAreasColor; - if (options.lines) - $.extend(true, options.series.lines, options.lines); - if (options.points) - $.extend(true, options.series.points, options.points); - if (options.bars) - $.extend(true, options.series.bars, options.bars); - if (options.shadowSize != null) - options.series.shadowSize = options.shadowSize; - if (options.highlightColor != null) - options.series.highlightColor = options.highlightColor; - - // save options on axes for future reference - for (i = 0; i < options.xaxes.length; ++i) - getOrCreateAxis(xaxes, i + 1).options = options.xaxes[i]; - for (i = 0; i < options.yaxes.length; ++i) - getOrCreateAxis(yaxes, i + 1).options = options.yaxes[i]; - - // add hooks from options - for (var n in hooks) - if (options.hooks[n] && options.hooks[n].length) - hooks[n] = hooks[n].concat(options.hooks[n]); - - executeHooks(hooks.processOptions, [options]); - } - - function setData(d) { - series = parseData(d); - fillInSeriesOptions(); - processData(); - } - - function parseData(d) { - var res = []; - for (var i = 0; i < d.length; ++i) { - var s = $.extend(true, {}, options.series); - - if (d[i].data != null) { - s.data = d[i].data; // move the data instead of deep-copy - delete d[i].data; - - $.extend(true, s, d[i]); - - d[i].data = s.data; - } - else - s.data = d[i]; - res.push(s); - } - - return res; - } - - function axisNumber(obj, coord) { - var a = obj[coord + "axis"]; - if (typeof a == "object") // if we got a real axis, extract number - a = a.n; - if (typeof a != "number") - a = 1; // default to first axis - return a; - } - - function allAxes() { - // return flat array without annoying null entries - return $.grep(xaxes.concat(yaxes), function (a) { return a; }); - } - - function canvasToAxisCoords(pos) { - // return an object with x/y corresponding to all used axes - var res = {}, i, axis; - for (i = 0; i < xaxes.length; ++i) { - axis = xaxes[i]; - if (axis && axis.used) - res["x" + axis.n] = axis.c2p(pos.left); - } - - for (i = 0; i < yaxes.length; ++i) { - axis = yaxes[i]; - if (axis && axis.used) - res["y" + axis.n] = axis.c2p(pos.top); - } - - if (res.x1 !== undefined) - res.x = res.x1; - if (res.y1 !== undefined) - res.y = res.y1; - - return res; - } - - function axisToCanvasCoords(pos) { - // get canvas coords from the first pair of x/y found in pos - var res = {}, i, axis, key; - - for (i = 0; i < xaxes.length; ++i) { - axis = xaxes[i]; - if (axis && axis.used) { - key = "x" + axis.n; - if (pos[key] == null && axis.n == 1) - key = "x"; - - if (pos[key] != null) { - res.left = axis.p2c(pos[key]); - break; - } - } - } - - for (i = 0; i < yaxes.length; ++i) { - axis = yaxes[i]; - if (axis && axis.used) { - key = "y" + axis.n; - if (pos[key] == null && axis.n == 1) - key = "y"; - - if (pos[key] != null) { - res.top = axis.p2c(pos[key]); - break; - } - } - } - - return res; - } - - function getOrCreateAxis(axes, number) { - if (!axes[number - 1]) - axes[number - 1] = { - n: number, // save the number for future reference - direction: axes == xaxes ? "x" : "y", - options: $.extend(true, {}, axes == xaxes ? options.xaxis : options.yaxis) - }; - - return axes[number - 1]; - } - - function fillInSeriesOptions() { - - var neededColors = series.length, maxIndex = -1, i; - - // Subtract the number of series that already have fixed colors or - // color indexes from the number that we still need to generate. - - for (i = 0; i < series.length; ++i) { - var sc = series[i].color; - if (sc != null) { - neededColors--; - if (typeof sc == "number" && sc > maxIndex) { - maxIndex = sc; - } - } - } - - // If any of the series have fixed color indexes, then we need to - // generate at least as many colors as the highest index. - - if (neededColors <= maxIndex) { - neededColors = maxIndex + 1; - } - - // Generate all the colors, using first the option colors and then - // variations on those colors once they're exhausted. - - var c, colors = [], colorPool = options.colors, - colorPoolSize = colorPool.length, variation = 0; - - for (i = 0; i < neededColors; i++) { - - c = $.color.parse(colorPool[i % colorPoolSize] || "#666"); - - // Each time we exhaust the colors in the pool we adjust - // a scaling factor used to produce more variations on - // those colors. The factor alternates negative/positive - // to produce lighter/darker colors. - - // Reset the variation after every few cycles, or else - // it will end up producing only white or black colors. - - if (i % colorPoolSize == 0 && i) { - if (variation >= 0) { - if (variation < 0.5) { - variation = -variation - 0.2; - } else variation = 0; - } else variation = -variation; - } - - colors[i] = c.scale('rgb', 1 + variation); - } - - // Finalize the series options, filling in their colors - - var colori = 0, s; - for (i = 0; i < series.length; ++i) { - s = series[i]; - - // assign colors - if (s.color == null) { - s.color = colors[colori].toString(); - ++colori; - } - else if (typeof s.color == "number") - s.color = colors[s.color].toString(); - - // turn on lines automatically in case nothing is set - if (s.lines.show == null) { - var v, show = true; - for (v in s) - if (s[v] && s[v].show) { - show = false; - break; - } - if (show) - s.lines.show = true; - } - - // If nothing was provided for lines.zero, default it to match - // lines.fill, since areas by default should extend to zero. - - if (s.lines.zero == null) { - s.lines.zero = !!s.lines.fill; - } - - // setup axes - s.xaxis = getOrCreateAxis(xaxes, axisNumber(s, "x")); - s.yaxis = getOrCreateAxis(yaxes, axisNumber(s, "y")); - } - } - - function processData() { - var topSentry = Number.POSITIVE_INFINITY, - bottomSentry = Number.NEGATIVE_INFINITY, - fakeInfinity = Number.MAX_VALUE, - i, j, k, m, length, - s, points, ps, x, y, axis, val, f, p, - data, format; - - function updateAxis(axis, min, max) { - if (min < axis.datamin && min != -fakeInfinity) - axis.datamin = min; - if (max > axis.datamax && max != fakeInfinity) - axis.datamax = max; - } - - $.each(allAxes(), function (_, axis) { - // init axis - axis.datamin = topSentry; - axis.datamax = bottomSentry; - axis.used = false; - }); - - for (i = 0; i < series.length; ++i) { - s = series[i]; - s.datapoints = { points: [] }; - - executeHooks(hooks.processRawData, [ s, s.data, s.datapoints ]); - } - - // first pass: clean and copy data - for (i = 0; i < series.length; ++i) { - s = series[i]; - - data = s.data; - format = s.datapoints.format; - - if (!format) { - format = []; - // find out how to copy - format.push({ x: true, number: true, required: true }); - format.push({ y: true, number: true, required: true }); - - if (s.bars.show || (s.lines.show && s.lines.fill)) { - var autoscale = !!((s.bars.show && s.bars.zero) || (s.lines.show && s.lines.zero)); - format.push({ y: true, number: true, required: false, defaultValue: 0, autoscale: autoscale }); - if (s.bars.horizontal) { - delete format[format.length - 1].y; - format[format.length - 1].x = true; - } - } - - s.datapoints.format = format; - } - - if (s.datapoints.pointsize != null) - continue; // already filled in - - s.datapoints.pointsize = format.length; - - ps = s.datapoints.pointsize; - points = s.datapoints.points; - - var insertSteps = s.lines.show && s.lines.steps; - s.xaxis.used = s.yaxis.used = true; - - for (j = k = 0; j < data.length; ++j, k += ps) { - p = data[j]; - - var nullify = p == null; - if (!nullify) { - for (m = 0; m < ps; ++m) { - val = p[m]; - f = format[m]; - - if (f) { - if (f.number && val != null) { - val = +val; // convert to number - if (isNaN(val)) - val = null; - else if (val == Infinity) - val = fakeInfinity; - else if (val == -Infinity) - val = -fakeInfinity; - } - - if (val == null) { - if (f.required) - nullify = true; - - if (f.defaultValue != null) - val = f.defaultValue; - } - } - - points[k + m] = val; - } - } - - if (nullify) { - for (m = 0; m < ps; ++m) { - val = points[k + m]; - if (val != null) { - f = format[m]; - // extract min/max info - if (f.autoscale !== false) { - if (f.x) { - updateAxis(s.xaxis, val, val); - } - if (f.y) { - updateAxis(s.yaxis, val, val); - } - } - } - points[k + m] = null; - } - } - else { - // a little bit of line specific stuff that - // perhaps shouldn't be here, but lacking - // better means... - if (insertSteps && k > 0 - && points[k - ps] != null - && points[k - ps] != points[k] - && points[k - ps + 1] != points[k + 1]) { - // copy the point to make room for a middle point - for (m = 0; m < ps; ++m) - points[k + ps + m] = points[k + m]; - - // middle point has same y - points[k + 1] = points[k - ps + 1]; - - // we've added a point, better reflect that - k += ps; - } - } - } - } - - // give the hooks a chance to run - for (i = 0; i < series.length; ++i) { - s = series[i]; - - executeHooks(hooks.processDatapoints, [ s, s.datapoints]); - } - - // second pass: find datamax/datamin for auto-scaling - for (i = 0; i < series.length; ++i) { - s = series[i]; - points = s.datapoints.points; - ps = s.datapoints.pointsize; - format = s.datapoints.format; - - var xmin = topSentry, ymin = topSentry, - xmax = bottomSentry, ymax = bottomSentry; - - for (j = 0; j < points.length; j += ps) { - if (points[j] == null) - continue; - - for (m = 0; m < ps; ++m) { - val = points[j + m]; - f = format[m]; - if (!f || f.autoscale === false || val == fakeInfinity || val == -fakeInfinity) - continue; - - if (f.x) { - if (val < xmin) - xmin = val; - if (val > xmax) - xmax = val; - } - if (f.y) { - if (val < ymin) - ymin = val; - if (val > ymax) - ymax = val; - } - } - } - - if (s.bars.show) { - // make sure we got room for the bar on the dancing floor - var delta; - - switch (s.bars.align) { - case "left": - delta = 0; - break; - case "right": - delta = -s.bars.barWidth; - break; - default: - delta = -s.bars.barWidth / 2; - } - - if (s.bars.horizontal) { - ymin += delta; - ymax += delta + s.bars.barWidth; - } - else { - xmin += delta; - xmax += delta + s.bars.barWidth; - } - } - - updateAxis(s.xaxis, xmin, xmax); - updateAxis(s.yaxis, ymin, ymax); - } - - $.each(allAxes(), function (_, axis) { - if (axis.datamin == topSentry) - axis.datamin = null; - if (axis.datamax == bottomSentry) - axis.datamax = null; - }); - } - - function setupCanvases() { - - // Make sure the placeholder is clear of everything except canvases - // from a previous plot in this container that we'll try to re-use. - - placeholder.css("padding", 0) // padding messes up the positioning - .children().filter(function(){ - return !$(this).hasClass("flot-overlay") && !$(this).hasClass('flot-base'); - }).remove(); - - if (placeholder.css("position") == 'static') - placeholder.css("position", "relative"); // for positioning labels and overlay - - surface = new Canvas("flot-base", placeholder); - overlay = new Canvas("flot-overlay", placeholder); // overlay canvas for interactive features - - ctx = surface.context; - octx = overlay.context; - - // define which element we're listening for events on - eventHolder = $(overlay.element).unbind(); - - // If we're re-using a plot object, shut down the old one - - var existing = placeholder.data("plot"); - - if (existing) { - existing.shutdown(); - overlay.clear(); - } - - // save in case we get replotted - placeholder.data("plot", plot); - } - - function bindEvents() { - // bind events - if (options.grid.hoverable) { - eventHolder.mousemove(onMouseMove); - - // Use bind, rather than .mouseleave, because we officially - // still support jQuery 1.2.6, which doesn't define a shortcut - // for mouseenter or mouseleave. This was a bug/oversight that - // was fixed somewhere around 1.3.x. We can return to using - // .mouseleave when we drop support for 1.2.6. - - eventHolder.bind("mouseleave", onMouseLeave); - } - - if (options.grid.clickable) - eventHolder.click(onClick); - - executeHooks(hooks.bindEvents, [eventHolder]); - } - - function shutdown() { - if (redrawTimeout) - clearTimeout(redrawTimeout); - - eventHolder.unbind("mousemove", onMouseMove); - eventHolder.unbind("mouseleave", onMouseLeave); - eventHolder.unbind("click", onClick); - - executeHooks(hooks.shutdown, [eventHolder]); - } - - function setTransformationHelpers(axis) { - // set helper functions on the axis, assumes plot area - // has been computed already - - function identity(x) { return x; } - - var s, m, t = axis.options.transform || identity, - it = axis.options.inverseTransform; - - // precompute how much the axis is scaling a point - // in canvas space - if (axis.direction == "x") { - s = axis.scale = plotWidth / Math.abs(t(axis.max) - t(axis.min)); - m = Math.min(t(axis.max), t(axis.min)); - } - else { - s = axis.scale = plotHeight / Math.abs(t(axis.max) - t(axis.min)); - s = -s; - m = Math.max(t(axis.max), t(axis.min)); - } - - // data point to canvas coordinate - if (t == identity) // slight optimization - axis.p2c = function (p) { return (p - m) * s; }; - else - axis.p2c = function (p) { return (t(p) - m) * s; }; - // canvas coordinate to data point - if (!it) - axis.c2p = function (c) { return m + c / s; }; - else - axis.c2p = function (c) { return it(m + c / s); }; - } - - function measureTickLabels(axis) { - - var opts = axis.options, - ticks = axis.ticks || [], - labelWidth = opts.labelWidth || 0, - labelHeight = opts.labelHeight || 0, - maxWidth = labelWidth || (axis.direction == "x" ? Math.floor(surface.width / (ticks.length || 1)) : null), - legacyStyles = axis.direction + "Axis " + axis.direction + axis.n + "Axis", - layer = "flot-" + axis.direction + "-axis flot-" + axis.direction + axis.n + "-axis " + legacyStyles, - font = opts.font || "flot-tick-label tickLabel"; - - for (var i = 0; i < ticks.length; ++i) { - - var t = ticks[i]; - - if (!t.label) - continue; - - var info = surface.getTextInfo(layer, t.label, font, null, maxWidth); - - labelWidth = Math.max(labelWidth, info.width); - labelHeight = Math.max(labelHeight, info.height); - } - - axis.labelWidth = opts.labelWidth || labelWidth; - axis.labelHeight = opts.labelHeight || labelHeight; - } - - function allocateAxisBoxFirstPhase(axis) { - // find the bounding box of the axis by looking at label - // widths/heights and ticks, make room by diminishing the - // plotOffset; this first phase only looks at one - // dimension per axis, the other dimension depends on the - // other axes so will have to wait - - var lw = axis.labelWidth, - lh = axis.labelHeight, - pos = axis.options.position, - isXAxis = axis.direction === "x", - tickLength = axis.options.tickLength, - axisMargin = options.grid.axisMargin, - padding = options.grid.labelMargin, - innermost = true, - outermost = true, - first = true, - found = false; - - // Determine the axis's position in its direction and on its side - - $.each(isXAxis ? xaxes : yaxes, function(i, a) { - if (a && a.reserveSpace) { - if (a === axis) { - found = true; - } else if (a.options.position === pos) { - if (found) { - outermost = false; - } else { - innermost = false; - } - } - if (!found) { - first = false; - } - } - }); - - // The outermost axis on each side has no margin - - if (outermost) { - axisMargin = 0; - } - - // The ticks for the first axis in each direction stretch across - - if (tickLength == null) { - tickLength = first ? "full" : 5; - } - - if (!isNaN(+tickLength)) - padding += +tickLength; - - if (isXAxis) { - lh += padding; - - if (pos == "bottom") { - plotOffset.bottom += lh + axisMargin; - axis.box = { top: surface.height - plotOffset.bottom, height: lh }; - } - else { - axis.box = { top: plotOffset.top + axisMargin, height: lh }; - plotOffset.top += lh + axisMargin; - } - } - else { - lw += padding; - - if (pos == "left") { - axis.box = { left: plotOffset.left + axisMargin, width: lw }; - plotOffset.left += lw + axisMargin; - } - else { - plotOffset.right += lw + axisMargin; - axis.box = { left: surface.width - plotOffset.right, width: lw }; - } - } - - // save for future reference - axis.position = pos; - axis.tickLength = tickLength; - axis.box.padding = padding; - axis.innermost = innermost; - } - - function allocateAxisBoxSecondPhase(axis) { - // now that all axis boxes have been placed in one - // dimension, we can set the remaining dimension coordinates - if (axis.direction == "x") { - axis.box.left = plotOffset.left - axis.labelWidth / 2; - axis.box.width = surface.width - plotOffset.left - plotOffset.right + axis.labelWidth; - } - else { - axis.box.top = plotOffset.top - axis.labelHeight / 2; - axis.box.height = surface.height - plotOffset.bottom - plotOffset.top + axis.labelHeight; - } - } - - function adjustLayoutForThingsStickingOut() { - // possibly adjust plot offset to ensure everything stays - // inside the canvas and isn't clipped off - - var minMargin = options.grid.minBorderMargin, - axis, i; - - // check stuff from the plot (FIXME: this should just read - // a value from the series, otherwise it's impossible to - // customize) - if (minMargin == null) { - minMargin = 0; - for (i = 0; i < series.length; ++i) - minMargin = Math.max(minMargin, 2 * (series[i].points.radius + series[i].points.lineWidth/2)); - } - - var margins = { - left: minMargin, - right: minMargin, - top: minMargin, - bottom: minMargin - }; - - // check axis labels, note we don't check the actual - // labels but instead use the overall width/height to not - // jump as much around with replots - $.each(allAxes(), function (_, axis) { - if (axis.reserveSpace && axis.ticks && axis.ticks.length) { - var lastTick = axis.ticks[axis.ticks.length - 1]; - if (axis.direction === "x") { - margins.left = Math.max(margins.left, axis.labelWidth / 2); - if (lastTick.v <= axis.max) { - margins.right = Math.max(margins.right, axis.labelWidth / 2); - } - } else { - margins.bottom = Math.max(margins.bottom, axis.labelHeight / 2); - if (lastTick.v <= axis.max) { - margins.top = Math.max(margins.top, axis.labelHeight / 2); - } - } - } - }); - - plotOffset.left = Math.ceil(Math.max(margins.left, plotOffset.left)); - plotOffset.right = Math.ceil(Math.max(margins.right, plotOffset.right)); - plotOffset.top = Math.ceil(Math.max(margins.top, plotOffset.top)); - plotOffset.bottom = Math.ceil(Math.max(margins.bottom, plotOffset.bottom)); - } - - function setupGrid() { - var i, axes = allAxes(), showGrid = options.grid.show; - - // Initialize the plot's offset from the edge of the canvas - - for (var a in plotOffset) { - var margin = options.grid.margin || 0; - plotOffset[a] = typeof margin == "number" ? margin : margin[a] || 0; - } - - executeHooks(hooks.processOffset, [plotOffset]); - - // If the grid is visible, add its border width to the offset - - for (var a in plotOffset) { - if(typeof(options.grid.borderWidth) == "object") { - plotOffset[a] += showGrid ? options.grid.borderWidth[a] : 0; - } - else { - plotOffset[a] += showGrid ? options.grid.borderWidth : 0; - } - } - - // init axes - $.each(axes, function (_, axis) { - axis.show = axis.options.show; - if (axis.show == null) - axis.show = axis.used; // by default an axis is visible if it's got data - - axis.reserveSpace = axis.show || axis.options.reserveSpace; - - setRange(axis); - }); - - if (showGrid) { - - var allocatedAxes = $.grep(axes, function (axis) { return axis.reserveSpace; }); - - $.each(allocatedAxes, function (_, axis) { - // make the ticks - setupTickGeneration(axis); - setTicks(axis); - snapRangeToTicks(axis, axis.ticks); - // find labelWidth/Height for axis - measureTickLabels(axis); - }); - - // with all dimensions calculated, we can compute the - // axis bounding boxes, start from the outside - // (reverse order) - for (i = allocatedAxes.length - 1; i >= 0; --i) - allocateAxisBoxFirstPhase(allocatedAxes[i]); - - // make sure we've got enough space for things that - // might stick out - adjustLayoutForThingsStickingOut(); - - $.each(allocatedAxes, function (_, axis) { - allocateAxisBoxSecondPhase(axis); - }); - } - - plotWidth = surface.width - plotOffset.left - plotOffset.right; - plotHeight = surface.height - plotOffset.bottom - plotOffset.top; - - // now we got the proper plot dimensions, we can compute the scaling - $.each(axes, function (_, axis) { - setTransformationHelpers(axis); - }); - - if (showGrid) { - drawAxisLabels(); - } - - insertLegend(); - } - - function setRange(axis) { - var opts = axis.options, - min = +(opts.min != null ? opts.min : axis.datamin), - max = +(opts.max != null ? opts.max : axis.datamax), - delta = max - min; - - if (delta == 0.0) { - // degenerate case - var widen = max == 0 ? 1 : 0.01; - - if (opts.min == null) - min -= widen; - // always widen max if we couldn't widen min to ensure we - // don't fall into min == max which doesn't work - if (opts.max == null || opts.min != null) - max += widen; - } - else { - // consider autoscaling - var margin = opts.autoscaleMargin; - if (margin != null) { - if (opts.min == null) { - min -= delta * margin; - // make sure we don't go below zero if all values - // are positive - if (min < 0 && axis.datamin != null && axis.datamin >= 0) - min = 0; - } - if (opts.max == null) { - max += delta * margin; - if (max > 0 && axis.datamax != null && axis.datamax <= 0) - max = 0; - } - } - } - axis.min = min; - axis.max = max; - } - - function setupTickGeneration(axis) { - var opts = axis.options; - - // estimate number of ticks - var noTicks; - if (typeof opts.ticks == "number" && opts.ticks > 0) - noTicks = opts.ticks; - else - // heuristic based on the model a*sqrt(x) fitted to - // some data points that seemed reasonable - noTicks = 0.3 * Math.sqrt(axis.direction == "x" ? surface.width : surface.height); - - var delta = (axis.max - axis.min) / noTicks, - dec = -Math.floor(Math.log(delta) / Math.LN10), - maxDec = opts.tickDecimals; - - if (maxDec != null && dec > maxDec) { - dec = maxDec; - } - - var magn = Math.pow(10, -dec), - norm = delta / magn, // norm is between 1.0 and 10.0 - size; - - if (norm < 1.5) { - size = 1; - } else if (norm < 3) { - size = 2; - // special case for 2.5, requires an extra decimal - if (norm > 2.25 && (maxDec == null || dec + 1 <= maxDec)) { - size = 2.5; - ++dec; - } - } else if (norm < 7.5) { - size = 5; - } else { - size = 10; - } - - size *= magn; - - if (opts.minTickSize != null && size < opts.minTickSize) { - size = opts.minTickSize; - } - - axis.delta = delta; - axis.tickDecimals = Math.max(0, maxDec != null ? maxDec : dec); - axis.tickSize = opts.tickSize || size; - - // Time mode was moved to a plug-in in 0.8, but since so many people use this - // we'll add an especially friendly make sure they remembered to include it. - - if (opts.mode == "time" && !axis.tickGenerator) { - throw new Error("Time mode requires the flot.time plugin."); - } - - // Flot supports base-10 axes; any other mode else is handled by a plug-in, - // like flot.time.js. - - if (!axis.tickGenerator) { - - axis.tickGenerator = function (axis) { - - var ticks = [], - start = floorInBase(axis.min, axis.tickSize), - i = 0, - v = Number.NaN, - prev; - - do { - prev = v; - v = start + i * axis.tickSize; - ticks.push(v); - ++i; - } while (v < axis.max && v != prev); - return ticks; - }; - - axis.tickFormatter = function (value, axis) { - - var factor = axis.tickDecimals ? Math.pow(10, axis.tickDecimals) : 1; - var formatted = "" + Math.round(value * factor) / factor; - - // If tickDecimals was specified, ensure that we have exactly that - // much precision; otherwise default to the value's own precision. - - if (axis.tickDecimals != null) { - var decimal = formatted.indexOf("."); - var precision = decimal == -1 ? 0 : formatted.length - decimal - 1; - if (precision < axis.tickDecimals) { - return (precision ? formatted : formatted + ".") + ("" + factor).substr(1, axis.tickDecimals - precision); - } - } - - return formatted; - }; - } - - if ($.isFunction(opts.tickFormatter)) - axis.tickFormatter = function (v, axis) { return "" + opts.tickFormatter(v, axis); }; - - if (opts.alignTicksWithAxis != null) { - var otherAxis = (axis.direction == "x" ? xaxes : yaxes)[opts.alignTicksWithAxis - 1]; - if (otherAxis && otherAxis.used && otherAxis != axis) { - // consider snapping min/max to outermost nice ticks - var niceTicks = axis.tickGenerator(axis); - if (niceTicks.length > 0) { - if (opts.min == null) - axis.min = Math.min(axis.min, niceTicks[0]); - if (opts.max == null && niceTicks.length > 1) - axis.max = Math.max(axis.max, niceTicks[niceTicks.length - 1]); - } - - axis.tickGenerator = function (axis) { - // copy ticks, scaled to this axis - var ticks = [], v, i; - for (i = 0; i < otherAxis.ticks.length; ++i) { - v = (otherAxis.ticks[i].v - otherAxis.min) / (otherAxis.max - otherAxis.min); - v = axis.min + v * (axis.max - axis.min); - ticks.push(v); - } - return ticks; - }; - - // we might need an extra decimal since forced - // ticks don't necessarily fit naturally - if (!axis.mode && opts.tickDecimals == null) { - var extraDec = Math.max(0, -Math.floor(Math.log(axis.delta) / Math.LN10) + 1), - ts = axis.tickGenerator(axis); - - // only proceed if the tick interval rounded - // with an extra decimal doesn't give us a - // zero at end - if (!(ts.length > 1 && /\..*0$/.test((ts[1] - ts[0]).toFixed(extraDec)))) - axis.tickDecimals = extraDec; - } - } - } - } - - function setTicks(axis) { - var oticks = axis.options.ticks, ticks = []; - if (oticks == null || (typeof oticks == "number" && oticks > 0)) - ticks = axis.tickGenerator(axis); - else if (oticks) { - if ($.isFunction(oticks)) - // generate the ticks - ticks = oticks(axis); - else - ticks = oticks; - } - - // clean up/labelify the supplied ticks, copy them over - var i, v; - axis.ticks = []; - for (i = 0; i < ticks.length; ++i) { - var label = null; - var t = ticks[i]; - if (typeof t == "object") { - v = +t[0]; - if (t.length > 1) - label = t[1]; - } - else - v = +t; - if (label == null) - label = axis.tickFormatter(v, axis); - if (!isNaN(v)) - axis.ticks.push({ v: v, label: label }); - } - } - - function snapRangeToTicks(axis, ticks) { - if (axis.options.autoscaleMargin && ticks.length > 0) { - // snap to ticks - if (axis.options.min == null) - axis.min = Math.min(axis.min, ticks[0].v); - if (axis.options.max == null && ticks.length > 1) - axis.max = Math.max(axis.max, ticks[ticks.length - 1].v); - } - } - - function draw() { - - surface.clear(); - - executeHooks(hooks.drawBackground, [ctx]); - - var grid = options.grid; - - // draw background, if any - if (grid.show && grid.backgroundColor) - drawBackground(); - - if (grid.show && !grid.aboveData) { - drawGrid(); - } - - for (var i = 0; i < series.length; ++i) { - executeHooks(hooks.drawSeries, [ctx, series[i]]); - drawSeries(series[i]); - } - - executeHooks(hooks.draw, [ctx]); - - if (grid.show && grid.aboveData) { - drawGrid(); - } - - surface.render(); - - // A draw implies that either the axes or data have changed, so we - // should probably update the overlay highlights as well. - - triggerRedrawOverlay(); - } - - function extractRange(ranges, coord) { - var axis, from, to, key, axes = allAxes(); - - for (var i = 0; i < axes.length; ++i) { - axis = axes[i]; - if (axis.direction == coord) { - key = coord + axis.n + "axis"; - if (!ranges[key] && axis.n == 1) - key = coord + "axis"; // support x1axis as xaxis - if (ranges[key]) { - from = ranges[key].from; - to = ranges[key].to; - break; - } - } - } - - // backwards-compat stuff - to be removed in future - if (!ranges[key]) { - axis = coord == "x" ? xaxes[0] : yaxes[0]; - from = ranges[coord + "1"]; - to = ranges[coord + "2"]; - } - - // auto-reverse as an added bonus - if (from != null && to != null && from > to) { - var tmp = from; - from = to; - to = tmp; - } - - return { from: from, to: to, axis: axis }; - } - - function drawBackground() { - ctx.save(); - ctx.translate(plotOffset.left, plotOffset.top); - - ctx.fillStyle = getColorOrGradient(options.grid.backgroundColor, plotHeight, 0, "rgba(255, 255, 255, 0)"); - ctx.fillRect(0, 0, plotWidth, plotHeight); - ctx.restore(); - } - - function drawGrid() { - var i, axes, bw, bc; - - ctx.save(); - ctx.translate(plotOffset.left, plotOffset.top); - - // draw markings - var markings = options.grid.markings; - if (markings) { - if ($.isFunction(markings)) { - axes = plot.getAxes(); - // xmin etc. is backwards compatibility, to be - // removed in the future - axes.xmin = axes.xaxis.min; - axes.xmax = axes.xaxis.max; - axes.ymin = axes.yaxis.min; - axes.ymax = axes.yaxis.max; - - markings = markings(axes); - } - - for (i = 0; i < markings.length; ++i) { - var m = markings[i], - xrange = extractRange(m, "x"), - yrange = extractRange(m, "y"); - - // fill in missing - if (xrange.from == null) - xrange.from = xrange.axis.min; - if (xrange.to == null) - xrange.to = xrange.axis.max; - if (yrange.from == null) - yrange.from = yrange.axis.min; - if (yrange.to == null) - yrange.to = yrange.axis.max; - - // clip - if (xrange.to < xrange.axis.min || xrange.from > xrange.axis.max || - yrange.to < yrange.axis.min || yrange.from > yrange.axis.max) - continue; - - xrange.from = Math.max(xrange.from, xrange.axis.min); - xrange.to = Math.min(xrange.to, xrange.axis.max); - yrange.from = Math.max(yrange.from, yrange.axis.min); - yrange.to = Math.min(yrange.to, yrange.axis.max); - - if (xrange.from == xrange.to && yrange.from == yrange.to) - continue; - - // then draw - xrange.from = xrange.axis.p2c(xrange.from); - xrange.to = xrange.axis.p2c(xrange.to); - yrange.from = yrange.axis.p2c(yrange.from); - yrange.to = yrange.axis.p2c(yrange.to); - - if (xrange.from == xrange.to || yrange.from == yrange.to) { - // draw line - ctx.beginPath(); - ctx.strokeStyle = m.color || options.grid.markingsColor; - ctx.lineWidth = m.lineWidth || options.grid.markingsLineWidth; - ctx.moveTo(xrange.from, yrange.from); - ctx.lineTo(xrange.to, yrange.to); - ctx.stroke(); - } - else { - // fill area - ctx.fillStyle = m.color || options.grid.markingsColor; - ctx.fillRect(xrange.from, yrange.to, - xrange.to - xrange.from, - yrange.from - yrange.to); - } - } - } - - // draw the ticks - axes = allAxes(); - bw = options.grid.borderWidth; - - for (var j = 0; j < axes.length; ++j) { - var axis = axes[j], box = axis.box, - t = axis.tickLength, x, y, xoff, yoff; - if (!axis.show || axis.ticks.length == 0) - continue; - - ctx.lineWidth = 1; - - // find the edges - if (axis.direction == "x") { - x = 0; - if (t == "full") - y = (axis.position == "top" ? 0 : plotHeight); - else - y = box.top - plotOffset.top + (axis.position == "top" ? box.height : 0); - } - else { - y = 0; - if (t == "full") - x = (axis.position == "left" ? 0 : plotWidth); - else - x = box.left - plotOffset.left + (axis.position == "left" ? box.width : 0); - } - - // draw tick bar - if (!axis.innermost) { - ctx.strokeStyle = axis.options.color; - ctx.beginPath(); - xoff = yoff = 0; - if (axis.direction == "x") - xoff = plotWidth + 1; - else - yoff = plotHeight + 1; - - if (ctx.lineWidth == 1) { - if (axis.direction == "x") { - y = Math.floor(y) + 0.5; - } else { - x = Math.floor(x) + 0.5; - } - } - - ctx.moveTo(x, y); - ctx.lineTo(x + xoff, y + yoff); - ctx.stroke(); - } - - // draw ticks - - ctx.strokeStyle = axis.options.tickColor; - - ctx.beginPath(); - for (i = 0; i < axis.ticks.length; ++i) { - var v = axis.ticks[i].v; - - xoff = yoff = 0; - - if (isNaN(v) || v < axis.min || v > axis.max - // skip those lying on the axes if we got a border - || (t == "full" - && ((typeof bw == "object" && bw[axis.position] > 0) || bw > 0) - && (v == axis.min || v == axis.max))) - continue; - - if (axis.direction == "x") { - x = axis.p2c(v); - yoff = t == "full" ? -plotHeight : t; - - if (axis.position == "top") - yoff = -yoff; - } - else { - y = axis.p2c(v); - xoff = t == "full" ? -plotWidth : t; - - if (axis.position == "left") - xoff = -xoff; - } - - if (ctx.lineWidth == 1) { - if (axis.direction == "x") - x = Math.floor(x) + 0.5; - else - y = Math.floor(y) + 0.5; - } - - ctx.moveTo(x, y); - ctx.lineTo(x + xoff, y + yoff); - } - - ctx.stroke(); - } - - - // draw border - if (bw) { - // If either borderWidth or borderColor is an object, then draw the border - // line by line instead of as one rectangle - bc = options.grid.borderColor; - if(typeof bw == "object" || typeof bc == "object") { - if (typeof bw !== "object") { - bw = {top: bw, right: bw, bottom: bw, left: bw}; - } - if (typeof bc !== "object") { - bc = {top: bc, right: bc, bottom: bc, left: bc}; - } - - if (bw.top > 0) { - ctx.strokeStyle = bc.top; - ctx.lineWidth = bw.top; - ctx.beginPath(); - ctx.moveTo(0 - bw.left, 0 - bw.top/2); - ctx.lineTo(plotWidth, 0 - bw.top/2); - ctx.stroke(); - } - - if (bw.right > 0) { - ctx.strokeStyle = bc.right; - ctx.lineWidth = bw.right; - ctx.beginPath(); - ctx.moveTo(plotWidth + bw.right / 2, 0 - bw.top); - ctx.lineTo(plotWidth + bw.right / 2, plotHeight); - ctx.stroke(); - } - - if (bw.bottom > 0) { - ctx.strokeStyle = bc.bottom; - ctx.lineWidth = bw.bottom; - ctx.beginPath(); - ctx.moveTo(plotWidth + bw.right, plotHeight + bw.bottom / 2); - ctx.lineTo(0, plotHeight + bw.bottom / 2); - ctx.stroke(); - } - - if (bw.left > 0) { - ctx.strokeStyle = bc.left; - ctx.lineWidth = bw.left; - ctx.beginPath(); - ctx.moveTo(0 - bw.left/2, plotHeight + bw.bottom); - ctx.lineTo(0- bw.left/2, 0); - ctx.stroke(); - } - } - else { - ctx.lineWidth = bw; - ctx.strokeStyle = options.grid.borderColor; - ctx.strokeRect(-bw/2, -bw/2, plotWidth + bw, plotHeight + bw); - } - } - - ctx.restore(); - } - - function drawAxisLabels() { - - $.each(allAxes(), function (_, axis) { - var box = axis.box, - legacyStyles = axis.direction + "Axis " + axis.direction + axis.n + "Axis", - layer = "flot-" + axis.direction + "-axis flot-" + axis.direction + axis.n + "-axis " + legacyStyles, - font = axis.options.font || "flot-tick-label tickLabel", - tick, x, y, halign, valign; - - // Remove text before checking for axis.show and ticks.length; - // otherwise plugins, like flot-tickrotor, that draw their own - // tick labels will end up with both theirs and the defaults. - - surface.removeText(layer); - - if (!axis.show || axis.ticks.length == 0) - return; - - for (var i = 0; i < axis.ticks.length; ++i) { - - tick = axis.ticks[i]; - if (!tick.label || tick.v < axis.min || tick.v > axis.max) - continue; - - if (axis.direction == "x") { - halign = "center"; - x = plotOffset.left + axis.p2c(tick.v); - if (axis.position == "bottom") { - y = box.top + box.padding; - } else { - y = box.top + box.height - box.padding; - valign = "bottom"; - } - } else { - valign = "middle"; - y = plotOffset.top + axis.p2c(tick.v); - if (axis.position == "left") { - x = box.left + box.width - box.padding; - halign = "right"; - } else { - x = box.left + box.padding; - } - } - - surface.addText(layer, x, y, tick.label, font, null, null, halign, valign); - } - }); - } - - function drawSeries(series) { - if (series.lines.show) - drawSeriesLines(series); - if (series.bars.show) - drawSeriesBars(series); - if (series.points.show) - drawSeriesPoints(series); - } - - function drawSeriesLines(series) { - function plotLine(datapoints, xoffset, yoffset, axisx, axisy) { - var points = datapoints.points, - ps = datapoints.pointsize, - prevx = null, prevy = null; - - ctx.beginPath(); - for (var i = ps; i < points.length; i += ps) { - var x1 = points[i - ps], y1 = points[i - ps + 1], - x2 = points[i], y2 = points[i + 1]; - - if (x1 == null || x2 == null) - continue; - - // clip with ymin - if (y1 <= y2 && y1 < axisy.min) { - if (y2 < axisy.min) - continue; // line segment is outside - // compute new intersection point - x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; - y1 = axisy.min; - } - else if (y2 <= y1 && y2 < axisy.min) { - if (y1 < axisy.min) - continue; - x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; - y2 = axisy.min; - } - - // clip with ymax - if (y1 >= y2 && y1 > axisy.max) { - if (y2 > axisy.max) - continue; - x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; - y1 = axisy.max; - } - else if (y2 >= y1 && y2 > axisy.max) { - if (y1 > axisy.max) - continue; - x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; - y2 = axisy.max; - } - - // clip with xmin - if (x1 <= x2 && x1 < axisx.min) { - if (x2 < axisx.min) - continue; - y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; - x1 = axisx.min; - } - else if (x2 <= x1 && x2 < axisx.min) { - if (x1 < axisx.min) - continue; - y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; - x2 = axisx.min; - } - - // clip with xmax - if (x1 >= x2 && x1 > axisx.max) { - if (x2 > axisx.max) - continue; - y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; - x1 = axisx.max; - } - else if (x2 >= x1 && x2 > axisx.max) { - if (x1 > axisx.max) - continue; - y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; - x2 = axisx.max; - } - - if (x1 != prevx || y1 != prevy) - ctx.moveTo(axisx.p2c(x1) + xoffset, axisy.p2c(y1) + yoffset); - - prevx = x2; - prevy = y2; - ctx.lineTo(axisx.p2c(x2) + xoffset, axisy.p2c(y2) + yoffset); - } - ctx.stroke(); - } - - function plotLineArea(datapoints, axisx, axisy) { - var points = datapoints.points, - ps = datapoints.pointsize, - bottom = Math.min(Math.max(0, axisy.min), axisy.max), - i = 0, top, areaOpen = false, - ypos = 1, segmentStart = 0, segmentEnd = 0; - - // we process each segment in two turns, first forward - // direction to sketch out top, then once we hit the - // end we go backwards to sketch the bottom - while (true) { - if (ps > 0 && i > points.length + ps) - break; - - i += ps; // ps is negative if going backwards - - var x1 = points[i - ps], - y1 = points[i - ps + ypos], - x2 = points[i], y2 = points[i + ypos]; - - if (areaOpen) { - if (ps > 0 && x1 != null && x2 == null) { - // at turning point - segmentEnd = i; - ps = -ps; - ypos = 2; - continue; - } - - if (ps < 0 && i == segmentStart + ps) { - // done with the reverse sweep - ctx.fill(); - areaOpen = false; - ps = -ps; - ypos = 1; - i = segmentStart = segmentEnd + ps; - continue; - } - } - - if (x1 == null || x2 == null) - continue; - - // clip x values - - // clip with xmin - if (x1 <= x2 && x1 < axisx.min) { - if (x2 < axisx.min) - continue; - y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; - x1 = axisx.min; - } - else if (x2 <= x1 && x2 < axisx.min) { - if (x1 < axisx.min) - continue; - y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; - x2 = axisx.min; - } - - // clip with xmax - if (x1 >= x2 && x1 > axisx.max) { - if (x2 > axisx.max) - continue; - y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; - x1 = axisx.max; - } - else if (x2 >= x1 && x2 > axisx.max) { - if (x1 > axisx.max) - continue; - y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; - x2 = axisx.max; - } - - if (!areaOpen) { - // open area - ctx.beginPath(); - ctx.moveTo(axisx.p2c(x1), axisy.p2c(bottom)); - areaOpen = true; - } - - // now first check the case where both is outside - if (y1 >= axisy.max && y2 >= axisy.max) { - ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.max)); - ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.max)); - continue; - } - else if (y1 <= axisy.min && y2 <= axisy.min) { - ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.min)); - ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.min)); - continue; - } - - // else it's a bit more complicated, there might - // be a flat maxed out rectangle first, then a - // triangular cutout or reverse; to find these - // keep track of the current x values - var x1old = x1, x2old = x2; - - // clip the y values, without shortcutting, we - // go through all cases in turn - - // clip with ymin - if (y1 <= y2 && y1 < axisy.min && y2 >= axisy.min) { - x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; - y1 = axisy.min; - } - else if (y2 <= y1 && y2 < axisy.min && y1 >= axisy.min) { - x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; - y2 = axisy.min; - } - - // clip with ymax - if (y1 >= y2 && y1 > axisy.max && y2 <= axisy.max) { - x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; - y1 = axisy.max; - } - else if (y2 >= y1 && y2 > axisy.max && y1 <= axisy.max) { - x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; - y2 = axisy.max; - } - - // if the x value was changed we got a rectangle - // to fill - if (x1 != x1old) { - ctx.lineTo(axisx.p2c(x1old), axisy.p2c(y1)); - // it goes to (x1, y1), but we fill that below - } - - // fill triangular section, this sometimes result - // in redundant points if (x1, y1) hasn't changed - // from previous line to, but we just ignore that - ctx.lineTo(axisx.p2c(x1), axisy.p2c(y1)); - ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2)); - - // fill the other rectangle if it's there - if (x2 != x2old) { - ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2)); - ctx.lineTo(axisx.p2c(x2old), axisy.p2c(y2)); - } - } - } - - ctx.save(); - ctx.translate(plotOffset.left, plotOffset.top); - ctx.lineJoin = "round"; - - var lw = series.lines.lineWidth, - sw = series.shadowSize; - // FIXME: consider another form of shadow when filling is turned on - if (lw > 0 && sw > 0) { - // draw shadow as a thick and thin line with transparency - ctx.lineWidth = sw; - ctx.strokeStyle = "rgba(0,0,0,0.1)"; - // position shadow at angle from the mid of line - var angle = Math.PI/18; - plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/2), Math.cos(angle) * (lw/2 + sw/2), series.xaxis, series.yaxis); - ctx.lineWidth = sw/2; - plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/4), Math.cos(angle) * (lw/2 + sw/4), series.xaxis, series.yaxis); - } - - ctx.lineWidth = lw; - ctx.strokeStyle = series.color; - var fillStyle = getFillStyle(series.lines, series.color, 0, plotHeight); - if (fillStyle) { - ctx.fillStyle = fillStyle; - plotLineArea(series.datapoints, series.xaxis, series.yaxis); - } - - if (lw > 0) - plotLine(series.datapoints, 0, 0, series.xaxis, series.yaxis); - ctx.restore(); - } - - function drawSeriesPoints(series) { - function plotPoints(datapoints, radius, fillStyle, offset, shadow, axisx, axisy, symbol) { - var points = datapoints.points, ps = datapoints.pointsize; - - for (var i = 0; i < points.length; i += ps) { - var x = points[i], y = points[i + 1]; - if (x == null || x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) - continue; - - ctx.beginPath(); - x = axisx.p2c(x); - y = axisy.p2c(y) + offset; - if (symbol == "circle") - ctx.arc(x, y, radius, 0, shadow ? Math.PI : Math.PI * 2, false); - else - symbol(ctx, x, y, radius, shadow); - ctx.closePath(); - - if (fillStyle) { - ctx.fillStyle = fillStyle; - ctx.fill(); - } - ctx.stroke(); - } - } - - ctx.save(); - ctx.translate(plotOffset.left, plotOffset.top); - - var lw = series.points.lineWidth, - sw = series.shadowSize, - radius = series.points.radius, - symbol = series.points.symbol; - - // If the user sets the line width to 0, we change it to a very - // small value. A line width of 0 seems to force the default of 1. - // Doing the conditional here allows the shadow setting to still be - // optional even with a lineWidth of 0. - - if( lw == 0 ) - lw = 0.0001; - - if (lw > 0 && sw > 0) { - // draw shadow in two steps - var w = sw / 2; - ctx.lineWidth = w; - ctx.strokeStyle = "rgba(0,0,0,0.1)"; - plotPoints(series.datapoints, radius, null, w + w/2, true, - series.xaxis, series.yaxis, symbol); - - ctx.strokeStyle = "rgba(0,0,0,0.2)"; - plotPoints(series.datapoints, radius, null, w/2, true, - series.xaxis, series.yaxis, symbol); - } - - ctx.lineWidth = lw; - ctx.strokeStyle = series.color; - plotPoints(series.datapoints, radius, - getFillStyle(series.points, series.color), 0, false, - series.xaxis, series.yaxis, symbol); - ctx.restore(); - } - - function drawBar(x, y, b, barLeft, barRight, fillStyleCallback, axisx, axisy, c, horizontal, lineWidth) { - var left, right, bottom, top, - drawLeft, drawRight, drawTop, drawBottom, - tmp; - - // in horizontal mode, we start the bar from the left - // instead of from the bottom so it appears to be - // horizontal rather than vertical - if (horizontal) { - drawBottom = drawRight = drawTop = true; - drawLeft = false; - left = b; - right = x; - top = y + barLeft; - bottom = y + barRight; - - // account for negative bars - if (right < left) { - tmp = right; - right = left; - left = tmp; - drawLeft = true; - drawRight = false; - } - } - else { - drawLeft = drawRight = drawTop = true; - drawBottom = false; - left = x + barLeft; - right = x + barRight; - bottom = b; - top = y; - - // account for negative bars - if (top < bottom) { - tmp = top; - top = bottom; - bottom = tmp; - drawBottom = true; - drawTop = false; - } - } - - // clip - if (right < axisx.min || left > axisx.max || - top < axisy.min || bottom > axisy.max) - return; - - if (left < axisx.min) { - left = axisx.min; - drawLeft = false; - } - - if (right > axisx.max) { - right = axisx.max; - drawRight = false; - } - - if (bottom < axisy.min) { - bottom = axisy.min; - drawBottom = false; - } - - if (top > axisy.max) { - top = axisy.max; - drawTop = false; - } - - left = axisx.p2c(left); - bottom = axisy.p2c(bottom); - right = axisx.p2c(right); - top = axisy.p2c(top); - - // fill the bar - if (fillStyleCallback) { - c.fillStyle = fillStyleCallback(bottom, top); - c.fillRect(left, top, right - left, bottom - top) - } - - // draw outline - if (lineWidth > 0 && (drawLeft || drawRight || drawTop || drawBottom)) { - c.beginPath(); - - // FIXME: inline moveTo is buggy with excanvas - c.moveTo(left, bottom); - if (drawLeft) - c.lineTo(left, top); - else - c.moveTo(left, top); - if (drawTop) - c.lineTo(right, top); - else - c.moveTo(right, top); - if (drawRight) - c.lineTo(right, bottom); - else - c.moveTo(right, bottom); - if (drawBottom) - c.lineTo(left, bottom); - else - c.moveTo(left, bottom); - c.stroke(); - } - } - - function drawSeriesBars(series) { - function plotBars(datapoints, barLeft, barRight, fillStyleCallback, axisx, axisy) { - var points = datapoints.points, ps = datapoints.pointsize; - - for (var i = 0; i < points.length; i += ps) { - if (points[i] == null) - continue; - drawBar(points[i], points[i + 1], points[i + 2], barLeft, barRight, fillStyleCallback, axisx, axisy, ctx, series.bars.horizontal, series.bars.lineWidth); - } - } - - ctx.save(); - ctx.translate(plotOffset.left, plotOffset.top); - - // FIXME: figure out a way to add shadows (for instance along the right edge) - ctx.lineWidth = series.bars.lineWidth; - ctx.strokeStyle = series.color; - - var barLeft; - - switch (series.bars.align) { - case "left": - barLeft = 0; - break; - case "right": - barLeft = -series.bars.barWidth; - break; - default: - barLeft = -series.bars.barWidth / 2; - } - - var fillStyleCallback = series.bars.fill ? function (bottom, top) { return getFillStyle(series.bars, series.color, bottom, top); } : null; - plotBars(series.datapoints, barLeft, barLeft + series.bars.barWidth, fillStyleCallback, series.xaxis, series.yaxis); - ctx.restore(); - } - - function getFillStyle(filloptions, seriesColor, bottom, top) { - var fill = filloptions.fill; - if (!fill) - return null; - - if (filloptions.fillColor) - return getColorOrGradient(filloptions.fillColor, bottom, top, seriesColor); - - var c = $.color.parse(seriesColor); - c.a = typeof fill == "number" ? fill : 0.4; - c.normalize(); - return c.toString(); - } - - function insertLegend() { - - if (options.legend.container != null) { - $(options.legend.container).html(""); - } else { - placeholder.find(".legend").remove(); - } - - if (!options.legend.show) { - return; - } - - var fragments = [], entries = [], rowStarted = false, - lf = options.legend.labelFormatter, s, label; - - // Build a list of legend entries, with each having a label and a color - - for (var i = 0; i < series.length; ++i) { - s = series[i]; - if (s.label) { - label = lf ? lf(s.label, s) : s.label; - if (label) { - entries.push({ - label: label, - color: s.color - }); - } - } - } - - // Sort the legend using either the default or a custom comparator - - if (options.legend.sorted) { - if ($.isFunction(options.legend.sorted)) { - entries.sort(options.legend.sorted); - } else if (options.legend.sorted == "reverse") { - entries.reverse(); - } else { - var ascending = options.legend.sorted != "descending"; - entries.sort(function(a, b) { - return a.label == b.label ? 0 : ( - (a.label < b.label) != ascending ? 1 : -1 // Logical XOR - ); - }); - } - } - - // Generate markup for the list of entries, in their final order - - for (var i = 0; i < entries.length; ++i) { - - var entry = entries[i]; - - if (i % options.legend.noColumns == 0) { - if (rowStarted) - fragments.push('</tr>'); - fragments.push('<tr>'); - rowStarted = true; - } - - fragments.push( - '<td class="legendColorBox"><div style="border:1px solid ' + options.legend.labelBoxBorderColor + ';padding:1px"><div style="width:4px;height:0;border:5px solid ' + entry.color + ';overflow:hidden"></div></div></td>' + - '<td class="legendLabel">' + entry.label + '</td>' - ); - } - - if (rowStarted) - fragments.push('</tr>'); - - if (fragments.length == 0) - return; - - var table = '<table style="font-size:smaller;color:' + options.grid.color + '">' + fragments.join("") + '</table>'; - if (options.legend.container != null) - $(options.legend.container).html(table); - else { - var pos = "", - p = options.legend.position, - m = options.legend.margin; - if (m[0] == null) - m = [m, m]; - if (p.charAt(0) == "n") - pos += 'top:' + (m[1] + plotOffset.top) + 'px;'; - else if (p.charAt(0) == "s") - pos += 'bottom:' + (m[1] + plotOffset.bottom) + 'px;'; - if (p.charAt(1) == "e") - pos += 'right:' + (m[0] + plotOffset.right) + 'px;'; - else if (p.charAt(1) == "w") - pos += 'left:' + (m[0] + plotOffset.left) + 'px;'; - var legend = $('<div class="legend">' + table.replace('style="', 'style="position:absolute;' + pos +';') + '</div>').appendTo(placeholder); - if (options.legend.backgroundOpacity != 0.0) { - // put in the transparent background - // separately to avoid blended labels and - // label boxes - var c = options.legend.backgroundColor; - if (c == null) { - c = options.grid.backgroundColor; - if (c && typeof c == "string") - c = $.color.parse(c); - else - c = $.color.extract(legend, 'background-color'); - c.a = 1; - c = c.toString(); - } - var div = legend.children(); - $('<div style="position:absolute;width:' + div.width() + 'px;height:' + div.height() + 'px;' + pos +'background-color:' + c + ';"> </div>').prependTo(legend).css('opacity', options.legend.backgroundOpacity); - } - } - } - - - // interactive features - - var highlights = [], - redrawTimeout = null; - - // returns the data item the mouse is over, or null if none is found - function findNearbyItem(mouseX, mouseY, seriesFilter) { - var maxDistance = options.grid.mouseActiveRadius, - smallestDistance = maxDistance * maxDistance + 1, - item = null, foundPoint = false, i, j, ps; - - for (i = series.length - 1; i >= 0; --i) { - if (!seriesFilter(series[i])) - continue; - - var s = series[i], - axisx = s.xaxis, - axisy = s.yaxis, - points = s.datapoints.points, - mx = axisx.c2p(mouseX), // precompute some stuff to make the loop faster - my = axisy.c2p(mouseY), - maxx = maxDistance / axisx.scale, - maxy = maxDistance / axisy.scale; - - ps = s.datapoints.pointsize; - // with inverse transforms, we can't use the maxx/maxy - // optimization, sadly - if (axisx.options.inverseTransform) - maxx = Number.MAX_VALUE; - if (axisy.options.inverseTransform) - maxy = Number.MAX_VALUE; - - if (s.lines.show || s.points.show) { - for (j = 0; j < points.length; j += ps) { - var x = points[j], y = points[j + 1]; - if (x == null) - continue; - - // For points and lines, the cursor must be within a - // certain distance to the data point - if (x - mx > maxx || x - mx < -maxx || - y - my > maxy || y - my < -maxy) - continue; - - // We have to calculate distances in pixels, not in - // data units, because the scales of the axes may be different - var dx = Math.abs(axisx.p2c(x) - mouseX), - dy = Math.abs(axisy.p2c(y) - mouseY), - dist = dx * dx + dy * dy; // we save the sqrt - - // use <= to ensure last point takes precedence - // (last generally means on top of) - if (dist < smallestDistance) { - smallestDistance = dist; - item = [i, j / ps]; - } - } - } - - if (s.bars.show && !item) { // no other point can be nearby - - var barLeft, barRight; - - switch (s.bars.align) { - case "left": - barLeft = 0; - break; - case "right": - barLeft = -s.bars.barWidth; - break; - default: - barLeft = -s.bars.barWidth / 2; - } - - barRight = barLeft + s.bars.barWidth; - - for (j = 0; j < points.length; j += ps) { - var x = points[j], y = points[j + 1], b = points[j + 2]; - if (x == null) - continue; - - // for a bar graph, the cursor must be inside the bar - if (series[i].bars.horizontal ? - (mx <= Math.max(b, x) && mx >= Math.min(b, x) && - my >= y + barLeft && my <= y + barRight) : - (mx >= x + barLeft && mx <= x + barRight && - my >= Math.min(b, y) && my <= Math.max(b, y))) - item = [i, j / ps]; - } - } - } - - if (item) { - i = item[0]; - j = item[1]; - ps = series[i].datapoints.pointsize; - - return { datapoint: series[i].datapoints.points.slice(j * ps, (j + 1) * ps), - dataIndex: j, - series: series[i], - seriesIndex: i }; - } - - return null; - } - - function onMouseMove(e) { - if (options.grid.hoverable) - triggerClickHoverEvent("plothover", e, - function (s) { return s["hoverable"] != false; }); - } - - function onMouseLeave(e) { - if (options.grid.hoverable) - triggerClickHoverEvent("plothover", e, - function (s) { return false; }); - } - - function onClick(e) { - triggerClickHoverEvent("plotclick", e, - function (s) { return s["clickable"] != false; }); - } - - // trigger click or hover event (they send the same parameters - // so we share their code) - function triggerClickHoverEvent(eventname, event, seriesFilter) { - var offset = eventHolder.offset(), - canvasX = event.pageX - offset.left - plotOffset.left, - canvasY = event.pageY - offset.top - plotOffset.top, - pos = canvasToAxisCoords({ left: canvasX, top: canvasY }); - - pos.pageX = event.pageX; - pos.pageY = event.pageY; - - var item = findNearbyItem(canvasX, canvasY, seriesFilter); - - if (item) { - // fill in mouse pos for any listeners out there - item.pageX = parseInt(item.series.xaxis.p2c(item.datapoint[0]) + offset.left + plotOffset.left, 10); - item.pageY = parseInt(item.series.yaxis.p2c(item.datapoint[1]) + offset.top + plotOffset.top, 10); - } - - if (options.grid.autoHighlight) { - // clear auto-highlights - for (var i = 0; i < highlights.length; ++i) { - var h = highlights[i]; - if (h.auto == eventname && - !(item && h.series == item.series && - h.point[0] == item.datapoint[0] && - h.point[1] == item.datapoint[1])) - unhighlight(h.series, h.point); - } - - if (item) - highlight(item.series, item.datapoint, eventname); - } - - placeholder.trigger(eventname, [ pos, item ]); - } - - function triggerRedrawOverlay() { - var t = options.interaction.redrawOverlayInterval; - if (t == -1) { // skip event queue - drawOverlay(); - return; - } - - if (!redrawTimeout) - redrawTimeout = setTimeout(drawOverlay, t); - } - - function drawOverlay() { - redrawTimeout = null; - - // draw highlights - octx.save(); - overlay.clear(); - octx.translate(plotOffset.left, plotOffset.top); - - var i, hi; - for (i = 0; i < highlights.length; ++i) { - hi = highlights[i]; - - if (hi.series.bars.show) - drawBarHighlight(hi.series, hi.point); - else - drawPointHighlight(hi.series, hi.point); - } - octx.restore(); - - executeHooks(hooks.drawOverlay, [octx]); - } - - function highlight(s, point, auto) { - if (typeof s == "number") - s = series[s]; - - if (typeof point == "number") { - var ps = s.datapoints.pointsize; - point = s.datapoints.points.slice(ps * point, ps * (point + 1)); - } - - var i = indexOfHighlight(s, point); - if (i == -1) { - highlights.push({ series: s, point: point, auto: auto }); - - triggerRedrawOverlay(); - } - else if (!auto) - highlights[i].auto = false; - } - - function unhighlight(s, point) { - if (s == null && point == null) { - highlights = []; - triggerRedrawOverlay(); - return; - } - - if (typeof s == "number") - s = series[s]; - - if (typeof point == "number") { - var ps = s.datapoints.pointsize; - point = s.datapoints.points.slice(ps * point, ps * (point + 1)); - } - - var i = indexOfHighlight(s, point); - if (i != -1) { - highlights.splice(i, 1); - - triggerRedrawOverlay(); - } - } - - function indexOfHighlight(s, p) { - for (var i = 0; i < highlights.length; ++i) { - var h = highlights[i]; - if (h.series == s && h.point[0] == p[0] - && h.point[1] == p[1]) - return i; - } - return -1; - } - - function drawPointHighlight(series, point) { - var x = point[0], y = point[1], - axisx = series.xaxis, axisy = series.yaxis, - highlightColor = (typeof series.highlightColor === "string") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString(); - - if (x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) - return; - - var pointRadius = series.points.radius + series.points.lineWidth / 2; - octx.lineWidth = pointRadius; - octx.strokeStyle = highlightColor; - var radius = 1.5 * pointRadius; - x = axisx.p2c(x); - y = axisy.p2c(y); - - octx.beginPath(); - if (series.points.symbol == "circle") - octx.arc(x, y, radius, 0, 2 * Math.PI, false); - else - series.points.symbol(octx, x, y, radius, false); - octx.closePath(); - octx.stroke(); - } - - function drawBarHighlight(series, point) { - var highlightColor = (typeof series.highlightColor === "string") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString(), - fillStyle = highlightColor, - barLeft; - - switch (series.bars.align) { - case "left": - barLeft = 0; - break; - case "right": - barLeft = -series.bars.barWidth; - break; - default: - barLeft = -series.bars.barWidth / 2; - } - - octx.lineWidth = series.bars.lineWidth; - octx.strokeStyle = highlightColor; - - drawBar(point[0], point[1], point[2] || 0, barLeft, barLeft + series.bars.barWidth, - function () { return fillStyle; }, series.xaxis, series.yaxis, octx, series.bars.horizontal, series.bars.lineWidth); - } - - function getColorOrGradient(spec, bottom, top, defaultColor) { - if (typeof spec == "string") - return spec; - else { - // assume this is a gradient spec; IE currently only - // supports a simple vertical gradient properly, so that's - // what we support too - var gradient = ctx.createLinearGradient(0, top, 0, bottom); - - for (var i = 0, l = spec.colors.length; i < l; ++i) { - var c = spec.colors[i]; - if (typeof c != "string") { - var co = $.color.parse(defaultColor); - if (c.brightness != null) - co = co.scale('rgb', c.brightness); - if (c.opacity != null) - co.a *= c.opacity; - c = co.toString(); - } - gradient.addColorStop(i / (l - 1), c); - } - - return gradient; - } - } - } - - // Add the plot function to the top level of the jQuery object - - $.plot = function(placeholder, data, options) { - //var t0 = new Date(); - var plot = new Plot($(placeholder), data, options, $.plot.plugins); - //(window.console ? console.log : alert)("time used (msecs): " + ((new Date()).getTime() - t0.getTime())); - return plot; - }; - - $.plot.version = "0.8.2"; - - $.plot.plugins = []; - - // Also add the plot function as a chainable property - - $.fn.plot = function(data, options) { - return this.each(function() { - $.plot(this, data, options); - }); - }; - - // round to nearby lower multiple of base - function floorInBase(n, base) { - return base * Math.floor(n / base); - } - -})(jQuery); diff --git a/assets/plugins/flot/jquery.flot.min.js b/assets/plugins/flot/jquery.flot.min.js deleted file mode 100644 index 9620fc00..00000000 --- a/assets/plugins/flot/jquery.flot.min.js +++ /dev/null @@ -1,2 +0,0 @@ -(function($){$.color={};$.color.make=function(r,g,b,a){var o={};o.r=r||0;o.g=g||0;o.b=b||0;o.a=a!=null?a:1;o.add=function(c,d){for(var i=0;i<c.length;++i)o[c.charAt(i)]+=d;return o.normalize()};o.scale=function(c,f){for(var i=0;i<c.length;++i)o[c.charAt(i)]*=f;return o.normalize()};o.toString=function(){if(o.a>=1){return"rgb("+[o.r,o.g,o.b].join(",")+")"}else{return"rgba("+[o.r,o.g,o.b,o.a].join(",")+")"}};o.normalize=function(){function clamp(min,value,max){return value<min?min:value>max?max:value}o.r=clamp(0,parseInt(o.r),255);o.g=clamp(0,parseInt(o.g),255);o.b=clamp(0,parseInt(o.b),255);o.a=clamp(0,o.a,1);return o};o.clone=function(){return $.color.make(o.r,o.b,o.g,o.a)};return o.normalize()};$.color.extract=function(elem,css){var c;do{c=elem.css(css).toLowerCase();if(c!=""&&c!="transparent")break;elem=elem.parent()}while(elem.length&&!$.nodeName(elem.get(0),"body"));if(c=="rgba(0, 0, 0, 0)")c="transparent";return $.color.parse(c)};$.color.parse=function(str){var res,m=$.color.make;if(res=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10));if(res=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10),parseFloat(res[4]));if(res=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55);if(res=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55,parseFloat(res[4]));if(res=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str))return m(parseInt(res[1],16),parseInt(res[2],16),parseInt(res[3],16));if(res=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str))return m(parseInt(res[1]+res[1],16),parseInt(res[2]+res[2],16),parseInt(res[3]+res[3],16));var name=$.trim(str).toLowerCase();if(name=="transparent")return m(255,255,255,0);else{res=lookupColors[name]||[0,0,0];return m(res[0],res[1],res[2])}};var lookupColors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery);(function($){var hasOwnProperty=Object.prototype.hasOwnProperty;function Canvas(cls,container){var element=container.children("."+cls)[0];if(element==null){element=document.createElement("canvas");element.className=cls;$(element).css({direction:"ltr",position:"absolute",left:0,top:0}).appendTo(container);if(!element.getContext){if(window.G_vmlCanvasManager){element=window.G_vmlCanvasManager.initElement(element)}else{throw new Error("Canvas is not available. If you're using IE with a fall-back such as Excanvas, then there's either a mistake in your conditional include, or the page has no DOCTYPE and is rendering in Quirks Mode.")}}}this.element=element;var context=this.context=element.getContext("2d");var devicePixelRatio=window.devicePixelRatio||1,backingStoreRatio=context.webkitBackingStorePixelRatio||context.mozBackingStorePixelRatio||context.msBackingStorePixelRatio||context.oBackingStorePixelRatio||context.backingStorePixelRatio||1;this.pixelRatio=devicePixelRatio/backingStoreRatio;this.resize(container.width(),container.height());this.textContainer=null;this.text={};this._textCache={}}Canvas.prototype.resize=function(width,height){if(width<=0||height<=0){throw new Error("Invalid dimensions for plot, width = "+width+", height = "+height)}var element=this.element,context=this.context,pixelRatio=this.pixelRatio;if(this.width!=width){element.width=width*pixelRatio;element.style.width=width+"px";this.width=width}if(this.height!=height){element.height=height*pixelRatio;element.style.height=height+"px";this.height=height}context.restore();context.save();context.scale(pixelRatio,pixelRatio)};Canvas.prototype.clear=function(){this.context.clearRect(0,0,this.width,this.height)};Canvas.prototype.render=function(){var cache=this._textCache;for(var layerKey in cache){if(hasOwnProperty.call(cache,layerKey)){var layer=this.getTextLayer(layerKey),layerCache=cache[layerKey];layer.hide();for(var styleKey in layerCache){if(hasOwnProperty.call(layerCache,styleKey)){var styleCache=layerCache[styleKey];for(var key in styleCache){if(hasOwnProperty.call(styleCache,key)){var positions=styleCache[key].positions;for(var i=0,position;position=positions[i];i++){if(position.active){if(!position.rendered){layer.append(position.element);position.rendered=true}}else{positions.splice(i--,1);if(position.rendered){position.element.detach()}}}if(positions.length==0){delete styleCache[key]}}}}}layer.show()}}};Canvas.prototype.getTextLayer=function(classes){var layer=this.text[classes];if(layer==null){if(this.textContainer==null){this.textContainer=$("<div class='flot-text'></div>").css({position:"absolute",top:0,left:0,bottom:0,right:0,"font-size":"smaller",color:"#545454"}).insertAfter(this.element)}layer=this.text[classes]=$("<div></div>").addClass(classes).css({position:"absolute",top:0,left:0,bottom:0,right:0}).appendTo(this.textContainer)}return layer};Canvas.prototype.getTextInfo=function(layer,text,font,angle,width){var textStyle,layerCache,styleCache,info;text=""+text;if(typeof font==="object"){textStyle=font.style+" "+font.variant+" "+font.weight+" "+font.size+"px/"+font.lineHeight+"px "+font.family}else{textStyle=font}layerCache=this._textCache[layer];if(layerCache==null){layerCache=this._textCache[layer]={}}styleCache=layerCache[textStyle];if(styleCache==null){styleCache=layerCache[textStyle]={}}info=styleCache[text];if(info==null){var element=$("<div></div>").html(text).css({position:"absolute","max-width":width,top:-9999}).appendTo(this.getTextLayer(layer));if(typeof font==="object"){element.css({font:textStyle,color:font.color})}else if(typeof font==="string"){element.addClass(font)}info=styleCache[text]={width:element.outerWidth(true),height:element.outerHeight(true),element:element,positions:[]};element.detach()}return info};Canvas.prototype.addText=function(layer,x,y,text,font,angle,width,halign,valign){var info=this.getTextInfo(layer,text,font,angle,width),positions=info.positions;if(halign=="center"){x-=info.width/2}else if(halign=="right"){x-=info.width}if(valign=="middle"){y-=info.height/2}else if(valign=="bottom"){y-=info.height}for(var i=0,position;position=positions[i];i++){if(position.x==x&&position.y==y){position.active=true;return}}position={active:true,rendered:false,element:positions.length?info.element.clone():info.element,x:x,y:y};positions.push(position);position.element.css({top:Math.round(y),left:Math.round(x),"text-align":halign})};Canvas.prototype.removeText=function(layer,x,y,text,font,angle){if(text==null){var layerCache=this._textCache[layer];if(layerCache!=null){for(var styleKey in layerCache){if(hasOwnProperty.call(layerCache,styleKey)){var styleCache=layerCache[styleKey];for(var key in styleCache){if(hasOwnProperty.call(styleCache,key)){var positions=styleCache[key].positions;for(var i=0,position;position=positions[i];i++){position.active=false}}}}}}}else{var positions=this.getTextInfo(layer,text,font,angle).positions;for(var i=0,position;position=positions[i];i++){if(position.x==x&&position.y==y){position.active=false}}}};function Plot(placeholder,data_,options_,plugins){var series=[],options={colors:["#edc240","#afd8f8","#cb4b4b","#4da74d","#9440ed"],legend:{show:true,noColumns:1,labelFormatter:null,labelBoxBorderColor:"#ccc",container:null,position:"ne",margin:5,backgroundColor:null,backgroundOpacity:.85,sorted:null},xaxis:{show:null,position:"bottom",mode:null,font:null,color:null,tickColor:null,transform:null,inverseTransform:null,min:null,max:null,autoscaleMargin:null,ticks:null,tickFormatter:null,labelWidth:null,labelHeight:null,reserveSpace:null,tickLength:null,alignTicksWithAxis:null,tickDecimals:null,tickSize:null,minTickSize:null},yaxis:{autoscaleMargin:.02,position:"left"},xaxes:[],yaxes:[],series:{points:{show:false,radius:3,lineWidth:2,fill:true,fillColor:"#ffffff",symbol:"circle"},lines:{lineWidth:2,fill:false,fillColor:null,steps:false},bars:{show:false,lineWidth:2,barWidth:1,fill:true,fillColor:null,align:"left",horizontal:false,zero:true},shadowSize:3,highlightColor:null},grid:{show:true,aboveData:false,color:"#545454",backgroundColor:null,borderColor:null,tickColor:null,margin:0,labelMargin:5,axisMargin:8,borderWidth:2,minBorderMargin:null,markings:null,markingsColor:"#f4f4f4",markingsLineWidth:2,clickable:false,hoverable:false,autoHighlight:true,mouseActiveRadius:10},interaction:{redrawOverlayInterval:1e3/60},hooks:{}},surface=null,overlay=null,eventHolder=null,ctx=null,octx=null,xaxes=[],yaxes=[],plotOffset={left:0,right:0,top:0,bottom:0},plotWidth=0,plotHeight=0,hooks={processOptions:[],processRawData:[],processDatapoints:[],processOffset:[],drawBackground:[],drawSeries:[],draw:[],bindEvents:[],drawOverlay:[],shutdown:[]},plot=this;plot.setData=setData;plot.setupGrid=setupGrid;plot.draw=draw;plot.getPlaceholder=function(){return placeholder};plot.getCanvas=function(){return surface.element};plot.getPlotOffset=function(){return plotOffset};plot.width=function(){return plotWidth};plot.height=function(){return plotHeight};plot.offset=function(){var o=eventHolder.offset();o.left+=plotOffset.left;o.top+=plotOffset.top;return o};plot.getData=function(){return series};plot.getAxes=function(){var res={},i;$.each(xaxes.concat(yaxes),function(_,axis){if(axis)res[axis.direction+(axis.n!=1?axis.n:"")+"axis"]=axis});return res};plot.getXAxes=function(){return xaxes};plot.getYAxes=function(){return yaxes};plot.c2p=canvasToAxisCoords;plot.p2c=axisToCanvasCoords;plot.getOptions=function(){return options};plot.highlight=highlight;plot.unhighlight=unhighlight;plot.triggerRedrawOverlay=triggerRedrawOverlay;plot.pointOffset=function(point){return{left:parseInt(xaxes[axisNumber(point,"x")-1].p2c(+point.x)+plotOffset.left,10),top:parseInt(yaxes[axisNumber(point,"y")-1].p2c(+point.y)+plotOffset.top,10)}};plot.shutdown=shutdown;plot.destroy=function(){shutdown();placeholder.removeData("plot").empty();series=[];options=null;surface=null;overlay=null;eventHolder=null;ctx=null;octx=null;xaxes=[];yaxes=[];hooks=null;highlights=[];plot=null};plot.resize=function(){var width=placeholder.width(),height=placeholder.height();surface.resize(width,height);overlay.resize(width,height)};plot.hooks=hooks;initPlugins(plot);parseOptions(options_);setupCanvases();setData(data_);setupGrid();draw();bindEvents();function executeHooks(hook,args){args=[plot].concat(args);for(var i=0;i<hook.length;++i)hook[i].apply(this,args)}function initPlugins(){var classes={Canvas:Canvas};for(var i=0;i<plugins.length;++i){var p=plugins[i];p.init(plot,classes);if(p.options)$.extend(true,options,p.options)}}function parseOptions(opts){$.extend(true,options,opts);if(opts&&opts.colors){options.colors=opts.colors}if(options.xaxis.color==null)options.xaxis.color=$.color.parse(options.grid.color).scale("a",.22).toString();if(options.yaxis.color==null)options.yaxis.color=$.color.parse(options.grid.color).scale("a",.22).toString();if(options.xaxis.tickColor==null)options.xaxis.tickColor=options.grid.tickColor||options.xaxis.color;if(options.yaxis.tickColor==null)options.yaxis.tickColor=options.grid.tickColor||options.yaxis.color;if(options.grid.borderColor==null)options.grid.borderColor=options.grid.color;if(options.grid.tickColor==null)options.grid.tickColor=$.color.parse(options.grid.color).scale("a",.22).toString();var i,axisOptions,axisCount,fontSize=placeholder.css("font-size"),fontSizeDefault=fontSize?+fontSize.replace("px",""):13,fontDefaults={style:placeholder.css("font-style"),size:Math.round(.8*fontSizeDefault),variant:placeholder.css("font-variant"),weight:placeholder.css("font-weight"),family:placeholder.css("font-family")};axisCount=options.xaxes.length||1;for(i=0;i<axisCount;++i){axisOptions=options.xaxes[i];if(axisOptions&&!axisOptions.tickColor){axisOptions.tickColor=axisOptions.color}axisOptions=$.extend(true,{},options.xaxis,axisOptions);options.xaxes[i]=axisOptions;if(axisOptions.font){axisOptions.font=$.extend({},fontDefaults,axisOptions.font);if(!axisOptions.font.color){axisOptions.font.color=axisOptions.color}if(!axisOptions.font.lineHeight){axisOptions.font.lineHeight=Math.round(axisOptions.font.size*1.15)}}}axisCount=options.yaxes.length||1;for(i=0;i<axisCount;++i){axisOptions=options.yaxes[i];if(axisOptions&&!axisOptions.tickColor){axisOptions.tickColor=axisOptions.color}axisOptions=$.extend(true,{},options.yaxis,axisOptions);options.yaxes[i]=axisOptions;if(axisOptions.font){axisOptions.font=$.extend({},fontDefaults,axisOptions.font);if(!axisOptions.font.color){axisOptions.font.color=axisOptions.color}if(!axisOptions.font.lineHeight){axisOptions.font.lineHeight=Math.round(axisOptions.font.size*1.15)}}}if(options.xaxis.noTicks&&options.xaxis.ticks==null)options.xaxis.ticks=options.xaxis.noTicks;if(options.yaxis.noTicks&&options.yaxis.ticks==null)options.yaxis.ticks=options.yaxis.noTicks;if(options.x2axis){options.xaxes[1]=$.extend(true,{},options.xaxis,options.x2axis);options.xaxes[1].position="top"}if(options.y2axis){options.yaxes[1]=$.extend(true,{},options.yaxis,options.y2axis);options.yaxes[1].position="right"}if(options.grid.coloredAreas)options.grid.markings=options.grid.coloredAreas;if(options.grid.coloredAreasColor)options.grid.markingsColor=options.grid.coloredAreasColor;if(options.lines)$.extend(true,options.series.lines,options.lines);if(options.points)$.extend(true,options.series.points,options.points);if(options.bars)$.extend(true,options.series.bars,options.bars);if(options.shadowSize!=null)options.series.shadowSize=options.shadowSize;if(options.highlightColor!=null)options.series.highlightColor=options.highlightColor;for(i=0;i<options.xaxes.length;++i)getOrCreateAxis(xaxes,i+1).options=options.xaxes[i];for(i=0;i<options.yaxes.length;++i)getOrCreateAxis(yaxes,i+1).options=options.yaxes[i];for(var n in hooks)if(options.hooks[n]&&options.hooks[n].length)hooks[n]=hooks[n].concat(options.hooks[n]);executeHooks(hooks.processOptions,[options])}function setData(d){series=parseData(d);fillInSeriesOptions();processData()}function parseData(d){var res=[];for(var i=0;i<d.length;++i){var s=$.extend(true,{},options.series);if(d[i].data!=null){s.data=d[i].data;delete d[i].data;$.extend(true,s,d[i]);d[i].data=s.data}else s.data=d[i];res.push(s)}return res}function axisNumber(obj,coord){var a=obj[coord+"axis"];if(typeof a=="object")a=a.n;if(typeof a!="number")a=1;return a}function allAxes(){return $.grep(xaxes.concat(yaxes),function(a){return a})}function canvasToAxisCoords(pos){var res={},i,axis;for(i=0;i<xaxes.length;++i){axis=xaxes[i];if(axis&&axis.used)res["x"+axis.n]=axis.c2p(pos.left)}for(i=0;i<yaxes.length;++i){axis=yaxes[i];if(axis&&axis.used)res["y"+axis.n]=axis.c2p(pos.top)}if(res.x1!==undefined)res.x=res.x1;if(res.y1!==undefined)res.y=res.y1;return res}function axisToCanvasCoords(pos){var res={},i,axis,key;for(i=0;i<xaxes.length;++i){axis=xaxes[i];if(axis&&axis.used){key="x"+axis.n;if(pos[key]==null&&axis.n==1)key="x";if(pos[key]!=null){res.left=axis.p2c(pos[key]);break}}}for(i=0;i<yaxes.length;++i){axis=yaxes[i];if(axis&&axis.used){key="y"+axis.n;if(pos[key]==null&&axis.n==1)key="y";if(pos[key]!=null){res.top=axis.p2c(pos[key]);break}}}return res}function getOrCreateAxis(axes,number){if(!axes[number-1])axes[number-1]={n:number,direction:axes==xaxes?"x":"y",options:$.extend(true,{},axes==xaxes?options.xaxis:options.yaxis)};return axes[number-1]}function fillInSeriesOptions(){var neededColors=series.length,maxIndex=-1,i;for(i=0;i<series.length;++i){var sc=series[i].color;if(sc!=null){neededColors--;if(typeof sc=="number"&&sc>maxIndex){maxIndex=sc}}}if(neededColors<=maxIndex){neededColors=maxIndex+1}var c,colors=[],colorPool=options.colors,colorPoolSize=colorPool.length,variation=0;for(i=0;i<neededColors;i++){c=$.color.parse(colorPool[i%colorPoolSize]||"#666");if(i%colorPoolSize==0&&i){if(variation>=0){if(variation<.5){variation=-variation-.2}else variation=0}else variation=-variation}colors[i]=c.scale("rgb",1+variation)}var colori=0,s;for(i=0;i<series.length;++i){s=series[i];if(s.color==null){s.color=colors[colori].toString();++colori}else if(typeof s.color=="number")s.color=colors[s.color].toString();if(s.lines.show==null){var v,show=true;for(v in s)if(s[v]&&s[v].show){show=false;break}if(show)s.lines.show=true}if(s.lines.zero==null){s.lines.zero=!!s.lines.fill}s.xaxis=getOrCreateAxis(xaxes,axisNumber(s,"x"));s.yaxis=getOrCreateAxis(yaxes,axisNumber(s,"y"))}}function processData(){var topSentry=Number.POSITIVE_INFINITY,bottomSentry=Number.NEGATIVE_INFINITY,fakeInfinity=Number.MAX_VALUE,i,j,k,m,length,s,points,ps,x,y,axis,val,f,p,data,format;function updateAxis(axis,min,max){if(min<axis.datamin&&min!=-fakeInfinity)axis.datamin=min;if(max>axis.datamax&&max!=fakeInfinity)axis.datamax=max}$.each(allAxes(),function(_,axis){axis.datamin=topSentry;axis.datamax=bottomSentry;axis.used=false});for(i=0;i<series.length;++i){s=series[i];s.datapoints={points:[]};executeHooks(hooks.processRawData,[s,s.data,s.datapoints])}for(i=0;i<series.length;++i){s=series[i];data=s.data;format=s.datapoints.format;if(!format){format=[];format.push({x:true,number:true,required:true});format.push({y:true,number:true,required:true});if(s.bars.show||s.lines.show&&s.lines.fill){var autoscale=!!(s.bars.show&&s.bars.zero||s.lines.show&&s.lines.zero);format.push({y:true,number:true,required:false,defaultValue:0,autoscale:autoscale});if(s.bars.horizontal){delete format[format.length-1].y;format[format.length-1].x=true}}s.datapoints.format=format}if(s.datapoints.pointsize!=null)continue;s.datapoints.pointsize=format.length;ps=s.datapoints.pointsize;points=s.datapoints.points;var insertSteps=s.lines.show&&s.lines.steps;s.xaxis.used=s.yaxis.used=true;for(j=k=0;j<data.length;++j,k+=ps){p=data[j];var nullify=p==null;if(!nullify){for(m=0;m<ps;++m){val=p[m];f=format[m];if(f){if(f.number&&val!=null){val=+val;if(isNaN(val))val=null;else if(val==Infinity)val=fakeInfinity;else if(val==-Infinity)val=-fakeInfinity}if(val==null){if(f.required)nullify=true;if(f.defaultValue!=null)val=f.defaultValue}}points[k+m]=val}}if(nullify){for(m=0;m<ps;++m){val=points[k+m];if(val!=null){f=format[m];if(f.autoscale!==false){if(f.x){updateAxis(s.xaxis,val,val)}if(f.y){updateAxis(s.yaxis,val,val)}}}points[k+m]=null}}else{if(insertSteps&&k>0&&points[k-ps]!=null&&points[k-ps]!=points[k]&&points[k-ps+1]!=points[k+1]){for(m=0;m<ps;++m)points[k+ps+m]=points[k+m];points[k+1]=points[k-ps+1];k+=ps}}}}for(i=0;i<series.length;++i){s=series[i];executeHooks(hooks.processDatapoints,[s,s.datapoints])}for(i=0;i<series.length;++i){s=series[i];points=s.datapoints.points;ps=s.datapoints.pointsize;format=s.datapoints.format;var xmin=topSentry,ymin=topSentry,xmax=bottomSentry,ymax=bottomSentry;for(j=0;j<points.length;j+=ps){if(points[j]==null)continue;for(m=0;m<ps;++m){val=points[j+m];f=format[m];if(!f||f.autoscale===false||val==fakeInfinity||val==-fakeInfinity)continue;if(f.x){if(val<xmin)xmin=val;if(val>xmax)xmax=val}if(f.y){if(val<ymin)ymin=val;if(val>ymax)ymax=val}}}if(s.bars.show){var delta;switch(s.bars.align){case"left":delta=0;break;case"right":delta=-s.bars.barWidth;break;default:delta=-s.bars.barWidth/2}if(s.bars.horizontal){ymin+=delta;ymax+=delta+s.bars.barWidth}else{xmin+=delta;xmax+=delta+s.bars.barWidth}}updateAxis(s.xaxis,xmin,xmax);updateAxis(s.yaxis,ymin,ymax)}$.each(allAxes(),function(_,axis){if(axis.datamin==topSentry)axis.datamin=null;if(axis.datamax==bottomSentry)axis.datamax=null})}function setupCanvases(){placeholder.css("padding",0).children().filter(function(){return!$(this).hasClass("flot-overlay")&&!$(this).hasClass("flot-base")}).remove();if(placeholder.css("position")=="static")placeholder.css("position","relative");surface=new Canvas("flot-base",placeholder);overlay=new Canvas("flot-overlay",placeholder);ctx=surface.context;octx=overlay.context;eventHolder=$(overlay.element).unbind();var existing=placeholder.data("plot");if(existing){existing.shutdown();overlay.clear()}placeholder.data("plot",plot)}function bindEvents(){if(options.grid.hoverable){eventHolder.mousemove(onMouseMove);eventHolder.bind("mouseleave",onMouseLeave)}if(options.grid.clickable)eventHolder.click(onClick);executeHooks(hooks.bindEvents,[eventHolder])}function shutdown(){if(redrawTimeout)clearTimeout(redrawTimeout);eventHolder.unbind("mousemove",onMouseMove);eventHolder.unbind("mouseleave",onMouseLeave);eventHolder.unbind("click",onClick);executeHooks(hooks.shutdown,[eventHolder])}function setTransformationHelpers(axis){function identity(x){return x}var s,m,t=axis.options.transform||identity,it=axis.options.inverseTransform;if(axis.direction=="x"){s=axis.scale=plotWidth/Math.abs(t(axis.max)-t(axis.min));m=Math.min(t(axis.max),t(axis.min))}else{s=axis.scale=plotHeight/Math.abs(t(axis.max)-t(axis.min));s=-s;m=Math.max(t(axis.max),t(axis.min))}if(t==identity)axis.p2c=function(p){return(p-m)*s};else axis.p2c=function(p){return(t(p)-m)*s};if(!it)axis.c2p=function(c){return m+c/s};else axis.c2p=function(c){return it(m+c/s)}}function measureTickLabels(axis){var opts=axis.options,ticks=axis.ticks||[],labelWidth=opts.labelWidth||0,labelHeight=opts.labelHeight||0,maxWidth=labelWidth||(axis.direction=="x"?Math.floor(surface.width/(ticks.length||1)):null),legacyStyles=axis.direction+"Axis "+axis.direction+axis.n+"Axis",layer="flot-"+axis.direction+"-axis flot-"+axis.direction+axis.n+"-axis "+legacyStyles,font=opts.font||"flot-tick-label tickLabel";for(var i=0;i<ticks.length;++i){var t=ticks[i];if(!t.label)continue;var info=surface.getTextInfo(layer,t.label,font,null,maxWidth);labelWidth=Math.max(labelWidth,info.width);labelHeight=Math.max(labelHeight,info.height)}axis.labelWidth=opts.labelWidth||labelWidth;axis.labelHeight=opts.labelHeight||labelHeight}function allocateAxisBoxFirstPhase(axis){var lw=axis.labelWidth,lh=axis.labelHeight,pos=axis.options.position,isXAxis=axis.direction==="x",tickLength=axis.options.tickLength,axisMargin=options.grid.axisMargin,padding=options.grid.labelMargin,innermost=true,outermost=true,first=true,found=false;$.each(isXAxis?xaxes:yaxes,function(i,a){if(a&&a.reserveSpace){if(a===axis){found=true}else if(a.options.position===pos){if(found){outermost=false}else{innermost=false}}if(!found){first=false}}});if(outermost){axisMargin=0}if(tickLength==null){tickLength=first?"full":5}if(!isNaN(+tickLength))padding+=+tickLength;if(isXAxis){lh+=padding;if(pos=="bottom"){plotOffset.bottom+=lh+axisMargin;axis.box={top:surface.height-plotOffset.bottom,height:lh}}else{axis.box={top:plotOffset.top+axisMargin,height:lh};plotOffset.top+=lh+axisMargin}}else{lw+=padding;if(pos=="left"){axis.box={left:plotOffset.left+axisMargin,width:lw};plotOffset.left+=lw+axisMargin}else{plotOffset.right+=lw+axisMargin;axis.box={left:surface.width-plotOffset.right,width:lw}}}axis.position=pos;axis.tickLength=tickLength;axis.box.padding=padding;axis.innermost=innermost}function allocateAxisBoxSecondPhase(axis){if(axis.direction=="x"){axis.box.left=plotOffset.left-axis.labelWidth/2;axis.box.width=surface.width-plotOffset.left-plotOffset.right+axis.labelWidth}else{axis.box.top=plotOffset.top-axis.labelHeight/2;axis.box.height=surface.height-plotOffset.bottom-plotOffset.top+axis.labelHeight}}function adjustLayoutForThingsStickingOut(){var minMargin=options.grid.minBorderMargin,axis,i;if(minMargin==null){minMargin=0;for(i=0;i<series.length;++i)minMargin=Math.max(minMargin,2*(series[i].points.radius+series[i].points.lineWidth/2))}var margins={left:minMargin,right:minMargin,top:minMargin,bottom:minMargin};$.each(allAxes(),function(_,axis){if(axis.reserveSpace&&axis.ticks&&axis.ticks.length){var lastTick=axis.ticks[axis.ticks.length-1];if(axis.direction==="x"){margins.left=Math.max(margins.left,axis.labelWidth/2);if(lastTick.v<=axis.max){margins.right=Math.max(margins.right,axis.labelWidth/2)}}else{margins.bottom=Math.max(margins.bottom,axis.labelHeight/2);if(lastTick.v<=axis.max){margins.top=Math.max(margins.top,axis.labelHeight/2)}}}});plotOffset.left=Math.ceil(Math.max(margins.left,plotOffset.left));plotOffset.right=Math.ceil(Math.max(margins.right,plotOffset.right));plotOffset.top=Math.ceil(Math.max(margins.top,plotOffset.top));plotOffset.bottom=Math.ceil(Math.max(margins.bottom,plotOffset.bottom))}function setupGrid(){var i,axes=allAxes(),showGrid=options.grid.show;for(var a in plotOffset){var margin=options.grid.margin||0;plotOffset[a]=typeof margin=="number"?margin:margin[a]||0}executeHooks(hooks.processOffset,[plotOffset]);for(var a in plotOffset){if(typeof options.grid.borderWidth=="object"){plotOffset[a]+=showGrid?options.grid.borderWidth[a]:0}else{plotOffset[a]+=showGrid?options.grid.borderWidth:0}}$.each(axes,function(_,axis){axis.show=axis.options.show;if(axis.show==null)axis.show=axis.used;axis.reserveSpace=axis.show||axis.options.reserveSpace;setRange(axis)});if(showGrid){var allocatedAxes=$.grep(axes,function(axis){return axis.reserveSpace});$.each(allocatedAxes,function(_,axis){setupTickGeneration(axis);setTicks(axis);snapRangeToTicks(axis,axis.ticks);measureTickLabels(axis)});for(i=allocatedAxes.length-1;i>=0;--i)allocateAxisBoxFirstPhase(allocatedAxes[i]);adjustLayoutForThingsStickingOut();$.each(allocatedAxes,function(_,axis){allocateAxisBoxSecondPhase(axis)})}plotWidth=surface.width-plotOffset.left-plotOffset.right;plotHeight=surface.height-plotOffset.bottom-plotOffset.top;$.each(axes,function(_,axis){setTransformationHelpers(axis)});if(showGrid){drawAxisLabels()}insertLegend()}function setRange(axis){var opts=axis.options,min=+(opts.min!=null?opts.min:axis.datamin),max=+(opts.max!=null?opts.max:axis.datamax),delta=max-min;if(delta==0){var widen=max==0?1:.01;if(opts.min==null)min-=widen;if(opts.max==null||opts.min!=null)max+=widen}else{var margin=opts.autoscaleMargin;if(margin!=null){if(opts.min==null){min-=delta*margin;if(min<0&&axis.datamin!=null&&axis.datamin>=0)min=0}if(opts.max==null){max+=delta*margin;if(max>0&&axis.datamax!=null&&axis.datamax<=0)max=0}}}axis.min=min;axis.max=max}function setupTickGeneration(axis){var opts=axis.options;var noTicks;if(typeof opts.ticks=="number"&&opts.ticks>0)noTicks=opts.ticks;else noTicks=.3*Math.sqrt(axis.direction=="x"?surface.width:surface.height);var delta=(axis.max-axis.min)/noTicks,dec=-Math.floor(Math.log(delta)/Math.LN10),maxDec=opts.tickDecimals;if(maxDec!=null&&dec>maxDec){dec=maxDec}var magn=Math.pow(10,-dec),norm=delta/magn,size;if(norm<1.5){size=1}else if(norm<3){size=2;if(norm>2.25&&(maxDec==null||dec+1<=maxDec)){size=2.5;++dec}}else if(norm<7.5){size=5}else{size=10}size*=magn;if(opts.minTickSize!=null&&size<opts.minTickSize){size=opts.minTickSize}axis.delta=delta;axis.tickDecimals=Math.max(0,maxDec!=null?maxDec:dec);axis.tickSize=opts.tickSize||size;if(opts.mode=="time"&&!axis.tickGenerator){throw new Error("Time mode requires the flot.time plugin.")}if(!axis.tickGenerator){axis.tickGenerator=function(axis){var ticks=[],start=floorInBase(axis.min,axis.tickSize),i=0,v=Number.NaN,prev;do{prev=v;v=start+i*axis.tickSize;ticks.push(v);++i}while(v<axis.max&&v!=prev);return ticks};axis.tickFormatter=function(value,axis){var factor=axis.tickDecimals?Math.pow(10,axis.tickDecimals):1;var formatted=""+Math.round(value*factor)/factor;if(axis.tickDecimals!=null){var decimal=formatted.indexOf(".");var precision=decimal==-1?0:formatted.length-decimal-1;if(precision<axis.tickDecimals){return(precision?formatted:formatted+".")+(""+factor).substr(1,axis.tickDecimals-precision)}}return formatted}}if($.isFunction(opts.tickFormatter))axis.tickFormatter=function(v,axis){return""+opts.tickFormatter(v,axis)};if(opts.alignTicksWithAxis!=null){var otherAxis=(axis.direction=="x"?xaxes:yaxes)[opts.alignTicksWithAxis-1];if(otherAxis&&otherAxis.used&&otherAxis!=axis){var niceTicks=axis.tickGenerator(axis);if(niceTicks.length>0){if(opts.min==null)axis.min=Math.min(axis.min,niceTicks[0]);if(opts.max==null&&niceTicks.length>1)axis.max=Math.max(axis.max,niceTicks[niceTicks.length-1])}axis.tickGenerator=function(axis){var ticks=[],v,i;for(i=0;i<otherAxis.ticks.length;++i){v=(otherAxis.ticks[i].v-otherAxis.min)/(otherAxis.max-otherAxis.min);v=axis.min+v*(axis.max-axis.min);ticks.push(v)}return ticks};if(!axis.mode&&opts.tickDecimals==null){var extraDec=Math.max(0,-Math.floor(Math.log(axis.delta)/Math.LN10)+1),ts=axis.tickGenerator(axis);if(!(ts.length>1&&/\..*0$/.test((ts[1]-ts[0]).toFixed(extraDec))))axis.tickDecimals=extraDec}}}}function setTicks(axis){var oticks=axis.options.ticks,ticks=[];if(oticks==null||typeof oticks=="number"&&oticks>0)ticks=axis.tickGenerator(axis);else if(oticks){if($.isFunction(oticks))ticks=oticks(axis);else ticks=oticks}var i,v;axis.ticks=[];for(i=0;i<ticks.length;++i){var label=null;var t=ticks[i];if(typeof t=="object"){v=+t[0];if(t.length>1)label=t[1]}else v=+t;if(label==null)label=axis.tickFormatter(v,axis);if(!isNaN(v))axis.ticks.push({v:v,label:label})}}function snapRangeToTicks(axis,ticks){if(axis.options.autoscaleMargin&&ticks.length>0){if(axis.options.min==null)axis.min=Math.min(axis.min,ticks[0].v);if(axis.options.max==null&&ticks.length>1)axis.max=Math.max(axis.max,ticks[ticks.length-1].v)}}function draw(){surface.clear();executeHooks(hooks.drawBackground,[ctx]);var grid=options.grid;if(grid.show&&grid.backgroundColor)drawBackground();if(grid.show&&!grid.aboveData){drawGrid()}for(var i=0;i<series.length;++i){executeHooks(hooks.drawSeries,[ctx,series[i]]);drawSeries(series[i])}executeHooks(hooks.draw,[ctx]);if(grid.show&&grid.aboveData){drawGrid()}surface.render();triggerRedrawOverlay()}function extractRange(ranges,coord){var axis,from,to,key,axes=allAxes();for(var i=0;i<axes.length;++i){axis=axes[i];if(axis.direction==coord){key=coord+axis.n+"axis";if(!ranges[key]&&axis.n==1)key=coord+"axis";if(ranges[key]){from=ranges[key].from;to=ranges[key].to;break}}}if(!ranges[key]){axis=coord=="x"?xaxes[0]:yaxes[0];from=ranges[coord+"1"];to=ranges[coord+"2"]}if(from!=null&&to!=null&&from>to){var tmp=from;from=to;to=tmp}return{from:from,to:to,axis:axis}}function drawBackground(){ctx.save();ctx.translate(plotOffset.left,plotOffset.top);ctx.fillStyle=getColorOrGradient(options.grid.backgroundColor,plotHeight,0,"rgba(255, 255, 255, 0)");ctx.fillRect(0,0,plotWidth,plotHeight);ctx.restore()}function drawGrid(){var i,axes,bw,bc;ctx.save();ctx.translate(plotOffset.left,plotOffset.top);var markings=options.grid.markings;if(markings){if($.isFunction(markings)){axes=plot.getAxes();axes.xmin=axes.xaxis.min;axes.xmax=axes.xaxis.max;axes.ymin=axes.yaxis.min;axes.ymax=axes.yaxis.max;markings=markings(axes)}for(i=0;i<markings.length;++i){var m=markings[i],xrange=extractRange(m,"x"),yrange=extractRange(m,"y");if(xrange.from==null)xrange.from=xrange.axis.min;if(xrange.to==null)xrange.to=xrange.axis.max;if(yrange.from==null)yrange.from=yrange.axis.min;if(yrange.to==null)yrange.to=yrange.axis.max;if(xrange.to<xrange.axis.min||xrange.from>xrange.axis.max||yrange.to<yrange.axis.min||yrange.from>yrange.axis.max)continue;xrange.from=Math.max(xrange.from,xrange.axis.min);xrange.to=Math.min(xrange.to,xrange.axis.max); -yrange.from=Math.max(yrange.from,yrange.axis.min);yrange.to=Math.min(yrange.to,yrange.axis.max);if(xrange.from==xrange.to&&yrange.from==yrange.to)continue;xrange.from=xrange.axis.p2c(xrange.from);xrange.to=xrange.axis.p2c(xrange.to);yrange.from=yrange.axis.p2c(yrange.from);yrange.to=yrange.axis.p2c(yrange.to);if(xrange.from==xrange.to||yrange.from==yrange.to){ctx.beginPath();ctx.strokeStyle=m.color||options.grid.markingsColor;ctx.lineWidth=m.lineWidth||options.grid.markingsLineWidth;ctx.moveTo(xrange.from,yrange.from);ctx.lineTo(xrange.to,yrange.to);ctx.stroke()}else{ctx.fillStyle=m.color||options.grid.markingsColor;ctx.fillRect(xrange.from,yrange.to,xrange.to-xrange.from,yrange.from-yrange.to)}}}axes=allAxes();bw=options.grid.borderWidth;for(var j=0;j<axes.length;++j){var axis=axes[j],box=axis.box,t=axis.tickLength,x,y,xoff,yoff;if(!axis.show||axis.ticks.length==0)continue;ctx.lineWidth=1;if(axis.direction=="x"){x=0;if(t=="full")y=axis.position=="top"?0:plotHeight;else y=box.top-plotOffset.top+(axis.position=="top"?box.height:0)}else{y=0;if(t=="full")x=axis.position=="left"?0:plotWidth;else x=box.left-plotOffset.left+(axis.position=="left"?box.width:0)}if(!axis.innermost){ctx.strokeStyle=axis.options.color;ctx.beginPath();xoff=yoff=0;if(axis.direction=="x")xoff=plotWidth+1;else yoff=plotHeight+1;if(ctx.lineWidth==1){if(axis.direction=="x"){y=Math.floor(y)+.5}else{x=Math.floor(x)+.5}}ctx.moveTo(x,y);ctx.lineTo(x+xoff,y+yoff);ctx.stroke()}ctx.strokeStyle=axis.options.tickColor;ctx.beginPath();for(i=0;i<axis.ticks.length;++i){var v=axis.ticks[i].v;xoff=yoff=0;if(isNaN(v)||v<axis.min||v>axis.max||t=="full"&&(typeof bw=="object"&&bw[axis.position]>0||bw>0)&&(v==axis.min||v==axis.max))continue;if(axis.direction=="x"){x=axis.p2c(v);yoff=t=="full"?-plotHeight:t;if(axis.position=="top")yoff=-yoff}else{y=axis.p2c(v);xoff=t=="full"?-plotWidth:t;if(axis.position=="left")xoff=-xoff}if(ctx.lineWidth==1){if(axis.direction=="x")x=Math.floor(x)+.5;else y=Math.floor(y)+.5}ctx.moveTo(x,y);ctx.lineTo(x+xoff,y+yoff)}ctx.stroke()}if(bw){bc=options.grid.borderColor;if(typeof bw=="object"||typeof bc=="object"){if(typeof bw!=="object"){bw={top:bw,right:bw,bottom:bw,left:bw}}if(typeof bc!=="object"){bc={top:bc,right:bc,bottom:bc,left:bc}}if(bw.top>0){ctx.strokeStyle=bc.top;ctx.lineWidth=bw.top;ctx.beginPath();ctx.moveTo(0-bw.left,0-bw.top/2);ctx.lineTo(plotWidth,0-bw.top/2);ctx.stroke()}if(bw.right>0){ctx.strokeStyle=bc.right;ctx.lineWidth=bw.right;ctx.beginPath();ctx.moveTo(plotWidth+bw.right/2,0-bw.top);ctx.lineTo(plotWidth+bw.right/2,plotHeight);ctx.stroke()}if(bw.bottom>0){ctx.strokeStyle=bc.bottom;ctx.lineWidth=bw.bottom;ctx.beginPath();ctx.moveTo(plotWidth+bw.right,plotHeight+bw.bottom/2);ctx.lineTo(0,plotHeight+bw.bottom/2);ctx.stroke()}if(bw.left>0){ctx.strokeStyle=bc.left;ctx.lineWidth=bw.left;ctx.beginPath();ctx.moveTo(0-bw.left/2,plotHeight+bw.bottom);ctx.lineTo(0-bw.left/2,0);ctx.stroke()}}else{ctx.lineWidth=bw;ctx.strokeStyle=options.grid.borderColor;ctx.strokeRect(-bw/2,-bw/2,plotWidth+bw,plotHeight+bw)}}ctx.restore()}function drawAxisLabels(){$.each(allAxes(),function(_,axis){var box=axis.box,legacyStyles=axis.direction+"Axis "+axis.direction+axis.n+"Axis",layer="flot-"+axis.direction+"-axis flot-"+axis.direction+axis.n+"-axis "+legacyStyles,font=axis.options.font||"flot-tick-label tickLabel",tick,x,y,halign,valign;surface.removeText(layer);if(!axis.show||axis.ticks.length==0)return;for(var i=0;i<axis.ticks.length;++i){tick=axis.ticks[i];if(!tick.label||tick.v<axis.min||tick.v>axis.max)continue;if(axis.direction=="x"){halign="center";x=plotOffset.left+axis.p2c(tick.v);if(axis.position=="bottom"){y=box.top+box.padding}else{y=box.top+box.height-box.padding;valign="bottom"}}else{valign="middle";y=plotOffset.top+axis.p2c(tick.v);if(axis.position=="left"){x=box.left+box.width-box.padding;halign="right"}else{x=box.left+box.padding}}surface.addText(layer,x,y,tick.label,font,null,null,halign,valign)}})}function drawSeries(series){if(series.lines.show)drawSeriesLines(series);if(series.bars.show)drawSeriesBars(series);if(series.points.show)drawSeriesPoints(series)}function drawSeriesLines(series){function plotLine(datapoints,xoffset,yoffset,axisx,axisy){var points=datapoints.points,ps=datapoints.pointsize,prevx=null,prevy=null;ctx.beginPath();for(var i=ps;i<points.length;i+=ps){var x1=points[i-ps],y1=points[i-ps+1],x2=points[i],y2=points[i+1];if(x1==null||x2==null)continue;if(y1<=y2&&y1<axisy.min){if(y2<axisy.min)continue;x1=(axisy.min-y1)/(y2-y1)*(x2-x1)+x1;y1=axisy.min}else if(y2<=y1&&y2<axisy.min){if(y1<axisy.min)continue;x2=(axisy.min-y1)/(y2-y1)*(x2-x1)+x1;y2=axisy.min}if(y1>=y2&&y1>axisy.max){if(y2>axisy.max)continue;x1=(axisy.max-y1)/(y2-y1)*(x2-x1)+x1;y1=axisy.max}else if(y2>=y1&&y2>axisy.max){if(y1>axisy.max)continue;x2=(axisy.max-y1)/(y2-y1)*(x2-x1)+x1;y2=axisy.max}if(x1<=x2&&x1<axisx.min){if(x2<axisx.min)continue;y1=(axisx.min-x1)/(x2-x1)*(y2-y1)+y1;x1=axisx.min}else if(x2<=x1&&x2<axisx.min){if(x1<axisx.min)continue;y2=(axisx.min-x1)/(x2-x1)*(y2-y1)+y1;x2=axisx.min}if(x1>=x2&&x1>axisx.max){if(x2>axisx.max)continue;y1=(axisx.max-x1)/(x2-x1)*(y2-y1)+y1;x1=axisx.max}else if(x2>=x1&&x2>axisx.max){if(x1>axisx.max)continue;y2=(axisx.max-x1)/(x2-x1)*(y2-y1)+y1;x2=axisx.max}if(x1!=prevx||y1!=prevy)ctx.moveTo(axisx.p2c(x1)+xoffset,axisy.p2c(y1)+yoffset);prevx=x2;prevy=y2;ctx.lineTo(axisx.p2c(x2)+xoffset,axisy.p2c(y2)+yoffset)}ctx.stroke()}function plotLineArea(datapoints,axisx,axisy){var points=datapoints.points,ps=datapoints.pointsize,bottom=Math.min(Math.max(0,axisy.min),axisy.max),i=0,top,areaOpen=false,ypos=1,segmentStart=0,segmentEnd=0;while(true){if(ps>0&&i>points.length+ps)break;i+=ps;var x1=points[i-ps],y1=points[i-ps+ypos],x2=points[i],y2=points[i+ypos];if(areaOpen){if(ps>0&&x1!=null&&x2==null){segmentEnd=i;ps=-ps;ypos=2;continue}if(ps<0&&i==segmentStart+ps){ctx.fill();areaOpen=false;ps=-ps;ypos=1;i=segmentStart=segmentEnd+ps;continue}}if(x1==null||x2==null)continue;if(x1<=x2&&x1<axisx.min){if(x2<axisx.min)continue;y1=(axisx.min-x1)/(x2-x1)*(y2-y1)+y1;x1=axisx.min}else if(x2<=x1&&x2<axisx.min){if(x1<axisx.min)continue;y2=(axisx.min-x1)/(x2-x1)*(y2-y1)+y1;x2=axisx.min}if(x1>=x2&&x1>axisx.max){if(x2>axisx.max)continue;y1=(axisx.max-x1)/(x2-x1)*(y2-y1)+y1;x1=axisx.max}else if(x2>=x1&&x2>axisx.max){if(x1>axisx.max)continue;y2=(axisx.max-x1)/(x2-x1)*(y2-y1)+y1;x2=axisx.max}if(!areaOpen){ctx.beginPath();ctx.moveTo(axisx.p2c(x1),axisy.p2c(bottom));areaOpen=true}if(y1>=axisy.max&&y2>=axisy.max){ctx.lineTo(axisx.p2c(x1),axisy.p2c(axisy.max));ctx.lineTo(axisx.p2c(x2),axisy.p2c(axisy.max));continue}else if(y1<=axisy.min&&y2<=axisy.min){ctx.lineTo(axisx.p2c(x1),axisy.p2c(axisy.min));ctx.lineTo(axisx.p2c(x2),axisy.p2c(axisy.min));continue}var x1old=x1,x2old=x2;if(y1<=y2&&y1<axisy.min&&y2>=axisy.min){x1=(axisy.min-y1)/(y2-y1)*(x2-x1)+x1;y1=axisy.min}else if(y2<=y1&&y2<axisy.min&&y1>=axisy.min){x2=(axisy.min-y1)/(y2-y1)*(x2-x1)+x1;y2=axisy.min}if(y1>=y2&&y1>axisy.max&&y2<=axisy.max){x1=(axisy.max-y1)/(y2-y1)*(x2-x1)+x1;y1=axisy.max}else if(y2>=y1&&y2>axisy.max&&y1<=axisy.max){x2=(axisy.max-y1)/(y2-y1)*(x2-x1)+x1;y2=axisy.max}if(x1!=x1old){ctx.lineTo(axisx.p2c(x1old),axisy.p2c(y1))}ctx.lineTo(axisx.p2c(x1),axisy.p2c(y1));ctx.lineTo(axisx.p2c(x2),axisy.p2c(y2));if(x2!=x2old){ctx.lineTo(axisx.p2c(x2),axisy.p2c(y2));ctx.lineTo(axisx.p2c(x2old),axisy.p2c(y2))}}}ctx.save();ctx.translate(plotOffset.left,plotOffset.top);ctx.lineJoin="round";var lw=series.lines.lineWidth,sw=series.shadowSize;if(lw>0&&sw>0){ctx.lineWidth=sw;ctx.strokeStyle="rgba(0,0,0,0.1)";var angle=Math.PI/18;plotLine(series.datapoints,Math.sin(angle)*(lw/2+sw/2),Math.cos(angle)*(lw/2+sw/2),series.xaxis,series.yaxis);ctx.lineWidth=sw/2;plotLine(series.datapoints,Math.sin(angle)*(lw/2+sw/4),Math.cos(angle)*(lw/2+sw/4),series.xaxis,series.yaxis)}ctx.lineWidth=lw;ctx.strokeStyle=series.color;var fillStyle=getFillStyle(series.lines,series.color,0,plotHeight);if(fillStyle){ctx.fillStyle=fillStyle;plotLineArea(series.datapoints,series.xaxis,series.yaxis)}if(lw>0)plotLine(series.datapoints,0,0,series.xaxis,series.yaxis);ctx.restore()}function drawSeriesPoints(series){function plotPoints(datapoints,radius,fillStyle,offset,shadow,axisx,axisy,symbol){var points=datapoints.points,ps=datapoints.pointsize;for(var i=0;i<points.length;i+=ps){var x=points[i],y=points[i+1];if(x==null||x<axisx.min||x>axisx.max||y<axisy.min||y>axisy.max)continue;ctx.beginPath();x=axisx.p2c(x);y=axisy.p2c(y)+offset;if(symbol=="circle")ctx.arc(x,y,radius,0,shadow?Math.PI:Math.PI*2,false);else symbol(ctx,x,y,radius,shadow);ctx.closePath();if(fillStyle){ctx.fillStyle=fillStyle;ctx.fill()}ctx.stroke()}}ctx.save();ctx.translate(plotOffset.left,plotOffset.top);var lw=series.points.lineWidth,sw=series.shadowSize,radius=series.points.radius,symbol=series.points.symbol;if(lw==0)lw=1e-4;if(lw>0&&sw>0){var w=sw/2;ctx.lineWidth=w;ctx.strokeStyle="rgba(0,0,0,0.1)";plotPoints(series.datapoints,radius,null,w+w/2,true,series.xaxis,series.yaxis,symbol);ctx.strokeStyle="rgba(0,0,0,0.2)";plotPoints(series.datapoints,radius,null,w/2,true,series.xaxis,series.yaxis,symbol)}ctx.lineWidth=lw;ctx.strokeStyle=series.color;plotPoints(series.datapoints,radius,getFillStyle(series.points,series.color),0,false,series.xaxis,series.yaxis,symbol);ctx.restore()}function drawBar(x,y,b,barLeft,barRight,fillStyleCallback,axisx,axisy,c,horizontal,lineWidth){var left,right,bottom,top,drawLeft,drawRight,drawTop,drawBottom,tmp;if(horizontal){drawBottom=drawRight=drawTop=true;drawLeft=false;left=b;right=x;top=y+barLeft;bottom=y+barRight;if(right<left){tmp=right;right=left;left=tmp;drawLeft=true;drawRight=false}}else{drawLeft=drawRight=drawTop=true;drawBottom=false;left=x+barLeft;right=x+barRight;bottom=b;top=y;if(top<bottom){tmp=top;top=bottom;bottom=tmp;drawBottom=true;drawTop=false}}if(right<axisx.min||left>axisx.max||top<axisy.min||bottom>axisy.max)return;if(left<axisx.min){left=axisx.min;drawLeft=false}if(right>axisx.max){right=axisx.max;drawRight=false}if(bottom<axisy.min){bottom=axisy.min;drawBottom=false}if(top>axisy.max){top=axisy.max;drawTop=false}left=axisx.p2c(left);bottom=axisy.p2c(bottom);right=axisx.p2c(right);top=axisy.p2c(top);if(fillStyleCallback){c.fillStyle=fillStyleCallback(bottom,top);c.fillRect(left,top,right-left,bottom-top)}if(lineWidth>0&&(drawLeft||drawRight||drawTop||drawBottom)){c.beginPath();c.moveTo(left,bottom);if(drawLeft)c.lineTo(left,top);else c.moveTo(left,top);if(drawTop)c.lineTo(right,top);else c.moveTo(right,top);if(drawRight)c.lineTo(right,bottom);else c.moveTo(right,bottom);if(drawBottom)c.lineTo(left,bottom);else c.moveTo(left,bottom);c.stroke()}}function drawSeriesBars(series){function plotBars(datapoints,barLeft,barRight,fillStyleCallback,axisx,axisy){var points=datapoints.points,ps=datapoints.pointsize;for(var i=0;i<points.length;i+=ps){if(points[i]==null)continue;drawBar(points[i],points[i+1],points[i+2],barLeft,barRight,fillStyleCallback,axisx,axisy,ctx,series.bars.horizontal,series.bars.lineWidth)}}ctx.save();ctx.translate(plotOffset.left,plotOffset.top);ctx.lineWidth=series.bars.lineWidth;ctx.strokeStyle=series.color;var barLeft;switch(series.bars.align){case"left":barLeft=0;break;case"right":barLeft=-series.bars.barWidth;break;default:barLeft=-series.bars.barWidth/2}var fillStyleCallback=series.bars.fill?function(bottom,top){return getFillStyle(series.bars,series.color,bottom,top)}:null;plotBars(series.datapoints,barLeft,barLeft+series.bars.barWidth,fillStyleCallback,series.xaxis,series.yaxis);ctx.restore()}function getFillStyle(filloptions,seriesColor,bottom,top){var fill=filloptions.fill;if(!fill)return null;if(filloptions.fillColor)return getColorOrGradient(filloptions.fillColor,bottom,top,seriesColor);var c=$.color.parse(seriesColor);c.a=typeof fill=="number"?fill:.4;c.normalize();return c.toString()}function insertLegend(){if(options.legend.container!=null){$(options.legend.container).html("")}else{placeholder.find(".legend").remove()}if(!options.legend.show){return}var fragments=[],entries=[],rowStarted=false,lf=options.legend.labelFormatter,s,label;for(var i=0;i<series.length;++i){s=series[i];if(s.label){label=lf?lf(s.label,s):s.label;if(label){entries.push({label:label,color:s.color})}}}if(options.legend.sorted){if($.isFunction(options.legend.sorted)){entries.sort(options.legend.sorted)}else if(options.legend.sorted=="reverse"){entries.reverse()}else{var ascending=options.legend.sorted!="descending";entries.sort(function(a,b){return a.label==b.label?0:a.label<b.label!=ascending?1:-1})}}for(var i=0;i<entries.length;++i){var entry=entries[i];if(i%options.legend.noColumns==0){if(rowStarted)fragments.push("</tr>");fragments.push("<tr>");rowStarted=true}fragments.push('<td class="legendColorBox"><div style="border:1px solid '+options.legend.labelBoxBorderColor+';padding:1px"><div style="width:4px;height:0;border:5px solid '+entry.color+';overflow:hidden"></div></div></td>'+'<td class="legendLabel">'+entry.label+"</td>")}if(rowStarted)fragments.push("</tr>");if(fragments.length==0)return;var table='<table style="font-size:smaller;color:'+options.grid.color+'">'+fragments.join("")+"</table>";if(options.legend.container!=null)$(options.legend.container).html(table);else{var pos="",p=options.legend.position,m=options.legend.margin;if(m[0]==null)m=[m,m];if(p.charAt(0)=="n")pos+="top:"+(m[1]+plotOffset.top)+"px;";else if(p.charAt(0)=="s")pos+="bottom:"+(m[1]+plotOffset.bottom)+"px;";if(p.charAt(1)=="e")pos+="right:"+(m[0]+plotOffset.right)+"px;";else if(p.charAt(1)=="w")pos+="left:"+(m[0]+plotOffset.left)+"px;";var legend=$('<div class="legend">'+table.replace('style="','style="position:absolute;'+pos+";")+"</div>").appendTo(placeholder);if(options.legend.backgroundOpacity!=0){var c=options.legend.backgroundColor;if(c==null){c=options.grid.backgroundColor;if(c&&typeof c=="string")c=$.color.parse(c);else c=$.color.extract(legend,"background-color");c.a=1;c=c.toString()}var div=legend.children();$('<div style="position:absolute;width:'+div.width()+"px;height:"+div.height()+"px;"+pos+"background-color:"+c+';"> </div>').prependTo(legend).css("opacity",options.legend.backgroundOpacity)}}}var highlights=[],redrawTimeout=null;function findNearbyItem(mouseX,mouseY,seriesFilter){var maxDistance=options.grid.mouseActiveRadius,smallestDistance=maxDistance*maxDistance+1,item=null,foundPoint=false,i,j,ps;for(i=series.length-1;i>=0;--i){if(!seriesFilter(series[i]))continue;var s=series[i],axisx=s.xaxis,axisy=s.yaxis,points=s.datapoints.points,mx=axisx.c2p(mouseX),my=axisy.c2p(mouseY),maxx=maxDistance/axisx.scale,maxy=maxDistance/axisy.scale;ps=s.datapoints.pointsize;if(axisx.options.inverseTransform)maxx=Number.MAX_VALUE;if(axisy.options.inverseTransform)maxy=Number.MAX_VALUE;if(s.lines.show||s.points.show){for(j=0;j<points.length;j+=ps){var x=points[j],y=points[j+1];if(x==null)continue;if(x-mx>maxx||x-mx<-maxx||y-my>maxy||y-my<-maxy)continue;var dx=Math.abs(axisx.p2c(x)-mouseX),dy=Math.abs(axisy.p2c(y)-mouseY),dist=dx*dx+dy*dy;if(dist<smallestDistance){smallestDistance=dist;item=[i,j/ps]}}}if(s.bars.show&&!item){var barLeft,barRight;switch(s.bars.align){case"left":barLeft=0;break;case"right":barLeft=-s.bars.barWidth;break;default:barLeft=-s.bars.barWidth/2}barRight=barLeft+s.bars.barWidth;for(j=0;j<points.length;j+=ps){var x=points[j],y=points[j+1],b=points[j+2];if(x==null)continue;if(series[i].bars.horizontal?mx<=Math.max(b,x)&&mx>=Math.min(b,x)&&my>=y+barLeft&&my<=y+barRight:mx>=x+barLeft&&mx<=x+barRight&&my>=Math.min(b,y)&&my<=Math.max(b,y))item=[i,j/ps]}}}if(item){i=item[0];j=item[1];ps=series[i].datapoints.pointsize;return{datapoint:series[i].datapoints.points.slice(j*ps,(j+1)*ps),dataIndex:j,series:series[i],seriesIndex:i}}return null}function onMouseMove(e){if(options.grid.hoverable)triggerClickHoverEvent("plothover",e,function(s){return s["hoverable"]!=false})}function onMouseLeave(e){if(options.grid.hoverable)triggerClickHoverEvent("plothover",e,function(s){return false})}function onClick(e){triggerClickHoverEvent("plotclick",e,function(s){return s["clickable"]!=false})}function triggerClickHoverEvent(eventname,event,seriesFilter){var offset=eventHolder.offset(),canvasX=event.pageX-offset.left-plotOffset.left,canvasY=event.pageY-offset.top-plotOffset.top,pos=canvasToAxisCoords({left:canvasX,top:canvasY});pos.pageX=event.pageX;pos.pageY=event.pageY;var item=findNearbyItem(canvasX,canvasY,seriesFilter);if(item){item.pageX=parseInt(item.series.xaxis.p2c(item.datapoint[0])+offset.left+plotOffset.left,10);item.pageY=parseInt(item.series.yaxis.p2c(item.datapoint[1])+offset.top+plotOffset.top,10)}if(options.grid.autoHighlight){for(var i=0;i<highlights.length;++i){var h=highlights[i];if(h.auto==eventname&&!(item&&h.series==item.series&&h.point[0]==item.datapoint[0]&&h.point[1]==item.datapoint[1]))unhighlight(h.series,h.point)}if(item)highlight(item.series,item.datapoint,eventname)}placeholder.trigger(eventname,[pos,item])}function triggerRedrawOverlay(){var t=options.interaction.redrawOverlayInterval;if(t==-1){drawOverlay();return}if(!redrawTimeout)redrawTimeout=setTimeout(drawOverlay,t)}function drawOverlay(){redrawTimeout=null;octx.save();overlay.clear();octx.translate(plotOffset.left,plotOffset.top);var i,hi;for(i=0;i<highlights.length;++i){hi=highlights[i];if(hi.series.bars.show)drawBarHighlight(hi.series,hi.point);else drawPointHighlight(hi.series,hi.point)}octx.restore();executeHooks(hooks.drawOverlay,[octx])}function highlight(s,point,auto){if(typeof s=="number")s=series[s];if(typeof point=="number"){var ps=s.datapoints.pointsize;point=s.datapoints.points.slice(ps*point,ps*(point+1))}var i=indexOfHighlight(s,point);if(i==-1){highlights.push({series:s,point:point,auto:auto});triggerRedrawOverlay()}else if(!auto)highlights[i].auto=false}function unhighlight(s,point){if(s==null&&point==null){highlights=[];triggerRedrawOverlay();return}if(typeof s=="number")s=series[s];if(typeof point=="number"){var ps=s.datapoints.pointsize;point=s.datapoints.points.slice(ps*point,ps*(point+1))}var i=indexOfHighlight(s,point);if(i!=-1){highlights.splice(i,1);triggerRedrawOverlay()}}function indexOfHighlight(s,p){for(var i=0;i<highlights.length;++i){var h=highlights[i];if(h.series==s&&h.point[0]==p[0]&&h.point[1]==p[1])return i}return-1}function drawPointHighlight(series,point){var x=point[0],y=point[1],axisx=series.xaxis,axisy=series.yaxis,highlightColor=typeof series.highlightColor==="string"?series.highlightColor:$.color.parse(series.color).scale("a",.5).toString();if(x<axisx.min||x>axisx.max||y<axisy.min||y>axisy.max)return;var pointRadius=series.points.radius+series.points.lineWidth/2;octx.lineWidth=pointRadius;octx.strokeStyle=highlightColor;var radius=1.5*pointRadius;x=axisx.p2c(x);y=axisy.p2c(y);octx.beginPath();if(series.points.symbol=="circle")octx.arc(x,y,radius,0,2*Math.PI,false);else series.points.symbol(octx,x,y,radius,false);octx.closePath();octx.stroke()}function drawBarHighlight(series,point){var highlightColor=typeof series.highlightColor==="string"?series.highlightColor:$.color.parse(series.color).scale("a",.5).toString(),fillStyle=highlightColor,barLeft;switch(series.bars.align){case"left":barLeft=0;break;case"right":barLeft=-series.bars.barWidth;break;default:barLeft=-series.bars.barWidth/2}octx.lineWidth=series.bars.lineWidth;octx.strokeStyle=highlightColor;drawBar(point[0],point[1],point[2]||0,barLeft,barLeft+series.bars.barWidth,function(){return fillStyle},series.xaxis,series.yaxis,octx,series.bars.horizontal,series.bars.lineWidth)}function getColorOrGradient(spec,bottom,top,defaultColor){if(typeof spec=="string")return spec;else{var gradient=ctx.createLinearGradient(0,top,0,bottom);for(var i=0,l=spec.colors.length;i<l;++i){var c=spec.colors[i];if(typeof c!="string"){var co=$.color.parse(defaultColor);if(c.brightness!=null)co=co.scale("rgb",c.brightness);if(c.opacity!=null)co.a*=c.opacity;c=co.toString()}gradient.addColorStop(i/(l-1),c)}return gradient}}}$.plot=function(placeholder,data,options){var plot=new Plot($(placeholder),data,options,$.plot.plugins);return plot};$.plot.version="0.8.2";$.plot.plugins=[];$.fn.plot=function(data,options){return this.each(function(){$.plot(this,data,options)})};function floorInBase(n,base){return base*Math.floor(n/base)}})(jQuery); \ No newline at end of file diff --git a/assets/plugins/flot/jquery.flot.navigate.js b/assets/plugins/flot/jquery.flot.navigate.js deleted file mode 100644 index 10256b83..00000000 --- a/assets/plugins/flot/jquery.flot.navigate.js +++ /dev/null @@ -1,346 +0,0 @@ -/* Flot plugin for adding the ability to pan and zoom the plot. - -Copyright (c) 2007-2013 IOLA and Ole Laursen. -Licensed under the MIT license. - -The default behaviour is double click and scrollwheel up/down to zoom in, drag -to pan. The plugin defines plot.zoom({ center }), plot.zoomOut() and -plot.pan( offset ) so you easily can add custom controls. It also fires -"plotpan" and "plotzoom" events, useful for synchronizing plots. - -The plugin supports these options: - - zoom: { - interactive: false - trigger: "dblclick" // or "click" for single click - amount: 1.5 // 2 = 200% (zoom in), 0.5 = 50% (zoom out) - } - - pan: { - interactive: false - cursor: "move" // CSS mouse cursor value used when dragging, e.g. "pointer" - frameRate: 20 - } - - xaxis, yaxis, x2axis, y2axis: { - zoomRange: null // or [ number, number ] (min range, max range) or false - panRange: null // or [ number, number ] (min, max) or false - } - -"interactive" enables the built-in drag/click behaviour. If you enable -interactive for pan, then you'll have a basic plot that supports moving -around; the same for zoom. - -"amount" specifies the default amount to zoom in (so 1.5 = 150%) relative to -the current viewport. - -"cursor" is a standard CSS mouse cursor string used for visual feedback to the -user when dragging. - -"frameRate" specifies the maximum number of times per second the plot will -update itself while the user is panning around on it (set to null to disable -intermediate pans, the plot will then not update until the mouse button is -released). - -"zoomRange" is the interval in which zooming can happen, e.g. with zoomRange: -[1, 100] the zoom will never scale the axis so that the difference between min -and max is smaller than 1 or larger than 100. You can set either end to null -to ignore, e.g. [1, null]. If you set zoomRange to false, zooming on that axis -will be disabled. - -"panRange" confines the panning to stay within a range, e.g. with panRange: -[-10, 20] panning stops at -10 in one end and at 20 in the other. Either can -be null, e.g. [-10, null]. If you set panRange to false, panning on that axis -will be disabled. - -Example API usage: - - plot = $.plot(...); - - // zoom default amount in on the pixel ( 10, 20 ) - plot.zoom({ center: { left: 10, top: 20 } }); - - // zoom out again - plot.zoomOut({ center: { left: 10, top: 20 } }); - - // zoom 200% in on the pixel (10, 20) - plot.zoom({ amount: 2, center: { left: 10, top: 20 } }); - - // pan 100 pixels to the left and 20 down - plot.pan({ left: -100, top: 20 }) - -Here, "center" specifies where the center of the zooming should happen. Note -that this is defined in pixel space, not the space of the data points (you can -use the p2c helpers on the axes in Flot to help you convert between these). - -"amount" is the amount to zoom the viewport relative to the current range, so -1 is 100% (i.e. no change), 1.5 is 150% (zoom in), 0.7 is 70% (zoom out). You -can set the default in the options. - -*/ - -// First two dependencies, jquery.event.drag.js and -// jquery.mousewheel.js, we put them inline here to save people the -// effort of downloading them. - -/* -jquery.event.drag.js ~ v1.5 ~ Copyright (c) 2008, Three Dub Media (http://threedubmedia.com) -Licensed under the MIT License ~ http://threedubmedia.googlecode.com/files/MIT-LICENSE.txt -*/ -(function(a){function e(h){var k,j=this,l=h.data||{};if(l.elem)j=h.dragTarget=l.elem,h.dragProxy=d.proxy||j,h.cursorOffsetX=l.pageX-l.left,h.cursorOffsetY=l.pageY-l.top,h.offsetX=h.pageX-h.cursorOffsetX,h.offsetY=h.pageY-h.cursorOffsetY;else if(d.dragging||l.which>0&&h.which!=l.which||a(h.target).is(l.not))return;switch(h.type){case"mousedown":return a.extend(l,a(j).offset(),{elem:j,target:h.target,pageX:h.pageX,pageY:h.pageY}),b.add(document,"mousemove mouseup",e,l),i(j,!1),d.dragging=null,!1;case!d.dragging&&"mousemove":if(g(h.pageX-l.pageX)+g(h.pageY-l.pageY)<l.distance)break;h.target=l.target,k=f(h,"dragstart",j),k!==!1&&(d.dragging=j,d.proxy=h.dragProxy=a(k||j)[0]);case"mousemove":if(d.dragging){if(k=f(h,"drag",j),c.drop&&(c.drop.allowed=k!==!1,c.drop.handler(h)),k!==!1)break;h.type="mouseup"}case"mouseup":b.remove(document,"mousemove mouseup",e),d.dragging&&(c.drop&&c.drop.handler(h),f(h,"dragend",j)),i(j,!0),d.dragging=d.proxy=l.elem=!1}return!0}function f(b,c,d){b.type=c;var e=a.event.dispatch.call(d,b);return e===!1?!1:e||b.result}function g(a){return Math.pow(a,2)}function h(){return d.dragging===!1}function i(a,b){a&&(a.unselectable=b?"off":"on",a.onselectstart=function(){return b},a.style&&(a.style.MozUserSelect=b?"":"none"))}a.fn.drag=function(a,b,c){return b&&this.bind("dragstart",a),c&&this.bind("dragend",c),a?this.bind("drag",b?b:a):this.trigger("drag")};var b=a.event,c=b.special,d=c.drag={not:":input",distance:0,which:1,dragging:!1,setup:function(c){c=a.extend({distance:d.distance,which:d.which,not:d.not},c||{}),c.distance=g(c.distance),b.add(this,"mousedown",e,c),this.attachEvent&&this.attachEvent("ondragstart",h)},teardown:function(){b.remove(this,"mousedown",e),this===d.dragging&&(d.dragging=d.proxy=!1),i(this,!0),this.detachEvent&&this.detachEvent("ondragstart",h)}};c.dragstart=c.dragend={setup:function(){},teardown:function(){}}})(jQuery); - -/* jquery.mousewheel.min.js - * Copyright (c) 2011 Brandon Aaron (http://brandonaaron.net) - * Licensed under the MIT License (LICENSE.txt). - * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers. - * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix. - * Thanks to: Seamus Leahy for adding deltaX and deltaY - * - * Version: 3.0.6 - * - * Requires: 1.2.2+ - */ -(function(d){function e(a){var b=a||window.event,c=[].slice.call(arguments,1),f=0,e=0,g=0,a=d.event.fix(b);a.type="mousewheel";b.wheelDelta&&(f=b.wheelDelta/120);b.detail&&(f=-b.detail/3);g=f;void 0!==b.axis&&b.axis===b.HORIZONTAL_AXIS&&(g=0,e=-1*f);void 0!==b.wheelDeltaY&&(g=b.wheelDeltaY/120);void 0!==b.wheelDeltaX&&(e=-1*b.wheelDeltaX/120);c.unshift(a,f,e,g);return(d.event.dispatch||d.event.handle).apply(this,c)}var c=["DOMMouseScroll","mousewheel"];if(d.event.fixHooks)for(var h=c.length;h;)d.event.fixHooks[c[--h]]=d.event.mouseHooks;d.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var a=c.length;a;)this.addEventListener(c[--a],e,!1);else this.onmousewheel=e},teardown:function(){if(this.removeEventListener)for(var a=c.length;a;)this.removeEventListener(c[--a],e,!1);else this.onmousewheel=null}};d.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})})(jQuery); - - - - -(function ($) { - var options = { - xaxis: { - zoomRange: null, // or [number, number] (min range, max range) - panRange: null // or [number, number] (min, max) - }, - zoom: { - interactive: false, - trigger: "dblclick", // or "click" for single click - amount: 1.5 // how much to zoom relative to current position, 2 = 200% (zoom in), 0.5 = 50% (zoom out) - }, - pan: { - interactive: false, - cursor: "move", - frameRate: 20 - } - }; - - function init(plot) { - function onZoomClick(e, zoomOut) { - var c = plot.offset(); - c.left = e.pageX - c.left; - c.top = e.pageY - c.top; - if (zoomOut) - plot.zoomOut({ center: c }); - else - plot.zoom({ center: c }); - } - - function onMouseWheel(e, delta) { - e.preventDefault(); - onZoomClick(e, delta < 0); - return false; - } - - var prevCursor = 'default', prevPageX = 0, prevPageY = 0, - panTimeout = null; - - function onDragStart(e) { - if (e.which != 1) // only accept left-click - return false; - var c = plot.getPlaceholder().css('cursor'); - if (c) - prevCursor = c; - plot.getPlaceholder().css('cursor', plot.getOptions().pan.cursor); - prevPageX = e.pageX; - prevPageY = e.pageY; - } - - function onDrag(e) { - var frameRate = plot.getOptions().pan.frameRate; - if (panTimeout || !frameRate) - return; - - panTimeout = setTimeout(function () { - plot.pan({ left: prevPageX - e.pageX, - top: prevPageY - e.pageY }); - prevPageX = e.pageX; - prevPageY = e.pageY; - - panTimeout = null; - }, 1 / frameRate * 1000); - } - - function onDragEnd(e) { - if (panTimeout) { - clearTimeout(panTimeout); - panTimeout = null; - } - - plot.getPlaceholder().css('cursor', prevCursor); - plot.pan({ left: prevPageX - e.pageX, - top: prevPageY - e.pageY }); - } - - function bindEvents(plot, eventHolder) { - var o = plot.getOptions(); - if (o.zoom.interactive) { - eventHolder[o.zoom.trigger](onZoomClick); - eventHolder.mousewheel(onMouseWheel); - } - - if (o.pan.interactive) { - eventHolder.bind("dragstart", { distance: 10 }, onDragStart); - eventHolder.bind("drag", onDrag); - eventHolder.bind("dragend", onDragEnd); - } - } - - plot.zoomOut = function (args) { - if (!args) - args = {}; - - if (!args.amount) - args.amount = plot.getOptions().zoom.amount; - - args.amount = 1 / args.amount; - plot.zoom(args); - }; - - plot.zoom = function (args) { - if (!args) - args = {}; - - var c = args.center, - amount = args.amount || plot.getOptions().zoom.amount, - w = plot.width(), h = plot.height(); - - if (!c) - c = { left: w / 2, top: h / 2 }; - - var xf = c.left / w, - yf = c.top / h, - minmax = { - x: { - min: c.left - xf * w / amount, - max: c.left + (1 - xf) * w / amount - }, - y: { - min: c.top - yf * h / amount, - max: c.top + (1 - yf) * h / amount - } - }; - - $.each(plot.getAxes(), function(_, axis) { - var opts = axis.options, - min = minmax[axis.direction].min, - max = minmax[axis.direction].max, - zr = opts.zoomRange, - pr = opts.panRange; - - if (zr === false) // no zooming on this axis - return; - - min = axis.c2p(min); - max = axis.c2p(max); - if (min > max) { - // make sure min < max - var tmp = min; - min = max; - max = tmp; - } - - //Check that we are in panRange - if (pr) { - if (pr[0] != null && min < pr[0]) { - min = pr[0]; - } - if (pr[1] != null && max > pr[1]) { - max = pr[1]; - } - } - - var range = max - min; - if (zr && - ((zr[0] != null && range < zr[0]) || - (zr[1] != null && range > zr[1]))) - return; - - opts.min = min; - opts.max = max; - }); - - plot.setupGrid(); - plot.draw(); - - if (!args.preventEvent) - plot.getPlaceholder().trigger("plotzoom", [ plot, args ]); - }; - - plot.pan = function (args) { - var delta = { - x: +args.left, - y: +args.top - }; - - if (isNaN(delta.x)) - delta.x = 0; - if (isNaN(delta.y)) - delta.y = 0; - - $.each(plot.getAxes(), function (_, axis) { - var opts = axis.options, - min, max, d = delta[axis.direction]; - - min = axis.c2p(axis.p2c(axis.min) + d), - max = axis.c2p(axis.p2c(axis.max) + d); - - var pr = opts.panRange; - if (pr === false) // no panning on this axis - return; - - if (pr) { - // check whether we hit the wall - if (pr[0] != null && pr[0] > min) { - d = pr[0] - min; - min += d; - max += d; - } - - if (pr[1] != null && pr[1] < max) { - d = pr[1] - max; - min += d; - max += d; - } - } - - opts.min = min; - opts.max = max; - }); - - plot.setupGrid(); - plot.draw(); - - if (!args.preventEvent) - plot.getPlaceholder().trigger("plotpan", [ plot, args ]); - }; - - function shutdown(plot, eventHolder) { - eventHolder.unbind(plot.getOptions().zoom.trigger, onZoomClick); - eventHolder.unbind("mousewheel", onMouseWheel); - eventHolder.unbind("dragstart", onDragStart); - eventHolder.unbind("drag", onDrag); - eventHolder.unbind("dragend", onDragEnd); - if (panTimeout) - clearTimeout(panTimeout); - } - - plot.hooks.bindEvents.push(bindEvents); - plot.hooks.shutdown.push(shutdown); - } - - $.plot.plugins.push({ - init: init, - options: options, - name: 'navigate', - version: '1.3' - }); -})(jQuery); diff --git a/assets/plugins/flot/jquery.flot.navigate.min.js b/assets/plugins/flot/jquery.flot.navigate.min.js deleted file mode 100644 index a69a9399..00000000 --- a/assets/plugins/flot/jquery.flot.navigate.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(a){function e(h){var k,j=this,l=h.data||{};if(l.elem)j=h.dragTarget=l.elem,h.dragProxy=d.proxy||j,h.cursorOffsetX=l.pageX-l.left,h.cursorOffsetY=l.pageY-l.top,h.offsetX=h.pageX-h.cursorOffsetX,h.offsetY=h.pageY-h.cursorOffsetY;else if(d.dragging||l.which>0&&h.which!=l.which||a(h.target).is(l.not))return;switch(h.type){case"mousedown":return a.extend(l,a(j).offset(),{elem:j,target:h.target,pageX:h.pageX,pageY:h.pageY}),b.add(document,"mousemove mouseup",e,l),i(j,!1),d.dragging=null,!1;case!d.dragging&&"mousemove":if(g(h.pageX-l.pageX)+g(h.pageY-l.pageY)<l.distance)break;h.target=l.target,k=f(h,"dragstart",j),k!==!1&&(d.dragging=j,d.proxy=h.dragProxy=a(k||j)[0]);case"mousemove":if(d.dragging){if(k=f(h,"drag",j),c.drop&&(c.drop.allowed=k!==!1,c.drop.handler(h)),k!==!1)break;h.type="mouseup"}case"mouseup":b.remove(document,"mousemove mouseup",e),d.dragging&&(c.drop&&c.drop.handler(h),f(h,"dragend",j)),i(j,!0),d.dragging=d.proxy=l.elem=!1}return!0}function f(b,c,d){b.type=c;var e=a.event.dispatch.call(d,b);return e===!1?!1:e||b.result}function g(a){return Math.pow(a,2)}function h(){return d.dragging===!1}function i(a,b){a&&(a.unselectable=b?"off":"on",a.onselectstart=function(){return b},a.style&&(a.style.MozUserSelect=b?"":"none"))}a.fn.drag=function(a,b,c){return b&&this.bind("dragstart",a),c&&this.bind("dragend",c),a?this.bind("drag",b?b:a):this.trigger("drag")};var b=a.event,c=b.special,d=c.drag={not:":input",distance:0,which:1,dragging:!1,setup:function(c){c=a.extend({distance:d.distance,which:d.which,not:d.not},c||{}),c.distance=g(c.distance),b.add(this,"mousedown",e,c),this.attachEvent&&this.attachEvent("ondragstart",h)},teardown:function(){b.remove(this,"mousedown",e),this===d.dragging&&(d.dragging=d.proxy=!1),i(this,!0),this.detachEvent&&this.detachEvent("ondragstart",h)}};c.dragstart=c.dragend={setup:function(){},teardown:function(){}}})(jQuery);(function(d){function e(a){var b=a||window.event,c=[].slice.call(arguments,1),f=0,e=0,g=0,a=d.event.fix(b);a.type="mousewheel";b.wheelDelta&&(f=b.wheelDelta/120);b.detail&&(f=-b.detail/3);g=f;void 0!==b.axis&&b.axis===b.HORIZONTAL_AXIS&&(g=0,e=-1*f);void 0!==b.wheelDeltaY&&(g=b.wheelDeltaY/120);void 0!==b.wheelDeltaX&&(e=-1*b.wheelDeltaX/120);c.unshift(a,f,e,g);return(d.event.dispatch||d.event.handle).apply(this,c)}var c=["DOMMouseScroll","mousewheel"];if(d.event.fixHooks)for(var h=c.length;h;)d.event.fixHooks[c[--h]]=d.event.mouseHooks;d.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var a=c.length;a;)this.addEventListener(c[--a],e,!1);else this.onmousewheel=e},teardown:function(){if(this.removeEventListener)for(var a=c.length;a;)this.removeEventListener(c[--a],e,!1);else this.onmousewheel=null}};d.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})})(jQuery);(function($){var options={xaxis:{zoomRange:null,panRange:null},zoom:{interactive:false,trigger:"dblclick",amount:1.5},pan:{interactive:false,cursor:"move",frameRate:20}};function init(plot){function onZoomClick(e,zoomOut){var c=plot.offset();c.left=e.pageX-c.left;c.top=e.pageY-c.top;if(zoomOut)plot.zoomOut({center:c});else plot.zoom({center:c})}function onMouseWheel(e,delta){e.preventDefault();onZoomClick(e,delta<0);return false}var prevCursor="default",prevPageX=0,prevPageY=0,panTimeout=null;function onDragStart(e){if(e.which!=1)return false;var c=plot.getPlaceholder().css("cursor");if(c)prevCursor=c;plot.getPlaceholder().css("cursor",plot.getOptions().pan.cursor);prevPageX=e.pageX;prevPageY=e.pageY}function onDrag(e){var frameRate=plot.getOptions().pan.frameRate;if(panTimeout||!frameRate)return;panTimeout=setTimeout(function(){plot.pan({left:prevPageX-e.pageX,top:prevPageY-e.pageY});prevPageX=e.pageX;prevPageY=e.pageY;panTimeout=null},1/frameRate*1e3)}function onDragEnd(e){if(panTimeout){clearTimeout(panTimeout);panTimeout=null}plot.getPlaceholder().css("cursor",prevCursor);plot.pan({left:prevPageX-e.pageX,top:prevPageY-e.pageY})}function bindEvents(plot,eventHolder){var o=plot.getOptions();if(o.zoom.interactive){eventHolder[o.zoom.trigger](onZoomClick);eventHolder.mousewheel(onMouseWheel)}if(o.pan.interactive){eventHolder.bind("dragstart",{distance:10},onDragStart);eventHolder.bind("drag",onDrag);eventHolder.bind("dragend",onDragEnd)}}plot.zoomOut=function(args){if(!args)args={};if(!args.amount)args.amount=plot.getOptions().zoom.amount;args.amount=1/args.amount;plot.zoom(args)};plot.zoom=function(args){if(!args)args={};var c=args.center,amount=args.amount||plot.getOptions().zoom.amount,w=plot.width(),h=plot.height();if(!c)c={left:w/2,top:h/2};var xf=c.left/w,yf=c.top/h,minmax={x:{min:c.left-xf*w/amount,max:c.left+(1-xf)*w/amount},y:{min:c.top-yf*h/amount,max:c.top+(1-yf)*h/amount}};$.each(plot.getAxes(),function(_,axis){var opts=axis.options,min=minmax[axis.direction].min,max=minmax[axis.direction].max,zr=opts.zoomRange,pr=opts.panRange;if(zr===false)return;min=axis.c2p(min);max=axis.c2p(max);if(min>max){var tmp=min;min=max;max=tmp}if(pr){if(pr[0]!=null&&min<pr[0]){min=pr[0]}if(pr[1]!=null&&max>pr[1]){max=pr[1]}}var range=max-min;if(zr&&(zr[0]!=null&&range<zr[0]||zr[1]!=null&&range>zr[1]))return;opts.min=min;opts.max=max});plot.setupGrid();plot.draw();if(!args.preventEvent)plot.getPlaceholder().trigger("plotzoom",[plot,args])};plot.pan=function(args){var delta={x:+args.left,y:+args.top};if(isNaN(delta.x))delta.x=0;if(isNaN(delta.y))delta.y=0;$.each(plot.getAxes(),function(_,axis){var opts=axis.options,min,max,d=delta[axis.direction];min=axis.c2p(axis.p2c(axis.min)+d),max=axis.c2p(axis.p2c(axis.max)+d);var pr=opts.panRange;if(pr===false)return;if(pr){if(pr[0]!=null&&pr[0]>min){d=pr[0]-min;min+=d;max+=d}if(pr[1]!=null&&pr[1]<max){d=pr[1]-max;min+=d;max+=d}}opts.min=min;opts.max=max});plot.setupGrid();plot.draw();if(!args.preventEvent)plot.getPlaceholder().trigger("plotpan",[plot,args])};function shutdown(plot,eventHolder){eventHolder.unbind(plot.getOptions().zoom.trigger,onZoomClick);eventHolder.unbind("mousewheel",onMouseWheel);eventHolder.unbind("dragstart",onDragStart);eventHolder.unbind("drag",onDrag);eventHolder.unbind("dragend",onDragEnd);if(panTimeout)clearTimeout(panTimeout)}plot.hooks.bindEvents.push(bindEvents);plot.hooks.shutdown.push(shutdown)}$.plot.plugins.push({init:init,options:options,name:"navigate",version:"1.3"})})(jQuery); \ No newline at end of file diff --git a/assets/plugins/flot/jquery.flot.pie.js b/assets/plugins/flot/jquery.flot.pie.js deleted file mode 100644 index bf190e18..00000000 --- a/assets/plugins/flot/jquery.flot.pie.js +++ /dev/null @@ -1,817 +0,0 @@ -/* Flot plugin for rendering pie charts. - -Copyright (c) 2007-2013 IOLA and Ole Laursen. -Licensed under the MIT license. - -The plugin assumes that each series has a single data value, and that each -value is a positive integer or zero. Negative numbers don't make sense for a -pie chart, and have unpredictable results. The values do NOT need to be -passed in as percentages; the plugin will calculate the total and per-slice -percentages internally. - -* Created by Brian Medendorp - -* Updated with contributions from btburnett3, Anthony Aragues and Xavi Ivars - -The plugin supports these options: - - series: { - pie: { - show: true/false - radius: 0-1 for percentage of fullsize, or a specified pixel length, or 'auto' - innerRadius: 0-1 for percentage of fullsize or a specified pixel length, for creating a donut effect - startAngle: 0-2 factor of PI used for starting angle (in radians) i.e 3/2 starts at the top, 0 and 2 have the same result - tilt: 0-1 for percentage to tilt the pie, where 1 is no tilt, and 0 is completely flat (nothing will show) - offset: { - top: integer value to move the pie up or down - left: integer value to move the pie left or right, or 'auto' - }, - stroke: { - color: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#FFF') - width: integer pixel width of the stroke - }, - label: { - show: true/false, or 'auto' - formatter: a user-defined function that modifies the text/style of the label text - radius: 0-1 for percentage of fullsize, or a specified pixel length - background: { - color: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#000') - opacity: 0-1 - }, - threshold: 0-1 for the percentage value at which to hide labels (if they're too small) - }, - combine: { - threshold: 0-1 for the percentage value at which to combine slices (if they're too small) - color: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#CCC'), if null, the plugin will automatically use the color of the first slice to be combined - label: any text value of what the combined slice should be labeled - } - highlight: { - opacity: 0-1 - } - } - } - -More detail and specific examples can be found in the included HTML file. - -*/ - -(function($) { - - // Maximum redraw attempts when fitting labels within the plot - - var REDRAW_ATTEMPTS = 10; - - // Factor by which to shrink the pie when fitting labels within the plot - - var REDRAW_SHRINK = 0.95; - - function init(plot) { - - var canvas = null, - target = null, - options = null, - maxRadius = null, - centerLeft = null, - centerTop = null, - processed = false, - ctx = null; - - // interactive variables - - var highlights = []; - - // add hook to determine if pie plugin in enabled, and then perform necessary operations - - plot.hooks.processOptions.push(function(plot, options) { - if (options.series.pie.show) { - - options.grid.show = false; - - // set labels.show - - if (options.series.pie.label.show == "auto") { - if (options.legend.show) { - options.series.pie.label.show = false; - } else { - options.series.pie.label.show = true; - } - } - - // set radius - - if (options.series.pie.radius == "auto") { - if (options.series.pie.label.show) { - options.series.pie.radius = 3/4; - } else { - options.series.pie.radius = 1; - } - } - - // ensure sane tilt - - if (options.series.pie.tilt > 1) { - options.series.pie.tilt = 1; - } else if (options.series.pie.tilt < 0) { - options.series.pie.tilt = 0; - } - } - }); - - plot.hooks.bindEvents.push(function(plot, eventHolder) { - var options = plot.getOptions(); - if (options.series.pie.show) { - if (options.grid.hoverable) { - eventHolder.unbind("mousemove").mousemove(onMouseMove); - } - if (options.grid.clickable) { - eventHolder.unbind("click").click(onClick); - } - } - }); - - plot.hooks.processDatapoints.push(function(plot, series, data, datapoints) { - var options = plot.getOptions(); - if (options.series.pie.show) { - processDatapoints(plot, series, data, datapoints); - } - }); - - plot.hooks.drawOverlay.push(function(plot, octx) { - var options = plot.getOptions(); - if (options.series.pie.show) { - drawOverlay(plot, octx); - } - }); - - plot.hooks.draw.push(function(plot, newCtx) { - var options = plot.getOptions(); - if (options.series.pie.show) { - draw(plot, newCtx); - } - }); - - function processDatapoints(plot, series, datapoints) { - if (!processed) { - processed = true; - canvas = plot.getCanvas(); - target = $(canvas).parent(); - options = plot.getOptions(); - plot.setData(combine(plot.getData())); - } - } - - function combine(data) { - - var total = 0, - combined = 0, - numCombined = 0, - color = options.series.pie.combine.color, - newdata = []; - - // Fix up the raw data from Flot, ensuring the data is numeric - - for (var i = 0; i < data.length; ++i) { - - var value = data[i].data; - - // If the data is an array, we'll assume that it's a standard - // Flot x-y pair, and are concerned only with the second value. - - // Note how we use the original array, rather than creating a - // new one; this is more efficient and preserves any extra data - // that the user may have stored in higher indexes. - - if ($.isArray(value) && value.length == 1) { - value = value[0]; - } - - if ($.isArray(value)) { - // Equivalent to $.isNumeric() but compatible with jQuery < 1.7 - if (!isNaN(parseFloat(value[1])) && isFinite(value[1])) { - value[1] = +value[1]; - } else { - value[1] = 0; - } - } else if (!isNaN(parseFloat(value)) && isFinite(value)) { - value = [1, +value]; - } else { - value = [1, 0]; - } - - data[i].data = [value]; - } - - // Sum up all the slices, so we can calculate percentages for each - - for (var i = 0; i < data.length; ++i) { - total += data[i].data[0][1]; - } - - // Count the number of slices with percentages below the combine - // threshold; if it turns out to be just one, we won't combine. - - for (var i = 0; i < data.length; ++i) { - var value = data[i].data[0][1]; - if (value / total <= options.series.pie.combine.threshold) { - combined += value; - numCombined++; - if (!color) { - color = data[i].color; - } - } - } - - for (var i = 0; i < data.length; ++i) { - var value = data[i].data[0][1]; - if (numCombined < 2 || value / total > options.series.pie.combine.threshold) { - newdata.push({ - data: [[1, value]], - color: data[i].color, - label: data[i].label, - angle: value * Math.PI * 2 / total, - percent: value / (total / 100) - }); - } - } - - if (numCombined > 1) { - newdata.push({ - data: [[1, combined]], - color: color, - label: options.series.pie.combine.label, - angle: combined * Math.PI * 2 / total, - percent: combined / (total / 100) - }); - } - - return newdata; - } - - function draw(plot, newCtx) { - - if (!target) { - return; // if no series were passed - } - - var canvasWidth = plot.getPlaceholder().width(), - canvasHeight = plot.getPlaceholder().height(), - legendWidth = target.children().filter(".legend").children().width() || 0; - - ctx = newCtx; - - // WARNING: HACK! REWRITE THIS CODE AS SOON AS POSSIBLE! - - // When combining smaller slices into an 'other' slice, we need to - // add a new series. Since Flot gives plugins no way to modify the - // list of series, the pie plugin uses a hack where the first call - // to processDatapoints results in a call to setData with the new - // list of series, then subsequent processDatapoints do nothing. - - // The plugin-global 'processed' flag is used to control this hack; - // it starts out false, and is set to true after the first call to - // processDatapoints. - - // Unfortunately this turns future setData calls into no-ops; they - // call processDatapoints, the flag is true, and nothing happens. - - // To fix this we'll set the flag back to false here in draw, when - // all series have been processed, so the next sequence of calls to - // processDatapoints once again starts out with a slice-combine. - // This is really a hack; in 0.9 we need to give plugins a proper - // way to modify series before any processing begins. - - processed = false; - - // calculate maximum radius and center point - - maxRadius = Math.min(canvasWidth, canvasHeight / options.series.pie.tilt) / 2; - centerTop = canvasHeight / 2 + options.series.pie.offset.top; - centerLeft = canvasWidth / 2; - - if (options.series.pie.offset.left == "auto") { - if (options.legend.position.match("w")) { - centerLeft += legendWidth / 2; - } else { - centerLeft -= legendWidth / 2; - } - if (centerLeft < maxRadius) { - centerLeft = maxRadius; - } else if (centerLeft > canvasWidth - maxRadius) { - centerLeft = canvasWidth - maxRadius; - } - } else { - centerLeft += options.series.pie.offset.left; - } - - var slices = plot.getData(), - attempts = 0; - - // Keep shrinking the pie's radius until drawPie returns true, - // indicating that all the labels fit, or we try too many times. - - do { - if (attempts > 0) { - maxRadius *= REDRAW_SHRINK; - } - attempts += 1; - clear(); - if (options.series.pie.tilt <= 0.8) { - drawShadow(); - } - } while (!drawPie() && attempts < REDRAW_ATTEMPTS); - - if (attempts >= REDRAW_ATTEMPTS) { - clear(); - target.prepend("<div class='error'>Could not draw pie with labels contained inside canvas</div>"); - } - - if (plot.setSeries && plot.insertLegend) { - plot.setSeries(slices); - plot.insertLegend(); - } - - // we're actually done at this point, just defining internal functions at this point - - function clear() { - ctx.clearRect(0, 0, canvasWidth, canvasHeight); - target.children().filter(".pieLabel, .pieLabelBackground").remove(); - } - - function drawShadow() { - - var shadowLeft = options.series.pie.shadow.left; - var shadowTop = options.series.pie.shadow.top; - var edge = 10; - var alpha = options.series.pie.shadow.alpha; - var radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius; - - if (radius >= canvasWidth / 2 - shadowLeft || radius * options.series.pie.tilt >= canvasHeight / 2 - shadowTop || radius <= edge) { - return; // shadow would be outside canvas, so don't draw it - } - - ctx.save(); - ctx.translate(shadowLeft,shadowTop); - ctx.globalAlpha = alpha; - ctx.fillStyle = "#000"; - - // center and rotate to starting position - - ctx.translate(centerLeft,centerTop); - ctx.scale(1, options.series.pie.tilt); - - //radius -= edge; - - for (var i = 1; i <= edge; i++) { - ctx.beginPath(); - ctx.arc(0, 0, radius, 0, Math.PI * 2, false); - ctx.fill(); - radius -= i; - } - - ctx.restore(); - } - - function drawPie() { - - var startAngle = Math.PI * options.series.pie.startAngle; - var radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius; - - // center and rotate to starting position - - ctx.save(); - ctx.translate(centerLeft,centerTop); - ctx.scale(1, options.series.pie.tilt); - //ctx.rotate(startAngle); // start at top; -- This doesn't work properly in Opera - - // draw slices - - ctx.save(); - var currentAngle = startAngle; - for (var i = 0; i < slices.length; ++i) { - slices[i].startAngle = currentAngle; - drawSlice(slices[i].angle, slices[i].color, true); - } - ctx.restore(); - - // draw slice outlines - - if (options.series.pie.stroke.width > 0) { - ctx.save(); - ctx.lineWidth = options.series.pie.stroke.width; - currentAngle = startAngle; - for (var i = 0; i < slices.length; ++i) { - drawSlice(slices[i].angle, options.series.pie.stroke.color, false); - } - ctx.restore(); - } - - // draw donut hole - - drawDonutHole(ctx); - - ctx.restore(); - - // Draw the labels, returning true if they fit within the plot - - if (options.series.pie.label.show) { - return drawLabels(); - } else return true; - - function drawSlice(angle, color, fill) { - - if (angle <= 0 || isNaN(angle)) { - return; - } - - if (fill) { - ctx.fillStyle = color; - } else { - ctx.strokeStyle = color; - ctx.lineJoin = "round"; - } - - ctx.beginPath(); - if (Math.abs(angle - Math.PI * 2) > 0.000000001) { - ctx.moveTo(0, 0); // Center of the pie - } - - //ctx.arc(0, 0, radius, 0, angle, false); // This doesn't work properly in Opera - ctx.arc(0, 0, radius,currentAngle, currentAngle + angle / 2, false); - ctx.arc(0, 0, radius,currentAngle + angle / 2, currentAngle + angle, false); - ctx.closePath(); - //ctx.rotate(angle); // This doesn't work properly in Opera - currentAngle += angle; - - if (fill) { - ctx.fill(); - } else { - ctx.stroke(); - } - } - - function drawLabels() { - - var currentAngle = startAngle; - var radius = options.series.pie.label.radius > 1 ? options.series.pie.label.radius : maxRadius * options.series.pie.label.radius; - - for (var i = 0; i < slices.length; ++i) { - if (slices[i].percent >= options.series.pie.label.threshold * 100) { - if (!drawLabel(slices[i], currentAngle, i)) { - return false; - } - } - currentAngle += slices[i].angle; - } - - return true; - - function drawLabel(slice, startAngle, index) { - - if (slice.data[0][1] == 0) { - return true; - } - - // format label text - - var lf = options.legend.labelFormatter, text, plf = options.series.pie.label.formatter; - - if (lf) { - text = lf(slice.label, slice); - } else { - text = slice.label; - } - - if (plf) { - text = plf(text, slice); - } - - var halfAngle = ((startAngle + slice.angle) + startAngle) / 2; - var x = centerLeft + Math.round(Math.cos(halfAngle) * radius); - var y = centerTop + Math.round(Math.sin(halfAngle) * radius) * options.series.pie.tilt; - - var html = "<span class='pieLabel' id='pieLabel" + index + "' style='position:absolute;top:" + y + "px;left:" + x + "px;'>" + text + "</span>"; - target.append(html); - - var label = target.children("#pieLabel" + index); - var labelTop = (y - label.height() / 2); - var labelLeft = (x - label.width() / 2); - - label.css("top", labelTop); - label.css("left", labelLeft); - - // check to make sure that the label is not outside the canvas - - if (0 - labelTop > 0 || 0 - labelLeft > 0 || canvasHeight - (labelTop + label.height()) < 0 || canvasWidth - (labelLeft + label.width()) < 0) { - return false; - } - - if (options.series.pie.label.background.opacity != 0) { - - // put in the transparent background separately to avoid blended labels and label boxes - - var c = options.series.pie.label.background.color; - - if (c == null) { - c = slice.color; - } - - var pos = "top:" + labelTop + "px;left:" + labelLeft + "px;"; - $("<div class='pieLabelBackground' style='position:absolute;width:" + label.width() + "px;height:" + label.height() + "px;" + pos + "background-color:" + c + ";'></div>") - .css("opacity", options.series.pie.label.background.opacity) - .insertBefore(label); - } - - return true; - } // end individual label function - } // end drawLabels function - } // end drawPie function - } // end draw function - - // Placed here because it needs to be accessed from multiple locations - - function drawDonutHole(layer) { - if (options.series.pie.innerRadius > 0) { - - // subtract the center - - layer.save(); - var innerRadius = options.series.pie.innerRadius > 1 ? options.series.pie.innerRadius : maxRadius * options.series.pie.innerRadius; - layer.globalCompositeOperation = "destination-out"; // this does not work with excanvas, but it will fall back to using the stroke color - layer.beginPath(); - layer.fillStyle = options.series.pie.stroke.color; - layer.arc(0, 0, innerRadius, 0, Math.PI * 2, false); - layer.fill(); - layer.closePath(); - layer.restore(); - - // add inner stroke - - layer.save(); - layer.beginPath(); - layer.strokeStyle = options.series.pie.stroke.color; - layer.arc(0, 0, innerRadius, 0, Math.PI * 2, false); - layer.stroke(); - layer.closePath(); - layer.restore(); - - // TODO: add extra shadow inside hole (with a mask) if the pie is tilted. - } - } - - //-- Additional Interactive related functions -- - - function isPointInPoly(poly, pt) { - for(var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i) - ((poly[i][1] <= pt[1] && pt[1] < poly[j][1]) || (poly[j][1] <= pt[1] && pt[1]< poly[i][1])) - && (pt[0] < (poly[j][0] - poly[i][0]) * (pt[1] - poly[i][1]) / (poly[j][1] - poly[i][1]) + poly[i][0]) - && (c = !c); - return c; - } - - function findNearbySlice(mouseX, mouseY) { - - var slices = plot.getData(), - options = plot.getOptions(), - radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius, - x, y; - - for (var i = 0; i < slices.length; ++i) { - - var s = slices[i]; - - if (s.pie.show) { - - ctx.save(); - ctx.beginPath(); - ctx.moveTo(0, 0); // Center of the pie - //ctx.scale(1, options.series.pie.tilt); // this actually seems to break everything when here. - ctx.arc(0, 0, radius, s.startAngle, s.startAngle + s.angle / 2, false); - ctx.arc(0, 0, radius, s.startAngle + s.angle / 2, s.startAngle + s.angle, false); - ctx.closePath(); - x = mouseX - centerLeft; - y = mouseY - centerTop; - - if (ctx.isPointInPath) { - if (ctx.isPointInPath(mouseX - centerLeft, mouseY - centerTop)) { - ctx.restore(); - return { - datapoint: [s.percent, s.data], - dataIndex: 0, - series: s, - seriesIndex: i - }; - } - } else { - - // excanvas for IE doesn;t support isPointInPath, this is a workaround. - - var p1X = radius * Math.cos(s.startAngle), - p1Y = radius * Math.sin(s.startAngle), - p2X = radius * Math.cos(s.startAngle + s.angle / 4), - p2Y = radius * Math.sin(s.startAngle + s.angle / 4), - p3X = radius * Math.cos(s.startAngle + s.angle / 2), - p3Y = radius * Math.sin(s.startAngle + s.angle / 2), - p4X = radius * Math.cos(s.startAngle + s.angle / 1.5), - p4Y = radius * Math.sin(s.startAngle + s.angle / 1.5), - p5X = radius * Math.cos(s.startAngle + s.angle), - p5Y = radius * Math.sin(s.startAngle + s.angle), - arrPoly = [[0, 0], [p1X, p1Y], [p2X, p2Y], [p3X, p3Y], [p4X, p4Y], [p5X, p5Y]], - arrPoint = [x, y]; - - // TODO: perhaps do some mathmatical trickery here with the Y-coordinate to compensate for pie tilt? - - if (isPointInPoly(arrPoly, arrPoint)) { - ctx.restore(); - return { - datapoint: [s.percent, s.data], - dataIndex: 0, - series: s, - seriesIndex: i - }; - } - } - - ctx.restore(); - } - } - - return null; - } - - function onMouseMove(e) { - triggerClickHoverEvent("plothover", e); - } - - function onClick(e) { - triggerClickHoverEvent("plotclick", e); - } - - // trigger click or hover event (they send the same parameters so we share their code) - - function triggerClickHoverEvent(eventname, e) { - - var offset = plot.offset(); - var canvasX = parseInt(e.pageX - offset.left); - var canvasY = parseInt(e.pageY - offset.top); - var item = findNearbySlice(canvasX, canvasY); - - if (options.grid.autoHighlight) { - - // clear auto-highlights - - for (var i = 0; i < highlights.length; ++i) { - var h = highlights[i]; - if (h.auto == eventname && !(item && h.series == item.series)) { - unhighlight(h.series); - } - } - } - - // highlight the slice - - if (item) { - highlight(item.series, eventname); - } - - // trigger any hover bind events - - var pos = { pageX: e.pageX, pageY: e.pageY }; - target.trigger(eventname, [pos, item]); - } - - function highlight(s, auto) { - //if (typeof s == "number") { - // s = series[s]; - //} - - var i = indexOfHighlight(s); - - if (i == -1) { - highlights.push({ series: s, auto: auto }); - plot.triggerRedrawOverlay(); - } else if (!auto) { - highlights[i].auto = false; - } - } - - function unhighlight(s) { - if (s == null) { - highlights = []; - plot.triggerRedrawOverlay(); - } - - //if (typeof s == "number") { - // s = series[s]; - //} - - var i = indexOfHighlight(s); - - if (i != -1) { - highlights.splice(i, 1); - plot.triggerRedrawOverlay(); - } - } - - function indexOfHighlight(s) { - for (var i = 0; i < highlights.length; ++i) { - var h = highlights[i]; - if (h.series == s) - return i; - } - return -1; - } - - function drawOverlay(plot, octx) { - - var options = plot.getOptions(); - - var radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius; - - octx.save(); - octx.translate(centerLeft, centerTop); - octx.scale(1, options.series.pie.tilt); - - for (var i = 0; i < highlights.length; ++i) { - drawHighlight(highlights[i].series); - } - - drawDonutHole(octx); - - octx.restore(); - - function drawHighlight(series) { - - if (series.angle <= 0 || isNaN(series.angle)) { - return; - } - - //octx.fillStyle = parseColor(options.series.pie.highlight.color).scale(null, null, null, options.series.pie.highlight.opacity).toString(); - octx.fillStyle = "rgba(255, 255, 255, " + options.series.pie.highlight.opacity + ")"; // this is temporary until we have access to parseColor - octx.beginPath(); - if (Math.abs(series.angle - Math.PI * 2) > 0.000000001) { - octx.moveTo(0, 0); // Center of the pie - } - octx.arc(0, 0, radius, series.startAngle, series.startAngle + series.angle / 2, false); - octx.arc(0, 0, radius, series.startAngle + series.angle / 2, series.startAngle + series.angle, false); - octx.closePath(); - octx.fill(); - } - } - } // end init (plugin body) - - // define pie specific options and their default values - - var options = { - series: { - pie: { - show: false, - radius: "auto", // actual radius of the visible pie (based on full calculated radius if <=1, or hard pixel value) - innerRadius: 0, /* for donut */ - startAngle: 3/2, - tilt: 1, - shadow: { - left: 5, // shadow left offset - top: 15, // shadow top offset - alpha: 0.02 // shadow alpha - }, - offset: { - top: 0, - left: "auto" - }, - stroke: { - color: "#fff", - width: 1 - }, - label: { - show: "auto", - formatter: function(label, slice) { - return "<div style='font-size:x-small;text-align:center;padding:2px;color:" + slice.color + ";'>" + label + "<br/>" + Math.round(slice.percent) + "%</div>"; - }, // formatter function - radius: 1, // radius at which to place the labels (based on full calculated radius if <=1, or hard pixel value) - background: { - color: null, - opacity: 0 - }, - threshold: 0 // percentage at which to hide the label (i.e. the slice is too narrow) - }, - combine: { - threshold: -1, // percentage at which to combine little slices into one larger slice - color: null, // color to give the new slice (auto-generated if null) - label: "Other" // label to give the new slice - }, - highlight: { - //color: "#fff", // will add this functionality once parseColor is available - opacity: 0.5 - } - } - } - }; - - $.plot.plugins.push({ - init: init, - options: options, - name: "pie", - version: "1.1" - }); - -})(jQuery); diff --git a/assets/plugins/flot/jquery.flot.pie.min.js b/assets/plugins/flot/jquery.flot.pie.min.js deleted file mode 100644 index 88ffc9c9..00000000 --- a/assets/plugins/flot/jquery.flot.pie.min.js +++ /dev/null @@ -1 +0,0 @@ -(function($){var REDRAW_ATTEMPTS=10;var REDRAW_SHRINK=.95;function init(plot){var canvas=null,target=null,options=null,maxRadius=null,centerLeft=null,centerTop=null,processed=false,ctx=null;var highlights=[];plot.hooks.processOptions.push(function(plot,options){if(options.series.pie.show){options.grid.show=false;if(options.series.pie.label.show=="auto"){if(options.legend.show){options.series.pie.label.show=false}else{options.series.pie.label.show=true}}if(options.series.pie.radius=="auto"){if(options.series.pie.label.show){options.series.pie.radius=3/4}else{options.series.pie.radius=1}}if(options.series.pie.tilt>1){options.series.pie.tilt=1}else if(options.series.pie.tilt<0){options.series.pie.tilt=0}}});plot.hooks.bindEvents.push(function(plot,eventHolder){var options=plot.getOptions();if(options.series.pie.show){if(options.grid.hoverable){eventHolder.unbind("mousemove").mousemove(onMouseMove)}if(options.grid.clickable){eventHolder.unbind("click").click(onClick)}}});plot.hooks.processDatapoints.push(function(plot,series,data,datapoints){var options=plot.getOptions();if(options.series.pie.show){processDatapoints(plot,series,data,datapoints)}});plot.hooks.drawOverlay.push(function(plot,octx){var options=plot.getOptions();if(options.series.pie.show){drawOverlay(plot,octx)}});plot.hooks.draw.push(function(plot,newCtx){var options=plot.getOptions();if(options.series.pie.show){draw(plot,newCtx)}});function processDatapoints(plot,series,datapoints){if(!processed){processed=true;canvas=plot.getCanvas();target=$(canvas).parent();options=plot.getOptions();plot.setData(combine(plot.getData()))}}function combine(data){var total=0,combined=0,numCombined=0,color=options.series.pie.combine.color,newdata=[];for(var i=0;i<data.length;++i){var value=data[i].data;if($.isArray(value)&&value.length==1){value=value[0]}if($.isArray(value)){if(!isNaN(parseFloat(value[1]))&&isFinite(value[1])){value[1]=+value[1]}else{value[1]=0}}else if(!isNaN(parseFloat(value))&&isFinite(value)){value=[1,+value]}else{value=[1,0]}data[i].data=[value]}for(var i=0;i<data.length;++i){total+=data[i].data[0][1]}for(var i=0;i<data.length;++i){var value=data[i].data[0][1];if(value/total<=options.series.pie.combine.threshold){combined+=value;numCombined++;if(!color){color=data[i].color}}}for(var i=0;i<data.length;++i){var value=data[i].data[0][1];if(numCombined<2||value/total>options.series.pie.combine.threshold){newdata.push({data:[[1,value]],color:data[i].color,label:data[i].label,angle:value*Math.PI*2/total,percent:value/(total/100)})}}if(numCombined>1){newdata.push({data:[[1,combined]],color:color,label:options.series.pie.combine.label,angle:combined*Math.PI*2/total,percent:combined/(total/100)})}return newdata}function draw(plot,newCtx){if(!target){return}var canvasWidth=plot.getPlaceholder().width(),canvasHeight=plot.getPlaceholder().height(),legendWidth=target.children().filter(".legend").children().width()||0;ctx=newCtx;processed=false;maxRadius=Math.min(canvasWidth,canvasHeight/options.series.pie.tilt)/2;centerTop=canvasHeight/2+options.series.pie.offset.top;centerLeft=canvasWidth/2;if(options.series.pie.offset.left=="auto"){if(options.legend.position.match("w")){centerLeft+=legendWidth/2}else{centerLeft-=legendWidth/2}if(centerLeft<maxRadius){centerLeft=maxRadius}else if(centerLeft>canvasWidth-maxRadius){centerLeft=canvasWidth-maxRadius}}else{centerLeft+=options.series.pie.offset.left}var slices=plot.getData(),attempts=0;do{if(attempts>0){maxRadius*=REDRAW_SHRINK}attempts+=1;clear();if(options.series.pie.tilt<=.8){drawShadow()}}while(!drawPie()&&attempts<REDRAW_ATTEMPTS);if(attempts>=REDRAW_ATTEMPTS){clear();target.prepend("<div class='error'>Could not draw pie with labels contained inside canvas</div>")}if(plot.setSeries&&plot.insertLegend){plot.setSeries(slices);plot.insertLegend()}function clear(){ctx.clearRect(0,0,canvasWidth,canvasHeight);target.children().filter(".pieLabel, .pieLabelBackground").remove()}function drawShadow(){var shadowLeft=options.series.pie.shadow.left;var shadowTop=options.series.pie.shadow.top;var edge=10;var alpha=options.series.pie.shadow.alpha;var radius=options.series.pie.radius>1?options.series.pie.radius:maxRadius*options.series.pie.radius;if(radius>=canvasWidth/2-shadowLeft||radius*options.series.pie.tilt>=canvasHeight/2-shadowTop||radius<=edge){return}ctx.save();ctx.translate(shadowLeft,shadowTop);ctx.globalAlpha=alpha;ctx.fillStyle="#000";ctx.translate(centerLeft,centerTop);ctx.scale(1,options.series.pie.tilt);for(var i=1;i<=edge;i++){ctx.beginPath();ctx.arc(0,0,radius,0,Math.PI*2,false);ctx.fill();radius-=i}ctx.restore()}function drawPie(){var startAngle=Math.PI*options.series.pie.startAngle;var radius=options.series.pie.radius>1?options.series.pie.radius:maxRadius*options.series.pie.radius;ctx.save();ctx.translate(centerLeft,centerTop);ctx.scale(1,options.series.pie.tilt);ctx.save();var currentAngle=startAngle;for(var i=0;i<slices.length;++i){slices[i].startAngle=currentAngle;drawSlice(slices[i].angle,slices[i].color,true)}ctx.restore();if(options.series.pie.stroke.width>0){ctx.save();ctx.lineWidth=options.series.pie.stroke.width;currentAngle=startAngle;for(var i=0;i<slices.length;++i){drawSlice(slices[i].angle,options.series.pie.stroke.color,false)}ctx.restore()}drawDonutHole(ctx);ctx.restore();if(options.series.pie.label.show){return drawLabels()}else return true;function drawSlice(angle,color,fill){if(angle<=0||isNaN(angle)){return}if(fill){ctx.fillStyle=color}else{ctx.strokeStyle=color;ctx.lineJoin="round"}ctx.beginPath();if(Math.abs(angle-Math.PI*2)>1e-9){ctx.moveTo(0,0)}ctx.arc(0,0,radius,currentAngle,currentAngle+angle/2,false);ctx.arc(0,0,radius,currentAngle+angle/2,currentAngle+angle,false);ctx.closePath();currentAngle+=angle;if(fill){ctx.fill()}else{ctx.stroke()}}function drawLabels(){var currentAngle=startAngle;var radius=options.series.pie.label.radius>1?options.series.pie.label.radius:maxRadius*options.series.pie.label.radius;for(var i=0;i<slices.length;++i){if(slices[i].percent>=options.series.pie.label.threshold*100){if(!drawLabel(slices[i],currentAngle,i)){return false}}currentAngle+=slices[i].angle}return true;function drawLabel(slice,startAngle,index){if(slice.data[0][1]==0){return true}var lf=options.legend.labelFormatter,text,plf=options.series.pie.label.formatter;if(lf){text=lf(slice.label,slice)}else{text=slice.label}if(plf){text=plf(text,slice)}var halfAngle=(startAngle+slice.angle+startAngle)/2;var x=centerLeft+Math.round(Math.cos(halfAngle)*radius);var y=centerTop+Math.round(Math.sin(halfAngle)*radius)*options.series.pie.tilt;var html="<span class='pieLabel' id='pieLabel"+index+"' style='position:absolute;top:"+y+"px;left:"+x+"px;'>"+text+"</span>";target.append(html);var label=target.children("#pieLabel"+index);var labelTop=y-label.height()/2;var labelLeft=x-label.width()/2;label.css("top",labelTop);label.css("left",labelLeft);if(0-labelTop>0||0-labelLeft>0||canvasHeight-(labelTop+label.height())<0||canvasWidth-(labelLeft+label.width())<0){return false}if(options.series.pie.label.background.opacity!=0){var c=options.series.pie.label.background.color;if(c==null){c=slice.color}var pos="top:"+labelTop+"px;left:"+labelLeft+"px;";$("<div class='pieLabelBackground' style='position:absolute;width:"+label.width()+"px;height:"+label.height()+"px;"+pos+"background-color:"+c+";'></div>").css("opacity",options.series.pie.label.background.opacity).insertBefore(label)}return true}}}}function drawDonutHole(layer){if(options.series.pie.innerRadius>0){layer.save();var innerRadius=options.series.pie.innerRadius>1?options.series.pie.innerRadius:maxRadius*options.series.pie.innerRadius;layer.globalCompositeOperation="destination-out";layer.beginPath();layer.fillStyle=options.series.pie.stroke.color;layer.arc(0,0,innerRadius,0,Math.PI*2,false);layer.fill();layer.closePath();layer.restore();layer.save();layer.beginPath();layer.strokeStyle=options.series.pie.stroke.color;layer.arc(0,0,innerRadius,0,Math.PI*2,false);layer.stroke();layer.closePath();layer.restore()}}function isPointInPoly(poly,pt){for(var c=false,i=-1,l=poly.length,j=l-1;++i<l;j=i)(poly[i][1]<=pt[1]&&pt[1]<poly[j][1]||poly[j][1]<=pt[1]&&pt[1]<poly[i][1])&&pt[0]<(poly[j][0]-poly[i][0])*(pt[1]-poly[i][1])/(poly[j][1]-poly[i][1])+poly[i][0]&&(c=!c);return c}function findNearbySlice(mouseX,mouseY){var slices=plot.getData(),options=plot.getOptions(),radius=options.series.pie.radius>1?options.series.pie.radius:maxRadius*options.series.pie.radius,x,y;for(var i=0;i<slices.length;++i){var s=slices[i];if(s.pie.show){ctx.save();ctx.beginPath();ctx.moveTo(0,0);ctx.arc(0,0,radius,s.startAngle,s.startAngle+s.angle/2,false);ctx.arc(0,0,radius,s.startAngle+s.angle/2,s.startAngle+s.angle,false);ctx.closePath();x=mouseX-centerLeft;y=mouseY-centerTop;if(ctx.isPointInPath){if(ctx.isPointInPath(mouseX-centerLeft,mouseY-centerTop)){ctx.restore();return{datapoint:[s.percent,s.data],dataIndex:0,series:s,seriesIndex:i}}}else{var p1X=radius*Math.cos(s.startAngle),p1Y=radius*Math.sin(s.startAngle),p2X=radius*Math.cos(s.startAngle+s.angle/4),p2Y=radius*Math.sin(s.startAngle+s.angle/4),p3X=radius*Math.cos(s.startAngle+s.angle/2),p3Y=radius*Math.sin(s.startAngle+s.angle/2),p4X=radius*Math.cos(s.startAngle+s.angle/1.5),p4Y=radius*Math.sin(s.startAngle+s.angle/1.5),p5X=radius*Math.cos(s.startAngle+s.angle),p5Y=radius*Math.sin(s.startAngle+s.angle),arrPoly=[[0,0],[p1X,p1Y],[p2X,p2Y],[p3X,p3Y],[p4X,p4Y],[p5X,p5Y]],arrPoint=[x,y];if(isPointInPoly(arrPoly,arrPoint)){ctx.restore();return{datapoint:[s.percent,s.data],dataIndex:0,series:s,seriesIndex:i}}}ctx.restore()}}return null}function onMouseMove(e){triggerClickHoverEvent("plothover",e)}function onClick(e){triggerClickHoverEvent("plotclick",e)}function triggerClickHoverEvent(eventname,e){var offset=plot.offset();var canvasX=parseInt(e.pageX-offset.left);var canvasY=parseInt(e.pageY-offset.top);var item=findNearbySlice(canvasX,canvasY);if(options.grid.autoHighlight){for(var i=0;i<highlights.length;++i){var h=highlights[i];if(h.auto==eventname&&!(item&&h.series==item.series)){unhighlight(h.series)}}}if(item){highlight(item.series,eventname)}var pos={pageX:e.pageX,pageY:e.pageY};target.trigger(eventname,[pos,item])}function highlight(s,auto){var i=indexOfHighlight(s);if(i==-1){highlights.push({series:s,auto:auto});plot.triggerRedrawOverlay()}else if(!auto){highlights[i].auto=false}}function unhighlight(s){if(s==null){highlights=[];plot.triggerRedrawOverlay()}var i=indexOfHighlight(s);if(i!=-1){highlights.splice(i,1);plot.triggerRedrawOverlay()}}function indexOfHighlight(s){for(var i=0;i<highlights.length;++i){var h=highlights[i];if(h.series==s)return i}return-1}function drawOverlay(plot,octx){var options=plot.getOptions();var radius=options.series.pie.radius>1?options.series.pie.radius:maxRadius*options.series.pie.radius;octx.save();octx.translate(centerLeft,centerTop);octx.scale(1,options.series.pie.tilt);for(var i=0;i<highlights.length;++i){drawHighlight(highlights[i].series)}drawDonutHole(octx);octx.restore();function drawHighlight(series){if(series.angle<=0||isNaN(series.angle)){return}octx.fillStyle="rgba(255, 255, 255, "+options.series.pie.highlight.opacity+")";octx.beginPath();if(Math.abs(series.angle-Math.PI*2)>1e-9){octx.moveTo(0,0)}octx.arc(0,0,radius,series.startAngle,series.startAngle+series.angle/2,false);octx.arc(0,0,radius,series.startAngle+series.angle/2,series.startAngle+series.angle,false);octx.closePath();octx.fill()}}}var options={series:{pie:{show:false,radius:"auto",innerRadius:0,startAngle:3/2,tilt:1,shadow:{left:5,top:15,alpha:.02},offset:{top:0,left:"auto"},stroke:{color:"#fff",width:1},label:{show:"auto",formatter:function(label,slice){return"<div style='font-size:x-small;text-align:center;padding:2px;color:"+slice.color+";'>"+label+"<br/>"+Math.round(slice.percent)+"%</div>"},radius:1,background:{color:null,opacity:0},threshold:0},combine:{threshold:-1,color:null,label:"Other"},highlight:{opacity:.5}}}};$.plot.plugins.push({init:init,options:options,name:"pie",version:"1.1"})})(jQuery); \ No newline at end of file diff --git a/assets/plugins/flot/jquery.flot.resize.js b/assets/plugins/flot/jquery.flot.resize.js deleted file mode 100644 index 44e04f8f..00000000 --- a/assets/plugins/flot/jquery.flot.resize.js +++ /dev/null @@ -1,60 +0,0 @@ -/* Flot plugin for automatically redrawing plots as the placeholder resizes. - -Copyright (c) 2007-2013 IOLA and Ole Laursen. -Licensed under the MIT license. - -It works by listening for changes on the placeholder div (through the jQuery -resize event plugin) - if the size changes, it will redraw the plot. - -There are no options. If you need to disable the plugin for some plots, you -can just fix the size of their placeholders. - -*/ - -/* Inline dependency: - * jQuery resize event - v1.1 - 3/14/2010 - * http://benalman.com/projects/jquery-resize-plugin/ - * - * Copyright (c) 2010 "Cowboy" Ben Alman - * Dual licensed under the MIT and GPL licenses. - * http://benalman.com/about/license/ - */ - -(function($,t,n){function p(){for(var n=r.length-1;n>=0;n--){var o=$(r[n]);if(o[0]==t||o.is(":visible")){var h=o.width(),d=o.height(),v=o.data(a);!v||h===v.w&&d===v.h?i[f]=i[l]:(i[f]=i[c],o.trigger(u,[v.w=h,v.h=d]))}else v=o.data(a),v.w=0,v.h=0}s!==null&&(s=t.requestAnimationFrame(p))}var r=[],i=$.resize=$.extend($.resize,{}),s,o="setTimeout",u="resize",a=u+"-special-event",f="delay",l="pendingDelay",c="activeDelay",h="throttleWindow";i[l]=250,i[c]=20,i[f]=i[l],i[h]=!0,$.event.special[u]={setup:function(){if(!i[h]&&this[o])return!1;var t=$(this);r.push(this),t.data(a,{w:t.width(),h:t.height()}),r.length===1&&(s=n,p())},teardown:function(){if(!i[h]&&this[o])return!1;var t=$(this);for(var n=r.length-1;n>=0;n--)if(r[n]==this){r.splice(n,1);break}t.removeData(a),r.length||(cancelAnimationFrame(s),s=null)},add:function(t){function s(t,i,s){var o=$(this),u=o.data(a);u.w=i!==n?i:o.width(),u.h=s!==n?s:o.height(),r.apply(this,arguments)}if(!i[h]&&this[o])return!1;var r;if($.isFunction(t))return r=t,s;r=t.handler,t.handler=s}},t.requestAnimationFrame||(t.requestAnimationFrame=function(){return t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||t.msRequestAnimationFrame||function(e,n){return t.setTimeout(e,i[f])}}()),t.cancelAnimationFrame||(t.cancelAnimationFrame=function(){return t.webkitCancelRequestAnimationFrame||t.mozCancelRequestAnimationFrame||t.oCancelRequestAnimationFrame||t.msCancelRequestAnimationFrame||clearTimeout}())})(jQuery,this); - -(function ($) { - var options = { }; // no options - - function init(plot) { - function onResize() { - var placeholder = plot.getPlaceholder(); - - // somebody might have hidden us and we can't plot - // when we don't have the dimensions - if (placeholder.width() == 0 || placeholder.height() == 0) - return; - - plot.resize(); - plot.setupGrid(); - plot.draw(); - } - - function bindEvents(plot, eventHolder) { - plot.getPlaceholder().resize(onResize); - } - - function shutdown(plot, eventHolder) { - plot.getPlaceholder().unbind("resize", onResize); - } - - plot.hooks.bindEvents.push(bindEvents); - plot.hooks.shutdown.push(shutdown); - } - - $.plot.plugins.push({ - init: init, - options: options, - name: 'resize', - version: '1.0' - }); -})(jQuery); diff --git a/assets/plugins/flot/jquery.flot.resize.min.js b/assets/plugins/flot/jquery.flot.resize.min.js deleted file mode 100644 index 29838425..00000000 --- a/assets/plugins/flot/jquery.flot.resize.min.js +++ /dev/null @@ -1 +0,0 @@ -(function($,t,n){function p(){for(var n=r.length-1;n>=0;n--){var o=$(r[n]);if(o[0]==t||o.is(":visible")){var h=o.width(),d=o.height(),v=o.data(a);!v||h===v.w&&d===v.h?i[f]=i[l]:(i[f]=i[c],o.trigger(u,[v.w=h,v.h=d]))}else v=o.data(a),v.w=0,v.h=0}s!==null&&(s=t.requestAnimationFrame(p))}var r=[],i=$.resize=$.extend($.resize,{}),s,o="setTimeout",u="resize",a=u+"-special-event",f="delay",l="pendingDelay",c="activeDelay",h="throttleWindow";i[l]=250,i[c]=20,i[f]=i[l],i[h]=!0,$.event.special[u]={setup:function(){if(!i[h]&&this[o])return!1;var t=$(this);r.push(this),t.data(a,{w:t.width(),h:t.height()}),r.length===1&&(s=n,p())},teardown:function(){if(!i[h]&&this[o])return!1;var t=$(this);for(var n=r.length-1;n>=0;n--)if(r[n]==this){r.splice(n,1);break}t.removeData(a),r.length||(cancelAnimationFrame(s),s=null)},add:function(t){function s(t,i,s){var o=$(this),u=o.data(a);u.w=i!==n?i:o.width(),u.h=s!==n?s:o.height(),r.apply(this,arguments)}if(!i[h]&&this[o])return!1;var r;if($.isFunction(t))return r=t,s;r=t.handler,t.handler=s}},t.requestAnimationFrame||(t.requestAnimationFrame=function(){return t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||t.msRequestAnimationFrame||function(e,n){return t.setTimeout(e,i[f])}}()),t.cancelAnimationFrame||(t.cancelAnimationFrame=function(){return t.webkitCancelRequestAnimationFrame||t.mozCancelRequestAnimationFrame||t.oCancelRequestAnimationFrame||t.msCancelRequestAnimationFrame||clearTimeout}())})(jQuery,this);(function($){var options={};function init(plot){function onResize(){var placeholder=plot.getPlaceholder();if(placeholder.width()==0||placeholder.height()==0)return;plot.resize();plot.setupGrid();plot.draw()}function bindEvents(plot,eventHolder){plot.getPlaceholder().resize(onResize)}function shutdown(plot,eventHolder){plot.getPlaceholder().unbind("resize",onResize)}plot.hooks.bindEvents.push(bindEvents);plot.hooks.shutdown.push(shutdown)}$.plot.plugins.push({init:init,options:options,name:"resize",version:"1.0"})})(jQuery); \ No newline at end of file diff --git a/assets/plugins/flot/jquery.flot.selection.js b/assets/plugins/flot/jquery.flot.selection.js deleted file mode 100644 index f8fa668f..00000000 --- a/assets/plugins/flot/jquery.flot.selection.js +++ /dev/null @@ -1,360 +0,0 @@ -/* Flot plugin for selecting regions of a plot. - -Copyright (c) 2007-2013 IOLA and Ole Laursen. -Licensed under the MIT license. - -The plugin supports these options: - -selection: { - mode: null or "x" or "y" or "xy", - color: color, - shape: "round" or "miter" or "bevel", - minSize: number of pixels -} - -Selection support is enabled by setting the mode to one of "x", "y" or "xy". -In "x" mode, the user will only be able to specify the x range, similarly for -"y" mode. For "xy", the selection becomes a rectangle where both ranges can be -specified. "color" is color of the selection (if you need to change the color -later on, you can get to it with plot.getOptions().selection.color). "shape" -is the shape of the corners of the selection. - -"minSize" is the minimum size a selection can be in pixels. This value can -be customized to determine the smallest size a selection can be and still -have the selection rectangle be displayed. When customizing this value, the -fact that it refers to pixels, not axis units must be taken into account. -Thus, for example, if there is a bar graph in time mode with BarWidth set to 1 -minute, setting "minSize" to 1 will not make the minimum selection size 1 -minute, but rather 1 pixel. Note also that setting "minSize" to 0 will prevent -"plotunselected" events from being fired when the user clicks the mouse without -dragging. - -When selection support is enabled, a "plotselected" event will be emitted on -the DOM element you passed into the plot function. The event handler gets a -parameter with the ranges selected on the axes, like this: - - placeholder.bind( "plotselected", function( event, ranges ) { - alert("You selected " + ranges.xaxis.from + " to " + ranges.xaxis.to) - // similar for yaxis - with multiple axes, the extra ones are in - // x2axis, x3axis, ... - }); - -The "plotselected" event is only fired when the user has finished making the -selection. A "plotselecting" event is fired during the process with the same -parameters as the "plotselected" event, in case you want to know what's -happening while it's happening, - -A "plotunselected" event with no arguments is emitted when the user clicks the -mouse to remove the selection. As stated above, setting "minSize" to 0 will -destroy this behavior. - -The plugin allso adds the following methods to the plot object: - -- setSelection( ranges, preventEvent ) - - Set the selection rectangle. The passed in ranges is on the same form as - returned in the "plotselected" event. If the selection mode is "x", you - should put in either an xaxis range, if the mode is "y" you need to put in - an yaxis range and both xaxis and yaxis if the selection mode is "xy", like - this: - - setSelection({ xaxis: { from: 0, to: 10 }, yaxis: { from: 40, to: 60 } }); - - setSelection will trigger the "plotselected" event when called. If you don't - want that to happen, e.g. if you're inside a "plotselected" handler, pass - true as the second parameter. If you are using multiple axes, you can - specify the ranges on any of those, e.g. as x2axis/x3axis/... instead of - xaxis, the plugin picks the first one it sees. - -- clearSelection( preventEvent ) - - Clear the selection rectangle. Pass in true to avoid getting a - "plotunselected" event. - -- getSelection() - - Returns the current selection in the same format as the "plotselected" - event. If there's currently no selection, the function returns null. - -*/ - -(function ($) { - function init(plot) { - var selection = { - first: { x: -1, y: -1}, second: { x: -1, y: -1}, - show: false, - active: false - }; - - // FIXME: The drag handling implemented here should be - // abstracted out, there's some similar code from a library in - // the navigation plugin, this should be massaged a bit to fit - // the Flot cases here better and reused. Doing this would - // make this plugin much slimmer. - var savedhandlers = {}; - - var mouseUpHandler = null; - - function onMouseMove(e) { - if (selection.active) { - updateSelection(e); - - plot.getPlaceholder().trigger("plotselecting", [ getSelection() ]); - } - } - - function onMouseDown(e) { - if (e.which != 1) // only accept left-click - return; - - // cancel out any text selections - document.body.focus(); - - // prevent text selection and drag in old-school browsers - if (document.onselectstart !== undefined && savedhandlers.onselectstart == null) { - savedhandlers.onselectstart = document.onselectstart; - document.onselectstart = function () { return false; }; - } - if (document.ondrag !== undefined && savedhandlers.ondrag == null) { - savedhandlers.ondrag = document.ondrag; - document.ondrag = function () { return false; }; - } - - setSelectionPos(selection.first, e); - - selection.active = true; - - // this is a bit silly, but we have to use a closure to be - // able to whack the same handler again - mouseUpHandler = function (e) { onMouseUp(e); }; - - $(document).one("mouseup", mouseUpHandler); - } - - function onMouseUp(e) { - mouseUpHandler = null; - - // revert drag stuff for old-school browsers - if (document.onselectstart !== undefined) - document.onselectstart = savedhandlers.onselectstart; - if (document.ondrag !== undefined) - document.ondrag = savedhandlers.ondrag; - - // no more dragging - selection.active = false; - updateSelection(e); - - if (selectionIsSane()) - triggerSelectedEvent(); - else { - // this counts as a clear - plot.getPlaceholder().trigger("plotunselected", [ ]); - plot.getPlaceholder().trigger("plotselecting", [ null ]); - } - - return false; - } - - function getSelection() { - if (!selectionIsSane()) - return null; - - if (!selection.show) return null; - - var r = {}, c1 = selection.first, c2 = selection.second; - $.each(plot.getAxes(), function (name, axis) { - if (axis.used) { - var p1 = axis.c2p(c1[axis.direction]), p2 = axis.c2p(c2[axis.direction]); - r[name] = { from: Math.min(p1, p2), to: Math.max(p1, p2) }; - } - }); - return r; - } - - function triggerSelectedEvent() { - var r = getSelection(); - - plot.getPlaceholder().trigger("plotselected", [ r ]); - - // backwards-compat stuff, to be removed in future - if (r.xaxis && r.yaxis) - plot.getPlaceholder().trigger("selected", [ { x1: r.xaxis.from, y1: r.yaxis.from, x2: r.xaxis.to, y2: r.yaxis.to } ]); - } - - function clamp(min, value, max) { - return value < min ? min: (value > max ? max: value); - } - - function setSelectionPos(pos, e) { - var o = plot.getOptions(); - var offset = plot.getPlaceholder().offset(); - var plotOffset = plot.getPlotOffset(); - pos.x = clamp(0, e.pageX - offset.left - plotOffset.left, plot.width()); - pos.y = clamp(0, e.pageY - offset.top - plotOffset.top, plot.height()); - - if (o.selection.mode == "y") - pos.x = pos == selection.first ? 0 : plot.width(); - - if (o.selection.mode == "x") - pos.y = pos == selection.first ? 0 : plot.height(); - } - - function updateSelection(pos) { - if (pos.pageX == null) - return; - - setSelectionPos(selection.second, pos); - if (selectionIsSane()) { - selection.show = true; - plot.triggerRedrawOverlay(); - } - else - clearSelection(true); - } - - function clearSelection(preventEvent) { - if (selection.show) { - selection.show = false; - plot.triggerRedrawOverlay(); - if (!preventEvent) - plot.getPlaceholder().trigger("plotunselected", [ ]); - } - } - - // function taken from markings support in Flot - function extractRange(ranges, coord) { - var axis, from, to, key, axes = plot.getAxes(); - - for (var k in axes) { - axis = axes[k]; - if (axis.direction == coord) { - key = coord + axis.n + "axis"; - if (!ranges[key] && axis.n == 1) - key = coord + "axis"; // support x1axis as xaxis - if (ranges[key]) { - from = ranges[key].from; - to = ranges[key].to; - break; - } - } - } - - // backwards-compat stuff - to be removed in future - if (!ranges[key]) { - axis = coord == "x" ? plot.getXAxes()[0] : plot.getYAxes()[0]; - from = ranges[coord + "1"]; - to = ranges[coord + "2"]; - } - - // auto-reverse as an added bonus - if (from != null && to != null && from > to) { - var tmp = from; - from = to; - to = tmp; - } - - return { from: from, to: to, axis: axis }; - } - - function setSelection(ranges, preventEvent) { - var axis, range, o = plot.getOptions(); - - if (o.selection.mode == "y") { - selection.first.x = 0; - selection.second.x = plot.width(); - } - else { - range = extractRange(ranges, "x"); - - selection.first.x = range.axis.p2c(range.from); - selection.second.x = range.axis.p2c(range.to); - } - - if (o.selection.mode == "x") { - selection.first.y = 0; - selection.second.y = plot.height(); - } - else { - range = extractRange(ranges, "y"); - - selection.first.y = range.axis.p2c(range.from); - selection.second.y = range.axis.p2c(range.to); - } - - selection.show = true; - plot.triggerRedrawOverlay(); - if (!preventEvent && selectionIsSane()) - triggerSelectedEvent(); - } - - function selectionIsSane() { - var minSize = plot.getOptions().selection.minSize; - return Math.abs(selection.second.x - selection.first.x) >= minSize && - Math.abs(selection.second.y - selection.first.y) >= minSize; - } - - plot.clearSelection = clearSelection; - plot.setSelection = setSelection; - plot.getSelection = getSelection; - - plot.hooks.bindEvents.push(function(plot, eventHolder) { - var o = plot.getOptions(); - if (o.selection.mode != null) { - eventHolder.mousemove(onMouseMove); - eventHolder.mousedown(onMouseDown); - } - }); - - - plot.hooks.drawOverlay.push(function (plot, ctx) { - // draw selection - if (selection.show && selectionIsSane()) { - var plotOffset = plot.getPlotOffset(); - var o = plot.getOptions(); - - ctx.save(); - ctx.translate(plotOffset.left, plotOffset.top); - - var c = $.color.parse(o.selection.color); - - ctx.strokeStyle = c.scale('a', 0.8).toString(); - ctx.lineWidth = 1; - ctx.lineJoin = o.selection.shape; - ctx.fillStyle = c.scale('a', 0.4).toString(); - - var x = Math.min(selection.first.x, selection.second.x) + 0.5, - y = Math.min(selection.first.y, selection.second.y) + 0.5, - w = Math.abs(selection.second.x - selection.first.x) - 1, - h = Math.abs(selection.second.y - selection.first.y) - 1; - - ctx.fillRect(x, y, w, h); - ctx.strokeRect(x, y, w, h); - - ctx.restore(); - } - }); - - plot.hooks.shutdown.push(function (plot, eventHolder) { - eventHolder.unbind("mousemove", onMouseMove); - eventHolder.unbind("mousedown", onMouseDown); - - if (mouseUpHandler) - $(document).unbind("mouseup", mouseUpHandler); - }); - - } - - $.plot.plugins.push({ - init: init, - options: { - selection: { - mode: null, // one of null, "x", "y" or "xy" - color: "#e8cfac", - shape: "round", // one of "round", "miter", or "bevel" - minSize: 5 // minimum number of pixels - } - }, - name: 'selection', - version: '1.1' - }); -})(jQuery); diff --git a/assets/plugins/flot/jquery.flot.selection.min.js b/assets/plugins/flot/jquery.flot.selection.min.js deleted file mode 100644 index 6e319781..00000000 --- a/assets/plugins/flot/jquery.flot.selection.min.js +++ /dev/null @@ -1 +0,0 @@ -(function($){function init(plot){var selection={first:{x:-1,y:-1},second:{x:-1,y:-1},show:false,active:false};var savedhandlers={};var mouseUpHandler=null;function onMouseMove(e){if(selection.active){updateSelection(e);plot.getPlaceholder().trigger("plotselecting",[getSelection()])}}function onMouseDown(e){if(e.which!=1)return;document.body.focus();if(document.onselectstart!==undefined&&savedhandlers.onselectstart==null){savedhandlers.onselectstart=document.onselectstart;document.onselectstart=function(){return false}}if(document.ondrag!==undefined&&savedhandlers.ondrag==null){savedhandlers.ondrag=document.ondrag;document.ondrag=function(){return false}}setSelectionPos(selection.first,e);selection.active=true;mouseUpHandler=function(e){onMouseUp(e)};$(document).one("mouseup",mouseUpHandler)}function onMouseUp(e){mouseUpHandler=null;if(document.onselectstart!==undefined)document.onselectstart=savedhandlers.onselectstart;if(document.ondrag!==undefined)document.ondrag=savedhandlers.ondrag;selection.active=false;updateSelection(e);if(selectionIsSane())triggerSelectedEvent();else{plot.getPlaceholder().trigger("plotunselected",[]);plot.getPlaceholder().trigger("plotselecting",[null])}return false}function getSelection(){if(!selectionIsSane())return null;if(!selection.show)return null;var r={},c1=selection.first,c2=selection.second;$.each(plot.getAxes(),function(name,axis){if(axis.used){var p1=axis.c2p(c1[axis.direction]),p2=axis.c2p(c2[axis.direction]);r[name]={from:Math.min(p1,p2),to:Math.max(p1,p2)}}});return r}function triggerSelectedEvent(){var r=getSelection();plot.getPlaceholder().trigger("plotselected",[r]);if(r.xaxis&&r.yaxis)plot.getPlaceholder().trigger("selected",[{x1:r.xaxis.from,y1:r.yaxis.from,x2:r.xaxis.to,y2:r.yaxis.to}])}function clamp(min,value,max){return value<min?min:value>max?max:value}function setSelectionPos(pos,e){var o=plot.getOptions();var offset=plot.getPlaceholder().offset();var plotOffset=plot.getPlotOffset();pos.x=clamp(0,e.pageX-offset.left-plotOffset.left,plot.width());pos.y=clamp(0,e.pageY-offset.top-plotOffset.top,plot.height());if(o.selection.mode=="y")pos.x=pos==selection.first?0:plot.width();if(o.selection.mode=="x")pos.y=pos==selection.first?0:plot.height()}function updateSelection(pos){if(pos.pageX==null)return;setSelectionPos(selection.second,pos);if(selectionIsSane()){selection.show=true;plot.triggerRedrawOverlay()}else clearSelection(true)}function clearSelection(preventEvent){if(selection.show){selection.show=false;plot.triggerRedrawOverlay();if(!preventEvent)plot.getPlaceholder().trigger("plotunselected",[])}}function extractRange(ranges,coord){var axis,from,to,key,axes=plot.getAxes();for(var k in axes){axis=axes[k];if(axis.direction==coord){key=coord+axis.n+"axis";if(!ranges[key]&&axis.n==1)key=coord+"axis";if(ranges[key]){from=ranges[key].from;to=ranges[key].to;break}}}if(!ranges[key]){axis=coord=="x"?plot.getXAxes()[0]:plot.getYAxes()[0];from=ranges[coord+"1"];to=ranges[coord+"2"]}if(from!=null&&to!=null&&from>to){var tmp=from;from=to;to=tmp}return{from:from,to:to,axis:axis}}function setSelection(ranges,preventEvent){var axis,range,o=plot.getOptions();if(o.selection.mode=="y"){selection.first.x=0;selection.second.x=plot.width()}else{range=extractRange(ranges,"x");selection.first.x=range.axis.p2c(range.from);selection.second.x=range.axis.p2c(range.to)}if(o.selection.mode=="x"){selection.first.y=0;selection.second.y=plot.height()}else{range=extractRange(ranges,"y");selection.first.y=range.axis.p2c(range.from);selection.second.y=range.axis.p2c(range.to)}selection.show=true;plot.triggerRedrawOverlay();if(!preventEvent&&selectionIsSane())triggerSelectedEvent()}function selectionIsSane(){var minSize=plot.getOptions().selection.minSize;return Math.abs(selection.second.x-selection.first.x)>=minSize&&Math.abs(selection.second.y-selection.first.y)>=minSize}plot.clearSelection=clearSelection;plot.setSelection=setSelection;plot.getSelection=getSelection;plot.hooks.bindEvents.push(function(plot,eventHolder){var o=plot.getOptions();if(o.selection.mode!=null){eventHolder.mousemove(onMouseMove);eventHolder.mousedown(onMouseDown)}});plot.hooks.drawOverlay.push(function(plot,ctx){if(selection.show&&selectionIsSane()){var plotOffset=plot.getPlotOffset();var o=plot.getOptions();ctx.save();ctx.translate(plotOffset.left,plotOffset.top);var c=$.color.parse(o.selection.color);ctx.strokeStyle=c.scale("a",.8).toString();ctx.lineWidth=1;ctx.lineJoin=o.selection.shape;ctx.fillStyle=c.scale("a",.4).toString();var x=Math.min(selection.first.x,selection.second.x)+.5,y=Math.min(selection.first.y,selection.second.y)+.5,w=Math.abs(selection.second.x-selection.first.x)-1,h=Math.abs(selection.second.y-selection.first.y)-1;ctx.fillRect(x,y,w,h);ctx.strokeRect(x,y,w,h);ctx.restore()}});plot.hooks.shutdown.push(function(plot,eventHolder){eventHolder.unbind("mousemove",onMouseMove);eventHolder.unbind("mousedown",onMouseDown);if(mouseUpHandler)$(document).unbind("mouseup",mouseUpHandler)})}$.plot.plugins.push({init:init,options:{selection:{mode:null,color:"#e8cfac",shape:"round",minSize:5}},name:"selection",version:"1.1"})})(jQuery); \ No newline at end of file diff --git a/assets/plugins/flot/jquery.flot.stack.js b/assets/plugins/flot/jquery.flot.stack.js deleted file mode 100644 index c01de67d..00000000 --- a/assets/plugins/flot/jquery.flot.stack.js +++ /dev/null @@ -1,188 +0,0 @@ -/* Flot plugin for stacking data sets rather than overlyaing them. - -Copyright (c) 2007-2013 IOLA and Ole Laursen. -Licensed under the MIT license. - -The plugin assumes the data is sorted on x (or y if stacking horizontally). -For line charts, it is assumed that if a line has an undefined gap (from a -null point), then the line above it should have the same gap - insert zeros -instead of "null" if you want another behaviour. This also holds for the start -and end of the chart. Note that stacking a mix of positive and negative values -in most instances doesn't make sense (so it looks weird). - -Two or more series are stacked when their "stack" attribute is set to the same -key (which can be any number or string or just "true"). To specify the default -stack, you can set the stack option like this: - - series: { - stack: null/false, true, or a key (number/string) - } - -You can also specify it for a single series, like this: - - $.plot( $("#placeholder"), [{ - data: [ ... ], - stack: true - }]) - -The stacking order is determined by the order of the data series in the array -(later series end up on top of the previous). - -Internally, the plugin modifies the datapoints in each series, adding an -offset to the y value. For line series, extra data points are inserted through -interpolation. If there's a second y value, it's also adjusted (e.g for bar -charts or filled areas). - -*/ - -(function ($) { - var options = { - series: { stack: null } // or number/string - }; - - function init(plot) { - function findMatchingSeries(s, allseries) { - var res = null; - for (var i = 0; i < allseries.length; ++i) { - if (s == allseries[i]) - break; - - if (allseries[i].stack == s.stack) - res = allseries[i]; - } - - return res; - } - - function stackData(plot, s, datapoints) { - if (s.stack == null || s.stack === false) - return; - - var other = findMatchingSeries(s, plot.getData()); - if (!other) - return; - - var ps = datapoints.pointsize, - points = datapoints.points, - otherps = other.datapoints.pointsize, - otherpoints = other.datapoints.points, - newpoints = [], - px, py, intery, qx, qy, bottom, - withlines = s.lines.show, - horizontal = s.bars.horizontal, - withbottom = ps > 2 && (horizontal ? datapoints.format[2].x : datapoints.format[2].y), - withsteps = withlines && s.lines.steps, - fromgap = true, - keyOffset = horizontal ? 1 : 0, - accumulateOffset = horizontal ? 0 : 1, - i = 0, j = 0, l, m; - - while (true) { - if (i >= points.length) - break; - - l = newpoints.length; - - if (points[i] == null) { - // copy gaps - for (m = 0; m < ps; ++m) - newpoints.push(points[i + m]); - i += ps; - } - else if (j >= otherpoints.length) { - // for lines, we can't use the rest of the points - if (!withlines) { - for (m = 0; m < ps; ++m) - newpoints.push(points[i + m]); - } - i += ps; - } - else if (otherpoints[j] == null) { - // oops, got a gap - for (m = 0; m < ps; ++m) - newpoints.push(null); - fromgap = true; - j += otherps; - } - else { - // cases where we actually got two points - px = points[i + keyOffset]; - py = points[i + accumulateOffset]; - qx = otherpoints[j + keyOffset]; - qy = otherpoints[j + accumulateOffset]; - bottom = 0; - - if (px == qx) { - for (m = 0; m < ps; ++m) - newpoints.push(points[i + m]); - - newpoints[l + accumulateOffset] += qy; - bottom = qy; - - i += ps; - j += otherps; - } - else if (px > qx) { - // we got past point below, might need to - // insert interpolated extra point - if (withlines && i > 0 && points[i - ps] != null) { - intery = py + (points[i - ps + accumulateOffset] - py) * (qx - px) / (points[i - ps + keyOffset] - px); - newpoints.push(qx); - newpoints.push(intery + qy); - for (m = 2; m < ps; ++m) - newpoints.push(points[i + m]); - bottom = qy; - } - - j += otherps; - } - else { // px < qx - if (fromgap && withlines) { - // if we come from a gap, we just skip this point - i += ps; - continue; - } - - for (m = 0; m < ps; ++m) - newpoints.push(points[i + m]); - - // we might be able to interpolate a point below, - // this can give us a better y - if (withlines && j > 0 && otherpoints[j - otherps] != null) - bottom = qy + (otherpoints[j - otherps + accumulateOffset] - qy) * (px - qx) / (otherpoints[j - otherps + keyOffset] - qx); - - newpoints[l + accumulateOffset] += bottom; - - i += ps; - } - - fromgap = false; - - if (l != newpoints.length && withbottom) - newpoints[l + 2] += bottom; - } - - // maintain the line steps invariant - if (withsteps && l != newpoints.length && l > 0 - && newpoints[l] != null - && newpoints[l] != newpoints[l - ps] - && newpoints[l + 1] != newpoints[l - ps + 1]) { - for (m = 0; m < ps; ++m) - newpoints[l + ps + m] = newpoints[l + m]; - newpoints[l + 1] = newpoints[l - ps + 1]; - } - } - - datapoints.points = newpoints; - } - - plot.hooks.processDatapoints.push(stackData); - } - - $.plot.plugins.push({ - init: init, - options: options, - name: 'stack', - version: '1.2' - }); -})(jQuery); diff --git a/assets/plugins/flot/jquery.flot.stack.min.js b/assets/plugins/flot/jquery.flot.stack.min.js deleted file mode 100644 index 57785ebd..00000000 --- a/assets/plugins/flot/jquery.flot.stack.min.js +++ /dev/null @@ -1 +0,0 @@ -(function($){var options={series:{stack:null}};function init(plot){function findMatchingSeries(s,allseries){var res=null;for(var i=0;i<allseries.length;++i){if(s==allseries[i])break;if(allseries[i].stack==s.stack)res=allseries[i]}return res}function stackData(plot,s,datapoints){if(s.stack==null||s.stack===false)return;var other=findMatchingSeries(s,plot.getData());if(!other)return;var ps=datapoints.pointsize,points=datapoints.points,otherps=other.datapoints.pointsize,otherpoints=other.datapoints.points,newpoints=[],px,py,intery,qx,qy,bottom,withlines=s.lines.show,horizontal=s.bars.horizontal,withbottom=ps>2&&(horizontal?datapoints.format[2].x:datapoints.format[2].y),withsteps=withlines&&s.lines.steps,fromgap=true,keyOffset=horizontal?1:0,accumulateOffset=horizontal?0:1,i=0,j=0,l,m;while(true){if(i>=points.length)break;l=newpoints.length;if(points[i]==null){for(m=0;m<ps;++m)newpoints.push(points[i+m]);i+=ps}else if(j>=otherpoints.length){if(!withlines){for(m=0;m<ps;++m)newpoints.push(points[i+m])}i+=ps}else if(otherpoints[j]==null){for(m=0;m<ps;++m)newpoints.push(null);fromgap=true;j+=otherps}else{px=points[i+keyOffset];py=points[i+accumulateOffset];qx=otherpoints[j+keyOffset];qy=otherpoints[j+accumulateOffset];bottom=0;if(px==qx){for(m=0;m<ps;++m)newpoints.push(points[i+m]);newpoints[l+accumulateOffset]+=qy;bottom=qy;i+=ps;j+=otherps}else if(px>qx){if(withlines&&i>0&&points[i-ps]!=null){intery=py+(points[i-ps+accumulateOffset]-py)*(qx-px)/(points[i-ps+keyOffset]-px);newpoints.push(qx);newpoints.push(intery+qy);for(m=2;m<ps;++m)newpoints.push(points[i+m]);bottom=qy}j+=otherps}else{if(fromgap&&withlines){i+=ps;continue}for(m=0;m<ps;++m)newpoints.push(points[i+m]);if(withlines&&j>0&&otherpoints[j-otherps]!=null)bottom=qy+(otherpoints[j-otherps+accumulateOffset]-qy)*(px-qx)/(otherpoints[j-otherps+keyOffset]-qx);newpoints[l+accumulateOffset]+=bottom;i+=ps}fromgap=false;if(l!=newpoints.length&&withbottom)newpoints[l+2]+=bottom}if(withsteps&&l!=newpoints.length&&l>0&&newpoints[l]!=null&&newpoints[l]!=newpoints[l-ps]&&newpoints[l+1]!=newpoints[l-ps+1]){for(m=0;m<ps;++m)newpoints[l+ps+m]=newpoints[l+m];newpoints[l+1]=newpoints[l-ps+1]}}datapoints.points=newpoints}plot.hooks.processDatapoints.push(stackData)}$.plot.plugins.push({init:init,options:options,name:"stack",version:"1.2"})})(jQuery); \ No newline at end of file diff --git a/assets/plugins/flot/jquery.flot.symbol.js b/assets/plugins/flot/jquery.flot.symbol.js deleted file mode 100644 index cc181fff..00000000 --- a/assets/plugins/flot/jquery.flot.symbol.js +++ /dev/null @@ -1,71 +0,0 @@ -/* Flot plugin that adds some extra symbols for plotting points. - -Copyright (c) 2007-2013 IOLA and Ole Laursen. -Licensed under the MIT license. - -The symbols are accessed as strings through the standard symbol options: - - series: { - points: { - symbol: "square" // or "diamond", "triangle", "cross" - } - } - -*/ - -(function ($) { - function processRawData(plot, series, datapoints) { - // we normalize the area of each symbol so it is approximately the - // same as a circle of the given radius - - var handlers = { - square: function (ctx, x, y, radius, shadow) { - // pi * r^2 = (2s)^2 => s = r * sqrt(pi)/2 - var size = radius * Math.sqrt(Math.PI) / 2; - ctx.rect(x - size, y - size, size + size, size + size); - }, - diamond: function (ctx, x, y, radius, shadow) { - // pi * r^2 = 2s^2 => s = r * sqrt(pi/2) - var size = radius * Math.sqrt(Math.PI / 2); - ctx.moveTo(x - size, y); - ctx.lineTo(x, y - size); - ctx.lineTo(x + size, y); - ctx.lineTo(x, y + size); - ctx.lineTo(x - size, y); - }, - triangle: function (ctx, x, y, radius, shadow) { - // pi * r^2 = 1/2 * s^2 * sin (pi / 3) => s = r * sqrt(2 * pi / sin(pi / 3)) - var size = radius * Math.sqrt(2 * Math.PI / Math.sin(Math.PI / 3)); - var height = size * Math.sin(Math.PI / 3); - ctx.moveTo(x - size/2, y + height/2); - ctx.lineTo(x + size/2, y + height/2); - if (!shadow) { - ctx.lineTo(x, y - height/2); - ctx.lineTo(x - size/2, y + height/2); - } - }, - cross: function (ctx, x, y, radius, shadow) { - // pi * r^2 = (2s)^2 => s = r * sqrt(pi)/2 - var size = radius * Math.sqrt(Math.PI) / 2; - ctx.moveTo(x - size, y - size); - ctx.lineTo(x + size, y + size); - ctx.moveTo(x - size, y + size); - ctx.lineTo(x + size, y - size); - } - }; - - var s = series.points.symbol; - if (handlers[s]) - series.points.symbol = handlers[s]; - } - - function init(plot) { - plot.hooks.processDatapoints.push(processRawData); - } - - $.plot.plugins.push({ - init: init, - name: 'symbols', - version: '1.0' - }); -})(jQuery); diff --git a/assets/plugins/flot/jquery.flot.symbol.min.js b/assets/plugins/flot/jquery.flot.symbol.min.js deleted file mode 100644 index 3eab213e..00000000 --- a/assets/plugins/flot/jquery.flot.symbol.min.js +++ /dev/null @@ -1 +0,0 @@ -(function($){function processRawData(plot,series,datapoints){var handlers={square:function(ctx,x,y,radius,shadow){var size=radius*Math.sqrt(Math.PI)/2;ctx.rect(x-size,y-size,size+size,size+size)},diamond:function(ctx,x,y,radius,shadow){var size=radius*Math.sqrt(Math.PI/2);ctx.moveTo(x-size,y);ctx.lineTo(x,y-size);ctx.lineTo(x+size,y);ctx.lineTo(x,y+size);ctx.lineTo(x-size,y)},triangle:function(ctx,x,y,radius,shadow){var size=radius*Math.sqrt(2*Math.PI/Math.sin(Math.PI/3));var height=size*Math.sin(Math.PI/3);ctx.moveTo(x-size/2,y+height/2);ctx.lineTo(x+size/2,y+height/2);if(!shadow){ctx.lineTo(x,y-height/2);ctx.lineTo(x-size/2,y+height/2)}},cross:function(ctx,x,y,radius,shadow){var size=radius*Math.sqrt(Math.PI)/2;ctx.moveTo(x-size,y-size);ctx.lineTo(x+size,y+size);ctx.moveTo(x-size,y+size);ctx.lineTo(x+size,y-size)}};var s=series.points.symbol;if(handlers[s])series.points.symbol=handlers[s]}function init(plot){plot.hooks.processDatapoints.push(processRawData)}$.plot.plugins.push({init:init,name:"symbols",version:"1.0"})})(jQuery); \ No newline at end of file diff --git a/assets/plugins/flot/jquery.flot.threshold.js b/assets/plugins/flot/jquery.flot.threshold.js deleted file mode 100644 index 2f6e6359..00000000 --- a/assets/plugins/flot/jquery.flot.threshold.js +++ /dev/null @@ -1,142 +0,0 @@ -/* Flot plugin for thresholding data. - -Copyright (c) 2007-2013 IOLA and Ole Laursen. -Licensed under the MIT license. - -The plugin supports these options: - - series: { - threshold: { - below: number - color: colorspec - } - } - -It can also be applied to a single series, like this: - - $.plot( $("#placeholder"), [{ - data: [ ... ], - threshold: { ... } - }]) - -An array can be passed for multiple thresholding, like this: - - threshold: [{ - below: number1 - color: color1 - },{ - below: number2 - color: color2 - }] - -These multiple threshold objects can be passed in any order since they are -sorted by the processing function. - -The data points below "below" are drawn with the specified color. This makes -it easy to mark points below 0, e.g. for budget data. - -Internally, the plugin works by splitting the data into two series, above and -below the threshold. The extra series below the threshold will have its label -cleared and the special "originSeries" attribute set to the original series. -You may need to check for this in hover events. - -*/ - -(function ($) { - var options = { - series: { threshold: null } // or { below: number, color: color spec} - }; - - function init(plot) { - function thresholdData(plot, s, datapoints, below, color) { - var ps = datapoints.pointsize, i, x, y, p, prevp, - thresholded = $.extend({}, s); // note: shallow copy - - thresholded.datapoints = { points: [], pointsize: ps, format: datapoints.format }; - thresholded.label = null; - thresholded.color = color; - thresholded.threshold = null; - thresholded.originSeries = s; - thresholded.data = []; - - var origpoints = datapoints.points, - addCrossingPoints = s.lines.show; - - var threspoints = []; - var newpoints = []; - var m; - - for (i = 0; i < origpoints.length; i += ps) { - x = origpoints[i]; - y = origpoints[i + 1]; - - prevp = p; - if (y < below) - p = threspoints; - else - p = newpoints; - - if (addCrossingPoints && prevp != p && x != null - && i > 0 && origpoints[i - ps] != null) { - var interx = x + (below - y) * (x - origpoints[i - ps]) / (y - origpoints[i - ps + 1]); - prevp.push(interx); - prevp.push(below); - for (m = 2; m < ps; ++m) - prevp.push(origpoints[i + m]); - - p.push(null); // start new segment - p.push(null); - for (m = 2; m < ps; ++m) - p.push(origpoints[i + m]); - p.push(interx); - p.push(below); - for (m = 2; m < ps; ++m) - p.push(origpoints[i + m]); - } - - p.push(x); - p.push(y); - for (m = 2; m < ps; ++m) - p.push(origpoints[i + m]); - } - - datapoints.points = newpoints; - thresholded.datapoints.points = threspoints; - - if (thresholded.datapoints.points.length > 0) { - var origIndex = $.inArray(s, plot.getData()); - // Insert newly-generated series right after original one (to prevent it from becoming top-most) - plot.getData().splice(origIndex + 1, 0, thresholded); - } - - // FIXME: there are probably some edge cases left in bars - } - - function processThresholds(plot, s, datapoints) { - if (!s.threshold) - return; - - if (s.threshold instanceof Array) { - s.threshold.sort(function(a, b) { - return a.below - b.below; - }); - - $(s.threshold).each(function(i, th) { - thresholdData(plot, s, datapoints, th.below, th.color); - }); - } - else { - thresholdData(plot, s, datapoints, s.threshold.below, s.threshold.color); - } - } - - plot.hooks.processDatapoints.push(processThresholds); - } - - $.plot.plugins.push({ - init: init, - options: options, - name: 'threshold', - version: '1.2' - }); -})(jQuery); diff --git a/assets/plugins/flot/jquery.flot.threshold.min.js b/assets/plugins/flot/jquery.flot.threshold.min.js deleted file mode 100644 index a53849a5..00000000 --- a/assets/plugins/flot/jquery.flot.threshold.min.js +++ /dev/null @@ -1 +0,0 @@ -(function($){var options={series:{threshold:null}};function init(plot){function thresholdData(plot,s,datapoints,below,color){var ps=datapoints.pointsize,i,x,y,p,prevp,thresholded=$.extend({},s);thresholded.datapoints={points:[],pointsize:ps,format:datapoints.format};thresholded.label=null;thresholded.color=color;thresholded.threshold=null;thresholded.originSeries=s;thresholded.data=[];var origpoints=datapoints.points,addCrossingPoints=s.lines.show;var threspoints=[];var newpoints=[];var m;for(i=0;i<origpoints.length;i+=ps){x=origpoints[i];y=origpoints[i+1];prevp=p;if(y<below)p=threspoints;else p=newpoints;if(addCrossingPoints&&prevp!=p&&x!=null&&i>0&&origpoints[i-ps]!=null){var interx=x+(below-y)*(x-origpoints[i-ps])/(y-origpoints[i-ps+1]);prevp.push(interx);prevp.push(below);for(m=2;m<ps;++m)prevp.push(origpoints[i+m]);p.push(null);p.push(null);for(m=2;m<ps;++m)p.push(origpoints[i+m]);p.push(interx);p.push(below);for(m=2;m<ps;++m)p.push(origpoints[i+m])}p.push(x);p.push(y);for(m=2;m<ps;++m)p.push(origpoints[i+m])}datapoints.points=newpoints;thresholded.datapoints.points=threspoints;if(thresholded.datapoints.points.length>0){var origIndex=$.inArray(s,plot.getData());plot.getData().splice(origIndex+1,0,thresholded)}}function processThresholds(plot,s,datapoints){if(!s.threshold)return;if(s.threshold instanceof Array){s.threshold.sort(function(a,b){return a.below-b.below});$(s.threshold).each(function(i,th){thresholdData(plot,s,datapoints,th.below,th.color)})}else{thresholdData(plot,s,datapoints,s.threshold.below,s.threshold.color)}}plot.hooks.processDatapoints.push(processThresholds)}$.plot.plugins.push({init:init,options:options,name:"threshold",version:"1.2"})})(jQuery); \ No newline at end of file diff --git a/assets/plugins/flot/jquery.flot.time.js b/assets/plugins/flot/jquery.flot.time.js deleted file mode 100644 index ac9e666a..00000000 --- a/assets/plugins/flot/jquery.flot.time.js +++ /dev/null @@ -1,429 +0,0 @@ -/* Pretty handling of time axes. - -Copyright (c) 2007-2013 IOLA and Ole Laursen. -Licensed under the MIT license. - -Set axis.mode to "time" to enable. See the section "Time series data" in -API.txt for details. - -*/ - -(function($) { - - var options = { - xaxis: { - timezone: null, // "browser" for local to the client or timezone for timezone-js - timeformat: null, // format string to use - twelveHourClock: false, // 12 or 24 time in time mode - monthNames: null // list of names of months - } - }; - - // round to nearby lower multiple of base - - function floorInBase(n, base) { - return base * Math.floor(n / base); - } - - // Returns a string with the date d formatted according to fmt. - // A subset of the Open Group's strftime format is supported. - - function formatDate(d, fmt, monthNames, dayNames) { - - if (typeof d.strftime == "function") { - return d.strftime(fmt); - } - - var leftPad = function(n, pad) { - n = "" + n; - pad = "" + (pad == null ? "0" : pad); - return n.length == 1 ? pad + n : n; - }; - - var r = []; - var escape = false; - var hours = d.getHours(); - var isAM = hours < 12; - - if (monthNames == null) { - monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; - } - - if (dayNames == null) { - dayNames = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; - } - - var hours12; - - if (hours > 12) { - hours12 = hours - 12; - } else if (hours == 0) { - hours12 = 12; - } else { - hours12 = hours; - } - - for (var i = 0; i < fmt.length; ++i) { - - var c = fmt.charAt(i); - - if (escape) { - switch (c) { - case 'a': c = "" + dayNames[d.getDay()]; break; - case 'b': c = "" + monthNames[d.getMonth()]; break; - case 'd': c = leftPad(d.getDate()); break; - case 'e': c = leftPad(d.getDate(), " "); break; - case 'h': // For back-compat with 0.7; remove in 1.0 - case 'H': c = leftPad(hours); break; - case 'I': c = leftPad(hours12); break; - case 'l': c = leftPad(hours12, " "); break; - case 'm': c = leftPad(d.getMonth() + 1); break; - case 'M': c = leftPad(d.getMinutes()); break; - // quarters not in Open Group's strftime specification - case 'q': - c = "" + (Math.floor(d.getMonth() / 3) + 1); break; - case 'S': c = leftPad(d.getSeconds()); break; - case 'y': c = leftPad(d.getFullYear() % 100); break; - case 'Y': c = "" + d.getFullYear(); break; - case 'p': c = (isAM) ? ("" + "am") : ("" + "pm"); break; - case 'P': c = (isAM) ? ("" + "AM") : ("" + "PM"); break; - case 'w': c = "" + d.getDay(); break; - } - r.push(c); - escape = false; - } else { - if (c == "%") { - escape = true; - } else { - r.push(c); - } - } - } - - return r.join(""); - } - - // To have a consistent view of time-based data independent of which time - // zone the client happens to be in we need a date-like object independent - // of time zones. This is done through a wrapper that only calls the UTC - // versions of the accessor methods. - - function makeUtcWrapper(d) { - - function addProxyMethod(sourceObj, sourceMethod, targetObj, targetMethod) { - sourceObj[sourceMethod] = function() { - return targetObj[targetMethod].apply(targetObj, arguments); - }; - } - var utc = { - date: d - }; - - // support strftime, if found - - if (d.strftime != undefined) { - addProxyMethod(utc, "strftime", d, "strftime"); - } - - addProxyMethod(utc, "getTime", d, "getTime"); - addProxyMethod(utc, "setTime", d, "setTime"); - - var props = ["Date", "Day", "FullYear", "Hours", "Milliseconds", "Minutes", "Month", "Seconds"]; - - for (var p = 0; p < props.length; p++) { - addProxyMethod(utc, "get" + props[p], d, "getUTC" + props[p]); - addProxyMethod(utc, "set" + props[p], d, "setUTC" + props[p]); - } - - return utc; - } - // select time zone strategy. This returns a date-like object tied to the - // desired timezone - - function dateGenerator(ts, opts) { - if (opts.timezone == "browser") { - return new Date(ts); - } else if (!opts.timezone || opts.timezone == "utc") { - return makeUtcWrapper(new Date(ts)); - } else if (typeof timezoneJS != "undefined" && typeof timezoneJS.Date != "undefined") { - var d = new timezoneJS.Date(); - // timezone-js is fickle, so be sure to set the time zone before - // setting the time. - d.setTimezone(opts.timezone); - d.setTime(ts); - return d; - } else { - return makeUtcWrapper(new Date(ts)); - } - } - - // map of app. size of time units in milliseconds - - var timeUnitSize = { - "second": 1000, - "minute": 60 * 1000, - "hour": 60 * 60 * 1000, - "day": 24 * 60 * 60 * 1000, - "month": 30 * 24 * 60 * 60 * 1000, - "quarter": 3 * 30 * 24 * 60 * 60 * 1000, - "year": 365.2425 * 24 * 60 * 60 * 1000 - }; - - // the allowed tick sizes, after 1 year we use - // an integer algorithm - - var baseSpec = [ - [1, "second"], [2, "second"], [5, "second"], [10, "second"], - [30, "second"], - [1, "minute"], [2, "minute"], [5, "minute"], [10, "minute"], - [30, "minute"], - [1, "hour"], [2, "hour"], [4, "hour"], - [8, "hour"], [12, "hour"], - [1, "day"], [2, "day"], [3, "day"], - [0.25, "month"], [0.5, "month"], [1, "month"], - [2, "month"] - ]; - - // we don't know which variant(s) we'll need yet, but generating both is - // cheap - - var specMonths = baseSpec.concat([[3, "month"], [6, "month"], - [1, "year"]]); - var specQuarters = baseSpec.concat([[1, "quarter"], [2, "quarter"], - [1, "year"]]); - - function init(plot) { - plot.hooks.processOptions.push(function (plot, options) { - $.each(plot.getAxes(), function(axisName, axis) { - - var opts = axis.options; - - if (opts.mode == "time") { - axis.tickGenerator = function(axis) { - - var ticks = []; - var d = dateGenerator(axis.min, opts); - var minSize = 0; - - // make quarter use a possibility if quarters are - // mentioned in either of these options - - var spec = (opts.tickSize && opts.tickSize[1] === - "quarter") || - (opts.minTickSize && opts.minTickSize[1] === - "quarter") ? specQuarters : specMonths; - - if (opts.minTickSize != null) { - if (typeof opts.tickSize == "number") { - minSize = opts.tickSize; - } else { - minSize = opts.minTickSize[0] * timeUnitSize[opts.minTickSize[1]]; - } - } - - for (var i = 0; i < spec.length - 1; ++i) { - if (axis.delta < (spec[i][0] * timeUnitSize[spec[i][1]] - + spec[i + 1][0] * timeUnitSize[spec[i + 1][1]]) / 2 - && spec[i][0] * timeUnitSize[spec[i][1]] >= minSize) { - break; - } - } - - var size = spec[i][0]; - var unit = spec[i][1]; - - // special-case the possibility of several years - - if (unit == "year") { - - // if given a minTickSize in years, just use it, - // ensuring that it's an integer - - if (opts.minTickSize != null && opts.minTickSize[1] == "year") { - size = Math.floor(opts.minTickSize[0]); - } else { - - var magn = Math.pow(10, Math.floor(Math.log(axis.delta / timeUnitSize.year) / Math.LN10)); - var norm = (axis.delta / timeUnitSize.year) / magn; - - if (norm < 1.5) { - size = 1; - } else if (norm < 3) { - size = 2; - } else if (norm < 7.5) { - size = 5; - } else { - size = 10; - } - - size *= magn; - } - - // minimum size for years is 1 - - if (size < 1) { - size = 1; - } - } - - axis.tickSize = opts.tickSize || [size, unit]; - var tickSize = axis.tickSize[0]; - unit = axis.tickSize[1]; - - var step = tickSize * timeUnitSize[unit]; - - if (unit == "second") { - d.setSeconds(floorInBase(d.getSeconds(), tickSize)); - } else if (unit == "minute") { - d.setMinutes(floorInBase(d.getMinutes(), tickSize)); - } else if (unit == "hour") { - d.setHours(floorInBase(d.getHours(), tickSize)); - } else if (unit == "month") { - d.setMonth(floorInBase(d.getMonth(), tickSize)); - } else if (unit == "quarter") { - d.setMonth(3 * floorInBase(d.getMonth() / 3, - tickSize)); - } else if (unit == "year") { - d.setFullYear(floorInBase(d.getFullYear(), tickSize)); - } - - // reset smaller components - - d.setMilliseconds(0); - - if (step >= timeUnitSize.minute) { - d.setSeconds(0); - } - if (step >= timeUnitSize.hour) { - d.setMinutes(0); - } - if (step >= timeUnitSize.day) { - d.setHours(0); - } - if (step >= timeUnitSize.day * 4) { - d.setDate(1); - } - if (step >= timeUnitSize.month * 2) { - d.setMonth(floorInBase(d.getMonth(), 3)); - } - if (step >= timeUnitSize.quarter * 2) { - d.setMonth(floorInBase(d.getMonth(), 6)); - } - if (step >= timeUnitSize.year) { - d.setMonth(0); - } - - var carry = 0; - var v = Number.NaN; - var prev; - - do { - - prev = v; - v = d.getTime(); - ticks.push(v); - - if (unit == "month" || unit == "quarter") { - if (tickSize < 1) { - - // a bit complicated - we'll divide the - // month/quarter up but we need to take - // care of fractions so we don't end up in - // the middle of a day - - d.setDate(1); - var start = d.getTime(); - d.setMonth(d.getMonth() + - (unit == "quarter" ? 3 : 1)); - var end = d.getTime(); - d.setTime(v + carry * timeUnitSize.hour + (end - start) * tickSize); - carry = d.getHours(); - d.setHours(0); - } else { - d.setMonth(d.getMonth() + - tickSize * (unit == "quarter" ? 3 : 1)); - } - } else if (unit == "year") { - d.setFullYear(d.getFullYear() + tickSize); - } else { - d.setTime(v + step); - } - } while (v < axis.max && v != prev); - - return ticks; - }; - - axis.tickFormatter = function (v, axis) { - - var d = dateGenerator(v, axis.options); - - // first check global format - - if (opts.timeformat != null) { - return formatDate(d, opts.timeformat, opts.monthNames, opts.dayNames); - } - - // possibly use quarters if quarters are mentioned in - // any of these places - - var useQuarters = (axis.options.tickSize && - axis.options.tickSize[1] == "quarter") || - (axis.options.minTickSize && - axis.options.minTickSize[1] == "quarter"); - - var t = axis.tickSize[0] * timeUnitSize[axis.tickSize[1]]; - var span = axis.max - axis.min; - var suffix = (opts.twelveHourClock) ? " %p" : ""; - var hourCode = (opts.twelveHourClock) ? "%I" : "%H"; - var fmt; - - if (t < timeUnitSize.minute) { - fmt = hourCode + ":%M:%S" + suffix; - } else if (t < timeUnitSize.day) { - if (span < 2 * timeUnitSize.day) { - fmt = hourCode + ":%M" + suffix; - } else { - fmt = "%b %d " + hourCode + ":%M" + suffix; - } - } else if (t < timeUnitSize.month) { - fmt = "%b %d"; - } else if ((useQuarters && t < timeUnitSize.quarter) || - (!useQuarters && t < timeUnitSize.year)) { - if (span < timeUnitSize.year) { - fmt = "%b"; - } else { - fmt = "%b %Y"; - } - } else if (useQuarters && t < timeUnitSize.year) { - if (span < timeUnitSize.year) { - fmt = "Q%q"; - } else { - fmt = "Q%q %Y"; - } - } else { - fmt = "%Y"; - } - - var rt = formatDate(d, fmt, opts.monthNames, opts.dayNames); - - return rt; - }; - } - }); - }); - } - - $.plot.plugins.push({ - init: init, - options: options, - name: 'time', - version: '1.0' - }); - - // Time-axis support used to be in Flot core, which exposed the - // formatDate function on the plot object. Various plugins depend - // on the function, so we need to re-expose it here. - - $.plot.formatDate = formatDate; - -})(jQuery); diff --git a/assets/plugins/flot/jquery.flot.time.min.js b/assets/plugins/flot/jquery.flot.time.min.js deleted file mode 100644 index aaf319c9..00000000 --- a/assets/plugins/flot/jquery.flot.time.min.js +++ /dev/null @@ -1 +0,0 @@ -(function($){var options={xaxis:{timezone:null,timeformat:null,twelveHourClock:false,monthNames:null}};function floorInBase(n,base){return base*Math.floor(n/base)}function formatDate(d,fmt,monthNames,dayNames){if(typeof d.strftime=="function"){return d.strftime(fmt)}var leftPad=function(n,pad){n=""+n;pad=""+(pad==null?"0":pad);return n.length==1?pad+n:n};var r=[];var escape=false;var hours=d.getHours();var isAM=hours<12;if(monthNames==null){monthNames=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}if(dayNames==null){dayNames=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]}var hours12;if(hours>12){hours12=hours-12}else if(hours==0){hours12=12}else{hours12=hours}for(var i=0;i<fmt.length;++i){var c=fmt.charAt(i);if(escape){switch(c){case"a":c=""+dayNames[d.getDay()];break;case"b":c=""+monthNames[d.getMonth()];break;case"d":c=leftPad(d.getDate());break;case"e":c=leftPad(d.getDate()," ");break;case"h":case"H":c=leftPad(hours);break;case"I":c=leftPad(hours12);break;case"l":c=leftPad(hours12," ");break;case"m":c=leftPad(d.getMonth()+1);break;case"M":c=leftPad(d.getMinutes());break;case"q":c=""+(Math.floor(d.getMonth()/3)+1);break;case"S":c=leftPad(d.getSeconds());break;case"y":c=leftPad(d.getFullYear()%100);break;case"Y":c=""+d.getFullYear();break;case"p":c=isAM?""+"am":""+"pm";break;case"P":c=isAM?""+"AM":""+"PM";break;case"w":c=""+d.getDay();break}r.push(c);escape=false}else{if(c=="%"){escape=true}else{r.push(c)}}}return r.join("")}function makeUtcWrapper(d){function addProxyMethod(sourceObj,sourceMethod,targetObj,targetMethod){sourceObj[sourceMethod]=function(){return targetObj[targetMethod].apply(targetObj,arguments)}}var utc={date:d};if(d.strftime!=undefined){addProxyMethod(utc,"strftime",d,"strftime")}addProxyMethod(utc,"getTime",d,"getTime");addProxyMethod(utc,"setTime",d,"setTime");var props=["Date","Day","FullYear","Hours","Milliseconds","Minutes","Month","Seconds"];for(var p=0;p<props.length;p++){addProxyMethod(utc,"get"+props[p],d,"getUTC"+props[p]);addProxyMethod(utc,"set"+props[p],d,"setUTC"+props[p])}return utc}function dateGenerator(ts,opts){if(opts.timezone=="browser"){return new Date(ts)}else if(!opts.timezone||opts.timezone=="utc"){return makeUtcWrapper(new Date(ts))}else if(typeof timezoneJS!="undefined"&&typeof timezoneJS.Date!="undefined"){var d=new timezoneJS.Date;d.setTimezone(opts.timezone);d.setTime(ts);return d}else{return makeUtcWrapper(new Date(ts))}}var timeUnitSize={second:1e3,minute:60*1e3,hour:60*60*1e3,day:24*60*60*1e3,month:30*24*60*60*1e3,quarter:3*30*24*60*60*1e3,year:365.2425*24*60*60*1e3};var baseSpec=[[1,"second"],[2,"second"],[5,"second"],[10,"second"],[30,"second"],[1,"minute"],[2,"minute"],[5,"minute"],[10,"minute"],[30,"minute"],[1,"hour"],[2,"hour"],[4,"hour"],[8,"hour"],[12,"hour"],[1,"day"],[2,"day"],[3,"day"],[.25,"month"],[.5,"month"],[1,"month"],[2,"month"]];var specMonths=baseSpec.concat([[3,"month"],[6,"month"],[1,"year"]]);var specQuarters=baseSpec.concat([[1,"quarter"],[2,"quarter"],[1,"year"]]);function init(plot){plot.hooks.processOptions.push(function(plot,options){$.each(plot.getAxes(),function(axisName,axis){var opts=axis.options;if(opts.mode=="time"){axis.tickGenerator=function(axis){var ticks=[];var d=dateGenerator(axis.min,opts);var minSize=0;var spec=opts.tickSize&&opts.tickSize[1]==="quarter"||opts.minTickSize&&opts.minTickSize[1]==="quarter"?specQuarters:specMonths;if(opts.minTickSize!=null){if(typeof opts.tickSize=="number"){minSize=opts.tickSize}else{minSize=opts.minTickSize[0]*timeUnitSize[opts.minTickSize[1]]}}for(var i=0;i<spec.length-1;++i){if(axis.delta<(spec[i][0]*timeUnitSize[spec[i][1]]+spec[i+1][0]*timeUnitSize[spec[i+1][1]])/2&&spec[i][0]*timeUnitSize[spec[i][1]]>=minSize){break}}var size=spec[i][0];var unit=spec[i][1];if(unit=="year"){if(opts.minTickSize!=null&&opts.minTickSize[1]=="year"){size=Math.floor(opts.minTickSize[0])}else{var magn=Math.pow(10,Math.floor(Math.log(axis.delta/timeUnitSize.year)/Math.LN10));var norm=axis.delta/timeUnitSize.year/magn;if(norm<1.5){size=1}else if(norm<3){size=2}else if(norm<7.5){size=5}else{size=10}size*=magn}if(size<1){size=1}}axis.tickSize=opts.tickSize||[size,unit];var tickSize=axis.tickSize[0];unit=axis.tickSize[1];var step=tickSize*timeUnitSize[unit];if(unit=="second"){d.setSeconds(floorInBase(d.getSeconds(),tickSize))}else if(unit=="minute"){d.setMinutes(floorInBase(d.getMinutes(),tickSize))}else if(unit=="hour"){d.setHours(floorInBase(d.getHours(),tickSize))}else if(unit=="month"){d.setMonth(floorInBase(d.getMonth(),tickSize))}else if(unit=="quarter"){d.setMonth(3*floorInBase(d.getMonth()/3,tickSize))}else if(unit=="year"){d.setFullYear(floorInBase(d.getFullYear(),tickSize))}d.setMilliseconds(0);if(step>=timeUnitSize.minute){d.setSeconds(0)}if(step>=timeUnitSize.hour){d.setMinutes(0)}if(step>=timeUnitSize.day){d.setHours(0)}if(step>=timeUnitSize.day*4){d.setDate(1)}if(step>=timeUnitSize.month*2){d.setMonth(floorInBase(d.getMonth(),3))}if(step>=timeUnitSize.quarter*2){d.setMonth(floorInBase(d.getMonth(),6))}if(step>=timeUnitSize.year){d.setMonth(0)}var carry=0;var v=Number.NaN;var prev;do{prev=v;v=d.getTime();ticks.push(v);if(unit=="month"||unit=="quarter"){if(tickSize<1){d.setDate(1);var start=d.getTime();d.setMonth(d.getMonth()+(unit=="quarter"?3:1));var end=d.getTime();d.setTime(v+carry*timeUnitSize.hour+(end-start)*tickSize);carry=d.getHours();d.setHours(0)}else{d.setMonth(d.getMonth()+tickSize*(unit=="quarter"?3:1))}}else if(unit=="year"){d.setFullYear(d.getFullYear()+tickSize)}else{d.setTime(v+step)}}while(v<axis.max&&v!=prev);return ticks};axis.tickFormatter=function(v,axis){var d=dateGenerator(v,axis.options);if(opts.timeformat!=null){return formatDate(d,opts.timeformat,opts.monthNames,opts.dayNames)}var useQuarters=axis.options.tickSize&&axis.options.tickSize[1]=="quarter"||axis.options.minTickSize&&axis.options.minTickSize[1]=="quarter";var t=axis.tickSize[0]*timeUnitSize[axis.tickSize[1]];var span=axis.max-axis.min;var suffix=opts.twelveHourClock?" %p":"";var hourCode=opts.twelveHourClock?"%I":"%H";var fmt;if(t<timeUnitSize.minute){fmt=hourCode+":%M:%S"+suffix}else if(t<timeUnitSize.day){if(span<2*timeUnitSize.day){fmt=hourCode+":%M"+suffix}else{fmt="%b %d "+hourCode+":%M"+suffix}}else if(t<timeUnitSize.month){fmt="%b %d"}else if(useQuarters&&t<timeUnitSize.quarter||!useQuarters&&t<timeUnitSize.year){if(span<timeUnitSize.year){fmt="%b"}else{fmt="%b %Y"}}else if(useQuarters&&t<timeUnitSize.year){if(span<timeUnitSize.year){fmt="Q%q"}else{fmt="Q%q %Y"}}else{fmt="%Y"}var rt=formatDate(d,fmt,opts.monthNames,opts.dayNames);return rt}}})})}$.plot.plugins.push({init:init,options:options,name:"time",version:"1.0"});$.plot.formatDate=formatDate})(jQuery); \ No newline at end of file diff --git a/assets/plugins/fullcalendar/fullcalendar.css b/assets/plugins/fullcalendar/fullcalendar.css deleted file mode 100644 index 624f2c4f..00000000 --- a/assets/plugins/fullcalendar/fullcalendar.css +++ /dev/null @@ -1,977 +0,0 @@ -/*! - * FullCalendar v2.2.5 Stylesheet - * Docs & License: http://arshaw.com/fullcalendar/ - * (c) 2013 Adam Shaw - */ - - -.fc { - direction: ltr; - text-align: left; -} - -.fc-rtl { - text-align: right; -} - -body .fc { /* extra precedence to overcome jqui */ - font-size: 1em; -} - - -/* Colors ---------------------------------------------------------------------------------------------------*/ - -.fc-unthemed th, -.fc-unthemed td, -.fc-unthemed hr, -.fc-unthemed thead, -.fc-unthemed tbody, -.fc-unthemed .fc-row, -.fc-unthemed .fc-popover { - border-color: #ddd; -} - -.fc-unthemed .fc-popover { - background-color: #fff; -} - -.fc-unthemed hr, -.fc-unthemed .fc-popover .fc-header { - background: #eee; -} - -.fc-unthemed .fc-popover .fc-header .fc-close { - color: #666; -} - -.fc-unthemed .fc-today { - background: #fcf8e3; -} - -.fc-highlight { /* when user is selecting cells */ - background: #bce8f1; - opacity: .3; - filter: alpha(opacity=30); /* for IE */ -} - -.fc-bgevent { /* default look for background events */ - background: rgb(143, 223, 130); - opacity: .3; - filter: alpha(opacity=30); /* for IE */ -} - -.fc-nonbusiness { /* default look for non-business-hours areas */ - /* will inherit .fc-bgevent's styles */ - background: #ccc; -} - - -/* Icons (inline elements with styled text that mock arrow icons) ---------------------------------------------------------------------------------------------------*/ - -.fc-icon { - display: inline-block; - font-size: 2em; - line-height: .5em; - height: .5em; /* will make the total height 1em */ - font-family: "Courier New", Courier, monospace; -} - -.fc-icon-left-single-arrow:after { - content: "\02039"; - font-weight: bold; -} - -.fc-icon-right-single-arrow:after { - content: "\0203A"; - font-weight: bold; -} - -.fc-icon-left-double-arrow:after { - content: "\000AB"; -} - -.fc-icon-right-double-arrow:after { - content: "\000BB"; -} - -.fc-icon-x:after { - content: "\000D7"; -} - - -/* Buttons (styled <button> tags, normalized to work cross-browser) ---------------------------------------------------------------------------------------------------*/ - -.fc button { - /* force height to include the border and padding */ - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - box-sizing: border-box; - - /* dimensions */ - margin: 0; - height: 2.1em; - padding: 0 .6em; - - /* text & cursor */ - font-size: 1em; /* normalize */ - white-space: nowrap; - cursor: pointer; -} - -/* Firefox has an annoying inner border */ -.fc button::-moz-focus-inner { margin: 0; padding: 0; } - -.fc-state-default { /* non-theme */ - border: 1px solid; -} - -.fc-state-default.fc-corner-left { /* non-theme */ - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; -} - -.fc-state-default.fc-corner-right { /* non-theme */ - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; -} - -/* icons in buttons */ - -.fc button .fc-icon { /* non-theme */ - position: relative; - top: .05em; /* seems to be a good adjustment across browsers */ - margin: 0 .1em; -} - -/* - button states - borrowed from twitter bootstrap (http://twitter.github.com/bootstrap/) -*/ - -.fc-state-default { - background-color: #f5f5f5; - background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); - background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); - background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); - background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); - background-repeat: repeat-x; - border-color: #e6e6e6 #e6e6e6 #bfbfbf; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - color: #333; - text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); -} - -.fc-state-hover, -.fc-state-down, -.fc-state-active, -.fc-state-disabled { - color: #333333; - background-color: #e6e6e6; -} - -.fc-state-hover { - color: #333333; - text-decoration: none; - background-position: 0 -15px; - -webkit-transition: background-position 0.1s linear; - -moz-transition: background-position 0.1s linear; - -o-transition: background-position 0.1s linear; - transition: background-position 0.1s linear; -} - -.fc-state-down, -.fc-state-active { - background-color: #cccccc; - background-image: none; - box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); -} - -.fc-state-disabled { - cursor: default; - background-image: none; - opacity: 0.65; - filter: alpha(opacity=65); - box-shadow: none; -} - - -/* Buttons Groups ---------------------------------------------------------------------------------------------------*/ - -.fc-button-group { - display: inline-block; -} - -/* -every button that is not first in a button group should scootch over one pixel and cover the -previous button's border... -*/ - -.fc .fc-button-group > * { /* extra precedence b/c buttons have margin set to zero */ - float: left; - margin: 0 0 0 -1px; -} - -.fc .fc-button-group > :first-child { /* same */ - margin-left: 0; -} - - -/* Popover ---------------------------------------------------------------------------------------------------*/ - -.fc-popover { - position: absolute; - box-shadow: 0 2px 6px rgba(0,0,0,.15); -} - -.fc-popover .fc-header { - padding: 2px 4px; -} - -.fc-popover .fc-header .fc-title { - margin: 0 2px; -} - -.fc-popover .fc-header .fc-close { - cursor: pointer; -} - -.fc-ltr .fc-popover .fc-header .fc-title, -.fc-rtl .fc-popover .fc-header .fc-close { - float: left; -} - -.fc-rtl .fc-popover .fc-header .fc-title, -.fc-ltr .fc-popover .fc-header .fc-close { - float: right; -} - -/* unthemed */ - -.fc-unthemed .fc-popover { - border-width: 1px; - border-style: solid; -} - -.fc-unthemed .fc-popover .fc-header .fc-close { - font-size: 25px; - margin-top: 4px; -} - -/* jqui themed */ - -.fc-popover > .ui-widget-header + .ui-widget-content { - border-top: 0; /* where they meet, let the header have the border */ -} - - -/* Misc Reusable Components ---------------------------------------------------------------------------------------------------*/ - -.fc hr { - height: 0; - margin: 0; - padding: 0 0 2px; /* height is unreliable across browsers, so use padding */ - border-style: solid; - border-width: 1px 0; -} - -.fc-clear { - clear: both; -} - -.fc-bg, -.fc-bgevent-skeleton, -.fc-highlight-skeleton, -.fc-helper-skeleton { - /* these element should always cling to top-left/right corners */ - position: absolute; - top: 0; - left: 0; - right: 0; -} - -.fc-bg { - bottom: 0; /* strech bg to bottom edge */ -} - -.fc-bg table { - height: 100%; /* strech bg to bottom edge */ -} - - -/* Tables ---------------------------------------------------------------------------------------------------*/ - -.fc table { - width: 100%; - table-layout: fixed; - border-collapse: collapse; - border-spacing: 0; - font-size: 1em; /* normalize cross-browser */ -} - -.fc th { - text-align: center; -} - -.fc th, -.fc td { - border-style: solid; - border-width: 1px; - padding: 0; - vertical-align: top; -} - -.fc td.fc-today { - border-style: double; /* overcome neighboring borders */ -} - - -/* Fake Table Rows ---------------------------------------------------------------------------------------------------*/ - -.fc .fc-row { /* extra precedence to overcome themes w/ .ui-widget-content forcing a 1px border */ - /* no visible border by default. but make available if need be (scrollbar width compensation) */ - border-style: solid; - border-width: 0; -} - -.fc-row table { - /* don't put left/right border on anything within a fake row. - the outer tbody will worry about this */ - border-left: 0 hidden transparent; - border-right: 0 hidden transparent; - - /* no bottom borders on rows */ - border-bottom: 0 hidden transparent; -} - -.fc-row:first-child table { - border-top: 0 hidden transparent; /* no top border on first row */ -} - - -/* Day Row (used within the header and the DayGrid) ---------------------------------------------------------------------------------------------------*/ - -.fc-row { - position: relative; -} - -.fc-row .fc-bg { - z-index: 1; -} - -/* highlighting cells & background event skeleton */ - -.fc-row .fc-bgevent-skeleton, -.fc-row .fc-highlight-skeleton { - bottom: 0; /* stretch skeleton to bottom of row */ -} - -.fc-row .fc-bgevent-skeleton table, -.fc-row .fc-highlight-skeleton table { - height: 100%; /* stretch skeleton to bottom of row */ -} - -.fc-row .fc-highlight-skeleton td, -.fc-row .fc-bgevent-skeleton td { - border-color: transparent; -} - -.fc-row .fc-bgevent-skeleton { - z-index: 2; - -} - -.fc-row .fc-highlight-skeleton { - z-index: 3; -} - -/* -row content (which contains day/week numbers and events) as well as "helper" (which contains -temporary rendered events). -*/ - -.fc-row .fc-content-skeleton { - position: relative; - z-index: 4; - padding-bottom: 2px; /* matches the space above the events */ -} - -.fc-row .fc-helper-skeleton { - z-index: 5; -} - -.fc-row .fc-content-skeleton td, -.fc-row .fc-helper-skeleton td { - /* see-through to the background below */ - background: none; /* in case <td>s are globally styled */ - border-color: transparent; - - /* don't put a border between events and/or the day number */ - border-bottom: 0; -} - -.fc-row .fc-content-skeleton tbody td, /* cells with events inside (so NOT the day number cell) */ -.fc-row .fc-helper-skeleton tbody td { - /* don't put a border between event cells */ - border-top: 0; -} - - -/* Scrolling Container ---------------------------------------------------------------------------------------------------*/ - -.fc-scroller { /* this class goes on elements for guaranteed vertical scrollbars */ - overflow-y: scroll; - overflow-x: hidden; -} - -.fc-scroller > * { /* we expect an immediate inner element */ - position: relative; /* re-scope all positions */ - width: 100%; /* hack to force re-sizing this inner element when scrollbars appear/disappear */ - overflow: hidden; /* don't let negative margins or absolute positioning create further scroll */ -} - - -/* Global Event Styles ---------------------------------------------------------------------------------------------------*/ - -.fc-event { - position: relative; /* for resize handle and other inner positioning */ - display: block; /* make the <a> tag block */ - font-size: .85em; - line-height: 1.3; - border-radius: 3px; - border: 1px solid #3a87ad; /* default BORDER color */ - background-color: #3a87ad; /* default BACKGROUND color */ - font-weight: normal; /* undo jqui's ui-widget-header bold */ -} - -/* overpower some of bootstrap's and jqui's styles on <a> tags */ -.fc-event, -.fc-event:hover, -.ui-widget .fc-event { - color: #fff; /* default TEXT color */ - text-decoration: none; /* if <a> has an href */ -} - -.fc-event[href], -.fc-event.fc-draggable { - cursor: pointer; /* give events with links and draggable events a hand mouse pointer */ -} - -.fc-not-allowed, /* causes a "warning" cursor. applied on body */ -.fc-not-allowed .fc-event { /* to override an event's custom cursor */ - cursor: not-allowed; -} - - -/* DayGrid events ----------------------------------------------------------------------------------------------------- -We use the full "fc-day-grid-event" class instead of using descendants because the event won't -be a descendant of the grid when it is being dragged. -*/ - -.fc-day-grid-event { - margin: 1px 2px 0; /* spacing between events and edges */ - padding: 0 1px; -} - -/* events that are continuing to/from another week. kill rounded corners and butt up against edge */ - -.fc-ltr .fc-day-grid-event.fc-not-start, -.fc-rtl .fc-day-grid-event.fc-not-end { - margin-left: 0; - border-left-width: 0; - padding-left: 1px; /* replace the border with padding */ - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} - -.fc-ltr .fc-day-grid-event.fc-not-end, -.fc-rtl .fc-day-grid-event.fc-not-start { - margin-right: 0; - border-right-width: 0; - padding-right: 1px; /* replace the border with padding */ - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -.fc-day-grid-event > .fc-content { /* force events to be one-line tall */ - white-space: nowrap; - overflow: hidden; -} - -.fc-day-grid-event .fc-time { - font-weight: bold; -} - -/* resize handle (outside of fc-content, so can go outside of bounds) */ - -.fc-day-grid-event .fc-resizer { - position: absolute; - top: 0; - bottom: 0; - width: 7px; -} - -.fc-ltr .fc-day-grid-event .fc-resizer { - right: -3px; - cursor: e-resize; -} - -.fc-rtl .fc-day-grid-event .fc-resizer { - left: -3px; - cursor: w-resize; -} - - -/* Event Limiting ---------------------------------------------------------------------------------------------------*/ - -/* "more" link that represents hidden events */ - -a.fc-more { - margin: 1px 3px; - font-size: .85em; - cursor: pointer; - text-decoration: none; -} - -a.fc-more:hover { - text-decoration: underline; -} - -.fc-limited { /* rows and cells that are hidden because of a "more" link */ - display: none; -} - -/* popover that appears when "more" link is clicked */ - -.fc-day-grid .fc-row { - z-index: 1; /* make the "more" popover one higher than this */ -} - -.fc-more-popover { - z-index: 2; - width: 220px; -} - -.fc-more-popover .fc-event-container { - padding: 10px; -} - -/* Toolbar ---------------------------------------------------------------------------------------------------*/ - -.fc-toolbar { - text-align: center; - margin-bottom: 1em; -} - -.fc-toolbar .fc-left { - float: left; -} - -.fc-toolbar .fc-right { - float: right; -} - -.fc-toolbar .fc-center { - display: inline-block; -} - -/* the things within each left/right/center section */ -.fc .fc-toolbar > * > * { /* extra precedence to override button border margins */ - float: left; - margin-left: .75em; -} - -/* the first thing within each left/center/right section */ -.fc .fc-toolbar > * > :first-child { /* extra precedence to override button border margins */ - margin-left: 0; -} - -/* title text */ - -.fc-toolbar h2 { - margin: 0; -} - -/* button layering (for border precedence) */ - -.fc-toolbar button { - position: relative; -} - -.fc-toolbar .fc-state-hover, -.fc-toolbar .ui-state-hover { - z-index: 2; -} - -.fc-toolbar .fc-state-down { - z-index: 3; -} - -.fc-toolbar .fc-state-active, -.fc-toolbar .ui-state-active { - z-index: 4; -} - -.fc-toolbar button:focus { - z-index: 5; -} - - -/* View Structure ---------------------------------------------------------------------------------------------------*/ - -/* undo twitter bootstrap's box-sizing rules. normalizes positioning techniques */ -/* don't do this for the toolbar because we'll want bootstrap to style those buttons as some pt */ -.fc-view-container *, -.fc-view-container *:before, -.fc-view-container *:after { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} - -.fc-view, /* scope positioning and z-index's for everything within the view */ -.fc-view > table { /* so dragged elements can be above the view's main element */ - position: relative; - z-index: 1; -} - -/* BasicView ---------------------------------------------------------------------------------------------------*/ - -/* day row structure */ - -.fc-basicWeek-view .fc-content-skeleton, -.fc-basicDay-view .fc-content-skeleton { - /* we are sure there are no day numbers in these views, so... */ - padding-top: 1px; /* add a pixel to make sure there are 2px padding above events */ - padding-bottom: 1em; /* ensure a space at bottom of cell for user selecting/clicking */ -} - -.fc-basic-view tbody .fc-row { - min-height: 4em; /* ensure that all rows are at least this tall */ -} - -/* a "rigid" row will take up a constant amount of height because content-skeleton is absolute */ - -.fc-row.fc-rigid { - overflow: hidden; -} - -.fc-row.fc-rigid .fc-content-skeleton { - position: absolute; - top: 0; - left: 0; - right: 0; -} - -/* week and day number styling */ - -.fc-basic-view .fc-week-number, -.fc-basic-view .fc-day-number { - padding: 0 2px; -} - -.fc-basic-view td.fc-week-number span, -.fc-basic-view td.fc-day-number { - padding-top: 2px; - padding-bottom: 2px; -} - -.fc-basic-view .fc-week-number { - text-align: center; -} - -.fc-basic-view .fc-week-number span { - /* work around the way we do column resizing and ensure a minimum width */ - display: inline-block; - min-width: 1.25em; -} - -.fc-ltr .fc-basic-view .fc-day-number { - text-align: right; -} - -.fc-rtl .fc-basic-view .fc-day-number { - text-align: left; -} - -.fc-day-number.fc-other-month { - opacity: 0.3; - filter: alpha(opacity=30); /* for IE */ - /* opacity with small font can sometimes look too faded - might want to set the 'color' property instead - making day-numbers bold also fixes the problem */ -} - -/* AgendaView all-day area ---------------------------------------------------------------------------------------------------*/ - -.fc-agenda-view .fc-day-grid { - position: relative; - z-index: 2; /* so the "more.." popover will be over the time grid */ -} - -.fc-agenda-view .fc-day-grid .fc-row { - min-height: 3em; /* all-day section will never get shorter than this */ -} - -.fc-agenda-view .fc-day-grid .fc-row .fc-content-skeleton { - padding-top: 1px; /* add a pixel to make sure there are 2px padding above events */ - padding-bottom: 1em; /* give space underneath events for clicking/selecting days */ -} - - -/* TimeGrid axis running down the side (for both the all-day area and the slot area) ---------------------------------------------------------------------------------------------------*/ - -.fc .fc-axis { /* .fc to overcome default cell styles */ - vertical-align: middle; - padding: 0 4px; - white-space: nowrap; -} - -.fc-ltr .fc-axis { - text-align: right; -} - -.fc-rtl .fc-axis { - text-align: left; -} - -.ui-widget td.fc-axis { - font-weight: normal; /* overcome jqui theme making it bold */ -} - - -/* TimeGrid Structure ---------------------------------------------------------------------------------------------------*/ - -.fc-time-grid-container, /* so scroll container's z-index is below all-day */ -.fc-time-grid { /* so slats/bg/content/etc positions get scoped within here */ - position: relative; - z-index: 1; -} - -.fc-time-grid { - min-height: 100%; /* so if height setting is 'auto', .fc-bg stretches to fill height */ -} - -.fc-time-grid table { /* don't put outer borders on slats/bg/content/etc */ - border: 0 hidden transparent; -} - -.fc-time-grid > .fc-bg { - z-index: 1; -} - -.fc-time-grid .fc-slats, -.fc-time-grid > hr { /* the <hr> AgendaView injects when grid is shorter than scroller */ - position: relative; - z-index: 2; -} - -.fc-time-grid .fc-bgevent-skeleton, -.fc-time-grid .fc-content-skeleton { - position: absolute; - top: 0; - left: 0; - right: 0; -} - -.fc-time-grid .fc-bgevent-skeleton { - z-index: 3; -} - -.fc-time-grid .fc-highlight-skeleton { - z-index: 4; -} - -.fc-time-grid .fc-content-skeleton { - z-index: 5; -} - -.fc-time-grid .fc-helper-skeleton { - z-index: 6; -} - - -/* TimeGrid Slats (lines that run horizontally) ---------------------------------------------------------------------------------------------------*/ - -.fc-slats td { - height: 1.5em; - border-bottom: 0; /* each cell is responsible for its top border */ -} - -.fc-slats .fc-minor td { - border-top-style: dotted; -} - -.fc-slats .ui-widget-content { /* for jqui theme */ - background: none; /* see through to fc-bg */ -} - - -/* TimeGrid Highlighting Slots ---------------------------------------------------------------------------------------------------*/ - -.fc-time-grid .fc-highlight-container { /* a div within a cell within the fc-highlight-skeleton */ - position: relative; /* scopes the left/right of the fc-highlight to be in the column */ -} - -.fc-time-grid .fc-highlight { - position: absolute; - left: 0; - right: 0; - /* top and bottom will be in by JS */ -} - - -/* TimeGrid Event Containment ---------------------------------------------------------------------------------------------------*/ - -.fc-time-grid .fc-event-container, /* a div within a cell within the fc-content-skeleton */ -.fc-time-grid .fc-bgevent-container { /* a div within a cell within the fc-bgevent-skeleton */ - position: relative; -} - -.fc-ltr .fc-time-grid .fc-event-container { /* space on the sides of events for LTR (default) */ - margin: 0 2.5% 0 2px; -} - -.fc-rtl .fc-time-grid .fc-event-container { /* space on the sides of events for RTL */ - margin: 0 2px 0 2.5%; -} - -.fc-time-grid .fc-event, -.fc-time-grid .fc-bgevent { - position: absolute; - z-index: 1; /* scope inner z-index's */ -} - -.fc-time-grid .fc-bgevent { - /* background events always span full width */ - left: 0; - right: 0; -} - - -/* TimeGrid Event Styling ----------------------------------------------------------------------------------------------------- -We use the full "fc-time-grid-event" class instead of using descendants because the event won't -be a descendant of the grid when it is being dragged. -*/ - -.fc-time-grid-event.fc-not-start { /* events that are continuing from another day */ - /* replace space made by the top border with padding */ - border-top-width: 0; - padding-top: 1px; - - /* remove top rounded corners */ - border-top-left-radius: 0; - border-top-right-radius: 0; -} - -.fc-time-grid-event.fc-not-end { - /* replace space made by the top border with padding */ - border-bottom-width: 0; - padding-bottom: 1px; - - /* remove bottom rounded corners */ - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; -} - -.fc-time-grid-event { - overflow: hidden; /* don't let the bg flow over rounded corners */ -} - -.fc-time-grid-event > .fc-content { /* contains the time and title, but no bg and resizer */ - position: relative; - z-index: 2; /* above the bg */ -} - -.fc-time-grid-event .fc-time, -.fc-time-grid-event .fc-title { - padding: 0 1px; -} - -.fc-time-grid-event .fc-time { - font-size: .85em; - white-space: nowrap; -} - -.fc-time-grid-event .fc-bg { - z-index: 1; - background: #fff; - opacity: .25; - filter: alpha(opacity=25); /* for IE */ -} - -/* short mode, where time and title are on the same line */ - -.fc-time-grid-event.fc-short .fc-content { - /* don't wrap to second line (now that contents will be inline) */ - white-space: nowrap; -} - -.fc-time-grid-event.fc-short .fc-time, -.fc-time-grid-event.fc-short .fc-title { - /* put the time and title on the same line */ - display: inline-block; - vertical-align: top; -} - -.fc-time-grid-event.fc-short .fc-time span { - display: none; /* don't display the full time text... */ -} - -.fc-time-grid-event.fc-short .fc-time:before { - content: attr(data-start); /* ...instead, display only the start time */ -} - -.fc-time-grid-event.fc-short .fc-time:after { - content: "\000A0-\000A0"; /* seperate with a dash, wrapped in nbsp's */ -} - -.fc-time-grid-event.fc-short .fc-title { - font-size: .85em; /* make the title text the same size as the time */ - padding: 0; /* undo padding from above */ -} - -/* resizer */ - -.fc-time-grid-event .fc-resizer { - position: absolute; - z-index: 3; /* above content */ - left: 0; - right: 0; - bottom: 0; - height: 8px; - overflow: hidden; - line-height: 8px; - font-size: 11px; - font-family: monospace; - text-align: center; - cursor: s-resize; -} - -.fc-time-grid-event .fc-resizer:after { - content: "="; -} diff --git a/assets/plugins/fullcalendar/fullcalendar.js b/assets/plugins/fullcalendar/fullcalendar.js deleted file mode 100644 index d52e8241..00000000 --- a/assets/plugins/fullcalendar/fullcalendar.js +++ /dev/null @@ -1,9732 +0,0 @@ -/*! - * FullCalendar v2.2.5 - * Docs & License: http://arshaw.com/fullcalendar/ - * (c) 2013 Adam Shaw - */ - -(function(factory) { - if (typeof define === 'function' && define.amd) { - define([ 'jquery', 'moment' ], factory); - } - else { - factory(jQuery, moment); - } -})(function($, moment) { - - var defaults = { - - titleRangeSeparator: ' \u2014 ', // emphasized dash - monthYearFormat: 'MMMM YYYY', // required for en. other languages rely on datepicker computable option - - defaultTimedEventDuration: '02:00:00', - defaultAllDayEventDuration: { days: 1 }, - forceEventDuration: false, - nextDayThreshold: '09:00:00', // 9am - - // display - defaultView: 'month', - aspectRatio: 1.35, - header: { - left: 'title', - center: '', - right: 'today prev,next' - }, - weekends: true, - weekNumbers: false, - - weekNumberTitle: 'W', - weekNumberCalculation: 'local', - - //editable: false, - - // event ajax - lazyFetching: true, - startParam: 'start', - endParam: 'end', - timezoneParam: 'timezone', - - timezone: false, - - //allDayDefault: undefined, - - // locale - isRTL: false, - defaultButtonText: { - prev: "prev", - next: "next", - prevYear: "prev year", - nextYear: "next year", - today: 'today', - month: 'month', - week: 'week', - day: 'day' - }, - - buttonIcons: { - prev: 'left-single-arrow', - next: 'right-single-arrow', - prevYear: 'left-double-arrow', - nextYear: 'right-double-arrow' - }, - - // jquery-ui theming - theme: false, - themeButtonIcons: { - prev: 'circle-triangle-w', - next: 'circle-triangle-e', - prevYear: 'seek-prev', - nextYear: 'seek-next' - }, - - dragOpacity: .75, - dragRevertDuration: 500, - dragScroll: true, - - //selectable: false, - unselectAuto: true, - - dropAccept: '*', - - eventLimit: false, - eventLimitText: 'more', - eventLimitClick: 'popover', - dayPopoverFormat: 'LL', - - handleWindowResize: true, - windowResizeDelay: 200 // milliseconds before an updateSize happens - -}; - - -var englishDefaults = { - dayPopoverFormat: 'dddd, MMMM D' -}; - - -// right-to-left defaults -var rtlDefaults = { - header: { - left: 'next,prev today', - center: '', - right: 'title' - }, - buttonIcons: { - prev: 'right-single-arrow', - next: 'left-single-arrow', - prevYear: 'right-double-arrow', - nextYear: 'left-double-arrow' - }, - themeButtonIcons: { - prev: 'circle-triangle-e', - next: 'circle-triangle-w', - nextYear: 'seek-prev', - prevYear: 'seek-next' - } -}; - - var fc = $.fullCalendar = { version: "2.2.5" }; -var fcViews = fc.views = {}; - - -$.fn.fullCalendar = function(options) { - var args = Array.prototype.slice.call(arguments, 1); // for a possible method call - var res = this; // what this function will return (this jQuery object by default) - - this.each(function(i, _element) { // loop each DOM element involved - var element = $(_element); - var calendar = element.data('fullCalendar'); // get the existing calendar object (if any) - var singleRes; // the returned value of this single method call - - // a method call - if (typeof options === 'string') { - if (calendar && $.isFunction(calendar[options])) { - singleRes = calendar[options].apply(calendar, args); - if (!i) { - res = singleRes; // record the first method call result - } - if (options === 'destroy') { // for the destroy method, must remove Calendar object data - element.removeData('fullCalendar'); - } - } - } - // a new calendar initialization - else if (!calendar) { // don't initialize twice - calendar = new Calendar(element, options); - element.data('fullCalendar', calendar); - calendar.render(); - } - }); - - return res; -}; - - -// function for adding/overriding defaults -function setDefaults(d) { - mergeOptions(defaults, d); -} - - -// Recursively combines option hash-objects. -// Better than `$.extend(true, ...)` because arrays are not traversed/copied. -// -// called like: -// mergeOptions(target, obj1, obj2, ...) -// -function mergeOptions(target) { - - function mergeIntoTarget(name, value) { - if ($.isPlainObject(value) && $.isPlainObject(target[name]) && !isForcedAtomicOption(name)) { - // merge into a new object to avoid destruction - target[name] = mergeOptions({}, target[name], value); // combine. `value` object takes precedence - } - else if (value !== undefined) { // only use values that are set and not undefined - target[name] = value; - } - } - - for (var i=1; i<arguments.length; i++) { - $.each(arguments[i], mergeIntoTarget); - } - - return target; -} - - -// overcome sucky view-option-hash and option-merging behavior messing with options it shouldn't -function isForcedAtomicOption(name) { - // Any option that ends in "Time" or "Duration" is probably a Duration, - // and these will commonly be specified as plain objects, which we don't want to mess up. - return /(Time|Duration)$/.test(name); -} -// FIX: find a different solution for view-option-hashes and have a whitelist -// for options that can be recursively merged. - - var langOptionHash = fc.langs = {}; // initialize and expose - - -// TODO: document the structure and ordering of a FullCalendar lang file -// TODO: rename everything "lang" to "locale", like what the moment project did - - -// Initialize jQuery UI datepicker translations while using some of the translations -// Will set this as the default language for datepicker. -fc.datepickerLang = function(langCode, dpLangCode, dpOptions) { - - // get the FullCalendar internal option hash for this language. create if necessary - var fcOptions = langOptionHash[langCode] || (langOptionHash[langCode] = {}); - - // transfer some simple options from datepicker to fc - fcOptions.isRTL = dpOptions.isRTL; - fcOptions.weekNumberTitle = dpOptions.weekHeader; - - // compute some more complex options from datepicker - $.each(dpComputableOptions, function(name, func) { - fcOptions[name] = func(dpOptions); - }); - - // is jQuery UI Datepicker is on the page? - if ($.datepicker) { - - // Register the language data. - // FullCalendar and MomentJS use language codes like "pt-br" but Datepicker - // does it like "pt-BR" or if it doesn't have the language, maybe just "pt". - // Make an alias so the language can be referenced either way. - $.datepicker.regional[dpLangCode] = - $.datepicker.regional[langCode] = // alias - dpOptions; - - // Alias 'en' to the default language data. Do this every time. - $.datepicker.regional.en = $.datepicker.regional['']; - - // Set as Datepicker's global defaults. - $.datepicker.setDefaults(dpOptions); - } -}; - - -// Sets FullCalendar-specific translations. Will set the language as the global default. -fc.lang = function(langCode, newFcOptions) { - var fcOptions; - var momOptions; - - // get the FullCalendar internal option hash for this language. create if necessary - fcOptions = langOptionHash[langCode] || (langOptionHash[langCode] = {}); - - // provided new options for this language? merge them in - if (newFcOptions) { - mergeOptions(fcOptions, newFcOptions); - } - - // compute language options that weren't defined. - // always do this. newFcOptions can be undefined when initializing from i18n file, - // so no way to tell if this is an initialization or a default-setting. - momOptions = getMomentLocaleData(langCode); // will fall back to en - $.each(momComputableOptions, function(name, func) { - if (fcOptions[name] === undefined) { - fcOptions[name] = func(momOptions, fcOptions); - } - }); - - // set it as the default language for FullCalendar - defaults.lang = langCode; -}; - - -// NOTE: can't guarantee any of these computations will run because not every language has datepicker -// configs, so make sure there are English fallbacks for these in the defaults file. -var dpComputableOptions = { - - defaultButtonText: function(dpOptions) { - return { - // the translations sometimes wrongly contain HTML entities - prev: stripHtmlEntities(dpOptions.prevText), - next: stripHtmlEntities(dpOptions.nextText), - today: stripHtmlEntities(dpOptions.currentText) - }; - }, - - // Produces format strings like "MMMM YYYY" -> "September 2014" - monthYearFormat: function(dpOptions) { - return dpOptions.showMonthAfterYear ? - 'YYYY[' + dpOptions.yearSuffix + '] MMMM' : - 'MMMM YYYY[' + dpOptions.yearSuffix + ']'; - } - -}; - -var momComputableOptions = { - - // Produces format strings like "ddd MM/DD" -> "Fri 12/10" - dayOfMonthFormat: function(momOptions, fcOptions) { - var format = momOptions.longDateFormat('l'); // for the format like "M/D/YYYY" - - // strip the year off the edge, as well as other misc non-whitespace chars - format = format.replace(/^Y+[^\w\s]*|[^\w\s]*Y+$/g, ''); - - if (fcOptions.isRTL) { - format += ' ddd'; // for RTL, add day-of-week to end - } - else { - format = 'ddd ' + format; // for LTR, add day-of-week to beginning - } - return format; - }, - - // Produces format strings like "H(:mm)a" -> "6pm" or "6:30pm" - smallTimeFormat: function(momOptions) { - return momOptions.longDateFormat('LT') - .replace(':mm', '(:mm)') - .replace(/(\Wmm)$/, '($1)') // like above, but for foreign langs - .replace(/\s*a$/i, 'a'); // convert AM/PM/am/pm to lowercase. remove any spaces beforehand - }, - - // Produces format strings like "H(:mm)t" -> "6p" or "6:30p" - extraSmallTimeFormat: function(momOptions) { - return momOptions.longDateFormat('LT') - .replace(':mm', '(:mm)') - .replace(/(\Wmm)$/, '($1)') // like above, but for foreign langs - .replace(/\s*a$/i, 't'); // convert to AM/PM/am/pm to lowercase one-letter. remove any spaces beforehand - }, - - // Produces format strings like "H:mm" -> "6:30" (with no AM/PM) - noMeridiemTimeFormat: function(momOptions) { - return momOptions.longDateFormat('LT') - .replace(/\s*a$/i, ''); // remove trailing AM/PM - } - -}; - - -// Returns moment's internal locale data. If doesn't exist, returns English. -// Works with moment-pre-2.8 -function getMomentLocaleData(langCode) { - var func = moment.localeData || moment.langData; - return func.call(moment, langCode) || - func.call(moment, 'en'); // the newer localData could return null, so fall back to en -} - - -// Initialize English by forcing computation of moment-derived options. -// Also, sets it as the default. -fc.lang('en', englishDefaults); - -// exports -fc.intersectionToSeg = intersectionToSeg; -fc.applyAll = applyAll; -fc.debounce = debounce; - - -/* FullCalendar-specific DOM Utilities -----------------------------------------------------------------------------------------------------------------------*/ - - -// Given the scrollbar widths of some other container, create borders/margins on rowEls in order to match the left -// and right space that was offset by the scrollbars. A 1-pixel border first, then margin beyond that. -function compensateScroll(rowEls, scrollbarWidths) { - if (scrollbarWidths.left) { - rowEls.css({ - 'border-left-width': 1, - 'margin-left': scrollbarWidths.left - 1 - }); - } - if (scrollbarWidths.right) { - rowEls.css({ - 'border-right-width': 1, - 'margin-right': scrollbarWidths.right - 1 - }); - } -} - - -// Undoes compensateScroll and restores all borders/margins -function uncompensateScroll(rowEls) { - rowEls.css({ - 'margin-left': '', - 'margin-right': '', - 'border-left-width': '', - 'border-right-width': '' - }); -} - - -// Make the mouse cursor express that an event is not allowed in the current area -function disableCursor() { - $('body').addClass('fc-not-allowed'); -} - - -// Returns the mouse cursor to its original look -function enableCursor() { - $('body').removeClass('fc-not-allowed'); -} - - -// Given a total available height to fill, have `els` (essentially child rows) expand to accomodate. -// By default, all elements that are shorter than the recommended height are expanded uniformly, not considering -// any other els that are already too tall. if `shouldRedistribute` is on, it considers these tall rows and -// reduces the available height. -function distributeHeight(els, availableHeight, shouldRedistribute) { - - // *FLOORING NOTE*: we floor in certain places because zoom can give inaccurate floating-point dimensions, - // and it is better to be shorter than taller, to avoid creating unnecessary scrollbars. - - var minOffset1 = Math.floor(availableHeight / els.length); // for non-last element - var minOffset2 = Math.floor(availableHeight - minOffset1 * (els.length - 1)); // for last element *FLOORING NOTE* - var flexEls = []; // elements that are allowed to expand. array of DOM nodes - var flexOffsets = []; // amount of vertical space it takes up - var flexHeights = []; // actual css height - var usedHeight = 0; - - undistributeHeight(els); // give all elements their natural height - - // find elements that are below the recommended height (expandable). - // important to query for heights in a single first pass (to avoid reflow oscillation). - els.each(function(i, el) { - var minOffset = i === els.length - 1 ? minOffset2 : minOffset1; - var naturalOffset = $(el).outerHeight(true); - - if (naturalOffset < minOffset) { - flexEls.push(el); - flexOffsets.push(naturalOffset); - flexHeights.push($(el).height()); - } - else { - // this element stretches past recommended height (non-expandable). mark the space as occupied. - usedHeight += naturalOffset; - } - }); - - // readjust the recommended height to only consider the height available to non-maxed-out rows. - if (shouldRedistribute) { - availableHeight -= usedHeight; - minOffset1 = Math.floor(availableHeight / flexEls.length); - minOffset2 = Math.floor(availableHeight - minOffset1 * (flexEls.length - 1)); // *FLOORING NOTE* - } - - // assign heights to all expandable elements - $(flexEls).each(function(i, el) { - var minOffset = i === flexEls.length - 1 ? minOffset2 : minOffset1; - var naturalOffset = flexOffsets[i]; - var naturalHeight = flexHeights[i]; - var newHeight = minOffset - (naturalOffset - naturalHeight); // subtract the margin/padding - - if (naturalOffset < minOffset) { // we check this again because redistribution might have changed things - $(el).height(newHeight); - } - }); -} - - -// Undoes distrubuteHeight, restoring all els to their natural height -function undistributeHeight(els) { - els.height(''); -} - - -// Given `els`, a jQuery set of <td> cells, find the cell with the largest natural width and set the widths of all the -// cells to be that width. -// PREREQUISITE: if you want a cell to take up width, it needs to have a single inner element w/ display:inline -function matchCellWidths(els) { - var maxInnerWidth = 0; - - els.find('> *').each(function(i, innerEl) { - var innerWidth = $(innerEl).outerWidth(); - if (innerWidth > maxInnerWidth) { - maxInnerWidth = innerWidth; - } - }); - - maxInnerWidth++; // sometimes not accurate of width the text needs to stay on one line. insurance - - els.width(maxInnerWidth); - - return maxInnerWidth; -} - - -// Turns a container element into a scroller if its contents is taller than the allotted height. -// Returns true if the element is now a scroller, false otherwise. -// NOTE: this method is best because it takes weird zooming dimensions into account -function setPotentialScroller(containerEl, height) { - containerEl.height(height).addClass('fc-scroller'); - - // are scrollbars needed? - if (containerEl[0].scrollHeight - 1 > containerEl[0].clientHeight) { // !!! -1 because IE is often off-by-one :( - return true; - } - - unsetScroller(containerEl); // undo - return false; -} - - -// Takes an element that might have been a scroller, and turns it back into a normal element. -function unsetScroller(containerEl) { - containerEl.height('').removeClass('fc-scroller'); -} - - -/* General DOM Utilities -----------------------------------------------------------------------------------------------------------------------*/ - - -// borrowed from https://github.com/jquery/jquery-ui/blob/1.11.0/ui/core.js#L51 -function getScrollParent(el) { - var position = el.css('position'), - scrollParent = el.parents().filter(function() { - var parent = $(this); - return (/(auto|scroll)/).test( - parent.css('overflow') + parent.css('overflow-y') + parent.css('overflow-x') - ); - }).eq(0); - - return position === 'fixed' || !scrollParent.length ? $(el[0].ownerDocument || document) : scrollParent; -} - - -// Given a container element, return an object with the pixel values of the left/right scrollbars. -// Left scrollbars might occur on RTL browsers (IE maybe?) but I have not tested. -// PREREQUISITE: container element must have a single child with display:block -function getScrollbarWidths(container) { - var containerLeft = container.offset().left; - var containerRight = containerLeft + container.width(); - var inner = container.children(); - var innerLeft = inner.offset().left; - var innerRight = innerLeft + inner.outerWidth(); - - return { - left: innerLeft - containerLeft, - right: containerRight - innerRight - }; -} - - -// Returns a boolean whether this was a left mouse click and no ctrl key (which means right click on Mac) -function isPrimaryMouseButton(ev) { - return ev.which == 1 && !ev.ctrlKey; -} - - -/* FullCalendar-specific Misc Utilities -----------------------------------------------------------------------------------------------------------------------*/ - - -// Creates a basic segment with the intersection of the two ranges. Returns undefined if no intersection. -// Expects all dates to be normalized to the same timezone beforehand. -// TODO: move to date section? -function intersectionToSeg(subjectRange, constraintRange) { - var subjectStart = subjectRange.start; - var subjectEnd = subjectRange.end; - var constraintStart = constraintRange.start; - var constraintEnd = constraintRange.end; - var segStart, segEnd; - var isStart, isEnd; - - if (subjectEnd > constraintStart && subjectStart < constraintEnd) { // in bounds at all? - - if (subjectStart >= constraintStart) { - segStart = subjectStart.clone(); - isStart = true; - } - else { - segStart = constraintStart.clone(); - isStart = false; - } - - if (subjectEnd <= constraintEnd) { - segEnd = subjectEnd.clone(); - isEnd = true; - } - else { - segEnd = constraintEnd.clone(); - isEnd = false; - } - - return { - start: segStart, - end: segEnd, - isStart: isStart, - isEnd: isEnd - }; - } -} - - -function smartProperty(obj, name) { // get a camel-cased/namespaced property of an object - obj = obj || {}; - if (obj[name] !== undefined) { - return obj[name]; - } - var parts = name.split(/(?=[A-Z])/), - i = parts.length - 1, res; - for (; i>=0; i--) { - res = obj[parts[i].toLowerCase()]; - if (res !== undefined) { - return res; - } - } - return obj['default']; -} - - -/* Date Utilities -----------------------------------------------------------------------------------------------------------------------*/ - -var dayIDs = [ 'sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat' ]; -var intervalUnits = [ 'year', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond' ]; - - -// Diffs the two moments into a Duration where full-days are recorded first, then the remaining time. -// Moments will have their timezones normalized. -function diffDayTime(a, b) { - return moment.duration({ - days: a.clone().stripTime().diff(b.clone().stripTime(), 'days'), - ms: a.time() - b.time() // time-of-day from day start. disregards timezone - }); -} - - -// Diffs the two moments via their start-of-day (regardless of timezone). Produces whole-day durations. -function diffDay(a, b) { - return moment.duration({ - days: a.clone().stripTime().diff(b.clone().stripTime(), 'days') - }); -} - - -// Computes the larges whole-unit period of time, as a duration object. -// For example, 48 hours will be {days:2} whereas 49 hours will be {hours:49}. -// Accepts start/end, a range object, or an original duration object. -/* (never used) -function computeIntervalDuration(start, end) { - var durationInput = {}; - var i, unit; - var val; - - for (i = 0; i < intervalUnits.length; i++) { - unit = intervalUnits[i]; - val = computeIntervalAs(unit, start, end); - if (val) { - break; - } - } - - durationInput[unit] = val; - return moment.duration(durationInput); -} -*/ - - -// Computes the unit name of the largest whole-unit period of time. -// For example, 48 hours will be "days" wherewas 49 hours will be "hours". -// Accepts start/end, a range object, or an original duration object. -function computeIntervalUnit(start, end) { - var i, unit; - - for (i = 0; i < intervalUnits.length; i++) { - unit = intervalUnits[i]; - if (computeIntervalAs(unit, start, end)) { - break; - } - } - - return unit; // will be "milliseconds" if nothing else matches -} - - -// Computes the number of units the interval is cleanly comprised of. -// If the given unit does not cleanly divide the interval a whole number of times, `false` is returned. -// Accepts start/end, a range object, or an original duration object. -function computeIntervalAs(unit, start, end) { - var val; - - if (end != null) { // given start, end - val = end.diff(start, unit, true); - } - else if (moment.isDuration(start)) { // given duration - val = start.as(unit); - } - else { // given { start, end } range object - val = start.end.diff(start.start, unit, true); - } - - if (val >= 1 && isInt(val)) { - return val; - } - - return false; -} - - -function isNativeDate(input) { - return Object.prototype.toString.call(input) === '[object Date]' || input instanceof Date; -} - - -// Returns a boolean about whether the given input is a time string, like "06:40:00" or "06:00" -function isTimeString(str) { - return /^\d+\:\d+(?:\:\d+\.?(?:\d{3})?)?$/.test(str); -} - - -/* General Utilities -----------------------------------------------------------------------------------------------------------------------*/ - -var hasOwnPropMethod = {}.hasOwnProperty; - - -// Create an object that has the given prototype. Just like Object.create -function createObject(proto) { - var f = function() {}; - f.prototype = proto; - return new f(); -} - - -function copyOwnProps(src, dest) { - for (var name in src) { - if (hasOwnProp(src, name)) { - dest[name] = src[name]; - } - } -} - - -function hasOwnProp(obj, name) { - return hasOwnPropMethod.call(obj, name); -} - - -// Is the given value a non-object non-function value? -function isAtomic(val) { - return /undefined|null|boolean|number|string/.test($.type(val)); -} - - -function applyAll(functions, thisObj, args) { - if ($.isFunction(functions)) { - functions = [ functions ]; - } - if (functions) { - var i; - var ret; - for (i=0; i<functions.length; i++) { - ret = functions[i].apply(thisObj, args) || ret; - } - return ret; - } -} - - -function firstDefined() { - for (var i=0; i<arguments.length; i++) { - if (arguments[i] !== undefined) { - return arguments[i]; - } - } -} - - -function htmlEscape(s) { - return (s + '').replace(/&/g, '&amp;') - .replace(/</g, '&lt;') - .replace(/>/g, '&gt;') - .replace(/'/g, '&#039;') - .replace(/"/g, '&quot;') - .replace(/\n/g, '<br />'); -} - - -function stripHtmlEntities(text) { - return text.replace(/&.*?;/g, ''); -} - - -function capitaliseFirstLetter(str) { - return str.charAt(0).toUpperCase() + str.slice(1); -} - - -function compareNumbers(a, b) { // for .sort() - return a - b; -} - - -function isInt(n) { - return n % 1 === 0; -} - - -// Returns a function, that, as long as it continues to be invoked, will not -// be triggered. The function will be called after it stops being called for -// N milliseconds. -// https://github.com/jashkenas/underscore/blob/1.6.0/underscore.js#L714 -function debounce(func, wait) { - var timeoutId; - var args; - var context; - var timestamp; // of most recent call - var later = function() { - var last = +new Date() - timestamp; - if (last < wait && last > 0) { - timeoutId = setTimeout(later, wait - last); - } - else { - timeoutId = null; - func.apply(context, args); - if (!timeoutId) { - context = args = null; - } - } - }; - - return function() { - context = this; - args = arguments; - timestamp = +new Date(); - if (!timeoutId) { - timeoutId = setTimeout(later, wait); - } - }; -} - - var ambigDateOfMonthRegex = /^\s*\d{4}-\d\d$/; -var ambigTimeOrZoneRegex = - /^\s*\d{4}-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?)?$/; -var newMomentProto = moment.fn; // where we will attach our new methods -var oldMomentProto = $.extend({}, newMomentProto); // copy of original moment methods -var allowValueOptimization; -var setUTCValues; // function defined below -var setLocalValues; // function defined below - - -// Creating -// ------------------------------------------------------------------------------------------------- - -// Creates a new moment, similar to the vanilla moment(...) constructor, but with -// extra features (ambiguous time, enhanced formatting). When given an existing moment, -// it will function as a clone (and retain the zone of the moment). Anything else will -// result in a moment in the local zone. -fc.moment = function() { - return makeMoment(arguments); -}; - -// Sames as fc.moment, but forces the resulting moment to be in the UTC timezone. -fc.moment.utc = function() { - var mom = makeMoment(arguments, true); - - // Force it into UTC because makeMoment doesn't guarantee it - // (if given a pre-existing moment for example) - if (mom.hasTime()) { // don't give ambiguously-timed moments a UTC zone - mom.utc(); - } - - return mom; -}; - -// Same as fc.moment, but when given an ISO8601 string, the timezone offset is preserved. -// ISO8601 strings with no timezone offset will become ambiguously zoned. -fc.moment.parseZone = function() { - return makeMoment(arguments, true, true); -}; - -// Builds an enhanced moment from args. When given an existing moment, it clones. When given a -// native Date, or called with no arguments (the current time), the resulting moment will be local. -// Anything else needs to be "parsed" (a string or an array), and will be affected by: -// parseAsUTC - if there is no zone information, should we parse the input in UTC? -// parseZone - if there is zone information, should we force the zone of the moment? -function makeMoment(args, parseAsUTC, parseZone) { - var input = args[0]; - var isSingleString = args.length == 1 && typeof input === 'string'; - var isAmbigTime; - var isAmbigZone; - var ambigMatch; - var mom; - - if (moment.isMoment(input)) { - mom = moment.apply(null, args); // clone it - transferAmbigs(input, mom); // the ambig flags weren't transfered with the clone - } - else if (isNativeDate(input) || input === undefined) { - mom = moment.apply(null, args); // will be local - } - else { // "parsing" is required - isAmbigTime = false; - isAmbigZone = false; - - if (isSingleString) { - if (ambigDateOfMonthRegex.test(input)) { - // accept strings like '2014-05', but convert to the first of the month - input += '-01'; - args = [ input ]; // for when we pass it on to moment's constructor - isAmbigTime = true; - isAmbigZone = true; - } - else if ((ambigMatch = ambigTimeOrZoneRegex.exec(input))) { - isAmbigTime = !ambigMatch[5]; // no time part? - isAmbigZone = true; - } - } - else if ($.isArray(input)) { - // arrays have no timezone information, so assume ambiguous zone - isAmbigZone = true; - } - // otherwise, probably a string with a format - - if (parseAsUTC || isAmbigTime) { - mom = moment.utc.apply(moment, args); - } - else { - mom = moment.apply(null, args); - } - - if (isAmbigTime) { - mom._ambigTime = true; - mom._ambigZone = true; // ambiguous time always means ambiguous zone - } - else if (parseZone) { // let's record the inputted zone somehow - if (isAmbigZone) { - mom._ambigZone = true; - } - else if (isSingleString) { - mom.zone(input); // if not a valid zone, will assign UTC - } - } - } - - mom._fullCalendar = true; // flag for extended functionality - - return mom; -} - - -// A clone method that works with the flags related to our enhanced functionality. -// In the future, use moment.momentProperties -newMomentProto.clone = function() { - var mom = oldMomentProto.clone.apply(this, arguments); - - // these flags weren't transfered with the clone - transferAmbigs(this, mom); - if (this._fullCalendar) { - mom._fullCalendar = true; - } - - return mom; -}; - - -// Time-of-day -// ------------------------------------------------------------------------------------------------- - -// GETTER -// Returns a Duration with the hours/minutes/seconds/ms values of the moment. -// If the moment has an ambiguous time, a duration of 00:00 will be returned. -// -// SETTER -// You can supply a Duration, a Moment, or a Duration-like argument. -// When setting the time, and the moment has an ambiguous time, it then becomes unambiguous. -newMomentProto.time = function(time) { - - // Fallback to the original method (if there is one) if this moment wasn't created via FullCalendar. - // `time` is a generic enough method name where this precaution is necessary to avoid collisions w/ other plugins. - if (!this._fullCalendar) { - return oldMomentProto.time.apply(this, arguments); - } - - if (time == null) { // getter - return moment.duration({ - hours: this.hours(), - minutes: this.minutes(), - seconds: this.seconds(), - milliseconds: this.milliseconds() - }); - } - else { // setter - - this._ambigTime = false; // mark that the moment now has a time - - if (!moment.isDuration(time) && !moment.isMoment(time)) { - time = moment.duration(time); - } - - // The day value should cause overflow (so 24 hours becomes 00:00:00 of next day). - // Only for Duration times, not Moment times. - var dayHours = 0; - if (moment.isDuration(time)) { - dayHours = Math.floor(time.asDays()) * 24; - } - - // We need to set the individual fields. - // Can't use startOf('day') then add duration. In case of DST at start of day. - return this.hours(dayHours + time.hours()) - .minutes(time.minutes()) - .seconds(time.seconds()) - .milliseconds(time.milliseconds()); - } -}; - -// Converts the moment to UTC, stripping out its time-of-day and timezone offset, -// but preserving its YMD. A moment with a stripped time will display no time -// nor timezone offset when .format() is called. -newMomentProto.stripTime = function() { - var a; - - if (!this._ambigTime) { - - // get the values before any conversion happens - a = this.toArray(); // array of y/m/d/h/m/s/ms - - this.utc(); // set the internal UTC flag (will clear the ambig flags) - setUTCValues(this, a.slice(0, 3)); // set the year/month/date. time will be zero - - // Mark the time as ambiguous. This needs to happen after the .utc() call, which calls .zone(), - // which clears all ambig flags. Same with setUTCValues with moment-timezone. - this._ambigTime = true; - this._ambigZone = true; // if ambiguous time, also ambiguous timezone offset - } - - return this; // for chaining -}; - -// Returns if the moment has a non-ambiguous time (boolean) -newMomentProto.hasTime = function() { - return !this._ambigTime; -}; - - -// Timezone -// ------------------------------------------------------------------------------------------------- - -// Converts the moment to UTC, stripping out its timezone offset, but preserving its -// YMD and time-of-day. A moment with a stripped timezone offset will display no -// timezone offset when .format() is called. -newMomentProto.stripZone = function() { - var a, wasAmbigTime; - - if (!this._ambigZone) { - - // get the values before any conversion happens - a = this.toArray(); // array of y/m/d/h/m/s/ms - wasAmbigTime = this._ambigTime; - - this.utc(); // set the internal UTC flag (will clear the ambig flags) - setUTCValues(this, a); // will set the year/month/date/hours/minutes/seconds/ms - - if (wasAmbigTime) { - // the above call to .utc()/.zone() unfortunately clears the ambig flags, so reassign - this._ambigTime = true; - } - - // Mark the zone as ambiguous. This needs to happen after the .utc() call, which calls .zone(), - // which clears all ambig flags. Same with setUTCValues with moment-timezone. - this._ambigZone = true; - } - - return this; // for chaining -}; - -// Returns of the moment has a non-ambiguous timezone offset (boolean) -newMomentProto.hasZone = function() { - return !this._ambigZone; -}; - -// this method implicitly marks a zone (will get called upon .utc() and .local()) -newMomentProto.zone = function(tzo) { - - if (tzo != null) { // setter - // these assignments needs to happen before the original zone method is called. - // I forget why, something to do with a browser crash. - this._ambigTime = false; - this._ambigZone = false; - } - - return oldMomentProto.zone.apply(this, arguments); -}; - -// this method implicitly marks a zone -newMomentProto.local = function() { - var a = this.toArray(); // year,month,date,hours,minutes,seconds,ms as an array - var wasAmbigZone = this._ambigZone; - - oldMomentProto.local.apply(this, arguments); // will clear ambig flags - - if (wasAmbigZone) { - // If the moment was ambiguously zoned, the date fields were stored as UTC. - // We want to preserve these, but in local time. - setLocalValues(this, a); - } - - return this; // for chaining -}; - - -// Formatting -// ------------------------------------------------------------------------------------------------- - -newMomentProto.format = function() { - if (this._fullCalendar && arguments[0]) { // an enhanced moment? and a format string provided? - return formatDate(this, arguments[0]); // our extended formatting - } - if (this._ambigTime) { - return oldMomentFormat(this, 'YYYY-MM-DD'); - } - if (this._ambigZone) { - return oldMomentFormat(this, 'YYYY-MM-DD[T]HH:mm:ss'); - } - return oldMomentProto.format.apply(this, arguments); -}; - -newMomentProto.toISOString = function() { - if (this._ambigTime) { - return oldMomentFormat(this, 'YYYY-MM-DD'); - } - if (this._ambigZone) { - return oldMomentFormat(this, 'YYYY-MM-DD[T]HH:mm:ss'); - } - return oldMomentProto.toISOString.apply(this, arguments); -}; - - -// Querying -// ------------------------------------------------------------------------------------------------- - -// Is the moment within the specified range? `end` is exclusive. -// FYI, this method is not a standard Moment method, so always do our enhanced logic. -newMomentProto.isWithin = function(start, end) { - var a = commonlyAmbiguate([ this, start, end ]); - return a[0] >= a[1] && a[0] < a[2]; -}; - -// When isSame is called with units, timezone ambiguity is normalized before the comparison happens. -// If no units specified, the two moments must be identically the same, with matching ambig flags. -newMomentProto.isSame = function(input, units) { - var a; - - // only do custom logic if this is an enhanced moment - if (!this._fullCalendar) { - return oldMomentProto.isSame.apply(this, arguments); - } - - if (units) { - a = commonlyAmbiguate([ this, input ], true); // normalize timezones but don't erase times - return oldMomentProto.isSame.call(a[0], a[1], units); - } - else { - input = fc.moment.parseZone(input); // normalize input - return oldMomentProto.isSame.call(this, input) && - Boolean(this._ambigTime) === Boolean(input._ambigTime) && - Boolean(this._ambigZone) === Boolean(input._ambigZone); - } -}; - -// Make these query methods work with ambiguous moments -$.each([ - 'isBefore', - 'isAfter' -], function(i, methodName) { - newMomentProto[methodName] = function(input, units) { - var a; - - // only do custom logic if this is an enhanced moment - if (!this._fullCalendar) { - return oldMomentProto[methodName].apply(this, arguments); - } - - a = commonlyAmbiguate([ this, input ]); - return oldMomentProto[methodName].call(a[0], a[1], units); - }; -}); - - -// Misc Internals -// ------------------------------------------------------------------------------------------------- - -// given an array of moment-like inputs, return a parallel array w/ moments similarly ambiguated. -// for example, of one moment has ambig time, but not others, all moments will have their time stripped. -// set `preserveTime` to `true` to keep times, but only normalize zone ambiguity. -// returns the original moments if no modifications are necessary. -function commonlyAmbiguate(inputs, preserveTime) { - var anyAmbigTime = false; - var anyAmbigZone = false; - var len = inputs.length; - var moms = []; - var i, mom; - - // parse inputs into real moments and query their ambig flags - for (i = 0; i < len; i++) { - mom = inputs[i]; - if (!moment.isMoment(mom)) { - mom = fc.moment.parseZone(mom); - } - anyAmbigTime = anyAmbigTime || mom._ambigTime; - anyAmbigZone = anyAmbigZone || mom._ambigZone; - moms.push(mom); - } - - // strip each moment down to lowest common ambiguity - // use clones to avoid modifying the original moments - for (i = 0; i < len; i++) { - mom = moms[i]; - if (!preserveTime && anyAmbigTime && !mom._ambigTime) { - moms[i] = mom.clone().stripTime(); - } - else if (anyAmbigZone && !mom._ambigZone) { - moms[i] = mom.clone().stripZone(); - } - } - - return moms; -} - -// Transfers all the flags related to ambiguous time/zone from the `src` moment to the `dest` moment -function transferAmbigs(src, dest) { - if (src._ambigTime) { - dest._ambigTime = true; - } - else if (dest._ambigTime) { - dest._ambigTime = false; - } - - if (src._ambigZone) { - dest._ambigZone = true; - } - else if (dest._ambigZone) { - dest._ambigZone = false; - } -} - - -// Sets the year/month/date/etc values of the moment from the given array. -// Inefficient because it calls each individual setter. -function setMomentValues(mom, a) { - mom.year(a[0] || 0) - .month(a[1] || 0) - .date(a[2] || 0) - .hours(a[3] || 0) - .minutes(a[4] || 0) - .seconds(a[5] || 0) - .milliseconds(a[6] || 0); -} - -// Can we set the moment's internal date directly? -allowValueOptimization = '_d' in moment() && 'updateOffset' in moment; - -// Utility function. Accepts a moment and an array of the UTC year/month/date/etc values to set. -// Assumes the given moment is already in UTC mode. -setUTCValues = allowValueOptimization ? function(mom, a) { - // simlate what moment's accessors do - mom._d.setTime(Date.UTC.apply(Date, a)); - moment.updateOffset(mom, false); // keepTime=false -} : setMomentValues; - -// Utility function. Accepts a moment and an array of the local year/month/date/etc values to set. -// Assumes the given moment is already in local mode. -setLocalValues = allowValueOptimization ? function(mom, a) { - // simlate what moment's accessors do - mom._d.setTime(+new Date( // FYI, there is now way to apply an array of args to a constructor - a[0] || 0, - a[1] || 0, - a[2] || 0, - a[3] || 0, - a[4] || 0, - a[5] || 0, - a[6] || 0 - )); - moment.updateOffset(mom, false); // keepTime=false -} : setMomentValues; - -// Single Date Formatting -// ------------------------------------------------------------------------------------------------- - - -// call this if you want Moment's original format method to be used -function oldMomentFormat(mom, formatStr) { - return oldMomentProto.format.call(mom, formatStr); // oldMomentProto defined in moment-ext.js -} - - -// Formats `date` with a Moment formatting string, but allow our non-zero areas and -// additional token. -function formatDate(date, formatStr) { - return formatDateWithChunks(date, getFormatStringChunks(formatStr)); -} - - -function formatDateWithChunks(date, chunks) { - var s = ''; - var i; - - for (i=0; i<chunks.length; i++) { - s += formatDateWithChunk(date, chunks[i]); - } - - return s; -} - - -// addition formatting tokens we want recognized -var tokenOverrides = { - t: function(date) { // "a" or "p" - return oldMomentFormat(date, 'a').charAt(0); - }, - T: function(date) { // "A" or "P" - return oldMomentFormat(date, 'A').charAt(0); - } -}; - - -function formatDateWithChunk(date, chunk) { - var token; - var maybeStr; - - if (typeof chunk === 'string') { // a literal string - return chunk; - } - else if ((token = chunk.token)) { // a token, like "YYYY" - if (tokenOverrides[token]) { - return tokenOverrides[token](date); // use our custom token - } - return oldMomentFormat(date, token); - } - else if (chunk.maybe) { // a grouping of other chunks that must be non-zero - maybeStr = formatDateWithChunks(date, chunk.maybe); - if (maybeStr.match(/[1-9]/)) { - return maybeStr; - } - } - - return ''; -} - - -// Date Range Formatting -// ------------------------------------------------------------------------------------------------- -// TODO: make it work with timezone offset - -// Using a formatting string meant for a single date, generate a range string, like -// "Sep 2 - 9 2013", that intelligently inserts a separator where the dates differ. -// If the dates are the same as far as the format string is concerned, just return a single -// rendering of one date, without any separator. -function formatRange(date1, date2, formatStr, separator, isRTL) { - var localeData; - - date1 = fc.moment.parseZone(date1); - date2 = fc.moment.parseZone(date2); - - localeData = (date1.localeData || date1.lang).call(date1); // works with moment-pre-2.8 - - // Expand localized format strings, like "LL" -> "MMMM D YYYY" - formatStr = localeData.longDateFormat(formatStr) || formatStr; - // BTW, this is not important for `formatDate` because it is impossible to put custom tokens - // or non-zero areas in Moment's localized format strings. - - separator = separator || ' - '; - - return formatRangeWithChunks( - date1, - date2, - getFormatStringChunks(formatStr), - separator, - isRTL - ); -} -fc.formatRange = formatRange; // expose - - -function formatRangeWithChunks(date1, date2, chunks, separator, isRTL) { - var chunkStr; // the rendering of the chunk - var leftI; - var leftStr = ''; - var rightI; - var rightStr = ''; - var middleI; - var middleStr1 = ''; - var middleStr2 = ''; - var middleStr = ''; - - // Start at the leftmost side of the formatting string and continue until you hit a token - // that is not the same between dates. - for (leftI=0; leftI<chunks.length; leftI++) { - chunkStr = formatSimilarChunk(date1, date2, chunks[leftI]); - if (chunkStr === false) { - break; - } - leftStr += chunkStr; - } - - // Similarly, start at the rightmost side of the formatting string and move left - for (rightI=chunks.length-1; rightI>leftI; rightI--) { - chunkStr = formatSimilarChunk(date1, date2, chunks[rightI]); - if (chunkStr === false) { - break; - } - rightStr = chunkStr + rightStr; - } - - // The area in the middle is different for both of the dates. - // Collect them distinctly so we can jam them together later. - for (middleI=leftI; middleI<=rightI; middleI++) { - middleStr1 += formatDateWithChunk(date1, chunks[middleI]); - middleStr2 += formatDateWithChunk(date2, chunks[middleI]); - } - - if (middleStr1 || middleStr2) { - if (isRTL) { - middleStr = middleStr2 + separator + middleStr1; - } - else { - middleStr = middleStr1 + separator + middleStr2; - } - } - - return leftStr + middleStr + rightStr; -} - - -var similarUnitMap = { - Y: 'year', - M: 'month', - D: 'day', // day of month - d: 'day', // day of week - // prevents a separator between anything time-related... - A: 'second', // AM/PM - a: 'second', // am/pm - T: 'second', // A/P - t: 'second', // a/p - H: 'second', // hour (24) - h: 'second', // hour (12) - m: 'second', // minute - s: 'second' // second -}; -// TODO: week maybe? - - -// Given a formatting chunk, and given that both dates are similar in the regard the -// formatting chunk is concerned, format date1 against `chunk`. Otherwise, return `false`. -function formatSimilarChunk(date1, date2, chunk) { - var token; - var unit; - - if (typeof chunk === 'string') { // a literal string - return chunk; - } - else if ((token = chunk.token)) { - unit = similarUnitMap[token.charAt(0)]; - // are the dates the same for this unit of measurement? - if (unit && date1.isSame(date2, unit)) { - return oldMomentFormat(date1, token); // would be the same if we used `date2` - // BTW, don't support custom tokens - } - } - - return false; // the chunk is NOT the same for the two dates - // BTW, don't support splitting on non-zero areas -} - - -// Chunking Utils -// ------------------------------------------------------------------------------------------------- - - -var formatStringChunkCache = {}; - - -function getFormatStringChunks(formatStr) { - if (formatStr in formatStringChunkCache) { - return formatStringChunkCache[formatStr]; - } - return (formatStringChunkCache[formatStr] = chunkFormatString(formatStr)); -} - - -// Break the formatting string into an array of chunks -function chunkFormatString(formatStr) { - var chunks = []; - var chunker = /\[([^\]]*)\]|\(([^\)]*)\)|(LT|(\w)\4*o?)|([^\w\[\(]+)/g; // TODO: more descrimination - var match; - - while ((match = chunker.exec(formatStr))) { - if (match[1]) { // a literal string inside [ ... ] - chunks.push(match[1]); - } - else if (match[2]) { // non-zero formatting inside ( ... ) - chunks.push({ maybe: chunkFormatString(match[2]) }); - } - else if (match[3]) { // a formatting token - chunks.push({ token: match[3] }); - } - else if (match[5]) { // an unenclosed literal string - chunks.push(match[5]); - } - } - - return chunks; -} - - fc.Class = Class; // export - -// class that all other classes will inherit from -function Class() { } - -// called upon a class to create a subclass -Class.extend = function(members) { - var superClass = this; - var subClass; - - members = members || {}; - - // ensure a constructor for the subclass, forwarding all arguments to the super-constructor if it doesn't exist - if (hasOwnProp(members, 'constructor')) { - subClass = members.constructor; - } - if (typeof subClass !== 'function') { - subClass = members.constructor = function() { - superClass.apply(this, arguments); - }; - } - - // build the base prototype for the subclass, which is an new object chained to the superclass's prototype - subClass.prototype = createObject(superClass.prototype); - - // copy each member variable/method onto the the subclass's prototype - copyOwnProps(members, subClass.prototype); - - // copy over all class variables/methods to the subclass, such as `extend` and `mixin` - copyOwnProps(superClass, subClass); - - return subClass; -}; - -// adds new member variables/methods to the class's prototype. -// can be called with another class, or a plain object hash containing new members. -Class.mixin = function(members) { - copyOwnProps(members.prototype || members, this.prototype); -}; - /* A rectangular panel that is absolutely positioned over other content ------------------------------------------------------------------------------------------------------------------------- -Options: - - className (string) - - content (HTML string or jQuery element set) - - parentEl - - top - - left - - right (the x coord of where the right edge should be. not a "CSS" right) - - autoHide (boolean) - - show (callback) - - hide (callback) -*/ - -var Popover = Class.extend({ - - isHidden: true, - options: null, - el: null, // the container element for the popover. generated by this object - documentMousedownProxy: null, // document mousedown handler bound to `this` - margin: 10, // the space required between the popover and the edges of the scroll container - - - constructor: function(options) { - this.options = options || {}; - }, - - - // Shows the popover on the specified position. Renders it if not already - show: function() { - if (this.isHidden) { - if (!this.el) { - this.render(); - } - this.el.show(); - this.position(); - this.isHidden = false; - this.trigger('show'); - } - }, - - - // Hides the popover, through CSS, but does not remove it from the DOM - hide: function() { - if (!this.isHidden) { - this.el.hide(); - this.isHidden = true; - this.trigger('hide'); - } - }, - - - // Creates `this.el` and renders content inside of it - render: function() { - var _this = this; - var options = this.options; - - this.el = $('<div class="fc-popover"/>') - .addClass(options.className || '') - .css({ - // position initially to the top left to avoid creating scrollbars - top: 0, - left: 0 - }) - .append(options.content) - .appendTo(options.parentEl); - - // when a click happens on anything inside with a 'fc-close' className, hide the popover - this.el.on('click', '.fc-close', function() { - _this.hide(); - }); - - if (options.autoHide) { - $(document).on('mousedown', this.documentMousedownProxy = $.proxy(this, 'documentMousedown')); - } - }, - - - // Triggered when the user clicks *anywhere* in the document, for the autoHide feature - documentMousedown: function(ev) { - // only hide the popover if the click happened outside the popover - if (this.el && !$(ev.target).closest(this.el).length) { - this.hide(); - } - }, - - - // Hides and unregisters any handlers - destroy: function() { - this.hide(); - - if (this.el) { - this.el.remove(); - this.el = null; - } - - $(document).off('mousedown', this.documentMousedownProxy); - }, - - - // Positions the popover optimally, using the top/left/right options - position: function() { - var options = this.options; - var origin = this.el.offsetParent().offset(); - var width = this.el.outerWidth(); - var height = this.el.outerHeight(); - var windowEl = $(window); - var viewportEl = getScrollParent(this.el); - var viewportTop; - var viewportLeft; - var viewportOffset; - var top; // the "position" (not "offset") values for the popover - var left; // - - // compute top and left - top = options.top || 0; - if (options.left !== undefined) { - left = options.left; - } - else if (options.right !== undefined) { - left = options.right - width; // derive the left value from the right value - } - else { - left = 0; - } - - if (viewportEl.is(window) || viewportEl.is(document)) { // normalize getScrollParent's result - viewportEl = windowEl; - viewportTop = 0; // the window is always at the top left - viewportLeft = 0; // (and .offset() won't work if called here) - } - else { - viewportOffset = viewportEl.offset(); - viewportTop = viewportOffset.top; - viewportLeft = viewportOffset.left; - } - - // if the window is scrolled, it causes the visible area to be further down - viewportTop += windowEl.scrollTop(); - viewportLeft += windowEl.scrollLeft(); - - // constrain to the view port. if constrained by two edges, give precedence to top/left - if (options.viewportConstrain !== false) { - top = Math.min(top, viewportTop + viewportEl.outerHeight() - height - this.margin); - top = Math.max(top, viewportTop + this.margin); - left = Math.min(left, viewportLeft + viewportEl.outerWidth() - width - this.margin); - left = Math.max(left, viewportLeft + this.margin); - } - - this.el.css({ - top: top - origin.top, - left: left - origin.left - }); - }, - - - // Triggers a callback. Calls a function in the option hash of the same name. - // Arguments beyond the first `name` are forwarded on. - // TODO: better code reuse for this. Repeat code - trigger: function(name) { - if (this.options[name]) { - this.options[name].apply(this, Array.prototype.slice.call(arguments, 1)); - } - } - -}); - - /* A "coordinate map" converts pixel coordinates into an associated cell, which has an associated date ------------------------------------------------------------------------------------------------------------------------- -Common interface: - - CoordMap.prototype = { - build: function() {}, - getCell: function(x, y) {} - }; - -*/ - -/* Coordinate map for a grid component -----------------------------------------------------------------------------------------------------------------------*/ - -var GridCoordMap = Class.extend({ - - grid: null, // reference to the Grid - rowCoords: null, // array of {top,bottom} objects - colCoords: null, // array of {left,right} objects - - containerEl: null, // container element that all coordinates are constrained to. optionally assigned - minX: null, - maxX: null, // exclusive - minY: null, - maxY: null, // exclusive - - - constructor: function(grid) { - this.grid = grid; - }, - - - // Queries the grid for the coordinates of all the cells - build: function() { - this.rowCoords = this.grid.computeRowCoords(); - this.colCoords = this.grid.computeColCoords(); - this.computeBounds(); - }, - - - // Clears the coordinates data to free up memory - clear: function() { - this.rowCoords = null; - this.colCoords = null; - }, - - - // Given a coordinate of the document, gets the associated cell. If no cell is underneath, returns null - getCell: function(x, y) { - var rowCoords = this.rowCoords; - var colCoords = this.colCoords; - var hitRow = null; - var hitCol = null; - var i, coords; - var cell; - - if (this.inBounds(x, y)) { - - for (i = 0; i < rowCoords.length; i++) { - coords = rowCoords[i]; - if (y >= coords.top && y < coords.bottom) { - hitRow = i; - break; - } - } - - for (i = 0; i < colCoords.length; i++) { - coords = colCoords[i]; - if (x >= coords.left && x < coords.right) { - hitCol = i; - break; - } - } - - if (hitRow !== null && hitCol !== null) { - cell = this.grid.getCell(hitRow, hitCol); - cell.grid = this.grid; // for DragListener's isCellsEqual. dragging between grids - return cell; - } - } - - return null; - }, - - - // If there is a containerEl, compute the bounds into min/max values - computeBounds: function() { - var containerOffset; - - if (this.containerEl) { - containerOffset = this.containerEl.offset(); - this.minX = containerOffset.left; - this.maxX = containerOffset.left + this.containerEl.outerWidth(); - this.minY = containerOffset.top; - this.maxY = containerOffset.top + this.containerEl.outerHeight(); - } - }, - - - // Determines if the given coordinates are in bounds. If no `containerEl`, always true - inBounds: function(x, y) { - if (this.containerEl) { - return x >= this.minX && x < this.maxX && y >= this.minY && y < this.maxY; - } - return true; - } - -}); - - -/* Coordinate map that is a combination of multiple other coordinate maps -----------------------------------------------------------------------------------------------------------------------*/ - -var ComboCoordMap = Class.extend({ - - coordMaps: null, // an array of CoordMaps - - - constructor: function(coordMaps) { - this.coordMaps = coordMaps; - }, - - - // Builds all coordMaps - build: function() { - var coordMaps = this.coordMaps; - var i; - - for (i = 0; i < coordMaps.length; i++) { - coordMaps[i].build(); - } - }, - - - // Queries all coordMaps for the cell underneath the given coordinates, returning the first result - getCell: function(x, y) { - var coordMaps = this.coordMaps; - var cell = null; - var i; - - for (i = 0; i < coordMaps.length && !cell; i++) { - cell = coordMaps[i].getCell(x, y); - } - - return cell; - }, - - - // Clears all coordMaps - clear: function() { - var coordMaps = this.coordMaps; - var i; - - for (i = 0; i < coordMaps.length; i++) { - coordMaps[i].clear(); - } - } - -}); - - /* Tracks mouse movements over a CoordMap and raises events about which cell the mouse is over. -----------------------------------------------------------------------------------------------------------------------*/ -// TODO: very useful to have a handler that gets called upon cellOut OR when dragging stops (for cleanup) - -var DragListener = Class.extend({ - - coordMap: null, - options: null, - - isListening: false, - isDragging: false, - - // the cell the mouse was over when listening started - origCell: null, - - // the cell the mouse is over - cell: null, - - // coordinates of the initial mousedown - mouseX0: null, - mouseY0: null, - - // handler attached to the document, bound to the DragListener's `this` - mousemoveProxy: null, - mouseupProxy: null, - - scrollEl: null, - scrollBounds: null, // { top, bottom, left, right } - scrollTopVel: null, // pixels per second - scrollLeftVel: null, // pixels per second - scrollIntervalId: null, // ID of setTimeout for scrolling animation loop - scrollHandlerProxy: null, // this-scoped function for handling when scrollEl is scrolled - - scrollSensitivity: 30, // pixels from edge for scrolling to start - scrollSpeed: 200, // pixels per second, at maximum speed - scrollIntervalMs: 50, // millisecond wait between scroll increment - - - constructor: function(coordMap, options) { - this.coordMap = coordMap; - this.options = options || {}; - }, - - - // Call this when the user does a mousedown. Will probably lead to startListening - mousedown: function(ev) { - if (isPrimaryMouseButton(ev)) { - - ev.preventDefault(); // prevents native selection in most browsers - - this.startListening(ev); - - // start the drag immediately if there is no minimum distance for a drag start - if (!this.options.distance) { - this.startDrag(ev); - } - } - }, - - - // Call this to start tracking mouse movements - startListening: function(ev) { - var scrollParent; - var cell; - - if (!this.isListening) { - - // grab scroll container and attach handler - if (ev && this.options.scroll) { - scrollParent = getScrollParent($(ev.target)); - if (!scrollParent.is(window) && !scrollParent.is(document)) { - this.scrollEl = scrollParent; - - // scope to `this`, and use `debounce` to make sure rapid calls don't happen - this.scrollHandlerProxy = debounce($.proxy(this, 'scrollHandler'), 100); - this.scrollEl.on('scroll', this.scrollHandlerProxy); - } - } - - this.computeCoords(); // relies on `scrollEl` - - // get info on the initial cell and its coordinates - if (ev) { - cell = this.getCell(ev); - this.origCell = cell; - - this.mouseX0 = ev.pageX; - this.mouseY0 = ev.pageY; - } - - $(document) - .on('mousemove', this.mousemoveProxy = $.proxy(this, 'mousemove')) - .on('mouseup', this.mouseupProxy = $.proxy(this, 'mouseup')) - .on('selectstart', this.preventDefault); // prevents native selection in IE<=8 - - this.isListening = true; - this.trigger('listenStart', ev); - } - }, - - - // Recomputes the drag-critical positions of elements - computeCoords: function() { - this.coordMap.build(); - this.computeScrollBounds(); - }, - - - // Called when the user moves the mouse - mousemove: function(ev) { - var minDistance; - var distanceSq; // current distance from mouseX0/mouseY0, squared - - if (!this.isDragging) { // if not already dragging... - // then start the drag if the minimum distance criteria is met - minDistance = this.options.distance || 1; - distanceSq = Math.pow(ev.pageX - this.mouseX0, 2) + Math.pow(ev.pageY - this.mouseY0, 2); - if (distanceSq >= minDistance * minDistance) { // use pythagorean theorem - this.startDrag(ev); - } - } - - if (this.isDragging) { - this.drag(ev); // report a drag, even if this mousemove initiated the drag - } - }, - - - // Call this to initiate a legitimate drag. - // This function is called internally from this class, but can also be called explicitly from outside - startDrag: function(ev) { - var cell; - - if (!this.isListening) { // startDrag must have manually initiated - this.startListening(); - } - - if (!this.isDragging) { - this.isDragging = true; - this.trigger('dragStart', ev); - - // report the initial cell the mouse is over - // especially important if no min-distance and drag starts immediately - cell = this.getCell(ev); // this might be different from this.origCell if the min-distance is large - if (cell) { - this.cellOver(cell); - } - } - }, - - - // Called while the mouse is being moved and when we know a legitimate drag is taking place - drag: function(ev) { - var cell; - - if (this.isDragging) { - cell = this.getCell(ev); - - if (!isCellsEqual(cell, this.cell)) { // a different cell than before? - if (this.cell) { - this.cellOut(); - } - if (cell) { - this.cellOver(cell); - } - } - - this.dragScroll(ev); // will possibly cause scrolling - } - }, - - - // Called when a the mouse has just moved over a new cell - cellOver: function(cell) { - this.cell = cell; - this.trigger('cellOver', cell, isCellsEqual(cell, this.origCell)); - }, - - - // Called when the mouse has just moved out of a cell - cellOut: function() { - if (this.cell) { - this.trigger('cellOut', this.cell); - this.cell = null; - } - }, - - - // Called when the user does a mouseup - mouseup: function(ev) { - this.stopDrag(ev); - this.stopListening(ev); - }, - - - // Called when the drag is over. Will not cause listening to stop however. - // A concluding 'cellOut' event will NOT be triggered. - stopDrag: function(ev) { - if (this.isDragging) { - this.stopScrolling(); - this.trigger('dragStop', ev); - this.isDragging = false; - } - }, - - - // Call this to stop listening to the user's mouse events - stopListening: function(ev) { - if (this.isListening) { - - // remove the scroll handler if there is a scrollEl - if (this.scrollEl) { - this.scrollEl.off('scroll', this.scrollHandlerProxy); - this.scrollHandlerProxy = null; - } - - $(document) - .off('mousemove', this.mousemoveProxy) - .off('mouseup', this.mouseupProxy) - .off('selectstart', this.preventDefault); - - this.mousemoveProxy = null; - this.mouseupProxy = null; - - this.isListening = false; - this.trigger('listenStop', ev); - - this.origCell = this.cell = null; - this.coordMap.clear(); - } - }, - - - // Gets the cell underneath the coordinates for the given mouse event - getCell: function(ev) { - return this.coordMap.getCell(ev.pageX, ev.pageY); - }, - - - // Triggers a callback. Calls a function in the option hash of the same name. - // Arguments beyond the first `name` are forwarded on. - trigger: function(name) { - if (this.options[name]) { - this.options[name].apply(this, Array.prototype.slice.call(arguments, 1)); - } - }, - - - // Stops a given mouse event from doing it's native browser action. In our case, text selection. - preventDefault: function(ev) { - ev.preventDefault(); - }, - - - /* Scrolling - ------------------------------------------------------------------------------------------------------------------*/ - - - // Computes and stores the bounding rectangle of scrollEl - computeScrollBounds: function() { - var el = this.scrollEl; - var offset; - - if (el) { - offset = el.offset(); - this.scrollBounds = { - top: offset.top, - left: offset.left, - bottom: offset.top + el.outerHeight(), - right: offset.left + el.outerWidth() - }; - } - }, - - - // Called when the dragging is in progress and scrolling should be updated - dragScroll: function(ev) { - var sensitivity = this.scrollSensitivity; - var bounds = this.scrollBounds; - var topCloseness, bottomCloseness; - var leftCloseness, rightCloseness; - var topVel = 0; - var leftVel = 0; - - if (bounds) { // only scroll if scrollEl exists - - // compute closeness to edges. valid range is from 0.0 - 1.0 - topCloseness = (sensitivity - (ev.pageY - bounds.top)) / sensitivity; - bottomCloseness = (sensitivity - (bounds.bottom - ev.pageY)) / sensitivity; - leftCloseness = (sensitivity - (ev.pageX - bounds.left)) / sensitivity; - rightCloseness = (sensitivity - (bounds.right - ev.pageX)) / sensitivity; - - // translate vertical closeness into velocity. - // mouse must be completely in bounds for velocity to happen. - if (topCloseness >= 0 && topCloseness <= 1) { - topVel = topCloseness * this.scrollSpeed * -1; // negative. for scrolling up - } - else if (bottomCloseness >= 0 && bottomCloseness <= 1) { - topVel = bottomCloseness * this.scrollSpeed; - } - - // translate horizontal closeness into velocity - if (leftCloseness >= 0 && leftCloseness <= 1) { - leftVel = leftCloseness * this.scrollSpeed * -1; // negative. for scrolling left - } - else if (rightCloseness >= 0 && rightCloseness <= 1) { - leftVel = rightCloseness * this.scrollSpeed; - } - } - - this.setScrollVel(topVel, leftVel); - }, - - - // Sets the speed-of-scrolling for the scrollEl - setScrollVel: function(topVel, leftVel) { - - this.scrollTopVel = topVel; - this.scrollLeftVel = leftVel; - - this.constrainScrollVel(); // massages into realistic values - - // if there is non-zero velocity, and an animation loop hasn't already started, then START - if ((this.scrollTopVel || this.scrollLeftVel) && !this.scrollIntervalId) { - this.scrollIntervalId = setInterval( - $.proxy(this, 'scrollIntervalFunc'), // scope to `this` - this.scrollIntervalMs - ); - } - }, - - - // Forces scrollTopVel and scrollLeftVel to be zero if scrolling has already gone all the way - constrainScrollVel: function() { - var el = this.scrollEl; - - if (this.scrollTopVel < 0) { // scrolling up? - if (el.scrollTop() <= 0) { // already scrolled all the way up? - this.scrollTopVel = 0; - } - } - else if (this.scrollTopVel > 0) { // scrolling down? - if (el.scrollTop() + el[0].clientHeight >= el[0].scrollHeight) { // already scrolled all the way down? - this.scrollTopVel = 0; - } - } - - if (this.scrollLeftVel < 0) { // scrolling left? - if (el.scrollLeft() <= 0) { // already scrolled all the left? - this.scrollLeftVel = 0; - } - } - else if (this.scrollLeftVel > 0) { // scrolling right? - if (el.scrollLeft() + el[0].clientWidth >= el[0].scrollWidth) { // already scrolled all the way right? - this.scrollLeftVel = 0; - } - } - }, - - - // This function gets called during every iteration of the scrolling animation loop - scrollIntervalFunc: function() { - var el = this.scrollEl; - var frac = this.scrollIntervalMs / 1000; // considering animation frequency, what the vel should be mult'd by - - // change the value of scrollEl's scroll - if (this.scrollTopVel) { - el.scrollTop(el.scrollTop() + this.scrollTopVel * frac); - } - if (this.scrollLeftVel) { - el.scrollLeft(el.scrollLeft() + this.scrollLeftVel * frac); - } - - this.constrainScrollVel(); // since the scroll values changed, recompute the velocities - - // if scrolled all the way, which causes the vels to be zero, stop the animation loop - if (!this.scrollTopVel && !this.scrollLeftVel) { - this.stopScrolling(); - } - }, - - - // Kills any existing scrolling animation loop - stopScrolling: function() { - if (this.scrollIntervalId) { - clearInterval(this.scrollIntervalId); - this.scrollIntervalId = null; - - // when all done with scrolling, recompute positions since they probably changed - this.computeCoords(); - } - }, - - - // Get called when the scrollEl is scrolled (NOTE: this is delayed via debounce) - scrollHandler: function() { - // recompute all coordinates, but *only* if this is *not* part of our scrolling animation - if (!this.scrollIntervalId) { - this.computeCoords(); - } - } - -}); - - -// Returns `true` if the cells are identically equal. `false` otherwise. -// They must have the same row, col, and be from the same grid. -// Two null values will be considered equal, as two "out of the grid" states are the same. -function isCellsEqual(cell1, cell2) { - - if (!cell1 && !cell2) { - return true; - } - - if (cell1 && cell2) { - return cell1.grid === cell2.grid && - cell1.row === cell2.row && - cell1.col === cell2.col; - } - - return false; -} - - /* Creates a clone of an element and lets it track the mouse as it moves -----------------------------------------------------------------------------------------------------------------------*/ - -var MouseFollower = Class.extend({ - - options: null, - - sourceEl: null, // the element that will be cloned and made to look like it is dragging - el: null, // the clone of `sourceEl` that will track the mouse - parentEl: null, // the element that `el` (the clone) will be attached to - - // the initial position of el, relative to the offset parent. made to match the initial offset of sourceEl - top0: null, - left0: null, - - // the initial position of the mouse - mouseY0: null, - mouseX0: null, - - // the number of pixels the mouse has moved from its initial position - topDelta: null, - leftDelta: null, - - mousemoveProxy: null, // document mousemove handler, bound to the MouseFollower's `this` - - isFollowing: false, - isHidden: false, - isAnimating: false, // doing the revert animation? - - constructor: function(sourceEl, options) { - this.options = options = options || {}; - this.sourceEl = sourceEl; - this.parentEl = options.parentEl ? $(options.parentEl) : sourceEl.parent(); // default to sourceEl's parent - }, - - - // Causes the element to start following the mouse - start: function(ev) { - if (!this.isFollowing) { - this.isFollowing = true; - - this.mouseY0 = ev.pageY; - this.mouseX0 = ev.pageX; - this.topDelta = 0; - this.leftDelta = 0; - - if (!this.isHidden) { - this.updatePosition(); - } - - $(document).on('mousemove', this.mousemoveProxy = $.proxy(this, 'mousemove')); - } - }, - - - // Causes the element to stop following the mouse. If shouldRevert is true, will animate back to original position. - // `callback` gets invoked when the animation is complete. If no animation, it is invoked immediately. - stop: function(shouldRevert, callback) { - var _this = this; - var revertDuration = this.options.revertDuration; - - function complete() { - this.isAnimating = false; - _this.destroyEl(); - - this.top0 = this.left0 = null; // reset state for future updatePosition calls - - if (callback) { - callback(); - } - } - - if (this.isFollowing && !this.isAnimating) { // disallow more than one stop animation at a time - this.isFollowing = false; - - $(document).off('mousemove', this.mousemoveProxy); - - if (shouldRevert && revertDuration && !this.isHidden) { // do a revert animation? - this.isAnimating = true; - this.el.animate({ - top: this.top0, - left: this.left0 - }, { - duration: revertDuration, - complete: complete - }); - } - else { - complete(); - } - } - }, - - - // Gets the tracking element. Create it if necessary - getEl: function() { - var el = this.el; - - if (!el) { - this.sourceEl.width(); // hack to force IE8 to compute correct bounding box - el = this.el = this.sourceEl.clone() - .css({ - position: 'absolute', - visibility: '', // in case original element was hidden (commonly through hideEvents()) - display: this.isHidden ? 'none' : '', // for when initially hidden - margin: 0, - right: 'auto', // erase and set width instead - bottom: 'auto', // erase and set height instead - width: this.sourceEl.width(), // explicit height in case there was a 'right' value - height: this.sourceEl.height(), // explicit width in case there was a 'bottom' value - opacity: this.options.opacity || '', - zIndex: this.options.zIndex - }) - .appendTo(this.parentEl); - } - - return el; - }, - - - // Removes the tracking element if it has already been created - destroyEl: function() { - if (this.el) { - this.el.remove(); - this.el = null; - } - }, - - - // Update the CSS position of the tracking element - updatePosition: function() { - var sourceOffset; - var origin; - - this.getEl(); // ensure this.el - - // make sure origin info was computed - if (this.top0 === null) { - this.sourceEl.width(); // hack to force IE8 to compute correct bounding box - sourceOffset = this.sourceEl.offset(); - origin = this.el.offsetParent().offset(); - this.top0 = sourceOffset.top - origin.top; - this.left0 = sourceOffset.left - origin.left; - } - - this.el.css({ - top: this.top0 + this.topDelta, - left: this.left0 + this.leftDelta - }); - }, - - - // Gets called when the user moves the mouse - mousemove: function(ev) { - this.topDelta = ev.pageY - this.mouseY0; - this.leftDelta = ev.pageX - this.mouseX0; - - if (!this.isHidden) { - this.updatePosition(); - } - }, - - - // Temporarily makes the tracking element invisible. Can be called before following starts - hide: function() { - if (!this.isHidden) { - this.isHidden = true; - if (this.el) { - this.el.hide(); - } - } - }, - - - // Show the tracking element after it has been temporarily hidden - show: function() { - if (this.isHidden) { - this.isHidden = false; - this.updatePosition(); - this.getEl().show(); - } - } - -}); - - /* A utility class for rendering <tr> rows. -----------------------------------------------------------------------------------------------------------------------*/ -// It leverages methods of the subclass and the View to determine custom rendering behavior for each row "type" -// (such as highlight rows, day rows, helper rows, etc). - -var RowRenderer = Class.extend({ - - view: null, // a View object - isRTL: null, // shortcut to the view's isRTL option - cellHtml: '<td/>', // plain default HTML used for a cell when no other is available - - - constructor: function(view) { - this.view = view; - this.isRTL = view.opt('isRTL'); - }, - - - // Renders the HTML for a row, leveraging custom cell-HTML-renderers based on the `rowType`. - // Also applies the "intro" and "outro" cells, which are specified by the subclass and views. - // `row` is an optional row number. - rowHtml: function(rowType, row) { - var renderCell = this.getHtmlRenderer('cell', rowType); - var rowCellHtml = ''; - var col; - var cell; - - row = row || 0; - - for (col = 0; col < this.colCnt; col++) { - cell = this.getCell(row, col); - rowCellHtml += renderCell(cell); - } - - rowCellHtml = this.bookendCells(rowCellHtml, rowType, row); // apply intro and outro - - return '<tr>' + rowCellHtml + '</tr>'; - }, - - - // Applies the "intro" and "outro" HTML to the given cells. - // Intro means the leftmost cell when the calendar is LTR and the rightmost cell when RTL. Vice-versa for outro. - // `cells` can be an HTML string of <td>'s or a jQuery <tr> element - // `row` is an optional row number. - bookendCells: function(cells, rowType, row) { - var intro = this.getHtmlRenderer('intro', rowType)(row || 0); - var outro = this.getHtmlRenderer('outro', rowType)(row || 0); - var prependHtml = this.isRTL ? outro : intro; - var appendHtml = this.isRTL ? intro : outro; - - if (typeof cells === 'string') { - return prependHtml + cells + appendHtml; - } - else { // a jQuery <tr> element - return cells.prepend(prependHtml).append(appendHtml); - } - }, - - - // Returns an HTML-rendering function given a specific `rendererName` (like cell, intro, or outro) and a specific - // `rowType` (like day, eventSkeleton, helperSkeleton), which is optional. - // If a renderer for the specific rowType doesn't exist, it will fall back to a generic renderer. - // We will query the View object first for any custom rendering functions, then the methods of the subclass. - getHtmlRenderer: function(rendererName, rowType) { - var view = this.view; - var generalName; // like "cellHtml" - var specificName; // like "dayCellHtml". based on rowType - var provider; // either the View or the RowRenderer subclass, whichever provided the method - var renderer; - - generalName = rendererName + 'Html'; - if (rowType) { - specificName = rowType + capitaliseFirstLetter(rendererName) + 'Html'; - } - - if (specificName && (renderer = view[specificName])) { - provider = view; - } - else if (specificName && (renderer = this[specificName])) { - provider = this; - } - else if ((renderer = view[generalName])) { - provider = view; - } - else if ((renderer = this[generalName])) { - provider = this; - } - - if (typeof renderer === 'function') { - return function() { - return renderer.apply(provider, arguments) || ''; // use correct `this` and always return a string - }; - } - - // the rendered can be a plain string as well. if not specified, always an empty string. - return function() { - return renderer || ''; - }; - } - -}); - - /* An abstract class comprised of a "grid" of cells that each represent a specific datetime -----------------------------------------------------------------------------------------------------------------------*/ - -var Grid = fc.Grid = RowRenderer.extend({ - - start: null, // the date of the first cell - end: null, // the date after the last cell - - rowCnt: 0, // number of rows - colCnt: 0, // number of cols - rowData: null, // array of objects, holding misc data for each row - colData: null, // array of objects, holding misc data for each column - - el: null, // the containing element - coordMap: null, // a GridCoordMap that converts pixel values to datetimes - elsByFill: null, // a hash of jQuery element sets used for rendering each fill. Keyed by fill name. - - documentDragStartProxy: null, // binds the Grid's scope to documentDragStart (in DayGrid.events) - - // derived from options - colHeadFormat: null, // TODO: move to another class. not applicable to all Grids - eventTimeFormat: null, - displayEventEnd: null, - - - constructor: function() { - RowRenderer.apply(this, arguments); // call the super-constructor - - this.coordMap = new GridCoordMap(this); - this.elsByFill = {}; - this.documentDragStartProxy = $.proxy(this, 'documentDragStart'); - }, - - - // Renders the grid into the `el` element. - // Subclasses should override and call this super-method when done. - render: function() { - this.bindHandlers(); - }, - - - // Called when the grid's resources need to be cleaned up - destroy: function() { - this.unbindHandlers(); - }, - - - /* Options - ------------------------------------------------------------------------------------------------------------------*/ - - - // Generates the format string used for the text in column headers, if not explicitly defined by 'columnFormat' - // TODO: move to another class. not applicable to all Grids - computeColHeadFormat: function() { - // subclasses must implement if they want to use headHtml() - }, - - - // Generates the format string used for event time text, if not explicitly defined by 'timeFormat' - computeEventTimeFormat: function() { - return this.view.opt('smallTimeFormat'); - }, - - - // Determines whether events should have their end times displayed, if not explicitly defined by 'displayEventEnd' - computeDisplayEventEnd: function() { - return false; - }, - - - /* Dates - ------------------------------------------------------------------------------------------------------------------*/ - - - // Tells the grid about what period of time to display. Grid will subsequently compute dates for cell system. - setRange: function(range) { - var view = this.view; - - this.start = range.start.clone(); - this.end = range.end.clone(); - - this.rowData = []; - this.colData = []; - this.updateCells(); - - // Populate option-derived settings. Look for override first, then compute if necessary. - this.colHeadFormat = view.opt('columnFormat') || this.computeColHeadFormat(); - this.eventTimeFormat = view.opt('timeFormat') || this.computeEventTimeFormat(); - this.displayEventEnd = view.opt('displayEventEnd'); - if (this.displayEventEnd == null) { - this.displayEventEnd = this.computeDisplayEventEnd(); - } - }, - - - // Responsible for setting rowCnt/colCnt and any other row/col data - updateCells: function() { - // subclasses must implement - }, - - - // Converts a range with an inclusive `start` and an exclusive `end` into an array of segment objects - rangeToSegs: function(range) { - // subclasses must implement - }, - - - /* Cells - ------------------------------------------------------------------------------------------------------------------*/ - // NOTE: columns are ordered left-to-right - - - // Gets an object containing row/col number, misc data, and range information about the cell. - // Accepts row/col values, an object with row/col properties, or a single-number offset from the first cell. - getCell: function(row, col) { - var cell; - - if (col == null) { - if (typeof row === 'number') { // a single-number offset - col = row % this.colCnt; - row = Math.floor(row / this.colCnt); - } - else { // an object with row/col properties - col = row.col; - row = row.row; - } - } - - cell = { row: row, col: col }; - - $.extend(cell, this.getRowData(row), this.getColData(col)); - $.extend(cell, this.computeCellRange(cell)); - - return cell; - }, - - - // Given a cell object with index and misc data, generates a range object - computeCellRange: function(cell) { - // subclasses must implement - }, - - - // Retrieves misc data about the given row - getRowData: function(row) { - return this.rowData[row] || {}; - }, - - - // Retrieves misc data baout the given column - getColData: function(col) { - return this.colData[col] || {}; - }, - - - // Retrieves the element representing the given row - getRowEl: function(row) { - // subclasses should implement if leveraging the default getCellDayEl() or computeRowCoords() - }, - - - // Retrieves the element representing the given column - getColEl: function(col) { - // subclasses should implement if leveraging the default getCellDayEl() or computeColCoords() - }, - - - // Given a cell object, returns the element that represents the cell's whole-day - getCellDayEl: function(cell) { - return this.getColEl(cell.col) || this.getRowEl(cell.row); - }, - - - /* Cell Coordinates - ------------------------------------------------------------------------------------------------------------------*/ - - - // Computes the top/bottom coordinates of all rows. - // By default, queries the dimensions of the element provided by getRowEl(). - computeRowCoords: function() { - var items = []; - var i, el; - var item; - - for (i = 0; i < this.rowCnt; i++) { - el = this.getRowEl(i); - item = { - top: el.offset().top - }; - if (i > 0) { - items[i - 1].bottom = item.top; - } - items.push(item); - } - item.bottom = item.top + el.outerHeight(); - - return items; - }, - - - // Computes the left/right coordinates of all rows. - // By default, queries the dimensions of the element provided by getColEl(). - computeColCoords: function() { - var items = []; - var i, el; - var item; - - for (i = 0; i < this.colCnt; i++) { - el = this.getColEl(i); - item = { - left: el.offset().left - }; - if (i > 0) { - items[i - 1].right = item.left; - } - items.push(item); - } - item.right = item.left + el.outerWidth(); - - return items; - }, - - - /* Handlers - ------------------------------------------------------------------------------------------------------------------*/ - - - // Attaches handlers to DOM - bindHandlers: function() { - var _this = this; - - // attach a handler to the grid's root element. - // we don't need to clean up in unbindHandlers or destroy, because when jQuery removes the element from the - // DOM it automatically unregisters the handlers. - this.el.on('mousedown', function(ev) { - if ( - !$(ev.target).is('.fc-event-container *, .fc-more') && // not an an event element, or "more.." link - !$(ev.target).closest('.fc-popover').length // not on a popover (like the "more.." events one) - ) { - _this.dayMousedown(ev); - } - }); - - // attach event-element-related handlers. in Grid.events - // same garbage collection note as above. - this.bindSegHandlers(); - - $(document).on('dragstart', this.documentDragStartProxy); // jqui drag - }, - - - // Unattaches handlers from the DOM - unbindHandlers: function() { - $(document).off('dragstart', this.documentDragStartProxy); // jqui drag - }, - - - // Process a mousedown on an element that represents a day. For day clicking and selecting. - dayMousedown: function(ev) { - var _this = this; - var view = this.view; - var isSelectable = view.opt('selectable'); - var dayClickCell; // null if invalid dayClick - var selectionRange; // null if invalid selection - - // this listener tracks a mousedown on a day element, and a subsequent drag. - // if the drag ends on the same day, it is a 'dayClick'. - // if 'selectable' is enabled, this listener also detects selections. - var dragListener = new DragListener(this.coordMap, { - //distance: 5, // needs more work if we want dayClick to fire correctly - scroll: view.opt('dragScroll'), - dragStart: function() { - view.unselect(); // since we could be rendering a new selection, we want to clear any old one - }, - cellOver: function(cell, isOrig) { - var origCell = dragListener.origCell; - if (origCell) { // click needs to have started on a cell - dayClickCell = isOrig ? cell : null; // single-cell selection is a day click - if (isSelectable) { - selectionRange = _this.computeSelection(origCell, cell); - if (selectionRange) { - _this.renderSelection(selectionRange); - } - else { - disableCursor(); - } - } - } - }, - cellOut: function(cell) { - dayClickCell = null; - selectionRange = null; - _this.destroySelection(); - enableCursor(); - }, - listenStop: function(ev) { - if (dayClickCell) { - view.trigger('dayClick', _this.getCellDayEl(dayClickCell), dayClickCell.start, ev); - } - if (selectionRange) { - // the selection will already have been rendered. just report it - view.reportSelection(selectionRange, ev); - } - enableCursor(); - } - }); - - dragListener.mousedown(ev); // start listening, which will eventually initiate a dragStart - }, - - - /* Event Helper - ------------------------------------------------------------------------------------------------------------------*/ - // TODO: should probably move this to Grid.events, like we did event dragging / resizing - - - // Renders a mock event over the given range. - // The range's end can be null, in which case the mock event that is rendered will have a null end time. - // `sourceSeg` is the internal segment object involved in the drag. If null, something external is dragging. - renderRangeHelper: function(range, sourceSeg) { - var fakeEvent; - - fakeEvent = sourceSeg ? createObject(sourceSeg.event) : {}; // mask the original event object if possible - fakeEvent.start = range.start.clone(); - fakeEvent.end = range.end ? range.end.clone() : null; - fakeEvent.allDay = null; // force it to be freshly computed by normalizeEventDateProps - this.view.calendar.normalizeEventDateProps(fakeEvent); - - // this extra className will be useful for differentiating real events from mock events in CSS - fakeEvent.className = (fakeEvent.className || []).concat('fc-helper'); - - // if something external is being dragged in, don't render a resizer - if (!sourceSeg) { - fakeEvent.editable = false; - } - - this.renderHelper(fakeEvent, sourceSeg); // do the actual rendering - }, - - - // Renders a mock event - renderHelper: function(event, sourceSeg) { - // subclasses must implement - }, - - - // Unrenders a mock event - destroyHelper: function() { - // subclasses must implement - }, - - - /* Selection - ------------------------------------------------------------------------------------------------------------------*/ - - - // Renders a visual indication of a selection. Will highlight by default but can be overridden by subclasses. - renderSelection: function(range) { - this.renderHighlight(range); - }, - - - // Unrenders any visual indications of a selection. Will unrender a highlight by default. - destroySelection: function() { - this.destroyHighlight(); - }, - - - // Given the first and last cells of a selection, returns a range object. - // Will return something falsy if the selection is invalid (when outside of selectionConstraint for example). - // Subclasses can override and provide additional data in the range object. Will be passed to renderSelection(). - computeSelection: function(firstCell, lastCell) { - var dates = [ - firstCell.start, - firstCell.end, - lastCell.start, - lastCell.end - ]; - var range; - - dates.sort(compareNumbers); // sorts chronologically. works with Moments - - range = { - start: dates[0].clone(), - end: dates[3].clone() - }; - - if (!this.view.calendar.isSelectionRangeAllowed(range)) { - return null; - } - - return range; - }, - - - /* Highlight - ------------------------------------------------------------------------------------------------------------------*/ - - - // Renders an emphasis on the given date range. `start` is inclusive. `end` is exclusive. - renderHighlight: function(range) { - this.renderFill('highlight', this.rangeToSegs(range)); - }, - - - // Unrenders the emphasis on a date range - destroyHighlight: function() { - this.destroyFill('highlight'); - }, - - - // Generates an array of classNames for rendering the highlight. Used by the fill system. - highlightSegClasses: function() { - return [ 'fc-highlight' ]; - }, - - - /* Fill System (highlight, background events, business hours) - ------------------------------------------------------------------------------------------------------------------*/ - - - // Renders a set of rectangles over the given segments of time. - // Returns a subset of segs, the segs that were actually rendered. - // Responsible for populating this.elsByFill. TODO: better API for expressing this requirement - renderFill: function(type, segs) { - // subclasses must implement - }, - - - // Unrenders a specific type of fill that is currently rendered on the grid - destroyFill: function(type) { - var el = this.elsByFill[type]; - - if (el) { - el.remove(); - delete this.elsByFill[type]; - } - }, - - - // Renders and assigns an `el` property for each fill segment. Generic enough to work with different types. - // Only returns segments that successfully rendered. - // To be harnessed by renderFill (implemented by subclasses). - // Analagous to renderFgSegEls. - renderFillSegEls: function(type, segs) { - var _this = this; - var segElMethod = this[type + 'SegEl']; - var html = ''; - var renderedSegs = []; - var i; - - if (segs.length) { - - // build a large concatenation of segment HTML - for (i = 0; i < segs.length; i++) { - html += this.fillSegHtml(type, segs[i]); - } - - // Grab individual elements from the combined HTML string. Use each as the default rendering. - // Then, compute the 'el' for each segment. - $(html).each(function(i, node) { - var seg = segs[i]; - var el = $(node); - - // allow custom filter methods per-type - if (segElMethod) { - el = segElMethod.call(_this, seg, el); - } - - if (el) { // custom filters did not cancel the render - el = $(el); // allow custom filter to return raw DOM node - - // correct element type? (would be bad if a non-TD were inserted into a table for example) - if (el.is(_this.fillSegTag)) { - seg.el = el; - renderedSegs.push(seg); - } - } - }); - } - - return renderedSegs; - }, - - - fillSegTag: 'div', // subclasses can override - - - // Builds the HTML needed for one fill segment. Generic enought o work with different types. - fillSegHtml: function(type, seg) { - var classesMethod = this[type + 'SegClasses']; // custom hooks per-type - var stylesMethod = this[type + 'SegStyles']; // - var classes = classesMethod ? classesMethod.call(this, seg) : []; - var styles = stylesMethod ? stylesMethod.call(this, seg) : ''; // a semi-colon separated CSS property string - - return '<' + this.fillSegTag + - (classes.length ? ' class="' + classes.join(' ') + '"' : '') + - (styles ? ' style="' + styles + '"' : '') + - ' />'; - }, - - - /* Generic rendering utilities for subclasses - ------------------------------------------------------------------------------------------------------------------*/ - - - // Renders a day-of-week header row. - // TODO: move to another class. not applicable to all Grids - headHtml: function() { - return '' + - '<div class="fc-row ' + this.view.widgetHeaderClass + '">' + - '<table>' + - '<thead>' + - this.rowHtml('head') + // leverages RowRenderer - '</thead>' + - '</table>' + - '</div>'; - }, - - - // Used by the `headHtml` method, via RowRenderer, for rendering the HTML of a day-of-week header cell - // TODO: move to another class. not applicable to all Grids - headCellHtml: function(cell) { - var view = this.view; - var date = cell.start; - - return '' + - '<th class="fc-day-header ' + view.widgetHeaderClass + ' fc-' + dayIDs[date.day()] + '">' + - htmlEscape(date.format(this.colHeadFormat)) + - '</th>'; - }, - - - // Renders the HTML for a single-day background cell - bgCellHtml: function(cell) { - var view = this.view; - var date = cell.start; - var classes = this.getDayClasses(date); - - classes.unshift('fc-day', view.widgetContentClass); - - return '<td class="' + classes.join(' ') + '"' + - ' data-date="' + date.format('YYYY-MM-DD') + '"' + // if date has a time, won't format it - '></td>'; - }, - - - // Computes HTML classNames for a single-day cell - getDayClasses: function(date) { - var view = this.view; - var today = view.calendar.getNow().stripTime(); - var classes = [ 'fc-' + dayIDs[date.day()] ]; - - if ( - view.name === 'month' && - date.month() != view.intervalStart.month() - ) { - classes.push('fc-other-month'); - } - - if (date.isSame(today, 'day')) { - classes.push( - 'fc-today', - view.highlightStateClass - ); - } - else if (date < today) { - classes.push('fc-past'); - } - else { - classes.push('fc-future'); - } - - return classes; - } - -}); - - /* Event-rendering and event-interaction methods for the abstract Grid class -----------------------------------------------------------------------------------------------------------------------*/ - -Grid.mixin({ - - mousedOverSeg: null, // the segment object the user's mouse is over. null if over nothing - isDraggingSeg: false, // is a segment being dragged? boolean - isResizingSeg: false, // is a segment being resized? boolean - segs: null, // the event segments currently rendered in the grid - - - // Renders the given events onto the grid - renderEvents: function(events) { - var segs = this.eventsToSegs(events); - var bgSegs = []; - var fgSegs = []; - var i, seg; - - for (i = 0; i < segs.length; i++) { - seg = segs[i]; - - if (isBgEvent(seg.event)) { - bgSegs.push(seg); - } - else { - fgSegs.push(seg); - } - } - - // Render each different type of segment. - // Each function may return a subset of the segs, segs that were actually rendered. - bgSegs = this.renderBgSegs(bgSegs) || bgSegs; - fgSegs = this.renderFgSegs(fgSegs) || fgSegs; - - this.segs = bgSegs.concat(fgSegs); - }, - - - // Unrenders all events currently rendered on the grid - destroyEvents: function() { - this.triggerSegMouseout(); // trigger an eventMouseout if user's mouse is over an event - - this.destroyFgSegs(); - this.destroyBgSegs(); - - this.segs = null; - }, - - - // Retrieves all rendered segment objects currently rendered on the grid - getEventSegs: function() { - return this.segs || []; - }, - - - /* Foreground Segment Rendering - ------------------------------------------------------------------------------------------------------------------*/ - - - // Renders foreground event segments onto the grid. May return a subset of segs that were rendered. - renderFgSegs: function(segs) { - // subclasses must implement - }, - - - // Unrenders all currently rendered foreground segments - destroyFgSegs: function() { - // subclasses must implement - }, - - - // Renders and assigns an `el` property for each foreground event segment. - // Only returns segments that successfully rendered. - // A utility that subclasses may use. - renderFgSegEls: function(segs, disableResizing) { - var view = this.view; - var html = ''; - var renderedSegs = []; - var i; - - if (segs.length) { // don't build an empty html string - - // build a large concatenation of event segment HTML - for (i = 0; i < segs.length; i++) { - html += this.fgSegHtml(segs[i], disableResizing); - } - - // Grab individual elements from the combined HTML string. Use each as the default rendering. - // Then, compute the 'el' for each segment. An el might be null if the eventRender callback returned false. - $(html).each(function(i, node) { - var seg = segs[i]; - var el = view.resolveEventEl(seg.event, $(node)); - - if (el) { - el.data('fc-seg', seg); // used by handlers - seg.el = el; - renderedSegs.push(seg); - } - }); - } - - return renderedSegs; - }, - - - // Generates the HTML for the default rendering of a foreground event segment. Used by renderFgSegEls() - fgSegHtml: function(seg, disableResizing) { - // subclasses should implement - }, - - - /* Background Segment Rendering - ------------------------------------------------------------------------------------------------------------------*/ - - - // Renders the given background event segments onto the grid. - // Returns a subset of the segs that were actually rendered. - renderBgSegs: function(segs) { - return this.renderFill('bgEvent', segs); - }, - - - // Unrenders all the currently rendered background event segments - destroyBgSegs: function() { - this.destroyFill('bgEvent'); - }, - - - // Renders a background event element, given the default rendering. Called by the fill system. - bgEventSegEl: function(seg, el) { - return this.view.resolveEventEl(seg.event, el); // will filter through eventRender - }, - - - // Generates an array of classNames to be used for the default rendering of a background event. - // Called by the fill system. - bgEventSegClasses: function(seg) { - var event = seg.event; - var source = event.source || {}; - - return [ 'fc-bgevent' ].concat( - event.className, - source.className || [] - ); - }, - - - // Generates a semicolon-separated CSS string to be used for the default rendering of a background event. - // Called by the fill system. - // TODO: consolidate with getEventSkinCss? - bgEventSegStyles: function(seg) { - var view = this.view; - var event = seg.event; - var source = event.source || {}; - var eventColor = event.color; - var sourceColor = source.color; - var optionColor = view.opt('eventColor'); - var backgroundColor = - event.backgroundColor || - eventColor || - source.backgroundColor || - sourceColor || - view.opt('eventBackgroundColor') || - optionColor; - - if (backgroundColor) { - return 'background-color:' + backgroundColor; - } - - return ''; - }, - - - // Generates an array of classNames to be used for the rendering business hours overlay. Called by the fill system. - businessHoursSegClasses: function(seg) { - return [ 'fc-nonbusiness', 'fc-bgevent' ]; - }, - - - /* Handlers - ------------------------------------------------------------------------------------------------------------------*/ - - - // Attaches event-element-related handlers to the container element and leverage bubbling - bindSegHandlers: function() { - var _this = this; - var view = this.view; - - $.each( - { - mouseenter: function(seg, ev) { - _this.triggerSegMouseover(seg, ev); - }, - mouseleave: function(seg, ev) { - _this.triggerSegMouseout(seg, ev); - }, - click: function(seg, ev) { - return view.trigger('eventClick', this, seg.event, ev); // can return `false` to cancel - }, - mousedown: function(seg, ev) { - if ($(ev.target).is('.fc-resizer') && view.isEventResizable(seg.event)) { - _this.segResizeMousedown(seg, ev); - } - else if (view.isEventDraggable(seg.event)) { - _this.segDragMousedown(seg, ev); - } - } - }, - function(name, func) { - // attach the handler to the container element and only listen for real event elements via bubbling - _this.el.on(name, '.fc-event-container > *', function(ev) { - var seg = $(this).data('fc-seg'); // grab segment data. put there by View::renderEvents - - // only call the handlers if there is not a drag/resize in progress - if (seg && !_this.isDraggingSeg && !_this.isResizingSeg) { - return func.call(this, seg, ev); // `this` will be the event element - } - }); - } - ); - }, - - - // Updates internal state and triggers handlers for when an event element is moused over - triggerSegMouseover: function(seg, ev) { - if (!this.mousedOverSeg) { - this.mousedOverSeg = seg; - this.view.trigger('eventMouseover', seg.el[0], seg.event, ev); - } - }, - - - // Updates internal state and triggers handlers for when an event element is moused out. - // Can be given no arguments, in which case it will mouseout the segment that was previously moused over. - triggerSegMouseout: function(seg, ev) { - ev = ev || {}; // if given no args, make a mock mouse event - - if (this.mousedOverSeg) { - seg = seg || this.mousedOverSeg; // if given no args, use the currently moused-over segment - this.mousedOverSeg = null; - this.view.trigger('eventMouseout', seg.el[0], seg.event, ev); - } - }, - - - /* Event Dragging - ------------------------------------------------------------------------------------------------------------------*/ - - - // Called when the user does a mousedown on an event, which might lead to dragging. - // Generic enough to work with any type of Grid. - segDragMousedown: function(seg, ev) { - var _this = this; - var view = this.view; - var el = seg.el; - var event = seg.event; - var dropLocation; - - // A clone of the original element that will move with the mouse - var mouseFollower = new MouseFollower(seg.el, { - parentEl: view.el, - opacity: view.opt('dragOpacity'), - revertDuration: view.opt('dragRevertDuration'), - zIndex: 2 // one above the .fc-view - }); - - // Tracks mouse movement over the *view's* coordinate map. Allows dragging and dropping between subcomponents - // of the view. - var dragListener = new DragListener(view.coordMap, { - distance: 5, - scroll: view.opt('dragScroll'), - listenStart: function(ev) { - mouseFollower.hide(); // don't show until we know this is a real drag - mouseFollower.start(ev); - }, - dragStart: function(ev) { - _this.triggerSegMouseout(seg, ev); // ensure a mouseout on the manipulated event has been reported - _this.isDraggingSeg = true; - view.hideEvent(event); // hide all event segments. our mouseFollower will take over - view.trigger('eventDragStart', el[0], event, ev, {}); // last argument is jqui dummy - }, - cellOver: function(cell, isOrig) { - var origCell = seg.cell || dragListener.origCell; // starting cell could be forced (DayGrid.limit) - - dropLocation = _this.computeEventDrop(origCell, cell, event); - if (dropLocation) { - if (view.renderDrag(dropLocation, seg)) { // have the subclass render a visual indication - mouseFollower.hide(); // if the subclass is already using a mock event "helper", hide our own - } - else { - mouseFollower.show(); - } - if (isOrig) { - dropLocation = null; // needs to have moved cells to be a valid drop - } - } - else { - // have the helper follow the mouse (no snapping) with a warning-style cursor - mouseFollower.show(); - disableCursor(); - } - }, - cellOut: function() { // called before mouse moves to a different cell OR moved out of all cells - dropLocation = null; - view.destroyDrag(); // unrender whatever was done in renderDrag - mouseFollower.show(); // show in case we are moving out of all cells - enableCursor(); - }, - dragStop: function(ev) { - // do revert animation if hasn't changed. calls a callback when finished (whether animation or not) - mouseFollower.stop(!dropLocation, function() { - _this.isDraggingSeg = false; - view.destroyDrag(); - view.showEvent(event); - view.trigger('eventDragStop', el[0], event, ev, {}); // last argument is jqui dummy - - if (dropLocation) { - view.reportEventDrop(event, dropLocation, el, ev); - } - }); - enableCursor(); - }, - listenStop: function() { - mouseFollower.stop(); // put in listenStop in case there was a mousedown but the drag never started - } - }); - - dragListener.mousedown(ev); // start listening, which will eventually lead to a dragStart - }, - - - // Given the cell an event drag began, and the cell event was dropped, calculates the new start/end/allDay - // values for the event. Subclasses may override and set additional properties to be used by renderDrag. - // A falsy returned value indicates an invalid drop. - computeEventDrop: function(startCell, endCell, event) { - var dragStart = startCell.start; - var dragEnd = endCell.start; - var delta; - var newStart; - var newEnd; - var newAllDay; - var dropLocation; - - if (dragStart.hasTime() === dragEnd.hasTime()) { - delta = diffDayTime(dragEnd, dragStart); - newStart = event.start.clone().add(delta); - if (event.end === null) { // do we need to compute an end? - newEnd = null; - } - else { - newEnd = event.end.clone().add(delta); - } - newAllDay = event.allDay; // keep it the same - } - else { - // if switching from day <-> timed, start should be reset to the dropped date, and the end cleared - newStart = dragEnd.clone(); - newEnd = null; // end should be cleared - newAllDay = !dragEnd.hasTime(); - } - - dropLocation = { - start: newStart, - end: newEnd, - allDay: newAllDay - }; - - if (!this.view.calendar.isEventRangeAllowed(dropLocation, event)) { - return null; - } - - return dropLocation; - }, - - - /* External Element Dragging - ------------------------------------------------------------------------------------------------------------------*/ - - - // Called when a jQuery UI drag is initiated anywhere in the DOM - documentDragStart: function(ev, ui) { - var view = this.view; - var el; - var accept; - - if (view.opt('droppable')) { // only listen if this setting is on - el = $(ev.target); - - // Test that the dragged element passes the dropAccept selector or filter function. - // FYI, the default is "*" (matches all) - accept = view.opt('dropAccept'); - if ($.isFunction(accept) ? accept.call(el[0], el) : el.is(accept)) { - - this.startExternalDrag(el, ev, ui); - } - } - }, - - - // Called when a jQuery UI drag starts and it needs to be monitored for cell dropping - startExternalDrag: function(el, ev, ui) { - var _this = this; - var meta = getDraggedElMeta(el); // extra data about event drop, including possible event to create - var dragListener; - var dropLocation; // a null value signals an unsuccessful drag - - // listener that tracks mouse movement over date-associated pixel regions - dragListener = new DragListener(this.coordMap, { - cellOver: function(cell) { - dropLocation = _this.computeExternalDrop(cell, meta); - if (dropLocation) { - _this.renderDrag(dropLocation); // called without a seg parameter - } - else { // invalid drop cell - disableCursor(); - } - }, - cellOut: function() { - dropLocation = null; // signal unsuccessful - _this.destroyDrag(); - enableCursor(); - } - }); - - // gets called, only once, when jqui drag is finished - $(document).one('dragstop', function(ev, ui) { - _this.destroyDrag(); - enableCursor(); - - if (dropLocation) { // element was dropped on a valid date/time cell - _this.view.reportExternalDrop(meta, dropLocation, el, ev, ui); - } - }); - - dragListener.startDrag(ev); // start listening immediately - }, - - - // Given a cell to be dropped upon, and misc data associated with the jqui drag (guaranteed to be a plain object), - // returns start/end dates for the event that would result from the hypothetical drop. end might be null. - // Returning a null value signals an invalid drop cell. - computeExternalDrop: function(cell, meta) { - var dropLocation = { - start: cell.start.clone(), - end: null - }; - - // if dropped on an all-day cell, and element's metadata specified a time, set it - if (meta.startTime && !dropLocation.start.hasTime()) { - dropLocation.start.time(meta.startTime); - } - - if (meta.duration) { - dropLocation.end = dropLocation.start.clone().add(meta.duration); - } - - if (!this.view.calendar.isExternalDropRangeAllowed(dropLocation, meta.eventProps)) { - return null; - } - - return dropLocation; - }, - - - - /* Drag Rendering (for both events and an external elements) - ------------------------------------------------------------------------------------------------------------------*/ - - - // Renders a visual indication of an event or external element being dragged. - // `dropLocation` contains hypothetical start/end/allDay values the event would have if dropped. end can be null. - // `seg` is the internal segment object that is being dragged. If dragging an external element, `seg` is null. - // A truthy returned value indicates this method has rendered a helper element. - renderDrag: function(dropLocation, seg) { - // subclasses must implement - }, - - - // Unrenders a visual indication of an event or external element being dragged - destroyDrag: function() { - // subclasses must implement - }, - - - /* Resizing - ------------------------------------------------------------------------------------------------------------------*/ - - - // Called when the user does a mousedown on an event's resizer, which might lead to resizing. - // Generic enough to work with any type of Grid. - segResizeMousedown: function(seg, ev) { - var _this = this; - var view = this.view; - var calendar = view.calendar; - var el = seg.el; - var event = seg.event; - var start = event.start; - var oldEnd = calendar.getEventEnd(event); - var newEnd; // falsy if invalid resize - var dragListener; - - function destroy() { // resets the rendering to show the original event - _this.destroyEventResize(); - view.showEvent(event); - enableCursor(); - } - - // Tracks mouse movement over the *grid's* coordinate map - dragListener = new DragListener(this.coordMap, { - distance: 5, - scroll: view.opt('dragScroll'), - dragStart: function(ev) { - _this.triggerSegMouseout(seg, ev); // ensure a mouseout on the manipulated event has been reported - _this.isResizingSeg = true; - view.trigger('eventResizeStart', el[0], event, ev, {}); // last argument is jqui dummy - }, - cellOver: function(cell) { - newEnd = cell.end; - - if (!newEnd.isAfter(start)) { // was end moved before start? - newEnd = start.clone().add( // make the event span a single slot - diffDayTime(cell.end, cell.start) // assumes all slot durations are the same - ); - } - - if (newEnd.isSame(oldEnd)) { - newEnd = null; - } - else if (!calendar.isEventRangeAllowed({ start: start, end: newEnd }, event)) { - newEnd = null; - disableCursor(); - } - else { - _this.renderEventResize({ start: start, end: newEnd }, seg); - view.hideEvent(event); - } - }, - cellOut: function() { // called before mouse moves to a different cell OR moved out of all cells - newEnd = null; - destroy(); - }, - dragStop: function(ev) { - _this.isResizingSeg = false; - destroy(); - view.trigger('eventResizeStop', el[0], event, ev, {}); // last argument is jqui dummy - - if (newEnd) { // valid date to resize to? - view.reportEventResize(event, newEnd, el, ev); - } - } - }); - - dragListener.mousedown(ev); // start listening, which will eventually lead to a dragStart - }, - - - // Renders a visual indication of an event being resized. - // `range` has the updated dates of the event. `seg` is the original segment object involved in the drag. - renderEventResize: function(range, seg) { - // subclasses must implement - }, - - - // Unrenders a visual indication of an event being resized. - destroyEventResize: function() { - // subclasses must implement - }, - - - /* Rendering Utils - ------------------------------------------------------------------------------------------------------------------*/ - - - // Compute the text that should be displayed on an event's element. - // `range` can be the Event object itself, or something range-like, with at least a `start`. - // The `timeFormat` options and the grid's default format is used, but `formatStr` can override. - getEventTimeText: function(range, formatStr) { - - formatStr = formatStr || this.eventTimeFormat; - - if (range.end && this.displayEventEnd) { - return this.view.formatRange(range, formatStr); - } - else { - return range.start.format(formatStr); - } - }, - - - // Generic utility for generating the HTML classNames for an event segment's element - getSegClasses: function(seg, isDraggable, isResizable) { - var event = seg.event; - var classes = [ - 'fc-event', - seg.isStart ? 'fc-start' : 'fc-not-start', - seg.isEnd ? 'fc-end' : 'fc-not-end' - ].concat( - event.className, - event.source ? event.source.className : [] - ); - - if (isDraggable) { - classes.push('fc-draggable'); - } - if (isResizable) { - classes.push('fc-resizable'); - } - - return classes; - }, - - - // Utility for generating a CSS string with all the event skin-related properties - getEventSkinCss: function(event) { - var view = this.view; - var source = event.source || {}; - var eventColor = event.color; - var sourceColor = source.color; - var optionColor = view.opt('eventColor'); - var backgroundColor = - event.backgroundColor || - eventColor || - source.backgroundColor || - sourceColor || - view.opt('eventBackgroundColor') || - optionColor; - var borderColor = - event.borderColor || - eventColor || - source.borderColor || - sourceColor || - view.opt('eventBorderColor') || - optionColor; - var textColor = - event.textColor || - source.textColor || - view.opt('eventTextColor'); - var statements = []; - if (backgroundColor) { - statements.push('background-color:' + backgroundColor); - } - if (borderColor) { - statements.push('border-color:' + borderColor); - } - if (textColor) { - statements.push('color:' + textColor); - } - return statements.join(';'); - }, - - - /* Converting events -> ranges -> segs - ------------------------------------------------------------------------------------------------------------------*/ - - - // Converts an array of event objects into an array of event segment objects. - // A custom `rangeToSegsFunc` may be given for arbitrarily slicing up events. - eventsToSegs: function(events, rangeToSegsFunc) { - var eventRanges = this.eventsToRanges(events); - var segs = []; - var i; - - for (i = 0; i < eventRanges.length; i++) { - segs.push.apply( - segs, - this.eventRangeToSegs(eventRanges[i], rangeToSegsFunc) - ); - } - - return segs; - }, - - - // Converts an array of events into an array of "range" objects. - // A "range" object is a plain object with start/end properties denoting the time it covers. Also an event property. - // For "normal" events, this will be identical to the event's start/end, but for "inverse-background" events, - // will create an array of ranges that span the time *not* covered by the given event. - eventsToRanges: function(events) { - var _this = this; - var eventsById = groupEventsById(events); - var ranges = []; - - // group by ID so that related inverse-background events can be rendered together - $.each(eventsById, function(id, eventGroup) { - if (eventGroup.length) { - ranges.push.apply( - ranges, - isInverseBgEvent(eventGroup[0]) ? - _this.eventsToInverseRanges(eventGroup) : - _this.eventsToNormalRanges(eventGroup) - ); - } - }); - - return ranges; - }, - - - // Converts an array of "normal" events (not inverted rendering) into a parallel array of ranges - eventsToNormalRanges: function(events) { - var calendar = this.view.calendar; - var ranges = []; - var i, event; - var eventStart, eventEnd; - - for (i = 0; i < events.length; i++) { - event = events[i]; - - // make copies and normalize by stripping timezone - eventStart = event.start.clone().stripZone(); - eventEnd = calendar.getEventEnd(event).stripZone(); - - ranges.push({ - event: event, - start: eventStart, - end: eventEnd, - eventStartMS: +eventStart, - eventDurationMS: eventEnd - eventStart - }); - } - - return ranges; - }, - - - // Converts an array of events, with inverse-background rendering, into an array of range objects. - // The range objects will cover all the time NOT covered by the events. - eventsToInverseRanges: function(events) { - var view = this.view; - var viewStart = view.start.clone().stripZone(); // normalize timezone - var viewEnd = view.end.clone().stripZone(); // normalize timezone - var normalRanges = this.eventsToNormalRanges(events); // will give us normalized dates we can use w/o copies - var inverseRanges = []; - var event0 = events[0]; // assign this to each range's `.event` - var start = viewStart; // the end of the previous range. the start of the new range - var i, normalRange; - - // ranges need to be in order. required for our date-walking algorithm - normalRanges.sort(compareNormalRanges); - - for (i = 0; i < normalRanges.length; i++) { - normalRange = normalRanges[i]; - - // add the span of time before the event (if there is any) - if (normalRange.start > start) { // compare millisecond time (skip any ambig logic) - inverseRanges.push({ - event: event0, - start: start, - end: normalRange.start - }); - } - - start = normalRange.end; - } - - // add the span of time after the last event (if there is any) - if (start < viewEnd) { // compare millisecond time (skip any ambig logic) - inverseRanges.push({ - event: event0, - start: start, - end: viewEnd - }); - } - - return inverseRanges; - }, - - - // Slices the given event range into one or more segment objects. - // A `rangeToSegsFunc` custom slicing function can be given. - eventRangeToSegs: function(eventRange, rangeToSegsFunc) { - var segs; - var i, seg; - - if (rangeToSegsFunc) { - segs = rangeToSegsFunc(eventRange); - } - else { - segs = this.rangeToSegs(eventRange); // defined by the subclass - } - - for (i = 0; i < segs.length; i++) { - seg = segs[i]; - seg.event = eventRange.event; - seg.eventStartMS = eventRange.eventStartMS; - seg.eventDurationMS = eventRange.eventDurationMS; - } - - return segs; - } - -}); - - -/* Utilities -----------------------------------------------------------------------------------------------------------------------*/ - - -function isBgEvent(event) { // returns true if background OR inverse-background - var rendering = getEventRendering(event); - return rendering === 'background' || rendering === 'inverse-background'; -} - - -function isInverseBgEvent(event) { - return getEventRendering(event) === 'inverse-background'; -} - - -function getEventRendering(event) { - return firstDefined((event.source || {}).rendering, event.rendering); -} - - -function groupEventsById(events) { - var eventsById = {}; - var i, event; - - for (i = 0; i < events.length; i++) { - event = events[i]; - (eventsById[event._id] || (eventsById[event._id] = [])).push(event); - } - - return eventsById; -} - - -// A cmp function for determining which non-inverted "ranges" (see above) happen earlier -function compareNormalRanges(range1, range2) { - return range1.eventStartMS - range2.eventStartMS; // earlier ranges go first -} - - -// A cmp function for determining which segments should take visual priority -// DOES NOT WORK ON INVERTED BACKGROUND EVENTS because they have no eventStartMS/eventDurationMS -function compareSegs(seg1, seg2) { - return seg1.eventStartMS - seg2.eventStartMS || // earlier events go first - seg2.eventDurationMS - seg1.eventDurationMS || // tie? longer events go first - seg2.event.allDay - seg1.event.allDay || // tie? put all-day events first (booleans cast to 0/1) - (seg1.event.title || '').localeCompare(seg2.event.title); // tie? alphabetically by title -} - -fc.compareSegs = compareSegs; // export - - -/* External-Dragging-Element Data -----------------------------------------------------------------------------------------------------------------------*/ - -// Require all HTML5 data-* attributes used by FullCalendar to have this prefix. -// A value of '' will query attributes like data-event. A value of 'fc' will query attributes like data-fc-event. -fc.dataAttrPrefix = ''; - -// Given a jQuery element that might represent a dragged FullCalendar event, returns an intermediate data structure -// to be used for Event Object creation. -// A defined `.eventProps`, even when empty, indicates that an event should be created. -function getDraggedElMeta(el) { - var prefix = fc.dataAttrPrefix; - var eventProps; // properties for creating the event, not related to date/time - var startTime; // a Duration - var duration; - var stick; - - if (prefix) { prefix += '-'; } - eventProps = el.data(prefix + 'event') || null; - - if (eventProps) { - if (typeof eventProps === 'object') { - eventProps = $.extend({}, eventProps); // make a copy - } - else { // something like 1 or true. still signal event creation - eventProps = {}; - } - - // pluck special-cased date/time properties - startTime = eventProps.start; - if (startTime == null) { startTime = eventProps.time; } // accept 'time' as well - duration = eventProps.duration; - stick = eventProps.stick; - delete eventProps.start; - delete eventProps.time; - delete eventProps.duration; - delete eventProps.stick; - } - - // fallback to standalone attribute values for each of the date/time properties - if (startTime == null) { startTime = el.data(prefix + 'start'); } - if (startTime == null) { startTime = el.data(prefix + 'time'); } // accept 'time' as well - if (duration == null) { duration = el.data(prefix + 'duration'); } - if (stick == null) { stick = el.data(prefix + 'stick'); } - - // massage into correct data types - startTime = startTime != null ? moment.duration(startTime) : null; - duration = duration != null ? moment.duration(duration) : null; - stick = Boolean(stick); - - return { eventProps: eventProps, startTime: startTime, duration: duration, stick: stick }; -} - - - /* A component that renders a grid of whole-days that runs horizontally. There can be multiple rows, one per week. -----------------------------------------------------------------------------------------------------------------------*/ - -var DayGrid = Grid.extend({ - - numbersVisible: false, // should render a row for day/week numbers? set by outside view. TODO: make internal - bottomCoordPadding: 0, // hack for extending the hit area for the last row of the coordinate grid - breakOnWeeks: null, // should create a new row for each week? set by outside view - - cellDates: null, // flat chronological array of each cell's dates - dayToCellOffsets: null, // maps days offsets from grid's start date, to cell offsets - - rowEls: null, // set of fake row elements - dayEls: null, // set of whole-day elements comprising the row's background - helperEls: null, // set of cell skeleton elements for rendering the mock event "helper" - - - // Renders the rows and columns into the component's `this.el`, which should already be assigned. - // isRigid determins whether the individual rows should ignore the contents and be a constant height. - // Relies on the view's colCnt and rowCnt. In the future, this component should probably be self-sufficient. - render: function(isRigid) { - var view = this.view; - var rowCnt = this.rowCnt; - var colCnt = this.colCnt; - var cellCnt = rowCnt * colCnt; - var html = ''; - var row; - var i, cell; - - for (row = 0; row < rowCnt; row++) { - html += this.dayRowHtml(row, isRigid); - } - this.el.html(html); - - this.rowEls = this.el.find('.fc-row'); - this.dayEls = this.el.find('.fc-day'); - - // trigger dayRender with each cell's element - for (i = 0; i < cellCnt; i++) { - cell = this.getCell(i); - view.trigger('dayRender', null, cell.start, this.dayEls.eq(i)); - } - - Grid.prototype.render.call(this); // call the super-method - }, - - - destroy: function() { - this.destroySegPopover(); - Grid.prototype.destroy.call(this); // call the super-method - }, - - - // Generates the HTML for a single row. `row` is the row number. - dayRowHtml: function(row, isRigid) { - var view = this.view; - var classes = [ 'fc-row', 'fc-week', view.widgetContentClass ]; - - if (isRigid) { - classes.push('fc-rigid'); - } - - return '' + - '<div class="' + classes.join(' ') + '">' + - '<div class="fc-bg">' + - '<table>' + - this.rowHtml('day', row) + // leverages RowRenderer. calls dayCellHtml() - '</table>' + - '</div>' + - '<div class="fc-content-skeleton">' + - '<table>' + - (this.numbersVisible ? - '<thead>' + - this.rowHtml('number', row) + // leverages RowRenderer. View will define render method - '</thead>' : - '' - ) + - '</table>' + - '</div>' + - '</div>'; - }, - - - // Renders the HTML for a whole-day cell. Will eventually end up in the day-row's background. - // We go through a 'day' row type instead of just doing a 'bg' row type so that the View can do custom rendering - // specifically for whole-day rows, whereas a 'bg' might also be used for other purposes (TimeGrid bg for example). - dayCellHtml: function(cell) { - return this.bgCellHtml(cell); - }, - - - /* Options - ------------------------------------------------------------------------------------------------------------------*/ - - - // Computes a default column header formatting string if `colFormat` is not explicitly defined - computeColHeadFormat: function() { - if (this.rowCnt > 1) { // more than one week row. day numbers will be in each cell - return 'ddd'; // "Sat" - } - else if (this.colCnt > 1) { // multiple days, so full single date string WON'T be in title text - return this.view.opt('dayOfMonthFormat'); // "Sat 12/10" - } - else { // single day, so full single date string will probably be in title text - return 'dddd'; // "Saturday" - } - }, - - - // Computes a default event time formatting string if `timeFormat` is not explicitly defined - computeEventTimeFormat: function() { - return this.view.opt('extraSmallTimeFormat'); // like "6p" or "6:30p" - }, - - - // Computes a default `displayEventEnd` value if one is not expliclty defined - computeDisplayEventEnd: function() { - return this.colCnt == 1; // we'll likely have space if there's only one day - }, - - - /* Cell System - ------------------------------------------------------------------------------------------------------------------*/ - - - // Initializes row/col information - updateCells: function() { - var cellDates; - var firstDay; - var rowCnt; - var colCnt; - - this.updateCellDates(); // populates cellDates and dayToCellOffsets - cellDates = this.cellDates; - - if (this.breakOnWeeks) { - // count columns until the day-of-week repeats - firstDay = cellDates[0].day(); - for (colCnt = 1; colCnt < cellDates.length; colCnt++) { - if (cellDates[colCnt].day() == firstDay) { - break; - } - } - rowCnt = Math.ceil(cellDates.length / colCnt); - } - else { - rowCnt = 1; - colCnt = cellDates.length; - } - - this.rowCnt = rowCnt; - this.colCnt = colCnt; - }, - - - // Populates cellDates and dayToCellOffsets - updateCellDates: function() { - var view = this.view; - var date = this.start.clone(); - var dates = []; - var offset = -1; - var offsets = []; - - while (date.isBefore(this.end)) { // loop each day from start to end - if (view.isHiddenDay(date)) { - offsets.push(offset + 0.5); // mark that it's between offsets - } - else { - offset++; - offsets.push(offset); - dates.push(date.clone()); - } - date.add(1, 'days'); - } - - this.cellDates = dates; - this.dayToCellOffsets = offsets; - }, - - - // Given a cell object, generates a range object - computeCellRange: function(cell) { - var colCnt = this.colCnt; - var index = cell.row * colCnt + (this.isRTL ? colCnt - cell.col - 1 : cell.col); - var start = this.cellDates[index].clone(); - var end = start.clone().add(1, 'day'); - - return { start: start, end: end }; - }, - - - // Retrieves the element representing the given row - getRowEl: function(row) { - return this.rowEls.eq(row); - }, - - - // Retrieves the element representing the given column - getColEl: function(col) { - return this.dayEls.eq(col); - }, - - - // Gets the whole-day element associated with the cell - getCellDayEl: function(cell) { - return this.dayEls.eq(cell.row * this.colCnt + cell.col); - }, - - - // Overrides Grid's method for when row coordinates are computed - computeRowCoords: function() { - var rowCoords = Grid.prototype.computeRowCoords.call(this); // call the super-method - - // hack for extending last row (used by AgendaView) - rowCoords[rowCoords.length - 1].bottom += this.bottomCoordPadding; - - return rowCoords; - }, - - - /* Dates - ------------------------------------------------------------------------------------------------------------------*/ - - - // Slices up a date range by row into an array of segments - rangeToSegs: function(range) { - var isRTL = this.isRTL; - var rowCnt = this.rowCnt; - var colCnt = this.colCnt; - var segs = []; - var first, last; // inclusive cell-offset range for given range - var row; - var rowFirst, rowLast; // inclusive cell-offset range for current row - var isStart, isEnd; - var segFirst, segLast; // inclusive cell-offset range for segment - var seg; - - range = this.view.computeDayRange(range); // make whole-day range, considering nextDayThreshold - first = this.dateToCellOffset(range.start); - last = this.dateToCellOffset(range.end.subtract(1, 'days')); // offset of inclusive end date - - for (row = 0; row < rowCnt; row++) { - rowFirst = row * colCnt; - rowLast = rowFirst + colCnt - 1; - - // intersect segment's offset range with the row's - segFirst = Math.max(rowFirst, first); - segLast = Math.min(rowLast, last); - - // deal with in-between indices - segFirst = Math.ceil(segFirst); // in-between starts round to next cell - segLast = Math.floor(segLast); // in-between ends round to prev cell - - if (segFirst <= segLast) { // was there any intersection with the current row? - - // must be matching integers to be the segment's start/end - isStart = segFirst === first; - isEnd = segLast === last; - - // translate offsets to be relative to start-of-row - segFirst -= rowFirst; - segLast -= rowFirst; - - seg = { row: row, isStart: isStart, isEnd: isEnd }; - if (isRTL) { - seg.leftCol = colCnt - segLast - 1; - seg.rightCol = colCnt - segFirst - 1; - } - else { - seg.leftCol = segFirst; - seg.rightCol = segLast; - } - segs.push(seg); - } - } - - return segs; - }, - - - // Given a date, returns its chronolocial cell-offset from the first cell of the grid. - // If the date lies between cells (because of hiddenDays), returns a floating-point value between offsets. - // If before the first offset, returns a negative number. - // If after the last offset, returns an offset past the last cell offset. - // Only works for *start* dates of cells. Will not work for exclusive end dates for cells. - dateToCellOffset: function(date) { - var offsets = this.dayToCellOffsets; - var day = date.diff(this.start, 'days'); - - if (day < 0) { - return offsets[0] - 1; - } - else if (day >= offsets.length) { - return offsets[offsets.length - 1] + 1; - } - else { - return offsets[day]; - } - }, - - - /* Event Drag Visualization - ------------------------------------------------------------------------------------------------------------------*/ - // TODO: move to DayGrid.event, similar to what we did with Grid's drag methods - - - // Renders a visual indication of an event or external element being dragged. - // The dropLocation's end can be null. seg can be null. See Grid::renderDrag for more info. - renderDrag: function(dropLocation, seg) { - var opacity; - - // always render a highlight underneath - this.renderHighlight( - this.view.calendar.ensureVisibleEventRange(dropLocation) // needs to be a proper range - ); - - // if a segment from the same calendar but another component is being dragged, render a helper event - if (seg && !seg.el.closest(this.el).length) { - - this.renderRangeHelper(dropLocation, seg); - - opacity = this.view.opt('dragOpacity'); - if (opacity !== undefined) { - this.helperEls.css('opacity', opacity); - } - - return true; // a helper has been rendered - } - }, - - - // Unrenders any visual indication of a hovering event - destroyDrag: function() { - this.destroyHighlight(); - this.destroyHelper(); - }, - - - /* Event Resize Visualization - ------------------------------------------------------------------------------------------------------------------*/ - - - // Renders a visual indication of an event being resized - renderEventResize: function(range, seg) { - this.renderHighlight(range); - this.renderRangeHelper(range, seg); - }, - - - // Unrenders a visual indication of an event being resized - destroyEventResize: function() { - this.destroyHighlight(); - this.destroyHelper(); - }, - - - /* Event Helper - ------------------------------------------------------------------------------------------------------------------*/ - - - // Renders a mock "helper" event. `sourceSeg` is the associated internal segment object. It can be null. - renderHelper: function(event, sourceSeg) { - var helperNodes = []; - var segs = this.eventsToSegs([ event ]); - var rowStructs; - - segs = this.renderFgSegEls(segs); // assigns each seg's el and returns a subset of segs that were rendered - rowStructs = this.renderSegRows(segs); - - // inject each new event skeleton into each associated row - this.rowEls.each(function(row, rowNode) { - var rowEl = $(rowNode); // the .fc-row - var skeletonEl = $('<div class="fc-helper-skeleton"><table/></div>'); // will be absolutely positioned - var skeletonTop; - - // If there is an original segment, match the top position. Otherwise, put it at the row's top level - if (sourceSeg && sourceSeg.row === row) { - skeletonTop = sourceSeg.el.position().top; - } - else { - skeletonTop = rowEl.find('.fc-content-skeleton tbody').position().top; - } - - skeletonEl.css('top', skeletonTop) - .find('table') - .append(rowStructs[row].tbodyEl); - - rowEl.append(skeletonEl); - helperNodes.push(skeletonEl[0]); - }); - - this.helperEls = $(helperNodes); // array -> jQuery set - }, - - - // Unrenders any visual indication of a mock helper event - destroyHelper: function() { - if (this.helperEls) { - this.helperEls.remove(); - this.helperEls = null; - } - }, - - - /* Fill System (highlight, background events, business hours) - ------------------------------------------------------------------------------------------------------------------*/ - - - fillSegTag: 'td', // override the default tag name - - - // Renders a set of rectangles over the given segments of days. - // Only returns segments that successfully rendered. - renderFill: function(type, segs) { - var nodes = []; - var i, seg; - var skeletonEl; - - segs = this.renderFillSegEls(type, segs); // assignes `.el` to each seg. returns successfully rendered segs - - for (i = 0; i < segs.length; i++) { - seg = segs[i]; - skeletonEl = this.renderFillRow(type, seg); - this.rowEls.eq(seg.row).append(skeletonEl); - nodes.push(skeletonEl[0]); - } - - this.elsByFill[type] = $(nodes); - - return segs; - }, - - - // Generates the HTML needed for one row of a fill. Requires the seg's el to be rendered. - renderFillRow: function(type, seg) { - var colCnt = this.colCnt; - var startCol = seg.leftCol; - var endCol = seg.rightCol + 1; - var skeletonEl; - var trEl; - - skeletonEl = $( - '<div class="fc-' + type.toLowerCase() + '-skeleton">' + - '<table><tr/></table>' + - '</div>' - ); - trEl = skeletonEl.find('tr'); - - if (startCol > 0) { - trEl.append('<td colspan="' + startCol + '"/>'); - } - - trEl.append( - seg.el.attr('colspan', endCol - startCol) - ); - - if (endCol < colCnt) { - trEl.append('<td colspan="' + (colCnt - endCol) + '"/>'); - } - - this.bookendCells(trEl, type); - - return skeletonEl; - } - -}); - - /* Event-rendering methods for the DayGrid class -----------------------------------------------------------------------------------------------------------------------*/ - -DayGrid.mixin({ - - rowStructs: null, // an array of objects, each holding information about a row's foreground event-rendering - - - // Unrenders all events currently rendered on the grid - destroyEvents: function() { - this.destroySegPopover(); // removes the "more.." events popover - Grid.prototype.destroyEvents.apply(this, arguments); // calls the super-method - }, - - - // Retrieves all rendered segment objects currently rendered on the grid - getEventSegs: function() { - return Grid.prototype.getEventSegs.call(this) // get the segments from the super-method - .concat(this.popoverSegs || []); // append the segments from the "more..." popover - }, - - - // Renders the given background event segments onto the grid - renderBgSegs: function(segs) { - - // don't render timed background events - var allDaySegs = $.grep(segs, function(seg) { - return seg.event.allDay; - }); - - return Grid.prototype.renderBgSegs.call(this, allDaySegs); // call the super-method - }, - - - // Renders the given foreground event segments onto the grid - renderFgSegs: function(segs) { - var rowStructs; - - // render an `.el` on each seg - // returns a subset of the segs. segs that were actually rendered - segs = this.renderFgSegEls(segs); - - rowStructs = this.rowStructs = this.renderSegRows(segs); - - // append to each row's content skeleton - this.rowEls.each(function(i, rowNode) { - $(rowNode).find('.fc-content-skeleton > table').append( - rowStructs[i].tbodyEl - ); - }); - - return segs; // return only the segs that were actually rendered - }, - - - // Unrenders all currently rendered foreground event segments - destroyFgSegs: function() { - var rowStructs = this.rowStructs || []; - var rowStruct; - - while ((rowStruct = rowStructs.pop())) { - rowStruct.tbodyEl.remove(); - } - - this.rowStructs = null; - }, - - - // Uses the given events array to generate <tbody> elements that should be appended to each row's content skeleton. - // Returns an array of rowStruct objects (see the bottom of `renderSegRow`). - // PRECONDITION: each segment shoud already have a rendered and assigned `.el` - renderSegRows: function(segs) { - var rowStructs = []; - var segRows; - var row; - - segRows = this.groupSegRows(segs); // group into nested arrays - - // iterate each row of segment groupings - for (row = 0; row < segRows.length; row++) { - rowStructs.push( - this.renderSegRow(row, segRows[row]) - ); - } - - return rowStructs; - }, - - - // Builds the HTML to be used for the default element for an individual segment - fgSegHtml: function(seg, disableResizing) { - var view = this.view; - var event = seg.event; - var isDraggable = view.isEventDraggable(event); - var isResizable = !disableResizing && event.allDay && seg.isEnd && view.isEventResizable(event); - var classes = this.getSegClasses(seg, isDraggable, isResizable); - var skinCss = this.getEventSkinCss(event); - var timeHtml = ''; - var titleHtml; - - classes.unshift('fc-day-grid-event'); - - // Only display a timed events time if it is the starting segment - if (!event.allDay && seg.isStart) { - timeHtml = '<span class="fc-time">' + htmlEscape(this.getEventTimeText(event)) + '</span>'; - } - - titleHtml = - '<span class="fc-title">' + - (htmlEscape(event.title || '') || '&nbsp;') + // we always want one line of height - '</span>'; - - return '<a class="' + classes.join(' ') + '"' + - (event.url ? - ' href="' + htmlEscape(event.url) + '"' : - '' - ) + - (skinCss ? - ' style="' + skinCss + '"' : - '' - ) + - '>' + - '<div class="fc-content">' + - (this.isRTL ? - titleHtml + ' ' + timeHtml : // put a natural space in between - timeHtml + ' ' + titleHtml // - ) + - '</div>' + - (isResizable ? - '<div class="fc-resizer"/>' : - '' - ) + - '</a>'; - }, - - - // Given a row # and an array of segments all in the same row, render a <tbody> element, a skeleton that contains - // the segments. Returns object with a bunch of internal data about how the render was calculated. - renderSegRow: function(row, rowSegs) { - var colCnt = this.colCnt; - var segLevels = this.buildSegLevels(rowSegs); // group into sub-arrays of levels - var levelCnt = Math.max(1, segLevels.length); // ensure at least one level - var tbody = $('<tbody/>'); - var segMatrix = []; // lookup for which segments are rendered into which level+col cells - var cellMatrix = []; // lookup for all <td> elements of the level+col matrix - var loneCellMatrix = []; // lookup for <td> elements that only take up a single column - var i, levelSegs; - var col; - var tr; - var j, seg; - var td; - - // populates empty cells from the current column (`col`) to `endCol` - function emptyCellsUntil(endCol) { - while (col < endCol) { - // try to grab a cell from the level above and extend its rowspan. otherwise, create a fresh cell - td = (loneCellMatrix[i - 1] || [])[col]; - if (td) { - td.attr( - 'rowspan', - parseInt(td.attr('rowspan') || 1, 10) + 1 - ); - } - else { - td = $('<td/>'); - tr.append(td); - } - cellMatrix[i][col] = td; - loneCellMatrix[i][col] = td; - col++; - } - } - - for (i = 0; i < levelCnt; i++) { // iterate through all levels - levelSegs = segLevels[i]; - col = 0; - tr = $('<tr/>'); - - segMatrix.push([]); - cellMatrix.push([]); - loneCellMatrix.push([]); - - // levelCnt might be 1 even though there are no actual levels. protect against this. - // this single empty row is useful for styling. - if (levelSegs) { - for (j = 0; j < levelSegs.length; j++) { // iterate through segments in level - seg = levelSegs[j]; - - emptyCellsUntil(seg.leftCol); - - // create a container that occupies or more columns. append the event element. - td = $('<td class="fc-event-container"/>').append(seg.el); - if (seg.leftCol != seg.rightCol) { - td.attr('colspan', seg.rightCol - seg.leftCol + 1); - } - else { // a single-column segment - loneCellMatrix[i][col] = td; - } - - while (col <= seg.rightCol) { - cellMatrix[i][col] = td; - segMatrix[i][col] = seg; - col++; - } - - tr.append(td); - } - } - - emptyCellsUntil(colCnt); // finish off the row - this.bookendCells(tr, 'eventSkeleton'); - tbody.append(tr); - } - - return { // a "rowStruct" - row: row, // the row number - tbodyEl: tbody, - cellMatrix: cellMatrix, - segMatrix: segMatrix, - segLevels: segLevels, - segs: rowSegs - }; - }, - - - // Stacks a flat array of segments, which are all assumed to be in the same row, into subarrays of vertical levels. - buildSegLevels: function(segs) { - var levels = []; - var i, seg; - var j; - - // Give preference to elements with certain criteria, so they have - // a chance to be closer to the top. - segs.sort(compareSegs); - - for (i = 0; i < segs.length; i++) { - seg = segs[i]; - - // loop through levels, starting with the topmost, until the segment doesn't collide with other segments - for (j = 0; j < levels.length; j++) { - if (!isDaySegCollision(seg, levels[j])) { - break; - } - } - // `j` now holds the desired subrow index - seg.level = j; - - // create new level array if needed and append segment - (levels[j] || (levels[j] = [])).push(seg); - } - - // order segments left-to-right. very important if calendar is RTL - for (j = 0; j < levels.length; j++) { - levels[j].sort(compareDaySegCols); - } - - return levels; - }, - - - // Given a flat array of segments, return an array of sub-arrays, grouped by each segment's row - groupSegRows: function(segs) { - var segRows = []; - var i; - - for (i = 0; i < this.rowCnt; i++) { - segRows.push([]); - } - - for (i = 0; i < segs.length; i++) { - segRows[segs[i].row].push(segs[i]); - } - - return segRows; - } - -}); - - -// Computes whether two segments' columns collide. They are assumed to be in the same row. -function isDaySegCollision(seg, otherSegs) { - var i, otherSeg; - - for (i = 0; i < otherSegs.length; i++) { - otherSeg = otherSegs[i]; - - if ( - otherSeg.leftCol <= seg.rightCol && - otherSeg.rightCol >= seg.leftCol - ) { - return true; - } - } - - return false; -} - - -// A cmp function for determining the leftmost event -function compareDaySegCols(a, b) { - return a.leftCol - b.leftCol; -} - - /* Methods relate to limiting the number events for a given day on a DayGrid -----------------------------------------------------------------------------------------------------------------------*/ -// NOTE: all the segs being passed around in here are foreground segs - -DayGrid.mixin({ - - segPopover: null, // the Popover that holds events that can't fit in a cell. null when not visible - popoverSegs: null, // an array of segment objects that the segPopover holds. null when not visible - - - destroySegPopover: function() { - if (this.segPopover) { - this.segPopover.hide(); // will trigger destruction of `segPopover` and `popoverSegs` - } - }, - - - // Limits the number of "levels" (vertically stacking layers of events) for each row of the grid. - // `levelLimit` can be false (don't limit), a number, or true (should be computed). - limitRows: function(levelLimit) { - var rowStructs = this.rowStructs || []; - var row; // row # - var rowLevelLimit; - - for (row = 0; row < rowStructs.length; row++) { - this.unlimitRow(row); - - if (!levelLimit) { - rowLevelLimit = false; - } - else if (typeof levelLimit === 'number') { - rowLevelLimit = levelLimit; - } - else { - rowLevelLimit = this.computeRowLevelLimit(row); - } - - if (rowLevelLimit !== false) { - this.limitRow(row, rowLevelLimit); - } - } - }, - - - // Computes the number of levels a row will accomodate without going outside its bounds. - // Assumes the row is "rigid" (maintains a constant height regardless of what is inside). - // `row` is the row number. - computeRowLevelLimit: function(row) { - var rowEl = this.rowEls.eq(row); // the containing "fake" row div - var rowHeight = rowEl.height(); // TODO: cache somehow? - var trEls = this.rowStructs[row].tbodyEl.children(); - var i, trEl; - - // Reveal one level <tr> at a time and stop when we find one out of bounds - for (i = 0; i < trEls.length; i++) { - trEl = trEls.eq(i).removeClass('fc-limited'); // get and reveal - if (trEl.position().top + trEl.outerHeight() > rowHeight) { - return i; - } - } - - return false; // should not limit at all - }, - - - // Limits the given grid row to the maximum number of levels and injects "more" links if necessary. - // `row` is the row number. - // `levelLimit` is a number for the maximum (inclusive) number of levels allowed. - limitRow: function(row, levelLimit) { - var _this = this; - var rowStruct = this.rowStructs[row]; - var moreNodes = []; // array of "more" <a> links and <td> DOM nodes - var col = 0; // col #, left-to-right (not chronologically) - var cell; - var levelSegs; // array of segment objects in the last allowable level, ordered left-to-right - var cellMatrix; // a matrix (by level, then column) of all <td> jQuery elements in the row - var limitedNodes; // array of temporarily hidden level <tr> and segment <td> DOM nodes - var i, seg; - var segsBelow; // array of segment objects below `seg` in the current `col` - var totalSegsBelow; // total number of segments below `seg` in any of the columns `seg` occupies - var colSegsBelow; // array of segment arrays, below seg, one for each column (offset from segs's first column) - var td, rowspan; - var segMoreNodes; // array of "more" <td> cells that will stand-in for the current seg's cell - var j; - var moreTd, moreWrap, moreLink; - - // Iterates through empty level cells and places "more" links inside if need be - function emptyCellsUntil(endCol) { // goes from current `col` to `endCol` - while (col < endCol) { - cell = _this.getCell(row, col); - segsBelow = _this.getCellSegs(cell, levelLimit); - if (segsBelow.length) { - td = cellMatrix[levelLimit - 1][col]; - moreLink = _this.renderMoreLink(cell, segsBelow); - moreWrap = $('<div/>').append(moreLink); - td.append(moreWrap); - moreNodes.push(moreWrap[0]); - } - col++; - } - } - - if (levelLimit && levelLimit < rowStruct.segLevels.length) { // is it actually over the limit? - levelSegs = rowStruct.segLevels[levelLimit - 1]; - cellMatrix = rowStruct.cellMatrix; - - limitedNodes = rowStruct.tbodyEl.children().slice(levelLimit) // get level <tr> elements past the limit - .addClass('fc-limited').get(); // hide elements and get a simple DOM-nodes array - - // iterate though segments in the last allowable level - for (i = 0; i < levelSegs.length; i++) { - seg = levelSegs[i]; - emptyCellsUntil(seg.leftCol); // process empty cells before the segment - - // determine *all* segments below `seg` that occupy the same columns - colSegsBelow = []; - totalSegsBelow = 0; - while (col <= seg.rightCol) { - cell = this.getCell(row, col); - segsBelow = this.getCellSegs(cell, levelLimit); - colSegsBelow.push(segsBelow); - totalSegsBelow += segsBelow.length; - col++; - } - - if (totalSegsBelow) { // do we need to replace this segment with one or many "more" links? - td = cellMatrix[levelLimit - 1][seg.leftCol]; // the segment's parent cell - rowspan = td.attr('rowspan') || 1; - segMoreNodes = []; - - // make a replacement <td> for each column the segment occupies. will be one for each colspan - for (j = 0; j < colSegsBelow.length; j++) { - moreTd = $('<td class="fc-more-cell"/>').attr('rowspan', rowspan); - segsBelow = colSegsBelow[j]; - cell = this.getCell(row, seg.leftCol + j); - moreLink = this.renderMoreLink(cell, [ seg ].concat(segsBelow)); // count seg as hidden too - moreWrap = $('<div/>').append(moreLink); - moreTd.append(moreWrap); - segMoreNodes.push(moreTd[0]); - moreNodes.push(moreTd[0]); - } - - td.addClass('fc-limited').after($(segMoreNodes)); // hide original <td> and inject replacements - limitedNodes.push(td[0]); - } - } - - emptyCellsUntil(this.colCnt); // finish off the level - rowStruct.moreEls = $(moreNodes); // for easy undoing later - rowStruct.limitedEls = $(limitedNodes); // for easy undoing later - } - }, - - - // Reveals all levels and removes all "more"-related elements for a grid's row. - // `row` is a row number. - unlimitRow: function(row) { - var rowStruct = this.rowStructs[row]; - - if (rowStruct.moreEls) { - rowStruct.moreEls.remove(); - rowStruct.moreEls = null; - } - - if (rowStruct.limitedEls) { - rowStruct.limitedEls.removeClass('fc-limited'); - rowStruct.limitedEls = null; - } - }, - - - // Renders an <a> element that represents hidden event element for a cell. - // Responsible for attaching click handler as well. - renderMoreLink: function(cell, hiddenSegs) { - var _this = this; - var view = this.view; - - return $('<a class="fc-more"/>') - .text( - this.getMoreLinkText(hiddenSegs.length) - ) - .on('click', function(ev) { - var clickOption = view.opt('eventLimitClick'); - var date = cell.start; - var moreEl = $(this); - var dayEl = _this.getCellDayEl(cell); - var allSegs = _this.getCellSegs(cell); - - // rescope the segments to be within the cell's date - var reslicedAllSegs = _this.resliceDaySegs(allSegs, date); - var reslicedHiddenSegs = _this.resliceDaySegs(hiddenSegs, date); - - if (typeof clickOption === 'function') { - // the returned value can be an atomic option - clickOption = view.trigger('eventLimitClick', null, { - date: date, - dayEl: dayEl, - moreEl: moreEl, - segs: reslicedAllSegs, - hiddenSegs: reslicedHiddenSegs - }, ev); - } - - if (clickOption === 'popover') { - _this.showSegPopover(cell, moreEl, reslicedAllSegs); - } - else if (typeof clickOption === 'string') { // a view name - view.calendar.zoomTo(date, clickOption); - } - }); - }, - - - // Reveals the popover that displays all events within a cell - showSegPopover: function(cell, moreLink, segs) { - var _this = this; - var view = this.view; - var moreWrap = moreLink.parent(); // the <div> wrapper around the <a> - var topEl; // the element we want to match the top coordinate of - var options; - - if (this.rowCnt == 1) { - topEl = view.el; // will cause the popover to cover any sort of header - } - else { - topEl = this.rowEls.eq(cell.row); // will align with top of row - } - - options = { - className: 'fc-more-popover', - content: this.renderSegPopoverContent(cell, segs), - parentEl: this.el, - top: topEl.offset().top, - autoHide: true, // when the user clicks elsewhere, hide the popover - viewportConstrain: view.opt('popoverViewportConstrain'), - hide: function() { - // destroy everything when the popover is hidden - _this.segPopover.destroy(); - _this.segPopover = null; - _this.popoverSegs = null; - } - }; - - // Determine horizontal coordinate. - // We use the moreWrap instead of the <td> to avoid border confusion. - if (this.isRTL) { - options.right = moreWrap.offset().left + moreWrap.outerWidth() + 1; // +1 to be over cell border - } - else { - options.left = moreWrap.offset().left - 1; // -1 to be over cell border - } - - this.segPopover = new Popover(options); - this.segPopover.show(); - }, - - - // Builds the inner DOM contents of the segment popover - renderSegPopoverContent: function(cell, segs) { - var view = this.view; - var isTheme = view.opt('theme'); - var title = cell.start.format(view.opt('dayPopoverFormat')); - var content = $( - '<div class="fc-header ' + view.widgetHeaderClass + '">' + - '<span class="fc-close ' + - (isTheme ? 'ui-icon ui-icon-closethick' : 'fc-icon fc-icon-x') + - '"></span>' + - '<span class="fc-title">' + - htmlEscape(title) + - '</span>' + - '<div class="fc-clear"/>' + - '</div>' + - '<div class="fc-body ' + view.widgetContentClass + '">' + - '<div class="fc-event-container"></div>' + - '</div>' - ); - var segContainer = content.find('.fc-event-container'); - var i; - - // render each seg's `el` and only return the visible segs - segs = this.renderFgSegEls(segs, true); // disableResizing=true - this.popoverSegs = segs; - - for (i = 0; i < segs.length; i++) { - - // because segments in the popover are not part of a grid coordinate system, provide a hint to any - // grids that want to do drag-n-drop about which cell it came from - segs[i].cell = cell; - - segContainer.append(segs[i].el); - } - - return content; - }, - - - // Given the events within an array of segment objects, reslice them to be in a single day - resliceDaySegs: function(segs, dayDate) { - - // build an array of the original events - var events = $.map(segs, function(seg) { - return seg.event; - }); - - var dayStart = dayDate.clone().stripTime(); - var dayEnd = dayStart.clone().add(1, 'days'); - var dayRange = { start: dayStart, end: dayEnd }; - - // slice the events with a custom slicing function - return this.eventsToSegs( - events, - function(range) { - var seg = intersectionToSeg(range, dayRange); // undefind if no intersection - return seg ? [ seg ] : []; // must return an array of segments - } - ); - }, - - - // Generates the text that should be inside a "more" link, given the number of events it represents - getMoreLinkText: function(num) { - var opt = this.view.opt('eventLimitText'); - - if (typeof opt === 'function') { - return opt(num); - } - else { - return '+' + num + ' ' + opt; - } - }, - - - // Returns segments within a given cell. - // If `startLevel` is specified, returns only events including and below that level. Otherwise returns all segs. - getCellSegs: function(cell, startLevel) { - var segMatrix = this.rowStructs[cell.row].segMatrix; - var level = startLevel || 0; - var segs = []; - var seg; - - while (level < segMatrix.length) { - seg = segMatrix[level][cell.col]; - if (seg) { - segs.push(seg); - } - level++; - } - - return segs; - } - -}); - - /* A component that renders one or more columns of vertical time slots -----------------------------------------------------------------------------------------------------------------------*/ - -var TimeGrid = Grid.extend({ - - slotDuration: null, // duration of a "slot", a distinct time segment on given day, visualized by lines - snapDuration: null, // granularity of time for dragging and selecting - - minTime: null, // Duration object that denotes the first visible time of any given day - maxTime: null, // Duration object that denotes the exclusive visible end time of any given day - - axisFormat: null, // formatting string for times running along vertical axis - - dayEls: null, // cells elements in the day-row background - slatEls: null, // elements running horizontally across all columns - - slatTops: null, // an array of top positions, relative to the container. last item holds bottom of last slot - - helperEl: null, // cell skeleton element for rendering the mock event "helper" - - businessHourSegs: null, - - - constructor: function() { - Grid.apply(this, arguments); // call the super-constructor - this.processOptions(); - }, - - - // Renders the time grid into `this.el`, which should already be assigned. - // Relies on the view's colCnt. In the future, this component should probably be self-sufficient. - render: function() { - this.el.html(this.renderHtml()); - this.dayEls = this.el.find('.fc-day'); - this.slatEls = this.el.find('.fc-slats tr'); - - this.computeSlatTops(); - this.renderBusinessHours(); - Grid.prototype.render.call(this); // call the super-method - }, - - - renderBusinessHours: function() { - var events = this.view.calendar.getBusinessHoursEvents(); - this.businessHourSegs = this.renderFill('businessHours', this.eventsToSegs(events), 'bgevent'); - }, - - - // Renders the basic HTML skeleton for the grid - renderHtml: function() { - return '' + - '<div class="fc-bg">' + - '<table>' + - this.rowHtml('slotBg') + // leverages RowRenderer, which will call slotBgCellHtml - '</table>' + - '</div>' + - '<div class="fc-slats">' + - '<table>' + - this.slatRowHtml() + - '</table>' + - '</div>'; - }, - - - // Renders the HTML for a vertical background cell behind the slots. - // This method is distinct from 'bg' because we wanted a new `rowType` so the View could customize the rendering. - slotBgCellHtml: function(cell) { - return this.bgCellHtml(cell); - }, - - - // Generates the HTML for the horizontal "slats" that run width-wise. Has a time axis on a side. Depends on RTL. - slatRowHtml: function() { - var view = this.view; - var isRTL = this.isRTL; - var html = ''; - var slotNormal = this.slotDuration.asMinutes() % 15 === 0; - var slotTime = moment.duration(+this.minTime); // wish there was .clone() for durations - var slotDate; // will be on the view's first day, but we only care about its time - var minutes; - var axisHtml; - - // Calculate the time for each slot - while (slotTime < this.maxTime) { - slotDate = this.start.clone().time(slotTime); // will be in UTC but that's good. to avoid DST issues - minutes = slotDate.minutes(); - - axisHtml = - '<td class="fc-axis fc-time ' + view.widgetContentClass + '" ' + view.axisStyleAttr() + '>' + - ((!slotNormal || !minutes) ? // if irregular slot duration, or on the hour, then display the time - '<span>' + // for matchCellWidths - htmlEscape(slotDate.format(this.axisFormat)) + - '</span>' : - '' - ) + - '</td>'; - - html += - '<tr ' + (!minutes ? '' : 'class="fc-minor"') + '>' + - (!isRTL ? axisHtml : '') + - '<td class="' + view.widgetContentClass + '"/>' + - (isRTL ? axisHtml : '') + - "</tr>"; - - slotTime.add(this.slotDuration); - } - - return html; - }, - - - /* Options - ------------------------------------------------------------------------------------------------------------------*/ - - - // Parses various options into properties of this object - processOptions: function() { - var view = this.view; - var slotDuration = view.opt('slotDuration'); - var snapDuration = view.opt('snapDuration'); - - slotDuration = moment.duration(slotDuration); - snapDuration = snapDuration ? moment.duration(snapDuration) : slotDuration; - - this.slotDuration = slotDuration; - this.snapDuration = snapDuration; - - this.minTime = moment.duration(view.opt('minTime')); - this.maxTime = moment.duration(view.opt('maxTime')); - - this.axisFormat = view.opt('axisFormat') || view.opt('smallTimeFormat'); - }, - - - // Computes a default column header formatting string if `colFormat` is not explicitly defined - computeColHeadFormat: function() { - if (this.colCnt > 1) { // multiple days, so full single date string WON'T be in title text - return this.view.opt('dayOfMonthFormat'); // "Sat 12/10" - } - else { // single day, so full single date string will probably be in title text - return 'dddd'; // "Saturday" - } - }, - - - // Computes a default event time formatting string if `timeFormat` is not explicitly defined - computeEventTimeFormat: function() { - return this.view.opt('noMeridiemTimeFormat'); // like "6:30" (no AM/PM) - }, - - - // Computes a default `displayEventEnd` value if one is not expliclty defined - computeDisplayEventEnd: function() { - return true; - }, - - - /* Cell System - ------------------------------------------------------------------------------------------------------------------*/ - - - // Initializes row/col information - updateCells: function() { - var view = this.view; - var colData = []; - var date; - - date = this.start.clone(); - while (date.isBefore(this.end)) { - colData.push({ - day: date.clone() - }); - date.add(1, 'day'); - date = view.skipHiddenDays(date); - } - - if (this.isRTL) { - colData.reverse(); - } - - this.colData = colData; - this.colCnt = colData.length; - this.rowCnt = Math.ceil((this.maxTime - this.minTime) / this.snapDuration); // # of vertical snaps - }, - - - // Given a cell object, generates a range object - computeCellRange: function(cell) { - var time = this.computeSnapTime(cell.row); - var start = this.view.calendar.rezoneDate(cell.day).time(time); - var end = start.clone().add(this.snapDuration); - - return { start: start, end: end }; - }, - - - // Retrieves the element representing the given column - getColEl: function(col) { - return this.dayEls.eq(col); - }, - - - /* Dates - ------------------------------------------------------------------------------------------------------------------*/ - - - // Given a row number of the grid, representing a "snap", returns a time (Duration) from its start-of-day - computeSnapTime: function(row) { - return moment.duration(this.minTime + this.snapDuration * row); - }, - - - // Slices up a date range by column into an array of segments - rangeToSegs: function(range) { - var colCnt = this.colCnt; - var segs = []; - var seg; - var col; - var colDate; - var colRange; - - // normalize :( - range = { - start: range.start.clone().stripZone(), - end: range.end.clone().stripZone() - }; - - for (col = 0; col < colCnt; col++) { - colDate = this.colData[col].day; // will be ambig time/timezone - colRange = { - start: colDate.clone().time(this.minTime), - end: colDate.clone().time(this.maxTime) - }; - seg = intersectionToSeg(range, colRange); // both will be ambig timezone - if (seg) { - seg.col = col; - segs.push(seg); - } - } - - return segs; - }, - - - /* Coordinates - ------------------------------------------------------------------------------------------------------------------*/ - - - // Called when there is a window resize/zoom and we need to recalculate coordinates for the grid - resize: function() { - this.computeSlatTops(); - this.updateSegVerticals(); - }, - - - // Computes the top/bottom coordinates of each "snap" rows - computeRowCoords: function() { - var originTop = this.el.offset().top; - var items = []; - var i; - var item; - - for (i = 0; i < this.rowCnt; i++) { - item = { - top: originTop + this.computeTimeTop(this.computeSnapTime(i)) - }; - if (i > 0) { - items[i - 1].bottom = item.top; - } - items.push(item); - } - item.bottom = item.top + this.computeTimeTop(this.computeSnapTime(i)); - - return items; - }, - - - // Computes the top coordinate, relative to the bounds of the grid, of the given date. - // A `startOfDayDate` must be given for avoiding ambiguity over how to treat midnight. - computeDateTop: function(date, startOfDayDate) { - return this.computeTimeTop( - moment.duration( - date.clone().stripZone() - startOfDayDate.clone().stripTime() - ) - ); - }, - - - // Computes the top coordinate, relative to the bounds of the grid, of the given time (a Duration). - computeTimeTop: function(time) { - var slatCoverage = (time - this.minTime) / this.slotDuration; // floating-point value of # of slots covered - var slatIndex; - var slatRemainder; - var slatTop; - var slatBottom; - - // constrain. because minTime/maxTime might be customized - slatCoverage = Math.max(0, slatCoverage); - slatCoverage = Math.min(this.slatEls.length, slatCoverage); - - slatIndex = Math.floor(slatCoverage); // an integer index of the furthest whole slot - slatRemainder = slatCoverage - slatIndex; - slatTop = this.slatTops[slatIndex]; // the top position of the furthest whole slot - - if (slatRemainder) { // time spans part-way into the slot - slatBottom = this.slatTops[slatIndex + 1]; - return slatTop + (slatBottom - slatTop) * slatRemainder; // part-way between slots - } - else { - return slatTop; - } - }, - - - // Queries each `slatEl` for its position relative to the grid's container and stores it in `slatTops`. - // Includes the the bottom of the last slat as the last item in the array. - computeSlatTops: function() { - var tops = []; - var top; - - this.slatEls.each(function(i, node) { - top = $(node).position().top; - tops.push(top); - }); - - tops.push(top + this.slatEls.last().outerHeight()); // bottom of the last slat - - this.slatTops = tops; - }, - - - /* Event Drag Visualization - ------------------------------------------------------------------------------------------------------------------*/ - - - // Renders a visual indication of an event being dragged over the specified date(s). - // dropLocation's end might be null, as well as `seg`. See Grid::renderDrag for more info. - // A returned value of `true` signals that a mock "helper" event has been rendered. - renderDrag: function(dropLocation, seg) { - var opacity; - - if (seg) { // if there is event information for this drag, render a helper event - this.renderRangeHelper(dropLocation, seg); - - opacity = this.view.opt('dragOpacity'); - if (opacity !== undefined) { - this.helperEl.css('opacity', opacity); - } - - return true; // signal that a helper has been rendered - } - else { - // otherwise, just render a highlight - this.renderHighlight( - this.view.calendar.ensureVisibleEventRange(dropLocation) // needs to be a proper range - ); - } - }, - - - // Unrenders any visual indication of an event being dragged - destroyDrag: function() { - this.destroyHelper(); - this.destroyHighlight(); - }, - - - /* Event Resize Visualization - ------------------------------------------------------------------------------------------------------------------*/ - - - // Renders a visual indication of an event being resized - renderEventResize: function(range, seg) { - this.renderRangeHelper(range, seg); - }, - - - // Unrenders any visual indication of an event being resized - destroyEventResize: function() { - this.destroyHelper(); - }, - - - /* Event Helper - ------------------------------------------------------------------------------------------------------------------*/ - - - // Renders a mock "helper" event. `sourceSeg` is the original segment object and might be null (an external drag) - renderHelper: function(event, sourceSeg) { - var segs = this.eventsToSegs([ event ]); - var tableEl; - var i, seg; - var sourceEl; - - segs = this.renderFgSegEls(segs); // assigns each seg's el and returns a subset of segs that were rendered - tableEl = this.renderSegTable(segs); - - // Try to make the segment that is in the same row as sourceSeg look the same - for (i = 0; i < segs.length; i++) { - seg = segs[i]; - if (sourceSeg && sourceSeg.col === seg.col) { - sourceEl = sourceSeg.el; - seg.el.css({ - left: sourceEl.css('left'), - right: sourceEl.css('right'), - 'margin-left': sourceEl.css('margin-left'), - 'margin-right': sourceEl.css('margin-right') - }); - } - } - - this.helperEl = $('<div class="fc-helper-skeleton"/>') - .append(tableEl) - .appendTo(this.el); - }, - - - // Unrenders any mock helper event - destroyHelper: function() { - if (this.helperEl) { - this.helperEl.remove(); - this.helperEl = null; - } - }, - - - /* Selection - ------------------------------------------------------------------------------------------------------------------*/ - - - // Renders a visual indication of a selection. Overrides the default, which was to simply render a highlight. - renderSelection: function(range) { - if (this.view.opt('selectHelper')) { // this setting signals that a mock helper event should be rendered - this.renderRangeHelper(range); - } - else { - this.renderHighlight(range); - } - }, - - - // Unrenders any visual indication of a selection - destroySelection: function() { - this.destroyHelper(); - this.destroyHighlight(); - }, - - - /* Fill System (highlight, background events, business hours) - ------------------------------------------------------------------------------------------------------------------*/ - - - // Renders a set of rectangles over the given time segments. - // Only returns segments that successfully rendered. - renderFill: function(type, segs, className) { - var segCols; - var skeletonEl; - var trEl; - var col, colSegs; - var tdEl; - var containerEl; - var dayDate; - var i, seg; - - if (segs.length) { - - segs = this.renderFillSegEls(type, segs); // assignes `.el` to each seg. returns successfully rendered segs - segCols = this.groupSegCols(segs); // group into sub-arrays, and assigns 'col' to each seg - - className = className || type.toLowerCase(); - skeletonEl = $( - '<div class="fc-' + className + '-skeleton">' + - '<table><tr/></table>' + - '</div>' - ); - trEl = skeletonEl.find('tr'); - - for (col = 0; col < segCols.length; col++) { - colSegs = segCols[col]; - tdEl = $('<td/>').appendTo(trEl); - - if (colSegs.length) { - containerEl = $('<div class="fc-' + className + '-container"/>').appendTo(tdEl); - dayDate = this.colData[col].day; - - for (i = 0; i < colSegs.length; i++) { - seg = colSegs[i]; - containerEl.append( - seg.el.css({ - top: this.computeDateTop(seg.start, dayDate), - bottom: -this.computeDateTop(seg.end, dayDate) // the y position of the bottom edge - }) - ); - } - } - } - - this.bookendCells(trEl, type); - - this.el.append(skeletonEl); - this.elsByFill[type] = skeletonEl; - } - - return segs; - } - -}); - - /* Event-rendering methods for the TimeGrid class -----------------------------------------------------------------------------------------------------------------------*/ - -TimeGrid.mixin({ - - eventSkeletonEl: null, // has cells with event-containers, which contain absolutely positioned event elements - - - // Renders the given foreground event segments onto the grid - renderFgSegs: function(segs) { - segs = this.renderFgSegEls(segs); // returns a subset of the segs. segs that were actually rendered - - this.el.append( - this.eventSkeletonEl = $('<div class="fc-content-skeleton"/>') - .append(this.renderSegTable(segs)) - ); - - return segs; // return only the segs that were actually rendered - }, - - - // Unrenders all currently rendered foreground event segments - destroyFgSegs: function(segs) { - if (this.eventSkeletonEl) { - this.eventSkeletonEl.remove(); - this.eventSkeletonEl = null; - } - }, - - - // Renders and returns the <table> portion of the event-skeleton. - // Returns an object with properties 'tbodyEl' and 'segs'. - renderSegTable: function(segs) { - var tableEl = $('<table><tr/></table>'); - var trEl = tableEl.find('tr'); - var segCols; - var i, seg; - var col, colSegs; - var containerEl; - - segCols = this.groupSegCols(segs); // group into sub-arrays, and assigns 'col' to each seg - - this.computeSegVerticals(segs); // compute and assign top/bottom - - for (col = 0; col < segCols.length; col++) { // iterate each column grouping - colSegs = segCols[col]; - placeSlotSegs(colSegs); // compute horizontal coordinates, z-index's, and reorder the array - - containerEl = $('<div class="fc-event-container"/>'); - - // assign positioning CSS and insert into container - for (i = 0; i < colSegs.length; i++) { - seg = colSegs[i]; - seg.el.css(this.generateSegPositionCss(seg)); - - // if the height is short, add a className for alternate styling - if (seg.bottom - seg.top < 30) { - seg.el.addClass('fc-short'); - } - - containerEl.append(seg.el); - } - - trEl.append($('<td/>').append(containerEl)); - } - - this.bookendCells(trEl, 'eventSkeleton'); - - return tableEl; - }, - - - // Refreshes the CSS top/bottom coordinates for each segment element. Probably after a window resize/zoom. - // Repositions business hours segs too, so not just for events. Maybe shouldn't be here. - updateSegVerticals: function() { - var allSegs = (this.segs || []).concat(this.businessHourSegs || []); - var i; - - this.computeSegVerticals(allSegs); - - for (i = 0; i < allSegs.length; i++) { - allSegs[i].el.css( - this.generateSegVerticalCss(allSegs[i]) - ); - } - }, - - - // For each segment in an array, computes and assigns its top and bottom properties - computeSegVerticals: function(segs) { - var i, seg; - - for (i = 0; i < segs.length; i++) { - seg = segs[i]; - seg.top = this.computeDateTop(seg.start, seg.start); - seg.bottom = this.computeDateTop(seg.end, seg.start); - } - }, - - - // Renders the HTML for a single event segment's default rendering - fgSegHtml: function(seg, disableResizing) { - var view = this.view; - var event = seg.event; - var isDraggable = view.isEventDraggable(event); - var isResizable = !disableResizing && seg.isEnd && view.isEventResizable(event); - var classes = this.getSegClasses(seg, isDraggable, isResizable); - var skinCss = this.getEventSkinCss(event); - var timeText; - var fullTimeText; // more verbose time text. for the print stylesheet - var startTimeText; // just the start time text - - classes.unshift('fc-time-grid-event'); - - if (view.isMultiDayEvent(event)) { // if the event appears to span more than one day... - // Don't display time text on segments that run entirely through a day. - // That would appear as midnight-midnight and would look dumb. - // Otherwise, display the time text for the *segment's* times (like 6pm-midnight or midnight-10am) - if (seg.isStart || seg.isEnd) { - timeText = this.getEventTimeText(seg); - fullTimeText = this.getEventTimeText(seg, 'LT'); - startTimeText = this.getEventTimeText({ start: seg.start }); - } - } else { - // Display the normal time text for the *event's* times - timeText = this.getEventTimeText(event); - fullTimeText = this.getEventTimeText(event, 'LT'); - startTimeText = this.getEventTimeText({ start: event.start }); - } - - return '<a class="' + classes.join(' ') + '"' + - (event.url ? - ' href="' + htmlEscape(event.url) + '"' : - '' - ) + - (skinCss ? - ' style="' + skinCss + '"' : - '' - ) + - '>' + - '<div class="fc-content">' + - (timeText ? - '<div class="fc-time"' + - ' data-start="' + htmlEscape(startTimeText) + '"' + - ' data-full="' + htmlEscape(fullTimeText) + '"' + - '>' + - '<span>' + htmlEscape(timeText) + '</span>' + - '</div>' : - '' - ) + - (event.title ? - '<div class="fc-title">' + - htmlEscape(event.title) + - '</div>' : - '' - ) + - '</div>' + - '<div class="fc-bg"/>' + - (isResizable ? - '<div class="fc-resizer"/>' : - '' - ) + - '</a>'; - }, - - - // Generates an object with CSS properties/values that should be applied to an event segment element. - // Contains important positioning-related properties that should be applied to any event element, customized or not. - generateSegPositionCss: function(seg) { - var shouldOverlap = this.view.opt('slotEventOverlap'); - var backwardCoord = seg.backwardCoord; // the left side if LTR. the right side if RTL. floating-point - var forwardCoord = seg.forwardCoord; // the right side if LTR. the left side if RTL. floating-point - var props = this.generateSegVerticalCss(seg); // get top/bottom first - var left; // amount of space from left edge, a fraction of the total width - var right; // amount of space from right edge, a fraction of the total width - - if (shouldOverlap) { - // double the width, but don't go beyond the maximum forward coordinate (1.0) - forwardCoord = Math.min(1, backwardCoord + (forwardCoord - backwardCoord) * 2); - } - - if (this.isRTL) { - left = 1 - forwardCoord; - right = backwardCoord; - } - else { - left = backwardCoord; - right = 1 - forwardCoord; - } - - props.zIndex = seg.level + 1; // convert from 0-base to 1-based - props.left = left * 100 + '%'; - props.right = right * 100 + '%'; - - if (shouldOverlap && seg.forwardPressure) { - // add padding to the edge so that forward stacked events don't cover the resizer's icon - props[this.isRTL ? 'marginLeft' : 'marginRight'] = 10 * 2; // 10 is a guesstimate of the icon's width - } - - return props; - }, - - - // Generates an object with CSS properties for the top/bottom coordinates of a segment element - generateSegVerticalCss: function(seg) { - return { - top: seg.top, - bottom: -seg.bottom // flipped because needs to be space beyond bottom edge of event container - }; - }, - - - // Given a flat array of segments, return an array of sub-arrays, grouped by each segment's col - groupSegCols: function(segs) { - var segCols = []; - var i; - - for (i = 0; i < this.colCnt; i++) { - segCols.push([]); - } - - for (i = 0; i < segs.length; i++) { - segCols[segs[i].col].push(segs[i]); - } - - return segCols; - } - -}); - - -// Given an array of segments that are all in the same column, sets the backwardCoord and forwardCoord on each. -// Also reorders the given array by date! -function placeSlotSegs(segs) { - var levels; - var level0; - var i; - - segs.sort(compareSegs); // order by date - levels = buildSlotSegLevels(segs); - computeForwardSlotSegs(levels); - - if ((level0 = levels[0])) { - - for (i = 0; i < level0.length; i++) { - computeSlotSegPressures(level0[i]); - } - - for (i = 0; i < level0.length; i++) { - computeSlotSegCoords(level0[i], 0, 0); - } - } -} - - -// Builds an array of segments "levels". The first level will be the leftmost tier of segments if the calendar is -// left-to-right, or the rightmost if the calendar is right-to-left. Assumes the segments are already ordered by date. -function buildSlotSegLevels(segs) { - var levels = []; - var i, seg; - var j; - - for (i=0; i<segs.length; i++) { - seg = segs[i]; - - // go through all the levels and stop on the first level where there are no collisions - for (j=0; j<levels.length; j++) { - if (!computeSlotSegCollisions(seg, levels[j]).length) { - break; - } - } - - seg.level = j; - - (levels[j] || (levels[j] = [])).push(seg); - } - - return levels; -} - - -// For every segment, figure out the other segments that are in subsequent -// levels that also occupy the same vertical space. Accumulate in seg.forwardSegs -function computeForwardSlotSegs(levels) { - var i, level; - var j, seg; - var k; - - for (i=0; i<levels.length; i++) { - level = levels[i]; - - for (j=0; j<level.length; j++) { - seg = level[j]; - - seg.forwardSegs = []; - for (k=i+1; k<levels.length; k++) { - computeSlotSegCollisions(seg, levels[k], seg.forwardSegs); - } - } - } -} - - -// Figure out which path forward (via seg.forwardSegs) results in the longest path until -// the furthest edge is reached. The number of segments in this path will be seg.forwardPressure -function computeSlotSegPressures(seg) { - var forwardSegs = seg.forwardSegs; - var forwardPressure = 0; - var i, forwardSeg; - - if (seg.forwardPressure === undefined) { // not already computed - - for (i=0; i<forwardSegs.length; i++) { - forwardSeg = forwardSegs[i]; - - // figure out the child's maximum forward path - computeSlotSegPressures(forwardSeg); - - // either use the existing maximum, or use the child's forward pressure - // plus one (for the forwardSeg itself) - forwardPressure = Math.max( - forwardPressure, - 1 + forwardSeg.forwardPressure - ); - } - - seg.forwardPressure = forwardPressure; - } -} - - -// Calculate seg.forwardCoord and seg.backwardCoord for the segment, where both values range -// from 0 to 1. If the calendar is left-to-right, the seg.backwardCoord maps to "left" and -// seg.forwardCoord maps to "right" (via percentage). Vice-versa if the calendar is right-to-left. -// -// The segment might be part of a "series", which means consecutive segments with the same pressure -// who's width is unknown until an edge has been hit. `seriesBackwardPressure` is the number of -// segments behind this one in the current series, and `seriesBackwardCoord` is the starting -// coordinate of the first segment in the series. -function computeSlotSegCoords(seg, seriesBackwardPressure, seriesBackwardCoord) { - var forwardSegs = seg.forwardSegs; - var i; - - if (seg.forwardCoord === undefined) { // not already computed - - if (!forwardSegs.length) { - - // if there are no forward segments, this segment should butt up against the edge - seg.forwardCoord = 1; - } - else { - - // sort highest pressure first - forwardSegs.sort(compareForwardSlotSegs); - - // this segment's forwardCoord will be calculated from the backwardCoord of the - // highest-pressure forward segment. - computeSlotSegCoords(forwardSegs[0], seriesBackwardPressure + 1, seriesBackwardCoord); - seg.forwardCoord = forwardSegs[0].backwardCoord; - } - - // calculate the backwardCoord from the forwardCoord. consider the series - seg.backwardCoord = seg.forwardCoord - - (seg.forwardCoord - seriesBackwardCoord) / // available width for series - (seriesBackwardPressure + 1); // # of segments in the series - - // use this segment's coordinates to computed the coordinates of the less-pressurized - // forward segments - for (i=0; i<forwardSegs.length; i++) { - computeSlotSegCoords(forwardSegs[i], 0, seg.forwardCoord); - } - } -} - - -// Find all the segments in `otherSegs` that vertically collide with `seg`. -// Append into an optionally-supplied `results` array and return. -function computeSlotSegCollisions(seg, otherSegs, results) { - results = results || []; - - for (var i=0; i<otherSegs.length; i++) { - if (isSlotSegCollision(seg, otherSegs[i])) { - results.push(otherSegs[i]); - } - } - - return results; -} - - -// Do these segments occupy the same vertical space? -function isSlotSegCollision(seg1, seg2) { - return seg1.bottom > seg2.top && seg1.top < seg2.bottom; -} - - -// A cmp function for determining which forward segment to rely on more when computing coordinates. -function compareForwardSlotSegs(seg1, seg2) { - // put higher-pressure first - return seg2.forwardPressure - seg1.forwardPressure || - // put segments that are closer to initial edge first (and favor ones with no coords yet) - (seg1.backwardCoord || 0) - (seg2.backwardCoord || 0) || - // do normal sorting... - compareSegs(seg1, seg2); -} - - /* An abstract class from which other views inherit from -----------------------------------------------------------------------------------------------------------------------*/ - -var View = fc.View = Class.extend({ - - type: null, // subclass' view name (string) - name: null, // deprecated. use `type` instead - - calendar: null, // owner Calendar object - options: null, // view-specific options - coordMap: null, // a CoordMap object for converting pixel regions to dates - el: null, // the view's containing element. set by Calendar - - // range the view is actually displaying (moments) - start: null, - end: null, // exclusive - - // range the view is formally responsible for (moments) - // may be different from start/end. for example, a month view might have 1st-31st, excluding padded dates - intervalStart: null, - intervalEnd: null, // exclusive - - intervalDuration: null, // the whole-unit duration that is being displayed - intervalUnit: null, // name of largest unit being displayed, like "month" or "week" - - isSelected: false, // boolean whether a range of time is user-selected or not - - // subclasses can optionally use a scroll container - scrollerEl: null, // the element that will most likely scroll when content is too tall - scrollTop: null, // cached vertical scroll value - - // classNames styled by jqui themes - widgetHeaderClass: null, - widgetContentClass: null, - highlightStateClass: null, - - // for date utils, computed from options - nextDayThreshold: null, - isHiddenDayHash: null, - - // document handlers, bound to `this` object - documentMousedownProxy: null, // TODO: doesn't work with touch - - - constructor: function(calendar, viewOptions, viewType) { - this.calendar = calendar; - this.options = viewOptions; - this.type = this.name = viewType; // .name is deprecated - - this.nextDayThreshold = moment.duration(this.opt('nextDayThreshold')); - this.initTheming(); - this.initHiddenDays(); - - this.documentMousedownProxy = $.proxy(this, 'documentMousedown'); - - this.initialize(); - }, - - - // A good place for subclasses to initialize member variables - initialize: function() { - // subclasses can implement - }, - - - // Retrieves an option with the given name - opt: function(name) { - var val; - - val = this.options[name]; // look at view-specific options first - if (val !== undefined) { - return val; - } - - val = this.calendar.options[name]; - if ($.isPlainObject(val) && !isForcedAtomicOption(name)) { // view-option-hashes are deprecated - return smartProperty(val, this.type); - } - - return val; - }, - - - // Triggers handlers that are view-related. Modifies args before passing to calendar. - trigger: function(name, thisObj) { // arguments beyond thisObj are passed along - var calendar = this.calendar; - - return calendar.trigger.apply( - calendar, - [name, thisObj || this].concat( - Array.prototype.slice.call(arguments, 2), // arguments beyond thisObj - [ this ] // always make the last argument a reference to the view. TODO: deprecate - ) - ); - }, - - - /* Dates - ------------------------------------------------------------------------------------------------------------------*/ - - - // Updates all internal dates to center around the given current date - setDate: function(date) { - this.setRange(this.computeRange(date)); - }, - - - // Updates all internal dates for displaying the given range. - // Expects all values to be normalized (like what computeRange does). - setRange: function(range) { - $.extend(this, range); - }, - - - // Given a single current date, produce information about what range to display. - // Subclasses can override. Must return all properties. - computeRange: function(date) { - var intervalDuration = moment.duration(this.opt('duration') || this.constructor.duration || { days: 1 }); - var intervalUnit = computeIntervalUnit(intervalDuration); - var intervalStart = date.clone().startOf(intervalUnit); - var intervalEnd = intervalStart.clone().add(intervalDuration); - var start, end; - - // normalize the range's time-ambiguity - if (computeIntervalAs('days', intervalDuration)) { // whole-days? - intervalStart.stripTime(); - intervalEnd.stripTime(); - } - else { // needs to have a time? - if (!intervalStart.hasTime()) { - intervalStart = this.calendar.rezoneDate(intervalStart); // convert to current timezone, with 00:00 - } - if (!intervalEnd.hasTime()) { - intervalEnd = this.calendar.rezoneDate(intervalEnd); // convert to current timezone, with 00:00 - } - } - - start = intervalStart.clone(); - start = this.skipHiddenDays(start); - end = intervalEnd.clone(); - end = this.skipHiddenDays(end, -1, true); // exclusively move backwards - - return { - intervalDuration: intervalDuration, - intervalUnit: intervalUnit, - intervalStart: intervalStart, - intervalEnd: intervalEnd, - start: start, - end: end - }; - }, - - - // Computes the new date when the user hits the prev button, given the current date - computePrevDate: function(date) { - return this.skipHiddenDays( - date.clone().startOf(this.intervalUnit).subtract(this.intervalDuration), -1 - ); - }, - - - // Computes the new date when the user hits the next button, given the current date - computeNextDate: function(date) { - return this.skipHiddenDays( - date.clone().startOf(this.intervalUnit).add(this.intervalDuration) - ); - }, - - - /* Title and Date Formatting - ------------------------------------------------------------------------------------------------------------------*/ - - - // Computes what the title at the top of the calendar should be for this view - computeTitle: function() { - return this.formatRange( - { start: this.intervalStart, end: this.intervalEnd }, - this.opt('titleFormat') || this.computeTitleFormat(), - this.opt('titleRangeSeparator') - ); - }, - - - // Generates the format string that should be used to generate the title for the current date range. - // Attempts to compute the most appropriate format if not explicitly specified with `titleFormat`. - computeTitleFormat: function() { - if (this.intervalUnit == 'year') { - return 'YYYY'; - } - else if (this.intervalUnit == 'month') { - return this.opt('monthYearFormat'); // like "September 2014" - } - else if (this.intervalDuration.as('days') > 1) { - return 'll'; // multi-day range. shorter, like "Sep 9 - 10 2014" - } - else { - return 'LL'; // one day. longer, like "September 9 2014" - } - }, - - - // Utility for formatting a range. Accepts a range object, formatting string, and optional separator. - // Displays all-day ranges naturally, with an inclusive end. Takes the current isRTL into account. - formatRange: function(range, formatStr, separator) { - var end = range.end; - - if (!end.hasTime()) { // all-day? - end = end.clone().subtract(1); // convert to inclusive. last ms of previous day - } - - return formatRange(range.start, end, formatStr, separator, this.opt('isRTL')); - }, - - - /* Rendering - ------------------------------------------------------------------------------------------------------------------*/ - - - // Wraps the basic render() method with more View-specific logic. Called by the owner Calendar. - renderView: function() { - this.render(); - this.updateSize(); - this.initializeScroll(); - this.trigger('viewRender', this, this, this.el); - - // attach handlers to document. do it here to allow for destroy/rerender - $(document).on('mousedown', this.documentMousedownProxy); - }, - - - // Renders the view inside an already-defined `this.el` - render: function() { - // subclasses should implement - }, - - - // Wraps the basic destroy() method with more View-specific logic. Called by the owner Calendar. - destroyView: function() { - this.unselect(); - this.destroyViewEvents(); - this.destroy(); - this.trigger('viewDestroy', this, this, this.el); - - $(document).off('mousedown', this.documentMousedownProxy); - }, - - - // Clears the view's rendering - destroy: function() { - this.el.empty(); // removes inner contents but leaves the element intact - }, - - - // Initializes internal variables related to theming - initTheming: function() { - var tm = this.opt('theme') ? 'ui' : 'fc'; - - this.widgetHeaderClass = tm + '-widget-header'; - this.widgetContentClass = tm + '-widget-content'; - this.highlightStateClass = tm + '-state-highlight'; - }, - - - /* Dimensions - ------------------------------------------------------------------------------------------------------------------*/ - - - // Refreshes anything dependant upon sizing of the container element of the grid - updateSize: function(isResize) { - if (isResize) { - this.recordScroll(); - } - this.updateHeight(); - this.updateWidth(); - }, - - - // Refreshes the horizontal dimensions of the calendar - updateWidth: function() { - // subclasses should implement - }, - - - // Refreshes the vertical dimensions of the calendar - updateHeight: function() { - var calendar = this.calendar; // we poll the calendar for height information - - this.setHeight( - calendar.getSuggestedViewHeight(), - calendar.isHeightAuto() - ); - }, - - - // Updates the vertical dimensions of the calendar to the specified height. - // if `isAuto` is set to true, height becomes merely a suggestion and the view should use its "natural" height. - setHeight: function(height, isAuto) { - // subclasses should implement - }, - - - /* Scroller - ------------------------------------------------------------------------------------------------------------------*/ - - - // Given the total height of the view, return the number of pixels that should be used for the scroller. - // By default, uses this.scrollerEl, but can pass this in as well. - // Utility for subclasses. - computeScrollerHeight: function(totalHeight, scrollerEl) { - var both; - var otherHeight; // cumulative height of everything that is not the scrollerEl in the view (header+borders) - - scrollerEl = scrollerEl || this.scrollerEl; - both = this.el.add(scrollerEl); - - // fuckin IE8/9/10/11 sometimes returns 0 for dimensions. this weird hack was the only thing that worked - both.css({ - position: 'relative', // cause a reflow, which will force fresh dimension recalculation - left: -1 // ensure reflow in case the el was already relative. negative is less likely to cause new scroll - }); - otherHeight = this.el.outerHeight() - scrollerEl.height(); // grab the dimensions - both.css({ position: '', left: '' }); // undo hack - - return totalHeight - otherHeight; - }, - - - // Sets the scroll value of the scroller to the initial pre-configured state prior to allowing the user to change it - initializeScroll: function() { - }, - - - // Called for remembering the current scroll value of the scroller. - // Should be called before there is a destructive operation (like removing DOM elements) that might inadvertently - // change the scroll of the container. - recordScroll: function() { - if (this.scrollerEl) { - this.scrollTop = this.scrollerEl.scrollTop(); - } - }, - - - // Set the scroll value of the scroller to the previously recorded value. - // Should be called after we know the view's dimensions have been restored following some type of destructive - // operation (like temporarily removing DOM elements). - restoreScroll: function() { - if (this.scrollTop !== null) { - this.scrollerEl.scrollTop(this.scrollTop); - } - }, - - - /* Event Elements / Segments - ------------------------------------------------------------------------------------------------------------------*/ - - - // Wraps the basic renderEvents() method with more View-specific logic - renderViewEvents: function(events) { - this.renderEvents(events); - - this.eventSegEach(function(seg) { - this.trigger('eventAfterRender', seg.event, seg.event, seg.el); - }); - this.trigger('eventAfterAllRender'); - }, - - - // Renders the events onto the view. - renderEvents: function() { - // subclasses should implement - }, - - - // Wraps the basic destroyEvents() method with more View-specific logic - destroyViewEvents: function() { - this.eventSegEach(function(seg) { - this.trigger('eventDestroy', seg.event, seg.event, seg.el); - }); - - this.destroyEvents(); - }, - - - // Removes event elements from the view. - destroyEvents: function() { - // subclasses should implement - }, - - - // Given an event and the default element used for rendering, returns the element that should actually be used. - // Basically runs events and elements through the eventRender hook. - resolveEventEl: function(event, el) { - var custom = this.trigger('eventRender', event, event, el); - - if (custom === false) { // means don't render at all - el = null; - } - else if (custom && custom !== true) { - el = $(custom); - } - - return el; - }, - - - // Hides all rendered event segments linked to the given event - showEvent: function(event) { - this.eventSegEach(function(seg) { - seg.el.css('visibility', ''); - }, event); - }, - - - // Shows all rendered event segments linked to the given event - hideEvent: function(event) { - this.eventSegEach(function(seg) { - seg.el.css('visibility', 'hidden'); - }, event); - }, - - - // Iterates through event segments. Goes through all by default. - // If the optional `event` argument is specified, only iterates through segments linked to that event. - // The `this` value of the callback function will be the view. - eventSegEach: function(func, event) { - var segs = this.getEventSegs(); - var i; - - for (i = 0; i < segs.length; i++) { - if (!event || segs[i].event._id === event._id) { - func.call(this, segs[i]); - } - } - }, - - - // Retrieves all the rendered segment objects for the view - getEventSegs: function() { - // subclasses must implement - return []; - }, - - - /* Event Drag-n-Drop - ------------------------------------------------------------------------------------------------------------------*/ - - - // Computes if the given event is allowed to be dragged by the user - isEventDraggable: function(event) { - var source = event.source || {}; - - return firstDefined( - event.startEditable, - source.startEditable, - this.opt('eventStartEditable'), - event.editable, - source.editable, - this.opt('editable') - ); - }, - - - // Must be called when an event in the view is dropped onto new location. - // `dropLocation` is an object that contains the new start/end/allDay values for the event. - reportEventDrop: function(event, dropLocation, el, ev) { - var calendar = this.calendar; - var mutateResult = calendar.mutateEvent(event, dropLocation); - var undoFunc = function() { - mutateResult.undo(); - calendar.reportEventChange(); - }; - - this.triggerEventDrop(event, mutateResult.dateDelta, undoFunc, el, ev); - calendar.reportEventChange(); // will rerender events - }, - - - // Triggers event-drop handlers that have subscribed via the API - triggerEventDrop: function(event, dateDelta, undoFunc, el, ev) { - this.trigger('eventDrop', el[0], event, dateDelta, undoFunc, ev, {}); // {} = jqui dummy - }, - - - /* External Element Drag-n-Drop - ------------------------------------------------------------------------------------------------------------------*/ - - - // Must be called when an external element, via jQuery UI, has been dropped onto the calendar. - // `meta` is the parsed data that has been embedded into the dragging event. - // `dropLocation` is an object that contains the new start/end/allDay values for the event. - reportExternalDrop: function(meta, dropLocation, el, ev, ui) { - var eventProps = meta.eventProps; - var eventInput; - var event; - - // Try to build an event object and render it. TODO: decouple the two - if (eventProps) { - eventInput = $.extend({}, eventProps, dropLocation); - event = this.calendar.renderEvent(eventInput, meta.stick)[0]; // renderEvent returns an array - } - - this.triggerExternalDrop(event, dropLocation, el, ev, ui); - }, - - - // Triggers external-drop handlers that have subscribed via the API - triggerExternalDrop: function(event, dropLocation, el, ev, ui) { - - // trigger 'drop' regardless of whether element represents an event - this.trigger('drop', el[0], dropLocation.start, ev, ui); - - if (event) { - this.trigger('eventReceive', null, event); // signal an external event landed - } - }, - - - /* Drag-n-Drop Rendering (for both events and external elements) - ------------------------------------------------------------------------------------------------------------------*/ - - - // Renders a visual indication of a event or external-element drag over the given drop zone. - // If an external-element, seg will be `null` - renderDrag: function(dropLocation, seg) { - // subclasses must implement - }, - - - // Unrenders a visual indication of an event or external-element being dragged. - destroyDrag: function() { - // subclasses must implement - }, - - - /* Event Resizing - ------------------------------------------------------------------------------------------------------------------*/ - - - // Computes if the given event is allowed to be resize by the user - isEventResizable: function(event) { - var source = event.source || {}; - - return firstDefined( - event.durationEditable, - source.durationEditable, - this.opt('eventDurationEditable'), - event.editable, - source.editable, - this.opt('editable') - ); - }, - - - // Must be called when an event in the view has been resized to a new length - reportEventResize: function(event, newEnd, el, ev) { - var calendar = this.calendar; - var mutateResult = calendar.mutateEvent(event, { end: newEnd }); - var undoFunc = function() { - mutateResult.undo(); - calendar.reportEventChange(); - }; - - this.triggerEventResize(event, mutateResult.durationDelta, undoFunc, el, ev); - calendar.reportEventChange(); // will rerender events - }, - - - // Triggers event-resize handlers that have subscribed via the API - triggerEventResize: function(event, durationDelta, undoFunc, el, ev) { - this.trigger('eventResize', el[0], event, durationDelta, undoFunc, ev, {}); // {} = jqui dummy - }, - - - /* Selection - ------------------------------------------------------------------------------------------------------------------*/ - - - // Selects a date range on the view. `start` and `end` are both Moments. - // `ev` is the native mouse event that begin the interaction. - select: function(range, ev) { - this.unselect(ev); - this.renderSelection(range); - this.reportSelection(range, ev); - }, - - - // Renders a visual indication of the selection - renderSelection: function(range) { - // subclasses should implement - }, - - - // Called when a new selection is made. Updates internal state and triggers handlers. - reportSelection: function(range, ev) { - this.isSelected = true; - this.trigger('select', null, range.start, range.end, ev); - }, - - - // Undoes a selection. updates in the internal state and triggers handlers. - // `ev` is the native mouse event that began the interaction. - unselect: function(ev) { - if (this.isSelected) { - this.isSelected = false; - this.destroySelection(); - this.trigger('unselect', null, ev); - } - }, - - - // Unrenders a visual indication of selection - destroySelection: function() { - // subclasses should implement - }, - - - // Handler for unselecting when the user clicks something and the 'unselectAuto' setting is on - documentMousedown: function(ev) { - var ignore; - - // is there a selection, and has the user made a proper left click? - if (this.isSelected && this.opt('unselectAuto') && isPrimaryMouseButton(ev)) { - - // only unselect if the clicked element is not identical to or inside of an 'unselectCancel' element - ignore = this.opt('unselectCancel'); - if (!ignore || !$(ev.target).closest(ignore).length) { - this.unselect(ev); - } - } - }, - - - /* Date Utils - ------------------------------------------------------------------------------------------------------------------*/ - - - // Initializes internal variables related to calculating hidden days-of-week - initHiddenDays: function() { - var hiddenDays = this.opt('hiddenDays') || []; // array of day-of-week indices that are hidden - var isHiddenDayHash = []; // is the day-of-week hidden? (hash with day-of-week-index -> bool) - var dayCnt = 0; - var i; - - if (this.opt('weekends') === false) { - hiddenDays.push(0, 6); // 0=sunday, 6=saturday - } - - for (i = 0; i < 7; i++) { - if ( - !(isHiddenDayHash[i] = $.inArray(i, hiddenDays) !== -1) - ) { - dayCnt++; - } - } - - if (!dayCnt) { - throw 'invalid hiddenDays'; // all days were hidden? bad. - } - - this.isHiddenDayHash = isHiddenDayHash; - }, - - - // Is the current day hidden? - // `day` is a day-of-week index (0-6), or a Moment - isHiddenDay: function(day) { - if (moment.isMoment(day)) { - day = day.day(); - } - return this.isHiddenDayHash[day]; - }, - - - // Incrementing the current day until it is no longer a hidden day, returning a copy. - // If the initial value of `date` is not a hidden day, don't do anything. - // Pass `isExclusive` as `true` if you are dealing with an end date. - // `inc` defaults to `1` (increment one day forward each time) - skipHiddenDays: function(date, inc, isExclusive) { - var out = date.clone(); - inc = inc || 1; - while ( - this.isHiddenDayHash[(out.day() + (isExclusive ? inc : 0) + 7) % 7] - ) { - out.add(inc, 'days'); - } - return out; - }, - - - // Returns the date range of the full days the given range visually appears to occupy. - // Returns a new range object. - computeDayRange: function(range) { - var startDay = range.start.clone().stripTime(); // the beginning of the day the range starts - var end = range.end; - var endDay = null; - var endTimeMS; - - if (end) { - endDay = end.clone().stripTime(); // the beginning of the day the range exclusively ends - endTimeMS = +end.time(); // # of milliseconds into `endDay` - - // If the end time is actually inclusively part of the next day and is equal to or - // beyond the next day threshold, adjust the end to be the exclusive end of `endDay`. - // Otherwise, leaving it as inclusive will cause it to exclude `endDay`. - if (endTimeMS && endTimeMS >= this.nextDayThreshold) { - endDay.add(1, 'days'); - } - } - - // If no end was specified, or if it is within `startDay` but not past nextDayThreshold, - // assign the default duration of one day. - if (!end || endDay <= startDay) { - endDay = startDay.clone().add(1, 'days'); - } - - return { start: startDay, end: endDay }; - }, - - - // Does the given event visually appear to occupy more than one day? - isMultiDayEvent: function(event) { - var range = this.computeDayRange(event); // event is range-ish - - return range.end.diff(range.start, 'days') > 1; - } - -}); - - function Calendar(element, instanceOptions) { - var t = this; - - - - // Build options object - // ----------------------------------------------------------------------------------- - // Precedence (lowest to highest): defaults, rtlDefaults, langOptions, instanceOptions - - instanceOptions = instanceOptions || {}; - - var options = mergeOptions({}, defaults, instanceOptions); - var langOptions; - - // determine language options - if (options.lang in langOptionHash) { - langOptions = langOptionHash[options.lang]; - } - else { - langOptions = langOptionHash[defaults.lang]; - } - - if (langOptions) { // if language options exist, rebuild... - options = mergeOptions({}, defaults, langOptions, instanceOptions); - } - - if (options.isRTL) { // is isRTL, rebuild... - options = mergeOptions({}, defaults, rtlDefaults, langOptions || {}, instanceOptions); - } - - - - // Exports - // ----------------------------------------------------------------------------------- - - t.options = options; - t.render = render; - t.destroy = destroy; - t.refetchEvents = refetchEvents; - t.reportEvents = reportEvents; - t.reportEventChange = reportEventChange; - t.rerenderEvents = renderEvents; // `renderEvents` serves as a rerender. an API method - t.changeView = changeView; - t.select = select; - t.unselect = unselect; - t.prev = prev; - t.next = next; - t.prevYear = prevYear; - t.nextYear = nextYear; - t.today = today; - t.gotoDate = gotoDate; - t.incrementDate = incrementDate; - t.zoomTo = zoomTo; - t.getDate = getDate; - t.getCalendar = getCalendar; - t.getView = getView; - t.option = option; - t.trigger = trigger; - t.isValidViewType = isValidViewType; - t.getViewButtonText = getViewButtonText; - - - - // Language-data Internals - // ----------------------------------------------------------------------------------- - // Apply overrides to the current language's data - - - var localeData = createObject( // make a cheap copy - getMomentLocaleData(options.lang) // will fall back to en - ); - - if (options.monthNames) { - localeData._months = options.monthNames; - } - if (options.monthNamesShort) { - localeData._monthsShort = options.monthNamesShort; - } - if (options.dayNames) { - localeData._weekdays = options.dayNames; - } - if (options.dayNamesShort) { - localeData._weekdaysShort = options.dayNamesShort; - } - if (options.firstDay != null) { - var _week = createObject(localeData._week); // _week: { dow: # } - _week.dow = options.firstDay; - localeData._week = _week; - } - - - - // Calendar-specific Date Utilities - // ----------------------------------------------------------------------------------- - - - t.defaultAllDayEventDuration = moment.duration(options.defaultAllDayEventDuration); - t.defaultTimedEventDuration = moment.duration(options.defaultTimedEventDuration); - - - // Builds a moment using the settings of the current calendar: timezone and language. - // Accepts anything the vanilla moment() constructor accepts. - t.moment = function() { - var mom; - - if (options.timezone === 'local') { - mom = fc.moment.apply(null, arguments); - - // Force the moment to be local, because fc.moment doesn't guarantee it. - if (mom.hasTime()) { // don't give ambiguously-timed moments a local zone - mom.local(); - } - } - else if (options.timezone === 'UTC') { - mom = fc.moment.utc.apply(null, arguments); // process as UTC - } - else { - mom = fc.moment.parseZone.apply(null, arguments); // let the input decide the zone - } - - if ('_locale' in mom) { // moment 2.8 and above - mom._locale = localeData; - } - else { // pre-moment-2.8 - mom._lang = localeData; - } - - return mom; - }; - - - // Returns a boolean about whether or not the calendar knows how to calculate - // the timezone offset of arbitrary dates in the current timezone. - t.getIsAmbigTimezone = function() { - return options.timezone !== 'local' && options.timezone !== 'UTC'; - }; - - - // Returns a copy of the given date in the current timezone of it is ambiguously zoned. - // This will also give the date an unambiguous time. - t.rezoneDate = function(date) { - return t.moment(date.toArray()); - }; - - - // Returns a moment for the current date, as defined by the client's computer, - // or overridden by the `now` option. - t.getNow = function() { - var now = options.now; - if (typeof now === 'function') { - now = now(); - } - return t.moment(now); - }; - - - // Calculates the week number for a moment according to the calendar's - // `weekNumberCalculation` setting. - t.calculateWeekNumber = function(mom) { - var calc = options.weekNumberCalculation; - - if (typeof calc === 'function') { - return calc(mom); - } - else if (calc === 'local') { - return mom.week(); - } - else if (calc.toUpperCase() === 'ISO') { - return mom.isoWeek(); - } - }; - - - // Get an event's normalized end date. If not present, calculate it from the defaults. - t.getEventEnd = function(event) { - if (event.end) { - return event.end.clone(); - } - else { - return t.getDefaultEventEnd(event.allDay, event.start); - } - }; - - - // Given an event's allDay status and start date, return swhat its fallback end date should be. - t.getDefaultEventEnd = function(allDay, start) { // TODO: rename to computeDefaultEventEnd - var end = start.clone(); - - if (allDay) { - end.stripTime().add(t.defaultAllDayEventDuration); - } - else { - end.add(t.defaultTimedEventDuration); - } - - if (t.getIsAmbigTimezone()) { - end.stripZone(); // we don't know what the tzo should be - } - - return end; - }; - - - // Produces a human-readable string for the given duration. - // Side-effect: changes the locale of the given duration. - function humanizeDuration(duration) { - return (duration.locale || duration.lang).call(duration, options.lang) // works moment-pre-2.8 - .humanize(); - } - - - - // Imports - // ----------------------------------------------------------------------------------- - - - EventManager.call(t, options); - var isFetchNeeded = t.isFetchNeeded; - var fetchEvents = t.fetchEvents; - - - - // Locals - // ----------------------------------------------------------------------------------- - - - var _element = element[0]; - var header; - var headerElement; - var content; - var tm; // for making theme classes - var viewSpecCache = {}; - var currentView; - var suggestedViewHeight; - var windowResizeProxy; // wraps the windowResize function - var ignoreWindowResize = 0; - var date; - var events = []; - - - - // Main Rendering - // ----------------------------------------------------------------------------------- - - - if (options.defaultDate != null) { - date = t.moment(options.defaultDate); - } - else { - date = t.getNow(); - } - - - function render(inc) { - if (!content) { - initialRender(); - } - else if (elementVisible()) { - // mainly for the public API - calcSize(); - renderView(inc); - } - } - - - function initialRender() { - tm = options.theme ? 'ui' : 'fc'; - element.addClass('fc'); - - if (options.isRTL) { - element.addClass('fc-rtl'); - } - else { - element.addClass('fc-ltr'); - } - - if (options.theme) { - element.addClass('ui-widget'); - } - else { - element.addClass('fc-unthemed'); - } - - content = $("<div class='fc-view-container'/>").prependTo(element); - - header = new Header(t, options); - headerElement = header.render(); - if (headerElement) { - element.prepend(headerElement); - } - - changeView(options.defaultView); - - if (options.handleWindowResize) { - windowResizeProxy = debounce(windowResize, options.windowResizeDelay); // prevents rapid calls - $(window).resize(windowResizeProxy); - } - } - - - function destroy() { - - if (currentView) { - currentView.destroyView(); - } - - header.destroy(); - content.remove(); - element.removeClass('fc fc-ltr fc-rtl fc-unthemed ui-widget'); - - $(window).unbind('resize', windowResizeProxy); - } - - - function elementVisible() { - return element.is(':visible'); - } - - - - // View Rendering - // ----------------------------------------------------------------------------------- - - - function changeView(viewType) { - renderView(0, viewType); - } - - - // Renders a view because of a date change, view-type change, or for the first time - function renderView(delta, viewType) { - ignoreWindowResize++; - - // if viewType is changing, destroy the old view - if (currentView && viewType && currentView.type !== viewType) { - header.deactivateButton(currentView.type); - freezeContentHeight(); // prevent a scroll jump when view element is removed - if (currentView.start) { // rendered before? - currentView.destroyView(); - } - currentView.el.remove(); - currentView = null; - } - - // if viewType changed, or the view was never created, create a fresh view - if (!currentView && viewType) { - currentView = instantiateView(viewType); - currentView.el = $("<div class='fc-view fc-" + viewType + "-view' />").appendTo(content); - header.activateButton(viewType); - } - - if (currentView) { - - // let the view determine what the delta means - if (delta < 0) { - date = currentView.computePrevDate(date); - } - else if (delta > 0) { - date = currentView.computeNextDate(date); - } - - // render or rerender the view - if ( - !currentView.start || // never rendered before - delta || // explicit date window change - !date.isWithin(currentView.intervalStart, currentView.intervalEnd) // implicit date window change - ) { - if (elementVisible()) { - - freezeContentHeight(); - if (currentView.start) { // rendered before? - currentView.destroyView(); - } - currentView.setDate(date); - currentView.renderView(); - unfreezeContentHeight(); - - // need to do this after View::render, so dates are calculated - updateTitle(); - updateTodayButton(); - - getAndRenderEvents(); - } - } - } - - unfreezeContentHeight(); // undo any lone freezeContentHeight calls - ignoreWindowResize--; - } - - - - // View Instantiation - // ----------------------------------------------------------------------------------- - - - // Given a view name for a custom view or a standard view, creates a ready-to-go View object - function instantiateView(viewType) { - var spec = getViewSpec(viewType); - - return new spec['class'](t, spec.options, viewType); - } - - - // Gets information about how to create a view - function getViewSpec(requestedViewType) { - var allDefaultButtonText = options.defaultButtonText || {}; - var allButtonText = options.buttonText || {}; - var hash = options.views || {}; // the `views` option object - var viewType = requestedViewType; - var viewOptionsChain = []; - var viewOptions; - var viewClass; - var duration, unit, unitIsSingle = false; - var buttonText; - - if (viewSpecCache[requestedViewType]) { - return viewSpecCache[requestedViewType]; - } - - function processSpecInput(input) { - if (typeof input === 'function') { - viewClass = input; - } - else if (typeof input === 'object') { - $.extend(viewOptions, input); - } - } - - // iterate up a view's spec ancestor chain util we find a class to instantiate - while (viewType && !viewClass) { - viewOptions = {}; // only for this specific view in the ancestry - processSpecInput(fcViews[viewType]); // $.fullCalendar.views, lower precedence - processSpecInput(hash[viewType]); // options at initialization, higher precedence - viewOptionsChain.unshift(viewOptions); // record older ancestors first - viewType = viewOptions.type; - } - - viewOptionsChain.unshift({}); // jQuery's extend needs at least one arg - viewOptions = $.extend.apply($, viewOptionsChain); // combine all, newer ancestors overwritting old - - if (viewClass) { - - duration = viewOptions.duration || viewClass.duration; - if (duration) { - duration = moment.duration(duration); - unit = computeIntervalUnit(duration); - unitIsSingle = computeIntervalAs(unit, duration) === 1; - } - - // options that are specified per the view's duration, like "week" or "day" - if (unitIsSingle && hash[unit]) { - viewOptions = $.extend({}, hash[unit], viewOptions); // lowest priority - } - - // compute the final text for the button representing this view - buttonText = - allButtonText[requestedViewType] || // init options, like "agendaWeek" - (unitIsSingle ? allButtonText[unit] : null) || // init options, like "week" - allDefaultButtonText[requestedViewType] || // lang data, like "agendaWeek" - (unitIsSingle ? allDefaultButtonText[unit] : null) || // lang data, like "week" - viewOptions.buttonText || - viewClass.buttonText || - (duration ? humanizeDuration(duration) : null) || - requestedViewType; - - return (viewSpecCache[requestedViewType] = { - 'class': viewClass, - options: viewOptions, - buttonText: buttonText - }); - } - } - - - // Returns a boolean about whether the view is okay to instantiate at some point - function isValidViewType(viewType) { - return Boolean(getViewSpec(viewType)); - } - - - // Gets the text that should be displayed on a view's button in the header - function getViewButtonText(viewType) { - var spec = getViewSpec(viewType); - - if (spec) { - return spec.buttonText; - } - } - - - - // Resizing - // ----------------------------------------------------------------------------------- - - - t.getSuggestedViewHeight = function() { - if (suggestedViewHeight === undefined) { - calcSize(); - } - return suggestedViewHeight; - }; - - - t.isHeightAuto = function() { - return options.contentHeight === 'auto' || options.height === 'auto'; - }; - - - function updateSize(shouldRecalc) { - if (elementVisible()) { - - if (shouldRecalc) { - _calcSize(); - } - - ignoreWindowResize++; - currentView.updateSize(true); // isResize=true. will poll getSuggestedViewHeight() and isHeightAuto() - ignoreWindowResize--; - - return true; // signal success - } - } - - - function calcSize() { - if (elementVisible()) { - _calcSize(); - } - } - - - function _calcSize() { // assumes elementVisible - if (typeof options.contentHeight === 'number') { // exists and not 'auto' - suggestedViewHeight = options.contentHeight; - } - else if (typeof options.height === 'number') { // exists and not 'auto' - suggestedViewHeight = options.height - (headerElement ? headerElement.outerHeight(true) : 0); - } - else { - suggestedViewHeight = Math.round(content.width() / Math.max(options.aspectRatio, .5)); - } - } - - - function windowResize(ev) { - if ( - !ignoreWindowResize && - ev.target === window && // so we don't process jqui "resize" events that have bubbled up - currentView.start // view has already been rendered - ) { - if (updateSize(true)) { - currentView.trigger('windowResize', _element); - } - } - } - - - - /* Event Fetching/Rendering - -----------------------------------------------------------------------------*/ - // TODO: going forward, most of this stuff should be directly handled by the view - - - function refetchEvents() { // can be called as an API method - destroyEvents(); // so that events are cleared before user starts waiting for AJAX - fetchAndRenderEvents(); - } - - - function renderEvents() { // destroys old events if previously rendered - if (elementVisible()) { - freezeContentHeight(); - currentView.destroyViewEvents(); // no performance cost if never rendered - currentView.renderViewEvents(events); - unfreezeContentHeight(); - } - } - - - function destroyEvents() { - freezeContentHeight(); - currentView.destroyViewEvents(); - unfreezeContentHeight(); - } - - - function getAndRenderEvents() { - if (!options.lazyFetching || isFetchNeeded(currentView.start, currentView.end)) { - fetchAndRenderEvents(); - } - else { - renderEvents(); - } - } - - - function fetchAndRenderEvents() { - fetchEvents(currentView.start, currentView.end); - // ... will call reportEvents - // ... which will call renderEvents - } - - - // called when event data arrives - function reportEvents(_events) { - events = _events; - renderEvents(); - } - - - // called when a single event's data has been changed - function reportEventChange() { - renderEvents(); - } - - - - /* Header Updating - -----------------------------------------------------------------------------*/ - - - function updateTitle() { - header.updateTitle(currentView.computeTitle()); - } - - - function updateTodayButton() { - var now = t.getNow(); - if (now.isWithin(currentView.intervalStart, currentView.intervalEnd)) { - header.disableButton('today'); - } - else { - header.enableButton('today'); - } - } - - - - /* Selection - -----------------------------------------------------------------------------*/ - - - function select(start, end) { - - start = t.moment(start); - if (end) { - end = t.moment(end); - } - else if (start.hasTime()) { - end = start.clone().add(t.defaultTimedEventDuration); - } - else { - end = start.clone().add(t.defaultAllDayEventDuration); - } - - currentView.select({ start: start, end: end }); // accepts a range - } - - - function unselect() { // safe to be called before renderView - if (currentView) { - currentView.unselect(); - } - } - - - - /* Date - -----------------------------------------------------------------------------*/ - - - function prev() { - renderView(-1); - } - - - function next() { - renderView(1); - } - - - function prevYear() { - date.add(-1, 'years'); - renderView(); - } - - - function nextYear() { - date.add(1, 'years'); - renderView(); - } - - - function today() { - date = t.getNow(); - renderView(); - } - - - function gotoDate(dateInput) { - date = t.moment(dateInput); - renderView(); - } - - - function incrementDate(delta) { - date.add(moment.duration(delta)); - renderView(); - } - - - // Forces navigation to a view for the given date. - // `viewType` can be a specific view name or a generic one like "week" or "day". - function zoomTo(newDate, viewType) { - var viewStr; - var match; - - if (!viewType || !isValidViewType(viewType)) { // a general view name, or "auto" - viewType = viewType || 'day'; - viewStr = header.getViewsWithButtons().join(' '); // space-separated string of all the views in the header - - // try to match a general view name, like "week", against a specific one, like "agendaWeek" - match = viewStr.match(new RegExp('\\w+' + capitaliseFirstLetter(viewType))); - - // fall back to the day view being used in the header - if (!match) { - match = viewStr.match(/\w+Day/); - } - - viewType = match ? match[0] : 'agendaDay'; // fall back to agendaDay - } - - date = newDate; - changeView(viewType); - } - - - function getDate() { - return date.clone(); - } - - - - /* Height "Freezing" - -----------------------------------------------------------------------------*/ - - - function freezeContentHeight() { - content.css({ - width: '100%', - height: content.height(), - overflow: 'hidden' - }); - } - - - function unfreezeContentHeight() { - content.css({ - width: '', - height: '', - overflow: '' - }); - } - - - - /* Misc - -----------------------------------------------------------------------------*/ - - - function getCalendar() { - return t; - } - - - function getView() { - return currentView; - } - - - function option(name, value) { - if (value === undefined) { - return options[name]; - } - if (name == 'height' || name == 'contentHeight' || name == 'aspectRatio') { - options[name] = value; - updateSize(true); // true = allow recalculation of height - } - } - - - function trigger(name, thisObj) { - if (options[name]) { - return options[name].apply( - thisObj || _element, - Array.prototype.slice.call(arguments, 2) - ); - } - } - -} - - /* Top toolbar area with buttons and title -----------------------------------------------------------------------------------------------------------------------*/ -// TODO: rename all header-related things to "toolbar" - -function Header(calendar, options) { - var t = this; - - // exports - t.render = render; - t.destroy = destroy; - t.updateTitle = updateTitle; - t.activateButton = activateButton; - t.deactivateButton = deactivateButton; - t.disableButton = disableButton; - t.enableButton = enableButton; - t.getViewsWithButtons = getViewsWithButtons; - - // locals - var el = $(); - var viewsWithButtons = []; - var tm; - - - function render() { - var sections = options.header; - - tm = options.theme ? 'ui' : 'fc'; - - if (sections) { - el = $("<div class='fc-toolbar'/>") - .append(renderSection('left')) - .append(renderSection('right')) - .append(renderSection('center')) - .append('<div class="fc-clear"/>'); - - return el; - } - } - - - function destroy() { - el.remove(); - } - - - function renderSection(position) { - var sectionEl = $('<div class="fc-' + position + '"/>'); - var buttonStr = options.header[position]; - - if (buttonStr) { - $.each(buttonStr.split(' '), function(i) { - var groupChildren = $(); - var isOnlyButtons = true; - var groupEl; - - $.each(this.split(','), function(j, buttonName) { - var buttonClick; - var themeIcon; - var normalIcon; - var defaultText; - var viewText; // highest priority - var customText; - var innerHtml; - var classes; - var button; - - if (buttonName == 'title') { - groupChildren = groupChildren.add($('<h2>&nbsp;</h2>')); // we always want it to take up height - isOnlyButtons = false; - } - else { - if (calendar[buttonName]) { // a calendar method - buttonClick = function() { - calendar[buttonName](); - }; - } - else if (calendar.isValidViewType(buttonName)) { // a view type - buttonClick = function() { - calendar.changeView(buttonName); - }; - viewsWithButtons.push(buttonName); - viewText = calendar.getViewButtonText(buttonName); - } - if (buttonClick) { - - // smartProperty allows different text per view button (ex: "Agenda Week" vs "Basic Week") - themeIcon = smartProperty(options.themeButtonIcons, buttonName); - normalIcon = smartProperty(options.buttonIcons, buttonName); - defaultText = smartProperty(options.defaultButtonText, buttonName); // from languages - customText = smartProperty(options.buttonText, buttonName); - - if (viewText || customText) { - innerHtml = htmlEscape(viewText || customText); - } - else if (themeIcon && options.theme) { - innerHtml = "<span class='ui-icon ui-icon-" + themeIcon + "'></span>"; - } - else if (normalIcon && !options.theme) { - innerHtml = "<span class='fc-icon fc-icon-" + normalIcon + "'></span>"; - } - else { - innerHtml = htmlEscape(defaultText || buttonName); - } - - classes = [ - 'fc-' + buttonName + '-button', - tm + '-button', - tm + '-state-default' - ]; - - button = $( // type="button" so that it doesn't submit a form - '<button type="button" class="' + classes.join(' ') + '">' + - innerHtml + - '</button>' - ) - .click(function() { - // don't process clicks for disabled buttons - if (!button.hasClass(tm + '-state-disabled')) { - - buttonClick(); - - // after the click action, if the button becomes the "active" tab, or disabled, - // it should never have a hover class, so remove it now. - if ( - button.hasClass(tm + '-state-active') || - button.hasClass(tm + '-state-disabled') - ) { - button.removeClass(tm + '-state-hover'); - } - } - }) - .mousedown(function() { - // the *down* effect (mouse pressed in). - // only on buttons that are not the "active" tab, or disabled - button - .not('.' + tm + '-state-active') - .not('.' + tm + '-state-disabled') - .addClass(tm + '-state-down'); - }) - .mouseup(function() { - // undo the *down* effect - button.removeClass(tm + '-state-down'); - }) - .hover( - function() { - // the *hover* effect. - // only on buttons that are not the "active" tab, or disabled - button - .not('.' + tm + '-state-active') - .not('.' + tm + '-state-disabled') - .addClass(tm + '-state-hover'); - }, - function() { - // undo the *hover* effect - button - .removeClass(tm + '-state-hover') - .removeClass(tm + '-state-down'); // if mouseleave happens before mouseup - } - ); - - groupChildren = groupChildren.add(button); - } - } - }); - - if (isOnlyButtons) { - groupChildren - .first().addClass(tm + '-corner-left').end() - .last().addClass(tm + '-corner-right').end(); - } - - if (groupChildren.length > 1) { - groupEl = $('<div/>'); - if (isOnlyButtons) { - groupEl.addClass('fc-button-group'); - } - groupEl.append(groupChildren); - sectionEl.append(groupEl); - } - else { - sectionEl.append(groupChildren); // 1 or 0 children - } - }); - } - - return sectionEl; - } - - - function updateTitle(text) { - el.find('h2').text(text); - } - - - function activateButton(buttonName) { - el.find('.fc-' + buttonName + '-button') - .addClass(tm + '-state-active'); - } - - - function deactivateButton(buttonName) { - el.find('.fc-' + buttonName + '-button') - .removeClass(tm + '-state-active'); - } - - - function disableButton(buttonName) { - el.find('.fc-' + buttonName + '-button') - .attr('disabled', 'disabled') - .addClass(tm + '-state-disabled'); - } - - - function enableButton(buttonName) { - el.find('.fc-' + buttonName + '-button') - .removeAttr('disabled') - .removeClass(tm + '-state-disabled'); - } - - - function getViewsWithButtons() { - return viewsWithButtons; - } - -} - - fc.sourceNormalizers = []; -fc.sourceFetchers = []; - -var ajaxDefaults = { - dataType: 'json', - cache: false -}; - -var eventGUID = 1; - - -function EventManager(options) { // assumed to be a calendar - var t = this; - - - // exports - t.isFetchNeeded = isFetchNeeded; - t.fetchEvents = fetchEvents; - t.addEventSource = addEventSource; - t.removeEventSource = removeEventSource; - t.updateEvent = updateEvent; - t.renderEvent = renderEvent; - t.removeEvents = removeEvents; - t.clientEvents = clientEvents; - t.mutateEvent = mutateEvent; - t.normalizeEventDateProps = normalizeEventDateProps; - t.ensureVisibleEventRange = ensureVisibleEventRange; - - - // imports - var trigger = t.trigger; - var getView = t.getView; - var reportEvents = t.reportEvents; - - - // locals - var stickySource = { events: [] }; - var sources = [ stickySource ]; - var rangeStart, rangeEnd; - var currentFetchID = 0; - var pendingSourceCnt = 0; - var loadingLevel = 0; - var cache = []; // holds events that have already been expanded - - - $.each( - (options.events ? [ options.events ] : []).concat(options.eventSources || []), - function(i, sourceInput) { - var source = buildEventSource(sourceInput); - if (source) { - sources.push(source); - } - } - ); - - - - /* Fetching - -----------------------------------------------------------------------------*/ - - - function isFetchNeeded(start, end) { - return !rangeStart || // nothing has been fetched yet? - // or, a part of the new range is outside of the old range? (after normalizing) - start.clone().stripZone() < rangeStart.clone().stripZone() || - end.clone().stripZone() > rangeEnd.clone().stripZone(); - } - - - function fetchEvents(start, end) { - rangeStart = start; - rangeEnd = end; - cache = []; - var fetchID = ++currentFetchID; - var len = sources.length; - pendingSourceCnt = len; - for (var i=0; i<len; i++) { - fetchEventSource(sources[i], fetchID); - } - } - - - function fetchEventSource(source, fetchID) { - _fetchEventSource(source, function(eventInputs) { - var isArraySource = $.isArray(source.events); - var i, eventInput; - var abstractEvent; - - if (fetchID == currentFetchID) { - - if (eventInputs) { - for (i = 0; i < eventInputs.length; i++) { - eventInput = eventInputs[i]; - - if (isArraySource) { // array sources have already been convert to Event Objects - abstractEvent = eventInput; - } - else { - abstractEvent = buildEventFromInput(eventInput, source); - } - - if (abstractEvent) { // not false (an invalid event) - cache.push.apply( - cache, - expandEvent(abstractEvent) // add individual expanded events to the cache - ); - } - } - } - - pendingSourceCnt--; - if (!pendingSourceCnt) { - reportEvents(cache); - } - } - }); - } - - - function _fetchEventSource(source, callback) { - var i; - var fetchers = fc.sourceFetchers; - var res; - - for (i=0; i<fetchers.length; i++) { - res = fetchers[i].call( - t, // this, the Calendar object - source, - rangeStart.clone(), - rangeEnd.clone(), - options.timezone, - callback - ); - - if (res === true) { - // the fetcher is in charge. made its own async request - return; - } - else if (typeof res == 'object') { - // the fetcher returned a new source. process it - _fetchEventSource(res, callback); - return; - } - } - - var events = source.events; - if (events) { - if ($.isFunction(events)) { - pushLoading(); - events.call( - t, // this, the Calendar object - rangeStart.clone(), - rangeEnd.clone(), - options.timezone, - function(events) { - callback(events); - popLoading(); - } - ); - } - else if ($.isArray(events)) { - callback(events); - } - else { - callback(); - } - }else{ - var url = source.url; - if (url) { - var success = source.success; - var error = source.error; - var complete = source.complete; - - // retrieve any outbound GET/POST $.ajax data from the options - var customData; - if ($.isFunction(source.data)) { - // supplied as a function that returns a key/value object - customData = source.data(); - } - else { - // supplied as a straight key/value object - customData = source.data; - } - - // use a copy of the custom data so we can modify the parameters - // and not affect the passed-in object. - var data = $.extend({}, customData || {}); - - var startParam = firstDefined(source.startParam, options.startParam); - var endParam = firstDefined(source.endParam, options.endParam); - var timezoneParam = firstDefined(source.timezoneParam, options.timezoneParam); - - if (startParam) { - data[startParam] = rangeStart.format(); - } - if (endParam) { - data[endParam] = rangeEnd.format(); - } - if (options.timezone && options.timezone != 'local') { - data[timezoneParam] = options.timezone; - } - - pushLoading(); - $.ajax($.extend({}, ajaxDefaults, source, { - data: data, - success: function(events) { - events = events || []; - var res = applyAll(success, this, arguments); - if ($.isArray(res)) { - events = res; - } - callback(events); - }, - error: function() { - applyAll(error, this, arguments); - callback(); - }, - complete: function() { - applyAll(complete, this, arguments); - popLoading(); - } - })); - }else{ - callback(); - } - } - } - - - - /* Sources - -----------------------------------------------------------------------------*/ - - - function addEventSource(sourceInput) { - var source = buildEventSource(sourceInput); - if (source) { - sources.push(source); - pendingSourceCnt++; - fetchEventSource(source, currentFetchID); // will eventually call reportEvents - } - } - - - function buildEventSource(sourceInput) { // will return undefined if invalid source - var normalizers = fc.sourceNormalizers; - var source; - var i; - - if ($.isFunction(sourceInput) || $.isArray(sourceInput)) { - source = { events: sourceInput }; - } - else if (typeof sourceInput === 'string') { - source = { url: sourceInput }; - } - else if (typeof sourceInput === 'object') { - source = $.extend({}, sourceInput); // shallow copy - } - - if (source) { - - // TODO: repeat code, same code for event classNames - if (source.className) { - if (typeof source.className === 'string') { - source.className = source.className.split(/\s+/); - } - // otherwise, assumed to be an array - } - else { - source.className = []; - } - - // for array sources, we convert to standard Event Objects up front - if ($.isArray(source.events)) { - source.origArray = source.events; // for removeEventSource - source.events = $.map(source.events, function(eventInput) { - return buildEventFromInput(eventInput, source); - }); - } - - for (i=0; i<normalizers.length; i++) { - normalizers[i].call(t, source); - } - - return source; - } - } - - - function removeEventSource(source) { - sources = $.grep(sources, function(src) { - return !isSourcesEqual(src, source); - }); - // remove all client events from that source - cache = $.grep(cache, function(e) { - return !isSourcesEqual(e.source, source); - }); - reportEvents(cache); - } - - - function isSourcesEqual(source1, source2) { - return source1 && source2 && getSourcePrimitive(source1) == getSourcePrimitive(source2); - } - - - function getSourcePrimitive(source) { - return ( - (typeof source === 'object') ? // a normalized event source? - (source.origArray || source.googleCalendarId || source.url || source.events) : // get the primitive - null - ) || - source; // the given argument *is* the primitive - } - - - - /* Manipulation - -----------------------------------------------------------------------------*/ - - - // Only ever called from the externally-facing API - function updateEvent(event) { - - // massage start/end values, even if date string values - event.start = t.moment(event.start); - if (event.end) { - event.end = t.moment(event.end); - } - else { - event.end = null; - } - - mutateEvent(event, getMiscEventProps(event)); // will handle start/end/allDay normalization - reportEvents(cache); // reports event modifications (so we can redraw) - } - - - // Returns a hash of misc event properties that should be copied over to related events. - function getMiscEventProps(event) { - var props = {}; - - $.each(event, function(name, val) { - if (isMiscEventPropName(name)) { - if (val !== undefined && isAtomic(val)) { // a defined non-object - props[name] = val; - } - } - }); - - return props; - } - - // non-date-related, non-id-related, non-secret - function isMiscEventPropName(name) { - return !/^_|^(id|allDay|start|end)$/.test(name); - } - - - // returns the expanded events that were created - function renderEvent(eventInput, stick) { - var abstractEvent = buildEventFromInput(eventInput); - var events; - var i, event; - - if (abstractEvent) { // not false (a valid input) - events = expandEvent(abstractEvent); - - for (i = 0; i < events.length; i++) { - event = events[i]; - - if (!event.source) { - if (stick) { - stickySource.events.push(event); - event.source = stickySource; - } - cache.push(event); - } - } - - reportEvents(cache); - - return events; - } - - return []; - } - - - function removeEvents(filter) { - var eventID; - var i; - - if (filter == null) { // null or undefined. remove all events - filter = function() { return true; }; // will always match - } - else if (!$.isFunction(filter)) { // an event ID - eventID = filter + ''; - filter = function(event) { - return event._id == eventID; - }; - } - - // Purge event(s) from our local cache - cache = $.grep(cache, filter, true); // inverse=true - - // Remove events from array sources. - // This works because they have been converted to official Event Objects up front. - // (and as a result, event._id has been calculated). - for (i=0; i<sources.length; i++) { - if ($.isArray(sources[i].events)) { - sources[i].events = $.grep(sources[i].events, filter, true); - } - } - - reportEvents(cache); - } - - - function clientEvents(filter) { - if ($.isFunction(filter)) { - return $.grep(cache, filter); - } - else if (filter != null) { // not null, not undefined. an event ID - filter += ''; - return $.grep(cache, function(e) { - return e._id == filter; - }); - } - return cache; // else, return all - } - - - - /* Loading State - -----------------------------------------------------------------------------*/ - - - function pushLoading() { - if (!(loadingLevel++)) { - trigger('loading', null, true, getView()); - } - } - - - function popLoading() { - if (!(--loadingLevel)) { - trigger('loading', null, false, getView()); - } - } - - - - /* Event Normalization - -----------------------------------------------------------------------------*/ - - - // Given a raw object with key/value properties, returns an "abstract" Event object. - // An "abstract" event is an event that, if recurring, will not have been expanded yet. - // Will return `false` when input is invalid. - // `source` is optional - function buildEventFromInput(input, source) { - var out = {}; - var start, end; - var allDay; - - if (options.eventDataTransform) { - input = options.eventDataTransform(input); - } - if (source && source.eventDataTransform) { - input = source.eventDataTransform(input); - } - - // Copy all properties over to the resulting object. - // The special-case properties will be copied over afterwards. - $.extend(out, input); - - if (source) { - out.source = source; - } - - out._id = input._id || (input.id === undefined ? '_fc' + eventGUID++ : input.id + ''); - - if (input.className) { - if (typeof input.className == 'string') { - out.className = input.className.split(/\s+/); - } - else { // assumed to be an array - out.className = input.className; - } - } - else { - out.className = []; - } - - start = input.start || input.date; // "date" is an alias for "start" - end = input.end; - - // parse as a time (Duration) if applicable - if (isTimeString(start)) { - start = moment.duration(start); - } - if (isTimeString(end)) { - end = moment.duration(end); - } - - if (input.dow || moment.isDuration(start) || moment.isDuration(end)) { - - // the event is "abstract" (recurring) so don't calculate exact start/end dates just yet - out.start = start ? moment.duration(start) : null; // will be a Duration or null - out.end = end ? moment.duration(end) : null; // will be a Duration or null - out._recurring = true; // our internal marker - } - else { - - if (start) { - start = t.moment(start); - if (!start.isValid()) { - return false; - } - } - - if (end) { - end = t.moment(end); - if (!end.isValid()) { - end = null; // let defaults take over - } - } - - allDay = input.allDay; - if (allDay === undefined) { // still undefined? fallback to default - allDay = firstDefined( - source ? source.allDayDefault : undefined, - options.allDayDefault - ); - // still undefined? normalizeEventDateProps will calculate it - } - - assignDatesToEvent(start, end, allDay, out); - } - - return out; - } - - - // Normalizes and assigns the given dates to the given partially-formed event object. - // NOTE: mutates the given start/end moments. does not make a copy. - function assignDatesToEvent(start, end, allDay, event) { - event.start = start; - event.end = end; - event.allDay = allDay; - normalizeEventDateProps(event); - backupEventDates(event); - } - - - // Ensures the allDay property exists. - // Ensures the start/end dates are consistent with allDay and forceEventDuration. - // Accepts an Event object, or a plain object with event-ish properties. - // NOTE: Will modify the given object. - function normalizeEventDateProps(props) { - - if (props.allDay == null) { - props.allDay = !(props.start.hasTime() || (props.end && props.end.hasTime())); - } - - if (props.allDay) { - props.start.stripTime(); - if (props.end) { - props.end.stripTime(); - } - } - else { - if (!props.start.hasTime()) { - props.start = t.rezoneDate(props.start); // will also give it a 00:00 time - } - if (props.end && !props.end.hasTime()) { - props.end = t.rezoneDate(props.end); // will also give it a 00:00 time - } - } - - if (props.end && !props.end.isAfter(props.start)) { - props.end = null; - } - - if (!props.end) { - if (options.forceEventDuration) { - props.end = t.getDefaultEventEnd(props.allDay, props.start); - } - else { - props.end = null; - } - } - } - - - // If `range` is a proper range with a start and end, returns the original object. - // If missing an end, computes a new range with an end, computing it as if it were an event. - // TODO: make this a part of the event -> eventRange system - function ensureVisibleEventRange(range) { - var allDay; - - if (!range.end) { - - allDay = range.allDay; // range might be more event-ish than we think - if (allDay == null) { - allDay = !range.start.hasTime(); - } - - range = { - start: range.start, - end: t.getDefaultEventEnd(allDay, range.start) - }; - } - return range; - } - - - // If the given event is a recurring event, break it down into an array of individual instances. - // If not a recurring event, return an array with the single original event. - // If given a falsy input (probably because of a failed buildEventFromInput call), returns an empty array. - // HACK: can override the recurring window by providing custom rangeStart/rangeEnd (for businessHours). - function expandEvent(abstractEvent, _rangeStart, _rangeEnd) { - var events = []; - var dowHash; - var dow; - var i; - var date; - var startTime, endTime; - var start, end; - var event; - - _rangeStart = _rangeStart || rangeStart; - _rangeEnd = _rangeEnd || rangeEnd; - - if (abstractEvent) { - if (abstractEvent._recurring) { - - // make a boolean hash as to whether the event occurs on each day-of-week - if ((dow = abstractEvent.dow)) { - dowHash = {}; - for (i = 0; i < dow.length; i++) { - dowHash[dow[i]] = true; - } - } - - // iterate through every day in the current range - date = _rangeStart.clone().stripTime(); // holds the date of the current day - while (date.isBefore(_rangeEnd)) { - - if (!dowHash || dowHash[date.day()]) { // if everyday, or this particular day-of-week - - startTime = abstractEvent.start; // the stored start and end properties are times (Durations) - endTime = abstractEvent.end; // " - start = date.clone(); - end = null; - - if (startTime) { - start = start.time(startTime); - } - if (endTime) { - end = date.clone().time(endTime); - } - - event = $.extend({}, abstractEvent); // make a copy of the original - assignDatesToEvent( - start, end, - !startTime && !endTime, // allDay? - event - ); - events.push(event); - } - - date.add(1, 'days'); - } - } - else { - events.push(abstractEvent); // return the original event. will be a one-item array - } - } - - return events; - } - - - - /* Event Modification Math - -----------------------------------------------------------------------------------------*/ - - - // Modifies an event and all related events by applying the given properties. - // Special date-diffing logic is used for manipulation of dates. - // If `props` does not contain start/end dates, the updated values are assumed to be the event's current start/end. - // All date comparisons are done against the event's pristine _start and _end dates. - // Returns an object with delta information and a function to undo all operations. - // - function mutateEvent(event, props) { - var miscProps = {}; - var clearEnd; - var dateDelta; - var durationDelta; - var undoFunc; - - props = props || {}; - - // ensure new date-related values to compare against - if (!props.start) { - props.start = event.start.clone(); - } - if (props.end === undefined) { - props.end = event.end ? event.end.clone() : null; - } - if (props.allDay == null) { // is null or undefined? - props.allDay = event.allDay; - } - - normalizeEventDateProps(props); // massages start/end/allDay - - // clear the end date if explicitly changed to null - clearEnd = event._end !== null && props.end === null; - - // compute the delta for moving the start and end dates together - if (props.allDay) { - dateDelta = diffDay(props.start, event._start); // whole-day diff from start-of-day - } - else { - dateDelta = diffDayTime(props.start, event._start); - } - - // compute the delta for moving the end date (after applying dateDelta) - if (!clearEnd && props.end) { - durationDelta = diffDayTime( - // new duration - props.end, - props.start - ).subtract(diffDayTime( - // subtract old duration - event._end || t.getDefaultEventEnd(event._allDay, event._start), - event._start - )); - } - - // gather all non-date-related properties - $.each(props, function(name, val) { - if (isMiscEventPropName(name)) { - if (val !== undefined) { - miscProps[name] = val; - } - } - }); - - // apply the operations to the event and all related events - undoFunc = mutateEvents( - clientEvents(event._id), // get events with this ID - clearEnd, - props.allDay, - dateDelta, - durationDelta, - miscProps - ); - - return { - dateDelta: dateDelta, - durationDelta: durationDelta, - undo: undoFunc - }; - } - - - // Modifies an array of events in the following ways (operations are in order): - // - clear the event's `end` - // - convert the event to allDay - // - add `dateDelta` to the start and end - // - add `durationDelta` to the event's duration - // - assign `miscProps` to the event - // - // Returns a function that can be called to undo all the operations. - // - // TODO: don't use so many closures. possible memory issues when lots of events with same ID. - // - function mutateEvents(events, clearEnd, allDay, dateDelta, durationDelta, miscProps) { - var isAmbigTimezone = t.getIsAmbigTimezone(); - var undoFunctions = []; - - // normalize zero-length deltas to be null - if (dateDelta && !dateDelta.valueOf()) { dateDelta = null; } - if (durationDelta && !durationDelta.valueOf()) { durationDelta = null; } - - $.each(events, function(i, event) { - var oldProps; - var newProps; - - // build an object holding all the old values, both date-related and misc. - // for the undo function. - oldProps = { - start: event.start.clone(), - end: event.end ? event.end.clone() : null, - allDay: event.allDay - }; - $.each(miscProps, function(name) { - oldProps[name] = event[name]; - }); - - // new date-related properties. work off the original date snapshot. - // ok to use references because they will be thrown away when backupEventDates is called. - newProps = { - start: event._start, - end: event._end, - allDay: event._allDay - }; - - if (clearEnd) { - newProps.end = null; - } - - newProps.allDay = allDay; - - normalizeEventDateProps(newProps); // massages start/end/allDay - - if (dateDelta) { - newProps.start.add(dateDelta); - if (newProps.end) { - newProps.end.add(dateDelta); - } - } - - if (durationDelta) { - if (!newProps.end) { - newProps.end = t.getDefaultEventEnd(newProps.allDay, newProps.start); - } - newProps.end.add(durationDelta); - } - - // if the dates have changed, and we know it is impossible to recompute the - // timezone offsets, strip the zone. - if ( - isAmbigTimezone && - !newProps.allDay && - (dateDelta || durationDelta) - ) { - newProps.start.stripZone(); - if (newProps.end) { - newProps.end.stripZone(); - } - } - - $.extend(event, miscProps, newProps); // copy over misc props, then date-related props - backupEventDates(event); // regenerate internal _start/_end/_allDay - - undoFunctions.push(function() { - $.extend(event, oldProps); - backupEventDates(event); // regenerate internal _start/_end/_allDay - }); - }); - - return function() { - for (var i = 0; i < undoFunctions.length; i++) { - undoFunctions[i](); - } - }; - } - - - /* Business Hours - -----------------------------------------------------------------------------------------*/ - - t.getBusinessHoursEvents = getBusinessHoursEvents; - - - // Returns an array of events as to when the business hours occur in the given view. - // Abuse of our event system :( - function getBusinessHoursEvents() { - var optionVal = options.businessHours; - var defaultVal = { - className: 'fc-nonbusiness', - start: '09:00', - end: '17:00', - dow: [ 1, 2, 3, 4, 5 ], // monday - friday - rendering: 'inverse-background' - }; - var view = t.getView(); - var eventInput; - - if (optionVal) { - if (typeof optionVal === 'object') { - // option value is an object that can override the default business hours - eventInput = $.extend({}, defaultVal, optionVal); - } - else { - // option value is `true`. use default business hours - eventInput = defaultVal; - } - } - - if (eventInput) { - return expandEvent( - buildEventFromInput(eventInput), - view.start, - view.end - ); - } - - return []; - } - - - /* Overlapping / Constraining - -----------------------------------------------------------------------------------------*/ - - t.isEventRangeAllowed = isEventRangeAllowed; - t.isSelectionRangeAllowed = isSelectionRangeAllowed; - t.isExternalDropRangeAllowed = isExternalDropRangeAllowed; - - - function isEventRangeAllowed(range, event) { - var source = event.source || {}; - var constraint = firstDefined( - event.constraint, - source.constraint, - options.eventConstraint - ); - var overlap = firstDefined( - event.overlap, - source.overlap, - options.eventOverlap - ); - - range = ensureVisibleEventRange(range); // ensure a proper range with an end for isRangeAllowed - - return isRangeAllowed(range, constraint, overlap, event); - } - - - function isSelectionRangeAllowed(range) { - return isRangeAllowed(range, options.selectConstraint, options.selectOverlap); - } - - - // when `eventProps` is defined, consider this an event. - // `eventProps` can contain misc non-date-related info about the event. - function isExternalDropRangeAllowed(range, eventProps) { - var eventInput; - var event; - - // note: very similar logic is in View's reportExternalDrop - if (eventProps) { - eventInput = $.extend({}, eventProps, range); - event = expandEvent(buildEventFromInput(eventInput))[0]; - } - - if (event) { - return isEventRangeAllowed(range, event); - } - else { // treat it as a selection - - range = ensureVisibleEventRange(range); // ensure a proper range with an end for isSelectionRangeAllowed - - return isSelectionRangeAllowed(range); - } - } - - - // Returns true if the given range (caused by an event drop/resize or a selection) is allowed to exist - // according to the constraint/overlap settings. - // `event` is not required if checking a selection. - function isRangeAllowed(range, constraint, overlap, event) { - var constraintEvents; - var anyContainment; - var i, otherEvent; - var otherOverlap; - - // normalize. fyi, we're normalizing in too many places :( - range = { - start: range.start.clone().stripZone(), - end: range.end.clone().stripZone() - }; - - // the range must be fully contained by at least one of produced constraint events - if (constraint != null) { - - // not treated as an event! intermediate data structure - // TODO: use ranges in the future - constraintEvents = constraintToEvents(constraint); - - anyContainment = false; - for (i = 0; i < constraintEvents.length; i++) { - if (eventContainsRange(constraintEvents[i], range)) { - anyContainment = true; - break; - } - } - - if (!anyContainment) { - return false; - } - } - - for (i = 0; i < cache.length; i++) { // loop all events and detect overlap - otherEvent = cache[i]; - - // don't compare the event to itself or other related [repeating] events - if (event && event._id === otherEvent._id) { - continue; - } - - // there needs to be an actual intersection before disallowing anything - if (eventIntersectsRange(otherEvent, range)) { - - // evaluate overlap for the given range and short-circuit if necessary - if (overlap === false) { - return false; - } - else if (typeof overlap === 'function' && !overlap(otherEvent, event)) { - return false; - } - - // if we are computing if the given range is allowable for an event, consider the other event's - // EventObject-specific or Source-specific `overlap` property - if (event) { - otherOverlap = firstDefined( - otherEvent.overlap, - (otherEvent.source || {}).overlap - // we already considered the global `eventOverlap` - ); - if (otherOverlap === false) { - return false; - } - if (typeof otherOverlap === 'function' && !otherOverlap(event, otherEvent)) { - return false; - } - } - } - } - - return true; - } - - - // Given an event input from the API, produces an array of event objects. Possible event inputs: - // 'businessHours' - // An event ID (number or string) - // An object with specific start/end dates or a recurring event (like what businessHours accepts) - function constraintToEvents(constraintInput) { - - if (constraintInput === 'businessHours') { - return getBusinessHoursEvents(); - } - - if (typeof constraintInput === 'object') { - return expandEvent(buildEventFromInput(constraintInput)); - } - - return clientEvents(constraintInput); // probably an ID - } - - - // Does the event's date range fully contain the given range? - // start/end already assumed to have stripped zones :( - function eventContainsRange(event, range) { - var eventStart = event.start.clone().stripZone(); - var eventEnd = t.getEventEnd(event).stripZone(); - - return range.start >= eventStart && range.end <= eventEnd; - } - - - // Does the event's date range intersect with the given range? - // start/end already assumed to have stripped zones :( - function eventIntersectsRange(event, range) { - var eventStart = event.start.clone().stripZone(); - var eventEnd = t.getEventEnd(event).stripZone(); - - return range.start < eventEnd && range.end > eventStart; - } - -} - - -// updates the "backup" properties, which are preserved in order to compute diffs later on. -function backupEventDates(event) { - event._allDay = event.allDay; - event._start = event.start.clone(); - event._end = event.end ? event.end.clone() : null; -} - - /* An abstract class for the "basic" views, as well as month view. Renders one or more rows of day cells. -----------------------------------------------------------------------------------------------------------------------*/ -// It is a manager for a DayGrid subcomponent, which does most of the heavy lifting. -// It is responsible for managing width/height. - -var BasicView = fcViews.basic = View.extend({ - - dayGrid: null, // the main subcomponent that does most of the heavy lifting - - dayNumbersVisible: false, // display day numbers on each day cell? - weekNumbersVisible: false, // display week numbers along the side? - - weekNumberWidth: null, // width of all the week-number cells running down the side - - headRowEl: null, // the fake row element of the day-of-week header - - - initialize: function() { - this.dayGrid = new DayGrid(this); - this.coordMap = this.dayGrid.coordMap; // the view's date-to-cell mapping is identical to the subcomponent's - }, - - - // Sets the display range and computes all necessary dates - setRange: function(range) { - View.prototype.setRange.call(this, range); // call the super-method - - this.dayGrid.breakOnWeeks = /year|month|week/.test(this.intervalUnit); // do before setRange - this.dayGrid.setRange(range); - }, - - - // Compute the value to feed into setRange. Overrides superclass. - computeRange: function(date) { - var range = View.prototype.computeRange.call(this, date); // get value from the super-method - - // year and month views should be aligned with weeks. this is already done for week - if (/year|month/.test(range.intervalUnit)) { - range.start.startOf('week'); - range.start = this.skipHiddenDays(range.start); - - // make end-of-week if not already - if (range.end.weekday()) { - range.end.add(1, 'week').startOf('week'); - range.end = this.skipHiddenDays(range.end, -1, true); // exclusively move backwards - } - } - - return range; - }, - - - // Renders the view into `this.el`, which should already be assigned - render: function() { - - this.dayNumbersVisible = this.dayGrid.rowCnt > 1; // TODO: make grid responsible - this.weekNumbersVisible = this.opt('weekNumbers'); - this.dayGrid.numbersVisible = this.dayNumbersVisible || this.weekNumbersVisible; - - this.el.addClass('fc-basic-view').html(this.renderHtml()); - - this.headRowEl = this.el.find('thead .fc-row'); - - this.scrollerEl = this.el.find('.fc-day-grid-container'); - this.dayGrid.coordMap.containerEl = this.scrollerEl; // constrain clicks/etc to the dimensions of the scroller - - this.dayGrid.el = this.el.find('.fc-day-grid'); - this.dayGrid.render(this.hasRigidRows()); - }, - - - // Make subcomponents ready for cleanup - destroy: function() { - this.dayGrid.destroy(); - View.prototype.destroy.call(this); // call the super-method - }, - - - // Builds the HTML skeleton for the view. - // The day-grid component will render inside of a container defined by this HTML. - renderHtml: function() { - return '' + - '<table>' + - '<thead>' + - '<tr>' + - '<td class="' + this.widgetHeaderClass + '">' + - this.dayGrid.headHtml() + // render the day-of-week headers - '</td>' + - '</tr>' + - '</thead>' + - '<tbody>' + - '<tr>' + - '<td class="' + this.widgetContentClass + '">' + - '<div class="fc-day-grid-container">' + - '<div class="fc-day-grid"/>' + - '</div>' + - '</td>' + - '</tr>' + - '</tbody>' + - '</table>'; - }, - - - // Generates the HTML that will go before the day-of week header cells. - // Queried by the DayGrid subcomponent when generating rows. Ordering depends on isRTL. - headIntroHtml: function() { - if (this.weekNumbersVisible) { - return '' + - '<th class="fc-week-number ' + this.widgetHeaderClass + '" ' + this.weekNumberStyleAttr() + '>' + - '<span>' + // needed for matchCellWidths - htmlEscape(this.opt('weekNumberTitle')) + - '</span>' + - '</th>'; - } - }, - - - // Generates the HTML that will go before content-skeleton cells that display the day/week numbers. - // Queried by the DayGrid subcomponent. Ordering depends on isRTL. - numberIntroHtml: function(row) { - if (this.weekNumbersVisible) { - return '' + - '<td class="fc-week-number" ' + this.weekNumberStyleAttr() + '>' + - '<span>' + // needed for matchCellWidths - this.calendar.calculateWeekNumber(this.dayGrid.getCell(row, 0).start) + - '</span>' + - '</td>'; - } - }, - - - // Generates the HTML that goes before the day bg cells for each day-row. - // Queried by the DayGrid subcomponent. Ordering depends on isRTL. - dayIntroHtml: function() { - if (this.weekNumbersVisible) { - return '<td class="fc-week-number ' + this.widgetContentClass + '" ' + - this.weekNumberStyleAttr() + '></td>'; - } - }, - - - // Generates the HTML that goes before every other type of row generated by DayGrid. Ordering depends on isRTL. - // Affects helper-skeleton and highlight-skeleton rows. - introHtml: function() { - if (this.weekNumbersVisible) { - return '<td class="fc-week-number" ' + this.weekNumberStyleAttr() + '></td>'; - } - }, - - - // Generates the HTML for the <td>s of the "number" row in the DayGrid's content skeleton. - // The number row will only exist if either day numbers or week numbers are turned on. - numberCellHtml: function(cell) { - var date = cell.start; - var classes; - - if (!this.dayNumbersVisible) { // if there are week numbers but not day numbers - return '<td/>'; // will create an empty space above events :( - } - - classes = this.dayGrid.getDayClasses(date); - classes.unshift('fc-day-number'); - - return '' + - '<td class="' + classes.join(' ') + '" data-date="' + date.format() + '">' + - date.date() + - '</td>'; - }, - - - // Generates an HTML attribute string for setting the width of the week number column, if it is known - weekNumberStyleAttr: function() { - if (this.weekNumberWidth !== null) { - return 'style="width:' + this.weekNumberWidth + 'px"'; - } - return ''; - }, - - - // Determines whether each row should have a constant height - hasRigidRows: function() { - var eventLimit = this.opt('eventLimit'); - return eventLimit && typeof eventLimit !== 'number'; - }, - - - /* Dimensions - ------------------------------------------------------------------------------------------------------------------*/ - - - // Refreshes the horizontal dimensions of the view - updateWidth: function() { - if (this.weekNumbersVisible) { - // Make sure all week number cells running down the side have the same width. - // Record the width for cells created later. - this.weekNumberWidth = matchCellWidths( - this.el.find('.fc-week-number') - ); - } - }, - - - // Adjusts the vertical dimensions of the view to the specified values - setHeight: function(totalHeight, isAuto) { - var eventLimit = this.opt('eventLimit'); - var scrollerHeight; - - // reset all heights to be natural - unsetScroller(this.scrollerEl); - uncompensateScroll(this.headRowEl); - - this.dayGrid.destroySegPopover(); // kill the "more" popover if displayed - - // is the event limit a constant level number? - if (eventLimit && typeof eventLimit === 'number') { - this.dayGrid.limitRows(eventLimit); // limit the levels first so the height can redistribute after - } - - scrollerHeight = this.computeScrollerHeight(totalHeight); - this.setGridHeight(scrollerHeight, isAuto); - - // is the event limit dynamically calculated? - if (eventLimit && typeof eventLimit !== 'number') { - this.dayGrid.limitRows(eventLimit); // limit the levels after the grid's row heights have been set - } - - if (!isAuto && setPotentialScroller(this.scrollerEl, scrollerHeight)) { // using scrollbars? - - compensateScroll(this.headRowEl, getScrollbarWidths(this.scrollerEl)); - - // doing the scrollbar compensation might have created text overflow which created more height. redo - scrollerHeight = this.computeScrollerHeight(totalHeight); - this.scrollerEl.height(scrollerHeight); - - this.restoreScroll(); - } - }, - - - // Sets the height of just the DayGrid component in this view - setGridHeight: function(height, isAuto) { - if (isAuto) { - undistributeHeight(this.dayGrid.rowEls); // let the rows be their natural height with no expanding - } - else { - distributeHeight(this.dayGrid.rowEls, height, true); // true = compensate for height-hogging rows - } - }, - - - /* Events - ------------------------------------------------------------------------------------------------------------------*/ - - - // Renders the given events onto the view and populates the segments array - renderEvents: function(events) { - this.dayGrid.renderEvents(events); - - this.updateHeight(); // must compensate for events that overflow the row - }, - - - // Retrieves all segment objects that are rendered in the view - getEventSegs: function() { - return this.dayGrid.getEventSegs(); - }, - - - // Unrenders all event elements and clears internal segment data - destroyEvents: function() { - this.recordScroll(); // removing events will reduce height and mess with the scroll, so record beforehand - this.dayGrid.destroyEvents(); - - // we DON'T need to call updateHeight() because: - // A) a renderEvents() call always happens after this, which will eventually call updateHeight() - // B) in IE8, this causes a flash whenever events are rerendered - }, - - - /* Dragging (for both events and external elements) - ------------------------------------------------------------------------------------------------------------------*/ - - - // A returned value of `true` signals that a mock "helper" event has been rendered. - renderDrag: function(dropLocation, seg) { - return this.dayGrid.renderDrag(dropLocation, seg); - }, - - - destroyDrag: function() { - this.dayGrid.destroyDrag(); - }, - - - /* Selection - ------------------------------------------------------------------------------------------------------------------*/ - - - // Renders a visual indication of a selection - renderSelection: function(range) { - this.dayGrid.renderSelection(range); - }, - - - // Unrenders a visual indications of a selection - destroySelection: function() { - this.dayGrid.destroySelection(); - } - -}); - - /* A month view with day cells running in rows (one-per-week) and columns -----------------------------------------------------------------------------------------------------------------------*/ - -setDefaults({ - fixedWeekCount: true -}); - -var MonthView = fcViews.month = BasicView.extend({ - - // Produces information about what range to display - computeRange: function(date) { - var range = BasicView.prototype.computeRange.call(this, date); // get value from super-method - - if (this.isFixedWeeks()) { - // ensure 6 weeks - range.end.add( - 6 - range.end.diff(range.start, 'weeks'), - 'weeks' - ); - } - - return range; - }, - - - // Overrides the default BasicView behavior to have special multi-week auto-height logic - setGridHeight: function(height, isAuto) { - - isAuto = isAuto || this.opt('weekMode') === 'variable'; // LEGACY: weekMode is deprecated - - // if auto, make the height of each row the height that it would be if there were 6 weeks - if (isAuto) { - height *= this.rowCnt / 6; - } - - distributeHeight(this.dayGrid.rowEls, height, !isAuto); // if auto, don't compensate for height-hogging rows - }, - - - isFixedWeeks: function() { - var weekMode = this.opt('weekMode'); // LEGACY: weekMode is deprecated - if (weekMode) { - return weekMode === 'fixed'; // if any other type of weekMode, assume NOT fixed - } - - return this.opt('fixedWeekCount'); - } - -}); - -MonthView.duration = { months: 1 }; - - /* A week view with simple day cells running horizontally -----------------------------------------------------------------------------------------------------------------------*/ - -fcViews.basicWeek = { - type: 'basic', - duration: { weeks: 1 } -}; - /* A view with a single simple day cell -----------------------------------------------------------------------------------------------------------------------*/ - -fcViews.basicDay = { - type: 'basic', - duration: { days: 1 } -}; - /* An abstract class for all agenda-related views. Displays one more columns with time slots running vertically. -----------------------------------------------------------------------------------------------------------------------*/ -// Is a manager for the TimeGrid subcomponent and possibly the DayGrid subcomponent (if allDaySlot is on). -// Responsible for managing width/height. - -setDefaults({ - allDaySlot: true, - allDayText: 'all-day', - scrollTime: '06:00:00', - slotDuration: '00:30:00', - minTime: '00:00:00', - maxTime: '24:00:00', - slotEventOverlap: true -}); - -var AGENDA_ALL_DAY_EVENT_LIMIT = 5; - -fcViews.agenda = View.extend({ // AgendaView - - timeGrid: null, // the main time-grid subcomponent of this view - dayGrid: null, // the "all-day" subcomponent. if all-day is turned off, this will be null - - axisWidth: null, // the width of the time axis running down the side - - noScrollRowEls: null, // set of fake row elements that must compensate when scrollerEl has scrollbars - - // when the time-grid isn't tall enough to occupy the given height, we render an <hr> underneath - bottomRuleEl: null, - bottomRuleHeight: null, - - - initialize: function() { - this.timeGrid = new TimeGrid(this); - - if (this.opt('allDaySlot')) { // should we display the "all-day" area? - this.dayGrid = new DayGrid(this); // the all-day subcomponent of this view - - // the coordinate grid will be a combination of both subcomponents' grids - this.coordMap = new ComboCoordMap([ - this.dayGrid.coordMap, - this.timeGrid.coordMap - ]); - } - else { - this.coordMap = this.timeGrid.coordMap; - } - }, - - - /* Rendering - ------------------------------------------------------------------------------------------------------------------*/ - - - // Sets the display range and computes all necessary dates - setRange: function(range) { - View.prototype.setRange.call(this, range); // call the super-method - - this.timeGrid.setRange(range); - if (this.dayGrid) { - this.dayGrid.setRange(range); - } - }, - - - // Renders the view into `this.el`, which has already been assigned - render: function() { - - this.el.addClass('fc-agenda-view').html(this.renderHtml()); - - // the element that wraps the time-grid that will probably scroll - this.scrollerEl = this.el.find('.fc-time-grid-container'); - this.timeGrid.coordMap.containerEl = this.scrollerEl; // don't accept clicks/etc outside of this - - this.timeGrid.el = this.el.find('.fc-time-grid'); - this.timeGrid.render(); - - // the <hr> that sometimes displays under the time-grid - this.bottomRuleEl = $('<hr class="' + this.widgetHeaderClass + '"/>') - .appendTo(this.timeGrid.el); // inject it into the time-grid - - if (this.dayGrid) { - this.dayGrid.el = this.el.find('.fc-day-grid'); - this.dayGrid.render(); - - // have the day-grid extend it's coordinate area over the <hr> dividing the two grids - this.dayGrid.bottomCoordPadding = this.dayGrid.el.next('hr').outerHeight(); - } - - this.noScrollRowEls = this.el.find('.fc-row:not(.fc-scroller *)'); // fake rows not within the scroller - }, - - - // Make subcomponents ready for cleanup - destroy: function() { - this.timeGrid.destroy(); - if (this.dayGrid) { - this.dayGrid.destroy(); - } - View.prototype.destroy.call(this); // call the super-method - }, - - - // Builds the HTML skeleton for the view. - // The day-grid and time-grid components will render inside containers defined by this HTML. - renderHtml: function() { - return '' + - '<table>' + - '<thead>' + - '<tr>' + - '<td class="' + this.widgetHeaderClass + '">' + - this.timeGrid.headHtml() + // render the day-of-week headers - '</td>' + - '</tr>' + - '</thead>' + - '<tbody>' + - '<tr>' + - '<td class="' + this.widgetContentClass + '">' + - (this.dayGrid ? - '<div class="fc-day-grid"/>' + - '<hr class="' + this.widgetHeaderClass + '"/>' : - '' - ) + - '<div class="fc-time-grid-container">' + - '<div class="fc-time-grid"/>' + - '</div>' + - '</td>' + - '</tr>' + - '</tbody>' + - '</table>'; - }, - - - // Generates the HTML that will go before the day-of week header cells. - // Queried by the TimeGrid subcomponent when generating rows. Ordering depends on isRTL. - headIntroHtml: function() { - var date; - var weekNumber; - var weekTitle; - var weekText; - - if (this.opt('weekNumbers')) { - date = this.timeGrid.getCell(0).start; - weekNumber = this.calendar.calculateWeekNumber(date); - weekTitle = this.opt('weekNumberTitle'); - - if (this.opt('isRTL')) { - weekText = weekNumber + weekTitle; - } - else { - weekText = weekTitle + weekNumber; - } - - return '' + - '<th class="fc-axis fc-week-number ' + this.widgetHeaderClass + '" ' + this.axisStyleAttr() + '>' + - '<span>' + // needed for matchCellWidths - htmlEscape(weekText) + - '</span>' + - '</th>'; - } - else { - return '<th class="fc-axis ' + this.widgetHeaderClass + '" ' + this.axisStyleAttr() + '></th>'; - } - }, - - - // Generates the HTML that goes before the all-day cells. - // Queried by the DayGrid subcomponent when generating rows. Ordering depends on isRTL. - dayIntroHtml: function() { - return '' + - '<td class="fc-axis ' + this.widgetContentClass + '" ' + this.axisStyleAttr() + '>' + - '<span>' + // needed for matchCellWidths - (this.opt('allDayHtml') || htmlEscape(this.opt('allDayText'))) + - '</span>' + - '</td>'; - }, - - - // Generates the HTML that goes before the bg of the TimeGrid slot area. Long vertical column. - slotBgIntroHtml: function() { - return '<td class="fc-axis ' + this.widgetContentClass + '" ' + this.axisStyleAttr() + '></td>'; - }, - - - // Generates the HTML that goes before all other types of cells. - // Affects content-skeleton, helper-skeleton, highlight-skeleton for both the time-grid and day-grid. - // Queried by the TimeGrid and DayGrid subcomponents when generating rows. Ordering depends on isRTL. - introHtml: function() { - return '<td class="fc-axis" ' + this.axisStyleAttr() + '></td>'; - }, - - - // Generates an HTML attribute string for setting the width of the axis, if it is known - axisStyleAttr: function() { - if (this.axisWidth !== null) { - return 'style="width:' + this.axisWidth + 'px"'; - } - return ''; - }, - - - /* Dimensions - ------------------------------------------------------------------------------------------------------------------*/ - - - updateSize: function(isResize) { - if (isResize) { - this.timeGrid.resize(); - } - View.prototype.updateSize.call(this, isResize); - }, - - - // Refreshes the horizontal dimensions of the view - updateWidth: function() { - // make all axis cells line up, and record the width so newly created axis cells will have it - this.axisWidth = matchCellWidths(this.el.find('.fc-axis')); - }, - - - // Adjusts the vertical dimensions of the view to the specified values - setHeight: function(totalHeight, isAuto) { - var eventLimit; - var scrollerHeight; - - if (this.bottomRuleHeight === null) { - // calculate the height of the rule the very first time - this.bottomRuleHeight = this.bottomRuleEl.outerHeight(); - } - this.bottomRuleEl.hide(); // .show() will be called later if this <hr> is necessary - - // reset all dimensions back to the original state - this.scrollerEl.css('overflow', ''); - unsetScroller(this.scrollerEl); - uncompensateScroll(this.noScrollRowEls); - - // limit number of events in the all-day area - if (this.dayGrid) { - this.dayGrid.destroySegPopover(); // kill the "more" popover if displayed - - eventLimit = this.opt('eventLimit'); - if (eventLimit && typeof eventLimit !== 'number') { - eventLimit = AGENDA_ALL_DAY_EVENT_LIMIT; // make sure "auto" goes to a real number - } - if (eventLimit) { - this.dayGrid.limitRows(eventLimit); - } - } - - if (!isAuto) { // should we force dimensions of the scroll container, or let the contents be natural height? - - scrollerHeight = this.computeScrollerHeight(totalHeight); - if (setPotentialScroller(this.scrollerEl, scrollerHeight)) { // using scrollbars? - - // make the all-day and header rows lines up - compensateScroll(this.noScrollRowEls, getScrollbarWidths(this.scrollerEl)); - - // the scrollbar compensation might have changed text flow, which might affect height, so recalculate - // and reapply the desired height to the scroller. - scrollerHeight = this.computeScrollerHeight(totalHeight); - this.scrollerEl.height(scrollerHeight); - - this.restoreScroll(); - } - else { // no scrollbars - // still, force a height and display the bottom rule (marks the end of day) - this.scrollerEl.height(scrollerHeight).css('overflow', 'hidden'); // in case <hr> goes outside - this.bottomRuleEl.show(); - } - } - }, - - - // Sets the scroll value of the scroller to the initial pre-configured state prior to allowing the user to change it - initializeScroll: function() { - var _this = this; - var scrollTime = moment.duration(this.opt('scrollTime')); - var top = this.timeGrid.computeTimeTop(scrollTime); - - // zoom can give weird floating-point values. rather scroll a little bit further - top = Math.ceil(top); - - if (top) { - top++; // to overcome top border that slots beyond the first have. looks better - } - - function scroll() { - _this.scrollerEl.scrollTop(top); - } - - scroll(); - setTimeout(scroll, 0); // overrides any previous scroll state made by the browser - }, - - - /* Events - ------------------------------------------------------------------------------------------------------------------*/ - - - // Renders events onto the view and populates the View's segment array - renderEvents: function(events) { - var dayEvents = []; - var timedEvents = []; - var daySegs = []; - var timedSegs; - var i; - - // separate the events into all-day and timed - for (i = 0; i < events.length; i++) { - if (events[i].allDay) { - dayEvents.push(events[i]); - } - else { - timedEvents.push(events[i]); - } - } - - // render the events in the subcomponents - timedSegs = this.timeGrid.renderEvents(timedEvents); - if (this.dayGrid) { - daySegs = this.dayGrid.renderEvents(dayEvents); - } - - // the all-day area is flexible and might have a lot of events, so shift the height - this.updateHeight(); - }, - - - // Retrieves all segment objects that are rendered in the view - getEventSegs: function() { - return this.timeGrid.getEventSegs().concat( - this.dayGrid ? this.dayGrid.getEventSegs() : [] - ); - }, - - - // Unrenders all event elements and clears internal segment data - destroyEvents: function() { - - // if destroyEvents is being called as part of an event rerender, renderEvents will be called shortly - // after, so remember what the scroll value was so we can restore it. - this.recordScroll(); - - // destroy the events in the subcomponents - this.timeGrid.destroyEvents(); - if (this.dayGrid) { - this.dayGrid.destroyEvents(); - } - - // we DON'T need to call updateHeight() because: - // A) a renderEvents() call always happens after this, which will eventually call updateHeight() - // B) in IE8, this causes a flash whenever events are rerendered - }, - - - /* Dragging (for events and external elements) - ------------------------------------------------------------------------------------------------------------------*/ - - - // A returned value of `true` signals that a mock "helper" event has been rendered. - renderDrag: function(dropLocation, seg) { - if (dropLocation.start.hasTime()) { - return this.timeGrid.renderDrag(dropLocation, seg); - } - else if (this.dayGrid) { - return this.dayGrid.renderDrag(dropLocation, seg); - } - }, - - - destroyDrag: function() { - this.timeGrid.destroyDrag(); - if (this.dayGrid) { - this.dayGrid.destroyDrag(); - } - }, - - - /* Selection - ------------------------------------------------------------------------------------------------------------------*/ - - - // Renders a visual indication of a selection - renderSelection: function(range) { - if (range.start.hasTime() || range.end.hasTime()) { - this.timeGrid.renderSelection(range); - } - else if (this.dayGrid) { - this.dayGrid.renderSelection(range); - } - }, - - - // Unrenders a visual indications of a selection - destroySelection: function() { - this.timeGrid.destroySelection(); - if (this.dayGrid) { - this.dayGrid.destroySelection(); - } - } - -}); - - /* A week view with an all-day cell area at the top, and a time grid below -----------------------------------------------------------------------------------------------------------------------*/ - -fcViews.agendaWeek = { - type: 'agenda', - duration: { weeks: 1 } -}; - /* A day view with an all-day cell area at the top, and a time grid below -----------------------------------------------------------------------------------------------------------------------*/ - -fcViews.agendaDay = { - type: 'agenda', - duration: { days: 1 } -}; -}); \ No newline at end of file diff --git a/assets/plugins/fullcalendar/fullcalendar.min.css b/assets/plugins/fullcalendar/fullcalendar.min.css deleted file mode 100644 index 083ec9d6..00000000 --- a/assets/plugins/fullcalendar/fullcalendar.min.css +++ /dev/null @@ -1,5 +0,0 @@ -/*! - * FullCalendar v2.2.5 Stylesheet - * Docs & License: http://arshaw.com/fullcalendar/ - * (c) 2013 Adam Shaw - */.fc{direction:ltr;text-align:left}.fc-rtl{text-align:right}body .fc{font-size:1em}.fc-unthemed .fc-popover,.fc-unthemed .fc-row,.fc-unthemed hr,.fc-unthemed tbody,.fc-unthemed td,.fc-unthemed th,.fc-unthemed thead{border-color:#ddd}.fc-unthemed .fc-popover{background-color:#fff}.fc-unthemed .fc-popover .fc-header,.fc-unthemed hr{background:#eee}.fc-unthemed .fc-popover .fc-header .fc-close{color:#666}.fc-unthemed .fc-today{background:#fcf8e3}.fc-highlight{background:#bce8f1;opacity:.3;filter:alpha(opacity=30)}.fc-bgevent{background:#8fdf82;opacity:.3;filter:alpha(opacity=30)}.fc-nonbusiness{background:#ccc}.fc-icon{display:inline-block;font-size:2em;line-height:.5em;height:.5em;font-family:"Courier New",Courier,monospace}.fc-icon-left-single-arrow:after{content:"\02039";font-weight:700}.fc-icon-right-single-arrow:after{content:"\0203A";font-weight:700}.fc-icon-left-double-arrow:after{content:"\000AB"}.fc-icon-right-double-arrow:after{content:"\000BB"}.fc-icon-x:after{content:"\000D7"}.fc button{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;height:2.1em;padding:0 .6em;font-size:1em;white-space:nowrap;cursor:pointer}.fc button::-moz-focus-inner{margin:0;padding:0}.fc-state-default{border:1px solid}.fc-state-default.fc-corner-left{border-top-left-radius:4px;border-bottom-left-radius:4px}.fc-state-default.fc-corner-right{border-top-right-radius:4px;border-bottom-right-radius:4px}.fc button .fc-icon{position:relative;top:.05em;margin:0 .1em}.fc-state-default{background-color:#f5f5f5;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);color:#333;text-shadow:0 1px 1px rgba(255,255,255,.75);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05)}.fc-state-active,.fc-state-disabled,.fc-state-down,.fc-state-hover{color:#333;background-color:#e6e6e6}.fc-state-hover{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.fc-state-active,.fc-state-down{background-color:#ccc;background-image:none;box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05)}.fc-state-disabled{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);box-shadow:none}.fc-button-group{display:inline-block}.fc .fc-button-group>*{float:left;margin:0 0 0 -1px}.fc .fc-button-group>:first-child{margin-left:0}.fc-popover{position:absolute;box-shadow:0 2px 6px rgba(0,0,0,.15)}.fc-popover .fc-header{padding:2px 4px}.fc-popover .fc-header .fc-title{margin:0 2px}.fc-popover .fc-header .fc-close{cursor:pointer}.fc-ltr .fc-popover .fc-header .fc-title,.fc-rtl .fc-popover .fc-header .fc-close{float:left}.fc-ltr .fc-popover .fc-header .fc-close,.fc-rtl .fc-popover .fc-header .fc-title{float:right}.fc-unthemed .fc-popover{border-width:1px;border-style:solid}.fc-unthemed .fc-popover .fc-header .fc-close{font-size:25px;margin-top:4px}.fc-popover>.ui-widget-header+.ui-widget-content{border-top:0}.fc hr{height:0;margin:0;padding:0 0 2px;border-style:solid;border-width:1px 0}.fc-clear{clear:both}.fc-bg,.fc-bgevent-skeleton,.fc-helper-skeleton,.fc-highlight-skeleton{position:absolute;top:0;left:0;right:0}.fc-bg{bottom:0}.fc-bg table{height:100%}.fc table{width:100%;table-layout:fixed;border-collapse:collapse;border-spacing:0;font-size:1em}.fc th{text-align:center}.fc td,.fc th{border-style:solid;border-width:1px;padding:0;vertical-align:top}.fc td.fc-today{border-style:double}.fc .fc-row{border-style:solid;border-width:0}.fc-row table{border-left:0 hidden transparent;border-right:0 hidden transparent;border-bottom:0 hidden transparent}.fc-row:first-child table{border-top:0 hidden transparent}.fc-row{position:relative}.fc-row .fc-bg{z-index:1}.fc-row .fc-bgevent-skeleton,.fc-row .fc-highlight-skeleton{bottom:0}.fc-row .fc-bgevent-skeleton table,.fc-row .fc-highlight-skeleton table{height:100%}.fc-row .fc-bgevent-skeleton td,.fc-row .fc-highlight-skeleton td{border-color:transparent}.fc-row .fc-bgevent-skeleton{z-index:2}.fc-row .fc-highlight-skeleton{z-index:3}.fc-row .fc-content-skeleton{position:relative;z-index:4;padding-bottom:2px}.fc-row .fc-helper-skeleton{z-index:5}.fc-row .fc-content-skeleton td,.fc-row .fc-helper-skeleton td{background:0 0;border-color:transparent;border-bottom:0}.fc-row .fc-content-skeleton tbody td,.fc-row .fc-helper-skeleton tbody td{border-top:0}.fc-scroller{overflow-y:scroll;overflow-x:hidden}.fc-scroller>*{position:relative;width:100%;overflow:hidden}.fc-event{position:relative;display:block;font-size:.85em;line-height:1.3;border-radius:3px;border:1px solid #3a87ad;background-color:#3a87ad;font-weight:400}.fc-event,.fc-event:hover,.ui-widget .fc-event{color:#fff;text-decoration:none}.fc-event.fc-draggable,.fc-event[href]{cursor:pointer}.fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc-day-grid-event{margin:1px 2px 0;padding:0 1px}.fc-ltr .fc-day-grid-event.fc-not-start,.fc-rtl .fc-day-grid-event.fc-not-end{margin-left:0;border-left-width:0;padding-left:1px;border-top-left-radius:0;border-bottom-left-radius:0}.fc-ltr .fc-day-grid-event.fc-not-end,.fc-rtl .fc-day-grid-event.fc-not-start{margin-right:0;border-right-width:0;padding-right:1px;border-top-right-radius:0;border-bottom-right-radius:0}.fc-day-grid-event>.fc-content{white-space:nowrap;overflow:hidden}.fc-day-grid-event .fc-time{font-weight:700}.fc-day-grid-event .fc-resizer{position:absolute;top:0;bottom:0;width:7px}.fc-ltr .fc-day-grid-event .fc-resizer{right:-3px;cursor:e-resize}.fc-rtl .fc-day-grid-event .fc-resizer{left:-3px;cursor:w-resize}a.fc-more{margin:1px 3px;font-size:.85em;cursor:pointer;text-decoration:none}a.fc-more:hover{text-decoration:underline}.fc-limited{display:none}.fc-day-grid .fc-row{z-index:1}.fc-more-popover{z-index:2;width:220px}.fc-more-popover .fc-event-container{padding:10px}.fc-toolbar{text-align:center;margin-bottom:1em}.fc-toolbar .fc-left{float:left}.fc-toolbar .fc-right{float:right}.fc-toolbar .fc-center{display:inline-block}.fc .fc-toolbar>*>*{float:left;margin-left:.75em}.fc .fc-toolbar>*>:first-child{margin-left:0}.fc-toolbar h2{margin:0}.fc-toolbar button{position:relative}.fc-toolbar .fc-state-hover,.fc-toolbar .ui-state-hover{z-index:2}.fc-toolbar .fc-state-down{z-index:3}.fc-toolbar .fc-state-active,.fc-toolbar .ui-state-active{z-index:4}.fc-toolbar button:focus{z-index:5}.fc-view-container *,.fc-view-container :after,.fc-view-container :before{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.fc-view,.fc-view>table{position:relative;z-index:1}.fc-basicDay-view .fc-content-skeleton,.fc-basicWeek-view .fc-content-skeleton{padding-top:1px;padding-bottom:1em}.fc-basic-view tbody .fc-row{min-height:4em}.fc-row.fc-rigid{overflow:hidden}.fc-row.fc-rigid .fc-content-skeleton{position:absolute;top:0;left:0;right:0}.fc-basic-view .fc-day-number,.fc-basic-view .fc-week-number{padding:0 2px}.fc-basic-view td.fc-day-number,.fc-basic-view td.fc-week-number span{padding-top:2px;padding-bottom:2px}.fc-basic-view .fc-week-number{text-align:center}.fc-basic-view .fc-week-number span{display:inline-block;min-width:1.25em}.fc-ltr .fc-basic-view .fc-day-number{text-align:right}.fc-rtl .fc-basic-view .fc-day-number{text-align:left}.fc-day-number.fc-other-month{opacity:.3;filter:alpha(opacity=30)}.fc-agenda-view .fc-day-grid{position:relative;z-index:2}.fc-agenda-view .fc-day-grid .fc-row{min-height:3em}.fc-agenda-view .fc-day-grid .fc-row .fc-content-skeleton{padding-top:1px;padding-bottom:1em}.fc .fc-axis{vertical-align:middle;padding:0 4px;white-space:nowrap}.fc-ltr .fc-axis{text-align:right}.fc-rtl .fc-axis{text-align:left}.ui-widget td.fc-axis{font-weight:400}.fc-time-grid,.fc-time-grid-container{position:relative;z-index:1}.fc-time-grid{min-height:100%}.fc-time-grid table{border:0 hidden transparent}.fc-time-grid>.fc-bg{z-index:1}.fc-time-grid .fc-slats,.fc-time-grid>hr{position:relative;z-index:2}.fc-time-grid .fc-bgevent-skeleton,.fc-time-grid .fc-content-skeleton{position:absolute;top:0;left:0;right:0}.fc-time-grid .fc-bgevent-skeleton{z-index:3}.fc-time-grid .fc-highlight-skeleton{z-index:4}.fc-time-grid .fc-content-skeleton{z-index:5}.fc-time-grid .fc-helper-skeleton{z-index:6}.fc-slats td{height:1.5em;border-bottom:0}.fc-slats .fc-minor td{border-top-style:dotted}.fc-slats .ui-widget-content{background:0 0}.fc-time-grid .fc-highlight-container{position:relative}.fc-time-grid .fc-highlight{position:absolute;left:0;right:0}.fc-time-grid .fc-bgevent-container,.fc-time-grid .fc-event-container{position:relative}.fc-ltr .fc-time-grid .fc-event-container{margin:0 2.5% 0 2px}.fc-rtl .fc-time-grid .fc-event-container{margin:0 2px 0 2.5%}.fc-time-grid .fc-bgevent,.fc-time-grid .fc-event{position:absolute;z-index:1}.fc-time-grid .fc-bgevent{left:0;right:0}.fc-time-grid-event.fc-not-start{border-top-width:0;padding-top:1px;border-top-left-radius:0;border-top-right-radius:0}.fc-time-grid-event.fc-not-end{border-bottom-width:0;padding-bottom:1px;border-bottom-left-radius:0;border-bottom-right-radius:0}.fc-time-grid-event{overflow:hidden}.fc-time-grid-event>.fc-content{position:relative;z-index:2}.fc-time-grid-event .fc-time,.fc-time-grid-event .fc-title{padding:0 1px}.fc-time-grid-event .fc-time{font-size:.85em;white-space:nowrap}.fc-time-grid-event .fc-bg{z-index:1;background:#fff;opacity:.25;filter:alpha(opacity=25)}.fc-time-grid-event.fc-short .fc-content{white-space:nowrap}.fc-time-grid-event.fc-short .fc-time,.fc-time-grid-event.fc-short .fc-title{display:inline-block;vertical-align:top}.fc-time-grid-event.fc-short .fc-time span{display:none}.fc-time-grid-event.fc-short .fc-time:before{content:attr(data-start)}.fc-time-grid-event.fc-short .fc-time:after{content:"\000A0-\000A0"}.fc-time-grid-event.fc-short .fc-title{font-size:.85em;padding:0}.fc-time-grid-event .fc-resizer{position:absolute;z-index:3;left:0;right:0;bottom:0;height:8px;overflow:hidden;line-height:8px;font-size:11px;font-family:monospace;text-align:center;cursor:s-resize}.fc-time-grid-event .fc-resizer:after{content:"="} \ No newline at end of file diff --git a/assets/plugins/fullcalendar/fullcalendar.min.js b/assets/plugins/fullcalendar/fullcalendar.min.js deleted file mode 100644 index 343d9076..00000000 --- a/assets/plugins/fullcalendar/fullcalendar.min.js +++ /dev/null @@ -1,8 +0,0 @@ -/*! - * FullCalendar v2.2.5 - * Docs & License: http://arshaw.com/fullcalendar/ - * (c) 2013 Adam Shaw - */ -(function(t){"function"==typeof define&&define.amd?define(["jquery","moment"],t):t(jQuery,moment)})(function(t,e){function n(t){i(Ee,t)}function i(e){function n(n,s){t.isPlainObject(s)&&t.isPlainObject(e[n])&&!r(n)?e[n]=i({},e[n],s):void 0!==s&&(e[n]=s)}for(var s=1;arguments.length>s;s++)t.each(arguments[s],n);return e}function r(t){return/(Time|Duration)$/.test(t)}function s(t){var n=e.localeData||e.langData;return n.call(e,t)||n.call(e,"en")}function o(t,e){e.left&&t.css({"border-left-width":1,"margin-left":e.left-1}),e.right&&t.css({"border-right-width":1,"margin-right":e.right-1})}function l(t){t.css({"margin-left":"","margin-right":"","border-left-width":"","border-right-width":""})}function a(){t("body").addClass("fc-not-allowed")}function u(){t("body").removeClass("fc-not-allowed")}function d(e,n,i){var r=Math.floor(n/e.length),s=Math.floor(n-r*(e.length-1)),o=[],l=[],a=[],u=0;c(e),e.each(function(n,i){var d=n===e.length-1?s:r,c=t(i).outerHeight(!0);d>c?(o.push(i),l.push(c),a.push(t(i).height())):u+=c}),i&&(n-=u,r=Math.floor(n/o.length),s=Math.floor(n-r*(o.length-1))),t(o).each(function(e,n){var i=e===o.length-1?s:r,u=l[e],d=a[e],c=i-(u-d);i>u&&t(n).height(c)})}function c(t){t.height("")}function h(e){var n=0;return e.find("> *").each(function(e,i){var r=t(i).outerWidth();r>n&&(n=r)}),n++,e.width(n),n}function f(t,e){return t.height(e).addClass("fc-scroller"),t[0].scrollHeight-1>t[0].clientHeight?!0:(g(t),!1)}function g(t){t.height("").removeClass("fc-scroller")}function p(e){var n=e.css("position"),i=e.parents().filter(function(){var e=t(this);return/(auto|scroll)/.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==n&&i.length?i:t(e[0].ownerDocument||document)}function m(t){var e=t.offset().left,n=e+t.width(),i=t.children(),r=i.offset().left,s=r+i.outerWidth();return{left:r-e,right:n-s}}function v(t){return 1==t.which&&!t.ctrlKey}function y(t,e){var n,i,r,s,o=t.start,l=t.end,a=e.start,u=e.end;return l>a&&u>o?(o>=a?(n=o.clone(),r=!0):(n=a.clone(),r=!1),u>=l?(i=l.clone(),s=!0):(i=u.clone(),s=!1),{start:n,end:i,isStart:r,isEnd:s}):void 0}function w(t,e){if(t=t||{},void 0!==t[e])return t[e];for(var n,i=e.split(/(?=[A-Z])/),r=i.length-1;r>=0;r--)if(n=t[i[r].toLowerCase()],void 0!==n)return n;return t["default"]}function E(t,n){return e.duration({days:t.clone().stripTime().diff(n.clone().stripTime(),"days"),ms:t.time()-n.time()})}function S(t,n){return e.duration({days:t.clone().stripTime().diff(n.clone().stripTime(),"days")})}function b(t,e){var n,i;for(n=0;ze.length>n&&(i=ze[n],!D(i,t,e));n++);return i}function D(t,n,i){var r;return r=null!=i?i.diff(n,t,!0):e.isDuration(n)?n.as(t):n.end.diff(n.start,t,!0),r>=1&&_(r)?r:!1}function C(t){return"[object Date]"===Object.prototype.toString.call(t)||t instanceof Date}function T(t){return/^\d+\:\d+(?:\:\d+\.?(?:\d{3})?)?$/.test(t)}function x(t){var e=function(){};return e.prototype=t,new e}function H(t,e){for(var n in t)R(t,n)&&(e[n]=t[n])}function R(t,e){return Le.call(t,e)}function k(e){return/undefined|null|boolean|number|string/.test(t.type(e))}function M(e,n,i){if(t.isFunction(e)&&(e=[e]),e){var r,s;for(r=0;e.length>r;r++)s=e[r].apply(n,i)||s;return s}}function F(){for(var t=0;arguments.length>t;t++)if(void 0!==arguments[t])return arguments[t]}function z(t){return(t+"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&#039;").replace(/"/g,"&quot;").replace(/\n/g,"<br />")}function L(t){return t.replace(/&.*?;/g,"")}function P(t){return t.charAt(0).toUpperCase()+t.slice(1)}function V(t,e){return t-e}function _(t){return 0===t%1}function G(t,e){var n,i,r,s,o=function(){var l=+new Date-s;e>l&&l>0?n=setTimeout(o,e-l):(n=null,t.apply(r,i),n||(r=i=null))};return function(){r=this,i=arguments,s=+new Date,n||(n=setTimeout(o,e))}}function A(n,i,r){var s,o,l,a,u=n[0],d=1==n.length&&"string"==typeof u;return e.isMoment(u)?(a=e.apply(null,n),Y(u,a)):C(u)||void 0===u?a=e.apply(null,n):(s=!1,o=!1,d?Pe.test(u)?(u+="-01",n=[u],s=!0,o=!0):(l=Ve.exec(u))&&(s=!l[5],o=!0):t.isArray(u)&&(o=!0),a=i||s?e.utc.apply(e,n):e.apply(null,n),s?(a._ambigTime=!0,a._ambigZone=!0):r&&(o?a._ambigZone=!0:d&&a.zone(u))),a._fullCalendar=!0,a}function N(t,n){var i,r,s=!1,o=!1,l=t.length,a=[];for(i=0;l>i;i++)r=t[i],e.isMoment(r)||(r=De.moment.parseZone(r)),s=s||r._ambigTime,o=o||r._ambigZone,a.push(r);for(i=0;l>i;i++)r=a[i],n||!s||r._ambigTime?o&&!r._ambigZone&&(a[i]=r.clone().stripZone()):a[i]=r.clone().stripTime();return a}function Y(t,e){t._ambigTime?e._ambigTime=!0:e._ambigTime&&(e._ambigTime=!1),t._ambigZone?e._ambigZone=!0:e._ambigZone&&(e._ambigZone=!1)}function O(t,e){t.year(e[0]||0).month(e[1]||0).date(e[2]||0).hours(e[3]||0).minutes(e[4]||0).seconds(e[5]||0).milliseconds(e[6]||0)}function B(t,e){return Ge.format.call(t,e)}function Z(t,e){return I(t,U(e))}function I(t,e){var n,i="";for(n=0;e.length>n;n++)i+=W(t,e[n]);return i}function W(t,e){var n,i;return"string"==typeof e?e:(n=e.token)?Ae[n]?Ae[n](t):B(t,n):e.maybe&&(i=I(t,e.maybe),i.match(/[1-9]/))?i:""}function j(t,e,n,i,r){var s;return t=De.moment.parseZone(t),e=De.moment.parseZone(e),s=(t.localeData||t.lang).call(t),n=s.longDateFormat(n)||n,i=i||" - ",X(t,e,U(n),i,r)}function X(t,e,n,i,r){var s,o,l,a,u="",d="",c="",h="",f="";for(o=0;n.length>o&&(s=$(t,e,n[o]),s!==!1);o++)u+=s;for(l=n.length-1;l>o&&(s=$(t,e,n[l]),s!==!1);l--)d=s+d;for(a=o;l>=a;a++)c+=W(t,n[a]),h+=W(e,n[a]);return(c||h)&&(f=r?h+i+c:c+i+h),u+f+d}function $(t,e,n){var i,r;return"string"==typeof n?n:(i=n.token)&&(r=Ne[i.charAt(0)],r&&t.isSame(e,r))?B(t,i):!1}function U(t){return t in Ye?Ye[t]:Ye[t]=q(t)}function q(t){for(var e,n=[],i=/\[([^\]]*)\]|\(([^\)]*)\)|(LT|(\w)\4*o?)|([^\w\[\(]+)/g;e=i.exec(t);)e[1]?n.push(e[1]):e[2]?n.push({maybe:q(e[2])}):e[3]?n.push({token:e[3]}):e[5]&&n.push(e[5]);return n}function K(){}function Q(t,e){return t||e?t&&e?t.grid===e.grid&&t.row===e.row&&t.col===e.col:!1:!0}function J(t){var e=ee(t);return"background"===e||"inverse-background"===e}function te(t){return"inverse-background"===ee(t)}function ee(t){return F((t.source||{}).rendering,t.rendering)}function ne(t){var e,n,i={};for(e=0;t.length>e;e++)n=t[e],(i[n._id]||(i[n._id]=[])).push(n);return i}function ie(t,e){return t.eventStartMS-e.eventStartMS}function re(t,e){return t.eventStartMS-e.eventStartMS||e.eventDurationMS-t.eventDurationMS||e.event.allDay-t.event.allDay||(t.event.title||"").localeCompare(e.event.title)}function se(n){var i,r,s,o,l=De.dataAttrPrefix;return l&&(l+="-"),i=n.data(l+"event")||null,i&&(i="object"==typeof i?t.extend({},i):{},r=i.start,null==r&&(r=i.time),s=i.duration,o=i.stick,delete i.start,delete i.time,delete i.duration,delete i.stick),null==r&&(r=n.data(l+"start")),null==r&&(r=n.data(l+"time")),null==s&&(s=n.data(l+"duration")),null==o&&(o=n.data(l+"stick")),r=null!=r?e.duration(r):null,s=null!=s?e.duration(s):null,o=Boolean(o),{eventProps:i,startTime:r,duration:s,stick:o}}function oe(t,e){var n,i;for(n=0;e.length>n;n++)if(i=e[n],i.leftCol<=t.rightCol&&i.rightCol>=t.leftCol)return!0;return!1}function le(t,e){return t.leftCol-e.leftCol}function ae(t){var e,n,i;if(t.sort(re),e=ue(t),de(e),n=e[0]){for(i=0;n.length>i;i++)ce(n[i]);for(i=0;n.length>i;i++)he(n[i],0,0)}}function ue(t){var e,n,i,r=[];for(e=0;t.length>e;e++){for(n=t[e],i=0;r.length>i&&fe(n,r[i]).length;i++);n.level=i,(r[i]||(r[i]=[])).push(n)}return r}function de(t){var e,n,i,r,s;for(e=0;t.length>e;e++)for(n=t[e],i=0;n.length>i;i++)for(r=n[i],r.forwardSegs=[],s=e+1;t.length>s;s++)fe(r,t[s],r.forwardSegs)}function ce(t){var e,n,i=t.forwardSegs,r=0;if(void 0===t.forwardPressure){for(e=0;i.length>e;e++)n=i[e],ce(n),r=Math.max(r,1+n.forwardPressure);t.forwardPressure=r}}function he(t,e,n){var i,r=t.forwardSegs;if(void 0===t.forwardCoord)for(r.length?(r.sort(pe),he(r[0],e+1,n),t.forwardCoord=r[0].backwardCoord):t.forwardCoord=1,t.backwardCoord=t.forwardCoord-(t.forwardCoord-n)/(e+1),i=0;r.length>i;i++)he(r[i],0,t.forwardCoord)}function fe(t,e,n){n=n||[];for(var i=0;e.length>i;i++)ge(t,e[i])&&n.push(e[i]);return n}function ge(t,e){return t.bottom>e.top&&t.top<e.bottom}function pe(t,e){return e.forwardPressure-t.forwardPressure||(t.backwardCoord||0)-(e.backwardCoord||0)||re(t,e)}function me(n,r){function o(t){return(t.locale||t.lang).call(t,te.lang).humanize()}function l(t){se?d()&&(y(),h(t)):a()}function a(){oe=te.theme?"ui":"fc",n.addClass("fc"),te.isRTL?n.addClass("fc-rtl"):n.addClass("fc-ltr"),te.theme?n.addClass("ui-widget"):n.addClass("fc-unthemed"),se=t("<div class='fc-view-container'/>").prependTo(n),ie=new ve(Q,te),re=ie.render(),re&&n.prepend(re),c(te.defaultView),te.handleWindowResize&&(ue=G(E,te.windowResizeDelay),t(window).resize(ue))}function u(){le&&le.destroyView(),ie.destroy(),se.remove(),n.removeClass("fc fc-ltr fc-rtl fc-unthemed ui-widget"),t(window).unbind("resize",ue)}function d(){return n.is(":visible")}function c(t){h(0,t)}function h(e,n){pe++,le&&n&&le.type!==n&&(ie.deactivateButton(le.type),j(),le.start&&le.destroyView(),le.el.remove(),le=null),!le&&n&&(le=f(n),le.el=t("<div class='fc-view fc-"+n+"-view' />").appendTo(se),ie.activateButton(n)),le&&(0>e?de=le.computePrevDate(de):e>0&&(de=le.computeNextDate(de)),le.start&&!e&&de.isWithin(le.intervalStart,le.intervalEnd)||d()&&(j(),le.start&&le.destroyView(),le.setDate(de),le.renderView(),X(),F(),z(),H())),X(),pe--}function f(t){var e=g(t);return new e["class"](Q,e.options,t)}function g(n){function i(e){"function"==typeof e?s=e:"object"==typeof e&&t.extend(r,e)}var r,s,l,a,u,d=te.defaultButtonText||{},c=te.buttonText||{},h=te.views||{},f=n,g=[],p=!1;if(ge[n])return ge[n];for(;f&&!s;)r={},i(Ce[f]),i(h[f]),g.unshift(r),f=r.type;return g.unshift({}),r=t.extend.apply(t,g),s?(l=r.duration||s.duration,l&&(l=e.duration(l),a=b(l),p=1===D(a,l)),p&&h[a]&&(r=t.extend({},h[a],r)),u=c[n]||(p?c[a]:null)||d[n]||(p?d[a]:null)||r.buttonText||s.buttonText||(l?o(l):null)||n,ge[n]={"class":s,options:r,buttonText:u}):void 0}function p(t){return Boolean(g(t))}function m(t){var e=g(t);return e?e.buttonText:void 0}function v(t){return d()?(t&&w(),pe++,le.updateSize(!0),pe--,!0):void 0}function y(){d()&&w()}function w(){ae="number"==typeof te.contentHeight?te.contentHeight:"number"==typeof te.height?te.height-(re?re.outerHeight(!0):0):Math.round(se.width()/Math.max(te.aspectRatio,.5))}function E(t){!pe&&t.target===window&&le.start&&v(!0)&&le.trigger("windowResize",fe)}function S(){T(),R()}function C(){d()&&(j(),le.destroyViewEvents(),le.renderViewEvents(me),X())}function T(){j(),le.destroyViewEvents(),X()}function H(){!te.lazyFetching||ce(le.start,le.end)?R():C()}function R(){he(le.start,le.end)}function k(t){me=t,C()}function M(){C()}function F(){ie.updateTitle(le.computeTitle())}function z(){var t=Q.getNow();t.isWithin(le.intervalStart,le.intervalEnd)?ie.disableButton("today"):ie.enableButton("today")}function L(t,e){t=Q.moment(t),e=e?Q.moment(e):t.hasTime()?t.clone().add(Q.defaultTimedEventDuration):t.clone().add(Q.defaultAllDayEventDuration),le.select({start:t,end:e})}function V(){le&&le.unselect()}function _(){h(-1)}function A(){h(1)}function N(){de.add(-1,"years"),h()}function Y(){de.add(1,"years"),h()}function O(){de=Q.getNow(),h()}function B(t){de=Q.moment(t),h()}function Z(t){de.add(e.duration(t)),h()}function I(t,e){var n,i;e&&p(e)||(e=e||"day",n=ie.getViewsWithButtons().join(" "),i=n.match(RegExp("\\w+"+P(e))),i||(i=n.match(/\w+Day/)),e=i?i[0]:"agendaDay"),de=t,c(e)}function W(){return de.clone()}function j(){se.css({width:"100%",height:se.height(),overflow:"hidden"})}function X(){se.css({width:"",height:"",overflow:""})}function $(){return Q}function U(){return le}function q(t,e){return void 0===e?te[t]:(("height"==t||"contentHeight"==t||"aspectRatio"==t)&&(te[t]=e,v(!0)),void 0)}function K(t,e){return te[t]?te[t].apply(e||fe,Array.prototype.slice.call(arguments,2)):void 0}var Q=this;r=r||{};var J,te=i({},Ee,r);J=te.lang in Te?Te[te.lang]:Te[Ee.lang],J&&(te=i({},Ee,J,r)),te.isRTL&&(te=i({},Ee,be,J||{},r)),Q.options=te,Q.render=l,Q.destroy=u,Q.refetchEvents=S,Q.reportEvents=k,Q.reportEventChange=M,Q.rerenderEvents=C,Q.changeView=c,Q.select=L,Q.unselect=V,Q.prev=_,Q.next=A,Q.prevYear=N,Q.nextYear=Y,Q.today=O,Q.gotoDate=B,Q.incrementDate=Z,Q.zoomTo=I,Q.getDate=W,Q.getCalendar=$,Q.getView=U,Q.option=q,Q.trigger=K,Q.isValidViewType=p,Q.getViewButtonText=m;var ee=x(s(te.lang));if(te.monthNames&&(ee._months=te.monthNames),te.monthNamesShort&&(ee._monthsShort=te.monthNamesShort),te.dayNames&&(ee._weekdays=te.dayNames),te.dayNamesShort&&(ee._weekdaysShort=te.dayNamesShort),null!=te.firstDay){var ne=x(ee._week);ne.dow=te.firstDay,ee._week=ne}Q.defaultAllDayEventDuration=e.duration(te.defaultAllDayEventDuration),Q.defaultTimedEventDuration=e.duration(te.defaultTimedEventDuration),Q.moment=function(){var t;return"local"===te.timezone?(t=De.moment.apply(null,arguments),t.hasTime()&&t.local()):t="UTC"===te.timezone?De.moment.utc.apply(null,arguments):De.moment.parseZone.apply(null,arguments),"_locale"in t?t._locale=ee:t._lang=ee,t},Q.getIsAmbigTimezone=function(){return"local"!==te.timezone&&"UTC"!==te.timezone},Q.rezoneDate=function(t){return Q.moment(t.toArray())},Q.getNow=function(){var t=te.now;return"function"==typeof t&&(t=t()),Q.moment(t)},Q.calculateWeekNumber=function(t){var e=te.weekNumberCalculation;return"function"==typeof e?e(t):"local"===e?t.week():"ISO"===e.toUpperCase()?t.isoWeek():void 0},Q.getEventEnd=function(t){return t.end?t.end.clone():Q.getDefaultEventEnd(t.allDay,t.start)},Q.getDefaultEventEnd=function(t,e){var n=e.clone();return t?n.stripTime().add(Q.defaultAllDayEventDuration):n.add(Q.defaultTimedEventDuration),Q.getIsAmbigTimezone()&&n.stripZone(),n},ye.call(Q,te);var ie,re,se,oe,le,ae,ue,de,ce=Q.isFetchNeeded,he=Q.fetchEvents,fe=n[0],ge={},pe=0,me=[];de=null!=te.defaultDate?Q.moment(te.defaultDate):Q.getNow(),Q.getSuggestedViewHeight=function(){return void 0===ae&&y(),ae},Q.isHeightAuto=function(){return"auto"===te.contentHeight||"auto"===te.height}}function ve(e,n){function i(){var e=n.header;return f=n.theme?"ui":"fc",e?g=t("<div class='fc-toolbar'/>").append(s("left")).append(s("right")).append(s("center")).append('<div class="fc-clear"/>'):void 0}function r(){g.remove()}function s(i){var r=t('<div class="fc-'+i+'"/>'),s=n.header[i];return s&&t.each(s.split(" "),function(){var i,s=t(),o=!0;t.each(this.split(","),function(i,r){var l,a,u,d,c,h,g,m,v;"title"==r?(s=s.add(t("<h2>&nbsp;</h2>")),o=!1):(e[r]?l=function(){e[r]()}:e.isValidViewType(r)&&(l=function(){e.changeView(r)},p.push(r),c=e.getViewButtonText(r)),l&&(a=w(n.themeButtonIcons,r),u=w(n.buttonIcons,r),d=w(n.defaultButtonText,r),h=w(n.buttonText,r),g=c||h?z(c||h):a&&n.theme?"<span class='ui-icon ui-icon-"+a+"'></span>":u&&!n.theme?"<span class='fc-icon fc-icon-"+u+"'></span>":z(d||r),m=["fc-"+r+"-button",f+"-button",f+"-state-default"],v=t('<button type="button" class="'+m.join(" ")+'">'+g+"</button>").click(function(){v.hasClass(f+"-state-disabled")||(l(),(v.hasClass(f+"-state-active")||v.hasClass(f+"-state-disabled"))&&v.removeClass(f+"-state-hover"))}).mousedown(function(){v.not("."+f+"-state-active").not("."+f+"-state-disabled").addClass(f+"-state-down")}).mouseup(function(){v.removeClass(f+"-state-down")}).hover(function(){v.not("."+f+"-state-active").not("."+f+"-state-disabled").addClass(f+"-state-hover")},function(){v.removeClass(f+"-state-hover").removeClass(f+"-state-down")}),s=s.add(v)))}),o&&s.first().addClass(f+"-corner-left").end().last().addClass(f+"-corner-right").end(),s.length>1?(i=t("<div/>"),o&&i.addClass("fc-button-group"),i.append(s),r.append(i)):r.append(s)}),r}function o(t){g.find("h2").text(t)}function l(t){g.find(".fc-"+t+"-button").addClass(f+"-state-active")}function a(t){g.find(".fc-"+t+"-button").removeClass(f+"-state-active")}function u(t){g.find(".fc-"+t+"-button").attr("disabled","disabled").addClass(f+"-state-disabled")}function d(t){g.find(".fc-"+t+"-button").removeAttr("disabled").removeClass(f+"-state-disabled")}function c(){return p}var h=this;h.render=i,h.destroy=r,h.updateTitle=o,h.activateButton=l,h.deactivateButton=a,h.disableButton=u,h.enableButton=d,h.getViewsWithButtons=c;var f,g=t(),p=[]}function ye(n){function i(t,e){return!B||t.clone().stripZone()<B.clone().stripZone()||e.clone().stripZone()>Z.clone().stripZone()}function r(t,e){B=t,Z=e,Q=[];var n=++U,i=$.length;q=i;for(var r=0;i>r;r++)s($[r],n)}function s(e,n){o(e,function(i){var r,s,o,l=t.isArray(e.events);if(n==U){if(i)for(r=0;i.length>r;r++)s=i[r],o=l?s:b(s,e),o&&Q.push.apply(Q,H(o));q--,q||j(Q)}})}function o(e,i){var r,s,l=De.sourceFetchers;for(r=0;l.length>r;r++){if(s=l[r].call(O,e,B.clone(),Z.clone(),n.timezone,i),s===!0)return;if("object"==typeof s)return o(s,i),void 0}var a=e.events;if(a)t.isFunction(a)?(y(),a.call(O,B.clone(),Z.clone(),n.timezone,function(t){i(t),w()})):t.isArray(a)?i(a):i();else{var u=e.url;if(u){var d,c=e.success,h=e.error,f=e.complete;d=t.isFunction(e.data)?e.data():e.data;var g=t.extend({},d||{}),p=F(e.startParam,n.startParam),m=F(e.endParam,n.endParam),v=F(e.timezoneParam,n.timezoneParam);p&&(g[p]=B.format()),m&&(g[m]=Z.format()),n.timezone&&"local"!=n.timezone&&(g[v]=n.timezone),y(),t.ajax(t.extend({},Ke,e,{data:g,success:function(e){e=e||[];var n=M(c,this,arguments);t.isArray(n)&&(e=n),i(e)},error:function(){M(h,this,arguments),i()},complete:function(){M(f,this,arguments),w()}}))}else i()}}function l(t){var e=a(t);e&&($.push(e),q++,s(e,U))}function a(e){var n,i,r=De.sourceNormalizers;if(t.isFunction(e)||t.isArray(e)?n={events:e}:"string"==typeof e?n={url:e}:"object"==typeof e&&(n=t.extend({},e)),n){for(n.className?"string"==typeof n.className&&(n.className=n.className.split(/\s+/)):n.className=[],t.isArray(n.events)&&(n.origArray=n.events,n.events=t.map(n.events,function(t){return b(t,n)})),i=0;r.length>i;i++)r[i].call(O,n);return n}}function u(e){$=t.grep($,function(t){return!d(t,e)}),Q=t.grep(Q,function(t){return!d(t.source,e)}),j(Q)}function d(t,e){return t&&e&&c(t)==c(e)}function c(t){return("object"==typeof t?t.origArray||t.googleCalendarId||t.url||t.events:null)||t}function h(t){t.start=O.moment(t.start),t.end=t.end?O.moment(t.end):null,R(t,f(t)),j(Q)}function f(e){var n={};return t.each(e,function(t,e){g(t)&&void 0!==e&&k(e)&&(n[t]=e)}),n}function g(t){return!/^_|^(id|allDay|start|end)$/.test(t)}function p(t,e){var n,i,r,s=b(t);if(s){for(n=H(s),i=0;n.length>i;i++)r=n[i],r.source||(e&&(X.events.push(r),r.source=X),Q.push(r));return j(Q),n}return[]}function m(e){var n,i;for(null==e?e=function(){return!0}:t.isFunction(e)||(n=e+"",e=function(t){return t._id==n}),Q=t.grep(Q,e,!0),i=0;$.length>i;i++)t.isArray($[i].events)&&($[i].events=t.grep($[i].events,e,!0));j(Q)}function v(e){return t.isFunction(e)?t.grep(Q,e):null!=e?(e+="",t.grep(Q,function(t){return t._id==e})):Q}function y(){K++||I("loading",null,!0,W())}function w(){--K||I("loading",null,!1,W())}function b(i,r){var s,o,l,a={};if(n.eventDataTransform&&(i=n.eventDataTransform(i)),r&&r.eventDataTransform&&(i=r.eventDataTransform(i)),t.extend(a,i),r&&(a.source=r),a._id=i._id||(void 0===i.id?"_fc"+Qe++:i.id+""),a.className=i.className?"string"==typeof i.className?i.className.split(/\s+/):i.className:[],s=i.start||i.date,o=i.end,T(s)&&(s=e.duration(s)),T(o)&&(o=e.duration(o)),i.dow||e.isDuration(s)||e.isDuration(o))a.start=s?e.duration(s):null,a.end=o?e.duration(o):null,a._recurring=!0;else{if(s&&(s=O.moment(s),!s.isValid()))return!1;o&&(o=O.moment(o),o.isValid()||(o=null)),l=i.allDay,void 0===l&&(l=F(r?r.allDayDefault:void 0,n.allDayDefault)),D(s,o,l,a)}return a}function D(t,e,n,i){i.start=t,i.end=e,i.allDay=n,C(i),we(i)}function C(t){null==t.allDay&&(t.allDay=!(t.start.hasTime()||t.end&&t.end.hasTime())),t.allDay?(t.start.stripTime(),t.end&&t.end.stripTime()):(t.start.hasTime()||(t.start=O.rezoneDate(t.start)),t.end&&!t.end.hasTime()&&(t.end=O.rezoneDate(t.end))),t.end&&!t.end.isAfter(t.start)&&(t.end=null),t.end||(t.end=n.forceEventDuration?O.getDefaultEventEnd(t.allDay,t.start):null)}function x(t){var e;return t.end||(e=t.allDay,null==e&&(e=!t.start.hasTime()),t={start:t.start,end:O.getDefaultEventEnd(e,t.start)}),t}function H(e,n,i){var r,s,o,l,a,u,d,c,h,f=[];if(n=n||B,i=i||Z,e)if(e._recurring){if(s=e.dow)for(r={},o=0;s.length>o;o++)r[s[o]]=!0;for(l=n.clone().stripTime();l.isBefore(i);)(!r||r[l.day()])&&(a=e.start,u=e.end,d=l.clone(),c=null,a&&(d=d.time(a)),u&&(c=l.clone().time(u)),h=t.extend({},e),D(d,c,!a&&!u,h),f.push(h)),l.add(1,"days")}else f.push(e);return f}function R(e,n){var i,r,s,o,l={};return n=n||{},n.start||(n.start=e.start.clone()),void 0===n.end&&(n.end=e.end?e.end.clone():null),null==n.allDay&&(n.allDay=e.allDay),C(n),i=null!==e._end&&null===n.end,r=n.allDay?S(n.start,e._start):E(n.start,e._start),!i&&n.end&&(s=E(n.end,n.start).subtract(E(e._end||O.getDefaultEventEnd(e._allDay,e._start),e._start))),t.each(n,function(t,e){g(t)&&void 0!==e&&(l[t]=e)}),o=z(v(e._id),i,n.allDay,r,s,l),{dateDelta:r,durationDelta:s,undo:o}}function z(e,n,i,r,s,o){var l=O.getIsAmbigTimezone(),a=[];return r&&!r.valueOf()&&(r=null),s&&!s.valueOf()&&(s=null),t.each(e,function(e,u){var d,c;d={start:u.start.clone(),end:u.end?u.end.clone():null,allDay:u.allDay},t.each(o,function(t){d[t]=u[t]}),c={start:u._start,end:u._end,allDay:u._allDay},n&&(c.end=null),c.allDay=i,C(c),r&&(c.start.add(r),c.end&&c.end.add(r)),s&&(c.end||(c.end=O.getDefaultEventEnd(c.allDay,c.start)),c.end.add(s)),l&&!c.allDay&&(r||s)&&(c.start.stripZone(),c.end&&c.end.stripZone()),t.extend(u,o,c),we(u),a.push(function(){t.extend(u,d),we(u)})}),function(){for(var t=0;a.length>t;t++)a[t]()}}function L(){var e,i=n.businessHours,r={className:"fc-nonbusiness",start:"09:00",end:"17:00",dow:[1,2,3,4,5],rendering:"inverse-background"},s=O.getView();return i&&(e="object"==typeof i?t.extend({},r,i):r),e?H(b(e),s.start,s.end):[]}function P(t,e){var i=e.source||{},r=F(e.constraint,i.constraint,n.eventConstraint),s=F(e.overlap,i.overlap,n.eventOverlap);return t=x(t),G(t,r,s,e)}function V(t){return G(t,n.selectConstraint,n.selectOverlap)}function _(e,n){var i,r;return n&&(i=t.extend({},n,e),r=H(b(i))[0]),r?P(e,r):(e=x(e),V(e))}function G(t,e,n,i){var r,s,o,l,a;if(t={start:t.start.clone().stripZone(),end:t.end.clone().stripZone()},null!=e){for(r=A(e),s=!1,o=0;r.length>o;o++)if(N(r[o],t)){s=!0;break}if(!s)return!1}for(o=0;Q.length>o;o++)if(l=Q[o],(!i||i._id!==l._id)&&Y(l,t)){if(n===!1)return!1;if("function"==typeof n&&!n(l,i))return!1;if(i){if(a=F(l.overlap,(l.source||{}).overlap),a===!1)return!1;if("function"==typeof a&&!a(i,l))return!1}}return!0}function A(t){return"businessHours"===t?L():"object"==typeof t?H(b(t)):v(t)}function N(t,e){var n=t.start.clone().stripZone(),i=O.getEventEnd(t).stripZone();return e.start>=n&&i>=e.end}function Y(t,e){var n=t.start.clone().stripZone(),i=O.getEventEnd(t).stripZone();return i>e.start&&e.end>n}var O=this;O.isFetchNeeded=i,O.fetchEvents=r,O.addEventSource=l,O.removeEventSource=u,O.updateEvent=h,O.renderEvent=p,O.removeEvents=m,O.clientEvents=v,O.mutateEvent=R,O.normalizeEventDateProps=C,O.ensureVisibleEventRange=x;var B,Z,I=O.trigger,W=O.getView,j=O.reportEvents,X={events:[]},$=[X],U=0,q=0,K=0,Q=[];t.each((n.events?[n.events]:[]).concat(n.eventSources||[]),function(t,e){var n=a(e);n&&$.push(n)}),O.getBusinessHoursEvents=L,O.isEventRangeAllowed=P,O.isSelectionRangeAllowed=V,O.isExternalDropRangeAllowed=_}function we(t){t._allDay=t.allDay,t._start=t.start.clone(),t._end=t.end?t.end.clone():null}var Ee={titleRangeSeparator:" — ",monthYearFormat:"MMMM YYYY",defaultTimedEventDuration:"02:00:00",defaultAllDayEventDuration:{days:1},forceEventDuration:!1,nextDayThreshold:"09:00:00",defaultView:"month",aspectRatio:1.35,header:{left:"title",center:"",right:"today prev,next"},weekends:!0,weekNumbers:!1,weekNumberTitle:"W",weekNumberCalculation:"local",lazyFetching:!0,startParam:"start",endParam:"end",timezoneParam:"timezone",timezone:!1,isRTL:!1,defaultButtonText:{prev:"prev",next:"next",prevYear:"prev year",nextYear:"next year",today:"today",month:"month",week:"week",day:"day"},buttonIcons:{prev:"left-single-arrow",next:"right-single-arrow",prevYear:"left-double-arrow",nextYear:"right-double-arrow"},theme:!1,themeButtonIcons:{prev:"circle-triangle-w",next:"circle-triangle-e",prevYear:"seek-prev",nextYear:"seek-next"},dragOpacity:.75,dragRevertDuration:500,dragScroll:!0,unselectAuto:!0,dropAccept:"*",eventLimit:!1,eventLimitText:"more",eventLimitClick:"popover",dayPopoverFormat:"LL",handleWindowResize:!0,windowResizeDelay:200},Se={dayPopoverFormat:"dddd, MMMM D"},be={header:{left:"next,prev today",center:"",right:"title"},buttonIcons:{prev:"right-single-arrow",next:"left-single-arrow",prevYear:"right-double-arrow",nextYear:"left-double-arrow"},themeButtonIcons:{prev:"circle-triangle-e",next:"circle-triangle-w",nextYear:"seek-prev",prevYear:"seek-next"}},De=t.fullCalendar={version:"2.2.5"},Ce=De.views={};t.fn.fullCalendar=function(e){var n=Array.prototype.slice.call(arguments,1),i=this;return this.each(function(r,s){var o,l=t(s),a=l.data("fullCalendar");"string"==typeof e?a&&t.isFunction(a[e])&&(o=a[e].apply(a,n),r||(i=o),"destroy"===e&&l.removeData("fullCalendar")):a||(a=new me(l,e),l.data("fullCalendar",a),a.render())}),i};var Te=De.langs={};De.datepickerLang=function(e,n,i){var r=Te[e]||(Te[e]={});r.isRTL=i.isRTL,r.weekNumberTitle=i.weekHeader,t.each(xe,function(t,e){r[t]=e(i)}),t.datepicker&&(t.datepicker.regional[n]=t.datepicker.regional[e]=i,t.datepicker.regional.en=t.datepicker.regional[""],t.datepicker.setDefaults(i))},De.lang=function(e,n){var r,o;r=Te[e]||(Te[e]={}),n&&i(r,n),o=s(e),t.each(He,function(t,e){void 0===r[t]&&(r[t]=e(o,r))}),Ee.lang=e};var xe={defaultButtonText:function(t){return{prev:L(t.prevText),next:L(t.nextText),today:L(t.currentText)}},monthYearFormat:function(t){return t.showMonthAfterYear?"YYYY["+t.yearSuffix+"] MMMM":"MMMM YYYY["+t.yearSuffix+"]"}},He={dayOfMonthFormat:function(t,e){var n=t.longDateFormat("l");return n=n.replace(/^Y+[^\w\s]*|[^\w\s]*Y+$/g,""),e.isRTL?n+=" ddd":n="ddd "+n,n},smallTimeFormat:function(t){return t.longDateFormat("LT").replace(":mm","(:mm)").replace(/(\Wmm)$/,"($1)").replace(/\s*a$/i,"a")},extraSmallTimeFormat:function(t){return t.longDateFormat("LT").replace(":mm","(:mm)").replace(/(\Wmm)$/,"($1)").replace(/\s*a$/i,"t")},noMeridiemTimeFormat:function(t){return t.longDateFormat("LT").replace(/\s*a$/i,"")}};De.lang("en",Se),De.intersectionToSeg=y,De.applyAll=M,De.debounce=G;var Re,ke,Me,Fe=["sun","mon","tue","wed","thu","fri","sat"],ze=["year","month","week","day","hour","minute","second","millisecond"],Le={}.hasOwnProperty,Pe=/^\s*\d{4}-\d\d$/,Ve=/^\s*\d{4}-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?)?$/,_e=e.fn,Ge=t.extend({},_e);De.moment=function(){return A(arguments)},De.moment.utc=function(){var t=A(arguments,!0);return t.hasTime()&&t.utc(),t},De.moment.parseZone=function(){return A(arguments,!0,!0)},_e.clone=function(){var t=Ge.clone.apply(this,arguments);return Y(this,t),this._fullCalendar&&(t._fullCalendar=!0),t},_e.time=function(t){if(!this._fullCalendar)return Ge.time.apply(this,arguments);if(null==t)return e.duration({hours:this.hours(),minutes:this.minutes(),seconds:this.seconds(),milliseconds:this.milliseconds()});this._ambigTime=!1,e.isDuration(t)||e.isMoment(t)||(t=e.duration(t));var n=0;return e.isDuration(t)&&(n=24*Math.floor(t.asDays())),this.hours(n+t.hours()).minutes(t.minutes()).seconds(t.seconds()).milliseconds(t.milliseconds())},_e.stripTime=function(){var t;return this._ambigTime||(t=this.toArray(),this.utc(),ke(this,t.slice(0,3)),this._ambigTime=!0,this._ambigZone=!0),this},_e.hasTime=function(){return!this._ambigTime},_e.stripZone=function(){var t,e;return this._ambigZone||(t=this.toArray(),e=this._ambigTime,this.utc(),ke(this,t),e&&(this._ambigTime=!0),this._ambigZone=!0),this},_e.hasZone=function(){return!this._ambigZone},_e.zone=function(t){return null!=t&&(this._ambigTime=!1,this._ambigZone=!1),Ge.zone.apply(this,arguments)},_e.local=function(){var t=this.toArray(),e=this._ambigZone;return Ge.local.apply(this,arguments),e&&Me(this,t),this},_e.format=function(){return this._fullCalendar&&arguments[0]?Z(this,arguments[0]):this._ambigTime?B(this,"YYYY-MM-DD"):this._ambigZone?B(this,"YYYY-MM-DD[T]HH:mm:ss"):Ge.format.apply(this,arguments)},_e.toISOString=function(){return this._ambigTime?B(this,"YYYY-MM-DD"):this._ambigZone?B(this,"YYYY-MM-DD[T]HH:mm:ss"):Ge.toISOString.apply(this,arguments)},_e.isWithin=function(t,e){var n=N([this,t,e]);return n[0]>=n[1]&&n[0]<n[2]},_e.isSame=function(t,e){var n;return this._fullCalendar?e?(n=N([this,t],!0),Ge.isSame.call(n[0],n[1],e)):(t=De.moment.parseZone(t),Ge.isSame.call(this,t)&&Boolean(this._ambigTime)===Boolean(t._ambigTime)&&Boolean(this._ambigZone)===Boolean(t._ambigZone)):Ge.isSame.apply(this,arguments)},t.each(["isBefore","isAfter"],function(t,e){_e[e]=function(t,n){var i;return this._fullCalendar?(i=N([this,t]),Ge[e].call(i[0],i[1],n)):Ge[e].apply(this,arguments)}}),Re="_d"in e()&&"updateOffset"in e,ke=Re?function(t,n){t._d.setTime(Date.UTC.apply(Date,n)),e.updateOffset(t,!1)}:O,Me=Re?function(t,n){t._d.setTime(+new Date(n[0]||0,n[1]||0,n[2]||0,n[3]||0,n[4]||0,n[5]||0,n[6]||0)),e.updateOffset(t,!1)}:O;var Ae={t:function(t){return B(t,"a").charAt(0)},T:function(t){return B(t,"A").charAt(0)}};De.formatRange=j;var Ne={Y:"year",M:"month",D:"day",d:"day",A:"second",a:"second",T:"second",t:"second",H:"second",h:"second",m:"second",s:"second"},Ye={};De.Class=K,K.extend=function(t){var e,n=this;return t=t||{},R(t,"constructor")&&(e=t.constructor),"function"!=typeof e&&(e=t.constructor=function(){n.apply(this,arguments)}),e.prototype=x(n.prototype),H(t,e.prototype),H(n,e),e},K.mixin=function(t){H(t.prototype||t,this.prototype)};var Oe=K.extend({isHidden:!0,options:null,el:null,documentMousedownProxy:null,margin:10,constructor:function(t){this.options=t||{}},show:function(){this.isHidden&&(this.el||this.render(),this.el.show(),this.position(),this.isHidden=!1,this.trigger("show"))},hide:function(){this.isHidden||(this.el.hide(),this.isHidden=!0,this.trigger("hide"))},render:function(){var e=this,n=this.options;this.el=t('<div class="fc-popover"/>').addClass(n.className||"").css({top:0,left:0}).append(n.content).appendTo(n.parentEl),this.el.on("click",".fc-close",function(){e.hide()}),n.autoHide&&t(document).on("mousedown",this.documentMousedownProxy=t.proxy(this,"documentMousedown"))},documentMousedown:function(e){this.el&&!t(e.target).closest(this.el).length&&this.hide()},destroy:function(){this.hide(),this.el&&(this.el.remove(),this.el=null),t(document).off("mousedown",this.documentMousedownProxy)},position:function(){var e,n,i,r,s,o=this.options,l=this.el.offsetParent().offset(),a=this.el.outerWidth(),u=this.el.outerHeight(),d=t(window),c=p(this.el);r=o.top||0,s=void 0!==o.left?o.left:void 0!==o.right?o.right-a:0,c.is(window)||c.is(document)?(c=d,e=0,n=0):(i=c.offset(),e=i.top,n=i.left),e+=d.scrollTop(),n+=d.scrollLeft(),o.viewportConstrain!==!1&&(r=Math.min(r,e+c.outerHeight()-u-this.margin),r=Math.max(r,e+this.margin),s=Math.min(s,n+c.outerWidth()-a-this.margin),s=Math.max(s,n+this.margin)),this.el.css({top:r-l.top,left:s-l.left})},trigger:function(t){this.options[t]&&this.options[t].apply(this,Array.prototype.slice.call(arguments,1))}}),Be=K.extend({grid:null,rowCoords:null,colCoords:null,containerEl:null,minX:null,maxX:null,minY:null,maxY:null,constructor:function(t){this.grid=t},build:function(){this.rowCoords=this.grid.computeRowCoords(),this.colCoords=this.grid.computeColCoords(),this.computeBounds()},clear:function(){this.rowCoords=null,this.colCoords=null},getCell:function(t,e){var n,i,r,s=this.rowCoords,o=this.colCoords,l=null,a=null;if(this.inBounds(t,e)){for(n=0;s.length>n;n++)if(i=s[n],e>=i.top&&i.bottom>e){l=n;break}for(n=0;o.length>n;n++)if(i=o[n],t>=i.left&&i.right>t){a=n;break}if(null!==l&&null!==a)return r=this.grid.getCell(l,a),r.grid=this.grid,r}return null},computeBounds:function(){var t;this.containerEl&&(t=this.containerEl.offset(),this.minX=t.left,this.maxX=t.left+this.containerEl.outerWidth(),this.minY=t.top,this.maxY=t.top+this.containerEl.outerHeight()) -},inBounds:function(t,e){return this.containerEl?t>=this.minX&&this.maxX>t&&e>=this.minY&&this.maxY>e:!0}}),Ze=K.extend({coordMaps:null,constructor:function(t){this.coordMaps=t},build:function(){var t,e=this.coordMaps;for(t=0;e.length>t;t++)e[t].build()},getCell:function(t,e){var n,i=this.coordMaps,r=null;for(n=0;i.length>n&&!r;n++)r=i[n].getCell(t,e);return r},clear:function(){var t,e=this.coordMaps;for(t=0;e.length>t;t++)e[t].clear()}}),Ie=K.extend({coordMap:null,options:null,isListening:!1,isDragging:!1,origCell:null,cell:null,mouseX0:null,mouseY0:null,mousemoveProxy:null,mouseupProxy:null,scrollEl:null,scrollBounds:null,scrollTopVel:null,scrollLeftVel:null,scrollIntervalId:null,scrollHandlerProxy:null,scrollSensitivity:30,scrollSpeed:200,scrollIntervalMs:50,constructor:function(t,e){this.coordMap=t,this.options=e||{}},mousedown:function(t){v(t)&&(t.preventDefault(),this.startListening(t),this.options.distance||this.startDrag(t))},startListening:function(e){var n,i;this.isListening||(e&&this.options.scroll&&(n=p(t(e.target)),n.is(window)||n.is(document)||(this.scrollEl=n,this.scrollHandlerProxy=G(t.proxy(this,"scrollHandler"),100),this.scrollEl.on("scroll",this.scrollHandlerProxy))),this.computeCoords(),e&&(i=this.getCell(e),this.origCell=i,this.mouseX0=e.pageX,this.mouseY0=e.pageY),t(document).on("mousemove",this.mousemoveProxy=t.proxy(this,"mousemove")).on("mouseup",this.mouseupProxy=t.proxy(this,"mouseup")).on("selectstart",this.preventDefault),this.isListening=!0,this.trigger("listenStart",e))},computeCoords:function(){this.coordMap.build(),this.computeScrollBounds()},mousemove:function(t){var e,n;this.isDragging||(e=this.options.distance||1,n=Math.pow(t.pageX-this.mouseX0,2)+Math.pow(t.pageY-this.mouseY0,2),n>=e*e&&this.startDrag(t)),this.isDragging&&this.drag(t)},startDrag:function(t){var e;this.isListening||this.startListening(),this.isDragging||(this.isDragging=!0,this.trigger("dragStart",t),e=this.getCell(t),e&&this.cellOver(e))},drag:function(t){var e;this.isDragging&&(e=this.getCell(t),Q(e,this.cell)||(this.cell&&this.cellOut(),e&&this.cellOver(e)),this.dragScroll(t))},cellOver:function(t){this.cell=t,this.trigger("cellOver",t,Q(t,this.origCell))},cellOut:function(){this.cell&&(this.trigger("cellOut",this.cell),this.cell=null)},mouseup:function(t){this.stopDrag(t),this.stopListening(t)},stopDrag:function(t){this.isDragging&&(this.stopScrolling(),this.trigger("dragStop",t),this.isDragging=!1)},stopListening:function(e){this.isListening&&(this.scrollEl&&(this.scrollEl.off("scroll",this.scrollHandlerProxy),this.scrollHandlerProxy=null),t(document).off("mousemove",this.mousemoveProxy).off("mouseup",this.mouseupProxy).off("selectstart",this.preventDefault),this.mousemoveProxy=null,this.mouseupProxy=null,this.isListening=!1,this.trigger("listenStop",e),this.origCell=this.cell=null,this.coordMap.clear())},getCell:function(t){return this.coordMap.getCell(t.pageX,t.pageY)},trigger:function(t){this.options[t]&&this.options[t].apply(this,Array.prototype.slice.call(arguments,1))},preventDefault:function(t){t.preventDefault()},computeScrollBounds:function(){var t,e=this.scrollEl;e&&(t=e.offset(),this.scrollBounds={top:t.top,left:t.left,bottom:t.top+e.outerHeight(),right:t.left+e.outerWidth()})},dragScroll:function(t){var e,n,i,r,s=this.scrollSensitivity,o=this.scrollBounds,l=0,a=0;o&&(e=(s-(t.pageY-o.top))/s,n=(s-(o.bottom-t.pageY))/s,i=(s-(t.pageX-o.left))/s,r=(s-(o.right-t.pageX))/s,e>=0&&1>=e?l=-1*e*this.scrollSpeed:n>=0&&1>=n&&(l=n*this.scrollSpeed),i>=0&&1>=i?a=-1*i*this.scrollSpeed:r>=0&&1>=r&&(a=r*this.scrollSpeed)),this.setScrollVel(l,a)},setScrollVel:function(e,n){this.scrollTopVel=e,this.scrollLeftVel=n,this.constrainScrollVel(),!this.scrollTopVel&&!this.scrollLeftVel||this.scrollIntervalId||(this.scrollIntervalId=setInterval(t.proxy(this,"scrollIntervalFunc"),this.scrollIntervalMs))},constrainScrollVel:function(){var t=this.scrollEl;0>this.scrollTopVel?0>=t.scrollTop()&&(this.scrollTopVel=0):this.scrollTopVel>0&&t.scrollTop()+t[0].clientHeight>=t[0].scrollHeight&&(this.scrollTopVel=0),0>this.scrollLeftVel?0>=t.scrollLeft()&&(this.scrollLeftVel=0):this.scrollLeftVel>0&&t.scrollLeft()+t[0].clientWidth>=t[0].scrollWidth&&(this.scrollLeftVel=0)},scrollIntervalFunc:function(){var t=this.scrollEl,e=this.scrollIntervalMs/1e3;this.scrollTopVel&&t.scrollTop(t.scrollTop()+this.scrollTopVel*e),this.scrollLeftVel&&t.scrollLeft(t.scrollLeft()+this.scrollLeftVel*e),this.constrainScrollVel(),this.scrollTopVel||this.scrollLeftVel||this.stopScrolling()},stopScrolling:function(){this.scrollIntervalId&&(clearInterval(this.scrollIntervalId),this.scrollIntervalId=null,this.computeCoords())},scrollHandler:function(){this.scrollIntervalId||this.computeCoords()}}),We=K.extend({options:null,sourceEl:null,el:null,parentEl:null,top0:null,left0:null,mouseY0:null,mouseX0:null,topDelta:null,leftDelta:null,mousemoveProxy:null,isFollowing:!1,isHidden:!1,isAnimating:!1,constructor:function(e,n){this.options=n=n||{},this.sourceEl=e,this.parentEl=n.parentEl?t(n.parentEl):e.parent()},start:function(e){this.isFollowing||(this.isFollowing=!0,this.mouseY0=e.pageY,this.mouseX0=e.pageX,this.topDelta=0,this.leftDelta=0,this.isHidden||this.updatePosition(),t(document).on("mousemove",this.mousemoveProxy=t.proxy(this,"mousemove")))},stop:function(e,n){function i(){this.isAnimating=!1,r.destroyEl(),this.top0=this.left0=null,n&&n()}var r=this,s=this.options.revertDuration;this.isFollowing&&!this.isAnimating&&(this.isFollowing=!1,t(document).off("mousemove",this.mousemoveProxy),e&&s&&!this.isHidden?(this.isAnimating=!0,this.el.animate({top:this.top0,left:this.left0},{duration:s,complete:i})):i())},getEl:function(){var t=this.el;return t||(this.sourceEl.width(),t=this.el=this.sourceEl.clone().css({position:"absolute",visibility:"",display:this.isHidden?"none":"",margin:0,right:"auto",bottom:"auto",width:this.sourceEl.width(),height:this.sourceEl.height(),opacity:this.options.opacity||"",zIndex:this.options.zIndex}).appendTo(this.parentEl)),t},destroyEl:function(){this.el&&(this.el.remove(),this.el=null)},updatePosition:function(){var t,e;this.getEl(),null===this.top0&&(this.sourceEl.width(),t=this.sourceEl.offset(),e=this.el.offsetParent().offset(),this.top0=t.top-e.top,this.left0=t.left-e.left),this.el.css({top:this.top0+this.topDelta,left:this.left0+this.leftDelta})},mousemove:function(t){this.topDelta=t.pageY-this.mouseY0,this.leftDelta=t.pageX-this.mouseX0,this.isHidden||this.updatePosition()},hide:function(){this.isHidden||(this.isHidden=!0,this.el&&this.el.hide())},show:function(){this.isHidden&&(this.isHidden=!1,this.updatePosition(),this.getEl().show())}}),je=K.extend({view:null,isRTL:null,cellHtml:"<td/>",constructor:function(t){this.view=t,this.isRTL=t.opt("isRTL")},rowHtml:function(t,e){var n,i,r=this.getHtmlRenderer("cell",t),s="";for(e=e||0,n=0;this.colCnt>n;n++)i=this.getCell(e,n),s+=r(i);return s=this.bookendCells(s,t,e),"<tr>"+s+"</tr>"},bookendCells:function(t,e,n){var i=this.getHtmlRenderer("intro",e)(n||0),r=this.getHtmlRenderer("outro",e)(n||0),s=this.isRTL?r:i,o=this.isRTL?i:r;return"string"==typeof t?s+t+o:t.prepend(s).append(o)},getHtmlRenderer:function(t,e){var n,i,r,s,o=this.view;return n=t+"Html",e&&(i=e+P(t)+"Html"),i&&(s=o[i])?r=o:i&&(s=this[i])?r=this:(s=o[n])?r=o:(s=this[n])&&(r=this),"function"==typeof s?function(){return s.apply(r,arguments)||""}:function(){return s||""}}}),Xe=De.Grid=je.extend({start:null,end:null,rowCnt:0,colCnt:0,rowData:null,colData:null,el:null,coordMap:null,elsByFill:null,documentDragStartProxy:null,colHeadFormat:null,eventTimeFormat:null,displayEventEnd:null,constructor:function(){je.apply(this,arguments),this.coordMap=new Be(this),this.elsByFill={},this.documentDragStartProxy=t.proxy(this,"documentDragStart")},render:function(){this.bindHandlers()},destroy:function(){this.unbindHandlers()},computeColHeadFormat:function(){},computeEventTimeFormat:function(){return this.view.opt("smallTimeFormat")},computeDisplayEventEnd:function(){return!1},setRange:function(t){var e=this.view;this.start=t.start.clone(),this.end=t.end.clone(),this.rowData=[],this.colData=[],this.updateCells(),this.colHeadFormat=e.opt("columnFormat")||this.computeColHeadFormat(),this.eventTimeFormat=e.opt("timeFormat")||this.computeEventTimeFormat(),this.displayEventEnd=e.opt("displayEventEnd"),null==this.displayEventEnd&&(this.displayEventEnd=this.computeDisplayEventEnd())},updateCells:function(){},rangeToSegs:function(){},getCell:function(e,n){var i;return null==n&&("number"==typeof e?(n=e%this.colCnt,e=Math.floor(e/this.colCnt)):(n=e.col,e=e.row)),i={row:e,col:n},t.extend(i,this.getRowData(e),this.getColData(n)),t.extend(i,this.computeCellRange(i)),i},computeCellRange:function(){},getRowData:function(t){return this.rowData[t]||{}},getColData:function(t){return this.colData[t]||{}},getRowEl:function(){},getColEl:function(){},getCellDayEl:function(t){return this.getColEl(t.col)||this.getRowEl(t.row)},computeRowCoords:function(){var t,e,n,i=[];for(t=0;this.rowCnt>t;t++)e=this.getRowEl(t),n={top:e.offset().top},t>0&&(i[t-1].bottom=n.top),i.push(n);return n.bottom=n.top+e.outerHeight(),i},computeColCoords:function(){var t,e,n,i=[];for(t=0;this.colCnt>t;t++)e=this.getColEl(t),n={left:e.offset().left},t>0&&(i[t-1].right=n.left),i.push(n);return n.right=n.left+e.outerWidth(),i},bindHandlers:function(){var e=this;this.el.on("mousedown",function(n){t(n.target).is(".fc-event-container *, .fc-more")||t(n.target).closest(".fc-popover").length||e.dayMousedown(n)}),this.bindSegHandlers(),t(document).on("dragstart",this.documentDragStartProxy)},unbindHandlers:function(){t(document).off("dragstart",this.documentDragStartProxy)},dayMousedown:function(t){var e,n,i=this,r=this.view,s=r.opt("selectable"),o=new Ie(this.coordMap,{scroll:r.opt("dragScroll"),dragStart:function(){r.unselect()},cellOver:function(t,r){var l=o.origCell;l&&(e=r?t:null,s&&(n=i.computeSelection(l,t),n?i.renderSelection(n):a()))},cellOut:function(){e=null,n=null,i.destroySelection(),u()},listenStop:function(t){e&&r.trigger("dayClick",i.getCellDayEl(e),e.start,t),n&&r.reportSelection(n,t),u()}});o.mousedown(t)},renderRangeHelper:function(t,e){var n;n=e?x(e.event):{},n.start=t.start.clone(),n.end=t.end?t.end.clone():null,n.allDay=null,this.view.calendar.normalizeEventDateProps(n),n.className=(n.className||[]).concat("fc-helper"),e||(n.editable=!1),this.renderHelper(n,e)},renderHelper:function(){},destroyHelper:function(){},renderSelection:function(t){this.renderHighlight(t)},destroySelection:function(){this.destroyHighlight()},computeSelection:function(t,e){var n,i=[t.start,t.end,e.start,e.end];return i.sort(V),n={start:i[0].clone(),end:i[3].clone()},this.view.calendar.isSelectionRangeAllowed(n)?n:null},renderHighlight:function(t){this.renderFill("highlight",this.rangeToSegs(t))},destroyHighlight:function(){this.destroyFill("highlight")},highlightSegClasses:function(){return["fc-highlight"]},renderFill:function(){},destroyFill:function(t){var e=this.elsByFill[t];e&&(e.remove(),delete this.elsByFill[t])},renderFillSegEls:function(e,n){var i,r=this,s=this[e+"SegEl"],o="",l=[];if(n.length){for(i=0;n.length>i;i++)o+=this.fillSegHtml(e,n[i]);t(o).each(function(e,i){var o=n[e],a=t(i);s&&(a=s.call(r,o,a)),a&&(a=t(a),a.is(r.fillSegTag)&&(o.el=a,l.push(o)))})}return l},fillSegTag:"div",fillSegHtml:function(t,e){var n=this[t+"SegClasses"],i=this[t+"SegStyles"],r=n?n.call(this,e):[],s=i?i.call(this,e):"";return"<"+this.fillSegTag+(r.length?' class="'+r.join(" ")+'"':"")+(s?' style="'+s+'"':"")+" />"},headHtml:function(){return'<div class="fc-row '+this.view.widgetHeaderClass+'">'+"<table>"+"<thead>"+this.rowHtml("head")+"</thead>"+"</table>"+"</div>"},headCellHtml:function(t){var e=this.view,n=t.start;return'<th class="fc-day-header '+e.widgetHeaderClass+" fc-"+Fe[n.day()]+'">'+z(n.format(this.colHeadFormat))+"</th>"},bgCellHtml:function(t){var e=this.view,n=t.start,i=this.getDayClasses(n);return i.unshift("fc-day",e.widgetContentClass),'<td class="'+i.join(" ")+'"'+' data-date="'+n.format("YYYY-MM-DD")+'"'+"></td>"},getDayClasses:function(t){var e=this.view,n=e.calendar.getNow().stripTime(),i=["fc-"+Fe[t.day()]];return"month"===e.name&&t.month()!=e.intervalStart.month()&&i.push("fc-other-month"),t.isSame(n,"day")?i.push("fc-today",e.highlightStateClass):n>t?i.push("fc-past"):i.push("fc-future"),i}});Xe.mixin({mousedOverSeg:null,isDraggingSeg:!1,isResizingSeg:!1,segs:null,renderEvents:function(t){var e,n,i=this.eventsToSegs(t),r=[],s=[];for(e=0;i.length>e;e++)n=i[e],J(n.event)?r.push(n):s.push(n);r=this.renderBgSegs(r)||r,s=this.renderFgSegs(s)||s,this.segs=r.concat(s)},destroyEvents:function(){this.triggerSegMouseout(),this.destroyFgSegs(),this.destroyBgSegs(),this.segs=null},getEventSegs:function(){return this.segs||[]},renderFgSegs:function(){},destroyFgSegs:function(){},renderFgSegEls:function(e,n){var i,r=this.view,s="",o=[];if(e.length){for(i=0;e.length>i;i++)s+=this.fgSegHtml(e[i],n);t(s).each(function(n,i){var s=e[n],l=r.resolveEventEl(s.event,t(i));l&&(l.data("fc-seg",s),s.el=l,o.push(s))})}return o},fgSegHtml:function(){},renderBgSegs:function(t){return this.renderFill("bgEvent",t)},destroyBgSegs:function(){this.destroyFill("bgEvent")},bgEventSegEl:function(t,e){return this.view.resolveEventEl(t.event,e)},bgEventSegClasses:function(t){var e=t.event,n=e.source||{};return["fc-bgevent"].concat(e.className,n.className||[])},bgEventSegStyles:function(t){var e=this.view,n=t.event,i=n.source||{},r=n.color,s=i.color,o=e.opt("eventColor"),l=n.backgroundColor||r||i.backgroundColor||s||e.opt("eventBackgroundColor")||o;return l?"background-color:"+l:""},businessHoursSegClasses:function(){return["fc-nonbusiness","fc-bgevent"]},bindSegHandlers:function(){var e=this,n=this.view;t.each({mouseenter:function(t,n){e.triggerSegMouseover(t,n)},mouseleave:function(t,n){e.triggerSegMouseout(t,n)},click:function(t,e){return n.trigger("eventClick",this,t.event,e)},mousedown:function(i,r){t(r.target).is(".fc-resizer")&&n.isEventResizable(i.event)?e.segResizeMousedown(i,r):n.isEventDraggable(i.event)&&e.segDragMousedown(i,r)}},function(n,i){e.el.on(n,".fc-event-container > *",function(n){var r=t(this).data("fc-seg");return!r||e.isDraggingSeg||e.isResizingSeg?void 0:i.call(this,r,n)})})},triggerSegMouseover:function(t,e){this.mousedOverSeg||(this.mousedOverSeg=t,this.view.trigger("eventMouseover",t.el[0],t.event,e))},triggerSegMouseout:function(t,e){e=e||{},this.mousedOverSeg&&(t=t||this.mousedOverSeg,this.mousedOverSeg=null,this.view.trigger("eventMouseout",t.el[0],t.event,e))},segDragMousedown:function(t,e){var n,i=this,r=this.view,s=t.el,o=t.event,l=new We(t.el,{parentEl:r.el,opacity:r.opt("dragOpacity"),revertDuration:r.opt("dragRevertDuration"),zIndex:2}),d=new Ie(r.coordMap,{distance:5,scroll:r.opt("dragScroll"),listenStart:function(t){l.hide(),l.start(t)},dragStart:function(e){i.triggerSegMouseout(t,e),i.isDraggingSeg=!0,r.hideEvent(o),r.trigger("eventDragStart",s[0],o,e,{})},cellOver:function(e,s){var u=t.cell||d.origCell;n=i.computeEventDrop(u,e,o),n?(r.renderDrag(n,t)?l.hide():l.show(),s&&(n=null)):(l.show(),a())},cellOut:function(){n=null,r.destroyDrag(),l.show(),u()},dragStop:function(t){l.stop(!n,function(){i.isDraggingSeg=!1,r.destroyDrag(),r.showEvent(o),r.trigger("eventDragStop",s[0],o,t,{}),n&&r.reportEventDrop(o,n,s,t)}),u()},listenStop:function(){l.stop()}});d.mousedown(e)},computeEventDrop:function(t,e,n){var i,r,s,o,l,a=t.start,u=e.start;return a.hasTime()===u.hasTime()?(i=E(u,a),r=n.start.clone().add(i),s=null===n.end?null:n.end.clone().add(i),o=n.allDay):(r=u.clone(),s=null,o=!u.hasTime()),l={start:r,end:s,allDay:o},this.view.calendar.isEventRangeAllowed(l,n)?l:null},documentDragStart:function(e,n){var i,r,s=this.view;s.opt("droppable")&&(i=t(e.target),r=s.opt("dropAccept"),(t.isFunction(r)?r.call(i[0],i):i.is(r))&&this.startExternalDrag(i,e,n))},startExternalDrag:function(e,n){var i,r,s=this,o=se(e);i=new Ie(this.coordMap,{cellOver:function(t){r=s.computeExternalDrop(t,o),r?s.renderDrag(r):a()},cellOut:function(){r=null,s.destroyDrag(),u()}}),t(document).one("dragstop",function(t,n){s.destroyDrag(),u(),r&&s.view.reportExternalDrop(o,r,e,t,n)}),i.startDrag(n)},computeExternalDrop:function(t,e){var n={start:t.start.clone(),end:null};return e.startTime&&!n.start.hasTime()&&n.start.time(e.startTime),e.duration&&(n.end=n.start.clone().add(e.duration)),this.view.calendar.isExternalDropRangeAllowed(n,e.eventProps)?n:null},renderDrag:function(){},destroyDrag:function(){},segResizeMousedown:function(t,e){function n(){s.destroyEventResize(),o.showEvent(c),u()}var i,r,s=this,o=this.view,l=o.calendar,d=t.el,c=t.event,h=c.start,f=l.getEventEnd(c);r=new Ie(this.coordMap,{distance:5,scroll:o.opt("dragScroll"),dragStart:function(e){s.triggerSegMouseout(t,e),s.isResizingSeg=!0,o.trigger("eventResizeStart",d[0],c,e,{})},cellOver:function(e){i=e.end,i.isAfter(h)||(i=h.clone().add(E(e.end,e.start))),i.isSame(f)?i=null:l.isEventRangeAllowed({start:h,end:i},c)?(s.renderEventResize({start:h,end:i},t),o.hideEvent(c)):(i=null,a())},cellOut:function(){i=null,n()},dragStop:function(t){s.isResizingSeg=!1,n(),o.trigger("eventResizeStop",d[0],c,t,{}),i&&o.reportEventResize(c,i,d,t)}}),r.mousedown(e)},renderEventResize:function(){},destroyEventResize:function(){},getEventTimeText:function(t,e){return e=e||this.eventTimeFormat,t.end&&this.displayEventEnd?this.view.formatRange(t,e):t.start.format(e)},getSegClasses:function(t,e,n){var i=t.event,r=["fc-event",t.isStart?"fc-start":"fc-not-start",t.isEnd?"fc-end":"fc-not-end"].concat(i.className,i.source?i.source.className:[]);return e&&r.push("fc-draggable"),n&&r.push("fc-resizable"),r},getEventSkinCss:function(t){var e=this.view,n=t.source||{},i=t.color,r=n.color,s=e.opt("eventColor"),o=t.backgroundColor||i||n.backgroundColor||r||e.opt("eventBackgroundColor")||s,l=t.borderColor||i||n.borderColor||r||e.opt("eventBorderColor")||s,a=t.textColor||n.textColor||e.opt("eventTextColor"),u=[];return o&&u.push("background-color:"+o),l&&u.push("border-color:"+l),a&&u.push("color:"+a),u.join(";")},eventsToSegs:function(t,e){var n,i=this.eventsToRanges(t),r=[];for(n=0;i.length>n;n++)r.push.apply(r,this.eventRangeToSegs(i[n],e));return r},eventsToRanges:function(e){var n=this,i=ne(e),r=[];return t.each(i,function(t,e){e.length&&r.push.apply(r,te(e[0])?n.eventsToInverseRanges(e):n.eventsToNormalRanges(e))}),r},eventsToNormalRanges:function(t){var e,n,i,r,s=this.view.calendar,o=[];for(e=0;t.length>e;e++)n=t[e],i=n.start.clone().stripZone(),r=s.getEventEnd(n).stripZone(),o.push({event:n,start:i,end:r,eventStartMS:+i,eventDurationMS:r-i});return o},eventsToInverseRanges:function(t){var e,n,i=this.view,r=i.start.clone().stripZone(),s=i.end.clone().stripZone(),o=this.eventsToNormalRanges(t),l=[],a=t[0],u=r;for(o.sort(ie),e=0;o.length>e;e++)n=o[e],n.start>u&&l.push({event:a,start:u,end:n.start}),u=n.end;return s>u&&l.push({event:a,start:u,end:s}),l},eventRangeToSegs:function(t,e){var n,i,r;for(n=e?e(t):this.rangeToSegs(t),i=0;n.length>i;i++)r=n[i],r.event=t.event,r.eventStartMS=t.eventStartMS,r.eventDurationMS=t.eventDurationMS;return n}}),De.compareSegs=re,De.dataAttrPrefix="";var $e=Xe.extend({numbersVisible:!1,bottomCoordPadding:0,breakOnWeeks:null,cellDates:null,dayToCellOffsets:null,rowEls:null,dayEls:null,helperEls:null,render:function(t){var e,n,i,r=this.view,s=this.rowCnt,o=this.colCnt,l=s*o,a="";for(e=0;s>e;e++)a+=this.dayRowHtml(e,t);for(this.el.html(a),this.rowEls=this.el.find(".fc-row"),this.dayEls=this.el.find(".fc-day"),n=0;l>n;n++)i=this.getCell(n),r.trigger("dayRender",null,i.start,this.dayEls.eq(n));Xe.prototype.render.call(this)},destroy:function(){this.destroySegPopover(),Xe.prototype.destroy.call(this)},dayRowHtml:function(t,e){var n=this.view,i=["fc-row","fc-week",n.widgetContentClass];return e&&i.push("fc-rigid"),'<div class="'+i.join(" ")+'">'+'<div class="fc-bg">'+"<table>"+this.rowHtml("day",t)+"</table>"+"</div>"+'<div class="fc-content-skeleton">'+"<table>"+(this.numbersVisible?"<thead>"+this.rowHtml("number",t)+"</thead>":"")+"</table>"+"</div>"+"</div>"},dayCellHtml:function(t){return this.bgCellHtml(t)},computeColHeadFormat:function(){return this.rowCnt>1?"ddd":this.colCnt>1?this.view.opt("dayOfMonthFormat"):"dddd"},computeEventTimeFormat:function(){return this.view.opt("extraSmallTimeFormat")},computeDisplayEventEnd:function(){return 1==this.colCnt},updateCells:function(){var t,e,n,i;if(this.updateCellDates(),t=this.cellDates,this.breakOnWeeks){for(e=t[0].day(),i=1;t.length>i&&t[i].day()!=e;i++);n=Math.ceil(t.length/i)}else n=1,i=t.length;this.rowCnt=n,this.colCnt=i},updateCellDates:function(){for(var t=this.view,e=this.start.clone(),n=[],i=-1,r=[];e.isBefore(this.end);)t.isHiddenDay(e)?r.push(i+.5):(i++,r.push(i),n.push(e.clone())),e.add(1,"days");this.cellDates=n,this.dayToCellOffsets=r},computeCellRange:function(t){var e=this.colCnt,n=t.row*e+(this.isRTL?e-t.col-1:t.col),i=this.cellDates[n].clone(),r=i.clone().add(1,"day");return{start:i,end:r}},getRowEl:function(t){return this.rowEls.eq(t)},getColEl:function(t){return this.dayEls.eq(t)},getCellDayEl:function(t){return this.dayEls.eq(t.row*this.colCnt+t.col)},computeRowCoords:function(){var t=Xe.prototype.computeRowCoords.call(this);return t[t.length-1].bottom+=this.bottomCoordPadding,t},rangeToSegs:function(t){var e,n,i,r,s,o,l,a,u,d,c=this.isRTL,h=this.rowCnt,f=this.colCnt,g=[];for(t=this.view.computeDayRange(t),e=this.dateToCellOffset(t.start),n=this.dateToCellOffset(t.end.subtract(1,"days")),i=0;h>i;i++)r=i*f,s=r+f-1,a=Math.max(r,e),u=Math.min(s,n),a=Math.ceil(a),u=Math.floor(u),u>=a&&(o=a===e,l=u===n,a-=r,u-=r,d={row:i,isStart:o,isEnd:l},c?(d.leftCol=f-u-1,d.rightCol=f-a-1):(d.leftCol=a,d.rightCol=u),g.push(d));return g},dateToCellOffset:function(t){var e=this.dayToCellOffsets,n=t.diff(this.start,"days");return 0>n?e[0]-1:n>=e.length?e[e.length-1]+1:e[n]},renderDrag:function(t,e){var n;return this.renderHighlight(this.view.calendar.ensureVisibleEventRange(t)),e&&!e.el.closest(this.el).length?(this.renderRangeHelper(t,e),n=this.view.opt("dragOpacity"),void 0!==n&&this.helperEls.css("opacity",n),!0):void 0},destroyDrag:function(){this.destroyHighlight(),this.destroyHelper()},renderEventResize:function(t,e){this.renderHighlight(t),this.renderRangeHelper(t,e)},destroyEventResize:function(){this.destroyHighlight(),this.destroyHelper()},renderHelper:function(e,n){var i,r=[],s=this.eventsToSegs([e]);s=this.renderFgSegEls(s),i=this.renderSegRows(s),this.rowEls.each(function(e,s){var o,l=t(s),a=t('<div class="fc-helper-skeleton"><table/></div>');o=n&&n.row===e?n.el.position().top:l.find(".fc-content-skeleton tbody").position().top,a.css("top",o).find("table").append(i[e].tbodyEl),l.append(a),r.push(a[0])}),this.helperEls=t(r)},destroyHelper:function(){this.helperEls&&(this.helperEls.remove(),this.helperEls=null)},fillSegTag:"td",renderFill:function(e,n){var i,r,s,o=[];for(n=this.renderFillSegEls(e,n),i=0;n.length>i;i++)r=n[i],s=this.renderFillRow(e,r),this.rowEls.eq(r.row).append(s),o.push(s[0]);return this.elsByFill[e]=t(o),n},renderFillRow:function(e,n){var i,r,s=this.colCnt,o=n.leftCol,l=n.rightCol+1;return i=t('<div class="fc-'+e.toLowerCase()+'-skeleton">'+"<table><tr/></table>"+"</div>"),r=i.find("tr"),o>0&&r.append('<td colspan="'+o+'"/>'),r.append(n.el.attr("colspan",l-o)),s>l&&r.append('<td colspan="'+(s-l)+'"/>'),this.bookendCells(r,e),i}});$e.mixin({rowStructs:null,destroyEvents:function(){this.destroySegPopover(),Xe.prototype.destroyEvents.apply(this,arguments)},getEventSegs:function(){return Xe.prototype.getEventSegs.call(this).concat(this.popoverSegs||[])},renderBgSegs:function(e){var n=t.grep(e,function(t){return t.event.allDay});return Xe.prototype.renderBgSegs.call(this,n)},renderFgSegs:function(e){var n;return e=this.renderFgSegEls(e),n=this.rowStructs=this.renderSegRows(e),this.rowEls.each(function(e,i){t(i).find(".fc-content-skeleton > table").append(n[e].tbodyEl)}),e},destroyFgSegs:function(){for(var t,e=this.rowStructs||[];t=e.pop();)t.tbodyEl.remove();this.rowStructs=null},renderSegRows:function(t){var e,n,i=[];for(e=this.groupSegRows(t),n=0;e.length>n;n++)i.push(this.renderSegRow(n,e[n]));return i},fgSegHtml:function(t,e){var n,i=this.view,r=t.event,s=i.isEventDraggable(r),o=!e&&r.allDay&&t.isEnd&&i.isEventResizable(r),l=this.getSegClasses(t,s,o),a=this.getEventSkinCss(r),u="";return l.unshift("fc-day-grid-event"),!r.allDay&&t.isStart&&(u='<span class="fc-time">'+z(this.getEventTimeText(r))+"</span>"),n='<span class="fc-title">'+(z(r.title||"")||"&nbsp;")+"</span>",'<a class="'+l.join(" ")+'"'+(r.url?' href="'+z(r.url)+'"':"")+(a?' style="'+a+'"':"")+">"+'<div class="fc-content">'+(this.isRTL?n+" "+u:u+" "+n)+"</div>"+(o?'<div class="fc-resizer"/>':"")+"</a>"},renderSegRow:function(e,n){function i(e){for(;e>o;)d=(v[r-1]||[])[o],d?d.attr("rowspan",parseInt(d.attr("rowspan")||1,10)+1):(d=t("<td/>"),l.append(d)),m[r][o]=d,v[r][o]=d,o++}var r,s,o,l,a,u,d,c=this.colCnt,h=this.buildSegLevels(n),f=Math.max(1,h.length),g=t("<tbody/>"),p=[],m=[],v=[];for(r=0;f>r;r++){if(s=h[r],o=0,l=t("<tr/>"),p.push([]),m.push([]),v.push([]),s)for(a=0;s.length>a;a++){for(u=s[a],i(u.leftCol),d=t('<td class="fc-event-container"/>').append(u.el),u.leftCol!=u.rightCol?d.attr("colspan",u.rightCol-u.leftCol+1):v[r][o]=d;u.rightCol>=o;)m[r][o]=d,p[r][o]=u,o++;l.append(d)}i(c),this.bookendCells(l,"eventSkeleton"),g.append(l)}return{row:e,tbodyEl:g,cellMatrix:m,segMatrix:p,segLevels:h,segs:n}},buildSegLevels:function(t){var e,n,i,r=[];for(t.sort(re),e=0;t.length>e;e++){for(n=t[e],i=0;r.length>i&&oe(n,r[i]);i++);n.level=i,(r[i]||(r[i]=[])).push(n)}for(i=0;r.length>i;i++)r[i].sort(le);return r},groupSegRows:function(t){var e,n=[];for(e=0;this.rowCnt>e;e++)n.push([]);for(e=0;t.length>e;e++)n[t[e].row].push(t[e]);return n}}),$e.mixin({segPopover:null,popoverSegs:null,destroySegPopover:function(){this.segPopover&&this.segPopover.hide()},limitRows:function(t){var e,n,i=this.rowStructs||[];for(e=0;i.length>e;e++)this.unlimitRow(e),n=t?"number"==typeof t?t:this.computeRowLevelLimit(e):!1,n!==!1&&this.limitRow(e,n)},computeRowLevelLimit:function(t){var e,n,i=this.rowEls.eq(t),r=i.height(),s=this.rowStructs[t].tbodyEl.children();for(e=0;s.length>e;e++)if(n=s.eq(e).removeClass("fc-limited"),n.position().top+n.outerHeight()>r)return e;return!1},limitRow:function(e,n){function i(i){for(;i>D;)r=E.getCell(e,D),d=E.getCellSegs(r,n),d.length&&(f=o[n-1][D],w=E.renderMoreLink(r,d),y=t("<div/>").append(w),f.append(y),b.push(y[0])),D++}var r,s,o,l,a,u,d,c,h,f,g,p,m,v,y,w,E=this,S=this.rowStructs[e],b=[],D=0;if(n&&S.segLevels.length>n){for(s=S.segLevels[n-1],o=S.cellMatrix,l=S.tbodyEl.children().slice(n).addClass("fc-limited").get(),a=0;s.length>a;a++){for(u=s[a],i(u.leftCol),h=[],c=0;u.rightCol>=D;)r=this.getCell(e,D),d=this.getCellSegs(r,n),h.push(d),c+=d.length,D++;if(c){for(f=o[n-1][u.leftCol],g=f.attr("rowspan")||1,p=[],m=0;h.length>m;m++)v=t('<td class="fc-more-cell"/>').attr("rowspan",g),d=h[m],r=this.getCell(e,u.leftCol+m),w=this.renderMoreLink(r,[u].concat(d)),y=t("<div/>").append(w),v.append(y),p.push(v[0]),b.push(v[0]);f.addClass("fc-limited").after(t(p)),l.push(f[0])}}i(this.colCnt),S.moreEls=t(b),S.limitedEls=t(l)}},unlimitRow:function(t){var e=this.rowStructs[t];e.moreEls&&(e.moreEls.remove(),e.moreEls=null),e.limitedEls&&(e.limitedEls.removeClass("fc-limited"),e.limitedEls=null)},renderMoreLink:function(e,n){var i=this,r=this.view;return t('<a class="fc-more"/>').text(this.getMoreLinkText(n.length)).on("click",function(s){var o=r.opt("eventLimitClick"),l=e.start,a=t(this),u=i.getCellDayEl(e),d=i.getCellSegs(e),c=i.resliceDaySegs(d,l),h=i.resliceDaySegs(n,l);"function"==typeof o&&(o=r.trigger("eventLimitClick",null,{date:l,dayEl:u,moreEl:a,segs:c,hiddenSegs:h},s)),"popover"===o?i.showSegPopover(e,a,c):"string"==typeof o&&r.calendar.zoomTo(l,o)})},showSegPopover:function(t,e,n){var i,r,s=this,o=this.view,l=e.parent();i=1==this.rowCnt?o.el:this.rowEls.eq(t.row),r={className:"fc-more-popover",content:this.renderSegPopoverContent(t,n),parentEl:this.el,top:i.offset().top,autoHide:!0,viewportConstrain:o.opt("popoverViewportConstrain"),hide:function(){s.segPopover.destroy(),s.segPopover=null,s.popoverSegs=null}},this.isRTL?r.right=l.offset().left+l.outerWidth()+1:r.left=l.offset().left-1,this.segPopover=new Oe(r),this.segPopover.show()},renderSegPopoverContent:function(e,n){var i,r=this.view,s=r.opt("theme"),o=e.start.format(r.opt("dayPopoverFormat")),l=t('<div class="fc-header '+r.widgetHeaderClass+'">'+'<span class="fc-close '+(s?"ui-icon ui-icon-closethick":"fc-icon fc-icon-x")+'"></span>'+'<span class="fc-title">'+z(o)+"</span>"+'<div class="fc-clear"/>'+"</div>"+'<div class="fc-body '+r.widgetContentClass+'">'+'<div class="fc-event-container"></div>'+"</div>"),a=l.find(".fc-event-container");for(n=this.renderFgSegEls(n,!0),this.popoverSegs=n,i=0;n.length>i;i++)n[i].cell=e,a.append(n[i].el);return l},resliceDaySegs:function(e,n){var i=t.map(e,function(t){return t.event}),r=n.clone().stripTime(),s=r.clone().add(1,"days"),o={start:r,end:s};return this.eventsToSegs(i,function(t){var e=y(t,o);return e?[e]:[]})},getMoreLinkText:function(t){var e=this.view.opt("eventLimitText");return"function"==typeof e?e(t):"+"+t+" "+e},getCellSegs:function(t,e){for(var n,i=this.rowStructs[t.row].segMatrix,r=e||0,s=[];i.length>r;)n=i[r][t.col],n&&s.push(n),r++;return s}});var Ue=Xe.extend({slotDuration:null,snapDuration:null,minTime:null,maxTime:null,axisFormat:null,dayEls:null,slatEls:null,slatTops:null,helperEl:null,businessHourSegs:null,constructor:function(){Xe.apply(this,arguments),this.processOptions()},render:function(){this.el.html(this.renderHtml()),this.dayEls=this.el.find(".fc-day"),this.slatEls=this.el.find(".fc-slats tr"),this.computeSlatTops(),this.renderBusinessHours(),Xe.prototype.render.call(this)},renderBusinessHours:function(){var t=this.view.calendar.getBusinessHoursEvents();this.businessHourSegs=this.renderFill("businessHours",this.eventsToSegs(t),"bgevent")},renderHtml:function(){return'<div class="fc-bg"><table>'+this.rowHtml("slotBg")+"</table>"+"</div>"+'<div class="fc-slats">'+"<table>"+this.slatRowHtml()+"</table>"+"</div>"},slotBgCellHtml:function(t){return this.bgCellHtml(t)},slatRowHtml:function(){for(var t,n,i,r=this.view,s=this.isRTL,o="",l=0===this.slotDuration.asMinutes()%15,a=e.duration(+this.minTime);this.maxTime>a;)t=this.start.clone().time(a),n=t.minutes(),i='<td class="fc-axis fc-time '+r.widgetContentClass+'" '+r.axisStyleAttr()+">"+(l&&n?"":"<span>"+z(t.format(this.axisFormat))+"</span>")+"</td>",o+="<tr "+(n?'class="fc-minor"':"")+">"+(s?"":i)+'<td class="'+r.widgetContentClass+'"/>'+(s?i:"")+"</tr>",a.add(this.slotDuration);return o},processOptions:function(){var t=this.view,n=t.opt("slotDuration"),i=t.opt("snapDuration");n=e.duration(n),i=i?e.duration(i):n,this.slotDuration=n,this.snapDuration=i,this.minTime=e.duration(t.opt("minTime")),this.maxTime=e.duration(t.opt("maxTime")),this.axisFormat=t.opt("axisFormat")||t.opt("smallTimeFormat")},computeColHeadFormat:function(){return this.colCnt>1?this.view.opt("dayOfMonthFormat"):"dddd"},computeEventTimeFormat:function(){return this.view.opt("noMeridiemTimeFormat")},computeDisplayEventEnd:function(){return!0},updateCells:function(){var t,e=this.view,n=[];for(t=this.start.clone();t.isBefore(this.end);)n.push({day:t.clone()}),t.add(1,"day"),t=e.skipHiddenDays(t);this.isRTL&&n.reverse(),this.colData=n,this.colCnt=n.length,this.rowCnt=Math.ceil((this.maxTime-this.minTime)/this.snapDuration)},computeCellRange:function(t){var e=this.computeSnapTime(t.row),n=this.view.calendar.rezoneDate(t.day).time(e),i=n.clone().add(this.snapDuration);return{start:n,end:i}},getColEl:function(t){return this.dayEls.eq(t)},computeSnapTime:function(t){return e.duration(this.minTime+this.snapDuration*t)},rangeToSegs:function(t){var e,n,i,r,s=this.colCnt,o=[];for(t={start:t.start.clone().stripZone(),end:t.end.clone().stripZone()},n=0;s>n;n++)i=this.colData[n].day,r={start:i.clone().time(this.minTime),end:i.clone().time(this.maxTime)},e=y(t,r),e&&(e.col=n,o.push(e)); -return o},resize:function(){this.computeSlatTops(),this.updateSegVerticals()},computeRowCoords:function(){var t,e,n=this.el.offset().top,i=[];for(t=0;this.rowCnt>t;t++)e={top:n+this.computeTimeTop(this.computeSnapTime(t))},t>0&&(i[t-1].bottom=e.top),i.push(e);return e.bottom=e.top+this.computeTimeTop(this.computeSnapTime(t)),i},computeDateTop:function(t,n){return this.computeTimeTop(e.duration(t.clone().stripZone()-n.clone().stripTime()))},computeTimeTop:function(t){var e,n,i,r,s=(t-this.minTime)/this.slotDuration;return s=Math.max(0,s),s=Math.min(this.slatEls.length,s),e=Math.floor(s),n=s-e,i=this.slatTops[e],n?(r=this.slatTops[e+1],i+(r-i)*n):i},computeSlatTops:function(){var e,n=[];this.slatEls.each(function(i,r){e=t(r).position().top,n.push(e)}),n.push(e+this.slatEls.last().outerHeight()),this.slatTops=n},renderDrag:function(t,e){var n;return e?(this.renderRangeHelper(t,e),n=this.view.opt("dragOpacity"),void 0!==n&&this.helperEl.css("opacity",n),!0):(this.renderHighlight(this.view.calendar.ensureVisibleEventRange(t)),void 0)},destroyDrag:function(){this.destroyHelper(),this.destroyHighlight()},renderEventResize:function(t,e){this.renderRangeHelper(t,e)},destroyEventResize:function(){this.destroyHelper()},renderHelper:function(e,n){var i,r,s,o,l=this.eventsToSegs([e]);for(l=this.renderFgSegEls(l),i=this.renderSegTable(l),r=0;l.length>r;r++)s=l[r],n&&n.col===s.col&&(o=n.el,s.el.css({left:o.css("left"),right:o.css("right"),"margin-left":o.css("margin-left"),"margin-right":o.css("margin-right")}));this.helperEl=t('<div class="fc-helper-skeleton"/>').append(i).appendTo(this.el)},destroyHelper:function(){this.helperEl&&(this.helperEl.remove(),this.helperEl=null)},renderSelection:function(t){this.view.opt("selectHelper")?this.renderRangeHelper(t):this.renderHighlight(t)},destroySelection:function(){this.destroyHelper(),this.destroyHighlight()},renderFill:function(e,n,i){var r,s,o,l,a,u,d,c,h,f;if(n.length){for(n=this.renderFillSegEls(e,n),r=this.groupSegCols(n),i=i||e.toLowerCase(),s=t('<div class="fc-'+i+'-skeleton">'+"<table><tr/></table>"+"</div>"),o=s.find("tr"),l=0;r.length>l;l++)if(a=r[l],u=t("<td/>").appendTo(o),a.length)for(d=t('<div class="fc-'+i+'-container"/>').appendTo(u),c=this.colData[l].day,h=0;a.length>h;h++)f=a[h],d.append(f.el.css({top:this.computeDateTop(f.start,c),bottom:-this.computeDateTop(f.end,c)}));this.bookendCells(o,e),this.el.append(s),this.elsByFill[e]=s}return n}});Ue.mixin({eventSkeletonEl:null,renderFgSegs:function(e){return e=this.renderFgSegEls(e),this.el.append(this.eventSkeletonEl=t('<div class="fc-content-skeleton"/>').append(this.renderSegTable(e))),e},destroyFgSegs:function(){this.eventSkeletonEl&&(this.eventSkeletonEl.remove(),this.eventSkeletonEl=null)},renderSegTable:function(e){var n,i,r,s,o,l,a=t("<table><tr/></table>"),u=a.find("tr");for(n=this.groupSegCols(e),this.computeSegVerticals(e),s=0;n.length>s;s++){for(o=n[s],ae(o),l=t('<div class="fc-event-container"/>'),i=0;o.length>i;i++)r=o[i],r.el.css(this.generateSegPositionCss(r)),30>r.bottom-r.top&&r.el.addClass("fc-short"),l.append(r.el);u.append(t("<td/>").append(l))}return this.bookendCells(u,"eventSkeleton"),a},updateSegVerticals:function(){var t,e=(this.segs||[]).concat(this.businessHourSegs||[]);for(this.computeSegVerticals(e),t=0;e.length>t;t++)e[t].el.css(this.generateSegVerticalCss(e[t]))},computeSegVerticals:function(t){var e,n;for(e=0;t.length>e;e++)n=t[e],n.top=this.computeDateTop(n.start,n.start),n.bottom=this.computeDateTop(n.end,n.start)},fgSegHtml:function(t,e){var n,i,r,s=this.view,o=t.event,l=s.isEventDraggable(o),a=!e&&t.isEnd&&s.isEventResizable(o),u=this.getSegClasses(t,l,a),d=this.getEventSkinCss(o);return u.unshift("fc-time-grid-event"),s.isMultiDayEvent(o)?(t.isStart||t.isEnd)&&(n=this.getEventTimeText(t),i=this.getEventTimeText(t,"LT"),r=this.getEventTimeText({start:t.start})):(n=this.getEventTimeText(o),i=this.getEventTimeText(o,"LT"),r=this.getEventTimeText({start:o.start})),'<a class="'+u.join(" ")+'"'+(o.url?' href="'+z(o.url)+'"':"")+(d?' style="'+d+'"':"")+">"+'<div class="fc-content">'+(n?'<div class="fc-time" data-start="'+z(r)+'"'+' data-full="'+z(i)+'"'+">"+"<span>"+z(n)+"</span>"+"</div>":"")+(o.title?'<div class="fc-title">'+z(o.title)+"</div>":"")+"</div>"+'<div class="fc-bg"/>'+(a?'<div class="fc-resizer"/>':"")+"</a>"},generateSegPositionCss:function(t){var e,n,i=this.view.opt("slotEventOverlap"),r=t.backwardCoord,s=t.forwardCoord,o=this.generateSegVerticalCss(t);return i&&(s=Math.min(1,r+2*(s-r))),this.isRTL?(e=1-s,n=r):(e=r,n=1-s),o.zIndex=t.level+1,o.left=100*e+"%",o.right=100*n+"%",i&&t.forwardPressure&&(o[this.isRTL?"marginLeft":"marginRight"]=20),o},generateSegVerticalCss:function(t){return{top:t.top,bottom:-t.bottom}},groupSegCols:function(t){var e,n=[];for(e=0;this.colCnt>e;e++)n.push([]);for(e=0;t.length>e;e++)n[t[e].col].push(t[e]);return n}});var qe=De.View=K.extend({type:null,name:null,calendar:null,options:null,coordMap:null,el:null,start:null,end:null,intervalStart:null,intervalEnd:null,intervalDuration:null,intervalUnit:null,isSelected:!1,scrollerEl:null,scrollTop:null,widgetHeaderClass:null,widgetContentClass:null,highlightStateClass:null,nextDayThreshold:null,isHiddenDayHash:null,documentMousedownProxy:null,constructor:function(n,i,r){this.calendar=n,this.options=i,this.type=this.name=r,this.nextDayThreshold=e.duration(this.opt("nextDayThreshold")),this.initTheming(),this.initHiddenDays(),this.documentMousedownProxy=t.proxy(this,"documentMousedown"),this.initialize()},initialize:function(){},opt:function(e){var n;return n=this.options[e],void 0!==n?n:(n=this.calendar.options[e],t.isPlainObject(n)&&!r(e)?w(n,this.type):n)},trigger:function(t,e){var n=this.calendar;return n.trigger.apply(n,[t,e||this].concat(Array.prototype.slice.call(arguments,2),[this]))},setDate:function(t){this.setRange(this.computeRange(t))},setRange:function(e){t.extend(this,e)},computeRange:function(t){var n,i,r=e.duration(this.opt("duration")||this.constructor.duration||{days:1}),s=b(r),o=t.clone().startOf(s),l=o.clone().add(r);return D("days",r)?(o.stripTime(),l.stripTime()):(o.hasTime()||(o=this.calendar.rezoneDate(o)),l.hasTime()||(l=this.calendar.rezoneDate(l))),n=o.clone(),n=this.skipHiddenDays(n),i=l.clone(),i=this.skipHiddenDays(i,-1,!0),{intervalDuration:r,intervalUnit:s,intervalStart:o,intervalEnd:l,start:n,end:i}},computePrevDate:function(t){return this.skipHiddenDays(t.clone().startOf(this.intervalUnit).subtract(this.intervalDuration),-1)},computeNextDate:function(t){return this.skipHiddenDays(t.clone().startOf(this.intervalUnit).add(this.intervalDuration))},computeTitle:function(){return this.formatRange({start:this.intervalStart,end:this.intervalEnd},this.opt("titleFormat")||this.computeTitleFormat(),this.opt("titleRangeSeparator"))},computeTitleFormat:function(){return"year"==this.intervalUnit?"YYYY":"month"==this.intervalUnit?this.opt("monthYearFormat"):this.intervalDuration.as("days")>1?"ll":"LL"},formatRange:function(t,e,n){var i=t.end;return i.hasTime()||(i=i.clone().subtract(1)),j(t.start,i,e,n,this.opt("isRTL"))},renderView:function(){this.render(),this.updateSize(),this.initializeScroll(),this.trigger("viewRender",this,this,this.el),t(document).on("mousedown",this.documentMousedownProxy)},render:function(){},destroyView:function(){this.unselect(),this.destroyViewEvents(),this.destroy(),this.trigger("viewDestroy",this,this,this.el),t(document).off("mousedown",this.documentMousedownProxy)},destroy:function(){this.el.empty()},initTheming:function(){var t=this.opt("theme")?"ui":"fc";this.widgetHeaderClass=t+"-widget-header",this.widgetContentClass=t+"-widget-content",this.highlightStateClass=t+"-state-highlight"},updateSize:function(t){t&&this.recordScroll(),this.updateHeight(),this.updateWidth()},updateWidth:function(){},updateHeight:function(){var t=this.calendar;this.setHeight(t.getSuggestedViewHeight(),t.isHeightAuto())},setHeight:function(){},computeScrollerHeight:function(t,e){var n,i;return e=e||this.scrollerEl,n=this.el.add(e),n.css({position:"relative",left:-1}),i=this.el.outerHeight()-e.height(),n.css({position:"",left:""}),t-i},initializeScroll:function(){},recordScroll:function(){this.scrollerEl&&(this.scrollTop=this.scrollerEl.scrollTop())},restoreScroll:function(){null!==this.scrollTop&&this.scrollerEl.scrollTop(this.scrollTop)},renderViewEvents:function(t){this.renderEvents(t),this.eventSegEach(function(t){this.trigger("eventAfterRender",t.event,t.event,t.el)}),this.trigger("eventAfterAllRender")},renderEvents:function(){},destroyViewEvents:function(){this.eventSegEach(function(t){this.trigger("eventDestroy",t.event,t.event,t.el)}),this.destroyEvents()},destroyEvents:function(){},resolveEventEl:function(e,n){var i=this.trigger("eventRender",e,e,n);return i===!1?n=null:i&&i!==!0&&(n=t(i)),n},showEvent:function(t){this.eventSegEach(function(t){t.el.css("visibility","")},t)},hideEvent:function(t){this.eventSegEach(function(t){t.el.css("visibility","hidden")},t)},eventSegEach:function(t,e){var n,i=this.getEventSegs();for(n=0;i.length>n;n++)e&&i[n].event._id!==e._id||t.call(this,i[n])},getEventSegs:function(){return[]},isEventDraggable:function(t){var e=t.source||{};return F(t.startEditable,e.startEditable,this.opt("eventStartEditable"),t.editable,e.editable,this.opt("editable"))},reportEventDrop:function(t,e,n,i){var r=this.calendar,s=r.mutateEvent(t,e),o=function(){s.undo(),r.reportEventChange()};this.triggerEventDrop(t,s.dateDelta,o,n,i),r.reportEventChange()},triggerEventDrop:function(t,e,n,i,r){this.trigger("eventDrop",i[0],t,e,n,r,{})},reportExternalDrop:function(e,n,i,r,s){var o,l,a=e.eventProps;a&&(o=t.extend({},a,n),l=this.calendar.renderEvent(o,e.stick)[0]),this.triggerExternalDrop(l,n,i,r,s)},triggerExternalDrop:function(t,e,n,i,r){this.trigger("drop",n[0],e.start,i,r),t&&this.trigger("eventReceive",null,t)},renderDrag:function(){},destroyDrag:function(){},isEventResizable:function(t){var e=t.source||{};return F(t.durationEditable,e.durationEditable,this.opt("eventDurationEditable"),t.editable,e.editable,this.opt("editable"))},reportEventResize:function(t,e,n,i){var r=this.calendar,s=r.mutateEvent(t,{end:e}),o=function(){s.undo(),r.reportEventChange()};this.triggerEventResize(t,s.durationDelta,o,n,i),r.reportEventChange()},triggerEventResize:function(t,e,n,i,r){this.trigger("eventResize",i[0],t,e,n,r,{})},select:function(t,e){this.unselect(e),this.renderSelection(t),this.reportSelection(t,e)},renderSelection:function(){},reportSelection:function(t,e){this.isSelected=!0,this.trigger("select",null,t.start,t.end,e)},unselect:function(t){this.isSelected&&(this.isSelected=!1,this.destroySelection(),this.trigger("unselect",null,t))},destroySelection:function(){},documentMousedown:function(e){var n;this.isSelected&&this.opt("unselectAuto")&&v(e)&&(n=this.opt("unselectCancel"),n&&t(e.target).closest(n).length||this.unselect(e))},initHiddenDays:function(){var e,n=this.opt("hiddenDays")||[],i=[],r=0;for(this.opt("weekends")===!1&&n.push(0,6),e=0;7>e;e++)(i[e]=-1!==t.inArray(e,n))||r++;if(!r)throw"invalid hiddenDays";this.isHiddenDayHash=i},isHiddenDay:function(t){return e.isMoment(t)&&(t=t.day()),this.isHiddenDayHash[t]},skipHiddenDays:function(t,e,n){var i=t.clone();for(e=e||1;this.isHiddenDayHash[(i.day()+(n?e:0)+7)%7];)i.add(e,"days");return i},computeDayRange:function(t){var e,n=t.start.clone().stripTime(),i=t.end,r=null;return i&&(r=i.clone().stripTime(),e=+i.time(),e&&e>=this.nextDayThreshold&&r.add(1,"days")),(!i||n>=r)&&(r=n.clone().add(1,"days")),{start:n,end:r}},isMultiDayEvent:function(t){var e=this.computeDayRange(t);return e.end.diff(e.start,"days")>1}});De.sourceNormalizers=[],De.sourceFetchers=[];var Ke={dataType:"json",cache:!1},Qe=1,Je=Ce.basic=qe.extend({dayGrid:null,dayNumbersVisible:!1,weekNumbersVisible:!1,weekNumberWidth:null,headRowEl:null,initialize:function(){this.dayGrid=new $e(this),this.coordMap=this.dayGrid.coordMap},setRange:function(t){qe.prototype.setRange.call(this,t),this.dayGrid.breakOnWeeks=/year|month|week/.test(this.intervalUnit),this.dayGrid.setRange(t)},computeRange:function(t){var e=qe.prototype.computeRange.call(this,t);return/year|month/.test(e.intervalUnit)&&(e.start.startOf("week"),e.start=this.skipHiddenDays(e.start),e.end.weekday()&&(e.end.add(1,"week").startOf("week"),e.end=this.skipHiddenDays(e.end,-1,!0))),e},render:function(){this.dayNumbersVisible=this.dayGrid.rowCnt>1,this.weekNumbersVisible=this.opt("weekNumbers"),this.dayGrid.numbersVisible=this.dayNumbersVisible||this.weekNumbersVisible,this.el.addClass("fc-basic-view").html(this.renderHtml()),this.headRowEl=this.el.find("thead .fc-row"),this.scrollerEl=this.el.find(".fc-day-grid-container"),this.dayGrid.coordMap.containerEl=this.scrollerEl,this.dayGrid.el=this.el.find(".fc-day-grid"),this.dayGrid.render(this.hasRigidRows())},destroy:function(){this.dayGrid.destroy(),qe.prototype.destroy.call(this)},renderHtml:function(){return'<table><thead><tr><td class="'+this.widgetHeaderClass+'">'+this.dayGrid.headHtml()+"</td>"+"</tr>"+"</thead>"+"<tbody>"+"<tr>"+'<td class="'+this.widgetContentClass+'">'+'<div class="fc-day-grid-container">'+'<div class="fc-day-grid"/>'+"</div>"+"</td>"+"</tr>"+"</tbody>"+"</table>"},headIntroHtml:function(){return this.weekNumbersVisible?'<th class="fc-week-number '+this.widgetHeaderClass+'" '+this.weekNumberStyleAttr()+">"+"<span>"+z(this.opt("weekNumberTitle"))+"</span>"+"</th>":void 0},numberIntroHtml:function(t){return this.weekNumbersVisible?'<td class="fc-week-number" '+this.weekNumberStyleAttr()+">"+"<span>"+this.calendar.calculateWeekNumber(this.dayGrid.getCell(t,0).start)+"</span>"+"</td>":void 0},dayIntroHtml:function(){return this.weekNumbersVisible?'<td class="fc-week-number '+this.widgetContentClass+'" '+this.weekNumberStyleAttr()+"></td>":void 0},introHtml:function(){return this.weekNumbersVisible?'<td class="fc-week-number" '+this.weekNumberStyleAttr()+"></td>":void 0},numberCellHtml:function(t){var e,n=t.start;return this.dayNumbersVisible?(e=this.dayGrid.getDayClasses(n),e.unshift("fc-day-number"),'<td class="'+e.join(" ")+'" data-date="'+n.format()+'">'+n.date()+"</td>"):"<td/>"},weekNumberStyleAttr:function(){return null!==this.weekNumberWidth?'style="width:'+this.weekNumberWidth+'px"':""},hasRigidRows:function(){var t=this.opt("eventLimit");return t&&"number"!=typeof t},updateWidth:function(){this.weekNumbersVisible&&(this.weekNumberWidth=h(this.el.find(".fc-week-number")))},setHeight:function(t,e){var n,i=this.opt("eventLimit");g(this.scrollerEl),l(this.headRowEl),this.dayGrid.destroySegPopover(),i&&"number"==typeof i&&this.dayGrid.limitRows(i),n=this.computeScrollerHeight(t),this.setGridHeight(n,e),i&&"number"!=typeof i&&this.dayGrid.limitRows(i),!e&&f(this.scrollerEl,n)&&(o(this.headRowEl,m(this.scrollerEl)),n=this.computeScrollerHeight(t),this.scrollerEl.height(n),this.restoreScroll())},setGridHeight:function(t,e){e?c(this.dayGrid.rowEls):d(this.dayGrid.rowEls,t,!0)},renderEvents:function(t){this.dayGrid.renderEvents(t),this.updateHeight()},getEventSegs:function(){return this.dayGrid.getEventSegs()},destroyEvents:function(){this.recordScroll(),this.dayGrid.destroyEvents()},renderDrag:function(t,e){return this.dayGrid.renderDrag(t,e)},destroyDrag:function(){this.dayGrid.destroyDrag()},renderSelection:function(t){this.dayGrid.renderSelection(t)},destroySelection:function(){this.dayGrid.destroySelection()}});n({fixedWeekCount:!0});var tn=Ce.month=Je.extend({computeRange:function(t){var e=Je.prototype.computeRange.call(this,t);return this.isFixedWeeks()&&e.end.add(6-e.end.diff(e.start,"weeks"),"weeks"),e},setGridHeight:function(t,e){e=e||"variable"===this.opt("weekMode"),e&&(t*=this.rowCnt/6),d(this.dayGrid.rowEls,t,!e)},isFixedWeeks:function(){var t=this.opt("weekMode");return t?"fixed"===t:this.opt("fixedWeekCount")}});tn.duration={months:1},Ce.basicWeek={type:"basic",duration:{weeks:1}},Ce.basicDay={type:"basic",duration:{days:1}},n({allDaySlot:!0,allDayText:"all-day",scrollTime:"06:00:00",slotDuration:"00:30:00",minTime:"00:00:00",maxTime:"24:00:00",slotEventOverlap:!0});var en=5;Ce.agenda=qe.extend({timeGrid:null,dayGrid:null,axisWidth:null,noScrollRowEls:null,bottomRuleEl:null,bottomRuleHeight:null,initialize:function(){this.timeGrid=new Ue(this),this.opt("allDaySlot")?(this.dayGrid=new $e(this),this.coordMap=new Ze([this.dayGrid.coordMap,this.timeGrid.coordMap])):this.coordMap=this.timeGrid.coordMap},setRange:function(t){qe.prototype.setRange.call(this,t),this.timeGrid.setRange(t),this.dayGrid&&this.dayGrid.setRange(t)},render:function(){this.el.addClass("fc-agenda-view").html(this.renderHtml()),this.scrollerEl=this.el.find(".fc-time-grid-container"),this.timeGrid.coordMap.containerEl=this.scrollerEl,this.timeGrid.el=this.el.find(".fc-time-grid"),this.timeGrid.render(),this.bottomRuleEl=t('<hr class="'+this.widgetHeaderClass+'"/>').appendTo(this.timeGrid.el),this.dayGrid&&(this.dayGrid.el=this.el.find(".fc-day-grid"),this.dayGrid.render(),this.dayGrid.bottomCoordPadding=this.dayGrid.el.next("hr").outerHeight()),this.noScrollRowEls=this.el.find(".fc-row:not(.fc-scroller *)")},destroy:function(){this.timeGrid.destroy(),this.dayGrid&&this.dayGrid.destroy(),qe.prototype.destroy.call(this)},renderHtml:function(){return'<table><thead><tr><td class="'+this.widgetHeaderClass+'">'+this.timeGrid.headHtml()+"</td>"+"</tr>"+"</thead>"+"<tbody>"+"<tr>"+'<td class="'+this.widgetContentClass+'">'+(this.dayGrid?'<div class="fc-day-grid"/><hr class="'+this.widgetHeaderClass+'"/>':"")+'<div class="fc-time-grid-container">'+'<div class="fc-time-grid"/>'+"</div>"+"</td>"+"</tr>"+"</tbody>"+"</table>"},headIntroHtml:function(){var t,e,n,i;return this.opt("weekNumbers")?(t=this.timeGrid.getCell(0).start,e=this.calendar.calculateWeekNumber(t),n=this.opt("weekNumberTitle"),i=this.opt("isRTL")?e+n:n+e,'<th class="fc-axis fc-week-number '+this.widgetHeaderClass+'" '+this.axisStyleAttr()+">"+"<span>"+z(i)+"</span>"+"</th>"):'<th class="fc-axis '+this.widgetHeaderClass+'" '+this.axisStyleAttr()+"></th>"},dayIntroHtml:function(){return'<td class="fc-axis '+this.widgetContentClass+'" '+this.axisStyleAttr()+">"+"<span>"+(this.opt("allDayHtml")||z(this.opt("allDayText")))+"</span>"+"</td>"},slotBgIntroHtml:function(){return'<td class="fc-axis '+this.widgetContentClass+'" '+this.axisStyleAttr()+"></td>"},introHtml:function(){return'<td class="fc-axis" '+this.axisStyleAttr()+"></td>"},axisStyleAttr:function(){return null!==this.axisWidth?'style="width:'+this.axisWidth+'px"':""},updateSize:function(t){t&&this.timeGrid.resize(),qe.prototype.updateSize.call(this,t)},updateWidth:function(){this.axisWidth=h(this.el.find(".fc-axis"))},setHeight:function(t,e){var n,i;null===this.bottomRuleHeight&&(this.bottomRuleHeight=this.bottomRuleEl.outerHeight()),this.bottomRuleEl.hide(),this.scrollerEl.css("overflow",""),g(this.scrollerEl),l(this.noScrollRowEls),this.dayGrid&&(this.dayGrid.destroySegPopover(),n=this.opt("eventLimit"),n&&"number"!=typeof n&&(n=en),n&&this.dayGrid.limitRows(n)),e||(i=this.computeScrollerHeight(t),f(this.scrollerEl,i)?(o(this.noScrollRowEls,m(this.scrollerEl)),i=this.computeScrollerHeight(t),this.scrollerEl.height(i),this.restoreScroll()):(this.scrollerEl.height(i).css("overflow","hidden"),this.bottomRuleEl.show()))},initializeScroll:function(){function t(){n.scrollerEl.scrollTop(r)}var n=this,i=e.duration(this.opt("scrollTime")),r=this.timeGrid.computeTimeTop(i);r=Math.ceil(r),r&&r++,t(),setTimeout(t,0)},renderEvents:function(t){var e,n,i=[],r=[],s=[];for(n=0;t.length>n;n++)t[n].allDay?i.push(t[n]):r.push(t[n]);e=this.timeGrid.renderEvents(r),this.dayGrid&&(s=this.dayGrid.renderEvents(i)),this.updateHeight()},getEventSegs:function(){return this.timeGrid.getEventSegs().concat(this.dayGrid?this.dayGrid.getEventSegs():[])},destroyEvents:function(){this.recordScroll(),this.timeGrid.destroyEvents(),this.dayGrid&&this.dayGrid.destroyEvents()},renderDrag:function(t,e){return t.start.hasTime()?this.timeGrid.renderDrag(t,e):this.dayGrid?this.dayGrid.renderDrag(t,e):void 0},destroyDrag:function(){this.timeGrid.destroyDrag(),this.dayGrid&&this.dayGrid.destroyDrag()},renderSelection:function(t){t.start.hasTime()||t.end.hasTime()?this.timeGrid.renderSelection(t):this.dayGrid&&this.dayGrid.renderSelection(t)},destroySelection:function(){this.timeGrid.destroySelection(),this.dayGrid&&this.dayGrid.destroySelection()}}),Ce.agendaWeek={type:"agenda",duration:{weeks:1}},Ce.agendaDay={type:"agenda",duration:{days:1}}}); \ No newline at end of file diff --git a/assets/plugins/fullcalendar/fullcalendar.print.css b/assets/plugins/fullcalendar/fullcalendar.print.css deleted file mode 100644 index e29366a7..00000000 --- a/assets/plugins/fullcalendar/fullcalendar.print.css +++ /dev/null @@ -1,202 +0,0 @@ -/*! - * FullCalendar v2.2.5 Print Stylesheet - * Docs & License: http://arshaw.com/fullcalendar/ - * (c) 2013 Adam Shaw - */ - -/* - * Include this stylesheet on your page to get a more printer-friendly calendar. - * When including this stylesheet, use the media='print' attribute of the <link> tag. - * Make sure to include this stylesheet IN ADDITION to the regular fullcalendar.css. - */ - -.fc { - max-width: 100% !important; -} - - -/* Global Event Restyling ---------------------------------------------------------------------------------------------------*/ - -.fc-event { - background: #fff !important; - color: #000 !important; - page-break-inside: avoid; -} - -.fc-event .fc-resizer { - display: none; -} - - -/* Table & Day-Row Restyling ---------------------------------------------------------------------------------------------------*/ - -th, -td, -hr, -thead, -tbody, -.fc-row { - border-color: #ccc !important; - background: #fff !important; -} - -/* kill the overlaid, absolutely-positioned common components */ -.fc-bg, -.fc-bgevent-skeleton, -.fc-highlight-skeleton, -.fc-helper-skeleton { - display: none; -} - -/* don't force a min-height on rows (for DayGrid) */ -.fc tbody .fc-row { - height: auto !important; /* undo height that JS set in distributeHeight */ - min-height: 0 !important; /* undo the min-height from each view's specific stylesheet */ -} - -.fc tbody .fc-row .fc-content-skeleton { - position: static; /* undo .fc-rigid */ - padding-bottom: 0 !important; /* use a more border-friendly method for this... */ -} - -.fc tbody .fc-row .fc-content-skeleton tbody tr:last-child td { /* only works in newer browsers */ - padding-bottom: 1em; /* ...gives space within the skeleton. also ensures min height in a way */ -} - -.fc tbody .fc-row .fc-content-skeleton table { - /* provides a min-height for the row, but only effective for IE, which exaggerates this value, - making it look more like 3em. for other browers, it will already be this tall */ - height: 1em; -} - - -/* Undo month-view event limiting. Display all events and hide the "more" links ---------------------------------------------------------------------------------------------------*/ - -.fc-more-cell, -.fc-more { - display: none !important; -} - -.fc tr.fc-limited { - display: table-row !important; -} - -.fc td.fc-limited { - display: table-cell !important; -} - -.fc-popover { - display: none; /* never display the "more.." popover in print mode */ -} - - -/* TimeGrid Restyling ---------------------------------------------------------------------------------------------------*/ - -/* undo the min-height 100% trick used to fill the container's height */ -.fc-time-grid { - min-height: 0 !important; -} - -/* don't display the side axis at all ("all-day" and time cells) */ -.fc-agenda-view .fc-axis { - display: none; -} - -/* don't display the horizontal lines */ -.fc-slats, -.fc-time-grid hr { /* this hr is used when height is underused and needs to be filled */ - display: none !important; /* important overrides inline declaration */ -} - -/* let the container that holds the events be naturally positioned and create real height */ -.fc-time-grid .fc-content-skeleton { - position: static; -} - -/* in case there are no events, we still want some height */ -.fc-time-grid .fc-content-skeleton table { - height: 4em; -} - -/* kill the horizontal spacing made by the event container. event margins will be done below */ -.fc-time-grid .fc-event-container { - margin: 0 !important; -} - - -/* TimeGrid *Event* Restyling ---------------------------------------------------------------------------------------------------*/ - -/* naturally position events, vertically stacking them */ -.fc-time-grid .fc-event { - position: static !important; - margin: 3px 2px !important; -} - -/* for events that continue to a future day, give the bottom border back */ -.fc-time-grid .fc-event.fc-not-end { - border-bottom-width: 1px !important; -} - -/* indicate the event continues via "..." text */ -.fc-time-grid .fc-event.fc-not-end:after { - content: "..."; -} - -/* for events that are continuations from previous days, give the top border back */ -.fc-time-grid .fc-event.fc-not-start { - border-top-width: 1px !important; -} - -/* indicate the event is a continuation via "..." text */ -.fc-time-grid .fc-event.fc-not-start:before { - content: "..."; -} - -/* time */ - -/* undo a previous declaration and let the time text span to a second line */ -.fc-time-grid .fc-event .fc-time { - white-space: normal !important; -} - -/* hide the the time that is normally displayed... */ -.fc-time-grid .fc-event .fc-time span { - display: none; -} - -/* ...replace it with a more verbose version (includes AM/PM) stored in an html attribute */ -.fc-time-grid .fc-event .fc-time:after { - content: attr(data-full); -} - - -/* Vertical Scroller & Containers ---------------------------------------------------------------------------------------------------*/ - -/* kill the scrollbars and allow natural height */ -.fc-scroller, -.fc-day-grid-container, /* these divs might be assigned height, which we need to cleared */ -.fc-time-grid-container { /* */ - overflow: visible !important; - height: auto !important; -} - -/* kill the horizontal border/padding used to compensate for scrollbars */ -.fc-row { - border: 0 !important; - margin: 0 !important; -} - - -/* Button Controls ---------------------------------------------------------------------------------------------------*/ - -.fc-button-group, -.fc button { - display: none; /* don't display any button-related controls */ -} diff --git a/assets/plugins/iCheck/all.css b/assets/plugins/iCheck/all.css deleted file mode 100644 index 6439b742..00000000 --- a/assets/plugins/iCheck/all.css +++ /dev/null @@ -1,61 +0,0 @@ -/* iCheck plugin skins ------------------------------------ */ -@import url("minimal/_all.css"); -/* -@import url("minimal/minimal.css"); -@import url("minimal/red.css"); -@import url("minimal/green.css"); -@import url("minimal/blue.css"); -@import url("minimal/aero.css"); -@import url("minimal/grey.css"); -@import url("minimal/orange.css"); -@import url("minimal/yellow.css"); -@import url("minimal/pink.css"); -@import url("minimal/purple.css"); -*/ - -@import url("square/_all.css"); -/* -@import url("square/square.css"); -@import url("square/red.css"); -@import url("square/green.css"); -@import url("square/blue.css"); -@import url("square/aero.css"); -@import url("square/grey.css"); -@import url("square/orange.css"); -@import url("square/yellow.css"); -@import url("square/pink.css"); -@import url("square/purple.css"); -*/ - -@import url("flat/_all.css"); -/* -@import url("flat/flat.css"); -@import url("flat/red.css"); -@import url("flat/green.css"); -@import url("flat/blue.css"); -@import url("flat/aero.css"); -@import url("flat/grey.css"); -@import url("flat/orange.css"); -@import url("flat/yellow.css"); -@import url("flat/pink.css"); -@import url("flat/purple.css"); -*/ - -@import url("line/_all.css"); -/* -@import url("line/line.css"); -@import url("line/red.css"); -@import url("line/green.css"); -@import url("line/blue.css"); -@import url("line/aero.css"); -@import url("line/grey.css"); -@import url("line/orange.css"); -@import url("line/yellow.css"); -@import url("line/pink.css"); -@import url("line/purple.css"); -*/ - -@import url("polaris/polaris.css"); - -@import url("futurico/futurico.css"); \ No newline at end of file diff --git a/assets/plugins/iCheck/flat/_all.css b/assets/plugins/iCheck/flat/_all.css deleted file mode 100644 index 21647b50..00000000 --- a/assets/plugins/iCheck/flat/_all.css +++ /dev/null @@ -1,560 +0,0 @@ -/* iCheck plugin Flat skin ------------------------------------ */ -.icheckbox_flat, -.iradio_flat { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 20px; - height: 20px; - background: url(flat.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_flat { - background-position: 0 0; -} - .icheckbox_flat.checked { - background-position: -22px 0; - } - .icheckbox_flat.disabled { - background-position: -44px 0; - cursor: default; - } - .icheckbox_flat.checked.disabled { - background-position: -66px 0; - } - -.iradio_flat { - background-position: -88px 0; -} - .iradio_flat.checked { - background-position: -110px 0; - } - .iradio_flat.disabled { - background-position: -132px 0; - cursor: default; - } - .iradio_flat.checked.disabled { - background-position: -154px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_flat, - .iradio_flat { - background-image: url(flat@2x.png); - -webkit-background-size: 176px 22px; - background-size: 176px 22px; - } -} - -/* red */ -.icheckbox_flat-red, -.iradio_flat-red { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 20px; - height: 20px; - background: url(red.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_flat-red { - background-position: 0 0; -} - .icheckbox_flat-red.checked { - background-position: -22px 0; - } - .icheckbox_flat-red.disabled { - background-position: -44px 0; - cursor: default; - } - .icheckbox_flat-red.checked.disabled { - background-position: -66px 0; - } - -.iradio_flat-red { - background-position: -88px 0; -} - .iradio_flat-red.checked { - background-position: -110px 0; - } - .iradio_flat-red.disabled { - background-position: -132px 0; - cursor: default; - } - .iradio_flat-red.checked.disabled { - background-position: -154px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_flat-red, - .iradio_flat-red { - background-image: url(red@2x.png); - -webkit-background-size: 176px 22px; - background-size: 176px 22px; - } -} - -/* green */ -.icheckbox_flat-green, -.iradio_flat-green { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 20px; - height: 20px; - background: url(green.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_flat-green { - background-position: 0 0; -} - .icheckbox_flat-green.checked { - background-position: -22px 0; - } - .icheckbox_flat-green.disabled { - background-position: -44px 0; - cursor: default; - } - .icheckbox_flat-green.checked.disabled { - background-position: -66px 0; - } - -.iradio_flat-green { - background-position: -88px 0; -} - .iradio_flat-green.checked { - background-position: -110px 0; - } - .iradio_flat-green.disabled { - background-position: -132px 0; - cursor: default; - } - .iradio_flat-green.checked.disabled { - background-position: -154px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_flat-green, - .iradio_flat-green { - background-image: url(green@2x.png); - -webkit-background-size: 176px 22px; - background-size: 176px 22px; - } -} - -/* blue */ -.icheckbox_flat-blue, -.iradio_flat-blue { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 20px; - height: 20px; - background: url(blue.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_flat-blue { - background-position: 0 0; -} - .icheckbox_flat-blue.checked { - background-position: -22px 0; - } - .icheckbox_flat-blue.disabled { - background-position: -44px 0; - cursor: default; - } - .icheckbox_flat-blue.checked.disabled { - background-position: -66px 0; - } - -.iradio_flat-blue { - background-position: -88px 0; -} - .iradio_flat-blue.checked { - background-position: -110px 0; - } - .iradio_flat-blue.disabled { - background-position: -132px 0; - cursor: default; - } - .iradio_flat-blue.checked.disabled { - background-position: -154px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_flat-blue, - .iradio_flat-blue { - background-image: url(blue@2x.png); - -webkit-background-size: 176px 22px; - background-size: 176px 22px; - } -} - -/* aero */ -.icheckbox_flat-aero, -.iradio_flat-aero { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 20px; - height: 20px; - background: url(aero.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_flat-aero { - background-position: 0 0; -} - .icheckbox_flat-aero.checked { - background-position: -22px 0; - } - .icheckbox_flat-aero.disabled { - background-position: -44px 0; - cursor: default; - } - .icheckbox_flat-aero.checked.disabled { - background-position: -66px 0; - } - -.iradio_flat-aero { - background-position: -88px 0; -} - .iradio_flat-aero.checked { - background-position: -110px 0; - } - .iradio_flat-aero.disabled { - background-position: -132px 0; - cursor: default; - } - .iradio_flat-aero.checked.disabled { - background-position: -154px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_flat-aero, - .iradio_flat-aero { - background-image: url(aero@2x.png); - -webkit-background-size: 176px 22px; - background-size: 176px 22px; - } -} - -/* grey */ -.icheckbox_flat-grey, -.iradio_flat-grey { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 20px; - height: 20px; - background: url(grey.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_flat-grey { - background-position: 0 0; -} - .icheckbox_flat-grey.checked { - background-position: -22px 0; - } - .icheckbox_flat-grey.disabled { - background-position: -44px 0; - cursor: default; - } - .icheckbox_flat-grey.checked.disabled { - background-position: -66px 0; - } - -.iradio_flat-grey { - background-position: -88px 0; -} - .iradio_flat-grey.checked { - background-position: -110px 0; - } - .iradio_flat-grey.disabled { - background-position: -132px 0; - cursor: default; - } - .iradio_flat-grey.checked.disabled { - background-position: -154px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_flat-grey, - .iradio_flat-grey { - background-image: url(grey@2x.png); - -webkit-background-size: 176px 22px; - background-size: 176px 22px; - } -} - -/* orange */ -.icheckbox_flat-orange, -.iradio_flat-orange { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 20px; - height: 20px; - background: url(orange.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_flat-orange { - background-position: 0 0; -} - .icheckbox_flat-orange.checked { - background-position: -22px 0; - } - .icheckbox_flat-orange.disabled { - background-position: -44px 0; - cursor: default; - } - .icheckbox_flat-orange.checked.disabled { - background-position: -66px 0; - } - -.iradio_flat-orange { - background-position: -88px 0; -} - .iradio_flat-orange.checked { - background-position: -110px 0; - } - .iradio_flat-orange.disabled { - background-position: -132px 0; - cursor: default; - } - .iradio_flat-orange.checked.disabled { - background-position: -154px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_flat-orange, - .iradio_flat-orange { - background-image: url(orange@2x.png); - -webkit-background-size: 176px 22px; - background-size: 176px 22px; - } -} - -/* yellow */ -.icheckbox_flat-yellow, -.iradio_flat-yellow { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 20px; - height: 20px; - background: url(yellow.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_flat-yellow { - background-position: 0 0; -} - .icheckbox_flat-yellow.checked { - background-position: -22px 0; - } - .icheckbox_flat-yellow.disabled { - background-position: -44px 0; - cursor: default; - } - .icheckbox_flat-yellow.checked.disabled { - background-position: -66px 0; - } - -.iradio_flat-yellow { - background-position: -88px 0; -} - .iradio_flat-yellow.checked { - background-position: -110px 0; - } - .iradio_flat-yellow.disabled { - background-position: -132px 0; - cursor: default; - } - .iradio_flat-yellow.checked.disabled { - background-position: -154px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_flat-yellow, - .iradio_flat-yellow { - background-image: url(yellow@2x.png); - -webkit-background-size: 176px 22px; - background-size: 176px 22px; - } -} - -/* pink */ -.icheckbox_flat-pink, -.iradio_flat-pink { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 20px; - height: 20px; - background: url(pink.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_flat-pink { - background-position: 0 0; -} - .icheckbox_flat-pink.checked { - background-position: -22px 0; - } - .icheckbox_flat-pink.disabled { - background-position: -44px 0; - cursor: default; - } - .icheckbox_flat-pink.checked.disabled { - background-position: -66px 0; - } - -.iradio_flat-pink { - background-position: -88px 0; -} - .iradio_flat-pink.checked { - background-position: -110px 0; - } - .iradio_flat-pink.disabled { - background-position: -132px 0; - cursor: default; - } - .iradio_flat-pink.checked.disabled { - background-position: -154px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_flat-pink, - .iradio_flat-pink { - background-image: url(pink@2x.png); - -webkit-background-size: 176px 22px; - background-size: 176px 22px; - } -} - -/* purple */ -.icheckbox_flat-purple, -.iradio_flat-purple { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 20px; - height: 20px; - background: url(purple.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_flat-purple { - background-position: 0 0; -} - .icheckbox_flat-purple.checked { - background-position: -22px 0; - } - .icheckbox_flat-purple.disabled { - background-position: -44px 0; - cursor: default; - } - .icheckbox_flat-purple.checked.disabled { - background-position: -66px 0; - } - -.iradio_flat-purple { - background-position: -88px 0; -} - .iradio_flat-purple.checked { - background-position: -110px 0; - } - .iradio_flat-purple.disabled { - background-position: -132px 0; - cursor: default; - } - .iradio_flat-purple.checked.disabled { - background-position: -154px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_flat-purple, - .iradio_flat-purple { - background-image: url(purple@2x.png); - -webkit-background-size: 176px 22px; - background-size: 176px 22px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/flat/aero.css b/assets/plugins/iCheck/flat/aero.css deleted file mode 100644 index 98fd65c8..00000000 --- a/assets/plugins/iCheck/flat/aero.css +++ /dev/null @@ -1,56 +0,0 @@ -/* iCheck plugin Flat skin, aero ------------------------------------ */ -.icheckbox_flat-aero, -.iradio_flat-aero { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 20px; - height: 20px; - background: url(aero.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_flat-aero { - background-position: 0 0; -} - .icheckbox_flat-aero.checked { - background-position: -22px 0; - } - .icheckbox_flat-aero.disabled { - background-position: -44px 0; - cursor: default; - } - .icheckbox_flat-aero.checked.disabled { - background-position: -66px 0; - } - -.iradio_flat-aero { - background-position: -88px 0; -} - .iradio_flat-aero.checked { - background-position: -110px 0; - } - .iradio_flat-aero.disabled { - background-position: -132px 0; - cursor: default; - } - .iradio_flat-aero.checked.disabled { - background-position: -154px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_flat-aero, - .iradio_flat-aero { - background-image: url(aero@2x.png); - -webkit-background-size: 176px 22px; - background-size: 176px 22px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/flat/aero.png b/assets/plugins/iCheck/flat/aero.png deleted file mode 100644 index f4277aa4..00000000 Binary files a/assets/plugins/iCheck/flat/aero.png and /dev/null differ diff --git a/assets/plugins/iCheck/flat/aero@2x.png b/assets/plugins/iCheck/flat/aero@2x.png deleted file mode 100644 index a9a74945..00000000 Binary files a/assets/plugins/iCheck/flat/aero@2x.png and /dev/null differ diff --git a/assets/plugins/iCheck/flat/blue.css b/assets/plugins/iCheck/flat/blue.css deleted file mode 100644 index 07836749..00000000 --- a/assets/plugins/iCheck/flat/blue.css +++ /dev/null @@ -1,56 +0,0 @@ -/* iCheck plugin Flat skin, blue ------------------------------------ */ -.icheckbox_flat-blue, -.iradio_flat-blue { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 20px; - height: 20px; - background: url(blue.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_flat-blue { - background-position: 0 0; -} - .icheckbox_flat-blue.checked { - background-position: -22px 0; - } - .icheckbox_flat-blue.disabled { - background-position: -44px 0; - cursor: default; - } - .icheckbox_flat-blue.checked.disabled { - background-position: -66px 0; - } - -.iradio_flat-blue { - background-position: -88px 0; -} - .iradio_flat-blue.checked { - background-position: -110px 0; - } - .iradio_flat-blue.disabled { - background-position: -132px 0; - cursor: default; - } - .iradio_flat-blue.checked.disabled { - background-position: -154px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_flat-blue, - .iradio_flat-blue { - background-image: url(blue@2x.png); - -webkit-background-size: 176px 22px; - background-size: 176px 22px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/flat/blue.png b/assets/plugins/iCheck/flat/blue.png deleted file mode 100644 index 4b6ef982..00000000 Binary files a/assets/plugins/iCheck/flat/blue.png and /dev/null differ diff --git a/assets/plugins/iCheck/flat/blue@2x.png b/assets/plugins/iCheck/flat/blue@2x.png deleted file mode 100644 index d52da057..00000000 Binary files a/assets/plugins/iCheck/flat/blue@2x.png and /dev/null differ diff --git a/assets/plugins/iCheck/flat/flat.css b/assets/plugins/iCheck/flat/flat.css deleted file mode 100644 index 418620ee..00000000 --- a/assets/plugins/iCheck/flat/flat.css +++ /dev/null @@ -1,56 +0,0 @@ -/* iCheck plugin flat skin, black ------------------------------------ */ -.icheckbox_flat, -.iradio_flat { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 20px; - height: 20px; - background: url(flat.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_flat { - background-position: 0 0; -} - .icheckbox_flat.checked { - background-position: -22px 0; - } - .icheckbox_flat.disabled { - background-position: -44px 0; - cursor: default; - } - .icheckbox_flat.checked.disabled { - background-position: -66px 0; - } - -.iradio_flat { - background-position: -88px 0; -} - .iradio_flat.checked { - background-position: -110px 0; - } - .iradio_flat.disabled { - background-position: -132px 0; - cursor: default; - } - .iradio_flat.checked.disabled { - background-position: -154px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_flat, - .iradio_flat { - background-image: url(flat@2x.png); - -webkit-background-size: 176px 22px; - background-size: 176px 22px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/flat/flat.png b/assets/plugins/iCheck/flat/flat.png deleted file mode 100644 index 15af826e..00000000 Binary files a/assets/plugins/iCheck/flat/flat.png and /dev/null differ diff --git a/assets/plugins/iCheck/flat/flat@2x.png b/assets/plugins/iCheck/flat/flat@2x.png deleted file mode 100644 index e70e438c..00000000 Binary files a/assets/plugins/iCheck/flat/flat@2x.png and /dev/null differ diff --git a/assets/plugins/iCheck/flat/green.css b/assets/plugins/iCheck/flat/green.css deleted file mode 100644 index c9d17c16..00000000 --- a/assets/plugins/iCheck/flat/green.css +++ /dev/null @@ -1,56 +0,0 @@ -/* iCheck plugin Flat skin, green ------------------------------------ */ -.icheckbox_flat-green, -.iradio_flat-green { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 20px; - height: 20px; - background: url(green.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_flat-green { - background-position: 0 0; -} - .icheckbox_flat-green.checked { - background-position: -22px 0; - } - .icheckbox_flat-green.disabled { - background-position: -44px 0; - cursor: default; - } - .icheckbox_flat-green.checked.disabled { - background-position: -66px 0; - } - -.iradio_flat-green { - background-position: -88px 0; -} - .iradio_flat-green.checked { - background-position: -110px 0; - } - .iradio_flat-green.disabled { - background-position: -132px 0; - cursor: default; - } - .iradio_flat-green.checked.disabled { - background-position: -154px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_flat-green, - .iradio_flat-green { - background-image: url(green@2x.png); - -webkit-background-size: 176px 22px; - background-size: 176px 22px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/flat/green.png b/assets/plugins/iCheck/flat/green.png deleted file mode 100644 index 6b303fbe..00000000 Binary files a/assets/plugins/iCheck/flat/green.png and /dev/null differ diff --git a/assets/plugins/iCheck/flat/green@2x.png b/assets/plugins/iCheck/flat/green@2x.png deleted file mode 100644 index 92b4411d..00000000 Binary files a/assets/plugins/iCheck/flat/green@2x.png and /dev/null differ diff --git a/assets/plugins/iCheck/flat/grey.css b/assets/plugins/iCheck/flat/grey.css deleted file mode 100644 index a451650e..00000000 --- a/assets/plugins/iCheck/flat/grey.css +++ /dev/null @@ -1,56 +0,0 @@ -/* iCheck plugin Flat skin, grey ------------------------------------ */ -.icheckbox_flat-grey, -.iradio_flat-grey { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 20px; - height: 20px; - background: url(grey.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_flat-grey { - background-position: 0 0; -} - .icheckbox_flat-grey.checked { - background-position: -22px 0; - } - .icheckbox_flat-grey.disabled { - background-position: -44px 0; - cursor: default; - } - .icheckbox_flat-grey.checked.disabled { - background-position: -66px 0; - } - -.iradio_flat-grey { - background-position: -88px 0; -} - .iradio_flat-grey.checked { - background-position: -110px 0; - } - .iradio_flat-grey.disabled { - background-position: -132px 0; - cursor: default; - } - .iradio_flat-grey.checked.disabled { - background-position: -154px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_flat-grey, - .iradio_flat-grey { - background-image: url(grey@2x.png); - -webkit-background-size: 176px 22px; - background-size: 176px 22px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/flat/grey.png b/assets/plugins/iCheck/flat/grey.png deleted file mode 100644 index c6e2873e..00000000 Binary files a/assets/plugins/iCheck/flat/grey.png and /dev/null differ diff --git a/assets/plugins/iCheck/flat/grey@2x.png b/assets/plugins/iCheck/flat/grey@2x.png deleted file mode 100644 index 0b47b1c6..00000000 Binary files a/assets/plugins/iCheck/flat/grey@2x.png and /dev/null differ diff --git a/assets/plugins/iCheck/flat/orange.css b/assets/plugins/iCheck/flat/orange.css deleted file mode 100644 index 8c9c9297..00000000 --- a/assets/plugins/iCheck/flat/orange.css +++ /dev/null @@ -1,56 +0,0 @@ -/* iCheck plugin Flat skin, orange ------------------------------------ */ -.icheckbox_flat-orange, -.iradio_flat-orange { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 20px; - height: 20px; - background: url(orange.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_flat-orange { - background-position: 0 0; -} - .icheckbox_flat-orange.checked { - background-position: -22px 0; - } - .icheckbox_flat-orange.disabled { - background-position: -44px 0; - cursor: default; - } - .icheckbox_flat-orange.checked.disabled { - background-position: -66px 0; - } - -.iradio_flat-orange { - background-position: -88px 0; -} - .iradio_flat-orange.checked { - background-position: -110px 0; - } - .iradio_flat-orange.disabled { - background-position: -132px 0; - cursor: default; - } - .iradio_flat-orange.checked.disabled { - background-position: -154px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_flat-orange, - .iradio_flat-orange { - background-image: url(orange@2x.png); - -webkit-background-size: 176px 22px; - background-size: 176px 22px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/flat/orange.png b/assets/plugins/iCheck/flat/orange.png deleted file mode 100644 index ec2532eb..00000000 Binary files a/assets/plugins/iCheck/flat/orange.png and /dev/null differ diff --git a/assets/plugins/iCheck/flat/orange@2x.png b/assets/plugins/iCheck/flat/orange@2x.png deleted file mode 100644 index 9350b506..00000000 Binary files a/assets/plugins/iCheck/flat/orange@2x.png and /dev/null differ diff --git a/assets/plugins/iCheck/flat/pink.css b/assets/plugins/iCheck/flat/pink.css deleted file mode 100644 index afa49566..00000000 --- a/assets/plugins/iCheck/flat/pink.css +++ /dev/null @@ -1,56 +0,0 @@ -/* iCheck plugin Flat skin, pink ------------------------------------ */ -.icheckbox_flat-pink, -.iradio_flat-pink { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 20px; - height: 20px; - background: url(pink.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_flat-pink { - background-position: 0 0; -} - .icheckbox_flat-pink.checked { - background-position: -22px 0; - } - .icheckbox_flat-pink.disabled { - background-position: -44px 0; - cursor: default; - } - .icheckbox_flat-pink.checked.disabled { - background-position: -66px 0; - } - -.iradio_flat-pink { - background-position: -88px 0; -} - .iradio_flat-pink.checked { - background-position: -110px 0; - } - .iradio_flat-pink.disabled { - background-position: -132px 0; - cursor: default; - } - .iradio_flat-pink.checked.disabled { - background-position: -154px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_flat-pink, - .iradio_flat-pink { - background-image: url(pink@2x.png); - -webkit-background-size: 176px 22px; - background-size: 176px 22px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/flat/pink.png b/assets/plugins/iCheck/flat/pink.png deleted file mode 100644 index 3e65d9dd..00000000 Binary files a/assets/plugins/iCheck/flat/pink.png and /dev/null differ diff --git a/assets/plugins/iCheck/flat/pink@2x.png b/assets/plugins/iCheck/flat/pink@2x.png deleted file mode 100644 index 281ba06b..00000000 Binary files a/assets/plugins/iCheck/flat/pink@2x.png and /dev/null differ diff --git a/assets/plugins/iCheck/flat/purple.css b/assets/plugins/iCheck/flat/purple.css deleted file mode 100644 index a9760b36..00000000 --- a/assets/plugins/iCheck/flat/purple.css +++ /dev/null @@ -1,56 +0,0 @@ -/* iCheck plugin Flat skin, purple ------------------------------------ */ -.icheckbox_flat-purple, -.iradio_flat-purple { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 20px; - height: 20px; - background: url(purple.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_flat-purple { - background-position: 0 0; -} - .icheckbox_flat-purple.checked { - background-position: -22px 0; - } - .icheckbox_flat-purple.disabled { - background-position: -44px 0; - cursor: default; - } - .icheckbox_flat-purple.checked.disabled { - background-position: -66px 0; - } - -.iradio_flat-purple { - background-position: -88px 0; -} - .iradio_flat-purple.checked { - background-position: -110px 0; - } - .iradio_flat-purple.disabled { - background-position: -132px 0; - cursor: default; - } - .iradio_flat-purple.checked.disabled { - background-position: -154px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_flat-purple, - .iradio_flat-purple { - background-image: url(purple@2x.png); - -webkit-background-size: 176px 22px; - background-size: 176px 22px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/flat/purple.png b/assets/plugins/iCheck/flat/purple.png deleted file mode 100644 index 3699fd58..00000000 Binary files a/assets/plugins/iCheck/flat/purple.png and /dev/null differ diff --git a/assets/plugins/iCheck/flat/purple@2x.png b/assets/plugins/iCheck/flat/purple@2x.png deleted file mode 100644 index 7f4be74a..00000000 Binary files a/assets/plugins/iCheck/flat/purple@2x.png and /dev/null differ diff --git a/assets/plugins/iCheck/flat/red.css b/assets/plugins/iCheck/flat/red.css deleted file mode 100644 index 34b71e47..00000000 --- a/assets/plugins/iCheck/flat/red.css +++ /dev/null @@ -1,56 +0,0 @@ -/* iCheck plugin Flat skin, red ------------------------------------ */ -.icheckbox_flat-red, -.iradio_flat-red { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 20px; - height: 20px; - background: url(red.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_flat-red { - background-position: 0 0; -} - .icheckbox_flat-red.checked { - background-position: -22px 0; - } - .icheckbox_flat-red.disabled { - background-position: -44px 0; - cursor: default; - } - .icheckbox_flat-red.checked.disabled { - background-position: -66px 0; - } - -.iradio_flat-red { - background-position: -88px 0; -} - .iradio_flat-red.checked { - background-position: -110px 0; - } - .iradio_flat-red.disabled { - background-position: -132px 0; - cursor: default; - } - .iradio_flat-red.checked.disabled { - background-position: -154px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_flat-red, - .iradio_flat-red { - background-image: url(red@2x.png); - -webkit-background-size: 176px 22px; - background-size: 176px 22px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/flat/red.png b/assets/plugins/iCheck/flat/red.png deleted file mode 100644 index 0d5ac381..00000000 Binary files a/assets/plugins/iCheck/flat/red.png and /dev/null differ diff --git a/assets/plugins/iCheck/flat/red@2x.png b/assets/plugins/iCheck/flat/red@2x.png deleted file mode 100644 index 38590d98..00000000 Binary files a/assets/plugins/iCheck/flat/red@2x.png and /dev/null differ diff --git a/assets/plugins/iCheck/flat/yellow.css b/assets/plugins/iCheck/flat/yellow.css deleted file mode 100644 index 96ae5b1f..00000000 --- a/assets/plugins/iCheck/flat/yellow.css +++ /dev/null @@ -1,56 +0,0 @@ -/* iCheck plugin Flat skin, yellow ------------------------------------ */ -.icheckbox_flat-yellow, -.iradio_flat-yellow { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 20px; - height: 20px; - background: url(yellow.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_flat-yellow { - background-position: 0 0; -} - .icheckbox_flat-yellow.checked { - background-position: -22px 0; - } - .icheckbox_flat-yellow.disabled { - background-position: -44px 0; - cursor: default; - } - .icheckbox_flat-yellow.checked.disabled { - background-position: -66px 0; - } - -.iradio_flat-yellow { - background-position: -88px 0; -} - .iradio_flat-yellow.checked { - background-position: -110px 0; - } - .iradio_flat-yellow.disabled { - background-position: -132px 0; - cursor: default; - } - .iradio_flat-yellow.checked.disabled { - background-position: -154px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_flat-yellow, - .iradio_flat-yellow { - background-image: url(yellow@2x.png); - -webkit-background-size: 176px 22px; - background-size: 176px 22px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/flat/yellow.png b/assets/plugins/iCheck/flat/yellow.png deleted file mode 100644 index 909dadc5..00000000 Binary files a/assets/plugins/iCheck/flat/yellow.png and /dev/null differ diff --git a/assets/plugins/iCheck/flat/yellow@2x.png b/assets/plugins/iCheck/flat/yellow@2x.png deleted file mode 100644 index 9fd5d733..00000000 Binary files a/assets/plugins/iCheck/flat/yellow@2x.png and /dev/null differ diff --git a/assets/plugins/iCheck/futurico/futurico.css b/assets/plugins/iCheck/futurico/futurico.css deleted file mode 100644 index 2654cf4f..00000000 --- a/assets/plugins/iCheck/futurico/futurico.css +++ /dev/null @@ -1,56 +0,0 @@ -/* iCheck plugin Futurico skin ------------------------------------ */ -.icheckbox_futurico, -.iradio_futurico { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 16px; - height: 17px; - background: url(futurico.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_futurico { - background-position: 0 0; -} - .icheckbox_futurico.checked { - background-position: -18px 0; - } - .icheckbox_futurico.disabled { - background-position: -36px 0; - cursor: default; - } - .icheckbox_futurico.checked.disabled { - background-position: -54px 0; - } - -.iradio_futurico { - background-position: -72px 0; -} - .iradio_futurico.checked { - background-position: -90px 0; - } - .iradio_futurico.disabled { - background-position: -108px 0; - cursor: default; - } - .iradio_futurico.checked.disabled { - background-position: -126px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_futurico, - .iradio_futurico { - background-image: url(futurico@2x.png); - -webkit-background-size: 144px 19px; - background-size: 144px 19px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/futurico/futurico.png b/assets/plugins/iCheck/futurico/futurico.png deleted file mode 100644 index 50d62b5d..00000000 Binary files a/assets/plugins/iCheck/futurico/futurico.png and /dev/null differ diff --git a/assets/plugins/iCheck/futurico/futurico@2x.png b/assets/plugins/iCheck/futurico/futurico@2x.png deleted file mode 100644 index f7eb45aa..00000000 Binary files a/assets/plugins/iCheck/futurico/futurico@2x.png and /dev/null differ diff --git a/assets/plugins/iCheck/icheck.js b/assets/plugins/iCheck/icheck.js deleted file mode 100644 index 4da1937a..00000000 --- a/assets/plugins/iCheck/icheck.js +++ /dev/null @@ -1,478 +0,0 @@ -/*! - * iCheck v1.0.1, http://git.io/arlzeA - * ================================= - * Powerful jQuery and Zepto plugin for checkboxes and radio buttons customization - * - * (c) 2013 Damir Sultanov, http://fronteed.com - * MIT Licensed - */ - -(function($) { - - // Cached vars - var _iCheck = 'iCheck', - _iCheckHelper = _iCheck + '-helper', - _checkbox = 'checkbox', - _radio = 'radio', - _checked = 'checked', - _unchecked = 'un' + _checked, - _disabled = 'disabled', - _determinate = 'determinate', - _indeterminate = 'in' + _determinate, - _update = 'update', - _type = 'type', - _click = 'click', - _touch = 'touchbegin.i touchend.i', - _add = 'addClass', - _remove = 'removeClass', - _callback = 'trigger', - _label = 'label', - _cursor = 'cursor', - _mobile = /ipad|iphone|ipod|android|blackberry|windows phone|opera mini|silk/i.test(navigator.userAgent); - - // Plugin init - $.fn[_iCheck] = function(options, fire) { - - // Walker - var handle = 'input[type="' + _checkbox + '"], input[type="' + _radio + '"]', - stack = $(), - walker = function(object) { - object.each(function() { - var self = $(this); - - if (self.is(handle)) { - stack = stack.add(self); - } else { - stack = stack.add(self.find(handle)); - } - }); - }; - - // Check if we should operate with some method - if (/^(check|uncheck|toggle|indeterminate|determinate|disable|enable|update|destroy)$/i.test(options)) { - - // Normalize method's name - options = options.toLowerCase(); - - // Find checkboxes and radio buttons - walker(this); - - return stack.each(function() { - var self = $(this); - - if (options == 'destroy') { - tidy(self, 'ifDestroyed'); - } else { - operate(self, true, options); - } - // Fire method's callback - if ($.isFunction(fire)) { - fire(); - } - }); - - // Customization - } else if (typeof options == 'object' || !options) { - - // Check if any options were passed - var settings = $.extend({ - checkedClass: _checked, - disabledClass: _disabled, - indeterminateClass: _indeterminate, - labelHover: true, - aria: false - }, options), - - selector = settings.handle, - hoverClass = settings.hoverClass || 'hover', - focusClass = settings.focusClass || 'focus', - activeClass = settings.activeClass || 'active', - labelHover = !!settings.labelHover, - labelHoverClass = settings.labelHoverClass || 'hover', - - // Setup clickable area - area = ('' + settings.increaseArea).replace('%', '') | 0; - - // Selector limit - if (selector == _checkbox || selector == _radio) { - handle = 'input[type="' + selector + '"]'; - } - // Clickable area limit - if (area < -50) { - area = -50; - } - // Walk around the selector - walker(this); - - return stack.each(function() { - var self = $(this); - - // If already customized - tidy(self); - - var node = this, - id = node.id, - - // Layer styles - offset = -area + '%', - size = 100 + (area * 2) + '%', - layer = { - position: 'absolute', - top: offset, - left: offset, - display: 'block', - width: size, - height: size, - margin: 0, - padding: 0, - background: '#fff', - border: 0, - opacity: 0 - }, - - // Choose how to hide input - hide = _mobile ? { - position: 'absolute', - visibility: 'hidden' - } : area ? layer : { - position: 'absolute', - opacity: 0 - }, - - // Get proper class - className = node[_type] == _checkbox ? settings.checkboxClass || 'i' + _checkbox : settings.radioClass || 'i' + _radio, - - // Find assigned labels - label = $(_label + '[for="' + id + '"]').add(self.closest(_label)), - - // Check ARIA option - aria = !!settings.aria, - - // Set ARIA placeholder - ariaID = _iCheck + '-' + Math.random().toString(36).replace('0.', ''), - - // Parent & helper - parent = '<div class="' + className + '" ' + (aria ? 'role="' + node[_type] + '" ' : ''), - helper; - - // Set ARIA "labelledby" - if (label.length && aria) { - label.each(function() { - parent += 'aria-labelledby="'; - - if (this.id) { - parent += this.id; - } else { - this.id = ariaID; - parent += ariaID; - } - - parent += '"'; - }); - } - // Wrap input - parent = self.wrap(parent + '/>')[_callback]('ifCreated').parent().append(settings.insert); - - // Layer addition - helper = $('<ins class="' + _iCheckHelper + '"/>').css(layer).appendTo(parent); - - // Finalize customization - self.data(_iCheck, {o: settings, s: self.attr('style')}).css(hide); - !!settings.inheritClass && parent[_add](node.className || ''); - !!settings.inheritID && id && parent.attr('id', _iCheck + '-' + id); - parent.css('position') == 'static' && parent.css('position', 'relative'); - operate(self, true, _update); - - // Label events - if (label.length) { - label.on(_click + '.i mouseover.i mouseout.i ' + _touch, function(event) { - var type = event[_type], - item = $(this); - - // Do nothing if input is disabled - if (!node[_disabled]) { - - // Click - if (type == _click) { - if ($(event.target).is('a')) { - return; - } - operate(self, false, true); - - // Hover state - } else if (labelHover) { - - // mouseout|touchend - if (/ut|nd/.test(type)) { - parent[_remove](hoverClass); - item[_remove](labelHoverClass); - } else { - parent[_add](hoverClass); - item[_add](labelHoverClass); - } - } - if (_mobile) { - event.stopPropagation(); - } else { - return false; - } - } - }); - } - // Input events - self.on(_click + '.i focus.i blur.i keyup.i keydown.i keypress.i', function(event) { - var type = event[_type], - key = event.keyCode; - - // Click - if (type == _click) { - return false; - - // Keydown - } else if (type == 'keydown' && key == 32) { - if (!(node[_type] == _radio && node[_checked])) { - if (node[_checked]) { - off(self, _checked); - } else { - on(self, _checked); - } - } - return false; - - // Keyup - } else if (type == 'keyup' && node[_type] == _radio) { - !node[_checked] && on(self, _checked); - - // Focus/blur - } else if (/us|ur/.test(type)) { - parent[type == 'blur' ? _remove : _add](focusClass); - } - }); - - // Helper events - helper.on(_click + ' mousedown mouseup mouseover mouseout ' + _touch, function(event) { - var type = event[_type], - - // mousedown|mouseup - toggle = /wn|up/.test(type) ? activeClass : hoverClass; - - // Do nothing if input is disabled - if (!node[_disabled]) { - - // Click - if (type == _click) { - operate(self, false, true); - - // Active and hover states - } else { - - // State is on - if (/wn|er|in/.test(type)) { - - // mousedown|mouseover|touchbegin - parent[_add](toggle); - - // State is off - } else { - parent[_remove](toggle + ' ' + activeClass); - } - // Label hover - if (label.length && labelHover && toggle == hoverClass) { - - // mouseout|touchend - label[/ut|nd/.test(type) ? _remove : _add](labelHoverClass); - } - } - if (_mobile) { - event.stopPropagation(); - } else { - return false; - } - } - }); - }); - } else { - return this; - } - }; - - // Do something with inputs - function operate(input, direct, method) { - var node = input[0], - state = /er/.test(method) ? _indeterminate : /bl/.test(method) ? _disabled : _checked, - active = method == _update ? { - checked: node[_checked], - disabled: node[_disabled], - indeterminate: input.attr(_indeterminate) == 'true' || input.attr(_determinate) == 'false' - } : node[state]; - - // Check, disable or indeterminate - if (/^(ch|di|in)/.test(method) && !active) { - on(input, state); - - // Uncheck, enable or determinate - } else if (/^(un|en|de)/.test(method) && active) { - off(input, state); - - // Update - } else if (method == _update) { - - // Handle states - for (var state in active) { - if (active[state]) { - on(input, state, true); - } else { - off(input, state, true); - } - } - } else if (!direct || method == 'toggle') { - - // Helper or label was clicked - if (!direct) { - input[_callback]('ifClicked'); - } - // Toggle checked state - if (active) { - if (node[_type] !== _radio) { - off(input, state); - } - } else { - on(input, state); - } - } - } - // Add checked, disabled or indeterminate state - function on(input, state, keep) { - var node = input[0], - parent = input.parent(), - checked = state == _checked, - indeterminate = state == _indeterminate, - disabled = state == _disabled, - callback = indeterminate ? _determinate : checked ? _unchecked : 'enabled', - regular = option(input, callback + capitalize(node[_type])), - specific = option(input, state + capitalize(node[_type])); - - // Prevent unnecessary actions - if (node[state] !== true) { - - // Toggle assigned radio buttons - if (!keep && state == _checked && node[_type] == _radio && node.name) { - var form = input.closest('form'), - inputs = 'input[name="' + node.name + '"]'; - - inputs = form.length ? form.find(inputs) : $(inputs); - - inputs.each(function() { - if (this !== node && $(this).data(_iCheck)) { - off($(this), state); - } - }); - } - // Indeterminate state - if (indeterminate) { - - // Add indeterminate state - node[state] = true; - - // Remove checked state - if (node[_checked]) { - off(input, _checked, 'force'); - } - // Checked or disabled state - } else { - - // Add checked or disabled state - if (!keep) { - node[state] = true; - } - // Remove indeterminate state - if (checked && node[_indeterminate]) { - off(input, _indeterminate, false); - } - } - // Trigger callbacks - callbacks(input, checked, state, keep); - } - // Add proper cursor - if (node[_disabled] && !!option(input, _cursor, true)) { - parent.find('.' + _iCheckHelper).css(_cursor, 'default'); - } - // Add state class - parent[_add](specific || option(input, state) || ''); - - // Set ARIA attribute - disabled ? parent.attr('aria-disabled', 'true') : parent.attr('aria-checked', indeterminate ? 'mixed' : 'true'); - - // Remove regular state class - parent[_remove](regular || option(input, callback) || ''); - } - // Remove checked, disabled or indeterminate state - function off(input, state, keep) { - var node = input[0], - parent = input.parent(), - checked = state == _checked, - indeterminate = state == _indeterminate, - disabled = state == _disabled, - callback = indeterminate ? _determinate : checked ? _unchecked : 'enabled', - regular = option(input, callback + capitalize(node[_type])), - specific = option(input, state + capitalize(node[_type])); - - // Prevent unnecessary actions - if (node[state] !== false) { - - // Toggle state - if (indeterminate || !keep || keep == 'force') { - node[state] = false; - } - // Trigger callbacks - callbacks(input, checked, callback, keep); - } - // Add proper cursor - if (!node[_disabled] && !!option(input, _cursor, true)) { - parent.find('.' + _iCheckHelper).css(_cursor, 'pointer'); - } - // Remove state class - parent[_remove](specific || option(input, state) || ''); - - // Set ARIA attribute - disabled ? parent.attr('aria-disabled', 'false') : parent.attr('aria-checked', 'false'); - - // Add regular state class - parent[_add](regular || option(input, callback) || ''); - } - // Remove all traces - function tidy(input, callback) { - if (input.data(_iCheck)) { - - // Remove everything except input - input.parent().html(input.attr('style', input.data(_iCheck).s || '')); - - // Callback - if (callback) { - input[_callback](callback); - } - // Unbind events - input.off('.i').unwrap(); - $(_label + '[for="' + input[0].id + '"]').add(input.closest(_label)).off('.i'); - } - } - // Get some option - function option(input, state, regular) { - if (input.data(_iCheck)) { - return input.data(_iCheck).o[state + (regular ? '' : 'Class')]; - } - } - // Capitalize some string - function capitalize(string) { - return string.charAt(0).toUpperCase() + string.slice(1); - } - // Executable handlers - function callbacks(input, checked, callback, keep) { - if (!keep) { - if (checked) { - input[_callback]('ifToggled'); - } - input[_callback]('ifChanged')[_callback]('if' + capitalize(callback)); - } - } -})(window.jQuery || window.Zepto); diff --git a/assets/plugins/iCheck/icheck.min.js b/assets/plugins/iCheck/icheck.min.js deleted file mode 100644 index d2720ed0..00000000 --- a/assets/plugins/iCheck/icheck.min.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! iCheck v1.0.1 by Damir Sultanov, http://git.io/arlzeA, MIT Licensed */ -(function(h){function F(a,b,d){var c=a[0],e=/er/.test(d)?m:/bl/.test(d)?s:l,f=d==H?{checked:c[l],disabled:c[s],indeterminate:"true"==a.attr(m)||"false"==a.attr(w)}:c[e];if(/^(ch|di|in)/.test(d)&&!f)D(a,e);else if(/^(un|en|de)/.test(d)&&f)t(a,e);else if(d==H)for(e in f)f[e]?D(a,e,!0):t(a,e,!0);else if(!b||"toggle"==d){if(!b)a[p]("ifClicked");f?c[n]!==u&&t(a,e):D(a,e)}}function D(a,b,d){var c=a[0],e=a.parent(),f=b==l,A=b==m,B=b==s,K=A?w:f?E:"enabled",p=k(a,K+x(c[n])),N=k(a,b+x(c[n]));if(!0!==c[b]){if(!d&& -b==l&&c[n]==u&&c.name){var C=a.closest("form"),r='input[name="'+c.name+'"]',r=C.length?C.find(r):h(r);r.each(function(){this!==c&&h(this).data(q)&&t(h(this),b)})}A?(c[b]=!0,c[l]&&t(a,l,"force")):(d||(c[b]=!0),f&&c[m]&&t(a,m,!1));L(a,f,b,d)}c[s]&&k(a,y,!0)&&e.find("."+I).css(y,"default");e[v](N||k(a,b)||"");B?e.attr("aria-disabled","true"):e.attr("aria-checked",A?"mixed":"true");e[z](p||k(a,K)||"")}function t(a,b,d){var c=a[0],e=a.parent(),f=b==l,h=b==m,q=b==s,p=h?w:f?E:"enabled",t=k(a,p+x(c[n])), -u=k(a,b+x(c[n]));if(!1!==c[b]){if(h||!d||"force"==d)c[b]=!1;L(a,f,p,d)}!c[s]&&k(a,y,!0)&&e.find("."+I).css(y,"pointer");e[z](u||k(a,b)||"");q?e.attr("aria-disabled","false"):e.attr("aria-checked","false");e[v](t||k(a,p)||"")}function M(a,b){if(a.data(q)){a.parent().html(a.attr("style",a.data(q).s||""));if(b)a[p](b);a.off(".i").unwrap();h(G+'[for="'+a[0].id+'"]').add(a.closest(G)).off(".i")}}function k(a,b,d){if(a.data(q))return a.data(q).o[b+(d?"":"Class")]}function x(a){return a.charAt(0).toUpperCase()+ -a.slice(1)}function L(a,b,d,c){if(!c){if(b)a[p]("ifToggled");a[p]("ifChanged")[p]("if"+x(d))}}var q="iCheck",I=q+"-helper",u="radio",l="checked",E="un"+l,s="disabled",w="determinate",m="in"+w,H="update",n="type",v="addClass",z="removeClass",p="trigger",G="label",y="cursor",J=/ipad|iphone|ipod|android|blackberry|windows phone|opera mini|silk/i.test(navigator.userAgent);h.fn[q]=function(a,b){var d='input[type="checkbox"], input[type="'+u+'"]',c=h(),e=function(a){a.each(function(){var a=h(this);c=a.is(d)? -c.add(a):c.add(a.find(d))})};if(/^(check|uncheck|toggle|indeterminate|determinate|disable|enable|update|destroy)$/i.test(a))return a=a.toLowerCase(),e(this),c.each(function(){var c=h(this);"destroy"==a?M(c,"ifDestroyed"):F(c,!0,a);h.isFunction(b)&&b()});if("object"!=typeof a&&a)return this;var f=h.extend({checkedClass:l,disabledClass:s,indeterminateClass:m,labelHover:!0,aria:!1},a),k=f.handle,B=f.hoverClass||"hover",x=f.focusClass||"focus",w=f.activeClass||"active",y=!!f.labelHover,C=f.labelHoverClass|| -"hover",r=(""+f.increaseArea).replace("%","")|0;if("checkbox"==k||k==u)d='input[type="'+k+'"]';-50>r&&(r=-50);e(this);return c.each(function(){var a=h(this);M(a);var c=this,b=c.id,e=-r+"%",d=100+2*r+"%",d={position:"absolute",top:e,left:e,display:"block",width:d,height:d,margin:0,padding:0,background:"#fff",border:0,opacity:0},e=J?{position:"absolute",visibility:"hidden"}:r?d:{position:"absolute",opacity:0},k="checkbox"==c[n]?f.checkboxClass||"icheckbox":f.radioClass||"i"+u,m=h(G+'[for="'+b+'"]').add(a.closest(G)), -A=!!f.aria,E=q+"-"+Math.random().toString(36).replace("0.",""),g='<div class="'+k+'" '+(A?'role="'+c[n]+'" ':"");m.length&&A&&m.each(function(){g+='aria-labelledby="';this.id?g+=this.id:(this.id=E,g+=E);g+='"'});g=a.wrap(g+"/>")[p]("ifCreated").parent().append(f.insert);d=h('<ins class="'+I+'"/>').css(d).appendTo(g);a.data(q,{o:f,s:a.attr("style")}).css(e);f.inheritClass&&g[v](c.className||"");f.inheritID&&b&&g.attr("id",q+"-"+b);"static"==g.css("position")&&g.css("position","relative");F(a,!0,H); -if(m.length)m.on("click.i mouseover.i mouseout.i touchbegin.i touchend.i",function(b){var d=b[n],e=h(this);if(!c[s]){if("click"==d){if(h(b.target).is("a"))return;F(a,!1,!0)}else y&&(/ut|nd/.test(d)?(g[z](B),e[z](C)):(g[v](B),e[v](C)));if(J)b.stopPropagation();else return!1}});a.on("click.i focus.i blur.i keyup.i keydown.i keypress.i",function(b){var d=b[n];b=b.keyCode;if("click"==d)return!1;if("keydown"==d&&32==b)return c[n]==u&&c[l]||(c[l]?t(a,l):D(a,l)),!1;if("keyup"==d&&c[n]==u)!c[l]&&D(a,l);else if(/us|ur/.test(d))g["blur"== -d?z:v](x)});d.on("click mousedown mouseup mouseover mouseout touchbegin.i touchend.i",function(b){var d=b[n],e=/wn|up/.test(d)?w:B;if(!c[s]){if("click"==d)F(a,!1,!0);else{if(/wn|er|in/.test(d))g[v](e);else g[z](e+" "+w);if(m.length&&y&&e==B)m[/ut|nd/.test(d)?z:v](C)}if(J)b.stopPropagation();else return!1}})})}})(window.jQuery||window.Zepto); diff --git a/assets/plugins/iCheck/line/_all.css b/assets/plugins/iCheck/line/_all.css deleted file mode 100644 index a18d0d90..00000000 --- a/assets/plugins/iCheck/line/_all.css +++ /dev/null @@ -1,740 +0,0 @@ -/* iCheck plugin Line skin ------------------------------------ */ -.icheckbox_line, -.iradio_line { - position: relative; - display: block; - margin: 0; - padding: 5px 15px 5px 38px; - font-size: 13px; - line-height: 17px; - color: #fff; - background: #000; - border: none; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - cursor: pointer; -} - .icheckbox_line .icheck_line-icon, - .iradio_line .icheck_line-icon { - position: absolute; - top: 50%; - left: 13px; - width: 13px; - height: 11px; - margin: -5px 0 0 0; - padding: 0; - overflow: hidden; - background: url(line.png) no-repeat; - border: none; - } - .icheckbox_line.hover, - .icheckbox_line.checked.hover, - .iradio_line.hover { - background: #444; - } - .icheckbox_line.checked, - .iradio_line.checked { - background: #000; - } - .icheckbox_line.checked .icheck_line-icon, - .iradio_line.checked .icheck_line-icon { - background-position: -15px 0; - } - .icheckbox_line.disabled, - .iradio_line.disabled { - background: #ccc; - cursor: default; - } - .icheckbox_line.disabled .icheck_line-icon, - .iradio_line.disabled .icheck_line-icon { - background-position: -30px 0; - } - .icheckbox_line.checked.disabled, - .iradio_line.checked.disabled { - background: #ccc; - } - .icheckbox_line.checked.disabled .icheck_line-icon, - .iradio_line.checked.disabled .icheck_line-icon { - background-position: -45px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_line .icheck_line-icon, - .iradio_line .icheck_line-icon { - background-image: url(line@2x.png); - -webkit-background-size: 60px 13px; - background-size: 60px 13px; - } -} - -/* red */ -.icheckbox_line-red, -.iradio_line-red { - position: relative; - display: block; - margin: 0; - padding: 5px 15px 5px 38px; - font-size: 13px; - line-height: 17px; - color: #fff; - background: #e56c69; - border: none; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - cursor: pointer; -} - .icheckbox_line-red .icheck_line-icon, - .iradio_line-red .icheck_line-icon { - position: absolute; - top: 50%; - left: 13px; - width: 13px; - height: 11px; - margin: -5px 0 0 0; - padding: 0; - overflow: hidden; - background: url(line.png) no-repeat; - border: none; - } - .icheckbox_line-red.hover, - .icheckbox_line-red.checked.hover, - .iradio_line-red.hover { - background: #E98582; - } - .icheckbox_line-red.checked, - .iradio_line-red.checked { - background: #e56c69; - } - .icheckbox_line-red.checked .icheck_line-icon, - .iradio_line-red.checked .icheck_line-icon { - background-position: -15px 0; - } - .icheckbox_line-red.disabled, - .iradio_line-red.disabled { - background: #F7D3D2; - cursor: default; - } - .icheckbox_line-red.disabled .icheck_line-icon, - .iradio_line-red.disabled .icheck_line-icon { - background-position: -30px 0; - } - .icheckbox_line-red.checked.disabled, - .iradio_line-red.checked.disabled { - background: #F7D3D2; - } - .icheckbox_line-red.checked.disabled .icheck_line-icon, - .iradio_line-red.checked.disabled .icheck_line-icon { - background-position: -45px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_line-red .icheck_line-icon, - .iradio_line-red .icheck_line-icon { - background-image: url(line@2x.png); - -webkit-background-size: 60px 13px; - background-size: 60px 13px; - } -} - -/* green */ -.icheckbox_line-green, -.iradio_line-green { - position: relative; - display: block; - margin: 0; - padding: 5px 15px 5px 38px; - font-size: 13px; - line-height: 17px; - color: #fff; - background: #1b7e5a; - border: none; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - cursor: pointer; -} - .icheckbox_line-green .icheck_line-icon, - .iradio_line-green .icheck_line-icon { - position: absolute; - top: 50%; - left: 13px; - width: 13px; - height: 11px; - margin: -5px 0 0 0; - padding: 0; - overflow: hidden; - background: url(line.png) no-repeat; - border: none; - } - .icheckbox_line-green.hover, - .icheckbox_line-green.checked.hover, - .iradio_line-green.hover { - background: #24AA7A; - } - .icheckbox_line-green.checked, - .iradio_line-green.checked { - background: #1b7e5a; - } - .icheckbox_line-green.checked .icheck_line-icon, - .iradio_line-green.checked .icheck_line-icon { - background-position: -15px 0; - } - .icheckbox_line-green.disabled, - .iradio_line-green.disabled { - background: #89E6C4; - cursor: default; - } - .icheckbox_line-green.disabled .icheck_line-icon, - .iradio_line-green.disabled .icheck_line-icon { - background-position: -30px 0; - } - .icheckbox_line-green.checked.disabled, - .iradio_line-green.checked.disabled { - background: #89E6C4; - } - .icheckbox_line-green.checked.disabled .icheck_line-icon, - .iradio_line-green.checked.disabled .icheck_line-icon { - background-position: -45px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_line-green .icheck_line-icon, - .iradio_line-green .icheck_line-icon { - background-image: url(line@2x.png); - -webkit-background-size: 60px 13px; - background-size: 60px 13px; - } -} - -/* blue */ -.icheckbox_line-blue, -.iradio_line-blue { - position: relative; - display: block; - margin: 0; - padding: 5px 15px 5px 38px; - font-size: 13px; - line-height: 17px; - color: #fff; - background: #2489c5; - border: none; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - cursor: pointer; -} - .icheckbox_line-blue .icheck_line-icon, - .iradio_line-blue .icheck_line-icon { - position: absolute; - top: 50%; - left: 13px; - width: 13px; - height: 11px; - margin: -5px 0 0 0; - padding: 0; - overflow: hidden; - background: url(line.png) no-repeat; - border: none; - } - .icheckbox_line-blue.hover, - .icheckbox_line-blue.checked.hover, - .iradio_line-blue.hover { - background: #3DA0DB; - } - .icheckbox_line-blue.checked, - .iradio_line-blue.checked { - background: #2489c5; - } - .icheckbox_line-blue.checked .icheck_line-icon, - .iradio_line-blue.checked .icheck_line-icon { - background-position: -15px 0; - } - .icheckbox_line-blue.disabled, - .iradio_line-blue.disabled { - background: #ADD7F0; - cursor: default; - } - .icheckbox_line-blue.disabled .icheck_line-icon, - .iradio_line-blue.disabled .icheck_line-icon { - background-position: -30px 0; - } - .icheckbox_line-blue.checked.disabled, - .iradio_line-blue.checked.disabled { - background: #ADD7F0; - } - .icheckbox_line-blue.checked.disabled .icheck_line-icon, - .iradio_line-blue.checked.disabled .icheck_line-icon { - background-position: -45px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_line-blue .icheck_line-icon, - .iradio_line-blue .icheck_line-icon { - background-image: url(line@2x.png); - -webkit-background-size: 60px 13px; - background-size: 60px 13px; - } -} - -/* aero */ -.icheckbox_line-aero, -.iradio_line-aero { - position: relative; - display: block; - margin: 0; - padding: 5px 15px 5px 38px; - font-size: 13px; - line-height: 17px; - color: #fff; - background: #9cc2cb; - border: none; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - cursor: pointer; -} - .icheckbox_line-aero .icheck_line-icon, - .iradio_line-aero .icheck_line-icon { - position: absolute; - top: 50%; - left: 13px; - width: 13px; - height: 11px; - margin: -5px 0 0 0; - padding: 0; - overflow: hidden; - background: url(line.png) no-repeat; - border: none; - } - .icheckbox_line-aero.hover, - .icheckbox_line-aero.checked.hover, - .iradio_line-aero.hover { - background: #B5D1D8; - } - .icheckbox_line-aero.checked, - .iradio_line-aero.checked { - background: #9cc2cb; - } - .icheckbox_line-aero.checked .icheck_line-icon, - .iradio_line-aero.checked .icheck_line-icon { - background-position: -15px 0; - } - .icheckbox_line-aero.disabled, - .iradio_line-aero.disabled { - background: #D2E4E8; - cursor: default; - } - .icheckbox_line-aero.disabled .icheck_line-icon, - .iradio_line-aero.disabled .icheck_line-icon { - background-position: -30px 0; - } - .icheckbox_line-aero.checked.disabled, - .iradio_line-aero.checked.disabled { - background: #D2E4E8; - } - .icheckbox_line-aero.checked.disabled .icheck_line-icon, - .iradio_line-aero.checked.disabled .icheck_line-icon { - background-position: -45px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_line-aero .icheck_line-icon, - .iradio_line-aero .icheck_line-icon { - background-image: url(line@2x.png); - -webkit-background-size: 60px 13px; - background-size: 60px 13px; - } -} - -/* grey */ -.icheckbox_line-grey, -.iradio_line-grey { - position: relative; - display: block; - margin: 0; - padding: 5px 15px 5px 38px; - font-size: 13px; - line-height: 17px; - color: #fff; - background: #73716e; - border: none; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - cursor: pointer; -} - .icheckbox_line-grey .icheck_line-icon, - .iradio_line-grey .icheck_line-icon { - position: absolute; - top: 50%; - left: 13px; - width: 13px; - height: 11px; - margin: -5px 0 0 0; - padding: 0; - overflow: hidden; - background: url(line.png) no-repeat; - border: none; - } - .icheckbox_line-grey.hover, - .icheckbox_line-grey.checked.hover, - .iradio_line-grey.hover { - background: #8B8986; - } - .icheckbox_line-grey.checked, - .iradio_line-grey.checked { - background: #73716e; - } - .icheckbox_line-grey.checked .icheck_line-icon, - .iradio_line-grey.checked .icheck_line-icon { - background-position: -15px 0; - } - .icheckbox_line-grey.disabled, - .iradio_line-grey.disabled { - background: #D5D4D3; - cursor: default; - } - .icheckbox_line-grey.disabled .icheck_line-icon, - .iradio_line-grey.disabled .icheck_line-icon { - background-position: -30px 0; - } - .icheckbox_line-grey.checked.disabled, - .iradio_line-grey.checked.disabled { - background: #D5D4D3; - } - .icheckbox_line-grey.checked.disabled .icheck_line-icon, - .iradio_line-grey.checked.disabled .icheck_line-icon { - background-position: -45px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_line-grey .icheck_line-icon, - .iradio_line-grey .icheck_line-icon { - background-image: url(line@2x.png); - -webkit-background-size: 60px 13px; - background-size: 60px 13px; - } -} - -/* orange */ -.icheckbox_line-orange, -.iradio_line-orange { - position: relative; - display: block; - margin: 0; - padding: 5px 15px 5px 38px; - font-size: 13px; - line-height: 17px; - color: #fff; - background: #f70; - border: none; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - cursor: pointer; -} - .icheckbox_line-orange .icheck_line-icon, - .iradio_line-orange .icheck_line-icon { - position: absolute; - top: 50%; - left: 13px; - width: 13px; - height: 11px; - margin: -5px 0 0 0; - padding: 0; - overflow: hidden; - background: url(line.png) no-repeat; - border: none; - } - .icheckbox_line-orange.hover, - .icheckbox_line-orange.checked.hover, - .iradio_line-orange.hover { - background: #FF9233; - } - .icheckbox_line-orange.checked, - .iradio_line-orange.checked { - background: #f70; - } - .icheckbox_line-orange.checked .icheck_line-icon, - .iradio_line-orange.checked .icheck_line-icon { - background-position: -15px 0; - } - .icheckbox_line-orange.disabled, - .iradio_line-orange.disabled { - background: #FFD6B3; - cursor: default; - } - .icheckbox_line-orange.disabled .icheck_line-icon, - .iradio_line-orange.disabled .icheck_line-icon { - background-position: -30px 0; - } - .icheckbox_line-orange.checked.disabled, - .iradio_line-orange.checked.disabled { - background: #FFD6B3; - } - .icheckbox_line-orange.checked.disabled .icheck_line-icon, - .iradio_line-orange.checked.disabled .icheck_line-icon { - background-position: -45px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_line-orange .icheck_line-icon, - .iradio_line-orange .icheck_line-icon { - background-image: url(line@2x.png); - -webkit-background-size: 60px 13px; - background-size: 60px 13px; - } -} - -/* yellow */ -.icheckbox_line-yellow, -.iradio_line-yellow { - position: relative; - display: block; - margin: 0; - padding: 5px 15px 5px 38px; - font-size: 13px; - line-height: 17px; - color: #fff; - background: #FFC414; - border: none; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - cursor: pointer; -} - .icheckbox_line-yellow .icheck_line-icon, - .iradio_line-yellow .icheck_line-icon { - position: absolute; - top: 50%; - left: 13px; - width: 13px; - height: 11px; - margin: -5px 0 0 0; - padding: 0; - overflow: hidden; - background: url(line.png) no-repeat; - border: none; - } - .icheckbox_line-yellow.hover, - .icheckbox_line-yellow.checked.hover, - .iradio_line-yellow.hover { - background: #FFD34F; - } - .icheckbox_line-yellow.checked, - .iradio_line-yellow.checked { - background: #FFC414; - } - .icheckbox_line-yellow.checked .icheck_line-icon, - .iradio_line-yellow.checked .icheck_line-icon { - background-position: -15px 0; - } - .icheckbox_line-yellow.disabled, - .iradio_line-yellow.disabled { - background: #FFE495; - cursor: default; - } - .icheckbox_line-yellow.disabled .icheck_line-icon, - .iradio_line-yellow.disabled .icheck_line-icon { - background-position: -30px 0; - } - .icheckbox_line-yellow.checked.disabled, - .iradio_line-yellow.checked.disabled { - background: #FFE495; - } - .icheckbox_line-yellow.checked.disabled .icheck_line-icon, - .iradio_line-yellow.checked.disabled .icheck_line-icon { - background-position: -45px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_line-yellow .icheck_line-icon, - .iradio_line-yellow .icheck_line-icon { - background-image: url(line@2x.png); - -webkit-background-size: 60px 13px; - background-size: 60px 13px; - } -} - -/* pink */ -.icheckbox_line-pink, -.iradio_line-pink { - position: relative; - display: block; - margin: 0; - padding: 5px 15px 5px 38px; - font-size: 13px; - line-height: 17px; - color: #fff; - background: #a77a94; - border: none; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - cursor: pointer; -} - .icheckbox_line-pink .icheck_line-icon, - .iradio_line-pink .icheck_line-icon { - position: absolute; - top: 50%; - left: 13px; - width: 13px; - height: 11px; - margin: -5px 0 0 0; - padding: 0; - overflow: hidden; - background: url(line.png) no-repeat; - border: none; - } - .icheckbox_line-pink.hover, - .icheckbox_line-pink.checked.hover, - .iradio_line-pink.hover { - background: #B995A9; - } - .icheckbox_line-pink.checked, - .iradio_line-pink.checked { - background: #a77a94; - } - .icheckbox_line-pink.checked .icheck_line-icon, - .iradio_line-pink.checked .icheck_line-icon { - background-position: -15px 0; - } - .icheckbox_line-pink.disabled, - .iradio_line-pink.disabled { - background: #E0D0DA; - cursor: default; - } - .icheckbox_line-pink.disabled .icheck_line-icon, - .iradio_line-pink.disabled .icheck_line-icon { - background-position: -30px 0; - } - .icheckbox_line-pink.checked.disabled, - .iradio_line-pink.checked.disabled { - background: #E0D0DA; - } - .icheckbox_line-pink.checked.disabled .icheck_line-icon, - .iradio_line-pink.checked.disabled .icheck_line-icon { - background-position: -45px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_line-pink .icheck_line-icon, - .iradio_line-pink .icheck_line-icon { - background-image: url(line@2x.png); - -webkit-background-size: 60px 13px; - background-size: 60px 13px; - } -} - -/* purple */ -.icheckbox_line-purple, -.iradio_line-purple { - position: relative; - display: block; - margin: 0; - padding: 5px 15px 5px 38px; - font-size: 13px; - line-height: 17px; - color: #fff; - background: #6a5a8c; - border: none; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - cursor: pointer; -} - .icheckbox_line-purple .icheck_line-icon, - .iradio_line-purple .icheck_line-icon { - position: absolute; - top: 50%; - left: 13px; - width: 13px; - height: 11px; - margin: -5px 0 0 0; - padding: 0; - overflow: hidden; - background: url(line.png) no-repeat; - border: none; - } - .icheckbox_line-purple.hover, - .icheckbox_line-purple.checked.hover, - .iradio_line-purple.hover { - background: #8677A7; - } - .icheckbox_line-purple.checked, - .iradio_line-purple.checked { - background: #6a5a8c; - } - .icheckbox_line-purple.checked .icheck_line-icon, - .iradio_line-purple.checked .icheck_line-icon { - background-position: -15px 0; - } - .icheckbox_line-purple.disabled, - .iradio_line-purple.disabled { - background: #D2CCDE; - cursor: default; - } - .icheckbox_line-purple.disabled .icheck_line-icon, - .iradio_line-purple.disabled .icheck_line-icon { - background-position: -30px 0; - } - .icheckbox_line-purple.checked.disabled, - .iradio_line-purple.checked.disabled { - background: #D2CCDE; - } - .icheckbox_line-purple.checked.disabled .icheck_line-icon, - .iradio_line-purple.checked.disabled .icheck_line-icon { - background-position: -45px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_line-purple .icheck_line-icon, - .iradio_line-purple .icheck_line-icon { - background-image: url(line@2x.png); - -webkit-background-size: 60px 13px; - background-size: 60px 13px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/line/aero.css b/assets/plugins/iCheck/line/aero.css deleted file mode 100644 index 44989a46..00000000 --- a/assets/plugins/iCheck/line/aero.css +++ /dev/null @@ -1,74 +0,0 @@ -/* iCheck plugin Line skin, aero ------------------------------------ */ -.icheckbox_line-aero, -.iradio_line-aero { - position: relative; - display: block; - margin: 0; - padding: 5px 15px 5px 38px; - font-size: 13px; - line-height: 17px; - color: #fff; - background: #9cc2cb; - border: none; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - cursor: pointer; -} - .icheckbox_line-aero .icheck_line-icon, - .iradio_line-aero .icheck_line-icon { - position: absolute; - top: 50%; - left: 13px; - width: 13px; - height: 11px; - margin: -5px 0 0 0; - padding: 0; - overflow: hidden; - background: url(line.png) no-repeat; - border: none; - } - .icheckbox_line-aero.hover, - .icheckbox_line-aero.checked.hover, - .iradio_line-aero.hover { - background: #B5D1D8; - } - .icheckbox_line-aero.checked, - .iradio_line-aero.checked { - background: #9cc2cb; - } - .icheckbox_line-aero.checked .icheck_line-icon, - .iradio_line-aero.checked .icheck_line-icon { - background-position: -15px 0; - } - .icheckbox_line-aero.disabled, - .iradio_line-aero.disabled { - background: #D2E4E8; - cursor: default; - } - .icheckbox_line-aero.disabled .icheck_line-icon, - .iradio_line-aero.disabled .icheck_line-icon { - background-position: -30px 0; - } - .icheckbox_line-aero.checked.disabled, - .iradio_line-aero.checked.disabled { - background: #D2E4E8; - } - .icheckbox_line-aero.checked.disabled .icheck_line-icon, - .iradio_line-aero.checked.disabled .icheck_line-icon { - background-position: -45px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_line-aero .icheck_line-icon, - .iradio_line-aero .icheck_line-icon { - background-image: url(line@2x.png); - -webkit-background-size: 60px 13px; - background-size: 60px 13px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/line/blue.css b/assets/plugins/iCheck/line/blue.css deleted file mode 100644 index 5c9c0a78..00000000 --- a/assets/plugins/iCheck/line/blue.css +++ /dev/null @@ -1,74 +0,0 @@ -/* iCheck plugin Line skin, blue ------------------------------------ */ -.icheckbox_line-blue, -.iradio_line-blue { - position: relative; - display: block; - margin: 0; - padding: 5px 15px 5px 38px; - font-size: 13px; - line-height: 17px; - color: #fff; - background: #2489c5; - border: none; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - cursor: pointer; -} - .icheckbox_line-blue .icheck_line-icon, - .iradio_line-blue .icheck_line-icon { - position: absolute; - top: 50%; - left: 13px; - width: 13px; - height: 11px; - margin: -5px 0 0 0; - padding: 0; - overflow: hidden; - background: url(line.png) no-repeat; - border: none; - } - .icheckbox_line-blue.hover, - .icheckbox_line-blue.checked.hover, - .iradio_line-blue.hover { - background: #3DA0DB; - } - .icheckbox_line-blue.checked, - .iradio_line-blue.checked { - background: #2489c5; - } - .icheckbox_line-blue.checked .icheck_line-icon, - .iradio_line-blue.checked .icheck_line-icon { - background-position: -15px 0; - } - .icheckbox_line-blue.disabled, - .iradio_line-blue.disabled { - background: #ADD7F0; - cursor: default; - } - .icheckbox_line-blue.disabled .icheck_line-icon, - .iradio_line-blue.disabled .icheck_line-icon { - background-position: -30px 0; - } - .icheckbox_line-blue.checked.disabled, - .iradio_line-blue.checked.disabled { - background: #ADD7F0; - } - .icheckbox_line-blue.checked.disabled .icheck_line-icon, - .iradio_line-blue.checked.disabled .icheck_line-icon { - background-position: -45px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_line-blue .icheck_line-icon, - .iradio_line-blue .icheck_line-icon { - background-image: url(line@2x.png); - -webkit-background-size: 60px 13px; - background-size: 60px 13px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/line/green.css b/assets/plugins/iCheck/line/green.css deleted file mode 100644 index 8bbe5140..00000000 --- a/assets/plugins/iCheck/line/green.css +++ /dev/null @@ -1,74 +0,0 @@ -/* iCheck plugin Line skin, green ------------------------------------ */ -.icheckbox_line-green, -.iradio_line-green { - position: relative; - display: block; - margin: 0; - padding: 5px 15px 5px 38px; - font-size: 13px; - line-height: 17px; - color: #fff; - background: #1b7e5a; - border: none; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - cursor: pointer; -} - .icheckbox_line-green .icheck_line-icon, - .iradio_line-green .icheck_line-icon { - position: absolute; - top: 50%; - left: 13px; - width: 13px; - height: 11px; - margin: -5px 0 0 0; - padding: 0; - overflow: hidden; - background: url(line.png) no-repeat; - border: none; - } - .icheckbox_line-green.hover, - .icheckbox_line-green.checked.hover, - .iradio_line-green.hover { - background: #24AA7A; - } - .icheckbox_line-green.checked, - .iradio_line-green.checked { - background: #1b7e5a; - } - .icheckbox_line-green.checked .icheck_line-icon, - .iradio_line-green.checked .icheck_line-icon { - background-position: -15px 0; - } - .icheckbox_line-green.disabled, - .iradio_line-green.disabled { - background: #89E6C4; - cursor: default; - } - .icheckbox_line-green.disabled .icheck_line-icon, - .iradio_line-green.disabled .icheck_line-icon { - background-position: -30px 0; - } - .icheckbox_line-green.checked.disabled, - .iradio_line-green.checked.disabled { - background: #89E6C4; - } - .icheckbox_line-green.checked.disabled .icheck_line-icon, - .iradio_line-green.checked.disabled .icheck_line-icon { - background-position: -45px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_line-green .icheck_line-icon, - .iradio_line-green .icheck_line-icon { - background-image: url(line@2x.png); - -webkit-background-size: 60px 13px; - background-size: 60px 13px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/line/grey.css b/assets/plugins/iCheck/line/grey.css deleted file mode 100644 index fc16a80e..00000000 --- a/assets/plugins/iCheck/line/grey.css +++ /dev/null @@ -1,74 +0,0 @@ -/* iCheck plugin Line skin, grey ------------------------------------ */ -.icheckbox_line-grey, -.iradio_line-grey { - position: relative; - display: block; - margin: 0; - padding: 5px 15px 5px 38px; - font-size: 13px; - line-height: 17px; - color: #fff; - background: #73716e; - border: none; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - cursor: pointer; -} - .icheckbox_line-grey .icheck_line-icon, - .iradio_line-grey .icheck_line-icon { - position: absolute; - top: 50%; - left: 13px; - width: 13px; - height: 11px; - margin: -5px 0 0 0; - padding: 0; - overflow: hidden; - background: url(line.png) no-repeat; - border: none; - } - .icheckbox_line-grey.hover, - .icheckbox_line-grey.checked.hover, - .iradio_line-grey.hover { - background: #8B8986; - } - .icheckbox_line-grey.checked, - .iradio_line-grey.checked { - background: #73716e; - } - .icheckbox_line-grey.checked .icheck_line-icon, - .iradio_line-grey.checked .icheck_line-icon { - background-position: -15px 0; - } - .icheckbox_line-grey.disabled, - .iradio_line-grey.disabled { - background: #D5D4D3; - cursor: default; - } - .icheckbox_line-grey.disabled .icheck_line-icon, - .iradio_line-grey.disabled .icheck_line-icon { - background-position: -30px 0; - } - .icheckbox_line-grey.checked.disabled, - .iradio_line-grey.checked.disabled { - background: #D5D4D3; - } - .icheckbox_line-grey.checked.disabled .icheck_line-icon, - .iradio_line-grey.checked.disabled .icheck_line-icon { - background-position: -45px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_line-grey .icheck_line-icon, - .iradio_line-grey .icheck_line-icon { - background-image: url(line@2x.png); - -webkit-background-size: 60px 13px; - background-size: 60px 13px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/line/line.css b/assets/plugins/iCheck/line/line.css deleted file mode 100644 index dbde8d4d..00000000 --- a/assets/plugins/iCheck/line/line.css +++ /dev/null @@ -1,74 +0,0 @@ -/* iCheck plugin Line skin, black ------------------------------------ */ -.icheckbox_line, -.iradio_line { - position: relative; - display: block; - margin: 0; - padding: 5px 15px 5px 38px; - font-size: 13px; - line-height: 17px; - color: #fff; - background: #000; - border: none; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - cursor: pointer; -} - .icheckbox_line .icheck_line-icon, - .iradio_line .icheck_line-icon { - position: absolute; - top: 50%; - left: 13px; - width: 13px; - height: 11px; - margin: -5px 0 0 0; - padding: 0; - overflow: hidden; - background: url(line.png) no-repeat; - border: none; - } - .icheckbox_line.hover, - .icheckbox_line.checked.hover, - .iradio_line.hover { - background: #444; - } - .icheckbox_line.checked, - .iradio_line.checked { - background: #000; - } - .icheckbox_line.checked .icheck_line-icon, - .iradio_line.checked .icheck_line-icon { - background-position: -15px 0; - } - .icheckbox_line.disabled, - .iradio_line.disabled { - background: #ccc; - cursor: default; - } - .icheckbox_line.disabled .icheck_line-icon, - .iradio_line.disabled .icheck_line-icon { - background-position: -30px 0; - } - .icheckbox_line.checked.disabled, - .iradio_line.checked.disabled { - background: #ccc; - } - .icheckbox_line.checked.disabled .icheck_line-icon, - .iradio_line.checked.disabled .icheck_line-icon { - background-position: -45px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_line .icheck_line-icon, - .iradio_line .icheck_line-icon { - background-image: url(line@2x.png); - -webkit-background-size: 60px 13px; - background-size: 60px 13px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/line/line.png b/assets/plugins/iCheck/line/line.png deleted file mode 100644 index d21d7a7b..00000000 Binary files a/assets/plugins/iCheck/line/line.png and /dev/null differ diff --git a/assets/plugins/iCheck/line/line@2x.png b/assets/plugins/iCheck/line/line@2x.png deleted file mode 100644 index 62900a2d..00000000 Binary files a/assets/plugins/iCheck/line/line@2x.png and /dev/null differ diff --git a/assets/plugins/iCheck/line/orange.css b/assets/plugins/iCheck/line/orange.css deleted file mode 100644 index 210f3340..00000000 --- a/assets/plugins/iCheck/line/orange.css +++ /dev/null @@ -1,74 +0,0 @@ -/* iCheck plugin Line skin, orange ------------------------------------ */ -.icheckbox_line-orange, -.iradio_line-orange { - position: relative; - display: block; - margin: 0; - padding: 5px 15px 5px 38px; - font-size: 13px; - line-height: 17px; - color: #fff; - background: #f70; - border: none; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - cursor: pointer; -} - .icheckbox_line-orange .icheck_line-icon, - .iradio_line-orange .icheck_line-icon { - position: absolute; - top: 50%; - left: 13px; - width: 13px; - height: 11px; - margin: -5px 0 0 0; - padding: 0; - overflow: hidden; - background: url(line.png) no-repeat; - border: none; - } - .icheckbox_line-orange.hover, - .icheckbox_line-orange.checked.hover, - .iradio_line-orange.hover { - background: #FF9233; - } - .icheckbox_line-orange.checked, - .iradio_line-orange.checked { - background: #f70; - } - .icheckbox_line-orange.checked .icheck_line-icon, - .iradio_line-orange.checked .icheck_line-icon { - background-position: -15px 0; - } - .icheckbox_line-orange.disabled, - .iradio_line-orange.disabled { - background: #FFD6B3; - cursor: default; - } - .icheckbox_line-orange.disabled .icheck_line-icon, - .iradio_line-orange.disabled .icheck_line-icon { - background-position: -30px 0; - } - .icheckbox_line-orange.checked.disabled, - .iradio_line-orange.checked.disabled { - background: #FFD6B3; - } - .icheckbox_line-orange.checked.disabled .icheck_line-icon, - .iradio_line-orange.checked.disabled .icheck_line-icon { - background-position: -45px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_line-orange .icheck_line-icon, - .iradio_line-orange .icheck_line-icon { - background-image: url(line@2x.png); - -webkit-background-size: 60px 13px; - background-size: 60px 13px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/line/pink.css b/assets/plugins/iCheck/line/pink.css deleted file mode 100644 index 44c9cea1..00000000 --- a/assets/plugins/iCheck/line/pink.css +++ /dev/null @@ -1,74 +0,0 @@ -/* iCheck plugin Line skin, pink ------------------------------------ */ -.icheckbox_line-pink, -.iradio_line-pink { - position: relative; - display: block; - margin: 0; - padding: 5px 15px 5px 38px; - font-size: 13px; - line-height: 17px; - color: #fff; - background: #a77a94; - border: none; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - cursor: pointer; -} - .icheckbox_line-pink .icheck_line-icon, - .iradio_line-pink .icheck_line-icon { - position: absolute; - top: 50%; - left: 13px; - width: 13px; - height: 11px; - margin: -5px 0 0 0; - padding: 0; - overflow: hidden; - background: url(line.png) no-repeat; - border: none; - } - .icheckbox_line-pink.hover, - .icheckbox_line-pink.checked.hover, - .iradio_line-pink.hover { - background: #B995A9; - } - .icheckbox_line-pink.checked, - .iradio_line-pink.checked { - background: #a77a94; - } - .icheckbox_line-pink.checked .icheck_line-icon, - .iradio_line-pink.checked .icheck_line-icon { - background-position: -15px 0; - } - .icheckbox_line-pink.disabled, - .iradio_line-pink.disabled { - background: #E0D0DA; - cursor: default; - } - .icheckbox_line-pink.disabled .icheck_line-icon, - .iradio_line-pink.disabled .icheck_line-icon { - background-position: -30px 0; - } - .icheckbox_line-pink.checked.disabled, - .iradio_line-pink.checked.disabled { - background: #E0D0DA; - } - .icheckbox_line-pink.checked.disabled .icheck_line-icon, - .iradio_line-pink.checked.disabled .icheck_line-icon { - background-position: -45px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_line-pink .icheck_line-icon, - .iradio_line-pink .icheck_line-icon { - background-image: url(line@2x.png); - -webkit-background-size: 60px 13px; - background-size: 60px 13px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/line/purple.css b/assets/plugins/iCheck/line/purple.css deleted file mode 100644 index be4c4e2b..00000000 --- a/assets/plugins/iCheck/line/purple.css +++ /dev/null @@ -1,74 +0,0 @@ -/* iCheck plugin Line skin, purple ------------------------------------ */ -.icheckbox_line-purple, -.iradio_line-purple { - position: relative; - display: block; - margin: 0; - padding: 5px 15px 5px 38px; - font-size: 13px; - line-height: 17px; - color: #fff; - background: #6a5a8c; - border: none; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - cursor: pointer; -} - .icheckbox_line-purple .icheck_line-icon, - .iradio_line-purple .icheck_line-icon { - position: absolute; - top: 50%; - left: 13px; - width: 13px; - height: 11px; - margin: -5px 0 0 0; - padding: 0; - overflow: hidden; - background: url(line.png) no-repeat; - border: none; - } - .icheckbox_line-purple.hover, - .icheckbox_line-purple.checked.hover, - .iradio_line-purple.hover { - background: #8677A7; - } - .icheckbox_line-purple.checked, - .iradio_line-purple.checked { - background: #6a5a8c; - } - .icheckbox_line-purple.checked .icheck_line-icon, - .iradio_line-purple.checked .icheck_line-icon { - background-position: -15px 0; - } - .icheckbox_line-purple.disabled, - .iradio_line-purple.disabled { - background: #D2CCDE; - cursor: default; - } - .icheckbox_line-purple.disabled .icheck_line-icon, - .iradio_line-purple.disabled .icheck_line-icon { - background-position: -30px 0; - } - .icheckbox_line-purple.checked.disabled, - .iradio_line-purple.checked.disabled { - background: #D2CCDE; - } - .icheckbox_line-purple.checked.disabled .icheck_line-icon, - .iradio_line-purple.checked.disabled .icheck_line-icon { - background-position: -45px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_line-purple .icheck_line-icon, - .iradio_line-purple .icheck_line-icon { - background-image: url(line@2x.png); - -webkit-background-size: 60px 13px; - background-size: 60px 13px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/line/red.css b/assets/plugins/iCheck/line/red.css deleted file mode 100644 index ebcd8bef..00000000 --- a/assets/plugins/iCheck/line/red.css +++ /dev/null @@ -1,74 +0,0 @@ -/* iCheck plugin Line skin, red ------------------------------------ */ -.icheckbox_line-red, -.iradio_line-red { - position: relative; - display: block; - margin: 0; - padding: 5px 15px 5px 38px; - font-size: 13px; - line-height: 17px; - color: #fff; - background: #e56c69; - border: none; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - cursor: pointer; -} - .icheckbox_line-red .icheck_line-icon, - .iradio_line-red .icheck_line-icon { - position: absolute; - top: 50%; - left: 13px; - width: 13px; - height: 11px; - margin: -5px 0 0 0; - padding: 0; - overflow: hidden; - background: url(line.png) no-repeat; - border: none; - } - .icheckbox_line-red.hover, - .icheckbox_line-red.checked.hover, - .iradio_line-red.hover { - background: #E98582; - } - .icheckbox_line-red.checked, - .iradio_line-red.checked { - background: #e56c69; - } - .icheckbox_line-red.checked .icheck_line-icon, - .iradio_line-red.checked .icheck_line-icon { - background-position: -15px 0; - } - .icheckbox_line-red.disabled, - .iradio_line-red.disabled { - background: #F7D3D2; - cursor: default; - } - .icheckbox_line-red.disabled .icheck_line-icon, - .iradio_line-red.disabled .icheck_line-icon { - background-position: -30px 0; - } - .icheckbox_line-red.checked.disabled, - .iradio_line-red.checked.disabled { - background: #F7D3D2; - } - .icheckbox_line-red.checked.disabled .icheck_line-icon, - .iradio_line-red.checked.disabled .icheck_line-icon { - background-position: -45px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_line-red .icheck_line-icon, - .iradio_line-red .icheck_line-icon { - background-image: url(line@2x.png); - -webkit-background-size: 60px 13px; - background-size: 60px 13px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/line/yellow.css b/assets/plugins/iCheck/line/yellow.css deleted file mode 100644 index 8e088714..00000000 --- a/assets/plugins/iCheck/line/yellow.css +++ /dev/null @@ -1,74 +0,0 @@ -/* iCheck plugin Line skin, yellow ------------------------------------ */ -.icheckbox_line-yellow, -.iradio_line-yellow { - position: relative; - display: block; - margin: 0; - padding: 5px 15px 5px 38px; - font-size: 13px; - line-height: 17px; - color: #fff; - background: #FFC414; - border: none; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - cursor: pointer; -} - .icheckbox_line-yellow .icheck_line-icon, - .iradio_line-yellow .icheck_line-icon { - position: absolute; - top: 50%; - left: 13px; - width: 13px; - height: 11px; - margin: -5px 0 0 0; - padding: 0; - overflow: hidden; - background: url(line.png) no-repeat; - border: none; - } - .icheckbox_line-yellow.hover, - .icheckbox_line-yellow.checked.hover, - .iradio_line-yellow.hover { - background: #FFD34F; - } - .icheckbox_line-yellow.checked, - .iradio_line-yellow.checked { - background: #FFC414; - } - .icheckbox_line-yellow.checked .icheck_line-icon, - .iradio_line-yellow.checked .icheck_line-icon { - background-position: -15px 0; - } - .icheckbox_line-yellow.disabled, - .iradio_line-yellow.disabled { - background: #FFE495; - cursor: default; - } - .icheckbox_line-yellow.disabled .icheck_line-icon, - .iradio_line-yellow.disabled .icheck_line-icon { - background-position: -30px 0; - } - .icheckbox_line-yellow.checked.disabled, - .iradio_line-yellow.checked.disabled { - background: #FFE495; - } - .icheckbox_line-yellow.checked.disabled .icheck_line-icon, - .iradio_line-yellow.checked.disabled .icheck_line-icon { - background-position: -45px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_line-yellow .icheck_line-icon, - .iradio_line-yellow .icheck_line-icon { - background-image: url(line@2x.png); - -webkit-background-size: 60px 13px; - background-size: 60px 13px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/minimal/_all.css b/assets/plugins/iCheck/minimal/_all.css deleted file mode 100644 index b2165ecc..00000000 --- a/assets/plugins/iCheck/minimal/_all.css +++ /dev/null @@ -1,557 +0,0 @@ -/* red */ -.icheckbox_minimal-red, -.iradio_minimal-red { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 18px; - height: 18px; - background: url(red.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_minimal-red { - background-position: 0 0; -} - .icheckbox_minimal-red.hover { - background-position: -20px 0; - } - .icheckbox_minimal-red.checked { - background-position: -40px 0; - } - .icheckbox_minimal-red.disabled { - background-position: -60px 0; - cursor: default; - } - .icheckbox_minimal-red.checked.disabled { - background-position: -80px 0; - } - -.iradio_minimal-red { - background-position: -100px 0; -} - .iradio_minimal-red.hover { - background-position: -120px 0; - } - .iradio_minimal-red.checked { - background-position: -140px 0; - } - .iradio_minimal-red.disabled { - background-position: -160px 0; - cursor: default; - } - .iradio_minimal-red.checked.disabled { - background-position: -180px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 1.5), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_minimal-red, - .iradio_minimal-red { - background-image: url(red@2x.png); - -webkit-background-size: 200px 20px; - background-size: 200px 20px; - } -} - -/* green */ -.icheckbox_minimal-green, -.iradio_minimal-green { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 18px; - height: 18px; - background: url(green.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_minimal-green { - background-position: 0 0; -} - .icheckbox_minimal-green.hover { - background-position: -20px 0; - } - .icheckbox_minimal-green.checked { - background-position: -40px 0; - } - .icheckbox_minimal-green.disabled { - background-position: -60px 0; - cursor: default; - } - .icheckbox_minimal-green.checked.disabled { - background-position: -80px 0; - } - -.iradio_minimal-green { - background-position: -100px 0; -} - .iradio_minimal-green.hover { - background-position: -120px 0; - } - .iradio_minimal-green.checked { - background-position: -140px 0; - } - .iradio_minimal-green.disabled { - background-position: -160px 0; - cursor: default; - } - .iradio_minimal-green.checked.disabled { - background-position: -180px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 1.5), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_minimal-green, - .iradio_minimal-green { - background-image: url(green@2x.png); - -webkit-background-size: 200px 20px; - background-size: 200px 20px; - } -} - -/* blue */ -.icheckbox_minimal-blue, -.iradio_minimal-blue { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 18px; - height: 18px; - background: url(blue.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_minimal-blue { - background-position: 0 0; -} - .icheckbox_minimal-blue.hover { - background-position: -20px 0; - } - .icheckbox_minimal-blue.checked { - background-position: -40px 0; - } - .icheckbox_minimal-blue.disabled { - background-position: -60px 0; - cursor: default; - } - .icheckbox_minimal-blue.checked.disabled { - background-position: -80px 0; - } - -.iradio_minimal-blue { - background-position: -100px 0; -} - .iradio_minimal-blue.hover { - background-position: -120px 0; - } - .iradio_minimal-blue.checked { - background-position: -140px 0; - } - .iradio_minimal-blue.disabled { - background-position: -160px 0; - cursor: default; - } - .iradio_minimal-blue.checked.disabled { - background-position: -180px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_minimal-blue, - .iradio_minimal-blue { - background-image: url(blue@2x.png); - -webkit-background-size: 200px 20px; - background-size: 200px 20px; - } -} - -/* aero */ -.icheckbox_minimal-aero, -.iradio_minimal-aero { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 18px; - height: 18px; - background: url(aero.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_minimal-aero { - background-position: 0 0; -} - .icheckbox_minimal-aero.hover { - background-position: -20px 0; - } - .icheckbox_minimal-aero.checked { - background-position: -40px 0; - } - .icheckbox_minimal-aero.disabled { - background-position: -60px 0; - cursor: default; - } - .icheckbox_minimal-aero.checked.disabled { - background-position: -80px 0; - } - -.iradio_minimal-aero { - background-position: -100px 0; -} - .iradio_minimal-aero.hover { - background-position: -120px 0; - } - .iradio_minimal-aero.checked { - background-position: -140px 0; - } - .iradio_minimal-aero.disabled { - background-position: -160px 0; - cursor: default; - } - .iradio_minimal-aero.checked.disabled { - background-position: -180px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_minimal-aero, - .iradio_minimal-aero { - background-image: url(aero@2x.png); - -webkit-background-size: 200px 20px; - background-size: 200px 20px; - } -} - -/* grey */ -.icheckbox_minimal-grey, -.iradio_minimal-grey { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 18px; - height: 18px; - background: url(grey.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_minimal-grey { - background-position: 0 0; -} - .icheckbox_minimal-grey.hover { - background-position: -20px 0; - } - .icheckbox_minimal-grey.checked { - background-position: -40px 0; - } - .icheckbox_minimal-grey.disabled { - background-position: -60px 0; - cursor: default; - } - .icheckbox_minimal-grey.checked.disabled { - background-position: -80px 0; - } - -.iradio_minimal-grey { - background-position: -100px 0; -} - .iradio_minimal-grey.hover { - background-position: -120px 0; - } - .iradio_minimal-grey.checked { - background-position: -140px 0; - } - .iradio_minimal-grey.disabled { - background-position: -160px 0; - cursor: default; - } - .iradio_minimal-grey.checked.disabled { - background-position: -180px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 1.5), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_minimal-grey, - .iradio_minimal-grey { - background-image: url(grey@2x.png); - -webkit-background-size: 200px 20px; - background-size: 200px 20px; - } -} - -/* orange */ -.icheckbox_minimal-orange, -.iradio_minimal-orange { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 18px; - height: 18px; - background: url(orange.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_minimal-orange { - background-position: 0 0; -} - .icheckbox_minimal-orange.hover { - background-position: -20px 0; - } - .icheckbox_minimal-orange.checked { - background-position: -40px 0; - } - .icheckbox_minimal-orange.disabled { - background-position: -60px 0; - cursor: default; - } - .icheckbox_minimal-orange.checked.disabled { - background-position: -80px 0; - } - -.iradio_minimal-orange { - background-position: -100px 0; -} - .iradio_minimal-orange.hover { - background-position: -120px 0; - } - .iradio_minimal-orange.checked { - background-position: -140px 0; - } - .iradio_minimal-orange.disabled { - background-position: -160px 0; - cursor: default; - } - .iradio_minimal-orange.checked.disabled { - background-position: -180px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 1.5), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_minimal-orange, - .iradio_minimal-orange { - background-image: url(orange@2x.png); - -webkit-background-size: 200px 20px; - background-size: 200px 20px; - } -} - -/* yellow */ -.icheckbox_minimal-yellow, -.iradio_minimal-yellow { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 18px; - height: 18px; - background: url(yellow.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_minimal-yellow { - background-position: 0 0; -} - .icheckbox_minimal-yellow.hover { - background-position: -20px 0; - } - .icheckbox_minimal-yellow.checked { - background-position: -40px 0; - } - .icheckbox_minimal-yellow.disabled { - background-position: -60px 0; - cursor: default; - } - .icheckbox_minimal-yellow.checked.disabled { - background-position: -80px 0; - } - -.iradio_minimal-yellow { - background-position: -100px 0; -} - .iradio_minimal-yellow.hover { - background-position: -120px 0; - } - .iradio_minimal-yellow.checked { - background-position: -140px 0; - } - .iradio_minimal-yellow.disabled { - background-position: -160px 0; - cursor: default; - } - .iradio_minimal-yellow.checked.disabled { - background-position: -180px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 1.5), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_minimal-yellow, - .iradio_minimal-yellow { - background-image: url(yellow@2x.png); - -webkit-background-size: 200px 20px; - background-size: 200px 20px; - } -} - -/* pink */ -.icheckbox_minimal-pink, -.iradio_minimal-pink { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 18px; - height: 18px; - background: url(pink.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_minimal-pink { - background-position: 0 0; -} - .icheckbox_minimal-pink.hover { - background-position: -20px 0; - } - .icheckbox_minimal-pink.checked { - background-position: -40px 0; - } - .icheckbox_minimal-pink.disabled { - background-position: -60px 0; - cursor: default; - } - .icheckbox_minimal-pink.checked.disabled { - background-position: -80px 0; - } - -.iradio_minimal-pink { - background-position: -100px 0; -} - .iradio_minimal-pink.hover { - background-position: -120px 0; - } - .iradio_minimal-pink.checked { - background-position: -140px 0; - } - .iradio_minimal-pink.disabled { - background-position: -160px 0; - cursor: default; - } - .iradio_minimal-pink.checked.disabled { - background-position: -180px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 1.5), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_minimal-pink, - .iradio_minimal-pink { - background-image: url(pink@2x.png); - -webkit-background-size: 200px 20px; - background-size: 200px 20px; - } -} - -/* purple */ -.icheckbox_minimal-purple, -.iradio_minimal-purple { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 18px; - height: 18px; - background: url(purple.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_minimal-purple { - background-position: 0 0; -} - .icheckbox_minimal-purple.hover { - background-position: -20px 0; - } - .icheckbox_minimal-purple.checked { - background-position: -40px 0; - } - .icheckbox_minimal-purple.disabled { - background-position: -60px 0; - cursor: default; - } - .icheckbox_minimal-purple.checked.disabled { - background-position: -80px 0; - } - -.iradio_minimal-purple { - background-position: -100px 0; -} - .iradio_minimal-purple.hover { - background-position: -120px 0; - } - .iradio_minimal-purple.checked { - background-position: -140px 0; - } - .iradio_minimal-purple.disabled { - background-position: -160px 0; - cursor: default; - } - .iradio_minimal-purple.checked.disabled { - background-position: -180px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 1.5), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_minimal-purple, - .iradio_minimal-purple { - background-image: url(purple@2x.png); - -webkit-background-size: 200px 20px; - background-size: 200px 20px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/minimal/aero.css b/assets/plugins/iCheck/minimal/aero.css deleted file mode 100644 index c97acc8c..00000000 --- a/assets/plugins/iCheck/minimal/aero.css +++ /dev/null @@ -1,62 +0,0 @@ -/* iCheck plugin Minimal skin, aero ------------------------------------ */ -.icheckbox_minimal-aero, -.iradio_minimal-aero { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 18px; - height: 18px; - background: url(aero.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_minimal-aero { - background-position: 0 0; -} - .icheckbox_minimal-aero.hover { - background-position: -20px 0; - } - .icheckbox_minimal-aero.checked { - background-position: -40px 0; - } - .icheckbox_minimal-aero.disabled { - background-position: -60px 0; - cursor: default; - } - .icheckbox_minimal-aero.checked.disabled { - background-position: -80px 0; - } - -.iradio_minimal-aero { - background-position: -100px 0; -} - .iradio_minimal-aero.hover { - background-position: -120px 0; - } - .iradio_minimal-aero.checked { - background-position: -140px 0; - } - .iradio_minimal-aero.disabled { - background-position: -160px 0; - cursor: default; - } - .iradio_minimal-aero.checked.disabled { - background-position: -180px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_minimal-aero, - .iradio_minimal-aero { - background-image: url(aero@2x.png); - -webkit-background-size: 200px 20px; - background-size: 200px 20px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/minimal/aero.png b/assets/plugins/iCheck/minimal/aero.png deleted file mode 100644 index dccf7740..00000000 Binary files a/assets/plugins/iCheck/minimal/aero.png and /dev/null differ diff --git a/assets/plugins/iCheck/minimal/aero@2x.png b/assets/plugins/iCheck/minimal/aero@2x.png deleted file mode 100644 index 5537ee36..00000000 Binary files a/assets/plugins/iCheck/minimal/aero@2x.png and /dev/null differ diff --git a/assets/plugins/iCheck/minimal/blue.css b/assets/plugins/iCheck/minimal/blue.css deleted file mode 100644 index 42477cd6..00000000 --- a/assets/plugins/iCheck/minimal/blue.css +++ /dev/null @@ -1,62 +0,0 @@ -/* iCheck plugin Minimal skin, blue ------------------------------------ */ -.icheckbox_minimal-blue, -.iradio_minimal-blue { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 18px; - height: 18px; - background: url(blue.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_minimal-blue { - background-position: 0 0; -} - .icheckbox_minimal-blue.hover { - background-position: -20px 0; - } - .icheckbox_minimal-blue.checked { - background-position: -40px 0; - } - .icheckbox_minimal-blue.disabled { - background-position: -60px 0; - cursor: default; - } - .icheckbox_minimal-blue.checked.disabled { - background-position: -80px 0; - } - -.iradio_minimal-blue { - background-position: -100px 0; -} - .iradio_minimal-blue.hover { - background-position: -120px 0; - } - .iradio_minimal-blue.checked { - background-position: -140px 0; - } - .iradio_minimal-blue.disabled { - background-position: -160px 0; - cursor: default; - } - .iradio_minimal-blue.checked.disabled { - background-position: -180px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_minimal-blue, - .iradio_minimal-blue { - background-image: url(blue@2x.png); - -webkit-background-size: 200px 20px; - background-size: 200px 20px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/minimal/blue.png b/assets/plugins/iCheck/minimal/blue.png deleted file mode 100644 index af04cee5..00000000 Binary files a/assets/plugins/iCheck/minimal/blue.png and /dev/null differ diff --git a/assets/plugins/iCheck/minimal/blue@2x.png b/assets/plugins/iCheck/minimal/blue@2x.png deleted file mode 100644 index f19210a9..00000000 Binary files a/assets/plugins/iCheck/minimal/blue@2x.png and /dev/null differ diff --git a/assets/plugins/iCheck/minimal/green.css b/assets/plugins/iCheck/minimal/green.css deleted file mode 100644 index bd1e3d0f..00000000 --- a/assets/plugins/iCheck/minimal/green.css +++ /dev/null @@ -1,62 +0,0 @@ -/* iCheck plugin Minimal skin, green ------------------------------------ */ -.icheckbox_minimal-green, -.iradio_minimal-green { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 18px; - height: 18px; - background: url(green.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_minimal-green { - background-position: 0 0; -} - .icheckbox_minimal-green.hover { - background-position: -20px 0; - } - .icheckbox_minimal-green.checked { - background-position: -40px 0; - } - .icheckbox_minimal-green.disabled { - background-position: -60px 0; - cursor: default; - } - .icheckbox_minimal-green.checked.disabled { - background-position: -80px 0; - } - -.iradio_minimal-green { - background-position: -100px 0; -} - .iradio_minimal-green.hover { - background-position: -120px 0; - } - .iradio_minimal-green.checked { - background-position: -140px 0; - } - .iradio_minimal-green.disabled { - background-position: -160px 0; - cursor: default; - } - .iradio_minimal-green.checked.disabled { - background-position: -180px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 1.5), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_minimal-green, - .iradio_minimal-green { - background-image: url(green@2x.png); - -webkit-background-size: 200px 20px; - background-size: 200px 20px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/minimal/green.png b/assets/plugins/iCheck/minimal/green.png deleted file mode 100644 index 9171ebc7..00000000 Binary files a/assets/plugins/iCheck/minimal/green.png and /dev/null differ diff --git a/assets/plugins/iCheck/minimal/green@2x.png b/assets/plugins/iCheck/minimal/green@2x.png deleted file mode 100644 index 7f18f96a..00000000 Binary files a/assets/plugins/iCheck/minimal/green@2x.png and /dev/null differ diff --git a/assets/plugins/iCheck/minimal/grey.css b/assets/plugins/iCheck/minimal/grey.css deleted file mode 100644 index 6e2730c6..00000000 --- a/assets/plugins/iCheck/minimal/grey.css +++ /dev/null @@ -1,62 +0,0 @@ -/* iCheck plugin Minimal skin, grey ------------------------------------ */ -.icheckbox_minimal-grey, -.iradio_minimal-grey { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 18px; - height: 18px; - background: url(grey.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_minimal-grey { - background-position: 0 0; -} - .icheckbox_minimal-grey.hover { - background-position: -20px 0; - } - .icheckbox_minimal-grey.checked { - background-position: -40px 0; - } - .icheckbox_minimal-grey.disabled { - background-position: -60px 0; - cursor: default; - } - .icheckbox_minimal-grey.checked.disabled { - background-position: -80px 0; - } - -.iradio_minimal-grey { - background-position: -100px 0; -} - .iradio_minimal-grey.hover { - background-position: -120px 0; - } - .iradio_minimal-grey.checked { - background-position: -140px 0; - } - .iradio_minimal-grey.disabled { - background-position: -160px 0; - cursor: default; - } - .iradio_minimal-grey.checked.disabled { - background-position: -180px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 1.5), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_minimal-grey, - .iradio_minimal-grey { - background-image: url(grey@2x.png); - -webkit-background-size: 200px 20px; - background-size: 200px 20px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/minimal/grey.png b/assets/plugins/iCheck/minimal/grey.png deleted file mode 100644 index 22dcdbcf..00000000 Binary files a/assets/plugins/iCheck/minimal/grey.png and /dev/null differ diff --git a/assets/plugins/iCheck/minimal/grey@2x.png b/assets/plugins/iCheck/minimal/grey@2x.png deleted file mode 100644 index 85e82ddd..00000000 Binary files a/assets/plugins/iCheck/minimal/grey@2x.png and /dev/null differ diff --git a/assets/plugins/iCheck/minimal/minimal.css b/assets/plugins/iCheck/minimal/minimal.css deleted file mode 100644 index 7c0e52e1..00000000 --- a/assets/plugins/iCheck/minimal/minimal.css +++ /dev/null @@ -1,62 +0,0 @@ -/* iCheck plugin Minimal skin, black ------------------------------------ */ -.icheckbox_minimal, -.iradio_minimal { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 18px; - height: 18px; - background: url(minimal.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_minimal { - background-position: 0 0; -} - .icheckbox_minimal.hover { - background-position: -20px 0; - } - .icheckbox_minimal.checked { - background-position: -40px 0; - } - .icheckbox_minimal.disabled { - background-position: -60px 0; - cursor: default; - } - .icheckbox_minimal.checked.disabled { - background-position: -80px 0; - } - -.iradio_minimal { - background-position: -100px 0; -} - .iradio_minimal.hover { - background-position: -120px 0; - } - .iradio_minimal.checked { - background-position: -140px 0; - } - .iradio_minimal.disabled { - background-position: -160px 0; - cursor: default; - } - .iradio_minimal.checked.disabled { - background-position: -180px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_minimal, - .iradio_minimal { - background-image: url(minimal@2x.png); - -webkit-background-size: 200px 20px; - background-size: 200px 20px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/minimal/minimal.png b/assets/plugins/iCheck/minimal/minimal.png deleted file mode 100644 index 943be16f..00000000 Binary files a/assets/plugins/iCheck/minimal/minimal.png and /dev/null differ diff --git a/assets/plugins/iCheck/minimal/minimal@2x.png b/assets/plugins/iCheck/minimal/minimal@2x.png deleted file mode 100644 index d62291da..00000000 Binary files a/assets/plugins/iCheck/minimal/minimal@2x.png and /dev/null differ diff --git a/assets/plugins/iCheck/minimal/orange.css b/assets/plugins/iCheck/minimal/orange.css deleted file mode 100644 index 842e400a..00000000 --- a/assets/plugins/iCheck/minimal/orange.css +++ /dev/null @@ -1,62 +0,0 @@ -/* iCheck plugin Minimal skin, orange ------------------------------------ */ -.icheckbox_minimal-orange, -.iradio_minimal-orange { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 18px; - height: 18px; - background: url(orange.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_minimal-orange { - background-position: 0 0; -} - .icheckbox_minimal-orange.hover { - background-position: -20px 0; - } - .icheckbox_minimal-orange.checked { - background-position: -40px 0; - } - .icheckbox_minimal-orange.disabled { - background-position: -60px 0; - cursor: default; - } - .icheckbox_minimal-orange.checked.disabled { - background-position: -80px 0; - } - -.iradio_minimal-orange { - background-position: -100px 0; -} - .iradio_minimal-orange.hover { - background-position: -120px 0; - } - .iradio_minimal-orange.checked { - background-position: -140px 0; - } - .iradio_minimal-orange.disabled { - background-position: -160px 0; - cursor: default; - } - .iradio_minimal-orange.checked.disabled { - background-position: -180px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 1.5), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_minimal-orange, - .iradio_minimal-orange { - background-image: url(orange@2x.png); - -webkit-background-size: 200px 20px; - background-size: 200px 20px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/minimal/orange.png b/assets/plugins/iCheck/minimal/orange.png deleted file mode 100644 index f2a31497..00000000 Binary files a/assets/plugins/iCheck/minimal/orange.png and /dev/null differ diff --git a/assets/plugins/iCheck/minimal/orange@2x.png b/assets/plugins/iCheck/minimal/orange@2x.png deleted file mode 100644 index 68c83591..00000000 Binary files a/assets/plugins/iCheck/minimal/orange@2x.png and /dev/null differ diff --git a/assets/plugins/iCheck/minimal/pink.css b/assets/plugins/iCheck/minimal/pink.css deleted file mode 100644 index 10ace218..00000000 --- a/assets/plugins/iCheck/minimal/pink.css +++ /dev/null @@ -1,62 +0,0 @@ -/* iCheck plugin Minimal skin, pink ------------------------------------ */ -.icheckbox_minimal-pink, -.iradio_minimal-pink { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 18px; - height: 18px; - background: url(pink.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_minimal-pink { - background-position: 0 0; -} - .icheckbox_minimal-pink.hover { - background-position: -20px 0; - } - .icheckbox_minimal-pink.checked { - background-position: -40px 0; - } - .icheckbox_minimal-pink.disabled { - background-position: -60px 0; - cursor: default; - } - .icheckbox_minimal-pink.checked.disabled { - background-position: -80px 0; - } - -.iradio_minimal-pink { - background-position: -100px 0; -} - .iradio_minimal-pink.hover { - background-position: -120px 0; - } - .iradio_minimal-pink.checked { - background-position: -140px 0; - } - .iradio_minimal-pink.disabled { - background-position: -160px 0; - cursor: default; - } - .iradio_minimal-pink.checked.disabled { - background-position: -180px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 1.5), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_minimal-pink, - .iradio_minimal-pink { - background-image: url(pink@2x.png); - -webkit-background-size: 200px 20px; - background-size: 200px 20px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/minimal/pink.png b/assets/plugins/iCheck/minimal/pink.png deleted file mode 100644 index 660553c0..00000000 Binary files a/assets/plugins/iCheck/minimal/pink.png and /dev/null differ diff --git a/assets/plugins/iCheck/minimal/pink@2x.png b/assets/plugins/iCheck/minimal/pink@2x.png deleted file mode 100644 index 7d7b3851..00000000 Binary files a/assets/plugins/iCheck/minimal/pink@2x.png and /dev/null differ diff --git a/assets/plugins/iCheck/minimal/purple.css b/assets/plugins/iCheck/minimal/purple.css deleted file mode 100644 index 1c5dcbc7..00000000 --- a/assets/plugins/iCheck/minimal/purple.css +++ /dev/null @@ -1,62 +0,0 @@ -/* iCheck plugin Minimal skin, purple ------------------------------------ */ -.icheckbox_minimal-purple, -.iradio_minimal-purple { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 18px; - height: 18px; - background: url(purple.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_minimal-purple { - background-position: 0 0; -} - .icheckbox_minimal-purple.hover { - background-position: -20px 0; - } - .icheckbox_minimal-purple.checked { - background-position: -40px 0; - } - .icheckbox_minimal-purple.disabled { - background-position: -60px 0; - cursor: default; - } - .icheckbox_minimal-purple.checked.disabled { - background-position: -80px 0; - } - -.iradio_minimal-purple { - background-position: -100px 0; -} - .iradio_minimal-purple.hover { - background-position: -120px 0; - } - .iradio_minimal-purple.checked { - background-position: -140px 0; - } - .iradio_minimal-purple.disabled { - background-position: -160px 0; - cursor: default; - } - .iradio_minimal-purple.checked.disabled { - background-position: -180px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 1.5), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_minimal-purple, - .iradio_minimal-purple { - background-image: url(purple@2x.png); - -webkit-background-size: 200px 20px; - background-size: 200px 20px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/minimal/purple.png b/assets/plugins/iCheck/minimal/purple.png deleted file mode 100644 index 48dec794..00000000 Binary files a/assets/plugins/iCheck/minimal/purple.png and /dev/null differ diff --git a/assets/plugins/iCheck/minimal/purple@2x.png b/assets/plugins/iCheck/minimal/purple@2x.png deleted file mode 100644 index 3bb70417..00000000 Binary files a/assets/plugins/iCheck/minimal/purple@2x.png and /dev/null differ diff --git a/assets/plugins/iCheck/minimal/red.css b/assets/plugins/iCheck/minimal/red.css deleted file mode 100644 index 9340c4f6..00000000 --- a/assets/plugins/iCheck/minimal/red.css +++ /dev/null @@ -1,62 +0,0 @@ -/* iCheck plugin Minimal skin, red ------------------------------------ */ -.icheckbox_minimal-red, -.iradio_minimal-red { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 18px; - height: 18px; - background: url(red.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_minimal-red { - background-position: 0 0; -} - .icheckbox_minimal-red.hover { - background-position: -20px 0; - } - .icheckbox_minimal-red.checked { - background-position: -40px 0; - } - .icheckbox_minimal-red.disabled { - background-position: -60px 0; - cursor: default; - } - .icheckbox_minimal-red.checked.disabled { - background-position: -80px 0; - } - -.iradio_minimal-red { - background-position: -100px 0; -} - .iradio_minimal-red.hover { - background-position: -120px 0; - } - .iradio_minimal-red.checked { - background-position: -140px 0; - } - .iradio_minimal-red.disabled { - background-position: -160px 0; - cursor: default; - } - .iradio_minimal-red.checked.disabled { - background-position: -180px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 1.5), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_minimal-red, - .iradio_minimal-red { - background-image: url(red@2x.png); - -webkit-background-size: 200px 20px; - background-size: 200px 20px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/minimal/red.png b/assets/plugins/iCheck/minimal/red.png deleted file mode 100644 index 4443f809..00000000 Binary files a/assets/plugins/iCheck/minimal/red.png and /dev/null differ diff --git a/assets/plugins/iCheck/minimal/red@2x.png b/assets/plugins/iCheck/minimal/red@2x.png deleted file mode 100644 index 2eb55a65..00000000 Binary files a/assets/plugins/iCheck/minimal/red@2x.png and /dev/null differ diff --git a/assets/plugins/iCheck/minimal/yellow.css b/assets/plugins/iCheck/minimal/yellow.css deleted file mode 100644 index 2c384231..00000000 --- a/assets/plugins/iCheck/minimal/yellow.css +++ /dev/null @@ -1,62 +0,0 @@ -/* iCheck plugin Minimal skin, yellow ------------------------------------ */ -.icheckbox_minimal-yellow, -.iradio_minimal-yellow { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 18px; - height: 18px; - background: url(yellow.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_minimal-yellow { - background-position: 0 0; -} - .icheckbox_minimal-yellow.hover { - background-position: -20px 0; - } - .icheckbox_minimal-yellow.checked { - background-position: -40px 0; - } - .icheckbox_minimal-yellow.disabled { - background-position: -60px 0; - cursor: default; - } - .icheckbox_minimal-yellow.checked.disabled { - background-position: -80px 0; - } - -.iradio_minimal-yellow { - background-position: -100px 0; -} - .iradio_minimal-yellow.hover { - background-position: -120px 0; - } - .iradio_minimal-yellow.checked { - background-position: -140px 0; - } - .iradio_minimal-yellow.disabled { - background-position: -160px 0; - cursor: default; - } - .iradio_minimal-yellow.checked.disabled { - background-position: -180px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 1.5), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_minimal-yellow, - .iradio_minimal-yellow { - background-image: url(yellow@2x.png); - -webkit-background-size: 200px 20px; - background-size: 200px 20px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/minimal/yellow.png b/assets/plugins/iCheck/minimal/yellow.png deleted file mode 100644 index 0999b7ec..00000000 Binary files a/assets/plugins/iCheck/minimal/yellow.png and /dev/null differ diff --git a/assets/plugins/iCheck/minimal/yellow@2x.png b/assets/plugins/iCheck/minimal/yellow@2x.png deleted file mode 100644 index c16f2b7d..00000000 Binary files a/assets/plugins/iCheck/minimal/yellow@2x.png and /dev/null differ diff --git a/assets/plugins/iCheck/polaris/polaris.css b/assets/plugins/iCheck/polaris/polaris.css deleted file mode 100644 index 1cb4bcc0..00000000 --- a/assets/plugins/iCheck/polaris/polaris.css +++ /dev/null @@ -1,62 +0,0 @@ -/* iCheck plugin Polaris skin ------------------------------------ */ -.icheckbox_polaris, -.iradio_polaris { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 29px; - height: 29px; - background: url(polaris.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_polaris { - background-position: 0 0; -} - .icheckbox_polaris.hover { - background-position: -31px 0; - } - .icheckbox_polaris.checked { - background-position: -62px 0; - } - .icheckbox_polaris.disabled { - background-position: -93px 0; - cursor: default; - } - .icheckbox_polaris.checked.disabled { - background-position: -124px 0; - } - -.iradio_polaris { - background-position: -155px 0; -} - .iradio_polaris.hover { - background-position: -186px 0; - } - .iradio_polaris.checked { - background-position: -217px 0; - } - .iradio_polaris.disabled { - background-position: -248px 0; - cursor: default; - } - .iradio_polaris.checked.disabled { - background-position: -279px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_polaris, - .iradio_polaris { - background-image: url(polaris@2x.png); - -webkit-background-size: 310px 31px; - background-size: 310px 31px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/polaris/polaris.png b/assets/plugins/iCheck/polaris/polaris.png deleted file mode 100644 index 60c14e6a..00000000 Binary files a/assets/plugins/iCheck/polaris/polaris.png and /dev/null differ diff --git a/assets/plugins/iCheck/polaris/polaris@2x.png b/assets/plugins/iCheck/polaris/polaris@2x.png deleted file mode 100644 index c75b8269..00000000 Binary files a/assets/plugins/iCheck/polaris/polaris@2x.png and /dev/null differ diff --git a/assets/plugins/iCheck/square/_all.css b/assets/plugins/iCheck/square/_all.css deleted file mode 100644 index a2ff0368..00000000 --- a/assets/plugins/iCheck/square/_all.css +++ /dev/null @@ -1,620 +0,0 @@ -/* iCheck plugin Square skin ------------------------------------ */ -.icheckbox_square, -.iradio_square { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 22px; - height: 22px; - background: url(square.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_square { - background-position: 0 0; -} - .icheckbox_square.hover { - background-position: -24px 0; - } - .icheckbox_square.checked { - background-position: -48px 0; - } - .icheckbox_square.disabled { - background-position: -72px 0; - cursor: default; - } - .icheckbox_square.checked.disabled { - background-position: -96px 0; - } - -.iradio_square { - background-position: -120px 0; -} - .iradio_square.hover { - background-position: -144px 0; - } - .iradio_square.checked { - background-position: -168px 0; - } - .iradio_square.disabled { - background-position: -192px 0; - cursor: default; - } - .iradio_square.checked.disabled { - background-position: -216px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_square, - .iradio_square { - background-image: url(square@2x.png); - -webkit-background-size: 240px 24px; - background-size: 240px 24px; - } -} - -/* red */ -.icheckbox_square-red, -.iradio_square-red { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 22px; - height: 22px; - background: url(red.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_square-red { - background-position: 0 0; -} - .icheckbox_square-red.hover { - background-position: -24px 0; - } - .icheckbox_square-red.checked { - background-position: -48px 0; - } - .icheckbox_square-red.disabled { - background-position: -72px 0; - cursor: default; - } - .icheckbox_square-red.checked.disabled { - background-position: -96px 0; - } - -.iradio_square-red { - background-position: -120px 0; -} - .iradio_square-red.hover { - background-position: -144px 0; - } - .iradio_square-red.checked { - background-position: -168px 0; - } - .iradio_square-red.disabled { - background-position: -192px 0; - cursor: default; - } - .iradio_square-red.checked.disabled { - background-position: -216px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_square-red, - .iradio_square-red { - background-image: url(red@2x.png); - -webkit-background-size: 240px 24px; - background-size: 240px 24px; - } -} - -/* green */ -.icheckbox_square-green, -.iradio_square-green { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 22px; - height: 22px; - background: url(green.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_square-green { - background-position: 0 0; -} - .icheckbox_square-green.hover { - background-position: -24px 0; - } - .icheckbox_square-green.checked { - background-position: -48px 0; - } - .icheckbox_square-green.disabled { - background-position: -72px 0; - cursor: default; - } - .icheckbox_square-green.checked.disabled { - background-position: -96px 0; - } - -.iradio_square-green { - background-position: -120px 0; -} - .iradio_square-green.hover { - background-position: -144px 0; - } - .iradio_square-green.checked { - background-position: -168px 0; - } - .iradio_square-green.disabled { - background-position: -192px 0; - cursor: default; - } - .iradio_square-green.checked.disabled { - background-position: -216px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_square-green, - .iradio_square-green { - background-image: url(green@2x.png); - -webkit-background-size: 240px 24px; - background-size: 240px 24px; - } -} - -/* blue */ -.icheckbox_square-blue, -.iradio_square-blue { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 22px; - height: 22px; - background: url(blue.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_square-blue { - background-position: 0 0; -} - .icheckbox_square-blue.hover { - background-position: -24px 0; - } - .icheckbox_square-blue.checked { - background-position: -48px 0; - } - .icheckbox_square-blue.disabled { - background-position: -72px 0; - cursor: default; - } - .icheckbox_square-blue.checked.disabled { - background-position: -96px 0; - } - -.iradio_square-blue { - background-position: -120px 0; -} - .iradio_square-blue.hover { - background-position: -144px 0; - } - .iradio_square-blue.checked { - background-position: -168px 0; - } - .iradio_square-blue.disabled { - background-position: -192px 0; - cursor: default; - } - .iradio_square-blue.checked.disabled { - background-position: -216px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_square-blue, - .iradio_square-blue { - background-image: url(blue@2x.png); - -webkit-background-size: 240px 24px; - background-size: 240px 24px; - } -} - -/* aero */ -.icheckbox_square-aero, -.iradio_square-aero { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 22px; - height: 22px; - background: url(aero.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_square-aero { - background-position: 0 0; -} - .icheckbox_square-aero.hover { - background-position: -24px 0; - } - .icheckbox_square-aero.checked { - background-position: -48px 0; - } - .icheckbox_square-aero.disabled { - background-position: -72px 0; - cursor: default; - } - .icheckbox_square-aero.checked.disabled { - background-position: -96px 0; - } - -.iradio_square-aero { - background-position: -120px 0; -} - .iradio_square-aero.hover { - background-position: -144px 0; - } - .iradio_square-aero.checked { - background-position: -168px 0; - } - .iradio_square-aero.disabled { - background-position: -192px 0; - cursor: default; - } - .iradio_square-aero.checked.disabled { - background-position: -216px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_square-aero, - .iradio_square-aero { - background-image: url(aero@2x.png); - -webkit-background-size: 240px 24px; - background-size: 240px 24px; - } -} - -/* grey */ -.icheckbox_square-grey, -.iradio_square-grey { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 22px; - height: 22px; - background: url(grey.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_square-grey { - background-position: 0 0; -} - .icheckbox_square-grey.hover { - background-position: -24px 0; - } - .icheckbox_square-grey.checked { - background-position: -48px 0; - } - .icheckbox_square-grey.disabled { - background-position: -72px 0; - cursor: default; - } - .icheckbox_square-grey.checked.disabled { - background-position: -96px 0; - } - -.iradio_square-grey { - background-position: -120px 0; -} - .iradio_square-grey.hover { - background-position: -144px 0; - } - .iradio_square-grey.checked { - background-position: -168px 0; - } - .iradio_square-grey.disabled { - background-position: -192px 0; - cursor: default; - } - .iradio_square-grey.checked.disabled { - background-position: -216px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_square-grey, - .iradio_square-grey { - background-image: url(grey@2x.png); - -webkit-background-size: 240px 24px; - background-size: 240px 24px; - } -} - -/* orange */ -.icheckbox_square-orange, -.iradio_square-orange { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 22px; - height: 22px; - background: url(orange.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_square-orange { - background-position: 0 0; -} - .icheckbox_square-orange.hover { - background-position: -24px 0; - } - .icheckbox_square-orange.checked { - background-position: -48px 0; - } - .icheckbox_square-orange.disabled { - background-position: -72px 0; - cursor: default; - } - .icheckbox_square-orange.checked.disabled { - background-position: -96px 0; - } - -.iradio_square-orange { - background-position: -120px 0; -} - .iradio_square-orange.hover { - background-position: -144px 0; - } - .iradio_square-orange.checked { - background-position: -168px 0; - } - .iradio_square-orange.disabled { - background-position: -192px 0; - cursor: default; - } - .iradio_square-orange.checked.disabled { - background-position: -216px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_square-orange, - .iradio_square-orange { - background-image: url(orange@2x.png); - -webkit-background-size: 240px 24px; - background-size: 240px 24px; - } -} - -/* yellow */ -.icheckbox_square-yellow, -.iradio_square-yellow { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 22px; - height: 22px; - background: url(yellow.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_square-yellow { - background-position: 0 0; -} - .icheckbox_square-yellow.hover { - background-position: -24px 0; - } - .icheckbox_square-yellow.checked { - background-position: -48px 0; - } - .icheckbox_square-yellow.disabled { - background-position: -72px 0; - cursor: default; - } - .icheckbox_square-yellow.checked.disabled { - background-position: -96px 0; - } - -.iradio_square-yellow { - background-position: -120px 0; -} - .iradio_square-yellow.hover { - background-position: -144px 0; - } - .iradio_square-yellow.checked { - background-position: -168px 0; - } - .iradio_square-yellow.disabled { - background-position: -192px 0; - cursor: default; - } - .iradio_square-yellow.checked.disabled { - background-position: -216px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_square-yellow, - .iradio_square-yellow { - background-image: url(yellow@2x.png); - -webkit-background-size: 240px 24px; - background-size: 240px 24px; - } -} - -/* pink */ -.icheckbox_square-pink, -.iradio_square-pink { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 22px; - height: 22px; - background: url(pink.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_square-pink { - background-position: 0 0; -} - .icheckbox_square-pink.hover { - background-position: -24px 0; - } - .icheckbox_square-pink.checked { - background-position: -48px 0; - } - .icheckbox_square-pink.disabled { - background-position: -72px 0; - cursor: default; - } - .icheckbox_square-pink.checked.disabled { - background-position: -96px 0; - } - -.iradio_square-pink { - background-position: -120px 0; -} - .iradio_square-pink.hover { - background-position: -144px 0; - } - .iradio_square-pink.checked { - background-position: -168px 0; - } - .iradio_square-pink.disabled { - background-position: -192px 0; - cursor: default; - } - .iradio_square-pink.checked.disabled { - background-position: -216px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_square-pink, - .iradio_square-pink { - background-image: url(pink@2x.png); - -webkit-background-size: 240px 24px; - background-size: 240px 24px; - } -} - -/* purple */ -.icheckbox_square-purple, -.iradio_square-purple { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 22px; - height: 22px; - background: url(purple.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_square-purple { - background-position: 0 0; -} - .icheckbox_square-purple.hover { - background-position: -24px 0; - } - .icheckbox_square-purple.checked { - background-position: -48px 0; - } - .icheckbox_square-purple.disabled { - background-position: -72px 0; - cursor: default; - } - .icheckbox_square-purple.checked.disabled { - background-position: -96px 0; - } - -.iradio_square-purple { - background-position: -120px 0; -} - .iradio_square-purple.hover { - background-position: -144px 0; - } - .iradio_square-purple.checked { - background-position: -168px 0; - } - .iradio_square-purple.disabled { - background-position: -192px 0; - cursor: default; - } - .iradio_square-purple.checked.disabled { - background-position: -216px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_square-purple, - .iradio_square-purple { - background-image: url(purple@2x.png); - -webkit-background-size: 240px 24px; - background-size: 240px 24px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/square/aero.css b/assets/plugins/iCheck/square/aero.css deleted file mode 100644 index 51fca0a8..00000000 --- a/assets/plugins/iCheck/square/aero.css +++ /dev/null @@ -1,62 +0,0 @@ -/* iCheck plugin Square skin, aero ------------------------------------ */ -.icheckbox_square-aero, -.iradio_square-aero { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 22px; - height: 22px; - background: url(aero.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_square-aero { - background-position: 0 0; -} - .icheckbox_square-aero.hover { - background-position: -24px 0; - } - .icheckbox_square-aero.checked { - background-position: -48px 0; - } - .icheckbox_square-aero.disabled { - background-position: -72px 0; - cursor: default; - } - .icheckbox_square-aero.checked.disabled { - background-position: -96px 0; - } - -.iradio_square-aero { - background-position: -120px 0; -} - .iradio_square-aero.hover { - background-position: -144px 0; - } - .iradio_square-aero.checked { - background-position: -168px 0; - } - .iradio_square-aero.disabled { - background-position: -192px 0; - cursor: default; - } - .iradio_square-aero.checked.disabled { - background-position: -216px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_square-aero, - .iradio_square-aero { - background-image: url(aero@2x.png); - -webkit-background-size: 240px 24px; - background-size: 240px 24px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/square/aero.png b/assets/plugins/iCheck/square/aero.png deleted file mode 100644 index 1a332e6c..00000000 Binary files a/assets/plugins/iCheck/square/aero.png and /dev/null differ diff --git a/assets/plugins/iCheck/square/aero@2x.png b/assets/plugins/iCheck/square/aero@2x.png deleted file mode 100644 index 07c5a022..00000000 Binary files a/assets/plugins/iCheck/square/aero@2x.png and /dev/null differ diff --git a/assets/plugins/iCheck/square/blue.css b/assets/plugins/iCheck/square/blue.css deleted file mode 100644 index 95340fea..00000000 --- a/assets/plugins/iCheck/square/blue.css +++ /dev/null @@ -1,62 +0,0 @@ -/* iCheck plugin Square skin, blue ------------------------------------ */ -.icheckbox_square-blue, -.iradio_square-blue { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 22px; - height: 22px; - background: url(blue.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_square-blue { - background-position: 0 0; -} - .icheckbox_square-blue.hover { - background-position: -24px 0; - } - .icheckbox_square-blue.checked { - background-position: -48px 0; - } - .icheckbox_square-blue.disabled { - background-position: -72px 0; - cursor: default; - } - .icheckbox_square-blue.checked.disabled { - background-position: -96px 0; - } - -.iradio_square-blue { - background-position: -120px 0; -} - .iradio_square-blue.hover { - background-position: -144px 0; - } - .iradio_square-blue.checked { - background-position: -168px 0; - } - .iradio_square-blue.disabled { - background-position: -192px 0; - cursor: default; - } - .iradio_square-blue.checked.disabled { - background-position: -216px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_square-blue, - .iradio_square-blue { - background-image: url(blue@2x.png); - -webkit-background-size: 240px 24px; - background-size: 240px 24px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/square/blue.png b/assets/plugins/iCheck/square/blue.png deleted file mode 100644 index a3e040fc..00000000 Binary files a/assets/plugins/iCheck/square/blue.png and /dev/null differ diff --git a/assets/plugins/iCheck/square/blue@2x.png b/assets/plugins/iCheck/square/blue@2x.png deleted file mode 100644 index 8fdea12f..00000000 Binary files a/assets/plugins/iCheck/square/blue@2x.png and /dev/null differ diff --git a/assets/plugins/iCheck/square/green.css b/assets/plugins/iCheck/square/green.css deleted file mode 100644 index eb43f2a4..00000000 --- a/assets/plugins/iCheck/square/green.css +++ /dev/null @@ -1,62 +0,0 @@ -/* iCheck plugin Square skin, green ------------------------------------ */ -.icheckbox_square-green, -.iradio_square-green { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 22px; - height: 22px; - background: url(green.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_square-green { - background-position: 0 0; -} - .icheckbox_square-green.hover { - background-position: -24px 0; - } - .icheckbox_square-green.checked { - background-position: -48px 0; - } - .icheckbox_square-green.disabled { - background-position: -72px 0; - cursor: default; - } - .icheckbox_square-green.checked.disabled { - background-position: -96px 0; - } - -.iradio_square-green { - background-position: -120px 0; -} - .iradio_square-green.hover { - background-position: -144px 0; - } - .iradio_square-green.checked { - background-position: -168px 0; - } - .iradio_square-green.disabled { - background-position: -192px 0; - cursor: default; - } - .iradio_square-green.checked.disabled { - background-position: -216px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_square-green, - .iradio_square-green { - background-image: url(green@2x.png); - -webkit-background-size: 240px 24px; - background-size: 240px 24px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/square/green.png b/assets/plugins/iCheck/square/green.png deleted file mode 100644 index 465824e7..00000000 Binary files a/assets/plugins/iCheck/square/green.png and /dev/null differ diff --git a/assets/plugins/iCheck/square/green@2x.png b/assets/plugins/iCheck/square/green@2x.png deleted file mode 100644 index 784e8747..00000000 Binary files a/assets/plugins/iCheck/square/green@2x.png and /dev/null differ diff --git a/assets/plugins/iCheck/square/grey.css b/assets/plugins/iCheck/square/grey.css deleted file mode 100644 index ecc57ff4..00000000 --- a/assets/plugins/iCheck/square/grey.css +++ /dev/null @@ -1,62 +0,0 @@ -/* iCheck plugin Square skin, grey ------------------------------------ */ -.icheckbox_square-grey, -.iradio_square-grey { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 22px; - height: 22px; - background: url(grey.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_square-grey { - background-position: 0 0; -} - .icheckbox_square-grey.hover { - background-position: -24px 0; - } - .icheckbox_square-grey.checked { - background-position: -48px 0; - } - .icheckbox_square-grey.disabled { - background-position: -72px 0; - cursor: default; - } - .icheckbox_square-grey.checked.disabled { - background-position: -96px 0; - } - -.iradio_square-grey { - background-position: -120px 0; -} - .iradio_square-grey.hover { - background-position: -144px 0; - } - .iradio_square-grey.checked { - background-position: -168px 0; - } - .iradio_square-grey.disabled { - background-position: -192px 0; - cursor: default; - } - .iradio_square-grey.checked.disabled { - background-position: -216px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_square-grey, - .iradio_square-grey { - background-image: url(grey@2x.png); - -webkit-background-size: 240px 24px; - background-size: 240px 24px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/square/grey.png b/assets/plugins/iCheck/square/grey.png deleted file mode 100644 index f6937585..00000000 Binary files a/assets/plugins/iCheck/square/grey.png and /dev/null differ diff --git a/assets/plugins/iCheck/square/grey@2x.png b/assets/plugins/iCheck/square/grey@2x.png deleted file mode 100644 index 5d6341c0..00000000 Binary files a/assets/plugins/iCheck/square/grey@2x.png and /dev/null differ diff --git a/assets/plugins/iCheck/square/orange.css b/assets/plugins/iCheck/square/orange.css deleted file mode 100644 index d0c7a2cf..00000000 --- a/assets/plugins/iCheck/square/orange.css +++ /dev/null @@ -1,62 +0,0 @@ -/* iCheck plugin Square skin, orange ------------------------------------ */ -.icheckbox_square-orange, -.iradio_square-orange { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 22px; - height: 22px; - background: url(orange.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_square-orange { - background-position: 0 0; -} - .icheckbox_square-orange.hover { - background-position: -24px 0; - } - .icheckbox_square-orange.checked { - background-position: -48px 0; - } - .icheckbox_square-orange.disabled { - background-position: -72px 0; - cursor: default; - } - .icheckbox_square-orange.checked.disabled { - background-position: -96px 0; - } - -.iradio_square-orange { - background-position: -120px 0; -} - .iradio_square-orange.hover { - background-position: -144px 0; - } - .iradio_square-orange.checked { - background-position: -168px 0; - } - .iradio_square-orange.disabled { - background-position: -192px 0; - cursor: default; - } - .iradio_square-orange.checked.disabled { - background-position: -216px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_square-orange, - .iradio_square-orange { - background-image: url(orange@2x.png); - -webkit-background-size: 240px 24px; - background-size: 240px 24px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/square/orange.png b/assets/plugins/iCheck/square/orange.png deleted file mode 100644 index 84608500..00000000 Binary files a/assets/plugins/iCheck/square/orange.png and /dev/null differ diff --git a/assets/plugins/iCheck/square/orange@2x.png b/assets/plugins/iCheck/square/orange@2x.png deleted file mode 100644 index b1f23197..00000000 Binary files a/assets/plugins/iCheck/square/orange@2x.png and /dev/null differ diff --git a/assets/plugins/iCheck/square/pink.css b/assets/plugins/iCheck/square/pink.css deleted file mode 100644 index 6b706f6d..00000000 --- a/assets/plugins/iCheck/square/pink.css +++ /dev/null @@ -1,62 +0,0 @@ -/* iCheck plugin Square skin, pink ------------------------------------ */ -.icheckbox_square-pink, -.iradio_square-pink { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 22px; - height: 22px; - background: url(pink.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_square-pink { - background-position: 0 0; -} - .icheckbox_square-pink.hover { - background-position: -24px 0; - } - .icheckbox_square-pink.checked { - background-position: -48px 0; - } - .icheckbox_square-pink.disabled { - background-position: -72px 0; - cursor: default; - } - .icheckbox_square-pink.checked.disabled { - background-position: -96px 0; - } - -.iradio_square-pink { - background-position: -120px 0; -} - .iradio_square-pink.hover { - background-position: -144px 0; - } - .iradio_square-pink.checked { - background-position: -168px 0; - } - .iradio_square-pink.disabled { - background-position: -192px 0; - cursor: default; - } - .iradio_square-pink.checked.disabled { - background-position: -216px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_square-pink, - .iradio_square-pink { - background-image: url(pink@2x.png); - -webkit-background-size: 240px 24px; - background-size: 240px 24px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/square/pink.png b/assets/plugins/iCheck/square/pink.png deleted file mode 100644 index 9c8b4e2b..00000000 Binary files a/assets/plugins/iCheck/square/pink.png and /dev/null differ diff --git a/assets/plugins/iCheck/square/pink@2x.png b/assets/plugins/iCheck/square/pink@2x.png deleted file mode 100644 index b1f3a6ed..00000000 Binary files a/assets/plugins/iCheck/square/pink@2x.png and /dev/null differ diff --git a/assets/plugins/iCheck/square/purple.css b/assets/plugins/iCheck/square/purple.css deleted file mode 100644 index 43051d3d..00000000 --- a/assets/plugins/iCheck/square/purple.css +++ /dev/null @@ -1,62 +0,0 @@ -/* iCheck plugin Square skin, purple ------------------------------------ */ -.icheckbox_square-purple, -.iradio_square-purple { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 22px; - height: 22px; - background: url(purple.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_square-purple { - background-position: 0 0; -} - .icheckbox_square-purple.hover { - background-position: -24px 0; - } - .icheckbox_square-purple.checked { - background-position: -48px 0; - } - .icheckbox_square-purple.disabled { - background-position: -72px 0; - cursor: default; - } - .icheckbox_square-purple.checked.disabled { - background-position: -96px 0; - } - -.iradio_square-purple { - background-position: -120px 0; -} - .iradio_square-purple.hover { - background-position: -144px 0; - } - .iradio_square-purple.checked { - background-position: -168px 0; - } - .iradio_square-purple.disabled { - background-position: -192px 0; - cursor: default; - } - .iradio_square-purple.checked.disabled { - background-position: -216px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_square-purple, - .iradio_square-purple { - background-image: url(purple@2x.png); - -webkit-background-size: 240px 24px; - background-size: 240px 24px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/square/purple.png b/assets/plugins/iCheck/square/purple.png deleted file mode 100644 index 6bfc16a3..00000000 Binary files a/assets/plugins/iCheck/square/purple.png and /dev/null differ diff --git a/assets/plugins/iCheck/square/purple@2x.png b/assets/plugins/iCheck/square/purple@2x.png deleted file mode 100644 index 6d3c8b1a..00000000 Binary files a/assets/plugins/iCheck/square/purple@2x.png and /dev/null differ diff --git a/assets/plugins/iCheck/square/red.css b/assets/plugins/iCheck/square/red.css deleted file mode 100644 index 40013c42..00000000 --- a/assets/plugins/iCheck/square/red.css +++ /dev/null @@ -1,62 +0,0 @@ -/* iCheck plugin Square skin, red ------------------------------------ */ -.icheckbox_square-red, -.iradio_square-red { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 22px; - height: 22px; - background: url(red.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_square-red { - background-position: 0 0; -} - .icheckbox_square-red.hover { - background-position: -24px 0; - } - .icheckbox_square-red.checked { - background-position: -48px 0; - } - .icheckbox_square-red.disabled { - background-position: -72px 0; - cursor: default; - } - .icheckbox_square-red.checked.disabled { - background-position: -96px 0; - } - -.iradio_square-red { - background-position: -120px 0; -} - .iradio_square-red.hover { - background-position: -144px 0; - } - .iradio_square-red.checked { - background-position: -168px 0; - } - .iradio_square-red.disabled { - background-position: -192px 0; - cursor: default; - } - .iradio_square-red.checked.disabled { - background-position: -216px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_square-red, - .iradio_square-red { - background-image: url(red@2x.png); - -webkit-background-size: 240px 24px; - background-size: 240px 24px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/square/red.png b/assets/plugins/iCheck/square/red.png deleted file mode 100644 index 749675a9..00000000 Binary files a/assets/plugins/iCheck/square/red.png and /dev/null differ diff --git a/assets/plugins/iCheck/square/red@2x.png b/assets/plugins/iCheck/square/red@2x.png deleted file mode 100644 index c05700a5..00000000 Binary files a/assets/plugins/iCheck/square/red@2x.png and /dev/null differ diff --git a/assets/plugins/iCheck/square/square.css b/assets/plugins/iCheck/square/square.css deleted file mode 100644 index b604fa84..00000000 --- a/assets/plugins/iCheck/square/square.css +++ /dev/null @@ -1,62 +0,0 @@ -/* iCheck plugin Square skin, black ------------------------------------ */ -.icheckbox_square, -.iradio_square { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 22px; - height: 22px; - background: url(square.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_square { - background-position: 0 0; -} - .icheckbox_square.hover { - background-position: -24px 0; - } - .icheckbox_square.checked { - background-position: -48px 0; - } - .icheckbox_square.disabled { - background-position: -72px 0; - cursor: default; - } - .icheckbox_square.checked.disabled { - background-position: -96px 0; - } - -.iradio_square { - background-position: -120px 0; -} - .iradio_square.hover { - background-position: -144px 0; - } - .iradio_square.checked { - background-position: -168px 0; - } - .iradio_square.disabled { - background-position: -192px 0; - cursor: default; - } - .iradio_square.checked.disabled { - background-position: -216px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_square, - .iradio_square { - background-image: url(square@2x.png); - -webkit-background-size: 240px 24px; - background-size: 240px 24px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/square/square.png b/assets/plugins/iCheck/square/square.png deleted file mode 100644 index 2a3c8811..00000000 Binary files a/assets/plugins/iCheck/square/square.png and /dev/null differ diff --git a/assets/plugins/iCheck/square/square@2x.png b/assets/plugins/iCheck/square/square@2x.png deleted file mode 100644 index 9b56c448..00000000 Binary files a/assets/plugins/iCheck/square/square@2x.png and /dev/null differ diff --git a/assets/plugins/iCheck/square/yellow.css b/assets/plugins/iCheck/square/yellow.css deleted file mode 100644 index 55113499..00000000 --- a/assets/plugins/iCheck/square/yellow.css +++ /dev/null @@ -1,62 +0,0 @@ -/* iCheck plugin Square skin, yellow ------------------------------------ */ -.icheckbox_square-yellow, -.iradio_square-yellow { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 22px; - height: 22px; - background: url(yellow.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_square-yellow { - background-position: 0 0; -} - .icheckbox_square-yellow.hover { - background-position: -24px 0; - } - .icheckbox_square-yellow.checked { - background-position: -48px 0; - } - .icheckbox_square-yellow.disabled { - background-position: -72px 0; - cursor: default; - } - .icheckbox_square-yellow.checked.disabled { - background-position: -96px 0; - } - -.iradio_square-yellow { - background-position: -120px 0; -} - .iradio_square-yellow.hover { - background-position: -144px 0; - } - .iradio_square-yellow.checked { - background-position: -168px 0; - } - .iradio_square-yellow.disabled { - background-position: -192px 0; - cursor: default; - } - .iradio_square-yellow.checked.disabled { - background-position: -216px 0; - } - -/* Retina support */ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (-moz-min-device-pixel-ratio: 1.5), - only screen and (-o-min-device-pixel-ratio: 3/2), - only screen and (min-device-pixel-ratio: 1.5) { - .icheckbox_square-yellow, - .iradio_square-yellow { - background-image: url(yellow@2x.png); - -webkit-background-size: 240px 24px; - background-size: 240px 24px; - } -} \ No newline at end of file diff --git a/assets/plugins/iCheck/square/yellow.png b/assets/plugins/iCheck/square/yellow.png deleted file mode 100644 index b6c03309..00000000 Binary files a/assets/plugins/iCheck/square/yellow.png and /dev/null differ diff --git a/assets/plugins/iCheck/square/yellow@2x.png b/assets/plugins/iCheck/square/yellow@2x.png deleted file mode 100644 index 6b8e328e..00000000 Binary files a/assets/plugins/iCheck/square/yellow@2x.png and /dev/null differ diff --git a/assets/plugins/input-mask/jquery.inputmask.date.extensions.js b/assets/plugins/input-mask/jquery.inputmask.date.extensions.js deleted file mode 100644 index 18f76c81..00000000 --- a/assets/plugins/input-mask/jquery.inputmask.date.extensions.js +++ /dev/null @@ -1,488 +0,0 @@ -/* -Input Mask plugin extensions -http://github.com/RobinHerbots/jquery.inputmask -Copyright (c) 2010 - 2014 Robin Herbots -Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) -Version: 0.0.0 - -Optional extensions on the jquery.inputmask base -*/ -(function ($) { - //date & time aliases - $.extend($.inputmask.defaults.definitions, { - 'h': { //hours - validator: "[01][0-9]|2[0-3]", - cardinality: 2, - prevalidator: [{ validator: "[0-2]", cardinality: 1 }] - }, - 's': { //seconds || minutes - validator: "[0-5][0-9]", - cardinality: 2, - prevalidator: [{ validator: "[0-5]", cardinality: 1 }] - }, - 'd': { //basic day - validator: "0[1-9]|[12][0-9]|3[01]", - cardinality: 2, - prevalidator: [{ validator: "[0-3]", cardinality: 1 }] - }, - 'm': { //basic month - validator: "0[1-9]|1[012]", - cardinality: 2, - prevalidator: [{ validator: "[01]", cardinality: 1 }] - }, - 'y': { //basic year - validator: "(19|20)\\d{2}", - cardinality: 4, - prevalidator: [ - { validator: "[12]", cardinality: 1 }, - { validator: "(19|20)", cardinality: 2 }, - { validator: "(19|20)\\d", cardinality: 3 } - ] - } - }); - $.extend($.inputmask.defaults.aliases, { - 'dd/mm/yyyy': { - mask: "1/2/y", - placeholder: "dd/mm/yyyy", - regex: { - val1pre: new RegExp("[0-3]"), //daypre - val1: new RegExp("0[1-9]|[12][0-9]|3[01]"), //day - val2pre: function (separator) { var escapedSeparator = $.inputmask.escapeRegex.call(this, separator); return new RegExp("((0[1-9]|[12][0-9]|3[01])" + escapedSeparator + "[01])"); }, //monthpre - val2: function (separator) { var escapedSeparator = $.inputmask.escapeRegex.call(this, separator); return new RegExp("((0[1-9]|[12][0-9])" + escapedSeparator + "(0[1-9]|1[012]))|(30" + escapedSeparator + "(0[13-9]|1[012]))|(31" + escapedSeparator + "(0[13578]|1[02]))"); }//month - }, - leapday: "29/02/", - separator: '/', - yearrange: { minyear: 1900, maxyear: 2099 }, - isInYearRange: function (chrs, minyear, maxyear) { - var enteredyear = parseInt(chrs.concat(minyear.toString().slice(chrs.length))); - var enteredyear2 = parseInt(chrs.concat(maxyear.toString().slice(chrs.length))); - return (enteredyear != NaN ? minyear <= enteredyear && enteredyear <= maxyear : false) || - (enteredyear2 != NaN ? minyear <= enteredyear2 && enteredyear2 <= maxyear : false); - }, - determinebaseyear: function (minyear, maxyear, hint) { - var currentyear = (new Date()).getFullYear(); - if (minyear > currentyear) return minyear; - if (maxyear < currentyear) { - var maxYearPrefix = maxyear.toString().slice(0, 2); - var maxYearPostfix = maxyear.toString().slice(2, 4); - while (maxyear < maxYearPrefix + hint) { - maxYearPrefix--; - } - var maxxYear = maxYearPrefix + maxYearPostfix; - return minyear > maxxYear ? minyear : maxxYear; - } - - return currentyear; - }, - onKeyUp: function (e, buffer, opts) { - var $input = $(this); - if (e.ctrlKey && e.keyCode == opts.keyCode.RIGHT) { - var today = new Date(); - $input.val(today.getDate().toString() + (today.getMonth() + 1).toString() + today.getFullYear().toString()); - } - }, - definitions: { - '1': { //val1 ~ day or month - validator: function (chrs, buffer, pos, strict, opts) { - var isValid = opts.regex.val1.test(chrs); - if (!strict && !isValid) { - if (chrs.charAt(1) == opts.separator || "-./".indexOf(chrs.charAt(1)) != -1) { - isValid = opts.regex.val1.test("0" + chrs.charAt(0)); - if (isValid) { - buffer[pos - 1] = "0"; - return { "pos": pos, "c": chrs.charAt(0) }; - } - } - } - return isValid; - }, - cardinality: 2, - prevalidator: [{ - validator: function (chrs, buffer, pos, strict, opts) { - var isValid = opts.regex.val1pre.test(chrs); - if (!strict && !isValid) { - isValid = opts.regex.val1.test("0" + chrs); - if (isValid) { - buffer[pos] = "0"; - pos++; - return { "pos": pos }; - } - } - return isValid; - }, cardinality: 1 - }] - }, - '2': { //val2 ~ day or month - validator: function (chrs, buffer, pos, strict, opts) { - var frontValue = buffer.join('').substr(0, 3); - if (frontValue.indexOf(opts.placeholder[0]) != -1) frontValue = "01" + opts.separator; - var isValid = opts.regex.val2(opts.separator).test(frontValue + chrs); - if (!strict && !isValid) { - if (chrs.charAt(1) == opts.separator || "-./".indexOf(chrs.charAt(1)) != -1) { - isValid = opts.regex.val2(opts.separator).test(frontValue + "0" + chrs.charAt(0)); - if (isValid) { - buffer[pos - 1] = "0"; - return { "pos": pos, "c": chrs.charAt(0) }; - } - } - } - return isValid; - }, - cardinality: 2, - prevalidator: [{ - validator: function (chrs, buffer, pos, strict, opts) { - var frontValue = buffer.join('').substr(0, 3); - if (frontValue.indexOf(opts.placeholder[0]) != -1) frontValue = "01" + opts.separator; - var isValid = opts.regex.val2pre(opts.separator).test(frontValue + chrs); - if (!strict && !isValid) { - isValid = opts.regex.val2(opts.separator).test(frontValue + "0" + chrs); - if (isValid) { - buffer[pos] = "0"; - pos++; - return { "pos": pos }; - } - } - return isValid; - }, cardinality: 1 - }] - }, - 'y': { //year - validator: function (chrs, buffer, pos, strict, opts) { - if (opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) { - var dayMonthValue = buffer.join('').substr(0, 6); - if (dayMonthValue != opts.leapday) - return true; - else { - var year = parseInt(chrs, 10);//detect leap year - if (year % 4 === 0) - if (year % 100 === 0) - if (year % 400 === 0) - return true; - else return false; - else return true; - else return false; - } - } else return false; - }, - cardinality: 4, - prevalidator: [ - { - validator: function (chrs, buffer, pos, strict, opts) { - var isValid = opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear); - if (!strict && !isValid) { - var yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs + "0").toString().slice(0, 1); - - isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear); - if (isValid) { - buffer[pos++] = yearPrefix[0]; - return { "pos": pos }; - } - yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs + "0").toString().slice(0, 2); - - isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear); - if (isValid) { - buffer[pos++] = yearPrefix[0]; - buffer[pos++] = yearPrefix[1]; - return { "pos": pos }; - } - } - return isValid; - }, - cardinality: 1 - }, - { - validator: function (chrs, buffer, pos, strict, opts) { - var isValid = opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear); - if (!strict && !isValid) { - var yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs).toString().slice(0, 2); - - isValid = opts.isInYearRange(chrs[0] + yearPrefix[1] + chrs[1], opts.yearrange.minyear, opts.yearrange.maxyear); - if (isValid) { - buffer[pos++] = yearPrefix[1]; - return { "pos": pos }; - } - - yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs).toString().slice(0, 2); - if (opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) { - var dayMonthValue = buffer.join('').substr(0, 6); - if (dayMonthValue != opts.leapday) - isValid = true; - else { - var year = parseInt(chrs, 10);//detect leap year - if (year % 4 === 0) - if (year % 100 === 0) - if (year % 400 === 0) - isValid = true; - else isValid = false; - else isValid = true; - else isValid = false; - } - } else isValid = false; - if (isValid) { - buffer[pos - 1] = yearPrefix[0]; - buffer[pos++] = yearPrefix[1]; - buffer[pos++] = chrs[0]; - return { "pos": pos }; - } - } - return isValid; - }, cardinality: 2 - }, - { - validator: function (chrs, buffer, pos, strict, opts) { - return opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear); - }, cardinality: 3 - } - ] - } - }, - insertMode: false, - autoUnmask: false - }, - 'mm/dd/yyyy': { - placeholder: "mm/dd/yyyy", - alias: "dd/mm/yyyy", //reuse functionality of dd/mm/yyyy alias - regex: { - val2pre: function (separator) { var escapedSeparator = $.inputmask.escapeRegex.call(this, separator); return new RegExp("((0[13-9]|1[012])" + escapedSeparator + "[0-3])|(02" + escapedSeparator + "[0-2])"); }, //daypre - val2: function (separator) { var escapedSeparator = $.inputmask.escapeRegex.call(this, separator); return new RegExp("((0[1-9]|1[012])" + escapedSeparator + "(0[1-9]|[12][0-9]))|((0[13-9]|1[012])" + escapedSeparator + "30)|((0[13578]|1[02])" + escapedSeparator + "31)"); }, //day - val1pre: new RegExp("[01]"), //monthpre - val1: new RegExp("0[1-9]|1[012]") //month - }, - leapday: "02/29/", - onKeyUp: function (e, buffer, opts) { - var $input = $(this); - if (e.ctrlKey && e.keyCode == opts.keyCode.RIGHT) { - var today = new Date(); - $input.val((today.getMonth() + 1).toString() + today.getDate().toString() + today.getFullYear().toString()); - } - } - }, - 'yyyy/mm/dd': { - mask: "y/1/2", - placeholder: "yyyy/mm/dd", - alias: "mm/dd/yyyy", - leapday: "/02/29", - onKeyUp: function (e, buffer, opts) { - var $input = $(this); - if (e.ctrlKey && e.keyCode == opts.keyCode.RIGHT) { - var today = new Date(); - $input.val(today.getFullYear().toString() + (today.getMonth() + 1).toString() + today.getDate().toString()); - } - }, - definitions: { - '2': { //val2 ~ day or month - validator: function (chrs, buffer, pos, strict, opts) { - var frontValue = buffer.join('').substr(5, 3); - if (frontValue.indexOf(opts.placeholder[5]) != -1) frontValue = "01" + opts.separator; - var isValid = opts.regex.val2(opts.separator).test(frontValue + chrs); - if (!strict && !isValid) { - if (chrs.charAt(1) == opts.separator || "-./".indexOf(chrs.charAt(1)) != -1) { - isValid = opts.regex.val2(opts.separator).test(frontValue + "0" + chrs.charAt(0)); - if (isValid) { - buffer[pos - 1] = "0"; - return { "pos": pos, "c": chrs.charAt(0) }; - } - } - } - - //check leap yeap - if (isValid) { - var dayMonthValue = buffer.join('').substr(4, 4) + chrs; - if (dayMonthValue != opts.leapday) - return true; - else { - var year = parseInt(buffer.join('').substr(0, 4), 10); //detect leap year - if (year % 4 === 0) - if (year % 100 === 0) - if (year % 400 === 0) - return true; - else return false; - else return true; - else return false; - } - } - - return isValid; - }, - cardinality: 2, - prevalidator: [{ - validator: function (chrs, buffer, pos, strict, opts) { - var frontValue = buffer.join('').substr(5, 3); - if (frontValue.indexOf(opts.placeholder[5]) != -1) frontValue = "01" + opts.separator; - var isValid = opts.regex.val2pre(opts.separator).test(frontValue + chrs); - if (!strict && !isValid) { - isValid = opts.regex.val2(opts.separator).test(frontValue + "0" + chrs); - if (isValid) { - buffer[pos] = "0"; - pos++; - return { "pos": pos }; - } - } - return isValid; - }, cardinality: 1 - }] - } - } - }, - 'dd.mm.yyyy': { - mask: "1.2.y", - placeholder: "dd.mm.yyyy", - leapday: "29.02.", - separator: '.', - alias: "dd/mm/yyyy" - }, - 'dd-mm-yyyy': { - mask: "1-2-y", - placeholder: "dd-mm-yyyy", - leapday: "29-02-", - separator: '-', - alias: "dd/mm/yyyy" - }, - 'mm.dd.yyyy': { - mask: "1.2.y", - placeholder: "mm.dd.yyyy", - leapday: "02.29.", - separator: '.', - alias: "mm/dd/yyyy" - }, - 'mm-dd-yyyy': { - mask: "1-2-y", - placeholder: "mm-dd-yyyy", - leapday: "02-29-", - separator: '-', - alias: "mm/dd/yyyy" - }, - 'yyyy.mm.dd': { - mask: "y.1.2", - placeholder: "yyyy.mm.dd", - leapday: ".02.29", - separator: '.', - alias: "yyyy/mm/dd" - }, - 'yyyy-mm-dd': { - mask: "y-1-2", - placeholder: "yyyy-mm-dd", - leapday: "-02-29", - separator: '-', - alias: "yyyy/mm/dd" - }, - 'datetime': { - mask: "1/2/y h:s", - placeholder: "dd/mm/yyyy hh:mm", - alias: "dd/mm/yyyy", - regex: { - hrspre: new RegExp("[012]"), //hours pre - hrs24: new RegExp("2[0-9]|1[3-9]"), - hrs: new RegExp("[01][0-9]|2[0-3]"), //hours - ampm: new RegExp("^[a|p|A|P][m|M]") - }, - timeseparator: ':', - hourFormat: "24", // or 12 - definitions: { - 'h': { //hours - validator: function (chrs, buffer, pos, strict, opts) { - var isValid = opts.regex.hrs.test(chrs); - if (!strict && !isValid) { - if (chrs.charAt(1) == opts.timeseparator || "-.:".indexOf(chrs.charAt(1)) != -1) { - isValid = opts.regex.hrs.test("0" + chrs.charAt(0)); - if (isValid) { - buffer[pos - 1] = "0"; - buffer[pos] = chrs.charAt(0); - pos++; - return { "pos": pos }; - } - } - } - - if (isValid && opts.hourFormat !== "24" && opts.regex.hrs24.test(chrs)) { - - var tmp = parseInt(chrs, 10); - - if (tmp == 24) { - buffer[pos + 5] = "a"; - buffer[pos + 6] = "m"; - } else { - buffer[pos + 5] = "p"; - buffer[pos + 6] = "m"; - } - - tmp = tmp - 12; - - if (tmp < 10) { - buffer[pos] = tmp.toString(); - buffer[pos - 1] = "0"; - } else { - buffer[pos] = tmp.toString().charAt(1); - buffer[pos - 1] = tmp.toString().charAt(0); - } - - return { "pos": pos, "c": buffer[pos] }; - } - - return isValid; - }, - cardinality: 2, - prevalidator: [{ - validator: function (chrs, buffer, pos, strict, opts) { - var isValid = opts.regex.hrspre.test(chrs); - if (!strict && !isValid) { - isValid = opts.regex.hrs.test("0" + chrs); - if (isValid) { - buffer[pos] = "0"; - pos++; - return { "pos": pos }; - } - } - return isValid; - }, cardinality: 1 - }] - }, - 't': { //am/pm - validator: function (chrs, buffer, pos, strict, opts) { - return opts.regex.ampm.test(chrs + "m"); - }, - casing: "lower", - cardinality: 1 - } - }, - insertMode: false, - autoUnmask: false - }, - 'datetime12': { - mask: "1/2/y h:s t\\m", - placeholder: "dd/mm/yyyy hh:mm xm", - alias: "datetime", - hourFormat: "12" - }, - 'hh:mm t': { - mask: "h:s t\\m", - placeholder: "hh:mm xm", - alias: "datetime", - hourFormat: "12" - }, - 'h:s t': { - mask: "h:s t\\m", - placeholder: "hh:mm xm", - alias: "datetime", - hourFormat: "12" - }, - 'hh:mm:ss': { - mask: "h:s:s", - autoUnmask: false - }, - 'hh:mm': { - mask: "h:s", - autoUnmask: false - }, - 'date': { - alias: "dd/mm/yyyy" // "mm/dd/yyyy" - }, - 'mm/yyyy': { - mask: "1/y", - placeholder: "mm/yyyy", - leapday: "donotuse", - separator: '/', - alias: "mm/dd/yyyy" - } - }); -})(jQuery); diff --git a/assets/plugins/input-mask/jquery.inputmask.extensions.js b/assets/plugins/input-mask/jquery.inputmask.extensions.js deleted file mode 100644 index c89f91ee..00000000 --- a/assets/plugins/input-mask/jquery.inputmask.extensions.js +++ /dev/null @@ -1,122 +0,0 @@ -/* -Input Mask plugin extensions -http://github.com/RobinHerbots/jquery.inputmask -Copyright (c) 2010 - 2014 Robin Herbots -Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) -Version: 0.0.0 - -Optional extensions on the jquery.inputmask base -*/ -(function ($) { - //extra definitions - $.extend($.inputmask.defaults.definitions, { - 'A': { - validator: "[A-Za-z]", - cardinality: 1, - casing: "upper" //auto uppercasing - }, - '#': { - validator: "[A-Za-z\u0410-\u044F\u0401\u04510-9]", - cardinality: 1, - casing: "upper" - } - }); - $.extend($.inputmask.defaults.aliases, { - 'url': { - mask: "ir", - placeholder: "", - separator: "", - defaultPrefix: "http://", - regex: { - urlpre1: new RegExp("[fh]"), - urlpre2: new RegExp("(ft|ht)"), - urlpre3: new RegExp("(ftp|htt)"), - urlpre4: new RegExp("(ftp:|http|ftps)"), - urlpre5: new RegExp("(ftp:/|ftps:|http:|https)"), - urlpre6: new RegExp("(ftp://|ftps:/|http:/|https:)"), - urlpre7: new RegExp("(ftp://|ftps://|http://|https:/)"), - urlpre8: new RegExp("(ftp://|ftps://|http://|https://)") - }, - definitions: { - 'i': { - validator: function (chrs, buffer, pos, strict, opts) { - return true; - }, - cardinality: 8, - prevalidator: (function () { - var result = [], prefixLimit = 8; - for (var i = 0; i < prefixLimit; i++) { - result[i] = (function () { - var j = i; - return { - validator: function (chrs, buffer, pos, strict, opts) { - if (opts.regex["urlpre" + (j + 1)]) { - var tmp = chrs, k; - if (((j + 1) - chrs.length) > 0) { - tmp = buffer.join('').substring(0, ((j + 1) - chrs.length)) + "" + tmp; - } - var isValid = opts.regex["urlpre" + (j + 1)].test(tmp); - if (!strict && !isValid) { - pos = pos - j; - for (k = 0; k < opts.defaultPrefix.length; k++) { - buffer[pos] = opts.defaultPrefix[k]; pos++; - } - for (k = 0; k < tmp.length - 1; k++) { - buffer[pos] = tmp[k]; pos++; - } - return { "pos": pos }; - } - return isValid; - } else { - return false; - } - }, cardinality: j - }; - })(); - } - return result; - })() - }, - "r": { - validator: ".", - cardinality: 50 - } - }, - insertMode: false, - autoUnmask: false - }, - "ip": { //ip-address mask - mask: ["[[x]y]z.[[x]y]z.[[x]y]z.x[yz]", "[[x]y]z.[[x]y]z.[[x]y]z.[[x]y][z]"], - definitions: { - 'x': { - validator: "[012]", - cardinality: 1, - definitionSymbol: "i" - }, - 'y': { - validator: function (chrs, buffer, pos, strict, opts) { - if (pos - 1 > -1 && buffer[pos - 1] != ".") - chrs = buffer[pos - 1] + chrs; - else chrs = "0" + chrs; - return new RegExp("2[0-5]|[01][0-9]").test(chrs); - }, - cardinality: 1, - definitionSymbol: "i" - }, - 'z': { - validator: function (chrs, buffer, pos, strict, opts) { - if (pos - 1 > -1 && buffer[pos - 1] != ".") { - chrs = buffer[pos - 1] + chrs; - if (pos - 2 > -1 && buffer[pos - 2] != ".") { - chrs = buffer[pos - 2] + chrs; - } else chrs = "0" + chrs; - } else chrs = "00" + chrs; - return new RegExp("25[0-5]|2[0-4][0-9]|[01][0-9][0-9]").test(chrs); - }, - cardinality: 1, - definitionSymbol: "i" - } - } - } - }); -})(jQuery); diff --git a/assets/plugins/input-mask/jquery.inputmask.js b/assets/plugins/input-mask/jquery.inputmask.js deleted file mode 100644 index 86cb3205..00000000 --- a/assets/plugins/input-mask/jquery.inputmask.js +++ /dev/null @@ -1,1627 +0,0 @@ -/** -* @license Input Mask plugin for jquery -* http://github.com/RobinHerbots/jquery.inputmask -* Copyright (c) 2010 - 2014 Robin Herbots -* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) -* Version: 0.0.0 -*/ - -(function ($) { - if ($.fn.inputmask === undefined) { - //helper functions - function isInputEventSupported(eventName) { - var el = document.createElement('input'), - eventName = 'on' + eventName, - isSupported = (eventName in el); - if (!isSupported) { - el.setAttribute(eventName, 'return;'); - isSupported = typeof el[eventName] == 'function'; - } - el = null; - return isSupported; - } - function resolveAlias(aliasStr, options, opts) { - var aliasDefinition = opts.aliases[aliasStr]; - if (aliasDefinition) { - if (aliasDefinition.alias) resolveAlias(aliasDefinition.alias, undefined, opts); //alias is another alias - $.extend(true, opts, aliasDefinition); //merge alias definition in the options - $.extend(true, opts, options); //reapply extra given options - return true; - } - return false; - } - function generateMaskSets(opts) { - var ms = []; - var genmasks = []; //used to keep track of the masks that where processed, to avoid duplicates - function getMaskTemplate(mask) { - if (opts.numericInput) { - mask = mask.split('').reverse().join(''); - } - var escaped = false, outCount = 0, greedy = opts.greedy, repeat = opts.repeat; - if (repeat == "*") greedy = false; - //if (greedy == true && opts.placeholder == "") opts.placeholder = " "; - if (mask.length == 1 && greedy == false && repeat != 0) { opts.placeholder = ""; } //hide placeholder with single non-greedy mask - var singleMask = $.map(mask.split(""), function (element, index) { - var outElem = []; - if (element == opts.escapeChar) { - escaped = true; - } - else if ((element != opts.optionalmarker.start && element != opts.optionalmarker.end) || escaped) { - var maskdef = opts.definitions[element]; - if (maskdef && !escaped) { - for (var i = 0; i < maskdef.cardinality; i++) { - outElem.push(opts.placeholder.charAt((outCount + i) % opts.placeholder.length)); - } - } else { - outElem.push(element); - escaped = false; - } - outCount += outElem.length; - return outElem; - } - }); - - //allocate repetitions - var repeatedMask = singleMask.slice(); - for (var i = 1; i < repeat && greedy; i++) { - repeatedMask = repeatedMask.concat(singleMask.slice()); - } - - return { "mask": repeatedMask, "repeat": repeat, "greedy": greedy }; - } - //test definition => {fn: RegExp/function, cardinality: int, optionality: bool, newBlockMarker: bool, offset: int, casing: null/upper/lower, def: definitionSymbol} - function getTestingChain(mask) { - if (opts.numericInput) { - mask = mask.split('').reverse().join(''); - } - var isOptional = false, escaped = false; - var newBlockMarker = false; //indicates wheter the begin/ending of a block should be indicated - - return $.map(mask.split(""), function (element, index) { - var outElem = []; - - if (element == opts.escapeChar) { - escaped = true; - } else if (element == opts.optionalmarker.start && !escaped) { - isOptional = true; - newBlockMarker = true; - } - else if (element == opts.optionalmarker.end && !escaped) { - isOptional = false; - newBlockMarker = true; - } - else { - var maskdef = opts.definitions[element]; - if (maskdef && !escaped) { - var prevalidators = maskdef["prevalidator"], prevalidatorsL = prevalidators ? prevalidators.length : 0; - for (var i = 1; i < maskdef.cardinality; i++) { - var prevalidator = prevalidatorsL >= i ? prevalidators[i - 1] : [], validator = prevalidator["validator"], cardinality = prevalidator["cardinality"]; - outElem.push({ fn: validator ? typeof validator == 'string' ? new RegExp(validator) : new function () { this.test = validator; } : new RegExp("."), cardinality: cardinality ? cardinality : 1, optionality: isOptional, newBlockMarker: isOptional == true ? newBlockMarker : false, offset: 0, casing: maskdef["casing"], def: maskdef["definitionSymbol"] || element }); - if (isOptional == true) //reset newBlockMarker - newBlockMarker = false; - } - outElem.push({ fn: maskdef.validator ? typeof maskdef.validator == 'string' ? new RegExp(maskdef.validator) : new function () { this.test = maskdef.validator; } : new RegExp("."), cardinality: maskdef.cardinality, optionality: isOptional, newBlockMarker: newBlockMarker, offset: 0, casing: maskdef["casing"], def: maskdef["definitionSymbol"] || element }); - } else { - outElem.push({ fn: null, cardinality: 0, optionality: isOptional, newBlockMarker: newBlockMarker, offset: 0, casing: null, def: element }); - escaped = false; - } - //reset newBlockMarker - newBlockMarker = false; - return outElem; - } - }); - } - function markOptional(maskPart) { //needed for the clearOptionalTail functionality - return opts.optionalmarker.start + maskPart + opts.optionalmarker.end; - } - function splitFirstOptionalEndPart(maskPart) { - var optionalStartMarkers = 0, optionalEndMarkers = 0, mpl = maskPart.length; - for (var i = 0; i < mpl; i++) { - if (maskPart.charAt(i) == opts.optionalmarker.start) { - optionalStartMarkers++; - } - if (maskPart.charAt(i) == opts.optionalmarker.end) { - optionalEndMarkers++; - } - if (optionalStartMarkers > 0 && optionalStartMarkers == optionalEndMarkers) - break; - } - var maskParts = [maskPart.substring(0, i)]; - if (i < mpl) { - maskParts.push(maskPart.substring(i + 1, mpl)); - } - return maskParts; - } - function splitFirstOptionalStartPart(maskPart) { - var mpl = maskPart.length; - for (var i = 0; i < mpl; i++) { - if (maskPart.charAt(i) == opts.optionalmarker.start) { - break; - } - } - var maskParts = [maskPart.substring(0, i)]; - if (i < mpl) { - maskParts.push(maskPart.substring(i + 1, mpl)); - } - return maskParts; - } - function generateMask(maskPrefix, maskPart, metadata) { - var maskParts = splitFirstOptionalEndPart(maskPart); - var newMask, maskTemplate; - - var masks = splitFirstOptionalStartPart(maskParts[0]); - if (masks.length > 1) { - newMask = maskPrefix + masks[0] + markOptional(masks[1]) + (maskParts.length > 1 ? maskParts[1] : ""); - if ($.inArray(newMask, genmasks) == -1 && newMask != "") { - genmasks.push(newMask); - maskTemplate = getMaskTemplate(newMask); - ms.push({ - "mask": newMask, - "_buffer": maskTemplate["mask"], - "buffer": maskTemplate["mask"].slice(), - "tests": getTestingChain(newMask), - "lastValidPosition": -1, - "greedy": maskTemplate["greedy"], - "repeat": maskTemplate["repeat"], - "metadata": metadata - }); - } - newMask = maskPrefix + masks[0] + (maskParts.length > 1 ? maskParts[1] : ""); - if ($.inArray(newMask, genmasks) == -1 && newMask != "") { - genmasks.push(newMask); - maskTemplate = getMaskTemplate(newMask); - ms.push({ - "mask": newMask, - "_buffer": maskTemplate["mask"], - "buffer": maskTemplate["mask"].slice(), - "tests": getTestingChain(newMask), - "lastValidPosition": -1, - "greedy": maskTemplate["greedy"], - "repeat": maskTemplate["repeat"], - "metadata": metadata - }); - } - if (splitFirstOptionalStartPart(masks[1]).length > 1) { //optional contains another optional - generateMask(maskPrefix + masks[0], masks[1] + maskParts[1], metadata); - } - if (maskParts.length > 1 && splitFirstOptionalStartPart(maskParts[1]).length > 1) { - generateMask(maskPrefix + masks[0] + markOptional(masks[1]), maskParts[1], metadata); - generateMask(maskPrefix + masks[0], maskParts[1], metadata); - } - } - else { - newMask = maskPrefix + maskParts; - if ($.inArray(newMask, genmasks) == -1 && newMask != "") { - genmasks.push(newMask); - maskTemplate = getMaskTemplate(newMask); - ms.push({ - "mask": newMask, - "_buffer": maskTemplate["mask"], - "buffer": maskTemplate["mask"].slice(), - "tests": getTestingChain(newMask), - "lastValidPosition": -1, - "greedy": maskTemplate["greedy"], - "repeat": maskTemplate["repeat"], - "metadata": metadata - }); - } - } - - } - - if ($.isFunction(opts.mask)) { //allow mask to be a preprocessing fn - should return a valid mask - opts.mask = opts.mask.call(this, opts); - } - if ($.isArray(opts.mask)) { - $.each(opts.mask, function (ndx, msk) { - if (msk["mask"] != undefined) { - generateMask("", msk["mask"].toString(), msk); - } else - generateMask("", msk.toString()); - }); - } else generateMask("", opts.mask.toString()); - - return opts.greedy ? ms : ms.sort(function (a, b) { return a["mask"].length - b["mask"].length; }); - } - - var msie10 = navigator.userAgent.match(new RegExp("msie 10", "i")) !== null, - iphone = navigator.userAgent.match(new RegExp("iphone", "i")) !== null, - android = navigator.userAgent.match(new RegExp("android.*safari.*", "i")) !== null, - androidchrome = navigator.userAgent.match(new RegExp("android.*chrome.*", "i")) !== null, - pasteEvent = isInputEventSupported('paste') ? 'paste' : isInputEventSupported('input') ? 'input' : "propertychange"; - - - //masking scope - //actionObj definition see below - function maskScope(masksets, activeMasksetIndex, opts, actionObj) { - var isRTL = false, - valueOnFocus = getActiveBuffer().join(''), - $el, chromeValueOnInput, - skipKeyPressEvent = false, //Safari 5.1.x - modal dialog fires keypress twice workaround - skipInputEvent = false, //skip when triggered from within inputmask - ignorable = false; - - - //maskset helperfunctions - - function getActiveMaskSet() { - return masksets[activeMasksetIndex]; - } - - function getActiveTests() { - return getActiveMaskSet()['tests']; - } - - function getActiveBufferTemplate() { - return getActiveMaskSet()['_buffer']; - } - - function getActiveBuffer() { - return getActiveMaskSet()['buffer']; - } - - function isValid(pos, c, strict) { //strict true ~ no correction or autofill - strict = strict === true; //always set a value to strict to prevent possible strange behavior in the extensions - - function _isValid(position, activeMaskset, c, strict) { - var testPos = determineTestPosition(position), loopend = c ? 1 : 0, chrs = '', buffer = activeMaskset["buffer"]; - for (var i = activeMaskset['tests'][testPos].cardinality; i > loopend; i--) { - chrs += getBufferElement(buffer, testPos - (i - 1)); - } - - if (c) { - chrs += c; - } - - //return is false or a json object => { pos: ??, c: ??} or true - return activeMaskset['tests'][testPos].fn != null ? - activeMaskset['tests'][testPos].fn.test(chrs, buffer, position, strict, opts) - : (c == getBufferElement(activeMaskset['_buffer'], position, true) || c == opts.skipOptionalPartCharacter) ? - { "refresh": true, c: getBufferElement(activeMaskset['_buffer'], position, true), pos: position } - : false; - } - - function PostProcessResults(maskForwards, results) { - var hasValidActual = false; - $.each(results, function (ndx, rslt) { - hasValidActual = $.inArray(rslt["activeMasksetIndex"], maskForwards) == -1 && rslt["result"] !== false; - if (hasValidActual) return false; - }); - if (hasValidActual) { //strip maskforwards - results = $.map(results, function (rslt, ndx) { - if ($.inArray(rslt["activeMasksetIndex"], maskForwards) == -1) { - return rslt; - } else { - masksets[rslt["activeMasksetIndex"]]["lastValidPosition"] = actualLVP; - } - }); - } else { //keep maskforwards with the least forward - var lowestPos = -1, lowestIndex = -1, rsltValid; - $.each(results, function (ndx, rslt) { - if ($.inArray(rslt["activeMasksetIndex"], maskForwards) != -1 && rslt["result"] !== false & (lowestPos == -1 || lowestPos > rslt["result"]["pos"])) { - lowestPos = rslt["result"]["pos"]; - lowestIndex = rslt["activeMasksetIndex"]; - } - }); - results = $.map(results, function (rslt, ndx) { - if ($.inArray(rslt["activeMasksetIndex"], maskForwards) != -1) { - if (rslt["result"]["pos"] == lowestPos) { - return rslt; - } else if (rslt["result"] !== false) { - for (var i = pos; i < lowestPos; i++) { - rsltValid = _isValid(i, masksets[rslt["activeMasksetIndex"]], masksets[lowestIndex]["buffer"][i], true); - if (rsltValid === false) { - masksets[rslt["activeMasksetIndex"]]["lastValidPosition"] = lowestPos - 1; - break; - } else { - setBufferElement(masksets[rslt["activeMasksetIndex"]]["buffer"], i, masksets[lowestIndex]["buffer"][i], true); - masksets[rslt["activeMasksetIndex"]]["lastValidPosition"] = i; - } - } - //also check check for the lowestpos with the new input - rsltValid = _isValid(lowestPos, masksets[rslt["activeMasksetIndex"]], c, true); - if (rsltValid !== false) { - setBufferElement(masksets[rslt["activeMasksetIndex"]]["buffer"], lowestPos, c, true); - masksets[rslt["activeMasksetIndex"]]["lastValidPosition"] = lowestPos; - } - //console.log("ndx " + rslt["activeMasksetIndex"] + " validate " + masksets[rslt["activeMasksetIndex"]]["buffer"].join('') + " lv " + masksets[rslt["activeMasksetIndex"]]['lastValidPosition']); - return rslt; - } - } - }); - } - return results; - } - - if (strict) { - var result = _isValid(pos, getActiveMaskSet(), c, strict); //only check validity in current mask when validating strict - if (result === true) { - result = { "pos": pos }; //always take a possible corrected maskposition into account - } - return result; - } - - var results = [], result = false, currentActiveMasksetIndex = activeMasksetIndex, - actualBuffer = getActiveBuffer().slice(), actualLVP = getActiveMaskSet()["lastValidPosition"], - actualPrevious = seekPrevious(pos), - maskForwards = []; - $.each(masksets, function (index, value) { - if (typeof (value) == "object") { - activeMasksetIndex = index; - - var maskPos = pos; - var lvp = getActiveMaskSet()['lastValidPosition'], - rsltValid; - if (lvp == actualLVP) { - if ((maskPos - actualLVP) > 1) { - for (var i = lvp == -1 ? 0 : lvp; i < maskPos; i++) { - rsltValid = _isValid(i, getActiveMaskSet(), actualBuffer[i], true); - if (rsltValid === false) { - break; - } else { - setBufferElement(getActiveBuffer(), i, actualBuffer[i], true); - if (rsltValid === true) { - rsltValid = { "pos": i }; //always take a possible corrected maskposition into account - } - var newValidPosition = rsltValid.pos || i; - if (getActiveMaskSet()['lastValidPosition'] < newValidPosition) - getActiveMaskSet()['lastValidPosition'] = newValidPosition; //set new position from isValid - } - } - } - //does the input match on a further position? - if (!isMask(maskPos) && !_isValid(maskPos, getActiveMaskSet(), c, strict)) { - var maxForward = seekNext(maskPos) - maskPos; - for (var fw = 0; fw < maxForward; fw++) { - if (_isValid(++maskPos, getActiveMaskSet(), c, strict) !== false) - break; - } - maskForwards.push(activeMasksetIndex); - //console.log('maskforward ' + activeMasksetIndex + " pos " + pos + " maskPos " + maskPos); - } - } - - if (getActiveMaskSet()['lastValidPosition'] >= actualLVP || activeMasksetIndex == currentActiveMasksetIndex) { - if (maskPos >= 0 && maskPos < getMaskLength()) { - result = _isValid(maskPos, getActiveMaskSet(), c, strict); - if (result !== false) { - if (result === true) { - result = { "pos": maskPos }; //always take a possible corrected maskposition into account - } - var newValidPosition = result.pos || maskPos; - if (getActiveMaskSet()['lastValidPosition'] < newValidPosition) - getActiveMaskSet()['lastValidPosition'] = newValidPosition; //set new position from isValid - } - //console.log("pos " + pos + " ndx " + activeMasksetIndex + " validate " + getActiveBuffer().join('') + " lv " + getActiveMaskSet()['lastValidPosition']); - results.push({ "activeMasksetIndex": index, "result": result }); - } - } - } - }); - activeMasksetIndex = currentActiveMasksetIndex; //reset activeMasksetIndex - - return PostProcessResults(maskForwards, results); //return results of the multiple mask validations - } - - function determineActiveMasksetIndex() { - var currentMasksetIndex = activeMasksetIndex, - highestValid = { "activeMasksetIndex": 0, "lastValidPosition": -1, "next": -1 }; - $.each(masksets, function (index, value) { - if (typeof (value) == "object") { - activeMasksetIndex = index; - if (getActiveMaskSet()['lastValidPosition'] > highestValid['lastValidPosition']) { - highestValid["activeMasksetIndex"] = index; - highestValid["lastValidPosition"] = getActiveMaskSet()['lastValidPosition']; - highestValid["next"] = seekNext(getActiveMaskSet()['lastValidPosition']); - } else if (getActiveMaskSet()['lastValidPosition'] == highestValid['lastValidPosition'] && - (highestValid['next'] == -1 || highestValid['next'] > seekNext(getActiveMaskSet()['lastValidPosition']))) { - highestValid["activeMasksetIndex"] = index; - highestValid["lastValidPosition"] = getActiveMaskSet()['lastValidPosition']; - highestValid["next"] = seekNext(getActiveMaskSet()['lastValidPosition']); - } - } - }); - - activeMasksetIndex = highestValid["lastValidPosition"] != -1 && masksets[currentMasksetIndex]["lastValidPosition"] == highestValid["lastValidPosition"] ? currentMasksetIndex : highestValid["activeMasksetIndex"]; - if (currentMasksetIndex != activeMasksetIndex) { - clearBuffer(getActiveBuffer(), seekNext(highestValid["lastValidPosition"]), getMaskLength()); - getActiveMaskSet()["writeOutBuffer"] = true; - } - $el.data('_inputmask')['activeMasksetIndex'] = activeMasksetIndex; //store the activeMasksetIndex - } - - function isMask(pos) { - var testPos = determineTestPosition(pos); - var test = getActiveTests()[testPos]; - - return test != undefined ? test.fn : false; - } - - function determineTestPosition(pos) { - return pos % getActiveTests().length; - } - - function getMaskLength() { - return opts.getMaskLength(getActiveBufferTemplate(), getActiveMaskSet()['greedy'], getActiveMaskSet()['repeat'], getActiveBuffer(), opts); - } - - //pos: from position - - function seekNext(pos) { - var maskL = getMaskLength(); - if (pos >= maskL) return maskL; - var position = pos; - while (++position < maskL && !isMask(position)) { - } - return position; - } - - //pos: from position - - function seekPrevious(pos) { - var position = pos; - if (position <= 0) return 0; - - while (--position > 0 && !isMask(position)) { - } - return position; - } - - function setBufferElement(buffer, position, element, autoPrepare) { - if (autoPrepare) position = prepareBuffer(buffer, position); - - var test = getActiveTests()[determineTestPosition(position)]; - var elem = element; - if (elem != undefined && test != undefined) { - switch (test.casing) { - case "upper": - elem = element.toUpperCase(); - break; - case "lower": - elem = element.toLowerCase(); - break; - } - } - - buffer[position] = elem; - } - - function getBufferElement(buffer, position, autoPrepare) { - if (autoPrepare) position = prepareBuffer(buffer, position); - return buffer[position]; - } - - //needed to handle the non-greedy mask repetitions - - function prepareBuffer(buffer, position) { - var j; - while (buffer[position] == undefined && buffer.length < getMaskLength()) { - j = 0; - while (getActiveBufferTemplate()[j] !== undefined) { //add a new buffer - buffer.push(getActiveBufferTemplate()[j++]); - } - } - - return position; - } - - function writeBuffer(input, buffer, caretPos) { - input._valueSet(buffer.join('')); - if (caretPos != undefined) { - caret(input, caretPos); - } - } - - function clearBuffer(buffer, start, end, stripNomasks) { - for (var i = start, maskL = getMaskLength() ; i < end && i < maskL; i++) { - if (stripNomasks === true) { - if (!isMask(i)) - setBufferElement(buffer, i, ""); - } else - setBufferElement(buffer, i, getBufferElement(getActiveBufferTemplate().slice(), i, true)); - } - } - - function setReTargetPlaceHolder(buffer, pos) { - var testPos = determineTestPosition(pos); - setBufferElement(buffer, pos, getBufferElement(getActiveBufferTemplate(), testPos)); - } - - function getPlaceHolder(pos) { - return opts.placeholder.charAt(pos % opts.placeholder.length); - } - - function checkVal(input, writeOut, strict, nptvl, intelliCheck) { - var inputValue = nptvl != undefined ? nptvl.slice() : truncateInput(input._valueGet()).split(''); - - $.each(masksets, function (ndx, ms) { - if (typeof (ms) == "object") { - ms["buffer"] = ms["_buffer"].slice(); - ms["lastValidPosition"] = -1; - ms["p"] = -1; - } - }); - if (strict !== true) activeMasksetIndex = 0; - if (writeOut) input._valueSet(""); //initial clear - var ml = getMaskLength(); - $.each(inputValue, function (ndx, charCode) { - if (intelliCheck === true) { - var p = getActiveMaskSet()["p"], lvp = p == -1 ? p : seekPrevious(p), - pos = lvp == -1 ? ndx : seekNext(lvp); - if ($.inArray(charCode, getActiveBufferTemplate().slice(lvp + 1, pos)) == -1) { - keypressEvent.call(input, undefined, true, charCode.charCodeAt(0), writeOut, strict, ndx); - } - } else { - keypressEvent.call(input, undefined, true, charCode.charCodeAt(0), writeOut, strict, ndx); - } - }); - - if (strict === true && getActiveMaskSet()["p"] != -1) { - getActiveMaskSet()["lastValidPosition"] = seekPrevious(getActiveMaskSet()["p"]); - } - } - - function escapeRegex(str) { - return $.inputmask.escapeRegex.call(this, str); - } - - function truncateInput(inputValue) { - return inputValue.replace(new RegExp("(" + escapeRegex(getActiveBufferTemplate().join('')) + ")*$"), ""); - } - - function clearOptionalTail(input) { - var buffer = getActiveBuffer(), tmpBuffer = buffer.slice(), testPos, pos; - for (var pos = tmpBuffer.length - 1; pos >= 0; pos--) { - var testPos = determineTestPosition(pos); - if (getActiveTests()[testPos].optionality) { - if (!isMask(pos) || !isValid(pos, buffer[pos], true)) - tmpBuffer.pop(); - else break; - } else break; - } - writeBuffer(input, tmpBuffer); - } - - function unmaskedvalue($input, skipDatepickerCheck) { - if (getActiveTests() && (skipDatepickerCheck === true || !$input.hasClass('hasDatepicker'))) { - //checkVal(input, false, true); - var umValue = $.map(getActiveBuffer(), function (element, index) { - return isMask(index) && isValid(index, element, true) ? element : null; - }); - var unmaskedValue = (isRTL ? umValue.reverse() : umValue).join(''); - return opts.onUnMask != undefined ? opts.onUnMask.call(this, getActiveBuffer().join(''), unmaskedValue) : unmaskedValue; - } else { - return $input[0]._valueGet(); - } - } - - function TranslatePosition(pos) { - if (isRTL && typeof pos == 'number' && (!opts.greedy || opts.placeholder != "")) { - var bffrLght = getActiveBuffer().length; - pos = bffrLght - pos; - } - return pos; - } - - function caret(input, begin, end) { - var npt = input.jquery && input.length > 0 ? input[0] : input, range; - if (typeof begin == 'number') { - begin = TranslatePosition(begin); - end = TranslatePosition(end); - if (!$(input).is(':visible')) { - return; - } - end = (typeof end == 'number') ? end : begin; - npt.scrollLeft = npt.scrollWidth; - if (opts.insertMode == false && begin == end) end++; //set visualization for insert/overwrite mode - if (npt.setSelectionRange) { - npt.selectionStart = begin; - npt.selectionEnd = android ? begin : end; - - } else if (npt.createTextRange) { - range = npt.createTextRange(); - range.collapse(true); - range.moveEnd('character', end); - range.moveStart('character', begin); - range.select(); - } - } else { - if (!$(input).is(':visible')) { - return { "begin": 0, "end": 0 }; - } - if (npt.setSelectionRange) { - begin = npt.selectionStart; - end = npt.selectionEnd; - } else if (document.selection && document.selection.createRange) { - range = document.selection.createRange(); - begin = 0 - range.duplicate().moveStart('character', -100000); - end = begin + range.text.length; - } - begin = TranslatePosition(begin); - end = TranslatePosition(end); - return { "begin": begin, "end": end }; - } - } - - function isComplete(buffer) { //return true / false / undefined (repeat *) - if (opts.repeat == "*") return undefined; - var complete = false, highestValidPosition = 0, currentActiveMasksetIndex = activeMasksetIndex; - $.each(masksets, function (ndx, ms) { - if (typeof (ms) == "object") { - activeMasksetIndex = ndx; - var aml = seekPrevious(getMaskLength()); - if (ms["lastValidPosition"] >= highestValidPosition && ms["lastValidPosition"] == aml) { - var msComplete = true; - for (var i = 0; i <= aml; i++) { - var mask = isMask(i), testPos = determineTestPosition(i); - if ((mask && (buffer[i] == undefined || buffer[i] == getPlaceHolder(i))) || (!mask && buffer[i] != getActiveBufferTemplate()[testPos])) { - msComplete = false; - break; - } - } - complete = complete || msComplete; - if (complete) //break loop - return false; - } - highestValidPosition = ms["lastValidPosition"]; - } - }); - activeMasksetIndex = currentActiveMasksetIndex; //reset activeMaskset - return complete; - } - - function isSelection(begin, end) { - return isRTL ? (begin - end) > 1 || ((begin - end) == 1 && opts.insertMode) : - (end - begin) > 1 || ((end - begin) == 1 && opts.insertMode); - } - - - //private functions - function installEventRuler(npt) { - var events = $._data(npt).events; - - $.each(events, function (eventType, eventHandlers) { - $.each(eventHandlers, function (ndx, eventHandler) { - if (eventHandler.namespace == "inputmask") { - if (eventHandler.type != "setvalue") { - var handler = eventHandler.handler; - eventHandler.handler = function (e) { - if (this.readOnly || this.disabled) - e.preventDefault; - else - return handler.apply(this, arguments); - }; - } - } - }); - }); - } - - function patchValueProperty(npt) { - var valueProperty; - if (Object.getOwnPropertyDescriptor) - valueProperty = Object.getOwnPropertyDescriptor(npt, "value"); - if (valueProperty && valueProperty.get) { - if (!npt._valueGet) { - var valueGet = valueProperty.get; - var valueSet = valueProperty.set; - npt._valueGet = function () { - return isRTL ? valueGet.call(this).split('').reverse().join('') : valueGet.call(this); - }; - npt._valueSet = function (value) { - valueSet.call(this, isRTL ? value.split('').reverse().join('') : value); - }; - - Object.defineProperty(npt, "value", { - get: function () { - var $self = $(this), inputData = $(this).data('_inputmask'), masksets = inputData['masksets'], - activeMasksetIndex = inputData['activeMasksetIndex']; - return inputData && inputData['opts'].autoUnmask ? $self.inputmask('unmaskedvalue') : valueGet.call(this) != masksets[activeMasksetIndex]['_buffer'].join('') ? valueGet.call(this) : ''; - }, - set: function (value) { - valueSet.call(this, value); - $(this).triggerHandler('setvalue.inputmask'); - } - }); - } - } else if (document.__lookupGetter__ && npt.__lookupGetter__("value")) { - if (!npt._valueGet) { - var valueGet = npt.__lookupGetter__("value"); - var valueSet = npt.__lookupSetter__("value"); - npt._valueGet = function () { - return isRTL ? valueGet.call(this).split('').reverse().join('') : valueGet.call(this); - }; - npt._valueSet = function (value) { - valueSet.call(this, isRTL ? value.split('').reverse().join('') : value); - }; - - npt.__defineGetter__("value", function () { - var $self = $(this), inputData = $(this).data('_inputmask'), masksets = inputData['masksets'], - activeMasksetIndex = inputData['activeMasksetIndex']; - return inputData && inputData['opts'].autoUnmask ? $self.inputmask('unmaskedvalue') : valueGet.call(this) != masksets[activeMasksetIndex]['_buffer'].join('') ? valueGet.call(this) : ''; - }); - npt.__defineSetter__("value", function (value) { - valueSet.call(this, value); - $(this).triggerHandler('setvalue.inputmask'); - }); - } - } else { - if (!npt._valueGet) { - npt._valueGet = function () { return isRTL ? this.value.split('').reverse().join('') : this.value; }; - npt._valueSet = function (value) { this.value = isRTL ? value.split('').reverse().join('') : value; }; - } - if ($.valHooks.text == undefined || $.valHooks.text.inputmaskpatch != true) { - var valueGet = $.valHooks.text && $.valHooks.text.get ? $.valHooks.text.get : function (elem) { return elem.value; }; - var valueSet = $.valHooks.text && $.valHooks.text.set ? $.valHooks.text.set : function (elem, value) { - elem.value = value; - return elem; - }; - - jQuery.extend($.valHooks, { - text: { - get: function (elem) { - var $elem = $(elem); - if ($elem.data('_inputmask')) { - if ($elem.data('_inputmask')['opts'].autoUnmask) - return $elem.inputmask('unmaskedvalue'); - else { - var result = valueGet(elem), - inputData = $elem.data('_inputmask'), masksets = inputData['masksets'], - activeMasksetIndex = inputData['activeMasksetIndex']; - return result != masksets[activeMasksetIndex]['_buffer'].join('') ? result : ''; - } - } else return valueGet(elem); - }, - set: function (elem, value) { - var $elem = $(elem); - var result = valueSet(elem, value); - if ($elem.data('_inputmask')) $elem.triggerHandler('setvalue.inputmask'); - return result; - }, - inputmaskpatch: true - } - }); - } - } - } - - //shift chars to left from start to end and put c at end position if defined - - function shiftL(start, end, c, maskJumps) { - var buffer = getActiveBuffer(); - if (maskJumps !== false) //jumping over nonmask position - while (!isMask(start) && start - 1 >= 0) start--; - for (var i = start; i < end && i < getMaskLength() ; i++) { - if (isMask(i)) { - setReTargetPlaceHolder(buffer, i); - var j = seekNext(i); - var p = getBufferElement(buffer, j); - if (p != getPlaceHolder(j)) { - if (j < getMaskLength() && isValid(i, p, true) !== false && getActiveTests()[determineTestPosition(i)].def == getActiveTests()[determineTestPosition(j)].def) { - setBufferElement(buffer, i, p, true); - } else { - if (isMask(i)) - break; - } - } - } else { - setReTargetPlaceHolder(buffer, i); - } - } - if (c != undefined) - setBufferElement(buffer, seekPrevious(end), c); - - if (getActiveMaskSet()["greedy"] == false) { - var trbuffer = truncateInput(buffer.join('')).split(''); - buffer.length = trbuffer.length; - for (var i = 0, bl = buffer.length; i < bl; i++) { - buffer[i] = trbuffer[i]; - } - if (buffer.length == 0) getActiveMaskSet()["buffer"] = getActiveBufferTemplate().slice(); - } - return start; //return the used start position - } - - function shiftR(start, end, c) { - var buffer = getActiveBuffer(); - if (getBufferElement(buffer, start, true) != getPlaceHolder(start)) { - for (var i = seekPrevious(end) ; i > start && i >= 0; i--) { - if (isMask(i)) { - var j = seekPrevious(i); - var t = getBufferElement(buffer, j); - if (t != getPlaceHolder(j)) { - if (isValid(j, t, true) !== false && getActiveTests()[determineTestPosition(i)].def == getActiveTests()[determineTestPosition(j)].def) { - setBufferElement(buffer, i, t, true); - setReTargetPlaceHolder(buffer, j); - } //else break; - } - } else - setReTargetPlaceHolder(buffer, i); - } - } - if (c != undefined && getBufferElement(buffer, start) == getPlaceHolder(start)) - setBufferElement(buffer, start, c); - var lengthBefore = buffer.length; - if (getActiveMaskSet()["greedy"] == false) { - var trbuffer = truncateInput(buffer.join('')).split(''); - buffer.length = trbuffer.length; - for (var i = 0, bl = buffer.length; i < bl; i++) { - buffer[i] = trbuffer[i]; - } - if (buffer.length == 0) getActiveMaskSet()["buffer"] = getActiveBufferTemplate().slice(); - } - return end - (lengthBefore - buffer.length); //return new start position - } - - function HandleRemove(input, k, pos) { - if (opts.numericInput || isRTL) { - switch (k) { - case opts.keyCode.BACKSPACE: - k = opts.keyCode.DELETE; - break; - case opts.keyCode.DELETE: - k = opts.keyCode.BACKSPACE; - break; - } - if (isRTL) { - var pend = pos.end; - pos.end = pos.begin; - pos.begin = pend; - } - } - - var isSelection = true; - if (pos.begin == pos.end) { - var posBegin = k == opts.keyCode.BACKSPACE ? pos.begin - 1 : pos.begin; - if (opts.isNumeric && opts.radixPoint != "" && getActiveBuffer()[posBegin] == opts.radixPoint) { - pos.begin = (getActiveBuffer().length - 1 == posBegin) /* radixPoint is latest? delete it */ ? pos.begin : k == opts.keyCode.BACKSPACE ? posBegin : seekNext(posBegin); - pos.end = pos.begin; - } - isSelection = false; - if (k == opts.keyCode.BACKSPACE) - pos.begin--; - else if (k == opts.keyCode.DELETE) - pos.end++; - } else if (pos.end - pos.begin == 1 && !opts.insertMode) { - isSelection = false; - if (k == opts.keyCode.BACKSPACE) - pos.begin--; - } - - clearBuffer(getActiveBuffer(), pos.begin, pos.end); - - var ml = getMaskLength(); - if (opts.greedy == false) { - shiftL(pos.begin, ml, undefined, !isRTL && (k == opts.keyCode.BACKSPACE && !isSelection)); - } else { - var newpos = pos.begin; - for (var i = pos.begin; i < pos.end; i++) { //seeknext to skip placeholders at start in selection - if (isMask(i) || !isSelection) - newpos = shiftL(pos.begin, ml, undefined, !isRTL && (k == opts.keyCode.BACKSPACE && !isSelection)); - } - if (!isSelection) pos.begin = newpos; - } - var firstMaskPos = seekNext(-1); - clearBuffer(getActiveBuffer(), pos.begin, pos.end, true); - checkVal(input, false, masksets[1] == undefined || firstMaskPos >= pos.end, getActiveBuffer()); - if (getActiveMaskSet()['lastValidPosition'] < firstMaskPos) { - getActiveMaskSet()["lastValidPosition"] = -1; - getActiveMaskSet()["p"] = firstMaskPos; - } else { - getActiveMaskSet()["p"] = pos.begin; - } - } - - function keydownEvent(e) { - //Safari 5.1.x - modal dialog fires keypress twice workaround - skipKeyPressEvent = false; - var input = this, $input = $(input), k = e.keyCode, pos = caret(input); - - //backspace, delete, and escape get special treatment - if (k == opts.keyCode.BACKSPACE || k == opts.keyCode.DELETE || (iphone && k == 127) || e.ctrlKey && k == 88) { //backspace/delete - e.preventDefault(); //stop default action but allow propagation - if (k == 88) valueOnFocus = getActiveBuffer().join(''); - HandleRemove(input, k, pos); - determineActiveMasksetIndex(); - writeBuffer(input, getActiveBuffer(), getActiveMaskSet()["p"]); - if (input._valueGet() == getActiveBufferTemplate().join('')) - $input.trigger('cleared'); - - if (opts.showTooltip) { //update tooltip - $input.prop("title", getActiveMaskSet()["mask"]); - } - } else if (k == opts.keyCode.END || k == opts.keyCode.PAGE_DOWN) { //when END or PAGE_DOWN pressed set position at lastmatch - setTimeout(function () { - var caretPos = seekNext(getActiveMaskSet()["lastValidPosition"]); - if (!opts.insertMode && caretPos == getMaskLength() && !e.shiftKey) caretPos--; - caret(input, e.shiftKey ? pos.begin : caretPos, caretPos); - }, 0); - } else if ((k == opts.keyCode.HOME && !e.shiftKey) || k == opts.keyCode.PAGE_UP) { //Home or page_up - caret(input, 0, e.shiftKey ? pos.begin : 0); - } else if (k == opts.keyCode.ESCAPE || (k == 90 && e.ctrlKey)) { //escape && undo - checkVal(input, true, false, valueOnFocus.split('')); - $input.click(); - } else if (k == opts.keyCode.INSERT && !(e.shiftKey || e.ctrlKey)) { //insert - opts.insertMode = !opts.insertMode; - caret(input, !opts.insertMode && pos.begin == getMaskLength() ? pos.begin - 1 : pos.begin); - } else if (opts.insertMode == false && !e.shiftKey) { - if (k == opts.keyCode.RIGHT) { - setTimeout(function () { - var caretPos = caret(input); - caret(input, caretPos.begin); - }, 0); - } else if (k == opts.keyCode.LEFT) { - setTimeout(function () { - var caretPos = caret(input); - caret(input, caretPos.begin - 1); - }, 0); - } - } - - var currentCaretPos = caret(input); - if (opts.onKeyDown.call(this, e, getActiveBuffer(), opts) === true) //extra stuff to execute on keydown - caret(input, currentCaretPos.begin, currentCaretPos.end); - ignorable = $.inArray(k, opts.ignorables) != -1; - } - - - function keypressEvent(e, checkval, k, writeOut, strict, ndx) { - //Safari 5.1.x - modal dialog fires keypress twice workaround - if (k == undefined && skipKeyPressEvent) return false; - skipKeyPressEvent = true; - - var input = this, $input = $(input); - - e = e || window.event; - var k = checkval ? k : (e.which || e.charCode || e.keyCode); - - if (checkval !== true && (!(e.ctrlKey && e.altKey) && (e.ctrlKey || e.metaKey || ignorable))) { - return true; - } else { - if (k) { - //special treat the decimal separator - if (checkval !== true && k == 46 && e.shiftKey == false && opts.radixPoint == ",") k = 44; - - var pos, results, result, c = String.fromCharCode(k); - if (checkval) { - var pcaret = strict ? ndx : getActiveMaskSet()["lastValidPosition"] + 1; - pos = { begin: pcaret, end: pcaret }; - } else { - pos = caret(input); - } - - //should we clear a possible selection?? - var isSlctn = isSelection(pos.begin, pos.end), redetermineLVP = false, - initialIndex = activeMasksetIndex; - if (isSlctn) { - activeMasksetIndex = initialIndex; - $.each(masksets, function (ndx, lmnt) { //init undobuffer for recovery when not valid - if (typeof (lmnt) == "object") { - activeMasksetIndex = ndx; - getActiveMaskSet()["undoBuffer"] = getActiveBuffer().join(''); - } - }); - HandleRemove(input, opts.keyCode.DELETE, pos); - if (!opts.insertMode) { //preserve some space - $.each(masksets, function (ndx, lmnt) { - if (typeof (lmnt) == "object") { - activeMasksetIndex = ndx; - shiftR(pos.begin, getMaskLength()); - getActiveMaskSet()["lastValidPosition"] = seekNext(getActiveMaskSet()["lastValidPosition"]); - } - }); - } - activeMasksetIndex = initialIndex; //restore index - } - - var radixPosition = getActiveBuffer().join('').indexOf(opts.radixPoint); - if (opts.isNumeric && checkval !== true && radixPosition != -1) { - if (opts.greedy && pos.begin <= radixPosition) { - pos.begin = seekPrevious(pos.begin); - pos.end = pos.begin; - } else if (c == opts.radixPoint) { - pos.begin = radixPosition; - pos.end = pos.begin; - } - } - - - var p = pos.begin; - results = isValid(p, c, strict); - if (strict === true) results = [{ "activeMasksetIndex": activeMasksetIndex, "result": results }]; - var minimalForwardPosition = -1; - $.each(results, function (index, result) { - activeMasksetIndex = result["activeMasksetIndex"]; - getActiveMaskSet()["writeOutBuffer"] = true; - var np = result["result"]; - if (np !== false) { - var refresh = false, buffer = getActiveBuffer(); - if (np !== true) { - refresh = np["refresh"]; //only rewrite buffer from isValid - p = np.pos != undefined ? np.pos : p; //set new position from isValid - c = np.c != undefined ? np.c : c; //set new char from isValid - } - if (refresh !== true) { - if (opts.insertMode == true) { - var lastUnmaskedPosition = getMaskLength(); - var bfrClone = buffer.slice(); - while (getBufferElement(bfrClone, lastUnmaskedPosition, true) != getPlaceHolder(lastUnmaskedPosition) && lastUnmaskedPosition >= p) { - lastUnmaskedPosition = lastUnmaskedPosition == 0 ? -1 : seekPrevious(lastUnmaskedPosition); - } - if (lastUnmaskedPosition >= p) { - shiftR(p, getMaskLength(), c); - //shift the lvp if needed - var lvp = getActiveMaskSet()["lastValidPosition"], nlvp = seekNext(lvp); - if (nlvp != getMaskLength() && lvp >= p && (getBufferElement(getActiveBuffer(), nlvp, true) != getPlaceHolder(nlvp))) { - getActiveMaskSet()["lastValidPosition"] = nlvp; - } - } else getActiveMaskSet()["writeOutBuffer"] = false; - } else setBufferElement(buffer, p, c, true); - if (minimalForwardPosition == -1 || minimalForwardPosition > seekNext(p)) { - minimalForwardPosition = seekNext(p); - } - } else if (!strict) { - var nextPos = p < getMaskLength() ? p + 1 : p; - if (minimalForwardPosition == -1 || minimalForwardPosition > nextPos) { - minimalForwardPosition = nextPos; - } - } - if (minimalForwardPosition > getActiveMaskSet()["p"]) - getActiveMaskSet()["p"] = minimalForwardPosition; //needed for checkval strict - } - }); - - if (strict !== true) { - activeMasksetIndex = initialIndex; - determineActiveMasksetIndex(); - } - if (writeOut !== false) { - $.each(results, function (ndx, rslt) { - if (rslt["activeMasksetIndex"] == activeMasksetIndex) { - result = rslt; - return false; - } - }); - if (result != undefined) { - var self = this; - setTimeout(function () { opts.onKeyValidation.call(self, result["result"], opts); }, 0); - if (getActiveMaskSet()["writeOutBuffer"] && result["result"] !== false) { - var buffer = getActiveBuffer(); - - var newCaretPosition; - if (checkval) { - newCaretPosition = undefined; - } else if (opts.numericInput) { - if (p > radixPosition) { - newCaretPosition = seekPrevious(minimalForwardPosition); - } else if (c == opts.radixPoint) { - newCaretPosition = minimalForwardPosition - 1; - } else newCaretPosition = seekPrevious(minimalForwardPosition - 1); - } else { - newCaretPosition = minimalForwardPosition; - } - - writeBuffer(input, buffer, newCaretPosition); - if (checkval !== true) { - setTimeout(function () { //timeout needed for IE - if (isComplete(buffer) === true) - $input.trigger("complete"); - skipInputEvent = true; - $input.trigger("input"); - }, 0); - } - } else if (isSlctn) { - getActiveMaskSet()["buffer"] = getActiveMaskSet()["undoBuffer"].split(''); - } - } - } - - if (opts.showTooltip) { //update tooltip - $input.prop("title", getActiveMaskSet()["mask"]); - } - - //needed for IE8 and below - if (e) e.preventDefault ? e.preventDefault() : e.returnValue = false; - } - } - } - - function keyupEvent(e) { - var $input = $(this), input = this, k = e.keyCode, buffer = getActiveBuffer(); - - if (androidchrome && k == opts.keyCode.BACKSPACE) { - if (chromeValueOnInput == input._valueGet()) - keydownEvent.call(this, e); - } - - opts.onKeyUp.call(this, e, buffer, opts); //extra stuff to execute on keyup - if (k == opts.keyCode.TAB && opts.showMaskOnFocus) { - if ($input.hasClass('focus.inputmask') && input._valueGet().length == 0) { - buffer = getActiveBufferTemplate().slice(); - writeBuffer(input, buffer); - caret(input, 0); - valueOnFocus = getActiveBuffer().join(''); - } else { - writeBuffer(input, buffer); - if (buffer.join('') == getActiveBufferTemplate().join('') && $.inArray(opts.radixPoint, buffer) != -1) { - caret(input, TranslatePosition(0)); - $input.click(); - } else - caret(input, TranslatePosition(0), TranslatePosition(getMaskLength())); - } - } - } - - function inputEvent(e) { - if (skipInputEvent === true) { - skipInputEvent = false; - return true; - } - var input = this, $input = $(input); - - chromeValueOnInput = getActiveBuffer().join(''); - checkVal(input, false, false); - writeBuffer(input, getActiveBuffer()); - if (isComplete(getActiveBuffer()) === true) - $input.trigger("complete"); - $input.click(); - } - - function mask(el) { - $el = $(el); - if ($el.is(":input")) { - //store tests & original buffer in the input element - used to get the unmasked value - $el.data('_inputmask', { - 'masksets': masksets, - 'activeMasksetIndex': activeMasksetIndex, - 'opts': opts, - 'isRTL': false - }); - - //show tooltip - if (opts.showTooltip) { - $el.prop("title", getActiveMaskSet()["mask"]); - } - - //correct greedy setting if needed - getActiveMaskSet()['greedy'] = getActiveMaskSet()['greedy'] ? getActiveMaskSet()['greedy'] : getActiveMaskSet()['repeat'] == 0; - - //handle maxlength attribute - if ($el.attr("maxLength") != null) //only when the attribute is set - { - var maxLength = $el.prop('maxLength'); - if (maxLength > -1) { //handle *-repeat - $.each(masksets, function (ndx, ms) { - if (typeof (ms) == "object") { - if (ms["repeat"] == "*") { - ms["repeat"] = maxLength; - } - } - }); - } - if (getMaskLength() >= maxLength && maxLength > -1) { //FF sets no defined max length to -1 - if (maxLength < getActiveBufferTemplate().length) getActiveBufferTemplate().length = maxLength; - if (getActiveMaskSet()['greedy'] == false) { - getActiveMaskSet()['repeat'] = Math.round(maxLength / getActiveBufferTemplate().length); - } - $el.prop('maxLength', getMaskLength() * 2); - } - } - - patchValueProperty(el); - - if (opts.numericInput) opts.isNumeric = opts.numericInput; - if (el.dir == "rtl" || (opts.numericInput && opts.rightAlignNumerics) || (opts.isNumeric && opts.rightAlignNumerics)) - $el.css("text-align", "right"); - - if (el.dir == "rtl" || opts.numericInput) { - el.dir = "ltr"; - $el.removeAttr("dir"); - var inputData = $el.data('_inputmask'); - inputData['isRTL'] = true; - $el.data('_inputmask', inputData); - isRTL = true; - } - - //unbind all events - to make sure that no other mask will interfere when re-masking - $el.unbind(".inputmask"); - $el.removeClass('focus.inputmask'); - //bind events - $el.closest('form').bind("submit", function () { //trigger change on submit if any - if (valueOnFocus != getActiveBuffer().join('')) { - $el.change(); - } - }).bind('reset', function () { - setTimeout(function () { - $el.trigger("setvalue"); - }, 0); - }); - $el.bind("mouseenter.inputmask", function () { - var $input = $(this), input = this; - if (!$input.hasClass('focus.inputmask') && opts.showMaskOnHover) { - if (input._valueGet() != getActiveBuffer().join('')) { - writeBuffer(input, getActiveBuffer()); - } - } - }).bind("blur.inputmask", function () { - var $input = $(this), input = this, nptValue = input._valueGet(), buffer = getActiveBuffer(); - $input.removeClass('focus.inputmask'); - if (valueOnFocus != getActiveBuffer().join('')) { - $input.change(); - } - if (opts.clearMaskOnLostFocus && nptValue != '') { - if (nptValue == getActiveBufferTemplate().join('')) - input._valueSet(''); - else { //clearout optional tail of the mask - clearOptionalTail(input); - } - } - if (isComplete(buffer) === false) { - $input.trigger("incomplete"); - if (opts.clearIncomplete) { - $.each(masksets, function (ndx, ms) { - if (typeof (ms) == "object") { - ms["buffer"] = ms["_buffer"].slice(); - ms["lastValidPosition"] = -1; - } - }); - activeMasksetIndex = 0; - if (opts.clearMaskOnLostFocus) - input._valueSet(''); - else { - buffer = getActiveBufferTemplate().slice(); - writeBuffer(input, buffer); - } - } - } - }).bind("focus.inputmask", function () { - var $input = $(this), input = this, nptValue = input._valueGet(); - if (opts.showMaskOnFocus && !$input.hasClass('focus.inputmask') && (!opts.showMaskOnHover || (opts.showMaskOnHover && nptValue == ''))) { - if (input._valueGet() != getActiveBuffer().join('')) { - writeBuffer(input, getActiveBuffer(), seekNext(getActiveMaskSet()["lastValidPosition"])); - } - } - $input.addClass('focus.inputmask'); - valueOnFocus = getActiveBuffer().join(''); - }).bind("mouseleave.inputmask", function () { - var $input = $(this), input = this; - if (opts.clearMaskOnLostFocus) { - if (!$input.hasClass('focus.inputmask') && input._valueGet() != $input.attr("placeholder")) { - if (input._valueGet() == getActiveBufferTemplate().join('') || input._valueGet() == '') - input._valueSet(''); - else { //clearout optional tail of the mask - clearOptionalTail(input); - } - } - } - }).bind("click.inputmask", function () { - var input = this; - setTimeout(function () { - var selectedCaret = caret(input), buffer = getActiveBuffer(); - if (selectedCaret.begin == selectedCaret.end) { - var clickPosition = isRTL ? TranslatePosition(selectedCaret.begin) : selectedCaret.begin, - lvp = getActiveMaskSet()["lastValidPosition"], - lastPosition; - if (opts.isNumeric) { - lastPosition = opts.skipRadixDance === false && opts.radixPoint != "" && $.inArray(opts.radixPoint, buffer) != -1 ? - (opts.numericInput ? seekNext($.inArray(opts.radixPoint, buffer)) : $.inArray(opts.radixPoint, buffer)) : - seekNext(lvp); - } else { - lastPosition = seekNext(lvp); - } - if (clickPosition < lastPosition) { - if (isMask(clickPosition)) - caret(input, clickPosition); - else caret(input, seekNext(clickPosition)); - } else - caret(input, lastPosition); - } - }, 0); - }).bind('dblclick.inputmask', function () { - var input = this; - setTimeout(function () { - caret(input, 0, seekNext(getActiveMaskSet()["lastValidPosition"])); - }, 0); - }).bind(pasteEvent + ".inputmask dragdrop.inputmask drop.inputmask", function (e) { - if (skipInputEvent === true) { - skipInputEvent = false; - return true; - } - var input = this, $input = $(input); - - //paste event for IE8 and lower I guess ;-) - if (e.type == "propertychange" && input._valueGet().length <= getMaskLength()) { - return true; - } - setTimeout(function () { - var pasteValue = opts.onBeforePaste != undefined ? opts.onBeforePaste.call(this, input._valueGet()) : input._valueGet(); - checkVal(input, true, false, pasteValue.split(''), true); - if (isComplete(getActiveBuffer()) === true) - $input.trigger("complete"); - $input.click(); - }, 0); - }).bind('setvalue.inputmask', function () { - var input = this; - checkVal(input, true); - valueOnFocus = getActiveBuffer().join(''); - if (input._valueGet() == getActiveBufferTemplate().join('')) - input._valueSet(''); - }).bind('complete.inputmask', opts.oncomplete - ).bind('incomplete.inputmask', opts.onincomplete - ).bind('cleared.inputmask', opts.oncleared - ).bind("keyup.inputmask", keyupEvent); - - if (androidchrome) { - $el.bind("input.inputmask", inputEvent); - } else { - $el.bind("keydown.inputmask", keydownEvent - ).bind("keypress.inputmask", keypressEvent); - } - - if (msie10) - $el.bind("input.inputmask", inputEvent); - - //apply mask - checkVal(el, true, false); - valueOnFocus = getActiveBuffer().join(''); - // Wrap document.activeElement in a try/catch block since IE9 throw "Unspecified error" if document.activeElement is undefined when we are in an IFrame. - var activeElement; - try { - activeElement = document.activeElement; - } catch (e) { - } - if (activeElement === el) { //position the caret when in focus - $el.addClass('focus.inputmask'); - caret(el, seekNext(getActiveMaskSet()["lastValidPosition"])); - } else if (opts.clearMaskOnLostFocus) { - if (getActiveBuffer().join('') == getActiveBufferTemplate().join('')) { - el._valueSet(''); - } else { - clearOptionalTail(el); - } - } else { - writeBuffer(el, getActiveBuffer()); - } - - installEventRuler(el); - } - } - - //action object - if (actionObj != undefined) { - switch (actionObj["action"]) { - case "isComplete": - return isComplete(actionObj["buffer"]); - case "unmaskedvalue": - isRTL = actionObj["$input"].data('_inputmask')['isRTL']; - return unmaskedvalue(actionObj["$input"], actionObj["skipDatepickerCheck"]); - case "mask": - mask(actionObj["el"]); - break; - case "format": - $el = $({}); - $el.data('_inputmask', { - 'masksets': masksets, - 'activeMasksetIndex': activeMasksetIndex, - 'opts': opts, - 'isRTL': opts.numericInput - }); - if (opts.numericInput) { - opts.isNumeric = opts.numericInput; - isRTL = true; - } - - checkVal($el, false, false, actionObj["value"].split(''), true); - return getActiveBuffer().join(''); - } - } - } - $.inputmask = { - //options default - defaults: { - placeholder: "_", - optionalmarker: { start: "[", end: "]" }, - quantifiermarker: { start: "{", end: "}" }, - groupmarker: { start: "(", end: ")" }, - escapeChar: "\\", - mask: null, - oncomplete: $.noop, //executes when the mask is complete - onincomplete: $.noop, //executes when the mask is incomplete and focus is lost - oncleared: $.noop, //executes when the mask is cleared - repeat: 0, //repetitions of the mask: * ~ forever, otherwise specify an integer - greedy: true, //true: allocated buffer for the mask and repetitions - false: allocate only if needed - autoUnmask: false, //automatically unmask when retrieving the value with $.fn.val or value if the browser supports __lookupGetter__ or getOwnPropertyDescriptor - clearMaskOnLostFocus: true, - insertMode: true, //insert the input or overwrite the input - clearIncomplete: false, //clear the incomplete input on blur - aliases: {}, //aliases definitions => see jquery.inputmask.extensions.js - onKeyUp: $.noop, //override to implement autocomplete on certain keys for example - onKeyDown: $.noop, //override to implement autocomplete on certain keys for example - onBeforePaste: undefined, //executes before masking the pasted value to allow preprocessing of the pasted value. args => pastedValue => return processedValue - onUnMask: undefined, //executes after unmasking to allow postprocessing of the unmaskedvalue. args => maskedValue, unmaskedValue - showMaskOnFocus: true, //show the mask-placeholder when the input has focus - showMaskOnHover: true, //show the mask-placeholder when hovering the empty input - onKeyValidation: $.noop, //executes on every key-press with the result of isValid. Params: result, opts - skipOptionalPartCharacter: " ", //a character which can be used to skip an optional part of a mask - showTooltip: false, //show the activemask as tooltip - numericInput: false, //numericInput input direction style (input shifts to the left while holding the caret position) - //numeric basic properties - isNumeric: false, //enable numeric features - radixPoint: "", //".", // | "," - skipRadixDance: false, //disable radixpoint caret positioning - rightAlignNumerics: true, //align numerics to the right - //numeric basic properties - definitions: { - '9': { - validator: "[0-9]", - cardinality: 1 - }, - 'a': { - validator: "[A-Za-z\u0410-\u044F\u0401\u0451]", - cardinality: 1 - }, - '*': { - validator: "[A-Za-z\u0410-\u044F\u0401\u04510-9]", - cardinality: 1 - } - }, - keyCode: { - ALT: 18, BACKSPACE: 8, CAPS_LOCK: 20, COMMA: 188, COMMAND: 91, COMMAND_LEFT: 91, COMMAND_RIGHT: 93, CONTROL: 17, DELETE: 46, DOWN: 40, END: 35, ENTER: 13, ESCAPE: 27, HOME: 36, INSERT: 45, LEFT: 37, MENU: 93, 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, SHIFT: 16, SPACE: 32, TAB: 9, UP: 38, WINDOWS: 91 - }, - //specify keycodes which should not be considered in the keypress event, otherwise the preventDefault will stop their default behavior especially in FF - ignorables: [8, 9, 13, 19, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45, 46, 93, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], - getMaskLength: function (buffer, greedy, repeat, currentBuffer, opts) { - var calculatedLength = buffer.length; - if (!greedy) { - if (repeat == "*") { - calculatedLength = currentBuffer.length + 1; - } else if (repeat > 1) { - calculatedLength += (buffer.length * (repeat - 1)); - } - } - return calculatedLength; - } - }, - escapeRegex: function (str) { - var specials = ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\']; - return str.replace(new RegExp('(\\' + specials.join('|\\') + ')', 'gim'), '\\$1'); - }, - format: function (value, options) { - var opts = $.extend(true, {}, $.inputmask.defaults, options); - resolveAlias(opts.alias, options, opts); - return maskScope(generateMaskSets(opts), 0, opts, { "action": "format", "value": value }); - } - }; - - $.fn.inputmask = function (fn, options) { - var opts = $.extend(true, {}, $.inputmask.defaults, options), - masksets, - activeMasksetIndex = 0; - - if (typeof fn === "string") { - switch (fn) { - case "mask": - //resolve possible aliases given by options - resolveAlias(opts.alias, options, opts); - masksets = generateMaskSets(opts); - if (masksets.length == 0) { return this; } - - return this.each(function () { - maskScope($.extend(true, {}, masksets), 0, opts, { "action": "mask", "el": this }); - }); - case "unmaskedvalue": - var $input = $(this), input = this; - if ($input.data('_inputmask')) { - masksets = $input.data('_inputmask')['masksets']; - activeMasksetIndex = $input.data('_inputmask')['activeMasksetIndex']; - opts = $input.data('_inputmask')['opts']; - return maskScope(masksets, activeMasksetIndex, opts, { "action": "unmaskedvalue", "$input": $input }); - } else return $input.val(); - case "remove": - return this.each(function () { - var $input = $(this), input = this; - if ($input.data('_inputmask')) { - masksets = $input.data('_inputmask')['masksets']; - activeMasksetIndex = $input.data('_inputmask')['activeMasksetIndex']; - opts = $input.data('_inputmask')['opts']; - //writeout the unmaskedvalue - input._valueSet(maskScope(masksets, activeMasksetIndex, opts, { "action": "unmaskedvalue", "$input": $input, "skipDatepickerCheck": true })); - //clear data - $input.removeData('_inputmask'); - //unbind all events - $input.unbind(".inputmask"); - $input.removeClass('focus.inputmask'); - //restore the value property - var valueProperty; - if (Object.getOwnPropertyDescriptor) - valueProperty = Object.getOwnPropertyDescriptor(input, "value"); - if (valueProperty && valueProperty.get) { - if (input._valueGet) { - Object.defineProperty(input, "value", { - get: input._valueGet, - set: input._valueSet - }); - } - } else if (document.__lookupGetter__ && input.__lookupGetter__("value")) { - if (input._valueGet) { - input.__defineGetter__("value", input._valueGet); - input.__defineSetter__("value", input._valueSet); - } - } - try { //try catch needed for IE7 as it does not supports deleting fns - delete input._valueGet; - delete input._valueSet; - } catch (e) { - input._valueGet = undefined; - input._valueSet = undefined; - - } - } - }); - break; - case "getemptymask": //return the default (empty) mask value, usefull for setting the default value in validation - if (this.data('_inputmask')) { - masksets = this.data('_inputmask')['masksets']; - activeMasksetIndex = this.data('_inputmask')['activeMasksetIndex']; - return masksets[activeMasksetIndex]['_buffer'].join(''); - } - else return ""; - case "hasMaskedValue": //check wheter the returned value is masked or not; currently only works reliable when using jquery.val fn to retrieve the value - return this.data('_inputmask') ? !this.data('_inputmask')['opts'].autoUnmask : false; - case "isComplete": - masksets = this.data('_inputmask')['masksets']; - activeMasksetIndex = this.data('_inputmask')['activeMasksetIndex']; - opts = this.data('_inputmask')['opts']; - return maskScope(masksets, activeMasksetIndex, opts, { "action": "isComplete", "buffer": this[0]._valueGet().split('') }); - case "getmetadata": //return mask metadata if exists - if (this.data('_inputmask')) { - masksets = this.data('_inputmask')['masksets']; - activeMasksetIndex = this.data('_inputmask')['activeMasksetIndex']; - return masksets[activeMasksetIndex]['metadata']; - } - else return undefined; - default: - //check if the fn is an alias - if (!resolveAlias(fn, options, opts)) { - //maybe fn is a mask so we try - //set mask - opts.mask = fn; - } - masksets = generateMaskSets(opts); - if (masksets.length == 0) { return this; } - return this.each(function () { - maskScope($.extend(true, {}, masksets), activeMasksetIndex, opts, { "action": "mask", "el": this }); - }); - - break; - } - } else if (typeof fn == "object") { - opts = $.extend(true, {}, $.inputmask.defaults, fn); - - resolveAlias(opts.alias, fn, opts); //resolve aliases - masksets = generateMaskSets(opts); - if (masksets.length == 0) { return this; } - return this.each(function () { - maskScope($.extend(true, {}, masksets), activeMasksetIndex, opts, { "action": "mask", "el": this }); - }); - } else if (fn == undefined) { - //look for data-inputmask atribute - the attribute should only contain optipns - return this.each(function () { - var attrOptions = $(this).attr("data-inputmask"); - if (attrOptions && attrOptions != "") { - try { - attrOptions = attrOptions.replace(new RegExp("'", "g"), '"'); - var dataoptions = $.parseJSON("{" + attrOptions + "}"); - $.extend(true, dataoptions, options); - opts = $.extend(true, {}, $.inputmask.defaults, dataoptions); - resolveAlias(opts.alias, dataoptions, opts); - opts.alias = undefined; - $(this).inputmask(opts); - } catch (ex) { } //need a more relax parseJSON - } - }); - } - }; - } -})(jQuery); diff --git a/assets/plugins/input-mask/jquery.inputmask.numeric.extensions.js b/assets/plugins/input-mask/jquery.inputmask.numeric.extensions.js deleted file mode 100644 index 2efb33f4..00000000 --- a/assets/plugins/input-mask/jquery.inputmask.numeric.extensions.js +++ /dev/null @@ -1,177 +0,0 @@ -/* -Input Mask plugin extensions -http://github.com/RobinHerbots/jquery.inputmask -Copyright (c) 2010 - 2014 Robin Herbots -Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) -Version: 0.0.0 - -Optional extensions on the jquery.inputmask base -*/ -(function ($) { - //number aliases - $.extend($.inputmask.defaults.aliases, { - 'decimal': { - mask: "~", - placeholder: "", - repeat: "*", - greedy: false, - numericInput: false, - isNumeric: true, - digits: "*", //number of fractionalDigits - groupSeparator: "",//",", // | "." - radixPoint: ".", - groupSize: 3, - autoGroup: false, - allowPlus: true, - allowMinus: true, - //todo - integerDigits: "*", //number of integerDigits - defaultValue: "", - prefix: "", - suffix: "", - - //todo - getMaskLength: function (buffer, greedy, repeat, currentBuffer, opts) { //custom getMaskLength to take the groupSeparator into account - var calculatedLength = buffer.length; - - if (!greedy) { - if (repeat == "*") { - calculatedLength = currentBuffer.length + 1; - } else if (repeat > 1) { - calculatedLength += (buffer.length * (repeat - 1)); - } - } - - var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, opts.groupSeparator); - var escapedRadixPoint = $.inputmask.escapeRegex.call(this, opts.radixPoint); - var currentBufferStr = currentBuffer.join(''), strippedBufferStr = currentBufferStr.replace(new RegExp(escapedGroupSeparator, "g"), "").replace(new RegExp(escapedRadixPoint), ""), - groupOffset = currentBufferStr.length - strippedBufferStr.length; - return calculatedLength + groupOffset; - }, - postFormat: function (buffer, pos, reformatOnly, opts) { - if (opts.groupSeparator == "") return pos; - var cbuf = buffer.slice(), - radixPos = $.inArray(opts.radixPoint, buffer); - if (!reformatOnly) { - cbuf.splice(pos, 0, "?"); //set position indicator - } - var bufVal = cbuf.join(''); - if (opts.autoGroup || (reformatOnly && bufVal.indexOf(opts.groupSeparator) != -1)) { - var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, opts.groupSeparator); - bufVal = bufVal.replace(new RegExp(escapedGroupSeparator, "g"), ''); - var radixSplit = bufVal.split(opts.radixPoint); - bufVal = radixSplit[0]; - var reg = new RegExp('([-\+]?[\\d\?]+)([\\d\?]{' + opts.groupSize + '})'); - while (reg.test(bufVal)) { - bufVal = bufVal.replace(reg, '$1' + opts.groupSeparator + '$2'); - bufVal = bufVal.replace(opts.groupSeparator + opts.groupSeparator, opts.groupSeparator); - } - if (radixSplit.length > 1) - bufVal += opts.radixPoint + radixSplit[1]; - } - buffer.length = bufVal.length; //align the length - for (var i = 0, l = bufVal.length; i < l; i++) { - buffer[i] = bufVal.charAt(i); - } - var newPos = $.inArray("?", buffer); - if (!reformatOnly) buffer.splice(newPos, 1); - - return reformatOnly ? pos : newPos; - }, - regex: { - number: function (opts) { - var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, opts.groupSeparator); - var escapedRadixPoint = $.inputmask.escapeRegex.call(this, opts.radixPoint); - var digitExpression = isNaN(opts.digits) ? opts.digits : '{0,' + opts.digits + '}'; - var signedExpression = opts.allowPlus || opts.allowMinus ? "[" + (opts.allowPlus ? "\+" : "") + (opts.allowMinus ? "-" : "") + "]?" : ""; - return new RegExp("^" + signedExpression + "(\\d+|\\d{1," + opts.groupSize + "}((" + escapedGroupSeparator + "\\d{" + opts.groupSize + "})?)+)(" + escapedRadixPoint + "\\d" + digitExpression + ")?$"); - } - }, - onKeyDown: function (e, buffer, opts) { - var $input = $(this), input = this; - if (e.keyCode == opts.keyCode.TAB) { - var radixPosition = $.inArray(opts.radixPoint, buffer); - if (radixPosition != -1) { - var masksets = $input.data('_inputmask')['masksets']; - var activeMasksetIndex = $input.data('_inputmask')['activeMasksetIndex']; - for (var i = 1; i <= opts.digits && i < opts.getMaskLength(masksets[activeMasksetIndex]["_buffer"], masksets[activeMasksetIndex]["greedy"], masksets[activeMasksetIndex]["repeat"], buffer, opts) ; i++) { - if (buffer[radixPosition + i] == undefined || buffer[radixPosition + i] == "") buffer[radixPosition + i] = "0"; - } - input._valueSet(buffer.join('')); - } - } else if (e.keyCode == opts.keyCode.DELETE || e.keyCode == opts.keyCode.BACKSPACE) { - opts.postFormat(buffer, 0, true, opts); - input._valueSet(buffer.join('')); - return true; - } - }, - definitions: { - '~': { //real number - validator: function (chrs, buffer, pos, strict, opts) { - if (chrs == "") return false; - if (!strict && pos <= 1 && buffer[0] === '0' && new RegExp("[\\d-]").test(chrs) && buffer.join('').length == 1) { //handle first char - buffer[0] = ""; - return { "pos": 0 }; - } - - var cbuf = strict ? buffer.slice(0, pos) : buffer.slice(); - - cbuf.splice(pos, 0, chrs); - var bufferStr = cbuf.join(''); - - //strip groupseparator - var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, opts.groupSeparator); - bufferStr = bufferStr.replace(new RegExp(escapedGroupSeparator, "g"), ''); - - var isValid = opts.regex.number(opts).test(bufferStr); - if (!isValid) { - //let's help the regex a bit - bufferStr += "0"; - isValid = opts.regex.number(opts).test(bufferStr); - if (!isValid) { - //make a valid group - var lastGroupSeparator = bufferStr.lastIndexOf(opts.groupSeparator); - for (var i = bufferStr.length - lastGroupSeparator; i <= 3; i++) { - bufferStr += "0"; - } - - isValid = opts.regex.number(opts).test(bufferStr); - if (!isValid && !strict) { - if (chrs == opts.radixPoint) { - isValid = opts.regex.number(opts).test("0" + bufferStr + "0"); - if (isValid) { - buffer[pos] = "0"; - pos++; - return { "pos": pos }; - } - } - } - } - } - - if (isValid != false && !strict && chrs != opts.radixPoint) { - var newPos = opts.postFormat(buffer, pos, false, opts); - return { "pos": newPos }; - } - - return isValid; - }, - cardinality: 1, - prevalidator: null - } - }, - insertMode: true, - autoUnmask: false - }, - 'integer': { - regex: { - number: function (opts) { - var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, opts.groupSeparator); - var signedExpression = opts.allowPlus || opts.allowMinus ? "[" + (opts.allowPlus ? "\+" : "") + (opts.allowMinus ? "-" : "") + "]?" : ""; - return new RegExp("^" + signedExpression + "(\\d+|\\d{1," + opts.groupSize + "}((" + escapedGroupSeparator + "\\d{" + opts.groupSize + "})?)+)$"); - } - }, - alias: "decimal" - } - }); -})(jQuery); diff --git a/assets/plugins/input-mask/jquery.inputmask.phone.extensions.js b/assets/plugins/input-mask/jquery.inputmask.phone.extensions.js deleted file mode 100644 index 554d4ef1..00000000 --- a/assets/plugins/input-mask/jquery.inputmask.phone.extensions.js +++ /dev/null @@ -1,50 +0,0 @@ -/* -Input Mask plugin extensions -http://github.com/RobinHerbots/jquery.inputmask -Copyright (c) 2010 - 2014 Robin Herbots -Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) -Version: 0.0.0 - -Phone extension. -When using this extension make sure you specify the correct url to get the masks - - $(selector).inputmask("phone", { - url: "Scripts/jquery.inputmask/phone-codes/phone-codes.json", - onKeyValidation: function () { //show some metadata in the console - console.log($(this).inputmask("getmetadata")["name_en"]); - } - }); - - -*/ -(function ($) { - $.extend($.inputmask.defaults.aliases, { - 'phone': { - url: "phone-codes/phone-codes.json", - mask: function (opts) { - opts.definitions = { - 'p': { - validator: function () { return false; }, - cardinality: 1 - }, - '#': { - validator: "[0-9]", - cardinality: 1 - } - }; - var maskList = []; - $.ajax({ - url: opts.url, - async: false, - dataType: 'json', - success: function (response) { - maskList = response; - } - }); - - maskList.splice(0, 0, "+p(ppp)ppp-pppp"); - return maskList; - } - } - }); -})(jQuery); diff --git a/assets/plugins/input-mask/jquery.inputmask.regex.extensions.js b/assets/plugins/input-mask/jquery.inputmask.regex.extensions.js deleted file mode 100644 index e956569b..00000000 --- a/assets/plugins/input-mask/jquery.inputmask.regex.extensions.js +++ /dev/null @@ -1,169 +0,0 @@ -/* -Input Mask plugin extensions -http://github.com/RobinHerbots/jquery.inputmask -Copyright (c) 2010 - 2014 Robin Herbots -Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) -Version: 0.0.0 - -Regex extensions on the jquery.inputmask base -Allows for using regular expressions as a mask -*/ -(function ($) { - $.extend($.inputmask.defaults.aliases, { // $(selector).inputmask("Regex", { regex: "[0-9]*"} - 'Regex': { - mask: "r", - greedy: false, - repeat: "*", - regex: null, - regexTokens: null, - //Thx to https://github.com/slevithan/regex-colorizer for the tokenizer regex - tokenizer: /\[\^?]?(?:[^\\\]]+|\\[\S\s]?)*]?|\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\S\s]?)|\((?:\?[:=!]?)?|(?:[?*+]|\{[0-9]+(?:,[0-9]*)?\})\??|[^.?*+^${[()|\\]+|./g, - quantifierFilter: /[0-9]+[^,]/, - definitions: { - 'r': { - validator: function (chrs, buffer, pos, strict, opts) { - function regexToken() { - this.matches = []; - this.isGroup = false; - this.isQuantifier = false; - this.isLiteral = false; - } - function analyseRegex() { - var currentToken = new regexToken(), match, m, opengroups = []; - - opts.regexTokens = []; - - // The tokenizer regex does most of the tokenization grunt work - while (match = opts.tokenizer.exec(opts.regex)) { - m = match[0]; - switch (m.charAt(0)) { - case "[": // Character class - case "\\": // Escape or backreference - if (opengroups.length > 0) { - opengroups[opengroups.length - 1]["matches"].push(m); - } else { - currentToken.matches.push(m); - } - break; - case "(": // Group opening - if (!currentToken.isGroup && currentToken.matches.length > 0) - opts.regexTokens.push(currentToken); - currentToken = new regexToken(); - currentToken.isGroup = true; - opengroups.push(currentToken); - break; - case ")": // Group closing - var groupToken = opengroups.pop(); - if (opengroups.length > 0) { - opengroups[opengroups.length - 1]["matches"].push(groupToken); - } else { - opts.regexTokens.push(groupToken); - currentToken = new regexToken(); - } - break; - case "{": //Quantifier - var quantifier = new regexToken(); - quantifier.isQuantifier = true; - quantifier.matches.push(m); - if (opengroups.length > 0) { - opengroups[opengroups.length - 1]["matches"].push(quantifier); - } else { - currentToken.matches.push(quantifier); - } - break; - default: - // Vertical bar (alternator) - // ^ or $ anchor - // Dot (.) - // Literal character sequence - var literal = new regexToken(); - literal.isLiteral = true; - literal.matches.push(m); - if (opengroups.length > 0) { - opengroups[opengroups.length - 1]["matches"].push(literal); - } else { - currentToken.matches.push(literal); - } - } - } - - if (currentToken.matches.length > 0) - opts.regexTokens.push(currentToken); - } - function validateRegexToken(token, fromGroup) { - var isvalid = false; - if (fromGroup) { - regexPart += "("; - openGroupCount++; - } - for (var mndx = 0; mndx < token["matches"].length; mndx++) { - var matchToken = token["matches"][mndx]; - if (matchToken["isGroup"] == true) { - isvalid = validateRegexToken(matchToken, true); - } else if (matchToken["isQuantifier"] == true) { - matchToken = matchToken["matches"][0]; - var quantifierMax = opts.quantifierFilter.exec(matchToken)[0].replace("}", ""); - var testExp = regexPart + "{1," + quantifierMax + "}"; //relax quantifier validation - for (var j = 0; j < openGroupCount; j++) { - testExp += ")"; - } - var exp = new RegExp("^(" + testExp + ")$"); - isvalid = exp.test(bufferStr); - regexPart += matchToken; - } else if (matchToken["isLiteral"] == true) { - matchToken = matchToken["matches"][0]; - var testExp = regexPart, openGroupCloser = ""; - for (var j = 0; j < openGroupCount; j++) { - openGroupCloser += ")"; - } - for (var k = 0; k < matchToken.length; k++) { //relax literal validation - testExp = (testExp + matchToken[k]).replace(/\|$/, ""); - var exp = new RegExp("^(" + testExp + openGroupCloser + ")$"); - isvalid = exp.test(bufferStr); - if (isvalid) break; - } - regexPart += matchToken; - //console.log(bufferStr + " " + exp + " " + isvalid); - } else { - regexPart += matchToken; - var testExp = regexPart.replace(/\|$/, ""); - for (var j = 0; j < openGroupCount; j++) { - testExp += ")"; - } - var exp = new RegExp("^(" + testExp + ")$"); - isvalid = exp.test(bufferStr); - //console.log(bufferStr + " " + exp + " " + isvalid); - } - if (isvalid) break; - } - - if (fromGroup) { - regexPart += ")"; - openGroupCount--; - } - - return isvalid; - } - - - if (opts.regexTokens == null) { - analyseRegex(); - } - - var cbuffer = buffer.slice(), regexPart = "", isValid = false, openGroupCount = 0; - cbuffer.splice(pos, 0, chrs); - var bufferStr = cbuffer.join(''); - for (var i = 0; i < opts.regexTokens.length; i++) { - var regexToken = opts.regexTokens[i]; - isValid = validateRegexToken(regexToken, regexToken["isGroup"]); - if (isValid) break; - } - - return isValid; - }, - cardinality: 1 - } - } - } - }); -})(jQuery); diff --git a/assets/plugins/input-mask/phone-codes/phone-be.json b/assets/plugins/input-mask/phone-codes/phone-be.json deleted file mode 100644 index b510b784..00000000 --- a/assets/plugins/input-mask/phone-codes/phone-be.json +++ /dev/null @@ -1,45 +0,0 @@ -[ - { "mask": "+32(53)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Aalst (Alost)" }, - { "mask": "+32(3)###-##-##", "cc": "BE", "cd": "Belgium", "city": "Antwerpen (Anvers)" }, - { "mask": "+32(63)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Arlon" }, - { "mask": "+32(67)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Ath" }, - { "mask": "+32(50)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Brugge (Bruges)" }, - { "mask": "+32(2)###-##-##", "cc": "BE", "cd": "Belgium", "city": "Brussel/Bruxelles (Brussels)" }, - { "mask": "+32(71)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Charleroi" }, - { "mask": "+32(60)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Chimay" }, - { "mask": "+32(83)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Ciney" }, - { "mask": "+32(52)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Dendermonde" }, - { "mask": "+32(13)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Diest" }, - { "mask": "+32(82)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Dinant" }, - { "mask": "+32(86)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Durbuy" }, - { "mask": "+32(89)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Genk" }, - { "mask": "+32(9)###-##-##", "cc": "BE", "cd": "Belgium", "city": "Gent (Gand)" }, - { "mask": "+32(11)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Hasselt" }, - { "mask": "+32(14)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Herentals" }, - { "mask": "+32(85)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Huy (Hoei)" }, - { "mask": "+32(64)##-##-##", "cc": "BE", "cd": "Belgium", "city": "La Louvière" }, - { "mask": "+32(16)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Leuven (Louvain)" }, - { "mask": "+32(61)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Libramont" }, - { "mask": "+32(4)###-##-##", "cc": "BE", "cd": "Belgium", "city": "Liège (Luik)" }, - { "mask": "+32(15)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Mechelen (Malines)" }, - { "mask": "+32(47#)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Mobile Phones" }, - { "mask": "+32(48#)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Mobile Phones" }, - { "mask": "+32(49#)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Mobile Phones" }, - { "mask": "+32(65)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Mons (Bergen)" }, - { "mask": "+32(81)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Namur (Namen)" }, - { "mask": "+32(58)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Nieuwpoort (Nieuport)" }, - { "mask": "+32(54)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Ninove" }, - { "mask": "+32(67)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Nivelles (Nijvel)" }, - { "mask": "+32(59)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Oostende (Ostende)" }, - { "mask": "+32(51)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Roeselare (Roulers)" }, - { "mask": "+32(55)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Ronse" }, - { "mask": "+32(80)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Stavelot" }, - { "mask": "+32(12)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Tongeren (Tongres)" }, - { "mask": "+32(69)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Tounai" }, - { "mask": "+32(14)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Turnhout" }, - { "mask": "+32(87)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Verviers" }, - { "mask": "+32(58)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Veurne" }, - { "mask": "+32(19)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Wareme" }, - { "mask": "+32(10)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Wavre (Waver)" }, - { "mask": "+32(50)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Zeebrugge" } -] \ No newline at end of file diff --git a/assets/plugins/input-mask/phone-codes/phone-codes.json b/assets/plugins/input-mask/phone-codes/phone-codes.json deleted file mode 100644 index 15bbd3a9..00000000 --- a/assets/plugins/input-mask/phone-codes/phone-codes.json +++ /dev/null @@ -1,294 +0,0 @@ -[ - { "mask": "+247-####", "cc": "AC", "name_en": "Ascension", "desc_en": "", "name_ru": "Остров Вознесения", "desc_ru": "" }, - { "mask": "+376-###-###", "cc": "AD", "name_en": "Andorra", "desc_en": "", "name_ru": "Андорра", "desc_ru": "" }, - { "mask": "+971-5#-###-####", "cc": "AE", "name_en": "United Arab Emirates", "desc_en": "mobile", "name_ru": "Объединенные Арабские Эмираты", "desc_ru": "мобильные" }, - { "mask": "+971-#-###-####", "cc": "AE", "name_en": "United Arab Emirates", "desc_en": "", "name_ru": "Объединенные Арабские Эмираты", "desc_ru": "" }, - { "mask": "+93-##-###-####", "cc": "AF", "name_en": "Afghanistan", "desc_en": "", "name_ru": "Афганистан", "desc_ru": "" }, - { "mask": "+1(268)###-####", "cc": "AG", "name_en": "Antigua & Barbuda", "desc_en": "", "name_ru": "Антигуа и Барбуда", "desc_ru": "" }, - { "mask": "+1(264)###-####", "cc": "AI", "name_en": "Anguilla", "desc_en": "", "name_ru": "Ангилья", "desc_ru": "" }, - { "mask": "+355(###)###-###", "cc": "AL", "name_en": "Albania", "desc_en": "", "name_ru": "Албания", "desc_ru": "" }, - { "mask": "+374-##-###-###", "cc": "AM", "name_en": "Armenia", "desc_en": "", "name_ru": "Армения", "desc_ru": "" }, - { "mask": "+599-###-####", "cc": "AN", "name_en": "Caribbean Netherlands", "desc_en": "", "name_ru": "Карибские Нидерланды", "desc_ru": "" }, - { "mask": "+599-###-####", "cc": "AN", "name_en": "Netherlands Antilles", "desc_en": "", "name_ru": "Нидерландские Антильские острова", "desc_ru": "" }, - { "mask": "+599-9###-####", "cc": "AN", "name_en": "Netherlands Antilles", "desc_en": "Curacao", "name_ru": "Нидерландские Антильские острова", "desc_ru": "Кюрасао" }, - { "mask": "+244(###)###-###", "cc": "AO", "name_en": "Angola", "desc_en": "", "name_ru": "Ангола", "desc_ru": "" }, - { "mask": "+672-1##-###", "cc": "AQ", "name_en": "Australian bases in Antarctica", "desc_en": "", "name_ru": "Австралийская антарктическая база", "desc_ru": "" }, - { "mask": "+54(###)###-####", "cc": "AR", "name_en": "Argentina", "desc_en": "", "name_ru": "Аргентина", "desc_ru": "" }, - { "mask": "+1(684)###-####", "cc": "AS", "name_en": "American Samoa", "desc_en": "", "name_ru": "Американское Самоа", "desc_ru": "" }, - { "mask": "+43(###)###-####", "cc": "AT", "name_en": "Austria", "desc_en": "", "name_ru": "Австрия", "desc_ru": "" }, - { "mask": "+61-#-####-####", "cc": "AU", "name_en": "Australia", "desc_en": "", "name_ru": "Австралия", "desc_ru": "" }, - { "mask": "+297-###-####", "cc": "AW", "name_en": "Aruba", "desc_en": "", "name_ru": "Аруба", "desc_ru": "" }, - { "mask": "+994-##-###-##-##", "cc": "AZ", "name_en": "Azerbaijan", "desc_en": "", "name_ru": "Азербайджан", "desc_ru": "" }, - { "mask": "+387-##-#####", "cc": "BA", "name_en": "Bosnia and Herzegovina", "desc_en": "", "name_ru": "Босния и Герцеговина", "desc_ru": "" }, - { "mask": "+387-##-####", "cc": "BA", "name_en": "Bosnia and Herzegovina", "desc_en": "", "name_ru": "Босния и Герцеговина", "desc_ru": "" }, - { "mask": "+1(246)###-####", "cc": "BB", "name_en": "Barbados", "desc_en": "", "name_ru": "Барбадос", "desc_ru": "" }, - { "mask": "+880-##-###-###", "cc": "BD", "name_en": "Bangladesh", "desc_en": "", "name_ru": "Бангладеш", "desc_ru": "" }, - { "mask": "+32(###)###-###", "cc": "BE", "name_en": "Belgium", "desc_en": "", "name_ru": "Бельгия", "desc_ru": "" }, - { "mask": "+226-##-##-####", "cc": "BF", "name_en": "Burkina Faso", "desc_en": "", "name_ru": "Буркина Фасо", "desc_ru": "" }, - { "mask": "+359(###)###-###", "cc": "BG", "name_en": "Bulgaria", "desc_en": "", "name_ru": "Болгария", "desc_ru": "" }, - { "mask": "+973-####-####", "cc": "BH", "name_en": "Bahrain", "desc_en": "", "name_ru": "Бахрейн", "desc_ru": "" }, - { "mask": "+257-##-##-####", "cc": "BI", "name_en": "Burundi", "desc_en": "", "name_ru": "Бурунди", "desc_ru": "" }, - { "mask": "+229-##-##-####", "cc": "BJ", "name_en": "Benin", "desc_en": "", "name_ru": "Бенин", "desc_ru": "" }, - { "mask": "+1(441)###-####", "cc": "BM", "name_en": "Bermuda", "desc_en": "", "name_ru": "Бермудские острова", "desc_ru": "" }, - { "mask": "+673-###-####", "cc": "BN", "name_en": "Brunei Darussalam", "desc_en": "", "name_ru": "Бруней-Даруссалам", "desc_ru": "" }, - { "mask": "+591-#-###-####", "cc": "BO", "name_en": "Bolivia", "desc_en": "", "name_ru": "Боливия", "desc_ru": "" }, - { "mask": "+55-##-####[#]-####", "cc": "BR", "name_en": "Brazil", "desc_en": "", "name_ru": "Бразилия", "desc_ru": "" }, - { "mask": "+1(242)###-####", "cc": "BS", "name_en": "Bahamas", "desc_en": "", "name_ru": "Багамские Острова", "desc_ru": "" }, - { "mask": "+975-17-###-###", "cc": "BT", "name_en": "Bhutan", "desc_en": "", "name_ru": "Бутан", "desc_ru": "" }, - { "mask": "+975-#-###-###", "cc": "BT", "name_en": "Bhutan", "desc_en": "", "name_ru": "Бутан", "desc_ru": "" }, - { "mask": "+267-##-###-###", "cc": "BW", "name_en": "Botswana", "desc_en": "", "name_ru": "Ботсвана", "desc_ru": "" }, - { "mask": "+375(##)###-##-##", "cc": "BY", "name_en": "Belarus", "desc_en": "", "name_ru": "Беларусь (Белоруссия)", "desc_ru": "" }, - { "mask": "+501-###-####", "cc": "BZ", "name_en": "Belize", "desc_en": "", "name_ru": "Белиз", "desc_ru": "" }, - { "mask": "+243(###)###-###", "cc": "CD", "name_en": "Dem. Rep. Congo", "desc_en": "", "name_ru": "Дем. Респ. Конго (Киншаса)", "desc_ru": "" }, - { "mask": "+236-##-##-####", "cc": "CF", "name_en": "Central African Republic", "desc_en": "", "name_ru": "Центральноафриканская Республика", "desc_ru": "" }, - { "mask": "+242-##-###-####", "cc": "CG", "name_en": "Congo (Brazzaville)", "desc_en": "", "name_ru": "Конго (Браззавиль)", "desc_ru": "" }, - { "mask": "+41-##-###-####", "cc": "CH", "name_en": "Switzerland", "desc_en": "", "name_ru": "Швейцария", "desc_ru": "" }, - { "mask": "+225-##-###-###", "cc": "CI", "name_en": "Cote d’Ivoire (Ivory Coast)", "desc_en": "", "name_ru": "Кот-д’Ивуар", "desc_ru": "" }, - { "mask": "+682-##-###", "cc": "CK", "name_en": "Cook Islands", "desc_en": "", "name_ru": "Острова Кука", "desc_ru": "" }, - { "mask": "+56-#-####-####", "cc": "CL", "name_en": "Chile", "desc_en": "", "name_ru": "Чили", "desc_ru": "" }, - { "mask": "+237-####-####", "cc": "CM", "name_en": "Cameroon", "desc_en": "", "name_ru": "Камерун", "desc_ru": "" }, - { "mask": "+86(###)####-####", "cc": "CN", "name_en": "China (PRC)", "desc_en": "", "name_ru": "Китайская Н.Р.", "desc_ru": "" }, - { "mask": "+86(###)####-###", "cc": "CN", "name_en": "China (PRC)", "desc_en": "", "name_ru": "Китайская Н.Р.", "desc_ru": "" }, - { "mask": "+86-##-#####-#####", "cc": "CN", "name_en": "China (PRC)", "desc_en": "", "name_ru": "Китайская Н.Р.", "desc_ru": "" }, - { "mask": "+57(###)###-####", "cc": "CO", "name_en": "Colombia", "desc_en": "", "name_ru": "Колумбия", "desc_ru": "" }, - { "mask": "+506-####-####", "cc": "CR", "name_en": "Costa Rica", "desc_en": "", "name_ru": "Коста-Рика", "desc_ru": "" }, - { "mask": "+53-#-###-####", "cc": "CU", "name_en": "Cuba", "desc_en": "", "name_ru": "Куба", "desc_ru": "" }, - { "mask": "+238(###)##-##", "cc": "CV", "name_en": "Cape Verde", "desc_en": "", "name_ru": "Кабо-Верде", "desc_ru": "" }, - { "mask": "+599-###-####", "cc": "CW", "name_en": "Curacao", "desc_en": "", "name_ru": "Кюрасао", "desc_ru": "" }, - { "mask": "+357-##-###-###", "cc": "CY", "name_en": "Cyprus", "desc_en": "", "name_ru": "Кипр", "desc_ru": "" }, - { "mask": "+420(###)###-###", "cc": "CZ", "name_en": "Czech Republic", "desc_en": "", "name_ru": "Чехия", "desc_ru": "" }, - { "mask": "+49(####)###-####", "cc": "DE", "name_en": "Germany", "desc_en": "", "name_ru": "Германия", "desc_ru": "" }, - { "mask": "+49(###)###-####", "cc": "DE", "name_en": "Germany", "desc_en": "", "name_ru": "Германия", "desc_ru": "" }, - { "mask": "+49(###)##-####", "cc": "DE", "name_en": "Germany", "desc_en": "", "name_ru": "Германия", "desc_ru": "" }, - { "mask": "+49(###)##-###", "cc": "DE", "name_en": "Germany", "desc_en": "", "name_ru": "Германия", "desc_ru": "" }, - { "mask": "+49(###)##-##", "cc": "DE", "name_en": "Germany", "desc_en": "", "name_ru": "Германия", "desc_ru": "" }, - { "mask": "+49-###-###", "cc": "DE", "name_en": "Germany", "desc_en": "", "name_ru": "Германия", "desc_ru": "" }, - { "mask": "+253-##-##-##-##", "cc": "DJ", "name_en": "Djibouti", "desc_en": "", "name_ru": "Джибути", "desc_ru": "" }, - { "mask": "+45-##-##-##-##", "cc": "DK", "name_en": "Denmark", "desc_en": "", "name_ru": "Дания", "desc_ru": "" }, - { "mask": "+1(767)###-####", "cc": "DM", "name_en": "Dominica", "desc_en": "", "name_ru": "Доминика", "desc_ru": "" }, - { "mask": "+1(809)###-####", "cc": "DO", "name_en": "Dominican Republic", "desc_en": "", "name_ru": "Доминиканская Республика", "desc_ru": "" }, - { "mask": "+1(829)###-####", "cc": "DO", "name_en": "Dominican Republic", "desc_en": "", "name_ru": "Доминиканская Республика", "desc_ru": "" }, - { "mask": "+1(849)###-####", "cc": "DO", "name_en": "Dominican Republic", "desc_en": "", "name_ru": "Доминиканская Республика", "desc_ru": "" }, - { "mask": "+213-##-###-####", "cc": "DZ", "name_en": "Algeria", "desc_en": "", "name_ru": "Алжир", "desc_ru": "" }, - { "mask": "+593-##-###-####", "cc": "EC", "name_en": "Ecuador ", "desc_en": "mobile", "name_ru": "Эквадор ", "desc_ru": "мобильные" }, - { "mask": "+593-#-###-####", "cc": "EC", "name_en": "Ecuador", "desc_en": "", "name_ru": "Эквадор", "desc_ru": "" }, - { "mask": "+372-####-####", "cc": "EE", "name_en": "Estonia ", "desc_en": "mobile", "name_ru": "Эстония ", "desc_ru": "мобильные" }, - { "mask": "+372-###-####", "cc": "EE", "name_en": "Estonia", "desc_en": "", "name_ru": "Эстония", "desc_ru": "" }, - { "mask": "+20(###)###-####", "cc": "EG", "name_en": "Egypt", "desc_en": "", "name_ru": "Египет", "desc_ru": "" }, - { "mask": "+291-#-###-###", "cc": "ER", "name_en": "Eritrea", "desc_en": "", "name_ru": "Эритрея", "desc_ru": "" }, - { "mask": "+34(###)###-###", "cc": "ES", "name_en": "Spain", "desc_en": "", "name_ru": "Испания", "desc_ru": "" }, - { "mask": "+251-##-###-####", "cc": "ET", "name_en": "Ethiopia", "desc_en": "", "name_ru": "Эфиопия", "desc_ru": "" }, - { "mask": "+358(###)###-##-##", "cc": "FI", "name_en": "Finland", "desc_en": "", "name_ru": "Финляндия", "desc_ru": "" }, - { "mask": "+679-##-#####", "cc": "FJ", "name_en": "Fiji", "desc_en": "", "name_ru": "Фиджи", "desc_ru": "" }, - { "mask": "+500-#####", "cc": "FK", "name_en": "Falkland Islands", "desc_en": "", "name_ru": "Фолклендские острова", "desc_ru": "" }, - { "mask": "+691-###-####", "cc": "FM", "name_en": "F.S. Micronesia", "desc_en": "", "name_ru": "Ф.Ш. Микронезии", "desc_ru": "" }, - { "mask": "+298-###-###", "cc": "FO", "name_en": "Faroe Islands", "desc_en": "", "name_ru": "Фарерские острова", "desc_ru": "" }, - { "mask": "+262-#####-####", "cc": "FR", "name_en": "Mayotte", "desc_en": "", "name_ru": "Майотта", "desc_ru": "" }, - { "mask": "+33(###)###-###", "cc": "FR", "name_en": "France", "desc_en": "", "name_ru": "Франция", "desc_ru": "" }, - { "mask": "+508-##-####", "cc": "FR", "name_en": "St Pierre & Miquelon", "desc_en": "", "name_ru": "Сен-Пьер и Микелон", "desc_ru": "" }, - { "mask": "+590(###)###-###", "cc": "FR", "name_en": "Guadeloupe", "desc_en": "", "name_ru": "Гваделупа", "desc_ru": "" }, - { "mask": "+241-#-##-##-##", "cc": "GA", "name_en": "Gabon", "desc_en": "", "name_ru": "Габон", "desc_ru": "" }, - { "mask": "+1(473)###-####", "cc": "GD", "name_en": "Grenada", "desc_en": "", "name_ru": "Гренада", "desc_ru": "" }, - { "mask": "+995(###)###-###", "cc": "GE", "name_en": "Rep. of Georgia", "desc_en": "", "name_ru": "Грузия", "desc_ru": "" }, - { "mask": "+594-#####-####", "cc": "GF", "name_en": "Guiana (French)", "desc_en": "", "name_ru": "Фр. Гвиана", "desc_ru": "" }, - { "mask": "+233(###)###-###", "cc": "GH", "name_en": "Ghana", "desc_en": "", "name_ru": "Гана", "desc_ru": "" }, - { "mask": "+350-###-#####", "cc": "GI", "name_en": "Gibraltar", "desc_en": "", "name_ru": "Гибралтар", "desc_ru": "" }, - { "mask": "+299-##-##-##", "cc": "GL", "name_en": "Greenland", "desc_en": "", "name_ru": "Гренландия", "desc_ru": "" }, - { "mask": "+220(###)##-##", "cc": "GM", "name_en": "Gambia", "desc_en": "", "name_ru": "Гамбия", "desc_ru": "" }, - { "mask": "+224-##-###-###", "cc": "GN", "name_en": "Guinea", "desc_en": "", "name_ru": "Гвинея", "desc_ru": "" }, - { "mask": "+240-##-###-####", "cc": "GQ", "name_en": "Equatorial Guinea", "desc_en": "", "name_ru": "Экваториальная Гвинея", "desc_ru": "" }, - { "mask": "+30(###)###-####", "cc": "GR", "name_en": "Greece", "desc_en": "", "name_ru": "Греция", "desc_ru": "" }, - { "mask": "+502-#-###-####", "cc": "GT", "name_en": "Guatemala", "desc_en": "", "name_ru": "Гватемала", "desc_ru": "" }, - { "mask": "+1(671)###-####", "cc": "GU", "name_en": "Guam", "desc_en": "", "name_ru": "Гуам", "desc_ru": "" }, - { "mask": "+245-#-######", "cc": "GW", "name_en": "Guinea-Bissau", "desc_en": "", "name_ru": "Гвинея-Бисау", "desc_ru": "" }, - { "mask": "+592-###-####", "cc": "GY", "name_en": "Guyana", "desc_en": "", "name_ru": "Гайана", "desc_ru": "" }, - { "mask": "+852-####-####", "cc": "HK", "name_en": "Hong Kong", "desc_en": "", "name_ru": "Гонконг", "desc_ru": "" }, - { "mask": "+504-####-####", "cc": "HN", "name_en": "Honduras", "desc_en": "", "name_ru": "Гондурас", "desc_ru": "" }, - { "mask": "+385-##-###-###", "cc": "HR", "name_en": "Croatia", "desc_en": "", "name_ru": "Хорватия", "desc_ru": "" }, - { "mask": "+509-##-##-####", "cc": "HT", "name_en": "Haiti", "desc_en": "", "name_ru": "Гаити", "desc_ru": "" }, - { "mask": "+36(###)###-###", "cc": "HU", "name_en": "Hungary", "desc_en": "", "name_ru": "Венгрия", "desc_ru": "" }, - { "mask": "+62(8##)###-####", "cc": "ID", "name_en": "Indonesia ", "desc_en": "mobile", "name_ru": "Индонезия ", "desc_ru": "мобильные" }, - { "mask": "+62-##-###-##", "cc": "ID", "name_en": "Indonesia", "desc_en": "", "name_ru": "Индонезия", "desc_ru": "" }, - { "mask": "+62-##-###-###", "cc": "ID", "name_en": "Indonesia", "desc_en": "", "name_ru": "Индонезия", "desc_ru": "" }, - { "mask": "+62-##-###-####", "cc": "ID", "name_en": "Indonesia", "desc_en": "", "name_ru": "Индонезия", "desc_ru": "" }, - { "mask": "+62(8##)###-###", "cc": "ID", "name_en": "Indonesia ", "desc_en": "mobile", "name_ru": "Индонезия ", "desc_ru": "мобильные" }, - { "mask": "+62(8##)###-##-###", "cc": "ID", "name_en": "Indonesia ", "desc_en": "mobile", "name_ru": "Индонезия ", "desc_ru": "мобильные" }, - { "mask": "+353(###)###-###", "cc": "IE", "name_en": "Ireland", "desc_en": "", "name_ru": "Ирландия", "desc_ru": "" }, - { "mask": "+972-5#-###-####", "cc": "IL", "name_en": "Israel ", "desc_en": "mobile", "name_ru": "Израиль ", "desc_ru": "мобильные" }, - { "mask": "+972-#-###-####", "cc": "IL", "name_en": "Israel", "desc_en": "", "name_ru": "Израиль", "desc_ru": "" }, - { "mask": "+91(####)###-###", "cc": "IN", "name_en": "India", "desc_en": "", "name_ru": "Индия", "desc_ru": "" }, - { "mask": "+246-###-####", "cc": "IO", "name_en": "Diego Garcia", "desc_en": "", "name_ru": "Диего-Гарсия", "desc_ru": "" }, - { "mask": "+964(###)###-####", "cc": "IQ", "name_en": "Iraq", "desc_en": "", "name_ru": "Ирак", "desc_ru": "" }, - { "mask": "+98(###)###-####", "cc": "IR", "name_en": "Iran", "desc_en": "", "name_ru": "Иран", "desc_ru": "" }, - { "mask": "+354-###-####", "cc": "IS", "name_en": "Iceland", "desc_en": "", "name_ru": "Исландия", "desc_ru": "" }, - { "mask": "+39(###)####-###", "cc": "IT", "name_en": "Italy", "desc_en": "", "name_ru": "Италия", "desc_ru": "" }, - { "mask": "+1(876)###-####", "cc": "JM", "name_en": "Jamaica", "desc_en": "", "name_ru": "Ямайка", "desc_ru": "" }, - { "mask": "+962-#-####-####", "cc": "JO", "name_en": "Jordan", "desc_en": "", "name_ru": "Иордания", "desc_ru": "" }, - { "mask": "+81-##-####-####", "cc": "JP", "name_en": "Japan ", "desc_en": "mobile", "name_ru": "Япония ", "desc_ru": "мобильные" }, - { "mask": "+81(###)###-###", "cc": "JP", "name_en": "Japan", "desc_en": "", "name_ru": "Япония", "desc_ru": "" }, - { "mask": "+254-###-######", "cc": "KE", "name_en": "Kenya", "desc_en": "", "name_ru": "Кения", "desc_ru": "" }, - { "mask": "+996(###)###-###", "cc": "KG", "name_en": "Kyrgyzstan", "desc_en": "", "name_ru": "Киргизия", "desc_ru": "" }, - { "mask": "+855-##-###-###", "cc": "KH", "name_en": "Cambodia", "desc_en": "", "name_ru": "Камбоджа", "desc_ru": "" }, - { "mask": "+686-##-###", "cc": "KI", "name_en": "Kiribati", "desc_en": "", "name_ru": "Кирибати", "desc_ru": "" }, - { "mask": "+269-##-#####", "cc": "KM", "name_en": "Comoros", "desc_en": "", "name_ru": "Коморы", "desc_ru": "" }, - { "mask": "+1(869)###-####", "cc": "KN", "name_en": "Saint Kitts & Nevis", "desc_en": "", "name_ru": "Сент-Китс и Невис", "desc_ru": "" }, - { "mask": "+850-191-###-####", "cc": "KP", "name_en": "DPR Korea (North) ", "desc_en": "mobile", "name_ru": "Корейская НДР ", "desc_ru": "мобильные" }, - { "mask": "+850-##-###-###", "cc": "KP", "name_en": "DPR Korea (North)", "desc_en": "", "name_ru": "Корейская НДР", "desc_ru": "" }, - { "mask": "+850-###-####-###", "cc": "KP", "name_en": "DPR Korea (North)", "desc_en": "", "name_ru": "Корейская НДР", "desc_ru": "" }, - { "mask": "+850-###-###", "cc": "KP", "name_en": "DPR Korea (North)", "desc_en": "", "name_ru": "Корейская НДР", "desc_ru": "" }, - { "mask": "+850-####-####", "cc": "KP", "name_en": "DPR Korea (North)", "desc_en": "", "name_ru": "Корейская НДР", "desc_ru": "" }, - { "mask": "+850-####-#############", "cc": "KP", "name_en": "DPR Korea (North)", "desc_en": "", "name_ru": "Корейская НДР", "desc_ru": "" }, - { "mask": "+82-##-###-####", "cc": "KR", "name_en": "Korea (South)", "desc_en": "", "name_ru": "Респ. Корея", "desc_ru": "" }, - { "mask": "+965-####-####", "cc": "KW", "name_en": "Kuwait", "desc_en": "", "name_ru": "Кувейт", "desc_ru": "" }, - { "mask": "+1(345)###-####", "cc": "KY", "name_en": "Cayman Islands", "desc_en": "", "name_ru": "Каймановы острова", "desc_ru": "" }, - { "mask": "+7(6##)###-##-##", "cc": "KZ", "name_en": "Kazakhstan", "desc_en": "", "name_ru": "Казахстан", "desc_ru": "" }, - { "mask": "+7(7##)###-##-##", "cc": "KZ", "name_en": "Kazakhstan", "desc_en": "", "name_ru": "Казахстан", "desc_ru": "" }, - { "mask": "+856(20##)###-###", "cc": "LA", "name_en": "Laos ", "desc_en": "mobile", "name_ru": "Лаос ", "desc_ru": "мобильные" }, - { "mask": "+856-##-###-###", "cc": "LA", "name_en": "Laos", "desc_en": "", "name_ru": "Лаос", "desc_ru": "" }, - { "mask": "+961-##-###-###", "cc": "LB", "name_en": "Lebanon ", "desc_en": "mobile", "name_ru": "Ливан ", "desc_ru": "мобильные" }, - { "mask": "+961-#-###-###", "cc": "LB", "name_en": "Lebanon", "desc_en": "", "name_ru": "Ливан", "desc_ru": "" }, - { "mask": "+1(758)###-####", "cc": "LC", "name_en": "Saint Lucia", "desc_en": "", "name_ru": "Сент-Люсия", "desc_ru": "" }, - { "mask": "+423(###)###-####", "cc": "LI", "name_en": "Liechtenstein", "desc_en": "", "name_ru": "Лихтенштейн", "desc_ru": "" }, - { "mask": "+94-##-###-####", "cc": "LK", "name_en": "Sri Lanka", "desc_en": "", "name_ru": "Шри-Ланка", "desc_ru": "" }, - { "mask": "+231-##-###-###", "cc": "LR", "name_en": "Liberia", "desc_en": "", "name_ru": "Либерия", "desc_ru": "" }, - { "mask": "+266-#-###-####", "cc": "LS", "name_en": "Lesotho", "desc_en": "", "name_ru": "Лесото", "desc_ru": "" }, - { "mask": "+370(###)##-###", "cc": "LT", "name_en": "Lithuania", "desc_en": "", "name_ru": "Литва", "desc_ru": "" }, - { "mask": "+352(###)###-###", "cc": "LU", "name_en": "Luxembourg", "desc_en": "", "name_ru": "Люксембург", "desc_ru": "" }, - { "mask": "+371-##-###-###", "cc": "LV", "name_en": "Latvia", "desc_en": "", "name_ru": "Латвия", "desc_ru": "" }, - { "mask": "+218-##-###-###", "cc": "LY", "name_en": "Libya", "desc_en": "", "name_ru": "Ливия", "desc_ru": "" }, - { "mask": "+218-21-###-####", "cc": "LY", "name_en": "Libya", "desc_en": "Tripoli", "name_ru": "Ливия", "desc_ru": "Триполи" }, - { "mask": "+212-##-####-###", "cc": "MA", "name_en": "Morocco", "desc_en": "", "name_ru": "Марокко", "desc_ru": "" }, - { "mask": "+377(###)###-###", "cc": "MC", "name_en": "Monaco", "desc_en": "", "name_ru": "Монако", "desc_ru": "" }, - { "mask": "+377-##-###-###", "cc": "MC", "name_en": "Monaco", "desc_en": "", "name_ru": "Монако", "desc_ru": "" }, - { "mask": "+373-####-####", "cc": "MD", "name_en": "Moldova", "desc_en": "", "name_ru": "Молдова", "desc_ru": "" }, - { "mask": "+382-##-###-###", "cc": "ME", "name_en": "Montenegro", "desc_en": "", "name_ru": "Черногория", "desc_ru": "" }, - { "mask": "+261-##-##-#####", "cc": "MG", "name_en": "Madagascar", "desc_en": "", "name_ru": "Мадагаскар", "desc_ru": "" }, - { "mask": "+692-###-####", "cc": "MH", "name_en": "Marshall Islands", "desc_en": "", "name_ru": "Маршалловы Острова", "desc_ru": "" }, - { "mask": "+389-##-###-###", "cc": "MK", "name_en": "Republic of Macedonia", "desc_en": "", "name_ru": "Респ. Македония", "desc_ru": "" }, - { "mask": "+223-##-##-####", "cc": "ML", "name_en": "Mali", "desc_en": "", "name_ru": "Мали", "desc_ru": "" }, - { "mask": "+95-##-###-###", "cc": "MM", "name_en": "Burma (Myanmar)", "desc_en": "", "name_ru": "Бирма (Мьянма)", "desc_ru": "" }, - { "mask": "+95-#-###-###", "cc": "MM", "name_en": "Burma (Myanmar)", "desc_en": "", "name_ru": "Бирма (Мьянма)", "desc_ru": "" }, - { "mask": "+95-###-###", "cc": "MM", "name_en": "Burma (Myanmar)", "desc_en": "", "name_ru": "Бирма (Мьянма)", "desc_ru": "" }, - { "mask": "+976-##-##-####", "cc": "MN", "name_en": "Mongolia", "desc_en": "", "name_ru": "Монголия", "desc_ru": "" }, - { "mask": "+853-####-####", "cc": "MO", "name_en": "Macau", "desc_en": "", "name_ru": "Макао", "desc_ru": "" }, - { "mask": "+1(670)###-####", "cc": "MP", "name_en": "Northern Mariana Islands", "desc_en": "", "name_ru": "Северные Марианские острова Сайпан", "desc_ru": "" }, - { "mask": "+596(###)##-##-##", "cc": "MQ", "name_en": "Martinique", "desc_en": "", "name_ru": "Мартиника", "desc_ru": "" }, - { "mask": "+222-##-##-####", "cc": "MR", "name_en": "Mauritania", "desc_en": "", "name_ru": "Мавритания", "desc_ru": "" }, - { "mask": "+1(664)###-####", "cc": "MS", "name_en": "Montserrat", "desc_en": "", "name_ru": "Монтсеррат", "desc_ru": "" }, - { "mask": "+356-####-####", "cc": "MT", "name_en": "Malta", "desc_en": "", "name_ru": "Мальта", "desc_ru": "" }, - { "mask": "+230-###-####", "cc": "MU", "name_en": "Mauritius", "desc_en": "", "name_ru": "Маврикий", "desc_ru": "" }, - { "mask": "+960-###-####", "cc": "MV", "name_en": "Maldives", "desc_en": "", "name_ru": "Мальдивские острова", "desc_ru": "" }, - { "mask": "+265-1-###-###", "cc": "MW", "name_en": "Malawi", "desc_en": "Telecom Ltd", "name_ru": "Малави", "desc_ru": "Telecom Ltd" }, - { "mask": "+265-#-####-####", "cc": "MW", "name_en": "Malawi", "desc_en": "", "name_ru": "Малави", "desc_ru": "" }, - { "mask": "+52(###)###-####", "cc": "MX", "name_en": "Mexico", "desc_en": "", "name_ru": "Мексика", "desc_ru": "" }, - { "mask": "+52-##-##-####", "cc": "MX", "name_en": "Mexico", "desc_en": "", "name_ru": "Мексика", "desc_ru": "" }, - { "mask": "+60-##-###-####", "cc": "MY", "name_en": "Malaysia ", "desc_en": "mobile", "name_ru": "Малайзия ", "desc_ru": "мобильные" }, - { "mask": "+60(###)###-###", "cc": "MY", "name_en": "Malaysia", "desc_en": "", "name_ru": "Малайзия", "desc_ru": "" }, - { "mask": "+60-##-###-###", "cc": "MY", "name_en": "Malaysia", "desc_en": "", "name_ru": "Малайзия", "desc_ru": "" }, - { "mask": "+60-#-###-###", "cc": "MY", "name_en": "Malaysia", "desc_en": "", "name_ru": "Малайзия", "desc_ru": "" }, - { "mask": "+258-##-###-###", "cc": "MZ", "name_en": "Mozambique", "desc_en": "", "name_ru": "Мозамбик", "desc_ru": "" }, - { "mask": "+264-##-###-####", "cc": "NA", "name_en": "Namibia", "desc_en": "", "name_ru": "Намибия", "desc_ru": "" }, - { "mask": "+687-##-####", "cc": "NC", "name_en": "New Caledonia", "desc_en": "", "name_ru": "Новая Каледония", "desc_ru": "" }, - { "mask": "+227-##-##-####", "cc": "NE", "name_en": "Niger", "desc_en": "", "name_ru": "Нигер", "desc_ru": "" }, - { "mask": "+672-3##-###", "cc": "NF", "name_en": "Norfolk Island", "desc_en": "", "name_ru": "Норфолк (остров)", "desc_ru": "" }, - { "mask": "+234(###)###-####", "cc": "NG", "name_en": "Nigeria", "desc_en": "", "name_ru": "Нигерия", "desc_ru": "" }, - { "mask": "+234-##-###-###", "cc": "NG", "name_en": "Nigeria", "desc_en": "", "name_ru": "Нигерия", "desc_ru": "" }, - { "mask": "+234-##-###-##", "cc": "NG", "name_en": "Nigeria", "desc_en": "", "name_ru": "Нигерия", "desc_ru": "" }, - { "mask": "+234(###)###-####", "cc": "NG", "name_en": "Nigeria ", "desc_en": "mobile", "name_ru": "Нигерия ", "desc_ru": "мобильные" }, - { "mask": "+505-####-####", "cc": "NI", "name_en": "Nicaragua", "desc_en": "", "name_ru": "Никарагуа", "desc_ru": "" }, - { "mask": "+31-##-###-####", "cc": "NL", "name_en": "Netherlands", "desc_en": "", "name_ru": "Нидерланды", "desc_ru": "" }, - { "mask": "+47(###)##-###", "cc": "NO", "name_en": "Norway", "desc_en": "", "name_ru": "Норвегия", "desc_ru": "" }, - { "mask": "+977-##-###-###", "cc": "NP", "name_en": "Nepal", "desc_en": "", "name_ru": "Непал", "desc_ru": "" }, - { "mask": "+674-###-####", "cc": "NR", "name_en": "Nauru", "desc_en": "", "name_ru": "Науру", "desc_ru": "" }, - { "mask": "+683-####", "cc": "NU", "name_en": "Niue", "desc_en": "", "name_ru": "Ниуэ", "desc_ru": "" }, - { "mask": "+64(###)###-###", "cc": "NZ", "name_en": "New Zealand", "desc_en": "", "name_ru": "Новая Зеландия", "desc_ru": "" }, - { "mask": "+64-##-###-###", "cc": "NZ", "name_en": "New Zealand", "desc_en": "", "name_ru": "Новая Зеландия", "desc_ru": "" }, - { "mask": "+64(###)###-####", "cc": "NZ", "name_en": "New Zealand", "desc_en": "", "name_ru": "Новая Зеландия", "desc_ru": "" }, - { "mask": "+968-##-###-###", "cc": "OM", "name_en": "Oman", "desc_en": "", "name_ru": "Оман", "desc_ru": "" }, - { "mask": "+507-###-####", "cc": "PA", "name_en": "Panama", "desc_en": "", "name_ru": "Панама", "desc_ru": "" }, - { "mask": "+51(###)###-###", "cc": "PE", "name_en": "Peru", "desc_en": "", "name_ru": "Перу", "desc_ru": "" }, - { "mask": "+689-##-##-##", "cc": "PF", "name_en": "French Polynesia", "desc_en": "", "name_ru": "Французская Полинезия (Таити)", "desc_ru": "" }, - { "mask": "+675(###)##-###", "cc": "PG", "name_en": "Papua New Guinea", "desc_en": "", "name_ru": "Папуа-Новая Гвинея", "desc_ru": "" }, - { "mask": "+63(###)###-####", "cc": "PH", "name_en": "Philippines", "desc_en": "", "name_ru": "Филиппины", "desc_ru": "" }, - { "mask": "+92(###)###-####", "cc": "PK", "name_en": "Pakistan", "desc_en": "", "name_ru": "Пакистан", "desc_ru": "" }, - { "mask": "+48(###)###-###", "cc": "PL", "name_en": "Poland", "desc_en": "", "name_ru": "Польша", "desc_ru": "" }, - { "mask": "+970-##-###-####", "cc": "PS", "name_en": "Palestine", "desc_en": "", "name_ru": "Палестина", "desc_ru": "" }, - { "mask": "+351-##-###-####", "cc": "PT", "name_en": "Portugal", "desc_en": "", "name_ru": "Португалия", "desc_ru": "" }, - { "mask": "+680-###-####", "cc": "PW", "name_en": "Palau", "desc_en": "", "name_ru": "Палау", "desc_ru": "" }, - { "mask": "+595(###)###-###", "cc": "PY", "name_en": "Paraguay", "desc_en": "", "name_ru": "Парагвай", "desc_ru": "" }, - { "mask": "+974-####-####", "cc": "QA", "name_en": "Qatar", "desc_en": "", "name_ru": "Катар", "desc_ru": "" }, - { "mask": "+262-#####-####", "cc": "RE", "name_en": "Reunion", "desc_en": "", "name_ru": "Реюньон", "desc_ru": "" }, - { "mask": "+40-##-###-####", "cc": "RO", "name_en": "Romania", "desc_en": "", "name_ru": "Румыния", "desc_ru": "" }, - { "mask": "+381-##-###-####", "cc": "RS", "name_en": "Serbia", "desc_en": "", "name_ru": "Сербия", "desc_ru": "" }, - { "mask": "+7(###)###-##-##", "cc": "RU", "name_en": "Russia", "desc_en": "", "name_ru": "Россия", "desc_ru": "" }, - { "mask": "+250(###)###-###", "cc": "RW", "name_en": "Rwanda", "desc_en": "", "name_ru": "Руанда", "desc_ru": "" }, - { "mask": "+966-5-####-####", "cc": "SA", "name_en": "Saudi Arabia ", "desc_en": "mobile", "name_ru": "Саудовская Аравия ", "desc_ru": "мобильные" }, - { "mask": "+966-#-###-####", "cc": "SA", "name_en": "Saudi Arabia", "desc_en": "", "name_ru": "Саудовская Аравия", "desc_ru": "" }, - { "mask": "+677-###-####", "cc": "SB", "name_en": "Solomon Islands ", "desc_en": "mobile", "name_ru": "Соломоновы Острова ", "desc_ru": "мобильные" }, - { "mask": "+677-#####", "cc": "SB", "name_en": "Solomon Islands", "desc_en": "", "name_ru": "Соломоновы Острова", "desc_ru": "" }, - { "mask": "+248-#-###-###", "cc": "SC", "name_en": "Seychelles", "desc_en": "", "name_ru": "Сейшелы", "desc_ru": "" }, - { "mask": "+249-##-###-####", "cc": "SD", "name_en": "Sudan", "desc_en": "", "name_ru": "Судан", "desc_ru": "" }, - { "mask": "+46-##-###-####", "cc": "SE", "name_en": "Sweden", "desc_en": "", "name_ru": "Швеция", "desc_ru": "" }, - { "mask": "+65-####-####", "cc": "SG", "name_en": "Singapore", "desc_en": "", "name_ru": "Сингапур", "desc_ru": "" }, - { "mask": "+290-####", "cc": "SH", "name_en": "Saint Helena", "desc_en": "", "name_ru": "Остров Святой Елены", "desc_ru": "" }, - { "mask": "+290-####", "cc": "SH", "name_en": "Tristan da Cunha", "desc_en": "", "name_ru": "Тристан-да-Кунья", "desc_ru": "" }, - { "mask": "+386-##-###-###", "cc": "SI", "name_en": "Slovenia", "desc_en": "", "name_ru": "Словения", "desc_ru": "" }, - { "mask": "+421(###)###-###", "cc": "SK", "name_en": "Slovakia", "desc_en": "", "name_ru": "Словакия", "desc_ru": "" }, - { "mask": "+232-##-######", "cc": "SL", "name_en": "Sierra Leone", "desc_en": "", "name_ru": "Сьерра-Леоне", "desc_ru": "" }, - { "mask": "+378-####-######", "cc": "SM", "name_en": "San Marino", "desc_en": "", "name_ru": "Сан-Марино", "desc_ru": "" }, - { "mask": "+221-##-###-####", "cc": "SN", "name_en": "Senegal", "desc_en": "", "name_ru": "Сенегал", "desc_ru": "" }, - { "mask": "+252-##-###-###", "cc": "SO", "name_en": "Somalia", "desc_en": "", "name_ru": "Сомали", "desc_ru": "" }, - { "mask": "+252-#-###-###", "cc": "SO", "name_en": "Somalia", "desc_en": "", "name_ru": "Сомали", "desc_ru": "" }, - { "mask": "+252-#-###-###", "cc": "SO", "name_en": "Somalia ", "desc_en": "mobile", "name_ru": "Сомали ", "desc_ru": "мобильные" }, - { "mask": "+597-###-####", "cc": "SR", "name_en": "Suriname ", "desc_en": "mobile", "name_ru": "Суринам ", "desc_ru": "мобильные" }, - { "mask": "+597-###-###", "cc": "SR", "name_en": "Suriname", "desc_en": "", "name_ru": "Суринам", "desc_ru": "" }, - { "mask": "+211-##-###-####", "cc": "SS", "name_en": "South Sudan", "desc_en": "", "name_ru": "Южный Судан", "desc_ru": "" }, - { "mask": "+239-##-#####", "cc": "ST", "name_en": "Sao Tome and Principe", "desc_en": "", "name_ru": "Сан-Томе и Принсипи", "desc_ru": "" }, - { "mask": "+503-##-##-####", "cc": "SV", "name_en": "El Salvador", "desc_en": "", "name_ru": "Сальвадор", "desc_ru": "" }, - { "mask": "+1(721)###-####", "cc": "SX", "name_en": "Sint Maarten", "desc_en": "", "name_ru": "Синт-Маартен", "desc_ru": "" }, - { "mask": "+963-##-####-###", "cc": "SY", "name_en": "Syrian Arab Republic", "desc_en": "", "name_ru": "Сирийская арабская республика", "desc_ru": "" }, - { "mask": "+268-##-##-####", "cc": "SZ", "name_en": "Swaziland", "desc_en": "", "name_ru": "Свазиленд", "desc_ru": "" }, - { "mask": "+1(649)###-####", "cc": "TC", "name_en": "Turks & Caicos", "desc_en": "", "name_ru": "Тёркс и Кайкос", "desc_ru": "" }, - { "mask": "+235-##-##-##-##", "cc": "TD", "name_en": "Chad", "desc_en": "", "name_ru": "Чад", "desc_ru": "" }, - { "mask": "+228-##-###-###", "cc": "TG", "name_en": "Togo", "desc_en": "", "name_ru": "Того", "desc_ru": "" }, - { "mask": "+66-##-###-####", "cc": "TH", "name_en": "Thailand ", "desc_en": "mobile", "name_ru": "Таиланд ", "desc_ru": "мобильные" }, - { "mask": "+66-##-###-###", "cc": "TH", "name_en": "Thailand", "desc_en": "", "name_ru": "Таиланд", "desc_ru": "" }, - { "mask": "+992-##-###-####", "cc": "TJ", "name_en": "Tajikistan", "desc_en": "", "name_ru": "Таджикистан", "desc_ru": "" }, - { "mask": "+690-####", "cc": "TK", "name_en": "Tokelau", "desc_en": "", "name_ru": "Токелау", "desc_ru": "" }, - { "mask": "+670-###-####", "cc": "TL", "name_en": "East Timor", "desc_en": "", "name_ru": "Восточный Тимор", "desc_ru": "" }, - { "mask": "+670-77#-#####", "cc": "TL", "name_en": "East Timor", "desc_en": "Timor Telecom", "name_ru": "Восточный Тимор", "desc_ru": "Timor Telecom" }, - { "mask": "+670-78#-#####", "cc": "TL", "name_en": "East Timor", "desc_en": "Timor Telecom", "name_ru": "Восточный Тимор", "desc_ru": "Timor Telecom" }, - { "mask": "+993-#-###-####", "cc": "TM", "name_en": "Turkmenistan", "desc_en": "", "name_ru": "Туркменистан", "desc_ru": "" }, - { "mask": "+216-##-###-###", "cc": "TN", "name_en": "Tunisia", "desc_en": "", "name_ru": "Тунис", "desc_ru": "" }, - { "mask": "+676-#####", "cc": "TO", "name_en": "Tonga", "desc_en": "", "name_ru": "Тонга", "desc_ru": "" }, - { "mask": "+90(###)###-####", "cc": "TR", "name_en": "Turkey", "desc_en": "", "name_ru": "Турция", "desc_ru": "" }, - { "mask": "+1(868)###-####", "cc": "TT", "name_en": "Trinidad & Tobago", "desc_en": "", "name_ru": "Тринидад и Тобаго", "desc_ru": "" }, - { "mask": "+688-90####", "cc": "TV", "name_en": "Tuvalu ", "desc_en": "mobile", "name_ru": "Тувалу ", "desc_ru": "мобильные" }, - { "mask": "+688-2####", "cc": "TV", "name_en": "Tuvalu", "desc_en": "", "name_ru": "Тувалу", "desc_ru": "" }, - { "mask": "+886-#-####-####", "cc": "TW", "name_en": "Taiwan", "desc_en": "", "name_ru": "Тайвань", "desc_ru": "" }, - { "mask": "+886-####-####", "cc": "TW", "name_en": "Taiwan", "desc_en": "", "name_ru": "Тайвань", "desc_ru": "" }, - { "mask": "+255-##-###-####", "cc": "TZ", "name_en": "Tanzania", "desc_en": "", "name_ru": "Танзания", "desc_ru": "" }, - { "mask": "+380(##)###-##-##", "cc": "UA", "name_en": "Ukraine", "desc_en": "", "name_ru": "Украина", "desc_ru": "" }, - { "mask": "+256(###)###-###", "cc": "UG", "name_en": "Uganda", "desc_en": "", "name_ru": "Уганда", "desc_ru": "" }, - { "mask": "+44-##-####-####", "cc": "UK", "name_en": "United Kingdom", "desc_en": "", "name_ru": "Великобритания", "desc_ru": "" }, - { "mask": "+598-#-###-##-##", "cc": "UY", "name_en": "Uruguay", "desc_en": "", "name_ru": "Уругвай", "desc_ru": "" }, - { "mask": "+998-##-###-####", "cc": "UZ", "name_en": "Uzbekistan", "desc_en": "", "name_ru": "Узбекистан", "desc_ru": "" }, - { "mask": "+39-6-698-#####", "cc": "VA", "name_en": "Vatican City", "desc_en": "", "name_ru": "Ватикан", "desc_ru": "" }, - { "mask": "+1(784)###-####", "cc": "VC", "name_en": "Saint Vincent & the Grenadines", "desc_en": "", "name_ru": "Сент-Винсент и Гренадины", "desc_ru": "" }, - { "mask": "+58(###)###-####", "cc": "VE", "name_en": "Venezuela", "desc_en": "", "name_ru": "Венесуэла", "desc_ru": "" }, - { "mask": "+1(284)###-####", "cc": "VG", "name_en": "British Virgin Islands", "desc_en": "", "name_ru": "Британские Виргинские острова", "desc_ru": "" }, - { "mask": "+1(340)###-####", "cc": "VI", "name_en": "US Virgin Islands", "desc_en": "", "name_ru": "Американские Виргинские острова", "desc_ru": "" }, - { "mask": "+84-##-####-###", "cc": "VN", "name_en": "Vietnam", "desc_en": "", "name_ru": "Вьетнам", "desc_ru": "" }, - { "mask": "+84(###)####-###", "cc": "VN", "name_en": "Vietnam", "desc_en": "", "name_ru": "Вьетнам", "desc_ru": "" }, - { "mask": "+678-##-#####", "cc": "VU", "name_en": "Vanuatu ", "desc_en": "mobile", "name_ru": "Вануату ", "desc_ru": "мобильные" }, - { "mask": "+678-#####", "cc": "VU", "name_en": "Vanuatu", "desc_en": "", "name_ru": "Вануату", "desc_ru": "" }, - { "mask": "+681-##-####", "cc": "WF", "name_en": "Wallis and Futuna", "desc_en": "", "name_ru": "Уоллис и Футуна", "desc_ru": "" }, - { "mask": "+685-##-####", "cc": "WS", "name_en": "Samoa", "desc_en": "", "name_ru": "Самоа", "desc_ru": "" }, - { "mask": "+967-###-###-###", "cc": "YE", "name_en": "Yemen ", "desc_en": "mobile", "name_ru": "Йемен ", "desc_ru": "мобильные" }, - { "mask": "+967-#-###-###", "cc": "YE", "name_en": "Yemen", "desc_en": "", "name_ru": "Йемен", "desc_ru": "" }, - { "mask": "+967-##-###-###", "cc": "YE", "name_en": "Yemen", "desc_en": "", "name_ru": "Йемен", "desc_ru": "" }, - { "mask": "+27-##-###-####", "cc": "ZA", "name_en": "South Africa", "desc_en": "", "name_ru": "Южно-Африканская Респ.", "desc_ru": "" }, - { "mask": "+260-##-###-####", "cc": "ZM", "name_en": "Zambia", "desc_en": "", "name_ru": "Замбия", "desc_ru": "" }, - { "mask": "+263-#-######", "cc": "ZW", "name_en": "Zimbabwe", "desc_en": "", "name_ru": "Зимбабве", "desc_ru": "" }, - { "mask": "+1(###)###-####", "cc": ["US", "CA"], "name_en": "USA and Canada", "desc_en": "", "name_ru": "США и Канада", "desc_ru": "" } -] diff --git a/assets/plugins/input-mask/phone-codes/readme.txt b/assets/plugins/input-mask/phone-codes/readme.txt deleted file mode 100644 index 0a170a76..00000000 --- a/assets/plugins/input-mask/phone-codes/readme.txt +++ /dev/null @@ -1 +0,0 @@ -more phone masks can be found at https://github.com/andr-04/inputmask-multi \ No newline at end of file diff --git a/assets/plugins/ionslider/img/sprite-skin-flat.png b/assets/plugins/ionslider/img/sprite-skin-flat.png deleted file mode 100644 index 3055db77..00000000 Binary files a/assets/plugins/ionslider/img/sprite-skin-flat.png and /dev/null differ diff --git a/assets/plugins/ionslider/img/sprite-skin-nice.png b/assets/plugins/ionslider/img/sprite-skin-nice.png deleted file mode 100644 index d62f8188..00000000 Binary files a/assets/plugins/ionslider/img/sprite-skin-nice.png and /dev/null differ diff --git a/assets/plugins/ionslider/ion.rangeSlider.css b/assets/plugins/ionslider/ion.rangeSlider.css deleted file mode 100644 index 052d477e..00000000 --- a/assets/plugins/ionslider/ion.rangeSlider.css +++ /dev/null @@ -1,126 +0,0 @@ -/* Ion.RangeSlider -// css version 1.8.5 -// by Denis Ineshin | ionden.com -// ===================================================================================================================*/ - -/* ===================================================================================================================== -// RangeSlider */ - -.irs { - position: relative; display: block; -} - .irs-line { - position: relative; display: block; - overflow: hidden; - } - .irs-line-left, .irs-line-mid, .irs-line-right { - position: absolute; display: block; - top: 0; - } - .irs-line-left { - left: 0; width: 10%; - } - .irs-line-mid { - left: 10%; width: 80%; - } - .irs-line-right { - right: 0; width: 10%; - } - - .irs-diapason { - position: absolute; display: block; - left: 0; width: 100%; - } - .irs-slider { - position: absolute; display: block; - cursor: default; - z-index: 1; - } - .irs-slider.single { - left: 10px; - } - .irs-slider.single:before { - position: absolute; display: block; content: ""; - top: -30%; left: -30%; - width: 160%; height: 160%; - background: rgba(0,0,0,0.0); - } - .irs-slider.from { - left: 100px; - } - .irs-slider.from:before { - position: absolute; display: block; content: ""; - top: -30%; left: -30%; - width: 130%; height: 160%; - background: rgba(0,0,0,0.0); - } - .irs-slider.to { - left: 300px; - } - .irs-slider.to:before { - position: absolute; display: block; content: ""; - top: -30%; left: 0; - width: 130%; height: 160%; - background: rgba(0,0,0,0.0); - } - .irs-slider.last { - z-index: 2; - } - - .irs-min { - position: absolute; display: block; - left: 0; - cursor: default; - } - .irs-max { - position: absolute; display: block; - right: 0; - cursor: default; - } - - .irs-from, .irs-to, .irs-single { - position: absolute; display: block; - top: 0; left: 0; - cursor: default; - white-space: nowrap; - } - - -.irs-grid { - position: absolute; display: none; - bottom: 0; left: 0; - width: 100%; height: 20px; -} -.irs-with-grid .irs-grid { - display: block; -} - .irs-grid-pol { - position: absolute; - top: 0; left: 0; - width: 1px; height: 8px; - background: #000; - } - .irs-grid-pol.small { - height: 4px; - } - .irs-grid-text { - position: absolute; - bottom: 0; left: 0; - width: 100px; - white-space: nowrap; - text-align: center; - font-size: 9px; line-height: 9px; - color: #000; - } - -.irs-disable-mask { - position: absolute; display: block; - top: 0; left: 0; - width: 100%; height: 100%; - cursor: default; - background: rgba(0,0,0,0.0); - z-index: 2; -} -.irs-disabled { - opacity: 0.4; -} \ No newline at end of file diff --git a/assets/plugins/ionslider/ion.rangeSlider.min.js b/assets/plugins/ionslider/ion.rangeSlider.min.js deleted file mode 100644 index f352609f..00000000 --- a/assets/plugins/ionslider/ion.rangeSlider.min.js +++ /dev/null @@ -1,22 +0,0 @@ -// Ion.RangeSlider -// version 1.8.2 -// https://github.com/IonDen/ion.rangeSlider -(function(c,X,ea,S){var Y=0,O=function(){var c=S.userAgent,a=/msie\s\d+/i;return 0<c.search(a)&&(c=a.exec(c).toString(),c=c.split(" ")[1],9>c)?!0:!1}(),H;try{X.createEvent("TouchEvent"),H=!0}catch(ga){H=!1}var N={init:function(A){return this.each(function(){var a=c.extend({min:10,max:100,from:null,to:null,type:"single",step:1,prefix:"",postfix:"",hasGrid:!1,hideMinMax:!1,hideFromTo:!1,prettify:!0,onChange:null,onLoad:null,onFinish:null},A),d=c(this),u=this;if(!d.data("isActive")){d.data("isActive", -!0);this.pluginCount=Y+=1;d.prop("value")&&(a.min=parseInt(d.prop("value").split(";")[0],10),a.max=parseInt(d.prop("value").split(";")[1],10));"number"!==typeof a.from&&(a.from=a.min);"number"!==typeof a.to&&(a.to=a.max);"number"===typeof d.data("from")&&(a.from=parseFloat(d.data("from")));"number"===typeof d.data("to")&&(a.to=parseFloat(d.data("to")));d.data("step")&&(a.step=parseFloat(d.data("step")));d.data("type")&&(a.type=d.data("type"));d.data("prefix")&&(a.prefix=d.data("prefix"));d.data("postfix")&& -(a.postfix=d.data("postfix"));d.data("hasgrid")&&(a.hasGrid=d.data("hasgrid"));d.data("hideminmax")&&(a.hideMinMax=d.data("hideminmax"));d.data("hidefromto")&&(a.hideFromTo=d.data("hidefromto"));d.data("prettify")&&(a.prettify=d.data("prettify"));a.from<a.min&&(a.from=a.min);a.to>a.max&&(a.to=a.max);"double"===a.type&&(a.from>a.to&&(a.from=a.to),a.to<a.from&&(a.to=a.from));var v=function(b){b=b.toString();a.prettify&&(b=b.replace(/(\d{1,3}(?=(?:\d\d\d)+(?!\d)))/g,"$1 "));return b},N='<span class="irs" id="irs-'+ -this.pluginCount+'"></span>';d[0].style.display="none";d.before(N);var w=c("#irs-"+this.pluginCount),C=c(X.body),I=c(ea),l,D,E,x,y,q,r,e,m,s,T,Z,p=!1,t=!1,P=!0,g={},U=0,J=0,K=0,k=0,B=0,L=0,V=0,Q=0,R=0,$=0,n=0;parseInt(a.step,10)!==parseFloat(a.step)&&(n=a.step.toString().split(".")[1],n=Math.pow(10,n.length));this.updateData=function(b){P=!0;a=c.extend(a,b);w.find("*").off();I.off("mouseup.irs"+u.pluginCount);C.off("mouseup.irs"+u.pluginCount);C.off("mousemove.irs"+u.pluginCount);w.html("");aa()}; -this.removeSlider=function(){w.find("*").off();I.off("mouseup.irs"+u.pluginCount);C.off("mouseup.irs"+u.pluginCount);C.off("mousemove.irs"+u.pluginCount);w.html("").remove();d.data("isActive",!1);d.show()};var aa=function(){w.html('<span class="irs"><span class="irs-line"><span class="irs-line-left"></span><span class="irs-line-mid"></span><span class="irs-line-right"></span></span><span class="irs-min">0</span><span class="irs-max">1</span><span class="irs-from">0</span><span class="irs-to">0</span><span class="irs-single">0</span></span><span class="irs-grid"></span>'); -l=w.find(".irs");D=l.find(".irs-min");E=l.find(".irs-max");x=l.find(".irs-from");y=l.find(".irs-to");q=l.find(".irs-single");Z=w.find(".irs-grid");a.hideMinMax&&(D[0].style.display="none",E[0].style.display="none",K=J=0);a.hideFromTo&&(x[0].style.display="none",y[0].style.display="none",q[0].style.display="none");a.hideMinMax||(D.html(a.prefix+v(a.min)+a.postfix),E.html(a.prefix+v(a.max)+a.postfix),J=D.outerWidth(),K=E.outerWidth());if("single"===a.type){if(l.append('<span class="irs-slider single"></span>'), -r=l.find(".single"),r.on("mousedown",function(a){a.preventDefault();a.stopPropagation();F(a,c(this),null);t=p=!0;O&&c("*").prop("unselectable",!0)}),H)r.on("touchstart",function(a){a.preventDefault();a.stopPropagation();F(a.originalEvent.touches[0],c(this),null);t=p=!0})}else"double"===a.type&&(l.append('<span class="irs-diapason"></span><span class="irs-slider from"></span><span class="irs-slider to"></span>'),e=l.find(".from"),m=l.find(".to"),T=l.find(".irs-diapason"),M(),e.on("mousedown",function(a){a.preventDefault(); -a.stopPropagation();c(this).addClass("last");m.removeClass("last");F(a,c(this),"from");t=p=!0;O&&c("*").prop("unselectable",!0)}),m.on("mousedown",function(a){a.preventDefault();a.stopPropagation();c(this).addClass("last");e.removeClass("last");F(a,c(this),"to");t=p=!0;O&&c("*").prop("unselectable",!0)}),H&&(e.on("touchstart",function(a){a.preventDefault();a.stopPropagation();c(this).addClass("last");m.removeClass("last");F(a.originalEvent.touches[0],c(this),"from");t=p=!0}),m.on("touchstart",function(a){a.preventDefault(); -a.stopPropagation();c(this).addClass("last");e.removeClass("last");F(a.originalEvent.touches[0],c(this),"to");t=p=!0})),a.to===a.max&&e.addClass("last"));var b=function(){p&&(p=t=!1,s.removeAttr("id"),s=null,"double"===a.type&&M(),W(),O&&c("*").prop("unselectable",!1))};C.on("mouseup.irs"+u.pluginCount,function(){b()});I.on("mouseup.irs"+u.pluginCount,function(){b()});C.on("mousemove.irs"+u.pluginCount,function(a){p&&(U=a.pageX,ba())});H&&(I.on("touchend",function(){p&&(p=t=!1,s.removeAttr("id"), -s=null,"double"===a.type&&M(),W())}),I.on("touchmove",function(a){p&&(U=a.originalEvent.touches[0].pageX,ba())}));ca();S();a.hasGrid&&fa()},ca=function(){k=l.width();L=r?r.width():e.width();B=k-L},F=function(b,f,c){ca();P=!1;s=f;s.attr("id","irs-active-slider");f=s.offset().left;$=f+(b.pageX-f)-s.position().left;"single"===a.type?V=l.width()-L:"double"===a.type&&("from"===c?(Q=0,R=parseInt(m.css("left"),10)):(Q=parseInt(e.css("left"),10),R=l.width()-L))},M=function(){var a=e.width(),f=c.data(e[0], -"x")||parseInt(e[0].style.left,10)||e.position().left,G=(c.data(m[0],"x")||parseInt(m[0].style.left,10)||m.position().left)-f;T[0].style.left=f+a/2+"px";T[0].style.width=G+"px"},ba=function(){var b=U-$;"single"===a.type?(0>b&&(b=0),b>V&&(b=V)):"double"===a.type&&(b<Q&&(b=Q),b>R&&(b=R),M());c.data(s[0],"x",b);W();b=Math.round(b);s[0].style.left=b+"px"},W=function(){var b={fromNumber:0,toNumber:0,fromPers:0,toPers:0,fromX:0,toX:0},f=a.max-a.min,G;"single"===a.type?(b.fromX=c.data(r[0],"x")||parseInt(r[0].style.left, -10)||r.position().left,b.fromPers=b.fromX/B*100,G=f/100*b.fromPers+parseInt(a.min,10),b.fromNumber=Math.round(G/a.step)*a.step,n&&(b.fromNumber=parseInt(b.fromNumber*n,10)/n)):"double"===a.type&&(b.fromX=c.data(e[0],"x")||parseInt(e[0].style.left,10)||e.position().left,b.fromPers=b.fromX/B*100,G=f/100*b.fromPers+parseInt(a.min,10),b.fromNumber=Math.round(G/a.step)*a.step,b.toX=c.data(m[0],"x")||parseInt(m[0].style.left,10)||m.position().left,b.toPers=b.toX/B*100,f=f/100*b.toPers+parseInt(a.min,10), -b.toNumber=Math.round(f/a.step)*a.step,n&&(b.fromNumber=parseInt(b.fromNumber*n,10)/n,b.toNumber=parseInt(b.toNumber*n,10)/n));g=b;da()},S=function(){var b={fromNumber:a.from,toNumber:a.to,fromPers:0,toPers:0,fromX:0,fromX_pure:0,toX:0,toX_pure:0},f=a.max-a.min;"single"===a.type?(b.fromPers=(b.fromNumber-a.min)/f*100,b.fromX_pure=B/100*b.fromPers,b.fromX=Math.round(b.fromX_pure),r[0].style.left=b.fromX+"px",c.data(r[0],"x",b.fromX_pure)):"double"===a.type&&(b.fromPers=(b.fromNumber-a.min)/f*100,b.fromX_pure= -B/100*b.fromPers,b.fromX=Math.round(b.fromX_pure),e[0].style.left=b.fromX+"px",c.data(e[0],"x",b.fromX_pure),b.toPers=(b.toNumber-a.min)/f*100,b.toX_pure=B/100*b.toPers,b.toX=Math.round(b.toX_pure),m[0].style.left=b.toX+"px",c.data(m[0],"x",b.toX_pure),M());g=b;da()},da=function(){var b,f,c,z,e,h;h=L/2;"single"===a.type?(a.hideText||(x[0].style.display="none",y[0].style.display="none",c=a.prefix+v(g.fromNumber)+a.postfix,q.html(c),e=q.outerWidth(),h=g.fromX-e/2+h,0>h&&(h=0),h>k-e&&(h=k-e),q[0].style.left= -h+"px",a.hideMinMax||a.hideFromTo||(D[0].style.display=h<J?"none":"block",E[0].style.display=h+e>k-K?"none":"block")),d.attr("value",parseInt(g.fromNumber,10))):"double"===a.type&&(a.hideText||(b=a.prefix+v(g.fromNumber)+a.postfix,f=a.prefix+v(g.toNumber)+a.postfix,c=g.fromNumber!==g.toNumber?a.prefix+v(g.fromNumber)+" \u2014 "+a.prefix+v(g.toNumber)+a.postfix:a.prefix+v(g.fromNumber)+a.postfix,x.html(b),y.html(f),q.html(c),b=x.outerWidth(),f=g.fromX-b/2+h,0>f&&(f=0),f>k-b&&(f=k-b),x[0].style.left= -f+"px",c=y.outerWidth(),z=g.toX-c/2+h,0>z&&(z=0),z>k-c&&(z=k-c),y[0].style.left=z+"px",e=q.outerWidth(),h=g.fromX+(g.toX-g.fromX)/2-e/2+h,0>h&&(h=0),h>k-e&&(h=k-e),q[0].style.left=h+"px",f+b<z?(q[0].style.display="none",x[0].style.display="block",y[0].style.display="block"):(q[0].style.display="block",x[0].style.display="none",y[0].style.display="none"),a.hideMinMax||a.hideFromTo||(D[0].style.display=h<J||f<J?"none":"block",E[0].style.display=h+e>k-K||z+c>k-K?"none":"block")),d.attr("value",parseInt(g.fromNumber, -10)+";"+parseInt(g.toNumber,10)));"function"===typeof a.onChange&&a.onChange.call(this,g);"function"!==typeof a.onFinish||t||P||a.onFinish.call(this,g);"function"===typeof a.onLoad&&!t&&P&&a.onLoad.call(this,g)},fa=function(){w.addClass("irs-with-grid");var b,c="",d=0,d=0,e="";for(b=0;20>=b;b+=1)d=Math.floor(k/20*b),d>=k&&(d=k-1),e+='<span class="irs-grid-pol small" style="left: '+d+'px;"></span>';for(b=0;4>=b;b+=1)d=Math.floor(k/4*b),d>=k&&(d=k-1),e+='<span class="irs-grid-pol" style="left: '+d+ -'px;"></span>',n?(c=a.min+(a.max-a.min)/4*b,c=c/a.step*a.step,c=parseInt(c*n,10)/n):(c=Math.round(a.min+(a.max-a.min)/4*b),c=Math.round(c/a.step)*a.step,c=v(c)),0===b?e+='<span class="irs-grid-text" style="left: '+d+'px; text-align: left;">'+c+"</span>":4===b?(d-=100,e+='<span class="irs-grid-text" style="left: '+d+'px; text-align: right;">'+c+"</span>"):(d-=50,e+='<span class="irs-grid-text" style="left: '+d+'px;">'+c+"</span>");Z.html(e)};aa()}})},update:function(c){return this.each(function(){this.updateData(c)})}, -remove:function(){return this.each(function(){this.removeSlider()})}};c.fn.ionRangeSlider=function(A){if(N[A])return N[A].apply(this,Array.prototype.slice.call(arguments,1));if("object"!==typeof A&&A)c.error("Method "+A+" does not exist for jQuery.ionRangeSlider");else return N.init.apply(this,arguments)}})(jQuery,document,window,navigator); \ No newline at end of file diff --git a/assets/plugins/ionslider/ion.rangeSlider.skinFlat.css b/assets/plugins/ionslider/ion.rangeSlider.skinFlat.css deleted file mode 100644 index 0f141beb..00000000 --- a/assets/plugins/ionslider/ion.rangeSlider.skinFlat.css +++ /dev/null @@ -1,89 +0,0 @@ -/* Ion.RangeSlider, Flat UI Skin -// css version 1.8.5 -// by Denis Ineshin | ionden.com -// ===================================================================================================================*/ - -/* ===================================================================================================================== -// Skin details */ - -.irs-line-mid, -.irs-line-left, -.irs-line-right, -.irs-diapason, -.irs-slider { - background: url(img/sprite-skin-flat.png) repeat-x; -} - -.irs { - height: 40px; -} -.irs-with-grid { - height: 60px; -} -.irs-line { - height: 12px; top: 25px; -} - .irs-line-left { - height: 12px; - background-position: 0 -30px; - } - .irs-line-mid { - height: 12px; - background-position: 0 0; - } - .irs-line-right { - height: 12px; - background-position: 100% -30px; - } - -.irs-diapason { - height: 12px; top: 25px; - background-position: 0 -60px; -} - -.irs-slider { - width: 16px; height: 18px; - top: 22px; - background-position: 0 -90px; -} -#irs-active-slider, .irs-slider:hover { - background-position: 0 -120px; -} - -.irs-min, .irs-max { - color: #999; - font-size: 10px; line-height: 1.333; - text-shadow: none; - top: 0; padding: 1px 3px; - background: #e1e4e9; - border-radius: 4px; -} - -.irs-from, .irs-to, .irs-single { - color: #fff; - font-size: 10px; line-height: 1.333; - text-shadow: none; - padding: 1px 5px; - background: #ed5565; - border-radius: 4px; -} -.irs-from:after, .irs-to:after, .irs-single:after { - position: absolute; display: block; content: ""; - bottom: -6px; left: 50%; - width: 0; height: 0; - margin-left: -3px; - overflow: hidden; - border: 3px solid transparent; - border-top-color: #ed5565; -} - - -.irs-grid-pol { - background: #e1e4e9; -} -.irs-grid-text { - color: #999; -} - -.irs-disabled { -} \ No newline at end of file diff --git a/assets/plugins/ionslider/ion.rangeSlider.skinNice.css b/assets/plugins/ionslider/ion.rangeSlider.skinNice.css deleted file mode 100644 index 89e2810b..00000000 --- a/assets/plugins/ionslider/ion.rangeSlider.skinNice.css +++ /dev/null @@ -1,85 +0,0 @@ -/* Ion.RangeSlider, Nice Skin -// css version 1.8.5 -// by Denis Ineshin | ionden.com -// ===================================================================================================================*/ - -/* ===================================================================================================================== -// Skin details */ - -.irs-line-mid, -.irs-line-left, -.irs-line-right, -.irs-diapason, -.irs-slider { - background: url(img/sprite-skin-nice.png) repeat-x; -} - -.irs { - height: 40px; -} -.irs-with-grid { - height: 60px; -} -.irs-line { - height: 8px; top: 25px; -} - .irs-line-left { - height: 8px; - background-position: 0 -30px; - } - .irs-line-mid { - height: 8px; - background-position: 0 0; - } - .irs-line-right { - height: 8px; - background-position: 100% -30px; - } - -.irs-diapason { - height: 8px; top: 25px; - background-position: 0 -60px; -} - -.irs-slider { - width: 22px; height: 22px; - top: 17px; - background-position: 0 -90px; -} -#irs-active-slider, .irs-slider:hover { - background-position: 0 -120px; -} - -.irs-min, .irs-max { - color: #999; - font-size: 10px; line-height: 1.333; - text-shadow: none; - top: 0; padding: 1px 3px; - background: rgba(0,0,0,0.1); - border-radius: 3px; -} -.lt-ie9 .irs-min, .lt-ie9 .irs-max { - background: #ccc; -} - -.irs-from, .irs-to, .irs-single { - color: #fff; - font-size: 10px; line-height: 1.333; - text-shadow: none; - padding: 1px 5px; - background: rgba(0,0,0,0.3); - border-radius: 3px; -} -.lt-ie9 .irs-from, .lt-ie9 .irs-to, .lt-ie9 .irs-single { - background: #999; -} - -.irs-grid-pol { - background: #99a4ac; -} -.irs-grid-text { - color: #99a4ac; -} - -.irs-disabled { -} \ No newline at end of file diff --git a/assets/plugins/jQuery/jQuery-2.1.4.min.js b/assets/plugins/jQuery/jQuery-2.1.4.min.js deleted file mode 100644 index 49990d6e..00000000 --- a/assets/plugins/jQuery/jQuery-2.1.4.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b="length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function qa(){}qa.prototype=d.filters=d.pseudos,d.setFilters=new qa,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function ra(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){ -return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=L.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,R=["Top","Right","Bottom","Left"],S=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement("div")),c=l.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||l,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||0)-(d&&d.clientLeft||e&&e.clientLeft||0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||0)-(d&&d.clientTop||e&&e.clientTop||0)),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=l),3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==_()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?Z:$):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=Z,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!0),L.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-1;e?L.access(d,b,e):(d.removeEventListener(a,c,!0),L.remove(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=$;else if(!d)return this;return 1===e&&(f=d,d=function(a){return n().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=$),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var aa=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ba=/<([\w:]+)/,ca=/<|&#?\w+;/,da=/<(?:script|style|link)/i,ea=/checked\s*(?:[^=]|=\s*.checked.)/i,fa=/^$|\/(?:java|ecma)script/i,ga=/^true\/(.*)/,ha=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ia={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ia.optgroup=ia.option,ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead,ia.th=ia.td;function ja(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function ka(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function la(a){var b=ga.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function ma(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function na(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function oa(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pa(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=oa(h),f=oa(a),d=0,e=f.length;e>d;d++)pa(f[d],g[d]);if(b)if(c)for(f=f||oa(a),g=g||oa(h),d=0,e=f.length;e>d;d++)na(f[d],g[d]);else na(a,h);return g=oa(h,"script"),g.length>0&&ma(g,!i&&oa(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(ca.test(e)){f=f||k.appendChild(b.createElement("div")),g=(ba.exec(e)||["",""])[1].toLowerCase(),h=ia[g]||ia._default,f.innerHTML=h[1]+e.replace(aa,"<$1></$2>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=oa(k.appendChild(e),"script"),i&&ma(f),c)){j=0;while(e=f[j++])fa.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(oa(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&ma(oa(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(oa(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!da.test(a)&&!ia[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(aa,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(oa(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(oa(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&ea.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(oa(c,"script"),ka),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,oa(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,la),j=0;g>j;j++)h=f[j],fa.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(ha,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qa,ra={};function sa(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function ta(a){var b=l,c=ra[a];return c||(c=sa(a,b),"none"!==c&&c||(qa=(qa||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=qa[0].contentDocument,b.write(),b.close(),c=sa(a,b),qa.detach()),ra[a]=c),c}var ua=/^margin/,va=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),wa=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)};function xa(a,b,c){var d,e,f,g,h=a.style;return c=c||wa(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),va.test(g)&&ua.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function ya(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement("div"),f=l.createElement("div");if(f.style){f.style.backgroundClip="content-box",f.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===f.style.backgroundClip,e.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",e.appendChild(f);function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",f.innerHTML="",d.appendChild(e);var g=a.getComputedStyle(f,null);b="1%"!==g.top,c="4px"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div"));return c.style.cssText=f.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",f.style.width="1px",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),f.removeChild(c),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var za=/^(none|table(?!-c[ea]).+)/,Aa=new RegExp("^("+Q+")(.*)$","i"),Ba=new RegExp("^([+-])=("+Q+")","i"),Ca={position:"absolute",visibility:"hidden",display:"block"},Da={letterSpacing:"0",fontWeight:"400"},Ea=["Webkit","O","Moz","ms"];function Fa(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Ea.length;while(e--)if(b=Ea[e]+c,b in a)return b;return d}function Ga(a,b,c){var d=Aa.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Ha(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+R[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+R[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+R[f]+"Width",!0,e))):(g+=n.css(a,"padding"+R[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+R[f]+"Width",!0,e)));return g}function Ia(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=wa(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=xa(a,b,f),(0>e||null==e)&&(e=a.style[b]),va.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Ha(a,b,c||(g?"border":"content"),d,f)+"px"}function Ja(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",ta(d.nodeName)))):(e=S(d),"none"===c&&e||L.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xa(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fa(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Ba.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fa(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xa(a,b,d)),"normal"===e&&b in Da&&(e=Da[b]),""===c||c?(f=parseFloat(e),c===!0||n.isNumeric(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?za.test(n.css(a,"display"))&&0===a.offsetWidth?n.swap(a,Ca,function(){return Ia(a,b,d)}):Ia(a,b,d):void 0},set:function(a,c,d){var e=d&&wa(a);return Ga(a,c,d?Ha(a,b,d,"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),n.cssHooks.marginRight=ya(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},xa,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ua.test(a)||(n.cssHooks[a+b].set=Ga)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=wa(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Ja(this,!0)},hide:function(){return Ja(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Ka(a,b,c,d,e){return new Ka.prototype.init(a,b,c,d,e)}n.Tween=Ka,Ka.prototype={constructor:Ka,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Ka.propHooks[this.prop];return a&&a.get?a.get(this):Ka.propHooks._default.get(this)},run:function(a){var b,c=Ka.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ka.propHooks._default.set(this),this}},Ka.prototype.init.prototype=Ka.prototype,Ka.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Ka.propHooks.scrollTop=Ka.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=Ka.prototype.init,n.fx.step={};var La,Ma,Na=/^(?:toggle|show|hide)$/,Oa=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),Pa=/queueHooks$/,Qa=[Va],Ra={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Oa.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&Oa.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function Sa(){return setTimeout(function(){La=void 0}),La=n.now()}function Ta(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ua(a,b,c){for(var d,e=(Ra[b]||[]).concat(Ra["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Va(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?L.get(a,"olddisplay")||ta(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Na.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?ta(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=L.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ua(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function Wa(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xa(a,b,c){var d,e,f=0,g=Qa.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=La||Sa(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:La||Sa(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wa(k,j.opts.specialEasing);g>f;f++)if(d=Qa[f].call(j,a,k,j.opts))return d;return n.map(k,Ua,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xa,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Ra[c]=Ra[c]||[],Ra[c].unshift(b)},prefilter:function(a,b){b?Qa.unshift(a):Qa.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xa(this,n.extend({},a),f);(e||L.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pa.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Ta(b,!0),a,d,e)}}),n.each({slideDown:Ta("show"),slideUp:Ta("hide"),slideToggle:Ta("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(La=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),La=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Ma||(Ma=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(Ma),Ma=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=l.createElement("input"),b=l.createElement("select"),c=b.appendChild(l.createElement("option"));a.type="checkbox",k.checkOn=""!==a.value,k.optSelected=c.selected,b.disabled=!0,k.optDisabled=!c.disabled,a=l.createElement("input"),a.value="t",a.type="radio",k.radioValue="t"===a.value}();var Ya,Za,$a=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return J(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Za:Ya)), -void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),Za={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$a[b]||n.find.attr;$a[b]=function(a,b,d){var e,f;return d||(f=$a[b],$a[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$a[b]=f),e}});var _a=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute("tabindex")||_a.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ab=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ab," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||"string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ab," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ab," ").indexOf(b)>=0)return!0;return!1}});var bb=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var cb=n.now(),db=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(a){var b,c;if(!a||"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,"text/xml")}catch(d){b=void 0}return(!b||b.getElementsByTagName("parsererror").length)&&n.error("Invalid XML: "+a),b};var eb=/#.*$/,fb=/([?&])_=[^&]*/,gb=/^(.*?):[ \t]*([^\r\n]*)$/gm,hb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,ib=/^(?:GET|HEAD)$/,jb=/^\/\//,kb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,lb={},mb={},nb="*/".concat("*"),ob=a.location.href,pb=kb.exec(ob.toLowerCase())||[];function qb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function rb(a,b,c,d){var e={},f=a===mb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function sb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function tb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function ub(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:ob,type:"GET",isLocal:hb.test(pb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":nb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?sb(sb(a,n.ajaxSettings),b):sb(n.ajaxSettings,a)},ajaxPrefilter:qb(lb),ajaxTransport:qb(mb),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=gb.exec(e))f[b[1].toLowerCase()]=b[2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||ob)+"").replace(eb,"").replace(jb,pb[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=kb.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[1]===pb[1]&&h[2]===pb[2]&&(h[3]||("http:"===h[1]?"80":"443"))===(pb[3]||("http:"===pb[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),rb(lb,k,b,v),2===t)return v;i=n.event&&k.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!ib.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(db.test(d)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=fb.test(d)?d.replace(fb,"$1_="+cb++):d+(db.test(d)?"&":"?")+"_="+cb++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader("If-Modified-Since",n.lastModified[d]),n.etag[d]&&v.setRequestHeader("If-None-Match",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+nb+"; q=0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(j in{success:1,error:1,complete:1})v[j](k[j]);if(c=rb(mb,k,b,v)){v.readyState=1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=tb(k,v,f)),u=ub(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(n.etag[d]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var vb=/%20/g,wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&").replace(vb,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Bb=0,Cb={},Db={0:200,1223:204},Eb=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Cb)Cb[a]()}),k.cors=!!Eb&&"withCredentials"in Eb,k.ajax=Eb=!!Eb,n.ajaxTransport(function(a){var b;return k.cors||Eb&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Bb;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Cb[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Db[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Cb[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n("<script>").prop({async:!0,charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&e("error"===a.type?404:200,a.type)}),l.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Fb=[],Gb=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Fb.pop()||n.expando+"_"+cb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Gb.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Gb.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Gb,"$1"+e):b.jsonp!==!1&&(b.url+=(db.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Fb.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||l;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var Hb=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Hb)return Hb.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e,dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var Ib=a.document.documentElement;function Jb(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Jb(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Ib;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Ib})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(b,c){var d="pageYOffset"===c;n.fn[b]=function(e){return J(this,function(b,e,f){var g=Jb(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=ya(k.pixelPosition,function(a,c){return c?(c=xa(a,b),va.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return J(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Kb=a.jQuery,Lb=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Lb),b&&a.jQuery===n&&(a.jQuery=Kb),n},typeof b===U&&(a.jQuery=a.$=n),n}); diff --git a/assets/plugins/jQueryUI/jquery-ui-1.10.3.js b/assets/plugins/jQueryUI/jquery-ui-1.10.3.js deleted file mode 100644 index c9a0affb..00000000 --- a/assets/plugins/jQueryUI/jquery-ui-1.10.3.js +++ /dev/null @@ -1,8709 +0,0 @@ -/*! jQuery UI - v1.10.3 - 2013-12-25 -* http://jqueryui.com -* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.position.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.sortable.js, jquery.ui.autocomplete.js, jquery.ui.menu.js, jquery.ui.effect.js, jquery.ui.effect-blind.js, jquery.ui.effect-bounce.js, jquery.ui.effect-clip.js, jquery.ui.effect-drop.js, jquery.ui.effect-explode.js, jquery.ui.effect-fade.js, jquery.ui.effect-fold.js, jquery.ui.effect-highlight.js, jquery.ui.effect-pulsate.js, jquery.ui.effect-scale.js, jquery.ui.effect-shake.js, jquery.ui.effect-slide.js, jquery.ui.effect-transfer.js -* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ - -(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 ); -(function( $, undefined ) { - -var uuid = 0, - slice = Array.prototype.slice, - _cleanData = $.cleanData; -$.cleanData = function( elems ) { - for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) { - try { - $( elem ).triggerHandler( "remove" ); - // http://bugs.jquery.com/ticket/8235 - } catch( e ) {} - } - _cleanData( elems ); -}; - -$.widget = function( name, base, prototype ) { - var fullName, existingConstructor, constructor, basePrototype, - // proxiedPrototype allows the provided prototype to remain unmodified - // so that it can be used as a mixin for multiple widgets (#8876) - proxiedPrototype = {}, - namespace = name.split( "." )[ 0 ]; - - name = name.split( "." )[ 1 ]; - fullName = namespace + "-" + name; - - if ( !prototype ) { - prototype = base; - base = $.Widget; - } - - // create selector for plugin - $.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) { - return !!$.data( elem, fullName ); - }; - - $[ namespace ] = $[ namespace ] || {}; - existingConstructor = $[ namespace ][ name ]; - constructor = $[ namespace ][ name ] = function( options, element ) { - // allow instantiation without "new" keyword - if ( !this._createWidget ) { - return new constructor( options, element ); - } - - // allow instantiation without initializing for simple inheritance - // must use "new" keyword (the code above always passes args) - if ( arguments.length ) { - this._createWidget( options, element ); - } - }; - // extend with the existing constructor to carry over any static properties - $.extend( constructor, existingConstructor, { - version: prototype.version, - // copy the object used to create the prototype in case we need to - // redefine the widget later - _proto: $.extend( {}, prototype ), - // track widgets that inherit from this widget in case this widget is - // redefined after a widget inherits from it - _childConstructors: [] - }); - - basePrototype = new base(); - // we need to make the options hash a property directly on the new instance - // otherwise we'll modify the options hash on the prototype that we're - // inheriting from - basePrototype.options = $.widget.extend( {}, basePrototype.options ); - $.each( prototype, function( prop, value ) { - if ( !$.isFunction( value ) ) { - proxiedPrototype[ prop ] = value; - return; - } - proxiedPrototype[ prop ] = (function() { - var _super = function() { - return base.prototype[ prop ].apply( this, arguments ); - }, - _superApply = function( args ) { - return base.prototype[ prop ].apply( this, args ); - }; - return function() { - var __super = this._super, - __superApply = this._superApply, - returnValue; - - this._super = _super; - this._superApply = _superApply; - - returnValue = value.apply( this, arguments ); - - this._super = __super; - this._superApply = __superApply; - - return returnValue; - }; - })(); - }); - constructor.prototype = $.widget.extend( basePrototype, { - // TODO: remove support for widgetEventPrefix - // always use the name + a colon as the prefix, e.g., draggable:start - // don't prefix for widgets that aren't DOM-based - widgetEventPrefix: existingConstructor ? basePrototype.widgetEventPrefix : name - }, proxiedPrototype, { - constructor: constructor, - namespace: namespace, - widgetName: name, - widgetFullName: fullName - }); - - // If this widget is being redefined then we need to find all widgets that - // are inheriting from it and redefine all of them so that they inherit from - // the new version of this widget. We're essentially trying to replace one - // level in the prototype chain. - if ( existingConstructor ) { - $.each( existingConstructor._childConstructors, function( i, child ) { - var childPrototype = child.prototype; - - // redefine the child widget using the same prototype that was - // originally used, but inherit from the new version of the base - $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto ); - }); - // remove the list of existing child constructors from the old constructor - // so the old child constructors can be garbage collected - delete existingConstructor._childConstructors; - } else { - base._childConstructors.push( constructor ); - } - - $.widget.bridge( name, constructor ); -}; - -$.widget.extend = function( target ) { - var input = slice.call( arguments, 1 ), - inputIndex = 0, - inputLength = input.length, - key, - value; - for ( ; inputIndex < inputLength; inputIndex++ ) { - for ( key in input[ inputIndex ] ) { - value = input[ inputIndex ][ key ]; - if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) { - // Clone objects - if ( $.isPlainObject( value ) ) { - target[ key ] = $.isPlainObject( target[ key ] ) ? - $.widget.extend( {}, target[ key ], value ) : - // Don't extend strings, arrays, etc. with objects - $.widget.extend( {}, value ); - // Copy everything else by reference - } else { - target[ key ] = value; - } - } - } - } - return target; -}; - -$.widget.bridge = function( name, object ) { - var fullName = object.prototype.widgetFullName || name; - $.fn[ name ] = function( options ) { - var isMethodCall = typeof options === "string", - args = slice.call( arguments, 1 ), - returnValue = this; - - // allow multiple hashes to be passed on init - options = !isMethodCall && args.length ? - $.widget.extend.apply( null, [ options ].concat(args) ) : - options; - - if ( isMethodCall ) { - this.each(function() { - var methodValue, - instance = $.data( this, fullName ); - if ( !instance ) { - return $.error( "cannot call methods on " + name + " prior to initialization; " + - "attempted to call method '" + options + "'" ); - } - if ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === "_" ) { - return $.error( "no such method '" + options + "' for " + name + " widget instance" ); - } - methodValue = instance[ options ].apply( instance, args ); - if ( methodValue !== instance && methodValue !== undefined ) { - returnValue = methodValue && methodValue.jquery ? - returnValue.pushStack( methodValue.get() ) : - methodValue; - return false; - } - }); - } else { - this.each(function() { - var instance = $.data( this, fullName ); - if ( instance ) { - instance.option( options || {} )._init(); - } else { - $.data( this, fullName, new object( options, this ) ); - } - }); - } - - return returnValue; - }; -}; - -$.Widget = function( /* options, element */ ) {}; -$.Widget._childConstructors = []; - -$.Widget.prototype = { - widgetName: "widget", - widgetEventPrefix: "", - defaultElement: "<div>", - options: { - disabled: false, - - // callbacks - create: null - }, - _createWidget: function( options, element ) { - element = $( element || this.defaultElement || this )[ 0 ]; - this.element = $( element ); - this.uuid = uuid++; - this.eventNamespace = "." + this.widgetName + this.uuid; - this.options = $.widget.extend( {}, - this.options, - this._getCreateOptions(), - options ); - - this.bindings = $(); - this.hoverable = $(); - this.focusable = $(); - - if ( element !== this ) { - $.data( element, this.widgetFullName, this ); - this._on( true, this.element, { - remove: function( event ) { - if ( event.target === element ) { - this.destroy(); - } - } - }); - this.document = $( element.style ? - // element within the document - element.ownerDocument : - // element is window or document - element.document || element ); - this.window = $( this.document[0].defaultView || this.document[0].parentWindow ); - } - - this._create(); - this._trigger( "create", null, this._getCreateEventData() ); - this._init(); - }, - _getCreateOptions: $.noop, - _getCreateEventData: $.noop, - _create: $.noop, - _init: $.noop, - - destroy: function() { - this._destroy(); - // we can probably remove the unbind calls in 2.0 - // all event bindings should go through this._on() - this.element - .unbind( this.eventNamespace ) - // 1.9 BC for #7810 - // TODO remove dual storage - .removeData( this.widgetName ) - .removeData( this.widgetFullName ) - // support: jquery <1.6.3 - // http://bugs.jquery.com/ticket/9413 - .removeData( $.camelCase( this.widgetFullName ) ); - this.widget() - .unbind( this.eventNamespace ) - .removeAttr( "aria-disabled" ) - .removeClass( - this.widgetFullName + "-disabled " + - "ui-state-disabled" ); - - // clean up events and states - this.bindings.unbind( this.eventNamespace ); - this.hoverable.removeClass( "ui-state-hover" ); - this.focusable.removeClass( "ui-state-focus" ); - }, - _destroy: $.noop, - - widget: function() { - return this.element; - }, - - option: function( key, value ) { - var options = key, - parts, - curOption, - i; - - if ( arguments.length === 0 ) { - // don't return a reference to the internal hash - return $.widget.extend( {}, this.options ); - } - - if ( typeof key === "string" ) { - // handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } } - options = {}; - parts = key.split( "." ); - key = parts.shift(); - if ( parts.length ) { - curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] ); - for ( i = 0; i < parts.length - 1; i++ ) { - curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {}; - curOption = curOption[ parts[ i ] ]; - } - key = parts.pop(); - if ( value === undefined ) { - return curOption[ key ] === undefined ? null : curOption[ key ]; - } - curOption[ key ] = value; - } else { - if ( value === undefined ) { - return this.options[ key ] === undefined ? null : this.options[ key ]; - } - options[ key ] = value; - } - } - - this._setOptions( options ); - - return this; - }, - _setOptions: function( options ) { - var key; - - for ( key in options ) { - this._setOption( key, options[ key ] ); - } - - return this; - }, - _setOption: function( key, value ) { - this.options[ key ] = value; - - if ( key === "disabled" ) { - this.widget() - .toggleClass( this.widgetFullName + "-disabled ui-state-disabled", !!value ) - .attr( "aria-disabled", value ); - this.hoverable.removeClass( "ui-state-hover" ); - this.focusable.removeClass( "ui-state-focus" ); - } - - return this; - }, - - enable: function() { - return this._setOption( "disabled", false ); - }, - disable: function() { - return this._setOption( "disabled", true ); - }, - - _on: function( suppressDisabledCheck, element, handlers ) { - var delegateElement, - instance = this; - - // no suppressDisabledCheck flag, shuffle arguments - if ( typeof suppressDisabledCheck !== "boolean" ) { - handlers = element; - element = suppressDisabledCheck; - suppressDisabledCheck = false; - } - - // no element argument, shuffle and use this.element - if ( !handlers ) { - handlers = element; - element = this.element; - delegateElement = this.widget(); - } else { - // accept selectors, DOM elements - element = delegateElement = $( element ); - this.bindings = this.bindings.add( element ); - } - - $.each( handlers, function( event, handler ) { - function handlerProxy() { - // allow widgets to customize the disabled handling - // - disabled as an array instead of boolean - // - disabled class as method for disabling individual parts - if ( !suppressDisabledCheck && - ( instance.options.disabled === true || - $( this ).hasClass( "ui-state-disabled" ) ) ) { - return; - } - return ( typeof handler === "string" ? instance[ handler ] : handler ) - .apply( instance, arguments ); - } - - // copy the guid so direct unbinding works - if ( typeof handler !== "string" ) { - handlerProxy.guid = handler.guid = - handler.guid || handlerProxy.guid || $.guid++; - } - - var match = event.match( /^(\w+)\s*(.*)$/ ), - eventName = match[1] + instance.eventNamespace, - selector = match[2]; - if ( selector ) { - delegateElement.delegate( selector, eventName, handlerProxy ); - } else { - element.bind( eventName, handlerProxy ); - } - }); - }, - - _off: function( element, eventName ) { - eventName = (eventName || "").split( " " ).join( this.eventNamespace + " " ) + this.eventNamespace; - element.unbind( eventName ).undelegate( eventName ); - }, - - _delay: function( handler, delay ) { - function handlerProxy() { - return ( typeof handler === "string" ? instance[ handler ] : handler ) - .apply( instance, arguments ); - } - var instance = this; - return setTimeout( handlerProxy, delay || 0 ); - }, - - _hoverable: function( element ) { - this.hoverable = this.hoverable.add( element ); - this._on( element, { - mouseenter: function( event ) { - $( event.currentTarget ).addClass( "ui-state-hover" ); - }, - mouseleave: function( event ) { - $( event.currentTarget ).removeClass( "ui-state-hover" ); - } - }); - }, - - _focusable: function( element ) { - this.focusable = this.focusable.add( element ); - this._on( element, { - focusin: function( event ) { - $( event.currentTarget ).addClass( "ui-state-focus" ); - }, - focusout: function( event ) { - $( event.currentTarget ).removeClass( "ui-state-focus" ); - } - }); - }, - - _trigger: function( type, event, data ) { - var prop, orig, - callback = this.options[ type ]; - - data = data || {}; - event = $.Event( event ); - event.type = ( type === this.widgetEventPrefix ? - type : - this.widgetEventPrefix + type ).toLowerCase(); - // the original event may come from any element - // so we need to reset the target on the new event - event.target = this.element[ 0 ]; - - // copy original event properties over to the new event - orig = event.originalEvent; - if ( orig ) { - for ( prop in orig ) { - if ( !( prop in event ) ) { - event[ prop ] = orig[ prop ]; - } - } - } - - this.element.trigger( event, data ); - return !( $.isFunction( callback ) && - callback.apply( this.element[0], [ event ].concat( data ) ) === false || - event.isDefaultPrevented() ); - } -}; - -$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) { - $.Widget.prototype[ "_" + method ] = function( element, options, callback ) { - if ( typeof options === "string" ) { - options = { effect: options }; - } - var hasOptions, - effectName = !options ? - method : - options === true || typeof options === "number" ? - defaultEffect : - options.effect || defaultEffect; - options = options || {}; - if ( typeof options === "number" ) { - options = { duration: options }; - } - hasOptions = !$.isEmptyObject( options ); - options.complete = callback; - if ( options.delay ) { - element.delay( options.delay ); - } - if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) { - element[ method ]( options ); - } else if ( effectName !== method && element[ effectName ] ) { - element[ effectName ]( options.duration, options.easing, callback ); - } else { - element.queue(function( next ) { - $( this )[ method ](); - if ( callback ) { - callback.call( element[ 0 ] ); - } - next(); - }); - } - }; -}); - -})( jQuery ); -(function( $, undefined ) { - -var mouseHandled = false; -$( document ).mouseup( function() { - mouseHandled = false; -}); - -$.widget("ui.mouse", { - version: "1.10.3", - options: { - cancel: "input,textarea,button,select,option", - distance: 1, - delay: 0 - }, - _mouseInit: function() { - var that = this; - - this.element - .bind("mousedown."+this.widgetName, function(event) { - return that._mouseDown(event); - }) - .bind("click."+this.widgetName, function(event) { - if (true === $.data(event.target, that.widgetName + ".preventClickEvent")) { - $.removeData(event.target, that.widgetName + ".preventClickEvent"); - event.stopImmediatePropagation(); - return false; - } - }); - - this.started = false; - }, - - // TODO: make sure destroying one instance of mouse doesn't mess with - // other instances of mouse - _mouseDestroy: function() { - this.element.unbind("."+this.widgetName); - if ( this._mouseMoveDelegate ) { - $(document) - .unbind("mousemove."+this.widgetName, this._mouseMoveDelegate) - .unbind("mouseup."+this.widgetName, this._mouseUpDelegate); - } - }, - - _mouseDown: function(event) { - // don't let more than one widget handle mouseStart - if( mouseHandled ) { return; } - - // we may have missed mouseup (out of window) - (this._mouseStarted && this._mouseUp(event)); - - this._mouseDownEvent = event; - - var that = this, - btnIsLeft = (event.which === 1), - // event.target.nodeName works around a bug in IE 8 with - // disabled inputs (#7620) - elIsCancel = (typeof this.options.cancel === "string" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false); - if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) { - return true; - } - - this.mouseDelayMet = !this.options.delay; - if (!this.mouseDelayMet) { - this._mouseDelayTimer = setTimeout(function() { - that.mouseDelayMet = true; - }, this.options.delay); - } - - if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { - this._mouseStarted = (this._mouseStart(event) !== false); - if (!this._mouseStarted) { - event.preventDefault(); - return true; - } - } - - // Click event may never have fired (Gecko & Opera) - if (true === $.data(event.target, this.widgetName + ".preventClickEvent")) { - $.removeData(event.target, this.widgetName + ".preventClickEvent"); - } - - // these delegates are required to keep context - this._mouseMoveDelegate = function(event) { - return that._mouseMove(event); - }; - this._mouseUpDelegate = function(event) { - return that._mouseUp(event); - }; - $(document) - .bind("mousemove."+this.widgetName, this._mouseMoveDelegate) - .bind("mouseup."+this.widgetName, this._mouseUpDelegate); - - event.preventDefault(); - - mouseHandled = true; - return true; - }, - - _mouseMove: function(event) { - // IE mouseup check - mouseup happened when mouse was out of window - if ($.ui.ie && ( !document.documentMode || document.documentMode < 9 ) && !event.button) { - return this._mouseUp(event); - } - - if (this._mouseStarted) { - this._mouseDrag(event); - return event.preventDefault(); - } - - if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { - this._mouseStarted = - (this._mouseStart(this._mouseDownEvent, event) !== false); - (this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event)); - } - - return !this._mouseStarted; - }, - - _mouseUp: function(event) { - $(document) - .unbind("mousemove."+this.widgetName, this._mouseMoveDelegate) - .unbind("mouseup."+this.widgetName, this._mouseUpDelegate); - - if (this._mouseStarted) { - this._mouseStarted = false; - - if (event.target === this._mouseDownEvent.target) { - $.data(event.target, this.widgetName + ".preventClickEvent", true); - } - - this._mouseStop(event); - } - - return false; - }, - - _mouseDistanceMet: function(event) { - return (Math.max( - Math.abs(this._mouseDownEvent.pageX - event.pageX), - Math.abs(this._mouseDownEvent.pageY - event.pageY) - ) >= this.options.distance - ); - }, - - _mouseDelayMet: function(/* event */) { - return this.mouseDelayMet; - }, - - // These are placeholder methods, to be overriden by extending plugin - _mouseStart: function(/* event */) {}, - _mouseDrag: function(/* event */) {}, - _mouseStop: function(/* event */) {}, - _mouseCapture: function(/* event */) { return true; } -}); - -})(jQuery); -(function( $, undefined ) { - -$.ui = $.ui || {}; - -var cachedScrollbarWidth, - max = Math.max, - abs = Math.abs, - round = Math.round, - rhorizontal = /left|center|right/, - rvertical = /top|center|bottom/, - roffset = /[\+\-]\d+(\.[\d]+)?%?/, - rposition = /^\w+/, - rpercent = /%$/, - _position = $.fn.position; - -function getOffsets( offsets, width, height ) { - return [ - parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ), - parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 ) - ]; -} - -function parseCss( element, property ) { - return parseInt( $.css( element, property ), 10 ) || 0; -} - -function getDimensions( elem ) { - var raw = elem[0]; - if ( raw.nodeType === 9 ) { - return { - width: elem.width(), - height: elem.height(), - offset: { top: 0, left: 0 } - }; - } - if ( $.isWindow( raw ) ) { - return { - width: elem.width(), - height: elem.height(), - offset: { top: elem.scrollTop(), left: elem.scrollLeft() } - }; - } - if ( raw.preventDefault ) { - return { - width: 0, - height: 0, - offset: { top: raw.pageY, left: raw.pageX } - }; - } - return { - width: elem.outerWidth(), - height: elem.outerHeight(), - offset: elem.offset() - }; -} - -$.position = { - scrollbarWidth: function() { - if ( cachedScrollbarWidth !== undefined ) { - return cachedScrollbarWidth; - } - var w1, w2, - div = $( "<div style='display:block;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>" ), - innerDiv = div.children()[0]; - - $( "body" ).append( div ); - w1 = innerDiv.offsetWidth; - div.css( "overflow", "scroll" ); - - w2 = innerDiv.offsetWidth; - - if ( w1 === w2 ) { - w2 = div[0].clientWidth; - } - - div.remove(); - - return (cachedScrollbarWidth = w1 - w2); - }, - getScrollInfo: function( within ) { - var overflowX = within.isWindow ? "" : within.element.css( "overflow-x" ), - overflowY = within.isWindow ? "" : within.element.css( "overflow-y" ), - hasOverflowX = overflowX === "scroll" || - ( overflowX === "auto" && within.width < within.element[0].scrollWidth ), - hasOverflowY = overflowY === "scroll" || - ( overflowY === "auto" && within.height < within.element[0].scrollHeight ); - return { - width: hasOverflowY ? $.position.scrollbarWidth() : 0, - height: hasOverflowX ? $.position.scrollbarWidth() : 0 - }; - }, - getWithinInfo: function( element ) { - var withinElement = $( element || window ), - isWindow = $.isWindow( withinElement[0] ); - return { - element: withinElement, - isWindow: isWindow, - offset: withinElement.offset() || { left: 0, top: 0 }, - scrollLeft: withinElement.scrollLeft(), - scrollTop: withinElement.scrollTop(), - width: isWindow ? withinElement.width() : withinElement.outerWidth(), - height: isWindow ? withinElement.height() : withinElement.outerHeight() - }; - } -}; - -$.fn.position = function( options ) { - if ( !options || !options.of ) { - return _position.apply( this, arguments ); - } - - // make a copy, we don't want to modify arguments - options = $.extend( {}, options ); - - var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions, - target = $( options.of ), - within = $.position.getWithinInfo( options.within ), - scrollInfo = $.position.getScrollInfo( within ), - collision = ( options.collision || "flip" ).split( " " ), - offsets = {}; - - dimensions = getDimensions( target ); - if ( target[0].preventDefault ) { - // force left top to allow flipping - options.at = "left top"; - } - targetWidth = dimensions.width; - targetHeight = dimensions.height; - targetOffset = dimensions.offset; - // clone to reuse original targetOffset later - basePosition = $.extend( {}, targetOffset ); - - // force my and at to have valid horizontal and vertical positions - // if a value is missing or invalid, it will be converted to center - $.each( [ "my", "at" ], function() { - var pos = ( options[ this ] || "" ).split( " " ), - horizontalOffset, - verticalOffset; - - if ( pos.length === 1) { - pos = rhorizontal.test( pos[ 0 ] ) ? - pos.concat( [ "center" ] ) : - rvertical.test( pos[ 0 ] ) ? - [ "center" ].concat( pos ) : - [ "center", "center" ]; - } - pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center"; - pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center"; - - // calculate offsets - horizontalOffset = roffset.exec( pos[ 0 ] ); - verticalOffset = roffset.exec( pos[ 1 ] ); - offsets[ this ] = [ - horizontalOffset ? horizontalOffset[ 0 ] : 0, - verticalOffset ? verticalOffset[ 0 ] : 0 - ]; - - // reduce to just the positions without the offsets - options[ this ] = [ - rposition.exec( pos[ 0 ] )[ 0 ], - rposition.exec( pos[ 1 ] )[ 0 ] - ]; - }); - - // normalize collision option - if ( collision.length === 1 ) { - collision[ 1 ] = collision[ 0 ]; - } - - if ( options.at[ 0 ] === "right" ) { - basePosition.left += targetWidth; - } else if ( options.at[ 0 ] === "center" ) { - basePosition.left += targetWidth / 2; - } - - if ( options.at[ 1 ] === "bottom" ) { - basePosition.top += targetHeight; - } else if ( options.at[ 1 ] === "center" ) { - basePosition.top += targetHeight / 2; - } - - atOffset = getOffsets( offsets.at, targetWidth, targetHeight ); - basePosition.left += atOffset[ 0 ]; - basePosition.top += atOffset[ 1 ]; - - return this.each(function() { - var collisionPosition, using, - elem = $( this ), - elemWidth = elem.outerWidth(), - elemHeight = elem.outerHeight(), - marginLeft = parseCss( this, "marginLeft" ), - marginTop = parseCss( this, "marginTop" ), - collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) + scrollInfo.width, - collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) + scrollInfo.height, - position = $.extend( {}, basePosition ), - myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() ); - - if ( options.my[ 0 ] === "right" ) { - position.left -= elemWidth; - } else if ( options.my[ 0 ] === "center" ) { - position.left -= elemWidth / 2; - } - - if ( options.my[ 1 ] === "bottom" ) { - position.top -= elemHeight; - } else if ( options.my[ 1 ] === "center" ) { - position.top -= elemHeight / 2; - } - - position.left += myOffset[ 0 ]; - position.top += myOffset[ 1 ]; - - // if the browser doesn't support fractions, then round for consistent results - if ( !$.support.offsetFractions ) { - position.left = round( position.left ); - position.top = round( position.top ); - } - - collisionPosition = { - marginLeft: marginLeft, - marginTop: marginTop - }; - - $.each( [ "left", "top" ], function( i, dir ) { - if ( $.ui.position[ collision[ i ] ] ) { - $.ui.position[ collision[ i ] ][ dir ]( position, { - targetWidth: targetWidth, - targetHeight: targetHeight, - elemWidth: elemWidth, - elemHeight: elemHeight, - collisionPosition: collisionPosition, - collisionWidth: collisionWidth, - collisionHeight: collisionHeight, - offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ], - my: options.my, - at: options.at, - within: within, - elem : elem - }); - } - }); - - if ( options.using ) { - // adds feedback as second argument to using callback, if present - using = function( props ) { - var left = targetOffset.left - position.left, - right = left + targetWidth - elemWidth, - top = targetOffset.top - position.top, - bottom = top + targetHeight - elemHeight, - feedback = { - target: { - element: target, - left: targetOffset.left, - top: targetOffset.top, - width: targetWidth, - height: targetHeight - }, - element: { - element: elem, - left: position.left, - top: position.top, - width: elemWidth, - height: elemHeight - }, - horizontal: right < 0 ? "left" : left > 0 ? "right" : "center", - vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle" - }; - if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) { - feedback.horizontal = "center"; - } - if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) { - feedback.vertical = "middle"; - } - if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) { - feedback.important = "horizontal"; - } else { - feedback.important = "vertical"; - } - options.using.call( this, props, feedback ); - }; - } - - elem.offset( $.extend( position, { using: using } ) ); - }); -}; - -$.ui.position = { - fit: { - left: function( position, data ) { - var within = data.within, - withinOffset = within.isWindow ? within.scrollLeft : within.offset.left, - outerWidth = within.width, - collisionPosLeft = position.left - data.collisionPosition.marginLeft, - overLeft = withinOffset - collisionPosLeft, - overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset, - newOverRight; - - // element is wider than within - if ( data.collisionWidth > outerWidth ) { - // element is initially over the left side of within - if ( overLeft > 0 && overRight <= 0 ) { - newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset; - position.left += overLeft - newOverRight; - // element is initially over right side of within - } else if ( overRight > 0 && overLeft <= 0 ) { - position.left = withinOffset; - // element is initially over both left and right sides of within - } else { - if ( overLeft > overRight ) { - position.left = withinOffset + outerWidth - data.collisionWidth; - } else { - position.left = withinOffset; - } - } - // too far left -> align with left edge - } else if ( overLeft > 0 ) { - position.left += overLeft; - // too far right -> align with right edge - } else if ( overRight > 0 ) { - position.left -= overRight; - // adjust based on position and margin - } else { - position.left = max( position.left - collisionPosLeft, position.left ); - } - }, - top: function( position, data ) { - var within = data.within, - withinOffset = within.isWindow ? within.scrollTop : within.offset.top, - outerHeight = data.within.height, - collisionPosTop = position.top - data.collisionPosition.marginTop, - overTop = withinOffset - collisionPosTop, - overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset, - newOverBottom; - - // element is taller than within - if ( data.collisionHeight > outerHeight ) { - // element is initially over the top of within - if ( overTop > 0 && overBottom <= 0 ) { - newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset; - position.top += overTop - newOverBottom; - // element is initially over bottom of within - } else if ( overBottom > 0 && overTop <= 0 ) { - position.top = withinOffset; - // element is initially over both top and bottom of within - } else { - if ( overTop > overBottom ) { - position.top = withinOffset + outerHeight - data.collisionHeight; - } else { - position.top = withinOffset; - } - } - // too far up -> align with top - } else if ( overTop > 0 ) { - position.top += overTop; - // too far down -> align with bottom edge - } else if ( overBottom > 0 ) { - position.top -= overBottom; - // adjust based on position and margin - } else { - position.top = max( position.top - collisionPosTop, position.top ); - } - } - }, - flip: { - left: function( position, data ) { - var within = data.within, - withinOffset = within.offset.left + within.scrollLeft, - outerWidth = within.width, - offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left, - collisionPosLeft = position.left - data.collisionPosition.marginLeft, - overLeft = collisionPosLeft - offsetLeft, - overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft, - myOffset = data.my[ 0 ] === "left" ? - -data.elemWidth : - data.my[ 0 ] === "right" ? - data.elemWidth : - 0, - atOffset = data.at[ 0 ] === "left" ? - data.targetWidth : - data.at[ 0 ] === "right" ? - -data.targetWidth : - 0, - offset = -2 * data.offset[ 0 ], - newOverRight, - newOverLeft; - - if ( overLeft < 0 ) { - newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset; - if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) { - position.left += myOffset + atOffset + offset; - } - } - else if ( overRight > 0 ) { - newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft; - if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) { - position.left += myOffset + atOffset + offset; - } - } - }, - top: function( position, data ) { - var within = data.within, - withinOffset = within.offset.top + within.scrollTop, - outerHeight = within.height, - offsetTop = within.isWindow ? within.scrollTop : within.offset.top, - collisionPosTop = position.top - data.collisionPosition.marginTop, - overTop = collisionPosTop - offsetTop, - overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop, - top = data.my[ 1 ] === "top", - myOffset = top ? - -data.elemHeight : - data.my[ 1 ] === "bottom" ? - data.elemHeight : - 0, - atOffset = data.at[ 1 ] === "top" ? - data.targetHeight : - data.at[ 1 ] === "bottom" ? - -data.targetHeight : - 0, - offset = -2 * data.offset[ 1 ], - newOverTop, - newOverBottom; - if ( overTop < 0 ) { - newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset; - if ( ( position.top + myOffset + atOffset + offset) > overTop && ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) ) { - position.top += myOffset + atOffset + offset; - } - } - else if ( overBottom > 0 ) { - newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop; - if ( ( position.top + myOffset + atOffset + offset) > overBottom && ( newOverTop > 0 || abs( newOverTop ) < overBottom ) ) { - position.top += myOffset + atOffset + offset; - } - } - } - }, - flipfit: { - left: function() { - $.ui.position.flip.left.apply( this, arguments ); - $.ui.position.fit.left.apply( this, arguments ); - }, - top: function() { - $.ui.position.flip.top.apply( this, arguments ); - $.ui.position.fit.top.apply( this, arguments ); - } - } -}; - -// fraction support test -(function () { - var testElement, testElementParent, testElementStyle, offsetLeft, i, - body = document.getElementsByTagName( "body" )[ 0 ], - div = document.createElement( "div" ); - - //Create a "fake body" for testing based on method used in jQuery.support - testElement = document.createElement( body ? "div" : "body" ); - testElementStyle = { - visibility: "hidden", - width: 0, - height: 0, - border: 0, - margin: 0, - background: "none" - }; - if ( body ) { - $.extend( testElementStyle, { - position: "absolute", - left: "-1000px", - top: "-1000px" - }); - } - for ( i in testElementStyle ) { - testElement.style[ i ] = testElementStyle[ i ]; - } - testElement.appendChild( div ); - testElementParent = body || document.documentElement; - testElementParent.insertBefore( testElement, testElementParent.firstChild ); - - div.style.cssText = "position: absolute; left: 10.7432222px;"; - - offsetLeft = $( div ).offset().left; - $.support.offsetFractions = offsetLeft > 10 && offsetLeft < 11; - - testElement.innerHTML = ""; - testElementParent.removeChild( testElement ); -})(); - -}( jQuery ) ); -(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); -(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); -(function( $, undefined ) { - -function num(v) { - return parseInt(v, 10) || 0; -} - -function isNumber(value) { - return !isNaN(parseInt(value, 10)); -} - -$.widget("ui.resizable", $.ui.mouse, { - version: "1.10.3", - widgetEventPrefix: "resize", - options: { - alsoResize: false, - animate: false, - animateDuration: "slow", - animateEasing: "swing", - aspectRatio: false, - autoHide: false, - containment: false, - ghost: false, - grid: false, - handles: "e,s,se", - helper: false, - maxHeight: null, - maxWidth: null, - minHeight: 10, - minWidth: 10, - // See #7960 - zIndex: 90, - - // callbacks - resize: null, - start: null, - stop: null - }, - _create: function() { - - var n, i, handle, axis, hname, - that = this, - o = this.options; - this.element.addClass("ui-resizable"); - - $.extend(this, { - _aspectRatio: !!(o.aspectRatio), - aspectRatio: o.aspectRatio, - originalElement: this.element, - _proportionallyResizeElements: [], - _helper: o.helper || o.ghost || o.animate ? o.helper || "ui-resizable-helper" : null - }); - - //Wrap the element if it cannot hold child nodes - if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)) { - - //Create a wrapper element and set the wrapper to the new current internal element - this.element.wrap( - $("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({ - position: this.element.css("position"), - width: this.element.outerWidth(), - height: this.element.outerHeight(), - top: this.element.css("top"), - left: this.element.css("left") - }) - ); - - //Overwrite the original this.element - this.element = this.element.parent().data( - "ui-resizable", this.element.data("ui-resizable") - ); - - this.elementIsWrapper = true; - - //Move margins to the wrapper - this.element.css({ marginLeft: this.originalElement.css("marginLeft"), marginTop: this.originalElement.css("marginTop"), marginRight: this.originalElement.css("marginRight"), marginBottom: this.originalElement.css("marginBottom") }); - this.originalElement.css({ marginLeft: 0, marginTop: 0, marginRight: 0, marginBottom: 0}); - - //Prevent Safari textarea resize - this.originalResizeStyle = this.originalElement.css("resize"); - this.originalElement.css("resize", "none"); - - //Push the actual element to our proportionallyResize internal array - this._proportionallyResizeElements.push(this.originalElement.css({ position: "static", zoom: 1, display: "block" })); - - // avoid IE jump (hard set the margin) - this.originalElement.css({ margin: this.originalElement.css("margin") }); - - // fix handlers offset - this._proportionallyResize(); - - } - - this.handles = o.handles || (!$(".ui-resizable-handle", this.element).length ? "e,s,se" : { n: ".ui-resizable-n", e: ".ui-resizable-e", s: ".ui-resizable-s", w: ".ui-resizable-w", se: ".ui-resizable-se", sw: ".ui-resizable-sw", ne: ".ui-resizable-ne", nw: ".ui-resizable-nw" }); - if(this.handles.constructor === String) { - - if ( this.handles === "all") { - this.handles = "n,e,s,w,se,sw,ne,nw"; - } - - n = this.handles.split(","); - this.handles = {}; - - for(i = 0; i < n.length; i++) { - - handle = $.trim(n[i]); - hname = "ui-resizable-"+handle; - axis = $("<div class='ui-resizable-handle " + hname + "'></div>"); - - // Apply zIndex to all handles - see #7960 - axis.css({ zIndex: o.zIndex }); - - //TODO : What's going on here? - if ("se" === handle) { - axis.addClass("ui-icon ui-icon-gripsmall-diagonal-se"); - } - - //Insert into internal handles object and append to element - this.handles[handle] = ".ui-resizable-"+handle; - this.element.append(axis); - } - - } - - this._renderAxis = function(target) { - - var i, axis, padPos, padWrapper; - - target = target || this.element; - - for(i in this.handles) { - - if(this.handles[i].constructor === String) { - this.handles[i] = $(this.handles[i], this.element).show(); - } - - //Apply pad to wrapper element, needed to fix axis position (textarea, inputs, scrolls) - if (this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i)) { - - axis = $(this.handles[i], this.element); - - //Checking the correct pad and border - padWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth(); - - //The padding type i have to apply... - padPos = [ "padding", - /ne|nw|n/.test(i) ? "Top" : - /se|sw|s/.test(i) ? "Bottom" : - /^e$/.test(i) ? "Right" : "Left" ].join(""); - - target.css(padPos, padWrapper); - - this._proportionallyResize(); - - } - - //TODO: What's that good for? There's not anything to be executed left - if(!$(this.handles[i]).length) { - - } - } - }; - - //TODO: make renderAxis a prototype function - this._renderAxis(this.element); - - this._handles = $(".ui-resizable-handle", this.element) - .disableSelection(); - - //Matching axis name - this._handles.mouseover(function() { - if (!that.resizing) { - if (this.className) { - axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i); - } - //Axis, default = se - that.axis = axis && axis[1] ? axis[1] : "se"; - } - }); - - //If we want to auto hide the elements - if (o.autoHide) { - this._handles.hide(); - $(this.element) - .addClass("ui-resizable-autohide") - .mouseenter(function() { - if (o.disabled) { - return; - } - $(this).removeClass("ui-resizable-autohide"); - that._handles.show(); - }) - .mouseleave(function(){ - if (o.disabled) { - return; - } - if (!that.resizing) { - $(this).addClass("ui-resizable-autohide"); - that._handles.hide(); - } - }); - } - - //Initialize the mouse interaction - this._mouseInit(); - - }, - - _destroy: function() { - - this._mouseDestroy(); - - var wrapper, - _destroy = function(exp) { - $(exp).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing") - .removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove(); - }; - - //TODO: Unwrap at same DOM position - if (this.elementIsWrapper) { - _destroy(this.element); - wrapper = this.element; - this.originalElement.css({ - position: wrapper.css("position"), - width: wrapper.outerWidth(), - height: wrapper.outerHeight(), - top: wrapper.css("top"), - left: wrapper.css("left") - }).insertAfter( wrapper ); - wrapper.remove(); - } - - this.originalElement.css("resize", this.originalResizeStyle); - _destroy(this.originalElement); - - return this; - }, - - _mouseCapture: function(event) { - var i, handle, - capture = false; - - for (i in this.handles) { - handle = $(this.handles[i])[0]; - if (handle === event.target || $.contains(handle, event.target)) { - capture = true; - } - } - - return !this.options.disabled && capture; - }, - - _mouseStart: function(event) { - - var curleft, curtop, cursor, - o = this.options, - iniPos = this.element.position(), - el = this.element; - - this.resizing = true; - - // bugfix for http://dev.jquery.com/ticket/1749 - if ( (/absolute/).test( el.css("position") ) ) { - el.css({ position: "absolute", top: el.css("top"), left: el.css("left") }); - } else if (el.is(".ui-draggable")) { - el.css({ position: "absolute", top: iniPos.top, left: iniPos.left }); - } - - this._renderProxy(); - - curleft = num(this.helper.css("left")); - curtop = num(this.helper.css("top")); - - if (o.containment) { - curleft += $(o.containment).scrollLeft() || 0; - curtop += $(o.containment).scrollTop() || 0; - } - - //Store needed variables - this.offset = this.helper.offset(); - this.position = { left: curleft, top: curtop }; - this.size = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() }; - this.originalSize = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() }; - this.originalPosition = { left: curleft, top: curtop }; - this.sizeDiff = { width: el.outerWidth() - el.width(), height: el.outerHeight() - el.height() }; - this.originalMousePosition = { left: event.pageX, top: event.pageY }; - - //Aspect Ratio - this.aspectRatio = (typeof o.aspectRatio === "number") ? o.aspectRatio : ((this.originalSize.width / this.originalSize.height) || 1); - - cursor = $(".ui-resizable-" + this.axis).css("cursor"); - $("body").css("cursor", cursor === "auto" ? this.axis + "-resize" : cursor); - - el.addClass("ui-resizable-resizing"); - this._propagate("start", event); - return true; - }, - - _mouseDrag: function(event) { - - //Increase performance, avoid regex - var data, - el = this.helper, props = {}, - smp = this.originalMousePosition, - a = this.axis, - prevTop = this.position.top, - prevLeft = this.position.left, - prevWidth = this.size.width, - prevHeight = this.size.height, - dx = (event.pageX-smp.left)||0, - dy = (event.pageY-smp.top)||0, - trigger = this._change[a]; - - if (!trigger) { - return false; - } - - // Calculate the attrs that will be change - data = trigger.apply(this, [event, dx, dy]); - - // Put this in the mouseDrag handler since the user can start pressing shift while resizing - this._updateVirtualBoundaries(event.shiftKey); - if (this._aspectRatio || event.shiftKey) { - data = this._updateRatio(data, event); - } - - data = this._respectSize(data, event); - - this._updateCache(data); - - // plugins callbacks need to be called first - this._propagate("resize", event); - - if (this.position.top !== prevTop) { - props.top = this.position.top + "px"; - } - if (this.position.left !== prevLeft) { - props.left = this.position.left + "px"; - } - if (this.size.width !== prevWidth) { - props.width = this.size.width + "px"; - } - if (this.size.height !== prevHeight) { - props.height = this.size.height + "px"; - } - el.css(props); - - if (!this._helper && this._proportionallyResizeElements.length) { - this._proportionallyResize(); - } - - // Call the user callback if the element was resized - if ( ! $.isEmptyObject(props) ) { - this._trigger("resize", event, this.ui()); - } - - return false; - }, - - _mouseStop: function(event) { - - this.resizing = false; - var pr, ista, soffseth, soffsetw, s, left, top, - o = this.options, that = this; - - if(this._helper) { - - pr = this._proportionallyResizeElements; - ista = pr.length && (/textarea/i).test(pr[0].nodeName); - soffseth = ista && $.ui.hasScroll(pr[0], "left") /* TODO - jump height */ ? 0 : that.sizeDiff.height; - soffsetw = ista ? 0 : that.sizeDiff.width; - - s = { width: (that.helper.width() - soffsetw), height: (that.helper.height() - soffseth) }; - left = (parseInt(that.element.css("left"), 10) + (that.position.left - that.originalPosition.left)) || null; - top = (parseInt(that.element.css("top"), 10) + (that.position.top - that.originalPosition.top)) || null; - - if (!o.animate) { - this.element.css($.extend(s, { top: top, left: left })); - } - - that.helper.height(that.size.height); - that.helper.width(that.size.width); - - if (this._helper && !o.animate) { - this._proportionallyResize(); - } - } - - $("body").css("cursor", "auto"); - - this.element.removeClass("ui-resizable-resizing"); - - this._propagate("stop", event); - - if (this._helper) { - this.helper.remove(); - } - - return false; - - }, - - _updateVirtualBoundaries: function(forceAspectRatio) { - var pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b, - o = this.options; - - b = { - minWidth: isNumber(o.minWidth) ? o.minWidth : 0, - maxWidth: isNumber(o.maxWidth) ? o.maxWidth : Infinity, - minHeight: isNumber(o.minHeight) ? o.minHeight : 0, - maxHeight: isNumber(o.maxHeight) ? o.maxHeight : Infinity - }; - - if(this._aspectRatio || forceAspectRatio) { - // We want to create an enclosing box whose aspect ration is the requested one - // First, compute the "projected" size for each dimension based on the aspect ratio and other dimension - pMinWidth = b.minHeight * this.aspectRatio; - pMinHeight = b.minWidth / this.aspectRatio; - pMaxWidth = b.maxHeight * this.aspectRatio; - pMaxHeight = b.maxWidth / this.aspectRatio; - - if(pMinWidth > b.minWidth) { - b.minWidth = pMinWidth; - } - if(pMinHeight > b.minHeight) { - b.minHeight = pMinHeight; - } - if(pMaxWidth < b.maxWidth) { - b.maxWidth = pMaxWidth; - } - if(pMaxHeight < b.maxHeight) { - b.maxHeight = pMaxHeight; - } - } - this._vBoundaries = b; - }, - - _updateCache: function(data) { - this.offset = this.helper.offset(); - if (isNumber(data.left)) { - this.position.left = data.left; - } - if (isNumber(data.top)) { - this.position.top = data.top; - } - if (isNumber(data.height)) { - this.size.height = data.height; - } - if (isNumber(data.width)) { - this.size.width = data.width; - } - }, - - _updateRatio: function( data ) { - - var cpos = this.position, - csize = this.size, - a = this.axis; - - if (isNumber(data.height)) { - data.width = (data.height * this.aspectRatio); - } else if (isNumber(data.width)) { - data.height = (data.width / this.aspectRatio); - } - - if (a === "sw") { - data.left = cpos.left + (csize.width - data.width); - data.top = null; - } - if (a === "nw") { - data.top = cpos.top + (csize.height - data.height); - data.left = cpos.left + (csize.width - data.width); - } - - return data; - }, - - _respectSize: function( data ) { - - var o = this._vBoundaries, - a = this.axis, - ismaxw = isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width), ismaxh = isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height), - isminw = isNumber(data.width) && o.minWidth && (o.minWidth > data.width), isminh = isNumber(data.height) && o.minHeight && (o.minHeight > data.height), - dw = this.originalPosition.left + this.originalSize.width, - dh = this.position.top + this.size.height, - cw = /sw|nw|w/.test(a), ch = /nw|ne|n/.test(a); - if (isminw) { - data.width = o.minWidth; - } - if (isminh) { - data.height = o.minHeight; - } - if (ismaxw) { - data.width = o.maxWidth; - } - if (ismaxh) { - data.height = o.maxHeight; - } - - if (isminw && cw) { - data.left = dw - o.minWidth; - } - if (ismaxw && cw) { - data.left = dw - o.maxWidth; - } - if (isminh && ch) { - data.top = dh - o.minHeight; - } - if (ismaxh && ch) { - data.top = dh - o.maxHeight; - } - - // fixing jump error on top/left - bug #2330 - if (!data.width && !data.height && !data.left && data.top) { - data.top = null; - } else if (!data.width && !data.height && !data.top && data.left) { - data.left = null; - } - - return data; - }, - - _proportionallyResize: function() { - - if (!this._proportionallyResizeElements.length) { - return; - } - - var i, j, borders, paddings, prel, - element = this.helper || this.element; - - for ( i=0; i < this._proportionallyResizeElements.length; i++) { - - prel = this._proportionallyResizeElements[i]; - - if (!this.borderDif) { - this.borderDif = []; - borders = [prel.css("borderTopWidth"), prel.css("borderRightWidth"), prel.css("borderBottomWidth"), prel.css("borderLeftWidth")]; - paddings = [prel.css("paddingTop"), prel.css("paddingRight"), prel.css("paddingBottom"), prel.css("paddingLeft")]; - - for ( j = 0; j < borders.length; j++ ) { - this.borderDif[ j ] = ( parseInt( borders[ j ], 10 ) || 0 ) + ( parseInt( paddings[ j ], 10 ) || 0 ); - } - } - - prel.css({ - height: (element.height() - this.borderDif[0] - this.borderDif[2]) || 0, - width: (element.width() - this.borderDif[1] - this.borderDif[3]) || 0 - }); - - } - - }, - - _renderProxy: function() { - - var el = this.element, o = this.options; - this.elementOffset = el.offset(); - - if(this._helper) { - - this.helper = this.helper || $("<div style='overflow:hidden;'></div>"); - - this.helper.addClass(this._helper).css({ - width: this.element.outerWidth() - 1, - height: this.element.outerHeight() - 1, - position: "absolute", - left: this.elementOffset.left +"px", - top: this.elementOffset.top +"px", - zIndex: ++o.zIndex //TODO: Don't modify option - }); - - this.helper - .appendTo("body") - .disableSelection(); - - } else { - this.helper = this.element; - } - - }, - - _change: { - e: function(event, dx) { - return { width: this.originalSize.width + dx }; - }, - w: function(event, dx) { - var cs = this.originalSize, sp = this.originalPosition; - return { left: sp.left + dx, width: cs.width - dx }; - }, - n: function(event, dx, dy) { - var cs = this.originalSize, sp = this.originalPosition; - return { top: sp.top + dy, height: cs.height - dy }; - }, - s: function(event, dx, dy) { - return { height: this.originalSize.height + dy }; - }, - se: function(event, dx, dy) { - return $.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [event, dx, dy])); - }, - sw: function(event, dx, dy) { - return $.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [event, dx, dy])); - }, - ne: function(event, dx, dy) { - return $.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [event, dx, dy])); - }, - nw: function(event, dx, dy) { - return $.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [event, dx, dy])); - } - }, - - _propagate: function(n, event) { - $.ui.plugin.call(this, n, [event, this.ui()]); - (n !== "resize" && this._trigger(n, event, this.ui())); - }, - - plugins: {}, - - ui: function() { - return { - originalElement: this.originalElement, - element: this.element, - helper: this.helper, - position: this.position, - size: this.size, - originalSize: this.originalSize, - originalPosition: this.originalPosition - }; - } - -}); - -/* - * Resizable Extensions - */ - -$.ui.plugin.add("resizable", "animate", { - - stop: function( event ) { - var that = $(this).data("ui-resizable"), - o = that.options, - pr = that._proportionallyResizeElements, - ista = pr.length && (/textarea/i).test(pr[0].nodeName), - soffseth = ista && $.ui.hasScroll(pr[0], "left") /* TODO - jump height */ ? 0 : that.sizeDiff.height, - soffsetw = ista ? 0 : that.sizeDiff.width, - style = { width: (that.size.width - soffsetw), height: (that.size.height - soffseth) }, - left = (parseInt(that.element.css("left"), 10) + (that.position.left - that.originalPosition.left)) || null, - top = (parseInt(that.element.css("top"), 10) + (that.position.top - that.originalPosition.top)) || null; - - that.element.animate( - $.extend(style, top && left ? { top: top, left: left } : {}), { - duration: o.animateDuration, - easing: o.animateEasing, - step: function() { - - var data = { - width: parseInt(that.element.css("width"), 10), - height: parseInt(that.element.css("height"), 10), - top: parseInt(that.element.css("top"), 10), - left: parseInt(that.element.css("left"), 10) - }; - - if (pr && pr.length) { - $(pr[0]).css({ width: data.width, height: data.height }); - } - - // propagating resize, and updating values for each animation step - that._updateCache(data); - that._propagate("resize", event); - - } - } - ); - } - -}); - -$.ui.plugin.add("resizable", "containment", { - - start: function() { - var element, p, co, ch, cw, width, height, - that = $(this).data("ui-resizable"), - o = that.options, - el = that.element, - oc = o.containment, - ce = (oc instanceof $) ? oc.get(0) : (/parent/.test(oc)) ? el.parent().get(0) : oc; - - if (!ce) { - return; - } - - that.containerElement = $(ce); - - if (/document/.test(oc) || oc === document) { - that.containerOffset = { left: 0, top: 0 }; - that.containerPosition = { left: 0, top: 0 }; - - that.parentData = { - element: $(document), left: 0, top: 0, - width: $(document).width(), height: $(document).height() || document.body.parentNode.scrollHeight - }; - } - - // i'm a node, so compute top, left, right, bottom - else { - element = $(ce); - p = []; - $([ "Top", "Right", "Left", "Bottom" ]).each(function(i, name) { p[i] = num(element.css("padding" + name)); }); - - that.containerOffset = element.offset(); - that.containerPosition = element.position(); - that.containerSize = { height: (element.innerHeight() - p[3]), width: (element.innerWidth() - p[1]) }; - - co = that.containerOffset; - ch = that.containerSize.height; - cw = that.containerSize.width; - width = ($.ui.hasScroll(ce, "left") ? ce.scrollWidth : cw ); - height = ($.ui.hasScroll(ce) ? ce.scrollHeight : ch); - - that.parentData = { - element: ce, left: co.left, top: co.top, width: width, height: height - }; - } - }, - - resize: function( event ) { - var woset, hoset, isParent, isOffsetRelative, - that = $(this).data("ui-resizable"), - o = that.options, - co = that.containerOffset, cp = that.position, - pRatio = that._aspectRatio || event.shiftKey, - cop = { top:0, left:0 }, ce = that.containerElement; - - if (ce[0] !== document && (/static/).test(ce.css("position"))) { - cop = co; - } - - if (cp.left < (that._helper ? co.left : 0)) { - that.size.width = that.size.width + (that._helper ? (that.position.left - co.left) : (that.position.left - cop.left)); - if (pRatio) { - that.size.height = that.size.width / that.aspectRatio; - } - that.position.left = o.helper ? co.left : 0; - } - - if (cp.top < (that._helper ? co.top : 0)) { - that.size.height = that.size.height + (that._helper ? (that.position.top - co.top) : that.position.top); - if (pRatio) { - that.size.width = that.size.height * that.aspectRatio; - } - that.position.top = that._helper ? co.top : 0; - } - - that.offset.left = that.parentData.left+that.position.left; - that.offset.top = that.parentData.top+that.position.top; - - woset = Math.abs( (that._helper ? that.offset.left - cop.left : (that.offset.left - cop.left)) + that.sizeDiff.width ); - hoset = Math.abs( (that._helper ? that.offset.top - cop.top : (that.offset.top - co.top)) + that.sizeDiff.height ); - - isParent = that.containerElement.get(0) === that.element.parent().get(0); - isOffsetRelative = /relative|absolute/.test(that.containerElement.css("position")); - - if(isParent && isOffsetRelative) { - woset -= that.parentData.left; - } - - if (woset + that.size.width >= that.parentData.width) { - that.size.width = that.parentData.width - woset; - if (pRatio) { - that.size.height = that.size.width / that.aspectRatio; - } - } - - if (hoset + that.size.height >= that.parentData.height) { - that.size.height = that.parentData.height - hoset; - if (pRatio) { - that.size.width = that.size.height * that.aspectRatio; - } - } - }, - - stop: function(){ - var that = $(this).data("ui-resizable"), - o = that.options, - co = that.containerOffset, - cop = that.containerPosition, - ce = that.containerElement, - helper = $(that.helper), - ho = helper.offset(), - w = helper.outerWidth() - that.sizeDiff.width, - h = helper.outerHeight() - that.sizeDiff.height; - - if (that._helper && !o.animate && (/relative/).test(ce.css("position"))) { - $(this).css({ left: ho.left - cop.left - co.left, width: w, height: h }); - } - - if (that._helper && !o.animate && (/static/).test(ce.css("position"))) { - $(this).css({ left: ho.left - cop.left - co.left, width: w, height: h }); - } - - } -}); - -$.ui.plugin.add("resizable", "alsoResize", { - - start: function () { - var that = $(this).data("ui-resizable"), - o = that.options, - _store = function (exp) { - $(exp).each(function() { - var el = $(this); - el.data("ui-resizable-alsoresize", { - width: parseInt(el.width(), 10), height: parseInt(el.height(), 10), - left: parseInt(el.css("left"), 10), top: parseInt(el.css("top"), 10) - }); - }); - }; - - if (typeof(o.alsoResize) === "object" && !o.alsoResize.parentNode) { - if (o.alsoResize.length) { o.alsoResize = o.alsoResize[0]; _store(o.alsoResize); } - else { $.each(o.alsoResize, function (exp) { _store(exp); }); } - }else{ - _store(o.alsoResize); - } - }, - - resize: function (event, ui) { - var that = $(this).data("ui-resizable"), - o = that.options, - os = that.originalSize, - op = that.originalPosition, - delta = { - height: (that.size.height - os.height) || 0, width: (that.size.width - os.width) || 0, - top: (that.position.top - op.top) || 0, left: (that.position.left - op.left) || 0 - }, - - _alsoResize = function (exp, c) { - $(exp).each(function() { - var el = $(this), start = $(this).data("ui-resizable-alsoresize"), style = {}, - css = c && c.length ? c : el.parents(ui.originalElement[0]).length ? ["width", "height"] : ["width", "height", "top", "left"]; - - $.each(css, function (i, prop) { - var sum = (start[prop]||0) + (delta[prop]||0); - if (sum && sum >= 0) { - style[prop] = sum || null; - } - }); - - el.css(style); - }); - }; - - if (typeof(o.alsoResize) === "object" && !o.alsoResize.nodeType) { - $.each(o.alsoResize, function (exp, c) { _alsoResize(exp, c); }); - }else{ - _alsoResize(o.alsoResize); - } - }, - - stop: function () { - $(this).removeData("resizable-alsoresize"); - } -}); - -$.ui.plugin.add("resizable", "ghost", { - - start: function() { - - var that = $(this).data("ui-resizable"), o = that.options, cs = that.size; - - that.ghost = that.originalElement.clone(); - that.ghost - .css({ opacity: 0.25, display: "block", position: "relative", height: cs.height, width: cs.width, margin: 0, left: 0, top: 0 }) - .addClass("ui-resizable-ghost") - .addClass(typeof o.ghost === "string" ? o.ghost : ""); - - that.ghost.appendTo(that.helper); - - }, - - resize: function(){ - var that = $(this).data("ui-resizable"); - if (that.ghost) { - that.ghost.css({ position: "relative", height: that.size.height, width: that.size.width }); - } - }, - - stop: function() { - var that = $(this).data("ui-resizable"); - if (that.ghost && that.helper) { - that.helper.get(0).removeChild(that.ghost.get(0)); - } - } - -}); - -$.ui.plugin.add("resizable", "grid", { - - resize: function() { - var that = $(this).data("ui-resizable"), - o = that.options, - cs = that.size, - os = that.originalSize, - op = that.originalPosition, - a = that.axis, - grid = typeof o.grid === "number" ? [o.grid, o.grid] : o.grid, - gridX = (grid[0]||1), - gridY = (grid[1]||1), - ox = Math.round((cs.width - os.width) / gridX) * gridX, - oy = Math.round((cs.height - os.height) / gridY) * gridY, - newWidth = os.width + ox, - newHeight = os.height + oy, - isMaxWidth = o.maxWidth && (o.maxWidth < newWidth), - isMaxHeight = o.maxHeight && (o.maxHeight < newHeight), - isMinWidth = o.minWidth && (o.minWidth > newWidth), - isMinHeight = o.minHeight && (o.minHeight > newHeight); - - o.grid = grid; - - if (isMinWidth) { - newWidth = newWidth + gridX; - } - if (isMinHeight) { - newHeight = newHeight + gridY; - } - if (isMaxWidth) { - newWidth = newWidth - gridX; - } - if (isMaxHeight) { - newHeight = newHeight - gridY; - } - - if (/^(se|s|e)$/.test(a)) { - that.size.width = newWidth; - that.size.height = newHeight; - } else if (/^(ne)$/.test(a)) { - that.size.width = newWidth; - that.size.height = newHeight; - that.position.top = op.top - oy; - } else if (/^(sw)$/.test(a)) { - that.size.width = newWidth; - that.size.height = newHeight; - that.position.left = op.left - ox; - } else { - that.size.width = newWidth; - that.size.height = newHeight; - that.position.top = op.top - oy; - that.position.left = op.left - ox; - } - } - -}); - -})(jQuery); -(function( $, undefined ) { - -$.widget("ui.selectable", $.ui.mouse, { - version: "1.10.3", - options: { - appendTo: "body", - autoRefresh: true, - distance: 0, - filter: "*", - tolerance: "touch", - - // callbacks - selected: null, - selecting: null, - start: null, - stop: null, - unselected: null, - unselecting: null - }, - _create: function() { - var selectees, - that = this; - - this.element.addClass("ui-selectable"); - - this.dragged = false; - - // cache selectee children based on filter - this.refresh = function() { - selectees = $(that.options.filter, that.element[0]); - selectees.addClass("ui-selectee"); - selectees.each(function() { - var $this = $(this), - pos = $this.offset(); - $.data(this, "selectable-item", { - element: this, - $element: $this, - left: pos.left, - top: pos.top, - right: pos.left + $this.outerWidth(), - bottom: pos.top + $this.outerHeight(), - startselected: false, - selected: $this.hasClass("ui-selected"), - selecting: $this.hasClass("ui-selecting"), - unselecting: $this.hasClass("ui-unselecting") - }); - }); - }; - this.refresh(); - - this.selectees = selectees.addClass("ui-selectee"); - - this._mouseInit(); - - this.helper = $("<div class='ui-selectable-helper'></div>"); - }, - - _destroy: function() { - this.selectees - .removeClass("ui-selectee") - .removeData("selectable-item"); - this.element - .removeClass("ui-selectable ui-selectable-disabled"); - this._mouseDestroy(); - }, - - _mouseStart: function(event) { - var that = this, - options = this.options; - - this.opos = [event.pageX, event.pageY]; - - if (this.options.disabled) { - return; - } - - this.selectees = $(options.filter, this.element[0]); - - this._trigger("start", event); - - $(options.appendTo).append(this.helper); - // position helper (lasso) - this.helper.css({ - "left": event.pageX, - "top": event.pageY, - "width": 0, - "height": 0 - }); - - if (options.autoRefresh) { - this.refresh(); - } - - this.selectees.filter(".ui-selected").each(function() { - var selectee = $.data(this, "selectable-item"); - selectee.startselected = true; - if (!event.metaKey && !event.ctrlKey) { - selectee.$element.removeClass("ui-selected"); - selectee.selected = false; - selectee.$element.addClass("ui-unselecting"); - selectee.unselecting = true; - // selectable UNSELECTING callback - that._trigger("unselecting", event, { - unselecting: selectee.element - }); - } - }); - - $(event.target).parents().addBack().each(function() { - var doSelect, - selectee = $.data(this, "selectable-item"); - if (selectee) { - doSelect = (!event.metaKey && !event.ctrlKey) || !selectee.$element.hasClass("ui-selected"); - selectee.$element - .removeClass(doSelect ? "ui-unselecting" : "ui-selected") - .addClass(doSelect ? "ui-selecting" : "ui-unselecting"); - selectee.unselecting = !doSelect; - selectee.selecting = doSelect; - selectee.selected = doSelect; - // selectable (UN)SELECTING callback - if (doSelect) { - that._trigger("selecting", event, { - selecting: selectee.element - }); - } else { - that._trigger("unselecting", event, { - unselecting: selectee.element - }); - } - return false; - } - }); - - }, - - _mouseDrag: function(event) { - - this.dragged = true; - - if (this.options.disabled) { - return; - } - - var tmp, - that = this, - options = this.options, - x1 = this.opos[0], - y1 = this.opos[1], - x2 = event.pageX, - y2 = event.pageY; - - if (x1 > x2) { tmp = x2; x2 = x1; x1 = tmp; } - if (y1 > y2) { tmp = y2; y2 = y1; y1 = tmp; } - this.helper.css({left: x1, top: y1, width: x2-x1, height: y2-y1}); - - this.selectees.each(function() { - var selectee = $.data(this, "selectable-item"), - hit = false; - - //prevent helper from being selected if appendTo: selectable - if (!selectee || selectee.element === that.element[0]) { - return; - } - - if (options.tolerance === "touch") { - hit = ( !(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1) ); - } else if (options.tolerance === "fit") { - hit = (selectee.left > x1 && selectee.right < x2 && selectee.top > y1 && selectee.bottom < y2); - } - - if (hit) { - // SELECT - if (selectee.selected) { - selectee.$element.removeClass("ui-selected"); - selectee.selected = false; - } - if (selectee.unselecting) { - selectee.$element.removeClass("ui-unselecting"); - selectee.unselecting = false; - } - if (!selectee.selecting) { - selectee.$element.addClass("ui-selecting"); - selectee.selecting = true; - // selectable SELECTING callback - that._trigger("selecting", event, { - selecting: selectee.element - }); - } - } else { - // UNSELECT - if (selectee.selecting) { - if ((event.metaKey || event.ctrlKey) && selectee.startselected) { - selectee.$element.removeClass("ui-selecting"); - selectee.selecting = false; - selectee.$element.addClass("ui-selected"); - selectee.selected = true; - } else { - selectee.$element.removeClass("ui-selecting"); - selectee.selecting = false; - if (selectee.startselected) { - selectee.$element.addClass("ui-unselecting"); - selectee.unselecting = true; - } - // selectable UNSELECTING callback - that._trigger("unselecting", event, { - unselecting: selectee.element - }); - } - } - if (selectee.selected) { - if (!event.metaKey && !event.ctrlKey && !selectee.startselected) { - selectee.$element.removeClass("ui-selected"); - selectee.selected = false; - - selectee.$element.addClass("ui-unselecting"); - selectee.unselecting = true; - // selectable UNSELECTING callback - that._trigger("unselecting", event, { - unselecting: selectee.element - }); - } - } - } - }); - - return false; - }, - - _mouseStop: function(event) { - var that = this; - - this.dragged = false; - - $(".ui-unselecting", this.element[0]).each(function() { - var selectee = $.data(this, "selectable-item"); - selectee.$element.removeClass("ui-unselecting"); - selectee.unselecting = false; - selectee.startselected = false; - that._trigger("unselected", event, { - unselected: selectee.element - }); - }); - $(".ui-selecting", this.element[0]).each(function() { - var selectee = $.data(this, "selectable-item"); - selectee.$element.removeClass("ui-selecting").addClass("ui-selected"); - selectee.selecting = false; - selectee.selected = true; - selectee.startselected = true; - that._trigger("selected", event, { - selected: selectee.element - }); - }); - this._trigger("stop", event); - - this.helper.remove(); - - return false; - } - -}); - -})(jQuery); -(function( $, undefined ) { - -/*jshint loopfunc: true */ - -function isOverAxis( x, reference, size ) { - return ( x > reference ) && ( x < ( reference + size ) ); -} - -function isFloating(item) { - return (/left|right/).test(item.css("float")) || (/inline|table-cell/).test(item.css("display")); -} - -$.widget("ui.sortable", $.ui.mouse, { - version: "1.10.3", - widgetEventPrefix: "sort", - ready: false, - options: { - appendTo: "parent", - axis: false, - connectWith: false, - containment: false, - cursor: "auto", - cursorAt: false, - dropOnEmpty: true, - forcePlaceholderSize: false, - forceHelperSize: false, - grid: false, - handle: false, - helper: "original", - items: "> *", - opacity: false, - placeholder: false, - revert: false, - scroll: true, - scrollSensitivity: 20, - scrollSpeed: 20, - scope: "default", - tolerance: "intersect", - zIndex: 1000, - - // callbacks - activate: null, - beforeStop: null, - change: null, - deactivate: null, - out: null, - over: null, - receive: null, - remove: null, - sort: null, - start: null, - stop: null, - update: null - }, - _create: function() { - - var o = this.options; - this.containerCache = {}; - this.element.addClass("ui-sortable"); - - //Get the items - this.refresh(); - - //Let's determine if the items are being displayed horizontally - this.floating = this.items.length ? o.axis === "x" || isFloating(this.items[0].item) : false; - - //Let's determine the parent's offset - this.offset = this.element.offset(); - - //Initialize mouse events for interaction - this._mouseInit(); - - //We're ready to go - this.ready = true; - - }, - - _destroy: function() { - this.element - .removeClass("ui-sortable ui-sortable-disabled"); - this._mouseDestroy(); - - for ( var i = this.items.length - 1; i >= 0; i-- ) { - this.items[i].item.removeData(this.widgetName + "-item"); - } - - return this; - }, - - _setOption: function(key, value){ - if ( key === "disabled" ) { - this.options[ key ] = value; - - this.widget().toggleClass( "ui-sortable-disabled", !!value ); - } else { - // Don't call widget base _setOption for disable as it adds ui-state-disabled class - $.Widget.prototype._setOption.apply(this, arguments); - } - }, - - _mouseCapture: function(event, overrideHandle) { - var currentItem = null, - validHandle = false, - that = this; - - if (this.reverting) { - return false; - } - - if(this.options.disabled || this.options.type === "static") { - return false; - } - - //We have to refresh the items data once first - this._refreshItems(event); - - //Find out if the clicked node (or one of its parents) is a actual item in this.items - $(event.target).parents().each(function() { - if($.data(this, that.widgetName + "-item") === that) { - currentItem = $(this); - return false; - } - }); - if($.data(event.target, that.widgetName + "-item") === that) { - currentItem = $(event.target); - } - - if(!currentItem) { - return false; - } - if(this.options.handle && !overrideHandle) { - $(this.options.handle, currentItem).find("*").addBack().each(function() { - if(this === event.target) { - validHandle = true; - } - }); - if(!validHandle) { - return false; - } - } - - this.currentItem = currentItem; - this._removeCurrentsFromItems(); - return true; - - }, - - _mouseStart: function(event, overrideHandle, noActivation) { - - var i, body, - o = this.options; - - this.currentContainer = this; - - //We only need to call refreshPositions, because the refreshItems call has been moved to mouseCapture - this.refreshPositions(); - - //Create and append the visible helper - this.helper = this._createHelper(event); - - //Cache the helper size - this._cacheHelperProportions(); - - /* - * - Position generation - - * This block generates everything position related - it's the core of draggables. - */ - - //Cache the margins of the original element - this._cacheMargins(); - - //Get the next scrolling parent - this.scrollParent = this.helper.scrollParent(); - - //The element's absolute position on the page minus margins - this.offset = this.currentItem.offset(); - this.offset = { - top: this.offset.top - this.margins.top, - left: this.offset.left - this.margins.left - }; - - $.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 - }); - - // Only after we got the offset, we can change the helper's position to absolute - // TODO: Still need to figure out a way to make relative sorting possible - this.helper.css("position", "absolute"); - this.cssPosition = this.helper.css("position"); - - //Generate the original position - this.originalPosition = 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)); - - //Cache the former DOM position - this.domPosition = { prev: this.currentItem.prev()[0], parent: this.currentItem.parent()[0] }; - - //If the helper is not the original, hide the original so it's not playing any role during the drag, won't cause anything bad this way - if(this.helper[0] !== this.currentItem[0]) { - this.currentItem.hide(); - } - - //Create the placeholder - this._createPlaceholder(); - - //Set a containment if given in the options - if(o.containment) { - this._setContainment(); - } - - if( o.cursor && o.cursor !== "auto" ) { // cursor option - body = this.document.find( "body" ); - - // support: IE - this.storedCursor = body.css( "cursor" ); - body.css( "cursor", o.cursor ); - - this.storedStylesheet = $( "<style>*{ cursor: "+o.cursor+" !important; }</style>" ).appendTo( body ); - } - - if(o.opacity) { // opacity option - if (this.helper.css("opacity")) { - this._storedOpacity = this.helper.css("opacity"); - } - this.helper.css("opacity", o.opacity); - } - - if(o.zIndex) { // zIndex option - if (this.helper.css("zIndex")) { - this._storedZIndex = this.helper.css("zIndex"); - } - this.helper.css("zIndex", o.zIndex); - } - - //Prepare scrolling - if(this.scrollParent[0] !== document && this.scrollParent[0].tagName !== "HTML") { - this.overflowOffset = this.scrollParent.offset(); - } - - //Call callbacks - this._trigger("start", event, this._uiHash()); - - //Recache the helper size - if(!this._preserveHelperProportions) { - this._cacheHelperProportions(); - } - - - //Post "activate" events to possible containers - if( !noActivation ) { - for ( i = this.containers.length - 1; i >= 0; i-- ) { - this.containers[ i ]._trigger( "activate", event, this._uiHash( this ) ); - } - } - - //Prepare possible droppables - if($.ui.ddmanager) { - $.ui.ddmanager.current = this; - } - - if ($.ui.ddmanager && !o.dropBehaviour) { - $.ui.ddmanager.prepareOffsets(this, event); - } - - this.dragging = true; - - this.helper.addClass("ui-sortable-helper"); - this._mouseDrag(event); //Execute the drag once - this causes the helper not to be visible before getting its correct position - return true; - - }, - - _mouseDrag: function(event) { - var i, item, itemElement, intersection, - o = this.options, - scrolled = false; - - //Compute the helpers position - this.position = this._generatePosition(event); - this.positionAbs = this._convertPositionTo("absolute"); - - if (!this.lastPositionAbs) { - this.lastPositionAbs = this.positionAbs; - } - - //Do scrolling - if(this.options.scroll) { - if(this.scrollParent[0] !== document && this.scrollParent[0].tagName !== "HTML") { - - if((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) { - this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed; - } else if(event.pageY - this.overflowOffset.top < o.scrollSensitivity) { - this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed; - } - - if((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) { - this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed; - } else if(event.pageX - this.overflowOffset.left < o.scrollSensitivity) { - this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed; - } - - } else { - - 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(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(this, event); - } - } - - //Regenerate the absolute position used for position checks - this.positionAbs = this._convertPositionTo("absolute"); - - //Set the helper 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"; - } - - //Rearrange - for (i = this.items.length - 1; i >= 0; i--) { - - //Cache variables and intersection, continue if no intersection - item = this.items[i]; - itemElement = item.item[0]; - intersection = this._intersectsWithPointer(item); - if (!intersection) { - continue; - } - - // Only put the placeholder inside the current Container, skip all - // items form other containers. This works because when moving - // an item from one container to another the - // currentContainer is switched before the placeholder is moved. - // - // Without this moving items in "sub-sortables" can cause the placeholder to jitter - // beetween the outer and inner container. - if (item.instance !== this.currentContainer) { - continue; - } - - // cannot intersect with itself - // no useless actions that have been done before - // no action if the item moved is the parent of the item checked - if (itemElement !== this.currentItem[0] && - this.placeholder[intersection === 1 ? "next" : "prev"]()[0] !== itemElement && - !$.contains(this.placeholder[0], itemElement) && - (this.options.type === "semi-dynamic" ? !$.contains(this.element[0], itemElement) : true) - ) { - - this.direction = intersection === 1 ? "down" : "up"; - - if (this.options.tolerance === "pointer" || this._intersectsWithSides(item)) { - this._rearrange(event, item); - } else { - break; - } - - this._trigger("change", event, this._uiHash()); - break; - } - } - - //Post events to containers - this._contactContainers(event); - - //Interconnect with droppables - if($.ui.ddmanager) { - $.ui.ddmanager.drag(this, event); - } - - //Call callbacks - this._trigger("sort", event, this._uiHash()); - - this.lastPositionAbs = this.positionAbs; - return false; - - }, - - _mouseStop: function(event, noPropagation) { - - if(!event) { - return; - } - - //If we are using droppables, inform the manager about the drop - if ($.ui.ddmanager && !this.options.dropBehaviour) { - $.ui.ddmanager.drop(this, event); - } - - if(this.options.revert) { - var that = this, - cur = this.placeholder.offset(), - axis = this.options.axis, - animation = {}; - - if ( !axis || axis === "x" ) { - animation.left = cur.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] === document.body ? 0 : this.offsetParent[0].scrollLeft); - } - if ( !axis || axis === "y" ) { - animation.top = cur.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] === document.body ? 0 : this.offsetParent[0].scrollTop); - } - this.reverting = true; - $(this.helper).animate( animation, parseInt(this.options.revert, 10) || 500, function() { - that._clear(event); - }); - } else { - this._clear(event, noPropagation); - } - - return false; - - }, - - cancel: function() { - - if(this.dragging) { - - this._mouseUp({ target: null }); - - if(this.options.helper === "original") { - this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"); - } else { - this.currentItem.show(); - } - - //Post deactivating events to containers - for (var i = this.containers.length - 1; i >= 0; i--){ - this.containers[i]._trigger("deactivate", null, this._uiHash(this)); - if(this.containers[i].containerCache.over) { - this.containers[i]._trigger("out", null, this._uiHash(this)); - this.containers[i].containerCache.over = 0; - } - } - - } - - if (this.placeholder) { - //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node! - if(this.placeholder[0].parentNode) { - this.placeholder[0].parentNode.removeChild(this.placeholder[0]); - } - if(this.options.helper !== "original" && this.helper && this.helper[0].parentNode) { - this.helper.remove(); - } - - $.extend(this, { - helper: null, - dragging: false, - reverting: false, - _noFinalSort: null - }); - - if(this.domPosition.prev) { - $(this.domPosition.prev).after(this.currentItem); - } else { - $(this.domPosition.parent).prepend(this.currentItem); - } - } - - return this; - - }, - - serialize: function(o) { - - var items = this._getItemsAsjQuery(o && o.connected), - str = []; - o = o || {}; - - $(items).each(function() { - var res = ($(o.item || this).attr(o.attribute || "id") || "").match(o.expression || (/(.+)[\-=_](.+)/)); - if (res) { - str.push((o.key || res[1]+"[]")+"="+(o.key && o.expression ? res[1] : res[2])); - } - }); - - if(!str.length && o.key) { - str.push(o.key + "="); - } - - return str.join("&"); - - }, - - toArray: function(o) { - - var items = this._getItemsAsjQuery(o && o.connected), - ret = []; - - o = o || {}; - - items.each(function() { ret.push($(o.item || this).attr(o.attribute || "id") || ""); }); - return ret; - - }, - - /* Be careful with the following core functions */ - _intersectsWith: function(item) { - - var x1 = this.positionAbs.left, - x2 = x1 + this.helperProportions.width, - y1 = this.positionAbs.top, - y2 = y1 + this.helperProportions.height, - l = item.left, - r = l + item.width, - t = item.top, - b = t + item.height, - dyClick = this.offset.click.top, - dxClick = this.offset.click.left, - isOverElementHeight = ( this.options.axis === "x" ) || ( ( y1 + dyClick ) > t && ( y1 + dyClick ) < b ), - isOverElementWidth = ( this.options.axis === "y" ) || ( ( x1 + dxClick ) > l && ( x1 + dxClick ) < r ), - isOverElement = isOverElementHeight && isOverElementWidth; - - if ( this.options.tolerance === "pointer" || - this.options.forcePointerForContainers || - (this.options.tolerance !== "pointer" && this.helperProportions[this.floating ? "width" : "height"] > item[this.floating ? "width" : "height"]) - ) { - return isOverElement; - } else { - - return (l < x1 + (this.helperProportions.width / 2) && // Right Half - x2 - (this.helperProportions.width / 2) < r && // Left Half - t < y1 + (this.helperProportions.height / 2) && // Bottom Half - y2 - (this.helperProportions.height / 2) < b ); // Top Half - - } - }, - - _intersectsWithPointer: function(item) { - - var isOverElementHeight = (this.options.axis === "x") || isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height), - isOverElementWidth = (this.options.axis === "y") || isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width), - isOverElement = isOverElementHeight && isOverElementWidth, - verticalDirection = this._getDragVerticalDirection(), - horizontalDirection = this._getDragHorizontalDirection(); - - if (!isOverElement) { - return false; - } - - return this.floating ? - ( ((horizontalDirection && horizontalDirection === "right") || verticalDirection === "down") ? 2 : 1 ) - : ( verticalDirection && (verticalDirection === "down" ? 2 : 1) ); - - }, - - _intersectsWithSides: function(item) { - - var isOverBottomHalf = isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + (item.height/2), item.height), - isOverRightHalf = isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + (item.width/2), item.width), - verticalDirection = this._getDragVerticalDirection(), - horizontalDirection = this._getDragHorizontalDirection(); - - if (this.floating && horizontalDirection) { - return ((horizontalDirection === "right" && isOverRightHalf) || (horizontalDirection === "left" && !isOverRightHalf)); - } else { - return verticalDirection && ((verticalDirection === "down" && isOverBottomHalf) || (verticalDirection === "up" && !isOverBottomHalf)); - } - - }, - - _getDragVerticalDirection: function() { - var delta = this.positionAbs.top - this.lastPositionAbs.top; - return delta !== 0 && (delta > 0 ? "down" : "up"); - }, - - _getDragHorizontalDirection: function() { - var delta = this.positionAbs.left - this.lastPositionAbs.left; - return delta !== 0 && (delta > 0 ? "right" : "left"); - }, - - refresh: function(event) { - this._refreshItems(event); - this.refreshPositions(); - return this; - }, - - _connectWith: function() { - var options = this.options; - return options.connectWith.constructor === String ? [options.connectWith] : options.connectWith; - }, - - _getItemsAsjQuery: function(connected) { - - var i, j, cur, inst, - items = [], - queries = [], - connectWith = this._connectWith(); - - if(connectWith && connected) { - for (i = connectWith.length - 1; i >= 0; i--){ - cur = $(connectWith[i]); - for ( j = cur.length - 1; j >= 0; j--){ - inst = $.data(cur[j], this.widgetFullName); - if(inst && inst !== this && !inst.options.disabled) { - queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), inst]); - } - } - } - } - - queries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { options: this.options, item: this.currentItem }) : $(this.options.items, this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), this]); - - for (i = queries.length - 1; i >= 0; i--){ - queries[i][0].each(function() { - items.push(this); - }); - } - - return $(items); - - }, - - _removeCurrentsFromItems: function() { - - var list = this.currentItem.find(":data(" + this.widgetName + "-item)"); - - this.items = $.grep(this.items, function (item) { - for (var j=0; j < list.length; j++) { - if(list[j] === item.item[0]) { - return false; - } - } - return true; - }); - - }, - - _refreshItems: function(event) { - - this.items = []; - this.containers = [this]; - - var i, j, cur, inst, targetData, _queries, item, queriesLength, - items = this.items, - queries = [[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { item: this.currentItem }) : $(this.options.items, this.element), this]], - connectWith = this._connectWith(); - - if(connectWith && this.ready) { //Shouldn't be run the first time through due to massive slow-down - for (i = connectWith.length - 1; i >= 0; i--){ - cur = $(connectWith[i]); - for (j = cur.length - 1; j >= 0; j--){ - inst = $.data(cur[j], this.widgetFullName); - if(inst && inst !== this && !inst.options.disabled) { - queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, { item: this.currentItem }) : $(inst.options.items, inst.element), inst]); - this.containers.push(inst); - } - } - } - } - - for (i = queries.length - 1; i >= 0; i--) { - targetData = queries[i][1]; - _queries = queries[i][0]; - - for (j=0, queriesLength = _queries.length; j < queriesLength; j++) { - item = $(_queries[j]); - - item.data(this.widgetName + "-item", targetData); // Data for target checking (mouse manager) - - items.push({ - item: item, - instance: targetData, - width: 0, height: 0, - left: 0, top: 0 - }); - } - } - - }, - - refreshPositions: function(fast) { - - //This has to be redone because due to the item being moved out/into the offsetParent, the offsetParent's position will change - if(this.offsetParent && this.helper) { - this.offset.parent = this._getParentOffset(); - } - - var i, item, t, p; - - for (i = this.items.length - 1; i >= 0; i--){ - item = this.items[i]; - - //We ignore calculating positions of all connected containers when we're not over them - if(item.instance !== this.currentContainer && this.currentContainer && item.item[0] !== this.currentItem[0]) { - continue; - } - - t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item; - - if (!fast) { - item.width = t.outerWidth(); - item.height = t.outerHeight(); - } - - p = t.offset(); - item.left = p.left; - item.top = p.top; - } - - if(this.options.custom && this.options.custom.refreshContainers) { - this.options.custom.refreshContainers.call(this); - } else { - for (i = this.containers.length - 1; i >= 0; i--){ - p = this.containers[i].element.offset(); - this.containers[i].containerCache.left = p.left; - this.containers[i].containerCache.top = p.top; - this.containers[i].containerCache.width = this.containers[i].element.outerWidth(); - this.containers[i].containerCache.height = this.containers[i].element.outerHeight(); - } - } - - return this; - }, - - _createPlaceholder: function(that) { - that = that || this; - var className, - o = that.options; - - if(!o.placeholder || o.placeholder.constructor === String) { - className = o.placeholder; - o.placeholder = { - element: function() { - - var nodeName = that.currentItem[0].nodeName.toLowerCase(), - element = $( "<" + nodeName + ">", that.document[0] ) - .addClass(className || that.currentItem[0].className+" ui-sortable-placeholder") - .removeClass("ui-sortable-helper"); - - if ( nodeName === "tr" ) { - that.currentItem.children().each(function() { - $( "<td>&#160;</td>", that.document[0] ) - .attr( "colspan", $( this ).attr( "colspan" ) || 1 ) - .appendTo( element ); - }); - } else if ( nodeName === "img" ) { - element.attr( "src", that.currentItem.attr( "src" ) ); - } - - if ( !className ) { - element.css( "visibility", "hidden" ); - } - - return element; - }, - update: function(container, p) { - - // 1. If a className is set as 'placeholder option, we don't force sizes - the class is responsible for that - // 2. The option 'forcePlaceholderSize can be enabled to force it even if a class name is specified - if(className && !o.forcePlaceholderSize) { - return; - } - - //If the element doesn't have a actual height by itself (without styles coming from a stylesheet), it receives the inline height from the dragged item - if(!p.height()) { p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css("paddingTop")||0, 10) - parseInt(that.currentItem.css("paddingBottom")||0, 10)); } - if(!p.width()) { p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css("paddingLeft")||0, 10) - parseInt(that.currentItem.css("paddingRight")||0, 10)); } - } - }; - } - - //Create the placeholder - that.placeholder = $(o.placeholder.element.call(that.element, that.currentItem)); - - //Append it after the actual current item - that.currentItem.after(that.placeholder); - - //Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317) - o.placeholder.update(that, that.placeholder); - - }, - - _contactContainers: function(event) { - var i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, base, cur, nearBottom, floating, - innermostContainer = null, - innermostIndex = null; - - // get innermost container that intersects with item - for (i = this.containers.length - 1; i >= 0; i--) { - - // never consider a container that's located within the item itself - if($.contains(this.currentItem[0], this.containers[i].element[0])) { - continue; - } - - if(this._intersectsWith(this.containers[i].containerCache)) { - - // if we've already found a container and it's more "inner" than this, then continue - if(innermostContainer && $.contains(this.containers[i].element[0], innermostContainer.element[0])) { - continue; - } - - innermostContainer = this.containers[i]; - innermostIndex = i; - - } else { - // container doesn't intersect. trigger "out" event if necessary - if(this.containers[i].containerCache.over) { - this.containers[i]._trigger("out", event, this._uiHash(this)); - this.containers[i].containerCache.over = 0; - } - } - - } - - // if no intersecting containers found, return - if(!innermostContainer) { - return; - } - - // move the item into the container if it's not there already - if(this.containers.length === 1) { - if (!this.containers[innermostIndex].containerCache.over) { - this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)); - this.containers[innermostIndex].containerCache.over = 1; - } - } else { - - //When entering a new container, we will find the item with the least distance and append our item near it - dist = 10000; - itemWithLeastDistance = null; - floating = innermostContainer.floating || isFloating(this.currentItem); - posProperty = floating ? "left" : "top"; - sizeProperty = floating ? "width" : "height"; - base = this.positionAbs[posProperty] + this.offset.click[posProperty]; - for (j = this.items.length - 1; j >= 0; j--) { - if(!$.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) { - continue; - } - if(this.items[j].item[0] === this.currentItem[0]) { - continue; - } - if (floating && !isOverAxis(this.positionAbs.top + this.offset.click.top, this.items[j].top, this.items[j].height)) { - continue; - } - cur = this.items[j].item.offset()[posProperty]; - nearBottom = false; - if(Math.abs(cur - base) > Math.abs(cur + this.items[j][sizeProperty] - base)){ - nearBottom = true; - cur += this.items[j][sizeProperty]; - } - - if(Math.abs(cur - base) < dist) { - dist = Math.abs(cur - base); itemWithLeastDistance = this.items[j]; - this.direction = nearBottom ? "up": "down"; - } - } - - //Check if dropOnEmpty is enabled - if(!itemWithLeastDistance && !this.options.dropOnEmpty) { - return; - } - - if(this.currentContainer === this.containers[innermostIndex]) { - return; - } - - itemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true); - this._trigger("change", event, this._uiHash()); - this.containers[innermostIndex]._trigger("change", event, this._uiHash(this)); - this.currentContainer = this.containers[innermostIndex]; - - //Update the placeholder - this.options.placeholder.update(this.currentContainer, this.placeholder); - - this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)); - this.containers[innermostIndex].containerCache.over = 1; - } - - - }, - - _createHelper: function(event) { - - var o = this.options, - helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : (o.helper === "clone" ? this.currentItem.clone() : this.currentItem); - - //Add the helper to the DOM if that didn't happen already - if(!helper.parents("body").length) { - $(o.appendTo !== "parent" ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]); - } - - if(helper[0] === this.currentItem[0]) { - this._storedCSS = { width: this.currentItem[0].style.width, height: this.currentItem[0].style.height, position: this.currentItem.css("position"), top: this.currentItem.css("top"), left: this.currentItem.css("left") }; - } - - if(!helper[0].style.width || o.forceHelperSize) { - helper.width(this.currentItem.width()); - } - if(!helper[0].style.height || o.forceHelperSize) { - helper.height(this.currentItem.height()); - } - - 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 - this.offsetParent = this.helper.offsetParent(); - 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 - // with an 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.currentItem.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.currentItem.css("marginLeft"),10) || 0), - top: (parseInt(this.currentItem.css("marginTop"),10) || 0) - }; - }, - - _cacheHelperProportions: function() { - this.helperProportions = { - width: this.helper.outerWidth(), - height: this.helper.outerHeight() - }; - }, - - _setContainment: function() { - - var ce, co, over, - o = this.options; - if(o.containment === "parent") { - o.containment = this.helper[0].parentNode; - } - if(o.containment === "document" || o.containment === "window") { - this.containment = [ - 0 - this.offset.relative.left - this.offset.parent.left, - 0 - this.offset.relative.top - this.offset.parent.top, - $(o.containment === "document" ? document : window).width() - this.helperProportions.width - this.margins.left, - ($(o.containment === "document" ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top - ]; - } - - if(!(/^(document|window|parent)$/).test(o.containment)) { - ce = $(o.containment)[0]; - co = $(o.containment).offset(); - over = ($(ce).css("overflow") !== "hidden"); - - this.containment = [ - co.left + (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0) - this.margins.left, - co.top + (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0) - this.margins.top, - co.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left, - co.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top - ]; - } - - }, - - _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, - scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); - - 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() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * 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() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod) - ) - }; - - }, - - _generatePosition: function(event) { - - var top, left, - o = this.options, - pageX = event.pageX, - pageY = event.pageY, - scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); - - // This is another very weird special case that only happens for relative elements: - // 1. If the css position is relative - // 2. and the scroll parent is the document or similar to the offset parent - // we have to refresh the relative offset during the scroll so there are no jumps - if(this.cssPosition === "relative" && !(this.scrollParent[0] !== document && this.scrollParent[0] !== this.offsetParent[0])) { - this.offset.relative = this._getRelativeOffset(); - } - - /* - * - Position constraining - - * Constrain the position to a mix of grid, containment. - */ - - if(this.originalPosition) { //If we are not dragging yet, we won't check for options - - if(this.containment) { - if(event.pageX - this.offset.click.left < this.containment[0]) { - pageX = this.containment[0] + this.offset.click.left; - } - if(event.pageY - this.offset.click.top < this.containment[1]) { - pageY = this.containment[1] + this.offset.click.top; - } - if(event.pageX - this.offset.click.left > this.containment[2]) { - pageX = this.containment[2] + this.offset.click.left; - } - if(event.pageY - this.offset.click.top > this.containment[3]) { - pageY = this.containment[3] + this.offset.click.top; - } - } - - if(o.grid) { - top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1]; - pageY = this.containment ? ( (top - this.offset.click.top >= this.containment[1] && top - this.offset.click.top <= this.containment[3]) ? top : ((top - this.offset.click.top >= this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top; - - left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0]; - pageX = this.containment ? ( (left - this.offset.click.left >= this.containment[0] && left - this.offset.click.left <= this.containment[2]) ? left : ((left - this.offset.click.left >= this.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() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) )) - ), - 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() : scrollIsRootNode ? 0 : scroll.scrollLeft() )) - ) - }; - - }, - - _rearrange: function(event, i, a, hardRefresh) { - - a ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(this.placeholder[0], (this.direction === "down" ? i.item[0] : i.item[0].nextSibling)); - - //Various things done here to improve the performance: - // 1. we create a setTimeout, that calls refreshPositions - // 2. on the instance, we have a counter variable, that get's higher after every append - // 3. on the local scope, we copy the counter variable, and check in the timeout, if it's still the same - // 4. this lets only the last addition to the timeout stack through - this.counter = this.counter ? ++this.counter : 1; - var counter = this.counter; - - this._delay(function() { - if(counter === this.counter) { - this.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove - } - }); - - }, - - _clear: function(event, noPropagation) { - - this.reverting = false; - // We delay all events that have to be triggered to after the point where the placeholder has been removed and - // everything else normalized again - var i, - delayedTriggers = []; - - // We first have to update the dom position of the actual currentItem - // Note: don't do it if the current item is already removed (by a user), or it gets reappended (see #4088) - if(!this._noFinalSort && this.currentItem.parent().length) { - this.placeholder.before(this.currentItem); - } - this._noFinalSort = null; - - if(this.helper[0] === this.currentItem[0]) { - for(i in this._storedCSS) { - if(this._storedCSS[i] === "auto" || this._storedCSS[i] === "static") { - this._storedCSS[i] = ""; - } - } - this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"); - } else { - this.currentItem.show(); - } - - if(this.fromOutside && !noPropagation) { - delayedTriggers.push(function(event) { this._trigger("receive", event, this._uiHash(this.fromOutside)); }); - } - if((this.fromOutside || this.domPosition.prev !== this.currentItem.prev().not(".ui-sortable-helper")[0] || this.domPosition.parent !== this.currentItem.parent()[0]) && !noPropagation) { - delayedTriggers.push(function(event) { this._trigger("update", event, this._uiHash()); }); //Trigger update callback if the DOM position has changed - } - - // Check if the items Container has Changed and trigger appropriate - // events. - if (this !== this.currentContainer) { - if(!noPropagation) { - delayedTriggers.push(function(event) { this._trigger("remove", event, this._uiHash()); }); - delayedTriggers.push((function(c) { return function(event) { c._trigger("receive", event, this._uiHash(this)); }; }).call(this, this.currentContainer)); - delayedTriggers.push((function(c) { return function(event) { c._trigger("update", event, this._uiHash(this)); }; }).call(this, this.currentContainer)); - } - } - - - //Post events to containers - for (i = this.containers.length - 1; i >= 0; i--){ - if(!noPropagation) { - delayedTriggers.push((function(c) { return function(event) { c._trigger("deactivate", event, this._uiHash(this)); }; }).call(this, this.containers[i])); - } - if(this.containers[i].containerCache.over) { - delayedTriggers.push((function(c) { return function(event) { c._trigger("out", event, this._uiHash(this)); }; }).call(this, this.containers[i])); - this.containers[i].containerCache.over = 0; - } - } - - //Do what was originally in plugins - if ( this.storedCursor ) { - this.document.find( "body" ).css( "cursor", this.storedCursor ); - this.storedStylesheet.remove(); - } - if(this._storedOpacity) { - this.helper.css("opacity", this._storedOpacity); - } - if(this._storedZIndex) { - this.helper.css("zIndex", this._storedZIndex === "auto" ? "" : this._storedZIndex); - } - - this.dragging = false; - if(this.cancelHelperRemoval) { - if(!noPropagation) { - this._trigger("beforeStop", event, this._uiHash()); - for (i=0; i < delayedTriggers.length; i++) { - delayedTriggers[i].call(this, event); - } //Trigger all delayed events - this._trigger("stop", event, this._uiHash()); - } - - this.fromOutside = false; - return false; - } - - if(!noPropagation) { - this._trigger("beforeStop", event, this._uiHash()); - } - - //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node! - this.placeholder[0].parentNode.removeChild(this.placeholder[0]); - - if(this.helper[0] !== this.currentItem[0]) { - this.helper.remove(); - } - this.helper = null; - - if(!noPropagation) { - for (i=0; i < delayedTriggers.length; i++) { - delayedTriggers[i].call(this, event); - } //Trigger all delayed events - this._trigger("stop", event, this._uiHash()); - } - - this.fromOutside = false; - return true; - - }, - - _trigger: function() { - if ($.Widget.prototype._trigger.apply(this, arguments) === false) { - this.cancel(); - } - }, - - _uiHash: function(_inst) { - var inst = _inst || this; - return { - helper: inst.helper, - placeholder: inst.placeholder || $([]), - position: inst.position, - originalPosition: inst.originalPosition, - offset: inst.positionAbs, - item: inst.currentItem, - sender: _inst ? _inst.element : null - }; - } - -}); - -})(jQuery); -(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 )); -(function( $, undefined ) { - -$.widget( "ui.menu", { - version: "1.10.3", - defaultElement: "<ul>", - delay: 300, - options: { - icons: { - submenu: "ui-icon-carat-1-e" - }, - menus: "ul", - position: { - my: "left top", - at: "right top" - }, - role: "menu", - - // callbacks - blur: null, - focus: null, - select: null - }, - - _create: function() { - this.activeMenu = this.element; - // flag used to prevent firing of the click handler - // as the event bubbles up through nested menus - this.mouseHandled = false; - this.element - .uniqueId() - .addClass( "ui-menu ui-widget ui-widget-content ui-corner-all" ) - .toggleClass( "ui-menu-icons", !!this.element.find( ".ui-icon" ).length ) - .attr({ - role: this.options.role, - tabIndex: 0 - }) - // need to catch all clicks on disabled menu - // not possible through _on - .bind( "click" + this.eventNamespace, $.proxy(function( event ) { - if ( this.options.disabled ) { - event.preventDefault(); - } - }, this )); - - if ( this.options.disabled ) { - this.element - .addClass( "ui-state-disabled" ) - .attr( "aria-disabled", "true" ); - } - - this._on({ - // Prevent focus from sticking to links inside menu after clicking - // them (focus should always stay on UL during navigation). - "mousedown .ui-menu-item > a": function( event ) { - event.preventDefault(); - }, - "click .ui-state-disabled > a": function( event ) { - event.preventDefault(); - }, - "click .ui-menu-item:has(a)": function( event ) { - var target = $( event.target ).closest( ".ui-menu-item" ); - if ( !this.mouseHandled && target.not( ".ui-state-disabled" ).length ) { - this.mouseHandled = true; - - this.select( event ); - // Open submenu on click - if ( target.has( ".ui-menu" ).length ) { - this.expand( event ); - } else if ( !this.element.is( ":focus" ) ) { - // Redirect focus to the menu - this.element.trigger( "focus", [ true ] ); - - // If the active item is on the top level, let it stay active. - // Otherwise, blur the active item since it is no longer visible. - if ( this.active && this.active.parents( ".ui-menu" ).length === 1 ) { - clearTimeout( this.timer ); - } - } - } - }, - "mouseenter .ui-menu-item": function( event ) { - var target = $( event.currentTarget ); - // Remove ui-state-active class from siblings of the newly focused menu item - // to avoid a jump caused by adjacent elements both having a class with a border - target.siblings().children( ".ui-state-active" ).removeClass( "ui-state-active" ); - this.focus( event, target ); - }, - mouseleave: "collapseAll", - "mouseleave .ui-menu": "collapseAll", - focus: function( event, keepActiveItem ) { - // If there's already an active item, keep it active - // If not, activate the first item - var item = this.active || this.element.children( ".ui-menu-item" ).eq( 0 ); - - if ( !keepActiveItem ) { - this.focus( event, item ); - } - }, - blur: function( event ) { - this._delay(function() { - if ( !$.contains( this.element[0], this.document[0].activeElement ) ) { - this.collapseAll( event ); - } - }); - }, - keydown: "_keydown" - }); - - this.refresh(); - - // Clicks outside of a menu collapse any open menus - this._on( this.document, { - click: function( event ) { - if ( !$( event.target ).closest( ".ui-menu" ).length ) { - this.collapseAll( event ); - } - - // Reset the mouseHandled flag - this.mouseHandled = false; - } - }); - }, - - _destroy: function() { - // Destroy (sub)menus - this.element - .removeAttr( "aria-activedescendant" ) - .find( ".ui-menu" ).addBack() - .removeClass( "ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons" ) - .removeAttr( "role" ) - .removeAttr( "tabIndex" ) - .removeAttr( "aria-labelledby" ) - .removeAttr( "aria-expanded" ) - .removeAttr( "aria-hidden" ) - .removeAttr( "aria-disabled" ) - .removeUniqueId() - .show(); - - // Destroy menu items - this.element.find( ".ui-menu-item" ) - .removeClass( "ui-menu-item" ) - .removeAttr( "role" ) - .removeAttr( "aria-disabled" ) - .children( "a" ) - .removeUniqueId() - .removeClass( "ui-corner-all ui-state-hover" ) - .removeAttr( "tabIndex" ) - .removeAttr( "role" ) - .removeAttr( "aria-haspopup" ) - .children().each( function() { - var elem = $( this ); - if ( elem.data( "ui-menu-submenu-carat" ) ) { - elem.remove(); - } - }); - - // Destroy menu dividers - this.element.find( ".ui-menu-divider" ).removeClass( "ui-menu-divider ui-widget-content" ); - }, - - _keydown: function( event ) { - /*jshint maxcomplexity:20*/ - var match, prev, character, skip, regex, - preventDefault = true; - - function escape( value ) { - return value.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" ); - } - - switch ( event.keyCode ) { - case $.ui.keyCode.PAGE_UP: - this.previousPage( event ); - break; - case $.ui.keyCode.PAGE_DOWN: - this.nextPage( event ); - break; - case $.ui.keyCode.HOME: - this._move( "first", "first", event ); - break; - case $.ui.keyCode.END: - this._move( "last", "last", event ); - break; - case $.ui.keyCode.UP: - this.previous( event ); - break; - case $.ui.keyCode.DOWN: - this.next( event ); - break; - case $.ui.keyCode.LEFT: - this.collapse( event ); - break; - case $.ui.keyCode.RIGHT: - if ( this.active && !this.active.is( ".ui-state-disabled" ) ) { - this.expand( event ); - } - break; - case $.ui.keyCode.ENTER: - case $.ui.keyCode.SPACE: - this._activate( event ); - break; - case $.ui.keyCode.ESCAPE: - this.collapse( event ); - break; - default: - preventDefault = false; - prev = this.previousFilter || ""; - character = String.fromCharCode( event.keyCode ); - skip = false; - - clearTimeout( this.filterTimer ); - - if ( character === prev ) { - skip = true; - } else { - character = prev + character; - } - - regex = new RegExp( "^" + escape( character ), "i" ); - match = this.activeMenu.children( ".ui-menu-item" ).filter(function() { - return regex.test( $( this ).children( "a" ).text() ); - }); - match = skip && match.index( this.active.next() ) !== -1 ? - this.active.nextAll( ".ui-menu-item" ) : - match; - - // If no matches on the current filter, reset to the last character pressed - // to move down the menu to the first item that starts with that character - if ( !match.length ) { - character = String.fromCharCode( event.keyCode ); - regex = new RegExp( "^" + escape( character ), "i" ); - match = this.activeMenu.children( ".ui-menu-item" ).filter(function() { - return regex.test( $( this ).children( "a" ).text() ); - }); - } - - if ( match.length ) { - this.focus( event, match ); - if ( match.length > 1 ) { - this.previousFilter = character; - this.filterTimer = this._delay(function() { - delete this.previousFilter; - }, 1000 ); - } else { - delete this.previousFilter; - } - } else { - delete this.previousFilter; - } - } - - if ( preventDefault ) { - event.preventDefault(); - } - }, - - _activate: function( event ) { - if ( !this.active.is( ".ui-state-disabled" ) ) { - if ( this.active.children( "a[aria-haspopup='true']" ).length ) { - this.expand( event ); - } else { - this.select( event ); - } - } - }, - - refresh: function() { - var menus, - icon = this.options.icons.submenu, - submenus = this.element.find( this.options.menus ); - - // Initialize nested menus - submenus.filter( ":not(.ui-menu)" ) - .addClass( "ui-menu ui-widget ui-widget-content ui-corner-all" ) - .hide() - .attr({ - role: this.options.role, - "aria-hidden": "true", - "aria-expanded": "false" - }) - .each(function() { - var menu = $( this ), - item = menu.prev( "a" ), - submenuCarat = $( "<span>" ) - .addClass( "ui-menu-icon ui-icon " + icon ) - .data( "ui-menu-submenu-carat", true ); - - item - .attr( "aria-haspopup", "true" ) - .prepend( submenuCarat ); - menu.attr( "aria-labelledby", item.attr( "id" ) ); - }); - - menus = submenus.add( this.element ); - - // Don't refresh list items that are already adapted - menus.children( ":not(.ui-menu-item):has(a)" ) - .addClass( "ui-menu-item" ) - .attr( "role", "presentation" ) - .children( "a" ) - .uniqueId() - .addClass( "ui-corner-all" ) - .attr({ - tabIndex: -1, - role: this._itemRole() - }); - - // Initialize unlinked menu-items containing spaces and/or dashes only as dividers - menus.children( ":not(.ui-menu-item)" ).each(function() { - var item = $( this ); - // hyphen, em dash, en dash - if ( !/[^\-\u2014\u2013\s]/.test( item.text() ) ) { - item.addClass( "ui-widget-content ui-menu-divider" ); - } - }); - - // Add aria-disabled attribute to any disabled menu item - menus.children( ".ui-state-disabled" ).attr( "aria-disabled", "true" ); - - // If the active item has been removed, blur the menu - if ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) { - this.blur(); - } - }, - - _itemRole: function() { - return { - menu: "menuitem", - listbox: "option" - }[ this.options.role ]; - }, - - _setOption: function( key, value ) { - if ( key === "icons" ) { - this.element.find( ".ui-menu-icon" ) - .removeClass( this.options.icons.submenu ) - .addClass( value.submenu ); - } - this._super( key, value ); - }, - - focus: function( event, item ) { - var nested, focused; - this.blur( event, event && event.type === "focus" ); - - this._scrollIntoView( item ); - - this.active = item.first(); - focused = this.active.children( "a" ).addClass( "ui-state-focus" ); - // Only update aria-activedescendant if there's a role - // otherwise we assume focus is managed elsewhere - if ( this.options.role ) { - this.element.attr( "aria-activedescendant", focused.attr( "id" ) ); - } - - // Highlight active parent menu item, if any - this.active - .parent() - .closest( ".ui-menu-item" ) - .children( "a:first" ) - .addClass( "ui-state-active" ); - - if ( event && event.type === "keydown" ) { - this._close(); - } else { - this.timer = this._delay(function() { - this._close(); - }, this.delay ); - } - - nested = item.children( ".ui-menu" ); - if ( nested.length && ( /^mouse/.test( event.type ) ) ) { - this._startOpening(nested); - } - this.activeMenu = item.parent(); - - this._trigger( "focus", event, { item: item } ); - }, - - _scrollIntoView: function( item ) { - var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight; - if ( this._hasScroll() ) { - borderTop = parseFloat( $.css( this.activeMenu[0], "borderTopWidth" ) ) || 0; - paddingTop = parseFloat( $.css( this.activeMenu[0], "paddingTop" ) ) || 0; - offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop; - scroll = this.activeMenu.scrollTop(); - elementHeight = this.activeMenu.height(); - itemHeight = item.height(); - - if ( offset < 0 ) { - this.activeMenu.scrollTop( scroll + offset ); - } else if ( offset + itemHeight > elementHeight ) { - this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight ); - } - } - }, - - blur: function( event, fromFocus ) { - if ( !fromFocus ) { - clearTimeout( this.timer ); - } - - if ( !this.active ) { - return; - } - - this.active.children( "a" ).removeClass( "ui-state-focus" ); - this.active = null; - - this._trigger( "blur", event, { item: this.active } ); - }, - - _startOpening: function( submenu ) { - clearTimeout( this.timer ); - - // Don't open if already open fixes a Firefox bug that caused a .5 pixel - // shift in the submenu position when mousing over the carat icon - if ( submenu.attr( "aria-hidden" ) !== "true" ) { - return; - } - - this.timer = this._delay(function() { - this._close(); - this._open( submenu ); - }, this.delay ); - }, - - _open: function( submenu ) { - var position = $.extend({ - of: this.active - }, this.options.position ); - - clearTimeout( this.timer ); - this.element.find( ".ui-menu" ).not( submenu.parents( ".ui-menu" ) ) - .hide() - .attr( "aria-hidden", "true" ); - - submenu - .show() - .removeAttr( "aria-hidden" ) - .attr( "aria-expanded", "true" ) - .position( position ); - }, - - collapseAll: function( event, all ) { - clearTimeout( this.timer ); - this.timer = this._delay(function() { - // If we were passed an event, look for the submenu that contains the event - var currentMenu = all ? this.element : - $( event && event.target ).closest( this.element.find( ".ui-menu" ) ); - - // If we found no valid submenu ancestor, use the main menu to close all sub menus anyway - if ( !currentMenu.length ) { - currentMenu = this.element; - } - - this._close( currentMenu ); - - this.blur( event ); - this.activeMenu = currentMenu; - }, this.delay ); - }, - - // With no arguments, closes the currently active menu - if nothing is active - // it closes all menus. If passed an argument, it will search for menus BELOW - _close: function( startMenu ) { - if ( !startMenu ) { - startMenu = this.active ? this.active.parent() : this.element; - } - - startMenu - .find( ".ui-menu" ) - .hide() - .attr( "aria-hidden", "true" ) - .attr( "aria-expanded", "false" ) - .end() - .find( "a.ui-state-active" ) - .removeClass( "ui-state-active" ); - }, - - collapse: function( event ) { - var newItem = this.active && - this.active.parent().closest( ".ui-menu-item", this.element ); - if ( newItem && newItem.length ) { - this._close(); - this.focus( event, newItem ); - } - }, - - expand: function( event ) { - var newItem = this.active && - this.active - .children( ".ui-menu " ) - .children( ".ui-menu-item" ) - .first(); - - if ( newItem && newItem.length ) { - this._open( newItem.parent() ); - - // Delay so Firefox will not hide activedescendant change in expanding submenu from AT - this._delay(function() { - this.focus( event, newItem ); - }); - } - }, - - next: function( event ) { - this._move( "next", "first", event ); - }, - - previous: function( event ) { - this._move( "prev", "last", event ); - }, - - isFirstItem: function() { - return this.active && !this.active.prevAll( ".ui-menu-item" ).length; - }, - - isLastItem: function() { - return this.active && !this.active.nextAll( ".ui-menu-item" ).length; - }, - - _move: function( direction, filter, event ) { - var next; - if ( this.active ) { - if ( direction === "first" || direction === "last" ) { - next = this.active - [ direction === "first" ? "prevAll" : "nextAll" ]( ".ui-menu-item" ) - .eq( -1 ); - } else { - next = this.active - [ direction + "All" ]( ".ui-menu-item" ) - .eq( 0 ); - } - } - if ( !next || !next.length || !this.active ) { - next = this.activeMenu.children( ".ui-menu-item" )[ filter ](); - } - - this.focus( event, next ); - }, - - nextPage: function( event ) { - var item, base, height; - - if ( !this.active ) { - this.next( event ); - return; - } - if ( this.isLastItem() ) { - return; - } - if ( this._hasScroll() ) { - base = this.active.offset().top; - height = this.element.height(); - this.active.nextAll( ".ui-menu-item" ).each(function() { - item = $( this ); - return item.offset().top - base - height < 0; - }); - - this.focus( event, item ); - } else { - this.focus( event, this.activeMenu.children( ".ui-menu-item" ) - [ !this.active ? "first" : "last" ]() ); - } - }, - - previousPage: function( event ) { - var item, base, height; - if ( !this.active ) { - this.next( event ); - return; - } - if ( this.isFirstItem() ) { - return; - } - if ( this._hasScroll() ) { - base = this.active.offset().top; - height = this.element.height(); - this.active.prevAll( ".ui-menu-item" ).each(function() { - item = $( this ); - return item.offset().top - base + height > 0; - }); - - this.focus( event, item ); - } else { - this.focus( event, this.activeMenu.children( ".ui-menu-item" ).first() ); - } - }, - - _hasScroll: function() { - return this.element.outerHeight() < this.element.prop( "scrollHeight" ); - }, - - select: function( event ) { - // TODO: It should never be possible to not have an active item at this - // point, but the tests don't trigger mouseenter before click. - this.active = this.active || $( event.target ).closest( ".ui-menu-item" ); - var ui = { item: this.active }; - if ( !this.active.has( ".ui-menu" ).length ) { - this.collapseAll( event, true ); - } - this._trigger( "select", event, ui ); - } -}); - -}( jQuery )); -(function($, undefined) { - -var dataSpace = "ui-effects-"; - -$.effects = { - effect: {} -}; - -/*! - * jQuery Color Animations v2.1.2 - * https://github.com/jquery/jquery-color - * - * Copyright 2013 jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * Date: Wed Jan 16 08:47:09 2013 -0600 - */ -(function( jQuery, undefined ) { - - var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor", - - // plusequals test for += 100 -= 100 - rplusequals = /^([\-+])=\s*(\d+\.?\d*)/, - // a set of RE's that can match strings and generate color tuples. - stringParsers = [{ - re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, - parse: function( execResult ) { - return [ - execResult[ 1 ], - execResult[ 2 ], - execResult[ 3 ], - execResult[ 4 ] - ]; - } - }, { - re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, - parse: function( execResult ) { - return [ - execResult[ 1 ] * 2.55, - execResult[ 2 ] * 2.55, - execResult[ 3 ] * 2.55, - execResult[ 4 ] - ]; - } - }, { - // this regex ignores A-F because it's compared against an already lowercased string - re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/, - parse: function( execResult ) { - return [ - parseInt( execResult[ 1 ], 16 ), - parseInt( execResult[ 2 ], 16 ), - parseInt( execResult[ 3 ], 16 ) - ]; - } - }, { - // this regex ignores A-F because it's compared against an already lowercased string - re: /#([a-f0-9])([a-f0-9])([a-f0-9])/, - parse: function( execResult ) { - return [ - parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ), - parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ), - parseInt( execResult[ 3 ] + execResult[ 3 ], 16 ) - ]; - } - }, { - re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, - space: "hsla", - parse: function( execResult ) { - return [ - execResult[ 1 ], - execResult[ 2 ] / 100, - execResult[ 3 ] / 100, - execResult[ 4 ] - ]; - } - }], - - // jQuery.Color( ) - color = jQuery.Color = function( color, green, blue, alpha ) { - return new jQuery.Color.fn.parse( color, green, blue, alpha ); - }, - spaces = { - rgba: { - props: { - red: { - idx: 0, - type: "byte" - }, - green: { - idx: 1, - type: "byte" - }, - blue: { - idx: 2, - type: "byte" - } - } - }, - - hsla: { - props: { - hue: { - idx: 0, - type: "degrees" - }, - saturation: { - idx: 1, - type: "percent" - }, - lightness: { - idx: 2, - type: "percent" - } - } - } - }, - propTypes = { - "byte": { - floor: true, - max: 255 - }, - "percent": { - max: 1 - }, - "degrees": { - mod: 360, - floor: true - } - }, - support = color.support = {}, - - // element for support tests - supportElem = jQuery( "<p>" )[ 0 ], - - // colors = jQuery.Color.names - colors, - - // local aliases of functions called often - each = jQuery.each; - -// determine rgba support immediately -supportElem.style.cssText = "background-color:rgba(1,1,1,.5)"; -support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1; - -// define cache name and alpha properties -// for rgba and hsla spaces -each( spaces, function( spaceName, space ) { - space.cache = "_" + spaceName; - space.props.alpha = { - idx: 3, - type: "percent", - def: 1 - }; -}); - -function clamp( value, prop, allowEmpty ) { - var type = propTypes[ prop.type ] || {}; - - if ( value == null ) { - return (allowEmpty || !prop.def) ? null : prop.def; - } - - // ~~ is an short way of doing floor for positive numbers - value = type.floor ? ~~value : parseFloat( value ); - - // IE will pass in empty strings as value for alpha, - // which will hit this case - if ( isNaN( value ) ) { - return prop.def; - } - - if ( type.mod ) { - // we add mod before modding to make sure that negatives values - // get converted properly: -10 -> 350 - return (value + type.mod) % type.mod; - } - - // for now all property types without mod have min and max - return 0 > value ? 0 : type.max < value ? type.max : value; -} - -function stringParse( string ) { - var inst = color(), - rgba = inst._rgba = []; - - string = string.toLowerCase(); - - each( stringParsers, function( i, parser ) { - var parsed, - match = parser.re.exec( string ), - values = match && parser.parse( match ), - spaceName = parser.space || "rgba"; - - if ( values ) { - parsed = inst[ spaceName ]( values ); - - // if this was an rgba parse the assignment might happen twice - // oh well.... - inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ]; - rgba = inst._rgba = parsed._rgba; - - // exit each( stringParsers ) here because we matched - return false; - } - }); - - // Found a stringParser that handled it - if ( rgba.length ) { - - // if this came from a parsed string, force "transparent" when alpha is 0 - // chrome, (and maybe others) return "transparent" as rgba(0,0,0,0) - if ( rgba.join() === "0,0,0,0" ) { - jQuery.extend( rgba, colors.transparent ); - } - return inst; - } - - // named colors - return colors[ string ]; -} - -color.fn = jQuery.extend( color.prototype, { - parse: function( red, green, blue, alpha ) { - if ( red === undefined ) { - this._rgba = [ null, null, null, null ]; - return this; - } - if ( red.jquery || red.nodeType ) { - red = jQuery( red ).css( green ); - green = undefined; - } - - var inst = this, - type = jQuery.type( red ), - rgba = this._rgba = []; - - // more than 1 argument specified - assume ( red, green, blue, alpha ) - if ( green !== undefined ) { - red = [ red, green, blue, alpha ]; - type = "array"; - } - - if ( type === "string" ) { - return this.parse( stringParse( red ) || colors._default ); - } - - if ( type === "array" ) { - each( spaces.rgba.props, function( key, prop ) { - rgba[ prop.idx ] = clamp( red[ prop.idx ], prop ); - }); - return this; - } - - if ( type === "object" ) { - if ( red instanceof color ) { - each( spaces, function( spaceName, space ) { - if ( red[ space.cache ] ) { - inst[ space.cache ] = red[ space.cache ].slice(); - } - }); - } else { - each( spaces, function( spaceName, space ) { - var cache = space.cache; - each( space.props, function( key, prop ) { - - // if the cache doesn't exist, and we know how to convert - if ( !inst[ cache ] && space.to ) { - - // if the value was null, we don't need to copy it - // if the key was alpha, we don't need to copy it either - if ( key === "alpha" || red[ key ] == null ) { - return; - } - inst[ cache ] = space.to( inst._rgba ); - } - - // this is the only case where we allow nulls for ALL properties. - // call clamp with alwaysAllowEmpty - inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true ); - }); - - // everything defined but alpha? - if ( inst[ cache ] && jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) { - // use the default of 1 - inst[ cache ][ 3 ] = 1; - if ( space.from ) { - inst._rgba = space.from( inst[ cache ] ); - } - } - }); - } - return this; - } - }, - is: function( compare ) { - var is = color( compare ), - same = true, - inst = this; - - each( spaces, function( _, space ) { - var localCache, - isCache = is[ space.cache ]; - if (isCache) { - localCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || []; - each( space.props, function( _, prop ) { - if ( isCache[ prop.idx ] != null ) { - same = ( isCache[ prop.idx ] === localCache[ prop.idx ] ); - return same; - } - }); - } - return same; - }); - return same; - }, - _space: function() { - var used = [], - inst = this; - each( spaces, function( spaceName, space ) { - if ( inst[ space.cache ] ) { - used.push( spaceName ); - } - }); - return used.pop(); - }, - transition: function( other, distance ) { - var end = color( other ), - spaceName = end._space(), - space = spaces[ spaceName ], - startColor = this.alpha() === 0 ? color( "transparent" ) : this, - start = startColor[ space.cache ] || space.to( startColor._rgba ), - result = start.slice(); - - end = end[ space.cache ]; - each( space.props, function( key, prop ) { - var index = prop.idx, - startValue = start[ index ], - endValue = end[ index ], - type = propTypes[ prop.type ] || {}; - - // if null, don't override start value - if ( endValue === null ) { - return; - } - // if null - use end - if ( startValue === null ) { - result[ index ] = endValue; - } else { - if ( type.mod ) { - if ( endValue - startValue > type.mod / 2 ) { - startValue += type.mod; - } else if ( startValue - endValue > type.mod / 2 ) { - startValue -= type.mod; - } - } - result[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop ); - } - }); - return this[ spaceName ]( result ); - }, - blend: function( opaque ) { - // if we are already opaque - return ourself - if ( this._rgba[ 3 ] === 1 ) { - return this; - } - - var rgb = this._rgba.slice(), - a = rgb.pop(), - blend = color( opaque )._rgba; - - return color( jQuery.map( rgb, function( v, i ) { - return ( 1 - a ) * blend[ i ] + a * v; - })); - }, - toRgbaString: function() { - var prefix = "rgba(", - rgba = jQuery.map( this._rgba, function( v, i ) { - return v == null ? ( i > 2 ? 1 : 0 ) : v; - }); - - if ( rgba[ 3 ] === 1 ) { - rgba.pop(); - prefix = "rgb("; - } - - return prefix + rgba.join() + ")"; - }, - toHslaString: function() { - var prefix = "hsla(", - hsla = jQuery.map( this.hsla(), function( v, i ) { - if ( v == null ) { - v = i > 2 ? 1 : 0; - } - - // catch 1 and 2 - if ( i && i < 3 ) { - v = Math.round( v * 100 ) + "%"; - } - return v; - }); - - if ( hsla[ 3 ] === 1 ) { - hsla.pop(); - prefix = "hsl("; - } - return prefix + hsla.join() + ")"; - }, - toHexString: function( includeAlpha ) { - var rgba = this._rgba.slice(), - alpha = rgba.pop(); - - if ( includeAlpha ) { - rgba.push( ~~( alpha * 255 ) ); - } - - return "#" + jQuery.map( rgba, function( v ) { - - // default to 0 when nulls exist - v = ( v || 0 ).toString( 16 ); - return v.length === 1 ? "0" + v : v; - }).join(""); - }, - toString: function() { - return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString(); - } -}); -color.fn.parse.prototype = color.fn; - -// hsla conversions adapted from: -// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021 - -function hue2rgb( p, q, h ) { - h = ( h + 1 ) % 1; - if ( h * 6 < 1 ) { - return p + (q - p) * h * 6; - } - if ( h * 2 < 1) { - return q; - } - if ( h * 3 < 2 ) { - return p + (q - p) * ((2/3) - h) * 6; - } - return p; -} - -spaces.hsla.to = function ( rgba ) { - if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) { - return [ null, null, null, rgba[ 3 ] ]; - } - var r = rgba[ 0 ] / 255, - g = rgba[ 1 ] / 255, - b = rgba[ 2 ] / 255, - a = rgba[ 3 ], - max = Math.max( r, g, b ), - min = Math.min( r, g, b ), - diff = max - min, - add = max + min, - l = add * 0.5, - h, s; - - if ( min === max ) { - h = 0; - } else if ( r === max ) { - h = ( 60 * ( g - b ) / diff ) + 360; - } else if ( g === max ) { - h = ( 60 * ( b - r ) / diff ) + 120; - } else { - h = ( 60 * ( r - g ) / diff ) + 240; - } - - // chroma (diff) == 0 means greyscale which, by definition, saturation = 0% - // otherwise, saturation is based on the ratio of chroma (diff) to lightness (add) - if ( diff === 0 ) { - s = 0; - } else if ( l <= 0.5 ) { - s = diff / add; - } else { - s = diff / ( 2 - add ); - } - return [ Math.round(h) % 360, s, l, a == null ? 1 : a ]; -}; - -spaces.hsla.from = function ( hsla ) { - if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) { - return [ null, null, null, hsla[ 3 ] ]; - } - var h = hsla[ 0 ] / 360, - s = hsla[ 1 ], - l = hsla[ 2 ], - a = hsla[ 3 ], - q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s, - p = 2 * l - q; - - return [ - Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ), - Math.round( hue2rgb( p, q, h ) * 255 ), - Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ), - a - ]; -}; - - -each( spaces, function( spaceName, space ) { - var props = space.props, - cache = space.cache, - to = space.to, - from = space.from; - - // makes rgba() and hsla() - color.fn[ spaceName ] = function( value ) { - - // generate a cache for this space if it doesn't exist - if ( to && !this[ cache ] ) { - this[ cache ] = to( this._rgba ); - } - if ( value === undefined ) { - return this[ cache ].slice(); - } - - var ret, - type = jQuery.type( value ), - arr = ( type === "array" || type === "object" ) ? value : arguments, - local = this[ cache ].slice(); - - each( props, function( key, prop ) { - var val = arr[ type === "object" ? key : prop.idx ]; - if ( val == null ) { - val = local[ prop.idx ]; - } - local[ prop.idx ] = clamp( val, prop ); - }); - - if ( from ) { - ret = color( from( local ) ); - ret[ cache ] = local; - return ret; - } else { - return color( local ); - } - }; - - // makes red() green() blue() alpha() hue() saturation() lightness() - each( props, function( key, prop ) { - // alpha is included in more than one space - if ( color.fn[ key ] ) { - return; - } - color.fn[ key ] = function( value ) { - var vtype = jQuery.type( value ), - fn = ( key === "alpha" ? ( this._hsla ? "hsla" : "rgba" ) : spaceName ), - local = this[ fn ](), - cur = local[ prop.idx ], - match; - - if ( vtype === "undefined" ) { - return cur; - } - - if ( vtype === "function" ) { - value = value.call( this, cur ); - vtype = jQuery.type( value ); - } - if ( value == null && prop.empty ) { - return this; - } - if ( vtype === "string" ) { - match = rplusequals.exec( value ); - if ( match ) { - value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 ); - } - } - local[ prop.idx ] = value; - return this[ fn ]( local ); - }; - }); -}); - -// add cssHook and .fx.step function for each named hook. -// accept a space separated string of properties -color.hook = function( hook ) { - var hooks = hook.split( " " ); - each( hooks, function( i, hook ) { - jQuery.cssHooks[ hook ] = { - set: function( elem, value ) { - var parsed, curElem, - backgroundColor = ""; - - if ( value !== "transparent" && ( jQuery.type( value ) !== "string" || ( parsed = stringParse( value ) ) ) ) { - value = color( parsed || value ); - if ( !support.rgba && value._rgba[ 3 ] !== 1 ) { - curElem = hook === "backgroundColor" ? elem.parentNode : elem; - while ( - (backgroundColor === "" || backgroundColor === "transparent") && - curElem && curElem.style - ) { - try { - backgroundColor = jQuery.css( curElem, "backgroundColor" ); - curElem = curElem.parentNode; - } catch ( e ) { - } - } - - value = value.blend( backgroundColor && backgroundColor !== "transparent" ? - backgroundColor : - "_default" ); - } - - value = value.toRgbaString(); - } - try { - elem.style[ hook ] = value; - } catch( e ) { - // wrapped to prevent IE from throwing errors on "invalid" values like 'auto' or 'inherit' - } - } - }; - jQuery.fx.step[ hook ] = function( fx ) { - if ( !fx.colorInit ) { - fx.start = color( fx.elem, hook ); - fx.end = color( fx.end ); - fx.colorInit = true; - } - jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) ); - }; - }); - -}; - -color.hook( stepHooks ); - -jQuery.cssHooks.borderColor = { - expand: function( value ) { - var expanded = {}; - - each( [ "Top", "Right", "Bottom", "Left" ], function( i, part ) { - expanded[ "border" + part + "Color" ] = value; - }); - return expanded; - } -}; - -// Basic color names only. -// Usage of any of the other color names requires adding yourself or including -// jquery.color.svg-names.js. -colors = jQuery.Color.names = { - // 4.1. Basic color keywords - aqua: "#00ffff", - black: "#000000", - blue: "#0000ff", - fuchsia: "#ff00ff", - gray: "#808080", - green: "#008000", - lime: "#00ff00", - maroon: "#800000", - navy: "#000080", - olive: "#808000", - purple: "#800080", - red: "#ff0000", - silver: "#c0c0c0", - teal: "#008080", - white: "#ffffff", - yellow: "#ffff00", - - // 4.2.3. "transparent" color keyword - transparent: [ null, null, null, 0 ], - - _default: "#ffffff" -}; - -})( jQuery ); - - -/******************************************************************************/ -/****************************** CLASS ANIMATIONS ******************************/ -/******************************************************************************/ -(function() { - -var classAnimationActions = [ "add", "remove", "toggle" ], - shorthandStyles = { - border: 1, - borderBottom: 1, - borderColor: 1, - borderLeft: 1, - borderRight: 1, - borderTop: 1, - borderWidth: 1, - margin: 1, - padding: 1 - }; - -$.each([ "borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle" ], function( _, prop ) { - $.fx.step[ prop ] = function( fx ) { - if ( fx.end !== "none" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) { - jQuery.style( fx.elem, prop, fx.end ); - fx.setAttr = true; - } - }; -}); - -function getElementStyles( elem ) { - var key, len, - style = elem.ownerDocument.defaultView ? - elem.ownerDocument.defaultView.getComputedStyle( elem, null ) : - elem.currentStyle, - styles = {}; - - if ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) { - len = style.length; - while ( len-- ) { - key = style[ len ]; - if ( typeof style[ key ] === "string" ) { - styles[ $.camelCase( key ) ] = style[ key ]; - } - } - // support: Opera, IE <9 - } else { - for ( key in style ) { - if ( typeof style[ key ] === "string" ) { - styles[ key ] = style[ key ]; - } - } - } - - return styles; -} - - -function styleDifference( oldStyle, newStyle ) { - var diff = {}, - name, value; - - for ( name in newStyle ) { - value = newStyle[ name ]; - if ( oldStyle[ name ] !== value ) { - if ( !shorthandStyles[ name ] ) { - if ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) { - diff[ name ] = value; - } - } - } - } - - return diff; -} - -// support: jQuery <1.8 -if ( !$.fn.addBack ) { - $.fn.addBack = function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter( selector ) - ); - }; -} - -$.effects.animateClass = function( value, duration, easing, callback ) { - var o = $.speed( duration, easing, callback ); - - return this.queue( function() { - var animated = $( this ), - baseClass = animated.attr( "class" ) || "", - applyClassChange, - allAnimations = o.children ? animated.find( "*" ).addBack() : animated; - - // map the animated objects to store the original styles. - allAnimations = allAnimations.map(function() { - var el = $( this ); - return { - el: el, - start: getElementStyles( this ) - }; - }); - - // apply class change - applyClassChange = function() { - $.each( classAnimationActions, function(i, action) { - if ( value[ action ] ) { - animated[ action + "Class" ]( value[ action ] ); - } - }); - }; - applyClassChange(); - - // map all animated objects again - calculate new styles and diff - allAnimations = allAnimations.map(function() { - this.end = getElementStyles( this.el[ 0 ] ); - this.diff = styleDifference( this.start, this.end ); - return this; - }); - - // apply original class - animated.attr( "class", baseClass ); - - // map all animated objects again - this time collecting a promise - allAnimations = allAnimations.map(function() { - var styleInfo = this, - dfd = $.Deferred(), - opts = $.extend({}, o, { - queue: false, - complete: function() { - dfd.resolve( styleInfo ); - } - }); - - this.el.animate( this.diff, opts ); - return dfd.promise(); - }); - - // once all animations have completed: - $.when.apply( $, allAnimations.get() ).done(function() { - - // set the final class - applyClassChange(); - - // for each animated element, - // clear all css properties that were animated - $.each( arguments, function() { - var el = this.el; - $.each( this.diff, function(key) { - el.css( key, "" ); - }); - }); - - // this is guarnteed to be there if you use jQuery.speed() - // it also handles dequeuing the next anim... - o.complete.call( animated[ 0 ] ); - }); - }); -}; - -$.fn.extend({ - addClass: (function( orig ) { - return function( classNames, speed, easing, callback ) { - return speed ? - $.effects.animateClass.call( this, - { add: classNames }, speed, easing, callback ) : - orig.apply( this, arguments ); - }; - })( $.fn.addClass ), - - removeClass: (function( orig ) { - return function( classNames, speed, easing, callback ) { - return arguments.length > 1 ? - $.effects.animateClass.call( this, - { remove: classNames }, speed, easing, callback ) : - orig.apply( this, arguments ); - }; - })( $.fn.removeClass ), - - toggleClass: (function( orig ) { - return function( classNames, force, speed, easing, callback ) { - if ( typeof force === "boolean" || force === undefined ) { - if ( !speed ) { - // without speed parameter - return orig.apply( this, arguments ); - } else { - return $.effects.animateClass.call( this, - (force ? { add: classNames } : { remove: classNames }), - speed, easing, callback ); - } - } else { - // without force parameter - return $.effects.animateClass.call( this, - { toggle: classNames }, force, speed, easing ); - } - }; - })( $.fn.toggleClass ), - - switchClass: function( remove, add, speed, easing, callback) { - return $.effects.animateClass.call( this, { - add: add, - remove: remove - }, speed, easing, callback ); - } -}); - -})(); - -/******************************************************************************/ -/*********************************** EFFECTS **********************************/ -/******************************************************************************/ - -(function() { - -$.extend( $.effects, { - version: "1.10.3", - - // Saves a set of properties in a data storage - save: function( element, set ) { - for( var i=0; i < set.length; i++ ) { - if ( set[ i ] !== null ) { - element.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] ); - } - } - }, - - // Restores a set of previously saved properties from a data storage - restore: function( element, set ) { - var val, i; - for( i=0; i < set.length; i++ ) { - if ( set[ i ] !== null ) { - val = element.data( dataSpace + set[ i ] ); - // support: jQuery 1.6.2 - // http://bugs.jquery.com/ticket/9917 - // jQuery 1.6.2 incorrectly returns undefined for any falsy value. - // We can't differentiate between "" and 0 here, so we just assume - // empty string since it's likely to be a more common value... - if ( val === undefined ) { - val = ""; - } - element.css( set[ i ], val ); - } - } - }, - - setMode: function( el, mode ) { - if (mode === "toggle") { - mode = el.is( ":hidden" ) ? "show" : "hide"; - } - return mode; - }, - - // Translates a [top,left] array into a baseline value - // this should be a little more flexible in the future to handle a string & hash - getBaseline: function( origin, original ) { - var y, x; - switch ( origin[ 0 ] ) { - case "top": y = 0; break; - case "middle": y = 0.5; break; - case "bottom": y = 1; break; - default: y = origin[ 0 ] / original.height; - } - switch ( origin[ 1 ] ) { - case "left": x = 0; break; - case "center": x = 0.5; break; - case "right": x = 1; break; - default: x = origin[ 1 ] / original.width; - } - return { - x: x, - y: y - }; - }, - - // Wraps the element around a wrapper that copies position properties - createWrapper: function( element ) { - - // if the element is already wrapped, return it - if ( element.parent().is( ".ui-effects-wrapper" )) { - return element.parent(); - } - - // wrap the element - var props = { - width: element.outerWidth(true), - height: element.outerHeight(true), - "float": element.css( "float" ) - }, - wrapper = $( "<div></div>" ) - .addClass( "ui-effects-wrapper" ) - .css({ - fontSize: "100%", - background: "transparent", - border: "none", - margin: 0, - padding: 0 - }), - // Store the size in case width/height are defined in % - Fixes #5245 - size = { - width: element.width(), - height: element.height() - }, - active = document.activeElement; - - // support: Firefox - // Firefox incorrectly exposes anonymous content - // https://bugzilla.mozilla.org/show_bug.cgi?id=561664 - try { - active.id; - } catch( e ) { - active = document.body; - } - - element.wrap( wrapper ); - - // Fixes #7595 - Elements lose focus when wrapped. - if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { - $( active ).focus(); - } - - wrapper = element.parent(); //Hotfix for jQuery 1.4 since some change in wrap() seems to actually lose the reference to the wrapped element - - // transfer positioning properties to the wrapper - if ( element.css( "position" ) === "static" ) { - wrapper.css({ position: "relative" }); - element.css({ position: "relative" }); - } else { - $.extend( props, { - position: element.css( "position" ), - zIndex: element.css( "z-index" ) - }); - $.each([ "top", "left", "bottom", "right" ], function(i, pos) { - props[ pos ] = element.css( pos ); - if ( isNaN( parseInt( props[ pos ], 10 ) ) ) { - props[ pos ] = "auto"; - } - }); - element.css({ - position: "relative", - top: 0, - left: 0, - right: "auto", - bottom: "auto" - }); - } - element.css(size); - - return wrapper.css( props ).show(); - }, - - removeWrapper: function( element ) { - var active = document.activeElement; - - if ( element.parent().is( ".ui-effects-wrapper" ) ) { - element.parent().replaceWith( element ); - - // Fixes #7595 - Elements lose focus when wrapped. - if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { - $( active ).focus(); - } - } - - - return element; - }, - - setTransition: function( element, list, factor, value ) { - value = value || {}; - $.each( list, function( i, x ) { - var unit = element.cssUnit( x ); - if ( unit[ 0 ] > 0 ) { - value[ x ] = unit[ 0 ] * factor + unit[ 1 ]; - } - }); - return value; - } -}); - -// return an effect options object for the given parameters: -function _normalizeArguments( effect, options, speed, callback ) { - - // allow passing all options as the first parameter - if ( $.isPlainObject( effect ) ) { - options = effect; - effect = effect.effect; - } - - // convert to an object - effect = { effect: effect }; - - // catch (effect, null, ...) - if ( options == null ) { - options = {}; - } - - // catch (effect, callback) - if ( $.isFunction( options ) ) { - callback = options; - speed = null; - options = {}; - } - - // catch (effect, speed, ?) - if ( typeof options === "number" || $.fx.speeds[ options ] ) { - callback = speed; - speed = options; - options = {}; - } - - // catch (effect, options, callback) - if ( $.isFunction( speed ) ) { - callback = speed; - speed = null; - } - - // add options to effect - if ( options ) { - $.extend( effect, options ); - } - - speed = speed || options.duration; - effect.duration = $.fx.off ? 0 : - typeof speed === "number" ? speed : - speed in $.fx.speeds ? $.fx.speeds[ speed ] : - $.fx.speeds._default; - - effect.complete = callback || options.complete; - - return effect; -} - -function standardAnimationOption( option ) { - // Valid standard speeds (nothing, number, named speed) - if ( !option || typeof option === "number" || $.fx.speeds[ option ] ) { - return true; - } - - // Invalid strings - treat as "normal" speed - if ( typeof option === "string" && !$.effects.effect[ option ] ) { - return true; - } - - // Complete callback - if ( $.isFunction( option ) ) { - return true; - } - - // Options hash (but not naming an effect) - if ( typeof option === "object" && !option.effect ) { - return true; - } - - // Didn't match any standard API - return false; -} - -$.fn.extend({ - effect: function( /* effect, options, speed, callback */ ) { - var args = _normalizeArguments.apply( this, arguments ), - mode = args.mode, - queue = args.queue, - effectMethod = $.effects.effect[ args.effect ]; - - if ( $.fx.off || !effectMethod ) { - // delegate to the original method (e.g., .show()) if possible - if ( mode ) { - return this[ mode ]( args.duration, args.complete ); - } else { - return this.each( function() { - if ( args.complete ) { - args.complete.call( this ); - } - }); - } - } - - function run( next ) { - var elem = $( this ), - complete = args.complete, - mode = args.mode; - - function done() { - if ( $.isFunction( complete ) ) { - complete.call( elem[0] ); - } - if ( $.isFunction( next ) ) { - next(); - } - } - - // If the element already has the correct final state, delegate to - // the core methods so the internal tracking of "olddisplay" works. - if ( elem.is( ":hidden" ) ? mode === "hide" : mode === "show" ) { - elem[ mode ](); - done(); - } else { - effectMethod.call( elem[0], args, done ); - } - } - - return queue === false ? this.each( run ) : this.queue( queue || "fx", run ); - }, - - show: (function( orig ) { - return function( option ) { - if ( standardAnimationOption( option ) ) { - return orig.apply( this, arguments ); - } else { - var args = _normalizeArguments.apply( this, arguments ); - args.mode = "show"; - return this.effect.call( this, args ); - } - }; - })( $.fn.show ), - - hide: (function( orig ) { - return function( option ) { - if ( standardAnimationOption( option ) ) { - return orig.apply( this, arguments ); - } else { - var args = _normalizeArguments.apply( this, arguments ); - args.mode = "hide"; - return this.effect.call( this, args ); - } - }; - })( $.fn.hide ), - - toggle: (function( orig ) { - return function( option ) { - if ( standardAnimationOption( option ) || typeof option === "boolean" ) { - return orig.apply( this, arguments ); - } else { - var args = _normalizeArguments.apply( this, arguments ); - args.mode = "toggle"; - return this.effect.call( this, args ); - } - }; - })( $.fn.toggle ), - - // helper functions - cssUnit: function(key) { - var style = this.css( key ), - val = []; - - $.each( [ "em", "px", "%", "pt" ], function( i, unit ) { - if ( style.indexOf( unit ) > 0 ) { - val = [ parseFloat( style ), unit ]; - } - }); - return val; - } -}); - -})(); - -/******************************************************************************/ -/*********************************** EASING ***********************************/ -/******************************************************************************/ - -(function() { - -// based on easing equations from Robert Penner (http://www.robertpenner.com/easing) - -var baseEasings = {}; - -$.each( [ "Quad", "Cubic", "Quart", "Quint", "Expo" ], function( i, name ) { - baseEasings[ name ] = function( p ) { - return Math.pow( p, i + 2 ); - }; -}); - -$.extend( baseEasings, { - Sine: function ( p ) { - return 1 - Math.cos( p * Math.PI / 2 ); - }, - Circ: function ( p ) { - return 1 - Math.sqrt( 1 - p * p ); - }, - Elastic: function( p ) { - return p === 0 || p === 1 ? p : - -Math.pow( 2, 8 * (p - 1) ) * Math.sin( ( (p - 1) * 80 - 7.5 ) * Math.PI / 15 ); - }, - Back: function( p ) { - return p * p * ( 3 * p - 2 ); - }, - Bounce: function ( p ) { - var pow2, - bounce = 4; - - while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {} - return 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 ); - } -}); - -$.each( baseEasings, function( name, easeIn ) { - $.easing[ "easeIn" + name ] = easeIn; - $.easing[ "easeOut" + name ] = function( p ) { - return 1 - easeIn( 1 - p ); - }; - $.easing[ "easeInOut" + name ] = function( p ) { - return p < 0.5 ? - easeIn( p * 2 ) / 2 : - 1 - easeIn( p * -2 + 2 ) / 2; - }; -}); - -})(); - -})(jQuery); -(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); -(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); -(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); -(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); -(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); -(function( $, undefined ) { - -$.effects.effect.fade = function( o, done ) { - var el = $( this ), - mode = $.effects.setMode( el, o.mode || "toggle" ); - - el.animate({ - opacity: mode - }, { - queue: false, - duration: o.duration, - easing: o.easing, - complete: done - }); -}; - -})( jQuery ); -(function( $, undefined ) { - -$.effects.effect.fold = 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", - hide = mode === "hide", - size = o.size || 15, - percent = /([0-9]+)%/.exec( size ), - horizFirst = !!o.horizFirst, - widthFirst = show !== horizFirst, - ref = widthFirst ? [ "width", "height" ] : [ "height", "width" ], - duration = o.duration / 2, - wrapper, distance, - animation1 = {}, - animation2 = {}; - - $.effects.save( el, props ); - el.show(); - - // Create Wrapper - wrapper = $.effects.createWrapper( el ).css({ - overflow: "hidden" - }); - distance = widthFirst ? - [ wrapper.width(), wrapper.height() ] : - [ wrapper.height(), wrapper.width() ]; - - if ( percent ) { - size = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ]; - } - if ( show ) { - wrapper.css( horizFirst ? { - height: 0, - width: size - } : { - height: size, - width: 0 - }); - } - - // Animation - animation1[ ref[ 0 ] ] = show ? distance[ 0 ] : size; - animation2[ ref[ 1 ] ] = show ? distance[ 1 ] : 0; - - // Animate - wrapper - .animate( animation1, duration, o.easing ) - .animate( animation2, duration, o.easing, function() { - if ( hide ) { - el.hide(); - } - $.effects.restore( el, props ); - $.effects.removeWrapper( el ); - done(); - }); - -}; - -})(jQuery); -(function( $, undefined ) { - -$.effects.effect.highlight = function( o, done ) { - var elem = $( this ), - props = [ "backgroundImage", "backgroundColor", "opacity" ], - mode = $.effects.setMode( elem, o.mode || "show" ), - animation = { - backgroundColor: elem.css( "backgroundColor" ) - }; - - if (mode === "hide") { - animation.opacity = 0; - } - - $.effects.save( elem, props ); - - elem - .show() - .css({ - backgroundImage: "none", - backgroundColor: o.color || "#ffff99" - }) - .animate( animation, { - queue: false, - duration: o.duration, - easing: o.easing, - complete: function() { - if ( mode === "hide" ) { - elem.hide(); - } - $.effects.restore( elem, props ); - done(); - } - }); -}; - -})(jQuery); -(function( $, undefined ) { - -$.effects.effect.pulsate = function( o, done ) { - var elem = $( this ), - mode = $.effects.setMode( elem, o.mode || "show" ), - show = mode === "show", - hide = mode === "hide", - showhide = ( show || mode === "hide" ), - - // showing or hiding leaves of the "last" animation - anims = ( ( o.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ), - duration = o.duration / anims, - animateTo = 0, - queue = elem.queue(), - queuelen = queue.length, - i; - - if ( show || !elem.is(":visible")) { - elem.css( "opacity", 0 ).show(); - animateTo = 1; - } - - // anims - 1 opacity "toggles" - for ( i = 1; i < anims; i++ ) { - elem.animate({ - opacity: animateTo - }, duration, o.easing ); - animateTo = 1 - animateTo; - } - - elem.animate({ - opacity: animateTo - }, duration, o.easing); - - elem.queue(function() { - if ( hide ) { - elem.hide(); - } - done(); - }); - - // We just queued up "anims" animations, we need to put them next in the queue - if ( queuelen > 1 ) { - queue.splice.apply( queue, - [ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) ); - } - elem.dequeue(); -}; - -})(jQuery); -(function( $, undefined ) { - -$.effects.effect.puff = function( o, done ) { - var elem = $( this ), - mode = $.effects.setMode( elem, o.mode || "hide" ), - hide = mode === "hide", - percent = parseInt( o.percent, 10 ) || 150, - factor = percent / 100, - original = { - height: elem.height(), - width: elem.width(), - outerHeight: elem.outerHeight(), - outerWidth: elem.outerWidth() - }; - - $.extend( o, { - effect: "scale", - queue: false, - fade: true, - mode: mode, - complete: done, - percent: hide ? percent : 100, - from: hide ? - original : - { - height: original.height * factor, - width: original.width * factor, - outerHeight: original.outerHeight * factor, - outerWidth: original.outerWidth * factor - } - }); - - elem.effect( o ); -}; - -$.effects.effect.scale = function( o, done ) { - - // Create element - var el = $( this ), - options = $.extend( true, {}, o ), - mode = $.effects.setMode( el, o.mode || "effect" ), - percent = parseInt( o.percent, 10 ) || - ( parseInt( o.percent, 10 ) === 0 ? 0 : ( mode === "hide" ? 0 : 100 ) ), - direction = o.direction || "both", - origin = o.origin, - original = { - height: el.height(), - width: el.width(), - outerHeight: el.outerHeight(), - outerWidth: el.outerWidth() - }, - factor = { - y: direction !== "horizontal" ? (percent / 100) : 1, - x: direction !== "vertical" ? (percent / 100) : 1 - }; - - // We are going to pass this effect to the size effect: - options.effect = "size"; - options.queue = false; - options.complete = done; - - // Set default origin and restore for show/hide - if ( mode !== "effect" ) { - options.origin = origin || ["middle","center"]; - options.restore = true; - } - - options.from = o.from || ( mode === "show" ? { - height: 0, - width: 0, - outerHeight: 0, - outerWidth: 0 - } : original ); - options.to = { - height: original.height * factor.y, - width: original.width * factor.x, - outerHeight: original.outerHeight * factor.y, - outerWidth: original.outerWidth * factor.x - }; - - // Fade option to support puff - if ( options.fade ) { - if ( mode === "show" ) { - options.from.opacity = 0; - options.to.opacity = 1; - } - if ( mode === "hide" ) { - options.from.opacity = 1; - options.to.opacity = 0; - } - } - - // Animate - el.effect( options ); - -}; - -$.effects.effect.size = function( o, done ) { - - // Create element - var original, baseline, factor, - el = $( this ), - props0 = [ "position", "top", "bottom", "left", "right", "width", "height", "overflow", "opacity" ], - - // Always restore - props1 = [ "position", "top", "bottom", "left", "right", "overflow", "opacity" ], - - // Copy for children - props2 = [ "width", "height", "overflow" ], - cProps = [ "fontSize" ], - vProps = [ "borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom" ], - hProps = [ "borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight" ], - - // Set options - mode = $.effects.setMode( el, o.mode || "effect" ), - restore = o.restore || mode !== "effect", - scale = o.scale || "both", - origin = o.origin || [ "middle", "center" ], - position = el.css( "position" ), - props = restore ? props0 : props1, - zero = { - height: 0, - width: 0, - outerHeight: 0, - outerWidth: 0 - }; - - if ( mode === "show" ) { - el.show(); - } - original = { - height: el.height(), - width: el.width(), - outerHeight: el.outerHeight(), - outerWidth: el.outerWidth() - }; - - if ( o.mode === "toggle" && mode === "show" ) { - el.from = o.to || zero; - el.to = o.from || original; - } else { - el.from = o.from || ( mode === "show" ? zero : original ); - el.to = o.to || ( mode === "hide" ? zero : original ); - } - - // Set scaling factor - factor = { - from: { - y: el.from.height / original.height, - x: el.from.width / original.width - }, - to: { - y: el.to.height / original.height, - x: el.to.width / original.width - } - }; - - // Scale the css box - if ( scale === "box" || scale === "both" ) { - - // Vertical props scaling - if ( factor.from.y !== factor.to.y ) { - props = props.concat( vProps ); - el.from = $.effects.setTransition( el, vProps, factor.from.y, el.from ); - el.to = $.effects.setTransition( el, vProps, factor.to.y, el.to ); - } - - // Horizontal props scaling - if ( factor.from.x !== factor.to.x ) { - props = props.concat( hProps ); - el.from = $.effects.setTransition( el, hProps, factor.from.x, el.from ); - el.to = $.effects.setTransition( el, hProps, factor.to.x, el.to ); - } - } - - // Scale the content - if ( scale === "content" || scale === "both" ) { - - // Vertical props scaling - if ( factor.from.y !== factor.to.y ) { - props = props.concat( cProps ).concat( props2 ); - el.from = $.effects.setTransition( el, cProps, factor.from.y, el.from ); - el.to = $.effects.setTransition( el, cProps, factor.to.y, el.to ); - } - } - - $.effects.save( el, props ); - el.show(); - $.effects.createWrapper( el ); - el.css( "overflow", "hidden" ).css( el.from ); - - // Adjust - if (origin) { // Calculate baseline shifts - baseline = $.effects.getBaseline( origin, original ); - el.from.top = ( original.outerHeight - el.outerHeight() ) * baseline.y; - el.from.left = ( original.outerWidth - el.outerWidth() ) * baseline.x; - el.to.top = ( original.outerHeight - el.to.outerHeight ) * baseline.y; - el.to.left = ( original.outerWidth - el.to.outerWidth ) * baseline.x; - } - el.css( el.from ); // set top & left - - // Animate - if ( scale === "content" || scale === "both" ) { // Scale the children - - // Add margins/font-size - vProps = vProps.concat([ "marginTop", "marginBottom" ]).concat(cProps); - hProps = hProps.concat([ "marginLeft", "marginRight" ]); - props2 = props0.concat(vProps).concat(hProps); - - el.find( "*[width]" ).each( function(){ - var child = $( this ), - c_original = { - height: child.height(), - width: child.width(), - outerHeight: child.outerHeight(), - outerWidth: child.outerWidth() - }; - if (restore) { - $.effects.save(child, props2); - } - - child.from = { - height: c_original.height * factor.from.y, - width: c_original.width * factor.from.x, - outerHeight: c_original.outerHeight * factor.from.y, - outerWidth: c_original.outerWidth * factor.from.x - }; - child.to = { - height: c_original.height * factor.to.y, - width: c_original.width * factor.to.x, - outerHeight: c_original.height * factor.to.y, - outerWidth: c_original.width * factor.to.x - }; - - // Vertical props scaling - if ( factor.from.y !== factor.to.y ) { - child.from = $.effects.setTransition( child, vProps, factor.from.y, child.from ); - child.to = $.effects.setTransition( child, vProps, factor.to.y, child.to ); - } - - // Horizontal props scaling - if ( factor.from.x !== factor.to.x ) { - child.from = $.effects.setTransition( child, hProps, factor.from.x, child.from ); - child.to = $.effects.setTransition( child, hProps, factor.to.x, child.to ); - } - - // Animate children - child.css( child.from ); - child.animate( child.to, o.duration, o.easing, function() { - - // Restore children - if ( restore ) { - $.effects.restore( child, props2 ); - } - }); - }); - } - - // Animate - el.animate( el.to, { - queue: false, - duration: o.duration, - easing: o.easing, - complete: function() { - if ( el.to.opacity === 0 ) { - el.css( "opacity", el.from.opacity ); - } - if( mode === "hide" ) { - el.hide(); - } - $.effects.restore( el, props ); - if ( !restore ) { - - // we need to calculate our new positioning based on the scaling - if ( position === "static" ) { - el.css({ - position: "relative", - top: el.to.top, - left: el.to.left - }); - } else { - $.each([ "top", "left" ], function( idx, pos ) { - el.css( pos, function( _, str ) { - var val = parseInt( str, 10 ), - toRef = idx ? el.to.left : el.to.top; - - // if original was "auto", recalculate the new value from wrapper - if ( str === "auto" ) { - return toRef + "px"; - } - - return val + toRef + "px"; - }); - }); - } - } - - $.effects.removeWrapper( el ); - done(); - } - }); - -}; - -})(jQuery); -(function( $, undefined ) { - -$.effects.effect.shake = function( o, done ) { - - var el = $( this ), - props = [ "position", "top", "bottom", "left", "right", "height", "width" ], - mode = $.effects.setMode( el, o.mode || "effect" ), - direction = o.direction || "left", - distance = o.distance || 20, - times = o.times || 3, - anims = times * 2 + 1, - speed = Math.round(o.duration/anims), - ref = (direction === "up" || direction === "down") ? "top" : "left", - positiveMotion = (direction === "up" || direction === "left"), - animation = {}, - animation1 = {}, - animation2 = {}, - i, - - // we will need to re-assemble the queue to stack our animations in place - queue = el.queue(), - queuelen = queue.length; - - $.effects.save( el, props ); - el.show(); - $.effects.createWrapper( el ); - - // Animation - animation[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance; - animation1[ ref ] = ( positiveMotion ? "+=" : "-=" ) + distance * 2; - animation2[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance * 2; - - // Animate - el.animate( animation, speed, o.easing ); - - // Shakes - for ( i = 1; i < times; i++ ) { - el.animate( animation1, speed, o.easing ).animate( animation2, speed, o.easing ); - } - el - .animate( animation1, speed, o.easing ) - .animate( animation, speed / 2, o.easing ) - .queue(function() { - if ( mode === "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); -(function( $, undefined ) { - -$.effects.effect.slide = function( o, done ) { - - // Create element - var el = $( this ), - props = [ "position", "top", "bottom", "left", "right", "width", "height" ], - mode = $.effects.setMode( el, o.mode || "show" ), - show = mode === "show", - direction = o.direction || "left", - ref = (direction === "up" || direction === "down") ? "top" : "left", - positiveMotion = (direction === "up" || direction === "left"), - distance, - animation = {}; - - // Adjust - $.effects.save( el, props ); - el.show(); - distance = o.distance || el[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ); - - $.effects.createWrapper( el ).css({ - overflow: "hidden" - }); - - if ( show ) { - el.css( ref, positiveMotion ? (isNaN(distance) ? "-" + distance : -distance) : distance ); - } - - // Animation - animation[ ref ] = ( show ? - ( positiveMotion ? "+=" : "-=") : - ( positiveMotion ? "-=" : "+=")) + - 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); -(function( $, undefined ) { - -$.effects.effect.transfer = function( o, done ) { - var elem = $( this ), - target = $( o.to ), - targetFixed = target.css( "position" ) === "fixed", - body = $("body"), - fixTop = targetFixed ? body.scrollTop() : 0, - fixLeft = targetFixed ? body.scrollLeft() : 0, - endPosition = target.offset(), - animation = { - top: endPosition.top - fixTop , - left: endPosition.left - fixLeft , - height: target.innerHeight(), - width: target.innerWidth() - }, - startPosition = elem.offset(), - transfer = $( "<div class='ui-effects-transfer'></div>" ) - .appendTo( document.body ) - .addClass( o.className ) - .css({ - top: startPosition.top - fixTop , - left: startPosition.left - fixLeft , - height: elem.innerHeight(), - width: elem.innerWidth(), - position: targetFixed ? "fixed" : "absolute" - }) - .animate( animation, o.duration, o.easing, function() { - transfer.remove(); - done(); - }); -}; - -})(jQuery); diff --git a/assets/plugins/jQueryUI/jquery-ui-1.10.3.min.js b/assets/plugins/jQueryUI/jquery-ui-1.10.3.min.js deleted file mode 100644 index 3a7bfd51..00000000 --- a/assets/plugins/jQueryUI/jquery-ui-1.10.3.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! jQuery UI - v1.10.3 - 2013-12-25 -* http://jqueryui.com -* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.position.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.sortable.js, jquery.ui.autocomplete.js, jquery.ui.menu.js, jquery.ui.effect.js, jquery.ui.effect-blind.js, jquery.ui.effect-bounce.js, jquery.ui.effect-clip.js, jquery.ui.effect-drop.js, jquery.ui.effect-explode.js, jquery.ui.effect-fade.js, jquery.ui.effect-fold.js, jquery.ui.effect-highlight.js, jquery.ui.effect-pulsate.js, jquery.ui.effect-scale.js, jquery.ui.effect-shake.js, jquery.ui.effect-slide.js, jquery.ui.effect-transfer.js -* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ - -(function(e,t){function i(t,i){var s,n,r,o=t.nodeName.toLowerCase();return"area"===o?(s=t.parentNode,n=s.name,t.href&&n&&"map"===s.nodeName.toLowerCase()?(r=e("img[usemap=#"+n+"]")[0],!!r&&a(r)):!1):(/input|select|textarea|button|object/.test(o)?!t.disabled:"a"===o?t.href||i:i)&&a(t)}function a(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}var s=0,n=/^ui-id-\d+$/;e.ui=e.ui||{},e.extend(e.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}}),e.fn.extend({focus:function(t){return function(i,a){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),a&&a.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),scrollParent:function(){var t;return t=e.ui.ie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(e.css(this,"position"))&&/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!t.length?e(document):t},zIndex:function(i){if(i!==t)return this.css("zIndex",i);if(this.length)for(var a,s,n=e(this[0]);n.length&&n[0]!==document;){if(a=n.css("position"),("absolute"===a||"relative"===a||"fixed"===a)&&(s=parseInt(n.css("zIndex"),10),!isNaN(s)&&0!==s))return s;n=n.parent()}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++s)})},removeUniqueId:function(){return this.each(function(){n.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,a){return!!e.data(t,a[3])},focusable:function(t){return i(t,!isNaN(e.attr(t,"tabindex")))},tabbable:function(t){var a=e.attr(t,"tabindex"),s=isNaN(a);return(s||a>=0)&&i(t,!s)}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(i,a){function s(t,i,a,s){return e.each(n,function(){i-=parseFloat(e.css(t,"padding"+this))||0,a&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),s&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var n="Width"===a?["Left","Right"]:["Top","Bottom"],r=a.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+a]=function(i){return i===t?o["inner"+a].call(this):this.each(function(){e(this).css(r,s(this,i)+"px")})},e.fn["outer"+a]=function(t,i){return"number"!=typeof t?o["outer"+a].call(this,t):this.each(function(){e(this).css(r,s(this,t,!0,i)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.support.selectstart="onselectstart"in document.createElement("div"),e.fn.extend({disableSelection:function(){return this.bind((e.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),e.extend(e.ui,{plugin:{add:function(t,i,a){var s,n=e.ui[t].prototype;for(s in a)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([i,a[s]])},call:function(e,t,i){var a,s=e.plugins[t];if(s&&e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType)for(a=0;s.length>a;a++)e.options[s[a][0]]&&s[a][1].apply(e.element,i)}},hasScroll:function(t,i){if("hidden"===e(t).css("overflow"))return!1;var a=i&&"left"===i?"scrollLeft":"scrollTop",s=!1;return t[a]>0?!0:(t[a]=1,s=t[a]>0,t[a]=0,s)}})})(jQuery);(function(e,t){var i=0,s=Array.prototype.slice,a=e.cleanData;e.cleanData=function(t){for(var i,s=0;null!=(i=t[s]);s++)try{e(i).triggerHandler("remove")}catch(n){}a(t)},e.widget=function(i,s,a){var n,r,o,h,l={},u=i.split(".")[0];i=i.split(".")[1],n=u+"-"+i,a||(a=s,s=e.Widget),e.expr[":"][n.toLowerCase()]=function(t){return!!e.data(t,n)},e[u]=e[u]||{},r=e[u][i],o=e[u][i]=function(e,i){return this._createWidget?(arguments.length&&this._createWidget(e,i),t):new o(e,i)},e.extend(o,r,{version:a.version,_proto:e.extend({},a),_childConstructors:[]}),h=new s,h.options=e.widget.extend({},h.options),e.each(a,function(i,a){return e.isFunction(a)?(l[i]=function(){var e=function(){return s.prototype[i].apply(this,arguments)},t=function(e){return s.prototype[i].apply(this,e)};return function(){var i,s=this._super,n=this._superApply;return this._super=e,this._superApply=t,i=a.apply(this,arguments),this._super=s,this._superApply=n,i}}(),t):(l[i]=a,t)}),o.prototype=e.widget.extend(h,{widgetEventPrefix:r?h.widgetEventPrefix:i},l,{constructor:o,namespace:u,widgetName:i,widgetFullName:n}),r?(e.each(r._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete r._childConstructors):s._childConstructors.push(o),e.widget.bridge(i,o)},e.widget.extend=function(i){for(var a,n,r=s.call(arguments,1),o=0,h=r.length;h>o;o++)for(a in r[o])n=r[o][a],r[o].hasOwnProperty(a)&&n!==t&&(i[a]=e.isPlainObject(n)?e.isPlainObject(i[a])?e.widget.extend({},i[a],n):e.widget.extend({},n):n);return i},e.widget.bridge=function(i,a){var n=a.prototype.widgetFullName||i;e.fn[i]=function(r){var o="string"==typeof r,h=s.call(arguments,1),l=this;return r=!o&&h.length?e.widget.extend.apply(null,[r].concat(h)):r,o?this.each(function(){var s,a=e.data(this,n);return a?e.isFunction(a[r])&&"_"!==r.charAt(0)?(s=a[r].apply(a,h),s!==a&&s!==t?(l=s&&s.jquery?l.pushStack(s.get()):s,!1):t):e.error("no such method '"+r+"' for "+i+" widget instance"):e.error("cannot call methods on "+i+" prior to initialization; "+"attempted to call method '"+r+"'")}):this.each(function(){var t=e.data(this,n);t?t.option(r||{})._init():e.data(this,n,new a(r,this))}),l}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,s){s=e(s||this.defaultElement||this)[0],this.element=e(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this.bindings=e(),this.hoverable=e(),this.focusable=e(),s!==this&&(e.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===s&&this.destroy()}}),this.document=e(s.style?s.ownerDocument:s.document||s),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(i,s){var a,n,r,o=i;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof i)if(o={},a=i.split("."),i=a.shift(),a.length){for(n=o[i]=e.widget.extend({},this.options[i]),r=0;a.length-1>r;r++)n[a[r]]=n[a[r]]||{},n=n[a[r]];if(i=a.pop(),s===t)return n[i]===t?null:n[i];n[i]=s}else{if(s===t)return this.options[i]===t?null:this.options[i];o[i]=s}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!t).attr("aria-disabled",t),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_on:function(i,s,a){var n,r=this;"boolean"!=typeof i&&(a=s,s=i,i=!1),a?(s=n=e(s),this.bindings=this.bindings.add(s)):(a=s,s=this.element,n=this.widget()),e.each(a,function(a,o){function h(){return i||r.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof o?r[o]:o).apply(r,arguments):t}"string"!=typeof o&&(h.guid=o.guid=o.guid||h.guid||e.guid++);var l=a.match(/^(\w+)\s*(.*)$/),u=l[1]+r.eventNamespace,c=l[2];c?n.delegate(c,u,h):s.bind(u,h)})},_off:function(e,t){t=(t||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.unbind(t).undelegate(t)},_delay:function(e,t){function i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,s){var a,n,r=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],n=i.originalEvent)for(a in n)a in i||(i[a]=n[a]);return this.element.trigger(i,s),!(e.isFunction(r)&&r.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,a,n){"string"==typeof a&&(a={effect:a});var r,o=a?a===!0||"number"==typeof a?i:a.effect||i:t;a=a||{},"number"==typeof a&&(a={duration:a}),r=!e.isEmptyObject(a),a.complete=n,a.delay&&s.delay(a.delay),r&&e.effects&&e.effects.effect[o]?s[t](a):o!==t&&s[o]?s[o](a.duration,a.easing,n):s.queue(function(i){e(this)[t](),n&&n.call(s[0]),i()})}})})(jQuery);(function(e){var t=!1;e(document).mouseup(function(){t=!1}),e.widget("ui.mouse",{version:"1.10.3",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(i){return!0===e.data(i.target,t.widgetName+".preventClickEvent")?(e.removeData(i.target,t.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):undefined}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(i){if(!t){this._mouseStarted&&this._mouseUp(i),this._mouseDownEvent=i;var s=this,a=1===i.which,n="string"==typeof this.options.cancel&&i.target.nodeName?e(i.target).closest(this.options.cancel).length:!1;return a&&!n&&this._mouseCapture(i)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){s.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(i)&&this._mouseDelayMet(i)&&(this._mouseStarted=this._mouseStart(i)!==!1,!this._mouseStarted)?(i.preventDefault(),!0):(!0===e.data(i.target,this.widgetName+".preventClickEvent")&&e.removeData(i.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return s._mouseMove(e)},this._mouseUpDelegate=function(e){return s._mouseUp(e)},e(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),i.preventDefault(),t=!0,!0)):!0}},_mouseMove:function(t){return e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button?this._mouseUp(t):this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}})})(jQuery);(function(e,t){function i(e,t,i){return[parseFloat(e[0])*(p.test(e[0])?t/100:1),parseFloat(e[1])*(p.test(e[1])?i/100:1)]}function s(t,i){return parseInt(e.css(t,i),10)||0}function a(t){var i=t[0];return 9===i.nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:e.isWindow(i)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()}}e.ui=e.ui||{};var n,r=Math.max,o=Math.abs,h=Math.round,l=/left|center|right/,u=/top|center|bottom/,c=/[\+\-]\d+(\.[\d]+)?%?/,d=/^\w+/,p=/%$/,f=e.fn.position;e.position={scrollbarWidth:function(){if(n!==t)return n;var i,s,a=e("<div style='display:block;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),r=a.children()[0];return e("body").append(a),i=r.offsetWidth,a.css("overflow","scroll"),s=r.offsetWidth,i===s&&(s=a[0].clientWidth),a.remove(),n=i-s},getScrollInfo:function(t){var i=t.isWindow?"":t.element.css("overflow-x"),s=t.isWindow?"":t.element.css("overflow-y"),a="scroll"===i||"auto"===i&&t.width<t.element[0].scrollWidth,n="scroll"===s||"auto"===s&&t.height<t.element[0].scrollHeight;return{width:n?e.position.scrollbarWidth():0,height:a?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var i=e(t||window),s=e.isWindow(i[0]);return{element:i,isWindow:s,offset:i.offset()||{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:s?i.width():i.outerWidth(),height:s?i.height():i.outerHeight()}}},e.fn.position=function(t){if(!t||!t.of)return f.apply(this,arguments);t=e.extend({},t);var n,p,m,g,v,y,b=e(t.of),_=e.position.getWithinInfo(t.within),x=e.position.getScrollInfo(_),k=(t.collision||"flip").split(" "),w={};return y=a(b),b[0].preventDefault&&(t.at="left top"),p=y.width,m=y.height,g=y.offset,v=e.extend({},g),e.each(["my","at"],function(){var e,i,s=(t[this]||"").split(" ");1===s.length&&(s=l.test(s[0])?s.concat(["center"]):u.test(s[0])?["center"].concat(s):["center","center"]),s[0]=l.test(s[0])?s[0]:"center",s[1]=u.test(s[1])?s[1]:"center",e=c.exec(s[0]),i=c.exec(s[1]),w[this]=[e?e[0]:0,i?i[0]:0],t[this]=[d.exec(s[0])[0],d.exec(s[1])[0]]}),1===k.length&&(k[1]=k[0]),"right"===t.at[0]?v.left+=p:"center"===t.at[0]&&(v.left+=p/2),"bottom"===t.at[1]?v.top+=m:"center"===t.at[1]&&(v.top+=m/2),n=i(w.at,p,m),v.left+=n[0],v.top+=n[1],this.each(function(){var a,l,u=e(this),c=u.outerWidth(),d=u.outerHeight(),f=s(this,"marginLeft"),y=s(this,"marginTop"),D=c+f+s(this,"marginRight")+x.width,T=d+y+s(this,"marginBottom")+x.height,M=e.extend({},v),S=i(w.my,u.outerWidth(),u.outerHeight());"right"===t.my[0]?M.left-=c:"center"===t.my[0]&&(M.left-=c/2),"bottom"===t.my[1]?M.top-=d:"center"===t.my[1]&&(M.top-=d/2),M.left+=S[0],M.top+=S[1],e.support.offsetFractions||(M.left=h(M.left),M.top=h(M.top)),a={marginLeft:f,marginTop:y},e.each(["left","top"],function(i,s){e.ui.position[k[i]]&&e.ui.position[k[i]][s](M,{targetWidth:p,targetHeight:m,elemWidth:c,elemHeight:d,collisionPosition:a,collisionWidth:D,collisionHeight:T,offset:[n[0]+S[0],n[1]+S[1]],my:t.my,at:t.at,within:_,elem:u})}),t.using&&(l=function(e){var i=g.left-M.left,s=i+p-c,a=g.top-M.top,n=a+m-d,h={target:{element:b,left:g.left,top:g.top,width:p,height:m},element:{element:u,left:M.left,top:M.top,width:c,height:d},horizontal:0>s?"left":i>0?"right":"center",vertical:0>n?"top":a>0?"bottom":"middle"};c>p&&p>o(i+s)&&(h.horizontal="center"),d>m&&m>o(a+n)&&(h.vertical="middle"),h.important=r(o(i),o(s))>r(o(a),o(n))?"horizontal":"vertical",t.using.call(this,e,h)}),u.offset(e.extend(M,{using:l}))})},e.ui.position={fit:{left:function(e,t){var i,s=t.within,a=s.isWindow?s.scrollLeft:s.offset.left,n=s.width,o=e.left-t.collisionPosition.marginLeft,h=a-o,l=o+t.collisionWidth-n-a;t.collisionWidth>n?h>0&&0>=l?(i=e.left+h+t.collisionWidth-n-a,e.left+=h-i):e.left=l>0&&0>=h?a:h>l?a+n-t.collisionWidth:a:h>0?e.left+=h:l>0?e.left-=l:e.left=r(e.left-o,e.left)},top:function(e,t){var i,s=t.within,a=s.isWindow?s.scrollTop:s.offset.top,n=t.within.height,o=e.top-t.collisionPosition.marginTop,h=a-o,l=o+t.collisionHeight-n-a;t.collisionHeight>n?h>0&&0>=l?(i=e.top+h+t.collisionHeight-n-a,e.top+=h-i):e.top=l>0&&0>=h?a:h>l?a+n-t.collisionHeight:a:h>0?e.top+=h:l>0?e.top-=l:e.top=r(e.top-o,e.top)}},flip:{left:function(e,t){var i,s,a=t.within,n=a.offset.left+a.scrollLeft,r=a.width,h=a.isWindow?a.scrollLeft:a.offset.left,l=e.left-t.collisionPosition.marginLeft,u=l-h,c=l+t.collisionWidth-r-h,d="left"===t.my[0]?-t.elemWidth:"right"===t.my[0]?t.elemWidth:0,p="left"===t.at[0]?t.targetWidth:"right"===t.at[0]?-t.targetWidth:0,f=-2*t.offset[0];0>u?(i=e.left+d+p+f+t.collisionWidth-r-n,(0>i||o(u)>i)&&(e.left+=d+p+f)):c>0&&(s=e.left-t.collisionPosition.marginLeft+d+p+f-h,(s>0||c>o(s))&&(e.left+=d+p+f))},top:function(e,t){var i,s,a=t.within,n=a.offset.top+a.scrollTop,r=a.height,h=a.isWindow?a.scrollTop:a.offset.top,l=e.top-t.collisionPosition.marginTop,u=l-h,c=l+t.collisionHeight-r-h,d="top"===t.my[1],p=d?-t.elemHeight:"bottom"===t.my[1]?t.elemHeight:0,f="top"===t.at[1]?t.targetHeight:"bottom"===t.at[1]?-t.targetHeight:0,m=-2*t.offset[1];0>u?(s=e.top+p+f+m+t.collisionHeight-r-n,e.top+p+f+m>u&&(0>s||o(u)>s)&&(e.top+=p+f+m)):c>0&&(i=e.top-t.collisionPosition.marginTop+p+f+m-h,e.top+p+f+m>c&&(i>0||c>o(i))&&(e.top+=p+f+m))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,i,s,a,n,r=document.getElementsByTagName("body")[0],o=document.createElement("div");t=document.createElement(r?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},r&&e.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(n in s)t.style[n]=s[n];t.appendChild(o),i=r||document.documentElement,i.insertBefore(t,i.firstChild),o.style.cssText="position: absolute; left: 10.7432222px;",a=e(o).offset().left,e.support.offsetFractions=a>10&&11>a,t.innerHTML="",i.removeChild(t)}()})(jQuery);(function(e){e.widget("ui.draggable",e.ui.mouse,{version:"1.10.3",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"!==this.options.helper||/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._mouseInit()},_destroy:function(){this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy()},_mouseCapture:function(t){var i=this.options;return this.helper||i.disabled||e(t.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(t),this.handle?(e(i.iframeFix===!0?"iframe":i.iframeFix).each(function(){e("<div class='ui-draggable-iframeFix' style='background: #fff;'></div>").css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(e(this).offset()).appendTo("body")}),!0):!1)},_mouseStart:function(t){var i=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offsetParent=this.helper.offsetParent(),this.offsetParentCssPosition=this.offsetParent.css("position"),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},this.offset.scroll=!1,e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_mouseDrag:function(t,i){if("fixed"===this.offsetParentCssPosition&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),!i){var a=this._uiHash();if(this._trigger("drag",t,a)===!1)return this._mouseUp({}),!1;this.position=a.position}return this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var i=this,a=!1;return e.ui.ddmanager&&!this.options.dropBehaviour&&(a=e.ui.ddmanager.drop(this,t)),this.dropped&&(a=this.dropped,this.dropped=!1),"original"!==this.options.helper||e.contains(this.element[0].ownerDocument,this.element[0])?("invalid"===this.options.revert&&!a||"valid"===this.options.revert&&a||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,a)?e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",t)!==!1&&i._clear()}):this._trigger("stop",t)!==!1&&this._clear(),!1):!1},_mouseUp:function(t){return e("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){return this.options.handle?!!e(t.target).closest(this.element.find(this.options.handle)).length:!0},_createHelper:function(t){var i=this.options,a=e.isFunction(i.helper)?e(i.helper.apply(this.element[0],[t])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return a.parents("body").length||a.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),a[0]===this.element[0]||/(fixed|absolute)/.test(a.css("position"))||a.css("position","absolute"),a},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&e.ui.ie)&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var e=this.element.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,a,s=this.options;return s.containment?"window"===s.containment?(this.containment=[e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,e(window).scrollLeft()+e(window).width()-this.helperProportions.width-this.margins.left,e(window).scrollTop()+(e(window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],undefined):"document"===s.containment?(this.containment=[0,0,e(document).width()-this.helperProportions.width-this.margins.left,(e(document).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],undefined):s.containment.constructor===Array?(this.containment=s.containment,undefined):("parent"===s.containment&&(s.containment=this.helper[0].parentNode),i=e(s.containment),a=i[0],a&&(t="hidden"!==i.css("overflow"),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(t?Math.max(a.scrollWidth,a.offsetWidth):a.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(a.scrollHeight,a.offsetHeight):a.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=i),undefined):(this.containment=null,undefined)},_convertPositionTo:function(t,i){i||(i=this.position);var a="absolute"===t?1:-1,s="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent;return this.offset.scroll||(this.offset.scroll={top:s.scrollTop(),left:s.scrollLeft()}),{top:i.top+this.offset.relative.top*a+this.offset.parent.top*a-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():this.offset.scroll.top)*a,left:i.left+this.offset.relative.left*a+this.offset.parent.left*a-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():this.offset.scroll.left)*a}},_generatePosition:function(t){var i,a,s,n,r=this.options,o="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,l=t.pageX,h=t.pageY;return this.offset.scroll||(this.offset.scroll={top:o.scrollTop(),left:o.scrollLeft()}),this.originalPosition&&(this.containment&&(this.relative_container?(a=this.relative_container.offset(),i=[this.containment[0]+a.left,this.containment[1]+a.top,this.containment[2]+a.left,this.containment[3]+a.top]):i=this.containment,t.pageX-this.offset.click.left<i[0]&&(l=i[0]+this.offset.click.left),t.pageY-this.offset.click.top<i[1]&&(h=i[1]+this.offset.click.top),t.pageX-this.offset.click.left>i[2]&&(l=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(h=i[3]+this.offset.click.top)),r.grid&&(s=r.grid[1]?this.originalPageY+Math.round((h-this.originalPageY)/r.grid[1])*r.grid[1]:this.originalPageY,h=i?s-this.offset.click.top>=i[1]||s-this.offset.click.top>i[3]?s:s-this.offset.click.top>=i[1]?s-r.grid[1]:s+r.grid[1]:s,n=r.grid[0]?this.originalPageX+Math.round((l-this.originalPageX)/r.grid[0])*r.grid[0]:this.originalPageX,l=i?n-this.offset.click.left>=i[0]||n-this.offset.click.left>i[2]?n:n-this.offset.click.left>=i[0]?n-r.grid[0]:n+r.grid[0]:n)),{top:h-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():this.offset.scroll.top),left:l-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():this.offset.scroll.left)}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1},_trigger:function(t,i,a){return a=a||this._uiHash(),e.ui.plugin.call(this,t,[i,a]),"drag"===t&&(this.positionAbs=this._convertPositionTo("absolute")),e.Widget.prototype._trigger.call(this,t,i,a)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,i){var a=e(this).data("ui-draggable"),s=a.options,n=e.extend({},i,{item:a.element});a.sortables=[],e(s.connectToSortable).each(function(){var i=e.data(this,"ui-sortable");i&&!i.options.disabled&&(a.sortables.push({instance:i,shouldRevert:i.options.revert}),i.refreshPositions(),i._trigger("activate",t,n))})},stop:function(t,i){var a=e(this).data("ui-draggable"),s=e.extend({},i,{item:a.element});e.each(a.sortables,function(){this.instance.isOver?(this.instance.isOver=0,a.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=this.shouldRevert),this.instance._mouseStop(t),this.instance.options.helper=this.instance.options._helper,"original"===a.options.helper&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",t,s))})},drag:function(t,i){var a=e(this).data("ui-draggable"),s=this;e.each(a.sortables,function(){var n=!1,r=this;this.instance.positionAbs=a.positionAbs,this.instance.helperProportions=a.helperProportions,this.instance.offset.click=a.offset.click,this.instance._intersectsWith(this.instance.containerCache)&&(n=!0,e.each(a.sortables,function(){return this.instance.positionAbs=a.positionAbs,this.instance.helperProportions=a.helperProportions,this.instance.offset.click=a.offset.click,this!==r&&this.instance._intersectsWith(this.instance.containerCache)&&e.contains(r.instance.element[0],this.instance.element[0])&&(n=!1),n})),n?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=e(s).clone().removeAttr("id").appendTo(this.instance.element).data("ui-sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return i.helper[0]},t.target=this.instance.currentItem[0],this.instance._mouseCapture(t,!0),this.instance._mouseStart(t,!0,!0),this.instance.offset.click.top=a.offset.click.top,this.instance.offset.click.left=a.offset.click.left,this.instance.offset.parent.left-=a.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=a.offset.parent.top-this.instance.offset.parent.top,a._trigger("toSortable",t),a.dropped=this.instance.element,a.currentItem=a.element,this.instance.fromOutside=a),this.instance.currentItem&&this.instance._mouseDrag(t)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",t,this.instance._uiHash(this.instance)),this.instance._mouseStop(t,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),a._trigger("fromSortable",t),a.dropped=!1)})}}),e.ui.plugin.add("draggable","cursor",{start:function(){var t=e("body"),i=e(this).data("ui-draggable").options;t.css("cursor")&&(i._cursor=t.css("cursor")),t.css("cursor",i.cursor)},stop:function(){var t=e(this).data("ui-draggable").options;t._cursor&&e("body").css("cursor",t._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,i){var a=e(i.helper),s=e(this).data("ui-draggable").options;a.css("opacity")&&(s._opacity=a.css("opacity")),a.css("opacity",s.opacity)},stop:function(t,i){var a=e(this).data("ui-draggable").options;a._opacity&&e(i.helper).css("opacity",a._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(){var t=e(this).data("ui-draggable");t.scrollParent[0]!==document&&"HTML"!==t.scrollParent[0].tagName&&(t.overflowOffset=t.scrollParent.offset())},drag:function(t){var i=e(this).data("ui-draggable"),a=i.options,s=!1;i.scrollParent[0]!==document&&"HTML"!==i.scrollParent[0].tagName?(a.axis&&"x"===a.axis||(i.overflowOffset.top+i.scrollParent[0].offsetHeight-t.pageY<a.scrollSensitivity?i.scrollParent[0].scrollTop=s=i.scrollParent[0].scrollTop+a.scrollSpeed:t.pageY-i.overflowOffset.top<a.scrollSensitivity&&(i.scrollParent[0].scrollTop=s=i.scrollParent[0].scrollTop-a.scrollSpeed)),a.axis&&"y"===a.axis||(i.overflowOffset.left+i.scrollParent[0].offsetWidth-t.pageX<a.scrollSensitivity?i.scrollParent[0].scrollLeft=s=i.scrollParent[0].scrollLeft+a.scrollSpeed:t.pageX-i.overflowOffset.left<a.scrollSensitivity&&(i.scrollParent[0].scrollLeft=s=i.scrollParent[0].scrollLeft-a.scrollSpeed))):(a.axis&&"x"===a.axis||(t.pageY-e(document).scrollTop()<a.scrollSensitivity?s=e(document).scrollTop(e(document).scrollTop()-a.scrollSpeed):e(window).height()-(t.pageY-e(document).scrollTop())<a.scrollSensitivity&&(s=e(document).scrollTop(e(document).scrollTop()+a.scrollSpeed))),a.axis&&"y"===a.axis||(t.pageX-e(document).scrollLeft()<a.scrollSensitivity?s=e(document).scrollLeft(e(document).scrollLeft()-a.scrollSpeed):e(window).width()-(t.pageX-e(document).scrollLeft())<a.scrollSensitivity&&(s=e(document).scrollLeft(e(document).scrollLeft()+a.scrollSpeed)))),s!==!1&&e.ui.ddmanager&&!a.dropBehaviour&&e.ui.ddmanager.prepareOffsets(i,t)}}),e.ui.plugin.add("draggable","snap",{start:function(){var t=e(this).data("ui-draggable"),i=t.options;t.snapElements=[],e(i.snap.constructor!==String?i.snap.items||":data(ui-draggable)":i.snap).each(function(){var i=e(this),a=i.offset();this!==t.element[0]&&t.snapElements.push({item:this,width:i.outerWidth(),height:i.outerHeight(),top:a.top,left:a.left})})},drag:function(t,i){var a,s,n,r,o,l,h,u,d,c,p=e(this).data("ui-draggable"),f=p.options,m=f.snapTolerance,g=i.offset.left,v=g+p.helperProportions.width,y=i.offset.top,b=y+p.helperProportions.height;for(d=p.snapElements.length-1;d>=0;d--)o=p.snapElements[d].left,l=o+p.snapElements[d].width,h=p.snapElements[d].top,u=h+p.snapElements[d].height,o-m>v||g>l+m||h-m>b||y>u+m||!e.contains(p.snapElements[d].item.ownerDocument,p.snapElements[d].item)?(p.snapElements[d].snapping&&p.options.snap.release&&p.options.snap.release.call(p.element,t,e.extend(p._uiHash(),{snapItem:p.snapElements[d].item})),p.snapElements[d].snapping=!1):("inner"!==f.snapMode&&(a=m>=Math.abs(h-b),s=m>=Math.abs(u-y),n=m>=Math.abs(o-v),r=m>=Math.abs(l-g),a&&(i.position.top=p._convertPositionTo("relative",{top:h-p.helperProportions.height,left:0}).top-p.margins.top),s&&(i.position.top=p._convertPositionTo("relative",{top:u,left:0}).top-p.margins.top),n&&(i.position.left=p._convertPositionTo("relative",{top:0,left:o-p.helperProportions.width}).left-p.margins.left),r&&(i.position.left=p._convertPositionTo("relative",{top:0,left:l}).left-p.margins.left)),c=a||s||n||r,"outer"!==f.snapMode&&(a=m>=Math.abs(h-y),s=m>=Math.abs(u-b),n=m>=Math.abs(o-g),r=m>=Math.abs(l-v),a&&(i.position.top=p._convertPositionTo("relative",{top:h,left:0}).top-p.margins.top),s&&(i.position.top=p._convertPositionTo("relative",{top:u-p.helperProportions.height,left:0}).top-p.margins.top),n&&(i.position.left=p._convertPositionTo("relative",{top:0,left:o}).left-p.margins.left),r&&(i.position.left=p._convertPositionTo("relative",{top:0,left:l-p.helperProportions.width}).left-p.margins.left)),!p.snapElements[d].snapping&&(a||s||n||r||c)&&p.options.snap.snap&&p.options.snap.snap.call(p.element,t,e.extend(p._uiHash(),{snapItem:p.snapElements[d].item})),p.snapElements[d].snapping=a||s||n||r||c)}}),e.ui.plugin.add("draggable","stack",{start:function(){var t,i=this.data("ui-draggable").options,a=e.makeArray(e(i.stack)).sort(function(t,i){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(i).css("zIndex"),10)||0)});a.length&&(t=parseInt(e(a[0]).css("zIndex"),10)||0,e(a).each(function(i){e(this).css("zIndex",t+i)}),this.css("zIndex",t+a.length))}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,i){var a=e(i.helper),s=e(this).data("ui-draggable").options;a.css("zIndex")&&(s._zIndex=a.css("zIndex")),a.css("zIndex",s.zIndex)},stop:function(t,i){var a=e(this).data("ui-draggable").options;a._zIndex&&e(i.helper).css("zIndex",a._zIndex)}})})(jQuery);(function(e){function t(e,t,i){return e>t&&t+i>e}e.widget("ui.droppable",{version:"1.10.3",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t=this.options,i=t.accept;this.isover=!1,this.isout=!0,this.accept=e.isFunction(i)?i:function(e){return e.is(i)},this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight},e.ui.ddmanager.droppables[t.scope]=e.ui.ddmanager.droppables[t.scope]||[],e.ui.ddmanager.droppables[t.scope].push(this),t.addClasses&&this.element.addClass("ui-droppable")},_destroy:function(){for(var t=0,i=e.ui.ddmanager.droppables[this.options.scope];i.length>t;t++)i[t]===this&&i.splice(t,1);this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(t,i){"accept"===t&&(this.accept=e.isFunction(i)?i:function(e){return e.is(i)}),e.Widget.prototype._setOption.apply(this,arguments)},_activate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),i&&this._trigger("activate",t,this.ui(i))},_deactivate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),i&&this._trigger("deactivate",t,this.ui(i))},_over:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",t,this.ui(i)))},_out:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",t,this.ui(i)))},_drop:function(t,i){var a=i||e.ui.ddmanager.current,s=!1;return a&&(a.currentItem||a.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var t=e.data(this,"ui-droppable");return t.options.greedy&&!t.options.disabled&&t.options.scope===a.options.scope&&t.accept.call(t.element[0],a.currentItem||a.element)&&e.ui.intersect(a,e.extend(t,{offset:t.element.offset()}),t.options.tolerance)?(s=!0,!1):undefined}),s?!1:this.accept.call(this.element[0],a.currentItem||a.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(a)),this.element):!1):!1},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),e.ui.intersect=function(e,i,a){if(!i.offset)return!1;var s,n,r=(e.positionAbs||e.position.absolute).left,o=r+e.helperProportions.width,l=(e.positionAbs||e.position.absolute).top,h=l+e.helperProportions.height,u=i.offset.left,d=u+i.proportions.width,c=i.offset.top,p=c+i.proportions.height;switch(a){case"fit":return r>=u&&d>=o&&l>=c&&p>=h;case"intersect":return r+e.helperProportions.width/2>u&&d>o-e.helperProportions.width/2&&l+e.helperProportions.height/2>c&&p>h-e.helperProportions.height/2;case"pointer":return s=(e.positionAbs||e.position.absolute).left+(e.clickOffset||e.offset.click).left,n=(e.positionAbs||e.position.absolute).top+(e.clickOffset||e.offset.click).top,t(n,c,i.proportions.height)&&t(s,u,i.proportions.width);case"touch":return(l>=c&&p>=l||h>=c&&p>=h||c>l&&h>p)&&(r>=u&&d>=r||o>=u&&d>=o||u>r&&o>d);default:return!1}},e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,i){var a,s,n=e.ui.ddmanager.droppables[t.options.scope]||[],r=i?i.type:null,o=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();e:for(a=0;n.length>a;a++)if(!(n[a].options.disabled||t&&!n[a].accept.call(n[a].element[0],t.currentItem||t.element))){for(s=0;o.length>s;s++)if(o[s]===n[a].element[0]){n[a].proportions.height=0;continue e}n[a].visible="none"!==n[a].element.css("display"),n[a].visible&&("mousedown"===r&&n[a]._activate.call(n[a],i),n[a].offset=n[a].element.offset(),n[a].proportions={width:n[a].element[0].offsetWidth,height:n[a].element[0].offsetHeight})}},drop:function(t,i){var a=!1;return e.each((e.ui.ddmanager.droppables[t.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&e.ui.intersect(t,this,this.options.tolerance)&&(a=this._drop.call(this,i)||a),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),a},dragStart:function(t,i){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)})},drag:function(t,i){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,i),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var a,s,n,r=e.ui.intersect(t,this,this.options.tolerance),o=!r&&this.isover?"isout":r&&!this.isover?"isover":null;o&&(this.options.greedy&&(s=this.options.scope,n=this.element.parents(":data(ui-droppable)").filter(function(){return e.data(this,"ui-droppable").options.scope===s}),n.length&&(a=e.data(n[0],"ui-droppable"),a.greedyChild="isover"===o)),a&&"isover"===o&&(a.isover=!1,a.isout=!0,a._out.call(a,i)),this[o]=!0,this["isout"===o?"isover":"isout"]=!1,this["isover"===o?"_over":"_out"].call(this,i),a&&"isout"===o&&(a.isout=!1,a.isover=!0,a._over.call(a,i)))}})},dragStop:function(t,i){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)}}})(jQuery);(function(e){function t(e){return parseInt(e,10)||0}function i(e){return!isNaN(parseInt(e,10))}e.widget("ui.resizable",e.ui.mouse,{version:"1.10.3",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_create:function(){var t,i,s,a,n,r=this,o=this.options;if(this.element.addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!o.aspectRatio,aspectRatio:o.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:o.helper||o.ghost||o.animate?o.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(e("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.data("ui-resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=o.handles||(e(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),t=this.handles.split(","),this.handles={},i=0;t.length>i;i++)s=e.trim(t[i]),n="ui-resizable-"+s,a=e("<div class='ui-resizable-handle "+n+"'></div>"),a.css({zIndex:o.zIndex}),"se"===s&&a.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(a);this._renderAxis=function(t){var i,s,a,n;t=t||this.element;for(i in this.handles)this.handles[i].constructor===String&&(this.handles[i]=e(this.handles[i],this.element).show()),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)&&(s=e(this.handles[i],this.element),n=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),a=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),t.css(a,n),this._proportionallyResize()),e(this.handles[i]).length},this._renderAxis(this.element),this._handles=e(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){r.resizing||(this.className&&(a=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=a&&a[1]?a[1]:"se")}),o.autoHide&&(this._handles.hide(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){o.disabled||(e(this).removeClass("ui-resizable-autohide"),r._handles.show())}).mouseleave(function(){o.disabled||r.resizing||(e(this).addClass("ui-resizable-autohide"),r._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t,i=function(t){e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),t=this.element,this.originalElement.css({position:t.css("position"),width:t.outerWidth(),height:t.outerHeight(),top:t.css("top"),left:t.css("left")}).insertAfter(t),t.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_mouseCapture:function(t){var i,s,a=!1;for(i in this.handles)s=e(this.handles[i])[0],(s===t.target||e.contains(s,t.target))&&(a=!0);return!this.options.disabled&&a},_mouseStart:function(i){var s,a,n,r=this.options,o=this.element.position(),h=this.element;return this.resizing=!0,/absolute/.test(h.css("position"))?h.css({position:"absolute",top:h.css("top"),left:h.css("left")}):h.is(".ui-draggable")&&h.css({position:"absolute",top:o.top,left:o.left}),this._renderProxy(),s=t(this.helper.css("left")),a=t(this.helper.css("top")),r.containment&&(s+=e(r.containment).scrollLeft()||0,a+=e(r.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:s,top:a},this.size=this._helper?{width:h.outerWidth(),height:h.outerHeight()}:{width:h.width(),height:h.height()},this.originalSize=this._helper?{width:h.outerWidth(),height:h.outerHeight()}:{width:h.width(),height:h.height()},this.originalPosition={left:s,top:a},this.sizeDiff={width:h.outerWidth()-h.width(),height:h.outerHeight()-h.height()},this.originalMousePosition={left:i.pageX,top:i.pageY},this.aspectRatio="number"==typeof r.aspectRatio?r.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=e(".ui-resizable-"+this.axis).css("cursor"),e("body").css("cursor","auto"===n?this.axis+"-resize":n),h.addClass("ui-resizable-resizing"),this._propagate("start",i),!0},_mouseDrag:function(t){var i,s=this.helper,a={},n=this.originalMousePosition,r=this.axis,o=this.position.top,h=this.position.left,l=this.size.width,u=this.size.height,c=t.pageX-n.left||0,d=t.pageY-n.top||0,p=this._change[r];return p?(i=p.apply(this,[t,c,d]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(i=this._updateRatio(i,t)),i=this._respectSize(i,t),this._updateCache(i),this._propagate("resize",t),this.position.top!==o&&(a.top=this.position.top+"px"),this.position.left!==h&&(a.left=this.position.left+"px"),this.size.width!==l&&(a.width=this.size.width+"px"),this.size.height!==u&&(a.height=this.size.height+"px"),s.css(a),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),e.isEmptyObject(a)||this._trigger("resize",t,this.ui()),!1):!1},_mouseStop:function(t){this.resizing=!1;var i,s,a,n,r,o,h,l=this.options,u=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),a=s&&e.ui.hasScroll(i[0],"left")?0:u.sizeDiff.height,n=s?0:u.sizeDiff.width,r={width:u.helper.width()-n,height:u.helper.height()-a},o=parseInt(u.element.css("left"),10)+(u.position.left-u.originalPosition.left)||null,h=parseInt(u.element.css("top"),10)+(u.position.top-u.originalPosition.top)||null,l.animate||this.element.css(e.extend(r,{top:h,left:o})),u.helper.height(u.size.height),u.helper.width(u.size.width),this._helper&&!l.animate&&this._proportionallyResize()),e("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updateVirtualBoundaries:function(e){var t,s,a,n,r,o=this.options;r={minWidth:i(o.minWidth)?o.minWidth:0,maxWidth:i(o.maxWidth)?o.maxWidth:1/0,minHeight:i(o.minHeight)?o.minHeight:0,maxHeight:i(o.maxHeight)?o.maxHeight:1/0},(this._aspectRatio||e)&&(t=r.minHeight*this.aspectRatio,a=r.minWidth/this.aspectRatio,s=r.maxHeight*this.aspectRatio,n=r.maxWidth/this.aspectRatio,t>r.minWidth&&(r.minWidth=t),a>r.minHeight&&(r.minHeight=a),r.maxWidth>s&&(r.maxWidth=s),r.maxHeight>n&&(r.maxHeight=n)),this._vBoundaries=r},_updateCache:function(e){this.offset=this.helper.offset(),i(e.left)&&(this.position.left=e.left),i(e.top)&&(this.position.top=e.top),i(e.height)&&(this.size.height=e.height),i(e.width)&&(this.size.width=e.width)},_updateRatio:function(e){var t=this.position,s=this.size,a=this.axis;return i(e.height)?e.width=e.height*this.aspectRatio:i(e.width)&&(e.height=e.width/this.aspectRatio),"sw"===a&&(e.left=t.left+(s.width-e.width),e.top=null),"nw"===a&&(e.top=t.top+(s.height-e.height),e.left=t.left+(s.width-e.width)),e},_respectSize:function(e){var t=this._vBoundaries,s=this.axis,a=i(e.width)&&t.maxWidth&&t.maxWidth<e.width,n=i(e.height)&&t.maxHeight&&t.maxHeight<e.height,r=i(e.width)&&t.minWidth&&t.minWidth>e.width,o=i(e.height)&&t.minHeight&&t.minHeight>e.height,h=this.originalPosition.left+this.originalSize.width,l=this.position.top+this.size.height,u=/sw|nw|w/.test(s),c=/nw|ne|n/.test(s);return r&&(e.width=t.minWidth),o&&(e.height=t.minHeight),a&&(e.width=t.maxWidth),n&&(e.height=t.maxHeight),r&&u&&(e.left=h-t.minWidth),a&&u&&(e.left=h-t.maxWidth),o&&c&&(e.top=l-t.minHeight),n&&c&&(e.top=l-t.maxHeight),e.width||e.height||e.left||!e.top?e.width||e.height||e.top||!e.left||(e.left=null):e.top=null,e},_proportionallyResize:function(){if(this._proportionallyResizeElements.length){var e,t,i,s,a,n=this.helper||this.element;for(e=0;this._proportionallyResizeElements.length>e;e++){if(a=this._proportionallyResizeElements[e],!this.borderDif)for(this.borderDif=[],i=[a.css("borderTopWidth"),a.css("borderRightWidth"),a.css("borderBottomWidth"),a.css("borderLeftWidth")],s=[a.css("paddingTop"),a.css("paddingRight"),a.css("paddingBottom"),a.css("paddingLeft")],t=0;i.length>t;t++)this.borderDif[t]=(parseInt(i[t],10)||0)+(parseInt(s[t],10)||0);a.css({height:n.height()-this.borderDif[0]-this.borderDif[2]||0,width:n.width()-this.borderDif[1]-this.borderDif[3]||0})}}},_renderProxy:function(){var t=this.element,i=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||e("<div style='overflow:hidden;'></div>"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(e,t){return{width:this.originalSize.width+t}},w:function(e,t){var i=this.originalSize,s=this.originalPosition;return{left:s.left+t,width:i.width-t}},n:function(e,t,i){var s=this.originalSize,a=this.originalPosition;return{top:a.top+i,height:s.height-i}},s:function(e,t,i){return{height:this.originalSize.height+i}},se:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},sw:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,i,s]))},ne:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},nw:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,i,s]))}},_propagate:function(t,i){e.ui.plugin.call(this,t,[i,this.ui()]),"resize"!==t&&this._trigger(t,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),e.ui.plugin.add("resizable","animate",{stop:function(t){var i=e(this).data("ui-resizable"),s=i.options,a=i._proportionallyResizeElements,n=a.length&&/textarea/i.test(a[0].nodeName),r=n&&e.ui.hasScroll(a[0],"left")?0:i.sizeDiff.height,o=n?0:i.sizeDiff.width,h={width:i.size.width-o,height:i.size.height-r},l=parseInt(i.element.css("left"),10)+(i.position.left-i.originalPosition.left)||null,u=parseInt(i.element.css("top"),10)+(i.position.top-i.originalPosition.top)||null;i.element.animate(e.extend(h,u&&l?{top:u,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseInt(i.element.css("width"),10),height:parseInt(i.element.css("height"),10),top:parseInt(i.element.css("top"),10),left:parseInt(i.element.css("left"),10)};a&&a.length&&e(a[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(){var i,s,a,n,r,o,h,l=e(this).data("ui-resizable"),u=l.options,c=l.element,d=u.containment,p=d instanceof e?d.get(0):/parent/.test(d)?c.parent().get(0):d;p&&(l.containerElement=e(p),/document/.test(d)||d===document?(l.containerOffset={left:0,top:0},l.containerPosition={left:0,top:0},l.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}):(i=e(p),s=[],e(["Top","Right","Left","Bottom"]).each(function(e,a){s[e]=t(i.css("padding"+a))}),l.containerOffset=i.offset(),l.containerPosition=i.position(),l.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},a=l.containerOffset,n=l.containerSize.height,r=l.containerSize.width,o=e.ui.hasScroll(p,"left")?p.scrollWidth:r,h=e.ui.hasScroll(p)?p.scrollHeight:n,l.parentData={element:p,left:a.left,top:a.top,width:o,height:h}))},resize:function(t){var i,s,a,n,r=e(this).data("ui-resizable"),o=r.options,h=r.containerOffset,l=r.position,u=r._aspectRatio||t.shiftKey,c={top:0,left:0},d=r.containerElement;d[0]!==document&&/static/.test(d.css("position"))&&(c=h),l.left<(r._helper?h.left:0)&&(r.size.width=r.size.width+(r._helper?r.position.left-h.left:r.position.left-c.left),u&&(r.size.height=r.size.width/r.aspectRatio),r.position.left=o.helper?h.left:0),l.top<(r._helper?h.top:0)&&(r.size.height=r.size.height+(r._helper?r.position.top-h.top:r.position.top),u&&(r.size.width=r.size.height*r.aspectRatio),r.position.top=r._helper?h.top:0),r.offset.left=r.parentData.left+r.position.left,r.offset.top=r.parentData.top+r.position.top,i=Math.abs((r._helper?r.offset.left-c.left:r.offset.left-c.left)+r.sizeDiff.width),s=Math.abs((r._helper?r.offset.top-c.top:r.offset.top-h.top)+r.sizeDiff.height),a=r.containerElement.get(0)===r.element.parent().get(0),n=/relative|absolute/.test(r.containerElement.css("position")),a&&n&&(i-=r.parentData.left),i+r.size.width>=r.parentData.width&&(r.size.width=r.parentData.width-i,u&&(r.size.height=r.size.width/r.aspectRatio)),s+r.size.height>=r.parentData.height&&(r.size.height=r.parentData.height-s,u&&(r.size.width=r.size.height*r.aspectRatio))},stop:function(){var t=e(this).data("ui-resizable"),i=t.options,s=t.containerOffset,a=t.containerPosition,n=t.containerElement,r=e(t.helper),o=r.offset(),h=r.outerWidth()-t.sizeDiff.width,l=r.outerHeight()-t.sizeDiff.height;t._helper&&!i.animate&&/relative/.test(n.css("position"))&&e(this).css({left:o.left-a.left-s.left,width:h,height:l}),t._helper&&!i.animate&&/static/.test(n.css("position"))&&e(this).css({left:o.left-a.left-s.left,width:h,height:l})}}),e.ui.plugin.add("resizable","alsoResize",{start:function(){var t=e(this).data("ui-resizable"),i=t.options,s=function(t){e(t).each(function(){var t=e(this);t.data("ui-resizable-alsoresize",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css("left"),10),top:parseInt(t.css("top"),10)})})};"object"!=typeof i.alsoResize||i.alsoResize.parentNode?s(i.alsoResize):i.alsoResize.length?(i.alsoResize=i.alsoResize[0],s(i.alsoResize)):e.each(i.alsoResize,function(e){s(e)})},resize:function(t,i){var s=e(this).data("ui-resizable"),a=s.options,n=s.originalSize,r=s.originalPosition,o={height:s.size.height-n.height||0,width:s.size.width-n.width||0,top:s.position.top-r.top||0,left:s.position.left-r.left||0},h=function(t,s){e(t).each(function(){var t=e(this),a=e(this).data("ui-resizable-alsoresize"),n={},r=s&&s.length?s:t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(r,function(e,t){var i=(a[t]||0)+(o[t]||0);i&&i>=0&&(n[t]=i||null)}),t.css(n)})};"object"!=typeof a.alsoResize||a.alsoResize.nodeType?h(a.alsoResize):e.each(a.alsoResize,function(e,t){h(e,t)})},stop:function(){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","ghost",{start:function(){var t=e(this).data("ui-resizable"),i=t.options,s=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof i.ghost?i.ghost:""),t.ghost.appendTo(t.helper)},resize:function(){var t=e(this).data("ui-resizable");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=e(this).data("ui-resizable");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(){var t=e(this).data("ui-resizable"),i=t.options,s=t.size,a=t.originalSize,n=t.originalPosition,r=t.axis,o="number"==typeof i.grid?[i.grid,i.grid]:i.grid,h=o[0]||1,l=o[1]||1,u=Math.round((s.width-a.width)/h)*h,c=Math.round((s.height-a.height)/l)*l,d=a.width+u,p=a.height+c,f=i.maxWidth&&d>i.maxWidth,m=i.maxHeight&&p>i.maxHeight,g=i.minWidth&&i.minWidth>d,v=i.minHeight&&i.minHeight>p;i.grid=o,g&&(d+=h),v&&(p+=l),f&&(d-=h),m&&(p-=l),/^(se|s|e)$/.test(r)?(t.size.width=d,t.size.height=p):/^(ne)$/.test(r)?(t.size.width=d,t.size.height=p,t.position.top=n.top-c):/^(sw)$/.test(r)?(t.size.width=d,t.size.height=p,t.position.left=n.left-u):(t.size.width=d,t.size.height=p,t.position.top=n.top-c,t.position.left=n.left-u)}})})(jQuery);(function(e){e.widget("ui.selectable",e.ui.mouse,{version:"1.10.3",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var t,i=this;this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){t=e(i.options.filter,i.element[0]),t.addClass("ui-selectee"),t.each(function(){var t=e(this),i=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:i.left,top:i.top,right:i.left+t.outerWidth(),bottom:i.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=t.addClass("ui-selectee"),this._mouseInit(),this.helper=e("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(t){var i=this,s=this.options;this.opos=[t.pageX,t.pageY],this.options.disabled||(this.selectees=e(s.filter,this.element[0]),this._trigger("start",t),e(s.appendTo).append(this.helper),this.helper.css({left:t.pageX,top:t.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=e.data(this,"selectable-item");s.startselected=!0,t.metaKey||t.ctrlKey||(s.$element.removeClass("ui-selected"),s.selected=!1,s.$element.addClass("ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",t,{unselecting:s.element}))}),e(t.target).parents().addBack().each(function(){var s,a=e.data(this,"selectable-item");return a?(s=!t.metaKey&&!t.ctrlKey||!a.$element.hasClass("ui-selected"),a.$element.removeClass(s?"ui-unselecting":"ui-selected").addClass(s?"ui-selecting":"ui-unselecting"),a.unselecting=!s,a.selecting=s,a.selected=s,s?i._trigger("selecting",t,{selecting:a.element}):i._trigger("unselecting",t,{unselecting:a.element}),!1):undefined}))},_mouseDrag:function(t){if(this.dragged=!0,!this.options.disabled){var i,s=this,a=this.options,n=this.opos[0],r=this.opos[1],o=t.pageX,h=t.pageY;return n>o&&(i=o,o=n,n=i),r>h&&(i=h,h=r,r=i),this.helper.css({left:n,top:r,width:o-n,height:h-r}),this.selectees.each(function(){var i=e.data(this,"selectable-item"),l=!1;i&&i.element!==s.element[0]&&("touch"===a.tolerance?l=!(i.left>o||n>i.right||i.top>h||r>i.bottom):"fit"===a.tolerance&&(l=i.left>n&&o>i.right&&i.top>r&&h>i.bottom),l?(i.selected&&(i.$element.removeClass("ui-selected"),i.selected=!1),i.unselecting&&(i.$element.removeClass("ui-unselecting"),i.unselecting=!1),i.selecting||(i.$element.addClass("ui-selecting"),i.selecting=!0,s._trigger("selecting",t,{selecting:i.element}))):(i.selecting&&((t.metaKey||t.ctrlKey)&&i.startselected?(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.$element.addClass("ui-selected"),i.selected=!0):(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.startselected&&(i.$element.addClass("ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",t,{unselecting:i.element}))),i.selected&&(t.metaKey||t.ctrlKey||i.startselected||(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",t,{unselecting:i.element})))))}),!1}},_mouseStop:function(t){var i=this;return this.dragged=!1,e(".ui-unselecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",t,{unselected:s.element})}),e(".ui-selecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-selecting").addClass("ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",t,{selected:s.element})}),this._trigger("stop",t),this.helper.remove(),!1}})})(jQuery);(function(e){function t(e,t,i){return e>t&&t+i>e}function i(e){return/left|right/.test(e.css("float"))||/inline|table-cell/.test(e.css("display"))}e.widget("ui.sortable",e.ui.mouse,{version:"1.10.3",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_create:function(){var e=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?"x"===e.axis||i(this.items[0].item):!1,this.offset=this.element.offset(),this._mouseInit(),this.ready=!0},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_setOption:function(t,i){"disabled"===t?(this.options[t]=i,this.widget().toggleClass("ui-sortable-disabled",!!i)):e.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(t,i){var s=null,a=!1,n=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(t),e(t.target).parents().each(function(){return e.data(this,n.widgetName+"-item")===n?(s=e(this),!1):undefined}),e.data(t.target,n.widgetName+"-item")===n&&(s=e(t.target)),s?!this.options.handle||i||(e(this.options.handle,s).find("*").addBack().each(function(){this===t.target&&(a=!0)}),a)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(t,i,s){var a,n,r=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,r.cursorAt&&this._adjustOffsetFromHelper(r.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),r.containment&&this._setContainment(),r.cursor&&"auto"!==r.cursor&&(n=this.document.find("body"),this.storedCursor=n.css("cursor"),n.css("cursor",r.cursor),this.storedStylesheet=e("<style>*{ cursor: "+r.cursor+" !important; }</style>").appendTo(n)),r.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",r.opacity)),r.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",r.zIndex)),this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(a=this.containers.length-1;a>=0;a--)this.containers[a]._trigger("activate",t,this._uiHash(this));return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!r.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){var i,s,a,n,r=this.options,o=!1;for(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<r.scrollSensitivity?this.scrollParent[0].scrollTop=o=this.scrollParent[0].scrollTop+r.scrollSpeed:t.pageY-this.overflowOffset.top<r.scrollSensitivity&&(this.scrollParent[0].scrollTop=o=this.scrollParent[0].scrollTop-r.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<r.scrollSensitivity?this.scrollParent[0].scrollLeft=o=this.scrollParent[0].scrollLeft+r.scrollSpeed:t.pageX-this.overflowOffset.left<r.scrollSensitivity&&(this.scrollParent[0].scrollLeft=o=this.scrollParent[0].scrollLeft-r.scrollSpeed)):(t.pageY-e(document).scrollTop()<r.scrollSensitivity?o=e(document).scrollTop(e(document).scrollTop()-r.scrollSpeed):e(window).height()-(t.pageY-e(document).scrollTop())<r.scrollSensitivity&&(o=e(document).scrollTop(e(document).scrollTop()+r.scrollSpeed)),t.pageX-e(document).scrollLeft()<r.scrollSensitivity?o=e(document).scrollLeft(e(document).scrollLeft()-r.scrollSpeed):e(window).width()-(t.pageX-e(document).scrollLeft())<r.scrollSensitivity&&(o=e(document).scrollLeft(e(document).scrollLeft()+r.scrollSpeed))),o!==!1&&e.ui.ddmanager&&!r.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],a=s.item[0],n=this._intersectsWithPointer(s),n&&s.instance===this.currentContainer&&a!==this.currentItem[0]&&this.placeholder[1===n?"next":"prev"]()[0]!==a&&!e.contains(this.placeholder[0],a)&&("semi-dynamic"===this.options.type?!e.contains(this.element[0],a):!0)){if(this.direction=1===n?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(t,s),this._trigger("change",t,this._uiHash());break}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,i){if(t){if(e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t),this.options.revert){var s=this,a=this.placeholder.offset(),n=this.options.axis,r={};n&&"x"!==n||(r.left=a.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollLeft)),n&&"y"!==n||(r.top=a.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,e(this.helper).animate(r,parseInt(this.options.revert,10)||500,function(){s._clear(t)})}else this._clear(t,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},e(i).each(function(){var i=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[\-=_](.+)/);i&&s.push((t.key||i[1]+"[]")+"="+(t.key&&t.expression?i[1]:i[2]))}),!s.length&&t.key&&s.push(t.key+"="),s.join("&")},toArray:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},i.each(function(){s.push(e(t.item||this).attr(t.attribute||"id")||"")}),s},_intersectsWith:function(e){var t=this.positionAbs.left,i=t+this.helperProportions.width,s=this.positionAbs.top,a=s+this.helperProportions.height,n=e.left,r=n+e.width,o=e.top,h=o+e.height,l=this.offset.click.top,u=this.offset.click.left,c="x"===this.options.axis||s+l>o&&h>s+l,d="y"===this.options.axis||t+u>n&&r>t+u,p=c&&d;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?p:t+this.helperProportions.width/2>n&&r>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>o&&h>a-this.helperProportions.height/2},_intersectsWithPointer:function(e){var i="x"===this.options.axis||t(this.positionAbs.top+this.offset.click.top,e.top,e.height),s="y"===this.options.axis||t(this.positionAbs.left+this.offset.click.left,e.left,e.width),a=i&&s,n=this._getDragVerticalDirection(),r=this._getDragHorizontalDirection();return a?this.floating?r&&"right"===r||"down"===n?2:1:n&&("down"===n?2:1):!1},_intersectsWithSides:function(e){var i=t(this.positionAbs.top+this.offset.click.top,e.top+e.height/2,e.height),s=t(this.positionAbs.left+this.offset.click.left,e.left+e.width/2,e.width),a=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&s||"left"===n&&!s:a&&("down"===a&&i||"up"===a&&!i)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return 0!==e&&(e>0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return 0!==e&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor===String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){var i,s,a,n,r=[],o=[],h=this._connectWith();if(h&&t)for(i=h.length-1;i>=0;i--)for(a=e(h[i]),s=a.length-1;s>=0;s--)n=e.data(a[s],this.widgetFullName),n&&n!==this&&!n.options.disabled&&o.push([e.isFunction(n.options.items)?n.options.items.call(n.element):e(n.options.items,n.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),n]);for(o.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),i=o.length-1;i>=0;i--)o[i][0].each(function(){r.push(this)});return e(r)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var i=0;t.length>i;i++)if(t[i]===e.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var i,s,a,n,r,o,h,l,u=this.items,c=[[e.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):e(this.options.items,this.element),this]],d=this._connectWith();if(d&&this.ready)for(i=d.length-1;i>=0;i--)for(a=e(d[i]),s=a.length-1;s>=0;s--)n=e.data(a[s],this.widgetFullName),n&&n!==this&&!n.options.disabled&&(c.push([e.isFunction(n.options.items)?n.options.items.call(n.element[0],t,{item:this.currentItem}):e(n.options.items,n.element),n]),this.containers.push(n));for(i=c.length-1;i>=0;i--)for(r=c[i][1],o=c[i][0],s=0,l=o.length;l>s;s++)h=e(o[s]),h.data(this.widgetName+"-item",r),u.push({item:h,instance:r,width:0,height:0,left:0,top:0})},refreshPositions:function(t){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,a,n;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(a=this.options.toleranceElement?e(this.options.toleranceElement,s.item):s.item,t||(s.width=a.outerWidth(),s.height=a.outerHeight()),n=a.offset(),s.left=n.left,s.top=n.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)n=this.containers[i].element.offset(),this.containers[i].containerCache.left=n.left,this.containers[i].containerCache.top=n.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(t){t=t||this;var i,s=t.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=t.currentItem[0].nodeName.toLowerCase(),a=e("<"+s+">",t.document[0]).addClass(i||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tr"===s?t.currentItem.children().each(function(){e("<td>&#160;</td>",t.document[0]).attr("colspan",e(this).attr("colspan")||1).appendTo(a)}):"img"===s&&a.attr("src",t.currentItem.attr("src")),i||a.css("visibility","hidden"),a},update:function(e,a){(!i||s.forcePlaceholderSize)&&(a.height()||a.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),a.width()||a.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10)))}}),t.placeholder=e(s.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),s.placeholder.update(t,t.placeholder)},_contactContainers:function(s){var a,n,r,o,h,l,u,c,d,p,f=null,m=null;for(a=this.containers.length-1;a>=0;a--)if(!e.contains(this.currentItem[0],this.containers[a].element[0]))if(this._intersectsWith(this.containers[a].containerCache)){if(f&&e.contains(this.containers[a].element[0],f.element[0]))continue;f=this.containers[a],m=a}else this.containers[a].containerCache.over&&(this.containers[a]._trigger("out",s,this._uiHash(this)),this.containers[a].containerCache.over=0);if(f)if(1===this.containers.length)this.containers[m].containerCache.over||(this.containers[m]._trigger("over",s,this._uiHash(this)),this.containers[m].containerCache.over=1);else{for(r=1e4,o=null,p=f.floating||i(this.currentItem),h=p?"left":"top",l=p?"width":"height",u=this.positionAbs[h]+this.offset.click[h],n=this.items.length-1;n>=0;n--)e.contains(this.containers[m].element[0],this.items[n].item[0])&&this.items[n].item[0]!==this.currentItem[0]&&(!p||t(this.positionAbs.top+this.offset.click.top,this.items[n].top,this.items[n].height))&&(c=this.items[n].item.offset()[h],d=!1,Math.abs(c-u)>Math.abs(c+this.items[n][l]-u)&&(d=!0,c+=this.items[n][l]),r>Math.abs(c-u)&&(r=Math.abs(c-u),o=this.items[n],this.direction=d?"up":"down"));if(!o&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[m])return;o?this._rearrange(s,o,null,!0):this._rearrange(s,null,this.containers[m].element,!0),this._trigger("change",s,this._uiHash()),this.containers[m]._trigger("change",s,this._uiHash(this)),this.currentContainer=this.containers[m],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[m]._trigger("over",s,this._uiHash(this)),this.containers[m].containerCache.over=1}},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper)?e(i.helper.apply(this.element[0],[t,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||e("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&e.ui.ie)&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,a=this.options;"parent"===a.containment&&(a.containment=this.helper[0].parentNode),("document"===a.containment||"window"===a.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,e("document"===a.containment?document:window).width()-this.helperProportions.width-this.margins.left,(e("document"===a.containment?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(a.containment)||(t=e(a.containment)[0],i=e(a.containment).offset(),s="hidden"!==e(t).css("overflow"),this.containment=[i.left+(parseInt(e(t).css("borderLeftWidth"),10)||0)+(parseInt(e(t).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(e(t).css("borderTopWidth"),10)||0)+(parseInt(e(t).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(e(t).css("borderLeftWidth"),10)||0)-(parseInt(e(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(e(t).css("borderTopWidth"),10)||0)-(parseInt(e(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,i){i||(i=this.position);var s="absolute"===t?1:-1,a="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,n=/(html|body)/i.test(a[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():n?0:a.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():n?0:a.scrollLeft())*s}},_generatePosition:function(t){var i,s,a=this.options,n=t.pageX,r=t.pageY,o="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(o[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==document&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(n=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(r=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(n=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(r=this.containment[3]+this.offset.click.top)),a.grid&&(i=this.originalPageY+Math.round((r-this.originalPageY)/a.grid[1])*a.grid[1],r=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-a.grid[1]:i+a.grid[1]:i,s=this.originalPageX+Math.round((n-this.originalPageX)/a.grid[0])*a.grid[0],n=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-a.grid[0]:s+a.grid[0]:s)),{top:r-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:o.scrollTop()),left:n-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:o.scrollLeft())}},_rearrange:function(e,t,i,s){i?i[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var a=this.counter;this._delay(function(){a===this.counter&&this.refreshPositions(!s)})},_clear:function(e,t){this.reverting=!1;var i,s=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(i in this._storedCSS)("auto"===this._storedCSS[i]||"static"===this._storedCSS[i])&&(this._storedCSS[i]="");this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!t&&s.push(function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||t||s.push(function(e){this._trigger("update",e,this._uiHash())}),this!==this.currentContainer&&(t||(s.push(function(e){this._trigger("remove",e,this._uiHash())}),s.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),s.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),i=this.containers.length-1;i>=0;i--)t||s.push(function(e){return function(t){e._trigger("deactivate",t,this._uiHash(this))}}.call(this,this.containers[i])),this.containers[i].containerCache.over&&(s.push(function(e){return function(t){e._trigger("out",t,this._uiHash(this))}}.call(this,this.containers[i])),this.containers[i].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,this.cancelHelperRemoval){if(!t){for(this._trigger("beforeStop",e,this._uiHash()),i=0;s.length>i;i++)s[i].call(this,e);this._trigger("stop",e,this._uiHash())}return this.fromOutside=!1,!1}if(t||this._trigger("beforeStop",e,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null,!t){for(i=0;s.length>i;i++)s[i].call(this,e);this._trigger("stop",e,this._uiHash())}return this.fromOutside=!1,!0},_trigger:function(){e.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(t){var i=t||this;return{helper:i.helper,placeholder:i.placeholder||e([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:t?t.element:null}}})})(jQuery);(function(e){var t=0;e.widget("ui.autocomplete",{version:"1.10.3",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},pending:0,_create:function(){var t,i,a,s=this.element[0].nodeName.toLowerCase(),n="textarea"===s,r="input"===s;this.isMultiLine=n?!0:r?!1:this.element.prop("isContentEditable"),this.valueMethod=this.element[n||r?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(s){if(this.element.prop("readOnly"))return t=!0,a=!0,i=!0,undefined;t=!1,a=!1,i=!1;var n=e.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:t=!0,this._move("previousPage",s);break;case n.PAGE_DOWN:t=!0,this._move("nextPage",s);break;case n.UP:t=!0,this._keyEvent("previous",s);break;case n.DOWN:t=!0,this._keyEvent("next",s);break;case n.ENTER:case n.NUMPAD_ENTER:this.menu.active&&(t=!0,s.preventDefault(),this.menu.select(s));break;case n.TAB:this.menu.active&&this.menu.select(s);break;case n.ESCAPE:this.menu.element.is(":visible")&&(this._value(this.term),this.close(s),s.preventDefault());break;default:i=!0,this._searchTimeout(s)}},keypress:function(a){if(t)return t=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&a.preventDefault(),undefined;if(!i){var s=e.ui.keyCode;switch(a.keyCode){case s.PAGE_UP:this._move("previousPage",a);break;case s.PAGE_DOWN:this._move("nextPage",a);break;case s.UP:this._keyEvent("previous",a);break;case s.DOWN:this._keyEvent("next",a)}}},input:function(e){return a?(a=!1,e.preventDefault(),undefined):(this._searchTimeout(e),undefined)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,undefined):(clearTimeout(this.searching),this.close(e),this._change(e),undefined)}}),this._initSource(),this.menu=e("<ul>").addClass("ui-autocomplete ui-front").appendTo(this._appendTo()).menu({role:null}).hide().data("ui-menu"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var i=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(a){a.target===t.element[0]||a.target===i||e.contains(i,a.target)||t.close()})})},menufocus:function(t,i){if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)}),undefined;var a=i.item.data("ui-autocomplete-item");!1!==this._trigger("focus",t,{item:a})?t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(a.value):this.liveRegion.text(a.value)},menuselect:function(e,t){var i=t.item.data("ui-autocomplete-item"),a=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=a,this._delay(function(){this.previous=a,this.selectedItem=i})),!1!==this._trigger("select",e,{item:i})&&this._value(i.value),this.term=this._value(),this.close(e),this.selectedItem=i}}),this.liveRegion=e("<span>",{role:"status","aria-live":"polite"}).addClass("ui-helper-hidden-accessible").insertBefore(this.element),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),"source"===e&&this._initSource(),"appendTo"===e&&this.menu.element.appendTo(this._appendTo()),"disabled"===e&&t&&this.xhr&&this.xhr.abort()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_initSource:function(){var t,i,a=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(i,a){a(e.ui.autocomplete.filter(t,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(t,s){a.xhr&&a.xhr.abort(),a.xhr=e.ajax({url:i,data:t,dataType:"json",success:function(e){s(e)},error:function(){s([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){this.term!==this._value()&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){return e=null!=e?e:this._value(),this.term=this._value(),e.length<this.options.minLength?this.close(t):this._trigger("search",t)!==!1?this._search(e):undefined},_search:function(e){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var e=this,i=++t;return function(a){i===t&&e.__response(a),e.pending--,e.pending||e.element.removeClass("ui-autocomplete-loading")}},__response:function(e){e&&(e=this._normalize(e)),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:e.map(t,function(t){return"string"==typeof t?{label:t,value:t}:e.extend({label:t.label||t.value,value:t.value||t.label},t)})},_suggest:function(t){var i=this.menu.element.empty();this._renderMenu(i,t),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(e.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(t,i){var a=this;e.each(i,function(e,i){a._renderItemData(t,i)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,i){return e("<li>").append(e("<a>").text(i.label)).appendTo(t)},_move:function(e,t){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)?(this._value(this.term),this.menu.blur(),undefined):(this.menu[e](t),undefined):(this.search(null,t),undefined)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(e,t),t.preventDefault())}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,i){var a=RegExp(e.ui.autocomplete.escapeRegex(i),"i");return e.grep(t,function(e){return a.test(e.label||e.value||e)})}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var t;this._superApply(arguments),this.options.disabled||this.cancelSearch||(t=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.text(t))}})})(jQuery);(function(e){e.widget("ui.menu",{version:"1.10.3",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content ui-corner-all").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}).bind("click"+this.eventNamespace,e.proxy(function(e){this.options.disabled&&e.preventDefault()},this)),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item > a":function(e){e.preventDefault()},"click .ui-state-disabled > a":function(e){e.preventDefault()},"click .ui-menu-item:has(a)":function(t){var i=e(t.target).closest(".ui-menu-item");!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.mouseHandled=!0,this.select(t),i.has(".ui-menu").length?this.expand(t):this.element.is(":focus")||(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){var i=e(t.currentTarget);i.siblings().children(".ui-state-active").removeClass("ui-state-active"),this.focus(t,i)},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var i=this.active||this.element.children(".ui-menu-item").eq(0);t||this.focus(e,i)},blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){e(t.target).closest(".ui-menu").length||this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeClass("ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").children("a").removeUniqueId().removeClass("ui-corner-all ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var t=e(this);t.data("ui-menu-submenu-carat")&&t.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(t){function i(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}var s,a,n,r,o,h=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:h=!1,a=this.previousFilter||"",n=String.fromCharCode(t.keyCode),r=!1,clearTimeout(this.filterTimer),n===a?r=!0:n=a+n,o=RegExp("^"+i(n),"i"),s=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())}),s=r&&-1!==s.index(this.active.next())?this.active.nextAll(".ui-menu-item"):s,s.length||(n=String.fromCharCode(t.keyCode),o=RegExp("^"+i(n),"i"),s=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())})),s.length?(this.focus(t,s),s.length>1?(this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter):delete this.previousFilter}h&&t.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.children("a[aria-haspopup='true']").length?this.expand(e):this.select(e))},refresh:function(){var t,i=this.options.icons.submenu,s=this.element.find(this.options.menus);s.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-corner-all").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=e(this),s=t.prev("a"),a=e("<span>").addClass("ui-menu-icon ui-icon "+i).data("ui-menu-submenu-carat",!0);s.attr("aria-haspopup","true").prepend(a),t.attr("aria-labelledby",s.attr("id"))}),t=s.add(this.element),t.children(":not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","presentation").children("a").uniqueId().addClass("ui-corner-all").attr({tabIndex:-1,role:this._itemRole()}),t.children(":not(.ui-menu-item)").each(function(){var t=e(this);/[^\-\u2014\u2013\s]/.test(t.text())||t.addClass("ui-widget-content ui-menu-divider")}),t.children(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(e,t){"icons"===e&&this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(t.submenu),this._super(e,t)},focus:function(e,t){var i,s;this.blur(e,e&&"focus"===e.type),this._scrollIntoView(t),this.active=t.first(),s=this.active.children("a").addClass("ui-state-focus"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),this.active.parent().closest(".ui-menu-item").children("a:first").addClass("ui-state-active"),e&&"keydown"===e.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=t.children(".ui-menu"),i.length&&/^mouse/.test(e.type)&&this._startOpening(i),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var i,s,a,n,r,o;this._hasScroll()&&(i=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,a=t.offset().top-this.activeMenu.offset().top-i-s,n=this.activeMenu.scrollTop(),r=this.activeMenu.height(),o=t.height(),0>a?this.activeMenu.scrollTop(n+a):a+o>r&&this.activeMenu.scrollTop(n+a-r+o))},blur:function(e,t){t||clearTimeout(this.timer),this.active&&(this.active.children("a").removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active}))},_startOpening:function(e){clearTimeout(this.timer),"true"===e.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(e)},this.delay))},_open:function(t){var i=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(t,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(t),this.activeMenu=s},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find("a.ui-state-active").removeClass("ui-state-active")},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").children(".ui-menu-item").first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(e,t,i){var s;this.active&&(s="first"===e||"last"===e?this.active["first"===e?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[e+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.children(".ui-menu-item")[t]()),this.focus(i,s)},nextPage:function(t){var i,s,a;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,a=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=e(this),0>i.offset().top-s-a}),this.focus(t,i)):this.focus(t,this.activeMenu.children(".ui-menu-item")[this.active?"last":"first"]())),undefined):(this.next(t),undefined)},previousPage:function(t){var i,s,a;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,a=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=e(this),i.offset().top-s+a>0}),this.focus(t,i)):this.focus(t,this.activeMenu.children(".ui-menu-item").first())),undefined):(this.next(t),undefined)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||e(t.target).closest(".ui-menu-item");var i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,i)}})})(jQuery);(function(e,t){var i="ui-effects-";e.effects={effect:{}},function(e,t){function i(e,t,i){var s=c[t.type]||{};return null==e?i||!t.def?null:t.def:(e=s.floor?~~e:parseFloat(e),isNaN(e)?t.def:s.mod?(e+s.mod)%s.mod:0>e?0:e>s.max?s.max:e)}function s(i){var s=l(),a=s._rgba=[];return i=i.toLowerCase(),f(h,function(e,n){var r,o=n.re.exec(i),h=o&&n.parse(o),l=n.space||"rgba";return h?(r=s[l](h),s[u[l].cache]=r[u[l].cache],a=s._rgba=r._rgba,!1):t}),a.length?("0,0,0,0"===a.join()&&e.extend(a,n.transparent),s):n[i]}function a(e,t,i){return i=(i+1)%1,1>6*i?e+6*(t-e)*i:1>2*i?t:2>3*i?e+6*(t-e)*(2/3-i):e}var n,r="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",o=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[2.55*e[1],2.55*e[2],2.55*e[3],e[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(e){return[e[1],e[2]/100,e[3]/100,e[4]]}}],l=e.Color=function(t,i,s,a){return new e.Color.fn.parse(t,i,s,a)},u={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},c={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},d=l.support={},p=e("<p>")[0],f=e.each;p.style.cssText="background-color:rgba(1,1,1,.5)",d.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(u,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),l.fn=e.extend(l.prototype,{parse:function(a,r,o,h){if(a===t)return this._rgba=[null,null,null,null],this;(a.jquery||a.nodeType)&&(a=e(a).css(r),r=t);var c=this,d=e.type(a),p=this._rgba=[];return r!==t&&(a=[a,r,o,h],d="array"),"string"===d?this.parse(s(a)||n._default):"array"===d?(f(u.rgba.props,function(e,t){p[t.idx]=i(a[t.idx],t)}),this):"object"===d?(a instanceof l?f(u,function(e,t){a[t.cache]&&(c[t.cache]=a[t.cache].slice())}):f(u,function(t,s){var n=s.cache;f(s.props,function(e,t){if(!c[n]&&s.to){if("alpha"===e||null==a[e])return;c[n]=s.to(c._rgba)}c[n][t.idx]=i(a[e],t,!0)}),c[n]&&0>e.inArray(null,c[n].slice(0,3))&&(c[n][3]=1,s.from&&(c._rgba=s.from(c[n])))}),this):t},is:function(e){var i=l(e),s=!0,a=this;return f(u,function(e,n){var r,o=i[n.cache];return o&&(r=a[n.cache]||n.to&&n.to(a._rgba)||[],f(n.props,function(e,i){return null!=o[i.idx]?s=o[i.idx]===r[i.idx]:t})),s}),s},_space:function(){var e=[],t=this;return f(u,function(i,s){t[s.cache]&&e.push(i)}),e.pop()},transition:function(e,t){var s=l(e),a=s._space(),n=u[a],r=0===this.alpha()?l("transparent"):this,o=r[n.cache]||n.to(r._rgba),h=o.slice();return s=s[n.cache],f(n.props,function(e,a){var n=a.idx,r=o[n],l=s[n],u=c[a.type]||{};null!==l&&(null===r?h[n]=l:(u.mod&&(l-r>u.mod/2?r+=u.mod:r-l>u.mod/2&&(r-=u.mod)),h[n]=i((l-r)*t+r,a)))}),this[a](h)},blend:function(t){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),a=l(t)._rgba;return l(e.map(i,function(e,t){return(1-s)*a[t]+s*e}))},toRgbaString:function(){var t="rgba(",i=e.map(this._rgba,function(e,t){return null==e?t>2?1:0:e});return 1===i[3]&&(i.pop(),t="rgb("),t+i.join()+")"},toHslaString:function(){var t="hsla(",i=e.map(this.hsla(),function(e,t){return null==e&&(e=t>2?1:0),t&&3>t&&(e=Math.round(100*e)+"%"),e});return 1===i[3]&&(i.pop(),t="hsl("),t+i.join()+")"},toHexString:function(t){var i=this._rgba.slice(),s=i.pop();return t&&i.push(~~(255*s)),"#"+e.map(i,function(e){return e=(e||0).toString(16),1===e.length?"0"+e:e}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,u.hsla.to=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t,i,s=e[0]/255,a=e[1]/255,n=e[2]/255,r=e[3],o=Math.max(s,a,n),h=Math.min(s,a,n),l=o-h,u=o+h,c=.5*u;return t=h===o?0:s===o?60*(a-n)/l+360:a===o?60*(n-s)/l+120:60*(s-a)/l+240,i=0===l?0:.5>=c?l/u:l/(2-u),[Math.round(t)%360,i,c,null==r?1:r]},u.hsla.from=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t=e[0]/360,i=e[1],s=e[2],n=e[3],r=.5>=s?s*(1+i):s+i-s*i,o=2*s-r;return[Math.round(255*a(o,r,t+1/3)),Math.round(255*a(o,r,t)),Math.round(255*a(o,r,t-1/3)),n]},f(u,function(s,a){var n=a.props,r=a.cache,h=a.to,u=a.from;l.fn[s]=function(s){if(h&&!this[r]&&(this[r]=h(this._rgba)),s===t)return this[r].slice();var a,o=e.type(s),c="array"===o||"object"===o?s:arguments,d=this[r].slice();return f(n,function(e,t){var s=c["object"===o?e:t.idx];null==s&&(s=d[t.idx]),d[t.idx]=i(s,t)}),u?(a=l(u(d)),a[r]=d,a):l(d)},f(n,function(t,i){l.fn[t]||(l.fn[t]=function(a){var n,r=e.type(a),h="alpha"===t?this._hsla?"hsla":"rgba":s,l=this[h](),u=l[i.idx];return"undefined"===r?u:("function"===r&&(a=a.call(this,u),r=e.type(a)),null==a&&i.empty?this:("string"===r&&(n=o.exec(a),n&&(a=u+parseFloat(n[2])*("+"===n[1]?1:-1))),l[i.idx]=a,this[h](l)))})})}),l.hook=function(t){var i=t.split(" ");f(i,function(t,i){e.cssHooks[i]={set:function(t,a){var n,r,o="";if("transparent"!==a&&("string"!==e.type(a)||(n=s(a)))){if(a=l(n||a),!d.rgba&&1!==a._rgba[3]){for(r="backgroundColor"===i?t.parentNode:t;(""===o||"transparent"===o)&&r&&r.style;)try{o=e.css(r,"backgroundColor"),r=r.parentNode}catch(h){}a=a.blend(o&&"transparent"!==o?o:"_default")}a=a.toRgbaString()}try{t.style[i]=a}catch(h){}}},e.fx.step[i]=function(t){t.colorInit||(t.start=l(t.elem,i),t.end=l(t.end),t.colorInit=!0),e.cssHooks[i].set(t.elem,t.start.transition(t.end,t.pos))}})},l.hook(r),e.cssHooks.borderColor={expand:function(e){var t={};return f(["Top","Right","Bottom","Left"],function(i,s){t["border"+s+"Color"]=e}),t}},n=e.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(jQuery),function(){function i(t){var i,s,a=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,n={};if(a&&a.length&&a[0]&&a[a[0]])for(s=a.length;s--;)i=a[s],"string"==typeof a[i]&&(n[e.camelCase(i)]=a[i]);else for(i in a)"string"==typeof a[i]&&(n[i]=a[i]);return n}function s(t,i){var s,a,r={};for(s in i)a=i[s],t[s]!==a&&(n[s]||(e.fx.step[s]||!isNaN(parseFloat(a)))&&(r[s]=a));return r}var a=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,i){e.fx.step[i]=function(e){("none"!==e.end&&!e.setAttr||1===e.pos&&!e.setAttr)&&(jQuery.style(e.elem,i,e.end),e.setAttr=!0)}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e.effects.animateClass=function(t,n,r,o){var h=e.speed(n,r,o);return this.queue(function(){var n,r=e(this),o=r.attr("class")||"",l=h.children?r.find("*").addBack():r;l=l.map(function(){var t=e(this);return{el:t,start:i(this)}}),n=function(){e.each(a,function(e,i){t[i]&&r[i+"Class"](t[i])})},n(),l=l.map(function(){return this.end=i(this.el[0]),this.diff=s(this.start,this.end),this}),r.attr("class",o),l=l.map(function(){var t=this,i=e.Deferred(),s=e.extend({},h,{queue:!1,complete:function(){i.resolve(t)}});return this.el.animate(this.diff,s),i.promise()}),e.when.apply(e,l.get()).done(function(){n(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),h.complete.call(r[0])})})},e.fn.extend({addClass:function(t){return function(i,s,a,n){return s?e.effects.animateClass.call(this,{add:i},s,a,n):t.apply(this,arguments)}}(e.fn.addClass),removeClass:function(t){return function(i,s,a,n){return arguments.length>1?e.effects.animateClass.call(this,{remove:i},s,a,n):t.apply(this,arguments)}}(e.fn.removeClass),toggleClass:function(i){return function(s,a,n,r,o){return"boolean"==typeof a||a===t?n?e.effects.animateClass.call(this,a?{add:s}:{remove:s},n,r,o):i.apply(this,arguments):e.effects.animateClass.call(this,{toggle:s},a,n,r)}}(e.fn.toggleClass),switchClass:function(t,i,s,a,n){return e.effects.animateClass.call(this,{add:i,remove:t},s,a,n)}})}(),function(){function s(t,i,s,a){return e.isPlainObject(t)&&(i=t,t=t.effect),t={effect:t},null==i&&(i={}),e.isFunction(i)&&(a=i,s=null,i={}),("number"==typeof i||e.fx.speeds[i])&&(a=s,s=i,i={}),e.isFunction(s)&&(a=s,s=null),i&&e.extend(t,i),s=s||i.duration,t.duration=e.fx.off?0:"number"==typeof s?s:s in e.fx.speeds?e.fx.speeds[s]:e.fx.speeds._default,t.complete=a||i.complete,t}function a(t){return!t||"number"==typeof t||e.fx.speeds[t]?!0:"string"!=typeof t||e.effects.effect[t]?e.isFunction(t)?!0:"object"!=typeof t||t.effect?!1:!0:!0}e.extend(e.effects,{version:"1.10.3",save:function(e,t){for(var s=0;t.length>s;s++)null!==t[s]&&e.data(i+t[s],e[0].style[t[s]])},restore:function(e,s){var a,n;for(n=0;s.length>n;n++)null!==s[n]&&(a=e.data(i+s[n]),a===t&&(a=""),e.css(s[n],a))},setMode:function(e,t){return"toggle"===t&&(t=e.is(":hidden")?"show":"hide"),t},getBaseline:function(e,t){var i,s;switch(e[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=e[0]/t.height}switch(e[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=e[1]/t.width}return{x:s,y:i}},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var i={width:t.outerWidth(!0),height:t.outerHeight(!0),"float":t.css("float")},s=e("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),a={width:t.width(),height:t.height()},n=document.activeElement;try{n.id}catch(r){n=document.body}return t.wrap(s),(t[0]===n||e.contains(t[0],n))&&e(n).focus(),s=t.parent(),"static"===t.css("position")?(s.css({position:"relative"}),t.css({position:"relative"})):(e.extend(i,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,s){i[s]=t.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(a),s.css(i).show()},removeWrapper:function(t){var i=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===i||e.contains(t[0],i))&&e(i).focus()),t},setTransition:function(t,i,s,a){return a=a||{},e.each(i,function(e,i){var n=t.cssUnit(i);n[0]>0&&(a[i]=n[0]*s+n[1])}),a}}),e.fn.extend({effect:function(){function t(t){function s(){e.isFunction(n)&&n.call(a[0]),e.isFunction(t)&&t()}var a=e(this),n=i.complete,o=i.mode;(a.is(":hidden")?"hide"===o:"show"===o)?(a[o](),s()):r.call(a[0],i,s)}var i=s.apply(this,arguments),a=i.mode,n=i.queue,r=e.effects.effect[i.effect];return e.fx.off||!r?a?this[a](i.duration,i.complete):this.each(function(){i.complete&&i.complete.call(this)}):n===!1?this.each(t):this.queue(n||"fx",t)},show:function(e){return function(t){if(a(t))return e.apply(this,arguments);var i=s.apply(this,arguments);return i.mode="show",this.effect.call(this,i)}}(e.fn.show),hide:function(e){return function(t){if(a(t))return e.apply(this,arguments);var i=s.apply(this,arguments);return i.mode="hide",this.effect.call(this,i)}}(e.fn.hide),toggle:function(e){return function(t){if(a(t)||"boolean"==typeof t)return e.apply(this,arguments);var i=s.apply(this,arguments);return i.mode="toggle",this.effect.call(this,i)}}(e.fn.toggle),cssUnit:function(t){var i=this.css(t),s=[];return e.each(["em","px","%","pt"],function(e,t){i.indexOf(t)>0&&(s=[parseFloat(i),t])}),s}})}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,i){t[i]=function(t){return Math.pow(t,e+2)}}),e.extend(t,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return 0===e||1===e?e:-Math.pow(2,8*(e-1))*Math.sin((80*(e-1)-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){for(var t,i=4;((t=Math.pow(2,--i))-1)/11>e;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*t-2)/22-e,2)}}),e.each(t,function(t,i){e.easing["easeIn"+t]=i,e.easing["easeOut"+t]=function(e){return 1-i(1-e)},e.easing["easeInOut"+t]=function(e){return.5>e?i(2*e)/2:1-i(-2*e+2)/2}})}()})(jQuery);(function(e){var t=/up|down|vertical/,i=/up|left|vertical|horizontal/;e.effects.effect.blind=function(a,s){var n,r,o,l=e(this),h=["position","top","bottom","left","right","height","width"],u=e.effects.setMode(l,a.mode||"hide"),d=a.direction||"up",c=t.test(d),p=c?"height":"width",f=c?"top":"left",m=i.test(d),g={},v="show"===u;l.parent().is(".ui-effects-wrapper")?e.effects.save(l.parent(),h):e.effects.save(l,h),l.show(),n=e.effects.createWrapper(l).css({overflow:"hidden"}),r=n[p](),o=parseFloat(n.css(f))||0,g[p]=v?r:0,m||(l.css(c?"bottom":"right",0).css(c?"top":"left","auto").css({position:"absolute"}),g[f]=v?o:r+o),v&&(n.css(p,0),m||n.css(f,o+r)),n.animate(g,{duration:a.duration,easing:a.easing,queue:!1,complete:function(){"hide"===u&&l.hide(),e.effects.restore(l,h),e.effects.removeWrapper(l),s()}})}})(jQuery);(function(e){e.effects.effect.bounce=function(t,i){var a,s,n,r=e(this),o=["position","top","bottom","left","right","height","width"],l=e.effects.setMode(r,t.mode||"effect"),h="hide"===l,u="show"===l,d=t.direction||"up",c=t.distance,p=t.times||5,f=2*p+(u||h?1:0),m=t.duration/f,g=t.easing,v="up"===d||"down"===d?"top":"left",y="up"===d||"left"===d,b=r.queue(),_=b.length;for((u||h)&&o.push("opacity"),e.effects.save(r,o),r.show(),e.effects.createWrapper(r),c||(c=r["top"===v?"outerHeight":"outerWidth"]()/3),u&&(n={opacity:1},n[v]=0,r.css("opacity",0).css(v,y?2*-c:2*c).animate(n,m,g)),h&&(c/=Math.pow(2,p-1)),n={},n[v]=0,a=0;p>a;a++)s={},s[v]=(y?"-=":"+=")+c,r.animate(s,m,g).animate(n,m,g),c=h?2*c:c/2;h&&(s={opacity:0},s[v]=(y?"-=":"+=")+c,r.animate(s,m,g)),r.queue(function(){h&&r.hide(),e.effects.restore(r,o),e.effects.removeWrapper(r),i()}),_>1&&b.splice.apply(b,[1,0].concat(b.splice(_,f+1))),r.dequeue()}})(jQuery);(function(e){e.effects.effect.clip=function(t,i){var a,s,n,r=e(this),o=["position","top","bottom","left","right","height","width"],l=e.effects.setMode(r,t.mode||"hide"),h="show"===l,u=t.direction||"vertical",d="vertical"===u,c=d?"height":"width",p=d?"top":"left",f={};e.effects.save(r,o),r.show(),a=e.effects.createWrapper(r).css({overflow:"hidden"}),s="IMG"===r[0].tagName?a:r,n=s[c](),h&&(s.css(c,0),s.css(p,n/2)),f[c]=h?n:0,f[p]=h?0:n/2,s.animate(f,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){h||r.hide(),e.effects.restore(r,o),e.effects.removeWrapper(r),i()}})}})(jQuery);(function(e){e.effects.effect.drop=function(t,i){var a,s=e(this),n=["position","top","bottom","left","right","opacity","height","width"],r=e.effects.setMode(s,t.mode||"hide"),o="show"===r,l=t.direction||"left",h="up"===l||"down"===l?"top":"left",u="up"===l||"left"===l?"pos":"neg",d={opacity:o?1:0};e.effects.save(s,n),s.show(),e.effects.createWrapper(s),a=t.distance||s["top"===h?"outerHeight":"outerWidth"](!0)/2,o&&s.css("opacity",0).css(h,"pos"===u?-a:a),d[h]=(o?"pos"===u?"+=":"-=":"pos"===u?"-=":"+=")+a,s.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===r&&s.hide(),e.effects.restore(s,n),e.effects.removeWrapper(s),i()}})}})(jQuery);(function(e){e.effects.effect.explode=function(t,i){function s(){b.push(this),b.length===d*c&&a()}function a(){p.css({visibility:"visible"}),e(b).remove(),m||p.hide(),i()}var n,r,o,l,h,u,d=t.pieces?Math.round(Math.sqrt(t.pieces)):3,c=d,p=e(this),f=e.effects.setMode(p,t.mode||"hide"),m="show"===f,g=p.show().css("visibility","hidden").offset(),v=Math.ceil(p.outerWidth()/c),y=Math.ceil(p.outerHeight()/d),b=[];for(n=0;d>n;n++)for(l=g.top+n*y,u=n-(d-1)/2,r=0;c>r;r++)o=g.left+r*v,h=r-(c-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-r*v,top:-n*y}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:v,height:y,left:o+(m?h*v:0),top:l+(m?u*y:0),opacity:m?0:1}).animate({left:o+(m?0:h*v),top:l+(m?0:u*y),opacity:m?1:0},t.duration||500,t.easing,s)}})(jQuery);(function(e){e.effects.effect.fade=function(t,i){var s=e(this),a=e.effects.setMode(s,t.mode||"toggle");s.animate({opacity:a},{queue:!1,duration:t.duration,easing:t.easing,complete:i})}})(jQuery);(function(e){e.effects.effect.fold=function(t,i){var s,a,n=e(this),r=["position","top","bottom","left","right","height","width"],o=e.effects.setMode(n,t.mode||"hide"),l="show"===o,h="hide"===o,u=t.size||15,d=/([0-9]+)%/.exec(u),c=!!t.horizFirst,p=l!==c,f=p?["width","height"]:["height","width"],m=t.duration/2,g={},v={};e.effects.save(n,r),n.show(),s=e.effects.createWrapper(n).css({overflow:"hidden"}),a=p?[s.width(),s.height()]:[s.height(),s.width()],d&&(u=parseInt(d[1],10)/100*a[h?0:1]),l&&s.css(c?{height:0,width:u}:{height:u,width:0}),g[f[0]]=l?a[0]:u,v[f[1]]=l?a[1]:0,s.animate(g,m,t.easing).animate(v,m,t.easing,function(){h&&n.hide(),e.effects.restore(n,r),e.effects.removeWrapper(n),i()})}})(jQuery);(function(e){e.effects.effect.highlight=function(t,i){var s=e(this),a=["backgroundImage","backgroundColor","opacity"],n=e.effects.setMode(s,t.mode||"show"),r={backgroundColor:s.css("backgroundColor")};"hide"===n&&(r.opacity=0),e.effects.save(s,a),s.show().css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(r,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===n&&s.hide(),e.effects.restore(s,a),i()}})}})(jQuery);(function(e){e.effects.effect.pulsate=function(t,i){var s,a=e(this),n=e.effects.setMode(a,t.mode||"show"),r="show"===n,o="hide"===n,l=r||"hide"===n,h=2*(t.times||5)+(l?1:0),u=t.duration/h,d=0,c=a.queue(),p=c.length;for((r||!a.is(":visible"))&&(a.css("opacity",0).show(),d=1),s=1;h>s;s++)a.animate({opacity:d},u,t.easing),d=1-d;a.animate({opacity:d},u,t.easing),a.queue(function(){o&&a.hide(),i()}),p>1&&c.splice.apply(c,[1,0].concat(c.splice(p,h+1))),a.dequeue()}})(jQuery);(function(e){e.effects.effect.puff=function(t,i){var s=e(this),a=e.effects.setMode(s,t.mode||"hide"),n="hide"===a,r=parseInt(t.percent,10)||150,o=r/100,h={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()};e.extend(t,{effect:"scale",queue:!1,fade:!0,mode:a,complete:i,percent:n?r:100,from:n?h:{height:h.height*o,width:h.width*o,outerHeight:h.outerHeight*o,outerWidth:h.outerWidth*o}}),s.effect(t)},e.effects.effect.scale=function(t,i){var s=e(this),a=e.extend(!0,{},t),n=e.effects.setMode(s,t.mode||"effect"),r=parseInt(t.percent,10)||(0===parseInt(t.percent,10)?0:"hide"===n?0:100),o=t.direction||"both",h=t.origin,l={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()},u={y:"horizontal"!==o?r/100:1,x:"vertical"!==o?r/100:1};a.effect="size",a.queue=!1,a.complete=i,"effect"!==n&&(a.origin=h||["middle","center"],a.restore=!0),a.from=t.from||("show"===n?{height:0,width:0,outerHeight:0,outerWidth:0}:l),a.to={height:l.height*u.y,width:l.width*u.x,outerHeight:l.outerHeight*u.y,outerWidth:l.outerWidth*u.x},a.fade&&("show"===n&&(a.from.opacity=0,a.to.opacity=1),"hide"===n&&(a.from.opacity=1,a.to.opacity=0)),s.effect(a)},e.effects.effect.size=function(t,i){var s,a,n,r=e(this),o=["position","top","bottom","left","right","width","height","overflow","opacity"],h=["position","top","bottom","left","right","overflow","opacity"],l=["width","height","overflow"],u=["fontSize"],d=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],c=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=e.effects.setMode(r,t.mode||"effect"),f=t.restore||"effect"!==p,m=t.scale||"both",g=t.origin||["middle","center"],v=r.css("position"),y=f?o:h,b={height:0,width:0,outerHeight:0,outerWidth:0};"show"===p&&r.show(),s={height:r.height(),width:r.width(),outerHeight:r.outerHeight(),outerWidth:r.outerWidth()},"toggle"===t.mode&&"show"===p?(r.from=t.to||b,r.to=t.from||s):(r.from=t.from||("show"===p?b:s),r.to=t.to||("hide"===p?b:s)),n={from:{y:r.from.height/s.height,x:r.from.width/s.width},to:{y:r.to.height/s.height,x:r.to.width/s.width}},("box"===m||"both"===m)&&(n.from.y!==n.to.y&&(y=y.concat(d),r.from=e.effects.setTransition(r,d,n.from.y,r.from),r.to=e.effects.setTransition(r,d,n.to.y,r.to)),n.from.x!==n.to.x&&(y=y.concat(c),r.from=e.effects.setTransition(r,c,n.from.x,r.from),r.to=e.effects.setTransition(r,c,n.to.x,r.to))),("content"===m||"both"===m)&&n.from.y!==n.to.y&&(y=y.concat(u).concat(l),r.from=e.effects.setTransition(r,u,n.from.y,r.from),r.to=e.effects.setTransition(r,u,n.to.y,r.to)),e.effects.save(r,y),r.show(),e.effects.createWrapper(r),r.css("overflow","hidden").css(r.from),g&&(a=e.effects.getBaseline(g,s),r.from.top=(s.outerHeight-r.outerHeight())*a.y,r.from.left=(s.outerWidth-r.outerWidth())*a.x,r.to.top=(s.outerHeight-r.to.outerHeight)*a.y,r.to.left=(s.outerWidth-r.to.outerWidth)*a.x),r.css(r.from),("content"===m||"both"===m)&&(d=d.concat(["marginTop","marginBottom"]).concat(u),c=c.concat(["marginLeft","marginRight"]),l=o.concat(d).concat(c),r.find("*[width]").each(function(){var i=e(this),s={height:i.height(),width:i.width(),outerHeight:i.outerHeight(),outerWidth:i.outerWidth()};f&&e.effects.save(i,l),i.from={height:s.height*n.from.y,width:s.width*n.from.x,outerHeight:s.outerHeight*n.from.y,outerWidth:s.outerWidth*n.from.x},i.to={height:s.height*n.to.y,width:s.width*n.to.x,outerHeight:s.height*n.to.y,outerWidth:s.width*n.to.x},n.from.y!==n.to.y&&(i.from=e.effects.setTransition(i,d,n.from.y,i.from),i.to=e.effects.setTransition(i,d,n.to.y,i.to)),n.from.x!==n.to.x&&(i.from=e.effects.setTransition(i,c,n.from.x,i.from),i.to=e.effects.setTransition(i,c,n.to.x,i.to)),i.css(i.from),i.animate(i.to,t.duration,t.easing,function(){f&&e.effects.restore(i,l)})})),r.animate(r.to,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){0===r.to.opacity&&r.css("opacity",r.from.opacity),"hide"===p&&r.hide(),e.effects.restore(r,y),f||("static"===v?r.css({position:"relative",top:r.to.top,left:r.to.left}):e.each(["top","left"],function(e,t){r.css(t,function(t,i){var s=parseInt(i,10),a=e?r.to.left:r.to.top;return"auto"===i?a+"px":s+a+"px"})})),e.effects.removeWrapper(r),i()}})}})(jQuery);(function(e){e.effects.effect.shake=function(t,i){var s,a=e(this),n=["position","top","bottom","left","right","height","width"],r=e.effects.setMode(a,t.mode||"effect"),o=t.direction||"left",h=t.distance||20,l=t.times||3,u=2*l+1,d=Math.round(t.duration/u),c="up"===o||"down"===o?"top":"left",p="up"===o||"left"===o,f={},m={},g={},v=a.queue(),y=v.length;for(e.effects.save(a,n),a.show(),e.effects.createWrapper(a),f[c]=(p?"-=":"+=")+h,m[c]=(p?"+=":"-=")+2*h,g[c]=(p?"-=":"+=")+2*h,a.animate(f,d,t.easing),s=1;l>s;s++)a.animate(m,d,t.easing).animate(g,d,t.easing);a.animate(m,d,t.easing).animate(f,d/2,t.easing).queue(function(){"hide"===r&&a.hide(),e.effects.restore(a,n),e.effects.removeWrapper(a),i()}),y>1&&v.splice.apply(v,[1,0].concat(v.splice(y,u+1))),a.dequeue()}})(jQuery);(function(e){e.effects.effect.slide=function(t,i){var s,a=e(this),n=["position","top","bottom","left","right","width","height"],r=e.effects.setMode(a,t.mode||"show"),o="show"===r,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h,d={};e.effects.save(a,n),a.show(),s=t.distance||a["top"===l?"outerHeight":"outerWidth"](!0),e.effects.createWrapper(a).css({overflow:"hidden"}),o&&a.css(l,u?isNaN(s)?"-"+s:-s:s),d[l]=(o?u?"+=":"-=":u?"-=":"+=")+s,a.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===r&&a.hide(),e.effects.restore(a,n),e.effects.removeWrapper(a),i()}})}})(jQuery);(function(e){e.effects.effect.transfer=function(t,i){var s=e(this),a=e(t.to),n="fixed"===a.css("position"),r=e("body"),o=n?r.scrollTop():0,h=n?r.scrollLeft():0,l=a.offset(),u={top:l.top-o,left:l.left-h,height:a.innerHeight(),width:a.innerWidth()},d=s.offset(),c=e("<div class='ui-effects-transfer'></div>").appendTo(document.body).addClass(t.className).css({top:d.top-o,left:d.left-h,height:s.innerHeight(),width:s.innerWidth(),position:n?"fixed":"absolute"}).animate(u,t.duration,t.easing,function(){c.remove(),i()})}})(jQuery); \ No newline at end of file diff --git a/assets/plugins/jvectormap/jquery-jvectormap-1.2.2.css b/assets/plugins/jvectormap/jquery-jvectormap-1.2.2.css deleted file mode 100644 index 63e717df..00000000 --- a/assets/plugins/jvectormap/jquery-jvectormap-1.2.2.css +++ /dev/null @@ -1,40 +0,0 @@ -.jvectormap-label { - position: absolute; - display: none; - border: solid 1px #CDCDCD; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - background: #292929; - color: white; - font-size: 10px!important; - padding: 3px; - z-index: 9999; -} - -.jvectormap-zoomin, .jvectormap-zoomout { - position: absolute; - top: 100%; - margin-top: -25px; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; - background: #d2d6de;//rgba(0,0,0,0.4); - padding: 5px; - color: #444; - cursor: pointer; - line-height: 10px; - text-align: center; - font-weight: bold; - box-shadow: 0 1px 2px rgba(0,0,0,0.2); -} - -.jvectormap-zoomin { - left: 100%; - margin-left: -50px; -} - -.jvectormap-zoomout { - left: 100%; - margin-left: -30px; -} \ No newline at end of file diff --git a/assets/plugins/jvectormap/jquery-jvectormap-1.2.2.min.js b/assets/plugins/jvectormap/jquery-jvectormap-1.2.2.min.js deleted file mode 100644 index ea54476f..00000000 --- a/assets/plugins/jvectormap/jquery-jvectormap-1.2.2.min.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * jVectorMap version 1.2.2 - * - * Copyright 2011-2013, Kirill Lebedev - * Licensed under the MIT license. - * - */(function(e){var t={set:{colors:1,values:1,backgroundColor:1,scaleColors:1,normalizeFunction:1,focus:1},get:{selectedRegions:1,selectedMarkers:1,mapObject:1,regionName:1}};e.fn.vectorMap=function(e){var n,r,i,n=this.children(".jvectormap-container").data("mapObject");if(e==="addMap")jvm.WorldMap.maps[arguments[1]]=arguments[2];else{if(!(e!=="set"&&e!=="get"||!t[e][arguments[1]]))return r=arguments[1].charAt(0).toUpperCase()+arguments[1].substr(1),n[e+r].apply(n,Array.prototype.slice.call(arguments,2));e=e||{},e.container=this,n=new jvm.WorldMap(e)}return this}})(jQuery),function(e){function r(t){var n=t||window.event,r=[].slice.call(arguments,1),i=0,s=!0,o=0,u=0;return t=e.event.fix(n),t.type="mousewheel",n.wheelDelta&&(i=n.wheelDelta/120),n.detail&&(i=-n.detail/3),u=i,n.axis!==undefined&&n.axis===n.HORIZONTAL_AXIS&&(u=0,o=-1*i),n.wheelDeltaY!==undefined&&(u=n.wheelDeltaY/120),n.wheelDeltaX!==undefined&&(o=-1*n.wheelDeltaX/120),r.unshift(t,i,o,u),(e.event.dispatch||e.event.handle).apply(this,r)}var t=["DOMMouseScroll","mousewheel"];if(e.event.fixHooks)for(var n=t.length;n;)e.event.fixHooks[t[--n]]=e.event.mouseHooks;e.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var e=t.length;e;)this.addEventListener(t[--e],r,!1);else this.onmousewheel=r},teardown:function(){if(this.removeEventListener)for(var e=t.length;e;)this.removeEventListener(t[--e],r,!1);else this.onmousewheel=null}},e.fn.extend({mousewheel:function(e){return e?this.bind("mousewheel",e):this.trigger("mousewheel")},unmousewheel:function(e){return this.unbind("mousewheel",e)}})}(jQuery);var jvm={inherits:function(e,t){function n(){}n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e,e.parentClass=t},mixin:function(e,t){var n;for(n in t.prototype)t.prototype.hasOwnProperty(n)&&(e.prototype[n]=t.prototype[n])},min:function(e){var t=Number.MAX_VALUE,n;if(e instanceof Array)for(n=0;n<e.length;n++)e[n]<t&&(t=e[n]);else for(n in e)e[n]<t&&(t=e[n]);return t},max:function(e){var t=Number.MIN_VALUE,n;if(e instanceof Array)for(n=0;n<e.length;n++)e[n]>t&&(t=e[n]);else for(n in e)e[n]>t&&(t=e[n]);return t},keys:function(e){var t=[],n;for(n in e)t.push(n);return t},values:function(e){var t=[],n,r;for(r=0;r<arguments.length;r++){e=arguments[r];for(n in e)t.push(e[n])}return t}};jvm.$=jQuery,jvm.AbstractElement=function(e,t){this.node=this.createElement(e),this.name=e,this.properties={},t&&this.set(t)},jvm.AbstractElement.prototype.set=function(e,t){var n;if(typeof e=="object")for(n in e)this.properties[n]=e[n],this.applyAttr(n,e[n]);else this.properties[e]=t,this.applyAttr(e,t)},jvm.AbstractElement.prototype.get=function(e){return this.properties[e]},jvm.AbstractElement.prototype.applyAttr=function(e,t){this.node.setAttribute(e,t)},jvm.AbstractElement.prototype.remove=function(){jvm.$(this.node).remove()},jvm.AbstractCanvasElement=function(e,t,n){this.container=e,this.setSize(t,n),this.rootElement=new jvm[this.classPrefix+"GroupElement"],this.node.appendChild(this.rootElement.node),this.container.appendChild(this.node)},jvm.AbstractCanvasElement.prototype.add=function(e,t){t=t||this.rootElement,t.add(e),e.canvas=this},jvm.AbstractCanvasElement.prototype.addPath=function(e,t,n){var r=new jvm[this.classPrefix+"PathElement"](e,t);return this.add(r,n),r},jvm.AbstractCanvasElement.prototype.addCircle=function(e,t,n){var r=new jvm[this.classPrefix+"CircleElement"](e,t);return this.add(r,n),r},jvm.AbstractCanvasElement.prototype.addGroup=function(e){var t=new jvm[this.classPrefix+"GroupElement"];return e?e.node.appendChild(t.node):this.node.appendChild(t.node),t.canvas=this,t},jvm.AbstractShapeElement=function(e,t,n){this.style=n||{},this.style.current={},this.isHovered=!1,this.isSelected=!1,this.updateStyle()},jvm.AbstractShapeElement.prototype.setHovered=function(e){this.isHovered!==e&&(this.isHovered=e,this.updateStyle())},jvm.AbstractShapeElement.prototype.setSelected=function(e){this.isSelected!==e&&(this.isSelected=e,this.updateStyle(),jvm.$(this.node).trigger("selected",[e]))},jvm.AbstractShapeElement.prototype.setStyle=function(e,t){var n={};typeof e=="object"?n=e:n[e]=t,jvm.$.extend(this.style.current,n),this.updateStyle()},jvm.AbstractShapeElement.prototype.updateStyle=function(){var e={};jvm.AbstractShapeElement.mergeStyles(e,this.style.initial),jvm.AbstractShapeElement.mergeStyles(e,this.style.current),this.isHovered&&jvm.AbstractShapeElement.mergeStyles(e,this.style.hover),this.isSelected&&(jvm.AbstractShapeElement.mergeStyles(e,this.style.selected),this.isHovered&&jvm.AbstractShapeElement.mergeStyles(e,this.style.selectedHover)),this.set(e)},jvm.AbstractShapeElement.mergeStyles=function(e,t){var n;t=t||{};for(n in t)t[n]===null?delete e[n]:e[n]=t[n]},jvm.SVGElement=function(e,t){jvm.SVGElement.parentClass.apply(this,arguments)},jvm.inherits(jvm.SVGElement,jvm.AbstractElement),jvm.SVGElement.svgns="http://www.w3.org/2000/svg",jvm.SVGElement.prototype.createElement=function(e){return document.createElementNS(jvm.SVGElement.svgns,e)},jvm.SVGElement.prototype.addClass=function(e){this.node.setAttribute("class",e)},jvm.SVGElement.prototype.getElementCtr=function(e){return jvm["SVG"+e]},jvm.SVGElement.prototype.getBBox=function(){return this.node.getBBox()},jvm.SVGGroupElement=function(){jvm.SVGGroupElement.parentClass.call(this,"g")},jvm.inherits(jvm.SVGGroupElement,jvm.SVGElement),jvm.SVGGroupElement.prototype.add=function(e){this.node.appendChild(e.node)},jvm.SVGCanvasElement=function(e,t,n){this.classPrefix="SVG",jvm.SVGCanvasElement.parentClass.call(this,"svg"),jvm.AbstractCanvasElement.apply(this,arguments)},jvm.inherits(jvm.SVGCanvasElement,jvm.SVGElement),jvm.mixin(jvm.SVGCanvasElement,jvm.AbstractCanvasElement),jvm.SVGCanvasElement.prototype.setSize=function(e,t){this.width=e,this.height=t,this.node.setAttribute("width",e),this.node.setAttribute("height",t)},jvm.SVGCanvasElement.prototype.applyTransformParams=function(e,t,n){this.scale=e,this.transX=t,this.transY=n,this.rootElement.node.setAttribute("transform","scale("+e+") translate("+t+", "+n+")")},jvm.SVGShapeElement=function(e,t,n){jvm.SVGShapeElement.parentClass.call(this,e,t),jvm.AbstractShapeElement.apply(this,arguments)},jvm.inherits(jvm.SVGShapeElement,jvm.SVGElement),jvm.mixin(jvm.SVGShapeElement,jvm.AbstractShapeElement),jvm.SVGPathElement=function(e,t){jvm.SVGPathElement.parentClass.call(this,"path",e,t),this.node.setAttribute("fill-rule","evenodd")},jvm.inherits(jvm.SVGPathElement,jvm.SVGShapeElement),jvm.SVGCircleElement=function(e,t){jvm.SVGCircleElement.parentClass.call(this,"circle",e,t)},jvm.inherits(jvm.SVGCircleElement,jvm.SVGShapeElement),jvm.VMLElement=function(e,t){jvm.VMLElement.VMLInitialized||jvm.VMLElement.initializeVML(),jvm.VMLElement.parentClass.apply(this,arguments)},jvm.inherits(jvm.VMLElement,jvm.AbstractElement),jvm.VMLElement.VMLInitialized=!1,jvm.VMLElement.initializeVML=function(){try{document.namespaces.rvml||document.namespaces.add("rvml","urn:schemas-microsoft-com:vml"),jvm.VMLElement.prototype.createElement=function(e){return document.createElement("<rvml:"+e+' class="rvml">')}}catch(e){jvm.VMLElement.prototype.createElement=function(e){return document.createElement("<"+e+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}document.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)"),jvm.VMLElement.VMLInitialized=!0},jvm.VMLElement.prototype.getElementCtr=function(e){return jvm["VML"+e]},jvm.VMLElement.prototype.addClass=function(e){jvm.$(this.node).addClass(e)},jvm.VMLElement.prototype.applyAttr=function(e,t){this.node[e]=t},jvm.VMLElement.prototype.getBBox=function(){var e=jvm.$(this.node);return{x:e.position().left/this.canvas.scale,y:e.position().top/this.canvas.scale,width:e.width()/this.canvas.scale,height:e.height()/this.canvas.scale}},jvm.VMLGroupElement=function(){jvm.VMLGroupElement.parentClass.call(this,"group"),this.node.style.left="0px",this.node.style.top="0px",this.node.coordorigin="0 0"},jvm.inherits(jvm.VMLGroupElement,jvm.VMLElement),jvm.VMLGroupElement.prototype.add=function(e){this.node.appendChild(e.node)},jvm.VMLCanvasElement=function(e,t,n){this.classPrefix="VML",jvm.VMLCanvasElement.parentClass.call(this,"group"),jvm.AbstractCanvasElement.apply(this,arguments),this.node.style.position="absolute"},jvm.inherits(jvm.VMLCanvasElement,jvm.VMLElement),jvm.mixin(jvm.VMLCanvasElement,jvm.AbstractCanvasElement),jvm.VMLCanvasElement.prototype.setSize=function(e,t){var n,r,i,s;this.width=e,this.height=t,this.node.style.width=e+"px",this.node.style.height=t+"px",this.node.coordsize=e+" "+t,this.node.coordorigin="0 0";if(this.rootElement){n=this.rootElement.node.getElementsByTagName("shape");for(i=0,s=n.length;i<s;i++)n[i].coordsize=e+" "+t,n[i].style.width=e+"px",n[i].style.height=t+"px";r=this.node.getElementsByTagName("group");for(i=0,s=r.length;i<s;i++)r[i].coordsize=e+" "+t,r[i].style.width=e+"px",r[i].style.height=t+"px"}},jvm.VMLCanvasElement.prototype.applyTransformParams=function(e,t,n){this.scale=e,this.transX=t,this.transY=n,this.rootElement.node.coordorigin=this.width-t-this.width/100+","+(this.height-n-this.height/100),this.rootElement.node.coordsize=this.width/e+","+this.height/e},jvm.VMLShapeElement=function(e,t){jvm.VMLShapeElement.parentClass.call(this,e,t),this.fillElement=new jvm.VMLElement("fill"),this.strokeElement=new jvm.VMLElement("stroke"),this.node.appendChild(this.fillElement.node),this.node.appendChild(this.strokeElement.node),this.node.stroked=!1,jvm.AbstractShapeElement.apply(this,arguments)},jvm.inherits(jvm.VMLShapeElement,jvm.VMLElement),jvm.mixin(jvm.VMLShapeElement,jvm.AbstractShapeElement),jvm.VMLShapeElement.prototype.applyAttr=function(e,t){switch(e){case"fill":this.node.fillcolor=t;break;case"fill-opacity":this.fillElement.node.opacity=Math.round(t*100)+"%";break;case"stroke":t==="none"?this.node.stroked=!1:this.node.stroked=!0,this.node.strokecolor=t;break;case"stroke-opacity":this.strokeElement.node.opacity=Math.round(t*100)+"%";break;case"stroke-width":parseInt(t,10)===0?this.node.stroked=!1:this.node.stroked=!0,this.node.strokeweight=t;break;case"d":this.node.path=jvm.VMLPathElement.pathSvgToVml(t);break;default:jvm.VMLShapeElement.parentClass.prototype.applyAttr.apply(this,arguments)}},jvm.VMLPathElement=function(e,t){var n=new jvm.VMLElement("skew");jvm.VMLPathElement.parentClass.call(this,"shape",e,t),this.node.coordorigin="0 0",n.node.on=!0,n.node.matrix="0.01,0,0,0.01,0,0",n.node.offset="0,0",this.node.appendChild(n.node)},jvm.inherits(jvm.VMLPathElement,jvm.VMLShapeElement),jvm.VMLPathElement.prototype.applyAttr=function(e,t){e==="d"?this.node.path=jvm.VMLPathElement.pathSvgToVml(t):jvm.VMLShapeElement.prototype.applyAttr.call(this,e,t)},jvm.VMLPathElement.pathSvgToVml=function(e){var t="",n=0,r=0,i,s;return e=e.replace(/(-?\d+)e(-?\d+)/g,"0"),e.replace(/([MmLlHhVvCcSs])\s*((?:-?\d*(?:\.\d+)?\s*,?\s*)+)/g,function(e,t,o,u){o=o.replace(/(\d)-/g,"$1,-").replace(/^\s+/g,"").replace(/\s+$/g,"").replace(/\s+/g,",").split(","),o[0]||o.shift();for(var a=0,f=o.length;a<f;a++)o[a]=Math.round(100*o[a]);switch(t){case"m":return n+=o[0],r+=o[1],"t"+o.join(",");case"M":return n=o[0],r=o[1],"m"+o.join(",");case"l":return n+=o[0],r+=o[1],"r"+o.join(",");case"L":return n=o[0],r=o[1],"l"+o.join(",");case"h":return n+=o[0],"r"+o[0]+",0";case"H":return n=o[0],"l"+n+","+r;case"v":return r+=o[0],"r0,"+o[0];case"V":return r=o[0],"l"+n+","+r;case"c":return i=n+o[o.length-4],s=r+o[o.length-3],n+=o[o.length-2],r+=o[o.length-1],"v"+o.join(",");case"C":return i=o[o.length-4],s=o[o.length-3],n=o[o.length-2],r=o[o.length-1],"c"+o.join(",");case"s":return o.unshift(r-s),o.unshift(n-i),i=n+o[o.length-4],s=r+o[o.length-3],n+=o[o.length-2],r+=o[o.length-1],"v"+o.join(",");case"S":return o.unshift(r+r-s),o.unshift(n+n-i),i=o[o.length-4],s=o[o.length-3],n=o[o.length-2],r=o[o.length-1],"c"+o.join(",")}return""}).replace(/z/g,"e")},jvm.VMLCircleElement=function(e,t){jvm.VMLCircleElement.parentClass.call(this,"oval",e,t)},jvm.inherits(jvm.VMLCircleElement,jvm.VMLShapeElement),jvm.VMLCircleElement.prototype.applyAttr=function(e,t){switch(e){case"r":this.node.style.width=t*2+"px",this.node.style.height=t*2+"px",this.applyAttr("cx",this.get("cx")||0),this.applyAttr("cy",this.get("cy")||0);break;case"cx":if(!t)return;this.node.style.left=t-(this.get("r")||0)+"px";break;case"cy":if(!t)return;this.node.style.top=t-(this.get("r")||0)+"px";break;default:jvm.VMLCircleElement.parentClass.prototype.applyAttr.call(this,e,t)}},jvm.VectorCanvas=function(e,t,n){return this.mode=window.SVGAngle?"svg":"vml",this.mode=="svg"?this.impl=new jvm.SVGCanvasElement(e,t,n):this.impl=new jvm.VMLCanvasElement(e,t,n),this.impl},jvm.SimpleScale=function(e){this.scale=e},jvm.SimpleScale.prototype.getValue=function(e){return e},jvm.OrdinalScale=function(e){this.scale=e},jvm.OrdinalScale.prototype.getValue=function(e){return this.scale[e]},jvm.NumericScale=function(e,t,n,r){this.scale=[],t=t||"linear",e&&this.setScale(e),t&&this.setNormalizeFunction(t),n&&this.setMin(n),r&&this.setMax(r)},jvm.NumericScale.prototype={setMin:function(e){this.clearMinValue=e,typeof this.normalize=="function"?this.minValue=this.normalize(e):this.minValue=e},setMax:function(e){this.clearMaxValue=e,typeof this.normalize=="function"?this.maxValue=this.normalize(e):this.maxValue=e},setScale:function(e){var t;for(t=0;t<e.length;t++)this.scale[t]=[e[t]]},setNormalizeFunction:function(e){e==="polynomial"?this.normalize=function(e){return Math.pow(e,.2)}:e==="linear"?delete this.normalize:this.normalize=e,this.setMin(this.clearMinValue),this.setMax(this.clearMaxValue)},getValue:function(e){var t=[],n=0,r,i=0,s;typeof this.normalize=="function"&&(e=this.normalize(e));for(i=0;i<this.scale.length-1;i++)r=this.vectorLength(this.vectorSubtract(this.scale[i+1],this.scale[i])),t.push(r),n+=r;s=(this.maxValue-this.minValue)/n;for(i=0;i<t.length;i++)t[i]*=s;i=0,e-=this.minValue;while(e-t[i]>=0)e-=t[i],i++;return i==this.scale.length-1?e=this.vectorToNum(this.scale[i]):e=this.vectorToNum(this.vectorAdd(this.scale[i],this.vectorMult(this.vectorSubtract(this.scale[i+1],this.scale[i]),e/t[i]))),e},vectorToNum:function(e){var t=0,n;for(n=0;n<e.length;n++)t+=Math.round(e[n])*Math.pow(256,e.length-n-1);return t},vectorSubtract:function(e,t){var n=[],r;for(r=0;r<e.length;r++)n[r]=e[r]-t[r];return n},vectorAdd:function(e,t){var n=[],r;for(r=0;r<e.length;r++)n[r]=e[r]+t[r];return n},vectorMult:function(e,t){var n=[],r;for(r=0;r<e.length;r++)n[r]=e[r]*t;return n},vectorLength:function(e){var t=0,n;for(n=0;n<e.length;n++)t+=e[n]*e[n];return Math.sqrt(t)}},jvm.ColorScale=function(e,t,n,r){jvm.ColorScale.parentClass.apply(this,arguments)},jvm.inherits(jvm.ColorScale,jvm.NumericScale),jvm.ColorScale.prototype.setScale=function(e){var t;for(t=0;t<e.length;t++)this.scale[t]=jvm.ColorScale.rgbToArray(e[t])},jvm.ColorScale.prototype.getValue=function(e){return jvm.ColorScale.numToRgb(jvm.ColorScale.parentClass.prototype.getValue.call(this,e))},jvm.ColorScale.arrayToRgb=function(e){var t="#",n,r;for(r=0;r<e.length;r++)n=e[r].toString(16),t+=n.length==1?"0"+n:n;return t},jvm.ColorScale.numToRgb=function(e){e=e.toString(16);while(e.length<6)e="0"+e;return"#"+e},jvm.ColorScale.rgbToArray=function(e){return e=e.substr(1),[parseInt(e.substr(0,2),16),parseInt(e.substr(2,2),16),parseInt(e.substr(4,2),16)]},jvm.DataSeries=function(e,t){var n;e=e||{},e.attribute=e.attribute||"fill",this.elements=t,this.params=e,e.attributes&&this.setAttributes(e.attributes),jvm.$.isArray(e.scale)?(n=e.attribute==="fill"||e.attribute==="stroke"?jvm.ColorScale:jvm.NumericScale,this.scale=new n(e.scale,e.normalizeFunction,e.min,e.max)):e.scale?this.scale=new jvm.OrdinalScale(e.scale):this.scale=new jvm.SimpleScale(e.scale),this.values=e.values||{},this.setValues(this.values)},jvm.DataSeries.prototype={setAttributes:function(e,t){var n=e,r;if(typeof e=="string")this.elements[e]&&this.elements[e].setStyle(this.params.attribute,t);else for(r in n)this.elements[r]&&this.elements[r].element.setStyle(this.params.attribute,n[r])},setValues:function(e){var t=Number.MIN_VALUE,n=Number.MAX_VALUE,r,i,s={};if(this.scale instanceof jvm.OrdinalScale||this.scale instanceof jvm.SimpleScale)for(i in e)e[i]?s[i]=this.scale.getValue(e[i]):s[i]=this.elements[i].element.style.initial[this.params.attribute];else{if(!this.params.min||!this.params.max){for(i in e)r=parseFloat(e[i]),r>t&&(t=e[i]),r<n&&(n=r);this.params.min||this.scale.setMin(n),this.params.max||this.scale.setMax(t),this.params.min=n,this.params.max=t}for(i in e)r=parseFloat(e[i]),isNaN(r)?s[i]=this.elements[i].element.style.initial[this.params.attribute]:s[i]=this.scale.getValue(r)}this.setAttributes(s),jvm.$.extend(this.values,e)},clear:function(){var e,t={};for(e in this.values)this.elements[e]&&(t[e]=this.elements[e].element.style.initial[this.params.attribute]);this.setAttributes(t),this.values={}},setScale:function(e){this.scale.setScale(e),this.values&&this.setValues(this.values)},setNormalizeFunction:function(e){this.scale.setNormalizeFunction(e),this.values&&this.setValues(this.values)}},jvm.Proj={degRad:180/Math.PI,radDeg:Math.PI/180,radius:6381372,sgn:function(e){return e>0?1:e<0?-1:e},mill:function(e,t,n){return{x:this.radius*(t-n)*this.radDeg,y:-this.radius*Math.log(Math.tan((45+.4*e)*this.radDeg))/.8}},mill_inv:function(e,t,n){return{lat:(2.5*Math.atan(Math.exp(.8*t/this.radius))-5*Math.PI/8)*this.degRad,lng:(n*this.radDeg+e/this.radius)*this.degRad}},merc:function(e,t,n){return{x:this.radius*(t-n)*this.radDeg,y:-this.radius*Math.log(Math.tan(Math.PI/4+e*Math.PI/360))}},merc_inv:function(e,t,n){return{lat:(2*Math.atan(Math.exp(t/this.radius))-Math.PI/2)*this.degRad,lng:(n*this.radDeg+e/this.radius)*this.degRad}},aea:function(e,t,n){var r=0,i=n*this.radDeg,s=29.5*this.radDeg,o=45.5*this.radDeg,u=e*this.radDeg,a=t*this.radDeg,f=(Math.sin(s)+Math.sin(o))/2,l=Math.cos(s)*Math.cos(s)+2*f*Math.sin(s),c=f*(a-i),h=Math.sqrt(l-2*f*Math.sin(u))/f,p=Math.sqrt(l-2*f*Math.sin(r))/f;return{x:h*Math.sin(c)*this.radius,y:-(p-h*Math.cos(c))*this.radius}},aea_inv:function(e,t,n){var r=e/this.radius,i=t/this.radius,s=0,o=n*this.radDeg,u=29.5*this.radDeg,a=45.5*this.radDeg,f=(Math.sin(u)+Math.sin(a))/2,l=Math.cos(u)*Math.cos(u)+2*f*Math.sin(u),c=Math.sqrt(l-2*f*Math.sin(s))/f,h=Math.sqrt(r*r+(c-i)*(c-i)),p=Math.atan(r/(c-i));return{lat:Math.asin((l-h*h*f*f)/(2*f))*this.degRad,lng:(o+p/f)*this.degRad}},lcc:function(e,t,n){var r=0,i=n*this.radDeg,s=t*this.radDeg,o=33*this.radDeg,u=45*this.radDeg,a=e*this.radDeg,f=Math.log(Math.cos(o)*(1/Math.cos(u)))/Math.log(Math.tan(Math.PI/4+u/2)*(1/Math.tan(Math.PI/4+o/2))),l=Math.cos(o)*Math.pow(Math.tan(Math.PI/4+o/2),f)/f,c=l*Math.pow(1/Math.tan(Math.PI/4+a/2),f),h=l*Math.pow(1/Math.tan(Math.PI/4+r/2),f);return{x:c*Math.sin(f*(s-i))*this.radius,y:-(h-c*Math.cos(f*(s-i)))*this.radius}},lcc_inv:function(e,t,n){var r=e/this.radius,i=t/this.radius,s=0,o=n*this.radDeg,u=33*this.radDeg,a=45*this.radDeg,f=Math.log(Math.cos(u)*(1/Math.cos(a)))/Math.log(Math.tan(Math.PI/4+a/2)*(1/Math.tan(Math.PI/4+u/2))),l=Math.cos(u)*Math.pow(Math.tan(Math.PI/4+u/2),f)/f,c=l*Math.pow(1/Math.tan(Math.PI/4+s/2),f),h=this.sgn(f)*Math.sqrt(r*r+(c-i)*(c-i)),p=Math.atan(r/(c-i));return{lat:(2*Math.atan(Math.pow(l/h,1/f))-Math.PI/2)*this.degRad,lng:(o+p/f)*this.degRad}}},jvm.WorldMap=function(e){var t=this,n;this.params=jvm.$.extend(!0,{},jvm.WorldMap.defaultParams,e);if(!jvm.WorldMap.maps[this.params.map])throw new Error("Attempt to use map which was not loaded: "+this.params.map);this.mapData=jvm.WorldMap.maps[this.params.map],this.markers={},this.regions={},this.regionsColors={},this.regionsData={},this.container=jvm.$("<div>").css({width:"100%",height:"100%"}).addClass("jvectormap-container"),this.params.container.append(this.container),this.container.data("mapObject",this),this.container.css({position:"relative",overflow:"hidden"}),this.defaultWidth=this.mapData.width,this.defaultHeight=this.mapData.height,this.setBackgroundColor(this.params.backgroundColor),this.onResize=function(){t.setSize()},jvm.$(window).resize(this.onResize);for(n in jvm.WorldMap.apiEvents)this.params[n]&&this.container.bind(jvm.WorldMap.apiEvents[n]+".jvectormap",this.params[n]);this.canvas=new jvm.VectorCanvas(this.container[0],this.width,this.height),"ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch?this.params.bindTouchEvents&&this.bindContainerTouchEvents():this.bindContainerEvents(),this.bindElementEvents(),this.createLabel(),this.params.zoomButtons&&this.bindZoomButtons(),this.createRegions(),this.createMarkers(this.params.markers||{}),this.setSize(),this.params.focusOn&&(typeof this.params.focusOn=="object"?this.setFocus.call(this,this.params.focusOn.scale,this.params.focusOn.x,this.params.focusOn.y):this.setFocus.call(this,this.params.focusOn)),this.params.selectedRegions&&this.setSelectedRegions(this.params.selectedRegions),this.params.selectedMarkers&&this.setSelectedMarkers(this.params.selectedMarkers),this.params.series&&this.createSeries()},jvm.WorldMap.prototype={transX:0,transY:0,scale:1,baseTransX:0,baseTransY:0,baseScale:1,width:0,height:0,setBackgroundColor:function(e){this.container.css("background-color",e)},resize:function(){var e=this.baseScale;this.width/this.height>this.defaultWidth/this.defaultHeight?(this.baseScale=this.height/this.defaultHeight,this.baseTransX=Math.abs(this.width-this.defaultWidth*this.baseScale)/(2*this.baseScale)):(this.baseScale=this.width/this.defaultWidth,this.baseTransY=Math.abs(this.height-this.defaultHeight*this.baseScale)/(2*this.baseScale)),this.scale*=this.baseScale/e,this.transX*=this.baseScale/e,this.transY*=this.baseScale/e},setSize:function(){this.width=this.container.width(),this.height=this.container.height(),this.resize(),this.canvas.setSize(this.width,this.height),this.applyTransform()},reset:function(){var e,t;for(e in this.series)for(t=0;t<this.series[e].length;t++)this.series[e][t].clear();this.scale=this.baseScale,this.transX=this.baseTransX,this.transY=this.baseTransY,this.applyTransform()},applyTransform:function(){var e,t,n,r;this.defaultWidth*this.scale<=this.width?(e=(this.width-this.defaultWidth*this.scale)/(2*this.scale),n=(this.width-this.defaultWidth*this.scale)/(2*this.scale)):(e=0,n=(this.width-this.defaultWidth*this.scale)/this.scale),this.defaultHeight*this.scale<=this.height?(t=(this.height-this.defaultHeight*this.scale)/(2*this.scale),r=(this.height-this.defaultHeight*this.scale)/(2*this.scale)):(t=0,r=(this.height-this.defaultHeight*this.scale)/this.scale),this.transY>t?this.transY=t:this.transY<r&&(this.transY=r),this.transX>e?this.transX=e:this.transX<n&&(this.transX=n),this.canvas.applyTransformParams(this.scale,this.transX,this.transY),this.markers&&this.repositionMarkers(),this.container.trigger("viewportChange",[this.scale/this.baseScale,this.transX,this.transY])},bindContainerEvents:function(){var e=!1,t,n,r=this;this.container.mousemove(function(i){return e&&(r.transX-=(t-i.pageX)/r.scale,r.transY-=(n-i.pageY)/r.scale,r.applyTransform(),t=i.pageX,n=i.pageY),!1}).mousedown(function(r){return e=!0,t=r.pageX,n=r.pageY,!1}),jvm.$("body").mouseup(function(){e=!1}),this.params.zoomOnScroll&&this.container.mousewheel(function(e,t,n,i){var s=jvm.$(r.container).offset(),o=e.pageX-s.left,u=e.pageY-s.top,a=Math.pow(1.3,i);r.label.hide(),r.setScale(r.scale*a,o,u),e.preventDefault()})},bindContainerTouchEvents:function(){var e,t,n=this,r,i,s,o,u,a=function(a){var f=a.originalEvent.touches,l,c,h,p;a.type=="touchstart"&&(u=0),f.length==1?(u==1&&(h=n.transX,p=n.transY,n.transX-=(r-f[0].pageX)/n.scale,n.transY-=(i-f[0].pageY)/n.scale,n.applyTransform(),n.label.hide(),(h!=n.transX||p!=n.transY)&&a.preventDefault()),r=f[0].pageX,i=f[0].pageY):f.length==2&&(u==2?(c=Math.sqrt(Math.pow(f[0].pageX-f[1].pageX,2)+Math.pow(f[0].pageY-f[1].pageY,2))/t,n.setScale(e*c,s,o),n.label.hide(),a.preventDefault()):(l=jvm.$(n.container).offset(),f[0].pageX>f[1].pageX?s=f[1].pageX+(f[0].pageX-f[1].pageX)/2:s=f[0].pageX+(f[1].pageX-f[0].pageX)/2,f[0].pageY>f[1].pageY?o=f[1].pageY+(f[0].pageY-f[1].pageY)/2:o=f[0].pageY+(f[1].pageY-f[0].pageY)/2,s-=l.left,o-=l.top,e=n.scale,t=Math.sqrt(Math.pow(f[0].pageX-f[1].pageX,2)+Math.pow(f[0].pageY-f[1].pageY,2)))),u=f.length};jvm.$(this.container).bind("touchstart",a),jvm.$(this.container).bind("touchmove",a)},bindElementEvents:function(){var e=this,t;this.container.mousemove(function(){t=!0}),this.container.delegate("[class~='jvectormap-element']","mouseover mouseout",function(t){var n=this,r=jvm.$(this).attr("class").baseVal?jvm.$(this).attr("class").baseVal:jvm.$(this).attr("class"),i=r.indexOf("jvectormap-region")===-1?"marker":"region",s=i=="region"?jvm.$(this).attr("data-code"):jvm.$(this).attr("data-index"),o=i=="region"?e.regions[s].element:e.markers[s].element,u=i=="region"?e.mapData.paths[s].name:e.markers[s].config.name||"",a=jvm.$.Event(i+"LabelShow.jvectormap"),f=jvm.$.Event(i+"Over.jvectormap");t.type=="mouseover"?(e.container.trigger(f,[s]),f.isDefaultPrevented()||o.setHovered(!0),e.label.text(u),e.container.trigger(a,[e.label,s]),a.isDefaultPrevented()||(e.label.show(),e.labelWidth=e.label.width(),e.labelHeight=e.label.height())):(o.setHovered(!1),e.label.hide(),e.container.trigger(i+"Out.jvectormap",[s]))}),this.container.delegate("[class~='jvectormap-element']","mousedown",function(e){t=!1}),this.container.delegate("[class~='jvectormap-element']","mouseup",function(n){var r=this,i=jvm.$(this).attr("class").baseVal?jvm.$(this).attr("class").baseVal:jvm.$(this).attr("class"),s=i.indexOf("jvectormap-region")===-1?"marker":"region",o=s=="region"?jvm.$(this).attr("data-code"):jvm.$(this).attr("data-index"),u=jvm.$.Event(s+"Click.jvectormap"),a=s=="region"?e.regions[o].element:e.markers[o].element;if(!t){e.container.trigger(u,[o]);if(s==="region"&&e.params.regionsSelectable||s==="marker"&&e.params.markersSelectable)u.isDefaultPrevented()||(e.params[s+"sSelectableOne"]&&e.clearSelected(s+"s"),a.setSelected(!a.isSelected))}})},bindZoomButtons:function(){var e=this;jvm.$("<div/>").addClass("jvectormap-zoomin").text("+").appendTo(this.container),jvm.$("<div/>").addClass("jvectormap-zoomout").html("&#x2212;").appendTo(this.container),this.container.find(".jvectormap-zoomin").click(function(){e.setScale(e.scale*e.params.zoomStep,e.width/2,e.height/2)}),this.container.find(".jvectormap-zoomout").click(function(){e.setScale(e.scale/e.params.zoomStep,e.width/2,e.height/2)})},createLabel:function(){var e=this;this.label=jvm.$("<div/>").addClass("jvectormap-label").appendTo(jvm.$("body")),this.container.mousemove(function(t){var n=t.pageX-15-e.labelWidth,r=t.pageY-15-e.labelHeight;n<5&&(n=t.pageX+15),r<5&&(r=t.pageY+15),e.label.is(":visible")&&e.label.css({left:n,top:r})})},setScale:function(e,t,n,r){var i,s=jvm.$.Event("zoom.jvectormap");e>this.params.zoomMax*this.baseScale?e=this.params.zoomMax*this.baseScale:e<this.params.zoomMin*this.baseScale&&(e=this.params.zoomMin*this.baseScale),typeof t!="undefined"&&typeof n!="undefined"&&(i=e/this.scale,r?(this.transX=t+this.defaultWidth*(this.width/(this.defaultWidth*e))/2,this.transY=n+this.defaultHeight*(this.height/(this.defaultHeight*e))/2):(this.transX-=(i-1)/e*t,this.transY-=(i-1)/e*n)),this.scale=e,this.applyTransform(),this.container.trigger(s,[e/this.baseScale])},setFocus:function(e,t,n){var r,i,s,o,u;if(jvm.$.isArray(e)||this.regions[e]){jvm.$.isArray(e)?o=e:o=[e];for(u=0;u<o.length;u++)this.regions[o[u]]&&(i=this.regions[o[u]].element.getBBox(),i&&(typeof r=="undefined"?r=i:(s={x:Math.min(r.x,i.x),y:Math.min(r.y,i.y),width:Math.max(r.x+r.width,i.x+i.width)-Math.min(r.x,i.x),height:Math.max(r.y+r.height,i.y+i.height)-Math.min(r.y,i.y)},r=s)));this.setScale(Math.min(this.width/r.width,this.height/r.height),-(r.x+r.width/2),-(r.y+r.height/2),!0)}else e*=this.baseScale,this.setScale(e,-t*this.defaultWidth,-n*this.defaultHeight,!0)},getSelected:function(e){var t,n=[];for(t in this[e])this[e][t].element.isSelected&&n.push(t);return n},getSelectedRegions:function(){return this.getSelected("regions")},getSelectedMarkers:function(){return this.getSelected("markers")},setSelected:function(e,t){var n;typeof t!="object"&&(t=[t]);if(jvm.$.isArray(t))for(n=0;n<t.length;n++)this[e][t[n]].element.setSelected(!0);else for(n in t)this[e][n].element.setSelected(!!t[n])},setSelectedRegions:function(e){this.setSelected("regions",e)},setSelectedMarkers:function(e){this.setSelected("markers",e)},clearSelected:function(e){var t={},n=this.getSelected(e),r;for(r=0;r<n.length;r++)t[n[r]]=!1;this.setSelected(e,t)},clearSelectedRegions:function(){this.clearSelected("regions")},clearSelectedMarkers:function(){this.clearSelected("markers")},getMapObject:function(){return this},getRegionName:function(e){return this.mapData.paths[e].name},createRegions:function(){var e,t,n=this;for(e in this.mapData.paths)t=this.canvas.addPath({d:this.mapData.paths[e].path,"data-code":e},jvm.$.extend(!0,{},this.params.regionStyle)),jvm.$(t.node).bind("selected",function(e,t){n.container.trigger("regionSelected.jvectormap",[jvm.$(this).attr("data-code"),t,n.getSelectedRegions()])}),t.addClass("jvectormap-region jvectormap-element"),this.regions[e]={element:t,config:this.mapData.paths[e]}},createMarkers:function(e){var t,n,r,i,s,o=this;this.markersGroup=this.markersGroup||this.canvas.addGroup();if(jvm.$.isArray(e)){s=e.slice(),e={};for(t=0;t<s.length;t++)e[t]=s[t]}for(t in e)i=e[t]instanceof Array?{latLng:e[t]}:e[t],r=this.getMarkerPosition(i),r!==!1&&(n=this.canvas.addCircle({"data-index":t,cx:r.x,cy:r.y},jvm.$.extend(!0,{},this.params.markerStyle,{initial:i.style||{}}),this.markersGroup),n.addClass("jvectormap-marker jvectormap-element"),jvm.$(n.node).bind("selected",function(e,t){o.container.trigger("markerSelected.jvectormap",[jvm.$(this).attr("data-index"),t,o.getSelectedMarkers()])}),this.markers[t]&&this.removeMarkers([t]),this.markers[t]={element:n,config:i})},repositionMarkers:function(){var e,t;for(e in this.markers)t=this.getMarkerPosition(this.markers[e].config),t!==!1&&this.markers[e].element.setStyle({cx:t.x,cy:t.y})},getMarkerPosition:function(e){return jvm.WorldMap.maps[this.params.map].projection?this.latLngToPoint.apply(this,e.latLng||[0,0]):{x:e.coords[0]*this.scale+this.transX*this.scale,y:e.coords[1]*this.scale+this.transY*this.scale}},addMarker:function(e,t,n){var r={},i=[],s,o,n=n||[];r[e]=t;for(o=0;o<n.length;o++)s={},s[e]=n[o],i.push(s);this.addMarkers(r,i)},addMarkers:function(e,t){var n;t=t||[],this.createMarkers(e);for(n=0;n<t.length;n++)this.series.markers[n].setValues(t[n]||{})},removeMarkers:function(e){var t;for(t=0;t<e.length;t++)this.markers[e[t]].element.remove(),delete this.markers[e[t]]},removeAllMarkers:function(){var e,t=[];for(e in this.markers)t.push(e);this.removeMarkers(t)},latLngToPoint:function(e,t){var n,r=jvm.WorldMap.maps[this.params.map].projection,i=r.centralMeridian,s=this.width-this.baseTransX*2*this.baseScale,o=this.height-this.baseTransY*2*this.baseScale,u,a,f=this.scale/this.baseScale;return t<-180+i&&(t+=360),n=jvm.Proj[r.type](e,t,i),u=this.getInsetForPoint(n.x,n.y),u?(a=u.bbox,n.x=(n.x-a[0].x)/(a[1].x-a[0].x)*u.width*this.scale,n.y=(n.y-a[0].y)/(a[1].y-a[0].y)*u.height*this.scale,{x:n.x+this.transX*this.scale+u.left*this.scale,y:n.y+this.transY*this.scale+u.top*this.scale}):!1},pointToLatLng:function(e,t){var n=jvm.WorldMap.maps[this.params.map].projection,r=n.centralMeridian,i=jvm.WorldMap.maps[this.params.map].insets,s,o,u,a,f;for(s=0;s<i.length;s++){o=i[s],u=o.bbox,a=e-(this.transX*this.scale+o.left*this.scale),f=t-(this.transY*this.scale+o.top*this.scale),a=a/(o.width*this.scale)*(u[1].x-u[0].x)+u[0].x,f=f/(o.height*this.scale)*(u[1].y-u[0].y)+u[0].y;if(a>u[0].x&&a<u[1].x&&f>u[0].y&&f<u[1].y)return jvm.Proj[n.type+"_inv"](a,-f,r)}return!1},getInsetForPoint:function(e,t){var n=jvm.WorldMap.maps[this.params.map].insets,r,i;for(r=0;r<n.length;r++){i=n[r].bbox;if(e>i[0].x&&e<i[1].x&&t>i[0].y&&t<i[1].y)return n[r]}},createSeries:function(){var e,t;this.series={markers:[],regions:[]};for(t in this.params.series)for(e=0;e<this.params.series[t].length;e++)this.series[t][e]=new jvm.DataSeries(this.params.series[t][e],this[t])},remove:function(){this.label.remove(),this.container.remove(),jvm.$(window).unbind("resize",this.onResize)}},jvm.WorldMap.maps={},jvm.WorldMap.defaultParams={map:"world_mill_en",backgroundColor:"#505050",zoomButtons:!0,zoomOnScroll:!0,zoomMax:8,zoomMin:1,zoomStep:1.6,regionsSelectable:!1,markersSelectable:!1,bindTouchEvents:!0,regionStyle:{initial:{fill:"white","fill-opacity":1,stroke:"none","stroke-width":0,"stroke-opacity":1},hover:{"fill-opacity":.8},selected:{fill:"yellow"},selectedHover -:{}},markerStyle:{initial:{fill:"grey",stroke:"#505050","fill-opacity":1,"stroke-width":1,"stroke-opacity":1,r:5},hover:{stroke:"black","stroke-width":2},selected:{fill:"blue"},selectedHover:{}}},jvm.WorldMap.apiEvents={onRegionLabelShow:"regionLabelShow",onRegionOver:"regionOver",onRegionOut:"regionOut",onRegionClick:"regionClick",onRegionSelected:"regionSelected",onMarkerLabelShow:"markerLabelShow",onMarkerOver:"markerOver",onMarkerOut:"markerOut",onMarkerClick:"markerClick",onMarkerSelected:"markerSelected",onViewportChange:"viewportChange"}; \ No newline at end of file diff --git a/assets/plugins/jvectormap/jquery-jvectormap-world-mill-en.js b/assets/plugins/jvectormap/jquery-jvectormap-world-mill-en.js deleted file mode 100644 index 89f77839..00000000 --- a/assets/plugins/jvectormap/jquery-jvectormap-world-mill-en.js +++ /dev/null @@ -1 +0,0 @@ -$.fn.vectorMap('addMap', 'world_mill_en',{"insets": [{"width": 900.0, "top": 0, "height": 440.7063107441331, "bbox": [{"y": -12671671.123330014, "x": -20004297.151525836}, {"y": 6930392.02513512, "x": 20026572.394749384}], "left": 0}], "paths": {"BD": {"path": "M652.71,228.85l-0.04,1.38l-0.46,-0.21l-0.42,0.3l0.05,0.65l-0.17,-1.37l-0.48,-1.26l-1.08,-1.6l-0.23,-0.13l-2.31,-0.11l-0.31,0.36l0.21,0.98l-0.6,1.11l-0.8,-0.4l-0.37,0.09l-0.23,0.3l-0.54,-0.21l-0.78,-0.19l-0.38,-2.04l-0.83,-1.89l0.4,-1.5l-0.16,-0.35l-1.24,-0.57l0.36,-0.62l1.5,-0.95l0.02,-0.49l-1.62,-1.26l0.64,-1.31l1.7,1.0l0.12,0.04l0.96,0.11l0.19,1.62l0.25,0.26l2.38,0.37l2.32,-0.04l1.06,0.33l-0.92,1.79l-0.97,0.13l-0.23,0.16l-0.77,1.51l0.05,0.35l1.37,1.37l0.5,-0.14l0.35,-1.46l0.24,-0.0l1.24,3.92Z", "name": "Bangladesh"}, "BE": {"path": "M429.28,143.95l1.76,0.25l0.13,-0.01l2.16,-0.64l1.46,1.34l1.26,0.71l-0.23,1.8l-0.44,0.08l-0.24,0.25l-0.2,1.36l-1.8,-1.22l-0.23,-0.05l-1.14,0.23l-1.62,-1.43l-1.15,-1.31l-0.21,-0.1l-0.95,-0.04l-0.21,-0.68l1.66,-0.54Z", "name": "Belgium"}, "BF": {"path": "M413.48,260.21l-1.22,-0.46l-0.13,-0.02l-1.17,0.1l-0.15,0.06l-0.73,0.53l-0.87,-0.41l-0.39,-0.75l-0.13,-0.13l-0.98,-0.48l-0.14,-1.2l0.63,-0.99l0.05,-0.18l-0.05,-0.73l1.9,-2.01l0.08,-0.14l0.35,-1.65l0.49,-0.44l1.05,0.3l0.21,-0.02l1.05,-0.52l0.13,-0.13l0.3,-0.58l1.87,-1.1l0.11,-0.1l0.43,-0.72l2.23,-1.01l1.21,-0.32l0.51,0.4l0.19,0.06l1.25,-0.01l-0.14,0.89l0.01,0.13l0.34,1.16l0.06,0.11l1.35,1.59l0.07,1.13l0.24,0.28l2.64,0.53l-0.05,1.39l-0.42,0.59l-1.11,0.21l-0.22,0.17l-0.46,0.99l-0.69,0.23l-2.12,-0.05l-1.14,-0.2l-0.19,0.03l-0.72,0.36l-1.07,-0.17l-4.35,0.12l-0.29,0.29l-0.06,1.44l0.25,1.45Z", "name": "Burkina Faso"}, "BG": {"path": "M477.63,166.84l0.51,0.9l0.33,0.14l0.9,-0.21l1.91,0.47l3.68,0.16l0.17,-0.05l1.2,-0.75l2.78,-0.67l1.72,1.05l1.02,0.24l-0.97,0.97l-0.91,2.17l0.0,0.24l0.56,1.19l-1.58,-0.3l-0.16,0.01l-2.55,0.95l-0.2,0.28l-0.02,1.23l-1.92,0.24l-1.68,-0.99l-0.27,-0.02l-1.94,0.8l-1.52,-0.07l-0.15,-1.72l-0.12,-0.21l-0.99,-0.76l0.18,-0.18l0.02,-0.39l-0.17,-0.22l0.33,-0.75l0.91,-0.91l0.01,-0.42l-1.16,-1.25l-0.18,-0.89l0.24,-0.27Z", "name": "Bulgaria"}, "BA": {"path": "M468.39,164.66l0.16,0.04l0.43,-0.0l-0.43,0.93l0.06,0.34l1.08,1.06l-0.28,1.09l-0.5,0.13l-0.47,0.28l-0.86,0.74l-0.1,0.16l-0.28,1.29l-1.81,-0.94l-0.9,-1.22l-1.0,-0.73l-1.1,-1.1l-0.55,-0.96l-1.11,-1.3l0.3,-0.75l0.59,0.46l0.42,-0.04l0.46,-0.54l1.0,-0.06l2.11,0.5l1.72,-0.03l1.06,0.64Z", "name": "Bosnia and Herzegovina"}, "BN": {"path": "M707.34,273.57l0.76,-0.72l1.59,-1.03l-0.18,1.93l-0.9,-0.06l-0.28,0.14l-0.31,0.51l-0.68,-0.78Z", "name": "Brunei"}, "BO": {"path": "M263.83,340.79l-0.23,-0.12l-2.86,-0.11l-0.28,0.17l-0.77,1.67l-1.17,-1.51l-0.18,-0.11l-3.28,-0.64l-0.28,0.1l-2.02,2.3l-1.43,0.29l-0.91,-3.35l-1.31,-2.88l0.75,-2.41l-0.09,-0.32l-1.23,-1.03l-0.31,-1.76l-0.05,-0.12l-1.12,-1.6l1.49,-2.62l0.01,-0.28l-1.0,-2.0l0.48,-0.72l0.02,-0.29l-0.37,-0.78l0.87,-1.13l0.06,-0.18l0.05,-2.17l0.12,-1.71l0.5,-0.8l0.01,-0.3l-1.9,-3.58l1.3,0.15l1.34,-0.05l0.23,-0.12l0.51,-0.7l2.12,-0.99l1.31,-0.93l2.81,-0.37l-0.21,1.51l0.01,0.13l0.29,0.91l-0.19,1.64l0.11,0.27l2.72,2.27l0.15,0.07l2.71,0.41l0.92,0.88l0.12,0.07l1.64,0.49l1.0,0.71l0.18,0.06l1.5,-0.02l1.24,0.64l0.1,1.31l0.05,0.14l0.44,0.68l0.02,0.73l-0.44,0.03l-0.27,0.39l0.96,2.99l0.28,0.21l4.43,0.1l-0.28,1.12l0.0,0.15l0.27,1.02l0.15,0.19l1.27,0.67l0.52,1.42l-0.42,1.91l-0.66,1.1l-0.04,0.2l0.21,1.3l-0.19,0.13l-0.01,-0.27l-0.15,-0.24l-2.33,-1.33l-0.14,-0.04l-2.38,-0.03l-4.36,0.76l-0.21,0.16l-1.2,2.29l-0.03,0.13l-0.06,1.37l-0.79,2.53l-0.05,-0.08Z", "name": "Bolivia"}, "JP": {"path": "M781.17,166.78l1.8,0.67l0.28,-0.04l1.38,-1.01l0.43,2.67l-3.44,0.77l-0.18,0.12l-2.04,2.79l-3.71,-1.94l-0.42,0.15l-1.29,3.11l-2.32,0.04l-0.3,-2.63l1.12,-2.1l2.51,-0.16l0.28,-0.25l0.73,-4.22l0.58,-1.9l2.59,2.84l2.0,1.1ZM773.66,187.36l-0.92,2.24l-0.01,0.2l0.4,1.3l-1.18,1.81l-3.06,1.28l-4.35,0.17l-0.19,0.08l-3.4,3.06l-1.36,-0.87l-0.1,-1.95l-0.34,-0.28l-4.35,0.62l-2.99,1.33l-2.87,0.05l-0.28,0.2l0.09,0.33l2.37,1.93l-1.57,4.44l-1.35,0.97l-0.9,-0.79l0.57,-2.32l-0.15,-0.34l-1.5,-0.77l-0.81,-1.53l2.04,-0.75l0.14,-0.1l1.28,-1.72l2.47,-1.43l1.84,-1.92l4.83,-0.82l2.62,0.57l0.33,-0.16l2.45,-4.77l1.38,1.14l0.38,0.0l5.1,-4.02l0.09,-0.11l1.57,-3.57l0.02,-0.16l-0.42,-3.22l0.94,-1.67l2.27,-0.47l1.26,3.82l-0.07,2.23l-2.26,2.86l-0.06,0.19l0.04,2.93ZM757.85,196.18l0.22,0.66l-1.11,1.33l-0.8,-0.7l-0.33,-0.04l-1.28,0.65l-0.14,0.15l-0.54,1.34l-1.17,-0.57l0.02,-1.03l1.2,-1.45l1.24,0.28l0.29,-0.1l0.9,-1.03l1.51,0.5Z", "name": "Japan"}, "BI": {"path": "M494.7,295.83l-0.14,-2.71l-0.04,-0.13l-0.34,-0.62l0.93,0.12l0.3,-0.16l0.67,-1.25l0.9,0.11l0.11,0.76l0.08,0.16l0.46,0.48l0.02,0.56l-0.55,0.48l-0.96,1.29l-0.82,0.82l-0.61,0.07Z", "name": "Burundi"}, "BJ": {"path": "M427.4,268.94l-1.58,0.22l-0.52,-1.45l0.11,-5.73l-0.08,-0.21l-0.43,-0.44l-0.09,-1.13l-0.09,-0.19l-1.52,-1.52l0.24,-1.01l0.7,-0.23l0.18,-0.16l0.45,-0.97l1.07,-0.21l0.19,-0.12l0.53,-0.73l0.73,-0.65l0.68,-0.0l1.69,1.3l-0.08,0.67l0.02,0.14l0.52,1.38l-0.44,0.9l-0.01,0.24l0.2,0.52l-1.1,1.42l-0.76,0.76l-0.08,0.13l-0.47,1.59l0.05,1.69l-0.13,3.79Z", "name": "Benin"}, "BT": {"path": "M650.38,213.78l0.88,0.75l-0.13,1.24l-1.77,0.07l-2.1,-0.18l-1.57,0.4l-2.02,-0.91l-0.02,-0.24l1.54,-1.87l1.18,-0.6l1.67,0.59l1.32,0.08l1.01,0.67Z", "name": "Bhutan"}, "JM": {"path": "M226.67,238.37l1.64,0.23l1.2,0.56l0.11,0.19l-1.25,0.03l-0.14,0.04l-0.65,0.37l-1.24,-0.37l-1.17,-0.77l0.11,-0.22l0.86,-0.15l0.52,0.08Z", "name": "Jamaica"}, "BW": {"path": "M484.91,331.96l0.53,0.52l0.82,1.53l2.83,2.86l0.14,0.08l0.85,0.22l0.03,0.81l0.74,1.66l0.21,0.17l1.87,0.39l1.17,0.87l-3.13,1.71l-2.3,2.01l-0.07,0.1l-0.82,1.74l-0.66,0.88l-1.24,0.19l-0.24,0.2l-0.65,1.98l-1.4,0.55l-1.9,-0.12l-1.2,-0.74l-1.06,-0.32l-0.22,0.02l-1.22,0.62l-0.14,0.14l-0.58,1.21l-1.16,0.79l-1.18,1.13l-1.5,0.23l-0.4,-0.68l0.22,-1.53l-0.04,-0.19l-1.48,-2.54l-0.11,-0.11l-0.53,-0.31l-0.0,-7.25l2.18,-0.08l0.29,-0.3l0.07,-9.0l1.63,-0.08l3.69,-0.86l0.84,0.93l0.38,0.05l1.53,-0.97l0.79,-0.03l1.3,-0.53l0.23,0.1l0.92,1.96Z", "name": "Botswana"}, "BR": {"path": "M259.49,274.87l1.42,0.25l1.97,0.62l0.28,-0.05l0.67,-0.55l1.76,-0.38l2.8,-0.94l0.12,-0.08l0.92,-0.96l0.05,-0.33l-0.15,-0.32l0.73,-0.06l0.36,0.35l-0.27,0.93l0.17,0.36l0.76,0.34l0.44,0.9l-0.58,0.73l-0.06,0.13l-0.4,2.13l0.03,0.19l0.62,1.22l0.17,1.11l0.11,0.19l1.54,1.18l0.15,0.06l1.23,0.12l0.29,-0.15l0.2,-0.36l0.71,-0.11l1.13,-0.44l0.79,-0.63l1.25,0.19l0.65,-0.08l1.32,0.2l0.32,-0.18l0.23,-0.51l-0.05,-0.31l-0.31,-0.37l0.11,-0.31l0.75,0.17l0.13,0.0l1.1,-0.24l1.34,0.5l1.08,0.51l0.33,-0.05l0.67,-0.58l0.27,0.05l0.28,0.57l0.31,0.17l1.2,-0.18l0.17,-0.08l1.03,-1.05l0.76,-1.82l1.39,-2.16l0.49,-0.07l0.52,1.17l1.4,4.37l0.2,0.2l1.14,0.35l0.05,1.39l-1.8,1.97l0.01,0.42l0.78,0.75l0.18,0.08l4.16,0.37l0.08,2.25l0.5,0.22l1.78,-1.54l2.98,0.85l4.07,1.5l1.07,1.28l-0.37,1.23l0.36,0.38l2.83,-0.75l4.8,1.3l3.75,-0.09l3.6,2.02l3.27,2.84l1.93,0.72l2.13,0.11l0.76,0.66l1.22,4.56l-0.96,4.03l-1.22,1.58l-3.52,3.51l-1.63,2.91l-1.75,2.09l-0.5,0.04l-0.26,0.19l-0.72,1.99l0.18,4.76l-0.95,5.56l-0.74,0.96l-0.06,0.15l-0.43,3.39l-2.49,3.34l-0.06,0.13l-0.4,2.56l-1.9,1.07l-0.13,0.16l-0.51,1.38l-2.59,0.0l-3.94,1.01l-1.82,1.19l-2.85,0.81l-3.01,2.17l-2.12,2.65l-0.06,0.13l-0.36,2.0l0.01,0.13l0.4,1.42l-0.45,2.63l-0.53,1.23l-1.76,1.53l-2.76,4.79l-2.16,2.15l-1.69,1.29l-0.09,0.12l-1.12,2.6l-1.3,1.26l-0.45,-1.02l0.99,-1.18l0.01,-0.37l-1.5,-1.95l-1.98,-1.54l-2.58,-1.77l-0.2,-0.05l-0.81,0.07l-2.42,-2.05l-0.25,-0.07l-0.77,0.14l2.75,-3.07l2.8,-2.61l1.67,-1.09l2.11,-1.49l0.13,-0.24l0.05,-2.15l-0.07,-0.2l-1.26,-1.54l-0.35,-0.09l-0.64,0.27l0.3,-0.95l0.34,-1.57l0.01,-1.52l-0.16,-0.26l-0.9,-0.48l-0.27,-0.01l-0.86,0.39l-0.65,-0.08l-0.23,-0.8l-0.23,-2.39l-0.04,-0.12l-0.47,-0.79l-0.14,-0.12l-1.69,-0.71l-0.25,0.01l-0.93,0.47l-2.29,-0.44l0.15,-3.3l-0.03,-0.15l-0.62,-1.22l0.57,-0.39l0.13,-0.3l-0.22,-1.37l0.67,-1.13l0.44,-2.04l-0.01,-0.17l-0.59,-1.61l-0.14,-0.16l-1.25,-0.66l-0.22,-0.82l0.35,-1.41l-0.28,-0.37l-4.59,-0.1l-0.78,-2.41l0.34,-0.02l0.28,-0.31l-0.03,-1.1l-0.05,-0.16l-0.45,-0.68l-0.1,-1.4l-0.16,-0.24l-1.45,-0.76l-0.14,-0.03l-1.48,0.02l-1.04,-0.73l-1.62,-0.48l-0.93,-0.9l-0.16,-0.08l-2.72,-0.41l-2.53,-2.12l0.18,-1.54l-0.01,-0.13l-0.29,-0.91l0.26,-1.83l-0.34,-0.34l-3.28,0.43l-0.14,0.05l-1.3,0.93l-2.16,1.01l-0.12,0.09l-0.47,0.65l-1.12,0.05l-1.84,-0.21l-0.12,0.01l-1.33,0.41l-0.82,-0.21l0.16,-3.6l-0.48,-0.26l-1.97,1.43l-1.96,-0.06l-0.86,-1.23l-0.22,-0.13l-1.23,-0.11l0.34,-0.69l-0.05,-0.33l-1.36,-1.5l-0.92,-2.0l0.45,-0.32l0.13,-0.25l-0.0,-0.87l1.34,-0.64l0.17,-0.32l-0.23,-1.23l0.56,-0.77l0.05,-0.13l0.16,-1.03l2.7,-1.61l2.01,-0.47l0.16,-0.09l0.24,-0.27l2.11,0.11l0.31,-0.25l1.13,-6.87l0.06,-1.12l-0.4,-1.53l-0.1,-0.15l-1.0,-0.82l0.01,-1.45l1.08,-0.32l0.39,0.2l0.44,-0.24l0.08,-0.96l-0.25,-0.32l-1.22,-0.22l-0.02,-1.01l4.57,0.05l0.22,-0.09l0.6,-0.63l0.44,0.5l0.47,1.42l0.45,0.16l0.27,-0.18l1.21,1.16l0.23,0.08l1.95,-0.16l0.23,-0.14l0.43,-0.67l1.76,-0.55l1.05,-0.42l0.18,-0.2l0.25,-0.92l1.65,-0.66l0.18,-0.35l-0.14,-0.53l-0.26,-0.22l-1.91,-0.19l-0.29,-1.33l0.1,-1.64l-0.15,-0.28l-0.44,-0.25Z", "name": "Brazil"}, "BS": {"path": "M227.51,216.69l0.3,0.18l-0.24,1.07l0.03,-1.04l-0.09,-0.21ZM226.5,224.03l-0.13,0.03l-0.54,-1.3l-0.09,-0.12l-0.78,-0.64l0.4,-1.26l0.33,0.05l0.79,2.0l0.01,1.24ZM225.76,216.5l-2.16,0.34l-0.07,-0.41l0.85,-0.16l1.36,0.07l0.02,0.16Z", "name": "The Bahamas"}, "BY": {"path": "M480.08,135.28l2.09,0.02l0.13,-0.03l2.72,-1.3l0.16,-0.19l0.55,-1.83l1.94,-1.06l0.15,-0.31l-0.2,-1.33l1.33,-0.52l2.58,-1.3l2.39,0.8l0.3,0.75l0.37,0.17l1.22,-0.39l2.18,0.75l0.2,1.36l-0.48,0.85l0.01,0.32l1.57,2.26l0.92,0.6l-0.1,0.41l0.19,0.35l1.61,0.57l0.48,0.6l-0.64,0.49l-1.91,-0.11l-0.18,0.05l-0.48,0.32l-0.1,0.39l0.57,1.1l0.51,1.78l-1.79,0.17l-0.18,0.08l-0.77,0.73l-0.09,0.19l-0.13,1.31l-0.75,-0.22l-2.11,0.15l-0.56,-0.66l-0.39,-0.06l-0.8,0.49l-0.79,-0.4l-0.13,-0.03l-1.94,-0.07l-2.76,-0.79l-2.58,-0.27l-1.98,0.07l-0.15,0.05l-1.31,0.86l-0.8,0.09l-0.04,-1.16l-0.03,-0.12l-0.63,-1.28l1.22,-0.56l0.17,-0.27l0.01,-1.35l-0.04,-0.15l-0.66,-1.24l-0.08,-1.12Z", "name": "Belarus"}, "BZ": {"path": "M198.03,239.7l0.28,0.19l0.43,-0.1l0.82,-1.42l0.0,0.07l0.29,0.29l0.16,0.0l-0.02,0.35l-0.39,1.08l0.02,0.25l0.16,0.29l-0.23,0.8l0.04,0.24l0.09,0.14l-0.25,1.12l-0.38,0.53l-0.33,0.06l-0.21,0.15l-0.41,0.74l-0.25,0.0l0.17,-2.58l0.01,-2.2Z", "name": "Belize"}, "RU": {"path": "M688.57,38.85l0.63,2.39l0.44,0.19l2.22,-1.23l7.18,0.07l5.54,2.49l1.85,1.77l-0.55,2.34l-2.64,1.42l-6.57,2.76l-1.95,1.5l0.12,0.53l3.09,0.68l3.69,1.23l0.21,-0.01l1.98,-0.81l1.16,2.84l0.5,0.08l1.03,-1.18l3.86,-0.74l7.79,0.78l0.56,2.05l0.27,0.22l10.47,0.71l0.32,-0.29l0.13,-3.34l4.98,0.8l3.96,-0.02l3.88,2.43l1.06,2.79l-1.38,1.83l0.01,0.38l3.15,3.64l0.1,0.08l3.94,1.86l0.4,-0.14l2.28,-4.56l3.75,1.94l0.22,0.02l4.18,-1.22l4.76,1.4l0.26,-0.04l1.74,-1.23l3.98,0.63l0.32,-0.41l-1.71,-4.1l3.0,-1.86l22.39,3.04l2.06,2.67l0.1,0.08l6.55,3.51l0.17,0.03l10.08,-0.86l4.86,0.73l1.91,1.72l-0.29,3.13l0.18,0.31l3.08,1.26l0.19,0.01l3.32,-0.9l4.37,-0.11l4.78,0.87l4.61,-0.48l4.26,3.82l0.32,0.05l3.1,-1.4l0.12,-0.45l-1.91,-2.67l0.92,-1.64l7.78,1.22l5.22,-0.26l7.12,2.1l9.6,5.22l6.4,4.15l-0.2,2.44l0.14,0.28l1.69,1.04l0.45,-0.31l-0.51,-2.66l6.31,0.58l4.52,3.61l-2.1,1.52l-4.02,0.42l-0.27,0.29l-0.06,3.83l-0.81,0.67l-2.14,-0.11l-1.91,-1.39l-3.19,-1.13l-0.51,-1.63l-0.21,-0.2l-2.54,-0.67l-0.13,-0.0l-2.69,0.5l-1.12,-1.19l0.48,-1.36l-0.38,-0.39l-3.0,0.98l-0.17,0.44l1.02,1.76l-1.27,1.55l-3.09,1.71l-3.15,-0.29l-0.3,0.18l0.07,0.34l2.22,2.1l1.47,3.22l1.15,1.09l0.25,1.41l-0.48,0.76l-4.47,-0.81l-0.17,0.02l-6.97,2.9l-2.2,0.44l-0.11,0.05l-3.83,2.68l-3.63,2.32l-0.1,0.11l-0.76,1.4l-3.3,-2.4l-0.3,-0.03l-6.31,2.85l-0.99,-1.21l-0.4,-0.06l-2.32,1.54l-3.23,-0.49l-0.33,0.2l-0.79,2.39l-2.97,3.51l-0.07,0.21l0.09,1.47l0.22,0.27l2.62,0.74l-0.3,4.7l-2.06,0.12l-0.26,0.2l-1.07,2.94l0.04,0.27l0.83,1.19l-4.03,1.63l-0.18,0.21l-0.83,3.72l-3.55,0.79l-0.23,0.23l-0.73,3.32l-3.22,2.76l-0.76,-1.88l-1.07,-4.88l-1.39,-7.59l1.17,-4.76l2.05,-2.08l0.09,-0.19l0.11,-1.46l3.67,-0.77l0.15,-0.08l4.47,-4.61l4.29,-3.82l4.48,-3.01l0.11,-0.14l2.01,-5.43l-0.31,-0.4l-3.04,0.33l-0.24,0.17l-1.47,3.11l-5.98,3.94l-1.91,-4.36l-0.33,-0.17l-6.46,1.3l-0.15,0.08l-6.27,6.33l-0.01,0.41l1.7,1.87l-5.04,0.87l-3.51,0.34l0.16,-2.32l-0.26,-0.32l-3.89,-0.56l-0.19,0.04l-3.02,1.77l-7.63,-0.63l-8.24,1.1l-0.16,0.07l-8.11,7.09l-9.6,8.31l0.16,0.52l3.79,0.42l1.16,2.03l0.17,0.14l2.43,0.76l0.31,-0.08l1.5,-1.61l2.49,0.2l3.46,3.6l0.08,2.67l-1.91,3.26l-0.04,0.14l-0.21,3.91l-1.11,5.09l-3.73,4.55l-0.87,2.21l-6.73,7.14l-1.59,1.77l-3.23,1.72l-1.38,0.03l-1.48,-1.39l-0.37,-0.03l-3.36,2.22l-0.11,0.14l-0.16,0.42l-0.01,-1.09l1.0,-0.06l0.28,-0.27l0.36,-3.6l-0.61,-2.51l1.85,-0.94l2.94,0.53l0.32,-0.15l1.71,-3.1l0.84,-3.38l0.97,-1.18l1.32,-2.88l-0.34,-0.42l-4.14,0.95l-2.18,1.25l-3.51,-0.0l-0.95,-2.81l-0.1,-0.14l-2.97,-2.3l-0.11,-0.05l-4.19,-1.0l-0.89,-3.08l-0.87,-2.03l-0.95,-1.46l-1.54,-3.37l-0.12,-0.14l-2.27,-1.28l-3.83,-1.02l-3.37,0.1l-3.11,0.61l-0.13,0.06l-2.07,1.69l0.04,0.49l1.23,0.72l0.03,1.53l-1.34,1.05l-2.26,3.51l-0.05,0.17l0.02,1.27l-3.25,1.9l-2.87,-1.17l-0.14,-0.02l-2.86,0.26l-1.22,-1.02l-0.12,-0.06l-1.5,-0.35l-0.23,0.04l-3.62,2.27l-3.24,0.53l-2.28,0.79l-3.08,-0.51l-2.24,0.03l-1.49,-1.61l-2.45,-1.57l-0.11,-0.04l-2.6,-0.43l-3.17,0.43l-2.31,0.59l-3.31,-1.28l-0.45,-2.31l-0.21,-0.23l-2.94,-0.85l-2.26,-0.39l-2.77,-1.36l-0.37,0.09l-2.59,3.45l-0.03,0.32l0.91,1.74l-2.15,2.01l-3.47,-0.79l-2.44,-0.12l-1.59,-1.46l-0.2,-0.08l-2.55,-0.05l-2.12,-0.98l-0.24,-0.01l-3.85,1.57l-4.74,2.79l-2.59,0.55l-0.79,0.21l-1.21,-1.81l-0.29,-0.13l-3.05,0.41l-0.96,-1.25l-0.14,-0.1l-1.65,-0.6l-1.15,-1.82l-0.13,-0.12l-1.38,-0.6l-0.19,-0.02l-3.49,0.82l-3.35,-1.85l-0.38,0.08l-1.08,1.4l-5.36,-8.17l-3.02,-2.52l0.72,-0.85l0.01,-0.38l-0.37,-0.08l-6.22,3.21l-1.98,0.16l0.17,-1.51l-0.2,-0.31l-3.22,-1.17l-0.19,-0.0l-2.3,0.74l-0.72,-3.27l-0.24,-0.23l-4.5,-0.75l-0.21,0.04l-2.2,1.42l-6.21,1.27l-0.11,0.05l-1.16,0.81l-9.3,1.19l-0.18,0.09l-1.15,1.17l-0.02,0.39l1.56,2.01l-2.02,0.74l-0.16,0.42l0.35,0.68l-2.18,1.49l0.02,0.51l3.83,2.16l-0.45,1.13l-3.31,-0.13l-0.25,0.12l-0.57,0.77l-2.97,-1.59l-0.15,-0.04l-3.97,0.07l-0.13,0.03l-2.53,1.32l-2.84,-1.28l-5.52,-2.3l-0.12,-0.02l-3.91,0.09l-0.16,0.05l-5.17,3.6l-0.13,0.21l-0.25,1.89l-2.17,-1.6l-0.44,0.1l-2.0,3.59l0.06,0.37l0.55,0.5l-1.32,2.23l0.04,0.36l2.13,2.17l0.23,0.09l1.7,-0.08l1.42,1.89l-0.23,1.5l0.19,0.32l0.94,0.38l-0.89,1.44l-2.3,0.49l-0.17,0.11l-2.49,3.2l0.0,0.37l2.2,2.81l-0.23,1.93l0.06,0.22l2.56,3.32l-1.27,1.02l-0.4,0.66l-0.8,-0.15l-1.65,-1.75l-0.18,-0.09l-0.66,-0.09l-1.45,-0.64l-0.72,-1.16l-0.18,-0.13l-2.34,-0.63l-0.17,0.0l-1.32,0.41l-0.31,-0.4l-0.12,-0.09l-3.49,-1.48l-3.67,-0.49l-2.1,-0.52l-0.3,0.1l-0.12,0.14l-2.96,-2.4l-2.89,-1.19l-1.69,-1.42l1.27,-0.35l0.16,-0.1l2.08,-2.61l-0.04,-0.41l-1.02,-0.9l3.21,-1.12l0.2,-0.31l-0.07,-0.69l-0.37,-0.26l-1.86,0.42l0.05,-0.86l1.11,-0.76l2.35,-0.23l0.25,-0.19l0.39,-1.07l0.0,-0.19l-0.51,-1.64l0.95,-1.58l0.04,-0.16l-0.03,-0.95l-0.22,-0.28l-3.69,-1.06l-1.43,0.02l-1.45,-1.44l-0.29,-0.08l-1.83,0.49l-2.88,-1.04l0.04,-0.42l-0.04,-0.18l-0.89,-1.43l-0.23,-0.14l-1.77,-0.14l-0.13,-0.66l0.52,-0.56l0.01,-0.4l-1.6,-1.9l-0.27,-0.1l-2.55,0.32l-0.71,-0.16l-0.3,0.1l-0.53,0.63l-0.58,-0.08l-0.56,-1.97l-0.48,-0.94l0.17,-0.11l1.92,0.11l0.2,-0.06l0.97,-0.74l0.05,-0.42l-0.72,-0.91l-0.13,-0.1l-1.43,-0.51l0.09,-0.36l-0.13,-0.33l-0.97,-0.59l-1.43,-2.06l0.44,-0.77l0.04,-0.19l-0.25,-1.64l-0.2,-0.24l-2.45,-0.84l-0.19,-0.0l-1.05,0.34l-0.25,-0.62l-0.18,-0.17l-2.5,-0.84l-0.74,-1.93l-0.21,-1.7l-0.13,-0.21l-0.92,-0.63l0.83,-0.89l0.07,-0.27l-0.71,-3.26l1.69,-2.01l0.03,-0.34l-0.24,-0.41l2.63,-1.9l-0.01,-0.49l-2.31,-1.57l5.08,-4.61l2.33,-2.24l1.01,-2.08l-0.09,-0.37l-3.52,-2.56l0.94,-2.38l-0.04,-0.29l-2.14,-2.86l1.61,-3.35l-0.01,-0.29l-2.81,-4.58l2.19,-3.04l-0.06,-0.42l-3.7,-2.76l0.32,-2.67l1.87,-0.38l4.26,-1.77l2.46,-1.47l3.96,2.58l0.12,0.05l6.81,1.04l9.37,4.87l1.81,1.92l0.15,2.55l-2.61,2.06l-3.95,1.07l-11.1,-3.15l-0.17,0.0l-1.84,0.53l-0.1,0.53l3.97,2.97l0.15,1.77l0.16,4.14l0.19,0.27l3.21,1.22l1.94,1.03l0.44,-0.22l0.32,-1.94l-0.07,-0.25l-1.32,-1.52l1.25,-1.2l5.87,2.45l0.24,-0.01l2.11,-0.98l0.13,-0.42l-1.55,-2.75l5.52,-3.84l2.13,0.22l2.28,1.42l0.43,-0.12l1.46,-2.87l-0.04,-0.33l-1.97,-2.37l1.14,-2.38l-0.02,-0.3l-1.42,-2.07l6.15,1.22l1.14,1.92l-2.74,0.46l-0.25,0.3l0.02,2.36l0.12,0.24l1.97,1.44l0.25,0.05l3.87,-0.91l0.22,-0.23l0.58,-2.55l5.09,-1.98l8.67,-3.69l1.22,0.14l-2.06,2.2l0.18,0.5l3.11,0.45l0.23,-0.07l1.71,-1.41l4.59,-0.12l0.12,-0.03l3.53,-1.72l2.7,2.48l0.42,-0.01l2.85,-2.88l-0.0,-0.43l-2.42,-2.35l1.0,-1.13l7.2,1.31l3.42,1.36l9.06,4.97l0.39,-0.08l1.67,-2.27l-0.04,-0.4l-2.46,-2.23l-0.06,-0.82l-0.26,-0.27l-2.64,-0.38l0.69,-1.76l0.0,-0.22l-1.32,-3.47l-0.07,-1.27l4.52,-4.09l0.08,-0.11l1.6,-4.18l1.67,-0.84l6.33,1.2l0.46,2.31l-2.31,3.67l0.05,0.38l1.49,1.41l0.77,3.04l-0.56,6.05l0.09,0.24l2.62,2.54l-0.99,2.65l-4.87,5.96l0.17,0.48l2.86,0.61l0.31,-0.13l0.94,-1.42l2.67,-1.04l0.18,-0.19l0.64,-2.01l2.11,-1.98l0.05,-0.37l-1.38,-2.32l1.11,-2.74l-0.24,-0.41l-2.53,-0.33l-0.53,-2.16l1.96,-4.42l-0.05,-0.32l-3.03,-3.48l4.21,-2.94l0.12,-0.3l-0.52,-3.04l0.72,-0.06l1.18,2.35l-0.97,4.39l0.2,0.35l2.68,0.84l0.37,-0.38l-1.05,-3.07l3.89,-1.71l5.05,-0.24l4.55,2.62l0.36,-0.05l0.05,-0.36l-2.19,-3.84l-0.23,-4.78l4.07,-0.92l5.98,0.21l5.47,-0.64l0.2,-0.48l-1.88,-2.37l2.65,-2.99l2.75,-0.13l0.12,-0.03l4.82,-2.48l6.56,-0.67l0.23,-0.14l0.76,-1.27l6.33,-0.46l1.97,1.11l0.28,0.01l5.55,-2.71l4.53,0.08l0.29,-0.21l0.67,-2.18l2.29,-2.15l5.75,-2.13l3.48,1.4l-2.7,1.03l-0.19,0.31l0.26,0.26l5.47,0.78ZM871.83,65.73l0.25,-0.15l1.99,0.01l3.3,1.2l-0.08,0.22l-2.41,1.03l-5.73,0.49l-0.31,-1.0l2.99,-1.8ZM797.64,48.44l-2.22,1.51l-3.85,-0.43l-4.35,-1.85l0.42,-1.13l4.42,0.72l5.59,1.17ZM783.82,46.06l-1.71,3.25l-9.05,-0.14l-4.11,1.15l-4.64,-3.04l1.21,-3.13l3.11,-0.91l6.53,0.22l8.66,2.59ZM780.37,145.71l2.28,5.23l-3.09,-0.89l-0.37,0.19l-1.54,4.65l0.04,0.27l2.38,3.17l-0.05,1.4l-1.41,-1.41l-0.46,0.04l-1.23,1.81l-0.33,-1.86l0.28,-3.1l-0.28,-3.41l0.58,-2.46l0.11,-4.39l-0.03,-0.13l-1.44,-3.2l0.21,-4.39l2.19,-1.49l0.09,-0.41l-0.81,-1.3l0.48,-0.21l0.56,1.94l0.86,3.23l-0.05,3.36l1.03,3.35ZM780.16,57.18l-3.4,0.03l-5.06,-0.53l1.97,-1.59l2.95,-0.42l3.35,1.75l0.18,0.77ZM683.84,31.18l-13.29,1.97l4.16,-6.56l1.88,-0.58l1.77,0.34l6.08,3.02l-0.6,1.8ZM670.94,28.02l-5.18,0.65l-6.89,-1.58l-4.03,-2.07l-1.88,-3.98l-0.18,-0.16l-2.8,-0.93l5.91,-3.62l5.25,-1.29l4.73,2.88l5.63,5.44l-0.57,4.66ZM564.37,68.98l-0.85,0.23l-7.93,-0.57l-0.6,-1.84l-0.21,-0.2l-4.34,-1.18l-0.3,-2.08l2.34,-0.92l0.19,-0.29l-0.08,-2.43l4.85,-4.0l-0.12,-0.52l-1.68,-0.43l5.47,-3.94l0.11,-0.33l-0.6,-2.02l5.36,-2.55l8.22,-3.27l8.29,-0.96l4.34,-1.94l4.67,-0.65l1.45,1.72l-1.43,1.37l-8.8,2.52l-7.65,2.42l-7.92,4.84l-3.73,4.75l-3.92,4.58l-0.07,0.23l0.51,3.88l0.11,0.2l4.32,3.39ZM548.86,18.57l-3.28,0.75l-2.25,0.44l-0.22,0.19l-0.3,0.81l-2.67,0.86l-2.27,-1.14l1.2,-1.51l-0.23,-0.49l-3.14,-0.1l2.48,-0.54l3.55,-0.07l0.44,1.36l0.49,0.12l1.4,-1.35l2.2,-0.9l3.13,1.08l-0.54,0.49ZM477.5,133.25l-4.21,0.05l-2.69,-0.34l0.39,-1.03l3.24,-1.06l2.51,0.58l0.85,0.43l-0.2,0.71l-0.0,0.15l0.12,0.52Z", "name": "Russia"}, "RW": {"path": "M497.03,288.12l0.78,1.11l-0.12,1.19l-0.49,0.21l-1.25,-0.15l-0.3,0.16l-0.67,1.24l-1.01,-0.13l0.16,-0.92l0.22,-0.12l0.15,-0.24l0.09,-1.37l0.49,-0.48l0.42,0.18l0.25,-0.01l1.26,-0.65Z", "name": "Rwanda"}, "RS": {"path": "M469.75,168.65l0.21,-0.21l0.36,-1.44l-0.08,-0.29l-1.06,-1.03l0.54,-1.16l-0.28,-0.43l-0.26,0.0l0.55,-0.67l-0.01,-0.39l-0.77,-0.86l-0.45,-0.89l1.56,-0.67l1.39,0.12l1.22,1.1l0.26,0.91l0.16,0.19l1.38,0.66l0.17,1.12l0.14,0.21l1.46,0.9l0.35,-0.03l0.62,-0.54l0.09,0.06l-0.28,0.25l-0.03,0.42l0.29,0.34l-0.44,0.5l-0.07,0.26l0.22,1.12l0.07,0.14l1.02,1.1l-0.81,0.84l-0.42,0.96l0.04,0.3l0.12,0.15l-0.15,0.16l-1.04,0.04l-0.39,0.08l0.33,-0.81l-0.29,-0.41l-0.21,0.01l-0.39,-0.45l-0.13,-0.09l-0.32,-0.11l-0.27,-0.4l-0.14,-0.11l-0.4,-0.16l-0.31,-0.37l-0.34,-0.09l-0.45,0.17l-0.18,0.18l-0.29,0.84l-0.96,-0.65l-0.81,-0.33l-0.32,-0.37l-0.22,-0.18Z", "name": "Republic of Serbia"}, "LT": {"path": "M478.13,133.31l-0.14,-0.63l0.25,-0.88l-0.15,-0.35l-1.17,-0.58l-2.43,-0.57l-0.45,-2.51l2.58,-0.97l4.14,0.22l2.3,-0.32l0.26,0.54l0.22,0.17l1.26,0.22l2.25,1.6l0.19,1.23l-1.87,1.01l-0.14,0.18l-0.54,1.83l-2.54,1.21l-2.18,-0.02l-0.52,-0.91l-0.18,-0.14l-1.11,-0.32Z", "name": "Lithuania"}, "LU": {"path": "M435.95,147.99l0.33,0.49l-0.11,1.07l-0.39,0.04l-0.29,-0.15l0.21,-1.4l0.25,-0.05Z", "name": "Luxembourg"}, "LR": {"path": "M401.37,273.67l-0.32,0.01l-2.48,-1.15l-2.24,-1.89l-2.14,-1.38l-1.47,-1.42l0.44,-0.59l0.05,-0.13l0.12,-0.65l1.07,-1.3l1.08,-1.09l0.52,-0.07l0.43,-0.18l0.84,1.24l-0.15,0.89l0.07,0.25l0.49,0.54l0.22,0.1l0.71,0.01l0.27,-0.16l0.42,-0.83l0.19,0.02l-0.06,0.52l0.23,1.12l-0.5,1.03l0.06,0.35l0.73,0.69l0.14,0.08l0.71,0.15l0.92,0.91l0.06,0.76l-0.17,0.22l-0.06,0.15l-0.17,1.8Z", "name": "Liberia"}, "RO": {"path": "M477.94,155.19l1.02,-0.64l1.49,0.33l1.52,0.01l1.09,0.73l0.32,0.01l0.81,-0.46l1.8,-0.3l0.18,-0.1l0.54,-0.64l0.86,0.0l0.64,0.26l0.71,0.87l0.8,1.35l1.39,1.81l0.07,1.25l-0.26,1.3l0.01,0.15l0.45,1.42l0.15,0.18l1.12,0.57l0.25,0.01l1.05,-0.45l0.86,0.4l0.03,0.43l-0.92,0.51l-0.63,-0.24l-0.4,0.22l-0.64,3.41l-1.12,-0.24l-1.78,-1.09l-0.23,-0.04l-2.95,0.71l-1.25,0.77l-3.55,-0.16l-1.89,-0.47l-0.14,-0.0l-0.75,0.17l-0.61,-1.07l-0.3,-0.36l0.36,-0.32l-0.04,-0.48l-0.62,-0.38l-0.36,0.03l-0.62,0.54l-1.15,-0.71l-0.18,-1.14l-0.17,-0.22l-1.4,-0.67l-0.24,-0.86l-0.09,-0.14l-0.96,-0.87l1.49,-0.44l0.16,-0.11l1.51,-2.14l1.15,-2.09l1.44,-0.63Z", "name": "Romania"}, "GW": {"path": "M383.03,256.73l-1.12,-0.88l-0.14,-0.06l-0.94,-0.15l-0.43,-0.54l0.01,-0.27l-0.13,-0.26l-0.68,-0.48l-0.05,-0.16l0.99,-0.31l0.77,0.08l0.15,-0.02l0.61,-0.26l4.25,0.1l-0.02,0.44l-0.19,0.18l-0.08,0.29l0.17,0.66l-0.17,0.14l-0.44,0.0l-0.16,0.05l-0.57,0.37l-0.66,-0.04l-0.24,0.1l-0.92,1.03Z", "name": "Guinea Bissau"}, "GT": {"path": "M195.13,249.89l-1.05,-0.35l-1.5,-0.04l-1.06,-0.47l-1.19,-0.93l0.04,-0.53l0.27,-0.55l-0.03,-0.31l-0.24,-0.32l1.02,-1.77l3.04,-0.01l0.3,-0.28l0.06,-0.88l-0.19,-0.3l-0.3,-0.11l-0.23,-0.45l-0.11,-0.12l-0.9,-0.58l-0.35,-0.33l0.37,-0.0l0.3,-0.3l0.0,-1.15l4.05,0.02l-0.02,1.74l-0.2,2.89l0.3,0.32l0.67,-0.0l0.75,0.42l0.4,-0.11l-0.62,0.53l-1.17,0.7l-0.13,0.16l-0.18,0.49l0.0,0.21l0.14,0.34l-0.35,0.44l-0.49,0.13l-0.2,0.41l0.03,0.06l-0.27,0.16l-0.86,0.64l-0.12,0.22ZM199.35,245.38l0.07,-0.13l0.05,0.02l-0.13,0.11Z", "name": "Guatemala"}, "GR": {"path": "M487.2,174.55l-0.64,1.54l-0.43,0.24l-1.41,-0.08l-1.28,-0.28l-0.14,0.0l-3.03,0.77l-0.13,0.51l1.39,1.34l-0.78,0.29l-1.2,0.0l-1.23,-1.42l-0.47,0.02l-0.47,0.65l-0.04,0.27l0.56,1.76l0.06,0.11l1.02,1.12l-0.66,0.45l-0.04,0.46l1.39,1.35l1.15,0.79l0.02,1.06l-1.91,-0.63l-0.36,0.42l0.56,1.12l-1.2,0.23l-0.22,0.4l0.8,2.14l-1.15,0.02l-1.89,-1.15l-0.89,-2.19l-0.43,-1.91l-0.05,-0.11l-0.98,-1.35l-1.24,-1.62l-0.13,-0.63l1.07,-1.32l0.06,-0.14l0.13,-0.81l0.68,-0.36l0.16,-0.25l0.03,-0.54l1.4,-0.23l0.12,-0.05l0.87,-0.6l1.26,0.05l0.25,-0.11l0.34,-0.43l0.33,-0.07l1.81,0.08l0.13,-0.02l1.87,-0.77l1.64,0.97l0.19,0.04l2.28,-0.28l0.26,-0.29l0.02,-0.95l0.56,0.36ZM480.44,192.0l1.05,0.74l0.01,0.0l-1.26,-0.23l0.2,-0.51ZM481.76,192.79l1.86,-0.15l1.53,0.17l-0.02,0.19l0.34,0.3l-2.28,0.15l0.01,-0.13l-0.25,-0.31l-1.19,-0.22ZM485.65,193.28l0.65,-0.16l-0.05,0.12l-0.6,0.04Z", "name": "Greece"}, "GQ": {"path": "M444.81,282.04l-0.21,-0.17l0.74,-2.4l3.56,0.05l0.02,2.42l-3.34,-0.02l-0.76,0.13Z", "name": "Equatorial Guinea"}, "GY": {"path": "M271.34,264.25l1.43,0.81l1.44,1.53l0.06,1.19l0.28,0.28l0.84,0.05l2.13,1.92l-0.34,1.93l-1.37,0.59l-0.17,0.34l0.12,0.51l-0.43,1.21l0.03,0.26l1.11,1.82l0.26,0.14l0.56,0.0l0.32,1.29l1.25,1.78l-0.08,0.01l-1.34,-0.21l-0.24,0.06l-0.78,0.64l-1.06,0.41l-0.76,0.1l-0.22,0.15l-0.18,0.32l-0.95,-0.1l-1.38,-1.05l-0.19,-1.13l-0.6,-1.18l0.37,-1.96l0.65,-0.83l0.03,-0.32l-0.57,-1.17l-0.15,-0.14l-0.62,-0.27l0.25,-0.85l-0.08,-0.3l-0.58,-0.58l-0.24,-0.09l-1.15,0.1l-1.41,-1.58l0.48,-0.49l0.09,-0.22l-0.04,-0.92l1.31,-0.34l0.73,-0.52l0.04,-0.44l-0.75,-0.82l0.16,-0.66l1.74,-1.3Z", "name": "Guyana"}, "GE": {"path": "M525.41,174.19l0.26,-0.88l-0.0,-0.17l-0.63,-2.06l-0.1,-0.15l-1.45,-1.12l-0.11,-0.05l-1.31,-0.33l-0.66,-0.69l1.97,0.48l3.65,0.49l3.3,1.41l0.39,0.5l0.33,0.1l1.43,-0.45l2.14,0.58l0.7,1.14l0.13,0.12l1.06,0.47l-0.18,0.11l-0.08,0.43l1.08,1.41l-0.06,0.06l-1.16,-0.15l-1.82,-0.84l-0.31,0.04l-0.55,0.44l-3.29,0.44l-2.32,-1.41l-0.17,-0.04l-2.25,0.12Z", "name": "Georgia"}, "GB": {"path": "M412.82,118.6l-2.31,3.4l-0.0,0.33l0.31,0.13l2.52,-0.49l2.34,0.02l-0.56,2.51l-2.22,3.13l0.22,0.47l2.43,0.21l2.35,4.35l0.17,0.14l1.58,0.51l1.49,3.78l0.73,1.37l0.2,0.15l2.76,0.59l-0.25,1.75l-1.18,0.91l-0.08,0.39l0.87,1.49l-1.96,1.51l-3.31,-0.02l-4.15,0.88l-1.07,-0.59l-0.35,0.04l-1.55,1.44l-2.17,-0.35l-0.22,0.05l-1.61,1.15l-0.78,-0.38l3.31,-3.12l2.18,-0.7l0.21,-0.31l-0.26,-0.27l-3.78,-0.54l-0.48,-0.9l2.3,-0.92l0.13,-0.46l-1.29,-1.71l0.39,-1.83l3.46,0.29l0.32,-0.24l0.37,-1.99l-0.06,-0.24l-1.71,-2.17l-0.18,-0.11l-2.91,-0.58l-0.43,-0.68l0.82,-1.4l-0.03,-0.35l-0.82,-0.97l-0.46,0.01l-0.85,1.05l-0.11,-2.6l-0.05,-0.16l-1.19,-1.7l0.86,-3.53l1.81,-2.75l1.88,0.26l2.38,-0.24ZM406.39,132.84l-1.09,1.92l-1.65,-0.62l-1.26,0.02l0.41,-1.46l0.0,-0.16l-0.42,-1.51l1.62,-0.11l2.39,1.92Z", "name": "United Kingdom"}, "GA": {"path": "M448.76,294.47l-2.38,-2.34l-1.63,-2.04l-1.46,-2.48l0.06,-0.66l0.54,-0.81l0.61,-1.82l0.46,-1.69l0.63,-0.11l3.62,0.03l0.3,-0.3l-0.02,-2.75l0.88,-0.12l1.47,0.32l0.13,0.0l1.39,-0.3l-0.13,0.87l0.03,0.19l0.7,1.29l0.3,0.16l1.74,-0.19l0.36,0.29l-1.01,2.7l0.05,0.29l1.13,1.42l0.25,1.82l-0.3,1.56l-0.64,0.99l-1.93,-0.09l-1.26,-1.13l-0.5,0.17l-0.16,0.91l-1.48,0.27l-0.12,0.05l-0.86,0.63l-0.08,0.39l0.81,1.42l-1.48,1.08Z", "name": "Gabon"}, "GN": {"path": "M399.83,265.31l-0.69,-0.06l-0.3,0.16l-0.43,0.85l-0.39,-0.01l-0.3,-0.33l0.14,-0.87l-0.05,-0.22l-1.05,-1.54l-0.37,-0.11l-0.61,0.27l-0.84,0.12l0.02,-0.54l-0.04,-0.17l-0.35,-0.57l0.07,-0.63l-0.03,-0.17l-0.57,-1.11l-0.7,-0.9l-0.24,-0.12l-2.0,-0.0l-0.19,0.07l-0.51,0.42l-0.6,0.05l-0.21,0.11l-0.43,0.55l-0.3,0.7l-1.04,0.86l-0.91,-1.24l-1.0,-1.02l-0.69,-0.37l-0.52,-0.42l-0.3,-1.11l-0.37,-0.56l-0.1,-0.1l-0.4,-0.23l0.77,-0.85l0.62,0.04l0.18,-0.05l0.58,-0.38l0.46,-0.0l0.19,-0.07l0.39,-0.34l0.1,-0.3l-0.17,-0.67l0.15,-0.14l0.09,-0.2l0.03,-0.57l0.87,0.02l1.76,0.6l0.13,0.01l0.55,-0.06l0.22,-0.13l0.08,-0.12l1.18,0.17l0.17,-0.02l0.09,0.56l0.3,0.25l0.4,-0.0l0.14,-0.03l0.56,-0.29l0.23,0.05l0.63,0.59l0.15,0.07l1.07,0.2l0.24,-0.06l0.65,-0.52l0.77,-0.32l0.55,-0.32l0.3,0.04l0.44,0.45l0.34,0.74l0.84,0.87l-0.35,0.45l-0.06,0.15l-0.1,0.82l0.42,0.31l0.35,-0.16l0.05,0.04l-0.1,0.59l0.09,0.27l0.42,0.4l-0.06,0.02l-0.18,0.21l-0.2,0.86l0.03,0.21l0.56,1.02l0.52,1.71l-0.65,0.21l-0.15,0.12l-0.24,0.35l-0.03,0.28l0.16,0.41l-0.1,0.76l-0.12,0.0Z", "name": "Guinea"}, "GM": {"path": "M379.18,251.48l0.15,-0.55l2.51,-0.07l0.21,-0.09l0.48,-0.52l0.58,-0.03l0.91,0.58l0.16,0.05l0.78,0.01l0.14,-0.03l0.59,-0.31l0.16,0.24l-0.71,0.38l-0.94,-0.04l-1.02,-0.51l-0.3,0.01l-0.86,0.55l-0.37,0.02l-0.14,0.04l-0.53,0.31l-1.81,-0.04Z", "name": "Gambia"}, "GL": {"path": "M304.13,6.6l8.19,-3.63l8.72,0.28l0.19,-0.06l3.12,-2.28l8.75,-0.61l19.94,0.8l14.93,4.75l-3.92,2.01l-9.52,0.27l-13.48,0.6l-0.27,0.2l0.09,0.33l1.26,1.09l0.22,0.07l8.81,-0.67l7.49,2.07l0.19,-0.01l4.68,-1.78l1.76,1.84l-2.59,3.26l-0.01,0.36l0.34,0.11l6.35,-2.2l12.09,-2.32l7.31,1.14l1.17,2.13l-9.9,4.05l-1.43,1.32l-7.91,0.98l-0.26,0.31l0.29,0.29l5.25,0.25l-2.63,3.72l-2.02,3.61l-0.04,0.15l0.08,6.05l0.07,0.19l2.61,3.0l-3.4,0.2l-4.12,1.66l-0.04,0.54l4.5,2.67l0.53,3.9l-2.39,0.42l-0.19,0.48l2.91,3.83l-5.0,0.32l-0.27,0.22l0.12,0.33l2.69,1.84l-0.65,1.35l-3.36,0.71l-3.46,0.01l-0.21,0.51l3.05,3.15l0.02,1.53l-4.54,-1.79l-0.32,0.06l-1.29,1.26l0.11,0.5l3.33,1.15l3.17,2.74l0.85,3.29l-4.0,0.78l-1.83,-1.66l-3.1,-2.64l-0.36,-0.02l-0.13,0.33l0.8,2.92l-2.76,2.26l-0.09,0.33l0.28,0.2l6.59,0.19l2.47,0.18l-5.86,3.38l-6.76,3.43l-7.26,1.48l-2.73,0.02l-0.16,0.05l-2.67,1.72l-3.44,4.42l-5.28,2.86l-1.73,0.18l-3.33,1.01l-3.59,0.96l-0.15,0.1l-2.15,2.52l-0.07,0.19l-0.03,2.76l-1.21,2.49l-4.03,3.1l-0.1,0.33l0.98,2.94l-2.31,6.57l-3.21,0.21l-3.6,-3.0l-0.19,-0.07l-4.9,-0.02l-2.29,-1.97l-1.69,-3.78l-4.31,-4.86l-1.23,-2.52l-0.34,-3.58l-0.08,-0.17l-3.35,-3.67l0.85,-2.92l-0.09,-0.31l-1.5,-1.34l2.33,-4.7l3.67,-1.57l0.15,-0.13l1.02,-1.93l0.52,-3.47l-0.44,-0.31l-2.85,1.57l-1.33,0.64l-2.12,0.59l-2.81,-1.32l-0.15,-2.79l0.88,-2.17l2.09,-0.06l5.07,1.2l0.34,-0.17l-0.11,-0.37l-4.3,-2.9l-2.24,-1.58l-0.25,-0.05l-2.38,0.62l-1.7,-0.93l2.62,-4.1l-0.03,-0.36l-1.51,-1.75l-1.97,-3.3l-3.01,-5.21l-0.1,-0.11l-3.04,-1.85l0.03,-1.94l-0.18,-0.28l-6.82,-3.01l-5.35,-0.38l-6.69,0.21l-6.03,0.37l-2.81,-1.59l-3.84,-2.9l5.94,-1.5l5.01,-0.28l0.28,-0.29l-0.26,-0.31l-10.68,-1.38l-5.38,-2.1l0.27,-1.68l9.3,-2.6l9.18,-2.68l0.19,-0.16l0.97,-2.05l-0.18,-0.42l-6.29,-1.91l1.81,-1.9l8.58,-4.05l3.6,-0.63l0.23,-0.4l-0.92,-2.37l5.59,-1.5l7.66,-0.95l7.58,-0.05l2.65,1.84l0.31,0.02l6.52,-3.29l5.85,2.24l3.55,0.49l5.17,1.95l0.38,-0.16l-0.13,-0.39l-5.77,-3.16l0.29,-2.26Z", "name": "Greenland"}, "KW": {"path": "M540.87,207.81l0.41,0.94l-0.18,0.51l0.0,0.21l0.65,1.66l-1.15,0.05l-0.54,-1.12l-0.24,-0.17l-1.73,-0.2l1.44,-2.06l1.33,0.18Z", "name": "Kuwait"}, "GH": {"path": "M423.16,269.88l-3.58,1.34l-1.41,0.87l-2.13,0.69l-1.91,-0.61l0.09,-0.75l-0.03,-0.17l-1.04,-2.07l0.62,-2.7l1.04,-2.08l0.03,-0.19l-1.0,-5.46l0.05,-1.12l4.04,-0.11l1.08,0.18l0.18,-0.03l0.72,-0.36l0.75,0.13l-0.11,0.48l0.06,0.26l0.98,1.22l-0.0,1.77l0.24,1.99l0.05,0.13l0.55,0.81l-0.52,2.14l0.19,1.37l0.69,1.66l0.38,0.62Z", "name": "Ghana"}, "OM": {"path": "M568.16,231.0l-0.08,0.1l-0.84,1.61l-0.93,-0.11l-0.27,0.11l-0.58,0.73l-0.4,1.32l-0.01,0.14l0.29,1.61l-0.07,0.09l-1.0,-0.01l-0.16,0.04l-1.56,0.97l-0.14,0.2l-0.23,1.17l-0.41,0.4l-1.44,-0.02l-0.17,0.05l-0.98,0.65l-0.13,0.25l0.01,0.87l-0.97,0.57l-1.27,-0.22l-0.19,0.03l-1.63,0.84l-0.88,0.11l-2.55,-5.57l7.2,-2.49l0.19,-0.19l1.67,-5.23l-0.03,-0.25l-1.1,-1.78l0.05,-0.89l0.68,-1.03l0.05,-0.16l0.01,-0.89l0.96,-0.44l0.07,-0.5l-0.32,-0.26l0.16,-1.31l0.85,-0.01l1.03,1.67l0.09,0.09l1.4,0.96l0.11,0.05l1.82,0.34l1.37,0.45l1.75,2.32l0.13,0.1l0.7,0.26l-0.0,0.3l-1.25,2.19l-1.01,0.8ZM561.88,218.47l-0.01,0.02l-0.15,-0.29l0.3,-0.38l-0.14,0.65Z", "name": "Oman"}, "_3": {"path": "M543.2,261.06l-1.07,1.46l-1.65,1.99l-1.91,0.01l-8.08,-2.95l-0.89,-0.84l-0.9,-1.19l-0.81,-1.23l0.44,-0.73l0.76,-1.12l0.49,0.28l0.52,1.05l1.13,1.06l0.2,0.08l1.24,0.01l2.42,-0.65l2.77,-0.31l2.17,-0.78l1.31,-0.19l0.84,-0.43l1.03,-0.06l-0.01,4.54Z", "name": "Somaliland"}, "_2": {"path": "M384.23,230.37l0.07,-0.06l0.28,-0.89l0.99,-1.13l0.07,-0.13l0.8,-3.54l3.4,-2.8l0.09,-0.13l0.76,-2.17l0.07,5.5l-2.07,0.21l-0.24,0.17l-0.61,1.36l-0.02,0.16l0.43,3.46l-4.01,-0.01ZM391.82,218.2l0.07,-0.06l0.75,-1.93l1.86,-0.25l0.94,0.34l1.14,0.0l0.18,-0.06l0.73,-0.56l1.41,-0.08l-0.0,2.72l-7.08,-0.12Z", "name": "Western Sahara"}, "_1": {"path": "M472.71,172.84l-0.07,-0.43l-0.16,-0.22l-0.53,-0.27l-0.38,-0.58l0.3,-0.43l0.51,-0.19l0.18,-0.18l0.3,-0.87l0.12,-0.04l0.22,0.26l0.12,0.09l0.38,0.15l0.28,0.41l0.15,0.12l0.34,0.12l0.43,0.5l0.15,0.07l-0.12,0.3l-0.27,0.32l-0.03,0.18l-0.31,0.06l-1.48,0.47l-0.15,0.17Z", "name": "Kosovo"}, "_0": {"path": "M503.54,192.92l0.09,-0.17l0.41,0.01l-0.08,0.01l-0.42,0.15ZM504.23,192.76l1.02,0.02l0.4,-0.13l-0.09,0.29l0.03,0.08l-0.35,0.16l-0.24,-0.04l-0.06,-0.1l-0.18,-0.17l-0.19,-0.08l-0.33,-0.02Z", "name": "Northern Cyprus"}, "JO": {"path": "M510.26,200.93l0.28,-0.57l2.53,1.0l0.27,-0.02l4.57,-2.77l0.84,2.84l-0.28,0.25l-4.95,1.37l-0.14,0.49l2.24,2.48l-0.5,0.28l-0.13,0.14l-0.35,0.78l-1.76,0.35l-0.2,0.14l-0.57,0.94l-0.94,0.73l-2.45,-0.38l-0.03,-0.12l1.23,-4.32l-0.04,-1.1l0.34,-0.75l0.03,-0.12l0.0,-1.63Z", "name": "Jordan"}, "HR": {"path": "M455.49,162.73l1.53,0.09l0.24,-0.1l0.29,-0.34l0.64,0.38l0.14,0.04l0.98,0.06l0.32,-0.3l-0.01,-0.66l0.67,-0.25l0.19,-0.22l0.21,-1.11l1.72,-0.72l0.65,0.32l1.94,1.37l2.07,0.6l0.22,-0.02l0.67,-0.33l0.47,0.94l0.67,0.76l-0.63,0.77l-0.91,-0.55l-0.16,-0.04l-1.69,0.04l-2.2,-0.51l-1.17,0.07l-0.21,0.11l-0.36,0.42l-0.67,-0.53l-0.46,0.12l-0.52,1.29l0.05,0.31l1.21,1.42l0.58,0.99l1.15,1.14l0.95,0.68l0.92,1.23l0.1,0.09l1.75,0.91l-1.87,-0.89l-1.5,-1.11l-2.23,-0.88l-1.77,-1.9l0.12,-0.06l0.1,-0.47l-1.07,-1.22l-0.04,-0.94l-0.21,-0.27l-1.61,-0.49l-0.35,0.14l-0.53,0.93l-0.41,-0.57l0.04,-0.73Z", "name": "Croatia"}, "HT": {"path": "M237.82,234.68l1.35,0.1l1.95,0.37l0.18,1.15l-0.16,0.83l-0.51,0.37l-0.06,0.44l0.57,0.68l-0.02,0.22l-1.31,-0.35l-1.26,0.17l-1.49,-0.18l-0.15,0.02l-1.03,0.43l-1.02,-0.61l0.09,-0.36l2.04,0.32l1.9,0.21l0.19,-0.05l0.9,-0.58l0.05,-0.47l-1.05,-1.03l0.02,-0.86l-0.23,-0.3l-1.13,-0.29l0.18,-0.23Z", "name": "Haiti"}, "HU": {"path": "M461.96,157.92l0.68,-1.66l-0.03,-0.29l-0.15,-0.22l0.84,-0.0l0.3,-0.26l0.12,-0.84l0.88,0.57l0.98,0.38l0.16,0.01l2.1,-0.39l0.23,-0.21l0.14,-0.45l0.88,-0.1l1.06,-0.43l0.13,0.1l0.28,0.04l1.18,-0.4l0.14,-0.1l0.52,-0.67l0.63,-0.15l2.6,0.95l0.26,-0.03l0.38,-0.23l1.12,0.7l0.1,0.49l-1.31,0.57l-0.14,0.13l-1.18,2.14l-1.44,2.04l-1.85,0.55l-1.51,-0.13l-0.14,0.02l-1.92,0.82l-0.85,0.42l-1.91,-0.55l-1.83,-1.31l-0.74,-0.37l-0.44,-0.97l-0.26,-0.18Z", "name": "Hungary"}, "HN": {"path": "M202.48,251.87l-0.33,-0.62l-0.18,-0.14l-0.5,-0.15l0.13,-0.76l-0.11,-0.28l-0.34,-0.28l-0.6,-0.23l-0.18,-0.01l-0.81,0.22l-0.16,-0.24l-0.72,-0.39l-0.51,-0.48l-0.12,-0.07l-0.31,-0.09l0.24,-0.3l0.04,-0.3l-0.16,-0.4l0.1,-0.28l1.14,-0.69l1.0,-0.86l0.09,0.04l0.3,-0.05l0.47,-0.39l0.49,-0.03l0.14,0.13l0.29,0.06l0.31,-0.1l1.16,0.22l1.24,-0.08l0.81,-0.28l0.29,-0.25l0.63,0.1l0.69,0.18l0.65,-0.06l0.49,-0.2l1.04,0.32l0.38,0.06l0.7,0.44l0.71,0.56l0.92,0.41l0.1,0.11l-0.11,-0.01l-0.23,0.09l-0.3,0.3l-0.76,0.29l-0.58,0.0l-0.15,0.04l-0.45,0.26l-0.31,-0.07l-0.37,-0.34l-0.28,-0.07l-0.26,0.07l-0.18,0.15l-0.23,0.43l-0.04,-0.0l-0.33,0.28l-0.03,0.4l-0.76,0.61l-0.45,0.3l-0.15,0.16l-0.51,-0.36l-0.41,0.06l-0.45,0.56l-0.41,-0.01l-0.59,0.06l-0.27,0.31l0.04,0.96l-0.07,0.0l-0.25,0.16l-0.24,0.45l-0.42,0.06Z", "name": "Honduras"}, "PR": {"path": "M254.95,238.31l1.15,0.21l0.2,0.23l-0.36,0.36l-1.76,-0.01l-1.2,0.07l-0.09,-0.69l0.17,-0.18l1.89,0.01Z", "name": "Puerto Rico"}, "PS": {"path": "M509.66,201.06l-0.0,1.44l-0.29,0.63l-0.59,0.19l0.02,-0.11l0.52,-0.31l-0.02,-0.53l-0.41,-0.2l0.36,-1.28l0.41,0.17Z", "name": "West Bank"}, "PT": {"path": "M398.65,173.6l0.75,-0.63l0.7,-0.3l0.51,1.2l0.28,0.18l1.48,-0.0l0.2,-0.08l0.33,-0.3l1.16,0.08l0.52,1.11l-0.95,0.66l-0.13,0.24l-0.03,2.2l-0.33,0.35l-0.08,0.18l-0.08,1.17l-0.86,0.19l-0.2,0.44l0.93,1.64l-0.64,1.79l0.07,0.31l0.72,0.72l-0.24,0.56l-0.9,1.05l-0.07,0.26l0.17,0.77l-0.73,0.54l-1.18,-0.36l-0.16,-0.0l-0.85,0.21l0.31,-1.81l-0.23,-1.87l-0.23,-0.25l-0.99,-0.24l-0.49,-0.91l0.18,-1.72l0.93,-0.99l0.08,-0.16l0.17,-1.17l0.52,-1.76l-0.04,-1.36l-0.51,-1.14l-0.09,-0.8Z", "name": "Portugal"}, "PY": {"path": "M264.33,341.43l0.93,-2.96l0.07,-1.42l1.1,-2.1l4.19,-0.73l2.22,0.04l2.12,1.21l0.07,0.76l0.7,1.38l-0.16,3.48l0.24,0.31l2.64,0.5l0.19,-0.03l0.9,-0.45l1.47,0.62l0.38,0.64l0.23,2.35l0.3,1.07l0.25,0.21l0.93,0.12l0.16,-0.02l0.8,-0.37l0.61,0.33l-0.0,1.25l-0.33,1.53l-0.5,1.57l-0.39,2.26l-2.14,1.94l-1.85,0.4l-2.74,-0.4l-2.13,-0.62l2.26,-3.75l0.03,-0.24l-0.36,-1.18l-0.17,-0.19l-2.55,-1.03l-3.04,-1.95l-2.07,-0.43l-4.4,-4.12Z", "name": "Paraguay"}, "PA": {"path": "M213.65,263.79l0.18,-0.43l0.02,-0.18l-0.06,-0.28l0.23,-0.18l-0.01,-0.48l-0.4,-0.29l-0.01,-0.62l0.57,-0.13l0.68,0.69l-0.04,0.39l0.26,0.33l1.0,0.11l0.27,-0.1l0.49,0.44l0.24,0.07l1.34,-0.22l1.04,-0.62l1.49,-0.5l0.86,-0.73l0.99,0.11l0.18,0.28l1.35,0.08l1.02,0.4l0.78,0.72l0.71,0.53l-0.1,0.12l-0.05,0.3l0.53,1.34l-0.28,0.44l-0.6,-0.13l-0.36,0.22l-0.2,0.76l-0.41,-0.36l-0.44,-1.12l0.49,-0.53l-0.14,-0.49l-0.51,-0.14l-0.41,-0.72l-0.11,-0.11l-1.25,-0.7l-0.19,-0.04l-1.1,0.16l-0.22,0.15l-0.47,0.81l-0.9,0.56l-0.49,0.08l-0.22,0.17l-0.25,0.52l0.05,0.32l0.93,1.07l-0.41,0.21l-0.29,0.3l-0.81,0.09l-0.36,-1.26l-0.53,-0.1l-0.21,0.28l-0.5,-0.09l-0.44,-0.88l-0.22,-0.16l-0.99,-0.16l-0.61,-0.28l-0.13,-0.03l-1.0,0.0Z", "name": "Panama"}, "PG": {"path": "M808.4,298.6l0.62,0.46l1.19,1.56l1.04,0.77l-0.18,0.37l-0.42,0.15l-0.92,-0.82l-1.05,-1.53l-0.27,-0.96ZM804.09,296.06l-0.3,0.26l-0.36,-1.11l-0.66,-1.06l-2.55,-1.89l-1.42,-0.59l0.17,-0.15l1.16,0.6l0.85,0.55l1.01,0.58l0.97,1.02l0.9,0.76l0.24,1.03ZM796.71,297.99l0.15,0.82l0.34,0.24l1.43,-0.19l0.19,-0.11l0.68,-0.82l1.36,-0.87l0.13,-0.31l-0.21,-1.13l1.04,-0.03l0.3,0.25l-0.04,1.17l-0.74,1.34l-1.17,0.18l-0.22,0.15l-0.35,0.62l-2.51,1.13l-1.21,-0.0l-1.99,-0.71l-1.19,-0.58l0.07,-0.28l1.98,0.32l1.46,-0.2l0.24,-0.21l0.25,-0.79ZM789.24,303.52l0.11,0.15l2.19,1.62l1.6,2.62l0.27,0.14l1.09,-0.06l-0.07,0.77l0.23,0.32l1.23,0.27l-0.14,0.09l0.05,0.53l2.39,0.95l-0.11,0.28l-1.33,0.14l-0.51,-0.55l-0.18,-0.09l-4.59,-0.65l-1.87,-1.55l-1.38,-1.35l-1.28,-2.17l-0.16,-0.13l-3.27,-1.1l-0.19,0.0l-2.12,0.72l-1.58,0.85l-0.15,0.31l0.28,1.63l-1.65,0.73l-1.37,-0.4l-2.3,-0.09l-0.08,-15.65l3.95,1.57l4.58,1.42l1.67,1.25l1.32,1.19l0.36,1.39l0.19,0.21l4.06,1.51l0.39,0.85l-1.9,0.22l-0.25,0.39l0.55,1.68Z", "name": "Papua New Guinea"}, "PE": {"path": "M246.44,329.21l-0.63,1.25l-1.05,0.54l-2.25,-1.33l-0.19,-0.93l-0.16,-0.21l-4.95,-2.58l-4.46,-2.79l-1.87,-1.52l-0.94,-1.91l0.33,-0.6l-0.01,-0.31l-2.11,-3.33l-2.46,-4.66l-2.36,-5.02l-1.04,-1.18l-0.77,-1.81l-0.08,-0.11l-1.95,-1.64l-1.54,-0.88l0.61,-0.85l0.02,-0.31l-1.15,-2.27l0.69,-1.56l1.59,-1.26l0.12,0.42l-0.56,0.47l-0.11,0.25l0.07,0.92l0.36,0.27l0.97,-0.19l0.85,0.23l0.99,1.19l0.41,0.05l1.42,-1.03l0.11,-0.16l0.46,-1.64l1.45,-2.06l2.92,-0.96l0.11,-0.07l2.73,-2.62l0.84,-1.72l0.02,-0.18l-0.3,-1.65l0.28,-0.1l1.49,1.06l0.77,1.14l0.1,0.09l1.08,0.6l1.43,2.55l0.21,0.15l1.86,0.31l0.18,-0.03l1.25,-0.6l0.77,0.37l0.17,0.03l1.4,-0.2l1.57,0.96l-1.45,2.29l0.23,0.46l0.63,0.05l0.66,0.7l-1.51,-0.08l-0.24,0.1l-0.27,0.31l-1.96,0.46l-2.95,1.74l-0.14,0.21l-0.17,1.1l-0.6,0.82l-0.05,0.23l0.21,1.13l-1.31,0.63l-0.17,0.27l0.0,0.91l-0.53,0.37l-0.1,0.37l1.04,2.27l1.31,1.46l-0.44,0.9l0.24,0.43l1.52,0.13l0.87,1.23l0.24,0.13l2.21,0.07l0.18,-0.06l1.55,-1.13l-0.14,3.22l0.23,0.3l1.14,0.29l0.16,-0.0l1.18,-0.36l1.97,3.71l-0.45,0.71l-0.04,0.14l-0.12,1.8l-0.05,2.07l-0.92,1.2l-0.03,0.31l0.38,0.8l-0.48,0.72l-0.02,0.3l1.01,2.02l-1.5,2.64Z", "name": "Peru"}, "PK": {"path": "M609.08,187.76l1.66,1.21l0.71,2.11l0.2,0.19l3.62,1.01l-1.98,1.95l-2.65,0.4l-3.75,-0.68l-0.26,0.08l-1.23,1.22l-0.07,0.31l0.89,2.46l0.88,1.92l0.1,0.12l1.67,1.14l-1.8,1.35l-0.12,0.25l0.04,1.85l-2.35,2.67l-1.59,2.79l-2.5,2.72l-2.76,-0.2l-0.24,0.09l-2.76,2.83l0.04,0.45l1.54,1.13l0.27,1.94l0.09,0.17l1.34,1.29l0.4,1.83l-5.14,-0.01l-0.22,0.09l-1.53,1.63l-1.52,-0.56l-0.76,-1.88l-1.93,-2.03l-0.25,-0.09l-4.6,0.5l-4.05,0.05l-3.1,0.33l0.77,-2.53l3.48,-1.33l0.19,-0.33l-0.21,-1.24l-0.19,-0.23l-1.01,-0.37l-0.06,-2.18l-0.17,-0.26l-2.32,-1.16l-0.96,-1.57l-0.56,-0.65l3.16,1.05l0.14,0.01l2.45,-0.4l1.44,0.33l0.3,-0.1l0.4,-0.47l1.58,0.22l0.14,-0.01l3.25,-1.14l0.2,-0.27l0.08,-2.23l1.23,-1.38l1.73,0.0l0.28,-0.2l0.22,-0.61l1.68,-0.32l0.86,0.24l0.27,-0.05l0.98,-0.78l0.11,-0.26l-0.13,-1.57l0.96,-1.52l1.51,-0.67l0.14,-0.41l-0.74,-1.4l1.86,0.07l0.26,-0.13l0.69,-1.01l0.05,-0.2l-0.09,-0.94l1.14,-1.09l0.09,-0.28l-0.29,-1.41l-0.51,-1.07l1.23,-1.05l2.6,-0.58l2.86,-0.33l1.33,-0.54l1.3,-0.29Z", "name": "Pakistan"}, "PH": {"path": "M737.11,263.82l0.25,1.66l0.14,1.34l-0.54,1.46l-0.64,-1.79l-0.5,-0.1l-1.17,1.28l-0.05,0.32l0.74,1.71l-0.49,0.81l-2.6,-1.28l-0.61,-1.57l0.68,-1.07l-0.07,-0.4l-1.59,-1.19l-0.42,0.06l-0.69,0.91l-1.01,-0.08l-0.21,0.06l-1.58,1.2l-0.17,-0.3l0.87,-1.88l1.48,-0.66l1.18,-0.81l0.71,0.92l0.34,0.1l1.9,-0.69l0.18,-0.18l0.34,-0.94l1.57,-0.06l0.29,-0.32l-0.1,-1.38l1.41,0.83l0.36,2.06ZM734.94,254.42l0.56,2.24l-1.41,-0.49l-0.4,0.3l0.07,0.94l0.51,1.3l-0.54,0.26l-0.08,-1.34l-0.25,-0.28l-0.56,-0.1l-0.23,-0.91l1.03,0.14l0.34,-0.31l-0.03,-0.96l-0.06,-0.18l-1.14,-1.44l1.62,0.04l0.57,0.78ZM724.68,238.33l1.48,0.71l0.33,-0.04l0.44,-0.38l0.05,0.13l-0.37,0.97l0.01,0.23l0.81,1.75l-0.59,1.92l-1.37,0.79l-0.14,0.2l-0.39,2.07l0.01,0.14l0.56,2.04l0.23,0.21l1.33,0.28l0.14,-0.0l1.0,-0.27l2.82,1.28l-0.2,1.16l0.12,0.29l0.66,0.5l-0.13,0.56l-1.54,-0.99l-0.89,-1.29l-0.49,0.0l-0.44,0.65l-1.34,-1.28l-0.26,-0.08l-2.18,0.36l-0.96,-0.44l0.09,-0.72l0.69,-0.57l-0.01,-0.47l-0.75,-0.59l-0.47,0.14l-0.15,0.43l-0.86,-1.02l-0.34,-1.02l-0.07,-1.74l0.49,0.41l0.49,-0.21l0.26,-3.99l0.73,-2.1l1.23,0.0ZM731.12,258.92l-0.82,0.75l-0.83,1.64l-0.52,0.5l-1.17,-1.33l0.36,-0.47l0.62,-0.7l0.07,-0.15l0.24,-1.35l0.73,-0.08l-0.31,1.29l0.16,0.34l0.37,-0.09l1.21,-1.6l-0.12,1.24ZM726.66,255.58l0.85,0.45l0.14,0.03l1.28,-0.0l-0.03,0.62l-1.04,0.96l-1.15,0.55l-0.05,-0.71l0.17,-1.26l-0.01,-0.13l-0.16,-0.51ZM724.92,252.06l-0.45,1.5l-0.7,-0.83l-0.95,-1.43l1.44,0.06l0.67,0.7ZM717.48,261.28l-1.87,1.35l0.21,-0.3l1.81,-1.57l1.5,-1.75l0.97,-1.84l0.23,1.08l-1.56,1.33l-1.29,1.7Z", "name": "Philippines"}, "PL": {"path": "M458.8,144.25l-0.96,-1.98l0.18,-1.06l-0.01,-0.15l-0.62,-1.8l-0.82,-1.11l0.56,-0.73l0.05,-0.28l-0.51,-1.51l1.48,-0.87l3.88,-1.58l3.06,-1.14l2.23,0.52l0.15,0.66l0.29,0.23l2.4,0.04l3.11,0.39l4.56,-0.05l1.12,0.32l0.51,0.89l0.1,1.45l0.03,0.12l0.66,1.23l-0.01,1.08l-1.33,0.61l-0.14,0.41l0.74,1.5l0.07,1.53l1.22,2.79l-0.19,0.66l-1.09,0.33l-0.14,0.09l-2.27,2.72l-0.04,0.31l0.35,0.8l-2.22,-1.16l-0.21,-0.02l-1.72,0.44l-1.1,-0.31l-0.21,0.02l-1.3,0.61l-1.11,-1.02l-0.32,-0.05l-0.81,0.35l-1.15,-1.61l-0.21,-0.12l-1.65,-0.17l-0.19,-0.82l-0.23,-0.23l-1.72,-0.37l-0.34,0.17l-0.25,0.56l-0.88,-0.44l0.12,-0.69l-0.25,-0.35l-1.78,-0.27l-1.08,-0.97Z", "name": "Poland"}, "ZM": {"path": "M502.81,308.32l1.09,1.04l0.58,1.94l-0.39,0.66l-0.5,2.05l-0.0,0.14l0.45,1.95l-0.69,0.77l-0.06,0.11l-0.76,2.37l0.15,0.36l0.62,0.31l-6.85,1.9l-0.22,0.33l0.2,1.54l-1.62,0.3l-0.12,0.05l-1.43,1.02l-0.11,0.15l-0.25,0.73l-0.73,0.17l-0.14,0.08l-2.18,2.12l-1.33,1.6l-0.65,0.05l-0.83,-0.29l-2.75,-0.28l-0.24,-0.1l-0.15,-0.27l-0.99,-0.58l-0.12,-0.04l-1.73,-0.14l-1.88,0.54l-1.5,-1.48l-1.61,-2.01l0.11,-7.73l4.92,0.03l0.29,-0.37l-0.19,-0.79l0.34,-0.86l0.0,-0.21l-0.41,-1.11l0.26,-1.14l-0.01,-0.16l-0.12,-0.36l0.18,0.01l0.1,0.56l0.31,0.25l1.14,-0.06l1.44,0.21l0.76,1.05l0.19,0.12l2.01,0.35l0.19,-0.03l1.24,-0.65l0.44,1.03l0.22,0.18l1.81,0.34l0.85,0.99l1.02,1.39l0.24,0.12l1.92,0.02l0.3,-0.32l-0.21,-2.74l-0.47,-0.23l-0.53,0.36l-1.58,-0.89l-0.51,-0.34l0.29,-2.36l0.44,-2.99l-0.03,-0.18l-0.5,-0.99l0.61,-1.38l0.53,-0.24l3.26,-0.41l0.89,0.23l1.01,0.62l1.04,0.44l1.6,0.43l1.35,0.72Z", "name": "Zambia"}, "EE": {"path": "M482.19,120.88l0.23,-1.68l-0.43,-0.31l-0.75,0.37l-1.34,-1.1l-0.18,-1.75l2.92,-0.95l3.07,-0.53l2.66,0.6l2.48,-0.1l0.18,0.31l-1.65,1.96l-0.06,0.26l0.71,3.25l-0.88,0.94l-1.85,-0.01l-2.08,-1.3l-1.14,-0.47l-0.2,-0.01l-1.69,0.51Z", "name": "Estonia"}, "EG": {"path": "M508.07,208.8l-0.66,1.06l-0.53,2.03l-0.64,1.32l-0.32,0.26l-1.74,-1.85l-1.77,-3.86l-0.48,-0.09l-0.26,0.25l-0.07,0.32l1.04,2.88l1.55,2.76l1.89,4.18l0.94,1.48l0.83,1.54l2.08,2.73l-0.3,0.28l-0.1,0.23l0.08,1.72l0.11,0.22l2.91,2.37l-28.78,0.0l0.0,-19.06l-0.73,-2.2l0.61,-1.59l0.0,-0.2l-0.34,-1.04l0.73,-1.08l3.13,-0.04l2.36,0.72l2.48,0.81l1.15,0.43l0.23,-0.01l1.93,-0.87l1.02,-0.78l2.08,-0.21l1.59,0.31l0.62,1.24l0.52,0.03l0.46,-0.71l1.86,0.59l1.95,0.16l0.17,-0.04l0.92,-0.52l1.48,4.24Z", "name": "Egypt"}, "ZA": {"path": "M467.06,373.27l-0.13,-0.29l0.01,-1.58l-0.02,-0.12l-0.71,-1.64l0.59,-0.37l0.14,-0.26l-0.07,-2.13l-0.05,-0.15l-1.63,-2.58l-1.25,-2.31l-1.71,-3.37l0.88,-0.98l0.7,0.52l0.39,1.08l0.23,0.19l1.1,0.19l1.55,0.51l0.14,0.01l1.35,-0.2l0.11,-0.04l2.24,-1.39l0.14,-0.25l0.0,-9.4l0.16,0.09l1.39,2.38l-0.22,1.53l0.04,0.19l0.56,0.94l0.3,0.14l1.79,-0.27l0.16,-0.08l1.23,-1.18l1.17,-0.79l0.1,-0.12l0.57,-1.19l1.02,-0.52l0.9,0.28l1.16,0.73l0.14,0.05l2.04,0.13l0.13,-0.02l1.6,-0.62l0.18,-0.19l0.63,-1.93l1.18,-0.19l0.19,-0.12l0.78,-1.05l0.81,-1.71l2.18,-1.91l3.44,-1.88l0.89,0.02l1.17,0.43l0.21,-0.0l0.76,-0.29l1.07,0.21l1.15,3.55l0.63,1.82l-0.44,2.9l0.1,0.52l-0.74,-0.29l-0.18,-0.01l-0.72,0.19l-0.21,0.2l-0.22,0.74l-0.66,0.97l-0.05,0.18l0.02,0.93l0.09,0.21l1.49,1.46l0.27,0.08l1.47,-0.29l0.22,-0.18l0.43,-1.01l1.29,0.02l-0.51,1.63l-0.29,2.2l-0.59,1.12l-2.2,1.78l-1.06,1.39l-0.72,1.44l-1.39,1.93l-2.81,2.84l-1.75,1.65l-1.85,1.24l-2.55,1.06l-1.23,0.14l-0.24,0.18l-0.22,0.54l-1.27,-0.35l-0.2,0.01l-1.15,0.5l-2.62,-0.52l-0.12,0.0l-1.46,0.33l-0.98,-0.14l-0.16,0.02l-2.55,1.1l-2.11,0.44l-1.59,1.07l-0.93,0.06l-0.97,-0.92l-0.19,-0.08l-0.72,-0.04l-1.0,-1.16l-0.25,0.05ZM493.72,359.24l-1.12,-0.86l-0.31,-0.03l-1.23,0.59l-1.36,1.07l-1.39,1.78l0.01,0.38l1.88,2.11l0.31,0.09l0.9,-0.27l0.18,-0.15l0.4,-0.77l1.28,-0.39l0.18,-0.16l0.42,-0.88l0.76,-1.32l-0.05,-0.37l-0.87,-0.82Z", "name": "South Africa"}, "EC": {"path": "M220.2,293.48l1.25,-1.76l0.02,-0.31l-0.54,-1.09l-0.5,-0.06l-0.78,0.94l-1.03,-0.75l0.33,-0.46l0.05,-0.23l-0.38,-2.04l0.66,-0.28l0.17,-0.19l0.45,-1.52l0.93,-1.58l0.04,-0.2l-0.13,-0.78l1.19,-0.47l1.57,-0.91l2.35,1.34l0.17,0.04l0.28,-0.02l0.52,0.91l0.21,0.15l2.12,0.35l0.2,-0.03l0.55,-0.31l1.08,0.73l0.97,0.54l0.31,1.67l-0.71,1.49l-2.64,2.54l-2.95,0.97l-0.15,0.11l-1.53,2.18l-0.49,1.68l-1.1,0.8l-0.87,-1.05l-0.15,-0.1l-1.01,-0.27l-0.13,-0.0l-0.7,0.14l-0.03,-0.43l0.6,-0.5l0.1,-0.31l-0.26,-0.91Z", "name": "Ecuador"}, "AL": {"path": "M470.27,171.7l0.38,0.19l0.45,-0.18l0.4,0.61l0.11,0.1l0.46,0.24l0.13,0.87l-0.3,0.95l-0.0,0.17l0.36,1.28l0.12,0.17l0.9,0.63l-0.03,0.44l-0.67,0.35l-0.16,0.22l-0.14,0.88l-0.96,1.18l-0.06,-0.03l-0.04,-0.48l-0.12,-0.22l-1.28,-0.92l-0.19,-1.25l0.2,-1.96l0.33,-0.89l-0.06,-0.3l-0.36,-0.41l-0.13,-0.75l0.66,-0.9Z", "name": "Albania"}, "AO": {"path": "M461.62,299.93l0.55,1.67l0.73,1.54l1.56,2.18l0.28,0.12l1.66,-0.2l0.81,-0.34l1.28,0.33l0.33,-0.14l0.39,-0.67l0.56,-1.3l1.37,-0.09l0.27,-0.21l0.07,-0.23l0.67,-0.01l-0.13,0.53l0.29,0.37l2.74,-0.02l0.04,1.29l0.03,0.13l0.46,0.87l-0.35,1.52l0.18,1.55l0.07,0.16l0.75,0.85l-0.13,2.89l0.41,0.29l0.56,-0.21l1.11,0.05l1.5,-0.37l0.9,0.12l0.18,0.53l-0.27,1.15l0.01,0.17l0.4,1.08l-0.33,0.85l-0.01,0.18l0.12,0.51l-4.83,-0.03l-0.3,0.3l-0.12,8.13l0.07,0.19l1.69,2.1l1.27,1.25l-4.03,0.92l-5.93,-0.36l-1.66,-1.19l-0.18,-0.06l-10.15,0.11l-0.34,0.13l-1.35,-1.05l-0.17,-0.06l-1.62,-0.08l-1.6,0.45l-0.88,0.36l-0.17,-1.2l0.34,-2.19l0.85,-2.32l0.14,-1.13l0.79,-2.24l0.57,-1.0l1.42,-1.64l0.82,-1.15l0.05,-0.13l0.26,-1.88l-0.13,-1.51l-0.07,-0.16l-0.72,-0.87l-1.23,-2.91l0.09,-0.37l0.73,-0.95l0.05,-0.27l-1.27,-4.12l-1.19,-1.54l0.1,-0.2l0.86,-0.28l0.78,0.03l0.83,-0.29l7.12,0.03ZM451.81,298.94l-0.17,0.07l-0.5,-1.42l0.85,-0.92l0.53,-0.29l0.48,0.44l-0.56,0.32l-0.1,0.1l-0.41,0.65l-0.05,0.14l-0.07,0.91Z", "name": "Angola"}, "KZ": {"path": "M598.42,172.08l-1.37,0.54l-3.3,2.09l-0.11,0.12l-1.01,1.97l-0.56,0.01l-0.6,-1.24l-0.26,-0.17l-2.95,-0.09l-0.46,-2.22l-0.29,-0.24l-0.91,-0.02l0.17,-2.72l-0.12,-0.26l-3.0,-2.22l-0.2,-0.06l-4.29,0.24l-2.8,0.42l-2.36,-2.7l-6.4,-3.65l-0.23,-0.03l-6.45,1.83l-0.22,0.29l0.1,10.94l-0.84,0.1l-1.65,-2.21l-0.11,-0.09l-1.69,-0.84l-0.2,-0.02l-2.84,0.63l-0.14,0.07l-0.71,0.64l-0.02,-0.11l0.57,-1.17l0.0,-0.26l-0.48,-1.05l-0.17,-0.16l-2.78,-0.99l-1.08,-2.62l-0.13,-0.15l-1.24,-0.7l-0.04,-0.48l2.07,0.25l0.34,-0.29l0.09,-2.03l1.84,-0.44l2.12,0.45l0.36,-0.25l0.45,-3.04l-0.45,-2.06l-0.31,-0.23l-2.44,0.15l-2.07,-0.75l-0.23,0.01l-2.88,1.38l-2.21,0.62l-0.96,-0.38l0.22,-1.39l-0.06,-0.23l-1.6,-2.12l-0.25,-0.12l-1.72,0.08l-1.87,-1.91l1.33,-2.24l-0.06,-0.38l-0.55,-0.5l1.72,-3.08l2.3,1.7l0.48,-0.2l0.29,-2.26l4.99,-3.48l3.76,-0.08l5.46,2.27l2.96,1.33l0.26,-0.01l2.59,-1.36l3.82,-0.06l3.13,1.67l0.38,-0.09l0.63,-0.85l3.36,0.14l0.29,-0.19l0.63,-1.57l-0.13,-0.37l-3.64,-2.05l2.0,-1.36l0.1,-0.38l-0.32,-0.62l2.09,-0.76l0.13,-0.47l-1.65,-2.13l0.89,-0.91l9.27,-1.18l0.13,-0.05l1.17,-0.82l6.2,-1.27l2.26,-1.43l4.19,0.7l0.74,3.39l0.38,0.22l2.52,-0.81l2.9,1.06l-0.18,1.63l0.32,0.33l2.52,-0.23l5.0,-2.58l0.03,0.39l3.16,2.62l5.57,8.48l0.49,0.02l1.18,-1.53l3.22,1.78l0.21,0.03l3.5,-0.83l1.21,0.52l1.16,1.82l0.15,0.12l1.67,0.61l1.01,1.32l0.28,0.11l3.04,-0.41l1.1,1.64l-1.68,1.89l-1.97,0.28l-0.26,0.29l-0.12,3.09l-1.2,1.23l-4.81,-1.01l-0.35,0.2l-1.77,5.51l-1.14,0.62l-4.92,1.23l-0.2,0.41l2.14,5.06l-1.45,0.67l-0.17,0.31l0.15,1.28l-1.05,-0.3l-1.21,-1.04l-0.17,-0.07l-3.73,-0.32l-4.15,-0.08l-0.92,0.31l-3.46,-1.24l-0.22,0.01l-1.42,0.63l-0.17,0.21l-0.32,1.49l-3.82,-0.97l-0.15,0.0l-1.65,0.43l-0.2,0.17l-0.51,1.21Z", "name": "Kazakhstan"}, "ET": {"path": "M516.0,247.63l1.21,0.92l0.3,0.04l1.3,-0.53l0.46,0.41l0.19,0.08l1.65,0.03l2.05,0.96l0.67,0.88l1.07,0.79l1.0,1.45l0.7,0.68l-0.72,0.92l-0.85,1.19l-0.04,0.25l0.19,0.67l0.04,0.74l0.29,0.28l1.4,0.04l0.55,-0.15l0.23,0.19l-0.41,0.67l0.01,0.32l0.92,1.39l0.93,1.23l0.99,0.94l0.1,0.06l8.19,2.99l1.51,0.01l-6.51,6.95l-3.14,0.11l-0.18,0.06l-2.15,1.71l-1.51,0.04l-0.22,0.1l-0.6,0.69l-1.46,-0.0l-0.93,-0.78l-0.32,-0.04l-2.29,1.05l-0.12,0.1l-0.64,0.9l-1.44,-0.17l-0.51,-0.26l-0.17,-0.03l-0.56,0.07l-0.68,-0.02l-3.1,-2.08l-0.17,-0.05l-1.62,0.0l-0.68,-0.65l0.0,-1.28l-0.21,-0.29l-1.19,-0.38l-1.42,-2.63l-0.13,-0.12l-1.05,-0.53l-0.46,-1.0l-1.27,-1.23l-0.17,-0.08l-1.08,-0.13l0.53,-0.9l1.17,-0.05l0.26,-0.17l0.37,-0.77l0.03,-0.14l-0.03,-2.23l0.7,-2.49l1.08,-0.65l0.14,-0.19l0.24,-1.0l1.03,-1.85l1.47,-1.22l0.09,-0.12l1.02,-2.51l0.36,-1.96l2.62,0.48l0.33,-0.18l0.63,-1.55Z", "name": "Ethiopia"}, "ZW": {"path": "M498.95,341.2l-1.16,-0.23l-0.16,0.01l-0.74,0.28l-1.11,-0.41l-1.02,-0.04l-1.52,-1.13l-0.12,-0.05l-1.79,-0.37l-0.65,-1.46l-0.01,-0.86l-0.22,-0.29l-0.99,-0.26l-2.74,-2.77l-0.77,-1.46l-0.52,-0.5l-0.72,-1.54l2.24,0.23l0.78,0.28l0.12,0.02l0.85,-0.06l0.21,-0.11l1.38,-1.66l2.11,-2.05l0.81,-0.18l0.22,-0.2l0.27,-0.8l1.29,-0.93l1.53,-0.28l0.11,0.66l0.3,0.25l2.02,-0.05l1.04,0.48l0.5,0.59l0.18,0.1l1.13,0.18l1.11,0.7l0.01,3.06l-0.49,1.82l-0.11,1.94l0.03,0.16l0.35,0.68l-0.24,1.3l-0.27,0.17l-0.12,0.15l-0.64,1.83l-2.49,2.8Z", "name": "Zimbabwe"}, "ES": {"path": "M398.67,172.8l0.09,-1.45l-0.06,-0.2l-0.82,-1.05l3.16,-1.96l3.01,0.54l3.33,-0.02l2.64,0.52l2.14,-0.15l3.9,0.1l0.91,1.08l0.14,0.09l4.61,1.38l0.26,-0.04l0.77,-0.55l2.66,1.29l0.17,0.03l2.59,-0.35l0.1,1.28l-2.2,1.85l-3.13,0.62l-0.23,0.23l-0.21,0.92l-1.54,1.68l-0.97,2.4l0.02,0.26l0.85,1.46l-1.27,1.14l-0.09,0.14l-0.5,1.73l-1.73,0.53l-0.15,0.1l-1.68,2.1l-3.03,0.04l-2.38,-0.05l-0.17,0.05l-1.57,1.01l-0.9,1.01l-0.96,-0.19l-0.82,-0.86l-0.69,-1.6l-0.22,-0.18l-2.14,-0.41l-0.13,-0.62l0.83,-0.97l0.39,-0.86l-0.06,-0.33l-0.73,-0.73l0.63,-1.74l-0.02,-0.25l-0.8,-1.41l0.69,-0.15l0.23,-0.27l0.09,-1.29l0.33,-0.36l0.08,-0.2l0.03,-2.16l1.03,-0.72l0.1,-0.37l-0.7,-1.5l-0.25,-0.17l-1.46,-0.11l-0.22,0.07l-0.34,0.3l-1.17,0.0l-0.55,-1.29l-0.39,-0.16l-1.02,0.44l-0.45,0.36Z", "name": "Spain"}, "ER": {"path": "M527.15,253.05l-0.77,-0.74l-1.01,-1.47l-1.14,-0.86l-0.62,-0.84l-0.11,-0.09l-2.18,-1.02l-0.12,-0.03l-1.61,-0.03l-0.52,-0.46l-0.31,-0.05l-1.31,0.54l-1.38,-1.06l-0.46,0.12l-0.69,1.68l-2.49,-0.46l-0.2,-0.76l1.06,-3.69l0.24,-1.65l0.66,-0.66l1.76,-0.4l0.16,-0.1l0.97,-1.13l1.24,2.55l0.68,2.34l0.09,0.14l1.4,1.27l3.39,2.4l1.37,1.43l2.14,2.34l0.94,0.6l-0.32,0.26l-0.85,-0.17Z", "name": "Eritrea"}, "ME": {"path": "M469.05,172.9l-0.57,-0.8l-0.1,-0.09l-0.82,-0.46l0.16,-0.33l0.35,-1.57l0.72,-0.62l0.27,-0.16l0.48,0.38l0.35,0.4l0.12,0.08l0.79,0.32l0.66,0.43l-0.43,0.62l-0.28,0.11l-0.07,-0.25l-0.53,-0.1l-1.09,1.49l-0.05,0.23l0.06,0.32Z", "name": "Montenegro"}, "MD": {"path": "M488.2,153.75l0.14,-0.11l1.49,-0.28l1.75,0.95l1.06,0.14l0.92,0.7l-0.15,0.9l0.15,0.31l0.8,0.46l0.33,1.2l0.09,0.14l0.72,0.66l-0.11,0.28l0.1,0.33l-0.06,0.02l-1.25,-0.08l-0.17,-0.29l-0.39,-0.12l-0.52,0.25l-0.16,0.36l0.13,0.42l-0.6,0.88l-0.43,1.03l-0.22,0.12l-0.32,-1.0l0.25,-1.34l-0.08,-1.38l-0.06,-0.17l-1.43,-1.87l-0.81,-1.36l-0.78,-0.95l-0.12,-0.09l-0.29,-0.12Z", "name": "Moldova"}, "MG": {"path": "M544.77,316.45l0.64,1.04l0.6,1.62l0.4,3.04l0.63,1.21l-0.22,1.07l-0.15,0.26l-0.59,-1.05l-0.52,-0.01l-0.47,0.76l-0.04,0.23l0.46,1.84l-0.19,0.92l-0.61,0.53l-0.1,0.21l-0.16,2.15l-0.97,2.98l-1.24,3.59l-1.55,4.97l-0.96,3.67l-1.08,2.93l-1.94,0.61l-2.05,1.06l-3.2,-1.53l-0.62,-1.26l-0.18,-2.39l-0.87,-2.07l-0.22,-1.8l0.4,-1.69l1.01,-0.4l0.19,-0.28l0.01,-0.79l1.15,-1.91l0.04,-0.11l0.23,-1.66l-0.03,-0.17l-0.57,-1.21l-0.46,-1.58l-0.19,-2.25l0.82,-1.36l0.33,-1.51l1.11,-0.1l1.4,-0.53l0.9,-0.45l1.03,-0.03l0.21,-0.09l1.41,-1.45l2.12,-1.65l0.75,-1.29l0.03,-0.24l-0.17,-0.56l0.53,0.15l0.32,-0.1l1.38,-1.77l0.06,-0.18l0.04,-1.44l0.54,-0.74l0.62,0.77Z", "name": "Madagascar"}, "MA": {"path": "M378.66,230.13l0.07,-0.75l0.93,-0.72l0.82,-1.37l0.04,-0.21l-0.14,-0.8l0.8,-1.74l1.33,-1.61l0.79,-0.4l0.14,-0.15l0.66,-1.55l0.08,-1.46l0.83,-1.52l1.6,-0.94l0.11,-0.11l1.56,-2.71l1.2,-0.99l2.24,-0.29l0.17,-0.08l1.95,-1.83l1.3,-0.77l2.09,-2.28l0.07,-0.26l-0.61,-3.34l0.92,-2.3l0.33,-1.44l1.52,-1.79l2.48,-1.27l1.86,-1.16l0.1,-0.11l1.67,-2.93l0.72,-1.59l1.54,0.01l1.43,1.14l0.21,0.06l2.33,-0.19l2.55,0.62l0.97,0.03l0.83,1.6l0.15,1.71l0.86,2.96l0.09,0.14l0.5,0.45l-0.31,0.73l-3.11,0.44l-0.16,0.07l-1.07,0.97l-1.36,0.23l-0.25,0.28l-0.1,1.85l-2.74,1.02l-0.14,0.11l-0.9,1.3l-1.93,0.69l-2.56,0.44l-4.04,2.01l-0.17,0.27l0.02,2.91l-0.08,0.0l-0.3,0.31l0.05,1.15l-1.25,0.07l-0.16,0.06l-0.73,0.55l-0.98,0.0l-0.85,-0.33l-0.15,-0.02l-2.11,0.29l-0.24,0.19l-0.76,1.95l-0.63,0.16l-0.21,0.19l-1.15,3.29l-3.42,2.81l-0.1,0.17l-0.81,3.57l-0.98,1.12l-0.3,0.85l-5.13,0.19Z", "name": "Morocco"}, "UZ": {"path": "M587.83,186.48l0.06,-1.46l-0.19,-0.29l-3.31,-1.24l-2.57,-1.4l-1.63,-1.38l-2.79,-1.98l-1.2,-2.98l-0.12,-0.14l-0.84,-0.54l-0.18,-0.05l-2.61,0.13l-0.76,-0.48l-0.25,-2.25l-0.17,-0.24l-3.37,-1.6l-0.32,0.04l-2.08,1.73l-2.11,1.02l-0.16,0.35l0.31,1.14l-2.14,0.03l-0.09,-10.68l6.1,-1.74l6.25,3.57l2.36,2.72l0.27,0.1l2.92,-0.44l4.17,-0.23l2.78,2.06l-0.18,2.87l0.29,0.32l0.98,0.02l0.46,2.22l0.28,0.24l3.0,0.09l0.61,1.25l0.28,0.17l0.93,-0.02l0.26,-0.16l1.06,-2.06l3.21,-2.03l1.3,-0.5l0.19,0.08l-1.75,1.62l0.05,0.48l1.85,1.12l0.27,0.02l1.65,-0.69l2.4,1.27l-2.69,1.79l-1.79,-0.27l-0.89,0.06l-0.22,-0.52l0.48,-1.26l-0.34,-0.4l-3.35,0.69l-0.22,0.18l-0.78,1.87l-1.07,1.47l-1.93,-0.13l-0.29,0.16l-0.65,1.29l0.16,0.42l1.69,0.64l0.48,1.91l-1.25,2.6l-1.64,-0.53l-1.18,-0.03Z", "name": "Uzbekistan"}, "MM": {"path": "M670.1,233.39l-1.46,1.11l-1.68,0.11l-0.26,0.19l-1.1,2.7l-0.95,0.42l-0.14,0.42l1.21,2.27l1.61,1.92l0.94,1.55l-0.82,1.99l-0.77,0.42l-0.13,0.39l0.64,1.35l1.62,1.97l0.26,1.32l-0.04,1.15l0.02,0.13l0.92,2.18l-1.3,2.23l-0.79,1.69l-0.1,-0.77l0.74,-1.87l-0.02,-0.26l-0.8,-1.42l0.2,-2.68l-0.06,-0.2l-0.98,-1.27l-0.8,-2.98l-0.45,-3.22l-1.11,-2.22l-0.45,-0.1l-1.64,1.28l-2.74,1.76l-1.26,-0.2l-1.27,-0.49l0.79,-2.93l0.0,-0.14l-0.52,-2.42l-1.93,-2.97l0.26,-0.8l-0.22,-0.39l-1.37,-0.31l-1.65,-1.98l-0.12,-1.5l0.41,0.19l0.42,-0.26l0.05,-1.7l1.08,-0.54l0.16,-0.34l-0.24,-1.0l0.5,-0.79l0.05,-0.15l0.08,-2.35l1.58,0.49l0.36,-0.15l1.12,-2.19l0.15,-1.34l1.35,-2.18l0.04,-0.17l-0.07,-1.35l2.97,-1.71l1.67,0.45l0.38,-0.33l-0.18,-1.46l0.7,-0.4l0.15,-0.32l-0.13,-0.72l0.94,-0.13l0.74,1.41l0.11,0.12l0.95,0.56l0.07,1.89l-0.09,2.08l-2.28,2.15l-0.09,0.19l-0.3,3.15l0.35,0.32l2.37,-0.39l0.53,2.17l0.2,0.21l1.3,0.42l-0.63,1.9l0.14,0.36l1.86,0.99l1.1,0.49l0.24,0.0l1.45,-0.6l0.04,0.51l-2.01,1.6l-0.56,0.96l-1.34,0.56Z", "name": "Myanmar"}, "ML": {"path": "M390.79,248.2l0.67,-0.37l0.14,-0.18l0.36,-1.31l0.51,-0.04l1.68,0.69l0.21,0.0l1.34,-0.48l0.89,0.16l0.3,-0.13l0.29,-0.44l9.89,-0.04l0.29,-0.21l0.56,-1.8l-0.11,-0.33l-0.33,-0.24l-2.37,-22.1l3.41,-0.04l8.37,5.73l8.38,5.68l0.56,1.15l0.14,0.14l1.56,0.75l0.99,0.36l0.03,1.45l0.33,0.29l2.45,-0.22l0.01,5.52l-1.3,1.64l-0.06,0.15l-0.18,1.37l-1.99,0.36l-3.4,0.22l-0.19,0.09l-0.85,0.83l-1.48,0.09l-1.49,0.01l-0.54,-0.43l-0.26,-0.05l-1.38,0.36l-2.39,1.08l-0.13,0.12l-0.44,0.73l-1.88,1.11l-0.11,0.12l-0.3,0.57l-0.86,0.42l-1.1,-0.31l-0.28,0.07l-0.69,0.62l-0.09,0.16l-0.35,1.66l-1.93,2.04l-0.08,0.23l0.05,0.76l-0.63,0.99l-0.04,0.19l0.14,1.23l-0.81,0.29l-0.32,0.17l-0.27,-0.75l-0.39,-0.18l-0.65,0.26l-0.36,-0.04l-0.29,0.14l-0.37,0.6l-1.69,-0.02l-0.63,-0.34l-0.32,0.02l-0.12,0.09l-0.47,-0.45l0.1,-0.6l-0.09,-0.27l-0.31,-0.3l-0.33,-0.05l-0.05,0.02l0.02,-0.21l0.46,-0.59l-0.02,-0.39l-0.99,-1.02l-0.34,-0.74l-0.56,-0.56l-0.17,-0.09l-0.5,-0.07l-0.19,0.04l-0.58,0.35l-0.79,0.33l-0.65,0.51l-0.85,-0.16l-0.63,-0.59l-0.14,-0.07l-0.41,-0.08l-0.2,0.03l-0.59,0.31l-0.07,0.0l-0.1,-0.63l0.11,-0.85l-0.21,-0.98l-0.11,-0.17l-0.86,-0.66l-0.45,-1.34l-0.1,-1.36Z", "name": "Mali"}, "MN": {"path": "M641.06,150.59l2.41,-0.53l4.76,-2.8l3.67,-1.49l2.06,0.96l0.12,0.03l2.5,0.05l1.59,1.45l0.19,0.08l2.47,0.12l3.59,0.81l0.27,-0.07l2.43,-2.28l0.06,-0.36l-0.93,-1.77l2.33,-3.1l2.66,1.3l2.26,0.39l2.75,0.8l0.44,2.3l0.19,0.22l3.56,1.38l0.18,0.01l2.35,-0.6l3.1,-0.42l2.4,0.41l2.37,1.52l1.49,1.63l0.23,0.1l2.29,-0.03l3.13,0.52l0.15,-0.01l2.28,-0.79l3.27,-0.53l0.11,-0.04l3.56,-2.23l1.31,0.31l1.26,1.05l0.22,0.07l2.45,-0.22l-0.98,1.96l-1.77,3.21l-0.01,0.28l0.64,1.31l0.35,0.16l1.35,-0.38l2.4,0.48l0.22,-0.04l1.78,-1.09l1.82,0.92l2.11,2.07l-0.17,0.68l-1.79,-0.31l-3.74,0.45l-1.85,0.96l-1.78,2.01l-3.74,1.18l-2.46,1.61l-2.45,-0.6l-1.42,-0.28l-0.31,0.13l-1.31,1.99l0.0,0.33l0.78,1.15l0.3,0.74l-1.58,0.93l-1.75,1.59l-2.83,1.03l-3.77,0.12l-4.05,1.05l-2.81,1.54l-0.95,-0.8l-0.19,-0.07l-2.96,0.0l-3.64,-1.8l-2.55,-0.48l-3.38,0.41l-5.13,-0.67l-2.66,0.06l-1.35,-1.65l-1.12,-2.78l-0.21,-0.18l-1.5,-0.33l-2.98,-1.89l-0.12,-0.04l-3.37,-0.43l-2.84,-0.51l-0.75,-1.13l0.93,-3.54l-0.04,-0.24l-1.73,-2.55l-0.15,-0.12l-3.52,-1.18l-1.99,-1.61l-0.54,-1.85Z", "name": "Mongolia"}, "MK": {"path": "M472.73,173.87l0.08,0.01l0.32,-0.25l0.08,-0.44l1.29,-0.41l1.37,-0.28l1.03,-0.04l1.06,0.82l0.14,1.59l-0.22,0.04l-0.17,0.11l-0.32,0.4l-1.2,-0.05l-0.18,0.05l-0.9,0.61l-1.45,0.23l-0.85,-0.59l-0.3,-1.09l0.22,-0.71Z", "name": "Macedonia"}, "MW": {"path": "M507.18,313.84l-0.67,1.85l-0.01,0.16l0.7,3.31l0.31,0.24l0.75,-0.03l0.78,0.71l0.99,1.75l0.2,3.03l-0.91,0.45l-0.14,0.15l-0.59,1.38l-1.24,-1.21l-0.17,-1.62l0.49,-1.12l0.02,-0.16l-0.15,-1.03l-0.13,-0.21l-0.99,-0.65l-0.26,-0.03l-0.53,0.18l-1.31,-1.12l-1.15,-0.59l0.66,-2.06l0.75,-0.84l0.07,-0.27l-0.47,-2.04l0.48,-1.94l0.4,-0.65l0.03,-0.24l-0.64,-2.15l-0.08,-0.13l-0.44,-0.42l1.34,0.26l1.25,1.73l0.67,3.3Z", "name": "Malawi"}, "MR": {"path": "M390.54,247.66l-1.48,-1.58l-1.51,-1.88l-0.12,-0.09l-1.64,-0.67l-1.17,-0.74l-0.17,-0.05l-1.4,0.03l-0.12,0.03l-1.14,0.52l-1.15,-0.21l-0.26,0.08l-0.44,0.43l-0.11,-0.72l0.68,-1.29l0.31,-2.43l-0.28,-2.63l-0.29,-1.27l0.24,-1.24l-0.03,-0.2l-0.65,-1.24l-1.19,-1.05l0.32,-0.51l9.64,0.02l0.3,-0.34l-0.46,-3.71l0.51,-1.12l2.17,-0.22l0.27,-0.3l-0.08,-6.5l7.91,0.13l0.31,-0.3l0.01,-3.5l8.17,5.63l-2.89,0.04l-0.29,0.33l2.42,22.56l0.12,0.21l0.26,0.19l-0.43,1.38l-9.83,0.04l-0.25,0.13l-0.27,0.41l-0.77,-0.14l-0.15,0.01l-1.3,0.47l-1.64,-0.67l-0.14,-0.02l-0.79,0.06l-0.27,0.22l-0.39,1.39l-0.53,0.29Z", "name": "Mauritania"}, "UG": {"path": "M500.74,287.17l-2.84,-0.02l-0.92,0.32l-1.37,0.71l-0.29,-0.12l0.02,-1.6l0.54,-0.89l0.04,-0.13l0.14,-1.96l0.49,-1.09l0.91,-1.24l0.97,-0.68l0.8,-0.89l-0.13,-0.49l-0.79,-0.27l0.13,-2.55l0.78,-0.52l1.45,0.51l0.18,0.01l1.97,-0.57l1.72,0.01l0.18,-0.06l1.29,-0.97l0.98,1.44l0.29,1.24l1.05,2.75l-0.84,1.68l-1.94,2.66l-0.06,0.18l0.02,2.36l-4.8,0.18Z", "name": "Uganda"}, "MY": {"path": "M717.6,273.52l-1.51,0.7l-2.13,-0.41l-2.88,-0.0l-0.29,0.21l-0.84,2.77l-0.9,0.82l-0.08,0.12l-1.23,3.34l-1.81,0.47l-2.29,-0.68l-0.14,-0.01l-1.2,0.22l-0.14,0.07l-1.36,1.18l-1.47,-0.17l-0.12,0.01l-1.46,0.46l-1.51,-1.25l-0.24,-0.97l1.26,0.59l0.2,0.02l1.93,-0.47l0.22,-0.22l0.47,-1.98l0.9,-0.4l2.97,-0.54l0.17,-0.09l1.8,-1.98l1.02,-1.32l0.9,1.03l0.48,-0.04l0.43,-0.7l1.02,0.07l0.32,-0.27l0.25,-2.72l1.84,-1.67l1.23,-1.89l0.73,-0.01l1.12,1.11l0.1,0.99l0.18,0.24l1.66,0.71l1.85,0.67l-0.09,0.51l-1.45,0.11l-0.26,0.4l0.35,0.97ZM673.78,269.53l0.17,1.14l0.35,0.25l1.65,-0.3l0.18,-0.11l0.68,-0.86l0.31,0.13l1.41,1.45l0.99,1.59l0.13,1.57l-0.26,1.09l0.0,0.15l0.24,0.84l0.18,1.46l0.11,0.2l0.82,0.64l0.92,2.08l-0.03,0.52l-1.4,0.13l-2.29,-1.79l-2.86,-1.92l-0.27,-1.16l-0.07,-0.13l-1.39,-1.61l-0.33,-1.99l-0.05,-0.12l-0.84,-1.27l0.26,-1.72l-0.03,-0.18l-0.45,-0.87l0.13,-0.13l1.71,0.92Z", "name": "Malaysia"}, "MX": {"path": "M133.41,213.83l0.61,0.09l0.27,-0.09l0.93,-1.01l0.08,-0.18l0.09,-1.22l-0.09,-0.23l-1.93,-1.94l-1.46,-0.77l-2.96,-5.62l-0.86,-2.1l2.44,-0.18l2.68,-0.25l-0.03,0.08l0.17,0.4l3.79,1.35l5.81,1.97l6.96,-0.02l0.3,-0.3l0.0,-0.84l3.91,0.0l0.87,0.93l1.27,0.87l1.44,1.17l0.79,1.37l0.62,1.49l0.12,0.14l1.35,0.85l2.08,0.82l0.35,-0.1l1.49,-2.04l1.81,-0.05l1.63,1.01l1.21,1.8l0.86,1.58l1.47,1.55l0.53,1.82l0.73,1.32l0.14,0.13l1.98,0.84l1.78,0.59l0.61,-0.03l-0.78,1.89l-0.45,1.96l-0.19,3.58l-0.24,1.27l0.01,0.14l0.43,1.43l0.78,1.31l0.49,1.98l0.06,0.12l1.63,1.9l0.61,1.51l0.98,1.28l0.16,0.11l2.58,0.67l0.98,1.02l0.31,0.08l2.17,-0.71l1.91,-0.26l1.87,-0.47l1.67,-0.49l1.59,-1.06l0.11,-0.14l0.6,-1.52l0.22,-2.21l0.35,-0.62l1.58,-0.64l2.59,-0.59l2.18,0.09l1.43,-0.2l0.39,0.36l-0.07,1.02l-1.28,1.48l-0.65,1.68l0.07,0.32l0.33,0.32l-0.79,2.49l-0.28,-0.3l-0.24,-0.09l-1.0,0.08l-0.24,0.15l-0.74,1.28l-0.19,-0.13l-0.28,-0.03l-0.3,0.12l-0.19,0.29l0.0,0.06l-4.34,-0.02l-0.3,0.3l-0.0,1.16l-0.83,0.0l-0.28,0.19l0.08,0.33l0.93,0.86l0.9,0.58l0.24,0.48l0.16,0.15l0.2,0.08l-0.03,0.38l-2.94,0.01l-0.26,0.15l-1.21,2.09l0.02,0.33l0.25,0.33l-0.21,0.44l-0.04,0.22l-2.42,-2.35l-1.36,-0.87l-2.04,-0.67l-0.13,-0.01l-1.4,0.19l-2.07,0.98l-1.14,0.23l-1.72,-0.66l-1.85,-0.48l-2.31,-1.16l-1.92,-0.38l-2.79,-1.18l-2.04,-1.2l-0.6,-0.66l-0.19,-0.1l-1.37,-0.15l-2.45,-0.78l-1.07,-1.18l-2.63,-1.44l-1.2,-1.56l-0.44,-0.93l0.5,-0.15l0.2,-0.39l-0.2,-0.58l0.46,-0.55l0.07,-0.19l0.01,-0.91l-0.06,-0.18l-0.81,-1.13l-0.25,-1.08l-0.86,-1.36l-2.21,-2.63l-2.53,-2.09l-1.2,-1.63l-0.11,-0.09l-2.08,-1.06l-0.34,-0.48l0.35,-1.53l-0.16,-0.34l-1.24,-0.61l-1.39,-1.23l-0.6,-1.81l-0.24,-0.2l-1.25,-0.2l-1.38,-1.35l-1.11,-1.25l-0.1,-0.76l-0.05,-0.13l-1.33,-2.04l-0.85,-2.02l0.04,-0.99l-0.14,-0.27l-1.81,-1.1l-0.2,-0.04l-0.74,0.11l-1.34,-0.72l-0.42,0.16l-0.4,1.12l-0.0,0.19l0.41,1.3l0.24,2.04l0.06,0.15l0.88,1.16l1.84,1.86l0.4,0.61l0.12,0.1l0.27,0.14l0.29,0.82l0.31,0.2l0.2,-0.02l0.43,1.51l0.09,0.14l0.72,0.65l0.51,0.91l1.58,1.4l0.8,2.42l0.77,1.23l0.66,1.19l0.13,1.34l0.28,0.27l1.08,0.08l0.92,1.1l0.83,1.08l-0.03,0.24l-0.88,0.81l-0.13,-0.0l-0.59,-1.42l-0.07,-0.11l-1.67,-1.53l-1.81,-1.28l-1.15,-0.61l0.07,-1.85l-0.38,-1.45l-0.12,-0.17l-2.91,-2.03l-0.39,0.04l-0.11,0.11l-0.42,-0.46l-0.11,-0.08l-1.49,-0.63l-1.09,-1.16Z", "name": "Mexico"}, "VU": {"path": "M839.92,325.66l0.78,0.73l-0.18,0.07l-0.6,-0.8ZM839.13,322.74l0.27,1.36l-0.13,-0.06l-0.21,-0.02l-0.29,0.08l-0.22,-0.43l-0.03,-1.32l0.61,0.4Z", "name": "Vanuatu"}, "FR": {"path": "M444.58,172.63l-0.68,1.92l-0.72,-0.38l-0.51,-1.79l0.43,-0.95l1.15,-0.83l0.33,2.04ZM429.71,147.03l1.77,1.57l0.26,0.07l1.16,-0.23l2.12,1.44l0.56,0.28l0.16,0.03l0.61,-0.06l1.09,0.78l0.13,0.05l3.18,0.53l-1.09,1.94l-0.3,2.16l-0.48,0.38l-1.0,-0.26l-0.37,0.32l0.07,0.66l-1.73,1.68l-0.09,0.21l-0.04,1.42l0.41,0.29l0.96,-0.4l0.67,1.07l-0.09,0.78l0.04,0.19l0.61,0.97l-0.71,0.78l-0.07,0.28l0.65,2.39l0.21,0.21l1.09,0.31l-0.2,0.95l-2.08,1.58l-4.81,-0.8l-0.13,0.01l-3.65,0.99l-0.22,0.24l-0.25,1.6l-2.59,0.35l-2.74,-1.33l-0.31,0.03l-0.79,0.57l-4.38,-1.31l-0.79,-0.94l1.16,-1.64l0.05,-0.15l0.48,-6.17l-0.06,-0.21l-2.58,-3.3l-1.89,-1.65l-0.11,-0.06l-3.64,-1.17l-0.2,-1.88l2.92,-0.63l4.14,0.82l0.35,-0.36l-0.65,-3.0l1.77,1.05l0.27,0.02l5.83,-2.54l0.17,-0.19l0.71,-2.54l1.75,-0.53l0.27,0.88l0.27,0.21l1.04,0.05l1.08,1.23ZM289.1,278.45l-0.85,0.84l-0.88,0.13l-0.25,-0.51l-0.21,-0.16l-0.56,-0.1l-0.25,0.07l-0.63,0.55l-0.62,-0.29l0.5,-0.88l0.21,-1.11l0.42,-1.05l-0.03,-0.28l-0.93,-1.42l-0.18,-1.54l1.13,-1.87l2.42,0.78l2.55,2.04l0.33,0.81l-1.4,2.16l-0.77,1.84Z", "name": "France"}, "FI": {"path": "M492.26,76.42l-0.38,3.12l0.12,0.28l3.6,2.69l-2.14,2.96l-0.01,0.33l2.83,4.61l-1.61,3.36l0.03,0.31l2.15,2.87l-0.96,2.44l0.1,0.35l3.51,2.55l-0.81,1.72l-2.28,2.19l-5.28,4.79l-4.51,0.31l-4.39,1.37l-3.87,0.75l-1.34,-1.89l-0.11,-0.09l-2.23,-1.14l0.53,-3.54l-0.01,-0.14l-1.17,-3.37l1.12,-2.13l2.23,-2.44l5.69,-4.33l1.65,-0.84l0.16,-0.31l-0.26,-1.73l-0.15,-0.22l-3.4,-1.91l-0.77,-1.47l-0.07,-6.45l-0.12,-0.24l-3.91,-2.94l-3.0,-1.92l0.97,-0.76l2.6,2.17l0.21,0.07l3.2,-0.21l2.63,1.03l0.3,-0.05l2.39,-1.94l0.09,-0.13l1.18,-3.12l3.63,-1.42l2.87,1.59l-0.98,2.87Z", "name": "Finland"}, "FJ": {"path": "M869.98,327.07l-1.31,0.44l-0.14,-0.41l0.96,-0.41l0.85,-0.17l1.43,-0.78l-0.16,0.65l-1.64,0.67ZM867.58,329.12l0.54,0.47l-0.31,1.0l-1.32,0.3l-1.13,-0.26l-0.17,-0.78l0.72,-0.66l0.98,0.27l0.25,-0.04l0.43,-0.29Z", "name": "Fiji"}, "FK": {"path": "M268.15,427.89l2.6,-1.73l1.98,0.77l0.31,-0.05l1.32,-1.17l1.58,1.18l-0.54,0.84l-3.1,0.92l-1.0,-1.04l-0.39,-0.04l-1.9,1.35l-0.86,-1.04Z", "name": "Falkland Islands"}, "NI": {"path": "M202.1,252.6l0.23,-0.0l0.12,-0.11l0.68,-0.09l0.22,-0.15l0.23,-0.43l0.2,-0.01l0.28,-0.31l-0.04,-0.97l0.29,-0.03l0.5,0.02l0.25,-0.11l0.37,-0.46l0.51,0.35l0.4,-0.06l0.23,-0.28l0.45,-0.29l0.87,-0.7l0.11,-0.21l0.02,-0.26l0.23,-0.12l0.25,-0.48l0.29,0.27l0.14,0.07l0.5,0.12l0.22,-0.03l0.48,-0.28l0.66,-0.02l0.87,-0.33l0.36,-0.32l0.21,0.01l-0.11,0.48l0.0,0.14l0.22,0.8l-0.54,0.85l-0.27,1.03l-0.09,1.18l0.14,0.72l0.05,0.95l-0.24,0.15l-0.13,0.19l-0.23,1.09l0.0,0.14l0.14,0.53l-0.42,0.53l-0.06,0.24l0.12,0.69l0.08,0.15l0.18,0.19l-0.26,0.23l-0.49,-0.11l-0.35,-0.44l-0.16,-0.1l-0.79,-0.21l-0.23,0.03l-0.45,0.26l-1.51,-0.62l-0.31,0.05l-0.17,0.15l-1.81,-1.62l-0.6,-0.9l-1.04,-0.79l-0.77,-0.71Z", "name": "Nicaragua"}, "NL": {"path": "M436.22,136.65l1.82,0.08l0.36,0.89l-0.6,2.96l-0.53,1.06l-1.32,0.0l-0.3,0.34l0.35,2.89l-0.83,-0.47l-1.56,-1.43l-0.29,-0.07l-2.26,0.67l-1.02,-0.15l0.68,-0.48l0.1,-0.12l2.14,-4.84l3.25,-1.35Z", "name": "Netherlands"}, "NO": {"path": "M491.45,67.31l7.06,3.0l-2.52,0.94l-0.11,0.49l2.43,2.49l-3.82,1.59l-1.48,0.3l0.89,-2.61l-0.14,-0.36l-3.21,-1.78l-0.25,-0.02l-3.89,1.52l-0.17,0.17l-1.2,3.17l-2.19,1.78l-2.53,-0.99l-0.13,-0.02l-3.15,0.21l-2.69,-2.25l-0.38,-0.01l-1.43,1.11l-1.47,0.17l-0.26,0.26l-0.33,2.57l-4.42,-0.65l-0.33,0.22l-0.6,2.19l-2.17,-0.01l-0.27,0.16l-4.15,7.68l-3.88,5.76l-0.0,0.33l0.81,1.23l-0.7,1.27l-2.3,-0.06l-0.28,0.18l-1.63,3.72l-0.02,0.13l0.15,5.17l0.07,0.18l1.51,1.84l-0.79,4.24l-2.04,2.5l-0.92,1.75l-1.39,-1.88l-0.44,-0.05l-4.89,4.21l-3.16,0.81l-3.24,-1.74l-0.86,-3.82l-0.78,-8.6l2.18,-2.36l6.56,-3.28l5.0,-4.16l4.63,-5.74l5.99,-8.09l4.17,-3.23l6.84,-5.49l5.39,-1.92l4.06,0.24l0.23,-0.09l3.72,-3.67l4.51,0.19l4.4,-0.89ZM484.58,19.95l4.42,1.82l-3.25,2.68l-7.14,0.65l-7.16,-0.91l-0.39,-1.37l-0.28,-0.22l-3.48,-0.1l-2.25,-2.15l7.09,-1.48l3.55,1.36l0.28,-0.03l2.42,-1.66l6.18,1.41ZM481.99,33.92l-4.73,1.85l-3.76,-1.06l1.27,-1.02l0.04,-0.43l-1.18,-1.35l4.46,-0.94l0.89,1.83l0.17,0.15l2.83,0.96ZM466.5,23.95l7.64,3.87l-5.63,1.94l-0.19,0.19l-1.35,3.88l-2.08,0.96l-0.16,0.19l-1.14,4.18l-2.71,0.18l-4.94,-2.95l1.95,-1.63l-0.08,-0.51l-3.7,-1.54l-4.79,-4.54l-1.78,-4.01l6.29,-1.88l1.25,1.81l0.25,0.13l3.57,-0.08l0.26,-0.17l0.87,-1.79l3.41,-0.18l3.08,1.94Z", "name": "Norway"}, "NA": {"path": "M461.88,357.98l-1.61,-1.77l-0.94,-1.9l-0.54,-2.58l-0.62,-1.95l-0.83,-4.05l-0.06,-3.13l-0.33,-1.5l-0.07,-0.14l-0.95,-1.06l-1.27,-2.12l-1.3,-3.1l-0.59,-1.71l-1.98,-2.46l-0.13,-1.67l0.99,-0.4l1.44,-0.42l1.48,0.07l1.42,1.11l0.31,0.03l0.32,-0.15l9.99,-0.11l1.66,1.18l0.16,0.06l6.06,0.37l4.69,-1.06l2.01,-0.57l1.5,0.14l0.63,0.37l-1.0,0.41l-0.7,0.01l-0.16,0.05l-1.38,0.88l-0.79,-0.88l-0.29,-0.09l-3.83,0.9l-1.84,0.08l-0.29,0.3l-0.07,8.99l-2.18,0.08l-0.29,0.3l-0.0,17.47l-2.04,1.27l-1.21,0.18l-1.51,-0.49l-0.99,-0.18l-0.36,-1.0l-0.1,-0.14l-0.99,-0.74l-0.4,0.04l-0.98,1.09Z", "name": "Namibia"}, "NC": {"path": "M835.87,338.68l2.06,1.63l1.01,0.94l-0.49,0.32l-1.21,-0.62l-1.76,-1.16l-1.58,-1.36l-1.61,-1.79l-0.16,-0.41l0.54,0.02l1.32,0.83l1.08,0.87l0.79,0.73Z", "name": "New Caledonia"}, "NE": {"path": "M426.67,254.17l0.03,-1.04l-0.24,-0.3l-2.66,-0.53l-0.06,-1.0l-0.07,-0.17l-1.37,-1.62l-0.3,-1.04l0.15,-0.94l1.37,-0.09l0.19,-0.09l0.85,-0.83l3.34,-0.22l2.22,-0.41l0.24,-0.26l0.2,-1.5l1.32,-1.65l0.07,-0.19l-0.01,-5.74l3.4,-1.13l7.24,-5.12l8.46,-4.95l3.76,1.08l1.35,1.39l0.36,0.05l1.39,-0.77l0.55,3.66l0.12,0.2l0.82,0.6l0.03,0.69l0.1,0.21l0.87,0.74l-0.47,0.99l-0.96,5.26l-0.13,3.25l-3.08,2.34l-0.1,0.15l-1.08,3.37l0.08,0.31l0.94,0.86l-0.01,1.51l0.29,0.3l1.25,0.05l-0.14,0.66l-0.51,0.11l-0.24,0.26l-0.06,0.57l-0.04,0.0l-1.59,-2.62l-0.21,-0.14l-0.59,-0.1l-0.23,0.05l-1.83,1.33l-1.79,-0.68l-1.42,-0.17l-0.17,0.03l-0.65,0.32l-1.39,-0.07l-0.19,0.06l-1.4,1.03l-1.12,0.05l-2.97,-1.29l-0.26,0.01l-1.12,0.59l-1.08,-0.04l-0.85,-0.88l-0.11,-0.07l-2.51,-0.95l-0.14,-0.02l-2.69,0.3l-0.16,0.07l-0.65,0.55l-0.1,0.16l-0.34,1.41l-0.69,0.98l-0.05,0.15l-0.13,1.72l-1.47,-1.13l-0.18,-0.06l-0.9,0.01l-0.2,0.08l-0.32,0.28Z", "name": "Niger"}, "NG": {"path": "M442.0,272.7l-2.4,0.83l-0.88,-0.12l-0.19,0.04l-0.89,0.52l-1.78,-0.05l-1.23,-1.44l-0.88,-1.87l-1.77,-1.66l-0.21,-0.08l-3.78,0.03l0.13,-3.75l-0.06,-1.58l0.44,-1.47l0.74,-0.75l1.21,-1.56l0.04,-0.29l-0.22,-0.56l0.44,-0.9l0.01,-0.24l-0.54,-1.44l0.26,-2.97l0.72,-1.06l0.33,-1.37l0.51,-0.43l2.53,-0.28l2.38,0.9l0.89,0.91l0.2,0.09l1.28,0.04l0.15,-0.03l1.06,-0.56l2.9,1.26l0.13,0.02l1.28,-0.06l0.16,-0.06l1.39,-1.02l1.36,0.07l0.15,-0.03l0.64,-0.32l1.22,0.13l1.9,0.73l0.28,-0.04l1.86,-1.35l0.33,0.06l1.62,2.67l0.29,0.14l0.32,-0.04l0.73,0.74l-0.19,0.37l-0.12,0.74l-2.03,1.89l-0.07,0.11l-0.66,1.62l-0.35,1.28l-0.48,0.51l-0.07,0.12l-0.48,1.67l-1.26,0.98l-0.1,0.15l-0.38,1.24l-0.58,1.07l-0.2,0.91l-1.43,0.7l-1.26,-0.93l-0.19,-0.06l-0.95,0.04l-0.2,0.09l-1.41,1.39l-0.61,0.02l-0.26,0.17l-1.19,2.42l-0.61,1.67Z", "name": "Nigeria"}, "NZ": {"path": "M857.9,379.62l1.85,3.1l0.33,0.14l0.22,-0.28l0.04,-1.41l0.57,0.4l0.35,2.06l0.17,0.22l2.02,0.94l1.78,0.26l0.22,-0.06l1.31,-1.01l0.84,0.22l-0.53,2.27l-0.67,1.5l-1.71,-0.05l-0.25,0.12l-0.67,0.89l-0.05,0.23l0.21,1.15l-0.31,0.46l-2.15,3.57l-1.6,0.99l-0.28,-0.51l-0.15,-0.13l-0.72,-0.3l1.27,-2.15l0.01,-0.29l-0.82,-1.63l-0.15,-0.14l-2.5,-1.09l0.05,-0.69l1.67,-0.94l0.15,-0.21l0.42,-2.24l-0.11,-1.95l-0.03,-0.12l-0.97,-1.85l0.05,-0.41l-0.09,-0.25l-1.18,-1.17l-1.94,-2.49l-0.86,-1.64l0.38,-0.09l1.24,1.43l0.12,0.08l1.81,0.68l0.67,2.39ZM853.93,393.55l0.57,1.24l0.44,0.12l1.51,-1.03l0.52,0.91l0.0,1.09l-0.88,1.31l-1.62,2.2l-1.26,1.2l-0.05,0.38l0.64,1.02l-1.4,0.03l-0.14,0.04l-2.14,1.16l-0.14,0.17l-0.67,2.0l-1.38,3.06l-3.07,2.19l-2.12,-0.06l-1.55,-0.99l-0.14,-0.05l-2.53,-0.2l-0.31,-0.84l1.25,-2.15l3.07,-2.97l1.62,-0.59l1.81,-1.17l2.18,-1.63l1.55,-1.65l1.08,-2.18l0.9,-0.72l0.11,-0.17l0.35,-1.56l1.37,-1.07l0.4,0.91Z", "name": "New Zealand"}, "NP": {"path": "M641.26,213.53l-0.14,0.95l0.32,1.64l-0.21,0.78l-1.83,0.04l-2.98,-0.62l-1.86,-0.25l-1.37,-1.3l-0.18,-0.08l-3.38,-0.34l-3.21,-1.49l-2.38,-1.34l-2.16,-0.92l0.84,-2.2l1.51,-1.18l0.89,-0.57l1.83,0.77l2.5,1.76l1.39,0.41l0.78,1.21l0.17,0.13l1.91,0.53l2.0,1.17l2.92,0.66l2.63,0.24Z", "name": "Nepal"}, "CI": {"path": "M413.53,272.08l-0.83,0.02l-1.79,-0.49l-1.64,0.03l-3.04,0.46l-1.73,0.72l-2.4,0.89l-0.12,-0.02l0.16,-1.7l0.19,-0.25l0.06,-0.2l-0.08,-0.99l-0.09,-0.19l-1.06,-1.05l-0.15,-0.08l-0.71,-0.15l-0.51,-0.48l0.45,-0.92l0.02,-0.19l-0.24,-1.16l0.07,-0.43l0.14,-0.0l0.3,-0.26l0.15,-1.1l-0.02,-0.15l-0.13,-0.34l0.09,-0.13l0.83,-0.27l0.19,-0.37l-0.62,-2.02l-0.55,-1.0l0.14,-0.59l0.35,-0.14l0.24,-0.16l0.53,0.29l0.14,0.04l1.93,0.02l0.26,-0.14l0.36,-0.58l0.39,0.01l0.43,-0.17l0.28,0.79l0.43,0.16l0.56,-0.31l0.89,-0.32l0.92,0.45l0.39,0.75l0.14,0.13l1.13,0.53l0.3,-0.03l0.81,-0.59l1.02,-0.08l1.49,0.57l0.62,3.33l-1.03,2.09l-0.65,2.84l0.02,0.2l1.05,2.08l-0.07,0.64Z", "name": "Ivory Coast"}, "CH": {"path": "M444.71,156.27l0.05,0.3l-0.34,0.69l0.13,0.4l1.13,0.58l1.07,0.1l-0.12,0.81l-0.87,0.42l-1.75,-0.37l-0.34,0.18l-0.47,1.1l-0.86,0.07l-0.33,-0.38l-0.41,-0.04l-1.34,1.01l-1.02,0.13l-0.93,-0.58l-0.82,-1.32l-0.37,-0.12l-0.77,0.32l0.02,-0.84l1.74,-1.69l0.09,-0.25l-0.04,-0.38l0.73,0.19l0.26,-0.06l0.6,-0.48l2.02,0.02l0.24,-0.12l0.38,-0.51l2.31,0.84Z", "name": "Switzerland"}, "CO": {"path": "M232.24,284.95l-0.94,-0.52l-1.22,-0.82l-0.31,-0.01l-0.62,0.35l-1.88,-0.31l-0.54,-0.95l-0.29,-0.15l-0.37,0.03l-2.34,-1.33l-0.15,-0.35l0.57,-0.11l0.24,-0.32l-0.1,-1.15l0.46,-0.71l1.11,-0.15l0.21,-0.13l1.05,-1.57l0.95,-1.31l-0.08,-0.43l-0.73,-0.47l0.4,-1.24l0.01,-0.16l-0.53,-2.15l0.44,-0.54l0.06,-0.24l-0.4,-2.13l-0.06,-0.13l-0.93,-1.22l0.21,-0.8l0.52,0.12l0.32,-0.13l0.47,-0.75l0.03,-0.27l-0.52,-1.32l0.09,-0.11l1.14,0.07l0.22,-0.08l1.82,-1.71l0.96,-0.25l0.22,-0.28l0.02,-0.81l0.43,-2.01l1.28,-1.04l1.48,-0.05l0.27,-0.19l0.12,-0.31l1.73,0.19l0.2,-0.05l1.96,-1.28l0.97,-0.56l1.16,-1.16l0.64,0.11l0.43,0.44l-0.31,0.55l-1.49,0.39l-0.19,0.16l-0.6,1.2l-0.97,0.74l-0.73,0.94l-0.06,0.13l-0.3,1.76l-0.68,1.44l0.23,0.43l1.1,0.14l0.27,0.97l0.08,0.13l0.49,0.49l0.17,0.85l-0.27,0.86l-0.01,0.14l0.09,0.53l0.2,0.23l0.52,0.18l0.54,0.79l0.27,0.13l3.18,-0.24l1.31,0.29l1.7,2.08l0.31,0.1l0.96,-0.26l1.75,0.13l1.41,-0.27l0.56,0.27l-0.36,1.07l-0.54,0.81l-0.05,0.13l-0.2,1.8l0.51,1.79l0.07,0.12l0.65,0.68l0.05,0.32l-1.16,1.14l0.05,0.47l0.86,0.52l0.6,0.79l0.31,1.01l-0.7,-0.81l-0.44,-0.01l-0.74,0.77l-4.75,-0.05l-0.3,0.31l0.03,1.57l0.25,0.29l1.2,0.21l-0.02,0.24l-0.1,-0.05l-0.22,-0.02l-1.41,0.41l-0.22,0.29l-0.01,1.82l0.11,0.23l1.04,0.85l0.35,1.3l-0.06,1.02l-1.02,6.26l-0.84,-0.89l-0.19,-0.09l-0.25,-0.02l1.35,-2.13l-0.1,-0.42l-1.92,-1.17l-0.2,-0.04l-1.41,0.2l-0.82,-0.39l-0.26,0.0l-1.29,0.62l-1.63,-0.27l-1.4,-2.5l-0.12,-0.12l-1.1,-0.61l-0.83,-1.2l-1.67,-1.19l-0.27,-0.04l-0.54,0.19Z", "name": "Colombia"}, "CN": {"path": "M740.32,148.94l0.22,0.21l4.3,1.03l2.84,2.2l0.99,2.92l0.28,0.2l3.8,0.0l0.15,-0.04l2.13,-1.24l3.5,-0.8l-1.05,2.29l-0.95,1.13l-0.06,0.12l-0.85,3.41l-1.56,2.81l-2.83,-0.51l-0.19,0.03l-2.15,1.09l-0.15,0.34l0.65,2.59l-0.33,3.3l-1.03,0.07l-0.28,0.3l0.01,0.75l-1.09,-1.2l-0.48,0.05l-0.94,1.6l-3.76,1.26l-0.2,0.36l0.29,1.19l-1.67,-0.08l-1.11,-0.88l-0.42,0.05l-1.69,2.08l-2.71,1.57l-2.04,1.88l-3.42,0.84l-0.11,0.05l-1.8,1.34l-1.54,0.46l0.52,-0.53l0.06,-0.33l-0.44,-0.96l1.84,-1.84l0.02,-0.41l-1.32,-1.56l-0.36,-0.08l-2.23,1.08l-2.83,2.06l-1.52,1.85l-2.32,0.13l-0.2,0.09l-1.28,1.37l-0.03,0.37l1.32,1.97l0.18,0.13l1.83,0.43l0.07,1.08l0.18,0.26l1.98,0.84l0.3,-0.03l2.66,-1.96l2.06,1.04l0.12,0.03l1.4,0.07l0.27,1.0l-3.24,0.73l-0.17,0.11l-1.13,1.5l-2.38,1.4l-0.1,0.1l-1.29,1.99l0.1,0.42l2.6,1.5l0.97,2.72l1.52,2.56l1.66,2.08l-0.03,1.76l-1.4,0.67l-0.15,0.38l0.6,1.47l0.13,0.15l1.29,0.75l-0.35,2.0l-0.58,1.96l-1.22,0.21l-0.2,0.14l-1.83,2.93l-2.02,3.51l-2.29,3.13l-3.4,2.42l-3.42,2.18l-2.75,0.3l-0.15,0.06l-1.32,1.01l-0.68,-0.67l-0.41,-0.01l-1.37,1.27l-3.42,1.28l-2.62,0.4l-0.24,0.21l-0.8,2.57l-0.95,0.11l-0.53,-1.54l0.52,-0.89l-0.19,-0.44l-3.36,-0.84l-0.17,0.01l-1.09,0.4l-2.36,-0.64l-1.0,-0.9l0.35,-1.34l-0.23,-0.37l-2.22,-0.47l-1.15,-0.94l-0.36,-0.02l-2.08,1.37l-2.35,0.29l-1.98,-0.01l-0.13,0.03l-1.32,0.63l-1.28,0.38l-0.21,0.33l0.33,2.65l-0.78,-0.04l-0.14,-0.39l-0.07,-1.04l-0.41,-0.26l-1.72,0.71l-0.96,-0.43l-1.63,-0.86l0.65,-1.95l-0.19,-0.38l-1.43,-0.46l-0.56,-2.27l-0.34,-0.22l-2.26,0.38l0.25,-2.65l2.29,-2.15l0.09,-0.2l0.1,-2.21l-0.07,-2.09l-0.15,-0.25l-1.02,-0.6l-0.8,-1.52l-0.31,-0.16l-1.42,0.2l-2.16,-0.32l0.55,-0.74l0.01,-0.35l-1.17,-1.7l-0.41,-0.08l-1.67,1.07l-1.97,-0.63l-0.25,0.03l-2.89,1.73l-2.26,1.99l-1.82,0.3l-1.0,-0.66l-0.15,-0.05l-1.28,-0.06l-1.75,-0.61l-0.24,0.02l-1.35,0.69l-0.1,0.08l-1.2,1.45l-0.14,-1.41l-0.4,-0.25l-1.46,0.55l-2.83,-0.26l-2.77,-0.61l-1.99,-1.17l-1.91,-0.54l-0.78,-1.21l-0.17,-0.13l-1.36,-0.38l-2.54,-1.79l-2.01,-0.84l-0.28,0.02l-0.89,0.56l-3.31,-1.83l-2.35,-1.67l-0.57,-2.49l1.34,0.28l0.36,-0.28l0.08,-1.42l-0.05,-0.19l-0.93,-1.34l0.24,-2.18l-0.07,-0.22l-2.69,-3.32l-0.15,-0.1l-3.97,-1.11l-0.69,-2.05l-0.11,-0.15l-1.79,-1.3l-0.39,-0.73l-0.36,-1.57l0.08,-1.09l-0.18,-0.3l-1.52,-0.66l-0.22,-0.01l-0.51,0.18l-0.52,-2.21l0.59,-0.55l0.06,-0.35l-0.22,-0.44l2.12,-1.24l1.63,-0.55l2.58,0.39l0.31,-0.16l0.87,-1.75l3.05,-0.34l0.21,-0.12l0.84,-1.12l3.87,-1.59l0.15,-0.14l0.35,-0.68l0.03,-0.17l-0.17,-1.51l1.52,-0.7l0.15,-0.39l-2.12,-5.0l4.62,-1.15l1.35,-0.72l0.14,-0.17l1.72,-5.37l4.7,0.99l0.28,-0.08l1.39,-1.43l0.08,-0.2l0.11,-2.95l1.83,-0.26l0.18,-0.1l1.85,-2.08l0.61,-0.17l0.57,1.97l0.1,0.15l2.2,1.75l3.48,1.17l1.59,2.36l-0.93,3.53l0.04,0.24l0.9,1.35l0.2,0.13l2.98,0.53l3.32,0.43l2.97,1.89l1.49,0.35l1.08,2.67l1.52,1.88l0.24,0.11l2.74,-0.07l5.15,0.67l3.36,-0.41l2.39,0.43l3.67,1.81l0.13,0.03l2.92,-0.0l1.02,0.86l0.34,0.03l2.88,-1.59l3.98,-1.03l3.81,-0.13l3.02,-1.12l1.77,-1.61l1.73,-1.01l0.13,-0.37l-0.41,-1.01l-0.72,-1.07l1.09,-1.66l1.21,0.24l2.57,0.63l0.24,-0.04l2.46,-1.62l3.78,-1.19l0.13,-0.09l1.8,-2.03l1.66,-0.84l3.54,-0.41l1.93,0.35l0.34,-0.22l0.27,-1.12l-0.08,-0.29l-2.27,-2.22l-2.08,-1.07l-0.29,0.01l-1.82,1.12l-2.36,-0.47l-0.14,0.01l-1.18,0.34l-0.46,-0.94l1.69,-3.08l1.1,-2.21l2.75,1.12l0.26,-0.02l3.53,-2.06l0.15,-0.26l-0.02,-1.35l2.18,-3.39l1.35,-1.04l0.12,-0.24l-0.03,-1.85l-0.15,-0.25l-1.0,-0.58l1.68,-1.37l3.01,-0.59l3.25,-0.09l3.67,0.99l2.08,1.18l1.51,3.3l0.95,1.45l0.85,1.99l0.92,3.19ZM697.0,237.37l-1.95,1.12l-1.74,-0.68l-0.06,-1.9l1.08,-1.03l2.62,-0.7l1.23,0.05l0.37,0.65l-1.01,1.08l-0.54,1.4Z", "name": "China"}, "CM": {"path": "M453.76,278.92l-0.26,-0.11l-0.18,-0.02l-1.42,0.31l-1.56,-0.33l-1.17,0.16l-3.7,-0.05l0.3,-1.63l-0.04,-0.21l-0.98,-1.66l-0.15,-0.13l-1.03,-0.38l-0.46,-1.01l-0.13,-0.14l-0.48,-0.27l0.02,-0.46l0.62,-1.72l1.1,-2.25l0.54,-0.02l0.2,-0.09l1.41,-1.39l0.73,-0.03l1.32,0.97l0.31,0.03l1.72,-0.85l0.16,-0.2l0.22,-1.0l0.57,-1.03l0.36,-1.18l1.26,-0.98l0.1,-0.15l0.49,-1.7l0.48,-0.51l0.07,-0.13l0.35,-1.3l0.63,-1.54l2.06,-1.92l0.09,-0.17l0.12,-0.79l0.24,-0.41l-0.04,-0.36l-0.89,-0.91l0.04,-0.45l0.28,-0.06l0.85,1.39l0.16,1.59l-0.09,1.66l0.04,0.17l1.09,1.84l-0.86,-0.02l-0.72,0.17l-1.07,-0.24l-0.34,0.17l-0.54,1.19l0.06,0.34l1.48,1.47l1.06,0.44l0.32,0.94l0.73,1.6l-0.32,0.57l-1.23,2.49l-0.54,0.41l-0.12,0.21l-0.19,1.95l0.24,1.08l-0.18,0.67l0.07,0.28l1.13,1.25l0.24,0.93l0.92,1.29l1.1,0.8l0.1,1.01l0.26,0.73l-0.12,0.93l-1.65,-0.49l-2.02,-0.66l-3.19,-0.11Z", "name": "Cameroon"}, "CL": {"path": "M246.8,429.1l-1.14,0.78l-2.25,1.21l-0.16,0.23l-0.37,2.94l-0.75,0.06l-2.72,-1.07l-2.83,-2.34l-3.06,-1.9l-0.71,-1.92l0.67,-1.84l-0.02,-0.25l-1.22,-2.13l-0.31,-5.41l1.02,-2.95l2.59,-2.4l-0.13,-0.51l-3.32,-0.8l2.06,-2.4l0.07,-0.15l0.79,-4.77l2.44,0.95l0.4,-0.22l1.31,-6.31l-0.16,-0.33l-1.68,-0.8l-0.42,0.21l-0.72,3.47l-1.01,-0.27l0.74,-4.06l0.85,-5.46l1.12,-1.96l0.03,-0.22l-0.71,-2.82l-0.19,-2.94l0.76,-0.07l0.26,-0.2l1.53,-4.62l1.73,-4.52l1.07,-4.2l-0.56,-4.2l0.73,-2.2l0.01,-0.12l-0.29,-3.3l1.46,-3.34l0.45,-5.19l0.8,-5.52l0.78,-5.89l-0.18,-4.33l-0.49,-3.47l1.1,-0.56l0.13,-0.13l0.44,-0.88l0.9,1.29l0.32,1.8l0.1,0.18l1.16,0.97l-0.73,2.33l0.01,0.21l1.33,2.91l0.97,3.6l0.35,0.22l1.57,-0.31l0.16,0.34l-0.79,2.51l-2.61,1.25l-0.17,0.28l0.08,4.36l-0.48,0.79l0.01,0.33l0.6,0.84l-1.62,1.55l-1.67,2.6l-0.89,2.47l-0.02,0.13l0.23,2.56l-1.5,2.76l-0.03,0.21l1.15,4.8l0.11,0.17l0.54,0.42l-0.01,2.37l-1.4,2.7l-0.03,0.15l0.06,2.25l-1.8,1.78l-0.09,0.21l0.02,2.73l0.71,2.63l-1.33,0.94l-0.12,0.17l-0.67,2.64l-0.59,3.03l0.4,3.55l-0.84,0.51l-0.14,0.31l0.58,3.5l0.08,0.16l0.96,0.99l-0.7,1.08l0.11,0.43l1.04,0.55l0.19,0.8l-0.89,0.48l-0.16,0.31l0.26,1.77l-0.89,4.06l-1.31,2.67l-0.03,0.19l0.28,1.53l-0.73,1.88l-1.85,1.37l-0.12,0.26l0.22,3.46l0.06,0.16l0.88,1.19l0.28,0.12l1.32,-0.17l-0.04,2.13l0.04,0.15l1.04,1.95l0.24,0.16l5.94,0.44ZM248.79,430.71l0.0,7.41l0.3,0.3l2.67,0.0l1.01,0.06l-0.54,0.91l-1.99,1.01l-1.13,-0.1l-1.42,-0.27l-1.87,-1.06l-2.57,-0.49l-3.09,-1.9l-2.52,-1.83l-2.65,-2.93l0.93,0.32l3.54,2.29l3.32,1.23l0.34,-0.09l1.29,-1.57l0.83,-2.32l2.11,-1.28l1.43,0.32Z", "name": "Chile"}, "CA": {"path": "M280.14,145.66l-1.66,2.88l0.06,0.37l0.37,0.03l1.5,-1.01l1.17,0.49l-0.64,0.83l0.13,0.46l2.22,0.89l0.28,-0.03l1.02,-0.7l2.09,0.83l-0.69,2.1l0.37,0.38l1.43,-0.45l0.27,1.43l0.74,1.88l-0.95,2.5l-0.88,0.09l-1.34,-0.48l0.49,-2.34l-0.14,-0.32l-0.7,-0.4l-0.36,0.04l-2.81,2.66l-0.63,-0.05l1.2,-1.01l-0.1,-0.52l-2.4,-0.77l-2.79,0.18l-4.65,-0.09l-0.22,-0.54l1.37,-0.99l0.01,-0.48l-0.82,-0.65l1.91,-1.79l2.57,-5.17l1.49,-1.81l2.04,-1.07l0.63,0.08l-0.27,0.51l-1.33,2.07ZM193.92,74.85l-0.01,4.24l0.19,0.28l0.33,-0.07l3.14,-3.22l2.65,2.5l-0.71,3.04l0.06,0.26l2.42,2.88l0.46,0.0l2.66,-3.14l1.83,-3.74l0.03,-0.12l0.13,-4.53l3.23,0.31l3.63,0.64l3.18,2.08l0.13,1.91l-1.79,2.22l-0.0,0.37l1.69,2.2l-0.28,1.8l-4.74,2.84l-3.33,0.62l-2.5,-1.21l-0.41,0.17l-0.73,2.05l-2.39,3.44l-0.74,1.78l-2.78,2.61l-3.48,0.26l-0.17,0.07l-1.98,1.68l-0.1,0.21l-0.15,2.33l-2.68,0.45l-0.17,0.09l-3.1,3.2l-2.75,4.38l-0.99,3.06l-0.14,4.31l0.25,0.31l3.5,0.58l1.07,3.24l1.18,2.76l0.34,0.18l3.43,-0.69l4.55,1.52l2.45,1.32l1.76,1.65l0.12,0.07l3.11,0.96l2.63,1.46l0.13,0.04l4.12,0.2l2.41,0.3l-0.36,2.81l0.8,3.51l1.81,3.78l0.08,0.1l3.73,3.17l0.34,0.03l1.93,-1.08l0.13,-0.15l1.35,-3.44l0.01,-0.18l-1.31,-5.38l-0.08,-0.14l-1.46,-1.5l3.68,-1.51l2.84,-2.46l1.45,-2.55l0.04,-0.17l-0.2,-2.39l-0.04,-0.12l-1.7,-3.07l-2.9,-2.64l2.79,-3.66l0.05,-0.27l-1.08,-3.38l-0.8,-5.75l1.45,-0.75l4.18,1.03l2.6,0.38l0.18,-0.03l1.93,-0.95l2.18,1.23l3.01,2.18l0.73,1.42l0.25,0.16l4.18,0.27l-0.06,2.95l0.83,4.7l0.22,0.24l2.19,0.55l1.75,2.08l0.38,0.07l3.63,-2.03l0.11,-0.11l2.38,-4.06l1.36,-1.43l1.76,3.01l3.26,4.68l2.68,4.19l-0.94,2.09l0.12,0.38l3.31,1.98l2.23,1.98l0.13,0.07l3.94,0.89l1.48,1.02l0.96,2.82l0.22,0.2l1.85,0.43l0.88,1.13l0.17,3.53l-1.68,1.16l-1.76,1.14l-4.08,1.17l-0.11,0.06l-3.08,2.65l-4.11,0.52l-5.35,-0.69l-3.76,-0.02l-2.62,0.23l-0.2,0.1l-2.05,2.29l-3.13,1.41l-0.11,0.08l-3.6,4.24l-2.87,2.92l-0.05,0.36l0.33,0.14l2.13,-0.52l0.15,-0.08l3.98,-4.15l5.16,-2.63l3.58,-0.31l1.82,1.3l-2.09,1.91l-0.09,0.29l0.8,3.46l0.82,2.37l0.15,0.17l3.25,1.56l0.16,0.03l4.14,-0.45l0.21,-0.12l2.03,-2.86l0.11,1.46l0.13,0.22l1.26,0.88l-2.7,1.78l-5.51,1.83l-2.52,1.26l-2.75,2.16l-1.52,-0.18l-0.08,-2.16l4.19,-2.47l0.14,-0.34l-0.3,-0.22l-4.01,0.1l-2.66,0.36l-1.45,-1.56l0.0,-4.16l-0.11,-0.23l-1.11,-0.91l-0.28,-0.05l-1.5,0.48l-0.7,-0.7l-0.45,0.02l-1.91,2.39l-0.8,2.5l-0.82,1.31l-0.95,0.43l-0.77,0.15l-0.23,0.2l-0.18,0.56l-8.2,0.02l-0.13,0.03l-1.19,0.61l-2.95,2.45l-0.78,1.13l-4.6,0.01l-0.12,0.02l-1.13,0.48l-0.13,0.44l0.37,0.55l0.2,0.82l-0.01,0.09l-3.1,1.42l-2.63,0.5l-2.84,1.57l-0.47,0.0l-0.72,-0.4l-0.18,-0.27l0.03,-0.15l0.52,-1.0l1.2,-1.71l0.73,-1.8l0.02,-0.17l-1.03,-5.47l-0.15,-0.21l-2.35,-1.32l0.16,-0.29l-0.05,-0.35l-0.37,-0.38l-0.22,-0.09l-0.56,0.0l-0.35,-0.34l-0.11,-0.65l-0.46,-0.2l-0.39,0.26l-0.2,-0.03l-0.11,-0.33l-0.48,-0.25l-0.21,-0.71l-0.15,-0.18l-3.97,-2.07l-4.8,-2.39l-0.25,-0.01l-2.19,0.89l-0.72,0.03l-3.04,-0.82l-0.14,-0.0l-1.94,0.4l-2.4,-0.98l-2.56,-0.51l-1.7,-0.19l-0.62,-0.44l-0.42,-1.67l-0.3,-0.23l-0.85,0.02l-0.29,0.3l-0.01,0.95l-69.26,-0.01l-4.77,-3.14l-1.78,-1.41l-4.51,-1.38l-1.3,-2.73l0.34,-1.96l-0.17,-0.33l-3.06,-1.37l-0.41,-2.58l-0.11,-0.18l-2.92,-2.4l-0.05,-1.53l1.32,-1.59l0.07,-0.2l-0.07,-2.21l-0.16,-0.26l-4.19,-2.22l-2.52,-4.02l-1.56,-2.6l-0.08,-0.09l-2.28,-1.64l-1.65,-1.48l-1.31,-1.89l-0.38,-0.1l-2.51,1.21l-2.28,1.92l-2.03,-2.22l-1.85,-1.71l-2.44,-1.04l-2.28,-0.12l0.03,-37.72l4.27,0.98l4.0,2.13l2.61,0.4l0.24,-0.07l2.17,-1.81l2.92,-1.33l3.63,0.53l0.18,-0.03l3.72,-1.94l3.89,-1.06l1.6,1.72l0.37,0.06l1.87,-1.04l0.14,-0.19l0.48,-1.83l1.37,0.38l4.18,3.96l0.41,0.0l2.89,-2.62l0.28,2.79l0.37,0.26l3.08,-0.73l0.17,-0.12l0.85,-1.16l2.81,0.24l3.83,1.86l5.86,1.61l3.46,0.75l2.44,-0.26l2.89,1.89l-3.12,1.89l-0.14,0.31l0.24,0.24l4.53,0.92l6.84,-0.5l2.04,-0.71l2.54,2.44l0.39,0.02l2.72,-2.16l-0.01,-0.48l-2.26,-1.61l1.27,-1.16l2.94,-0.19l1.94,-0.42l1.89,0.97l2.49,2.32l0.24,0.08l2.71,-0.33l4.35,1.9l0.17,0.02l3.86,-0.67l3.62,0.1l0.31,-0.33l-0.26,-2.44l1.9,-0.65l3.58,1.36l-0.01,3.84l0.23,0.29l0.34,-0.17l1.51,-3.23l1.81,0.1l0.31,-0.22l1.13,-4.37l-0.08,-0.29l-2.68,-2.73l-2.83,-1.76l0.19,-4.73l2.77,-3.15l3.06,0.69l2.44,1.97l3.24,4.88l-2.05,2.02l0.15,0.51l4.41,0.85ZM265.85,150.7l-0.84,0.04l-3.15,-0.99l-1.77,-1.17l0.19,-0.06l3.17,0.79l2.39,1.27l0.01,0.12ZM249.41,3.71l6.68,0.49l5.34,0.79l4.34,1.6l-0.08,1.24l-5.91,2.56l-6.03,1.21l-2.36,1.38l-0.14,0.34l0.29,0.22l4.37,-0.02l-4.96,3.01l-4.06,1.64l-0.11,0.08l-4.21,4.62l-5.07,0.92l-0.12,0.05l-1.53,1.1l-7.5,0.59l-0.28,0.28l0.24,0.31l2.67,0.54l-1.04,0.6l-0.09,0.44l1.89,2.49l-2.11,1.66l-3.83,1.52l-0.15,0.13l-1.14,2.01l-3.41,1.55l-0.16,0.36l0.35,1.19l0.3,0.22l3.98,-0.19l0.03,0.78l-6.42,2.99l-6.44,-1.41l-7.41,0.79l-3.72,-0.62l-4.48,-0.26l-0.25,-2.0l4.37,-1.13l0.21,-0.38l-1.14,-3.55l1.13,-0.28l6.61,2.29l0.35,-0.12l-0.04,-0.37l-3.41,-3.45l-0.14,-0.08l-3.57,-0.92l1.62,-1.7l4.36,-1.3l0.2,-0.18l0.71,-1.94l-0.12,-0.36l-3.45,-2.15l-0.88,-2.43l6.36,0.23l1.94,0.61l0.23,-0.02l3.91,-2.1l0.15,-0.32l-0.26,-0.24l-5.69,-0.67l-8.69,0.37l-4.3,-1.92l-2.12,-2.39l-2.82,-1.68l-0.44,-1.65l3.41,-1.06l2.93,-0.2l4.91,-0.99l3.69,-2.28l2.93,0.31l2.64,1.68l0.42,-0.1l1.84,-3.23l3.17,-0.96l4.45,-0.69l7.56,-0.26l1.26,0.64l0.18,0.03l7.2,-1.06l10.81,0.8ZM203.94,57.59l0.01,0.32l1.97,2.97l0.51,-0.01l2.26,-3.75l6.05,-1.89l4.08,4.72l-0.36,2.95l0.38,0.33l4.95,-1.36l0.11,-0.05l2.23,-1.77l5.37,2.31l3.32,2.14l0.3,1.89l0.36,0.25l4.48,-1.01l2.49,2.8l0.14,0.09l5.99,1.78l2.09,1.74l2.18,3.83l-4.29,1.91l-0.01,0.54l5.9,2.83l3.95,0.94l3.54,3.84l0.2,0.1l3.58,0.25l-0.67,2.51l-4.18,4.54l-2.84,-1.61l-3.91,-3.95l-0.26,-0.09l-3.24,0.52l-0.25,0.26l-0.32,2.37l0.1,0.26l2.63,2.38l3.42,1.89l0.96,1.0l1.57,3.8l-0.74,2.43l-2.85,-0.96l-6.26,-3.15l-0.38,0.09l0.04,0.39l3.54,3.4l2.55,2.31l0.23,0.78l-6.26,-1.43l-5.33,-2.25l-2.73,-1.73l0.67,-0.86l-0.09,-0.45l-7.38,-4.01l-0.44,0.27l0.03,0.89l-6.85,0.61l-1.8,-1.17l1.43,-2.6l4.56,-0.07l5.15,-0.52l0.23,-0.45l-0.76,-1.34l0.8,-1.89l3.21,-4.06l0.05,-0.29l-0.72,-1.95l-0.97,-1.47l-0.11,-0.1l-3.84,-2.1l-4.53,-1.33l1.09,-0.75l0.05,-0.45l-2.65,-2.75l-0.18,-0.09l-2.12,-0.24l-1.91,-1.47l-0.39,0.02l-1.27,1.25l-4.4,0.56l-9.06,-0.99l-5.28,-1.31l-4.01,-0.67l-1.72,-1.31l2.32,-1.85l0.1,-0.33l-0.28,-0.2l-3.3,-0.02l-0.74,-4.36l1.86,-4.09l2.46,-1.88l5.74,-1.15l-1.5,2.55ZM261.28,159.28l0.19,0.14l1.82,0.42l1.66,-0.05l-0.66,0.68l-0.75,0.16l-3.0,-1.25l-0.46,-0.77l0.51,-0.52l0.68,1.19ZM230.87,84.48l-2.48,0.19l-0.52,-1.74l0.96,-2.17l2.03,-0.53l1.71,1.04l0.02,1.6l-0.22,0.46l-1.5,1.16ZM229.52,58.19l0.14,0.82l-4.99,-0.22l-2.73,0.63l-0.59,-0.23l-2.61,-2.4l0.08,-1.38l0.94,-0.25l5.61,0.51l4.14,2.54ZM222.12,105.0l-0.79,1.63l-0.75,-0.22l-0.52,-0.91l0.04,-0.09l0.84,-1.01l0.74,0.06l0.44,0.55ZM183.77,38.22l2.72,1.65l0.16,0.04l4.83,-0.01l1.92,1.52l-0.51,1.75l0.18,0.36l2.84,1.14l1.56,1.19l0.16,0.06l3.37,0.22l3.65,0.42l4.07,-1.1l5.05,-0.43l3.96,0.35l2.53,1.8l0.48,1.79l-1.37,1.16l-3.6,1.03l-3.22,-0.59l-7.17,0.76l-5.1,0.09l-4.0,-0.6l-6.48,-1.56l-0.81,-2.57l-0.3,-2.49l-0.1,-0.19l-2.51,-2.25l-0.16,-0.07l-5.12,-0.63l-2.61,-1.45l0.75,-1.71l4.88,0.32ZM207.46,91.26l0.42,1.62l0.42,0.19l1.12,-0.55l1.35,0.99l2.74,1.39l2.73,1.2l0.2,1.74l0.35,0.26l1.72,-0.29l1.31,0.97l-1.72,0.96l-3.68,-0.9l-1.34,-1.71l-0.43,-0.04l-2.46,2.1l-3.23,1.85l-0.74,-1.98l-0.31,-0.19l-2.47,0.28l1.49,-1.34l0.1,-0.19l0.32,-3.15l0.79,-3.45l1.34,0.25ZM215.59,102.66l-2.73,2.0l-1.49,-0.08l-0.37,-0.7l1.61,-1.56l3.0,0.03l-0.02,0.3ZM202.79,24.07l0.11,0.12l2.54,1.53l-3.01,1.47l-4.55,4.07l-4.3,0.38l-5.07,-0.68l-2.51,-2.09l0.03,-1.72l1.86,-1.4l0.1,-0.34l-0.29,-0.2l-4.49,0.04l-2.63,-1.79l-1.45,-2.36l1.61,-2.38l1.65,-1.69l2.47,-0.4l0.19,-0.48l-0.72,-0.89l5.1,-0.26l3.1,3.05l0.13,0.07l4.21,1.25l3.99,1.06l1.92,3.65ZM187.5,59.3l-0.15,0.1l-2.59,3.4l-2.5,-0.15l-1.47,-3.92l0.04,-2.24l1.22,-1.92l2.34,-1.26l5.11,0.17l4.28,1.06l-3.36,3.86l-2.9,0.9ZM186.19,48.8l-1.15,1.63l-3.42,-0.35l-2.68,-1.15l1.11,-1.88l3.34,-1.27l2.01,1.63l0.79,1.38ZM185.78,35.41l-0.95,0.13l-4.48,-0.33l-0.4,-0.91l4.5,0.07l1.45,0.82l-0.1,0.21ZM180.76,32.56l-3.43,1.03l-1.85,-1.14l-1.01,-1.92l-0.16,-1.87l2.87,0.2l1.39,0.35l2.75,1.75l-0.55,1.6ZM181.03,76.32l-1.21,1.2l-3.19,-1.26l-0.18,-0.01l-1.92,0.45l-2.88,-1.67l1.84,-1.16l1.6,-1.77l2.45,1.17l1.45,0.77l2.05,2.28ZM169.72,54.76l2.83,0.97l0.14,0.01l4.25,-0.58l0.47,1.01l-2.19,2.16l0.07,0.48l3.61,1.95l-0.41,3.84l-3.87,1.68l-2.23,-0.36l-1.73,-1.75l-6.07,-3.53l0.03,-1.01l4.79,0.55l0.3,-0.16l-0.04,-0.34l-2.55,-2.89l2.59,-2.05ZM174.44,40.56l1.49,1.87l0.07,2.48l-1.07,3.52l-3.87,0.48l-2.41,-0.72l0.05,-2.72l-0.33,-0.3l-3.79,0.36l-0.13,-3.31l2.36,0.14l0.15,-0.03l3.7,-1.74l3.44,0.29l0.31,-0.22l0.03,-0.12ZM170.14,31.5l0.75,1.74l-3.52,-0.52l-4.19,-1.77l-4.65,-0.17l1.65,-1.11l-0.05,-0.52l-2.86,-1.26l-0.13,-1.58l4.52,0.7l6.66,1.99l1.84,2.5ZM134.64,58.08l-1.08,1.93l0.34,0.44l5.44,-1.41l3.37,2.32l0.37,-0.02l2.66,-2.28l2.03,1.38l2.01,4.53l0.53,0.04l1.26,-1.93l0.03,-0.27l-1.67,-4.55l1.82,-0.58l2.36,0.73l2.69,1.84l1.53,4.46l0.77,3.24l0.15,0.19l4.22,2.26l4.32,2.04l-0.21,1.51l-3.87,0.34l-0.19,0.5l1.45,1.54l-0.65,1.23l-4.3,-0.65l-4.4,-1.19l-2.97,0.28l-4.67,1.48l-6.31,0.65l-4.27,0.39l-1.26,-1.91l-0.15,-0.12l-3.42,-1.2l-0.16,-0.01l-2.05,0.45l-2.66,-3.02l1.2,-0.34l3.82,-0.76l3.58,0.19l3.27,-0.78l0.23,-0.29l-0.24,-0.29l-4.84,-1.06l-5.42,0.35l-3.4,-0.09l-0.97,-1.22l5.39,-1.7l0.21,-0.33l-0.3,-0.25l-3.82,0.06l-3.95,-1.1l1.88,-3.13l1.68,-1.81l6.54,-2.84l2.11,0.77ZM158.85,56.58l-1.82,2.62l-3.38,-2.9l0.49,-0.39l3.17,-0.18l1.54,0.86ZM149.71,42.7l1.0,1.87l0.37,0.14l2.17,-0.83l2.33,0.2l0.38,2.16l-1.38,2.17l-8.33,0.76l-6.34,2.15l-3.51,0.1l-0.22,-1.13l4.98,-2.12l0.17,-0.34l-0.31,-0.23l-11.27,0.6l-3.04,-0.78l3.14,-4.57l2.2,-1.35l6.87,1.7l4.4,3.0l0.14,0.05l4.37,0.39l0.27,-0.48l-3.41,-4.68l1.96,-1.62l2.28,0.53l0.79,2.32ZM145.44,29.83l-2.18,0.77l-3.79,-0.0l0.02,-0.31l2.34,-1.5l1.2,0.23l2.42,0.83ZM144.83,34.5l-4.44,1.46l-3.18,-1.48l1.6,-1.36l3.51,-0.53l3.1,0.75l-0.6,1.16ZM119.02,65.87l-6.17,2.07l-1.19,-1.82l-0.13,-0.11l-5.48,-2.32l0.92,-1.7l1.73,-3.44l2.16,-3.15l-0.02,-0.36l-2.09,-2.56l7.84,-0.71l3.59,1.02l6.32,0.27l2.35,1.37l2.25,1.71l-2.68,1.04l-6.21,3.41l-3.1,3.28l-0.08,0.21l0.0,1.81ZM129.66,35.4l-0.3,3.55l-1.77,1.67l-2.34,0.27l-4.62,2.2l-3.89,0.76l-2.83,-0.93l3.85,-3.52l5.04,-3.36l3.75,0.07l3.11,-0.7ZM111.24,152.74l-0.82,0.29l-3.92,-1.39l-0.7,-1.06l-0.12,-0.1l-2.15,-1.09l-0.41,-0.84l-0.2,-0.16l-2.44,-0.56l-0.84,-1.56l0.1,-0.36l2.34,0.64l1.53,0.5l2.28,0.34l0.78,1.04l1.24,1.55l0.09,0.08l2.42,1.3l0.81,1.39ZM88.54,134.82l0.14,0.02l2.0,-0.23l-0.67,3.48l0.06,0.24l1.78,2.22l-0.24,-0.0l-1.4,-1.42l-0.91,-1.53l-1.26,-1.08l-0.42,-1.35l0.09,-0.66l0.82,0.31Z", "name": "Canada"}, "CG": {"path": "M453.66,296.61l-0.9,-0.82l-0.35,-0.04l-0.83,0.48l-0.77,0.83l-1.65,-2.13l1.66,-1.2l0.08,-0.39l-0.81,-1.43l0.59,-0.43l1.62,-0.29l0.24,-0.24l0.1,-0.58l0.94,0.84l0.19,0.08l2.21,0.11l0.27,-0.14l0.81,-1.29l0.32,-1.76l-0.27,-1.96l-0.06,-0.15l-1.08,-1.35l1.02,-2.74l-0.09,-0.34l-0.62,-0.5l-0.22,-0.06l-1.66,0.18l-0.55,-1.03l0.12,-0.73l2.85,0.09l1.98,0.65l2.0,0.59l0.38,-0.25l0.17,-1.3l1.26,-2.24l1.34,-1.19l1.54,0.38l1.35,0.12l-0.11,1.15l-0.74,1.34l-0.5,1.61l-0.31,2.22l0.12,1.41l-0.4,0.9l-0.06,0.88l-0.24,0.67l-1.57,1.15l-1.24,1.41l-1.09,2.43l-0.03,0.13l0.08,1.95l-0.55,0.69l-1.46,1.23l-1.32,1.41l-0.61,-0.29l-0.13,-0.57l-0.29,-0.23l-1.36,-0.02l-0.23,0.1l-0.72,0.81l-0.41,-0.16Z", "name": "Republic of the Congo"}, "CF": {"path": "M459.41,266.56l1.9,-0.17l0.22,-0.12l0.36,-0.5l0.14,0.02l0.55,0.51l0.29,0.07l3.15,-0.96l0.12,-0.07l1.05,-0.97l1.29,-0.87l0.12,-0.33l-0.17,-0.61l0.38,-0.12l2.36,0.15l0.15,-0.03l2.36,-1.17l0.12,-0.1l1.78,-2.72l1.18,-0.96l1.23,-0.34l0.21,0.79l0.07,0.13l1.37,1.5l0.01,0.86l-0.39,1.0l-0.01,0.17l0.16,0.78l0.1,0.17l0.91,0.76l1.89,1.09l1.24,0.92l0.02,0.67l0.12,0.23l1.67,1.3l0.99,1.03l0.61,1.46l0.14,0.15l1.79,0.95l0.2,0.4l-0.44,0.14l-1.54,-0.06l-1.98,-0.26l-0.93,0.22l-0.19,0.14l-0.3,0.48l-0.57,0.05l-0.91,-0.49l-0.26,-0.01l-2.7,1.21l-1.04,-0.23l-0.21,0.03l-0.34,0.19l-0.12,0.13l-0.64,1.3l-1.67,-0.43l-1.77,-0.24l-1.58,-0.91l-2.06,-0.85l-0.27,0.02l-1.42,0.88l-0.97,1.27l-0.06,0.14l-0.19,1.46l-1.3,-0.11l-1.67,-0.42l-0.27,0.07l-1.55,1.41l-0.99,1.76l-0.14,-1.18l-0.13,-0.22l-1.1,-0.78l-0.86,-1.2l-0.2,-0.84l-0.07,-0.13l-1.07,-1.19l0.16,-0.59l0.0,-0.15l-0.24,-1.01l0.18,-1.77l0.5,-0.38l0.09,-0.11l1.18,-2.4Z", "name": "Central African Republic"}, "CD": {"path": "M497.85,276.25l-0.14,2.77l0.2,0.3l0.57,0.19l-0.47,0.52l-1.0,0.71l-0.96,1.31l-0.56,1.22l-0.16,2.04l-0.54,0.89l-0.04,0.15l-0.02,1.76l-0.63,0.61l-0.09,0.2l-0.08,1.33l-0.2,0.11l-0.15,0.21l-0.23,1.37l0.03,0.2l0.6,1.08l0.16,2.96l0.44,2.29l-0.24,1.25l0.01,0.15l0.5,1.46l0.07,0.12l1.41,1.37l1.09,2.56l-0.51,-0.11l-3.45,0.45l-0.67,0.3l-0.15,0.15l-0.71,1.61l0.01,0.26l0.52,1.03l-0.43,2.9l-0.31,2.55l0.13,0.29l0.7,0.46l1.75,0.99l0.31,-0.01l0.26,-0.17l0.15,1.9l-1.44,-0.02l-0.94,-1.28l-0.94,-1.1l-0.17,-0.1l-1.76,-0.33l-0.5,-1.18l-0.42,-0.15l-1.44,0.75l-1.79,-0.32l-0.77,-1.05l-0.2,-0.12l-1.59,-0.23l-0.97,0.04l-0.1,-0.53l-0.27,-0.25l-0.86,-0.06l-1.13,-0.15l-1.62,0.37l-1.04,-0.06l-0.32,0.09l0.11,-2.56l-0.08,-0.21l-0.77,-0.87l-0.17,-1.41l0.36,-1.47l-0.03,-0.21l-0.48,-0.91l-0.04,-1.52l-0.3,-0.29l-2.65,0.02l0.13,-0.53l-0.29,-0.37l-1.28,0.01l-0.28,0.21l-0.07,0.24l-1.35,0.09l-0.26,0.18l-0.62,1.45l-0.25,0.42l-1.17,-0.3l-0.19,0.01l-0.79,0.34l-1.44,0.18l-1.41,-1.96l-0.7,-1.47l-0.61,-1.86l-0.28,-0.21l-7.39,-0.03l-0.92,0.3l-0.78,-0.03l-0.78,0.25l-0.11,-0.25l0.35,-0.15l0.18,-0.26l0.07,-1.02l0.33,-0.52l0.72,-0.42l0.52,0.2l0.33,-0.08l0.76,-0.86l0.99,0.02l0.11,0.48l0.16,0.2l0.94,0.44l0.35,-0.07l1.46,-1.56l1.44,-1.21l0.68,-0.85l0.06,-0.2l-0.08,-1.99l1.04,-2.33l1.1,-1.23l1.62,-1.19l0.11,-0.14l0.29,-0.8l0.08,-0.94l0.38,-0.82l0.03,-0.16l-0.13,-1.38l0.3,-2.16l0.47,-1.51l0.73,-1.31l0.04,-0.12l0.15,-1.51l0.21,-1.66l0.89,-1.16l1.16,-0.7l1.9,0.79l1.69,0.95l1.81,0.24l1.85,0.48l0.35,-0.16l0.71,-1.43l0.16,-0.09l1.03,0.23l0.19,-0.02l2.65,-1.19l0.86,0.46l0.17,0.03l0.81,-0.08l0.23,-0.14l0.31,-0.5l0.75,-0.17l1.83,0.26l1.64,0.06l0.72,-0.21l1.39,1.9l0.16,0.11l1.12,0.3l0.24,-0.04l0.58,-0.36l1.05,0.15l0.15,-0.02l1.15,-0.44l0.47,0.84l0.08,0.09l2.08,1.57Z", "name": "Democratic Republic of the Congo"}, "CZ": {"path": "M463.29,152.22l-0.88,-0.47l-0.18,-0.03l-1.08,0.15l-1.86,-0.94l-0.21,-0.02l-0.88,0.24l-0.13,0.07l-1.25,1.17l-1.63,-0.91l-1.38,-1.36l-1.22,-0.75l-0.24,-1.24l-0.33,-0.75l1.53,-0.6l0.98,-0.84l1.74,-0.62l0.11,-0.07l0.47,-0.47l0.46,0.27l0.24,0.03l0.96,-0.3l1.06,0.95l0.15,0.07l1.57,0.24l-0.1,0.6l0.16,0.32l1.36,0.68l0.41,-0.15l0.28,-0.62l1.29,0.28l0.19,0.84l0.26,0.23l1.73,0.18l0.74,1.02l-0.17,0.0l-0.25,0.13l-0.32,0.49l-0.46,0.11l-0.22,0.23l-0.13,0.57l-0.32,0.1l-0.2,0.22l-0.03,0.14l-0.65,0.25l-1.05,-0.05l-0.28,0.17l-0.22,0.43Z", "name": "Czech Republic"}, "CY": {"path": "M505.03,193.75l-1.51,0.68l-1.0,-0.3l-0.32,-0.63l0.69,-0.06l0.41,0.13l0.19,-0.0l0.62,-0.22l0.31,0.02l0.06,0.22l0.49,0.17l0.06,-0.01Z", "name": "Cyprus"}, "CR": {"path": "M213.0,263.84l-0.98,-0.4l-0.3,-0.31l0.16,-0.24l0.05,-0.21l-0.09,-0.56l-0.1,-0.18l-0.76,-0.65l-0.99,-0.5l-0.74,-0.28l-0.13,-0.58l-0.12,-0.18l-0.66,-0.45l-0.34,-0.0l-0.13,0.31l0.13,0.59l-0.17,0.21l-0.34,-0.42l-0.14,-0.1l-0.7,-0.22l-0.23,-0.34l0.01,-0.62l0.31,-0.74l-0.14,-0.38l-0.3,-0.15l0.47,-0.4l1.48,0.6l0.26,-0.02l0.47,-0.27l0.58,0.15l0.35,0.44l0.17,0.11l0.74,0.17l0.27,-0.07l0.3,-0.27l0.52,1.09l0.97,1.02l0.77,0.71l-0.41,0.1l-0.23,0.3l0.01,1.02l0.12,0.24l0.2,0.14l-0.07,0.05l-0.11,0.3l0.08,0.37l-0.23,0.63Z", "name": "Costa Rica"}, "CU": {"path": "M215.01,226.09l2.08,0.18l1.94,0.03l2.24,0.86l0.95,0.92l0.25,0.08l2.22,-0.28l0.79,0.55l3.68,2.81l0.19,0.06l0.77,-0.03l1.18,0.42l-0.12,0.47l0.27,0.37l1.78,0.1l1.59,0.9l-0.11,0.22l-1.5,0.3l-1.64,0.13l-1.75,-0.2l-2.69,0.19l1.0,-0.86l-0.03,-0.48l-1.02,-0.68l-0.13,-0.05l-1.52,-0.16l-0.74,-0.64l-0.57,-1.42l-0.3,-0.19l-1.36,0.1l-2.23,-0.67l-0.71,-0.52l-0.14,-0.06l-3.2,-0.4l-0.42,-0.25l0.56,-0.39l0.12,-0.33l-0.27,-0.22l-2.46,-0.13l-0.2,0.06l-1.72,1.31l-0.94,0.03l-0.25,0.15l-0.29,0.53l-1.04,0.24l-0.29,-0.07l0.7,-0.43l0.1,-0.11l0.5,-0.87l1.04,-0.54l1.23,-0.49l1.86,-0.25l0.62,-0.28Z", "name": "Cuba"}, "SZ": {"path": "M500.95,353.41l-0.41,0.97l-1.16,0.23l-1.29,-1.26l-0.02,-0.71l0.63,-0.93l0.23,-0.7l0.47,-0.12l1.04,0.4l0.32,1.05l0.2,1.08Z", "name": "Swaziland"}, "SY": {"path": "M510.84,199.83l0.09,-0.11l0.07,-0.2l-0.04,-1.08l0.56,-1.4l1.3,-1.01l0.1,-0.34l-0.41,-1.11l-0.24,-0.19l-0.89,-0.11l-0.2,-1.84l0.55,-1.05l1.3,-1.22l0.09,-0.19l0.09,-1.09l0.39,0.27l0.25,0.04l2.66,-0.77l1.35,0.52l2.06,-0.01l2.93,-1.08l1.35,0.04l2.14,-0.34l-0.83,1.16l-1.31,0.68l-0.16,0.3l0.23,2.03l-0.9,3.25l-5.43,2.87l-4.79,2.91l-2.32,-0.92Z", "name": "Syria"}, "KG": {"path": "M599.04,172.15l0.38,-0.9l1.43,-0.37l4.04,1.02l0.37,-0.23l0.36,-1.64l1.17,-0.52l3.45,1.24l0.2,-0.0l0.86,-0.31l4.09,0.08l3.61,0.31l1.18,1.02l0.11,0.06l1.19,0.34l-0.13,0.26l-3.84,1.58l-0.13,0.1l-0.81,1.08l-3.08,0.34l-0.24,0.16l-0.85,1.7l-2.43,-0.37l-0.14,0.01l-1.79,0.61l-2.39,1.4l-0.12,0.39l0.25,0.49l-0.48,0.45l-4.57,0.43l-3.04,-0.94l-2.45,0.18l0.14,-1.02l2.42,0.44l0.27,-0.08l0.81,-0.81l1.76,0.27l0.21,-0.05l3.21,-2.14l-0.03,-0.51l-2.97,-1.57l-0.26,-0.01l-1.64,0.69l-1.38,-0.84l1.81,-1.67l-0.09,-0.5l-0.46,-0.18Z", "name": "Kyrgyzstan"}, "KE": {"path": "M523.3,287.04l0.06,0.17l1.29,1.8l-1.46,0.84l-0.11,0.11l-0.55,0.93l-0.81,0.16l-0.24,0.24l-0.34,1.69l-0.81,1.06l-0.46,1.58l-0.76,0.63l-3.3,-2.3l-0.16,-1.32l-0.15,-0.23l-9.35,-5.28l-0.02,-2.4l1.92,-2.63l0.91,-1.83l0.01,-0.24l-1.09,-2.86l-0.29,-1.24l-1.09,-1.63l2.93,-2.85l0.92,0.3l0.0,1.19l0.09,0.22l0.86,0.83l0.21,0.08l1.65,0.0l3.09,2.08l0.16,0.05l0.79,0.03l0.54,-0.06l0.58,0.28l1.67,0.2l0.28,-0.12l0.69,-0.98l2.04,-0.94l0.86,0.73l0.19,0.07l1.1,0.0l-1.82,2.36l-0.06,0.18l0.03,9.12Z", "name": "Kenya"}, "SS": {"path": "M505.7,261.39l0.02,1.64l-0.27,0.55l-1.15,0.05l-0.24,0.15l-0.85,1.44l0.22,0.45l1.44,0.17l1.15,1.12l0.42,0.95l0.14,0.15l1.06,0.54l1.33,2.45l-3.06,2.98l-1.44,1.08l-1.75,0.01l-1.92,0.56l-1.5,-0.53l-0.27,0.03l-0.85,0.57l-1.98,-1.5l-0.56,-1.02l-0.37,-0.13l-1.32,0.5l-1.08,-0.15l-0.2,0.04l-0.56,0.35l-0.9,-0.24l-1.44,-1.97l-0.39,-0.77l-0.13,-0.13l-1.78,-0.94l-0.65,-1.5l-1.08,-1.12l-1.57,-1.22l-0.02,-0.68l-0.12,-0.23l-1.37,-1.02l-1.17,-0.68l0.2,-0.08l0.86,-0.48l0.14,-0.18l0.63,-2.22l0.6,-1.02l1.47,-0.28l0.35,0.56l1.29,1.48l0.14,0.09l0.69,0.22l0.22,-0.02l0.83,-0.4l1.58,0.08l0.26,0.39l0.25,0.13l2.49,0.0l0.3,-0.25l0.06,-0.35l1.13,-0.42l0.18,-0.18l0.22,-0.63l0.68,-0.38l1.95,1.37l0.23,0.05l1.29,-0.26l0.19,-0.12l1.23,-1.8l1.36,-1.37l0.08,-0.25l-0.21,-1.52l-0.06,-0.15l-0.25,-0.3l0.94,-0.08l0.26,-0.21l0.1,-0.32l0.6,0.09l-0.25,1.67l0.3,1.83l0.11,0.19l1.22,0.94l0.25,0.73l-0.04,1.2l0.26,0.31l0.09,0.01Z", "name": "South Sudan"}, "SR": {"path": "M278.1,270.26l2.71,0.45l0.31,-0.14l0.19,-0.32l1.82,-0.16l2.25,0.56l-1.09,1.81l-0.04,0.19l0.2,1.72l0.05,0.13l0.9,1.35l-0.39,0.99l-0.21,1.09l-0.48,0.8l-1.2,-0.44l-0.17,-0.01l-1.12,0.24l-0.95,-0.21l-0.35,0.2l-0.25,0.73l0.05,0.29l0.3,0.35l-0.06,0.13l-1.01,-0.15l-1.42,-2.03l-0.32,-1.36l-0.29,-0.23l-0.63,-0.0l-0.95,-1.56l0.41,-1.16l0.01,-0.17l-0.08,-0.35l1.29,-0.56l0.18,-0.22l0.35,-1.97Z", "name": "Suriname"}, "KH": {"path": "M680.28,257.89l-0.93,-1.2l-1.24,-2.56l-0.56,-2.9l1.45,-1.92l3.07,-0.46l2.26,0.35l2.03,0.98l0.38,-0.11l1.0,-1.55l1.86,0.79l0.52,1.51l-0.28,2.82l-4.05,1.88l-0.12,0.45l0.79,1.1l-2.2,0.17l-2.08,0.98l-1.89,-0.33Z", "name": "Cambodia"}, "SV": {"path": "M197.02,248.89l0.18,-0.05l0.59,0.17l0.55,0.51l0.64,0.35l0.06,0.22l0.37,0.21l1.01,-0.28l0.38,0.13l0.16,0.13l-0.14,0.81l-0.18,0.38l-1.22,-0.03l-0.84,-0.23l-1.11,-0.52l-1.31,-0.15l-0.49,-0.38l0.02,-0.08l0.76,-0.57l0.46,-0.27l0.11,-0.35Z", "name": "El Salvador"}, "SK": {"path": "M468.01,150.02l0.05,0.07l0.36,0.1l0.85,-0.37l1.12,1.02l0.33,0.05l1.38,-0.65l1.07,0.3l0.16,0.0l1.69,-0.43l1.95,1.02l-0.51,0.64l-0.45,1.2l-0.32,0.2l-2.55,-0.93l-0.17,-0.01l-0.82,0.2l-0.17,0.11l-0.53,0.68l-0.94,0.32l-0.14,-0.11l-0.29,-0.04l-1.18,0.48l-0.95,0.09l-0.26,0.21l-0.15,0.47l-1.84,0.34l-0.82,-0.31l-1.14,-0.73l-0.2,-0.89l0.42,-0.84l0.91,0.05l0.12,-0.02l0.86,-0.33l0.18,-0.21l0.03,-0.13l0.32,-0.1l0.2,-0.22l0.12,-0.55l0.39,-0.1l0.18,-0.13l0.3,-0.45l0.43,-0.0Z", "name": "Slovakia"}, "KR": {"path": "M737.31,185.72l0.84,0.08l0.27,-0.12l0.89,-1.2l1.63,-0.13l1.1,-0.2l0.21,-0.16l0.12,-0.24l1.86,2.95l0.59,1.79l0.02,3.17l-0.84,1.38l-2.23,0.55l-1.95,1.14l-1.91,0.21l-0.22,-1.21l0.45,-2.07l-0.01,-0.17l-0.99,-2.67l1.54,-0.4l0.17,-0.46l-1.55,-2.24Z", "name": "South Korea"}, "SI": {"path": "M455.77,159.59l1.79,0.21l0.18,-0.04l1.2,-0.68l2.12,-0.08l0.21,-0.1l0.38,-0.42l0.1,0.01l0.28,0.62l-1.71,0.71l-0.18,0.22l-0.21,1.1l-0.71,0.26l-0.2,0.28l0.01,0.55l-0.59,-0.04l-0.79,-0.47l-0.38,0.06l-0.36,0.41l-0.84,-0.05l0.05,-0.15l-0.56,-1.24l0.21,-1.17Z", "name": "Slovenia"}, "KP": {"path": "M747.76,172.02l-0.23,-0.04l-0.26,0.08l-1.09,1.02l-0.78,1.06l-0.06,0.19l0.09,1.95l-1.12,0.57l-0.53,0.58l-0.88,0.82l-1.69,0.51l-1.09,0.79l-0.12,0.22l-0.07,1.17l-0.22,0.25l0.09,0.47l0.96,0.46l1.22,1.1l-0.19,0.37l-0.91,0.16l-1.75,0.14l-0.22,0.12l-0.87,1.18l-0.95,-0.09l-0.3,0.18l-0.97,-0.44l-0.39,0.13l-0.25,0.44l-0.29,0.09l-0.03,-0.2l-0.18,-0.23l-0.62,-0.25l-0.43,-0.29l0.52,-0.97l0.52,-0.3l0.13,-0.38l-0.18,-0.42l0.59,-1.47l0.01,-0.21l-0.16,-0.48l-0.22,-0.2l-1.41,-0.31l-0.82,-0.55l1.74,-1.62l2.73,-1.58l1.62,-1.96l0.96,0.76l0.17,0.06l2.17,0.11l0.31,-0.37l-0.32,-1.31l3.61,-1.21l0.16,-0.13l0.79,-1.34l1.25,1.38Z", "name": "North Korea"}, "SO": {"path": "M543.8,256.48l0.61,-0.05l1.14,-0.37l1.31,-0.25l0.12,-0.05l1.11,-0.81l0.57,-0.0l0.03,0.39l-0.23,1.49l0.01,1.25l-0.52,0.92l-0.7,2.71l-1.19,2.79l-1.54,3.2l-2.13,3.66l-2.12,2.79l-2.92,3.39l-2.47,2.0l-3.76,2.5l-2.33,1.9l-2.77,3.06l-0.61,1.35l-0.28,0.29l-1.22,-1.69l-0.03,-8.92l2.12,-2.76l0.59,-0.68l1.47,-0.04l0.18,-0.06l2.15,-1.71l3.16,-0.11l0.21,-0.09l7.08,-7.55l1.76,-2.12l1.14,-1.57l0.06,-0.18l0.01,-4.67Z", "name": "Somalia"}, "SN": {"path": "M379.28,250.34l-0.95,-1.82l-0.09,-0.1l-0.83,-0.6l0.62,-0.28l0.13,-0.11l1.21,-1.8l0.6,-1.31l0.71,-0.68l1.09,0.2l0.18,-0.02l1.17,-0.53l1.25,-0.03l1.17,0.73l1.59,0.65l1.47,1.83l1.59,1.7l0.12,1.56l0.49,1.46l0.1,0.14l0.85,0.65l0.18,0.82l-0.08,0.57l-0.13,0.05l-1.29,-0.19l-0.29,0.13l-0.11,0.16l-0.35,0.04l-1.83,-0.61l-5.84,-0.13l-0.12,0.02l-0.6,0.26l-0.87,-0.06l-1.01,0.32l-0.26,-1.26l1.9,0.04l0.16,-0.04l0.54,-0.32l0.37,-0.02l0.15,-0.05l0.78,-0.5l0.92,0.46l0.12,0.03l1.09,0.04l0.15,-0.03l1.08,-0.57l0.11,-0.44l-0.51,-0.74l-0.39,-0.1l-0.76,0.39l-0.62,-0.01l-0.92,-0.58l-0.18,-0.05l-0.79,0.04l-0.2,0.09l-0.48,0.51l-2.41,0.06Z", "name": "Senegal"}, "SL": {"path": "M392.19,267.53l-0.44,-0.12l-1.73,-0.97l-1.24,-1.28l-0.4,-0.84l-0.27,-1.65l1.21,-1.0l0.09,-0.12l0.27,-0.66l0.32,-0.41l0.56,-0.05l0.16,-0.07l0.5,-0.41l1.75,0.0l0.59,0.77l0.49,0.96l-0.07,0.64l0.04,0.19l0.36,0.58l-0.03,0.84l0.24,0.2l-0.64,0.65l-1.13,1.37l-0.06,0.14l-0.12,0.66l-0.43,0.58Z", "name": "Sierra Leone"}, "SB": {"path": "M826.74,311.51l0.23,0.29l-0.95,-0.01l-0.39,-0.63l0.65,0.27l0.45,0.09ZM825.01,308.52l-1.18,-1.39l-0.37,-1.06l0.24,0.0l0.82,1.84l0.49,0.6ZM823.21,309.42l-0.44,0.03l-1.43,-0.24l-0.32,-0.24l0.08,-0.5l1.29,0.31l0.72,0.47l0.11,0.18ZM817.9,303.81l2.59,1.44l0.3,0.41l-1.21,-0.66l-1.34,-0.89l-0.34,-0.3ZM813.77,302.4l0.48,0.34l0.1,0.08l-0.33,-0.17l-0.25,-0.25Z", "name": "Solomon Islands"}, "SA": {"path": "M528.24,243.1l-0.2,-0.69l-0.07,-0.12l-0.69,-0.71l-0.18,-0.94l-0.12,-0.19l-1.24,-0.89l-1.28,-2.09l-0.7,-2.08l-0.07,-0.11l-1.73,-1.79l-0.11,-0.07l-1.03,-0.39l-1.57,-2.36l-0.27,-1.72l0.1,-1.53l-0.03,-0.15l-1.44,-2.93l-1.25,-1.13l-1.34,-0.56l-0.72,-1.33l0.11,-0.49l-0.02,-0.2l-0.7,-1.38l-0.08,-0.1l-0.68,-0.56l-0.97,-1.98l-2.8,-4.03l-0.25,-0.13l-0.85,0.01l0.29,-1.11l0.12,-0.97l0.23,-0.81l2.52,0.39l0.23,-0.06l1.08,-0.84l0.6,-0.95l1.78,-0.35l0.22,-0.17l0.37,-0.83l0.74,-0.42l0.08,-0.46l-2.17,-2.4l4.55,-1.26l0.12,-0.06l0.36,-0.32l2.83,0.71l3.67,1.91l7.04,5.5l0.17,0.06l4.64,0.22l2.06,0.24l0.55,1.15l0.28,0.17l1.56,-0.06l0.9,2.15l0.14,0.15l1.14,0.57l0.39,0.85l0.11,0.13l1.59,1.06l0.12,0.91l-0.23,0.83l0.01,0.18l0.32,0.9l0.07,0.11l0.68,0.7l0.33,0.86l0.37,0.65l0.09,0.1l0.76,0.53l0.25,0.04l0.45,-0.12l0.35,0.75l0.1,0.63l0.96,2.68l0.23,0.19l7.53,1.33l0.27,-0.09l0.24,-0.26l0.87,1.41l-1.58,4.96l-7.34,2.54l-7.28,1.02l-2.34,1.17l-0.12,0.1l-1.74,2.63l-0.86,0.32l-0.49,-0.68l-0.28,-0.12l-0.92,0.12l-2.32,-0.25l-0.41,-0.23l-0.15,-0.04l-2.89,0.06l-0.63,0.2l-0.91,-0.59l-0.43,0.11l-0.66,1.27l-0.03,0.21l0.21,0.89l-0.6,0.45Z", "name": "Saudi Arabia"}, "SE": {"path": "M476.42,90.44l-0.15,0.1l-2.43,2.86l-0.07,0.24l0.36,2.31l-3.84,3.1l-4.83,3.38l-0.11,0.15l-1.82,5.45l0.03,0.26l1.78,2.68l2.27,1.99l-2.13,3.88l-2.49,0.82l-0.2,0.24l-0.95,6.05l-1.32,3.09l-2.82,-0.32l-0.3,0.16l-1.34,2.64l-2.48,0.14l-0.76,-3.15l-2.09,-4.04l-1.85,-5.01l1.03,-1.98l2.06,-2.53l0.06,-0.13l0.83,-4.45l-0.06,-0.25l-1.54,-1.86l-0.15,-5.0l1.52,-3.48l2.28,0.06l0.27,-0.16l0.87,-1.59l-0.01,-0.31l-0.8,-1.21l3.79,-5.63l4.07,-7.54l2.23,0.01l0.29,-0.22l0.59,-2.15l4.46,0.66l0.34,-0.26l0.34,-2.64l1.21,-0.14l3.24,2.08l3.78,2.85l0.06,6.37l0.03,0.14l0.67,1.29l-3.95,1.07Z", "name": "Sweden"}, "SD": {"path": "M505.98,259.75l-0.31,-0.9l-0.1,-0.14l-1.2,-0.93l-0.27,-1.66l0.29,-1.83l-0.25,-0.34l-1.16,-0.17l-0.33,0.21l-0.11,0.37l-1.3,0.11l-0.21,0.49l0.55,0.68l0.18,1.29l-1.31,1.33l-1.18,1.72l-1.04,0.21l-2.0,-1.4l-0.32,-0.02l-0.95,0.52l-0.14,0.16l-0.21,0.6l-1.16,0.43l-0.19,0.23l-0.04,0.27l-2.08,0.0l-0.25,-0.39l-0.24,-0.13l-1.81,-0.09l-0.14,0.03l-0.8,0.38l-0.49,-0.16l-1.22,-1.39l-0.42,-0.67l-0.31,-0.14l-1.81,0.35l-0.2,0.14l-0.72,1.24l-0.61,2.14l-0.73,0.4l-0.62,0.22l-0.83,-0.68l-0.12,-0.6l0.38,-0.97l0.01,-1.14l-0.08,-0.2l-1.39,-1.53l-0.25,-0.97l0.03,-0.57l-0.11,-0.25l-0.81,-0.66l-0.03,-1.34l-0.04,-0.14l-0.52,-0.98l-0.31,-0.15l-0.42,0.07l0.12,-0.44l0.63,-1.03l0.03,-0.23l-0.24,-0.88l0.69,-0.66l0.02,-0.41l-0.4,-0.46l0.58,-1.39l1.04,-1.71l1.97,0.16l0.32,-0.3l-0.12,-10.24l0.02,-0.8l2.59,-0.01l0.3,-0.3l0.0,-4.92l29.19,0.0l0.68,2.17l-0.4,0.35l-0.1,0.27l0.36,2.69l0.93,3.15l0.12,0.16l2.05,1.4l-0.99,1.15l-1.75,0.4l-0.15,0.08l-0.79,0.79l-0.08,0.17l-0.24,1.69l-1.07,3.75l-0.0,0.16l0.25,0.96l-0.38,2.1l-0.98,2.41l-1.52,1.3l-1.07,1.94l-0.25,0.99l-1.08,0.64l-0.13,0.18l-0.46,1.65Z", "name": "Sudan"}, "DO": {"path": "M241.7,234.97l0.15,-0.22l1.73,0.01l1.43,0.64l0.15,0.03l0.45,-0.04l0.36,0.74l0.28,0.17l1.02,-0.04l-0.04,0.43l0.27,0.33l1.03,0.09l0.91,0.7l-0.57,0.64l-0.99,-0.47l-0.16,-0.03l-1.11,0.11l-0.79,-0.12l-0.26,0.09l-0.38,0.4l-0.66,0.11l-0.28,-0.45l-0.38,-0.12l-0.83,0.37l-0.14,0.13l-0.85,1.49l-0.27,-0.17l-0.1,-0.58l0.05,-0.67l-0.07,-0.21l-0.44,-0.53l0.35,-0.25l0.12,-0.19l0.19,-1.0l-0.2,-1.4Z", "name": "Dominican Republic"}, "DJ": {"path": "M528.78,253.36l0.34,0.45l-0.06,0.76l-1.26,0.54l-0.05,0.53l0.82,0.53l-0.57,0.83l-0.3,-0.25l-0.27,-0.05l-0.56,0.17l-1.07,-0.03l-0.04,-0.56l-0.16,-0.56l0.76,-1.07l0.76,-0.97l0.89,0.18l0.25,-0.06l0.51,-0.42Z", "name": "Djibouti"}, "DK": {"path": "M452.4,129.07l-1.27,2.39l-2.25,-1.69l-0.26,-1.08l3.15,-1.0l0.63,1.39ZM447.87,126.25l-0.35,0.76l-0.47,-0.24l-0.38,0.09l-1.8,2.53l-0.03,0.29l0.56,1.4l-1.22,0.4l-1.68,-0.41l-0.92,-1.76l-0.07,-3.47l0.38,-0.88l0.62,-0.93l2.07,-0.21l0.19,-0.1l0.84,-0.95l1.5,-0.76l-0.06,1.26l-0.7,1.1l-0.03,0.25l0.3,1.0l0.18,0.19l1.06,0.42Z", "name": "Denmark"}, "DE": {"path": "M445.51,131.69l0.03,0.94l0.21,0.28l2.32,0.74l-0.02,1.0l0.37,0.3l2.55,-0.65l1.36,-0.89l2.63,1.27l1.09,1.01l0.51,1.51l-0.6,0.78l-0.0,0.36l0.88,1.17l0.58,1.68l-0.18,1.08l0.03,0.18l0.87,1.81l-0.66,0.2l-0.55,-0.32l-0.36,0.05l-0.58,0.58l-1.73,0.62l-0.99,0.84l-1.77,0.7l-0.16,0.4l0.42,0.94l0.26,1.34l0.14,0.2l1.25,0.76l1.22,1.2l-0.71,1.2l-0.81,0.37l-0.17,0.32l0.34,1.99l-0.04,0.09l-0.47,-0.39l-0.17,-0.07l-1.2,-0.1l-1.85,0.57l-2.15,-0.13l-0.29,0.18l-0.21,0.5l-0.96,-0.67l-0.24,-0.05l-0.67,0.16l-2.6,-0.94l-0.34,0.1l-0.42,0.57l-1.64,-0.02l0.26,-1.88l1.24,-2.15l-0.21,-0.45l-3.54,-0.58l-0.98,-0.71l0.12,-1.26l-0.05,-0.2l-0.44,-0.64l0.27,-2.18l-0.38,-3.14l1.17,-0.0l0.27,-0.17l0.63,-1.26l0.65,-3.17l-0.02,-0.17l-0.41,-1.0l0.32,-0.47l1.77,-0.16l0.37,0.6l0.47,0.06l1.7,-1.69l0.06,-0.33l-0.55,-1.24l-0.09,-1.51l1.5,0.36l0.16,-0.01l1.22,-0.4Z", "name": "Germany"}, "YE": {"path": "M553.53,242.65l-1.51,0.58l-0.17,0.16l-0.48,1.14l-0.07,0.79l-2.31,1.0l-3.98,1.19l-2.28,1.8l-0.97,0.12l-0.7,-0.14l-0.23,0.05l-1.42,1.03l-1.51,0.47l-2.07,0.13l-0.68,0.15l-0.17,0.1l-0.49,0.6l-0.57,0.16l-0.18,0.13l-0.3,0.49l-1.06,-0.05l-0.13,0.02l-0.73,0.32l-1.48,-0.11l-0.55,-1.26l0.07,-1.32l-0.04,-0.16l-0.39,-0.72l-0.48,-1.85l-0.52,-0.79l0.08,-0.02l0.22,-0.36l-0.23,-1.05l0.24,-0.39l0.04,-0.19l-0.09,-0.95l0.96,-0.72l0.11,-0.31l-0.23,-0.98l0.46,-0.88l0.75,0.49l0.26,0.03l0.63,-0.22l2.76,-0.06l0.5,0.25l2.42,0.26l0.85,-0.11l0.52,0.71l0.35,0.1l1.17,-0.43l0.15,-0.12l1.75,-2.64l2.22,-1.11l6.95,-0.96l2.55,5.58Z", "name": "Yemen"}, "AT": {"path": "M463.17,154.15l-0.14,0.99l-1.15,0.01l-0.24,0.47l0.39,0.56l-0.75,1.84l-0.36,0.4l-2.06,0.07l-0.14,0.04l-1.18,0.67l-1.96,-0.23l-3.43,-0.78l-0.5,-0.97l-0.33,-0.16l-2.47,0.55l-0.2,0.16l-0.18,0.37l-1.27,-0.38l-1.28,-0.09l-0.81,-0.41l0.25,-0.51l0.03,-0.18l-0.05,-0.28l0.35,-0.08l1.16,0.81l0.45,-0.13l0.27,-0.64l2.0,0.12l1.84,-0.57l1.05,0.09l0.71,0.59l0.47,-0.11l0.23,-0.54l0.02,-0.17l-0.32,-1.85l0.69,-0.31l0.13,-0.12l0.73,-1.23l1.61,0.89l0.35,-0.04l1.35,-1.27l0.7,-0.19l1.84,0.93l0.18,0.03l1.08,-0.15l0.81,0.43l-0.07,0.15l-0.02,0.2l0.24,1.06Z", "name": "Austria"}, "DZ": {"path": "M450.58,224.94l-8.31,4.86l-7.23,5.12l-3.46,1.13l-2.42,0.22l-0.02,-1.33l-0.2,-0.28l-1.15,-0.42l-1.45,-0.69l-0.55,-1.13l-0.1,-0.12l-8.45,-5.72l-17.72,-12.17l0.03,-0.38l-0.02,-3.21l3.84,-1.91l2.46,-0.41l2.1,-0.75l0.14,-0.11l0.9,-1.3l2.84,-1.06l0.19,-0.27l0.09,-1.81l1.21,-0.2l0.15,-0.07l1.06,-0.96l3.19,-0.46l0.23,-0.18l0.46,-1.08l-0.08,-0.34l-0.6,-0.54l-0.83,-2.85l-0.18,-1.8l-0.82,-1.57l2.13,-1.37l2.65,-0.49l0.13,-0.05l1.55,-1.15l2.34,-0.85l4.2,-0.51l4.07,-0.23l1.21,0.41l0.23,-0.01l2.3,-1.11l2.52,-0.02l0.94,0.62l0.2,0.05l1.25,-0.13l-0.36,1.03l-0.01,0.14l0.39,2.66l-0.56,2.2l-1.49,1.52l-0.08,0.24l0.22,2.12l0.11,0.2l1.94,1.58l0.02,0.54l0.12,0.23l1.45,1.06l1.04,4.85l0.81,2.42l0.13,1.19l-0.43,2.17l0.17,1.28l-0.31,1.53l0.2,1.56l-0.9,1.02l-0.01,0.38l1.43,1.88l0.09,1.06l0.04,0.13l0.89,1.48l0.37,0.12l1.03,-0.43l1.79,1.12l0.89,1.34Z", "name": "Algeria"}, "US": {"path": "M892.64,99.05l1.16,0.57l0.21,0.02l1.45,-0.38l1.92,0.99l2.17,0.47l-1.65,0.72l-1.75,-0.79l-0.93,-0.7l-0.21,-0.06l-2.11,0.22l-0.35,-0.2l0.09,-0.87ZM183.29,150.37l0.39,1.54l0.12,0.17l0.78,0.55l0.14,0.05l1.74,0.2l2.52,0.5l2.4,0.98l0.17,0.02l1.96,-0.4l3.01,0.81l0.91,-0.02l2.22,-0.88l4.67,2.33l3.86,2.01l0.21,0.71l0.15,0.18l0.33,0.17l-0.02,0.05l0.23,0.43l0.67,0.1l0.21,-0.05l0.1,-0.07l0.05,0.29l0.09,0.16l0.5,0.5l0.21,0.09l0.56,0.0l0.13,0.13l-0.2,0.36l0.12,0.41l2.49,1.39l0.99,5.24l-0.69,1.68l-1.16,1.64l-0.6,1.18l-0.06,0.31l0.04,0.22l0.28,0.43l0.11,0.1l0.85,0.47l0.15,0.04l0.63,0.0l0.14,-0.04l2.87,-1.58l2.6,-0.49l3.28,-1.5l0.17,-0.23l0.04,-0.43l-0.23,-0.93l-0.24,-0.39l0.74,-0.32l4.7,-0.01l0.25,-0.13l0.77,-1.15l2.9,-2.41l1.04,-0.52l8.35,-0.02l0.28,-0.21l0.2,-0.6l0.7,-0.14l1.06,-0.48l0.13,-0.11l0.92,-1.49l0.75,-2.39l1.67,-2.08l0.59,0.6l0.3,0.07l1.52,-0.49l0.88,0.72l-0.0,4.14l0.08,0.2l1.6,1.72l0.31,0.72l-2.42,1.35l-2.55,1.05l-2.64,0.9l-0.14,0.11l-1.33,1.81l-0.44,0.7l-0.05,0.15l-0.03,1.6l0.03,0.14l0.83,1.59l0.24,0.16l0.78,0.06l-1.15,0.33l-1.25,-0.04l-1.83,0.52l-2.51,0.29l-2.17,0.88l-0.17,0.36l0.33,0.22l3.55,-0.54l0.15,0.11l-2.87,0.73l-1.19,0.0l-0.16,-0.33l-0.36,0.06l-0.76,0.82l0.17,0.5l0.42,0.08l-0.45,1.75l-1.4,1.74l-0.04,-0.17l-0.21,-0.22l-0.48,-0.13l-0.77,-0.69l-0.36,-0.03l-0.12,0.34l0.52,1.58l0.09,0.14l0.52,0.43l0.03,0.87l-0.74,1.05l-0.39,0.63l0.05,-0.12l-0.08,-0.34l-1.19,-1.03l-0.28,-2.31l-0.26,-0.26l-0.32,0.19l-0.48,1.27l-0.01,0.19l0.39,1.33l-1.14,-0.31l-0.36,0.18l0.14,0.38l1.57,0.85l0.1,2.58l0.22,0.28l0.55,0.15l0.21,0.81l0.33,2.72l-1.46,1.94l-2.5,0.81l-0.12,0.07l-1.58,1.58l-1.15,0.17l-0.15,0.06l-1.27,1.03l-0.09,0.13l-0.32,0.85l-2.71,1.79l-1.45,1.37l-1.18,1.64l-0.05,0.12l-0.39,1.96l0.0,0.13l0.44,1.91l0.85,2.37l1.1,1.91l0.03,1.2l1.16,3.07l-0.08,1.74l-0.1,0.99l-0.57,1.48l-0.54,0.24l-0.97,-0.26l-0.34,-1.02l-0.12,-0.16l-0.89,-0.58l-2.44,-4.28l-0.34,-0.94l0.49,-1.71l-0.02,-0.21l-0.7,-1.5l-2.0,-2.35l-0.11,-0.08l-0.98,-0.42l-0.25,0.01l-2.42,1.19l-0.26,-0.08l-1.26,-1.29l-1.57,-0.68l-0.16,-0.02l-2.79,0.34l-2.18,-0.3l-1.98,0.19l-1.12,0.45l-0.14,0.44l0.4,0.65l-0.04,1.02l0.09,0.22l0.29,0.3l-0.06,0.05l-0.77,-0.33l-0.26,0.01l-0.87,0.48l-1.64,-0.08l-1.79,-1.39l-0.23,-0.06l-2.11,0.33l-1.75,-0.61l-0.14,-0.01l-1.61,0.2l-2.11,0.64l-0.11,0.06l-2.25,1.99l-2.53,1.21l-1.43,1.38l-0.58,1.22l-0.03,0.12l-0.03,1.86l0.13,1.32l0.3,0.62l-0.46,0.04l-1.71,-0.57l-1.85,-0.79l-0.63,-1.14l-0.54,-1.85l-0.07,-0.12l-1.45,-1.51l-0.86,-1.58l-1.26,-1.87l-0.09,-0.09l-1.76,-1.09l-0.17,-0.04l-2.05,0.05l-0.23,0.12l-1.44,1.97l-1.84,-0.72l-1.19,-0.76l-0.6,-1.45l-0.9,-1.52l-1.49,-1.21l-1.27,-0.87l-0.89,-0.96l-0.22,-0.1l-4.34,-0.0l-0.3,0.3l-0.0,0.84l-6.62,0.02l-5.66,-1.93l-3.48,-1.24l0.11,-0.25l-0.3,-0.42l-3.18,0.3l-2.6,0.2l-0.35,-1.19l-0.08,-0.13l-1.62,-1.61l-0.13,-0.08l-1.02,-0.29l-0.22,-0.66l-0.25,-0.2l-1.31,-0.13l-0.82,-0.7l-0.16,-0.07l-2.25,-0.27l-0.48,-0.34l-0.28,-1.44l-0.07,-0.14l-2.41,-2.84l-2.03,-3.89l0.08,-0.58l-0.1,-0.27l-1.08,-0.94l-1.87,-2.36l-0.33,-2.31l-0.07,-0.15l-1.24,-1.5l0.52,-2.4l-0.09,-2.57l-0.78,-2.3l0.96,-2.83l0.61,-5.66l-0.46,-4.26l-0.79,-2.71l-0.68,-1.4l0.13,-0.26l3.24,0.97l1.28,2.88l0.52,0.06l0.62,-0.84l0.06,-0.22l-0.4,-2.61l-0.74,-2.29l68.9,-0.0l0.3,-0.3l0.01,-0.95l0.32,-0.01ZM32.5,67.43l1.75,1.99l0.41,0.04l1.02,-0.81l3.79,0.25l-0.1,0.72l0.24,0.34l3.83,0.77l2.6,-0.44l5.21,1.41l4.84,0.43l1.9,0.57l0.15,0.01l3.25,-0.71l3.72,1.32l2.52,0.58l-0.03,38.14l0.29,0.3l2.41,0.11l2.34,1.0l1.7,1.59l2.22,2.42l0.42,0.03l2.41,-2.04l2.25,-1.08l1.23,1.76l1.71,1.53l2.24,1.62l1.54,2.56l2.56,4.09l0.11,0.11l4.1,2.17l0.06,1.93l-1.12,1.35l-1.22,-1.14l-2.08,-1.05l-0.68,-2.94l-0.09,-0.16l-3.18,-2.84l-1.32,-3.35l-0.25,-0.19l-2.43,-0.24l-3.93,-0.09l-2.85,-1.02l-5.24,-3.85l-6.77,-2.04l-3.52,0.3l-4.84,-1.7l-2.96,-1.6l-0.23,-0.02l-2.78,0.8l-0.21,0.35l0.46,2.31l-1.11,0.19l-2.9,0.78l-2.24,1.26l-2.42,0.68l-0.29,-1.79l1.07,-3.49l2.54,-1.11l0.12,-0.45l-0.69,-0.96l-0.41,-0.07l-3.19,2.12l-1.76,2.54l-3.57,2.62l-0.03,0.46l1.63,1.59l-2.14,2.38l-2.64,1.49l-2.49,1.09l-0.16,0.17l-0.58,1.48l-3.8,1.79l-0.14,0.14l-0.75,1.57l-2.75,1.41l-1.62,-0.25l-0.16,0.02l-2.35,0.98l-2.54,1.19l-2.06,1.15l-4.05,0.93l-0.1,-0.15l2.45,-1.45l2.49,-1.1l2.61,-1.88l3.03,-0.39l0.19,-0.1l1.2,-1.41l3.43,-2.11l0.61,-0.75l1.81,-1.24l0.13,-0.2l0.42,-2.7l1.24,-2.12l-0.03,-0.35l-0.34,-0.09l-2.73,1.05l-0.67,-0.53l-0.39,0.02l-1.13,1.11l-1.43,-1.62l-0.49,0.06l-0.41,0.8l-0.67,-1.31l-0.42,-0.12l-2.43,1.43l-1.18,-0.0l-0.18,-1.86l0.43,-1.3l-0.09,-0.33l-1.61,-1.33l-0.26,-0.06l-3.11,0.68l-2.0,-1.66l-1.61,-0.85l-0.01,-1.97l-0.11,-0.23l-1.76,-1.48l0.86,-1.96l2.01,-2.13l0.88,-1.94l1.79,-0.25l1.65,0.6l0.31,-0.06l1.91,-1.8l1.67,0.31l0.22,-0.04l1.91,-1.23l0.13,-0.33l-0.47,-1.82l-0.15,-0.19l-1.0,-0.52l1.51,-1.27l0.09,-0.34l-0.29,-0.19l-1.62,0.06l-2.66,0.88l-0.13,0.09l-0.62,0.72l-1.77,-0.8l-0.16,-0.02l-3.48,0.44l-3.5,-0.92l-1.06,-1.61l-2.78,-2.09l3.07,-1.51l5.52,-2.01l1.65,0.0l-0.28,1.73l0.31,0.35l5.29,-0.16l0.23,-0.49l-2.03,-2.59l-0.1,-0.08l-3.03,-1.58l-1.79,-2.12l-2.4,-1.83l-3.18,-1.27l1.13,-1.84l4.28,-0.14l0.15,-0.05l3.16,-2.0l0.13,-0.17l0.57,-2.07l2.43,-2.02l2.42,-0.52l4.67,-1.98l2.22,0.29l0.2,-0.04l3.74,-2.37l3.57,0.91ZM37.66,123.49l-2.31,1.26l-1.04,-0.75l-0.31,-1.35l2.06,-1.16l1.24,-0.51l1.48,0.22l0.76,0.81l-1.89,1.49ZM30.89,233.84l1.2,0.57l0.35,0.3l0.48,0.69l-1.6,0.86l-0.3,0.31l-0.24,-0.14l0.05,-0.54l-0.02,-0.15l-0.36,-0.83l0.05,-0.12l0.39,-0.38l0.07,-0.31l-0.09,-0.27ZM29.06,231.89l0.5,0.14l0.31,0.19l-0.46,0.1l-0.34,-0.43ZM25.02,230.13l0.2,-0.11l0.4,0.47l-0.43,-0.05l-0.17,-0.31ZM21.29,228.68l0.1,-0.07l0.22,0.02l0.02,0.21l-0.02,0.02l-0.32,-0.18ZM6.0,113.33l-1.19,0.45l-1.5,-0.64l-0.94,-0.63l1.76,-0.46l1.71,0.29l0.16,0.98Z", "name": "United States of America"}, "LV": {"path": "M473.99,127.16l0.07,-2.15l1.15,-2.11l2.05,-1.07l1.84,2.48l0.25,0.12l2.01,-0.07l0.29,-0.25l0.45,-2.58l1.85,-0.56l0.98,0.4l2.13,1.33l0.16,0.05l1.97,0.01l1.02,0.7l0.21,1.67l0.71,1.84l-2.44,1.23l-1.36,0.53l-2.28,-1.62l-0.12,-0.05l-1.18,-0.2l-0.28,-0.6l-0.31,-0.17l-2.43,0.35l-4.17,-0.23l-0.12,0.02l-2.45,0.93Z", "name": "Latvia"}, "UY": {"path": "M276.9,363.17l1.3,-0.23l2.4,2.04l0.22,0.07l0.82,-0.07l2.48,1.7l1.93,1.5l1.28,1.67l-0.95,1.14l-0.04,0.31l0.63,1.45l-0.96,1.57l-2.65,1.47l-1.73,-0.53l-0.15,-0.01l-1.25,0.28l-2.22,-1.16l-0.16,-0.03l-1.56,0.08l-1.33,-1.36l0.17,-1.58l0.48,-0.55l0.07,-0.2l-0.02,-2.74l0.66,-2.8l0.57,-2.02Z", "name": "Uruguay"}, "LB": {"path": "M510.44,198.11l-0.48,0.03l-0.26,0.17l-0.15,0.32l-0.21,-0.0l0.72,-1.85l1.19,-1.9l0.74,0.09l0.27,0.73l-1.19,0.93l-0.09,0.13l-0.54,1.36Z", "name": "Lebanon"}, "LA": {"path": "M684.87,248.8l0.61,-0.86l0.05,-0.16l0.11,-2.17l-0.08,-0.22l-1.96,-2.16l-0.15,-2.44l-0.08,-0.18l-1.9,-2.1l-0.19,-0.1l-1.89,-0.18l-0.29,0.15l-0.42,0.76l-1.21,0.06l-0.67,-0.41l-0.31,-0.0l-2.2,1.29l-0.05,-1.77l0.61,-2.7l-0.27,-0.37l-1.44,-0.1l-0.12,-1.31l-0.12,-0.21l-0.87,-0.65l0.38,-0.68l1.76,-1.41l0.08,0.22l0.27,0.2l1.33,0.07l0.31,-0.34l-0.35,-2.75l0.85,-0.25l1.32,1.88l1.11,2.36l0.27,0.17l2.89,0.02l0.78,1.82l-1.32,0.56l-0.12,0.09l-0.72,0.93l0.1,0.45l2.93,1.52l3.62,5.27l1.88,1.78l0.58,1.67l-0.38,2.11l-1.87,-0.79l-0.37,0.11l-0.99,1.54l-1.51,-0.73Z", "name": "Laos"}, "TW": {"path": "M725.6,222.5l-1.5,4.22l-0.82,1.65l-1.01,-1.7l-0.26,-1.8l1.4,-2.48l1.8,-1.81l0.76,0.53l-0.38,1.39Z", "name": "Taiwan"}, "TT": {"path": "M266.35,259.46l0.41,-0.39l0.09,-0.23l-0.04,-0.75l1.14,-0.26l0.2,0.03l-0.07,1.37l-1.73,0.23Z", "name": "Trinidad and Tobago"}, "TR": {"path": "M513.25,175.38l3.63,1.17l0.14,0.01l2.88,-0.45l2.11,0.26l0.18,-0.03l2.9,-1.53l2.51,-0.13l2.25,1.37l0.36,0.88l-0.23,1.36l0.19,0.33l1.81,0.72l0.61,0.53l-1.31,0.64l-0.16,0.34l0.76,3.24l-0.44,0.8l0.01,0.3l1.19,2.02l-0.71,0.29l-0.74,-0.62l-0.15,-0.07l-2.91,-0.37l-0.15,0.02l-1.04,0.43l-2.78,0.44l-1.44,-0.03l-2.83,1.06l-1.95,0.01l-1.28,-0.52l-0.2,-0.01l-2.62,0.76l-0.7,-0.48l-0.47,0.22l-0.13,1.49l-1.01,0.94l-0.58,-0.82l0.79,-0.9l0.04,-0.34l-0.31,-0.15l-1.46,0.23l-2.03,-0.64l-0.3,0.07l-1.65,1.58l-3.58,0.3l-1.94,-1.47l-0.17,-0.06l-2.7,-0.1l-0.28,0.17l-0.51,1.06l-1.47,0.29l-2.32,-1.46l-0.17,-0.05l-2.55,0.05l-1.4,-2.7l-1.72,-1.54l1.11,-2.06l-0.07,-0.37l-1.35,-1.19l2.47,-2.51l3.74,-0.11l0.26,-0.17l0.96,-2.07l4.56,0.38l0.19,-0.05l2.97,-1.92l2.84,-0.83l4.03,-0.06l4.31,2.08ZM488.85,176.8l-1.81,1.38l-0.57,-1.01l0.02,-0.36l0.45,-0.25l0.13,-0.15l0.78,-1.87l-0.11,-0.37l-0.72,-0.47l1.91,-0.71l1.89,0.35l0.25,0.97l0.17,0.2l1.87,0.83l-0.19,0.31l-2.82,0.16l-0.18,0.07l-1.06,0.91Z", "name": "Turkey"}, "LK": {"path": "M625.44,266.07l-0.35,2.4l-0.9,0.61l-1.91,0.5l-1.04,-1.75l-0.43,-3.5l1.0,-3.6l1.34,1.09l1.13,1.72l1.16,2.52Z", "name": "Sri Lanka"}, "TN": {"path": "M444.91,206.18l-0.99,-4.57l-0.12,-0.18l-1.43,-1.04l-0.02,-0.53l-0.11,-0.22l-1.95,-1.59l-0.19,-1.85l1.44,-1.47l0.08,-0.14l0.59,-2.34l-0.38,-2.77l0.44,-1.28l2.52,-1.08l1.41,0.28l-0.06,1.2l0.43,0.28l1.81,-0.9l0.02,0.06l-1.14,1.28l-0.08,0.2l-0.02,1.32l0.11,0.24l0.74,0.6l-0.29,2.18l-1.56,1.35l-0.09,0.32l0.48,1.54l0.28,0.21l1.11,0.04l0.55,1.17l0.15,0.14l0.76,0.35l-0.12,1.79l-1.1,0.72l-0.8,0.91l-1.68,1.04l-0.13,0.32l0.25,1.08l-0.18,0.96l-0.74,0.39Z", "name": "Tunisia"}, "TL": {"path": "M734.21,307.22l0.17,-0.34l1.99,-0.52l1.72,-0.08l0.78,-0.3l0.29,0.1l-0.43,0.32l-2.57,1.09l-1.71,0.59l-0.05,-0.49l-0.19,-0.36Z", "name": "East Timor"}, "TM": {"path": "M553.16,173.51l-0.12,1.0l-0.26,-0.65l0.38,-0.34ZM553.54,173.16l0.13,-0.12l0.43,-0.09l-0.56,0.21ZM555.68,172.6l0.65,-0.14l1.53,0.76l1.71,2.29l0.27,0.12l1.27,-0.14l2.81,-0.04l0.29,-0.38l-0.35,-1.27l1.98,-0.97l1.96,-1.63l3.05,1.44l0.25,2.23l0.14,0.22l0.96,0.61l0.18,0.05l2.61,-0.13l0.68,0.44l1.2,2.97l0.1,0.13l2.85,2.03l1.67,1.41l2.66,1.45l3.13,1.17l-0.05,1.23l-0.36,-0.04l-1.12,-0.73l-0.44,0.14l-0.34,0.89l-1.96,0.52l-0.22,0.23l-0.47,2.17l-1.26,0.78l-1.93,0.42l-0.21,0.18l-0.46,1.14l-1.64,0.33l-2.3,-0.97l-0.2,-2.23l-0.28,-0.27l-1.76,-0.1l-2.78,-2.48l-0.15,-0.07l-1.95,-0.31l-2.82,-1.48l-1.78,-0.27l-0.18,0.03l-1.03,0.51l-1.6,-0.08l-0.22,0.08l-1.72,1.6l-1.83,0.46l-0.39,-1.7l0.36,-3.0l-0.16,-0.3l-1.73,-0.88l0.57,-1.77l-0.25,-0.39l-1.33,-0.14l0.41,-1.85l2.05,0.63l0.21,-0.01l2.2,-0.95l0.09,-0.49l-1.78,-1.75l-0.69,-1.66l-0.07,-0.03Z", "name": "Turkmenistan"}, "TJ": {"path": "M597.99,178.71l-0.23,0.23l-2.57,-0.47l-0.35,0.25l-0.24,1.7l0.32,0.34l2.66,-0.22l3.15,0.95l4.47,-0.42l0.58,2.45l0.39,0.21l0.71,-0.25l1.22,0.53l-0.06,1.01l0.29,1.28l-2.19,-0.0l-1.71,-0.21l-0.23,0.07l-1.51,1.25l-1.05,0.27l-0.77,0.51l-0.71,-0.67l0.22,-2.28l-0.24,-0.32l-0.43,-0.08l0.17,-0.57l-0.16,-0.36l-1.36,-0.66l-0.34,0.05l-1.08,1.01l-0.09,0.15l-0.25,1.09l-0.24,0.26l-1.36,-0.05l-0.27,0.14l-0.65,1.06l-0.58,-0.39l-0.3,-0.02l-1.68,0.86l-0.36,-0.16l1.28,-2.65l0.02,-0.2l-0.54,-2.17l-0.18,-0.21l-1.53,-0.58l0.41,-0.82l1.89,0.13l0.26,-0.12l1.19,-1.63l0.77,-1.82l2.66,-0.55l-0.33,0.87l0.01,0.23l0.36,0.82l0.3,0.18l0.23,-0.02Z", "name": "Tajikistan"}, "LS": {"path": "M493.32,359.69l0.69,0.65l-0.65,1.12l-0.38,0.8l-1.27,0.39l-0.18,0.15l-0.4,0.77l-0.59,0.18l-1.59,-1.78l1.16,-1.5l1.3,-1.02l0.97,-0.46l0.94,0.72Z", "name": "Lesotho"}, "TH": {"path": "M677.42,253.68l-1.7,-0.88l-0.14,-0.03l-1.77,0.04l0.3,-1.64l-0.3,-0.35l-2.21,0.01l-0.3,0.28l-0.2,2.76l-2.15,5.9l-0.02,0.13l0.17,1.83l0.28,0.27l1.45,0.07l0.93,2.1l0.44,2.15l0.08,0.15l1.4,1.44l0.16,0.09l1.43,0.27l1.04,1.05l-0.58,0.73l-1.24,0.22l-0.15,-0.99l-0.15,-0.22l-2.04,-1.1l-0.36,0.06l-0.23,0.23l-0.72,-0.71l-0.41,-1.18l-0.06,-0.11l-1.33,-1.42l-1.22,-1.2l-0.5,0.13l-0.15,0.54l-0.14,-0.41l0.26,-1.48l0.73,-2.38l1.2,-2.57l1.37,-2.35l0.02,-0.27l-0.95,-2.26l0.03,-1.19l-0.29,-1.42l-0.06,-0.13l-1.65,-2.0l-0.46,-0.99l0.62,-0.34l0.13,-0.15l0.92,-2.23l-0.02,-0.27l-1.05,-1.74l-1.57,-1.86l-1.04,-1.96l0.76,-0.34l0.16,-0.16l1.07,-2.63l1.58,-0.1l0.16,-0.06l1.43,-1.11l1.24,-0.52l0.84,0.62l0.13,1.43l0.28,0.27l1.34,0.09l-0.54,2.39l0.05,2.39l0.45,0.25l2.48,-1.45l0.6,0.36l0.17,0.04l1.47,-0.07l0.25,-0.15l0.41,-0.73l1.58,0.15l1.76,1.93l0.15,2.44l0.08,0.18l1.94,2.15l-0.1,1.96l-0.66,0.93l-2.25,-0.34l-3.24,0.49l-0.19,0.12l-1.6,2.12l-0.06,0.24l0.48,2.46Z", "name": "Thailand"}, "TF": {"path": "M593.76,417.73l1.38,0.84l2.15,0.37l0.04,0.31l-0.59,1.24l-3.36,0.19l-0.05,-1.38l0.43,-1.56Z", "name": "French Southern and Antarctic Lands"}, "TG": {"path": "M425.23,269.29l-1.49,0.4l-0.43,-0.68l-0.64,-1.54l-0.18,-1.16l0.54,-2.21l-0.04,-0.24l-0.59,-0.86l-0.23,-1.9l0.0,-1.82l-0.07,-0.19l-0.95,-1.19l0.1,-0.41l1.58,0.04l-0.23,0.97l0.08,0.28l1.55,1.55l0.09,1.13l0.08,0.19l0.42,0.43l-0.11,5.66l0.52,1.53Z", "name": "Togo"}, "TD": {"path": "M457.57,252.46l0.23,-1.08l-0.28,-0.36l-1.32,-0.05l0.0,-1.35l-0.1,-0.22l-0.9,-0.82l0.99,-3.1l3.12,-2.37l0.12,-0.23l0.13,-3.33l0.95,-5.2l0.53,-1.09l-0.07,-0.36l-0.94,-0.81l-0.03,-0.7l-0.12,-0.23l-0.84,-0.61l-0.57,-3.76l2.21,-1.26l19.67,9.88l0.12,9.74l-1.83,-0.15l-0.28,0.14l-1.14,1.89l-0.68,1.62l0.05,0.31l0.33,0.38l-0.61,0.58l-0.08,0.3l0.25,0.93l-0.58,0.95l-0.29,1.01l0.34,0.37l0.67,-0.11l0.39,0.73l0.03,1.4l0.11,0.23l0.8,0.65l-0.01,0.24l-1.38,0.37l-0.11,0.06l-1.27,1.03l-1.83,2.76l-2.21,1.1l-2.34,-0.15l-0.82,0.25l-0.2,0.37l0.19,0.68l-1.16,0.79l-1.01,0.94l-2.92,0.89l-0.5,-0.46l-0.17,-0.08l-0.41,-0.05l-0.28,0.12l-0.38,0.54l-1.36,0.12l0.1,-0.18l0.01,-0.27l-0.78,-1.72l-0.35,-1.03l-0.17,-0.18l-1.03,-0.41l-1.29,-1.28l0.36,-0.78l0.9,0.2l0.14,-0.0l0.67,-0.17l1.36,0.02l0.26,-0.45l-1.32,-2.22l0.09,-1.64l-0.17,-1.68l-0.04,-0.13l-0.93,-1.53Z", "name": "Chad"}, "LY": {"path": "M457.99,226.38l-1.57,0.87l-1.25,-1.28l-0.13,-0.08l-3.85,-1.11l-1.04,-1.57l-0.09,-0.09l-1.98,-1.23l-0.27,-0.02l-0.93,0.39l-0.72,-1.2l-0.09,-1.07l-0.06,-0.16l-1.33,-1.75l0.83,-0.94l0.07,-0.24l-0.21,-1.64l0.31,-1.43l-0.17,-1.29l0.43,-2.26l-0.15,-1.33l-0.73,-2.18l0.99,-0.52l0.16,-0.21l0.22,-1.16l-0.22,-1.06l1.54,-0.95l0.81,-0.92l1.19,-0.78l0.14,-0.23l0.12,-1.76l2.57,0.84l0.16,0.01l0.99,-0.23l2.01,0.45l3.19,1.2l1.12,2.36l0.2,0.16l2.24,0.53l3.5,1.14l2.65,1.36l0.29,-0.01l1.22,-0.71l1.27,-1.32l0.07,-0.29l-0.55,-2.0l0.69,-1.19l1.7,-1.23l1.61,-0.35l3.2,0.54l0.78,1.14l0.24,0.13l0.85,0.01l0.84,0.47l2.35,0.31l0.42,0.63l-0.79,1.16l-0.04,0.26l0.35,1.08l-0.61,1.6l-0.0,0.2l0.73,2.16l0.0,24.24l-2.58,0.01l-0.3,0.29l-0.02,0.62l-19.55,-9.83l-0.28,0.01l-2.53,1.44Z", "name": "Libya"}, "AE": {"path": "M550.59,223.8l0.12,0.08l1.92,-0.41l3.54,0.15l0.23,-0.09l1.71,-1.79l1.86,-1.7l1.31,-1.36l0.26,0.5l0.28,1.72l-0.93,0.01l-0.3,0.26l-0.21,1.73l0.11,0.27l0.08,0.06l-0.7,0.32l-0.17,0.27l-0.01,0.99l-0.68,1.02l-0.05,0.15l-0.06,0.96l-0.32,0.36l-7.19,-1.27l-0.79,-2.22Z", "name": "United Arab Emirates"}, "VE": {"path": "M240.66,256.5l0.65,0.91l-0.03,1.13l-1.05,1.39l-0.03,0.31l0.95,2.0l0.32,0.17l1.08,-0.16l0.24,-0.21l0.56,-1.83l-0.06,-0.29l-0.71,-0.81l-0.1,-1.58l2.9,-0.96l0.19,-0.37l-0.29,-1.02l0.45,-0.41l0.72,1.43l0.26,0.16l1.65,0.04l1.46,1.27l0.08,0.72l0.3,0.27l2.28,0.02l2.55,-0.25l1.34,1.06l0.14,0.06l1.92,0.31l0.2,-0.03l1.4,-0.79l0.15,-0.25l0.02,-0.36l2.82,-0.14l1.17,-0.01l-0.41,0.14l-0.14,0.46l0.86,1.19l0.22,0.12l1.93,0.18l1.73,1.13l0.37,1.9l0.31,0.24l1.21,-0.05l0.52,0.32l-1.63,1.21l-0.11,0.17l-0.22,0.92l0.07,0.27l0.63,0.69l-0.31,0.24l-1.48,0.39l-0.22,0.3l0.04,1.03l-0.59,0.6l-0.01,0.41l1.67,1.87l0.23,0.48l-0.72,0.76l-2.71,0.91l-1.78,0.39l-0.13,0.06l-0.6,0.49l-1.84,-0.58l-1.89,-0.33l-0.18,0.03l-0.47,0.23l-0.02,0.53l0.96,0.56l-0.08,1.58l0.35,1.58l0.26,0.23l1.91,0.19l0.02,0.07l-1.54,0.62l-0.18,0.2l-0.25,0.92l-0.88,0.35l-1.85,0.58l-0.16,0.13l-0.4,0.64l-1.66,0.14l-1.22,-1.18l-0.79,-2.52l-0.67,-0.88l-0.66,-0.43l0.99,-0.98l0.09,-0.26l-0.09,-0.56l-0.08,-0.16l-0.66,-0.69l-0.47,-1.54l0.18,-1.67l0.55,-0.85l0.45,-1.35l-0.15,-0.36l-0.89,-0.43l-0.19,-0.02l-1.39,0.28l-1.76,-0.13l-0.92,0.23l-1.64,-2.01l-0.17,-0.1l-1.54,-0.33l-3.05,0.23l-0.5,-0.73l-0.15,-0.12l-0.45,-0.15l-0.05,-0.28l0.28,-0.86l0.01,-0.15l-0.2,-1.01l-0.08,-0.15l-0.5,-0.5l-0.3,-1.08l-0.25,-0.22l-0.89,-0.12l0.54,-1.18l0.29,-1.73l0.66,-0.85l0.94,-0.7l0.09,-0.11l0.3,-0.6Z", "name": "Venezuela"}, "AF": {"path": "M574.42,192.1l2.24,0.95l0.18,0.02l1.89,-0.38l0.22,-0.18l0.46,-1.14l1.82,-0.4l1.5,-0.91l0.14,-0.19l0.46,-2.12l1.93,-0.51l0.2,-0.18l0.26,-0.68l0.87,0.57l0.13,0.05l0.79,0.09l1.35,0.02l1.83,0.59l0.75,0.34l0.26,-0.01l1.66,-0.85l0.7,0.46l0.42,-0.09l0.72,-1.17l1.32,0.05l0.23,-0.1l0.39,-0.43l0.07,-0.14l0.24,-1.08l0.86,-0.81l0.94,0.46l-0.2,0.64l0.23,0.38l0.49,0.09l-0.21,2.15l0.09,0.25l0.99,0.94l0.38,0.03l0.83,-0.57l1.06,-0.27l0.12,-0.06l1.46,-1.21l1.63,0.2l2.4,0.0l0.17,0.32l-1.12,0.25l-1.23,0.52l-2.86,0.33l-2.69,0.6l-0.13,0.06l-1.46,1.25l-0.07,0.36l0.58,1.18l0.25,1.21l-1.13,1.08l-0.09,0.25l0.09,0.98l-0.53,0.79l-2.22,-0.08l-0.28,0.44l0.83,1.57l-1.3,0.58l-0.13,0.11l-1.06,1.69l-0.05,0.18l0.13,1.51l-0.73,0.58l-0.78,-0.22l-0.14,-0.01l-1.91,0.36l-0.23,0.19l-0.2,0.57l-1.65,-0.0l-0.22,0.1l-1.4,1.56l-0.08,0.19l-0.08,2.13l-2.99,1.05l-1.67,-0.23l-0.27,0.1l-0.39,0.46l-1.43,-0.31l-2.43,0.4l-3.69,-1.23l1.96,-2.15l0.08,-0.24l-0.21,-1.78l-0.23,-0.26l-1.69,-0.42l-0.19,-1.62l-0.77,-2.08l0.98,-1.41l-0.14,-0.45l-0.82,-0.31l0.6,-1.79l0.93,-3.21Z", "name": "Afghanistan"}, "IQ": {"path": "M534.42,190.89l0.13,0.14l1.5,0.78l0.15,1.34l-1.13,0.87l-0.11,0.16l-0.58,2.2l0.04,0.24l1.73,2.67l0.12,0.1l2.99,1.49l1.18,1.94l-0.39,1.89l0.29,0.36l0.5,-0.0l0.02,1.17l0.08,0.2l0.83,0.86l-2.36,-0.29l-0.29,0.13l-1.74,2.49l-4.4,-0.21l-7.03,-5.49l-3.73,-1.94l-2.92,-0.74l-0.89,-3.0l5.33,-2.81l0.15,-0.19l0.95,-3.43l-0.2,-2.0l1.19,-0.61l0.11,-0.09l1.23,-1.73l0.92,-0.38l2.75,0.35l0.81,0.68l0.31,0.05l0.94,-0.38l1.5,3.17Z", "name": "Iraq"}, "IS": {"path": "M384.26,87.96l-0.51,2.35l0.08,0.28l2.61,2.58l-2.99,2.83l-7.16,2.72l-2.08,0.7l-9.51,-1.71l1.89,-1.36l-0.07,-0.53l-4.4,-1.59l3.33,-0.59l0.25,-0.32l-0.11,-1.2l-0.25,-0.27l-4.82,-0.88l1.38,-2.2l3.54,-0.57l3.8,2.74l0.33,0.01l3.68,-2.18l3.02,1.12l0.25,-0.02l4.01,-2.18l3.72,0.27Z", "name": "Iceland"}, "IR": {"path": "M556.2,187.5l2.05,-0.52l0.13,-0.07l1.69,-1.57l1.55,0.08l0.15,-0.03l1.02,-0.5l1.64,0.25l2.82,1.48l1.91,0.3l2.8,2.49l0.18,0.08l1.61,0.09l0.19,2.09l-1.0,3.47l-0.69,2.04l0.18,0.38l0.73,0.28l-0.85,1.22l-0.04,0.28l0.81,2.19l0.19,1.72l0.23,0.26l1.69,0.42l0.17,1.43l-2.18,2.39l-0.01,0.4l1.22,1.42l1.0,1.62l0.12,0.11l2.23,1.11l0.06,2.2l0.2,0.27l1.03,0.38l0.14,0.83l-3.38,1.3l-0.18,0.19l-0.87,2.85l-4.44,-0.76l-2.75,-0.62l-2.64,-0.32l-1.01,-3.11l-0.17,-0.19l-1.2,-0.48l-0.18,-0.01l-1.99,0.51l-2.42,1.25l-2.89,-0.84l-2.48,-2.03l-2.41,-0.79l-1.61,-2.47l-1.84,-3.63l-0.36,-0.15l-1.22,0.4l-1.48,-0.84l-0.37,0.06l-0.72,0.82l-1.08,-1.12l-0.02,-1.35l-0.3,-0.29l-0.43,0.0l0.34,-1.64l-0.04,-0.22l-1.29,-2.11l-0.12,-0.11l-3.0,-1.49l-1.62,-2.49l0.52,-1.98l1.18,-0.92l0.11,-0.27l-0.19,-1.66l-0.16,-0.23l-1.55,-0.81l-1.58,-3.33l-1.3,-2.2l0.41,-0.75l0.03,-0.21l-0.73,-3.12l1.2,-0.59l0.35,0.9l1.26,1.35l0.15,0.09l1.81,0.39l0.91,-0.09l0.15,-0.06l2.9,-2.13l0.7,-0.16l0.48,0.56l-0.75,1.26l0.05,0.37l1.56,1.53l0.28,0.08l0.37,-0.09l0.7,1.89l0.21,0.19l2.31,0.59l1.69,1.4l0.15,0.07l3.66,0.49l3.91,-0.76l0.23,-0.19l0.19,-0.52Z", "name": "Iran"}, "AM": {"path": "M530.51,176.08l2.91,-0.39l0.41,0.63l0.11,0.1l0.66,0.36l-0.32,0.47l0.07,0.41l1.1,0.84l-0.53,0.7l0.06,0.42l1.06,0.8l1.01,0.44l0.04,1.56l-0.44,0.04l-0.88,-1.46l0.01,-0.37l-0.3,-0.31l-0.98,0.01l-0.65,-0.69l-0.26,-0.09l-0.38,0.06l-0.97,-0.82l-1.64,-0.65l0.2,-1.2l-0.02,-0.16l-0.28,-0.69Z", "name": "Armenia"}, "IT": {"path": "M451.68,158.58l0.2,0.16l3.3,0.75l-0.22,1.26l0.02,0.18l0.35,0.78l-1.4,-0.32l-0.21,0.03l-2.04,1.1l-0.16,0.29l0.13,1.47l-0.29,0.82l0.02,0.24l0.82,1.57l0.1,0.11l2.28,1.5l1.29,2.53l2.79,2.43l0.2,0.07l1.83,-0.02l0.31,0.34l-0.46,0.39l0.06,0.5l4.06,1.97l2.06,1.49l0.17,0.36l-0.24,0.53l-1.08,-1.07l-0.15,-0.08l-2.18,-0.49l-0.33,0.15l-1.05,1.91l0.11,0.4l1.63,0.98l-0.22,1.12l-0.84,0.14l-0.22,0.15l-1.27,2.38l-0.54,0.12l0.01,-0.47l0.48,-1.46l0.5,-0.58l0.03,-0.35l-0.97,-1.69l-0.76,-1.48l-0.17,-0.15l-0.94,-0.33l-0.68,-1.18l-0.16,-0.13l-1.53,-0.52l-1.03,-1.14l-0.19,-0.1l-1.78,-0.19l-1.88,-1.3l-2.27,-1.94l-1.64,-1.68l-0.76,-2.94l-0.21,-0.21l-1.22,-0.35l-2.01,-1.0l-0.24,-0.01l-1.15,0.42l-0.11,0.07l-1.38,1.36l-0.5,0.11l0.19,-0.87l-0.21,-0.35l-1.19,-0.34l-0.56,-2.06l0.76,-0.82l0.03,-0.36l-0.68,-1.08l0.04,-0.31l0.68,0.42l0.19,0.04l1.21,-0.15l0.14,-0.06l1.18,-0.89l0.25,0.29l0.25,0.1l1.19,-0.1l0.25,-0.18l0.45,-1.04l1.61,0.34l0.19,-0.02l1.1,-0.53l0.17,-0.22l0.15,-0.95l1.19,0.35l0.35,-0.16l0.23,-0.47l2.11,-0.47l0.45,0.89ZM459.35,184.63l-0.71,1.81l0.0,0.23l0.33,0.79l-0.37,1.03l-1.6,-0.91l-1.33,-0.34l-3.24,-1.36l0.23,-0.99l2.73,0.24l3.95,-0.5ZM443.95,175.91l1.26,1.77l-0.31,3.47l-0.82,-0.13l-0.26,0.08l-0.83,0.79l-0.64,-0.52l-0.1,-3.42l-0.44,-1.34l0.91,0.1l0.21,-0.06l1.01,-0.74Z", "name": "Italy"}, "VN": {"path": "M690.8,230.21l-2.86,1.93l-2.09,2.46l-0.06,0.11l-0.55,1.8l0.04,0.26l4.26,6.1l2.31,1.63l1.46,1.97l1.12,4.62l-0.32,4.3l-1.97,1.57l-2.85,1.62l-2.09,2.14l-2.83,2.13l-0.67,-1.19l0.65,-1.58l-0.09,-0.35l-1.47,-1.14l1.67,-0.79l2.57,-0.18l0.22,-0.47l-0.89,-1.24l3.88,-1.8l0.17,-0.24l0.31,-3.05l-0.01,-0.13l-0.56,-1.63l0.44,-2.48l-0.01,-0.15l-0.63,-1.81l-0.08,-0.12l-1.87,-1.77l-3.64,-5.3l-0.11,-0.1l-2.68,-1.39l0.45,-0.59l1.53,-0.65l0.16,-0.39l-0.97,-2.27l-0.27,-0.18l-2.89,-0.02l-1.04,-2.21l-1.28,-1.83l0.96,-0.46l1.97,0.01l2.43,-0.3l0.13,-0.05l1.95,-1.29l1.04,0.85l0.13,0.06l1.98,0.42l-0.32,1.21l0.09,0.3l1.19,1.07l0.12,0.07l1.88,0.51Z", "name": "Vietnam"}, "AR": {"path": "M258.11,341.34l1.4,1.81l0.51,-0.06l0.89,-1.94l2.51,0.1l0.36,0.49l4.6,4.31l0.15,0.08l1.99,0.39l3.01,1.93l2.5,1.01l0.28,0.91l-2.4,3.97l0.17,0.44l2.57,0.74l2.81,0.41l2.09,-0.44l0.14,-0.07l2.27,-2.06l0.09,-0.17l0.38,-2.2l0.88,-0.36l1.05,1.29l-0.04,1.88l-1.98,1.4l-1.72,1.13l-2.84,2.65l-3.34,3.73l-0.07,0.12l-0.63,2.22l-0.67,2.85l0.02,2.73l-0.47,0.54l-0.07,0.17l-0.36,3.28l0.12,0.27l3.03,2.32l-0.31,1.78l0.11,0.29l1.44,1.15l-0.11,1.17l-2.32,3.57l-3.59,1.51l-4.95,0.6l-2.72,-0.29l-0.32,0.38l0.5,1.67l-0.49,2.13l0.01,0.16l0.4,1.29l-1.27,0.88l-2.41,0.39l-2.33,-1.05l-0.31,0.04l-0.97,0.78l-0.11,0.27l0.35,2.98l0.16,0.23l1.69,0.91l0.31,-0.02l1.08,-0.75l0.46,0.96l-2.1,0.88l-2.01,1.89l-0.09,0.18l-0.36,3.05l-0.51,1.42l-2.16,0.01l-0.19,0.07l-1.96,1.59l-0.1,0.15l-0.72,2.34l0.08,0.31l2.46,2.31l0.13,0.07l2.09,0.56l-0.74,2.45l-2.86,1.75l-0.12,0.14l-1.59,3.71l-2.2,1.24l-0.1,0.09l-1.03,1.54l-0.04,0.23l0.81,3.45l0.06,0.13l1.13,1.32l-2.59,-0.57l-5.89,-0.44l-0.92,-1.73l0.05,-2.4l-0.34,-0.3l-1.49,0.19l-0.72,-0.98l-0.2,-3.21l1.79,-1.33l0.1,-0.13l0.79,-2.04l0.02,-0.16l-0.27,-1.52l1.31,-2.69l0.91,-4.15l-0.23,-1.72l0.91,-0.49l0.15,-0.33l-0.27,-1.16l-0.15,-0.2l-0.87,-0.46l0.65,-1.01l-0.04,-0.37l-1.06,-1.09l-0.54,-3.2l0.83,-0.51l0.14,-0.29l-0.42,-3.6l0.58,-2.98l0.64,-2.5l1.41,-1.0l0.12,-0.32l-0.75,-2.8l-0.01,-2.48l1.81,-1.78l0.09,-0.22l-0.06,-2.3l1.39,-2.69l0.03,-0.14l0.01,-2.58l-0.11,-0.24l-0.57,-0.45l-1.1,-4.59l1.49,-2.73l0.04,-0.17l-0.23,-2.59l0.86,-2.38l1.6,-2.48l1.74,-1.65l0.04,-0.39l-0.64,-0.89l0.42,-0.7l0.04,-0.16l-0.08,-4.26l2.55,-1.23l0.16,-0.18l0.86,-2.75l-0.01,-0.22l-0.22,-0.48l1.84,-2.1l3.0,0.59ZM256.77,438.98l-2.1,0.15l-1.18,-1.14l-0.19,-0.08l-1.53,-0.09l-2.38,-0.0l-0.0,-6.28l0.4,0.65l1.25,2.55l0.11,0.12l3.26,2.07l3.19,0.8l-0.82,1.26Z", "name": "Argentina"}, "AU": {"path": "M705.55,353.06l0.09,0.09l0.37,0.05l0.13,-0.35l-0.57,-1.69l0.48,0.3l0.71,0.99l0.34,0.11l0.2,-0.29l-0.04,-1.37l-0.04,-0.14l-1.22,-2.07l-0.28,-0.9l-0.51,-0.69l0.24,-1.33l0.52,-0.7l0.34,-1.32l0.01,-0.13l-0.25,-1.44l0.51,-0.94l0.1,1.03l0.23,0.26l0.32,-0.14l1.01,-1.72l1.94,-0.84l1.27,-1.14l1.84,-0.92l1.0,-0.18l0.6,0.28l0.26,-0.0l1.94,-0.96l1.48,-0.28l0.19,-0.13l0.32,-0.49l0.51,-0.18l1.42,0.05l2.63,-0.76l0.11,-0.06l1.36,-1.15l0.08,-0.1l0.61,-1.33l1.42,-1.27l0.1,-0.19l0.11,-1.03l0.06,-1.32l1.39,-1.74l0.85,1.79l0.4,0.14l1.07,-0.51l0.11,-0.45l-0.77,-1.05l0.53,-0.84l0.86,0.43l0.43,-0.22l0.29,-1.85l1.29,-1.19l0.6,-0.98l1.16,-0.4l0.2,-0.27l0.02,-0.34l0.74,0.2l0.38,-0.27l0.03,-0.44l1.98,-0.61l1.7,1.08l1.36,1.48l0.22,0.1l1.55,0.02l1.57,0.24l0.33,-0.4l-0.48,-1.27l1.09,-1.86l1.06,-0.63l0.1,-0.42l-0.28,-0.46l0.93,-1.24l1.36,-0.8l1.16,0.27l0.14,0.0l2.1,-0.48l0.23,-0.3l-0.05,-1.3l-0.18,-0.26l-1.08,-0.49l0.44,-0.12l1.52,0.58l1.39,1.06l2.11,0.65l0.19,-0.0l0.59,-0.21l1.44,0.72l0.27,0.0l1.37,-0.68l0.84,0.2l0.26,-0.06l0.37,-0.3l0.82,0.89l-0.56,1.14l-0.84,0.91l-0.75,0.07l-0.26,0.38l0.26,0.9l-0.67,1.15l-0.88,1.24l-0.05,0.25l0.18,0.72l0.12,0.17l1.99,1.42l1.96,0.84l1.25,0.86l1.8,1.51l0.19,0.07l0.63,-0.0l1.15,0.58l0.34,0.7l0.17,0.15l2.39,0.88l0.24,-0.02l1.65,-0.88l0.14,-0.16l0.49,-1.37l0.52,-1.19l0.31,-1.39l0.75,-2.02l0.01,-0.19l-0.33,-1.16l0.16,-0.67l0.0,-0.13l-0.28,-1.41l0.3,-1.78l0.42,-0.45l0.05,-0.33l-0.33,-0.73l0.56,-1.25l0.48,-1.39l0.07,-0.69l0.58,-0.59l0.48,0.84l0.17,1.53l0.17,0.24l0.47,0.23l0.09,0.9l0.05,0.14l0.87,1.23l0.17,1.33l-0.09,0.89l0.03,0.15l0.9,2.0l0.43,0.13l1.38,-0.83l0.71,0.92l1.06,0.88l-0.22,0.96l0.0,0.14l0.53,2.2l0.38,1.3l0.15,0.18l0.52,0.26l0.62,2.01l-0.23,1.27l0.02,0.18l0.81,1.76l0.14,0.14l2.69,1.35l3.21,2.21l-0.2,0.4l0.04,0.34l1.39,1.6l0.95,2.78l0.43,0.16l0.79,-0.46l0.85,0.96l0.39,0.05l0.22,-0.15l0.36,2.33l0.09,0.18l1.78,1.63l1.16,1.01l1.9,2.1l0.67,2.05l0.06,1.47l-0.17,1.64l0.03,0.17l1.16,2.22l-0.14,2.28l-0.43,1.24l-0.68,2.44l0.04,1.63l-0.48,1.92l-1.06,2.43l-1.79,1.32l-0.1,0.12l-0.91,2.15l-0.82,1.37l-0.76,2.47l-0.98,1.46l-0.63,2.14l-0.33,2.02l0.1,0.82l-1.21,0.85l-2.71,0.1l-0.13,0.03l-2.31,1.19l-1.21,1.17l-1.34,1.11l-1.89,-1.18l-1.33,-0.46l0.32,-1.24l-0.4,-0.35l-1.46,0.61l-2.06,1.98l-1.99,-0.73l-1.43,-0.46l-1.45,-0.22l-2.32,-0.81l-1.51,-1.67l-0.45,-2.11l-0.6,-1.5l-0.07,-0.11l-1.23,-1.16l-0.16,-0.08l-1.96,-0.28l0.59,-0.99l0.03,-0.24l-0.61,-2.1l-0.54,-0.08l-1.16,1.85l-1.23,0.29l0.73,-0.88l0.06,-0.12l0.37,-1.57l0.93,-1.33l0.05,-0.2l-0.2,-2.07l-0.53,-0.17l-2.01,2.35l-1.52,0.94l-0.12,0.14l-0.82,1.93l-1.5,-0.9l0.07,-1.32l-0.06,-0.2l-1.57,-2.04l-1.15,-0.92l0.3,-0.41l-0.1,-0.44l-3.21,-1.69l-0.13,-0.03l-1.69,-0.08l-2.35,-1.31l-0.16,-0.04l-4.55,0.27l-3.24,0.99l-2.8,0.91l-2.33,-0.18l-0.17,0.03l-2.63,1.41l-2.14,0.64l-0.2,0.19l-0.47,1.42l-0.8,0.99l-1.99,0.06l-1.55,0.24l-2.27,-0.5l-1.79,0.3l-1.71,0.13l-0.19,0.09l-1.38,1.39l-0.58,-0.1l-0.21,0.04l-1.26,0.8l-1.13,0.85l-1.72,-0.1l-1.6,-0.0l-2.58,-1.76l-1.21,-0.49l0.04,-1.19l1.04,-0.32l0.16,-0.12l0.42,-0.64l0.05,-0.19l-0.09,-0.97l0.3,-2.0l-0.28,-1.64l-1.34,-2.84l-0.39,-1.49l0.1,-1.51l-0.04,-0.17l-0.96,-1.72l-0.06,-0.73l-0.09,-0.19l-1.04,-1.01l-0.3,-2.02l-0.05,-0.12l-1.23,-1.83ZM784.95,393.35l2.39,1.01l0.2,0.01l3.26,-0.96l1.19,0.16l0.16,3.19l-0.78,0.95l-0.07,0.16l-0.19,1.83l-0.43,-0.41l-0.44,0.03l-1.61,1.96l-0.4,-0.12l-1.38,-0.09l-1.43,-2.42l-0.37,-2.03l-1.4,-2.53l0.04,-0.94l1.27,0.2Z", "name": "Australia"}, "IL": {"path": "M509.04,199.22l0.71,0.0l0.27,-0.17l0.15,-0.33l0.19,-0.01l0.02,0.73l-0.27,0.34l0.02,0.08l-0.32,0.62l-0.65,-0.27l-0.41,0.19l-0.52,1.85l0.16,0.35l0.14,0.07l-0.17,0.1l-0.14,0.21l-0.11,0.73l0.39,0.33l0.81,-0.26l0.03,0.64l-0.97,3.43l-1.28,-3.67l0.62,-0.78l-0.03,-0.41l0.58,-1.16l0.5,-2.07l0.27,-0.54Z", "name": "Israel"}, "IN": {"path": "M615.84,192.58l2.4,2.97l-0.24,2.17l0.05,0.2l0.94,1.35l-0.06,0.97l-1.46,-0.3l-0.35,0.36l0.7,3.06l0.12,0.18l2.46,1.75l3.11,1.72l-1.23,0.96l-0.1,0.13l-0.97,2.55l0.16,0.38l2.41,1.02l2.37,1.33l3.27,1.52l3.43,0.37l1.37,1.3l0.17,0.08l1.92,0.25l3.0,0.62l2.15,-0.04l0.28,-0.22l0.29,-1.06l0.0,-0.13l-0.32,-1.66l0.16,-0.94l1.0,-0.37l0.23,2.28l0.18,0.24l2.28,1.02l0.2,0.02l1.52,-0.41l2.06,0.18l2.08,-0.08l0.29,-0.27l0.18,-1.66l-0.1,-0.26l-0.53,-0.44l1.38,-0.23l0.15,-0.07l2.26,-2.0l2.75,-1.65l1.97,0.63l0.25,-0.03l1.54,-0.99l0.89,1.28l-0.72,0.97l0.2,0.48l2.49,0.37l0.11,0.61l-0.69,0.39l-0.15,0.3l0.15,1.22l-1.36,-0.37l-0.23,0.03l-3.24,1.86l-0.15,0.28l0.07,1.44l-1.33,2.16l-0.04,0.13l-0.12,1.24l-0.98,1.91l-1.72,-0.53l-0.39,0.28l-0.09,2.66l-0.52,0.83l-0.04,0.23l0.21,0.89l-0.71,0.36l-1.21,-3.85l-0.29,-0.21l-0.69,0.01l-0.29,0.23l-0.28,1.17l-0.84,-0.84l0.6,-1.17l0.97,-0.13l0.23,-0.16l1.15,-2.25l-0.18,-0.42l-1.54,-0.47l-2.3,0.04l-2.13,-0.33l-0.19,-1.63l-0.26,-0.26l-1.13,-0.13l-1.93,-1.13l-0.42,0.13l-0.88,1.82l0.08,0.37l1.47,1.15l-1.21,0.77l-0.1,0.1l-0.56,0.97l0.13,0.42l1.31,0.61l-0.36,1.35l0.01,0.2l0.85,1.95l0.37,2.05l-0.26,0.68l-1.55,-0.02l-3.09,0.54l-0.25,0.32l0.13,1.84l-1.21,1.4l-3.64,1.79l-2.79,3.04l-1.86,1.61l-2.48,1.68l-0.13,0.25l-0.0,1.0l-1.07,0.55l-2.21,0.9l-1.13,0.13l-0.25,0.19l-0.75,1.96l-0.02,0.15l0.52,3.31l0.13,2.03l-1.03,2.35l-0.03,0.12l-0.01,4.03l-1.02,0.1l-0.23,0.15l-1.14,1.93l0.04,0.36l0.44,0.48l-1.83,0.57l-0.18,0.15l-0.81,1.65l-0.74,0.53l-2.14,-2.12l-1.14,-3.47l-0.96,-2.57l-0.9,-1.26l-1.3,-2.38l-0.61,-3.14l-0.44,-1.62l-2.29,-3.56l-1.03,-4.94l-0.74,-3.29l0.01,-3.12l-0.49,-2.51l-0.41,-0.22l-3.56,1.53l-1.59,-0.28l-2.96,-2.87l0.94,-0.74l0.06,-0.41l-0.74,-1.03l-2.73,-2.1l1.35,-1.43l5.38,0.01l0.29,-0.36l-0.5,-2.29l-0.09,-0.15l-1.33,-1.28l-0.27,-1.96l-0.12,-0.2l-1.36,-1.0l2.42,-2.48l2.77,0.2l0.24,-0.1l2.62,-2.85l1.59,-2.8l2.41,-2.74l0.07,-0.2l-0.04,-1.82l2.01,-1.51l-0.01,-0.49l-1.95,-1.33l-0.83,-1.81l-0.82,-2.27l0.98,-0.97l3.64,0.66l2.89,-0.42l0.17,-0.08l2.18,-2.15Z", "name": "India"}, "TZ": {"path": "M505.77,287.58l0.36,0.23l8.95,5.03l0.15,1.3l0.13,0.21l3.4,2.37l-1.07,2.88l-0.02,0.14l0.15,1.42l0.15,0.23l1.47,0.84l0.05,0.42l-0.66,1.44l-0.02,0.18l0.13,0.72l-0.16,1.16l0.03,0.19l0.87,1.57l1.03,2.48l0.12,0.14l0.53,0.32l-1.59,1.18l-2.64,0.95l-1.45,-0.04l-0.2,0.07l-0.81,0.69l-1.64,0.06l-0.68,0.3l-2.9,-0.69l-1.71,0.17l-0.65,-3.18l-0.05,-0.12l-1.35,-1.88l-0.19,-0.12l-2.41,-0.46l-1.38,-0.74l-1.63,-0.44l-0.96,-0.41l-0.95,-0.58l-1.31,-3.09l-1.47,-1.46l-0.45,-1.31l0.24,-1.34l-0.39,-1.99l0.71,-0.08l0.18,-0.09l0.91,-0.91l0.98,-1.31l0.59,-0.5l0.11,-0.24l-0.02,-0.81l-0.08,-0.2l-0.47,-0.5l-0.1,-0.67l0.51,-0.23l0.18,-0.25l0.14,-1.47l-0.05,-0.2l-0.76,-1.09l0.45,-0.15l2.71,0.03l5.01,-0.19Z", "name": "Tanzania"}, "AZ": {"path": "M539.36,175.66l0.16,0.09l1.11,0.2l0.32,-0.15l0.4,-0.71l1.22,-0.99l1.11,1.33l1.26,2.09l0.22,0.14l1.06,0.13l0.28,0.29l-1.46,0.17l-0.26,0.24l-0.43,2.26l-0.39,0.92l-0.85,0.63l-0.12,0.25l0.06,1.2l-0.22,0.05l-1.28,-1.25l0.74,-1.25l-0.03,-0.35l-0.74,-0.86l-0.3,-0.1l-1.05,0.27l-2.49,1.82l-0.04,-1.46l-0.18,-0.27l-1.09,-0.47l-0.8,-0.6l0.53,-0.7l-0.06,-0.42l-1.11,-0.84l0.34,-0.51l-0.11,-0.43l-0.89,-0.48l-0.33,-0.49l0.25,-0.2l1.78,0.81l1.35,0.18l0.25,-0.09l0.34,-0.35l0.02,-0.39l-1.04,-1.36l0.28,-0.18l0.49,0.07l1.65,1.74ZM533.53,180.16l0.63,0.67l0.22,0.09l0.8,-0.0l0.04,0.31l0.66,1.09l-0.94,-0.21l-1.16,-1.24l-0.25,-0.71Z", "name": "Azerbaijan"}, "IE": {"path": "M405.17,135.35l0.36,2.16l-1.78,2.84l-4.28,1.91l-3.02,-0.43l1.81,-3.13l0.02,-0.26l-1.23,-3.26l3.24,-2.56l1.54,-1.32l0.37,1.33l-0.49,1.77l0.3,0.38l1.49,-0.05l1.68,0.63Z", "name": "Ireland"}, "ID": {"path": "M756.56,287.86l0.69,4.02l0.15,0.21l2.59,1.5l0.39,-0.07l2.05,-2.61l2.75,-1.45l2.09,-0.0l2.08,0.85l1.85,0.89l2.52,0.46l0.08,15.44l-1.72,-1.6l-0.15,-0.07l-2.54,-0.51l-0.29,0.1l-0.53,0.62l-2.53,0.06l0.78,-1.51l1.48,-0.66l0.17,-0.34l-0.65,-2.74l-1.23,-2.19l-0.14,-0.13l-4.85,-2.13l-2.09,-0.23l-3.7,-2.28l-0.41,0.1l-0.67,1.11l-0.63,0.14l-0.41,-0.67l-0.01,-1.01l-0.14,-0.25l-1.39,-0.89l2.05,-0.69l1.73,0.05l0.29,-0.39l-0.21,-0.66l-0.29,-0.21l-3.5,-0.0l-0.9,-1.36l-0.19,-0.13l-2.14,-0.44l-0.65,-0.76l2.86,-0.51l1.28,-0.79l3.75,0.96l0.32,0.76ZM758.01,300.37l-0.79,1.04l-0.14,-1.07l0.4,-0.81l0.29,-0.47l0.24,0.31l-0.0,1.0ZM747.45,292.9l0.48,1.02l-1.45,-0.69l-2.09,-0.21l-1.45,0.16l-1.28,-0.07l0.35,-0.81l2.86,-0.1l2.58,0.68ZM741.15,285.69l-0.16,-0.25l-0.72,-3.08l0.47,-1.86l0.35,-0.38l0.1,0.73l0.25,0.26l1.28,0.19l0.18,0.78l-0.11,1.8l-0.96,-0.18l-0.35,0.22l-0.38,1.52l0.05,0.24ZM741.19,285.75l0.76,0.97l-0.11,0.05l-0.65,-1.02ZM739.18,293.52l-0.61,0.54l-1.44,-0.38l-0.25,-0.55l1.93,-0.09l0.36,0.48ZM728.4,295.87l-0.27,-0.07l-2.26,0.89l-0.37,-0.41l0.27,-0.8l-0.09,-0.33l-1.68,-1.37l0.17,-2.29l-0.42,-0.3l-1.67,0.76l-0.17,0.29l0.21,2.92l0.09,3.34l-1.22,0.28l-0.78,-0.54l0.65,-2.1l0.01,-0.14l-0.39,-2.42l-0.29,-0.25l-0.86,-0.02l-0.63,-1.4l0.99,-1.61l0.35,-1.97l1.24,-3.73l0.49,-0.96l1.95,-1.7l1.86,0.69l3.16,0.35l2.92,-0.1l0.17,-0.06l2.24,-1.65l0.11,0.14l-1.8,2.22l-1.72,0.44l-2.41,-0.48l-4.21,0.13l-2.19,0.36l-0.25,0.24l-0.36,1.9l0.08,0.27l2.24,2.23l0.4,0.02l1.29,-1.08l3.19,-0.58l-0.19,0.06l-1.04,1.4l-2.13,0.94l-0.12,0.45l2.26,3.06l-0.37,0.69l0.03,0.32l1.51,1.95ZM728.48,295.97l0.59,0.76l-0.02,1.37l-1.0,0.55l-0.64,-0.58l1.09,-1.84l-0.02,-0.26ZM728.64,286.95l0.79,-0.14l-0.07,0.39l-0.72,-0.24ZM732.38,310.1l-1.89,0.49l-0.06,-0.06l0.17,-0.64l1.0,-1.42l2.14,-0.87l0.1,0.2l0.04,0.58l-1.49,1.72ZM728.26,305.71l-0.17,0.63l-3.53,0.67l-3.02,-0.28l-0.0,-0.42l1.66,-0.44l1.47,0.71l0.16,0.03l1.75,-0.21l1.69,-0.69ZM722.98,310.33l-0.74,0.03l-2.52,-1.35l1.42,-0.3l1.19,0.7l0.72,0.63l-0.06,0.28ZM716.24,305.63l0.66,0.49l0.22,0.06l1.35,-0.18l0.31,0.53l-4.18,0.77l-0.8,-0.01l0.51,-0.86l1.2,-0.02l0.24,-0.12l0.49,-0.65ZM715.84,280.21l0.09,0.34l2.25,1.86l-2.25,0.22l-0.24,0.17l-0.84,1.71l-0.03,0.15l0.1,2.11l-2.27,1.62l-0.13,0.24l-0.06,2.46l-0.74,2.92l-0.02,-0.05l-0.39,-0.16l-2.62,1.04l-0.86,-1.33l-0.23,-0.14l-1.71,-0.14l-1.19,-0.76l-0.25,-0.03l-2.78,0.84l-0.79,-1.05l-0.26,-0.12l-1.61,0.13l-1.8,-0.25l-0.36,-3.13l-0.15,-0.23l-1.18,-0.65l-1.13,-2.02l-0.33,-2.1l0.27,-2.19l1.05,-1.17l0.28,1.12l0.1,0.16l1.71,1.41l0.28,0.05l1.55,-0.49l1.54,0.17l0.23,-0.07l1.4,-1.21l1.05,-0.19l2.3,0.68l0.16,0.0l2.04,-0.53l0.21,-0.19l1.26,-3.41l0.91,-0.82l0.09,-0.14l0.8,-2.64l2.63,0.0l1.71,0.33l-1.19,1.89l0.02,0.34l1.74,2.24l-0.37,1.0ZM692.67,302.0l0.26,0.19l4.8,0.25l0.28,-0.16l0.44,-0.83l4.29,1.12l0.85,1.52l0.23,0.15l3.71,0.45l2.37,1.15l-2.06,0.69l-2.77,-1.0l-2.25,0.07l-2.57,-0.18l-2.31,-0.45l-2.94,-0.97l-1.84,-0.25l-0.13,0.01l-0.97,0.29l-4.34,-0.98l-0.38,-0.94l-0.25,-0.19l-1.76,-0.14l1.31,-1.84l2.81,0.14l1.97,0.96l0.95,0.19l0.28,0.74ZM685.63,299.27l-2.36,0.04l-2.07,-2.05l-3.17,-2.02l-1.06,-1.5l-1.88,-2.02l-1.22,-1.85l-1.9,-3.49l-2.2,-2.11l-0.71,-2.08l-0.94,-1.99l-0.1,-0.12l-2.21,-1.54l-1.35,-2.17l-1.86,-1.39l-2.53,-2.68l-0.14,-0.81l1.22,0.08l3.76,0.47l2.16,2.4l1.94,1.7l1.37,1.04l2.35,2.67l0.22,0.1l2.44,0.04l1.99,1.62l1.42,2.06l0.09,0.09l1.67,1.0l-0.88,1.8l0.11,0.39l1.44,0.87l0.13,0.04l0.68,0.05l0.41,1.62l0.87,1.4l0.22,0.14l1.71,0.21l1.06,1.38l-0.61,3.04l-0.09,3.6Z", "name": "Indonesia"}, "UA": {"path": "M500.54,141.42l0.9,0.13l0.27,-0.11l0.52,-0.62l0.68,0.13l2.43,-0.3l1.32,1.57l-0.45,0.48l-0.07,0.26l0.21,1.03l0.27,0.24l1.85,0.15l0.76,1.22l-0.05,0.55l0.2,0.31l3.18,1.15l0.18,0.01l1.75,-0.47l1.42,1.41l0.22,0.09l1.42,-0.03l3.44,0.99l0.02,0.65l-0.97,1.62l-0.03,0.24l0.52,1.67l-0.29,0.79l-2.24,0.22l-0.14,0.05l-1.29,0.89l-0.13,0.23l-0.07,1.16l-1.75,0.22l-0.12,0.04l-1.6,0.98l-2.27,0.16l-0.12,0.04l-2.16,1.17l-0.16,0.29l0.15,1.94l0.14,0.23l1.23,0.75l0.18,0.04l2.06,-0.15l-0.22,0.51l-2.67,0.54l-3.27,1.72l-1.0,-0.45l0.45,-1.19l-0.19,-0.39l-2.34,-0.78l0.15,-0.2l2.32,-1.0l0.09,-0.49l-0.73,-0.72l-0.15,-0.08l-3.69,-0.75l-0.14,-0.96l-0.35,-0.25l-2.32,0.39l-0.21,0.15l-0.91,1.7l-1.77,2.1l-0.93,-0.44l-0.24,-0.0l-1.05,0.45l-0.48,-0.25l0.13,-0.07l0.14,-0.15l0.43,-1.04l0.67,-0.97l0.04,-0.26l-0.1,-0.31l0.04,-0.02l0.11,0.19l0.24,0.15l1.48,0.09l0.78,-0.25l0.07,-0.53l-0.27,-0.19l0.09,-0.25l-0.08,-0.33l-0.81,-0.74l-0.34,-1.24l-0.14,-0.18l-0.73,-0.42l0.15,-0.87l-0.11,-0.29l-1.13,-0.86l-0.15,-0.06l-0.97,-0.11l-1.79,-0.97l-0.2,-0.03l-1.66,0.32l-0.13,0.06l-0.52,0.41l-0.95,-0.0l-0.23,0.11l-0.56,0.66l-1.74,0.29l-0.79,0.43l-1.01,-0.68l-0.16,-0.05l-1.57,-0.01l-1.52,-0.35l-0.23,0.04l-0.71,0.45l-0.09,-0.43l-0.13,-0.19l-1.18,-0.74l0.38,-1.02l0.53,-0.64l0.35,0.12l0.37,-0.41l-0.57,-1.29l2.1,-2.5l1.16,-0.36l0.2,-0.2l0.27,-0.92l-0.01,-0.2l-1.1,-2.52l0.79,-0.09l0.13,-0.05l1.3,-0.86l1.83,-0.07l2.48,0.26l2.84,0.8l1.91,0.06l0.88,0.45l0.29,-0.01l0.72,-0.44l0.49,0.58l0.25,0.11l2.2,-0.16l0.94,0.3l0.39,-0.26l0.15,-1.57l0.61,-0.59l2.01,-0.19Z", "name": "Ukraine"}, "QA": {"path": "M548.47,221.47l-0.15,-1.72l0.59,-1.23l0.38,-0.16l0.54,0.6l0.04,1.4l-0.47,1.37l-0.41,0.11l-0.53,-0.37Z", "name": "Qatar"}, "MZ": {"path": "M507.71,314.14l1.65,-0.18l2.96,0.7l0.2,-0.02l0.6,-0.29l1.68,-0.06l0.18,-0.07l0.8,-0.69l1.5,0.02l2.74,-0.98l1.74,-1.27l0.25,0.7l-0.1,2.47l0.31,2.27l0.1,3.97l0.42,1.24l-0.7,1.71l-0.94,1.73l-1.52,1.52l-5.06,2.21l-2.88,2.8l-1.01,0.51l-1.72,1.81l-0.99,0.58l-0.15,0.23l-0.21,1.86l0.04,0.19l1.17,1.95l0.47,1.47l0.03,0.74l0.39,0.28l0.05,-0.01l-0.06,2.13l-0.39,1.19l0.1,0.33l0.42,0.32l-0.28,0.83l-0.95,0.86l-2.03,0.88l-3.08,1.49l-1.1,0.99l-0.09,0.28l0.21,1.13l0.21,0.23l0.38,0.11l-0.14,0.89l-1.39,-0.02l-0.17,-0.94l-0.38,-1.23l-0.2,-0.89l0.44,-2.91l-0.01,-0.14l-0.65,-1.88l-1.15,-3.55l2.52,-2.85l0.68,-1.89l0.29,-0.18l0.14,-0.2l0.28,-1.53l-0.03,-0.19l-0.36,-0.7l0.1,-1.83l0.49,-1.84l-0.01,-3.26l-0.14,-0.25l-1.3,-0.83l-0.11,-0.04l-1.08,-0.17l-0.47,-0.55l-0.1,-0.08l-1.16,-0.54l-0.13,-0.03l-1.83,0.04l-0.32,-2.25l7.19,-1.99l1.32,1.12l0.29,0.06l0.55,-0.19l0.75,0.49l0.11,0.81l-0.49,1.11l-0.02,0.15l0.19,1.81l0.09,0.18l1.63,1.59l0.48,-0.1l0.72,-1.68l0.99,-0.49l0.17,-0.29l-0.21,-3.29l-0.04,-0.13l-1.11,-1.92l-0.9,-0.82l-0.21,-0.08l-0.62,0.03l-0.63,-2.98l0.61,-1.67Z", "name": "Mozambique"}}, "height": 440.7063107441331, "projection": {"type": "mill", "centralMeridian": 11.5}, "width": 900.0}); \ No newline at end of file diff --git a/assets/plugins/knob/jquery.knob.js b/assets/plugins/knob/jquery.knob.js deleted file mode 100644 index 5294ffad..00000000 --- a/assets/plugins/knob/jquery.knob.js +++ /dev/null @@ -1,805 +0,0 @@ -/*!jQuery Knob*/ -/** - * Downward compatible, touchable dial - * - * Version: 1.2.11 - * Requires: jQuery v1.7+ - * - * Copyright (c) 2012 Anthony Terrien - * Under MIT License (http://www.opensource.org/licenses/mit-license.php) - * - * Thanks to vor, eskimoblood, spiffistan, FabrizioC - */ -(function (factory) { - if (typeof exports === 'object') { - // CommonJS - module.exports = factory(require('jquery')); - } else if (typeof define === 'function' && define.amd) { - // AMD. Register as an anonymous module. - define(['jquery'], factory); - } else { - // Browser globals - factory(jQuery); - } -}(function ($) { - - /** - * Kontrol library - */ - "use strict"; - - /** - * Definition of globals and core - */ - var k = {}, // kontrol - max = Math.max, - min = Math.min; - - k.c = {}; - k.c.d = $(document); - k.c.t = function (e) { - return e.originalEvent.touches.length - 1; - }; - - /** - * Kontrol Object - * - * Definition of an abstract UI control - * - * Each concrete component must call this one. - * <code> - * k.o.call(this); - * </code> - */ - k.o = function () { - var s = this; - - this.o = null; // array of options - this.$ = null; // jQuery wrapped element - this.i = null; // mixed HTMLInputElement or array of HTMLInputElement - this.g = null; // deprecated 2D graphics context for 'pre-rendering' - this.v = null; // value ; mixed array or integer - this.cv = null; // change value ; not commited value - this.x = 0; // canvas x position - this.y = 0; // canvas y position - this.w = 0; // canvas width - this.h = 0; // canvas height - this.$c = null; // jQuery canvas element - this.c = null; // rendered canvas context - this.t = 0; // touches index - this.isInit = false; - this.fgColor = null; // main color - this.pColor = null; // previous color - this.dH = null; // draw hook - this.cH = null; // change hook - this.eH = null; // cancel hook - this.rH = null; // release hook - this.scale = 1; // scale factor - this.relative = false; - this.relativeWidth = false; - this.relativeHeight = false; - this.$div = null; // component div - - this.run = function () { - var cf = function (e, conf) { - var k; - for (k in conf) { - s.o[k] = conf[k]; - } - s._carve().init(); - s._configure() - ._draw(); - }; - - if (this.$.data('kontroled')) return; - this.$.data('kontroled', true); - - this.extend(); - this.o = $.extend({ - // Config - min: this.$.data('min') !== undefined ? this.$.data('min') : 0, - max: this.$.data('max') !== undefined ? this.$.data('max') : 100, - stopper: true, - readOnly: this.$.data('readonly') || (this.$.attr('readonly') === 'readonly'), - - // UI - cursor: this.$.data('cursor') === true && 30 - || this.$.data('cursor') || 0, - thickness: this.$.data('thickness') - && Math.max(Math.min(this.$.data('thickness'), 1), 0.01) - || 0.35, - lineCap: this.$.data('linecap') || 'butt', - width: this.$.data('width') || 200, - height: this.$.data('height') || 200, - displayInput: this.$.data('displayinput') == null || this.$.data('displayinput'), - displayPrevious: this.$.data('displayprevious'), - fgColor: this.$.data('fgcolor') || '#87CEEB', - inputColor: this.$.data('inputcolor'), - font: this.$.data('font') || 'Arial', - fontWeight: this.$.data('font-weight') || 'bold', - inline: false, - step: this.$.data('step') || 1, - rotation: this.$.data('rotation'), - - // Hooks - draw: null, // function () {} - change: null, // function (value) {} - cancel: null, // function () {} - release: null, // function (value) {} - - // Output formatting, allows to add unit: %, ms ... - format: function(v) { - return v; - }, - parse: function (v) { - return parseFloat(v); - } - }, this.o - ); - - // finalize options - this.o.flip = this.o.rotation === 'anticlockwise' || this.o.rotation === 'acw'; - if (!this.o.inputColor) { - this.o.inputColor = this.o.fgColor; - } - - // routing value - if (this.$.is('fieldset')) { - - // fieldset = array of integer - this.v = {}; - this.i = this.$.find('input'); - this.i.each(function(k) { - var $this = $(this); - s.i[k] = $this; - s.v[k] = s.o.parse($this.val()); - - $this.bind( - 'change blur', - function () { - var val = {}; - val[k] = $this.val(); - s.val(s._validate(val)); - } - ); - }); - this.$.find('legend').remove(); - } else { - - // input = integer - this.i = this.$; - this.v = this.o.parse(this.$.val()); - this.v === '' && (this.v = this.o.min); - this.$.bind( - 'change blur', - function () { - s.val(s._validate(s.o.parse(s.$.val()))); - } - ); - - } - - !this.o.displayInput && this.$.hide(); - - // adds needed DOM elements (canvas, div) - this.$c = $(document.createElement('canvas')).attr({ - width: this.o.width, - height: this.o.height - }); - - // wraps all elements in a div - // add to DOM before Canvas init is triggered - this.$div = $('<div style="' - + (this.o.inline ? 'display:inline;' : '') - + 'width:' + this.o.width + 'px;height:' + this.o.height + 'px;' - + '"></div>'); - - this.$.wrap(this.$div).before(this.$c); - this.$div = this.$.parent(); - - if (typeof G_vmlCanvasManager !== 'undefined') { - G_vmlCanvasManager.initElement(this.$c[0]); - } - - this.c = this.$c[0].getContext ? this.$c[0].getContext('2d') : null; - - if (!this.c) { - throw { - name: "CanvasNotSupportedException", - message: "Canvas not supported. Please use excanvas on IE8.0.", - toString: function(){return this.name + ": " + this.message} - } - } - - // hdpi support - this.scale = (window.devicePixelRatio || 1) / ( - this.c.webkitBackingStorePixelRatio || - this.c.mozBackingStorePixelRatio || - this.c.msBackingStorePixelRatio || - this.c.oBackingStorePixelRatio || - this.c.backingStorePixelRatio || 1 - ); - - // detects relative width / height - this.relativeWidth = this.o.width % 1 !== 0 - && this.o.width.indexOf('%'); - this.relativeHeight = this.o.height % 1 !== 0 - && this.o.height.indexOf('%'); - this.relative = this.relativeWidth || this.relativeHeight; - - // computes size and carves the component - this._carve(); - - // prepares props for transaction - if (this.v instanceof Object) { - this.cv = {}; - this.copy(this.v, this.cv); - } else { - this.cv = this.v; - } - - // binds configure event - this.$ - .bind("configure", cf) - .parent() - .bind("configure", cf); - - // finalize init - this._listen() - ._configure() - ._xy() - .init(); - - this.isInit = true; - - this.$.val(this.o.format(this.v)); - this._draw(); - - return this; - }; - - this._carve = function() { - if (this.relative) { - var w = this.relativeWidth ? - this.$div.parent().width() * - parseInt(this.o.width) / 100 - : this.$div.parent().width(), - h = this.relativeHeight ? - this.$div.parent().height() * - parseInt(this.o.height) / 100 - : this.$div.parent().height(); - - // apply relative - this.w = this.h = Math.min(w, h); - } else { - this.w = this.o.width; - this.h = this.o.height; - } - - // finalize div - this.$div.css({ - 'width': this.w + 'px', - 'height': this.h + 'px' - }); - - // finalize canvas with computed width - this.$c.attr({ - width: this.w, - height: this.h - }); - - // scaling - if (this.scale !== 1) { - this.$c[0].width = this.$c[0].width * this.scale; - this.$c[0].height = this.$c[0].height * this.scale; - this.$c.width(this.w); - this.$c.height(this.h); - } - - return this; - } - - this._draw = function () { - - // canvas pre-rendering - var d = true; - - s.g = s.c; - - s.clear(); - - s.dH && (d = s.dH()); - - d !== false && s.draw(); - }; - - this._touch = function (e) { - var touchMove = function (e) { - var v = s.xy2val( - e.originalEvent.touches[s.t].pageX, - e.originalEvent.touches[s.t].pageY - ); - - if (v == s.cv) return; - - if (s.cH && s.cH(v) === false) return; - - s.change(s._validate(v)); - s._draw(); - }; - - // get touches index - this.t = k.c.t(e); - - // First touch - touchMove(e); - - // Touch events listeners - k.c.d - .bind("touchmove.k", touchMove) - .bind( - "touchend.k", - function () { - k.c.d.unbind('touchmove.k touchend.k'); - s.val(s.cv); - } - ); - - return this; - }; - - this._mouse = function (e) { - var mouseMove = function (e) { - var v = s.xy2val(e.pageX, e.pageY); - - if (v == s.cv) return; - - if (s.cH && (s.cH(v) === false)) return; - - s.change(s._validate(v)); - s._draw(); - }; - - // First click - mouseMove(e); - - // Mouse events listeners - k.c.d - .bind("mousemove.k", mouseMove) - .bind( - // Escape key cancel current change - "keyup.k", - function (e) { - if (e.keyCode === 27) { - k.c.d.unbind("mouseup.k mousemove.k keyup.k"); - - if (s.eH && s.eH() === false) - return; - - s.cancel(); - } - } - ) - .bind( - "mouseup.k", - function (e) { - k.c.d.unbind('mousemove.k mouseup.k keyup.k'); - s.val(s.cv); - } - ); - - return this; - }; - - this._xy = function () { - var o = this.$c.offset(); - this.x = o.left; - this.y = o.top; - - return this; - }; - - this._listen = function () { - if (!this.o.readOnly) { - this.$c - .bind( - "mousedown", - function (e) { - e.preventDefault(); - s._xy()._mouse(e); - } - ) - .bind( - "touchstart", - function (e) { - e.preventDefault(); - s._xy()._touch(e); - } - ); - - this.listen(); - } else { - this.$.attr('readonly', 'readonly'); - } - - if (this.relative) { - $(window).resize(function() { - s._carve().init(); - s._draw(); - }); - } - - return this; - }; - - this._configure = function () { - - // Hooks - if (this.o.draw) this.dH = this.o.draw; - if (this.o.change) this.cH = this.o.change; - if (this.o.cancel) this.eH = this.o.cancel; - if (this.o.release) this.rH = this.o.release; - - if (this.o.displayPrevious) { - this.pColor = this.h2rgba(this.o.fgColor, "0.4"); - this.fgColor = this.h2rgba(this.o.fgColor, "0.6"); - } else { - this.fgColor = this.o.fgColor; - } - - return this; - }; - - this._clear = function () { - this.$c[0].width = this.$c[0].width; - }; - - this._validate = function (v) { - var val = (~~ (((v < 0) ? -0.5 : 0.5) + (v/this.o.step))) * this.o.step; - return Math.round(val * 100) / 100; - }; - - // Abstract methods - this.listen = function () {}; // on start, one time - this.extend = function () {}; // each time configure triggered - this.init = function () {}; // each time configure triggered - this.change = function (v) {}; // on change - this.val = function (v) {}; // on release - this.xy2val = function (x, y) {}; // - this.draw = function () {}; // on change / on release - this.clear = function () { this._clear(); }; - - // Utils - this.h2rgba = function (h, a) { - var rgb; - h = h.substring(1,7) - rgb = [ - parseInt(h.substring(0,2), 16), - parseInt(h.substring(2,4), 16), - parseInt(h.substring(4,6), 16) - ]; - - return "rgba(" + rgb[0] + "," + rgb[1] + "," + rgb[2] + "," + a + ")"; - }; - - this.copy = function (f, t) { - for (var i in f) { - t[i] = f[i]; - } - }; - }; - - - /** - * k.Dial - */ - k.Dial = function () { - k.o.call(this); - - this.startAngle = null; - this.xy = null; - this.radius = null; - this.lineWidth = null; - this.cursorExt = null; - this.w2 = null; - this.PI2 = 2*Math.PI; - - this.extend = function () { - this.o = $.extend({ - bgColor: this.$.data('bgcolor') || '#EEEEEE', - angleOffset: this.$.data('angleoffset') || 0, - angleArc: this.$.data('anglearc') || 360, - inline: true - }, this.o); - }; - - this.val = function (v, triggerRelease) { - if (null != v) { - - // reverse format - v = this.o.parse(v); - - if (triggerRelease !== false - && v != this.v - && this.rH - && this.rH(v) === false) { return; } - - this.cv = this.o.stopper ? max(min(v, this.o.max), this.o.min) : v; - this.v = this.cv; - this.$.val(this.o.format(this.v)); - this._draw(); - } else { - return this.v; - } - }; - - this.xy2val = function (x, y) { - var a, ret; - - a = Math.atan2( - x - (this.x + this.w2), - - (y - this.y - this.w2) - ) - this.angleOffset; - - if (this.o.flip) { - a = this.angleArc - a - this.PI2; - } - - if (this.angleArc != this.PI2 && (a < 0) && (a > -0.5)) { - - // if isset angleArc option, set to min if .5 under min - a = 0; - } else if (a < 0) { - a += this.PI2; - } - - ret = (a * (this.o.max - this.o.min) / this.angleArc) + this.o.min; - - this.o.stopper && (ret = max(min(ret, this.o.max), this.o.min)); - - return ret; - }; - - this.listen = function () { - - // bind MouseWheel - var s = this, mwTimerStop, - mwTimerRelease, - mw = function (e) { - e.preventDefault(); - - var ori = e.originalEvent, - deltaX = ori.detail || ori.wheelDeltaX, - deltaY = ori.detail || ori.wheelDeltaY, - v = s._validate(s.o.parse(s.$.val())) - + ( - deltaX > 0 || deltaY > 0 - ? s.o.step - : deltaX < 0 || deltaY < 0 ? -s.o.step : 0 - ); - - v = max(min(v, s.o.max), s.o.min); - - s.val(v, false); - - if (s.rH) { - // Handle mousewheel stop - clearTimeout(mwTimerStop); - mwTimerStop = setTimeout(function () { - s.rH(v); - mwTimerStop = null; - }, 100); - - // Handle mousewheel releases - if (!mwTimerRelease) { - mwTimerRelease = setTimeout(function () { - if (mwTimerStop) - s.rH(v); - mwTimerRelease = null; - }, 200); - } - } - }, - kval, - to, - m = 1, - kv = { - 37: -s.o.step, - 38: s.o.step, - 39: s.o.step, - 40: -s.o.step - }; - - this.$ - .bind( - "keydown", - function (e) { - var kc = e.keyCode; - - // numpad support - if (kc >= 96 && kc <= 105) { - kc = e.keyCode = kc - 48; - } - - kval = parseInt(String.fromCharCode(kc)); - - if (isNaN(kval)) { - (kc !== 13) // enter - && kc !== 8 // bs - && kc !== 9 // tab - && kc !== 189 // - - && (kc !== 190 - || s.$.val().match(/\./)) // . allowed once - && e.preventDefault(); - - // arrows - if ($.inArray(kc,[37,38,39,40]) > -1) { - e.preventDefault(); - - var v = s.o.parse(s.$.val()) + kv[kc] * m; - s.o.stopper && (v = max(min(v, s.o.max), s.o.min)); - - s.change(s._validate(v)); - s._draw(); - - // long time keydown speed-up - to = window.setTimeout(function () { - m *= 2; - }, 30); - } - } - } - ) - .bind( - "keyup", - function (e) { - if (isNaN(kval)) { - if (to) { - window.clearTimeout(to); - to = null; - m = 1; - s.val(s.$.val()); - } - } else { - // kval postcond - (s.$.val() > s.o.max && s.$.val(s.o.max)) - || (s.$.val() < s.o.min && s.$.val(s.o.min)); - } - } - ); - - this.$c.bind("mousewheel DOMMouseScroll", mw); - this.$.bind("mousewheel DOMMouseScroll", mw) - }; - - this.init = function () { - if (this.v < this.o.min - || this.v > this.o.max) { this.v = this.o.min; } - - this.$.val(this.v); - this.w2 = this.w / 2; - this.cursorExt = this.o.cursor / 100; - this.xy = this.w2 * this.scale; - this.lineWidth = this.xy * this.o.thickness; - this.lineCap = this.o.lineCap; - this.radius = this.xy - this.lineWidth / 2; - - this.o.angleOffset - && (this.o.angleOffset = isNaN(this.o.angleOffset) ? 0 : this.o.angleOffset); - - this.o.angleArc - && (this.o.angleArc = isNaN(this.o.angleArc) ? this.PI2 : this.o.angleArc); - - // deg to rad - this.angleOffset = this.o.angleOffset * Math.PI / 180; - this.angleArc = this.o.angleArc * Math.PI / 180; - - // compute start and end angles - this.startAngle = 1.5 * Math.PI + this.angleOffset; - this.endAngle = 1.5 * Math.PI + this.angleOffset + this.angleArc; - - var s = max( - String(Math.abs(this.o.max)).length, - String(Math.abs(this.o.min)).length, - 2 - ) + 2; - - this.o.displayInput - && this.i.css({ - 'width' : ((this.w / 2 + 4) >> 0) + 'px', - 'height' : ((this.w / 3) >> 0) + 'px', - 'position' : 'absolute', - 'vertical-align' : 'middle', - 'margin-top' : ((this.w / 3) >> 0) + 'px', - 'margin-left' : '-' + ((this.w * 3 / 4 + 2) >> 0) + 'px', - 'border' : 0, - 'background' : 'none', - 'font' : this.o.fontWeight + ' ' + ((this.w / s) >> 0) + 'px ' + this.o.font, - 'text-align' : 'center', - 'color' : this.o.inputColor || this.o.fgColor, - 'padding' : '0px', - '-webkit-appearance': 'none' - }) || this.i.css({ - 'width': '0px', - 'visibility': 'hidden' - }); - }; - - this.change = function (v) { - this.cv = v; - this.$.val(this.o.format(v)); - }; - - this.angle = function (v) { - return (v - this.o.min) * this.angleArc / (this.o.max - this.o.min); - }; - - this.arc = function (v) { - var sa, ea; - v = this.angle(v); - if (this.o.flip) { - sa = this.endAngle + 0.00001; - ea = sa - v - 0.00001; - } else { - sa = this.startAngle - 0.00001; - ea = sa + v + 0.00001; - } - this.o.cursor - && (sa = ea - this.cursorExt) - && (ea = ea + this.cursorExt); - - return { - s: sa, - e: ea, - d: this.o.flip && !this.o.cursor - }; - }; - - this.draw = function () { - var c = this.g, // context - a = this.arc(this.cv), // Arc - pa, // Previous arc - r = 1; - - c.lineWidth = this.lineWidth; - c.lineCap = this.lineCap; - - if (this.o.bgColor !== "none") { - c.beginPath(); - c.strokeStyle = this.o.bgColor; - c.arc(this.xy, this.xy, this.radius, this.endAngle - 0.00001, this.startAngle + 0.00001, true); - c.stroke(); - } - - if (this.o.displayPrevious) { - pa = this.arc(this.v); - c.beginPath(); - c.strokeStyle = this.pColor; - c.arc(this.xy, this.xy, this.radius, pa.s, pa.e, pa.d); - c.stroke(); - r = this.cv == this.v; - } - - c.beginPath(); - c.strokeStyle = r ? this.o.fgColor : this.fgColor ; - c.arc(this.xy, this.xy, this.radius, a.s, a.e, a.d); - c.stroke(); - }; - - this.cancel = function () { - this.val(this.v); - }; - }; - - $.fn.dial = $.fn.knob = function (o) { - return this.each( - function () { - var d = new k.Dial(); - d.o = o; - d.$ = $(this); - d.run(); - } - ).parent(); - }; - -})); diff --git a/assets/plugins/morris/morris.css b/assets/plugins/morris/morris.css deleted file mode 100644 index ed0b490c..00000000 --- a/assets/plugins/morris/morris.css +++ /dev/null @@ -1,2 +0,0 @@ -.morris-hover{position:absolute;z-index:1090;}.morris-hover.morris-default-style{border-radius:10px;padding:6px;color:#f9f9f9;background:rgba(0, 0, 0, 0.8);border:solid 2px rgba(0, 0, 0, 0.9);font-weight: 600;font-size:14px;text-align:center;}.morris-hover.morris-default-style .morris-hover-row-label{font-weight:bold;margin:0.25em 0;} -.morris-hover.morris-default-style .morris-hover-point{white-space:nowrap;margin:0.1em 0;} diff --git a/assets/plugins/morris/morris.js b/assets/plugins/morris/morris.js deleted file mode 100644 index 16648323..00000000 --- a/assets/plugins/morris/morris.js +++ /dev/null @@ -1,1892 +0,0 @@ -/* @license -morris.js v0.5.0 -Copyright 2014 Olly Smith All rights reserved. -Licensed under the BSD-2-Clause License. -*/ - - -(function() { - var $, Morris, minutesSpecHelper, secondsSpecHelper, - __slice = [].slice, - __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, - __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, - __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }; - - Morris = window.Morris = {}; - - $ = jQuery; - - Morris.EventEmitter = (function() { - function EventEmitter() {} - - EventEmitter.prototype.on = function(name, handler) { - if (this.handlers == null) { - this.handlers = {}; - } - if (this.handlers[name] == null) { - this.handlers[name] = []; - } - this.handlers[name].push(handler); - return this; - }; - - EventEmitter.prototype.fire = function() { - var args, handler, name, _i, _len, _ref, _results; - name = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : []; - if ((this.handlers != null) && (this.handlers[name] != null)) { - _ref = this.handlers[name]; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - handler = _ref[_i]; - _results.push(handler.apply(null, args)); - } - return _results; - } - }; - - return EventEmitter; - - })(); - - Morris.commas = function(num) { - var absnum, intnum, ret, strabsnum; - if (num != null) { - ret = num < 0 ? "-" : ""; - absnum = Math.abs(num); - intnum = Math.floor(absnum).toFixed(0); - ret += intnum.replace(/(?=(?:\d{3})+$)(?!^)/g, ','); - strabsnum = absnum.toString(); - if (strabsnum.length > intnum.length) { - ret += strabsnum.slice(intnum.length); - } - return ret; - } else { - return '-'; - } - }; - - Morris.pad2 = function(number) { - return (number < 10 ? '0' : '') + number; - }; - - Morris.Grid = (function(_super) { - __extends(Grid, _super); - - function Grid(options) { - this.resizeHandler = __bind(this.resizeHandler, this); - var _this = this; - if (typeof options.element === 'string') { - this.el = $(document.getElementById(options.element)); - } else { - this.el = $(options.element); - } - if ((this.el == null) || this.el.length === 0) { - throw new Error("Graph container element not found"); - } - if (this.el.css('position') === 'static') { - this.el.css('position', 'relative'); - } - this.options = $.extend({}, this.gridDefaults, this.defaults || {}, options); - if (typeof this.options.units === 'string') { - this.options.postUnits = options.units; - } - this.raphael = new Raphael(this.el[0]); - this.elementWidth = null; - this.elementHeight = null; - this.dirty = false; - this.selectFrom = null; - if (this.init) { - this.init(); - } - this.setData(this.options.data); - this.el.bind('mousemove', function(evt) { - var left, offset, right, width, x; - offset = _this.el.offset(); - x = evt.pageX - offset.left; - if (_this.selectFrom) { - left = _this.data[_this.hitTest(Math.min(x, _this.selectFrom))]._x; - right = _this.data[_this.hitTest(Math.max(x, _this.selectFrom))]._x; - width = right - left; - return _this.selectionRect.attr({ - x: left, - width: width - }); - } else { - return _this.fire('hovermove', x, evt.pageY - offset.top); - } - }); - this.el.bind('mouseleave', function(evt) { - if (_this.selectFrom) { - _this.selectionRect.hide(); - _this.selectFrom = null; - } - return _this.fire('hoverout'); - }); - this.el.bind('touchstart touchmove touchend', function(evt) { - var offset, touch; - touch = evt.originalEvent.touches[0] || evt.originalEvent.changedTouches[0]; - offset = _this.el.offset(); - return _this.fire('hovermove', touch.pageX - offset.left, touch.pageY - offset.top); - }); - this.el.bind('click', function(evt) { - var offset; - offset = _this.el.offset(); - return _this.fire('gridclick', evt.pageX - offset.left, evt.pageY - offset.top); - }); - if (this.options.rangeSelect) { - this.selectionRect = this.raphael.rect(0, 0, 0, this.el.innerHeight()).attr({ - fill: this.options.rangeSelectColor, - stroke: false - }).toBack().hide(); - this.el.bind('mousedown', function(evt) { - var offset; - offset = _this.el.offset(); - return _this.startRange(evt.pageX - offset.left); - }); - this.el.bind('mouseup', function(evt) { - var offset; - offset = _this.el.offset(); - _this.endRange(evt.pageX - offset.left); - return _this.fire('hovermove', evt.pageX - offset.left, evt.pageY - offset.top); - }); - } - if (this.options.resize) { - $(window).bind('resize', function(evt) { - if (_this.timeoutId != null) { - window.clearTimeout(_this.timeoutId); - } - return _this.timeoutId = window.setTimeout(_this.resizeHandler, 100); - }); - } - this.el.css('-webkit-tap-highlight-color', 'rgba(0,0,0,0)'); - if (this.postInit) { - this.postInit(); - } - } - - Grid.prototype.gridDefaults = { - dateFormat: null, - axes: true, - grid: true, - gridLineColor: '#aaa', - gridStrokeWidth: 0.5, - gridTextColor: '#888', - gridTextSize: 12, - gridTextFamily: 'sans-serif', - gridTextWeight: 'normal', - hideHover: false, - yLabelFormat: null, - xLabelAngle: 0, - numLines: 5, - padding: 25, - parseTime: true, - postUnits: '', - preUnits: '', - ymax: 'auto', - ymin: 'auto 0', - goals: [], - goalStrokeWidth: 1.0, - goalLineColors: ['#666633', '#999966', '#cc6666', '#663333'], - events: [], - eventStrokeWidth: 1.0, - eventLineColors: ['#005a04', '#ccffbb', '#3a5f0b', '#005502'], - rangeSelect: null, - rangeSelectColor: '#eef', - resize: false - }; - - Grid.prototype.setData = function(data, redraw) { - var e, idx, index, maxGoal, minGoal, ret, row, step, total, y, ykey, ymax, ymin, yval, _ref; - if (redraw == null) { - redraw = true; - } - this.options.data = data; - if ((data == null) || data.length === 0) { - this.data = []; - this.raphael.clear(); - if (this.hover != null) { - this.hover.hide(); - } - return; - } - ymax = this.cumulative ? 0 : null; - ymin = this.cumulative ? 0 : null; - if (this.options.goals.length > 0) { - minGoal = Math.min.apply(Math, this.options.goals); - maxGoal = Math.max.apply(Math, this.options.goals); - ymin = ymin != null ? Math.min(ymin, minGoal) : minGoal; - ymax = ymax != null ? Math.max(ymax, maxGoal) : maxGoal; - } - this.data = (function() { - var _i, _len, _results; - _results = []; - for (index = _i = 0, _len = data.length; _i < _len; index = ++_i) { - row = data[index]; - ret = { - src: row - }; - ret.label = row[this.options.xkey]; - if (this.options.parseTime) { - ret.x = Morris.parseDate(ret.label); - if (this.options.dateFormat) { - ret.label = this.options.dateFormat(ret.x); - } else if (typeof ret.label === 'number') { - ret.label = new Date(ret.label).toString(); - } - } else { - ret.x = index; - if (this.options.xLabelFormat) { - ret.label = this.options.xLabelFormat(ret); - } - } - total = 0; - ret.y = (function() { - var _j, _len1, _ref, _results1; - _ref = this.options.ykeys; - _results1 = []; - for (idx = _j = 0, _len1 = _ref.length; _j < _len1; idx = ++_j) { - ykey = _ref[idx]; - yval = row[ykey]; - if (typeof yval === 'string') { - yval = parseFloat(yval); - } - if ((yval != null) && typeof yval !== 'number') { - yval = null; - } - if (yval != null) { - if (this.cumulative) { - total += yval; - } else { - if (ymax != null) { - ymax = Math.max(yval, ymax); - ymin = Math.min(yval, ymin); - } else { - ymax = ymin = yval; - } - } - } - if (this.cumulative && (total != null)) { - ymax = Math.max(total, ymax); - ymin = Math.min(total, ymin); - } - _results1.push(yval); - } - return _results1; - }).call(this); - _results.push(ret); - } - return _results; - }).call(this); - if (this.options.parseTime) { - this.data = this.data.sort(function(a, b) { - return (a.x > b.x) - (b.x > a.x); - }); - } - this.xmin = this.data[0].x; - this.xmax = this.data[this.data.length - 1].x; - this.events = []; - if (this.options.events.length > 0) { - if (this.options.parseTime) { - this.events = (function() { - var _i, _len, _ref, _results; - _ref = this.options.events; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - e = _ref[_i]; - _results.push(Morris.parseDate(e)); - } - return _results; - }).call(this); - } else { - this.events = this.options.events; - } - this.xmax = Math.max(this.xmax, Math.max.apply(Math, this.events)); - this.xmin = Math.min(this.xmin, Math.min.apply(Math, this.events)); - } - if (this.xmin === this.xmax) { - this.xmin -= 1; - this.xmax += 1; - } - this.ymin = this.yboundary('min', ymin); - this.ymax = this.yboundary('max', ymax); - if (this.ymin === this.ymax) { - if (ymin) { - this.ymin -= 1; - } - this.ymax += 1; - } - if (((_ref = this.options.axes) === true || _ref === 'both' || _ref === 'y') || this.options.grid === true) { - if (this.options.ymax === this.gridDefaults.ymax && this.options.ymin === this.gridDefaults.ymin) { - this.grid = this.autoGridLines(this.ymin, this.ymax, this.options.numLines); - this.ymin = Math.min(this.ymin, this.grid[0]); - this.ymax = Math.max(this.ymax, this.grid[this.grid.length - 1]); - } else { - step = (this.ymax - this.ymin) / (this.options.numLines - 1); - this.grid = (function() { - var _i, _ref1, _ref2, _results; - _results = []; - for (y = _i = _ref1 = this.ymin, _ref2 = this.ymax; step > 0 ? _i <= _ref2 : _i >= _ref2; y = _i += step) { - _results.push(y); - } - return _results; - }).call(this); - } - } - this.dirty = true; - if (redraw) { - return this.redraw(); - } - }; - - Grid.prototype.yboundary = function(boundaryType, currentValue) { - var boundaryOption, suggestedValue; - boundaryOption = this.options["y" + boundaryType]; - if (typeof boundaryOption === 'string') { - if (boundaryOption.slice(0, 4) === 'auto') { - if (boundaryOption.length > 5) { - suggestedValue = parseInt(boundaryOption.slice(5), 10); - if (currentValue == null) { - return suggestedValue; - } - return Math[boundaryType](currentValue, suggestedValue); - } else { - if (currentValue != null) { - return currentValue; - } else { - return 0; - } - } - } else { - return parseInt(boundaryOption, 10); - } - } else { - return boundaryOption; - } - }; - - Grid.prototype.autoGridLines = function(ymin, ymax, nlines) { - var gmax, gmin, grid, smag, span, step, unit, y, ymag; - span = ymax - ymin; - ymag = Math.floor(Math.log(span) / Math.log(10)); - unit = Math.pow(10, ymag); - gmin = Math.floor(ymin / unit) * unit; - gmax = Math.ceil(ymax / unit) * unit; - step = (gmax - gmin) / (nlines - 1); - if (unit === 1 && step > 1 && Math.ceil(step) !== step) { - step = Math.ceil(step); - gmax = gmin + step * (nlines - 1); - } - if (gmin < 0 && gmax > 0) { - gmin = Math.floor(ymin / step) * step; - gmax = Math.ceil(ymax / step) * step; - } - if (step < 1) { - smag = Math.floor(Math.log(step) / Math.log(10)); - grid = (function() { - var _i, _results; - _results = []; - for (y = _i = gmin; step > 0 ? _i <= gmax : _i >= gmax; y = _i += step) { - _results.push(parseFloat(y.toFixed(1 - smag))); - } - return _results; - })(); - } else { - grid = (function() { - var _i, _results; - _results = []; - for (y = _i = gmin; step > 0 ? _i <= gmax : _i >= gmax; y = _i += step) { - _results.push(y); - } - return _results; - })(); - } - return grid; - }; - - Grid.prototype._calc = function() { - var bottomOffsets, gridLine, h, i, w, yLabelWidths, _ref, _ref1; - w = this.el.width(); - h = this.el.height(); - if (this.elementWidth !== w || this.elementHeight !== h || this.dirty) { - this.elementWidth = w; - this.elementHeight = h; - this.dirty = false; - this.left = this.options.padding; - this.right = this.elementWidth - this.options.padding; - this.top = this.options.padding; - this.bottom = this.elementHeight - this.options.padding; - if ((_ref = this.options.axes) === true || _ref === 'both' || _ref === 'y') { - yLabelWidths = (function() { - var _i, _len, _ref1, _results; - _ref1 = this.grid; - _results = []; - for (_i = 0, _len = _ref1.length; _i < _len; _i++) { - gridLine = _ref1[_i]; - _results.push(this.measureText(this.yAxisFormat(gridLine)).width); - } - return _results; - }).call(this); - this.left += Math.max.apply(Math, yLabelWidths); - } - if ((_ref1 = this.options.axes) === true || _ref1 === 'both' || _ref1 === 'x') { - bottomOffsets = (function() { - var _i, _ref2, _results; - _results = []; - for (i = _i = 0, _ref2 = this.data.length; 0 <= _ref2 ? _i < _ref2 : _i > _ref2; i = 0 <= _ref2 ? ++_i : --_i) { - _results.push(this.measureText(this.data[i].text, -this.options.xLabelAngle).height); - } - return _results; - }).call(this); - this.bottom -= Math.max.apply(Math, bottomOffsets); - } - this.width = Math.max(1, this.right - this.left); - this.height = Math.max(1, this.bottom - this.top); - this.dx = this.width / (this.xmax - this.xmin); - this.dy = this.height / (this.ymax - this.ymin); - if (this.calc) { - return this.calc(); - } - } - }; - - Grid.prototype.transY = function(y) { - return this.bottom - (y - this.ymin) * this.dy; - }; - - Grid.prototype.transX = function(x) { - if (this.data.length === 1) { - return (this.left + this.right) / 2; - } else { - return this.left + (x - this.xmin) * this.dx; - } - }; - - Grid.prototype.redraw = function() { - this.raphael.clear(); - this._calc(); - this.drawGrid(); - this.drawGoals(); - this.drawEvents(); - if (this.draw) { - return this.draw(); - } - }; - - Grid.prototype.measureText = function(text, angle) { - var ret, tt; - if (angle == null) { - angle = 0; - } - tt = this.raphael.text(100, 100, text).attr('font-size', this.options.gridTextSize).attr('font-family', this.options.gridTextFamily).attr('font-weight', this.options.gridTextWeight).rotate(angle); - ret = tt.getBBox(); - tt.remove(); - return ret; - }; - - Grid.prototype.yAxisFormat = function(label) { - return this.yLabelFormat(label); - }; - - Grid.prototype.yLabelFormat = function(label) { - if (typeof this.options.yLabelFormat === 'function') { - return this.options.yLabelFormat(label); - } else { - return "" + this.options.preUnits + (Morris.commas(label)) + this.options.postUnits; - } - }; - - Grid.prototype.drawGrid = function() { - var lineY, y, _i, _len, _ref, _ref1, _ref2, _results; - if (this.options.grid === false && ((_ref = this.options.axes) !== true && _ref !== 'both' && _ref !== 'y')) { - return; - } - _ref1 = this.grid; - _results = []; - for (_i = 0, _len = _ref1.length; _i < _len; _i++) { - lineY = _ref1[_i]; - y = this.transY(lineY); - if ((_ref2 = this.options.axes) === true || _ref2 === 'both' || _ref2 === 'y') { - this.drawYAxisLabel(this.left - this.options.padding / 2, y, this.yAxisFormat(lineY)); - } - if (this.options.grid) { - _results.push(this.drawGridLine("M" + this.left + "," + y + "H" + (this.left + this.width))); - } else { - _results.push(void 0); - } - } - return _results; - }; - - Grid.prototype.drawGoals = function() { - var color, goal, i, _i, _len, _ref, _results; - _ref = this.options.goals; - _results = []; - for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) { - goal = _ref[i]; - color = this.options.goalLineColors[i % this.options.goalLineColors.length]; - _results.push(this.drawGoal(goal, color)); - } - return _results; - }; - - Grid.prototype.drawEvents = function() { - var color, event, i, _i, _len, _ref, _results; - _ref = this.events; - _results = []; - for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) { - event = _ref[i]; - color = this.options.eventLineColors[i % this.options.eventLineColors.length]; - _results.push(this.drawEvent(event, color)); - } - return _results; - }; - - Grid.prototype.drawGoal = function(goal, color) { - return this.raphael.path("M" + this.left + "," + (this.transY(goal)) + "H" + this.right).attr('stroke', color).attr('stroke-width', this.options.goalStrokeWidth); - }; - - Grid.prototype.drawEvent = function(event, color) { - return this.raphael.path("M" + (this.transX(event)) + "," + this.bottom + "V" + this.top).attr('stroke', color).attr('stroke-width', this.options.eventStrokeWidth); - }; - - Grid.prototype.drawYAxisLabel = function(xPos, yPos, text) { - return this.raphael.text(xPos, yPos, text).attr('font-size', this.options.gridTextSize).attr('font-family', this.options.gridTextFamily).attr('font-weight', this.options.gridTextWeight).attr('fill', this.options.gridTextColor).attr('text-anchor', 'end'); - }; - - Grid.prototype.drawGridLine = function(path) { - return this.raphael.path(path).attr('stroke', this.options.gridLineColor).attr('stroke-width', this.options.gridStrokeWidth); - }; - - Grid.prototype.startRange = function(x) { - this.hover.hide(); - this.selectFrom = x; - return this.selectionRect.attr({ - x: x, - width: 0 - }).show(); - }; - - Grid.prototype.endRange = function(x) { - var end, start; - if (this.selectFrom) { - start = Math.min(this.selectFrom, x); - end = Math.max(this.selectFrom, x); - this.options.rangeSelect.call(this.el, { - start: this.data[this.hitTest(start)].x, - end: this.data[this.hitTest(end)].x - }); - return this.selectFrom = null; - } - }; - - Grid.prototype.resizeHandler = function() { - this.timeoutId = null; - this.raphael.setSize(this.el.width(), this.el.height()); - return this.redraw(); - }; - - return Grid; - - })(Morris.EventEmitter); - - Morris.parseDate = function(date) { - var isecs, m, msecs, n, o, offsetmins, p, q, r, ret, secs; - if (typeof date === 'number') { - return date; - } - m = date.match(/^(\d+) Q(\d)$/); - n = date.match(/^(\d+)-(\d+)$/); - o = date.match(/^(\d+)-(\d+)-(\d+)$/); - p = date.match(/^(\d+) W(\d+)$/); - q = date.match(/^(\d+)-(\d+)-(\d+)[ T](\d+):(\d+)(Z|([+-])(\d\d):?(\d\d))?$/); - r = date.match(/^(\d+)-(\d+)-(\d+)[ T](\d+):(\d+):(\d+(\.\d+)?)(Z|([+-])(\d\d):?(\d\d))?$/); - if (m) { - return new Date(parseInt(m[1], 10), parseInt(m[2], 10) * 3 - 1, 1).getTime(); - } else if (n) { - return new Date(parseInt(n[1], 10), parseInt(n[2], 10) - 1, 1).getTime(); - } else if (o) { - return new Date(parseInt(o[1], 10), parseInt(o[2], 10) - 1, parseInt(o[3], 10)).getTime(); - } else if (p) { - ret = new Date(parseInt(p[1], 10), 0, 1); - if (ret.getDay() !== 4) { - ret.setMonth(0, 1 + ((4 - ret.getDay()) + 7) % 7); - } - return ret.getTime() + parseInt(p[2], 10) * 604800000; - } else if (q) { - if (!q[6]) { - return new Date(parseInt(q[1], 10), parseInt(q[2], 10) - 1, parseInt(q[3], 10), parseInt(q[4], 10), parseInt(q[5], 10)).getTime(); - } else { - offsetmins = 0; - if (q[6] !== 'Z') { - offsetmins = parseInt(q[8], 10) * 60 + parseInt(q[9], 10); - if (q[7] === '+') { - offsetmins = 0 - offsetmins; - } - } - return Date.UTC(parseInt(q[1], 10), parseInt(q[2], 10) - 1, parseInt(q[3], 10), parseInt(q[4], 10), parseInt(q[5], 10) + offsetmins); - } - } else if (r) { - secs = parseFloat(r[6]); - isecs = Math.floor(secs); - msecs = Math.round((secs - isecs) * 1000); - if (!r[8]) { - return new Date(parseInt(r[1], 10), parseInt(r[2], 10) - 1, parseInt(r[3], 10), parseInt(r[4], 10), parseInt(r[5], 10), isecs, msecs).getTime(); - } else { - offsetmins = 0; - if (r[8] !== 'Z') { - offsetmins = parseInt(r[10], 10) * 60 + parseInt(r[11], 10); - if (r[9] === '+') { - offsetmins = 0 - offsetmins; - } - } - return Date.UTC(parseInt(r[1], 10), parseInt(r[2], 10) - 1, parseInt(r[3], 10), parseInt(r[4], 10), parseInt(r[5], 10) + offsetmins, isecs, msecs); - } - } else { - return new Date(parseInt(date, 10), 0, 1).getTime(); - } - }; - - Morris.Hover = (function() { - Hover.defaults = { - "class": 'morris-hover morris-default-style' - }; - - function Hover(options) { - if (options == null) { - options = {}; - } - this.options = $.extend({}, Morris.Hover.defaults, options); - this.el = $("<div class='" + this.options["class"] + "'></div>"); - this.el.hide(); - this.options.parent.append(this.el); - } - - Hover.prototype.update = function(html, x, y) { - if (!html) { - return this.hide(); - } else { - this.html(html); - this.show(); - return this.moveTo(x, y); - } - }; - - Hover.prototype.html = function(content) { - return this.el.html(content); - }; - - Hover.prototype.moveTo = function(x, y) { - var hoverHeight, hoverWidth, left, parentHeight, parentWidth, top; - parentWidth = this.options.parent.innerWidth(); - parentHeight = this.options.parent.innerHeight(); - hoverWidth = this.el.outerWidth(); - hoverHeight = this.el.outerHeight(); - left = Math.min(Math.max(0, x - hoverWidth / 2), parentWidth - hoverWidth); - if (y != null) { - top = y - hoverHeight - 10; - if (top < 0) { - top = y + 10; - if (top + hoverHeight > parentHeight) { - top = parentHeight / 2 - hoverHeight / 2; - } - } - } else { - top = parentHeight / 2 - hoverHeight / 2; - } - return this.el.css({ - left: left + "px", - top: parseInt(top) + "px" - }); - }; - - Hover.prototype.show = function() { - return this.el.show(); - }; - - Hover.prototype.hide = function() { - return this.el.hide(); - }; - - return Hover; - - })(); - - Morris.Line = (function(_super) { - __extends(Line, _super); - - function Line(options) { - this.hilight = __bind(this.hilight, this); - this.onHoverOut = __bind(this.onHoverOut, this); - this.onHoverMove = __bind(this.onHoverMove, this); - this.onGridClick = __bind(this.onGridClick, this); - if (!(this instanceof Morris.Line)) { - return new Morris.Line(options); - } - Line.__super__.constructor.call(this, options); - } - - Line.prototype.init = function() { - if (this.options.hideHover !== 'always') { - this.hover = new Morris.Hover({ - parent: this.el - }); - this.on('hovermove', this.onHoverMove); - this.on('hoverout', this.onHoverOut); - return this.on('gridclick', this.onGridClick); - } - }; - - Line.prototype.defaults = { - lineWidth: 3, - pointSize: 4, - lineColors: ['#0b62a4', '#7A92A3', '#4da74d', '#afd8f8', '#edc240', '#cb4b4b', '#9440ed'], - pointStrokeWidths: [1], - pointStrokeColors: ['#ffffff'], - pointFillColors: [], - smooth: true, - xLabels: 'auto', - xLabelFormat: null, - xLabelMargin: 24, - hideHover: false - }; - - Line.prototype.calc = function() { - this.calcPoints(); - return this.generatePaths(); - }; - - Line.prototype.calcPoints = function() { - var row, y, _i, _len, _ref, _results; - _ref = this.data; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - row = _ref[_i]; - row._x = this.transX(row.x); - row._y = (function() { - var _j, _len1, _ref1, _results1; - _ref1 = row.y; - _results1 = []; - for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { - y = _ref1[_j]; - if (y != null) { - _results1.push(this.transY(y)); - } else { - _results1.push(y); - } - } - return _results1; - }).call(this); - _results.push(row._ymax = Math.min.apply(Math, [this.bottom].concat((function() { - var _j, _len1, _ref1, _results1; - _ref1 = row._y; - _results1 = []; - for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { - y = _ref1[_j]; - if (y != null) { - _results1.push(y); - } - } - return _results1; - })()))); - } - return _results; - }; - - Line.prototype.hitTest = function(x) { - var index, r, _i, _len, _ref; - if (this.data.length === 0) { - return null; - } - _ref = this.data.slice(1); - for (index = _i = 0, _len = _ref.length; _i < _len; index = ++_i) { - r = _ref[index]; - if (x < (r._x + this.data[index]._x) / 2) { - break; - } - } - return index; - }; - - Line.prototype.onGridClick = function(x, y) { - var index; - index = this.hitTest(x); - return this.fire('click', index, this.data[index].src, x, y); - }; - - Line.prototype.onHoverMove = function(x, y) { - var index; - index = this.hitTest(x); - return this.displayHoverForRow(index); - }; - - Line.prototype.onHoverOut = function() { - if (this.options.hideHover !== false) { - return this.displayHoverForRow(null); - } - }; - - Line.prototype.displayHoverForRow = function(index) { - var _ref; - if (index != null) { - (_ref = this.hover).update.apply(_ref, this.hoverContentForRow(index)); - return this.hilight(index); - } else { - this.hover.hide(); - return this.hilight(); - } - }; - - Line.prototype.hoverContentForRow = function(index) { - var content, j, row, y, _i, _len, _ref; - row = this.data[index]; - content = "<div class='morris-hover-row-label'>" + row.label + "</div>"; - _ref = row.y; - for (j = _i = 0, _len = _ref.length; _i < _len; j = ++_i) { - y = _ref[j]; - content += "<div class='morris-hover-point' style='color: " + (this.colorFor(row, j, 'label')) + "'>\n " + this.options.labels[j] + ":\n " + (this.yLabelFormat(y)) + "\n</div>"; - } - if (typeof this.options.hoverCallback === 'function') { - content = this.options.hoverCallback(index, this.options, content, row.src); - } - return [content, row._x, row._ymax]; - }; - - Line.prototype.generatePaths = function() { - var coords, i, r, smooth; - return this.paths = (function() { - var _i, _ref, _ref1, _results; - _results = []; - for (i = _i = 0, _ref = this.options.ykeys.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) { - smooth = typeof this.options.smooth === "boolean" ? this.options.smooth : (_ref1 = this.options.ykeys[i], __indexOf.call(this.options.smooth, _ref1) >= 0); - coords = (function() { - var _j, _len, _ref2, _results1; - _ref2 = this.data; - _results1 = []; - for (_j = 0, _len = _ref2.length; _j < _len; _j++) { - r = _ref2[_j]; - if (r._y[i] !== void 0) { - _results1.push({ - x: r._x, - y: r._y[i] - }); - } - } - return _results1; - }).call(this); - if (coords.length > 1) { - _results.push(Morris.Line.createPath(coords, smooth, this.bottom)); - } else { - _results.push(null); - } - } - return _results; - }).call(this); - }; - - Line.prototype.draw = function() { - var _ref; - if ((_ref = this.options.axes) === true || _ref === 'both' || _ref === 'x') { - this.drawXAxis(); - } - this.drawSeries(); - if (this.options.hideHover === false) { - return this.displayHoverForRow(this.data.length - 1); - } - }; - - Line.prototype.drawXAxis = function() { - var drawLabel, l, labels, prevAngleMargin, prevLabelMargin, row, ypos, _i, _len, _results, - _this = this; - ypos = this.bottom + this.options.padding / 2; - prevLabelMargin = null; - prevAngleMargin = null; - drawLabel = function(labelText, xpos) { - var label, labelBox, margin, offset, textBox; - label = _this.drawXAxisLabel(_this.transX(xpos), ypos, labelText); - textBox = label.getBBox(); - label.transform("r" + (-_this.options.xLabelAngle)); - labelBox = label.getBBox(); - label.transform("t0," + (labelBox.height / 2) + "..."); - if (_this.options.xLabelAngle !== 0) { - offset = -0.5 * textBox.width * Math.cos(_this.options.xLabelAngle * Math.PI / 180.0); - label.transform("t" + offset + ",0..."); - } - labelBox = label.getBBox(); - if (((prevLabelMargin == null) || prevLabelMargin >= labelBox.x + labelBox.width || (prevAngleMargin != null) && prevAngleMargin >= labelBox.x) && labelBox.x >= 0 && (labelBox.x + labelBox.width) < _this.el.width()) { - if (_this.options.xLabelAngle !== 0) { - margin = 1.25 * _this.options.gridTextSize / Math.sin(_this.options.xLabelAngle * Math.PI / 180.0); - prevAngleMargin = labelBox.x - margin; - } - return prevLabelMargin = labelBox.x - _this.options.xLabelMargin; - } else { - return label.remove(); - } - }; - if (this.options.parseTime) { - if (this.data.length === 1 && this.options.xLabels === 'auto') { - labels = [[this.data[0].label, this.data[0].x]]; - } else { - labels = Morris.labelSeries(this.xmin, this.xmax, this.width, this.options.xLabels, this.options.xLabelFormat); - } - } else { - labels = (function() { - var _i, _len, _ref, _results; - _ref = this.data; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - row = _ref[_i]; - _results.push([row.label, row.x]); - } - return _results; - }).call(this); - } - labels.reverse(); - _results = []; - for (_i = 0, _len = labels.length; _i < _len; _i++) { - l = labels[_i]; - _results.push(drawLabel(l[0], l[1])); - } - return _results; - }; - - Line.prototype.drawSeries = function() { - var i, _i, _j, _ref, _ref1, _results; - this.seriesPoints = []; - for (i = _i = _ref = this.options.ykeys.length - 1; _ref <= 0 ? _i <= 0 : _i >= 0; i = _ref <= 0 ? ++_i : --_i) { - this._drawLineFor(i); - } - _results = []; - for (i = _j = _ref1 = this.options.ykeys.length - 1; _ref1 <= 0 ? _j <= 0 : _j >= 0; i = _ref1 <= 0 ? ++_j : --_j) { - _results.push(this._drawPointFor(i)); - } - return _results; - }; - - Line.prototype._drawPointFor = function(index) { - var circle, row, _i, _len, _ref, _results; - this.seriesPoints[index] = []; - _ref = this.data; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - row = _ref[_i]; - circle = null; - if (row._y[index] != null) { - circle = this.drawLinePoint(row._x, row._y[index], this.colorFor(row, index, 'point'), index); - } - _results.push(this.seriesPoints[index].push(circle)); - } - return _results; - }; - - Line.prototype._drawLineFor = function(index) { - var path; - path = this.paths[index]; - if (path !== null) { - return this.drawLinePath(path, this.colorFor(null, index, 'line'), index); - } - }; - - Line.createPath = function(coords, smooth, bottom) { - var coord, g, grads, i, ix, lg, path, prevCoord, x1, x2, y1, y2, _i, _len; - path = ""; - if (smooth) { - grads = Morris.Line.gradients(coords); - } - prevCoord = { - y: null - }; - for (i = _i = 0, _len = coords.length; _i < _len; i = ++_i) { - coord = coords[i]; - if (coord.y != null) { - if (prevCoord.y != null) { - if (smooth) { - g = grads[i]; - lg = grads[i - 1]; - ix = (coord.x - prevCoord.x) / 4; - x1 = prevCoord.x + ix; - y1 = Math.min(bottom, prevCoord.y + ix * lg); - x2 = coord.x - ix; - y2 = Math.min(bottom, coord.y - ix * g); - path += "C" + x1 + "," + y1 + "," + x2 + "," + y2 + "," + coord.x + "," + coord.y; - } else { - path += "L" + coord.x + "," + coord.y; - } - } else { - if (!smooth || (grads[i] != null)) { - path += "M" + coord.x + "," + coord.y; - } - } - } - prevCoord = coord; - } - return path; - }; - - Line.gradients = function(coords) { - var coord, grad, i, nextCoord, prevCoord, _i, _len, _results; - grad = function(a, b) { - return (a.y - b.y) / (a.x - b.x); - }; - _results = []; - for (i = _i = 0, _len = coords.length; _i < _len; i = ++_i) { - coord = coords[i]; - if (coord.y != null) { - nextCoord = coords[i + 1] || { - y: null - }; - prevCoord = coords[i - 1] || { - y: null - }; - if ((prevCoord.y != null) && (nextCoord.y != null)) { - _results.push(grad(prevCoord, nextCoord)); - } else if (prevCoord.y != null) { - _results.push(grad(prevCoord, coord)); - } else if (nextCoord.y != null) { - _results.push(grad(coord, nextCoord)); - } else { - _results.push(null); - } - } else { - _results.push(null); - } - } - return _results; - }; - - Line.prototype.hilight = function(index) { - var i, _i, _j, _ref, _ref1; - if (this.prevHilight !== null && this.prevHilight !== index) { - for (i = _i = 0, _ref = this.seriesPoints.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) { - if (this.seriesPoints[i][this.prevHilight]) { - this.seriesPoints[i][this.prevHilight].animate(this.pointShrinkSeries(i)); - } - } - } - if (index !== null && this.prevHilight !== index) { - for (i = _j = 0, _ref1 = this.seriesPoints.length - 1; 0 <= _ref1 ? _j <= _ref1 : _j >= _ref1; i = 0 <= _ref1 ? ++_j : --_j) { - if (this.seriesPoints[i][index]) { - this.seriesPoints[i][index].animate(this.pointGrowSeries(i)); - } - } - } - return this.prevHilight = index; - }; - - Line.prototype.colorFor = function(row, sidx, type) { - if (typeof this.options.lineColors === 'function') { - return this.options.lineColors.call(this, row, sidx, type); - } else if (type === 'point') { - return this.options.pointFillColors[sidx % this.options.pointFillColors.length] || this.options.lineColors[sidx % this.options.lineColors.length]; - } else { - return this.options.lineColors[sidx % this.options.lineColors.length]; - } - }; - - Line.prototype.drawXAxisLabel = function(xPos, yPos, text) { - return this.raphael.text(xPos, yPos, text).attr('font-size', this.options.gridTextSize).attr('font-family', this.options.gridTextFamily).attr('font-weight', this.options.gridTextWeight).attr('fill', this.options.gridTextColor); - }; - - Line.prototype.drawLinePath = function(path, lineColor, lineIndex) { - return this.raphael.path(path).attr('stroke', lineColor).attr('stroke-width', this.lineWidthForSeries(lineIndex)); - }; - - Line.prototype.drawLinePoint = function(xPos, yPos, pointColor, lineIndex) { - return this.raphael.circle(xPos, yPos, this.pointSizeForSeries(lineIndex)).attr('fill', pointColor).attr('stroke-width', this.pointStrokeWidthForSeries(lineIndex)).attr('stroke', this.pointStrokeColorForSeries(lineIndex)); - }; - - Line.prototype.pointStrokeWidthForSeries = function(index) { - return this.options.pointStrokeWidths[index % this.options.pointStrokeWidths.length]; - }; - - Line.prototype.pointStrokeColorForSeries = function(index) { - return this.options.pointStrokeColors[index % this.options.pointStrokeColors.length]; - }; - - Line.prototype.lineWidthForSeries = function(index) { - if (this.options.lineWidth instanceof Array) { - return this.options.lineWidth[index % this.options.lineWidth.length]; - } else { - return this.options.lineWidth; - } - }; - - Line.prototype.pointSizeForSeries = function(index) { - if (this.options.pointSize instanceof Array) { - return this.options.pointSize[index % this.options.pointSize.length]; - } else { - return this.options.pointSize; - } - }; - - Line.prototype.pointGrowSeries = function(index) { - return Raphael.animation({ - r: this.pointSizeForSeries(index) + 3 - }, 25, 'linear'); - }; - - Line.prototype.pointShrinkSeries = function(index) { - return Raphael.animation({ - r: this.pointSizeForSeries(index) - }, 25, 'linear'); - }; - - return Line; - - })(Morris.Grid); - - Morris.labelSeries = function(dmin, dmax, pxwidth, specName, xLabelFormat) { - var d, d0, ddensity, name, ret, s, spec, t, _i, _len, _ref; - ddensity = 200 * (dmax - dmin) / pxwidth; - d0 = new Date(dmin); - spec = Morris.LABEL_SPECS[specName]; - if (spec === void 0) { - _ref = Morris.AUTO_LABEL_ORDER; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - name = _ref[_i]; - s = Morris.LABEL_SPECS[name]; - if (ddensity >= s.span) { - spec = s; - break; - } - } - } - if (spec === void 0) { - spec = Morris.LABEL_SPECS["second"]; - } - if (xLabelFormat) { - spec = $.extend({}, spec, { - fmt: xLabelFormat - }); - } - d = spec.start(d0); - ret = []; - while ((t = d.getTime()) <= dmax) { - if (t >= dmin) { - ret.push([spec.fmt(d), t]); - } - spec.incr(d); - } - return ret; - }; - - minutesSpecHelper = function(interval) { - return { - span: interval * 60 * 1000, - start: function(d) { - return new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours()); - }, - fmt: function(d) { - return "" + (Morris.pad2(d.getHours())) + ":" + (Morris.pad2(d.getMinutes())); - }, - incr: function(d) { - return d.setUTCMinutes(d.getUTCMinutes() + interval); - } - }; - }; - - secondsSpecHelper = function(interval) { - return { - span: interval * 1000, - start: function(d) { - return new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes()); - }, - fmt: function(d) { - return "" + (Morris.pad2(d.getHours())) + ":" + (Morris.pad2(d.getMinutes())) + ":" + (Morris.pad2(d.getSeconds())); - }, - incr: function(d) { - return d.setUTCSeconds(d.getUTCSeconds() + interval); - } - }; - }; - - Morris.LABEL_SPECS = { - "decade": { - span: 172800000000, - start: function(d) { - return new Date(d.getFullYear() - d.getFullYear() % 10, 0, 1); - }, - fmt: function(d) { - return "" + (d.getFullYear()); - }, - incr: function(d) { - return d.setFullYear(d.getFullYear() + 10); - } - }, - "year": { - span: 17280000000, - start: function(d) { - return new Date(d.getFullYear(), 0, 1); - }, - fmt: function(d) { - return "" + (d.getFullYear()); - }, - incr: function(d) { - return d.setFullYear(d.getFullYear() + 1); - } - }, - "month": { - span: 2419200000, - start: function(d) { - return new Date(d.getFullYear(), d.getMonth(), 1); - }, - fmt: function(d) { - return "" + (d.getFullYear()) + "-" + (Morris.pad2(d.getMonth() + 1)); - }, - incr: function(d) { - return d.setMonth(d.getMonth() + 1); - } - }, - "week": { - span: 604800000, - start: function(d) { - return new Date(d.getFullYear(), d.getMonth(), d.getDate()); - }, - fmt: function(d) { - return "" + (d.getFullYear()) + "-" + (Morris.pad2(d.getMonth() + 1)) + "-" + (Morris.pad2(d.getDate())); - }, - incr: function(d) { - return d.setDate(d.getDate() + 7); - } - }, - "day": { - span: 86400000, - start: function(d) { - return new Date(d.getFullYear(), d.getMonth(), d.getDate()); - }, - fmt: function(d) { - return "" + (d.getFullYear()) + "-" + (Morris.pad2(d.getMonth() + 1)) + "-" + (Morris.pad2(d.getDate())); - }, - incr: function(d) { - return d.setDate(d.getDate() + 1); - } - }, - "hour": minutesSpecHelper(60), - "30min": minutesSpecHelper(30), - "15min": minutesSpecHelper(15), - "10min": minutesSpecHelper(10), - "5min": minutesSpecHelper(5), - "minute": minutesSpecHelper(1), - "30sec": secondsSpecHelper(30), - "15sec": secondsSpecHelper(15), - "10sec": secondsSpecHelper(10), - "5sec": secondsSpecHelper(5), - "second": secondsSpecHelper(1) - }; - - Morris.AUTO_LABEL_ORDER = ["decade", "year", "month", "week", "day", "hour", "30min", "15min", "10min", "5min", "minute", "30sec", "15sec", "10sec", "5sec", "second"]; - - Morris.Area = (function(_super) { - var areaDefaults; - - __extends(Area, _super); - - areaDefaults = { - fillOpacity: 'auto', - behaveLikeLine: false - }; - - function Area(options) { - var areaOptions; - if (!(this instanceof Morris.Area)) { - return new Morris.Area(options); - } - areaOptions = $.extend({}, areaDefaults, options); - this.cumulative = !areaOptions.behaveLikeLine; - if (areaOptions.fillOpacity === 'auto') { - areaOptions.fillOpacity = areaOptions.behaveLikeLine ? .8 : 1; - } - Area.__super__.constructor.call(this, areaOptions); - } - - Area.prototype.calcPoints = function() { - var row, total, y, _i, _len, _ref, _results; - _ref = this.data; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - row = _ref[_i]; - row._x = this.transX(row.x); - total = 0; - row._y = (function() { - var _j, _len1, _ref1, _results1; - _ref1 = row.y; - _results1 = []; - for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { - y = _ref1[_j]; - if (this.options.behaveLikeLine) { - _results1.push(this.transY(y)); - } else { - total += y || 0; - _results1.push(this.transY(total)); - } - } - return _results1; - }).call(this); - _results.push(row._ymax = Math.max.apply(Math, row._y)); - } - return _results; - }; - - Area.prototype.drawSeries = function() { - var i, range, _i, _j, _k, _len, _ref, _ref1, _results, _results1, _results2; - this.seriesPoints = []; - if (this.options.behaveLikeLine) { - range = (function() { - _results = []; - for (var _i = 0, _ref = this.options.ykeys.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; 0 <= _ref ? _i++ : _i--){ _results.push(_i); } - return _results; - }).apply(this); - } else { - range = (function() { - _results1 = []; - for (var _j = _ref1 = this.options.ykeys.length - 1; _ref1 <= 0 ? _j <= 0 : _j >= 0; _ref1 <= 0 ? _j++ : _j--){ _results1.push(_j); } - return _results1; - }).apply(this); - } - _results2 = []; - for (_k = 0, _len = range.length; _k < _len; _k++) { - i = range[_k]; - this._drawFillFor(i); - this._drawLineFor(i); - _results2.push(this._drawPointFor(i)); - } - return _results2; - }; - - Area.prototype._drawFillFor = function(index) { - var path; - path = this.paths[index]; - if (path !== null) { - path = path + ("L" + (this.transX(this.xmax)) + "," + this.bottom + "L" + (this.transX(this.xmin)) + "," + this.bottom + "Z"); - return this.drawFilledPath(path, this.fillForSeries(index)); - } - }; - - Area.prototype.fillForSeries = function(i) { - var color; - color = Raphael.rgb2hsl(this.colorFor(this.data[i], i, 'line')); - return Raphael.hsl(color.h, this.options.behaveLikeLine ? color.s * 0.9 : color.s * 0.75, Math.min(0.98, this.options.behaveLikeLine ? color.l * 1.2 : color.l * 1.25)); - }; - - Area.prototype.drawFilledPath = function(path, fill) { - return this.raphael.path(path).attr('fill', fill).attr('fill-opacity', this.options.fillOpacity).attr('stroke', 'none'); - }; - - return Area; - - })(Morris.Line); - - Morris.Bar = (function(_super) { - __extends(Bar, _super); - - function Bar(options) { - this.onHoverOut = __bind(this.onHoverOut, this); - this.onHoverMove = __bind(this.onHoverMove, this); - this.onGridClick = __bind(this.onGridClick, this); - if (!(this instanceof Morris.Bar)) { - return new Morris.Bar(options); - } - Bar.__super__.constructor.call(this, $.extend({}, options, { - parseTime: false - })); - } - - Bar.prototype.init = function() { - this.cumulative = this.options.stacked; - if (this.options.hideHover !== 'always') { - this.hover = new Morris.Hover({ - parent: this.el - }); - this.on('hovermove', this.onHoverMove); - this.on('hoverout', this.onHoverOut); - return this.on('gridclick', this.onGridClick); - } - }; - - Bar.prototype.defaults = { - barSizeRatio: 0.75, - barGap: 3, - barColors: ['#0b62a4', '#7a92a3', '#4da74d', '#afd8f8', '#edc240', '#cb4b4b', '#9440ed'], - barOpacity: 1.0, - barRadius: [0, 0, 0, 0], - xLabelMargin: 50 - }; - - Bar.prototype.calc = function() { - var _ref; - this.calcBars(); - if (this.options.hideHover === false) { - return (_ref = this.hover).update.apply(_ref, this.hoverContentForRow(this.data.length - 1)); - } - }; - - Bar.prototype.calcBars = function() { - var idx, row, y, _i, _len, _ref, _results; - _ref = this.data; - _results = []; - for (idx = _i = 0, _len = _ref.length; _i < _len; idx = ++_i) { - row = _ref[idx]; - row._x = this.left + this.width * (idx + 0.5) / this.data.length; - _results.push(row._y = (function() { - var _j, _len1, _ref1, _results1; - _ref1 = row.y; - _results1 = []; - for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { - y = _ref1[_j]; - if (y != null) { - _results1.push(this.transY(y)); - } else { - _results1.push(null); - } - } - return _results1; - }).call(this)); - } - return _results; - }; - - Bar.prototype.draw = function() { - var _ref; - if ((_ref = this.options.axes) === true || _ref === 'both' || _ref === 'x') { - this.drawXAxis(); - } - return this.drawSeries(); - }; - - Bar.prototype.drawXAxis = function() { - var i, label, labelBox, margin, offset, prevAngleMargin, prevLabelMargin, row, textBox, ypos, _i, _ref, _results; - ypos = this.bottom + (this.options.xAxisLabelTopPadding || this.options.padding / 2); - prevLabelMargin = null; - prevAngleMargin = null; - _results = []; - for (i = _i = 0, _ref = this.data.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) { - row = this.data[this.data.length - 1 - i]; - label = this.drawXAxisLabel(row._x, ypos, row.label); - textBox = label.getBBox(); - label.transform("r" + (-this.options.xLabelAngle)); - labelBox = label.getBBox(); - label.transform("t0," + (labelBox.height / 2) + "..."); - if (this.options.xLabelAngle !== 0) { - offset = -0.5 * textBox.width * Math.cos(this.options.xLabelAngle * Math.PI / 180.0); - label.transform("t" + offset + ",0..."); - } - if (((prevLabelMargin == null) || prevLabelMargin >= labelBox.x + labelBox.width || (prevAngleMargin != null) && prevAngleMargin >= labelBox.x) && labelBox.x >= 0 && (labelBox.x + labelBox.width) < this.el.width()) { - if (this.options.xLabelAngle !== 0) { - margin = 1.25 * this.options.gridTextSize / Math.sin(this.options.xLabelAngle * Math.PI / 180.0); - prevAngleMargin = labelBox.x - margin; - } - _results.push(prevLabelMargin = labelBox.x - this.options.xLabelMargin); - } else { - _results.push(label.remove()); - } - } - return _results; - }; - - Bar.prototype.drawSeries = function() { - var barWidth, bottom, groupWidth, idx, lastTop, left, leftPadding, numBars, row, sidx, size, spaceLeft, top, ypos, zeroPos; - groupWidth = this.width / this.options.data.length; - numBars = this.options.stacked ? 1 : this.options.ykeys.length; - barWidth = (groupWidth * this.options.barSizeRatio - this.options.barGap * (numBars - 1)) / numBars; - if (this.options.barSize) { - barWidth = Math.min(barWidth, this.options.barSize); - } - spaceLeft = groupWidth - barWidth * numBars - this.options.barGap * (numBars - 1); - leftPadding = spaceLeft / 2; - zeroPos = this.ymin <= 0 && this.ymax >= 0 ? this.transY(0) : null; - return this.bars = (function() { - var _i, _len, _ref, _results; - _ref = this.data; - _results = []; - for (idx = _i = 0, _len = _ref.length; _i < _len; idx = ++_i) { - row = _ref[idx]; - lastTop = 0; - _results.push((function() { - var _j, _len1, _ref1, _results1; - _ref1 = row._y; - _results1 = []; - for (sidx = _j = 0, _len1 = _ref1.length; _j < _len1; sidx = ++_j) { - ypos = _ref1[sidx]; - if (ypos !== null) { - if (zeroPos) { - top = Math.min(ypos, zeroPos); - bottom = Math.max(ypos, zeroPos); - } else { - top = ypos; - bottom = this.bottom; - } - left = this.left + idx * groupWidth + leftPadding; - if (!this.options.stacked) { - left += sidx * (barWidth + this.options.barGap); - } - size = bottom - top; - if (this.options.verticalGridCondition && this.options.verticalGridCondition(row.x)) { - this.drawBar(this.left + idx * groupWidth, this.top, groupWidth, Math.abs(this.top - this.bottom), this.options.verticalGridColor, this.options.verticalGridOpacity, this.options.barRadius); - } - if (this.options.stacked) { - top -= lastTop; - } - this.drawBar(left, top, barWidth, size, this.colorFor(row, sidx, 'bar'), this.options.barOpacity, this.options.barRadius); - _results1.push(lastTop += size); - } else { - _results1.push(null); - } - } - return _results1; - }).call(this)); - } - return _results; - }).call(this); - }; - - Bar.prototype.colorFor = function(row, sidx, type) { - var r, s; - if (typeof this.options.barColors === 'function') { - r = { - x: row.x, - y: row.y[sidx], - label: row.label - }; - s = { - index: sidx, - key: this.options.ykeys[sidx], - label: this.options.labels[sidx] - }; - return this.options.barColors.call(this, r, s, type); - } else { - return this.options.barColors[sidx % this.options.barColors.length]; - } - }; - - Bar.prototype.hitTest = function(x) { - if (this.data.length === 0) { - return null; - } - x = Math.max(Math.min(x, this.right), this.left); - return Math.min(this.data.length - 1, Math.floor((x - this.left) / (this.width / this.data.length))); - }; - - Bar.prototype.onGridClick = function(x, y) { - var index; - index = this.hitTest(x); - return this.fire('click', index, this.data[index].src, x, y); - }; - - Bar.prototype.onHoverMove = function(x, y) { - var index, _ref; - index = this.hitTest(x); - return (_ref = this.hover).update.apply(_ref, this.hoverContentForRow(index)); - }; - - Bar.prototype.onHoverOut = function() { - if (this.options.hideHover !== false) { - return this.hover.hide(); - } - }; - - Bar.prototype.hoverContentForRow = function(index) { - var content, j, row, x, y, _i, _len, _ref; - row = this.data[index]; - content = "<div class='morris-hover-row-label'>" + row.label + "</div>"; - _ref = row.y; - for (j = _i = 0, _len = _ref.length; _i < _len; j = ++_i) { - y = _ref[j]; - content += "<div class='morris-hover-point' style='color: " + (this.colorFor(row, j, 'label')) + "'>\n " + this.options.labels[j] + ":\n " + (this.yLabelFormat(y)) + "\n</div>"; - } - if (typeof this.options.hoverCallback === 'function') { - content = this.options.hoverCallback(index, this.options, content, row.src); - } - x = this.left + (index + 0.5) * this.width / this.data.length; - return [content, x]; - }; - - Bar.prototype.drawXAxisLabel = function(xPos, yPos, text) { - var label; - return label = this.raphael.text(xPos, yPos, text).attr('font-size', this.options.gridTextSize).attr('font-family', this.options.gridTextFamily).attr('font-weight', this.options.gridTextWeight).attr('fill', this.options.gridTextColor); - }; - - Bar.prototype.drawBar = function(xPos, yPos, width, height, barColor, opacity, radiusArray) { - var maxRadius, path; - maxRadius = Math.max.apply(Math, radiusArray); - if (maxRadius === 0 || maxRadius > height) { - path = this.raphael.rect(xPos, yPos, width, height); - } else { - path = this.raphael.path(this.roundedRect(xPos, yPos, width, height, radiusArray)); - } - return path.attr('fill', barColor).attr('fill-opacity', opacity).attr('stroke', 'none'); - }; - - Bar.prototype.roundedRect = function(x, y, w, h, r) { - if (r == null) { - r = [0, 0, 0, 0]; - } - return ["M", x, r[0] + y, "Q", x, y, x + r[0], y, "L", x + w - r[1], y, "Q", x + w, y, x + w, y + r[1], "L", x + w, y + h - r[2], "Q", x + w, y + h, x + w - r[2], y + h, "L", x + r[3], y + h, "Q", x, y + h, x, y + h - r[3], "Z"]; - }; - - return Bar; - - })(Morris.Grid); - - Morris.Donut = (function(_super) { - __extends(Donut, _super); - - Donut.prototype.defaults = { - colors: ['#0B62A4', '#3980B5', '#679DC6', '#95BBD7', '#B0CCE1', '#095791', '#095085', '#083E67', '#052C48', '#042135'], - backgroundColor: '#FFFFFF', - labelColor: '#000000', - formatter: Morris.commas, - resize: false - }; - - function Donut(options) { - this.resizeHandler = __bind(this.resizeHandler, this); - this.select = __bind(this.select, this); - this.click = __bind(this.click, this); - var _this = this; - if (!(this instanceof Morris.Donut)) { - return new Morris.Donut(options); - } - this.options = $.extend({}, this.defaults, options); - if (typeof options.element === 'string') { - this.el = $(document.getElementById(options.element)); - } else { - this.el = $(options.element); - } - if (this.el === null || this.el.length === 0) { - throw new Error("Graph placeholder not found."); - } - if (options.data === void 0 || options.data.length === 0) { - return; - } - this.raphael = new Raphael(this.el[0]); - if (this.options.resize) { - $(window).bind('resize', function(evt) { - if (_this.timeoutId != null) { - window.clearTimeout(_this.timeoutId); - } - return _this.timeoutId = window.setTimeout(_this.resizeHandler, 100); - }); - } - this.setData(options.data); - } - - Donut.prototype.redraw = function() { - var C, cx, cy, i, idx, last, max_value, min, next, seg, total, value, w, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2, _results; - this.raphael.clear(); - cx = this.el.width() / 2; - cy = this.el.height() / 2; - w = (Math.min(cx, cy) - 10) / 3; - total = 0; - _ref = this.values; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - value = _ref[_i]; - total += value; - } - min = 5 / (2 * w); - C = 1.9999 * Math.PI - min * this.data.length; - last = 0; - idx = 0; - this.segments = []; - _ref1 = this.values; - for (i = _j = 0, _len1 = _ref1.length; _j < _len1; i = ++_j) { - value = _ref1[i]; - next = last + min + C * (value / total); - seg = new Morris.DonutSegment(cx, cy, w * 2, w, last, next, this.data[i].color || this.options.colors[idx % this.options.colors.length], this.options.backgroundColor, idx, this.raphael); - seg.render(); - this.segments.push(seg); - seg.on('hover', this.select); - seg.on('click', this.click); - last = next; - idx += 1; - } - this.text1 = this.drawEmptyDonutLabel(cx, cy - 10, this.options.labelColor, 15, 800); - this.text2 = this.drawEmptyDonutLabel(cx, cy + 10, this.options.labelColor, 14); - max_value = Math.max.apply(Math, this.values); - idx = 0; - _ref2 = this.values; - _results = []; - for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) { - value = _ref2[_k]; - if (value === max_value) { - this.select(idx); - break; - } - _results.push(idx += 1); - } - return _results; - }; - - Donut.prototype.setData = function(data) { - var row; - this.data = data; - this.values = (function() { - var _i, _len, _ref, _results; - _ref = this.data; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - row = _ref[_i]; - _results.push(parseFloat(row.value)); - } - return _results; - }).call(this); - return this.redraw(); - }; - - Donut.prototype.click = function(idx) { - return this.fire('click', idx, this.data[idx]); - }; - - Donut.prototype.select = function(idx) { - var row, s, segment, _i, _len, _ref; - _ref = this.segments; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - s = _ref[_i]; - s.deselect(); - } - segment = this.segments[idx]; - segment.select(); - row = this.data[idx]; - return this.setLabels(row.label, this.options.formatter(row.value, row)); - }; - - Donut.prototype.setLabels = function(label1, label2) { - var inner, maxHeightBottom, maxHeightTop, maxWidth, text1bbox, text1scale, text2bbox, text2scale; - inner = (Math.min(this.el.width() / 2, this.el.height() / 2) - 10) * 2 / 3; - maxWidth = 1.8 * inner; - maxHeightTop = inner / 2; - maxHeightBottom = inner / 3; - this.text1.attr({ - text: label1, - transform: '' - }); - text1bbox = this.text1.getBBox(); - text1scale = Math.min(maxWidth / text1bbox.width, maxHeightTop / text1bbox.height); - this.text1.attr({ - transform: "S" + text1scale + "," + text1scale + "," + (text1bbox.x + text1bbox.width / 2) + "," + (text1bbox.y + text1bbox.height) - }); - this.text2.attr({ - text: label2, - transform: '' - }); - text2bbox = this.text2.getBBox(); - text2scale = Math.min(maxWidth / text2bbox.width, maxHeightBottom / text2bbox.height); - return this.text2.attr({ - transform: "S" + text2scale + "," + text2scale + "," + (text2bbox.x + text2bbox.width / 2) + "," + text2bbox.y - }); - }; - - Donut.prototype.drawEmptyDonutLabel = function(xPos, yPos, color, fontSize, fontWeight) { - var text; - text = this.raphael.text(xPos, yPos, '').attr('font-size', fontSize).attr('fill', color); - if (fontWeight != null) { - text.attr('font-weight', fontWeight); - } - return text; - }; - - Donut.prototype.resizeHandler = function() { - this.timeoutId = null; - this.raphael.setSize(this.el.width(), this.el.height()); - return this.redraw(); - }; - - return Donut; - - })(Morris.EventEmitter); - - Morris.DonutSegment = (function(_super) { - __extends(DonutSegment, _super); - - function DonutSegment(cx, cy, inner, outer, p0, p1, color, backgroundColor, index, raphael) { - this.cx = cx; - this.cy = cy; - this.inner = inner; - this.outer = outer; - this.color = color; - this.backgroundColor = backgroundColor; - this.index = index; - this.raphael = raphael; - this.deselect = __bind(this.deselect, this); - this.select = __bind(this.select, this); - this.sin_p0 = Math.sin(p0); - this.cos_p0 = Math.cos(p0); - this.sin_p1 = Math.sin(p1); - this.cos_p1 = Math.cos(p1); - this.is_long = (p1 - p0) > Math.PI ? 1 : 0; - this.path = this.calcSegment(this.inner + 3, this.inner + this.outer - 5); - this.selectedPath = this.calcSegment(this.inner + 3, this.inner + this.outer); - this.hilight = this.calcArc(this.inner); - } - - DonutSegment.prototype.calcArcPoints = function(r) { - return [this.cx + r * this.sin_p0, this.cy + r * this.cos_p0, this.cx + r * this.sin_p1, this.cy + r * this.cos_p1]; - }; - - DonutSegment.prototype.calcSegment = function(r1, r2) { - var ix0, ix1, iy0, iy1, ox0, ox1, oy0, oy1, _ref, _ref1; - _ref = this.calcArcPoints(r1), ix0 = _ref[0], iy0 = _ref[1], ix1 = _ref[2], iy1 = _ref[3]; - _ref1 = this.calcArcPoints(r2), ox0 = _ref1[0], oy0 = _ref1[1], ox1 = _ref1[2], oy1 = _ref1[3]; - return ("M" + ix0 + "," + iy0) + ("A" + r1 + "," + r1 + ",0," + this.is_long + ",0," + ix1 + "," + iy1) + ("L" + ox1 + "," + oy1) + ("A" + r2 + "," + r2 + ",0," + this.is_long + ",1," + ox0 + "," + oy0) + "Z"; - }; - - DonutSegment.prototype.calcArc = function(r) { - var ix0, ix1, iy0, iy1, _ref; - _ref = this.calcArcPoints(r), ix0 = _ref[0], iy0 = _ref[1], ix1 = _ref[2], iy1 = _ref[3]; - return ("M" + ix0 + "," + iy0) + ("A" + r + "," + r + ",0," + this.is_long + ",0," + ix1 + "," + iy1); - }; - - DonutSegment.prototype.render = function() { - var _this = this; - this.arc = this.drawDonutArc(this.hilight, this.color); - return this.seg = this.drawDonutSegment(this.path, this.color, this.backgroundColor, function() { - return _this.fire('hover', _this.index); - }, function() { - return _this.fire('click', _this.index); - }); - }; - - DonutSegment.prototype.drawDonutArc = function(path, color) { - return this.raphael.path(path).attr({ - stroke: color, - 'stroke-width': 2, - opacity: 0 - }); - }; - - DonutSegment.prototype.drawDonutSegment = function(path, fillColor, strokeColor, hoverFunction, clickFunction) { - return this.raphael.path(path).attr({ - fill: fillColor, - stroke: strokeColor, - 'stroke-width': 3 - }).hover(hoverFunction).click(clickFunction); - }; - - DonutSegment.prototype.select = function() { - if (!this.selected) { - this.seg.animate({ - path: this.selectedPath - }, 150, '<>'); - this.arc.animate({ - opacity: 1 - }, 150, '<>'); - return this.selected = true; - } - }; - - DonutSegment.prototype.deselect = function() { - if (this.selected) { - this.seg.animate({ - path: this.path - }, 150, '<>'); - this.arc.animate({ - opacity: 0 - }, 150, '<>'); - return this.selected = false; - } - }; - - return DonutSegment; - - })(Morris.EventEmitter); - -}).call(this); \ No newline at end of file diff --git a/assets/plugins/morris/morris.min.js b/assets/plugins/morris/morris.min.js deleted file mode 100644 index c3bda2f9..00000000 --- a/assets/plugins/morris/morris.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* @license -morris.js v0.5.0 -Copyright 2014 Olly Smith All rights reserved. -Licensed under the BSD-2-Clause License. -*/ -(function(){var a,b,c,d,e=[].slice,f=function(a,b){return function(){return a.apply(b,arguments)}},g={}.hasOwnProperty,h=function(a,b){function c(){this.constructor=a}for(var d in b)g.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},i=[].indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(b in this&&this[b]===a)return b;return-1};b=window.Morris={},a=jQuery,b.EventEmitter=function(){function a(){}return a.prototype.on=function(a,b){return null==this.handlers&&(this.handlers={}),null==this.handlers[a]&&(this.handlers[a]=[]),this.handlers[a].push(b),this},a.prototype.fire=function(){var a,b,c,d,f,g,h;if(c=arguments[0],a=2<=arguments.length?e.call(arguments,1):[],null!=this.handlers&&null!=this.handlers[c]){for(g=this.handlers[c],h=[],d=0,f=g.length;f>d;d++)b=g[d],h.push(b.apply(null,a));return h}},a}(),b.commas=function(a){var b,c,d,e;return null!=a?(d=0>a?"-":"",b=Math.abs(a),c=Math.floor(b).toFixed(0),d+=c.replace(/(?=(?:\d{3})+$)(?!^)/g,","),e=b.toString(),e.length>c.length&&(d+=e.slice(c.length)),d):"-"},b.pad2=function(a){return(10>a?"0":"")+a},b.Grid=function(c){function d(b){this.resizeHandler=f(this.resizeHandler,this);var c=this;if(this.el="string"==typeof b.element?a(document.getElementById(b.element)):a(b.element),null==this.el||0===this.el.length)throw new Error("Graph container element not found");"static"===this.el.css("position")&&this.el.css("position","relative"),this.options=a.extend({},this.gridDefaults,this.defaults||{},b),"string"==typeof this.options.units&&(this.options.postUnits=b.units),this.raphael=new Raphael(this.el[0]),this.elementWidth=null,this.elementHeight=null,this.dirty=!1,this.selectFrom=null,this.init&&this.init(),this.setData(this.options.data),this.el.bind("mousemove",function(a){var b,d,e,f,g;return d=c.el.offset(),g=a.pageX-d.left,c.selectFrom?(b=c.data[c.hitTest(Math.min(g,c.selectFrom))]._x,e=c.data[c.hitTest(Math.max(g,c.selectFrom))]._x,f=e-b,c.selectionRect.attr({x:b,width:f})):c.fire("hovermove",g,a.pageY-d.top)}),this.el.bind("mouseleave",function(){return c.selectFrom&&(c.selectionRect.hide(),c.selectFrom=null),c.fire("hoverout")}),this.el.bind("touchstart touchmove touchend",function(a){var b,d;return d=a.originalEvent.touches[0]||a.originalEvent.changedTouches[0],b=c.el.offset(),c.fire("hovermove",d.pageX-b.left,d.pageY-b.top)}),this.el.bind("click",function(a){var b;return b=c.el.offset(),c.fire("gridclick",a.pageX-b.left,a.pageY-b.top)}),this.options.rangeSelect&&(this.selectionRect=this.raphael.rect(0,0,0,this.el.innerHeight()).attr({fill:this.options.rangeSelectColor,stroke:!1}).toBack().hide(),this.el.bind("mousedown",function(a){var b;return b=c.el.offset(),c.startRange(a.pageX-b.left)}),this.el.bind("mouseup",function(a){var b;return b=c.el.offset(),c.endRange(a.pageX-b.left),c.fire("hovermove",a.pageX-b.left,a.pageY-b.top)})),this.options.resize&&a(window).bind("resize",function(){return null!=c.timeoutId&&window.clearTimeout(c.timeoutId),c.timeoutId=window.setTimeout(c.resizeHandler,100)}),this.el.css("-webkit-tap-highlight-color","rgba(0,0,0,0)"),this.postInit&&this.postInit()}return h(d,c),d.prototype.gridDefaults={dateFormat:null,axes:!0,grid:!0,gridLineColor:"#aaa",gridStrokeWidth:.5,gridTextColor:"#888",gridTextSize:12,gridTextFamily:"sans-serif",gridTextWeight:"normal",hideHover:!1,yLabelFormat:null,xLabelAngle:0,numLines:5,padding:25,parseTime:!0,postUnits:"",preUnits:"",ymax:"auto",ymin:"auto 0",goals:[],goalStrokeWidth:1,goalLineColors:["#666633","#999966","#cc6666","#663333"],events:[],eventStrokeWidth:1,eventLineColors:["#005a04","#ccffbb","#3a5f0b","#005502"],rangeSelect:null,rangeSelectColor:"#eef",resize:!1},d.prototype.setData=function(a,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;return null==c&&(c=!0),this.options.data=a,null==a||0===a.length?(this.data=[],this.raphael.clear(),null!=this.hover&&this.hover.hide(),void 0):(o=this.cumulative?0:null,p=this.cumulative?0:null,this.options.goals.length>0&&(h=Math.min.apply(Math,this.options.goals),g=Math.max.apply(Math,this.options.goals),p=null!=p?Math.min(p,h):h,o=null!=o?Math.max(o,g):g),this.data=function(){var c,d,g;for(g=[],f=c=0,d=a.length;d>c;f=++c)j=a[f],i={src:j},i.label=j[this.options.xkey],this.options.parseTime?(i.x=b.parseDate(i.label),this.options.dateFormat?i.label=this.options.dateFormat(i.x):"number"==typeof i.label&&(i.label=new Date(i.label).toString())):(i.x=f,this.options.xLabelFormat&&(i.label=this.options.xLabelFormat(i))),l=0,i.y=function(){var a,b,c,d;for(c=this.options.ykeys,d=[],e=a=0,b=c.length;b>a;e=++a)n=c[e],q=j[n],"string"==typeof q&&(q=parseFloat(q)),null!=q&&"number"!=typeof q&&(q=null),null!=q&&(this.cumulative?l+=q:null!=o?(o=Math.max(q,o),p=Math.min(q,p)):o=p=q),this.cumulative&&null!=l&&(o=Math.max(l,o),p=Math.min(l,p)),d.push(q);return d}.call(this),g.push(i);return g}.call(this),this.options.parseTime&&(this.data=this.data.sort(function(a,b){return(a.x>b.x)-(b.x>a.x)})),this.xmin=this.data[0].x,this.xmax=this.data[this.data.length-1].x,this.events=[],this.options.events.length>0&&(this.events=this.options.parseTime?function(){var a,c,e,f;for(e=this.options.events,f=[],a=0,c=e.length;c>a;a++)d=e[a],f.push(b.parseDate(d));return f}.call(this):this.options.events,this.xmax=Math.max(this.xmax,Math.max.apply(Math,this.events)),this.xmin=Math.min(this.xmin,Math.min.apply(Math,this.events))),this.xmin===this.xmax&&(this.xmin-=1,this.xmax+=1),this.ymin=this.yboundary("min",p),this.ymax=this.yboundary("max",o),this.ymin===this.ymax&&(p&&(this.ymin-=1),this.ymax+=1),((r=this.options.axes)===!0||"both"===r||"y"===r||this.options.grid===!0)&&(this.options.ymax===this.gridDefaults.ymax&&this.options.ymin===this.gridDefaults.ymin?(this.grid=this.autoGridLines(this.ymin,this.ymax,this.options.numLines),this.ymin=Math.min(this.ymin,this.grid[0]),this.ymax=Math.max(this.ymax,this.grid[this.grid.length-1])):(k=(this.ymax-this.ymin)/(this.options.numLines-1),this.grid=function(){var a,b,c,d;for(d=[],m=a=b=this.ymin,c=this.ymax;k>0?c>=a:a>=c;m=a+=k)d.push(m);return d}.call(this))),this.dirty=!0,c?this.redraw():void 0)},d.prototype.yboundary=function(a,b){var c,d;return c=this.options["y"+a],"string"==typeof c?"auto"===c.slice(0,4)?c.length>5?(d=parseInt(c.slice(5),10),null==b?d:Math[a](b,d)):null!=b?b:0:parseInt(c,10):c},d.prototype.autoGridLines=function(a,b,c){var d,e,f,g,h,i,j,k,l;return h=b-a,l=Math.floor(Math.log(h)/Math.log(10)),j=Math.pow(10,l),e=Math.floor(a/j)*j,d=Math.ceil(b/j)*j,i=(d-e)/(c-1),1===j&&i>1&&Math.ceil(i)!==i&&(i=Math.ceil(i),d=e+i*(c-1)),0>e&&d>0&&(e=Math.floor(a/i)*i,d=Math.ceil(b/i)*i),1>i?(g=Math.floor(Math.log(i)/Math.log(10)),f=function(){var a,b;for(b=[],k=a=e;i>0?d>=a:a>=d;k=a+=i)b.push(parseFloat(k.toFixed(1-g)));return b}()):f=function(){var a,b;for(b=[],k=a=e;i>0?d>=a:a>=d;k=a+=i)b.push(k);return b}(),f},d.prototype._calc=function(){var a,b,c,d,e,f,g,h;return e=this.el.width(),c=this.el.height(),(this.elementWidth!==e||this.elementHeight!==c||this.dirty)&&(this.elementWidth=e,this.elementHeight=c,this.dirty=!1,this.left=this.options.padding,this.right=this.elementWidth-this.options.padding,this.top=this.options.padding,this.bottom=this.elementHeight-this.options.padding,((g=this.options.axes)===!0||"both"===g||"y"===g)&&(f=function(){var a,c,d,e;for(d=this.grid,e=[],a=0,c=d.length;c>a;a++)b=d[a],e.push(this.measureText(this.yAxisFormat(b)).width);return e}.call(this),this.left+=Math.max.apply(Math,f)),((h=this.options.axes)===!0||"both"===h||"x"===h)&&(a=function(){var a,b,c;for(c=[],d=a=0,b=this.data.length;b>=0?b>a:a>b;d=b>=0?++a:--a)c.push(this.measureText(this.data[d].text,-this.options.xLabelAngle).height);return c}.call(this),this.bottom-=Math.max.apply(Math,a)),this.width=Math.max(1,this.right-this.left),this.height=Math.max(1,this.bottom-this.top),this.dx=this.width/(this.xmax-this.xmin),this.dy=this.height/(this.ymax-this.ymin),this.calc)?this.calc():void 0},d.prototype.transY=function(a){return this.bottom-(a-this.ymin)*this.dy},d.prototype.transX=function(a){return 1===this.data.length?(this.left+this.right)/2:this.left+(a-this.xmin)*this.dx},d.prototype.redraw=function(){return this.raphael.clear(),this._calc(),this.drawGrid(),this.drawGoals(),this.drawEvents(),this.draw?this.draw():void 0},d.prototype.measureText=function(a,b){var c,d;return null==b&&(b=0),d=this.raphael.text(100,100,a).attr("font-size",this.options.gridTextSize).attr("font-family",this.options.gridTextFamily).attr("font-weight",this.options.gridTextWeight).rotate(b),c=d.getBBox(),d.remove(),c},d.prototype.yAxisFormat=function(a){return this.yLabelFormat(a)},d.prototype.yLabelFormat=function(a){return"function"==typeof this.options.yLabelFormat?this.options.yLabelFormat(a):""+this.options.preUnits+b.commas(a)+this.options.postUnits},d.prototype.drawGrid=function(){var a,b,c,d,e,f,g,h;if(this.options.grid!==!1||(e=this.options.axes)===!0||"both"===e||"y"===e){for(f=this.grid,h=[],c=0,d=f.length;d>c;c++)a=f[c],b=this.transY(a),((g=this.options.axes)===!0||"both"===g||"y"===g)&&this.drawYAxisLabel(this.left-this.options.padding/2,b,this.yAxisFormat(a)),this.options.grid?h.push(this.drawGridLine("M"+this.left+","+b+"H"+(this.left+this.width))):h.push(void 0);return h}},d.prototype.drawGoals=function(){var a,b,c,d,e,f,g;for(f=this.options.goals,g=[],c=d=0,e=f.length;e>d;c=++d)b=f[c],a=this.options.goalLineColors[c%this.options.goalLineColors.length],g.push(this.drawGoal(b,a));return g},d.prototype.drawEvents=function(){var a,b,c,d,e,f,g;for(f=this.events,g=[],c=d=0,e=f.length;e>d;c=++d)b=f[c],a=this.options.eventLineColors[c%this.options.eventLineColors.length],g.push(this.drawEvent(b,a));return g},d.prototype.drawGoal=function(a,b){return this.raphael.path("M"+this.left+","+this.transY(a)+"H"+this.right).attr("stroke",b).attr("stroke-width",this.options.goalStrokeWidth)},d.prototype.drawEvent=function(a,b){return this.raphael.path("M"+this.transX(a)+","+this.bottom+"V"+this.top).attr("stroke",b).attr("stroke-width",this.options.eventStrokeWidth)},d.prototype.drawYAxisLabel=function(a,b,c){return this.raphael.text(a,b,c).attr("font-size",this.options.gridTextSize).attr("font-family",this.options.gridTextFamily).attr("font-weight",this.options.gridTextWeight).attr("fill",this.options.gridTextColor).attr("text-anchor","end")},d.prototype.drawGridLine=function(a){return this.raphael.path(a).attr("stroke",this.options.gridLineColor).attr("stroke-width",this.options.gridStrokeWidth)},d.prototype.startRange=function(a){return this.hover.hide(),this.selectFrom=a,this.selectionRect.attr({x:a,width:0}).show()},d.prototype.endRange=function(a){var b,c;return this.selectFrom?(c=Math.min(this.selectFrom,a),b=Math.max(this.selectFrom,a),this.options.rangeSelect.call(this.el,{start:this.data[this.hitTest(c)].x,end:this.data[this.hitTest(b)].x}),this.selectFrom=null):void 0},d.prototype.resizeHandler=function(){return this.timeoutId=null,this.raphael.setSize(this.el.width(),this.el.height()),this.redraw()},d}(b.EventEmitter),b.parseDate=function(a){var b,c,d,e,f,g,h,i,j,k,l;return"number"==typeof a?a:(c=a.match(/^(\d+) Q(\d)$/),e=a.match(/^(\d+)-(\d+)$/),f=a.match(/^(\d+)-(\d+)-(\d+)$/),h=a.match(/^(\d+) W(\d+)$/),i=a.match(/^(\d+)-(\d+)-(\d+)[ T](\d+):(\d+)(Z|([+-])(\d\d):?(\d\d))?$/),j=a.match(/^(\d+)-(\d+)-(\d+)[ T](\d+):(\d+):(\d+(\.\d+)?)(Z|([+-])(\d\d):?(\d\d))?$/),c?new Date(parseInt(c[1],10),3*parseInt(c[2],10)-1,1).getTime():e?new Date(parseInt(e[1],10),parseInt(e[2],10)-1,1).getTime():f?new Date(parseInt(f[1],10),parseInt(f[2],10)-1,parseInt(f[3],10)).getTime():h?(k=new Date(parseInt(h[1],10),0,1),4!==k.getDay()&&k.setMonth(0,1+(4-k.getDay()+7)%7),k.getTime()+6048e5*parseInt(h[2],10)):i?i[6]?(g=0,"Z"!==i[6]&&(g=60*parseInt(i[8],10)+parseInt(i[9],10),"+"===i[7]&&(g=0-g)),Date.UTC(parseInt(i[1],10),parseInt(i[2],10)-1,parseInt(i[3],10),parseInt(i[4],10),parseInt(i[5],10)+g)):new Date(parseInt(i[1],10),parseInt(i[2],10)-1,parseInt(i[3],10),parseInt(i[4],10),parseInt(i[5],10)).getTime():j?(l=parseFloat(j[6]),b=Math.floor(l),d=Math.round(1e3*(l-b)),j[8]?(g=0,"Z"!==j[8]&&(g=60*parseInt(j[10],10)+parseInt(j[11],10),"+"===j[9]&&(g=0-g)),Date.UTC(parseInt(j[1],10),parseInt(j[2],10)-1,parseInt(j[3],10),parseInt(j[4],10),parseInt(j[5],10)+g,b,d)):new Date(parseInt(j[1],10),parseInt(j[2],10)-1,parseInt(j[3],10),parseInt(j[4],10),parseInt(j[5],10),b,d).getTime()):new Date(parseInt(a,10),0,1).getTime())},b.Hover=function(){function c(c){null==c&&(c={}),this.options=a.extend({},b.Hover.defaults,c),this.el=a("<div class='"+this.options["class"]+"'></div>"),this.el.hide(),this.options.parent.append(this.el)}return c.defaults={"class":"morris-hover morris-default-style"},c.prototype.update=function(a,b,c){return a?(this.html(a),this.show(),this.moveTo(b,c)):this.hide()},c.prototype.html=function(a){return this.el.html(a)},c.prototype.moveTo=function(a,b){var c,d,e,f,g,h;return g=this.options.parent.innerWidth(),f=this.options.parent.innerHeight(),d=this.el.outerWidth(),c=this.el.outerHeight(),e=Math.min(Math.max(0,a-d/2),g-d),null!=b?(h=b-c-10,0>h&&(h=b+10,h+c>f&&(h=f/2-c/2))):h=f/2-c/2,this.el.css({left:e+"px",top:parseInt(h)+"px"})},c.prototype.show=function(){return this.el.show()},c.prototype.hide=function(){return this.el.hide()},c}(),b.Line=function(a){function c(a){return this.hilight=f(this.hilight,this),this.onHoverOut=f(this.onHoverOut,this),this.onHoverMove=f(this.onHoverMove,this),this.onGridClick=f(this.onGridClick,this),this instanceof b.Line?(c.__super__.constructor.call(this,a),void 0):new b.Line(a)}return h(c,a),c.prototype.init=function(){return"always"!==this.options.hideHover?(this.hover=new b.Hover({parent:this.el}),this.on("hovermove",this.onHoverMove),this.on("hoverout",this.onHoverOut),this.on("gridclick",this.onGridClick)):void 0},c.prototype.defaults={lineWidth:3,pointSize:4,lineColors:["#0b62a4","#7A92A3","#4da74d","#afd8f8","#edc240","#cb4b4b","#9440ed"],pointStrokeWidths:[1],pointStrokeColors:["#ffffff"],pointFillColors:[],smooth:!0,xLabels:"auto",xLabelFormat:null,xLabelMargin:24,hideHover:!1},c.prototype.calc=function(){return this.calcPoints(),this.generatePaths()},c.prototype.calcPoints=function(){var a,b,c,d,e,f;for(e=this.data,f=[],c=0,d=e.length;d>c;c++)a=e[c],a._x=this.transX(a.x),a._y=function(){var c,d,e,f;for(e=a.y,f=[],c=0,d=e.length;d>c;c++)b=e[c],null!=b?f.push(this.transY(b)):f.push(b);return f}.call(this),f.push(a._ymax=Math.min.apply(Math,[this.bottom].concat(function(){var c,d,e,f;for(e=a._y,f=[],c=0,d=e.length;d>c;c++)b=e[c],null!=b&&f.push(b);return f}())));return f},c.prototype.hitTest=function(a){var b,c,d,e,f;if(0===this.data.length)return null;for(f=this.data.slice(1),b=d=0,e=f.length;e>d&&(c=f[b],!(a<(c._x+this.data[b]._x)/2));b=++d);return b},c.prototype.onGridClick=function(a,b){var c;return c=this.hitTest(a),this.fire("click",c,this.data[c].src,a,b)},c.prototype.onHoverMove=function(a){var b;return b=this.hitTest(a),this.displayHoverForRow(b)},c.prototype.onHoverOut=function(){return this.options.hideHover!==!1?this.displayHoverForRow(null):void 0},c.prototype.displayHoverForRow=function(a){var b;return null!=a?((b=this.hover).update.apply(b,this.hoverContentForRow(a)),this.hilight(a)):(this.hover.hide(),this.hilight())},c.prototype.hoverContentForRow=function(a){var b,c,d,e,f,g,h;for(d=this.data[a],b="<div class='morris-hover-row-label'>"+d.label+"</div>",h=d.y,c=f=0,g=h.length;g>f;c=++f)e=h[c],b+="<div class='morris-hover-point' style='color: "+this.colorFor(d,c,"label")+"'>\n "+this.options.labels[c]+":\n "+this.yLabelFormat(e)+"\n</div>";return"function"==typeof this.options.hoverCallback&&(b=this.options.hoverCallback(a,this.options,b,d.src)),[b,d._x,d._ymax]},c.prototype.generatePaths=function(){var a,c,d,e;return this.paths=function(){var f,g,h,j;for(j=[],c=f=0,g=this.options.ykeys.length;g>=0?g>f:f>g;c=g>=0?++f:--f)e="boolean"==typeof this.options.smooth?this.options.smooth:(h=this.options.ykeys[c],i.call(this.options.smooth,h)>=0),a=function(){var a,b,e,f;for(e=this.data,f=[],a=0,b=e.length;b>a;a++)d=e[a],void 0!==d._y[c]&&f.push({x:d._x,y:d._y[c]});return f}.call(this),a.length>1?j.push(b.Line.createPath(a,e,this.bottom)):j.push(null);return j}.call(this)},c.prototype.draw=function(){var a;return((a=this.options.axes)===!0||"both"===a||"x"===a)&&this.drawXAxis(),this.drawSeries(),this.options.hideHover===!1?this.displayHoverForRow(this.data.length-1):void 0},c.prototype.drawXAxis=function(){var a,c,d,e,f,g,h,i,j,k,l=this;for(h=this.bottom+this.options.padding/2,f=null,e=null,a=function(a,b){var c,d,g,i,j;return c=l.drawXAxisLabel(l.transX(b),h,a),j=c.getBBox(),c.transform("r"+-l.options.xLabelAngle),d=c.getBBox(),c.transform("t0,"+d.height/2+"..."),0!==l.options.xLabelAngle&&(i=-.5*j.width*Math.cos(l.options.xLabelAngle*Math.PI/180),c.transform("t"+i+",0...")),d=c.getBBox(),(null==f||f>=d.x+d.width||null!=e&&e>=d.x)&&d.x>=0&&d.x+d.width<l.el.width()?(0!==l.options.xLabelAngle&&(g=1.25*l.options.gridTextSize/Math.sin(l.options.xLabelAngle*Math.PI/180),e=d.x-g),f=d.x-l.options.xLabelMargin):c.remove()},d=this.options.parseTime?1===this.data.length&&"auto"===this.options.xLabels?[[this.data[0].label,this.data[0].x]]:b.labelSeries(this.xmin,this.xmax,this.width,this.options.xLabels,this.options.xLabelFormat):function(){var a,b,c,d;for(c=this.data,d=[],a=0,b=c.length;b>a;a++)g=c[a],d.push([g.label,g.x]);return d}.call(this),d.reverse(),k=[],i=0,j=d.length;j>i;i++)c=d[i],k.push(a(c[0],c[1]));return k},c.prototype.drawSeries=function(){var a,b,c,d,e,f;for(this.seriesPoints=[],a=b=d=this.options.ykeys.length-1;0>=d?0>=b:b>=0;a=0>=d?++b:--b)this._drawLineFor(a);for(f=[],a=c=e=this.options.ykeys.length-1;0>=e?0>=c:c>=0;a=0>=e?++c:--c)f.push(this._drawPointFor(a));return f},c.prototype._drawPointFor=function(a){var b,c,d,e,f,g;for(this.seriesPoints[a]=[],f=this.data,g=[],d=0,e=f.length;e>d;d++)c=f[d],b=null,null!=c._y[a]&&(b=this.drawLinePoint(c._x,c._y[a],this.colorFor(c,a,"point"),a)),g.push(this.seriesPoints[a].push(b));return g},c.prototype._drawLineFor=function(a){var b;return b=this.paths[a],null!==b?this.drawLinePath(b,this.colorFor(null,a,"line"),a):void 0},c.createPath=function(a,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r;for(k="",c&&(g=b.Line.gradients(a)),l={y:null},h=q=0,r=a.length;r>q;h=++q)e=a[h],null!=e.y&&(null!=l.y?c?(f=g[h],j=g[h-1],i=(e.x-l.x)/4,m=l.x+i,o=Math.min(d,l.y+i*j),n=e.x-i,p=Math.min(d,e.y-i*f),k+="C"+m+","+o+","+n+","+p+","+e.x+","+e.y):k+="L"+e.x+","+e.y:c&&null==g[h]||(k+="M"+e.x+","+e.y)),l=e;return k},c.gradients=function(a){var b,c,d,e,f,g,h,i;for(c=function(a,b){return(a.y-b.y)/(a.x-b.x)},i=[],d=g=0,h=a.length;h>g;d=++g)b=a[d],null!=b.y?(e=a[d+1]||{y:null},f=a[d-1]||{y:null},null!=f.y&&null!=e.y?i.push(c(f,e)):null!=f.y?i.push(c(f,b)):null!=e.y?i.push(c(b,e)):i.push(null)):i.push(null);return i},c.prototype.hilight=function(a){var b,c,d,e,f;if(null!==this.prevHilight&&this.prevHilight!==a)for(b=c=0,e=this.seriesPoints.length-1;e>=0?e>=c:c>=e;b=e>=0?++c:--c)this.seriesPoints[b][this.prevHilight]&&this.seriesPoints[b][this.prevHilight].animate(this.pointShrinkSeries(b));if(null!==a&&this.prevHilight!==a)for(b=d=0,f=this.seriesPoints.length-1;f>=0?f>=d:d>=f;b=f>=0?++d:--d)this.seriesPoints[b][a]&&this.seriesPoints[b][a].animate(this.pointGrowSeries(b));return this.prevHilight=a},c.prototype.colorFor=function(a,b,c){return"function"==typeof this.options.lineColors?this.options.lineColors.call(this,a,b,c):"point"===c?this.options.pointFillColors[b%this.options.pointFillColors.length]||this.options.lineColors[b%this.options.lineColors.length]:this.options.lineColors[b%this.options.lineColors.length]},c.prototype.drawXAxisLabel=function(a,b,c){return this.raphael.text(a,b,c).attr("font-size",this.options.gridTextSize).attr("font-family",this.options.gridTextFamily).attr("font-weight",this.options.gridTextWeight).attr("fill",this.options.gridTextColor)},c.prototype.drawLinePath=function(a,b,c){return this.raphael.path(a).attr("stroke",b).attr("stroke-width",this.lineWidthForSeries(c))},c.prototype.drawLinePoint=function(a,b,c,d){return this.raphael.circle(a,b,this.pointSizeForSeries(d)).attr("fill",c).attr("stroke-width",this.pointStrokeWidthForSeries(d)).attr("stroke",this.pointStrokeColorForSeries(d))},c.prototype.pointStrokeWidthForSeries=function(a){return this.options.pointStrokeWidths[a%this.options.pointStrokeWidths.length]},c.prototype.pointStrokeColorForSeries=function(a){return this.options.pointStrokeColors[a%this.options.pointStrokeColors.length]},c.prototype.lineWidthForSeries=function(a){return this.options.lineWidth instanceof Array?this.options.lineWidth[a%this.options.lineWidth.length]:this.options.lineWidth},c.prototype.pointSizeForSeries=function(a){return this.options.pointSize instanceof Array?this.options.pointSize[a%this.options.pointSize.length]:this.options.pointSize},c.prototype.pointGrowSeries=function(a){return Raphael.animation({r:this.pointSizeForSeries(a)+3},25,"linear")},c.prototype.pointShrinkSeries=function(a){return Raphael.animation({r:this.pointSizeForSeries(a)},25,"linear")},c}(b.Grid),b.labelSeries=function(c,d,e,f,g){var h,i,j,k,l,m,n,o,p,q,r;if(j=200*(d-c)/e,i=new Date(c),n=b.LABEL_SPECS[f],void 0===n)for(r=b.AUTO_LABEL_ORDER,p=0,q=r.length;q>p;p++)if(k=r[p],m=b.LABEL_SPECS[k],j>=m.span){n=m;break}for(void 0===n&&(n=b.LABEL_SPECS.second),g&&(n=a.extend({},n,{fmt:g})),h=n.start(i),l=[];(o=h.getTime())<=d;)o>=c&&l.push([n.fmt(h),o]),n.incr(h);return l},c=function(a){return{span:60*a*1e3,start:function(a){return new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours())},fmt:function(a){return""+b.pad2(a.getHours())+":"+b.pad2(a.getMinutes())},incr:function(b){return b.setUTCMinutes(b.getUTCMinutes()+a)}}},d=function(a){return{span:1e3*a,start:function(a){return new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours(),a.getMinutes())},fmt:function(a){return""+b.pad2(a.getHours())+":"+b.pad2(a.getMinutes())+":"+b.pad2(a.getSeconds())},incr:function(b){return b.setUTCSeconds(b.getUTCSeconds()+a)}}},b.LABEL_SPECS={decade:{span:1728e8,start:function(a){return new Date(a.getFullYear()-a.getFullYear()%10,0,1)},fmt:function(a){return""+a.getFullYear()},incr:function(a){return a.setFullYear(a.getFullYear()+10)}},year:{span:1728e7,start:function(a){return new Date(a.getFullYear(),0,1)},fmt:function(a){return""+a.getFullYear()},incr:function(a){return a.setFullYear(a.getFullYear()+1)}},month:{span:24192e5,start:function(a){return new Date(a.getFullYear(),a.getMonth(),1)},fmt:function(a){return""+a.getFullYear()+"-"+b.pad2(a.getMonth()+1)},incr:function(a){return a.setMonth(a.getMonth()+1)}},week:{span:6048e5,start:function(a){return new Date(a.getFullYear(),a.getMonth(),a.getDate())},fmt:function(a){return""+a.getFullYear()+"-"+b.pad2(a.getMonth()+1)+"-"+b.pad2(a.getDate())},incr:function(a){return a.setDate(a.getDate()+7)}},day:{span:864e5,start:function(a){return new Date(a.getFullYear(),a.getMonth(),a.getDate())},fmt:function(a){return""+a.getFullYear()+"-"+b.pad2(a.getMonth()+1)+"-"+b.pad2(a.getDate())},incr:function(a){return a.setDate(a.getDate()+1)}},hour:c(60),"30min":c(30),"15min":c(15),"10min":c(10),"5min":c(5),minute:c(1),"30sec":d(30),"15sec":d(15),"10sec":d(10),"5sec":d(5),second:d(1)},b.AUTO_LABEL_ORDER=["decade","year","month","week","day","hour","30min","15min","10min","5min","minute","30sec","15sec","10sec","5sec","second"],b.Area=function(c){function d(c){var f;return this instanceof b.Area?(f=a.extend({},e,c),this.cumulative=!f.behaveLikeLine,"auto"===f.fillOpacity&&(f.fillOpacity=f.behaveLikeLine?.8:1),d.__super__.constructor.call(this,f),void 0):new b.Area(c)}var e;return h(d,c),e={fillOpacity:"auto",behaveLikeLine:!1},d.prototype.calcPoints=function(){var a,b,c,d,e,f,g;for(f=this.data,g=[],d=0,e=f.length;e>d;d++)a=f[d],a._x=this.transX(a.x),b=0,a._y=function(){var d,e,f,g;for(f=a.y,g=[],d=0,e=f.length;e>d;d++)c=f[d],this.options.behaveLikeLine?g.push(this.transY(c)):(b+=c||0,g.push(this.transY(b)));return g}.call(this),g.push(a._ymax=Math.max.apply(Math,a._y));return g},d.prototype.drawSeries=function(){var a,b,c,d,e,f,g,h;for(this.seriesPoints=[],b=this.options.behaveLikeLine?function(){f=[];for(var a=0,b=this.options.ykeys.length-1;b>=0?b>=a:a>=b;b>=0?a++:a--)f.push(a);return f}.apply(this):function(){g=[];for(var a=e=this.options.ykeys.length-1;0>=e?0>=a:a>=0;0>=e?a++:a--)g.push(a);return g}.apply(this),h=[],c=0,d=b.length;d>c;c++)a=b[c],this._drawFillFor(a),this._drawLineFor(a),h.push(this._drawPointFor(a));return h},d.prototype._drawFillFor=function(a){var b;return b=this.paths[a],null!==b?(b+="L"+this.transX(this.xmax)+","+this.bottom+"L"+this.transX(this.xmin)+","+this.bottom+"Z",this.drawFilledPath(b,this.fillForSeries(a))):void 0},d.prototype.fillForSeries=function(a){var b;return b=Raphael.rgb2hsl(this.colorFor(this.data[a],a,"line")),Raphael.hsl(b.h,this.options.behaveLikeLine?.9*b.s:.75*b.s,Math.min(.98,this.options.behaveLikeLine?1.2*b.l:1.25*b.l))},d.prototype.drawFilledPath=function(a,b){return this.raphael.path(a).attr("fill",b).attr("fill-opacity",this.options.fillOpacity).attr("stroke","none")},d}(b.Line),b.Bar=function(c){function d(c){return this.onHoverOut=f(this.onHoverOut,this),this.onHoverMove=f(this.onHoverMove,this),this.onGridClick=f(this.onGridClick,this),this instanceof b.Bar?(d.__super__.constructor.call(this,a.extend({},c,{parseTime:!1})),void 0):new b.Bar(c)}return h(d,c),d.prototype.init=function(){return this.cumulative=this.options.stacked,"always"!==this.options.hideHover?(this.hover=new b.Hover({parent:this.el}),this.on("hovermove",this.onHoverMove),this.on("hoverout",this.onHoverOut),this.on("gridclick",this.onGridClick)):void 0},d.prototype.defaults={barSizeRatio:.75,barGap:3,barColors:["#0b62a4","#7a92a3","#4da74d","#afd8f8","#edc240","#cb4b4b","#9440ed"],barOpacity:1,barRadius:[0,0,0,0],xLabelMargin:50},d.prototype.calc=function(){var a;return this.calcBars(),this.options.hideHover===!1?(a=this.hover).update.apply(a,this.hoverContentForRow(this.data.length-1)):void 0},d.prototype.calcBars=function(){var a,b,c,d,e,f,g;for(f=this.data,g=[],a=d=0,e=f.length;e>d;a=++d)b=f[a],b._x=this.left+this.width*(a+.5)/this.data.length,g.push(b._y=function(){var a,d,e,f;for(e=b.y,f=[],a=0,d=e.length;d>a;a++)c=e[a],null!=c?f.push(this.transY(c)):f.push(null);return f}.call(this));return g},d.prototype.draw=function(){var a;return((a=this.options.axes)===!0||"both"===a||"x"===a)&&this.drawXAxis(),this.drawSeries()},d.prototype.drawXAxis=function(){var a,b,c,d,e,f,g,h,i,j,k,l,m;for(j=this.bottom+(this.options.xAxisLabelTopPadding||this.options.padding/2),g=null,f=null,m=[],a=k=0,l=this.data.length;l>=0?l>k:k>l;a=l>=0?++k:--k)h=this.data[this.data.length-1-a],b=this.drawXAxisLabel(h._x,j,h.label),i=b.getBBox(),b.transform("r"+-this.options.xLabelAngle),c=b.getBBox(),b.transform("t0,"+c.height/2+"..."),0!==this.options.xLabelAngle&&(e=-.5*i.width*Math.cos(this.options.xLabelAngle*Math.PI/180),b.transform("t"+e+",0...")),(null==g||g>=c.x+c.width||null!=f&&f>=c.x)&&c.x>=0&&c.x+c.width<this.el.width()?(0!==this.options.xLabelAngle&&(d=1.25*this.options.gridTextSize/Math.sin(this.options.xLabelAngle*Math.PI/180),f=c.x-d),m.push(g=c.x-this.options.xLabelMargin)):m.push(b.remove());return m},d.prototype.drawSeries=function(){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o;return c=this.width/this.options.data.length,h=this.options.stacked?1:this.options.ykeys.length,a=(c*this.options.barSizeRatio-this.options.barGap*(h-1))/h,this.options.barSize&&(a=Math.min(a,this.options.barSize)),l=c-a*h-this.options.barGap*(h-1),g=l/2,o=this.ymin<=0&&this.ymax>=0?this.transY(0):null,this.bars=function(){var h,l,p,q;for(p=this.data,q=[],d=h=0,l=p.length;l>h;d=++h)i=p[d],e=0,q.push(function(){var h,l,p,q;for(p=i._y,q=[],j=h=0,l=p.length;l>h;j=++h)n=p[j],null!==n?(o?(m=Math.min(n,o),b=Math.max(n,o)):(m=n,b=this.bottom),f=this.left+d*c+g,this.options.stacked||(f+=j*(a+this.options.barGap)),k=b-m,this.options.verticalGridCondition&&this.options.verticalGridCondition(i.x)&&this.drawBar(this.left+d*c,this.top,c,Math.abs(this.top-this.bottom),this.options.verticalGridColor,this.options.verticalGridOpacity,this.options.barRadius),this.options.stacked&&(m-=e),this.drawBar(f,m,a,k,this.colorFor(i,j,"bar"),this.options.barOpacity,this.options.barRadius),q.push(e+=k)):q.push(null);return q}.call(this));return q}.call(this)},d.prototype.colorFor=function(a,b,c){var d,e;return"function"==typeof this.options.barColors?(d={x:a.x,y:a.y[b],label:a.label},e={index:b,key:this.options.ykeys[b],label:this.options.labels[b]},this.options.barColors.call(this,d,e,c)):this.options.barColors[b%this.options.barColors.length]},d.prototype.hitTest=function(a){return 0===this.data.length?null:(a=Math.max(Math.min(a,this.right),this.left),Math.min(this.data.length-1,Math.floor((a-this.left)/(this.width/this.data.length))))},d.prototype.onGridClick=function(a,b){var c;return c=this.hitTest(a),this.fire("click",c,this.data[c].src,a,b)},d.prototype.onHoverMove=function(a){var b,c;return b=this.hitTest(a),(c=this.hover).update.apply(c,this.hoverContentForRow(b))},d.prototype.onHoverOut=function(){return this.options.hideHover!==!1?this.hover.hide():void 0},d.prototype.hoverContentForRow=function(a){var b,c,d,e,f,g,h,i;for(d=this.data[a],b="<div class='morris-hover-row-label'>"+d.label+"</div>",i=d.y,c=g=0,h=i.length;h>g;c=++g)f=i[c],b+="<div class='morris-hover-point' style='color: "+this.colorFor(d,c,"label")+"'>\n "+this.options.labels[c]+":\n "+this.yLabelFormat(f)+"\n</div>";return"function"==typeof this.options.hoverCallback&&(b=this.options.hoverCallback(a,this.options,b,d.src)),e=this.left+(a+.5)*this.width/this.data.length,[b,e]},d.prototype.drawXAxisLabel=function(a,b,c){var d;return d=this.raphael.text(a,b,c).attr("font-size",this.options.gridTextSize).attr("font-family",this.options.gridTextFamily).attr("font-weight",this.options.gridTextWeight).attr("fill",this.options.gridTextColor)},d.prototype.drawBar=function(a,b,c,d,e,f,g){var h,i;return h=Math.max.apply(Math,g),i=0===h||h>d?this.raphael.rect(a,b,c,d):this.raphael.path(this.roundedRect(a,b,c,d,g)),i.attr("fill",e).attr("fill-opacity",f).attr("stroke","none")},d.prototype.roundedRect=function(a,b,c,d,e){return null==e&&(e=[0,0,0,0]),["M",a,e[0]+b,"Q",a,b,a+e[0],b,"L",a+c-e[1],b,"Q",a+c,b,a+c,b+e[1],"L",a+c,b+d-e[2],"Q",a+c,b+d,a+c-e[2],b+d,"L",a+e[3],b+d,"Q",a,b+d,a,b+d-e[3],"Z"]},d}(b.Grid),b.Donut=function(c){function d(c){this.resizeHandler=f(this.resizeHandler,this),this.select=f(this.select,this),this.click=f(this.click,this);var d=this;if(!(this instanceof b.Donut))return new b.Donut(c);if(this.options=a.extend({},this.defaults,c),this.el="string"==typeof c.element?a(document.getElementById(c.element)):a(c.element),null===this.el||0===this.el.length)throw new Error("Graph placeholder not found.");void 0!==c.data&&0!==c.data.length&&(this.raphael=new Raphael(this.el[0]),this.options.resize&&a(window).bind("resize",function(){return null!=d.timeoutId&&window.clearTimeout(d.timeoutId),d.timeoutId=window.setTimeout(d.resizeHandler,100)}),this.setData(c.data))}return h(d,c),d.prototype.defaults={colors:["#0B62A4","#3980B5","#679DC6","#95BBD7","#B0CCE1","#095791","#095085","#083E67","#052C48","#042135"],backgroundColor:"#FFFFFF",labelColor:"#000000",formatter:b.commas,resize:!1},d.prototype.redraw=function(){var a,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x;for(this.raphael.clear(),c=this.el.width()/2,d=this.el.height()/2,n=(Math.min(c,d)-10)/3,l=0,u=this.values,o=0,r=u.length;r>o;o++)m=u[o],l+=m;for(i=5/(2*n),a=1.9999*Math.PI-i*this.data.length,g=0,f=0,this.segments=[],v=this.values,e=p=0,s=v.length;s>p;e=++p)m=v[e],j=g+i+a*(m/l),k=new b.DonutSegment(c,d,2*n,n,g,j,this.data[e].color||this.options.colors[f%this.options.colors.length],this.options.backgroundColor,f,this.raphael),k.render(),this.segments.push(k),k.on("hover",this.select),k.on("click",this.click),g=j,f+=1;for(this.text1=this.drawEmptyDonutLabel(c,d-10,this.options.labelColor,15,800),this.text2=this.drawEmptyDonutLabel(c,d+10,this.options.labelColor,14),h=Math.max.apply(Math,this.values),f=0,w=this.values,x=[],q=0,t=w.length;t>q;q++){if(m=w[q],m===h){this.select(f); -break}x.push(f+=1)}return x},d.prototype.setData=function(a){var b;return this.data=a,this.values=function(){var a,c,d,e;for(d=this.data,e=[],a=0,c=d.length;c>a;a++)b=d[a],e.push(parseFloat(b.value));return e}.call(this),this.redraw()},d.prototype.click=function(a){return this.fire("click",a,this.data[a])},d.prototype.select=function(a){var b,c,d,e,f,g;for(g=this.segments,e=0,f=g.length;f>e;e++)c=g[e],c.deselect();return d=this.segments[a],d.select(),b=this.data[a],this.setLabels(b.label,this.options.formatter(b.value,b))},d.prototype.setLabels=function(a,b){var c,d,e,f,g,h,i,j;return c=2*(Math.min(this.el.width()/2,this.el.height()/2)-10)/3,f=1.8*c,e=c/2,d=c/3,this.text1.attr({text:a,transform:""}),g=this.text1.getBBox(),h=Math.min(f/g.width,e/g.height),this.text1.attr({transform:"S"+h+","+h+","+(g.x+g.width/2)+","+(g.y+g.height)}),this.text2.attr({text:b,transform:""}),i=this.text2.getBBox(),j=Math.min(f/i.width,d/i.height),this.text2.attr({transform:"S"+j+","+j+","+(i.x+i.width/2)+","+i.y})},d.prototype.drawEmptyDonutLabel=function(a,b,c,d,e){var f;return f=this.raphael.text(a,b,"").attr("font-size",d).attr("fill",c),null!=e&&f.attr("font-weight",e),f},d.prototype.resizeHandler=function(){return this.timeoutId=null,this.raphael.setSize(this.el.width(),this.el.height()),this.redraw()},d}(b.EventEmitter),b.DonutSegment=function(a){function b(a,b,c,d,e,g,h,i,j,k){this.cx=a,this.cy=b,this.inner=c,this.outer=d,this.color=h,this.backgroundColor=i,this.index=j,this.raphael=k,this.deselect=f(this.deselect,this),this.select=f(this.select,this),this.sin_p0=Math.sin(e),this.cos_p0=Math.cos(e),this.sin_p1=Math.sin(g),this.cos_p1=Math.cos(g),this.is_long=g-e>Math.PI?1:0,this.path=this.calcSegment(this.inner+3,this.inner+this.outer-5),this.selectedPath=this.calcSegment(this.inner+3,this.inner+this.outer),this.hilight=this.calcArc(this.inner)}return h(b,a),b.prototype.calcArcPoints=function(a){return[this.cx+a*this.sin_p0,this.cy+a*this.cos_p0,this.cx+a*this.sin_p1,this.cy+a*this.cos_p1]},b.prototype.calcSegment=function(a,b){var c,d,e,f,g,h,i,j,k,l;return k=this.calcArcPoints(a),c=k[0],e=k[1],d=k[2],f=k[3],l=this.calcArcPoints(b),g=l[0],i=l[1],h=l[2],j=l[3],"M"+c+","+e+("A"+a+","+a+",0,"+this.is_long+",0,"+d+","+f)+("L"+h+","+j)+("A"+b+","+b+",0,"+this.is_long+",1,"+g+","+i)+"Z"},b.prototype.calcArc=function(a){var b,c,d,e,f;return f=this.calcArcPoints(a),b=f[0],d=f[1],c=f[2],e=f[3],"M"+b+","+d+("A"+a+","+a+",0,"+this.is_long+",0,"+c+","+e)},b.prototype.render=function(){var a=this;return this.arc=this.drawDonutArc(this.hilight,this.color),this.seg=this.drawDonutSegment(this.path,this.color,this.backgroundColor,function(){return a.fire("hover",a.index)},function(){return a.fire("click",a.index)})},b.prototype.drawDonutArc=function(a,b){return this.raphael.path(a).attr({stroke:b,"stroke-width":2,opacity:0})},b.prototype.drawDonutSegment=function(a,b,c,d,e){return this.raphael.path(a).attr({fill:b,stroke:c,"stroke-width":3}).hover(d).click(e)},b.prototype.select=function(){return this.selected?void 0:(this.seg.animate({path:this.selectedPath},150,"<>"),this.arc.animate({opacity:1},150,"<>"),this.selected=!0)},b.prototype.deselect=function(){return this.selected?(this.seg.animate({path:this.path},150,"<>"),this.arc.animate({opacity:0},150,"<>"),this.selected=!1):void 0},b}(b.EventEmitter)}).call(this); \ No newline at end of file diff --git a/assets/plugins/pace/pace.js b/assets/plugins/pace/pace.js deleted file mode 100644 index c47d6e5a..00000000 --- a/assets/plugins/pace/pace.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! pace 1.0.0 */ -(function(){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X=[].slice,Y={}.hasOwnProperty,Z=function(a,b){function c(){this.constructor=a}for(var d in b)Y.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},$=[].indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(b in this&&this[b]===a)return b;return-1};for(u={catchupTime:100,initialRate:.03,minTime:250,ghostTime:100,maxProgressPerFrame:20,easeFactor:1.25,startOnPageLoad:!0,restartOnPushState:!0,restartOnRequestAfter:500,target:"body",elements:{checkInterval:100,selectors:["body"]},eventLag:{minSamples:10,sampleCount:3,lagThreshold:3},ajax:{trackMethods:["GET"],trackWebSockets:!0,ignoreURLs:[]}},C=function(){var a;return null!=(a="undefined"!=typeof performance&&null!==performance&&"function"==typeof performance.now?performance.now():void 0)?a:+new Date},E=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame,t=window.cancelAnimationFrame||window.mozCancelAnimationFrame,null==E&&(E=function(a){return setTimeout(a,50)},t=function(a){return clearTimeout(a)}),G=function(a){var b,c;return b=C(),(c=function(){var d;return d=C()-b,d>=33?(b=C(),a(d,function(){return E(c)})):setTimeout(c,33-d)})()},F=function(){var a,b,c;return c=arguments[0],b=arguments[1],a=3<=arguments.length?X.call(arguments,2):[],"function"==typeof c[b]?c[b].apply(c,a):c[b]},v=function(){var a,b,c,d,e,f,g;for(b=arguments[0],d=2<=arguments.length?X.call(arguments,1):[],f=0,g=d.length;g>f;f++)if(c=d[f])for(a in c)Y.call(c,a)&&(e=c[a],null!=b[a]&&"object"==typeof b[a]&&null!=e&&"object"==typeof e?v(b[a],e):b[a]=e);return b},q=function(a){var b,c,d,e,f;for(c=b=0,e=0,f=a.length;f>e;e++)d=a[e],c+=Math.abs(d),b++;return c/b},x=function(a,b){var c,d,e;if(null==a&&(a="options"),null==b&&(b=!0),e=document.querySelector("[data-pace-"+a+"]")){if(c=e.getAttribute("data-pace-"+a),!b)return c;try{return JSON.parse(c)}catch(f){return d=f,"undefined"!=typeof console&&null!==console?console.error("Error parsing inline pace options",d):void 0}}},g=function(){function a(){}return a.prototype.on=function(a,b,c,d){var e;return null==d&&(d=!1),null==this.bindings&&(this.bindings={}),null==(e=this.bindings)[a]&&(e[a]=[]),this.bindings[a].push({handler:b,ctx:c,once:d})},a.prototype.once=function(a,b,c){return this.on(a,b,c,!0)},a.prototype.off=function(a,b){var c,d,e;if(null!=(null!=(d=this.bindings)?d[a]:void 0)){if(null==b)return delete this.bindings[a];for(c=0,e=[];c<this.bindings[a].length;)e.push(this.bindings[a][c].handler===b?this.bindings[a].splice(c,1):c++);return e}},a.prototype.trigger=function(){var a,b,c,d,e,f,g,h,i;if(c=arguments[0],a=2<=arguments.length?X.call(arguments,1):[],null!=(g=this.bindings)?g[c]:void 0){for(e=0,i=[];e<this.bindings[c].length;)h=this.bindings[c][e],d=h.handler,b=h.ctx,f=h.once,d.apply(null!=b?b:this,a),i.push(f?this.bindings[c].splice(e,1):e++);return i}},a}(),j=window.Pace||{},window.Pace=j,v(j,g.prototype),D=j.options=v({},u,window.paceOptions,x()),U=["ajax","document","eventLag","elements"],Q=0,S=U.length;S>Q;Q++)K=U[Q],D[K]===!0&&(D[K]=u[K]);i=function(a){function b(){return V=b.__super__.constructor.apply(this,arguments)}return Z(b,a),b}(Error),b=function(){function a(){this.progress=0}return a.prototype.getElement=function(){var a;if(null==this.el){if(a=document.querySelector(D.target),!a)throw new i;this.el=document.createElement("div"),this.el.className="pace pace-active",document.body.className=document.body.className.replace(/pace-done/g,""),document.body.className+=" pace-running",this.el.innerHTML='<div class="pace-progress">\n <div class="pace-progress-inner"></div>\n</div>\n<div class="pace-activity"></div>',null!=a.firstChild?a.insertBefore(this.el,a.firstChild):a.appendChild(this.el)}return this.el},a.prototype.finish=function(){var a;return a=this.getElement(),a.className=a.className.replace("pace-active",""),a.className+=" pace-inactive",document.body.className=document.body.className.replace("pace-running",""),document.body.className+=" pace-done"},a.prototype.update=function(a){return this.progress=a,this.render()},a.prototype.destroy=function(){try{this.getElement().parentNode.removeChild(this.getElement())}catch(a){i=a}return this.el=void 0},a.prototype.render=function(){var a,b,c,d,e,f,g;if(null==document.querySelector(D.target))return!1;for(a=this.getElement(),d="translate3d("+this.progress+"%, 0, 0)",g=["webkitTransform","msTransform","transform"],e=0,f=g.length;f>e;e++)b=g[e],a.children[0].style[b]=d;return(!this.lastRenderedProgress||this.lastRenderedProgress|0!==this.progress|0)&&(a.children[0].setAttribute("data-progress-text",""+(0|this.progress)+"%"),this.progress>=100?c="99":(c=this.progress<10?"0":"",c+=0|this.progress),a.children[0].setAttribute("data-progress",""+c)),this.lastRenderedProgress=this.progress},a.prototype.done=function(){return this.progress>=100},a}(),h=function(){function a(){this.bindings={}}return a.prototype.trigger=function(a,b){var c,d,e,f,g;if(null!=this.bindings[a]){for(f=this.bindings[a],g=[],d=0,e=f.length;e>d;d++)c=f[d],g.push(c.call(this,b));return g}},a.prototype.on=function(a,b){var c;return null==(c=this.bindings)[a]&&(c[a]=[]),this.bindings[a].push(b)},a}(),P=window.XMLHttpRequest,O=window.XDomainRequest,N=window.WebSocket,w=function(a,b){var c,d,e,f;f=[];for(d in b.prototype)try{e=b.prototype[d],f.push(null==a[d]&&"function"!=typeof e?a[d]=e:void 0)}catch(g){c=g}return f},A=[],j.ignore=function(){var a,b,c;return b=arguments[0],a=2<=arguments.length?X.call(arguments,1):[],A.unshift("ignore"),c=b.apply(null,a),A.shift(),c},j.track=function(){var a,b,c;return b=arguments[0],a=2<=arguments.length?X.call(arguments,1):[],A.unshift("track"),c=b.apply(null,a),A.shift(),c},J=function(a){var b;if(null==a&&(a="GET"),"track"===A[0])return"force";if(!A.length&&D.ajax){if("socket"===a&&D.ajax.trackWebSockets)return!0;if(b=a.toUpperCase(),$.call(D.ajax.trackMethods,b)>=0)return!0}return!1},k=function(a){function b(){var a,c=this;b.__super__.constructor.apply(this,arguments),a=function(a){var b;return b=a.open,a.open=function(d,e){return J(d)&&c.trigger("request",{type:d,url:e,request:a}),b.apply(a,arguments)}},window.XMLHttpRequest=function(b){var c;return c=new P(b),a(c),c};try{w(window.XMLHttpRequest,P)}catch(d){}if(null!=O){window.XDomainRequest=function(){var b;return b=new O,a(b),b};try{w(window.XDomainRequest,O)}catch(d){}}if(null!=N&&D.ajax.trackWebSockets){window.WebSocket=function(a,b){var d;return d=null!=b?new N(a,b):new N(a),J("socket")&&c.trigger("request",{type:"socket",url:a,protocols:b,request:d}),d};try{w(window.WebSocket,N)}catch(d){}}}return Z(b,a),b}(h),R=null,y=function(){return null==R&&(R=new k),R},I=function(a){var b,c,d,e;for(e=D.ajax.ignoreURLs,c=0,d=e.length;d>c;c++)if(b=e[c],"string"==typeof b){if(-1!==a.indexOf(b))return!0}else if(b.test(a))return!0;return!1},y().on("request",function(b){var c,d,e,f,g;return f=b.type,e=b.request,g=b.url,I(g)?void 0:j.running||D.restartOnRequestAfter===!1&&"force"!==J(f)?void 0:(d=arguments,c=D.restartOnRequestAfter||0,"boolean"==typeof c&&(c=0),setTimeout(function(){var b,c,g,h,i,k;if(b="socket"===f?e.readyState<2:0<(h=e.readyState)&&4>h){for(j.restart(),i=j.sources,k=[],c=0,g=i.length;g>c;c++){if(K=i[c],K instanceof a){K.watch.apply(K,d);break}k.push(void 0)}return k}},c))}),a=function(){function a(){var a=this;this.elements=[],y().on("request",function(){return a.watch.apply(a,arguments)})}return a.prototype.watch=function(a){var b,c,d,e;return d=a.type,b=a.request,e=a.url,I(e)?void 0:(c="socket"===d?new n(b):new o(b),this.elements.push(c))},a}(),o=function(){function a(a){var b,c,d,e,f,g,h=this;if(this.progress=0,null!=window.ProgressEvent)for(c=null,a.addEventListener("progress",function(a){return h.progress=a.lengthComputable?100*a.loaded/a.total:h.progress+(100-h.progress)/2},!1),g=["load","abort","timeout","error"],d=0,e=g.length;e>d;d++)b=g[d],a.addEventListener(b,function(){return h.progress=100},!1);else f=a.onreadystatechange,a.onreadystatechange=function(){var b;return 0===(b=a.readyState)||4===b?h.progress=100:3===a.readyState&&(h.progress=50),"function"==typeof f?f.apply(null,arguments):void 0}}return a}(),n=function(){function a(a){var b,c,d,e,f=this;for(this.progress=0,e=["error","open"],c=0,d=e.length;d>c;c++)b=e[c],a.addEventListener(b,function(){return f.progress=100},!1)}return a}(),d=function(){function a(a){var b,c,d,f;for(null==a&&(a={}),this.elements=[],null==a.selectors&&(a.selectors=[]),f=a.selectors,c=0,d=f.length;d>c;c++)b=f[c],this.elements.push(new e(b))}return a}(),e=function(){function a(a){this.selector=a,this.progress=0,this.check()}return a.prototype.check=function(){var a=this;return document.querySelector(this.selector)?this.done():setTimeout(function(){return a.check()},D.elements.checkInterval)},a.prototype.done=function(){return this.progress=100},a}(),c=function(){function a(){var a,b,c=this;this.progress=null!=(b=this.states[document.readyState])?b:100,a=document.onreadystatechange,document.onreadystatechange=function(){return null!=c.states[document.readyState]&&(c.progress=c.states[document.readyState]),"function"==typeof a?a.apply(null,arguments):void 0}}return a.prototype.states={loading:0,interactive:50,complete:100},a}(),f=function(){function a(){var a,b,c,d,e,f=this;this.progress=0,a=0,e=[],d=0,c=C(),b=setInterval(function(){var g;return g=C()-c-50,c=C(),e.push(g),e.length>D.eventLag.sampleCount&&e.shift(),a=q(e),++d>=D.eventLag.minSamples&&a<D.eventLag.lagThreshold?(f.progress=100,clearInterval(b)):f.progress=100*(3/(a+3))},50)}return a}(),m=function(){function a(a){this.source=a,this.last=this.sinceLastUpdate=0,this.rate=D.initialRate,this.catchup=0,this.progress=this.lastProgress=0,null!=this.source&&(this.progress=F(this.source,"progress"))}return a.prototype.tick=function(a,b){var c;return null==b&&(b=F(this.source,"progress")),b>=100&&(this.done=!0),b===this.last?this.sinceLastUpdate+=a:(this.sinceLastUpdate&&(this.rate=(b-this.last)/this.sinceLastUpdate),this.catchup=(b-this.progress)/D.catchupTime,this.sinceLastUpdate=0,this.last=b),b>this.progress&&(this.progress+=this.catchup*a),c=1-Math.pow(this.progress/100,D.easeFactor),this.progress+=c*this.rate*a,this.progress=Math.min(this.lastProgress+D.maxProgressPerFrame,this.progress),this.progress=Math.max(0,this.progress),this.progress=Math.min(100,this.progress),this.lastProgress=this.progress,this.progress},a}(),L=null,H=null,r=null,M=null,p=null,s=null,j.running=!1,z=function(){return D.restartOnPushState?j.restart():void 0},null!=window.history.pushState&&(T=window.history.pushState,window.history.pushState=function(){return z(),T.apply(window.history,arguments)}),null!=window.history.replaceState&&(W=window.history.replaceState,window.history.replaceState=function(){return z(),W.apply(window.history,arguments)}),l={ajax:a,elements:d,document:c,eventLag:f},(B=function(){var a,c,d,e,f,g,h,i;for(j.sources=L=[],g=["ajax","elements","document","eventLag"],c=0,e=g.length;e>c;c++)a=g[c],D[a]!==!1&&L.push(new l[a](D[a]));for(i=null!=(h=D.extraSources)?h:[],d=0,f=i.length;f>d;d++)K=i[d],L.push(new K(D));return j.bar=r=new b,H=[],M=new m})(),j.stop=function(){return j.trigger("stop"),j.running=!1,r.destroy(),s=!0,null!=p&&("function"==typeof t&&t(p),p=null),B()},j.restart=function(){return j.trigger("restart"),j.stop(),j.start()},j.go=function(){var a;return j.running=!0,r.render(),a=C(),s=!1,p=G(function(b,c){var d,e,f,g,h,i,k,l,n,o,p,q,t,u,v,w;for(l=100-r.progress,e=p=0,f=!0,i=q=0,u=L.length;u>q;i=++q)for(K=L[i],o=null!=H[i]?H[i]:H[i]=[],h=null!=(w=K.elements)?w:[K],k=t=0,v=h.length;v>t;k=++t)g=h[k],n=null!=o[k]?o[k]:o[k]=new m(g),f&=n.done,n.done||(e++,p+=n.tick(b));return d=p/e,r.update(M.tick(b,d)),r.done()||f||s?(r.update(100),j.trigger("done"),setTimeout(function(){return r.finish(),j.running=!1,j.trigger("hide")},Math.max(D.ghostTime,Math.max(D.minTime-(C()-a),0)))):c()})},j.start=function(a){v(D,a),j.running=!0;try{r.render()}catch(b){i=b}return document.querySelector(".pace")?(j.trigger("start"),j.go()):setTimeout(j.start,50)},"function"==typeof define&&define.amd?define(function(){return j}):"object"==typeof exports?module.exports=j:D.startOnPageLoad&&j.start()}).call(this); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/ar.js b/assets/plugins/select2/i18n/ar.js deleted file mode 100644 index 01a68829..00000000 --- a/assets/plugins/select2/i18n/ar.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ar",[],function(){return{errorLoading:function(){return"لا يمكن تحميل النتائج"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="الرجاء حذف "+t+" عناصر";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="الرجاء إضافة "+t+" عناصر";return n},loadingMore:function(){return"جاري تحميل نتائج إضافية..."},maximumSelected:function(e){var t="تستطيع إختيار "+e.maximum+" بنود فقط";return t},noResults:function(){return"لم يتم العثور على أي نتائج"},searching:function(){return"جاري البحث…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/az.js b/assets/plugins/select2/i18n/az.js deleted file mode 100644 index 2accb973..00000000 --- a/assets/plugins/select2/i18n/az.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/az",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return t+" simvol silin"},inputTooShort:function(e){var t=e.minimum-e.input.length;return t+" simvol daxil edin"},loadingMore:function(){return"Daha çox nəticə yüklənir…"},maximumSelected:function(e){return"Sadəcə "+e.maximum+" element seçə bilərsiniz"},noResults:function(){return"Nəticə tapılmadı"},searching:function(){return"Axtarılır…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/bg.js b/assets/plugins/select2/i18n/bg.js deleted file mode 100644 index 35ae9894..00000000 --- a/assets/plugins/select2/i18n/bg.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/bg",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Моля въведете с "+t+" по-малко символ";return t>1&&(n+="a"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Моля въведете още "+t+" символ";return t>1&&(n+="a"),n},loadingMore:function(){return"Зареждат се още…"},maximumSelected:function(e){var t="Можете да направите до "+e.maximum+" ";return e.maximum>1?t+="избора":t+="избор",t},noResults:function(){return"Няма намерени съвпадения"},searching:function(){return"Търсене…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/ca.js b/assets/plugins/select2/i18n/ca.js deleted file mode 100644 index fdb5f3d2..00000000 --- a/assets/plugins/select2/i18n/ca.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ca",[],function(){return{errorLoading:function(){return"La càrrega ha fallat"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Si us plau, elimina "+t+" car";return t==1?n+="àcter":n+="àcters",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Si us plau, introdueix "+t+" car";return t==1?n+="àcter":n+="àcters",n},loadingMore:function(){return"Carregant més resultats…"},maximumSelected:function(e){var t="Només es pot seleccionar "+e.maximum+" element";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No s'han trobat resultats"},searching:function(){return"Cercant…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/cs.js b/assets/plugins/select2/i18n/cs.js deleted file mode 100644 index 9651378a..00000000 --- a/assets/plugins/select2/i18n/cs.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/cs",[],function(){function e(e,t){switch(e){case 2:return t?"dva":"dvě";case 3:return"tři";case 4:return"čtyři"}return""}return{errorLoading:function(){return"Výsledky nemohly být načteny."},inputTooLong:function(t){var n=t.input.length-t.maximum;return n==1?"Prosím zadejte o jeden znak méně":n<=4?"Prosím zadejte o "+e(n,!0)+" znaky méně":"Prosím zadejte o "+n+" znaků méně"},inputTooShort:function(t){var n=t.minimum-t.input.length;return n==1?"Prosím zadejte ještě jeden znak":n<=4?"Prosím zadejte ještě další "+e(n,!0)+" znaky":"Prosím zadejte ještě dalších "+n+" znaků"},loadingMore:function(){return"Načítají se další výsledky…"},maximumSelected:function(t){var n=t.maximum;return n==1?"Můžete zvolit jen jednu položku":n<=4?"Můžete zvolit maximálně "+e(n,!1)+" položky":"Můžete zvolit maximálně "+n+" položek"},noResults:function(){return"Nenalezeny žádné položky"},searching:function(){return"Vyhledávání…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/da.js b/assets/plugins/select2/i18n/da.js deleted file mode 100644 index 501c51e9..00000000 --- a/assets/plugins/select2/i18n/da.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/da",[],function(){return{errorLoading:function(){return"Resultaterne kunne ikke indlæses."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Angiv venligst "+t+" tegn mindre";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Angiv venligst "+t+" tegn mere";return n},loadingMore:function(){return"Indlæser flere resultater…"},maximumSelected:function(e){var t="Du kan kun vælge "+e.maximum+" emne";return e.maximum!=1&&(t+="r"),t},noResults:function(){return"Ingen resultater fundet"},searching:function(){return"Søger…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/de.js b/assets/plugins/select2/i18n/de.js deleted file mode 100644 index 9a6d5536..00000000 --- a/assets/plugins/select2/i18n/de.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/de",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return"Bitte "+t+" Zeichen weniger eingeben"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Bitte "+t+" Zeichen mehr eingeben"},loadingMore:function(){return"Lade mehr Ergebnisse…"},maximumSelected:function(e){var t="Sie können nur "+e.maximum+" Eintr";return e.maximum===1?t+="ag":t+="äge",t+=" auswählen",t},noResults:function(){return"Keine Übereinstimmungen gefunden"},searching:function(){return"Suche…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/el.js b/assets/plugins/select2/i18n/el.js deleted file mode 100644 index 4735d140..00000000 --- a/assets/plugins/select2/i18n/el.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/el",[],function(){return{errorLoading:function(){return"Τα αποτελέσματα δεν μπόρεσαν να φορτώσουν."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Παρακαλώ διαγράψτε "+t+" χαρακτήρ";return t==1&&(n+="α"),t!=1&&(n+="ες"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Παρακαλώ συμπληρώστε "+t+" ή περισσότερους χαρακτήρες";return n},loadingMore:function(){return"Φόρτωση περισσότερων αποτελεσμάτων…"},maximumSelected:function(e){var t="Μπορείτε να επιλέξετε μόνο "+e.maximum+" επιλογ";return e.maximum==1&&(t+="ή"),e.maximum!=1&&(t+="ές"),t},noResults:function(){return"Δεν βρέθηκαν αποτελέσματα"},searching:function(){return"Αναζήτηση…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/en.js b/assets/plugins/select2/i18n/en.js deleted file mode 100644 index 8e80ede8..00000000 --- a/assets/plugins/select2/i18n/en.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Please delete "+t+" character";return t!=1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Please enter "+t+" or more characters";return n},loadingMore:function(){return"Loading more results…"},maximumSelected:function(e){var t="You can only select "+e.maximum+" item";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No results found"},searching:function(){return"Searching…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/es.js b/assets/plugins/select2/i18n/es.js deleted file mode 100644 index 0a096502..00000000 --- a/assets/plugins/select2/i18n/es.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/es",[],function(){return{errorLoading:function(){return"La carga falló"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Por favor, elimine "+t+" car";return t==1?n+="ácter":n+="acteres",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Por favor, introduzca "+t+" car";return t==1?n+="ácter":n+="acteres",n},loadingMore:function(){return"Cargando más resultados…"},maximumSelected:function(e){var t="Sólo puede seleccionar "+e.maximum+" elemento";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No se encontraron resultados"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/et.js b/assets/plugins/select2/i18n/et.js deleted file mode 100644 index c70f4a5b..00000000 --- a/assets/plugins/select2/i18n/et.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/et",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Sisesta "+t+" täht";return t!=1&&(n+="e"),n+=" vähem",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Sisesta "+t+" täht";return t!=1&&(n+="e"),n+=" rohkem",n},loadingMore:function(){return"Laen tulemusi…"},maximumSelected:function(e){var t="Saad vaid "+e.maximum+" tulemus";return e.maximum==1?t+="e":t+="t",t+=" valida",t},noResults:function(){return"Tulemused puuduvad"},searching:function(){return"Otsin…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/eu.js b/assets/plugins/select2/i18n/eu.js deleted file mode 100644 index 9336053a..00000000 --- a/assets/plugins/select2/i18n/eu.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/eu",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Idatzi ";return t==1?n+="karaktere bat":n+=t+" karaktere",n+=" gutxiago",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Idatzi ";return t==1?n+="karaktere bat":n+=t+" karaktere",n+=" gehiago",n},loadingMore:function(){return"Emaitza gehiago kargatzen…"},maximumSelected:function(e){return e.maximum===1?"Elementu bakarra hauta dezakezu":e.maximum+" elementu hauta ditzakezu soilik"},noResults:function(){return"Ez da bat datorrenik aurkitu"},searching:function(){return"Bilatzen…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/fa.js b/assets/plugins/select2/i18n/fa.js deleted file mode 100644 index 5118cd28..00000000 --- a/assets/plugins/select2/i18n/fa.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fa",[],function(){return{errorLoading:function(){return"امکان بارگذاری نتایج وجود ندارد."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="لطفاً "+t+" کاراکتر را حذف نمایید";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="لطفاً تعداد "+t+" کاراکتر یا بیشتر وارد نمایید";return n},loadingMore:function(){return"در حال بارگذاری نتایج بیشتر..."},maximumSelected:function(e){var t="شما تنها می‌توانید "+e.maximum+" آیتم را انتخاب نمایید";return t},noResults:function(){return"هیچ نتیجه‌ای یافت نشد"},searching:function(){return"در حال جستجو..."}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/fi.js b/assets/plugins/select2/i18n/fi.js deleted file mode 100644 index 9e60f26a..00000000 --- a/assets/plugins/select2/i18n/fi.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fi",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return"Ole hyvä ja anna "+t+" merkkiä vähemmän"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Ole hyvä ja anna "+t+" merkkiä lisää"},loadingMore:function(){return"Ladataan lisää tuloksia…"},maximumSelected:function(e){return"Voit valita ainoastaan "+e.maximum+" kpl"},noResults:function(){return"Ei tuloksia"},searching:function(){}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/fr.js b/assets/plugins/select2/i18n/fr.js deleted file mode 100644 index e4a66500..00000000 --- a/assets/plugins/select2/i18n/fr.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fr",[],function(){return{errorLoading:function(){return"Les résultats ne peuvent pas être chargés."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Supprimez "+t+" caractère";return t!==1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Saisissez "+t+" caractère";return t!==1&&(n+="s"),n},loadingMore:function(){return"Chargement de résultats supplémentaires…"},maximumSelected:function(e){var t="Vous pouvez seulement sélectionner "+e.maximum+" élément";return e.maximum!==1&&(t+="s"),t},noResults:function(){return"Aucun résultat trouvé"},searching:function(){return"Recherche en cours…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/gl.js b/assets/plugins/select2/i18n/gl.js deleted file mode 100644 index 02f258f9..00000000 --- a/assets/plugins/select2/i18n/gl.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/gl",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Elimine ";return t===1?n+="un carácter":n+=t+" caracteres",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Engada ";return t===1?n+="un carácter":n+=t+" caracteres",n},loadingMore:function(){return"Cargando máis resultados…"},maximumSelected:function(e){var t="Só pode ";return e.maximum===1?t+="un elemento":t+=e.maximum+" elementos",t},noResults:function(){return"Non se atoparon resultados"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/he.js b/assets/plugins/select2/i18n/he.js deleted file mode 100644 index 881f8d38..00000000 --- a/assets/plugins/select2/i18n/he.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/he",[],function(){return{errorLoading:function(){return"שגיאה בטעינת התוצאות"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="נא למחוק ";return t===1?n+="תו אחד":n+=t+" תווים",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="נא להכניס ";return t===1?n+="תו אחד":n+=t+" תווים",n+=" או יותר",n},loadingMore:function(){return"טוען תוצאות נוספות…"},maximumSelected:function(e){var t="באפשרותך לבחור עד ";return e.maximum===1?t+="פריט אחד":t+=e.maximum+" פריטים",t},noResults:function(){return"לא נמצאו תוצאות"},searching:function(){return"מחפש…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/hi.js b/assets/plugins/select2/i18n/hi.js deleted file mode 100644 index e8296842..00000000 --- a/assets/plugins/select2/i18n/hi.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hi",[],function(){return{errorLoading:function(){return"परिणामों को लोड नहीं किया जा सका।"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" अक्षर को हटा दें";return t>1&&(n=t+" अक्षरों को हटा दें "),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="कृपया "+t+" या अधिक अक्षर दर्ज करें";return n},loadingMore:function(){return"अधिक परिणाम लोड हो रहे है..."},maximumSelected:function(e){var t="आप केवल "+e.maximum+" आइटम का चयन कर सकते हैं";return t},noResults:function(){return"कोई परिणाम नहीं मिला"},searching:function(){return"खोज रहा है..."}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/hr.js b/assets/plugins/select2/i18n/hr.js deleted file mode 100644 index 89f7b12b..00000000 --- a/assets/plugins/select2/i18n/hr.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hr",[],function(){function e(e){var t=" "+e+" znak";return e%10<5&&e%10>0&&(e%100<5||e%100>19)?e%10>1&&(t+="a"):t+="ova",t}return{errorLoading:function(){return"Preuzimanje nije uspjelo."},inputTooLong:function(t){var n=t.input.length-t.maximum;return"Unesite "+e(n)},inputTooShort:function(t){var n=t.minimum-t.input.length;return"Unesite još "+e(n)},loadingMore:function(){return"Učitavanje rezultata…"},maximumSelected:function(e){return"Maksimalan broj odabranih stavki je "+e.maximum},noResults:function(){return"Nema rezultata"},searching:function(){return"Pretraga…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/hu.js b/assets/plugins/select2/i18n/hu.js deleted file mode 100644 index 74c8a90d..00000000 --- a/assets/plugins/select2/i18n/hu.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hu",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return"Túl hosszú. "+t+" karakterrel több, mint kellene."},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Túl rövid. Még "+t+" karakter hiányzik."},loadingMore:function(){return"Töltés…"},maximumSelected:function(e){return"Csak "+e.maximum+" elemet lehet kiválasztani."},noResults:function(){return"Nincs találat."},searching:function(){return"Keresés…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/id.js b/assets/plugins/select2/i18n/id.js deleted file mode 100644 index 95867826..00000000 --- a/assets/plugins/select2/i18n/id.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/id",[],function(){return{errorLoading:function(){return"Data tidak boleh diambil."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Hapuskan "+t+" huruf"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Masukkan "+t+" huruf lagi"},loadingMore:function(){return"Mengambil data…"},maximumSelected:function(e){return"Anda hanya dapat memilih "+e.maximum+" pilihan"},noResults:function(){return"Tidak ada data yang sesuai"},searching:function(){return"Mencari…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/is.js b/assets/plugins/select2/i18n/is.js deleted file mode 100644 index ab97a14d..00000000 --- a/assets/plugins/select2/i18n/is.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/is",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vinsamlegast styttið texta um "+t+" staf";return t<=1?n:n+"i"},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vinsamlegast skrifið "+t+" staf";return t>1&&(n+="i"),n+=" í viðbót",n},loadingMore:function(){return"Sæki fleiri niðurstöður…"},maximumSelected:function(e){return"Þú getur aðeins valið "+e.maximum+" atriði"},noResults:function(){return"Ekkert fannst"},searching:function(){return"Leita…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/it.js b/assets/plugins/select2/i18n/it.js deleted file mode 100644 index 7796b9f7..00000000 --- a/assets/plugins/select2/i18n/it.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/it",[],function(){return{errorLoading:function(){return"I risultati non possono essere caricati."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Per favore cancella "+t+" caratter";return t!==1?n+="i":n+="e",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Per favore inserisci "+t+" o più caratteri";return n},loadingMore:function(){return"Caricando più risultati…"},maximumSelected:function(e){var t="Puoi selezionare solo "+e.maximum+" element";return e.maximum!==1?t+="i":t+="o",t},noResults:function(){return"Nessun risultato trovato"},searching:function(){return"Sto cercando…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/ja.js b/assets/plugins/select2/i18n/ja.js deleted file mode 100644 index 9f4fff6c..00000000 --- a/assets/plugins/select2/i18n/ja.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ja",[],function(){return{errorLoading:function(){return"結果が読み込まれませんでした"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" 文字を削除してください";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="少なくとも "+t+" 文字を入力してください";return n},loadingMore:function(){return"読み込み中…"},maximumSelected:function(e){var t=e.maximum+" 件しか選択できません";return t},noResults:function(){return"対象が見つかりません"},searching:function(){return"検索しています…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/km.js b/assets/plugins/select2/i18n/km.js deleted file mode 100644 index 8e94adcf..00000000 --- a/assets/plugins/select2/i18n/km.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/km",[],function(){return{errorLoading:function(){return"មិនអាចទាញយកទិន្នន័យ"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="សូមលុបចេញ "+t+" អក្សរ";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="សូមបញ្ចូល"+t+" អក្សរ រឺ ច្រើនជាងនេះ";return n},loadingMore:function(){return"កំពុងទាញយកទិន្នន័យបន្ថែម..."},maximumSelected:function(e){var t="អ្នកអាចជ្រើសរើសបានតែ "+e.maximum+" ជម្រើសប៉ុណ្ណោះ";return t},noResults:function(){return"មិនមានលទ្ធផល"},searching:function(){return"កំពុងស្វែងរក..."}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/ko.js b/assets/plugins/select2/i18n/ko.js deleted file mode 100644 index 4ed03215..00000000 --- a/assets/plugins/select2/i18n/ko.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ko",[],function(){return{errorLoading:function(){return"결과를 불러올 수 없습니다."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="너무 깁니다. "+t+" 글자 지워주세요.";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="너무 짧습니다. "+t+" 글자 더 입력해주세요.";return n},loadingMore:function(){return"불러오는 중…"},maximumSelected:function(e){var t="최대 "+e.maximum+"개까지만 선택 가능합니다.";return t},noResults:function(){return"결과가 없습니다."},searching:function(){return"검색 중…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/lt.js b/assets/plugins/select2/i18n/lt.js deleted file mode 100644 index 05f3a6e5..00000000 --- a/assets/plugins/select2/i18n/lt.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/lt",[],function(){function e(e,t,n,r){return e%10===1&&(e%100<11||e%100>19)?t:e%10>=2&&e%10<=9&&(e%100<11||e%100>19)?n:r}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r="Pašalinkite "+n+" simbol";return r+=e(n,"į","ius","ių"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Įrašykite dar "+n+" simbol";return r+=e(n,"į","ius","ių"),r},loadingMore:function(){return"Kraunama daugiau rezultatų…"},maximumSelected:function(t){var n="Jūs galite pasirinkti tik "+t.maximum+" element";return n+=e(t.maximum,"ą","us","ų"),n},noResults:function(){return"Atitikmenų nerasta"},searching:function(){return"Ieškoma…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/lv.js b/assets/plugins/select2/i18n/lv.js deleted file mode 100644 index df8ee942..00000000 --- a/assets/plugins/select2/i18n/lv.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/lv",[],function(){function e(e,t,n,r){return e===11?t:e%10===1?n:r}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r="Lūdzu ievadiet par "+n;return r+=" simbol"+e(n,"iem","u","iem"),r+" mazāk"},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Lūdzu ievadiet vēl "+n;return r+=" simbol"+e(n,"us","u","us"),r},loadingMore:function(){return"Datu ielāde…"},maximumSelected:function(t){var n="Jūs varat izvēlēties ne vairāk kā "+t.maximum;return n+=" element"+e(t.maximum,"us","u","us"),n},noResults:function(){return"Sakritību nav"},searching:function(){return"Meklēšana…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/mk.js b/assets/plugins/select2/i18n/mk.js deleted file mode 100644 index 319ecca1..00000000 --- a/assets/plugins/select2/i18n/mk.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/mk",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Ве молиме внесете "+e.maximum+" помалку карактер";return e.maximum!==1&&(n+="и"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Ве молиме внесете уште "+e.maximum+" карактер";return e.maximum!==1&&(n+="и"),n},loadingMore:function(){return"Вчитување резултати…"},maximumSelected:function(e){var t="Можете да изберете само "+e.maximum+" ставк";return e.maximum===1?t+="а":t+="и",t},noResults:function(){return"Нема пронајдено совпаѓања"},searching:function(){return"Пребарување…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/ms.js b/assets/plugins/select2/i18n/ms.js deleted file mode 100644 index 4258f125..00000000 --- a/assets/plugins/select2/i18n/ms.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ms",[],function(){return{errorLoading:function(){return"Keputusan tidak berjaya dimuatkan."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Sila hapuskan "+t+" aksara"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Sila masukkan "+t+" atau lebih aksara"},loadingMore:function(){return"Sedang memuatkan keputusan…"},maximumSelected:function(e){return"Anda hanya boleh memilih "+e.maximum+" pilihan"},noResults:function(){return"Tiada padanan yang ditemui"},searching:function(){return"Mencari…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/nb.js b/assets/plugins/select2/i18n/nb.js deleted file mode 100644 index 6770087c..00000000 --- a/assets/plugins/select2/i18n/nb.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/nb",[],function(){return{errorLoading:function(){return"Kunne ikke hente resultater."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Vennligst fjern "+t+" tegn"},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vennligst skriv inn ";return t>1?n+=" flere tegn":n+=" tegn til",n},loadingMore:function(){return"Laster flere resultater…"},maximumSelected:function(e){return"Du kan velge maks "+e.maximum+" elementer"},noResults:function(){return"Ingen treff"},searching:function(){return"Søker…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/nl.js b/assets/plugins/select2/i18n/nl.js deleted file mode 100644 index 8bd5e3cf..00000000 --- a/assets/plugins/select2/i18n/nl.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/nl",[],function(){return{errorLoading:function(){return"De resultaten konden niet worden geladen."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Gelieve "+t+" karakters te verwijderen";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Gelieve "+t+" of meer karakters in te voeren";return n},loadingMore:function(){return"Meer resultaten laden…"},maximumSelected:function(e){var t=e.maximum==1?"kan":"kunnen",n="Er "+t+" maar "+e.maximum+" item";return e.maximum!=1&&(n+="s"),n+=" worden geselecteerd",n},noResults:function(){return"Geen resultaten gevonden…"},searching:function(){return"Zoeken…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/pl.js b/assets/plugins/select2/i18n/pl.js deleted file mode 100644 index 54ba28e9..00000000 --- a/assets/plugins/select2/i18n/pl.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pl",[],function(){var e=["znak","znaki","znaków"],t=["element","elementy","elementów"],n=function(t,n){if(t===1)return n[0];if(t>1&&t<=4)return n[1];if(t>=5)return n[2]};return{errorLoading:function(){return"Nie można załadować wyników."},inputTooLong:function(t){var r=t.input.length-t.maximum;return"Usuń "+r+" "+n(r,e)},inputTooShort:function(t){var r=t.minimum-t.input.length;return"Podaj przynajmniej "+r+" "+n(r,e)},loadingMore:function(){return"Trwa ładowanie…"},maximumSelected:function(e){return"Możesz zaznaczyć tylko "+e.maximum+" "+n(e.maximum,t)},noResults:function(){return"Brak wyników"},searching:function(){return"Trwa wyszukiwanie…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/pt-BR.js b/assets/plugins/select2/i18n/pt-BR.js deleted file mode 100644 index a6629c8a..00000000 --- a/assets/plugins/select2/i18n/pt-BR.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pt-BR",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Apague "+t+" caracter";return t!=1&&(n+="es"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Digite "+t+" ou mais caracteres";return n},loadingMore:function(){return"Carregando mais resultados…"},maximumSelected:function(e){var t="Você só pode selecionar "+e.maximum+" ite";return e.maximum==1?t+="m":t+="ns",t},noResults:function(){return"Nenhum resultado encontrado"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/pt.js b/assets/plugins/select2/i18n/pt.js deleted file mode 100644 index 0cbda561..00000000 --- a/assets/plugins/select2/i18n/pt.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pt",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Por favor apague "+t+" ";return n+=t!=1?"caracteres":"carácter",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Introduza "+t+" ou mais caracteres";return n},loadingMore:function(){return"A carregar mais resultados…"},maximumSelected:function(e){var t="Apenas pode seleccionar "+e.maximum+" ";return t+=e.maximum!=1?"itens":"item",t},noResults:function(){return"Sem resultados"},searching:function(){return"A procurar…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/ro.js b/assets/plugins/select2/i18n/ro.js deleted file mode 100644 index 788a2637..00000000 --- a/assets/plugins/select2/i18n/ro.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ro",[],function(){return{errorLoading:function(){return"Rezultatele nu au putut fi incărcate."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vă rugăm să ștergeți"+t+" caracter";return t!==1&&(n+="e"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vă rugăm să introduceți "+t+"sau mai multe caractere";return n},loadingMore:function(){return"Se încarcă mai multe rezultate…"},maximumSelected:function(e){var t="Aveți voie să selectați cel mult "+e.maximum;return t+=" element",e.maximum!==1&&(t+="e"),t},noResults:function(){return"Nu au fost găsite rezultate"},searching:function(){return"Căutare…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/ru.js b/assets/plugins/select2/i18n/ru.js deleted file mode 100644 index 9ecab809..00000000 --- a/assets/plugins/select2/i18n/ru.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ru",[],function(){function e(e,t,n,r){return e%10<5&&e%10>0&&e%100<5||e%100>20?e%10>1?n:t:r}return{errorLoading:function(){return"Невозможно загрузить результаты"},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Пожалуйста, введите на "+n+" символ";return r+=e(n,"","a","ов"),r+=" меньше",r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Пожалуйста, введите еще хотя бы "+n+" символ";return r+=e(n,"","a","ов"),r},loadingMore:function(){return"Загрузка данных…"},maximumSelected:function(t){var n="Вы можете выбрать не более "+t.maximum+" элемент";return n+=e(t.maximum,"","a","ов"),n},noResults:function(){return"Совпадений не найдено"},searching:function(){return"Поиск…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/sk.js b/assets/plugins/select2/i18n/sk.js deleted file mode 100644 index 82f29413..00000000 --- a/assets/plugins/select2/i18n/sk.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sk",[],function(){var e={2:function(e){return e?"dva":"dve"},3:function(){return"tri"},4:function(){return"štyri"}};return{inputTooLong:function(t){var n=t.input.length-t.maximum;return n==1?"Prosím, zadajte o jeden znak menej":n>=2&&n<=4?"Prosím, zadajte o "+e[n](!0)+" znaky menej":"Prosím, zadajte o "+n+" znakov menej"},inputTooShort:function(t){var n=t.minimum-t.input.length;return n==1?"Prosím, zadajte ešte jeden znak":n<=4?"Prosím, zadajte ešte ďalšie "+e[n](!0)+" znaky":"Prosím, zadajte ešte ďalších "+n+" znakov"},loadingMore:function(){return"Loading more results…"},maximumSelected:function(t){return t.maximum==1?"Môžete zvoliť len jednu položku":t.maximum>=2&&t.maximum<=4?"Môžete zvoliť najviac "+e[t.maximum](!1)+" položky":"Môžete zvoliť najviac "+t.maximum+" položiek"},noResults:function(){return"Nenašli sa žiadne položky"},searching:function(){return"Vyhľadávanie…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/sr-Cyrl.js b/assets/plugins/select2/i18n/sr-Cyrl.js deleted file mode 100644 index e9453940..00000000 --- a/assets/plugins/select2/i18n/sr-Cyrl.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sr-Cyrl",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{errorLoading:function(){return"Преузимање није успело."},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Обришите "+n+" симбол";return r+=e(n,"","а","а"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Укуцајте бар још "+n+" симбол";return r+=e(n,"","а","а"),r},loadingMore:function(){return"Преузимање још резултата…"},maximumSelected:function(t){var n="Можете изабрати само "+t.maximum+" ставк";return n+=e(t.maximum,"у","е","и"),n},noResults:function(){return"Ништа није пронађено"},searching:function(){return"Претрага…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/sr.js b/assets/plugins/select2/i18n/sr.js deleted file mode 100644 index ac0cc721..00000000 --- a/assets/plugins/select2/i18n/sr.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sr",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{errorLoading:function(){return"Preuzimanje nije uspelo."},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Obrišite "+n+" simbol";return r+=e(n,"","a","a"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Ukucajte bar još "+n+" simbol";return r+=e(n,"","a","a"),r},loadingMore:function(){return"Preuzimanje još rezultata…"},maximumSelected:function(t){var n="Možete izabrati samo "+t.maximum+" stavk";return n+=e(t.maximum,"u","e","i"),n},noResults:function(){return"Ništa nije pronađeno"},searching:function(){return"Pretraga…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/sv.js b/assets/plugins/select2/i18n/sv.js deleted file mode 100644 index bedac08c..00000000 --- a/assets/plugins/select2/i18n/sv.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sv",[],function(){return{errorLoading:function(){return"Resultat kunde inte laddas."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vänligen sudda ut "+t+" tecken";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vänligen skriv in "+t+" eller fler tecken";return n},loadingMore:function(){return"Laddar fler resultat…"},maximumSelected:function(e){var t="Du kan max välja "+e.maximum+" element";return t},noResults:function(){return"Inga träffar"},searching:function(){return"Söker…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/th.js b/assets/plugins/select2/i18n/th.js deleted file mode 100644 index 097a86c6..00000000 --- a/assets/plugins/select2/i18n/th.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/th",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="โปรดลบออก "+t+" ตัวอักษร";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="โปรดพิมพ์เพิ่มอีก "+t+" ตัวอักษร";return n},loadingMore:function(){return"กำลังค้นข้อมูลเพิ่ม…"},maximumSelected:function(e){var t="คุณสามารถเลือกได้ไม่เกิน "+e.maximum+" รายการ";return t},noResults:function(){return"ไม่พบข้อมูล"},searching:function(){return"กำลังค้นข้อมูล…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/tr.js b/assets/plugins/select2/i18n/tr.js deleted file mode 100644 index 25d27a87..00000000 --- a/assets/plugins/select2/i18n/tr.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/tr",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" karakter daha girmelisiniz";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="En az "+t+" karakter daha girmelisiniz";return n},loadingMore:function(){return"Daha fazla…"},maximumSelected:function(e){var t="Sadece "+e.maximum+" seçim yapabilirsiniz";return t},noResults:function(){return"Sonuç bulunamadı"},searching:function(){return"Aranıyor…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/uk.js b/assets/plugins/select2/i18n/uk.js deleted file mode 100644 index eb3ca890..00000000 --- a/assets/plugins/select2/i18n/uk.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/uk",[],function(){function e(e,t,n,r){return e%100>10&&e%100<15?r:e%10===1?t:e%10>1&&e%10<5?n:r}return{errorLoading:function(){return"Неможливо завантажити результати"},inputTooLong:function(t){var n=t.input.length-t.maximum;return"Будь ласка, видаліть "+n+" "+e(t.maximum,"літеру","літери","літер")},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Будь ласка, введіть "+t+" або більше літер"},loadingMore:function(){return"Завантаження інших результатів…"},maximumSelected:function(t){return"Ви можете вибрати лише "+t.maximum+" "+e(t.maximum,"пункт","пункти","пунктів")},noResults:function(){return"Нічого не знайдено"},searching:function(){return"Пошук…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/vi.js b/assets/plugins/select2/i18n/vi.js deleted file mode 100644 index 8975b8ac..00000000 --- a/assets/plugins/select2/i18n/vi.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/vi",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vui lòng nhập ít hơn "+t+" ký tự";return t!=1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vui lòng nhập nhiều hơn "+t+' ký tự"';return n},loadingMore:function(){return"Đang lấy thêm kết quả…"},maximumSelected:function(e){var t="Chỉ có thể chọn được "+e.maximum+" lựa chọn";return t},noResults:function(){return"Không tìm thấy kết quả"},searching:function(){return"Đang tìm…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/zh-CN.js b/assets/plugins/select2/i18n/zh-CN.js deleted file mode 100644 index 2ed95972..00000000 --- a/assets/plugins/select2/i18n/zh-CN.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/zh-CN",[],function(){return{errorLoading:function(){return"无法载入结果。"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="请删除"+t+"个字符";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="请再输入至少"+t+"个字符";return n},loadingMore:function(){return"载入更多结果…"},maximumSelected:function(e){var t="最多只能选择"+e.maximum+"个项目";return t},noResults:function(){return"未找到结果"},searching:function(){return"搜索中…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/i18n/zh-TW.js b/assets/plugins/select2/i18n/zh-TW.js deleted file mode 100644 index ea0812ee..00000000 --- a/assets/plugins/select2/i18n/zh-TW.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ - -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/zh-TW",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="請刪掉"+t+"個字元";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="請再輸入"+t+"個字元";return n},loadingMore:function(){return"載入中…"},maximumSelected:function(e){var t="你只能選擇最多"+e.maximum+"項";return t},noResults:function(){return"沒有找到相符的項目"},searching:function(){return"搜尋中…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/assets/plugins/select2/select2.css b/assets/plugins/select2/select2.css deleted file mode 100644 index 447b2b86..00000000 --- a/assets/plugins/select2/select2.css +++ /dev/null @@ -1,484 +0,0 @@ -.select2-container { - box-sizing: border-box; - display: inline-block; - margin: 0; - position: relative; - vertical-align: middle; } - .select2-container .select2-selection--single { - box-sizing: border-box; - cursor: pointer; - display: block; - height: 28px; - user-select: none; - -webkit-user-select: none; } - .select2-container .select2-selection--single .select2-selection__rendered { - display: block; - padding-left: 8px; - padding-right: 20px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; } - .select2-container .select2-selection--single .select2-selection__clear { - position: relative; } - .select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered { - padding-right: 8px; - padding-left: 20px; } - .select2-container .select2-selection--multiple { - box-sizing: border-box; - cursor: pointer; - display: block; - min-height: 32px; - user-select: none; - -webkit-user-select: none; } - .select2-container .select2-selection--multiple .select2-selection__rendered { - display: inline-block; - overflow: hidden; - padding-left: 8px; - text-overflow: ellipsis; - white-space: nowrap; } - .select2-container .select2-search--inline { - float: left; } - .select2-container .select2-search--inline .select2-search__field { - box-sizing: border-box; - border: none; - font-size: 100%; - margin-top: 5px; - padding: 0; } - .select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button { - -webkit-appearance: none; } - -.select2-dropdown { - background-color: white; - border: 1px solid #aaa; - border-radius: 4px; - box-sizing: border-box; - display: block; - position: absolute; - left: -100000px; - width: 100%; - z-index: 1051; } - -.select2-results { - display: block; } - -.select2-results__options { - list-style: none; - margin: 0; - padding: 0; } - -.select2-results__option { - padding: 6px; - user-select: none; - -webkit-user-select: none; } - .select2-results__option[aria-selected] { - cursor: pointer; } - -.select2-container--open .select2-dropdown { - left: 0; } - -.select2-container--open .select2-dropdown--above { - border-bottom: none; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; } - -.select2-container--open .select2-dropdown--below { - border-top: none; - border-top-left-radius: 0; - border-top-right-radius: 0; } - -.select2-search--dropdown { - display: block; - padding: 4px; } - .select2-search--dropdown .select2-search__field { - padding: 4px; - width: 100%; - box-sizing: border-box; } - .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button { - -webkit-appearance: none; } - .select2-search--dropdown.select2-search--hide { - display: none; } - -.select2-close-mask { - border: 0; - margin: 0; - padding: 0; - display: block; - position: fixed; - left: 0; - top: 0; - min-height: 100%; - min-width: 100%; - height: auto; - width: auto; - opacity: 0; - z-index: 99; - background-color: #fff; - filter: alpha(opacity=0); } - -.select2-hidden-accessible { - border: 0 !important; - clip: rect(0 0 0 0) !important; - height: 1px !important; - margin: -1px !important; - overflow: hidden !important; - padding: 0 !important; - position: absolute !important; - width: 1px !important; } - -.select2-container--default .select2-selection--single { - background-color: #fff; - border: 1px solid #aaa; - border-radius: 4px; } - .select2-container--default .select2-selection--single .select2-selection__rendered { - color: #444; - line-height: 28px; } - .select2-container--default .select2-selection--single .select2-selection__clear { - cursor: pointer; - float: right; - font-weight: bold; } - .select2-container--default .select2-selection--single .select2-selection__placeholder { - color: #999; } - .select2-container--default .select2-selection--single .select2-selection__arrow { - height: 26px; - position: absolute; - top: 1px; - right: 1px; - width: 20px; } - .select2-container--default .select2-selection--single .select2-selection__arrow b { - border-color: #888 transparent transparent transparent; - border-style: solid; - border-width: 5px 4px 0 4px; - height: 0; - left: 50%; - margin-left: -4px; - margin-top: -2px; - position: absolute; - top: 50%; - width: 0; } - -.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear { - float: left; } - -.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow { - left: 1px; - right: auto; } - -.select2-container--default.select2-container--disabled .select2-selection--single { - background-color: #eee; - cursor: default; } - .select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear { - display: none; } - -.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b { - border-color: transparent transparent #888 transparent; - border-width: 0 4px 5px 4px; } - -.select2-container--default .select2-selection--multiple { - background-color: white; - border: 1px solid #aaa; - border-radius: 4px; - cursor: text; } - .select2-container--default .select2-selection--multiple .select2-selection__rendered { - box-sizing: border-box; - list-style: none; - margin: 0; - padding: 0 5px; - width: 100%; } - .select2-container--default .select2-selection--multiple .select2-selection__rendered li { - list-style: none; } - .select2-container--default .select2-selection--multiple .select2-selection__placeholder { - color: #999; - margin-top: 5px; - float: left; } - .select2-container--default .select2-selection--multiple .select2-selection__clear { - cursor: pointer; - float: right; - font-weight: bold; - margin-top: 5px; - margin-right: 10px; } - .select2-container--default .select2-selection--multiple .select2-selection__choice { - background-color: #e4e4e4; - border: 1px solid #aaa; - border-radius: 4px; - cursor: default; - float: left; - margin-right: 5px; - margin-top: 5px; - padding: 0 5px; } - .select2-container--default .select2-selection--multiple .select2-selection__choice__remove { - color: #999; - cursor: pointer; - display: inline-block; - font-weight: bold; - margin-right: 2px; } - .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover { - color: #333; } - -.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline { - float: right; } - -.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice { - margin-left: 5px; - margin-right: auto; } - -.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { - margin-left: 2px; - margin-right: auto; } - -.select2-container--default.select2-container--focus .select2-selection--multiple { - border: solid black 1px; - outline: 0; } - -.select2-container--default.select2-container--disabled .select2-selection--multiple { - background-color: #eee; - cursor: default; } - -.select2-container--default.select2-container--disabled .select2-selection__choice__remove { - display: none; } - -.select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple { - border-top-left-radius: 0; - border-top-right-radius: 0; } - -.select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple { - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; } - -.select2-container--default .select2-search--dropdown .select2-search__field { - border: 1px solid #aaa; } - -.select2-container--default .select2-search--inline .select2-search__field { - background: transparent; - border: none; - outline: 0; - box-shadow: none; - -webkit-appearance: textfield; } - -.select2-container--default .select2-results > .select2-results__options { - max-height: 200px; - overflow-y: auto; } - -.select2-container--default .select2-results__option[role=group] { - padding: 0; } - -.select2-container--default .select2-results__option[aria-disabled=true] { - color: #999; } - -.select2-container--default .select2-results__option[aria-selected=true] { - background-color: #ddd; } - -.select2-container--default .select2-results__option .select2-results__option { - padding-left: 1em; } - .select2-container--default .select2-results__option .select2-results__option .select2-results__group { - padding-left: 0; } - .select2-container--default .select2-results__option .select2-results__option .select2-results__option { - margin-left: -1em; - padding-left: 2em; } - .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option { - margin-left: -2em; - padding-left: 3em; } - .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { - margin-left: -3em; - padding-left: 4em; } - .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { - margin-left: -4em; - padding-left: 5em; } - .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { - margin-left: -5em; - padding-left: 6em; } - -.select2-container--default .select2-results__option--highlighted[aria-selected] { - background-color: #5897fb; - color: white; } - -.select2-container--default .select2-results__group { - cursor: default; - display: block; - padding: 6px; } - -.select2-container--classic .select2-selection--single { - background-color: #f7f7f7; - border: 1px solid #aaa; - border-radius: 4px; - outline: 0; - background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%); - background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%); - background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); } - .select2-container--classic .select2-selection--single:focus { - border: 1px solid #5897fb; } - .select2-container--classic .select2-selection--single .select2-selection__rendered { - color: #444; - line-height: 28px; } - .select2-container--classic .select2-selection--single .select2-selection__clear { - cursor: pointer; - float: right; - font-weight: bold; - margin-right: 10px; } - .select2-container--classic .select2-selection--single .select2-selection__placeholder { - color: #999; } - .select2-container--classic .select2-selection--single .select2-selection__arrow { - background-color: #ddd; - border: none; - border-left: 1px solid #aaa; - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; - height: 26px; - position: absolute; - top: 1px; - right: 1px; - width: 20px; - background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%); - background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%); - background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); } - .select2-container--classic .select2-selection--single .select2-selection__arrow b { - border-color: #888 transparent transparent transparent; - border-style: solid; - border-width: 5px 4px 0 4px; - height: 0; - left: 50%; - margin-left: -4px; - margin-top: -2px; - position: absolute; - top: 50%; - width: 0; } - -.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear { - float: left; } - -.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow { - border: none; - border-right: 1px solid #aaa; - border-radius: 0; - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; - left: 1px; - right: auto; } - -.select2-container--classic.select2-container--open .select2-selection--single { - border: 1px solid #5897fb; } - .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow { - background: transparent; - border: none; } - .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b { - border-color: transparent transparent #888 transparent; - border-width: 0 4px 5px 4px; } - -.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single { - border-top: none; - border-top-left-radius: 0; - border-top-right-radius: 0; - background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%); - background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%); - background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); } - -.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single { - border-bottom: none; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; - background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%); - background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%); - background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); } - -.select2-container--classic .select2-selection--multiple { - background-color: white; - border: 1px solid #aaa; - border-radius: 4px; - cursor: text; - outline: 0; } - .select2-container--classic .select2-selection--multiple:focus { - border: 1px solid #5897fb; } - .select2-container--classic .select2-selection--multiple .select2-selection__rendered { - list-style: none; - margin: 0; - padding: 0 5px; } - .select2-container--classic .select2-selection--multiple .select2-selection__clear { - display: none; } - .select2-container--classic .select2-selection--multiple .select2-selection__choice { - background-color: #e4e4e4; - border: 1px solid #aaa; - border-radius: 4px; - cursor: default; - float: left; - margin-right: 5px; - margin-top: 5px; - padding: 0 5px; } - .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove { - color: #888; - cursor: pointer; - display: inline-block; - font-weight: bold; - margin-right: 2px; } - .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover { - color: #555; } - -.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice { - float: right; } - -.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice { - margin-left: 5px; - margin-right: auto; } - -.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { - margin-left: 2px; - margin-right: auto; } - -.select2-container--classic.select2-container--open .select2-selection--multiple { - border: 1px solid #5897fb; } - -.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple { - border-top: none; - border-top-left-radius: 0; - border-top-right-radius: 0; } - -.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple { - border-bottom: none; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; } - -.select2-container--classic .select2-search--dropdown .select2-search__field { - border: 1px solid #aaa; - outline: 0; } - -.select2-container--classic .select2-search--inline .select2-search__field { - outline: 0; - box-shadow: none; } - -.select2-container--classic .select2-dropdown { - background-color: white; - border: 1px solid transparent; } - -.select2-container--classic .select2-dropdown--above { - border-bottom: none; } - -.select2-container--classic .select2-dropdown--below { - border-top: none; } - -.select2-container--classic .select2-results > .select2-results__options { - max-height: 200px; - overflow-y: auto; } - -.select2-container--classic .select2-results__option[role=group] { - padding: 0; } - -.select2-container--classic .select2-results__option[aria-disabled=true] { - color: grey; } - -.select2-container--classic .select2-results__option--highlighted[aria-selected] { - background-color: #3875d7; - color: white; } - -.select2-container--classic .select2-results__group { - cursor: default; - display: block; - padding: 6px; } - -.select2-container--classic.select2-container--open .select2-dropdown { - border-color: #5897fb; } diff --git a/assets/plugins/select2/select2.full.js b/assets/plugins/select2/select2.full.js deleted file mode 100644 index e750834e..00000000 --- a/assets/plugins/select2/select2.full.js +++ /dev/null @@ -1,6436 +0,0 @@ -/*! - * Select2 4.0.3 - * https://select2.github.io - * - * Released under the MIT license - * https://github.com/select2/select2/blob/master/LICENSE.md - */ -(function (factory) { - if (typeof define === 'function' && define.amd) { - // AMD. Register as an anonymous module. - define(['jquery'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS - factory(require('jquery')); - } else { - // Browser globals - factory(jQuery); - } -}(function (jQuery) { - // This is needed so we can catch the AMD loader configuration and use it - // The inner file should be wrapped (by `banner.start.js`) in a function that - // returns the AMD loader references. - var S2 = -(function () { - // Restore the Select2 AMD loader so it can be used - // Needed mostly in the language files, where the loader is not inserted - if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) { - var S2 = jQuery.fn.select2.amd; - } -var S2;(function () { if (!S2 || !S2.requirejs) { -if (!S2) { S2 = {}; } else { require = S2; } -/** - * @license almond 0.3.1 Copyright (c) 2011-2014, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/almond for details - */ -//Going sloppy to avoid 'use strict' string cost, but strict practices should -//be followed. -/*jslint sloppy: true */ -/*global setTimeout: false */ - -var requirejs, require, define; -(function (undef) { - var main, req, makeMap, handlers, - defined = {}, - waiting = {}, - config = {}, - defining = {}, - hasOwn = Object.prototype.hasOwnProperty, - aps = [].slice, - jsSuffixRegExp = /\.js$/; - - function hasProp(obj, prop) { - return hasOwn.call(obj, prop); - } - - /** - * Given a relative module name, like ./something, normalize it to - * a real name that can be mapped to a path. - * @param {String} name the relative name - * @param {String} baseName a real name that the name arg is relative - * to. - * @returns {String} normalized name - */ - function normalize(name, baseName) { - var nameParts, nameSegment, mapValue, foundMap, lastIndex, - foundI, foundStarMap, starI, i, j, part, - baseParts = baseName && baseName.split("/"), - map = config.map, - starMap = (map && map['*']) || {}; - - //Adjust any relative paths. - if (name && name.charAt(0) === ".") { - //If have a base name, try to normalize against it, - //otherwise, assume it is a top-level require that will - //be relative to baseUrl in the end. - if (baseName) { - name = name.split('/'); - lastIndex = name.length - 1; - - // Node .js allowance: - if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) { - name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, ''); - } - - //Lop off the last part of baseParts, so that . matches the - //"directory" and not name of the baseName's module. For instance, - //baseName of "one/two/three", maps to "one/two/three.js", but we - //want the directory, "one/two" for this normalization. - name = baseParts.slice(0, baseParts.length - 1).concat(name); - - //start trimDots - for (i = 0; i < name.length; i += 1) { - part = name[i]; - if (part === ".") { - name.splice(i, 1); - i -= 1; - } else if (part === "..") { - if (i === 1 && (name[2] === '..' || name[0] === '..')) { - //End of the line. Keep at least one non-dot - //path segment at the front so it can be mapped - //correctly to disk. Otherwise, there is likely - //no path mapping for a path starting with '..'. - //This can still fail, but catches the most reasonable - //uses of .. - break; - } else if (i > 0) { - name.splice(i - 1, 2); - i -= 2; - } - } - } - //end trimDots - - name = name.join("/"); - } else if (name.indexOf('./') === 0) { - // No baseName, so this is ID is resolved relative - // to baseUrl, pull off the leading dot. - name = name.substring(2); - } - } - - //Apply map config if available. - if ((baseParts || starMap) && map) { - nameParts = name.split('/'); - - for (i = nameParts.length; i > 0; i -= 1) { - nameSegment = nameParts.slice(0, i).join("/"); - - if (baseParts) { - //Find the longest baseName segment match in the config. - //So, do joins on the biggest to smallest lengths of baseParts. - for (j = baseParts.length; j > 0; j -= 1) { - mapValue = map[baseParts.slice(0, j).join('/')]; - - //baseName segment has config, find if it has one for - //this name. - if (mapValue) { - mapValue = mapValue[nameSegment]; - if (mapValue) { - //Match, update name to the new value. - foundMap = mapValue; - foundI = i; - break; - } - } - } - } - - if (foundMap) { - break; - } - - //Check for a star map match, but just hold on to it, - //if there is a shorter segment match later in a matching - //config, then favor over this star map. - if (!foundStarMap && starMap && starMap[nameSegment]) { - foundStarMap = starMap[nameSegment]; - starI = i; - } - } - - if (!foundMap && foundStarMap) { - foundMap = foundStarMap; - foundI = starI; - } - - if (foundMap) { - nameParts.splice(0, foundI, foundMap); - name = nameParts.join('/'); - } - } - - return name; - } - - function makeRequire(relName, forceSync) { - return function () { - //A version of a require function that passes a moduleName - //value for items that may need to - //look up paths relative to the moduleName - var args = aps.call(arguments, 0); - - //If first arg is not require('string'), and there is only - //one arg, it is the array form without a callback. Insert - //a null so that the following concat is correct. - if (typeof args[0] !== 'string' && args.length === 1) { - args.push(null); - } - return req.apply(undef, args.concat([relName, forceSync])); - }; - } - - function makeNormalize(relName) { - return function (name) { - return normalize(name, relName); - }; - } - - function makeLoad(depName) { - return function (value) { - defined[depName] = value; - }; - } - - function callDep(name) { - if (hasProp(waiting, name)) { - var args = waiting[name]; - delete waiting[name]; - defining[name] = true; - main.apply(undef, args); - } - - if (!hasProp(defined, name) && !hasProp(defining, name)) { - throw new Error('No ' + name); - } - return defined[name]; - } - - //Turns a plugin!resource to [plugin, resource] - //with the plugin being undefined if the name - //did not have a plugin prefix. - function splitPrefix(name) { - var prefix, - index = name ? name.indexOf('!') : -1; - if (index > -1) { - prefix = name.substring(0, index); - name = name.substring(index + 1, name.length); - } - return [prefix, name]; - } - - /** - * Makes a name map, normalizing the name, and using a plugin - * for normalization if necessary. Grabs a ref to plugin - * too, as an optimization. - */ - makeMap = function (name, relName) { - var plugin, - parts = splitPrefix(name), - prefix = parts[0]; - - name = parts[1]; - - if (prefix) { - prefix = normalize(prefix, relName); - plugin = callDep(prefix); - } - - //Normalize according - if (prefix) { - if (plugin && plugin.normalize) { - name = plugin.normalize(name, makeNormalize(relName)); - } else { - name = normalize(name, relName); - } - } else { - name = normalize(name, relName); - parts = splitPrefix(name); - prefix = parts[0]; - name = parts[1]; - if (prefix) { - plugin = callDep(prefix); - } - } - - //Using ridiculous property names for space reasons - return { - f: prefix ? prefix + '!' + name : name, //fullName - n: name, - pr: prefix, - p: plugin - }; - }; - - function makeConfig(name) { - return function () { - return (config && config.config && config.config[name]) || {}; - }; - } - - handlers = { - require: function (name) { - return makeRequire(name); - }, - exports: function (name) { - var e = defined[name]; - if (typeof e !== 'undefined') { - return e; - } else { - return (defined[name] = {}); - } - }, - module: function (name) { - return { - id: name, - uri: '', - exports: defined[name], - config: makeConfig(name) - }; - } - }; - - main = function (name, deps, callback, relName) { - var cjsModule, depName, ret, map, i, - args = [], - callbackType = typeof callback, - usingExports; - - //Use name if no relName - relName = relName || name; - - //Call the callback to define the module, if necessary. - if (callbackType === 'undefined' || callbackType === 'function') { - //Pull out the defined dependencies and pass the ordered - //values to the callback. - //Default to [require, exports, module] if no deps - deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps; - for (i = 0; i < deps.length; i += 1) { - map = makeMap(deps[i], relName); - depName = map.f; - - //Fast path CommonJS standard dependencies. - if (depName === "require") { - args[i] = handlers.require(name); - } else if (depName === "exports") { - //CommonJS module spec 1.1 - args[i] = handlers.exports(name); - usingExports = true; - } else if (depName === "module") { - //CommonJS module spec 1.1 - cjsModule = args[i] = handlers.module(name); - } else if (hasProp(defined, depName) || - hasProp(waiting, depName) || - hasProp(defining, depName)) { - args[i] = callDep(depName); - } else if (map.p) { - map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {}); - args[i] = defined[depName]; - } else { - throw new Error(name + ' missing ' + depName); - } - } - - ret = callback ? callback.apply(defined[name], args) : undefined; - - if (name) { - //If setting exports via "module" is in play, - //favor that over return value and exports. After that, - //favor a non-undefined return value over exports use. - if (cjsModule && cjsModule.exports !== undef && - cjsModule.exports !== defined[name]) { - defined[name] = cjsModule.exports; - } else if (ret !== undef || !usingExports) { - //Use the return value from the function. - defined[name] = ret; - } - } - } else if (name) { - //May just be an object definition for the module. Only - //worry about defining if have a module name. - defined[name] = callback; - } - }; - - requirejs = require = req = function (deps, callback, relName, forceSync, alt) { - if (typeof deps === "string") { - if (handlers[deps]) { - //callback in this case is really relName - return handlers[deps](callback); - } - //Just return the module wanted. In this scenario, the - //deps arg is the module name, and second arg (if passed) - //is just the relName. - //Normalize module name, if it contains . or .. - return callDep(makeMap(deps, callback).f); - } else if (!deps.splice) { - //deps is a config object, not an array. - config = deps; - if (config.deps) { - req(config.deps, config.callback); - } - if (!callback) { - return; - } - - if (callback.splice) { - //callback is an array, which means it is a dependency list. - //Adjust args if there are dependencies - deps = callback; - callback = relName; - relName = null; - } else { - deps = undef; - } - } - - //Support require(['a']) - callback = callback || function () {}; - - //If relName is a function, it is an errback handler, - //so remove it. - if (typeof relName === 'function') { - relName = forceSync; - forceSync = alt; - } - - //Simulate async callback; - if (forceSync) { - main(undef, deps, callback, relName); - } else { - //Using a non-zero value because of concern for what old browsers - //do, and latest browsers "upgrade" to 4 if lower value is used: - //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout: - //If want a value immediately, use require('id') instead -- something - //that works in almond on the global level, but not guaranteed and - //unlikely to work in other AMD implementations. - setTimeout(function () { - main(undef, deps, callback, relName); - }, 4); - } - - return req; - }; - - /** - * Just drops the config on the floor, but returns req in case - * the config return value is used. - */ - req.config = function (cfg) { - return req(cfg); - }; - - /** - * Expose module registry for debugging and tooling - */ - requirejs._defined = defined; - - define = function (name, deps, callback) { - if (typeof name !== 'string') { - throw new Error('See almond README: incorrect module build, no module name'); - } - - //This module may not have dependencies - if (!deps.splice) { - //deps is not an array, so probably means - //an object literal or factory function for - //the value. Adjust args. - callback = deps; - deps = []; - } - - if (!hasProp(defined, name) && !hasProp(waiting, name)) { - waiting[name] = [name, deps, callback]; - } - }; - - define.amd = { - jQuery: true - }; -}()); - -S2.requirejs = requirejs;S2.require = require;S2.define = define; -} -}()); -S2.define("almond", function(){}); - -/* global jQuery:false, $:false */ -S2.define('jquery',[],function () { - var _$ = jQuery || $; - - if (_$ == null && console && console.error) { - console.error( - 'Select2: An instance of jQuery or a jQuery-compatible library was not ' + - 'found. Make sure that you are including jQuery before Select2 on your ' + - 'web page.' - ); - } - - return _$; -}); - -S2.define('select2/utils',[ - 'jquery' -], function ($) { - var Utils = {}; - - Utils.Extend = function (ChildClass, SuperClass) { - var __hasProp = {}.hasOwnProperty; - - function BaseConstructor () { - this.constructor = ChildClass; - } - - for (var key in SuperClass) { - if (__hasProp.call(SuperClass, key)) { - ChildClass[key] = SuperClass[key]; - } - } - - BaseConstructor.prototype = SuperClass.prototype; - ChildClass.prototype = new BaseConstructor(); - ChildClass.__super__ = SuperClass.prototype; - - return ChildClass; - }; - - function getMethods (theClass) { - var proto = theClass.prototype; - - var methods = []; - - for (var methodName in proto) { - var m = proto[methodName]; - - if (typeof m !== 'function') { - continue; - } - - if (methodName === 'constructor') { - continue; - } - - methods.push(methodName); - } - - return methods; - } - - Utils.Decorate = function (SuperClass, DecoratorClass) { - var decoratedMethods = getMethods(DecoratorClass); - var superMethods = getMethods(SuperClass); - - function DecoratedClass () { - var unshift = Array.prototype.unshift; - - var argCount = DecoratorClass.prototype.constructor.length; - - var calledConstructor = SuperClass.prototype.constructor; - - if (argCount > 0) { - unshift.call(arguments, SuperClass.prototype.constructor); - - calledConstructor = DecoratorClass.prototype.constructor; - } - - calledConstructor.apply(this, arguments); - } - - DecoratorClass.displayName = SuperClass.displayName; - - function ctr () { - this.constructor = DecoratedClass; - } - - DecoratedClass.prototype = new ctr(); - - for (var m = 0; m < superMethods.length; m++) { - var superMethod = superMethods[m]; - - DecoratedClass.prototype[superMethod] = - SuperClass.prototype[superMethod]; - } - - var calledMethod = function (methodName) { - // Stub out the original method if it's not decorating an actual method - var originalMethod = function () {}; - - if (methodName in DecoratedClass.prototype) { - originalMethod = DecoratedClass.prototype[methodName]; - } - - var decoratedMethod = DecoratorClass.prototype[methodName]; - - return function () { - var unshift = Array.prototype.unshift; - - unshift.call(arguments, originalMethod); - - return decoratedMethod.apply(this, arguments); - }; - }; - - for (var d = 0; d < decoratedMethods.length; d++) { - var decoratedMethod = decoratedMethods[d]; - - DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod); - } - - return DecoratedClass; - }; - - var Observable = function () { - this.listeners = {}; - }; - - Observable.prototype.on = function (event, callback) { - this.listeners = this.listeners || {}; - - if (event in this.listeners) { - this.listeners[event].push(callback); - } else { - this.listeners[event] = [callback]; - } - }; - - Observable.prototype.trigger = function (event) { - var slice = Array.prototype.slice; - var params = slice.call(arguments, 1); - - this.listeners = this.listeners || {}; - - // Params should always come in as an array - if (params == null) { - params = []; - } - - // If there are no arguments to the event, use a temporary object - if (params.length === 0) { - params.push({}); - } - - // Set the `_type` of the first object to the event - params[0]._type = event; - - if (event in this.listeners) { - this.invoke(this.listeners[event], slice.call(arguments, 1)); - } - - if ('*' in this.listeners) { - this.invoke(this.listeners['*'], arguments); - } - }; - - Observable.prototype.invoke = function (listeners, params) { - for (var i = 0, len = listeners.length; i < len; i++) { - listeners[i].apply(this, params); - } - }; - - Utils.Observable = Observable; - - Utils.generateChars = function (length) { - var chars = ''; - - for (var i = 0; i < length; i++) { - var randomChar = Math.floor(Math.random() * 36); - chars += randomChar.toString(36); - } - - return chars; - }; - - Utils.bind = function (func, context) { - return function () { - func.apply(context, arguments); - }; - }; - - Utils._convertData = function (data) { - for (var originalKey in data) { - var keys = originalKey.split('-'); - - var dataLevel = data; - - if (keys.length === 1) { - continue; - } - - for (var k = 0; k < keys.length; k++) { - var key = keys[k]; - - // Lowercase the first letter - // By default, dash-separated becomes camelCase - key = key.substring(0, 1).toLowerCase() + key.substring(1); - - if (!(key in dataLevel)) { - dataLevel[key] = {}; - } - - if (k == keys.length - 1) { - dataLevel[key] = data[originalKey]; - } - - dataLevel = dataLevel[key]; - } - - delete data[originalKey]; - } - - return data; - }; - - Utils.hasScroll = function (index, el) { - // Adapted from the function created by @ShadowScripter - // and adapted by @BillBarry on the Stack Exchange Code Review website. - // The original code can be found at - // http://codereview.stackexchange.com/q/13338 - // and was designed to be used with the Sizzle selector engine. - - var $el = $(el); - var overflowX = el.style.overflowX; - var overflowY = el.style.overflowY; - - //Check both x and y declarations - if (overflowX === overflowY && - (overflowY === 'hidden' || overflowY === 'visible')) { - return false; - } - - if (overflowX === 'scroll' || overflowY === 'scroll') { - return true; - } - - return ($el.innerHeight() < el.scrollHeight || - $el.innerWidth() < el.scrollWidth); - }; - - Utils.escapeMarkup = function (markup) { - var replaceMap = { - '\\': '&#92;', - '&': '&amp;', - '<': '&lt;', - '>': '&gt;', - '"': '&quot;', - '\'': '&#39;', - '/': '&#47;' - }; - - // Do not try to escape the markup if it's not a string - if (typeof markup !== 'string') { - return markup; - } - - return String(markup).replace(/[&<>"'\/\\]/g, function (match) { - return replaceMap[match]; - }); - }; - - // Append an array of jQuery nodes to a given element. - Utils.appendMany = function ($element, $nodes) { - // jQuery 1.7.x does not support $.fn.append() with an array - // Fall back to a jQuery object collection using $.fn.add() - if ($.fn.jquery.substr(0, 3) === '1.7') { - var $jqNodes = $(); - - $.map($nodes, function (node) { - $jqNodes = $jqNodes.add(node); - }); - - $nodes = $jqNodes; - } - - $element.append($nodes); - }; - - return Utils; -}); - -S2.define('select2/results',[ - 'jquery', - './utils' -], function ($, Utils) { - function Results ($element, options, dataAdapter) { - this.$element = $element; - this.data = dataAdapter; - this.options = options; - - Results.__super__.constructor.call(this); - } - - Utils.Extend(Results, Utils.Observable); - - Results.prototype.render = function () { - var $results = $( - '<ul class="select2-results__options" role="tree"></ul>' - ); - - if (this.options.get('multiple')) { - $results.attr('aria-multiselectable', 'true'); - } - - this.$results = $results; - - return $results; - }; - - Results.prototype.clear = function () { - this.$results.empty(); - }; - - Results.prototype.displayMessage = function (params) { - var escapeMarkup = this.options.get('escapeMarkup'); - - this.clear(); - this.hideLoading(); - - var $message = $( - '<li role="treeitem" aria-live="assertive"' + - ' class="select2-results__option"></li>' - ); - - var message = this.options.get('translations').get(params.message); - - $message.append( - escapeMarkup( - message(params.args) - ) - ); - - $message[0].className += ' select2-results__message'; - - this.$results.append($message); - }; - - Results.prototype.hideMessages = function () { - this.$results.find('.select2-results__message').remove(); - }; - - Results.prototype.append = function (data) { - this.hideLoading(); - - var $options = []; - - if (data.results == null || data.results.length === 0) { - if (this.$results.children().length === 0) { - this.trigger('results:message', { - message: 'noResults' - }); - } - - return; - } - - data.results = this.sort(data.results); - - for (var d = 0; d < data.results.length; d++) { - var item = data.results[d]; - - var $option = this.option(item); - - $options.push($option); - } - - this.$results.append($options); - }; - - Results.prototype.position = function ($results, $dropdown) { - var $resultsContainer = $dropdown.find('.select2-results'); - $resultsContainer.append($results); - }; - - Results.prototype.sort = function (data) { - var sorter = this.options.get('sorter'); - - return sorter(data); - }; - - Results.prototype.highlightFirstItem = function () { - var $options = this.$results - .find('.select2-results__option[aria-selected]'); - - var $selected = $options.filter('[aria-selected=true]'); - - // Check if there are any selected options - if ($selected.length > 0) { - // If there are selected options, highlight the first - $selected.first().trigger('mouseenter'); - } else { - // If there are no selected options, highlight the first option - // in the dropdown - $options.first().trigger('mouseenter'); - } - - this.ensureHighlightVisible(); - }; - - Results.prototype.setClasses = function () { - var self = this; - - this.data.current(function (selected) { - var selectedIds = $.map(selected, function (s) { - return s.id.toString(); - }); - - var $options = self.$results - .find('.select2-results__option[aria-selected]'); - - $options.each(function () { - var $option = $(this); - - var item = $.data(this, 'data'); - - // id needs to be converted to a string when comparing - var id = '' + item.id; - - if ((item.element != null && item.element.selected) || - (item.element == null && $.inArray(id, selectedIds) > -1)) { - $option.attr('aria-selected', 'true'); - } else { - $option.attr('aria-selected', 'false'); - } - }); - - }); - }; - - Results.prototype.showLoading = function (params) { - this.hideLoading(); - - var loadingMore = this.options.get('translations').get('searching'); - - var loading = { - disabled: true, - loading: true, - text: loadingMore(params) - }; - var $loading = this.option(loading); - $loading.className += ' loading-results'; - - this.$results.prepend($loading); - }; - - Results.prototype.hideLoading = function () { - this.$results.find('.loading-results').remove(); - }; - - Results.prototype.option = function (data) { - var option = document.createElement('li'); - option.className = 'select2-results__option'; - - var attrs = { - 'role': 'treeitem', - 'aria-selected': 'false' - }; - - if (data.disabled) { - delete attrs['aria-selected']; - attrs['aria-disabled'] = 'true'; - } - - if (data.id == null) { - delete attrs['aria-selected']; - } - - if (data._resultId != null) { - option.id = data._resultId; - } - - if (data.title) { - option.title = data.title; - } - - if (data.children) { - attrs.role = 'group'; - attrs['aria-label'] = data.text; - delete attrs['aria-selected']; - } - - for (var attr in attrs) { - var val = attrs[attr]; - - option.setAttribute(attr, val); - } - - if (data.children) { - var $option = $(option); - - var label = document.createElement('strong'); - label.className = 'select2-results__group'; - - var $label = $(label); - this.template(data, label); - - var $children = []; - - for (var c = 0; c < data.children.length; c++) { - var child = data.children[c]; - - var $child = this.option(child); - - $children.push($child); - } - - var $childrenContainer = $('<ul></ul>', { - 'class': 'select2-results__options select2-results__options--nested' - }); - - $childrenContainer.append($children); - - $option.append(label); - $option.append($childrenContainer); - } else { - this.template(data, option); - } - - $.data(option, 'data', data); - - return option; - }; - - Results.prototype.bind = function (container, $container) { - var self = this; - - var id = container.id + '-results'; - - this.$results.attr('id', id); - - container.on('results:all', function (params) { - self.clear(); - self.append(params.data); - - if (container.isOpen()) { - self.setClasses(); - self.highlightFirstItem(); - } - }); - - container.on('results:append', function (params) { - self.append(params.data); - - if (container.isOpen()) { - self.setClasses(); - } - }); - - container.on('query', function (params) { - self.hideMessages(); - self.showLoading(params); - }); - - container.on('select', function () { - if (!container.isOpen()) { - return; - } - - self.setClasses(); - self.highlightFirstItem(); - }); - - container.on('unselect', function () { - if (!container.isOpen()) { - return; - } - - self.setClasses(); - self.highlightFirstItem(); - }); - - container.on('open', function () { - // When the dropdown is open, aria-expended="true" - self.$results.attr('aria-expanded', 'true'); - self.$results.attr('aria-hidden', 'false'); - - self.setClasses(); - self.ensureHighlightVisible(); - }); - - container.on('close', function () { - // When the dropdown is closed, aria-expended="false" - self.$results.attr('aria-expanded', 'false'); - self.$results.attr('aria-hidden', 'true'); - self.$results.removeAttr('aria-activedescendant'); - }); - - container.on('results:toggle', function () { - var $highlighted = self.getHighlightedResults(); - - if ($highlighted.length === 0) { - return; - } - - $highlighted.trigger('mouseup'); - }); - - container.on('results:select', function () { - var $highlighted = self.getHighlightedResults(); - - if ($highlighted.length === 0) { - return; - } - - var data = $highlighted.data('data'); - - if ($highlighted.attr('aria-selected') == 'true') { - self.trigger('close', {}); - } else { - self.trigger('select', { - data: data - }); - } - }); - - container.on('results:previous', function () { - var $highlighted = self.getHighlightedResults(); - - var $options = self.$results.find('[aria-selected]'); - - var currentIndex = $options.index($highlighted); - - // If we are already at te top, don't move further - if (currentIndex === 0) { - return; - } - - var nextIndex = currentIndex - 1; - - // If none are highlighted, highlight the first - if ($highlighted.length === 0) { - nextIndex = 0; - } - - var $next = $options.eq(nextIndex); - - $next.trigger('mouseenter'); - - var currentOffset = self.$results.offset().top; - var nextTop = $next.offset().top; - var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset); - - if (nextIndex === 0) { - self.$results.scrollTop(0); - } else if (nextTop - currentOffset < 0) { - self.$results.scrollTop(nextOffset); - } - }); - - container.on('results:next', function () { - var $highlighted = self.getHighlightedResults(); - - var $options = self.$results.find('[aria-selected]'); - - var currentIndex = $options.index($highlighted); - - var nextIndex = currentIndex + 1; - - // If we are at the last option, stay there - if (nextIndex >= $options.length) { - return; - } - - var $next = $options.eq(nextIndex); - - $next.trigger('mouseenter'); - - var currentOffset = self.$results.offset().top + - self.$results.outerHeight(false); - var nextBottom = $next.offset().top + $next.outerHeight(false); - var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset; - - if (nextIndex === 0) { - self.$results.scrollTop(0); - } else if (nextBottom > currentOffset) { - self.$results.scrollTop(nextOffset); - } - }); - - container.on('results:focus', function (params) { - params.element.addClass('select2-results__option--highlighted'); - }); - - container.on('results:message', function (params) { - self.displayMessage(params); - }); - - if ($.fn.mousewheel) { - this.$results.on('mousewheel', function (e) { - var top = self.$results.scrollTop(); - - var bottom = self.$results.get(0).scrollHeight - top + e.deltaY; - - var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0; - var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height(); - - if (isAtTop) { - self.$results.scrollTop(0); - - e.preventDefault(); - e.stopPropagation(); - } else if (isAtBottom) { - self.$results.scrollTop( - self.$results.get(0).scrollHeight - self.$results.height() - ); - - e.preventDefault(); - e.stopPropagation(); - } - }); - } - - this.$results.on('mouseup', '.select2-results__option[aria-selected]', - function (evt) { - var $this = $(this); - - var data = $this.data('data'); - - if ($this.attr('aria-selected') === 'true') { - if (self.options.get('multiple')) { - self.trigger('unselect', { - originalEvent: evt, - data: data - }); - } else { - self.trigger('close', {}); - } - - return; - } - - self.trigger('select', { - originalEvent: evt, - data: data - }); - }); - - this.$results.on('mouseenter', '.select2-results__option[aria-selected]', - function (evt) { - var data = $(this).data('data'); - - self.getHighlightedResults() - .removeClass('select2-results__option--highlighted'); - - self.trigger('results:focus', { - data: data, - element: $(this) - }); - }); - }; - - Results.prototype.getHighlightedResults = function () { - var $highlighted = this.$results - .find('.select2-results__option--highlighted'); - - return $highlighted; - }; - - Results.prototype.destroy = function () { - this.$results.remove(); - }; - - Results.prototype.ensureHighlightVisible = function () { - var $highlighted = this.getHighlightedResults(); - - if ($highlighted.length === 0) { - return; - } - - var $options = this.$results.find('[aria-selected]'); - - var currentIndex = $options.index($highlighted); - - var currentOffset = this.$results.offset().top; - var nextTop = $highlighted.offset().top; - var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset); - - var offsetDelta = nextTop - currentOffset; - nextOffset -= $highlighted.outerHeight(false) * 2; - - if (currentIndex <= 2) { - this.$results.scrollTop(0); - } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) { - this.$results.scrollTop(nextOffset); - } - }; - - Results.prototype.template = function (result, container) { - var template = this.options.get('templateResult'); - var escapeMarkup = this.options.get('escapeMarkup'); - - var content = template(result, container); - - if (content == null) { - container.style.display = 'none'; - } else if (typeof content === 'string') { - container.innerHTML = escapeMarkup(content); - } else { - $(container).append(content); - } - }; - - return Results; -}); - -S2.define('select2/keys',[ - -], function () { - var KEYS = { - BACKSPACE: 8, - TAB: 9, - ENTER: 13, - SHIFT: 16, - CTRL: 17, - ALT: 18, - ESC: 27, - SPACE: 32, - PAGE_UP: 33, - PAGE_DOWN: 34, - END: 35, - HOME: 36, - LEFT: 37, - UP: 38, - RIGHT: 39, - DOWN: 40, - DELETE: 46 - }; - - return KEYS; -}); - -S2.define('select2/selection/base',[ - 'jquery', - '../utils', - '../keys' -], function ($, Utils, KEYS) { - function BaseSelection ($element, options) { - this.$element = $element; - this.options = options; - - BaseSelection.__super__.constructor.call(this); - } - - Utils.Extend(BaseSelection, Utils.Observable); - - BaseSelection.prototype.render = function () { - var $selection = $( - '<span class="select2-selection" role="combobox" ' + - ' aria-haspopup="true" aria-expanded="false">' + - '</span>' - ); - - this._tabindex = 0; - - if (this.$element.data('old-tabindex') != null) { - this._tabindex = this.$element.data('old-tabindex'); - } else if (this.$element.attr('tabindex') != null) { - this._tabindex = this.$element.attr('tabindex'); - } - - $selection.attr('title', this.$element.attr('title')); - $selection.attr('tabindex', this._tabindex); - - this.$selection = $selection; - - return $selection; - }; - - BaseSelection.prototype.bind = function (container, $container) { - var self = this; - - var id = container.id + '-container'; - var resultsId = container.id + '-results'; - - this.container = container; - - this.$selection.on('focus', function (evt) { - self.trigger('focus', evt); - }); - - this.$selection.on('blur', function (evt) { - self._handleBlur(evt); - }); - - this.$selection.on('keydown', function (evt) { - self.trigger('keypress', evt); - - if (evt.which === KEYS.SPACE) { - evt.preventDefault(); - } - }); - - container.on('results:focus', function (params) { - self.$selection.attr('aria-activedescendant', params.data._resultId); - }); - - container.on('selection:update', function (params) { - self.update(params.data); - }); - - container.on('open', function () { - // When the dropdown is open, aria-expanded="true" - self.$selection.attr('aria-expanded', 'true'); - self.$selection.attr('aria-owns', resultsId); - - self._attachCloseHandler(container); - }); - - container.on('close', function () { - // When the dropdown is closed, aria-expanded="false" - self.$selection.attr('aria-expanded', 'false'); - self.$selection.removeAttr('aria-activedescendant'); - self.$selection.removeAttr('aria-owns'); - - self.$selection.focus(); - - self._detachCloseHandler(container); - }); - - container.on('enable', function () { - self.$selection.attr('tabindex', self._tabindex); - }); - - container.on('disable', function () { - self.$selection.attr('tabindex', '-1'); - }); - }; - - BaseSelection.prototype._handleBlur = function (evt) { - var self = this; - - // This needs to be delayed as the active element is the body when the tab - // key is pressed, possibly along with others. - window.setTimeout(function () { - // Don't trigger `blur` if the focus is still in the selection - if ( - (document.activeElement == self.$selection[0]) || - ($.contains(self.$selection[0], document.activeElement)) - ) { - return; - } - - self.trigger('blur', evt); - }, 1); - }; - - BaseSelection.prototype._attachCloseHandler = function (container) { - var self = this; - - $(document.body).on('mousedown.select2.' + container.id, function (e) { - var $target = $(e.target); - - var $select = $target.closest('.select2'); - - var $all = $('.select2.select2-container--open'); - - $all.each(function () { - var $this = $(this); - - if (this == $select[0]) { - return; - } - - var $element = $this.data('element'); - - $element.select2('close'); - }); - }); - }; - - BaseSelection.prototype._detachCloseHandler = function (container) { - $(document.body).off('mousedown.select2.' + container.id); - }; - - BaseSelection.prototype.position = function ($selection, $container) { - var $selectionContainer = $container.find('.selection'); - $selectionContainer.append($selection); - }; - - BaseSelection.prototype.destroy = function () { - this._detachCloseHandler(this.container); - }; - - BaseSelection.prototype.update = function (data) { - throw new Error('The `update` method must be defined in child classes.'); - }; - - return BaseSelection; -}); - -S2.define('select2/selection/single',[ - 'jquery', - './base', - '../utils', - '../keys' -], function ($, BaseSelection, Utils, KEYS) { - function SingleSelection () { - SingleSelection.__super__.constructor.apply(this, arguments); - } - - Utils.Extend(SingleSelection, BaseSelection); - - SingleSelection.prototype.render = function () { - var $selection = SingleSelection.__super__.render.call(this); - - $selection.addClass('select2-selection--single'); - - $selection.html( - '<span class="select2-selection__rendered"></span>' + - '<span class="select2-selection__arrow" role="presentation">' + - '<b role="presentation"></b>' + - '</span>' - ); - - return $selection; - }; - - SingleSelection.prototype.bind = function (container, $container) { - var self = this; - - SingleSelection.__super__.bind.apply(this, arguments); - - var id = container.id + '-container'; - - this.$selection.find('.select2-selection__rendered').attr('id', id); - this.$selection.attr('aria-labelledby', id); - - this.$selection.on('mousedown', function (evt) { - // Only respond to left clicks - if (evt.which !== 1) { - return; - } - - self.trigger('toggle', { - originalEvent: evt - }); - }); - - this.$selection.on('focus', function (evt) { - // User focuses on the container - }); - - this.$selection.on('blur', function (evt) { - // User exits the container - }); - - container.on('focus', function (evt) { - if (!container.isOpen()) { - self.$selection.focus(); - } - }); - - container.on('selection:update', function (params) { - self.update(params.data); - }); - }; - - SingleSelection.prototype.clear = function () { - this.$selection.find('.select2-selection__rendered').empty(); - }; - - SingleSelection.prototype.display = function (data, container) { - var template = this.options.get('templateSelection'); - var escapeMarkup = this.options.get('escapeMarkup'); - - return escapeMarkup(template(data, container)); - }; - - SingleSelection.prototype.selectionContainer = function () { - return $('<span></span>'); - }; - - SingleSelection.prototype.update = function (data) { - if (data.length === 0) { - this.clear(); - return; - } - - var selection = data[0]; - - var $rendered = this.$selection.find('.select2-selection__rendered'); - var formatted = this.display(selection, $rendered); - - $rendered.empty().append(formatted); - $rendered.prop('title', selection.title || selection.text); - }; - - return SingleSelection; -}); - -S2.define('select2/selection/multiple',[ - 'jquery', - './base', - '../utils' -], function ($, BaseSelection, Utils) { - function MultipleSelection ($element, options) { - MultipleSelection.__super__.constructor.apply(this, arguments); - } - - Utils.Extend(MultipleSelection, BaseSelection); - - MultipleSelection.prototype.render = function () { - var $selection = MultipleSelection.__super__.render.call(this); - - $selection.addClass('select2-selection--multiple'); - - $selection.html( - '<ul class="select2-selection__rendered"></ul>' - ); - - return $selection; - }; - - MultipleSelection.prototype.bind = function (container, $container) { - var self = this; - - MultipleSelection.__super__.bind.apply(this, arguments); - - this.$selection.on('click', function (evt) { - self.trigger('toggle', { - originalEvent: evt - }); - }); - - this.$selection.on( - 'click', - '.select2-selection__choice__remove', - function (evt) { - // Ignore the event if it is disabled - if (self.options.get('disabled')) { - return; - } - - var $remove = $(this); - var $selection = $remove.parent(); - - var data = $selection.data('data'); - - self.trigger('unselect', { - originalEvent: evt, - data: data - }); - } - ); - }; - - MultipleSelection.prototype.clear = function () { - this.$selection.find('.select2-selection__rendered').empty(); - }; - - MultipleSelection.prototype.display = function (data, container) { - var template = this.options.get('templateSelection'); - var escapeMarkup = this.options.get('escapeMarkup'); - - return escapeMarkup(template(data, container)); - }; - - MultipleSelection.prototype.selectionContainer = function () { - var $container = $( - '<li class="select2-selection__choice">' + - '<span class="select2-selection__choice__remove" role="presentation">' + - '&times;' + - '</span>' + - '</li>' - ); - - return $container; - }; - - MultipleSelection.prototype.update = function (data) { - this.clear(); - - if (data.length === 0) { - return; - } - - var $selections = []; - - for (var d = 0; d < data.length; d++) { - var selection = data[d]; - - var $selection = this.selectionContainer(); - var formatted = this.display(selection, $selection); - - $selection.append(formatted); - $selection.prop('title', selection.title || selection.text); - - $selection.data('data', selection); - - $selections.push($selection); - } - - var $rendered = this.$selection.find('.select2-selection__rendered'); - - Utils.appendMany($rendered, $selections); - }; - - return MultipleSelection; -}); - -S2.define('select2/selection/placeholder',[ - '../utils' -], function (Utils) { - function Placeholder (decorated, $element, options) { - this.placeholder = this.normalizePlaceholder(options.get('placeholder')); - - decorated.call(this, $element, options); - } - - Placeholder.prototype.normalizePlaceholder = function (_, placeholder) { - if (typeof placeholder === 'string') { - placeholder = { - id: '', - text: placeholder - }; - } - - return placeholder; - }; - - Placeholder.prototype.createPlaceholder = function (decorated, placeholder) { - var $placeholder = this.selectionContainer(); - - $placeholder.html(this.display(placeholder)); - $placeholder.addClass('select2-selection__placeholder') - .removeClass('select2-selection__choice'); - - return $placeholder; - }; - - Placeholder.prototype.update = function (decorated, data) { - var singlePlaceholder = ( - data.length == 1 && data[0].id != this.placeholder.id - ); - var multipleSelections = data.length > 1; - - if (multipleSelections || singlePlaceholder) { - return decorated.call(this, data); - } - - this.clear(); - - var $placeholder = this.createPlaceholder(this.placeholder); - - this.$selection.find('.select2-selection__rendered').append($placeholder); - }; - - return Placeholder; -}); - -S2.define('select2/selection/allowClear',[ - 'jquery', - '../keys' -], function ($, KEYS) { - function AllowClear () { } - - AllowClear.prototype.bind = function (decorated, container, $container) { - var self = this; - - decorated.call(this, container, $container); - - if (this.placeholder == null) { - if (this.options.get('debug') && window.console && console.error) { - console.error( - 'Select2: The `allowClear` option should be used in combination ' + - 'with the `placeholder` option.' - ); - } - } - - this.$selection.on('mousedown', '.select2-selection__clear', - function (evt) { - self._handleClear(evt); - }); - - container.on('keypress', function (evt) { - self._handleKeyboardClear(evt, container); - }); - }; - - AllowClear.prototype._handleClear = function (_, evt) { - // Ignore the event if it is disabled - if (this.options.get('disabled')) { - return; - } - - var $clear = this.$selection.find('.select2-selection__clear'); - - // Ignore the event if nothing has been selected - if ($clear.length === 0) { - return; - } - - evt.stopPropagation(); - - var data = $clear.data('data'); - - for (var d = 0; d < data.length; d++) { - var unselectData = { - data: data[d] - }; - - // Trigger the `unselect` event, so people can prevent it from being - // cleared. - this.trigger('unselect', unselectData); - - // If the event was prevented, don't clear it out. - if (unselectData.prevented) { - return; - } - } - - this.$element.val(this.placeholder.id).trigger('change'); - - this.trigger('toggle', {}); - }; - - AllowClear.prototype._handleKeyboardClear = function (_, evt, container) { - if (container.isOpen()) { - return; - } - - if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) { - this._handleClear(evt); - } - }; - - AllowClear.prototype.update = function (decorated, data) { - decorated.call(this, data); - - if (this.$selection.find('.select2-selection__placeholder').length > 0 || - data.length === 0) { - return; - } - - var $remove = $( - '<span class="select2-selection__clear">' + - '&times;' + - '</span>' - ); - $remove.data('data', data); - - this.$selection.find('.select2-selection__rendered').prepend($remove); - }; - - return AllowClear; -}); - -S2.define('select2/selection/search',[ - 'jquery', - '../utils', - '../keys' -], function ($, Utils, KEYS) { - function Search (decorated, $element, options) { - decorated.call(this, $element, options); - } - - Search.prototype.render = function (decorated) { - var $search = $( - '<li class="select2-search select2-search--inline">' + - '<input class="select2-search__field" type="search" tabindex="-1"' + - ' autocomplete="off" autocorrect="off" autocapitalize="off"' + - ' spellcheck="false" role="textbox" aria-autocomplete="list" />' + - '</li>' - ); - - this.$searchContainer = $search; - this.$search = $search.find('input'); - - var $rendered = decorated.call(this); - - this._transferTabIndex(); - - return $rendered; - }; - - Search.prototype.bind = function (decorated, container, $container) { - var self = this; - - decorated.call(this, container, $container); - - container.on('open', function () { - self.$search.trigger('focus'); - }); - - container.on('close', function () { - self.$search.val(''); - self.$search.removeAttr('aria-activedescendant'); - self.$search.trigger('focus'); - }); - - container.on('enable', function () { - self.$search.prop('disabled', false); - - self._transferTabIndex(); - }); - - container.on('disable', function () { - self.$search.prop('disabled', true); - }); - - container.on('focus', function (evt) { - self.$search.trigger('focus'); - }); - - container.on('results:focus', function (params) { - self.$search.attr('aria-activedescendant', params.id); - }); - - this.$selection.on('focusin', '.select2-search--inline', function (evt) { - self.trigger('focus', evt); - }); - - this.$selection.on('focusout', '.select2-search--inline', function (evt) { - self._handleBlur(evt); - }); - - this.$selection.on('keydown', '.select2-search--inline', function (evt) { - evt.stopPropagation(); - - self.trigger('keypress', evt); - - self._keyUpPrevented = evt.isDefaultPrevented(); - - var key = evt.which; - - if (key === KEYS.BACKSPACE && self.$search.val() === '') { - var $previousChoice = self.$searchContainer - .prev('.select2-selection__choice'); - - if ($previousChoice.length > 0) { - var item = $previousChoice.data('data'); - - self.searchRemoveChoice(item); - - evt.preventDefault(); - } - } - }); - - // Try to detect the IE version should the `documentMode` property that - // is stored on the document. This is only implemented in IE and is - // slightly cleaner than doing a user agent check. - // This property is not available in Edge, but Edge also doesn't have - // this bug. - var msie = document.documentMode; - var disableInputEvents = msie && msie <= 11; - - // Workaround for browsers which do not support the `input` event - // This will prevent double-triggering of events for browsers which support - // both the `keyup` and `input` events. - this.$selection.on( - 'input.searchcheck', - '.select2-search--inline', - function (evt) { - // IE will trigger the `input` event when a placeholder is used on a - // search box. To get around this issue, we are forced to ignore all - // `input` events in IE and keep using `keyup`. - if (disableInputEvents) { - self.$selection.off('input.search input.searchcheck'); - return; - } - - // Unbind the duplicated `keyup` event - self.$selection.off('keyup.search'); - } - ); - - this.$selection.on( - 'keyup.search input.search', - '.select2-search--inline', - function (evt) { - // IE will trigger the `input` event when a placeholder is used on a - // search box. To get around this issue, we are forced to ignore all - // `input` events in IE and keep using `keyup`. - if (disableInputEvents && evt.type === 'input') { - self.$selection.off('input.search input.searchcheck'); - return; - } - - var key = evt.which; - - // We can freely ignore events from modifier keys - if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) { - return; - } - - // Tabbing will be handled during the `keydown` phase - if (key == KEYS.TAB) { - return; - } - - self.handleSearch(evt); - } - ); - }; - - /** - * This method will transfer the tabindex attribute from the rendered - * selection to the search box. This allows for the search box to be used as - * the primary focus instead of the selection container. - * - * @private - */ - Search.prototype._transferTabIndex = function (decorated) { - this.$search.attr('tabindex', this.$selection.attr('tabindex')); - this.$selection.attr('tabindex', '-1'); - }; - - Search.prototype.createPlaceholder = function (decorated, placeholder) { - this.$search.attr('placeholder', placeholder.text); - }; - - Search.prototype.update = function (decorated, data) { - var searchHadFocus = this.$search[0] == document.activeElement; - - this.$search.attr('placeholder', ''); - - decorated.call(this, data); - - this.$selection.find('.select2-selection__rendered') - .append(this.$searchContainer); - - this.resizeSearch(); - if (searchHadFocus) { - this.$search.focus(); - } - }; - - Search.prototype.handleSearch = function () { - this.resizeSearch(); - - if (!this._keyUpPrevented) { - var input = this.$search.val(); - - this.trigger('query', { - term: input - }); - } - - this._keyUpPrevented = false; - }; - - Search.prototype.searchRemoveChoice = function (decorated, item) { - this.trigger('unselect', { - data: item - }); - - this.$search.val(item.text); - this.handleSearch(); - }; - - Search.prototype.resizeSearch = function () { - this.$search.css('width', '25px'); - - var width = ''; - - if (this.$search.attr('placeholder') !== '') { - width = this.$selection.find('.select2-selection__rendered').innerWidth(); - } else { - var minimumWidth = this.$search.val().length + 1; - - width = (minimumWidth * 0.75) + 'em'; - } - - this.$search.css('width', width); - }; - - return Search; -}); - -S2.define('select2/selection/eventRelay',[ - 'jquery' -], function ($) { - function EventRelay () { } - - EventRelay.prototype.bind = function (decorated, container, $container) { - var self = this; - var relayEvents = [ - 'open', 'opening', - 'close', 'closing', - 'select', 'selecting', - 'unselect', 'unselecting' - ]; - - var preventableEvents = ['opening', 'closing', 'selecting', 'unselecting']; - - decorated.call(this, container, $container); - - container.on('*', function (name, params) { - // Ignore events that should not be relayed - if ($.inArray(name, relayEvents) === -1) { - return; - } - - // The parameters should always be an object - params = params || {}; - - // Generate the jQuery event for the Select2 event - var evt = $.Event('select2:' + name, { - params: params - }); - - self.$element.trigger(evt); - - // Only handle preventable events if it was one - if ($.inArray(name, preventableEvents) === -1) { - return; - } - - params.prevented = evt.isDefaultPrevented(); - }); - }; - - return EventRelay; -}); - -S2.define('select2/translation',[ - 'jquery', - 'require' -], function ($, require) { - function Translation (dict) { - this.dict = dict || {}; - } - - Translation.prototype.all = function () { - return this.dict; - }; - - Translation.prototype.get = function (key) { - return this.dict[key]; - }; - - Translation.prototype.extend = function (translation) { - this.dict = $.extend({}, translation.all(), this.dict); - }; - - // Static functions - - Translation._cache = {}; - - Translation.loadPath = function (path) { - if (!(path in Translation._cache)) { - var translations = require(path); - - Translation._cache[path] = translations; - } - - return new Translation(Translation._cache[path]); - }; - - return Translation; -}); - -S2.define('select2/diacritics',[ - -], function () { - var diacritics = { - '\u24B6': 'A', - '\uFF21': 'A', - '\u00C0': 'A', - '\u00C1': 'A', - '\u00C2': 'A', - '\u1EA6': 'A', - '\u1EA4': 'A', - '\u1EAA': 'A', - '\u1EA8': 'A', - '\u00C3': 'A', - '\u0100': 'A', - '\u0102': 'A', - '\u1EB0': 'A', - '\u1EAE': 'A', - '\u1EB4': 'A', - '\u1EB2': 'A', - '\u0226': 'A', - '\u01E0': 'A', - '\u00C4': 'A', - '\u01DE': 'A', - '\u1EA2': 'A', - '\u00C5': 'A', - '\u01FA': 'A', - '\u01CD': 'A', - '\u0200': 'A', - '\u0202': 'A', - '\u1EA0': 'A', - '\u1EAC': 'A', - '\u1EB6': 'A', - '\u1E00': 'A', - '\u0104': 'A', - '\u023A': 'A', - '\u2C6F': 'A', - '\uA732': 'AA', - '\u00C6': 'AE', - '\u01FC': 'AE', - '\u01E2': 'AE', - '\uA734': 'AO', - '\uA736': 'AU', - '\uA738': 'AV', - '\uA73A': 'AV', - '\uA73C': 'AY', - '\u24B7': 'B', - '\uFF22': 'B', - '\u1E02': 'B', - '\u1E04': 'B', - '\u1E06': 'B', - '\u0243': 'B', - '\u0182': 'B', - '\u0181': 'B', - '\u24B8': 'C', - '\uFF23': 'C', - '\u0106': 'C', - '\u0108': 'C', - '\u010A': 'C', - '\u010C': 'C', - '\u00C7': 'C', - '\u1E08': 'C', - '\u0187': 'C', - '\u023B': 'C', - '\uA73E': 'C', - '\u24B9': 'D', - '\uFF24': 'D', - '\u1E0A': 'D', - '\u010E': 'D', - '\u1E0C': 'D', - '\u1E10': 'D', - '\u1E12': 'D', - '\u1E0E': 'D', - '\u0110': 'D', - '\u018B': 'D', - '\u018A': 'D', - '\u0189': 'D', - '\uA779': 'D', - '\u01F1': 'DZ', - '\u01C4': 'DZ', - '\u01F2': 'Dz', - '\u01C5': 'Dz', - '\u24BA': 'E', - '\uFF25': 'E', - '\u00C8': 'E', - '\u00C9': 'E', - '\u00CA': 'E', - '\u1EC0': 'E', - '\u1EBE': 'E', - '\u1EC4': 'E', - '\u1EC2': 'E', - '\u1EBC': 'E', - '\u0112': 'E', - '\u1E14': 'E', - '\u1E16': 'E', - '\u0114': 'E', - '\u0116': 'E', - '\u00CB': 'E', - '\u1EBA': 'E', - '\u011A': 'E', - '\u0204': 'E', - '\u0206': 'E', - '\u1EB8': 'E', - '\u1EC6': 'E', - '\u0228': 'E', - '\u1E1C': 'E', - '\u0118': 'E', - '\u1E18': 'E', - '\u1E1A': 'E', - '\u0190': 'E', - '\u018E': 'E', - '\u24BB': 'F', - '\uFF26': 'F', - '\u1E1E': 'F', - '\u0191': 'F', - '\uA77B': 'F', - '\u24BC': 'G', - '\uFF27': 'G', - '\u01F4': 'G', - '\u011C': 'G', - '\u1E20': 'G', - '\u011E': 'G', - '\u0120': 'G', - '\u01E6': 'G', - '\u0122': 'G', - '\u01E4': 'G', - '\u0193': 'G', - '\uA7A0': 'G', - '\uA77D': 'G', - '\uA77E': 'G', - '\u24BD': 'H', - '\uFF28': 'H', - '\u0124': 'H', - '\u1E22': 'H', - '\u1E26': 'H', - '\u021E': 'H', - '\u1E24': 'H', - '\u1E28': 'H', - '\u1E2A': 'H', - '\u0126': 'H', - '\u2C67': 'H', - '\u2C75': 'H', - '\uA78D': 'H', - '\u24BE': 'I', - '\uFF29': 'I', - '\u00CC': 'I', - '\u00CD': 'I', - '\u00CE': 'I', - '\u0128': 'I', - '\u012A': 'I', - '\u012C': 'I', - '\u0130': 'I', - '\u00CF': 'I', - '\u1E2E': 'I', - '\u1EC8': 'I', - '\u01CF': 'I', - '\u0208': 'I', - '\u020A': 'I', - '\u1ECA': 'I', - '\u012E': 'I', - '\u1E2C': 'I', - '\u0197': 'I', - '\u24BF': 'J', - '\uFF2A': 'J', - '\u0134': 'J', - '\u0248': 'J', - '\u24C0': 'K', - '\uFF2B': 'K', - '\u1E30': 'K', - '\u01E8': 'K', - '\u1E32': 'K', - '\u0136': 'K', - '\u1E34': 'K', - '\u0198': 'K', - '\u2C69': 'K', - '\uA740': 'K', - '\uA742': 'K', - '\uA744': 'K', - '\uA7A2': 'K', - '\u24C1': 'L', - '\uFF2C': 'L', - '\u013F': 'L', - '\u0139': 'L', - '\u013D': 'L', - '\u1E36': 'L', - '\u1E38': 'L', - '\u013B': 'L', - '\u1E3C': 'L', - '\u1E3A': 'L', - '\u0141': 'L', - '\u023D': 'L', - '\u2C62': 'L', - '\u2C60': 'L', - '\uA748': 'L', - '\uA746': 'L', - '\uA780': 'L', - '\u01C7': 'LJ', - '\u01C8': 'Lj', - '\u24C2': 'M', - '\uFF2D': 'M', - '\u1E3E': 'M', - '\u1E40': 'M', - '\u1E42': 'M', - '\u2C6E': 'M', - '\u019C': 'M', - '\u24C3': 'N', - '\uFF2E': 'N', - '\u01F8': 'N', - '\u0143': 'N', - '\u00D1': 'N', - '\u1E44': 'N', - '\u0147': 'N', - '\u1E46': 'N', - '\u0145': 'N', - '\u1E4A': 'N', - '\u1E48': 'N', - '\u0220': 'N', - '\u019D': 'N', - '\uA790': 'N', - '\uA7A4': 'N', - '\u01CA': 'NJ', - '\u01CB': 'Nj', - '\u24C4': 'O', - '\uFF2F': 'O', - '\u00D2': 'O', - '\u00D3': 'O', - '\u00D4': 'O', - '\u1ED2': 'O', - '\u1ED0': 'O', - '\u1ED6': 'O', - '\u1ED4': 'O', - '\u00D5': 'O', - '\u1E4C': 'O', - '\u022C': 'O', - '\u1E4E': 'O', - '\u014C': 'O', - '\u1E50': 'O', - '\u1E52': 'O', - '\u014E': 'O', - '\u022E': 'O', - '\u0230': 'O', - '\u00D6': 'O', - '\u022A': 'O', - '\u1ECE': 'O', - '\u0150': 'O', - '\u01D1': 'O', - '\u020C': 'O', - '\u020E': 'O', - '\u01A0': 'O', - '\u1EDC': 'O', - '\u1EDA': 'O', - '\u1EE0': 'O', - '\u1EDE': 'O', - '\u1EE2': 'O', - '\u1ECC': 'O', - '\u1ED8': 'O', - '\u01EA': 'O', - '\u01EC': 'O', - '\u00D8': 'O', - '\u01FE': 'O', - '\u0186': 'O', - '\u019F': 'O', - '\uA74A': 'O', - '\uA74C': 'O', - '\u01A2': 'OI', - '\uA74E': 'OO', - '\u0222': 'OU', - '\u24C5': 'P', - '\uFF30': 'P', - '\u1E54': 'P', - '\u1E56': 'P', - '\u01A4': 'P', - '\u2C63': 'P', - '\uA750': 'P', - '\uA752': 'P', - '\uA754': 'P', - '\u24C6': 'Q', - '\uFF31': 'Q', - '\uA756': 'Q', - '\uA758': 'Q', - '\u024A': 'Q', - '\u24C7': 'R', - '\uFF32': 'R', - '\u0154': 'R', - '\u1E58': 'R', - '\u0158': 'R', - '\u0210': 'R', - '\u0212': 'R', - '\u1E5A': 'R', - '\u1E5C': 'R', - '\u0156': 'R', - '\u1E5E': 'R', - '\u024C': 'R', - '\u2C64': 'R', - '\uA75A': 'R', - '\uA7A6': 'R', - '\uA782': 'R', - '\u24C8': 'S', - '\uFF33': 'S', - '\u1E9E': 'S', - '\u015A': 'S', - '\u1E64': 'S', - '\u015C': 'S', - '\u1E60': 'S', - '\u0160': 'S', - '\u1E66': 'S', - '\u1E62': 'S', - '\u1E68': 'S', - '\u0218': 'S', - '\u015E': 'S', - '\u2C7E': 'S', - '\uA7A8': 'S', - '\uA784': 'S', - '\u24C9': 'T', - '\uFF34': 'T', - '\u1E6A': 'T', - '\u0164': 'T', - '\u1E6C': 'T', - '\u021A': 'T', - '\u0162': 'T', - '\u1E70': 'T', - '\u1E6E': 'T', - '\u0166': 'T', - '\u01AC': 'T', - '\u01AE': 'T', - '\u023E': 'T', - '\uA786': 'T', - '\uA728': 'TZ', - '\u24CA': 'U', - '\uFF35': 'U', - '\u00D9': 'U', - '\u00DA': 'U', - '\u00DB': 'U', - '\u0168': 'U', - '\u1E78': 'U', - '\u016A': 'U', - '\u1E7A': 'U', - '\u016C': 'U', - '\u00DC': 'U', - '\u01DB': 'U', - '\u01D7': 'U', - '\u01D5': 'U', - '\u01D9': 'U', - '\u1EE6': 'U', - '\u016E': 'U', - '\u0170': 'U', - '\u01D3': 'U', - '\u0214': 'U', - '\u0216': 'U', - '\u01AF': 'U', - '\u1EEA': 'U', - '\u1EE8': 'U', - '\u1EEE': 'U', - '\u1EEC': 'U', - '\u1EF0': 'U', - '\u1EE4': 'U', - '\u1E72': 'U', - '\u0172': 'U', - '\u1E76': 'U', - '\u1E74': 'U', - '\u0244': 'U', - '\u24CB': 'V', - '\uFF36': 'V', - '\u1E7C': 'V', - '\u1E7E': 'V', - '\u01B2': 'V', - '\uA75E': 'V', - '\u0245': 'V', - '\uA760': 'VY', - '\u24CC': 'W', - '\uFF37': 'W', - '\u1E80': 'W', - '\u1E82': 'W', - '\u0174': 'W', - '\u1E86': 'W', - '\u1E84': 'W', - '\u1E88': 'W', - '\u2C72': 'W', - '\u24CD': 'X', - '\uFF38': 'X', - '\u1E8A': 'X', - '\u1E8C': 'X', - '\u24CE': 'Y', - '\uFF39': 'Y', - '\u1EF2': 'Y', - '\u00DD': 'Y', - '\u0176': 'Y', - '\u1EF8': 'Y', - '\u0232': 'Y', - '\u1E8E': 'Y', - '\u0178': 'Y', - '\u1EF6': 'Y', - '\u1EF4': 'Y', - '\u01B3': 'Y', - '\u024E': 'Y', - '\u1EFE': 'Y', - '\u24CF': 'Z', - '\uFF3A': 'Z', - '\u0179': 'Z', - '\u1E90': 'Z', - '\u017B': 'Z', - '\u017D': 'Z', - '\u1E92': 'Z', - '\u1E94': 'Z', - '\u01B5': 'Z', - '\u0224': 'Z', - '\u2C7F': 'Z', - '\u2C6B': 'Z', - '\uA762': 'Z', - '\u24D0': 'a', - '\uFF41': 'a', - '\u1E9A': 'a', - '\u00E0': 'a', - '\u00E1': 'a', - '\u00E2': 'a', - '\u1EA7': 'a', - '\u1EA5': 'a', - '\u1EAB': 'a', - '\u1EA9': 'a', - '\u00E3': 'a', - '\u0101': 'a', - '\u0103': 'a', - '\u1EB1': 'a', - '\u1EAF': 'a', - '\u1EB5': 'a', - '\u1EB3': 'a', - '\u0227': 'a', - '\u01E1': 'a', - '\u00E4': 'a', - '\u01DF': 'a', - '\u1EA3': 'a', - '\u00E5': 'a', - '\u01FB': 'a', - '\u01CE': 'a', - '\u0201': 'a', - '\u0203': 'a', - '\u1EA1': 'a', - '\u1EAD': 'a', - '\u1EB7': 'a', - '\u1E01': 'a', - '\u0105': 'a', - '\u2C65': 'a', - '\u0250': 'a', - '\uA733': 'aa', - '\u00E6': 'ae', - '\u01FD': 'ae', - '\u01E3': 'ae', - '\uA735': 'ao', - '\uA737': 'au', - '\uA739': 'av', - '\uA73B': 'av', - '\uA73D': 'ay', - '\u24D1': 'b', - '\uFF42': 'b', - '\u1E03': 'b', - '\u1E05': 'b', - '\u1E07': 'b', - '\u0180': 'b', - '\u0183': 'b', - '\u0253': 'b', - '\u24D2': 'c', - '\uFF43': 'c', - '\u0107': 'c', - '\u0109': 'c', - '\u010B': 'c', - '\u010D': 'c', - '\u00E7': 'c', - '\u1E09': 'c', - '\u0188': 'c', - '\u023C': 'c', - '\uA73F': 'c', - '\u2184': 'c', - '\u24D3': 'd', - '\uFF44': 'd', - '\u1E0B': 'd', - '\u010F': 'd', - '\u1E0D': 'd', - '\u1E11': 'd', - '\u1E13': 'd', - '\u1E0F': 'd', - '\u0111': 'd', - '\u018C': 'd', - '\u0256': 'd', - '\u0257': 'd', - '\uA77A': 'd', - '\u01F3': 'dz', - '\u01C6': 'dz', - '\u24D4': 'e', - '\uFF45': 'e', - '\u00E8': 'e', - '\u00E9': 'e', - '\u00EA': 'e', - '\u1EC1': 'e', - '\u1EBF': 'e', - '\u1EC5': 'e', - '\u1EC3': 'e', - '\u1EBD': 'e', - '\u0113': 'e', - '\u1E15': 'e', - '\u1E17': 'e', - '\u0115': 'e', - '\u0117': 'e', - '\u00EB': 'e', - '\u1EBB': 'e', - '\u011B': 'e', - '\u0205': 'e', - '\u0207': 'e', - '\u1EB9': 'e', - '\u1EC7': 'e', - '\u0229': 'e', - '\u1E1D': 'e', - '\u0119': 'e', - '\u1E19': 'e', - '\u1E1B': 'e', - '\u0247': 'e', - '\u025B': 'e', - '\u01DD': 'e', - '\u24D5': 'f', - '\uFF46': 'f', - '\u1E1F': 'f', - '\u0192': 'f', - '\uA77C': 'f', - '\u24D6': 'g', - '\uFF47': 'g', - '\u01F5': 'g', - '\u011D': 'g', - '\u1E21': 'g', - '\u011F': 'g', - '\u0121': 'g', - '\u01E7': 'g', - '\u0123': 'g', - '\u01E5': 'g', - '\u0260': 'g', - '\uA7A1': 'g', - '\u1D79': 'g', - '\uA77F': 'g', - '\u24D7': 'h', - '\uFF48': 'h', - '\u0125': 'h', - '\u1E23': 'h', - '\u1E27': 'h', - '\u021F': 'h', - '\u1E25': 'h', - '\u1E29': 'h', - '\u1E2B': 'h', - '\u1E96': 'h', - '\u0127': 'h', - '\u2C68': 'h', - '\u2C76': 'h', - '\u0265': 'h', - '\u0195': 'hv', - '\u24D8': 'i', - '\uFF49': 'i', - '\u00EC': 'i', - '\u00ED': 'i', - '\u00EE': 'i', - '\u0129': 'i', - '\u012B': 'i', - '\u012D': 'i', - '\u00EF': 'i', - '\u1E2F': 'i', - '\u1EC9': 'i', - '\u01D0': 'i', - '\u0209': 'i', - '\u020B': 'i', - '\u1ECB': 'i', - '\u012F': 'i', - '\u1E2D': 'i', - '\u0268': 'i', - '\u0131': 'i', - '\u24D9': 'j', - '\uFF4A': 'j', - '\u0135': 'j', - '\u01F0': 'j', - '\u0249': 'j', - '\u24DA': 'k', - '\uFF4B': 'k', - '\u1E31': 'k', - '\u01E9': 'k', - '\u1E33': 'k', - '\u0137': 'k', - '\u1E35': 'k', - '\u0199': 'k', - '\u2C6A': 'k', - '\uA741': 'k', - '\uA743': 'k', - '\uA745': 'k', - '\uA7A3': 'k', - '\u24DB': 'l', - '\uFF4C': 'l', - '\u0140': 'l', - '\u013A': 'l', - '\u013E': 'l', - '\u1E37': 'l', - '\u1E39': 'l', - '\u013C': 'l', - '\u1E3D': 'l', - '\u1E3B': 'l', - '\u017F': 'l', - '\u0142': 'l', - '\u019A': 'l', - '\u026B': 'l', - '\u2C61': 'l', - '\uA749': 'l', - '\uA781': 'l', - '\uA747': 'l', - '\u01C9': 'lj', - '\u24DC': 'm', - '\uFF4D': 'm', - '\u1E3F': 'm', - '\u1E41': 'm', - '\u1E43': 'm', - '\u0271': 'm', - '\u026F': 'm', - '\u24DD': 'n', - '\uFF4E': 'n', - '\u01F9': 'n', - '\u0144': 'n', - '\u00F1': 'n', - '\u1E45': 'n', - '\u0148': 'n', - '\u1E47': 'n', - '\u0146': 'n', - '\u1E4B': 'n', - '\u1E49': 'n', - '\u019E': 'n', - '\u0272': 'n', - '\u0149': 'n', - '\uA791': 'n', - '\uA7A5': 'n', - '\u01CC': 'nj', - '\u24DE': 'o', - '\uFF4F': 'o', - '\u00F2': 'o', - '\u00F3': 'o', - '\u00F4': 'o', - '\u1ED3': 'o', - '\u1ED1': 'o', - '\u1ED7': 'o', - '\u1ED5': 'o', - '\u00F5': 'o', - '\u1E4D': 'o', - '\u022D': 'o', - '\u1E4F': 'o', - '\u014D': 'o', - '\u1E51': 'o', - '\u1E53': 'o', - '\u014F': 'o', - '\u022F': 'o', - '\u0231': 'o', - '\u00F6': 'o', - '\u022B': 'o', - '\u1ECF': 'o', - '\u0151': 'o', - '\u01D2': 'o', - '\u020D': 'o', - '\u020F': 'o', - '\u01A1': 'o', - '\u1EDD': 'o', - '\u1EDB': 'o', - '\u1EE1': 'o', - '\u1EDF': 'o', - '\u1EE3': 'o', - '\u1ECD': 'o', - '\u1ED9': 'o', - '\u01EB': 'o', - '\u01ED': 'o', - '\u00F8': 'o', - '\u01FF': 'o', - '\u0254': 'o', - '\uA74B': 'o', - '\uA74D': 'o', - '\u0275': 'o', - '\u01A3': 'oi', - '\u0223': 'ou', - '\uA74F': 'oo', - '\u24DF': 'p', - '\uFF50': 'p', - '\u1E55': 'p', - '\u1E57': 'p', - '\u01A5': 'p', - '\u1D7D': 'p', - '\uA751': 'p', - '\uA753': 'p', - '\uA755': 'p', - '\u24E0': 'q', - '\uFF51': 'q', - '\u024B': 'q', - '\uA757': 'q', - '\uA759': 'q', - '\u24E1': 'r', - '\uFF52': 'r', - '\u0155': 'r', - '\u1E59': 'r', - '\u0159': 'r', - '\u0211': 'r', - '\u0213': 'r', - '\u1E5B': 'r', - '\u1E5D': 'r', - '\u0157': 'r', - '\u1E5F': 'r', - '\u024D': 'r', - '\u027D': 'r', - '\uA75B': 'r', - '\uA7A7': 'r', - '\uA783': 'r', - '\u24E2': 's', - '\uFF53': 's', - '\u00DF': 's', - '\u015B': 's', - '\u1E65': 's', - '\u015D': 's', - '\u1E61': 's', - '\u0161': 's', - '\u1E67': 's', - '\u1E63': 's', - '\u1E69': 's', - '\u0219': 's', - '\u015F': 's', - '\u023F': 's', - '\uA7A9': 's', - '\uA785': 's', - '\u1E9B': 's', - '\u24E3': 't', - '\uFF54': 't', - '\u1E6B': 't', - '\u1E97': 't', - '\u0165': 't', - '\u1E6D': 't', - '\u021B': 't', - '\u0163': 't', - '\u1E71': 't', - '\u1E6F': 't', - '\u0167': 't', - '\u01AD': 't', - '\u0288': 't', - '\u2C66': 't', - '\uA787': 't', - '\uA729': 'tz', - '\u24E4': 'u', - '\uFF55': 'u', - '\u00F9': 'u', - '\u00FA': 'u', - '\u00FB': 'u', - '\u0169': 'u', - '\u1E79': 'u', - '\u016B': 'u', - '\u1E7B': 'u', - '\u016D': 'u', - '\u00FC': 'u', - '\u01DC': 'u', - '\u01D8': 'u', - '\u01D6': 'u', - '\u01DA': 'u', - '\u1EE7': 'u', - '\u016F': 'u', - '\u0171': 'u', - '\u01D4': 'u', - '\u0215': 'u', - '\u0217': 'u', - '\u01B0': 'u', - '\u1EEB': 'u', - '\u1EE9': 'u', - '\u1EEF': 'u', - '\u1EED': 'u', - '\u1EF1': 'u', - '\u1EE5': 'u', - '\u1E73': 'u', - '\u0173': 'u', - '\u1E77': 'u', - '\u1E75': 'u', - '\u0289': 'u', - '\u24E5': 'v', - '\uFF56': 'v', - '\u1E7D': 'v', - '\u1E7F': 'v', - '\u028B': 'v', - '\uA75F': 'v', - '\u028C': 'v', - '\uA761': 'vy', - '\u24E6': 'w', - '\uFF57': 'w', - '\u1E81': 'w', - '\u1E83': 'w', - '\u0175': 'w', - '\u1E87': 'w', - '\u1E85': 'w', - '\u1E98': 'w', - '\u1E89': 'w', - '\u2C73': 'w', - '\u24E7': 'x', - '\uFF58': 'x', - '\u1E8B': 'x', - '\u1E8D': 'x', - '\u24E8': 'y', - '\uFF59': 'y', - '\u1EF3': 'y', - '\u00FD': 'y', - '\u0177': 'y', - '\u1EF9': 'y', - '\u0233': 'y', - '\u1E8F': 'y', - '\u00FF': 'y', - '\u1EF7': 'y', - '\u1E99': 'y', - '\u1EF5': 'y', - '\u01B4': 'y', - '\u024F': 'y', - '\u1EFF': 'y', - '\u24E9': 'z', - '\uFF5A': 'z', - '\u017A': 'z', - '\u1E91': 'z', - '\u017C': 'z', - '\u017E': 'z', - '\u1E93': 'z', - '\u1E95': 'z', - '\u01B6': 'z', - '\u0225': 'z', - '\u0240': 'z', - '\u2C6C': 'z', - '\uA763': 'z', - '\u0386': '\u0391', - '\u0388': '\u0395', - '\u0389': '\u0397', - '\u038A': '\u0399', - '\u03AA': '\u0399', - '\u038C': '\u039F', - '\u038E': '\u03A5', - '\u03AB': '\u03A5', - '\u038F': '\u03A9', - '\u03AC': '\u03B1', - '\u03AD': '\u03B5', - '\u03AE': '\u03B7', - '\u03AF': '\u03B9', - '\u03CA': '\u03B9', - '\u0390': '\u03B9', - '\u03CC': '\u03BF', - '\u03CD': '\u03C5', - '\u03CB': '\u03C5', - '\u03B0': '\u03C5', - '\u03C9': '\u03C9', - '\u03C2': '\u03C3' - }; - - return diacritics; -}); - -S2.define('select2/data/base',[ - '../utils' -], function (Utils) { - function BaseAdapter ($element, options) { - BaseAdapter.__super__.constructor.call(this); - } - - Utils.Extend(BaseAdapter, Utils.Observable); - - BaseAdapter.prototype.current = function (callback) { - throw new Error('The `current` method must be defined in child classes.'); - }; - - BaseAdapter.prototype.query = function (params, callback) { - throw new Error('The `query` method must be defined in child classes.'); - }; - - BaseAdapter.prototype.bind = function (container, $container) { - // Can be implemented in subclasses - }; - - BaseAdapter.prototype.destroy = function () { - // Can be implemented in subclasses - }; - - BaseAdapter.prototype.generateResultId = function (container, data) { - var id = container.id + '-result-'; - - id += Utils.generateChars(4); - - if (data.id != null) { - id += '-' + data.id.toString(); - } else { - id += '-' + Utils.generateChars(4); - } - return id; - }; - - return BaseAdapter; -}); - -S2.define('select2/data/select',[ - './base', - '../utils', - 'jquery' -], function (BaseAdapter, Utils, $) { - function SelectAdapter ($element, options) { - this.$element = $element; - this.options = options; - - SelectAdapter.__super__.constructor.call(this); - } - - Utils.Extend(SelectAdapter, BaseAdapter); - - SelectAdapter.prototype.current = function (callback) { - var data = []; - var self = this; - - this.$element.find(':selected').each(function () { - var $option = $(this); - - var option = self.item($option); - - data.push(option); - }); - - callback(data); - }; - - SelectAdapter.prototype.select = function (data) { - var self = this; - - data.selected = true; - - // If data.element is a DOM node, use it instead - if ($(data.element).is('option')) { - data.element.selected = true; - - this.$element.trigger('change'); - - return; - } - - if (this.$element.prop('multiple')) { - this.current(function (currentData) { - var val = []; - - data = [data]; - data.push.apply(data, currentData); - - for (var d = 0; d < data.length; d++) { - var id = data[d].id; - - if ($.inArray(id, val) === -1) { - val.push(id); - } - } - - self.$element.val(val); - self.$element.trigger('change'); - }); - } else { - var val = data.id; - - this.$element.val(val); - this.$element.trigger('change'); - } - }; - - SelectAdapter.prototype.unselect = function (data) { - var self = this; - - if (!this.$element.prop('multiple')) { - return; - } - - data.selected = false; - - if ($(data.element).is('option')) { - data.element.selected = false; - - this.$element.trigger('change'); - - return; - } - - this.current(function (currentData) { - var val = []; - - for (var d = 0; d < currentData.length; d++) { - var id = currentData[d].id; - - if (id !== data.id && $.inArray(id, val) === -1) { - val.push(id); - } - } - - self.$element.val(val); - - self.$element.trigger('change'); - }); - }; - - SelectAdapter.prototype.bind = function (container, $container) { - var self = this; - - this.container = container; - - container.on('select', function (params) { - self.select(params.data); - }); - - container.on('unselect', function (params) { - self.unselect(params.data); - }); - }; - - SelectAdapter.prototype.destroy = function () { - // Remove anything added to child elements - this.$element.find('*').each(function () { - // Remove any custom data set by Select2 - $.removeData(this, 'data'); - }); - }; - - SelectAdapter.prototype.query = function (params, callback) { - var data = []; - var self = this; - - var $options = this.$element.children(); - - $options.each(function () { - var $option = $(this); - - if (!$option.is('option') && !$option.is('optgroup')) { - return; - } - - var option = self.item($option); - - var matches = self.matches(params, option); - - if (matches !== null) { - data.push(matches); - } - }); - - callback({ - results: data - }); - }; - - SelectAdapter.prototype.addOptions = function ($options) { - Utils.appendMany(this.$element, $options); - }; - - SelectAdapter.prototype.option = function (data) { - var option; - - if (data.children) { - option = document.createElement('optgroup'); - option.label = data.text; - } else { - option = document.createElement('option'); - - if (option.textContent !== undefined) { - option.textContent = data.text; - } else { - option.innerText = data.text; - } - } - - if (data.id) { - option.value = data.id; - } - - if (data.disabled) { - option.disabled = true; - } - - if (data.selected) { - option.selected = true; - } - - if (data.title) { - option.title = data.title; - } - - var $option = $(option); - - var normalizedData = this._normalizeItem(data); - normalizedData.element = option; - - // Override the option's data with the combined data - $.data(option, 'data', normalizedData); - - return $option; - }; - - SelectAdapter.prototype.item = function ($option) { - var data = {}; - - data = $.data($option[0], 'data'); - - if (data != null) { - return data; - } - - if ($option.is('option')) { - data = { - id: $option.val(), - text: $option.text(), - disabled: $option.prop('disabled'), - selected: $option.prop('selected'), - title: $option.prop('title') - }; - } else if ($option.is('optgroup')) { - data = { - text: $option.prop('label'), - children: [], - title: $option.prop('title') - }; - - var $children = $option.children('option'); - var children = []; - - for (var c = 0; c < $children.length; c++) { - var $child = $($children[c]); - - var child = this.item($child); - - children.push(child); - } - - data.children = children; - } - - data = this._normalizeItem(data); - data.element = $option[0]; - - $.data($option[0], 'data', data); - - return data; - }; - - SelectAdapter.prototype._normalizeItem = function (item) { - if (!$.isPlainObject(item)) { - item = { - id: item, - text: item - }; - } - - item = $.extend({}, { - text: '' - }, item); - - var defaults = { - selected: false, - disabled: false - }; - - if (item.id != null) { - item.id = item.id.toString(); - } - - if (item.text != null) { - item.text = item.text.toString(); - } - - if (item._resultId == null && item.id && this.container != null) { - item._resultId = this.generateResultId(this.container, item); - } - - return $.extend({}, defaults, item); - }; - - SelectAdapter.prototype.matches = function (params, data) { - var matcher = this.options.get('matcher'); - - return matcher(params, data); - }; - - return SelectAdapter; -}); - -S2.define('select2/data/array',[ - './select', - '../utils', - 'jquery' -], function (SelectAdapter, Utils, $) { - function ArrayAdapter ($element, options) { - var data = options.get('data') || []; - - ArrayAdapter.__super__.constructor.call(this, $element, options); - - this.addOptions(this.convertToOptions(data)); - } - - Utils.Extend(ArrayAdapter, SelectAdapter); - - ArrayAdapter.prototype.select = function (data) { - var $option = this.$element.find('option').filter(function (i, elm) { - return elm.value == data.id.toString(); - }); - - if ($option.length === 0) { - $option = this.option(data); - - this.addOptions($option); - } - - ArrayAdapter.__super__.select.call(this, data); - }; - - ArrayAdapter.prototype.convertToOptions = function (data) { - var self = this; - - var $existing = this.$element.find('option'); - var existingIds = $existing.map(function () { - return self.item($(this)).id; - }).get(); - - var $options = []; - - // Filter out all items except for the one passed in the argument - function onlyItem (item) { - return function () { - return $(this).val() == item.id; - }; - } - - for (var d = 0; d < data.length; d++) { - var item = this._normalizeItem(data[d]); - - // Skip items which were pre-loaded, only merge the data - if ($.inArray(item.id, existingIds) >= 0) { - var $existingOption = $existing.filter(onlyItem(item)); - - var existingData = this.item($existingOption); - var newData = $.extend(true, {}, item, existingData); - - var $newOption = this.option(newData); - - $existingOption.replaceWith($newOption); - - continue; - } - - var $option = this.option(item); - - if (item.children) { - var $children = this.convertToOptions(item.children); - - Utils.appendMany($option, $children); - } - - $options.push($option); - } - - return $options; - }; - - return ArrayAdapter; -}); - -S2.define('select2/data/ajax',[ - './array', - '../utils', - 'jquery' -], function (ArrayAdapter, Utils, $) { - function AjaxAdapter ($element, options) { - this.ajaxOptions = this._applyDefaults(options.get('ajax')); - - if (this.ajaxOptions.processResults != null) { - this.processResults = this.ajaxOptions.processResults; - } - - AjaxAdapter.__super__.constructor.call(this, $element, options); - } - - Utils.Extend(AjaxAdapter, ArrayAdapter); - - AjaxAdapter.prototype._applyDefaults = function (options) { - var defaults = { - data: function (params) { - return $.extend({}, params, { - q: params.term - }); - }, - transport: function (params, success, failure) { - var $request = $.ajax(params); - - $request.then(success); - $request.fail(failure); - - return $request; - } - }; - - return $.extend({}, defaults, options, true); - }; - - AjaxAdapter.prototype.processResults = function (results) { - return results; - }; - - AjaxAdapter.prototype.query = function (params, callback) { - var matches = []; - var self = this; - - if (this._request != null) { - // JSONP requests cannot always be aborted - if ($.isFunction(this._request.abort)) { - this._request.abort(); - } - - this._request = null; - } - - var options = $.extend({ - type: 'GET' - }, this.ajaxOptions); - - if (typeof options.url === 'function') { - options.url = options.url.call(this.$element, params); - } - - if (typeof options.data === 'function') { - options.data = options.data.call(this.$element, params); - } - - function request () { - var $request = options.transport(options, function (data) { - var results = self.processResults(data, params); - - if (self.options.get('debug') && window.console && console.error) { - // Check to make sure that the response included a `results` key. - if (!results || !results.results || !$.isArray(results.results)) { - console.error( - 'Select2: The AJAX results did not return an array in the ' + - '`results` key of the response.' - ); - } - } - - callback(results); - }, function () { - // Attempt to detect if a request was aborted - // Only works if the transport exposes a status property - if ($request.status && $request.status === '0') { - return; - } - - self.trigger('results:message', { - message: 'errorLoading' - }); - }); - - self._request = $request; - } - - if (this.ajaxOptions.delay && params.term != null) { - if (this._queryTimeout) { - window.clearTimeout(this._queryTimeout); - } - - this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay); - } else { - request(); - } - }; - - return AjaxAdapter; -}); - -S2.define('select2/data/tags',[ - 'jquery' -], function ($) { - function Tags (decorated, $element, options) { - var tags = options.get('tags'); - - var createTag = options.get('createTag'); - - if (createTag !== undefined) { - this.createTag = createTag; - } - - var insertTag = options.get('insertTag'); - - if (insertTag !== undefined) { - this.insertTag = insertTag; - } - - decorated.call(this, $element, options); - - if ($.isArray(tags)) { - for (var t = 0; t < tags.length; t++) { - var tag = tags[t]; - var item = this._normalizeItem(tag); - - var $option = this.option(item); - - this.$element.append($option); - } - } - } - - Tags.prototype.query = function (decorated, params, callback) { - var self = this; - - this._removeOldTags(); - - if (params.term == null || params.page != null) { - decorated.call(this, params, callback); - return; - } - - function wrapper (obj, child) { - var data = obj.results; - - for (var i = 0; i < data.length; i++) { - var option = data[i]; - - var checkChildren = ( - option.children != null && - !wrapper({ - results: option.children - }, true) - ); - - var checkText = option.text === params.term; - - if (checkText || checkChildren) { - if (child) { - return false; - } - - obj.data = data; - callback(obj); - - return; - } - } - - if (child) { - return true; - } - - var tag = self.createTag(params); - - if (tag != null) { - var $option = self.option(tag); - $option.attr('data-select2-tag', true); - - self.addOptions([$option]); - - self.insertTag(data, tag); - } - - obj.results = data; - - callback(obj); - } - - decorated.call(this, params, wrapper); - }; - - Tags.prototype.createTag = function (decorated, params) { - var term = $.trim(params.term); - - if (term === '') { - return null; - } - - return { - id: term, - text: term - }; - }; - - Tags.prototype.insertTag = function (_, data, tag) { - data.unshift(tag); - }; - - Tags.prototype._removeOldTags = function (_) { - var tag = this._lastTag; - - var $options = this.$element.find('option[data-select2-tag]'); - - $options.each(function () { - if (this.selected) { - return; - } - - $(this).remove(); - }); - }; - - return Tags; -}); - -S2.define('select2/data/tokenizer',[ - 'jquery' -], function ($) { - function Tokenizer (decorated, $element, options) { - var tokenizer = options.get('tokenizer'); - - if (tokenizer !== undefined) { - this.tokenizer = tokenizer; - } - - decorated.call(this, $element, options); - } - - Tokenizer.prototype.bind = function (decorated, container, $container) { - decorated.call(this, container, $container); - - this.$search = container.dropdown.$search || container.selection.$search || - $container.find('.select2-search__field'); - }; - - Tokenizer.prototype.query = function (decorated, params, callback) { - var self = this; - - function createAndSelect (data) { - // Normalize the data object so we can use it for checks - var item = self._normalizeItem(data); - - // Check if the data object already exists as a tag - // Select it if it doesn't - var $existingOptions = self.$element.find('option').filter(function () { - return $(this).val() === item.id; - }); - - // If an existing option wasn't found for it, create the option - if (!$existingOptions.length) { - var $option = self.option(item); - $option.attr('data-select2-tag', true); - - self._removeOldTags(); - self.addOptions([$option]); - } - - // Select the item, now that we know there is an option for it - select(item); - } - - function select (data) { - self.trigger('select', { - data: data - }); - } - - params.term = params.term || ''; - - var tokenData = this.tokenizer(params, this.options, createAndSelect); - - if (tokenData.term !== params.term) { - // Replace the search term if we have the search box - if (this.$search.length) { - this.$search.val(tokenData.term); - this.$search.focus(); - } - - params.term = tokenData.term; - } - - decorated.call(this, params, callback); - }; - - Tokenizer.prototype.tokenizer = function (_, params, options, callback) { - var separators = options.get('tokenSeparators') || []; - var term = params.term; - var i = 0; - - var createTag = this.createTag || function (params) { - return { - id: params.term, - text: params.term - }; - }; - - while (i < term.length) { - var termChar = term[i]; - - if ($.inArray(termChar, separators) === -1) { - i++; - - continue; - } - - var part = term.substr(0, i); - var partParams = $.extend({}, params, { - term: part - }); - - var data = createTag(partParams); - - if (data == null) { - i++; - continue; - } - - callback(data); - - // Reset the term to not include the tokenized portion - term = term.substr(i + 1) || ''; - i = 0; - } - - return { - term: term - }; - }; - - return Tokenizer; -}); - -S2.define('select2/data/minimumInputLength',[ - -], function () { - function MinimumInputLength (decorated, $e, options) { - this.minimumInputLength = options.get('minimumInputLength'); - - decorated.call(this, $e, options); - } - - MinimumInputLength.prototype.query = function (decorated, params, callback) { - params.term = params.term || ''; - - if (params.term.length < this.minimumInputLength) { - this.trigger('results:message', { - message: 'inputTooShort', - args: { - minimum: this.minimumInputLength, - input: params.term, - params: params - } - }); - - return; - } - - decorated.call(this, params, callback); - }; - - return MinimumInputLength; -}); - -S2.define('select2/data/maximumInputLength',[ - -], function () { - function MaximumInputLength (decorated, $e, options) { - this.maximumInputLength = options.get('maximumInputLength'); - - decorated.call(this, $e, options); - } - - MaximumInputLength.prototype.query = function (decorated, params, callback) { - params.term = params.term || ''; - - if (this.maximumInputLength > 0 && - params.term.length > this.maximumInputLength) { - this.trigger('results:message', { - message: 'inputTooLong', - args: { - maximum: this.maximumInputLength, - input: params.term, - params: params - } - }); - - return; - } - - decorated.call(this, params, callback); - }; - - return MaximumInputLength; -}); - -S2.define('select2/data/maximumSelectionLength',[ - -], function (){ - function MaximumSelectionLength (decorated, $e, options) { - this.maximumSelectionLength = options.get('maximumSelectionLength'); - - decorated.call(this, $e, options); - } - - MaximumSelectionLength.prototype.query = - function (decorated, params, callback) { - var self = this; - - this.current(function (currentData) { - var count = currentData != null ? currentData.length : 0; - if (self.maximumSelectionLength > 0 && - count >= self.maximumSelectionLength) { - self.trigger('results:message', { - message: 'maximumSelected', - args: { - maximum: self.maximumSelectionLength - } - }); - return; - } - decorated.call(self, params, callback); - }); - }; - - return MaximumSelectionLength; -}); - -S2.define('select2/dropdown',[ - 'jquery', - './utils' -], function ($, Utils) { - function Dropdown ($element, options) { - this.$element = $element; - this.options = options; - - Dropdown.__super__.constructor.call(this); - } - - Utils.Extend(Dropdown, Utils.Observable); - - Dropdown.prototype.render = function () { - var $dropdown = $( - '<span class="select2-dropdown">' + - '<span class="select2-results"></span>' + - '</span>' - ); - - $dropdown.attr('dir', this.options.get('dir')); - - this.$dropdown = $dropdown; - - return $dropdown; - }; - - Dropdown.prototype.bind = function () { - // Should be implemented in subclasses - }; - - Dropdown.prototype.position = function ($dropdown, $container) { - // Should be implmented in subclasses - }; - - Dropdown.prototype.destroy = function () { - // Remove the dropdown from the DOM - this.$dropdown.remove(); - }; - - return Dropdown; -}); - -S2.define('select2/dropdown/search',[ - 'jquery', - '../utils' -], function ($, Utils) { - function Search () { } - - Search.prototype.render = function (decorated) { - var $rendered = decorated.call(this); - - var $search = $( - '<span class="select2-search select2-search--dropdown">' + - '<input class="select2-search__field" type="search" tabindex="-1"' + - ' autocomplete="off" autocorrect="off" autocapitalize="off"' + - ' spellcheck="false" role="textbox" />' + - '</span>' - ); - - this.$searchContainer = $search; - this.$search = $search.find('input'); - - $rendered.prepend($search); - - return $rendered; - }; - - Search.prototype.bind = function (decorated, container, $container) { - var self = this; - - decorated.call(this, container, $container); - - this.$search.on('keydown', function (evt) { - self.trigger('keypress', evt); - - self._keyUpPrevented = evt.isDefaultPrevented(); - }); - - // Workaround for browsers which do not support the `input` event - // This will prevent double-triggering of events for browsers which support - // both the `keyup` and `input` events. - this.$search.on('input', function (evt) { - // Unbind the duplicated `keyup` event - $(this).off('keyup'); - }); - - this.$search.on('keyup input', function (evt) { - self.handleSearch(evt); - }); - - container.on('open', function () { - self.$search.attr('tabindex', 0); - - self.$search.focus(); - - window.setTimeout(function () { - self.$search.focus(); - }, 0); - }); - - container.on('close', function () { - self.$search.attr('tabindex', -1); - - self.$search.val(''); - }); - - container.on('focus', function () { - if (container.isOpen()) { - self.$search.focus(); - } - }); - - container.on('results:all', function (params) { - if (params.query.term == null || params.query.term === '') { - var showSearch = self.showSearch(params); - - if (showSearch) { - self.$searchContainer.removeClass('select2-search--hide'); - } else { - self.$searchContainer.addClass('select2-search--hide'); - } - } - }); - }; - - Search.prototype.handleSearch = function (evt) { - if (!this._keyUpPrevented) { - var input = this.$search.val(); - - this.trigger('query', { - term: input - }); - } - - this._keyUpPrevented = false; - }; - - Search.prototype.showSearch = function (_, params) { - return true; - }; - - return Search; -}); - -S2.define('select2/dropdown/hidePlaceholder',[ - -], function () { - function HidePlaceholder (decorated, $element, options, dataAdapter) { - this.placeholder = this.normalizePlaceholder(options.get('placeholder')); - - decorated.call(this, $element, options, dataAdapter); - } - - HidePlaceholder.prototype.append = function (decorated, data) { - data.results = this.removePlaceholder(data.results); - - decorated.call(this, data); - }; - - HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) { - if (typeof placeholder === 'string') { - placeholder = { - id: '', - text: placeholder - }; - } - - return placeholder; - }; - - HidePlaceholder.prototype.removePlaceholder = function (_, data) { - var modifiedData = data.slice(0); - - for (var d = data.length - 1; d >= 0; d--) { - var item = data[d]; - - if (this.placeholder.id === item.id) { - modifiedData.splice(d, 1); - } - } - - return modifiedData; - }; - - return HidePlaceholder; -}); - -S2.define('select2/dropdown/infiniteScroll',[ - 'jquery' -], function ($) { - function InfiniteScroll (decorated, $element, options, dataAdapter) { - this.lastParams = {}; - - decorated.call(this, $element, options, dataAdapter); - - this.$loadingMore = this.createLoadingMore(); - this.loading = false; - } - - InfiniteScroll.prototype.append = function (decorated, data) { - this.$loadingMore.remove(); - this.loading = false; - - decorated.call(this, data); - - if (this.showLoadingMore(data)) { - this.$results.append(this.$loadingMore); - } - }; - - InfiniteScroll.prototype.bind = function (decorated, container, $container) { - var self = this; - - decorated.call(this, container, $container); - - container.on('query', function (params) { - self.lastParams = params; - self.loading = true; - }); - - container.on('query:append', function (params) { - self.lastParams = params; - self.loading = true; - }); - - this.$results.on('scroll', function () { - var isLoadMoreVisible = $.contains( - document.documentElement, - self.$loadingMore[0] - ); - - if (self.loading || !isLoadMoreVisible) { - return; - } - - var currentOffset = self.$results.offset().top + - self.$results.outerHeight(false); - var loadingMoreOffset = self.$loadingMore.offset().top + - self.$loadingMore.outerHeight(false); - - if (currentOffset + 50 >= loadingMoreOffset) { - self.loadMore(); - } - }); - }; - - InfiniteScroll.prototype.loadMore = function () { - this.loading = true; - - var params = $.extend({}, {page: 1}, this.lastParams); - - params.page++; - - this.trigger('query:append', params); - }; - - InfiniteScroll.prototype.showLoadingMore = function (_, data) { - return data.pagination && data.pagination.more; - }; - - InfiniteScroll.prototype.createLoadingMore = function () { - var $option = $( - '<li ' + - 'class="select2-results__option select2-results__option--load-more"' + - 'role="treeitem" aria-disabled="true"></li>' - ); - - var message = this.options.get('translations').get('loadingMore'); - - $option.html(message(this.lastParams)); - - return $option; - }; - - return InfiniteScroll; -}); - -S2.define('select2/dropdown/attachBody',[ - 'jquery', - '../utils' -], function ($, Utils) { - function AttachBody (decorated, $element, options) { - this.$dropdownParent = options.get('dropdownParent') || $(document.body); - - decorated.call(this, $element, options); - } - - AttachBody.prototype.bind = function (decorated, container, $container) { - var self = this; - - var setupResultsEvents = false; - - decorated.call(this, container, $container); - - container.on('open', function () { - self._showDropdown(); - self._attachPositioningHandler(container); - - if (!setupResultsEvents) { - setupResultsEvents = true; - - container.on('results:all', function () { - self._positionDropdown(); - self._resizeDropdown(); - }); - - container.on('results:append', function () { - self._positionDropdown(); - self._resizeDropdown(); - }); - } - }); - - container.on('close', function () { - self._hideDropdown(); - self._detachPositioningHandler(container); - }); - - this.$dropdownContainer.on('mousedown', function (evt) { - evt.stopPropagation(); - }); - }; - - AttachBody.prototype.destroy = function (decorated) { - decorated.call(this); - - this.$dropdownContainer.remove(); - }; - - AttachBody.prototype.position = function (decorated, $dropdown, $container) { - // Clone all of the container classes - $dropdown.attr('class', $container.attr('class')); - - $dropdown.removeClass('select2'); - $dropdown.addClass('select2-container--open'); - - $dropdown.css({ - position: 'absolute', - top: -999999 - }); - - this.$container = $container; - }; - - AttachBody.prototype.render = function (decorated) { - var $container = $('<span></span>'); - - var $dropdown = decorated.call(this); - $container.append($dropdown); - - this.$dropdownContainer = $container; - - return $container; - }; - - AttachBody.prototype._hideDropdown = function (decorated) { - this.$dropdownContainer.detach(); - }; - - AttachBody.prototype._attachPositioningHandler = - function (decorated, container) { - var self = this; - - var scrollEvent = 'scroll.select2.' + container.id; - var resizeEvent = 'resize.select2.' + container.id; - var orientationEvent = 'orientationchange.select2.' + container.id; - - var $watchers = this.$container.parents().filter(Utils.hasScroll); - $watchers.each(function () { - $(this).data('select2-scroll-position', { - x: $(this).scrollLeft(), - y: $(this).scrollTop() - }); - }); - - $watchers.on(scrollEvent, function (ev) { - var position = $(this).data('select2-scroll-position'); - $(this).scrollTop(position.y); - }); - - $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent, - function (e) { - self._positionDropdown(); - self._resizeDropdown(); - }); - }; - - AttachBody.prototype._detachPositioningHandler = - function (decorated, container) { - var scrollEvent = 'scroll.select2.' + container.id; - var resizeEvent = 'resize.select2.' + container.id; - var orientationEvent = 'orientationchange.select2.' + container.id; - - var $watchers = this.$container.parents().filter(Utils.hasScroll); - $watchers.off(scrollEvent); - - $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent); - }; - - AttachBody.prototype._positionDropdown = function () { - var $window = $(window); - - var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above'); - var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below'); - - var newDirection = null; - - var offset = this.$container.offset(); - - offset.bottom = offset.top + this.$container.outerHeight(false); - - var container = { - height: this.$container.outerHeight(false) - }; - - container.top = offset.top; - container.bottom = offset.top + container.height; - - var dropdown = { - height: this.$dropdown.outerHeight(false) - }; - - var viewport = { - top: $window.scrollTop(), - bottom: $window.scrollTop() + $window.height() - }; - - var enoughRoomAbove = viewport.top < (offset.top - dropdown.height); - var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height); - - var css = { - left: offset.left, - top: container.bottom - }; - - // Determine what the parent element is to use for calciulating the offset - var $offsetParent = this.$dropdownParent; - - // For statically positoned elements, we need to get the element - // that is determining the offset - if ($offsetParent.css('position') === 'static') { - $offsetParent = $offsetParent.offsetParent(); - } - - var parentOffset = $offsetParent.offset(); - - css.top -= parentOffset.top; - css.left -= parentOffset.left; - - if (!isCurrentlyAbove && !isCurrentlyBelow) { - newDirection = 'below'; - } - - if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) { - newDirection = 'above'; - } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) { - newDirection = 'below'; - } - - if (newDirection == 'above' || - (isCurrentlyAbove && newDirection !== 'below')) { - css.top = container.top - parentOffset.top - dropdown.height; - } - - if (newDirection != null) { - this.$dropdown - .removeClass('select2-dropdown--below select2-dropdown--above') - .addClass('select2-dropdown--' + newDirection); - this.$container - .removeClass('select2-container--below select2-container--above') - .addClass('select2-container--' + newDirection); - } - - this.$dropdownContainer.css(css); - }; - - AttachBody.prototype._resizeDropdown = function () { - var css = { - width: this.$container.outerWidth(false) + 'px' - }; - - if (this.options.get('dropdownAutoWidth')) { - css.minWidth = css.width; - css.position = 'relative'; - css.width = 'auto'; - } - - this.$dropdown.css(css); - }; - - AttachBody.prototype._showDropdown = function (decorated) { - this.$dropdownContainer.appendTo(this.$dropdownParent); - - this._positionDropdown(); - this._resizeDropdown(); - }; - - return AttachBody; -}); - -S2.define('select2/dropdown/minimumResultsForSearch',[ - -], function () { - function countResults (data) { - var count = 0; - - for (var d = 0; d < data.length; d++) { - var item = data[d]; - - if (item.children) { - count += countResults(item.children); - } else { - count++; - } - } - - return count; - } - - function MinimumResultsForSearch (decorated, $element, options, dataAdapter) { - this.minimumResultsForSearch = options.get('minimumResultsForSearch'); - - if (this.minimumResultsForSearch < 0) { - this.minimumResultsForSearch = Infinity; - } - - decorated.call(this, $element, options, dataAdapter); - } - - MinimumResultsForSearch.prototype.showSearch = function (decorated, params) { - if (countResults(params.data.results) < this.minimumResultsForSearch) { - return false; - } - - return decorated.call(this, params); - }; - - return MinimumResultsForSearch; -}); - -S2.define('select2/dropdown/selectOnClose',[ - -], function () { - function SelectOnClose () { } - - SelectOnClose.prototype.bind = function (decorated, container, $container) { - var self = this; - - decorated.call(this, container, $container); - - container.on('close', function (params) { - self._handleSelectOnClose(params); - }); - }; - - SelectOnClose.prototype._handleSelectOnClose = function (_, params) { - if (params && params.originalSelect2Event != null) { - var event = params.originalSelect2Event; - - // Don't select an item if the close event was triggered from a select or - // unselect event - if (event._type === 'select' || event._type === 'unselect') { - return; - } - } - - var $highlightedResults = this.getHighlightedResults(); - - // Only select highlighted results - if ($highlightedResults.length < 1) { - return; - } - - var data = $highlightedResults.data('data'); - - // Don't re-select already selected resulte - if ( - (data.element != null && data.element.selected) || - (data.element == null && data.selected) - ) { - return; - } - - this.trigger('select', { - data: data - }); - }; - - return SelectOnClose; -}); - -S2.define('select2/dropdown/closeOnSelect',[ - -], function () { - function CloseOnSelect () { } - - CloseOnSelect.prototype.bind = function (decorated, container, $container) { - var self = this; - - decorated.call(this, container, $container); - - container.on('select', function (evt) { - self._selectTriggered(evt); - }); - - container.on('unselect', function (evt) { - self._selectTriggered(evt); - }); - }; - - CloseOnSelect.prototype._selectTriggered = function (_, evt) { - var originalEvent = evt.originalEvent; - - // Don't close if the control key is being held - if (originalEvent && originalEvent.ctrlKey) { - return; - } - - this.trigger('close', { - originalEvent: originalEvent, - originalSelect2Event: evt - }); - }; - - return CloseOnSelect; -}); - -S2.define('select2/i18n/en',[],function () { - // English - return { - errorLoading: function () { - return 'The results could not be loaded.'; - }, - inputTooLong: function (args) { - var overChars = args.input.length - args.maximum; - - var message = 'Please delete ' + overChars + ' character'; - - if (overChars != 1) { - message += 's'; - } - - return message; - }, - inputTooShort: function (args) { - var remainingChars = args.minimum - args.input.length; - - var message = 'Please enter ' + remainingChars + ' or more characters'; - - return message; - }, - loadingMore: function () { - return 'Loading more results…'; - }, - maximumSelected: function (args) { - var message = 'You can only select ' + args.maximum + ' item'; - - if (args.maximum != 1) { - message += 's'; - } - - return message; - }, - noResults: function () { - return 'No results found'; - }, - searching: function () { - return 'Searching…'; - } - }; -}); - -S2.define('select2/defaults',[ - 'jquery', - 'require', - - './results', - - './selection/single', - './selection/multiple', - './selection/placeholder', - './selection/allowClear', - './selection/search', - './selection/eventRelay', - - './utils', - './translation', - './diacritics', - - './data/select', - './data/array', - './data/ajax', - './data/tags', - './data/tokenizer', - './data/minimumInputLength', - './data/maximumInputLength', - './data/maximumSelectionLength', - - './dropdown', - './dropdown/search', - './dropdown/hidePlaceholder', - './dropdown/infiniteScroll', - './dropdown/attachBody', - './dropdown/minimumResultsForSearch', - './dropdown/selectOnClose', - './dropdown/closeOnSelect', - - './i18n/en' -], function ($, require, - - ResultsList, - - SingleSelection, MultipleSelection, Placeholder, AllowClear, - SelectionSearch, EventRelay, - - Utils, Translation, DIACRITICS, - - SelectData, ArrayData, AjaxData, Tags, Tokenizer, - MinimumInputLength, MaximumInputLength, MaximumSelectionLength, - - Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll, - AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect, - - EnglishTranslation) { - function Defaults () { - this.reset(); - } - - Defaults.prototype.apply = function (options) { - options = $.extend(true, {}, this.defaults, options); - - if (options.dataAdapter == null) { - if (options.ajax != null) { - options.dataAdapter = AjaxData; - } else if (options.data != null) { - options.dataAdapter = ArrayData; - } else { - options.dataAdapter = SelectData; - } - - if (options.minimumInputLength > 0) { - options.dataAdapter = Utils.Decorate( - options.dataAdapter, - MinimumInputLength - ); - } - - if (options.maximumInputLength > 0) { - options.dataAdapter = Utils.Decorate( - options.dataAdapter, - MaximumInputLength - ); - } - - if (options.maximumSelectionLength > 0) { - options.dataAdapter = Utils.Decorate( - options.dataAdapter, - MaximumSelectionLength - ); - } - - if (options.tags) { - options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags); - } - - if (options.tokenSeparators != null || options.tokenizer != null) { - options.dataAdapter = Utils.Decorate( - options.dataAdapter, - Tokenizer - ); - } - - if (options.query != null) { - var Query = require(options.amdBase + 'compat/query'); - - options.dataAdapter = Utils.Decorate( - options.dataAdapter, - Query - ); - } - - if (options.initSelection != null) { - var InitSelection = require(options.amdBase + 'compat/initSelection'); - - options.dataAdapter = Utils.Decorate( - options.dataAdapter, - InitSelection - ); - } - } - - if (options.resultsAdapter == null) { - options.resultsAdapter = ResultsList; - - if (options.ajax != null) { - options.resultsAdapter = Utils.Decorate( - options.resultsAdapter, - InfiniteScroll - ); - } - - if (options.placeholder != null) { - options.resultsAdapter = Utils.Decorate( - options.resultsAdapter, - HidePlaceholder - ); - } - - if (options.selectOnClose) { - options.resultsAdapter = Utils.Decorate( - options.resultsAdapter, - SelectOnClose - ); - } - } - - if (options.dropdownAdapter == null) { - if (options.multiple) { - options.dropdownAdapter = Dropdown; - } else { - var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch); - - options.dropdownAdapter = SearchableDropdown; - } - - if (options.minimumResultsForSearch !== 0) { - options.dropdownAdapter = Utils.Decorate( - options.dropdownAdapter, - MinimumResultsForSearch - ); - } - - if (options.closeOnSelect) { - options.dropdownAdapter = Utils.Decorate( - options.dropdownAdapter, - CloseOnSelect - ); - } - - if ( - options.dropdownCssClass != null || - options.dropdownCss != null || - options.adaptDropdownCssClass != null - ) { - var DropdownCSS = require(options.amdBase + 'compat/dropdownCss'); - - options.dropdownAdapter = Utils.Decorate( - options.dropdownAdapter, - DropdownCSS - ); - } - - options.dropdownAdapter = Utils.Decorate( - options.dropdownAdapter, - AttachBody - ); - } - - if (options.selectionAdapter == null) { - if (options.multiple) { - options.selectionAdapter = MultipleSelection; - } else { - options.selectionAdapter = SingleSelection; - } - - // Add the placeholder mixin if a placeholder was specified - if (options.placeholder != null) { - options.selectionAdapter = Utils.Decorate( - options.selectionAdapter, - Placeholder - ); - } - - if (options.allowClear) { - options.selectionAdapter = Utils.Decorate( - options.selectionAdapter, - AllowClear - ); - } - - if (options.multiple) { - options.selectionAdapter = Utils.Decorate( - options.selectionAdapter, - SelectionSearch - ); - } - - if ( - options.containerCssClass != null || - options.containerCss != null || - options.adaptContainerCssClass != null - ) { - var ContainerCSS = require(options.amdBase + 'compat/containerCss'); - - options.selectionAdapter = Utils.Decorate( - options.selectionAdapter, - ContainerCSS - ); - } - - options.selectionAdapter = Utils.Decorate( - options.selectionAdapter, - EventRelay - ); - } - - if (typeof options.language === 'string') { - // Check if the language is specified with a region - if (options.language.indexOf('-') > 0) { - // Extract the region information if it is included - var languageParts = options.language.split('-'); - var baseLanguage = languageParts[0]; - - options.language = [options.language, baseLanguage]; - } else { - options.language = [options.language]; - } - } - - if ($.isArray(options.language)) { - var languages = new Translation(); - options.language.push('en'); - - var languageNames = options.language; - - for (var l = 0; l < languageNames.length; l++) { - var name = languageNames[l]; - var language = {}; - - try { - // Try to load it with the original name - language = Translation.loadPath(name); - } catch (e) { - try { - // If we couldn't load it, check if it wasn't the full path - name = this.defaults.amdLanguageBase + name; - language = Translation.loadPath(name); - } catch (ex) { - // The translation could not be loaded at all. Sometimes this is - // because of a configuration problem, other times this can be - // because of how Select2 helps load all possible translation files. - if (options.debug && window.console && console.warn) { - console.warn( - 'Select2: The language file for "' + name + '" could not be ' + - 'automatically loaded. A fallback will be used instead.' - ); - } - - continue; - } - } - - languages.extend(language); - } - - options.translations = languages; - } else { - var baseTranslation = Translation.loadPath( - this.defaults.amdLanguageBase + 'en' - ); - var customTranslation = new Translation(options.language); - - customTranslation.extend(baseTranslation); - - options.translations = customTranslation; - } - - return options; - }; - - Defaults.prototype.reset = function () { - function stripDiacritics (text) { - // Used 'uni range + named function' from http://jsperf.com/diacritics/18 - function match(a) { - return DIACRITICS[a] || a; - } - - return text.replace(/[^\u0000-\u007E]/g, match); - } - - function matcher (params, data) { - // Always return the object if there is nothing to compare - if ($.trim(params.term) === '') { - return data; - } - - // Do a recursive check for options with children - if (data.children && data.children.length > 0) { - // Clone the data object if there are children - // This is required as we modify the object to remove any non-matches - var match = $.extend(true, {}, data); - - // Check each child of the option - for (var c = data.children.length - 1; c >= 0; c--) { - var child = data.children[c]; - - var matches = matcher(params, child); - - // If there wasn't a match, remove the object in the array - if (matches == null) { - match.children.splice(c, 1); - } - } - - // If any children matched, return the new object - if (match.children.length > 0) { - return match; - } - - // If there were no matching children, check just the plain object - return matcher(params, match); - } - - var original = stripDiacritics(data.text).toUpperCase(); - var term = stripDiacritics(params.term).toUpperCase(); - - // Check if the text contains the term - if (original.indexOf(term) > -1) { - return data; - } - - // If it doesn't contain the term, don't return anything - return null; - } - - this.defaults = { - amdBase: './', - amdLanguageBase: './i18n/', - closeOnSelect: true, - debug: false, - dropdownAutoWidth: false, - escapeMarkup: Utils.escapeMarkup, - language: EnglishTranslation, - matcher: matcher, - minimumInputLength: 0, - maximumInputLength: 0, - maximumSelectionLength: 0, - minimumResultsForSearch: 0, - selectOnClose: false, - sorter: function (data) { - return data; - }, - templateResult: function (result) { - return result.text; - }, - templateSelection: function (selection) { - return selection.text; - }, - theme: 'default', - width: 'resolve' - }; - }; - - Defaults.prototype.set = function (key, value) { - var camelKey = $.camelCase(key); - - var data = {}; - data[camelKey] = value; - - var convertedData = Utils._convertData(data); - - $.extend(this.defaults, convertedData); - }; - - var defaults = new Defaults(); - - return defaults; -}); - -S2.define('select2/options',[ - 'require', - 'jquery', - './defaults', - './utils' -], function (require, $, Defaults, Utils) { - function Options (options, $element) { - this.options = options; - - if ($element != null) { - this.fromElement($element); - } - - this.options = Defaults.apply(this.options); - - if ($element && $element.is('input')) { - var InputCompat = require(this.get('amdBase') + 'compat/inputData'); - - this.options.dataAdapter = Utils.Decorate( - this.options.dataAdapter, - InputCompat - ); - } - } - - Options.prototype.fromElement = function ($e) { - var excludedData = ['select2']; - - if (this.options.multiple == null) { - this.options.multiple = $e.prop('multiple'); - } - - if (this.options.disabled == null) { - this.options.disabled = $e.prop('disabled'); - } - - if (this.options.language == null) { - if ($e.prop('lang')) { - this.options.language = $e.prop('lang').toLowerCase(); - } else if ($e.closest('[lang]').prop('lang')) { - this.options.language = $e.closest('[lang]').prop('lang'); - } - } - - if (this.options.dir == null) { - if ($e.prop('dir')) { - this.options.dir = $e.prop('dir'); - } else if ($e.closest('[dir]').prop('dir')) { - this.options.dir = $e.closest('[dir]').prop('dir'); - } else { - this.options.dir = 'ltr'; - } - } - - $e.prop('disabled', this.options.disabled); - $e.prop('multiple', this.options.multiple); - - if ($e.data('select2Tags')) { - if (this.options.debug && window.console && console.warn) { - console.warn( - 'Select2: The `data-select2-tags` attribute has been changed to ' + - 'use the `data-data` and `data-tags="true"` attributes and will be ' + - 'removed in future versions of Select2.' - ); - } - - $e.data('data', $e.data('select2Tags')); - $e.data('tags', true); - } - - if ($e.data('ajaxUrl')) { - if (this.options.debug && window.console && console.warn) { - console.warn( - 'Select2: The `data-ajax-url` attribute has been changed to ' + - '`data-ajax--url` and support for the old attribute will be removed' + - ' in future versions of Select2.' - ); - } - - $e.attr('ajax--url', $e.data('ajaxUrl')); - $e.data('ajax--url', $e.data('ajaxUrl')); - } - - var dataset = {}; - - // Prefer the element's `dataset` attribute if it exists - // jQuery 1.x does not correctly handle data attributes with multiple dashes - if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) { - dataset = $.extend(true, {}, $e[0].dataset, $e.data()); - } else { - dataset = $e.data(); - } - - var data = $.extend(true, {}, dataset); - - data = Utils._convertData(data); - - for (var key in data) { - if ($.inArray(key, excludedData) > -1) { - continue; - } - - if ($.isPlainObject(this.options[key])) { - $.extend(this.options[key], data[key]); - } else { - this.options[key] = data[key]; - } - } - - return this; - }; - - Options.prototype.get = function (key) { - return this.options[key]; - }; - - Options.prototype.set = function (key, val) { - this.options[key] = val; - }; - - return Options; -}); - -S2.define('select2/core',[ - 'jquery', - './options', - './utils', - './keys' -], function ($, Options, Utils, KEYS) { - var Select2 = function ($element, options) { - if ($element.data('select2') != null) { - $element.data('select2').destroy(); - } - - this.$element = $element; - - this.id = this._generateId($element); - - options = options || {}; - - this.options = new Options(options, $element); - - Select2.__super__.constructor.call(this); - - // Set up the tabindex - - var tabindex = $element.attr('tabindex') || 0; - $element.data('old-tabindex', tabindex); - $element.attr('tabindex', '-1'); - - // Set up containers and adapters - - var DataAdapter = this.options.get('dataAdapter'); - this.dataAdapter = new DataAdapter($element, this.options); - - var $container = this.render(); - - this._placeContainer($container); - - var SelectionAdapter = this.options.get('selectionAdapter'); - this.selection = new SelectionAdapter($element, this.options); - this.$selection = this.selection.render(); - - this.selection.position(this.$selection, $container); - - var DropdownAdapter = this.options.get('dropdownAdapter'); - this.dropdown = new DropdownAdapter($element, this.options); - this.$dropdown = this.dropdown.render(); - - this.dropdown.position(this.$dropdown, $container); - - var ResultsAdapter = this.options.get('resultsAdapter'); - this.results = new ResultsAdapter($element, this.options, this.dataAdapter); - this.$results = this.results.render(); - - this.results.position(this.$results, this.$dropdown); - - // Bind events - - var self = this; - - // Bind the container to all of the adapters - this._bindAdapters(); - - // Register any DOM event handlers - this._registerDomEvents(); - - // Register any internal event handlers - this._registerDataEvents(); - this._registerSelectionEvents(); - this._registerDropdownEvents(); - this._registerResultsEvents(); - this._registerEvents(); - - // Set the initial state - this.dataAdapter.current(function (initialData) { - self.trigger('selection:update', { - data: initialData - }); - }); - - // Hide the original select - $element.addClass('select2-hidden-accessible'); - $element.attr('aria-hidden', 'true'); - - // Synchronize any monitored attributes - this._syncAttributes(); - - $element.data('select2', this); - }; - - Utils.Extend(Select2, Utils.Observable); - - Select2.prototype._generateId = function ($element) { - var id = ''; - - if ($element.attr('id') != null) { - id = $element.attr('id'); - } else if ($element.attr('name') != null) { - id = $element.attr('name') + '-' + Utils.generateChars(2); - } else { - id = Utils.generateChars(4); - } - - id = id.replace(/(:|\.|\[|\]|,)/g, ''); - id = 'select2-' + id; - - return id; - }; - - Select2.prototype._placeContainer = function ($container) { - $container.insertAfter(this.$element); - - var width = this._resolveWidth(this.$element, this.options.get('width')); - - if (width != null) { - $container.css('width', width); - } - }; - - Select2.prototype._resolveWidth = function ($element, method) { - var WIDTH = /^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i; - - if (method == 'resolve') { - var styleWidth = this._resolveWidth($element, 'style'); - - if (styleWidth != null) { - return styleWidth; - } - - return this._resolveWidth($element, 'element'); - } - - if (method == 'element') { - var elementWidth = $element.outerWidth(false); - - if (elementWidth <= 0) { - return 'auto'; - } - - return elementWidth + 'px'; - } - - if (method == 'style') { - var style = $element.attr('style'); - - if (typeof(style) !== 'string') { - return null; - } - - var attrs = style.split(';'); - - for (var i = 0, l = attrs.length; i < l; i = i + 1) { - var attr = attrs[i].replace(/\s/g, ''); - var matches = attr.match(WIDTH); - - if (matches !== null && matches.length >= 1) { - return matches[1]; - } - } - - return null; - } - - return method; - }; - - Select2.prototype._bindAdapters = function () { - this.dataAdapter.bind(this, this.$container); - this.selection.bind(this, this.$container); - - this.dropdown.bind(this, this.$container); - this.results.bind(this, this.$container); - }; - - Select2.prototype._registerDomEvents = function () { - var self = this; - - this.$element.on('change.select2', function () { - self.dataAdapter.current(function (data) { - self.trigger('selection:update', { - data: data - }); - }); - }); - - this.$element.on('focus.select2', function (evt) { - self.trigger('focus', evt); - }); - - this._syncA = Utils.bind(this._syncAttributes, this); - this._syncS = Utils.bind(this._syncSubtree, this); - - if (this.$element[0].attachEvent) { - this.$element[0].attachEvent('onpropertychange', this._syncA); - } - - var observer = window.MutationObserver || - window.WebKitMutationObserver || - window.MozMutationObserver - ; - - if (observer != null) { - this._observer = new observer(function (mutations) { - $.each(mutations, self._syncA); - $.each(mutations, self._syncS); - }); - this._observer.observe(this.$element[0], { - attributes: true, - childList: true, - subtree: false - }); - } else if (this.$element[0].addEventListener) { - this.$element[0].addEventListener( - 'DOMAttrModified', - self._syncA, - false - ); - this.$element[0].addEventListener( - 'DOMNodeInserted', - self._syncS, - false - ); - this.$element[0].addEventListener( - 'DOMNodeRemoved', - self._syncS, - false - ); - } - }; - - Select2.prototype._registerDataEvents = function () { - var self = this; - - this.dataAdapter.on('*', function (name, params) { - self.trigger(name, params); - }); - }; - - Select2.prototype._registerSelectionEvents = function () { - var self = this; - var nonRelayEvents = ['toggle', 'focus']; - - this.selection.on('toggle', function () { - self.toggleDropdown(); - }); - - this.selection.on('focus', function (params) { - self.focus(params); - }); - - this.selection.on('*', function (name, params) { - if ($.inArray(name, nonRelayEvents) !== -1) { - return; - } - - self.trigger(name, params); - }); - }; - - Select2.prototype._registerDropdownEvents = function () { - var self = this; - - this.dropdown.on('*', function (name, params) { - self.trigger(name, params); - }); - }; - - Select2.prototype._registerResultsEvents = function () { - var self = this; - - this.results.on('*', function (name, params) { - self.trigger(name, params); - }); - }; - - Select2.prototype._registerEvents = function () { - var self = this; - - this.on('open', function () { - self.$container.addClass('select2-container--open'); - }); - - this.on('close', function () { - self.$container.removeClass('select2-container--open'); - }); - - this.on('enable', function () { - self.$container.removeClass('select2-container--disabled'); - }); - - this.on('disable', function () { - self.$container.addClass('select2-container--disabled'); - }); - - this.on('blur', function () { - self.$container.removeClass('select2-container--focus'); - }); - - this.on('query', function (params) { - if (!self.isOpen()) { - self.trigger('open', {}); - } - - this.dataAdapter.query(params, function (data) { - self.trigger('results:all', { - data: data, - query: params - }); - }); - }); - - this.on('query:append', function (params) { - this.dataAdapter.query(params, function (data) { - self.trigger('results:append', { - data: data, - query: params - }); - }); - }); - - this.on('keypress', function (evt) { - var key = evt.which; - - if (self.isOpen()) { - if (key === KEYS.ESC || key === KEYS.TAB || - (key === KEYS.UP && evt.altKey)) { - self.close(); - - evt.preventDefault(); - } else if (key === KEYS.ENTER) { - self.trigger('results:select', {}); - - evt.preventDefault(); - } else if ((key === KEYS.SPACE && evt.ctrlKey)) { - self.trigger('results:toggle', {}); - - evt.preventDefault(); - } else if (key === KEYS.UP) { - self.trigger('results:previous', {}); - - evt.preventDefault(); - } else if (key === KEYS.DOWN) { - self.trigger('results:next', {}); - - evt.preventDefault(); - } - } else { - if (key === KEYS.ENTER || key === KEYS.SPACE || - (key === KEYS.DOWN && evt.altKey)) { - self.open(); - - evt.preventDefault(); - } - } - }); - }; - - Select2.prototype._syncAttributes = function () { - this.options.set('disabled', this.$element.prop('disabled')); - - if (this.options.get('disabled')) { - if (this.isOpen()) { - this.close(); - } - - this.trigger('disable', {}); - } else { - this.trigger('enable', {}); - } - }; - - Select2.prototype._syncSubtree = function (evt, mutations) { - var changed = false; - var self = this; - - // Ignore any mutation events raised for elements that aren't options or - // optgroups. This handles the case when the select element is destroyed - if ( - evt && evt.target && ( - evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP' - ) - ) { - return; - } - - if (!mutations) { - // If mutation events aren't supported, then we can only assume that the - // change affected the selections - changed = true; - } else if (mutations.addedNodes && mutations.addedNodes.length > 0) { - for (var n = 0; n < mutations.addedNodes.length; n++) { - var node = mutations.addedNodes[n]; - - if (node.selected) { - changed = true; - } - } - } else if (mutations.removedNodes && mutations.removedNodes.length > 0) { - changed = true; - } - - // Only re-pull the data if we think there is a change - if (changed) { - this.dataAdapter.current(function (currentData) { - self.trigger('selection:update', { - data: currentData - }); - }); - } - }; - - /** - * Override the trigger method to automatically trigger pre-events when - * there are events that can be prevented. - */ - Select2.prototype.trigger = function (name, args) { - var actualTrigger = Select2.__super__.trigger; - var preTriggerMap = { - 'open': 'opening', - 'close': 'closing', - 'select': 'selecting', - 'unselect': 'unselecting' - }; - - if (args === undefined) { - args = {}; - } - - if (name in preTriggerMap) { - var preTriggerName = preTriggerMap[name]; - var preTriggerArgs = { - prevented: false, - name: name, - args: args - }; - - actualTrigger.call(this, preTriggerName, preTriggerArgs); - - if (preTriggerArgs.prevented) { - args.prevented = true; - - return; - } - } - - actualTrigger.call(this, name, args); - }; - - Select2.prototype.toggleDropdown = function () { - if (this.options.get('disabled')) { - return; - } - - if (this.isOpen()) { - this.close(); - } else { - this.open(); - } - }; - - Select2.prototype.open = function () { - if (this.isOpen()) { - return; - } - - this.trigger('query', {}); - }; - - Select2.prototype.close = function () { - if (!this.isOpen()) { - return; - } - - this.trigger('close', {}); - }; - - Select2.prototype.isOpen = function () { - return this.$container.hasClass('select2-container--open'); - }; - - Select2.prototype.hasFocus = function () { - return this.$container.hasClass('select2-container--focus'); - }; - - Select2.prototype.focus = function (data) { - // No need to re-trigger focus events if we are already focused - if (this.hasFocus()) { - return; - } - - this.$container.addClass('select2-container--focus'); - this.trigger('focus', {}); - }; - - Select2.prototype.enable = function (args) { - if (this.options.get('debug') && window.console && console.warn) { - console.warn( - 'Select2: The `select2("enable")` method has been deprecated and will' + - ' be removed in later Select2 versions. Use $element.prop("disabled")' + - ' instead.' - ); - } - - if (args == null || args.length === 0) { - args = [true]; - } - - var disabled = !args[0]; - - this.$element.prop('disabled', disabled); - }; - - Select2.prototype.data = function () { - if (this.options.get('debug') && - arguments.length > 0 && window.console && console.warn) { - console.warn( - 'Select2: Data can no longer be set using `select2("data")`. You ' + - 'should consider setting the value instead using `$element.val()`.' - ); - } - - var data = []; - - this.dataAdapter.current(function (currentData) { - data = currentData; - }); - - return data; - }; - - Select2.prototype.val = function (args) { - if (this.options.get('debug') && window.console && console.warn) { - console.warn( - 'Select2: The `select2("val")` method has been deprecated and will be' + - ' removed in later Select2 versions. Use $element.val() instead.' - ); - } - - if (args == null || args.length === 0) { - return this.$element.val(); - } - - var newVal = args[0]; - - if ($.isArray(newVal)) { - newVal = $.map(newVal, function (obj) { - return obj.toString(); - }); - } - - this.$element.val(newVal).trigger('change'); - }; - - Select2.prototype.destroy = function () { - this.$container.remove(); - - if (this.$element[0].detachEvent) { - this.$element[0].detachEvent('onpropertychange', this._syncA); - } - - if (this._observer != null) { - this._observer.disconnect(); - this._observer = null; - } else if (this.$element[0].removeEventListener) { - this.$element[0] - .removeEventListener('DOMAttrModified', this._syncA, false); - this.$element[0] - .removeEventListener('DOMNodeInserted', this._syncS, false); - this.$element[0] - .removeEventListener('DOMNodeRemoved', this._syncS, false); - } - - this._syncA = null; - this._syncS = null; - - this.$element.off('.select2'); - this.$element.attr('tabindex', this.$element.data('old-tabindex')); - - this.$element.removeClass('select2-hidden-accessible'); - this.$element.attr('aria-hidden', 'false'); - this.$element.removeData('select2'); - - this.dataAdapter.destroy(); - this.selection.destroy(); - this.dropdown.destroy(); - this.results.destroy(); - - this.dataAdapter = null; - this.selection = null; - this.dropdown = null; - this.results = null; - }; - - Select2.prototype.render = function () { - var $container = $( - '<span class="select2 select2-container">' + - '<span class="selection"></span>' + - '<span class="dropdown-wrapper" aria-hidden="true"></span>' + - '</span>' - ); - - $container.attr('dir', this.options.get('dir')); - - this.$container = $container; - - this.$container.addClass('select2-container--' + this.options.get('theme')); - - $container.data('element', this.$element); - - return $container; - }; - - return Select2; -}); - -S2.define('select2/compat/utils',[ - 'jquery' -], function ($) { - function syncCssClasses ($dest, $src, adapter) { - var classes, replacements = [], adapted; - - classes = $.trim($dest.attr('class')); - - if (classes) { - classes = '' + classes; // for IE which returns object - - $(classes.split(/\s+/)).each(function () { - // Save all Select2 classes - if (this.indexOf('select2-') === 0) { - replacements.push(this); - } - }); - } - - classes = $.trim($src.attr('class')); - - if (classes) { - classes = '' + classes; // for IE which returns object - - $(classes.split(/\s+/)).each(function () { - // Only adapt non-Select2 classes - if (this.indexOf('select2-') !== 0) { - adapted = adapter(this); - - if (adapted != null) { - replacements.push(adapted); - } - } - }); - } - - $dest.attr('class', replacements.join(' ')); - } - - return { - syncCssClasses: syncCssClasses - }; -}); - -S2.define('select2/compat/containerCss',[ - 'jquery', - './utils' -], function ($, CompatUtils) { - // No-op CSS adapter that discards all classes by default - function _containerAdapter (clazz) { - return null; - } - - function ContainerCSS () { } - - ContainerCSS.prototype.render = function (decorated) { - var $container = decorated.call(this); - - var containerCssClass = this.options.get('containerCssClass') || ''; - - if ($.isFunction(containerCssClass)) { - containerCssClass = containerCssClass(this.$element); - } - - var containerCssAdapter = this.options.get('adaptContainerCssClass'); - containerCssAdapter = containerCssAdapter || _containerAdapter; - - if (containerCssClass.indexOf(':all:') !== -1) { - containerCssClass = containerCssClass.replace(':all:', ''); - - var _cssAdapter = containerCssAdapter; - - containerCssAdapter = function (clazz) { - var adapted = _cssAdapter(clazz); - - if (adapted != null) { - // Append the old one along with the adapted one - return adapted + ' ' + clazz; - } - - return clazz; - }; - } - - var containerCss = this.options.get('containerCss') || {}; - - if ($.isFunction(containerCss)) { - containerCss = containerCss(this.$element); - } - - CompatUtils.syncCssClasses($container, this.$element, containerCssAdapter); - - $container.css(containerCss); - $container.addClass(containerCssClass); - - return $container; - }; - - return ContainerCSS; -}); - -S2.define('select2/compat/dropdownCss',[ - 'jquery', - './utils' -], function ($, CompatUtils) { - // No-op CSS adapter that discards all classes by default - function _dropdownAdapter (clazz) { - return null; - } - - function DropdownCSS () { } - - DropdownCSS.prototype.render = function (decorated) { - var $dropdown = decorated.call(this); - - var dropdownCssClass = this.options.get('dropdownCssClass') || ''; - - if ($.isFunction(dropdownCssClass)) { - dropdownCssClass = dropdownCssClass(this.$element); - } - - var dropdownCssAdapter = this.options.get('adaptDropdownCssClass'); - dropdownCssAdapter = dropdownCssAdapter || _dropdownAdapter; - - if (dropdownCssClass.indexOf(':all:') !== -1) { - dropdownCssClass = dropdownCssClass.replace(':all:', ''); - - var _cssAdapter = dropdownCssAdapter; - - dropdownCssAdapter = function (clazz) { - var adapted = _cssAdapter(clazz); - - if (adapted != null) { - // Append the old one along with the adapted one - return adapted + ' ' + clazz; - } - - return clazz; - }; - } - - var dropdownCss = this.options.get('dropdownCss') || {}; - - if ($.isFunction(dropdownCss)) { - dropdownCss = dropdownCss(this.$element); - } - - CompatUtils.syncCssClasses($dropdown, this.$element, dropdownCssAdapter); - - $dropdown.css(dropdownCss); - $dropdown.addClass(dropdownCssClass); - - return $dropdown; - }; - - return DropdownCSS; -}); - -S2.define('select2/compat/initSelection',[ - 'jquery' -], function ($) { - function InitSelection (decorated, $element, options) { - if (options.get('debug') && window.console && console.warn) { - console.warn( - 'Select2: The `initSelection` option has been deprecated in favor' + - ' of a custom data adapter that overrides the `current` method. ' + - 'This method is now called multiple times instead of a single ' + - 'time when the instance is initialized. Support will be removed ' + - 'for the `initSelection` option in future versions of Select2' - ); - } - - this.initSelection = options.get('initSelection'); - this._isInitialized = false; - - decorated.call(this, $element, options); - } - - InitSelection.prototype.current = function (decorated, callback) { - var self = this; - - if (this._isInitialized) { - decorated.call(this, callback); - - return; - } - - this.initSelection.call(null, this.$element, function (data) { - self._isInitialized = true; - - if (!$.isArray(data)) { - data = [data]; - } - - callback(data); - }); - }; - - return InitSelection; -}); - -S2.define('select2/compat/inputData',[ - 'jquery' -], function ($) { - function InputData (decorated, $element, options) { - this._currentData = []; - this._valueSeparator = options.get('valueSeparator') || ','; - - if ($element.prop('type') === 'hidden') { - if (options.get('debug') && console && console.warn) { - console.warn( - 'Select2: Using a hidden input with Select2 is no longer ' + - 'supported and may stop working in the future. It is recommended ' + - 'to use a `<select>` element instead.' - ); - } - } - - decorated.call(this, $element, options); - } - - InputData.prototype.current = function (_, callback) { - function getSelected (data, selectedIds) { - var selected = []; - - if (data.selected || $.inArray(data.id, selectedIds) !== -1) { - data.selected = true; - selected.push(data); - } else { - data.selected = false; - } - - if (data.children) { - selected.push.apply(selected, getSelected(data.children, selectedIds)); - } - - return selected; - } - - var selected = []; - - for (var d = 0; d < this._currentData.length; d++) { - var data = this._currentData[d]; - - selected.push.apply( - selected, - getSelected( - data, - this.$element.val().split( - this._valueSeparator - ) - ) - ); - } - - callback(selected); - }; - - InputData.prototype.select = function (_, data) { - if (!this.options.get('multiple')) { - this.current(function (allData) { - $.map(allData, function (data) { - data.selected = false; - }); - }); - - this.$element.val(data.id); - this.$element.trigger('change'); - } else { - var value = this.$element.val(); - value += this._valueSeparator + data.id; - - this.$element.val(value); - this.$element.trigger('change'); - } - }; - - InputData.prototype.unselect = function (_, data) { - var self = this; - - data.selected = false; - - this.current(function (allData) { - var values = []; - - for (var d = 0; d < allData.length; d++) { - var item = allData[d]; - - if (data.id == item.id) { - continue; - } - - values.push(item.id); - } - - self.$element.val(values.join(self._valueSeparator)); - self.$element.trigger('change'); - }); - }; - - InputData.prototype.query = function (_, params, callback) { - var results = []; - - for (var d = 0; d < this._currentData.length; d++) { - var data = this._currentData[d]; - - var matches = this.matches(params, data); - - if (matches !== null) { - results.push(matches); - } - } - - callback({ - results: results - }); - }; - - InputData.prototype.addOptions = function (_, $options) { - var options = $.map($options, function ($option) { - return $.data($option[0], 'data'); - }); - - this._currentData.push.apply(this._currentData, options); - }; - - return InputData; -}); - -S2.define('select2/compat/matcher',[ - 'jquery' -], function ($) { - function oldMatcher (matcher) { - function wrappedMatcher (params, data) { - var match = $.extend(true, {}, data); - - if (params.term == null || $.trim(params.term) === '') { - return match; - } - - if (data.children) { - for (var c = data.children.length - 1; c >= 0; c--) { - var child = data.children[c]; - - // Check if the child object matches - // The old matcher returned a boolean true or false - var doesMatch = matcher(params.term, child.text, child); - - // If the child didn't match, pop it off - if (!doesMatch) { - match.children.splice(c, 1); - } - } - - if (match.children.length > 0) { - return match; - } - } - - if (matcher(params.term, data.text, data)) { - return match; - } - - return null; - } - - return wrappedMatcher; - } - - return oldMatcher; -}); - -S2.define('select2/compat/query',[ - -], function () { - function Query (decorated, $element, options) { - if (options.get('debug') && window.console && console.warn) { - console.warn( - 'Select2: The `query` option has been deprecated in favor of a ' + - 'custom data adapter that overrides the `query` method. Support ' + - 'will be removed for the `query` option in future versions of ' + - 'Select2.' - ); - } - - decorated.call(this, $element, options); - } - - Query.prototype.query = function (_, params, callback) { - params.callback = callback; - - var query = this.options.get('query'); - - query.call(null, params); - }; - - return Query; -}); - -S2.define('select2/dropdown/attachContainer',[ - -], function () { - function AttachContainer (decorated, $element, options) { - decorated.call(this, $element, options); - } - - AttachContainer.prototype.position = - function (decorated, $dropdown, $container) { - var $dropdownContainer = $container.find('.dropdown-wrapper'); - $dropdownContainer.append($dropdown); - - $dropdown.addClass('select2-dropdown--below'); - $container.addClass('select2-container--below'); - }; - - return AttachContainer; -}); - -S2.define('select2/dropdown/stopPropagation',[ - -], function () { - function StopPropagation () { } - - StopPropagation.prototype.bind = function (decorated, container, $container) { - decorated.call(this, container, $container); - - var stoppedEvents = [ - 'blur', - 'change', - 'click', - 'dblclick', - 'focus', - 'focusin', - 'focusout', - 'input', - 'keydown', - 'keyup', - 'keypress', - 'mousedown', - 'mouseenter', - 'mouseleave', - 'mousemove', - 'mouseover', - 'mouseup', - 'search', - 'touchend', - 'touchstart' - ]; - - this.$dropdown.on(stoppedEvents.join(' '), function (evt) { - evt.stopPropagation(); - }); - }; - - return StopPropagation; -}); - -S2.define('select2/selection/stopPropagation',[ - -], function () { - function StopPropagation () { } - - StopPropagation.prototype.bind = function (decorated, container, $container) { - decorated.call(this, container, $container); - - var stoppedEvents = [ - 'blur', - 'change', - 'click', - 'dblclick', - 'focus', - 'focusin', - 'focusout', - 'input', - 'keydown', - 'keyup', - 'keypress', - 'mousedown', - 'mouseenter', - 'mouseleave', - 'mousemove', - 'mouseover', - 'mouseup', - 'search', - 'touchend', - 'touchstart' - ]; - - this.$selection.on(stoppedEvents.join(' '), function (evt) { - evt.stopPropagation(); - }); - }; - - return StopPropagation; -}); - -/*! - * jQuery Mousewheel 3.1.13 - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - */ - -(function (factory) { - if ( typeof S2.define === 'function' && S2.define.amd ) { - // AMD. Register as an anonymous module. - S2.define('jquery-mousewheel',['jquery'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS style for Browserify - module.exports = factory; - } else { - // Browser globals - factory(jQuery); - } -}(function ($) { - - var toFix = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'], - toBind = ( 'onwheel' in document || document.documentMode >= 9 ) ? - ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'], - slice = Array.prototype.slice, - nullLowestDeltaTimeout, lowestDelta; - - if ( $.event.fixHooks ) { - for ( var i = toFix.length; i; ) { - $.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks; - } - } - - var special = $.event.special.mousewheel = { - version: '3.1.12', - - setup: function() { - if ( this.addEventListener ) { - for ( var i = toBind.length; i; ) { - this.addEventListener( toBind[--i], handler, false ); - } - } else { - this.onmousewheel = handler; - } - // Store the line height and page height for this particular element - $.data(this, 'mousewheel-line-height', special.getLineHeight(this)); - $.data(this, 'mousewheel-page-height', special.getPageHeight(this)); - }, - - teardown: function() { - if ( this.removeEventListener ) { - for ( var i = toBind.length; i; ) { - this.removeEventListener( toBind[--i], handler, false ); - } - } else { - this.onmousewheel = null; - } - // Clean up the data we added to the element - $.removeData(this, 'mousewheel-line-height'); - $.removeData(this, 'mousewheel-page-height'); - }, - - getLineHeight: function(elem) { - var $elem = $(elem), - $parent = $elem['offsetParent' in $.fn ? 'offsetParent' : 'parent'](); - if (!$parent.length) { - $parent = $('body'); - } - return parseInt($parent.css('fontSize'), 10) || parseInt($elem.css('fontSize'), 10) || 16; - }, - - getPageHeight: function(elem) { - return $(elem).height(); - }, - - settings: { - adjustOldDeltas: true, // see shouldAdjustOldDeltas() below - normalizeOffset: true // calls getBoundingClientRect for each event - } - }; - - $.fn.extend({ - mousewheel: function(fn) { - return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel'); - }, - - unmousewheel: function(fn) { - return this.unbind('mousewheel', fn); - } - }); - - - function handler(event) { - var orgEvent = event || window.event, - args = slice.call(arguments, 1), - delta = 0, - deltaX = 0, - deltaY = 0, - absDelta = 0, - offsetX = 0, - offsetY = 0; - event = $.event.fix(orgEvent); - event.type = 'mousewheel'; - - // Old school scrollwheel delta - if ( 'detail' in orgEvent ) { deltaY = orgEvent.detail * -1; } - if ( 'wheelDelta' in orgEvent ) { deltaY = orgEvent.wheelDelta; } - if ( 'wheelDeltaY' in orgEvent ) { deltaY = orgEvent.wheelDeltaY; } - if ( 'wheelDeltaX' in orgEvent ) { deltaX = orgEvent.wheelDeltaX * -1; } - - // Firefox < 17 horizontal scrolling related to DOMMouseScroll event - if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) { - deltaX = deltaY * -1; - deltaY = 0; - } - - // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy - delta = deltaY === 0 ? deltaX : deltaY; - - // New school wheel delta (wheel event) - if ( 'deltaY' in orgEvent ) { - deltaY = orgEvent.deltaY * -1; - delta = deltaY; - } - if ( 'deltaX' in orgEvent ) { - deltaX = orgEvent.deltaX; - if ( deltaY === 0 ) { delta = deltaX * -1; } - } - - // No change actually happened, no reason to go any further - if ( deltaY === 0 && deltaX === 0 ) { return; } - - // Need to convert lines and pages to pixels if we aren't already in pixels - // There are three delta modes: - // * deltaMode 0 is by pixels, nothing to do - // * deltaMode 1 is by lines - // * deltaMode 2 is by pages - if ( orgEvent.deltaMode === 1 ) { - var lineHeight = $.data(this, 'mousewheel-line-height'); - delta *= lineHeight; - deltaY *= lineHeight; - deltaX *= lineHeight; - } else if ( orgEvent.deltaMode === 2 ) { - var pageHeight = $.data(this, 'mousewheel-page-height'); - delta *= pageHeight; - deltaY *= pageHeight; - deltaX *= pageHeight; - } - - // Store lowest absolute delta to normalize the delta values - absDelta = Math.max( Math.abs(deltaY), Math.abs(deltaX) ); - - if ( !lowestDelta || absDelta < lowestDelta ) { - lowestDelta = absDelta; - - // Adjust older deltas if necessary - if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) { - lowestDelta /= 40; - } - } - - // Adjust older deltas if necessary - if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) { - // Divide all the things by 40! - delta /= 40; - deltaX /= 40; - deltaY /= 40; - } - - // Get a whole, normalized value for the deltas - delta = Math[ delta >= 1 ? 'floor' : 'ceil' ](delta / lowestDelta); - deltaX = Math[ deltaX >= 1 ? 'floor' : 'ceil' ](deltaX / lowestDelta); - deltaY = Math[ deltaY >= 1 ? 'floor' : 'ceil' ](deltaY / lowestDelta); - - // Normalise offsetX and offsetY properties - if ( special.settings.normalizeOffset && this.getBoundingClientRect ) { - var boundingRect = this.getBoundingClientRect(); - offsetX = event.clientX - boundingRect.left; - offsetY = event.clientY - boundingRect.top; - } - - // Add information to the event object - event.deltaX = deltaX; - event.deltaY = deltaY; - event.deltaFactor = lowestDelta; - event.offsetX = offsetX; - event.offsetY = offsetY; - // Go ahead and set deltaMode to 0 since we converted to pixels - // Although this is a little odd since we overwrite the deltaX/Y - // properties with normalized deltas. - event.deltaMode = 0; - - // Add event and delta to the front of the arguments - args.unshift(event, delta, deltaX, deltaY); - - // Clearout lowestDelta after sometime to better - // handle multiple device types that give different - // a different lowestDelta - // Ex: trackpad = 3 and mouse wheel = 120 - if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); } - nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200); - - return ($.event.dispatch || $.event.handle).apply(this, args); - } - - function nullLowestDelta() { - lowestDelta = null; - } - - function shouldAdjustOldDeltas(orgEvent, absDelta) { - // If this is an older event and the delta is divisable by 120, - // then we are assuming that the browser is treating this as an - // older mouse wheel event and that we should divide the deltas - // by 40 to try and get a more usable deltaFactor. - // Side note, this actually impacts the reported scroll distance - // in older browsers and can cause scrolling to be slower than native. - // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false. - return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0; - } - -})); - -S2.define('jquery.select2',[ - 'jquery', - 'jquery-mousewheel', - - './select2/core', - './select2/defaults' -], function ($, _, Select2, Defaults) { - if ($.fn.select2 == null) { - // All methods that should return the element - var thisMethods = ['open', 'close', 'destroy']; - - $.fn.select2 = function (options) { - options = options || {}; - - if (typeof options === 'object') { - this.each(function () { - var instanceOptions = $.extend(true, {}, options); - - var instance = new Select2($(this), instanceOptions); - }); - - return this; - } else if (typeof options === 'string') { - var ret; - var args = Array.prototype.slice.call(arguments, 1); - - this.each(function () { - var instance = $(this).data('select2'); - - if (instance == null && window.console && console.error) { - console.error( - 'The select2(\'' + options + '\') method was called on an ' + - 'element that is not using Select2.' - ); - } - - ret = instance[options].apply(instance, args); - }); - - // Check if we should be returning `this` - if ($.inArray(options, thisMethods) > -1) { - return this; - } - - return ret; - } else { - throw new Error('Invalid arguments for Select2: ' + options); - } - }; - } - - if ($.fn.select2.defaults == null) { - $.fn.select2.defaults = Defaults; - } - - return Select2; -}); - - // Return the AMD loader configuration so it can be used outside of this file - return { - define: S2.define, - require: S2.require - }; -}()); - - // Autoload the jQuery bindings - // We know that all of the modules exist above this, so we're safe - var select2 = S2.require('jquery.select2'); - - // Hold the AMD module references on the jQuery function that was just loaded - // This allows Select2 to use the internal loader outside of this file, such - // as in the language files. - jQuery.fn.select2.amd = S2; - - // Return the Select2 instance for anyone who is importing it. - return select2; -})); diff --git a/assets/plugins/select2/select2.full.min.js b/assets/plugins/select2/select2.full.min.js deleted file mode 100644 index 684edf32..00000000 --- a/assets/plugins/select2/select2.full.min.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){var b=function(){if(a&&a.fn&&a.fn.select2&&a.fn.select2.amd)var b=a.fn.select2.amd;var b;return function(){if(!b||!b.requirejs){b?c=b:b={};var a,c,d;!function(b){function e(a,b){return u.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n=b&&b.split("/"),o=s.map,p=o&&o["*"]||{};if(a&&"."===a.charAt(0))if(b){for(a=a.split("/"),g=a.length-1,s.nodeIdCompat&&w.test(a[g])&&(a[g]=a[g].replace(w,"")),a=n.slice(0,n.length-1).concat(a),k=0;k<a.length;k+=1)if(m=a[k],"."===m)a.splice(k,1),k-=1;else if(".."===m){if(1===k&&(".."===a[2]||".."===a[0]))break;k>0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}else 0===a.indexOf("./")&&(a=a.substring(2));if((n||p)&&o){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),n)for(l=n.length;l>0;l-=1)if(e=o[n.slice(0,l).join("/")],e&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&p&&p[d]&&(i=p[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(a,c){return function(){var d=v.call(arguments,0);return"string"!=typeof d[0]&&1===d.length&&d.push(null),n.apply(b,d.concat([a,c]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){q[a]=b}}function j(a){if(e(r,a)){var c=r[a];delete r[a],t[a]=!0,m.apply(b,c)}if(!e(q,a)&&!e(t,a))throw new Error("No "+a);return q[a]}function k(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function l(a){return function(){return s&&s.config&&s.config[a]||{}}}var m,n,o,p,q={},r={},s={},t={},u=Object.prototype.hasOwnProperty,v=[].slice,w=/\.js$/;o=function(a,b){var c,d=k(a),e=d[0];return a=d[1],e&&(e=f(e,b),c=j(e)),e?a=c&&c.normalize?c.normalize(a,h(b)):f(a,b):(a=f(a,b),d=k(a),e=d[0],a=d[1],e&&(c=j(e))),{f:e?e+"!"+a:a,n:a,pr:e,p:c}},p={require:function(a){return g(a)},exports:function(a){var b=q[a];return"undefined"!=typeof b?b:q[a]={}},module:function(a){return{id:a,uri:"",exports:q[a],config:l(a)}}},m=function(a,c,d,f){var h,k,l,m,n,s,u=[],v=typeof d;if(f=f||a,"undefined"===v||"function"===v){for(c=!c.length&&d.length?["require","exports","module"]:c,n=0;n<c.length;n+=1)if(m=o(c[n],f),k=m.f,"require"===k)u[n]=p.require(a);else if("exports"===k)u[n]=p.exports(a),s=!0;else if("module"===k)h=u[n]=p.module(a);else if(e(q,k)||e(r,k)||e(t,k))u[n]=j(k);else{if(!m.p)throw new Error(a+" missing "+k);m.p.load(m.n,g(f,!0),i(k),{}),u[n]=q[k]}l=d?d.apply(q[a],u):void 0,a&&(h&&h.exports!==b&&h.exports!==q[a]?q[a]=h.exports:l===b&&s||(q[a]=l))}else a&&(q[a]=d)},a=c=n=function(a,c,d,e,f){if("string"==typeof a)return p[a]?p[a](c):j(o(a,c).f);if(!a.splice){if(s=a,s.deps&&n(s.deps,s.callback),!c)return;c.splice?(a=c,c=d,d=null):a=b}return c=c||function(){},"function"==typeof d&&(d=e,e=f),e?m(b,a,c,d):setTimeout(function(){m(b,a,c,d)},4),n},n.config=function(a){return n(a)},a._defined=q,d=function(a,b,c){if("string"!=typeof a)throw new Error("See almond README: incorrect module build, no module name");b.splice||(c=b,b=[]),e(q,a)||e(r,a)||(r[a]=[a,b,c])},d.amd={jQuery:!0}}(),b.requirejs=a,b.require=c,b.define=d}}(),b.define("almond",function(){}),b.define("jquery",[],function(){var b=a||$;return null==b&&console&&console.error&&console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."),b}),b.define("select2/utils",["jquery"],function(a){function b(a){var b=a.prototype,c=[];for(var d in b){var e=b[d];"function"==typeof e&&"constructor"!==d&&c.push(d)}return c}var c={};c.Extend=function(a,b){function c(){this.constructor=a}var d={}.hasOwnProperty;for(var e in b)d.call(b,e)&&(a[e]=b[e]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},c.Decorate=function(a,c){function d(){var b=Array.prototype.unshift,d=c.prototype.constructor.length,e=a.prototype.constructor;d>0&&(b.call(arguments,a.prototype.constructor),e=c.prototype.constructor),e.apply(this,arguments)}function e(){this.constructor=d}var f=b(c),g=b(a);c.displayName=a.displayName,d.prototype=new e;for(var h=0;h<g.length;h++){var i=g[h];d.prototype[i]=a.prototype[i]}for(var j=(function(a){var b=function(){};a in d.prototype&&(b=d.prototype[a]);var e=c.prototype[a];return function(){var a=Array.prototype.unshift;return a.call(arguments,b),e.apply(this,arguments)}}),k=0;k<f.length;k++){var l=f[k];d.prototype[l]=j(l)}return d};var d=function(){this.listeners={}};return d.prototype.on=function(a,b){this.listeners=this.listeners||{},a in this.listeners?this.listeners[a].push(b):this.listeners[a]=[b]},d.prototype.trigger=function(a){var b=Array.prototype.slice,c=b.call(arguments,1);this.listeners=this.listeners||{},null==c&&(c=[]),0===c.length&&c.push({}),c[0]._type=a,a in this.listeners&&this.invoke(this.listeners[a],b.call(arguments,1)),"*"in this.listeners&&this.invoke(this.listeners["*"],arguments)},d.prototype.invoke=function(a,b){for(var c=0,d=a.length;d>c;c++)a[c].apply(this,b)},c.Observable=d,c.generateChars=function(a){for(var b="",c=0;a>c;c++){var d=Math.floor(36*Math.random());b+=d.toString(36)}return b},c.bind=function(a,b){return function(){a.apply(b,arguments)}},c._convertData=function(a){for(var b in a){var c=b.split("-"),d=a;if(1!==c.length){for(var e=0;e<c.length;e++){var f=c[e];f=f.substring(0,1).toLowerCase()+f.substring(1),f in d||(d[f]={}),e==c.length-1&&(d[f]=a[b]),d=d[f]}delete a[b]}}return a},c.hasScroll=function(b,c){var d=a(c),e=c.style.overflowX,f=c.style.overflowY;return e!==f||"hidden"!==f&&"visible"!==f?"scroll"===e||"scroll"===f?!0:d.innerHeight()<c.scrollHeight||d.innerWidth()<c.scrollWidth:!1},c.escapeMarkup=function(a){var b={"\\":"&#92;","&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#47;"};return"string"!=typeof a?a:String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})},c.appendMany=function(b,c){if("1.7"===a.fn.jquery.substr(0,3)){var d=a();a.map(c,function(a){d=d.add(a)}),c=d}b.append(c)},c}),b.define("select2/results",["jquery","./utils"],function(a,b){function c(a,b,d){this.$element=a,this.data=d,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<ul class="select2-results__options" role="tree"></ul>');return this.options.get("multiple")&&b.attr("aria-multiselectable","true"),this.$results=b,b},c.prototype.clear=function(){this.$results.empty()},c.prototype.displayMessage=function(b){var c=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var d=a('<li role="treeitem" aria-live="assertive" class="select2-results__option"></li>'),e=this.options.get("translations").get(b.message);d.append(c(e(b.args))),d[0].className+=" select2-results__message",this.$results.append(d)},c.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},c.prototype.append=function(a){this.hideLoading();var b=[];if(null==a.results||0===a.results.length)return void(0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"}));a.results=this.sort(a.results);for(var c=0;c<a.results.length;c++){var d=a.results[c],e=this.option(d);b.push(e)}this.$results.append(b)},c.prototype.position=function(a,b){var c=b.find(".select2-results");c.append(a)},c.prototype.sort=function(a){var b=this.options.get("sorter");return b(a)},c.prototype.highlightFirstItem=function(){var a=this.$results.find(".select2-results__option[aria-selected]"),b=a.filter("[aria-selected=true]");b.length>0?b.first().trigger("mouseenter"):a.first().trigger("mouseenter"),this.ensureHighlightVisible()},c.prototype.setClasses=function(){var b=this;this.data.current(function(c){var d=a.map(c,function(a){return a.id.toString()}),e=b.$results.find(".select2-results__option[aria-selected]");e.each(function(){var b=a(this),c=a.data(this,"data"),e=""+c.id;null!=c.element&&c.element.selected||null==c.element&&a.inArray(e,d)>-1?b.attr("aria-selected","true"):b.attr("aria-selected","false")})})},c.prototype.showLoading=function(a){this.hideLoading();var b=this.options.get("translations").get("searching"),c={disabled:!0,loading:!0,text:b(a)},d=this.option(c);d.className+=" loading-results",this.$results.prepend(d)},c.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},c.prototype.option=function(b){var c=document.createElement("li");c.className="select2-results__option";var d={role:"treeitem","aria-selected":"false"};b.disabled&&(delete d["aria-selected"],d["aria-disabled"]="true"),null==b.id&&delete d["aria-selected"],null!=b._resultId&&(c.id=b._resultId),b.title&&(c.title=b.title),b.children&&(d.role="group",d["aria-label"]=b.text,delete d["aria-selected"]);for(var e in d){var f=d[e];c.setAttribute(e,f)}if(b.children){var g=a(c),h=document.createElement("strong");h.className="select2-results__group";a(h);this.template(b,h);for(var i=[],j=0;j<b.children.length;j++){var k=b.children[j],l=this.option(k);i.push(l)}var m=a("<ul></ul>",{"class":"select2-results__options select2-results__options--nested"});m.append(i),g.append(h),g.append(m)}else this.template(b,c);return a.data(c,"data",b),c},c.prototype.bind=function(b,c){var d=this,e=b.id+"-results";this.$results.attr("id",e),b.on("results:all",function(a){d.clear(),d.append(a.data),b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("results:append",function(a){d.append(a.data),b.isOpen()&&d.setClasses()}),b.on("query",function(a){d.hideMessages(),d.showLoading(a)}),b.on("select",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("unselect",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("open",function(){d.$results.attr("aria-expanded","true"),d.$results.attr("aria-hidden","false"),d.setClasses(),d.ensureHighlightVisible()}),b.on("close",function(){d.$results.attr("aria-expanded","false"),d.$results.attr("aria-hidden","true"),d.$results.removeAttr("aria-activedescendant")}),b.on("results:toggle",function(){var a=d.getHighlightedResults();0!==a.length&&a.trigger("mouseup")}),b.on("results:select",function(){var a=d.getHighlightedResults();if(0!==a.length){var b=a.data("data");"true"==a.attr("aria-selected")?d.trigger("close",{}):d.trigger("select",{data:b})}}),b.on("results:previous",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a);if(0!==c){var e=c-1;0===a.length&&(e=0);var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top,h=f.offset().top,i=d.$results.scrollTop()+(h-g);0===e?d.$results.scrollTop(0):0>h-g&&d.$results.scrollTop(i)}}),b.on("results:next",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a),e=c+1;if(!(e>=b.length)){var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top+d.$results.outerHeight(!1),h=f.offset().top+f.outerHeight(!1),i=d.$results.scrollTop()+h-g;0===e?d.$results.scrollTop(0):h>g&&d.$results.scrollTop(i)}}),b.on("results:focus",function(a){a.element.addClass("select2-results__option--highlighted")}),b.on("results:message",function(a){d.displayMessage(a)}),a.fn.mousewheel&&this.$results.on("mousewheel",function(a){var b=d.$results.scrollTop(),c=d.$results.get(0).scrollHeight-b+a.deltaY,e=a.deltaY>0&&b-a.deltaY<=0,f=a.deltaY<0&&c<=d.$results.height();e?(d.$results.scrollTop(0),a.preventDefault(),a.stopPropagation()):f&&(d.$results.scrollTop(d.$results.get(0).scrollHeight-d.$results.height()),a.preventDefault(),a.stopPropagation())}),this.$results.on("mouseup",".select2-results__option[aria-selected]",function(b){var c=a(this),e=c.data("data");return"true"===c.attr("aria-selected")?void(d.options.get("multiple")?d.trigger("unselect",{originalEvent:b,data:e}):d.trigger("close",{})):void d.trigger("select",{originalEvent:b,data:e})}),this.$results.on("mouseenter",".select2-results__option[aria-selected]",function(b){var c=a(this).data("data");d.getHighlightedResults().removeClass("select2-results__option--highlighted"),d.trigger("results:focus",{data:c,element:a(this)})})},c.prototype.getHighlightedResults=function(){var a=this.$results.find(".select2-results__option--highlighted");return a},c.prototype.destroy=function(){this.$results.remove()},c.prototype.ensureHighlightVisible=function(){var a=this.getHighlightedResults();if(0!==a.length){var b=this.$results.find("[aria-selected]"),c=b.index(a),d=this.$results.offset().top,e=a.offset().top,f=this.$results.scrollTop()+(e-d),g=e-d;f-=2*a.outerHeight(!1),2>=c?this.$results.scrollTop(0):(g>this.$results.outerHeight()||0>g)&&this.$results.scrollTop(f)}},c.prototype.template=function(b,c){var d=this.options.get("templateResult"),e=this.options.get("escapeMarkup"),f=d(b,c);null==f?c.style.display="none":"string"==typeof f?c.innerHTML=e(f):a(c).append(f)},c}),b.define("select2/keys",[],function(){var a={BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46};return a}),b.define("select2/selection/base",["jquery","../utils","../keys"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,b.Observable),d.prototype.render=function(){var b=a('<span class="select2-selection" role="combobox" aria-haspopup="true" aria-expanded="false"></span>');return this._tabindex=0,null!=this.$element.data("old-tabindex")?this._tabindex=this.$element.data("old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),b.attr("title",this.$element.attr("title")),b.attr("tabindex",this._tabindex),this.$selection=b,b},d.prototype.bind=function(a,b){var d=this,e=(a.id+"-container",a.id+"-results");this.container=a,this.$selection.on("focus",function(a){d.trigger("focus",a)}),this.$selection.on("blur",function(a){d._handleBlur(a)}),this.$selection.on("keydown",function(a){d.trigger("keypress",a),a.which===c.SPACE&&a.preventDefault()}),a.on("results:focus",function(a){d.$selection.attr("aria-activedescendant",a.data._resultId)}),a.on("selection:update",function(a){d.update(a.data)}),a.on("open",function(){d.$selection.attr("aria-expanded","true"),d.$selection.attr("aria-owns",e),d._attachCloseHandler(a)}),a.on("close",function(){d.$selection.attr("aria-expanded","false"),d.$selection.removeAttr("aria-activedescendant"),d.$selection.removeAttr("aria-owns"),d.$selection.focus(),d._detachCloseHandler(a)}),a.on("enable",function(){d.$selection.attr("tabindex",d._tabindex)}),a.on("disable",function(){d.$selection.attr("tabindex","-1")})},d.prototype._handleBlur=function(b){var c=this;window.setTimeout(function(){document.activeElement==c.$selection[0]||a.contains(c.$selection[0],document.activeElement)||c.trigger("blur",b)},1)},d.prototype._attachCloseHandler=function(b){a(document.body).on("mousedown.select2."+b.id,function(b){var c=a(b.target),d=c.closest(".select2"),e=a(".select2.select2-container--open");e.each(function(){var b=a(this);if(this!=d[0]){var c=b.data("element");c.select2("close")}})})},d.prototype._detachCloseHandler=function(b){a(document.body).off("mousedown.select2."+b.id)},d.prototype.position=function(a,b){var c=b.find(".selection");c.append(a)},d.prototype.destroy=function(){this._detachCloseHandler(this.container)},d.prototype.update=function(a){throw new Error("The `update` method must be defined in child classes.")},d}),b.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(a,b,c,d){function e(){e.__super__.constructor.apply(this,arguments)}return c.Extend(e,b),e.prototype.render=function(){var a=e.__super__.render.call(this);return a.addClass("select2-selection--single"),a.html('<span class="select2-selection__rendered"></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span>'),a},e.prototype.bind=function(a,b){var c=this;e.__super__.bind.apply(this,arguments);var d=a.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",d),this.$selection.attr("aria-labelledby",d),this.$selection.on("mousedown",function(a){1===a.which&&c.trigger("toggle",{originalEvent:a})}),this.$selection.on("focus",function(a){}),this.$selection.on("blur",function(a){}),a.on("focus",function(b){a.isOpen()||c.$selection.focus()}),a.on("selection:update",function(a){c.update(a.data)})},e.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},e.prototype.display=function(a,b){var c=this.options.get("templateSelection"),d=this.options.get("escapeMarkup");return d(c(a,b))},e.prototype.selectionContainer=function(){return a("<span></span>")},e.prototype.update=function(a){if(0===a.length)return void this.clear();var b=a[0],c=this.$selection.find(".select2-selection__rendered"),d=this.display(b,c);c.empty().append(d),c.prop("title",b.title||b.text)},e}),b.define("select2/selection/multiple",["jquery","./base","../utils"],function(a,b,c){function d(a,b){d.__super__.constructor.apply(this,arguments)}return c.Extend(d,b),d.prototype.render=function(){var a=d.__super__.render.call(this);return a.addClass("select2-selection--multiple"),a.html('<ul class="select2-selection__rendered"></ul>'),a},d.prototype.bind=function(b,c){var e=this;d.__super__.bind.apply(this,arguments),this.$selection.on("click",function(a){e.trigger("toggle",{originalEvent:a})}),this.$selection.on("click",".select2-selection__choice__remove",function(b){if(!e.options.get("disabled")){var c=a(this),d=c.parent(),f=d.data("data");e.trigger("unselect",{originalEvent:b,data:f})}})},d.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},d.prototype.display=function(a,b){var c=this.options.get("templateSelection"),d=this.options.get("escapeMarkup");return d(c(a,b))},d.prototype.selectionContainer=function(){var b=a('<li class="select2-selection__choice"><span class="select2-selection__choice__remove" role="presentation">&times;</span></li>');return b},d.prototype.update=function(a){if(this.clear(),0!==a.length){for(var b=[],d=0;d<a.length;d++){var e=a[d],f=this.selectionContainer(),g=this.display(e,f);f.append(g),f.prop("title",e.title||e.text),f.data("data",e),b.push(f)}var h=this.$selection.find(".select2-selection__rendered");c.appendMany(h,b)}},d}),b.define("select2/selection/placeholder",["../utils"],function(a){function b(a,b,c){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c)}return b.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},b.prototype.createPlaceholder=function(a,b){var c=this.selectionContainer();return c.html(this.display(b)),c.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"),c},b.prototype.update=function(a,b){var c=1==b.length&&b[0].id!=this.placeholder.id,d=b.length>1;if(d||c)return a.call(this,b);this.clear();var e=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(e)},b}),b.define("select2/selection/allowClear",["jquery","../keys"],function(a,b){function c(){}return c.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),null==this.placeholder&&this.options.get("debug")&&window.console&&console.error&&console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."),this.$selection.on("mousedown",".select2-selection__clear",function(a){d._handleClear(a)}),b.on("keypress",function(a){d._handleKeyboardClear(a,b)})},c.prototype._handleClear=function(a,b){if(!this.options.get("disabled")){var c=this.$selection.find(".select2-selection__clear");if(0!==c.length){b.stopPropagation();for(var d=c.data("data"),e=0;e<d.length;e++){var f={data:d[e]};if(this.trigger("unselect",f),f.prevented)return}this.$element.val(this.placeholder.id).trigger("change"),this.trigger("toggle",{})}}},c.prototype._handleKeyboardClear=function(a,c,d){d.isOpen()||(c.which==b.DELETE||c.which==b.BACKSPACE)&&this._handleClear(c)},c.prototype.update=function(b,c){if(b.call(this,c),!(this.$selection.find(".select2-selection__placeholder").length>0||0===c.length)){var d=a('<span class="select2-selection__clear">&times;</span>');d.data("data",c),this.$selection.find(".select2-selection__rendered").prepend(d)}},c}),b.define("select2/selection/search",["jquery","../utils","../keys"],function(a,b,c){function d(a,b,c){a.call(this,b,c)}return d.prototype.render=function(b){var c=a('<li class="select2-search select2-search--inline"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" aria-autocomplete="list" /></li>');this.$searchContainer=c,this.$search=c.find("input");var d=b.call(this);return this._transferTabIndex(),d},d.prototype.bind=function(a,b,d){var e=this;a.call(this,b,d),b.on("open",function(){e.$search.trigger("focus")}),b.on("close",function(){e.$search.val(""),e.$search.removeAttr("aria-activedescendant"),e.$search.trigger("focus")}),b.on("enable",function(){e.$search.prop("disabled",!1),e._transferTabIndex()}),b.on("disable",function(){e.$search.prop("disabled",!0)}),b.on("focus",function(a){e.$search.trigger("focus")}),b.on("results:focus",function(a){e.$search.attr("aria-activedescendant",a.id)}),this.$selection.on("focusin",".select2-search--inline",function(a){e.trigger("focus",a)}),this.$selection.on("focusout",".select2-search--inline",function(a){e._handleBlur(a)}),this.$selection.on("keydown",".select2-search--inline",function(a){a.stopPropagation(),e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented();var b=a.which;if(b===c.BACKSPACE&&""===e.$search.val()){var d=e.$searchContainer.prev(".select2-selection__choice");if(d.length>0){var f=d.data("data");e.searchRemoveChoice(f),a.preventDefault()}}});var f=document.documentMode,g=f&&11>=f;this.$selection.on("input.searchcheck",".select2-search--inline",function(a){return g?void e.$selection.off("input.search input.searchcheck"):void e.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".select2-search--inline",function(a){if(g&&"input"===a.type)return void e.$selection.off("input.search input.searchcheck");var b=a.which;b!=c.SHIFT&&b!=c.CTRL&&b!=c.ALT&&b!=c.TAB&&e.handleSearch(a)})},d.prototype._transferTabIndex=function(a){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},d.prototype.createPlaceholder=function(a,b){this.$search.attr("placeholder",b.text)},d.prototype.update=function(a,b){var c=this.$search[0]==document.activeElement;this.$search.attr("placeholder",""),a.call(this,b),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch(),c&&this.$search.focus()},d.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},d.prototype.searchRemoveChoice=function(a,b){this.trigger("unselect",{data:b}),this.$search.val(b.text),this.handleSearch()},d.prototype.resizeSearch=function(){this.$search.css("width","25px");var a="";if(""!==this.$search.attr("placeholder"))a=this.$selection.find(".select2-selection__rendered").innerWidth();else{var b=this.$search.val().length+1;a=.75*b+"em"}this.$search.css("width",a)},d}),b.define("select2/selection/eventRelay",["jquery"],function(a){function b(){}return b.prototype.bind=function(b,c,d){var e=this,f=["open","opening","close","closing","select","selecting","unselect","unselecting"],g=["opening","closing","selecting","unselecting"];b.call(this,c,d),c.on("*",function(b,c){if(-1!==a.inArray(b,f)){c=c||{};var d=a.Event("select2:"+b,{params:c});e.$element.trigger(d),-1!==a.inArray(b,g)&&(c.prevented=d.isDefaultPrevented())}})},b}),b.define("select2/translation",["jquery","require"],function(a,b){function c(a){this.dict=a||{}}return c.prototype.all=function(){return this.dict},c.prototype.get=function(a){return this.dict[a]},c.prototype.extend=function(b){this.dict=a.extend({},b.all(),this.dict)},c._cache={},c.loadPath=function(a){if(!(a in c._cache)){var d=b(a);c._cache[a]=d}return new c(c._cache[a])},c}),b.define("select2/diacritics",[],function(){var a={"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ω":"ω","ς":"σ"};return a}),b.define("select2/data/base",["../utils"],function(a){function b(a,c){b.__super__.constructor.call(this)}return a.Extend(b,a.Observable),b.prototype.current=function(a){throw new Error("The `current` method must be defined in child classes.")},b.prototype.query=function(a,b){throw new Error("The `query` method must be defined in child classes.")},b.prototype.bind=function(a,b){},b.prototype.destroy=function(){},b.prototype.generateResultId=function(b,c){var d=b.id+"-result-";return d+=a.generateChars(4),d+=null!=c.id?"-"+c.id.toString():"-"+a.generateChars(4)},b}),b.define("select2/data/select",["./base","../utils","jquery"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,a),d.prototype.current=function(a){var b=[],d=this;this.$element.find(":selected").each(function(){var a=c(this),e=d.item(a);b.push(e)}),a(b)},d.prototype.select=function(a){var b=this;if(a.selected=!0,c(a.element).is("option"))return a.element.selected=!0,void this.$element.trigger("change"); -if(this.$element.prop("multiple"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f<a.length;f++){var g=a[f].id;-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")});else{var d=a.id;this.$element.val(d),this.$element.trigger("change")}},d.prototype.unselect=function(a){var b=this;if(this.$element.prop("multiple"))return a.selected=!1,c(a.element).is("option")?(a.element.selected=!1,void this.$element.trigger("change")):void this.current(function(d){for(var e=[],f=0;f<d.length;f++){var g=d[f].id;g!==a.id&&-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")})},d.prototype.bind=function(a,b){var c=this;this.container=a,a.on("select",function(a){c.select(a.data)}),a.on("unselect",function(a){c.unselect(a.data)})},d.prototype.destroy=function(){this.$element.find("*").each(function(){c.removeData(this,"data")})},d.prototype.query=function(a,b){var d=[],e=this,f=this.$element.children();f.each(function(){var b=c(this);if(b.is("option")||b.is("optgroup")){var f=e.item(b),g=e.matches(a,f);null!==g&&d.push(g)}}),b({results:d})},d.prototype.addOptions=function(a){b.appendMany(this.$element,a)},d.prototype.option=function(a){var b;a.children?(b=document.createElement("optgroup"),b.label=a.text):(b=document.createElement("option"),void 0!==b.textContent?b.textContent=a.text:b.innerText=a.text),a.id&&(b.value=a.id),a.disabled&&(b.disabled=!0),a.selected&&(b.selected=!0),a.title&&(b.title=a.title);var d=c(b),e=this._normalizeItem(a);return e.element=b,c.data(b,"data",e),d},d.prototype.item=function(a){var b={};if(b=c.data(a[0],"data"),null!=b)return b;if(a.is("option"))b={id:a.val(),text:a.text(),disabled:a.prop("disabled"),selected:a.prop("selected"),title:a.prop("title")};else if(a.is("optgroup")){b={text:a.prop("label"),children:[],title:a.prop("title")};for(var d=a.children("option"),e=[],f=0;f<d.length;f++){var g=c(d[f]),h=this.item(g);e.push(h)}b.children=e}return b=this._normalizeItem(b),b.element=a[0],c.data(a[0],"data",b),b},d.prototype._normalizeItem=function(a){c.isPlainObject(a)||(a={id:a,text:a}),a=c.extend({},{text:""},a);var b={selected:!1,disabled:!1};return null!=a.id&&(a.id=a.id.toString()),null!=a.text&&(a.text=a.text.toString()),null==a._resultId&&a.id&&null!=this.container&&(a._resultId=this.generateResultId(this.container,a)),c.extend({},b,a)},d.prototype.matches=function(a,b){var c=this.options.get("matcher");return c(a,b)},d}),b.define("select2/data/array",["./select","../utils","jquery"],function(a,b,c){function d(a,b){var c=b.get("data")||[];d.__super__.constructor.call(this,a,b),this.addOptions(this.convertToOptions(c))}return b.Extend(d,a),d.prototype.select=function(a){var b=this.$element.find("option").filter(function(b,c){return c.value==a.id.toString()});0===b.length&&(b=this.option(a),this.addOptions(b)),d.__super__.select.call(this,a)},d.prototype.convertToOptions=function(a){function d(a){return function(){return c(this).val()==a.id}}for(var e=this,f=this.$element.find("option"),g=f.map(function(){return e.item(c(this)).id}).get(),h=[],i=0;i<a.length;i++){var j=this._normalizeItem(a[i]);if(c.inArray(j.id,g)>=0){var k=f.filter(d(j)),l=this.item(k),m=c.extend(!0,{},j,l),n=this.option(m);k.replaceWith(n)}else{var o=this.option(j);if(j.children){var p=this.convertToOptions(j.children);b.appendMany(o,p)}h.push(o)}}return h},d}),b.define("select2/data/ajax",["./array","../utils","jquery"],function(a,b,c){function d(a,b){this.ajaxOptions=this._applyDefaults(b.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),d.__super__.constructor.call(this,a,b)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return c.extend({},a,{q:a.term})},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("debug")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),b(f)},function(){d.status&&"0"===d.status||e.trigger("results:message",{message:"errorLoading"})});e._request=d}var e=this;null!=this._request&&(c.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var f=c.extend({type:"GET"},this.ajaxOptions);"function"==typeof f.url&&(f.url=f.url.call(this.$element,a)),"function"==typeof f.data&&(f.data=f.data.call(this.$element,a)),this.ajaxOptions.delay&&null!=a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),b.define("select2/data/tags",["jquery"],function(a){function b(b,c,d){var e=d.get("tags"),f=d.get("createTag");void 0!==f&&(this.createTag=f);var g=d.get("insertTag");if(void 0!==g&&(this.insertTag=g),b.call(this,c,d),a.isArray(e))for(var h=0;h<e.length;h++){var i=e[h],j=this._normalizeItem(i),k=this.option(j);this.$element.append(k)}}return b.prototype.query=function(a,b,c){function d(a,f){for(var g=a.results,h=0;h<g.length;h++){var i=g[h],j=null!=i.children&&!d({results:i.children},!0),k=i.text===b.term;if(k||j)return f?!1:(a.data=g,void c(a))}if(f)return!0;var l=e.createTag(b);if(null!=l){var m=e.option(l);m.attr("data-select2-tag",!0),e.addOptions([m]),e.insertTag(g,l)}a.results=g,c(a)}var e=this;return this._removeOldTags(),null==b.term||null!=b.page?void a.call(this,b,c):void a.call(this,b,d)},b.prototype.createTag=function(b,c){var d=a.trim(c.term);return""===d?null:{id:d,text:d}},b.prototype.insertTag=function(a,b,c){b.unshift(c)},b.prototype._removeOldTags=function(b){var c=(this._lastTag,this.$element.find("option[data-select2-tag]"));c.each(function(){this.selected||a(this).remove()})},b}),b.define("select2/data/tokenizer",["jquery"],function(a){function b(a,b,c){var d=c.get("tokenizer");void 0!==d&&(this.tokenizer=d),a.call(this,b,c)}return b.prototype.bind=function(a,b,c){a.call(this,b,c),this.$search=b.dropdown.$search||b.selection.$search||c.find(".select2-search__field")},b.prototype.query=function(b,c,d){function e(b){var c=g._normalizeItem(b),d=g.$element.find("option").filter(function(){return a(this).val()===c.id});if(!d.length){var e=g.option(c);e.attr("data-select2-tag",!0),g._removeOldTags(),g.addOptions([e])}f(c)}function f(a){g.trigger("select",{data:a})}var g=this;c.term=c.term||"";var h=this.tokenizer(c,this.options,e);h.term!==c.term&&(this.$search.length&&(this.$search.val(h.term),this.$search.focus()),c.term=h.term),b.call(this,c,d)},b.prototype.tokenizer=function(b,c,d,e){for(var f=d.get("tokenSeparators")||[],g=c.term,h=0,i=this.createTag||function(a){return{id:a.term,text:a.term}};h<g.length;){var j=g[h];if(-1!==a.inArray(j,f)){var k=g.substr(0,h),l=a.extend({},c,{term:k}),m=i(l);null!=m?(e(m),g=g.substr(h+1)||"",h=0):h++}else h++}return{term:g}},b}),b.define("select2/data/minimumInputLength",[],function(){function a(a,b,c){this.minimumInputLength=c.get("minimumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){return b.term=b.term||"",b.term.length<this.minimumInputLength?void this.trigger("results:message",{message:"inputTooShort",args:{minimum:this.minimumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),b.define("select2/data/maximumInputLength",[],function(){function a(a,b,c){this.maximumInputLength=c.get("maximumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){return b.term=b.term||"",this.maximumInputLength>0&&b.term.length>this.maximumInputLength?void this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),b.define("select2/data/maximumSelectionLength",[],function(){function a(a,b,c){this.maximumSelectionLength=c.get("maximumSelectionLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){var d=this;this.current(function(e){var f=null!=e?e.length:0;return d.maximumSelectionLength>0&&f>=d.maximumSelectionLength?void d.trigger("results:message",{message:"maximumSelected",args:{maximum:d.maximumSelectionLength}}):void a.call(d,b,c)})},a}),b.define("select2/dropdown",["jquery","./utils"],function(a,b){function c(a,b){this.$element=a,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<span class="select2-dropdown"><span class="select2-results"></span></span>');return b.attr("dir",this.options.get("dir")),this.$dropdown=b,b},c.prototype.bind=function(){},c.prototype.position=function(a,b){},c.prototype.destroy=function(){this.$dropdown.remove()},c}),b.define("select2/dropdown/search",["jquery","../utils"],function(a,b){function c(){}return c.prototype.render=function(b){var c=b.call(this),d=a('<span class="select2-search select2-search--dropdown"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" /></span>');return this.$searchContainer=d,this.$search=d.find("input"),c.prepend(d),c},c.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),this.$search.on("keydown",function(a){e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented()}),this.$search.on("input",function(b){a(this).off("keyup")}),this.$search.on("keyup input",function(a){e.handleSearch(a)}),c.on("open",function(){e.$search.attr("tabindex",0),e.$search.focus(),window.setTimeout(function(){e.$search.focus()},0)}),c.on("close",function(){e.$search.attr("tabindex",-1),e.$search.val("")}),c.on("focus",function(){c.isOpen()&&e.$search.focus()}),c.on("results:all",function(a){if(null==a.query.term||""===a.query.term){var b=e.showSearch(a);b?e.$searchContainer.removeClass("select2-search--hide"):e.$searchContainer.addClass("select2-search--hide")}})},c.prototype.handleSearch=function(a){if(!this._keyUpPrevented){var b=this.$search.val();this.trigger("query",{term:b})}this._keyUpPrevented=!1},c.prototype.showSearch=function(a,b){return!0},c}),b.define("select2/dropdown/hidePlaceholder",[],function(){function a(a,b,c,d){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c,d)}return a.prototype.append=function(a,b){b.results=this.removePlaceholder(b.results),a.call(this,b)},a.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},a.prototype.removePlaceholder=function(a,b){for(var c=b.slice(0),d=b.length-1;d>=0;d--){var e=b[d];this.placeholder.id===e.id&&c.splice(d,1)}return c},a}),b.define("select2/dropdown/infiniteScroll",["jquery"],function(a){function b(a,b,c,d){this.lastParams={},a.call(this,b,c,d),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return b.prototype.append=function(a,b){this.$loadingMore.remove(),this.loading=!1,a.call(this,b),this.showLoadingMore(b)&&this.$results.append(this.$loadingMore)},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),c.on("query",function(a){e.lastParams=a,e.loading=!0}),c.on("query:append",function(a){e.lastParams=a,e.loading=!0}),this.$results.on("scroll",function(){var b=a.contains(document.documentElement,e.$loadingMore[0]);if(!e.loading&&b){var c=e.$results.offset().top+e.$results.outerHeight(!1),d=e.$loadingMore.offset().top+e.$loadingMore.outerHeight(!1);c+50>=d&&e.loadMore()}})},b.prototype.loadMore=function(){this.loading=!0;var b=a.extend({},{page:1},this.lastParams);b.page++,this.trigger("query:append",b)},b.prototype.showLoadingMore=function(a,b){return b.pagination&&b.pagination.more},b.prototype.createLoadingMore=function(){var b=a('<li class="select2-results__option select2-results__option--load-more"role="treeitem" aria-disabled="true"></li>'),c=this.options.get("translations").get("loadingMore");return b.html(c(this.lastParams)),b},b}),b.define("select2/dropdown/attachBody",["jquery","../utils"],function(a,b){function c(b,c,d){this.$dropdownParent=d.get("dropdownParent")||a(document.body),b.call(this,c,d)}return c.prototype.bind=function(a,b,c){var d=this,e=!1;a.call(this,b,c),b.on("open",function(){d._showDropdown(),d._attachPositioningHandler(b),e||(e=!0,b.on("results:all",function(){d._positionDropdown(),d._resizeDropdown()}),b.on("results:append",function(){d._positionDropdown(),d._resizeDropdown()}))}),b.on("close",function(){d._hideDropdown(),d._detachPositioningHandler(b)}),this.$dropdownContainer.on("mousedown",function(a){a.stopPropagation()})},c.prototype.destroy=function(a){a.call(this),this.$dropdownContainer.remove()},c.prototype.position=function(a,b,c){b.attr("class",c.attr("class")),b.removeClass("select2"),b.addClass("select2-container--open"),b.css({position:"absolute",top:-999999}),this.$container=c},c.prototype.render=function(b){var c=a("<span></span>"),d=b.call(this);return c.append(d),this.$dropdownContainer=c,c},c.prototype._hideDropdown=function(a){this.$dropdownContainer.detach()},c.prototype._attachPositioningHandler=function(c,d){var e=this,f="scroll.select2."+d.id,g="resize.select2."+d.id,h="orientationchange.select2."+d.id,i=this.$container.parents().filter(b.hasScroll);i.each(function(){a(this).data("select2-scroll-position",{x:a(this).scrollLeft(),y:a(this).scrollTop()})}),i.on(f,function(b){var c=a(this).data("select2-scroll-position");a(this).scrollTop(c.y)}),a(window).on(f+" "+g+" "+h,function(a){e._positionDropdown(),e._resizeDropdown()})},c.prototype._detachPositioningHandler=function(c,d){var e="scroll.select2."+d.id,f="resize.select2."+d.id,g="orientationchange.select2."+d.id,h=this.$container.parents().filter(b.hasScroll);h.off(e),a(window).off(e+" "+f+" "+g)},c.prototype._positionDropdown=function(){var b=a(window),c=this.$dropdown.hasClass("select2-dropdown--above"),d=this.$dropdown.hasClass("select2-dropdown--below"),e=null,f=this.$container.offset();f.bottom=f.top+this.$container.outerHeight(!1);var g={height:this.$container.outerHeight(!1)};g.top=f.top,g.bottom=f.top+g.height;var h={height:this.$dropdown.outerHeight(!1)},i={top:b.scrollTop(),bottom:b.scrollTop()+b.height()},j=i.top<f.top-h.height,k=i.bottom>f.bottom+h.height,l={left:f.left,top:g.bottom},m=this.$dropdownParent;"static"===m.css("position")&&(m=m.offsetParent());var n=m.offset();l.top-=n.top,l.left-=n.left,c||d||(e="below"),k||!j||c?!j&&k&&c&&(e="below"):e="above",("above"==e||c&&"below"!==e)&&(l.top=g.top-n.top-h.height),null!=e&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+e),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+e)),this.$dropdownContainer.css(l)},c.prototype._resizeDropdown=function(){var a={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(a.minWidth=a.width,a.position="relative",a.width="auto"),this.$dropdown.css(a)},c.prototype._showDropdown=function(a){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},c}),b.define("select2/dropdown/minimumResultsForSearch",[],function(){function a(b){for(var c=0,d=0;d<b.length;d++){var e=b[d];e.children?c+=a(e.children):c++}return c}function b(a,b,c,d){this.minimumResultsForSearch=c.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),a.call(this,b,c,d)}return b.prototype.showSearch=function(b,c){return a(c.data.results)<this.minimumResultsForSearch?!1:b.call(this,c)},b}),b.define("select2/dropdown/selectOnClose",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("close",function(a){d._handleSelectOnClose(a)})},a.prototype._handleSelectOnClose=function(a,b){if(b&&null!=b.originalSelect2Event){var c=b.originalSelect2Event;if("select"===c._type||"unselect"===c._type)return}var d=this.getHighlightedResults();if(!(d.length<1)){var e=d.data("data");null!=e.element&&e.element.selected||null==e.element&&e.selected||this.trigger("select",{data:e})}},a}),b.define("select2/dropdown/closeOnSelect",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("select",function(a){d._selectTriggered(a)}),b.on("unselect",function(a){d._selectTriggered(a)})},a.prototype._selectTriggered=function(a,b){var c=b.originalEvent;c&&c.ctrlKey||this.trigger("close",{originalEvent:c,originalSelect2Event:b})},a}),b.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(a){var b=a.input.length-a.maximum,c="Please delete "+b+" character";return 1!=b&&(c+="s"),c},inputTooShort:function(a){var b=a.minimum-a.input.length,c="Please enter "+b+" or more characters";return c},loadingMore:function(){return"Loading more results…"},maximumSelected:function(a){var b="You can only select "+a.maximum+" item";return 1!=a.maximum&&(b+="s"),b},noResults:function(){return"No results found"},searching:function(){return"Searching…"}}}),b.define("select2/defaults",["jquery","require","./results","./selection/single","./selection/multiple","./selection/placeholder","./selection/allowClear","./selection/search","./selection/eventRelay","./utils","./translation","./diacritics","./data/select","./data/array","./data/ajax","./data/tags","./data/tokenizer","./data/minimumInputLength","./data/maximumInputLength","./data/maximumSelectionLength","./dropdown","./dropdown/search","./dropdown/hidePlaceholder","./dropdown/infiniteScroll","./dropdown/attachBody","./dropdown/minimumResultsForSearch","./dropdown/selectOnClose","./dropdown/closeOnSelect","./i18n/en"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C){function D(){this.reset()}D.prototype.apply=function(l){if(l=a.extend(!0,{},this.defaults,l),null==l.dataAdapter){if(null!=l.ajax?l.dataAdapter=o:null!=l.data?l.dataAdapter=n:l.dataAdapter=m,l.minimumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,r)),l.maximumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,s)),l.maximumSelectionLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,t)),l.tags&&(l.dataAdapter=j.Decorate(l.dataAdapter,p)),(null!=l.tokenSeparators||null!=l.tokenizer)&&(l.dataAdapter=j.Decorate(l.dataAdapter,q)),null!=l.query){var C=b(l.amdBase+"compat/query");l.dataAdapter=j.Decorate(l.dataAdapter,C)}if(null!=l.initSelection){var D=b(l.amdBase+"compat/initSelection");l.dataAdapter=j.Decorate(l.dataAdapter,D)}}if(null==l.resultsAdapter&&(l.resultsAdapter=c,null!=l.ajax&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,x)),null!=l.placeholder&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,w)),l.selectOnClose&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,A))),null==l.dropdownAdapter){if(l.multiple)l.dropdownAdapter=u;else{var E=j.Decorate(u,v);l.dropdownAdapter=E}if(0!==l.minimumResultsForSearch&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,z)),l.closeOnSelect&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,B)),null!=l.dropdownCssClass||null!=l.dropdownCss||null!=l.adaptDropdownCssClass){var F=b(l.amdBase+"compat/dropdownCss");l.dropdownAdapter=j.Decorate(l.dropdownAdapter,F)}l.dropdownAdapter=j.Decorate(l.dropdownAdapter,y)}if(null==l.selectionAdapter){if(l.multiple?l.selectionAdapter=e:l.selectionAdapter=d,null!=l.placeholder&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,f)),l.allowClear&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,g)),l.multiple&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,h)),null!=l.containerCssClass||null!=l.containerCss||null!=l.adaptContainerCssClass){var G=b(l.amdBase+"compat/containerCss");l.selectionAdapter=j.Decorate(l.selectionAdapter,G)}l.selectionAdapter=j.Decorate(l.selectionAdapter,i)}if("string"==typeof l.language)if(l.language.indexOf("-")>0){var H=l.language.split("-"),I=H[0];l.language=[l.language,I]}else l.language=[l.language];if(a.isArray(l.language)){var J=new k;l.language.push("en");for(var K=l.language,L=0;L<K.length;L++){var M=K[L],N={};try{N=k.loadPath(M)}catch(O){try{M=this.defaults.amdLanguageBase+M,N=k.loadPath(M)}catch(P){l.debug&&window.console&&console.warn&&console.warn('Select2: The language file for "'+M+'" could not be automatically loaded. A fallback will be used instead.');continue}}J.extend(N)}l.translations=J}else{var Q=k.loadPath(this.defaults.amdLanguageBase+"en"),R=new k(l.language);R.extend(Q),l.translations=R}return l},D.prototype.reset=function(){function b(a){function b(a){return l[a]||a}return a.replace(/[^\u0000-\u007E]/g,b)}function c(d,e){if(""===a.trim(d.term))return e;if(e.children&&e.children.length>0){for(var f=a.extend(!0,{},e),g=e.children.length-1;g>=0;g--){var h=e.children[g],i=c(d,h);null==i&&f.children.splice(g,1)}return f.children.length>0?f:c(d,f)}var j=b(e.text).toUpperCase(),k=b(d.term).toUpperCase();return j.indexOf(k)>-1?e:null}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:j.escapeMarkup,language:C,matcher:c,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,sorter:function(a){return a},templateResult:function(a){return a.text},templateSelection:function(a){return a.text},theme:"default",width:"resolve"}},D.prototype.set=function(b,c){var d=a.camelCase(b),e={};e[d]=c;var f=j._convertData(e);a.extend(this.defaults,f)};var E=new D;return E}),b.define("select2/options",["require","jquery","./defaults","./utils"],function(a,b,c,d){function e(b,e){if(this.options=b,null!=e&&this.fromElement(e),this.options=c.apply(this.options),e&&e.is("input")){var f=a(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=d.Decorate(this.options.dataAdapter,f)}}return e.prototype.fromElement=function(a){var c=["select2"];null==this.options.multiple&&(this.options.multiple=a.prop("multiple")),null==this.options.disabled&&(this.options.disabled=a.prop("disabled")),null==this.options.language&&(a.prop("lang")?this.options.language=a.prop("lang").toLowerCase():a.closest("[lang]").prop("lang")&&(this.options.language=a.closest("[lang]").prop("lang"))),null==this.options.dir&&(a.prop("dir")?this.options.dir=a.prop("dir"):a.closest("[dir]").prop("dir")?this.options.dir=a.closest("[dir]").prop("dir"):this.options.dir="ltr"),a.prop("disabled",this.options.disabled),a.prop("multiple",this.options.multiple),a.data("select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),a.data("data",a.data("select2Tags")),a.data("tags",!0)),a.data("ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),a.attr("ajax--url",a.data("ajaxUrl")),a.data("ajax--url",a.data("ajaxUrl")));var e={};e=b.fn.jquery&&"1."==b.fn.jquery.substr(0,2)&&a[0].dataset?b.extend(!0,{},a[0].dataset,a.data()):a.data();var f=b.extend(!0,{},e);f=d._convertData(f);for(var g in f)b.inArray(g,c)>-1||(b.isPlainObject(this.options[g])?b.extend(this.options[g],f[g]):this.options[g]=f[g]);return this},e.prototype.get=function(a){return this.options[a]},e.prototype.set=function(a,b){this.options[a]=b},e}),b.define("select2/core",["jquery","./options","./utils","./keys"],function(a,b,c,d){var e=function(a,c){null!=a.data("select2")&&a.data("select2").destroy(),this.$element=a,this.id=this._generateId(a),c=c||{},this.options=new b(c,a),e.__super__.constructor.call(this);var d=a.attr("tabindex")||0;a.data("old-tabindex",d),a.attr("tabindex","-1");var f=this.options.get("dataAdapter");this.dataAdapter=new f(a,this.options);var g=this.render();this._placeContainer(g);var h=this.options.get("selectionAdapter");this.selection=new h(a,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,g);var i=this.options.get("dropdownAdapter");this.dropdown=new i(a,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,g);var j=this.options.get("resultsAdapter");this.results=new j(a,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var k=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(a){k.trigger("selection:update",{data:a})}),a.addClass("select2-hidden-accessible"),a.attr("aria-hidden","true"),this._syncAttributes(),a.data("select2",this)};return c.Extend(e,c.Observable),e.prototype._generateId=function(a){var b="";return b=null!=a.attr("id")?a.attr("id"):null!=a.attr("name")?a.attr("name")+"-"+c.generateChars(2):c.generateChars(4),b=b.replace(/(:|\.|\[|\]|,)/g,""),b="select2-"+b},e.prototype._placeContainer=function(a){a.insertAfter(this.$element);var b=this._resolveWidth(this.$element,this.options.get("width"));null!=b&&a.css("width",b)},e.prototype._resolveWidth=function(a,b){var c=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==b){var d=this._resolveWidth(a,"style");return null!=d?d:this._resolveWidth(a,"element")}if("element"==b){var e=a.outerWidth(!1);return 0>=e?"auto":e+"px"}if("style"==b){var f=a.attr("style");if("string"!=typeof f)return null;for(var g=f.split(";"),h=0,i=g.length;i>h;h+=1){var j=g[h].replace(/\s/g,""),k=j.match(c);if(null!==k&&k.length>=1)return k[1]}return null}return b},e.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},e.prototype._registerDomEvents=function(){var b=this;this.$element.on("change.select2",function(){b.dataAdapter.current(function(a){b.trigger("selection:update",{data:a})})}),this.$element.on("focus.select2",function(a){b.trigger("focus",a)}),this._syncA=c.bind(this._syncAttributes,this),this._syncS=c.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._syncA);var d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=d?(this._observer=new d(function(c){a.each(c,b._syncA),a.each(c,b._syncS)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener("DOMAttrModified",b._syncA,!1),this.$element[0].addEventListener("DOMNodeInserted",b._syncS,!1),this.$element[0].addEventListener("DOMNodeRemoved",b._syncS,!1))},e.prototype._registerDataEvents=function(){var a=this;this.dataAdapter.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerSelectionEvents=function(){var b=this,c=["toggle","focus"];this.selection.on("toggle",function(){b.toggleDropdown()}),this.selection.on("focus",function(a){b.focus(a)}),this.selection.on("*",function(d,e){-1===a.inArray(d,c)&&b.trigger(d,e)})},e.prototype._registerDropdownEvents=function(){var a=this;this.dropdown.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerResultsEvents=function(){var a=this;this.results.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerEvents=function(){var a=this;this.on("open",function(){a.$container.addClass("select2-container--open")}),this.on("close",function(){a.$container.removeClass("select2-container--open")}),this.on("enable",function(){a.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){a.$container.addClass("select2-container--disabled")}),this.on("blur",function(){a.$container.removeClass("select2-container--focus")}),this.on("query",function(b){a.isOpen()||a.trigger("open",{}),this.dataAdapter.query(b,function(c){a.trigger("results:all",{data:c,query:b})})}),this.on("query:append",function(b){this.dataAdapter.query(b,function(c){a.trigger("results:append",{data:c,query:b})})}),this.on("keypress",function(b){var c=b.which;a.isOpen()?c===d.ESC||c===d.TAB||c===d.UP&&b.altKey?(a.close(),b.preventDefault()):c===d.ENTER?(a.trigger("results:select",{}),b.preventDefault()):c===d.SPACE&&b.ctrlKey?(a.trigger("results:toggle",{}),b.preventDefault()):c===d.UP?(a.trigger("results:previous",{}),b.preventDefault()):c===d.DOWN&&(a.trigger("results:next",{}),b.preventDefault()):(c===d.ENTER||c===d.SPACE||c===d.DOWN&&b.altKey)&&(a.open(),b.preventDefault())})},e.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},e.prototype._syncSubtree=function(a,b){var c=!1,d=this;if(!a||!a.target||"OPTION"===a.target.nodeName||"OPTGROUP"===a.target.nodeName){if(b)if(b.addedNodes&&b.addedNodes.length>0)for(var e=0;e<b.addedNodes.length;e++){var f=b.addedNodes[e];f.selected&&(c=!0)}else b.removedNodes&&b.removedNodes.length>0&&(c=!0);else c=!0;c&&this.dataAdapter.current(function(a){d.trigger("selection:update",{data:a})})}},e.prototype.trigger=function(a,b){var c=e.__super__.trigger,d={open:"opening",close:"closing",select:"selecting",unselect:"unselecting"};if(void 0===b&&(b={}),a in d){var f=d[a],g={prevented:!1,name:a,args:b};if(c.call(this,f,g),g.prevented)return void(b.prevented=!0)}c.call(this,a,b)},e.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},e.prototype.open=function(){this.isOpen()||this.trigger("query",{})},e.prototype.close=function(){this.isOpen()&&this.trigger("close",{})},e.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},e.prototype.hasFocus=function(){return this.$container.hasClass("select2-container--focus")},e.prototype.focus=function(a){this.hasFocus()||(this.$container.addClass("select2-container--focus"),this.trigger("focus",{}))},e.prototype.enable=function(a){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),(null==a||0===a.length)&&(a=[!0]);var b=!a[0];this.$element.prop("disabled",b)},e.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var a=[];return this.dataAdapter.current(function(b){a=b}),a},e.prototype.val=function(b){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==b||0===b.length)return this.$element.val();var c=b[0];a.isArray(c)&&(c=a.map(c,function(a){return a.toString()})),this.$element.val(c).trigger("change")},e.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._syncA),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener("DOMAttrModified",this._syncA,!1),this.$element[0].removeEventListener("DOMNodeInserted",this._syncS,!1),this.$element[0].removeEventListener("DOMNodeRemoved",this._syncS,!1)),this._syncA=null,this._syncS=null,this.$element.off(".select2"),this.$element.attr("tabindex",this.$element.data("old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null; -},e.prototype.render=function(){var b=a('<span class="select2 select2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>');return b.attr("dir",this.options.get("dir")),this.$container=b,this.$container.addClass("select2-container--"+this.options.get("theme")),b.data("element",this.$element),b},e}),b.define("select2/compat/utils",["jquery"],function(a){function b(b,c,d){var e,f,g=[];e=a.trim(b.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each(function(){0===this.indexOf("select2-")&&g.push(this)})),e=a.trim(c.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each(function(){0!==this.indexOf("select2-")&&(f=d(this),null!=f&&g.push(f))})),b.attr("class",g.join(" "))}return{syncCssClasses:b}}),b.define("select2/compat/containerCss",["jquery","./utils"],function(a,b){function c(a){return null}function d(){}return d.prototype.render=function(d){var e=d.call(this),f=this.options.get("containerCssClass")||"";a.isFunction(f)&&(f=f(this.$element));var g=this.options.get("adaptContainerCssClass");if(g=g||c,-1!==f.indexOf(":all:")){f=f.replace(":all:","");var h=g;g=function(a){var b=h(a);return null!=b?b+" "+a:a}}var i=this.options.get("containerCss")||{};return a.isFunction(i)&&(i=i(this.$element)),b.syncCssClasses(e,this.$element,g),e.css(i),e.addClass(f),e},d}),b.define("select2/compat/dropdownCss",["jquery","./utils"],function(a,b){function c(a){return null}function d(){}return d.prototype.render=function(d){var e=d.call(this),f=this.options.get("dropdownCssClass")||"";a.isFunction(f)&&(f=f(this.$element));var g=this.options.get("adaptDropdownCssClass");if(g=g||c,-1!==f.indexOf(":all:")){f=f.replace(":all:","");var h=g;g=function(a){var b=h(a);return null!=b?b+" "+a:a}}var i=this.options.get("dropdownCss")||{};return a.isFunction(i)&&(i=i(this.$element)),b.syncCssClasses(e,this.$element,g),e.css(i),e.addClass(f),e},d}),b.define("select2/compat/initSelection",["jquery"],function(a){function b(a,b,c){c.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `initSelection` option has been deprecated in favor of a custom data adapter that overrides the `current` method. This method is now called multiple times instead of a single time when the instance is initialized. Support will be removed for the `initSelection` option in future versions of Select2"),this.initSelection=c.get("initSelection"),this._isInitialized=!1,a.call(this,b,c)}return b.prototype.current=function(b,c){var d=this;return this._isInitialized?void b.call(this,c):void this.initSelection.call(null,this.$element,function(b){d._isInitialized=!0,a.isArray(b)||(b=[b]),c(b)})},b}),b.define("select2/compat/inputData",["jquery"],function(a){function b(a,b,c){this._currentData=[],this._valueSeparator=c.get("valueSeparator")||",","hidden"===b.prop("type")&&c.get("debug")&&console&&console.warn&&console.warn("Select2: Using a hidden input with Select2 is no longer supported and may stop working in the future. It is recommended to use a `<select>` element instead."),a.call(this,b,c)}return b.prototype.current=function(b,c){function d(b,c){var e=[];return b.selected||-1!==a.inArray(b.id,c)?(b.selected=!0,e.push(b)):b.selected=!1,b.children&&e.push.apply(e,d(b.children,c)),e}for(var e=[],f=0;f<this._currentData.length;f++){var g=this._currentData[f];e.push.apply(e,d(g,this.$element.val().split(this._valueSeparator)))}c(e)},b.prototype.select=function(b,c){if(this.options.get("multiple")){var d=this.$element.val();d+=this._valueSeparator+c.id,this.$element.val(d),this.$element.trigger("change")}else this.current(function(b){a.map(b,function(a){a.selected=!1})}),this.$element.val(c.id),this.$element.trigger("change")},b.prototype.unselect=function(a,b){var c=this;b.selected=!1,this.current(function(a){for(var d=[],e=0;e<a.length;e++){var f=a[e];b.id!=f.id&&d.push(f.id)}c.$element.val(d.join(c._valueSeparator)),c.$element.trigger("change")})},b.prototype.query=function(a,b,c){for(var d=[],e=0;e<this._currentData.length;e++){var f=this._currentData[e],g=this.matches(b,f);null!==g&&d.push(g)}c({results:d})},b.prototype.addOptions=function(b,c){var d=a.map(c,function(b){return a.data(b[0],"data")});this._currentData.push.apply(this._currentData,d)},b}),b.define("select2/compat/matcher",["jquery"],function(a){function b(b){function c(c,d){var e=a.extend(!0,{},d);if(null==c.term||""===a.trim(c.term))return e;if(d.children){for(var f=d.children.length-1;f>=0;f--){var g=d.children[f],h=b(c.term,g.text,g);h||e.children.splice(f,1)}if(e.children.length>0)return e}return b(c.term,d.text,d)?e:null}return c}return b}),b.define("select2/compat/query",[],function(){function a(a,b,c){c.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `query` option has been deprecated in favor of a custom data adapter that overrides the `query` method. Support will be removed for the `query` option in future versions of Select2."),a.call(this,b,c)}return a.prototype.query=function(a,b,c){b.callback=c;var d=this.options.get("query");d.call(null,b)},a}),b.define("select2/dropdown/attachContainer",[],function(){function a(a,b,c){a.call(this,b,c)}return a.prototype.position=function(a,b,c){var d=c.find(".dropdown-wrapper");d.append(b),b.addClass("select2-dropdown--below"),c.addClass("select2-container--below")},a}),b.define("select2/dropdown/stopPropagation",[],function(){function a(){}return a.prototype.bind=function(a,b,c){a.call(this,b,c);var d=["blur","change","click","dblclick","focus","focusin","focusout","input","keydown","keyup","keypress","mousedown","mouseenter","mouseleave","mousemove","mouseover","mouseup","search","touchend","touchstart"];this.$dropdown.on(d.join(" "),function(a){a.stopPropagation()})},a}),b.define("select2/selection/stopPropagation",[],function(){function a(){}return a.prototype.bind=function(a,b,c){a.call(this,b,c);var d=["blur","change","click","dblclick","focus","focusin","focusout","input","keydown","keyup","keypress","mousedown","mouseenter","mouseleave","mousemove","mouseover","mouseup","search","touchend","touchstart"];this.$selection.on(d.join(" "),function(a){a.stopPropagation()})},a}),function(c){"function"==typeof b.define&&b.define.amd?b.define("jquery-mousewheel",["jquery"],c):"object"==typeof exports?module.exports=c:c(a)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})}),b.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults"],function(a,b,c,d){if(null==a.fn.select2){var e=["open","close","destroy"];a.fn.select2=function(b){if(b=b||{},"object"==typeof b)return this.each(function(){var d=a.extend(!0,{},b);new c(a(this),d)}),this;if("string"==typeof b){var d,f=Array.prototype.slice.call(arguments,1);return this.each(function(){var c=a(this).data("select2");null==c&&window.console&&console.error&&console.error("The select2('"+b+"') method was called on an element that is not using Select2."),d=c[b].apply(c,f)}),a.inArray(b,e)>-1?this:d}throw new Error("Invalid arguments for Select2: "+b)}}return null==a.fn.select2.defaults&&(a.fn.select2.defaults=d),c}),{define:b.define,require:b.require}}(),c=b.require("jquery.select2");return a.fn.select2.amd=b,c}); \ No newline at end of file diff --git a/assets/plugins/select2/select2.js b/assets/plugins/select2/select2.js deleted file mode 100644 index 13b84fad..00000000 --- a/assets/plugins/select2/select2.js +++ /dev/null @@ -1,5725 +0,0 @@ -/*! - * Select2 4.0.3 - * https://select2.github.io - * - * Released under the MIT license - * https://github.com/select2/select2/blob/master/LICENSE.md - */ -(function (factory) { - if (typeof define === 'function' && define.amd) { - // AMD. Register as an anonymous module. - define(['jquery'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS - factory(require('jquery')); - } else { - // Browser globals - factory(jQuery); - } -}(function (jQuery) { - // This is needed so we can catch the AMD loader configuration and use it - // The inner file should be wrapped (by `banner.start.js`) in a function that - // returns the AMD loader references. - var S2 = -(function () { - // Restore the Select2 AMD loader so it can be used - // Needed mostly in the language files, where the loader is not inserted - if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) { - var S2 = jQuery.fn.select2.amd; - } -var S2;(function () { if (!S2 || !S2.requirejs) { -if (!S2) { S2 = {}; } else { require = S2; } -/** - * @license almond 0.3.1 Copyright (c) 2011-2014, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/almond for details - */ -//Going sloppy to avoid 'use strict' string cost, but strict practices should -//be followed. -/*jslint sloppy: true */ -/*global setTimeout: false */ - -var requirejs, require, define; -(function (undef) { - var main, req, makeMap, handlers, - defined = {}, - waiting = {}, - config = {}, - defining = {}, - hasOwn = Object.prototype.hasOwnProperty, - aps = [].slice, - jsSuffixRegExp = /\.js$/; - - function hasProp(obj, prop) { - return hasOwn.call(obj, prop); - } - - /** - * Given a relative module name, like ./something, normalize it to - * a real name that can be mapped to a path. - * @param {String} name the relative name - * @param {String} baseName a real name that the name arg is relative - * to. - * @returns {String} normalized name - */ - function normalize(name, baseName) { - var nameParts, nameSegment, mapValue, foundMap, lastIndex, - foundI, foundStarMap, starI, i, j, part, - baseParts = baseName && baseName.split("/"), - map = config.map, - starMap = (map && map['*']) || {}; - - //Adjust any relative paths. - if (name && name.charAt(0) === ".") { - //If have a base name, try to normalize against it, - //otherwise, assume it is a top-level require that will - //be relative to baseUrl in the end. - if (baseName) { - name = name.split('/'); - lastIndex = name.length - 1; - - // Node .js allowance: - if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) { - name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, ''); - } - - //Lop off the last part of baseParts, so that . matches the - //"directory" and not name of the baseName's module. For instance, - //baseName of "one/two/three", maps to "one/two/three.js", but we - //want the directory, "one/two" for this normalization. - name = baseParts.slice(0, baseParts.length - 1).concat(name); - - //start trimDots - for (i = 0; i < name.length; i += 1) { - part = name[i]; - if (part === ".") { - name.splice(i, 1); - i -= 1; - } else if (part === "..") { - if (i === 1 && (name[2] === '..' || name[0] === '..')) { - //End of the line. Keep at least one non-dot - //path segment at the front so it can be mapped - //correctly to disk. Otherwise, there is likely - //no path mapping for a path starting with '..'. - //This can still fail, but catches the most reasonable - //uses of .. - break; - } else if (i > 0) { - name.splice(i - 1, 2); - i -= 2; - } - } - } - //end trimDots - - name = name.join("/"); - } else if (name.indexOf('./') === 0) { - // No baseName, so this is ID is resolved relative - // to baseUrl, pull off the leading dot. - name = name.substring(2); - } - } - - //Apply map config if available. - if ((baseParts || starMap) && map) { - nameParts = name.split('/'); - - for (i = nameParts.length; i > 0; i -= 1) { - nameSegment = nameParts.slice(0, i).join("/"); - - if (baseParts) { - //Find the longest baseName segment match in the config. - //So, do joins on the biggest to smallest lengths of baseParts. - for (j = baseParts.length; j > 0; j -= 1) { - mapValue = map[baseParts.slice(0, j).join('/')]; - - //baseName segment has config, find if it has one for - //this name. - if (mapValue) { - mapValue = mapValue[nameSegment]; - if (mapValue) { - //Match, update name to the new value. - foundMap = mapValue; - foundI = i; - break; - } - } - } - } - - if (foundMap) { - break; - } - - //Check for a star map match, but just hold on to it, - //if there is a shorter segment match later in a matching - //config, then favor over this star map. - if (!foundStarMap && starMap && starMap[nameSegment]) { - foundStarMap = starMap[nameSegment]; - starI = i; - } - } - - if (!foundMap && foundStarMap) { - foundMap = foundStarMap; - foundI = starI; - } - - if (foundMap) { - nameParts.splice(0, foundI, foundMap); - name = nameParts.join('/'); - } - } - - return name; - } - - function makeRequire(relName, forceSync) { - return function () { - //A version of a require function that passes a moduleName - //value for items that may need to - //look up paths relative to the moduleName - var args = aps.call(arguments, 0); - - //If first arg is not require('string'), and there is only - //one arg, it is the array form without a callback. Insert - //a null so that the following concat is correct. - if (typeof args[0] !== 'string' && args.length === 1) { - args.push(null); - } - return req.apply(undef, args.concat([relName, forceSync])); - }; - } - - function makeNormalize(relName) { - return function (name) { - return normalize(name, relName); - }; - } - - function makeLoad(depName) { - return function (value) { - defined[depName] = value; - }; - } - - function callDep(name) { - if (hasProp(waiting, name)) { - var args = waiting[name]; - delete waiting[name]; - defining[name] = true; - main.apply(undef, args); - } - - if (!hasProp(defined, name) && !hasProp(defining, name)) { - throw new Error('No ' + name); - } - return defined[name]; - } - - //Turns a plugin!resource to [plugin, resource] - //with the plugin being undefined if the name - //did not have a plugin prefix. - function splitPrefix(name) { - var prefix, - index = name ? name.indexOf('!') : -1; - if (index > -1) { - prefix = name.substring(0, index); - name = name.substring(index + 1, name.length); - } - return [prefix, name]; - } - - /** - * Makes a name map, normalizing the name, and using a plugin - * for normalization if necessary. Grabs a ref to plugin - * too, as an optimization. - */ - makeMap = function (name, relName) { - var plugin, - parts = splitPrefix(name), - prefix = parts[0]; - - name = parts[1]; - - if (prefix) { - prefix = normalize(prefix, relName); - plugin = callDep(prefix); - } - - //Normalize according - if (prefix) { - if (plugin && plugin.normalize) { - name = plugin.normalize(name, makeNormalize(relName)); - } else { - name = normalize(name, relName); - } - } else { - name = normalize(name, relName); - parts = splitPrefix(name); - prefix = parts[0]; - name = parts[1]; - if (prefix) { - plugin = callDep(prefix); - } - } - - //Using ridiculous property names for space reasons - return { - f: prefix ? prefix + '!' + name : name, //fullName - n: name, - pr: prefix, - p: plugin - }; - }; - - function makeConfig(name) { - return function () { - return (config && config.config && config.config[name]) || {}; - }; - } - - handlers = { - require: function (name) { - return makeRequire(name); - }, - exports: function (name) { - var e = defined[name]; - if (typeof e !== 'undefined') { - return e; - } else { - return (defined[name] = {}); - } - }, - module: function (name) { - return { - id: name, - uri: '', - exports: defined[name], - config: makeConfig(name) - }; - } - }; - - main = function (name, deps, callback, relName) { - var cjsModule, depName, ret, map, i, - args = [], - callbackType = typeof callback, - usingExports; - - //Use name if no relName - relName = relName || name; - - //Call the callback to define the module, if necessary. - if (callbackType === 'undefined' || callbackType === 'function') { - //Pull out the defined dependencies and pass the ordered - //values to the callback. - //Default to [require, exports, module] if no deps - deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps; - for (i = 0; i < deps.length; i += 1) { - map = makeMap(deps[i], relName); - depName = map.f; - - //Fast path CommonJS standard dependencies. - if (depName === "require") { - args[i] = handlers.require(name); - } else if (depName === "exports") { - //CommonJS module spec 1.1 - args[i] = handlers.exports(name); - usingExports = true; - } else if (depName === "module") { - //CommonJS module spec 1.1 - cjsModule = args[i] = handlers.module(name); - } else if (hasProp(defined, depName) || - hasProp(waiting, depName) || - hasProp(defining, depName)) { - args[i] = callDep(depName); - } else if (map.p) { - map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {}); - args[i] = defined[depName]; - } else { - throw new Error(name + ' missing ' + depName); - } - } - - ret = callback ? callback.apply(defined[name], args) : undefined; - - if (name) { - //If setting exports via "module" is in play, - //favor that over return value and exports. After that, - //favor a non-undefined return value over exports use. - if (cjsModule && cjsModule.exports !== undef && - cjsModule.exports !== defined[name]) { - defined[name] = cjsModule.exports; - } else if (ret !== undef || !usingExports) { - //Use the return value from the function. - defined[name] = ret; - } - } - } else if (name) { - //May just be an object definition for the module. Only - //worry about defining if have a module name. - defined[name] = callback; - } - }; - - requirejs = require = req = function (deps, callback, relName, forceSync, alt) { - if (typeof deps === "string") { - if (handlers[deps]) { - //callback in this case is really relName - return handlers[deps](callback); - } - //Just return the module wanted. In this scenario, the - //deps arg is the module name, and second arg (if passed) - //is just the relName. - //Normalize module name, if it contains . or .. - return callDep(makeMap(deps, callback).f); - } else if (!deps.splice) { - //deps is a config object, not an array. - config = deps; - if (config.deps) { - req(config.deps, config.callback); - } - if (!callback) { - return; - } - - if (callback.splice) { - //callback is an array, which means it is a dependency list. - //Adjust args if there are dependencies - deps = callback; - callback = relName; - relName = null; - } else { - deps = undef; - } - } - - //Support require(['a']) - callback = callback || function () {}; - - //If relName is a function, it is an errback handler, - //so remove it. - if (typeof relName === 'function') { - relName = forceSync; - forceSync = alt; - } - - //Simulate async callback; - if (forceSync) { - main(undef, deps, callback, relName); - } else { - //Using a non-zero value because of concern for what old browsers - //do, and latest browsers "upgrade" to 4 if lower value is used: - //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout: - //If want a value immediately, use require('id') instead -- something - //that works in almond on the global level, but not guaranteed and - //unlikely to work in other AMD implementations. - setTimeout(function () { - main(undef, deps, callback, relName); - }, 4); - } - - return req; - }; - - /** - * Just drops the config on the floor, but returns req in case - * the config return value is used. - */ - req.config = function (cfg) { - return req(cfg); - }; - - /** - * Expose module registry for debugging and tooling - */ - requirejs._defined = defined; - - define = function (name, deps, callback) { - if (typeof name !== 'string') { - throw new Error('See almond README: incorrect module build, no module name'); - } - - //This module may not have dependencies - if (!deps.splice) { - //deps is not an array, so probably means - //an object literal or factory function for - //the value. Adjust args. - callback = deps; - deps = []; - } - - if (!hasProp(defined, name) && !hasProp(waiting, name)) { - waiting[name] = [name, deps, callback]; - } - }; - - define.amd = { - jQuery: true - }; -}()); - -S2.requirejs = requirejs;S2.require = require;S2.define = define; -} -}()); -S2.define("almond", function(){}); - -/* global jQuery:false, $:false */ -S2.define('jquery',[],function () { - var _$ = jQuery || $; - - if (_$ == null && console && console.error) { - console.error( - 'Select2: An instance of jQuery or a jQuery-compatible library was not ' + - 'found. Make sure that you are including jQuery before Select2 on your ' + - 'web page.' - ); - } - - return _$; -}); - -S2.define('select2/utils',[ - 'jquery' -], function ($) { - var Utils = {}; - - Utils.Extend = function (ChildClass, SuperClass) { - var __hasProp = {}.hasOwnProperty; - - function BaseConstructor () { - this.constructor = ChildClass; - } - - for (var key in SuperClass) { - if (__hasProp.call(SuperClass, key)) { - ChildClass[key] = SuperClass[key]; - } - } - - BaseConstructor.prototype = SuperClass.prototype; - ChildClass.prototype = new BaseConstructor(); - ChildClass.__super__ = SuperClass.prototype; - - return ChildClass; - }; - - function getMethods (theClass) { - var proto = theClass.prototype; - - var methods = []; - - for (var methodName in proto) { - var m = proto[methodName]; - - if (typeof m !== 'function') { - continue; - } - - if (methodName === 'constructor') { - continue; - } - - methods.push(methodName); - } - - return methods; - } - - Utils.Decorate = function (SuperClass, DecoratorClass) { - var decoratedMethods = getMethods(DecoratorClass); - var superMethods = getMethods(SuperClass); - - function DecoratedClass () { - var unshift = Array.prototype.unshift; - - var argCount = DecoratorClass.prototype.constructor.length; - - var calledConstructor = SuperClass.prototype.constructor; - - if (argCount > 0) { - unshift.call(arguments, SuperClass.prototype.constructor); - - calledConstructor = DecoratorClass.prototype.constructor; - } - - calledConstructor.apply(this, arguments); - } - - DecoratorClass.displayName = SuperClass.displayName; - - function ctr () { - this.constructor = DecoratedClass; - } - - DecoratedClass.prototype = new ctr(); - - for (var m = 0; m < superMethods.length; m++) { - var superMethod = superMethods[m]; - - DecoratedClass.prototype[superMethod] = - SuperClass.prototype[superMethod]; - } - - var calledMethod = function (methodName) { - // Stub out the original method if it's not decorating an actual method - var originalMethod = function () {}; - - if (methodName in DecoratedClass.prototype) { - originalMethod = DecoratedClass.prototype[methodName]; - } - - var decoratedMethod = DecoratorClass.prototype[methodName]; - - return function () { - var unshift = Array.prototype.unshift; - - unshift.call(arguments, originalMethod); - - return decoratedMethod.apply(this, arguments); - }; - }; - - for (var d = 0; d < decoratedMethods.length; d++) { - var decoratedMethod = decoratedMethods[d]; - - DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod); - } - - return DecoratedClass; - }; - - var Observable = function () { - this.listeners = {}; - }; - - Observable.prototype.on = function (event, callback) { - this.listeners = this.listeners || {}; - - if (event in this.listeners) { - this.listeners[event].push(callback); - } else { - this.listeners[event] = [callback]; - } - }; - - Observable.prototype.trigger = function (event) { - var slice = Array.prototype.slice; - var params = slice.call(arguments, 1); - - this.listeners = this.listeners || {}; - - // Params should always come in as an array - if (params == null) { - params = []; - } - - // If there are no arguments to the event, use a temporary object - if (params.length === 0) { - params.push({}); - } - - // Set the `_type` of the first object to the event - params[0]._type = event; - - if (event in this.listeners) { - this.invoke(this.listeners[event], slice.call(arguments, 1)); - } - - if ('*' in this.listeners) { - this.invoke(this.listeners['*'], arguments); - } - }; - - Observable.prototype.invoke = function (listeners, params) { - for (var i = 0, len = listeners.length; i < len; i++) { - listeners[i].apply(this, params); - } - }; - - Utils.Observable = Observable; - - Utils.generateChars = function (length) { - var chars = ''; - - for (var i = 0; i < length; i++) { - var randomChar = Math.floor(Math.random() * 36); - chars += randomChar.toString(36); - } - - return chars; - }; - - Utils.bind = function (func, context) { - return function () { - func.apply(context, arguments); - }; - }; - - Utils._convertData = function (data) { - for (var originalKey in data) { - var keys = originalKey.split('-'); - - var dataLevel = data; - - if (keys.length === 1) { - continue; - } - - for (var k = 0; k < keys.length; k++) { - var key = keys[k]; - - // Lowercase the first letter - // By default, dash-separated becomes camelCase - key = key.substring(0, 1).toLowerCase() + key.substring(1); - - if (!(key in dataLevel)) { - dataLevel[key] = {}; - } - - if (k == keys.length - 1) { - dataLevel[key] = data[originalKey]; - } - - dataLevel = dataLevel[key]; - } - - delete data[originalKey]; - } - - return data; - }; - - Utils.hasScroll = function (index, el) { - // Adapted from the function created by @ShadowScripter - // and adapted by @BillBarry on the Stack Exchange Code Review website. - // The original code can be found at - // http://codereview.stackexchange.com/q/13338 - // and was designed to be used with the Sizzle selector engine. - - var $el = $(el); - var overflowX = el.style.overflowX; - var overflowY = el.style.overflowY; - - //Check both x and y declarations - if (overflowX === overflowY && - (overflowY === 'hidden' || overflowY === 'visible')) { - return false; - } - - if (overflowX === 'scroll' || overflowY === 'scroll') { - return true; - } - - return ($el.innerHeight() < el.scrollHeight || - $el.innerWidth() < el.scrollWidth); - }; - - Utils.escapeMarkup = function (markup) { - var replaceMap = { - '\\': '&#92;', - '&': '&amp;', - '<': '&lt;', - '>': '&gt;', - '"': '&quot;', - '\'': '&#39;', - '/': '&#47;' - }; - - // Do not try to escape the markup if it's not a string - if (typeof markup !== 'string') { - return markup; - } - - return String(markup).replace(/[&<>"'\/\\]/g, function (match) { - return replaceMap[match]; - }); - }; - - // Append an array of jQuery nodes to a given element. - Utils.appendMany = function ($element, $nodes) { - // jQuery 1.7.x does not support $.fn.append() with an array - // Fall back to a jQuery object collection using $.fn.add() - if ($.fn.jquery.substr(0, 3) === '1.7') { - var $jqNodes = $(); - - $.map($nodes, function (node) { - $jqNodes = $jqNodes.add(node); - }); - - $nodes = $jqNodes; - } - - $element.append($nodes); - }; - - return Utils; -}); - -S2.define('select2/results',[ - 'jquery', - './utils' -], function ($, Utils) { - function Results ($element, options, dataAdapter) { - this.$element = $element; - this.data = dataAdapter; - this.options = options; - - Results.__super__.constructor.call(this); - } - - Utils.Extend(Results, Utils.Observable); - - Results.prototype.render = function () { - var $results = $( - '<ul class="select2-results__options" role="tree"></ul>' - ); - - if (this.options.get('multiple')) { - $results.attr('aria-multiselectable', 'true'); - } - - this.$results = $results; - - return $results; - }; - - Results.prototype.clear = function () { - this.$results.empty(); - }; - - Results.prototype.displayMessage = function (params) { - var escapeMarkup = this.options.get('escapeMarkup'); - - this.clear(); - this.hideLoading(); - - var $message = $( - '<li role="treeitem" aria-live="assertive"' + - ' class="select2-results__option"></li>' - ); - - var message = this.options.get('translations').get(params.message); - - $message.append( - escapeMarkup( - message(params.args) - ) - ); - - $message[0].className += ' select2-results__message'; - - this.$results.append($message); - }; - - Results.prototype.hideMessages = function () { - this.$results.find('.select2-results__message').remove(); - }; - - Results.prototype.append = function (data) { - this.hideLoading(); - - var $options = []; - - if (data.results == null || data.results.length === 0) { - if (this.$results.children().length === 0) { - this.trigger('results:message', { - message: 'noResults' - }); - } - - return; - } - - data.results = this.sort(data.results); - - for (var d = 0; d < data.results.length; d++) { - var item = data.results[d]; - - var $option = this.option(item); - - $options.push($option); - } - - this.$results.append($options); - }; - - Results.prototype.position = function ($results, $dropdown) { - var $resultsContainer = $dropdown.find('.select2-results'); - $resultsContainer.append($results); - }; - - Results.prototype.sort = function (data) { - var sorter = this.options.get('sorter'); - - return sorter(data); - }; - - Results.prototype.highlightFirstItem = function () { - var $options = this.$results - .find('.select2-results__option[aria-selected]'); - - var $selected = $options.filter('[aria-selected=true]'); - - // Check if there are any selected options - if ($selected.length > 0) { - // If there are selected options, highlight the first - $selected.first().trigger('mouseenter'); - } else { - // If there are no selected options, highlight the first option - // in the dropdown - $options.first().trigger('mouseenter'); - } - - this.ensureHighlightVisible(); - }; - - Results.prototype.setClasses = function () { - var self = this; - - this.data.current(function (selected) { - var selectedIds = $.map(selected, function (s) { - return s.id.toString(); - }); - - var $options = self.$results - .find('.select2-results__option[aria-selected]'); - - $options.each(function () { - var $option = $(this); - - var item = $.data(this, 'data'); - - // id needs to be converted to a string when comparing - var id = '' + item.id; - - if ((item.element != null && item.element.selected) || - (item.element == null && $.inArray(id, selectedIds) > -1)) { - $option.attr('aria-selected', 'true'); - } else { - $option.attr('aria-selected', 'false'); - } - }); - - }); - }; - - Results.prototype.showLoading = function (params) { - this.hideLoading(); - - var loadingMore = this.options.get('translations').get('searching'); - - var loading = { - disabled: true, - loading: true, - text: loadingMore(params) - }; - var $loading = this.option(loading); - $loading.className += ' loading-results'; - - this.$results.prepend($loading); - }; - - Results.prototype.hideLoading = function () { - this.$results.find('.loading-results').remove(); - }; - - Results.prototype.option = function (data) { - var option = document.createElement('li'); - option.className = 'select2-results__option'; - - var attrs = { - 'role': 'treeitem', - 'aria-selected': 'false' - }; - - if (data.disabled) { - delete attrs['aria-selected']; - attrs['aria-disabled'] = 'true'; - } - - if (data.id == null) { - delete attrs['aria-selected']; - } - - if (data._resultId != null) { - option.id = data._resultId; - } - - if (data.title) { - option.title = data.title; - } - - if (data.children) { - attrs.role = 'group'; - attrs['aria-label'] = data.text; - delete attrs['aria-selected']; - } - - for (var attr in attrs) { - var val = attrs[attr]; - - option.setAttribute(attr, val); - } - - if (data.children) { - var $option = $(option); - - var label = document.createElement('strong'); - label.className = 'select2-results__group'; - - var $label = $(label); - this.template(data, label); - - var $children = []; - - for (var c = 0; c < data.children.length; c++) { - var child = data.children[c]; - - var $child = this.option(child); - - $children.push($child); - } - - var $childrenContainer = $('<ul></ul>', { - 'class': 'select2-results__options select2-results__options--nested' - }); - - $childrenContainer.append($children); - - $option.append(label); - $option.append($childrenContainer); - } else { - this.template(data, option); - } - - $.data(option, 'data', data); - - return option; - }; - - Results.prototype.bind = function (container, $container) { - var self = this; - - var id = container.id + '-results'; - - this.$results.attr('id', id); - - container.on('results:all', function (params) { - self.clear(); - self.append(params.data); - - if (container.isOpen()) { - self.setClasses(); - self.highlightFirstItem(); - } - }); - - container.on('results:append', function (params) { - self.append(params.data); - - if (container.isOpen()) { - self.setClasses(); - } - }); - - container.on('query', function (params) { - self.hideMessages(); - self.showLoading(params); - }); - - container.on('select', function () { - if (!container.isOpen()) { - return; - } - - self.setClasses(); - self.highlightFirstItem(); - }); - - container.on('unselect', function () { - if (!container.isOpen()) { - return; - } - - self.setClasses(); - self.highlightFirstItem(); - }); - - container.on('open', function () { - // When the dropdown is open, aria-expended="true" - self.$results.attr('aria-expanded', 'true'); - self.$results.attr('aria-hidden', 'false'); - - self.setClasses(); - self.ensureHighlightVisible(); - }); - - container.on('close', function () { - // When the dropdown is closed, aria-expended="false" - self.$results.attr('aria-expanded', 'false'); - self.$results.attr('aria-hidden', 'true'); - self.$results.removeAttr('aria-activedescendant'); - }); - - container.on('results:toggle', function () { - var $highlighted = self.getHighlightedResults(); - - if ($highlighted.length === 0) { - return; - } - - $highlighted.trigger('mouseup'); - }); - - container.on('results:select', function () { - var $highlighted = self.getHighlightedResults(); - - if ($highlighted.length === 0) { - return; - } - - var data = $highlighted.data('data'); - - if ($highlighted.attr('aria-selected') == 'true') { - self.trigger('close', {}); - } else { - self.trigger('select', { - data: data - }); - } - }); - - container.on('results:previous', function () { - var $highlighted = self.getHighlightedResults(); - - var $options = self.$results.find('[aria-selected]'); - - var currentIndex = $options.index($highlighted); - - // If we are already at te top, don't move further - if (currentIndex === 0) { - return; - } - - var nextIndex = currentIndex - 1; - - // If none are highlighted, highlight the first - if ($highlighted.length === 0) { - nextIndex = 0; - } - - var $next = $options.eq(nextIndex); - - $next.trigger('mouseenter'); - - var currentOffset = self.$results.offset().top; - var nextTop = $next.offset().top; - var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset); - - if (nextIndex === 0) { - self.$results.scrollTop(0); - } else if (nextTop - currentOffset < 0) { - self.$results.scrollTop(nextOffset); - } - }); - - container.on('results:next', function () { - var $highlighted = self.getHighlightedResults(); - - var $options = self.$results.find('[aria-selected]'); - - var currentIndex = $options.index($highlighted); - - var nextIndex = currentIndex + 1; - - // If we are at the last option, stay there - if (nextIndex >= $options.length) { - return; - } - - var $next = $options.eq(nextIndex); - - $next.trigger('mouseenter'); - - var currentOffset = self.$results.offset().top + - self.$results.outerHeight(false); - var nextBottom = $next.offset().top + $next.outerHeight(false); - var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset; - - if (nextIndex === 0) { - self.$results.scrollTop(0); - } else if (nextBottom > currentOffset) { - self.$results.scrollTop(nextOffset); - } - }); - - container.on('results:focus', function (params) { - params.element.addClass('select2-results__option--highlighted'); - }); - - container.on('results:message', function (params) { - self.displayMessage(params); - }); - - if ($.fn.mousewheel) { - this.$results.on('mousewheel', function (e) { - var top = self.$results.scrollTop(); - - var bottom = self.$results.get(0).scrollHeight - top + e.deltaY; - - var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0; - var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height(); - - if (isAtTop) { - self.$results.scrollTop(0); - - e.preventDefault(); - e.stopPropagation(); - } else if (isAtBottom) { - self.$results.scrollTop( - self.$results.get(0).scrollHeight - self.$results.height() - ); - - e.preventDefault(); - e.stopPropagation(); - } - }); - } - - this.$results.on('mouseup', '.select2-results__option[aria-selected]', - function (evt) { - var $this = $(this); - - var data = $this.data('data'); - - if ($this.attr('aria-selected') === 'true') { - if (self.options.get('multiple')) { - self.trigger('unselect', { - originalEvent: evt, - data: data - }); - } else { - self.trigger('close', {}); - } - - return; - } - - self.trigger('select', { - originalEvent: evt, - data: data - }); - }); - - this.$results.on('mouseenter', '.select2-results__option[aria-selected]', - function (evt) { - var data = $(this).data('data'); - - self.getHighlightedResults() - .removeClass('select2-results__option--highlighted'); - - self.trigger('results:focus', { - data: data, - element: $(this) - }); - }); - }; - - Results.prototype.getHighlightedResults = function () { - var $highlighted = this.$results - .find('.select2-results__option--highlighted'); - - return $highlighted; - }; - - Results.prototype.destroy = function () { - this.$results.remove(); - }; - - Results.prototype.ensureHighlightVisible = function () { - var $highlighted = this.getHighlightedResults(); - - if ($highlighted.length === 0) { - return; - } - - var $options = this.$results.find('[aria-selected]'); - - var currentIndex = $options.index($highlighted); - - var currentOffset = this.$results.offset().top; - var nextTop = $highlighted.offset().top; - var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset); - - var offsetDelta = nextTop - currentOffset; - nextOffset -= $highlighted.outerHeight(false) * 2; - - if (currentIndex <= 2) { - this.$results.scrollTop(0); - } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) { - this.$results.scrollTop(nextOffset); - } - }; - - Results.prototype.template = function (result, container) { - var template = this.options.get('templateResult'); - var escapeMarkup = this.options.get('escapeMarkup'); - - var content = template(result, container); - - if (content == null) { - container.style.display = 'none'; - } else if (typeof content === 'string') { - container.innerHTML = escapeMarkup(content); - } else { - $(container).append(content); - } - }; - - return Results; -}); - -S2.define('select2/keys',[ - -], function () { - var KEYS = { - BACKSPACE: 8, - TAB: 9, - ENTER: 13, - SHIFT: 16, - CTRL: 17, - ALT: 18, - ESC: 27, - SPACE: 32, - PAGE_UP: 33, - PAGE_DOWN: 34, - END: 35, - HOME: 36, - LEFT: 37, - UP: 38, - RIGHT: 39, - DOWN: 40, - DELETE: 46 - }; - - return KEYS; -}); - -S2.define('select2/selection/base',[ - 'jquery', - '../utils', - '../keys' -], function ($, Utils, KEYS) { - function BaseSelection ($element, options) { - this.$element = $element; - this.options = options; - - BaseSelection.__super__.constructor.call(this); - } - - Utils.Extend(BaseSelection, Utils.Observable); - - BaseSelection.prototype.render = function () { - var $selection = $( - '<span class="select2-selection" role="combobox" ' + - ' aria-haspopup="true" aria-expanded="false">' + - '</span>' - ); - - this._tabindex = 0; - - if (this.$element.data('old-tabindex') != null) { - this._tabindex = this.$element.data('old-tabindex'); - } else if (this.$element.attr('tabindex') != null) { - this._tabindex = this.$element.attr('tabindex'); - } - - $selection.attr('title', this.$element.attr('title')); - $selection.attr('tabindex', this._tabindex); - - this.$selection = $selection; - - return $selection; - }; - - BaseSelection.prototype.bind = function (container, $container) { - var self = this; - - var id = container.id + '-container'; - var resultsId = container.id + '-results'; - - this.container = container; - - this.$selection.on('focus', function (evt) { - self.trigger('focus', evt); - }); - - this.$selection.on('blur', function (evt) { - self._handleBlur(evt); - }); - - this.$selection.on('keydown', function (evt) { - self.trigger('keypress', evt); - - if (evt.which === KEYS.SPACE) { - evt.preventDefault(); - } - }); - - container.on('results:focus', function (params) { - self.$selection.attr('aria-activedescendant', params.data._resultId); - }); - - container.on('selection:update', function (params) { - self.update(params.data); - }); - - container.on('open', function () { - // When the dropdown is open, aria-expanded="true" - self.$selection.attr('aria-expanded', 'true'); - self.$selection.attr('aria-owns', resultsId); - - self._attachCloseHandler(container); - }); - - container.on('close', function () { - // When the dropdown is closed, aria-expanded="false" - self.$selection.attr('aria-expanded', 'false'); - self.$selection.removeAttr('aria-activedescendant'); - self.$selection.removeAttr('aria-owns'); - - self.$selection.focus(); - - self._detachCloseHandler(container); - }); - - container.on('enable', function () { - self.$selection.attr('tabindex', self._tabindex); - }); - - container.on('disable', function () { - self.$selection.attr('tabindex', '-1'); - }); - }; - - BaseSelection.prototype._handleBlur = function (evt) { - var self = this; - - // This needs to be delayed as the active element is the body when the tab - // key is pressed, possibly along with others. - window.setTimeout(function () { - // Don't trigger `blur` if the focus is still in the selection - if ( - (document.activeElement == self.$selection[0]) || - ($.contains(self.$selection[0], document.activeElement)) - ) { - return; - } - - self.trigger('blur', evt); - }, 1); - }; - - BaseSelection.prototype._attachCloseHandler = function (container) { - var self = this; - - $(document.body).on('mousedown.select2.' + container.id, function (e) { - var $target = $(e.target); - - var $select = $target.closest('.select2'); - - var $all = $('.select2.select2-container--open'); - - $all.each(function () { - var $this = $(this); - - if (this == $select[0]) { - return; - } - - var $element = $this.data('element'); - - $element.select2('close'); - }); - }); - }; - - BaseSelection.prototype._detachCloseHandler = function (container) { - $(document.body).off('mousedown.select2.' + container.id); - }; - - BaseSelection.prototype.position = function ($selection, $container) { - var $selectionContainer = $container.find('.selection'); - $selectionContainer.append($selection); - }; - - BaseSelection.prototype.destroy = function () { - this._detachCloseHandler(this.container); - }; - - BaseSelection.prototype.update = function (data) { - throw new Error('The `update` method must be defined in child classes.'); - }; - - return BaseSelection; -}); - -S2.define('select2/selection/single',[ - 'jquery', - './base', - '../utils', - '../keys' -], function ($, BaseSelection, Utils, KEYS) { - function SingleSelection () { - SingleSelection.__super__.constructor.apply(this, arguments); - } - - Utils.Extend(SingleSelection, BaseSelection); - - SingleSelection.prototype.render = function () { - var $selection = SingleSelection.__super__.render.call(this); - - $selection.addClass('select2-selection--single'); - - $selection.html( - '<span class="select2-selection__rendered"></span>' + - '<span class="select2-selection__arrow" role="presentation">' + - '<b role="presentation"></b>' + - '</span>' - ); - - return $selection; - }; - - SingleSelection.prototype.bind = function (container, $container) { - var self = this; - - SingleSelection.__super__.bind.apply(this, arguments); - - var id = container.id + '-container'; - - this.$selection.find('.select2-selection__rendered').attr('id', id); - this.$selection.attr('aria-labelledby', id); - - this.$selection.on('mousedown', function (evt) { - // Only respond to left clicks - if (evt.which !== 1) { - return; - } - - self.trigger('toggle', { - originalEvent: evt - }); - }); - - this.$selection.on('focus', function (evt) { - // User focuses on the container - }); - - this.$selection.on('blur', function (evt) { - // User exits the container - }); - - container.on('focus', function (evt) { - if (!container.isOpen()) { - self.$selection.focus(); - } - }); - - container.on('selection:update', function (params) { - self.update(params.data); - }); - }; - - SingleSelection.prototype.clear = function () { - this.$selection.find('.select2-selection__rendered').empty(); - }; - - SingleSelection.prototype.display = function (data, container) { - var template = this.options.get('templateSelection'); - var escapeMarkup = this.options.get('escapeMarkup'); - - return escapeMarkup(template(data, container)); - }; - - SingleSelection.prototype.selectionContainer = function () { - return $('<span></span>'); - }; - - SingleSelection.prototype.update = function (data) { - if (data.length === 0) { - this.clear(); - return; - } - - var selection = data[0]; - - var $rendered = this.$selection.find('.select2-selection__rendered'); - var formatted = this.display(selection, $rendered); - - $rendered.empty().append(formatted); - $rendered.prop('title', selection.title || selection.text); - }; - - return SingleSelection; -}); - -S2.define('select2/selection/multiple',[ - 'jquery', - './base', - '../utils' -], function ($, BaseSelection, Utils) { - function MultipleSelection ($element, options) { - MultipleSelection.__super__.constructor.apply(this, arguments); - } - - Utils.Extend(MultipleSelection, BaseSelection); - - MultipleSelection.prototype.render = function () { - var $selection = MultipleSelection.__super__.render.call(this); - - $selection.addClass('select2-selection--multiple'); - - $selection.html( - '<ul class="select2-selection__rendered"></ul>' - ); - - return $selection; - }; - - MultipleSelection.prototype.bind = function (container, $container) { - var self = this; - - MultipleSelection.__super__.bind.apply(this, arguments); - - this.$selection.on('click', function (evt) { - self.trigger('toggle', { - originalEvent: evt - }); - }); - - this.$selection.on( - 'click', - '.select2-selection__choice__remove', - function (evt) { - // Ignore the event if it is disabled - if (self.options.get('disabled')) { - return; - } - - var $remove = $(this); - var $selection = $remove.parent(); - - var data = $selection.data('data'); - - self.trigger('unselect', { - originalEvent: evt, - data: data - }); - } - ); - }; - - MultipleSelection.prototype.clear = function () { - this.$selection.find('.select2-selection__rendered').empty(); - }; - - MultipleSelection.prototype.display = function (data, container) { - var template = this.options.get('templateSelection'); - var escapeMarkup = this.options.get('escapeMarkup'); - - return escapeMarkup(template(data, container)); - }; - - MultipleSelection.prototype.selectionContainer = function () { - var $container = $( - '<li class="select2-selection__choice">' + - '<span class="select2-selection__choice__remove" role="presentation">' + - '&times;' + - '</span>' + - '</li>' - ); - - return $container; - }; - - MultipleSelection.prototype.update = function (data) { - this.clear(); - - if (data.length === 0) { - return; - } - - var $selections = []; - - for (var d = 0; d < data.length; d++) { - var selection = data[d]; - - var $selection = this.selectionContainer(); - var formatted = this.display(selection, $selection); - - $selection.append(formatted); - $selection.prop('title', selection.title || selection.text); - - $selection.data('data', selection); - - $selections.push($selection); - } - - var $rendered = this.$selection.find('.select2-selection__rendered'); - - Utils.appendMany($rendered, $selections); - }; - - return MultipleSelection; -}); - -S2.define('select2/selection/placeholder',[ - '../utils' -], function (Utils) { - function Placeholder (decorated, $element, options) { - this.placeholder = this.normalizePlaceholder(options.get('placeholder')); - - decorated.call(this, $element, options); - } - - Placeholder.prototype.normalizePlaceholder = function (_, placeholder) { - if (typeof placeholder === 'string') { - placeholder = { - id: '', - text: placeholder - }; - } - - return placeholder; - }; - - Placeholder.prototype.createPlaceholder = function (decorated, placeholder) { - var $placeholder = this.selectionContainer(); - - $placeholder.html(this.display(placeholder)); - $placeholder.addClass('select2-selection__placeholder') - .removeClass('select2-selection__choice'); - - return $placeholder; - }; - - Placeholder.prototype.update = function (decorated, data) { - var singlePlaceholder = ( - data.length == 1 && data[0].id != this.placeholder.id - ); - var multipleSelections = data.length > 1; - - if (multipleSelections || singlePlaceholder) { - return decorated.call(this, data); - } - - this.clear(); - - var $placeholder = this.createPlaceholder(this.placeholder); - - this.$selection.find('.select2-selection__rendered').append($placeholder); - }; - - return Placeholder; -}); - -S2.define('select2/selection/allowClear',[ - 'jquery', - '../keys' -], function ($, KEYS) { - function AllowClear () { } - - AllowClear.prototype.bind = function (decorated, container, $container) { - var self = this; - - decorated.call(this, container, $container); - - if (this.placeholder == null) { - if (this.options.get('debug') && window.console && console.error) { - console.error( - 'Select2: The `allowClear` option should be used in combination ' + - 'with the `placeholder` option.' - ); - } - } - - this.$selection.on('mousedown', '.select2-selection__clear', - function (evt) { - self._handleClear(evt); - }); - - container.on('keypress', function (evt) { - self._handleKeyboardClear(evt, container); - }); - }; - - AllowClear.prototype._handleClear = function (_, evt) { - // Ignore the event if it is disabled - if (this.options.get('disabled')) { - return; - } - - var $clear = this.$selection.find('.select2-selection__clear'); - - // Ignore the event if nothing has been selected - if ($clear.length === 0) { - return; - } - - evt.stopPropagation(); - - var data = $clear.data('data'); - - for (var d = 0; d < data.length; d++) { - var unselectData = { - data: data[d] - }; - - // Trigger the `unselect` event, so people can prevent it from being - // cleared. - this.trigger('unselect', unselectData); - - // If the event was prevented, don't clear it out. - if (unselectData.prevented) { - return; - } - } - - this.$element.val(this.placeholder.id).trigger('change'); - - this.trigger('toggle', {}); - }; - - AllowClear.prototype._handleKeyboardClear = function (_, evt, container) { - if (container.isOpen()) { - return; - } - - if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) { - this._handleClear(evt); - } - }; - - AllowClear.prototype.update = function (decorated, data) { - decorated.call(this, data); - - if (this.$selection.find('.select2-selection__placeholder').length > 0 || - data.length === 0) { - return; - } - - var $remove = $( - '<span class="select2-selection__clear">' + - '&times;' + - '</span>' - ); - $remove.data('data', data); - - this.$selection.find('.select2-selection__rendered').prepend($remove); - }; - - return AllowClear; -}); - -S2.define('select2/selection/search',[ - 'jquery', - '../utils', - '../keys' -], function ($, Utils, KEYS) { - function Search (decorated, $element, options) { - decorated.call(this, $element, options); - } - - Search.prototype.render = function (decorated) { - var $search = $( - '<li class="select2-search select2-search--inline">' + - '<input class="select2-search__field" type="search" tabindex="-1"' + - ' autocomplete="off" autocorrect="off" autocapitalize="off"' + - ' spellcheck="false" role="textbox" aria-autocomplete="list" />' + - '</li>' - ); - - this.$searchContainer = $search; - this.$search = $search.find('input'); - - var $rendered = decorated.call(this); - - this._transferTabIndex(); - - return $rendered; - }; - - Search.prototype.bind = function (decorated, container, $container) { - var self = this; - - decorated.call(this, container, $container); - - container.on('open', function () { - self.$search.trigger('focus'); - }); - - container.on('close', function () { - self.$search.val(''); - self.$search.removeAttr('aria-activedescendant'); - self.$search.trigger('focus'); - }); - - container.on('enable', function () { - self.$search.prop('disabled', false); - - self._transferTabIndex(); - }); - - container.on('disable', function () { - self.$search.prop('disabled', true); - }); - - container.on('focus', function (evt) { - self.$search.trigger('focus'); - }); - - container.on('results:focus', function (params) { - self.$search.attr('aria-activedescendant', params.id); - }); - - this.$selection.on('focusin', '.select2-search--inline', function (evt) { - self.trigger('focus', evt); - }); - - this.$selection.on('focusout', '.select2-search--inline', function (evt) { - self._handleBlur(evt); - }); - - this.$selection.on('keydown', '.select2-search--inline', function (evt) { - evt.stopPropagation(); - - self.trigger('keypress', evt); - - self._keyUpPrevented = evt.isDefaultPrevented(); - - var key = evt.which; - - if (key === KEYS.BACKSPACE && self.$search.val() === '') { - var $previousChoice = self.$searchContainer - .prev('.select2-selection__choice'); - - if ($previousChoice.length > 0) { - var item = $previousChoice.data('data'); - - self.searchRemoveChoice(item); - - evt.preventDefault(); - } - } - }); - - // Try to detect the IE version should the `documentMode` property that - // is stored on the document. This is only implemented in IE and is - // slightly cleaner than doing a user agent check. - // This property is not available in Edge, but Edge also doesn't have - // this bug. - var msie = document.documentMode; - var disableInputEvents = msie && msie <= 11; - - // Workaround for browsers which do not support the `input` event - // This will prevent double-triggering of events for browsers which support - // both the `keyup` and `input` events. - this.$selection.on( - 'input.searchcheck', - '.select2-search--inline', - function (evt) { - // IE will trigger the `input` event when a placeholder is used on a - // search box. To get around this issue, we are forced to ignore all - // `input` events in IE and keep using `keyup`. - if (disableInputEvents) { - self.$selection.off('input.search input.searchcheck'); - return; - } - - // Unbind the duplicated `keyup` event - self.$selection.off('keyup.search'); - } - ); - - this.$selection.on( - 'keyup.search input.search', - '.select2-search--inline', - function (evt) { - // IE will trigger the `input` event when a placeholder is used on a - // search box. To get around this issue, we are forced to ignore all - // `input` events in IE and keep using `keyup`. - if (disableInputEvents && evt.type === 'input') { - self.$selection.off('input.search input.searchcheck'); - return; - } - - var key = evt.which; - - // We can freely ignore events from modifier keys - if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) { - return; - } - - // Tabbing will be handled during the `keydown` phase - if (key == KEYS.TAB) { - return; - } - - self.handleSearch(evt); - } - ); - }; - - /** - * This method will transfer the tabindex attribute from the rendered - * selection to the search box. This allows for the search box to be used as - * the primary focus instead of the selection container. - * - * @private - */ - Search.prototype._transferTabIndex = function (decorated) { - this.$search.attr('tabindex', this.$selection.attr('tabindex')); - this.$selection.attr('tabindex', '-1'); - }; - - Search.prototype.createPlaceholder = function (decorated, placeholder) { - this.$search.attr('placeholder', placeholder.text); - }; - - Search.prototype.update = function (decorated, data) { - var searchHadFocus = this.$search[0] == document.activeElement; - - this.$search.attr('placeholder', ''); - - decorated.call(this, data); - - this.$selection.find('.select2-selection__rendered') - .append(this.$searchContainer); - - this.resizeSearch(); - if (searchHadFocus) { - this.$search.focus(); - } - }; - - Search.prototype.handleSearch = function () { - this.resizeSearch(); - - if (!this._keyUpPrevented) { - var input = this.$search.val(); - - this.trigger('query', { - term: input - }); - } - - this._keyUpPrevented = false; - }; - - Search.prototype.searchRemoveChoice = function (decorated, item) { - this.trigger('unselect', { - data: item - }); - - this.$search.val(item.text); - this.handleSearch(); - }; - - Search.prototype.resizeSearch = function () { - this.$search.css('width', '25px'); - - var width = ''; - - if (this.$search.attr('placeholder') !== '') { - width = this.$selection.find('.select2-selection__rendered').innerWidth(); - } else { - var minimumWidth = this.$search.val().length + 1; - - width = (minimumWidth * 0.75) + 'em'; - } - - this.$search.css('width', width); - }; - - return Search; -}); - -S2.define('select2/selection/eventRelay',[ - 'jquery' -], function ($) { - function EventRelay () { } - - EventRelay.prototype.bind = function (decorated, container, $container) { - var self = this; - var relayEvents = [ - 'open', 'opening', - 'close', 'closing', - 'select', 'selecting', - 'unselect', 'unselecting' - ]; - - var preventableEvents = ['opening', 'closing', 'selecting', 'unselecting']; - - decorated.call(this, container, $container); - - container.on('*', function (name, params) { - // Ignore events that should not be relayed - if ($.inArray(name, relayEvents) === -1) { - return; - } - - // The parameters should always be an object - params = params || {}; - - // Generate the jQuery event for the Select2 event - var evt = $.Event('select2:' + name, { - params: params - }); - - self.$element.trigger(evt); - - // Only handle preventable events if it was one - if ($.inArray(name, preventableEvents) === -1) { - return; - } - - params.prevented = evt.isDefaultPrevented(); - }); - }; - - return EventRelay; -}); - -S2.define('select2/translation',[ - 'jquery', - 'require' -], function ($, require) { - function Translation (dict) { - this.dict = dict || {}; - } - - Translation.prototype.all = function () { - return this.dict; - }; - - Translation.prototype.get = function (key) { - return this.dict[key]; - }; - - Translation.prototype.extend = function (translation) { - this.dict = $.extend({}, translation.all(), this.dict); - }; - - // Static functions - - Translation._cache = {}; - - Translation.loadPath = function (path) { - if (!(path in Translation._cache)) { - var translations = require(path); - - Translation._cache[path] = translations; - } - - return new Translation(Translation._cache[path]); - }; - - return Translation; -}); - -S2.define('select2/diacritics',[ - -], function () { - var diacritics = { - '\u24B6': 'A', - '\uFF21': 'A', - '\u00C0': 'A', - '\u00C1': 'A', - '\u00C2': 'A', - '\u1EA6': 'A', - '\u1EA4': 'A', - '\u1EAA': 'A', - '\u1EA8': 'A', - '\u00C3': 'A', - '\u0100': 'A', - '\u0102': 'A', - '\u1EB0': 'A', - '\u1EAE': 'A', - '\u1EB4': 'A', - '\u1EB2': 'A', - '\u0226': 'A', - '\u01E0': 'A', - '\u00C4': 'A', - '\u01DE': 'A', - '\u1EA2': 'A', - '\u00C5': 'A', - '\u01FA': 'A', - '\u01CD': 'A', - '\u0200': 'A', - '\u0202': 'A', - '\u1EA0': 'A', - '\u1EAC': 'A', - '\u1EB6': 'A', - '\u1E00': 'A', - '\u0104': 'A', - '\u023A': 'A', - '\u2C6F': 'A', - '\uA732': 'AA', - '\u00C6': 'AE', - '\u01FC': 'AE', - '\u01E2': 'AE', - '\uA734': 'AO', - '\uA736': 'AU', - '\uA738': 'AV', - '\uA73A': 'AV', - '\uA73C': 'AY', - '\u24B7': 'B', - '\uFF22': 'B', - '\u1E02': 'B', - '\u1E04': 'B', - '\u1E06': 'B', - '\u0243': 'B', - '\u0182': 'B', - '\u0181': 'B', - '\u24B8': 'C', - '\uFF23': 'C', - '\u0106': 'C', - '\u0108': 'C', - '\u010A': 'C', - '\u010C': 'C', - '\u00C7': 'C', - '\u1E08': 'C', - '\u0187': 'C', - '\u023B': 'C', - '\uA73E': 'C', - '\u24B9': 'D', - '\uFF24': 'D', - '\u1E0A': 'D', - '\u010E': 'D', - '\u1E0C': 'D', - '\u1E10': 'D', - '\u1E12': 'D', - '\u1E0E': 'D', - '\u0110': 'D', - '\u018B': 'D', - '\u018A': 'D', - '\u0189': 'D', - '\uA779': 'D', - '\u01F1': 'DZ', - '\u01C4': 'DZ', - '\u01F2': 'Dz', - '\u01C5': 'Dz', - '\u24BA': 'E', - '\uFF25': 'E', - '\u00C8': 'E', - '\u00C9': 'E', - '\u00CA': 'E', - '\u1EC0': 'E', - '\u1EBE': 'E', - '\u1EC4': 'E', - '\u1EC2': 'E', - '\u1EBC': 'E', - '\u0112': 'E', - '\u1E14': 'E', - '\u1E16': 'E', - '\u0114': 'E', - '\u0116': 'E', - '\u00CB': 'E', - '\u1EBA': 'E', - '\u011A': 'E', - '\u0204': 'E', - '\u0206': 'E', - '\u1EB8': 'E', - '\u1EC6': 'E', - '\u0228': 'E', - '\u1E1C': 'E', - '\u0118': 'E', - '\u1E18': 'E', - '\u1E1A': 'E', - '\u0190': 'E', - '\u018E': 'E', - '\u24BB': 'F', - '\uFF26': 'F', - '\u1E1E': 'F', - '\u0191': 'F', - '\uA77B': 'F', - '\u24BC': 'G', - '\uFF27': 'G', - '\u01F4': 'G', - '\u011C': 'G', - '\u1E20': 'G', - '\u011E': 'G', - '\u0120': 'G', - '\u01E6': 'G', - '\u0122': 'G', - '\u01E4': 'G', - '\u0193': 'G', - '\uA7A0': 'G', - '\uA77D': 'G', - '\uA77E': 'G', - '\u24BD': 'H', - '\uFF28': 'H', - '\u0124': 'H', - '\u1E22': 'H', - '\u1E26': 'H', - '\u021E': 'H', - '\u1E24': 'H', - '\u1E28': 'H', - '\u1E2A': 'H', - '\u0126': 'H', - '\u2C67': 'H', - '\u2C75': 'H', - '\uA78D': 'H', - '\u24BE': 'I', - '\uFF29': 'I', - '\u00CC': 'I', - '\u00CD': 'I', - '\u00CE': 'I', - '\u0128': 'I', - '\u012A': 'I', - '\u012C': 'I', - '\u0130': 'I', - '\u00CF': 'I', - '\u1E2E': 'I', - '\u1EC8': 'I', - '\u01CF': 'I', - '\u0208': 'I', - '\u020A': 'I', - '\u1ECA': 'I', - '\u012E': 'I', - '\u1E2C': 'I', - '\u0197': 'I', - '\u24BF': 'J', - '\uFF2A': 'J', - '\u0134': 'J', - '\u0248': 'J', - '\u24C0': 'K', - '\uFF2B': 'K', - '\u1E30': 'K', - '\u01E8': 'K', - '\u1E32': 'K', - '\u0136': 'K', - '\u1E34': 'K', - '\u0198': 'K', - '\u2C69': 'K', - '\uA740': 'K', - '\uA742': 'K', - '\uA744': 'K', - '\uA7A2': 'K', - '\u24C1': 'L', - '\uFF2C': 'L', - '\u013F': 'L', - '\u0139': 'L', - '\u013D': 'L', - '\u1E36': 'L', - '\u1E38': 'L', - '\u013B': 'L', - '\u1E3C': 'L', - '\u1E3A': 'L', - '\u0141': 'L', - '\u023D': 'L', - '\u2C62': 'L', - '\u2C60': 'L', - '\uA748': 'L', - '\uA746': 'L', - '\uA780': 'L', - '\u01C7': 'LJ', - '\u01C8': 'Lj', - '\u24C2': 'M', - '\uFF2D': 'M', - '\u1E3E': 'M', - '\u1E40': 'M', - '\u1E42': 'M', - '\u2C6E': 'M', - '\u019C': 'M', - '\u24C3': 'N', - '\uFF2E': 'N', - '\u01F8': 'N', - '\u0143': 'N', - '\u00D1': 'N', - '\u1E44': 'N', - '\u0147': 'N', - '\u1E46': 'N', - '\u0145': 'N', - '\u1E4A': 'N', - '\u1E48': 'N', - '\u0220': 'N', - '\u019D': 'N', - '\uA790': 'N', - '\uA7A4': 'N', - '\u01CA': 'NJ', - '\u01CB': 'Nj', - '\u24C4': 'O', - '\uFF2F': 'O', - '\u00D2': 'O', - '\u00D3': 'O', - '\u00D4': 'O', - '\u1ED2': 'O', - '\u1ED0': 'O', - '\u1ED6': 'O', - '\u1ED4': 'O', - '\u00D5': 'O', - '\u1E4C': 'O', - '\u022C': 'O', - '\u1E4E': 'O', - '\u014C': 'O', - '\u1E50': 'O', - '\u1E52': 'O', - '\u014E': 'O', - '\u022E': 'O', - '\u0230': 'O', - '\u00D6': 'O', - '\u022A': 'O', - '\u1ECE': 'O', - '\u0150': 'O', - '\u01D1': 'O', - '\u020C': 'O', - '\u020E': 'O', - '\u01A0': 'O', - '\u1EDC': 'O', - '\u1EDA': 'O', - '\u1EE0': 'O', - '\u1EDE': 'O', - '\u1EE2': 'O', - '\u1ECC': 'O', - '\u1ED8': 'O', - '\u01EA': 'O', - '\u01EC': 'O', - '\u00D8': 'O', - '\u01FE': 'O', - '\u0186': 'O', - '\u019F': 'O', - '\uA74A': 'O', - '\uA74C': 'O', - '\u01A2': 'OI', - '\uA74E': 'OO', - '\u0222': 'OU', - '\u24C5': 'P', - '\uFF30': 'P', - '\u1E54': 'P', - '\u1E56': 'P', - '\u01A4': 'P', - '\u2C63': 'P', - '\uA750': 'P', - '\uA752': 'P', - '\uA754': 'P', - '\u24C6': 'Q', - '\uFF31': 'Q', - '\uA756': 'Q', - '\uA758': 'Q', - '\u024A': 'Q', - '\u24C7': 'R', - '\uFF32': 'R', - '\u0154': 'R', - '\u1E58': 'R', - '\u0158': 'R', - '\u0210': 'R', - '\u0212': 'R', - '\u1E5A': 'R', - '\u1E5C': 'R', - '\u0156': 'R', - '\u1E5E': 'R', - '\u024C': 'R', - '\u2C64': 'R', - '\uA75A': 'R', - '\uA7A6': 'R', - '\uA782': 'R', - '\u24C8': 'S', - '\uFF33': 'S', - '\u1E9E': 'S', - '\u015A': 'S', - '\u1E64': 'S', - '\u015C': 'S', - '\u1E60': 'S', - '\u0160': 'S', - '\u1E66': 'S', - '\u1E62': 'S', - '\u1E68': 'S', - '\u0218': 'S', - '\u015E': 'S', - '\u2C7E': 'S', - '\uA7A8': 'S', - '\uA784': 'S', - '\u24C9': 'T', - '\uFF34': 'T', - '\u1E6A': 'T', - '\u0164': 'T', - '\u1E6C': 'T', - '\u021A': 'T', - '\u0162': 'T', - '\u1E70': 'T', - '\u1E6E': 'T', - '\u0166': 'T', - '\u01AC': 'T', - '\u01AE': 'T', - '\u023E': 'T', - '\uA786': 'T', - '\uA728': 'TZ', - '\u24CA': 'U', - '\uFF35': 'U', - '\u00D9': 'U', - '\u00DA': 'U', - '\u00DB': 'U', - '\u0168': 'U', - '\u1E78': 'U', - '\u016A': 'U', - '\u1E7A': 'U', - '\u016C': 'U', - '\u00DC': 'U', - '\u01DB': 'U', - '\u01D7': 'U', - '\u01D5': 'U', - '\u01D9': 'U', - '\u1EE6': 'U', - '\u016E': 'U', - '\u0170': 'U', - '\u01D3': 'U', - '\u0214': 'U', - '\u0216': 'U', - '\u01AF': 'U', - '\u1EEA': 'U', - '\u1EE8': 'U', - '\u1EEE': 'U', - '\u1EEC': 'U', - '\u1EF0': 'U', - '\u1EE4': 'U', - '\u1E72': 'U', - '\u0172': 'U', - '\u1E76': 'U', - '\u1E74': 'U', - '\u0244': 'U', - '\u24CB': 'V', - '\uFF36': 'V', - '\u1E7C': 'V', - '\u1E7E': 'V', - '\u01B2': 'V', - '\uA75E': 'V', - '\u0245': 'V', - '\uA760': 'VY', - '\u24CC': 'W', - '\uFF37': 'W', - '\u1E80': 'W', - '\u1E82': 'W', - '\u0174': 'W', - '\u1E86': 'W', - '\u1E84': 'W', - '\u1E88': 'W', - '\u2C72': 'W', - '\u24CD': 'X', - '\uFF38': 'X', - '\u1E8A': 'X', - '\u1E8C': 'X', - '\u24CE': 'Y', - '\uFF39': 'Y', - '\u1EF2': 'Y', - '\u00DD': 'Y', - '\u0176': 'Y', - '\u1EF8': 'Y', - '\u0232': 'Y', - '\u1E8E': 'Y', - '\u0178': 'Y', - '\u1EF6': 'Y', - '\u1EF4': 'Y', - '\u01B3': 'Y', - '\u024E': 'Y', - '\u1EFE': 'Y', - '\u24CF': 'Z', - '\uFF3A': 'Z', - '\u0179': 'Z', - '\u1E90': 'Z', - '\u017B': 'Z', - '\u017D': 'Z', - '\u1E92': 'Z', - '\u1E94': 'Z', - '\u01B5': 'Z', - '\u0224': 'Z', - '\u2C7F': 'Z', - '\u2C6B': 'Z', - '\uA762': 'Z', - '\u24D0': 'a', - '\uFF41': 'a', - '\u1E9A': 'a', - '\u00E0': 'a', - '\u00E1': 'a', - '\u00E2': 'a', - '\u1EA7': 'a', - '\u1EA5': 'a', - '\u1EAB': 'a', - '\u1EA9': 'a', - '\u00E3': 'a', - '\u0101': 'a', - '\u0103': 'a', - '\u1EB1': 'a', - '\u1EAF': 'a', - '\u1EB5': 'a', - '\u1EB3': 'a', - '\u0227': 'a', - '\u01E1': 'a', - '\u00E4': 'a', - '\u01DF': 'a', - '\u1EA3': 'a', - '\u00E5': 'a', - '\u01FB': 'a', - '\u01CE': 'a', - '\u0201': 'a', - '\u0203': 'a', - '\u1EA1': 'a', - '\u1EAD': 'a', - '\u1EB7': 'a', - '\u1E01': 'a', - '\u0105': 'a', - '\u2C65': 'a', - '\u0250': 'a', - '\uA733': 'aa', - '\u00E6': 'ae', - '\u01FD': 'ae', - '\u01E3': 'ae', - '\uA735': 'ao', - '\uA737': 'au', - '\uA739': 'av', - '\uA73B': 'av', - '\uA73D': 'ay', - '\u24D1': 'b', - '\uFF42': 'b', - '\u1E03': 'b', - '\u1E05': 'b', - '\u1E07': 'b', - '\u0180': 'b', - '\u0183': 'b', - '\u0253': 'b', - '\u24D2': 'c', - '\uFF43': 'c', - '\u0107': 'c', - '\u0109': 'c', - '\u010B': 'c', - '\u010D': 'c', - '\u00E7': 'c', - '\u1E09': 'c', - '\u0188': 'c', - '\u023C': 'c', - '\uA73F': 'c', - '\u2184': 'c', - '\u24D3': 'd', - '\uFF44': 'd', - '\u1E0B': 'd', - '\u010F': 'd', - '\u1E0D': 'd', - '\u1E11': 'd', - '\u1E13': 'd', - '\u1E0F': 'd', - '\u0111': 'd', - '\u018C': 'd', - '\u0256': 'd', - '\u0257': 'd', - '\uA77A': 'd', - '\u01F3': 'dz', - '\u01C6': 'dz', - '\u24D4': 'e', - '\uFF45': 'e', - '\u00E8': 'e', - '\u00E9': 'e', - '\u00EA': 'e', - '\u1EC1': 'e', - '\u1EBF': 'e', - '\u1EC5': 'e', - '\u1EC3': 'e', - '\u1EBD': 'e', - '\u0113': 'e', - '\u1E15': 'e', - '\u1E17': 'e', - '\u0115': 'e', - '\u0117': 'e', - '\u00EB': 'e', - '\u1EBB': 'e', - '\u011B': 'e', - '\u0205': 'e', - '\u0207': 'e', - '\u1EB9': 'e', - '\u1EC7': 'e', - '\u0229': 'e', - '\u1E1D': 'e', - '\u0119': 'e', - '\u1E19': 'e', - '\u1E1B': 'e', - '\u0247': 'e', - '\u025B': 'e', - '\u01DD': 'e', - '\u24D5': 'f', - '\uFF46': 'f', - '\u1E1F': 'f', - '\u0192': 'f', - '\uA77C': 'f', - '\u24D6': 'g', - '\uFF47': 'g', - '\u01F5': 'g', - '\u011D': 'g', - '\u1E21': 'g', - '\u011F': 'g', - '\u0121': 'g', - '\u01E7': 'g', - '\u0123': 'g', - '\u01E5': 'g', - '\u0260': 'g', - '\uA7A1': 'g', - '\u1D79': 'g', - '\uA77F': 'g', - '\u24D7': 'h', - '\uFF48': 'h', - '\u0125': 'h', - '\u1E23': 'h', - '\u1E27': 'h', - '\u021F': 'h', - '\u1E25': 'h', - '\u1E29': 'h', - '\u1E2B': 'h', - '\u1E96': 'h', - '\u0127': 'h', - '\u2C68': 'h', - '\u2C76': 'h', - '\u0265': 'h', - '\u0195': 'hv', - '\u24D8': 'i', - '\uFF49': 'i', - '\u00EC': 'i', - '\u00ED': 'i', - '\u00EE': 'i', - '\u0129': 'i', - '\u012B': 'i', - '\u012D': 'i', - '\u00EF': 'i', - '\u1E2F': 'i', - '\u1EC9': 'i', - '\u01D0': 'i', - '\u0209': 'i', - '\u020B': 'i', - '\u1ECB': 'i', - '\u012F': 'i', - '\u1E2D': 'i', - '\u0268': 'i', - '\u0131': 'i', - '\u24D9': 'j', - '\uFF4A': 'j', - '\u0135': 'j', - '\u01F0': 'j', - '\u0249': 'j', - '\u24DA': 'k', - '\uFF4B': 'k', - '\u1E31': 'k', - '\u01E9': 'k', - '\u1E33': 'k', - '\u0137': 'k', - '\u1E35': 'k', - '\u0199': 'k', - '\u2C6A': 'k', - '\uA741': 'k', - '\uA743': 'k', - '\uA745': 'k', - '\uA7A3': 'k', - '\u24DB': 'l', - '\uFF4C': 'l', - '\u0140': 'l', - '\u013A': 'l', - '\u013E': 'l', - '\u1E37': 'l', - '\u1E39': 'l', - '\u013C': 'l', - '\u1E3D': 'l', - '\u1E3B': 'l', - '\u017F': 'l', - '\u0142': 'l', - '\u019A': 'l', - '\u026B': 'l', - '\u2C61': 'l', - '\uA749': 'l', - '\uA781': 'l', - '\uA747': 'l', - '\u01C9': 'lj', - '\u24DC': 'm', - '\uFF4D': 'm', - '\u1E3F': 'm', - '\u1E41': 'm', - '\u1E43': 'm', - '\u0271': 'm', - '\u026F': 'm', - '\u24DD': 'n', - '\uFF4E': 'n', - '\u01F9': 'n', - '\u0144': 'n', - '\u00F1': 'n', - '\u1E45': 'n', - '\u0148': 'n', - '\u1E47': 'n', - '\u0146': 'n', - '\u1E4B': 'n', - '\u1E49': 'n', - '\u019E': 'n', - '\u0272': 'n', - '\u0149': 'n', - '\uA791': 'n', - '\uA7A5': 'n', - '\u01CC': 'nj', - '\u24DE': 'o', - '\uFF4F': 'o', - '\u00F2': 'o', - '\u00F3': 'o', - '\u00F4': 'o', - '\u1ED3': 'o', - '\u1ED1': 'o', - '\u1ED7': 'o', - '\u1ED5': 'o', - '\u00F5': 'o', - '\u1E4D': 'o', - '\u022D': 'o', - '\u1E4F': 'o', - '\u014D': 'o', - '\u1E51': 'o', - '\u1E53': 'o', - '\u014F': 'o', - '\u022F': 'o', - '\u0231': 'o', - '\u00F6': 'o', - '\u022B': 'o', - '\u1ECF': 'o', - '\u0151': 'o', - '\u01D2': 'o', - '\u020D': 'o', - '\u020F': 'o', - '\u01A1': 'o', - '\u1EDD': 'o', - '\u1EDB': 'o', - '\u1EE1': 'o', - '\u1EDF': 'o', - '\u1EE3': 'o', - '\u1ECD': 'o', - '\u1ED9': 'o', - '\u01EB': 'o', - '\u01ED': 'o', - '\u00F8': 'o', - '\u01FF': 'o', - '\u0254': 'o', - '\uA74B': 'o', - '\uA74D': 'o', - '\u0275': 'o', - '\u01A3': 'oi', - '\u0223': 'ou', - '\uA74F': 'oo', - '\u24DF': 'p', - '\uFF50': 'p', - '\u1E55': 'p', - '\u1E57': 'p', - '\u01A5': 'p', - '\u1D7D': 'p', - '\uA751': 'p', - '\uA753': 'p', - '\uA755': 'p', - '\u24E0': 'q', - '\uFF51': 'q', - '\u024B': 'q', - '\uA757': 'q', - '\uA759': 'q', - '\u24E1': 'r', - '\uFF52': 'r', - '\u0155': 'r', - '\u1E59': 'r', - '\u0159': 'r', - '\u0211': 'r', - '\u0213': 'r', - '\u1E5B': 'r', - '\u1E5D': 'r', - '\u0157': 'r', - '\u1E5F': 'r', - '\u024D': 'r', - '\u027D': 'r', - '\uA75B': 'r', - '\uA7A7': 'r', - '\uA783': 'r', - '\u24E2': 's', - '\uFF53': 's', - '\u00DF': 's', - '\u015B': 's', - '\u1E65': 's', - '\u015D': 's', - '\u1E61': 's', - '\u0161': 's', - '\u1E67': 's', - '\u1E63': 's', - '\u1E69': 's', - '\u0219': 's', - '\u015F': 's', - '\u023F': 's', - '\uA7A9': 's', - '\uA785': 's', - '\u1E9B': 's', - '\u24E3': 't', - '\uFF54': 't', - '\u1E6B': 't', - '\u1E97': 't', - '\u0165': 't', - '\u1E6D': 't', - '\u021B': 't', - '\u0163': 't', - '\u1E71': 't', - '\u1E6F': 't', - '\u0167': 't', - '\u01AD': 't', - '\u0288': 't', - '\u2C66': 't', - '\uA787': 't', - '\uA729': 'tz', - '\u24E4': 'u', - '\uFF55': 'u', - '\u00F9': 'u', - '\u00FA': 'u', - '\u00FB': 'u', - '\u0169': 'u', - '\u1E79': 'u', - '\u016B': 'u', - '\u1E7B': 'u', - '\u016D': 'u', - '\u00FC': 'u', - '\u01DC': 'u', - '\u01D8': 'u', - '\u01D6': 'u', - '\u01DA': 'u', - '\u1EE7': 'u', - '\u016F': 'u', - '\u0171': 'u', - '\u01D4': 'u', - '\u0215': 'u', - '\u0217': 'u', - '\u01B0': 'u', - '\u1EEB': 'u', - '\u1EE9': 'u', - '\u1EEF': 'u', - '\u1EED': 'u', - '\u1EF1': 'u', - '\u1EE5': 'u', - '\u1E73': 'u', - '\u0173': 'u', - '\u1E77': 'u', - '\u1E75': 'u', - '\u0289': 'u', - '\u24E5': 'v', - '\uFF56': 'v', - '\u1E7D': 'v', - '\u1E7F': 'v', - '\u028B': 'v', - '\uA75F': 'v', - '\u028C': 'v', - '\uA761': 'vy', - '\u24E6': 'w', - '\uFF57': 'w', - '\u1E81': 'w', - '\u1E83': 'w', - '\u0175': 'w', - '\u1E87': 'w', - '\u1E85': 'w', - '\u1E98': 'w', - '\u1E89': 'w', - '\u2C73': 'w', - '\u24E7': 'x', - '\uFF58': 'x', - '\u1E8B': 'x', - '\u1E8D': 'x', - '\u24E8': 'y', - '\uFF59': 'y', - '\u1EF3': 'y', - '\u00FD': 'y', - '\u0177': 'y', - '\u1EF9': 'y', - '\u0233': 'y', - '\u1E8F': 'y', - '\u00FF': 'y', - '\u1EF7': 'y', - '\u1E99': 'y', - '\u1EF5': 'y', - '\u01B4': 'y', - '\u024F': 'y', - '\u1EFF': 'y', - '\u24E9': 'z', - '\uFF5A': 'z', - '\u017A': 'z', - '\u1E91': 'z', - '\u017C': 'z', - '\u017E': 'z', - '\u1E93': 'z', - '\u1E95': 'z', - '\u01B6': 'z', - '\u0225': 'z', - '\u0240': 'z', - '\u2C6C': 'z', - '\uA763': 'z', - '\u0386': '\u0391', - '\u0388': '\u0395', - '\u0389': '\u0397', - '\u038A': '\u0399', - '\u03AA': '\u0399', - '\u038C': '\u039F', - '\u038E': '\u03A5', - '\u03AB': '\u03A5', - '\u038F': '\u03A9', - '\u03AC': '\u03B1', - '\u03AD': '\u03B5', - '\u03AE': '\u03B7', - '\u03AF': '\u03B9', - '\u03CA': '\u03B9', - '\u0390': '\u03B9', - '\u03CC': '\u03BF', - '\u03CD': '\u03C5', - '\u03CB': '\u03C5', - '\u03B0': '\u03C5', - '\u03C9': '\u03C9', - '\u03C2': '\u03C3' - }; - - return diacritics; -}); - -S2.define('select2/data/base',[ - '../utils' -], function (Utils) { - function BaseAdapter ($element, options) { - BaseAdapter.__super__.constructor.call(this); - } - - Utils.Extend(BaseAdapter, Utils.Observable); - - BaseAdapter.prototype.current = function (callback) { - throw new Error('The `current` method must be defined in child classes.'); - }; - - BaseAdapter.prototype.query = function (params, callback) { - throw new Error('The `query` method must be defined in child classes.'); - }; - - BaseAdapter.prototype.bind = function (container, $container) { - // Can be implemented in subclasses - }; - - BaseAdapter.prototype.destroy = function () { - // Can be implemented in subclasses - }; - - BaseAdapter.prototype.generateResultId = function (container, data) { - var id = container.id + '-result-'; - - id += Utils.generateChars(4); - - if (data.id != null) { - id += '-' + data.id.toString(); - } else { - id += '-' + Utils.generateChars(4); - } - return id; - }; - - return BaseAdapter; -}); - -S2.define('select2/data/select',[ - './base', - '../utils', - 'jquery' -], function (BaseAdapter, Utils, $) { - function SelectAdapter ($element, options) { - this.$element = $element; - this.options = options; - - SelectAdapter.__super__.constructor.call(this); - } - - Utils.Extend(SelectAdapter, BaseAdapter); - - SelectAdapter.prototype.current = function (callback) { - var data = []; - var self = this; - - this.$element.find(':selected').each(function () { - var $option = $(this); - - var option = self.item($option); - - data.push(option); - }); - - callback(data); - }; - - SelectAdapter.prototype.select = function (data) { - var self = this; - - data.selected = true; - - // If data.element is a DOM node, use it instead - if ($(data.element).is('option')) { - data.element.selected = true; - - this.$element.trigger('change'); - - return; - } - - if (this.$element.prop('multiple')) { - this.current(function (currentData) { - var val = []; - - data = [data]; - data.push.apply(data, currentData); - - for (var d = 0; d < data.length; d++) { - var id = data[d].id; - - if ($.inArray(id, val) === -1) { - val.push(id); - } - } - - self.$element.val(val); - self.$element.trigger('change'); - }); - } else { - var val = data.id; - - this.$element.val(val); - this.$element.trigger('change'); - } - }; - - SelectAdapter.prototype.unselect = function (data) { - var self = this; - - if (!this.$element.prop('multiple')) { - return; - } - - data.selected = false; - - if ($(data.element).is('option')) { - data.element.selected = false; - - this.$element.trigger('change'); - - return; - } - - this.current(function (currentData) { - var val = []; - - for (var d = 0; d < currentData.length; d++) { - var id = currentData[d].id; - - if (id !== data.id && $.inArray(id, val) === -1) { - val.push(id); - } - } - - self.$element.val(val); - - self.$element.trigger('change'); - }); - }; - - SelectAdapter.prototype.bind = function (container, $container) { - var self = this; - - this.container = container; - - container.on('select', function (params) { - self.select(params.data); - }); - - container.on('unselect', function (params) { - self.unselect(params.data); - }); - }; - - SelectAdapter.prototype.destroy = function () { - // Remove anything added to child elements - this.$element.find('*').each(function () { - // Remove any custom data set by Select2 - $.removeData(this, 'data'); - }); - }; - - SelectAdapter.prototype.query = function (params, callback) { - var data = []; - var self = this; - - var $options = this.$element.children(); - - $options.each(function () { - var $option = $(this); - - if (!$option.is('option') && !$option.is('optgroup')) { - return; - } - - var option = self.item($option); - - var matches = self.matches(params, option); - - if (matches !== null) { - data.push(matches); - } - }); - - callback({ - results: data - }); - }; - - SelectAdapter.prototype.addOptions = function ($options) { - Utils.appendMany(this.$element, $options); - }; - - SelectAdapter.prototype.option = function (data) { - var option; - - if (data.children) { - option = document.createElement('optgroup'); - option.label = data.text; - } else { - option = document.createElement('option'); - - if (option.textContent !== undefined) { - option.textContent = data.text; - } else { - option.innerText = data.text; - } - } - - if (data.id) { - option.value = data.id; - } - - if (data.disabled) { - option.disabled = true; - } - - if (data.selected) { - option.selected = true; - } - - if (data.title) { - option.title = data.title; - } - - var $option = $(option); - - var normalizedData = this._normalizeItem(data); - normalizedData.element = option; - - // Override the option's data with the combined data - $.data(option, 'data', normalizedData); - - return $option; - }; - - SelectAdapter.prototype.item = function ($option) { - var data = {}; - - data = $.data($option[0], 'data'); - - if (data != null) { - return data; - } - - if ($option.is('option')) { - data = { - id: $option.val(), - text: $option.text(), - disabled: $option.prop('disabled'), - selected: $option.prop('selected'), - title: $option.prop('title') - }; - } else if ($option.is('optgroup')) { - data = { - text: $option.prop('label'), - children: [], - title: $option.prop('title') - }; - - var $children = $option.children('option'); - var children = []; - - for (var c = 0; c < $children.length; c++) { - var $child = $($children[c]); - - var child = this.item($child); - - children.push(child); - } - - data.children = children; - } - - data = this._normalizeItem(data); - data.element = $option[0]; - - $.data($option[0], 'data', data); - - return data; - }; - - SelectAdapter.prototype._normalizeItem = function (item) { - if (!$.isPlainObject(item)) { - item = { - id: item, - text: item - }; - } - - item = $.extend({}, { - text: '' - }, item); - - var defaults = { - selected: false, - disabled: false - }; - - if (item.id != null) { - item.id = item.id.toString(); - } - - if (item.text != null) { - item.text = item.text.toString(); - } - - if (item._resultId == null && item.id && this.container != null) { - item._resultId = this.generateResultId(this.container, item); - } - - return $.extend({}, defaults, item); - }; - - SelectAdapter.prototype.matches = function (params, data) { - var matcher = this.options.get('matcher'); - - return matcher(params, data); - }; - - return SelectAdapter; -}); - -S2.define('select2/data/array',[ - './select', - '../utils', - 'jquery' -], function (SelectAdapter, Utils, $) { - function ArrayAdapter ($element, options) { - var data = options.get('data') || []; - - ArrayAdapter.__super__.constructor.call(this, $element, options); - - this.addOptions(this.convertToOptions(data)); - } - - Utils.Extend(ArrayAdapter, SelectAdapter); - - ArrayAdapter.prototype.select = function (data) { - var $option = this.$element.find('option').filter(function (i, elm) { - return elm.value == data.id.toString(); - }); - - if ($option.length === 0) { - $option = this.option(data); - - this.addOptions($option); - } - - ArrayAdapter.__super__.select.call(this, data); - }; - - ArrayAdapter.prototype.convertToOptions = function (data) { - var self = this; - - var $existing = this.$element.find('option'); - var existingIds = $existing.map(function () { - return self.item($(this)).id; - }).get(); - - var $options = []; - - // Filter out all items except for the one passed in the argument - function onlyItem (item) { - return function () { - return $(this).val() == item.id; - }; - } - - for (var d = 0; d < data.length; d++) { - var item = this._normalizeItem(data[d]); - - // Skip items which were pre-loaded, only merge the data - if ($.inArray(item.id, existingIds) >= 0) { - var $existingOption = $existing.filter(onlyItem(item)); - - var existingData = this.item($existingOption); - var newData = $.extend(true, {}, item, existingData); - - var $newOption = this.option(newData); - - $existingOption.replaceWith($newOption); - - continue; - } - - var $option = this.option(item); - - if (item.children) { - var $children = this.convertToOptions(item.children); - - Utils.appendMany($option, $children); - } - - $options.push($option); - } - - return $options; - }; - - return ArrayAdapter; -}); - -S2.define('select2/data/ajax',[ - './array', - '../utils', - 'jquery' -], function (ArrayAdapter, Utils, $) { - function AjaxAdapter ($element, options) { - this.ajaxOptions = this._applyDefaults(options.get('ajax')); - - if (this.ajaxOptions.processResults != null) { - this.processResults = this.ajaxOptions.processResults; - } - - AjaxAdapter.__super__.constructor.call(this, $element, options); - } - - Utils.Extend(AjaxAdapter, ArrayAdapter); - - AjaxAdapter.prototype._applyDefaults = function (options) { - var defaults = { - data: function (params) { - return $.extend({}, params, { - q: params.term - }); - }, - transport: function (params, success, failure) { - var $request = $.ajax(params); - - $request.then(success); - $request.fail(failure); - - return $request; - } - }; - - return $.extend({}, defaults, options, true); - }; - - AjaxAdapter.prototype.processResults = function (results) { - return results; - }; - - AjaxAdapter.prototype.query = function (params, callback) { - var matches = []; - var self = this; - - if (this._request != null) { - // JSONP requests cannot always be aborted - if ($.isFunction(this._request.abort)) { - this._request.abort(); - } - - this._request = null; - } - - var options = $.extend({ - type: 'GET' - }, this.ajaxOptions); - - if (typeof options.url === 'function') { - options.url = options.url.call(this.$element, params); - } - - if (typeof options.data === 'function') { - options.data = options.data.call(this.$element, params); - } - - function request () { - var $request = options.transport(options, function (data) { - var results = self.processResults(data, params); - - if (self.options.get('debug') && window.console && console.error) { - // Check to make sure that the response included a `results` key. - if (!results || !results.results || !$.isArray(results.results)) { - console.error( - 'Select2: The AJAX results did not return an array in the ' + - '`results` key of the response.' - ); - } - } - - callback(results); - }, function () { - // Attempt to detect if a request was aborted - // Only works if the transport exposes a status property - if ($request.status && $request.status === '0') { - return; - } - - self.trigger('results:message', { - message: 'errorLoading' - }); - }); - - self._request = $request; - } - - if (this.ajaxOptions.delay && params.term != null) { - if (this._queryTimeout) { - window.clearTimeout(this._queryTimeout); - } - - this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay); - } else { - request(); - } - }; - - return AjaxAdapter; -}); - -S2.define('select2/data/tags',[ - 'jquery' -], function ($) { - function Tags (decorated, $element, options) { - var tags = options.get('tags'); - - var createTag = options.get('createTag'); - - if (createTag !== undefined) { - this.createTag = createTag; - } - - var insertTag = options.get('insertTag'); - - if (insertTag !== undefined) { - this.insertTag = insertTag; - } - - decorated.call(this, $element, options); - - if ($.isArray(tags)) { - for (var t = 0; t < tags.length; t++) { - var tag = tags[t]; - var item = this._normalizeItem(tag); - - var $option = this.option(item); - - this.$element.append($option); - } - } - } - - Tags.prototype.query = function (decorated, params, callback) { - var self = this; - - this._removeOldTags(); - - if (params.term == null || params.page != null) { - decorated.call(this, params, callback); - return; - } - - function wrapper (obj, child) { - var data = obj.results; - - for (var i = 0; i < data.length; i++) { - var option = data[i]; - - var checkChildren = ( - option.children != null && - !wrapper({ - results: option.children - }, true) - ); - - var checkText = option.text === params.term; - - if (checkText || checkChildren) { - if (child) { - return false; - } - - obj.data = data; - callback(obj); - - return; - } - } - - if (child) { - return true; - } - - var tag = self.createTag(params); - - if (tag != null) { - var $option = self.option(tag); - $option.attr('data-select2-tag', true); - - self.addOptions([$option]); - - self.insertTag(data, tag); - } - - obj.results = data; - - callback(obj); - } - - decorated.call(this, params, wrapper); - }; - - Tags.prototype.createTag = function (decorated, params) { - var term = $.trim(params.term); - - if (term === '') { - return null; - } - - return { - id: term, - text: term - }; - }; - - Tags.prototype.insertTag = function (_, data, tag) { - data.unshift(tag); - }; - - Tags.prototype._removeOldTags = function (_) { - var tag = this._lastTag; - - var $options = this.$element.find('option[data-select2-tag]'); - - $options.each(function () { - if (this.selected) { - return; - } - - $(this).remove(); - }); - }; - - return Tags; -}); - -S2.define('select2/data/tokenizer',[ - 'jquery' -], function ($) { - function Tokenizer (decorated, $element, options) { - var tokenizer = options.get('tokenizer'); - - if (tokenizer !== undefined) { - this.tokenizer = tokenizer; - } - - decorated.call(this, $element, options); - } - - Tokenizer.prototype.bind = function (decorated, container, $container) { - decorated.call(this, container, $container); - - this.$search = container.dropdown.$search || container.selection.$search || - $container.find('.select2-search__field'); - }; - - Tokenizer.prototype.query = function (decorated, params, callback) { - var self = this; - - function createAndSelect (data) { - // Normalize the data object so we can use it for checks - var item = self._normalizeItem(data); - - // Check if the data object already exists as a tag - // Select it if it doesn't - var $existingOptions = self.$element.find('option').filter(function () { - return $(this).val() === item.id; - }); - - // If an existing option wasn't found for it, create the option - if (!$existingOptions.length) { - var $option = self.option(item); - $option.attr('data-select2-tag', true); - - self._removeOldTags(); - self.addOptions([$option]); - } - - // Select the item, now that we know there is an option for it - select(item); - } - - function select (data) { - self.trigger('select', { - data: data - }); - } - - params.term = params.term || ''; - - var tokenData = this.tokenizer(params, this.options, createAndSelect); - - if (tokenData.term !== params.term) { - // Replace the search term if we have the search box - if (this.$search.length) { - this.$search.val(tokenData.term); - this.$search.focus(); - } - - params.term = tokenData.term; - } - - decorated.call(this, params, callback); - }; - - Tokenizer.prototype.tokenizer = function (_, params, options, callback) { - var separators = options.get('tokenSeparators') || []; - var term = params.term; - var i = 0; - - var createTag = this.createTag || function (params) { - return { - id: params.term, - text: params.term - }; - }; - - while (i < term.length) { - var termChar = term[i]; - - if ($.inArray(termChar, separators) === -1) { - i++; - - continue; - } - - var part = term.substr(0, i); - var partParams = $.extend({}, params, { - term: part - }); - - var data = createTag(partParams); - - if (data == null) { - i++; - continue; - } - - callback(data); - - // Reset the term to not include the tokenized portion - term = term.substr(i + 1) || ''; - i = 0; - } - - return { - term: term - }; - }; - - return Tokenizer; -}); - -S2.define('select2/data/minimumInputLength',[ - -], function () { - function MinimumInputLength (decorated, $e, options) { - this.minimumInputLength = options.get('minimumInputLength'); - - decorated.call(this, $e, options); - } - - MinimumInputLength.prototype.query = function (decorated, params, callback) { - params.term = params.term || ''; - - if (params.term.length < this.minimumInputLength) { - this.trigger('results:message', { - message: 'inputTooShort', - args: { - minimum: this.minimumInputLength, - input: params.term, - params: params - } - }); - - return; - } - - decorated.call(this, params, callback); - }; - - return MinimumInputLength; -}); - -S2.define('select2/data/maximumInputLength',[ - -], function () { - function MaximumInputLength (decorated, $e, options) { - this.maximumInputLength = options.get('maximumInputLength'); - - decorated.call(this, $e, options); - } - - MaximumInputLength.prototype.query = function (decorated, params, callback) { - params.term = params.term || ''; - - if (this.maximumInputLength > 0 && - params.term.length > this.maximumInputLength) { - this.trigger('results:message', { - message: 'inputTooLong', - args: { - maximum: this.maximumInputLength, - input: params.term, - params: params - } - }); - - return; - } - - decorated.call(this, params, callback); - }; - - return MaximumInputLength; -}); - -S2.define('select2/data/maximumSelectionLength',[ - -], function (){ - function MaximumSelectionLength (decorated, $e, options) { - this.maximumSelectionLength = options.get('maximumSelectionLength'); - - decorated.call(this, $e, options); - } - - MaximumSelectionLength.prototype.query = - function (decorated, params, callback) { - var self = this; - - this.current(function (currentData) { - var count = currentData != null ? currentData.length : 0; - if (self.maximumSelectionLength > 0 && - count >= self.maximumSelectionLength) { - self.trigger('results:message', { - message: 'maximumSelected', - args: { - maximum: self.maximumSelectionLength - } - }); - return; - } - decorated.call(self, params, callback); - }); - }; - - return MaximumSelectionLength; -}); - -S2.define('select2/dropdown',[ - 'jquery', - './utils' -], function ($, Utils) { - function Dropdown ($element, options) { - this.$element = $element; - this.options = options; - - Dropdown.__super__.constructor.call(this); - } - - Utils.Extend(Dropdown, Utils.Observable); - - Dropdown.prototype.render = function () { - var $dropdown = $( - '<span class="select2-dropdown">' + - '<span class="select2-results"></span>' + - '</span>' - ); - - $dropdown.attr('dir', this.options.get('dir')); - - this.$dropdown = $dropdown; - - return $dropdown; - }; - - Dropdown.prototype.bind = function () { - // Should be implemented in subclasses - }; - - Dropdown.prototype.position = function ($dropdown, $container) { - // Should be implmented in subclasses - }; - - Dropdown.prototype.destroy = function () { - // Remove the dropdown from the DOM - this.$dropdown.remove(); - }; - - return Dropdown; -}); - -S2.define('select2/dropdown/search',[ - 'jquery', - '../utils' -], function ($, Utils) { - function Search () { } - - Search.prototype.render = function (decorated) { - var $rendered = decorated.call(this); - - var $search = $( - '<span class="select2-search select2-search--dropdown">' + - '<input class="select2-search__field" type="search" tabindex="-1"' + - ' autocomplete="off" autocorrect="off" autocapitalize="off"' + - ' spellcheck="false" role="textbox" />' + - '</span>' - ); - - this.$searchContainer = $search; - this.$search = $search.find('input'); - - $rendered.prepend($search); - - return $rendered; - }; - - Search.prototype.bind = function (decorated, container, $container) { - var self = this; - - decorated.call(this, container, $container); - - this.$search.on('keydown', function (evt) { - self.trigger('keypress', evt); - - self._keyUpPrevented = evt.isDefaultPrevented(); - }); - - // Workaround for browsers which do not support the `input` event - // This will prevent double-triggering of events for browsers which support - // both the `keyup` and `input` events. - this.$search.on('input', function (evt) { - // Unbind the duplicated `keyup` event - $(this).off('keyup'); - }); - - this.$search.on('keyup input', function (evt) { - self.handleSearch(evt); - }); - - container.on('open', function () { - self.$search.attr('tabindex', 0); - - self.$search.focus(); - - window.setTimeout(function () { - self.$search.focus(); - }, 0); - }); - - container.on('close', function () { - self.$search.attr('tabindex', -1); - - self.$search.val(''); - }); - - container.on('focus', function () { - if (container.isOpen()) { - self.$search.focus(); - } - }); - - container.on('results:all', function (params) { - if (params.query.term == null || params.query.term === '') { - var showSearch = self.showSearch(params); - - if (showSearch) { - self.$searchContainer.removeClass('select2-search--hide'); - } else { - self.$searchContainer.addClass('select2-search--hide'); - } - } - }); - }; - - Search.prototype.handleSearch = function (evt) { - if (!this._keyUpPrevented) { - var input = this.$search.val(); - - this.trigger('query', { - term: input - }); - } - - this._keyUpPrevented = false; - }; - - Search.prototype.showSearch = function (_, params) { - return true; - }; - - return Search; -}); - -S2.define('select2/dropdown/hidePlaceholder',[ - -], function () { - function HidePlaceholder (decorated, $element, options, dataAdapter) { - this.placeholder = this.normalizePlaceholder(options.get('placeholder')); - - decorated.call(this, $element, options, dataAdapter); - } - - HidePlaceholder.prototype.append = function (decorated, data) { - data.results = this.removePlaceholder(data.results); - - decorated.call(this, data); - }; - - HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) { - if (typeof placeholder === 'string') { - placeholder = { - id: '', - text: placeholder - }; - } - - return placeholder; - }; - - HidePlaceholder.prototype.removePlaceholder = function (_, data) { - var modifiedData = data.slice(0); - - for (var d = data.length - 1; d >= 0; d--) { - var item = data[d]; - - if (this.placeholder.id === item.id) { - modifiedData.splice(d, 1); - } - } - - return modifiedData; - }; - - return HidePlaceholder; -}); - -S2.define('select2/dropdown/infiniteScroll',[ - 'jquery' -], function ($) { - function InfiniteScroll (decorated, $element, options, dataAdapter) { - this.lastParams = {}; - - decorated.call(this, $element, options, dataAdapter); - - this.$loadingMore = this.createLoadingMore(); - this.loading = false; - } - - InfiniteScroll.prototype.append = function (decorated, data) { - this.$loadingMore.remove(); - this.loading = false; - - decorated.call(this, data); - - if (this.showLoadingMore(data)) { - this.$results.append(this.$loadingMore); - } - }; - - InfiniteScroll.prototype.bind = function (decorated, container, $container) { - var self = this; - - decorated.call(this, container, $container); - - container.on('query', function (params) { - self.lastParams = params; - self.loading = true; - }); - - container.on('query:append', function (params) { - self.lastParams = params; - self.loading = true; - }); - - this.$results.on('scroll', function () { - var isLoadMoreVisible = $.contains( - document.documentElement, - self.$loadingMore[0] - ); - - if (self.loading || !isLoadMoreVisible) { - return; - } - - var currentOffset = self.$results.offset().top + - self.$results.outerHeight(false); - var loadingMoreOffset = self.$loadingMore.offset().top + - self.$loadingMore.outerHeight(false); - - if (currentOffset + 50 >= loadingMoreOffset) { - self.loadMore(); - } - }); - }; - - InfiniteScroll.prototype.loadMore = function () { - this.loading = true; - - var params = $.extend({}, {page: 1}, this.lastParams); - - params.page++; - - this.trigger('query:append', params); - }; - - InfiniteScroll.prototype.showLoadingMore = function (_, data) { - return data.pagination && data.pagination.more; - }; - - InfiniteScroll.prototype.createLoadingMore = function () { - var $option = $( - '<li ' + - 'class="select2-results__option select2-results__option--load-more"' + - 'role="treeitem" aria-disabled="true"></li>' - ); - - var message = this.options.get('translations').get('loadingMore'); - - $option.html(message(this.lastParams)); - - return $option; - }; - - return InfiniteScroll; -}); - -S2.define('select2/dropdown/attachBody',[ - 'jquery', - '../utils' -], function ($, Utils) { - function AttachBody (decorated, $element, options) { - this.$dropdownParent = options.get('dropdownParent') || $(document.body); - - decorated.call(this, $element, options); - } - - AttachBody.prototype.bind = function (decorated, container, $container) { - var self = this; - - var setupResultsEvents = false; - - decorated.call(this, container, $container); - - container.on('open', function () { - self._showDropdown(); - self._attachPositioningHandler(container); - - if (!setupResultsEvents) { - setupResultsEvents = true; - - container.on('results:all', function () { - self._positionDropdown(); - self._resizeDropdown(); - }); - - container.on('results:append', function () { - self._positionDropdown(); - self._resizeDropdown(); - }); - } - }); - - container.on('close', function () { - self._hideDropdown(); - self._detachPositioningHandler(container); - }); - - this.$dropdownContainer.on('mousedown', function (evt) { - evt.stopPropagation(); - }); - }; - - AttachBody.prototype.destroy = function (decorated) { - decorated.call(this); - - this.$dropdownContainer.remove(); - }; - - AttachBody.prototype.position = function (decorated, $dropdown, $container) { - // Clone all of the container classes - $dropdown.attr('class', $container.attr('class')); - - $dropdown.removeClass('select2'); - $dropdown.addClass('select2-container--open'); - - $dropdown.css({ - position: 'absolute', - top: -999999 - }); - - this.$container = $container; - }; - - AttachBody.prototype.render = function (decorated) { - var $container = $('<span></span>'); - - var $dropdown = decorated.call(this); - $container.append($dropdown); - - this.$dropdownContainer = $container; - - return $container; - }; - - AttachBody.prototype._hideDropdown = function (decorated) { - this.$dropdownContainer.detach(); - }; - - AttachBody.prototype._attachPositioningHandler = - function (decorated, container) { - var self = this; - - var scrollEvent = 'scroll.select2.' + container.id; - var resizeEvent = 'resize.select2.' + container.id; - var orientationEvent = 'orientationchange.select2.' + container.id; - - var $watchers = this.$container.parents().filter(Utils.hasScroll); - $watchers.each(function () { - $(this).data('select2-scroll-position', { - x: $(this).scrollLeft(), - y: $(this).scrollTop() - }); - }); - - $watchers.on(scrollEvent, function (ev) { - var position = $(this).data('select2-scroll-position'); - $(this).scrollTop(position.y); - }); - - $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent, - function (e) { - self._positionDropdown(); - self._resizeDropdown(); - }); - }; - - AttachBody.prototype._detachPositioningHandler = - function (decorated, container) { - var scrollEvent = 'scroll.select2.' + container.id; - var resizeEvent = 'resize.select2.' + container.id; - var orientationEvent = 'orientationchange.select2.' + container.id; - - var $watchers = this.$container.parents().filter(Utils.hasScroll); - $watchers.off(scrollEvent); - - $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent); - }; - - AttachBody.prototype._positionDropdown = function () { - var $window = $(window); - - var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above'); - var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below'); - - var newDirection = null; - - var offset = this.$container.offset(); - - offset.bottom = offset.top + this.$container.outerHeight(false); - - var container = { - height: this.$container.outerHeight(false) - }; - - container.top = offset.top; - container.bottom = offset.top + container.height; - - var dropdown = { - height: this.$dropdown.outerHeight(false) - }; - - var viewport = { - top: $window.scrollTop(), - bottom: $window.scrollTop() + $window.height() - }; - - var enoughRoomAbove = viewport.top < (offset.top - dropdown.height); - var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height); - - var css = { - left: offset.left, - top: container.bottom - }; - - // Determine what the parent element is to use for calciulating the offset - var $offsetParent = this.$dropdownParent; - - // For statically positoned elements, we need to get the element - // that is determining the offset - if ($offsetParent.css('position') === 'static') { - $offsetParent = $offsetParent.offsetParent(); - } - - var parentOffset = $offsetParent.offset(); - - css.top -= parentOffset.top; - css.left -= parentOffset.left; - - if (!isCurrentlyAbove && !isCurrentlyBelow) { - newDirection = 'below'; - } - - if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) { - newDirection = 'above'; - } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) { - newDirection = 'below'; - } - - if (newDirection == 'above' || - (isCurrentlyAbove && newDirection !== 'below')) { - css.top = container.top - parentOffset.top - dropdown.height; - } - - if (newDirection != null) { - this.$dropdown - .removeClass('select2-dropdown--below select2-dropdown--above') - .addClass('select2-dropdown--' + newDirection); - this.$container - .removeClass('select2-container--below select2-container--above') - .addClass('select2-container--' + newDirection); - } - - this.$dropdownContainer.css(css); - }; - - AttachBody.prototype._resizeDropdown = function () { - var css = { - width: this.$container.outerWidth(false) + 'px' - }; - - if (this.options.get('dropdownAutoWidth')) { - css.minWidth = css.width; - css.position = 'relative'; - css.width = 'auto'; - } - - this.$dropdown.css(css); - }; - - AttachBody.prototype._showDropdown = function (decorated) { - this.$dropdownContainer.appendTo(this.$dropdownParent); - - this._positionDropdown(); - this._resizeDropdown(); - }; - - return AttachBody; -}); - -S2.define('select2/dropdown/minimumResultsForSearch',[ - -], function () { - function countResults (data) { - var count = 0; - - for (var d = 0; d < data.length; d++) { - var item = data[d]; - - if (item.children) { - count += countResults(item.children); - } else { - count++; - } - } - - return count; - } - - function MinimumResultsForSearch (decorated, $element, options, dataAdapter) { - this.minimumResultsForSearch = options.get('minimumResultsForSearch'); - - if (this.minimumResultsForSearch < 0) { - this.minimumResultsForSearch = Infinity; - } - - decorated.call(this, $element, options, dataAdapter); - } - - MinimumResultsForSearch.prototype.showSearch = function (decorated, params) { - if (countResults(params.data.results) < this.minimumResultsForSearch) { - return false; - } - - return decorated.call(this, params); - }; - - return MinimumResultsForSearch; -}); - -S2.define('select2/dropdown/selectOnClose',[ - -], function () { - function SelectOnClose () { } - - SelectOnClose.prototype.bind = function (decorated, container, $container) { - var self = this; - - decorated.call(this, container, $container); - - container.on('close', function (params) { - self._handleSelectOnClose(params); - }); - }; - - SelectOnClose.prototype._handleSelectOnClose = function (_, params) { - if (params && params.originalSelect2Event != null) { - var event = params.originalSelect2Event; - - // Don't select an item if the close event was triggered from a select or - // unselect event - if (event._type === 'select' || event._type === 'unselect') { - return; - } - } - - var $highlightedResults = this.getHighlightedResults(); - - // Only select highlighted results - if ($highlightedResults.length < 1) { - return; - } - - var data = $highlightedResults.data('data'); - - // Don't re-select already selected resulte - if ( - (data.element != null && data.element.selected) || - (data.element == null && data.selected) - ) { - return; - } - - this.trigger('select', { - data: data - }); - }; - - return SelectOnClose; -}); - -S2.define('select2/dropdown/closeOnSelect',[ - -], function () { - function CloseOnSelect () { } - - CloseOnSelect.prototype.bind = function (decorated, container, $container) { - var self = this; - - decorated.call(this, container, $container); - - container.on('select', function (evt) { - self._selectTriggered(evt); - }); - - container.on('unselect', function (evt) { - self._selectTriggered(evt); - }); - }; - - CloseOnSelect.prototype._selectTriggered = function (_, evt) { - var originalEvent = evt.originalEvent; - - // Don't close if the control key is being held - if (originalEvent && originalEvent.ctrlKey) { - return; - } - - this.trigger('close', { - originalEvent: originalEvent, - originalSelect2Event: evt - }); - }; - - return CloseOnSelect; -}); - -S2.define('select2/i18n/en',[],function () { - // English - return { - errorLoading: function () { - return 'The results could not be loaded.'; - }, - inputTooLong: function (args) { - var overChars = args.input.length - args.maximum; - - var message = 'Please delete ' + overChars + ' character'; - - if (overChars != 1) { - message += 's'; - } - - return message; - }, - inputTooShort: function (args) { - var remainingChars = args.minimum - args.input.length; - - var message = 'Please enter ' + remainingChars + ' or more characters'; - - return message; - }, - loadingMore: function () { - return 'Loading more results…'; - }, - maximumSelected: function (args) { - var message = 'You can only select ' + args.maximum + ' item'; - - if (args.maximum != 1) { - message += 's'; - } - - return message; - }, - noResults: function () { - return 'No results found'; - }, - searching: function () { - return 'Searching…'; - } - }; -}); - -S2.define('select2/defaults',[ - 'jquery', - 'require', - - './results', - - './selection/single', - './selection/multiple', - './selection/placeholder', - './selection/allowClear', - './selection/search', - './selection/eventRelay', - - './utils', - './translation', - './diacritics', - - './data/select', - './data/array', - './data/ajax', - './data/tags', - './data/tokenizer', - './data/minimumInputLength', - './data/maximumInputLength', - './data/maximumSelectionLength', - - './dropdown', - './dropdown/search', - './dropdown/hidePlaceholder', - './dropdown/infiniteScroll', - './dropdown/attachBody', - './dropdown/minimumResultsForSearch', - './dropdown/selectOnClose', - './dropdown/closeOnSelect', - - './i18n/en' -], function ($, require, - - ResultsList, - - SingleSelection, MultipleSelection, Placeholder, AllowClear, - SelectionSearch, EventRelay, - - Utils, Translation, DIACRITICS, - - SelectData, ArrayData, AjaxData, Tags, Tokenizer, - MinimumInputLength, MaximumInputLength, MaximumSelectionLength, - - Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll, - AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect, - - EnglishTranslation) { - function Defaults () { - this.reset(); - } - - Defaults.prototype.apply = function (options) { - options = $.extend(true, {}, this.defaults, options); - - if (options.dataAdapter == null) { - if (options.ajax != null) { - options.dataAdapter = AjaxData; - } else if (options.data != null) { - options.dataAdapter = ArrayData; - } else { - options.dataAdapter = SelectData; - } - - if (options.minimumInputLength > 0) { - options.dataAdapter = Utils.Decorate( - options.dataAdapter, - MinimumInputLength - ); - } - - if (options.maximumInputLength > 0) { - options.dataAdapter = Utils.Decorate( - options.dataAdapter, - MaximumInputLength - ); - } - - if (options.maximumSelectionLength > 0) { - options.dataAdapter = Utils.Decorate( - options.dataAdapter, - MaximumSelectionLength - ); - } - - if (options.tags) { - options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags); - } - - if (options.tokenSeparators != null || options.tokenizer != null) { - options.dataAdapter = Utils.Decorate( - options.dataAdapter, - Tokenizer - ); - } - - if (options.query != null) { - var Query = require(options.amdBase + 'compat/query'); - - options.dataAdapter = Utils.Decorate( - options.dataAdapter, - Query - ); - } - - if (options.initSelection != null) { - var InitSelection = require(options.amdBase + 'compat/initSelection'); - - options.dataAdapter = Utils.Decorate( - options.dataAdapter, - InitSelection - ); - } - } - - if (options.resultsAdapter == null) { - options.resultsAdapter = ResultsList; - - if (options.ajax != null) { - options.resultsAdapter = Utils.Decorate( - options.resultsAdapter, - InfiniteScroll - ); - } - - if (options.placeholder != null) { - options.resultsAdapter = Utils.Decorate( - options.resultsAdapter, - HidePlaceholder - ); - } - - if (options.selectOnClose) { - options.resultsAdapter = Utils.Decorate( - options.resultsAdapter, - SelectOnClose - ); - } - } - - if (options.dropdownAdapter == null) { - if (options.multiple) { - options.dropdownAdapter = Dropdown; - } else { - var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch); - - options.dropdownAdapter = SearchableDropdown; - } - - if (options.minimumResultsForSearch !== 0) { - options.dropdownAdapter = Utils.Decorate( - options.dropdownAdapter, - MinimumResultsForSearch - ); - } - - if (options.closeOnSelect) { - options.dropdownAdapter = Utils.Decorate( - options.dropdownAdapter, - CloseOnSelect - ); - } - - if ( - options.dropdownCssClass != null || - options.dropdownCss != null || - options.adaptDropdownCssClass != null - ) { - var DropdownCSS = require(options.amdBase + 'compat/dropdownCss'); - - options.dropdownAdapter = Utils.Decorate( - options.dropdownAdapter, - DropdownCSS - ); - } - - options.dropdownAdapter = Utils.Decorate( - options.dropdownAdapter, - AttachBody - ); - } - - if (options.selectionAdapter == null) { - if (options.multiple) { - options.selectionAdapter = MultipleSelection; - } else { - options.selectionAdapter = SingleSelection; - } - - // Add the placeholder mixin if a placeholder was specified - if (options.placeholder != null) { - options.selectionAdapter = Utils.Decorate( - options.selectionAdapter, - Placeholder - ); - } - - if (options.allowClear) { - options.selectionAdapter = Utils.Decorate( - options.selectionAdapter, - AllowClear - ); - } - - if (options.multiple) { - options.selectionAdapter = Utils.Decorate( - options.selectionAdapter, - SelectionSearch - ); - } - - if ( - options.containerCssClass != null || - options.containerCss != null || - options.adaptContainerCssClass != null - ) { - var ContainerCSS = require(options.amdBase + 'compat/containerCss'); - - options.selectionAdapter = Utils.Decorate( - options.selectionAdapter, - ContainerCSS - ); - } - - options.selectionAdapter = Utils.Decorate( - options.selectionAdapter, - EventRelay - ); - } - - if (typeof options.language === 'string') { - // Check if the language is specified with a region - if (options.language.indexOf('-') > 0) { - // Extract the region information if it is included - var languageParts = options.language.split('-'); - var baseLanguage = languageParts[0]; - - options.language = [options.language, baseLanguage]; - } else { - options.language = [options.language]; - } - } - - if ($.isArray(options.language)) { - var languages = new Translation(); - options.language.push('en'); - - var languageNames = options.language; - - for (var l = 0; l < languageNames.length; l++) { - var name = languageNames[l]; - var language = {}; - - try { - // Try to load it with the original name - language = Translation.loadPath(name); - } catch (e) { - try { - // If we couldn't load it, check if it wasn't the full path - name = this.defaults.amdLanguageBase + name; - language = Translation.loadPath(name); - } catch (ex) { - // The translation could not be loaded at all. Sometimes this is - // because of a configuration problem, other times this can be - // because of how Select2 helps load all possible translation files. - if (options.debug && window.console && console.warn) { - console.warn( - 'Select2: The language file for "' + name + '" could not be ' + - 'automatically loaded. A fallback will be used instead.' - ); - } - - continue; - } - } - - languages.extend(language); - } - - options.translations = languages; - } else { - var baseTranslation = Translation.loadPath( - this.defaults.amdLanguageBase + 'en' - ); - var customTranslation = new Translation(options.language); - - customTranslation.extend(baseTranslation); - - options.translations = customTranslation; - } - - return options; - }; - - Defaults.prototype.reset = function () { - function stripDiacritics (text) { - // Used 'uni range + named function' from http://jsperf.com/diacritics/18 - function match(a) { - return DIACRITICS[a] || a; - } - - return text.replace(/[^\u0000-\u007E]/g, match); - } - - function matcher (params, data) { - // Always return the object if there is nothing to compare - if ($.trim(params.term) === '') { - return data; - } - - // Do a recursive check for options with children - if (data.children && data.children.length > 0) { - // Clone the data object if there are children - // This is required as we modify the object to remove any non-matches - var match = $.extend(true, {}, data); - - // Check each child of the option - for (var c = data.children.length - 1; c >= 0; c--) { - var child = data.children[c]; - - var matches = matcher(params, child); - - // If there wasn't a match, remove the object in the array - if (matches == null) { - match.children.splice(c, 1); - } - } - - // If any children matched, return the new object - if (match.children.length > 0) { - return match; - } - - // If there were no matching children, check just the plain object - return matcher(params, match); - } - - var original = stripDiacritics(data.text).toUpperCase(); - var term = stripDiacritics(params.term).toUpperCase(); - - // Check if the text contains the term - if (original.indexOf(term) > -1) { - return data; - } - - // If it doesn't contain the term, don't return anything - return null; - } - - this.defaults = { - amdBase: './', - amdLanguageBase: './i18n/', - closeOnSelect: true, - debug: false, - dropdownAutoWidth: false, - escapeMarkup: Utils.escapeMarkup, - language: EnglishTranslation, - matcher: matcher, - minimumInputLength: 0, - maximumInputLength: 0, - maximumSelectionLength: 0, - minimumResultsForSearch: 0, - selectOnClose: false, - sorter: function (data) { - return data; - }, - templateResult: function (result) { - return result.text; - }, - templateSelection: function (selection) { - return selection.text; - }, - theme: 'default', - width: 'resolve' - }; - }; - - Defaults.prototype.set = function (key, value) { - var camelKey = $.camelCase(key); - - var data = {}; - data[camelKey] = value; - - var convertedData = Utils._convertData(data); - - $.extend(this.defaults, convertedData); - }; - - var defaults = new Defaults(); - - return defaults; -}); - -S2.define('select2/options',[ - 'require', - 'jquery', - './defaults', - './utils' -], function (require, $, Defaults, Utils) { - function Options (options, $element) { - this.options = options; - - if ($element != null) { - this.fromElement($element); - } - - this.options = Defaults.apply(this.options); - - if ($element && $element.is('input')) { - var InputCompat = require(this.get('amdBase') + 'compat/inputData'); - - this.options.dataAdapter = Utils.Decorate( - this.options.dataAdapter, - InputCompat - ); - } - } - - Options.prototype.fromElement = function ($e) { - var excludedData = ['select2']; - - if (this.options.multiple == null) { - this.options.multiple = $e.prop('multiple'); - } - - if (this.options.disabled == null) { - this.options.disabled = $e.prop('disabled'); - } - - if (this.options.language == null) { - if ($e.prop('lang')) { - this.options.language = $e.prop('lang').toLowerCase(); - } else if ($e.closest('[lang]').prop('lang')) { - this.options.language = $e.closest('[lang]').prop('lang'); - } - } - - if (this.options.dir == null) { - if ($e.prop('dir')) { - this.options.dir = $e.prop('dir'); - } else if ($e.closest('[dir]').prop('dir')) { - this.options.dir = $e.closest('[dir]').prop('dir'); - } else { - this.options.dir = 'ltr'; - } - } - - $e.prop('disabled', this.options.disabled); - $e.prop('multiple', this.options.multiple); - - if ($e.data('select2Tags')) { - if (this.options.debug && window.console && console.warn) { - console.warn( - 'Select2: The `data-select2-tags` attribute has been changed to ' + - 'use the `data-data` and `data-tags="true"` attributes and will be ' + - 'removed in future versions of Select2.' - ); - } - - $e.data('data', $e.data('select2Tags')); - $e.data('tags', true); - } - - if ($e.data('ajaxUrl')) { - if (this.options.debug && window.console && console.warn) { - console.warn( - 'Select2: The `data-ajax-url` attribute has been changed to ' + - '`data-ajax--url` and support for the old attribute will be removed' + - ' in future versions of Select2.' - ); - } - - $e.attr('ajax--url', $e.data('ajaxUrl')); - $e.data('ajax--url', $e.data('ajaxUrl')); - } - - var dataset = {}; - - // Prefer the element's `dataset` attribute if it exists - // jQuery 1.x does not correctly handle data attributes with multiple dashes - if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) { - dataset = $.extend(true, {}, $e[0].dataset, $e.data()); - } else { - dataset = $e.data(); - } - - var data = $.extend(true, {}, dataset); - - data = Utils._convertData(data); - - for (var key in data) { - if ($.inArray(key, excludedData) > -1) { - continue; - } - - if ($.isPlainObject(this.options[key])) { - $.extend(this.options[key], data[key]); - } else { - this.options[key] = data[key]; - } - } - - return this; - }; - - Options.prototype.get = function (key) { - return this.options[key]; - }; - - Options.prototype.set = function (key, val) { - this.options[key] = val; - }; - - return Options; -}); - -S2.define('select2/core',[ - 'jquery', - './options', - './utils', - './keys' -], function ($, Options, Utils, KEYS) { - var Select2 = function ($element, options) { - if ($element.data('select2') != null) { - $element.data('select2').destroy(); - } - - this.$element = $element; - - this.id = this._generateId($element); - - options = options || {}; - - this.options = new Options(options, $element); - - Select2.__super__.constructor.call(this); - - // Set up the tabindex - - var tabindex = $element.attr('tabindex') || 0; - $element.data('old-tabindex', tabindex); - $element.attr('tabindex', '-1'); - - // Set up containers and adapters - - var DataAdapter = this.options.get('dataAdapter'); - this.dataAdapter = new DataAdapter($element, this.options); - - var $container = this.render(); - - this._placeContainer($container); - - var SelectionAdapter = this.options.get('selectionAdapter'); - this.selection = new SelectionAdapter($element, this.options); - this.$selection = this.selection.render(); - - this.selection.position(this.$selection, $container); - - var DropdownAdapter = this.options.get('dropdownAdapter'); - this.dropdown = new DropdownAdapter($element, this.options); - this.$dropdown = this.dropdown.render(); - - this.dropdown.position(this.$dropdown, $container); - - var ResultsAdapter = this.options.get('resultsAdapter'); - this.results = new ResultsAdapter($element, this.options, this.dataAdapter); - this.$results = this.results.render(); - - this.results.position(this.$results, this.$dropdown); - - // Bind events - - var self = this; - - // Bind the container to all of the adapters - this._bindAdapters(); - - // Register any DOM event handlers - this._registerDomEvents(); - - // Register any internal event handlers - this._registerDataEvents(); - this._registerSelectionEvents(); - this._registerDropdownEvents(); - this._registerResultsEvents(); - this._registerEvents(); - - // Set the initial state - this.dataAdapter.current(function (initialData) { - self.trigger('selection:update', { - data: initialData - }); - }); - - // Hide the original select - $element.addClass('select2-hidden-accessible'); - $element.attr('aria-hidden', 'true'); - - // Synchronize any monitored attributes - this._syncAttributes(); - - $element.data('select2', this); - }; - - Utils.Extend(Select2, Utils.Observable); - - Select2.prototype._generateId = function ($element) { - var id = ''; - - if ($element.attr('id') != null) { - id = $element.attr('id'); - } else if ($element.attr('name') != null) { - id = $element.attr('name') + '-' + Utils.generateChars(2); - } else { - id = Utils.generateChars(4); - } - - id = id.replace(/(:|\.|\[|\]|,)/g, ''); - id = 'select2-' + id; - - return id; - }; - - Select2.prototype._placeContainer = function ($container) { - $container.insertAfter(this.$element); - - var width = this._resolveWidth(this.$element, this.options.get('width')); - - if (width != null) { - $container.css('width', width); - } - }; - - Select2.prototype._resolveWidth = function ($element, method) { - var WIDTH = /^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i; - - if (method == 'resolve') { - var styleWidth = this._resolveWidth($element, 'style'); - - if (styleWidth != null) { - return styleWidth; - } - - return this._resolveWidth($element, 'element'); - } - - if (method == 'element') { - var elementWidth = $element.outerWidth(false); - - if (elementWidth <= 0) { - return 'auto'; - } - - return elementWidth + 'px'; - } - - if (method == 'style') { - var style = $element.attr('style'); - - if (typeof(style) !== 'string') { - return null; - } - - var attrs = style.split(';'); - - for (var i = 0, l = attrs.length; i < l; i = i + 1) { - var attr = attrs[i].replace(/\s/g, ''); - var matches = attr.match(WIDTH); - - if (matches !== null && matches.length >= 1) { - return matches[1]; - } - } - - return null; - } - - return method; - }; - - Select2.prototype._bindAdapters = function () { - this.dataAdapter.bind(this, this.$container); - this.selection.bind(this, this.$container); - - this.dropdown.bind(this, this.$container); - this.results.bind(this, this.$container); - }; - - Select2.prototype._registerDomEvents = function () { - var self = this; - - this.$element.on('change.select2', function () { - self.dataAdapter.current(function (data) { - self.trigger('selection:update', { - data: data - }); - }); - }); - - this.$element.on('focus.select2', function (evt) { - self.trigger('focus', evt); - }); - - this._syncA = Utils.bind(this._syncAttributes, this); - this._syncS = Utils.bind(this._syncSubtree, this); - - if (this.$element[0].attachEvent) { - this.$element[0].attachEvent('onpropertychange', this._syncA); - } - - var observer = window.MutationObserver || - window.WebKitMutationObserver || - window.MozMutationObserver - ; - - if (observer != null) { - this._observer = new observer(function (mutations) { - $.each(mutations, self._syncA); - $.each(mutations, self._syncS); - }); - this._observer.observe(this.$element[0], { - attributes: true, - childList: true, - subtree: false - }); - } else if (this.$element[0].addEventListener) { - this.$element[0].addEventListener( - 'DOMAttrModified', - self._syncA, - false - ); - this.$element[0].addEventListener( - 'DOMNodeInserted', - self._syncS, - false - ); - this.$element[0].addEventListener( - 'DOMNodeRemoved', - self._syncS, - false - ); - } - }; - - Select2.prototype._registerDataEvents = function () { - var self = this; - - this.dataAdapter.on('*', function (name, params) { - self.trigger(name, params); - }); - }; - - Select2.prototype._registerSelectionEvents = function () { - var self = this; - var nonRelayEvents = ['toggle', 'focus']; - - this.selection.on('toggle', function () { - self.toggleDropdown(); - }); - - this.selection.on('focus', function (params) { - self.focus(params); - }); - - this.selection.on('*', function (name, params) { - if ($.inArray(name, nonRelayEvents) !== -1) { - return; - } - - self.trigger(name, params); - }); - }; - - Select2.prototype._registerDropdownEvents = function () { - var self = this; - - this.dropdown.on('*', function (name, params) { - self.trigger(name, params); - }); - }; - - Select2.prototype._registerResultsEvents = function () { - var self = this; - - this.results.on('*', function (name, params) { - self.trigger(name, params); - }); - }; - - Select2.prototype._registerEvents = function () { - var self = this; - - this.on('open', function () { - self.$container.addClass('select2-container--open'); - }); - - this.on('close', function () { - self.$container.removeClass('select2-container--open'); - }); - - this.on('enable', function () { - self.$container.removeClass('select2-container--disabled'); - }); - - this.on('disable', function () { - self.$container.addClass('select2-container--disabled'); - }); - - this.on('blur', function () { - self.$container.removeClass('select2-container--focus'); - }); - - this.on('query', function (params) { - if (!self.isOpen()) { - self.trigger('open', {}); - } - - this.dataAdapter.query(params, function (data) { - self.trigger('results:all', { - data: data, - query: params - }); - }); - }); - - this.on('query:append', function (params) { - this.dataAdapter.query(params, function (data) { - self.trigger('results:append', { - data: data, - query: params - }); - }); - }); - - this.on('keypress', function (evt) { - var key = evt.which; - - if (self.isOpen()) { - if (key === KEYS.ESC || key === KEYS.TAB || - (key === KEYS.UP && evt.altKey)) { - self.close(); - - evt.preventDefault(); - } else if (key === KEYS.ENTER) { - self.trigger('results:select', {}); - - evt.preventDefault(); - } else if ((key === KEYS.SPACE && evt.ctrlKey)) { - self.trigger('results:toggle', {}); - - evt.preventDefault(); - } else if (key === KEYS.UP) { - self.trigger('results:previous', {}); - - evt.preventDefault(); - } else if (key === KEYS.DOWN) { - self.trigger('results:next', {}); - - evt.preventDefault(); - } - } else { - if (key === KEYS.ENTER || key === KEYS.SPACE || - (key === KEYS.DOWN && evt.altKey)) { - self.open(); - - evt.preventDefault(); - } - } - }); - }; - - Select2.prototype._syncAttributes = function () { - this.options.set('disabled', this.$element.prop('disabled')); - - if (this.options.get('disabled')) { - if (this.isOpen()) { - this.close(); - } - - this.trigger('disable', {}); - } else { - this.trigger('enable', {}); - } - }; - - Select2.prototype._syncSubtree = function (evt, mutations) { - var changed = false; - var self = this; - - // Ignore any mutation events raised for elements that aren't options or - // optgroups. This handles the case when the select element is destroyed - if ( - evt && evt.target && ( - evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP' - ) - ) { - return; - } - - if (!mutations) { - // If mutation events aren't supported, then we can only assume that the - // change affected the selections - changed = true; - } else if (mutations.addedNodes && mutations.addedNodes.length > 0) { - for (var n = 0; n < mutations.addedNodes.length; n++) { - var node = mutations.addedNodes[n]; - - if (node.selected) { - changed = true; - } - } - } else if (mutations.removedNodes && mutations.removedNodes.length > 0) { - changed = true; - } - - // Only re-pull the data if we think there is a change - if (changed) { - this.dataAdapter.current(function (currentData) { - self.trigger('selection:update', { - data: currentData - }); - }); - } - }; - - /** - * Override the trigger method to automatically trigger pre-events when - * there are events that can be prevented. - */ - Select2.prototype.trigger = function (name, args) { - var actualTrigger = Select2.__super__.trigger; - var preTriggerMap = { - 'open': 'opening', - 'close': 'closing', - 'select': 'selecting', - 'unselect': 'unselecting' - }; - - if (args === undefined) { - args = {}; - } - - if (name in preTriggerMap) { - var preTriggerName = preTriggerMap[name]; - var preTriggerArgs = { - prevented: false, - name: name, - args: args - }; - - actualTrigger.call(this, preTriggerName, preTriggerArgs); - - if (preTriggerArgs.prevented) { - args.prevented = true; - - return; - } - } - - actualTrigger.call(this, name, args); - }; - - Select2.prototype.toggleDropdown = function () { - if (this.options.get('disabled')) { - return; - } - - if (this.isOpen()) { - this.close(); - } else { - this.open(); - } - }; - - Select2.prototype.open = function () { - if (this.isOpen()) { - return; - } - - this.trigger('query', {}); - }; - - Select2.prototype.close = function () { - if (!this.isOpen()) { - return; - } - - this.trigger('close', {}); - }; - - Select2.prototype.isOpen = function () { - return this.$container.hasClass('select2-container--open'); - }; - - Select2.prototype.hasFocus = function () { - return this.$container.hasClass('select2-container--focus'); - }; - - Select2.prototype.focus = function (data) { - // No need to re-trigger focus events if we are already focused - if (this.hasFocus()) { - return; - } - - this.$container.addClass('select2-container--focus'); - this.trigger('focus', {}); - }; - - Select2.prototype.enable = function (args) { - if (this.options.get('debug') && window.console && console.warn) { - console.warn( - 'Select2: The `select2("enable")` method has been deprecated and will' + - ' be removed in later Select2 versions. Use $element.prop("disabled")' + - ' instead.' - ); - } - - if (args == null || args.length === 0) { - args = [true]; - } - - var disabled = !args[0]; - - this.$element.prop('disabled', disabled); - }; - - Select2.prototype.data = function () { - if (this.options.get('debug') && - arguments.length > 0 && window.console && console.warn) { - console.warn( - 'Select2: Data can no longer be set using `select2("data")`. You ' + - 'should consider setting the value instead using `$element.val()`.' - ); - } - - var data = []; - - this.dataAdapter.current(function (currentData) { - data = currentData; - }); - - return data; - }; - - Select2.prototype.val = function (args) { - if (this.options.get('debug') && window.console && console.warn) { - console.warn( - 'Select2: The `select2("val")` method has been deprecated and will be' + - ' removed in later Select2 versions. Use $element.val() instead.' - ); - } - - if (args == null || args.length === 0) { - return this.$element.val(); - } - - var newVal = args[0]; - - if ($.isArray(newVal)) { - newVal = $.map(newVal, function (obj) { - return obj.toString(); - }); - } - - this.$element.val(newVal).trigger('change'); - }; - - Select2.prototype.destroy = function () { - this.$container.remove(); - - if (this.$element[0].detachEvent) { - this.$element[0].detachEvent('onpropertychange', this._syncA); - } - - if (this._observer != null) { - this._observer.disconnect(); - this._observer = null; - } else if (this.$element[0].removeEventListener) { - this.$element[0] - .removeEventListener('DOMAttrModified', this._syncA, false); - this.$element[0] - .removeEventListener('DOMNodeInserted', this._syncS, false); - this.$element[0] - .removeEventListener('DOMNodeRemoved', this._syncS, false); - } - - this._syncA = null; - this._syncS = null; - - this.$element.off('.select2'); - this.$element.attr('tabindex', this.$element.data('old-tabindex')); - - this.$element.removeClass('select2-hidden-accessible'); - this.$element.attr('aria-hidden', 'false'); - this.$element.removeData('select2'); - - this.dataAdapter.destroy(); - this.selection.destroy(); - this.dropdown.destroy(); - this.results.destroy(); - - this.dataAdapter = null; - this.selection = null; - this.dropdown = null; - this.results = null; - }; - - Select2.prototype.render = function () { - var $container = $( - '<span class="select2 select2-container">' + - '<span class="selection"></span>' + - '<span class="dropdown-wrapper" aria-hidden="true"></span>' + - '</span>' - ); - - $container.attr('dir', this.options.get('dir')); - - this.$container = $container; - - this.$container.addClass('select2-container--' + this.options.get('theme')); - - $container.data('element', this.$element); - - return $container; - }; - - return Select2; -}); - -S2.define('jquery-mousewheel',[ - 'jquery' -], function ($) { - // Used to shim jQuery.mousewheel for non-full builds. - return $; -}); - -S2.define('jquery.select2',[ - 'jquery', - 'jquery-mousewheel', - - './select2/core', - './select2/defaults' -], function ($, _, Select2, Defaults) { - if ($.fn.select2 == null) { - // All methods that should return the element - var thisMethods = ['open', 'close', 'destroy']; - - $.fn.select2 = function (options) { - options = options || {}; - - if (typeof options === 'object') { - this.each(function () { - var instanceOptions = $.extend(true, {}, options); - - var instance = new Select2($(this), instanceOptions); - }); - - return this; - } else if (typeof options === 'string') { - var ret; - var args = Array.prototype.slice.call(arguments, 1); - - this.each(function () { - var instance = $(this).data('select2'); - - if (instance == null && window.console && console.error) { - console.error( - 'The select2(\'' + options + '\') method was called on an ' + - 'element that is not using Select2.' - ); - } - - ret = instance[options].apply(instance, args); - }); - - // Check if we should be returning `this` - if ($.inArray(options, thisMethods) > -1) { - return this; - } - - return ret; - } else { - throw new Error('Invalid arguments for Select2: ' + options); - } - }; - } - - if ($.fn.select2.defaults == null) { - $.fn.select2.defaults = Defaults; - } - - return Select2; -}); - - // Return the AMD loader configuration so it can be used outside of this file - return { - define: S2.define, - require: S2.require - }; -}()); - - // Autoload the jQuery bindings - // We know that all of the modules exist above this, so we're safe - var select2 = S2.require('jquery.select2'); - - // Hold the AMD module references on the jQuery function that was just loaded - // This allows Select2 to use the internal loader outside of this file, such - // as in the language files. - jQuery.fn.select2.amd = S2; - - // Return the Select2 instance for anyone who is importing it. - return select2; -})); diff --git a/assets/plugins/select2/select2.min.css b/assets/plugins/select2/select2.min.css deleted file mode 100644 index 76de04d9..00000000 --- a/assets/plugins/select2/select2.min.css +++ /dev/null @@ -1 +0,0 @@ -.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;height:1px !important;margin:-1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb} diff --git a/assets/plugins/select2/select2.min.js b/assets/plugins/select2/select2.min.js deleted file mode 100644 index 43f0a651..00000000 --- a/assets/plugins/select2/select2.min.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){var b=function(){if(a&&a.fn&&a.fn.select2&&a.fn.select2.amd)var b=a.fn.select2.amd;var b;return function(){if(!b||!b.requirejs){b?c=b:b={};var a,c,d;!function(b){function e(a,b){return u.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n=b&&b.split("/"),o=s.map,p=o&&o["*"]||{};if(a&&"."===a.charAt(0))if(b){for(a=a.split("/"),g=a.length-1,s.nodeIdCompat&&w.test(a[g])&&(a[g]=a[g].replace(w,"")),a=n.slice(0,n.length-1).concat(a),k=0;k<a.length;k+=1)if(m=a[k],"."===m)a.splice(k,1),k-=1;else if(".."===m){if(1===k&&(".."===a[2]||".."===a[0]))break;k>0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}else 0===a.indexOf("./")&&(a=a.substring(2));if((n||p)&&o){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),n)for(l=n.length;l>0;l-=1)if(e=o[n.slice(0,l).join("/")],e&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&p&&p[d]&&(i=p[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(a,c){return function(){var d=v.call(arguments,0);return"string"!=typeof d[0]&&1===d.length&&d.push(null),n.apply(b,d.concat([a,c]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){q[a]=b}}function j(a){if(e(r,a)){var c=r[a];delete r[a],t[a]=!0,m.apply(b,c)}if(!e(q,a)&&!e(t,a))throw new Error("No "+a);return q[a]}function k(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function l(a){return function(){return s&&s.config&&s.config[a]||{}}}var m,n,o,p,q={},r={},s={},t={},u=Object.prototype.hasOwnProperty,v=[].slice,w=/\.js$/;o=function(a,b){var c,d=k(a),e=d[0];return a=d[1],e&&(e=f(e,b),c=j(e)),e?a=c&&c.normalize?c.normalize(a,h(b)):f(a,b):(a=f(a,b),d=k(a),e=d[0],a=d[1],e&&(c=j(e))),{f:e?e+"!"+a:a,n:a,pr:e,p:c}},p={require:function(a){return g(a)},exports:function(a){var b=q[a];return"undefined"!=typeof b?b:q[a]={}},module:function(a){return{id:a,uri:"",exports:q[a],config:l(a)}}},m=function(a,c,d,f){var h,k,l,m,n,s,u=[],v=typeof d;if(f=f||a,"undefined"===v||"function"===v){for(c=!c.length&&d.length?["require","exports","module"]:c,n=0;n<c.length;n+=1)if(m=o(c[n],f),k=m.f,"require"===k)u[n]=p.require(a);else if("exports"===k)u[n]=p.exports(a),s=!0;else if("module"===k)h=u[n]=p.module(a);else if(e(q,k)||e(r,k)||e(t,k))u[n]=j(k);else{if(!m.p)throw new Error(a+" missing "+k);m.p.load(m.n,g(f,!0),i(k),{}),u[n]=q[k]}l=d?d.apply(q[a],u):void 0,a&&(h&&h.exports!==b&&h.exports!==q[a]?q[a]=h.exports:l===b&&s||(q[a]=l))}else a&&(q[a]=d)},a=c=n=function(a,c,d,e,f){if("string"==typeof a)return p[a]?p[a](c):j(o(a,c).f);if(!a.splice){if(s=a,s.deps&&n(s.deps,s.callback),!c)return;c.splice?(a=c,c=d,d=null):a=b}return c=c||function(){},"function"==typeof d&&(d=e,e=f),e?m(b,a,c,d):setTimeout(function(){m(b,a,c,d)},4),n},n.config=function(a){return n(a)},a._defined=q,d=function(a,b,c){if("string"!=typeof a)throw new Error("See almond README: incorrect module build, no module name");b.splice||(c=b,b=[]),e(q,a)||e(r,a)||(r[a]=[a,b,c])},d.amd={jQuery:!0}}(),b.requirejs=a,b.require=c,b.define=d}}(),b.define("almond",function(){}),b.define("jquery",[],function(){var b=a||$;return null==b&&console&&console.error&&console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."),b}),b.define("select2/utils",["jquery"],function(a){function b(a){var b=a.prototype,c=[];for(var d in b){var e=b[d];"function"==typeof e&&"constructor"!==d&&c.push(d)}return c}var c={};c.Extend=function(a,b){function c(){this.constructor=a}var d={}.hasOwnProperty;for(var e in b)d.call(b,e)&&(a[e]=b[e]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},c.Decorate=function(a,c){function d(){var b=Array.prototype.unshift,d=c.prototype.constructor.length,e=a.prototype.constructor;d>0&&(b.call(arguments,a.prototype.constructor),e=c.prototype.constructor),e.apply(this,arguments)}function e(){this.constructor=d}var f=b(c),g=b(a);c.displayName=a.displayName,d.prototype=new e;for(var h=0;h<g.length;h++){var i=g[h];d.prototype[i]=a.prototype[i]}for(var j=(function(a){var b=function(){};a in d.prototype&&(b=d.prototype[a]);var e=c.prototype[a];return function(){var a=Array.prototype.unshift;return a.call(arguments,b),e.apply(this,arguments)}}),k=0;k<f.length;k++){var l=f[k];d.prototype[l]=j(l)}return d};var d=function(){this.listeners={}};return d.prototype.on=function(a,b){this.listeners=this.listeners||{},a in this.listeners?this.listeners[a].push(b):this.listeners[a]=[b]},d.prototype.trigger=function(a){var b=Array.prototype.slice,c=b.call(arguments,1);this.listeners=this.listeners||{},null==c&&(c=[]),0===c.length&&c.push({}),c[0]._type=a,a in this.listeners&&this.invoke(this.listeners[a],b.call(arguments,1)),"*"in this.listeners&&this.invoke(this.listeners["*"],arguments)},d.prototype.invoke=function(a,b){for(var c=0,d=a.length;d>c;c++)a[c].apply(this,b)},c.Observable=d,c.generateChars=function(a){for(var b="",c=0;a>c;c++){var d=Math.floor(36*Math.random());b+=d.toString(36)}return b},c.bind=function(a,b){return function(){a.apply(b,arguments)}},c._convertData=function(a){for(var b in a){var c=b.split("-"),d=a;if(1!==c.length){for(var e=0;e<c.length;e++){var f=c[e];f=f.substring(0,1).toLowerCase()+f.substring(1),f in d||(d[f]={}),e==c.length-1&&(d[f]=a[b]),d=d[f]}delete a[b]}}return a},c.hasScroll=function(b,c){var d=a(c),e=c.style.overflowX,f=c.style.overflowY;return e!==f||"hidden"!==f&&"visible"!==f?"scroll"===e||"scroll"===f?!0:d.innerHeight()<c.scrollHeight||d.innerWidth()<c.scrollWidth:!1},c.escapeMarkup=function(a){var b={"\\":"&#92;","&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#47;"};return"string"!=typeof a?a:String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})},c.appendMany=function(b,c){if("1.7"===a.fn.jquery.substr(0,3)){var d=a();a.map(c,function(a){d=d.add(a)}),c=d}b.append(c)},c}),b.define("select2/results",["jquery","./utils"],function(a,b){function c(a,b,d){this.$element=a,this.data=d,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<ul class="select2-results__options" role="tree"></ul>');return this.options.get("multiple")&&b.attr("aria-multiselectable","true"),this.$results=b,b},c.prototype.clear=function(){this.$results.empty()},c.prototype.displayMessage=function(b){var c=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var d=a('<li role="treeitem" aria-live="assertive" class="select2-results__option"></li>'),e=this.options.get("translations").get(b.message);d.append(c(e(b.args))),d[0].className+=" select2-results__message",this.$results.append(d)},c.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},c.prototype.append=function(a){this.hideLoading();var b=[];if(null==a.results||0===a.results.length)return void(0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"}));a.results=this.sort(a.results);for(var c=0;c<a.results.length;c++){var d=a.results[c],e=this.option(d);b.push(e)}this.$results.append(b)},c.prototype.position=function(a,b){var c=b.find(".select2-results");c.append(a)},c.prototype.sort=function(a){var b=this.options.get("sorter");return b(a)},c.prototype.highlightFirstItem=function(){var a=this.$results.find(".select2-results__option[aria-selected]"),b=a.filter("[aria-selected=true]");b.length>0?b.first().trigger("mouseenter"):a.first().trigger("mouseenter"),this.ensureHighlightVisible()},c.prototype.setClasses=function(){var b=this;this.data.current(function(c){var d=a.map(c,function(a){return a.id.toString()}),e=b.$results.find(".select2-results__option[aria-selected]");e.each(function(){var b=a(this),c=a.data(this,"data"),e=""+c.id;null!=c.element&&c.element.selected||null==c.element&&a.inArray(e,d)>-1?b.attr("aria-selected","true"):b.attr("aria-selected","false")})})},c.prototype.showLoading=function(a){this.hideLoading();var b=this.options.get("translations").get("searching"),c={disabled:!0,loading:!0,text:b(a)},d=this.option(c);d.className+=" loading-results",this.$results.prepend(d)},c.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},c.prototype.option=function(b){var c=document.createElement("li");c.className="select2-results__option";var d={role:"treeitem","aria-selected":"false"};b.disabled&&(delete d["aria-selected"],d["aria-disabled"]="true"),null==b.id&&delete d["aria-selected"],null!=b._resultId&&(c.id=b._resultId),b.title&&(c.title=b.title),b.children&&(d.role="group",d["aria-label"]=b.text,delete d["aria-selected"]);for(var e in d){var f=d[e];c.setAttribute(e,f)}if(b.children){var g=a(c),h=document.createElement("strong");h.className="select2-results__group";a(h);this.template(b,h);for(var i=[],j=0;j<b.children.length;j++){var k=b.children[j],l=this.option(k);i.push(l)}var m=a("<ul></ul>",{"class":"select2-results__options select2-results__options--nested"});m.append(i),g.append(h),g.append(m)}else this.template(b,c);return a.data(c,"data",b),c},c.prototype.bind=function(b,c){var d=this,e=b.id+"-results";this.$results.attr("id",e),b.on("results:all",function(a){d.clear(),d.append(a.data),b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("results:append",function(a){d.append(a.data),b.isOpen()&&d.setClasses()}),b.on("query",function(a){d.hideMessages(),d.showLoading(a)}),b.on("select",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("unselect",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("open",function(){d.$results.attr("aria-expanded","true"),d.$results.attr("aria-hidden","false"),d.setClasses(),d.ensureHighlightVisible()}),b.on("close",function(){d.$results.attr("aria-expanded","false"),d.$results.attr("aria-hidden","true"),d.$results.removeAttr("aria-activedescendant")}),b.on("results:toggle",function(){var a=d.getHighlightedResults();0!==a.length&&a.trigger("mouseup")}),b.on("results:select",function(){var a=d.getHighlightedResults();if(0!==a.length){var b=a.data("data");"true"==a.attr("aria-selected")?d.trigger("close",{}):d.trigger("select",{data:b})}}),b.on("results:previous",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a);if(0!==c){var e=c-1;0===a.length&&(e=0);var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top,h=f.offset().top,i=d.$results.scrollTop()+(h-g);0===e?d.$results.scrollTop(0):0>h-g&&d.$results.scrollTop(i)}}),b.on("results:next",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a),e=c+1;if(!(e>=b.length)){var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top+d.$results.outerHeight(!1),h=f.offset().top+f.outerHeight(!1),i=d.$results.scrollTop()+h-g;0===e?d.$results.scrollTop(0):h>g&&d.$results.scrollTop(i)}}),b.on("results:focus",function(a){a.element.addClass("select2-results__option--highlighted")}),b.on("results:message",function(a){d.displayMessage(a)}),a.fn.mousewheel&&this.$results.on("mousewheel",function(a){var b=d.$results.scrollTop(),c=d.$results.get(0).scrollHeight-b+a.deltaY,e=a.deltaY>0&&b-a.deltaY<=0,f=a.deltaY<0&&c<=d.$results.height();e?(d.$results.scrollTop(0),a.preventDefault(),a.stopPropagation()):f&&(d.$results.scrollTop(d.$results.get(0).scrollHeight-d.$results.height()),a.preventDefault(),a.stopPropagation())}),this.$results.on("mouseup",".select2-results__option[aria-selected]",function(b){var c=a(this),e=c.data("data");return"true"===c.attr("aria-selected")?void(d.options.get("multiple")?d.trigger("unselect",{originalEvent:b,data:e}):d.trigger("close",{})):void d.trigger("select",{originalEvent:b,data:e})}),this.$results.on("mouseenter",".select2-results__option[aria-selected]",function(b){var c=a(this).data("data");d.getHighlightedResults().removeClass("select2-results__option--highlighted"),d.trigger("results:focus",{data:c,element:a(this)})})},c.prototype.getHighlightedResults=function(){var a=this.$results.find(".select2-results__option--highlighted");return a},c.prototype.destroy=function(){this.$results.remove()},c.prototype.ensureHighlightVisible=function(){var a=this.getHighlightedResults();if(0!==a.length){var b=this.$results.find("[aria-selected]"),c=b.index(a),d=this.$results.offset().top,e=a.offset().top,f=this.$results.scrollTop()+(e-d),g=e-d;f-=2*a.outerHeight(!1),2>=c?this.$results.scrollTop(0):(g>this.$results.outerHeight()||0>g)&&this.$results.scrollTop(f)}},c.prototype.template=function(b,c){var d=this.options.get("templateResult"),e=this.options.get("escapeMarkup"),f=d(b,c);null==f?c.style.display="none":"string"==typeof f?c.innerHTML=e(f):a(c).append(f)},c}),b.define("select2/keys",[],function(){var a={BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46};return a}),b.define("select2/selection/base",["jquery","../utils","../keys"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,b.Observable),d.prototype.render=function(){var b=a('<span class="select2-selection" role="combobox" aria-haspopup="true" aria-expanded="false"></span>');return this._tabindex=0,null!=this.$element.data("old-tabindex")?this._tabindex=this.$element.data("old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),b.attr("title",this.$element.attr("title")),b.attr("tabindex",this._tabindex),this.$selection=b,b},d.prototype.bind=function(a,b){var d=this,e=(a.id+"-container",a.id+"-results");this.container=a,this.$selection.on("focus",function(a){d.trigger("focus",a)}),this.$selection.on("blur",function(a){d._handleBlur(a)}),this.$selection.on("keydown",function(a){d.trigger("keypress",a),a.which===c.SPACE&&a.preventDefault()}),a.on("results:focus",function(a){d.$selection.attr("aria-activedescendant",a.data._resultId)}),a.on("selection:update",function(a){d.update(a.data)}),a.on("open",function(){d.$selection.attr("aria-expanded","true"),d.$selection.attr("aria-owns",e),d._attachCloseHandler(a)}),a.on("close",function(){d.$selection.attr("aria-expanded","false"),d.$selection.removeAttr("aria-activedescendant"),d.$selection.removeAttr("aria-owns"),d.$selection.focus(),d._detachCloseHandler(a)}),a.on("enable",function(){d.$selection.attr("tabindex",d._tabindex)}),a.on("disable",function(){d.$selection.attr("tabindex","-1")})},d.prototype._handleBlur=function(b){var c=this;window.setTimeout(function(){document.activeElement==c.$selection[0]||a.contains(c.$selection[0],document.activeElement)||c.trigger("blur",b)},1)},d.prototype._attachCloseHandler=function(b){a(document.body).on("mousedown.select2."+b.id,function(b){var c=a(b.target),d=c.closest(".select2"),e=a(".select2.select2-container--open");e.each(function(){var b=a(this);if(this!=d[0]){var c=b.data("element");c.select2("close")}})})},d.prototype._detachCloseHandler=function(b){a(document.body).off("mousedown.select2."+b.id)},d.prototype.position=function(a,b){var c=b.find(".selection");c.append(a)},d.prototype.destroy=function(){this._detachCloseHandler(this.container)},d.prototype.update=function(a){throw new Error("The `update` method must be defined in child classes.")},d}),b.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(a,b,c,d){function e(){e.__super__.constructor.apply(this,arguments)}return c.Extend(e,b),e.prototype.render=function(){var a=e.__super__.render.call(this);return a.addClass("select2-selection--single"),a.html('<span class="select2-selection__rendered"></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span>'),a},e.prototype.bind=function(a,b){var c=this;e.__super__.bind.apply(this,arguments);var d=a.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",d),this.$selection.attr("aria-labelledby",d),this.$selection.on("mousedown",function(a){1===a.which&&c.trigger("toggle",{originalEvent:a})}),this.$selection.on("focus",function(a){}),this.$selection.on("blur",function(a){}),a.on("focus",function(b){a.isOpen()||c.$selection.focus()}),a.on("selection:update",function(a){c.update(a.data)})},e.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},e.prototype.display=function(a,b){var c=this.options.get("templateSelection"),d=this.options.get("escapeMarkup");return d(c(a,b))},e.prototype.selectionContainer=function(){return a("<span></span>")},e.prototype.update=function(a){if(0===a.length)return void this.clear();var b=a[0],c=this.$selection.find(".select2-selection__rendered"),d=this.display(b,c);c.empty().append(d),c.prop("title",b.title||b.text)},e}),b.define("select2/selection/multiple",["jquery","./base","../utils"],function(a,b,c){function d(a,b){d.__super__.constructor.apply(this,arguments)}return c.Extend(d,b),d.prototype.render=function(){var a=d.__super__.render.call(this);return a.addClass("select2-selection--multiple"),a.html('<ul class="select2-selection__rendered"></ul>'),a},d.prototype.bind=function(b,c){var e=this;d.__super__.bind.apply(this,arguments),this.$selection.on("click",function(a){e.trigger("toggle",{originalEvent:a})}),this.$selection.on("click",".select2-selection__choice__remove",function(b){if(!e.options.get("disabled")){var c=a(this),d=c.parent(),f=d.data("data");e.trigger("unselect",{originalEvent:b,data:f})}})},d.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},d.prototype.display=function(a,b){var c=this.options.get("templateSelection"),d=this.options.get("escapeMarkup");return d(c(a,b))},d.prototype.selectionContainer=function(){var b=a('<li class="select2-selection__choice"><span class="select2-selection__choice__remove" role="presentation">&times;</span></li>');return b},d.prototype.update=function(a){if(this.clear(),0!==a.length){for(var b=[],d=0;d<a.length;d++){var e=a[d],f=this.selectionContainer(),g=this.display(e,f);f.append(g),f.prop("title",e.title||e.text),f.data("data",e),b.push(f)}var h=this.$selection.find(".select2-selection__rendered");c.appendMany(h,b)}},d}),b.define("select2/selection/placeholder",["../utils"],function(a){function b(a,b,c){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c)}return b.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},b.prototype.createPlaceholder=function(a,b){var c=this.selectionContainer();return c.html(this.display(b)),c.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"),c},b.prototype.update=function(a,b){var c=1==b.length&&b[0].id!=this.placeholder.id,d=b.length>1;if(d||c)return a.call(this,b);this.clear();var e=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(e)},b}),b.define("select2/selection/allowClear",["jquery","../keys"],function(a,b){function c(){}return c.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),null==this.placeholder&&this.options.get("debug")&&window.console&&console.error&&console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."),this.$selection.on("mousedown",".select2-selection__clear",function(a){d._handleClear(a)}),b.on("keypress",function(a){d._handleKeyboardClear(a,b)})},c.prototype._handleClear=function(a,b){if(!this.options.get("disabled")){var c=this.$selection.find(".select2-selection__clear");if(0!==c.length){b.stopPropagation();for(var d=c.data("data"),e=0;e<d.length;e++){var f={data:d[e]};if(this.trigger("unselect",f),f.prevented)return}this.$element.val(this.placeholder.id).trigger("change"),this.trigger("toggle",{})}}},c.prototype._handleKeyboardClear=function(a,c,d){d.isOpen()||(c.which==b.DELETE||c.which==b.BACKSPACE)&&this._handleClear(c)},c.prototype.update=function(b,c){if(b.call(this,c),!(this.$selection.find(".select2-selection__placeholder").length>0||0===c.length)){var d=a('<span class="select2-selection__clear">&times;</span>');d.data("data",c),this.$selection.find(".select2-selection__rendered").prepend(d)}},c}),b.define("select2/selection/search",["jquery","../utils","../keys"],function(a,b,c){function d(a,b,c){a.call(this,b,c)}return d.prototype.render=function(b){var c=a('<li class="select2-search select2-search--inline"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" aria-autocomplete="list" /></li>');this.$searchContainer=c,this.$search=c.find("input");var d=b.call(this);return this._transferTabIndex(),d},d.prototype.bind=function(a,b,d){var e=this;a.call(this,b,d),b.on("open",function(){e.$search.trigger("focus")}),b.on("close",function(){e.$search.val(""),e.$search.removeAttr("aria-activedescendant"),e.$search.trigger("focus")}),b.on("enable",function(){e.$search.prop("disabled",!1),e._transferTabIndex()}),b.on("disable",function(){e.$search.prop("disabled",!0)}),b.on("focus",function(a){e.$search.trigger("focus")}),b.on("results:focus",function(a){e.$search.attr("aria-activedescendant",a.id)}),this.$selection.on("focusin",".select2-search--inline",function(a){e.trigger("focus",a)}),this.$selection.on("focusout",".select2-search--inline",function(a){e._handleBlur(a)}),this.$selection.on("keydown",".select2-search--inline",function(a){a.stopPropagation(),e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented();var b=a.which;if(b===c.BACKSPACE&&""===e.$search.val()){var d=e.$searchContainer.prev(".select2-selection__choice");if(d.length>0){var f=d.data("data");e.searchRemoveChoice(f),a.preventDefault()}}});var f=document.documentMode,g=f&&11>=f;this.$selection.on("input.searchcheck",".select2-search--inline",function(a){return g?void e.$selection.off("input.search input.searchcheck"):void e.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".select2-search--inline",function(a){if(g&&"input"===a.type)return void e.$selection.off("input.search input.searchcheck");var b=a.which;b!=c.SHIFT&&b!=c.CTRL&&b!=c.ALT&&b!=c.TAB&&e.handleSearch(a)})},d.prototype._transferTabIndex=function(a){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},d.prototype.createPlaceholder=function(a,b){this.$search.attr("placeholder",b.text)},d.prototype.update=function(a,b){var c=this.$search[0]==document.activeElement;this.$search.attr("placeholder",""),a.call(this,b),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch(),c&&this.$search.focus()},d.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},d.prototype.searchRemoveChoice=function(a,b){this.trigger("unselect",{data:b}),this.$search.val(b.text),this.handleSearch()},d.prototype.resizeSearch=function(){this.$search.css("width","25px");var a="";if(""!==this.$search.attr("placeholder"))a=this.$selection.find(".select2-selection__rendered").innerWidth();else{var b=this.$search.val().length+1;a=.75*b+"em"}this.$search.css("width",a)},d}),b.define("select2/selection/eventRelay",["jquery"],function(a){function b(){}return b.prototype.bind=function(b,c,d){var e=this,f=["open","opening","close","closing","select","selecting","unselect","unselecting"],g=["opening","closing","selecting","unselecting"];b.call(this,c,d),c.on("*",function(b,c){if(-1!==a.inArray(b,f)){c=c||{};var d=a.Event("select2:"+b,{params:c});e.$element.trigger(d),-1!==a.inArray(b,g)&&(c.prevented=d.isDefaultPrevented())}})},b}),b.define("select2/translation",["jquery","require"],function(a,b){function c(a){this.dict=a||{}}return c.prototype.all=function(){return this.dict},c.prototype.get=function(a){return this.dict[a]},c.prototype.extend=function(b){this.dict=a.extend({},b.all(),this.dict)},c._cache={},c.loadPath=function(a){if(!(a in c._cache)){var d=b(a);c._cache[a]=d}return new c(c._cache[a])},c}),b.define("select2/diacritics",[],function(){var a={"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ω":"ω","ς":"σ"};return a}),b.define("select2/data/base",["../utils"],function(a){function b(a,c){b.__super__.constructor.call(this)}return a.Extend(b,a.Observable),b.prototype.current=function(a){throw new Error("The `current` method must be defined in child classes.")},b.prototype.query=function(a,b){throw new Error("The `query` method must be defined in child classes.")},b.prototype.bind=function(a,b){},b.prototype.destroy=function(){},b.prototype.generateResultId=function(b,c){var d=b.id+"-result-";return d+=a.generateChars(4),d+=null!=c.id?"-"+c.id.toString():"-"+a.generateChars(4)},b}),b.define("select2/data/select",["./base","../utils","jquery"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,a),d.prototype.current=function(a){var b=[],d=this;this.$element.find(":selected").each(function(){var a=c(this),e=d.item(a);b.push(e)}),a(b)},d.prototype.select=function(a){var b=this;if(a.selected=!0,c(a.element).is("option"))return a.element.selected=!0,void this.$element.trigger("change"); -if(this.$element.prop("multiple"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f<a.length;f++){var g=a[f].id;-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")});else{var d=a.id;this.$element.val(d),this.$element.trigger("change")}},d.prototype.unselect=function(a){var b=this;if(this.$element.prop("multiple"))return a.selected=!1,c(a.element).is("option")?(a.element.selected=!1,void this.$element.trigger("change")):void this.current(function(d){for(var e=[],f=0;f<d.length;f++){var g=d[f].id;g!==a.id&&-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")})},d.prototype.bind=function(a,b){var c=this;this.container=a,a.on("select",function(a){c.select(a.data)}),a.on("unselect",function(a){c.unselect(a.data)})},d.prototype.destroy=function(){this.$element.find("*").each(function(){c.removeData(this,"data")})},d.prototype.query=function(a,b){var d=[],e=this,f=this.$element.children();f.each(function(){var b=c(this);if(b.is("option")||b.is("optgroup")){var f=e.item(b),g=e.matches(a,f);null!==g&&d.push(g)}}),b({results:d})},d.prototype.addOptions=function(a){b.appendMany(this.$element,a)},d.prototype.option=function(a){var b;a.children?(b=document.createElement("optgroup"),b.label=a.text):(b=document.createElement("option"),void 0!==b.textContent?b.textContent=a.text:b.innerText=a.text),a.id&&(b.value=a.id),a.disabled&&(b.disabled=!0),a.selected&&(b.selected=!0),a.title&&(b.title=a.title);var d=c(b),e=this._normalizeItem(a);return e.element=b,c.data(b,"data",e),d},d.prototype.item=function(a){var b={};if(b=c.data(a[0],"data"),null!=b)return b;if(a.is("option"))b={id:a.val(),text:a.text(),disabled:a.prop("disabled"),selected:a.prop("selected"),title:a.prop("title")};else if(a.is("optgroup")){b={text:a.prop("label"),children:[],title:a.prop("title")};for(var d=a.children("option"),e=[],f=0;f<d.length;f++){var g=c(d[f]),h=this.item(g);e.push(h)}b.children=e}return b=this._normalizeItem(b),b.element=a[0],c.data(a[0],"data",b),b},d.prototype._normalizeItem=function(a){c.isPlainObject(a)||(a={id:a,text:a}),a=c.extend({},{text:""},a);var b={selected:!1,disabled:!1};return null!=a.id&&(a.id=a.id.toString()),null!=a.text&&(a.text=a.text.toString()),null==a._resultId&&a.id&&null!=this.container&&(a._resultId=this.generateResultId(this.container,a)),c.extend({},b,a)},d.prototype.matches=function(a,b){var c=this.options.get("matcher");return c(a,b)},d}),b.define("select2/data/array",["./select","../utils","jquery"],function(a,b,c){function d(a,b){var c=b.get("data")||[];d.__super__.constructor.call(this,a,b),this.addOptions(this.convertToOptions(c))}return b.Extend(d,a),d.prototype.select=function(a){var b=this.$element.find("option").filter(function(b,c){return c.value==a.id.toString()});0===b.length&&(b=this.option(a),this.addOptions(b)),d.__super__.select.call(this,a)},d.prototype.convertToOptions=function(a){function d(a){return function(){return c(this).val()==a.id}}for(var e=this,f=this.$element.find("option"),g=f.map(function(){return e.item(c(this)).id}).get(),h=[],i=0;i<a.length;i++){var j=this._normalizeItem(a[i]);if(c.inArray(j.id,g)>=0){var k=f.filter(d(j)),l=this.item(k),m=c.extend(!0,{},j,l),n=this.option(m);k.replaceWith(n)}else{var o=this.option(j);if(j.children){var p=this.convertToOptions(j.children);b.appendMany(o,p)}h.push(o)}}return h},d}),b.define("select2/data/ajax",["./array","../utils","jquery"],function(a,b,c){function d(a,b){this.ajaxOptions=this._applyDefaults(b.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),d.__super__.constructor.call(this,a,b)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return c.extend({},a,{q:a.term})},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("debug")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),b(f)},function(){d.status&&"0"===d.status||e.trigger("results:message",{message:"errorLoading"})});e._request=d}var e=this;null!=this._request&&(c.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var f=c.extend({type:"GET"},this.ajaxOptions);"function"==typeof f.url&&(f.url=f.url.call(this.$element,a)),"function"==typeof f.data&&(f.data=f.data.call(this.$element,a)),this.ajaxOptions.delay&&null!=a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),b.define("select2/data/tags",["jquery"],function(a){function b(b,c,d){var e=d.get("tags"),f=d.get("createTag");void 0!==f&&(this.createTag=f);var g=d.get("insertTag");if(void 0!==g&&(this.insertTag=g),b.call(this,c,d),a.isArray(e))for(var h=0;h<e.length;h++){var i=e[h],j=this._normalizeItem(i),k=this.option(j);this.$element.append(k)}}return b.prototype.query=function(a,b,c){function d(a,f){for(var g=a.results,h=0;h<g.length;h++){var i=g[h],j=null!=i.children&&!d({results:i.children},!0),k=i.text===b.term;if(k||j)return f?!1:(a.data=g,void c(a))}if(f)return!0;var l=e.createTag(b);if(null!=l){var m=e.option(l);m.attr("data-select2-tag",!0),e.addOptions([m]),e.insertTag(g,l)}a.results=g,c(a)}var e=this;return this._removeOldTags(),null==b.term||null!=b.page?void a.call(this,b,c):void a.call(this,b,d)},b.prototype.createTag=function(b,c){var d=a.trim(c.term);return""===d?null:{id:d,text:d}},b.prototype.insertTag=function(a,b,c){b.unshift(c)},b.prototype._removeOldTags=function(b){var c=(this._lastTag,this.$element.find("option[data-select2-tag]"));c.each(function(){this.selected||a(this).remove()})},b}),b.define("select2/data/tokenizer",["jquery"],function(a){function b(a,b,c){var d=c.get("tokenizer");void 0!==d&&(this.tokenizer=d),a.call(this,b,c)}return b.prototype.bind=function(a,b,c){a.call(this,b,c),this.$search=b.dropdown.$search||b.selection.$search||c.find(".select2-search__field")},b.prototype.query=function(b,c,d){function e(b){var c=g._normalizeItem(b),d=g.$element.find("option").filter(function(){return a(this).val()===c.id});if(!d.length){var e=g.option(c);e.attr("data-select2-tag",!0),g._removeOldTags(),g.addOptions([e])}f(c)}function f(a){g.trigger("select",{data:a})}var g=this;c.term=c.term||"";var h=this.tokenizer(c,this.options,e);h.term!==c.term&&(this.$search.length&&(this.$search.val(h.term),this.$search.focus()),c.term=h.term),b.call(this,c,d)},b.prototype.tokenizer=function(b,c,d,e){for(var f=d.get("tokenSeparators")||[],g=c.term,h=0,i=this.createTag||function(a){return{id:a.term,text:a.term}};h<g.length;){var j=g[h];if(-1!==a.inArray(j,f)){var k=g.substr(0,h),l=a.extend({},c,{term:k}),m=i(l);null!=m?(e(m),g=g.substr(h+1)||"",h=0):h++}else h++}return{term:g}},b}),b.define("select2/data/minimumInputLength",[],function(){function a(a,b,c){this.minimumInputLength=c.get("minimumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){return b.term=b.term||"",b.term.length<this.minimumInputLength?void this.trigger("results:message",{message:"inputTooShort",args:{minimum:this.minimumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),b.define("select2/data/maximumInputLength",[],function(){function a(a,b,c){this.maximumInputLength=c.get("maximumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){return b.term=b.term||"",this.maximumInputLength>0&&b.term.length>this.maximumInputLength?void this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),b.define("select2/data/maximumSelectionLength",[],function(){function a(a,b,c){this.maximumSelectionLength=c.get("maximumSelectionLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){var d=this;this.current(function(e){var f=null!=e?e.length:0;return d.maximumSelectionLength>0&&f>=d.maximumSelectionLength?void d.trigger("results:message",{message:"maximumSelected",args:{maximum:d.maximumSelectionLength}}):void a.call(d,b,c)})},a}),b.define("select2/dropdown",["jquery","./utils"],function(a,b){function c(a,b){this.$element=a,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<span class="select2-dropdown"><span class="select2-results"></span></span>');return b.attr("dir",this.options.get("dir")),this.$dropdown=b,b},c.prototype.bind=function(){},c.prototype.position=function(a,b){},c.prototype.destroy=function(){this.$dropdown.remove()},c}),b.define("select2/dropdown/search",["jquery","../utils"],function(a,b){function c(){}return c.prototype.render=function(b){var c=b.call(this),d=a('<span class="select2-search select2-search--dropdown"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" /></span>');return this.$searchContainer=d,this.$search=d.find("input"),c.prepend(d),c},c.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),this.$search.on("keydown",function(a){e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented()}),this.$search.on("input",function(b){a(this).off("keyup")}),this.$search.on("keyup input",function(a){e.handleSearch(a)}),c.on("open",function(){e.$search.attr("tabindex",0),e.$search.focus(),window.setTimeout(function(){e.$search.focus()},0)}),c.on("close",function(){e.$search.attr("tabindex",-1),e.$search.val("")}),c.on("focus",function(){c.isOpen()&&e.$search.focus()}),c.on("results:all",function(a){if(null==a.query.term||""===a.query.term){var b=e.showSearch(a);b?e.$searchContainer.removeClass("select2-search--hide"):e.$searchContainer.addClass("select2-search--hide")}})},c.prototype.handleSearch=function(a){if(!this._keyUpPrevented){var b=this.$search.val();this.trigger("query",{term:b})}this._keyUpPrevented=!1},c.prototype.showSearch=function(a,b){return!0},c}),b.define("select2/dropdown/hidePlaceholder",[],function(){function a(a,b,c,d){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c,d)}return a.prototype.append=function(a,b){b.results=this.removePlaceholder(b.results),a.call(this,b)},a.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},a.prototype.removePlaceholder=function(a,b){for(var c=b.slice(0),d=b.length-1;d>=0;d--){var e=b[d];this.placeholder.id===e.id&&c.splice(d,1)}return c},a}),b.define("select2/dropdown/infiniteScroll",["jquery"],function(a){function b(a,b,c,d){this.lastParams={},a.call(this,b,c,d),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return b.prototype.append=function(a,b){this.$loadingMore.remove(),this.loading=!1,a.call(this,b),this.showLoadingMore(b)&&this.$results.append(this.$loadingMore)},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),c.on("query",function(a){e.lastParams=a,e.loading=!0}),c.on("query:append",function(a){e.lastParams=a,e.loading=!0}),this.$results.on("scroll",function(){var b=a.contains(document.documentElement,e.$loadingMore[0]);if(!e.loading&&b){var c=e.$results.offset().top+e.$results.outerHeight(!1),d=e.$loadingMore.offset().top+e.$loadingMore.outerHeight(!1);c+50>=d&&e.loadMore()}})},b.prototype.loadMore=function(){this.loading=!0;var b=a.extend({},{page:1},this.lastParams);b.page++,this.trigger("query:append",b)},b.prototype.showLoadingMore=function(a,b){return b.pagination&&b.pagination.more},b.prototype.createLoadingMore=function(){var b=a('<li class="select2-results__option select2-results__option--load-more"role="treeitem" aria-disabled="true"></li>'),c=this.options.get("translations").get("loadingMore");return b.html(c(this.lastParams)),b},b}),b.define("select2/dropdown/attachBody",["jquery","../utils"],function(a,b){function c(b,c,d){this.$dropdownParent=d.get("dropdownParent")||a(document.body),b.call(this,c,d)}return c.prototype.bind=function(a,b,c){var d=this,e=!1;a.call(this,b,c),b.on("open",function(){d._showDropdown(),d._attachPositioningHandler(b),e||(e=!0,b.on("results:all",function(){d._positionDropdown(),d._resizeDropdown()}),b.on("results:append",function(){d._positionDropdown(),d._resizeDropdown()}))}),b.on("close",function(){d._hideDropdown(),d._detachPositioningHandler(b)}),this.$dropdownContainer.on("mousedown",function(a){a.stopPropagation()})},c.prototype.destroy=function(a){a.call(this),this.$dropdownContainer.remove()},c.prototype.position=function(a,b,c){b.attr("class",c.attr("class")),b.removeClass("select2"),b.addClass("select2-container--open"),b.css({position:"absolute",top:-999999}),this.$container=c},c.prototype.render=function(b){var c=a("<span></span>"),d=b.call(this);return c.append(d),this.$dropdownContainer=c,c},c.prototype._hideDropdown=function(a){this.$dropdownContainer.detach()},c.prototype._attachPositioningHandler=function(c,d){var e=this,f="scroll.select2."+d.id,g="resize.select2."+d.id,h="orientationchange.select2."+d.id,i=this.$container.parents().filter(b.hasScroll);i.each(function(){a(this).data("select2-scroll-position",{x:a(this).scrollLeft(),y:a(this).scrollTop()})}),i.on(f,function(b){var c=a(this).data("select2-scroll-position");a(this).scrollTop(c.y)}),a(window).on(f+" "+g+" "+h,function(a){e._positionDropdown(),e._resizeDropdown()})},c.prototype._detachPositioningHandler=function(c,d){var e="scroll.select2."+d.id,f="resize.select2."+d.id,g="orientationchange.select2."+d.id,h=this.$container.parents().filter(b.hasScroll);h.off(e),a(window).off(e+" "+f+" "+g)},c.prototype._positionDropdown=function(){var b=a(window),c=this.$dropdown.hasClass("select2-dropdown--above"),d=this.$dropdown.hasClass("select2-dropdown--below"),e=null,f=this.$container.offset();f.bottom=f.top+this.$container.outerHeight(!1);var g={height:this.$container.outerHeight(!1)};g.top=f.top,g.bottom=f.top+g.height;var h={height:this.$dropdown.outerHeight(!1)},i={top:b.scrollTop(),bottom:b.scrollTop()+b.height()},j=i.top<f.top-h.height,k=i.bottom>f.bottom+h.height,l={left:f.left,top:g.bottom},m=this.$dropdownParent;"static"===m.css("position")&&(m=m.offsetParent());var n=m.offset();l.top-=n.top,l.left-=n.left,c||d||(e="below"),k||!j||c?!j&&k&&c&&(e="below"):e="above",("above"==e||c&&"below"!==e)&&(l.top=g.top-n.top-h.height),null!=e&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+e),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+e)),this.$dropdownContainer.css(l)},c.prototype._resizeDropdown=function(){var a={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(a.minWidth=a.width,a.position="relative",a.width="auto"),this.$dropdown.css(a)},c.prototype._showDropdown=function(a){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},c}),b.define("select2/dropdown/minimumResultsForSearch",[],function(){function a(b){for(var c=0,d=0;d<b.length;d++){var e=b[d];e.children?c+=a(e.children):c++}return c}function b(a,b,c,d){this.minimumResultsForSearch=c.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),a.call(this,b,c,d)}return b.prototype.showSearch=function(b,c){return a(c.data.results)<this.minimumResultsForSearch?!1:b.call(this,c)},b}),b.define("select2/dropdown/selectOnClose",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("close",function(a){d._handleSelectOnClose(a)})},a.prototype._handleSelectOnClose=function(a,b){if(b&&null!=b.originalSelect2Event){var c=b.originalSelect2Event;if("select"===c._type||"unselect"===c._type)return}var d=this.getHighlightedResults();if(!(d.length<1)){var e=d.data("data");null!=e.element&&e.element.selected||null==e.element&&e.selected||this.trigger("select",{data:e})}},a}),b.define("select2/dropdown/closeOnSelect",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("select",function(a){d._selectTriggered(a)}),b.on("unselect",function(a){d._selectTriggered(a)})},a.prototype._selectTriggered=function(a,b){var c=b.originalEvent;c&&c.ctrlKey||this.trigger("close",{originalEvent:c,originalSelect2Event:b})},a}),b.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(a){var b=a.input.length-a.maximum,c="Please delete "+b+" character";return 1!=b&&(c+="s"),c},inputTooShort:function(a){var b=a.minimum-a.input.length,c="Please enter "+b+" or more characters";return c},loadingMore:function(){return"Loading more results…"},maximumSelected:function(a){var b="You can only select "+a.maximum+" item";return 1!=a.maximum&&(b+="s"),b},noResults:function(){return"No results found"},searching:function(){return"Searching…"}}}),b.define("select2/defaults",["jquery","require","./results","./selection/single","./selection/multiple","./selection/placeholder","./selection/allowClear","./selection/search","./selection/eventRelay","./utils","./translation","./diacritics","./data/select","./data/array","./data/ajax","./data/tags","./data/tokenizer","./data/minimumInputLength","./data/maximumInputLength","./data/maximumSelectionLength","./dropdown","./dropdown/search","./dropdown/hidePlaceholder","./dropdown/infiniteScroll","./dropdown/attachBody","./dropdown/minimumResultsForSearch","./dropdown/selectOnClose","./dropdown/closeOnSelect","./i18n/en"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C){function D(){this.reset()}D.prototype.apply=function(l){if(l=a.extend(!0,{},this.defaults,l),null==l.dataAdapter){if(null!=l.ajax?l.dataAdapter=o:null!=l.data?l.dataAdapter=n:l.dataAdapter=m,l.minimumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,r)),l.maximumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,s)),l.maximumSelectionLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,t)),l.tags&&(l.dataAdapter=j.Decorate(l.dataAdapter,p)),(null!=l.tokenSeparators||null!=l.tokenizer)&&(l.dataAdapter=j.Decorate(l.dataAdapter,q)),null!=l.query){var C=b(l.amdBase+"compat/query");l.dataAdapter=j.Decorate(l.dataAdapter,C)}if(null!=l.initSelection){var D=b(l.amdBase+"compat/initSelection");l.dataAdapter=j.Decorate(l.dataAdapter,D)}}if(null==l.resultsAdapter&&(l.resultsAdapter=c,null!=l.ajax&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,x)),null!=l.placeholder&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,w)),l.selectOnClose&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,A))),null==l.dropdownAdapter){if(l.multiple)l.dropdownAdapter=u;else{var E=j.Decorate(u,v);l.dropdownAdapter=E}if(0!==l.minimumResultsForSearch&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,z)),l.closeOnSelect&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,B)),null!=l.dropdownCssClass||null!=l.dropdownCss||null!=l.adaptDropdownCssClass){var F=b(l.amdBase+"compat/dropdownCss");l.dropdownAdapter=j.Decorate(l.dropdownAdapter,F)}l.dropdownAdapter=j.Decorate(l.dropdownAdapter,y)}if(null==l.selectionAdapter){if(l.multiple?l.selectionAdapter=e:l.selectionAdapter=d,null!=l.placeholder&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,f)),l.allowClear&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,g)),l.multiple&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,h)),null!=l.containerCssClass||null!=l.containerCss||null!=l.adaptContainerCssClass){var G=b(l.amdBase+"compat/containerCss");l.selectionAdapter=j.Decorate(l.selectionAdapter,G)}l.selectionAdapter=j.Decorate(l.selectionAdapter,i)}if("string"==typeof l.language)if(l.language.indexOf("-")>0){var H=l.language.split("-"),I=H[0];l.language=[l.language,I]}else l.language=[l.language];if(a.isArray(l.language)){var J=new k;l.language.push("en");for(var K=l.language,L=0;L<K.length;L++){var M=K[L],N={};try{N=k.loadPath(M)}catch(O){try{M=this.defaults.amdLanguageBase+M,N=k.loadPath(M)}catch(P){l.debug&&window.console&&console.warn&&console.warn('Select2: The language file for "'+M+'" could not be automatically loaded. A fallback will be used instead.');continue}}J.extend(N)}l.translations=J}else{var Q=k.loadPath(this.defaults.amdLanguageBase+"en"),R=new k(l.language);R.extend(Q),l.translations=R}return l},D.prototype.reset=function(){function b(a){function b(a){return l[a]||a}return a.replace(/[^\u0000-\u007E]/g,b)}function c(d,e){if(""===a.trim(d.term))return e;if(e.children&&e.children.length>0){for(var f=a.extend(!0,{},e),g=e.children.length-1;g>=0;g--){var h=e.children[g],i=c(d,h);null==i&&f.children.splice(g,1)}return f.children.length>0?f:c(d,f)}var j=b(e.text).toUpperCase(),k=b(d.term).toUpperCase();return j.indexOf(k)>-1?e:null}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:j.escapeMarkup,language:C,matcher:c,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,sorter:function(a){return a},templateResult:function(a){return a.text},templateSelection:function(a){return a.text},theme:"default",width:"resolve"}},D.prototype.set=function(b,c){var d=a.camelCase(b),e={};e[d]=c;var f=j._convertData(e);a.extend(this.defaults,f)};var E=new D;return E}),b.define("select2/options",["require","jquery","./defaults","./utils"],function(a,b,c,d){function e(b,e){if(this.options=b,null!=e&&this.fromElement(e),this.options=c.apply(this.options),e&&e.is("input")){var f=a(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=d.Decorate(this.options.dataAdapter,f)}}return e.prototype.fromElement=function(a){var c=["select2"];null==this.options.multiple&&(this.options.multiple=a.prop("multiple")),null==this.options.disabled&&(this.options.disabled=a.prop("disabled")),null==this.options.language&&(a.prop("lang")?this.options.language=a.prop("lang").toLowerCase():a.closest("[lang]").prop("lang")&&(this.options.language=a.closest("[lang]").prop("lang"))),null==this.options.dir&&(a.prop("dir")?this.options.dir=a.prop("dir"):a.closest("[dir]").prop("dir")?this.options.dir=a.closest("[dir]").prop("dir"):this.options.dir="ltr"),a.prop("disabled",this.options.disabled),a.prop("multiple",this.options.multiple),a.data("select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),a.data("data",a.data("select2Tags")),a.data("tags",!0)),a.data("ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),a.attr("ajax--url",a.data("ajaxUrl")),a.data("ajax--url",a.data("ajaxUrl")));var e={};e=b.fn.jquery&&"1."==b.fn.jquery.substr(0,2)&&a[0].dataset?b.extend(!0,{},a[0].dataset,a.data()):a.data();var f=b.extend(!0,{},e);f=d._convertData(f);for(var g in f)b.inArray(g,c)>-1||(b.isPlainObject(this.options[g])?b.extend(this.options[g],f[g]):this.options[g]=f[g]);return this},e.prototype.get=function(a){return this.options[a]},e.prototype.set=function(a,b){this.options[a]=b},e}),b.define("select2/core",["jquery","./options","./utils","./keys"],function(a,b,c,d){var e=function(a,c){null!=a.data("select2")&&a.data("select2").destroy(),this.$element=a,this.id=this._generateId(a),c=c||{},this.options=new b(c,a),e.__super__.constructor.call(this);var d=a.attr("tabindex")||0;a.data("old-tabindex",d),a.attr("tabindex","-1");var f=this.options.get("dataAdapter");this.dataAdapter=new f(a,this.options);var g=this.render();this._placeContainer(g);var h=this.options.get("selectionAdapter");this.selection=new h(a,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,g);var i=this.options.get("dropdownAdapter");this.dropdown=new i(a,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,g);var j=this.options.get("resultsAdapter");this.results=new j(a,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var k=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(a){k.trigger("selection:update",{data:a})}),a.addClass("select2-hidden-accessible"),a.attr("aria-hidden","true"),this._syncAttributes(),a.data("select2",this)};return c.Extend(e,c.Observable),e.prototype._generateId=function(a){var b="";return b=null!=a.attr("id")?a.attr("id"):null!=a.attr("name")?a.attr("name")+"-"+c.generateChars(2):c.generateChars(4),b=b.replace(/(:|\.|\[|\]|,)/g,""),b="select2-"+b},e.prototype._placeContainer=function(a){a.insertAfter(this.$element);var b=this._resolveWidth(this.$element,this.options.get("width"));null!=b&&a.css("width",b)},e.prototype._resolveWidth=function(a,b){var c=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==b){var d=this._resolveWidth(a,"style");return null!=d?d:this._resolveWidth(a,"element")}if("element"==b){var e=a.outerWidth(!1);return 0>=e?"auto":e+"px"}if("style"==b){var f=a.attr("style");if("string"!=typeof f)return null;for(var g=f.split(";"),h=0,i=g.length;i>h;h+=1){var j=g[h].replace(/\s/g,""),k=j.match(c);if(null!==k&&k.length>=1)return k[1]}return null}return b},e.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},e.prototype._registerDomEvents=function(){var b=this;this.$element.on("change.select2",function(){b.dataAdapter.current(function(a){b.trigger("selection:update",{data:a})})}),this.$element.on("focus.select2",function(a){b.trigger("focus",a)}),this._syncA=c.bind(this._syncAttributes,this),this._syncS=c.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._syncA);var d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=d?(this._observer=new d(function(c){a.each(c,b._syncA),a.each(c,b._syncS)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener("DOMAttrModified",b._syncA,!1),this.$element[0].addEventListener("DOMNodeInserted",b._syncS,!1),this.$element[0].addEventListener("DOMNodeRemoved",b._syncS,!1))},e.prototype._registerDataEvents=function(){var a=this;this.dataAdapter.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerSelectionEvents=function(){var b=this,c=["toggle","focus"];this.selection.on("toggle",function(){b.toggleDropdown()}),this.selection.on("focus",function(a){b.focus(a)}),this.selection.on("*",function(d,e){-1===a.inArray(d,c)&&b.trigger(d,e)})},e.prototype._registerDropdownEvents=function(){var a=this;this.dropdown.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerResultsEvents=function(){var a=this;this.results.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerEvents=function(){var a=this;this.on("open",function(){a.$container.addClass("select2-container--open")}),this.on("close",function(){a.$container.removeClass("select2-container--open")}),this.on("enable",function(){a.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){a.$container.addClass("select2-container--disabled")}),this.on("blur",function(){a.$container.removeClass("select2-container--focus")}),this.on("query",function(b){a.isOpen()||a.trigger("open",{}),this.dataAdapter.query(b,function(c){a.trigger("results:all",{data:c,query:b})})}),this.on("query:append",function(b){this.dataAdapter.query(b,function(c){a.trigger("results:append",{data:c,query:b})})}),this.on("keypress",function(b){var c=b.which;a.isOpen()?c===d.ESC||c===d.TAB||c===d.UP&&b.altKey?(a.close(),b.preventDefault()):c===d.ENTER?(a.trigger("results:select",{}),b.preventDefault()):c===d.SPACE&&b.ctrlKey?(a.trigger("results:toggle",{}),b.preventDefault()):c===d.UP?(a.trigger("results:previous",{}),b.preventDefault()):c===d.DOWN&&(a.trigger("results:next",{}),b.preventDefault()):(c===d.ENTER||c===d.SPACE||c===d.DOWN&&b.altKey)&&(a.open(),b.preventDefault())})},e.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},e.prototype._syncSubtree=function(a,b){var c=!1,d=this;if(!a||!a.target||"OPTION"===a.target.nodeName||"OPTGROUP"===a.target.nodeName){if(b)if(b.addedNodes&&b.addedNodes.length>0)for(var e=0;e<b.addedNodes.length;e++){var f=b.addedNodes[e];f.selected&&(c=!0)}else b.removedNodes&&b.removedNodes.length>0&&(c=!0);else c=!0;c&&this.dataAdapter.current(function(a){d.trigger("selection:update",{data:a})})}},e.prototype.trigger=function(a,b){var c=e.__super__.trigger,d={open:"opening",close:"closing",select:"selecting",unselect:"unselecting"};if(void 0===b&&(b={}),a in d){var f=d[a],g={prevented:!1,name:a,args:b};if(c.call(this,f,g),g.prevented)return void(b.prevented=!0)}c.call(this,a,b)},e.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},e.prototype.open=function(){this.isOpen()||this.trigger("query",{})},e.prototype.close=function(){this.isOpen()&&this.trigger("close",{})},e.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},e.prototype.hasFocus=function(){return this.$container.hasClass("select2-container--focus")},e.prototype.focus=function(a){this.hasFocus()||(this.$container.addClass("select2-container--focus"),this.trigger("focus",{}))},e.prototype.enable=function(a){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),(null==a||0===a.length)&&(a=[!0]);var b=!a[0];this.$element.prop("disabled",b)},e.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var a=[];return this.dataAdapter.current(function(b){a=b}),a},e.prototype.val=function(b){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==b||0===b.length)return this.$element.val();var c=b[0];a.isArray(c)&&(c=a.map(c,function(a){return a.toString()})),this.$element.val(c).trigger("change")},e.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._syncA),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener("DOMAttrModified",this._syncA,!1),this.$element[0].removeEventListener("DOMNodeInserted",this._syncS,!1),this.$element[0].removeEventListener("DOMNodeRemoved",this._syncS,!1)),this._syncA=null,this._syncS=null,this.$element.off(".select2"),this.$element.attr("tabindex",this.$element.data("old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null; -},e.prototype.render=function(){var b=a('<span class="select2 select2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>');return b.attr("dir",this.options.get("dir")),this.$container=b,this.$container.addClass("select2-container--"+this.options.get("theme")),b.data("element",this.$element),b},e}),b.define("jquery-mousewheel",["jquery"],function(a){return a}),b.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults"],function(a,b,c,d){if(null==a.fn.select2){var e=["open","close","destroy"];a.fn.select2=function(b){if(b=b||{},"object"==typeof b)return this.each(function(){var d=a.extend(!0,{},b);new c(a(this),d)}),this;if("string"==typeof b){var d,f=Array.prototype.slice.call(arguments,1);return this.each(function(){var c=a(this).data("select2");null==c&&window.console&&console.error&&console.error("The select2('"+b+"') method was called on an element that is not using Select2."),d=c[b].apply(c,f)}),a.inArray(b,e)>-1?this:d}throw new Error("Invalid arguments for Select2: "+b)}}return null==a.fn.select2.defaults&&(a.fn.select2.defaults=d),c}),{define:b.define,require:b.require}}(),c=b.require("jquery.select2");return a.fn.select2.amd=b,c}); \ No newline at end of file diff --git a/assets/plugins/slimScroll/jquery.slimscroll.js b/assets/plugins/slimScroll/jquery.slimscroll.js deleted file mode 100644 index e9127d31..00000000 --- a/assets/plugins/slimScroll/jquery.slimscroll.js +++ /dev/null @@ -1,490 +0,0 @@ -/*! Copyright (c) 2011 Piotr Rochala (http://rocha.la) - * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) - * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. - * - * Version: 1.3.3 - * - */ -(function ($) { - - $.fn.extend({ - slimScroll: function (options) { - - var defaults = { - // width in pixels of the visible scroll area - width: 'auto', - // height in pixels of the visible scroll area - height: '250px', - // width in pixels of the scrollbar and rail - size: '7px', - // scrollbar color, accepts any hex/color value - color: '#000', - // scrollbar position - left/right - position: 'right', - // distance in pixels between the side edge and the scrollbar - distance: '1px', - // default scroll position on load - top / bottom / $('selector') - start: 'top', - // sets scrollbar opacity - opacity: .4, - // enables always-on mode for the scrollbar - alwaysVisible: false, - // check if we should hide the scrollbar when user is hovering over - disableFadeOut: false, - // sets visibility of the rail - railVisible: false, - // sets rail color - railColor: '#333', - // sets rail opacity - railOpacity: .2, - // whether we should use jQuery UI Draggable to enable bar dragging - railDraggable: true, - // defautlt CSS class of the slimscroll rail - railClass: 'slimScrollRail', - // defautlt CSS class of the slimscroll bar - barClass: 'slimScrollBar', - // defautlt CSS class of the slimscroll wrapper - wrapperClass: 'slimScrollDiv', - // check if mousewheel should scroll the window if we reach top/bottom - allowPageScroll: false, - // scroll amount applied to each mouse wheel step - wheelStep: 20, - // scroll amount applied when user is using gestures - touchScrollStep: 200, - // sets border radius - borderRadius: '7px', - // sets border radius of the rail - railBorderRadius: '7px' - }; - - var o = $.extend(defaults, options); - - // do it for every element that matches selector - this.each(function () { - - var isOverPanel, isOverBar, isDragg, queueHide, touchDif, - barHeight, percentScroll, lastScroll, - divS = '<div></div>', - minBarHeight = 30, - releaseScroll = false; - - // used in event handlers and for better minification - var me = $(this); - - // ensure we are not binding it again - if (me.parent().hasClass(o.wrapperClass)) - { - // start from last bar position - var offset = me.scrollTop(); - - // find bar and rail - bar = me.parent().find('.' + o.barClass); - rail = me.parent().find('.' + o.railClass); - - getBarHeight(); - - // check if we should scroll existing instance - if ($.isPlainObject(options)) - { - // Pass height: auto to an existing slimscroll object to force a resize after contents have changed - if ('height' in options && options.height == 'auto') { - me.parent().css('height', 'auto'); - me.css('height', 'auto'); - var height = me.parent().parent().height(); - me.parent().css('height', height); - me.css('height', height); - } - - if ('scrollTo' in options) - { - // jump to a static point - offset = parseInt(o.scrollTo); - } - else if ('scrollBy' in options) - { - // jump by value pixels - offset += parseInt(o.scrollBy); - } - else if ('destroy' in options) - { - // remove slimscroll elements - bar.remove(); - rail.remove(); - me.unwrap(); - return; - } - - // scroll content by the given offset - scrollContent(offset, false, true); - } - - return; - } - else if ($.isPlainObject(options)) - { - if ('destroy' in options) - { - return; - } - } - - // optionally set height to the parent's height - o.height = (o.height == 'auto') ? me.parent().height() : o.height; - - // wrap content - var wrapper = $(divS) - .addClass(o.wrapperClass) - .css({ - position: 'relative', - overflow: 'hidden', - width: o.width, - height: o.height - }); - - // update style for the div - me.css({ - overflow: 'hidden', - width: o.width, - height: o.height, - //Fix for IE10 - "-ms-touch-action": "none" - }); - - // create scrollbar rail - var rail = $(divS) - .addClass(o.railClass) - .css({ - width: o.size, - height: '100%', - position: 'absolute', - top: 0, - display: (o.alwaysVisible && o.railVisible) ? 'block' : 'none', - 'border-radius': o.railBorderRadius, - background: o.railColor, - opacity: o.railOpacity, - zIndex: 90 - }); - - // create scrollbar - var bar = $(divS) - .addClass(o.barClass) - .css({ - background: o.color, - width: o.size, - position: 'absolute', - top: 0, - opacity: o.opacity, - display: o.alwaysVisible ? 'block' : 'none', - 'border-radius': o.borderRadius, - BorderRadius: o.borderRadius, - MozBorderRadius: o.borderRadius, - WebkitBorderRadius: o.borderRadius, - zIndex: 99 - }); - - // set position - var posCss = (o.position == 'right') ? {right: o.distance} : {left: o.distance}; - rail.css(posCss); - bar.css(posCss); - - // wrap it - me.wrap(wrapper); - - // append to parent div - me.parent().append(bar); - me.parent().append(rail); - - // make it draggable and no longer dependent on the jqueryUI - if (o.railDraggable) { - bar.bind("mousedown", function (e) { - var $doc = $(document); - isDragg = true; - t = parseFloat(bar.css('top')); - pageY = e.pageY; - - $doc.bind("mousemove.slimscroll", function (e) { - currTop = t + e.pageY - pageY; - bar.css('top', currTop); - scrollContent(0, bar.position().top, false);// scroll content - }); - - $doc.bind("mouseup.slimscroll", function (e) { - isDragg = false; - hideBar(); - $doc.unbind('.slimscroll'); - }); - return false; - }).bind("selectstart.slimscroll", function (e) { - e.stopPropagation(); - e.preventDefault(); - return false; - }); - } - - // on rail over - rail.hover(function () { - showBar(); - }, function () { - hideBar(); - }); - - // on bar over - bar.hover(function () { - isOverBar = true; - }, function () { - isOverBar = false; - }); - - // show on parent mouseover - me.hover(function () { - isOverPanel = true; - showBar(); - hideBar(); - }, function () { - isOverPanel = false; - hideBar(); - }); - - if (window.navigator.msPointerEnabled) { - // support for mobile - me.bind('MSPointerDown', function (e, b) { - if (e.originalEvent.targetTouches.length) - { - // record where touch started - touchDif = e.originalEvent.targetTouches[0].pageY; - } - }); - - me.bind('MSPointerMove', function (e) { - // prevent scrolling the page if necessary - e.originalEvent.preventDefault(); - if (e.originalEvent.targetTouches.length) - { - // see how far user swiped - var diff = (touchDif - e.originalEvent.targetTouches[0].pageY) / o.touchScrollStep; - // scroll content - scrollContent(diff, true); - touchDif = e.originalEvent.targetTouches[0].pageY; - - } - }); - } else { - // support for mobile - me.bind('touchstart', function (e, b) { - if (e.originalEvent.touches.length) - { - // record where touch started - touchDif = e.originalEvent.touches[0].pageY; - } - }); - - me.bind('touchmove', function (e) { - // prevent scrolling the page if necessary - if (!releaseScroll) - { - e.originalEvent.preventDefault(); - } - if (e.originalEvent.touches.length) - { - // see how far user swiped - var diff = (touchDif - e.originalEvent.touches[0].pageY) / o.touchScrollStep; - // scroll content - scrollContent(diff, true); - touchDif = e.originalEvent.touches[0].pageY; - } - }); - } - - // set up initial height - getBarHeight(); - - // check start position - if (o.start === 'bottom') - { - // scroll content to bottom - bar.css({top: me.outerHeight() - bar.outerHeight()}); - scrollContent(0, true); - } - else if (o.start !== 'top') - { - // assume jQuery selector - scrollContent($(o.start).position().top, null, true); - - // make sure bar stays hidden - if (!o.alwaysVisible) { - bar.hide(); - } - } - - // attach scroll events - attachWheel(); - - function _onWheel(e) - { - // use mouse wheel only when mouse is over - if (!isOverPanel) { - return; - } - - var e = e || window.event; - - var delta = 0; - if (e.wheelDelta) { - delta = -e.wheelDelta / 120; - } - if (e.detail) { - delta = e.detail / 3; - } - - var target = e.target || e.srcTarget || e.srcElement; - if ($(target).closest('.' + o.wrapperClass).is(me.parent())) { - // scroll content - scrollContent(delta, true); - } - - // stop window scroll - if (e.preventDefault && !releaseScroll) { - e.preventDefault(); - } - if (!releaseScroll) { - e.returnValue = false; - } - } - - function scrollContent(y, isWheel, isJump) - { - releaseScroll = false; - var delta = y; - var maxTop = me.outerHeight() - bar.outerHeight(); - - if (isWheel) - { - // move bar with mouse wheel - delta = parseInt(bar.css('top')) + y * parseInt(o.wheelStep) / 100 * bar.outerHeight(); - - // move bar, make sure it doesn't go out - delta = Math.min(Math.max(delta, 0), maxTop); - - // if scrolling down, make sure a fractional change to the - // scroll position isn't rounded away when the scrollbar's CSS is set - // this flooring of delta would happened automatically when - // bar.css is set below, but we floor here for clarity - delta = (y > 0) ? Math.ceil(delta) : Math.floor(delta); - - // scroll the scrollbar - bar.css({top: delta + 'px'}); - } - - // calculate actual scroll amount - percentScroll = parseInt(bar.css('top')) / (me.outerHeight() - bar.outerHeight()); - delta = percentScroll * (me[0].scrollHeight - me.outerHeight()); - - if (isJump) - { - delta = y; - var offsetTop = delta / me[0].scrollHeight * me.outerHeight(); - offsetTop = Math.min(Math.max(offsetTop, 0), maxTop); - bar.css({top: offsetTop + 'px'}); - } - - // scroll content - me.scrollTop(delta); - - // fire scrolling event - me.trigger('slimscrolling', ~~delta); - - // ensure bar is visible - showBar(); - - // trigger hide when scroll is stopped - hideBar(); - } - - function attachWheel() - { - if (window.addEventListener) - { - this.addEventListener('DOMMouseScroll', _onWheel, false); - this.addEventListener('mousewheel', _onWheel, false); - } - else - { - document.attachEvent("onmousewheel", _onWheel) - } - } - - function getBarHeight() - { - // calculate scrollbar height and make sure it is not too small - barHeight = Math.max((me.outerHeight() / me[0].scrollHeight) * me.outerHeight(), minBarHeight); - bar.css({height: barHeight + 'px'}); - - // hide scrollbar if content is not long enough - var display = barHeight == me.outerHeight() ? 'none' : 'block'; - bar.css({display: display}); - } - - function showBar() - { - // recalculate bar height - getBarHeight(); - clearTimeout(queueHide); - - // when bar reached top or bottom - if (percentScroll == ~~percentScroll) - { - //release wheel - releaseScroll = o.allowPageScroll; - - // publish approporiate event - if (lastScroll != percentScroll) - { - var msg = (~~percentScroll == 0) ? 'top' : 'bottom'; - me.trigger('slimscroll', msg); - } - } - else - { - releaseScroll = false; - } - lastScroll = percentScroll; - - // show only when required - if (barHeight >= me.outerHeight()) { - //allow window scroll - releaseScroll = true; - return; - } - bar.stop(true, true).fadeIn('fast'); - if (o.railVisible) { - rail.stop(true, true).fadeIn('fast'); - } - } - - function hideBar() - { - // only hide when options allow it - if (!o.alwaysVisible) - { - queueHide = setTimeout(function () { - if (!(o.disableFadeOut && isOverPanel) && !isOverBar && !isDragg) - { - bar.fadeOut('slow'); - rail.fadeOut('slow'); - } - }, 1000); - } - } - - }); - - // maintain chainability - return this; - } - }); - - $.fn.extend({ - slimscroll: $.fn.slimScroll - }); - -})(jQuery); diff --git a/assets/plugins/slimScroll/jquery.slimscroll.min.js b/assets/plugins/slimScroll/jquery.slimscroll.min.js deleted file mode 100644 index 298aa1cd..00000000 --- a/assets/plugins/slimScroll/jquery.slimscroll.min.js +++ /dev/null @@ -1 +0,0 @@ -(function($){$.fn.extend({slimScroll:function(options){var defaults={width:"auto",height:"250px",size:"7px",color:"#000",position:"right",distance:"1px",start:"top",opacity:.4,alwaysVisible:false,disableFadeOut:false,railVisible:false,railColor:"#333",railOpacity:.2,railDraggable:true,railClass:"slimScrollRail",barClass:"slimScrollBar",wrapperClass:"slimScrollDiv",allowPageScroll:false,wheelStep:20,touchScrollStep:200,borderRadius:"7px",railBorderRadius:"7px"};var o=$.extend(defaults,options);this.each(function(){var isOverPanel,isOverBar,isDragg,queueHide,touchDif,barHeight,percentScroll,lastScroll,divS="<div></div>",minBarHeight=30,releaseScroll=false;var me=$(this);if(me.parent().hasClass(o.wrapperClass)){var offset=me.scrollTop();bar=me.parent().find("."+o.barClass);rail=me.parent().find("."+o.railClass);getBarHeight();if($.isPlainObject(options)){if("height"in options&&options.height=="auto"){me.parent().css("height","auto");me.css("height","auto");var height=me.parent().parent().height();me.parent().css("height",height);me.css("height",height)}if("scrollTo"in options){offset=parseInt(o.scrollTo)}else if("scrollBy"in options){offset+=parseInt(o.scrollBy)}else if("destroy"in options){bar.remove();rail.remove();me.unwrap();return}scrollContent(offset,false,true)}return}else if($.isPlainObject(options)){if("destroy"in options){return}}o.height=o.height=="auto"?me.parent().height():o.height;var wrapper=$(divS).addClass(o.wrapperClass).css({position:"relative",overflow:"hidden",width:o.width,height:o.height});me.css({overflow:"hidden",width:o.width,height:o.height,"-ms-touch-action":"none"});var rail=$(divS).addClass(o.railClass).css({width:o.size,height:"100%",position:"absolute",top:0,display:o.alwaysVisible&&o.railVisible?"block":"none","border-radius":o.railBorderRadius,background:o.railColor,opacity:o.railOpacity,zIndex:90});var bar=$(divS).addClass(o.barClass).css({background:o.color,width:o.size,position:"absolute",top:0,opacity:o.opacity,display:o.alwaysVisible?"block":"none","border-radius":o.borderRadius,BorderRadius:o.borderRadius,MozBorderRadius:o.borderRadius,WebkitBorderRadius:o.borderRadius,zIndex:99});var posCss=o.position=="right"?{right:o.distance}:{left:o.distance};rail.css(posCss);bar.css(posCss);me.wrap(wrapper);me.parent().append(bar);me.parent().append(rail);if(o.railDraggable){bar.bind("mousedown",function(e){var $doc=$(document);isDragg=true;t=parseFloat(bar.css("top"));pageY=e.pageY;$doc.bind("mousemove.slimscroll",function(e){currTop=t+e.pageY-pageY;bar.css("top",currTop);scrollContent(0,bar.position().top,false)});$doc.bind("mouseup.slimscroll",function(e){isDragg=false;hideBar();$doc.unbind(".slimscroll")});return false}).bind("selectstart.slimscroll",function(e){e.stopPropagation();e.preventDefault();return false})}rail.hover(function(){showBar()},function(){hideBar()});bar.hover(function(){isOverBar=true},function(){isOverBar=false});me.hover(function(){isOverPanel=true;showBar();hideBar()},function(){isOverPanel=false;hideBar()});if(window.navigator.msPointerEnabled){me.bind("MSPointerDown",function(e,b){if(e.originalEvent.targetTouches.length){touchDif=e.originalEvent.targetTouches[0].pageY}});me.bind("MSPointerMove",function(e){e.originalEvent.preventDefault();if(e.originalEvent.targetTouches.length){var diff=(touchDif-e.originalEvent.targetTouches[0].pageY)/o.touchScrollStep;scrollContent(diff,true);touchDif=e.originalEvent.targetTouches[0].pageY}})}else{me.bind("touchstart",function(e,b){if(e.originalEvent.touches.length){touchDif=e.originalEvent.touches[0].pageY}});me.bind("touchmove",function(e){if(!releaseScroll){e.originalEvent.preventDefault()}if(e.originalEvent.touches.length){var diff=(touchDif-e.originalEvent.touches[0].pageY)/o.touchScrollStep;scrollContent(diff,true);touchDif=e.originalEvent.touches[0].pageY}})}getBarHeight();if(o.start==="bottom"){bar.css({top:me.outerHeight()-bar.outerHeight()});scrollContent(0,true)}else if(o.start!=="top"){scrollContent($(o.start).position().top,null,true);if(!o.alwaysVisible){bar.hide()}}attachWheel();function _onWheel(e){if(!isOverPanel){return}var e=e||window.event;var delta=0;if(e.wheelDelta){delta=-e.wheelDelta/120}if(e.detail){delta=e.detail/3}var target=e.target||e.srcTarget||e.srcElement;if($(target).closest("."+o.wrapperClass).is(me.parent())){scrollContent(delta,true)}if(e.preventDefault&&!releaseScroll){e.preventDefault()}if(!releaseScroll){e.returnValue=false}}function scrollContent(y,isWheel,isJump){releaseScroll=false;var delta=y;var maxTop=me.outerHeight()-bar.outerHeight();if(isWheel){delta=parseInt(bar.css("top"))+y*parseInt(o.wheelStep)/100*bar.outerHeight();delta=Math.min(Math.max(delta,0),maxTop);delta=y>0?Math.ceil(delta):Math.floor(delta);bar.css({top:delta+"px"})}percentScroll=parseInt(bar.css("top"))/(me.outerHeight()-bar.outerHeight());delta=percentScroll*(me[0].scrollHeight-me.outerHeight());if(isJump){delta=y;var offsetTop=delta/me[0].scrollHeight*me.outerHeight();offsetTop=Math.min(Math.max(offsetTop,0),maxTop);bar.css({top:offsetTop+"px"})}me.scrollTop(delta);me.trigger("slimscrolling",~~delta);showBar();hideBar()}function attachWheel(){if(window.addEventListener){this.addEventListener("DOMMouseScroll",_onWheel,false);this.addEventListener("mousewheel",_onWheel,false)}else{document.attachEvent("onmousewheel",_onWheel)}}function getBarHeight(){barHeight=Math.max(me.outerHeight()/me[0].scrollHeight*me.outerHeight(),minBarHeight);bar.css({height:barHeight+"px"});var display=barHeight==me.outerHeight()?"none":"block";bar.css({display:display})}function showBar(){getBarHeight();clearTimeout(queueHide);if(percentScroll==~~percentScroll){releaseScroll=o.allowPageScroll;if(lastScroll!=percentScroll){var msg=~~percentScroll==0?"top":"bottom";me.trigger("slimscroll",msg)}}else{releaseScroll=false}lastScroll=percentScroll;if(barHeight>=me.outerHeight()){releaseScroll=true;return}bar.stop(true,true).fadeIn("fast");if(o.railVisible){rail.stop(true,true).fadeIn("fast")}}function hideBar(){if(!o.alwaysVisible){queueHide=setTimeout(function(){if(!(o.disableFadeOut&&isOverPanel)&&!isOverBar&&!isDragg){bar.fadeOut("slow");rail.fadeOut("slow")}},1e3)}}});return this}});$.fn.extend({slimscroll:$.fn.slimScroll})})(jQuery); \ No newline at end of file diff --git a/assets/plugins/sparkline/jquery.sparkline.js b/assets/plugins/sparkline/jquery.sparkline.js deleted file mode 100644 index 721e03b7..00000000 --- a/assets/plugins/sparkline/jquery.sparkline.js +++ /dev/null @@ -1,3054 +0,0 @@ -/** -* -* jquery.sparkline.js -* -* v2.1.2 -* (c) Splunk, Inc -* Contact: Gareth Watts (gareth@splunk.com) -* http://omnipotent.net/jquery.sparkline/ -* -* Generates inline sparkline charts from data supplied either to the method -* or inline in HTML -* -* Compatible with Internet Explorer 6.0+ and modern browsers equipped with the canvas tag -* (Firefox 2.0+, Safari, Opera, etc) -* -* License: New BSD License -* -* Copyright (c) 2012, Splunk Inc. -* All rights reserved. -* -* Redistribution and use in source and binary forms, with or without modification, -* are permitted provided that the following conditions are met: -* -* * Redistributions of source code must retain the above copyright notice, -* this list of conditions and the following disclaimer. -* * Redistributions in binary form must reproduce the above copyright notice, -* this list of conditions and the following disclaimer in the documentation -* and/or other materials provided with the distribution. -* * Neither the name of Splunk Inc nor the names of its contributors may -* be used to endorse or promote products derived from this software without -* specific prior written permission. -* -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY -* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT -* SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT -* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -* -* -* Usage: -* $(selector).sparkline(values, options) -* -* If values is undefined or set to 'html' then the data values are read from the specified tag: -* <p>Sparkline: <span class="sparkline">1,4,6,6,8,5,3,5</span></p> -* $('.sparkline').sparkline(); -* There must be no spaces in the enclosed data set -* -* Otherwise values must be an array of numbers or null values -* <p>Sparkline: <span id="sparkline1">This text replaced if the browser is compatible</span></p> -* $('#sparkline1').sparkline([1,4,6,6,8,5,3,5]) -* $('#sparkline2').sparkline([1,4,6,null,null,5,3,5]) -* -* Values can also be specified in an HTML comment, or as a values attribute: -* <p>Sparkline: <span class="sparkline"><!--1,4,6,6,8,5,3,5 --></span></p> -* <p>Sparkline: <span class="sparkline" values="1,4,6,6,8,5,3,5"></span></p> -* $('.sparkline').sparkline(); -* -* For line charts, x values can also be specified: -* <p>Sparkline: <span class="sparkline">1:1,2.7:4,3.4:6,5:6,6:8,8.7:5,9:3,10:5</span></p> -* $('#sparkline1').sparkline([ [1,1], [2.7,4], [3.4,6], [5,6], [6,8], [8.7,5], [9,3], [10,5] ]) -* -* By default, options should be passed in as teh second argument to the sparkline function: -* $('.sparkline').sparkline([1,2,3,4], {type: 'bar'}) -* -* Options can also be set by passing them on the tag itself. This feature is disabled by default though -* as there's a slight performance overhead: -* $('.sparkline').sparkline([1,2,3,4], {enableTagOptions: true}) -* <p>Sparkline: <span class="sparkline" sparkType="bar" sparkBarColor="red">loading</span></p> -* Prefix all options supplied as tag attribute with "spark" (configurable by setting tagOptionPrefix) -* -* Supported options: -* lineColor - Color of the line used for the chart -* fillColor - Color used to fill in the chart - Set to '' or false for a transparent chart -* width - Width of the chart - Defaults to 3 times the number of values in pixels -* height - Height of the chart - Defaults to the height of the containing element -* chartRangeMin - Specify the minimum value to use for the Y range of the chart - Defaults to the minimum value supplied -* chartRangeMax - Specify the maximum value to use for the Y range of the chart - Defaults to the maximum value supplied -* chartRangeClip - Clip out of range values to the max/min specified by chartRangeMin and chartRangeMax -* chartRangeMinX - Specify the minimum value to use for the X range of the chart - Defaults to the minimum value supplied -* chartRangeMaxX - Specify the maximum value to use for the X range of the chart - Defaults to the maximum value supplied -* composite - If true then don't erase any existing chart attached to the tag, but draw -* another chart over the top - Note that width and height are ignored if an -* existing chart is detected. -* tagValuesAttribute - Name of tag attribute to check for data values - Defaults to 'values' -* enableTagOptions - Whether to check tags for sparkline options -* tagOptionPrefix - Prefix used for options supplied as tag attributes - Defaults to 'spark' -* disableHiddenCheck - If set to true, then the plugin will assume that charts will never be drawn into a -* hidden dom element, avoding a browser reflow -* disableInteraction - If set to true then all mouseover/click interaction behaviour will be disabled, -* making the plugin perform much like it did in 1.x -* disableTooltips - If set to true then tooltips will be disabled - Defaults to false (tooltips enabled) -* disableHighlight - If set to true then highlighting of selected chart elements on mouseover will be disabled -* defaults to false (highlights enabled) -* highlightLighten - Factor to lighten/darken highlighted chart values by - Defaults to 1.4 for a 40% increase -* tooltipContainer - Specify which DOM element the tooltip should be rendered into - defaults to document.body -* tooltipClassname - Optional CSS classname to apply to tooltips - If not specified then a default style will be applied -* tooltipOffsetX - How many pixels away from the mouse pointer to render the tooltip on the X axis -* tooltipOffsetY - How many pixels away from the mouse pointer to render the tooltip on the r axis -* tooltipFormatter - Optional callback that allows you to override the HTML displayed in the tooltip -* callback is given arguments of (sparkline, options, fields) -* tooltipChartTitle - If specified then the tooltip uses the string specified by this setting as a title -* tooltipFormat - A format string or SPFormat object (or an array thereof for multiple entries) -* to control the format of the tooltip -* tooltipPrefix - A string to prepend to each field displayed in a tooltip -* tooltipSuffix - A string to append to each field displayed in a tooltip -* tooltipSkipNull - If true then null values will not have a tooltip displayed (defaults to true) -* tooltipValueLookups - An object or range map to map field values to tooltip strings -* (eg. to map -1 to "Lost", 0 to "Draw", and 1 to "Win") -* numberFormatter - Optional callback for formatting numbers in tooltips -* numberDigitGroupSep - Character to use for group separator in numbers "1,234" - Defaults to "," -* numberDecimalMark - Character to use for the decimal point when formatting numbers - Defaults to "." -* numberDigitGroupCount - Number of digits between group separator - Defaults to 3 -* -* There are 7 types of sparkline, selected by supplying a "type" option of 'line' (default), -* 'bar', 'tristate', 'bullet', 'discrete', 'pie' or 'box' -* line - Line chart. Options: -* spotColor - Set to '' to not end each line in a circular spot -* minSpotColor - If set, color of spot at minimum value -* maxSpotColor - If set, color of spot at maximum value -* spotRadius - Radius in pixels -* lineWidth - Width of line in pixels -* normalRangeMin -* normalRangeMax - If set draws a filled horizontal bar between these two values marking the "normal" -* or expected range of values -* normalRangeColor - Color to use for the above bar -* drawNormalOnTop - Draw the normal range above the chart fill color if true -* defaultPixelsPerValue - Defaults to 3 pixels of width for each value in the chart -* highlightSpotColor - The color to use for drawing a highlight spot on mouseover - Set to null to disable -* highlightLineColor - The color to use for drawing a highlight line on mouseover - Set to null to disable -* valueSpots - Specify which points to draw spots on, and in which color. Accepts a range map -* -* bar - Bar chart. Options: -* barColor - Color of bars for postive values -* negBarColor - Color of bars for negative values -* zeroColor - Color of bars with zero values -* nullColor - Color of bars with null values - Defaults to omitting the bar entirely -* barWidth - Width of bars in pixels -* colorMap - Optional mappnig of values to colors to override the *BarColor values above -* can be an Array of values to control the color of individual bars or a range map -* to specify colors for individual ranges of values -* barSpacing - Gap between bars in pixels -* zeroAxis - Centers the y-axis around zero if true -* -* tristate - Charts values of win (>0), lose (<0) or draw (=0) -* posBarColor - Color of win values -* negBarColor - Color of lose values -* zeroBarColor - Color of draw values -* barWidth - Width of bars in pixels -* barSpacing - Gap between bars in pixels -* colorMap - Optional mappnig of values to colors to override the *BarColor values above -* can be an Array of values to control the color of individual bars or a range map -* to specify colors for individual ranges of values -* -* discrete - Options: -* lineHeight - Height of each line in pixels - Defaults to 30% of the graph height -* thesholdValue - Values less than this value will be drawn using thresholdColor instead of lineColor -* thresholdColor -* -* bullet - Values for bullet graphs msut be in the order: target, performance, range1, range2, range3, ... -* options: -* targetColor - The color of the vertical target marker -* targetWidth - The width of the target marker in pixels -* performanceColor - The color of the performance measure horizontal bar -* rangeColors - Colors to use for each qualitative range background color -* -* pie - Pie chart. Options: -* sliceColors - An array of colors to use for pie slices -* offset - Angle in degrees to offset the first slice - Try -90 or +90 -* borderWidth - Width of border to draw around the pie chart, in pixels - Defaults to 0 (no border) -* borderColor - Color to use for the pie chart border - Defaults to #000 -* -* box - Box plot. Options: -* raw - Set to true to supply pre-computed plot points as values -* values should be: low_outlier, low_whisker, q1, median, q3, high_whisker, high_outlier -* When set to false you can supply any number of values and the box plot will -* be computed for you. Default is false. -* showOutliers - Set to true (default) to display outliers as circles -* outlierIQR - Interquartile range used to determine outliers. Default 1.5 -* boxLineColor - Outline color of the box -* boxFillColor - Fill color for the box -* whiskerColor - Line color used for whiskers -* outlierLineColor - Outline color of outlier circles -* outlierFillColor - Fill color of the outlier circles -* spotRadius - Radius of outlier circles -* medianColor - Line color of the median line -* target - Draw a target cross hair at the supplied value (default undefined) -* -* -* -* Examples: -* $('#sparkline1').sparkline(myvalues, { lineColor: '#f00', fillColor: false }); -* $('.barsparks').sparkline('html', { type:'bar', height:'40px', barWidth:5 }); -* $('#tristate').sparkline([1,1,-1,1,0,0,-1], { type:'tristate' }): -* $('#discrete').sparkline([1,3,4,5,5,3,4,5], { type:'discrete' }); -* $('#bullet').sparkline([10,12,12,9,7], { type:'bullet' }); -* $('#pie').sparkline([1,1,2], { type:'pie' }); -*/ - -/*jslint regexp: true, browser: true, jquery: true, white: true, nomen: false, plusplus: false, maxerr: 500, indent: 4 */ - -(function(document, Math, undefined) { // performance/minified-size optimization -(function(factory) { - if(typeof define === 'function' && define.amd) { - define(['jquery'], factory); - } else if (jQuery && !jQuery.fn.sparkline) { - factory(jQuery); - } -} -(function($) { - 'use strict'; - - var UNSET_OPTION = {}, - getDefaults, createClass, SPFormat, clipval, quartile, normalizeValue, normalizeValues, - remove, isNumber, all, sum, addCSS, ensureArray, formatNumber, RangeMap, - MouseHandler, Tooltip, barHighlightMixin, - line, bar, tristate, discrete, bullet, pie, box, defaultStyles, initStyles, - VShape, VCanvas_base, VCanvas_canvas, VCanvas_vml, pending, shapeCount = 0; - - /** - * Default configuration settings - */ - getDefaults = function () { - return { - // Settings common to most/all chart types - common: { - type: 'line', - lineColor: '#00f', - fillColor: '#cdf', - defaultPixelsPerValue: 3, - width: 'auto', - height: 'auto', - composite: false, - tagValuesAttribute: 'values', - tagOptionsPrefix: 'spark', - enableTagOptions: false, - enableHighlight: true, - highlightLighten: 1.4, - tooltipSkipNull: true, - tooltipPrefix: '', - tooltipSuffix: '', - disableHiddenCheck: false, - numberFormatter: false, - numberDigitGroupCount: 3, - numberDigitGroupSep: ',', - numberDecimalMark: '.', - disableTooltips: false, - disableInteraction: false - }, - // Defaults for line charts - line: { - spotColor: '#f80', - highlightSpotColor: '#5f5', - highlightLineColor: '#f22', - spotRadius: 1.5, - minSpotColor: '#f80', - maxSpotColor: '#f80', - lineWidth: 1, - normalRangeMin: undefined, - normalRangeMax: undefined, - normalRangeColor: '#ccc', - drawNormalOnTop: false, - chartRangeMin: undefined, - chartRangeMax: undefined, - chartRangeMinX: undefined, - chartRangeMaxX: undefined, - tooltipFormat: new SPFormat('<span style="color: {{color}}">&#9679;</span> {{prefix}}{{y}}{{suffix}}') - }, - // Defaults for bar charts - bar: { - barColor: '#3366cc', - negBarColor: '#f44', - stackedBarColor: ['#3366cc', '#dc3912', '#ff9900', '#109618', '#66aa00', - '#dd4477', '#0099c6', '#990099'], - zeroColor: undefined, - nullColor: undefined, - zeroAxis: true, - barWidth: 4, - barSpacing: 1, - chartRangeMax: undefined, - chartRangeMin: undefined, - chartRangeClip: false, - colorMap: undefined, - tooltipFormat: new SPFormat('<span style="color: {{color}}">&#9679;</span> {{prefix}}{{value}}{{suffix}}') - }, - // Defaults for tristate charts - tristate: { - barWidth: 4, - barSpacing: 1, - posBarColor: '#6f6', - negBarColor: '#f44', - zeroBarColor: '#999', - colorMap: {}, - tooltipFormat: new SPFormat('<span style="color: {{color}}">&#9679;</span> {{value:map}}'), - tooltipValueLookups: { map: { '-1': 'Loss', '0': 'Draw', '1': 'Win' } } - }, - // Defaults for discrete charts - discrete: { - lineHeight: 'auto', - thresholdColor: undefined, - thresholdValue: 0, - chartRangeMax: undefined, - chartRangeMin: undefined, - chartRangeClip: false, - tooltipFormat: new SPFormat('{{prefix}}{{value}}{{suffix}}') - }, - // Defaults for bullet charts - bullet: { - targetColor: '#f33', - targetWidth: 3, // width of the target bar in pixels - performanceColor: '#33f', - rangeColors: ['#d3dafe', '#a8b6ff', '#7f94ff'], - base: undefined, // set this to a number to change the base start number - tooltipFormat: new SPFormat('{{fieldkey:fields}} - {{value}}'), - tooltipValueLookups: { fields: {r: 'Range', p: 'Performance', t: 'Target'} } - }, - // Defaults for pie charts - pie: { - offset: 0, - sliceColors: ['#3366cc', '#dc3912', '#ff9900', '#109618', '#66aa00', - '#dd4477', '#0099c6', '#990099'], - borderWidth: 0, - borderColor: '#000', - tooltipFormat: new SPFormat('<span style="color: {{color}}">&#9679;</span> {{value}} ({{percent.1}}%)') - }, - // Defaults for box plots - box: { - raw: false, - boxLineColor: '#000', - boxFillColor: '#cdf', - whiskerColor: '#000', - outlierLineColor: '#333', - outlierFillColor: '#fff', - medianColor: '#f00', - showOutliers: true, - outlierIQR: 1.5, - spotRadius: 1.5, - target: undefined, - targetColor: '#4a2', - chartRangeMax: undefined, - chartRangeMin: undefined, - tooltipFormat: new SPFormat('{{field:fields}}: {{value}}'), - tooltipFormatFieldlistKey: 'field', - tooltipValueLookups: { fields: { lq: 'Lower Quartile', med: 'Median', - uq: 'Upper Quartile', lo: 'Left Outlier', ro: 'Right Outlier', - lw: 'Left Whisker', rw: 'Right Whisker'} } - } - }; - }; - - // You can have tooltips use a css class other than jqstooltip by specifying tooltipClassname - defaultStyles = '.jqstooltip { ' + - 'position: absolute;' + - 'left: 0px;' + - 'top: 0px;' + - 'visibility: hidden;' + - 'background: rgb(0, 0, 0) transparent;' + - 'background-color: rgba(0,0,0,0.6);' + - 'filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);' + - '-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)";' + - 'color: white;' + - 'font: 10px arial, san serif;' + - 'text-align: left;' + - 'white-space: nowrap;' + - 'padding: 5px;' + - 'border: 1px solid white;' + - 'z-index: 10000;' + - '}' + - '.jqsfield { ' + - 'color: white;' + - 'font: 10px arial, san serif;' + - 'text-align: left;' + - '}'; - - /** - * Utilities - */ - - createClass = function (/* [baseclass, [mixin, ...]], definition */) { - var Class, args; - Class = function () { - this.init.apply(this, arguments); - }; - if (arguments.length > 1) { - if (arguments[0]) { - Class.prototype = $.extend(new arguments[0](), arguments[arguments.length - 1]); - Class._super = arguments[0].prototype; - } else { - Class.prototype = arguments[arguments.length - 1]; - } - if (arguments.length > 2) { - args = Array.prototype.slice.call(arguments, 1, -1); - args.unshift(Class.prototype); - $.extend.apply($, args); - } - } else { - Class.prototype = arguments[0]; - } - Class.prototype.cls = Class; - return Class; - }; - - /** - * Wraps a format string for tooltips - * {{x}} - * {{x.2} - * {{x:months}} - */ - $.SPFormatClass = SPFormat = createClass({ - fre: /\{\{([\w.]+?)(:(.+?))?\}\}/g, - precre: /(\w+)\.(\d+)/, - - init: function (format, fclass) { - this.format = format; - this.fclass = fclass; - }, - - render: function (fieldset, lookups, options) { - var self = this, - fields = fieldset, - match, token, lookupkey, fieldvalue, prec; - return this.format.replace(this.fre, function () { - var lookup; - token = arguments[1]; - lookupkey = arguments[3]; - match = self.precre.exec(token); - if (match) { - prec = match[2]; - token = match[1]; - } else { - prec = false; - } - fieldvalue = fields[token]; - if (fieldvalue === undefined) { - return ''; - } - if (lookupkey && lookups && lookups[lookupkey]) { - lookup = lookups[lookupkey]; - if (lookup.get) { // RangeMap - return lookups[lookupkey].get(fieldvalue) || fieldvalue; - } else { - return lookups[lookupkey][fieldvalue] || fieldvalue; - } - } - if (isNumber(fieldvalue)) { - if (options.get('numberFormatter')) { - fieldvalue = options.get('numberFormatter')(fieldvalue); - } else { - fieldvalue = formatNumber(fieldvalue, prec, - options.get('numberDigitGroupCount'), - options.get('numberDigitGroupSep'), - options.get('numberDecimalMark')); - } - } - return fieldvalue; - }); - } - }); - - // convience method to avoid needing the new operator - $.spformat = function(format, fclass) { - return new SPFormat(format, fclass); - }; - - clipval = function (val, min, max) { - if (val < min) { - return min; - } - if (val > max) { - return max; - } - return val; - }; - - quartile = function (values, q) { - var vl; - if (q === 2) { - vl = Math.floor(values.length / 2); - return values.length % 2 ? values[vl] : (values[vl-1] + values[vl]) / 2; - } else { - if (values.length % 2 ) { // odd - vl = (values.length * q + q) / 4; - return vl % 1 ? (values[Math.floor(vl)] + values[Math.floor(vl) - 1]) / 2 : values[vl-1]; - } else { //even - vl = (values.length * q + 2) / 4; - return vl % 1 ? (values[Math.floor(vl)] + values[Math.floor(vl) - 1]) / 2 : values[vl-1]; - - } - } - }; - - normalizeValue = function (val) { - var nf; - switch (val) { - case 'undefined': - val = undefined; - break; - case 'null': - val = null; - break; - case 'true': - val = true; - break; - case 'false': - val = false; - break; - default: - nf = parseFloat(val); - if (val == nf) { - val = nf; - } - } - return val; - }; - - normalizeValues = function (vals) { - var i, result = []; - for (i = vals.length; i--;) { - result[i] = normalizeValue(vals[i]); - } - return result; - }; - - remove = function (vals, filter) { - var i, vl, result = []; - for (i = 0, vl = vals.length; i < vl; i++) { - if (vals[i] !== filter) { - result.push(vals[i]); - } - } - return result; - }; - - isNumber = function (num) { - return !isNaN(parseFloat(num)) && isFinite(num); - }; - - formatNumber = function (num, prec, groupsize, groupsep, decsep) { - var p, i; - num = (prec === false ? parseFloat(num).toString() : num.toFixed(prec)).split(''); - p = (p = $.inArray('.', num)) < 0 ? num.length : p; - if (p < num.length) { - num[p] = decsep; - } - for (i = p - groupsize; i > 0; i -= groupsize) { - num.splice(i, 0, groupsep); - } - return num.join(''); - }; - - // determine if all values of an array match a value - // returns true if the array is empty - all = function (val, arr, ignoreNull) { - var i; - for (i = arr.length; i--; ) { - if (ignoreNull && arr[i] === null) continue; - if (arr[i] !== val) { - return false; - } - } - return true; - }; - - // sums the numeric values in an array, ignoring other values - sum = function (vals) { - var total = 0, i; - for (i = vals.length; i--;) { - total += typeof vals[i] === 'number' ? vals[i] : 0; - } - return total; - }; - - ensureArray = function (val) { - return $.isArray(val) ? val : [val]; - }; - - // http://paulirish.com/2008/bookmarklet-inject-new-css-rules/ - addCSS = function(css) { - var tag; - //if ('\v' == 'v') /* ie only */ { - if (document.createStyleSheet) { - document.createStyleSheet().cssText = css; - } else { - tag = document.createElement('style'); - tag.type = 'text/css'; - document.getElementsByTagName('head')[0].appendChild(tag); - tag[(typeof document.body.style.WebkitAppearance == 'string') /* webkit only */ ? 'innerText' : 'innerHTML'] = css; - } - }; - - // Provide a cross-browser interface to a few simple drawing primitives - $.fn.simpledraw = function (width, height, useExisting, interact) { - var target, mhandler; - if (useExisting && (target = this.data('_jqs_vcanvas'))) { - return target; - } - - if ($.fn.sparkline.canvas === false) { - // We've already determined that neither Canvas nor VML are available - return false; - - } else if ($.fn.sparkline.canvas === undefined) { - // No function defined yet -- need to see if we support Canvas or VML - var el = document.createElement('canvas'); - if (!!(el.getContext && el.getContext('2d'))) { - // Canvas is available - $.fn.sparkline.canvas = function(width, height, target, interact) { - return new VCanvas_canvas(width, height, target, interact); - }; - } else if (document.namespaces && !document.namespaces.v) { - // VML is available - document.namespaces.add('v', 'urn:schemas-microsoft-com:vml', '#default#VML'); - $.fn.sparkline.canvas = function(width, height, target, interact) { - return new VCanvas_vml(width, height, target); - }; - } else { - // Neither Canvas nor VML are available - $.fn.sparkline.canvas = false; - return false; - } - } - - if (width === undefined) { - width = $(this).innerWidth(); - } - if (height === undefined) { - height = $(this).innerHeight(); - } - - target = $.fn.sparkline.canvas(width, height, this, interact); - - mhandler = $(this).data('_jqs_mhandler'); - if (mhandler) { - mhandler.registerCanvas(target); - } - return target; - }; - - $.fn.cleardraw = function () { - var target = this.data('_jqs_vcanvas'); - if (target) { - target.reset(); - } - }; - - $.RangeMapClass = RangeMap = createClass({ - init: function (map) { - var key, range, rangelist = []; - for (key in map) { - if (map.hasOwnProperty(key) && typeof key === 'string' && key.indexOf(':') > -1) { - range = key.split(':'); - range[0] = range[0].length === 0 ? -Infinity : parseFloat(range[0]); - range[1] = range[1].length === 0 ? Infinity : parseFloat(range[1]); - range[2] = map[key]; - rangelist.push(range); - } - } - this.map = map; - this.rangelist = rangelist || false; - }, - - get: function (value) { - var rangelist = this.rangelist, - i, range, result; - if ((result = this.map[value]) !== undefined) { - return result; - } - if (rangelist) { - for (i = rangelist.length; i--;) { - range = rangelist[i]; - if (range[0] <= value && range[1] >= value) { - return range[2]; - } - } - } - return undefined; - } - }); - - // Convenience function - $.range_map = function(map) { - return new RangeMap(map); - }; - - MouseHandler = createClass({ - init: function (el, options) { - var $el = $(el); - this.$el = $el; - this.options = options; - this.currentPageX = 0; - this.currentPageY = 0; - this.el = el; - this.splist = []; - this.tooltip = null; - this.over = false; - this.displayTooltips = !options.get('disableTooltips'); - this.highlightEnabled = !options.get('disableHighlight'); - }, - - registerSparkline: function (sp) { - this.splist.push(sp); - if (this.over) { - this.updateDisplay(); - } - }, - - registerCanvas: function (canvas) { - var $canvas = $(canvas.canvas); - this.canvas = canvas; - this.$canvas = $canvas; - $canvas.mouseenter($.proxy(this.mouseenter, this)); - $canvas.mouseleave($.proxy(this.mouseleave, this)); - $canvas.click($.proxy(this.mouseclick, this)); - }, - - reset: function (removeTooltip) { - this.splist = []; - if (this.tooltip && removeTooltip) { - this.tooltip.remove(); - this.tooltip = undefined; - } - }, - - mouseclick: function (e) { - var clickEvent = $.Event('sparklineClick'); - clickEvent.originalEvent = e; - clickEvent.sparklines = this.splist; - this.$el.trigger(clickEvent); - }, - - mouseenter: function (e) { - $(document.body).unbind('mousemove.jqs'); - $(document.body).bind('mousemove.jqs', $.proxy(this.mousemove, this)); - this.over = true; - this.currentPageX = e.pageX; - this.currentPageY = e.pageY; - this.currentEl = e.target; - if (!this.tooltip && this.displayTooltips) { - this.tooltip = new Tooltip(this.options); - this.tooltip.updatePosition(e.pageX, e.pageY); - } - this.updateDisplay(); - }, - - mouseleave: function () { - $(document.body).unbind('mousemove.jqs'); - var splist = this.splist, - spcount = splist.length, - needsRefresh = false, - sp, i; - this.over = false; - this.currentEl = null; - - if (this.tooltip) { - this.tooltip.remove(); - this.tooltip = null; - } - - for (i = 0; i < spcount; i++) { - sp = splist[i]; - if (sp.clearRegionHighlight()) { - needsRefresh = true; - } - } - - if (needsRefresh) { - this.canvas.render(); - } - }, - - mousemove: function (e) { - this.currentPageX = e.pageX; - this.currentPageY = e.pageY; - this.currentEl = e.target; - if (this.tooltip) { - this.tooltip.updatePosition(e.pageX, e.pageY); - } - this.updateDisplay(); - }, - - updateDisplay: function () { - var splist = this.splist, - spcount = splist.length, - needsRefresh = false, - offset = this.$canvas.offset(), - localX = this.currentPageX - offset.left, - localY = this.currentPageY - offset.top, - tooltiphtml, sp, i, result, changeEvent; - if (!this.over) { - return; - } - for (i = 0; i < spcount; i++) { - sp = splist[i]; - result = sp.setRegionHighlight(this.currentEl, localX, localY); - if (result) { - needsRefresh = true; - } - } - if (needsRefresh) { - changeEvent = $.Event('sparklineRegionChange'); - changeEvent.sparklines = this.splist; - this.$el.trigger(changeEvent); - if (this.tooltip) { - tooltiphtml = ''; - for (i = 0; i < spcount; i++) { - sp = splist[i]; - tooltiphtml += sp.getCurrentRegionTooltip(); - } - this.tooltip.setContent(tooltiphtml); - } - if (!this.disableHighlight) { - this.canvas.render(); - } - } - if (result === null) { - this.mouseleave(); - } - } - }); - - - Tooltip = createClass({ - sizeStyle: 'position: static !important;' + - 'display: block !important;' + - 'visibility: hidden !important;' + - 'float: left !important;', - - init: function (options) { - var tooltipClassname = options.get('tooltipClassname', 'jqstooltip'), - sizetipStyle = this.sizeStyle, - offset; - this.container = options.get('tooltipContainer') || document.body; - this.tooltipOffsetX = options.get('tooltipOffsetX', 10); - this.tooltipOffsetY = options.get('tooltipOffsetY', 12); - // remove any previous lingering tooltip - $('#jqssizetip').remove(); - $('#jqstooltip').remove(); - this.sizetip = $('<div/>', { - id: 'jqssizetip', - style: sizetipStyle, - 'class': tooltipClassname - }); - this.tooltip = $('<div/>', { - id: 'jqstooltip', - 'class': tooltipClassname - }).appendTo(this.container); - // account for the container's location - offset = this.tooltip.offset(); - this.offsetLeft = offset.left; - this.offsetTop = offset.top; - this.hidden = true; - $(window).unbind('resize.jqs scroll.jqs'); - $(window).bind('resize.jqs scroll.jqs', $.proxy(this.updateWindowDims, this)); - this.updateWindowDims(); - }, - - updateWindowDims: function () { - this.scrollTop = $(window).scrollTop(); - this.scrollLeft = $(window).scrollLeft(); - this.scrollRight = this.scrollLeft + $(window).width(); - this.updatePosition(); - }, - - getSize: function (content) { - this.sizetip.html(content).appendTo(this.container); - this.width = this.sizetip.width() + 1; - this.height = this.sizetip.height(); - this.sizetip.remove(); - }, - - setContent: function (content) { - if (!content) { - this.tooltip.css('visibility', 'hidden'); - this.hidden = true; - return; - } - this.getSize(content); - this.tooltip.html(content) - .css({ - 'width': this.width, - 'height': this.height, - 'visibility': 'visible' - }); - if (this.hidden) { - this.hidden = false; - this.updatePosition(); - } - }, - - updatePosition: function (x, y) { - if (x === undefined) { - if (this.mousex === undefined) { - return; - } - x = this.mousex - this.offsetLeft; - y = this.mousey - this.offsetTop; - - } else { - this.mousex = x = x - this.offsetLeft; - this.mousey = y = y - this.offsetTop; - } - if (!this.height || !this.width || this.hidden) { - return; - } - - y -= this.height + this.tooltipOffsetY; - x += this.tooltipOffsetX; - - if (y < this.scrollTop) { - y = this.scrollTop; - } - if (x < this.scrollLeft) { - x = this.scrollLeft; - } else if (x + this.width > this.scrollRight) { - x = this.scrollRight - this.width; - } - - this.tooltip.css({ - 'left': x, - 'top': y - }); - }, - - remove: function () { - this.tooltip.remove(); - this.sizetip.remove(); - this.sizetip = this.tooltip = undefined; - $(window).unbind('resize.jqs scroll.jqs'); - } - }); - - initStyles = function() { - addCSS(defaultStyles); - }; - - $(initStyles); - - pending = []; - $.fn.sparkline = function (userValues, userOptions) { - return this.each(function () { - var options = new $.fn.sparkline.options(this, userOptions), - $this = $(this), - render, i; - render = function () { - var values, width, height, tmp, mhandler, sp, vals; - if (userValues === 'html' || userValues === undefined) { - vals = this.getAttribute(options.get('tagValuesAttribute')); - if (vals === undefined || vals === null) { - vals = $this.html(); - } - values = vals.replace(/(^\s*<!--)|(-->\s*$)|\s+/g, '').split(','); - } else { - values = userValues; - } - - width = options.get('width') === 'auto' ? values.length * options.get('defaultPixelsPerValue') : options.get('width'); - if (options.get('height') === 'auto') { - if (!options.get('composite') || !$.data(this, '_jqs_vcanvas')) { - // must be a better way to get the line height - tmp = document.createElement('span'); - tmp.innerHTML = 'a'; - $this.html(tmp); - height = $(tmp).innerHeight() || $(tmp).height(); - $(tmp).remove(); - tmp = null; - } - } else { - height = options.get('height'); - } - - if (!options.get('disableInteraction')) { - mhandler = $.data(this, '_jqs_mhandler'); - if (!mhandler) { - mhandler = new MouseHandler(this, options); - $.data(this, '_jqs_mhandler', mhandler); - } else if (!options.get('composite')) { - mhandler.reset(); - } - } else { - mhandler = false; - } - - if (options.get('composite') && !$.data(this, '_jqs_vcanvas')) { - if (!$.data(this, '_jqs_errnotify')) { - alert('Attempted to attach a composite sparkline to an element with no existing sparkline'); - $.data(this, '_jqs_errnotify', true); - } - return; - } - - sp = new $.fn.sparkline[options.get('type')](this, values, options, width, height); - - sp.render(); - - if (mhandler) { - mhandler.registerSparkline(sp); - } - }; - if (($(this).html() && !options.get('disableHiddenCheck') && $(this).is(':hidden')) || !$(this).parents('body').length) { - if (!options.get('composite') && $.data(this, '_jqs_pending')) { - // remove any existing references to the element - for (i = pending.length; i; i--) { - if (pending[i - 1][0] == this) { - pending.splice(i - 1, 1); - } - } - } - pending.push([this, render]); - $.data(this, '_jqs_pending', true); - } else { - render.call(this); - } - }); - }; - - $.fn.sparkline.defaults = getDefaults(); - - - $.sparkline_display_visible = function () { - var el, i, pl; - var done = []; - for (i = 0, pl = pending.length; i < pl; i++) { - el = pending[i][0]; - if ($(el).is(':visible') && !$(el).parents().is(':hidden')) { - pending[i][1].call(el); - $.data(pending[i][0], '_jqs_pending', false); - done.push(i); - } else if (!$(el).closest('html').length && !$.data(el, '_jqs_pending')) { - // element has been inserted and removed from the DOM - // If it was not yet inserted into the dom then the .data request - // will return true. - // removing from the dom causes the data to be removed. - $.data(pending[i][0], '_jqs_pending', false); - done.push(i); - } - } - for (i = done.length; i; i--) { - pending.splice(done[i - 1], 1); - } - }; - - - /** - * User option handler - */ - $.fn.sparkline.options = createClass({ - init: function (tag, userOptions) { - var extendedOptions, defaults, base, tagOptionType; - this.userOptions = userOptions = userOptions || {}; - this.tag = tag; - this.tagValCache = {}; - defaults = $.fn.sparkline.defaults; - base = defaults.common; - this.tagOptionsPrefix = userOptions.enableTagOptions && (userOptions.tagOptionsPrefix || base.tagOptionsPrefix); - - tagOptionType = this.getTagSetting('type'); - if (tagOptionType === UNSET_OPTION) { - extendedOptions = defaults[userOptions.type || base.type]; - } else { - extendedOptions = defaults[tagOptionType]; - } - this.mergedOptions = $.extend({}, base, extendedOptions, userOptions); - }, - - - getTagSetting: function (key) { - var prefix = this.tagOptionsPrefix, - val, i, pairs, keyval; - if (prefix === false || prefix === undefined) { - return UNSET_OPTION; - } - if (this.tagValCache.hasOwnProperty(key)) { - val = this.tagValCache.key; - } else { - val = this.tag.getAttribute(prefix + key); - if (val === undefined || val === null) { - val = UNSET_OPTION; - } else if (val.substr(0, 1) === '[') { - val = val.substr(1, val.length - 2).split(','); - for (i = val.length; i--;) { - val[i] = normalizeValue(val[i].replace(/(^\s*)|(\s*$)/g, '')); - } - } else if (val.substr(0, 1) === '{') { - pairs = val.substr(1, val.length - 2).split(','); - val = {}; - for (i = pairs.length; i--;) { - keyval = pairs[i].split(':', 2); - val[keyval[0].replace(/(^\s*)|(\s*$)/g, '')] = normalizeValue(keyval[1].replace(/(^\s*)|(\s*$)/g, '')); - } - } else { - val = normalizeValue(val); - } - this.tagValCache.key = val; - } - return val; - }, - - get: function (key, defaultval) { - var tagOption = this.getTagSetting(key), - result; - if (tagOption !== UNSET_OPTION) { - return tagOption; - } - return (result = this.mergedOptions[key]) === undefined ? defaultval : result; - } - }); - - - $.fn.sparkline._base = createClass({ - disabled: false, - - init: function (el, values, options, width, height) { - this.el = el; - this.$el = $(el); - this.values = values; - this.options = options; - this.width = width; - this.height = height; - this.currentRegion = undefined; - }, - - /** - * Setup the canvas - */ - initTarget: function () { - var interactive = !this.options.get('disableInteraction'); - if (!(this.target = this.$el.simpledraw(this.width, this.height, this.options.get('composite'), interactive))) { - this.disabled = true; - } else { - this.canvasWidth = this.target.pixelWidth; - this.canvasHeight = this.target.pixelHeight; - } - }, - - /** - * Actually render the chart to the canvas - */ - render: function () { - if (this.disabled) { - this.el.innerHTML = ''; - return false; - } - return true; - }, - - /** - * Return a region id for a given x/y co-ordinate - */ - getRegion: function (x, y) { - }, - - /** - * Highlight an item based on the moused-over x,y co-ordinate - */ - setRegionHighlight: function (el, x, y) { - var currentRegion = this.currentRegion, - highlightEnabled = !this.options.get('disableHighlight'), - newRegion; - if (x > this.canvasWidth || y > this.canvasHeight || x < 0 || y < 0) { - return null; - } - newRegion = this.getRegion(el, x, y); - if (currentRegion !== newRegion) { - if (currentRegion !== undefined && highlightEnabled) { - this.removeHighlight(); - } - this.currentRegion = newRegion; - if (newRegion !== undefined && highlightEnabled) { - this.renderHighlight(); - } - return true; - } - return false; - }, - - /** - * Reset any currently highlighted item - */ - clearRegionHighlight: function () { - if (this.currentRegion !== undefined) { - this.removeHighlight(); - this.currentRegion = undefined; - return true; - } - return false; - }, - - renderHighlight: function () { - this.changeHighlight(true); - }, - - removeHighlight: function () { - this.changeHighlight(false); - }, - - changeHighlight: function (highlight) {}, - - /** - * Fetch the HTML to display as a tooltip - */ - getCurrentRegionTooltip: function () { - var options = this.options, - header = '', - entries = [], - fields, formats, formatlen, fclass, text, i, - showFields, showFieldsKey, newFields, fv, - formatter, format, fieldlen, j; - if (this.currentRegion === undefined) { - return ''; - } - fields = this.getCurrentRegionFields(); - formatter = options.get('tooltipFormatter'); - if (formatter) { - return formatter(this, options, fields); - } - if (options.get('tooltipChartTitle')) { - header += '<div class="jqs jqstitle">' + options.get('tooltipChartTitle') + '</div>\n'; - } - formats = this.options.get('tooltipFormat'); - if (!formats) { - return ''; - } - if (!$.isArray(formats)) { - formats = [formats]; - } - if (!$.isArray(fields)) { - fields = [fields]; - } - showFields = this.options.get('tooltipFormatFieldlist'); - showFieldsKey = this.options.get('tooltipFormatFieldlistKey'); - if (showFields && showFieldsKey) { - // user-selected ordering of fields - newFields = []; - for (i = fields.length; i--;) { - fv = fields[i][showFieldsKey]; - if ((j = $.inArray(fv, showFields)) != -1) { - newFields[j] = fields[i]; - } - } - fields = newFields; - } - formatlen = formats.length; - fieldlen = fields.length; - for (i = 0; i < formatlen; i++) { - format = formats[i]; - if (typeof format === 'string') { - format = new SPFormat(format); - } - fclass = format.fclass || 'jqsfield'; - for (j = 0; j < fieldlen; j++) { - if (!fields[j].isNull || !options.get('tooltipSkipNull')) { - $.extend(fields[j], { - prefix: options.get('tooltipPrefix'), - suffix: options.get('tooltipSuffix') - }); - text = format.render(fields[j], options.get('tooltipValueLookups'), options); - entries.push('<div class="' + fclass + '">' + text + '</div>'); - } - } - } - if (entries.length) { - return header + entries.join('\n'); - } - return ''; - }, - - getCurrentRegionFields: function () {}, - - calcHighlightColor: function (color, options) { - var highlightColor = options.get('highlightColor'), - lighten = options.get('highlightLighten'), - parse, mult, rgbnew, i; - if (highlightColor) { - return highlightColor; - } - if (lighten) { - // extract RGB values - parse = /^#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(color) || /^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(color); - if (parse) { - rgbnew = []; - mult = color.length === 4 ? 16 : 1; - for (i = 0; i < 3; i++) { - rgbnew[i] = clipval(Math.round(parseInt(parse[i + 1], 16) * mult * lighten), 0, 255); - } - return 'rgb(' + rgbnew.join(',') + ')'; - } - - } - return color; - } - - }); - - barHighlightMixin = { - changeHighlight: function (highlight) { - var currentRegion = this.currentRegion, - target = this.target, - shapeids = this.regionShapes[currentRegion], - newShapes; - // will be null if the region value was null - if (shapeids) { - newShapes = this.renderRegion(currentRegion, highlight); - if ($.isArray(newShapes) || $.isArray(shapeids)) { - target.replaceWithShapes(shapeids, newShapes); - this.regionShapes[currentRegion] = $.map(newShapes, function (newShape) { - return newShape.id; - }); - } else { - target.replaceWithShape(shapeids, newShapes); - this.regionShapes[currentRegion] = newShapes.id; - } - } - }, - - render: function () { - var values = this.values, - target = this.target, - regionShapes = this.regionShapes, - shapes, ids, i, j; - - if (!this.cls._super.render.call(this)) { - return; - } - for (i = values.length; i--;) { - shapes = this.renderRegion(i); - if (shapes) { - if ($.isArray(shapes)) { - ids = []; - for (j = shapes.length; j--;) { - shapes[j].append(); - ids.push(shapes[j].id); - } - regionShapes[i] = ids; - } else { - shapes.append(); - regionShapes[i] = shapes.id; // store just the shapeid - } - } else { - // null value - regionShapes[i] = null; - } - } - target.render(); - } - }; - - /** - * Line charts - */ - $.fn.sparkline.line = line = createClass($.fn.sparkline._base, { - type: 'line', - - init: function (el, values, options, width, height) { - line._super.init.call(this, el, values, options, width, height); - this.vertices = []; - this.regionMap = []; - this.xvalues = []; - this.yvalues = []; - this.yminmax = []; - this.hightlightSpotId = null; - this.lastShapeId = null; - this.initTarget(); - }, - - getRegion: function (el, x, y) { - var i, - regionMap = this.regionMap; // maps regions to value positions - for (i = regionMap.length; i--;) { - if (regionMap[i] !== null && x >= regionMap[i][0] && x <= regionMap[i][1]) { - return regionMap[i][2]; - } - } - return undefined; - }, - - getCurrentRegionFields: function () { - var currentRegion = this.currentRegion; - return { - isNull: this.yvalues[currentRegion] === null, - x: this.xvalues[currentRegion], - y: this.yvalues[currentRegion], - color: this.options.get('lineColor'), - fillColor: this.options.get('fillColor'), - offset: currentRegion - }; - }, - - renderHighlight: function () { - var currentRegion = this.currentRegion, - target = this.target, - vertex = this.vertices[currentRegion], - options = this.options, - spotRadius = options.get('spotRadius'), - highlightSpotColor = options.get('highlightSpotColor'), - highlightLineColor = options.get('highlightLineColor'), - highlightSpot, highlightLine; - - if (!vertex) { - return; - } - if (spotRadius && highlightSpotColor) { - highlightSpot = target.drawCircle(vertex[0], vertex[1], - spotRadius, undefined, highlightSpotColor); - this.highlightSpotId = highlightSpot.id; - target.insertAfterShape(this.lastShapeId, highlightSpot); - } - if (highlightLineColor) { - highlightLine = target.drawLine(vertex[0], this.canvasTop, vertex[0], - this.canvasTop + this.canvasHeight, highlightLineColor); - this.highlightLineId = highlightLine.id; - target.insertAfterShape(this.lastShapeId, highlightLine); - } - }, - - removeHighlight: function () { - var target = this.target; - if (this.highlightSpotId) { - target.removeShapeId(this.highlightSpotId); - this.highlightSpotId = null; - } - if (this.highlightLineId) { - target.removeShapeId(this.highlightLineId); - this.highlightLineId = null; - } - }, - - scanValues: function () { - var values = this.values, - valcount = values.length, - xvalues = this.xvalues, - yvalues = this.yvalues, - yminmax = this.yminmax, - i, val, isStr, isArray, sp; - for (i = 0; i < valcount; i++) { - val = values[i]; - isStr = typeof(values[i]) === 'string'; - isArray = typeof(values[i]) === 'object' && values[i] instanceof Array; - sp = isStr && values[i].split(':'); - if (isStr && sp.length === 2) { // x:y - xvalues.push(Number(sp[0])); - yvalues.push(Number(sp[1])); - yminmax.push(Number(sp[1])); - } else if (isArray) { - xvalues.push(val[0]); - yvalues.push(val[1]); - yminmax.push(val[1]); - } else { - xvalues.push(i); - if (values[i] === null || values[i] === 'null') { - yvalues.push(null); - } else { - yvalues.push(Number(val)); - yminmax.push(Number(val)); - } - } - } - if (this.options.get('xvalues')) { - xvalues = this.options.get('xvalues'); - } - - this.maxy = this.maxyorg = Math.max.apply(Math, yminmax); - this.miny = this.minyorg = Math.min.apply(Math, yminmax); - - this.maxx = Math.max.apply(Math, xvalues); - this.minx = Math.min.apply(Math, xvalues); - - this.xvalues = xvalues; - this.yvalues = yvalues; - this.yminmax = yminmax; - - }, - - processRangeOptions: function () { - var options = this.options, - normalRangeMin = options.get('normalRangeMin'), - normalRangeMax = options.get('normalRangeMax'); - - if (normalRangeMin !== undefined) { - if (normalRangeMin < this.miny) { - this.miny = normalRangeMin; - } - if (normalRangeMax > this.maxy) { - this.maxy = normalRangeMax; - } - } - if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < this.miny)) { - this.miny = options.get('chartRangeMin'); - } - if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > this.maxy)) { - this.maxy = options.get('chartRangeMax'); - } - if (options.get('chartRangeMinX') !== undefined && (options.get('chartRangeClipX') || options.get('chartRangeMinX') < this.minx)) { - this.minx = options.get('chartRangeMinX'); - } - if (options.get('chartRangeMaxX') !== undefined && (options.get('chartRangeClipX') || options.get('chartRangeMaxX') > this.maxx)) { - this.maxx = options.get('chartRangeMaxX'); - } - - }, - - drawNormalRange: function (canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey) { - var normalRangeMin = this.options.get('normalRangeMin'), - normalRangeMax = this.options.get('normalRangeMax'), - ytop = canvasTop + Math.round(canvasHeight - (canvasHeight * ((normalRangeMax - this.miny) / rangey))), - height = Math.round((canvasHeight * (normalRangeMax - normalRangeMin)) / rangey); - this.target.drawRect(canvasLeft, ytop, canvasWidth, height, undefined, this.options.get('normalRangeColor')).append(); - }, - - render: function () { - var options = this.options, - target = this.target, - canvasWidth = this.canvasWidth, - canvasHeight = this.canvasHeight, - vertices = this.vertices, - spotRadius = options.get('spotRadius'), - regionMap = this.regionMap, - rangex, rangey, yvallast, - canvasTop, canvasLeft, - vertex, path, paths, x, y, xnext, xpos, xposnext, - last, next, yvalcount, lineShapes, fillShapes, plen, - valueSpots, hlSpotsEnabled, color, xvalues, yvalues, i; - - if (!line._super.render.call(this)) { - return; - } - - this.scanValues(); - this.processRangeOptions(); - - xvalues = this.xvalues; - yvalues = this.yvalues; - - if (!this.yminmax.length || this.yvalues.length < 2) { - // empty or all null valuess - return; - } - - canvasTop = canvasLeft = 0; - - rangex = this.maxx - this.minx === 0 ? 1 : this.maxx - this.minx; - rangey = this.maxy - this.miny === 0 ? 1 : this.maxy - this.miny; - yvallast = this.yvalues.length - 1; - - if (spotRadius && (canvasWidth < (spotRadius * 4) || canvasHeight < (spotRadius * 4))) { - spotRadius = 0; - } - if (spotRadius) { - // adjust the canvas size as required so that spots will fit - hlSpotsEnabled = options.get('highlightSpotColor') && !options.get('disableInteraction'); - if (hlSpotsEnabled || options.get('minSpotColor') || (options.get('spotColor') && yvalues[yvallast] === this.miny)) { - canvasHeight -= Math.ceil(spotRadius); - } - if (hlSpotsEnabled || options.get('maxSpotColor') || (options.get('spotColor') && yvalues[yvallast] === this.maxy)) { - canvasHeight -= Math.ceil(spotRadius); - canvasTop += Math.ceil(spotRadius); - } - if (hlSpotsEnabled || - ((options.get('minSpotColor') || options.get('maxSpotColor')) && (yvalues[0] === this.miny || yvalues[0] === this.maxy))) { - canvasLeft += Math.ceil(spotRadius); - canvasWidth -= Math.ceil(spotRadius); - } - if (hlSpotsEnabled || options.get('spotColor') || - (options.get('minSpotColor') || options.get('maxSpotColor') && - (yvalues[yvallast] === this.miny || yvalues[yvallast] === this.maxy))) { - canvasWidth -= Math.ceil(spotRadius); - } - } - - - canvasHeight--; - - if (options.get('normalRangeMin') !== undefined && !options.get('drawNormalOnTop')) { - this.drawNormalRange(canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey); - } - - path = []; - paths = [path]; - last = next = null; - yvalcount = yvalues.length; - for (i = 0; i < yvalcount; i++) { - x = xvalues[i]; - xnext = xvalues[i + 1]; - y = yvalues[i]; - xpos = canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)); - xposnext = i < yvalcount - 1 ? canvasLeft + Math.round((xnext - this.minx) * (canvasWidth / rangex)) : canvasWidth; - next = xpos + ((xposnext - xpos) / 2); - regionMap[i] = [last || 0, next, i]; - last = next; - if (y === null) { - if (i) { - if (yvalues[i - 1] !== null) { - path = []; - paths.push(path); - } - vertices.push(null); - } - } else { - if (y < this.miny) { - y = this.miny; - } - if (y > this.maxy) { - y = this.maxy; - } - if (!path.length) { - // previous value was null - path.push([xpos, canvasTop + canvasHeight]); - } - vertex = [xpos, canvasTop + Math.round(canvasHeight - (canvasHeight * ((y - this.miny) / rangey)))]; - path.push(vertex); - vertices.push(vertex); - } - } - - lineShapes = []; - fillShapes = []; - plen = paths.length; - for (i = 0; i < plen; i++) { - path = paths[i]; - if (path.length) { - if (options.get('fillColor')) { - path.push([path[path.length - 1][0], (canvasTop + canvasHeight)]); - fillShapes.push(path.slice(0)); - path.pop(); - } - // if there's only a single point in this path, then we want to display it - // as a vertical line which means we keep path[0] as is - if (path.length > 2) { - // else we want the first value - path[0] = [path[0][0], path[1][1]]; - } - lineShapes.push(path); - } - } - - // draw the fill first, then optionally the normal range, then the line on top of that - plen = fillShapes.length; - for (i = 0; i < plen; i++) { - target.drawShape(fillShapes[i], - options.get('fillColor'), options.get('fillColor')).append(); - } - - if (options.get('normalRangeMin') !== undefined && options.get('drawNormalOnTop')) { - this.drawNormalRange(canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey); - } - - plen = lineShapes.length; - for (i = 0; i < plen; i++) { - target.drawShape(lineShapes[i], options.get('lineColor'), undefined, - options.get('lineWidth')).append(); - } - - if (spotRadius && options.get('valueSpots')) { - valueSpots = options.get('valueSpots'); - if (valueSpots.get === undefined) { - valueSpots = new RangeMap(valueSpots); - } - for (i = 0; i < yvalcount; i++) { - color = valueSpots.get(yvalues[i]); - if (color) { - target.drawCircle(canvasLeft + Math.round((xvalues[i] - this.minx) * (canvasWidth / rangex)), - canvasTop + Math.round(canvasHeight - (canvasHeight * ((yvalues[i] - this.miny) / rangey))), - spotRadius, undefined, - color).append(); - } - } - - } - if (spotRadius && options.get('spotColor') && yvalues[yvallast] !== null) { - target.drawCircle(canvasLeft + Math.round((xvalues[xvalues.length - 1] - this.minx) * (canvasWidth / rangex)), - canvasTop + Math.round(canvasHeight - (canvasHeight * ((yvalues[yvallast] - this.miny) / rangey))), - spotRadius, undefined, - options.get('spotColor')).append(); - } - if (this.maxy !== this.minyorg) { - if (spotRadius && options.get('minSpotColor')) { - x = xvalues[$.inArray(this.minyorg, yvalues)]; - target.drawCircle(canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)), - canvasTop + Math.round(canvasHeight - (canvasHeight * ((this.minyorg - this.miny) / rangey))), - spotRadius, undefined, - options.get('minSpotColor')).append(); - } - if (spotRadius && options.get('maxSpotColor')) { - x = xvalues[$.inArray(this.maxyorg, yvalues)]; - target.drawCircle(canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)), - canvasTop + Math.round(canvasHeight - (canvasHeight * ((this.maxyorg - this.miny) / rangey))), - spotRadius, undefined, - options.get('maxSpotColor')).append(); - } - } - - this.lastShapeId = target.getLastShapeId(); - this.canvasTop = canvasTop; - target.render(); - } - }); - - /** - * Bar charts - */ - $.fn.sparkline.bar = bar = createClass($.fn.sparkline._base, barHighlightMixin, { - type: 'bar', - - init: function (el, values, options, width, height) { - var barWidth = parseInt(options.get('barWidth'), 10), - barSpacing = parseInt(options.get('barSpacing'), 10), - chartRangeMin = options.get('chartRangeMin'), - chartRangeMax = options.get('chartRangeMax'), - chartRangeClip = options.get('chartRangeClip'), - stackMin = Infinity, - stackMax = -Infinity, - isStackString, groupMin, groupMax, stackRanges, - numValues, i, vlen, range, zeroAxis, xaxisOffset, min, max, clipMin, clipMax, - stacked, vlist, j, slen, svals, val, yoffset, yMaxCalc, canvasHeightEf; - bar._super.init.call(this, el, values, options, width, height); - - // scan values to determine whether to stack bars - for (i = 0, vlen = values.length; i < vlen; i++) { - val = values[i]; - isStackString = typeof(val) === 'string' && val.indexOf(':') > -1; - if (isStackString || $.isArray(val)) { - stacked = true; - if (isStackString) { - val = values[i] = normalizeValues(val.split(':')); - } - val = remove(val, null); // min/max will treat null as zero - groupMin = Math.min.apply(Math, val); - groupMax = Math.max.apply(Math, val); - if (groupMin < stackMin) { - stackMin = groupMin; - } - if (groupMax > stackMax) { - stackMax = groupMax; - } - } - } - - this.stacked = stacked; - this.regionShapes = {}; - this.barWidth = barWidth; - this.barSpacing = barSpacing; - this.totalBarWidth = barWidth + barSpacing; - this.width = width = (values.length * barWidth) + ((values.length - 1) * barSpacing); - - this.initTarget(); - - if (chartRangeClip) { - clipMin = chartRangeMin === undefined ? -Infinity : chartRangeMin; - clipMax = chartRangeMax === undefined ? Infinity : chartRangeMax; - } - - numValues = []; - stackRanges = stacked ? [] : numValues; - var stackTotals = []; - var stackRangesNeg = []; - for (i = 0, vlen = values.length; i < vlen; i++) { - if (stacked) { - vlist = values[i]; - values[i] = svals = []; - stackTotals[i] = 0; - stackRanges[i] = stackRangesNeg[i] = 0; - for (j = 0, slen = vlist.length; j < slen; j++) { - val = svals[j] = chartRangeClip ? clipval(vlist[j], clipMin, clipMax) : vlist[j]; - if (val !== null) { - if (val > 0) { - stackTotals[i] += val; - } - if (stackMin < 0 && stackMax > 0) { - if (val < 0) { - stackRangesNeg[i] += Math.abs(val); - } else { - stackRanges[i] += val; - } - } else { - stackRanges[i] += Math.abs(val - (val < 0 ? stackMax : stackMin)); - } - numValues.push(val); - } - } - } else { - val = chartRangeClip ? clipval(values[i], clipMin, clipMax) : values[i]; - val = values[i] = normalizeValue(val); - if (val !== null) { - numValues.push(val); - } - } - } - this.max = max = Math.max.apply(Math, numValues); - this.min = min = Math.min.apply(Math, numValues); - this.stackMax = stackMax = stacked ? Math.max.apply(Math, stackTotals) : max; - this.stackMin = stackMin = stacked ? Math.min.apply(Math, numValues) : min; - - if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < min)) { - min = options.get('chartRangeMin'); - } - if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > max)) { - max = options.get('chartRangeMax'); - } - - this.zeroAxis = zeroAxis = options.get('zeroAxis', true); - if (min <= 0 && max >= 0 && zeroAxis) { - xaxisOffset = 0; - } else if (zeroAxis == false) { - xaxisOffset = min; - } else if (min > 0) { - xaxisOffset = min; - } else { - xaxisOffset = max; - } - this.xaxisOffset = xaxisOffset; - - range = stacked ? (Math.max.apply(Math, stackRanges) + Math.max.apply(Math, stackRangesNeg)) : max - min; - - // as we plot zero/min values a single pixel line, we add a pixel to all other - // values - Reduce the effective canvas size to suit - this.canvasHeightEf = (zeroAxis && min < 0) ? this.canvasHeight - 2 : this.canvasHeight - 1; - - if (min < xaxisOffset) { - yMaxCalc = (stacked && max >= 0) ? stackMax : max; - yoffset = (yMaxCalc - xaxisOffset) / range * this.canvasHeight; - if (yoffset !== Math.ceil(yoffset)) { - this.canvasHeightEf -= 2; - yoffset = Math.ceil(yoffset); - } - } else { - yoffset = this.canvasHeight; - } - this.yoffset = yoffset; - - if ($.isArray(options.get('colorMap'))) { - this.colorMapByIndex = options.get('colorMap'); - this.colorMapByValue = null; - } else { - this.colorMapByIndex = null; - this.colorMapByValue = options.get('colorMap'); - if (this.colorMapByValue && this.colorMapByValue.get === undefined) { - this.colorMapByValue = new RangeMap(this.colorMapByValue); - } - } - - this.range = range; - }, - - getRegion: function (el, x, y) { - var result = Math.floor(x / this.totalBarWidth); - return (result < 0 || result >= this.values.length) ? undefined : result; - }, - - getCurrentRegionFields: function () { - var currentRegion = this.currentRegion, - values = ensureArray(this.values[currentRegion]), - result = [], - value, i; - for (i = values.length; i--;) { - value = values[i]; - result.push({ - isNull: value === null, - value: value, - color: this.calcColor(i, value, currentRegion), - offset: currentRegion - }); - } - return result; - }, - - calcColor: function (stacknum, value, valuenum) { - var colorMapByIndex = this.colorMapByIndex, - colorMapByValue = this.colorMapByValue, - options = this.options, - color, newColor; - if (this.stacked) { - color = options.get('stackedBarColor'); - } else { - color = (value < 0) ? options.get('negBarColor') : options.get('barColor'); - } - if (value === 0 && options.get('zeroColor') !== undefined) { - color = options.get('zeroColor'); - } - if (colorMapByValue && (newColor = colorMapByValue.get(value))) { - color = newColor; - } else if (colorMapByIndex && colorMapByIndex.length > valuenum) { - color = colorMapByIndex[valuenum]; - } - return $.isArray(color) ? color[stacknum % color.length] : color; - }, - - /** - * Render bar(s) for a region - */ - renderRegion: function (valuenum, highlight) { - var vals = this.values[valuenum], - options = this.options, - xaxisOffset = this.xaxisOffset, - result = [], - range = this.range, - stacked = this.stacked, - target = this.target, - x = valuenum * this.totalBarWidth, - canvasHeightEf = this.canvasHeightEf, - yoffset = this.yoffset, - y, height, color, isNull, yoffsetNeg, i, valcount, val, minPlotted, allMin; - - vals = $.isArray(vals) ? vals : [vals]; - valcount = vals.length; - val = vals[0]; - isNull = all(null, vals); - allMin = all(xaxisOffset, vals, true); - - if (isNull) { - if (options.get('nullColor')) { - color = highlight ? options.get('nullColor') : this.calcHighlightColor(options.get('nullColor'), options); - y = (yoffset > 0) ? yoffset - 1 : yoffset; - return target.drawRect(x, y, this.barWidth - 1, 0, color, color); - } else { - return undefined; - } - } - yoffsetNeg = yoffset; - for (i = 0; i < valcount; i++) { - val = vals[i]; - - if (stacked && val === xaxisOffset) { - if (!allMin || minPlotted) { - continue; - } - minPlotted = true; - } - - if (range > 0) { - height = Math.floor(canvasHeightEf * ((Math.abs(val - xaxisOffset) / range))) + 1; - } else { - height = 1; - } - if (val < xaxisOffset || (val === xaxisOffset && yoffset === 0)) { - y = yoffsetNeg; - yoffsetNeg += height; - } else { - y = yoffset - height; - yoffset -= height; - } - color = this.calcColor(i, val, valuenum); - if (highlight) { - color = this.calcHighlightColor(color, options); - } - result.push(target.drawRect(x, y, this.barWidth - 1, height - 1, color, color)); - } - if (result.length === 1) { - return result[0]; - } - return result; - } - }); - - /** - * Tristate charts - */ - $.fn.sparkline.tristate = tristate = createClass($.fn.sparkline._base, barHighlightMixin, { - type: 'tristate', - - init: function (el, values, options, width, height) { - var barWidth = parseInt(options.get('barWidth'), 10), - barSpacing = parseInt(options.get('barSpacing'), 10); - tristate._super.init.call(this, el, values, options, width, height); - - this.regionShapes = {}; - this.barWidth = barWidth; - this.barSpacing = barSpacing; - this.totalBarWidth = barWidth + barSpacing; - this.values = $.map(values, Number); - this.width = width = (values.length * barWidth) + ((values.length - 1) * barSpacing); - - if ($.isArray(options.get('colorMap'))) { - this.colorMapByIndex = options.get('colorMap'); - this.colorMapByValue = null; - } else { - this.colorMapByIndex = null; - this.colorMapByValue = options.get('colorMap'); - if (this.colorMapByValue && this.colorMapByValue.get === undefined) { - this.colorMapByValue = new RangeMap(this.colorMapByValue); - } - } - this.initTarget(); - }, - - getRegion: function (el, x, y) { - return Math.floor(x / this.totalBarWidth); - }, - - getCurrentRegionFields: function () { - var currentRegion = this.currentRegion; - return { - isNull: this.values[currentRegion] === undefined, - value: this.values[currentRegion], - color: this.calcColor(this.values[currentRegion], currentRegion), - offset: currentRegion - }; - }, - - calcColor: function (value, valuenum) { - var values = this.values, - options = this.options, - colorMapByIndex = this.colorMapByIndex, - colorMapByValue = this.colorMapByValue, - color, newColor; - - if (colorMapByValue && (newColor = colorMapByValue.get(value))) { - color = newColor; - } else if (colorMapByIndex && colorMapByIndex.length > valuenum) { - color = colorMapByIndex[valuenum]; - } else if (values[valuenum] < 0) { - color = options.get('negBarColor'); - } else if (values[valuenum] > 0) { - color = options.get('posBarColor'); - } else { - color = options.get('zeroBarColor'); - } - return color; - }, - - renderRegion: function (valuenum, highlight) { - var values = this.values, - options = this.options, - target = this.target, - canvasHeight, height, halfHeight, - x, y, color; - - canvasHeight = target.pixelHeight; - halfHeight = Math.round(canvasHeight / 2); - - x = valuenum * this.totalBarWidth; - if (values[valuenum] < 0) { - y = halfHeight; - height = halfHeight - 1; - } else if (values[valuenum] > 0) { - y = 0; - height = halfHeight - 1; - } else { - y = halfHeight - 1; - height = 2; - } - color = this.calcColor(values[valuenum], valuenum); - if (color === null) { - return; - } - if (highlight) { - color = this.calcHighlightColor(color, options); - } - return target.drawRect(x, y, this.barWidth - 1, height - 1, color, color); - } - }); - - /** - * Discrete charts - */ - $.fn.sparkline.discrete = discrete = createClass($.fn.sparkline._base, barHighlightMixin, { - type: 'discrete', - - init: function (el, values, options, width, height) { - discrete._super.init.call(this, el, values, options, width, height); - - this.regionShapes = {}; - this.values = values = $.map(values, Number); - this.min = Math.min.apply(Math, values); - this.max = Math.max.apply(Math, values); - this.range = this.max - this.min; - this.width = width = options.get('width') === 'auto' ? values.length * 2 : this.width; - this.interval = Math.floor(width / values.length); - this.itemWidth = width / values.length; - if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < this.min)) { - this.min = options.get('chartRangeMin'); - } - if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > this.max)) { - this.max = options.get('chartRangeMax'); - } - this.initTarget(); - if (this.target) { - this.lineHeight = options.get('lineHeight') === 'auto' ? Math.round(this.canvasHeight * 0.3) : options.get('lineHeight'); - } - }, - - getRegion: function (el, x, y) { - return Math.floor(x / this.itemWidth); - }, - - getCurrentRegionFields: function () { - var currentRegion = this.currentRegion; - return { - isNull: this.values[currentRegion] === undefined, - value: this.values[currentRegion], - offset: currentRegion - }; - }, - - renderRegion: function (valuenum, highlight) { - var values = this.values, - options = this.options, - min = this.min, - max = this.max, - range = this.range, - interval = this.interval, - target = this.target, - canvasHeight = this.canvasHeight, - lineHeight = this.lineHeight, - pheight = canvasHeight - lineHeight, - ytop, val, color, x; - - val = clipval(values[valuenum], min, max); - x = valuenum * interval; - ytop = Math.round(pheight - pheight * ((val - min) / range)); - color = (options.get('thresholdColor') && val < options.get('thresholdValue')) ? options.get('thresholdColor') : options.get('lineColor'); - if (highlight) { - color = this.calcHighlightColor(color, options); - } - return target.drawLine(x, ytop, x, ytop + lineHeight, color); - } - }); - - /** - * Bullet charts - */ - $.fn.sparkline.bullet = bullet = createClass($.fn.sparkline._base, { - type: 'bullet', - - init: function (el, values, options, width, height) { - var min, max, vals; - bullet._super.init.call(this, el, values, options, width, height); - - // values: target, performance, range1, range2, range3 - this.values = values = normalizeValues(values); - // target or performance could be null - vals = values.slice(); - vals[0] = vals[0] === null ? vals[2] : vals[0]; - vals[1] = values[1] === null ? vals[2] : vals[1]; - min = Math.min.apply(Math, values); - max = Math.max.apply(Math, values); - if (options.get('base') === undefined) { - min = min < 0 ? min : 0; - } else { - min = options.get('base'); - } - this.min = min; - this.max = max; - this.range = max - min; - this.shapes = {}; - this.valueShapes = {}; - this.regiondata = {}; - this.width = width = options.get('width') === 'auto' ? '4.0em' : width; - this.target = this.$el.simpledraw(width, height, options.get('composite')); - if (!values.length) { - this.disabled = true; - } - this.initTarget(); - }, - - getRegion: function (el, x, y) { - var shapeid = this.target.getShapeAt(el, x, y); - return (shapeid !== undefined && this.shapes[shapeid] !== undefined) ? this.shapes[shapeid] : undefined; - }, - - getCurrentRegionFields: function () { - var currentRegion = this.currentRegion; - return { - fieldkey: currentRegion.substr(0, 1), - value: this.values[currentRegion.substr(1)], - region: currentRegion - }; - }, - - changeHighlight: function (highlight) { - var currentRegion = this.currentRegion, - shapeid = this.valueShapes[currentRegion], - shape; - delete this.shapes[shapeid]; - switch (currentRegion.substr(0, 1)) { - case 'r': - shape = this.renderRange(currentRegion.substr(1), highlight); - break; - case 'p': - shape = this.renderPerformance(highlight); - break; - case 't': - shape = this.renderTarget(highlight); - break; - } - this.valueShapes[currentRegion] = shape.id; - this.shapes[shape.id] = currentRegion; - this.target.replaceWithShape(shapeid, shape); - }, - - renderRange: function (rn, highlight) { - var rangeval = this.values[rn], - rangewidth = Math.round(this.canvasWidth * ((rangeval - this.min) / this.range)), - color = this.options.get('rangeColors')[rn - 2]; - if (highlight) { - color = this.calcHighlightColor(color, this.options); - } - return this.target.drawRect(0, 0, rangewidth - 1, this.canvasHeight - 1, color, color); - }, - - renderPerformance: function (highlight) { - var perfval = this.values[1], - perfwidth = Math.round(this.canvasWidth * ((perfval - this.min) / this.range)), - color = this.options.get('performanceColor'); - if (highlight) { - color = this.calcHighlightColor(color, this.options); - } - return this.target.drawRect(0, Math.round(this.canvasHeight * 0.3), perfwidth - 1, - Math.round(this.canvasHeight * 0.4) - 1, color, color); - }, - - renderTarget: function (highlight) { - var targetval = this.values[0], - x = Math.round(this.canvasWidth * ((targetval - this.min) / this.range) - (this.options.get('targetWidth') / 2)), - targettop = Math.round(this.canvasHeight * 0.10), - targetheight = this.canvasHeight - (targettop * 2), - color = this.options.get('targetColor'); - if (highlight) { - color = this.calcHighlightColor(color, this.options); - } - return this.target.drawRect(x, targettop, this.options.get('targetWidth') - 1, targetheight - 1, color, color); - }, - - render: function () { - var vlen = this.values.length, - target = this.target, - i, shape; - if (!bullet._super.render.call(this)) { - return; - } - for (i = 2; i < vlen; i++) { - shape = this.renderRange(i).append(); - this.shapes[shape.id] = 'r' + i; - this.valueShapes['r' + i] = shape.id; - } - if (this.values[1] !== null) { - shape = this.renderPerformance().append(); - this.shapes[shape.id] = 'p1'; - this.valueShapes.p1 = shape.id; - } - if (this.values[0] !== null) { - shape = this.renderTarget().append(); - this.shapes[shape.id] = 't0'; - this.valueShapes.t0 = shape.id; - } - target.render(); - } - }); - - /** - * Pie charts - */ - $.fn.sparkline.pie = pie = createClass($.fn.sparkline._base, { - type: 'pie', - - init: function (el, values, options, width, height) { - var total = 0, i; - - pie._super.init.call(this, el, values, options, width, height); - - this.shapes = {}; // map shape ids to value offsets - this.valueShapes = {}; // maps value offsets to shape ids - this.values = values = $.map(values, Number); - - if (options.get('width') === 'auto') { - this.width = this.height; - } - - if (values.length > 0) { - for (i = values.length; i--;) { - total += values[i]; - } - } - this.total = total; - this.initTarget(); - this.radius = Math.floor(Math.min(this.canvasWidth, this.canvasHeight) / 2); - }, - - getRegion: function (el, x, y) { - var shapeid = this.target.getShapeAt(el, x, y); - return (shapeid !== undefined && this.shapes[shapeid] !== undefined) ? this.shapes[shapeid] : undefined; - }, - - getCurrentRegionFields: function () { - var currentRegion = this.currentRegion; - return { - isNull: this.values[currentRegion] === undefined, - value: this.values[currentRegion], - percent: this.values[currentRegion] / this.total * 100, - color: this.options.get('sliceColors')[currentRegion % this.options.get('sliceColors').length], - offset: currentRegion - }; - }, - - changeHighlight: function (highlight) { - var currentRegion = this.currentRegion, - newslice = this.renderSlice(currentRegion, highlight), - shapeid = this.valueShapes[currentRegion]; - delete this.shapes[shapeid]; - this.target.replaceWithShape(shapeid, newslice); - this.valueShapes[currentRegion] = newslice.id; - this.shapes[newslice.id] = currentRegion; - }, - - renderSlice: function (valuenum, highlight) { - var target = this.target, - options = this.options, - radius = this.radius, - borderWidth = options.get('borderWidth'), - offset = options.get('offset'), - circle = 2 * Math.PI, - values = this.values, - total = this.total, - next = offset ? (2*Math.PI)*(offset/360) : 0, - start, end, i, vlen, color; - - vlen = values.length; - for (i = 0; i < vlen; i++) { - start = next; - end = next; - if (total > 0) { // avoid divide by zero - end = next + (circle * (values[i] / total)); - } - if (valuenum === i) { - color = options.get('sliceColors')[i % options.get('sliceColors').length]; - if (highlight) { - color = this.calcHighlightColor(color, options); - } - - return target.drawPieSlice(radius, radius, radius - borderWidth, start, end, undefined, color); - } - next = end; - } - }, - - render: function () { - var target = this.target, - values = this.values, - options = this.options, - radius = this.radius, - borderWidth = options.get('borderWidth'), - shape, i; - - if (!pie._super.render.call(this)) { - return; - } - if (borderWidth) { - target.drawCircle(radius, radius, Math.floor(radius - (borderWidth / 2)), - options.get('borderColor'), undefined, borderWidth).append(); - } - for (i = values.length; i--;) { - if (values[i]) { // don't render zero values - shape = this.renderSlice(i).append(); - this.valueShapes[i] = shape.id; // store just the shapeid - this.shapes[shape.id] = i; - } - } - target.render(); - } - }); - - /** - * Box plots - */ - $.fn.sparkline.box = box = createClass($.fn.sparkline._base, { - type: 'box', - - init: function (el, values, options, width, height) { - box._super.init.call(this, el, values, options, width, height); - this.values = $.map(values, Number); - this.width = options.get('width') === 'auto' ? '4.0em' : width; - this.initTarget(); - if (!this.values.length) { - this.disabled = 1; - } - }, - - /** - * Simulate a single region - */ - getRegion: function () { - return 1; - }, - - getCurrentRegionFields: function () { - var result = [ - { field: 'lq', value: this.quartiles[0] }, - { field: 'med', value: this.quartiles[1] }, - { field: 'uq', value: this.quartiles[2] } - ]; - if (this.loutlier !== undefined) { - result.push({ field: 'lo', value: this.loutlier}); - } - if (this.routlier !== undefined) { - result.push({ field: 'ro', value: this.routlier}); - } - if (this.lwhisker !== undefined) { - result.push({ field: 'lw', value: this.lwhisker}); - } - if (this.rwhisker !== undefined) { - result.push({ field: 'rw', value: this.rwhisker}); - } - return result; - }, - - render: function () { - var target = this.target, - values = this.values, - vlen = values.length, - options = this.options, - canvasWidth = this.canvasWidth, - canvasHeight = this.canvasHeight, - minValue = options.get('chartRangeMin') === undefined ? Math.min.apply(Math, values) : options.get('chartRangeMin'), - maxValue = options.get('chartRangeMax') === undefined ? Math.max.apply(Math, values) : options.get('chartRangeMax'), - canvasLeft = 0, - lwhisker, loutlier, iqr, q1, q2, q3, rwhisker, routlier, i, - size, unitSize; - - if (!box._super.render.call(this)) { - return; - } - - if (options.get('raw')) { - if (options.get('showOutliers') && values.length > 5) { - loutlier = values[0]; - lwhisker = values[1]; - q1 = values[2]; - q2 = values[3]; - q3 = values[4]; - rwhisker = values[5]; - routlier = values[6]; - } else { - lwhisker = values[0]; - q1 = values[1]; - q2 = values[2]; - q3 = values[3]; - rwhisker = values[4]; - } - } else { - values.sort(function (a, b) { return a - b; }); - q1 = quartile(values, 1); - q2 = quartile(values, 2); - q3 = quartile(values, 3); - iqr = q3 - q1; - if (options.get('showOutliers')) { - lwhisker = rwhisker = undefined; - for (i = 0; i < vlen; i++) { - if (lwhisker === undefined && values[i] > q1 - (iqr * options.get('outlierIQR'))) { - lwhisker = values[i]; - } - if (values[i] < q3 + (iqr * options.get('outlierIQR'))) { - rwhisker = values[i]; - } - } - loutlier = values[0]; - routlier = values[vlen - 1]; - } else { - lwhisker = values[0]; - rwhisker = values[vlen - 1]; - } - } - this.quartiles = [q1, q2, q3]; - this.lwhisker = lwhisker; - this.rwhisker = rwhisker; - this.loutlier = loutlier; - this.routlier = routlier; - - unitSize = canvasWidth / (maxValue - minValue + 1); - if (options.get('showOutliers')) { - canvasLeft = Math.ceil(options.get('spotRadius')); - canvasWidth -= 2 * Math.ceil(options.get('spotRadius')); - unitSize = canvasWidth / (maxValue - minValue + 1); - if (loutlier < lwhisker) { - target.drawCircle((loutlier - minValue) * unitSize + canvasLeft, - canvasHeight / 2, - options.get('spotRadius'), - options.get('outlierLineColor'), - options.get('outlierFillColor')).append(); - } - if (routlier > rwhisker) { - target.drawCircle((routlier - minValue) * unitSize + canvasLeft, - canvasHeight / 2, - options.get('spotRadius'), - options.get('outlierLineColor'), - options.get('outlierFillColor')).append(); - } - } - - // box - target.drawRect( - Math.round((q1 - minValue) * unitSize + canvasLeft), - Math.round(canvasHeight * 0.1), - Math.round((q3 - q1) * unitSize), - Math.round(canvasHeight * 0.8), - options.get('boxLineColor'), - options.get('boxFillColor')).append(); - // left whisker - target.drawLine( - Math.round((lwhisker - minValue) * unitSize + canvasLeft), - Math.round(canvasHeight / 2), - Math.round((q1 - minValue) * unitSize + canvasLeft), - Math.round(canvasHeight / 2), - options.get('lineColor')).append(); - target.drawLine( - Math.round((lwhisker - minValue) * unitSize + canvasLeft), - Math.round(canvasHeight / 4), - Math.round((lwhisker - minValue) * unitSize + canvasLeft), - Math.round(canvasHeight - canvasHeight / 4), - options.get('whiskerColor')).append(); - // right whisker - target.drawLine(Math.round((rwhisker - minValue) * unitSize + canvasLeft), - Math.round(canvasHeight / 2), - Math.round((q3 - minValue) * unitSize + canvasLeft), - Math.round(canvasHeight / 2), - options.get('lineColor')).append(); - target.drawLine( - Math.round((rwhisker - minValue) * unitSize + canvasLeft), - Math.round(canvasHeight / 4), - Math.round((rwhisker - minValue) * unitSize + canvasLeft), - Math.round(canvasHeight - canvasHeight / 4), - options.get('whiskerColor')).append(); - // median line - target.drawLine( - Math.round((q2 - minValue) * unitSize + canvasLeft), - Math.round(canvasHeight * 0.1), - Math.round((q2 - minValue) * unitSize + canvasLeft), - Math.round(canvasHeight * 0.9), - options.get('medianColor')).append(); - if (options.get('target')) { - size = Math.ceil(options.get('spotRadius')); - target.drawLine( - Math.round((options.get('target') - minValue) * unitSize + canvasLeft), - Math.round((canvasHeight / 2) - size), - Math.round((options.get('target') - minValue) * unitSize + canvasLeft), - Math.round((canvasHeight / 2) + size), - options.get('targetColor')).append(); - target.drawLine( - Math.round((options.get('target') - minValue) * unitSize + canvasLeft - size), - Math.round(canvasHeight / 2), - Math.round((options.get('target') - minValue) * unitSize + canvasLeft + size), - Math.round(canvasHeight / 2), - options.get('targetColor')).append(); - } - target.render(); - } - }); - - // Setup a very simple "virtual canvas" to make drawing the few shapes we need easier - // This is accessible as $(foo).simpledraw() - - VShape = createClass({ - init: function (target, id, type, args) { - this.target = target; - this.id = id; - this.type = type; - this.args = args; - }, - append: function () { - this.target.appendShape(this); - return this; - } - }); - - VCanvas_base = createClass({ - _pxregex: /(\d+)(px)?\s*$/i, - - init: function (width, height, target) { - if (!width) { - return; - } - this.width = width; - this.height = height; - this.target = target; - this.lastShapeId = null; - if (target[0]) { - target = target[0]; - } - $.data(target, '_jqs_vcanvas', this); - }, - - drawLine: function (x1, y1, x2, y2, lineColor, lineWidth) { - return this.drawShape([[x1, y1], [x2, y2]], lineColor, lineWidth); - }, - - drawShape: function (path, lineColor, fillColor, lineWidth) { - return this._genShape('Shape', [path, lineColor, fillColor, lineWidth]); - }, - - drawCircle: function (x, y, radius, lineColor, fillColor, lineWidth) { - return this._genShape('Circle', [x, y, radius, lineColor, fillColor, lineWidth]); - }, - - drawPieSlice: function (x, y, radius, startAngle, endAngle, lineColor, fillColor) { - return this._genShape('PieSlice', [x, y, radius, startAngle, endAngle, lineColor, fillColor]); - }, - - drawRect: function (x, y, width, height, lineColor, fillColor) { - return this._genShape('Rect', [x, y, width, height, lineColor, fillColor]); - }, - - getElement: function () { - return this.canvas; - }, - - /** - * Return the most recently inserted shape id - */ - getLastShapeId: function () { - return this.lastShapeId; - }, - - /** - * Clear and reset the canvas - */ - reset: function () { - alert('reset not implemented'); - }, - - _insert: function (el, target) { - $(target).html(el); - }, - - /** - * Calculate the pixel dimensions of the canvas - */ - _calculatePixelDims: function (width, height, canvas) { - // XXX This should probably be a configurable option - var match; - match = this._pxregex.exec(height); - if (match) { - this.pixelHeight = match[1]; - } else { - this.pixelHeight = $(canvas).height(); - } - match = this._pxregex.exec(width); - if (match) { - this.pixelWidth = match[1]; - } else { - this.pixelWidth = $(canvas).width(); - } - }, - - /** - * Generate a shape object and id for later rendering - */ - _genShape: function (shapetype, shapeargs) { - var id = shapeCount++; - shapeargs.unshift(id); - return new VShape(this, id, shapetype, shapeargs); - }, - - /** - * Add a shape to the end of the render queue - */ - appendShape: function (shape) { - alert('appendShape not implemented'); - }, - - /** - * Replace one shape with another - */ - replaceWithShape: function (shapeid, shape) { - alert('replaceWithShape not implemented'); - }, - - /** - * Insert one shape after another in the render queue - */ - insertAfterShape: function (shapeid, shape) { - alert('insertAfterShape not implemented'); - }, - - /** - * Remove a shape from the queue - */ - removeShapeId: function (shapeid) { - alert('removeShapeId not implemented'); - }, - - /** - * Find a shape at the specified x/y co-ordinates - */ - getShapeAt: function (el, x, y) { - alert('getShapeAt not implemented'); - }, - - /** - * Render all queued shapes onto the canvas - */ - render: function () { - alert('render not implemented'); - } - }); - - VCanvas_canvas = createClass(VCanvas_base, { - init: function (width, height, target, interact) { - VCanvas_canvas._super.init.call(this, width, height, target); - this.canvas = document.createElement('canvas'); - if (target[0]) { - target = target[0]; - } - $.data(target, '_jqs_vcanvas', this); - $(this.canvas).css({ display: 'inline-block', width: width, height: height, verticalAlign: 'top' }); - this._insert(this.canvas, target); - this._calculatePixelDims(width, height, this.canvas); - this.canvas.width = this.pixelWidth; - this.canvas.height = this.pixelHeight; - this.interact = interact; - this.shapes = {}; - this.shapeseq = []; - this.currentTargetShapeId = undefined; - $(this.canvas).css({width: this.pixelWidth, height: this.pixelHeight}); - }, - - _getContext: function (lineColor, fillColor, lineWidth) { - var context = this.canvas.getContext('2d'); - if (lineColor !== undefined) { - context.strokeStyle = lineColor; - } - context.lineWidth = lineWidth === undefined ? 1 : lineWidth; - if (fillColor !== undefined) { - context.fillStyle = fillColor; - } - return context; - }, - - reset: function () { - var context = this._getContext(); - context.clearRect(0, 0, this.pixelWidth, this.pixelHeight); - this.shapes = {}; - this.shapeseq = []; - this.currentTargetShapeId = undefined; - }, - - _drawShape: function (shapeid, path, lineColor, fillColor, lineWidth) { - var context = this._getContext(lineColor, fillColor, lineWidth), - i, plen; - context.beginPath(); - context.moveTo(path[0][0] + 0.5, path[0][1] + 0.5); - for (i = 1, plen = path.length; i < plen; i++) { - context.lineTo(path[i][0] + 0.5, path[i][1] + 0.5); // the 0.5 offset gives us crisp pixel-width lines - } - if (lineColor !== undefined) { - context.stroke(); - } - if (fillColor !== undefined) { - context.fill(); - } - if (this.targetX !== undefined && this.targetY !== undefined && - context.isPointInPath(this.targetX, this.targetY)) { - this.currentTargetShapeId = shapeid; - } - }, - - _drawCircle: function (shapeid, x, y, radius, lineColor, fillColor, lineWidth) { - var context = this._getContext(lineColor, fillColor, lineWidth); - context.beginPath(); - context.arc(x, y, radius, 0, 2 * Math.PI, false); - if (this.targetX !== undefined && this.targetY !== undefined && - context.isPointInPath(this.targetX, this.targetY)) { - this.currentTargetShapeId = shapeid; - } - if (lineColor !== undefined) { - context.stroke(); - } - if (fillColor !== undefined) { - context.fill(); - } - }, - - _drawPieSlice: function (shapeid, x, y, radius, startAngle, endAngle, lineColor, fillColor) { - var context = this._getContext(lineColor, fillColor); - context.beginPath(); - context.moveTo(x, y); - context.arc(x, y, radius, startAngle, endAngle, false); - context.lineTo(x, y); - context.closePath(); - if (lineColor !== undefined) { - context.stroke(); - } - if (fillColor) { - context.fill(); - } - if (this.targetX !== undefined && this.targetY !== undefined && - context.isPointInPath(this.targetX, this.targetY)) { - this.currentTargetShapeId = shapeid; - } - }, - - _drawRect: function (shapeid, x, y, width, height, lineColor, fillColor) { - return this._drawShape(shapeid, [[x, y], [x + width, y], [x + width, y + height], [x, y + height], [x, y]], lineColor, fillColor); - }, - - appendShape: function (shape) { - this.shapes[shape.id] = shape; - this.shapeseq.push(shape.id); - this.lastShapeId = shape.id; - return shape.id; - }, - - replaceWithShape: function (shapeid, shape) { - var shapeseq = this.shapeseq, - i; - this.shapes[shape.id] = shape; - for (i = shapeseq.length; i--;) { - if (shapeseq[i] == shapeid) { - shapeseq[i] = shape.id; - } - } - delete this.shapes[shapeid]; - }, - - replaceWithShapes: function (shapeids, shapes) { - var shapeseq = this.shapeseq, - shapemap = {}, - sid, i, first; - - for (i = shapeids.length; i--;) { - shapemap[shapeids[i]] = true; - } - for (i = shapeseq.length; i--;) { - sid = shapeseq[i]; - if (shapemap[sid]) { - shapeseq.splice(i, 1); - delete this.shapes[sid]; - first = i; - } - } - for (i = shapes.length; i--;) { - shapeseq.splice(first, 0, shapes[i].id); - this.shapes[shapes[i].id] = shapes[i]; - } - - }, - - insertAfterShape: function (shapeid, shape) { - var shapeseq = this.shapeseq, - i; - for (i = shapeseq.length; i--;) { - if (shapeseq[i] === shapeid) { - shapeseq.splice(i + 1, 0, shape.id); - this.shapes[shape.id] = shape; - return; - } - } - }, - - removeShapeId: function (shapeid) { - var shapeseq = this.shapeseq, - i; - for (i = shapeseq.length; i--;) { - if (shapeseq[i] === shapeid) { - shapeseq.splice(i, 1); - break; - } - } - delete this.shapes[shapeid]; - }, - - getShapeAt: function (el, x, y) { - this.targetX = x; - this.targetY = y; - this.render(); - return this.currentTargetShapeId; - }, - - render: function () { - var shapeseq = this.shapeseq, - shapes = this.shapes, - shapeCount = shapeseq.length, - context = this._getContext(), - shapeid, shape, i; - context.clearRect(0, 0, this.pixelWidth, this.pixelHeight); - for (i = 0; i < shapeCount; i++) { - shapeid = shapeseq[i]; - shape = shapes[shapeid]; - this['_draw' + shape.type].apply(this, shape.args); - } - if (!this.interact) { - // not interactive so no need to keep the shapes array - this.shapes = {}; - this.shapeseq = []; - } - } - - }); - - VCanvas_vml = createClass(VCanvas_base, { - init: function (width, height, target) { - var groupel; - VCanvas_vml._super.init.call(this, width, height, target); - if (target[0]) { - target = target[0]; - } - $.data(target, '_jqs_vcanvas', this); - this.canvas = document.createElement('span'); - $(this.canvas).css({ display: 'inline-block', position: 'relative', overflow: 'hidden', width: width, height: height, margin: '0px', padding: '0px', verticalAlign: 'top'}); - this._insert(this.canvas, target); - this._calculatePixelDims(width, height, this.canvas); - this.canvas.width = this.pixelWidth; - this.canvas.height = this.pixelHeight; - groupel = '<v:group coordorigin="0 0" coordsize="' + this.pixelWidth + ' ' + this.pixelHeight + '"' + - ' style="position:absolute;top:0;left:0;width:' + this.pixelWidth + 'px;height=' + this.pixelHeight + 'px;"></v:group>'; - this.canvas.insertAdjacentHTML('beforeEnd', groupel); - this.group = $(this.canvas).children()[0]; - this.rendered = false; - this.prerender = ''; - }, - - _drawShape: function (shapeid, path, lineColor, fillColor, lineWidth) { - var vpath = [], - initial, stroke, fill, closed, vel, plen, i; - for (i = 0, plen = path.length; i < plen; i++) { - vpath[i] = '' + (path[i][0]) + ',' + (path[i][1]); - } - initial = vpath.splice(0, 1); - lineWidth = lineWidth === undefined ? 1 : lineWidth; - stroke = lineColor === undefined ? ' stroked="false" ' : ' strokeWeight="' + lineWidth + 'px" strokeColor="' + lineColor + '" '; - fill = fillColor === undefined ? ' filled="false"' : ' fillColor="' + fillColor + '" filled="true" '; - closed = vpath[0] === vpath[vpath.length - 1] ? 'x ' : ''; - vel = '<v:shape coordorigin="0 0" coordsize="' + this.pixelWidth + ' ' + this.pixelHeight + '" ' + - ' id="jqsshape' + shapeid + '" ' + - stroke + - fill + - ' style="position:absolute;left:0px;top:0px;height:' + this.pixelHeight + 'px;width:' + this.pixelWidth + 'px;padding:0px;margin:0px;" ' + - ' path="m ' + initial + ' l ' + vpath.join(', ') + ' ' + closed + 'e">' + - ' </v:shape>'; - return vel; - }, - - _drawCircle: function (shapeid, x, y, radius, lineColor, fillColor, lineWidth) { - var stroke, fill, vel; - x -= radius; - y -= radius; - stroke = lineColor === undefined ? ' stroked="false" ' : ' strokeWeight="' + lineWidth + 'px" strokeColor="' + lineColor + '" '; - fill = fillColor === undefined ? ' filled="false"' : ' fillColor="' + fillColor + '" filled="true" '; - vel = '<v:oval ' + - ' id="jqsshape' + shapeid + '" ' + - stroke + - fill + - ' style="position:absolute;top:' + y + 'px; left:' + x + 'px; width:' + (radius * 2) + 'px; height:' + (radius * 2) + 'px"></v:oval>'; - return vel; - - }, - - _drawPieSlice: function (shapeid, x, y, radius, startAngle, endAngle, lineColor, fillColor) { - var vpath, startx, starty, endx, endy, stroke, fill, vel; - if (startAngle === endAngle) { - return ''; // VML seems to have problem when start angle equals end angle. - } - if ((endAngle - startAngle) === (2 * Math.PI)) { - startAngle = 0.0; // VML seems to have a problem when drawing a full circle that doesn't start 0 - endAngle = (2 * Math.PI); - } - - startx = x + Math.round(Math.cos(startAngle) * radius); - starty = y + Math.round(Math.sin(startAngle) * radius); - endx = x + Math.round(Math.cos(endAngle) * radius); - endy = y + Math.round(Math.sin(endAngle) * radius); - - if (startx === endx && starty === endy) { - if ((endAngle - startAngle) < Math.PI) { - // Prevent very small slices from being mistaken as a whole pie - return ''; - } - // essentially going to be the entire circle, so ignore startAngle - startx = endx = x + radius; - starty = endy = y; - } - - if (startx === endx && starty === endy && (endAngle - startAngle) < Math.PI) { - return ''; - } - - vpath = [x - radius, y - radius, x + radius, y + radius, startx, starty, endx, endy]; - stroke = lineColor === undefined ? ' stroked="false" ' : ' strokeWeight="1px" strokeColor="' + lineColor + '" '; - fill = fillColor === undefined ? ' filled="false"' : ' fillColor="' + fillColor + '" filled="true" '; - vel = '<v:shape coordorigin="0 0" coordsize="' + this.pixelWidth + ' ' + this.pixelHeight + '" ' + - ' id="jqsshape' + shapeid + '" ' + - stroke + - fill + - ' style="position:absolute;left:0px;top:0px;height:' + this.pixelHeight + 'px;width:' + this.pixelWidth + 'px;padding:0px;margin:0px;" ' + - ' path="m ' + x + ',' + y + ' wa ' + vpath.join(', ') + ' x e">' + - ' </v:shape>'; - return vel; - }, - - _drawRect: function (shapeid, x, y, width, height, lineColor, fillColor) { - return this._drawShape(shapeid, [[x, y], [x, y + height], [x + width, y + height], [x + width, y], [x, y]], lineColor, fillColor); - }, - - reset: function () { - this.group.innerHTML = ''; - }, - - appendShape: function (shape) { - var vel = this['_draw' + shape.type].apply(this, shape.args); - if (this.rendered) { - this.group.insertAdjacentHTML('beforeEnd', vel); - } else { - this.prerender += vel; - } - this.lastShapeId = shape.id; - return shape.id; - }, - - replaceWithShape: function (shapeid, shape) { - var existing = $('#jqsshape' + shapeid), - vel = this['_draw' + shape.type].apply(this, shape.args); - existing[0].outerHTML = vel; - }, - - replaceWithShapes: function (shapeids, shapes) { - // replace the first shapeid with all the new shapes then toast the remaining old shapes - var existing = $('#jqsshape' + shapeids[0]), - replace = '', - slen = shapes.length, - i; - for (i = 0; i < slen; i++) { - replace += this['_draw' + shapes[i].type].apply(this, shapes[i].args); - } - existing[0].outerHTML = replace; - for (i = 1; i < shapeids.length; i++) { - $('#jqsshape' + shapeids[i]).remove(); - } - }, - - insertAfterShape: function (shapeid, shape) { - var existing = $('#jqsshape' + shapeid), - vel = this['_draw' + shape.type].apply(this, shape.args); - existing[0].insertAdjacentHTML('afterEnd', vel); - }, - - removeShapeId: function (shapeid) { - var existing = $('#jqsshape' + shapeid); - this.group.removeChild(existing[0]); - }, - - getShapeAt: function (el, x, y) { - var shapeid = el.id.substr(8); - return shapeid; - }, - - render: function () { - if (!this.rendered) { - // batch the intial render into a single repaint - this.group.innerHTML = this.prerender; - this.rendered = true; - } - } - }); - -}))}(document, Math)); diff --git a/assets/plugins/sparkline/jquery.sparkline.min.js b/assets/plugins/sparkline/jquery.sparkline.min.js deleted file mode 100644 index fa616bf9..00000000 --- a/assets/plugins/sparkline/jquery.sparkline.min.js +++ /dev/null @@ -1,5 +0,0 @@ -/* jquery.sparkline 2.1.2 - http://omnipotent.net/jquery.sparkline/ -** Licensed under the New BSD License - see above site for details */ - -(function(a,b,c){(function(a){typeof define=="function"&&define.amd?define(["jquery"],a):jQuery&&!jQuery.fn.sparkline&&a(jQuery)})(function(d){"use strict";var e={},f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L=0;f=function(){return{common:{type:"line",lineColor:"#00f",fillColor:"#cdf",defaultPixelsPerValue:3,width:"auto",height:"auto",composite:!1,tagValuesAttribute:"values",tagOptionsPrefix:"spark",enableTagOptions:!1,enableHighlight:!0,highlightLighten:1.4,tooltipSkipNull:!0,tooltipPrefix:"",tooltipSuffix:"",disableHiddenCheck:!1,numberFormatter:!1,numberDigitGroupCount:3,numberDigitGroupSep:",",numberDecimalMark:".",disableTooltips:!1,disableInteraction:!1},line:{spotColor:"#f80",highlightSpotColor:"#5f5",highlightLineColor:"#f22",spotRadius:1.5,minSpotColor:"#f80",maxSpotColor:"#f80",lineWidth:1,normalRangeMin:c,normalRangeMax:c,normalRangeColor:"#ccc",drawNormalOnTop:!1,chartRangeMin:c,chartRangeMax:c,chartRangeMinX:c,chartRangeMaxX:c,tooltipFormat:new h('<span style="color: {{color}}">&#9679;</span> {{prefix}}{{y}}{{suffix}}')},bar:{barColor:"#3366cc",negBarColor:"#f44",stackedBarColor:["#3366cc","#dc3912","#ff9900","#109618","#66aa00","#dd4477","#0099c6","#990099"],zeroColor:c,nullColor:c,zeroAxis:!0,barWidth:4,barSpacing:1,chartRangeMax:c,chartRangeMin:c,chartRangeClip:!1,colorMap:c,tooltipFormat:new h('<span style="color: {{color}}">&#9679;</span> {{prefix}}{{value}}{{suffix}}')},tristate:{barWidth:4,barSpacing:1,posBarColor:"#6f6",negBarColor:"#f44",zeroBarColor:"#999",colorMap:{},tooltipFormat:new h('<span style="color: {{color}}">&#9679;</span> {{value:map}}'),tooltipValueLookups:{map:{"-1":"Loss",0:"Draw",1:"Win"}}},discrete:{lineHeight:"auto",thresholdColor:c,thresholdValue:0,chartRangeMax:c,chartRangeMin:c,chartRangeClip:!1,tooltipFormat:new h("{{prefix}}{{value}}{{suffix}}")},bullet:{targetColor:"#f33",targetWidth:3,performanceColor:"#33f",rangeColors:["#d3dafe","#a8b6ff","#7f94ff"],base:c,tooltipFormat:new h("{{fieldkey:fields}} - {{value}}"),tooltipValueLookups:{fields:{r:"Range",p:"Performance",t:"Target"}}},pie:{offset:0,sliceColors:["#3366cc","#dc3912","#ff9900","#109618","#66aa00","#dd4477","#0099c6","#990099"],borderWidth:0,borderColor:"#000",tooltipFormat:new h('<span style="color: {{color}}">&#9679;</span> {{value}} ({{percent.1}}%)')},box:{raw:!1,boxLineColor:"#000",boxFillColor:"#cdf",whiskerColor:"#000",outlierLineColor:"#333",outlierFillColor:"#fff",medianColor:"#f00",showOutliers:!0,outlierIQR:1.5,spotRadius:1.5,target:c,targetColor:"#4a2",chartRangeMax:c,chartRangeMin:c,tooltipFormat:new h("{{field:fields}}: {{value}}"),tooltipFormatFieldlistKey:"field",tooltipValueLookups:{fields:{lq:"Lower Quartile",med:"Median",uq:"Upper Quartile",lo:"Left Outlier",ro:"Right Outlier",lw:"Left Whisker",rw:"Right Whisker"}}}}},E='.jqstooltip { position: absolute;left: 0px;top: 0px;visibility: hidden;background: rgb(0, 0, 0) transparent;background-color: rgba(0,0,0,0.6);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)";color: white;font: 10px arial, san serif;text-align: left;white-space: nowrap;padding: 5px;border: 1px solid white;z-index: 10000;}.jqsfield { color: white;font: 10px arial, san serif;text-align: left;}',g=function(){var a,b;return a=function(){this.init.apply(this,arguments)},arguments.length>1?(arguments[0]?(a.prototype=d.extend(new arguments[0],arguments[arguments.length-1]),a._super=arguments[0].prototype):a.prototype=arguments[arguments.length-1],arguments.length>2&&(b=Array.prototype.slice.call(arguments,1,-1),b.unshift(a.prototype),d.extend.apply(d,b))):a.prototype=arguments[0],a.prototype.cls=a,a},d.SPFormatClass=h=g({fre:/\{\{([\w.]+?)(:(.+?))?\}\}/g,precre:/(\w+)\.(\d+)/,init:function(a,b){this.format=a,this.fclass=b},render:function(a,b,d){var e=this,f=a,g,h,i,j,k;return this.format.replace(this.fre,function(){var a;return h=arguments[1],i=arguments[3],g=e.precre.exec(h),g?(k=g[2],h=g[1]):k=!1,j=f[h],j===c?"":i&&b&&b[i]?(a=b[i],a.get?b[i].get(j)||j:b[i][j]||j):(n(j)&&(d.get("numberFormatter")?j=d.get("numberFormatter")(j):j=s(j,k,d.get("numberDigitGroupCount"),d.get("numberDigitGroupSep"),d.get("numberDecimalMark"))),j)})}}),d.spformat=function(a,b){return new h(a,b)},i=function(a,b,c){return a<b?b:a>c?c:a},j=function(a,c){var d;return c===2?(d=b.floor(a.length/2),a.length%2?a[d]:(a[d-1]+a[d])/2):a.length%2?(d=(a.length*c+c)/4,d%1?(a[b.floor(d)]+a[b.floor(d)-1])/2:a[d-1]):(d=(a.length*c+2)/4,d%1?(a[b.floor(d)]+a[b.floor(d)-1])/2:a[d-1])},k=function(a){var b;switch(a){case"undefined":a=c;break;case"null":a=null;break;case"true":a=!0;break;case"false":a=!1;break;default:b=parseFloat(a),a==b&&(a=b)}return a},l=function(a){var b,c=[];for(b=a.length;b--;)c[b]=k(a[b]);return c},m=function(a,b){var c,d,e=[];for(c=0,d=a.length;c<d;c++)a[c]!==b&&e.push(a[c]);return e},n=function(a){return!isNaN(parseFloat(a))&&isFinite(a)},s=function(a,b,c,e,f){var g,h;a=(b===!1?parseFloat(a).toString():a.toFixed(b)).split(""),g=(g=d.inArray(".",a))<0?a.length:g,g<a.length&&(a[g]=f);for(h=g-c;h>0;h-=c)a.splice(h,0,e);return a.join("")},o=function(a,b,c){var d;for(d=b.length;d--;){if(c&&b[d]===null)continue;if(b[d]!==a)return!1}return!0},p=function(a){var b=0,c;for(c=a.length;c--;)b+=typeof a[c]=="number"?a[c]:0;return b},r=function(a){return d.isArray(a)?a:[a]},q=function(b){var c;a.createStyleSheet?a.createStyleSheet().cssText=b:(c=a.createElement("style"),c.type="text/css",a.getElementsByTagName("head")[0].appendChild(c),c[typeof a.body.style.WebkitAppearance=="string"?"innerText":"innerHTML"]=b)},d.fn.simpledraw=function(b,e,f,g){var h,i;if(f&&(h=this.data("_jqs_vcanvas")))return h;if(d.fn.sparkline.canvas===!1)return!1;if(d.fn.sparkline.canvas===c){var j=a.createElement("canvas");if(!j.getContext||!j.getContext("2d")){if(!a.namespaces||!!a.namespaces.v)return d.fn.sparkline.canvas=!1,!1;a.namespaces.add("v","urn:schemas-microsoft-com:vml","#default#VML"),d.fn.sparkline.canvas=function(a,b,c,d){return new J(a,b,c)}}else d.fn.sparkline.canvas=function(a,b,c,d){return new I(a,b,c,d)}}return b===c&&(b=d(this).innerWidth()),e===c&&(e=d(this).innerHeight()),h=d.fn.sparkline.canvas(b,e,this,g),i=d(this).data("_jqs_mhandler"),i&&i.registerCanvas(h),h},d.fn.cleardraw=function(){var a=this.data("_jqs_vcanvas");a&&a.reset()},d.RangeMapClass=t=g({init:function(a){var b,c,d=[];for(b in a)a.hasOwnProperty(b)&&typeof b=="string"&&b.indexOf(":")>-1&&(c=b.split(":"),c[0]=c[0].length===0?-Infinity:parseFloat(c[0]),c[1]=c[1].length===0?Infinity:parseFloat(c[1]),c[2]=a[b],d.push(c));this.map=a,this.rangelist=d||!1},get:function(a){var b=this.rangelist,d,e,f;if((f=this.map[a])!==c)return f;if(b)for(d=b.length;d--;){e=b[d];if(e[0]<=a&&e[1]>=a)return e[2]}return c}}),d.range_map=function(a){return new t(a)},u=g({init:function(a,b){var c=d(a);this.$el=c,this.options=b,this.currentPageX=0,this.currentPageY=0,this.el=a,this.splist=[],this.tooltip=null,this.over=!1,this.displayTooltips=!b.get("disableTooltips"),this.highlightEnabled=!b.get("disableHighlight")},registerSparkline:function(a){this.splist.push(a),this.over&&this.updateDisplay()},registerCanvas:function(a){var b=d(a.canvas);this.canvas=a,this.$canvas=b,b.mouseenter(d.proxy(this.mouseenter,this)),b.mouseleave(d.proxy(this.mouseleave,this)),b.click(d.proxy(this.mouseclick,this))},reset:function(a){this.splist=[],this.tooltip&&a&&(this.tooltip.remove(),this.tooltip=c)},mouseclick:function(a){var b=d.Event("sparklineClick");b.originalEvent=a,b.sparklines=this.splist,this.$el.trigger(b)},mouseenter:function(b){d(a.body).unbind("mousemove.jqs"),d(a.body).bind("mousemove.jqs",d.proxy(this.mousemove,this)),this.over=!0,this.currentPageX=b.pageX,this.currentPageY=b.pageY,this.currentEl=b.target,!this.tooltip&&this.displayTooltips&&(this.tooltip=new v(this.options),this.tooltip.updatePosition(b.pageX,b.pageY)),this.updateDisplay()},mouseleave:function(){d(a.body).unbind("mousemove.jqs");var b=this.splist,c=b.length,e=!1,f,g;this.over=!1,this.currentEl=null,this.tooltip&&(this.tooltip.remove(),this.tooltip=null);for(g=0;g<c;g++)f=b[g],f.clearRegionHighlight()&&(e=!0);e&&this.canvas.render()},mousemove:function(a){this.currentPageX=a.pageX,this.currentPageY=a.pageY,this.currentEl=a.target,this.tooltip&&this.tooltip.updatePosition(a.pageX,a.pageY),this.updateDisplay()},updateDisplay:function(){var a=this.splist,b=a.length,c=!1,e=this.$canvas.offset(),f=this.currentPageX-e.left,g=this.currentPageY-e.top,h,i,j,k,l;if(!this.over)return;for(j=0;j<b;j++)i=a[j],k=i.setRegionHighlight(this.currentEl,f,g),k&&(c=!0);if(c){l=d.Event("sparklineRegionChange"),l.sparklines=this.splist,this.$el.trigger(l);if(this.tooltip){h="";for(j=0;j<b;j++)i=a[j],h+=i.getCurrentRegionTooltip();this.tooltip.setContent(h)}this.disableHighlight||this.canvas.render()}k===null&&this.mouseleave()}}),v=g({sizeStyle:"position: static !important;display: block !important;visibility: hidden !important;float: left !important;",init:function(b){var c=b.get("tooltipClassname","jqstooltip"),e=this.sizeStyle,f;this.container=b.get("tooltipContainer")||a.body,this.tooltipOffsetX=b.get("tooltipOffsetX",10),this.tooltipOffsetY=b.get("tooltipOffsetY",12),d("#jqssizetip").remove(),d("#jqstooltip").remove(),this.sizetip=d("<div/>",{id:"jqssizetip",style:e,"class":c}),this.tooltip=d("<div/>",{id:"jqstooltip","class":c}).appendTo(this.container),f=this.tooltip.offset(),this.offsetLeft=f.left,this.offsetTop=f.top,this.hidden=!0,d(window).unbind("resize.jqs scroll.jqs"),d(window).bind("resize.jqs scroll.jqs",d.proxy(this.updateWindowDims,this)),this.updateWindowDims()},updateWindowDims:function(){this.scrollTop=d(window).scrollTop(),this.scrollLeft=d(window).scrollLeft(),this.scrollRight=this.scrollLeft+d(window).width(),this.updatePosition()},getSize:function(a){this.sizetip.html(a).appendTo(this.container),this.width=this.sizetip.width()+1,this.height=this.sizetip.height(),this.sizetip.remove()},setContent:function(a){if(!a){this.tooltip.css("visibility","hidden"),this.hidden=!0;return}this.getSize(a),this.tooltip.html(a).css({width:this.width,height:this.height,visibility:"visible"}),this.hidden&&(this.hidden=!1,this.updatePosition())},updatePosition:function(a,b){if(a===c){if(this.mousex===c)return;a=this.mousex-this.offsetLeft,b=this.mousey-this.offsetTop}else this.mousex=a-=this.offsetLeft,this.mousey=b-=this.offsetTop;if(!this.height||!this.width||this.hidden)return;b-=this.height+this.tooltipOffsetY,a+=this.tooltipOffsetX,b<this.scrollTop&&(b=this.scrollTop),a<this.scrollLeft?a=this.scrollLeft:a+this.width>this.scrollRight&&(a=this.scrollRight-this.width),this.tooltip.css({left:a,top:b})},remove:function(){this.tooltip.remove(),this.sizetip.remove(),this.sizetip=this.tooltip=c,d(window).unbind("resize.jqs scroll.jqs")}}),F=function(){q(E)},d(F),K=[],d.fn.sparkline=function(b,e){return this.each(function(){var f=new d.fn.sparkline.options(this,e),g=d(this),h,i;h=function(){var e,h,i,j,k,l,m;if(b==="html"||b===c){m=this.getAttribute(f.get("tagValuesAttribute"));if(m===c||m===null)m=g.html();e=m.replace(/(^\s*<!--)|(-->\s*$)|\s+/g,"").split(",")}else e=b;h=f.get("width")==="auto"?e.length*f.get("defaultPixelsPerValue"):f.get("width");if(f.get("height")==="auto"){if(!f.get("composite")||!d.data(this,"_jqs_vcanvas"))j=a.createElement("span"),j.innerHTML="a",g.html(j),i=d(j).innerHeight()||d(j).height(),d(j).remove(),j=null}else i=f.get("height");f.get("disableInteraction")?k=!1:(k=d.data(this,"_jqs_mhandler"),k?f.get("composite")||k.reset():(k=new u(this,f),d.data(this,"_jqs_mhandler",k)));if(f.get("composite")&&!d.data(this,"_jqs_vcanvas")){d.data(this,"_jqs_errnotify")||(alert("Attempted to attach a composite sparkline to an element with no existing sparkline"),d.data(this,"_jqs_errnotify",!0));return}l=new(d.fn.sparkline[f.get("type")])(this,e,f,h,i),l.render(),k&&k.registerSparkline(l)};if(d(this).html()&&!f.get("disableHiddenCheck")&&d(this).is(":hidden")||!d(this).parents("body").length){if(!f.get("composite")&&d.data(this,"_jqs_pending"))for(i=K.length;i;i--)K[i-1][0]==this&&K.splice(i-1,1);K.push([this,h]),d.data(this,"_jqs_pending",!0)}else h.call(this)})},d.fn.sparkline.defaults=f(),d.sparkline_display_visible=function(){var a,b,c,e=[];for(b=0,c=K.length;b<c;b++)a=K[b][0],d(a).is(":visible")&&!d(a).parents().is(":hidden")?(K[b][1].call(a),d.data(K[b][0],"_jqs_pending",!1),e.push(b)):!d(a).closest("html").length&&!d.data(a,"_jqs_pending")&&(d.data(K[b][0],"_jqs_pending",!1),e.push(b));for(b=e.length;b;b--)K.splice(e[b-1],1)},d.fn.sparkline.options=g({init:function(a,b){var c,f,g,h;this.userOptions=b=b||{},this.tag=a,this.tagValCache={},f=d.fn.sparkline.defaults,g=f.common,this.tagOptionsPrefix=b.enableTagOptions&&(b.tagOptionsPrefix||g.tagOptionsPrefix),h=this.getTagSetting("type"),h===e?c=f[b.type||g.type]:c=f[h],this.mergedOptions=d.extend({},g,c,b)},getTagSetting:function(a){var b=this.tagOptionsPrefix,d,f,g,h;if(b===!1||b===c)return e;if(this.tagValCache.hasOwnProperty(a))d=this.tagValCache.key;else{d=this.tag.getAttribute(b+a);if(d===c||d===null)d=e;else if(d.substr(0,1)==="["){d=d.substr(1,d.length-2).split(",");for(f=d.length;f--;)d[f]=k(d[f].replace(/(^\s*)|(\s*$)/g,""))}else if(d.substr(0,1)==="{"){g=d.substr(1,d.length-2).split(","),d={};for(f=g.length;f--;)h=g[f].split(":",2),d[h[0].replace(/(^\s*)|(\s*$)/g,"")]=k(h[1].replace(/(^\s*)|(\s*$)/g,""))}else d=k(d);this.tagValCache.key=d}return d},get:function(a,b){var d=this.getTagSetting(a),f;return d!==e?d:(f=this.mergedOptions[a])===c?b:f}}),d.fn.sparkline._base=g({disabled:!1,init:function(a,b,e,f,g){this.el=a,this.$el=d(a),this.values=b,this.options=e,this.width=f,this.height=g,this.currentRegion=c},initTarget:function(){var a=!this.options.get("disableInteraction");(this.target=this.$el.simpledraw(this.width,this.height,this.options.get("composite"),a))?(this.canvasWidth=this.target.pixelWidth,this.canvasHeight=this.target.pixelHeight):this.disabled=!0},render:function(){return this.disabled?(this.el.innerHTML="",!1):!0},getRegion:function(a,b){},setRegionHighlight:function(a,b,d){var e=this.currentRegion,f=!this.options.get("disableHighlight"),g;return b>this.canvasWidth||d>this.canvasHeight||b<0||d<0?null:(g=this.getRegion(a,b,d),e!==g?(e!==c&&f&&this.removeHighlight(),this.currentRegion=g,g!==c&&f&&this.renderHighlight(),!0):!1)},clearRegionHighlight:function(){return this.currentRegion!==c?(this.removeHighlight(),this.currentRegion=c,!0):!1},renderHighlight:function(){this.changeHighlight(!0)},removeHighlight:function(){this.changeHighlight(!1)},changeHighlight:function(a){},getCurrentRegionTooltip:function(){var a=this.options,b="",e=[],f,g,i,j,k,l,m,n,o,p,q,r,s,t;if(this.currentRegion===c)return"";f=this.getCurrentRegionFields(),q=a.get("tooltipFormatter");if(q)return q(this,a,f);a.get("tooltipChartTitle")&&(b+='<div class="jqs jqstitle">'+a.get("tooltipChartTitle")+"</div>\n"),g=this.options.get("tooltipFormat");if(!g)return"";d.isArray(g)||(g=[g]),d.isArray(f)||(f=[f]),m=this.options.get("tooltipFormatFieldlist"),n=this.options.get("tooltipFormatFieldlistKey");if(m&&n){o=[];for(l=f.length;l--;)p=f[l][n],(t=d.inArray(p,m))!=-1&&(o[t]=f[l]);f=o}i=g.length,s=f.length;for(l=0;l<i;l++){r=g[l],typeof r=="string"&&(r=new h(r)),j=r.fclass||"jqsfield";for(t=0;t<s;t++)if(!f[t].isNull||!a.get("tooltipSkipNull"))d.extend(f[t],{prefix:a.get("tooltipPrefix"),suffix:a.get("tooltipSuffix")}),k=r.render(f[t],a.get("tooltipValueLookups"),a),e.push('<div class="'+j+'">'+k+"</div>")}return e.length?b+e.join("\n"):""},getCurrentRegionFields:function(){},calcHighlightColor:function(a,c){var d=c.get("highlightColor"),e=c.get("highlightLighten"),f,g,h,j;if(d)return d;if(e){f=/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(a)||/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(a);if(f){h=[],g=a.length===4?16:1;for(j=0;j<3;j++)h[j]=i(b.round(parseInt(f[j+1],16)*g*e),0,255);return"rgb("+h.join(",")+")"}}return a}}),w={changeHighlight:function(a){var b=this.currentRegion,c=this.target,e=this.regionShapes[b],f;e&&(f=this.renderRegion(b,a),d.isArray(f)||d.isArray(e)?(c.replaceWithShapes(e,f),this.regionShapes[b]=d.map(f,function(a){return a.id})):(c.replaceWithShape(e,f),this.regionShapes[b]=f.id))},render:function(){var a=this.values,b=this.target,c=this.regionShapes,e,f,g,h;if(!this.cls._super.render.call(this))return;for(g=a.length;g--;){e=this.renderRegion(g);if(e)if(d.isArray(e)){f=[];for(h=e.length;h--;)e[h].append(),f.push(e[h].id);c[g]=f}else e.append(),c[g]=e.id;else c[g]=null}b.render()}},d.fn.sparkline.line=x=g(d.fn.sparkline._base,{type:"line",init:function(a,b,c,d,e){x._super.init.call(this,a,b,c,d,e),this.vertices=[],this.regionMap=[],this.xvalues=[],this.yvalues=[],this.yminmax=[],this.hightlightSpotId=null,this.lastShapeId=null,this.initTarget()},getRegion:function(a,b,d){var e,f=this.regionMap;for(e=f.length;e--;)if(f[e]!==null&&b>=f[e][0]&&b<=f[e][1])return f[e][2];return c},getCurrentRegionFields:function(){var a=this.currentRegion;return{isNull:this.yvalues[a]===null,x:this.xvalues[a],y:this.yvalues[a],color:this.options.get("lineColor"),fillColor:this.options.get("fillColor"),offset:a}},renderHighlight:function(){var a=this.currentRegion,b=this.target,d=this.vertices[a],e=this.options,f=e.get("spotRadius"),g=e.get("highlightSpotColor"),h=e.get("highlightLineColor"),i,j;if(!d)return;f&&g&&(i=b.drawCircle(d[0],d[1],f,c,g),this.highlightSpotId=i.id,b.insertAfterShape(this.lastShapeId,i)),h&&(j=b.drawLine(d[0],this.canvasTop,d[0],this.canvasTop+this.canvasHeight,h),this.highlightLineId=j.id,b.insertAfterShape(this.lastShapeId,j))},removeHighlight:function(){var a=this.target;this.highlightSpotId&&(a.removeShapeId(this.highlightSpotId),this.highlightSpotId=null),this.highlightLineId&&(a.removeShapeId(this.highlightLineId),this.highlightLineId=null)},scanValues:function(){var a=this.values,c=a.length,d=this.xvalues,e=this.yvalues,f=this.yminmax,g,h,i,j,k;for(g=0;g<c;g++)h=a[g],i=typeof a[g]=="string",j=typeof a[g]=="object"&&a[g]instanceof Array,k=i&&a[g].split(":"),i&&k.length===2?(d.push(Number(k[0])),e.push(Number(k[1])),f.push(Number(k[1]))):j?(d.push(h[0]),e.push(h[1]),f.push(h[1])):(d.push(g),a[g]===null||a[g]==="null"?e.push(null):(e.push(Number(h)),f.push(Number(h))));this.options.get("xvalues")&&(d=this.options.get("xvalues")),this.maxy=this.maxyorg=b.max.apply(b,f),this.miny=this.minyorg=b.min.apply(b,f),this.maxx=b.max.apply(b,d),this.minx=b.min.apply(b,d),this.xvalues=d,this.yvalues=e,this.yminmax=f},processRangeOptions:function(){var a=this.options,b=a.get("normalRangeMin"),d=a.get("normalRangeMax");b!==c&&(b<this.miny&&(this.miny=b),d>this.maxy&&(this.maxy=d)),a.get("chartRangeMin")!==c&&(a.get("chartRangeClip")||a.get("chartRangeMin")<this.miny)&&(this.miny=a.get("chartRangeMin")),a.get("chartRangeMax")!==c&&(a.get("chartRangeClip")||a.get("chartRangeMax")>this.maxy)&&(this.maxy=a.get("chartRangeMax")),a.get("chartRangeMinX")!==c&&(a.get("chartRangeClipX")||a.get("chartRangeMinX")<this.minx)&&(this.minx=a.get("chartRangeMinX")),a.get("chartRangeMaxX")!==c&&(a.get("chartRangeClipX")||a.get("chartRangeMaxX")>this.maxx)&&(this.maxx=a.get("chartRangeMaxX"))},drawNormalRange:function(a,d,e,f,g){var h=this.options.get("normalRangeMin"),i=this.options.get("normalRangeMax"),j=d+b.round(e-e*((i-this.miny)/g)),k=b.round(e*(i-h)/g);this.target.drawRect(a,j,f,k,c,this.options.get("normalRangeColor")).append()},render:function(){var a=this.options,e=this.target,f=this.canvasWidth,g=this.canvasHeight,h=this.vertices,i=a.get("spotRadius"),j=this.regionMap,k,l,m,n,o,p,q,r,s,u,v,w,y,z,A,B,C,D,E,F,G,H,I,J,K;if(!x._super.render.call(this))return;this.scanValues(),this.processRangeOptions(),I=this.xvalues,J=this.yvalues;if(!this.yminmax.length||this.yvalues.length<2)return;n=o=0,k=this.maxx-this.minx===0?1:this.maxx-this.minx,l=this.maxy-this.miny===0?1:this.maxy-this.miny,m=this.yvalues.length-1,i&&(f<i*4||g<i*4)&&(i=0);if(i){G=a.get("highlightSpotColor")&&!a.get("disableInteraction");if(G||a.get("minSpotColor")||a.get("spotColor")&&J[m]===this.miny)g-=b.ceil(i);if(G||a.get("maxSpotColor")||a.get("spotColor")&&J[m]===this.maxy)g-=b.ceil(i),n+=b.ceil(i);if(G||(a.get("minSpotColor")||a.get("maxSpotColor"))&&(J[0]===this.miny||J[0]===this.maxy))o+=b.ceil(i),f-=b.ceil(i);if(G||a.get("spotColor")||a.get("minSpotColor")||a.get("maxSpotColor")&&(J[m]===this.miny||J[m]===this.maxy))f-=b.ceil(i)}g--,a.get("normalRangeMin")!==c&&!a.get("drawNormalOnTop")&&this.drawNormalRange(o,n,g,f,l),q=[],r=[q],z=A=null,B=J.length;for(K=0;K<B;K++)s=I[K],v=I[K+1],u=J[K],w=o+b.round((s-this.minx)*(f/k)),y=K<B-1?o+b.round((v-this.minx)*(f/k)):f,A=w+(y-w)/2,j[K]=[z||0,A,K],z=A,u===null?K&&(J[K-1]!==null&&(q=[],r.push(q)),h.push(null)):(u<this.miny&&(u=this.miny),u>this.maxy&&(u=this.maxy),q.length||q.push([w,n+g]),p=[w,n+b.round(g-g*((u-this.miny)/l))],q.push(p),h.push(p));C=[],D=[],E=r.length;for(K=0;K<E;K++)q=r[K],q.length&&(a.get("fillColor")&&(q.push([q[q.length-1][0],n+g]),D.push(q.slice(0)),q.pop()),q.length>2&&(q[0]=[q[0][0],q[1][1]]),C.push(q));E=D.length;for(K=0;K<E;K++)e.drawShape(D[K],a.get("fillColor"),a.get("fillColor")).append();a.get("normalRangeMin")!==c&&a.get("drawNormalOnTop")&&this.drawNormalRange(o,n,g,f,l),E=C.length;for(K=0;K<E;K++)e.drawShape(C[K],a.get("lineColor"),c,a.get("lineWidth")).append();if(i&&a.get("valueSpots")){F=a.get("valueSpots"),F.get===c&&(F=new t(F));for(K=0;K<B;K++)H=F.get(J[K]),H&&e.drawCircle(o+b.round((I[K]-this.minx)*(f/k)),n+b.round(g-g*((J[K]-this.miny)/l)),i,c,H).append()}i&&a.get("spotColor")&&J[m]!==null&&e.drawCircle(o+b.round((I[I.length-1]-this.minx)*(f/k)),n+b.round(g-g*((J[m]-this.miny)/l)),i,c,a.get("spotColor")).append(),this.maxy!==this.minyorg&&(i&&a.get("minSpotColor")&&(s=I[d.inArray(this.minyorg,J)],e.drawCircle(o+b.round((s-this.minx)*(f/k)),n+b.round(g-g*((this.minyorg-this.miny)/l)),i,c,a.get("minSpotColor")).append()),i&&a.get("maxSpotColor")&&(s=I[d.inArray(this.maxyorg,J)],e.drawCircle(o+b.round((s-this.minx)*(f/k)),n+b.round(g-g*((this.maxyorg-this.miny)/l)),i,c,a.get("maxSpotColor")).append())),this.lastShapeId=e.getLastShapeId(),this.canvasTop=n,e.render()}}),d.fn.sparkline.bar=y=g(d.fn.sparkline._base,w,{type:"bar",init:function(a,e,f,g,h){var j=parseInt(f.get("barWidth"),10),n=parseInt(f.get("barSpacing"),10),o=f.get("chartRangeMin"),p=f.get("chartRangeMax"),q=f.get("chartRangeClip"),r=Infinity,s=-Infinity,u,v,w,x,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R;y._super.init.call(this,a,e,f,g,h);for(A=0,B=e.length;A<B;A++){O=e[A],u=typeof O=="string"&&O.indexOf(":")>-1;if(u||d.isArray(O))J=!0,u&&(O=e[A]=l(O.split(":"))),O=m(O,null),v=b.min.apply(b,O),w=b.max.apply(b,O),v<r&&(r=v),w>s&&(s=w)}this.stacked=J,this.regionShapes={},this.barWidth=j,this.barSpacing=n,this.totalBarWidth=j+n,this.width=g=e.length*j+(e.length-1)*n,this.initTarget(),q&&(H=o===c?-Infinity:o,I=p===c?Infinity:p),z=[],x=J?[]:z;var S=[],T=[];for(A=0,B=e.length;A<B;A++)if(J){K=e[A],e[A]=N=[],S[A]=0,x[A]=T[A]=0;for(L=0,M=K.length;L<M;L++)O=N[L]=q?i(K[L],H,I):K[L],O!==null&&(O>0&&(S[A]+=O),r<0&&s>0?O<0?T[A]+=b.abs(O):x[A]+=O:x[A]+=b.abs(O-(O<0?s:r)),z.push(O))}else O=q?i(e[A],H,I):e[A],O=e[A]=k(O),O!==null&&z.push(O);this.max=G=b.max.apply(b,z),this.min=F=b.min.apply(b,z),this.stackMax=s=J?b.max.apply(b,S):G,this.stackMin=r=J?b.min.apply(b,z):F,f.get("chartRangeMin")!==c&&(f.get("chartRangeClip")||f.get("chartRangeMin")<F)&&(F=f.get("chartRangeMin")),f.get("chartRangeMax")!==c&&(f.get("chartRangeClip")||f.get("chartRangeMax")>G)&&(G=f.get("chartRangeMax")),this.zeroAxis=D=f.get("zeroAxis",!0),F<=0&&G>=0&&D?E=0:D==0?E=F:F>0?E=F:E=G,this.xaxisOffset=E,C=J?b.max.apply(b,x)+b.max.apply(b,T):G-F,this.canvasHeightEf=D&&F<0?this.canvasHeight-2:this.canvasHeight-1,F<E?(Q=J&&G>=0?s:G,P=(Q-E)/C*this.canvasHeight,P!==b.ceil(P)&&(this.canvasHeightEf-=2,P=b.ceil(P))):P=this.canvasHeight,this.yoffset=P,d.isArray(f.get("colorMap"))?(this.colorMapByIndex=f.get("colorMap"),this.colorMapByValue=null):(this.colorMapByIndex=null,this.colorMapByValue=f.get("colorMap"),this.colorMapByValue&&this.colorMapByValue.get===c&&(this.colorMapByValue=new t(this.colorMapByValue))),this.range=C},getRegion:function(a,d,e){var f=b.floor(d/this.totalBarWidth);return f<0||f>=this.values.length?c:f},getCurrentRegionFields:function(){var a=this.currentRegion,b=r(this.values[a]),c=[],d,e;for(e=b.length;e--;)d=b[e],c.push({isNull:d===null,value:d,color:this.calcColor(e,d,a),offset:a});return c},calcColor:function(a,b,e){var f=this.colorMapByIndex,g=this.colorMapByValue,h=this.options,i,j;return this.stacked?i=h.get("stackedBarColor"):i=b<0?h.get("negBarColor"):h.get("barColor"),b===0&&h.get("zeroColor")!==c&&(i=h.get("zeroColor")),g&&(j=g.get(b))?i=j:f&&f.length>e&&(i=f[e]),d.isArray(i)?i[a%i.length]:i},renderRegion:function(a,e){var f=this.values[a],g=this.options,h=this.xaxisOffset,i=[],j=this.range,k=this.stacked,l=this.target,m=a*this.totalBarWidth,n=this.canvasHeightEf,p=this.yoffset,q,r,s,t,u,v,w,x,y,z;f=d.isArray(f)?f:[f],w=f.length,x=f[0],t=o(null,f),z=o(h,f,!0);if(t)return g.get("nullColor")?(s=e?g.get("nullColor"):this.calcHighlightColor(g.get("nullColor"),g),q=p>0?p-1:p,l.drawRect(m,q,this.barWidth-1,0,s,s)):c;u=p;for(v=0;v<w;v++){x=f[v];if(k&&x===h){if(!z||y)continue;y=!0}j>0?r=b.floor(n*(b.abs(x-h)/j))+1:r=1,x<h||x===h&&p===0?(q=u,u+=r):(q=p-r,p-=r),s=this.calcColor(v,x,a),e&&(s=this.calcHighlightColor(s,g)),i.push(l.drawRect(m,q,this.barWidth-1,r-1,s,s))}return i.length===1?i[0]:i}}),d.fn.sparkline.tristate=z=g(d.fn.sparkline._base,w,{type:"tristate",init:function(a,b,e,f,g){var h=parseInt(e.get("barWidth"),10),i=parseInt(e.get("barSpacing"),10);z._super.init.call(this,a,b,e,f,g),this.regionShapes={},this.barWidth=h,this.barSpacing=i,this.totalBarWidth=h+i,this.values=d.map(b,Number),this.width=f=b.length*h+(b.length-1)*i,d.isArray(e.get("colorMap"))?(this.colorMapByIndex=e.get("colorMap"),this.colorMapByValue=null):(this.colorMapByIndex=null,this.colorMapByValue=e.get("colorMap"),this.colorMapByValue&&this.colorMapByValue.get===c&&(this.colorMapByValue=new t(this.colorMapByValue))),this.initTarget()},getRegion:function(a,c,d){return b.floor(c/this.totalBarWidth)},getCurrentRegionFields:function(){var a=this.currentRegion;return{isNull:this.values[a]===c,value:this.values[a],color:this.calcColor(this.values[a],a),offset:a}},calcColor:function(a,b){var c=this.values,d=this.options,e=this.colorMapByIndex,f=this.colorMapByValue,g,h;return f&&(h=f.get(a))?g=h:e&&e.length>b?g=e[b]:c[b]<0?g=d.get("negBarColor"):c[b]>0?g=d.get("posBarColor"):g=d.get("zeroBarColor"),g},renderRegion:function(a,c){var d=this.values,e=this.options,f=this.target,g,h,i,j,k,l;g=f.pixelHeight,i=b.round(g/2),j=a*this.totalBarWidth,d[a]<0?(k=i,h=i-1):d[a]>0?(k=0,h=i-1):(k=i-1,h=2),l=this.calcColor(d[a],a);if(l===null)return;return c&&(l=this.calcHighlightColor(l,e)),f.drawRect(j,k,this.barWidth-1,h-1,l,l)}}),d.fn.sparkline.discrete=A=g(d.fn.sparkline._base,w,{type:"discrete",init:function(a,e,f,g,h){A._super.init.call(this,a,e,f,g,h),this.regionShapes={},this.values=e=d.map(e,Number),this.min=b.min.apply(b,e),this.max=b.max.apply(b,e),this.range=this.max-this.min,this.width=g=f.get("width")==="auto"?e.length*2:this.width,this.interval=b.floor(g/e.length),this.itemWidth=g/e.length,f.get("chartRangeMin")!==c&&(f.get("chartRangeClip")||f.get("chartRangeMin")<this.min)&&(this.min=f.get("chartRangeMin")),f.get("chartRangeMax")!==c&&(f.get("chartRangeClip")||f.get("chartRangeMax")>this.max)&&(this.max=f.get("chartRangeMax")),this.initTarget(),this.target&&(this.lineHeight=f.get("lineHeight")==="auto"?b.round(this.canvasHeight*.3):f.get("lineHeight"))},getRegion:function(a,c,d){return b.floor(c/this.itemWidth)},getCurrentRegionFields:function(){var a=this.currentRegion;return{isNull:this.values[a]===c,value:this.values[a],offset:a}},renderRegion:function(a,c){var d=this.values,e=this.options,f=this.min,g=this.max,h=this.range,j=this.interval,k=this.target,l=this.canvasHeight,m=this.lineHeight,n=l-m,o,p,q,r;return p=i(d[a],f,g),r=a*j,o=b.round(n-n*((p-f)/h)),q=e.get("thresholdColor")&&p<e.get("thresholdValue")?e.get("thresholdColor"):e.get("lineColor"),c&&(q=this.calcHighlightColor(q,e)),k.drawLine(r,o,r,o+m,q)}}),d.fn.sparkline.bullet=B=g(d.fn.sparkline._base,{type:"bullet",init:function(a,d,e,f,g){var h,i,j;B._super.init.call(this,a,d,e,f,g),this.values=d=l(d),j=d.slice(),j[0]=j[0]===null?j[2]:j[0],j[1]=d[1]===null?j[2]:j[1],h=b.min.apply(b,d),i=b.max.apply(b,d),e.get("base")===c?h=h<0?h:0:h=e.get("base"),this.min=h,this.max=i,this.range=i-h,this.shapes={},this.valueShapes={},this.regiondata={},this.width=f=e.get("width")==="auto"?"4.0em":f,this.target=this.$el.simpledraw(f,g,e.get("composite")),d.length||(this.disabled=!0),this.initTarget()},getRegion:function(a,b,d){var e=this.target.getShapeAt(a,b,d);return e!==c&&this.shapes[e]!==c?this.shapes[e]:c},getCurrentRegionFields:function(){var a=this.currentRegion;return{fieldkey:a.substr(0,1),value:this.values[a.substr(1)],region:a}},changeHighlight:function(a){var b=this.currentRegion,c=this.valueShapes[b],d;delete this.shapes[c];switch(b.substr(0,1)){case"r":d=this.renderRange(b.substr(1),a);break;case"p":d=this.renderPerformance(a);break;case"t":d=this.renderTarget(a)}this.valueShapes[b]=d.id,this.shapes[d.id]=b,this.target.replaceWithShape(c,d)},renderRange:function(a,c){var d=this.values[a],e=b.round(this.canvasWidth*((d-this.min)/this.range)),f=this.options.get("rangeColors")[a-2];return c&&(f=this.calcHighlightColor(f,this.options)),this.target.drawRect(0,0,e-1,this.canvasHeight-1,f,f)},renderPerformance:function(a){var c=this.values[1],d=b.round(this.canvasWidth*((c-this.min)/this.range)),e=this.options.get("performanceColor");return a&&(e=this.calcHighlightColor(e,this.options)),this.target.drawRect(0,b.round(this.canvasHeight*.3),d-1,b.round(this.canvasHeight*.4)-1,e,e)},renderTarget:function(a){var c=this.values[0],d=b.round(this.canvasWidth*((c-this.min)/this.range)-this.options.get("targetWidth")/2),e=b.round(this.canvasHeight*.1),f=this.canvasHeight-e*2,g=this.options.get("targetColor");return a&&(g=this.calcHighlightColor(g,this.options)),this.target.drawRect(d,e,this.options.get("targetWidth")-1,f-1,g,g)},render:function(){var a=this.values.length,b=this.target,c,d;if(!B._super.render.call(this))return;for(c=2;c<a;c++)d=this.renderRange(c).append(),this.shapes[d.id]="r"+c,this.valueShapes["r"+c]=d.id;this.values[1]!==null&&(d=this.renderPerformance().append(),this.shapes[d.id]="p1",this.valueShapes.p1=d.id),this.values[0]!==null&&(d=this.renderTarget().append(),this.shapes[d.id]="t0",this.valueShapes.t0=d.id),b.render()}}),d.fn.sparkline.pie=C=g(d.fn.sparkline._base,{type:"pie",init:function(a,c,e,f,g){var h=0,i;C._super.init.call(this,a,c,e,f,g),this.shapes={},this.valueShapes={},this.values=c=d.map(c,Number),e.get("width")==="auto"&&(this.width=this.height);if(c.length>0)for(i=c.length;i--;)h+=c[i];this.total=h,this.initTarget(),this.radius=b.floor(b.min(this.canvasWidth,this.canvasHeight)/2)},getRegion:function(a,b,d){var e=this.target.getShapeAt(a,b,d);return e!==c&&this.shapes[e]!==c?this.shapes[e]:c},getCurrentRegionFields:function(){var a=this.currentRegion;return{isNull:this.values[a]===c,value:this.values[a],percent:this.values[a]/this.total*100,color:this.options.get("sliceColors")[a%this.options.get("sliceColors").length],offset:a}},changeHighlight:function(a){var b=this.currentRegion,c=this.renderSlice(b,a),d=this.valueShapes[b];delete this.shapes[d],this.target.replaceWithShape(d,c),this.valueShapes[b]=c.id,this.shapes[c.id]=b},renderSlice:function(a,d){var e=this.target,f=this.options,g=this.radius,h=f.get("borderWidth"),i=f.get("offset"),j=2*b.PI,k=this.values,l=this.total,m=i?2*b.PI*(i/360):0,n,o,p,q,r;q=k.length;for(p=0;p<q;p++){n=m,o=m,l>0&&(o=m+j*(k[p]/l));if(a===p)return r=f.get("sliceColors")[p%f.get("sliceColors").length],d&&(r=this.calcHighlightColor(r,f)),e.drawPieSlice(g,g,g-h,n,o,c,r);m=o}},render:function(){var a=this.target,d=this.values,e=this.options,f=this.radius,g=e.get("borderWidth"),h,i;if(!C._super.render.call(this))return;g&&a.drawCircle(f,f,b.floor(f-g/2),e.get("borderColor"),c,g).append();for(i=d.length;i--;)d[i]&&(h=this.renderSlice(i).append(),this.valueShapes[i]=h.id,this.shapes[h.id]=i);a.render()}}),d.fn.sparkline.box=D=g(d.fn.sparkline._base,{type:"box",init:function(a,b,c,e,f){D._super.init.call(this,a,b,c,e,f),this.values=d.map(b,Number),this.width=c.get("width")==="auto"?"4.0em":e,this.initTarget(),this.values.length||(this.disabled=1)},getRegion:function(){return 1},getCurrentRegionFields:function(){var a=[{field:"lq",value:this.quartiles[0]},{field:"med",value:this.quartiles -[1]},{field:"uq",value:this.quartiles[2]}];return this.loutlier!==c&&a.push({field:"lo",value:this.loutlier}),this.routlier!==c&&a.push({field:"ro",value:this.routlier}),this.lwhisker!==c&&a.push({field:"lw",value:this.lwhisker}),this.rwhisker!==c&&a.push({field:"rw",value:this.rwhisker}),a},render:function(){var a=this.target,d=this.values,e=d.length,f=this.options,g=this.canvasWidth,h=this.canvasHeight,i=f.get("chartRangeMin")===c?b.min.apply(b,d):f.get("chartRangeMin"),k=f.get("chartRangeMax")===c?b.max.apply(b,d):f.get("chartRangeMax"),l=0,m,n,o,p,q,r,s,t,u,v,w;if(!D._super.render.call(this))return;if(f.get("raw"))f.get("showOutliers")&&d.length>5?(n=d[0],m=d[1],p=d[2],q=d[3],r=d[4],s=d[5],t=d[6]):(m=d[0],p=d[1],q=d[2],r=d[3],s=d[4]);else{d.sort(function(a,b){return a-b}),p=j(d,1),q=j(d,2),r=j(d,3),o=r-p;if(f.get("showOutliers")){m=s=c;for(u=0;u<e;u++)m===c&&d[u]>p-o*f.get("outlierIQR")&&(m=d[u]),d[u]<r+o*f.get("outlierIQR")&&(s=d[u]);n=d[0],t=d[e-1]}else m=d[0],s=d[e-1]}this.quartiles=[p,q,r],this.lwhisker=m,this.rwhisker=s,this.loutlier=n,this.routlier=t,w=g/(k-i+1),f.get("showOutliers")&&(l=b.ceil(f.get("spotRadius")),g-=2*b.ceil(f.get("spotRadius")),w=g/(k-i+1),n<m&&a.drawCircle((n-i)*w+l,h/2,f.get("spotRadius"),f.get("outlierLineColor"),f.get("outlierFillColor")).append(),t>s&&a.drawCircle((t-i)*w+l,h/2,f.get("spotRadius"),f.get("outlierLineColor"),f.get("outlierFillColor")).append()),a.drawRect(b.round((p-i)*w+l),b.round(h*.1),b.round((r-p)*w),b.round(h*.8),f.get("boxLineColor"),f.get("boxFillColor")).append(),a.drawLine(b.round((m-i)*w+l),b.round(h/2),b.round((p-i)*w+l),b.round(h/2),f.get("lineColor")).append(),a.drawLine(b.round((m-i)*w+l),b.round(h/4),b.round((m-i)*w+l),b.round(h-h/4),f.get("whiskerColor")).append(),a.drawLine(b.round((s-i)*w+l),b.round(h/2),b.round((r-i)*w+l),b.round(h/2),f.get("lineColor")).append(),a.drawLine(b.round((s-i)*w+l),b.round(h/4),b.round((s-i)*w+l),b.round(h-h/4),f.get("whiskerColor")).append(),a.drawLine(b.round((q-i)*w+l),b.round(h*.1),b.round((q-i)*w+l),b.round(h*.9),f.get("medianColor")).append(),f.get("target")&&(v=b.ceil(f.get("spotRadius")),a.drawLine(b.round((f.get("target")-i)*w+l),b.round(h/2-v),b.round((f.get("target")-i)*w+l),b.round(h/2+v),f.get("targetColor")).append(),a.drawLine(b.round((f.get("target")-i)*w+l-v),b.round(h/2),b.round((f.get("target")-i)*w+l+v),b.round(h/2),f.get("targetColor")).append()),a.render()}}),G=g({init:function(a,b,c,d){this.target=a,this.id=b,this.type=c,this.args=d},append:function(){return this.target.appendShape(this),this}}),H=g({_pxregex:/(\d+)(px)?\s*$/i,init:function(a,b,c){if(!a)return;this.width=a,this.height=b,this.target=c,this.lastShapeId=null,c[0]&&(c=c[0]),d.data(c,"_jqs_vcanvas",this)},drawLine:function(a,b,c,d,e,f){return this.drawShape([[a,b],[c,d]],e,f)},drawShape:function(a,b,c,d){return this._genShape("Shape",[a,b,c,d])},drawCircle:function(a,b,c,d,e,f){return this._genShape("Circle",[a,b,c,d,e,f])},drawPieSlice:function(a,b,c,d,e,f,g){return this._genShape("PieSlice",[a,b,c,d,e,f,g])},drawRect:function(a,b,c,d,e,f){return this._genShape("Rect",[a,b,c,d,e,f])},getElement:function(){return this.canvas},getLastShapeId:function(){return this.lastShapeId},reset:function(){alert("reset not implemented")},_insert:function(a,b){d(b).html(a)},_calculatePixelDims:function(a,b,c){var e;e=this._pxregex.exec(b),e?this.pixelHeight=e[1]:this.pixelHeight=d(c).height(),e=this._pxregex.exec(a),e?this.pixelWidth=e[1]:this.pixelWidth=d(c).width()},_genShape:function(a,b){var c=L++;return b.unshift(c),new G(this,c,a,b)},appendShape:function(a){alert("appendShape not implemented")},replaceWithShape:function(a,b){alert("replaceWithShape not implemented")},insertAfterShape:function(a,b){alert("insertAfterShape not implemented")},removeShapeId:function(a){alert("removeShapeId not implemented")},getShapeAt:function(a,b,c){alert("getShapeAt not implemented")},render:function(){alert("render not implemented")}}),I=g(H,{init:function(b,e,f,g){I._super.init.call(this,b,e,f),this.canvas=a.createElement("canvas"),f[0]&&(f=f[0]),d.data(f,"_jqs_vcanvas",this),d(this.canvas).css({display:"inline-block",width:b,height:e,verticalAlign:"top"}),this._insert(this.canvas,f),this._calculatePixelDims(b,e,this.canvas),this.canvas.width=this.pixelWidth,this.canvas.height=this.pixelHeight,this.interact=g,this.shapes={},this.shapeseq=[],this.currentTargetShapeId=c,d(this.canvas).css({width:this.pixelWidth,height:this.pixelHeight})},_getContext:function(a,b,d){var e=this.canvas.getContext("2d");return a!==c&&(e.strokeStyle=a),e.lineWidth=d===c?1:d,b!==c&&(e.fillStyle=b),e},reset:function(){var a=this._getContext();a.clearRect(0,0,this.pixelWidth,this.pixelHeight),this.shapes={},this.shapeseq=[],this.currentTargetShapeId=c},_drawShape:function(a,b,d,e,f){var g=this._getContext(d,e,f),h,i;g.beginPath(),g.moveTo(b[0][0]+.5,b[0][1]+.5);for(h=1,i=b.length;h<i;h++)g.lineTo(b[h][0]+.5,b[h][1]+.5);d!==c&&g.stroke(),e!==c&&g.fill(),this.targetX!==c&&this.targetY!==c&&g.isPointInPath(this.targetX,this.targetY)&&(this.currentTargetShapeId=a)},_drawCircle:function(a,d,e,f,g,h,i){var j=this._getContext(g,h,i);j.beginPath(),j.arc(d,e,f,0,2*b.PI,!1),this.targetX!==c&&this.targetY!==c&&j.isPointInPath(this.targetX,this.targetY)&&(this.currentTargetShapeId=a),g!==c&&j.stroke(),h!==c&&j.fill()},_drawPieSlice:function(a,b,d,e,f,g,h,i){var j=this._getContext(h,i);j.beginPath(),j.moveTo(b,d),j.arc(b,d,e,f,g,!1),j.lineTo(b,d),j.closePath(),h!==c&&j.stroke(),i&&j.fill(),this.targetX!==c&&this.targetY!==c&&j.isPointInPath(this.targetX,this.targetY)&&(this.currentTargetShapeId=a)},_drawRect:function(a,b,c,d,e,f,g){return this._drawShape(a,[[b,c],[b+d,c],[b+d,c+e],[b,c+e],[b,c]],f,g)},appendShape:function(a){return this.shapes[a.id]=a,this.shapeseq.push(a.id),this.lastShapeId=a.id,a.id},replaceWithShape:function(a,b){var c=this.shapeseq,d;this.shapes[b.id]=b;for(d=c.length;d--;)c[d]==a&&(c[d]=b.id);delete this.shapes[a]},replaceWithShapes:function(a,b){var c=this.shapeseq,d={},e,f,g;for(f=a.length;f--;)d[a[f]]=!0;for(f=c.length;f--;)e=c[f],d[e]&&(c.splice(f,1),delete this.shapes[e],g=f);for(f=b.length;f--;)c.splice(g,0,b[f].id),this.shapes[b[f].id]=b[f]},insertAfterShape:function(a,b){var c=this.shapeseq,d;for(d=c.length;d--;)if(c[d]===a){c.splice(d+1,0,b.id),this.shapes[b.id]=b;return}},removeShapeId:function(a){var b=this.shapeseq,c;for(c=b.length;c--;)if(b[c]===a){b.splice(c,1);break}delete this.shapes[a]},getShapeAt:function(a,b,c){return this.targetX=b,this.targetY=c,this.render(),this.currentTargetShapeId},render:function(){var a=this.shapeseq,b=this.shapes,c=a.length,d=this._getContext(),e,f,g;d.clearRect(0,0,this.pixelWidth,this.pixelHeight);for(g=0;g<c;g++)e=a[g],f=b[e],this["_draw"+f.type].apply(this,f.args);this.interact||(this.shapes={},this.shapeseq=[])}}),J=g(H,{init:function(b,c,e){var f;J._super.init.call(this,b,c,e),e[0]&&(e=e[0]),d.data(e,"_jqs_vcanvas",this),this.canvas=a.createElement("span"),d(this.canvas).css({display:"inline-block",position:"relative",overflow:"hidden",width:b,height:c,margin:"0px",padding:"0px",verticalAlign:"top"}),this._insert(this.canvas,e),this._calculatePixelDims(b,c,this.canvas),this.canvas.width=this.pixelWidth,this.canvas.height=this.pixelHeight,f='<v:group coordorigin="0 0" coordsize="'+this.pixelWidth+" "+this.pixelHeight+'"'+' style="position:absolute;top:0;left:0;width:'+this.pixelWidth+"px;height="+this.pixelHeight+'px;"></v:group>',this.canvas.insertAdjacentHTML("beforeEnd",f),this.group=d(this.canvas).children()[0],this.rendered=!1,this.prerender=""},_drawShape:function(a,b,d,e,f){var g=[],h,i,j,k,l,m,n;for(n=0,m=b.length;n<m;n++)g[n]=""+b[n][0]+","+b[n][1];return h=g.splice(0,1),f=f===c?1:f,i=d===c?' stroked="false" ':' strokeWeight="'+f+'px" strokeColor="'+d+'" ',j=e===c?' filled="false"':' fillColor="'+e+'" filled="true" ',k=g[0]===g[g.length-1]?"x ":"",l='<v:shape coordorigin="0 0" coordsize="'+this.pixelWidth+" "+this.pixelHeight+'" '+' id="jqsshape'+a+'" '+i+j+' style="position:absolute;left:0px;top:0px;height:'+this.pixelHeight+"px;width:"+this.pixelWidth+'px;padding:0px;margin:0px;" '+' path="m '+h+" l "+g.join(", ")+" "+k+'e">'+" </v:shape>",l},_drawCircle:function(a,b,d,e,f,g,h){var i,j,k;return b-=e,d-=e,i=f===c?' stroked="false" ':' strokeWeight="'+h+'px" strokeColor="'+f+'" ',j=g===c?' filled="false"':' fillColor="'+g+'" filled="true" ',k='<v:oval id="jqsshape'+a+'" '+i+j+' style="position:absolute;top:'+d+"px; left:"+b+"px; width:"+e*2+"px; height:"+e*2+'px"></v:oval>',k},_drawPieSlice:function(a,d,e,f,g,h,i,j){var k,l,m,n,o,p,q,r;if(g===h)return"";h-g===2*b.PI&&(g=0,h=2*b.PI),l=d+b.round(b.cos(g)*f),m=e+b.round(b.sin(g)*f),n=d+b.round(b.cos(h)*f),o=e+b.round(b.sin(h)*f);if(l===n&&m===o){if(h-g<b.PI)return"";l=n=d+f,m=o=e}return l===n&&m===o&&h-g<b.PI?"":(k=[d-f,e-f,d+f,e+f,l,m,n,o],p=i===c?' stroked="false" ':' strokeWeight="1px" strokeColor="'+i+'" ',q=j===c?' filled="false"':' fillColor="'+j+'" filled="true" ',r='<v:shape coordorigin="0 0" coordsize="'+this.pixelWidth+" "+this.pixelHeight+'" '+' id="jqsshape'+a+'" '+p+q+' style="position:absolute;left:0px;top:0px;height:'+this.pixelHeight+"px;width:"+this.pixelWidth+'px;padding:0px;margin:0px;" '+' path="m '+d+","+e+" wa "+k.join(", ")+' x e">'+" </v:shape>",r)},_drawRect:function(a,b,c,d,e,f,g){return this._drawShape(a,[[b,c],[b,c+e],[b+d,c+e],[b+d,c],[b,c]],f,g)},reset:function(){this.group.innerHTML=""},appendShape:function(a){var b=this["_draw"+a.type].apply(this,a.args);return this.rendered?this.group.insertAdjacentHTML("beforeEnd",b):this.prerender+=b,this.lastShapeId=a.id,a.id},replaceWithShape:function(a,b){var c=d("#jqsshape"+a),e=this["_draw"+b.type].apply(this,b.args);c[0].outerHTML=e},replaceWithShapes:function(a,b){var c=d("#jqsshape"+a[0]),e="",f=b.length,g;for(g=0;g<f;g++)e+=this["_draw"+b[g].type].apply(this,b[g].args);c[0].outerHTML=e;for(g=1;g<a.length;g++)d("#jqsshape"+a[g]).remove()},insertAfterShape:function(a,b){var c=d("#jqsshape"+a),e=this["_draw"+b.type].apply(this,b.args);c[0].insertAdjacentHTML("afterEnd",e)},removeShapeId:function(a){var b=d("#jqsshape"+a);this.group.removeChild(b[0])},getShapeAt:function(a,b,c){var d=a.id.substr(8);return d},render:function(){this.rendered||(this.group.innerHTML=this.prerender,this.rendered=!0)}})})})(document,Math); \ No newline at end of file diff --git a/assets/plugins/timepicker/bootstrap-timepicker.css b/assets/plugins/timepicker/bootstrap-timepicker.css deleted file mode 100644 index 873e0c72..00000000 --- a/assets/plugins/timepicker/bootstrap-timepicker.css +++ /dev/null @@ -1,121 +0,0 @@ -/*! - * Timepicker Component for Twitter Bootstrap - * - * Copyright 2013 Joris de Wit - * - * Contributors https://github.com/jdewit/bootstrap-timepicker/graphs/contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -.bootstrap-timepicker { - position: relative; -} -.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu { - left: auto; - right: 0; -} -.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:before { - left: auto; - right: 12px; -} -.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:after { - left: auto; - right: 13px; -} -.bootstrap-timepicker .add-on { - cursor: pointer; -} -.bootstrap-timepicker .add-on i { - display: inline-block; - width: 16px; - height: 16px; -} -.bootstrap-timepicker-widget.dropdown-menu { - padding: 2px 3px 2px 2px; -} -.bootstrap-timepicker-widget.dropdown-menu.open { - display: inline-block; -} -.bootstrap-timepicker-widget.dropdown-menu:before { - border-bottom: 7px solid rgba(0, 0, 0, 0.2); - border-left: 7px solid transparent; - border-right: 7px solid transparent; - content: ""; - display: inline-block; - left: 9px; - position: absolute; - top: -7px; -} -.bootstrap-timepicker-widget.dropdown-menu:after { - border-bottom: 6px solid #FFFFFF; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - content: ""; - display: inline-block; - left: 10px; - position: absolute; - top: -6px; -} -.bootstrap-timepicker-widget a.btn, -.bootstrap-timepicker-widget input { - border-radius: 4px; -} -.bootstrap-timepicker-widget table { - width: 100%; - margin: 0; -} -.bootstrap-timepicker-widget table td { - text-align: center; - height: 30px; - margin: 0; - padding: 2px; -} -.bootstrap-timepicker-widget table td:not(.separator) { - min-width: 30px; -} -.bootstrap-timepicker-widget table td span { - width: 100%; -} -.bootstrap-timepicker-widget table td a { - border: 1px transparent solid; - width: 100%; - display: inline-block; - margin: 0; - padding: 8px 0; - outline: 0; - color: #333; -} -.bootstrap-timepicker-widget table td a:hover { - text-decoration: none; - background-color: #eee; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - border-color: #ddd; -} -.bootstrap-timepicker-widget table td a i { - margin-top: 2px; -} -.bootstrap-timepicker-widget table td input { - width: 25px; - margin: 0; - text-align: center; -} -.bootstrap-timepicker-widget .modal-content { - padding: 4px; -} -@media (min-width: 767px) { - .bootstrap-timepicker-widget.modal { - width: 200px; - margin-left: -100px; - } -} -@media (max-width: 767px) { - .bootstrap-timepicker { - width: 100%; - } - .bootstrap-timepicker .dropdown-menu { - width: 100%; - } -} diff --git a/assets/plugins/timepicker/bootstrap-timepicker.js b/assets/plugins/timepicker/bootstrap-timepicker.js deleted file mode 100644 index 3068c940..00000000 --- a/assets/plugins/timepicker/bootstrap-timepicker.js +++ /dev/null @@ -1,903 +0,0 @@ -//TODO: move arrow styles and button click code into configurable items, with defaults matching the existing code - -/*! -* Timepicker Component for Twitter Bootstrap -* -* Copyright 2013 Joris de Wit -* -* Contributors https://github.com/jdewit/bootstrap-timepicker/graphs/contributors -* -* For the full copyright and license information, please view the LICENSE -* file that was distributed with this source code. -*/ -(function($, window, document, undefined) { - 'use strict'; - - // TIMEPICKER PUBLIC CLASS DEFINITION - var Timepicker = function(element, options) { - this.widget = ''; - this.$element = $(element); - this.defaultTime = options.defaultTime; - this.disableFocus = options.disableFocus; - this.isOpen = options.isOpen; - this.minuteStep = options.minuteStep; - this.modalBackdrop = options.modalBackdrop; - this.secondStep = options.secondStep; - this.showInputs = options.showInputs; - this.showMeridian = options.showMeridian; - this.showSeconds = options.showSeconds; - this.template = options.template; - this.appendWidgetTo = options.appendWidgetTo; - this.upArrowStyle = options.upArrowStyle; - this.downArrowStyle = options.downArrowStyle; - this.containerClass = options.containerClass; - - this._init(); - }; - - Timepicker.prototype = { - - constructor: Timepicker, - - _init: function() { - var self = this; - - if (this.$element.parent().hasClass('input-append') || this.$element.parent().hasClass('input-prepend')) { - if (this.$element.parent('.input-append, .input-prepend').find('.add-on').length) { - this.$element.parent('.input-append, .input-prepend').find('.add-on').on({ - 'click.timepicker': $.proxy(this.showWidget, this) - }); - } else { - this.$element.closest(this.containerClass).find('.add-on').on({ - 'click.timepicker': $.proxy(this.showWidget, this) - }); - } - - this.$element.on({ - 'focus.timepicker': $.proxy(this.highlightUnit, this), - 'click.timepicker': $.proxy(this.highlightUnit, this), - 'keydown.timepicker': $.proxy(this.elementKeydown, this), - 'blur.timepicker': $.proxy(this.blurElement, this) - }); - } else { - if (this.template) { - this.$element.on({ - 'focus.timepicker': $.proxy(this.showWidget, this), - 'click.timepicker': $.proxy(this.showWidget, this), - 'blur.timepicker': $.proxy(this.blurElement, this) - }); - } else { - this.$element.on({ - 'focus.timepicker': $.proxy(this.highlightUnit, this), - 'click.timepicker': $.proxy(this.highlightUnit, this), - 'keydown.timepicker': $.proxy(this.elementKeydown, this), - 'blur.timepicker': $.proxy(this.blurElement, this) - }); - } - } - - if (this.template !== false) { - this.$widget = $(this.getTemplate()).prependTo(this.$element.parents(this.appendWidgetTo)).on('click', $.proxy(this.widgetClick, this)); - } else { - this.$widget = false; - } - - if (this.showInputs && this.$widget !== false) { - this.$widget.find('input').each(function() { - $(this).on({ - 'click.timepicker': function() { $(this).select(); }, - 'keydown.timepicker': $.proxy(self.widgetKeydown, self) - }); - }); - } - - this.setDefaultTime(this.defaultTime); - }, - - blurElement: function() { - this.highlightedUnit = undefined; - this.updateFromElementVal(); - }, - - decrementHour: function() { - if (this.showMeridian) { - if (this.hour === 1) { - this.hour = 12; - } else if (this.hour === 12) { - this.hour--; - - return this.toggleMeridian(); - } else if (this.hour === 0) { - this.hour = 11; - - return this.toggleMeridian(); - } else { - this.hour--; - } - } else { - if (this.hour === 0) { - this.hour = 23; - } else { - this.hour--; - } - } - this.update(); - }, - - decrementMinute: function(step) { - var newVal; - - if (step) { - newVal = this.minute - step; - } else { - newVal = this.minute - this.minuteStep; - } - - if (newVal < 0) { - this.decrementHour(); - this.minute = newVal + 60; - } else { - this.minute = newVal; - } - this.update(); - }, - - decrementSecond: function() { - var newVal = this.second - this.secondStep; - - if (newVal < 0) { - this.decrementMinute(true); - this.second = newVal + 60; - } else { - this.second = newVal; - } - this.update(); - }, - - elementKeydown: function(e) { - switch (e.keyCode) { - case 9: //tab - this.updateFromElementVal(); - - switch (this.highlightedUnit) { - case 'hour': - e.preventDefault(); - this.highlightNextUnit(); - break; - case 'minute': - if (this.showMeridian || this.showSeconds) { - e.preventDefault(); - this.highlightNextUnit(); - } - break; - case 'second': - if (this.showMeridian) { - e.preventDefault(); - this.highlightNextUnit(); - } - break; - } - break; - case 27: // escape - this.updateFromElementVal(); - break; - case 37: // left arrow - e.preventDefault(); - this.highlightPrevUnit(); - this.updateFromElementVal(); - break; - case 38: // up arrow - e.preventDefault(); - switch (this.highlightedUnit) { - case 'hour': - this.incrementHour(); - this.highlightHour(); - break; - case 'minute': - this.incrementMinute(); - this.highlightMinute(); - break; - case 'second': - this.incrementSecond(); - this.highlightSecond(); - break; - case 'meridian': - this.toggleMeridian(); - this.highlightMeridian(); - break; - } - break; - case 39: // right arrow - e.preventDefault(); - this.updateFromElementVal(); - this.highlightNextUnit(); - break; - case 40: // down arrow - e.preventDefault(); - switch (this.highlightedUnit) { - case 'hour': - this.decrementHour(); - this.highlightHour(); - break; - case 'minute': - this.decrementMinute(); - this.highlightMinute(); - break; - case 'second': - this.decrementSecond(); - this.highlightSecond(); - break; - case 'meridian': - this.toggleMeridian(); - this.highlightMeridian(); - break; - } - break; - } - }, - - formatTime: function(hour, minute, second, meridian) { - hour = hour < 10 ? '0' + hour : hour; - minute = minute < 10 ? '0' + minute : minute; - second = second < 10 ? '0' + second : second; - - return hour + ':' + minute + (this.showSeconds ? ':' + second : '') + (this.showMeridian ? ' ' + meridian : ''); - }, - - getCursorPosition: function() { - var input = this.$element.get(0); - - if ('selectionStart' in input) {// Standard-compliant browsers - - return input.selectionStart; - } else if (document.selection) {// IE fix - input.focus(); - var sel = document.selection.createRange(), - selLen = document.selection.createRange().text.length; - - sel.moveStart('character', - input.value.length); - - return sel.text.length - selLen; - } - }, - - getTemplate: function() { - var template, - hourTemplate, - minuteTemplate, - secondTemplate, - meridianTemplate, - templateContent; - - if (this.showInputs) { - hourTemplate = '<input type="text" name="hour" class="bootstrap-timepicker-hour form-control" maxlength="2"/>'; - minuteTemplate = '<input type="text" name="minute" class="bootstrap-timepicker-minute form-control" maxlength="2"/>'; - secondTemplate = '<input type="text" name="second" class="bootstrap-timepicker-second form-control" maxlength="2"/>'; - meridianTemplate = '<input type="text" name="meridian" class="bootstrap-timepicker-meridian form-control" maxlength="2"/>'; - } else { - hourTemplate = '<span class="bootstrap-timepicker-hour"></span>'; - minuteTemplate = '<span class="bootstrap-timepicker-minute"></span>'; - secondTemplate = '<span class="bootstrap-timepicker-second"></span>'; - meridianTemplate = '<span class="bootstrap-timepicker-meridian"></span>'; - } - - templateContent = '<table>'+ - '<tr>'+ - '<td><a href="#" data-action="incrementHour"><i class="' + this.upArrowStyle + '"></i></a></td>'+ - '<td class="separator">&nbsp;</td>'+ - '<td><a href="#" data-action="incrementMinute"><i class="' + this.upArrowStyle + '"></i></a></td>'+ - (this.showSeconds ? - '<td class="separator">&nbsp;</td>'+ - '<td><a href="#" data-action="incrementSecond"><i class="' + this.upArrowStyle + '"></i></a></td>' - : '') + - (this.showMeridian ? - '<td class="separator">&nbsp;</td>'+ - '<td class="meridian-column"><a href="#" data-action="toggleMeridian"><i class="' + this.upArrowStyle + '"></i></a></td>' - : '') + - '</tr>'+ - '<tr>'+ - '<td>'+ hourTemplate +'</td> '+ - '<td class="separator">:</td>'+ - '<td>'+ minuteTemplate +'</td> '+ - (this.showSeconds ? - '<td class="separator">:</td>'+ - '<td>'+ secondTemplate +'</td>' - : '') + - (this.showMeridian ? - '<td class="separator">&nbsp;</td>'+ - '<td>'+ meridianTemplate +'</td>' - : '') + - '</tr>'+ - '<tr>'+ - '<td><a href="#" data-action="decrementHour"><i class="' + this.downArrowStyle + '"></i></a></td>'+ - '<td class="separator"></td>'+ - '<td><a href="#" data-action="decrementMinute"><i class="' + this.downArrowStyle + '"></i></a></td>'+ - (this.showSeconds ? - '<td class="separator">&nbsp;</td>'+ - '<td><a href="#" data-action="decrementSecond"><i class="' + this.downArrowStyle + '"></i></a></td>' - : '') + - (this.showMeridian ? - '<td class="separator">&nbsp;</td>'+ - '<td><a href="#" data-action="toggleMeridian"><i class="' + this.downArrowStyle + '"></i></a></td>' - : '') + - '</tr>'+ - '</table>'; - - switch(this.template) { - case 'modal': - template = '<div class="bootstrap-timepicker-widget modal hide fade in" data-backdrop="'+ (this.modalBackdrop ? 'true' : 'false') +'">'+ - '<div class="modal-header">'+ - '<a href="#" class="close" data-dismiss="modal">×</a>'+ - '<h3>Pick a Time</h3>'+ - '</div>'+ - '<div class="modal-content">'+ - templateContent + - '</div>'+ - '<div class="modal-footer">'+ - '<a href="#" class="btn btn-primary" data-dismiss="modal">OK</a>'+ - '</div>'+ - '</div>'; - break; - case 'dropdown': - template = '<div class="bootstrap-timepicker-widget dropdown-menu">'+ templateContent +'</div>'; - break; - } - - return template; - }, - - getTime: function() { - return this.formatTime(this.hour, this.minute, this.second, this.meridian); - }, - - hideWidget: function() { - if (this.isOpen === false) { - return; - } - - if (this.showInputs) { - this.updateFromWidgetInputs(); - } - - this.$element.trigger({ - 'type': 'hide.timepicker', - 'time': { - 'value': this.getTime(), - 'hours': this.hour, - 'minutes': this.minute, - 'seconds': this.second, - 'meridian': this.meridian - } - }); - - if (this.template === 'modal' && this.$widget.modal) { - this.$widget.modal('hide'); - } else { - this.$widget.removeClass('open'); - } - - $(document).off('mousedown.timepicker'); - - this.isOpen = false; - }, - - highlightUnit: function() { - this.position = this.getCursorPosition(); - if (this.position >= 0 && this.position <= 2) { - this.highlightHour(); - } else if (this.position >= 3 && this.position <= 5) { - this.highlightMinute(); - } else if (this.position >= 6 && this.position <= 8) { - if (this.showSeconds) { - this.highlightSecond(); - } else { - this.highlightMeridian(); - } - } else if (this.position >= 9 && this.position <= 11) { - this.highlightMeridian(); - } - }, - - highlightNextUnit: function() { - switch (this.highlightedUnit) { - case 'hour': - this.highlightMinute(); - break; - case 'minute': - if (this.showSeconds) { - this.highlightSecond(); - } else if (this.showMeridian){ - this.highlightMeridian(); - } else { - this.highlightHour(); - } - break; - case 'second': - if (this.showMeridian) { - this.highlightMeridian(); - } else { - this.highlightHour(); - } - break; - case 'meridian': - this.highlightHour(); - break; - } - }, - - highlightPrevUnit: function() { - switch (this.highlightedUnit) { - case 'hour': - this.highlightMeridian(); - break; - case 'minute': - this.highlightHour(); - break; - case 'second': - this.highlightMinute(); - break; - case 'meridian': - if (this.showSeconds) { - this.highlightSecond(); - } else { - this.highlightMinute(); - } - break; - } - }, - - highlightHour: function() { - var $element = this.$element.get(0); - - this.highlightedUnit = 'hour'; - - if ($element.setSelectionRange) { - setTimeout(function() { - $element.setSelectionRange(0,2); - }, 0); - } - }, - - highlightMinute: function() { - var $element = this.$element.get(0); - - this.highlightedUnit = 'minute'; - - if ($element.setSelectionRange) { - setTimeout(function() { - $element.setSelectionRange(3,5); - }, 0); - } - }, - - highlightSecond: function() { - var $element = this.$element.get(0); - - this.highlightedUnit = 'second'; - - if ($element.setSelectionRange) { - setTimeout(function() { - $element.setSelectionRange(6,8); - }, 0); - } - }, - - highlightMeridian: function() { - var $element = this.$element.get(0); - - this.highlightedUnit = 'meridian'; - - if ($element.setSelectionRange) { - if (this.showSeconds) { - setTimeout(function() { - $element.setSelectionRange(9,11); - }, 0); - } else { - setTimeout(function() { - $element.setSelectionRange(6,8); - }, 0); - } - } - }, - - incrementHour: function() { - if (this.showMeridian) { - if (this.hour === 11) { - this.hour++; - return this.toggleMeridian(); - } else if (this.hour === 12) { - this.hour = 0; - } - } - if (this.hour === 23) { - this.hour = 0; - - return; - } - this.hour++; - this.update(); - }, - - incrementMinute: function(step) { - var newVal; - - if (step) { - newVal = this.minute + step; - } else { - newVal = this.minute + this.minuteStep - (this.minute % this.minuteStep); - } - - if (newVal > 59) { - this.incrementHour(); - this.minute = newVal - 60; - } else { - this.minute = newVal; - } - this.update(); - }, - - incrementSecond: function() { - var newVal = this.second + this.secondStep - (this.second % this.secondStep); - - if (newVal > 59) { - this.incrementMinute(true); - this.second = newVal - 60; - } else { - this.second = newVal; - } - this.update(); - }, - - remove: function() { - $('document').off('.timepicker'); - if (this.$widget) { - this.$widget.remove(); - } - delete this.$element.data().timepicker; - }, - - setDefaultTime: function(defaultTime){ - if (!this.$element.val()) { - if (defaultTime === 'current') { - var dTime = new Date(), - hours = dTime.getHours(), - minutes = Math.floor(dTime.getMinutes() / this.minuteStep) * this.minuteStep, - seconds = Math.floor(dTime.getSeconds() / this.secondStep) * this.secondStep, - meridian = 'AM'; - - if (this.showMeridian) { - if (hours === 0) { - hours = 12; - } else if (hours >= 12) { - if (hours > 12) { - hours = hours - 12; - } - meridian = 'PM'; - } else { - meridian = 'AM'; - } - } - - this.hour = hours; - this.minute = minutes; - this.second = seconds; - this.meridian = meridian; - - this.update(); - - } else if (defaultTime === false) { - this.hour = 0; - this.minute = 0; - this.second = 0; - this.meridian = 'AM'; - } else { - this.setTime(defaultTime); - } - } else { - this.updateFromElementVal(); - } - }, - - setTime: function(time) { - var arr, - timeArray; - - if (this.showMeridian) { - arr = time.split(' '); - timeArray = arr[0].split(':'); - this.meridian = arr[1]; - } else { - timeArray = time.split(':'); - } - - this.hour = parseInt(timeArray[0], 10); - this.minute = parseInt(timeArray[1], 10); - this.second = parseInt(timeArray[2], 10); - - if (isNaN(this.hour)) { - this.hour = 0; - } - if (isNaN(this.minute)) { - this.minute = 0; - } - - if (this.showMeridian) { - if (this.hour > 12) { - this.hour = 12; - } else if (this.hour < 1) { - this.hour = 12; - } - - if (this.meridian === 'am' || this.meridian === 'a') { - this.meridian = 'AM'; - } else if (this.meridian === 'pm' || this.meridian === 'p') { - this.meridian = 'PM'; - } - - if (this.meridian !== 'AM' && this.meridian !== 'PM') { - this.meridian = 'AM'; - } - } else { - if (this.hour >= 24) { - this.hour = 23; - } else if (this.hour < 0) { - this.hour = 0; - } - } - - if (this.minute < 0) { - this.minute = 0; - } else if (this.minute >= 60) { - this.minute = 59; - } - - if (this.showSeconds) { - if (isNaN(this.second)) { - this.second = 0; - } else if (this.second < 0) { - this.second = 0; - } else if (this.second >= 60) { - this.second = 59; - } - } - - this.update(); - }, - - showWidget: function() { - if (this.isOpen) { - return; - } - - if (this.$element.is(':disabled')) { - return; - } - - var self = this; - $(document).on('mousedown.timepicker', function (e) { - // Clicked outside the timepicker, hide it - if ($(e.target).closest('.bootstrap-timepicker-widget').length === 0) { - self.hideWidget(); - } - }); - - this.$element.trigger({ - 'type': 'show.timepicker', - 'time': { - 'value': this.getTime(), - 'hours': this.hour, - 'minutes': this.minute, - 'seconds': this.second, - 'meridian': this.meridian - } - }); - - if (this.disableFocus) { - this.$element.blur(); - } - - this.updateFromElementVal(); - - if (this.template === 'modal' && this.$widget.modal) { - this.$widget.modal('show').on('hidden', $.proxy(this.hideWidget, this)); - } else { - if (this.isOpen === false) { - this.$widget.addClass('open'); - } - } - - this.isOpen = true; - }, - - toggleMeridian: function() { - this.meridian = this.meridian === 'AM' ? 'PM' : 'AM'; - this.update(); - }, - - update: function() { - this.$element.trigger({ - 'type': 'changeTime.timepicker', - 'time': { - 'value': this.getTime(), - 'hours': this.hour, - 'minutes': this.minute, - 'seconds': this.second, - 'meridian': this.meridian - } - }); - - this.updateElement(); - this.updateWidget(); - }, - - updateElement: function() { - this.$element.val(this.getTime()).change(); - }, - - updateFromElementVal: function() { - var val = this.$element.val(); - - if (val) { - this.setTime(val); - } - }, - - updateWidget: function() { - if (this.$widget === false) { - return; - } - - var hour = this.hour < 10 ? '0' + this.hour : this.hour, - minute = this.minute < 10 ? '0' + this.minute : this.minute, - second = this.second < 10 ? '0' + this.second : this.second; - - if (this.showInputs) { - this.$widget.find('input.bootstrap-timepicker-hour').val(hour); - this.$widget.find('input.bootstrap-timepicker-minute').val(minute); - - if (this.showSeconds) { - this.$widget.find('input.bootstrap-timepicker-second').val(second); - } - if (this.showMeridian) { - this.$widget.find('input.bootstrap-timepicker-meridian').val(this.meridian); - } - } else { - this.$widget.find('span.bootstrap-timepicker-hour').text(hour); - this.$widget.find('span.bootstrap-timepicker-minute').text(minute); - - if (this.showSeconds) { - this.$widget.find('span.bootstrap-timepicker-second').text(second); - } - if (this.showMeridian) { - this.$widget.find('span.bootstrap-timepicker-meridian').text(this.meridian); - } - } - }, - - updateFromWidgetInputs: function() { - if (this.$widget === false) { - return; - } - var time = $('input.bootstrap-timepicker-hour', this.$widget).val() + ':' + - $('input.bootstrap-timepicker-minute', this.$widget).val() + - (this.showSeconds ? ':' + $('input.bootstrap-timepicker-second', this.$widget).val() : '') + - (this.showMeridian ? ' ' + $('input.bootstrap-timepicker-meridian', this.$widget).val() : ''); - - this.setTime(time); - }, - - widgetClick: function(e) { - e.stopPropagation(); - e.preventDefault(); - - var action = $(e.target).closest('a').data('action'); - if (action) { - this[action](); - } - }, - - widgetKeydown: function(e) { - var $input = $(e.target).closest('input'), - name = $input.attr('name'); - - switch (e.keyCode) { - case 9: //tab - if (this.showMeridian) { - if (name === 'meridian') { - return this.hideWidget(); - } - } else { - if (this.showSeconds) { - if (name === 'second') { - return this.hideWidget(); - } - } else { - if (name === 'minute') { - return this.hideWidget(); - } - } - } - - this.updateFromWidgetInputs(); - break; - case 27: // escape - this.hideWidget(); - break; - case 38: // up arrow - e.preventDefault(); - switch (name) { - case 'hour': - this.incrementHour(); - break; - case 'minute': - this.incrementMinute(); - break; - case 'second': - this.incrementSecond(); - break; - case 'meridian': - this.toggleMeridian(); - break; - } - break; - case 40: // down arrow - e.preventDefault(); - switch (name) { - case 'hour': - this.decrementHour(); - break; - case 'minute': - this.decrementMinute(); - break; - case 'second': - this.decrementSecond(); - break; - case 'meridian': - this.toggleMeridian(); - break; - } - break; - } - } - }; - - - //TIMEPICKER PLUGIN DEFINITION - $.fn.timepicker = function(option) { - var args = Array.apply(null, arguments); - args.shift(); - return this.each(function() { - var $this = $(this), - data = $this.data('timepicker'), - options = typeof option === 'object' && option; - - if (!data) { - $this.data('timepicker', (data = new Timepicker(this, $.extend({}, $.fn.timepicker.defaults, options, $(this).data())))); - } - - if (typeof option === 'string') { - data[option].apply(data, args); - } - }); - }; - - $.fn.timepicker.defaults = { - defaultTime: 'current', - disableFocus: false, - isOpen: false, - minuteStep: 15, - modalBackdrop: false, - secondStep: 15, - showSeconds: false, - showInputs: true, - showMeridian: true, - template: 'dropdown', - appendWidgetTo: '.bootstrap-timepicker', - upArrowStyle: 'glyphicon glyphicon-chevron-up', - downArrowStyle: 'glyphicon glyphicon-chevron-down', - containerClass: 'bootstrap-timepicker' - }; - - $.fn.timepicker.Constructor = Timepicker; - -})(jQuery, window, document); diff --git a/assets/plugins/timepicker/bootstrap-timepicker.min.css b/assets/plugins/timepicker/bootstrap-timepicker.min.css deleted file mode 100644 index b59d6f76..00000000 --- a/assets/plugins/timepicker/bootstrap-timepicker.min.css +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * Timepicker Component for Twitter Bootstrap - * - * Copyright 2013 Joris de Wit - * - * Contributors https://github.com/jdewit/bootstrap-timepicker/graphs/contributors - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */.bootstrap-timepicker{position:relative}.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu{left:auto;right:0}.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:before{left:auto;right:12px}.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:after{left:auto;right:13px}.bootstrap-timepicker .add-on{cursor:pointer}.bootstrap-timepicker .add-on i{display:inline-block;width:16px;height:16px}.bootstrap-timepicker-widget.dropdown-menu{padding:2px 3px 2px 2px}.bootstrap-timepicker-widget.dropdown-menu.open{display:inline-block}.bootstrap-timepicker-widget.dropdown-menu:before{border-bottom:7px solid rgba(0,0,0,0.2);border-left:7px solid transparent;border-right:7px solid transparent;content:"";display:inline-block;left:9px;position:absolute;top:-7px}.bootstrap-timepicker-widget.dropdown-menu:after{border-bottom:6px solid #fff;border-left:6px solid transparent;border-right:6px solid transparent;content:"";display:inline-block;left:10px;position:absolute;top:-6px}.bootstrap-timepicker-widget a.btn,.bootstrap-timepicker-widget input{border-radius:4px}.bootstrap-timepicker-widget table{width:100%;margin:0}.bootstrap-timepicker-widget table td{text-align:center;height:30px;margin:0;padding:2px}.bootstrap-timepicker-widget table td:not(.separator){min-width:30px}.bootstrap-timepicker-widget table td span{width:100%}.bootstrap-timepicker-widget table td a{border:1px transparent solid;width:100%;display:inline-block;margin:0;padding:8px 0;outline:0;color:#333}.bootstrap-timepicker-widget table td a:hover{text-decoration:none;background-color:#eee;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border-color:#ddd}.bootstrap-timepicker-widget table td a i{margin-top:2px}.bootstrap-timepicker-widget table td input{width:25px;margin:0;text-align:center}.bootstrap-timepicker-widget .modal-content{padding:4px}@media(min-width:767px){.bootstrap-timepicker-widget.modal{width:200px;margin-left:-100px}}@media(max-width:767px){.bootstrap-timepicker{width:100%}.bootstrap-timepicker .dropdown-menu{width:100%}} \ No newline at end of file diff --git a/assets/plugins/timepicker/bootstrap-timepicker.min.js b/assets/plugins/timepicker/bootstrap-timepicker.min.js deleted file mode 100644 index 3c78d5c9..00000000 --- a/assets/plugins/timepicker/bootstrap-timepicker.min.js +++ /dev/null @@ -1,5 +0,0 @@ -/*! bootstrap-timepicker v0.2.3 -* http://jdewit.github.com/bootstrap-timepicker -* Copyright (c) 2013 Joris de Wit -* MIT License -*/(function(e,t,n,r){"use strict";var i=function(t,n){this.widget="";this.$element=e(t);this.defaultTime=n.defaultTime;this.disableFocus=n.disableFocus;this.isOpen=n.isOpen;this.minuteStep=n.minuteStep;this.modalBackdrop=n.modalBackdrop;this.secondStep=n.secondStep;this.showInputs=n.showInputs;this.showMeridian=n.showMeridian;this.showSeconds=n.showSeconds;this.template=n.template;this.appendWidgetTo=n.appendWidgetTo;this.upArrowStyle=n.upArrowStyle;this.downArrowStyle=n.downArrowStyle;this.containerClass=n.containerClass;this._init()};i.prototype={constructor:i,_init:function(){var t=this;if(this.$element.parent().hasClass("input-append")||this.$element.parent().hasClass("input-prepend")){if(this.$element.parent(".input-append, .input-prepend").find(".add-on").length){this.$element.parent(".input-append, .input-prepend").find(".add-on").on({"click.timepicker":e.proxy(this.showWidget,this)})}else{this.$element.closest(this.containerClass).find(".add-on").on({"click.timepicker":e.proxy(this.showWidget,this)})}this.$element.on({"focus.timepicker":e.proxy(this.highlightUnit,this),"click.timepicker":e.proxy(this.highlightUnit,this),"keydown.timepicker":e.proxy(this.elementKeydown,this),"blur.timepicker":e.proxy(this.blurElement,this)})}else{if(this.template){this.$element.on({"focus.timepicker":e.proxy(this.showWidget,this),"click.timepicker":e.proxy(this.showWidget,this),"blur.timepicker":e.proxy(this.blurElement,this)})}else{this.$element.on({"focus.timepicker":e.proxy(this.highlightUnit,this),"click.timepicker":e.proxy(this.highlightUnit,this),"keydown.timepicker":e.proxy(this.elementKeydown,this),"blur.timepicker":e.proxy(this.blurElement,this)})}}if(this.template!==false){this.$widget=e(this.getTemplate()).prependTo(this.$element.parents(this.appendWidgetTo)).on("click",e.proxy(this.widgetClick,this))}else{this.$widget=false}if(this.showInputs&&this.$widget!==false){this.$widget.find("input").each(function(){e(this).on({"click.timepicker":function(){e(this).select()},"keydown.timepicker":e.proxy(t.widgetKeydown,t)})})}this.setDefaultTime(this.defaultTime)},blurElement:function(){this.highlightedUnit=r;this.updateFromElementVal()},decrementHour:function(){if(this.showMeridian){if(this.hour===1){this.hour=12}else if(this.hour===12){this.hour--;return this.toggleMeridian()}else if(this.hour===0){this.hour=11;return this.toggleMeridian()}else{this.hour--}}else{if(this.hour===0){this.hour=23}else{this.hour--}}this.update()},decrementMinute:function(e){var t;if(e){t=this.minute-e}else{t=this.minute-this.minuteStep}if(t<0){this.decrementHour();this.minute=t+60}else{this.minute=t}this.update()},decrementSecond:function(){var e=this.second-this.secondStep;if(e<0){this.decrementMinute(true);this.second=e+60}else{this.second=e}this.update()},elementKeydown:function(e){switch(e.keyCode){case 9:this.updateFromElementVal();switch(this.highlightedUnit){case"hour":e.preventDefault();this.highlightNextUnit();break;case"minute":if(this.showMeridian||this.showSeconds){e.preventDefault();this.highlightNextUnit()}break;case"second":if(this.showMeridian){e.preventDefault();this.highlightNextUnit()}break}break;case 27:this.updateFromElementVal();break;case 37:e.preventDefault();this.highlightPrevUnit();this.updateFromElementVal();break;case 38:e.preventDefault();switch(this.highlightedUnit){case"hour":this.incrementHour();this.highlightHour();break;case"minute":this.incrementMinute();this.highlightMinute();break;case"second":this.incrementSecond();this.highlightSecond();break;case"meridian":this.toggleMeridian();this.highlightMeridian();break}break;case 39:e.preventDefault();this.updateFromElementVal();this.highlightNextUnit();break;case 40:e.preventDefault();switch(this.highlightedUnit){case"hour":this.decrementHour();this.highlightHour();break;case"minute":this.decrementMinute();this.highlightMinute();break;case"second":this.decrementSecond();this.highlightSecond();break;case"meridian":this.toggleMeridian();this.highlightMeridian();break}break}},formatTime:function(e,t,n,r){e=e<10?"0"+e:e;t=t<10?"0"+t:t;n=n<10?"0"+n:n;return e+":"+t+(this.showSeconds?":"+n:"")+(this.showMeridian?" "+r:"")},getCursorPosition:function(){var e=this.$element.get(0);if("selectionStart"in e){return e.selectionStart}else if(n.selection){e.focus();var t=n.selection.createRange(),r=n.selection.createRange().text.length;t.moveStart("character",-e.value.length);return t.text.length-r}},getTemplate:function(){var e,t,n,r,i,s;if(this.showInputs){t='<input type="text" name="hour" class="bootstrap-timepicker-hour form-control" maxlength="2"/>';n='<input type="text" name="minute" class="bootstrap-timepicker-minute form-control" maxlength="2"/>';r='<input type="text" name="second" class="bootstrap-timepicker-second form-control" maxlength="2"/>';i='<input type="text" name="meridian" class="bootstrap-timepicker-meridian form-control" maxlength="2"/>'}else{t='<span class="bootstrap-timepicker-hour"></span>';n='<span class="bootstrap-timepicker-minute"></span>';r='<span class="bootstrap-timepicker-second"></span>';i='<span class="bootstrap-timepicker-meridian"></span>'}s="<table>"+"<tr>"+'<td><a href="#" data-action="incrementHour"><i class="'+this.upArrowStyle+'"></i></a></td>'+'<td class="separator">&nbsp;</td>'+'<td><a href="#" data-action="incrementMinute"><i class="'+this.upArrowStyle+'"></i></a></td>'+(this.showSeconds?'<td class="separator">&nbsp;</td>'+'<td><a href="#" data-action="incrementSecond"><i class="'+this.upArrowStyle+'"></i></a></td>':"")+(this.showMeridian?'<td class="separator">&nbsp;</td>'+'<td class="meridian-column"><a href="#" data-action="toggleMeridian"><i class="'+this.upArrowStyle+'"></i></a></td>':"")+"</tr>"+"<tr>"+"<td>"+t+"</td> "+'<td class="separator">:</td>'+"<td>"+n+"</td> "+(this.showSeconds?'<td class="separator">:</td>'+"<td>"+r+"</td>":"")+(this.showMeridian?'<td class="separator">&nbsp;</td>'+"<td>"+i+"</td>":"")+"</tr>"+"<tr>"+'<td><a href="#" data-action="decrementHour"><i class="'+this.downArrowStyle+'"></i></a></td>'+'<td class="separator"></td>'+'<td><a href="#" data-action="decrementMinute"><i class="'+this.downArrowStyle+'"></i></a></td>'+(this.showSeconds?'<td class="separator">&nbsp;</td>'+'<td><a href="#" data-action="decrementSecond"><i class="'+this.downArrowStyle+'"></i></a></td>':"")+(this.showMeridian?'<td class="separator">&nbsp;</td>'+'<td><a href="#" data-action="toggleMeridian"><i class="'+this.downArrowStyle+'"></i></a></td>':"")+"</tr>"+"</table>";switch(this.template){case"modal":e='<div class="bootstrap-timepicker-widget modal hide fade in" data-backdrop="'+(this.modalBackdrop?"true":"false")+'">'+'<div class="modal-header">'+'<a href="#" class="close" data-dismiss="modal">×</a>'+"<h3>Pick a Time</h3>"+"</div>"+'<div class="modal-content">'+s+"</div>"+'<div class="modal-footer">'+'<a href="#" class="btn btn-primary" data-dismiss="modal">OK</a>'+"</div>"+"</div>";break;case"dropdown":e='<div class="bootstrap-timepicker-widget dropdown-menu">'+s+"</div>";break}return e},getTime:function(){return this.formatTime(this.hour,this.minute,this.second,this.meridian)},hideWidget:function(){if(this.isOpen===false){return}if(this.showInputs){this.updateFromWidgetInputs()}this.$element.trigger({type:"hide.timepicker",time:{value:this.getTime(),hours:this.hour,minutes:this.minute,seconds:this.second,meridian:this.meridian}});if(this.template==="modal"&&this.$widget.modal){this.$widget.modal("hide")}else{this.$widget.removeClass("open")}e(n).off("mousedown.timepicker");this.isOpen=false},highlightUnit:function(){this.position=this.getCursorPosition();if(this.position>=0&&this.position<=2){this.highlightHour()}else if(this.position>=3&&this.position<=5){this.highlightMinute()}else if(this.position>=6&&this.position<=8){if(this.showSeconds){this.highlightSecond()}else{this.highlightMeridian()}}else if(this.position>=9&&this.position<=11){this.highlightMeridian()}},highlightNextUnit:function(){switch(this.highlightedUnit){case"hour":this.highlightMinute();break;case"minute":if(this.showSeconds){this.highlightSecond()}else if(this.showMeridian){this.highlightMeridian()}else{this.highlightHour()}break;case"second":if(this.showMeridian){this.highlightMeridian()}else{this.highlightHour()}break;case"meridian":this.highlightHour();break}},highlightPrevUnit:function(){switch(this.highlightedUnit){case"hour":this.highlightMeridian();break;case"minute":this.highlightHour();break;case"second":this.highlightMinute();break;case"meridian":if(this.showSeconds){this.highlightSecond()}else{this.highlightMinute()}break}},highlightHour:function(){var e=this.$element.get(0);this.highlightedUnit="hour";if(e.setSelectionRange){setTimeout(function(){e.setSelectionRange(0,2)},0)}},highlightMinute:function(){var e=this.$element.get(0);this.highlightedUnit="minute";if(e.setSelectionRange){setTimeout(function(){e.setSelectionRange(3,5)},0)}},highlightSecond:function(){var e=this.$element.get(0);this.highlightedUnit="second";if(e.setSelectionRange){setTimeout(function(){e.setSelectionRange(6,8)},0)}},highlightMeridian:function(){var e=this.$element.get(0);this.highlightedUnit="meridian";if(e.setSelectionRange){if(this.showSeconds){setTimeout(function(){e.setSelectionRange(9,11)},0)}else{setTimeout(function(){e.setSelectionRange(6,8)},0)}}},incrementHour:function(){if(this.showMeridian){if(this.hour===11){this.hour++;return this.toggleMeridian()}else if(this.hour===12){this.hour=0}}if(this.hour===23){this.hour=0;return}this.hour++;this.update()},incrementMinute:function(e){var t;if(e){t=this.minute+e}else{t=this.minute+this.minuteStep-this.minute%this.minuteStep}if(t>59){this.incrementHour();this.minute=t-60}else{this.minute=t}this.update()},incrementSecond:function(){var e=this.second+this.secondStep-this.second%this.secondStep;if(e>59){this.incrementMinute(true);this.second=e-60}else{this.second=e}this.update()},remove:function(){e("document").off(".timepicker");if(this.$widget){this.$widget.remove()}delete this.$element.data().timepicker},setDefaultTime:function(e){if(!this.$element.val()){if(e==="current"){var t=new Date,n=t.getHours(),r=Math.floor(t.getMinutes()/this.minuteStep)*this.minuteStep,i=Math.floor(t.getSeconds()/this.secondStep)*this.secondStep,s="AM";if(this.showMeridian){if(n===0){n=12}else if(n>=12){if(n>12){n=n-12}s="PM"}else{s="AM"}}this.hour=n;this.minute=r;this.second=i;this.meridian=s;this.update()}else if(e===false){this.hour=0;this.minute=0;this.second=0;this.meridian="AM"}else{this.setTime(e)}}else{this.updateFromElementVal()}},setTime:function(e){var t,n;if(this.showMeridian){t=e.split(" ");n=t[0].split(":");this.meridian=t[1]}else{n=e.split(":")}this.hour=parseInt(n[0],10);this.minute=parseInt(n[1],10);this.second=parseInt(n[2],10);if(isNaN(this.hour)){this.hour=0}if(isNaN(this.minute)){this.minute=0}if(this.showMeridian){if(this.hour>12){this.hour=12}else if(this.hour<1){this.hour=12}if(this.meridian==="am"||this.meridian==="a"){this.meridian="AM"}else if(this.meridian==="pm"||this.meridian==="p"){this.meridian="PM"}if(this.meridian!=="AM"&&this.meridian!=="PM"){this.meridian="AM"}}else{if(this.hour>=24){this.hour=23}else if(this.hour<0){this.hour=0}}if(this.minute<0){this.minute=0}else if(this.minute>=60){this.minute=59}if(this.showSeconds){if(isNaN(this.second)){this.second=0}else if(this.second<0){this.second=0}else if(this.second>=60){this.second=59}}this.update()},showWidget:function(){if(this.isOpen){return}if(this.$element.is(":disabled")){return}var t=this;e(n).on("mousedown.timepicker",function(n){if(e(n.target).closest(".bootstrap-timepicker-widget").length===0){t.hideWidget()}});this.$element.trigger({type:"show.timepicker",time:{value:this.getTime(),hours:this.hour,minutes:this.minute,seconds:this.second,meridian:this.meridian}});if(this.disableFocus){this.$element.blur()}this.updateFromElementVal();if(this.template==="modal"&&this.$widget.modal){this.$widget.modal("show").on("hidden",e.proxy(this.hideWidget,this))}else{if(this.isOpen===false){this.$widget.addClass("open")}}this.isOpen=true},toggleMeridian:function(){this.meridian=this.meridian==="AM"?"PM":"AM";this.update()},update:function(){this.$element.trigger({type:"changeTime.timepicker",time:{value:this.getTime(),hours:this.hour,minutes:this.minute,seconds:this.second,meridian:this.meridian}});this.updateElement();this.updateWidget()},updateElement:function(){this.$element.val(this.getTime()).change()},updateFromElementVal:function(){var e=this.$element.val();if(e){this.setTime(e)}},updateWidget:function(){if(this.$widget===false){return}var e=this.hour<10?"0"+this.hour:this.hour,t=this.minute<10?"0"+this.minute:this.minute,n=this.second<10?"0"+this.second:this.second;if(this.showInputs){this.$widget.find("input.bootstrap-timepicker-hour").val(e);this.$widget.find("input.bootstrap-timepicker-minute").val(t);if(this.showSeconds){this.$widget.find("input.bootstrap-timepicker-second").val(n)}if(this.showMeridian){this.$widget.find("input.bootstrap-timepicker-meridian").val(this.meridian)}}else{this.$widget.find("span.bootstrap-timepicker-hour").text(e);this.$widget.find("span.bootstrap-timepicker-minute").text(t);if(this.showSeconds){this.$widget.find("span.bootstrap-timepicker-second").text(n)}if(this.showMeridian){this.$widget.find("span.bootstrap-timepicker-meridian").text(this.meridian)}}},updateFromWidgetInputs:function(){if(this.$widget===false){return}var t=e("input.bootstrap-timepicker-hour",this.$widget).val()+":"+e("input.bootstrap-timepicker-minute",this.$widget).val()+(this.showSeconds?":"+e("input.bootstrap-timepicker-second",this.$widget).val():"")+(this.showMeridian?" "+e("input.bootstrap-timepicker-meridian",this.$widget).val():"");this.setTime(t)},widgetClick:function(t){t.stopPropagation();t.preventDefault();var n=e(t.target).closest("a").data("action");if(n){this[n]()}},widgetKeydown:function(t){var n=e(t.target).closest("input"),r=n.attr("name");switch(t.keyCode){case 9:if(this.showMeridian){if(r==="meridian"){return this.hideWidget()}}else{if(this.showSeconds){if(r==="second"){return this.hideWidget()}}else{if(r==="minute"){return this.hideWidget()}}}this.updateFromWidgetInputs();break;case 27:this.hideWidget();break;case 38:t.preventDefault();switch(r){case"hour":this.incrementHour();break;case"minute":this.incrementMinute();break;case"second":this.incrementSecond();break;case"meridian":this.toggleMeridian();break}break;case 40:t.preventDefault();switch(r){case"hour":this.decrementHour();break;case"minute":this.decrementMinute();break;case"second":this.decrementSecond();break;case"meridian":this.toggleMeridian();break}break}}};e.fn.timepicker=function(t){var n=Array.apply(null,arguments);n.shift();return this.each(function(){var r=e(this),s=r.data("timepicker"),o=typeof t==="object"&&t;if(!s){r.data("timepicker",s=new i(this,e.extend({},e.fn.timepicker.defaults,o,e(this).data())))}if(typeof t==="string"){s[t].apply(s,n)}})};e.fn.timepicker.defaults={defaultTime:"current",disableFocus:false,isOpen:false,minuteStep:15,modalBackdrop:false,secondStep:15,showSeconds:false,showInputs:true,showMeridian:true,template:"dropdown",appendWidgetTo:".bootstrap-timepicker",upArrowStyle:"glyphicon glyphicon-chevron-up",downArrowStyle:"glyphicon glyphicon-chevron-down",containerClass:"bootstrap-timepicker"};e.fn.timepicker.Constructor=i})(jQuery,window,document) \ No newline at end of file diff --git a/assets/purchase_order.html b/assets/purchase_order.html deleted file mode 100644 index b89e8e20..00000000 --- a/assets/purchase_order.html +++ /dev/null @@ -1,1240 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - - <title>INSPINIA | Data Tables</title> - - <link href="css/bootstrap.min.css" rel="stylesheet"> - <link href="font-awesome/css/font-awesome.css" rel="stylesheet"> - - <!-- Data Tables --> - <link href="css/plugins/dataTables/dataTables.bootstrap.css" rel="stylesheet"> - <link href="css/plugins/dataTables/dataTables.responsive.css" rel="stylesheet"> - <link href="css/plugins/dataTables/dataTables.tableTools.min.css" rel="stylesheet"> - - <link href="css/animate.css" rel="stylesheet"> - <link href="css/style.css" rel="stylesheet"> - -</head> - -<body> - - <div id="wrapper"> - - <nav class="navbar-default navbar-static-side" role="navigation"> - <div class="sidebar-collapse"> - <ul class="nav" id="side-menu"> - <li class="nav-header"> - <div class="dropdown profile-element"> <span> - <img alt="image" class="img-circle" src="img/profile_small.jpg" /> - </span> - <a data-toggle="dropdown" class="dropdown-toggle" href="#"> - <span class="clear"> <span class="block m-t-xs"> <strong class="font-bold">saravana</strong> - </span> <span class="text-muted text-xs block">Admin <b class="caret"></b></span> </span> </a> - <ul class="dropdown-menu animated fadeInRight m-t-xs"> - <li><a href="profile.html">Profile</a></li> - <li><a href="contacts.html">Contacts</a></li> - <li><a href="mailbox.html">Mailbox</a></li> - <li class="divider"></li> - <li><a href="login.html">Logout</a></li> - </ul> - </div> - - </li> - <li> - <a href="index.html"><i class="fa fa-home"></i> <span class="nav-label">Home</span></a> - - </li> - <li class="active"> - <a href="purchase_order.html"><i class="fa fa-cart-plus"></i> <span class="nav-label">Purchase Order</span></a> - - </li> - <li> - <a href="supplier.html"><i class="fa fa-users"></i> <span class="nav-label">Supplier Details</span></a> - - </li> - <li> - <a href="raw_material.html"><i class="fa fa-cogs"></i> <span class="nav-label">Raw Material Details</span></a> - - </li> - <li> - <a href="register.html"><i class="fa fa-user"></i> <span class="nav-label">Create New User</span></a> - </li> - </ul> - - </div> - </nav> - - <div id="page-wrapper" class="gray-bg"> - <div class="row border-bottom"> - <nav class="navbar navbar-static-top" role="navigation" style="margin-bottom: 0"> - <div class="navbar-header"> - <a class="navbar-minimalize minimalize-styl-2 btn btn-primary " href="#"><i class="fa fa-bars"></i> </a> - <form role="search" class="navbar-form-custom" method="post" action=""> - <div class="form-group"> - <input type="text" placeholder="Search for something..." class="form-control" name="top-search" id="top-search"> - </div> - </form> - </div> - <ul class="nav navbar-top-links navbar-right"> - <li> - <span class="m-r-sm text-muted welcome-message">Welcome to Siddharth Industries</span> - </li> - <!-- <li class="dropdown"> - <a class="dropdown-toggle count-info" data-toggle="dropdown" href="#"> - <i class="fa fa-envelope"></i> <span class="label label-warning">16</span> - </a> - <ul class="dropdown-menu dropdown-messages"> - <li> - <div class="dropdown-messages-box"> - <a href="profile.html" class="pull-left"> - <img alt="image" class="img-circle" src="img/a7.jpg"> - </a> - <div class="media-body"> - <small class="pull-right">46h ago</small> - <strong>Mike Loreipsum</strong> started following <strong>Monica Smith</strong>. <br> - <small class="text-muted">3 days ago at 7:58 pm - 10.06.2014</small> - </div> - </div> - </li> - <li class="divider"></li> - <li> - <div class="dropdown-messages-box"> - <a href="profile.html" class="pull-left"> - <img alt="image" class="img-circle" src="img/a4.jpg"> - </a> - <div class="media-body "> - <small class="pull-right text-navy">5h ago</small> - <strong>Chris Johnatan Overtunk</strong> started following <strong>Monica Smith</strong>. <br> - <small class="text-muted">Yesterday 1:21 pm - 11.06.2014</small> - </div> - </div> - </li> - <li class="divider"></li> - <li> - <div class="dropdown-messages-box"> - <a href="profile.html" class="pull-left"> - <img alt="image" class="img-circle" src="img/profile.jpg"> - </a> - <div class="media-body "> - <small class="pull-right">23h ago</small> - <strong>Monica Smith</strong> love <strong>Kim Smith</strong>. <br> - <small class="text-muted">2 days ago at 2:30 am - 11.06.2014</small> - </div> - </div> - </li> - <li class="divider"></li> - <li> - <div class="text-center link-block"> - <a href="mailbox.html"> - <i class="fa fa-envelope"></i> <strong>Read All Messages</strong> - </a> - </div> - </li> - </ul> - </li> - <li class="dropdown"> - <a class="dropdown-toggle count-info" data-toggle="dropdown" href="#"> - <i class="fa fa-bell"></i> <span class="label label-primary">8</span> - </a> - <ul class="dropdown-menu dropdown-alerts"> - <li> - <a href="mailbox.html"> - <div> - <i class="fa fa-envelope fa-fw"></i> You have 16 messages - <span class="pull-right text-muted small">4 minutes ago</span> - </div> - </a> - </li> - <li class="divider"></li> - <li> - <a href="profile.html"> - <div> - <i class="fa fa-twitter fa-fw"></i> 3 New Followers - <span class="pull-right text-muted small">12 minutes ago</span> - </div> - </a> - </li> - <li class="divider"></li> - <li> - <a href="grid_options.html"> - <div> - <i class="fa fa-upload fa-fw"></i> Server Rebooted - <span class="pull-right text-muted small">4 minutes ago</span> - </div> - </a> - </li> - <li class="divider"></li> - <li> - <div class="text-center link-block"> - <a href="notifications.html"> - <strong>See All Alerts</strong> - <i class="fa fa-angle-right"></i> - </a> - </div> - </li> - </ul> - </li>--> - - - <li> - <a href="login.html"> - <i class="fa fa-sign-out"></i> Log out - </a> - </li> - </ul> - - </nav> - </div> - <div class="row wrapper border-bottom white-bg page-heading"> - <div class="col-lg-10"> - <h2>Purchase Order</h2> - <ol class="breadcrumb"> - <li> - <a href="index.html">Home</a> - </li> - - <li class="active"> - <strong>Purchase Order</strong> - </li> - </ol> - </div> - <div class="col-lg-2"> - - </div> - </div> - <div class="wrapper wrapper-content animated fadeInRight"> - <!-- <div class="row"> - <div class="col-lg-12"> - <div class="ibox float-e-margins"> - <div class="ibox-title"> - <h5>Basic Data Tables example with responsive plugin</h5> - <div class="ibox-tools"> - <a class="collapse-link"> - <i class="fa fa-chevron-up"></i> - </a> - <a class="dropdown-toggle" data-toggle="dropdown" href="#"> - <i class="fa fa-wrench"></i> - </a> - <ul class="dropdown-menu dropdown-user"> - <li><a href="#">Config option 1</a> - </li> - <li><a href="#">Config option 2</a> - </li> - </ul> - <a class="close-link"> - <i class="fa fa-times"></i> - </a> - </div> - </div> - <div class="ibox-content"> - - <table class="table table-striped table-bordered table-hover dataTables-example" > - <thead> - <tr> - <th>Rendering engine</th> - <th>Browser</th> - <th>Platform(s)</th> - <th>Engine version</th> - <th>CSS grade</th> - </tr> - </thead> - <tbody> - <tr class="gradeX"> - <td>Trident</td> - <td>Internet - Explorer 4.0 - </td> - <td>Win 95+</td> - <td class="center">4</td> - <td class="center">X</td> - </tr> - <tr class="gradeC"> - <td>Trident</td> - <td>Internet - Explorer 5.0 - </td> - <td>Win 95+</td> - <td class="center">5</td> - <td class="center">C</td> - </tr> - <tr class="gradeA"> - <td>Trident</td> - <td>Internet - Explorer 5.5 - </td> - <td>Win 95+</td> - <td class="center">5.5</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Trident</td> - <td>Internet - Explorer 6 - </td> - <td>Win 98+</td> - <td class="center">6</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Trident</td> - <td>Internet Explorer 7</td> - <td>Win XP SP2+</td> - <td class="center">7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Trident</td> - <td>AOL browser (AOL desktop)</td> - <td>Win XP</td> - <td class="center">6</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 1.0</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 1.5</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 2.0</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 3.0</td> - <td>Win 2k+ / OSX.3+</td> - <td class="center">1.9</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Camino 1.0</td> - <td>OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Camino 1.5</td> - <td>OSX.3+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Netscape 7.2</td> - <td>Win 95+ / Mac OS 8.6-9.2</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Netscape Browser 8</td> - <td>Win 98SE+</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Netscape Navigator 9</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.0</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.1</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.2</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.2</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.3</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.3</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.4</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.4</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.5</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.5</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.6</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.6</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.7</td> - <td>Win 98+ / OSX.1+</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.8</td> - <td>Win 98+ / OSX.1+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Seamonkey 1.1</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Epiphany 2.20</td> - <td>Gnome</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 1.2</td> - <td>OSX.3</td> - <td class="center">125.5</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 1.3</td> - <td>OSX.3</td> - <td class="center">312.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 2.0</td> - <td>OSX.4+</td> - <td class="center">419.3</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 3.0</td> - <td>OSX.4+</td> - <td class="center">522.1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>OmniWeb 5.5</td> - <td>OSX.4+</td> - <td class="center">420</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>iPod Touch / iPhone</td> - <td>iPod</td> - <td class="center">420.1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>S60</td> - <td>S60</td> - <td class="center">413</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 7.0</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 7.5</td> - <td>Win 95+ / OSX.2+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 8.0</td> - <td>Win 95+ / OSX.2+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 8.5</td> - <td>Win 95+ / OSX.2+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 9.0</td> - <td>Win 95+ / OSX.3+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 9.2</td> - <td>Win 88+ / OSX.3+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 9.5</td> - <td>Win 88+ / OSX.3+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera for Wii</td> - <td>Wii</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Nokia N800</td> - <td>N800</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Nintendo DS browser</td> - <td>Nintendo DS</td> - <td class="center">8.5</td> - <td class="center">C/A<sup>1</sup></td> - </tr> - <tr class="gradeC"> - <td>KHTML</td> - <td>Konqureror 3.1</td> - <td>KDE 3.1</td> - <td class="center">3.1</td> - <td class="center">C</td> - </tr> - <tr class="gradeA"> - <td>KHTML</td> - <td>Konqureror 3.3</td> - <td>KDE 3.3</td> - <td class="center">3.3</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>KHTML</td> - <td>Konqureror 3.5</td> - <td>KDE 3.5</td> - <td class="center">3.5</td> - <td class="center">A</td> - </tr> - <tr class="gradeX"> - <td>Tasman</td> - <td>Internet Explorer 4.5</td> - <td>Mac OS 8-9</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeC"> - <td>Tasman</td> - <td>Internet Explorer 5.1</td> - <td>Mac OS 7.6-9</td> - <td class="center">1</td> - <td class="center">C</td> - </tr> - <tr class="gradeC"> - <td>Tasman</td> - <td>Internet Explorer 5.2</td> - <td>Mac OS 8-X</td> - <td class="center">1</td> - <td class="center">C</td> - </tr> - <tr class="gradeA"> - <td>Misc</td> - <td>NetFront 3.1</td> - <td>Embedded devices</td> - <td class="center">-</td> - <td class="center">C</td> - </tr> - <tr class="gradeA"> - <td>Misc</td> - <td>NetFront 3.4</td> - <td>Embedded devices</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeX"> - <td>Misc</td> - <td>Dillo 0.8</td> - <td>Embedded devices</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeX"> - <td>Misc</td> - <td>Links</td> - <td>Text only</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeX"> - <td>Misc</td> - <td>Lynx</td> - <td>Text only</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeC"> - <td>Misc</td> - <td>IE Mobile</td> - <td>Windows Mobile 6</td> - <td class="center">-</td> - <td class="center">C</td> - </tr> - <tr class="gradeC"> - <td>Misc</td> - <td>PSP browser</td> - <td>PSP</td> - <td class="center">-</td> - <td class="center">C</td> - </tr> - <tr class="gradeU"> - <td>Other browsers</td> - <td>All others</td> - <td>-</td> - <td class="center">-</td> - <td class="center">U</td> - </tr> - </tbody> - <tfoot> - <tr> - <th>Rendering engine</th> - <th>Browser</th> - <th>Platform(s)</th> - <th>Engine version</th> - <th>CSS grade</th> - </tr> - </tfoot> - </table> - - </div> - </div> - </div> - </div>--> - <div class="row"> - <div class="col-lg-12"> - <div class="ibox float-e-margins"> - <div class="ibox-title"> - <h5>Editable Table in- combination with jEditable</h5> - <div class="ibox-tools"> - <a class="collapse-link"> - <i class="fa fa-chevron-up"></i> - </a> - <a class="dropdown-toggle" data-toggle="dropdown" href="#"> - <i class="fa fa-wrench"></i> - </a> - <ul class="dropdown-menu dropdown-user"> - <li><a href="#">Config option 1</a> - </li> - <li><a href="#">Config option 2</a> - </li> - </ul> - <a class="close-link"> - <i class="fa fa-times"></i> - </a> - </div> - </div> - <div class="ibox-content"> - <div class=""> - <a onclick="fnClickAddRow();" href="javascript:void(0);" class="btn btn-primary ">Add a new row</a> - </div> - <table class="table table-striped table-bordered table-hover " id="editable" > - - <thead> - <tr> - <th>Rendering engine</th> - <th>Browser</th> - <th>Platform(s)</th> - <th>Engine version</th> - <th>CSS grade</th> - </tr> - </thead> - <tbody> - <tr class="gradeX"> - <td>Trident</td> - <td>Internet - Explorer 4.0 - </td> - <td>Win 95+</td> - <td class="center">4</td> - <td class="center">X</td> - </tr> - <tr class="gradeC"> - <td>Trident</td> - <td>Internet - Explorer 5.0 - </td> - <td>Win 95+</td> - <td class="center">5</td> - <td class="center">C</td> - </tr> - <tr class="gradeA"> - <td>Trident</td> - <td>Internet - Explorer 5.5 - </td> - <td>Win 95+</td> - <td class="center">5.5</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Trident</td> - <td>Internet - Explorer 6 - </td> - <td>Win 98+</td> - <td class="center">6</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Trident</td> - <td>Internet Explorer 7</td> - <td>Win XP SP2+</td> - <td class="center">7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Trident</td> - <td>AOL browser (AOL desktop)</td> - <td>Win XP</td> - <td class="center">6</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 1.0</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 1.5</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 2.0</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 3.0</td> - <td>Win 2k+ / OSX.3+</td> - <td class="center">1.9</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Camino 1.0</td> - <td>OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Camino 1.5</td> - <td>OSX.3+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Netscape 7.2</td> - <td>Win 95+ / Mac OS 8.6-9.2</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Netscape Browser 8</td> - <td>Win 98SE+</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Netscape Navigator 9</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.0</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.1</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.2</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.2</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.3</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.3</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.4</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.4</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.5</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.5</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.6</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.6</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.7</td> - <td>Win 98+ / OSX.1+</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.8</td> - <td>Win 98+ / OSX.1+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Seamonkey 1.1</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Epiphany 2.20</td> - <td>Gnome</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 1.2</td> - <td>OSX.3</td> - <td class="center">125.5</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 1.3</td> - <td>OSX.3</td> - <td class="center">312.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 2.0</td> - <td>OSX.4+</td> - <td class="center">419.3</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 3.0</td> - <td>OSX.4+</td> - <td class="center">522.1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>OmniWeb 5.5</td> - <td>OSX.4+</td> - <td class="center">420</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>iPod Touch / iPhone</td> - <td>iPod</td> - <td class="center">420.1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>S60</td> - <td>S60</td> - <td class="center">413</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 7.0</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 7.5</td> - <td>Win 95+ / OSX.2+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 8.0</td> - <td>Win 95+ / OSX.2+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 8.5</td> - <td>Win 95+ / OSX.2+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 9.0</td> - <td>Win 95+ / OSX.3+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 9.2</td> - <td>Win 88+ / OSX.3+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 9.5</td> - <td>Win 88+ / OSX.3+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera for Wii</td> - <td>Wii</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Nokia N800</td> - <td>N800</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Nintendo DS browser</td> - <td>Nintendo DS</td> - <td class="center">8.5</td> - <td class="center">C/A<sup>1</sup></td> - </tr> - <tr class="gradeC"> - <td>KHTML</td> - <td>Konqureror 3.1</td> - <td>KDE 3.1</td> - <td class="center">3.1</td> - <td class="center">C</td> - </tr> - <tr class="gradeA"> - <td>KHTML</td> - <td>Konqureror 3.3</td> - <td>KDE 3.3</td> - <td class="center">3.3</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>KHTML</td> - <td>Konqureror 3.5</td> - <td>KDE 3.5</td> - <td class="center">3.5</td> - <td class="center">A</td> - </tr> - <tr class="gradeX"> - <td>Tasman</td> - <td>Internet Explorer 4.5</td> - <td>Mac OS 8-9</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeC"> - <td>Tasman</td> - <td>Internet Explorer 5.1</td> - <td>Mac OS 7.6-9</td> - <td class="center">1</td> - <td class="center">C</td> - </tr> - <tr class="gradeC"> - <td>Tasman</td> - <td>Internet Explorer 5.2</td> - <td>Mac OS 8-X</td> - <td class="center">1</td> - <td class="center">C</td> - </tr> - <tr class="gradeA"> - <td>Misc</td> - <td>NetFront 3.1</td> - <td>Embedded devices</td> - <td class="center">-</td> - <td class="center">C</td> - </tr> - <tr class="gradeA"> - <td>Misc</td> - <td>NetFront 3.4</td> - <td>Embedded devices</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeX"> - <td>Misc</td> - <td>Dillo 0.8</td> - <td>Embedded devices</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeX"> - <td>Misc</td> - <td>Links</td> - <td>Text only</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeX"> - <td>Misc</td> - <td>Lynx</td> - <td>Text only</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeC"> - <td>Misc</td> - <td>IE Mobile</td> - <td>Windows Mobile 6</td> - <td class="center">-</td> - <td class="center">C</td> - </tr> - <tr class="gradeC"> - <td>Misc</td> - <td>PSP browser</td> - <td>PSP</td> - <td class="center">-</td> - <td class="center">C</td> - </tr> - <tr class="gradeU"> - <td>Other browsers</td> - <td>All others</td> - <td>-</td> - <td class="center">-</td> - <td class="center">U</td> - </tr> - </tbody> - <tfoot> - <tr> - <th>Rendering engine</th> - <th>Browser</th> - <th>Platform(s)</th> - <th>Engine version</th> - <th>CSS grade</th> - </tr> - </tfoot> - </table> - - </div> - </div> - </div> - </div> - </div> - <div class="footer"> - <div class="pull-right"> - 10GB of <strong>250GB</strong> Free. - </div> - <div> - <strong>Copyright</strong> Example Company &copy; 2014-2015 - </div> - </div> - - </div> - </div> - - - - <!-- Mainly scripts --> - <script src="js/jquery-2.1.1.js"></script> - <script src="js/bootstrap.min.js"></script> - <script src="js/plugins/metisMenu/jquery.metisMenu.js"></script> - <script src="js/plugins/slimscroll/jquery.slimscroll.min.js"></script> - <script src="js/plugins/jeditable/jquery.jeditable.js"></script> - - <!-- Data Tables --> - <script src="js/plugins/dataTables/jquery.dataTables.js"></script> - <script src="js/plugins/dataTables/dataTables.bootstrap.js"></script> - <script src="js/plugins/dataTables/dataTables.responsive.js"></script> - <script src="js/plugins/dataTables/dataTables.tableTools.min.js"></script> - - <!-- Custom and plugin javascript --> - <script src="js/inspinia.js"></script> - <script src="js/plugins/pace/pace.min.js"></script> - - <!-- Page-Level Scripts --> - <script> - $(document).ready(function() { - $('.dataTables-example').dataTable({ - responsive: true, - "dom": 'T<"clear">lfrtip', - "tableTools": { - "sSwfPath": "js/plugins/dataTables/swf/copy_csv_xls_pdf.swf" - } - }); - - /* Init DataTables */ - var oTable = $('#editable').dataTable(); - - /* Apply the jEditable handlers to the table */ - oTable.$('td').editable( '../example_ajax.php', { - "callback": function( sValue, y ) { - var aPos = oTable.fnGetPosition( this ); - oTable.fnUpdate( sValue, aPos[0], aPos[1] ); - }, - "submitdata": function ( value, settings ) { - return { - "row_id": this.parentNode.getAttribute('id'), - "column": oTable.fnGetPosition( this )[2] - }; - }, - - "width": "90%", - "height": "100%" - } ); - - - }); - - <!--function fnClickAddRow() { - $('#editable').dataTable().fnAddData( [ - "Custom row", - "New row", - "New row", - "New row", - "New row" ] ); - - }--> - </script> -<style> - body.DTTT_Print { - background: #fff; - - } - .DTTT_Print #page-wrapper { - margin: 0; - background:#fff; - } - - button.DTTT_button, div.DTTT_button, a.DTTT_button { - border: 1px solid #e7eaec; - background: #fff; - color: #676a6c; - box-shadow: none; - padding: 6px 8px; - } - button.DTTT_button:hover, div.DTTT_button:hover, a.DTTT_button:hover { - border: 1px solid #d2d2d2; - background: #fff; - color: #676a6c; - box-shadow: none; - padding: 6px 8px; - } - - .dataTables_filter label { - margin-right: 5px; - - } -</style> -</body> - -</html> diff --git a/assets/raw_material.html b/assets/raw_material.html deleted file mode 100644 index 2d79d183..00000000 --- a/assets/raw_material.html +++ /dev/null @@ -1,1240 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - - <title>INSPINIA | Data Tables</title> - - <link href="css/bootstrap.min.css" rel="stylesheet"> - <link href="font-awesome/css/font-awesome.css" rel="stylesheet"> - - <!-- Data Tables --> - <link href="css/plugins/dataTables/dataTables.bootstrap.css" rel="stylesheet"> - <link href="css/plugins/dataTables/dataTables.responsive.css" rel="stylesheet"> - <link href="css/plugins/dataTables/dataTables.tableTools.min.css" rel="stylesheet"> - - <link href="css/animate.css" rel="stylesheet"> - <link href="css/style.css" rel="stylesheet"> - -</head> - -<body> - - <div id="wrapper"> - - <nav class="navbar-default navbar-static-side" role="navigation"> - <div class="sidebar-collapse"> - <ul class="nav" id="side-menu"> - <li class="nav-header"> - <div class="dropdown profile-element"> <span> - <img alt="image" class="img-circle" src="img/profile_small.jpg" /> - </span> - <a data-toggle="dropdown" class="dropdown-toggle" href="#"> - <span class="clear"> <span class="block m-t-xs"> <strong class="font-bold">saravana</strong> - </span> <span class="text-muted text-xs block">Admin <b class="caret"></b></span> </span> </a> - <ul class="dropdown-menu animated fadeInRight m-t-xs"> - <li><a href="profile.html">Profile</a></li> - <li><a href="contacts.html">Contacts</a></li> - <li><a href="mailbox.html">Mailbox</a></li> - <li class="divider"></li> - <li><a href="login.html">Logout</a></li> - </ul> - </div> - - </li> - <li> - <a href="index.html"><i class="fa fa-home"></i> <span class="nav-label">Home</span></a> - - </li> - <li> - <a href="purchase_order.html"><i class="fa fa-cart-plus"></i> <span class="nav-label">Purchase Order</span></a> - - </li> - <li> - <a href="supplier.html"><i class="fa fa-users"></i> <span class="nav-label">Supplier Details</span></a> - - </li> - <li class="active"> - - <a href="raw_material.html"><i class="fa fa-cogs"></i> <span class="nav-label">Raw Material Details</span></a> - - </li> - <li> - <a href="register.html"><i class="fa fa-user"></i> <span class="nav-label">Create New User</span></a> - </li> - </ul> - - </div> - </nav> - - <div id="page-wrapper" class="gray-bg"> - <div class="row border-bottom"> - <nav class="navbar navbar-static-top" role="navigation" style="margin-bottom: 0"> - <div class="navbar-header"> - <a class="navbar-minimalize minimalize-styl-2 btn btn-primary " href="#"><i class="fa fa-bars"></i> </a> - <form role="search" class="navbar-form-custom" method="post" action="search_results.html"> - <div class="form-group"> - <input type="text" placeholder="Search for something..." class="form-control" name="top-search" id="top-search"> - </div> - </form> - </div> - <ul class="nav navbar-top-links navbar-right"> - <li> - <span class="m-r-sm text-muted welcome-message">Welcome to Siddharth Industries</span> - </li> - <!-- <li class="dropdown"> - <a class="dropdown-toggle count-info" data-toggle="dropdown" href="#"> - <i class="fa fa-envelope"></i> <span class="label label-warning">16</span> - </a> - <ul class="dropdown-menu dropdown-messages"> - <li> - <div class="dropdown-messages-box"> - <a href="profile.html" class="pull-left"> - <img alt="image" class="img-circle" src="img/a7.jpg"> - </a> - <div class="media-body"> - <small class="pull-right">46h ago</small> - <strong>Mike Loreipsum</strong> started following <strong>Monica Smith</strong>. <br> - <small class="text-muted">3 days ago at 7:58 pm - 10.06.2014</small> - </div> - </div> - </li> - <li class="divider"></li> - <li> - <div class="dropdown-messages-box"> - <a href="profile.html" class="pull-left"> - <img alt="image" class="img-circle" src="img/a4.jpg"> - </a> - <div class="media-body "> - <small class="pull-right text-navy">5h ago</small> - <strong>Chris Johnatan Overtunk</strong> started following <strong>Monica Smith</strong>. <br> - <small class="text-muted">Yesterday 1:21 pm - 11.06.2014</small> - </div> - </div> - </li> - <li class="divider"></li> - <li> - <div class="dropdown-messages-box"> - <a href="profile.html" class="pull-left"> - <img alt="image" class="img-circle" src="img/profile.jpg"> - </a> - <div class="media-body "> - <small class="pull-right">23h ago</small> - <strong>Monica Smith</strong> love <strong>Kim Smith</strong>. <br> - <small class="text-muted">2 days ago at 2:30 am - 11.06.2014</small> - </div> - </div> - </li> - <li class="divider"></li> - <li> - <div class="text-center link-block"> - <a href="mailbox.html"> - <i class="fa fa-envelope"></i> <strong>Read All Messages</strong> - </a> - </div> - </li> - </ul> - </li> - <li class="dropdown"> - <a class="dropdown-toggle count-info" data-toggle="dropdown" href="#"> - <i class="fa fa-bell"></i> <span class="label label-primary">8</span> - </a> - <ul class="dropdown-menu dropdown-alerts"> - <li> - <a href="mailbox.html"> - <div> - <i class="fa fa-envelope fa-fw"></i> You have 16 messages - <span class="pull-right text-muted small">4 minutes ago</span> - </div> - </a> - </li> - <li class="divider"></li> - <li> - <a href="profile.html"> - <div> - <i class="fa fa-twitter fa-fw"></i> 3 New Followers - <span class="pull-right text-muted small">12 minutes ago</span> - </div> - </a> - </li> - <li class="divider"></li> - <li> - <a href="grid_options.html"> - <div> - <i class="fa fa-upload fa-fw"></i> Server Rebooted - <span class="pull-right text-muted small">4 minutes ago</span> - </div> - </a> - </li> - <li class="divider"></li> - <li> - <div class="text-center link-block"> - <a href="notifications.html"> - <strong>See All Alerts</strong> - <i class="fa fa-angle-right"></i> - </a> - </div> - </li> - </ul> - </li>--> - - - <li> - <a href="login.html"> - <i class="fa fa-sign-out"></i> Log out - </a> - </li> - </ul> - - </nav> - </div> - <div class="row wrapper border-bottom white-bg page-heading"> - <div class="col-lg-10"> - <h2>Purchase Order</h2> - <ol class="breadcrumb"> - <li> - <a href="index.html">Home</a> - </li> - - <li class="active"> - <strong>Purchase Order</strong> - </li> - </ol> - </div> - <div class="col-lg-2"> - - </div> - </div> - <div class="wrapper wrapper-content animated fadeInRight"> - <!-- <div class="row"> - <div class="col-lg-12"> - <div class="ibox float-e-margins"> - <div class="ibox-title"> - <h5>Basic Data Tables example with responsive plugin</h5> - <div class="ibox-tools"> - <a class="collapse-link"> - <i class="fa fa-chevron-up"></i> - </a> - <a class="dropdown-toggle" data-toggle="dropdown" href="#"> - <i class="fa fa-wrench"></i> - </a> - <ul class="dropdown-menu dropdown-user"> - <li><a href="#">Config option 1</a> - </li> - <li><a href="#">Config option 2</a> - </li> - </ul> - <a class="close-link"> - <i class="fa fa-times"></i> - </a> - </div> - </div> - <div class="ibox-content"> - - <table class="table table-striped table-bordered table-hover dataTables-example" > - <thead> - <tr> - <th>Rendering engine</th> - <th>Browser</th> - <th>Platform(s)</th> - <th>Engine version</th> - <th>CSS grade</th> - </tr> - </thead> - <tbody> - <tr class="gradeX"> - <td>Trident</td> - <td>Internet - Explorer 4.0 - </td> - <td>Win 95+</td> - <td class="center">4</td> - <td class="center">X</td> - </tr> - <tr class="gradeC"> - <td>Trident</td> - <td>Internet - Explorer 5.0 - </td> - <td>Win 95+</td> - <td class="center">5</td> - <td class="center">C</td> - </tr> - <tr class="gradeA"> - <td>Trident</td> - <td>Internet - Explorer 5.5 - </td> - <td>Win 95+</td> - <td class="center">5.5</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Trident</td> - <td>Internet - Explorer 6 - </td> - <td>Win 98+</td> - <td class="center">6</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Trident</td> - <td>Internet Explorer 7</td> - <td>Win XP SP2+</td> - <td class="center">7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Trident</td> - <td>AOL browser (AOL desktop)</td> - <td>Win XP</td> - <td class="center">6</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 1.0</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 1.5</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 2.0</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 3.0</td> - <td>Win 2k+ / OSX.3+</td> - <td class="center">1.9</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Camino 1.0</td> - <td>OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Camino 1.5</td> - <td>OSX.3+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Netscape 7.2</td> - <td>Win 95+ / Mac OS 8.6-9.2</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Netscape Browser 8</td> - <td>Win 98SE+</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Netscape Navigator 9</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.0</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.1</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.2</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.2</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.3</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.3</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.4</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.4</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.5</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.5</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.6</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.6</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.7</td> - <td>Win 98+ / OSX.1+</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.8</td> - <td>Win 98+ / OSX.1+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Seamonkey 1.1</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Epiphany 2.20</td> - <td>Gnome</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 1.2</td> - <td>OSX.3</td> - <td class="center">125.5</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 1.3</td> - <td>OSX.3</td> - <td class="center">312.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 2.0</td> - <td>OSX.4+</td> - <td class="center">419.3</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 3.0</td> - <td>OSX.4+</td> - <td class="center">522.1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>OmniWeb 5.5</td> - <td>OSX.4+</td> - <td class="center">420</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>iPod Touch / iPhone</td> - <td>iPod</td> - <td class="center">420.1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>S60</td> - <td>S60</td> - <td class="center">413</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 7.0</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 7.5</td> - <td>Win 95+ / OSX.2+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 8.0</td> - <td>Win 95+ / OSX.2+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 8.5</td> - <td>Win 95+ / OSX.2+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 9.0</td> - <td>Win 95+ / OSX.3+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 9.2</td> - <td>Win 88+ / OSX.3+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 9.5</td> - <td>Win 88+ / OSX.3+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera for Wii</td> - <td>Wii</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Nokia N800</td> - <td>N800</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Nintendo DS browser</td> - <td>Nintendo DS</td> - <td class="center">8.5</td> - <td class="center">C/A<sup>1</sup></td> - </tr> - <tr class="gradeC"> - <td>KHTML</td> - <td>Konqureror 3.1</td> - <td>KDE 3.1</td> - <td class="center">3.1</td> - <td class="center">C</td> - </tr> - <tr class="gradeA"> - <td>KHTML</td> - <td>Konqureror 3.3</td> - <td>KDE 3.3</td> - <td class="center">3.3</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>KHTML</td> - <td>Konqureror 3.5</td> - <td>KDE 3.5</td> - <td class="center">3.5</td> - <td class="center">A</td> - </tr> - <tr class="gradeX"> - <td>Tasman</td> - <td>Internet Explorer 4.5</td> - <td>Mac OS 8-9</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeC"> - <td>Tasman</td> - <td>Internet Explorer 5.1</td> - <td>Mac OS 7.6-9</td> - <td class="center">1</td> - <td class="center">C</td> - </tr> - <tr class="gradeC"> - <td>Tasman</td> - <td>Internet Explorer 5.2</td> - <td>Mac OS 8-X</td> - <td class="center">1</td> - <td class="center">C</td> - </tr> - <tr class="gradeA"> - <td>Misc</td> - <td>NetFront 3.1</td> - <td>Embedded devices</td> - <td class="center">-</td> - <td class="center">C</td> - </tr> - <tr class="gradeA"> - <td>Misc</td> - <td>NetFront 3.4</td> - <td>Embedded devices</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeX"> - <td>Misc</td> - <td>Dillo 0.8</td> - <td>Embedded devices</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeX"> - <td>Misc</td> - <td>Links</td> - <td>Text only</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeX"> - <td>Misc</td> - <td>Lynx</td> - <td>Text only</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeC"> - <td>Misc</td> - <td>IE Mobile</td> - <td>Windows Mobile 6</td> - <td class="center">-</td> - <td class="center">C</td> - </tr> - <tr class="gradeC"> - <td>Misc</td> - <td>PSP browser</td> - <td>PSP</td> - <td class="center">-</td> - <td class="center">C</td> - </tr> - <tr class="gradeU"> - <td>Other browsers</td> - <td>All others</td> - <td>-</td> - <td class="center">-</td> - <td class="center">U</td> - </tr> - </tbody> - <tfoot> - <tr> - <th>Rendering engine</th> - <th>Browser</th> - <th>Platform(s)</th> - <th>Engine version</th> - <th>CSS grade</th> - </tr> - </tfoot> - </table> - - </div> - </div> - </div> - </div>--> - <div class="row"> - <div class="col-lg-12"> - <div class="ibox float-e-margins"> - <div class="ibox-title"> - <h5>Editable Table in- combination with jEditable</h5> - <div class="ibox-tools"> - <a class="collapse-link"> - <i class="fa fa-chevron-up"></i> - </a> - <a class="dropdown-toggle" data-toggle="dropdown" href="#"> - <i class="fa fa-wrench"></i> - </a> - <ul class="dropdown-menu dropdown-user"> - <li><a href="#">Config option 1</a> - </li> - <li><a href="#">Config option 2</a> - </li> - </ul> - <a class="close-link"> - <i class="fa fa-times"></i> - </a> - </div> - </div> - <div class="ibox-content"> - <div class=""> - <a onclick="fnClickAddRow();" href="javascript:void(0);" class="btn btn-primary ">Add a new row</a> - </div> - <table class="table table-striped table-bordered table-hover " id="editable" > - <thead> - <tr> - <th>Rendering engine</th> - <th>Browser</th> - <th>Platform(s)</th> - <th>Engine version</th> - <th>CSS grade</th> - </tr> - </thead> - <tbody> - <tr class="gradeX"> - <td>Trident</td> - <td>Internet - Explorer 4.0 - </td> - <td>Win 95+</td> - <td class="center">4</td> - <td class="center">X</td> - </tr> - <tr class="gradeC"> - <td>Trident</td> - <td>Internet - Explorer 5.0 - </td> - <td>Win 95+</td> - <td class="center">5</td> - <td class="center">C</td> - </tr> - <tr class="gradeA"> - <td>Trident</td> - <td>Internet - Explorer 5.5 - </td> - <td>Win 95+</td> - <td class="center">5.5</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Trident</td> - <td>Internet - Explorer 6 - </td> - <td>Win 98+</td> - <td class="center">6</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Trident</td> - <td>Internet Explorer 7</td> - <td>Win XP SP2+</td> - <td class="center">7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Trident</td> - <td>AOL browser (AOL desktop)</td> - <td>Win XP</td> - <td class="center">6</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 1.0</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 1.5</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 2.0</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 3.0</td> - <td>Win 2k+ / OSX.3+</td> - <td class="center">1.9</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Camino 1.0</td> - <td>OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Camino 1.5</td> - <td>OSX.3+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Netscape 7.2</td> - <td>Win 95+ / Mac OS 8.6-9.2</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Netscape Browser 8</td> - <td>Win 98SE+</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Netscape Navigator 9</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.0</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.1</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.2</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.2</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.3</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.3</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.4</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.4</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.5</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.5</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.6</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.6</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.7</td> - <td>Win 98+ / OSX.1+</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.8</td> - <td>Win 98+ / OSX.1+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Seamonkey 1.1</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Epiphany 2.20</td> - <td>Gnome</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 1.2</td> - <td>OSX.3</td> - <td class="center">125.5</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 1.3</td> - <td>OSX.3</td> - <td class="center">312.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 2.0</td> - <td>OSX.4+</td> - <td class="center">419.3</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 3.0</td> - <td>OSX.4+</td> - <td class="center">522.1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>OmniWeb 5.5</td> - <td>OSX.4+</td> - <td class="center">420</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>iPod Touch / iPhone</td> - <td>iPod</td> - <td class="center">420.1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>S60</td> - <td>S60</td> - <td class="center">413</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 7.0</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 7.5</td> - <td>Win 95+ / OSX.2+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 8.0</td> - <td>Win 95+ / OSX.2+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 8.5</td> - <td>Win 95+ / OSX.2+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 9.0</td> - <td>Win 95+ / OSX.3+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 9.2</td> - <td>Win 88+ / OSX.3+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 9.5</td> - <td>Win 88+ / OSX.3+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera for Wii</td> - <td>Wii</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Nokia N800</td> - <td>N800</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Nintendo DS browser</td> - <td>Nintendo DS</td> - <td class="center">8.5</td> - <td class="center">C/A<sup>1</sup></td> - </tr> - <tr class="gradeC"> - <td>KHTML</td> - <td>Konqureror 3.1</td> - <td>KDE 3.1</td> - <td class="center">3.1</td> - <td class="center">C</td> - </tr> - <tr class="gradeA"> - <td>KHTML</td> - <td>Konqureror 3.3</td> - <td>KDE 3.3</td> - <td class="center">3.3</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>KHTML</td> - <td>Konqureror 3.5</td> - <td>KDE 3.5</td> - <td class="center">3.5</td> - <td class="center">A</td> - </tr> - <tr class="gradeX"> - <td>Tasman</td> - <td>Internet Explorer 4.5</td> - <td>Mac OS 8-9</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeC"> - <td>Tasman</td> - <td>Internet Explorer 5.1</td> - <td>Mac OS 7.6-9</td> - <td class="center">1</td> - <td class="center">C</td> - </tr> - <tr class="gradeC"> - <td>Tasman</td> - <td>Internet Explorer 5.2</td> - <td>Mac OS 8-X</td> - <td class="center">1</td> - <td class="center">C</td> - </tr> - <tr class="gradeA"> - <td>Misc</td> - <td>NetFront 3.1</td> - <td>Embedded devices</td> - <td class="center">-</td> - <td class="center">C</td> - </tr> - <tr class="gradeA"> - <td>Misc</td> - <td>NetFront 3.4</td> - <td>Embedded devices</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeX"> - <td>Misc</td> - <td>Dillo 0.8</td> - <td>Embedded devices</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeX"> - <td>Misc</td> - <td>Links</td> - <td>Text only</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeX"> - <td>Misc</td> - <td>Lynx</td> - <td>Text only</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeC"> - <td>Misc</td> - <td>IE Mobile</td> - <td>Windows Mobile 6</td> - <td class="center">-</td> - <td class="center">C</td> - </tr> - <tr class="gradeC"> - <td>Misc</td> - <td>PSP browser</td> - <td>PSP</td> - <td class="center">-</td> - <td class="center">C</td> - </tr> - <tr class="gradeU"> - <td>Other browsers</td> - <td>All others</td> - <td>-</td> - <td class="center">-</td> - <td class="center">U</td> - </tr> - </tbody> - <tfoot> - <tr> - <th>Rendering engine</th> - <th>Browser</th> - <th>Platform(s)</th> - <th>Engine version</th> - <th>CSS grade</th> - </tr> - </tfoot> - </table> - - </div> - </div> - </div> - </div> - </div> - <div class="footer"> - <div class="pull-right"> - 10GB of <strong>250GB</strong> Free. - </div> - <div> - <strong>Copyright</strong> Example Company &copy; 2014-2015 - </div> - </div> - - </div> - </div> - - - - <!-- Mainly scripts --> - <script src="js/jquery-2.1.1.js"></script> - <script src="js/bootstrap.min.js"></script> - <script src="js/plugins/metisMenu/jquery.metisMenu.js"></script> - <script src="js/plugins/slimscroll/jquery.slimscroll.min.js"></script> - <script src="js/plugins/jeditable/jquery.jeditable.js"></script> - - <!-- Data Tables --> - <script src="js/plugins/dataTables/jquery.dataTables.js"></script> - <script src="js/plugins/dataTables/dataTables.bootstrap.js"></script> - <script src="js/plugins/dataTables/dataTables.responsive.js"></script> - <script src="js/plugins/dataTables/dataTables.tableTools.min.js"></script> - - <!-- Custom and plugin javascript --> - <script src="js/inspinia.js"></script> - <script src="js/plugins/pace/pace.min.js"></script> - - <!-- Page-Level Scripts --> - <script> - $(document).ready(function() { - $('.dataTables-example').dataTable({ - responsive: true, - "dom": 'T<"clear">lfrtip', - "tableTools": { - "sSwfPath": "js/plugins/dataTables/swf/copy_csv_xls_pdf.swf" - } - }); - - /* Init DataTables */ - var oTable = $('#editable').dataTable(); - - /* Apply the jEditable handlers to the table */ - oTable.$('td').editable( '../example_ajax.php', { - "callback": function( sValue, y ) { - var aPos = oTable.fnGetPosition( this ); - oTable.fnUpdate( sValue, aPos[0], aPos[1] ); - }, - "submitdata": function ( value, settings ) { - return { - "row_id": this.parentNode.getAttribute('id'), - "column": oTable.fnGetPosition( this )[2] - }; - }, - - "width": "90%", - "height": "100%" - } ); - - - }); - - function fnClickAddRow() { - $('#editable').dataTable().fnAddData( [ - "Custom row", - "New row", - "New row", - "New row", - "New row" ] ); - - } - </script> -<style> - body.DTTT_Print { - background: #fff; - - } - .DTTT_Print #page-wrapper { - margin: 0; - background:#fff; - } - - button.DTTT_button, div.DTTT_button, a.DTTT_button { - border: 1px solid #e7eaec; - background: #fff; - color: #676a6c; - box-shadow: none; - padding: 6px 8px; - } - button.DTTT_button:hover, div.DTTT_button:hover, a.DTTT_button:hover { - border: 1px solid #d2d2d2; - background: #fff; - color: #676a6c; - box-shadow: none; - padding: 6px 8px; - } - - .dataTables_filter label { - margin-right: 5px; - - } -</style> -</body> - -</html> diff --git a/assets/register.html b/assets/register.html deleted file mode 100644 index 65920a64..00000000 --- a/assets/register.html +++ /dev/null @@ -1,67 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - - <title>Siddharth Industries| Register</title> - - <link href="css/bootstrap.min.css" rel="stylesheet"> - <link href="font-awesome/css/font-awesome.css" rel="stylesheet"> - <link href="css/plugins/iCheck/custom.css" rel="stylesheet"> - <link href="css/animate.css" rel="stylesheet"> - <link href="css/style.css" rel="stylesheet"> - -</head> - -<body class="gray-bg"> - - <div class="middle-box text-center loginscreen animated fadeInDown"> - <div> - <div> - - <h1 class="logo-name">SI</h1> - - </div> - <h3>Siddharth Industries</h3> - <p>Create account</p> - <form class="m-t" role="form" action="login.html"> - <div class="form-group"> - <input type="text" class="form-control" placeholder="Name" required=""> - </div> - <div class="form-group"> - <input type="email" class="form-control" placeholder="Email" required=""> - </div> - <div class="form-group"> - <input type="password" class="form-control" placeholder="Password" required=""> - </div> - <div class="form-group"> - <div class="checkbox i-checks"><label> <input type="checkbox"><i></i> Agree the terms and policy </label></div> - </div> - <button type="submit" class="btn btn-primary block full-width m-b">Register</button> - - <!--<p class="text-muted text-center"><small>Already have an account?</small></p> - <a class="btn btn-sm btn-white btn-block" href="login.html">Login</a>--> - </form> - - </div> - </div> - - <!-- Mainly scripts --> - <script src="js/jquery-2.1.1.js"></script> - <script src="js/bootstrap.min.js"></script> - <!-- iCheck --> - <script src="js/plugins/iCheck/icheck.min.js"></script> - <script> - $(document).ready(function(){ - $('.i-checks').iCheck({ - checkboxClass: 'icheckbox_square-green', - radioClass: 'iradio_square-green', - }); - }); - </script> -</body> - -</html> diff --git a/assets/scss/badgets_labels.scss b/assets/scss/badgets_labels.scss deleted file mode 100644 index 1f39ded9..00000000 --- a/assets/scss/badgets_labels.scss +++ /dev/null @@ -1,66 +0,0 @@ -.label { - background-color: $light-gray; - color: $label-badget-color; - font-family: "Open Sans"; - font-size: 10px; - font-weight: 600; - padding: 3px 8px; - text-shadow: none; - } - -.badge { - background-color: $light-gray; - color: $label-badget-color; - font-family: "Open Sans"; - font-size: 11px; - font-weight: 600; - padding-bottom: 4px; - padding-left: 6px; - padding-right: 6px; - text-shadow: none; - } - -.label-primary, .badge-primary { - background-color: $navy; - color: white; - } - -.label-success, .badge-success { - background-color: $blue; - color: white; - } - -.label-warning, .badge-warning { - background-color: $yellow; - color: white; - } - -.label-warning-light, .badge-warning-light { - background-color: $yellow; - color: white; - } - -.label-danger, .badge-danger { - background-color: $red; - color: white; - } - -.label-info, .badge-info { - background-color: $lazur; - color: white; - } - -.label-inverse, .badge-inverse { - background-color: #262626; - color: white; - } - -.label-white, .badge-white { - background-color: white; - color: #5e5e5e; - } - -.label-white, .badge-disable { - background-color: #2a2e36; - color: #8b91a0; - } diff --git a/assets/scss/base.scss b/assets/scss/base.scss deleted file mode 100644 index fa5af039..00000000 --- a/assets/scss/base.scss +++ /dev/null @@ -1,1096 +0,0 @@ -body { - font-family: $font-stack; - background-color: #2f4050; - font-size: 13px; - color: $text-color; - overflow-x: hidden; -} - -body.boxed-layout { - background: $boxed-backgound; -} - -body.boxed-layout #wrapper { - background-color: #2f4050; - max-width: $boxed-width; - margin: 0 auto; - -webkit-box-shadow: 0px 0px 5px 0px rgba(0, 0, 0, 0.75); - -moz-box-shadow: 0px 0px 5px 0px rgba(0, 0, 0, 0.75); - box-shadow: 0px 0px 5px 0px rgba(0, 0, 0, 0.75); -} - -.top-navigation.boxed-layout #wrapper, -.boxed-layout #wrapper.top-navigation { - max-width: 1300px !important; -} - -.block { - display: block; -} - -.clear { - display: block; - overflow: hidden; -} - -a { - cursor: pointer; -} - -a:hover, a:focus { - text-decoration: none; -} - -.border-bottom { - border-bottom: 1px solid $border-color !important; -} - -.font-bold { - font-weight: 600; -} - -.font-noraml { - font-weight: 400; -} - -.text-uppercase { - text-transform: uppercase; -} - -.b-r { - border-right: 1px solid $border-color; -} - -.hr-line-dashed { - border-top: 1px dashed $border-color; - color: white; - background-color: white; - height: 1px; - margin: 20px 0; -} - -.hr-line-solid { - border-bottom: 1px solid $border-color; - background-color: rgba(0, 0, 0, 0); - border-style: solid !important; - margin-top: 15px; - margin-bottom: 15px; -} - -video { - width: 100% !important; - height: auto !important; -} - -/* GALLERY */ -.gallery > .row > div { - margin-bottom: 15px; -} - -.fancybox img { - margin-bottom: 5px; - /* Only for demo */ - width: 24%; -} - -/* Summernote text editor */ -.note-editor { - height: auto; - min-height: 300px; -} - -/* MODAL */ -.modal-content { - background-clip: padding-box; - background-color: white; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 4px; - box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); - outline: 0 none; - position: relative; -} - -.modal-dialog { - z-index: 1200; -} - -.modal-body { - padding: 20px 30px 30px 30px; -} - -.inmodal .modal-body { - background: #f8fafb; -} - -.inmodal .modal-header { - padding: 30px 15px; - text-align: center; -} - -.animated.modal.fade .modal-dialog { - -webkit-transform: none; - -ms-transform: none; - -o-transform: none; - transform: none; -} - -.inmodal .modal-title { - font-size: 26px; -} - -.inmodal .modal-icon { - font-size: 84px; - color: #e2e3e3; -} - -.modal-footer { - margin-top: 0; -} - -/* WRAPPERS */ - -#wrapper { - width: 100%; -} - -.wrapper { - padding: 0 20px; -} - -.wrapper-content { - padding: 20px 10px 40px; -} - -#page-wrapper { - padding: 0 15px; - min-height: 568px; - position: relative !important; -} - -@media (min-width: 768px) { - #page-wrapper { - position: inherit; - margin: 0 0 0 240px; - min-height: 1000px; - } -} - -.title-action { - text-align: right; - padding-top: 30px; -} - -.ibox-content h1, .ibox-content h2, .ibox-content h3, .ibox-content h4, .ibox-content h5, -.ibox-title h1, .ibox-title h2, .ibox-title h3, .ibox-title h4, .ibox-title h5 { - margin-top: 5px; -} - -ul.unstyled, ol.unstyled { - list-style: none outside none; - margin-left: 0; -} - -.big-icon { - font-size: 160px; - color: #e5e6e7; -} - -/* FOOTER */ - -.footer { - background: none repeat scroll 0 0 white; - border-top: 1px solid $border-color; - bottom: 0; - left: 0; - padding: 10px 20px; - position: absolute; - right: 0; -} - -.footer.fixed_full { - position: fixed; - bottom: 0; - left: 0; - right: 0; - z-index: 1000; - padding: 10px 20px; - background: white; - border-top: 1px solid $border-color; -} - -.footer.fixed { - position: fixed; - bottom: 0; - left: 0; - right: 0; - z-index: 1000; - padding: 10px 20px; - background: white; - border-top: 1px solid $border-color; - margin-left: $sidebar-width; -} - -body.mini-navbar .footer.fixed, body.body-small.mini-navbar .footer.fixed { - margin: 0 0 0 70px; -} - -body.fixed-sidebar.body-small.mini-navbar .footer.fixed { - margin: 0 0 0 $sidebar-width; -} - -body.body-small .footer.fixed { - margin-left: 0px; -} - -/* PANELS */ - -.page-heading { - border-top: 0; - padding: 0px 10px 20px 10px; -} - -.panel-heading h1, .panel-heading h2 { - margin-bottom: 5px; -} - -/* TABLES */ - -.table-bordered { - border: 1px solid #ebebeb; -} - -.table-bordered > thead > tr > th, .table-bordered > thead > tr > td { - background-color: #f5f5f6; - border-bottom-width: 1px; -} - -.table-bordered > thead > tr > th, .table-bordered > tbody > tr > th, .table-bordered > tfoot > tr > th, .table-bordered > thead > tr > td, .table-bordered > tbody > tr > td, .table-bordered > tfoot > tr > td { - border: 1px solid #e7e7e7; -} - -.table > thead > tr > th { - border-bottom: 1px solid #dddddd; - vertical-align: bottom; -} - -.table > thead > tr > th, .table > tbody > tr > th, .table > tfoot > tr > th, .table > thead > tr > td, .table > tbody > tr > td, .table > tfoot > tr > td { - border-top: 1px solid $border-color; - line-height: 1.42857; - padding: 8px; - vertical-align: top; -} - -/* PANELS */ - -.panel.blank-panel { - background: none; - margin: 0; -} - -.blank-panel .panel-heading { - padding-bottom: 0; -} - -.nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus { - -moz-border-bottom-colors: none; - -moz-border-left-colors: none; - -moz-border-right-colors: none; - -moz-border-top-colors: none; - background: none; - border-color: #dddddd #dddddd rgba(0, 0, 0, 0); - border-bottom: $gray; - border-image: none; - border-style: solid; - border-width: 1px; - color: #555555; - cursor: default; -} - -.nav.nav-tabs li { - background: none; - border: none; -} - -.nav-tabs > li > a { - color: #a7b1c2; - font-weight: 600; - padding: 10px 20px 10px 25px; -} - -.nav-tabs > li > a:hover, .nav-tabs > li > a:focus { - background-color: #e6e6e6; - color: $text-color; -} - -.ui-tab .tab-content { - padding: 20px 0px; -} - -/* GLOBAL */ - -.no-padding { - padding: 0 !important; -} - -.no-borders { - border: none !important; -} - -.no-margins { - margin: 0 !important; -} - -.no-top-border { - border-top: 0 !important; -} - -.ibox-content.text-box { - padding-bottom: 0px; - padding-top: 15px; -} - -.border-left-right { - border-left: 1px solid $border-color; - border-right: 1px solid $border-color; - border-top: none; - border-bottom: none; -} - -.full-width { - width: 100% !important; -} - -.link-block { - font-size: 12px; - padding: 10px; -} - -.nav.navbar-top-links .link-block a { - font-size: 12px; -} - -.link-block a { - font-size: 10px; - color: inherit; -} - -body.mini-navbar .branding { - display: none; -} - -img.circle-border { - border: 6px solid white; - border-radius: 50%; -} - -.branding { - float: left; - color: white; - font-size: 18px; - font-weight: 600; - padding: 17px 20px; - text-align: center; - background-color: $navy; -} - -.login-panel { - margin-top: 25%; -} - -.icons-box h3 { - margin-top: 10px; - margin-bottom: 10px; -} - -.icons-box .infont a i { - font-size: 25px; - display: block; - color: $text-color; -} - -.icons-box .infont a { - color: #a6a8a9; -} - -.icons-box .infont a { - padding: 10px; - margin: 1px; - display: block; -} - -.ui-draggable .ibox-title { - cursor: move; -} - -.breadcrumb { - background-color: white; - padding: 0; - margin-bottom: 0; -} - -.breadcrumb > li a { - color: inherit; -} - -.breadcrumb > .active { - color: inherit; -} - -code { - background-color: #f9f2f4; - border-radius: 4px; - color: #ca4440; - font-size: 90%; - padding: 2px 4px; - white-space: nowrap; -} - -.ibox { - clear: both; - margin-bottom: 25px; - margin-top: 0; - padding: 0; -} - -.ibox:after, .ibox:before { - display: table; -} - -.ibox-title { - -moz-border-bottom-colors: none; - -moz-border-left-colors: none; - -moz-border-right-colors: none; - -moz-border-top-colors: none; - background-color: $ibox-title-bg; - border-color: $border-color; - border-image: none; - border-style: solid solid none; - border-width: 4px 0px 0; - color: inherit; - margin-bottom: 0; - padding: 14px 15px 7px; - height: 48px; -} - -.ibox-content { - background-color: $ibox-content-bg; - color: inherit; - padding: 15px 20px 20px 20px; - border-color: $border-color; - border-image: none; - border-style: solid solid none; - border-width: 1px 0px; -} - -table.table-mail tr td { - padding: 12px; -} - -.table-mail .check-mail { - padding-left: 20px; -} - -.table-mail .mail-date { - padding-right: 20px; -} - -.star-mail, .check-mail { - width: 40px; -} - -.unread td a, .unread td { - font-weight: 600; - color: inherit; -} - -.read td a, .read td { - font-weight: normal; - color: inherit; -} - -.unread td { - background-color: #f9f8f8; -} - -.ibox-content { - clear: both; -} - -.ibox-heading { - background-color: #f3f6fb; - border-bottom: none; -} - -.ibox-heading h3 { - font-weight: 200; - font-size: 24px; -} - -.ibox-title h5 { - display: inline-block; - font-size: 14px; - margin: 0 0 7px; - padding: 0; - text-overflow: ellipsis; - float: left; -} - -.ibox-title .label { - float: left; - margin-left: 4px; -} - -.ibox-tools { - display: inline-block; - float: right; - margin-top: 0; - position: relative; - padding: 0; -} - -.ibox-tools a { - cursor: pointer; - margin-left: 5px; - color: #c4c4c4; -} - -.ibox-tools a.btn-primary { - color: white; -} - -.ibox-tools .dropdown-menu > li > a { - padding: 4px 10px; - font-size: 12px; -} - -.ibox .open > .dropdown-menu { - left: auto; - right: 0; -} - -/* BACKGROUNDS */ - -.gray-bg { - background-color: $gray; -} - -.white-bg { - background-color: white; -} - -.navy-bg { - background-color: $navy; - color: white; -} - -.blue-bg { - background-color: $blue; - color: white; -} - -.lazur-bg { - background-color: $lazur; - color: white; -} - -.yellow-bg { - background-color: $yellow; - color: white; -} - -.red-bg { - background-color: $red; - color: white; -} - -.black-bg { - background-color: #262626; -} - -.panel-primary { - border-color: $navy; -} - -.panel-primary > .panel-heading { - background-color: $navy; - border-color: $navy; -} - -.panel-success { - border-color: $blue; -} - -.panel-success > .panel-heading { - background-color: $blue; - border-color: $blue; - color: white; -} - -.panel-info { - border-color: $lazur; -} - -.panel-info > .panel-heading { - background-color: $lazur; - border-color: $lazur; - color: white; -} - -.panel-warning { - border-color: $yellow; -} - -.panel-warning > .panel-heading { - background-color: $yellow; - border-color: $yellow; - color: white; -} - -.panel-danger { - border-color: $red; -} - -.panel-danger > .panel-heading { - background-color: $red; - border-color: $red; - color: white; -} - -.progress-bar { - background-color: $navy; -} - -.progress-small, .progress-small .progress-bar { - height: 10px; -} - -.progress-small, .progress-mini { - margin-top: 5px; -} - -.progress-mini, .progress-mini .progress-bar { - height: 5px; - margin-bottom: 0px; -} - -.progress-bar-navy-light { - background-color: #3dc7ab; -} - -.progress-bar-success { - background-color: $blue; -} - -.progress-bar-info { - background-color: $lazur; -} - -.progress-bar-warning { - background-color: $yellow; -} - -.progress-bar-danger { - background-color: $red; -} - -.panel-title { - font-size: inherit; -} - -.jumbotron { - border-radius: 6px; - padding: 40px; -} - -.jumbotron h1 { - margin-top: 0; -} - -/* COLORS */ - -.text-navy { - color: $navy; -} - -.text-primary { - color: inherit; -} - -.text-success { - color: $blue; -} - -.text-info { - color: $lazur; -} - -.text-warning { - color: $yellow; -} - -.text-danger { - color: $red; -} - -.text-muted { - color: #888888; -} - -.simple_tag { - background-color: #f3f3f4; - border: 1px solid #e7eaec; - border-radius: 2px; - color: inherit; - font-size: 10px; - margin-right: 5px; - margin-top: 5px; - padding: 5px 12px; - display: inline-block; -} - -.img-shadow { - -webkit-box-shadow: 0px 0px 3px 0px rgba(145,145,145,1); - -moz-box-shadow: 0px 0px 3px 0px rgba(145,145,145,1); - box-shadow: 0px 0px 3px 0px rgba(145,145,145,1); -} - -/* For handle diferent bg color in AngularJS version */ -.dashboards\.dashboard_2 nav.navbar, -.dashboards\.dashboard_3 nav.navbar, -.mailbox\.inbox nav.navbar, -.mailbox\.email_view nav.navbar, -.mailbox\.email_compose nav.navbar, -.dashboards\.dashboard_4_1 nav.navbar -{ - background: #fff; -} - -/* For handle diferent bg color in MVC version */ -.Dashboard_2 .navbar.navbar-static-top, -.Dashboard_3 .navbar.navbar-static-top, -.Dashboard_4_1 .navbar.navbar-static-top, -.ComposeEmail .navbar.navbar-static-top, -.EmailView .navbar.navbar-static-top, -.Inbox .navbar.navbar-static-top { - background: #fff; -} - -/* MARGINS & PADDINGS */ - -.p-xxs { - padding: 5px; -} - -.p-xs { - padding: 10px; -} - -.p-sm { - padding: 15px; -} - -.p-m { - padding: 20px; -} - -.p-md { - padding: 25px; -} - -.p-lg { - padding: 30px; -} - -.p-xl { - padding: 40px; -} - -.m-xxs { - margin: 2px 4px; -} - -.m-xs { - margin: 5px; -} - -.m-sm { - margin: 10px; -} - -.m { - margin: 15px; -} - -.m-md { - margin: 20px; -} - -.m-lg { - margin: 30px; -} - -.m-xl { - margin: 50px; -} - -.m-n { - margin: 0 !important; -} - -.m-l-none { - margin-left: 0; -} - -.m-l-xs { - margin-left: 5px; -} - -.m-l-sm { - margin-left: 10px; -} - -.m-l { - margin-left: 15px; -} - -.m-l-md { - margin-left: 20px; -} - -.m-l-lg { - margin-left: 30px; -} - -.m-l-xl { - margin-left: 40px; -} - -.m-l-n-xxs { - margin-left: -1px; -} - -.m-l-n-xs { - margin-left: -5px; -} - -.m-l-n-sm { - margin-left: -10px; -} - -.m-l-n { - margin-left: -15px; -} - -.m-l-n-md { - margin-left: -20px; -} - -.m-l-n-lg { - margin-left: -30px; -} - -.m-l-n-xl { - margin-left: -40px; -} - -.m-t-none { - margin-top: 0; -} - -.m-t-xxs { - margin-top: 1px; -} - -.m-t-xs { - margin-top: 5px; -} - -.m-t-sm { - margin-top: 10px; -} - -.m-t { - margin-top: 15px; -} - -.m-t-md { - margin-top: 20px; -} - -.m-t-lg { - margin-top: 30px; -} - -.m-t-xl { - margin-top: 40px; -} - -.m-t-n-xxs { - margin-top: -1px; -} - -.m-t-n-xs { - margin-top: -5px; -} - -.m-t-n-sm { - margin-top: -10px; -} - -.m-t-n { - margin-top: -15px; -} - -.m-t-n-md { - margin-top: -20px; -} - -.m-t-n-lg { - margin-top: -30px; -} - -.m-t-n-xl { - margin-top: -40px; -} - -.m-r-none { - margin-right: 0; -} - -.m-r-xxs { - margin-right: 1px; -} - -.m-r-xs { - margin-right: 5px; -} - -.m-r-sm { - margin-right: 10px; -} - -.m-r { - margin-right: 15px; -} - -.m-r-md { - margin-right: 20px; -} - -.m-r-lg { - margin-right: 30px; -} - -.m-r-xl { - margin-right: 40px; -} - -.m-r-n-xxs { - margin-right: -1px; -} - -.m-r-n-xs { - margin-right: -5px; -} - -.m-r-n-sm { - margin-right: -10px; -} - -.m-r-n { - margin-right: -15px; -} - -.m-r-n-md { - margin-right: -20px; -} - -.m-r-n-lg { - margin-right: -30px; -} - -.m-r-n-xl { - margin-right: -40px; -} - -.m-b-none { - margin-bottom: 0; -} - -.m-b-xxs { - margin-bottom: 1px; -} - -.m-b-xs { - margin-bottom: 5px; -} - -.m-b-sm { - margin-bottom: 10px; -} - -.m-b { - margin-bottom: 15px; -} - -.m-b-md { - margin-bottom: 20px; -} - -.m-b-lg { - margin-bottom: 30px; -} - -.m-b-xl { - margin-bottom: 40px; -} - -.m-b-n-xxs { - margin-bottom: -1px; -} - -.m-b-n-xs { - margin-bottom: -5px; -} - -.m-b-n-sm { - margin-bottom: -10px; -} - -.m-b-n { - margin-bottom: -15px; -} - -.m-b-n-md { - margin-bottom: -20px; -} - -.m-b-n-lg { - margin-bottom: -30px; -} - -.m-b-n-xl { - margin-bottom: -40px; -} - -.space-15 { - margin: 15px 0; -} - -.space-20 { - margin: 20px 0; -} - -.space-25 { - margin: 25px 0; -} - -.space-30 { - margin: 30px 0; -} - -// Bootstrap issue in 3.3.0 with modal https://github.com/twbs/bootstrap/issues/9855 -// Fix -body.modal-open { - padding-right: inherit !important; -} diff --git a/assets/scss/buttons.scss b/assets/scss/buttons.scss deleted file mode 100644 index f84f95bb..00000000 --- a/assets/scss/buttons.scss +++ /dev/null @@ -1,305 +0,0 @@ -.btn { - border-radius: $btn-border-radius; -} - -.float-e-margins .btn { - margin-bottom: 5px; -} - -.btn-w-m { - min-width: 120px; -} - -.btn-primary.btn-outline { - color: $navy; -} - -.btn-success.btn-outline { - color: $blue; -} - -.btn-info.btn-outline { - color: $lazur; -} - -.btn-warning.btn-outline { - color: $yellow; -} - -.btn-danger.btn-outline { - color: $red; -} - -.btn-primary.btn-outline:hover, -.btn-success.btn-outline:hover, -.btn-info.btn-outline:hover, -.btn-warning.btn-outline:hover, -.btn-danger.btn-outline:hover { - color: white; -} - -.btn-primary { - background-color: $navy; - border-color: $navy; - color: white; -} - -.btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active, .open .dropdown-toggle.btn-primary { - background-color: darken($navy, 3%); - border-color: darken($navy, 3%); - color: white; -} - -.btn-primary:active, .btn-primary.active, .open .dropdown-toggle.btn-primary { - background-image: none; -} - -.btn-primary.disabled, .btn-primary.disabled:hover, .btn-primary.disabled:focus, .btn-primary.disabled:active, .btn-primary.disabled.active, .btn-primary[disabled], .btn-primary[disabled]:hover, .btn-primary[disabled]:focus, .btn-primary[disabled]:active, .btn-primary.active[disabled], fieldset[disabled] .btn-primary, fieldset[disabled] .btn-primary:hover, fieldset[disabled] .btn-primary:focus, fieldset[disabled] .btn-primary:active, fieldset[disabled] .btn-primary.active { - background-color: lighten($navy, 4%); - border-color: lighten($navy, 4%); -} - -.btn-success { - background-color: $blue; - border-color: $blue; - color: white; -} - -.btn-success:hover, .btn-success:focus, .btn-success:active, .btn-success.active, .open .dropdown-toggle.btn-success { - background-color: darken($blue, 3%); - border-color: darken($blue, 3%); - color: white; -} - -.btn-success:active, .btn-success.active, .open .dropdown-toggle.btn-success { - background-image: none; -} - -.btn-success.disabled, .btn-success.disabled:hover, .btn-success.disabled:focus, .btn-success.disabled:active, .btn-success.disabled.active, .btn-success[disabled], .btn-success[disabled]:hover, .btn-success[disabled]:focus, .btn-success[disabled]:active, .btn-success.active[disabled], fieldset[disabled] .btn-success, fieldset[disabled] .btn-success:hover, fieldset[disabled] .btn-success:focus, fieldset[disabled] .btn-success:active, fieldset[disabled] .btn-success.active { - background-color: lighten($blue, 4%); - border-color: lighten($blue, 4%); -} - -.btn-info { - background-color: $lazur; - border-color: $lazur; - color: white; -} - -.btn-info:hover, .btn-info:focus, .btn-info:active, .btn-info.active, .open .dropdown-toggle.btn-info { - background-color: darken($lazur, 3%); - border-color: darken($lazur, 3%); - color: white; -} - -.btn-info:active, .btn-info.active, .open .dropdown-toggle.btn-info { - background-image: none; -} - -.btn-info.disabled, .btn-info.disabled:hover, .btn-info.disabled:focus, .btn-info.disabled:active, .btn-info.disabled.active, .btn-info[disabled], .btn-info[disabled]:hover, .btn-info[disabled]:focus, .btn-info[disabled]:active, .btn-info.active[disabled], fieldset[disabled] .btn-info, fieldset[disabled] .btn-info:hover, fieldset[disabled] .btn-info:focus, fieldset[disabled] .btn-info:active, fieldset[disabled] .btn-info.active { - background-color: lighten($lazur, 4%); - border-color: lighten($lazur, 4%); -} - -.btn-default { - background-color: $dark-gray; - border-color: $dark-gray; - color: white; -} - -.btn-default:hover, .btn-default:focus, .btn-default:active, .btn-default.active, .open .dropdown-toggle.btn-default { - background-color: darken($dark-gray, 3%); - border-color: darken($dark-gray, 3%); - color: white; -} - -.btn-default:active, .btn-default.active, .open .dropdown-toggle.btn-default { - background-image: none; -} - -.btn-default.disabled, .btn-default.disabled:hover, .btn-default.disabled:focus, .btn-default.disabled:active, .btn-default.disabled.active, .btn-default[disabled], .btn-default[disabled]:hover, .btn-default[disabled]:focus, .btn-default[disabled]:active, .btn-default.active[disabled], fieldset[disabled] .btn-default, fieldset[disabled] .btn-default:hover, fieldset[disabled] .btn-default:focus, fieldset[disabled] .btn-default:active, fieldset[disabled] .btn-default.active { - background-color: lighten($dark-gray, 4%); - border-color: lighten($dark-gray, 4%); -} - -.btn-warning { - background-color: $yellow; - border-color: $yellow; - color: white; -} - -.btn-warning:hover, .btn-warning:focus, .btn-warning:active, .btn-warning.active, .open .dropdown-toggle.btn-warning { - background-color: darken($yellow, 3%); - border-color: darken($yellow, 3%); - color: white; -} - -.btn-warning:active, .btn-warning.active, .open .dropdown-toggle.btn-warning { - background-image: none; -} - -.btn-warning.disabled, .btn-warning.disabled:hover, .btn-warning.disabled:focus, .btn-warning.disabled:active, .btn-warning.disabled.active, .btn-warning[disabled], .btn-warning[disabled]:hover, .btn-warning[disabled]:focus, .btn-warning[disabled]:active, .btn-warning.active[disabled], fieldset[disabled] .btn-warning, fieldset[disabled] .btn-warning:hover, fieldset[disabled] .btn-warning:focus, fieldset[disabled] .btn-warning:active, fieldset[disabled] .btn-warning.active { - background-color: lighten($yellow, 4%); - border-color: lighten($yellow, 4%); -} - -.btn-danger { - background-color: $red; - border-color: $red; - color: white; -} - -.btn-danger:hover, .btn-danger:focus, .btn-danger:active, .btn-danger.active, .open .dropdown-toggle.btn-danger { - background-color: darken($red, 3%); - border-color: darken($red, 3%); - color: white; -} - -.btn-danger:active, .btn-danger.active, .open .dropdown-toggle.btn-danger { - background-image: none; -} - -.btn-danger.disabled, .btn-danger.disabled:hover, .btn-danger.disabled:focus, .btn-danger.disabled:active, .btn-danger.disabled.active, .btn-danger[disabled], .btn-danger[disabled]:hover, .btn-danger[disabled]:focus, .btn-danger[disabled]:active, .btn-danger.active[disabled], fieldset[disabled] .btn-danger, fieldset[disabled] .btn-danger:hover, fieldset[disabled] .btn-danger:focus, fieldset[disabled] .btn-danger:active, fieldset[disabled] .btn-danger.active { - background-color: lighten($red, 4%); - border-color: lighten($red, 4%); -} - -.btn-link { - color: inherit; -} - -.btn-link:hover, .btn-link:focus, .btn-link:active, .btn-link.active, .open .dropdown-toggle.btn-link { - color: $blue; -} - -.btn-link:active, .btn-link.active, .open .dropdown-toggle.btn-link { - background-image: none; -} - -.btn-link.disabled, .btn-link.disabled:hover, .btn-link.disabled:focus, .btn-link.disabled:active, .btn-link.disabled.active, .btn-link[disabled], .btn-link[disabled]:hover, .btn-link[disabled]:focus, .btn-link[disabled]:active, .btn-link.active[disabled], fieldset[disabled] .btn-link, fieldset[disabled] .btn-link:hover, fieldset[disabled] .btn-link:focus, fieldset[disabled] .btn-link:active, fieldset[disabled] .btn-link.active { - color: #cacaca; -} - -.btn-white { - color: inherit; - background: white; - border: 1px solid $border-color; -} - -.btn-white:hover, .btn-white:focus, .btn-white:active, .btn-white.active, .open .dropdown-toggle.btn-white { - color: inherit; - border: 1px solid #d2d2d2; -} - -.btn-white:active, .btn-white.active { - box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15) inset; -} - -.btn-white:active, .btn-white.active, .open .dropdown-toggle.btn-white { - background-image: none; -} - -.btn-white.disabled, .btn-white.disabled:hover, .btn-white.disabled:focus, .btn-white.disabled:active, .btn-white.disabled.active, .btn-white[disabled], .btn-white[disabled]:hover, .btn-white[disabled]:focus, .btn-white[disabled]:active, .btn-white.active[disabled], fieldset[disabled] .btn-white, fieldset[disabled] .btn-white:hover, fieldset[disabled] .btn-white:focus, fieldset[disabled] .btn-white:active, fieldset[disabled] .btn-white.active { - color: #cacaca; -} - -.form-control, .form-control:focus, .has-error .form-control:focus, .has-success .form-control:focus, .has-warning .form-control:focus, .navbar-collapse, .navbar-form, .navbar-form-custom .form-control:focus, .navbar-form-custom .form-control:hover, .open .btn.dropdown-toggle, .panel, .popover, .progress, .progress-bar { - box-shadow: none; -} - -.btn-outline { - color: inherit; - background-color: transparent; - transition: all 0.5s; -} - -.btn-rounded { - border-radius: 50px; -} - -.btn-large-dim { - width: 90px; - height: 90px; - font-size: 42px; -} - -button.dim { - display: inline-block; - color: white; - text-decoration: none; - text-transform: uppercase; - text-align: center; - padding-top: 6px; - margin-right: 10px; - position: relative; - cursor: pointer; - border-radius: 5px; - font-weight: 600; - margin-bottom: 20px !important; -} - -button.dim:active { - top: 3px; -} - -button.btn-primary.dim { - box-shadow: inset 0px 0px 0px darken($navy, 6%), 0px 5px 0px 0px darken($navy, 6%), 0px 10px 5px #999999; -} - -button.btn-primary.dim:active { - box-shadow: inset 0px 0px 0px darken($navy, 6%), 0px 2px 0px 0px darken($navy, 6%), 0px 5px 3px #999999; -} - -button.btn-default.dim { - box-shadow: inset 0px 0px 0px darken($dark-gray, 6%), 0px 5px 0px 0px darken($dark-gray, 6%), 0px 10px 5px #999999; -} - -button.btn-default.dim:active { - box-shadow: inset 0px 0px 0px darken($dark-gray, 6%), 0px 2px 0px 0px darken($dark-gray, 6%), 0px 5px 3px #999999; -} - -button.btn-warning.dim { - box-shadow: inset 0px 0px 0px darken($yellow, 6%), 0px 5px 0px 0px darken($yellow, 6%), 0px 10px 5px #999999; -} - -button.btn-warning.dim:active { - box-shadow: inset 0px 0px 0px darken($yellow, 6%), 0px 2px 0px 0px darken($yellow, 6%), 0px 5px 3px #999999; -} - -button.btn-info.dim { - box-shadow: inset 0px 0px 0px darken($lazur, 6%), 0px 5px 0px 0px darken($lazur, 6%), 0px 10px 5px #999999; -} - -button.btn-info.dim:active { - box-shadow: inset 0px 0px 0px darken($lazur, 6%), 0px 2px 0px 0px darken($lazur, 6%), 0px 5px 3px #999999; -} - -button.btn-success.dim { - box-shadow: inset 0px 0px 0px darken($blue, 6%), 0px 5px 0px 0px darken($blue, 6%), 0px 10px 5px #999999; -} - -button.btn-success.dim:active { - box-shadow: inset 0px 0px 0px darken($blue, 6%), 0px 2px 0px 0px darken($blue, 6%), 0px 5px 3px #999999; -} - -button.btn-danger.dim { - box-shadow: inset 0px 0px 0px darken($red, 6%), 0px 5px 0px 0px darken($red, 6%), 0px 10px 5px #999999; -} - -button.btn-danger.dim:active { - box-shadow: inset 0px 0px 0px darken($red, 6%), 0px 2px 0px 0px darken($red, 6%), 0px 5px 3px #999999; -} - -button.dim:before { - font-size: 50px; - line-height: 1em; - font-weight: normal; - color: white; - display: block; - padding-top: 10px; -} - -button.dim:active:before { - top: 7px; - font-size: 50px; -} diff --git a/assets/scss/custom.scss b/assets/scss/custom.scss deleted file mode 100644 index 96a2178a..00000000 --- a/assets/scss/custom.scss +++ /dev/null @@ -1,6 +0,0 @@ -/* Only demo */ -@media (max-width: 1000px) { - .welcome-message { - display: none; - } -} diff --git a/assets/scss/elements.scss b/assets/scss/elements.scss deleted file mode 100644 index 99842679..00000000 --- a/assets/scss/elements.scss +++ /dev/null @@ -1,1929 +0,0 @@ -/* TOOGLE SWICH */ - -.onoffswitch { - position: relative; - width: 64px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; -} - -.onoffswitch-checkbox { - display: none; -} - -.onoffswitch-label { - display: block; - overflow: hidden; - cursor: pointer; - border: 2px solid $navy; - border-radius: 2px; -} - -.onoffswitch-inner { - width: 200%; - margin-left: -100%; - -moz-transition: margin 0.3s ease-in 0s; - -webkit-transition: margin 0.3s ease-in 0s; - -o-transition: margin 0.3s ease-in 0s; - transition: margin 0.3s ease-in 0s; -} - -.onoffswitch-inner:before, .onoffswitch-inner:after { - float: left; - width: 50%; - height: 20px; - padding: 0; - line-height: 20px; - font-size: 12px; - color: white; - font-family: Trebuchet, Arial, sans-serif; - font-weight: bold; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - box-sizing: border-box; -} - -.onoffswitch-inner:before { - content: "ON"; - padding-left: 10px; - background-color: $navy; - color: white; -} - -.onoffswitch-inner:after { - content: "OFF"; - padding-right: 10px; - background-color: white; - color: #999999; - text-align: right; -} - -.onoffswitch-switch { - width: 20px; - margin: 0px; - background: white; - border: 2px solid $navy; - border-radius: 2px; - position: absolute; - top: 0; - bottom: 0; - right: 44px; - -moz-transition: all 0.3s ease-in 0s; - -webkit-transition: all 0.3s ease-in 0s; - -o-transition: all 0.3s ease-in 0s; - transition: all 0.3s ease-in 0s; -} - -.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner { - margin-left: 0; -} - -.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch { - right: 0px; -} - -/* CHOSEN PLUGIN */ - -.chosen-container-single .chosen-single { - background: white; - box-shadow: none; - -moz-box-sizing: border-box; - background-color: white; - border: 1px solid #cbd5dd; - border-radius: 2px; - cursor: text; - height: auto !important; - margin: 0; - min-height: 30px; - overflow: hidden; - padding: 4px 12px; - position: relative; - width: 100%; -} - -.chosen-container-multi .chosen-choices li.search-choice { - background: #f1f1f1; - border: 1px solid #ededed; - border-radius: 2px; - box-shadow: none; - color: #333333; - cursor: default; - line-height: 13px; - margin: 3px 0 3px 5px; - padding: 3px 20px 3px 5px; - position: relative; -} - -/* PAGINATIN */ - -.pagination > .active > a, .pagination > .active > span, .pagination > .active > a:hover, .pagination > .active > span:hover, .pagination > .active > a:focus, .pagination > .active > span:focus { - background-color: #f4f4f4; - border-color: #dddddd; - color: inherit; - cursor: default; - z-index: 2; -} - -.pagination > li > a, .pagination > li > span { - background-color: white; - border: 1px solid #dddddd; - color: inherit; - float: left; - line-height: 1.42857; - margin-left: -1px; - padding: 4px 10px; - position: relative; - text-decoration: none; -} - -/* TOOLTIPS */ - -.tooltip-inner { - background-color: #2f4050; -} - -.tooltip.top .tooltip-arrow { - border-top-color: #2f4050; -} - -.tooltip.right .tooltip-arrow { - border-right-color: #2f4050; -} - -.tooltip.bottom .tooltip-arrow { - border-bottom-color: #2f4050; -} - -.tooltip.left .tooltip-arrow { - border-left-color: #2f4050; -} - -/* EASY PIE CHART */ - -.easypiechart { - position: relative; - text-align: center; -} - -.easypiechart .h2 { - margin-left: 10px; - margin-top: 10px; - display: inline-block; -} - -.easypiechart canvas { - top: 0; - left: 0; -} - -.easypiechart .easypie-text { - line-height: 1; - position: absolute; - top: 33px; - width: 100%; - z-index: 1; -} - -.easypiechart img { - margin-top: -4px; -} - -.jqstooltip { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} - -/* FULLCALENDAR */ - -.fc-state-default { - background-color: white; - background-image: none; - background-repeat: repeat-x; - box-shadow: none; - color: #333333; - text-shadow: none; -} - -.fc-state-default { - border: 1px solid; -} - -.fc-button { - color: inherit; - border: 1px solid $border-color; - cursor: pointer; - display: inline-block; - height: 1.9em; - line-height: 1.9em; - overflow: hidden; - padding: 0 0.6em; - position: relative; - white-space: nowrap; -} - -.fc-state-active { - background-color: $navy; - border-color: $navy; - color: white; -} - -.fc-header-title h2 { - font-size: 16px; - font-weight: 600; - color: inherit; -} - -.fc-content .fc-widget-header, .fc-content .fc-widget-content { - border-color: $border-color; - font-weight: normal; -} - -.fc-border-separate tbody { - background-color: #f8f8f8; -} - -.fc-state-highlight { - background: none repeat scroll 0 0 #fcf8e3; -} - -.external-event { - padding: 5px 10px; - border-radius: 2px; - cursor: pointer; - margin-bottom: 5px; -} - -.fc-ltr .fc-event-hori.fc-event-end, .fc-rtl .fc-event-hori.fc-event-start { - border-radius: 2px; -} - -.fc-event, -.fc-agenda .fc-event-time, -.fc-event a { - padding: 4px 6px; - background-color: $navy; - border-color: $navy; -} - -.fc-event-time, .fc-event-title { - color: #717171; - padding: 0 1px; -} - -.ui-calendar .fc-event-time, .ui-calendar .fc-event-title { - color: white; -} - -/* Chat */ -.chat-activity-list .chat-element { - border-bottom: 1px solid $border-color; -} - -.chat-element:first-child { - margin-top: 0; -} - -.chat-element { - padding-bottom: 15px; -} - -.chat-element, .chat-element .media { - margin-top: 15px; -} - -.chat-element, .media-body { - overflow: hidden; -} - -.media-body { - display: block; -} - -.chat-element > .pull-left { - margin-right: 10px; -} - -.chat-element img.img-circle, .dropdown-messages-box img.img-circle { - width: 38px; - height: 38px; -} - -.chat-element .well { - border: 1px solid $border-color; - box-shadow: none; - margin-top: 10px; - margin-bottom: 5px; - padding: 10px 20px; - font-size: 11px; - line-height: 16px; -} - -.chat-element .actions { - margin-top: 10px; -} - -.chat-element .photos { - margin: 10px 0; -} - -.right.chat-element > .pull-right { - margin-left: 10px; -} - -.chat-photo { - max-height: 180px; - border-radius: 4px; - overflow: hidden; - margin-right: 10px; - margin-bottom: 10px; -} - -.chat { - margin: 0; - padding: 0; - list-style: none; -} - -.chat li { - margin-bottom: 10px; - padding-bottom: 5px; - border-bottom: 1px dotted #b3a9a9; -} - -.chat li.left .chat-body { - margin-left: 60px; -} - -.chat li.right .chat-body { - margin-right: 60px; -} - -.chat li .chat-body p { - margin: 0; - color: #777777; -} - -.panel .slidedown .glyphicon, -.chat .glyphicon { - margin-right: 5px; -} - -.chat-panel .panel-body { - height: 350px; - overflow-y: scroll; -} - -/* LIST GROUP */ - -a.list-group-item.active, a.list-group-item.active:hover, a.list-group-item.active:focus { - background-color: $navy; - border-color: $navy; - color: white; - z-index: 2; -} - -.list-group-item-heading { - margin-top: 10px; -} - -.list-group-item-text { - margin: 0 0 10px; - color: inherit; - font-size: 12px; - line-height: inherit; -} - -.no-padding .list-group-item { - border-left: none; - border-right: none; - border-bottom: none; -} - -.no-padding .list-group-item:first-child { - border-left: none; - border-right: none; - border-bottom: none; - border-top: none; -} - -.no-padding .list-group { - margin-bottom: 0; -} - -.list-group-item { - background-color: inherit; - border: 1px solid $border-color; - display: block; - margin-bottom: -1px; - padding: 10px 15px; - position: relative; -} - -/* FLOT CHART */ - -.flot-chart { - display: block; - height: 200px; -} - -.widget .flot-chart.dashboard-chart { - display: block; - height: 120px; - margin-top: 40px; -} - -.flot-chart.dashboard-chart { - display: block; - height: 180px; - margin-top: 40px; -} - -.flot-chart-content { - width: 100%; - height: 100%; -} - -.flot-chart-pie-content { - width: 200px; - height: 200px; - margin: auto; -} - -.jqstooltip { - position: absolute; - display: block; - left: 0px; - top: 0px; - visibility: hidden; - background: rgb(43, 48, 58); - background-color: rgba(43, 48, 58, 0.8); - color: white; - text-align: left; - white-space: nowrap; - z-index: 10000; - padding: 5px 5px 5px 5px; - min-height: 22px; - border-radius: 3px; -} - -.jqsfield { - color: white; - text-align: left; -} - -.h-200 { - min-height: 200px; -} - -.legendLabel { - padding-left: 5px; -} - -.stat-list li:first-child { - margin-top: 0; -} - -.stat-list { - list-style: none; - padding: 0; - margin: 0; -} - -.stat-percent { - float: right; -} - -.stat-list li { - margin-top: 15px; - position: relative; -} - -/* DATATABLES */ - -table.dataTable thead .sorting, -table.dataTable thead .sorting_asc:after, -table.dataTable thead .sorting_desc, -table.dataTable thead .sorting_asc_disabled, -table.dataTable thead .sorting_desc_disabled { - background: transparent; -} - -table.dataTable thead .sorting_asc:after { - float: right; - font-family: fontawesome; -} - -table.dataTable thead .sorting_desc:after { - content: "\f0dd"; - float: right; - font-family: fontawesome; -} - -table.dataTable thead .sorting:after { - content: "\f0dc"; - float: right; - font-family: fontawesome; - color: rgba(50, 50, 50, 0.5); -} - -.dataTables_wrapper { - padding-bottom: 30px; -} - -/* CIRCLE */ - -.img-circle { - border-radius: 50%; -} - -.btn-circle { - width: 30px; - height: 30px; - padding: 6px 0; - border-radius: 15px; - text-align: center; - font-size: 12px; - line-height: 1.42857; -} - -.btn-circle.btn-lg { - width: 50px; - height: 50px; - padding: 10px 16px; - border-radius: 25px; - font-size: 18px; - line-height: 1.33; -} - -.btn-circle.btn-xl { - width: 70px; - height: 70px; - padding: 10px 16px; - border-radius: 35px; - font-size: 24px; - line-height: 1.33; -} - -.show-grid [class^="col-"] { - padding-top: 10px; - padding-bottom: 10px; - border: 1px solid #dddddd; - background-color: #eeeeee !important; -} - -.show-grid { - margin: 15px 0; -} - -/* ANIMATION */ - -.css-animation-box h1 { - font-size: 44px; -} - -.animation-efect-links a { - padding: 4px 6px; - font-size: 12px; -} - -#animation_box { - background-color: #f9f8f8; - border-radius: 16px; - width: 80%; - margin: 0 auto; - padding-top: 80px; -} - -.animation-text-box { - position: absolute; - margin-top: 40px; - left: 50%; - margin-left: -100px; - width: 200px; -} - -.animation-text-info { - position: absolute; - margin-top: -60px; - left: 50%; - margin-left: -100px; - width: 200px; - font-size: 10px; -} - -.animation-text-box h2 { - font-size: 54px; - font-weight: 600; - margin-bottom: 5px; -} - -.animation-text-box p { - font-size: 12px; - text-transform: uppercase; -} - -/* PEACE */ - -.pace .pace-progress { - background: $navy; - position: fixed; - z-index: 2000; - top: 0px; - left: $sidebar-width; - height: 2px; - -webkit-transition: width 1s; - -moz-transition: width 1s; - -o-transition: width 1s; - transition: width 1s; -} - -.body-small .pace .pace-progress { - left: 0px; -} - -.pace-inactive { - display: none; -} - -/* WIDGETS */ - -.widget { - border-radius: 5px; - padding: 15px 20px; - margin-bottom: 10px; - margin-top: 10px; -} - -.widget.style1 h2 { - font-size: 30px; -} - -.widget h2, .widget h3 { - margin-top: 5px; - margin-bottom: 0; -} - -.widget-text-box { - padding: 20px; - border: 1px solid $border-color; - background: white; -} - -.widget-head-color-box { - border-radius: 5px 5px 0px 0px; - margin-top: 10px; -} - -.widget .flot-chart { - height: 100px; -} - -.vertical-align div { - display: inline-block; - vertical-align: middle; -} - -.vertical-align h2, .vertical-align h3 { - margin: 0; -} - -.todo-list { - list-style: none outside none; - margin: 0; - padding: 0; - font-size: 14px; -} - -.todo-list.small-list { - font-size: 12px; -} - -.todo-list.small-list > li { - background: $gray; - border-left: none; - border-right: none; - border-radius: 4px; - color: inherit; - margin-bottom: 2px; - padding: 6px 6px 6px 12px; -} - -.todo-list.small-list .btn-xs, .todo-list.small-list .btn-group-xs > .btn { - border-radius: 5px; - font-size: 10px; - line-height: 1.5; - padding: 1px 2px 1px 5px; -} - -.todo-list > li { - background: $gray; - border-left: 6px solid $border-color; - border-right: 6px solid $border-color; - border-radius: 4px; - color: inherit; - margin-bottom: 2px; - padding: 10px; -} - -.todo-list .handle { - cursor: move; - display: inline-block; - font-size: 16px; - margin: 0 5px; -} - -.todo-list > li .label { - font-size: 9px; - margin-left: 10px; -} - -.check-link { - font-size: 16px; -} - -.todo-completed { - text-decoration: line-through; -} - -.geo-statistic h1 { - font-size: 36px; - margin-bottom: 0; -} - -.glyphicon.fa { - font-family: "FontAwesome"; -} - -/* INPUTS */ -.inline { - display: inline-block !important; -} - -.input-s-sm { - width: 120px; -} - -.input-s { - width: 200px; -} - -.input-s-lg { - width: 250px; -} - -.i-checks { - padding-left: 0; -} - -.form-control, .single-line { - background-color: white; - background-image: none; - border: 1px solid #e5e6e7; - border-radius: 1px; - color: inherit; - display: block; - padding: 6px 12px; - transition: border-color 0.15s ease-in-out 0s, box-shadow 0.15s ease-in-out 0s; - width: 100%; -} - -.form-control:focus, .single-line:focus { - border-color: $navy; -} - -.has-success .form-control { - border-color: $navy; -} - -.has-warning .form-control { - border-color: $yellow; -} - -.has-error .form-control { - border-color: $red; -} - -.has-success .control-label { - color: $navy; -} - -.has-warning .control-label { - color: $yellow; -} - -.has-error .control-label { - color: $red; -} - -.input-group-addon { - background-color: white; - border: 1px solid #e5e6e7; - border-radius: 1px; - color: inherit; - font-size: 14px; - font-weight: 400; - line-height: 1; - padding: 6px 12px; - text-align: center; -} - -.spinner-buttons.input-group-btn .btn-xs { - line-height: 1.13; -} - -.spinner-buttons.input-group-btn { - width: 20%; -} - -.noUi-connect { - background: none repeat scroll 0 0 $navy; - box-shadow: none; -} - -.slider_red .noUi-connect { - background: none repeat scroll 0 0 $red; - box-shadow: none; -} - -/* UI Sortable */ - -.ui-sortable .ibox-title { - cursor: move; -} - -.ui-sortable-placeholder { - border: 1px dashed #cecece !important; - visibility: visible !important; - background: #e7eaec; -} - -.ibox.ui-sortable-placeholder { - margin: 0px 0px 23px !important; -} - -/* SWITCHES */ -.onoffswitch { - position: relative; - width: 54px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; -} - -.onoffswitch-checkbox { - display: none; -} - -.onoffswitch-label { - display: block; - overflow: hidden; - cursor: pointer; - border: 2px solid #1ab394; - border-radius: 3px; -} - -.onoffswitch-inner { - display: block; - width: 200%; - margin-left: -100%; - -moz-transition: margin 0.3s ease-in 0s; - -webkit-transition: margin 0.3s ease-in 0s; - -o-transition: margin 0.3s ease-in 0s; - transition: margin 0.3s ease-in 0s; -} - -.onoffswitch-inner:before, .onoffswitch-inner:after { - display: block; - float: left; - width: 50%; - height: 16px; - padding: 0; - line-height: 16px; - font-size: 10px; - color: white; - font-family: Trebuchet, Arial, sans-serif; - font-weight: bold; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - box-sizing: border-box; -} - -.onoffswitch-inner:before { - content: "ON"; - padding-left: 7px; - background-color: #1ab394; - color: white; -} - -.onoffswitch-inner:after { - content: "OFF"; - padding-right: 7px; - background-color: white; - color: #919191; - text-align: right; -} - -.onoffswitch-switch { - display: block; - width: 18px; - margin: 0px; - background: white; - border: 2px solid #1ab394; - border-radius: 3px; - position: absolute; - top: 0; - bottom: 0; - right: 36px; - -moz-transition: all 0.3s ease-in 0s; - -webkit-transition: all 0.3s ease-in 0s; - -o-transition: all 0.3s ease-in 0s; - transition: all 0.3s ease-in 0s; -} - -.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner { - margin-left: 0; -} - -.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch { - right: 0px; -} - -/* jqGrid */ - -.ui-jqgrid { - -moz-box-sizing: content-box; -} - -.ui-jqgrid-btable { - border-collapse: separate; -} - -.ui-jqgrid-htable { - border-collapse: separate; -} - -.ui-jqgrid-titlebar { - height: 40px; - line-height: 15px; - color: #676a6c; - background-color: #f9f9f9; - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); -} - -.ui-jqgrid .ui-jqgrid-title { - float: left; - margin: 1.1em 1em 0.2em; -} - -.ui-jqgrid .ui-jqgrid-titlebar { - position: relative; - border-left: 0px solid; - border-right: 0px solid; - border-top: 0px solid; -} - -.ui-widget-header { - background: none; - background-image: none; - background-color: #f5f5f6; - text-transform: uppercase; - border-top-left-radius: 0px; - border-top-right-radius: 0px; -} - -.ui-jqgrid tr.ui-row-ltr td { - border-right-color: inherit; - border-right-style: solid; - border-right-width: 1px; - text-align: left; - border-color: #dddddd; - background-color: inherit; -} - -.ui-search-toolbar input[type="text"] { - font-size: 12px; - height: 15px; - border: 1px solid #cccccc; - border-radius: 0px; -} - -.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { - background: #f9f9f9; - border: 1px solid #dddddd; - line-height: 15px; - font-weight: bold; - color: #676a6c; - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); -} - -.ui-widget-content { - box-sizing: content-box; -} - -.ui-icon-triangle-1-n { - background-position: 1px -16px; -} - -.ui-jqgrid tr.ui-search-toolbar th { - border-top-width: 0px !important; - border-top-color: inherit !important; - border-top-style: ridge !important; -} - -.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { - background: whitesmoke; - border-collapse: separate; -} - -.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight { - background: #f2fbff; -} - -.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { - border: 1px solid #dddddd; - background: white; - font-weight: normal; - color: #212121; -} - -.ui-jqgrid .ui-pg-input { - font-size: inherit; - width: 50px; - border: 1px solid #cccccc; - height: 15px; -} - -.ui-jqgrid .ui-pg-selbox { - display: block; - font-size: 1em; - height: 25px; - line-height: 18px; - margin: 0; - width: auto; -} - -.ui-jqgrid .ui-pager-control { - position: relative; -} - -.ui-jqgrid .ui-jqgrid-pager { - height: 32px; - position: relative; -} - -.ui-pg-table .navtable .ui-corner-all { - border-radius: 0px; -} - -.ui-jqgrid .ui-pg-button:hover { - padding: 1px; - border: 0px; -} - -.ui-jqgrid .loading { - position: absolute; - top: 45%; - left: 45%; - width: auto; - height: auto; - z-index: 101; - padding: 6px; - margin: 5px; - text-align: center; - font-weight: bold; - display: none; - border-width: 2px !important; - font-size: 11px; -} - -.ui-jqgrid .form-control { - height: 10px; - width: auto; - display: inline; - padding: 10px 12px; -} - -.ui-jqgrid-pager { - height: 32px; -} - -.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { - border-top-left-radius: 0; -} - -.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { - border-top-right-radius: 0; -} - -.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { - border-bottom-left-radius: 0; -} - -.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { - border-bottom-right-radius: 0; -} - -.ui-widget-content { - border: 1px solid #dddddd; -} - -.ui-jqgrid .ui-jqgrid-titlebar { - padding: 0; -} - -.ui-jqgrid .ui-jqgrid-titlebar { - border-bottom: 1px solid #dddddd; -} - -.ui-jqgrid tr.jqgrow td { - padding: 6px; -} - -.ui-jqdialog .ui-jqdialog-titlebar { - padding: 10px 10px; -} - -.ui-jqdialog .ui-jqdialog-title { - float: none !important; -} - -.ui-jqdialog > .ui-resizable-se { - position: absolute; -} - -/* Nestable list */ - -.dd { - position: relative; - display: block; - margin: 0; - padding: 0; - list-style: none; - font-size: 13px; - line-height: 20px; -} - -.dd-list { - display: block; - position: relative; - margin: 0; - padding: 0; - list-style: none; -} - -.dd-list .dd-list { - padding-left: 30px; -} - -.dd-collapsed .dd-list { - display: none; -} - -.dd-item, -.dd-empty, -.dd-placeholder { - display: block; - position: relative; - margin: 0; - padding: 0; - min-height: 20px; - font-size: 13px; - line-height: 20px; -} - -.dd-handle { - display: block; - margin: 5px 0; - padding: 5px 10px; - color: #333333; - text-decoration: none; - border: 1px solid #e7eaec; - background: whitesmoke; - -webkit-border-radius: 3px; - border-radius: 3px; - box-sizing: border-box; - -moz-box-sizing: border-box; -} - -.dd-handle span { - font-weight: bold; -} - -.dd-handle:hover { - background: #f0f0f0; - cursor: pointer; - font-weight: bold; -} - -.dd-item > button { - display: block; - position: relative; - cursor: pointer; - float: left; - width: 25px; - height: 20px; - margin: 5px 0; - padding: 0; - text-indent: 100%; - white-space: nowrap; - overflow: hidden; - border: 0; - background: transparent; - font-size: 12px; - line-height: 1; - text-align: center; - font-weight: bold; -} - -.dd-item > button:before { - content: "+"; - display: block; - position: absolute; - width: 100%; - text-align: center; - text-indent: 0; -} - -.dd-item > button[data-action="collapse"]:before { - content: "-"; -} - -#nestable2 .dd-item > button { - font-family: FontAwesome; - height: 34px; - width: 33px; - color: #c1c1c1; -} - -#nestable2 .dd-item > button:before { - content: "\f067"; -} - -#nestable2 .dd-item > button[data-action="collapse"]:before { - content: "\f068"; -} - -.dd-placeholder, -.dd-empty { - margin: 5px 0; - padding: 0; - min-height: 30px; - background: #f2fbff; - border: 1px dashed #b6bcbf; - box-sizing: border-box; - -moz-box-sizing: border-box; -} - -.dd-empty { - border: 1px dashed #bbbbbb; - min-height: 100px; - background-color: #e5e5e5; - background-image: -webkit-linear-gradient(45deg, white 25%, transparent 25%, transparent 75%, white 75%, white), -webkit-linear-gradient(45deg, white 25%, transparent 25%, transparent 75%, white 75%, white); - background-image: -moz-linear-gradient(45deg, white 25%, transparent 25%, transparent 75%, white 75%, white), -moz-linear-gradient(45deg, white 25%, transparent 25%, transparent 75%, white 75%, white); - background-image: linear-gradient(45deg, white 25%, transparent 25%, transparent 75%, white 75%, white), linear-gradient(45deg, white 25%, transparent 25%, transparent 75%, white 75%, white); - background-size: 60px 60px; - background-position: 0 0, 30px 30px; -} - -.dd-dragel { - position: absolute; - z-index: 9999; - pointer-events: none; -} - -.dd-dragel > .dd-item .dd-handle { - margin-top: 0; -} - -.dd-dragel .dd-handle { - -webkit-box-shadow: 2px 4px 6px 0 rgba(0, 0, 0, 0.1); - box-shadow: 2px 4px 6px 0 rgba(0, 0, 0, 0.1); -} - -/* Nestable List */ -.nestable-lists { - display: block; - clear: both; - padding: 30px 0; - width: 100%; - border: 0; - border-top: 2px solid #dddddd; - border-bottom: 2px solid #dddddd; -} - -#nestable-menu { - padding: 0; - margin: 10px 0 20px 0; -} - -#nestable-output, -#nestable2-output { - width: 100%; - font-size: 0.75em; - line-height: 1.33333em; - font-family: open sans, lucida grande, lucida sans unicode, helvetica, arial, sans-serif; - padding: 5px; - box-sizing: border-box; - -moz-box-sizing: border-box; -} - -#nestable2 .dd-handle { - color: inherit; - border: 1px dashed #e7eaec; - background: #f3f3f4; - padding: 10px; -} - -#nestable2 span.label { - margin-right: 10px; -} - -#nestable-output, -#nestable2-output { - font-size: 12px; - padding: 25px; - box-sizing: border-box; - -moz-box-sizing: border-box; -} - -/* CodeMirror */ -.CodeMirror { - border: 1px solid #eeeeee; - height: auto; -} - -.CodeMirror-scroll { - overflow-y: hidden; - overflow-x: auto; -} - -/* Google Maps */ -.google-map { - height: 300px; -} - -/* Validation */ -label.error { - color: #cc5965; - display: inline-block; - margin-left: 5px; -} - -.form-control.error { - border: 1px dotted #cc5965; -} - -/* ngGrid */ -.gridStyle { - border: 1px solid rgb(212, 212, 212); - width: 100%; - height: 400px; -} - -.gridStyle2 { - border: 1px solid rgb(212, 212, 212); - width: 500px; - height: 300px; -} - -.ngH eaderCell { - border-right: none; - border-bottom: 1px solid #e7eaec; -} - -.ngCell { - border-right: none; -} - -.ngTopPanel { - background: #f5f5f6; -} - -.ngRow.even { - background: #f9f9f9; -} - -.ngRow.selected { - background: #ebf2f1; -} - -.ngRow { - border-bottom: 1px solid #e7eaec; -} - -.ngCell { - background-color: transparent; -} - -.ngHeaderCell { - border-right: none; -} - -/* Toastr custom style */ - -#toast-container > .toast { - background-image: none !important; -} - -#toast-container > .toast:before { - position: fixed; - font-family: FontAwesome; - font-size: 24px; - line-height: 24px; - float: left; - color: #FFF; - padding-right: 0.5em; - margin: auto 0.5em auto -1.5em; -} -#toast-container > .toast-warning:before { - content: "\f003"; -} -#toast-container > .toast-error:before { - content: "\f001"; -} -#toast-container > .toast-info:before { - content: "\f005"; -} -#toast-container > .toast-success:before { - content: "\f00C"; -} - -#toast-container > div { - -moz-box-shadow: 0 0 3px #999; - -webkit-box-shadow: 0 0 3px #999; - box-shadow: 0 0 3px #999; - opacity: .9; - -ms-filter: alpha(Opacity=90); - filter: alpha(opacity=90) -} - -#toast-container > :hover { - -moz-box-shadow: 0 0 4px #999; - -webkit-box-shadow: 0 0 4px #999; - box-shadow: 0 0 4px #999; - opacity: 1; - -ms-filter: alpha(Opacity=100); - filter: alpha(opacity=100); - cursor: pointer -} - -.toast { - background-color: $navy -} - -.toast-success { - background-color: $navy -} - -.toast-error { - background-color: $red -} - -.toast-info { - background-color: $lazur -} - -.toast-warning { - background-color: $yellow -} - -.toast-top-full-width { - margin-top: 20px; -} - -.toast-bottom-full-width { - margin-bottom: 20px; -} - -/* Notifie */ -.cg-notify-message.inspinia-notify { - background: #fff; - padding: 0; - box-shadow: 0 0 1px rgba(0, 0, 0, 0.1), 0 2px 4px rgba(0, 0, 0, 0.2); - -webkit-box-shadow : 0 0 1 px rgba(0, 0, 0, 0.1), 0 2 px 4 px rgba(0, 0, 0, 0.2); - -moz-box-shadow : 0 0 1 px rgba(0, 0, 0, 0.1), 0 2 px 4 px rgba(0, 0, 0, 0.2); - border:none ; - margin-top: 30px; - color: inherit; -} - -.inspinia-notify.alert-warning { - border-left: 6px solid $yellow; -} -.inspinia-notify.alert-success { - border-left: 6px solid $blue; -} - -.inspinia-notify.alert-danger { - border-left: 6px solid $red; -} - -.inspinia-notify.alert-info { - border-left: 6px solid $navy; -} - -/* Image cropper style */ -.img-container, .img-preview { - overflow: hidden; - text-align: center; - width: 100%; -} -.img-preview-sm { - height: 130px; - width: 200px; -} - -/* Forum styles */ -.forum-post-container .media { - margin: 10px 10px 10px 10px; - padding: 20px 10px 20px 10px; - border-bottom: 1px solid #f1f1f1; -} - -.forum-avatar { - float: left; - margin-right: 20px; - text-align: center; - width: 110px; -} - -.forum-avatar .img-circle { - height: 48px; - width: 48px; -} - -.author-info { - color: #676a6c; - font-size: 11px; - margin-top: 5px; - text-align: center; -} - -.forum-post-info { - padding: 9px 12px 6px 12px; - background: #f9f9f9; - border: 1px solid #f1f1f1; -} - -.media-body > .media { - background: #f9f9f9; - border-radius: 3px; - border: 1px solid #f1f1f1; -} - -.forum-post-container .media-body .photos { - margin: 10px 0; -} - -.forum-photo { - max-width: 140px; - border-radius: 3px; - -} - -.media-body > .media .forum-avatar { - width: 70px; - margin-right: 10px; -} -.media-body > .media .forum-avatar .img-circle { - height: 38px; - width: 38px; -} - -.mid-icon { - font-size: 66px; -} - -.forum-item { - margin: 10px 0; - padding: 10px 0 20px; - border-bottom: 1px solid #f1f1f1; -} - -.views-number { - font-size: 24px; - line-height: 18px; - font-weight: 400; -} - -.forum-container, .forum-post-container { - padding: 30px !important; -} - -.forum-item small { - color: #999; -} - -.forum-item .forum-sub-title{ - color: #999; - margin-left: 50px; -} - -.forum-title { - margin: 15px 0 15px 0; -} - -.forum-info { - text-align: center; -} - -.forum-desc { - color: #999; -} - -.forum-icon { - float: left; - width: 30px; - margin-right: 20px; - text-align: center; -} - -a.forum-item-title { - color: inherit; - display: block; - font-size: 18px; - font-weight: 600; -} - -a.forum-item-title:hover { - color: inherit; -} - -.forum-icon .fa { - - font-size: 30px; - margin-top: 8px; - color: #9b9b9b; -} -.forum-item.active .fa { - color: $navy; -} - -.forum-item.active a.forum-item-title { - color: $navy; -} - -@media (max-width: 992px) { - - .forum-info { - margin: 15px 0 10px 0px; - - /* Comment this is you want to show forum info in small devices */ - display: none; - } - - .forum-desc { - float: none !important; - } - -} - -/* New Timeline style */ - -.vertical-container { - /* this class is used to give a max-width to the element it is applied to, and center it horizontally when it reaches that max-width */ - width: 90%; - max-width: 1170px; - margin: 0 auto; -} -.vertical-container::after { - /* clearfix */ - content: ''; - display: table; - clear: both; -} - -#vertical-timeline { - position: relative; - padding: 0; - margin-top: 2em; - margin-bottom: 2em; -} -#vertical-timeline::before { - content: ''; - position: absolute; - top: 0; - left: 18px; - height: 100%; - width: 4px; - background: #f1f1f1; -} - - -.vertical-timeline-content .btn { - float: right; -} - -#vertical-timeline.light-timeline:before { - background: #e7eaec; -} - - -.dark-timeline .vertical-timeline-content:before -{ - border-color: transparent #f5f5f5 transparent transparent ; -} - -.dark-timeline.center-orientation .vertical-timeline-content:before -{ - border-color: transparent transparent transparent #f5f5f5; -} - -.dark-timeline .vertical-timeline-block:nth-child(2n) .vertical-timeline-content:before, -.dark-timeline.center-orientation .vertical-timeline-block:nth-child(2n) .vertical-timeline-content:before -{ - border-color: transparent #f5f5f5 transparent transparent; -} - -.dark-timeline .vertical-timeline-content, -.dark-timeline.center-orientation .vertical-timeline-content -{ - background: #f5f5f5; -} - -@media only screen and (min-width: 1170px) { - #vertical-timeline.center-orientation { - margin-top: 3em; - margin-bottom: 3em; - } - #vertical-timeline.center-orientation:before { - left: 50%; - margin-left: -2px; - } -} - -@media only screen and (max-width: 1170px) { - .center-orientation.dark-timeline .vertical-timeline-content:before { - border-color: transparent #f5f5f5 transparent transparent; - } -} - -.vertical-timeline-block { - position: relative; - margin: 2em 0; -} -.vertical-timeline-block:after { - content: ""; - display: table; - clear: both; -} -.vertical-timeline-block:first-child { - margin-top: 0; -} -.vertical-timeline-block:last-child { - margin-bottom: 0; -} -@media only screen and (min-width: 1170px) { - .center-orientation .vertical-timeline-block { - margin: 4em 0; - } - .center-orientation .vertical-timeline-block:first-child { - margin-top: 0; - } - .center-orientation .vertical-timeline-block:last-child { - margin-bottom: 0; - } -} - -.vertical-timeline-icon { - position: absolute; - top: 0; - left: 0; - width: 40px; - height: 40px; - border-radius: 50%; - font-size: 16px; - border: 3px solid #f1f1f1; - text-align: center; -} -.vertical-timeline-icon i { - display: block; - width: 24px; - height: 24px; - position: relative; - left: 50%; - top: 50%; - margin-left: -12px; - margin-top: -9px; -} - -@media only screen and (min-width: 1170px) { - .center-orientation .vertical-timeline-icon { - width: 50px; - height: 50px; - left: 50%; - margin-left: -25px; - -webkit-transform: translateZ(0); - -webkit-backface-visibility: hidden; - font-size: 19px; - } - .center-orientation .vertical-timeline-icon i { - margin-left: -12px; - margin-top: -10px; - } - .center-orientation .cssanimations .vertical-timeline-icon.is-hidden { - visibility: hidden; - } -} - - -.vertical-timeline-content { - position: relative; - margin-left: 60px; - background: white; - border-radius: 0.25em; - padding: 1em; -} -.vertical-timeline-content:after { - content: ""; - display: table; - clear: both; -} -.vertical-timeline-content h2 { - font-weight: 400; - margin-top: 4px; -} - - -.vertical-timeline-content p { - margin: 1em 0; - line-height: 1.6; -} - - -.vertical-timeline-content .vertical-date { - float: left; - font-weight: 500; -} - -.vertical-date small { - color: $navy; - font-weight: 400; -} - -.vertical-timeline-content::before { - content: ''; - position: absolute; - top: 16px; - right: 100%; - height: 0; - width: 0; - border: 7px solid transparent; - border-right: 7px solid white; -} -@media only screen and (min-width: 768px) { - .vertical-timeline-content h2 { - font-size: 18px; - } - .vertical-timeline-content p { - font-size: 13px; - } - -} -@media only screen and (min-width: 1170px) { - .center-orientation .vertical-timeline-content { - margin-left: 0; - padding: 1.6em; - width: 45%; - } - .center-orientation .vertical-timeline-content::before { - top: 24px; - left: 100%; - border-color: transparent; - border-left-color: white; - } - - .center-orientation .vertical-timeline-content .btn { - float: left; - } - .center-orientation .vertical-timeline-content .vertical-date { - position: absolute; - width: 100%; - left: 122%; - top: 2px; - font-size: 14px; - } - .center-orientation .vertical-timeline-block:nth-child(even) .vertical-timeline-content { - float: right; - } - .center-orientation .vertical-timeline-block:nth-child(even) .vertical-timeline-content::before { - top: 24px; - left: auto; - right: 100%; - border-color: transparent; - border-right-color: white; - } - .center-orientation .vertical-timeline-block:nth-child(even) .vertical-timeline-content .btn { - float: right; - } - .center-orientation .vertical-timeline-block:nth-child(even) .vertical-timeline-content .vertical-date { - left: auto; - right: 122%; - text-align: right; - } - .center-orientation .cssanimations .vertical-timeline-content.is-hidden { - visibility: hidden; - } -} diff --git a/assets/scss/media.scss b/assets/scss/media.scss deleted file mode 100644 index 8b331ce8..00000000 --- a/assets/scss/media.scss +++ /dev/null @@ -1,91 +0,0 @@ -@media (min-width: 768px) { - #page-wrapper { - position: inherit; - margin: 0 0 0 $sidebar-width; - min-height: 1200px; - } - .navbar-static-side { - z-index: 101; - position: absolute; - width: $sidebar-width; - } - .navbar-top-links .dropdown-messages, - .navbar-top-links .dropdown-tasks, - .navbar-top-links .dropdown-alerts { - margin-left: auto; - } -} - -@media (max-width: 768px) { - #page-wrapper { - position: inherit; - margin: 0 0 0 0px; - min-height: 1000px; - } - .body-small .navbar-static-side { - display: none; - z-index: 101; - position: absolute; - width: 70px; - } - .body-small.mini-navbar .navbar-static-side { - display: block; - } - .lock-word { - display: none; - } - .navbar-form-custom { - display: none; - } - .navbar-header { - display: inline; - float: left; - } - .sidebard-panel { - z-index: 2; - position: relative; - width: auto; - min-height: 100% !important; - } - .sidebar-content .wrapper { - padding-right: 0px; - z-index: 1; - } - .fixed-sidebar.body-small .navbar-static-side { - display: none; - z-index: 101; - position: fixed; - width: $sidebar-width; - } - .fixed-sidebar.body-small.mini-navbar .navbar-static-side { - display: block; - } -} - -@media (max-width: 350px) { - .timeline-item .date { - text-align: left; - width: 110px; - position: relative; - padding-top: 30px; - } - .timeline-item .date i { - position: absolute; - top: 0; - left: 15px; - padding: 5px; - width: 30px; - text-align: center; - border: 1px solid $border-color; - background: #f8f8f8; - } - .timeline-item .content { - border-left: none; - border-top: 1px solid $border-color; - padding-top: 10px; - min-height: 100px; - } - .nav.navbar-top-links li.dropdown { - display: none; - } -} diff --git a/assets/scss/mixins.scss b/assets/scss/mixins.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/assets/scss/navigation.scss b/assets/scss/navigation.scss deleted file mode 100644 index ddd25802..00000000 --- a/assets/scss/navigation.scss +++ /dev/null @@ -1,441 +0,0 @@ -.nav > li > a { - color: $nav-text-color; - font-weight: 600; - padding: 14px 20px 14px 25px; -} - -.nav.navbar-right > li > a { - color: #999c9e; -} - -.nav > li.active > a { - color: white; -} - -.navbar-default .nav > li > a:hover, .navbar-default .nav > li > a:focus { - background-color: darken($nav-bg, 3%); - color: white; -} - -.nav .open > a, .nav .open > a:hover, .nav .open > a:focus { - background: #fff; -} - -.nav.navbar-top-links > li > a:hover, .nav.navbar-top-links > li > a:focus { - background-color: transparent; -} - -.nav > li > a i { - margin-right: 6px; -} - -.navbar { - border: 0; -} - -.navbar-default { - background-color: transparent; - border-color: $nav-bg; -} - -.navbar-top-links li { - display: inline-block; -} - -.navbar-top-links li:last-child { - margin-right: 40px; -} - -.navbar-top-links li a { - padding: 20px 10px; - min-height: 50px; -} - -.dropdown-menu { - border: medium none; - border-radius: 3px; - box-shadow: 0 0 3px rgba(86, 96, 117, 0.7); - display: none; - float: left; - font-size: 12px; - left: 0; - list-style: none outside none; - padding: 0; - position: absolute; - text-shadow: none; - top: 100%; - z-index: 1000; - border-radius: 2px; -} - -.dropdown-menu > li > a { - border-radius: 3px; - color: inherit; - line-height: 25px; - margin: 4px; - text-align: left; - font-weight: normal; -} - -.dropdown-menu > li > a.font-bold { - font-weight: 600; -} - -.navbar-top-links .dropdown-menu li { - display: block; -} - -.navbar-top-links .dropdown-menu li:last-child { - margin-right: 0; -} - -.navbar-top-links .dropdown-menu li a { - padding: 3px 20px; - min-height: 0; -} - -.navbar-top-links .dropdown-menu li a div { - white-space: normal; -} - -.navbar-top-links .dropdown-messages, -.navbar-top-links .dropdown-tasks, -.navbar-top-links .dropdown-alerts { - width: 310px; - min-width: 0; -} - -.navbar-top-links .dropdown-messages { - margin-left: 5px; -} - -.navbar-top-links .dropdown-tasks { - margin-left: -59px; -} - -.navbar-top-links .dropdown-alerts { - margin-left: -123px; -} - -.navbar-top-links .dropdown-user { - right: 0; - left: auto; -} - -.dropdown-messages, .dropdown-alerts { - padding: 10px 10px 10px 10px; -} - -.dropdown-messages li a, .dropdown-alerts li a { - font-size: 12px; -} - -.dropdown-messages li em, .dropdown-alerts li em { - font-size: 10px; -} - -.nav.navbar-top-links .dropdown-alerts a { - font-size: 12px; -} - -.nav-header { - padding: 33px 25px; - background: $nav-profil-pattern; -} - -.pace-done .nav-header { - transition-duration: 0.5s; -} - -.nav > li.active { - border-left: 4px solid darken($navy, 2%); - background: darken($nav-bg, 3%); -} - -.nav.nav-second-level > li.active { - border: none; -} - -.nav.nav-second-level.collapse[style] { - height: auto !important; -} - -.nav-header a { - color: #dfe4ed; -} - -.nav-header .text-muted { - color: #8095a8; -} - -.minimalize-styl-2 { - padding: 4px 12px; - margin: 14px 5px 5px 20px; - font-size: 14px; - float: left; -} - -.navbar-form-custom { - float: left; - height: 50px; - padding: 0; - width: 200px; - display: inline-table; -} - -.navbar-form-custom .form-group { - margin-bottom: 0; -} - -.nav.navbar-top-links a { - font-size: 14px; -} - -.navbar-form-custom .form-control { - background: none repeat scroll 0 0 rgba(0, 0, 0, 0); - border: medium none; - font-size: 14px; - height: 60px; - margin: 0; - z-index: 2000; -} - -.count-info .label { - line-height: 12px; - padding: 2px 5px; - position: absolute; - right: 6px; - top: 12px; -} - -.arrow { - float: right; -} - -.fa.arrow:before { - content: "\f104"; -} - -.active > a > .fa.arrow:before { - content: "\f107"; -} - -.nav-second-level li, -.nav-third-level li { - border-bottom: none !important; -} - -.nav-second-level li a { - padding: 7px 10px 7px 10px; - padding-left: 52px; -} - -.nav-third-level li a { - padding-left: 62px; -} - -.nav-second-level li:last-child { - margin-bottom: 10px; -} - -body:not(.fixed-sidebar).mini-navbar .nav li:hover > .nav-second-level, .mini-navbar .nav li:focus > .nav-second-level { - display: block; - border-radius: 0 2px 2px 0; - min-width: 140px; - height: auto; -} - -body.mini-navbar .navbar-default .nav > li > .nav-second-level li a { - font-size: 12px; - border-radius: 3px; -} - -.fixed-nav .slimScrollDiv #side-menu { - padding-bottom: 60px; -} - -.mini-navbar .nav-second-level li a { - padding: 10px 10px 10px 15px; -} - -.mini-navbar .nav-second-level { - position: absolute; - left: 70px; - top: 0px; - background-color: $nav-bg; - padding: 10px 10px 10px 10px; - font-size: 12px; -} - -.mini-navbar li.active .nav-second-level { - left: 65px; -} - -.navbar-default .special_link a { - background: $navy; - color: white; -} - -.navbar-default .special_link a:hover { - background: #17987e !important; - color: white; -} - -.navbar-default .special_link a span.label { - background: white; - color: $navy; -} - -.navbar-default .landing_link a { - background: lighten($navy, 3%); - color: white; -} - -.navbar-default .landing_link a:hover { - background: $navy !important; - color: white; -} - -.navbar-default .landing_link a span.label { - background: white; - color: lighten($navy, 3%); -} - -.logo-element { - text-align: center; - font-size: 18px; - font-weight: 600; - color: white; - display: none; - padding: 18px 0; -} - -.pace-done .navbar-static-side, .pace-done .nav-header, .pace-done li.active, .pace-done #page-wrapper, .pace-done .footer { - -webkit-transition: all 0.5s; - -moz-transition: all 0.5s; - -o-transition: all 0.5s; - transition: all 0.5s; -} - -.navbar-fixed-top { - background: white; - transition-duration: 0.5s; - border-bottom: 1px solid #e7eaec !important; -} - -.navbar-fixed-top, .navbar-static-top { - background: $gray; -} - -.fixed-nav #wrapper { - margin-top: 60px; -} - -.fixed-nav .minimalize-styl-2 { - margin: 14px 5px 5px 15px; -} - -.body-small .navbar-fixed-top { - margin-left: 0px; -} - -body.mini-navbar .navbar-static-side { - width: 70px; -} - -body.mini-navbar .profile-element, body.mini-navbar .nav-label, body.mini-navbar .navbar-default .nav li a span { - display: none; -} - -body:not(.fixed-sidebar).mini-navbar .nav-second-level { - display: none; -} - -body.mini-navbar .navbar-default .nav > li > a { - font-size: 16px; -} - -body.mini-navbar .logo-element { - display: block; -} - -body.mini-navbar .nav-header { - padding: 0; - background-color: $navy; -} - -body.mini-navbar #page-wrapper { - margin: 0 0 0 70px; -} - -body.fixed-sidebar.mini-navbar .footer { - margin: 0 0 0 0px; -} - -body.mini-navbar #page-wrapper { - margin: 0 0 0 70px; -} - -body.fixed-sidebar .navbar-static-side { - position: fixed; - width: $sidebar-width; - z-index: 101; - height: 100%; -} - -body.fixed-sidebar.mini-navbar .navbar-static-side { - width: 0px; -} - -body.fixed-sidebar.mini-navbar #page-wrapper { - margin: 0 0 0 0px; -} - -body.body-small.fixed-sidebar.mini-navbar #page-wrapper { - margin: 0 0 0 $sidebar-width; -} - -body.body-small.fixed-sidebar.mini-navbar .navbar-static-side { - width: $sidebar-width; -} - -.fixed-sidebar.mini-navbar .nav li:focus > .nav-second-level { - display: block; - height: auto; -} - -body.fixed-sidebar.mini-navbar .navbar-default .nav > li > .nav-second-level li a { - font-size: 12px; - border-radius: 3px; -} - -.fixed-sidebar.mini-navbar .nav-second-level li a { - padding: 10px 10px 10px 15px; -} - -.fixed-sidebar.mini-navbar .nav-second-level { - position: relative; - padding: 0; - font-size: 13px; -} - -.fixed-sidebar.mini-navbar li.active .nav-second-level { - left: 0px; -} - -body.fixed-sidebar.mini-navbar .navbar-default .nav > li > a { - font-size: 13px; -} - -body.fixed-sidebar.mini-navbar .nav-label, -body.fixed-sidebar.mini-navbar .navbar-default .nav li a span { - display: inline; -} - -.fixed-sidebar.mini-navbar .nav-second-level li a { - padding: 7px 10px 7px 52px; -} - -.fixed-sidebar.mini-navbar .nav-second-level { - left: 0px; -} diff --git a/assets/scss/pages.scss b/assets/scss/pages.scss deleted file mode 100644 index 7e134dde..00000000 --- a/assets/scss/pages.scss +++ /dev/null @@ -1,794 +0,0 @@ -/* SEARCH PAGE */ - -.search-form { - margin-top: 10px; -} - -.search-result h3 { - margin-bottom: 0; - color: #1e0fbe; -} - -.search-result .search-link { - color: #006621; -} - -.search-result p { - font-size: 12px; - margin-top: 5px; -} - -/* CONTACTS */ - -.contact-box { - background-color: white; - border: 1px solid $border-color; - padding: 20px; - margin-bottom: 20px; -} - -.contact-box a { - color: inherit; -} - -/* INVOICE */ - -.invoice-table tbody > tr > td:last-child, .invoice-table tbody > tr > td:nth-child(4), .invoice-table tbody > tr > td:nth-child(3), .invoice-table tbody > tr > td:nth-child(2) { - text-align: right; -} - -.invoice-table thead > tr > th:last-child, .invoice-table thead > tr > th:nth-child(4), .invoice-table thead > tr > th:nth-child(3), .invoice-table thead > tr > th:nth-child(2) { - text-align: right; -} - -.invoice-total > tbody > tr > td:first-child { - text-align: right; -} - -.invoice-total > tbody > tr > td { - border: 0 none; -} - -.invoice-total > tbody > tr > td:last-child { - border-bottom: 1px solid #dddddd; - text-align: right; - width: 15%; -} - -/* ERROR & LOGIN & LOCKSCREEN */ - -.middle-box { - height: 400px; - width: 400px; - position: absolute; - top: 50%; - left: 50%; - margin-top: -250px; - margin-left: -200px; - z-index: 100; -} - -.lockscreen.middle-box { - width: 200px; - margin-left: -100px; - margin-top: -190px; -} - -.loginscreen.middle-box { - width: 300px; - margin-left: -150px; - margin-top: -330px; -} - -.loginColumns { - width: 760px; - margin: 8% auto 0; -} - -.logo-name { - color: #e6e6e6; - font-size: 180px; - font-weight: 800; - letter-spacing: -10px; - margin-bottom: 0px; -} - -.middle-box h1 { - font-size: 170px; -} - -.wrapper .middle-box { - margin-top: 140px; -} - -.lock-word { - z-index: 10; - position: absolute; - top: 50%; - left: 50%; - margin-top: -180px; - margin-left: -470px; -} - -.lock-word span { - font-size: 100px; - font-weight: 600; - color: #e9e9e9; - display: inline-block; -} - -.lock-word .first-word { - margin-right: 160px; -} - -/* DASBOARD */ - -.dashboard-header { - border-top: 0; - padding: 20px 20px 20px 20px; -} - -.dashboard-header h2 { - margin-top: 10px; - font-size: 26px; -} - -.fist-item { - border-top: none !important; -} - -.statistic-box { - margin-top: 40px; -} - -.dashboard-header .list-group-item span.label { - margin-right: 10px; -} - -.list-group.clear-list .list-group-item { - border-top: 1px solid $border-color; - border-bottom: 0; - border-right: 0; - border-left: 0; - padding: 10px 0; -} - -ul.clear-list:first-child { - border-top: none !important; -} - -/* Intimeline */ - -.timeline-item .date i { - position: absolute; - top: 0; - right: 0; - padding: 5px; - width: 30px; - text-align: center; - border-top: 1px solid $border-color; - border-bottom: 1px solid $border-color; - border-left: 1px solid $border-color; - background: #f8f8f8; -} - -.timeline-item .date { - text-align: right; - width: 110px; - position: relative; - padding-top: 30px; -} - -.timeline-item .content { - border-left: 1px solid $border-color; - border-top: 1px solid $border-color; - padding-top: 10px; - min-height: 100px; -} - -.timeline-item .content:hover { - background: #f6f6f6; -} - -/* PIN BOARD */ -ul.notes li, ul.tag-list li { - list-style: none; -} - -ul.notes li h4 { - margin-top: 20px; - font-size: 16px; -} - -ul.notes li div { - text-decoration: none; - color: black; - background: #ffffcc; - display: block; - height: 140px; - width: 140px; - padding: 1em; - position: relative; -} - -ul.notes li div small { - position: absolute; - top: 5px; - right: 5px; - font-size: 10px; -} - -ul.notes li div a { - position: absolute; - right: 10px; - bottom: 10px; - color: inherit; -} - -ul.notes li { - margin: 10px 40px 50px 0px; - float: left; -} - -ul.notes li div p { - font-size: 12px; -} - -ul.notes li div { - text-decoration: none; - color: black; - background: #ffffcc; - display: block; - height: 140px; - width: 140px; - padding: 1em; - /* Firefox */ - -moz-box-shadow: 5px 5px 2px rgba(33, 33, 33, 1); - /* Safari+Chrome */ - -webkit-box-shadow: 5px 5px 2px rgba(33, 33, 33, 0.7); - /* Opera */ - box-shadow: 5px 5px 2px rgba(33, 33, 33, 0.7); -} - -ul.notes li div { - -webkit-transform: rotate(-6deg); - -o-transform: rotate(-6deg); - -moz-transform: rotate(-6deg); -} - -ul.notes li:nth-child(even) div { - -o-transform: rotate(4deg); - -webkit-transform: rotate(4deg); - -moz-transform: rotate(4deg); - position: relative; - top: 5px; -} - -ul.notes li:nth-child(3n) div { - -o-transform: rotate(-3deg); - -webkit-transform: rotate(-3deg); - -moz-transform: rotate(-3deg); - position: relative; - top: -5px; -} - -ul.notes li:nth-child(5n) div { - -o-transform: rotate(5deg); - -webkit-transform: rotate(5deg); - -moz-transform: rotate(5deg); - position: relative; - top: -10px; -} - -ul.notes li div:hover, ul.notes li div:focus { - -webkit-transform: scale(1.1); - -moz-transform: scale(1.1); - -o-transform: scale(1.1); - position: relative; - z-index: 5; -} - -ul.notes li div { - text-decoration: none; - color: black; - background: #ffffcc; - display: block; - height: 210px; - width: 210px; - padding: 1em; - -moz-box-shadow: 5px 5px 7px rgba(33, 33, 33, 1); - -webkit-box-shadow: 5px 5px 7px rgba(33, 33, 33, 0.7); - box-shadow: 5px 5px 7px rgba(33, 33, 33, 0.7); - -moz-transition: -moz-transform 0.15s linear; - -o-transition: -o-transform 0.15s linear; - -webkit-transition: -webkit-transform 0.15s linear; -} - -/* FILE MANAGER */ - -.file-box { - float: left; - width: 220px; -} - -.file-manager h5 { - text-transform: uppercase; -} - -.file-manager { - list-style: none outside none; - margin: 0; - padding: 0; -} - -.folder-list li a { - color: #666666; - display: block; - padding: 5px 0; -} - -.folder-list li { - border-bottom: 1px solid $border-color; - display: block; -} - -.folder-list li i { - margin-right: 8px; - color: #3d4d5d; -} - -.category-list li a { - color: #666666; - display: block; - padding: 5px 0; -} - -.category-list li { - display: block; -} - -.category-list li i { - margin-right: 8px; - color: #3d4d5d; -} - -.category-list li a .text-navy { - color: $navy; -} - -.category-list li a .text-primary { - color: $blue; -} - -.category-list li a .text-info { - color: $lazur; -} - -.category-list li a .text-danger { - color: #ef5352; -} - -.category-list li a .text-warning { - color: #f8ac59; -} - -.file-manager h5.tag-title { - margin-top: 20px; -} - -.tag-list li { - float: left; -} - -.tag-list li a { - font-size: 10px; - background-color: $gray; - padding: 5px 12px; - color: inherit; - border-radius: 2px; - border: 1px solid $border-color; - margin-right: 5px; - margin-top: 5px; - display: block; -} - -.file { - border: 1px solid $border-color; - padding: 0; - background-color: white; - position: relative; - margin-bottom: 20px; - margin-right: 20px; -} - -.file-manager .hr-line-dashed { - margin: 15px 0; -} - -.file .icon, .file .image { - height: 100px; - overflow: hidden; -} - -.file .icon { - padding: 15px 10px; - text-align: center; -} - -.file-control { - color: inherit; - font-size: 11px; - margin-right: 10px; -} - -.file-control.active { - text-decoration: underline; -} - -.file .icon i { - font-size: 70px; - color: #dadada; -} - -.file .file-name { - padding: 10px; - background-color: #f8f8f8; - border-top: 1px solid $border-color; -} - -.file-name small { - color: $text-color; -} - -.corner { - position: absolute; - display: inline-block; - width: 0; - height: 0; - line-height: 0; - border: 0.6em solid transparent; - border-right: 0.6em solid #f1f1f1; - border-bottom: 0.6em solid #f1f1f1; - right: 0em; - bottom: 0em; -} - -a.compose-mail { - padding: 8px 10px; -} - -.mail-search { - max-width: 300px; -} - -/* PROFILE */ - -.profile-content { - border-top: none !important; -} - -.feed-activity-list .feed-element { - border-bottom: 1px solid $border-color; -} - -.feed-element:first-child { - margin-top: 0; -} - -.feed-element { - padding-bottom: 15px; -} - -.feed-element, .feed-element .media { - margin-top: 15px; -} - -.feed-element, .media-body { - overflow: hidden; -} - -.feed-element > .pull-left { - margin-right: 10px; -} - -.feed-element img.img-circle, .dropdown-messages-box img.img-circle { - width: 38px; - height: 38px; -} - -.feed-element .well { - border: 1px solid $border-color; - box-shadow: none; - margin-top: 10px; - margin-bottom: 5px; - padding: 10px 20px; - font-size: 11px; - line-height: 16px; -} - -.feed-element .actions { - margin-top: 10px; -} - -.feed-element .photos { - margin: 10px 0; -} - -.feed-photo { - max-height: 180px; - border-radius: 4px; - overflow: hidden; - margin-right: 10px; - margin-bottom: 10px; -} - -/* MAILBOX */ - -.mail-box { - background-color: white; - border: 1px solid $border-color; - border-top: 0; - padding: 0px; - margin-bottom: 20px; -} - -.mail-box-header { - background-color: white; - border: 1px solid $border-color; - border-bottom: 0; - padding: 30px 20px 20px 20px; -} - -.mail-box-header h2 { - margin-top: 0px; -} - -.mailbox-content .tag-list li a { - background: white; -} - -.mail-body { - border-top: 1px solid $border-color; - padding: 20px; -} - -.mail-text { - border-top: 1px solid $border-color; -} - -.mail-text .note-toolbar { - padding: 10px 15px; -} - -.mail-body .form-group { - margin-bottom: 5px; -} - -.mail-text .note-editor .note-toolbar { - background-color: #f9f8f8; -} - -.mail-attachment { - border-top: 1px solid $border-color; - padding: 20px; - font-size: 12px; -} - -.mailbox-content { - background: none; - border: none; - padding: 10px; -} - -.mail-ontact { - width: 23%; -} - -/* PROJECTS */ -.project-people, .project-actions { - text-align: right; - vertical-align: middle; -} - -dd.project-people { - text-align: left; - margin-top: 5px; -} - -.project-people img { - width: 32px; - height: 32px; -} - -.project-title a { - font-size: 14px; - color: $text-color; - font-weight: 600; -} - -.project-list table tr td { - border-top: none; - border-bottom: 1px solid $border-color; - padding: 15px 10px; - vertical-align: middle; -} - -.project-manager .tag-list li a { - font-size: 10px; - background-color: white; - padding: 5px 12px; - color: inherit; - border-radius: 2px; - border: 1px solid $border-color; - margin-right: 5px; - margin-top: 5px; - display: block; -} - -.project-files li a { - font-size: 11px; - color: $text-color; - margin-left: 10px; - line-height: 22px; -} - -/* FAQ */ - -.faq-item { - padding: 20px; - margin-bottom: 2px; - background: white; -} - -.faq-question { - font-size: 18px; - font-weight: 600; - color: $navy; - display: block; -} - -.faq-question:hover { - color: darken($navy, 5%); -} - -.faq-answer { - margin-top: 10px; - background: $gray; - border: 1px solid $border-color; - border-radius: 3px; - padding: 15px; -} - -.faq-item .tag-item { - background: $gray; - padding: 2px 6px; - font-size: 10px; - text-transform: uppercase; -} - - -/* Chat view */ -.message-input { - height: 90px !important; -} - -.chat-avatar { - white: 36px; - height: 36px; - float: left; - margin-right: 10px; -} - -.chat-user-name { - padding: 10px; -} - -.chat-user { - padding: 8px 10px; - border-bottom: 1px solid #e7eaec; -} - -.chat-user a { - color: inherit; -} - -.chat-view { - z-index: 20012; -} - -.chat-users, .chat-statistic { - margin-left: -30px; -} - -@media (max-width: 992px) { - .chat-users,.chat-statistic { - margin-left: 0px; - } -} -.chat-view .ibox-content { - padding: 0; -} - -.chat-message { - padding: 10px 20px; -} - -.message-avatar { - height: 48px; - width: 48px; - border: 1px solid #e7eaec; - border-radius: 4px; - margin-top: 1px; -} - -.chat-discussion .chat-message:nth-child(2n+1) .message-avatar { - float: left; - margin-right: 10px; -} - -.chat-discussion .chat-message:nth-child(2n) .message-avatar { - float: right; - margin-left: 10px; -} - -.message { - background-color: #fff; - border: 1px solid #e7eaec; - text-align: left; - display: block; - padding: 10px 20px; - position: relative; - border-radius: 4px; -} - -.chat-discussion .chat-message:nth-child(2n+1) .message-date { - float: right; -} - -.chat-discussion .chat-message:nth-child(2n) .message-date { - float: left; -} - -.chat-discussion .chat-message:nth-child(2n+1) .message { - text-align: left; - margin-left: 55px; -} - -.chat-discussion .chat-message:nth-child(2n) .message { - text-align: right; - margin-right: 55px; -} - -.message-date { - font-size: 10px; - color: #888888; -} - -.message-content { - display: block; -} - -.chat-discussion { - background: #eee; - padding: 15px; - height: 400px; - overflow-y: auto; -} - -.chat-users { - overflow-y: auto; - height: 400px; -} - -.chat-message-form .form-group { - margin-bottom: 0; -} - -/* jsTree */ -.jstree-open > .jstree-anchor > .fa-folder:before { - content: "\f07c"; -} - -.jstree-default .jstree-icon.none { - width: 0; -} diff --git a/assets/scss/rtl.scss b/assets/scss/rtl.scss deleted file mode 100644 index 6e33e9a2..00000000 --- a/assets/scss/rtl.scss +++ /dev/null @@ -1,267 +0,0 @@ -//RTL Support -body.rtls { - - #page-wrapper { - margin: 0 220px 0 0; - } - - .nav-second-level li a { - padding: 7px 35px 7px 10px; - } - - .ibox-title h5 { - float: right; - } - - .pull-right { - float: left !important; - } - - .pull-left { - float: right !important; - } - - .ibox-tools { - float: left; - } - - .stat-percent { - float: left; - } - - .navbar-right { - float: left !important; - } - - .navbar-top-links li:last-child { - margin-left: 40px; - margin-right: 0; - } - - .minimalize-styl-2 { - float: right; - margin: 14px 20px 5px 5px; - } - - .feed-element > .pull-left { - margin-left: 10px; - margin-right: 0; - } - - .timeline-item .date { - text-align: left; - } - - .timeline-item .date i { - left: 0; - right: auto; - } - - .timeline-item .content { - border-right: 1px solid #e7eaec; - border-left: none; - } - - .theme-config { - left: 0; - right: auto; - } - - .spin-icon { - border-radius: 0 20px 20px 0; - } - - .toast-close-button { - float: left; - } - - #toast-container > .toast:before { - margin: auto -1.5em auto 0.5em; - } - - #toast-container > div { - padding: 15px 50px 15px 15px; - } - - .center-orientation .vertical-timeline-icon i { - margin-left: 0; - margin-right: -12px; - } - - .vertical-timeline-icon i { - right: 50%; - left: auto; - margin-left: auto; - margin-right: -12px; - } - - .file-box { - float: right; - } - - ul.notes li { - float: right; - } - - .chat-users, .chat-statistic { - margin-right: -30px; - margin-left: auto; - } - - .dropdown-menu > li > a { - text-align: right; - } - - .b-r { - border-left: 1px solid #e7eaec; - border-right: none; - } - - .dd-list .dd-list { - padding-right: 30px; - padding-left: 0; - } - - .dd-item > button { - float: right - } - - /* Theme config */ - .theme-config-box { - margin-left: -220px; - margin-right: 0; - } - - .theme-config-box.show { - margin-left: 0; - margin-right: 0; - } - - .spin-icon { - right: 0; - left: auto; - } - - .skin-setttings { - margin-right: 40px; - margin-left: 0; - } - - .skin-setttings { - direction: ltr; - } - - .footer.fixed { - margin-right: 220px; - margin-left: 0; - } - -} - -@media (max-width: 992px) { - body.rtls { - .chat-users,.chat-statistic { - margin-right: 0px; - } - } -} - -body.rtls.mini-navbar .footer.fixed, body.body-small.mini-navbar .footer.fixed { - margin: 0 70px 0 0; -} - -body.rtls.mini-navbar.fixed-sidebar .footer.fixed, body.body-small.mini-navbar .footer.fixed { - margin: 0 0 0 0; -} - - -body.rtls.top-navigation .navbar-toggle { - float: right; - margin-left: 15px; - margin-right: 15px; -} - -.body-small.rtls.top-navigation .navbar-header { - float: none; -} - -body.rtls.top-navigation #page-wrapper { - margin: 0; -} - -body.rtls.mini-navbar #page-wrapper { - margin: 0 70px 0 0; -} - -body.rtls.mini-navbar.fixed-sidebar #page-wrapper { - margin: 0 0 0 0; -} - -body.rtls.body-small.fixed-sidebar.mini-navbar #page-wrapper { - margin: 0 $sidebar-width 0 0; -} - -body.rtls.body-small.fixed-sidebar.mini-navbar .navbar-static-side { - width: $sidebar-width; -} - -.body-small.rtls .navbar-fixed-top { - margin-right: 0px; -} - -.body-small.rtls .navbar-header { - float: right; -} - -body.rtls .navbar-top-links li:last-child { - margin-left: 20px; -} - -body.rtls .top-navigation #page-wrapper, body.rtls.mini-navbar .top-navigation #page-wrapper, body.rtls.mini-navbar.top-navigation #page-wrapper { - margin: 0; -} - -body.rtls .top-navigation .footer.fixed, body.rtls.top-navigation .footer.fixed { - margin: 0; -} - -@media (max-width: 768px) { - - body.rtls .navbar-top-links li:last-child { - margin-left: 20px; - } - - .body-small.rtls #page-wrapper { - position: inherit; - margin: 0 0 0 0px; - min-height: 1000px; - } - - .body-small.rtls .navbar-static-side { - display: none; - z-index: 101; - position: absolute; - width: 70px; - } - - .body-small.rtls.mini-navbar .navbar-static-side { - display: block; - } - - .rtls.fixed-sidebar.body-small .navbar-static-side { - display: none; - z-index: 101; - position: fixed; - width: $sidebar-width; - } - - .rtls.fixed-sidebar.body-small.mini-navbar .navbar-static-side { - display: block; - } - -} - -// For special ltr supporting plugin -.rtls .ltr-support { - direction: ltr; -} diff --git a/assets/scss/sidebar.scss b/assets/scss/sidebar.scss deleted file mode 100644 index fc616d55..00000000 --- a/assets/scss/sidebar.scss +++ /dev/null @@ -1,43 +0,0 @@ -.sidebard-panel { - width: 220px; - background: darken($gray, 3%); - padding: 10px 20px; - position: absolute; - right: 0; -} - -.sidebard-panel .feed-element img.img-circle { - width: 32px; - height: 32px; -} - -.sidebard-panel .feed-element, .media-body, .sidebard-panel p { - font-size: 12px; -} - -.sidebard-panel .feed-element { - margin-top: 20px; - padding-bottom: 0; -} - -.sidebard-panel .list-group { - margin-bottom: 10px; -} - -.sidebard-panel .list-group .list-group-item { - padding: 5px 0; - font-size: 12px; - border: 0; -} - -.sidebar-content .wrapper { - padding-right: 230px; -} - -.sidebar-content .wrapper, .wrapper.sidebar-content { - padding-right: 230px !important; -} - -.body-small .sidebar-content .wrapper, .body-small .wrapper.sidebar-content { - padding-right: 20px !important; -} diff --git a/assets/scss/skins.scss b/assets/scss/skins.scss deleted file mode 100644 index 24d34214..00000000 --- a/assets/scss/skins.scss +++ /dev/null @@ -1,460 +0,0 @@ -/* - * SKIN 1 - INSPINIA - Responsive Admin Theme - * NAME - Blue light - */ - -// Main colors -$skin-1-color: #0e9aef; -$skin-1-nav-bg: #3e495f; -$skin-1-a-color: #9ea6b9; -$skin-1-page-bg: #f4f6fa; - -// Custom style -.skin-1 .minimalize-styl-2 { - margin: 14px 5px 5px 30px; -} - -.skin-1 .navbar-top-links li:last-child { - margin-right: 30px; -} - -.skin-1.fixed-nav .minimalize-styl-2 { - margin: 14px 5px 5px 15px; -} - -.skin-1 .spin-icon { - background: $skin-1-color !important; -} - -.skin-1 .nav-header { - background: $skin-1-color; - background: url("patterns/header-profile-skin-1.png"); -} - -.skin-1.mini-navbar .nav-second-level { - background: $skin-1-nav-bg; -} - -.skin-1 .breadcrumb { - background: transparent; -} - -.skin-1 .page-heading { - border: none; -} - -.skin-1 .nav > li.active { - background: darken($skin-1-nav-bg, 2%); -} - -.skin-1 .nav > li > a { - color: $skin-1-a-color; -} - -.skin-1 .nav > li.active > a { - color: white; -} - -.skin-1 .navbar-minimalize { - background: $skin-1-color; - border-color: $skin-1-color; -} - -body.skin-1 { - background: $skin-1-nav-bg; -} - -.skin-1 .navbar-static-top { - background: white; -} - -.skin-1 .dashboard-header { - background: transparent; - border-bottom: none !important; - border-top: none; - padding: 20px 30px 10px 30px; -} - -.fixed-nav.skin-1 .navbar-fixed-top { - background: white; -} - -.skin-1 .wrapper-content { - padding: 30px 15px; -} - -.skin-1 #page-wrapper { - background: $skin-1-page-bg; -} - -.skin-1 .ibox-title, .skin-1 .ibox-content { - border-width: 1px; -} - -.skin-1 .ibox-content:last-child { - border-style: solid solid solid solid; -} - -.skin-1 .nav > li.active { - border: none; -} - -.skin-1 .nav-header { - padding: 35px 25px 25px 25px; -} - -.skin-1 .nav-header a.dropdown-toggle { - color: white; - margin-top: 10px; -} - -.skin-1 .nav-header a.dropdown-toggle .text-muted { - color: white; - opacity: 0.8; -} - -.skin-1 .profile-element { - text-align: center; -} - -.skin-1 .img-circle { - border-radius: 5px; -} - -.skin-1 .navbar-default .nav > li > a:hover, .skin-1 .navbar-default .nav > li > a:focus { - background: darken($skin-1-nav-bg, 2%); - color: white; -} - -.skin-1 .nav.nav-tabs > li.active > a { - color: #555; -} -.skin-1 .nav.nav-tabs > li.active { - background: transparent; -} - -/* - * SKIN 2 - INSPINIA - Responsive Admin Theme - * NAME - Inspinia Ultra - */ - -// Main colors -$skin-2-color: #23c6c8; -$skin-2-nav-bg: #ededed; -$skin-2-nav-top-bg: #213a53; - -// Custom style - -body.skin-2 { - color: #565758 !important; -} - -.skin-2 .minimalize-styl-2 { - margin: 14px 5px 5px 25px; -} - -.skin-2 .navbar-top-links li:last-child { - margin-right: 25px; -} - -.skin-2 .spin-icon { - background: $skin-2-color !important; -} - -.skin-2 .nav-header { - background: $skin-2-color; - background: url("patterns/header-profile-skin-2.png"); -} - -.skin-2.mini-navbar .nav-second-level { - background: $skin-2-nav-bg; -} - -.skin-2 .breadcrumb { - background: transparent; -} - -.skin-2.fixed-nav .minimalize-styl-2 { - margin: 14px 5px 5px 15px; -} - -.skin-2 .page-heading { - border: none; - background: rgba(255, 255, 255, 0.7); -} - -.skin-2 .nav > li.active { - background: #e0e0e0; -} - -.skin-2 .logo-element { - padding: 17px 0; -} - -.skin-2 .nav > li > a, .skin-2 .welcome-message { - color: #edf6ff; -} - -.skin-2 #top-search::-moz-placeholder { - color: #edf6ff; - opacity: 0.5; -} - -.skin-2 #side-menu > li > a, .skin-2 .nav.nav-second-level > li > a { - color: #586b7d; -} - -.skin-2 .nav > li.active > a { - color: $skin-2-nav-top-bg; -} - -.skin-2.mini-navbar .nav-header { - background: $skin-2-nav-top-bg; -} - -.skin-2 .navbar-minimalize { - background: $skin-2-color; - border-color: $skin-2-color; -} - -.skin-2 .border-bottom { - border-bottom: none !important; -} - -.skin-2 #top-search { - color: white; -} - -body.skin-2 #wrapper { - background-color: $skin-2-nav-bg; -} - -.skin-2 .navbar-static-top { - background: $skin-2-nav-top-bg; -} - -.fixed-nav.skin-2 .navbar-fixed-top { - background: $skin-2-nav-top-bg; - border-bottom: none !important; -} - -.skin-2 .nav-header { - padding: 30px 25px 30px 25px; -} - -.skin-2 .dashboard-header { - background: rgba(255, 255, 255, 0.4); - border-bottom: none !important; - border-top: none; - padding: 20px 30px 20px 30px; -} - -.skin-2 .wrapper-content { - padding: 30px 15px; -} - -.skin-2 .dashoard-1 .wrapper-content { - padding: 0px 30px 25px 30px; -} - -.skin-2 .ibox-title { - background: rgba(255, 255, 255, 0.7); - border: none; - margin-bottom: 1px; -} - -.skin-2 .ibox-content { - background: rgba(255, 255, 255, 0.4); - border: none !important; -} - -.skin-2 #page-wrapper { - background: rgba(246, 246, 246, 1); - background: -webkit-radial-gradient(center, ellipse cover, rgba(246, 246, 246, 1) 20%, rgba(213, 213, 213, 1) 100%); - background: -o-radial-gradient(center, ellipse cover, rgba(246, 246, 246, 1) 20%, rgba(213, 213, 213, 1) 100%); - background: -ms-radial-gradient(center, ellipse cover, rgba(246, 246, 246, 1) 20%, rgba(213, 213, 213, 1) 100%); - background: radial-gradient(ellipse at center, rgba(246, 246, 246, 1) 20%, rgba(213, 213, 213, 1) 100%); - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#f6f6f6, endColorstr=#d5d5d5)"; -} - -.skin-2 .ibox-title, .skin-2 .ibox-content { - border-width: 1px; -} - -.skin-2 .ibox-content:last-child { - border-style: solid solid solid solid; -} - -.skin-2 .nav > li.active { - border: none; -} - -.skin-2 .nav-header a.dropdown-toggle { - color: #edf6ff; - margin-top: 10px; -} - -.skin-2 .nav-header a.dropdown-toggle .text-muted { - color: #edf6ff; - opacity: 0.8; -} - -.skin-2 .img-circle { - border-radius: 10px; -} - -.skin-2 .nav.navbar-top-links > li > a:hover, .skin-2 .nav.navbar-top-links > li > a:focus { - background: darken($skin-2-nav-top-bg, 5%); -} - -.skin-2 .navbar-default .nav > li > a:hover, .skin-2 .navbar-default .nav > li > a:focus { - background: #e0e0e0; - color: #213a53; -} - -.skin-2 .nav.nav-tabs > li.active > a { - color: #555; -} -.skin-2 .nav.nav-tabs > li.active { - background: transparent; -} - -/* - * SKIN 3 - INSPINIA - Responsive Admin Theme - * NAME - Yellow/purple - */ - -// Main colors -$skin-3-color: #ecba52; -$skin-3-nav-bg: #3e2c42; -$skin-3-a-color: #948b96; -$skin-3-page-bg: #f4f6fa; - -// Custom style -.skin-3 .minimalize-styl-2 { - margin: 14px 5px 5px 30px; -} - -.skin-3 .navbar-top-links li:last-child { - margin-right: 30px; -} - -.skin-3.fixed-nav .minimalize-styl-2 { - margin: 14px 5px 5px 15px; -} - -.skin-3 .spin-icon { - background: $skin-3-color !important; -} - -body.boxed-layout.skin-3 #wrapper { - background: $skin-3-nav-bg; -} - -.skin-3 .nav-header { - background: $skin-3-color; - background: url("patterns/header-profile-skin-3.png"); -} - -.skin-3.mini-navbar .nav-second-level { - background: $skin-3-nav-bg; -} - -.skin-3 .breadcrumb { - background: transparent; -} - -.skin-3 .page-heading { - border: none; -} - -.skin-3 .nav > li.active { - background: darken($skin-3-nav-bg, 2%); -} - -.fixed-nav.skin-3 .navbar-fixed-top { - background: white; -} - -.skin-3 .nav > li > a { - color: $skin-3-a-color; -} - -.skin-3 .nav > li.active > a { - color: white; -} - -.skin-3 .navbar-minimalize { - background: $skin-3-color; - border-color: $skin-3-color; -} - -body.skin-3 { - background: $skin-3-nav-bg; -} - -.skin-3 .navbar-static-top { - background: white; -} - -.skin-3 .dashboard-header { - background: transparent; - border-bottom: none !important; - border-top: none; - padding: 20px 30px 10px 30px; -} - -.skin-3 .wrapper-content { - padding: 30px 15px; -} - -.skin-3 #page-wrapper { - background: $skin-3-page-bg; -} - -.skin-3 .ibox-title, .skin-3 .ibox-content { - border-width: 1px; -} - -.skin-3 .ibox-content:last-child { - border-style: solid solid solid solid; -} - -.skin-3 .nav > li.active { - border: none; -} - -.skin-3 .nav-header { - padding: 35px 25px 25px 25px; -} - -.skin-3 .nav-header a.dropdown-toggle { - color: white; - margin-top: 10px; -} - -.skin-3 .nav-header a.dropdown-toggle .text-muted { - color: white; - opacity: 0.8; -} - -.skin-3 .profile-element { - text-align: center; -} - -.skin-3 .img-circle { - border-radius: 5px; -} - -.skin-3 .navbar-default .nav > li > a:hover, .skin-3 .navbar-default .nav > li > a:focus { - background: darken($skin-3-nav-bg, 2%); - color: white; -} - - -.skin-3 .nav.nav-tabs > li.active > a { - color: #555; -} -.skin-3 .nav.nav-tabs > li.active { - background: transparent; -} \ No newline at end of file diff --git a/assets/scss/style.scss b/assets/scss/style.scss deleted file mode 100644 index 6f34d501..00000000 --- a/assets/scss/style.scss +++ /dev/null @@ -1,41 +0,0 @@ -/* - * INSPINIA - Responsive Admin Theme - * Copyright 2014 Webapplayers.com - */ - -// Google Fonts -@import url("//fonts.googleapis.com/css?family=Open+Sans:300,400,600,700&amplang=en"); - -// Variables, Mixins -@import "variables"; -@import "mixins"; - -// INSPINIA Theme Elements -@import "typography"; -@import "navigation"; -@import "top_navigation"; -@import "buttons"; -@import "badgets_labels"; -@import "elements"; -@import "sidebar"; -@import "base"; -@import "pages"; - -// RTL Support -@import "rtl"; - -// For demo only - config box style -@import "theme-config"; - -// INSPINIA Skins -@import "skins"; - -// Media query style -@import "media"; - -// Custom style -// Your custom style to override base style -@import "custom"; - - - diff --git a/assets/scss/theme-config.scss b/assets/scss/theme-config.scss deleted file mode 100644 index 134f73f1..00000000 --- a/assets/scss/theme-config.scss +++ /dev/null @@ -1,111 +0,0 @@ -/* - * This is style for skin config - * Use only in demo theme - */ - -.theme-config { - position: absolute; - top: 90px; - right: 0px; - overflow: hidden; -} - -.theme-config-box { - margin-right: -220px; - position: relative; - z-index: 2000; - transition-duration: 0.8s; -} - -.theme-config-box.show { - margin-right: 0px; -} - -.spin-icon { - background: $navy; - position: absolute; - padding: 7px 10px 7px 13px; - border-radius: 20px 0px 0px 20px; - font-size: 16px; - top: 0; - left: 0px; - width: 40px; - color: white; - cursor: pointer; -} - -.skin-setttings { - width: 220px; - margin-left: 40px; - background: $gray; -} - -.skin-setttings .title { - background: #efefef; - text-align: center; - text-transform: uppercase; - font-weight: 600; - display: block; - padding: 10px 15px; - font-size: 12px; -} - -.setings-item { - padding: 10px 30px; -} - -.setings-item.skin { - text-align: center; -} - -.setings-item .switch { - float: right; -} - -.skin-name a { - text-transform: uppercase; -} - -.setings-item a { - color: white; -} - -.default-skin, .blue-skin, .ultra-skin, .yellow-skin { - text-align: center; -} - -.default-skin { - font-weight: 600; - background: #1ab394; -} - -.default-skin:hover { - background: #199d82; -} - -.blue-skin { - font-weight: 600; - background: url("patterns/header-profile-skin-1.png") repeat scroll 0 0; -} - -.blue-skin:hover { - background: #0d8ddb; -} - -.yellow-skin { - font-weight: 600; - background: url("patterns/header-profile-skin-3.png") repeat scroll 0 100%; -} - -.yellow-skin:hover { - background: #ce8735; -} - -.ultra-skin { - font-weight: 600; - background: url("patterns/header-profile-skin-2.png") repeat scroll 0 0; -} - -.ultra-skin:hover { - background: #1a2d40; -} diff --git a/assets/scss/top_navigation.scss b/assets/scss/top_navigation.scss deleted file mode 100644 index c66cbe52..00000000 --- a/assets/scss/top_navigation.scss +++ /dev/null @@ -1,127 +0,0 @@ -.top-navigation #page-wrapper { - margin-left: 0; -} - -.top-navigation .pace .pace-progress { - left: 0; -} - -.top-navigation .navbar-nav .dropdown-menu > .active > a { - background: white; - color: $navy; - font-weight: bold; -} - -.white-bg .navbar-fixed-top, .white-bg .navbar-static-top { - background: #fff; -} - -.top-navigation .navbar { - margin-bottom: 0; -} - -.top-navigation .nav > li > a { - padding: 15px 20px; - color: #676a6c; -} - -.top-navigation .nav > li a:hover, .top-navigation .nav > li a:focus { - background: #fff; - color: $navy; -} - -.top-navigation .nav > li.active { - background: #fff; - border: none; -} -.top-navigation .nav > li.active > a { - color: $navy; -} -.top-navigation .navbar-right { - margin-right: 10px; -} - -.top-navigation .navbar-nav .dropdown-menu { - box-shadow: none; - border: 1px solid #e7eaec; -} - -.top-navigation .dropdown-menu > li > a { - margin: 0; - padding: 7px 20px; -} - -.navbar .dropdown-menu { - margin-top: 0px; -} - -.top-navigation .navbar-brand { - background: $navy; - color: #fff; - padding: 15px 25px; -} - -.top-navigation .navbar-top-links li:last-child { - margin-right: 0; -} - -.top-navigation.mini-navbar #page-wrapper, .top-navigation.body-small.fixed-sidebar.mini-navbar #page-wrapper, .mini-navbar .top-navigation #page-wrapper, body-small.fixed-sidebar.mini-navbar .top-navigation #page-wrapper { - margin: 0; -} - -.top-navigation.fixed-nav #wrapper, .fixed-nav #wrapper.top-navigation { - margin-top: 50px; -} - -.top-navigation .footer.fixed { - margin-left: 0 !important; -} - -.top-navigation .wrapper.wrapper-content { - padding: 40px; -} -.top-navigation.body-small .wrapper.wrapper-content, .body-small .top-navigation .wrapper.wrapper-content { - padding: 40px 0px 40px 0px; -} - -.navbar-toggle { - background-color: $navy; - color: #fff; - padding: 6px 12px; - font-size: 14px; -} - -.top-navigation .navbar-nav .open .dropdown-menu > li > a, .top-navigation .navbar-nav .open .dropdown-menu .dropdown-header { - padding: 10px 15px 10px 20px; -} - -@media (max-width: 768px) { - .top-navigation .navbar-header { - display: block; - float: none; - } -} - -.menu-visible-lg, .menu-visible-md { - display: none !important; -} - -@media (min-width: 1200px) { - .menu-visible-lg { - display: block !important; - } -} -@media (min-width: 992px) { - .menu-visible-md { - display: block !important; - } -} - -@media (max-width: 767px) { - .menu-visible-md { - display: block !important; - } - .menu-visible-lg { - display: block !important; - } -} \ No newline at end of file diff --git a/assets/scss/typography.scss b/assets/scss/typography.scss deleted file mode 100644 index cdf9e23c..00000000 --- a/assets/scss/typography.scss +++ /dev/null @@ -1,32 +0,0 @@ -h1, h2, h3, h4, h5, h6 { - font-weight: 100; -} - -h1 { - font-size: 30px; -} - -h2 { - font-size: 24px; -} - -h3 { - font-size: 16px; -} - -h4 { - font-size: 14px; -} - -h5 { - font-size: 12px; -} - -h6 { - font-size: 10px; -} - -h3, h4, h5 { - margin-top: 5px; - font-weight: 600; -} diff --git a/assets/scss/variables.scss b/assets/scss/variables.scss deleted file mode 100644 index b61bacda..00000000 --- a/assets/scss/variables.scss +++ /dev/null @@ -1,36 +0,0 @@ -// Font -$font-stack: "open sans", "Helvetica Neue", Helvetica, Arial, sans-serif; - -// Basic Colors -$navy: #1ab394; // Primary color -$dark-gray: #c2c2c2; // Default color -$blue: #1c84c6; // Success color -$lazur: #23c6c8; // Info color -$yellow: #f8ac59; // Warrning color -$red: #ed5565; // Danger color - -// Various colors -$text-color: #676a6c; // Body text -$gray: #f3f3f4; // Background wrapper color -$light-gray: #d1dade; // Default label, badget -$label-badget-color: #5e5e5e; - -// IBOX colors ( default panel colors) -$border-color: #e7eaec; // IBox border -$ibox-title-bg: white; // IBox Background header -$ibox-content-bg: white; // IBox Background content - -//Sidebar width -$sidebar-width: 220px; - -// Boxed layout width -$boxed-width: 1200px; -$boxed-backgound: url("patterns/shattered.png"); - -//Border radius for buttons -$btn-border-radius: 3px; - -//Navigation -$nav-bg: #2f4050; -$nav-profil-pattern: url("patterns/header-profile.png") no-repeat; -$nav-text-color: #a7b1c2; diff --git a/assets/supplier.html b/assets/supplier.html deleted file mode 100644 index 792314dc..00000000 --- a/assets/supplier.html +++ /dev/null @@ -1,1244 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - - <title>Siddharth Industries|Supplier</title> - - <link href="css/bootstrap.min.css" rel="stylesheet"> - <link href="font-awesome/css/font-awesome.css" rel="stylesheet"> - - <!-- Data Tables --> - <link href="css/plugins/dataTables/dataTables.bootstrap.css" rel="stylesheet"> - <link href="css/plugins/dataTables/dataTables.responsive.css" rel="stylesheet"> - <link href="css/plugins/dataTables/dataTables.tableTools.min.css" rel="stylesheet"> - - <link href="css/animate.css" rel="stylesheet"> - <link href="css/style.css" rel="stylesheet"> - -</head> - -<body> - - <div id="wrapper"> - - <nav class="navbar-default navbar-static-side" role="navigation"> - <div class="sidebar-collapse"> - <ul class="nav" id="side-menu"> - <li class="nav-header"> - <div class="dropdown profile-element"> <span> - <img alt="image" class="img-circle" src="img/profile_small.jpg" /> - </span> - <a data-toggle="dropdown" class="dropdown-toggle" href="#"> - <span class="clear"> <span class="block m-t-xs"> <strong class="font-bold">saravana</strong> - </span> <span class="text-muted text-xs block">Admin <b class="caret"></b></span> </span> </a> - <ul class="dropdown-menu animated fadeInRight m-t-xs"> - <li><a href="profile.html">Profile</a></li> - <li><a href="contacts.html">Contacts</a></li> - <li><a href="mailbox.html">Mailbox</a></li> - <li class="divider"></li> - <li><a href="login.html">Logout</a></li> - </ul> - </div> - - </li> - <li> - <a href="index.html"><i class="fa fa-home"></i> <span class="nav-label">Home</span></a> - - </li> - <li> - <a href="purchase_order.html"><i class="fa fa-cart-plus"></i> <span class="nav-label">Purchase Order</span></a> - - </li> - <li class="active"> - <a href="supplier.html"><i class="fa fa-users"></i> <span class="nav-label">Supplier Details</span></a> - - </li> - <li> - <a href="raw_material.html"><i class="fa fa-cogs"></i> <span class="nav-label">Raw Material Details</span></a> - - </li> - <li> - <a href="register.html"><i class="fa fa-user"></i> <span class="nav-label">Create New User</span></a> - </li> - </ul> - - - </div> - - - - - </nav> - - <div id="page-wrapper" class="gray-bg"> - <div class="row border-bottom"> - <nav class="navbar navbar-static-top" role="navigation" style="margin-bottom: 0"> - <div class="navbar-header"> - <a class="navbar-minimalize minimalize-styl-2 btn btn-primary " href="#"><i class="fa fa-bars"></i> </a> - <form role="search" class="navbar-form-custom" method="post" action="search_results.html"> - <div class="form-group"> - <input type="text" placeholder="Search for something..." class="form-control" name="top-search" id="top-search"> - </div> - </form> - </div> - <ul class="nav navbar-top-links navbar-right"> - <li> - <span class="m-r-sm text-muted welcome-message">Welcome to Siddharth Industries</span> - </li> - <!-- <li class="dropdown"> - <a class="dropdown-toggle count-info" data-toggle="dropdown" href="#"> - <i class="fa fa-envelope"></i> <span class="label label-warning">16</span> - </a> - <ul class="dropdown-menu dropdown-messages"> - <li> - <div class="dropdown-messages-box"> - <a href="profile.html" class="pull-left"> - <img alt="image" class="img-circle" src="img/a7.jpg"> - </a> - <div class="media-body"> - <small class="pull-right">46h ago</small> - <strong>Mike Loreipsum</strong> started following <strong>Monica Smith</strong>. <br> - <small class="text-muted">3 days ago at 7:58 pm - 10.06.2014</small> - </div> - </div> - </li> - <li class="divider"></li> - <li> - <div class="dropdown-messages-box"> - <a href="profile.html" class="pull-left"> - <img alt="image" class="img-circle" src="img/a4.jpg"> - </a> - <div class="media-body "> - <small class="pull-right text-navy">5h ago</small> - <strong>Chris Johnatan Overtunk</strong> started following <strong>Monica Smith</strong>. <br> - <small class="text-muted">Yesterday 1:21 pm - 11.06.2014</small> - </div> - </div> - </li> - <li class="divider"></li> - <li> - <div class="dropdown-messages-box"> - <a href="profile.html" class="pull-left"> - <img alt="image" class="img-circle" src="img/profile.jpg"> - </a> - <div class="media-body "> - <small class="pull-right">23h ago</small> - <strong>Monica Smith</strong> love <strong>Kim Smith</strong>. <br> - <small class="text-muted">2 days ago at 2:30 am - 11.06.2014</small> - </div> - </div> - </li> - <li class="divider"></li> - <li> - <div class="text-center link-block"> - <a href="mailbox.html"> - <i class="fa fa-envelope"></i> <strong>Read All Messages</strong> - </a> - </div> - </li> - </ul> - </li> - <li class="dropdown"> - <a class="dropdown-toggle count-info" data-toggle="dropdown" href="#"> - <i class="fa fa-bell"></i> <span class="label label-primary">8</span> - </a> - <ul class="dropdown-menu dropdown-alerts"> - <li> - <a href="mailbox.html"> - <div> - <i class="fa fa-envelope fa-fw"></i> You have 16 messages - <span class="pull-right text-muted small">4 minutes ago</span> - </div> - </a> - </li> - <li class="divider"></li> - <li> - <a href="profile.html"> - <div> - <i class="fa fa-twitter fa-fw"></i> 3 New Followers - <span class="pull-right text-muted small">12 minutes ago</span> - </div> - </a> - </li> - <li class="divider"></li> - <li> - <a href="grid_options.html"> - <div> - <i class="fa fa-upload fa-fw"></i> Server Rebooted - <span class="pull-right text-muted small">4 minutes ago</span> - </div> - </a> - </li> - <li class="divider"></li> - <li> - <div class="text-center link-block"> - <a href="notifications.html"> - <strong>See All Alerts</strong> - <i class="fa fa-angle-right"></i> - </a> - </div> - </li> - </ul> - </li>--> - - - <li> - <a href="login.html"> - <i class="fa fa-sign-out"></i> Log out - </a> - </li> - </ul> - - </nav> - </div> - <div class="row wrapper border-bottom white-bg page-heading"> - <div class="col-lg-10"> - <h2>Purchase Order</h2> - <ol class="breadcrumb"> - <li> - <a href="index.html">Home</a> - </li> - - <li class="active"> - <strong>Purchase Order</strong> - </li> - </ol> - </div> - <div class="col-lg-2"> - - </div> - </div> - <div class="wrapper wrapper-content animated fadeInRight"> - <!-- <div class="row"> - <div class="col-lg-12"> - <div class="ibox float-e-margins"> - <div class="ibox-title"> - <h5>Basic Data Tables example with responsive plugin</h5> - <div class="ibox-tools"> - <a class="collapse-link"> - <i class="fa fa-chevron-up"></i> - </a> - <a class="dropdown-toggle" data-toggle="dropdown" href="#"> - <i class="fa fa-wrench"></i> - </a> - <ul class="dropdown-menu dropdown-user"> - <li><a href="#">Config option 1</a> - </li> - <li><a href="#">Config option 2</a> - </li> - </ul> - <a class="close-link"> - <i class="fa fa-times"></i> - </a> - </div> - </div> - <div class="ibox-content"> - - <table class="table table-striped table-bordered table-hover dataTables-example" > - <thead> - <tr> - <th>Rendering engine</th> - <th>Browser</th> - <th>Platform(s)</th> - <th>Engine version</th> - <th>CSS grade</th> - </tr> - </thead> - <tbody> - <tr class="gradeX"> - <td>Trident</td> - <td>Internet - Explorer 4.0 - </td> - <td>Win 95+</td> - <td class="center">4</td> - <td class="center">X</td> - </tr> - <tr class="gradeC"> - <td>Trident</td> - <td>Internet - Explorer 5.0 - </td> - <td>Win 95+</td> - <td class="center">5</td> - <td class="center">C</td> - </tr> - <tr class="gradeA"> - <td>Trident</td> - <td>Internet - Explorer 5.5 - </td> - <td>Win 95+</td> - <td class="center">5.5</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Trident</td> - <td>Internet - Explorer 6 - </td> - <td>Win 98+</td> - <td class="center">6</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Trident</td> - <td>Internet Explorer 7</td> - <td>Win XP SP2+</td> - <td class="center">7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Trident</td> - <td>AOL browser (AOL desktop)</td> - <td>Win XP</td> - <td class="center">6</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 1.0</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 1.5</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 2.0</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 3.0</td> - <td>Win 2k+ / OSX.3+</td> - <td class="center">1.9</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Camino 1.0</td> - <td>OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Camino 1.5</td> - <td>OSX.3+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Netscape 7.2</td> - <td>Win 95+ / Mac OS 8.6-9.2</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Netscape Browser 8</td> - <td>Win 98SE+</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Netscape Navigator 9</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.0</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.1</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.2</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.2</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.3</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.3</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.4</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.4</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.5</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.5</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.6</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.6</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.7</td> - <td>Win 98+ / OSX.1+</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.8</td> - <td>Win 98+ / OSX.1+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Seamonkey 1.1</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Epiphany 2.20</td> - <td>Gnome</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 1.2</td> - <td>OSX.3</td> - <td class="center">125.5</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 1.3</td> - <td>OSX.3</td> - <td class="center">312.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 2.0</td> - <td>OSX.4+</td> - <td class="center">419.3</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 3.0</td> - <td>OSX.4+</td> - <td class="center">522.1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>OmniWeb 5.5</td> - <td>OSX.4+</td> - <td class="center">420</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>iPod Touch / iPhone</td> - <td>iPod</td> - <td class="center">420.1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>S60</td> - <td>S60</td> - <td class="center">413</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 7.0</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 7.5</td> - <td>Win 95+ / OSX.2+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 8.0</td> - <td>Win 95+ / OSX.2+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 8.5</td> - <td>Win 95+ / OSX.2+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 9.0</td> - <td>Win 95+ / OSX.3+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 9.2</td> - <td>Win 88+ / OSX.3+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 9.5</td> - <td>Win 88+ / OSX.3+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera for Wii</td> - <td>Wii</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Nokia N800</td> - <td>N800</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Nintendo DS browser</td> - <td>Nintendo DS</td> - <td class="center">8.5</td> - <td class="center">C/A<sup>1</sup></td> - </tr> - <tr class="gradeC"> - <td>KHTML</td> - <td>Konqureror 3.1</td> - <td>KDE 3.1</td> - <td class="center">3.1</td> - <td class="center">C</td> - </tr> - <tr class="gradeA"> - <td>KHTML</td> - <td>Konqureror 3.3</td> - <td>KDE 3.3</td> - <td class="center">3.3</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>KHTML</td> - <td>Konqureror 3.5</td> - <td>KDE 3.5</td> - <td class="center">3.5</td> - <td class="center">A</td> - </tr> - <tr class="gradeX"> - <td>Tasman</td> - <td>Internet Explorer 4.5</td> - <td>Mac OS 8-9</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeC"> - <td>Tasman</td> - <td>Internet Explorer 5.1</td> - <td>Mac OS 7.6-9</td> - <td class="center">1</td> - <td class="center">C</td> - </tr> - <tr class="gradeC"> - <td>Tasman</td> - <td>Internet Explorer 5.2</td> - <td>Mac OS 8-X</td> - <td class="center">1</td> - <td class="center">C</td> - </tr> - <tr class="gradeA"> - <td>Misc</td> - <td>NetFront 3.1</td> - <td>Embedded devices</td> - <td class="center">-</td> - <td class="center">C</td> - </tr> - <tr class="gradeA"> - <td>Misc</td> - <td>NetFront 3.4</td> - <td>Embedded devices</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeX"> - <td>Misc</td> - <td>Dillo 0.8</td> - <td>Embedded devices</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeX"> - <td>Misc</td> - <td>Links</td> - <td>Text only</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeX"> - <td>Misc</td> - <td>Lynx</td> - <td>Text only</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeC"> - <td>Misc</td> - <td>IE Mobile</td> - <td>Windows Mobile 6</td> - <td class="center">-</td> - <td class="center">C</td> - </tr> - <tr class="gradeC"> - <td>Misc</td> - <td>PSP browser</td> - <td>PSP</td> - <td class="center">-</td> - <td class="center">C</td> - </tr> - <tr class="gradeU"> - <td>Other browsers</td> - <td>All others</td> - <td>-</td> - <td class="center">-</td> - <td class="center">U</td> - </tr> - </tbody> - <tfoot> - <tr> - <th>Rendering engine</th> - <th>Browser</th> - <th>Platform(s)</th> - <th>Engine version</th> - <th>CSS grade</th> - </tr> - </tfoot> - </table> - - </div> - </div> - </div> - </div>--> - <div class="row"> - <div class="col-lg-12"> - <div class="ibox float-e-margins"> - <div class="ibox-title"> - <h5>Editable Table in- combination with jEditable</h5> - <div class="ibox-tools"> - <a class="collapse-link"> - <i class="fa fa-chevron-up"></i> - </a> - <a class="dropdown-toggle" data-toggle="dropdown" href="#"> - <i class="fa fa-wrench"></i> - </a> - <ul class="dropdown-menu dropdown-user"> - <li><a href="#">Config option 1</a> - </li> - <li><a href="#">Config option 2</a> - </li> - </ul> - <a class="close-link"> - <i class="fa fa-times"></i> - </a> - </div> - </div> - <div class="ibox-content"> - <div class=""> - <a onclick="fnClickAddRow();" href="javascript:void(0);" class="btn btn-primary ">Add a new row</a> - </div> - <table class="table table-striped table-bordered table-hover " id="editable" > - <thead> - <tr> - <th>Rendering engine</th> - <th>Browser</th> - <th>Platform(s)</th> - <th>Engine version</th> - <th>CSS grade</th> - </tr> - </thead> - <tbody> - <tr class="gradeX"> - <td>Trident</td> - <td>Internet - Explorer 4.0 - </td> - <td>Win 95+</td> - <td class="center">4</td> - <td class="center">X</td> - </tr> - <tr class="gradeC"> - <td>Trident</td> - <td>Internet - Explorer 5.0 - </td> - <td>Win 95+</td> - <td class="center">5</td> - <td class="center">C</td> - </tr> - <tr class="gradeA"> - <td>Trident</td> - <td>Internet - Explorer 5.5 - </td> - <td>Win 95+</td> - <td class="center">5.5</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Trident</td> - <td>Internet - Explorer 6 - </td> - <td>Win 98+</td> - <td class="center">6</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Trident</td> - <td>Internet Explorer 7</td> - <td>Win XP SP2+</td> - <td class="center">7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Trident</td> - <td>AOL browser (AOL desktop)</td> - <td>Win XP</td> - <td class="center">6</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 1.0</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 1.5</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 2.0</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 3.0</td> - <td>Win 2k+ / OSX.3+</td> - <td class="center">1.9</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Camino 1.0</td> - <td>OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Camino 1.5</td> - <td>OSX.3+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Netscape 7.2</td> - <td>Win 95+ / Mac OS 8.6-9.2</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Netscape Browser 8</td> - <td>Win 98SE+</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Netscape Navigator 9</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.0</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.1</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.2</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.2</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.3</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.3</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.4</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.4</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.5</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.5</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.6</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.6</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.7</td> - <td>Win 98+ / OSX.1+</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.8</td> - <td>Win 98+ / OSX.1+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Seamonkey 1.1</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Epiphany 2.20</td> - <td>Gnome</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 1.2</td> - <td>OSX.3</td> - <td class="center">125.5</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 1.3</td> - <td>OSX.3</td> - <td class="center">312.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 2.0</td> - <td>OSX.4+</td> - <td class="center">419.3</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 3.0</td> - <td>OSX.4+</td> - <td class="center">522.1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>OmniWeb 5.5</td> - <td>OSX.4+</td> - <td class="center">420</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>iPod Touch / iPhone</td> - <td>iPod</td> - <td class="center">420.1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>S60</td> - <td>S60</td> - <td class="center">413</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 7.0</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 7.5</td> - <td>Win 95+ / OSX.2+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 8.0</td> - <td>Win 95+ / OSX.2+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 8.5</td> - <td>Win 95+ / OSX.2+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 9.0</td> - <td>Win 95+ / OSX.3+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 9.2</td> - <td>Win 88+ / OSX.3+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 9.5</td> - <td>Win 88+ / OSX.3+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera for Wii</td> - <td>Wii</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Nokia N800</td> - <td>N800</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Nintendo DS browser</td> - <td>Nintendo DS</td> - <td class="center">8.5</td> - <td class="center">C/A<sup>1</sup></td> - </tr> - <tr class="gradeC"> - <td>KHTML</td> - <td>Konqureror 3.1</td> - <td>KDE 3.1</td> - <td class="center">3.1</td> - <td class="center">C</td> - </tr> - <tr class="gradeA"> - <td>KHTML</td> - <td>Konqureror 3.3</td> - <td>KDE 3.3</td> - <td class="center">3.3</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>KHTML</td> - <td>Konqureror 3.5</td> - <td>KDE 3.5</td> - <td class="center">3.5</td> - <td class="center">A</td> - </tr> - <tr class="gradeX"> - <td>Tasman</td> - <td>Internet Explorer 4.5</td> - <td>Mac OS 8-9</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeC"> - <td>Tasman</td> - <td>Internet Explorer 5.1</td> - <td>Mac OS 7.6-9</td> - <td class="center">1</td> - <td class="center">C</td> - </tr> - <tr class="gradeC"> - <td>Tasman</td> - <td>Internet Explorer 5.2</td> - <td>Mac OS 8-X</td> - <td class="center">1</td> - <td class="center">C</td> - </tr> - <tr class="gradeA"> - <td>Misc</td> - <td>NetFront 3.1</td> - <td>Embedded devices</td> - <td class="center">-</td> - <td class="center">C</td> - </tr> - <tr class="gradeA"> - <td>Misc</td> - <td>NetFront 3.4</td> - <td>Embedded devices</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeX"> - <td>Misc</td> - <td>Dillo 0.8</td> - <td>Embedded devices</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeX"> - <td>Misc</td> - <td>Links</td> - <td>Text only</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeX"> - <td>Misc</td> - <td>Lynx</td> - <td>Text only</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeC"> - <td>Misc</td> - <td>IE Mobile</td> - <td>Windows Mobile 6</td> - <td class="center">-</td> - <td class="center">C</td> - </tr> - <tr class="gradeC"> - <td>Misc</td> - <td>PSP browser</td> - <td>PSP</td> - <td class="center">-</td> - <td class="center">C</td> - </tr> - <tr class="gradeU"> - <td>Other browsers</td> - <td>All others</td> - <td>-</td> - <td class="center">-</td> - <td class="center">U</td> - </tr> - </tbody> - <tfoot> - <tr> - <th>Rendering engine</th> - <th>Browser</th> - <th>Platform(s)</th> - <th>Engine version</th> - <th>CSS grade</th> - </tr> - </tfoot> - </table> - - </div> - </div> - </div> - </div> - </div> - <div class="footer"> - <div class="pull-right"> - 10GB of <strong>250GB</strong> Free. - </div> - <div> - <strong>Copyright</strong> Example Company &copy; 2014-2015 - </div> - </div> - - </div> - </div> - - - - <!-- Mainly scripts --> - <script src="js/jquery-2.1.1.js"></script> - <script src="js/bootstrap.min.js"></script> - <script src="js/plugins/metisMenu/jquery.metisMenu.js"></script> - <script src="js/plugins/slimscroll/jquery.slimscroll.min.js"></script> - <script src="js/plugins/jeditable/jquery.jeditable.js"></script> - - <!-- Data Tables --> - <script src="js/plugins/dataTables/jquery.dataTables.js"></script> - <script src="js/plugins/dataTables/dataTables.bootstrap.js"></script> - <script src="js/plugins/dataTables/dataTables.responsive.js"></script> - <script src="js/plugins/dataTables/dataTables.tableTools.min.js"></script> - - <!-- Custom and plugin javascript --> - <script src="js/inspinia.js"></script> - <script src="js/plugins/pace/pace.min.js"></script> - - <!-- Page-Level Scripts --> - <script> - $(document).ready(function() { - $('.dataTables-example').dataTable({ - responsive: true, - "dom": 'T<"clear">lfrtip', - "tableTools": { - "sSwfPath": "js/plugins/dataTables/swf/copy_csv_xls_pdf.swf" - } - }); - - /* Init DataTables */ - var oTable = $('#editable').dataTable(); - - /* Apply the jEditable handlers to the table */ - oTable.$('td').editable( '../example_ajax.php', { - "callback": function( sValue, y ) { - var aPos = oTable.fnGetPosition( this ); - oTable.fnUpdate( sValue, aPos[0], aPos[1] ); - }, - "submitdata": function ( value, settings ) { - return { - "row_id": this.parentNode.getAttribute('id'), - "column": oTable.fnGetPosition( this )[2] - }; - }, - - "width": "90%", - "height": "100%" - } ); - - - }); - - function fnClickAddRow() { - $('#editable').dataTable().fnAddData( [ - "Custom row", - "New row", - "New row", - "New row", - "New row" ] ); - - } - </script> -<style> - body.DTTT_Print { - background: #fff; - - } - .DTTT_Print #page-wrapper { - margin: 0; - background:#fff; - } - - button.DTTT_button, div.DTTT_button, a.DTTT_button { - border: 1px solid #e7eaec; - background: #fff; - color: #676a6c; - box-shadow: none; - padding: 6px 8px; - } - button.DTTT_button:hover, div.DTTT_button:hover, a.DTTT_button:hover { - border: 1px solid #d2d2d2; - background: #fff; - color: #676a6c; - box-shadow: none; - padding: 6px 8px; - } - - .dataTables_filter label { - margin-right: 5px; - - } -</style> -</body> - -</html>